From 2d9bf780b86cb15dbb2ca247f15ba64ae06d933f Mon Sep 17 00:00:00 2001 From: Bryan Petty Date: Sat, 30 Jan 1999 08:18:32 +0000 Subject: [PATCH] This commit was manufactured by cvs2svn to create tag 'wxPython-0_5_3'. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/tags/wxPython-0_5_3@1524 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- .cvsignore | 11 - Makefile | 175 - config.guess | 599 - config.sub | 927 -- configure | 7425 ---------- configure.in | 1485 -- distrib/gtk/copy_src | 662 - distrib/msw/cw.rsp | 109 - distrib/msw/docsrc.rsp | 97 - distrib/msw/generic.rsp | 658 - distrib/msw/glcanvas.rsp | 38 - distrib/msw/gtk.rsp | 90 - distrib/msw/motif.rsp | 103 - distrib/msw/msw.rsp | 163 - distrib/msw/ogl.rsp | 43 - distrib/msw/stubs.rsp | 15 - distrib/msw/tardist.bat | 117 - distrib/msw/tex2rtf.rsp | 26 - distrib/msw/vc.rsp | 153 - distrib/msw/wx_hlp.rsp | 2 - distrib/msw/wx_html.rsp | 37 - distrib/msw/wx_pdf.rsp | 1 - distrib/msw/wx_word.rsp | 2 - distrib/msw/zipdist.bat | 68 - docs/bugs.txt | 32 - docs/changes.txt | 608 - docs/gpl.txt | 339 - docs/gtk/COPYING.LIB | 481 - docs/gtk/install.txt | 441 - docs/gtk/licence.txt | 56 - docs/gtk/readme.txt | 62 - docs/gtk/todo.txt | 23 - docs/html/faq.htm | 43 - docs/html/faqgen.htm | 232 - docs/html/faqgtk.htm | 47 - docs/html/faqmac.htm | 37 - docs/html/faqmot.htm | 96 - docs/html/faqmsw.htm | 154 - docs/html/gettext/gettext.htm | 4961 ------- docs/html/gettext/msgfmt.htm | 222 - docs/html/gettext/xgettext.htm | 144 - docs/html/index.htm | 182 - docs/html/logo.gif | Bin 3490 -> 0 bytes docs/index.htm | 37 - docs/latex/porting/back.gif | Bin 225 -> 0 bytes docs/latex/porting/books.bmp | Bin 1222 -> 0 bytes docs/latex/porting/books.gif | Bin 242 -> 0 bytes docs/latex/porting/bullet.bmp | Bin 198 -> 0 bytes docs/latex/porting/contents.gif | Bin 231 -> 0 bytes docs/latex/porting/forward.gif | Bin 109 -> 0 bytes docs/latex/porting/porting.hpj | 16 - docs/latex/porting/porting.tex | 385 - docs/latex/porting/tex2rtf.ini | 28 - docs/latex/porting/texhelp.sty | 289 - docs/latex/porting/up.gif | 1 - docs/latex/proplist/back.gif | Bin 226 -> 0 bytes docs/latex/proplist/body.tex | 106 - docs/latex/proplist/books.bmp | Bin 1222 -> 0 bytes docs/latex/proplist/books.gif | Bin 243 -> 0 bytes docs/latex/proplist/bullet.bmp | Bin 138 -> 0 bytes docs/latex/proplist/changes.tex | 27 - docs/latex/proplist/classes.tex | 1786 --- docs/latex/proplist/contents.gif | Bin 231 -> 0 bytes docs/latex/proplist/forward.gif | Bin 164 -> 0 bytes docs/latex/proplist/prop.tex | 47 - docs/latex/proplist/prop1.bmp | Bin 29238 -> 0 bytes docs/latex/proplist/prop1.eps | 539 - docs/latex/proplist/prop1.gif | Bin 3048 -> 0 bytes docs/latex/proplist/prop2.bmp | Bin 42526 -> 0 bytes docs/latex/proplist/prop2.eps | 664 - docs/latex/proplist/prop2.gif | Bin 4318 -> 0 bytes docs/latex/proplist/readme.txt | 39 - docs/latex/proplist/tex2rtf.ini | 21 - docs/latex/proplist/up.gif | Bin 137 -> 0 bytes docs/latex/proplist/wxprop.hpj | 17 - docs/latex/wx/accel.tex | 190 - docs/latex/wx/activevt.tex | 56 - docs/latex/wx/app.tex | 455 - docs/latex/wx/array.tex | 534 - docs/latex/wx/autoobj.tex | 210 - docs/latex/wx/back.gif | Bin 225 -> 0 bytes docs/latex/wx/bbutton.tex | 231 - docs/latex/wx/bitmap.tex | 686 - docs/latex/wx/bmpdatob.tex | 38 - docs/latex/wx/body.tex | 719 - docs/latex/wx/book1.bmp | Bin 566 -> 0 bytes docs/latex/wx/books.bmp | Bin 1222 -> 0 bytes docs/latex/wx/books.gif | Bin 242 -> 0 bytes docs/latex/wx/brush.tex | 339 - docs/latex/wx/bullet.bmp | Bin 198 -> 0 bytes docs/latex/wx/busycurs.tex | 40 - docs/latex/wx/button.tex | 134 - docs/latex/wx/calclevt.tex | 60 - docs/latex/wx/category.tex | 373 - docs/latex/wx/checkbox.tex | 104 - docs/latex/wx/checklst.tex | 95 - docs/latex/wx/choice.tex | 202 - docs/latex/wx/clasinfo.tex | 75 - docs/latex/wx/classes.tex | 225 - docs/latex/wx/clientdc.tex | 31 - docs/latex/wx/clipbrd.tex | 112 - docs/latex/wx/closeevt.tex | 95 - docs/latex/wx/cmdevent.tex | 188 - docs/latex/wx/cmdproc.tex | 106 - docs/latex/wx/colordlg.tex | 48 - docs/latex/wx/colour.tex | 272 - docs/latex/wx/combobox.tex | 314 - docs/latex/wx/command.tex | 85 - docs/latex/wx/conditn.tex | 61 - docs/latex/wx/config.tex | 654 - docs/latex/wx/contents.gif | Bin 231 -> 0 bytes docs/latex/wx/control.tex | 37 - docs/latex/wx/cpp.bmp | Bin 630 -> 0 bytes docs/latex/wx/critsect.tex | 54 - docs/latex/wx/crtslock.tex | 32 - docs/latex/wx/cursor.tex | 165 - docs/latex/wx/database.tex | 272 - docs/latex/wx/dataobj.tex | 84 - docs/latex/wx/date.tex | 348 - docs/latex/wx/datstrm.tex | 114 - docs/latex/wx/dc.tex | 709 - docs/latex/wx/ddeclint.tex | 68 - docs/latex/wx/ddeconn.tex | 198 - docs/latex/wx/ddeservr.tex | 48 - docs/latex/wx/debugcxt.tex | 267 - docs/latex/wx/dialog.tex | 311 - docs/latex/wx/dirdlg.tex | 86 - docs/latex/wx/docchfrm.tex | 88 - docs/latex/wx/docmanag.tex | 361 - docs/latex/wx/docmdich.tex | 89 - docs/latex/wx/docmdipr.tex | 61 - docs/latex/wx/docprfrm.tex | 60 - docs/latex/wx/doctempl.tex | 232 - docs/latex/wx/document.tex | 332 - docs/latex/wx/dropevt.tex | 76 - docs/latex/wx/dropsrc.tex | 88 - docs/latex/wx/droptrgt.tex | 73 - docs/latex/wx/eraseevt.tex | 48 - docs/latex/wx/event.tex | 141 - docs/latex/wx/evthand.tex | 302 - docs/latex/wx/expr.tex | 507 - docs/latex/wx/fildatob.tex | 38 - docs/latex/wx/fildrptg.tex | 62 - docs/latex/wx/file.tex | 263 - docs/latex/wx/filedlg.tex | 179 - docs/latex/wx/filehist.tex | 124 - docs/latex/wx/filetype.tex | 204 - docs/latex/wx/fltinstr.tex | 21 - docs/latex/wx/fltoutst.tex | 21 - 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 109 -> 0 bytes docs/latex/wx/frame.tex | 537 - docs/latex/wx/ftp.tex | 96 - docs/latex/wx/function.tex | 1727 --- docs/latex/wx/gauge.tex | 182 - docs/latex/wx/gdiobj.tex | 26 - docs/latex/wx/grid.tex | 517 - docs/latex/wx/grid1.bmp | Bin 68518 -> 0 bytes docs/latex/wx/grid1.eps | 771 - docs/latex/wx/grid1.gif | Bin 485 -> 0 bytes docs/latex/wx/hand1.bmp | Bin 454 -> 0 bytes docs/latex/wx/hash.tex | 118 - docs/latex/wx/hellow.bmp | Bin 55918 -> 0 bytes docs/latex/wx/hellow.gif | Bin 112 -> 0 bytes docs/latex/wx/hellox.bmp | Bin 64118 -> 0 bytes docs/latex/wx/hellox.gif | Bin 112 -> 0 bytes docs/latex/wx/helpinst.tex | 125 - docs/latex/wx/icon.tex | 374 - docs/latex/wx/idleevt.tex | 59 - docs/latex/wx/ilayout.tex | 133 - docs/latex/wx/image.tex | 586 - docs/latex/wx/imaglist.tex | 160 - docs/latex/wx/indlgevt.tex | 34 - docs/latex/wx/inputstr.tex | 94 - docs/latex/wx/joyevent.tex | 118 - docs/latex/wx/joystick.tex | 294 - docs/latex/wx/keycode.tex | 84 - docs/latex/wx/keyevent.tex | 130 - docs/latex/wx/layalgor.tex | 133 - docs/latex/wx/layout.tex | 94 - docs/latex/wx/list.tex | 287 - docs/latex/wx/listbox.tex | 356 - docs/latex/wx/listctrl.tex | 545 - docs/latex/wx/listevt.tex | 87 - docs/latex/wx/log.tex | 187 - docs/latex/wx/manual.tex | 136 - docs/latex/wx/mask.tex | 76 - docs/latex/wx/mdi.tex | 515 - docs/latex/wx/memorydc.tex | 57 - docs/latex/wx/menu.tex | 630 - docs/latex/wx/menuevt.tex | 53 - docs/latex/wx/menuitem.tex | 191 - docs/latex/wx/metafile.tex | 123 - docs/latex/wx/mimetype.tex | 118 - docs/latex/wx/minifram.tex | 110 - docs/latex/wx/mltchdlg.tex | 21 - docs/latex/wx/module.tex | 106 - docs/latex/wx/mouseevt.tex | 327 - docs/latex/wx/moveevt.tex | 38 - docs/latex/wx/msgdlg.tex | 63 - docs/latex/wx/mutex.tex | 141 - docs/latex/wx/mutexlck.tex | 39 - docs/latex/wx/node.tex | 52 - docs/latex/wx/notebook.tex | 265 - docs/latex/wx/noteevt.tex | 66 - docs/latex/wx/object.tex | 213 - docs/latex/wx/outptstr.tex | 87 - docs/latex/wx/pagedlg.tex | 242 - docs/latex/wx/paintdc.tex | 36 - docs/latex/wx/paintevt.tex | 31 - docs/latex/wx/palette.tex | 160 - docs/latex/wx/panel.tex | 118 - docs/latex/wx/pantabv.tex | 69 - docs/latex/wx/pathlist.tex | 75 - docs/latex/wx/pen.tex | 382 - docs/latex/wx/plug.bmp | Bin 384 -> 0 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/process.tex | 41 - docs/latex/wx/procevt.tex | 52 - docs/latex/wx/protocol.tex | 92 - docs/latex/wx/prvdatob.tex | 58 - docs/latex/wx/prvtdrpt.tex | 31 - docs/latex/wx/psbox.tex | 520 - docs/latex/wx/query.tex | 206 - docs/latex/wx/qylayevt.tex | 118 - docs/latex/wx/radiobox.tex | 228 - docs/latex/wx/radiobut.tex | 103 - docs/latex/wx/realpoin.tex | 31 - docs/latex/wx/recrdset.tex | 599 - docs/latex/wx/rect.tex | 159 - docs/latex/wx/referenc.tex | 82 - docs/latex/wx/refs.bib | 59 - docs/latex/wx/region.tex | 287 - docs/latex/wx/sashevt.tex | 85 - docs/latex/wx/sashlayw.tex | 128 - docs/latex/wx/sashwin.tex | 200 - docs/latex/wx/sckaddr.tex | 167 - docs/latex/wx/screendc.tex | 55 - docs/latex/wx/scrolbar.tex | 295 - docs/latex/wx/scrolevt.tex | 71 - docs/latex/wx/scrolwin.tex | 335 - docs/latex/wx/settings.tex | 141 - docs/latex/wx/shelves.bmp | Bin 630 -> 0 bytes docs/latex/wx/size.tex | 60 - docs/latex/wx/sizeevt.tex | 37 - docs/latex/wx/slider.tex | 371 - docs/latex/wx/sngchdlg.tex | 94 - docs/latex/wx/socket.tex | 769 - docs/latex/wx/spinbutt.tex | 164 - docs/latex/wx/splitter.bmp | Bin 22 -> 0 bytes docs/latex/wx/splitter.eps | 301 - docs/latex/wx/splitter.gif | 1 - docs/latex/wx/splitter.tex | 361 - docs/latex/wx/statbmp.tex | 92 - docs/latex/wx/statbox.tex | 72 - docs/latex/wx/stattext.tex | 84 - docs/latex/wx/statusbr.tex | 245 - docs/latex/wx/stream.tex | 218 - docs/latex/wx/strlist.tex | 74 - docs/latex/wx/strmbase.tex | 75 - docs/latex/wx/sysclevt.tex | 40 - docs/latex/wx/tab.tex | 568 - docs/latex/wx/tabctrl.tex | 233 - docs/latex/wx/tabevent.tex | 37 - docs/latex/wx/tapp.tex | 56 - docs/latex/wx/taskbar.tex | 90 - docs/latex/wx/tbitmap.tex | 166 - docs/latex/wx/tcommdlg.tex | 212 - docs/latex/wx/tconfig.tex | 49 - docs/latex/wx/tconstr.tex | 160 - docs/latex/wx/tcontain.tex | 59 - docs/latex/wx/tcpclint.tex | 64 - docs/latex/wx/tcpconn.tex | 196 - docs/latex/wx/tcpservr.tex | 45 - docs/latex/wx/tdb.tex | 240 - docs/latex/wx/tdc.tex | 42 - docs/latex/wx/tdebug.tex | 122 - docs/latex/wx/tdelwin.tex | 129 - docs/latex/wx/tdialog.tex | 31 - docs/latex/wx/tdnd.tex | 102 - docs/latex/wx/tdocview.tex | 305 - docs/latex/wx/tempfile.tex | 99 - docs/latex/wx/tevent.tex | 260 - docs/latex/wx/tex2rtf.ini | 32 - docs/latex/wx/texhelp.sty | 301 - docs/latex/wx/texpr.tex | 203 - docs/latex/wx/text.tex | 440 - docs/latex/wx/textdlg.tex | 64 - docs/latex/wx/textfile.tex | 250 - docs/latex/wx/tfile.tex | 27 - docs/latex/wx/tfont.tex | 36 - docs/latex/wx/tgrid.tex | 40 - docs/latex/wx/tguide.tex | 56 - docs/latex/wx/thread.tex | 177 - docs/latex/wx/timaglst.tex | 6 - docs/latex/wx/time.tex | 237 - docs/latex/wx/timer.tex | 59 - docs/latex/wx/tipc.tex | 188 - docs/latex/wx/tlistctl.tex | 6 - docs/latex/wx/tlog.tex | 145 - docs/latex/wx/tokenizr.tex | 49 - docs/latex/wx/toolbar.tex | 656 - docs/latex/wx/topics.tex | 42 - docs/latex/wx/tprint.tex | 59 - docs/latex/wx/treectrl.tex | 570 - docs/latex/wx/treeevt.tex | 67 - docs/latex/wx/tresourc.tex | 337 - docs/latex/wx/truntime.tex | 96 - docs/latex/wx/tscroll.tex | 90 - docs/latex/wx/tsplittr.tex | 63 - docs/latex/wx/tstring.tex | 6 - docs/latex/wx/tstyles.tex | 14 - docs/latex/wx/ttab.tex | 219 - docs/latex/wx/tthreads.tex | 8 - docs/latex/wx/ttoolbar.tex | 284 - docs/latex/wx/ttreectl.tex | 6 - docs/latex/wx/tusage.tex | 22 - docs/latex/wx/tvalidat.tex | 116 - docs/latex/wx/txtdatob.tex | 42 - docs/latex/wx/txtdrptg.tex | 60 - docs/latex/wx/up.gif | 1 - docs/latex/wx/upduievt.tex | 141 - docs/latex/wx/url.tex | 121 - docs/latex/wx/validatr.tex | 90 - docs/latex/wx/valtext.tex | 125 - docs/latex/wx/variant.tex | 436 - docs/latex/wx/view.tex | 178 - docs/latex/wx/wave.tex | 64 - docs/latex/wx/window.tex | 2099 --- docs/latex/wx/windowdc.tex | 33 - docs/latex/wx/wx.hpj | 13 - docs/latex/wx/wxstring.tex | 526 - docs/latex/wx/wxtab1.bmp | Bin 73718 -> 0 bytes docs/latex/wx/wxtab1.eps | 1086 -- docs/latex/wx/wxtab1.gif | Bin 112 -> 0 bytes docs/lgpl.txt | 517 - docs/licence.txt | 53 - docs/licendoc.txt | 60 - docs/motif/install.txt | 110 - docs/motif/issues.txt | 9 - docs/motif/makewx | 5 - docs/motif/readme.txt | 7 - docs/motif/todo.txt | 113 - docs/msw/install.txt | 276 - docs/msw/issues.txt | 29 - docs/msw/mingw32.txt | 32 - docs/msw/readme.txt | 5 - docs/msw/todo.txt | 172 - docs/preamble.txt | 49 - docs/readme.txt | 116 - docs/symbols.txt | 61 - docs/todo.txt | 36 - docs/word/odbc.doc | Bin 198656 -> 0 bytes docs/wxQt.html | 70 - include/install-sh | 250 - include/wx/accel.h | 19 - include/wx/app.h | 78 - include/wx/arrimpl.cpp | 108 - include/wx/bitmap.h | 19 - include/wx/bmpbuttn.h | 18 - include/wx/brush.h | 19 - include/wx/button.h | 19 - include/wx/checkbox.h | 19 - include/wx/checklst.h | 19 - include/wx/choicdlg.h | 7 - include/wx/choice.h | 19 - include/wx/clipbrd.h | 19 - include/wx/cmndata.h | 226 - include/wx/colordlg.h | 24 - include/wx/colour.h | 21 - include/wx/combobox.h | 19 - include/wx/confbase.h | 302 - include/wx/config.h | 17 - include/wx/control.h | 19 - include/wx/cursor.h | 19 - include/wx/dataobj.h | 19 - include/wx/date.h | 134 - include/wx/datstrm.h | 48 - include/wx/db.h | 378 - include/wx/dbtable.h | 165 - include/wx/dc.h | 19 - include/wx/dcclient.h | 19 - include/wx/dcmemory.h | 19 - include/wx/dcprint.h | 9 - include/wx/dcps.h | 7 - include/wx/dcscreen.h | 19 - include/wx/dde.h | 19 - include/wx/debug.h | 118 - include/wx/defs.h | 1074 -- include/wx/dialog.h | 19 - include/wx/dirdlg.h | 23 - include/wx/dnd.h | 21 - include/wx/docmdi.h | 83 - include/wx/docview.h | 553 - include/wx/dynarray.h | 443 - include/wx/dynlib.h | 73 - include/wx/event.h | 1326 -- include/wx/expr.h | 129 - include/wx/file.h | 182 - include/wx/fileconf.h | 366 - include/wx/filedlg.h | 20 - include/wx/filefn.h | 233 - include/wx/font.h | 19 - include/wx/fontdlg.h | 29 - include/wx/frame.h | 19 - include/wx/gauge.h | 19 - include/wx/gdicmn.h | 369 - include/wx/gdiobj.h | 19 - include/wx/generic/choicdgg.h | 102 - include/wx/generic/colrdlgg.h | 123 - include/wx/generic/dcpsg.h | 314 - include/wx/generic/dirdlgg.h | 121 - include/wx/generic/fontdlgg.h | 95 - include/wx/generic/gridg.h | 386 - include/wx/generic/helpext.h | 76 - include/wx/generic/helphtml.h | 128 - include/wx/generic/helpxlp.h | 127 - include/wx/generic/imaglist.h | 78 - include/wx/generic/laywin.h | 181 - include/wx/generic/listctrl.h | 652 - include/wx/generic/msgdlgg.h | 52 - include/wx/generic/notebook.h | 272 - include/wx/generic/panelg.h | 71 - include/wx/generic/printps.h | 57 - include/wx/generic/prntdlgg.h | 153 - include/wx/generic/sashwin.h | 214 - include/wx/generic/scrolwin.h | 138 - include/wx/generic/splitter.h | 195 - include/wx/generic/statusbr.h | 94 - include/wx/generic/tabg.h | 351 - include/wx/generic/textdlgg.h | 51 - include/wx/generic/treectrl.h | 489 - include/wx/grid.h | 11 - include/wx/gtk/.cvsignore | 1 - include/wx/gtk/accel.h | 105 - include/wx/gtk/app.h | 140 - include/wx/gtk/bitmap.h | 100 - include/wx/gtk/bmpbuttn.h | 94 - include/wx/gtk/brush.h | 64 - include/wx/gtk/button.h | 69 - include/wx/gtk/checkbox.h | 72 - include/wx/gtk/checklst.h | 57 - include/wx/gtk/choice.h | 95 - include/wx/gtk/clipbrd.h | 110 - include/wx/gtk/colour.h | 82 - include/wx/gtk/combobox.h | 122 - include/wx/gtk/control.h | 55 - include/wx/gtk/cursor.h | 46 - include/wx/gtk/dataobj.h | 317 - include/wx/gtk/dc.h | 377 - include/wx/gtk/dcclient.h | 137 - include/wx/gtk/dcmemory.h | 49 - include/wx/gtk/dcps.h | 142 - include/wx/gtk/dcscreen.h | 47 - include/wx/gtk/dialog.h | 106 - include/wx/gtk/dnd.h | 204 - include/wx/gtk/filedlg.h | 116 - include/wx/gtk/font.h | 123 - include/wx/gtk/frame.h | 124 - include/wx/gtk/gauge.h | 82 - include/wx/gtk/gdiobj.h | 37 - include/wx/gtk/icon.h | 56 - include/wx/gtk/joystick.h | 102 - include/wx/gtk/listbox.h | 115 - include/wx/gtk/mdi.h | 184 - include/wx/gtk/menu.h | 146 - include/wx/gtk/menuitem.h | 92 - include/wx/gtk/minifram.h | 69 - include/wx/gtk/notebook.h | 200 - include/wx/gtk/palette.h | 59 - include/wx/gtk/pen.h | 66 - include/wx/gtk/radiobox.h | 98 - include/wx/gtk/radiobut.h | 73 - include/wx/gtk/region.h | 137 - include/wx/gtk/scrolbar.h | 90 - include/wx/gtk/settings.h | 41 - include/wx/gtk/slider.h | 92 - include/wx/gtk/spinbutt.h | 98 - include/wx/gtk/statbmp.h | 60 - include/wx/gtk/statbox.h | 59 - include/wx/gtk/stattext.h | 60 - include/wx/gtk/tbargtk.h | 156 - include/wx/gtk/textctrl.h | 138 - include/wx/gtk/timer.h | 71 - include/wx/gtk/tooltip.h | 55 - include/wx/gtk/treectrl.h | 492 - include/wx/gtk/wave.h | 59 - include/wx/gtk/win_gtk.h | 68 - include/wx/gtk/window.h | 427 - include/wx/gtk1/.cvsignore | 1 - include/wx/gtk1/accel.h | 105 - include/wx/gtk1/app.h | 140 - include/wx/gtk1/bitmap.h | 100 - include/wx/gtk1/bmpbuttn.h | 94 - include/wx/gtk1/brush.h | 64 - include/wx/gtk1/button.h | 69 - include/wx/gtk1/checkbox.h | 72 - include/wx/gtk1/checklst.h | 57 - include/wx/gtk1/choice.h | 95 - include/wx/gtk1/clipbrd.h | 110 - include/wx/gtk1/colour.h | 82 - include/wx/gtk1/combobox.h | 122 - include/wx/gtk1/control.h | 55 - include/wx/gtk1/cursor.h | 46 - include/wx/gtk1/dataobj.h | 317 - include/wx/gtk1/dc.h | 377 - include/wx/gtk1/dcclient.h | 137 - include/wx/gtk1/dcmemory.h | 49 - include/wx/gtk1/dcps.h | 142 - include/wx/gtk1/dcscreen.h | 47 - include/wx/gtk1/dialog.h | 106 - include/wx/gtk1/dnd.h | 204 - include/wx/gtk1/filedlg.h | 116 - include/wx/gtk1/font.h | 123 - include/wx/gtk1/frame.h | 124 - include/wx/gtk1/gauge.h | 82 - include/wx/gtk1/gdiobj.h | 37 - include/wx/gtk1/icon.h | 56 - include/wx/gtk1/joystick.h | 102 - include/wx/gtk1/listbox.h | 115 - include/wx/gtk1/mdi.h | 184 - include/wx/gtk1/menu.h | 146 - include/wx/gtk1/menuitem.h | 92 - include/wx/gtk1/minifram.h | 69 - include/wx/gtk1/notebook.h | 200 - include/wx/gtk1/palette.h | 59 - include/wx/gtk1/pen.h | 66 - include/wx/gtk1/radiobox.h | 98 - include/wx/gtk1/radiobut.h | 73 - include/wx/gtk1/region.h | 137 - include/wx/gtk1/scrolbar.h | 90 - include/wx/gtk1/settings.h | 41 - include/wx/gtk1/slider.h | 92 - include/wx/gtk1/spinbutt.h | 98 - include/wx/gtk1/statbmp.h | 60 - include/wx/gtk1/statbox.h | 59 - include/wx/gtk1/stattext.h | 60 - include/wx/gtk1/tbargtk.h | 156 - include/wx/gtk1/textctrl.h | 138 - include/wx/gtk1/timer.h | 71 - include/wx/gtk1/tooltip.h | 55 - include/wx/gtk1/treectrl.h | 492 - include/wx/gtk1/wave.h | 59 - include/wx/gtk1/win_gtk.h | 68 - include/wx/gtk1/window.h | 427 - include/wx/hash.h | 100 - include/wx/help.h | 19 - include/wx/helpbase.h | 51 - include/wx/helphtml.h | 7 - include/wx/helpwin.h | 7 - include/wx/helpxlp.h | 7 - include/wx/icon.h | 25 - include/wx/image.h | 233 - include/wx/imaglist.h | 23 - include/wx/install-sh | 250 - include/wx/intl.h | 141 - include/wx/ipcbase.h | 119 - include/wx/joystick.h | 17 - include/wx/layout.h | 308 - include/wx/laywin.h | 7 - include/wx/list.h | 510 - include/wx/listbox.h | 19 - include/wx/listctrl.h | 23 - include/wx/listimpl.cpp | 24 - include/wx/log.h | 405 - include/wx/mac/accel.h | 80 - include/wx/mac/app.h | 152 - include/wx/mac/bitmap.h | 197 - include/wx/mac/bmpbuttn.h | 83 - include/wx/mac/brush.h | 83 - include/wx/mac/button.h | 53 - include/wx/mac/checkbox.h | 81 - include/wx/mac/checklst.h | 49 - include/wx/mac/choice.h | 72 - include/wx/mac/clipbrd.h | 104 - include/wx/mac/colordlg.h | 46 - include/wx/mac/colour.h | 97 - include/wx/mac/combobox.h | 84 - include/wx/mac/control.h | 50 - include/wx/mac/cursor.h | 75 - include/wx/mac/dc.h | 374 - include/wx/mac/dcclient.h | 125 - include/wx/mac/dcmemory.h | 38 - include/wx/mac/dcprint.h | 34 - include/wx/mac/dcscreen.h | 39 - include/wx/mac/dialog.h | 98 - include/wx/mac/dirdlg.h | 49 - include/wx/mac/dnd.h | 238 - include/wx/mac/filedlg.h | 89 - include/wx/mac/font.h | 89 - include/wx/mac/fontdlg.h | 46 - include/wx/mac/frame.h | 158 - include/wx/mac/gauge.h | 69 - include/wx/mac/gdiobj.h | 48 - include/wx/mac/helpxxxx.h | 52 - include/wx/mac/icon.h | 106 - include/wx/mac/imaglist.h | 145 - include/wx/mac/joystick.h | 93 - include/wx/mac/listbox.h | 97 - include/wx/mac/listctrl.h | 451 - include/wx/mac/macsock.h | 1059 -- include/wx/mac/mdi.h | 164 - include/wx/mac/menu.h | 162 - include/wx/mac/menuitem.h | 95 - include/wx/mac/metafile.h | 101 - include/wx/mac/minifram.h | 46 - include/wx/mac/msgdlg.h | 50 - include/wx/mac/notebook.h | 206 - include/wx/mac/palette.h | 64 - include/wx/mac/pen.h | 101 - include/wx/mac/print.h | 56 - include/wx/mac/printdlg.h | 70 - include/wx/mac/private.h | 21 - include/wx/mac/radiobox.h | 88 - include/wx/mac/radiobut.h | 90 - include/wx/mac/region.h | 137 - include/wx/mac/scrolbar.h | 68 - include/wx/mac/settings.h | 133 - include/wx/mac/setup.h | 125 - include/wx/mac/slider.h | 91 - include/wx/mac/spinbutt.h | 97 - include/wx/mac/statbmp.h | 64 - include/wx/mac/statbox.h | 57 - include/wx/mac/stattext.h | 56 - include/wx/mac/statusbr.h | 54 - include/wx/mac/tabctrl.h | 138 - include/wx/mac/taskbar.h | 49 - include/wx/mac/textctrl.h | 139 - include/wx/mac/timer.h | 64 - include/wx/mac/toolbar.h | 77 - include/wx/mac/treectrl.h | 295 - include/wx/mac/wave.h | 44 - include/wx/mac/window.h | 569 - include/wx/matrix.h | 144 - include/wx/mdi.h | 19 - include/wx/memory.h | 299 - include/wx/menu.h | 19 - include/wx/menuitem.h | 19 - include/wx/metafile.h | 9 - include/wx/mimetype.h | 145 - include/wx/minifram.h | 17 - include/wx/module.h | 58 - include/wx/motif/accel.h | 98 - include/wx/motif/app.h | 176 - include/wx/motif/bitmap.h | 211 - include/wx/motif/bmpbuttn.h | 93 - include/wx/motif/brush.h | 79 - include/wx/motif/button.h | 55 - include/wx/motif/checkbox.h | 91 - include/wx/motif/checklst.h | 47 - include/wx/motif/choice.h | 93 - include/wx/motif/clipbrd.h | 167 - include/wx/motif/colordlg.h | 46 - include/wx/motif/colour.h | 90 - include/wx/motif/combobox.h | 98 - include/wx/motif/control.h | 54 - include/wx/motif/cursor.h | 84 - include/wx/motif/dataobj.h | 174 - include/wx/motif/dc.h | 389 - include/wx/motif/dcclient.h | 226 - include/wx/motif/dcmemory.h | 40 - include/wx/motif/dcprint.h | 34 - include/wx/motif/dcscreen.h | 48 - include/wx/motif/dialog.h | 120 - include/wx/motif/dirdlg.h | 49 - include/wx/motif/dnd.h | 178 - include/wx/motif/filedlg.h | 95 - include/wx/motif/font.h | 133 - include/wx/motif/fontdlg.h | 46 - include/wx/motif/frame.h | 213 - include/wx/motif/gauge.h | 78 - include/wx/motif/gdiobj.h | 48 - include/wx/motif/helpxxxx.h | 52 - include/wx/motif/icon.h | 70 - include/wx/motif/joystick.h | 93 - include/wx/motif/listbox.h | 114 - include/wx/motif/mdi.h | 259 - include/wx/motif/menu.h | 235 - include/wx/motif/menuitem.h | 115 - include/wx/motif/metafile.h | 101 - include/wx/motif/minifram.h | 46 - include/wx/motif/msgdlg.h | 50 - include/wx/motif/palette.h | 81 - include/wx/motif/pen.h | 100 - include/wx/motif/print.h | 56 - include/wx/motif/printdlg.h | 70 - include/wx/motif/private.h | 57 - include/wx/motif/radiobox.h | 100 - include/wx/motif/radiobut.h | 94 - include/wx/motif/region.h | 141 - include/wx/motif/scrolbar.h | 73 - include/wx/motif/settings.h | 133 - include/wx/motif/setup.h | 154 - include/wx/motif/slider.h | 101 - include/wx/motif/spinbutt.h | 102 - include/wx/motif/statbmp.h | 74 - include/wx/motif/statbox.h | 76 - include/wx/motif/stattext.h | 57 - include/wx/motif/tabctrl.h | 138 - include/wx/motif/taskbar.h | 49 - include/wx/motif/textctrl.h | 149 - include/wx/motif/timer.h | 59 - include/wx/motif/toolbar.h | 94 - include/wx/motif/wave.h | 44 - include/wx/motif/window.h | 710 - include/wx/msgdlg.h | 19 - include/wx/mstream.h | 36 - include/wx/msw/accel.h | 81 - include/wx/msw/app.h | 168 - include/wx/msw/bitmap.h | 214 - include/wx/msw/blank.cur | Bin 326 -> 0 bytes include/wx/msw/bmpbuttn.h | 85 - include/wx/msw/brush.h | 78 - include/wx/msw/bullseye.cur | Bin 326 -> 0 bytes include/wx/msw/button.h | 60 - include/wx/msw/checkbox.h | 92 - include/wx/msw/checklst.h | 68 - include/wx/msw/child.ico | Bin 766 -> 0 bytes include/wx/msw/choice.h | 83 - include/wx/msw/clipbrd.h | 98 - include/wx/msw/clock.cur | Bin 326 -> 0 bytes include/wx/msw/colordlg.h | 45 - include/wx/msw/colour.h | 91 - include/wx/msw/combobox.h | 83 - include/wx/msw/control.h | 88 - include/wx/msw/ctl3d/ctl3d.h | 61 - include/wx/msw/curico.h | 22 - include/wx/msw/curicop.h | 63 - include/wx/msw/cursor.h | 68 - include/wx/msw/dc.h | 445 - include/wx/msw/dcclient.h | 65 - include/wx/msw/dcmemory.h | 35 - include/wx/msw/dcprint.h | 38 - include/wx/msw/dcscreen.h | 39 - include/wx/msw/dde.h | 153 - include/wx/msw/dialog.h | 124 - include/wx/msw/dib.h | 26 - include/wx/msw/dibutils.h | 131 - include/wx/msw/dirdlg.h | 49 - include/wx/msw/disable.bmp | Bin 630 -> 0 bytes include/wx/msw/filedlg.h | 109 - include/wx/msw/font.h | 101 - include/wx/msw/fontdlg.h | 46 - include/wx/msw/frame.h | 191 - include/wx/msw/gauge.h | 30 - include/wx/msw/gauge95.h | 80 - include/wx/msw/gaugemsw.h | 80 - include/wx/msw/gdiobj.h | 67 - include/wx/msw/hand.cur | Bin 326 -> 0 bytes include/wx/msw/heart.cur | Bin 326 -> 0 bytes include/wx/msw/helpwin.h | 54 - include/wx/msw/icon.h | 101 - include/wx/msw/imaglist.h | 226 - include/wx/msw/iniconf.h | 111 - include/wx/msw/joystick.h | 93 - include/wx/msw/listbox.h | 145 - include/wx/msw/listctrl.h | 480 - include/wx/msw/magnif1.cur | Bin 326 -> 0 bytes include/wx/msw/mdi.h | 214 - include/wx/msw/mdi.ico | Bin 766 -> 0 bytes include/wx/msw/menu.h | 185 - include/wx/msw/menuitem.h | 95 - include/wx/msw/metafile.h | 179 - include/wx/msw/minifram.h | 46 - include/wx/msw/msgdlg.h | 49 - include/wx/msw/noentry.cur | Bin 326 -> 0 bytes include/wx/msw/notebook.h | 223 - include/wx/msw/ole/automtn.h | 116 - include/wx/msw/ole/dataobj.h | 157 - include/wx/msw/ole/dropsrc.h | 73 - include/wx/msw/ole/droptgt.h | 111 - include/wx/msw/ole/oleutils.h | 146 - include/wx/msw/ole/uuid.h | 91 - include/wx/msw/palette.h | 65 - include/wx/msw/pbrush.cur | Bin 326 -> 0 bytes include/wx/msw/pen.h | 98 - include/wx/msw/pencil.cur | Bin 326 -> 0 bytes include/wx/msw/pnghand.h | 37 - include/wx/msw/pngread.h | 294 - include/wx/msw/pntleft.cur | Bin 326 -> 0 bytes include/wx/msw/pntright.cur | Bin 326 -> 0 bytes include/wx/msw/printdlg.h | 71 - include/wx/msw/printwin.h | 59 - include/wx/msw/private.h | 198 - include/wx/msw/query.cur | Bin 326 -> 0 bytes include/wx/msw/radiobox.h | 148 - include/wx/msw/radiobut.h | 93 - include/wx/msw/regconf.h | 110 - include/wx/msw/region.h | 145 - include/wx/msw/registry.h | 228 - include/wx/msw/roller.cur | Bin 326 -> 0 bytes include/wx/msw/scrolbar.h | 91 - include/wx/msw/settings.h | 129 - include/wx/msw/setup.h | 333 - include/wx/msw/size.cur | Bin 326 -> 0 bytes include/wx/msw/slider.h | 30 - include/wx/msw/slider95.h | 113 - include/wx/msw/slidrmsw.h | 113 - include/wx/msw/spinbutt.h | 107 - include/wx/msw/statbmp.h | 70 - include/wx/msw/statbox.h | 66 - include/wx/msw/statbr95.h | 55 - include/wx/msw/stattext.h | 67 - include/wx/msw/std.ico | Bin 766 -> 0 bytes include/wx/msw/tabctrl.h | 154 - include/wx/msw/taskbar.h | 104 - include/wx/msw/tbar95.h | 100 - include/wx/msw/tbarmsw.h | 123 - include/wx/msw/textctrl.h | 159 - include/wx/msw/timer.h | 62 - include/wx/msw/treectrl.h | 556 - include/wx/msw/watch1.cur | Bin 326 -> 0 bytes include/wx/msw/wave.h | 48 - include/wx/msw/window.h | 818 -- include/wx/msw/wx.rc | 129 - include/wx/msw/xpmhand.h | 51 - include/wx/notebook.h | 23 - include/wx/object.h | 282 - include/wx/objstrm.h | 83 - include/wx/odbc.h | 339 - include/wx/ownerdrw.h | 137 - include/wx/palette.h | 19 - include/wx/panel.h | 7 - include/wx/pen.h | 19 - include/wx/pnghand.h | 17 - include/wx/print.h | 30 - include/wx/printdlg.h | 30 - include/wx/prntbase.h | 342 - include/wx/process.h | 58 - include/wx/prop.h | 338 - include/wx/propform.h | 297 - include/wx/proplist.h | 559 - include/wx/protocol/file.h | 35 - include/wx/protocol/ftp.h | 74 - include/wx/protocol/http.h | 48 - include/wx/protocol/protocol.h | 79 - include/wx/qt/app.h | 153 - include/wx/qt/bitmap.h | 198 - include/wx/qt/bmpbuttn.h | 83 - include/wx/qt/brush.h | 86 - include/wx/qt/button.h | 53 - include/wx/qt/checkbox.h | 81 - include/wx/qt/choice.h | 72 - include/wx/qt/colour.h | 68 - include/wx/qt/combobox.h | 78 - include/wx/qt/control.h | 50 - include/wx/qt/cursor.h | 75 - include/wx/qt/dc.h | 375 - include/wx/qt/dcclient.h | 100 - include/wx/qt/dcmemory.h | 38 - include/wx/qt/dcscreen.h | 39 - include/wx/qt/dialog.h | 98 - include/wx/qt/dirdlg.h | 47 - include/wx/qt/dnd.h | 239 - include/wx/qt/filedlg.h | 71 - include/wx/qt/font.h | 88 - include/wx/qt/frame.h | 156 - include/wx/qt/gauge.h | 69 - include/wx/qt/gdiobj.h | 48 - include/wx/qt/icon.h | 107 - include/wx/qt/joystick.h | 93 - include/wx/qt/listbox.h | 97 - include/wx/qt/mdi.h | 160 - include/wx/qt/menu.h | 157 - include/wx/qt/notebook.h | 202 - include/wx/qt/palette.h | 66 - include/wx/qt/pen.h | 102 - include/wx/qt/radiobox.h | 88 - include/wx/qt/radiobut.h | 92 - include/wx/qt/region.h | 140 - include/wx/qt/scrolbar.h | 68 - include/wx/qt/settings.h | 129 - include/wx/qt/slider.h | 91 - include/wx/qt/statbmp.h | 64 - include/wx/qt/statbox.h | 57 - include/wx/qt/stattext.h | 56 - include/wx/qt/tbargtk.h | 139 - include/wx/qt/textctrl.h | 139 - include/wx/qt/timer.h | 64 - include/wx/qt/window.h | 547 - include/wx/radiobox.h | 19 - include/wx/radiobut.h | 19 - include/wx/region.h | 19 - include/wx/resource.h | 194 - include/wx/sashwin.h | 7 - include/wx/sckaddr.h | 136 - include/wx/sckipc.h | 133 - include/wx/sckstrm.h | 61 - include/wx/scrolbar.h | 19 - include/wx/scrolwin.h | 7 - include/wx/serbase.h | 60 - include/wx/settings.h | 123 - include/wx/setup.h | 26 - include/wx/slider.h | 19 - include/wx/socket.h | 349 - include/wx/spinbutt.h | 19 - include/wx/splitter.h | 7 - include/wx/statbmp.h | 19 - include/wx/statbox.h | 19 - include/wx/stattext.h | 19 - include/wx/statusbr.h | 7 - include/wx/stream.h | 261 - include/wx/string.h | 880 -- include/wx/stubs/accel.h | 80 - include/wx/stubs/app.h | 152 - include/wx/stubs/bitmap.h | 197 - include/wx/stubs/bmpbuttn.h | 83 - include/wx/stubs/brush.h | 83 - include/wx/stubs/button.h | 53 - include/wx/stubs/checkbox.h | 81 - include/wx/stubs/checklst.h | 47 - include/wx/stubs/choice.h | 72 - include/wx/stubs/clipbrd.h | 104 - include/wx/stubs/colordlg.h | 46 - include/wx/stubs/colour.h | 97 - include/wx/stubs/combobox.h | 84 - include/wx/stubs/control.h | 50 - include/wx/stubs/cursor.h | 75 - include/wx/stubs/dc.h | 374 - include/wx/stubs/dcclient.h | 125 - include/wx/stubs/dcmemory.h | 38 - include/wx/stubs/dcprint.h | 34 - include/wx/stubs/dcscreen.h | 39 - include/wx/stubs/dialog.h | 98 - include/wx/stubs/dirdlg.h | 49 - include/wx/stubs/dnd.h | 238 - include/wx/stubs/filedlg.h | 106 - include/wx/stubs/font.h | 89 - include/wx/stubs/fontdlg.h | 46 - include/wx/stubs/frame.h | 158 - include/wx/stubs/gauge.h | 69 - include/wx/stubs/gdiobj.h | 48 - include/wx/stubs/helpxxxx.h | 52 - include/wx/stubs/icon.h | 106 - include/wx/stubs/imaglist.h | 145 - include/wx/stubs/joystick.h | 93 - include/wx/stubs/listbox.h | 97 - include/wx/stubs/listctrl.h | 451 - include/wx/stubs/mdi.h | 164 - include/wx/stubs/menu.h | 162 - include/wx/stubs/menuitem.h | 95 - include/wx/stubs/metafile.h | 101 - include/wx/stubs/minifram.h | 46 - include/wx/stubs/msgdlg.h | 50 - include/wx/stubs/notebook.h | 206 - include/wx/stubs/palette.h | 64 - include/wx/stubs/pen.h | 101 - include/wx/stubs/print.h | 56 - include/wx/stubs/printdlg.h | 70 - include/wx/stubs/private.h | 21 - include/wx/stubs/radiobox.h | 88 - include/wx/stubs/radiobut.h | 90 - include/wx/stubs/region.h | 137 - include/wx/stubs/scrolbar.h | 68 - include/wx/stubs/settings.h | 133 - include/wx/stubs/setup.h | 140 - include/wx/stubs/slider.h | 91 - include/wx/stubs/spinbutt.h | 97 - include/wx/stubs/statbmp.h | 64 - include/wx/stubs/statbox.h | 57 - include/wx/stubs/stattext.h | 56 - include/wx/stubs/statusbr.h | 54 - include/wx/stubs/tabctrl.h | 138 - include/wx/stubs/taskbar.h | 49 - include/wx/stubs/textctrl.h | 139 - include/wx/stubs/timer.h | 64 - include/wx/stubs/toolbar.h | 77 - include/wx/stubs/treectrl.h | 295 - include/wx/stubs/wave.h | 44 - include/wx/stubs/window.h | 571 - include/wx/tab.h | 7 - include/wx/tabctrl.h | 16 - include/wx/taskbar.h | 17 - include/wx/tbar95.h | 13 - include/wx/tbarbase.h | 243 - include/wx/tbarmsw.h | 13 - include/wx/tbarsmpl.h | 81 - include/wx/textctrl.h | 19 - include/wx/textdlg.h | 7 - include/wx/textfile.h | 140 - include/wx/thread.h | 398 - include/wx/time.h | 112 - include/wx/timer.h | 19 - include/wx/tokenzr.h | 41 - include/wx/toolbar.h | 27 - include/wx/tooltip.h | 19 - include/wx/treectrl.h | 23 - include/wx/types.h | 97 - include/wx/url.h | 72 - include/wx/utils.h | 290 - include/wx/validate.h | 70 - include/wx/valtext.h | 77 - include/wx/variant.h | 248 - include/wx/version.h | 25 - include/wx/wave.h | 13 - include/wx/wfstream.h | 81 - include/wx/window.h | 19 - include/wx/wx.h | 75 - include/wx/wx_cw.h | 38 - include/wx/wx_cw_cm.h | 45 - include/wx/wx_cw_d.h | 38 - include/wx/wxchar.h | 247 - include/wx/wxexpr.h | 287 - include/wx/wxprec.h | 70 - include/wx/xpmhand.h | 11 - include/wx/zstream.h | 56 - include/wx_cw.pch | 16 - include/wx_cw.pch++ | 19 - include/wx_cw_d.pch | 17 - include/wx_cw_d.pch++ | 20 - install-sh | 250 - lib/.cvsignore | 3 - lib/dummy | 1 - misc/afm/Cour.afm | 341 - misc/afm/CourBo.afm | 341 - misc/afm/CourBoO.afm | 341 - misc/afm/CourO.afm | 341 - misc/afm/Helv.afm | 435 - misc/afm/HelvBo.afm | 431 - misc/afm/HelvBoO.afm | 429 - misc/afm/HelvO.afm | 428 - misc/afm/TimesBo.afm | 454 - misc/afm/TimesBoO.afm | 438 - misc/afm/TimesO.afm | 450 - misc/afm/TimesRo.afm | 443 - misc/gs_afm/Cour.afm | 255 - misc/gs_afm/CourBo.afm | 255 - misc/gs_afm/CourBoO.afm | 255 - misc/gs_afm/CourO.afm | 255 - misc/gs_afm/Helv.afm | 1257 -- misc/gs_afm/HelvBo.afm | 1257 -- misc/gs_afm/HelvBoO.afm | 1257 -- misc/gs_afm/HelvO.afm | 1257 -- misc/gs_afm/TimesBo.afm | 1257 -- misc/gs_afm/TimesBoO.afm | 1253 -- misc/gs_afm/TimesO.afm | 1253 -- misc/gs_afm/TimesRo.afm | 1257 -- mkinstalldirs | 36 - samples/Makefile | 1 - samples/bombs/.cvsignore | 3 - samples/bombs/Makefile | 1 - samples/bombs/Makefile.in | 26 - samples/bombs/bombs.bmp | Bin 654 -> 0 bytes samples/bombs/bombs.cpp | 252 - samples/bombs/bombs.def | 14 - samples/bombs/bombs.h | 119 - samples/bombs/bombs.ico | Bin 766 -> 0 bytes samples/bombs/bombs.rc | 3 - samples/bombs/bombs.xpm | 44 - samples/bombs/bombs1.cpp | 205 - samples/bombs/game.cpp | 105 - samples/bombs/game.h | 42 - samples/bombs/makefile.b32 | 16 - samples/bombs/makefile.bcc | 19 - samples/bombs/makefile.dos | 18 - samples/bombs/makefile.g95 | 44 - samples/bombs/makefile.unx | 17 - samples/bombs/makefile.vc | 18 - samples/bombs/makefile.wat | 15 - samples/bombs/readme.txt | 78 - samples/checklst/.cvsignore | 3 - samples/checklst/Makefile | 1 - samples/checklst/Makefile.in | 26 - samples/checklst/checklst.cpp | 187 - samples/checklst/checklst.def | 8 - samples/checklst/checklst.rc | 1 - samples/checklst/makefile.b32 | 16 - samples/checklst/makefile.dos | 17 - samples/checklst/makefile.g95 | 37 - samples/checklst/makefile.vc | 18 - samples/checklst/makefile.wat | 15 - samples/checklst/mondrian.xpm | 44 - samples/config/.cvsignore | 3 - samples/config/Makefile | 1 - samples/config/Makefile.in | 24 - samples/config/conftest.cpp | 234 - samples/config/conftest.rc | 2 - samples/config/makefile.b32 | 16 - samples/config/makefile.bcc | 19 - samples/config/makefile.dos | 17 - samples/config/makefile.g95 | 37 - samples/config/makefile.unx | 17 - samples/config/makefile.vc | 18 - samples/config/makefile.wat | 15 - samples/controls/.cvsignore | 3 - samples/controls/Makefile | 1 - samples/controls/Makefile.in | 26 - samples/controls/controls.cpp | 882 -- samples/controls/controls.def | 8 - samples/controls/controls.rc | 10 - samples/controls/icons/choice.bmp | Bin 2102 -> 0 bytes samples/controls/icons/choice.xpm | 27 - samples/controls/icons/combo.bmp | Bin 2102 -> 0 bytes samples/controls/icons/combo.xpm | 27 - samples/controls/icons/gauge.bmp | Bin 2102 -> 0 bytes samples/controls/icons/gauge.xpm | 27 - samples/controls/icons/list.bmp | Bin 2102 -> 0 bytes samples/controls/icons/list.xpm | 27 - samples/controls/icons/radio.bmp | Bin 2102 -> 0 bytes samples/controls/icons/radio.xpm | 27 - samples/controls/icons/stattext.xpm | 24 - samples/controls/icons/text.bmp | Bin 2102 -> 0 bytes samples/controls/icons/text.xpm | 27 - samples/controls/makefile.b32 | 16 - samples/controls/makefile.bcc | 19 - samples/controls/makefile.dos | 17 - samples/controls/makefile.g95 | 37 - samples/controls/makefile.unx | 17 - samples/controls/makefile.vc | 18 - samples/controls/makefile.wat | 15 - samples/controls/mondrian.ico | Bin 766 -> 0 bytes samples/controls/mondrian.xpm | 44 - samples/db/Makefile | 1 - samples/db/Makefile.in | 26 - samples/db/db.xpm | 48 - samples/db/dbtest.cpp | 2031 --- samples/db/dbtest.def | 8 - samples/db/dbtest.h | 383 - samples/db/dbtest.ico | Bin 766 -> 0 bytes samples/db/dbtest.rc | 3 - samples/db/listdb.cpp | 394 - samples/db/listdb.h | 128 - samples/db/makefile.b32 | 16 - samples/db/makefile.dos | 17 - samples/db/makefile.unx | 17 - samples/db/makefile.vc | 18 - samples/db/makefile.wat | 15 - samples/dde/Makefile | 1 - samples/dde/Makefile.in | 28 - samples/dde/client.cpp | 211 - samples/dde/client.def | 8 - samples/dde/client.h | 55 - samples/dde/client.rc | 2 - samples/dde/client.vc | 20 - samples/dde/client.wat | 15 - samples/dde/ddesetup.h | 37 - samples/dde/makefile.b32 | 82 - samples/dde/makefile.dos | 19 - samples/dde/makefile.g95 | 46 - samples/dde/makefile.vc | 20 - samples/dde/mondrian.ico | Bin 766 -> 0 bytes samples/dde/mondrian.xpm | 44 - samples/dde/server.cpp | 196 - samples/dde/server.def | 8 - samples/dde/server.h | 70 - samples/dde/server.rc | 3 - samples/dde/server.vc | 20 - samples/dde/server.wat | 15 - samples/dialogs/.cvsignore | 3 - samples/dialogs/Makefile | 1 - samples/dialogs/Makefile.in | 26 - samples/dialogs/dialogs.cpp | 297 - samples/dialogs/dialogs.def | 8 - samples/dialogs/dialogs.h | 73 - samples/dialogs/dialogs.rc | 2 - samples/dialogs/makefile.b32 | 16 - samples/dialogs/makefile.bcc | 19 - samples/dialogs/makefile.dos | 17 - samples/dialogs/makefile.g95 | 35 - samples/dialogs/makefile.unx | 17 - samples/dialogs/makefile.vc | 18 - samples/dialogs/makefile.wat | 15 - samples/dnd/.cvsignore | 3 - samples/dnd/Makefile | 1 - samples/dnd/Makefile.in | 26 - samples/dnd/d_and_d.txt | 167 - samples/dnd/dnd.cpp | 373 - samples/dnd/dnd.def | 8 - samples/dnd/dnd.rc | 3 - samples/dnd/makefile.b32 | 16 - samples/dnd/makefile.dos | 17 - samples/dnd/makefile.g95 | 37 - samples/dnd/makefile.vc | 18 - samples/dnd/makefile.wat | 15 - samples/dnd/mondrian.ico | Bin 766 -> 0 bytes samples/dnd/mondrian.xpm | 44 - samples/dnd/test.dsp | 121 - samples/dnd/test.dsw | 29 - samples/docview/.cvsignore | 3 - samples/docview/Makefile | 1 - samples/docview/Makefile.in | 26 - samples/docview/chart.ico | Bin 766 -> 0 bytes samples/docview/doc.cpp | 275 - samples/docview/doc.h | 98 - samples/docview/doc.ico | Bin 766 -> 0 bytes samples/docview/docview.cpp | 270 - samples/docview/docview.def | 8 - samples/docview/docview.h | 66 - samples/docview/docview.rc | 5 - samples/docview/makefile.b32 | 16 - samples/docview/makefile.bcc | 19 - samples/docview/makefile.dos | 17 - samples/docview/makefile.g95 | 43 - samples/docview/makefile.sc | 38 - samples/docview/makefile.unx | 18 - samples/docview/makefile.vc | 18 - samples/docview/makefile.vms | 44 - samples/docview/makefile.wat | 15 - samples/docview/mondrian.ico | Bin 766 -> 0 bytes samples/docview/mondrian.xpm | 44 - samples/docview/notepad.ico | Bin 766 -> 0 bytes samples/docview/view.cpp | 286 - samples/docview/view.h | 79 - samples/docvwmdi/.cvsignore | 3 - samples/docvwmdi/Makefile | 1 - samples/docvwmdi/Makefile.in | 26 - samples/docvwmdi/chart.ico | Bin 766 -> 0 bytes samples/docvwmdi/doc.cpp | 275 - samples/docvwmdi/doc.h | 98 - samples/docvwmdi/doc.ico | Bin 766 -> 0 bytes samples/docvwmdi/docview.cpp | 221 - samples/docvwmdi/docview.def | 8 - samples/docvwmdi/docview.h | 63 - samples/docvwmdi/docview.rc | 6 - samples/docvwmdi/makefile.b32 | 16 - samples/docvwmdi/makefile.bcc | 19 - samples/docvwmdi/makefile.dos | 17 - samples/docvwmdi/makefile.g95 | 43 - samples/docvwmdi/makefile.unx | 16 - samples/docvwmdi/makefile.vc | 18 - samples/docvwmdi/makefile.wat | 15 - samples/docvwmdi/notepad.ico | Bin 766 -> 0 bytes samples/docvwmdi/view.cpp | 264 - samples/docvwmdi/view.h | 79 - samples/dynamic/.cvsignore | 3 - samples/dynamic/Makefile | 1 - samples/dynamic/Makefile.in | 26 - samples/dynamic/dynamic.cpp | 113 - samples/dynamic/dynamic.def | 8 - samples/dynamic/dynamic.rc | 3 - samples/dynamic/makefile.b32 | 16 - samples/dynamic/makefile.bcc | 19 - samples/dynamic/makefile.dos | 17 - samples/dynamic/makefile.g95 | 37 - samples/dynamic/makefile.unx | 17 - samples/dynamic/makefile.vc | 18 - samples/dynamic/minimal.cpp | 113 - samples/dynamic/mondrian.ico | Bin 766 -> 0 bytes samples/dynamic/mondrian.xpm | 44 - samples/forty/.cvsignore | 3 - samples/forty/Makefile | 1 - samples/forty/Makefile.in | 40 - samples/forty/canvas.cpp | 254 - samples/forty/canvas.h | 56 - samples/forty/card.cpp | 358 - samples/forty/card.h | 65 - samples/forty/cards.ico | Bin 766 -> 0 bytes samples/forty/forty.cpp | 261 - samples/forty/forty.def | 8 - samples/forty/forty.h | 31 - samples/forty/forty.rc | 6 - samples/forty/game.cpp | 944 -- samples/forty/game.h | 135 - samples/forty/makefile.bcc | 19 - samples/forty/makefile.dos | 17 - samples/forty/makefile.g95 | 61 - samples/forty/makefile.vc | 18 - samples/forty/makefile.wat | 15 - samples/forty/pictures.bmp | Bin 2818 -> 0 bytes samples/forty/pictures.xpm | 60 - samples/forty/pile.cpp | 305 - samples/forty/pile.h | 80 - samples/forty/playerdg.cpp | 192 - samples/forty/playerdg.h | 41 - samples/forty/scoredg.cpp | 192 - samples/forty/scoredg.h | 32 - samples/forty/scorefil.cpp | 183 - samples/forty/scorefil.h | 37 - samples/forty/symbols.bmp | Bin 662 -> 0 bytes samples/forty/symbols.xbm | 37 - samples/forty/symbols.xpm | 60 - samples/fractal/Makefile | 1 - samples/fractal/Makefile.in | 26 - samples/fractal/fractal.cpp | 251 - samples/fractal/fractal.def | 9 - samples/fractal/fractal.rc | 4 - samples/fractal/makefile.b32 | 16 - samples/fractal/makefile.bcc | 19 - samples/fractal/makefile.dos | 17 - samples/fractal/makefile.g95 | 37 - samples/fractal/makefile.unx | 17 - samples/fractal/makefile.vc | 18 - samples/fractal/makefile.wat | 15 - samples/fractal/mondrian.ico | Bin 766 -> 0 bytes samples/grid/.cvsignore | 3 - samples/grid/Makefile | 1 - samples/grid/Makefile.in | 26 - samples/grid/bitmap1.bmp | Bin 406 -> 0 bytes samples/grid/bitmap2.bmp | Bin 238 -> 0 bytes samples/grid/makefile.b32 | 16 - samples/grid/makefile.bcc | 19 - samples/grid/makefile.dos | 17 - samples/grid/makefile.g95 | 37 - samples/grid/makefile.unx | 17 - samples/grid/makefile.vc | 18 - samples/grid/makefile.wat | 15 - samples/grid/test.cpp | 315 - samples/grid/test.def | 8 - samples/grid/test.rc | 5 - samples/help/.cvsignore | 3 - samples/help/Makefile | 1 - samples/help/Makefile.in | 26 - samples/help/demo.cpp | 259 - samples/help/demo.def | 8 - samples/help/demo.rc | 6 - samples/help/doc/ClassGraph.class | Bin 1146 -> 0 bytes samples/help/doc/ClassGraphPanel.class | Bin 4084 -> 0 bytes samples/help/doc/ClassLayout.class | Bin 2412 -> 0 bytes samples/help/doc/HIER.html | 9 - samples/help/doc/HIERjava.html | 15 - samples/help/doc/NavigatorButton.class | Bin 1741 -> 0 bytes samples/help/doc/USE_HELP.html | 38 - samples/help/doc/aindex.html | 21 - samples/help/doc/down.gif | Bin 1939 -> 0 bytes samples/help/doc/dxxgifs.tex | 4 - samples/help/doc/gifs.db | 0 samples/help/doc/icon1.gif | Bin 326 -> 0 bytes samples/help/doc/icon2.gif | Bin 326 -> 0 bytes samples/help/doc/index.html | 21 - samples/help/doc/logo.gif | Bin 11338 -> 0 bytes samples/help/doc/wx204.htm | 33 - samples/help/doc/wx34.htm | 349 - samples/help/doc/wxExtHelpController.html | 180 - samples/help/doc/wxhelp.map | 15 - samples/help/makefile.bcc | 19 - samples/help/makefile.vc | 18 - samples/help/makefile.wat | 15 - samples/help/mondrian.ico | Bin 766 -> 0 bytes samples/help/mondrian.xpm | 44 - samples/image/.cvsignore | 4 - samples/image/Makefile | 1 - samples/image/Makefile.in | 26 - samples/image/horse.png | Bin 68852 -> 0 bytes samples/image/image.cpp | 247 - samples/image/image.rc | 3 - samples/image/makefile.bcc | 19 - samples/image/makefile.dos | 17 - samples/image/makefile.unx | 17 - samples/image/makefile.vc | 18 - samples/image/makefile.wat | 15 - samples/internat/.cvsignore | 3 - samples/internat/Makefile | 1 - samples/internat/Makefile.in | 26 - samples/internat/fr/internat.mo | Bin 1066 -> 0 bytes samples/internat/fr/internat.po | 77 - samples/internat/fr/wxstd.mo | Bin 1923 -> 0 bytes samples/internat/fr/wxstd.po | 131 - samples/internat/internat.cpp | 198 - samples/internat/internat.def | 8 - samples/internat/internat.rc | 3 - samples/internat/makefile.b32 | 16 - samples/internat/makefile.bcc | 19 - samples/internat/makefile.dos | 17 - samples/internat/makefile.g95 | 36 - samples/internat/makefile.sc | 35 - samples/internat/makefile.unx | 17 - samples/internat/makefile.vc | 18 - samples/internat/makefile.vms | 38 - samples/internat/makefile.wat | 15 - samples/internat/mondrian.ico | Bin 766 -> 0 bytes samples/internat/mondrian.xpm | 44 - samples/internat/readme.txt | 82 - samples/internat/wxstd.po | 136 - samples/joytest/chart.ico | Bin 766 -> 0 bytes samples/joytest/gun.wav | Bin 26838 -> 0 bytes samples/joytest/joytest.cpp | 171 - samples/joytest/joytest.def | 8 - samples/joytest/joytest.h | 51 - samples/joytest/joytest.ico | Bin 766 -> 0 bytes samples/joytest/joytest.rc | 5 - samples/joytest/makefile.b32 | 16 - samples/joytest/makefile.bcc | 19 - samples/joytest/makefile.dos | 17 - samples/joytest/makefile.g95 | 35 - samples/joytest/makefile.sc | 37 - samples/joytest/makefile.unx | 17 - samples/joytest/makefile.vc | 18 - samples/joytest/makefile.wat | 15 - samples/joytest/mondrian.ico | Bin 766 -> 0 bytes samples/layout/.cvsignore | 3 - samples/layout/Makefile | 1 - samples/layout/Makefile.in | 26 - samples/layout/expt.cpp | 161 - samples/layout/fload.xbm | 11 - samples/layout/layout.cpp | 355 - samples/layout/layout.def | 9 - samples/layout/layout.h | 79 - samples/layout/layout.rc | 1 - samples/layout/makefile.b32 | 16 - samples/layout/makefile.bcc | 19 - samples/layout/makefile.dos | 17 - samples/layout/makefile.g95 | 35 - samples/layout/makefile.sc | 37 - samples/layout/makefile.unx | 17 - samples/layout/makefile.vc | 18 - samples/layout/makefile.vms | 41 - samples/layout/makefile.wat | 15 - samples/listctrl/.cvsignore | 3 - samples/listctrl/Makefile | 1 - samples/listctrl/Makefile.in | 26 - samples/listctrl/bitmaps/small1.ico | Bin 1078 -> 0 bytes samples/listctrl/bitmaps/small1.xpm | 27 - samples/listctrl/bitmaps/toolbrai.ico | Bin 766 -> 0 bytes samples/listctrl/bitmaps/toolbrai.xpm | 42 - samples/listctrl/bitmaps/toolchar.ico | Bin 766 -> 0 bytes samples/listctrl/bitmaps/toolchar.xpm | 42 - samples/listctrl/bitmaps/toolchec.ico | Bin 766 -> 0 bytes samples/listctrl/bitmaps/toolchec.xpm | 40 - samples/listctrl/bitmaps/tooldata.ico | Bin 766 -> 0 bytes samples/listctrl/bitmaps/tooldata.xpm | 45 - samples/listctrl/bitmaps/toolgame.ico | Bin 766 -> 0 bytes samples/listctrl/bitmaps/toolgame.xpm | 41 - samples/listctrl/bitmaps/toolnote.ico | Bin 766 -> 0 bytes samples/listctrl/bitmaps/toolnote.xpm | 46 - samples/listctrl/bitmaps/tooltime.ico | Bin 766 -> 0 bytes samples/listctrl/bitmaps/tooltime.xpm | 43 - samples/listctrl/bitmaps/tooltodo.ico | Bin 766 -> 0 bytes samples/listctrl/bitmaps/tooltodo.xpm | 44 - samples/listctrl/bitmaps/toolword.ico | Bin 766 -> 0 bytes samples/listctrl/bitmaps/toolword.xpm | 41 - samples/listctrl/listtest.cpp | 477 - samples/listctrl/listtest.def | 8 - samples/listctrl/listtest.h | 85 - samples/listctrl/listtest.rc | 16 - samples/listctrl/makefile.b32 | 16 - samples/listctrl/makefile.bcc | 19 - samples/listctrl/makefile.dos | 17 - samples/listctrl/makefile.g95 | 37 - samples/listctrl/makefile.unx | 17 - samples/listctrl/makefile.vc | 18 - samples/listctrl/makefile.wat | 15 - samples/listctrl/mondrian.ico | Bin 766 -> 0 bytes samples/listctrl/mondrian.xpm | 44 - samples/listctrl/test.dsp | 118 - samples/listctrl/test.dsw | 29 - samples/makefile.g95 | 78 - samples/makefile.unx | 84 - samples/makefile.vc | 159 - samples/mdi/.cvsignore | 3 - samples/mdi/Makefile | 1 - samples/mdi/Makefile.in | 26 - samples/mdi/bitmaps/bitmap1.bmp | Bin 238 -> 0 bytes samples/mdi/bitmaps/bitmap2.bmp | Bin 238 -> 0 bytes samples/mdi/bitmaps/calc.bmp | Bin 702 -> 0 bytes samples/mdi/bitmaps/copy.bmp | Bin 238 -> 0 bytes samples/mdi/bitmaps/copy.xpm | 25 - samples/mdi/bitmaps/cut.bmp | Bin 238 -> 0 bytes samples/mdi/bitmaps/cut.xpm | 24 - samples/mdi/bitmaps/dirplain.xbm | 14 - samples/mdi/bitmaps/draft.xbm | 14 - samples/mdi/bitmaps/drawing.xbm | 14 - samples/mdi/bitmaps/flowchar.xbm | 14 - samples/mdi/bitmaps/help.bmp | Bin 238 -> 0 bytes samples/mdi/bitmaps/help.xpm | 25 - samples/mdi/bitmaps/helpcs.bmp | Bin 238 -> 0 bytes samples/mdi/bitmaps/new.bmp | Bin 238 -> 0 bytes samples/mdi/bitmaps/new.xpm | 24 - samples/mdi/bitmaps/open.bmp | Bin 238 -> 0 bytes samples/mdi/bitmaps/open.xpm | 26 - samples/mdi/bitmaps/paste.bmp | Bin 238 -> 0 bytes samples/mdi/bitmaps/paste.xpm | 27 - samples/mdi/bitmaps/preview.bmp | Bin 238 -> 0 bytes samples/mdi/bitmaps/preview.xpm | 26 - samples/mdi/bitmaps/print.bmp | Bin 238 -> 0 bytes samples/mdi/bitmaps/print.xpm | 26 - samples/mdi/bitmaps/save.bmp | Bin 238 -> 0 bytes samples/mdi/bitmaps/save.xpm | 25 - samples/mdi/bitmaps/tick.bmp | Bin 220 -> 0 bytes samples/mdi/bitmaps/write.xbm | 14 - samples/mdi/chart.ico | Bin 766 -> 0 bytes samples/mdi/makefile.b32 | 16 - samples/mdi/makefile.bcc | 19 - samples/mdi/makefile.dos | 17 - samples/mdi/makefile.g95 | 35 - samples/mdi/makefile.sc | 36 - samples/mdi/makefile.twn | 37 - samples/mdi/makefile.unx | 17 - samples/mdi/makefile.vc | 18 - samples/mdi/makefile.vms | 38 - samples/mdi/makefile.wat | 15 - samples/mdi/mdi.cpp | 359 - samples/mdi/mdi.def | 8 - samples/mdi/mdi.h | 67 - samples/mdi/mdi.ico | Bin 766 -> 0 bytes samples/mdi/mdi.rc | 24 - samples/mdi/mondrian.ico | Bin 766 -> 0 bytes samples/mdi/mondrian.xpm | 44 - samples/memcheck/.cvsignore | 3 - samples/memcheck/Makefile | 1 - samples/memcheck/Makefile.in | 26 - samples/memcheck/makefile.b32 | 16 - samples/memcheck/makefile.bcc | 19 - samples/memcheck/makefile.dos | 17 - samples/memcheck/makefile.g95 | 37 - samples/memcheck/makefile.unx | 17 - samples/memcheck/makefile.vc | 18 - samples/memcheck/makefile.wat | 15 - samples/memcheck/memcheck.cpp | 122 - samples/memcheck/memcheck.def | 8 - samples/memcheck/memcheck.rc | 3 - samples/memcheck/mondrian.ico | Bin 766 -> 0 bytes samples/memcheck/mondrian.xpm | 44 - samples/mfc/makefile.b32 | 71 - samples/mfc/makefile.bcc | 76 - samples/mfc/makefile.dos | 89 - samples/mfc/makefile.vc | 18 - samples/mfc/makefile.wat | 47 - samples/mfc/mfctest.cpp | 408 - samples/mfc/mfctest.def | 21 - samples/mfc/mfctest.h | 66 - samples/mfc/mfctest.ico | Bin 766 -> 0 bytes samples/mfc/mfctest.rc | 108 - samples/mfc/resource.h | 18 - samples/mfc/stdafx.h | 12 - samples/minifram/.cvsignore | 3 - samples/minifram/Makefile | 1 - samples/minifram/Makefile.in | 26 - samples/minifram/bitmaps/copy.bmp | Bin 238 -> 0 bytes samples/minifram/bitmaps/copy.xpm | 25 - samples/minifram/bitmaps/cut.bmp | Bin 238 -> 0 bytes samples/minifram/bitmaps/cut.xpm | 24 - samples/minifram/bitmaps/help.bmp | Bin 238 -> 0 bytes samples/minifram/bitmaps/help.xpm | 25 - samples/minifram/bitmaps/new.bmp | Bin 238 -> 0 bytes samples/minifram/bitmaps/new.xpm | 24 - samples/minifram/bitmaps/open.bmp | Bin 238 -> 0 bytes samples/minifram/bitmaps/open.xpm | 26 - samples/minifram/bitmaps/page.bmp | Bin 714 -> 0 bytes samples/minifram/bitmaps/paste.bmp | Bin 238 -> 0 bytes samples/minifram/bitmaps/preview.bmp | Bin 238 -> 0 bytes samples/minifram/bitmaps/preview.xpm | 26 - samples/minifram/bitmaps/print.bmp | Bin 238 -> 0 bytes samples/minifram/bitmaps/print.xpm | 26 - samples/minifram/bitmaps/save.bmp | Bin 238 -> 0 bytes samples/minifram/bitmaps/save.xpm | 25 - samples/minifram/makefile.b32 | 16 - samples/minifram/makefile.bcc | 19 - samples/minifram/makefile.dos | 17 - samples/minifram/makefile.g95 | 40 - samples/minifram/makefile.unx | 18 - samples/minifram/makefile.vc | 18 - samples/minifram/makefile.wat | 15 - samples/minifram/mondrian.ico | Bin 766 -> 0 bytes samples/minifram/mondrian.xpm | 44 - samples/minifram/test.cpp | 149 - samples/minifram/test.def | 8 - samples/minifram/test.h | 35 - samples/minifram/test.rc | 13 - samples/minimal/.cvsignore | 3 - samples/minimal/Makefile | 1 - samples/minimal/Makefile.in | 26 - samples/minimal/make_cw.mcp | Bin 131407 -> 0 bytes samples/minimal/makefile.b32 | 16 - samples/minimal/makefile.bcc | 19 - samples/minimal/makefile.dos | 17 - samples/minimal/makefile.g95 | 37 - samples/minimal/makefile.twn | 43 - samples/minimal/makefile.unx | 17 - samples/minimal/makefile.vc | 18 - samples/minimal/minimal.cpp | 194 - samples/minimal/minimal.def | 7 - samples/minimal/minimal.rc | 6 - samples/minimal/mondrian.ico | Bin 766 -> 0 bytes samples/minimal/mondrian.xpm | 44 - samples/nativdlg/dialog1.rc | 142 - samples/nativdlg/makefile.b32 | 16 - samples/nativdlg/makefile.bcc | 19 - samples/nativdlg/makefile.dos | 17 - samples/nativdlg/makefile.g95 | 36 - samples/nativdlg/makefile.sc | 35 - samples/nativdlg/makefile.unx | 17 - samples/nativdlg/makefile.vc | 18 - samples/nativdlg/makefile.vms | 38 - samples/nativdlg/makefile.wat | 15 - samples/nativdlg/nativdlg.cpp | 130 - samples/nativdlg/nativdlg.def | 9 - samples/nativdlg/nativdlg.h | 47 - samples/nativdlg/nativdlg.rc | 4 - samples/nativdlg/resource.h | 25 - samples/notebook/.cvsignore | 3 - samples/notebook/Makefile | 1 - samples/notebook/Makefile.in | 26 - samples/notebook/makefile.b32 | 16 - samples/notebook/makefile.bcc | 19 - samples/notebook/makefile.dos | 17 - samples/notebook/makefile.g95 | 37 - samples/notebook/makefile.unx | 17 - samples/notebook/makefile.vc | 18 - samples/notebook/makefile.wat | 15 - samples/notebook/mondrian.ico | Bin 766 -> 0 bytes samples/notebook/test.cpp | 213 - samples/notebook/test.def | 8 - samples/notebook/test.h | 79 - samples/notebook/test.rc | 3 - samples/oleauto/makefile.b32 | 16 - samples/oleauto/makefile.g95 | 37 - samples/oleauto/makefile.vc | 18 - samples/oleauto/makefile.wat | 15 - samples/oleauto/mondrian.ico | Bin 766 -> 0 bytes samples/oleauto/mondrian.xpm | 44 - samples/oleauto/oleauto.cpp | 220 - samples/oleauto/oleauto.def | 8 - samples/oleauto/oleauto.rc | 3 - samples/ownerdrw/bell.bmp | Bin 370 -> 0 bytes samples/ownerdrw/makefile.b32 | 16 - samples/ownerdrw/makefile.bcc | 19 - samples/ownerdrw/makefile.dos | 17 - samples/ownerdrw/makefile.g95 | 37 - samples/ownerdrw/makefile.vc | 18 - samples/ownerdrw/makefile.wat | 15 - samples/ownerdrw/mondrian.ico | Bin 766 -> 0 bytes samples/ownerdrw/nosound.bmp | Bin 370 -> 0 bytes samples/ownerdrw/ownerdrw.cpp | 295 - samples/ownerdrw/ownerdrw.def | 8 - samples/ownerdrw/ownerdrw.rc | 6 - samples/ownerdrw/sound.bmp | Bin 370 -> 0 bytes samples/png/.cvsignore | 3 - samples/png/Makefile | 1 - samples/png/Makefile.in | 26 - samples/png/julian.png | Bin 5439 -> 0 bytes samples/png/makefile.bcc | 19 - samples/png/makefile.vc | 18 - samples/png/makefile.wat | 15 - samples/png/paint.png | Bin 950 -> 0 bytes samples/png/paint16.png | Bin 236 -> 0 bytes samples/png/pngdemo.cpp | 218 - samples/png/pngdemo.h | 59 - samples/png/pngdemo.rc | 2 - samples/printing/.cvsignore | 3 - samples/printing/Makefile | 1 - samples/printing/Makefile.in | 26 - samples/printing/fload.xbm | 11 - samples/printing/folder.xpm | 48 - samples/printing/makefile.b32 | 16 - samples/printing/makefile.bcc | 19 - samples/printing/makefile.dos | 88 - samples/printing/makefile.g95 | 37 - samples/printing/makefile.unx | 17 - samples/printing/makefile.vc | 18 - samples/printing/makefile.wat | 15 - samples/printing/mondrian.ico | Bin 766 -> 0 bytes samples/printing/mondrian.xpm | 44 - samples/printing/printing.cpp | 522 - samples/printing/printing.def | 9 - samples/printing/printing.h | 96 - samples/printing/printing.rc | 3 - samples/printing/test.dsp | 118 - samples/printing/test.dsw | 29 - samples/proplist/.cvsignore | 3 - samples/proplist/Makefile | 1 - samples/proplist/Makefile.in | 26 - samples/proplist/cross.bmp | Bin 198 -> 0 bytes samples/proplist/makefile.b32 | 16 - samples/proplist/makefile.bcc | 19 - samples/proplist/makefile.dos | 17 - samples/proplist/makefile.g95 | 37 - samples/proplist/makefile.unx | 17 - samples/proplist/makefile.vc | 18 - samples/proplist/makefile.wat | 15 - samples/proplist/test.cpp | 321 - samples/proplist/test.def | 8 - samples/proplist/test.h | 127 - samples/proplist/test.rc | 5 - samples/proplist/tick.bmp | Bin 198 -> 0 bytes samples/regtest/key1.ico | Bin 318 -> 0 bytes samples/regtest/key2.ico | Bin 318 -> 0 bytes samples/regtest/key3.ico | Bin 318 -> 0 bytes samples/regtest/makefile.g95 | 37 - samples/regtest/makefile.vc | 18 - samples/regtest/makefile.wat | 15 - samples/regtest/registry.ico | Bin 1078 -> 0 bytes samples/regtest/regtest.cpp | 840 -- samples/regtest/regtest.rc | 9 - samples/regtest/value1.ico | Bin 318 -> 0 bytes samples/regtest/value2.ico | Bin 318 -> 0 bytes samples/resource/.cvsignore | 3 - samples/resource/Makefile | 1 - samples/resource/Makefile.in | 26 - samples/resource/dialog1.h | 14 - samples/resource/dialog1.wxr | 26 - samples/resource/makefile.b32 | 16 - samples/resource/makefile.bcc | 19 - samples/resource/makefile.dos | 86 - samples/resource/makefile.g95 | 36 - samples/resource/makefile.sc | 35 - samples/resource/makefile.unx | 17 - samples/resource/makefile.vc | 18 - samples/resource/makefile.vms | 38 - samples/resource/makefile.wat | 15 - samples/resource/menu1.wxr | 13 - samples/resource/resource.cpp | 199 - samples/resource/resource.def | 9 - samples/resource/resource.h | 70 - samples/resource/resource.rc | 10 - samples/sashtest/.cvsignore | 3 - samples/sashtest/Makefile | 1 - samples/sashtest/Makefile.in | 26 - samples/sashtest/makefile.b32 | 16 - samples/sashtest/makefile.bcc | 19 - samples/sashtest/makefile.g95 | 37 - samples/sashtest/makefile.unx | 17 - samples/sashtest/makefile.vc | 18 - samples/sashtest/makefile.wat | 15 - samples/sashtest/sashtest.cpp | 375 - samples/sashtest/sashtest.h | 79 - samples/sashtest/sashtest.ico | Bin 766 -> 0 bytes samples/sashtest/sashtest.rc | 9 - samples/splitter/.cvsignore | 3 - samples/splitter/Makefile | 1 - samples/splitter/Makefile.in | 26 - samples/splitter/makefile.b32 | 16 - samples/splitter/makefile.bcc | 19 - samples/splitter/makefile.g95 | 39 - samples/splitter/makefile.unx | 18 - samples/splitter/makefile.vc | 18 - samples/splitter/makefile.wat | 15 - samples/splitter/mondrian.ico | Bin 766 -> 0 bytes samples/splitter/test.cpp | 281 - samples/splitter/test.def | 8 - samples/splitter/test.rc | 4 - samples/tab/.cvsignore | 3 - samples/tab/Makefile | 1 - samples/tab/Makefile.in | 26 - samples/tab/makefile.b32 | 16 - samples/tab/makefile.bcc | 19 - samples/tab/makefile.dos | 17 - samples/tab/makefile.g95 | 37 - samples/tab/makefile.unx | 17 - samples/tab/makefile.vc | 18 - samples/tab/makefile.wat | 15 - samples/tab/mondrian.ico | Bin 766 -> 0 bytes samples/tab/test.cpp | 270 - samples/tab/test.def | 8 - samples/tab/test.h | 87 - samples/tab/test.rc | 3 - samples/taskbar/makefile.b32 | 16 - samples/taskbar/makefile.dos | 65 - samples/taskbar/makefile.g95 | 37 - samples/taskbar/makefile.vc | 18 - samples/taskbar/makefile.wat | 15 - samples/taskbar/mondrian.ico | Bin 766 -> 0 bytes samples/taskbar/tbtest.cpp | 154 - samples/taskbar/tbtest.def | 8 - samples/taskbar/tbtest.h | 55 - samples/taskbar/tbtest.rc | 3 - samples/thread/.cvsignore | 3 - samples/thread/Makefile | 1 - samples/thread/Makefile.in | 26 - samples/thread/makefile.b32 | 16 - samples/thread/makefile.dos | 65 - samples/thread/makefile.g95 | 37 - samples/thread/makefile.unx | 17 - samples/thread/makefile.vc | 18 - samples/thread/makefile.wat | 15 - samples/thread/test.cpp | 462 - samples/thread/test.def | 8 - samples/thread/test.rc | 2 - samples/toolbar/.cvsignore | 3 - samples/toolbar/Makefile | 1 - samples/toolbar/Makefile.in | 26 - samples/toolbar/bitmaps/copy.bmp | Bin 238 -> 0 bytes samples/toolbar/bitmaps/copy.xpm | 25 - samples/toolbar/bitmaps/cut.bmp | Bin 238 -> 0 bytes samples/toolbar/bitmaps/cut.xpm | 24 - samples/toolbar/bitmaps/help.bmp | Bin 238 -> 0 bytes samples/toolbar/bitmaps/help.xpm | 25 - samples/toolbar/bitmaps/new.bmp | Bin 238 -> 0 bytes samples/toolbar/bitmaps/new.xpm | 24 - samples/toolbar/bitmaps/open.bmp | Bin 238 -> 0 bytes samples/toolbar/bitmaps/open.xpm | 26 - samples/toolbar/bitmaps/page.bmp | Bin 714 -> 0 bytes samples/toolbar/bitmaps/paste.bmp | Bin 238 -> 0 bytes samples/toolbar/bitmaps/preview.bmp | Bin 238 -> 0 bytes samples/toolbar/bitmaps/preview.xpm | 26 - samples/toolbar/bitmaps/print.bmp | Bin 238 -> 0 bytes samples/toolbar/bitmaps/print.xpm | 26 - samples/toolbar/bitmaps/save.bmp | Bin 238 -> 0 bytes samples/toolbar/bitmaps/save.xpm | 25 - samples/toolbar/makefile.b32 | 16 - samples/toolbar/makefile.bcc | 19 - samples/toolbar/makefile.dos | 17 - samples/toolbar/makefile.g95 | 40 - samples/toolbar/makefile.unx | 18 - samples/toolbar/makefile.vc | 18 - samples/toolbar/makefile.wat | 15 - samples/toolbar/mondrian.ico | Bin 766 -> 0 bytes samples/toolbar/mondrian.xpm | 44 - samples/toolbar/test.cpp | 207 - samples/toolbar/test.def | 8 - samples/toolbar/test.h | 52 - samples/toolbar/test.rc | 13 - samples/treectrl/.cvsignore | 3 - samples/treectrl/Makefile | 1 - samples/treectrl/Makefile.in | 26 - samples/treectrl/bitmaps/file1.bmp | Bin 246 -> 0 bytes samples/treectrl/bitmaps/file1.ico | Bin 1078 -> 0 bytes samples/treectrl/bitmaps/folder1.bmp | Bin 246 -> 0 bytes samples/treectrl/bitmaps/folder1.ico | Bin 1078 -> 0 bytes samples/treectrl/icon1.xpm | 25 - samples/treectrl/icon2.xpm | 28 - samples/treectrl/makefile.b32 | 16 - samples/treectrl/makefile.bcc | 19 - samples/treectrl/makefile.dos | 17 - samples/treectrl/makefile.g95 | 38 - samples/treectrl/makefile.unx | 17 - samples/treectrl/makefile.vc | 18 - samples/treectrl/makefile.wat | 15 - samples/treectrl/mondrian.ico | Bin 766 -> 0 bytes samples/treectrl/mondrian.xpm | 44 - samples/treectrl/treetest.cpp | 442 - samples/treectrl/treetest.def | 8 - samples/treectrl/treetest.h | 140 - samples/treectrl/treetest.rc | 10 - samples/typetest/.cvsignore | 3 - samples/typetest/Makefile | 1 - samples/typetest/Makefile.in | 26 - samples/typetest/makefile.b32 | 16 - samples/typetest/makefile.bcc | 19 - samples/typetest/makefile.dos | 17 - samples/typetest/makefile.g95 | 37 - samples/typetest/makefile.unx | 17 - samples/typetest/makefile.vc | 18 - samples/typetest/makefile.wat | 15 - samples/typetest/mondrian.ico | Bin 766 -> 0 bytes samples/typetest/mondrian.xpm | 44 - samples/typetest/typetest.cpp | 299 - samples/typetest/typetest.def | 8 - samples/typetest/typetest.h | 67 - samples/typetest/typetest.rc | 3 - samples/validate/.cvsignore | 3 - samples/validate/Makefile | 1 - samples/validate/Makefile.in | 26 - samples/validate/makefile.b32 | 16 - samples/validate/makefile.bcc | 19 - samples/validate/makefile.dos | 17 - samples/validate/makefile.g95 | 37 - samples/validate/makefile.vc | 18 - samples/validate/makefile.wat | 15 - samples/validate/mondrian.ico | Bin 766 -> 0 bytes samples/validate/mondrian.xpm | 44 - samples/validate/validate.cpp | 105 - samples/validate/validate.def | 9 - samples/validate/validate.h | 55 - samples/validate/validate.rc | 3 - samples/wxpoem/.cvsignore | 4 - samples/wxpoem/Makefile | 1 - samples/wxpoem/Makefile.in | 26 - samples/wxpoem/corner1.ico | Bin 766 -> 0 bytes samples/wxpoem/corner1.xpm | 42 - samples/wxpoem/corner2.ico | Bin 766 -> 0 bytes samples/wxpoem/corner2.xpm | 42 - samples/wxpoem/corner3.ico | Bin 766 -> 0 bytes samples/wxpoem/corner3.xpm | 42 - samples/wxpoem/corner4.ico | Bin 766 -> 0 bytes samples/wxpoem/corner4.xpm | 42 - samples/wxpoem/makefile.b32 | 16 - samples/wxpoem/makefile.bcc | 19 - samples/wxpoem/makefile.dos | 17 - samples/wxpoem/makefile.g95 | 37 - samples/wxpoem/makefile.unx | 17 - samples/wxpoem/makefile.vc | 18 - samples/wxpoem/makefile.wat | 15 - samples/wxpoem/wxpoem.cpp | 1145 -- samples/wxpoem/wxpoem.dat | 2532 ---- samples/wxpoem/wxpoem.def | 9 - samples/wxpoem/wxpoem.h | 91 - samples/wxpoem/wxpoem.ico | Bin 766 -> 0 bytes samples/wxpoem/wxpoem.rc | 11 - samples/wxpoem/wxpoem.txt | 121 - samples/wxpoem/wxpoem.xpm | 47 - samples/wxsocket/.cvsignore | 3 - samples/wxsocket/Makefile | 1 - samples/wxsocket/Makefile.in | 28 - samples/wxsocket/client.cpp | 282 - samples/wxsocket/client.def | 8 - samples/wxsocket/client.rc | 3 - samples/wxsocket/client.vc | 18 - samples/wxsocket/client.wat | 15 - samples/wxsocket/connect.ico | Bin 766 -> 0 bytes samples/wxsocket/makefile.b32 | 82 - samples/wxsocket/makefile.g95 | 46 - samples/wxsocket/mondrian.ico | Bin 766 -> 0 bytes samples/wxsocket/mondrian.xpm | 44 - samples/wxsocket/server.cpp | 189 - samples/wxsocket/server.def | 8 - samples/wxsocket/server.rc | 4 - samples/wxsocket/server.vc | 18 - samples/wxsocket/server.wat | 15 - setup/.cvsignore | 5 - setup/general/createall | 106 - setup/general/jointar | 67 - setup/general/makeapp | 73 - setup/general/makedirs | 19 - setup/general/makedoc | 102 - setup/general/mygrep | 3 - setup/general/needed | 10 - setup/maketmpl.in | 118 - setup/rules/bin | 13 - setup/rules/bin2 | 14 - setup/rules/doc | 90 - setup/rules/gbin | 14 - setup/rules/gbin2 | 14 - setup/rules/generic/bin1 | 8 - setup/rules/generic/bin1gen | 16 - setup/rules/generic/bin2 | 9 - setup/rules/generic/bin2gen | 16 - setup/rules/generic/depend | 18 - setup/rules/generic/globals | 15 - setup/rules/generic/lib | 17 - setup/rules/generic/needed | 24 - setup/rules/generic/obj | 30 - setup/rules/generic/slib | 21 - setup/rules/generic/sobj | 42 - setup/rules/glib | 15 - setup/rules/glibbin | 17 - setup/rules/glibgbin | 18 - setup/rules/gslib | 15 - setup/rules/lib | 14 - setup/rules/libbin | 17 - setup/rules/libgbin | 17 - setup/setup.hin | 550 - setup/shared/sharedAIX | 26 - setup/shared/sharedBsd | 33 - setup/shared/sharedDgux | 29 - setup/shared/sharedHpux | 29 - setup/shared/sharedIrix | 45 - setup/shared/sharedLinux | 34 - setup/shared/sharedOSF | 33 - setup/shared/sharedSolaris2 | 33 - setup/shared/sharedSunos4 | 33 - setup/shared/sharedSysV | 29 - setup/substit.in | 50 - src/.cvsignore | 3 - src/Makefile | 1 - src/Makefile.in | 234 - src/common/cmndata.cpp | 477 - src/common/config.cpp | 419 - src/common/cwlex_yy.c | 1214 -- src/common/cwy_tab.c | 528 - src/common/date.cpp | 656 - src/common/datstrm.cpp | 202 - src/common/db.cpp | 1485 -- src/common/dbtable.cpp | 1553 --- src/common/docmdi.cpp | 166 - src/common/docview.cpp | 1952 --- src/common/doslex.c | 1226 -- src/common/dosyacc.c | 523 - src/common/dynarray.cpp | 288 - src/common/dynlib.cpp | 237 - src/common/event.cpp | 485 - src/common/extended.c | 188 - src/common/file.cpp | 536 - src/common/fileconf.cpp | 1441 -- src/common/filefn.cpp | 1705 --- src/common/framecmn.cpp | 68 - src/common/ftp.cpp | 392 - src/common/gdicmn.cpp | 656 - src/common/glob.inc | 361 - src/common/hash.cpp | 357 - src/common/helpbase.cpp | 35 - src/common/http.cpp | 259 - src/common/image.cpp | 2279 --- src/common/intl.cpp | 607 - src/common/ipcbase.cpp | 35 - src/common/layout.cpp | 1727 --- src/common/lexer.l | 196 - src/common/list.cpp | 637 - src/common/log.cpp | 1025 -- src/common/matrix.cpp | 267 - src/common/memory.cpp | 1199 -- src/common/mimetype.cpp | 1234 -- src/common/module.cpp | 101 - src/common/mstream.cpp | 60 - src/common/object.cpp | 373 - src/common/objstrm.cpp | 330 - src/common/odbc.cpp | 1838 --- src/common/parser.y | 172 - src/common/prntbase.cpp | 755 - src/common/process.cpp | 57 - src/common/protocol.cpp | 139 - src/common/resourc2.cpp | 1577 --- src/common/resource.cpp | 2926 ---- src/common/sckaddr.cpp | 419 - src/common/sckfile.cpp | 46 - src/common/sckipc.cpp | 518 - src/common/sckstrm.cpp | 78 - src/common/serbase.cpp | 124 - src/common/socket.cpp | 1887 --- src/common/stream.cpp | 836 -- src/common/string.cpp | 1455 -- src/common/tbarbase.cpp | 741 - src/common/tbarsmpl.cpp | 453 - src/common/textfile.cpp | 257 - src/common/time.cpp | 428 - src/common/timercmn.cpp | 224 - src/common/tokenzr.cpp | 114 - src/common/url.cpp | 315 - src/common/utilscmn.cpp | 851 -- src/common/validate.cpp | 44 - src/common/valtext.cpp | 321 - src/common/variant.cpp | 1785 --- src/common/wfstream.cpp | 144 - src/common/wincmn.cpp | 90 - src/common/wxexpr.cpp | 1266 -- src/common/zstream.cpp | 191 - src/cygnus.bat | 10 - src/generic/choicdgg.cpp | 360 - src/generic/colrdlgg.cpp | 487 - src/generic/dcpsg.cpp | 2431 ---- src/generic/dirdlgg.cpp | 502 - src/generic/fontdlgg.cpp | 456 - src/generic/gridg.cpp | 2564 ---- src/generic/helpext.cpp | 84 - src/generic/helphtml.cpp | 275 - src/generic/helpxlp.cpp | 265 - src/generic/imaglist.cpp | 147 - src/generic/laywin.cpp | 234 - src/generic/listctrl.cpp | 2816 ---- src/generic/msgdlgg.cpp | 181 - src/generic/notebook.cpp | 650 - src/generic/panelg.cpp | 146 - src/generic/printps.cpp | 272 - src/generic/prntdlgg.cpp | 640 - src/generic/prop.cpp | 1147 -- src/generic/propform.cpp | 743 - src/generic/proplist.cpp | 1952 --- src/generic/sashwin.cpp | 610 - src/generic/scrolwin.cpp | 460 - src/generic/splitter.cpp | 695 - src/generic/statusbr.cpp | 343 - src/generic/tabg.cpp | 1277 -- src/generic/textdlgg.cpp | 161 - src/generic/treectrl.cpp | 1554 --- src/gtk.inc | 153 - src/gtk/accel.cpp | 96 - src/gtk/app.cpp | 566 - src/gtk/bdiag.xbm | 6 - src/gtk/bitmap.cpp | 369 - src/gtk/bmpbuttn.cpp | 294 - src/gtk/brush.cpp | 180 - src/gtk/button.cpp | 131 - src/gtk/cdiag.xbm | 6 - src/gtk/checkbox.cpp | 145 - src/gtk/checklst.cpp | 93 - src/gtk/choice.cpp | 377 - src/gtk/clipbrd.cpp | 528 - src/gtk/colour.cpp | 214 - src/gtk/combobox.cpp | 557 - src/gtk/control.cpp | 59 - src/gtk/cross.xbm | 6 - src/gtk/cursor.cpp | 157 - src/gtk/data.cpp | 170 - src/gtk/dataobj.cpp | 467 - src/gtk/dc.cpp | 377 - src/gtk/dcclient.cpp | 1260 -- src/gtk/dcmemory.cpp | 83 - src/gtk/dcscreen.cpp | 345 - src/gtk/dialog.cpp | 475 - src/gtk/dnd.cpp | 1163 -- src/gtk/fdiag.xbm | 6 - src/gtk/filedlg.cpp | 170 - src/gtk/font.cpp | 1012 -- src/gtk/frame.cpp | 660 - src/gtk/gauge.cpp | 82 - src/gtk/gdiobj.cpp | 19 - src/gtk/horiz.xbm | 6 - src/gtk/icon.cpp | 47 - src/gtk/joystick.cpp | 358 - src/gtk/listbox.cpp | 779 -- src/gtk/main.cpp | 29 - src/gtk/makefile.unx | 218 - src/gtk/mdi.cpp | 378 - src/gtk/menu.cpp | 595 - src/gtk/minifram.cpp | 156 - src/gtk/notebook.cpp | 661 - src/gtk/palette.cpp | 119 - src/gtk/pen.cpp | 192 - src/gtk/radiobox.cpp | 505 - src/gtk/radiobut.cpp | 147 - src/gtk/region.cpp | 440 - src/gtk/scrolbar.cpp | 298 - src/gtk/settings.cpp | 195 - src/gtk/slider.cpp | 257 - src/gtk/spinbutt.cpp | 201 - src/gtk/statbmp.cpp | 84 - src/gtk/statbox.cpp | 76 - src/gtk/stattext.cpp | 101 - src/gtk/tbargtk.cpp | 475 - src/gtk/textctrl.cpp | 801 -- src/gtk/threadgui.inc | 80 - src/gtk/threadno.cpp | 186 - src/gtk/threadpsx.cpp | 743 - src/gtk/threadsgi.cpp | 269 - src/gtk/timer.cpp | 117 - src/gtk/tooltip.cpp | 84 - src/gtk/treectrl.cpp | 938 -- src/gtk/utilsgtk.cpp | 383 - src/gtk/utilsres.cpp | 353 - src/gtk/verti.xbm | 6 - src/gtk/wave.cpp | 224 - src/gtk/win_gtk.c | 541 - src/gtk/window.cpp | 3526 ----- src/gtk1/accel.cpp | 96 - src/gtk1/app.cpp | 566 - src/gtk1/bdiag.xbm | 6 - src/gtk1/bitmap.cpp | 369 - src/gtk1/bmpbuttn.cpp | 294 - src/gtk1/brush.cpp | 180 - src/gtk1/button.cpp | 131 - src/gtk1/cdiag.xbm | 6 - src/gtk1/checkbox.cpp | 145 - src/gtk1/checklst.cpp | 93 - src/gtk1/choice.cpp | 377 - src/gtk1/clipbrd.cpp | 528 - src/gtk1/colour.cpp | 214 - src/gtk1/combobox.cpp | 557 - src/gtk1/control.cpp | 59 - src/gtk1/cross.xbm | 6 - src/gtk1/cursor.cpp | 157 - src/gtk1/data.cpp | 170 - src/gtk1/dataobj.cpp | 467 - src/gtk1/dc.cpp | 377 - src/gtk1/dcclient.cpp | 1260 -- src/gtk1/dcmemory.cpp | 83 - src/gtk1/dcscreen.cpp | 345 - src/gtk1/dialog.cpp | 475 - src/gtk1/dnd.cpp | 1163 -- src/gtk1/fdiag.xbm | 6 - src/gtk1/filedlg.cpp | 170 - src/gtk1/font.cpp | 1012 -- src/gtk1/frame.cpp | 660 - src/gtk1/gauge.cpp | 82 - src/gtk1/gdiobj.cpp | 19 - src/gtk1/horiz.xbm | 6 - src/gtk1/icon.cpp | 47 - src/gtk1/joystick.cpp | 358 - src/gtk1/listbox.cpp | 779 -- src/gtk1/main.cpp | 29 - src/gtk1/makefile.unx | 218 - src/gtk1/mdi.cpp | 378 - src/gtk1/menu.cpp | 595 - src/gtk1/minifram.cpp | 156 - src/gtk1/notebook.cpp | 661 - src/gtk1/palette.cpp | 119 - src/gtk1/pen.cpp | 192 - src/gtk1/radiobox.cpp | 505 - src/gtk1/radiobut.cpp | 147 - src/gtk1/region.cpp | 440 - src/gtk1/scrolbar.cpp | 298 - src/gtk1/settings.cpp | 195 - src/gtk1/slider.cpp | 257 - src/gtk1/spinbutt.cpp | 201 - src/gtk1/statbmp.cpp | 84 - src/gtk1/statbox.cpp | 76 - src/gtk1/stattext.cpp | 101 - src/gtk1/tbargtk.cpp | 475 - src/gtk1/textctrl.cpp | 801 -- src/gtk1/threadgui.inc | 80 - src/gtk1/threadno.cpp | 186 - src/gtk1/threadpsx.cpp | 743 - src/gtk1/threadsgi.cpp | 269 - src/gtk1/timer.cpp | 117 - src/gtk1/tooltip.cpp | 84 - src/gtk1/treectrl.cpp | 938 -- src/gtk1/utilsgtk.cpp | 383 - src/gtk1/utilsres.cpp | 353 - src/gtk1/verti.xbm | 6 - src/gtk1/wave.cpp | 224 - src/gtk1/win_gtk.c | 541 - src/gtk1/window.cpp | 3526 ----- src/iodbc/AUTHORS | 4 - src/iodbc/COPYING | 482 - src/iodbc/Changes.log | 67 - src/iodbc/IAFA-PACKAGE | 40 - src/iodbc/INSTALL | 182 - src/iodbc/NEWS | 8 - src/iodbc/README | 187 - src/iodbc/autoconfig | 230 - src/iodbc/catalog.c | 987 -- src/iodbc/config.h | 93 - src/iodbc/connect.c | 1246 -- src/iodbc/dlf.c | 612 - src/iodbc/dlf.h | 55 - src/iodbc/dlproc.c | 120 - src/iodbc/dlproc.h | 55 - src/iodbc/execute.c | 768 - src/iodbc/fetch.c | 649 - src/iodbc/hdbc.c | 813 -- src/iodbc/hdbc.h | 93 - src/iodbc/henv.c | 89 - src/iodbc/henv.ci | 117 - src/iodbc/henv.h | 160 - src/iodbc/herr.c | 378 - src/iodbc/herr.ci | 124 - src/iodbc/herr.h | 153 - src/iodbc/hstmt.c | 600 - src/iodbc/hstmt.h | 75 - src/iodbc/info.c | 517 - src/iodbc/iodbc.h | 66 - src/iodbc/isql.h | 228 - src/iodbc/isqlext.h | 1177 -- src/iodbc/itrace.c | 117 - src/iodbc/itrace.h | 124 - src/iodbc/misc.c | 413 - src/iodbc/prepare.c | 525 - src/iodbc/result.c | 523 - src/iodbc/shrsub.exp | 64 - src/mac/accel.cpp | 93 - src/mac/app.cpp | 391 - src/mac/bitmap.cpp | 430 - src/mac/bmpbuttn.cpp | 65 - src/mac/brush.cpp | 140 - src/mac/button.cpp | 75 - src/mac/carbon/accel.cpp | 93 - src/mac/carbon/app.cpp | 391 - src/mac/carbon/bitmap.cpp | 430 - src/mac/carbon/bmpbuttn.cpp | 65 - src/mac/carbon/brush.cpp | 140 - src/mac/carbon/button.cpp | 75 - src/mac/carbon/checkbox.cpp | 117 - src/mac/carbon/checklst.cpp | 74 - src/mac/carbon/choice.cpp | 119 - src/mac/carbon/clipbrd.cpp | 237 - src/mac/carbon/colordlg.cpp | 53 - src/mac/carbon/colour.cpp | 103 - src/mac/carbon/combobox.cpp | 165 - src/mac/carbon/control.cpp | 95 - src/mac/carbon/cursor.cpp | 187 - src/mac/carbon/data.cpp | 151 - src/mac/carbon/dc.cpp | 385 - src/mac/carbon/dcclient.cpp | 635 - src/mac/carbon/dcmemory.cpp | 64 - src/mac/carbon/dcscreen.cpp | 32 - src/mac/carbon/dialog.cpp | 287 - src/mac/carbon/dirdlg.cpp | 42 - src/mac/carbon/dnd.cpp | 133 - src/mac/carbon/filedlg.cpp | 143 - src/mac/carbon/font.cpp | 244 - src/mac/carbon/fontdlg.cpp | 55 - src/mac/carbon/frame.cpp | 571 - src/mac/carbon/gauge.cpp | 95 - src/mac/carbon/gdiobj.cpp | 22 - src/mac/carbon/helpxxxx.cpp | 83 - src/mac/carbon/icon.cpp | 70 - src/mac/carbon/imaglist.cpp | 118 - src/mac/carbon/joystick.cpp | 279 - src/mac/carbon/listbox.cpp | 235 - src/mac/carbon/listctrl.cpp | 596 - src/mac/carbon/main.cpp | 18 - src/mac/carbon/makefile.nt | 955 -- src/mac/carbon/makefile.unx | 200 - src/mac/carbon/mdi.cpp | 265 - src/mac/carbon/menu.cpp | 571 - src/mac/carbon/menuitem.cpp | 96 - src/mac/carbon/metafile.cpp | 239 - src/mac/carbon/minifram.cpp | 22 - src/mac/carbon/msgdlg.cpp | 36 - src/mac/carbon/notebook.cpp | 377 - src/mac/carbon/palette.cpp | 82 - src/mac/carbon/pen.cpp | 202 - src/mac/carbon/print.cpp | 82 - src/mac/carbon/printdlg.cpp | 115 - src/mac/carbon/radiobox.cpp | 194 - src/mac/carbon/radiobut.cpp | 68 - src/mac/carbon/region.cpp | 363 - src/mac/carbon/scrolbar.cpp | 78 - src/mac/carbon/settings.cpp | 176 - src/mac/carbon/slider.cpp | 190 - src/mac/carbon/spinbutt.cpp | 78 - src/mac/carbon/statbmp.cpp | 59 - src/mac/carbon/statbox.cpp | 62 - src/mac/carbon/stattext.cpp | 60 - src/mac/carbon/statusbr.cpp | 162 - src/mac/carbon/tabctrl.cpp | 201 - src/mac/carbon/taskbar.cpp | 70 - src/mac/carbon/textctrl.cpp | 447 - src/mac/carbon/thread.cpp | 261 - src/mac/carbon/timer.cpp | 52 - src/mac/carbon/toolbar.cpp | 145 - src/mac/carbon/treectrl.cpp | 418 - src/mac/carbon/utils.cpp | 272 - src/mac/carbon/utilsexc.cpp | 28 - src/mac/carbon/wave.cpp | 61 - src/mac/carbon/window.cpp | 1292 -- src/mac/checkbox.cpp | 117 - src/mac/checklst.cpp | 74 - src/mac/choice.cpp | 119 - src/mac/clipbrd.cpp | 237 - src/mac/colordlg.cpp | 53 - src/mac/colour.cpp | 103 - src/mac/combobox.cpp | 165 - src/mac/control.cpp | 95 - src/mac/cursor.cpp | 187 - src/mac/data.cpp | 151 - src/mac/dc.cpp | 385 - src/mac/dcclient.cpp | 635 - src/mac/dcmemory.cpp | 64 - src/mac/dcscreen.cpp | 32 - src/mac/dialog.cpp | 287 - src/mac/dirdlg.cpp | 42 - src/mac/dnd.cpp | 133 - src/mac/filedlg.cpp | 143 - src/mac/font.cpp | 244 - src/mac/fontdlg.cpp | 55 - src/mac/frame.cpp | 571 - src/mac/gauge.cpp | 95 - src/mac/gdiobj.cpp | 22 - src/mac/helpxxxx.cpp | 83 - src/mac/icon.cpp | 70 - src/mac/imaglist.cpp | 118 - src/mac/joystick.cpp | 279 - src/mac/listbox.cpp | 235 - src/mac/listctrl.cpp | 596 - src/mac/macsock/sock_PPC.lib | 1 - src/mac/main.cpp | 18 - src/mac/makefile.nt | 955 -- src/mac/makefile.unx | 200 - src/mac/mdi.cpp | 265 - src/mac/menu.cpp | 571 - src/mac/menuitem.cpp | 96 - src/mac/metafile.cpp | 239 - src/mac/minifram.cpp | 22 - src/mac/msgdlg.cpp | 36 - src/mac/notebook.cpp | 377 - src/mac/palette.cpp | 82 - src/mac/pen.cpp | 202 - src/mac/print.cpp | 82 - src/mac/printdlg.cpp | 115 - src/mac/radiobox.cpp | 194 - src/mac/radiobut.cpp | 68 - src/mac/region.cpp | 363 - src/mac/scrolbar.cpp | 78 - src/mac/settings.cpp | 176 - src/mac/slider.cpp | 190 - src/mac/spinbutt.cpp | 78 - src/mac/statbmp.cpp | 59 - src/mac/statbox.cpp | 62 - src/mac/stattext.cpp | 60 - src/mac/statusbr.cpp | 162 - src/mac/tabctrl.cpp | 201 - src/mac/taskbar.cpp | 70 - src/mac/textctrl.cpp | 447 - src/mac/thread.cpp | 261 - src/mac/timer.cpp | 52 - src/mac/toolbar.cpp | 145 - src/mac/treectrl.cpp | 418 - src/mac/utils.cpp | 272 - src/mac/utilsexc.cpp | 28 - src/mac/wave.cpp | 61 - src/mac/window.cpp | 1292 -- src/make.env | 117 - src/make_cw.mcp | Bin 238664 -> 0 bytes src/makeb32.env | 67 - src/makebcc.env | 35 - src/makeenvs/linux.env | 117 - src/makeenvs/sgi.env | 116 - src/makeenvs/solaris.env | 117 - src/makefile.bcc | 97 - src/makefile.dos | 51 - src/makefile.vc | 35 - src/makeg95.env | 165 - src/makelib.env | 14 - src/makelib.vc | 42 - src/makemsc.env | 71 - src/makeprog.b32 | 54 - src/makeprog.bcc | 32 - src/makeprog.env | 13 - src/makeprog.msc | 58 - src/makeprog.sl | 28 - src/makeprog.vc | 49 - src/makeprog.wat | 39 - src/makesc.env | 41 - src/makesl.env | 53 - src/maketwin.env | 160 - src/makevc.env | 172 - src/makewat.env | 90 - src/mingegcs.bat | 13 - src/mingw32.bat | 16 - src/motif.inc | 162 - src/motif/accel.cpp | 118 - src/motif/app.cpp | 608 - src/motif/bdiag.xbm | 6 - src/motif/bitmap.cpp | 1030 -- src/motif/bmpbuttn.cpp | 254 - src/motif/brush.cpp | 135 - src/motif/button.cpp | 154 - src/motif/cdiag.xbm | 6 - src/motif/checkbox.cpp | 186 - src/motif/checklst.cpp | 74 - src/motif/choice.cpp | 479 - src/motif/clipbrd.cpp | 527 - src/motif/colordlg.cpp | 53 - src/motif/colour.cpp | 210 - src/motif/combobox.cpp | 334 - src/motif/control.cpp | 130 - src/motif/cross.xbm | 6 - src/motif/cursor.cpp | 436 - src/motif/data.cpp | 148 - src/motif/dataobj.cpp | 69 - src/motif/dc.cpp | 412 - src/motif/dcclient.cpp | 2331 ---- src/motif/dcmemory.cpp | 148 - src/motif/dcscreen.cpp | 127 - src/motif/dialog.cpp | 737 - src/motif/dirdlg.cpp | 42 - src/motif/dnd.cpp | 222 - src/motif/fdiag.xbm | 6 - src/motif/filedlg.cpp | 308 - src/motif/font.cpp | 379 - src/motif/fontdlg.cpp | 55 - src/motif/frame.cpp | 1118 -- src/motif/gauge.cpp | 778 -- src/motif/gdiobj.cpp | 20 - src/motif/helpxxxx.cpp | 83 - src/motif/horiz.xbm | 6 - src/motif/icon.cpp | 73 - src/motif/joystick.cpp | 279 - src/motif/listbox.cpp | 799 -- src/motif/main.cpp | 18 - src/motif/makefile.unx | 232 - src/motif/mdi.cpp | 647 - src/motif/mdi/COPYRIGHT | 28 - src/motif/mdi/Imakefile | 9 - src/motif/mdi/README | 221 - src/motif/mdi/config/C++.rules | 9 - src/motif/mdi/config/MDI.tmpl | 52 - src/motif/mdi/doc/canvas.html | 140 - src/motif/mdi/doc/mdi.html | 182 - src/motif/mdi/doc/mwindow.html | 277 - src/motif/mdi/doc/pics/classes.gif | Bin 4051 -> 0 bytes src/motif/mdi/doc/pics/mdi.gif | Bin 13227 -> 0 bytes src/motif/mdi/doc/pics/winclass.gif | Bin 4652 -> 0 bytes src/motif/mdi/lib/Imakefile | 21 - src/motif/mdi/lib/XsComponent.C | 201 - src/motif/mdi/lib/XsComponent.h | 95 - src/motif/mdi/lib/XsMDICanvas.C | 298 - src/motif/mdi/lib/XsMDICanvas.h | 98 - src/motif/mdi/lib/XsMDIWindow.C | 156 - src/motif/mdi/lib/XsMDIWindow.h | 89 - src/motif/mdi/lib/XsMotifWindow.C | 3386 ----- src/motif/mdi/lib/XsMotifWindow.h | 665 - src/motif/mdi/lib/XsMoveOutline.C | 82 - src/motif/mdi/lib/XsMoveOutline.h | 52 - src/motif/mdi/lib/XsOutline.C | 241 - src/motif/mdi/lib/XsOutline.h | 109 - src/motif/mdi/lib/XsResizeOutline.C | 231 - src/motif/mdi/lib/XsResizeOutline.h | 70 - src/motif/mdi/lib/xs_motif_icon.xbm | 27 - src/motif/mdi/test/Imakefile | 25 - src/motif/mdi/test/MDItest.C | 391 - src/motif/menu.cpp | 1131 -- src/motif/menuitem.cpp | 363 - src/motif/metafile.cpp | 239 - src/motif/minifram.cpp | 22 - src/motif/msgdlg.cpp | 36 - src/motif/palette.cpp | 353 - src/motif/pen.cpp | 194 - src/motif/printdlg.cpp | 115 - src/motif/radiobox.cpp | 494 - src/motif/radiobut.cpp | 153 - src/motif/region.cpp | 399 - src/motif/scrolbar.cpp | 242 - src/motif/settings.cpp | 227 - src/motif/slider.cpp | 293 - src/motif/spinbutt.cpp | 93 - src/motif/statbmp.cpp | 137 - src/motif/statbox.cpp | 221 - src/motif/stattext.cpp | 96 - src/motif/tabctrl.cpp | 201 - src/motif/taskbar.cpp | 70 - src/motif/textctrl.cpp | 898 -- src/motif/thread.cpp | 447 - src/motif/timer.cpp | 92 - src/motif/toolbar.cpp | 786 -- src/motif/utils.cpp | 1282 -- src/motif/utilsexc.cpp | 217 - src/motif/verti.xbm | 6 - src/motif/wave.cpp | 61 - src/motif/window.cpp | 3517 ----- src/motif/wxwin.xbm | 46 - src/motif/xmcombo/combobox.doc | 220 - src/motif/xmcombo/combobox.man | 1386 -- src/motif/xmcombo/combop.h | 131 - src/motif/xmcombo/copying.txt | 339 - src/motif/xmcombo/demo.c | 214 - src/motif/xmcombo/xmcombo.c | 3543 ----- src/motif/xmcombo/xmcombo.h | 223 - src/msw/accel.cpp | 160 - src/msw/app.cpp | 1157 -- src/msw/bitmap.cpp | 779 -- src/msw/bmpbuttn.cpp | 269 - src/msw/brush.cpp | 239 - src/msw/button.cpp | 201 - src/msw/checkbox.cpp | 315 - src/msw/checklst.cpp | 317 - src/msw/choice.cpp | 351 - src/msw/clipbrd.cpp | 510 - src/msw/colordlg.cpp | 126 - src/msw/colour.cpp | 111 - src/msw/combobox.cpp | 327 - src/msw/control.cpp | 335 - src/msw/ctl3d/borland/makefile.b32 | 25 - src/msw/ctl3d/borland/makefile.bcc | 25 - src/msw/ctl3d/ctl3d.dll | Bin 255 -> 0 bytes src/msw/ctl3d/ctl3d32.dll | Bin 6510 -> 0 bytes src/msw/ctl3d/ctl3dv2.dll | Bin 255 -> 0 bytes src/msw/ctl3d/msvc/ctl3d.h | 61 - src/msw/ctl3d/msvc/ctl3d.lib | Bin 338 -> 0 bytes src/msw/ctl3d/msvc/ctl3dv2.lib | Bin 1557 -> 0 bytes src/msw/ctl3d/readme.txt | 31 - src/msw/ctl3d/wat32/import32.zip | Bin 567 -> 0 bytes src/msw/ctl3d/wat386/ctl3d.h | 61 - src/msw/ctl3d/wat386/ctl3d32.c | 285 - src/msw/ctl3d/wat386/ctl3d32.lnk | 1 - src/msw/ctl3d/wat386/ctl3d32.obj | Bin 1597 -> 0 bytes src/msw/ctl3d/wat386/ctl3d32.txt | 11 - src/msw/ctl3d/wat386/makefile.wat | 23 - src/msw/curico.cpp | 901 -- src/msw/cursor.cpp | 274 - src/msw/data.cpp | 781 -- src/msw/dc.cpp | 1720 --- src/msw/dcclient.cpp | 145 - src/msw/dcmemory.cpp | 129 - src/msw/dcprint.cpp | 206 - src/msw/dcscreen.cpp | 48 - src/msw/dde.cpp | 803 -- src/msw/dialog.cpp | 622 - src/msw/dib.cpp | 941 -- src/msw/dibutils.cpp | 697 - src/msw/dirdlg.cpp | 131 - src/msw/dummy.cpp | 68 - src/msw/dummydll.cpp | 25 - src/msw/filedlg.cpp | 378 - src/msw/font.cpp | 382 - src/msw/fontdlg.cpp | 281 - src/msw/frame.cpp | 1063 -- src/msw/gauge95.cpp | 181 - src/msw/gaugemsw.cpp | 1175 -- src/msw/gdiobj.cpp | 68 - src/msw/helpwin.cpp | 148 - src/msw/icon.cpp | 189 - src/msw/imaglist.cpp | 230 - src/msw/iniconf.cpp | 481 - src/msw/joystick.cpp | 544 - src/msw/listbox.cpp | 826 -- src/msw/listctrl.cpp | 1450 -- src/msw/main.cpp | 102 - src/msw/makefile.b32 | 721 - src/msw/makefile.bcc | 736 - src/msw/makefile.dos | 1081 -- src/msw/makefile.g95 | 320 - src/msw/makefile.sc | 252 - src/msw/makefile.sl | 900 -- src/msw/makefile.twn | 315 - src/msw/makefile.vc | 1606 --- src/msw/makefile.wat | 911 -- src/msw/mdi.cpp | 1213 -- src/msw/menu.cpp | 947 -- src/msw/menuitem.cpp | 157 - src/msw/metafile.cpp | 415 - src/msw/minifram.cpp | 1604 --- src/msw/msgdlg.cpp | 105 - src/msw/nativdlg.cpp | 293 - src/msw/notebook.cpp | 525 - src/msw/ole/automtn.cpp | 1119 -- src/msw/ole/dataobj.cpp | 421 - src/msw/ole/dropsrc.cpp | 234 - src/msw/ole/droptgt.cpp | 419 - src/msw/ole/oleutils.cpp | 190 - src/msw/ole/uuid.cpp | 152 - src/msw/ownerdrw.cpp | 240 - src/msw/palette.cpp | 137 - src/msw/pen.cpp | 419 - src/msw/penwin.cpp | 120 - src/msw/pnghand.cpp | 788 -- src/msw/printdlg.cpp | 184 - src/msw/printwin.cpp | 361 - src/msw/radiobox.cpp | 769 - src/msw/radiobut.cpp | 266 - src/msw/regconf.cpp | 544 - src/msw/region.cpp | 427 - src/msw/registry.cpp | 823 -- src/msw/salford.lnk | 152 - src/msw/scrolbar.cpp | 351 - src/msw/settings.cpp | 167 - src/msw/slider95.cpp | 644 - src/msw/slidrmsw.cpp | 584 - src/msw/spinbutt.cpp | 270 - src/msw/statbmp.cpp | 200 - src/msw/statbox.cpp | 229 - src/msw/statbr95.cpp | 244 - src/msw/stattext.cpp | 213 - src/msw/tabctrl.cpp | 475 - src/msw/taskbar.cpp | 350 - src/msw/tbar95.cpp | 626 - src/msw/tbarmsw.cpp | 955 -- src/msw/textctrl.cpp | 1136 -- src/msw/thread.cpp | 853 -- src/msw/timer.cpp | 149 - src/msw/treectrl.cpp | 1047 -- src/msw/utils.cpp | 1157 -- src/msw/utilsexc.cpp | 219 - src/msw/wave.cpp | 168 - src/msw/window.cpp | 4899 ------- src/msw/wx.def | 11 - src/msw/wxb32.def | 9 - src/msw/xpmhand.cpp | 182 - src/ntwxwin.mak | 3 - src/png/CHANGES | 288 - src/png/INSTALL | 87 - src/png/README | 194 - src/png/TODO | 22 - src/png/ansi2knr.1 | 36 - src/png/ansi2knr.c | 693 - src/png/example.c | 688 - src/png/libpng.3 | 2409 ---- src/png/libpngpf.3 | 342 - src/png/makefile.bcc | 107 - src/png/makefile.dos | 76 - src/png/makefile.unx | 30 - src/png/makefile.vc | 66 - src/png/makefile.wat | 40 - src/png/png.5 | 44 - src/png/png.c | 304 - src/png/png.h | 2063 --- src/png/pngconf.h | 565 - src/png/pngerror.c | 174 - src/png/pngget.c | 644 - src/png/pngmem.c | 360 - src/png/pngpread.c | 1143 -- src/png/pngread.c | 787 -- src/png/pngrio.c | 145 - src/png/pngrtran.c | 3409 ----- src/png/pngrutil.c | 2245 --- src/png/pngset.c | 380 - src/png/pngtest.c | 1036 -- src/png/pngtrans.c | 577 - src/png/pngwio.c | 207 - src/png/pngwrite.c | 970 -- src/png/pngwtran.c | 495 - src/png/pngwutil.c | 1934 --- src/png/scripts/SCOPTIONS.ppc | 7 - src/png/scripts/build.bat | 2 - src/png/scripts/descrip.mms | 52 - src/png/scripts/makefile.aco | 221 - src/png/scripts/makefile.ama | 42 - src/png/scripts/makefile.atr | 31 - src/png/scripts/makefile.bor | 168 - src/png/scripts/makefile.dec | 68 - src/png/scripts/makefile.dj2 | 52 - src/png/scripts/makefile.knr | 73 - src/png/scripts/makefile.lnx | 99 - src/png/scripts/makefile.mip | 62 - src/png/scripts/makefile.msc | 86 - src/png/scripts/makefile.os2 | 69 - src/png/scripts/makefile.s2x | 104 - src/png/scripts/makefile.sgi | 69 - src/png/scripts/makefile.std | 68 - src/png/scripts/makefile.sun | 72 - src/png/scripts/makefile.tc3 | 82 - src/png/scripts/makefile.wat | 88 - src/png/scripts/makevms.com | 125 - src/png/scripts/pngos2.def | 286 - src/png/scripts/smakefile.ppc | 29 - src/qt.inc | 106 - src/qt/app.cpp | 395 - src/qt/bdiag.xbm | 6 - src/qt/bitmap.cpp | 430 - src/qt/bmpbuttn.cpp | 65 - src/qt/brush.cpp | 162 - src/qt/button.cpp | 75 - src/qt/cdiag.xbm | 6 - src/qt/checkbox.cpp | 117 - src/qt/choice.cpp | 119 - src/qt/colour.cpp | 126 - src/qt/combobox.cpp | 116 - src/qt/control.cpp | 111 - src/qt/cross.xbm | 6 - src/qt/cursor.cpp | 186 - src/qt/data.cpp | 145 - src/qt/dc.cpp | 392 - src/qt/dcclient.cpp | 620 - src/qt/dcmemory.cpp | 68 - src/qt/dcscreen.cpp | 32 - src/qt/dialog.cpp | 294 - src/qt/dnd.cpp | 133 - src/qt/fdiag.xbm | 6 - src/qt/filedlg.cpp | 142 - src/qt/font.cpp | 241 - src/qt/frame.cpp | 546 - src/qt/gauge.cpp | 105 - src/qt/gdiobj.cpp | 22 - src/qt/horiz.xbm | 6 - src/qt/icon.cpp | 70 - src/qt/joystick.cpp | 279 - src/qt/listbox.cpp | 240 - src/qt/mdi.cpp | 263 - src/qt/menu.cpp | 568 - src/qt/notebook.cpp | 371 - src/qt/palette.cpp | 91 - src/qt/pen.cpp | 229 - src/qt/radiobox.cpp | 194 - src/qt/radiobut.cpp | 68 - src/qt/region.cpp | 373 - src/qt/scrolbar.cpp | 78 - src/qt/settings.cpp | 151 - src/qt/slider.cpp | 185 - src/qt/statbmp.cpp | 59 - src/qt/statbox.cpp | 62 - src/qt/stattext.cpp | 211 - src/qt/tbargtk.cpp | 193 - src/qt/textctrl.cpp | 439 - src/qt/threadgui.inc | 65 - src/qt/threadno.cpp | 187 - src/qt/threadpsx.cpp | 396 - src/qt/threadsgi.cpp | 254 - src/qt/timer.cpp | 56 - src/qt/utilsgtk.cpp | 367 - src/qt/utilsres.cpp | 332 - src/qt/verti.xbm | 6 - src/qt/window.cpp | 1281 -- src/stubs.inc | 201 - src/stubs/accel.cpp | 93 - src/stubs/app.cpp | 391 - src/stubs/bitmap.cpp | 430 - src/stubs/bmpbuttn.cpp | 65 - src/stubs/brush.cpp | 140 - src/stubs/button.cpp | 75 - src/stubs/checkbox.cpp | 117 - src/stubs/checklst.cpp | 74 - src/stubs/choice.cpp | 119 - src/stubs/clipbrd.cpp | 237 - src/stubs/colordlg.cpp | 53 - src/stubs/colour.cpp | 103 - src/stubs/combobox.cpp | 165 - src/stubs/control.cpp | 95 - src/stubs/cursor.cpp | 187 - src/stubs/data.cpp | 151 - src/stubs/dc.cpp | 385 - src/stubs/dcclient.cpp | 635 - src/stubs/dcmemory.cpp | 64 - src/stubs/dcscreen.cpp | 32 - src/stubs/dialog.cpp | 287 - src/stubs/dirdlg.cpp | 42 - src/stubs/dnd.cpp | 133 - src/stubs/filedlg.cpp | 138 - src/stubs/font.cpp | 244 - src/stubs/fontdlg.cpp | 55 - src/stubs/frame.cpp | 571 - src/stubs/gauge.cpp | 95 - src/stubs/gdiobj.cpp | 22 - src/stubs/helpxxxx.cpp | 83 - src/stubs/icon.cpp | 70 - src/stubs/imaglist.cpp | 118 - src/stubs/joystick.cpp | 279 - src/stubs/listbox.cpp | 235 - src/stubs/listctrl.cpp | 596 - src/stubs/main.cpp | 18 - src/stubs/makefile.unx | 203 - src/stubs/makefile.vc | 973 -- src/stubs/mdi.cpp | 265 - src/stubs/menu.cpp | 571 - src/stubs/menuitem.cpp | 96 - src/stubs/metafile.cpp | 239 - src/stubs/minifram.cpp | 22 - src/stubs/msgdlg.cpp | 36 - src/stubs/notebook.cpp | 377 - src/stubs/palette.cpp | 82 - src/stubs/pen.cpp | 202 - src/stubs/print.cpp | 82 - src/stubs/printdlg.cpp | 115 - src/stubs/radiobox.cpp | 194 - src/stubs/radiobut.cpp | 68 - src/stubs/region.cpp | 363 - src/stubs/scrolbar.cpp | 78 - src/stubs/settings.cpp | 176 - src/stubs/slider.cpp | 190 - src/stubs/spinbutt.cpp | 78 - src/stubs/statbmp.cpp | 59 - src/stubs/statbox.cpp | 62 - src/stubs/stattext.cpp | 60 - src/stubs/statusbr.cpp | 162 - src/stubs/tabctrl.cpp | 201 - src/stubs/taskbar.cpp | 70 - src/stubs/textctrl.cpp | 438 - src/stubs/thread.cpp | 261 - src/stubs/timer.cpp | 52 - src/stubs/toolbar.cpp | 145 - src/stubs/treectrl.cpp | 418 - src/stubs/utils.cpp | 272 - src/stubs/utilsexc.cpp | 28 - src/stubs/wave.cpp | 61 - src/stubs/window.cpp | 1307 -- src/xpm/changes | 704 - src/xpm/copyrigh.t | 31 - src/xpm/crbuffri.c | 324 - src/xpm/crbuffrp.c | 82 - src/xpm/crdatfri.c | 304 - src/xpm/crdatfrp.c | 83 - src/xpm/create.c | 1461 -- src/xpm/crifrbuf.c | 90 - src/xpm/crifrdat.c | 89 - src/xpm/crpfrbuf.c | 72 - src/xpm/crpfrdat.c | 75 - src/xpm/data.c | 627 - src/xpm/dataxpm.c | 627 - src/xpm/files | 47 - src/xpm/hashtab.c | 224 - src/xpm/makefile.vc | 170 - src/xpm/makefile.wat | 54 - src/xpm/misc.c | 572 - src/xpm/parse.c | 705 - src/xpm/rdftodat.c | 63 - src/xpm/rdftoi.c | 91 - src/xpm/rdftop.c | 72 - src/xpm/readme | 192 - src/xpm/readme.msw | 83 - src/xpm/rgb.c | 282 - src/xpm/rgbtab.h | 292 - src/xpm/scan.c | 843 -- src/xpm/simx.c | 284 - src/xpm/simx.h | 142 - src/xpm/wrffrdat.c | 58 - src/xpm/wrffri.c | 258 - src/xpm/wrffrp.c | 83 - src/xpm/xpm34.h | 555 - src/xpm/xpm34p.h | 304 - src/zlib/ChangeLog | 423 - src/zlib/INDEX | 82 - src/zlib/Make_vms.com | 115 - src/zlib/Makefile.in2 | 160 - src/zlib/Makefile.riscos | 46 - src/zlib/README | 143 - src/zlib/adler32.c | 48 - src/zlib/algorithm.txt | 213 - src/zlib/compress.c | 68 - src/zlib/configure | 163 - src/zlib/crc32.c | 162 - src/zlib/deflate.c | 1348 -- src/zlib/deflate.h | 318 - src/zlib/descrip.mms | 48 - src/zlib/example.c | 550 - src/zlib/gzio.c | 869 -- src/zlib/infblock.c | 405 - src/zlib/infblock.h | 39 - src/zlib/infcodes.c | 250 - src/zlib/infcodes.h | 27 - src/zlib/inffast.c | 170 - src/zlib/inffast.h | 17 - src/zlib/inffixed.h | 125 - src/zlib/inflate.c | 366 - src/zlib/inftrees.c | 455 - src/zlib/inftrees.h | 58 - src/zlib/infutil.c | 87 - src/zlib/infutil.h | 98 - src/zlib/makefile.b32 | 109 - src/zlib/makefile.bcc | 88 - src/zlib/makefile.unx | 30 - src/zlib/makefile.vc | 88 - src/zlib/makefile.wat | 107 - src/zlib/maketree.c | 119 - src/zlib/minigzip.c | 317 - src/zlib/trees.c | 1216 -- src/zlib/trees.h | 128 - src/zlib/uncompr.c | 58 - src/zlib/zconf.h | 252 - src/zlib/zlib.3 | 107 - src/zlib/zlib.h | 888 -- src/zlib/zutil.c | 225 - src/zlib/zutil.h | 221 - template.mak | 35 - user/Makefile | 1 - user/wxConvert/.cvsignore | 2 - user/wxConvert/Makefile | 1 - user/wxConvert/Makefile.in | 26 - user/wxConvert/wxConvert.cpp | 175 - user/wxConvert/wxConvert.h | 71 - user/wxFile/.cvsignore | 2 - user/wxFile/FMJobs.cpp | 326 - user/wxFile/FMJobs.h | 143 - user/wxFile/Makefile | 1 - user/wxFile/Makefile.in | 26 - user/wxFile/commanderview.xpm | 31 - user/wxFile/delete.xpm | 31 - user/wxFile/dirctrl.cpp | 211 - user/wxFile/dirctrl.h | 74 - user/wxFile/exit.xpm | 29 - user/wxFile/filectrl.cpp | 544 - user/wxFile/filectrl.h | 115 - user/wxFile/fileopen.xpm | 30 - user/wxFile/find.xpm | 99 - user/wxFile/folder.xpm | 48 - user/wxFile/help.xpm | 29 - user/wxFile/home.xpm | 28 - user/wxFile/iconview.xpm | 31 - user/wxFile/list.xpm | 45 - user/wxFile/listview.xpm | 30 - user/wxFile/prev.xpm | 29 - user/wxFile/reportview.xpm | 31 - user/wxFile/save.xpm | 30 - user/wxFile/search.xpm | 32 - user/wxFile/singleview.xpm | 30 - user/wxFile/trash.xpm | 44 - user/wxFile/treeview.xpm | 31 - user/wxFile/txt.xpm | 53 - user/wxFile/wxFile.cpp | 355 - user/wxFile/wxFile.h | 85 - user/wxLayout/.cvsignore | 2 - user/wxLayout/Makefile | 1 - user/wxLayout/Makefile.in | 26 - user/wxLayout/Micon.xpm | 309 - user/wxLayout/README | 50 - user/wxLayout/kbList.cpp | 336 - user/wxLayout/kbList.h | 315 - user/wxLayout/wxLayout.cpp | 452 - user/wxLayout/wxLayout.h | 67 - user/wxLayout/wxllist.cpp | 1361 -- user/wxLayout/wxllist.h | 487 - user/wxLayout/wxlparser.cpp | 211 - user/wxLayout/wxlparser.h | 57 - user/wxLayout/wxlwindow.cpp | 370 - user/wxLayout/wxlwindow.h | 126 - user/wxTest/.cvsignore | 2 - user/wxTest/Makefile | 1 - user/wxTest/Makefile.in | 26 - user/wxTest/folder.xpm | 48 - user/wxTest/horse.png | Bin 68850 -> 0 bytes user/wxTest/list.xpm | 45 - user/wxTest/test.xpm | 11638 ---------------- user/wxTest/wxTest.cpp | 581 - user/wxTest/wxTest.h | 164 - utils/HelpGen/Makefile | 739 - utils/HelpGen/include/cjparser.h | 125 - utils/HelpGen/include/docripper.h | 157 - utils/HelpGen/include/ifcontext.h | 100 - utils/HelpGen/include/markup.h | 51 - utils/HelpGen/include/scriptbinder.h | 377 - utils/HelpGen/include/sourcepainter.h | 104 - utils/HelpGen/include/srcparser.h | 734 - utils/HelpGen/include/wxstlac.h | 667 - utils/HelpGen/include/wxstllst.h | 559 - utils/HelpGen/include/wxstlvec.h | 781 -- utils/HelpGen/src/HelpGen.cpp | 693 - utils/HelpGen/src/HelpGen.rc | 3 - utils/HelpGen/src/cjparser.cpp | 2173 --- utils/HelpGen/src/docripper.cpp | 568 - utils/HelpGen/src/ifcontext.cpp | 295 - utils/HelpGen/src/makefile.nt | 66 - utils/HelpGen/src/markup.cpp | 46 - utils/HelpGen/src/ripper_main.cpp | 157 - utils/HelpGen/src/scriptbinder.cpp | 618 - utils/HelpGen/src/sourcepainter.cpp | 676 - utils/HelpGen/src/srcparser.cpp | 543 - utils/HelpGen/src/wx_extra_imps.cpp | 81 - utils/Makefile | 1 - utils/dialoged/docs/alignb.bmp | Bin 238 -> 0 bytes utils/dialoged/docs/alignb.eps | 161 - utils/dialoged/docs/alignb.gif | Bin 132 -> 0 bytes utils/dialoged/docs/alignl.bmp | Bin 238 -> 0 bytes utils/dialoged/docs/alignl.eps | 161 - utils/dialoged/docs/alignl.gif | Bin 124 -> 0 bytes utils/dialoged/docs/alignr.bmp | Bin 238 -> 0 bytes utils/dialoged/docs/alignr.eps | 161 - utils/dialoged/docs/alignr.gif | Bin 126 -> 0 bytes utils/dialoged/docs/alignt.bmp | Bin 238 -> 0 bytes utils/dialoged/docs/alignt.eps | 161 - utils/dialoged/docs/alignt.gif | Bin 131 -> 0 bytes utils/dialoged/docs/arrow.bmp | Bin 566 -> 0 bytes utils/dialoged/docs/arrow.eps | 174 - utils/dialoged/docs/arrow.gif | Bin 193 -> 0 bytes utils/dialoged/docs/back.gif | Bin 225 -> 0 bytes utils/dialoged/docs/bmpbuttn.bmp | Bin 566 -> 0 bytes utils/dialoged/docs/bmpbuttn.eps | 174 - utils/dialoged/docs/bmpbuttn.gif | Bin 216 -> 0 bytes utils/dialoged/docs/body.tex | 200 - utils/dialoged/docs/books.bmp | Bin 1222 -> 0 bytes utils/dialoged/docs/books.gif | Bin 438 -> 0 bytes utils/dialoged/docs/bugs.tex | 17 - utils/dialoged/docs/bullet.bmp | Bin 138 -> 0 bytes utils/dialoged/docs/button.bmp | Bin 566 -> 0 bytes utils/dialoged/docs/button.eps | 174 - utils/dialoged/docs/button.gif | Bin 201 -> 0 bytes utils/dialoged/docs/changes.tex | 71 - utils/dialoged/docs/check.bmp | Bin 566 -> 0 bytes utils/dialoged/docs/check.eps | 174 - utils/dialoged/docs/check.gif | Bin 215 -> 0 bytes utils/dialoged/docs/choice.bmp | Bin 566 -> 0 bytes utils/dialoged/docs/choice.eps | 174 - utils/dialoged/docs/choice.gif | Bin 217 -> 0 bytes utils/dialoged/docs/classes.tex | 5 - utils/dialoged/docs/contents.gif | Bin 231 -> 0 bytes utils/dialoged/docs/copysize.bmp | Bin 238 -> 0 bytes utils/dialoged/docs/copysize.eps | 161 - utils/dialoged/docs/copysize.gif | Bin 132 -> 0 bytes utils/dialoged/docs/dialog.bmp | Bin 566 -> 0 bytes utils/dialoged/docs/dialog.eps | 174 - utils/dialoged/docs/dialog.gif | Bin 233 -> 0 bytes utils/dialoged/docs/dialoged.hpj | 17 - utils/dialoged/docs/dialoged.tex | 48 - utils/dialoged/docs/forward.gif | Bin 164 -> 0 bytes utils/dialoged/docs/gauge.bmp | Bin 566 -> 0 bytes utils/dialoged/docs/gauge.eps | 174 - utils/dialoged/docs/gauge.gif | Bin 212 -> 0 bytes utils/dialoged/docs/group.bmp | Bin 566 -> 0 bytes utils/dialoged/docs/group.eps | 174 - utils/dialoged/docs/group.gif | Bin 212 -> 0 bytes utils/dialoged/docs/help.bmp | Bin 238 -> 0 bytes utils/dialoged/docs/help.eps | 161 - utils/dialoged/docs/help.gif | Bin 129 -> 0 bytes utils/dialoged/docs/horiz.bmp | Bin 238 -> 0 bytes utils/dialoged/docs/horiz.eps | 161 - utils/dialoged/docs/horiz.gif | Bin 126 -> 0 bytes utils/dialoged/docs/listbox.bmp | Bin 566 -> 0 bytes utils/dialoged/docs/listbox.eps | 174 - utils/dialoged/docs/listbox.gif | Bin 213 -> 0 bytes utils/dialoged/docs/load.bmp | Bin 238 -> 0 bytes utils/dialoged/docs/load.eps | 161 - utils/dialoged/docs/load.gif | Bin 139 -> 0 bytes utils/dialoged/docs/message.bmp | Bin 566 -> 0 bytes utils/dialoged/docs/message.eps | 174 - utils/dialoged/docs/message.gif | Bin 208 -> 0 bytes utils/dialoged/docs/mtext.bmp | Bin 566 -> 0 bytes utils/dialoged/docs/mtext.eps | 174 - utils/dialoged/docs/mtext.gif | Bin 229 -> 0 bytes utils/dialoged/docs/new.bmp | Bin 238 -> 0 bytes utils/dialoged/docs/new.eps | 161 - utils/dialoged/docs/new.gif | Bin 131 -> 0 bytes utils/dialoged/docs/notes.txt | 16 - utils/dialoged/docs/open.bmp | Bin 238 -> 0 bytes utils/dialoged/docs/open.eps | 161 - utils/dialoged/docs/open.gif | Bin 137 -> 0 bytes utils/dialoged/docs/picture.bmp | Bin 566 -> 0 bytes utils/dialoged/docs/picture.eps | 176 - utils/dialoged/docs/picture.gif | Bin 224 -> 0 bytes utils/dialoged/docs/radio.bmp | Bin 566 -> 0 bytes utils/dialoged/docs/radio.eps | 174 - utils/dialoged/docs/radio.gif | Bin 215 -> 0 bytes utils/dialoged/docs/readme.txt | 39 - utils/dialoged/docs/save.bmp | Bin 238 -> 0 bytes utils/dialoged/docs/save.eps | 161 - utils/dialoged/docs/save.gif | Bin 137 -> 0 bytes utils/dialoged/docs/scroll.bmp | Bin 566 -> 0 bytes utils/dialoged/docs/scroll.eps | 174 - utils/dialoged/docs/scroll.gif | Bin 212 -> 0 bytes utils/dialoged/docs/slider.bmp | Bin 566 -> 0 bytes utils/dialoged/docs/slider.eps | 174 - utils/dialoged/docs/slider.gif | Bin 204 -> 0 bytes utils/dialoged/docs/tech.tex | 97 - utils/dialoged/docs/tex2rtf.ini | 22 - utils/dialoged/docs/text.bmp | Bin 566 -> 0 bytes utils/dialoged/docs/text.eps | 178 - utils/dialoged/docs/text.gif | Bin 226 -> 0 bytes utils/dialoged/docs/toback.bmp | Bin 238 -> 0 bytes utils/dialoged/docs/toback.eps | 161 - utils/dialoged/docs/toback.gif | Bin 137 -> 0 bytes utils/dialoged/docs/tofront.bmp | Bin 238 -> 0 bytes utils/dialoged/docs/tofront.eps | 161 - utils/dialoged/docs/tofront.gif | Bin 137 -> 0 bytes utils/dialoged/docs/up.gif | Bin 137 -> 0 bytes utils/dialoged/docs/vert.bmp | Bin 238 -> 0 bytes utils/dialoged/docs/vert.eps | 161 - utils/dialoged/docs/vert.gif | Bin 131 -> 0 bytes utils/dialoged/src/.cvsignore | 7 - utils/dialoged/src/Makefile | 51 - utils/dialoged/src/bitmaps/alignb.bmp | Bin 238 -> 0 bytes utils/dialoged/src/bitmaps/alignb.xbm | 9 - utils/dialoged/src/bitmaps/alignb.xpm | 24 - utils/dialoged/src/bitmaps/alignl.bmp | Bin 238 -> 0 bytes utils/dialoged/src/bitmaps/alignl.xbm | 9 - utils/dialoged/src/bitmaps/alignl.xpm | 24 - utils/dialoged/src/bitmaps/alignr.bmp | Bin 238 -> 0 bytes utils/dialoged/src/bitmaps/alignr.xbm | 9 - utils/dialoged/src/bitmaps/alignr.xpm | 24 - utils/dialoged/src/bitmaps/alignt.bmp | Bin 238 -> 0 bytes utils/dialoged/src/bitmaps/alignt.xbm | 9 - utils/dialoged/src/bitmaps/alignt.xpm | 24 - utils/dialoged/src/bitmaps/arrow.bmp | Bin 382 -> 0 bytes utils/dialoged/src/bitmaps/arrow.ico | Bin 1078 -> 0 bytes utils/dialoged/src/bitmaps/arrow.xbm | 13 - utils/dialoged/src/bitmaps/arrow.xpm | 24 - utils/dialoged/src/bitmaps/bmpbuttn.bmp | Bin 382 -> 0 bytes utils/dialoged/src/bitmaps/bmpbuttn.ico | Bin 1078 -> 0 bytes utils/dialoged/src/bitmaps/bmpbuttn.xbm | 11 - utils/dialoged/src/bitmaps/bmpbuttn.xpm | 30 - utils/dialoged/src/bitmaps/button.bmp | Bin 382 -> 0 bytes utils/dialoged/src/bitmaps/button.ico | Bin 1078 -> 0 bytes utils/dialoged/src/bitmaps/button.xbm | 13 - utils/dialoged/src/bitmaps/button.xpm | 26 - utils/dialoged/src/bitmaps/buttonsm.ico | Bin 1078 -> 0 bytes utils/dialoged/src/bitmaps/buttonsm.xpm | 26 - utils/dialoged/src/bitmaps/canvas.xbm | 13 - utils/dialoged/src/bitmaps/check.bmp | Bin 382 -> 0 bytes utils/dialoged/src/bitmaps/check.xbm | 13 - utils/dialoged/src/bitmaps/checkbox.ico | Bin 1078 -> 0 bytes utils/dialoged/src/bitmaps/checkbox.xpm | 27 - utils/dialoged/src/bitmaps/choice.bmp | Bin 382 -> 0 bytes utils/dialoged/src/bitmaps/choice.ico | Bin 1078 -> 0 bytes utils/dialoged/src/bitmaps/choice.xbm | 13 - utils/dialoged/src/bitmaps/choice.xpm | 27 - utils/dialoged/src/bitmaps/combobox.ico | Bin 1078 -> 0 bytes utils/dialoged/src/bitmaps/combobox.xpm | 27 - utils/dialoged/src/bitmaps/copysize.bmp | Bin 238 -> 0 bytes utils/dialoged/src/bitmaps/copysize.xbm | 8 - utils/dialoged/src/bitmaps/copysize.xpm | 24 - utils/dialoged/src/bitmaps/cpp.xbm | 9 - utils/dialoged/src/bitmaps/cross.bmp | Bin 198 -> 0 bytes utils/dialoged/src/bitmaps/dialog.bmp | Bin 566 -> 0 bytes utils/dialoged/src/bitmaps/dialog.ico | Bin 1078 -> 0 bytes utils/dialoged/src/bitmaps/dialog.xbm | 13 - utils/dialoged/src/bitmaps/dialog.xpm | 28 - utils/dialoged/src/bitmaps/dialoged.ico | Bin 766 -> 0 bytes utils/dialoged/src/bitmaps/dialoged.xpm | 44 - utils/dialoged/src/bitmaps/folder1.ico | Bin 1078 -> 0 bytes utils/dialoged/src/bitmaps/folder1.xpm | 28 - utils/dialoged/src/bitmaps/folder2.ico | Bin 1078 -> 0 bytes utils/dialoged/src/bitmaps/folder2.xpm | 28 - utils/dialoged/src/bitmaps/frame.xbm | 13 - utils/dialoged/src/bitmaps/gauge.bmp | Bin 382 -> 0 bytes utils/dialoged/src/bitmaps/gauge.ico | Bin 1078 -> 0 bytes utils/dialoged/src/bitmaps/gauge.xbm | 11 - utils/dialoged/src/bitmaps/gauge.xpm | 27 - utils/dialoged/src/bitmaps/group.bmp | Bin 382 -> 0 bytes utils/dialoged/src/bitmaps/group.xbm | 13 - utils/dialoged/src/bitmaps/help.bmp | Bin 238 -> 0 bytes utils/dialoged/src/bitmaps/help.xbm | 9 - utils/dialoged/src/bitmaps/help.xpm | 24 - utils/dialoged/src/bitmaps/horiz.bmp | Bin 238 -> 0 bytes utils/dialoged/src/bitmaps/horiz.xbm | 9 - utils/dialoged/src/bitmaps/horiz.xpm | 24 - utils/dialoged/src/bitmaps/listbox.bmp | Bin 382 -> 0 bytes utils/dialoged/src/bitmaps/listbox.ico | Bin 1078 -> 0 bytes utils/dialoged/src/bitmaps/listbox.xbm | 13 - utils/dialoged/src/bitmaps/listbox.xpm | 27 - utils/dialoged/src/bitmaps/load.bmp | Bin 238 -> 0 bytes utils/dialoged/src/bitmaps/load.xbm | 9 - utils/dialoged/src/bitmaps/load.xpm | 26 - utils/dialoged/src/bitmaps/message.bmp | Bin 382 -> 0 bytes utils/dialoged/src/bitmaps/message.xbm | 13 - utils/dialoged/src/bitmaps/mtext.bmp | Bin 382 -> 0 bytes utils/dialoged/src/bitmaps/mtext.xbm | 13 - utils/dialoged/src/bitmaps/new.bmp | Bin 238 -> 0 bytes utils/dialoged/src/bitmaps/new.xbm | 8 - utils/dialoged/src/bitmaps/new.xpm | 24 - utils/dialoged/src/bitmaps/open.bmp | Bin 238 -> 0 bytes utils/dialoged/src/bitmaps/panel.xbm | 13 - utils/dialoged/src/bitmaps/picture.bmp | Bin 382 -> 0 bytes utils/dialoged/src/bitmaps/picture.xbm | 11 - utils/dialoged/src/bitmaps/radio.bmp | Bin 382 -> 0 bytes utils/dialoged/src/bitmaps/radio.xbm | 13 - utils/dialoged/src/bitmaps/radiobox.ico | Bin 1078 -> 0 bytes utils/dialoged/src/bitmaps/radiobox.xpm | 27 - utils/dialoged/src/bitmaps/radiobtn.ico | Bin 1078 -> 0 bytes utils/dialoged/src/bitmaps/radiobtn.xpm | 26 - utils/dialoged/src/bitmaps/report.xbm | 9 - utils/dialoged/src/bitmaps/save.bmp | Bin 238 -> 0 bytes utils/dialoged/src/bitmaps/save.xbm | 9 - utils/dialoged/src/bitmaps/save.xpm | 25 - utils/dialoged/src/bitmaps/scrolbar.ico | Bin 1078 -> 0 bytes utils/dialoged/src/bitmaps/scrolbar.xpm | 26 - utils/dialoged/src/bitmaps/scroll.bmp | Bin 382 -> 0 bytes utils/dialoged/src/bitmaps/scroll.xbm | 11 - utils/dialoged/src/bitmaps/slider.bmp | Bin 382 -> 0 bytes utils/dialoged/src/bitmaps/slider.ico | Bin 1078 -> 0 bytes utils/dialoged/src/bitmaps/slider.xbm | 11 - utils/dialoged/src/bitmaps/slider.xpm | 26 - utils/dialoged/src/bitmaps/statbmp.ico | Bin 1078 -> 0 bytes utils/dialoged/src/bitmaps/statbmp.xpm | 30 - utils/dialoged/src/bitmaps/statbox.ico | Bin 1078 -> 0 bytes utils/dialoged/src/bitmaps/statbox.xpm | 26 - utils/dialoged/src/bitmaps/stattext.ico | Bin 1078 -> 0 bytes utils/dialoged/src/bitmaps/stattext.xpm | 24 - utils/dialoged/src/bitmaps/text.bmp | Bin 382 -> 0 bytes utils/dialoged/src/bitmaps/text.xbm | 13 - utils/dialoged/src/bitmaps/textmult.ico | Bin 1078 -> 0 bytes utils/dialoged/src/bitmaps/textmult.xpm | 27 - utils/dialoged/src/bitmaps/textsing.ico | Bin 1078 -> 0 bytes utils/dialoged/src/bitmaps/textsing.xpm | 27 - utils/dialoged/src/bitmaps/textsw.xbm | 13 - utils/dialoged/src/bitmaps/tick.bmp | Bin 198 -> 0 bytes utils/dialoged/src/bitmaps/toback.bmp | Bin 238 -> 0 bytes utils/dialoged/src/bitmaps/toback.xbm | 8 - utils/dialoged/src/bitmaps/toback.xpm | 25 - utils/dialoged/src/bitmaps/tofront.bmp | Bin 238 -> 0 bytes utils/dialoged/src/bitmaps/tofront.xbm | 8 - utils/dialoged/src/bitmaps/tofront.xpm | 25 - utils/dialoged/src/bitmaps/tree.xbm | 9 - utils/dialoged/src/bitmaps/treeicn.xbm | 46 - utils/dialoged/src/bitmaps/vert.bmp | Bin 238 -> 0 bytes utils/dialoged/src/bitmaps/vert.xbm | 9 - utils/dialoged/src/bitmaps/vert.xpm | 24 - utils/dialoged/src/bitmaps/wxbuild.xbm | 46 - utils/dialoged/src/bitmaps/wxwin.bmp | Bin 630 -> 0 bytes utils/dialoged/src/bitmaps/wxwin.xbm | 12 - utils/dialoged/src/bitmaps/wxwin.xpm | 46 - utils/dialoged/src/dialoged.cpp | 58 - utils/dialoged/src/dialoged.def | 8 - utils/dialoged/src/dialoged.h | 37 - utils/dialoged/src/dialoged.ico | Bin 766 -> 0 bytes utils/dialoged/src/dialoged.rc | 64 - utils/dialoged/src/dlghndlr.cpp | 1212 -- utils/dialoged/src/dlghndlr.h | 139 - utils/dialoged/src/edlist.cpp | 167 - utils/dialoged/src/edlist.h | 38 - utils/dialoged/src/edtree.cpp | 92 - utils/dialoged/src/edtree.h | 36 - utils/dialoged/src/makefile.b32 | 20 - utils/dialoged/src/makefile.bcc | 20 - utils/dialoged/src/makefile.dos | 178 - utils/dialoged/src/makefile.g95 | 61 - utils/dialoged/src/makefile.sc | 36 - utils/dialoged/src/makefile.unx | 18 - utils/dialoged/src/makefile.vc | 127 - utils/dialoged/src/makefile.wat | 15 - utils/dialoged/src/reseditr.cpp | 2440 ---- utils/dialoged/src/reseditr.h | 455 - utils/dialoged/src/reswrite.cpp | 601 - utils/dialoged/src/symbtabl.cpp | 333 - utils/dialoged/src/symbtabl.h | 52 - utils/dialoged/src/winprop.cpp | 2558 ---- utils/dialoged/src/winprop.h | 420 - utils/dialoged/src/winstyle.cpp | 382 - utils/dialoged/src/winstyle.h | 77 - utils/glcanvas/distrib/glcanvas.rsp | 40 - utils/glcanvas/distrib/zipsrc.bat | 27 - utils/glcanvas/docs/notes.txt | 5 - utils/glcanvas/gtk/.cvsignore | 3 - utils/glcanvas/gtk/glcanvas.cpp | 312 - utils/glcanvas/gtk/glcanvas.h | 119 - utils/glcanvas/motif/glcanvas.cpp | 161 - utils/glcanvas/motif/glcanvas.h | 44 - utils/glcanvas/motif/makefile.unx | 20 - utils/glcanvas/motif/readme.txt | 52 - utils/glcanvas/samples/cube/Makefile | 29 - utils/glcanvas/samples/cube/cube.cpp | 192 - utils/glcanvas/samples/cube/cube.h | 60 - utils/glcanvas/samples/cube/cube.rc | 3 - utils/glcanvas/samples/cube/makefile.g95 | 37 - utils/glcanvas/samples/cube/makefile.unx | 23 - utils/glcanvas/samples/cube/makefile.vc | 20 - utils/glcanvas/samples/cube/mondrian.ico | Bin 766 -> 0 bytes utils/glcanvas/samples/isosurf/Makefile | 29 - utils/glcanvas/samples/isosurf/isosurf.cpp | 417 - utils/glcanvas/samples/isosurf/isosurf.dat.gz | Bin 286 -> 0 bytes utils/glcanvas/samples/isosurf/isosurf.h | 53 - utils/glcanvas/samples/isosurf/isosurf.rc | 3 - utils/glcanvas/samples/isosurf/makefile.unx | 27 - utils/glcanvas/samples/isosurf/makefile.vc | 25 - utils/glcanvas/samples/isosurf/mondrian.ico | Bin 766 -> 0 bytes utils/glcanvas/samples/penguin/Makefile | 36 - utils/glcanvas/samples/penguin/lw.cpp | 427 - utils/glcanvas/samples/penguin/lw.h | 69 - utils/glcanvas/samples/penguin/makefile.unx | 21 - utils/glcanvas/samples/penguin/makefile.vc | 25 - utils/glcanvas/samples/penguin/penguin.cpp | 241 - utils/glcanvas/samples/penguin/penguin.h | 85 - utils/glcanvas/samples/penguin/penguin.lwo | Bin 10028 -> 0 bytes utils/glcanvas/samples/penguin/penguin.rc | 3 - utils/glcanvas/samples/penguin/trackball.c | 324 - utils/glcanvas/samples/penguin/trackball.h | 78 - utils/glcanvas/win/glcanvas.cpp | 430 - utils/glcanvas/win/glcanvas.h | 125 - utils/glcanvas/win/makefile.vc | 75 - utils/makefile.vc | 96 - utils/nplugin/docs/notes.txt | 32 - utils/nplugin/lib/dummy | 1 - utils/nplugin/makefile.vc | 32 - utils/nplugin/samples/gui/gui.cpp | 186 - utils/nplugin/samples/gui/gui.h | 59 - utils/nplugin/samples/gui/index.html | 34 - utils/nplugin/samples/gui/makefile.vc | 70 - utils/nplugin/samples/gui/npgui32.def | 9 - utils/nplugin/samples/gui/npgui32.rc | 44 - utils/nplugin/samples/simple/index.html | 34 - utils/nplugin/samples/simple/makefile.vc | 70 - utils/nplugin/samples/simple/npsimple32.def | 9 - utils/nplugin/samples/simple/npsimple32.rc | 44 - utils/nplugin/samples/simple/simple.cpp | 174 - utils/nplugin/src/makefile.vc | 78 - utils/nplugin/src/npapi.h | 258 - utils/nplugin/src/npapp.cpp | 279 - utils/nplugin/src/npapp.h | 91 - utils/nplugin/src/npframe.cpp | 293 - utils/nplugin/src/npframe.h | 81 - utils/nplugin/src/npshell.cpp | 282 - utils/nplugin/src/npupp.h | 799 -- utils/nplugin/src/npwin.cpp | 186 - utils/ogl/Makefile | 1 - utils/ogl/distrib/ogl.rsp | 43 - utils/ogl/distrib/tarogl.bat | 48 - utils/ogl/distrib/zipogl.bat | 30 - utils/ogl/docs/back.gif | Bin 225 -> 0 bytes utils/ogl/docs/books.bmp | Bin 1222 -> 0 bytes utils/ogl/docs/bugs.tex | 11 - utils/ogl/docs/bullet.bmp | Bin 138 -> 0 bytes utils/ogl/docs/changes.tex | 19 - utils/ogl/docs/classes.tex | 2861 ---- utils/ogl/docs/contents.gif | Bin 231 -> 0 bytes utils/ogl/docs/forward.gif | Bin 164 -> 0 bytes utils/ogl/docs/intro.tex | 47 - utils/ogl/docs/ogl.hpj | 17 - utils/ogl/docs/ogl.tex | 46 - utils/ogl/docs/ogledit.bmp | Bin 87670 -> 0 bytes utils/ogl/docs/ogledit.gif | Bin 7163 -> 0 bytes utils/ogl/docs/sample.tex | 87 - utils/ogl/docs/tex2rtf.ini | 26 - utils/ogl/docs/texhelp.sty | 298 - utils/ogl/docs/topics.tex | 161 - utils/ogl/docs/up.gif | Bin 137 -> 0 bytes utils/ogl/samples/ogledit/bitmaps/arrow.bmp | Bin 382 -> 0 bytes utils/ogl/samples/ogledit/bitmaps/arrow.xpm | 44 - utils/ogl/samples/ogledit/bitmaps/tool1.bmp | Bin 382 -> 0 bytes utils/ogl/samples/ogledit/bitmaps/tool1.xpm | 44 - utils/ogl/samples/ogledit/bitmaps/tool2.bmp | Bin 382 -> 0 bytes utils/ogl/samples/ogledit/bitmaps/tool2.xpm | 44 - utils/ogl/samples/ogledit/bitmaps/tool3.bmp | Bin 382 -> 0 bytes utils/ogl/samples/ogledit/bitmaps/tool3.xpm | 44 - utils/ogl/samples/ogledit/bitmaps/tool4.bmp | Bin 382 -> 0 bytes utils/ogl/samples/ogledit/bitmaps/tool4.xpm | 44 - utils/ogl/samples/ogledit/doc.cpp | 570 - utils/ogl/samples/ogledit/doc.h | 172 - utils/ogl/samples/ogledit/makefile.b32 | 88 - utils/ogl/samples/ogledit/makefile.bcc | 87 - utils/ogl/samples/ogledit/makefile.dos | 103 - utils/ogl/samples/ogledit/makefile.sc | 33 - utils/ogl/samples/ogledit/makefile.unx | 20 - utils/ogl/samples/ogledit/makefile.vc | 95 - utils/ogl/samples/ogledit/makefile.vms | 44 - utils/ogl/samples/ogledit/makefile.wat | 43 - utils/ogl/samples/ogledit/ogl.ico | Bin 766 -> 0 bytes utils/ogl/samples/ogledit/ogl.xpm | 45 - utils/ogl/samples/ogledit/ogledit.cpp | 214 - utils/ogl/samples/ogledit/ogledit.def | 8 - utils/ogl/samples/ogledit/ogledit.h | 77 - utils/ogl/samples/ogledit/ogledit.rc | 10 - utils/ogl/samples/ogledit/palette.cpp | 125 - utils/ogl/samples/ogledit/palette.h | 66 - utils/ogl/samples/ogledit/view.cpp | 337 - utils/ogl/samples/ogledit/view.h | 79 - utils/ogl/src/Makefile | 1 - utils/ogl/src/Makefile.in | 69 - utils/ogl/src/basic.cpp | 3274 ----- utils/ogl/src/basic.h | 738 - utils/ogl/src/basic2.cpp | 1902 --- utils/ogl/src/basicp.h | 223 - utils/ogl/src/bmpshape.cpp | 115 - utils/ogl/src/bmpshape.h | 53 - utils/ogl/src/canvas.cpp | 516 - utils/ogl/src/canvas.h | 83 - utils/ogl/src/composit.cpp | 1761 --- utils/ogl/src/composit.h | 240 - utils/ogl/src/constrnt.cpp | 619 - utils/ogl/src/constrnt.h | 87 - utils/ogl/src/divided.cpp | 720 - utils/ogl/src/divided.h | 75 - utils/ogl/src/drawn.cpp | 2489 ---- utils/ogl/src/drawn.h | 227 - utils/ogl/src/drawnp.h | 205 - utils/ogl/src/lines.cpp | 2515 ---- utils/ogl/src/lines.h | 296 - utils/ogl/src/linesp.h | 89 - utils/ogl/src/makefile.b32 | 106 - utils/ogl/src/makefile.bcc | 105 - utils/ogl/src/makefile.dos | 161 - utils/ogl/src/makefile.unx | 42 - utils/ogl/src/makefile.vc | 180 - utils/ogl/src/makefile.wat | 28 - utils/ogl/src/mfutils.cpp | 1085 -- utils/ogl/src/mfutils.h | 211 - utils/ogl/src/misc.cpp | 906 -- utils/ogl/src/misc.h | 113 - utils/ogl/src/ogl.h | 26 - utils/ogl/src/ogldiag.cpp | 756 - utils/ogl/src/ogldiag.h | 124 - utils/serialize/.cvsignore | 3 - utils/serialize/Makefile | 1 - utils/serialize/Makefile.in | 48 - utils/serialize/makefile.b32 | 58 - utils/serialize/sercore.cpp | 107 - utils/serialize/sercore.h | 24 - utils/serialize/serctrl.cpp | 478 - utils/serialize/serctrl.h | 52 - utils/serialize/serext.cpp | 137 - utils/serialize/serext.h | 26 - utils/serialize/sergdi.cpp | 334 - utils/serialize/sergdi.h | 37 - utils/serialize/sermain.cpp | 27 - utils/serialize/serwnd.cpp | 498 - utils/serialize/serwnd.h | 57 - utils/tex2rtf/docs/back.gif | Bin 225 -> 0 bytes utils/tex2rtf/docs/books.gif | Bin 433 -> 0 bytes utils/tex2rtf/docs/bullet.bmp | Bin 138 -> 0 bytes utils/tex2rtf/docs/contents.gif | Bin 231 -> 0 bytes utils/tex2rtf/docs/fancyhea.sty | 145 - utils/tex2rtf/docs/forward.gif | Bin 164 -> 0 bytes utils/tex2rtf/docs/install.txt | 43 - utils/tex2rtf/docs/makeidx.sty | 11 - utils/tex2rtf/docs/mysober.sty | 154 - utils/tex2rtf/docs/mytitle.sty | 33 - utils/tex2rtf/docs/notes.txt | 140 - utils/tex2rtf/docs/psbox.tex | 520 - utils/tex2rtf/docs/readme.txt | 81 - utils/tex2rtf/docs/refs.bib | 35 - utils/tex2rtf/docs/screen.bmp | Bin 66010 -> 0 bytes utils/tex2rtf/docs/screen.gif | Bin 4382 -> 0 bytes utils/tex2rtf/docs/screen.shg | Bin 8857 -> 0 bytes utils/tex2rtf/docs/tex2rtf.hpj | 17 - utils/tex2rtf/docs/tex2rtf.ini | 21 - utils/tex2rtf/docs/tex2rtf.tex | 3299 ----- utils/tex2rtf/docs/tex2rtf.wmf | Bin 5750 -> 0 bytes utils/tex2rtf/docs/texhelp.sty | 282 - utils/tex2rtf/docs/up.gif | Bin 137 -> 0 bytes utils/tex2rtf/docs/verbatim.sty | 212 - utils/tex2rtf/src/bmputils.h | 227 - utils/tex2rtf/src/books.bmp | Bin 1222 -> 0 bytes utils/tex2rtf/src/dos.def | 10 - utils/tex2rtf/src/htmlutil.cpp | 2982 ---- utils/tex2rtf/src/makefile.b32 | 20 - utils/tex2rtf/src/makefile.bcc | 19 - utils/tex2rtf/src/makefile.dos | 17 - utils/tex2rtf/src/makefile.g95 | 61 - utils/tex2rtf/src/makefile.unx | 17 - utils/tex2rtf/src/makefile.vc | 141 - utils/tex2rtf/src/makefile.wat | 14 - utils/tex2rtf/src/makengui.nt | 98 - utils/tex2rtf/src/maths.cpp | 25 - utils/tex2rtf/src/readshg.cpp | 163 - utils/tex2rtf/src/readshg.h | 64 - utils/tex2rtf/src/rtfutils.cpp | 5250 ------- utils/tex2rtf/src/rtfutils.h | 60 - utils/tex2rtf/src/table.cpp | 156 - utils/tex2rtf/src/table.h | 36 - utils/tex2rtf/src/tex2any.cpp | 3482 ----- utils/tex2rtf/src/tex2any.h | 1067 -- utils/tex2rtf/src/tex2rtf.cpp | 1076 -- utils/tex2rtf/src/tex2rtf.def | 8 - utils/tex2rtf/src/tex2rtf.h | 157 - utils/tex2rtf/src/tex2rtf.ico | Bin 766 -> 0 bytes utils/tex2rtf/src/tex2rtf.ini | 17 - utils/tex2rtf/src/tex2rtf.rc | 4 - utils/tex2rtf/src/tex2rtf.xpm | 42 - utils/tex2rtf/src/texutils.cpp | 1647 --- utils/tex2rtf/src/wxhlpblk.h | 30 - utils/tex2rtf/src/xlputils.cpp | 1219 -- utils/wxMMedia/Makefile | 1 - utils/wxMMedia/Makefile.in | 38 - utils/wxMMedia/TODO | 7 - utils/wxMMedia/WARNING | 7 - utils/wxMMedia/adpcm/g711.cpp | 283 - utils/wxMMedia/adpcm/g721.cpp | 173 - utils/wxMMedia/adpcm/g723_24.cpp | 158 - utils/wxMMedia/adpcm/g723_40.cpp | 178 - utils/wxMMedia/adpcm/g72x.cpp | 608 - utils/wxMMedia/adpcm/g72x.h | 123 - utils/wxMMedia/cdbase.cpp | 53 - utils/wxMMedia/cdbase.h | 88 - utils/wxMMedia/cdunix.cpp | 198 - utils/wxMMedia/cdunix.h | 61 - utils/wxMMedia/cdwin.cpp | 208 - utils/wxMMedia/cdwin.h | 67 - utils/wxMMedia/makefile.b32 | 91 - utils/wxMMedia/makefile.nt | 90 - utils/wxMMedia/mmdata.cpp | 94 - utils/wxMMedia/mmedia.h | 31 - utils/wxMMedia/mmfile.cpp | 194 - utils/wxMMedia/mmfile.h | 89 - utils/wxMMedia/mmriff.cpp | 215 - utils/wxMMedia/mmriff.h | 81 - utils/wxMMedia/mmsolve.cpp | 124 - utils/wxMMedia/mmsolve.h | 92 - utils/wxMMedia/mmtype.h | 41 - utils/wxMMedia/sndadpcm.cpp | 86 - utils/wxMMedia/sndaiff.cpp | 218 - utils/wxMMedia/sndaiff.h | 58 - utils/wxMMedia/sndau.cpp | 114 - utils/wxMMedia/sndau.h | 47 - utils/wxMMedia/sndfile.cpp | 325 - utils/wxMMedia/sndfile.h | 91 - utils/wxMMedia/sndfrag.cpp | 268 - utils/wxMMedia/sndfrag.h | 105 - utils/wxMMedia/sndfrmt.cpp | 294 - utils/wxMMedia/sndfrmt.h | 134 - utils/wxMMedia/sndmulaw.cpp | 94 - utils/wxMMedia/sndmulaw.h | 28 - utils/wxMMedia/sndpcm.cpp | 197 - utils/wxMMedia/sndpcm.h | 35 - utils/wxMMedia/sndsnd.cpp | 262 - utils/wxMMedia/sndsnd.h | 275 - utils/wxMMedia/snduss.cpp | 297 - utils/wxMMedia/snduss.h | 86 - utils/wxMMedia/sndwav.cpp | 183 - utils/wxMMedia/sndwav.h | 59 - utils/wxMMedia/sndwin.cpp | 384 - utils/wxMMedia/sndwin.h | 108 - utils/wxMMedia/ulaw.h | 69 - utils/wxMMedia/vidbase.cpp | 87 - utils/wxMMedia/vidbase.h | 105 - utils/wxMMedia/vidwin.cpp | 131 - utils/wxMMedia/vidwin.h | 62 - utils/wxMMedia/vidxanm.cpp | 231 - utils/wxMMedia/vidxanm.h | 69 - utils/wxMMedia/wave.cpp | 65 - utils/wxMMedia/wave.h | 43 - utils/wxtree/docs/back.gif | Bin 225 -> 0 bytes utils/wxtree/docs/books.gif | Bin 433 -> 0 bytes utils/wxtree/docs/classes.tex | 304 - utils/wxtree/docs/contents.gif | Bin 231 -> 0 bytes utils/wxtree/docs/forward.gif | Bin 164 -> 0 bytes utils/wxtree/docs/tex2rtf.ini | 28 - utils/wxtree/docs/tree.bib | 8 - utils/wxtree/docs/treetst.bmp | Bin 14982 -> 0 bytes utils/wxtree/docs/treetst.gif | Bin 2490 -> 0 bytes utils/wxtree/docs/up.gif | Bin 137 -> 0 bytes utils/wxtree/docs/wxtree.tex | 73 - utils/wxtree/lib/dummy | 1 - utils/wxtree/src/makefile.b32 | 18 - utils/wxtree/src/makefile.bcc | 96 - utils/wxtree/src/makefile.dos | 118 - utils/wxtree/src/makefile.g95 | 48 - utils/wxtree/src/makefile.sc | 73 - utils/wxtree/src/makefile.unx | 133 - utils/wxtree/src/makefile.vc | 133 - utils/wxtree/src/makefile.wat | 49 - utils/wxtree/src/mondrian.ico | Bin 766 -> 0 bytes utils/wxtree/src/test.cpp | 201 - utils/wxtree/src/test.def | 8 - utils/wxtree/src/test.h | 54 - utils/wxtree/src/test.rc | 3 - utils/wxtree/src/wxtree.cpp | 440 - utils/wxtree/src/wxtree.h | 135 - wx-config.in | 59 - wxGTK.spec | 39 - wxinstall | 1486 -- 3538 files changed, 653335 deletions(-) delete mode 100644 .cvsignore delete mode 100644 Makefile delete mode 100755 config.guess delete mode 100755 config.sub delete mode 100755 configure delete mode 100644 configure.in delete mode 100755 distrib/gtk/copy_src delete mode 100644 distrib/msw/cw.rsp delete mode 100644 distrib/msw/docsrc.rsp delete mode 100644 distrib/msw/generic.rsp delete mode 100644 distrib/msw/glcanvas.rsp delete mode 100644 distrib/msw/gtk.rsp delete mode 100644 distrib/msw/motif.rsp delete mode 100644 distrib/msw/msw.rsp delete mode 100644 distrib/msw/ogl.rsp delete mode 100644 distrib/msw/stubs.rsp delete mode 100755 distrib/msw/tardist.bat delete mode 100644 distrib/msw/tex2rtf.rsp delete mode 100644 distrib/msw/vc.rsp delete mode 100644 distrib/msw/wx_hlp.rsp delete mode 100644 distrib/msw/wx_html.rsp delete mode 100644 distrib/msw/wx_pdf.rsp delete mode 100644 distrib/msw/wx_word.rsp delete mode 100755 distrib/msw/zipdist.bat delete mode 100644 docs/bugs.txt delete mode 100644 docs/changes.txt delete mode 100644 docs/gpl.txt delete mode 100644 docs/gtk/COPYING.LIB delete mode 100644 docs/gtk/install.txt delete mode 100644 docs/gtk/licence.txt delete mode 100644 docs/gtk/readme.txt delete mode 100644 docs/gtk/todo.txt delete mode 100644 docs/html/faq.htm delete mode 100644 docs/html/faqgen.htm delete mode 100644 docs/html/faqgtk.htm delete mode 100644 docs/html/faqmac.htm delete mode 100644 docs/html/faqmot.htm delete mode 100644 docs/html/faqmsw.htm delete mode 100644 docs/html/gettext/gettext.htm delete mode 100644 docs/html/gettext/msgfmt.htm delete mode 100644 docs/html/gettext/xgettext.htm delete mode 100644 docs/html/index.htm delete mode 100644 docs/html/logo.gif delete mode 100644 docs/index.htm delete mode 100644 docs/latex/porting/back.gif delete mode 100644 docs/latex/porting/books.bmp delete mode 100644 docs/latex/porting/books.gif delete mode 100644 docs/latex/porting/bullet.bmp delete mode 100644 docs/latex/porting/contents.gif delete mode 100644 docs/latex/porting/forward.gif delete mode 100644 docs/latex/porting/porting.hpj delete mode 100644 docs/latex/porting/porting.tex delete mode 100644 docs/latex/porting/tex2rtf.ini delete mode 100644 docs/latex/porting/texhelp.sty delete mode 100644 docs/latex/porting/up.gif delete mode 100644 docs/latex/proplist/back.gif delete mode 100644 docs/latex/proplist/body.tex delete mode 100644 docs/latex/proplist/books.bmp delete mode 100644 docs/latex/proplist/books.gif delete mode 100644 docs/latex/proplist/bullet.bmp delete mode 100644 docs/latex/proplist/changes.tex delete mode 100644 docs/latex/proplist/classes.tex delete mode 100644 docs/latex/proplist/contents.gif delete mode 100644 docs/latex/proplist/forward.gif delete mode 100644 docs/latex/proplist/prop.tex delete mode 100644 docs/latex/proplist/prop1.bmp delete mode 100644 docs/latex/proplist/prop1.eps delete mode 100644 docs/latex/proplist/prop1.gif delete mode 100644 docs/latex/proplist/prop2.bmp delete mode 100644 docs/latex/proplist/prop2.eps delete mode 100644 docs/latex/proplist/prop2.gif delete mode 100644 docs/latex/proplist/readme.txt delete mode 100644 docs/latex/proplist/tex2rtf.ini delete mode 100644 docs/latex/proplist/up.gif delete mode 100644 docs/latex/proplist/wxprop.hpj delete mode 100644 docs/latex/wx/accel.tex delete mode 100644 docs/latex/wx/activevt.tex delete mode 100644 docs/latex/wx/app.tex delete mode 100644 docs/latex/wx/array.tex delete mode 100644 docs/latex/wx/autoobj.tex delete mode 100644 docs/latex/wx/back.gif delete mode 100644 docs/latex/wx/bbutton.tex delete mode 100644 docs/latex/wx/bitmap.tex delete mode 100644 docs/latex/wx/bmpdatob.tex delete mode 100644 docs/latex/wx/body.tex delete mode 100644 docs/latex/wx/book1.bmp delete mode 100644 docs/latex/wx/books.bmp delete mode 100644 docs/latex/wx/books.gif delete mode 100644 docs/latex/wx/brush.tex delete mode 100644 docs/latex/wx/bullet.bmp delete mode 100644 docs/latex/wx/busycurs.tex delete mode 100644 docs/latex/wx/button.tex delete mode 100644 docs/latex/wx/calclevt.tex delete mode 100644 docs/latex/wx/category.tex delete mode 100644 docs/latex/wx/checkbox.tex delete mode 100644 docs/latex/wx/checklst.tex delete mode 100644 docs/latex/wx/choice.tex delete mode 100644 docs/latex/wx/clasinfo.tex delete mode 100644 docs/latex/wx/classes.tex delete mode 100644 docs/latex/wx/clientdc.tex delete mode 100644 docs/latex/wx/clipbrd.tex delete mode 100644 docs/latex/wx/closeevt.tex delete mode 100644 docs/latex/wx/cmdevent.tex delete mode 100644 docs/latex/wx/cmdproc.tex delete mode 100644 docs/latex/wx/colordlg.tex delete mode 100644 docs/latex/wx/colour.tex delete mode 100644 docs/latex/wx/combobox.tex delete mode 100644 docs/latex/wx/command.tex delete mode 100644 docs/latex/wx/conditn.tex delete mode 100644 docs/latex/wx/config.tex delete mode 100644 docs/latex/wx/contents.gif delete mode 100644 docs/latex/wx/control.tex delete mode 100644 docs/latex/wx/cpp.bmp delete mode 100644 docs/latex/wx/critsect.tex delete mode 100644 docs/latex/wx/crtslock.tex delete mode 100644 docs/latex/wx/cursor.tex delete mode 100644 docs/latex/wx/database.tex delete mode 100644 docs/latex/wx/dataobj.tex delete mode 100644 docs/latex/wx/date.tex delete mode 100644 docs/latex/wx/datstrm.tex delete mode 100644 docs/latex/wx/dc.tex delete mode 100644 docs/latex/wx/ddeclint.tex delete mode 100644 docs/latex/wx/ddeconn.tex delete mode 100644 docs/latex/wx/ddeservr.tex delete mode 100644 docs/latex/wx/debugcxt.tex delete mode 100644 docs/latex/wx/dialog.tex delete mode 100644 docs/latex/wx/dirdlg.tex delete mode 100644 docs/latex/wx/docchfrm.tex delete mode 100644 docs/latex/wx/docmanag.tex delete mode 100644 docs/latex/wx/docmdich.tex delete mode 100644 docs/latex/wx/docmdipr.tex delete mode 100644 docs/latex/wx/docprfrm.tex delete mode 100644 docs/latex/wx/doctempl.tex delete mode 100644 docs/latex/wx/document.tex delete mode 100644 docs/latex/wx/dropevt.tex delete mode 100644 docs/latex/wx/dropsrc.tex delete mode 100644 docs/latex/wx/droptrgt.tex delete mode 100644 docs/latex/wx/eraseevt.tex delete mode 100644 docs/latex/wx/event.tex delete mode 100644 docs/latex/wx/evthand.tex delete mode 100644 docs/latex/wx/expr.tex delete mode 100644 docs/latex/wx/fildatob.tex delete mode 100644 docs/latex/wx/fildrptg.tex delete mode 100644 docs/latex/wx/file.tex delete mode 100644 docs/latex/wx/filedlg.tex delete mode 100644 docs/latex/wx/filehist.tex delete mode 100644 docs/latex/wx/filetype.tex delete mode 100644 docs/latex/wx/fltinstr.tex delete mode 100644 docs/latex/wx/fltoutst.tex delete mode 100644 docs/latex/wx/focusevt.tex delete mode 100644 docs/latex/wx/font.tex delete mode 100644 docs/latex/wx/fontdlg.tex delete mode 100644 docs/latex/wx/fontlist.tex delete mode 100644 docs/latex/wx/forward.gif delete mode 100644 docs/latex/wx/frame.tex delete mode 100644 docs/latex/wx/ftp.tex delete mode 100644 docs/latex/wx/function.tex delete mode 100644 docs/latex/wx/gauge.tex delete mode 100644 docs/latex/wx/gdiobj.tex delete mode 100644 docs/latex/wx/grid.tex delete mode 100644 docs/latex/wx/grid1.bmp delete mode 100644 docs/latex/wx/grid1.eps delete mode 100644 docs/latex/wx/grid1.gif delete mode 100644 docs/latex/wx/hand1.bmp delete mode 100644 docs/latex/wx/hash.tex delete mode 100644 docs/latex/wx/hellow.bmp delete mode 100644 docs/latex/wx/hellow.gif delete mode 100644 docs/latex/wx/hellox.bmp delete mode 100644 docs/latex/wx/hellox.gif delete mode 100644 docs/latex/wx/helpinst.tex delete mode 100644 docs/latex/wx/icon.tex delete mode 100644 docs/latex/wx/idleevt.tex delete mode 100644 docs/latex/wx/ilayout.tex delete mode 100644 docs/latex/wx/image.tex delete mode 100644 docs/latex/wx/imaglist.tex delete mode 100644 docs/latex/wx/indlgevt.tex delete mode 100644 docs/latex/wx/inputstr.tex delete mode 100644 docs/latex/wx/joyevent.tex delete mode 100644 docs/latex/wx/joystick.tex delete mode 100644 docs/latex/wx/keycode.tex delete mode 100644 docs/latex/wx/keyevent.tex delete mode 100644 docs/latex/wx/layalgor.tex delete mode 100644 docs/latex/wx/layout.tex delete mode 100644 docs/latex/wx/list.tex delete mode 100644 docs/latex/wx/listbox.tex delete mode 100644 docs/latex/wx/listctrl.tex delete mode 100644 docs/latex/wx/listevt.tex delete mode 100644 docs/latex/wx/log.tex delete mode 100644 docs/latex/wx/manual.tex delete mode 100644 docs/latex/wx/mask.tex delete mode 100644 docs/latex/wx/mdi.tex delete mode 100644 docs/latex/wx/memorydc.tex delete mode 100644 docs/latex/wx/menu.tex delete mode 100644 docs/latex/wx/menuevt.tex delete mode 100644 docs/latex/wx/menuitem.tex delete mode 100644 docs/latex/wx/metafile.tex delete mode 100644 docs/latex/wx/mimetype.tex delete mode 100644 docs/latex/wx/minifram.tex delete mode 100644 docs/latex/wx/mltchdlg.tex delete mode 100644 docs/latex/wx/module.tex delete mode 100644 docs/latex/wx/mouseevt.tex delete mode 100644 docs/latex/wx/moveevt.tex delete mode 100644 docs/latex/wx/msgdlg.tex delete mode 100644 docs/latex/wx/mutex.tex delete mode 100644 docs/latex/wx/mutexlck.tex delete mode 100644 docs/latex/wx/node.tex delete mode 100644 docs/latex/wx/notebook.tex delete mode 100644 docs/latex/wx/noteevt.tex delete mode 100644 docs/latex/wx/object.tex delete mode 100644 docs/latex/wx/outptstr.tex delete mode 100644 docs/latex/wx/pagedlg.tex delete mode 100644 docs/latex/wx/paintdc.tex delete mode 100644 docs/latex/wx/paintevt.tex delete mode 100644 docs/latex/wx/palette.tex delete mode 100644 docs/latex/wx/panel.tex delete mode 100644 docs/latex/wx/pantabv.tex delete mode 100644 docs/latex/wx/pathlist.tex delete mode 100644 docs/latex/wx/pen.tex delete mode 100644 docs/latex/wx/plug.bmp delete mode 100644 docs/latex/wx/point.tex delete mode 100644 docs/latex/wx/postscpt.tex delete mode 100644 docs/latex/wx/prevwin.tex delete mode 100644 docs/latex/wx/print.tex delete mode 100644 docs/latex/wx/process.tex delete mode 100644 docs/latex/wx/procevt.tex delete mode 100644 docs/latex/wx/protocol.tex delete mode 100644 docs/latex/wx/prvdatob.tex delete mode 100644 docs/latex/wx/prvtdrpt.tex delete mode 100644 docs/latex/wx/psbox.tex delete mode 100644 docs/latex/wx/query.tex delete mode 100644 docs/latex/wx/qylayevt.tex delete mode 100644 docs/latex/wx/radiobox.tex delete mode 100644 docs/latex/wx/radiobut.tex delete mode 100644 docs/latex/wx/realpoin.tex delete mode 100644 docs/latex/wx/recrdset.tex delete mode 100644 docs/latex/wx/rect.tex delete mode 100644 docs/latex/wx/referenc.tex delete mode 100644 docs/latex/wx/refs.bib delete mode 100644 docs/latex/wx/region.tex delete mode 100644 docs/latex/wx/sashevt.tex delete mode 100644 docs/latex/wx/sashlayw.tex delete mode 100644 docs/latex/wx/sashwin.tex delete mode 100644 docs/latex/wx/sckaddr.tex delete mode 100644 docs/latex/wx/screendc.tex delete mode 100644 docs/latex/wx/scrolbar.tex delete mode 100644 docs/latex/wx/scrolevt.tex delete mode 100644 docs/latex/wx/scrolwin.tex delete mode 100644 docs/latex/wx/settings.tex delete mode 100644 docs/latex/wx/shelves.bmp delete mode 100644 docs/latex/wx/size.tex delete mode 100644 docs/latex/wx/sizeevt.tex delete mode 100644 docs/latex/wx/slider.tex delete mode 100644 docs/latex/wx/sngchdlg.tex delete mode 100644 docs/latex/wx/socket.tex delete mode 100644 docs/latex/wx/spinbutt.tex delete mode 100644 docs/latex/wx/splitter.bmp delete mode 100644 docs/latex/wx/splitter.eps delete mode 100644 docs/latex/wx/splitter.gif delete mode 100644 docs/latex/wx/splitter.tex delete mode 100644 docs/latex/wx/statbmp.tex delete mode 100644 docs/latex/wx/statbox.tex delete mode 100644 docs/latex/wx/stattext.tex delete mode 100644 docs/latex/wx/statusbr.tex delete mode 100644 docs/latex/wx/stream.tex delete mode 100644 docs/latex/wx/strlist.tex delete mode 100644 docs/latex/wx/strmbase.tex delete mode 100644 docs/latex/wx/sysclevt.tex delete mode 100644 docs/latex/wx/tab.tex delete mode 100644 docs/latex/wx/tabctrl.tex delete mode 100644 docs/latex/wx/tabevent.tex delete mode 100644 docs/latex/wx/tapp.tex delete mode 100644 docs/latex/wx/taskbar.tex delete mode 100644 docs/latex/wx/tbitmap.tex delete mode 100644 docs/latex/wx/tcommdlg.tex delete mode 100644 docs/latex/wx/tconfig.tex delete mode 100644 docs/latex/wx/tconstr.tex delete mode 100644 docs/latex/wx/tcontain.tex delete mode 100644 docs/latex/wx/tcpclint.tex delete mode 100644 docs/latex/wx/tcpconn.tex delete mode 100644 docs/latex/wx/tcpservr.tex delete mode 100644 docs/latex/wx/tdb.tex delete mode 100644 docs/latex/wx/tdc.tex delete mode 100644 docs/latex/wx/tdebug.tex delete mode 100644 docs/latex/wx/tdelwin.tex delete mode 100644 docs/latex/wx/tdialog.tex delete mode 100644 docs/latex/wx/tdnd.tex delete mode 100644 docs/latex/wx/tdocview.tex delete mode 100644 docs/latex/wx/tempfile.tex delete mode 100644 docs/latex/wx/tevent.tex delete mode 100644 docs/latex/wx/tex2rtf.ini delete mode 100644 docs/latex/wx/texhelp.sty delete mode 100644 docs/latex/wx/texpr.tex delete mode 100644 docs/latex/wx/text.tex delete mode 100644 docs/latex/wx/textdlg.tex delete mode 100644 docs/latex/wx/textfile.tex delete mode 100644 docs/latex/wx/tfile.tex delete mode 100644 docs/latex/wx/tfont.tex delete mode 100644 docs/latex/wx/tgrid.tex delete mode 100644 docs/latex/wx/tguide.tex delete mode 100644 docs/latex/wx/thread.tex delete mode 100644 docs/latex/wx/timaglst.tex delete mode 100644 docs/latex/wx/time.tex delete mode 100644 docs/latex/wx/timer.tex delete mode 100644 docs/latex/wx/tipc.tex delete mode 100644 docs/latex/wx/tlistctl.tex delete mode 100644 docs/latex/wx/tlog.tex delete mode 100644 docs/latex/wx/tokenizr.tex delete mode 100644 docs/latex/wx/toolbar.tex delete mode 100644 docs/latex/wx/topics.tex delete mode 100644 docs/latex/wx/tprint.tex delete mode 100644 docs/latex/wx/treectrl.tex delete mode 100644 docs/latex/wx/treeevt.tex delete mode 100644 docs/latex/wx/tresourc.tex delete mode 100644 docs/latex/wx/truntime.tex delete mode 100644 docs/latex/wx/tscroll.tex delete mode 100644 docs/latex/wx/tsplittr.tex delete mode 100644 docs/latex/wx/tstring.tex delete mode 100644 docs/latex/wx/tstyles.tex delete mode 100644 docs/latex/wx/ttab.tex delete mode 100644 docs/latex/wx/tthreads.tex delete mode 100644 docs/latex/wx/ttoolbar.tex delete mode 100644 docs/latex/wx/ttreectl.tex delete mode 100644 docs/latex/wx/tusage.tex delete mode 100644 docs/latex/wx/tvalidat.tex delete mode 100644 docs/latex/wx/txtdatob.tex delete mode 100644 docs/latex/wx/txtdrptg.tex delete mode 100644 docs/latex/wx/up.gif delete mode 100644 docs/latex/wx/upduievt.tex delete mode 100644 docs/latex/wx/url.tex delete mode 100644 docs/latex/wx/validatr.tex delete mode 100644 docs/latex/wx/valtext.tex delete mode 100644 docs/latex/wx/variant.tex delete mode 100644 docs/latex/wx/view.tex delete mode 100644 docs/latex/wx/wave.tex delete mode 100644 docs/latex/wx/window.tex delete mode 100644 docs/latex/wx/windowdc.tex delete mode 100644 docs/latex/wx/wx.hpj delete mode 100644 docs/latex/wx/wxstring.tex delete mode 100644 docs/latex/wx/wxtab1.bmp delete mode 100644 docs/latex/wx/wxtab1.eps delete mode 100644 docs/latex/wx/wxtab1.gif delete mode 100644 docs/lgpl.txt delete mode 100644 docs/licence.txt delete mode 100644 docs/licendoc.txt delete mode 100644 docs/motif/install.txt delete mode 100644 docs/motif/issues.txt delete mode 100644 docs/motif/makewx delete mode 100644 docs/motif/readme.txt delete mode 100644 docs/motif/todo.txt delete mode 100644 docs/msw/install.txt delete mode 100644 docs/msw/issues.txt delete mode 100644 docs/msw/mingw32.txt delete mode 100644 docs/msw/readme.txt delete mode 100644 docs/msw/todo.txt delete mode 100644 docs/preamble.txt delete mode 100644 docs/readme.txt delete mode 100644 docs/symbols.txt delete mode 100644 docs/todo.txt delete mode 100644 docs/word/odbc.doc delete mode 100644 docs/wxQt.html delete mode 100755 include/install-sh delete mode 100644 include/wx/accel.h delete mode 100644 include/wx/app.h delete mode 100644 include/wx/arrimpl.cpp delete mode 100644 include/wx/bitmap.h delete mode 100644 include/wx/bmpbuttn.h delete mode 100644 include/wx/brush.h delete mode 100644 include/wx/button.h delete mode 100644 include/wx/checkbox.h delete mode 100644 include/wx/checklst.h delete mode 100644 include/wx/choicdlg.h delete mode 100644 include/wx/choice.h delete mode 100644 include/wx/clipbrd.h delete mode 100644 include/wx/cmndata.h delete mode 100644 include/wx/colordlg.h delete mode 100644 include/wx/colour.h delete mode 100644 include/wx/combobox.h delete mode 100644 include/wx/confbase.h delete mode 100644 include/wx/config.h delete mode 100644 include/wx/control.h delete mode 100644 include/wx/cursor.h delete mode 100644 include/wx/dataobj.h delete mode 100644 include/wx/date.h delete mode 100644 include/wx/datstrm.h delete mode 100644 include/wx/db.h delete mode 100644 include/wx/dbtable.h delete mode 100644 include/wx/dc.h delete mode 100644 include/wx/dcclient.h delete mode 100644 include/wx/dcmemory.h delete mode 100644 include/wx/dcprint.h delete mode 100644 include/wx/dcps.h delete mode 100644 include/wx/dcscreen.h delete mode 100644 include/wx/dde.h delete mode 100644 include/wx/debug.h delete mode 100644 include/wx/defs.h delete mode 100644 include/wx/dialog.h delete mode 100644 include/wx/dirdlg.h delete mode 100644 include/wx/dnd.h delete mode 100644 include/wx/docmdi.h delete mode 100644 include/wx/docview.h delete mode 100644 include/wx/dynarray.h delete mode 100644 include/wx/dynlib.h delete mode 100644 include/wx/event.h delete mode 100644 include/wx/expr.h delete mode 100644 include/wx/file.h delete mode 100644 include/wx/fileconf.h delete mode 100644 include/wx/filedlg.h delete mode 100644 include/wx/filefn.h delete mode 100644 include/wx/font.h delete mode 100644 include/wx/fontdlg.h delete mode 100644 include/wx/frame.h delete mode 100644 include/wx/gauge.h delete mode 100644 include/wx/gdicmn.h delete mode 100644 include/wx/gdiobj.h delete mode 100644 include/wx/generic/choicdgg.h delete mode 100644 include/wx/generic/colrdlgg.h delete mode 100644 include/wx/generic/dcpsg.h delete mode 100644 include/wx/generic/dirdlgg.h delete mode 100644 include/wx/generic/fontdlgg.h delete mode 100644 include/wx/generic/gridg.h delete mode 100644 include/wx/generic/helpext.h delete mode 100644 include/wx/generic/helphtml.h delete mode 100644 include/wx/generic/helpxlp.h delete mode 100644 include/wx/generic/imaglist.h delete mode 100644 include/wx/generic/laywin.h delete mode 100644 include/wx/generic/listctrl.h delete mode 100644 include/wx/generic/msgdlgg.h delete mode 100644 include/wx/generic/notebook.h delete mode 100644 include/wx/generic/panelg.h delete mode 100644 include/wx/generic/printps.h delete mode 100644 include/wx/generic/prntdlgg.h delete mode 100644 include/wx/generic/sashwin.h delete mode 100644 include/wx/generic/scrolwin.h delete mode 100644 include/wx/generic/splitter.h delete mode 100644 include/wx/generic/statusbr.h delete mode 100644 include/wx/generic/tabg.h delete mode 100644 include/wx/generic/textdlgg.h delete mode 100644 include/wx/generic/treectrl.h delete mode 100644 include/wx/grid.h delete mode 100644 include/wx/gtk/.cvsignore delete mode 100644 include/wx/gtk/accel.h delete mode 100644 include/wx/gtk/app.h delete mode 100644 include/wx/gtk/bitmap.h delete mode 100644 include/wx/gtk/bmpbuttn.h delete mode 100644 include/wx/gtk/brush.h delete mode 100644 include/wx/gtk/button.h delete mode 100644 include/wx/gtk/checkbox.h delete mode 100644 include/wx/gtk/checklst.h delete mode 100644 include/wx/gtk/choice.h delete mode 100644 include/wx/gtk/clipbrd.h delete mode 100644 include/wx/gtk/colour.h delete mode 100644 include/wx/gtk/combobox.h delete mode 100644 include/wx/gtk/control.h delete mode 100644 include/wx/gtk/cursor.h delete mode 100644 include/wx/gtk/dataobj.h delete mode 100644 include/wx/gtk/dc.h delete mode 100644 include/wx/gtk/dcclient.h delete mode 100644 include/wx/gtk/dcmemory.h delete mode 100644 include/wx/gtk/dcps.h delete mode 100644 include/wx/gtk/dcscreen.h delete mode 100644 include/wx/gtk/dialog.h delete mode 100644 include/wx/gtk/dnd.h delete mode 100644 include/wx/gtk/filedlg.h delete mode 100644 include/wx/gtk/font.h delete mode 100644 include/wx/gtk/frame.h delete mode 100644 include/wx/gtk/gauge.h delete mode 100644 include/wx/gtk/gdiobj.h delete mode 100644 include/wx/gtk/icon.h delete mode 100644 include/wx/gtk/joystick.h delete mode 100644 include/wx/gtk/listbox.h delete mode 100644 include/wx/gtk/mdi.h delete mode 100644 include/wx/gtk/menu.h delete mode 100644 include/wx/gtk/menuitem.h delete mode 100644 include/wx/gtk/minifram.h delete mode 100644 include/wx/gtk/notebook.h delete mode 100644 include/wx/gtk/palette.h delete mode 100644 include/wx/gtk/pen.h delete mode 100644 include/wx/gtk/radiobox.h delete mode 100644 include/wx/gtk/radiobut.h delete mode 100644 include/wx/gtk/region.h delete mode 100644 include/wx/gtk/scrolbar.h delete mode 100644 include/wx/gtk/settings.h delete mode 100644 include/wx/gtk/slider.h delete mode 100644 include/wx/gtk/spinbutt.h delete mode 100644 include/wx/gtk/statbmp.h delete mode 100644 include/wx/gtk/statbox.h delete mode 100644 include/wx/gtk/stattext.h delete mode 100644 include/wx/gtk/tbargtk.h delete mode 100644 include/wx/gtk/textctrl.h delete mode 100644 include/wx/gtk/timer.h delete mode 100644 include/wx/gtk/tooltip.h delete mode 100644 include/wx/gtk/treectrl.h delete mode 100644 include/wx/gtk/wave.h delete mode 100644 include/wx/gtk/win_gtk.h delete mode 100644 include/wx/gtk/window.h delete mode 100644 include/wx/gtk1/.cvsignore delete mode 100644 include/wx/gtk1/accel.h delete mode 100644 include/wx/gtk1/app.h delete mode 100644 include/wx/gtk1/bitmap.h delete mode 100644 include/wx/gtk1/bmpbuttn.h delete mode 100644 include/wx/gtk1/brush.h delete mode 100644 include/wx/gtk1/button.h delete mode 100644 include/wx/gtk1/checkbox.h delete mode 100644 include/wx/gtk1/checklst.h delete mode 100644 include/wx/gtk1/choice.h delete mode 100644 include/wx/gtk1/clipbrd.h delete mode 100644 include/wx/gtk1/colour.h delete mode 100644 include/wx/gtk1/combobox.h delete mode 100644 include/wx/gtk1/control.h delete mode 100644 include/wx/gtk1/cursor.h delete mode 100644 include/wx/gtk1/dataobj.h delete mode 100644 include/wx/gtk1/dc.h delete mode 100644 include/wx/gtk1/dcclient.h delete mode 100644 include/wx/gtk1/dcmemory.h delete mode 100644 include/wx/gtk1/dcps.h delete mode 100644 include/wx/gtk1/dcscreen.h delete mode 100644 include/wx/gtk1/dialog.h delete mode 100644 include/wx/gtk1/dnd.h delete mode 100644 include/wx/gtk1/filedlg.h delete mode 100644 include/wx/gtk1/font.h delete mode 100644 include/wx/gtk1/frame.h delete mode 100644 include/wx/gtk1/gauge.h delete mode 100644 include/wx/gtk1/gdiobj.h delete mode 100644 include/wx/gtk1/icon.h delete mode 100644 include/wx/gtk1/joystick.h delete mode 100644 include/wx/gtk1/listbox.h delete mode 100644 include/wx/gtk1/mdi.h delete mode 100644 include/wx/gtk1/menu.h delete mode 100644 include/wx/gtk1/menuitem.h delete mode 100644 include/wx/gtk1/minifram.h delete mode 100644 include/wx/gtk1/notebook.h delete mode 100644 include/wx/gtk1/palette.h delete mode 100644 include/wx/gtk1/pen.h delete mode 100644 include/wx/gtk1/radiobox.h delete mode 100644 include/wx/gtk1/radiobut.h delete mode 100644 include/wx/gtk1/region.h delete mode 100644 include/wx/gtk1/scrolbar.h delete mode 100644 include/wx/gtk1/settings.h delete mode 100644 include/wx/gtk1/slider.h delete mode 100644 include/wx/gtk1/spinbutt.h delete mode 100644 include/wx/gtk1/statbmp.h delete mode 100644 include/wx/gtk1/statbox.h delete mode 100644 include/wx/gtk1/stattext.h delete mode 100644 include/wx/gtk1/tbargtk.h delete mode 100644 include/wx/gtk1/textctrl.h delete mode 100644 include/wx/gtk1/timer.h delete mode 100644 include/wx/gtk1/tooltip.h delete mode 100644 include/wx/gtk1/treectrl.h delete mode 100644 include/wx/gtk1/wave.h delete mode 100644 include/wx/gtk1/win_gtk.h delete mode 100644 include/wx/gtk1/window.h delete mode 100644 include/wx/hash.h delete mode 100644 include/wx/help.h delete mode 100644 include/wx/helpbase.h delete mode 100644 include/wx/helphtml.h delete mode 100644 include/wx/helpwin.h delete mode 100644 include/wx/helpxlp.h delete mode 100644 include/wx/icon.h delete mode 100644 include/wx/image.h delete mode 100644 include/wx/imaglist.h delete mode 100755 include/wx/install-sh delete mode 100644 include/wx/intl.h delete mode 100644 include/wx/ipcbase.h delete mode 100644 include/wx/joystick.h delete mode 100644 include/wx/layout.h delete mode 100644 include/wx/laywin.h delete mode 100644 include/wx/list.h delete mode 100644 include/wx/listbox.h delete mode 100644 include/wx/listctrl.h delete mode 100644 include/wx/listimpl.cpp delete mode 100644 include/wx/log.h delete mode 100644 include/wx/mac/accel.h delete mode 100644 include/wx/mac/app.h delete mode 100644 include/wx/mac/bitmap.h delete mode 100644 include/wx/mac/bmpbuttn.h delete mode 100644 include/wx/mac/brush.h delete mode 100644 include/wx/mac/button.h delete mode 100644 include/wx/mac/checkbox.h delete mode 100644 include/wx/mac/checklst.h delete mode 100644 include/wx/mac/choice.h delete mode 100644 include/wx/mac/clipbrd.h delete mode 100644 include/wx/mac/colordlg.h delete mode 100644 include/wx/mac/colour.h delete mode 100644 include/wx/mac/combobox.h delete mode 100644 include/wx/mac/control.h delete mode 100644 include/wx/mac/cursor.h delete mode 100644 include/wx/mac/dc.h delete mode 100644 include/wx/mac/dcclient.h delete mode 100644 include/wx/mac/dcmemory.h delete mode 100644 include/wx/mac/dcprint.h delete mode 100644 include/wx/mac/dcscreen.h delete mode 100644 include/wx/mac/dialog.h delete mode 100644 include/wx/mac/dirdlg.h delete mode 100644 include/wx/mac/dnd.h delete mode 100644 include/wx/mac/filedlg.h delete mode 100644 include/wx/mac/font.h delete mode 100644 include/wx/mac/fontdlg.h delete mode 100644 include/wx/mac/frame.h delete mode 100644 include/wx/mac/gauge.h delete mode 100644 include/wx/mac/gdiobj.h delete mode 100644 include/wx/mac/helpxxxx.h delete mode 100644 include/wx/mac/icon.h delete mode 100644 include/wx/mac/imaglist.h delete mode 100644 include/wx/mac/joystick.h delete mode 100644 include/wx/mac/listbox.h delete mode 100644 include/wx/mac/listctrl.h delete mode 100644 include/wx/mac/macsock.h delete mode 100644 include/wx/mac/mdi.h delete mode 100644 include/wx/mac/menu.h delete mode 100644 include/wx/mac/menuitem.h delete mode 100644 include/wx/mac/metafile.h delete mode 100644 include/wx/mac/minifram.h delete mode 100644 include/wx/mac/msgdlg.h delete mode 100644 include/wx/mac/notebook.h delete mode 100644 include/wx/mac/palette.h delete mode 100644 include/wx/mac/pen.h delete mode 100644 include/wx/mac/print.h delete mode 100644 include/wx/mac/printdlg.h delete mode 100644 include/wx/mac/private.h delete mode 100644 include/wx/mac/radiobox.h delete mode 100644 include/wx/mac/radiobut.h delete mode 100644 include/wx/mac/region.h delete mode 100644 include/wx/mac/scrolbar.h delete mode 100644 include/wx/mac/settings.h delete mode 100644 include/wx/mac/setup.h delete mode 100644 include/wx/mac/slider.h delete mode 100644 include/wx/mac/spinbutt.h delete mode 100644 include/wx/mac/statbmp.h delete mode 100644 include/wx/mac/statbox.h delete mode 100644 include/wx/mac/stattext.h delete mode 100644 include/wx/mac/statusbr.h delete mode 100644 include/wx/mac/tabctrl.h delete mode 100644 include/wx/mac/taskbar.h delete mode 100644 include/wx/mac/textctrl.h delete mode 100644 include/wx/mac/timer.h delete mode 100644 include/wx/mac/toolbar.h delete mode 100644 include/wx/mac/treectrl.h delete mode 100644 include/wx/mac/wave.h delete mode 100644 include/wx/mac/window.h delete mode 100644 include/wx/matrix.h delete mode 100644 include/wx/mdi.h delete mode 100644 include/wx/memory.h delete mode 100644 include/wx/menu.h delete mode 100644 include/wx/menuitem.h delete mode 100644 include/wx/metafile.h delete mode 100644 include/wx/mimetype.h delete mode 100644 include/wx/minifram.h delete mode 100644 include/wx/module.h delete mode 100644 include/wx/motif/accel.h delete mode 100644 include/wx/motif/app.h delete mode 100644 include/wx/motif/bitmap.h delete mode 100644 include/wx/motif/bmpbuttn.h delete mode 100644 include/wx/motif/brush.h delete mode 100644 include/wx/motif/button.h delete mode 100644 include/wx/motif/checkbox.h delete mode 100644 include/wx/motif/checklst.h delete mode 100644 include/wx/motif/choice.h delete mode 100644 include/wx/motif/clipbrd.h delete mode 100644 include/wx/motif/colordlg.h delete mode 100644 include/wx/motif/colour.h delete mode 100644 include/wx/motif/combobox.h delete mode 100644 include/wx/motif/control.h delete mode 100644 include/wx/motif/cursor.h delete mode 100644 include/wx/motif/dataobj.h delete mode 100644 include/wx/motif/dc.h delete mode 100644 include/wx/motif/dcclient.h delete mode 100644 include/wx/motif/dcmemory.h delete mode 100644 include/wx/motif/dcprint.h delete mode 100644 include/wx/motif/dcscreen.h delete mode 100644 include/wx/motif/dialog.h delete mode 100644 include/wx/motif/dirdlg.h delete mode 100644 include/wx/motif/dnd.h delete mode 100644 include/wx/motif/filedlg.h delete mode 100644 include/wx/motif/font.h delete mode 100644 include/wx/motif/fontdlg.h delete mode 100644 include/wx/motif/frame.h delete mode 100644 include/wx/motif/gauge.h delete mode 100644 include/wx/motif/gdiobj.h delete mode 100644 include/wx/motif/helpxxxx.h delete mode 100644 include/wx/motif/icon.h delete mode 100644 include/wx/motif/joystick.h delete mode 100644 include/wx/motif/listbox.h delete mode 100644 include/wx/motif/mdi.h delete mode 100644 include/wx/motif/menu.h delete mode 100644 include/wx/motif/menuitem.h delete mode 100644 include/wx/motif/metafile.h delete mode 100644 include/wx/motif/minifram.h delete mode 100644 include/wx/motif/msgdlg.h delete mode 100644 include/wx/motif/palette.h delete mode 100644 include/wx/motif/pen.h delete mode 100644 include/wx/motif/print.h delete mode 100644 include/wx/motif/printdlg.h delete mode 100644 include/wx/motif/private.h delete mode 100644 include/wx/motif/radiobox.h delete mode 100644 include/wx/motif/radiobut.h delete mode 100644 include/wx/motif/region.h delete mode 100644 include/wx/motif/scrolbar.h delete mode 100644 include/wx/motif/settings.h delete mode 100644 include/wx/motif/setup.h delete mode 100644 include/wx/motif/slider.h delete mode 100644 include/wx/motif/spinbutt.h delete mode 100644 include/wx/motif/statbmp.h delete mode 100644 include/wx/motif/statbox.h delete mode 100644 include/wx/motif/stattext.h delete mode 100644 include/wx/motif/tabctrl.h delete mode 100644 include/wx/motif/taskbar.h delete mode 100644 include/wx/motif/textctrl.h delete mode 100644 include/wx/motif/timer.h delete mode 100644 include/wx/motif/toolbar.h delete mode 100644 include/wx/motif/wave.h delete mode 100644 include/wx/motif/window.h delete mode 100644 include/wx/msgdlg.h delete mode 100644 include/wx/mstream.h delete mode 100644 include/wx/msw/accel.h delete mode 100644 include/wx/msw/app.h delete mode 100644 include/wx/msw/bitmap.h delete mode 100644 include/wx/msw/blank.cur delete mode 100644 include/wx/msw/bmpbuttn.h delete mode 100644 include/wx/msw/brush.h delete mode 100644 include/wx/msw/bullseye.cur delete mode 100644 include/wx/msw/button.h delete mode 100644 include/wx/msw/checkbox.h delete mode 100644 include/wx/msw/checklst.h delete mode 100644 include/wx/msw/child.ico delete mode 100644 include/wx/msw/choice.h delete mode 100644 include/wx/msw/clipbrd.h delete mode 100644 include/wx/msw/clock.cur delete mode 100644 include/wx/msw/colordlg.h delete mode 100644 include/wx/msw/colour.h delete mode 100644 include/wx/msw/combobox.h delete mode 100644 include/wx/msw/control.h delete mode 100644 include/wx/msw/ctl3d/ctl3d.h delete mode 100644 include/wx/msw/curico.h delete mode 100644 include/wx/msw/curicop.h delete mode 100644 include/wx/msw/cursor.h delete mode 100644 include/wx/msw/dc.h delete mode 100644 include/wx/msw/dcclient.h delete mode 100644 include/wx/msw/dcmemory.h delete mode 100644 include/wx/msw/dcprint.h delete mode 100644 include/wx/msw/dcscreen.h delete mode 100644 include/wx/msw/dde.h delete mode 100644 include/wx/msw/dialog.h delete mode 100644 include/wx/msw/dib.h delete mode 100644 include/wx/msw/dibutils.h delete mode 100644 include/wx/msw/dirdlg.h delete mode 100644 include/wx/msw/disable.bmp delete mode 100644 include/wx/msw/filedlg.h delete mode 100644 include/wx/msw/font.h delete mode 100644 include/wx/msw/fontdlg.h delete mode 100644 include/wx/msw/frame.h delete mode 100644 include/wx/msw/gauge.h delete mode 100644 include/wx/msw/gauge95.h delete mode 100644 include/wx/msw/gaugemsw.h delete mode 100644 include/wx/msw/gdiobj.h delete mode 100644 include/wx/msw/hand.cur delete mode 100644 include/wx/msw/heart.cur delete mode 100644 include/wx/msw/helpwin.h delete mode 100644 include/wx/msw/icon.h delete mode 100644 include/wx/msw/imaglist.h delete mode 100644 include/wx/msw/iniconf.h delete mode 100644 include/wx/msw/joystick.h delete mode 100644 include/wx/msw/listbox.h delete mode 100644 include/wx/msw/listctrl.h delete mode 100644 include/wx/msw/magnif1.cur delete mode 100644 include/wx/msw/mdi.h delete mode 100644 include/wx/msw/mdi.ico delete mode 100644 include/wx/msw/menu.h delete mode 100644 include/wx/msw/menuitem.h delete mode 100644 include/wx/msw/metafile.h delete mode 100644 include/wx/msw/minifram.h delete mode 100644 include/wx/msw/msgdlg.h delete mode 100644 include/wx/msw/noentry.cur delete mode 100644 include/wx/msw/notebook.h delete mode 100644 include/wx/msw/ole/automtn.h delete mode 100644 include/wx/msw/ole/dataobj.h delete mode 100644 include/wx/msw/ole/dropsrc.h delete mode 100644 include/wx/msw/ole/droptgt.h delete mode 100644 include/wx/msw/ole/oleutils.h delete mode 100644 include/wx/msw/ole/uuid.h delete mode 100644 include/wx/msw/palette.h delete mode 100644 include/wx/msw/pbrush.cur delete mode 100644 include/wx/msw/pen.h delete mode 100644 include/wx/msw/pencil.cur delete mode 100644 include/wx/msw/pnghand.h delete mode 100644 include/wx/msw/pngread.h delete mode 100644 include/wx/msw/pntleft.cur delete mode 100644 include/wx/msw/pntright.cur delete mode 100644 include/wx/msw/printdlg.h delete mode 100644 include/wx/msw/printwin.h delete mode 100644 include/wx/msw/private.h delete mode 100644 include/wx/msw/query.cur delete mode 100644 include/wx/msw/radiobox.h delete mode 100644 include/wx/msw/radiobut.h delete mode 100644 include/wx/msw/regconf.h delete mode 100644 include/wx/msw/region.h delete mode 100644 include/wx/msw/registry.h delete mode 100644 include/wx/msw/roller.cur delete mode 100644 include/wx/msw/scrolbar.h delete mode 100644 include/wx/msw/settings.h delete mode 100644 include/wx/msw/setup.h delete mode 100644 include/wx/msw/size.cur delete mode 100644 include/wx/msw/slider.h delete mode 100644 include/wx/msw/slider95.h delete mode 100644 include/wx/msw/slidrmsw.h delete mode 100644 include/wx/msw/spinbutt.h delete mode 100644 include/wx/msw/statbmp.h delete mode 100644 include/wx/msw/statbox.h delete mode 100644 include/wx/msw/statbr95.h delete mode 100644 include/wx/msw/stattext.h delete mode 100644 include/wx/msw/std.ico delete mode 100644 include/wx/msw/tabctrl.h delete mode 100644 include/wx/msw/taskbar.h delete mode 100644 include/wx/msw/tbar95.h delete mode 100644 include/wx/msw/tbarmsw.h delete mode 100644 include/wx/msw/textctrl.h delete mode 100644 include/wx/msw/timer.h delete mode 100644 include/wx/msw/treectrl.h delete mode 100644 include/wx/msw/watch1.cur delete mode 100644 include/wx/msw/wave.h delete mode 100644 include/wx/msw/window.h delete mode 100644 include/wx/msw/wx.rc delete mode 100644 include/wx/msw/xpmhand.h delete mode 100644 include/wx/notebook.h delete mode 100644 include/wx/object.h delete mode 100644 include/wx/objstrm.h delete mode 100644 include/wx/odbc.h delete mode 100644 include/wx/ownerdrw.h delete mode 100644 include/wx/palette.h delete mode 100644 include/wx/panel.h delete mode 100644 include/wx/pen.h delete mode 100644 include/wx/pnghand.h delete mode 100644 include/wx/print.h delete mode 100644 include/wx/printdlg.h delete mode 100644 include/wx/prntbase.h delete mode 100644 include/wx/process.h delete mode 100644 include/wx/prop.h delete mode 100644 include/wx/propform.h delete mode 100644 include/wx/proplist.h delete mode 100644 include/wx/protocol/file.h delete mode 100644 include/wx/protocol/ftp.h delete mode 100644 include/wx/protocol/http.h delete mode 100644 include/wx/protocol/protocol.h delete mode 100644 include/wx/qt/app.h delete mode 100644 include/wx/qt/bitmap.h delete mode 100644 include/wx/qt/bmpbuttn.h delete mode 100644 include/wx/qt/brush.h delete mode 100644 include/wx/qt/button.h delete mode 100644 include/wx/qt/checkbox.h delete mode 100644 include/wx/qt/choice.h delete mode 100644 include/wx/qt/colour.h delete mode 100644 include/wx/qt/combobox.h delete mode 100644 include/wx/qt/control.h delete mode 100644 include/wx/qt/cursor.h delete mode 100644 include/wx/qt/dc.h delete mode 100644 include/wx/qt/dcclient.h delete mode 100644 include/wx/qt/dcmemory.h delete mode 100644 include/wx/qt/dcscreen.h delete mode 100644 include/wx/qt/dialog.h delete mode 100644 include/wx/qt/dirdlg.h delete mode 100644 include/wx/qt/dnd.h delete mode 100644 include/wx/qt/filedlg.h delete mode 100644 include/wx/qt/font.h delete mode 100644 include/wx/qt/frame.h delete mode 100644 include/wx/qt/gauge.h delete mode 100644 include/wx/qt/gdiobj.h delete mode 100644 include/wx/qt/icon.h delete mode 100644 include/wx/qt/joystick.h delete mode 100644 include/wx/qt/listbox.h delete mode 100644 include/wx/qt/mdi.h delete mode 100644 include/wx/qt/menu.h delete mode 100644 include/wx/qt/notebook.h delete mode 100644 include/wx/qt/palette.h delete mode 100644 include/wx/qt/pen.h delete mode 100644 include/wx/qt/radiobox.h delete mode 100644 include/wx/qt/radiobut.h delete mode 100644 include/wx/qt/region.h delete mode 100644 include/wx/qt/scrolbar.h delete mode 100644 include/wx/qt/settings.h delete mode 100644 include/wx/qt/slider.h delete mode 100644 include/wx/qt/statbmp.h delete mode 100644 include/wx/qt/statbox.h delete mode 100644 include/wx/qt/stattext.h delete mode 100644 include/wx/qt/tbargtk.h delete mode 100644 include/wx/qt/textctrl.h delete mode 100644 include/wx/qt/timer.h delete mode 100644 include/wx/qt/window.h delete mode 100644 include/wx/radiobox.h delete mode 100644 include/wx/radiobut.h delete mode 100644 include/wx/region.h delete mode 100644 include/wx/resource.h delete mode 100644 include/wx/sashwin.h delete mode 100644 include/wx/sckaddr.h delete mode 100644 include/wx/sckipc.h delete mode 100644 include/wx/sckstrm.h delete mode 100644 include/wx/scrolbar.h delete mode 100644 include/wx/scrolwin.h delete mode 100644 include/wx/serbase.h delete mode 100644 include/wx/settings.h delete mode 100644 include/wx/setup.h delete mode 100644 include/wx/slider.h delete mode 100644 include/wx/socket.h delete mode 100644 include/wx/spinbutt.h delete mode 100644 include/wx/splitter.h delete mode 100644 include/wx/statbmp.h delete mode 100644 include/wx/statbox.h delete mode 100644 include/wx/stattext.h delete mode 100644 include/wx/statusbr.h delete mode 100644 include/wx/stream.h delete mode 100644 include/wx/string.h delete mode 100644 include/wx/stubs/accel.h delete mode 100644 include/wx/stubs/app.h delete mode 100644 include/wx/stubs/bitmap.h delete mode 100644 include/wx/stubs/bmpbuttn.h delete mode 100644 include/wx/stubs/brush.h delete mode 100644 include/wx/stubs/button.h delete mode 100644 include/wx/stubs/checkbox.h delete mode 100644 include/wx/stubs/checklst.h delete mode 100644 include/wx/stubs/choice.h delete mode 100644 include/wx/stubs/clipbrd.h delete mode 100644 include/wx/stubs/colordlg.h delete mode 100644 include/wx/stubs/colour.h delete mode 100644 include/wx/stubs/combobox.h delete mode 100644 include/wx/stubs/control.h delete mode 100644 include/wx/stubs/cursor.h delete mode 100644 include/wx/stubs/dc.h delete mode 100644 include/wx/stubs/dcclient.h delete mode 100644 include/wx/stubs/dcmemory.h delete mode 100644 include/wx/stubs/dcprint.h delete mode 100644 include/wx/stubs/dcscreen.h delete mode 100644 include/wx/stubs/dialog.h delete mode 100644 include/wx/stubs/dirdlg.h delete mode 100644 include/wx/stubs/dnd.h delete mode 100644 include/wx/stubs/filedlg.h delete mode 100644 include/wx/stubs/font.h delete mode 100644 include/wx/stubs/fontdlg.h delete mode 100644 include/wx/stubs/frame.h delete mode 100644 include/wx/stubs/gauge.h delete mode 100644 include/wx/stubs/gdiobj.h delete mode 100644 include/wx/stubs/helpxxxx.h delete mode 100644 include/wx/stubs/icon.h delete mode 100644 include/wx/stubs/imaglist.h delete mode 100644 include/wx/stubs/joystick.h delete mode 100644 include/wx/stubs/listbox.h delete mode 100644 include/wx/stubs/listctrl.h delete mode 100644 include/wx/stubs/mdi.h delete mode 100644 include/wx/stubs/menu.h delete mode 100644 include/wx/stubs/menuitem.h delete mode 100644 include/wx/stubs/metafile.h delete mode 100644 include/wx/stubs/minifram.h delete mode 100644 include/wx/stubs/msgdlg.h delete mode 100644 include/wx/stubs/notebook.h delete mode 100644 include/wx/stubs/palette.h delete mode 100644 include/wx/stubs/pen.h delete mode 100644 include/wx/stubs/print.h delete mode 100644 include/wx/stubs/printdlg.h delete mode 100644 include/wx/stubs/private.h delete mode 100644 include/wx/stubs/radiobox.h delete mode 100644 include/wx/stubs/radiobut.h delete mode 100644 include/wx/stubs/region.h delete mode 100644 include/wx/stubs/scrolbar.h delete mode 100644 include/wx/stubs/settings.h delete mode 100644 include/wx/stubs/setup.h delete mode 100644 include/wx/stubs/slider.h delete mode 100644 include/wx/stubs/spinbutt.h delete mode 100644 include/wx/stubs/statbmp.h delete mode 100644 include/wx/stubs/statbox.h delete mode 100644 include/wx/stubs/stattext.h delete mode 100644 include/wx/stubs/statusbr.h delete mode 100644 include/wx/stubs/tabctrl.h delete mode 100644 include/wx/stubs/taskbar.h delete mode 100644 include/wx/stubs/textctrl.h delete mode 100644 include/wx/stubs/timer.h delete mode 100644 include/wx/stubs/toolbar.h delete mode 100644 include/wx/stubs/treectrl.h delete mode 100644 include/wx/stubs/wave.h delete mode 100644 include/wx/stubs/window.h delete mode 100644 include/wx/tab.h delete mode 100644 include/wx/tabctrl.h delete mode 100644 include/wx/taskbar.h delete mode 100644 include/wx/tbar95.h delete mode 100644 include/wx/tbarbase.h delete mode 100644 include/wx/tbarmsw.h delete mode 100644 include/wx/tbarsmpl.h delete mode 100644 include/wx/textctrl.h delete mode 100644 include/wx/textdlg.h delete mode 100644 include/wx/textfile.h delete mode 100644 include/wx/thread.h delete mode 100644 include/wx/time.h delete mode 100644 include/wx/timer.h delete mode 100644 include/wx/tokenzr.h delete mode 100644 include/wx/toolbar.h delete mode 100644 include/wx/tooltip.h delete mode 100644 include/wx/treectrl.h delete mode 100644 include/wx/types.h delete mode 100644 include/wx/url.h delete mode 100644 include/wx/utils.h delete mode 100644 include/wx/validate.h delete mode 100644 include/wx/valtext.h delete mode 100644 include/wx/variant.h delete mode 100644 include/wx/version.h delete mode 100644 include/wx/wave.h delete mode 100644 include/wx/wfstream.h delete mode 100644 include/wx/window.h delete mode 100644 include/wx/wx.h delete mode 100644 include/wx/wx_cw.h delete mode 100644 include/wx/wx_cw_cm.h delete mode 100644 include/wx/wx_cw_d.h delete mode 100644 include/wx/wxchar.h delete mode 100644 include/wx/wxexpr.h delete mode 100644 include/wx/wxprec.h delete mode 100644 include/wx/xpmhand.h delete mode 100644 include/wx/zstream.h delete mode 100644 include/wx_cw.pch delete mode 100644 include/wx_cw.pch++ delete mode 100644 include/wx_cw_d.pch delete mode 100644 include/wx_cw_d.pch++ delete mode 100755 install-sh delete mode 100644 lib/.cvsignore delete mode 100644 lib/dummy delete mode 100644 misc/afm/Cour.afm delete mode 100644 misc/afm/CourBo.afm delete mode 100644 misc/afm/CourBoO.afm delete mode 100644 misc/afm/CourO.afm delete mode 100644 misc/afm/Helv.afm delete mode 100644 misc/afm/HelvBo.afm delete mode 100644 misc/afm/HelvBoO.afm delete mode 100644 misc/afm/HelvO.afm delete mode 100644 misc/afm/TimesBo.afm delete mode 100644 misc/afm/TimesBoO.afm delete mode 100644 misc/afm/TimesO.afm delete mode 100644 misc/afm/TimesRo.afm delete mode 100644 misc/gs_afm/Cour.afm delete mode 100644 misc/gs_afm/CourBo.afm delete mode 100644 misc/gs_afm/CourBoO.afm delete mode 100644 misc/gs_afm/CourO.afm delete mode 100644 misc/gs_afm/Helv.afm delete mode 100644 misc/gs_afm/HelvBo.afm delete mode 100644 misc/gs_afm/HelvBoO.afm delete mode 100644 misc/gs_afm/HelvO.afm delete mode 100644 misc/gs_afm/TimesBo.afm delete mode 100644 misc/gs_afm/TimesBoO.afm delete mode 100644 misc/gs_afm/TimesO.afm delete mode 100644 misc/gs_afm/TimesRo.afm delete mode 100644 mkinstalldirs delete mode 100644 samples/Makefile delete mode 100644 samples/bombs/.cvsignore delete mode 100644 samples/bombs/Makefile delete mode 100644 samples/bombs/Makefile.in delete mode 100644 samples/bombs/bombs.bmp delete mode 100644 samples/bombs/bombs.cpp delete mode 100644 samples/bombs/bombs.def delete mode 100644 samples/bombs/bombs.h delete mode 100644 samples/bombs/bombs.ico delete mode 100644 samples/bombs/bombs.rc delete mode 100644 samples/bombs/bombs.xpm delete mode 100644 samples/bombs/bombs1.cpp delete mode 100644 samples/bombs/game.cpp delete mode 100644 samples/bombs/game.h delete mode 100644 samples/bombs/makefile.b32 delete mode 100644 samples/bombs/makefile.bcc delete mode 100644 samples/bombs/makefile.dos delete mode 100644 samples/bombs/makefile.g95 delete mode 100644 samples/bombs/makefile.unx delete mode 100644 samples/bombs/makefile.vc delete mode 100644 samples/bombs/makefile.wat delete mode 100644 samples/bombs/readme.txt delete mode 100644 samples/checklst/.cvsignore delete mode 100644 samples/checklst/Makefile delete mode 100644 samples/checklst/Makefile.in delete mode 100644 samples/checklst/checklst.cpp delete mode 100644 samples/checklst/checklst.def delete mode 100644 samples/checklst/checklst.rc delete mode 100644 samples/checklst/makefile.b32 delete mode 100644 samples/checklst/makefile.dos delete mode 100644 samples/checklst/makefile.g95 delete mode 100644 samples/checklst/makefile.vc delete mode 100644 samples/checklst/makefile.wat delete mode 100644 samples/checklst/mondrian.xpm delete mode 100644 samples/config/.cvsignore delete mode 100644 samples/config/Makefile delete mode 100644 samples/config/Makefile.in delete mode 100644 samples/config/conftest.cpp delete mode 100644 samples/config/conftest.rc delete mode 100644 samples/config/makefile.b32 delete mode 100644 samples/config/makefile.bcc delete mode 100644 samples/config/makefile.dos delete mode 100644 samples/config/makefile.g95 delete mode 100644 samples/config/makefile.unx delete mode 100644 samples/config/makefile.vc delete mode 100644 samples/config/makefile.wat delete mode 100644 samples/controls/.cvsignore delete mode 100644 samples/controls/Makefile delete mode 100644 samples/controls/Makefile.in delete mode 100644 samples/controls/controls.cpp delete mode 100644 samples/controls/controls.def delete mode 100644 samples/controls/controls.rc delete mode 100644 samples/controls/icons/choice.bmp delete mode 100644 samples/controls/icons/choice.xpm delete mode 100644 samples/controls/icons/combo.bmp delete mode 100644 samples/controls/icons/combo.xpm delete mode 100644 samples/controls/icons/gauge.bmp delete mode 100644 samples/controls/icons/gauge.xpm delete mode 100644 samples/controls/icons/list.bmp delete mode 100644 samples/controls/icons/list.xpm delete mode 100644 samples/controls/icons/radio.bmp delete mode 100644 samples/controls/icons/radio.xpm delete mode 100644 samples/controls/icons/stattext.xpm delete mode 100644 samples/controls/icons/text.bmp delete mode 100644 samples/controls/icons/text.xpm delete mode 100644 samples/controls/makefile.b32 delete mode 100644 samples/controls/makefile.bcc delete mode 100644 samples/controls/makefile.dos delete mode 100644 samples/controls/makefile.g95 delete mode 100644 samples/controls/makefile.unx delete mode 100644 samples/controls/makefile.vc delete mode 100644 samples/controls/makefile.wat delete mode 100644 samples/controls/mondrian.ico delete mode 100644 samples/controls/mondrian.xpm delete mode 100644 samples/db/Makefile delete mode 100644 samples/db/Makefile.in delete mode 100644 samples/db/db.xpm delete mode 100644 samples/db/dbtest.cpp delete mode 100644 samples/db/dbtest.def delete mode 100644 samples/db/dbtest.h delete mode 100644 samples/db/dbtest.ico delete mode 100644 samples/db/dbtest.rc delete mode 100644 samples/db/listdb.cpp delete mode 100644 samples/db/listdb.h delete mode 100644 samples/db/makefile.b32 delete mode 100644 samples/db/makefile.dos delete mode 100644 samples/db/makefile.unx delete mode 100644 samples/db/makefile.vc delete mode 100644 samples/db/makefile.wat delete mode 100644 samples/dde/Makefile delete mode 100644 samples/dde/Makefile.in delete mode 100644 samples/dde/client.cpp delete mode 100644 samples/dde/client.def delete mode 100644 samples/dde/client.h delete mode 100644 samples/dde/client.rc delete mode 100644 samples/dde/client.vc delete mode 100644 samples/dde/client.wat delete mode 100644 samples/dde/ddesetup.h delete mode 100644 samples/dde/makefile.b32 delete mode 100644 samples/dde/makefile.dos delete mode 100644 samples/dde/makefile.g95 delete mode 100644 samples/dde/makefile.vc delete mode 100644 samples/dde/mondrian.ico delete mode 100644 samples/dde/mondrian.xpm delete mode 100644 samples/dde/server.cpp delete mode 100644 samples/dde/server.def delete mode 100644 samples/dde/server.h delete mode 100644 samples/dde/server.rc delete mode 100644 samples/dde/server.vc delete mode 100644 samples/dde/server.wat delete mode 100644 samples/dialogs/.cvsignore delete mode 100644 samples/dialogs/Makefile delete mode 100644 samples/dialogs/Makefile.in delete mode 100644 samples/dialogs/dialogs.cpp delete mode 100644 samples/dialogs/dialogs.def delete mode 100644 samples/dialogs/dialogs.h delete mode 100644 samples/dialogs/dialogs.rc delete mode 100644 samples/dialogs/makefile.b32 delete mode 100644 samples/dialogs/makefile.bcc delete mode 100644 samples/dialogs/makefile.dos delete mode 100644 samples/dialogs/makefile.g95 delete mode 100644 samples/dialogs/makefile.unx delete mode 100644 samples/dialogs/makefile.vc delete mode 100644 samples/dialogs/makefile.wat delete mode 100644 samples/dnd/.cvsignore delete mode 100644 samples/dnd/Makefile delete mode 100644 samples/dnd/Makefile.in delete mode 100644 samples/dnd/d_and_d.txt delete mode 100644 samples/dnd/dnd.cpp delete mode 100644 samples/dnd/dnd.def delete mode 100644 samples/dnd/dnd.rc delete mode 100644 samples/dnd/makefile.b32 delete mode 100644 samples/dnd/makefile.dos delete mode 100644 samples/dnd/makefile.g95 delete mode 100644 samples/dnd/makefile.vc delete mode 100644 samples/dnd/makefile.wat delete mode 100644 samples/dnd/mondrian.ico delete mode 100644 samples/dnd/mondrian.xpm delete mode 100644 samples/dnd/test.dsp delete mode 100644 samples/dnd/test.dsw delete mode 100644 samples/docview/.cvsignore delete mode 100644 samples/docview/Makefile delete mode 100644 samples/docview/Makefile.in delete mode 100644 samples/docview/chart.ico delete mode 100644 samples/docview/doc.cpp delete mode 100644 samples/docview/doc.h delete mode 100644 samples/docview/doc.ico delete mode 100644 samples/docview/docview.cpp delete mode 100644 samples/docview/docview.def delete mode 100644 samples/docview/docview.h delete mode 100644 samples/docview/docview.rc delete mode 100644 samples/docview/makefile.b32 delete mode 100644 samples/docview/makefile.bcc delete mode 100644 samples/docview/makefile.dos delete mode 100644 samples/docview/makefile.g95 delete mode 100644 samples/docview/makefile.sc delete mode 100644 samples/docview/makefile.unx delete mode 100644 samples/docview/makefile.vc delete mode 100644 samples/docview/makefile.vms delete mode 100644 samples/docview/makefile.wat delete mode 100644 samples/docview/mondrian.ico delete mode 100644 samples/docview/mondrian.xpm delete mode 100644 samples/docview/notepad.ico delete mode 100644 samples/docview/view.cpp delete mode 100644 samples/docview/view.h delete mode 100644 samples/docvwmdi/.cvsignore delete mode 100644 samples/docvwmdi/Makefile delete mode 100644 samples/docvwmdi/Makefile.in delete mode 100644 samples/docvwmdi/chart.ico delete mode 100644 samples/docvwmdi/doc.cpp delete mode 100644 samples/docvwmdi/doc.h delete mode 100644 samples/docvwmdi/doc.ico delete mode 100644 samples/docvwmdi/docview.cpp delete mode 100644 samples/docvwmdi/docview.def delete mode 100644 samples/docvwmdi/docview.h delete mode 100644 samples/docvwmdi/docview.rc delete mode 100644 samples/docvwmdi/makefile.b32 delete mode 100644 samples/docvwmdi/makefile.bcc delete mode 100644 samples/docvwmdi/makefile.dos delete mode 100644 samples/docvwmdi/makefile.g95 delete mode 100644 samples/docvwmdi/makefile.unx delete mode 100644 samples/docvwmdi/makefile.vc delete mode 100644 samples/docvwmdi/makefile.wat delete mode 100644 samples/docvwmdi/notepad.ico delete mode 100644 samples/docvwmdi/view.cpp delete mode 100644 samples/docvwmdi/view.h delete mode 100644 samples/dynamic/.cvsignore delete mode 100644 samples/dynamic/Makefile delete mode 100644 samples/dynamic/Makefile.in delete mode 100644 samples/dynamic/dynamic.cpp delete mode 100644 samples/dynamic/dynamic.def delete mode 100644 samples/dynamic/dynamic.rc delete mode 100644 samples/dynamic/makefile.b32 delete mode 100644 samples/dynamic/makefile.bcc delete mode 100644 samples/dynamic/makefile.dos delete mode 100644 samples/dynamic/makefile.g95 delete mode 100644 samples/dynamic/makefile.unx delete mode 100644 samples/dynamic/makefile.vc delete mode 100644 samples/dynamic/minimal.cpp delete mode 100644 samples/dynamic/mondrian.ico delete mode 100644 samples/dynamic/mondrian.xpm delete mode 100644 samples/forty/.cvsignore delete mode 100644 samples/forty/Makefile delete mode 100644 samples/forty/Makefile.in delete mode 100644 samples/forty/canvas.cpp delete mode 100644 samples/forty/canvas.h delete mode 100644 samples/forty/card.cpp delete mode 100644 samples/forty/card.h delete mode 100644 samples/forty/cards.ico delete mode 100644 samples/forty/forty.cpp delete mode 100644 samples/forty/forty.def delete mode 100644 samples/forty/forty.h delete mode 100644 samples/forty/forty.rc delete mode 100644 samples/forty/game.cpp delete mode 100644 samples/forty/game.h delete mode 100644 samples/forty/makefile.bcc delete mode 100644 samples/forty/makefile.dos delete mode 100644 samples/forty/makefile.g95 delete mode 100644 samples/forty/makefile.vc delete mode 100644 samples/forty/makefile.wat delete mode 100644 samples/forty/pictures.bmp delete mode 100644 samples/forty/pictures.xpm delete mode 100644 samples/forty/pile.cpp delete mode 100644 samples/forty/pile.h delete mode 100644 samples/forty/playerdg.cpp delete mode 100644 samples/forty/playerdg.h delete mode 100644 samples/forty/scoredg.cpp delete mode 100644 samples/forty/scoredg.h delete mode 100644 samples/forty/scorefil.cpp delete mode 100644 samples/forty/scorefil.h delete mode 100644 samples/forty/symbols.bmp delete mode 100644 samples/forty/symbols.xbm delete mode 100644 samples/forty/symbols.xpm delete mode 100644 samples/fractal/Makefile delete mode 100644 samples/fractal/Makefile.in delete mode 100644 samples/fractal/fractal.cpp delete mode 100644 samples/fractal/fractal.def delete mode 100644 samples/fractal/fractal.rc delete mode 100644 samples/fractal/makefile.b32 delete mode 100644 samples/fractal/makefile.bcc delete mode 100644 samples/fractal/makefile.dos delete mode 100644 samples/fractal/makefile.g95 delete mode 100644 samples/fractal/makefile.unx delete mode 100644 samples/fractal/makefile.vc delete mode 100644 samples/fractal/makefile.wat delete mode 100644 samples/fractal/mondrian.ico delete mode 100644 samples/grid/.cvsignore delete mode 100644 samples/grid/Makefile delete mode 100644 samples/grid/Makefile.in delete mode 100644 samples/grid/bitmap1.bmp delete mode 100644 samples/grid/bitmap2.bmp delete mode 100644 samples/grid/makefile.b32 delete mode 100644 samples/grid/makefile.bcc delete mode 100644 samples/grid/makefile.dos delete mode 100644 samples/grid/makefile.g95 delete mode 100644 samples/grid/makefile.unx delete mode 100644 samples/grid/makefile.vc delete mode 100644 samples/grid/makefile.wat delete mode 100644 samples/grid/test.cpp delete mode 100644 samples/grid/test.def delete mode 100644 samples/grid/test.rc delete mode 100644 samples/help/.cvsignore delete mode 100644 samples/help/Makefile delete mode 100644 samples/help/Makefile.in delete mode 100644 samples/help/demo.cpp delete mode 100644 samples/help/demo.def delete mode 100644 samples/help/demo.rc delete mode 100644 samples/help/doc/ClassGraph.class delete mode 100644 samples/help/doc/ClassGraphPanel.class delete mode 100644 samples/help/doc/ClassLayout.class delete mode 100644 samples/help/doc/HIER.html delete mode 100644 samples/help/doc/HIERjava.html delete mode 100644 samples/help/doc/NavigatorButton.class delete mode 100644 samples/help/doc/USE_HELP.html delete mode 100644 samples/help/doc/aindex.html delete mode 100644 samples/help/doc/down.gif delete mode 100644 samples/help/doc/dxxgifs.tex delete mode 100644 samples/help/doc/gifs.db delete mode 100644 samples/help/doc/icon1.gif delete mode 100644 samples/help/doc/icon2.gif delete mode 100644 samples/help/doc/index.html delete mode 100644 samples/help/doc/logo.gif delete mode 100644 samples/help/doc/wx204.htm delete mode 100644 samples/help/doc/wx34.htm delete mode 100644 samples/help/doc/wxExtHelpController.html delete mode 100644 samples/help/doc/wxhelp.map delete mode 100644 samples/help/makefile.bcc delete mode 100644 samples/help/makefile.vc delete mode 100644 samples/help/makefile.wat delete mode 100644 samples/help/mondrian.ico delete mode 100644 samples/help/mondrian.xpm delete mode 100644 samples/image/.cvsignore delete mode 100644 samples/image/Makefile delete mode 100644 samples/image/Makefile.in delete mode 100644 samples/image/horse.png delete mode 100644 samples/image/image.cpp delete mode 100644 samples/image/image.rc delete mode 100644 samples/image/makefile.bcc delete mode 100644 samples/image/makefile.dos delete mode 100644 samples/image/makefile.unx delete mode 100644 samples/image/makefile.vc delete mode 100644 samples/image/makefile.wat delete mode 100644 samples/internat/.cvsignore delete mode 100644 samples/internat/Makefile delete mode 100644 samples/internat/Makefile.in delete mode 100644 samples/internat/fr/internat.mo delete mode 100644 samples/internat/fr/internat.po delete mode 100644 samples/internat/fr/wxstd.mo delete mode 100644 samples/internat/fr/wxstd.po delete mode 100644 samples/internat/internat.cpp delete mode 100644 samples/internat/internat.def delete mode 100644 samples/internat/internat.rc delete mode 100644 samples/internat/makefile.b32 delete mode 100644 samples/internat/makefile.bcc delete mode 100644 samples/internat/makefile.dos delete mode 100644 samples/internat/makefile.g95 delete mode 100644 samples/internat/makefile.sc delete mode 100644 samples/internat/makefile.unx delete mode 100644 samples/internat/makefile.vc delete mode 100644 samples/internat/makefile.vms delete mode 100644 samples/internat/makefile.wat delete mode 100644 samples/internat/mondrian.ico delete mode 100644 samples/internat/mondrian.xpm delete mode 100644 samples/internat/readme.txt delete mode 100644 samples/internat/wxstd.po delete mode 100644 samples/joytest/chart.ico delete mode 100644 samples/joytest/gun.wav delete mode 100644 samples/joytest/joytest.cpp delete mode 100644 samples/joytest/joytest.def delete mode 100644 samples/joytest/joytest.h delete mode 100644 samples/joytest/joytest.ico delete mode 100644 samples/joytest/joytest.rc delete mode 100644 samples/joytest/makefile.b32 delete mode 100644 samples/joytest/makefile.bcc delete mode 100644 samples/joytest/makefile.dos delete mode 100644 samples/joytest/makefile.g95 delete mode 100644 samples/joytest/makefile.sc delete mode 100644 samples/joytest/makefile.unx delete mode 100644 samples/joytest/makefile.vc delete mode 100644 samples/joytest/makefile.wat delete mode 100644 samples/joytest/mondrian.ico delete mode 100644 samples/layout/.cvsignore delete mode 100644 samples/layout/Makefile delete mode 100644 samples/layout/Makefile.in delete mode 100644 samples/layout/expt.cpp delete mode 100644 samples/layout/fload.xbm delete mode 100644 samples/layout/layout.cpp delete mode 100644 samples/layout/layout.def delete mode 100644 samples/layout/layout.h delete mode 100644 samples/layout/layout.rc delete mode 100644 samples/layout/makefile.b32 delete mode 100644 samples/layout/makefile.bcc delete mode 100644 samples/layout/makefile.dos delete mode 100644 samples/layout/makefile.g95 delete mode 100644 samples/layout/makefile.sc delete mode 100644 samples/layout/makefile.unx delete mode 100644 samples/layout/makefile.vc delete mode 100644 samples/layout/makefile.vms delete mode 100644 samples/layout/makefile.wat delete mode 100644 samples/listctrl/.cvsignore delete mode 100644 samples/listctrl/Makefile delete mode 100644 samples/listctrl/Makefile.in delete mode 100644 samples/listctrl/bitmaps/small1.ico delete mode 100644 samples/listctrl/bitmaps/small1.xpm delete mode 100644 samples/listctrl/bitmaps/toolbrai.ico delete mode 100644 samples/listctrl/bitmaps/toolbrai.xpm delete mode 100644 samples/listctrl/bitmaps/toolchar.ico delete mode 100644 samples/listctrl/bitmaps/toolchar.xpm delete mode 100644 samples/listctrl/bitmaps/toolchec.ico delete mode 100644 samples/listctrl/bitmaps/toolchec.xpm delete mode 100644 samples/listctrl/bitmaps/tooldata.ico delete mode 100644 samples/listctrl/bitmaps/tooldata.xpm delete mode 100644 samples/listctrl/bitmaps/toolgame.ico delete mode 100644 samples/listctrl/bitmaps/toolgame.xpm delete mode 100644 samples/listctrl/bitmaps/toolnote.ico delete mode 100644 samples/listctrl/bitmaps/toolnote.xpm delete mode 100644 samples/listctrl/bitmaps/tooltime.ico delete mode 100644 samples/listctrl/bitmaps/tooltime.xpm delete mode 100644 samples/listctrl/bitmaps/tooltodo.ico delete mode 100644 samples/listctrl/bitmaps/tooltodo.xpm delete mode 100644 samples/listctrl/bitmaps/toolword.ico delete mode 100644 samples/listctrl/bitmaps/toolword.xpm delete mode 100644 samples/listctrl/listtest.cpp delete mode 100644 samples/listctrl/listtest.def delete mode 100644 samples/listctrl/listtest.h delete mode 100644 samples/listctrl/listtest.rc delete mode 100644 samples/listctrl/makefile.b32 delete mode 100644 samples/listctrl/makefile.bcc delete mode 100644 samples/listctrl/makefile.dos delete mode 100644 samples/listctrl/makefile.g95 delete mode 100644 samples/listctrl/makefile.unx delete mode 100644 samples/listctrl/makefile.vc delete mode 100644 samples/listctrl/makefile.wat delete mode 100644 samples/listctrl/mondrian.ico delete mode 100644 samples/listctrl/mondrian.xpm delete mode 100644 samples/listctrl/test.dsp delete mode 100644 samples/listctrl/test.dsw delete mode 100644 samples/makefile.g95 delete mode 100644 samples/makefile.unx delete mode 100644 samples/makefile.vc delete mode 100644 samples/mdi/.cvsignore delete mode 100644 samples/mdi/Makefile delete mode 100644 samples/mdi/Makefile.in delete mode 100644 samples/mdi/bitmaps/bitmap1.bmp delete mode 100644 samples/mdi/bitmaps/bitmap2.bmp delete mode 100644 samples/mdi/bitmaps/calc.bmp delete mode 100644 samples/mdi/bitmaps/copy.bmp delete mode 100644 samples/mdi/bitmaps/copy.xpm delete mode 100644 samples/mdi/bitmaps/cut.bmp delete mode 100644 samples/mdi/bitmaps/cut.xpm delete mode 100644 samples/mdi/bitmaps/dirplain.xbm delete mode 100644 samples/mdi/bitmaps/draft.xbm delete mode 100644 samples/mdi/bitmaps/drawing.xbm delete mode 100644 samples/mdi/bitmaps/flowchar.xbm delete mode 100644 samples/mdi/bitmaps/help.bmp delete mode 100644 samples/mdi/bitmaps/help.xpm delete mode 100644 samples/mdi/bitmaps/helpcs.bmp delete mode 100644 samples/mdi/bitmaps/new.bmp delete mode 100644 samples/mdi/bitmaps/new.xpm delete mode 100644 samples/mdi/bitmaps/open.bmp delete mode 100644 samples/mdi/bitmaps/open.xpm delete mode 100644 samples/mdi/bitmaps/paste.bmp delete mode 100644 samples/mdi/bitmaps/paste.xpm delete mode 100644 samples/mdi/bitmaps/preview.bmp delete mode 100644 samples/mdi/bitmaps/preview.xpm delete mode 100644 samples/mdi/bitmaps/print.bmp delete mode 100644 samples/mdi/bitmaps/print.xpm delete mode 100644 samples/mdi/bitmaps/save.bmp delete mode 100644 samples/mdi/bitmaps/save.xpm delete mode 100644 samples/mdi/bitmaps/tick.bmp delete mode 100644 samples/mdi/bitmaps/write.xbm delete mode 100644 samples/mdi/chart.ico delete mode 100644 samples/mdi/makefile.b32 delete mode 100644 samples/mdi/makefile.bcc delete mode 100644 samples/mdi/makefile.dos delete mode 100644 samples/mdi/makefile.g95 delete mode 100644 samples/mdi/makefile.sc delete mode 100644 samples/mdi/makefile.twn delete mode 100644 samples/mdi/makefile.unx delete mode 100644 samples/mdi/makefile.vc delete mode 100644 samples/mdi/makefile.vms delete mode 100644 samples/mdi/makefile.wat delete mode 100644 samples/mdi/mdi.cpp delete mode 100644 samples/mdi/mdi.def delete mode 100644 samples/mdi/mdi.h delete mode 100644 samples/mdi/mdi.ico delete mode 100644 samples/mdi/mdi.rc delete mode 100644 samples/mdi/mondrian.ico delete mode 100644 samples/mdi/mondrian.xpm delete mode 100644 samples/memcheck/.cvsignore delete mode 100644 samples/memcheck/Makefile delete mode 100644 samples/memcheck/Makefile.in delete mode 100644 samples/memcheck/makefile.b32 delete mode 100644 samples/memcheck/makefile.bcc delete mode 100644 samples/memcheck/makefile.dos delete mode 100644 samples/memcheck/makefile.g95 delete mode 100644 samples/memcheck/makefile.unx delete mode 100644 samples/memcheck/makefile.vc delete mode 100644 samples/memcheck/makefile.wat delete mode 100644 samples/memcheck/memcheck.cpp delete mode 100644 samples/memcheck/memcheck.def delete mode 100644 samples/memcheck/memcheck.rc delete mode 100644 samples/memcheck/mondrian.ico delete mode 100644 samples/memcheck/mondrian.xpm delete mode 100644 samples/mfc/makefile.b32 delete mode 100644 samples/mfc/makefile.bcc delete mode 100644 samples/mfc/makefile.dos delete mode 100644 samples/mfc/makefile.vc delete mode 100644 samples/mfc/makefile.wat delete mode 100644 samples/mfc/mfctest.cpp delete mode 100644 samples/mfc/mfctest.def delete mode 100644 samples/mfc/mfctest.h delete mode 100644 samples/mfc/mfctest.ico delete mode 100644 samples/mfc/mfctest.rc delete mode 100644 samples/mfc/resource.h delete mode 100644 samples/mfc/stdafx.h delete mode 100644 samples/minifram/.cvsignore delete mode 100644 samples/minifram/Makefile delete mode 100644 samples/minifram/Makefile.in delete mode 100644 samples/minifram/bitmaps/copy.bmp delete mode 100644 samples/minifram/bitmaps/copy.xpm delete mode 100644 samples/minifram/bitmaps/cut.bmp delete mode 100644 samples/minifram/bitmaps/cut.xpm delete mode 100644 samples/minifram/bitmaps/help.bmp delete mode 100644 samples/minifram/bitmaps/help.xpm delete mode 100644 samples/minifram/bitmaps/new.bmp delete mode 100644 samples/minifram/bitmaps/new.xpm delete mode 100644 samples/minifram/bitmaps/open.bmp delete mode 100644 samples/minifram/bitmaps/open.xpm delete mode 100644 samples/minifram/bitmaps/page.bmp delete mode 100644 samples/minifram/bitmaps/paste.bmp delete mode 100644 samples/minifram/bitmaps/preview.bmp delete mode 100644 samples/minifram/bitmaps/preview.xpm delete mode 100644 samples/minifram/bitmaps/print.bmp delete mode 100644 samples/minifram/bitmaps/print.xpm delete mode 100644 samples/minifram/bitmaps/save.bmp delete mode 100644 samples/minifram/bitmaps/save.xpm delete mode 100644 samples/minifram/makefile.b32 delete mode 100644 samples/minifram/makefile.bcc delete mode 100644 samples/minifram/makefile.dos delete mode 100644 samples/minifram/makefile.g95 delete mode 100644 samples/minifram/makefile.unx delete mode 100644 samples/minifram/makefile.vc delete mode 100644 samples/minifram/makefile.wat delete mode 100644 samples/minifram/mondrian.ico delete mode 100644 samples/minifram/mondrian.xpm delete mode 100644 samples/minifram/test.cpp delete mode 100644 samples/minifram/test.def delete mode 100644 samples/minifram/test.h delete mode 100644 samples/minifram/test.rc delete mode 100644 samples/minimal/.cvsignore delete mode 100644 samples/minimal/Makefile delete mode 100644 samples/minimal/Makefile.in delete mode 100644 samples/minimal/make_cw.mcp delete mode 100644 samples/minimal/makefile.b32 delete mode 100644 samples/minimal/makefile.bcc delete mode 100644 samples/minimal/makefile.dos delete mode 100644 samples/minimal/makefile.g95 delete mode 100644 samples/minimal/makefile.twn delete mode 100644 samples/minimal/makefile.unx delete mode 100644 samples/minimal/makefile.vc delete mode 100644 samples/minimal/minimal.cpp delete mode 100644 samples/minimal/minimal.def delete mode 100644 samples/minimal/minimal.rc delete mode 100644 samples/minimal/mondrian.ico delete mode 100644 samples/minimal/mondrian.xpm delete mode 100644 samples/nativdlg/dialog1.rc delete mode 100644 samples/nativdlg/makefile.b32 delete mode 100644 samples/nativdlg/makefile.bcc delete mode 100644 samples/nativdlg/makefile.dos delete mode 100644 samples/nativdlg/makefile.g95 delete mode 100644 samples/nativdlg/makefile.sc delete mode 100644 samples/nativdlg/makefile.unx delete mode 100644 samples/nativdlg/makefile.vc delete mode 100644 samples/nativdlg/makefile.vms delete mode 100644 samples/nativdlg/makefile.wat delete mode 100644 samples/nativdlg/nativdlg.cpp delete mode 100644 samples/nativdlg/nativdlg.def delete mode 100644 samples/nativdlg/nativdlg.h delete mode 100644 samples/nativdlg/nativdlg.rc delete mode 100644 samples/nativdlg/resource.h delete mode 100644 samples/notebook/.cvsignore delete mode 100644 samples/notebook/Makefile delete mode 100644 samples/notebook/Makefile.in delete mode 100644 samples/notebook/makefile.b32 delete mode 100644 samples/notebook/makefile.bcc delete mode 100644 samples/notebook/makefile.dos delete mode 100644 samples/notebook/makefile.g95 delete mode 100644 samples/notebook/makefile.unx delete mode 100644 samples/notebook/makefile.vc delete mode 100644 samples/notebook/makefile.wat delete mode 100644 samples/notebook/mondrian.ico delete mode 100644 samples/notebook/test.cpp delete mode 100644 samples/notebook/test.def delete mode 100644 samples/notebook/test.h delete mode 100644 samples/notebook/test.rc delete mode 100644 samples/oleauto/makefile.b32 delete mode 100644 samples/oleauto/makefile.g95 delete mode 100644 samples/oleauto/makefile.vc delete mode 100644 samples/oleauto/makefile.wat delete mode 100644 samples/oleauto/mondrian.ico delete mode 100644 samples/oleauto/mondrian.xpm delete mode 100644 samples/oleauto/oleauto.cpp delete mode 100644 samples/oleauto/oleauto.def delete mode 100644 samples/oleauto/oleauto.rc delete mode 100644 samples/ownerdrw/bell.bmp delete mode 100644 samples/ownerdrw/makefile.b32 delete mode 100644 samples/ownerdrw/makefile.bcc delete mode 100644 samples/ownerdrw/makefile.dos delete mode 100644 samples/ownerdrw/makefile.g95 delete mode 100644 samples/ownerdrw/makefile.vc delete mode 100644 samples/ownerdrw/makefile.wat delete mode 100644 samples/ownerdrw/mondrian.ico delete mode 100644 samples/ownerdrw/nosound.bmp delete mode 100644 samples/ownerdrw/ownerdrw.cpp delete mode 100644 samples/ownerdrw/ownerdrw.def delete mode 100644 samples/ownerdrw/ownerdrw.rc delete mode 100644 samples/ownerdrw/sound.bmp delete mode 100644 samples/png/.cvsignore delete mode 100644 samples/png/Makefile delete mode 100644 samples/png/Makefile.in delete mode 100644 samples/png/julian.png delete mode 100644 samples/png/makefile.bcc delete mode 100644 samples/png/makefile.vc delete mode 100644 samples/png/makefile.wat delete mode 100644 samples/png/paint.png delete mode 100644 samples/png/paint16.png delete mode 100644 samples/png/pngdemo.cpp delete mode 100644 samples/png/pngdemo.h delete mode 100644 samples/png/pngdemo.rc delete mode 100644 samples/printing/.cvsignore delete mode 100644 samples/printing/Makefile delete mode 100644 samples/printing/Makefile.in delete mode 100644 samples/printing/fload.xbm delete mode 100644 samples/printing/folder.xpm delete mode 100644 samples/printing/makefile.b32 delete mode 100644 samples/printing/makefile.bcc delete mode 100644 samples/printing/makefile.dos delete mode 100644 samples/printing/makefile.g95 delete mode 100644 samples/printing/makefile.unx delete mode 100644 samples/printing/makefile.vc delete mode 100644 samples/printing/makefile.wat delete mode 100644 samples/printing/mondrian.ico delete mode 100644 samples/printing/mondrian.xpm delete mode 100644 samples/printing/printing.cpp delete mode 100644 samples/printing/printing.def delete mode 100644 samples/printing/printing.h delete mode 100644 samples/printing/printing.rc delete mode 100644 samples/printing/test.dsp delete mode 100644 samples/printing/test.dsw delete mode 100644 samples/proplist/.cvsignore delete mode 100644 samples/proplist/Makefile delete mode 100644 samples/proplist/Makefile.in delete mode 100644 samples/proplist/cross.bmp delete mode 100644 samples/proplist/makefile.b32 delete mode 100644 samples/proplist/makefile.bcc delete mode 100644 samples/proplist/makefile.dos delete mode 100644 samples/proplist/makefile.g95 delete mode 100644 samples/proplist/makefile.unx delete mode 100644 samples/proplist/makefile.vc delete mode 100644 samples/proplist/makefile.wat delete mode 100644 samples/proplist/test.cpp delete mode 100644 samples/proplist/test.def delete mode 100644 samples/proplist/test.h delete mode 100644 samples/proplist/test.rc delete mode 100644 samples/proplist/tick.bmp delete mode 100644 samples/regtest/key1.ico delete mode 100644 samples/regtest/key2.ico delete mode 100644 samples/regtest/key3.ico delete mode 100644 samples/regtest/makefile.g95 delete mode 100644 samples/regtest/makefile.vc delete mode 100644 samples/regtest/makefile.wat delete mode 100644 samples/regtest/registry.ico delete mode 100644 samples/regtest/regtest.cpp delete mode 100644 samples/regtest/regtest.rc delete mode 100644 samples/regtest/value1.ico delete mode 100644 samples/regtest/value2.ico delete mode 100644 samples/resource/.cvsignore delete mode 100644 samples/resource/Makefile delete mode 100644 samples/resource/Makefile.in delete mode 100644 samples/resource/dialog1.h delete mode 100644 samples/resource/dialog1.wxr delete mode 100644 samples/resource/makefile.b32 delete mode 100644 samples/resource/makefile.bcc delete mode 100644 samples/resource/makefile.dos delete mode 100644 samples/resource/makefile.g95 delete mode 100644 samples/resource/makefile.sc delete mode 100644 samples/resource/makefile.unx delete mode 100644 samples/resource/makefile.vc delete mode 100644 samples/resource/makefile.vms delete mode 100644 samples/resource/makefile.wat delete mode 100644 samples/resource/menu1.wxr delete mode 100644 samples/resource/resource.cpp delete mode 100644 samples/resource/resource.def delete mode 100644 samples/resource/resource.h delete mode 100644 samples/resource/resource.rc delete mode 100644 samples/sashtest/.cvsignore delete mode 100644 samples/sashtest/Makefile delete mode 100644 samples/sashtest/Makefile.in delete mode 100644 samples/sashtest/makefile.b32 delete mode 100644 samples/sashtest/makefile.bcc delete mode 100644 samples/sashtest/makefile.g95 delete mode 100644 samples/sashtest/makefile.unx delete mode 100644 samples/sashtest/makefile.vc delete mode 100644 samples/sashtest/makefile.wat delete mode 100644 samples/sashtest/sashtest.cpp delete mode 100644 samples/sashtest/sashtest.h delete mode 100644 samples/sashtest/sashtest.ico delete mode 100644 samples/sashtest/sashtest.rc delete mode 100644 samples/splitter/.cvsignore delete mode 100644 samples/splitter/Makefile delete mode 100644 samples/splitter/Makefile.in delete mode 100644 samples/splitter/makefile.b32 delete mode 100644 samples/splitter/makefile.bcc delete mode 100644 samples/splitter/makefile.g95 delete mode 100644 samples/splitter/makefile.unx delete mode 100644 samples/splitter/makefile.vc delete mode 100644 samples/splitter/makefile.wat delete mode 100644 samples/splitter/mondrian.ico delete mode 100644 samples/splitter/test.cpp delete mode 100644 samples/splitter/test.def delete mode 100644 samples/splitter/test.rc delete mode 100644 samples/tab/.cvsignore delete mode 100644 samples/tab/Makefile delete mode 100644 samples/tab/Makefile.in delete mode 100644 samples/tab/makefile.b32 delete mode 100644 samples/tab/makefile.bcc delete mode 100644 samples/tab/makefile.dos delete mode 100644 samples/tab/makefile.g95 delete mode 100644 samples/tab/makefile.unx delete mode 100644 samples/tab/makefile.vc delete mode 100644 samples/tab/makefile.wat delete mode 100644 samples/tab/mondrian.ico delete mode 100644 samples/tab/test.cpp delete mode 100644 samples/tab/test.def delete mode 100644 samples/tab/test.h delete mode 100644 samples/tab/test.rc delete mode 100644 samples/taskbar/makefile.b32 delete mode 100644 samples/taskbar/makefile.dos delete mode 100644 samples/taskbar/makefile.g95 delete mode 100644 samples/taskbar/makefile.vc delete mode 100644 samples/taskbar/makefile.wat delete mode 100644 samples/taskbar/mondrian.ico delete mode 100644 samples/taskbar/tbtest.cpp delete mode 100644 samples/taskbar/tbtest.def delete mode 100644 samples/taskbar/tbtest.h delete mode 100644 samples/taskbar/tbtest.rc delete mode 100644 samples/thread/.cvsignore delete mode 100644 samples/thread/Makefile delete mode 100644 samples/thread/Makefile.in delete mode 100644 samples/thread/makefile.b32 delete mode 100644 samples/thread/makefile.dos delete mode 100644 samples/thread/makefile.g95 delete mode 100644 samples/thread/makefile.unx delete mode 100644 samples/thread/makefile.vc delete mode 100644 samples/thread/makefile.wat delete mode 100644 samples/thread/test.cpp delete mode 100644 samples/thread/test.def delete mode 100644 samples/thread/test.rc delete mode 100644 samples/toolbar/.cvsignore delete mode 100644 samples/toolbar/Makefile delete mode 100644 samples/toolbar/Makefile.in delete mode 100644 samples/toolbar/bitmaps/copy.bmp delete mode 100644 samples/toolbar/bitmaps/copy.xpm delete mode 100644 samples/toolbar/bitmaps/cut.bmp delete mode 100644 samples/toolbar/bitmaps/cut.xpm delete mode 100644 samples/toolbar/bitmaps/help.bmp delete mode 100644 samples/toolbar/bitmaps/help.xpm delete mode 100644 samples/toolbar/bitmaps/new.bmp delete mode 100644 samples/toolbar/bitmaps/new.xpm delete mode 100644 samples/toolbar/bitmaps/open.bmp delete mode 100644 samples/toolbar/bitmaps/open.xpm delete mode 100644 samples/toolbar/bitmaps/page.bmp delete mode 100644 samples/toolbar/bitmaps/paste.bmp delete mode 100644 samples/toolbar/bitmaps/preview.bmp delete mode 100644 samples/toolbar/bitmaps/preview.xpm delete mode 100644 samples/toolbar/bitmaps/print.bmp delete mode 100644 samples/toolbar/bitmaps/print.xpm delete mode 100644 samples/toolbar/bitmaps/save.bmp delete mode 100644 samples/toolbar/bitmaps/save.xpm delete mode 100644 samples/toolbar/makefile.b32 delete mode 100644 samples/toolbar/makefile.bcc delete mode 100644 samples/toolbar/makefile.dos delete mode 100644 samples/toolbar/makefile.g95 delete mode 100644 samples/toolbar/makefile.unx delete mode 100644 samples/toolbar/makefile.vc delete mode 100644 samples/toolbar/makefile.wat delete mode 100644 samples/toolbar/mondrian.ico delete mode 100644 samples/toolbar/mondrian.xpm delete mode 100644 samples/toolbar/test.cpp delete mode 100644 samples/toolbar/test.def delete mode 100644 samples/toolbar/test.h delete mode 100644 samples/toolbar/test.rc delete mode 100644 samples/treectrl/.cvsignore delete mode 100644 samples/treectrl/Makefile delete mode 100644 samples/treectrl/Makefile.in delete mode 100644 samples/treectrl/bitmaps/file1.bmp delete mode 100644 samples/treectrl/bitmaps/file1.ico delete mode 100644 samples/treectrl/bitmaps/folder1.bmp delete mode 100644 samples/treectrl/bitmaps/folder1.ico delete mode 100644 samples/treectrl/icon1.xpm delete mode 100644 samples/treectrl/icon2.xpm delete mode 100644 samples/treectrl/makefile.b32 delete mode 100644 samples/treectrl/makefile.bcc delete mode 100644 samples/treectrl/makefile.dos delete mode 100644 samples/treectrl/makefile.g95 delete mode 100644 samples/treectrl/makefile.unx delete mode 100644 samples/treectrl/makefile.vc delete mode 100644 samples/treectrl/makefile.wat delete mode 100644 samples/treectrl/mondrian.ico delete mode 100644 samples/treectrl/mondrian.xpm delete mode 100644 samples/treectrl/treetest.cpp delete mode 100644 samples/treectrl/treetest.def delete mode 100644 samples/treectrl/treetest.h delete mode 100644 samples/treectrl/treetest.rc delete mode 100644 samples/typetest/.cvsignore delete mode 100644 samples/typetest/Makefile delete mode 100644 samples/typetest/Makefile.in delete mode 100644 samples/typetest/makefile.b32 delete mode 100644 samples/typetest/makefile.bcc delete mode 100644 samples/typetest/makefile.dos delete mode 100644 samples/typetest/makefile.g95 delete mode 100644 samples/typetest/makefile.unx delete mode 100644 samples/typetest/makefile.vc delete mode 100644 samples/typetest/makefile.wat delete mode 100644 samples/typetest/mondrian.ico delete mode 100644 samples/typetest/mondrian.xpm delete mode 100644 samples/typetest/typetest.cpp delete mode 100644 samples/typetest/typetest.def delete mode 100644 samples/typetest/typetest.h delete mode 100644 samples/typetest/typetest.rc delete mode 100644 samples/validate/.cvsignore delete mode 100644 samples/validate/Makefile delete mode 100644 samples/validate/Makefile.in delete mode 100644 samples/validate/makefile.b32 delete mode 100644 samples/validate/makefile.bcc delete mode 100644 samples/validate/makefile.dos delete mode 100644 samples/validate/makefile.g95 delete mode 100644 samples/validate/makefile.vc delete mode 100644 samples/validate/makefile.wat delete mode 100644 samples/validate/mondrian.ico delete mode 100644 samples/validate/mondrian.xpm delete mode 100644 samples/validate/validate.cpp delete mode 100644 samples/validate/validate.def delete mode 100644 samples/validate/validate.h delete mode 100644 samples/validate/validate.rc delete mode 100644 samples/wxpoem/.cvsignore delete mode 100644 samples/wxpoem/Makefile delete mode 100644 samples/wxpoem/Makefile.in delete mode 100644 samples/wxpoem/corner1.ico delete mode 100644 samples/wxpoem/corner1.xpm delete mode 100644 samples/wxpoem/corner2.ico delete mode 100644 samples/wxpoem/corner2.xpm delete mode 100644 samples/wxpoem/corner3.ico delete mode 100644 samples/wxpoem/corner3.xpm delete mode 100644 samples/wxpoem/corner4.ico delete mode 100644 samples/wxpoem/corner4.xpm delete mode 100644 samples/wxpoem/makefile.b32 delete mode 100644 samples/wxpoem/makefile.bcc delete mode 100644 samples/wxpoem/makefile.dos delete mode 100644 samples/wxpoem/makefile.g95 delete mode 100644 samples/wxpoem/makefile.unx delete mode 100644 samples/wxpoem/makefile.vc delete mode 100644 samples/wxpoem/makefile.wat delete mode 100644 samples/wxpoem/wxpoem.cpp delete mode 100644 samples/wxpoem/wxpoem.dat delete mode 100644 samples/wxpoem/wxpoem.def delete mode 100644 samples/wxpoem/wxpoem.h delete mode 100644 samples/wxpoem/wxpoem.ico delete mode 100644 samples/wxpoem/wxpoem.rc delete mode 100644 samples/wxpoem/wxpoem.txt delete mode 100644 samples/wxpoem/wxpoem.xpm delete mode 100644 samples/wxsocket/.cvsignore delete mode 100644 samples/wxsocket/Makefile delete mode 100644 samples/wxsocket/Makefile.in delete mode 100644 samples/wxsocket/client.cpp delete mode 100644 samples/wxsocket/client.def delete mode 100644 samples/wxsocket/client.rc delete mode 100644 samples/wxsocket/client.vc delete mode 100644 samples/wxsocket/client.wat delete mode 100644 samples/wxsocket/connect.ico delete mode 100644 samples/wxsocket/makefile.b32 delete mode 100644 samples/wxsocket/makefile.g95 delete mode 100644 samples/wxsocket/mondrian.ico delete mode 100644 samples/wxsocket/mondrian.xpm delete mode 100644 samples/wxsocket/server.cpp delete mode 100644 samples/wxsocket/server.def delete mode 100644 samples/wxsocket/server.rc delete mode 100644 samples/wxsocket/server.vc delete mode 100644 samples/wxsocket/server.wat delete mode 100644 setup/.cvsignore delete mode 100755 setup/general/createall delete mode 100755 setup/general/jointar delete mode 100644 setup/general/makeapp delete mode 100644 setup/general/makedirs delete mode 100644 setup/general/makedoc delete mode 100755 setup/general/mygrep delete mode 100755 setup/general/needed delete mode 100644 setup/maketmpl.in delete mode 100644 setup/rules/bin delete mode 100644 setup/rules/bin2 delete mode 100644 setup/rules/doc delete mode 100644 setup/rules/gbin delete mode 100644 setup/rules/gbin2 delete mode 100644 setup/rules/generic/bin1 delete mode 100644 setup/rules/generic/bin1gen delete mode 100644 setup/rules/generic/bin2 delete mode 100644 setup/rules/generic/bin2gen delete mode 100644 setup/rules/generic/depend delete mode 100644 setup/rules/generic/globals delete mode 100644 setup/rules/generic/lib delete mode 100644 setup/rules/generic/needed delete mode 100644 setup/rules/generic/obj delete mode 100644 setup/rules/generic/slib delete mode 100644 setup/rules/generic/sobj delete mode 100644 setup/rules/glib delete mode 100644 setup/rules/glibbin delete mode 100644 setup/rules/glibgbin delete mode 100644 setup/rules/gslib delete mode 100644 setup/rules/lib delete mode 100644 setup/rules/libbin delete mode 100644 setup/rules/libgbin delete mode 100644 setup/setup.hin delete mode 100755 setup/shared/sharedAIX delete mode 100755 setup/shared/sharedBsd delete mode 100755 setup/shared/sharedDgux delete mode 100755 setup/shared/sharedHpux delete mode 100755 setup/shared/sharedIrix delete mode 100755 setup/shared/sharedLinux delete mode 100755 setup/shared/sharedOSF delete mode 100755 setup/shared/sharedSolaris2 delete mode 100755 setup/shared/sharedSunos4 delete mode 100755 setup/shared/sharedSysV delete mode 100644 setup/substit.in delete mode 100644 src/.cvsignore delete mode 100644 src/Makefile delete mode 100644 src/Makefile.in delete mode 100644 src/common/cmndata.cpp delete mode 100644 src/common/config.cpp delete mode 100644 src/common/cwlex_yy.c delete mode 100644 src/common/cwy_tab.c delete mode 100644 src/common/date.cpp delete mode 100644 src/common/datstrm.cpp delete mode 100644 src/common/db.cpp delete mode 100644 src/common/dbtable.cpp delete mode 100644 src/common/docmdi.cpp delete mode 100644 src/common/docview.cpp delete mode 100644 src/common/doslex.c delete mode 100644 src/common/dosyacc.c delete mode 100644 src/common/dynarray.cpp delete mode 100644 src/common/dynlib.cpp delete mode 100644 src/common/event.cpp delete mode 100644 src/common/extended.c delete mode 100644 src/common/file.cpp delete mode 100644 src/common/fileconf.cpp delete mode 100644 src/common/filefn.cpp delete mode 100644 src/common/framecmn.cpp delete mode 100644 src/common/ftp.cpp delete mode 100644 src/common/gdicmn.cpp delete mode 100644 src/common/glob.inc delete mode 100644 src/common/hash.cpp delete mode 100644 src/common/helpbase.cpp delete mode 100644 src/common/http.cpp delete mode 100644 src/common/image.cpp delete mode 100644 src/common/intl.cpp delete mode 100644 src/common/ipcbase.cpp delete mode 100644 src/common/layout.cpp delete mode 100644 src/common/lexer.l delete mode 100644 src/common/list.cpp delete mode 100644 src/common/log.cpp delete mode 100644 src/common/matrix.cpp delete mode 100644 src/common/memory.cpp delete mode 100644 src/common/mimetype.cpp delete mode 100644 src/common/module.cpp delete mode 100644 src/common/mstream.cpp delete mode 100644 src/common/object.cpp delete mode 100644 src/common/objstrm.cpp delete mode 100644 src/common/odbc.cpp delete mode 100644 src/common/parser.y delete mode 100644 src/common/prntbase.cpp delete mode 100644 src/common/process.cpp delete mode 100644 src/common/protocol.cpp delete mode 100644 src/common/resourc2.cpp delete mode 100644 src/common/resource.cpp delete mode 100644 src/common/sckaddr.cpp delete mode 100644 src/common/sckfile.cpp delete mode 100644 src/common/sckipc.cpp delete mode 100644 src/common/sckstrm.cpp delete mode 100644 src/common/serbase.cpp delete mode 100644 src/common/socket.cpp delete mode 100644 src/common/stream.cpp delete mode 100644 src/common/string.cpp delete mode 100644 src/common/tbarbase.cpp delete mode 100644 src/common/tbarsmpl.cpp delete mode 100644 src/common/textfile.cpp delete mode 100644 src/common/time.cpp delete mode 100644 src/common/timercmn.cpp delete mode 100644 src/common/tokenzr.cpp delete mode 100644 src/common/url.cpp delete mode 100644 src/common/utilscmn.cpp delete mode 100644 src/common/validate.cpp delete mode 100644 src/common/valtext.cpp delete mode 100644 src/common/variant.cpp delete mode 100644 src/common/wfstream.cpp delete mode 100644 src/common/wincmn.cpp delete mode 100644 src/common/wxexpr.cpp delete mode 100644 src/common/zstream.cpp delete mode 100644 src/cygnus.bat delete mode 100644 src/generic/choicdgg.cpp delete mode 100644 src/generic/colrdlgg.cpp delete mode 100644 src/generic/dcpsg.cpp delete mode 100644 src/generic/dirdlgg.cpp delete mode 100644 src/generic/fontdlgg.cpp delete mode 100644 src/generic/gridg.cpp delete mode 100644 src/generic/helpext.cpp delete mode 100644 src/generic/helphtml.cpp delete mode 100644 src/generic/helpxlp.cpp delete mode 100644 src/generic/imaglist.cpp delete mode 100644 src/generic/laywin.cpp delete mode 100644 src/generic/listctrl.cpp delete mode 100644 src/generic/msgdlgg.cpp delete mode 100644 src/generic/notebook.cpp delete mode 100644 src/generic/panelg.cpp delete mode 100644 src/generic/printps.cpp delete mode 100644 src/generic/prntdlgg.cpp delete mode 100644 src/generic/prop.cpp delete mode 100644 src/generic/propform.cpp delete mode 100644 src/generic/proplist.cpp delete mode 100644 src/generic/sashwin.cpp delete mode 100644 src/generic/scrolwin.cpp delete mode 100644 src/generic/splitter.cpp delete mode 100644 src/generic/statusbr.cpp delete mode 100644 src/generic/tabg.cpp delete mode 100644 src/generic/textdlgg.cpp delete mode 100644 src/generic/treectrl.cpp delete mode 100644 src/gtk.inc delete mode 100644 src/gtk/accel.cpp delete mode 100644 src/gtk/app.cpp delete mode 100644 src/gtk/bdiag.xbm delete mode 100644 src/gtk/bitmap.cpp delete mode 100644 src/gtk/bmpbuttn.cpp delete mode 100644 src/gtk/brush.cpp delete mode 100644 src/gtk/button.cpp delete mode 100644 src/gtk/cdiag.xbm delete mode 100644 src/gtk/checkbox.cpp delete mode 100644 src/gtk/checklst.cpp delete mode 100644 src/gtk/choice.cpp delete mode 100644 src/gtk/clipbrd.cpp delete mode 100644 src/gtk/colour.cpp delete mode 100644 src/gtk/combobox.cpp delete mode 100644 src/gtk/control.cpp delete mode 100644 src/gtk/cross.xbm delete mode 100644 src/gtk/cursor.cpp delete mode 100644 src/gtk/data.cpp delete mode 100644 src/gtk/dataobj.cpp delete mode 100644 src/gtk/dc.cpp delete mode 100644 src/gtk/dcclient.cpp delete mode 100644 src/gtk/dcmemory.cpp delete mode 100644 src/gtk/dcscreen.cpp delete mode 100644 src/gtk/dialog.cpp delete mode 100644 src/gtk/dnd.cpp delete mode 100644 src/gtk/fdiag.xbm delete mode 100644 src/gtk/filedlg.cpp delete mode 100644 src/gtk/font.cpp delete mode 100644 src/gtk/frame.cpp delete mode 100644 src/gtk/gauge.cpp delete mode 100644 src/gtk/gdiobj.cpp delete mode 100644 src/gtk/horiz.xbm delete mode 100644 src/gtk/icon.cpp delete mode 100644 src/gtk/joystick.cpp delete mode 100644 src/gtk/listbox.cpp delete mode 100644 src/gtk/main.cpp delete mode 100644 src/gtk/makefile.unx delete mode 100644 src/gtk/mdi.cpp delete mode 100644 src/gtk/menu.cpp delete mode 100644 src/gtk/minifram.cpp delete mode 100644 src/gtk/notebook.cpp delete mode 100644 src/gtk/palette.cpp delete mode 100644 src/gtk/pen.cpp delete mode 100644 src/gtk/radiobox.cpp delete mode 100644 src/gtk/radiobut.cpp delete mode 100644 src/gtk/region.cpp delete mode 100644 src/gtk/scrolbar.cpp delete mode 100644 src/gtk/settings.cpp delete mode 100644 src/gtk/slider.cpp delete mode 100644 src/gtk/spinbutt.cpp delete mode 100644 src/gtk/statbmp.cpp delete mode 100644 src/gtk/statbox.cpp delete mode 100644 src/gtk/stattext.cpp delete mode 100644 src/gtk/tbargtk.cpp delete mode 100644 src/gtk/textctrl.cpp delete mode 100644 src/gtk/threadgui.inc delete mode 100644 src/gtk/threadno.cpp delete mode 100644 src/gtk/threadpsx.cpp delete mode 100644 src/gtk/threadsgi.cpp delete mode 100644 src/gtk/timer.cpp delete mode 100644 src/gtk/tooltip.cpp delete mode 100644 src/gtk/treectrl.cpp delete mode 100644 src/gtk/utilsgtk.cpp delete mode 100644 src/gtk/utilsres.cpp delete mode 100644 src/gtk/verti.xbm delete mode 100644 src/gtk/wave.cpp delete mode 100644 src/gtk/win_gtk.c delete mode 100644 src/gtk/window.cpp delete mode 100644 src/gtk1/accel.cpp delete mode 100644 src/gtk1/app.cpp delete mode 100644 src/gtk1/bdiag.xbm delete mode 100644 src/gtk1/bitmap.cpp delete mode 100644 src/gtk1/bmpbuttn.cpp delete mode 100644 src/gtk1/brush.cpp delete mode 100644 src/gtk1/button.cpp delete mode 100644 src/gtk1/cdiag.xbm delete mode 100644 src/gtk1/checkbox.cpp delete mode 100644 src/gtk1/checklst.cpp delete mode 100644 src/gtk1/choice.cpp delete mode 100644 src/gtk1/clipbrd.cpp delete mode 100644 src/gtk1/colour.cpp delete mode 100644 src/gtk1/combobox.cpp delete mode 100644 src/gtk1/control.cpp delete mode 100644 src/gtk1/cross.xbm delete mode 100644 src/gtk1/cursor.cpp delete mode 100644 src/gtk1/data.cpp delete mode 100644 src/gtk1/dataobj.cpp delete mode 100644 src/gtk1/dc.cpp delete mode 100644 src/gtk1/dcclient.cpp delete mode 100644 src/gtk1/dcmemory.cpp delete mode 100644 src/gtk1/dcscreen.cpp delete mode 100644 src/gtk1/dialog.cpp delete mode 100644 src/gtk1/dnd.cpp delete mode 100644 src/gtk1/fdiag.xbm delete mode 100644 src/gtk1/filedlg.cpp delete mode 100644 src/gtk1/font.cpp delete mode 100644 src/gtk1/frame.cpp delete mode 100644 src/gtk1/gauge.cpp delete mode 100644 src/gtk1/gdiobj.cpp delete mode 100644 src/gtk1/horiz.xbm delete mode 100644 src/gtk1/icon.cpp delete mode 100644 src/gtk1/joystick.cpp delete mode 100644 src/gtk1/listbox.cpp delete mode 100644 src/gtk1/main.cpp delete mode 100644 src/gtk1/makefile.unx delete mode 100644 src/gtk1/mdi.cpp delete mode 100644 src/gtk1/menu.cpp delete mode 100644 src/gtk1/minifram.cpp delete mode 100644 src/gtk1/notebook.cpp delete mode 100644 src/gtk1/palette.cpp delete mode 100644 src/gtk1/pen.cpp delete mode 100644 src/gtk1/radiobox.cpp delete mode 100644 src/gtk1/radiobut.cpp delete mode 100644 src/gtk1/region.cpp delete mode 100644 src/gtk1/scrolbar.cpp delete mode 100644 src/gtk1/settings.cpp delete mode 100644 src/gtk1/slider.cpp delete mode 100644 src/gtk1/spinbutt.cpp delete mode 100644 src/gtk1/statbmp.cpp delete mode 100644 src/gtk1/statbox.cpp delete mode 100644 src/gtk1/stattext.cpp delete mode 100644 src/gtk1/tbargtk.cpp delete mode 100644 src/gtk1/textctrl.cpp delete mode 100644 src/gtk1/threadgui.inc delete mode 100644 src/gtk1/threadno.cpp delete mode 100644 src/gtk1/threadpsx.cpp delete mode 100644 src/gtk1/threadsgi.cpp delete mode 100644 src/gtk1/timer.cpp delete mode 100644 src/gtk1/tooltip.cpp delete mode 100644 src/gtk1/treectrl.cpp delete mode 100644 src/gtk1/utilsgtk.cpp delete mode 100644 src/gtk1/utilsres.cpp delete mode 100644 src/gtk1/verti.xbm delete mode 100644 src/gtk1/wave.cpp delete mode 100644 src/gtk1/win_gtk.c delete mode 100644 src/gtk1/window.cpp delete mode 100644 src/iodbc/AUTHORS delete mode 100644 src/iodbc/COPYING delete mode 100644 src/iodbc/Changes.log delete mode 100644 src/iodbc/IAFA-PACKAGE delete mode 100644 src/iodbc/INSTALL delete mode 100644 src/iodbc/NEWS delete mode 100644 src/iodbc/README delete mode 100755 src/iodbc/autoconfig delete mode 100644 src/iodbc/catalog.c delete mode 100644 src/iodbc/config.h delete mode 100644 src/iodbc/connect.c delete mode 100644 src/iodbc/dlf.c delete mode 100644 src/iodbc/dlf.h delete mode 100644 src/iodbc/dlproc.c delete mode 100644 src/iodbc/dlproc.h delete mode 100644 src/iodbc/execute.c delete mode 100644 src/iodbc/fetch.c delete mode 100644 src/iodbc/hdbc.c delete mode 100644 src/iodbc/hdbc.h delete mode 100644 src/iodbc/henv.c delete mode 100644 src/iodbc/henv.ci delete mode 100644 src/iodbc/henv.h delete mode 100644 src/iodbc/herr.c delete mode 100644 src/iodbc/herr.ci delete mode 100644 src/iodbc/herr.h delete mode 100644 src/iodbc/hstmt.c delete mode 100644 src/iodbc/hstmt.h delete mode 100644 src/iodbc/info.c delete mode 100644 src/iodbc/iodbc.h delete mode 100644 src/iodbc/isql.h delete mode 100644 src/iodbc/isqlext.h delete mode 100644 src/iodbc/itrace.c delete mode 100644 src/iodbc/itrace.h delete mode 100644 src/iodbc/misc.c delete mode 100644 src/iodbc/prepare.c delete mode 100644 src/iodbc/result.c delete mode 100644 src/iodbc/shrsub.exp delete mode 100644 src/mac/accel.cpp delete mode 100644 src/mac/app.cpp delete mode 100644 src/mac/bitmap.cpp delete mode 100644 src/mac/bmpbuttn.cpp delete mode 100644 src/mac/brush.cpp delete mode 100644 src/mac/button.cpp delete mode 100644 src/mac/carbon/accel.cpp delete mode 100644 src/mac/carbon/app.cpp delete mode 100644 src/mac/carbon/bitmap.cpp delete mode 100644 src/mac/carbon/bmpbuttn.cpp delete mode 100644 src/mac/carbon/brush.cpp delete mode 100644 src/mac/carbon/button.cpp delete mode 100644 src/mac/carbon/checkbox.cpp delete mode 100644 src/mac/carbon/checklst.cpp delete mode 100644 src/mac/carbon/choice.cpp delete mode 100644 src/mac/carbon/clipbrd.cpp delete mode 100644 src/mac/carbon/colordlg.cpp delete mode 100644 src/mac/carbon/colour.cpp delete mode 100644 src/mac/carbon/combobox.cpp delete mode 100644 src/mac/carbon/control.cpp delete mode 100644 src/mac/carbon/cursor.cpp delete mode 100644 src/mac/carbon/data.cpp delete mode 100644 src/mac/carbon/dc.cpp delete mode 100644 src/mac/carbon/dcclient.cpp delete mode 100644 src/mac/carbon/dcmemory.cpp delete mode 100644 src/mac/carbon/dcscreen.cpp delete mode 100644 src/mac/carbon/dialog.cpp delete mode 100644 src/mac/carbon/dirdlg.cpp delete mode 100644 src/mac/carbon/dnd.cpp delete mode 100644 src/mac/carbon/filedlg.cpp delete mode 100644 src/mac/carbon/font.cpp delete mode 100644 src/mac/carbon/fontdlg.cpp delete mode 100644 src/mac/carbon/frame.cpp delete mode 100644 src/mac/carbon/gauge.cpp delete mode 100644 src/mac/carbon/gdiobj.cpp delete mode 100644 src/mac/carbon/helpxxxx.cpp delete mode 100644 src/mac/carbon/icon.cpp delete mode 100644 src/mac/carbon/imaglist.cpp delete mode 100644 src/mac/carbon/joystick.cpp delete mode 100644 src/mac/carbon/listbox.cpp delete mode 100644 src/mac/carbon/listctrl.cpp delete mode 100644 src/mac/carbon/main.cpp delete mode 100644 src/mac/carbon/makefile.nt delete mode 100644 src/mac/carbon/makefile.unx delete mode 100644 src/mac/carbon/mdi.cpp delete mode 100644 src/mac/carbon/menu.cpp delete mode 100644 src/mac/carbon/menuitem.cpp delete mode 100644 src/mac/carbon/metafile.cpp delete mode 100644 src/mac/carbon/minifram.cpp delete mode 100644 src/mac/carbon/msgdlg.cpp delete mode 100644 src/mac/carbon/notebook.cpp delete mode 100644 src/mac/carbon/palette.cpp delete mode 100644 src/mac/carbon/pen.cpp delete mode 100644 src/mac/carbon/print.cpp delete mode 100644 src/mac/carbon/printdlg.cpp delete mode 100644 src/mac/carbon/radiobox.cpp delete mode 100644 src/mac/carbon/radiobut.cpp delete mode 100644 src/mac/carbon/region.cpp delete mode 100644 src/mac/carbon/scrolbar.cpp delete mode 100644 src/mac/carbon/settings.cpp delete mode 100644 src/mac/carbon/slider.cpp delete mode 100644 src/mac/carbon/spinbutt.cpp delete mode 100644 src/mac/carbon/statbmp.cpp delete mode 100644 src/mac/carbon/statbox.cpp delete mode 100644 src/mac/carbon/stattext.cpp delete mode 100644 src/mac/carbon/statusbr.cpp delete mode 100644 src/mac/carbon/tabctrl.cpp delete mode 100644 src/mac/carbon/taskbar.cpp delete mode 100644 src/mac/carbon/textctrl.cpp delete mode 100644 src/mac/carbon/thread.cpp delete mode 100644 src/mac/carbon/timer.cpp delete mode 100644 src/mac/carbon/toolbar.cpp delete mode 100644 src/mac/carbon/treectrl.cpp delete mode 100644 src/mac/carbon/utils.cpp delete mode 100644 src/mac/carbon/utilsexc.cpp delete mode 100644 src/mac/carbon/wave.cpp delete mode 100644 src/mac/carbon/window.cpp delete mode 100644 src/mac/checkbox.cpp delete mode 100644 src/mac/checklst.cpp delete mode 100644 src/mac/choice.cpp delete mode 100644 src/mac/clipbrd.cpp delete mode 100644 src/mac/colordlg.cpp delete mode 100644 src/mac/colour.cpp delete mode 100644 src/mac/combobox.cpp delete mode 100644 src/mac/control.cpp delete mode 100644 src/mac/cursor.cpp delete mode 100644 src/mac/data.cpp delete mode 100644 src/mac/dc.cpp delete mode 100644 src/mac/dcclient.cpp delete mode 100644 src/mac/dcmemory.cpp delete mode 100644 src/mac/dcscreen.cpp delete mode 100644 src/mac/dialog.cpp delete mode 100644 src/mac/dirdlg.cpp delete mode 100644 src/mac/dnd.cpp delete mode 100644 src/mac/filedlg.cpp delete mode 100644 src/mac/font.cpp delete mode 100644 src/mac/fontdlg.cpp delete mode 100644 src/mac/frame.cpp delete mode 100644 src/mac/gauge.cpp delete mode 100644 src/mac/gdiobj.cpp delete mode 100644 src/mac/helpxxxx.cpp delete mode 100644 src/mac/icon.cpp delete mode 100644 src/mac/imaglist.cpp delete mode 100644 src/mac/joystick.cpp delete mode 100644 src/mac/listbox.cpp delete mode 100644 src/mac/listctrl.cpp delete mode 100644 src/mac/macsock/sock_PPC.lib delete mode 100644 src/mac/main.cpp delete mode 100644 src/mac/makefile.nt delete mode 100644 src/mac/makefile.unx delete mode 100644 src/mac/mdi.cpp delete mode 100644 src/mac/menu.cpp delete mode 100644 src/mac/menuitem.cpp delete mode 100644 src/mac/metafile.cpp delete mode 100644 src/mac/minifram.cpp delete mode 100644 src/mac/msgdlg.cpp delete mode 100644 src/mac/notebook.cpp delete mode 100644 src/mac/palette.cpp delete mode 100644 src/mac/pen.cpp delete mode 100644 src/mac/print.cpp delete mode 100644 src/mac/printdlg.cpp delete mode 100644 src/mac/radiobox.cpp delete mode 100644 src/mac/radiobut.cpp delete mode 100644 src/mac/region.cpp delete mode 100644 src/mac/scrolbar.cpp delete mode 100644 src/mac/settings.cpp delete mode 100644 src/mac/slider.cpp delete mode 100644 src/mac/spinbutt.cpp delete mode 100644 src/mac/statbmp.cpp delete mode 100644 src/mac/statbox.cpp delete mode 100644 src/mac/stattext.cpp delete mode 100644 src/mac/statusbr.cpp delete mode 100644 src/mac/tabctrl.cpp delete mode 100644 src/mac/taskbar.cpp delete mode 100644 src/mac/textctrl.cpp delete mode 100644 src/mac/thread.cpp delete mode 100644 src/mac/timer.cpp delete mode 100644 src/mac/toolbar.cpp delete mode 100644 src/mac/treectrl.cpp delete mode 100644 src/mac/utils.cpp delete mode 100644 src/mac/utilsexc.cpp delete mode 100644 src/mac/wave.cpp delete mode 100644 src/mac/window.cpp delete mode 100644 src/make.env delete mode 100644 src/make_cw.mcp delete mode 100644 src/makeb32.env delete mode 100644 src/makebcc.env delete mode 100644 src/makeenvs/linux.env delete mode 100644 src/makeenvs/sgi.env delete mode 100644 src/makeenvs/solaris.env delete mode 100644 src/makefile.bcc delete mode 100644 src/makefile.dos delete mode 100644 src/makefile.vc delete mode 100644 src/makeg95.env delete mode 100644 src/makelib.env delete mode 100644 src/makelib.vc delete mode 100644 src/makemsc.env delete mode 100644 src/makeprog.b32 delete mode 100644 src/makeprog.bcc delete mode 100644 src/makeprog.env delete mode 100644 src/makeprog.msc delete mode 100644 src/makeprog.sl delete mode 100644 src/makeprog.vc delete mode 100644 src/makeprog.wat delete mode 100644 src/makesc.env delete mode 100644 src/makesl.env delete mode 100644 src/maketwin.env delete mode 100644 src/makevc.env delete mode 100644 src/makewat.env delete mode 100644 src/mingegcs.bat delete mode 100644 src/mingw32.bat delete mode 100644 src/motif.inc delete mode 100644 src/motif/accel.cpp delete mode 100644 src/motif/app.cpp delete mode 100644 src/motif/bdiag.xbm delete mode 100644 src/motif/bitmap.cpp delete mode 100644 src/motif/bmpbuttn.cpp delete mode 100644 src/motif/brush.cpp delete mode 100644 src/motif/button.cpp delete mode 100644 src/motif/cdiag.xbm delete mode 100644 src/motif/checkbox.cpp delete mode 100644 src/motif/checklst.cpp delete mode 100644 src/motif/choice.cpp delete mode 100644 src/motif/clipbrd.cpp delete mode 100644 src/motif/colordlg.cpp delete mode 100644 src/motif/colour.cpp delete mode 100644 src/motif/combobox.cpp delete mode 100644 src/motif/control.cpp delete mode 100644 src/motif/cross.xbm delete mode 100644 src/motif/cursor.cpp delete mode 100644 src/motif/data.cpp delete mode 100644 src/motif/dataobj.cpp delete mode 100644 src/motif/dc.cpp delete mode 100644 src/motif/dcclient.cpp delete mode 100644 src/motif/dcmemory.cpp delete mode 100644 src/motif/dcscreen.cpp delete mode 100644 src/motif/dialog.cpp delete mode 100644 src/motif/dirdlg.cpp delete mode 100644 src/motif/dnd.cpp delete mode 100644 src/motif/fdiag.xbm delete mode 100644 src/motif/filedlg.cpp delete mode 100644 src/motif/font.cpp delete mode 100644 src/motif/fontdlg.cpp delete mode 100644 src/motif/frame.cpp delete mode 100644 src/motif/gauge.cpp delete mode 100644 src/motif/gdiobj.cpp delete mode 100644 src/motif/helpxxxx.cpp delete mode 100644 src/motif/horiz.xbm delete mode 100644 src/motif/icon.cpp delete mode 100644 src/motif/joystick.cpp delete mode 100644 src/motif/listbox.cpp delete mode 100644 src/motif/main.cpp delete mode 100644 src/motif/makefile.unx delete mode 100644 src/motif/mdi.cpp delete mode 100644 src/motif/mdi/COPYRIGHT delete mode 100644 src/motif/mdi/Imakefile delete mode 100644 src/motif/mdi/README delete mode 100644 src/motif/mdi/config/C++.rules delete mode 100644 src/motif/mdi/config/MDI.tmpl delete mode 100644 src/motif/mdi/doc/canvas.html delete mode 100644 src/motif/mdi/doc/mdi.html delete mode 100644 src/motif/mdi/doc/mwindow.html delete mode 100644 src/motif/mdi/doc/pics/classes.gif delete mode 100644 src/motif/mdi/doc/pics/mdi.gif delete mode 100644 src/motif/mdi/doc/pics/winclass.gif delete mode 100644 src/motif/mdi/lib/Imakefile delete mode 100644 src/motif/mdi/lib/XsComponent.C delete mode 100644 src/motif/mdi/lib/XsComponent.h delete mode 100644 src/motif/mdi/lib/XsMDICanvas.C delete mode 100644 src/motif/mdi/lib/XsMDICanvas.h delete mode 100644 src/motif/mdi/lib/XsMDIWindow.C delete mode 100644 src/motif/mdi/lib/XsMDIWindow.h delete mode 100644 src/motif/mdi/lib/XsMotifWindow.C delete mode 100644 src/motif/mdi/lib/XsMotifWindow.h delete mode 100644 src/motif/mdi/lib/XsMoveOutline.C delete mode 100644 src/motif/mdi/lib/XsMoveOutline.h delete mode 100644 src/motif/mdi/lib/XsOutline.C delete mode 100644 src/motif/mdi/lib/XsOutline.h delete mode 100644 src/motif/mdi/lib/XsResizeOutline.C delete mode 100644 src/motif/mdi/lib/XsResizeOutline.h delete mode 100644 src/motif/mdi/lib/xs_motif_icon.xbm delete mode 100644 src/motif/mdi/test/Imakefile delete mode 100644 src/motif/mdi/test/MDItest.C delete mode 100644 src/motif/menu.cpp delete mode 100644 src/motif/menuitem.cpp delete mode 100644 src/motif/metafile.cpp delete mode 100644 src/motif/minifram.cpp delete mode 100644 src/motif/msgdlg.cpp delete mode 100644 src/motif/palette.cpp delete mode 100644 src/motif/pen.cpp delete mode 100644 src/motif/printdlg.cpp delete mode 100644 src/motif/radiobox.cpp delete mode 100644 src/motif/radiobut.cpp delete mode 100644 src/motif/region.cpp delete mode 100644 src/motif/scrolbar.cpp delete mode 100644 src/motif/settings.cpp delete mode 100644 src/motif/slider.cpp delete mode 100644 src/motif/spinbutt.cpp delete mode 100644 src/motif/statbmp.cpp delete mode 100644 src/motif/statbox.cpp delete mode 100644 src/motif/stattext.cpp delete mode 100644 src/motif/tabctrl.cpp delete mode 100644 src/motif/taskbar.cpp delete mode 100644 src/motif/textctrl.cpp delete mode 100644 src/motif/thread.cpp delete mode 100644 src/motif/timer.cpp delete mode 100644 src/motif/toolbar.cpp delete mode 100644 src/motif/utils.cpp delete mode 100644 src/motif/utilsexc.cpp delete mode 100644 src/motif/verti.xbm delete mode 100644 src/motif/wave.cpp delete mode 100644 src/motif/window.cpp delete mode 100644 src/motif/wxwin.xbm delete mode 100644 src/motif/xmcombo/combobox.doc delete mode 100644 src/motif/xmcombo/combobox.man delete mode 100644 src/motif/xmcombo/combop.h delete mode 100644 src/motif/xmcombo/copying.txt delete mode 100644 src/motif/xmcombo/demo.c delete mode 100644 src/motif/xmcombo/xmcombo.c delete mode 100644 src/motif/xmcombo/xmcombo.h delete mode 100644 src/msw/accel.cpp delete mode 100644 src/msw/app.cpp delete mode 100644 src/msw/bitmap.cpp delete mode 100644 src/msw/bmpbuttn.cpp delete mode 100644 src/msw/brush.cpp delete mode 100644 src/msw/button.cpp delete mode 100644 src/msw/checkbox.cpp delete mode 100644 src/msw/checklst.cpp delete mode 100644 src/msw/choice.cpp delete mode 100644 src/msw/clipbrd.cpp delete mode 100644 src/msw/colordlg.cpp delete mode 100644 src/msw/colour.cpp delete mode 100644 src/msw/combobox.cpp delete mode 100644 src/msw/control.cpp delete mode 100644 src/msw/ctl3d/borland/makefile.b32 delete mode 100644 src/msw/ctl3d/borland/makefile.bcc delete mode 100644 src/msw/ctl3d/ctl3d.dll delete mode 100644 src/msw/ctl3d/ctl3d32.dll delete mode 100644 src/msw/ctl3d/ctl3dv2.dll delete mode 100644 src/msw/ctl3d/msvc/ctl3d.h delete mode 100644 src/msw/ctl3d/msvc/ctl3d.lib delete mode 100644 src/msw/ctl3d/msvc/ctl3dv2.lib delete mode 100644 src/msw/ctl3d/readme.txt delete mode 100644 src/msw/ctl3d/wat32/import32.zip delete mode 100644 src/msw/ctl3d/wat386/ctl3d.h delete mode 100644 src/msw/ctl3d/wat386/ctl3d32.c delete mode 100644 src/msw/ctl3d/wat386/ctl3d32.lnk delete mode 100644 src/msw/ctl3d/wat386/ctl3d32.obj delete mode 100644 src/msw/ctl3d/wat386/ctl3d32.txt delete mode 100644 src/msw/ctl3d/wat386/makefile.wat delete mode 100644 src/msw/curico.cpp delete mode 100644 src/msw/cursor.cpp delete mode 100644 src/msw/data.cpp delete mode 100644 src/msw/dc.cpp delete mode 100644 src/msw/dcclient.cpp delete mode 100644 src/msw/dcmemory.cpp delete mode 100644 src/msw/dcprint.cpp delete mode 100644 src/msw/dcscreen.cpp delete mode 100644 src/msw/dde.cpp delete mode 100644 src/msw/dialog.cpp delete mode 100644 src/msw/dib.cpp delete mode 100644 src/msw/dibutils.cpp delete mode 100644 src/msw/dirdlg.cpp delete mode 100644 src/msw/dummy.cpp delete mode 100644 src/msw/dummydll.cpp delete mode 100644 src/msw/filedlg.cpp delete mode 100644 src/msw/font.cpp delete mode 100644 src/msw/fontdlg.cpp delete mode 100644 src/msw/frame.cpp delete mode 100644 src/msw/gauge95.cpp delete mode 100644 src/msw/gaugemsw.cpp delete mode 100644 src/msw/gdiobj.cpp delete mode 100644 src/msw/helpwin.cpp delete mode 100644 src/msw/icon.cpp delete mode 100644 src/msw/imaglist.cpp delete mode 100644 src/msw/iniconf.cpp delete mode 100644 src/msw/joystick.cpp delete mode 100644 src/msw/listbox.cpp delete mode 100644 src/msw/listctrl.cpp delete mode 100644 src/msw/main.cpp delete mode 100644 src/msw/makefile.b32 delete mode 100644 src/msw/makefile.bcc delete mode 100644 src/msw/makefile.dos delete mode 100644 src/msw/makefile.g95 delete mode 100644 src/msw/makefile.sc delete mode 100644 src/msw/makefile.sl delete mode 100644 src/msw/makefile.twn delete mode 100644 src/msw/makefile.vc delete mode 100644 src/msw/makefile.wat delete mode 100644 src/msw/mdi.cpp delete mode 100644 src/msw/menu.cpp delete mode 100644 src/msw/menuitem.cpp delete mode 100644 src/msw/metafile.cpp delete mode 100644 src/msw/minifram.cpp delete mode 100644 src/msw/msgdlg.cpp delete mode 100644 src/msw/nativdlg.cpp delete mode 100644 src/msw/notebook.cpp delete mode 100644 src/msw/ole/automtn.cpp delete mode 100644 src/msw/ole/dataobj.cpp delete mode 100644 src/msw/ole/dropsrc.cpp delete mode 100644 src/msw/ole/droptgt.cpp delete mode 100644 src/msw/ole/oleutils.cpp delete mode 100644 src/msw/ole/uuid.cpp delete mode 100644 src/msw/ownerdrw.cpp delete mode 100644 src/msw/palette.cpp delete mode 100644 src/msw/pen.cpp delete mode 100644 src/msw/penwin.cpp delete mode 100644 src/msw/pnghand.cpp delete mode 100644 src/msw/printdlg.cpp delete mode 100644 src/msw/printwin.cpp delete mode 100644 src/msw/radiobox.cpp delete mode 100644 src/msw/radiobut.cpp delete mode 100644 src/msw/regconf.cpp delete mode 100644 src/msw/region.cpp delete mode 100644 src/msw/registry.cpp delete mode 100644 src/msw/salford.lnk delete mode 100644 src/msw/scrolbar.cpp delete mode 100644 src/msw/settings.cpp delete mode 100644 src/msw/slider95.cpp delete mode 100644 src/msw/slidrmsw.cpp delete mode 100644 src/msw/spinbutt.cpp delete mode 100644 src/msw/statbmp.cpp delete mode 100644 src/msw/statbox.cpp delete mode 100644 src/msw/statbr95.cpp delete mode 100644 src/msw/stattext.cpp delete mode 100644 src/msw/tabctrl.cpp delete mode 100644 src/msw/taskbar.cpp delete mode 100644 src/msw/tbar95.cpp delete mode 100644 src/msw/tbarmsw.cpp delete mode 100644 src/msw/textctrl.cpp delete mode 100644 src/msw/thread.cpp delete mode 100644 src/msw/timer.cpp delete mode 100644 src/msw/treectrl.cpp delete mode 100644 src/msw/utils.cpp delete mode 100644 src/msw/utilsexc.cpp delete mode 100644 src/msw/wave.cpp delete mode 100644 src/msw/window.cpp delete mode 100644 src/msw/wx.def delete mode 100644 src/msw/wxb32.def delete mode 100644 src/msw/xpmhand.cpp delete mode 100644 src/ntwxwin.mak delete mode 100644 src/png/CHANGES delete mode 100644 src/png/INSTALL delete mode 100644 src/png/README delete mode 100644 src/png/TODO delete mode 100644 src/png/ansi2knr.1 delete mode 100644 src/png/ansi2knr.c delete mode 100644 src/png/example.c delete mode 100644 src/png/libpng.3 delete mode 100644 src/png/libpngpf.3 delete mode 100644 src/png/makefile.bcc delete mode 100644 src/png/makefile.dos delete mode 100644 src/png/makefile.unx delete mode 100644 src/png/makefile.vc delete mode 100644 src/png/makefile.wat delete mode 100644 src/png/png.5 delete mode 100644 src/png/png.c delete mode 100644 src/png/png.h delete mode 100644 src/png/pngconf.h delete mode 100644 src/png/pngerror.c delete mode 100644 src/png/pngget.c delete mode 100644 src/png/pngmem.c delete mode 100644 src/png/pngpread.c delete mode 100644 src/png/pngread.c delete mode 100644 src/png/pngrio.c delete mode 100644 src/png/pngrtran.c delete mode 100644 src/png/pngrutil.c delete mode 100644 src/png/pngset.c delete mode 100644 src/png/pngtest.c delete mode 100644 src/png/pngtrans.c delete mode 100644 src/png/pngwio.c delete mode 100644 src/png/pngwrite.c delete mode 100644 src/png/pngwtran.c delete mode 100644 src/png/pngwutil.c delete mode 100644 src/png/scripts/SCOPTIONS.ppc delete mode 100644 src/png/scripts/build.bat delete mode 100644 src/png/scripts/descrip.mms delete mode 100644 src/png/scripts/makefile.aco delete mode 100644 src/png/scripts/makefile.ama delete mode 100644 src/png/scripts/makefile.atr delete mode 100644 src/png/scripts/makefile.bor delete mode 100644 src/png/scripts/makefile.dec delete mode 100644 src/png/scripts/makefile.dj2 delete mode 100644 src/png/scripts/makefile.knr delete mode 100644 src/png/scripts/makefile.lnx delete mode 100644 src/png/scripts/makefile.mip delete mode 100644 src/png/scripts/makefile.msc delete mode 100644 src/png/scripts/makefile.os2 delete mode 100644 src/png/scripts/makefile.s2x delete mode 100644 src/png/scripts/makefile.sgi delete mode 100644 src/png/scripts/makefile.std delete mode 100644 src/png/scripts/makefile.sun delete mode 100644 src/png/scripts/makefile.tc3 delete mode 100644 src/png/scripts/makefile.wat delete mode 100644 src/png/scripts/makevms.com delete mode 100644 src/png/scripts/pngos2.def delete mode 100644 src/png/scripts/smakefile.ppc delete mode 100644 src/qt.inc delete mode 100644 src/qt/app.cpp delete mode 100644 src/qt/bdiag.xbm delete mode 100644 src/qt/bitmap.cpp delete mode 100644 src/qt/bmpbuttn.cpp delete mode 100644 src/qt/brush.cpp delete mode 100644 src/qt/button.cpp delete mode 100644 src/qt/cdiag.xbm delete mode 100644 src/qt/checkbox.cpp delete mode 100644 src/qt/choice.cpp delete mode 100644 src/qt/colour.cpp delete mode 100644 src/qt/combobox.cpp delete mode 100644 src/qt/control.cpp delete mode 100644 src/qt/cross.xbm delete mode 100644 src/qt/cursor.cpp delete mode 100644 src/qt/data.cpp delete mode 100644 src/qt/dc.cpp delete mode 100644 src/qt/dcclient.cpp delete mode 100644 src/qt/dcmemory.cpp delete mode 100644 src/qt/dcscreen.cpp delete mode 100644 src/qt/dialog.cpp delete mode 100644 src/qt/dnd.cpp delete mode 100644 src/qt/fdiag.xbm delete mode 100644 src/qt/filedlg.cpp delete mode 100644 src/qt/font.cpp delete mode 100644 src/qt/frame.cpp delete mode 100644 src/qt/gauge.cpp delete mode 100644 src/qt/gdiobj.cpp delete mode 100644 src/qt/horiz.xbm delete mode 100644 src/qt/icon.cpp delete mode 100644 src/qt/joystick.cpp delete mode 100644 src/qt/listbox.cpp delete mode 100644 src/qt/mdi.cpp delete mode 100644 src/qt/menu.cpp delete mode 100644 src/qt/notebook.cpp delete mode 100644 src/qt/palette.cpp delete mode 100644 src/qt/pen.cpp delete mode 100644 src/qt/radiobox.cpp delete mode 100644 src/qt/radiobut.cpp delete mode 100644 src/qt/region.cpp delete mode 100644 src/qt/scrolbar.cpp delete mode 100644 src/qt/settings.cpp delete mode 100644 src/qt/slider.cpp delete mode 100644 src/qt/statbmp.cpp delete mode 100644 src/qt/statbox.cpp delete mode 100644 src/qt/stattext.cpp delete mode 100644 src/qt/tbargtk.cpp delete mode 100644 src/qt/textctrl.cpp delete mode 100644 src/qt/threadgui.inc delete mode 100644 src/qt/threadno.cpp delete mode 100644 src/qt/threadpsx.cpp delete mode 100644 src/qt/threadsgi.cpp delete mode 100644 src/qt/timer.cpp delete mode 100644 src/qt/utilsgtk.cpp delete mode 100644 src/qt/utilsres.cpp delete mode 100644 src/qt/verti.xbm delete mode 100644 src/qt/window.cpp delete mode 100644 src/stubs.inc delete mode 100644 src/stubs/accel.cpp delete mode 100644 src/stubs/app.cpp delete mode 100644 src/stubs/bitmap.cpp delete mode 100644 src/stubs/bmpbuttn.cpp delete mode 100644 src/stubs/brush.cpp delete mode 100644 src/stubs/button.cpp delete mode 100644 src/stubs/checkbox.cpp delete mode 100644 src/stubs/checklst.cpp delete mode 100644 src/stubs/choice.cpp delete mode 100644 src/stubs/clipbrd.cpp delete mode 100644 src/stubs/colordlg.cpp delete mode 100644 src/stubs/colour.cpp delete mode 100644 src/stubs/combobox.cpp delete mode 100644 src/stubs/control.cpp delete mode 100644 src/stubs/cursor.cpp delete mode 100644 src/stubs/data.cpp delete mode 100644 src/stubs/dc.cpp delete mode 100644 src/stubs/dcclient.cpp delete mode 100644 src/stubs/dcmemory.cpp delete mode 100644 src/stubs/dcscreen.cpp delete mode 100644 src/stubs/dialog.cpp delete mode 100644 src/stubs/dirdlg.cpp delete mode 100644 src/stubs/dnd.cpp delete mode 100644 src/stubs/filedlg.cpp delete mode 100644 src/stubs/font.cpp delete mode 100644 src/stubs/fontdlg.cpp delete mode 100644 src/stubs/frame.cpp delete mode 100644 src/stubs/gauge.cpp delete mode 100644 src/stubs/gdiobj.cpp delete mode 100644 src/stubs/helpxxxx.cpp delete mode 100644 src/stubs/icon.cpp delete mode 100644 src/stubs/imaglist.cpp delete mode 100644 src/stubs/joystick.cpp delete mode 100644 src/stubs/listbox.cpp delete mode 100644 src/stubs/listctrl.cpp delete mode 100644 src/stubs/main.cpp delete mode 100644 src/stubs/makefile.unx delete mode 100644 src/stubs/makefile.vc delete mode 100644 src/stubs/mdi.cpp delete mode 100644 src/stubs/menu.cpp delete mode 100644 src/stubs/menuitem.cpp delete mode 100644 src/stubs/metafile.cpp delete mode 100644 src/stubs/minifram.cpp delete mode 100644 src/stubs/msgdlg.cpp delete mode 100644 src/stubs/notebook.cpp delete mode 100644 src/stubs/palette.cpp delete mode 100644 src/stubs/pen.cpp delete mode 100644 src/stubs/print.cpp delete mode 100644 src/stubs/printdlg.cpp delete mode 100644 src/stubs/radiobox.cpp delete mode 100644 src/stubs/radiobut.cpp delete mode 100644 src/stubs/region.cpp delete mode 100644 src/stubs/scrolbar.cpp delete mode 100644 src/stubs/settings.cpp delete mode 100644 src/stubs/slider.cpp delete mode 100644 src/stubs/spinbutt.cpp delete mode 100644 src/stubs/statbmp.cpp delete mode 100644 src/stubs/statbox.cpp delete mode 100644 src/stubs/stattext.cpp delete mode 100644 src/stubs/statusbr.cpp delete mode 100644 src/stubs/tabctrl.cpp delete mode 100644 src/stubs/taskbar.cpp delete mode 100644 src/stubs/textctrl.cpp delete mode 100644 src/stubs/thread.cpp delete mode 100644 src/stubs/timer.cpp delete mode 100644 src/stubs/toolbar.cpp delete mode 100644 src/stubs/treectrl.cpp delete mode 100644 src/stubs/utils.cpp delete mode 100644 src/stubs/utilsexc.cpp delete mode 100644 src/stubs/wave.cpp delete mode 100644 src/stubs/window.cpp delete mode 100644 src/xpm/changes delete mode 100644 src/xpm/copyrigh.t delete mode 100644 src/xpm/crbuffri.c delete mode 100644 src/xpm/crbuffrp.c delete mode 100644 src/xpm/crdatfri.c delete mode 100644 src/xpm/crdatfrp.c delete mode 100644 src/xpm/create.c delete mode 100644 src/xpm/crifrbuf.c delete mode 100644 src/xpm/crifrdat.c delete mode 100644 src/xpm/crpfrbuf.c delete mode 100644 src/xpm/crpfrdat.c delete mode 100644 src/xpm/data.c delete mode 100644 src/xpm/dataxpm.c delete mode 100644 src/xpm/files delete mode 100644 src/xpm/hashtab.c delete mode 100644 src/xpm/makefile.vc delete mode 100644 src/xpm/makefile.wat delete mode 100644 src/xpm/misc.c delete mode 100644 src/xpm/parse.c delete mode 100644 src/xpm/rdftodat.c delete mode 100644 src/xpm/rdftoi.c delete mode 100644 src/xpm/rdftop.c delete mode 100644 src/xpm/readme delete mode 100644 src/xpm/readme.msw delete mode 100644 src/xpm/rgb.c delete mode 100644 src/xpm/rgbtab.h delete mode 100644 src/xpm/scan.c delete mode 100644 src/xpm/simx.c delete mode 100644 src/xpm/simx.h delete mode 100644 src/xpm/wrffrdat.c delete mode 100644 src/xpm/wrffri.c delete mode 100644 src/xpm/wrffrp.c delete mode 100644 src/xpm/xpm34.h delete mode 100644 src/xpm/xpm34p.h delete mode 100644 src/zlib/ChangeLog delete mode 100644 src/zlib/INDEX delete mode 100644 src/zlib/Make_vms.com delete mode 100644 src/zlib/Makefile.in2 delete mode 100644 src/zlib/Makefile.riscos delete mode 100644 src/zlib/README delete mode 100644 src/zlib/adler32.c delete mode 100644 src/zlib/algorithm.txt delete mode 100644 src/zlib/compress.c delete mode 100644 src/zlib/configure delete mode 100644 src/zlib/crc32.c delete mode 100644 src/zlib/deflate.c delete mode 100644 src/zlib/deflate.h delete mode 100644 src/zlib/descrip.mms delete mode 100644 src/zlib/example.c delete mode 100644 src/zlib/gzio.c delete mode 100644 src/zlib/infblock.c delete mode 100644 src/zlib/infblock.h delete mode 100644 src/zlib/infcodes.c delete mode 100644 src/zlib/infcodes.h delete mode 100644 src/zlib/inffast.c delete mode 100644 src/zlib/inffast.h delete mode 100644 src/zlib/inffixed.h delete mode 100644 src/zlib/inflate.c delete mode 100644 src/zlib/inftrees.c delete mode 100644 src/zlib/inftrees.h delete mode 100644 src/zlib/infutil.c delete mode 100644 src/zlib/infutil.h delete mode 100644 src/zlib/makefile.b32 delete mode 100644 src/zlib/makefile.bcc delete mode 100644 src/zlib/makefile.unx delete mode 100644 src/zlib/makefile.vc delete mode 100644 src/zlib/makefile.wat delete mode 100644 src/zlib/maketree.c delete mode 100644 src/zlib/minigzip.c delete mode 100644 src/zlib/trees.c delete mode 100644 src/zlib/trees.h delete mode 100644 src/zlib/uncompr.c delete mode 100644 src/zlib/zconf.h delete mode 100644 src/zlib/zlib.3 delete mode 100644 src/zlib/zlib.h delete mode 100644 src/zlib/zutil.c delete mode 100644 src/zlib/zutil.h delete mode 100644 template.mak delete mode 100644 user/Makefile delete mode 100644 user/wxConvert/.cvsignore delete mode 100644 user/wxConvert/Makefile delete mode 100644 user/wxConvert/Makefile.in delete mode 100644 user/wxConvert/wxConvert.cpp delete mode 100644 user/wxConvert/wxConvert.h delete mode 100644 user/wxFile/.cvsignore delete mode 100644 user/wxFile/FMJobs.cpp delete mode 100644 user/wxFile/FMJobs.h delete mode 100644 user/wxFile/Makefile delete mode 100644 user/wxFile/Makefile.in delete mode 100644 user/wxFile/commanderview.xpm delete mode 100644 user/wxFile/delete.xpm delete mode 100644 user/wxFile/dirctrl.cpp delete mode 100644 user/wxFile/dirctrl.h delete mode 100644 user/wxFile/exit.xpm delete mode 100644 user/wxFile/filectrl.cpp delete mode 100644 user/wxFile/filectrl.h delete mode 100644 user/wxFile/fileopen.xpm delete mode 100644 user/wxFile/find.xpm delete mode 100644 user/wxFile/folder.xpm delete mode 100644 user/wxFile/help.xpm delete mode 100644 user/wxFile/home.xpm delete mode 100644 user/wxFile/iconview.xpm delete mode 100644 user/wxFile/list.xpm delete mode 100644 user/wxFile/listview.xpm delete mode 100644 user/wxFile/prev.xpm delete mode 100644 user/wxFile/reportview.xpm delete mode 100644 user/wxFile/save.xpm delete mode 100644 user/wxFile/search.xpm delete mode 100644 user/wxFile/singleview.xpm delete mode 100644 user/wxFile/trash.xpm delete mode 100644 user/wxFile/treeview.xpm delete mode 100644 user/wxFile/txt.xpm delete mode 100644 user/wxFile/wxFile.cpp delete mode 100644 user/wxFile/wxFile.h delete mode 100644 user/wxLayout/.cvsignore delete mode 100644 user/wxLayout/Makefile delete mode 100644 user/wxLayout/Makefile.in delete mode 100644 user/wxLayout/Micon.xpm delete mode 100644 user/wxLayout/README delete mode 100644 user/wxLayout/kbList.cpp delete mode 100644 user/wxLayout/kbList.h delete mode 100644 user/wxLayout/wxLayout.cpp delete mode 100644 user/wxLayout/wxLayout.h delete mode 100644 user/wxLayout/wxllist.cpp delete mode 100644 user/wxLayout/wxllist.h delete mode 100644 user/wxLayout/wxlparser.cpp delete mode 100644 user/wxLayout/wxlparser.h delete mode 100644 user/wxLayout/wxlwindow.cpp delete mode 100644 user/wxLayout/wxlwindow.h delete mode 100644 user/wxTest/.cvsignore delete mode 100644 user/wxTest/Makefile delete mode 100644 user/wxTest/Makefile.in delete mode 100644 user/wxTest/folder.xpm delete mode 100644 user/wxTest/horse.png delete mode 100644 user/wxTest/list.xpm delete mode 100644 user/wxTest/test.xpm delete mode 100644 user/wxTest/wxTest.cpp delete mode 100644 user/wxTest/wxTest.h delete mode 100644 utils/HelpGen/Makefile delete mode 100644 utils/HelpGen/include/cjparser.h delete mode 100644 utils/HelpGen/include/docripper.h delete mode 100644 utils/HelpGen/include/ifcontext.h delete mode 100644 utils/HelpGen/include/markup.h delete mode 100644 utils/HelpGen/include/scriptbinder.h delete mode 100644 utils/HelpGen/include/sourcepainter.h delete mode 100644 utils/HelpGen/include/srcparser.h delete mode 100644 utils/HelpGen/include/wxstlac.h delete mode 100644 utils/HelpGen/include/wxstllst.h delete mode 100644 utils/HelpGen/include/wxstlvec.h delete mode 100644 utils/HelpGen/src/HelpGen.cpp delete mode 100644 utils/HelpGen/src/HelpGen.rc delete mode 100644 utils/HelpGen/src/cjparser.cpp delete mode 100644 utils/HelpGen/src/docripper.cpp delete mode 100644 utils/HelpGen/src/ifcontext.cpp delete mode 100644 utils/HelpGen/src/makefile.nt delete mode 100644 utils/HelpGen/src/markup.cpp delete mode 100644 utils/HelpGen/src/ripper_main.cpp delete mode 100644 utils/HelpGen/src/scriptbinder.cpp delete mode 100644 utils/HelpGen/src/sourcepainter.cpp delete mode 100644 utils/HelpGen/src/srcparser.cpp delete mode 100644 utils/HelpGen/src/wx_extra_imps.cpp delete mode 100644 utils/Makefile delete mode 100644 utils/dialoged/docs/alignb.bmp delete mode 100644 utils/dialoged/docs/alignb.eps delete mode 100644 utils/dialoged/docs/alignb.gif delete mode 100644 utils/dialoged/docs/alignl.bmp delete mode 100644 utils/dialoged/docs/alignl.eps delete mode 100644 utils/dialoged/docs/alignl.gif delete mode 100644 utils/dialoged/docs/alignr.bmp delete mode 100644 utils/dialoged/docs/alignr.eps delete mode 100644 utils/dialoged/docs/alignr.gif delete mode 100644 utils/dialoged/docs/alignt.bmp delete mode 100644 utils/dialoged/docs/alignt.eps delete mode 100644 utils/dialoged/docs/alignt.gif delete mode 100644 utils/dialoged/docs/arrow.bmp delete mode 100644 utils/dialoged/docs/arrow.eps delete mode 100644 utils/dialoged/docs/arrow.gif delete mode 100644 utils/dialoged/docs/back.gif delete mode 100644 utils/dialoged/docs/bmpbuttn.bmp delete mode 100644 utils/dialoged/docs/bmpbuttn.eps delete mode 100644 utils/dialoged/docs/bmpbuttn.gif delete mode 100644 utils/dialoged/docs/body.tex delete mode 100644 utils/dialoged/docs/books.bmp delete mode 100644 utils/dialoged/docs/books.gif delete mode 100644 utils/dialoged/docs/bugs.tex delete mode 100644 utils/dialoged/docs/bullet.bmp delete mode 100644 utils/dialoged/docs/button.bmp delete mode 100644 utils/dialoged/docs/button.eps delete mode 100644 utils/dialoged/docs/button.gif delete mode 100644 utils/dialoged/docs/changes.tex delete mode 100644 utils/dialoged/docs/check.bmp delete mode 100644 utils/dialoged/docs/check.eps delete mode 100644 utils/dialoged/docs/check.gif delete mode 100644 utils/dialoged/docs/choice.bmp delete mode 100644 utils/dialoged/docs/choice.eps delete mode 100644 utils/dialoged/docs/choice.gif delete mode 100644 utils/dialoged/docs/classes.tex delete mode 100644 utils/dialoged/docs/contents.gif delete mode 100644 utils/dialoged/docs/copysize.bmp delete mode 100644 utils/dialoged/docs/copysize.eps delete mode 100644 utils/dialoged/docs/copysize.gif delete mode 100644 utils/dialoged/docs/dialog.bmp delete mode 100644 utils/dialoged/docs/dialog.eps delete mode 100644 utils/dialoged/docs/dialog.gif delete mode 100644 utils/dialoged/docs/dialoged.hpj delete mode 100644 utils/dialoged/docs/dialoged.tex delete mode 100644 utils/dialoged/docs/forward.gif delete mode 100644 utils/dialoged/docs/gauge.bmp delete mode 100644 utils/dialoged/docs/gauge.eps delete mode 100644 utils/dialoged/docs/gauge.gif delete mode 100644 utils/dialoged/docs/group.bmp delete mode 100644 utils/dialoged/docs/group.eps delete mode 100644 utils/dialoged/docs/group.gif delete mode 100644 utils/dialoged/docs/help.bmp delete mode 100644 utils/dialoged/docs/help.eps delete mode 100644 utils/dialoged/docs/help.gif delete mode 100644 utils/dialoged/docs/horiz.bmp delete mode 100644 utils/dialoged/docs/horiz.eps delete mode 100644 utils/dialoged/docs/horiz.gif delete mode 100644 utils/dialoged/docs/listbox.bmp delete mode 100644 utils/dialoged/docs/listbox.eps delete mode 100644 utils/dialoged/docs/listbox.gif delete mode 100644 utils/dialoged/docs/load.bmp delete mode 100644 utils/dialoged/docs/load.eps delete mode 100644 utils/dialoged/docs/load.gif delete mode 100644 utils/dialoged/docs/message.bmp delete mode 100644 utils/dialoged/docs/message.eps delete mode 100644 utils/dialoged/docs/message.gif delete mode 100644 utils/dialoged/docs/mtext.bmp delete mode 100644 utils/dialoged/docs/mtext.eps delete mode 100644 utils/dialoged/docs/mtext.gif delete mode 100644 utils/dialoged/docs/new.bmp delete mode 100644 utils/dialoged/docs/new.eps delete mode 100644 utils/dialoged/docs/new.gif delete mode 100644 utils/dialoged/docs/notes.txt delete mode 100644 utils/dialoged/docs/open.bmp delete mode 100644 utils/dialoged/docs/open.eps delete mode 100644 utils/dialoged/docs/open.gif delete mode 100644 utils/dialoged/docs/picture.bmp delete mode 100644 utils/dialoged/docs/picture.eps delete mode 100644 utils/dialoged/docs/picture.gif delete mode 100644 utils/dialoged/docs/radio.bmp delete mode 100644 utils/dialoged/docs/radio.eps delete mode 100644 utils/dialoged/docs/radio.gif delete mode 100644 utils/dialoged/docs/readme.txt delete mode 100644 utils/dialoged/docs/save.bmp delete mode 100644 utils/dialoged/docs/save.eps delete mode 100644 utils/dialoged/docs/save.gif delete mode 100644 utils/dialoged/docs/scroll.bmp delete mode 100644 utils/dialoged/docs/scroll.eps delete mode 100644 utils/dialoged/docs/scroll.gif delete mode 100644 utils/dialoged/docs/slider.bmp delete mode 100644 utils/dialoged/docs/slider.eps delete mode 100644 utils/dialoged/docs/slider.gif delete mode 100644 utils/dialoged/docs/tech.tex delete mode 100644 utils/dialoged/docs/tex2rtf.ini delete mode 100644 utils/dialoged/docs/text.bmp delete mode 100644 utils/dialoged/docs/text.eps delete mode 100644 utils/dialoged/docs/text.gif delete mode 100644 utils/dialoged/docs/toback.bmp delete mode 100644 utils/dialoged/docs/toback.eps delete mode 100644 utils/dialoged/docs/toback.gif delete mode 100644 utils/dialoged/docs/tofront.bmp delete mode 100644 utils/dialoged/docs/tofront.eps delete mode 100644 utils/dialoged/docs/tofront.gif delete mode 100644 utils/dialoged/docs/up.gif delete mode 100644 utils/dialoged/docs/vert.bmp delete mode 100644 utils/dialoged/docs/vert.eps delete mode 100644 utils/dialoged/docs/vert.gif delete mode 100644 utils/dialoged/src/.cvsignore delete mode 100644 utils/dialoged/src/Makefile delete mode 100644 utils/dialoged/src/bitmaps/alignb.bmp delete mode 100644 utils/dialoged/src/bitmaps/alignb.xbm delete mode 100644 utils/dialoged/src/bitmaps/alignb.xpm delete mode 100644 utils/dialoged/src/bitmaps/alignl.bmp delete mode 100644 utils/dialoged/src/bitmaps/alignl.xbm delete mode 100644 utils/dialoged/src/bitmaps/alignl.xpm delete mode 100644 utils/dialoged/src/bitmaps/alignr.bmp delete mode 100644 utils/dialoged/src/bitmaps/alignr.xbm delete mode 100644 utils/dialoged/src/bitmaps/alignr.xpm delete mode 100644 utils/dialoged/src/bitmaps/alignt.bmp delete mode 100644 utils/dialoged/src/bitmaps/alignt.xbm delete mode 100644 utils/dialoged/src/bitmaps/alignt.xpm delete mode 100644 utils/dialoged/src/bitmaps/arrow.bmp delete mode 100644 utils/dialoged/src/bitmaps/arrow.ico delete mode 100644 utils/dialoged/src/bitmaps/arrow.xbm delete mode 100644 utils/dialoged/src/bitmaps/arrow.xpm delete mode 100644 utils/dialoged/src/bitmaps/bmpbuttn.bmp delete mode 100644 utils/dialoged/src/bitmaps/bmpbuttn.ico delete mode 100644 utils/dialoged/src/bitmaps/bmpbuttn.xbm delete mode 100644 utils/dialoged/src/bitmaps/bmpbuttn.xpm delete mode 100644 utils/dialoged/src/bitmaps/button.bmp delete mode 100644 utils/dialoged/src/bitmaps/button.ico delete mode 100644 utils/dialoged/src/bitmaps/button.xbm delete mode 100644 utils/dialoged/src/bitmaps/button.xpm delete mode 100644 utils/dialoged/src/bitmaps/buttonsm.ico delete mode 100644 utils/dialoged/src/bitmaps/buttonsm.xpm delete mode 100644 utils/dialoged/src/bitmaps/canvas.xbm delete mode 100644 utils/dialoged/src/bitmaps/check.bmp delete mode 100644 utils/dialoged/src/bitmaps/check.xbm delete mode 100644 utils/dialoged/src/bitmaps/checkbox.ico delete mode 100644 utils/dialoged/src/bitmaps/checkbox.xpm delete mode 100644 utils/dialoged/src/bitmaps/choice.bmp delete mode 100644 utils/dialoged/src/bitmaps/choice.ico delete mode 100644 utils/dialoged/src/bitmaps/choice.xbm delete mode 100644 utils/dialoged/src/bitmaps/choice.xpm delete mode 100644 utils/dialoged/src/bitmaps/combobox.ico delete mode 100644 utils/dialoged/src/bitmaps/combobox.xpm delete mode 100644 utils/dialoged/src/bitmaps/copysize.bmp delete mode 100644 utils/dialoged/src/bitmaps/copysize.xbm delete mode 100644 utils/dialoged/src/bitmaps/copysize.xpm delete mode 100644 utils/dialoged/src/bitmaps/cpp.xbm delete mode 100644 utils/dialoged/src/bitmaps/cross.bmp delete mode 100644 utils/dialoged/src/bitmaps/dialog.bmp delete mode 100644 utils/dialoged/src/bitmaps/dialog.ico delete mode 100644 utils/dialoged/src/bitmaps/dialog.xbm delete mode 100644 utils/dialoged/src/bitmaps/dialog.xpm delete mode 100644 utils/dialoged/src/bitmaps/dialoged.ico delete mode 100644 utils/dialoged/src/bitmaps/dialoged.xpm delete mode 100644 utils/dialoged/src/bitmaps/folder1.ico delete mode 100644 utils/dialoged/src/bitmaps/folder1.xpm delete mode 100644 utils/dialoged/src/bitmaps/folder2.ico delete mode 100644 utils/dialoged/src/bitmaps/folder2.xpm delete mode 100644 utils/dialoged/src/bitmaps/frame.xbm delete mode 100644 utils/dialoged/src/bitmaps/gauge.bmp delete mode 100644 utils/dialoged/src/bitmaps/gauge.ico delete mode 100644 utils/dialoged/src/bitmaps/gauge.xbm delete mode 100644 utils/dialoged/src/bitmaps/gauge.xpm delete mode 100644 utils/dialoged/src/bitmaps/group.bmp delete mode 100644 utils/dialoged/src/bitmaps/group.xbm delete mode 100644 utils/dialoged/src/bitmaps/help.bmp delete mode 100644 utils/dialoged/src/bitmaps/help.xbm delete mode 100644 utils/dialoged/src/bitmaps/help.xpm delete mode 100644 utils/dialoged/src/bitmaps/horiz.bmp delete mode 100644 utils/dialoged/src/bitmaps/horiz.xbm delete mode 100644 utils/dialoged/src/bitmaps/horiz.xpm delete mode 100644 utils/dialoged/src/bitmaps/listbox.bmp delete mode 100644 utils/dialoged/src/bitmaps/listbox.ico delete mode 100644 utils/dialoged/src/bitmaps/listbox.xbm delete mode 100644 utils/dialoged/src/bitmaps/listbox.xpm delete mode 100644 utils/dialoged/src/bitmaps/load.bmp delete mode 100644 utils/dialoged/src/bitmaps/load.xbm delete mode 100644 utils/dialoged/src/bitmaps/load.xpm delete mode 100644 utils/dialoged/src/bitmaps/message.bmp delete mode 100644 utils/dialoged/src/bitmaps/message.xbm delete mode 100644 utils/dialoged/src/bitmaps/mtext.bmp delete mode 100644 utils/dialoged/src/bitmaps/mtext.xbm delete mode 100644 utils/dialoged/src/bitmaps/new.bmp delete mode 100644 utils/dialoged/src/bitmaps/new.xbm delete mode 100644 utils/dialoged/src/bitmaps/new.xpm delete mode 100644 utils/dialoged/src/bitmaps/open.bmp delete mode 100644 utils/dialoged/src/bitmaps/panel.xbm delete mode 100644 utils/dialoged/src/bitmaps/picture.bmp delete mode 100644 utils/dialoged/src/bitmaps/picture.xbm delete mode 100644 utils/dialoged/src/bitmaps/radio.bmp delete mode 100644 utils/dialoged/src/bitmaps/radio.xbm delete mode 100644 utils/dialoged/src/bitmaps/radiobox.ico delete mode 100644 utils/dialoged/src/bitmaps/radiobox.xpm delete mode 100644 utils/dialoged/src/bitmaps/radiobtn.ico delete mode 100644 utils/dialoged/src/bitmaps/radiobtn.xpm delete mode 100644 utils/dialoged/src/bitmaps/report.xbm delete mode 100644 utils/dialoged/src/bitmaps/save.bmp delete mode 100644 utils/dialoged/src/bitmaps/save.xbm delete mode 100644 utils/dialoged/src/bitmaps/save.xpm delete mode 100644 utils/dialoged/src/bitmaps/scrolbar.ico delete mode 100644 utils/dialoged/src/bitmaps/scrolbar.xpm delete mode 100644 utils/dialoged/src/bitmaps/scroll.bmp delete mode 100644 utils/dialoged/src/bitmaps/scroll.xbm delete mode 100644 utils/dialoged/src/bitmaps/slider.bmp delete mode 100644 utils/dialoged/src/bitmaps/slider.ico delete mode 100644 utils/dialoged/src/bitmaps/slider.xbm delete mode 100644 utils/dialoged/src/bitmaps/slider.xpm delete mode 100644 utils/dialoged/src/bitmaps/statbmp.ico delete mode 100644 utils/dialoged/src/bitmaps/statbmp.xpm delete mode 100644 utils/dialoged/src/bitmaps/statbox.ico delete mode 100644 utils/dialoged/src/bitmaps/statbox.xpm delete mode 100644 utils/dialoged/src/bitmaps/stattext.ico delete mode 100644 utils/dialoged/src/bitmaps/stattext.xpm delete mode 100644 utils/dialoged/src/bitmaps/text.bmp delete mode 100644 utils/dialoged/src/bitmaps/text.xbm delete mode 100644 utils/dialoged/src/bitmaps/textmult.ico delete mode 100644 utils/dialoged/src/bitmaps/textmult.xpm delete mode 100644 utils/dialoged/src/bitmaps/textsing.ico delete mode 100644 utils/dialoged/src/bitmaps/textsing.xpm delete mode 100644 utils/dialoged/src/bitmaps/textsw.xbm delete mode 100644 utils/dialoged/src/bitmaps/tick.bmp delete mode 100644 utils/dialoged/src/bitmaps/toback.bmp delete mode 100644 utils/dialoged/src/bitmaps/toback.xbm delete mode 100644 utils/dialoged/src/bitmaps/toback.xpm delete mode 100644 utils/dialoged/src/bitmaps/tofront.bmp delete mode 100644 utils/dialoged/src/bitmaps/tofront.xbm delete mode 100644 utils/dialoged/src/bitmaps/tofront.xpm delete mode 100644 utils/dialoged/src/bitmaps/tree.xbm delete mode 100644 utils/dialoged/src/bitmaps/treeicn.xbm delete mode 100644 utils/dialoged/src/bitmaps/vert.bmp delete mode 100644 utils/dialoged/src/bitmaps/vert.xbm delete mode 100644 utils/dialoged/src/bitmaps/vert.xpm delete mode 100644 utils/dialoged/src/bitmaps/wxbuild.xbm delete mode 100644 utils/dialoged/src/bitmaps/wxwin.bmp delete mode 100644 utils/dialoged/src/bitmaps/wxwin.xbm delete mode 100644 utils/dialoged/src/bitmaps/wxwin.xpm delete mode 100644 utils/dialoged/src/dialoged.cpp delete mode 100644 utils/dialoged/src/dialoged.def delete mode 100644 utils/dialoged/src/dialoged.h delete mode 100644 utils/dialoged/src/dialoged.ico delete mode 100644 utils/dialoged/src/dialoged.rc delete mode 100644 utils/dialoged/src/dlghndlr.cpp delete mode 100644 utils/dialoged/src/dlghndlr.h delete mode 100644 utils/dialoged/src/edlist.cpp delete mode 100644 utils/dialoged/src/edlist.h delete mode 100644 utils/dialoged/src/edtree.cpp delete mode 100644 utils/dialoged/src/edtree.h delete mode 100644 utils/dialoged/src/makefile.b32 delete mode 100644 utils/dialoged/src/makefile.bcc delete mode 100644 utils/dialoged/src/makefile.dos delete mode 100644 utils/dialoged/src/makefile.g95 delete mode 100644 utils/dialoged/src/makefile.sc delete mode 100644 utils/dialoged/src/makefile.unx delete mode 100644 utils/dialoged/src/makefile.vc delete mode 100644 utils/dialoged/src/makefile.wat delete mode 100644 utils/dialoged/src/reseditr.cpp delete mode 100644 utils/dialoged/src/reseditr.h delete mode 100644 utils/dialoged/src/reswrite.cpp delete mode 100644 utils/dialoged/src/symbtabl.cpp delete mode 100644 utils/dialoged/src/symbtabl.h delete mode 100644 utils/dialoged/src/winprop.cpp delete mode 100644 utils/dialoged/src/winprop.h delete mode 100644 utils/dialoged/src/winstyle.cpp delete mode 100644 utils/dialoged/src/winstyle.h delete mode 100644 utils/glcanvas/distrib/glcanvas.rsp delete mode 100755 utils/glcanvas/distrib/zipsrc.bat delete mode 100644 utils/glcanvas/docs/notes.txt delete mode 100644 utils/glcanvas/gtk/.cvsignore delete mode 100644 utils/glcanvas/gtk/glcanvas.cpp delete mode 100644 utils/glcanvas/gtk/glcanvas.h delete mode 100644 utils/glcanvas/motif/glcanvas.cpp delete mode 100644 utils/glcanvas/motif/glcanvas.h delete mode 100644 utils/glcanvas/motif/makefile.unx delete mode 100644 utils/glcanvas/motif/readme.txt delete mode 100644 utils/glcanvas/samples/cube/Makefile delete mode 100644 utils/glcanvas/samples/cube/cube.cpp delete mode 100644 utils/glcanvas/samples/cube/cube.h delete mode 100644 utils/glcanvas/samples/cube/cube.rc delete mode 100644 utils/glcanvas/samples/cube/makefile.g95 delete mode 100644 utils/glcanvas/samples/cube/makefile.unx delete mode 100644 utils/glcanvas/samples/cube/makefile.vc delete mode 100644 utils/glcanvas/samples/cube/mondrian.ico delete mode 100644 utils/glcanvas/samples/isosurf/Makefile delete mode 100644 utils/glcanvas/samples/isosurf/isosurf.cpp delete mode 100644 utils/glcanvas/samples/isosurf/isosurf.dat.gz delete mode 100644 utils/glcanvas/samples/isosurf/isosurf.h delete mode 100644 utils/glcanvas/samples/isosurf/isosurf.rc delete mode 100644 utils/glcanvas/samples/isosurf/makefile.unx delete mode 100644 utils/glcanvas/samples/isosurf/makefile.vc delete mode 100644 utils/glcanvas/samples/isosurf/mondrian.ico delete mode 100644 utils/glcanvas/samples/penguin/Makefile delete mode 100644 utils/glcanvas/samples/penguin/lw.cpp delete mode 100644 utils/glcanvas/samples/penguin/lw.h delete mode 100644 utils/glcanvas/samples/penguin/makefile.unx delete mode 100644 utils/glcanvas/samples/penguin/makefile.vc delete mode 100644 utils/glcanvas/samples/penguin/penguin.cpp delete mode 100644 utils/glcanvas/samples/penguin/penguin.h delete mode 100644 utils/glcanvas/samples/penguin/penguin.lwo delete mode 100644 utils/glcanvas/samples/penguin/penguin.rc delete mode 100644 utils/glcanvas/samples/penguin/trackball.c delete mode 100644 utils/glcanvas/samples/penguin/trackball.h delete mode 100644 utils/glcanvas/win/glcanvas.cpp delete mode 100644 utils/glcanvas/win/glcanvas.h delete mode 100644 utils/glcanvas/win/makefile.vc delete mode 100644 utils/makefile.vc delete mode 100644 utils/nplugin/docs/notes.txt delete mode 100644 utils/nplugin/lib/dummy delete mode 100644 utils/nplugin/makefile.vc delete mode 100644 utils/nplugin/samples/gui/gui.cpp delete mode 100644 utils/nplugin/samples/gui/gui.h delete mode 100644 utils/nplugin/samples/gui/index.html delete mode 100644 utils/nplugin/samples/gui/makefile.vc delete mode 100644 utils/nplugin/samples/gui/npgui32.def delete mode 100644 utils/nplugin/samples/gui/npgui32.rc delete mode 100644 utils/nplugin/samples/simple/index.html delete mode 100644 utils/nplugin/samples/simple/makefile.vc delete mode 100644 utils/nplugin/samples/simple/npsimple32.def delete mode 100644 utils/nplugin/samples/simple/npsimple32.rc delete mode 100644 utils/nplugin/samples/simple/simple.cpp delete mode 100644 utils/nplugin/src/makefile.vc delete mode 100644 utils/nplugin/src/npapi.h delete mode 100644 utils/nplugin/src/npapp.cpp delete mode 100644 utils/nplugin/src/npapp.h delete mode 100644 utils/nplugin/src/npframe.cpp delete mode 100644 utils/nplugin/src/npframe.h delete mode 100644 utils/nplugin/src/npshell.cpp delete mode 100644 utils/nplugin/src/npupp.h delete mode 100644 utils/nplugin/src/npwin.cpp delete mode 100644 utils/ogl/Makefile delete mode 100644 utils/ogl/distrib/ogl.rsp delete mode 100755 utils/ogl/distrib/tarogl.bat delete mode 100755 utils/ogl/distrib/zipogl.bat delete mode 100644 utils/ogl/docs/back.gif delete mode 100644 utils/ogl/docs/books.bmp delete mode 100644 utils/ogl/docs/bugs.tex delete mode 100644 utils/ogl/docs/bullet.bmp delete mode 100644 utils/ogl/docs/changes.tex delete mode 100644 utils/ogl/docs/classes.tex delete mode 100644 utils/ogl/docs/contents.gif delete mode 100644 utils/ogl/docs/forward.gif delete mode 100644 utils/ogl/docs/intro.tex delete mode 100644 utils/ogl/docs/ogl.hpj delete mode 100644 utils/ogl/docs/ogl.tex delete mode 100644 utils/ogl/docs/ogledit.bmp delete mode 100644 utils/ogl/docs/ogledit.gif delete mode 100644 utils/ogl/docs/sample.tex delete mode 100644 utils/ogl/docs/tex2rtf.ini delete mode 100644 utils/ogl/docs/texhelp.sty delete mode 100644 utils/ogl/docs/topics.tex delete mode 100644 utils/ogl/docs/up.gif delete mode 100644 utils/ogl/samples/ogledit/bitmaps/arrow.bmp delete mode 100644 utils/ogl/samples/ogledit/bitmaps/arrow.xpm delete mode 100644 utils/ogl/samples/ogledit/bitmaps/tool1.bmp delete mode 100644 utils/ogl/samples/ogledit/bitmaps/tool1.xpm delete mode 100644 utils/ogl/samples/ogledit/bitmaps/tool2.bmp delete mode 100644 utils/ogl/samples/ogledit/bitmaps/tool2.xpm delete mode 100644 utils/ogl/samples/ogledit/bitmaps/tool3.bmp delete mode 100644 utils/ogl/samples/ogledit/bitmaps/tool3.xpm delete mode 100644 utils/ogl/samples/ogledit/bitmaps/tool4.bmp delete mode 100644 utils/ogl/samples/ogledit/bitmaps/tool4.xpm delete mode 100644 utils/ogl/samples/ogledit/doc.cpp delete mode 100644 utils/ogl/samples/ogledit/doc.h delete mode 100644 utils/ogl/samples/ogledit/makefile.b32 delete mode 100644 utils/ogl/samples/ogledit/makefile.bcc delete mode 100644 utils/ogl/samples/ogledit/makefile.dos delete mode 100644 utils/ogl/samples/ogledit/makefile.sc delete mode 100644 utils/ogl/samples/ogledit/makefile.unx delete mode 100644 utils/ogl/samples/ogledit/makefile.vc delete mode 100644 utils/ogl/samples/ogledit/makefile.vms delete mode 100644 utils/ogl/samples/ogledit/makefile.wat delete mode 100644 utils/ogl/samples/ogledit/ogl.ico delete mode 100644 utils/ogl/samples/ogledit/ogl.xpm delete mode 100644 utils/ogl/samples/ogledit/ogledit.cpp delete mode 100644 utils/ogl/samples/ogledit/ogledit.def delete mode 100644 utils/ogl/samples/ogledit/ogledit.h delete mode 100644 utils/ogl/samples/ogledit/ogledit.rc delete mode 100644 utils/ogl/samples/ogledit/palette.cpp delete mode 100644 utils/ogl/samples/ogledit/palette.h delete mode 100644 utils/ogl/samples/ogledit/view.cpp delete mode 100644 utils/ogl/samples/ogledit/view.h delete mode 100644 utils/ogl/src/Makefile delete mode 100644 utils/ogl/src/Makefile.in delete mode 100644 utils/ogl/src/basic.cpp delete mode 100644 utils/ogl/src/basic.h delete mode 100644 utils/ogl/src/basic2.cpp delete mode 100644 utils/ogl/src/basicp.h delete mode 100644 utils/ogl/src/bmpshape.cpp delete mode 100644 utils/ogl/src/bmpshape.h delete mode 100644 utils/ogl/src/canvas.cpp delete mode 100644 utils/ogl/src/canvas.h delete mode 100644 utils/ogl/src/composit.cpp delete mode 100644 utils/ogl/src/composit.h delete mode 100644 utils/ogl/src/constrnt.cpp delete mode 100644 utils/ogl/src/constrnt.h delete mode 100644 utils/ogl/src/divided.cpp delete mode 100644 utils/ogl/src/divided.h delete mode 100644 utils/ogl/src/drawn.cpp delete mode 100644 utils/ogl/src/drawn.h delete mode 100644 utils/ogl/src/drawnp.h delete mode 100644 utils/ogl/src/lines.cpp delete mode 100644 utils/ogl/src/lines.h delete mode 100644 utils/ogl/src/linesp.h delete mode 100644 utils/ogl/src/makefile.b32 delete mode 100644 utils/ogl/src/makefile.bcc delete mode 100644 utils/ogl/src/makefile.dos delete mode 100644 utils/ogl/src/makefile.unx delete mode 100644 utils/ogl/src/makefile.vc delete mode 100644 utils/ogl/src/makefile.wat delete mode 100644 utils/ogl/src/mfutils.cpp delete mode 100644 utils/ogl/src/mfutils.h delete mode 100644 utils/ogl/src/misc.cpp delete mode 100644 utils/ogl/src/misc.h delete mode 100644 utils/ogl/src/ogl.h delete mode 100644 utils/ogl/src/ogldiag.cpp delete mode 100644 utils/ogl/src/ogldiag.h delete mode 100644 utils/serialize/.cvsignore delete mode 100644 utils/serialize/Makefile delete mode 100644 utils/serialize/Makefile.in delete mode 100644 utils/serialize/makefile.b32 delete mode 100644 utils/serialize/sercore.cpp delete mode 100644 utils/serialize/sercore.h delete mode 100644 utils/serialize/serctrl.cpp delete mode 100644 utils/serialize/serctrl.h delete mode 100644 utils/serialize/serext.cpp delete mode 100644 utils/serialize/serext.h delete mode 100644 utils/serialize/sergdi.cpp delete mode 100644 utils/serialize/sergdi.h delete mode 100644 utils/serialize/sermain.cpp delete mode 100644 utils/serialize/serwnd.cpp delete mode 100644 utils/serialize/serwnd.h delete mode 100644 utils/tex2rtf/docs/back.gif delete mode 100644 utils/tex2rtf/docs/books.gif delete mode 100644 utils/tex2rtf/docs/bullet.bmp delete mode 100644 utils/tex2rtf/docs/contents.gif delete mode 100644 utils/tex2rtf/docs/fancyhea.sty delete mode 100644 utils/tex2rtf/docs/forward.gif delete mode 100644 utils/tex2rtf/docs/install.txt delete mode 100644 utils/tex2rtf/docs/makeidx.sty delete mode 100644 utils/tex2rtf/docs/mysober.sty delete mode 100644 utils/tex2rtf/docs/mytitle.sty delete mode 100644 utils/tex2rtf/docs/notes.txt delete mode 100644 utils/tex2rtf/docs/psbox.tex delete mode 100644 utils/tex2rtf/docs/readme.txt delete mode 100644 utils/tex2rtf/docs/refs.bib delete mode 100644 utils/tex2rtf/docs/screen.bmp delete mode 100644 utils/tex2rtf/docs/screen.gif delete mode 100644 utils/tex2rtf/docs/screen.shg delete mode 100644 utils/tex2rtf/docs/tex2rtf.hpj delete mode 100644 utils/tex2rtf/docs/tex2rtf.ini delete mode 100644 utils/tex2rtf/docs/tex2rtf.tex delete mode 100644 utils/tex2rtf/docs/tex2rtf.wmf delete mode 100644 utils/tex2rtf/docs/texhelp.sty delete mode 100644 utils/tex2rtf/docs/up.gif delete mode 100644 utils/tex2rtf/docs/verbatim.sty delete mode 100644 utils/tex2rtf/src/bmputils.h delete mode 100644 utils/tex2rtf/src/books.bmp delete mode 100644 utils/tex2rtf/src/dos.def delete mode 100644 utils/tex2rtf/src/htmlutil.cpp delete mode 100644 utils/tex2rtf/src/makefile.b32 delete mode 100644 utils/tex2rtf/src/makefile.bcc delete mode 100644 utils/tex2rtf/src/makefile.dos delete mode 100644 utils/tex2rtf/src/makefile.g95 delete mode 100644 utils/tex2rtf/src/makefile.unx delete mode 100644 utils/tex2rtf/src/makefile.vc delete mode 100644 utils/tex2rtf/src/makefile.wat delete mode 100644 utils/tex2rtf/src/makengui.nt delete mode 100644 utils/tex2rtf/src/maths.cpp delete mode 100644 utils/tex2rtf/src/readshg.cpp delete mode 100644 utils/tex2rtf/src/readshg.h delete mode 100644 utils/tex2rtf/src/rtfutils.cpp delete mode 100644 utils/tex2rtf/src/rtfutils.h delete mode 100644 utils/tex2rtf/src/table.cpp delete mode 100644 utils/tex2rtf/src/table.h delete mode 100644 utils/tex2rtf/src/tex2any.cpp delete mode 100644 utils/tex2rtf/src/tex2any.h delete mode 100644 utils/tex2rtf/src/tex2rtf.cpp delete mode 100644 utils/tex2rtf/src/tex2rtf.def delete mode 100644 utils/tex2rtf/src/tex2rtf.h delete mode 100644 utils/tex2rtf/src/tex2rtf.ico delete mode 100644 utils/tex2rtf/src/tex2rtf.ini delete mode 100644 utils/tex2rtf/src/tex2rtf.rc delete mode 100644 utils/tex2rtf/src/tex2rtf.xpm delete mode 100644 utils/tex2rtf/src/texutils.cpp delete mode 100644 utils/tex2rtf/src/wxhlpblk.h delete mode 100644 utils/tex2rtf/src/xlputils.cpp delete mode 100644 utils/wxMMedia/Makefile delete mode 100644 utils/wxMMedia/Makefile.in delete mode 100644 utils/wxMMedia/TODO delete mode 100644 utils/wxMMedia/WARNING delete mode 100644 utils/wxMMedia/adpcm/g711.cpp delete mode 100644 utils/wxMMedia/adpcm/g721.cpp delete mode 100644 utils/wxMMedia/adpcm/g723_24.cpp delete mode 100644 utils/wxMMedia/adpcm/g723_40.cpp delete mode 100644 utils/wxMMedia/adpcm/g72x.cpp delete mode 100644 utils/wxMMedia/adpcm/g72x.h delete mode 100644 utils/wxMMedia/cdbase.cpp delete mode 100644 utils/wxMMedia/cdbase.h delete mode 100644 utils/wxMMedia/cdunix.cpp delete mode 100644 utils/wxMMedia/cdunix.h delete mode 100644 utils/wxMMedia/cdwin.cpp delete mode 100644 utils/wxMMedia/cdwin.h delete mode 100644 utils/wxMMedia/makefile.b32 delete mode 100644 utils/wxMMedia/makefile.nt delete mode 100644 utils/wxMMedia/mmdata.cpp delete mode 100644 utils/wxMMedia/mmedia.h delete mode 100644 utils/wxMMedia/mmfile.cpp delete mode 100644 utils/wxMMedia/mmfile.h delete mode 100644 utils/wxMMedia/mmriff.cpp delete mode 100644 utils/wxMMedia/mmriff.h delete mode 100644 utils/wxMMedia/mmsolve.cpp delete mode 100644 utils/wxMMedia/mmsolve.h delete mode 100644 utils/wxMMedia/mmtype.h delete mode 100644 utils/wxMMedia/sndadpcm.cpp delete mode 100644 utils/wxMMedia/sndaiff.cpp delete mode 100644 utils/wxMMedia/sndaiff.h delete mode 100644 utils/wxMMedia/sndau.cpp delete mode 100644 utils/wxMMedia/sndau.h delete mode 100644 utils/wxMMedia/sndfile.cpp delete mode 100644 utils/wxMMedia/sndfile.h delete mode 100644 utils/wxMMedia/sndfrag.cpp delete mode 100644 utils/wxMMedia/sndfrag.h delete mode 100644 utils/wxMMedia/sndfrmt.cpp delete mode 100644 utils/wxMMedia/sndfrmt.h delete mode 100644 utils/wxMMedia/sndmulaw.cpp delete mode 100644 utils/wxMMedia/sndmulaw.h delete mode 100644 utils/wxMMedia/sndpcm.cpp delete mode 100644 utils/wxMMedia/sndpcm.h delete mode 100644 utils/wxMMedia/sndsnd.cpp delete mode 100644 utils/wxMMedia/sndsnd.h delete mode 100644 utils/wxMMedia/snduss.cpp delete mode 100644 utils/wxMMedia/snduss.h delete mode 100644 utils/wxMMedia/sndwav.cpp delete mode 100644 utils/wxMMedia/sndwav.h delete mode 100644 utils/wxMMedia/sndwin.cpp delete mode 100644 utils/wxMMedia/sndwin.h delete mode 100644 utils/wxMMedia/ulaw.h delete mode 100644 utils/wxMMedia/vidbase.cpp delete mode 100644 utils/wxMMedia/vidbase.h delete mode 100644 utils/wxMMedia/vidwin.cpp delete mode 100644 utils/wxMMedia/vidwin.h delete mode 100644 utils/wxMMedia/vidxanm.cpp delete mode 100644 utils/wxMMedia/vidxanm.h delete mode 100644 utils/wxMMedia/wave.cpp delete mode 100644 utils/wxMMedia/wave.h delete mode 100644 utils/wxtree/docs/back.gif delete mode 100644 utils/wxtree/docs/books.gif delete mode 100644 utils/wxtree/docs/classes.tex delete mode 100644 utils/wxtree/docs/contents.gif delete mode 100644 utils/wxtree/docs/forward.gif delete mode 100644 utils/wxtree/docs/tex2rtf.ini delete mode 100644 utils/wxtree/docs/tree.bib delete mode 100644 utils/wxtree/docs/treetst.bmp delete mode 100644 utils/wxtree/docs/treetst.gif delete mode 100644 utils/wxtree/docs/up.gif delete mode 100644 utils/wxtree/docs/wxtree.tex delete mode 100644 utils/wxtree/lib/dummy delete mode 100644 utils/wxtree/src/makefile.b32 delete mode 100644 utils/wxtree/src/makefile.bcc delete mode 100644 utils/wxtree/src/makefile.dos delete mode 100644 utils/wxtree/src/makefile.g95 delete mode 100644 utils/wxtree/src/makefile.sc delete mode 100644 utils/wxtree/src/makefile.unx delete mode 100644 utils/wxtree/src/makefile.vc delete mode 100644 utils/wxtree/src/makefile.wat delete mode 100644 utils/wxtree/src/mondrian.ico delete mode 100644 utils/wxtree/src/test.cpp delete mode 100644 utils/wxtree/src/test.def delete mode 100644 utils/wxtree/src/test.h delete mode 100644 utils/wxtree/src/test.rc delete mode 100644 utils/wxtree/src/wxtree.cpp delete mode 100644 utils/wxtree/src/wxtree.h delete mode 100755 wx-config.in delete mode 100644 wxGTK.spec delete mode 100644 wxinstall diff --git a/.cvsignore b/.cvsignore deleted file mode 100644 index 600a93a1fd..0000000000 --- a/.cvsignore +++ /dev/null @@ -1,11 +0,0 @@ -system.list -bin -.gdb_history -Test -config.cache -config.status -system.list -linux.system.cache -wx-config -config.log -linux-gnu.system.cache diff --git a/Makefile b/Makefile deleted file mode 100644 index 7e6e25afaa..0000000000 --- a/Makefile +++ /dev/null @@ -1,175 +0,0 @@ -# Top-level Makefile for wxGTK by Wolfram Gloger -# based on the version for wx-Xt by Martin Sperl - -SHELL=/bin/sh - -DIRS=src - -#if DIRS are defind make only executes in these diretories -all:: - @if test "x$(DIRS)" = x; then \ - for i in src samples utils user; do \ - echo "entering directory $$i building $@"; \ - (cd $$i; ${MAKE} -k $@); \ - done; \ - else \ - for i in $(DIRS) xxx; do \ - if test "$$i" != xxx; then \ - echo "entering directory $$i building $@"; \ - (cd $$i; ${MAKE} -k $@); \ - fi; \ - done; \ - fi - -# what to do if a target is not understood: -# pass it on to all the children... - -.DEFAULT:: - @if test "x$(DIRS)" = x; then \ - for i in src samples utils user; do \ - echo "entering directory $$i building $@"; \ - (cd $$i; ${MAKE} -k $@); \ - done; \ - else \ - for i in $(DIRS) xxx; do \ - if test "$$i" != xxx; then \ - echo "entering directory $$i building $@"; \ - (cd $$i; ${MAKE} -k $@); \ - fi; \ - done; \ - fi - -src:: - @echo "entering directory src building all" - @cd src; ${MAKE} all - -samples:: - @echo "entering directory samples building all" - @cd samples; ${MAKE} all - -utils:: - @echo "entering directory utils building all" - @cd utils; ${MAKE} all - -user:: - @echo "entering directory user building all" - @cd user; ${MAKE} all - -install:: - @echo "entering directory src for installing" - @cd src; ${MAKE} install -# @echo "entering directory utils for installing" -# @cd utils; ${MAKE} install - -# the following ones recreate all Makefiles. - -makefiles:: recreate -Makefiles:: recreate -recreate:: - @setup/general/createall - -# the following ones define what needs to be done to distribute the -# library and its components - -distribute:: distrib -distrib:: distrib_base distrib_user join_utils join_samples - -distrib_samples:: - @echo "entering directory samples creating distribution files" - @(cd samples; ${MAKE} -k distrib) - -distrib_user:: - @echo "entering directory user creating distribution files" - @(cd user; ${MAKE} -k distrib) - -distrib_utils:: - @echo "entering directory utils creating distribution files" - @(cd utils; ${MAKE} -k distrib) - -join_utils:: distrib_utils - @$(MAKE) join \ - BASEDIR=utils \ - FILES=`echo distrib/utils/*.tgz ` - -join_samples:: distrib_samples - @$(MAKE) join \ - BASEDIR=samples \ - FILES=`echo distrib/samples/*.tgz ` - -join_user:: distrib_user - @$(MAKE) join \ - BASEDIR=user \ - FILES=`echo distrib/user/*.tgz ` - -join:: - @# needed are BASEDIR and FILES - @if test "x$$BASEDIR" = x; then\ - echo "BASEDIR not specified.";\ - exit -1;\ - fi - @if test "x$$FILES" != x ; then \ - echo "putting all seperate distribution files:";\ - echo "$$FILES";\ - echo "into distrib/$(BASEDIR).tgz";\ - src/gtk/setup/general/jointar $(BASEDIR) $$FILES distrib/$(BASEDIR).tgz; \ - else \ - echo "Nothing to join - deleting..."; \ - echo "This may be the case, if you have not specified FILES."\ - rm -f distrib/$(BASEDIR).tgz; \ - fi - -distrib_base:: - @if test ! -d distrib ; then mkdir distrib; fi; - @if test ! -f system.list ; then \ - echo "dummy" > system.list;\ - fi - @(curr=`pwd`; direc=`basename $$curr`;\ - (cd ..; \ - echo creating distrib/$$direc.tar from the current directory;\ - tar -cf /tmp/$$direc.tar \ - $$direc/COPYING\ - $$direc/INSTALL\ - $$direc/Makefile\ - $$direc/template.mak\ - $$direc/configure\ - $$direc/configure.in\ - $$direc/config.guess\ - $$direc/config.sub\ - $$direc/install-sh\ - $$direc/user/Makefile \ - $$direc/utils/Makefile \ - $$direc/samples/Makefile \ - ;\ - sed "s|^\(.*\)$$|/\1/|g" $$direc/system.list \ - | uniq > /tmp/$$direc.list; \ - echo "/RCS/" >> /tmp/$$direc.list; \ - for each in misc docs wx src setup; do \ - tar -uf /tmp/$$direc.tar \ - `\ - find $$direc/$$each \( -type f -o -type l \) -print \ - | fgrep -vf /tmp/$$direc.list \ - | grep -v "[~#]$$" \ - ` ;\ - done; \ - echo compressing $$direc.tar to $$direc.tgz;\ - gzip -9 -c /tmp/$$direc.tar > $$direc/distrib/$$direc.tgz;\ - rm /tmp/$$direc.tar /tmp/$$direc.list;\ - )\ - ) - -# the following ones are only needed if configure.in has changed -# and needs to be updated... - -config:: configure - -configure:: - @autoconf - @cat configure \ - | sed "s/config.cache/\$$OSTYPE.config.cache/g" \ - | sed "s/config.status/\$$OSTYPE.config.status/g" \ - | sed "s/\*\*--/ --/g" \ - > configure1 - @chmod a+x configure1 - @mv configure1 configure - - diff --git a/config.guess b/config.guess deleted file mode 100755 index c3c4e799a6..0000000000 --- a/config.guess +++ /dev/null @@ -1,599 +0,0 @@ -#! /bin/sh -# Attempt to guess a canonical system name. -# Copyright (C) 1992, 93, 94, 95, 1996 Free Software Foundation, Inc. -# -# This file is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program 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 -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Written by Per Bothner . -# The master version of this file is at the FSF in /home/gd/gnu/lib. -# -# This script attempts to guess a canonical system name similar to -# config.sub. If it succeeds, it prints the system name on stdout, and -# exits with 0. Otherwise, it exits with 1. -# -# The plan is that this can be called by configure scripts if you -# don't specify an explicit system type (host/target name). -# -# Only a few systems have been added to this list; please add others -# (but try to keep the structure clean). -# - -# This is needed to find uname on a Pyramid OSx when run in the BSD universe. -# (ghazi@noc.rutgers.edu 8/24/94.) -if (test -f /.attbin/uname) >/dev/null 2>&1 ; then - PATH=$PATH:/.attbin ; export PATH -fi - -UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown -UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown -UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown - -trap 'rm -f dummy.c dummy.o dummy; exit 1' 1 2 15 - -# Note: order is significant - the case branches are not exclusive. - -case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in - alpha:OSF1:[VX]*:*) - # After 1.2, OSF1 uses "V1.3" for uname -r. - # After 4.x, OSF1 uses "X4.x" for uname -r. - echo alpha-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VX]//'` - exit 0 ;; - alpha:OSF1:*:*) - # 1.2 uses "1.2" for uname -r. - echo alpha-dec-osf${UNAME_RELEASE} - exit 0 ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 - exit 0 ;; - Amiga*:UNIX_System_V:4.0:*) - echo m68k-cbm-sysv4 - exit 0;; - amiga:NetBSD:*:*) - echo m68k-cbm-netbsd${UNAME_RELEASE} - exit 0 ;; - arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix${UNAME_RELEASE} - exit 0;; - Pyramid*:OSx*:*:*) - if test "`(/bin/universe) 2>/dev/null`" = att ; then - echo pyramid-pyramid-sysv3 - else - echo pyramid-pyramid-bsd - fi - exit 0 ;; - sun4*:SunOS:5.*:*) - echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - i86pc:SunOS:5.*:*) - echo i386-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - sun4*:SunOS:6*:*) - # According to config.sub, this is the proper way to canonicalize - # SunOS6. Hard to guess exactly what SunOS6 will be like, but - # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in - Series*|S4*) - UNAME_RELEASE=`uname -v` - ;; - esac - # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` - exit 0 ;; - sun3*:SunOS:*:*) - echo m68k-sun-sunos${UNAME_RELEASE} - exit 0 ;; - atari*:NetBSD:*:*) - echo m68k-atari-netbsd${UNAME_RELEASE} - exit 0 ;; - sun3*:NetBSD:*:*) - echo m68k-sun-netbsd${UNAME_RELEASE} - exit 0 ;; - mac68k:NetBSD:*:*) - echo m68k-apple-netbsd${UNAME_RELEASE} - exit 0 ;; - RISC*:ULTRIX:*:*) - echo mips-dec-ultrix${UNAME_RELEASE} - exit 0 ;; - VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix${UNAME_RELEASE} - exit 0 ;; - mips:*:4*:UMIPS) - echo mips-mips-riscos4sysv - exit 0 ;; - mips:*:5*:RISCos) - echo mips-mips-riscos${UNAME_RELEASE} - exit 0 ;; - Night_Hawk:Power_UNIX:*:*) - echo powerpc-harris-powerunix - exit 0 ;; - m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 - exit 0 ;; - m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit 0 ;; - m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit 0 ;; - AViiON:dgux:*:*) - # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=`uname -p` - if [ $UNAME_PROCESSOR = mc88100 -o $UNAME_PROCESSOR = mc88100 ] ; then - if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx \ - -o ${TARGET_BINARY_INTERFACE}x = x ] ; then - echo m88k-dg-dgux${UNAME_RELEASE} - else - echo m88k-dg-dguxbcs${UNAME_RELEASE} - fi - else echo i586-dg-dgux${UNAME_RELEASE} - fi - exit 0 ;; - M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit 0 ;; - M88*:*:R3*:*) - # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit 0 ;; - XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 - exit 0 ;; - Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd - exit 0 ;; - *:IRIX*:*:*) - echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` - exit 0 ;; - ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' - i[34]86:AIX:*:*) - echo i386-ibm-aix - exit 0 ;; - *:AIX:2:3) - if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - sed 's/^ //' << EOF >dummy.c - #include - - main() - { - if (!__power_pc()) - exit(1); - puts("powerpc-ibm-aix3.2.5"); - exit(0); - } -EOF - ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0 - rm -f dummy.c dummy - echo rs6000-ibm-aix3.2.5 - elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 - else - echo rs6000-ibm-aix3.2 - fi - exit 0 ;; - *:AIX:*:4) - if /usr/sbin/lsattr -EHl proc0 | grep POWER >/dev/null 2>&1; then - IBM_ARCH=rs6000 - else - IBM_ARCH=powerpc - fi - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=4.${UNAME_RELEASE} - fi - echo ${IBM_ARCH}-ibm-aix${IBM_REV} - exit 0 ;; - *:AIX:*:*) - echo rs6000-ibm-aix - exit 0 ;; - ibmrt:4.4BSD:*|romp-ibm:BSD:*) - echo romp-ibm-bsd4.4 - exit 0 ;; - ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC NetBSD and - echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to - exit 0 ;; # report: romp-ibm BSD 4.3 - *:BOSX:*:*) - echo rs6000-bull-bosx - exit 0 ;; - DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit 0 ;; - 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit 0 ;; - hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit 0 ;; - 9000/[3478]??:HP-UX:*:*) - case "${UNAME_MACHINE}" in - 9000/31? ) HP_ARCH=m68000 ;; - 9000/[34]?? ) HP_ARCH=m68k ;; - 9000/7?? | 9000/8?[679] ) HP_ARCH=hppa1.1 ;; - 9000/8?? ) HP_ARCH=hppa1.0 ;; - esac - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - echo ${HP_ARCH}-hp-hpux${HPUX_REV} - exit 0 ;; - 3050*:HI-UX:*:*) - sed 's/^ //' << EOF >dummy.c - #include - int - main () - { - long cpu = sysconf (_SC_CPU_VERSION); - /* The order matters, because CPU_IS_HP_MC68K erroneously returns - true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct - results, however. */ - if (CPU_IS_PA_RISC (cpu)) - { - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; - case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; - default: puts ("hppa-hitachi-hiuxwe2"); break; - } - } - else if (CPU_IS_HP_MC68K (cpu)) - puts ("m68k-hitachi-hiuxwe2"); - else puts ("unknown-hitachi-hiuxwe2"); - exit (0); - } -EOF - ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0 - rm -f dummy.c dummy - echo unknown-hitachi-hiuxwe2 - exit 0 ;; - 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) - echo hppa1.1-hp-bsd - exit 0 ;; - 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd - exit 0 ;; - hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) - echo hppa1.1-hp-osf - exit 0 ;; - hp8??:OSF1:*:*) - echo hppa1.0-hp-osf - exit 0 ;; - parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit 0 ;; - C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd - exit 0 ;; - C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit 0 ;; - C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd - exit 0 ;; - C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd - exit 0 ;; - C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd - exit 0 ;; - CRAY*X-MP:*:*:*) - echo xmp-cray-unicos - exit 0 ;; - CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} - exit 0 ;; - CRAY*C90:*:*:*) - echo c90-cray-unicos${UNAME_RELEASE} - exit 0 ;; - CRAY-2:*:*:*) - echo cray2-cray-unicos - exit 0 ;; - hp3[0-9][05]:NetBSD:*:*) - echo m68k-hp-netbsd${UNAME_RELEASE} - exit 0 ;; - i[34]86:BSD/386:*:* | *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} - exit 0 ;; - *:FreeBSD:*:*) - echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` - exit 0 ;; - *:NetBSD:*:*) - echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` - exit 0 ;; - i*:CYGWIN*:*) - echo i386-unknown-cygwin32 - exit 0 ;; - p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin32 - exit 0 ;; - *:GNU:*:*) - echo `echo ${UNAME_MACHINE}|sed -e 's,/.*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` - exit 0 ;; - *:Linux:*:*) - # The BFD linker knows what the default object file format is, so - # first see if it will tell us. - ld_help_string=`ld --help 2>&1` - if echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: elf_i[345]86"; then - echo "${UNAME_MACHINE}-unknown-linux" ; exit 0 - elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: i[345]86linux"; then - echo "${UNAME_MACHINE}-unknown-linuxaout" ; exit 0 - elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: i[345]86coff"; then - echo "${UNAME_MACHINE}-unknown-linuxcoff" ; exit 0 - elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: m68kelf"; then - echo "${UNAME_MACHINE}-unknown-linux" ; exit 0 - elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: m68klinux"; then - echo "${UNAME_MACHINE}-unknown-linuxaout" ; exit 0 - elif test "${UNAME_MACHINE}" = "alpha" ; then - echo alpha-unknown-linux ; exit 0 - else - # Either a pre-BFD a.out linker (linuxoldld) or one that does not give us - # useful --help. Gcc wants to distinguish between linuxoldld and linuxaout. - test ! -d /usr/lib/ldscripts/. \ - && echo "${UNAME_MACHINE}-unknown-linuxoldld" && exit 0 - # Determine whether the default compiler is a.out or elf - cat >dummy.c </dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0 - rm -f dummy.c dummy - fi ;; -# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. earlier versions -# are messed up and put the nodename in both sysname and nodename. - i[34]86:DYNIX/ptx:4*:*) - echo i386-sequent-sysv4 - exit 0 ;; - i[34]86:*:4.*:* | i[34]86:SYSTEM_V:4.*:*) - if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE} - else - echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE} - fi - exit 0 ;; - i[34]86:*:3.2:*) - if test -f /usr/options/cb.name; then - UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then - UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')` - (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 - (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \ - && UNAME_MACHINE=i586 - echo ${UNAME_MACHINE}-unknown-sco$UNAME_REL - else - echo ${UNAME_MACHINE}-unknown-sysv32 - fi - exit 0 ;; - Intel:Mach:3*:*) - echo i386-unknown-mach3 - exit 0 ;; - paragon:*:*:*) - echo i860-intel-osf1 - exit 0 ;; - i860:*:4.*:*) # i860-SVR4 - if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 - else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 - fi - exit 0 ;; - mini*:CTIX:SYS*5:*) - # "miniframe" - echo m68010-convergent-sysv - exit 0 ;; - M680[234]0:*:R3V[567]*:*) - test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; - 3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0) - uname -p 2>/dev/null | grep 86 >/dev/null \ - && echo i486-ncr-sysv4.3 && exit 0 ;; - 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) - uname -p 2>/dev/null | grep 86 >/dev/null \ - && echo i486-ncr-sysv4 && exit 0 ;; - m680[234]0:LynxOS:2.[23]*:*) - echo m68k-lynx-lynxos${UNAME_RELEASE} - exit 0 ;; - mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 - exit 0 ;; - i[34]86:LynxOS:2.[23]*:*) - echo i386-lynx-lynxos${UNAME_RELEASE} - exit 0 ;; - TSUNAMI:LynxOS:2.[23]*:*) - echo sparc-lynx-lynxos${UNAME_RELEASE} - exit 0 ;; - rs6000:LynxOS:2.[23]*:*) - echo rs6000-lynx-lynxos${UNAME_RELEASE} - exit 0 ;; - RM*:SINIX-*:*:*) - echo mips-sni-sysv4 - exit 0 ;; - *:SINIX-*:*:*) - if uname -p 2>/dev/null >/dev/null ; then - UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo ${UNAME_MACHINE}-sni-sysv4 - else - echo ns32k-sni-sysv - fi - exit 0 ;; - mc68*:A/UX:*:*) - echo m68k-apple-aux${UNAME_RELEASE} - exit 0 ;; - R3000:*System_V*:*:*) - if [ -d /usr/nec ]; then - echo mips-nec-sysv${UNAME_RELEASE} - else - echo mips-unknown-sysv${UNAME_RELEASE} - fi - exit 0 ;; -esac - -#echo '(No uname command or uname output not recognized.)' 1>&2 -#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 - -cat >dummy.c < -# include -#endif -main () -{ -#if defined (sony) -#if defined (MIPSEB) - /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, - I don't know.... */ - printf ("mips-sony-bsd\n"); exit (0); -#else -#include - printf ("m68k-sony-newsos%s\n", -#ifdef NEWSOS4 - "4" -#else - "" -#endif - ); exit (0); -#endif -#endif - -#if defined (__arm) && defined (__acorn) && defined (__unix) - printf ("arm-acorn-riscix"); exit (0); -#endif - -#if defined (hp300) && !defined (hpux) - printf ("m68k-hp-bsd\n"); exit (0); -#endif - -#if defined (NeXT) -#if !defined (__ARCHITECTURE__) -#define __ARCHITECTURE__ "m68k" -#endif - int version; - version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; - printf ("%s-next-nextstep%s\n", __ARCHITECTURE__, version==2 ? "2" : "3"); - exit (0); -#endif - -#if defined (MULTIMAX) || defined (n16) -#if defined (UMAXV) - printf ("ns32k-encore-sysv\n"); exit (0); -#else -#if defined (CMU) - printf ("ns32k-encore-mach\n"); exit (0); -#else - printf ("ns32k-encore-bsd\n"); exit (0); -#endif -#endif -#endif - -#if defined (__386BSD__) - printf ("i386-unknown-bsd\n"); exit (0); -#endif - -#if defined (sequent) -#if defined (i386) - printf ("i386-sequent-dynix\n"); exit (0); -#endif -#if defined (ns32000) - printf ("ns32k-sequent-dynix\n"); exit (0); -#endif -#endif - -#if defined (_SEQUENT_) - struct utsname un; - - uname(&un); - - if (strncmp(un.version, "V2", 2) == 0) { - printf ("i386-sequent-ptx2\n"); exit (0); - } - if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ - printf ("i386-sequent-ptx1\n"); exit (0); - } - printf ("i386-sequent-ptx\n"); exit (0); - -#endif - -#if defined (vax) -#if !defined (ultrix) - printf ("vax-dec-bsd\n"); exit (0); -#else - printf ("vax-dec-ultrix\n"); exit (0); -#endif -#endif - -#if defined (alliant) && defined (i860) - printf ("i860-alliant-bsd\n"); exit (0); -#endif - - exit (1); -} -EOF - -${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy && rm dummy.c dummy && exit 0 -rm -f dummy.c dummy - -# Apollos put the system type in the environment. - -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } - -# Convex versions that predate uname can use getsysinfo(1) - -if [ -x /usr/convex/getsysinfo ] -then - case `getsysinfo -f cpu_type` in - c1*) - echo c1-convex-bsd - exit 0 ;; - c2*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit 0 ;; - c34*) - echo c34-convex-bsd - exit 0 ;; - c38*) - echo c38-convex-bsd - exit 0 ;; - c4*) - echo c4-convex-bsd - exit 0 ;; - esac -fi - -#echo '(Unable to guess system type)' 1>&2 - -exit 1 diff --git a/config.sub b/config.sub deleted file mode 100755 index 0432524944..0000000000 --- a/config.sub +++ /dev/null @@ -1,927 +0,0 @@ -#! /bin/sh -# Configuration validation subroutine script, version 1.1. -# Copyright (C) 1991, 92, 93, 94, 95, 1996 Free Software Foundation, Inc. -# This file is (in principle) common to ALL GNU software. -# The presence of a machine in this file suggests that SOME GNU software -# can handle that machine. It does not imply ALL GNU software can. -# -# This file is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program 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 General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Configuration subroutine to validate and canonicalize a configuration type. -# Supply the specified configuration type as an argument. -# If it is invalid, we print an error message on stderr and exit with code 1. -# Otherwise, we print the canonical config type on stdout and succeed. - -# This file is supposed to be the same for all GNU packages -# and recognize all the CPU types, system types and aliases -# that are meaningful with *any* GNU software. -# Each package is responsible for reporting which valid configurations -# it does not support. The user should be able to distinguish -# a failure to support a valid configuration from a meaningless -# configuration. - -# The goal of this file is to map all the various variations of a given -# machine specification into a single specification in the form: -# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM -# or in some cases, the newer four-part form: -# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM -# It is wrong to echo any other type of specification. - -if [ x$1 = x ] -then - echo Configuration name missing. 1>&2 - echo "Usage: $0 CPU-MFR-OPSYS" 1>&2 - echo "or $0 ALIAS" 1>&2 - echo where ALIAS is a recognized configuration type. 1>&2 - exit 1 -fi - -# First pass through any local machine types. -case $1 in - *local*) - echo $1 - exit 0 - ;; - *) - ;; -esac - -# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). -# Here we must recognize all the valid KERNEL-OS combinations. -maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` -case $maybe_os in - linux-gnu*) - os=-$maybe_os - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` - ;; - *) - basic_machine=`echo $1 | sed 's/-[^-]*$//'` - if [ $basic_machine != $1 ] - then os=`echo $1 | sed 's/.*-/-/'` - else os=; fi - ;; -esac - -### Let's recognize common machines as not being operating systems so -### that things like config.sub decstation-3100 work. We also -### recognize some manufacturers as not being operating systems, so we -### can provide default operating systems below. -case $os in - -sun*os*) - # Prevent following clause from handling this invalid input. - ;; - -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ - -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ - -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ - -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ - -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ - -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple) - os= - basic_machine=$1 - ;; - -hiux*) - os=-hiuxwe2 - ;; - -sco5) - os=sco3.2v5 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco4) - os=-sco3.2v4 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2.[4-9]*) - os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2v[4-9]*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco*) - os=-sco3.2v2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -isc) - os=-isc2.2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -clix*) - basic_machine=clipper-intergraph - ;; - -isc*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -lynx*) - os=-lynxos - ;; - -ptx*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` - ;; - -windowsnt*) - os=`echo $os | sed -e 's/windowsnt/winnt/'` - ;; - -psos*) - os=-psos - ;; -esac - -# Decode aliases for certain CPU-COMPANY combinations. -case $basic_machine in - # Recognize the basic CPU types without company name. - # Some are omitted here because they have special meanings below. - tahoe | i860 | m68k | m68000 | m88k | ns32k | arm \ - | arme[lb] | pyramid \ - | tron | a29k | 580 | i960 | h8300 | hppa | hppa1.0 | hppa1.1 \ - | alpha | we32k | ns16k | clipper | i370 | sh \ - | powerpc | powerpcle | 1750a | dsp16xx | mips64 | mipsel \ - | pdp11 | mips64el | mips64orion | mips64orionel \ - | sparc | sparclet | sparclite | sparc64) - basic_machine=$basic_machine-unknown - ;; - # We use `pc' rather than `unknown' - # because (1) that's what they normally are, and - # (2) the word "unknown" tends to confuse beginning users. - i[3456]86) - basic_machine=$basic_machine-pc - ;; - # Object if more than one company name word. - *-*-*) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; - # Recognize the basic CPU types with company name. - vax-* | tahoe-* | i[3456]86-* | i860-* | m68k-* | m68000-* | m88k-* \ - | sparc-* | ns32k-* | fx80-* | arm-* | c[123]* \ - | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* | power-* \ - | none-* | 580-* | cray2-* | h8300-* | i960-* | xmp-* | ymp-* \ - | hppa-* | hppa1.0-* | hppa1.1-* | alpha-* | we32k-* | cydra-* | ns16k-* \ - | pn-* | np1-* | xps100-* | clipper-* | orion-* | sparclite-* \ - | pdp11-* | sh-* | powerpc-* | powerpcle-* | sparc64-* | mips64-* | mipsel-* \ - | mips64el-* | mips64orion-* | mips64orionel-* | f301-*) - ;; - # Recognize the various machine names and aliases which stand - # for a CPU type and a company and sometimes even an OS. - 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) - basic_machine=m68000-att - ;; - 3b*) - basic_machine=we32k-att - ;; - alliant | fx80) - basic_machine=fx80-alliant - ;; - altos | altos3068) - basic_machine=m68k-altos - ;; - am29k) - basic_machine=a29k-none - os=-bsd - ;; - amdahl) - basic_machine=580-amdahl - os=-sysv - ;; - amiga | amiga-*) - basic_machine=m68k-cbm - ;; - amigados) - basic_machine=m68k-cbm - os=-amigados - ;; - amigaunix | amix) - basic_machine=m68k-cbm - os=-sysv4 - ;; - apollo68) - basic_machine=m68k-apollo - os=-sysv - ;; - aux) - basic_machine=m68k-apple - os=-aux - ;; - balance) - basic_machine=ns32k-sequent - os=-dynix - ;; - convex-c1) - basic_machine=c1-convex - os=-bsd - ;; - convex-c2) - basic_machine=c2-convex - os=-bsd - ;; - convex-c32) - basic_machine=c32-convex - os=-bsd - ;; - convex-c34) - basic_machine=c34-convex - os=-bsd - ;; - convex-c38) - basic_machine=c38-convex - os=-bsd - ;; - cray | ymp) - basic_machine=ymp-cray - os=-unicos - ;; - cray2) - basic_machine=cray2-cray - os=-unicos - ;; - [ctj]90-cray) - basic_machine=c90-cray - os=-unicos - ;; - crds | unos) - basic_machine=m68k-crds - ;; - da30 | da30-*) - basic_machine=m68k-da30 - ;; - decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) - basic_machine=mips-dec - ;; - delta | 3300 | motorola-3300 | motorola-delta \ - | 3300-motorola | delta-motorola) - basic_machine=m68k-motorola - ;; - delta88) - basic_machine=m88k-motorola - os=-sysv3 - ;; - dpx20 | dpx20-*) - basic_machine=rs6000-bull - os=-bosx - ;; - dpx2* | dpx2*-bull) - basic_machine=m68k-bull - os=-sysv3 - ;; - ebmon29k) - basic_machine=a29k-amd - os=-ebmon - ;; - elxsi) - basic_machine=elxsi-elxsi - os=-bsd - ;; - encore | umax | mmax) - basic_machine=ns32k-encore - ;; - fx2800) - basic_machine=i860-alliant - ;; - genix) - basic_machine=ns32k-ns - ;; - gmicro) - basic_machine=tron-gmicro - os=-sysv - ;; - h3050r* | hiux*) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - h8300hms) - basic_machine=h8300-hitachi - os=-hms - ;; - harris) - basic_machine=m88k-harris - os=-sysv3 - ;; - hp300-*) - basic_machine=m68k-hp - ;; - hp300bsd) - basic_machine=m68k-hp - os=-bsd - ;; - hp300hpux) - basic_machine=m68k-hp - os=-hpux - ;; - hp9k2[0-9][0-9] | hp9k31[0-9]) - basic_machine=m68000-hp - ;; - hp9k3[2-9][0-9]) - basic_machine=m68k-hp - ;; - hp9k7[0-9][0-9] | hp7[0-9][0-9] | hp9k8[0-9]7 | hp8[0-9]7) - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][0-9] | hp8[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hppa-next) - os=-nextstep3 - ;; - i370-ibm* | ibm*) - basic_machine=i370-ibm - os=-mvs - ;; -# I'm not sure what "Sysv32" means. Should this be sysv3.2? - i[3456]86v32) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv32 - ;; - i[3456]86v4*) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv4 - ;; - i[3456]86v) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv - ;; - i[3456]86sol2) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-solaris2 - ;; - iris | iris4d) - basic_machine=mips-sgi - case $os in - -irix*) - ;; - *) - os=-irix4 - ;; - esac - ;; - isi68 | isi) - basic_machine=m68k-isi - os=-sysv - ;; - m88k-omron*) - basic_machine=m88k-omron - ;; - magnum | m3230) - basic_machine=mips-mips - os=-sysv - ;; - merlin) - basic_machine=ns32k-utek - os=-sysv - ;; - miniframe) - basic_machine=m68000-convergent - ;; - mips3*-*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` - ;; - mips3*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown - ;; - ncr3000) - basic_machine=i486-ncr - os=-sysv4 - ;; - news | news700 | news800 | news900) - basic_machine=m68k-sony - os=-newsos - ;; - news1000) - basic_machine=m68030-sony - os=-newsos - ;; - news-3600 | risc-news) - basic_machine=mips-sony - os=-newsos - ;; - next | m*-next ) - basic_machine=m68k-next - case $os in - -nextstep* ) - ;; - -ns2*) - os=-nextstep2 - ;; - *) - os=-nextstep3 - ;; - esac - ;; - nh3000) - basic_machine=m68k-harris - os=-cxux - ;; - nh[45]000) - basic_machine=m88k-harris - os=-cxux - ;; - nindy960) - basic_machine=i960-intel - os=-nindy - ;; - np1) - basic_machine=np1-gould - ;; - pa-hitachi) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - paragon) - basic_machine=i860-intel - os=-osf - ;; - pbd) - basic_machine=sparc-tti - ;; - pbb) - basic_machine=m68k-tti - ;; - pc532 | pc532-*) - basic_machine=ns32k-pc532 - ;; - pentium | p5) - basic_machine=i586-intel - ;; - pentiumpro | p6) - basic_machine=i686-intel - ;; - pentium-* | p5-*) - basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumpro-* | p6-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - k5) - # We don't have specific support for AMD's K5 yet, so just call it a Pentium - basic_machine=i586-amd - ;; - nexen) - # We don't have specific support for Nexgen yet, so just call it a Pentium - basic_machine=i586-nexgen - ;; - pn) - basic_machine=pn-gould - ;; - power) basic_machine=rs6000-ibm - ;; - ppc) basic_machine=powerpc-unknown - ;; - ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppcle | powerpclittle | ppc-le | powerpc-little) - basic_machine=powerpcle-unknown - ;; - ppcle-* | powerpclittle-*) - basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ps2) - basic_machine=i386-ibm - ;; - rm[46]00) - basic_machine=mips-siemens - ;; - rtpc | rtpc-*) - basic_machine=romp-ibm - ;; - sequent) - basic_machine=i386-sequent - ;; - sh) - basic_machine=sh-hitachi - os=-hms - ;; - sps7) - basic_machine=m68k-bull - os=-sysv2 - ;; - spur) - basic_machine=spur-unknown - ;; - sun2) - basic_machine=m68000-sun - ;; - sun2os3) - basic_machine=m68000-sun - os=-sunos3 - ;; - sun2os4) - basic_machine=m68000-sun - os=-sunos4 - ;; - sun3os3) - basic_machine=m68k-sun - os=-sunos3 - ;; - sun3os4) - basic_machine=m68k-sun - os=-sunos4 - ;; - sun4os3) - basic_machine=sparc-sun - os=-sunos3 - ;; - sun4os4) - basic_machine=sparc-sun - os=-sunos4 - ;; - sun4sol2) - basic_machine=sparc-sun - os=-solaris2 - ;; - sun3 | sun3-*) - basic_machine=m68k-sun - ;; - sun4) - basic_machine=sparc-sun - ;; - sun386 | sun386i | roadrunner) - basic_machine=i386-sun - ;; - symmetry) - basic_machine=i386-sequent - os=-dynix - ;; - tower | tower-32) - basic_machine=m68k-ncr - ;; - udi29k) - basic_machine=a29k-amd - os=-udi - ;; - ultra3) - basic_machine=a29k-nyu - os=-sym1 - ;; - vaxv) - basic_machine=vax-dec - os=-sysv - ;; - vms) - basic_machine=vax-dec - os=-vms - ;; - vpp*|vx|vx-*) - basic_machine=f301-fujitsu - ;; - vxworks960) - basic_machine=i960-wrs - os=-vxworks - ;; - vxworks68) - basic_machine=m68k-wrs - os=-vxworks - ;; - vxworks29k) - basic_machine=a29k-wrs - os=-vxworks - ;; - xmp) - basic_machine=xmp-cray - os=-unicos - ;; - xps | xps100) - basic_machine=xps100-honeywell - ;; - none) - basic_machine=none-none - os=-none - ;; - -# Here we handle the default manufacturer of certain CPU types. It is in -# some cases the only manufacturer, in others, it is the most popular. - mips) - basic_machine=mips-mips - ;; - romp) - basic_machine=romp-ibm - ;; - rs6000) - basic_machine=rs6000-ibm - ;; - vax) - basic_machine=vax-dec - ;; - pdp11) - basic_machine=pdp11-dec - ;; - we32k) - basic_machine=we32k-att - ;; - sparc) - basic_machine=sparc-sun - ;; - cydra) - basic_machine=cydra-cydrome - ;; - orion) - basic_machine=orion-highlevel - ;; - orion105) - basic_machine=clipper-highlevel - ;; - *) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; -esac - -# Here we canonicalize certain aliases for manufacturers. -case $basic_machine in - *-digital*) - basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` - ;; - *-commodore*) - basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` - ;; - *) - ;; -esac - -# Decode manufacturer-specific aliases for certain operating systems. - -if [ x"$os" != x"" ] -then -case $os in - # First match some system type aliases - # that might get confused with valid system types. - # -solaris* is a basic system type, with this one exception. - -solaris1 | -solaris1.*) - os=`echo $os | sed -e 's|solaris1|sunos4|'` - ;; - -solaris) - os=-solaris2 - ;; - -unixware* | svr4*) - os=-sysv4 - ;; - -gnu/linux*) - os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` - ;; - # First accept the basic system types. - # The portable systems comes first. - # Each alternative MUST END IN A *, to match a version number. - # -sysv* is not here because it comes later, after sysvr4. - -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ - | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ - | -amigados* | -msdos* | -newsos* | -unicos* | -aof* | -aos* \ - | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ - | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ - | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ - | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* \ - | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ - | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -cygwin32* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -linux-gnu* | -uxpv*) - # Remember, each alternative MUST END IN *, to match a version number. - ;; - -linux*) - os=`echo $os | sed -e 's|linux|linux-gnu|'` - ;; - -sunos5*) - os=`echo $os | sed -e 's|sunos5|solaris2|'` - ;; - -sunos6*) - os=`echo $os | sed -e 's|sunos6|solaris3|'` - ;; - -osfrose*) - os=-osfrose - ;; - -osf*) - os=-osf - ;; - -utek*) - os=-bsd - ;; - -dynix*) - os=-bsd - ;; - -acis*) - os=-aos - ;; - -ctix* | -uts*) - os=-sysv - ;; - -ns2 ) - os=-nextstep2 - ;; - # Preserve the version number of sinix5. - -sinix5.*) - os=`echo $os | sed -e 's|sinix|sysv|'` - ;; - -sinix*) - os=-sysv4 - ;; - -triton*) - os=-sysv3 - ;; - -oss*) - os=-sysv3 - ;; - -svr4) - os=-sysv4 - ;; - -svr3) - os=-sysv3 - ;; - -sysvr4) - os=-sysv4 - ;; - # This must come after -sysvr4. - -sysv*) - ;; - -xenix) - os=-xenix - ;; - -none) - ;; - *) - # Get rid of the `-' at the beginning of $os. - os=`echo $os | sed 's/[^-]*-//'` - echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 - exit 1 - ;; -esac -else - -# Here we handle the default operating systems that come with various machines. -# The value should be what the vendor currently ships out the door with their -# machine or put another way, the most popular os provided with the machine. - -# Note that if you're going to try to match "-MANUFACTURER" here (say, -# "-sun"), then you have to tell the case statement up towards the top -# that MANUFACTURER isn't an operating system. Otherwise, code above -# will signal an error saying that MANUFACTURER isn't an operating -# system, and we'll never get to this point. - -case $basic_machine in - *-acorn) - os=-riscix1.2 - ;; - arm*-semi) - os=-aout - ;; - pdp11-*) - os=-none - ;; - *-dec | vax-*) - os=-ultrix4.2 - ;; - m68*-apollo) - os=-domain - ;; - i386-sun) - os=-sunos4.0.2 - ;; - m68000-sun) - os=-sunos3 - # This also exists in the configure program, but was not the - # default. - # os=-sunos4 - ;; - *-tti) # must be before sparc entry or we get the wrong os. - os=-sysv3 - ;; - sparc-* | *-sun) - os=-sunos4.1.1 - ;; - *-ibm) - os=-aix - ;; - *-hp) - os=-hpux - ;; - *-hitachi) - os=-hiux - ;; - i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) - os=-sysv - ;; - *-cbm) - os=-amigados - ;; - *-dg) - os=-dgux - ;; - *-dolphin) - os=-sysv3 - ;; - m68k-ccur) - os=-rtu - ;; - m88k-omron*) - os=-luna - ;; - *-next ) - os=-nextstep - ;; - *-sequent) - os=-ptx - ;; - *-crds) - os=-unos - ;; - *-ns) - os=-genix - ;; - i370-*) - os=-mvs - ;; - *-next) - os=-nextstep3 - ;; - *-gould) - os=-sysv - ;; - *-highlevel) - os=-bsd - ;; - *-encore) - os=-bsd - ;; - *-sgi) - os=-irix - ;; - *-siemens) - os=-sysv4 - ;; - *-masscomp) - os=-rtu - ;; - f301-fujitsu) - os=-uxpv - ;; - *) - os=-none - ;; -esac -fi - -# Here we handle the case where we know the os, and the CPU type, but not the -# manufacturer. We pick the logical manufacturer. -vendor=unknown -case $basic_machine in - *-unknown) - case $os in - -riscix*) - vendor=acorn - ;; - -sunos*) - vendor=sun - ;; - -aix*) - vendor=ibm - ;; - -hpux*) - vendor=hp - ;; - -hiux*) - vendor=hitachi - ;; - -unos*) - vendor=crds - ;; - -dgux*) - vendor=dg - ;; - -luna*) - vendor=omron - ;; - -genix*) - vendor=ns - ;; - -mvs*) - vendor=ibm - ;; - -ptx*) - vendor=sequent - ;; - -vxsim* | -vxworks*) - vendor=wrs - ;; - -aux*) - vendor=apple - ;; - esac - basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` - ;; -esac - -echo $basic_machine$os diff --git a/configure b/configure deleted file mode 100755 index 7e4dd540fd..0000000000 --- a/configure +++ /dev/null @@ -1,7425 +0,0 @@ -#! /bin/sh - -# Guess values for system-dependent variables and create Makefiles. -# Generated automatically using autoconf version 2.12 -# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. -# -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. - -# Defaults: -ac_help= -ac_default_prefix=/usr/local -# Any additions from configure.in: -ac_help="$ac_help - --with-x use the X Window System" -ac_help="$ac_help -**--with-gtk use GTK" -ac_help="$ac_help -**--with-qt use Qt" -ac_help="$ac_help -**--with-motif use Motif/Lesstif" -ac_help="$ac_help -**--with-shared create shared libraries" -ac_help="$ac_help -**--with-optimise create optimised code" -ac_help="$ac_help -**--with-debug_flag create code with WXDEBUG define set to 1" -ac_help="$ac_help -**--with-debug_info create code with debuging information" -ac_help="$ac_help -**--with-debug_gdb create code with extra GDB debuging information" -ac_help="$ac_help -**--with-mem_traing create code with memory tracing" -ac_help="$ac_help -**--with-dmalloc use dmalloc memory debug library (www.letters.com/dmalloc/)" -ac_help="$ac_help -**--with-profile create code with profiling information" -ac_help="$ac_help -**--with_apple_ieee use the Apple IEEE codec" -ac_help="$ac_help -**--with-threads for enabling threads" -ac_help="$ac_help -**--with-zlib use zlib for LZW comression" -ac_help="$ac_help -**--with-libpng use libpng (PNG image format)" -ac_help="$ac_help -**--with-odbc use iODBC and wxODBC classes" -ac_help="$ac_help -**--with-timedate use wxTime and wxDate classes" -ac_help="$ac_help -**--with-intl use internationalization system" -ac_help="$ac_help -**--with-config use wxConfig class" -ac_help="$ac_help -**--with-streams use wxStream etc classes" -ac_help="$ac_help -**--with-serial use class serialization" -ac_help="$ac_help -**--with-afmfonts use Adobe Font Metric Font table" -ac_help="$ac_help -**--with-PS-normalized use normalized PS fonts" -ac_help="$ac_help -**--with-postscript use wxPostscriptDC device context" -ac_help="$ac_help -**--with-unicode compile wxString with Unicode support" -ac_help="$ac_help -**--with-wcsrtombs use wcsrtombs instead of (buggy in GNU libc5) wcstombs" -ac_help="$ac_help -**--with-wxresources use wxWindows's resources" -ac_help="$ac_help -**--with-prologio use Prolog IO library" -ac_help="$ac_help -**--with-rpc use Prolog's remote procedure calls" -ac_help="$ac_help -**--with-ipc use interprocess communication (wxSocket etc.)" -ac_help="$ac_help -**--with-resources use X resources for saving information" -ac_help="$ac_help -**--with-clipboard use wxClipboard classes" -ac_help="$ac_help -**--with-dnd use Drag'n'Drop classes" -ac_help="$ac_help -**--with-mdi use multiple document interface architecture" -ac_help="$ac_help -**--with-docview use document view architecture" -ac_help="$ac_help -**--with-printarch use printing architecture" -ac_help="$ac_help -**--with-help use help (using external browser at present)" -ac_help="$ac_help -**--with-gtk-prefix=PFX Prefix where GTK is installed" -ac_help="$ac_help -**--with-gtk-exec-prefix=PFX Exec prefix where GTK is installed" - -# Initialize some variables set by options. -# The variables have the same names as the options, with -# dashes changed to underlines. -build=NONE -cache_file=./config.cache -exec_prefix=NONE -host=NONE -no_create= -nonopt=NONE -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -target=NONE -verbose= -x_includes=NONE -x_libraries=NONE -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datadir='${prefix}/share' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -libdir='${exec_prefix}/lib' -includedir='${prefix}/include' -oldincludedir='/usr/include' -infodir='${prefix}/info' -mandir='${prefix}/man' - -# Initialize some other variables. -subdirs= -MFLAGS= MAKEFLAGS= -# Maximum number of lines to put in a shell here document. -ac_max_here_lines=12 - -ac_prev= -for ac_option -do - - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval "$ac_prev=\$ac_option" - ac_prev= - continue - fi - - case "$ac_option" in - -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; - *) ac_optarg= ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case "$ac_option" in - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir="$ac_optarg" ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build="$ac_optarg" ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file="$ac_optarg" ;; - - -datadir | --datadir | --datadi | --datad | --data | --dat | --da) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ - | --da=*) - datadir="$ac_optarg" ;; - - -disable-* | --disable-*) - ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then - { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } - fi - ac_feature=`echo $ac_feature| sed 's/-/_/g'` - eval "enable_${ac_feature}=no" ;; - - -enable-* | --enable-*) - ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then - { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } - fi - ac_feature=`echo $ac_feature| sed 's/-/_/g'` - case "$ac_option" in - *=*) ;; - *) ac_optarg=yes ;; - esac - eval "enable_${ac_feature}='$ac_optarg'" ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix="$ac_optarg" ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he) - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat << EOF -Usage: configure [options] [host] -Options: [defaults in brackets after descriptions] -Configuration: - --cache-file=FILE cache test results in FILE - --help print this message - --no-create do not create output files - --quiet, --silent do not print \`checking...' messages - --version print the version of autoconf that created configure -Directory and file names: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [same as prefix] - --bindir=DIR user executables in DIR [EPREFIX/bin] - --sbindir=DIR system admin executables in DIR [EPREFIX/sbin] - --libexecdir=DIR program executables in DIR [EPREFIX/libexec] - --datadir=DIR read-only architecture-independent data in DIR - [PREFIX/share] - --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data in DIR - [PREFIX/com] - --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var] - --libdir=DIR object code libraries in DIR [EPREFIX/lib] - --includedir=DIR C header files in DIR [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include] - --infodir=DIR info documentation in DIR [PREFIX/info] - --mandir=DIR man documentation in DIR [PREFIX/man] - --srcdir=DIR find the sources in DIR [configure dir or ..] - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM - run sed PROGRAM on installed program names -EOF - cat << EOF -Host type: - --build=BUILD configure for building on BUILD [BUILD=HOST] - --host=HOST configure for HOST [guessed] - --target=TARGET configure for TARGET [TARGET=HOST] -Features and packages: - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --x-includes=DIR X include files are in DIR - --x-libraries=DIR X library files are in DIR -EOF - if test -n "$ac_help"; then - echo "--enable and --with options recognized:$ac_help" - fi - exit 0 ;; - - -host | --host | --hos | --ho) - ac_prev=host ;; - -host=* | --host=* | --hos=* | --ho=*) - host="$ac_optarg" ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir="$ac_optarg" ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir="$ac_optarg" ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir="$ac_optarg" ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir="$ac_optarg" ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst \ - | --locals | --local | --loca | --loc | --lo) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* \ - | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) - localstatedir="$ac_optarg" ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir="$ac_optarg" ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir="$ac_optarg" ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix="$ac_optarg" ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix="$ac_optarg" ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix="$ac_optarg" ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name="$ac_optarg" ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir="$ac_optarg" ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir="$ac_optarg" ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site="$ac_optarg" ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir="$ac_optarg" ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir="$ac_optarg" ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target="$ac_optarg" ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers) - echo "configure generated by autoconf version 2.12" - exit 0 ;; - - -with-* | --with-*) - ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then - { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } - fi - ac_package=`echo $ac_package| sed 's/-/_/g'` - case "$ac_option" in - *=*) ;; - *) ac_optarg=yes ;; - esac - eval "with_${ac_package}='$ac_optarg'" ;; - - -without-* | --without-*) - ac_package=`echo $ac_option|sed -e 's/-*without-//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then - { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } - fi - ac_package=`echo $ac_package| sed 's/-/_/g'` - eval "with_${ac_package}=no" ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes="$ac_optarg" ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries="$ac_optarg" ;; - - -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } - ;; - - *) - if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then - echo "configure: warning: $ac_option: invalid host type" 1>&2 - fi - if test "x$nonopt" != xNONE; then - { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } - fi - nonopt="$ac_option" - ;; - - esac -done - -if test -n "$ac_prev"; then - { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } -fi - -trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 - -# File descriptor usage: -# 0 standard input -# 1 file creation -# 2 errors and warnings -# 3 some systems may open it to /dev/tty -# 4 used on the Kubota Titan -# 6 checking for... messages and results -# 5 compiler messages saved in config.log -if test "$silent" = yes; then - exec 6>/dev/null -else - exec 6>&1 -fi -exec 5>./config.log - -echo "\ -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. -" 1>&5 - -# Strip out --no-create and --no-recursion so they do not pile up. -# Also quote any args containing shell metacharacters. -ac_configure_args= -for ac_arg -do - case "$ac_arg" in - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c) ;; - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) - ac_configure_args="$ac_configure_args '$ac_arg'" ;; - *) ac_configure_args="$ac_configure_args $ac_arg" ;; - esac -done - -# NLS nuisances. -# Only set these to C if already set. These must not be set unconditionally -# because not all systems understand e.g. LANG=C (notably SCO). -# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'! -# Non-C LC_CTYPE values break the ctype check. -if test "${LANG+set}" = set; then LANG=C; export LANG; fi -if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi -if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi -if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -rf conftest* confdefs.h -# AIX cpp loses on an empty file, so make sure it contains at least a newline. -echo > confdefs.h - -# A filename unique to this package, relative to the directory that -# configure is in, which we can look for to find out if srcdir is correct. -ac_unique_file=configure.in - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then its parent. - ac_prog=$0 - ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` - test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. - srcdir=$ac_confdir - if test ! -r $srcdir/$ac_unique_file; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r $srcdir/$ac_unique_file; then - if test "$ac_srcdir_defaulted" = yes; then - { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } - else - { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } - fi -fi -srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` - -# Prefer explicitly selected file to automatically selected ones. -if test -z "$CONFIG_SITE"; then - if test "x$prefix" != xNONE; then - CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" - else - CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" - fi -fi -for ac_site_file in $CONFIG_SITE; do - if test -r "$ac_site_file"; then - echo "loading site script $ac_site_file" - . "$ac_site_file" - fi -done - -if test -r "$cache_file"; then - echo "loading cache $cache_file" - . $cache_file -else - echo "creating cache $cache_file" - > $cache_file -fi - -ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cc_cross - -if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then - # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. - if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then - ac_n= ac_c=' -' ac_t=' ' - else - ac_n=-n ac_c= ac_t= - fi -else - ac_n= ac_c='\c' ac_t= -fi - - - - -OS="${OSTYPE}" - -if test "x$OS" = "x"; then - UNAME=`uname` - { echo "configure: error: "The system variable OS has not been set" - "please set is everytime befor compiling on this system" - "A good example for this system would be:" - "setenv OSTYPE $UNAME for csh as a SHELL" - "EXPORT OSTYPE=$UNAME for sh as SHELL" - "please set this and restart again." - " 1>&2; exit 1; } -fi - - -WXBASEDIR=`pwd` - - - -SEARCH_INCLUDE="\ - /usr/Motif1.2/include \ - /usr/dt/include/Xm \ - \ - /usr/X11R6/include \ - /usr/X11R5/include \ - /usr/X11R4/include \ - \ - /usr/X11R6/lib \ - /usr/X11R5/lib \ - /usr/X11R4/lib \ - \ - /usr/include/X11R6 \ - /usr/include/X11R5 \ - /usr/include/X11R4 \ - \ - /usr/local/X11R6/include \ - /usr/local/X11R5/include \ - /usr/local/X11R4/include \ - \ - /usr/local/include/X11R6 \ - /usr/local/include/X11R5 \ - /usr/local/include/X11R4 \ - \ - /usr/X11/include \ - /usr/include/X11 \ - /usr/local/X11/include \ - /usr/local/include/X11 \ - \ - /usr/X386/include \ - /usr/x386/include \ - /usr/XFree86/include/X11 \ - \ - /usr/include \ - /usr/include/gtk \ - /usr/include/gdk \ - /usr/include/glib \ - /usr/local/include \ - /usr/unsupported/include \ - /usr/athena/include \ - /usr/local/x11r5/include \ - /usr/lpp/Xamples/include \ - \ - /usr/local/include/gtk \ - /usr/local/include/Xm \ - /usr/local/include/qt \ - /usr/X11R6/include/Xm \ - /usr/X11/include/Xm \ - /usr/include/qt \ - \ - /usr/openwin/include \ - /usr/openwin/share/include \ - " - -SEARCH_LIB="`echo "$SEARCH_INCLUDE" | sed s/include/lib/g` \ - /usr/dt/lib \ - " - - - -# Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:685: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_CC="gcc" - break - fi - done - IFS="$ac_save_ifs" -fi -fi -CC="$ac_cv_prog_CC" -if test -n "$CC"; then - echo "$ac_t""$CC" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:714: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" - ac_prog_rejected=no - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - break - fi - done - IFS="$ac_save_ifs" -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# -gt 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - set dummy "$ac_dir/$ac_word" "$@" - shift - ac_cv_prog_CC="$@" - fi -fi -fi -fi -CC="$ac_cv_prog_CC" -if test -n "$CC"; then - echo "$ac_t""$CC" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; } -fi - -echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:762: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 - -ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cc_cross - -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then - ac_cv_prog_cc_works=yes - # If we can't run a trivial program, we are probably using a cross compiler. - if (./conftest; exit) 2>/dev/null; then - ac_cv_prog_cc_cross=no - else - ac_cv_prog_cc_cross=yes - fi -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_cv_prog_cc_works=no -fi -rm -fr conftest* - -echo "$ac_t""$ac_cv_prog_cc_works" 1>&6 -if test $ac_cv_prog_cc_works = no; then - { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } -fi -echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:796: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 -echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 -cross_compiling=$ac_cv_prog_cc_cross - -echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:801: checking whether we are using GNU C" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then - ac_cv_prog_gcc=yes -else - ac_cv_prog_gcc=no -fi -fi - -echo "$ac_t""$ac_cv_prog_gcc" 1>&6 - -if test $ac_cv_prog_gcc = yes; then - GCC=yes - ac_test_CFLAGS="${CFLAGS+set}" - ac_save_CFLAGS="$CFLAGS" - CFLAGS= - echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:825: checking whether ${CC-cc} accepts -g" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - echo 'void f(){}' > conftest.c -if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then - ac_cv_prog_cc_g=yes -else - ac_cv_prog_cc_g=no -fi -rm -f conftest* - -fi - -echo "$ac_t""$ac_cv_prog_cc_g" 1>&6 - if test "$ac_test_CFLAGS" = set; then - CFLAGS="$ac_save_CFLAGS" - elif test $ac_cv_prog_cc_g = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-O2" - fi -else - GCC= - test "${CFLAGS+set}" = set || CFLAGS="-g" -fi - - -CFLAGS=`echo "$CFLAGS" | sed 's/-g//g'` - -if test "x$CC" != xcc; then - echo $ac_n "checking whether $CC and cc understand -c and -o together""... $ac_c" 1>&6 -echo "configure:857: checking whether $CC and cc understand -c and -o together" >&5 -else - echo $ac_n "checking whether cc understands -c and -o together""... $ac_c" 1>&6 -echo "configure:860: checking whether cc understands -c and -o together" >&5 -fi -set dummy $CC; ac_cc="`echo $2 | - sed -e 's/[^a-zA-Z0-9_]/_/g' -e 's/^[0-9]/_/'`" -if eval "test \"`echo '$''{'ac_cv_prog_cc_${ac_cc}_c_o'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - echo 'foo(){}' > conftest.c -# Make sure it works both with $CC and with simple cc. -# We do the test twice because some compilers refuse to overwrite an -# existing .o file with -o, though they will create one. -ac_try='${CC-cc} -c conftest.c -o conftest.o 1>&5' -if { (eval echo configure:872: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } && - test -f conftest.o && { (eval echo configure:873: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; -then - eval ac_cv_prog_cc_${ac_cc}_c_o=yes - if test "x$CC" != xcc; then - # Test first that cc exists at all. - if { ac_try='cc -c conftest.c 1>&5'; { (eval echo configure:878: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then - ac_try='cc -c conftest.c -o conftest.o 1>&5' - if { (eval echo configure:880: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } && - test -f conftest.o && { (eval echo configure:881: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; - then - # cc works too. - : - else - # cc exists but doesn't like -o. - eval ac_cv_prog_cc_${ac_cc}_c_o=no - fi - fi - fi -else - eval ac_cv_prog_cc_${ac_cc}_c_o=no -fi -rm -f conftest* - -fi -if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = yes"; then - echo "$ac_t""yes" 1>&6 -else - echo "$ac_t""no" 1>&6 - cat >> confdefs.h <<\EOF -#define NO_MINUS_C_MINUS_O 1 -EOF - -fi - -echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:908: checking how to run the C preprocessor" >&5 -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then -if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - # This must be in double quotes, not single quotes, because CPP may get - # substituted into the Makefile and "${CC-cc}" will confuse make. - CPP="${CC-cc} -E" - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. - cat > conftest.$ac_ext < -Syntax Error -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:929: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out` -if test -z "$ac_err"; then - : -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - CPP="${CC-cc} -E -traditional-cpp" - cat > conftest.$ac_ext < -Syntax Error -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:946: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out` -if test -z "$ac_err"; then - : -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - CPP=/lib/cpp -fi -rm -f conftest* -fi -rm -f conftest* - ac_cv_prog_CPP="$CPP" -fi - CPP="$ac_cv_prog_CPP" -else - ac_cv_prog_CPP="$CPP" -fi -echo "$ac_t""$CPP" 1>&6 - -if test $ac_cv_prog_gcc = yes; then - echo $ac_n "checking whether ${CC-cc} needs -traditional""... $ac_c" 1>&6 -echo "configure:970: checking whether ${CC-cc} needs -traditional" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_gcc_traditional'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_pattern="Autoconf.*'x'" - cat > conftest.$ac_ext < -Autoconf TIOCGETP -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "$ac_pattern" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_prog_gcc_traditional=yes -else - rm -rf conftest* - ac_cv_prog_gcc_traditional=no -fi -rm -f conftest* - - - if test $ac_cv_prog_gcc_traditional = no; then - cat > conftest.$ac_ext < -Autoconf TCGETA -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "$ac_pattern" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_prog_gcc_traditional=yes -fi -rm -f conftest* - - fi -fi - -echo "$ac_t""$ac_cv_prog_gcc_traditional" 1>&6 - if test $ac_cv_prog_gcc_traditional = yes; then - CC="$CC -traditional" - fi -fi - - - - -for ac_prog in $CCC c++ g++ gcc CC cxx cc++ -do -# Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1023: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$CXX"; then - ac_cv_prog_CXX="$CXX" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_CXX="$ac_prog" - break - fi - done - IFS="$ac_save_ifs" -fi -fi -CXX="$ac_cv_prog_CXX" -if test -n "$CXX"; then - echo "$ac_t""$CXX" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - -test -n "$CXX" && break -done -test -n "$CXX" || CXX="gcc" - - -echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:1054: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5 - -ac_ext=C -# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cxx_cross - -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then - ac_cv_prog_cxx_works=yes - # If we can't run a trivial program, we are probably using a cross compiler. - if (./conftest; exit) 2>/dev/null; then - ac_cv_prog_cxx_cross=no - else - ac_cv_prog_cxx_cross=yes - fi -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_cv_prog_cxx_works=no -fi -rm -fr conftest* -ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cc_cross - -echo "$ac_t""$ac_cv_prog_cxx_works" 1>&6 -if test $ac_cv_prog_cxx_works = no; then - { echo "configure: error: installation or configuration problem: C++ compiler cannot create executables." 1>&2; exit 1; } -fi -echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:1094: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5 -echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6 -cross_compiling=$ac_cv_prog_cxx_cross - -echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6 -echo "configure:1099: checking whether we are using GNU C++" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.C <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then - ac_cv_prog_gxx=yes -else - ac_cv_prog_gxx=no -fi -fi - -echo "$ac_t""$ac_cv_prog_gxx" 1>&6 - -if test $ac_cv_prog_gxx = yes; then - GXX=yes - ac_test_CXXFLAGS="${CXXFLAGS+set}" - ac_save_CXXFLAGS="$CXXFLAGS" - CXXFLAGS= - echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6 -echo "configure:1123: checking whether ${CXX-g++} accepts -g" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - echo 'void f(){}' > conftest.cc -if test -z "`${CXX-g++} -g -c conftest.cc 2>&1`"; then - ac_cv_prog_cxx_g=yes -else - ac_cv_prog_cxx_g=no -fi -rm -f conftest* - -fi - -echo "$ac_t""$ac_cv_prog_cxx_g" 1>&6 - if test "$ac_test_CXXFLAGS" = set; then - CXXFLAGS="$ac_save_CXXFLAGS" - elif test $ac_cv_prog_cxx_g = yes; then - CXXFLAGS="-g -O2" - else - CXXFLAGS="-O2" - fi -else - GXX= - test "${CXXFLAGS+set}" = set || CXXFLAGS="-g" -fi - -echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6 -echo "configure:1151: checking how to run the C++ preprocessor" >&5 -if test -z "$CXXCPP"; then -if eval "test \"`echo '$''{'ac_cv_prog_CXXCPP'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_ext=C -# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cxx_cross - CXXCPP="${CXX-g++} -E" - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1169: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out` -if test -z "$ac_err"; then - : -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - CXXCPP=/lib/cpp -fi -rm -f conftest* - ac_cv_prog_CXXCPP="$CXXCPP" -ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cc_cross -fi -fi -CXXCPP="$ac_cv_prog_CXXCPP" -echo "$ac_t""$CXXCPP" 1>&6 - - -CXXFLAGS=`echo "$CXXFLAGS" | sed 's/-g//g'` - - - -# Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1201: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_RANLIB="ranlib" - break - fi - done - IFS="$ac_save_ifs" - test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":" -fi -fi -RANLIB="$ac_cv_prog_RANLIB" -if test -n "$RANLIB"; then - echo "$ac_t""$RANLIB" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - -# Extract the first word of "ar", so it can be a program name with args. -set dummy ar; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1231: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$AR"; then - ac_cv_prog_AR="$AR" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_AR="ar" - break - fi - done - IFS="$ac_save_ifs" - test -z "$ac_cv_prog_AR" && ac_cv_prog_AR="ar" -fi -fi -AR="$ac_cv_prog_AR" -if test -n "$AR"; then - echo "$ac_t""$AR" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - -ac_aux_dir= -for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do - if test -f $ac_dir/install-sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f $ac_dir/install.sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - fi -done -if test -z "$ac_aux_dir"; then - { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; } -fi -ac_config_guess=$ac_aux_dir/config.guess -ac_config_sub=$ac_aux_dir/config.sub -ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# ./install, which can be erroneously created by make from ./install.sh. -echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 -echo "configure:1288: checking for a BSD compatible install" >&5 -if test -z "$INSTALL"; then -if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS="${IFS}:" - for ac_dir in $PATH; do - # Account for people who put trailing slashes in PATH elements. - case "$ac_dir/" in - /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - for ac_prog in ginstall installbsd scoinst install; do - if test -f $ac_dir/$ac_prog; then - if test $ac_prog = install && - grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - # OSF/1 installbsd also uses dspmsg, but is usable. - : - else - ac_cv_path_install="$ac_dir/$ac_prog -c" - break 2 - fi - fi - done - ;; - esac - done - IFS="$ac_save_IFS" - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL="$ac_cv_path_install" - else - # As a last resort, use the slow shell script. We don't cache a - # path for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the path is relative. - INSTALL="$ac_install_sh" - fi -fi -echo "$ac_t""$INSTALL" 1>&6 - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - - -echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 -echo "configure:1339: checking whether ln -s works" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - rm -f conftestdata -if ln -s X conftestdata 2>/dev/null -then - rm -f conftestdata - ac_cv_prog_LN_S="ln -s" -else - ac_cv_prog_LN_S=ln -fi -fi -LN_S="$ac_cv_prog_LN_S" -if test "$ac_cv_prog_LN_S" = "ln -s"; then - echo "$ac_t""yes" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - -for ac_prog in mawk gawk nawk awk -do -# Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1365: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_AWK'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$AWK"; then - ac_cv_prog_AWK="$AWK" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_AWK="$ac_prog" - break - fi - done - IFS="$ac_save_ifs" -fi -fi -AWK="$ac_cv_prog_AWK" -if test -n "$AWK"; then - echo "$ac_t""$AWK" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - -test -n "$AWK" && break -done - - -echo $ac_n "checking "make for VPATH support"""... $ac_c" 1>&6 -echo "configure:1395: checking "make for VPATH support"" >&5 -cat - << EOF > confMake -check : file - cp \$? \$@ - cp \$? final_file -EOF - -if test ! -d sub ; then - mkdir sub -fi -echo dummy > sub/file -${MAKE-make} -f confMake VPATH=sub 2> config.log > /dev/null -RESULT=$? -rm -f sub/file check final_file confMake -rmdir sub -if test "$RESULT" = 0; then - echo "$ac_t""yes" 1>&6 -else - echo "$ac_t""no" 1>&6 - { echo "configure: error: You need a make-utility that is able to use the variable -VPATH correctly. -If your version of make does not support VPATH correctly" 1>&2; exit 1; } -fi - - -# If we find X, set shell vars x_includes and x_libraries to the -# paths, otherwise set no_x=yes. -# Uses ac_ vars as temps to allow command line to override cache and checks. -# --without-x overrides everything else, but does not touch the cache. -echo $ac_n "checking for X""... $ac_c" 1>&6 -echo "configure:1425: checking for X" >&5 - -# Check whether --with-x or --without-x was given. -if test "${with_x+set}" = set; then - withval="$with_x" - : -fi - -# $have_x is `yes', `no', `disabled', or empty when we do not yet know. -if test "x$with_x" = xno; then - # The user explicitly disabled X. - have_x=disabled -else - if test "x$x_includes" != xNONE && test "x$x_libraries" != xNONE; then - # Both variables are already set. - have_x=yes - else -if eval "test \"`echo '$''{'ac_cv_have_x'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - # One or both of the vars are not set, and there is no cached value. -ac_x_includes=NO ac_x_libraries=NO -rm -fr conftestdir -if mkdir conftestdir; then - cd conftestdir - # Make sure to not put "make" in the Imakefile rules, since we grep it out. - cat > Imakefile <<'EOF' -acfindx: - @echo 'ac_im_incroot="${INCROOT}"; ac_im_usrlibdir="${USRLIBDIR}"; ac_im_libdir="${LIBDIR}"' -EOF - if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then - # GNU make sometimes prints "make[1]: Entering...", which would confuse us. - eval `${MAKE-make} acfindx 2>/dev/null | grep -v make` - # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. - for ac_extension in a so sl; do - if test ! -f $ac_im_usrlibdir/libX11.$ac_extension && - test -f $ac_im_libdir/libX11.$ac_extension; then - ac_im_usrlibdir=$ac_im_libdir; break - fi - done - # Screen out bogus values from the imake configuration. They are - # bogus both because they are the default anyway, and because - # using them would break gcc on systems where it needs fixed includes. - case "$ac_im_incroot" in - /usr/include) ;; - *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes="$ac_im_incroot" ;; - esac - case "$ac_im_usrlibdir" in - /usr/lib | /lib) ;; - *) test -d "$ac_im_usrlibdir" && ac_x_libraries="$ac_im_usrlibdir" ;; - esac - fi - cd .. - rm -fr conftestdir -fi - -if test "$ac_x_includes" = NO; then - # Guess where to find include files, by looking for this one X11 .h file. - test -z "$x_direct_test_include" && x_direct_test_include=X11/Intrinsic.h - - # First, try using that file with no special directory specified. -cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1492: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out` -if test -z "$ac_err"; then - rm -rf conftest* - # We can compile using X headers with no special include directory. -ac_x_includes= -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - # Look for the header file in a standard set of common directories. -# Check X11 before X11Rn because it is often a symlink to the current release. - for ac_dir in \ - /usr/X11/include \ - /usr/X11R6/include \ - /usr/X11R5/include \ - /usr/X11R4/include \ - \ - /usr/include/X11 \ - /usr/include/X11R6 \ - /usr/include/X11R5 \ - /usr/include/X11R4 \ - \ - /usr/local/X11/include \ - /usr/local/X11R6/include \ - /usr/local/X11R5/include \ - /usr/local/X11R4/include \ - \ - /usr/local/include/X11 \ - /usr/local/include/X11R6 \ - /usr/local/include/X11R5 \ - /usr/local/include/X11R4 \ - \ - /usr/X386/include \ - /usr/x386/include \ - /usr/XFree86/include/X11 \ - \ - /usr/include \ - /usr/local/include \ - /usr/unsupported/include \ - /usr/athena/include \ - /usr/local/x11r5/include \ - /usr/lpp/Xamples/include \ - \ - /usr/openwin/include \ - /usr/openwin/share/include \ - ; \ - do - if test -r "$ac_dir/$x_direct_test_include"; then - ac_x_includes=$ac_dir - break - fi - done -fi -rm -f conftest* -fi # $ac_x_includes = NO - -if test "$ac_x_libraries" = NO; then - # Check for the libraries. - - test -z "$x_direct_test_library" && x_direct_test_library=Xt - test -z "$x_direct_test_function" && x_direct_test_function=XtMalloc - - # See if we find them without any special options. - # Don't add to $LIBS permanently. - ac_save_LIBS="$LIBS" - LIBS="-l$x_direct_test_library $LIBS" -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then - rm -rf conftest* - LIBS="$ac_save_LIBS" -# We can link X programs with no special library path. -ac_x_libraries= -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - LIBS="$ac_save_LIBS" -# First see if replacing the include by lib works. -# Check X11 before X11Rn because it is often a symlink to the current release. -for ac_dir in `echo "$ac_x_includes" | sed s/include/lib/` \ - /usr/X11/lib \ - /usr/X11R6/lib \ - /usr/X11R5/lib \ - /usr/X11R4/lib \ - \ - /usr/lib/X11 \ - /usr/lib/X11R6 \ - /usr/lib/X11R5 \ - /usr/lib/X11R4 \ - \ - /usr/local/X11/lib \ - /usr/local/X11R6/lib \ - /usr/local/X11R5/lib \ - /usr/local/X11R4/lib \ - \ - /usr/local/lib/X11 \ - /usr/local/lib/X11R6 \ - /usr/local/lib/X11R5 \ - /usr/local/lib/X11R4 \ - \ - /usr/X386/lib \ - /usr/x386/lib \ - /usr/XFree86/lib/X11 \ - \ - /usr/lib \ - /usr/local/lib \ - /usr/unsupported/lib \ - /usr/athena/lib \ - /usr/local/x11r5/lib \ - /usr/lpp/Xamples/lib \ - /lib/usr/lib/X11 \ - \ - /usr/openwin/lib \ - /usr/openwin/share/lib \ - ; \ -do - for ac_extension in a so sl; do - if test -r $ac_dir/lib${x_direct_test_library}.$ac_extension; then - ac_x_libraries=$ac_dir - break 2 - fi - done -done -fi -rm -f conftest* -fi # $ac_x_libraries = NO - -if test "$ac_x_includes" = NO || test "$ac_x_libraries" = NO; then - # Didn't find X anywhere. Cache the known absence of X. - ac_cv_have_x="have_x=no" -else - # Record where we found X for the cache. - ac_cv_have_x="have_x=yes \ - ac_x_includes=$ac_x_includes ac_x_libraries=$ac_x_libraries" -fi -fi - fi - eval "$ac_cv_have_x" -fi # $with_x != no - -if test "$have_x" != yes; then - echo "$ac_t""$have_x" 1>&6 - no_x=yes -else - # If each of the values was on the command line, it overrides each guess. - test "x$x_includes" = xNONE && x_includes=$ac_x_includes - test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries - # Update the cache value to reflect the command line values. - ac_cv_have_x="have_x=yes \ - ac_x_includes=$x_includes ac_x_libraries=$x_libraries" - echo "$ac_t""libraries $x_libraries, headers $x_includes" 1>&6 -fi - -if test "$no_x" = yes; then - # Not all programs may use this symbol, but it does not hurt to define it. - cat >> confdefs.h <<\EOF -#define X_DISPLAY_MISSING 1 -EOF - - X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS= -else - if test -n "$x_includes"; then - X_CFLAGS="$X_CFLAGS -I$x_includes" - fi - - # It would also be nice to do this for all -L options, not just this one. - if test -n "$x_libraries"; then - X_LIBS="$X_LIBS -L$x_libraries" - # For Solaris; some versions of Sun CC require a space after -R and - # others require no space. Words are not sufficient . . . . - case "`(uname -sr) 2>/dev/null`" in - "SunOS 5"*) - echo $ac_n "checking whether -R must be followed by a space""... $ac_c" 1>&6 -echo "configure:1674: checking whether -R must be followed by a space" >&5 - ac_xsave_LIBS="$LIBS"; LIBS="$LIBS -R$x_libraries" - cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then - rm -rf conftest* - ac_R_nospace=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_R_nospace=no -fi -rm -f conftest* - if test $ac_R_nospace = yes; then - echo "$ac_t""no" 1>&6 - X_LIBS="$X_LIBS -R$x_libraries" - else - LIBS="$ac_xsave_LIBS -R $x_libraries" - cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then - rm -rf conftest* - ac_R_space=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_R_space=no -fi -rm -f conftest* - if test $ac_R_space = yes; then - echo "$ac_t""yes" 1>&6 - X_LIBS="$X_LIBS -R $x_libraries" - else - echo "$ac_t""neither works" 1>&6 - fi - fi - LIBS="$ac_xsave_LIBS" - esac - fi - - # Check for system-dependent libraries X programs must link with. - # Do this before checking for the system-independent R6 libraries - # (-lICE), since we may need -lsocket or whatever for X linking. - - if test "$ISC" = yes; then - X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet" - else - # Martyn.Johnson@cl.cam.ac.uk says this is needed for Ultrix, if the X - # libraries were built with DECnet support. And karl@cs.umb.edu says - # the Alpha needs dnet_stub (dnet does not exist). - echo $ac_n "checking for dnet_ntoa in -ldnet""... $ac_c" 1>&6 -echo "configure:1739: checking for dnet_ntoa in -ldnet" >&5 -ac_lib_var=`echo dnet'_'dnet_ntoa | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_save_LIBS="$LIBS" -LIBS="-ldnet $LIBS" -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet" -else - echo "$ac_t""no" 1>&6 -fi - - if test $ac_cv_lib_dnet_dnet_ntoa = no; then - echo $ac_n "checking for dnet_ntoa in -ldnet_stub""... $ac_c" 1>&6 -echo "configure:1780: checking for dnet_ntoa in -ldnet_stub" >&5 -ac_lib_var=`echo dnet_stub'_'dnet_ntoa | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_save_LIBS="$LIBS" -LIBS="-ldnet_stub $LIBS" -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub" -else - echo "$ac_t""no" 1>&6 -fi - - fi - - # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT, - # to get the SysV transport functions. - # chad@anasazi.com says the Pyramis MIS-ES running DC/OSx (SVR4) - # needs -lnsl. - # The nsl library prevents programs from opening the X display - # on Irix 5.2, according to dickey@clark.net. - echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6 -echo "configure:1828: checking for gethostbyname" >&5 -if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char gethostbyname(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_gethostbyname) || defined (__stub___gethostbyname) -choke me -#else -gethostbyname(); -#endif - -; return 0; } -EOF -if { (eval echo configure:1856: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then - rm -rf conftest* - eval "ac_cv_func_gethostbyname=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_gethostbyname=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'gethostbyname`\" = yes"; then - echo "$ac_t""yes" 1>&6 - : -else - echo "$ac_t""no" 1>&6 -fi - - if test $ac_cv_func_gethostbyname = no; then - echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 -echo "configure:1877: checking for gethostbyname in -lnsl" >&5 -ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_save_LIBS="$LIBS" -LIBS="-lnsl $LIBS" -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl" -else - echo "$ac_t""no" 1>&6 -fi - - fi - - # lieder@skyler.mavd.honeywell.com says without -lsocket, - # socket/setsockopt and other routines are undefined under SCO ODT - # 2.0. But -lsocket is broken on IRIX 5.2 (and is not necessary - # on later versions), says simon@lia.di.epfl.ch: it contains - # gethostby* variants that don't use the nameserver (or something). - # -lsocket must be given before -lnsl if both are needed. - # We assume that if connect needs -lnsl, so does gethostbyname. - echo $ac_n "checking for connect""... $ac_c" 1>&6 -echo "configure:1926: checking for connect" >&5 -if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char connect(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_connect) || defined (__stub___connect) -choke me -#else -connect(); -#endif - -; return 0; } -EOF -if { (eval echo configure:1954: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then - rm -rf conftest* - eval "ac_cv_func_connect=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_connect=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'connect`\" = yes"; then - echo "$ac_t""yes" 1>&6 - : -else - echo "$ac_t""no" 1>&6 -fi - - if test $ac_cv_func_connect = no; then - echo $ac_n "checking for connect in -lsocket""... $ac_c" 1>&6 -echo "configure:1975: checking for connect in -lsocket" >&5 -ac_lib_var=`echo socket'_'connect | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_save_LIBS="$LIBS" -LIBS="-lsocket $X_EXTRA_LIBS $LIBS" -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS" -else - echo "$ac_t""no" 1>&6 -fi - - fi - - # gomez@mi.uni-erlangen.de says -lposix is necessary on A/UX. - echo $ac_n "checking for remove""... $ac_c" 1>&6 -echo "configure:2018: checking for remove" >&5 -if eval "test \"`echo '$''{'ac_cv_func_remove'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char remove(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_remove) || defined (__stub___remove) -choke me -#else -remove(); -#endif - -; return 0; } -EOF -if { (eval echo configure:2046: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then - rm -rf conftest* - eval "ac_cv_func_remove=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_remove=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'remove`\" = yes"; then - echo "$ac_t""yes" 1>&6 - : -else - echo "$ac_t""no" 1>&6 -fi - - if test $ac_cv_func_remove = no; then - echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6 -echo "configure:2067: checking for remove in -lposix" >&5 -ac_lib_var=`echo posix'_'remove | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_save_LIBS="$LIBS" -LIBS="-lposix $LIBS" -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix" -else - echo "$ac_t""no" 1>&6 -fi - - fi - - # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. - echo $ac_n "checking for shmat""... $ac_c" 1>&6 -echo "configure:2110: checking for shmat" >&5 -if eval "test \"`echo '$''{'ac_cv_func_shmat'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char shmat(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_shmat) || defined (__stub___shmat) -choke me -#else -shmat(); -#endif - -; return 0; } -EOF -if { (eval echo configure:2138: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then - rm -rf conftest* - eval "ac_cv_func_shmat=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_shmat=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'shmat`\" = yes"; then - echo "$ac_t""yes" 1>&6 - : -else - echo "$ac_t""no" 1>&6 -fi - - if test $ac_cv_func_shmat = no; then - echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6 -echo "configure:2159: checking for shmat in -lipc" >&5 -ac_lib_var=`echo ipc'_'shmat | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_save_LIBS="$LIBS" -LIBS="-lipc $LIBS" -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc" -else - echo "$ac_t""no" 1>&6 -fi - - fi - fi - - # Check for libraries that X11R6 Xt/Xaw programs need. - ac_save_LDFLAGS="$LDFLAGS" - test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries" - # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to - # check for ICE first), but we must link in the order -lSM -lICE or - # we get undefined symbols. So assume we have SM if we have ICE. - # These have to be linked with before -lX11, unlike the other - # libraries we check for below, so use a different variable. - # --interran@uluru.Stanford.EDU, kb@cs.umb.edu. - echo $ac_n "checking for IceConnectionNumber in -lICE""... $ac_c" 1>&6 -echo "configure:2211: checking for IceConnectionNumber in -lICE" >&5 -ac_lib_var=`echo ICE'_'IceConnectionNumber | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_save_LIBS="$LIBS" -LIBS="-lICE $LIBS" -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE" -else - echo "$ac_t""no" 1>&6 -fi - - LDFLAGS="$ac_save_LDFLAGS" - -fi - - -ac_header_dirent=no -for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6 -echo "configure:2260: checking for $ac_hdr that defines DIR" >&5 -if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#include <$ac_hdr> -int main() { -DIR *dirp = 0; -; return 0; } -EOF -if { (eval echo configure:2273: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - eval "ac_cv_header_dirent_$ac_safe=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_dirent_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_dirent_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done -# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. -if test $ac_header_dirent = dirent.h; then -echo $ac_n "checking for opendir in -ldir""... $ac_c" 1>&6 -echo "configure:2298: checking for opendir in -ldir" >&5 -ac_lib_var=`echo dir'_'opendir | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_save_LIBS="$LIBS" -LIBS="-ldir $LIBS" -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - LIBS="$LIBS -ldir" -else - echo "$ac_t""no" 1>&6 -fi - -else -echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6 -echo "configure:2339: checking for opendir in -lx" >&5 -ac_lib_var=`echo x'_'opendir | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_save_LIBS="$LIBS" -LIBS="-lx $LIBS" -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - LIBS="$LIBS -lx" -else - echo "$ac_t""no" 1>&6 -fi - -fi - -echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:2381: checking for ANSI C header files" >&5 -if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#include -#include -#include -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2394: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out` -if test -z "$ac_err"; then - rm -rf conftest* - ac_cv_header_stdc=yes -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_header_stdc=no -fi -rm -f conftest* - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. -cat > conftest.$ac_ext < -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "memchr" >/dev/null 2>&1; then - : -else - rm -rf conftest* - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. -cat > conftest.$ac_ext < -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "free" >/dev/null 2>&1; then - : -else - rm -rf conftest* - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. -if test "$cross_compiling" = yes; then - : -else - cat > conftest.$ac_ext < -#define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int main () { int i; for (i = 0; i < 256; i++) -if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); -exit (0); } - -EOF -if { (eval echo configure:2461: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null -then - : -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - ac_cv_header_stdc=no -fi -rm -fr conftest* -fi - -fi -fi - -echo "$ac_t""$ac_cv_header_stdc" 1>&6 -if test $ac_cv_header_stdc = yes; then - cat >> confdefs.h <<\EOF -#define STDC_HEADERS 1 -EOF - -fi - -echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6 -echo "configure:2485: checking for sys/wait.h that is POSIX.1 compatible" >&5 -if eval "test \"`echo '$''{'ac_cv_header_sys_wait_h'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#include -#ifndef WEXITSTATUS -#define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8) -#endif -#ifndef WIFEXITED -#define WIFEXITED(stat_val) (((stat_val) & 255) == 0) -#endif -int main() { -int s; -wait (&s); -s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; -; return 0; } -EOF -if { (eval echo configure:2506: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - ac_cv_header_sys_wait_h=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_header_sys_wait_h=no -fi -rm -f conftest* -fi - -echo "$ac_t""$ac_cv_header_sys_wait_h" 1>&6 -if test $ac_cv_header_sys_wait_h = yes; then - cat >> confdefs.h <<\EOF -#define HAVE_SYS_WAIT_H 1 -EOF - -fi - -for ac_hdr in fcntl.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2530: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2540: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_hdr in limits.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2570: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2580: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_hdr in sys/file.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2610: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2620: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_hdr in sys/time.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2650: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2660: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_hdr in unistd.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2690: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2700: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_hdr in fnmatch.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2730: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2740: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -for ac_hdr in linux/joystick.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2770: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2780: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -GTK_JOYSTICK="" -if test "$ac_cv_header_linux_joystick_h" = "yes"; then - GTK_JOYSTICK="gtk/joystick.cpp" -fi - - -echo $ac_n "checking for vprintf""... $ac_c" 1>&6 -echo "configure:2813: checking for vprintf" >&5 -if eval "test \"`echo '$''{'ac_cv_func_vprintf'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char vprintf(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_vprintf) || defined (__stub___vprintf) -choke me -#else -vprintf(); -#endif - -; return 0; } -EOF -if { (eval echo configure:2841: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then - rm -rf conftest* - eval "ac_cv_func_vprintf=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_vprintf=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'vprintf`\" = yes"; then - echo "$ac_t""yes" 1>&6 - cat >> confdefs.h <<\EOF -#define HAVE_VPRINTF 1 -EOF - -else - echo "$ac_t""no" 1>&6 -fi - -if test "$ac_cv_func_vprintf" != yes; then -echo $ac_n "checking for _doprnt""... $ac_c" 1>&6 -echo "configure:2865: checking for _doprnt" >&5 -if eval "test \"`echo '$''{'ac_cv_func__doprnt'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char _doprnt(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub__doprnt) || defined (__stub____doprnt) -choke me -#else -_doprnt(); -#endif - -; return 0; } -EOF -if { (eval echo configure:2893: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then - rm -rf conftest* - eval "ac_cv_func__doprnt=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func__doprnt=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'_doprnt`\" = yes"; then - echo "$ac_t""yes" 1>&6 - cat >> confdefs.h <<\EOF -#define HAVE_DOPRNT 1 -EOF - -else - echo "$ac_t""no" 1>&6 -fi - -fi - -echo $ac_n "checking for vsnprintf""... $ac_c" 1>&6 -echo "configure:2918: checking for vsnprintf" >&5 -if eval "test \"`echo '$''{'ac_cv_func_vsnprintf'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char vsnprintf(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_vsnprintf) || defined (__stub___vsnprintf) -choke me -#else -vsnprintf(); -#endif - -; return 0; } -EOF -if { (eval echo configure:2946: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then - rm -rf conftest* - eval "ac_cv_func_vsnprintf=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_vsnprintf=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'vsnprintf`\" = yes"; then - echo "$ac_t""yes" 1>&6 - : -else - echo "$ac_t""no" 1>&6 -fi - - - -ac_ext=C -# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cxx_cross - -for ac_hdr in iostream -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2978: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2988: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - -if test "x$HAVE_IOSTREAM" = "x" ; then - cat >> confdefs.h <<\EOF -#define wxUSE_IOSTREAMH 1 -EOF - -fi -ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cc_cross - - -echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:3029: checking for uid_t in sys/types.h" >&5 -if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "uid_t" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_type_uid_t=yes -else - rm -rf conftest* - ac_cv_type_uid_t=no -fi -rm -f conftest* - -fi - -echo "$ac_t""$ac_cv_type_uid_t" 1>&6 -if test $ac_cv_type_uid_t = no; then - cat >> confdefs.h <<\EOF -#define uid_t int -EOF - - cat >> confdefs.h <<\EOF -#define gid_t int -EOF - -fi - -echo $ac_n "checking type of array argument to getgroups""... $ac_c" 1>&6 -echo "configure:3063: checking type of array argument to getgroups" >&5 -if eval "test \"`echo '$''{'ac_cv_type_getgroups'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test "$cross_compiling" = yes; then - ac_cv_type_getgroups=cross -else - cat > conftest.$ac_ext < -#define NGID 256 -#undef MAX -#define MAX(x, y) ((x) > (y) ? (x) : (y)) -main() -{ - gid_t gidset[NGID]; - int i, n; - union { gid_t gval; long lval; } val; - - val.lval = -1; - for (i = 0; i < NGID; i++) - gidset[i] = val.gval; - n = getgroups (sizeof (gidset) / MAX (sizeof (int), sizeof (gid_t)) - 1, - gidset); - /* Exit non-zero if getgroups seems to require an array of ints. This - happens when gid_t is short but getgroups modifies an array of ints. */ - exit ((n > 0 && gidset[n] != val.gval) ? 1 : 0); -} - -EOF -if { (eval echo configure:3096: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null -then - ac_cv_type_getgroups=gid_t -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - ac_cv_type_getgroups=int -fi -rm -fr conftest* -fi - -if test $ac_cv_type_getgroups = cross; then - cat > conftest.$ac_ext < -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "getgroups.*int.*gid_t" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_type_getgroups=gid_t -else - rm -rf conftest* - ac_cv_type_getgroups=int -fi -rm -f conftest* - -fi -fi - -echo "$ac_t""$ac_cv_type_getgroups" 1>&6 -cat >> confdefs.h <&6 -echo "configure:3134: checking for mode_t" >&5 -if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#if STDC_HEADERS -#include -#include -#endif -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "mode_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_type_mode_t=yes -else - rm -rf conftest* - ac_cv_type_mode_t=no -fi -rm -f conftest* - -fi -echo "$ac_t""$ac_cv_type_mode_t" 1>&6 -if test $ac_cv_type_mode_t = no; then - cat >> confdefs.h <<\EOF -#define mode_t int -EOF - -fi - -echo $ac_n "checking for off_t""... $ac_c" 1>&6 -echo "configure:3167: checking for off_t" >&5 -if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#if STDC_HEADERS -#include -#include -#endif -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "off_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_type_off_t=yes -else - rm -rf conftest* - ac_cv_type_off_t=no -fi -rm -f conftest* - -fi -echo "$ac_t""$ac_cv_type_off_t" 1>&6 -if test $ac_cv_type_off_t = no; then - cat >> confdefs.h <<\EOF -#define off_t long -EOF - -fi - -echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:3200: checking for pid_t" >&5 -if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#if STDC_HEADERS -#include -#include -#endif -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "pid_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_type_pid_t=yes -else - rm -rf conftest* - ac_cv_type_pid_t=no -fi -rm -f conftest* - -fi -echo "$ac_t""$ac_cv_type_pid_t" 1>&6 -if test $ac_cv_type_pid_t = no; then - cat >> confdefs.h <<\EOF -#define pid_t int -EOF - -fi - -echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6 -echo "configure:3233: checking return type of signal handlers" >&5 -if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#include -#ifdef signal -#undef signal -#endif -#ifdef __cplusplus -extern "C" void (*signal (int, void (*)(int)))(int); -#else -void (*signal ()) (); -#endif - -int main() { -int i; -; return 0; } -EOF -if { (eval echo configure:3255: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - ac_cv_type_signal=void -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_type_signal=int -fi -rm -f conftest* -fi - -echo "$ac_t""$ac_cv_type_signal" 1>&6 -cat >> confdefs.h <&6 -echo "configure:3274: checking for size_t" >&5 -if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#if STDC_HEADERS -#include -#include -#endif -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "size_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_type_size_t=yes -else - rm -rf conftest* - ac_cv_type_size_t=no -fi -rm -f conftest* - -fi -echo "$ac_t""$ac_cv_type_size_t" 1>&6 -if test $ac_cv_type_size_t = no; then - cat >> confdefs.h <<\EOF -#define size_t unsigned -EOF - -fi - -echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:3307: checking for uid_t in sys/types.h" >&5 -if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "uid_t" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_type_uid_t=yes -else - rm -rf conftest* - ac_cv_type_uid_t=no -fi -rm -f conftest* - -fi - -echo "$ac_t""$ac_cv_type_uid_t" 1>&6 -if test $ac_cv_type_uid_t = no; then - cat >> confdefs.h <<\EOF -#define uid_t int -EOF - - cat >> confdefs.h <<\EOF -#define gid_t int -EOF - -fi - - - -echo $ac_n "checking whether stat file-mode macros are broken""... $ac_c" 1>&6 -echo "configure:3343: checking whether stat file-mode macros are broken" >&5 -if eval "test \"`echo '$''{'ac_cv_header_stat_broken'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#include - -#if defined(S_ISBLK) && defined(S_IFDIR) -# if S_ISBLK (S_IFDIR) -You lose. -# endif -#endif - -#if defined(S_ISBLK) && defined(S_IFCHR) -# if S_ISBLK (S_IFCHR) -You lose. -# endif -#endif - -#if defined(S_ISLNK) && defined(S_IFREG) -# if S_ISLNK (S_IFREG) -You lose. -# endif -#endif - -#if defined(S_ISSOCK) && defined(S_IFREG) -# if S_ISSOCK (S_IFREG) -You lose. -# endif -#endif - -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "You lose" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_header_stat_broken=yes -else - rm -rf conftest* - ac_cv_header_stat_broken=no -fi -rm -f conftest* - -fi - -echo "$ac_t""$ac_cv_header_stat_broken" 1>&6 -if test $ac_cv_header_stat_broken = yes; then - cat >> confdefs.h <<\EOF -#define STAT_MACROS_BROKEN 1 -EOF - -fi - -echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:3399: checking whether time.h and sys/time.h may both be included" >&5 -if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#include -#include -int main() { -struct tm *tp; -; return 0; } -EOF -if { (eval echo configure:3413: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - ac_cv_header_time=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_header_time=no -fi -rm -f conftest* -fi - -echo "$ac_t""$ac_cv_header_time" 1>&6 -if test $ac_cv_header_time = yes; then - cat >> confdefs.h <<\EOF -#define TIME_WITH_SYS_TIME 1 -EOF - -fi - -echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6 -echo "configure:3434: checking for st_blksize in struct stat" >&5 -if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#include -int main() { -struct stat s; s.st_blksize; -; return 0; } -EOF -if { (eval echo configure:3447: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - ac_cv_struct_st_blksize=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_struct_st_blksize=no -fi -rm -f conftest* -fi - -echo "$ac_t""$ac_cv_struct_st_blksize" 1>&6 -if test $ac_cv_struct_st_blksize = yes; then - cat >> confdefs.h <<\EOF -#define HAVE_ST_BLKSIZE 1 -EOF - -fi - -echo $ac_n "checking for st_blocks in struct stat""... $ac_c" 1>&6 -echo "configure:3468: checking for st_blocks in struct stat" >&5 -if eval "test \"`echo '$''{'ac_cv_struct_st_blocks'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#include -int main() { -struct stat s; s.st_blocks; -; return 0; } -EOF -if { (eval echo configure:3481: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - ac_cv_struct_st_blocks=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_struct_st_blocks=no -fi -rm -f conftest* -fi - -echo "$ac_t""$ac_cv_struct_st_blocks" 1>&6 -if test $ac_cv_struct_st_blocks = yes; then - cat >> confdefs.h <<\EOF -#define HAVE_ST_BLOCKS 1 -EOF - -else - LIBOBJS="$LIBOBJS fileblocks.o" -fi - -echo $ac_n "checking for st_rdev in struct stat""... $ac_c" 1>&6 -echo "configure:3504: checking for st_rdev in struct stat" >&5 -if eval "test \"`echo '$''{'ac_cv_struct_st_rdev'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#include -int main() { -struct stat s; s.st_rdev; -; return 0; } -EOF -if { (eval echo configure:3517: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - ac_cv_struct_st_rdev=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_struct_st_rdev=no -fi -rm -f conftest* -fi - -echo "$ac_t""$ac_cv_struct_st_rdev" 1>&6 -if test $ac_cv_struct_st_rdev = yes; then - cat >> confdefs.h <<\EOF -#define HAVE_ST_RDEV 1 -EOF - -fi - -echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:3538: checking whether struct tm is in sys/time.h or time.h" >&5 -if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#include -int main() { -struct tm *tp; tp->tm_sec; -; return 0; } -EOF -if { (eval echo configure:3551: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - ac_cv_struct_tm=time.h -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_struct_tm=sys/time.h -fi -rm -f conftest* -fi - -echo "$ac_t""$ac_cv_struct_tm" 1>&6 -if test $ac_cv_struct_tm = sys/time.h; then - cat >> confdefs.h <<\EOF -#define TM_IN_SYS_TIME 1 -EOF - -fi - -echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:3572: checking for tm_zone in struct tm" >&5 -if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#include <$ac_cv_struct_tm> -int main() { -struct tm tm; tm.tm_zone; -; return 0; } -EOF -if { (eval echo configure:3585: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - ac_cv_struct_tm_zone=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_struct_tm_zone=no -fi -rm -f conftest* -fi - -echo "$ac_t""$ac_cv_struct_tm_zone" 1>&6 -if test "$ac_cv_struct_tm_zone" = yes; then - cat >> confdefs.h <<\EOF -#define HAVE_TM_ZONE 1 -EOF - -else - echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:3605: checking for tzname" >&5 -if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -#ifndef tzname /* For SGI. */ -extern char *tzname[]; /* RS6000 and others reject char **tzname. */ -#endif -int main() { -atoi(*tzname); -; return 0; } -EOF -if { (eval echo configure:3620: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then - rm -rf conftest* - ac_cv_var_tzname=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_var_tzname=no -fi -rm -f conftest* -fi - -echo "$ac_t""$ac_cv_var_tzname" 1>&6 - if test $ac_cv_var_tzname = yes; then - cat >> confdefs.h <<\EOF -#define HAVE_TZNAME 1 -EOF - - fi -fi - - - -echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:3644: checking for working const" >&5 -if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <j = 5; -} -{ /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ - const int foo = 10; -} - -; return 0; } -EOF -if { (eval echo configure:3698: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - ac_cv_c_const=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_c_const=no -fi -rm -f conftest* -fi - -echo "$ac_t""$ac_cv_c_const" 1>&6 -if test $ac_cv_c_const = no; then - cat >> confdefs.h <<\EOF -#define const -EOF - -fi - -echo $ac_n "checking for inline""... $ac_c" 1>&6 -echo "configure:3719: checking for inline" >&5 -if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_cv_c_inline=no -for ac_kw in inline __inline__ __inline; do - cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - ac_cv_c_inline=$ac_kw; break -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 -fi -rm -f conftest* -done - -fi - -echo "$ac_t""$ac_cv_c_inline" 1>&6 -case "$ac_cv_c_inline" in - inline | yes) ;; - no) cat >> confdefs.h <<\EOF -#define inline -EOF - ;; - *) cat >> confdefs.h <&6 -echo "configure:3759: checking whether char is unsigned" >&5 -if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test "$GCC" = yes; then - # GCC predefines this symbol on systems where it applies. -cat > conftest.$ac_ext <&5 | - egrep "yes" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_c_char_unsigned=yes -else - rm -rf conftest* - ac_cv_c_char_unsigned=no -fi -rm -f conftest* - -else -if test "$cross_compiling" = yes; then - { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } -else - cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null -then - ac_cv_c_char_unsigned=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - ac_cv_c_char_unsigned=no -fi -rm -fr conftest* -fi - -fi -fi - -echo "$ac_t""$ac_cv_c_char_unsigned" 1>&6 -if test $ac_cv_c_char_unsigned = yes && test "$GCC" != yes; then - cat >> confdefs.h <<\EOF -#define __CHAR_UNSIGNED__ 1 -EOF - -fi - -echo $ac_n "checking for long double""... $ac_c" 1>&6 -echo "configure:3822: checking for long double" >&5 -if eval "test \"`echo '$''{'ac_cv_c_long_double'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test "$GCC" = yes; then - ac_cv_c_long_double=yes -else -if test "$cross_compiling" = yes; then - { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } -else - cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null -then - ac_cv_c_long_double=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - ac_cv_c_long_double=no -fi -rm -fr conftest* -fi - -fi -fi - -echo "$ac_t""$ac_cv_c_long_double" 1>&6 -if test $ac_cv_c_long_double = yes; then - cat >> confdefs.h <<\EOF -#define HAVE_LONG_DOUBLE 1 -EOF - -fi - - -echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:3866: checking whether byte ordering is bigendian" >&5 -if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_cv_c_bigendian=unknown -# See if sys/param.h defines the BYTE_ORDER macro. -cat > conftest.$ac_ext < -#include -int main() { - -#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN - bogus endian macros -#endif -; return 0; } -EOF -if { (eval echo configure:3884: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - # It does; now see whether it defined to BIG_ENDIAN or not. -cat > conftest.$ac_ext < -#include -int main() { - -#if BYTE_ORDER != BIG_ENDIAN - not big endian -#endif -; return 0; } -EOF -if { (eval echo configure:3899: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - ac_cv_c_bigendian=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_c_bigendian=no -fi -rm -f conftest* -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 -fi -rm -f conftest* -if test $ac_cv_c_bigendian = unknown; then -if test "$cross_compiling" = yes; then - { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } -else - cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null -then - ac_cv_c_bigendian=no -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - ac_cv_c_bigendian=yes -fi -rm -fr conftest* -fi - -fi -fi - -echo "$ac_t""$ac_cv_c_bigendian" 1>&6 -if test $ac_cv_c_bigendian = yes; then - cat >> confdefs.h <<\EOF -#define WORDS_BIGENDIAN 1 -EOF - -fi - - -echo $ac_n "checking size of int *""... $ac_c" 1>&6 -echo "configure:3957: checking size of int *" >&5 -if eval "test \"`echo '$''{'ac_cv_sizeof_int_p'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test "$cross_compiling" = yes; then - { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } -else - cat > conftest.$ac_ext < -main() -{ - FILE *f=fopen("conftestval", "w"); - if (!f) exit(1); - fprintf(f, "%d\n", sizeof(int *)); - exit(0); -} -EOF -if { (eval echo configure:3976: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null -then - ac_cv_sizeof_int_p=`cat conftestval` -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - ac_cv_sizeof_int_p=0 -fi -rm -fr conftest* -fi - -fi -echo "$ac_t""$ac_cv_sizeof_int_p" 1>&6 -cat >> confdefs.h <&6 -echo "configure:3996: checking size of int" >&5 -if eval "test \"`echo '$''{'ac_cv_sizeof_int'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test "$cross_compiling" = yes; then - { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } -else - cat > conftest.$ac_ext < -main() -{ - FILE *f=fopen("conftestval", "w"); - if (!f) exit(1); - fprintf(f, "%d\n", sizeof(int)); - exit(0); -} -EOF -if { (eval echo configure:4015: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null -then - ac_cv_sizeof_int=`cat conftestval` -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - ac_cv_sizeof_int=0 -fi -rm -fr conftest* -fi - -fi -echo "$ac_t""$ac_cv_sizeof_int" 1>&6 -cat >> confdefs.h <&6 -echo "configure:4035: checking size of long" >&5 -if eval "test \"`echo '$''{'ac_cv_sizeof_long'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test "$cross_compiling" = yes; then - { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } -else - cat > conftest.$ac_ext < -main() -{ - FILE *f=fopen("conftestval", "w"); - if (!f) exit(1); - fprintf(f, "%d\n", sizeof(long)); - exit(0); -} -EOF -if { (eval echo configure:4054: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null -then - ac_cv_sizeof_long=`cat conftestval` -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - ac_cv_sizeof_long=0 -fi -rm -fr conftest* -fi - -fi -echo "$ac_t""$ac_cv_sizeof_long" 1>&6 -cat >> confdefs.h <&6 -echo "configure:4078: checking for long file names" >&5 -if eval "test \"`echo '$''{'ac_cv_sys_long_file_names'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_cv_sys_long_file_names=yes -# Test for long file names in all the places we know might matter: -# . the current directory, where building will happen -# $prefix/lib where we will be installing things -# $exec_prefix/lib likewise -# eval it to expand exec_prefix. -# $TMPDIR if set, where it might want to write temporary files -# if $TMPDIR is not set: -# /tmp where it might want to write temporary files -# /var/tmp likewise -# /usr/tmp likewise -if test -n "$TMPDIR" && test -d "$TMPDIR" && test -w "$TMPDIR"; then - ac_tmpdirs="$TMPDIR" -else - ac_tmpdirs='/tmp /var/tmp /usr/tmp' -fi -for ac_dir in . $ac_tmpdirs `eval echo $prefix/lib $exec_prefix/lib` ; do - test -d $ac_dir || continue - test -w $ac_dir || continue # It is less confusing to not echo anything here. - (echo 1 > $ac_dir/conftest9012345) 2>/dev/null - (echo 2 > $ac_dir/conftest9012346) 2>/dev/null - val=`cat $ac_dir/conftest9012345 2>/dev/null` - if test ! -f $ac_dir/conftest9012345 || test "$val" != 1; then - ac_cv_sys_long_file_names=no - rm -f $ac_dir/conftest9012345 $ac_dir/conftest9012346 2>/dev/null - break - fi - rm -f $ac_dir/conftest9012345 $ac_dir/conftest9012346 2>/dev/null -done -fi - -echo "$ac_t""$ac_cv_sys_long_file_names" 1>&6 -if test $ac_cv_sys_long_file_names = yes; then - cat >> confdefs.h <<\EOF -#define HAVE_LONG_FILE_NAMES 1 -EOF - -fi - - - - -for ac_prog in 'bison -y' byacc -do -# Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4129: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$YACC"; then - ac_cv_prog_YACC="$YACC" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_YACC="$ac_prog" - break - fi - done - IFS="$ac_save_ifs" -fi -fi -YACC="$ac_cv_prog_YACC" -if test -n "$YACC"; then - echo "$ac_t""$YACC" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - -test -n "$YACC" && break -done -test -n "$YACC" || YACC="yacc" - - -# Extract the first word of "flex", so it can be a program name with args. -set dummy flex; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4162: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_LEX'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$LEX"; then - ac_cv_prog_LEX="$LEX" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_LEX="flex" - break - fi - done - IFS="$ac_save_ifs" - test -z "$ac_cv_prog_LEX" && ac_cv_prog_LEX="lex" -fi -fi -LEX="$ac_cv_prog_LEX" -if test -n "$LEX"; then - echo "$ac_t""$LEX" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - -if test -z "$LEXLIB" -then - case "$LEX" in - flex*) ac_lib=fl ;; - *) ac_lib=l ;; - esac - echo $ac_n "checking for yywrap in -l$ac_lib""... $ac_c" 1>&6 -echo "configure:4195: checking for yywrap in -l$ac_lib" >&5 -ac_lib_var=`echo $ac_lib'_'yywrap | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_save_LIBS="$LIBS" -LIBS="-l$ac_lib $LIBS" -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - LEXLIB="-l$ac_lib" -else - echo "$ac_t""no" 1>&6 -fi - -fi - -echo $ac_n "checking lex output file root""... $ac_c" 1>&6 -echo "configure:4237: checking lex output file root" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_lex_root'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - # The minimal lex program is just a single line: %%. But some broken lexes -# (Solaris, I think it was) want two %% lines, so accommodate them. -echo '%% -%%' | $LEX -if test -f lex.yy.c; then - ac_cv_prog_lex_root=lex.yy -elif test -f lexyy.c; then - ac_cv_prog_lex_root=lexyy -else - { echo "configure: error: cannot find output from $LEX; giving up" 1>&2; exit 1; } -fi -fi - -echo "$ac_t""$ac_cv_prog_lex_root" 1>&6 -LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root - -echo $ac_n "checking whether yytext is a pointer""... $ac_c" 1>&6 -echo "configure:4258: checking whether yytext is a pointer" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_lex_yytext_pointer'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - # POSIX says lex can declare yytext either as a pointer or an array; the -# default is implementation-dependent. Figure out which it is, since -# not all implementations provide the %pointer and %array declarations. -ac_cv_prog_lex_yytext_pointer=no -echo 'extern char *yytext;' >>$LEX_OUTPUT_ROOT.c -ac_save_LIBS="$LIBS" -LIBS="$LIBS $LEXLIB" -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then - rm -rf conftest* - ac_cv_prog_lex_yytext_pointer=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 -fi -rm -f conftest* -LIBS="$ac_save_LIBS" -rm -f "${LEX_OUTPUT_ROOT}.c" - -fi - -echo "$ac_t""$ac_cv_prog_lex_yytext_pointer" 1>&6 -if test $ac_cv_prog_lex_yytext_pointer = yes; then - cat >> confdefs.h <<\EOF -#define YYTEXT_POINTER 1 -EOF - -fi - - - -DL_LIBRARY= -for ac_func in dlopen -do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4304: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -$ac_func(); -#endif - -; return 0; } -EOF -if { (eval echo configure:4332: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_$ac_func=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <> confdefs.h <<\EOF -#define HAVE_LIBDL 1 -EOF - -else - echo "$ac_t""no" 1>&6 -echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 -echo "configure:4357: checking for dlopen in -ldl" >&5 -ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_save_LIBS="$LIBS" -LIBS="-ldl $LIBS" -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - cat >> confdefs.h <<\EOF -#define HAVE_LIBDL 1 -EOF - DL_LIBRARY="-ldl" -else - echo "$ac_t""no" 1>&6 -echo $ac_n "checking for dld_link in -ldld""... $ac_c" 1>&6 -echo "configure:4398: checking for dld_link in -ldld" >&5 -ac_lib_var=`echo dld'_'dld_link | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_save_LIBS="$LIBS" -LIBS="-ldld $LIBS" -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - cat >> confdefs.h <<\EOF -#define HAVE_DLD 1 -EOF - DL_LIBRARY="-ldld" -else - echo "$ac_t""no" 1>&6 -for ac_func in shl_load -do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4441: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -$ac_func(); -#endif - -; return 0; } -EOF -if { (eval echo configure:4469: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_$ac_func=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <> confdefs.h <<\EOF -#define HAVE_SHL_LOAD 1 -EOF - -else - echo "$ac_t""no" 1>&6 -fi -done - - -fi - - -fi - - -fi -done - - - -echo $ac_n "checking for underscore before symbols""... $ac_c" 1>&6 -echo "configure:4509: checking for underscore before symbols" >&5 -if eval "test \"`echo '$''{'libltdl_cv_uscore'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - - echo "main(){int i=1;} fnord(){int i=23; int ltuae=42;}" > conftest.c - ${CC} -c conftest.c > /dev/null - if (nm conftest.o | grep _fnord) > /dev/null; then - libltdl_cv_uscore=yes - else - libltdl_cv_uscore=no - fi - rm -f conftest* - -fi - -echo "$ac_t""$libltdl_cv_uscore" 1>&6 - -if test x"$libltdl_cv_uscore" = xyes; then - if test x"$ac_cv_func_dlopen" = xyes || - test x"$ac_cv_lib_dl_dlopen" = xyes ; then - echo $ac_n "checking whether we have to add an underscore for dlsym""... $ac_c" 1>&6 -echo "configure:4531: checking whether we have to add an underscore for dlsym" >&5 -if eval "test \"`echo '$''{'libltdl_cv_need_uscore'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test "$cross_compiling" = yes; then - libltdl_cv_need_uscore=no - -else - cat > conftest.$ac_ext < -#include -fnord() { int i=42;} -main() { void *self, *ptr1, *ptr2; self=dlopen(NULL,RTLD_LAZY); - if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord"); - if(ptr1 && !ptr2) exit(0); } exit(1); } - -EOF -if { (eval echo configure:4551: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null -then - libltdl_cv_need_uscore=no -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - libltdl_cv_need_uscore=yes -fi -rm -fr conftest* -fi - -fi - -echo "$ac_t""$libltdl_cv_need_uscore" 1>&6 - fi -fi - -if test x"$libltdl_cv_need_uscore" = xyes; then - cat >> confdefs.h <<\EOF -#define NEED_USCORE 1 -EOF - -fi - - -for ac_func in strerror -do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4580: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -$ac_func(); -#endif - -; return 0; } -EOF -if { (eval echo configure:4608: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_$ac_func=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 -fi -done - - - -CHECK_INCLUDE="-I/usr/include $X_CFLAGS" -CHECK_LIB="-L/lib -L/usr/lib $X_LIBS" - - - -# Make sure we can run config.sub. -if $ac_config_sub sun4 >/dev/null 2>&1; then : -else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; } -fi - -echo $ac_n "checking host system type""... $ac_c" 1>&6 -echo "configure:4645: checking host system type" >&5 - -host_alias=$host -case "$host_alias" in -NONE) - case $nonopt in - NONE) - if host_alias=`$ac_config_guess`; then : - else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; } - fi ;; - *) host_alias=$nonopt ;; - esac ;; -esac - -host=`$ac_config_sub $host_alias` -host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` -echo "$ac_t""$host" 1>&6 - -canonical=$host -configuration=$host_alias - - -USE_UNIX=1 - -USE_LINUX= -USE_SGI= -USE_HPUX= -USE_SYSV= -USE_SVR4= -USE_AIX= -USE_SUN= -USE_SOLARIS= -USE_SUNOS= -USE_ALPHA= -USE_OSF= -USE_BSD= -USE_FREEBSD= -USE_VMS= -USE_ULTRIX= -USE_DATA_GENERAL= - -cat >> confdefs.h <<\EOF -#define __UNIX__ 1 -EOF - -case "${canonical}" in - *-hp-hpux* ) - USE_HPUX=1 - cat >> confdefs.h <<\EOF -#define __HPUX__ 1 -EOF - - ;; - *-*-linux* ) - USE_LINUX=1 - cat >> confdefs.h <<\EOF -#define __LINUX__ 1 -EOF - - TMP=`uname -m` - if test "x$TMP" = "xalpha" - then - USE_ALPHA=1 - cat >> confdefs.h <<\EOF -#define __ALPHA__ 1 -EOF - - fi - ;; - *-*-irix5* | *-*-irix6* ) - USE_SGI=1 - USE_SVR4=1 - cat >> confdefs.h <<\EOF -#define __SGI__ 1 -EOF - - cat >> confdefs.h <<\EOF -#define __SVR4__ 1 -EOF - - ;; - *-*-solaris2* ) - USE_SUN=1 - USE_SOLARIS=1 - USE_SVR4=1 - cat >> confdefs.h <<\EOF -#define __SUN__ 1 -EOF - - cat >> confdefs.h <<\EOF -#define __SOLARIS__ 1 -EOF - - cat >> confdefs.h <<\EOF -#define __SVR4__ 1 -EOF - - ;; - *-*-sunos4* ) - USE_SUN=1 - USE_SUNOS=1 - USE_BSD=1 - cat >> confdefs.h <<\EOF -#define __SUN__ 1 -EOF - - cat >> confdefs.h <<\EOF -#define __SUNOS__ 1 -EOF - - cat >> confdefs.h <<\EOF -#define __BSD__ 1 -EOF - - ;; - *-*-freebsd* | *-*-netbsd*) - USE_BSD=1 - USE_FREEBSD=1 - cat >> confdefs.h <<\EOF -#define __FREEBSD__ 1 -EOF - - cat >> confdefs.h <<\EOF -#define __BSD__ 1 -EOF - - ;; - *-*-osf* ) - USE_ALPHA=1 - USE_OSF=1 - cat >> confdefs.h <<\EOF -#define __ALPHA__ 1 -EOF - - cat >> confdefs.h <<\EOF -#define __OSF__ 1 -EOF - - ;; - *-*-dgux5* ) - USE_ALPHA=1 - USE_SVR4=1 - cat >> confdefs.h <<\EOF -#define __ALPHA__ 1 -EOF - - cat >> confdefs.h <<\EOF -#define __SVR4__ 1 -EOF - - ;; - *-*-sysv5* ) - USE_SYSV=1 - USE_SVR4=1 - cat >> confdefs.h <<\EOF -#define __SYSV__ 1 -EOF - - cat >> confdefs.h <<\EOF -#define __SVR4__ 1 -EOF - - ;; - *-*-aix* ) - USE_AIX=1 - USE_SYSV=1 - USE_SVR4=1 - cat >> confdefs.h <<\EOF -#define __AIX__ 1 -EOF - - cat >> confdefs.h <<\EOF -#define __SYSV__ 1 -EOF - - cat >> confdefs.h <<\EOF -#define __SVR4__ 1 -EOF - - ;; - *) - { echo "configure: error: I don't know your system type." 1>&2; exit 1; } -esac - - - -rm -f ${OSTYPE}.system.cache.tmp -touch ${OSTYPE}.system.cache.tmp -touch ${OSTYPE}.system.cache - - -DEFAULT_wxUSE_GTK=1 -DEFAULT_wxUSE_QT=0 -DEFAULT_wxUSE_MOTIF=0 - -DEFAULT_wxUSE_THREADS=0 - -DEFAULT_wxUSE_SHARED=1 -DEFAULT_wxUSE_OPTIMISE=1 -DEFAULT_wxUSE_PROFILE=0 -DEFAULT_wxUSE_DEBUG_FLAG=0 -DEFAULT_wxUSE_DEBUG_INFO=0 -DEFAULT_wxUSE_MEM_TRACING=0 -DEFAULT_wxUSE_DMALLOC=0 -DEFAULT_wxUSE_APPLE_IEEE=1 -DEFAULT_wxUSE_IOSTREAMH=1 - -DEFAULT_wxUSE_ZLIB=1 -DEFAULT_wxUSE_LIBPNG=1 -DEFAULT_wxUSE_ODBC=1 - -DEFAULT_wxUSE_TIMEDATE=1 -DEFAULT_wxUSE_INTL=1 -DEFAULT_wxUSE_CONFIG=1 -DEFAULT_wxUSE_STREAMS=1 -DEFAULT_wxUSE_SERIAL=1 - -DEFAULT_wxUSE_AFM_FOR_POSTSCRIPT=1 -DEFAULT_WX_NORMALIZED_PS_FONTS=1 -DEFAULT_wxUSE_POSTSCRIPT=1 - -DEFAULT_wxUSE_IPC=1 -DEFAULT_wxUSE_RESOURCES=1 -DEFAULT_wxUSE_CLIPBOARD=1 -DEFAULT_wxUSE_DRAG_AND_DROP=1 - -DEFAULT_wxUSE_MDI_ARCHITECTURE=1 -DEFAULT_wxUSE_DOC_VIEW_ARCHITECTURE=1 -DEFAULT_wxUSE_PRINTING_ARCHITECTURE=1 - -DEFAULT_wxUSE_PROLOGIO=1 -DEFAULT_wxUSE_WX_RESOURCES=1 -DEFAULT_wxUSE_RPC=0 -DEFAULT_wxUSE_HELP=1 - -DEFAULT_wxUSE_UNICODE=1 -DEFAULT_wxUSE_WCSRTOMBS=0 - - - -echo $ac_n "checking "for gtk"""... $ac_c" 1>&6 -echo "configure:4888: checking "for gtk"" >&5 -# Check whether --with-gtk or --without-gtk was given. -if test "${with_gtk+set}" = set; then - withval="$with_gtk" - if test "x$with_gtk" = xyes; then - ac_cv_use_gtk='wxUSE_GTK="1"' -else - ac_cv_use_gtk='wxUSE_GTK="0"' -fi -else - - LINE=`grep "wxUSE_GTK" ${OSTYPE}.system.cache` - if test "x$LINE" != x ; then - eval "DEFAULT_$LINE" - fi - ac_cv_use_gtk='wxUSE_GTK='$DEFAULT_wxUSE_GTK - -fi - -eval "$ac_cv_use_gtk" -echo $ac_cv_use_gtk >> ${OSTYPE}.system.cache.tmp -if test "$wxUSE_GTK" = 1; then - echo "$ac_t""yes" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - - -echo $ac_n "checking "for qt"""... $ac_c" 1>&6 -echo "configure:4918: checking "for qt"" >&5 -# Check whether --with-qt or --without-qt was given. -if test "${with_qt+set}" = set; then - withval="$with_qt" - if test "x$with_qt" = xyes; then - ac_cv_use_qt='wxUSE_QT="1"' -else - ac_cv_use_qt='wxUSE_QT="0"' -fi -else - - LINE=`grep "wxUSE_QT" ${OSTYPE}.system.cache` - if test "x$LINE" != x ; then - eval "DEFAULT_$LINE" - fi - ac_cv_use_qt='wxUSE_QT='$DEFAULT_wxUSE_QT - -fi - -eval "$ac_cv_use_qt" -echo $ac_cv_use_qt >> ${OSTYPE}.system.cache.tmp -if test "$wxUSE_QT" = 1; then - echo "$ac_t""yes" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - - -echo $ac_n "checking "for motif"""... $ac_c" 1>&6 -echo "configure:4948: checking "for motif"" >&5 -# Check whether --with-motif or --without-motif was given. -if test "${with_motif+set}" = set; then - withval="$with_motif" - if test "x$with_motif" = xyes; then - ac_cv_use_motif='wxUSE_MOTIF="1"' -else - ac_cv_use_motif='wxUSE_MOTIF="0"' -fi -else - - LINE=`grep "wxUSE_MOTIF" ${OSTYPE}.system.cache` - if test "x$LINE" != x ; then - eval "DEFAULT_$LINE" - fi - ac_cv_use_motif='wxUSE_MOTIF='$DEFAULT_wxUSE_MOTIF - -fi - -eval "$ac_cv_use_motif" -echo $ac_cv_use_motif >> ${OSTYPE}.system.cache.tmp -if test "$wxUSE_MOTIF" = 1; then - echo "$ac_t""yes" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - - - -echo $ac_n "checking "for shared"""... $ac_c" 1>&6 -echo "configure:4979: checking "for shared"" >&5 -# Check whether --with-shared or --without-shared was given. -if test "${with_shared+set}" = set; then - withval="$with_shared" - if test "x$with_shared" = xyes; then - ac_cv_use_shared='wxUSE_SHARED="1"' -else - ac_cv_use_shared='wxUSE_SHARED="0"' -fi -else - - LINE=`grep "wxUSE_SHARED" ${OSTYPE}.system.cache` - if test "x$LINE" != x ; then - eval "DEFAULT_$LINE" - fi - ac_cv_use_shared='wxUSE_SHARED='$DEFAULT_wxUSE_SHARED - -fi - -eval "$ac_cv_use_shared" -echo $ac_cv_use_shared >> ${OSTYPE}.system.cache.tmp -if test "$wxUSE_SHARED" = 1; then - echo "$ac_t""yes" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - - -echo $ac_n "checking "for optimise"""... $ac_c" 1>&6 -echo "configure:5009: checking "for optimise"" >&5 -# Check whether --with-optimise or --without-optimise was given. -if test "${with_optimise+set}" = set; then - withval="$with_optimise" - if test "x$with_optimise" = xyes; then - ac_cv_use_optimise='wxUSE_OPTIMISE="1"' -else - ac_cv_use_optimise='wxUSE_OPTIMISE="0"' -fi -else - - LINE=`grep "wxUSE_OPTIMISE" ${OSTYPE}.system.cache` - if test "x$LINE" != x ; then - eval "DEFAULT_$LINE" - fi - ac_cv_use_optimise='wxUSE_OPTIMISE='$DEFAULT_wxUSE_OPTIMISE - -fi - -eval "$ac_cv_use_optimise" -echo $ac_cv_use_optimise >> ${OSTYPE}.system.cache.tmp -if test "$wxUSE_OPTIMISE" = 1; then - echo "$ac_t""yes" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - - -echo $ac_n "checking "for debug_flag"""... $ac_c" 1>&6 -echo "configure:5039: checking "for debug_flag"" >&5 -# Check whether --with-debug_flag or --without-debug_flag was given. -if test "${with_debug_flag+set}" = set; then - withval="$with_debug_flag" - if test "x$with_debug_flag" = xyes; then - ac_cv_use_debug_flag='wxUSE_DEBUG_FLAG="1"' -else - ac_cv_use_debug_flag='wxUSE_DEBUG_FLAG="0"' -fi -else - - LINE=`grep "wxUSE_DEBUG_FLAG" ${OSTYPE}.system.cache` - if test "x$LINE" != x ; then - eval "DEFAULT_$LINE" - fi - ac_cv_use_debug_flag='wxUSE_DEBUG_FLAG='$DEFAULT_wxUSE_DEBUG_FLAG - -fi - -eval "$ac_cv_use_debug_flag" -echo $ac_cv_use_debug_flag >> ${OSTYPE}.system.cache.tmp -if test "$wxUSE_DEBUG_FLAG" = 1; then - echo "$ac_t""yes" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - - -echo $ac_n "checking "for debug_info"""... $ac_c" 1>&6 -echo "configure:5069: checking "for debug_info"" >&5 -# Check whether --with-debug_info or --without-debug_info was given. -if test "${with_debug_info+set}" = set; then - withval="$with_debug_info" - if test "x$with_debug_info" = xyes; then - ac_cv_use_debug_info='wxUSE_DEBUG_INFO="1"' -else - ac_cv_use_debug_info='wxUSE_DEBUG_INFO="0"' -fi -else - - LINE=`grep "wxUSE_DEBUG_INFO" ${OSTYPE}.system.cache` - if test "x$LINE" != x ; then - eval "DEFAULT_$LINE" - fi - ac_cv_use_debug_info='wxUSE_DEBUG_INFO='$DEFAULT_wxUSE_DEBUG_INFO - -fi - -eval "$ac_cv_use_debug_info" -echo $ac_cv_use_debug_info >> ${OSTYPE}.system.cache.tmp -if test "$wxUSE_DEBUG_INFO" = 1; then - echo "$ac_t""yes" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - - -echo $ac_n "checking "for debug_gdb"""... $ac_c" 1>&6 -echo "configure:5099: checking "for debug_gdb"" >&5 -# Check whether --with-debug_gdb or --without-debug_gdb was given. -if test "${with_debug_gdb+set}" = set; then - withval="$with_debug_gdb" - if test "x$with_debug_gdb" = xyes; then - ac_cv_use_debug_gdb='wxUSE_DEBUG_GDB="1"' -else - ac_cv_use_debug_gdb='wxUSE_DEBUG_GDB="0"' -fi -else - - LINE=`grep "wxUSE_DEBUG_GDB" ${OSTYPE}.system.cache` - if test "x$LINE" != x ; then - eval "DEFAULT_$LINE" - fi - ac_cv_use_debug_gdb='wxUSE_DEBUG_GDB='$DEFAULT_wxUSE_DEBUG_GDB - -fi - -eval "$ac_cv_use_debug_gdb" -echo $ac_cv_use_debug_gdb >> ${OSTYPE}.system.cache.tmp -if test "$wxUSE_DEBUG_GDB" = 1; then - echo "$ac_t""yes" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - - -echo $ac_n "checking "for mem_tracing"""... $ac_c" 1>&6 -echo "configure:5129: checking "for mem_tracing"" >&5 -# Check whether --with-mem_tracing or --without-mem_tracing was given. -if test "${with_mem_tracing+set}" = set; then - withval="$with_mem_tracing" - if test "x$with_mem_tracing" = xyes; then - ac_cv_use_mem_tracing='wxUSE_MEM_TRACING="1"' -else - ac_cv_use_mem_tracing='wxUSE_MEM_TRACING="0"' -fi -else - - LINE=`grep "wxUSE_MEM_TRACING" ${OSTYPE}.system.cache` - if test "x$LINE" != x ; then - eval "DEFAULT_$LINE" - fi - ac_cv_use_mem_tracing='wxUSE_MEM_TRACING='$DEFAULT_wxUSE_MEM_TRACING - -fi - -eval "$ac_cv_use_mem_tracing" -echo $ac_cv_use_mem_tracing >> ${OSTYPE}.system.cache.tmp -if test "$wxUSE_MEM_TRACING" = 1; then - echo "$ac_t""yes" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - - -echo $ac_n "checking "for dmalloc"""... $ac_c" 1>&6 -echo "configure:5159: checking "for dmalloc"" >&5 -# Check whether --with-dmalloc or --without-dmalloc was given. -if test "${with_dmalloc+set}" = set; then - withval="$with_dmalloc" - if test "x$with_dmalloc" = xyes; then - ac_cv_use_dmalloc='wxUSE_DMALLOC="1"' -else - ac_cv_use_dmalloc='wxUSE_DMALLOC="0"' -fi -else - - LINE=`grep "wxUSE_DMALLOC" ${OSTYPE}.system.cache` - if test "x$LINE" != x ; then - eval "DEFAULT_$LINE" - fi - ac_cv_use_dmalloc='wxUSE_DMALLOC='$DEFAULT_wxUSE_DMALLOC - -fi - -eval "$ac_cv_use_dmalloc" -echo $ac_cv_use_dmalloc >> ${OSTYPE}.system.cache.tmp -if test "$wxUSE_DMALLOC" = 1; then - echo "$ac_t""yes" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - - -echo $ac_n "checking "for profile"""... $ac_c" 1>&6 -echo "configure:5189: checking "for profile"" >&5 -# Check whether --with-profile or --without-profile was given. -if test "${with_profile+set}" = set; then - withval="$with_profile" - if test "x$with_profile" = xyes; then - ac_cv_use_profile='wxUSE_PROFILE="1"' -else - ac_cv_use_profile='wxUSE_PROFILE="0"' -fi -else - - LINE=`grep "wxUSE_PROFILE" ${OSTYPE}.system.cache` - if test "x$LINE" != x ; then - eval "DEFAULT_$LINE" - fi - ac_cv_use_profile='wxUSE_PROFILE='$DEFAULT_wxUSE_PROFILE - -fi - -eval "$ac_cv_use_profile" -echo $ac_cv_use_profile >> ${OSTYPE}.system.cache.tmp -if test "$wxUSE_PROFILE" = 1; then - echo "$ac_t""yes" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - - -echo $ac_n "checking "for apple_ieee"""... $ac_c" 1>&6 -echo "configure:5219: checking "for apple_ieee"" >&5 -# Check whether --with-apple_ieee or --without-apple_ieee was given. -if test "${with_apple_ieee+set}" = set; then - withval="$with_apple_ieee" - if test "x$with_apple_ieee" = xyes; then - ac_cv_use_apple_ieee='wxUSE_APPLE_IEEE="1"' -else - ac_cv_use_apple_ieee='wxUSE_APPLE_IEEE="0"' -fi -else - - LINE=`grep "wxUSE_APPLE_IEEE" ${OSTYPE}.system.cache` - if test "x$LINE" != x ; then - eval "DEFAULT_$LINE" - fi - ac_cv_use_apple_ieee='wxUSE_APPLE_IEEE='$DEFAULT_wxUSE_APPLE_IEEE - -fi - -eval "$ac_cv_use_apple_ieee" -echo $ac_cv_use_apple_ieee >> ${OSTYPE}.system.cache.tmp -if test "$wxUSE_APPLE_IEEE" = 1; then - echo "$ac_t""yes" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - - -echo $ac_n "checking "for threads"""... $ac_c" 1>&6 -echo "configure:5249: checking "for threads"" >&5 -# Check whether --with-threads or --without-threads was given. -if test "${with_threads+set}" = set; then - withval="$with_threads" - if test "x$with_threads" = xyes; then - ac_cv_use_threads='wxUSE_THREADS="1"' -else - ac_cv_use_threads='wxUSE_THREADS="0"' -fi -else - - LINE=`grep "wxUSE_THREADS" ${OSTYPE}.system.cache` - if test "x$LINE" != x ; then - eval "DEFAULT_$LINE" - fi - ac_cv_use_threads='wxUSE_THREADS='$DEFAULT_wxUSE_THREADS - -fi - -eval "$ac_cv_use_threads" -echo $ac_cv_use_threads >> ${OSTYPE}.system.cache.tmp -if test "$wxUSE_THREADS" = 1; then - echo "$ac_t""yes" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - - - -echo $ac_n "checking "for zlib"""... $ac_c" 1>&6 -echo "configure:5280: checking "for zlib"" >&5 -# Check whether --with-zlib or --without-zlib was given. -if test "${with_zlib+set}" = set; then - withval="$with_zlib" - if test "x$with_zlib" = xyes; then - ac_cv_use_zlib='wxUSE_ZLIB="1"' -else - ac_cv_use_zlib='wxUSE_ZLIB="0"' -fi -else - - LINE=`grep "wxUSE_ZLIB" ${OSTYPE}.system.cache` - if test "x$LINE" != x ; then - eval "DEFAULT_$LINE" - fi - ac_cv_use_zlib='wxUSE_ZLIB='$DEFAULT_wxUSE_ZLIB - -fi - -eval "$ac_cv_use_zlib" -echo $ac_cv_use_zlib >> ${OSTYPE}.system.cache.tmp -if test "$wxUSE_ZLIB" = 1; then - echo "$ac_t""yes" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - - -echo $ac_n "checking "for libpng"""... $ac_c" 1>&6 -echo "configure:5310: checking "for libpng"" >&5 -# Check whether --with-libpng or --without-libpng was given. -if test "${with_libpng+set}" = set; then - withval="$with_libpng" - if test "x$with_libpng" = xyes; then - ac_cv_use_libpng='wxUSE_LIBPNG="1"' -else - ac_cv_use_libpng='wxUSE_LIBPNG="0"' -fi -else - - LINE=`grep "wxUSE_LIBPNG" ${OSTYPE}.system.cache` - if test "x$LINE" != x ; then - eval "DEFAULT_$LINE" - fi - ac_cv_use_libpng='wxUSE_LIBPNG='$DEFAULT_wxUSE_LIBPNG - -fi - -eval "$ac_cv_use_libpng" -echo $ac_cv_use_libpng >> ${OSTYPE}.system.cache.tmp -if test "$wxUSE_LIBPNG" = 1; then - echo "$ac_t""yes" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - - -echo $ac_n "checking "for odbc"""... $ac_c" 1>&6 -echo "configure:5340: checking "for odbc"" >&5 -# Check whether --with-odbc or --without-odbc was given. -if test "${with_odbc+set}" = set; then - withval="$with_odbc" - if test "x$with_odbc" = xyes; then - ac_cv_use_odbc='wxUSE_ODBC="1"' -else - ac_cv_use_odbc='wxUSE_ODBC="0"' -fi -else - - LINE=`grep "wxUSE_ODBC" ${OSTYPE}.system.cache` - if test "x$LINE" != x ; then - eval "DEFAULT_$LINE" - fi - ac_cv_use_odbc='wxUSE_ODBC='$DEFAULT_wxUSE_ODBC - -fi - -eval "$ac_cv_use_odbc" -echo $ac_cv_use_odbc >> ${OSTYPE}.system.cache.tmp -if test "$wxUSE_ODBC" = 1; then - echo "$ac_t""yes" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - - - -echo $ac_n "checking "for timedate"""... $ac_c" 1>&6 -echo "configure:5371: checking "for timedate"" >&5 -# Check whether --with-timedate or --without-timedate was given. -if test "${with_timedate+set}" = set; then - withval="$with_timedate" - if test "x$with_timedate" = xyes; then - ac_cv_use_timedate='wxUSE_TIMEDATE="1"' -else - ac_cv_use_timedate='wxUSE_TIMEDATE="0"' -fi -else - - LINE=`grep "wxUSE_TIMEDATE" ${OSTYPE}.system.cache` - if test "x$LINE" != x ; then - eval "DEFAULT_$LINE" - fi - ac_cv_use_timedate='wxUSE_TIMEDATE='$DEFAULT_wxUSE_TIMEDATE - -fi - -eval "$ac_cv_use_timedate" -echo $ac_cv_use_timedate >> ${OSTYPE}.system.cache.tmp -if test "$wxUSE_TIMEDATE" = 1; then - echo "$ac_t""yes" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - - -echo $ac_n "checking "for intl"""... $ac_c" 1>&6 -echo "configure:5401: checking "for intl"" >&5 -# Check whether --with-intl or --without-intl was given. -if test "${with_intl+set}" = set; then - withval="$with_intl" - if test "x$with_intl" = xyes; then - ac_cv_use_intl='wxUSE_INTL="1"' -else - ac_cv_use_intl='wxUSE_INTL="0"' -fi -else - - LINE=`grep "wxUSE_INTL" ${OSTYPE}.system.cache` - if test "x$LINE" != x ; then - eval "DEFAULT_$LINE" - fi - ac_cv_use_intl='wxUSE_INTL='$DEFAULT_wxUSE_INTL - -fi - -eval "$ac_cv_use_intl" -echo $ac_cv_use_intl >> ${OSTYPE}.system.cache.tmp -if test "$wxUSE_INTL" = 1; then - echo "$ac_t""yes" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - - -echo $ac_n "checking "for config"""... $ac_c" 1>&6 -echo "configure:5431: checking "for config"" >&5 -# Check whether --with-config or --without-config was given. -if test "${with_config+set}" = set; then - withval="$with_config" - if test "x$with_config" = xyes; then - ac_cv_use_config='wxUSE_CONFIG="1"' -else - ac_cv_use_config='wxUSE_CONFIG="0"' -fi -else - - LINE=`grep "wxUSE_CONFIG" ${OSTYPE}.system.cache` - if test "x$LINE" != x ; then - eval "DEFAULT_$LINE" - fi - ac_cv_use_config='wxUSE_CONFIG='$DEFAULT_wxUSE_CONFIG - -fi - -eval "$ac_cv_use_config" -echo $ac_cv_use_config >> ${OSTYPE}.system.cache.tmp -if test "$wxUSE_CONFIG" = 1; then - echo "$ac_t""yes" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - - -echo $ac_n "checking "for streams"""... $ac_c" 1>&6 -echo "configure:5461: checking "for streams"" >&5 -# Check whether --with-streams or --without-streams was given. -if test "${with_streams+set}" = set; then - withval="$with_streams" - if test "x$with_streams" = xyes; then - ac_cv_use_streams='wxUSE_STREAMS="1"' -else - ac_cv_use_streams='wxUSE_STREAMS="0"' -fi -else - - LINE=`grep "wxUSE_STREAMS" ${OSTYPE}.system.cache` - if test "x$LINE" != x ; then - eval "DEFAULT_$LINE" - fi - ac_cv_use_streams='wxUSE_STREAMS='$DEFAULT_wxUSE_STREAMS - -fi - -eval "$ac_cv_use_streams" -echo $ac_cv_use_streams >> ${OSTYPE}.system.cache.tmp -if test "$wxUSE_STREAMS" = 1; then - echo "$ac_t""yes" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - - -echo $ac_n "checking "for serial"""... $ac_c" 1>&6 -echo "configure:5491: checking "for serial"" >&5 -# Check whether --with-serial or --without-serial was given. -if test "${with_serial+set}" = set; then - withval="$with_serial" - if test "x$with_serial" = xyes; then - ac_cv_use_serial='wxUSE_SERIAL="1"' -else - ac_cv_use_serial='wxUSE_SERIAL="0"' -fi -else - - LINE=`grep "wxUSE_SERIAL" ${OSTYPE}.system.cache` - if test "x$LINE" != x ; then - eval "DEFAULT_$LINE" - fi - ac_cv_use_serial='wxUSE_SERIAL='$DEFAULT_wxUSE_SERIAL - -fi - -eval "$ac_cv_use_serial" -echo $ac_cv_use_serial >> ${OSTYPE}.system.cache.tmp -if test "$wxUSE_SERIAL" = 1; then - echo "$ac_t""yes" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - - - -echo $ac_n "checking "for afmfonts"""... $ac_c" 1>&6 -echo "configure:5522: checking "for afmfonts"" >&5 -# Check whether --with-afmfonts or --without-afmfonts was given. -if test "${with_afmfonts+set}" = set; then - withval="$with_afmfonts" - if test "x$with_afmfonts" = xyes; then - ac_cv_use_afmfonts='wxUSE_AFM_FOR_POSTSCRIPT="1"' -else - ac_cv_use_afmfonts='wxUSE_AFM_FOR_POSTSCRIPT="0"' -fi -else - - LINE=`grep "wxUSE_AFM_FOR_POSTSCRIPT" ${OSTYPE}.system.cache` - if test "x$LINE" != x ; then - eval "DEFAULT_$LINE" - fi - ac_cv_use_afmfonts='wxUSE_AFM_FOR_POSTSCRIPT='$DEFAULT_wxUSE_AFM_FOR_POSTSCRIPT - -fi - -eval "$ac_cv_use_afmfonts" -echo $ac_cv_use_afmfonts >> ${OSTYPE}.system.cache.tmp -if test "$wxUSE_AFM_FOR_POSTSCRIPT" = 1; then - echo "$ac_t""yes" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - - -echo $ac_n "checking "for normalized"""... $ac_c" 1>&6 -echo "configure:5552: checking "for normalized"" >&5 -# Check whether --with-normalized or --without-normalized was given. -if test "${with_normalized+set}" = set; then - withval="$with_normalized" - if test "x$with_normalized" = xyes; then - ac_cv_use_normalized='WX_NORMALIZED_PS_FONTS="1"' -else - ac_cv_use_normalized='WX_NORMALIZED_PS_FONTS="0"' -fi -else - - LINE=`grep "WX_NORMALIZED_PS_FONTS" ${OSTYPE}.system.cache` - if test "x$LINE" != x ; then - eval "DEFAULT_$LINE" - fi - ac_cv_use_normalized='WX_NORMALIZED_PS_FONTS='$DEFAULT_WX_NORMALIZED_PS_FONTS - -fi - -eval "$ac_cv_use_normalized" -echo $ac_cv_use_normalized >> ${OSTYPE}.system.cache.tmp -if test "$WX_NORMALIZED_PS_FONTS" = 1; then - echo "$ac_t""yes" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - - -echo $ac_n "checking "for postscript"""... $ac_c" 1>&6 -echo "configure:5582: checking "for postscript"" >&5 -# Check whether --with-postscript or --without-postscript was given. -if test "${with_postscript+set}" = set; then - withval="$with_postscript" - if test "x$with_postscript" = xyes; then - ac_cv_use_postscript='wxUSE_POSTSCRIPT="1"' -else - ac_cv_use_postscript='wxUSE_POSTSCRIPT="0"' -fi -else - - LINE=`grep "wxUSE_POSTSCRIPT" ${OSTYPE}.system.cache` - if test "x$LINE" != x ; then - eval "DEFAULT_$LINE" - fi - ac_cv_use_postscript='wxUSE_POSTSCRIPT='$DEFAULT_wxUSE_POSTSCRIPT - -fi - -eval "$ac_cv_use_postscript" -echo $ac_cv_use_postscript >> ${OSTYPE}.system.cache.tmp -if test "$wxUSE_POSTSCRIPT" = 1; then - echo "$ac_t""yes" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - - - -echo $ac_n "checking "for unicode"""... $ac_c" 1>&6 -echo "configure:5613: checking "for unicode"" >&5 -# Check whether --with-unicode or --without-unicode was given. -if test "${with_unicode+set}" = set; then - withval="$with_unicode" - if test "x$with_unicode" = xyes; then - ac_cv_use_unicode='wxUSE_UNICODE="1"' -else - ac_cv_use_unicode='wxUSE_UNICODE="0"' -fi -else - - LINE=`grep "wxUSE_UNICODE" ${OSTYPE}.system.cache` - if test "x$LINE" != x ; then - eval "DEFAULT_$LINE" - fi - ac_cv_use_unicode='wxUSE_UNICODE='$DEFAULT_wxUSE_UNICODE - -fi - -eval "$ac_cv_use_unicode" -echo $ac_cv_use_unicode >> ${OSTYPE}.system.cache.tmp -if test "$wxUSE_UNICODE" = 1; then - echo "$ac_t""yes" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - - -echo $ac_n "checking "for wcsrtombs"""... $ac_c" 1>&6 -echo "configure:5643: checking "for wcsrtombs"" >&5 -# Check whether --with-wcsrtombs or --without-wcsrtombs was given. -if test "${with_wcsrtombs+set}" = set; then - withval="$with_wcsrtombs" - if test "x$with_wcsrtombs" = xyes; then - ac_cv_use_wcsrtombs='wxUSE_WCSRTOMBS="1"' -else - ac_cv_use_wcsrtombs='wxUSE_WCSRTOMBS="0"' -fi -else - - LINE=`grep "wxUSE_WCSRTOMBS" ${OSTYPE}.system.cache` - if test "x$LINE" != x ; then - eval "DEFAULT_$LINE" - fi - ac_cv_use_wcsrtombs='wxUSE_WCSRTOMBS='$DEFAULT_wxUSE_WCSRTOMBS - -fi - -eval "$ac_cv_use_wcsrtombs" -echo $ac_cv_use_wcsrtombs >> ${OSTYPE}.system.cache.tmp -if test "$wxUSE_WCSRTOMBS" = 1; then - echo "$ac_t""yes" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - - - -echo $ac_n "checking "for wxresources"""... $ac_c" 1>&6 -echo "configure:5674: checking "for wxresources"" >&5 -# Check whether --with-wxresources or --without-wxresources was given. -if test "${with_wxresources+set}" = set; then - withval="$with_wxresources" - if test "x$with_wxresources" = xyes; then - ac_cv_use_wxresources='wxUSE_WX_RESOURCES="1"' -else - ac_cv_use_wxresources='wxUSE_WX_RESOURCES="0"' -fi -else - - LINE=`grep "wxUSE_WX_RESOURCES" ${OSTYPE}.system.cache` - if test "x$LINE" != x ; then - eval "DEFAULT_$LINE" - fi - ac_cv_use_wxresources='wxUSE_WX_RESOURCES='$DEFAULT_wxUSE_WX_RESOURCES - -fi - -eval "$ac_cv_use_wxresources" -echo $ac_cv_use_wxresources >> ${OSTYPE}.system.cache.tmp -if test "$wxUSE_WX_RESOURCES" = 1; then - echo "$ac_t""yes" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - - -echo $ac_n "checking "for prologio"""... $ac_c" 1>&6 -echo "configure:5704: checking "for prologio"" >&5 -# Check whether --with-prologio or --without-prologio was given. -if test "${with_prologio+set}" = set; then - withval="$with_prologio" - if test "x$with_prologio" = xyes; then - ac_cv_use_prologio='wxUSE_PROLOGIO="1"' -else - ac_cv_use_prologio='wxUSE_PROLOGIO="0"' -fi -else - - LINE=`grep "wxUSE_PROLOGIO" ${OSTYPE}.system.cache` - if test "x$LINE" != x ; then - eval "DEFAULT_$LINE" - fi - ac_cv_use_prologio='wxUSE_PROLOGIO='$DEFAULT_wxUSE_PROLOGIO - -fi - -eval "$ac_cv_use_prologio" -echo $ac_cv_use_prologio >> ${OSTYPE}.system.cache.tmp -if test "$wxUSE_PROLOGIO" = 1; then - echo "$ac_t""yes" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - - -echo $ac_n "checking "for RPC"""... $ac_c" 1>&6 -echo "configure:5734: checking "for RPC"" >&5 -# Check whether --with-rpc or --without-rpc was given. -if test "${with_rpc+set}" = set; then - withval="$with_rpc" - if test "x$with_rpc" = xyes; then - ac_cv_use_rpc='wxUSE_RPC="1"' -else - ac_cv_use_rpc='wxUSE_RPC="0"' -fi -else - - LINE=`grep "wxUSE_RPC" ${OSTYPE}.system.cache` - if test "x$LINE" != x ; then - eval "DEFAULT_$LINE" - fi - ac_cv_use_rpc='wxUSE_RPC='$DEFAULT_wxUSE_RPC - -fi - -eval "$ac_cv_use_rpc" -echo $ac_cv_use_rpc >> ${OSTYPE}.system.cache.tmp -if test "$wxUSE_RPC" = 1; then - echo "$ac_t""yes" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - - - -echo $ac_n "checking "for IPC"""... $ac_c" 1>&6 -echo "configure:5765: checking "for IPC"" >&5 -# Check whether --with-ipc or --without-ipc was given. -if test "${with_ipc+set}" = set; then - withval="$with_ipc" - if test "x$with_ipc" = xyes; then - ac_cv_use_ipc='wxUSE_IPC="1"' -else - ac_cv_use_ipc='wxUSE_IPC="0"' -fi -else - - LINE=`grep "wxUSE_IPC" ${OSTYPE}.system.cache` - if test "x$LINE" != x ; then - eval "DEFAULT_$LINE" - fi - ac_cv_use_ipc='wxUSE_IPC='$DEFAULT_wxUSE_IPC - -fi - -eval "$ac_cv_use_ipc" -echo $ac_cv_use_ipc >> ${OSTYPE}.system.cache.tmp -if test "$wxUSE_IPC" = 1; then - echo "$ac_t""yes" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - - -echo $ac_n "checking "for resources"""... $ac_c" 1>&6 -echo "configure:5795: checking "for resources"" >&5 -# Check whether --with-resources or --without-resources was given. -if test "${with_resources+set}" = set; then - withval="$with_resources" - if test "x$with_resources" = xyes; then - ac_cv_use_resources='wxUSE_RESOURCES="1"' -else - ac_cv_use_resources='wxUSE_RESOURCES="0"' -fi -else - - LINE=`grep "wxUSE_RESOURCES" ${OSTYPE}.system.cache` - if test "x$LINE" != x ; then - eval "DEFAULT_$LINE" - fi - ac_cv_use_resources='wxUSE_RESOURCES='$DEFAULT_wxUSE_RESOURCES - -fi - -eval "$ac_cv_use_resources" -echo $ac_cv_use_resources >> ${OSTYPE}.system.cache.tmp -if test "$wxUSE_RESOURCES" = 1; then - echo "$ac_t""yes" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - - -echo $ac_n "checking "for clipboard"""... $ac_c" 1>&6 -echo "configure:5825: checking "for clipboard"" >&5 -# Check whether --with-clipboard or --without-clipboard was given. -if test "${with_clipboard+set}" = set; then - withval="$with_clipboard" - if test "x$with_clipboard" = xyes; then - ac_cv_use_clipboard='wxUSE_CLIPBOARD="1"' -else - ac_cv_use_clipboard='wxUSE_CLIPBOARD="0"' -fi -else - - LINE=`grep "wxUSE_CLIPBOARD" ${OSTYPE}.system.cache` - if test "x$LINE" != x ; then - eval "DEFAULT_$LINE" - fi - ac_cv_use_clipboard='wxUSE_CLIPBOARD='$DEFAULT_wxUSE_CLIPBOARD - -fi - -eval "$ac_cv_use_clipboard" -echo $ac_cv_use_clipboard >> ${OSTYPE}.system.cache.tmp -if test "$wxUSE_CLIPBOARD" = 1; then - echo "$ac_t""yes" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - - -echo $ac_n "checking "for dnd"""... $ac_c" 1>&6 -echo "configure:5855: checking "for dnd"" >&5 -# Check whether --with-dnd or --without-dnd was given. -if test "${with_dnd+set}" = set; then - withval="$with_dnd" - if test "x$with_dnd" = xyes; then - ac_cv_use_dnd='wxUSE_DRAG_AND_DROP="1"' -else - ac_cv_use_dnd='wxUSE_DRAG_AND_DROP="0"' -fi -else - - LINE=`grep "wxUSE_DRAG_AND_DROP" ${OSTYPE}.system.cache` - if test "x$LINE" != x ; then - eval "DEFAULT_$LINE" - fi - ac_cv_use_dnd='wxUSE_DRAG_AND_DROP='$DEFAULT_wxUSE_DRAG_AND_DROP - -fi - -eval "$ac_cv_use_dnd" -echo $ac_cv_use_dnd >> ${OSTYPE}.system.cache.tmp -if test "$wxUSE_DRAG_AND_DROP" = 1; then - echo "$ac_t""yes" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - - - -echo $ac_n "checking "for mdi"""... $ac_c" 1>&6 -echo "configure:5886: checking "for mdi"" >&5 -# Check whether --with-mdi or --without-mdi was given. -if test "${with_mdi+set}" = set; then - withval="$with_mdi" - if test "x$with_mdi" = xyes; then - ac_cv_use_mdi='wxUSE_MDI_ARCHITECTURE="1"' -else - ac_cv_use_mdi='wxUSE_MDI_ARCHITECTURE="0"' -fi -else - - LINE=`grep "wxUSE_MDI_ARCHITECTURE" ${OSTYPE}.system.cache` - if test "x$LINE" != x ; then - eval "DEFAULT_$LINE" - fi - ac_cv_use_mdi='wxUSE_MDI_ARCHITECTURE='$DEFAULT_wxUSE_MDI_ARCHITECTURE - -fi - -eval "$ac_cv_use_mdi" -echo $ac_cv_use_mdi >> ${OSTYPE}.system.cache.tmp -if test "$wxUSE_MDI_ARCHITECTURE" = 1; then - echo "$ac_t""yes" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - - -echo $ac_n "checking "for docview"""... $ac_c" 1>&6 -echo "configure:5916: checking "for docview"" >&5 -# Check whether --with-docview or --without-docview was given. -if test "${with_docview+set}" = set; then - withval="$with_docview" - if test "x$with_docview" = xyes; then - ac_cv_use_docview='wxUSE_DOC_VIEW_ARCHITECTURE="1"' -else - ac_cv_use_docview='wxUSE_DOC_VIEW_ARCHITECTURE="0"' -fi -else - - LINE=`grep "wxUSE_DOC_VIEW_ARCHITECTURE" ${OSTYPE}.system.cache` - if test "x$LINE" != x ; then - eval "DEFAULT_$LINE" - fi - ac_cv_use_docview='wxUSE_DOC_VIEW_ARCHITECTURE='$DEFAULT_wxUSE_DOC_VIEW_ARCHITECTURE - -fi - -eval "$ac_cv_use_docview" -echo $ac_cv_use_docview >> ${OSTYPE}.system.cache.tmp -if test "$wxUSE_DOC_VIEW_ARCHITECTURE" = 1; then - echo "$ac_t""yes" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - - -echo $ac_n "checking "for printarch"""... $ac_c" 1>&6 -echo "configure:5946: checking "for printarch"" >&5 -# Check whether --with-printarch or --without-printarch was given. -if test "${with_printarch+set}" = set; then - withval="$with_printarch" - if test "x$with_printarch" = xyes; then - ac_cv_use_printarch='wxUSE_PRINTING_ARCHITECTURE="1"' -else - ac_cv_use_printarch='wxUSE_PRINTING_ARCHITECTURE="0"' -fi -else - - LINE=`grep "wxUSE_PRINTING_ARCHITECTURE" ${OSTYPE}.system.cache` - if test "x$LINE" != x ; then - eval "DEFAULT_$LINE" - fi - ac_cv_use_printarch='wxUSE_PRINTING_ARCHITECTURE='$DEFAULT_wxUSE_PRINTING_ARCHITECTURE - -fi - -eval "$ac_cv_use_printarch" -echo $ac_cv_use_printarch >> ${OSTYPE}.system.cache.tmp -if test "$wxUSE_PRINTING_ARCHITECTURE" = 1; then - echo "$ac_t""yes" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - - -echo $ac_n "checking "for help"""... $ac_c" 1>&6 -echo "configure:5976: checking "for help"" >&5 -# Check whether --with-help or --without-help was given. -if test "${with_help+set}" = set; then - withval="$with_help" - if test "x$with_help" = xyes; then - ac_cv_use_help='wxUSE_HELP="1"' -else - ac_cv_use_help='wxUSE_HELP="0"' -fi -else - - LINE=`grep "wxUSE_HELP" ${OSTYPE}.system.cache` - if test "x$LINE" != x ; then - eval "DEFAULT_$LINE" - fi - ac_cv_use_help='wxUSE_HELP='$DEFAULT_wxUSE_HELP - -fi - -eval "$ac_cv_use_help" -echo $ac_cv_use_help >> ${OSTYPE}.system.cache.tmp -if test "$wxUSE_HELP" = 1; then - echo "$ac_t""yes" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - - -if test "$wxUSE_UNIX" = 1 ; then - cat >> confdefs.h <<\EOF -#define __UNIX__ 1 -EOF - -fi - -if test "$USE_LINUX" = 1; then - echo $ac_n "checking for gettext in -lc""... $ac_c" 1>&6 -echo "configure:6014: checking for gettext in -lc" >&5 -ac_lib_var=`echo c'_'gettext | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_save_LIBS="$LIBS" -LIBS="-lc $LIBS" -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - cat >> confdefs.h <<\EOF -#define wxHAVE_GLIBC2 1 -EOF - -else - echo "$ac_t""no" 1>&6 -fi - -fi - - -TOOLKIT= -TOOLKIT_DEF= - -GUI_TK_INCLUDE= -GUI_TK_LIBRARY= -GUI_TK_LINK= - -WX_LINK= - -MAKEINCLUDE= - -if test "$wxUSE_GTK" = 1; then - # Check whether --with-gtk-prefix or --without-gtk-prefix was given. -if test "${with_gtk_prefix+set}" = set; then - withval="$with_gtk_prefix" - gtk_config_prefix="$withval" -else - gtk_config_prefix="" -fi - -# Check whether --with-gtk-exec-prefix or --without-gtk-exec-prefix was given. -if test "${with_gtk_exec_prefix+set}" = set; then - withval="$with_gtk_exec_prefix" - gtk_config_exec_prefix="$withval" -else - gtk_config_exec_prefix="" -fi - - - if test x$gtk_config_exec_prefix != x ; then - gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix" - if test x${GTK_CONFIG+set} != xset ; then - GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config - fi - fi - if test x$gtk_config_prefix != x ; then - gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix" - if test x${GTK_CONFIG+set} != xset ; then - GTK_CONFIG=$gtk_config_prefix/bin/gtk-config - fi - fi - - # Extract the first word of "gtk-config", so it can be a program name with args. -set dummy gtk-config; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:6104: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_path_GTK_CONFIG'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - case "$GTK_CONFIG" in - /*) - ac_cv_path_GTK_CONFIG="$GTK_CONFIG" # Let the user override the test with a path. - ;; - *) - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_path_GTK_CONFIG="$ac_dir/$ac_word" - break - fi - done - IFS="$ac_save_ifs" - test -z "$ac_cv_path_GTK_CONFIG" && ac_cv_path_GTK_CONFIG="no" - ;; -esac -fi -GTK_CONFIG="$ac_cv_path_GTK_CONFIG" -if test -n "$GTK_CONFIG"; then - echo "$ac_t""$GTK_CONFIG" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - min_gtk_version=1.0.4 - echo $ac_n "checking for GTK - version >= $min_gtk_version""... $ac_c" 1>&6 -echo "configure:6135: checking for GTK - version >= $min_gtk_version" >&5 - no_gtk="" - if test "$GTK_CONFIG" != "no" ; then - GTK_CFLAGS=`$GTK_CONFIG --cflags` - GTK_LIBS=`$GTK_CONFIG --libs` - ac_save_CFLAGS="$CFLAGS" - ac_save_LIBS="$LIBS" - CFLAGS="$CFLAGS $GTK_CFLAGS" - LIBS="$LIBS $GTK_LIBS" - if test "$cross_compiling" = yes; then - echo $ac_n "cross compiling; assumed OK... $ac_c" -else - cat > conftest.$ac_ext < -#include - -int -main () -{ - int major, minor, micro; - - if (sscanf("$min_gtk_version", "%d.%d.%d", &major, &minor, µ) != 3) { - printf("%s, bad version string\n", "$min_gtk_version"); - exit(1); - } - - if (gtk_minor_version > 0) return FALSE; - - return !((gtk_major_version > major) || - ((gtk_major_version == major) && (gtk_minor_version > minor)) || - ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro))); -} - -EOF -if { (eval echo configure:6172: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null -then - : -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - no_gtk=yes -fi -rm -fr conftest* -fi - - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" - else - no_gtk=yes - fi - if test "x$no_gtk" = x ; then - echo "$ac_t""yes" 1>&6 - - GUI_TK_INCLUDE="$GTK_CFLAGS" - GUI_TK_LIBRARY="$GTK_LIBS" - - else - echo "$ac_t""no" 1>&6 - GTK_CFLAGS="" - GTK_LIBS="" - { echo "configure: error: Is gtk-config in path and GTK+ is version 1.0.4 up-to 1.0.6?" 1>&2; exit 1; } - fi - - - - TOOLKIT=GTK - TOOLKIT_DEF=__WXGTK__ - WX_LINK=-lwx_gtk2 - MAKEINCLUDE=../gtk.inc -fi - -if test "$wxUSE_QT" = 1; then - echo $ac_n "checking for Qt includes""... $ac_c" 1>&6 -echo "configure:6212: checking for Qt includes" >&5 - -ac_find_includes= -for ac_dir in $SEARCH_INCLUDE; - do - if test -f "$ac_dir/qapp.h"; then - ac_find_includes=$ac_dir - break - fi - done - - if test "$ac_find_includes" != "" ; then - echo "$ac_t""found $ac_find_includes" 1>&6 - echo $ac_n "checking for Qt library""... $ac_c" 1>&6 -echo "configure:6226: checking for Qt library" >&5 - -ac_find_libraries= -for ac_dir in $SEARCH_LIB; - do - for ac_extension in a so sl; do - if test -f "$ac_dir/libqt.$ac_extension"; then - ac_find_libraries=$ac_dir - break 2 - fi - done - done - - if test "$ac_find_libraries" != "" ; then - - ac_path_to_include=$ac_find_includes - echo "$CHECK_INCLUDE" | grep "\-I$ac_find_includes" > /dev/null - result=$? - if test $result = 0; then - ac_path_to_include="" - else - ac_path_to_include="-I$ac_find_includes" - fi - - - echo "$CHECK_LIB" | grep "\-L$ac_find_libraries" > /dev/null - result=$? - if test $result = 0; then - ac_path_to_link="" - else - ac_path_to_link="-L$ac_find_libraries" - fi - - CHECK_LINK="$CHECK_INCLUDE $ac_path_to_link" - CHECK_INCLUDE="$CHECK_INCLUDE $ac_path_to_include" - echo "$ac_t""found Qt at $ac_find_libraries" 1>&6 - else - { echo "configure: error: no" 1>&2; exit 1; } - fi - else - { echo "configure: error: no" 1>&2; exit 1; } - fi - GUI_TK_LINK="-lX11 -lqt -lm" - TOOLKIT=QT - TOOLKIT_DEF=__WXQT__ - WX_LINK=-lwx_qt - MAKEINCLUDE=../qt.inc -fi - -if test "$wxUSE_MOTIF" = 1; then - echo $ac_n "checking for Motif/Lesstif includes""... $ac_c" 1>&6 -echo "configure:6277: checking for Motif/Lesstif includes" >&5 - -ac_find_includes= -for ac_dir in $SEARCH_INCLUDE; - do - if test -f "$ac_dir/Xm.h"; then - ac_find_includes=$ac_dir - break - fi - done - - if test "$ac_find_includes" != "" ; then - echo "$ac_t""found $ac_find_includes" 1>&6 - echo $ac_n "checking for Motif/Lesstif library""... $ac_c" 1>&6 -echo "configure:6291: checking for Motif/Lesstif library" >&5 - -ac_find_libraries= -for ac_dir in $SEARCH_LIB; - do - for ac_extension in a so sl; do - if test -f "$ac_dir/libXm.$ac_extension"; then - ac_find_libraries=$ac_dir - break 2 - fi - done - done - - if test "$ac_find_libraries" != "" ; then - - ac_path_to_include=$ac_find_includes - echo "$CHECK_INCLUDE" | grep "\-I$ac_find_includes" > /dev/null - result=$? - if test $result = 0; then - ac_path_to_include="" - else - ac_path_to_include="-I$ac_find_includes" - fi - - - echo "$CHECK_LIB" | grep "\-L$ac_find_libraries" > /dev/null - result=$? - if test $result = 0; then - ac_path_to_link="" - else - ac_path_to_link="-L$ac_find_libraries" - fi - - CHECK_LINK="$CHECK_LIB $ac_path_to_link" - CHECK_INCLUDE="$CHECK_INCLUDE $ac_path_to_include" - echo "$ac_t""found at $ac_find_libraries" 1>&6 - echo $ac_n "checking for Xt library""... $ac_c" 1>&6 -echo "configure:6328: checking for Xt library" >&5 - -ac_find_libraries= -for ac_dir in $SEARCH_LIB; - do - for ac_extension in a so sl; do - if test -f "$ac_dir/libXt.$ac_extension"; then - ac_find_libraries=$ac_dir - break 2 - fi - done - done - - if test "$ac_find_libraries" != "" ; then - - echo "$CHECK_LIB" | grep "\-L$ac_find_libraries" > /dev/null - result=$? - if test $result = 0; then - ac_path_to_link="" - else - ac_path_to_link="-L$ac_find_libraries" - fi - - CHECK_LINK="$CHECK_LIB $ac_path_to_link" - echo "$ac_t""found at $ac_find_libraries" 1>&6 - echo $ac_n "checking for Xpm library""... $ac_c" 1>&6 -echo "configure:6354: checking for Xpm library" >&5 - -ac_find_libraries= -for ac_dir in $SEARCH_LIB; - do - for ac_extension in a so sl; do - if test -f "$ac_dir/libXpm.$ac_extension"; then - ac_find_libraries=$ac_dir - break 2 - fi - done - done - - if test "$ac_find_libraries" != "" ; then - - echo "$CHECK_LIB" | grep "\-L$ac_find_libraries" > /dev/null - result=$? - if test $result = 0; then - ac_path_to_link="" - else - ac_path_to_link="-L$ac_find_libraries" - fi - - CHECK_LINK="$CHECK_LIB $ac_path_to_link" - echo "$ac_t""found at $ac_find_libraries" 1>&6 - else - { echo "configure: error: no" 1>&2; exit 1; } - fi - else - { echo "configure: error: no" 1>&2; exit 1; } - fi - else - { echo "configure: error: no" 1>&2; exit 1; } - fi - else - { echo "configure: error: no" 1>&2; exit 1; } - fi - - GUI_TK_LINK="-lXm -lXpm -lXmu -lXt -lX11 -lm" - GUI_TK_LIBRARY="$CHECK_LIB $GUI_TK_LINK" - TOOLKIT=MOTIF - TOOLKIT_DEF="__WXMOTIF__ -D__LINUX__ -D__UNIX__" - WX_LINK=-lwx_motif2 - MAKEINCLUDE=../motif.inc -fi - -if test "$TOOLKIT" = ""; then - { echo "configure: error: You must specify a toolkit: --with-gtk --with-qt --with-motif" 1>&2; exit 1; } -fi - - - - - - - - - - - - - -EXTRA_LINK= - -WXDEBUG= -if test "$wxUSE_DEBUG_GDB" = 1 ; then - wxUSE_DEBUG_INFO=1 - WXDEBUG="-ggdb" - wxUSE_OPTIMISE=0 -else - if test "$wxUSE_DEBUG_INFO" = 1 ; then - WXDEBUG="-g" - wxUSE_OPTIMISE=0 - else - EXTRA_LINK="-s $EXTRA_LINK" - fi -fi - - -if test "$wxUSE_DEBUG_FLAG" = 1 ; then - cat >> confdefs.h <> confdefs.h <> confdefs.h <> confdefs.h <> confdefs.h <> confdefs.h <> confdefs.h <> confdefs.h <> confdefs.h <> confdefs.h <> confdefs.h <> confdefs.h <> confdefs.h <> confdefs.h <> confdefs.h <> confdefs.h <> confdefs.h <> confdefs.h <> confdefs.h <> confdefs.h <> confdefs.h <> confdefs.h <> confdefs.h <> confdefs.h <> confdefs.h <> confdefs.h <> confdefs.h <> confdefs.h <> confdefs.h <&6 -echo "configure:6690: checking for pthread_create in -lpthread-0.7" >&5 -ac_lib_var=`echo pthread-0.7'_'pthread_create | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_save_LIBS="$LIBS" -LIBS="-lpthread-0.7 $LIBS" -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - - UNIX_THREAD="gtk/threadpsx.cpp" - THREADS_LINK="-lpthread-0.7" - -else - echo "$ac_t""no" 1>&6 - - ac_safe=`echo "sys/prctl.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for sys/prctl.h""... $ac_c" 1>&6 -echo "configure:6733: checking for sys/prctl.h" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6743: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - - UNIX_THREAD="gtk/threadsgi.cpp" - -else - echo "$ac_t""no" 1>&6 -fi - - - - echo $ac_n "checking for pthread_setcanceltype in -lpthread""... $ac_c" 1>&6 -echo "configure:6769: checking for pthread_setcanceltype in -lpthread" >&5 -ac_lib_var=`echo pthread'_'pthread_setcanceltype | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_save_LIBS="$LIBS" -LIBS="-lpthread $LIBS" -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - - UNIX_THREAD="gtk/threadpsx.cpp" - THREADS_LINK="-lpthread" - -else - echo "$ac_t""no" 1>&6 -fi - - -fi - - - if test "$THREADS_LINK" != ""; then - cat >> confdefs.h <<\EOF -#define wxUSE_THREADS 1 -EOF - - fi - - - echo $ac_n "checking for printf in -lposix4""... $ac_c" 1>&6 -echo "configure:6824: checking for printf in -lposix4" >&5 -ac_lib_var=`echo posix4'_'printf | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_save_LIBS="$LIBS" -LIBS="-lposix4 $LIBS" -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - - THREADS_LINK="$THREADS_LINK -lposix4" - -else - echo "$ac_t""no" 1>&6 -fi - - -fi - -if test "$wxUSE_MOTIF" = "1"; then - UNIX_THREAD="motif/thread.cpp" -fi - -if test -z "$UNIX_THREAD"; then - wxUSE_THREADS=0 -fi - - - - - - -PICFLAGS= -CREATE_SHARED= -case "${canonical}" in - - *-hp-hpux* ) - if test "$GCC" != "yes" ; then - CXXFLAGS="${CXXFLAGS} +a1 -z -Aa -D_HPUX_SOURCE" - CFLAGS="${CFLAGS} -z -D_HPUX_SOURCE" - PICFLAGS="+z" - else - PICFLAGS="-fPIC" - fi - LDFLAGS="-Wl,+s" - CREATE_SHARED=sharedHpux - ;; - - *-*-linux* ) - PICFLAGS=-fPIC - CREATE_SHARED=sharedLinux - ;; - - *-*-irix5* | *-*-irix6* ) - # PICFLAGS can remain empty, as pic is the default - LDFLAGS="-Wl,+s" - CREATE_SHARED=sharedIrix - cat >> confdefs.h <<\EOF -#define SVR4 1 -EOF - - ;; - - *-*-solaris2* ) - if test "$GCC" != "yes" ; then - PICFLAGS="-KPIC" - else - PICFLAGS="-fPIC" - fi - CREATE_SHARED=sharedSolaris2 - cat >> confdefs.h <<\EOF -#define SVR4 1 -EOF - - ;; - - *-*-sunos4* ) - if test "$GCC" != "yes" ; then - PICFLAGS="-PIC" - else - PICFLAGS="-fPIC" - fi - LDFLAGS="-Wl,+s" - CREATE_SHARED=sharedSunos4 - cat >> confdefs.h <<\EOF -#define BSD 1 -EOF - - ;; - - *-*-freebsd* | *-*-netbsd*) - PICFLAGS=-fPIC - CREATE_SHARED=sharedBsd - cat >> confdefs.h <<\EOF -#define BSD 1 -EOF - - ;; - - *-*-osf* ) - PICFLAGS="-fPIC" - CREATE_SHARED=sharedOSF - ;; - - *-*-dgux5* ) - if test "$GCC" != "yes" ; then - PICFLAGS="-K PIC" - else - PICFLAGS="-fPIC" - fi - CREATE_SHARED=sharedDgux - cat >> confdefs.h <<\EOF -#define SVR4 1 -EOF - - ;; - - *-*-sysv5* ) - if test "$GCC" != "yes" ; then - PICFLAGS="-K PIC" - else - PICFLAGS="-fPIC" - fi - CREATE_SHARED=sharedSysV - cat >> confdefs.h <<\EOF -#define SVR4 1 -EOF - - ;; - - *-*-aix* ) - if test "$GCC" != "yes" ; then - PICFLAGS="-bM\:SRE" - else - PICFLAGS="-fPIC" - fi - CREATE_SHARED=sharedAIX - cat >> confdefs.h <<\EOF -#define SYSV 1 -EOF - - ;; - - *) - CREATE_SHARED= - PICFLAGS= -esac - -if test "x$GCC" = xyes; then - CFLAGS="${CFLAGS} -Wall -Wno-unused -Wno-uninitialized -D_REENTRANT -DLEX_SCANNER -DHAVE_LIBDL" -fi - -if test "x$GXX" = xyes; then - if test "$wxUSE_MOTIF" = 1; then - CXXFLAGS="${CXXFLAGS} -Wall -Wno-unused -D_REENTRANT" - else - CXXFLAGS="${CXXFLAGS} -Wall -D_REENTRANT" - fi -fi - -if test "$wxUSE_SHARED" != 1; then - CREATE_SHARED= - PICFLAGS= -fi - - - - - - -echo $OS >> system.list - - -trap '' 1 2 15 -cat > confcache <<\EOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs. It is not useful on other systems. -# If it contains results you don't want to keep, you may remove or edit it. -# -# By default, configure uses ./config.cache as the cache file, -# creating it if it does not exist already. You can give configure -# the --cache-file=FILE option to use a different cache file; that is -# what configure does when it calls configure scripts in -# subdirectories, so they share the cache. -# Giving --cache-file=/dev/null disables caching, for debugging configure. -# config.status only pays attention to the cache file if you give it the -# --recheck option to rerun configure. -# -EOF -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, don't put newlines in cache variables' values. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -(set) 2>&1 | - case `(ac_space=' '; set) 2>&1` in - *ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote substitution - # turns \\\\ into \\, and sed turns \\ into \). - sed -n \ - -e "s/'/'\\\\''/g" \ - -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" - ;; - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' - ;; - esac >> confcache -if cmp -s $cache_file confcache; then - : -else - if test -w $cache_file; then - echo "updating cache $cache_file" - cat confcache > $cache_file - else - echo "not updating unwritable cache $cache_file" - fi -fi -rm -f confcache - -trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -# Any assignment to VPATH causes Sun make to only execute -# the first set of double-colon rules, so remove it if not needed. -# If there is a colon in the path, we need to keep it. -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' -fi - -trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 - -DEFS=-DHAVE_CONFIG_H - -# Without the "./", some shells look in PATH for config.status. -: ${CONFIG_STATUS=./config.status} - -echo creating $CONFIG_STATUS -rm -f $CONFIG_STATUS -cat > $CONFIG_STATUS </dev/null | sed 1q`: -# -# $0 $ac_configure_args -# -# Compiler output produced by configure, useful for debugging -# configure, is in ./config.log if it exists. - -ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" -for ac_option -do - case "\$ac_option" in - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" - exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; - -version | --version | --versio | --versi | --vers | --ver | --ve | --v) - echo "$CONFIG_STATUS generated by autoconf version 2.12" - exit 0 ;; - -help | --help | --hel | --he | --h) - echo "\$ac_cs_usage"; exit 0 ;; - *) echo "\$ac_cs_usage"; exit 1 ;; - esac -done - -ac_given_srcdir=$srcdir -ac_given_INSTALL="$INSTALL" - -trap 'rm -fr `echo "./setup/substit ./wx-config:./wx-config.in ./include/wx/gtk/setup.h:./setup/setup.hin" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 -EOF -cat >> $CONFIG_STATUS < conftest.subs <<\\CEOF -$ac_vpsub -$extrasub -s%@CFLAGS@%$CFLAGS%g -s%@CPPFLAGS@%$CPPFLAGS%g -s%@CXXFLAGS@%$CXXFLAGS%g -s%@DEFS@%$DEFS%g -s%@LDFLAGS@%$LDFLAGS%g -s%@LIBS@%$LIBS%g -s%@exec_prefix@%$exec_prefix%g -s%@prefix@%$prefix%g -s%@program_transform_name@%$program_transform_name%g -s%@bindir@%$bindir%g -s%@sbindir@%$sbindir%g -s%@libexecdir@%$libexecdir%g -s%@datadir@%$datadir%g -s%@sysconfdir@%$sysconfdir%g -s%@sharedstatedir@%$sharedstatedir%g -s%@localstatedir@%$localstatedir%g -s%@libdir@%$libdir%g -s%@includedir@%$includedir%g -s%@oldincludedir@%$oldincludedir%g -s%@infodir@%$infodir%g -s%@mandir@%$mandir%g -s%@WXBASEDIR@%$WXBASEDIR%g -s%@CC@%$CC%g -s%@CPP@%$CPP%g -s%@CXX@%$CXX%g -s%@CXXCPP@%$CXXCPP%g -s%@RANLIB@%$RANLIB%g -s%@AR@%$AR%g -s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g -s%@INSTALL_DATA@%$INSTALL_DATA%g -s%@LN_S@%$LN_S%g -s%@AWK@%$AWK%g -s%@X_CFLAGS@%$X_CFLAGS%g -s%@X_PRE_LIBS@%$X_PRE_LIBS%g -s%@X_LIBS@%$X_LIBS%g -s%@X_EXTRA_LIBS@%$X_EXTRA_LIBS%g -s%@GTK_JOYSTICK@%$GTK_JOYSTICK%g -s%@LIBOBJS@%$LIBOBJS%g -s%@YACC@%$YACC%g -s%@LEX@%$LEX%g -s%@LEXLIB@%$LEXLIB%g -s%@LEX_OUTPUT_ROOT@%$LEX_OUTPUT_ROOT%g -s%@DL_LIBRARY@%$DL_LIBRARY%g -s%@host@%$host%g -s%@host_alias@%$host_alias%g -s%@host_cpu@%$host_cpu%g -s%@host_vendor@%$host_vendor%g -s%@host_os@%$host_os%g -s%@GTK_CONFIG@%$GTK_CONFIG%g -s%@GTK_CFLAGS@%$GTK_CFLAGS%g -s%@GTK_LIBS@%$GTK_LIBS%g -s%@GUI_TK_INCLUDE@%$GUI_TK_INCLUDE%g -s%@GUI_TK_LIBRARY@%$GUI_TK_LIBRARY%g -s%@GUI_TK_LINK@%$GUI_TK_LINK%g -s%@WX_LINK@%$WX_LINK%g -s%@TOOLKIT@%$TOOLKIT%g -s%@TOOLKIT_DEF@%$TOOLKIT_DEF%g -s%@MAKEINCLUDE@%$MAKEINCLUDE%g -s%@WXDEBUG@%$WXDEBUG%g -s%@WXDEBUG_DEFINE@%$WXDEBUG_DEFINE%g -s%@EXTRA_LINK@%$EXTRA_LINK%g -s%@PROFILE@%$PROFILE%g -s%@OPTIMISE@%$OPTIMISE%g -s%@Z_C_SRC@%$Z_C_SRC%g -s%@PNG_C_SRC@%$PNG_C_SRC%g -s%@IODBC_C_SRC@%$IODBC_C_SRC%g -s%@HELP@%$HELP%g -s%@UNIX_THREAD@%$UNIX_THREAD%g -s%@THREADS_LINK@%$THREADS_LINK%g -s%@OS@%$OS%g -s%@PICFLAGS@%$PICFLAGS%g -s%@CREATE_SHARED@%$CREATE_SHARED%g - -CEOF -EOF - -cat >> $CONFIG_STATUS <<\EOF - -# Split the substitutions into bite-sized pieces for seds with -# small command number limits, like on Digital OSF/1 and HP-UX. -ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script. -ac_file=1 # Number of current file. -ac_beg=1 # First line for current file. -ac_end=$ac_max_sed_cmds # Line after last line for current file. -ac_more_lines=: -ac_sed_cmds="" -while $ac_more_lines; do - if test $ac_beg -gt 1; then - sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file - else - sed "${ac_end}q" conftest.subs > conftest.s$ac_file - fi - if test ! -s conftest.s$ac_file; then - ac_more_lines=false - rm -f conftest.s$ac_file - else - if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f conftest.s$ac_file" - else - ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" - fi - ac_file=`expr $ac_file + 1` - ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_cmds` - fi -done -if test -z "$ac_sed_cmds"; then - ac_sed_cmds=cat -fi -EOF - -cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF -for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case "$ac_file" in - *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` - ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - *) ac_file_in="${ac_file}.in" ;; - esac - - # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. - - # Remove last slash and all that follows it. Not all systems have dirname. - ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` - if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then - # The file is in a subdirectory. - test ! -d "$ac_dir" && mkdir "$ac_dir" - ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" - # A "../" for each directory in $ac_dir_suffix. - ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` - else - ac_dir_suffix= ac_dots= - fi - - case "$ac_given_srcdir" in - .) srcdir=. - if test -z "$ac_dots"; then top_srcdir=. - else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; - /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; - *) # Relative path. - srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" - top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac - - case "$ac_given_INSTALL" in - [/$]*) INSTALL="$ac_given_INSTALL" ;; - *) INSTALL="$ac_dots$ac_given_INSTALL" ;; - esac - - echo creating "$ac_file" - rm -f "$ac_file" - configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." - case "$ac_file" in - *Makefile*) ac_comsub="1i\\ -# $configure_input" ;; - *) ac_comsub= ;; - esac - - ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` - sed -e "$ac_comsub -s%@configure_input@%$configure_input%g -s%@srcdir@%$srcdir%g -s%@top_srcdir@%$top_srcdir%g -s%@INSTALL@%$INSTALL%g -" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file -fi; done -rm -f conftest.s* - -# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where -# NAME is the cpp macro being defined and VALUE is the value it is being given. -# -# ac_d sets the value in "#define NAME VALUE" lines. -ac_dA='s%^\([ ]*\)#\([ ]*define[ ][ ]*\)' -ac_dB='\([ ][ ]*\)[^ ]*%\1#\2' -ac_dC='\3' -ac_dD='%g' -# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE". -ac_uA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_uB='\([ ]\)%\1#\2define\3' -ac_uC=' ' -ac_uD='\4%g' -# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE". -ac_eA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_eB='$%\1#\2define\3' -ac_eC=' ' -ac_eD='%g' - -if test "${CONFIG_HEADERS+set}" != set; then -EOF -cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF -fi -for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case "$ac_file" in - *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` - ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - *) ac_file_in="${ac_file}.in" ;; - esac - - echo creating $ac_file - - rm -f conftest.frag conftest.in conftest.out - ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` - cat $ac_file_inputs > conftest.in - -EOF - -# Transform confdefs.h into a sed script conftest.vals that substitutes -# the proper values into config.h.in to produce config.h. And first: -# Protect against being on the right side of a sed subst in config.status. -# Protect against being in an unquoted here document in config.status. -rm -f conftest.vals -cat > conftest.hdr <<\EOF -s/[\\&%]/\\&/g -s%[\\$`]%\\&%g -s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp -s%ac_d%ac_u%gp -s%ac_u%ac_e%gp -EOF -sed -n -f conftest.hdr confdefs.h > conftest.vals -rm -f conftest.hdr - -# This sed command replaces #undef with comments. This is necessary, for -# example, in the case of _POSIX_SOURCE, which is predefined and required -# on some systems where configure will not decide to define it. -cat >> conftest.vals <<\EOF -s%^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */% -EOF - -# Break up conftest.vals because some shells have a limit on -# the size of here documents, and old seds have small limits too. - -rm -f conftest.tail -while : -do - ac_lines=`grep -c . conftest.vals` - # grep -c gives empty output for an empty file on some AIX systems. - if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi - # Write a limited-size here document to conftest.frag. - echo ' cat > conftest.frag <> $CONFIG_STATUS - sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS - echo 'CEOF - sed -f conftest.frag conftest.in > conftest.out - rm -f conftest.in - mv conftest.out conftest.in -' >> $CONFIG_STATUS - sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail - rm -f conftest.vals - mv conftest.tail conftest.vals -done -rm -f conftest.vals - -cat >> $CONFIG_STATUS <<\EOF - rm -f conftest.frag conftest.h - echo "/* $ac_file. Generated automatically by configure. */" > conftest.h - cat conftest.in >> conftest.h - rm -f conftest.in - if cmp -s $ac_file conftest.h 2>/dev/null; then - echo "$ac_file is unchanged" - rm -f conftest.h - else - # Remove last slash and all that follows it. Not all systems have dirname. - ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` - if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then - # The file is in a subdirectory. - test ! -d "$ac_dir" && mkdir "$ac_dir" - fi - rm -f $ac_file - mv conftest.h $ac_file - fi -fi; done - -EOF -cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF -./setup/general/createall -exit 0 -EOF -chmod +x $CONFIG_STATUS -rm -fr confdefs* $ac_clean_files -test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 - - - -mv ${OSTYPE}.system.cache.tmp ${OSTYPE}.system.cache - diff --git a/configure.in b/configure.in deleted file mode 100644 index c40297ad14..0000000000 --- a/configure.in +++ /dev/null @@ -1,1485 +0,0 @@ -dnl //////////////////////////////////////////////////////////////////////// -dnl -dnl Top-level configure.in for wxWindows by Robert Roebling, Wolfram Gloger -dnl and Martin Sperl. -dnl -dnl This script is under the wxWindows licence. -dnl $Id$ -dnl //////////////////////////////////////////////////////////////////////// - -dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) -dnl Test for GTK, and define GTK_CFLAGS and GTK_LIBS -dnl -AC_DEFUN(AM_PATH_GTK, -[dnl -dnl Get the cflags and libraries from the gtk-config script -dnl -AC_ARG_WITH(gtk-prefix,[**--with-gtk-prefix=PFX Prefix where GTK is installed], - gtk_config_prefix="$withval", gtk_config_prefix="") -AC_ARG_WITH(gtk-exec-prefix,[**--with-gtk-exec-prefix=PFX Exec prefix where GTK is installed], - gtk_config_exec_prefix="$withval", gtk_config_exec_prefix="") - - if test x$gtk_config_exec_prefix != x ; then - gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix" - if test x${GTK_CONFIG+set} != xset ; then - GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config - fi - fi - if test x$gtk_config_prefix != x ; then - gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix" - if test x${GTK_CONFIG+set} != xset ; then - GTK_CONFIG=$gtk_config_prefix/bin/gtk-config - fi - fi - - AC_PATH_PROG(GTK_CONFIG, gtk-config, no) - min_gtk_version=ifelse([$1], ,0.99.7,$1) - AC_MSG_CHECKING(for GTK - version >= $min_gtk_version) - no_gtk="" - if test "$GTK_CONFIG" != "no" ; then - GTK_CFLAGS=`$GTK_CONFIG --cflags` - GTK_LIBS=`$GTK_CONFIG --libs` - ac_save_CFLAGS="$CFLAGS" - ac_save_LIBS="$LIBS" - CFLAGS="$CFLAGS $GTK_CFLAGS" - LIBS="$LIBS $GTK_LIBS" -dnl -dnl Now check if the installed GTK is sufficiently new. (Also sanity -dnl checks the results of gtk-config to some extent -dnl - AC_TRY_RUN([ -#include -#include - -int -main () -{ - int major, minor, micro; - - if (sscanf("$min_gtk_version", "%d.%d.%d", &major, &minor, µ) != 3) { - printf("%s, bad version string\n", "$min_gtk_version"); - exit(1); - } - - if (gtk_minor_version > 0) return FALSE; - - return !((gtk_major_version > major) || - ((gtk_major_version == major) && (gtk_minor_version > minor)) || - ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro))); -} -],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" - else - no_gtk=yes - fi - if test "x$no_gtk" = x ; then - AC_MSG_RESULT(yes) - ifelse([$2], , :, [$2]) - else - AC_MSG_RESULT(no) - GTK_CFLAGS="" - GTK_LIBS="" - ifelse([$3], , :, [$3]) - fi - AC_SUBST(GTK_CFLAGS) - AC_SUBST(GTK_LIBS) -]) - -dnl ------------------------------------------------------------------------ -dnl custom macros -dnl ------------------------------------------------------------------------ - -AC_DEFUN(AC_OVERRIDES_PREPARE, -[ -rm -f ${OSTYPE}.system.cache.tmp -touch ${OSTYPE}.system.cache.tmp -touch ${OSTYPE}.system.cache -]) - -AC_DEFUN(AC_OVERRIDES_DONE, -[ -mv ${OSTYPE}.system.cache.tmp ${OSTYPE}.system.cache -]) - -dnl package,message,helpmessage,variable -AC_DEFUN(AC_OVERRIDES, -[ -AC_MSG_CHECKING("for $2") -AC_ARG_WITH($1,$3, -[if test "x$with_$1" = xyes; then - ac_cv_use_$1='$4="1"' -else - ac_cv_use_$1='$4="0"' -fi], -[ - LINE=`grep "$4" ${OSTYPE}.system.cache` - if test "x$LINE" != x ; then - eval "DEFAULT_$LINE" - fi - ac_cv_use_$1='$4='$DEFAULT_$4 -]) -eval "$ac_cv_use_$1" -echo $ac_cv_use_$1 >> ${OSTYPE}.system.cache.tmp -if test "$$4" = 1; then - AC_MSG_RESULT(yes) -else - AC_MSG_RESULT(no) -fi -]) - -dnl package,message,helpmessage,variable -AC_DEFUN(AC_OVERRIDES_OLD, -[ -AC_MSG_CHECKING("for $2") -AC_CACHE_VAL(ac_cv_use_$1, -[ -AC_ARG_WITH($1,$3, -[if test "x$with_$1" = xyes; then - ac_cv_use_$1='$4="1"' -else - ac_cv_use_$1='$4="0"' -fi],[ac_cv_use_$1='$4=$DEFAULT_$4']) -]) -eval "$ac_cv_use_$1" - -if test "$$4" = 1; then - AC_MSG_RESULT(yes) -else - AC_MSG_RESULT(no) -fi -]) - -AC_DEFUN(AC_PATH_FIND_INCLUDES, -[ -ac_find_includes= -for ac_dir in $1; - do - if test -f "$ac_dir/$2"; then - ac_find_includes=$ac_dir - break - fi - done -]) - -AC_DEFUN(AC_PATH_FIND_LIBRARIES, -[ -ac_find_libraries= -for ac_dir in $1; - do - for ac_extension in a so sl; do - if test -f "$ac_dir/lib$2.$ac_extension"; then - ac_find_libraries=$ac_dir - break 2 - fi - done - done -]) - -dnl Path to include, allready defined -AC_DEFUN(AC_INCLUDE_PATH_EXIST, -[ - ac_path_to_include=$1 - echo "$2" | grep "\-I$1" > /dev/null - result=$? - if test $result = 0; then - ac_path_to_include="" - else - ac_path_to_include="-I$1" - fi -]) - -dnl Path to link, allready defined -AC_DEFUN(AC_LINK_PATH_EXIST, -[ - echo "$2" | grep "\-L$1" > /dev/null - result=$? - if test $result = 0; then - ac_path_to_link="" - else - ac_path_to_link="-L$1" - fi -]) - -dnl ------------------------------------------------------------------------ -dnl Process this file with autoconf to produce a configure script. -dnl ------------------------------------------------------------------------ - -AC_INIT(configure.in) - -dnl ------------------------------------------------------------------------ -dnl Check platform -dnl ------------------------------------------------------------------------ - -OS="${OSTYPE}" - -if test "x$OS" = "x"; then - UNAME=`uname` - AC_MSG_ERROR("The system variable OS has not been set" - "please set is everytime befor compiling on this system" - "A good example for this system would be:" - "setenv OSTYPE $UNAME for csh as a SHELL" - "EXPORT OSTYPE=$UNAME for sh as SHELL" - "please set this and restart again." - ) -fi - -dnl ------------------------------------------------------------------------ -dnl Set base directory -dnl ------------------------------------------------------------------------ - -WXBASEDIR=`pwd` -AC_SUBST(WXBASEDIR) - -dnl ------------------------------------------------------------------------ -dnl search path for includes and libraries -dnl ------------------------------------------------------------------------ - -SEARCH_INCLUDE="\ - /usr/Motif1.2/include \ - /usr/dt/include/Xm \ - \ - /usr/X11R6/include \ - /usr/X11R5/include \ - /usr/X11R4/include \ - \ - /usr/X11R6/lib \ - /usr/X11R5/lib \ - /usr/X11R4/lib \ - \ - /usr/include/X11R6 \ - /usr/include/X11R5 \ - /usr/include/X11R4 \ - \ - /usr/local/X11R6/include \ - /usr/local/X11R5/include \ - /usr/local/X11R4/include \ - \ - /usr/local/include/X11R6 \ - /usr/local/include/X11R5 \ - /usr/local/include/X11R4 \ - \ - /usr/X11/include \ - /usr/include/X11 \ - /usr/local/X11/include \ - /usr/local/include/X11 \ - \ - /usr/X386/include \ - /usr/x386/include \ - /usr/XFree86/include/X11 \ - \ - /usr/include \ - /usr/include/gtk \ - /usr/include/gdk \ - /usr/include/glib \ - /usr/local/include \ - /usr/unsupported/include \ - /usr/athena/include \ - /usr/local/x11r5/include \ - /usr/lpp/Xamples/include \ - \ - /usr/local/include/gtk \ - /usr/local/include/Xm \ - /usr/local/include/qt \ - /usr/X11R6/include/Xm \ - /usr/X11/include/Xm \ - /usr/include/qt \ - \ - /usr/openwin/include \ - /usr/openwin/share/include \ - " - -SEARCH_LIB="`echo "$SEARCH_INCLUDE" | sed s/include/lib/g` \ - /usr/dt/lib \ - " - -dnl ------------------------------------------------------------------------ -dnl standard checks -dnl ------------------------------------------------------------------------ - -dnl ################### -dnl # checks programs # -dnl ################### - -dnl C-compiler checks -dnl ================= -dnl use what compiler -AC_PROG_CC -dnl defines CC with the compiler to use -dnl defines GCC with yes if using gcc -dnl defines GCC empty if not using gcc -dnl defines CFLAGS - -CFLAGS=`echo "$CFLAGS" | sed 's/-g//g'` - -dnl does compiler support -c and -o simultaniously -AC_PROG_CC_C_O -dnl defines NO_MINUS_C_MINUS_O if compiler does not accept -dnl both switches simultaniously -dnl what is the c-preprocessor -AC_PROG_CPP -dnl defines CPP with the c-preprocessor -dnl is -traditional needed for correct compilations -AC_PROG_GCC_TRADITIONAL -dnl adds -traditional for gcc if needed - -AC_LANG_SAVE - -dnl C++-compiler checks -dnl =================== -dnl use what compiler -AC_PROG_CXX -dnl defines CXX with the compiler to use -dnl defines GXX with yes if using gxx -dnl defines GXX empty if not using gxx -dnl defines CXXFLAGS -dnl what is the C++-preprocessor -AC_PROG_CXXCPP -dnl defines CXXCPP with the C++-preprocessor - -CXXFLAGS=`echo "$CXXFLAGS" | sed 's/-g//g'` - -AC_LANG_RESTORE - -dnl ranlib command -dnl ============== -AC_PROG_RANLIB -dnl defines RANLIB with the appropriate command - -dnl ar command -dnl ========== -AC_CHECK_PROG(AR, ar, ar, ar) -dnl defines AR with the appropriate command - -dnl install checks -dnl ============== -AC_PROG_INSTALL -dnl defines INSTALL with the appropriate command - -dnl does ln -s works -dnl ================ -AC_PROG_LN_S -dnl defines LN_S with the appropriate command - -dnl awk command -dnl =========== -AC_PROG_AWK -dnl defines AWK with the appropriate command - -dnl ############### -dnl # make checks # -dnl ############### -dnl check if VPATH works -AC_MSG_CHECKING("make for VPATH support") -dnl create Makefile -cat - << EOF > confMake -check : file - cp \$? \$@ - cp \$? final_file -EOF - -if test ! -d sub ; then - mkdir sub -fi -echo dummy > sub/file -${MAKE-make} -f confMake VPATH=sub 2> config.log > /dev/null -RESULT=$? -rm -f sub/file check final_file confMake -rmdir sub -if test "$RESULT" = 0; then - AC_MSG_RESULT(yes) -else - AC_MSG_RESULT(no) - AC_MSG_ERROR( -You need a make-utility that is able to use the variable -VPATH correctly. -If your version of make does not support VPATH correctly, -please install GNU-make (possibly as gmake), and start -configure with the following command: -export MAKE=gmake; ./configure for sh-type shells -setenv MAKE gmake; ./configure for csh-type shells -Also please do remember to use gmake in this case every time -you are trying to compile. -) -fi - -dnl #################### -dnl # checks libraries # -dnl #################### - -dnl find the X11 include and library files -AC_PATH_XTRA -dnl defines x_includes and x_libraries - -dnl ####################### -dnl # checks header files # -dnl ####################### -AC_HEADER_DIRENT -dnl defines DIR -dnl defines MACRO HAVE_DIRENT_H if dirent.h exists -dnl defines MACRO HAVE_SYS_NDIR_H if sys/ndir.h exists -dnl defines MACRO HAVE_SYS_DIR_H if sys/dir.h exists -dnl defines MACRO HAVE_NDIR_H if ndir.h exists -AC_HEADER_STDC -dnl defines STDC_HEADERS if ANSI-C header -AC_HEADER_SYS_WAIT -dnl defines HAVE_SYS_WAIT_H if sys/wait.h exist and is POSIX.1 -AC_CHECK_HEADERS(fcntl.h) -dnl defines HAVE_FCNTL_H -AC_CHECK_HEADERS(limits.h) -dnl defines HAVE_LIMITS_h -AC_CHECK_HEADERS(sys/file.h) -dnl defines HAVE_SYS_FILE_H -AC_CHECK_HEADERS(sys/time.h) -dnl defines HAVE_SYS_TIME_H -AC_CHECK_HEADERS(unistd.h) -dnl defines HAVE_UNISTD_H -AC_CHECK_HEADERS(fnmatch.h) -dnl defines HAVE_FNMATCH_H -dnl As it needs Linux 2.1.x for the moment: check whether the file exists (GL). -AC_CHECK_HEADERS(linux/joystick.h) -GTK_JOYSTICK="" -if test "$ac_cv_header_linux_joystick_h" = "yes"; then - GTK_JOYSTICK="gtk/joystick.cpp" -fi -AC_SUBST(GTK_JOYSTICK) - -dnl check for vprintf/vsprintf() which are GNU extensions -AC_FUNC_VPRINTF -dnl check for vsnprintf() which is another GNU extension -AC_CHECK_FUNC(vsnprintf) - -AC_LANG_SAVE -AC_LANG_CPLUSPLUS -AC_CHECK_HEADERS(iostream) -if test "x$HAVE_IOSTREAM" = "x" ; then - AC_DEFINE(wxUSE_IOSTREAMH) -fi -AC_LANG_RESTORE - -dnl defines HAVE_IOSTREAM -dnl ################### -dnl # checks typedefs # -dnl ################### -AC_TYPE_GETGROUPS -dnl defines GETGROUPS_T -AC_TYPE_MODE_T -dnl defines mode_t if not already defined -AC_TYPE_OFF_T -dnl defines off_t if not already defined -AC_TYPE_PID_T -dnl defines pid_t if not already defined -AC_TYPE_SIGNAL -dnl defines RETSIGTYPE for the correct return type of signal -AC_TYPE_SIZE_T -dnl defines size_t if not already defined -AC_TYPE_UID_T -dnl defines uid_t and gid_t if not already defined - -dnl ##################### -dnl # checks structures # -dnl ##################### - -AC_HEADER_STAT -dnl defines STAT_MACROS_BROKEN if S_ISDIR and S_ISREG -dnl do not work properly -AC_HEADER_TIME -dnl defines TIME_WITH_SYS_TIME if time.h and sys/time.h can -dnl both be included -AC_STRUCT_ST_BLKSIZE -dnl defines HAVE_ST_BLKSIZE if struct stat contains st_blksize -AC_STRUCT_ST_BLOCKS -dnl defines HAVE_ST_BLOCKS if struct stat contains st_blocks -AC_STRUCT_ST_RDEV -dnl defines HAVE_ST_RDEV if struct stat contains st_rdev -AC_STRUCT_TM -dnl defines TM_IN_SYS_TIME if struct tm is not in time.h -AC_STRUCT_TIMEZONE -dnl defines HAVE_ST_BLKSIZE if struct tm contains tm_zone -dnl otherwise -dnl defines HAVE_TZNAME if external array tzname is found - -dnl ################################### -dnl # checks compiler characteristics # -dnl ################################### -dnl AC_C_CROSS - -AC_C_CONST -dnl defines const to be empty if c-compiler does not support const fully -AC_C_INLINE -dnl defines inline to a sensible value for the c-compiler -AC_C_CHAR_UNSIGNED -dnl defines __CHAR_UNSIGNED__ if char is unsigned -AC_C_LONG_DOUBLE -dnl defines HAVE_LONGDOUBLE if compiler supports long double - -AC_C_BIGENDIAN -dnl defines WORDS_BIGENDIAN if system is big endian - -AC_CHECK_SIZEOF(int *) -AC_CHECK_SIZEOF(int) -AC_CHECK_SIZEOF(long) -dnl defines the size of certain types of variables in SIZEOF_??? - -dnl ############################ -dnl # checks library functions # -dnl ############################ - -dnl ########################## -dnl # checks system services # -dnl ########################## - - -AC_SYS_LONG_FILE_NAMES -dnl defines HAVE_LONG_FILENAMES if filenames longer then -dnl 14 chars are supported - -dnl AC_SYS_RESTARTABLE_SYSCALLS -dnl defines HAVE_RESTARTABLE_SYSCALLS if the system restarts a -dnl system call that is interrupted -dnl by a signal - -dnl ################# -dnl # checks PARSER # -dnl ################# - -dnl YACC checks -dnl =========== -AC_PROG_YACC -dnl defines YACC with the appropriate command - -dnl LEX checks -dnl ========== -AC_PROG_LEX -dnl defines LEX with the appropriate command -dnl defines LEXLIB with the appropriate library -dnl what type is yytext -AC_DECL_YYTEXT -dnl defines YYTEXT_POINTER if yytext is char* -dnl defines LEX_OUTPUT_ROOT as to the base of the -dnl filename output by the lexer - -dnl ################################### -dnl ## Check for dynamic load module # -dnl ################################### - -DL_LIBRARY= -AC_CHECK_FUNCS(dlopen, AC_DEFINE(HAVE_LIBDL), -[AC_CHECK_LIB(dl, dlopen, [AC_DEFINE(HAVE_LIBDL) DL_LIBRARY="-ldl"], - [AC_CHECK_LIB(dld, dld_link, [AC_DEFINE(HAVE_DLD) DL_LIBRARY="-ldld"], - [AC_CHECK_FUNCS(shl_load, AC_DEFINE(HAVE_SHL_LOAD) )] - )] - )] -) -AC_SUBST(DL_LIBRARY) - -AC_CACHE_CHECK([for underscore before symbols], libltdl_cv_uscore, [ - echo "main(){int i=1;} fnord(){int i=23; int ltuae=42;}" > conftest.c - ${CC} -c conftest.c > /dev/null - if (nm conftest.o | grep _fnord) > /dev/null; then - libltdl_cv_uscore=yes - else - libltdl_cv_uscore=no - fi - rm -f conftest* -]) - -if test x"$libltdl_cv_uscore" = xyes; then - if test x"$ac_cv_func_dlopen" = xyes || - test x"$ac_cv_lib_dl_dlopen" = xyes ; then - AC_CACHE_CHECK([whether we have to add an underscore for dlsym], - libltdl_cv_need_uscore, [dnl - AC_TRY_RUN([ -#include -#include -fnord() { int i=42;} -main() { void *self, *ptr1, *ptr2; self=dlopen(NULL,RTLD_LAZY); - if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord"); - if(ptr1 && !ptr2) exit(0); } exit(1); } -], libltdl_cv_need_uscore=no, libltdl_cv_need_uscore=yes, - libltdl_cv_need_uscore=no -)]) - fi -fi - -if test x"$libltdl_cv_need_uscore" = xyes; then - AC_DEFINE(NEED_USCORE) -fi - -dnl ########################################## -dnl ## Check for specific library functions # -dnl ########################################## - -dnl Checks for library functions. -AC_CHECK_FUNCS(strerror) - -dnl ------------------------------------------------------------------------ -dnl main includes -dnl ------------------------------------------------------------------------ - -CHECK_INCLUDE="-I/usr/include $X_CFLAGS" -CHECK_LIB="-L/lib -L/usr/lib $X_LIBS" - -dnl ------------------------------------------------------------------------ -dnl host system -dnl ------------------------------------------------------------------------ - -AC_CANONICAL_HOST -canonical=$host -configuration=$host_alias - -dnl ------------------------------------------------------------------------ -dnl system settings -dnl ------------------------------------------------------------------------ - -USE_UNIX=1 - -USE_LINUX= -USE_SGI= -USE_HPUX= -USE_SYSV= -USE_SVR4= -USE_AIX= -USE_SUN= -USE_SOLARIS= -USE_SUNOS= -USE_ALPHA= -USE_OSF= -USE_BSD= -USE_FREEBSD= -USE_VMS= -USE_ULTRIX= -USE_DATA_GENERAL= - -AC_DEFINE(__UNIX__) -case "${canonical}" in - *-hp-hpux* ) - USE_HPUX=1 - AC_DEFINE(__HPUX__) - ;; - *-*-linux* ) - USE_LINUX=1 - AC_DEFINE(__LINUX__) - TMP=`uname -m` - if test "x$TMP" = "xalpha" - then - USE_ALPHA=1 - AC_DEFINE(__ALPHA__) - fi - ;; - *-*-irix5* | *-*-irix6* ) - USE_SGI=1 - USE_SVR4=1 - AC_DEFINE(__SGI__) - AC_DEFINE(__SVR4__) - ;; - *-*-solaris2* ) - USE_SUN=1 - USE_SOLARIS=1 - USE_SVR4=1 - AC_DEFINE(__SUN__) - AC_DEFINE(__SOLARIS__) - AC_DEFINE(__SVR4__) - ;; - *-*-sunos4* ) - USE_SUN=1 - USE_SUNOS=1 - USE_BSD=1 - AC_DEFINE(__SUN__) - AC_DEFINE(__SUNOS__) - AC_DEFINE(__BSD__) - ;; - *-*-freebsd* | *-*-netbsd*) - USE_BSD=1 - USE_FREEBSD=1 - AC_DEFINE(__FREEBSD__) - AC_DEFINE(__BSD__) - ;; - *-*-osf* ) - USE_ALPHA=1 - USE_OSF=1 - AC_DEFINE(__ALPHA__) - AC_DEFINE(__OSF__) - ;; - *-*-dgux5* ) - USE_ALPHA=1 - USE_SVR4=1 - AC_DEFINE(__ALPHA__) - AC_DEFINE(__SVR4__) - ;; - *-*-sysv5* ) - USE_SYSV=1 - USE_SVR4=1 - AC_DEFINE(__SYSV__) - AC_DEFINE(__SVR4__) - ;; - *-*-aix* ) - USE_AIX=1 - USE_SYSV=1 - USE_SVR4=1 - AC_DEFINE(__AIX__) - AC_DEFINE(__SYSV__) - AC_DEFINE(__SVR4__) - ;; - *) - AC_MSG_ERROR(I don't know your system type.) -esac - -dnl ------------------------------------------------------------------------ -dnl defaults for command options -dnl ------------------------------------------------------------------------ - -AC_OVERRIDES_PREPARE - -DEFAULT_wxUSE_GTK=1 -DEFAULT_wxUSE_QT=0 -DEFAULT_wxUSE_MOTIF=0 - -DEFAULT_wxUSE_THREADS=0 - -DEFAULT_wxUSE_SHARED=1 -DEFAULT_wxUSE_OPTIMISE=1 -DEFAULT_wxUSE_PROFILE=0 -DEFAULT_wxUSE_DEBUG_FLAG=0 -DEFAULT_wxUSE_DEBUG_INFO=0 -DEFAULT_wxUSE_MEM_TRACING=0 -DEFAULT_wxUSE_DMALLOC=0 -DEFAULT_wxUSE_APPLE_IEEE=1 -DEFAULT_wxUSE_IOSTREAMH=1 - -DEFAULT_wxUSE_ZLIB=1 -DEFAULT_wxUSE_LIBPNG=1 -DEFAULT_wxUSE_ODBC=1 - -DEFAULT_wxUSE_TIMEDATE=1 -DEFAULT_wxUSE_INTL=1 -DEFAULT_wxUSE_CONFIG=1 -DEFAULT_wxUSE_STREAMS=1 -DEFAULT_wxUSE_SERIAL=1 - -DEFAULT_wxUSE_AFM_FOR_POSTSCRIPT=1 -DEFAULT_WX_NORMALIZED_PS_FONTS=1 -DEFAULT_wxUSE_POSTSCRIPT=1 - -DEFAULT_wxUSE_IPC=1 -DEFAULT_wxUSE_RESOURCES=1 -DEFAULT_wxUSE_CLIPBOARD=1 -DEFAULT_wxUSE_DRAG_AND_DROP=1 - -DEFAULT_wxUSE_MDI_ARCHITECTURE=1 -DEFAULT_wxUSE_DOC_VIEW_ARCHITECTURE=1 -DEFAULT_wxUSE_PRINTING_ARCHITECTURE=1 - -DEFAULT_wxUSE_PROLOGIO=1 -DEFAULT_wxUSE_WX_RESOURCES=1 -DEFAULT_wxUSE_RPC=0 -DEFAULT_wxUSE_HELP=1 - -DEFAULT_wxUSE_UNICODE=1 -DEFAULT_wxUSE_WCSRTOMBS=0 - -dnl ---------------------------------------------------------------- -dnl toolkit options -dnl ---------------------------------------------------------------- - -AC_OVERRIDES(gtk,gtk, -**--with-gtk use GTK, -wxUSE_GTK) - -AC_OVERRIDES(qt,qt, -**--with-qt use Qt, -wxUSE_QT) - -AC_OVERRIDES(motif,motif, -**--with-motif use Motif/Lesstif, -wxUSE_MOTIF) - -dnl ---------------------------------------------------------------- -dnl compile options -dnl ---------------------------------------------------------------- - -AC_OVERRIDES(shared,shared, -**--with-shared create shared libraries, -wxUSE_SHARED) - -AC_OVERRIDES(optimise,optimise, -**--with-optimise create optimised code, -wxUSE_OPTIMISE) - -AC_OVERRIDES(debug_flag,debug_flag, -**--with-debug_flag create code with WXDEBUG define set to 1, -wxUSE_DEBUG_FLAG) - -AC_OVERRIDES(debug_info,debug_info, -**--with-debug_info create code with debuging information, -wxUSE_DEBUG_INFO) - -AC_OVERRIDES(debug_gdb,debug_gdb, -**--with-debug_gdb create code with extra GDB debuging information, -wxUSE_DEBUG_GDB) - -AC_OVERRIDES(mem_tracing,mem_tracing, -**--with-mem_traing create code with memory tracing, -wxUSE_MEM_TRACING) - -AC_OVERRIDES(dmalloc,dmalloc, -**--with-dmalloc use dmalloc memory debug library (www.letters.com/dmalloc/), -wxUSE_DMALLOC) - -AC_OVERRIDES(profile,profile, -**--with-profile create code with profiling information, -wxUSE_PROFILE) - -AC_OVERRIDES(apple_ieee, apple_ieee, -**--with_apple_ieee use the Apple IEEE codec, -wxUSE_APPLE_IEEE) - -AC_OVERRIDES(threads,threads, -**--with-threads for enabling threads, -wxUSE_THREADS) - -dnl ---------------------------------------------------------------- -dnl user options for libraries -dnl ---------------------------------------------------------------- - -AC_OVERRIDES(zlib,zlib, -**--with-zlib use zlib for LZW comression, -wxUSE_ZLIB) - -AC_OVERRIDES(libpng,libpng, -**--with-libpng use libpng (PNG image format), -wxUSE_LIBPNG) - -AC_OVERRIDES(odbc,odbc, -**--with-odbc use iODBC and wxODBC classes, -wxUSE_ODBC) - -dnl ---------------------------------------------------------------- -dnl user options for non-GUI classes -dnl ---------------------------------------------------------------- - -AC_OVERRIDES(timedate, timedate, -**--with-timedate use wxTime and wxDate classes, -wxUSE_TIMEDATE) - -AC_OVERRIDES(intl,intl, -**--with-intl use internationalization system, -wxUSE_INTL) - -AC_OVERRIDES(config,config, -**--with-config use wxConfig class, -wxUSE_CONFIG) - -AC_OVERRIDES(streams,streams, -**--with-streams use wxStream etc classes, -wxUSE_STREAMS) - -AC_OVERRIDES(serial,serial, -**--with-serial use class serialization, -wxUSE_SERIAL) - -dnl ---------------------------------------------------------------- -dnl user options for PostScript -dnl ---------------------------------------------------------------- - -AC_OVERRIDES(afmfonts,afmfonts, -**--with-afmfonts use Adobe Font Metric Font table, -wxUSE_AFM_FOR_POSTSCRIPT) - -AC_OVERRIDES(normalized, normalized, -**--with-PS-normalized use normalized PS fonts, -WX_NORMALIZED_PS_FONTS) - -AC_OVERRIDES(postscript, postscript, -**--with-postscript use wxPostscriptDC device context, -wxUSE_POSTSCRIPT) - -dnl ---------------------------------------------------------------- -dnl user options for wxString and Unicode -dnl ---------------------------------------------------------------- - -AC_OVERRIDES(unicode,unicode, -**--with-unicode compile wxString with Unicode support, -wxUSE_UNICODE) - -AC_OVERRIDES(wcsrtombs,wcsrtombs, -**--with-wcsrtombs use wcsrtombs instead of (buggy in GNU libc5) wcstombs, -wxUSE_WCSRTOMBS) - -dnl ---------------------------------------------------------------- -dnl user options for Prolog and Resources -dnl ---------------------------------------------------------------- - -AC_OVERRIDES(wxresources,wxresources, -**--with-wxresources use wxWindows's resources, -wxUSE_WX_RESOURCES) - -AC_OVERRIDES(prologio,prologio, -**--with-prologio use Prolog IO library, -wxUSE_PROLOGIO) - -AC_OVERRIDES(rpc,RPC, -**--with-rpc use Prolog's remote procedure calls, -wxUSE_RPC) - -dnl ---------------------------------------------------------------- -dnl user options for misc stuff -dnl ---------------------------------------------------------------- - -AC_OVERRIDES(ipc,IPC, -**--with-ipc use interprocess communication (wxSocket etc.), -wxUSE_IPC) - -AC_OVERRIDES(resources,resources, -**--with-resources use X resources for saving information, -wxUSE_RESOURCES) - -AC_OVERRIDES(clipboard,clipboard, -**--with-clipboard use wxClipboard classes, -wxUSE_CLIPBOARD) - -AC_OVERRIDES(dnd,dnd, -**--with-dnd use Drag'n'Drop classes, -wxUSE_DRAG_AND_DROP) - -dnl ---------------------------------------------------------------- -dnl user options for architectures -dnl ---------------------------------------------------------------- - -AC_OVERRIDES(mdi,mdi, -**--with-mdi use multiple document interface architecture, -wxUSE_MDI_ARCHITECTURE) - -AC_OVERRIDES(docview,docview, -**--with-docview use document view architecture, -wxUSE_DOC_VIEW_ARCHITECTURE) - -AC_OVERRIDES(printarch,printarch, -**--with-printarch use printing architecture, -wxUSE_PRINTING_ARCHITECTURE) - -AC_OVERRIDES(help,help, -**--with-help use help (using external browser at present), -wxUSE_HELP) - -dnl ---------------------------------------------------------------- -dnl Unix, obviously -dnl ---------------------------------------------------------------- - -if test "$wxUSE_UNIX" = 1 ; then - AC_DEFINE(__UNIX__) -fi - -dnl ---------------------------------------------------------------- -dnl Linux: test for libc5/glibc2: glibc2 has gettext() included -dnl ---------------------------------------------------------------- -if test "$USE_LINUX" = 1; then - AC_CHECK_LIB(c,gettext,AC_DEFINE(wxHAVE_GLIBC2)) -fi - -dnl ---------------------------------------------------------------- -dnl search for toolkit (widget sets) -dnl ---------------------------------------------------------------- - -TOOLKIT= -TOOLKIT_DEF= - -GUI_TK_INCLUDE= -GUI_TK_LIBRARY= -GUI_TK_LINK= - -WX_LINK= - -MAKEINCLUDE= - -if test "$wxUSE_GTK" = 1; then - AM_PATH_GTK(1.0.4, [ - GUI_TK_INCLUDE="$GTK_CFLAGS" - GUI_TK_LIBRARY="$GTK_LIBS" - ], AC_MSG_ERROR(Is gtk-config in path and GTK+ is version 1.0.4 up-to 1.0.6?)) - TOOLKIT=GTK - TOOLKIT_DEF=__WXGTK__ - WX_LINK=-lwx_gtk2 - MAKEINCLUDE=../gtk.inc -fi - -if test "$wxUSE_QT" = 1; then - AC_MSG_CHECKING(for Qt includes) - AC_PATH_FIND_INCLUDES($SEARCH_INCLUDE,qapp.h) - if test "$ac_find_includes" != "" ; then - AC_MSG_RESULT(found $ac_find_includes) - AC_MSG_CHECKING(for Qt library) - AC_PATH_FIND_LIBRARIES($SEARCH_LIB,qt) - if test "$ac_find_libraries" != "" ; then - AC_INCLUDE_PATH_EXIST($ac_find_includes,$CHECK_INCLUDE) - AC_LINK_PATH_EXIST($ac_find_libraries,$CHECK_LIB) - CHECK_LINK="$CHECK_INCLUDE $ac_path_to_link" - CHECK_INCLUDE="$CHECK_INCLUDE $ac_path_to_include" - AC_MSG_RESULT(found Qt at $ac_find_libraries) - else - AC_MSG_ERROR(no) - fi - else - AC_MSG_ERROR(no) - fi - GUI_TK_LINK="-lX11 -lqt -lm" - TOOLKIT=QT - TOOLKIT_DEF=__WXQT__ - WX_LINK=-lwx_qt - MAKEINCLUDE=../qt.inc -fi - -if test "$wxUSE_MOTIF" = 1; then - AC_MSG_CHECKING(for Motif/Lesstif includes) - AC_PATH_FIND_INCLUDES($SEARCH_INCLUDE,Xm.h) - if test "$ac_find_includes" != "" ; then - AC_MSG_RESULT(found $ac_find_includes) - AC_MSG_CHECKING(for Motif/Lesstif library) - AC_PATH_FIND_LIBRARIES($SEARCH_LIB,Xm) - if test "$ac_find_libraries" != "" ; then - AC_INCLUDE_PATH_EXIST($ac_find_includes,$CHECK_INCLUDE) - AC_LINK_PATH_EXIST($ac_find_libraries,$CHECK_LIB) - CHECK_LINK="$CHECK_LIB $ac_path_to_link" - CHECK_INCLUDE="$CHECK_INCLUDE $ac_path_to_include" - AC_MSG_RESULT(found at $ac_find_libraries) - AC_MSG_CHECKING(for Xt library) - AC_PATH_FIND_LIBRARIES($SEARCH_LIB,Xt) - if test "$ac_find_libraries" != "" ; then - AC_LINK_PATH_EXIST($ac_find_libraries,$CHECK_LIB) - CHECK_LINK="$CHECK_LIB $ac_path_to_link" - AC_MSG_RESULT(found at $ac_find_libraries) - AC_MSG_CHECKING(for Xpm library) - AC_PATH_FIND_LIBRARIES($SEARCH_LIB,Xpm) - if test "$ac_find_libraries" != "" ; then - AC_LINK_PATH_EXIST($ac_find_libraries,$CHECK_LIB) - CHECK_LINK="$CHECK_LIB $ac_path_to_link" - AC_MSG_RESULT(found at $ac_find_libraries) - else - AC_MSG_ERROR(no) - fi - else - AC_MSG_ERROR(no) - fi - else - AC_MSG_ERROR(no) - fi - else - AC_MSG_ERROR(no) - fi - - GUI_TK_LINK="-lXm -lXpm -lXmu -lXt -lX11 -lm" - GUI_TK_LIBRARY="$CHECK_LIB $GUI_TK_LINK" - TOOLKIT=MOTIF - TOOLKIT_DEF="__WXMOTIF__ -D__LINUX__ -D__UNIX__" - WX_LINK=-lwx_motif2 - MAKEINCLUDE=../motif.inc -fi - -if test "$TOOLKIT" = ""; then - AC_MSG_ERROR(You must specify a toolkit: --with-gtk --with-qt --with-motif) -fi - -AC_SUBST(GUI_TK_INCLUDE) -AC_SUBST(GUI_TK_LIBRARY) -AC_SUBST(GUI_TK_LINK) - -AC_SUBST(WX_LINK) - -AC_SUBST(TOOLKIT) -AC_SUBST(TOOLKIT_DEF) - -AC_SUBST(MAKEINCLUDE) - -dnl ---------------------------------------------------------------- -dnl Register compile options for makefiles and setup.h -dnl ---------------------------------------------------------------- - -EXTRA_LINK= - -WXDEBUG= -if test "$wxUSE_DEBUG_GDB" = 1 ; then - wxUSE_DEBUG_INFO=1 - WXDEBUG="-ggdb" - wxUSE_OPTIMISE=0 -else - if test "$wxUSE_DEBUG_INFO" = 1 ; then - WXDEBUG="-g" - wxUSE_OPTIMISE=0 - else - EXTRA_LINK="-s $EXTRA_LINK" - fi -fi -AC_SUBST(WXDEBUG) - -if test "$wxUSE_DEBUG_FLAG" = 1 ; then - AC_DEFINE_UNQUOTED(WXDEBUG,$wxUSE_DEBUG_FLAG) - WXDEBUG_DEFINE="-D__WXDEBUG__" - AC_SUBST(WXDEBUG_DEFINE) -else - WXDEBUG_DEFINE="-DGTK_NO_CHECK_CASTS" - AC_SUBST(WXDEBUG_DEFINE) -fi - -if test "$wxUSE_MEM_TRACING" = 1 ; then - AC_DEFINE_UNQUOTED(wxUSE_MEMORY_TRACING,$wxUSE_MEM_TRACING) - AC_DEFINE_UNQUOTED(wxUSE_GLOBAL_MEMORY_OPERATORS,$wxUSE_MEM_TRACING) -fi - -if test "$wxUSE_DMALLOC" = 1 ; then - EXTRA_LINK="$EXTRA_LINK -ldmalloc" -fi -AC_SUBST(EXTRA_LINK) - -PROFILE= -if test "$wxUSE_PROFILE" = 1 ; then - PROFILE="-pg" -fi -AC_SUBST(PROFILE) - -CXXFLAGS=`echo "${CXXFLAGS}" | sed "s/\-O.//g" ` -CFLAGS=`echo "${CFLAGS}" | sed "s/\-O.//g" ` -if test "$wxUSE_OPTIMISE" = 0 ; then - OPTIMISE= -else - if test "$GCC" = yes ; then - OPTIMISE="-O2" - case "${canonical}" in - i586-*-*|i686-*-* ) - OPTIMISE="${OPTIMISE} " - ;; - esac - else - OPTIMISE="-O" - fi -fi -AC_SUBST(OPTIMISE) - -APPLE_IEEE=NONE -if test "$wxUSE_APPLE_IEEE" = 1 ; then - APPLE_IEEE="APPLE_IEEE" - AC_DEFINE_UNQUOTED(wxUSE_APPLE_IEEE,$wxUSE_APPLE_IEEE) -fi - -wxUSE_IOSTREAMH=$DEFAULT_wxUSE_IOSTREAMH -AC_DEFINE_UNQUOTED(wxUSE_IOSTREAMH,$wxUSE_IOSTREAMH) - -dnl ---------------------------------------------------------------- -dnl Register library options for makefiles and setup.h -dnl ---------------------------------------------------------------- - -if test "$wxUSE_ZLIB" = 1 ; then - AC_DEFINE_UNQUOTED(wxUSE_ZLIB,$wxUSE_ZLIB) - Z_C_SRC="\$(Z_C_SRC)" -fi -AC_SUBST(Z_C_SRC) - -if test "$wxUSE_LIBPNG" = 1 ; then - AC_DEFINE_UNQUOTED(wxUSE_LIBPNG,$wxUSE_LIBPNG) - PNG_C_SRC="\$(PNG_C_SRC)" -fi -AC_SUBST(PNG_C_SRC) - -IODBC_C_SRC="" -if test "$wxUSE_ODBC" = 1 ; then - AC_DEFINE_UNQUOTED(wxUSE_ODBC,$wxUSE_ODBC) - IODBC_C_SRC="\$(IODBC_C_SRC)" -fi -AC_SUBST(IODBC_C_SRC) - -dnl ---------------------------------------------------------------- -dnl Register non-GUI class options for makefiles and setup.h -dnl ---------------------------------------------------------------- - -if test "$wxUSE_CONFIG" = 1 ; then - AC_DEFINE_UNQUOTED(wxUSE_CONFIG,$wxUSE_CONFIG) -fi - -if test "$wxUSE_TIMEDATE" = 1 ; then - AC_DEFINE_UNQUOTED(wxUSE_TIMEDATE,$wxUSE_TIMEDATE) -fi - -if test "$wxUSE_INTL" = 1 ; then - AC_DEFINE_UNQUOTED(wxUSE_INTL,$wxUSE_INTL) -fi - -if test "$wxUSE_STREAMS" = 1 ; then - AC_DEFINE_UNQUOTED(wxUSE_STREAMS,$wxUSE_STREAMS) -fi - -if test "$wxUSE_SERIAL" = 1 ; then - AC_DEFINE_UNQUOTED(wxUSE_SERIAL,$wxUSE_SERIAL) -fi - -dnl ---------------------------------------------------------------- -dnl Register Prolog and Resources options for makefiles and setup.h -dnl ---------------------------------------------------------------- - -if test "$wxUSE_RPC" = 1 ; then - AC_DEFINE_UNQUOTED(wxUSE_RPC,$wxUSE_RPC) -fi - -if test "$wxUSE_WX_RESOURCES" = 1 ; then - AC_DEFINE_UNQUOTED(wxUSE_WX_RESOURCES,$wxUSE_WX_RESOURCES) -fi - -if test "$wxUSE_PROLOGIO" = 1 ; then - AC_DEFINE_UNQUOTED(wxUSE_PROLOGIO) -fi - -dnl ---------------------------------------------------------------- -dnl Register PostScript options for makefiles and setup.h -dnl ---------------------------------------------------------------- - -if test "$wxUSE_POSTSCRIPT" = 1 ; then - AC_DEFINE_UNQUOTED(wxUSE_POSTSCRIPT) -fi - -AC_DEFINE_UNQUOTED(wxUSE_AFM_FOR_POSTSCRIPT,$wxUSE_AFM_FOR_POSTSCRIPT) - -AC_DEFINE_UNQUOTED(WX_NORMALIZED_PS_FONTS,$WX_NORMALIZED_PS_FONTS) - -dnl ---------------------------------------------------------------- -dnl Register architecture options for makefiles and setup.h -dnl ---------------------------------------------------------------- - -if test "$wxUSE_MDI_ARCHITECTURE" = 1 ; then - AC_DEFINE_UNQUOTED(wxUSE_MDI_ARCHITECTURE,$wxUSE_MDI_ARCHITECTURE) -fi - -if test "$wxUSE_DOC_VIEW_ARCHITECTURE" = 1 ; then - AC_DEFINE_UNQUOTED(wxUSE_DOC_VIEW_ARCHITECTURE,$wxUSE_DOC_VIEW_ARCHITECTURE) -fi - -if test "$wxUSE_PRINTING_ARCHITECTURE" = 1 ; then - AC_DEFINE_UNQUOTED(wxUSE_PRINTING_ARCHITECTURE,$wxUSE_PRINTING_ARCHITECTURE) -fi - -dnl ---------------------------------------------------------------- -dnl Register wxString options for makefiles and setup.h -dnl ---------------------------------------------------------------- - -if test "$wxUSE_UNICODE" = 1 ; then - AC_DEFINE_UNQUOTED(wxUSE_UNICODE) -fi - -if test "$wxUSE_WCSRTOMBS" = 1 ; then - AC_DEFINE_UNQUOTED(wxUSE_WCSRTOMBS) -fi - -dnl ---------------------------------------------------------------- -dnl Register misc options for makefiles and setup.h -dnl ---------------------------------------------------------------- - -if test "$wxUSE_IPC" = 1 ; then - AC_DEFINE_UNQUOTED(wxUSE_IPC) -fi - -if test "$wxUSE_RESOURCES" = 1 ; then - AC_DEFINE_UNQUOTED(wxUSE_RESOURCES,$wxUSE_RESOURCES) -fi - -if test "$wxUSE_CLIPBOARD" = 1 ; then - AC_DEFINE_UNQUOTED(wxUSE_CLIPBOARD,$wxUSE_CLIPBOARD) -fi - -if test "$wxUSE_DRAG_AND_DROP" = 1 ; then - AC_DEFINE_UNQUOTED(wxUSE_DRAG_AND_DROP,$wxUSE_DRAG_AND_DROP) -fi - -dnl ---------------------------------------------------------------- -dnl No effect yet -dnl ---------------------------------------------------------------- - -HELP=NONE -if test "$wxUSE_HELP" = 1 ; then - HELP="HELP" - AC_DEFINE_UNQUOTED(wxUSE_HELP,$wxUSE_HELP) -fi -AC_SUBST(HELP) - -dnl ---------------------------------------------------------------- -dnl thread support -dnl ---------------------------------------------------------------- - -THREADS_LINK="" -UNIX_THREAD="" - -if test "$wxUSE_THREADS" = "1"; then - - dnl For glibc 2 users who have the old libc 5 too - - AC_CHECK_LIB(pthread-0.7, pthread_create, [ - UNIX_THREAD="gtk/threadpsx.cpp" - THREADS_LINK="-lpthread-0.7" - ],[ - AC_CHECK_HEADER(sys/prctl.h, [ - UNIX_THREAD="gtk/threadsgi.cpp" - ]) - - dnl pthread_create is always available in pthread but it seems not to be - dnl the case for pthread_setcanceltype. - - AC_CHECK_LIB(pthread, pthread_setcanceltype, [ - UNIX_THREAD="gtk/threadpsx.cpp" - THREADS_LINK="-lpthread" - ]) - ]) - - if test "$THREADS_LINK" != ""; then - AC_DEFINE(wxUSE_THREADS) - fi - - dnl -lposix4 seems to be required on Solaris - - AC_CHECK_LIB(posix4, printf, [ - THREADS_LINK="$THREADS_LINK -lposix4" - ]) - -fi - -if test "$wxUSE_MOTIF" = "1"; then - UNIX_THREAD="motif/thread.cpp" -fi - -if test -z "$UNIX_THREAD"; then - wxUSE_THREADS=0 -fi - -AC_SUBST(UNIX_THREAD) -AC_SUBST(THREADS_LINK) - -dnl defines UNIX_THREAD it contains the source file to use for threads. (GL) -dnl defines THREADS_LINK it contains the thread library to link with. (GL) -dnl defines wxUSE_THREADS if thread support is activated. (GL) - -dnl ------------------------------------------------------------------------ -dnl compiler options for shared libs -dnl ------------------------------------------------------------------------ - -PICFLAGS= -CREATE_SHARED= -case "${canonical}" in - - *-hp-hpux* ) - if test "$GCC" != "yes" ; then - CXXFLAGS="${CXXFLAGS} +a1 -z -Aa -D_HPUX_SOURCE" - CFLAGS="${CFLAGS} -z -D_HPUX_SOURCE" - PICFLAGS="+z" - else - PICFLAGS="-fPIC" - fi - LDFLAGS="-Wl,+s" - CREATE_SHARED=sharedHpux - ;; - - *-*-linux* ) - PICFLAGS=-fPIC - CREATE_SHARED=sharedLinux - ;; - - *-*-irix5* | *-*-irix6* ) - # PICFLAGS can remain empty, as pic is the default - LDFLAGS="-Wl,+s" - CREATE_SHARED=sharedIrix - AC_DEFINE(SVR4) - ;; - - *-*-solaris2* ) - if test "$GCC" != "yes" ; then - PICFLAGS="-KPIC" - else - PICFLAGS="-fPIC" - fi - CREATE_SHARED=sharedSolaris2 - AC_DEFINE(SVR4) - ;; - - *-*-sunos4* ) - if test "$GCC" != "yes" ; then - PICFLAGS="-PIC" - else - PICFLAGS="-fPIC" - fi - LDFLAGS="-Wl,+s" - CREATE_SHARED=sharedSunos4 - AC_DEFINE(BSD) - ;; - - *-*-freebsd* | *-*-netbsd*) - PICFLAGS=-fPIC - CREATE_SHARED=sharedBsd - AC_DEFINE(BSD) - ;; - - *-*-osf* ) - PICFLAGS="-fPIC" - CREATE_SHARED=sharedOSF - ;; - - *-*-dgux5* ) - if test "$GCC" != "yes" ; then - PICFLAGS="-K PIC" - else - PICFLAGS="-fPIC" - fi - CREATE_SHARED=sharedDgux - AC_DEFINE(SVR4) - ;; - - *-*-sysv5* ) - if test "$GCC" != "yes" ; then - PICFLAGS="-K PIC" - else - PICFLAGS="-fPIC" - fi - CREATE_SHARED=sharedSysV - AC_DEFINE(SVR4) - ;; - - *-*-aix* ) - if test "$GCC" != "yes" ; then - PICFLAGS="-bM\:SRE" - else - PICFLAGS="-fPIC" - fi - CREATE_SHARED=sharedAIX - AC_DEFINE(SYSV) - ;; - - *) - CREATE_SHARED= - PICFLAGS= -esac - -if test "x$GCC" = xyes; then - CFLAGS="${CFLAGS} -Wall -Wno-unused -Wno-uninitialized -D_REENTRANT -DLEX_SCANNER -DHAVE_LIBDL" -fi - -if test "x$GXX" = xyes; then - if test "$wxUSE_MOTIF" = 1; then - CXXFLAGS="${CXXFLAGS} -Wall -Wno-unused -D_REENTRANT" - else - CXXFLAGS="${CXXFLAGS} -Wall -D_REENTRANT" - fi -fi - -if test "$wxUSE_SHARED" != 1; then - CREATE_SHARED= - PICFLAGS= -fi - -AC_SUBST(OS) -AC_SUBST(PICFLAGS) -AC_SUBST(CREATE_SHARED) - -dnl ------------------------------------------------------------------------ -dnl finish and clean-up -dnl ------------------------------------------------------------------------ - -dnl add OS to list of configured -echo $OS >> system.list - -AC_CONFIG_HEADER(./include/wx/gtk/setup.h:./setup/setup.hin) -AC_OUTPUT(./setup/substit ./wx-config:./wx-config.in,./setup/general/createall) - -AC_OVERRIDES_DONE diff --git a/distrib/gtk/copy_src b/distrib/gtk/copy_src deleted file mode 100755 index 96ac5653e2..0000000000 --- a/distrib/gtk/copy_src +++ /dev/null @@ -1,662 +0,0 @@ -#! /bin/sh -# -# This script is creates a dir tree in ~/wxgtk_dist which -# can then be packed into an archive - -echo This script will copy the wxGTK release files into ~/wxgtk_dist - -mkdir ~/wxgtk_dist -mkdir ~/wxgtk_dist/wxGTK - -echo Base dir.. - -cd ../.. -cp wxGTK.spec ~/wxgtk_dist/wxGTK -cp Makefile ~/wxgtk_dist/wxGTK -cp configure ~/wxgtk_dist/wxGTK -cp configure.in ~/wxgtk_dist/wxGTK -cp config.sub ~/wxgtk_dist/wxGTK -cp config.guess ~/wxgtk_dist/wxGTK -cp install-sh ~/wxgtk_dist/wxGTK -cp mkinstalldirs ~/wxgtk_dist/wxGTK -cp template.mak ~/wxgtk_dist/wxGTK -cp wx-config.in ~/wxgtk_dist/wxGTK - -echo Docs.. - -cd docs/gtk -cp COPYING.LIB ~/wxgtk_dist/wxGTK -cp install.txt ~/wxgtk_dist/wxGTK/INSTALL.txt -cp licence.txt ~/wxgtk_dist/wxGTK/LICENCE.txt -cp readme.txt ~/wxgtk_dist/wxGTK/README.txt -cp todo.txt ~/wxgtk_dist/wxGTK/TODO.txt -cd .. -cp symbols.txt ~/wxgtk_dist/wxGTK/SYMBOLS.txt -cd .. - -echo Include dir.. - -mkdir ~/wxgtk_dist/wxGTK/include -cd include -cp install-sh ~/wxgtk_dist/wxGTK/include - -mkdir ~/wxgtk_dist/wxGTK/include/wx -cd wx -cp install-sh ~/wxgtk_dist/wxGTK/include/wx -cp *.h ~/wxgtk_dist/wxGTK/include/wx -cp *.cpp ~/wxgtk_dist/wxGTK/include/wx - -mkdir ~/wxgtk_dist/wxGTK/include/wx/generic -cd generic -cp *.h ~/wxgtk_dist/wxGTK/include/wx/generic -cd .. - -mkdir ~/wxgtk_dist/wxGTK/include/wx/gtk -cd gtk -cp *.h ~/wxgtk_dist/wxGTK/include/wx/gtk -rm ~/wxgtk_dist/wxGTK/include/wx/gtk/setup.h -cd .. - -mkdir ~/wxgtk_dist/wxGTK/include/wx/protocol -cd protocol -cp *.h ~/wxgtk_dist/wxGTK/include/wx/protocol -cd .. - -cd .. -cd .. - -echo Base lib.. - -mkdir ~/wxgtk_dist/wxGTK/lib -cp ./lib/dummy ~/wxgtk_dist/wxGTK/lib - -echo Misc dir.. - -mkdir ~/wxgtk_dist/wxGTK/misc -mkdir ~/wxgtk_dist/wxGTK/misc/afm -mkdir ~/wxgtk_dist/wxGTK/misc/gs_afm - -cp ./misc/afm/*.afm ~/wxgtk_dist/wxGTK/misc/afm -cp ./misc/gs_afm/*.afm ~/wxgtk_dist/wxGTK/misc/gs_afm - -echo Setup dir.. - -cd setup -mkdir ~/wxgtk_dist/wxGTK/setup -cp maketmpl.in ~/wxgtk_dist/wxGTK/setup -cp setup.hin ~/wxgtk_dist/wxGTK/setup -cp substit.in ~/wxgtk_dist/wxGTK/setup - -cd general -mkdir ~/wxgtk_dist/wxGTK/setup/general -cp createall ~/wxgtk_dist/wxGTK/setup/general -cp jointar ~/wxgtk_dist/wxGTK/setup/general -cp makeapp ~/wxgtk_dist/wxGTK/setup/general -cp makedirs ~/wxgtk_dist/wxGTK/setup/general -cp makedoc ~/wxgtk_dist/wxGTK/setup/general -cp mygrep ~/wxgtk_dist/wxGTK/setup/general -cp needed ~/wxgtk_dist/wxGTK/setup/general -cd .. - -cd rules -mkdir ~/wxgtk_dist/wxGTK/setup/rules -cp * ~/wxgtk_dist/wxGTK/setup/rules - -cd generic -mkdir ~/wxgtk_dist/wxGTK/setup/rules/generic -cp * ~/wxgtk_dist/wxGTK/setup/rules/generic -cd .. - -cd .. - -cd shared -mkdir ~/wxgtk_dist/wxGTK/setup/shared -cp * ~/wxgtk_dist/wxGTK/setup/shared -cd .. - -cd .. - -echo User dir.. - -cd src -mkdir ~/wxgtk_dist/wxGTK/user -cp Makefile ~/wxgtk_dist/wxGTK/user -cd .. - -echo Src dir.. - -cd src -mkdir ~/wxgtk_dist/wxGTK/src -cp Makefile ~/wxgtk_dist/wxGTK/src -cp Makefile.in ~/wxgtk_dist/wxGTK/src -cp gtk.inc ~/wxgtk_dist/wxGTK/src - -cd common -mkdir ~/wxgtk_dist/wxGTK/src/common -cp glob.inc ~/wxgtk_dist/wxGTK/src/common -cp lexer.l ~/wxgtk_dist/wxGTK/src/common -cp parser.y ~/wxgtk_dist/wxGTK/src/common -cp y_tab.c ~/wxgtk_dist/wxGTK/src/common -cp extended.c ~/wxgtk_dist/wxGTK/src/common -cp *.cpp ~/wxgtk_dist/wxGTK/src/common -cd .. - -cd gtk -mkdir ~/wxgtk_dist/wxGTK/src/gtk -cp *.xbm ~/wxgtk_dist/wxGTK/src/gtk -cp *.c ~/wxgtk_dist/wxGTK/src/gtk -cp *.inc ~/wxgtk_dist/wxGTK/src/gtk -cp *.cpp ~/wxgtk_dist/wxGTK/src/gtk -cd .. - -cd generic -mkdir ~/wxgtk_dist/wxGTK/src/generic -cp *.cpp ~/wxgtk_dist/wxGTK/src/generic -cd .. - -cd iodbc -mkdir ~/wxgtk_dist/wxGTK/src/iodbc -cp * ~/wxgtk_dist/wxGTK/src/iodbc -cd .. - -cd zlib -mkdir ~/wxgtk_dist/wxGTK/src/zlib -cp * ~/wxgtk_dist/wxGTK/src/zlib -cd .. - -cd png -mkdir ~/wxgtk_dist/wxGTK/src/png -cp * ~/wxgtk_dist/wxGTK/src/png -cd .. - -cd .. - -echo Utils dir.. - -cd utils -mkdir ~/wxgtk_dist/wxGTK/utils -cp Makefile ~/wxgtk_dist/wxGTK/utils - -cd glcanvas -mkdir ~/wxgtk_dist/wxGTK/utils/glcanvas -cp ./docs/notes.txt ~/wxgtk_dist/wxGTK/utils/glcanvas/NOTES.txt - -mkdir ~/wxgtk_dist/wxGTK/utils/glcanvas/gtk -cp ./gtk/glcanvas.cpp ~/wxgtk_dist/wxGTK/utils/glcanvas/gtk -cp ./gtk/glcanvas.h ~/wxgtk_dist/wxGTK/utils/glcanvas/gtk - -mkdir ~/wxgtk_dist/wxGTK/utils/glcanvas/samples -mkdir ~/wxgtk_dist/wxGTK/utils/glcanvas/samples/cube -mkdir ~/wxgtk_dist/wxGTK/utils/glcanvas/samples/penguin - -cd samples/cube -cp Makefile ~/wxgtk_dist/wxGTK/utils/glcanvas/samples/cube -cp cube.h ~/wxgtk_dist/wxGTK/utils/glcanvas/samples/cube -cp cube.cpp ~/wxgtk_dist/wxGTK/utils/glcanvas/samples/cube -cd .. - -cd penguin -cp Makefile ~/wxgtk_dist/wxGTK/utils/glcanvas/samples/penguin -cp penguin.h ~/wxgtk_dist/wxGTK/utils/glcanvas/samples/penguin -cp penguin.cpp ~/wxgtk_dist/wxGTK/utils/glcanvas/samples/penguin -cp trackball.h ~/wxgtk_dist/wxGTK/utils/glcanvas/samples/penguin -cp trackball.c ~/wxgtk_dist/wxGTK/utils/glcanvas/samples/penguin -cp lw.h ~/wxgtk_dist/wxGTK/utils/glcanvas/samples/penguin -cp lw.cpp ~/wxgtk_dist/wxGTK/utils/glcanvas/samples/penguin -cp penguin.lwo ~/wxgtk_dist/wxGTK/utils/glcanvas/samples/penguin -cd ../../.. - -cd dialoged/src -mkdir ~/wxgtk_dist/wxGTK/utils/dialoged -cp Makefile ~/wxgtk_dist/wxGTK/utils/dialoged -cp dialoged.cpp ~/wxgtk_dist/wxGTK/utils/dialoged -cp dlghndlr.cpp ~/wxgtk_dist/wxGTK/utils/dialoged -cp edlist.cpp ~/wxgtk_dist/wxGTK/utils/dialoged -cp edtree.cpp ~/wxgtk_dist/wxGTK/utils/dialoged -cp reseditr.cpp ~/wxgtk_dist/wxGTK/utils/dialoged -cp reswrite.cpp ~/wxgtk_dist/wxGTK/utils/dialoged -cp symbtabl.cpp ~/wxgtk_dist/wxGTK/utils/dialoged -cp winprop.cpp ~/wxgtk_dist/wxGTK/utils/dialoged -cp winstyle.cpp ~/wxgtk_dist/wxGTK/utils/dialoged -cp dialoged.h ~/wxgtk_dist/wxGTK/utils/dialoged -cp dlghndlr.h ~/wxgtk_dist/wxGTK/utils/dialoged -cp edlist.h ~/wxgtk_dist/wxGTK/utils/dialoged -cp edtree.h ~/wxgtk_dist/wxGTK/utils/dialoged -cp reseditr.h ~/wxgtk_dist/wxGTK/utils/dialoged -cp symbtabl.h ~/wxgtk_dist/wxGTK/utils/dialoged -cp winprop.h ~/wxgtk_dist/wxGTK/utils/dialoged -cp winstyle.h ~/wxgtk_dist/wxGTK/utils/dialoged - -cd bitmaps -mkdir ~/wxgtk_dist/wxGTK/utils/dialoged/bitmaps -cp *.xpm ~/wxgtk_dist/wxGTK/utils/dialoged/bitmaps -cd ../../../.. - -echo Samples dir.. - -cd samples -mkdir ~/wxgtk_dist/wxGTK/samples -cp Makefile ~/wxgtk_dist/wxGTK/samples - -echo Minimal sample.. - -cd minimal -mkdir ~/wxgtk_dist/wxGTK/samples/minimal -cp Makefile ~/wxgtk_dist/wxGTK/samples/minimal -cp Makefile.in ~/wxgtk_dist/wxGTK/samples/minimal -cp minimal.cpp ~/wxgtk_dist/wxGTK/samples/minimal -cp mondrian.xpm ~/wxgtk_dist/wxGTK/samples/minimal -cd .. - -echo Bombs sample.. - -cd bombs -mkdir ~/wxgtk_dist/wxGTK/samples/bombs -cp Makefile ~/wxgtk_dist/wxGTK/samples/bombs -cp Makefile.in ~/wxgtk_dist/wxGTK/samples/bombs -cp *.cpp ~/wxgtk_dist/wxGTK/samples/bombs -cp *.h ~/wxgtk_dist/wxGTK/samples/bombs -cp *.xpm ~/wxgtk_dist/wxGTK/samples/bombs -cd .. - -echo Checklst sample.. - -cd checklst -mkdir ~/wxgtk_dist/wxGTK/samples/checklst -cp Makefile ~/wxgtk_dist/wxGTK/samples/checklst -cp Makefile.in ~/wxgtk_dist/wxGTK/samples/checklst -cp *.cpp ~/wxgtk_dist/wxGTK/samples/checklst -cp *.xpm ~/wxgtk_dist/wxGTK/samples/checklst -cd .. - -echo Config sample.. - -cd config -mkdir ~/wxgtk_dist/wxGTK/samples/config -cp Makefile ~/wxgtk_dist/wxGTK/samples/config -cp Makefile.in ~/wxgtk_dist/wxGTK/samples/config -cp *.cpp ~/wxgtk_dist/wxGTK/samples/config -cd .. - -echo Controls sample.. - -cd controls -mkdir ~/wxgtk_dist/wxGTK/samples/controls -cp Makefile ~/wxgtk_dist/wxGTK/samples/controls -cp Makefile.in ~/wxgtk_dist/wxGTK/samples/controls -cp *.cpp ~/wxgtk_dist/wxGTK/samples/controls -cp *.xpm ~/wxgtk_dist/wxGTK/samples/controls -cd icons -mkdir ~/wxgtk_dist/wxGTK/samples/controls/icons -cp *.xpm ~/wxgtk_dist/wxGTK/samples/controls/icons -cd ../.. - -echo Db sample.. - -cd db -mkdir ~/wxgtk_dist/wxGTK/samples/db -cp Makefile ~/wxgtk_dist/wxGTK/samples/db -cp Makefile.in ~/wxgtk_dist/wxGTK/samples/db -cp *.cpp ~/wxgtk_dist/wxGTK/samples/db -cp *.h ~/wxgtk_dist/wxGTK/samples/db -cp *.xpm ~/wxgtk_dist/wxGTK/samples/db -cd .. - -echo DDE sample.. - -cd dde -mkdir ~/wxgtk_dist/wxGTK/samples/dde -cp Makefile ~/wxgtk_dist/wxGTK/samples/dde -cp Makefile.in ~/wxgtk_dist/wxGTK/samples/dde -cp *.cpp ~/wxgtk_dist/wxGTK/samples/dde -cp *.h ~/wxgtk_dist/wxGTK/samples/dde -cp *.xpm ~/wxgtk_dist/wxGTK/samples/dde -cd .. - -echo Dialogs sample.. - -cd dialogs -mkdir ~/wxgtk_dist/wxGTK/samples/dialogs -cp Makefile ~/wxgtk_dist/wxGTK/samples/dialogs -cp Makefile.in ~/wxgtk_dist/wxGTK/samples/dialogs -cp *.cpp ~/wxgtk_dist/wxGTK/samples/dialogs -cp *.h ~/wxgtk_dist/wxGTK/samples/dialogs -cd .. - -echo DnD sample.. - -cd dnd -mkdir ~/wxgtk_dist/wxGTK/samples/dnd -cp Makefile ~/wxgtk_dist/wxGTK/samples/dnd -cp Makefile.in ~/wxgtk_dist/wxGTK/samples/dnd -cp *.cpp ~/wxgtk_dist/wxGTK/samples/dnd -cp *.xpm ~/wxgtk_dist/wxGTK/samples/dnd -cd .. - -echo Docview sample.. - -cd docview -mkdir ~/wxgtk_dist/wxGTK/samples/docview -cp Makefile ~/wxgtk_dist/wxGTK/samples/docview -cp Makefile.in ~/wxgtk_dist/wxGTK/samples/docview -cp *.cpp ~/wxgtk_dist/wxGTK/samples/docview -cp *.h ~/wxgtk_dist/wxGTK/samples/docview -cp *.xpm ~/wxgtk_dist/wxGTK/samples/docview -cd .. - -echo DocvwMDI sample.. - -cd docvwmdi -mkdir ~/wxgtk_dist/wxGTK/samples/docvwmdi -cp Makefile ~/wxgtk_dist/wxGTK/samples/docvwmdi -cp Makefile.in ~/wxgtk_dist/wxGTK/samples/docvwmdi -cp *.cpp ~/wxgtk_dist/wxGTK/samples/docvwmdi -cp *.h ~/wxgtk_dist/wxGTK/samples/docvwmdi -cd .. - -echo Dynamic sample.. - -cd dynamic -mkdir ~/wxgtk_dist/wxGTK/samples/dynamic -cp Makefile ~/wxgtk_dist/wxGTK/samples/dynamic -cp Makefile.in ~/wxgtk_dist/wxGTK/samples/dynamic -cp *.cpp ~/wxgtk_dist/wxGTK/samples/dynamic -cp *.xpm ~/wxgtk_dist/wxGTK/samples/dynamic -cd .. - -echo Forty sample.. - -cd forty -mkdir ~/wxgtk_dist/wxGTK/samples/forty -cp Makefile ~/wxgtk_dist/wxGTK/samples/forty -cp Makefile.in ~/wxgtk_dist/wxGTK/samples/forty -cp *.cpp ~/wxgtk_dist/wxGTK/samples/forty -cp *.h ~/wxgtk_dist/wxGTK/samples/forty -cp *.xpm ~/wxgtk_dist/wxGTK/samples/forty -cp *.xbm ~/wxgtk_dist/wxGTK/samples/forty -cd .. - -echo Fractal sample.. - -cd fractal -mkdir ~/wxgtk_dist/wxGTK/samples/fractal -cp Makefile ~/wxgtk_dist/wxGTK/samples/fractal -cp Makefile.in ~/wxgtk_dist/wxGTK/samples/fractal -cp *.cpp ~/wxgtk_dist/wxGTK/samples/fractal -cd .. - -echo Grid sample.. - -cd grid -mkdir ~/wxgtk_dist/wxGTK/samples/grid -cp Makefile ~/wxgtk_dist/wxGTK/samples/grid -cp Makefile.in ~/wxgtk_dist/wxGTK/samples/grid -cp *.cpp ~/wxgtk_dist/wxGTK/samples/grid -cd .. - -echo Help sample.. - -cd help -mkdir ~/wxgtk_dist/wxGTK/samples/help -cp Makefile ~/wxgtk_dist/wxGTK/samples/help -cp Makefile.in ~/wxgtk_dist/wxGTK/samples/help -cp *.cpp ~/wxgtk_dist/wxGTK/samples/help -cp *.xpm ~/wxgtk_dist/wxGTK/samples/help -cd doc -mkdir ~/wxgtk_dist/wxGTK/samples/help/doc -cp * ~/wxgtk_dist/wxGTK/samples/help/doc -cd ../.. - -echo Image sample.. - -cd image -mkdir ~/wxgtk_dist/wxGTK/samples/image -cp Makefile ~/wxgtk_dist/wxGTK/samples/image -cp Makefile.in ~/wxgtk_dist/wxGTK/samples/image -cp *.cpp ~/wxgtk_dist/wxGTK/samples/image -cp horse.png ~/wxgtk_dist/wxGTK/samples/image -cd .. - -echo Internat sample.. - -cd internat -mkdir ~/wxgtk_dist/wxGTK/samples/internat -cp Makefile ~/wxgtk_dist/wxGTK/samples/internat -cp Makefile.in ~/wxgtk_dist/wxGTK/samples/internat -cp *.cpp ~/wxgtk_dist/wxGTK/samples/internat -cp *.xpm ~/wxgtk_dist/wxGTK/samples/internat -cp readme.txt ~/wxgtk_dist/wxGTK/samples/internat -cp wxstd.po ~/wxgtk_dist/wxGTK/samples/internat -cd fr -mkdir ~/wxgtk_dist/wxGTK/samples/internat/fr -cp *.?o ~/wxgtk_dist/wxGTK/samples/internat/fr -cd ../.. - -echo Layout sample.. - -cd layout -mkdir ~/wxgtk_dist/wxGTK/samples/layout -cp Makefile ~/wxgtk_dist/wxGTK/samples/layout -cp Makefile.in ~/wxgtk_dist/wxGTK/samples/layout -cp *.cpp ~/wxgtk_dist/wxGTK/samples/layout -cp *.h ~/wxgtk_dist/wxGTK/samples/layout -cd .. - -echo Listctrl sample.. - -cd listctrl -mkdir ~/wxgtk_dist/wxGTK/samples/listctrl -cp Makefile ~/wxgtk_dist/wxGTK/samples/listctrl -cp Makefile.in ~/wxgtk_dist/wxGTK/samples/listctrl -cp *.cpp ~/wxgtk_dist/wxGTK/samples/listctrl -cp *.h ~/wxgtk_dist/wxGTK/samples/listctrl -cp *.xpm ~/wxgtk_dist/wxGTK/samples/listctrl -cd bitmaps -mkdir ~/wxgtk_dist/wxGTK/samples/listctrl/bitmaps -cp *.xpm ~/wxgtk_dist/wxGTK/samples/listctrl/bitmaps -cd ../.. - -echo MDI sample.. - -cd mdi -mkdir ~/wxgtk_dist/wxGTK/samples/mdi -cp Makefile ~/wxgtk_dist/wxGTK/samples/mdi -cp Makefile.in ~/wxgtk_dist/wxGTK/samples/mdi -cp *.cpp ~/wxgtk_dist/wxGTK/samples/mdi -cp *.h ~/wxgtk_dist/wxGTK/samples/mdi -cp *.xpm ~/wxgtk_dist/wxGTK/samples/mdi -cd bitmaps -mkdir ~/wxgtk_dist/wxGTK/samples/mdi/bitmaps -cp *.xpm ~/wxgtk_dist/wxGTK/samples/mdi/bitmaps -cd ../.. - -echo Memcheck sample.. - -cd memcheck -mkdir ~/wxgtk_dist/wxGTK/samples/memcheck -cp Makefile ~/wxgtk_dist/wxGTK/samples/memcheck -cp Makefile.in ~/wxgtk_dist/wxGTK/samples/memcheck -cp *.cpp ~/wxgtk_dist/wxGTK/samples/memcheck -cp *.xpm ~/wxgtk_dist/wxGTK/samples/memcheck -cd .. - -echo Minifram sample.. - -cd minifram -mkdir ~/wxgtk_dist/wxGTK/samples/minifram -cp Makefile ~/wxgtk_dist/wxGTK/samples/minifram -cp Makefile.in ~/wxgtk_dist/wxGTK/samples/minifram -cp *.cpp ~/wxgtk_dist/wxGTK/samples/minifram -cp *.h ~/wxgtk_dist/wxGTK/samples/minifram -cp *.xpm ~/wxgtk_dist/wxGTK/samples/minifram -cd bitmaps -mkdir ~/wxgtk_dist/wxGTK/samples/minifram/bitmaps -cp *.xpm ~/wxgtk_dist/wxGTK/samples/minifram/bitmaps -cd ../.. - -echo Notebook sample.. - -cd notebook -mkdir ~/wxgtk_dist/wxGTK/samples/notebook -cp Makefile ~/wxgtk_dist/wxGTK/samples/notebook -cp Makefile.in ~/wxgtk_dist/wxGTK/samples/notebook -cp *.cpp ~/wxgtk_dist/wxGTK/samples/notebook -cp *.h ~/wxgtk_dist/wxGTK/samples/notebook -cd .. - -echo PNG sample.. - -cd png -mkdir ~/wxgtk_dist/wxGTK/samples/png -cp Makefile ~/wxgtk_dist/wxGTK/samples/png -cp Makefile.in ~/wxgtk_dist/wxGTK/samples/png -cp *.cpp ~/wxgtk_dist/wxGTK/samples/png -cp *.h ~/wxgtk_dist/wxGTK/samples/png -cp *.png ~/wxgtk_dist/wxGTK/samples/png -cd .. - -echo Printing sample.. - -cd printing -mkdir ~/wxgtk_dist/wxGTK/samples/printing -cp Makefile ~/wxgtk_dist/wxGTK/samples/printing -cp Makefile.in ~/wxgtk_dist/wxGTK/samples/printing -cp *.cpp ~/wxgtk_dist/wxGTK/samples/printing -cp *.h ~/wxgtk_dist/wxGTK/samples/printing -cp *.xpm ~/wxgtk_dist/wxGTK/samples/printing -cd .. - -echo Proplist sample.. - -cd proplist -mkdir ~/wxgtk_dist/wxGTK/samples/proplist -cp Makefile ~/wxgtk_dist/wxGTK/samples/proplist -cp Makefile.in ~/wxgtk_dist/wxGTK/samples/proplist -cp *.cpp ~/wxgtk_dist/wxGTK/samples/proplist -cp *.h ~/wxgtk_dist/wxGTK/samples/proplist -cd .. - -echo Resource sample.. - -cd resource -mkdir ~/wxgtk_dist/wxGTK/samples/resource -cp Makefile ~/wxgtk_dist/wxGTK/samples/resource -cp Makefile.in ~/wxgtk_dist/wxGTK/samples/resource -cp *.cpp ~/wxgtk_dist/wxGTK/samples/resource -cp *.h ~/wxgtk_dist/wxGTK/samples/resource -cp *.wxr ~/wxgtk_dist/wxGTK/samples/resource -cd .. - -echo Sashtest sample.. - -cd sashtest -mkdir ~/wxgtk_dist/wxGTK/samples/sashtest -cp Makefile ~/wxgtk_dist/wxGTK/samples/sashtest -cp Makefile.in ~/wxgtk_dist/wxGTK/samples/sashtest -cp *.cpp ~/wxgtk_dist/wxGTK/samples/sashtest -cp *.h ~/wxgtk_dist/wxGTK/samples/sashtest -cd .. - -echo Splitter sample.. - -cd splitter -mkdir ~/wxgtk_dist/wxGTK/samples/splitter -cp Makefile ~/wxgtk_dist/wxGTK/samples/splitter -cp Makefile.in ~/wxgtk_dist/wxGTK/samples/splitter -cp *.cpp ~/wxgtk_dist/wxGTK/samples/splitter -cd .. - -echo Tab sample.. - -cd tab -mkdir ~/wxgtk_dist/wxGTK/samples/tab -cp Makefile ~/wxgtk_dist/wxGTK/samples/tab -cp Makefile.in ~/wxgtk_dist/wxGTK/samples/tab -cp *.cpp ~/wxgtk_dist/wxGTK/samples/tab -cp *.h ~/wxgtk_dist/wxGTK/samples/tab -cd .. - -echo Thread sample.. - -cd thread -mkdir ~/wxgtk_dist/wxGTK/samples/thread -cp Makefile ~/wxgtk_dist/wxGTK/samples/thread -cp Makefile.in ~/wxgtk_dist/wxGTK/samples/thread -cp *.cpp ~/wxgtk_dist/wxGTK/samples/thread -cd .. - -echo Toolbar sample.. - -cd toolbar -mkdir ~/wxgtk_dist/wxGTK/samples/toolbar -cp Makefile ~/wxgtk_dist/wxGTK/samples/toolbar -cp Makefile.in ~/wxgtk_dist/wxGTK/samples/toolbar -cp *.cpp ~/wxgtk_dist/wxGTK/samples/toolbar -cp *.h ~/wxgtk_dist/wxGTK/samples/toolbar -cp *.xpm ~/wxgtk_dist/wxGTK/samples/toolbar -cd bitmaps -mkdir ~/wxgtk_dist/wxGTK/samples/toolbar/bitmaps -cp *.xpm ~/wxgtk_dist/wxGTK/samples/toolbar/bitmaps -cd ../.. - -echo TreeCtrl sample.. - -cd treectrl -mkdir ~/wxgtk_dist/wxGTK/samples/treectrl -cp Makefile ~/wxgtk_dist/wxGTK/samples/treectrl -cp Makefile.in ~/wxgtk_dist/wxGTK/samples/treectrl -cp *.cpp ~/wxgtk_dist/wxGTK/samples/treectrl -cp *.h ~/wxgtk_dist/wxGTK/samples/treectrl -cp *.xpm ~/wxgtk_dist/wxGTK/samples/treectrl -cd .. - -echo typetest sample.. - -cd typetest -mkdir ~/wxgtk_dist/wxGTK/samples/typetest -cp Makefile ~/wxgtk_dist/wxGTK/samples/typetest -cp Makefile.in ~/wxgtk_dist/wxGTK/samples/typetest -cp *.cpp ~/wxgtk_dist/wxGTK/samples/typetest -cp *.h ~/wxgtk_dist/wxGTK/samples/typetest -cp *.xpm ~/wxgtk_dist/wxGTK/samples/typetest -cd .. - -echo Validate sample.. - -cd validate -mkdir ~/wxgtk_dist/wxGTK/samples/validate -cp Makefile ~/wxgtk_dist/wxGTK/samples/validate -cp Makefile.in ~/wxgtk_dist/wxGTK/samples/validate -cp *.cpp ~/wxgtk_dist/wxGTK/samples/validate -cp *.h ~/wxgtk_dist/wxGTK/samples/validate -cp *.xpm ~/wxgtk_dist/wxGTK/samples/validate -cd .. - -echo wxPoem sample.. - -cd wxpoem -mkdir ~/wxgtk_dist/wxGTK/samples/wxpoem -cp Makefile ~/wxgtk_dist/wxGTK/samples/wxpoem -cp Makefile.in ~/wxgtk_dist/wxGTK/samples/wxpoem -cp *.cpp ~/wxgtk_dist/wxGTK/samples/wxpoem -cp *.h ~/wxgtk_dist/wxGTK/samples/wxpoem -cp *.xpm ~/wxgtk_dist/wxGTK/samples/wxpoem -cp wxpoem.dat ~/wxgtk_dist/wxGTK/samples/wxpoem -cp wxpoem.txt ~/wxgtk_dist/wxGTK/samples/wxpoem -cp wxpoem.idx ~/wxgtk_dist/wxGTK/samples/wxpoem -cd .. - -echo wxSocket sample.. - -cd wxsocket -mkdir ~/wxgtk_dist/wxGTK/samples/wxsocket -cp Makefile ~/wxgtk_dist/wxGTK/samples/wxsocket -cp Makefile.in ~/wxgtk_dist/wxGTK/samples/wxsocket -cp *.cpp ~/wxgtk_dist/wxGTK/samples/wxsocket -cp *.xpm ~/wxgtk_dist/wxGTK/samples/wxsocket -cd .. - - - - - diff --git a/distrib/msw/cw.rsp b/distrib/msw/cw.rsp deleted file mode 100644 index d032bd9478..0000000000 --- a/distrib/msw/cw.rsp +++ /dev/null @@ -1,109 +0,0 @@ -src/make_cw.mcp -src/common/cwy_tab.c -src/common/cwlex_yy.c -include/wx_cw.pch -include/wx_cw.pch++ -include/wx_cw_d.pch -include/wx_cw_d.pch++ - -samples/bombs/make_cw.mcp - -samples/checklst/make_cw.mcp - -samples/config/make_cw.mcp - -samples/controls/make_cw.mcp - -samples/db/make_cw.mcp - -samples/dialogs/make_cw.mcp - -samples/dnd/make_cw.mcp - -samples/docview/make_cw.mcp - -samples/docvwmdi/make_cw.mcp - -samples/dynamic/make_cw.mcp - -samples/forty/make_cw.mcp - -samples/fractal/make_cw.mcp - -samples/grid/make_cw.mcp - -samples/help/make_cw.mcp - -samples/image/make_cw.mcp - -samples/internat/make_cw.mcp - -samples/joytest/make_cw.mcp - -samples/layout/make_cw.mcp - -samples/listctrl/make_cw.mcp - -samples/mdi/make_cw.mcp - -samples/memcheck/make_cw.mcp - -samples/mfc/make_cw.mcp - -samples/minimal/make_cw.mcp - -samples/minifram/make_cw.mcp - -samples/nativdlg/make_cw.mcp - -samples/notebook/make_cw.mcp - -samples/ownerdrw/make_cw.mcp - -samples/png/make_cw.mcp - -samples/printing/make_cw.mcp - -samples/proplist/make_cw.mcp - -samples/Regtest/make_cw.mcp - -samples/resource/make_cw.mcp - -samples/sashtest/make_cw.mcp - -samples/splitter/make_cw.mcp - -samples/tab/make_cw.mcp - -samples/taskbar/make_cw.mcp - -samples/thread/make_cw.mcp - -samples/toolbar/make_cw.mcp - -samples/treectrl/make_cw.mcp - -samples/typetest/make_cw.mcp - -samples/validate/make_cw.mcp - -samples/wxsocket/make_cw.mcp - -samples/wxpoem/make_cw.mcp - -utils/wxprop/src/make_cw.mcp -utils/wxprop/src/make_sample.mcp - -utils/dialoged/src/make_cw.mcp - -utils/glcanvas/win/make_cw.mcp -utils/glcanvas/samples/cube/make_cw.mcp -utils/glcanvas/samples/isosurf/make_cw.mcp - -utils/ogl/src/make_cw.mcp -utils/ogl/samples/ogledit/make_cw.mcp - -utils/wxtree/src/make_cw.mcp -utils/wxtree/src/make_cw.mcp - diff --git a/distrib/msw/docsrc.rsp b/distrib/msw/docsrc.rsp deleted file mode 100644 index d343f70080..0000000000 --- a/distrib/msw/docsrc.rsp +++ /dev/null @@ -1,97 +0,0 @@ -docs/latex/wx/*.tex -docs/latex/wx/*.sty -docs/latex/wx/*.bib -docs/latex/wx/*.hpj -docs/latex/wx/*.ini -docs/latex/wx/*.txt -docs/latex/wx/*.cnt -docs/latex/wx/*.eps -docs/latex/wx/*.bmp -docs/latex/wx/*.gif -docs/latex/wx/*.wmf - -docs/latex/proplist/*.tex -docs/latex/proplist/*.sty -docs/latex/proplist/*.bib -docs/latex/proplist/*.hpj -docs/latex/proplist/*.ini -docs/latex/proplist/*.txt -docs/latex/proplist/*.cnt -docs/latex/proplist/*.eps -docs/latex/proplist/*.bmp -docs/latex/proplist/*.gif -docs/latex/proplist/*.wmf - -docs/latex/porting/*.tex -docs/latex/porting/*.sty -docs/latex/porting/*.bib -docs/latex/porting/*.hpj -docs/latex/porting/*.ini -docs/latex/porting/*.txt -docs/latex/porting/*.cnt -docs/latex/porting/*.eps -docs/latex/porting/*.gif -docs/latex/porting/*.bmp - -utils/wxhelp/docs/*.tex -utils/wxhelp/docs/*.txt -utils/wxhelp/docs/*.hpj -utils/wxhelp/docs/*.ini -utils/wxhelp/docs/*.bmp -utils/wxhelp/docs/*.wmf -utils/wxhelp/docs/*.gif - -utils/tex2rtf/docs/*.tex -utils/tex2rtf/docs/*.txt -utils/tex2rtf/docs/*.hpj -utils/tex2rtf/docs/*.bib -utils/tex2rtf/docs/*.ini -utils/tex2rtf/docs/*.sty -utils/tex2rtf/docs/*.bmp -utils/tex2rtf/docs/*.shg -utils/tex2rtf/docs/*.wmf -utils/tex2rtf/docs/*.gif - -utils/wxtree/docs/*.tex -utils/wxtree/docs/*.ini -utils/wxtree/docs/*.bib -utils/wxtree/docs/*.txt -utils/wxtree/docs/*.hpj -utils/wxtree/docs/*.bmp -utils/wxtree/docs/*.wmf -utils/wxtree/docs/*.gif - -utils/wxgraph/docs/*.tex -utils/wxgraph/docs/*.ini -utils/wxgraph/docs/*.bib -utils/wxgraph/docs/*.txt -utils/wxgraph/docs/*.hpj -utils/wxgraph/docs/*.bmp -utils/wxgraph/docs/*.wmf -utils/wxgraph/docs/*.gif - -utils/mfutils/docs/*.tex -utils/mfutils/docs/*.txt -utils/mfutils/docs/*.hpj -utils/mfutils/docs/*.wmf -utils/mfutils/docs/*.bmp - -utils/wxprop/docs/*.txt -utils/wxprop/docs/*.hpj -utils/wxprop/docs/*.tex -utils/wxprop/docs/*.ini -utils/wxprop/docs/*.eps -utils/wxprop/docs/*.bmp -utils/wxprop/docs/*.wmf -utils/wxprop/docs/*.gif - -utils/dialoged/docs/*.txt -utils/dialoged/docs/*.hpj -utils/dialoged/docs/*.tex -utils/dialoged/docs/*.ini -utils/dialoged/docs/*.eps -utils/dialoged/docs/*.bmp -utils/dialoged/docs/*.wmf -utils/dialoged/docs/*.gif - - diff --git a/distrib/msw/generic.rsp b/distrib/msw/generic.rsp deleted file mode 100644 index 16d214d487..0000000000 --- a/distrib/msw/generic.rsp +++ /dev/null @@ -1,658 +0,0 @@ -distrib/msw/*.rsp -distrib/msw/*.bat - -docs/readme.txt -docs/install.txt -docs/release.txt -docs/changes.txt -docs/upgrade.txt -docs/todo.txt -docs/licence.txt -docs/symbols.txt -docs/bugs.txt -docs/*.htm -docs/html/*.htm -docs/html/*.gif - -src/*.inc -src/mkdir - -src/common/*.cpp -src/common/dosyacc.c -src/common/doslex.c -src/common/vmsyacc.c -src/common/vmslex.c -src/common/extended.c -src/common/*.l -src/common/*.y -src/common/*.inc - -src/generic/*.cpp -src/generic/*.c -src/generic/*.inc - -src/png/*.c -src/png/*.h -src/png/makefile* -src/png/INSTALL -src/png/CHANGES -src/png/README -src/png/TODO -src/png/*.1 -src/png/*.3 -src/png/*.5 -src/png/scripts/* - -src/zlib/*.c -src/zlib/*.h -src/zlib/INDEX -src/zlib/README -src/zlib/ChangeLog -src/zlib/configure -src/zlib/*.txt -src/zlib/makefile* -src/zlib/*.com -src/zlib/*.3 -src/zlib/*.mms - -include/wx/*.h -include/wx/*.cpp -include/wx/protocol/*.h -include/wx/wx_setup.vms -include/wx/common/*.h -include/wx/generic/*.h -lib/dummy - -bin/*.* - -tools/gettext/*.* - -bitmaps/xpm/16x16/*.* -bitmaps/xpm/32x32/*.* -bitmaps/xpm/64x64/*.* -bitmaps/xpm/misc/*.* -bitmaps/*.* -bitmaps/bmp/16x15/*.* -bitmaps/bmp/10x8/*.* -bitmaps/ico/32x32/*.* - -afm/*.* - -utils/*.txt -utils/make* - -utils/xpmshow/src/makefile* -utils/xpmshow/src/*.cpp -utils/xpmshow/src/*.h -utils/xpmshow/src/*.def -utils/xpmshow/src/*.rc -utils/xpmshow/src/*.xpm -utils/xpmshow/src/*.bmp -utils/xpmshow/src/*.ico - -utils/wxhelp/src/*.cpp -utils/wxhelp/src/*.h -utils/wxhelp/src/makefile* -utils/wxhelp/src/*.xbm -utils/wxhelp/src/*.xpm -utils/wxhelp/src/*.txt -utils/wxhelp/src/*.ico -utils/wxhelp/src/*.def -utils/wxhelp/src/*.rc - -utils/wxgraph/src/*.cpp -utils/wxgraph/src/*.c -utils/wxgraph/src/*.h -utils/wxgraph/src/makefile* -utils/wxgraph/src/*.xbm -utils/wxgraph/src/*.xpm -utils/wxgraph/lib/dummy -utils/wxgraph/src/*.ico -utils/wxgraph/src/*.def -utils/wxgraph/src/*.rc - -utils/rcparser/src/*.cpp -utils/rcparser/src/*.c -utils/rcparser/src/*.h -utils/rcparser/src/makefile* -utils/rcparser/src/*.xbm -utils/rcparser/src/*.xpm -utils/rcparser/lib/dummy -utils/rcparser/src/*.ico -utils/rcparser/src/*.def -utils/rcparser/src/*.rc -utils/rcparser/src/*.rh - -utils/colours/*.h -utils/colours/*.cpp -utils/colours/*.def -utils/colours/*.rc -utils/colours/makefile* -utils/colours/*.xbm -utils/colours/*.xpm -utils/colours/*.txt - -utils/serialize/*.h -utils/serialize/*.cpp -utils/serialize/*.def -utils/serialize/*.rc -utils/serialize/makefile* -utils/serialize/*.xbm -utils/serialize/*.xpm -utils/serialize/*.txt - -utils/dialoged/Makefile -utils/dialoged/src/bitmaps/*.xbm -utils/dialoged/src/bitmaps/*.xpm -utils/dialoged/src/*.h -utils/dialoged/src/*.cpp -utils/dialoged/src/*.def -utils/dialoged/src/*.rc -utils/dialoged/src/makefile* -utils/dialoged/src/*.xbm -utils/dialoged/src/*.xpm -utils/dialoged/src/*.txt -utils/dialoged/src/*.inf -utils/dialoged/test/*.h -utils/dialoged/src/*.ico -utils/dialoged/src/*.prj -utils/dialoged/src/*.bmp -utils/dialoged/src/bitmaps/*.bmp -utils/dialoged/src/bitmaps/*.ico -utils/dialoged/test/*.cpp -utils/dialoged/test/*.def -utils/dialoged/test/*.rc -utils/dialoged/test/makefile* -utils/dialoged/lib/dummy -utils/dialoged/test/*.ico -utils/dialoged/test/*.prj -utils/dialoged/test/*.bmp - -samples/*.txt -samples/makefile* - -samples/config/*.cpp -samples/config/*.h -samples/config/*.def -samples/config/makefile* -samples/config/*.xbm -samples/config/*.xpm -samples/config/*.txt -samples/config/*.ico -samples/config/*.bmp -samples/config/*.rc -samples/config/*.wav - -samples/dynamic/*.cpp -samples/dynamic/*.h -samples/dynamic/*.def -samples/dynamic/makefile* -samples/dynamic/*.xbm -samples/dynamic/*.xpm -samples/dynamic/*.txt -samples/dynamic/*.ico -samples/dynamic/*.bmp -samples/dynamic/*.rc -samples/dynamic/*.wav - -samples/wxsocket/*.cpp -samples/wxsocket/*.h -samples/wxsocket/*.def -samples/wxsocket/makefile* -samples/wxsocket/client.wat -samples/wxsocket/server.wat -samples/wxsocket/client.vc -samples/wxsocket/server.vc -samples/wxsocket/*.xbm -samples/wxsocket/*.xpm -samples/wxsocket/*.ico -samples/wxsocket/*.rc - -samples/help/*.cpp -samples/help/*.h -samples/help/*.def -samples/help/makefile* -samples/help/*.xbm -samples/help/*.xpm -samples/help/*.ico -samples/help/*.rc -samples/help/doc/*.html -samples/help/doc/*.htm -samples/help/doc/*.class -samples/help/doc/*.db -samples/help/doc/*.tex -samples/help/doc/*.gif -samples/help/doc/*.map - -samples/bombs/*.cpp -samples/bombs/*.h -samples/bombs/*.def -samples/bombs/makefile* -samples/bombs/*.xbm -samples/bombs/*.xpm -samples/bombs/*.txt -samples/bombs/*.ico -samples/bombs/*.bmp -samples/bombs/*.rc - -samples/ipc/*.cpp -samples/ipc/*.h -samples/ipc/*.def -samples/ipc/makefile* -samples/ipc/*.xbm -samples/ipc/*.xpm -samples/ipc/*.ico -samples/ipc/*.rc - -samples/typetest/*.cpp -samples/typetest/*.h -samples/typetest/*.def -samples/typetest/*.rc -samples/typetest/*.txt -samples/typetest/makefile* -samples/typetest/*.xbm -samples/typetest/*.xpm -samples/typetest/*.ico - -samples/sashtest/*.cpp -samples/sashtest/*.h -samples/sashtest/*.def -samples/sashtest/*.rc -samples/sashtest/*.txt -samples/sashtest/makefile* -samples/sashtest/*.xbm -samples/sashtest/*.xpm -samples/sashtest/*.ico - -samples/resource/*.cpp -samples/resource/*.h -samples/resource/*.def -samples/resource/*.rc -samples/resource/*.txt -samples/resource/*.wxr -samples/resource/makefile* -samples/resource/*.xbm -samples/resource/*.xpm -samples/resource/*.ico - -samples/animate/*.cpp -samples/animate/*.h -samples/animate/*.def -samples/animate/makefile* -samples/animate/*.xbm -samples/animate/*.xpm -samples/animate/*.ico -samples/animate/*.rc - -samples/mdi/*.cpp -samples/mdi/*.h -samples/mdi/*.def -samples/mdi/makefile* -samples/mdi/*.xbm -samples/mdi/*.xpm -samples/mdi/*.ico -samples/mdi/*.rc -samples/mdi/bitmaps/*.bmp -samples/mdi/bitmaps/*.ico -samples/mdi/bitmaps/*.xpm -samples/mdi/bitmaps/*.xbm - -samples/minimal/*.cpp -samples/minimal/*.h -samples/minimal/*.def -samples/minimal/makefile* -samples/minimal/*.xbm -samples/minimal/*.xpm -samples/minimal/*.ico -samples/minimal/*.rc - -samples/controls/*.cpp -samples/controls/*.h -samples/controls/*.def -samples/controls/makefile* -samples/controls/*.xbm -samples/controls/*.xpm -samples/controls/*.ico -samples/controls/*.bmp -samples/controls/*.rc -samples/controls/icons/*.bmp -samples/controls/icons/*.ico -samples/controls/icons/*.xpm - -samples/fractal/*.cpp -samples/fractal/*.h -samples/fractal/*.def -samples/fractal/makefile* -samples/fractal/*.xbm -samples/fractal/*.xpm -samples/fractal/*.ico -samples/fractal/*.rc - -samples/proplist/*.cpp -samples/proplist/*.h -samples/proplist/*.def -samples/proplist/makefile* -samples/proplist/*.xbm -samples/proplist/*.xpm -samples/proplist/*.ico -samples/proplist/*.rc - -samples/layout/*.cpp -samples/layout/*.h -samples/layout/*.def -samples/layout/makefile* -samples/layout/*.xbm -samples/layout/*.xpm -samples/layout/*.ico -samples/layout/*.rc -samples/layout/*.bmp - -samples/printing/*.cpp -samples/printing/*.h -samples/printing/*.def -samples/printing/makefile* -samples/printing/*.xbm -samples/printing/*.xpm -samples/printing/*.txt -samples/printing/*.ico -samples/printing/*.bmp -samples/printing/*.rc -samples/printing/*.afm - -samples/toolbar/*.cpp -samples/toolbar/*.h -samples/toolbar/*.def -samples/toolbar/makefile* -samples/toolbar/*.txt -samples/toolbar/*.xbm -samples/toolbar/*.xpm -samples/toolbar/bitmaps/*.xbm -samples/toolbar/bitmaps/*.xpm -samples/toolbar/*.ico -samples/toolbar/*.bmp -samples/toolbar/*.rc -samples/toolbar/bitmaps/*.bmp - -samples/docview/*.h -samples/docview/*.cpp -samples/docview/*.def -samples/docview/*.rc -samples/docview/makefile* -samples/docview/*.xbm -samples/docview/*.xpm -samples/docview/*.txt -samples/docview/*.ico -samples/docview/*.bmp - -samples/docvwmdi/*.h -samples/docvwmdi/*.cpp -samples/docvwmdi/*.def -samples/docvwmdi/*.rc -samples/docvwmdi/makefile* -samples/docvwmdi/*.xbm -samples/docvwmdi/*.xpm -samples/docvwmdi/*.txt -samples/docvwmdi/*.ico -samples/docvwmdi/*.bmp - -samples/minifram/*.h -samples/minifram/*.cpp -samples/minifram/*.def -samples/minifram/*.rc -samples/minifram/makefile* -samples/minifram/*.xbm -samples/minifram/*.xpm -samples/minifram/*.txt -samples/minifram/*.ico -samples/minifram/*.bmp -samples/minifram/bitmaps/*.bmp -samples/minifram/bitmaps/*.xpm - -samples/memcheck/*.h -samples/memcheck/*.cpp -samples/memcheck/*.def -samples/memcheck/*.rc -samples/memcheck/makefile* -samples/memcheck/*.xbm -samples/memcheck/*.xpm -samples/memcheck/*.txt -samples/memcheck/*.ico -samples/memcheck/*.bmp - -samples/odbc/*.h -samples/odbc/*.cpp -samples/odbc/*.def -samples/odbc/*.rc -samples/odbc/makefile* -samples/odbc/*.inf -samples/odbc/*.xbm -samples/odbc/*.xpm -samples/odbc/*.ico -samples/odbc/*.bmp -samples/odbc/*.dbf -samples/odbc/*.cdx - -samples/dialogs/*.h -samples/dialogs/*.cpp -samples/dialogs/*.def -samples/dialogs/*.rc -samples/dialogs/makefile* -samples/dialogs/*.xbm -samples/dialogs/*.xpm -samples/dialogs/*.txt -samples/dialogs/*.bmp -samples/dialogs/*.ico - -samples/wxpoem/*.cpp -samples/wxpoem/*.h -samples/wxpoem/*.def -samples/wxpoem/*.rc -samples/wxpoem/*.inf -samples/wxpoem/*.txt -samples/wxpoem/makefile* -samples/wxpoem/*.xbm -samples/wxpoem/*.xpm -samples/wxpoem/*.ico -samples/wxpoem/*.bmp -samples/wxpoem/*.dat - -samples/pressup/*.cpp -samples/pressup/*.c -samples/pressup/*.h -samples/pressup/*.def -samples/pressup/*.rc -samples/pressup/*.inf -samples/pressup/*.txt -samples/pressup/makefile* -samples/pressup/*.xbm -samples/pressup/*.xpm -samples/pressup/*.ico -samples/pressup/*.bmp - -samples/validate/*.cpp -samples/validate/*.h -samples/validate/*.def -samples/validate/*.rc -samples/validate/*.inf -samples/validate/*.txt -samples/validate/makefile* -samples/validate/*.xbm -samples/validate/*.xpm -samples/validate/*.ico -samples/validate/*.bmp - -samples/events/*.cpp -samples/events/*.h -samples/events/*.def -samples/events/*.rc -samples/events/*.inf -samples/events/*.txt -samples/events/makefile* -samples/events/*.xbm -samples/events/*.xpm -samples/events/*.ico -samples/events/*.bmp - -samples/treectrl/*.cpp -samples/treectrl/*.h -samples/treectrl/*.def -samples/treectrl/*.rc -samples/treectrl/*.txt -samples/treectrl/makefile* -samples/treectrl/*.xbm -samples/treectrl/*.xpm -samples/treectrl/bitmaps/*.xbm -samples/treectrl/bitmaps/*.xpm -samples/treectrl/*.ico -samples/treectrl/*.bmp -samples/treectrl/bitmaps/*.bmp -samples/treectrl/bitmaps/*.ico - -samples/listctrl/*.cpp -samples/listctrl/*.h -samples/listctrl/*.def -samples/listctrl/*.rc -samples/listctrl/*.txt -samples/listctrl/makefile* -samples/listctrl/*.xbm -samples/listctrl/*.xpm -samples/listctrl/bitmaps/*.xbm -samples/listctrl/bitmaps/*.xpm -samples/listctrl/*.ico -samples/listctrl/*.bmp -samples/listctrl/bitmaps/*.bmp -samples/listctrl/bitmaps/*.ico - -samples/splitter/*.cpp -samples/splitter/*.h -samples/splitter/*.def -samples/splitter/*.rc -samples/splitter/*.txt -samples/splitter/makefile* -samples/splitter/*.xbm -samples/splitter/*.xpm -samples/splitter/*.ico -samples/splitter/*.bmp - -samples/grid/*.cpp -samples/grid/*.h -samples/grid/*.def -samples/grid/*.rc -samples/grid/*.txt -samples/grid/makefile* -samples/grid/*.xbm -samples/grid/*.xpm -samples/grid/*.ico -samples/grid/*.bmp - -samples/internat/*.cpp -samples/internat/*.h -samples/internat/*.def -samples/internat/*.rc -samples/internat/*.txt -samples/internat/makefile* -samples/internat/*.xbm -samples/internat/*.xpm -samples/internat/*.po -samples/internat/*.ico -samples/internat/*.bmp -samples/internat/*.mo -samples/internat/fr/*.mo -samples/internat/fr/*.po - -samples/checklst/*.cpp -samples/checklst/*.h -samples/checklst/*.def -samples/checklst/*.rc -samples/checklst/*.txt -samples/checklst/makefile* -samples/checklst/*.xbm -samples/checklst/*.xpm -samples/checklst/*.ico -samples/checklst/*.bmp - -samples/dnd/*.cpp -samples/dnd/*.h -samples/dnd/makefile* -samples/dnd/*.rc -samples/dnd/*.def -samples/dnd/*.bmp -samples/dnd/*.xbm -samples/dnd/*.xpm -samples/dnd/*.ico -samples/dnd/*.txt - -samples/tab/*.cpp -samples/tab/*.h -samples/tab/makefile* -samples/tab/*.rc -samples/tab/*.def -samples/tab/*.bmp -samples/tab/*.xbm -samples/tab/*.xpm -samples/tab/*.ico -samples/tab/*.txt - -samples/notebook/*.cpp -samples/notebook/*.h -samples/notebook/makefile* -samples/notebook/*.rc -samples/notebook/*.def -samples/notebook/*.bmp -samples/notebook/*.xbm -samples/notebook/*.xpm -samples/notebook/*.ico -samples/notebook/*.txt - -samples/png/*.cpp -samples/png/*.h -samples/png/makefile* -samples/png/*.rc -samples/png/*.def -samples/png/*.bmp -samples/png/*.xpm -samples/png/*.xbm -samples/png/*.ico -samples/png/*.txt -samples/png/*.png - -samples/image/*.cpp -samples/image/*.h -samples/image/makefile* -samples/image/*.rc -samples/image/*.def -samples/image/*.bmp -samples/image/*.xpm -samples/image/*.xbm -samples/image/*.png -samples/image/*.ico -samples/image/*.txt - -samples/thread/*.cpp -samples/thread/*.h -samples/thread/makefile* -samples/thread/*.rc -samples/thread/*.def -samples/thread/*.bmp -samples/thread/*.xpm -samples/thread/*.xbm -samples/thread/*.png -samples/thread/*.ico -samples/thread/*.txt - -samples/dde/*.cpp -samples/dde/*.h -samples/dde/makefile* -samples/dde/client.vc -samples/dde/server.vc -samples/dde/client.wat -samples/dde/server.wat -samples/dde/*.rc -samples/dde/*.def -samples/dde/*.bmp -samples/dde/*.xpm -samples/dde/*.xbm -samples/dde/*.png -samples/dde/*.ico -samples/dde/*.txt - diff --git a/distrib/msw/glcanvas.rsp b/distrib/msw/glcanvas.rsp deleted file mode 100644 index 098b7aa5eb..0000000000 --- a/distrib/msw/glcanvas.rsp +++ /dev/null @@ -1,38 +0,0 @@ -utils/glcanvas/docs/*.* -utils/glcanvas/win/*.cpp -utils/glcanvas/win/*.h -utils/glcanvas/win/make*.* -utils/glcanvas/src/*.cpp -utils/glcanvas/src/*.h -utils/glcanvas/src/make*.* -utils/glcanvas/motif/*.cpp -utils/glcanvas/motif/*.h -utils/glcanvas/motif/make*.* -utils/glcanvas/motif/*.txt -utils/glcanvas/samples/cube/*.cpp -utils/glcanvas/samples/cube/*.h -utils/glcanvas/samples/cube/*.rc -utils/glcanvas/samples/cube/*.ico -utils/glcanvas/samples/cube/*.xbm -utils/glcanvas/samples/cube/make*.* - -utils/glcanvas/samples/isosurf/*.cpp -utils/glcanvas/samples/isosurf/*.h -utils/glcanvas/samples/isosurf/*.rc -utils/glcanvas/samples/isosurf/*.ico -utils/glcanvas/samples/isosurf/*.xbm -utils/glcanvas/samples/isosurf/*.dat.gz -utils/glcanvas/samples/isosurf/make*.* - -utils/glcanvas/samples/penguin/*.cpp -utils/glcanvas/samples/penguin/*.c -utils/glcanvas/samples/penguin/*.h -utils/glcanvas/samples/penguin/*.rc -utils/glcanvas/samples/penguin/*.ico -utils/glcanvas/samples/penguin/*.xbm -utils/glcanvas/samples/penguin/*.xpm -utils/glcanvas/samples/penguin/make*.* -utils/glcanvas/samples/penguin/penguin.lwo - - - diff --git a/distrib/msw/gtk.rsp b/distrib/msw/gtk.rsp deleted file mode 100644 index 6cd5f4543d..0000000000 --- a/distrib/msw/gtk.rsp +++ /dev/null @@ -1,90 +0,0 @@ -install-sh -Makefile -template.mak -configure -configure.in -config.guess -config.sub -wx-config.in -mkinstalldirs - -docs/gtk/*.html -docs/gtk/*.txt - -include/wx/gtk/*.h -include/install-sh - -src/Makefile -src/Makefile.in -src/*.inc -src/make.env -src/makelib.env -src/makeprog.env - -src/gtk/*.cpp -src/gtk/*.c -src/gtk/*.inc -src/gtk/*.xbm - -src/iodbc/*.c -src/iodbc/*.ci -src/iodbc/*.h -src/iodbc/IAFA-PACKAGE -src/iodbc/README -src/iodbc/*.exp -src/iodbc/*.mk -src/iodbc/autoconfig -src/iodbc/build -src/iodbc/Changes.log -src/iodbc/postgres/*.h - -setup/*.in -setup/*.hin - -setup/general/createall -setup/general/jointar -setup/general/makeapp -setup/general/makedirs -setup/general/makedoc -setup/general/mygrep -setup/general/needed - -setup/rules/bin -setup/rules/bin2 -setup/rules/doc -setup/rules/gbin -setup/rules/gbin2 -setup/rules/glib -setup/rules/glibbin -setup/rules/glibgbin -setup/rules/gslib -setup/rules/lib -setup/rules/libbin -setup/rules/libgbin - -setup/rules/generic/bin1 -setup/rules/generic/bin1gen -setup/rules/generic/bin2 -setup/rules/generic/bin2gen -setup/rules/generic/depend -setup/rules/generic/globals -setup/rules/generic/lib -setup/rules/generic/needed -setup/rules/generic/obj -setup/rules/generic/slib -setup/rules/generic/sobj - -setup/shared/sharedAIX -setup/shared/sharedBsd -setup/shared/sharedDgux -setup/shared/sharedHpux -setup/shared/sharedIrix -setup/shared/sharedLinux -setup/shared/sharedOSF -setup/shared/sharedSolaris2 -setup/shared/sharedSunos4 -setup/shared/sharedSysV - -misc/afm/*.afm -misc/gs_afm/*.afm - diff --git a/distrib/msw/motif.rsp b/distrib/msw/motif.rsp deleted file mode 100644 index 269fdf2e2a..0000000000 --- a/distrib/msw/motif.rsp +++ /dev/null @@ -1,103 +0,0 @@ -install-sh -Makefile -template.mak -configure -configure.in -config.guess -config.sub -wx-config.in -mkinstalldirs -wxinstall - -src/makeenvs/*.env -src/make.env -src/makeprog.env -src/makelib.env - -src/Makefile -src/Makefile.in -src/*.inc - -src/motif/*.cpp -src/motif/*.c -src/motif/*.h -src/motif/makefile* -src/motif/*.inc -src/motif/*.xbm -src/motif/xmcombo/*.c -src/motif/xmcombo/*.h -src/motif/xmcombo/*.doc -src/motif/xmcombo/*.man -src/motif/xmcombo/*.txt - -src/iodbc/*.c -src/iodbc/*.ci -src/iodbc/*.h -src/iodbc/IAFA-PACKAGE -src/iodbc/README -src/iodbc/*.exp -src/iodbc/*.mk -src/iodbc/autoconfig -src/iodbc/build -src/iodbc/Changes.log -src/iodbc/postgres/*.h - -include/wx/motif/*.h -include/install-sh - -docs/motif/*.txt -docs/motif/makewx - -lib/dummy - -misc/afm/*.afm -misc/gs_afm/*.afm - -setup/*.in -setup/*.hin - -setup/general/createall -setup/general/jointar -setup/general/makeapp -setup/general/makedirs -setup/general/makedoc -setup/general/mygrep -setup/general/needed - -setup/rules/bin -setup/rules/bin2 -setup/rules/doc -setup/rules/gbin -setup/rules/gbin2 -setup/rules/glib -setup/rules/glibbin -setup/rules/glibgbin -setup/rules/gslib -setup/rules/lib -setup/rules/libbin -setup/rules/libgbin - -setup/rules/generic/bin1 -setup/rules/generic/bin1gen -setup/rules/generic/bin2 -setup/rules/generic/bin2gen -setup/rules/generic/depend -setup/rules/generic/globals -setup/rules/generic/lib -setup/rules/generic/needed -setup/rules/generic/obj -setup/rules/generic/slib -setup/rules/generic/sobj - -setup/shared/sharedAIX -setup/shared/sharedBsd -setup/shared/sharedDgux -setup/shared/sharedHpux -setup/shared/sharedIrix -setup/shared/sharedLinux -setup/shared/sharedOSF -setup/shared/sharedSolaris2 -setup/shared/sharedSunos4 -setup/shared/sharedSysV - - diff --git a/distrib/msw/msw.rsp b/distrib/msw/msw.rsp deleted file mode 100644 index e1812148a0..0000000000 --- a/distrib/msw/msw.rsp +++ /dev/null @@ -1,163 +0,0 @@ -docs/msw/*.txt -docs/licence.txt - -distrib/msw/*.rsp -distrib/msw/*.bat - -tools/gettext/xgettext.exe -tools/gettext/msgfmt.exe -tools/gettext/msgunfmt.exe - -src/makeb32.env -src/makebcc.env -src/makemsc.env -src/makeprog.msc -src/makewat.env -src/makeprog.wat -src/makesc.env -src/makevc.env -src/makeg95.env -src/makesl.env -src/makeprog.sl -src/salford.lnk -src/maketwin.env -src/makeprog.twn -src/makeprog.vc -src/makelib.vc -src/makefile.bcc -src/makefile.dos -src/makefile.vc -src/*.bat - -src/common/dosyacc.c -src/common/doslex.c - -src/msw/*.cpp -src/msw/*.h -src/msw/makefile.* -src/msw/*.lst -src/msw/*.def -src/msw/*.inc - -src/msw/ctl3d/*.* -src/msw/ctl3d/msvc/*.* -src/msw/ctl3d/wat32/*.* -src/msw/ctl3d/wat386/*.* -src/msw/ctl3d/borland/*.* -src/msw/ole/*.cpp -src/msw/*.prj - -src/xpm/*.c -src/xpm/*.h -src/xpm/makefile* -src/xpm/changes -src/xpm/readme -src/xpm/readme.msw -src/xpm/copyrigh.t -src/xpm/files - -include/wx/msw/*.h -include/wx/msw/*.rc -include/wx/msw/ctl3d/*.h -include/wx/msw/gnuwin32/*.h -include/wx/msw/ole/*.h -include/wx/msw/*.cur -include/wx/msw/*.ico -include/wx/msw/*.bmp - -lib/dummy - -samples/ownerdrw/*.cpp -samples/ownerdrw/*.h -samples/ownerdrw/makefile.* -samples/ownerdrw/*.rc -samples/ownerdrw/*.def -samples/ownerdrw/*.bmp -samples/ownerdrw/*.ico -samples/ownerdrw/*.txt - -samples/taskbar/*.cpp -samples/taskbar/*.h -samples/taskbar/makefile.* -samples/taskbar/*.rc -samples/taskbar/*.def -samples/taskbar/*.bmp -samples/taskbar/*.ico -samples/taskbar/*.txt - -samples/regtest/*.cpp -samples/regtest/*.h -samples/regtest/makefile.* -samples/regtest/*.rc -samples/regtest/*.def -samples/regtest/*.bmp -samples/regtest/*.ico -samples/regtest/*.txt - -samples/nativdlg/*.cpp -samples/nativdlg/*.h -samples/nativdlg/*.def -samples/nativdlg/*.rc -samples/nativdlg/*.txt -samples/nativdlg/makefile.* -samples/nativdlg/*.xbm -samples/nativdlg/*.ico -samples/nativdlg/*.bmp - -samples/mfc/*.h -samples/mfc/*.cpp -samples/mfc/*.def -samples/mfc/*.rc -samples/mfc/makefile.* -samples/mfc/*.txt -samples/mfc/*.bmp -samples/mfc/*.ico - -samples/joytest/*.h -samples/joytest/*.cpp -samples/joytest/*.def -samples/joytest/*.rc -samples/joytest/makefile.* -samples/joytest/*.txt -samples/joytest/*.bmp -samples/joytest/*.wav -samples/joytest/*.ico - -samples/oleauto/*.h -samples/oleauto/*.cpp -samples/oleauto/*.def -samples/oleauto/*.rc -samples/oleauto/makefile.* -samples/oleauto/*.txt -samples/oleauto/*.bmp -samples/oleauto/*.ico - -utils/nplugin/make*.* -utils/nplugin/src/*.cpp -utils/nplugin/src/*.h -utils/nplugin/src/*.rc -utils/nplugin/src/*.def -utils/nplugin/src/makefile.* -utils/nplugin/src/*.txt -utils/nplugin/samples/simple/*.cpp -utils/nplugin/samples/simple/*.h -utils/nplugin/samples/simple/*.rc -utils/nplugin/samples/simple/*.def -utils/nplugin/samples/simple/makefile.* -utils/nplugin/samples/simple/*.txt -utils/nplugin/samples/gui/*.cpp -utils/nplugin/samples/gui/*.h -utils/nplugin/samples/gui/*.rc -utils/nplugin/samples/gui/*.def -utils/nplugin/samples/gui/makefile.* -utils/nplugin/samples/gui/*.txt -utils/nplugin/docs/*.tex -utils/nplugin/docs/*.txt -utils/nplugin/docs/*.hpj -utils/nplugin/docs/*.eps -utils/nplugin/docs/*.ps -utils/nplugin/docs/*.ini -utils/nplugin/docs/*.cnt -utils/nplugin/docs/*.hlp -utils/nplugin/lib/dummy - diff --git a/distrib/msw/ogl.rsp b/distrib/msw/ogl.rsp deleted file mode 100644 index 27db43a242..0000000000 --- a/distrib/msw/ogl.rsp +++ /dev/null @@ -1,43 +0,0 @@ -utils/ogl/src/*.cpp -utils/ogl/src/*.h -utils/ogl/src/*.rc -utils/ogl/src/*.def -utils/ogl/src/*.xbm -utils/ogl/src/*.xpm -utils/ogl/src/makefile* -utils/ogl/src/*.txt -utils/ogl/src/*.ico -utils/ogl/src/*.bmp - -utils/ogl/samples/ogledit/*.cpp -utils/ogl/samples/ogledit/*.h -utils/ogl/samples/ogledit/*.rc -utils/ogl/samples/ogledit/*.def -utils/ogl/samples/ogledit/*.xbm -utils/ogl/samples/ogledit/makefile* -utils/ogl/samples/ogledit/*.txt -utils/ogl/samples/ogledit/*.ico -utils/ogl/samples/ogledit/*.bmp -utils/ogl/samples/ogledit/*.xpm -utils/ogl/samples/ogledit/bitmaps/*.bmp -utils/ogl/samples/ogledit/bitmaps/*.gif -utils/ogl/samples/ogledit/bitmaps/*.xbm -utils/ogl/samples/ogledit/bitmaps/*.xpm - -utils/ogl/distrib/*.rsp -utils/ogl/distrib/*.bat - -utils/ogl/docs/*.txt -utils/ogl/docs/*.tex -utils/ogl/docs/*.ini -utils/ogl/docs/*.hpj -utils/ogl/docs/*.ps -utils/ogl/docs/*.eps -utils/ogl/docs/*.bmp -utils/ogl/docs/*.gif - -docs/html/ogl/*.* -docs/winhelp/ogl.hlp -docs/winhelp/ogl.cnt -docs/pdf/ogl.pdf - diff --git a/distrib/msw/stubs.rsp b/distrib/msw/stubs.rsp deleted file mode 100644 index df64c1f58d..0000000000 --- a/distrib/msw/stubs.rsp +++ /dev/null @@ -1,15 +0,0 @@ -src/stubs/*.cpp -src/stubs/*.h -src/stubs/makefile* -src/stubs/*.inc - -src/make.env -src/makeprog.env -src/makelib.env - -include/wx/stubs/*.h -include/wx/stubs/*.rc - -lib/dummy - - diff --git a/distrib/msw/tardist.bat b/distrib/msw/tardist.bat deleted file mode 100755 index 91ce1fdf16..0000000000 --- a/distrib/msw/tardist.bat +++ /dev/null @@ -1,117 +0,0 @@ -@echo off -rem Tar up an external distribution of wxWindows 2.0: but -rem putting in separate ASCII and binary files -rem This seems to be the one that works, using -rem separate tar programs for conversion/non-conversion -rem of ASCII/binary files. - -if "%1" == "" goto usage -if "%2" == "" goto usage -echo About to archive an external wxWindows 2.0 distribution: -echo From %1 -echo To %2\wx200_1.tgz, %2\wx200_2.tgz, %2\wx200hlp.tgz, %2\wx200ps.tgz, %2\wx200htm.tgz -echo CTRL-C if this is not correct. -inkey /W4 `Press any key to continue...` %%input - -erase %2\*.tgz -cd %1 - -rem First, expand the wildcards in the rsp files - -rem Create empty list file -erase %1\distrib\*.lis -c:\bin\touch %1\distrib\wx200asc.lis -c:\bin\touch %1\distrib\wx200bin.lis -c:\bin\touch %1\distrib\wx200hlp.lis -c:\bin\touch %1\distrib\wx200ps.lis -c:\bin\touch %1\distrib\wx200xlp.lis - -rem Create a .rsp file with backslashes instead -rem of forward slashes -rem No need if using ls2 (from UNIX95 distribution) -rem sed -e "s/\//\\/g" %1\distrib\wx_asc.rsp > %1\distrib\wx_asc.rs2 - -call %1\distrib\expdwild.bat %1\distrib\wx_asc.rsp %1\distrib\wx200asc.lis -call %1\distrib\expdwild.bat %1\distrib\util_asc.rsp %1\distrib\wx200asc.lis -call %1\distrib\expdwild.bat %1\distrib\smpl_asc.rsp %1\distrib\wx200asc.lis -rem call %1\distrib\expdwild.bat %1\distrib\wxim1asc.rsp %1\distrib\wx200asc.lis -rem call %1\distrib\expdwild.bat %1\distrib\wxim2asc.rsp %1\distrib\wx200asc.lis - -call %1\distrib\expdwild.bat %1\distrib\wx_bin.rsp %1\distrib\wx200bin.lis -call %1\distrib\expdwild.bat %1\distrib\util_bin.rsp %1\distrib\wx200bin.lis -call %1\distrib\expdwild.bat %1\distrib\smpl_bin.rsp %1\distrib\wx200bin.lis -rem call %1\distrib\expdwild.bat %1\distrib\wxim1bin.rsp %1\distrib\wx200bin.lis - -rem Docs -call %1\distrib\expdwild.bat %1\distrib\wx_hlp.rsp %1\distrib\wx200hlp.lis -call %1\distrib\expdwild.bat %1\distrib\wx_ps.rsp %1\distrib\wx200ps.lis -call %1\distrib\expdwild.bat %1\distrib\wx_html.rsp %1\distrib\wx200htm.lis -call %1\distrib\expdwild.bat %1\distrib\wx_pdf.rsp %1\distrib\wx200pdf.lis - -rem Do some further massaging of the .lis files -sed -e "s/\\/\//g" %1\distrib\wx200asc.lis > c:\temp\temp.tmp -sed -e "s/D:\/wx\///g" c:\temp\temp.tmp > %1\distrib\wx200asc.lis - -sed -e "s/\\/\//g" %1\distrib\wx200bin.lis > c:\temp\temp.tmp -sed -e "s/D:\/wx\///g" c:\temp\temp.tmp > %1\distrib\wx200bin.lis - -sed -e "s/\\/\//g" %1\distrib\wx200hlp.lis > c:\temp\temp.tmp -sed -e "s/D:\/wx\///g" c:\temp\temp.tmp > %1\distrib\wx200hlp.lis - -sed -e "s/\\/\//g" %1\distrib\wx200ps.lis > c:\temp\temp.tmp -sed -e "s/D:\/wx\///g" c:\temp\temp.tmp > %1\distrib\wx200ps.lis - -sed -e "s/\\/\//g" %1\distrib\wx200htm.lis > c:\temp\temp.tmp -sed -e "s/D:\/wx\///g" c:\temp\temp.tmp > %1\distrib\wx200htm.lis - -sed -e "s/\\/\//g" %1\distrib\wx200pdf.lis > c:\temp\temp.tmp -sed -e "s/D:\/wx\///g" c:\temp\temp.tmp > %1\distrib\wx200pdf.lis - -rem 'tar' converts linefeeds. -tar -c -T %1\distrib\wx200asc.lis -f %2\wx200.tar -rem pause Press a key to continue. - -rem This converts to lower case -ren %2\wx200.tar %2\wx200_1.tar -gzip32 %2\wx200_1.tar -ren %2\wx200_1.tar.gz %2\wx200_1.tgz - -rem No linefeed conversion wanted -rem Note: GNU tar seems to crash with a full destination path, so -rem pander to it. -targnu -c -T %1\distrib\wx200bin.lis -f wx200_2.tar -move wx200_2.tar %2 -gzip32 %2\wx200_2.tar -ren %2\wx200_2.tar.gz %2\wx200_2.tgz - -targnu -c -T %1\distrib\wx200hlp.lis -f wx200_hlp.tar -move wx200_hlp.tar %2 -gzip32 %2\wx200_hlp.tar -ren %2\wx200_hlp.tar.gz %2\wx200hlp.tgz - -tar -c -T %1\distrib\wx200ps.lis -f %2\wx200ps.tar -gzip32 %2\wx200ps.tar -ren %2\wx200ps.tar.gz %2\wx200ps.tgz - -targnu -c -T %1\distrib\wx200htm.lis -f wx200htm.tar -move wx200htm.tar %2 -gzip32 %2\wx200htm.tar -ren %2\wx200htm.tar.gz %2\wx200htm.tgz - -targnu -c -T %1\distrib\wx200pdf.lis -f wx200pdf.tar -move wx200pdf.tar %2 -gzip32 %2\wx200pdf.tar -ren %2\wx200pdf.tar.gz %2\wx200pdf.tgz - -cd %2 -echo wxWindows archived. -goto end - -:usage -echo Tar/gzip wxWindows distribution under DOS, making an ASCII and binary file -echo Usage: tardist source destination -echo e.g. tardist d:\wx d:\wx\deliver - -:end - - diff --git a/distrib/msw/tex2rtf.rsp b/distrib/msw/tex2rtf.rsp deleted file mode 100644 index 5f531b87f0..0000000000 --- a/distrib/msw/tex2rtf.rsp +++ /dev/null @@ -1,26 +0,0 @@ -utils/tex2rtf/src/*.cpp -utils/tex2rtf/src/*.h -utils/tex2rtf/src/make*.* -utils/tex2rtf/src/*.xbm -utils/tex2rtf/src/*.xpm -utils/tex2rtf/src/*.sty -utils/tex2rtf/src/*.ini -utils/tex2rtf/lib/dummy -utils/tex2rtf/src/*.bmp -utils/tex2rtf/src/*.ico -utils/tex2rtf/src/*.def -utils/tex2rtf/src/*.rc - -utils/tex2rtf/docs/*.tex -utils/tex2rtf/docs/*.sty -utils/tex2rtf/docs/*.bib -utils/tex2rtf/docs/*.hpj -utils/tex2rtf/docs/*.ini -utils/tex2rtf/docs/*.txt -utils/tex2rtf/docs/*.cnt -utils/tex2rtf/docs/*.eps -utils/tex2rtf/docs/*.bmp -utils/tex2rtf/docs/*.gif -utils/tex2rtf/docs/*.wmf -utils/tex2rtf/docs/*.shg - diff --git a/distrib/msw/vc.rsp b/distrib/msw/vc.rsp deleted file mode 100644 index 6900ebc7da..0000000000 --- a/distrib/msw/vc.rsp +++ /dev/null @@ -1,153 +0,0 @@ -src/wxVC.dsp -src/wxVC.dsw - -samples/checklst/ChecklstVC.dsp -samples/checklst/ChecklstVC.dsw - -samples/config/ConfigVC.dsp -samples/config/ConfigVC.dsw - -samples/controls/ControlsVC.dsp -samples/controls/ControlsVC.dsw - -samples/db/DbVC.dsp -samples/db/DbVC.dsw - -samples/dialogs/DialogsVC.dsp -samples/dialogs/DialogsVC.dsw - -samples/dnd/DndVC.dsp -samples/dnd/DndVC.dsw - -samples/docview/DocviewVC.dsp -samples/docview/DocviewVC.dsw - -samples/docvwmdi/DocViewVC.dsp -samples/docvwmdi/DocViewVC.dsw - -samples/dynamic/DynamicVC.dsp -samples/dynamic/DynamicVC.dsw - -samples/forty/FortyVC.dsp -samples/forty/FortyVC.dsw - -samples/grid/GridVC.dsp -samples/grid/GridVC.dsw - -samples/help/HelpVC.dsp -samples/help/HelpVC.dsw - -samples/image/ImageVC.dsp -samples/image/ImageVC.dsw - -samples/internat/InternatVC.dsp -samples/internat/InternatVC.dsw - -samples/joytest/JoytestVC.dsp -samples/joytest/JoytestVC.dsw - -samples/layout/LayoutVC.dsp -samples/layout/LayoutVC.dsw - -samples/listctrl/ListCtrlVC.dsp -samples/listctrl/ListCtrlVC.dsw - -samples/mdi/MdiVC.dsp -samples/mdi/MdiVC.dsw - -samples/memcheck/MemcheckVC.dsp -samples/memcheck/MemcheckVC.dsw - -samples/mfc/MfcVC.dsp -samples/mfc/MfcVC.dsw - -samples/minimal/MinimalVC.dsp -samples/minimal/MinimalVC.dsw - -samples/minifram/MiniframVC.dsp -samples/minifram/MiniframVC.dsw - -samples/nativdlg/NativdlgVC.dsp -samples/nativdlg/NativdlgVC.dsw - -samples/notebook/NotebookVC.dsp -samples/notebook/NotebookVC.dsw - -samples/ownerdrw/OwnerDrwVC.dsp -samples/ownerdrw/OwnerDrwVC.dsw - -samples/png/PngVC.dsp -samples/png/PngVC.dsw - -samples/printing/PrintingVC.dsp -samples/printing/PrintingVC.dsw - -samples/Regtest/RegtestVC.dsp -samples/Regtest/RegtestVC.dsw - -samples/resource/ResourceVC.dsp -samples/resource/ResourceVC.dsw - -samples/sashtest/SashtestVC.dsp -samples/sashtest/SashtestVC.dsw - -samples/splitter/SplitterVC.dsp -samples/splitter/SplitterVC.dsw - -samples/tab/TabVC.dsp -samples/tab/TabVC.dsw - -samples/taskbar/TaskbarVC.dsp -samples/taskbar/TaskbarVC.dsw - -samples/thread/ThreadVC.dsp -samples/thread/ThreadVC.dsw - -samples/toolbar/ToolbarVC.dsp -samples/toolbar/ToolbarVC.dsw - -samples/treectrl/TreectrlVC.dsp -samples/treectrl/TreeCtrlVC.dsw - -samples/typetest/TypetestVC.dsp -samples/typetest/TypetestVC.dsw - -samples/validate/ValidateVC.dsp -samples/validate/ValidateVC.dsw - -samples/wxsocket/ClientVC.dsp -samples/wxsocket/ServerVC.dsw - -samples/wxpoem/PoemVC.dsp -samples/wxpoem/PoemVC.dsw - -utils/wxprop/src/PropVC.dsp -utils/wxprop/src/PropVC.dsw -utils/wxprop/src/PropSampleVC.dsp -utils/wxprop/src/PropSampleVC.dsw - -utils/dialoged/src/DialogEdVC.dsp -utils/dialoged/src/DialogEdVC.dsw - -utils/tex2rtf/src/Tex2RTFVC.dsp -utils/tex2rtf/src/Tex2RTFVC.dsw - -utils/glcanvas/win/GlcanvasVC.dsp -utils/glcanvas/win/GlcanvasVC.dsw -utils/glcanvas/samples/cube/CubeVC.dsp -utils/glcanvas/samples/cube/CubeVC.dsw -utils/glcanvas/samples/isosurf/IsosurfVC.dsp -utils/glcanvas/samples/isosurf/IsosurfVC.dsw -utils/glcanvas/samples/penguin/PenguinVC.dsp -utils/glcanvas/samples/penguin/PenguinVC.dsw - -utils/ogl/src/OglVC.dsp -utils/ogl/src/OglVC.dsw -utils/ogl/samples/ogledit/OgleditVC.dsp -utils/ogl/samples/ogledit/OgleditVC.dsw - -utils/wxtree/src/TreeVC.dsp -utils/wxtree/src/TreeVC.dsw -utils/wxtree/src/TreeSampleVC.dsp -utils/wxtree/src/TreeSampleVC.dsw - diff --git a/distrib/msw/wx_hlp.rsp b/distrib/msw/wx_hlp.rsp deleted file mode 100644 index 1a72b4735b..0000000000 --- a/distrib/msw/wx_hlp.rsp +++ /dev/null @@ -1,2 +0,0 @@ -docs/winhelp/*.hlp -docs/winhelp/*.cnt diff --git a/distrib/msw/wx_html.rsp b/distrib/msw/wx_html.rsp deleted file mode 100644 index a67cc06bc3..0000000000 --- a/distrib/msw/wx_html.rsp +++ /dev/null @@ -1,37 +0,0 @@ -docs/html/*.htm -docs/html/*.gif - -docs/html/wx/*.htm -docs/html/wx/*.gif -docs/html/porting/*.htm -docs/html/porting/*.gif -docs/html/faq/*.htm -docs/html/faq/*.gif -docs/html/techref/*.htm -docs/html/techref/*.gif - -docs/html/dialoged/*.htm -docs/html/dialoged/*.gif - -docs/html/wxtree/*.htm -docs/html/wxtree/*.gif - -docs/html/wxgraph/*.htm -docs/html/wxgraph/*.gif - -docs/html/wxhelp/*.htm -docs/html/wxhelp/*.gif - -docs/html/proplist/*.htm -docs/html/proplist/*.gif - -docs/html/winstall/*.htm -docs/html/winstall/*.gif - -docs/html/tex2rtf/*.htm -docs/html/tex2rtf/*.gif - -docs/html/odbc/*.htm - -docs/html/gettext/*.htm - diff --git a/distrib/msw/wx_pdf.rsp b/distrib/msw/wx_pdf.rsp deleted file mode 100644 index 6a979c3678..0000000000 --- a/distrib/msw/wx_pdf.rsp +++ /dev/null @@ -1 +0,0 @@ -docs/pdf/*.pdf diff --git a/distrib/msw/wx_word.rsp b/distrib/msw/wx_word.rsp deleted file mode 100644 index 2cbc9b26ed..0000000000 --- a/distrib/msw/wx_word.rsp +++ /dev/null @@ -1,2 +0,0 @@ -docs/word/odbc.doc - diff --git a/distrib/msw/zipdist.bat b/distrib/msw/zipdist.bat deleted file mode 100755 index a1b91fc8a6..0000000000 --- a/distrib/msw/zipdist.bat +++ /dev/null @@ -1,68 +0,0 @@ -@echo off -rem Zip up an external, generic + Windows distribution of wxWindows 2.0 -set src=d:\wx2\wxWindows -set dest=%src\deliver -if "%src" == "" goto usage -if "%dest" == "" goto usage -echo About to archive an external wxWindows distribution: -echo From %src -echo To %dest -echo CTRL-C if this is not correct. -pause - -erase %dest\wx200*.zip -erase %dest\glcanvas.zip -erase %dest\ogl3.zip -erase %dest\tex2rtf2.zip - -cd %src -echo Zipping... - -zip32 -@ %dest\wx200gen.zip < %src\distrib\msw\generic.rsp -zip32 -@ %dest\wx200msw.zip < %src\distrib\msw\msw.rsp -zip32 -@ %dest\wx200gtk.zip < %src\distrib\msw\gtk.rsp -zip32 -@ %dest\wx200stubs.zip < %src\distrib\msw\stubs.rsp -zip32 -@ %dest\wx200mot.zip < %src\distrib\msw\motif.rsp -zip32 -@ %dest\wx200user.zip < %src\distrib\msw\user.rsp - -zip32 -@ %dest\wx200doc.zip < %src\distrib\msw\docsrc.rsp -zip32 -@ %dest\wx200hlp.zip < %src\distrib\msw\wx_hlp.rsp -zip32 -@ %dest\wx200htm.zip < %src\distrib\msw\wx_html.rsp -zip32 -@ %dest\wx200pdf.zip < %src\distrib\msw\wx_pdf.rsp -zip32 -@ %dest\wx200wrd.zip < %src\distrib\msw\wx_word.rsp - -rem VC++ project files -zip32 -@ %dest\wx200vc.zip < %src\distrib\msw\vc.rsp - -rem CodeWarrior project files -zip32 -@ %dest\wx200cw.zip < %src\distrib\msw\cw.rsp - -rem OGL 3 -zip32 -@ %dest\ogl3.zip < %src\distrib\msw\ogl.rsp - -rem GLCanvas -zip32 -@ %dest\glcanvas.zip < %src\distrib\msw\glcanvas.rsp - -rem Tex2RTF -zip32 -@ %dest\tex2rtf2.zip < %src\distrib\msw\tex2rtf.rsp - -rem wxTreeLayout -zip32 -@ %dest\treedraw.zip < %src\distrib\msw\wxtree.rsp - -copy %src\docs\changes.txt %dest -copy %src\docs\msw\install.txt %dest\install_msw.txt -copy %src\docs\motif\install.txt %dest\install_motif.txt -copy %src\docs\gtk\install.txt %dest\install_gtk.txt -copy %src\docs\readme.txt %dest - -cd %dest - -echo wxWindows archived. -goto end - -:usage -echo DOS wxWindows distribution. -echo Usage: zipdist source destination -echo e.g. zipdist d:\wx2\wxWindows d:\wx2\wxWindows\deliver - -:end diff --git a/docs/bugs.txt b/docs/bugs.txt deleted file mode 100644 index b2d9feee5c..0000000000 --- a/docs/bugs.txt +++ /dev/null @@ -1,32 +0,0 @@ -wxWindows Buglist ------------------ - -wxGTK: ------- - -wxMSW: ------- - -wxMotif: --------- - -- If a popup wxMenu is destroyed after its parent window has been - destroyed, we get the message "Object XXX does not have windowed - ancestor". - Workaround: delete the menu before deleting the window on which it - was popped up. - Possible fix: call menu->DestroyMenu() before deleting the window, - if the window knows about the menu that was last popped up (hard - to know this with confidence). - -- In wxGrid, cell highlight is not drawn/erased properly. - -- Setting the size of a hidden window may show that window. - -- wxRadioBox sometimes doesn't show (e.g. in controls sample). - -- wxStaticText doesn't wrap. - -General: --------- - diff --git a/docs/changes.txt b/docs/changes.txt deleted file mode 100644 index 2de593966d..0000000000 --- a/docs/changes.txt +++ /dev/null @@ -1,608 +0,0 @@ -wxWindows 2.0 Change Log ------------------------- - -Beta 3, January 1999 --------------------- - -wxGTK: - -wxMSW: - -- wxRegConfig DeleteAll bug fixed. -- Makefiles for more compilers. -- TWIN32 support added. -- Renamed VC++ makefiles from .nt to .vc, and - factored out program/library settings. - -wxMotif: - -- A few more colour fixes. -- wxGLCanvas and OpenGL samples working. -- Some compiler warnings fixed. -- wxChoice crash fix. -- Dialog Editor starting to work on Motif. - -General: - -- wxBusyCursor class added. -- Added samples/dde. -- More doc improvements, incl. expanding docs/html/index.htm. - -Beta 2, January 1999 --------------------- - -wxGTK: - -wxMSW: - -- 16-bit BC++ compilation/linking works albeit without the resource system. - -wxMotif: - -- Cured wxScreenDC origin problem so e.g. sash window sash is drawn at - the right place. -- Cured some widget table clashes. -- Added thread support (Robert). -- wxPoem sample now works. - -General: - -- Rearranged documentation a bit. -- Sash window uses area of first frame/dialog to paint over when drawing - the dragged sash, not just the sash window itself (it clipped to the right - or below). -- Made resource sample use the correct Cancel button id. -- Moved wxProp to main library (generic directory), created proplist - sample. -- Added bombs and fractal samples. - -Beta 1, December 24th 1998 --------------------------- - -wxGTK: - -- Various - -wxMSW, wxMotif: not in sync with this release. - - -Alpha 18, December 29th 1998 ----------------------------- - -wxMSW: - -- Win16 support working again (VC++ 1.5) -- Win16 now uses generic wxNotebook, wxListCtrl, - wxTreeCtrl -- more or less working now, although - a little work on wxNotebook is still needed. - Under 16-bit Windows, get assertion when you click - on a tab. -- Wrote 16-bit BC++ makefiles: samples don't yet link. -- Added CodeWarrior support to distribution courtesy - of Stefan Csomor. - -wxMotif: - -- Cured scrolling problem: scrollbars now show/hide themselves - without (permanently) resizing the window. -- Removed some commented-out lines in wxScrolledWindow::AdjustScrollbars - that disabled scrollbar paging. -- Set background colour of drawing area in wxWindow, so e.g. wxListCtrl - colours correctly. -- Removed major bug whereby dialogs were unmanaged automatically - when any button was pressed. -- Fixed colours of wxWindow scrollbars, made list and text controls - have a white background. -- Fixed dialog colour setting. -- Added settable fonts and colours for wxMenu/wxMenuBar. Now - they have sensible colours by default. -- Fixed a bug in wxStaticBox. -- Cured wxTreeCtrl bug: now works pretty well! -- Debugged DrawEllipticArc (a ! in the wrong place). -- Added SetClippingRegion( const wxRegion& region ). -- Added wxPoint, wxSize, wxRect versions of SetSize etc. - -Alpha 17, November 22nd 1998 ----------------------------- - -wxMSW: - -- More documentation updates, especially for - wxLayoutWindow classes and debugging facilities. -- Changed wxDebugContext to use wxDebugLog instead - of wxTrace. -- Now supports VC++ 6.0, and hopefully BC++ 5.0. - However, DLL support may be broken for BC++ since - VC++ 6 required changing of WXDLLEXPORT keyword - position. -- Numerous miscellaneous changes. - -wxMotif: - -- Reimplemented MDI using wxNotebook instead of the MDI widgets, which - were too buggy (probably not design for dynamic addition/removal of - child frames). -- Some improvements to the wxNotebook implementation. -- wxToolBar now uses a bulletin board instead of a form, in an attempt - to make it possible to add ordinary wxControls to a toolbar. -- Cured problem with not being able to use global memory operators, - by defining two more global operators, so that the delete will match - the debugging implementation. -- Added wxUSE_DEBUG_NEW_ALWAYS so we can distinguish between using - global memory operators (usually OK) and #defining new to be - WXDEBUG_NEW (sometimes it might not be OK). -- Added time.cpp to makefile; set wxUSE_DATETIME to 1. -- Added a parent-existance check to popup menu code to make it not crash. -- Added some optimization in wxWindow::SetSize to produce less flicker. - It remains to be seen whether this produces any resize bugs. - -It's a long time since I updated this file. Previously done: - -- wxFrame, wxDialog done. -- wxScrolledWindow done (but backing pixmap not used at present). -- wxBitmap done though could be tidied it up at some point. -- Most basic controls are there, if not rigorously tested. -- Some MDI support (menus appear on child frames at present). -- wxNotebook almost done. -- wxToolBar done (horizontal only, which would be easy to extend - to vertical toolbars). - -More recently: - -- Colour and font changing done (question mark over what happens - to scrollbars). -- Accelerators done (for menu items and buttons). Also event loop - tidied up in wxApp so that events are filtered through ProcessXEvent. -- wxWindow::GetUpdateRegion should now work. - -Alpha 16, September 8th 1998 ----------------------------- - -wxMSW: - -- Added wxSashWindow, wxSashLayoutWindow classes, and sashtest - sample. -- Guilhem's socket classes added, plus wxsocket sample. -- A few more makefiles added. -- GnuWin32/BC++ compatibility mods. -- Further doc updates. -- wxProp updates for correct working with wxGTK. - -wxMotif: - -- First start at Motif port. -- Made makefiles for wxMotif source directory and minimal sample. -- First go at wxApp, wxWindow, wxDialog, wxPen, wxBrush, wxFont, - wxColour, wxButton, wxCheckBox, wxTextCtrl, wxStaticText, - wxMenu, wxMenuItem, wxMenuBar - -Alpha 15, August 31st 1998 --------------------------- - -wxMSW: - -- wxBitmap debugged. -- wxDC::GetDepth added. -- Contribution added whereby wxBitmap will be - converted to DC depth if they don't match. -- wxConfig API improved, documentation updated. -- Printing classes name conventions cleaned up. -- wxUpdateUIEvent now derives from wxCommandEvent - so event can travel up the window hierachy. - -Alpha 14, July 31st 1998 ------------------------- - -wxMSW: - -- Toolbar API has been simplified, and now - wxFrame::GetClientArea returns the available client - area when toolbar, status bar etc. have been accounted for. - wxFrame::CreateToolBar added in line with CreateStatusBar. -- Documentation updates, incl. for wxToolBar. -- New wxAcceleratorTable class plus wxFrame::SetAcceleratorTable. -- Various additions from other folk, e.g. streams, wxConfig - changes, wxNotebook. -- Added wxDocMDIParentFrame, wxDocMDIChildFrame for doc/view. - -Alpha 13, July 8th 1998 ------------------------ - -wxMSW: - -- Implemented wxPoint as identical to POINT on Windows, and - altered wxDC wxPoint functions to use wxPoint directly in - Windows functions, for efficiency. -- Cured wxASSERT bug in wxStatusBar95. -- #ifdefed out some bits in oleutils.cpp for compilers that - don't support it. -- Added some operators to wxPoint, wxSize. -- Added inline wxDC functions using wxPoint, wxSize, wxRect. - -Alpha 12, July 7th 1998 ------------------------ - -wxMSW: - -- Added wxApp::GetComCtl32Version, and wxTB_FLAT style, so can - have flat toolbars on Win98 or Win95 with IE >= 3 installed. - -Alpha 11, July 3rd 1998 ------------------------ - -wxMSW: - -- Added thread.h, thread.cpp. -- Changed Enabled, Checked to IsEnabled, IsChecked in wxMenu, - wxMenuBar. -- Changed wxMenuItem::SetBackColor to SetBackgroundColour, - SetTextColor to SetTextColour, and added or made public several - wxMenuItem accessors. -- Added two overloads to wxRegion::Contains. Added - wxRegion::IsEmpty for a more consistent naming convention. -- Added Vadim's wxDataObject and wxDropSource. -- ENTER/LEAVE events now work. -- Cured wxMemoryDC bug where the DC wasn't being deleted. -- Cured wxGauge SetSize major bugginess. -- Cured problem where if a GDI object was created on the stack, - then went out of scope, then another object was selected into - the DC, GDI objects would leak. This is because the assignment - to e.g. wxDC::m_pen would delete the GDI object without it first - being selected out of the DC. Cured by selecting the old DC object - first, then doing the assignment. -- Split up wxGaugeMSW, wxGauge95, wxSliderMSW, wxSlider95 -- Various other bug fixes and additions. - -Generic: - -- Major work on Dialog Editor (still plenty to go). -- Expanded documentation a bit more. - -Alpha 10, May 7th 1998 ----------------------- - -wxMSW: - -- Added desiredWidth, desiredHeight parameters to wxBitmapHandler - and wxIcon functions so that you can specify what size of - icon should be loaded. Probably will remain a Windows-specific thing. -- wxStatusBar95 now works for MDI frames. -- Toolbars in MDI frames now behave normally. They still - require application-supplied positioning code though. -- Changed installation instructions, makefiles and batch files - for compiling with Gnu-Win32/Mingw32/EGCS. Also timercmn.cpp - change to support Mingw32/EGCS. Bison now used by default. - -Alpha 9, April 27th 1998 ------------------------- - -wxMSW: - -- Cured bug in wxStatusBar95 that caused a crash if multiple - fields were used. -- Added Gnu-Win32 b19/Mingw32 support by changing resource - compilation and pragmas. -- Cured wxMenu bug introduced in alpha 8 - didn't respond to - commands because VZ changed the id setting in wxMenu::MSWCommand. - -Generic: - -- Corrected some bugs, such as the wxModule compilation problem. -- Added Gnu-Win32 b19/Mingw32 support by changing resource - compilation and pragmas. -- Changed SIZEOF to WXSIZEOF. - -Alpha 8, April 17th 1998 ------------------------- - -wxMSW: - -- Added IsNull to wxGDIObject to check if the ref data is present or not. -- Added PNG handler and sample - doesn't work for 16-bit PNGs for - some reason :-( -- Added wxJoystick class and event handling, and simple demo. -- Added simple wxWave class. Needs Stop() function. -- Added wxModule (module.h/module.cpp) to allow definition - of modules to be initialized and cleaned up on wxWindows - startup/exit. -- Start of Mingw32 compatibility (see minimal and dialogs samples - makefile.m95 files, and install.txt). -- Note: Windows printing has stopped working... will investigate. -VADIM'S CHANGES: -- Updated wxString: bug fixes, added wxArrayString, some - compatibility functions. -- Updated log.h/cpp, added wxApp::CreateLogTarget. -- file.h: new wxTempFile class. -- defs.h: added wxSB_SIZE_GRIP for wxStatusBar95 -- statbr95: wxStatusBar95 control. -- registry.h/cpp: wxRegKey class for Win95 registry. -- listbox.cpp: corrected some bugs with owner-drawn listboxes. -- wxConfig and wxFileConfig classes. - -Generic: - -- Added src/other/png, src/other/zlib directories. -- Added samples/png. -- IMPORTANT: Changed 'no id' number from 0 to -1, in wxEVT_ macros. - Porters, please check particularly your wxTreeCtrl and wxListCtrl - header files. -- Added modules.h/cpp, config.cpp, fileconf.cpp, textfile.cpp/h. - -Alpha 7, March 30th 1998 ------------------------- - -wxMSW: - -- Added tab classes, tab sample. -- Now can return FALSE from OnInit and windows will be - cleaned up properly before exit. -- Improved border handling so panels don't get borders - automatically. -- Debugged MDI activation from Window menu. -- Changes to memory debug handling, including checking for - memory leaks on application exit - but see issues.txt for - unresolved issues. -- Added wxTaskBarIcon (taskbar.cpp/h, plus samples/taskbar) - to allow maintenance of an icon in the Windows 95 taskbar - tray area. -- Got MFC sample working (MFC and wxWindows in the same - application), partly by tweaking ntwxwin.mak settings. -- Got DLL compilation working again (VC++). -- Changed wxProp/Dialog Editor filenames. - -Generic: - -- Added tab classes, tab sample. -- Revised memory.cpp, memory.h slightly; memory.h now #defines - new to WXDEBUG_NEW in DEBUG mode. Windows implementation app.cpp - now checks for leaks on exit. Added memcheck sample. - See src/msw/issues.txt for more details. -- resource.h, resource.cpp changed to make wxDefaultResourceTable - a pointer. Now initialize resource system with - wxInitializeResourceSystem and wxCleanUpResourceSystem, to - allow better control of memory. -- wxString now derives from wxObject, to enable memory leak - checking. -- Added some #include fixes in various files, plus changed - float to long in wxToolBar files. - -Alpha 6, March 10th 1998 ------------------------- - -wxMSW: - -- Found stack error bug - stopped unwanted OnIdle recursion. -- Removed bug in wxTreeCtrl::InsertItem I added in alpha 5. -- Changed exit behaviour in wxApp/wxFrame/wxDialog. Now will - check if the number of top-level windows is zero before - exiting. Also, wxApp::GetTopWindow will return either - m_topWindow or the first member of wxTopLevelWindows, so you - don't have to call wxApp::SetTopWindow. -- Added dynarray.h/dynarray.cpp (from Vadim). -- Added first cut at OLE drag and drop (from Vadim). dnd sample - added. Drop target only at this stage. See src/msw/ole/*.cpp, - wx/include/msw/ole/*.h. WIN32 only because of UUID usage. - Doesn't work with GnuWin32 - no appropriate headers e.g. for - IUnknown. - Doesn't work with BC++ either - crashes on program startup. -- Added Vadim's owner-draw modifications - will probably remain - Windows-only. This enhances wxMenu, wxListBox. See ownerdrw sample. -- Added wxLB_OWNERDRAW for owner-draw listboxes. -- Vadim's wxCheckListBox derives from wxListBox. See checklst sample. - Doesn't entirely work for WIN16. -- Vadim has added wxMenuItem as a separate file menuitem.cpp. It - can also be used as an argument to wxMenu::Append, not just for - internal implementation. -- Some #ifdefs done for MINGW32 compilation (just alter OPTIONS - in makeg95.env, together with mingw32.bat). However, resource - binding is not working yet so most apps with dialogs crash. - -Generic: - -- Added Vadim's dynarray.h, dynarray.cpp. -- Added Vadim's menuitem.cpp. -- Added Windows-specific wxCheckListBox, - owner-draw wxListBox, and drag-and-drop - (see docs/msw/changes.txt). - -Alpha 5, 14th February 1998 --------------------------- - -wxMSW: - -- GENERIC AND MSW-SPECIFIC CODE NOW TREATED AS TWO SEPARATE - DISTRIBUTIONS. This change log will therefore now refer to - the Windows-specific code only. See docs/changes.txt for generic - changes. -- Removed Windows-specific reference counting system (GDI - resources were cleaned up in idle time) - minimal - advantages now we have a wxWin reference counting system. -- Added missing WXDLLEXPORT keywords so DLL compilation works - again. -- Removed most warnings for GnuWin32 compilation. -- Added wxRegion/wxRegionIterator, but haven't yet used it in - e.g. wxDC. - -Generic: - -- GENERIC AND MSW-SPECIFIC CODE NOW TREATED AS TWO SEPARATE - DISTRIBUTIONS. This change log will therefore now refer to - the generic code only. See docs/msw/changes.txt for Windows-specific - changes. -- Readmes, change logs and installation files now go in - platform-specific directories under docs, e.g. docs/msw, - docs/gtk. -- Added DECLARE_APP and IMPLEMENT_APP macros so wxApp object gets - created dynamically, not as a global object. -- Put wxColour into wx/msw/colour.h, src/msw/colour.cpp. -- Changed names of some include/wx/generic headers to be - consistent and to conform to gcc pragma conventions. Also - changed choicesg.cpp to choicdgg.cpp. -- Added gcc pragmas. -- Added gtk inclusion in include/wx headers. -- Added consistent file headings to source and headers. -- Removed lang.cpp, lang.h and references to wxSTR_... variables; - added a few references to wxTransString. -- Added operator to wxTransString that converts automatically - to wxString, so we can say e.g. wxMessageBox(wxTransString("Hello"), ...). -- samples/internat now works (minimally). -- Added wxMouseEvent::GetPosition and - wxMouseEvent::GetLogicalPosition, both returning wxPoints. -- Made wxSize and wxRect contain longs not ints. -- Cured some lemory leaks (thanks Vadim). -- Tidied up OnIdle and introduced RequestMore/MoreRequested so - will only keep processing OnIdle if it returns TRUE from - MoreRequested. - -Alpha 4, 31st January 1998 --------------------------- - -All: - -- Changed wxDC functions to take longs instead of floats. GetSize now takes - integer pointers, plus a version that returns a wxSize. -- const keyword added to various wxDC functions. -- Under Windows, wxDC no longer has any knowledge of whether - an associated window is scrolled or not. Instead, the device - origin is set by wxScrolledWindow in wxScrolledWindow::PrepareDC. -- wxScrolledWindow applications can optionally override the virtual OnDraw - function instead of using the OnPaint event handler. The wxDC passed to - OnDraw will be translated by PrepareDC to reflect scrolling. - When drawing outside of OnDraw, must call PrepareDC explicitly. -- wxToolBarBase/wxToolBarSimple similarly changed to allow for - scrolling toolbars. -- Integrated wxPostScriptDC patches for 1.xx by Chris Breeze, - to help printing with multiple pages. -- IPC classes given base classes (wxConnectionBase etc.) which - define the API used by different implementations. DDE - implementation updated to use these base classes. -- wxHelpInstance now separated into wxHelpControllerBase (base - for all implementations), wxWinHelpController (uses standard - WinHelp), wxXLPHelPController (talks to wxHelp by DDE or - TCP/IP). There will be others eventually, such as - wxHTMLHelpController for Microsoft (and Netscape?) HTML Help. -- Added Vadim Zeitlin's wxString class plus - internationalization code (gettext simulation, wxLocale, etc.). - New files from Vadim: - include\wx\string.h - include\wx\debug.h - include\wx\file.h - include\wx\log.h - include\wx\intl.h - src\common\string.cpp - src\common\log.cpp - src\common\intl.cpp - src\common\file.cpp - No longer use GNU wxString files. -- Split off file-related functions into include\wx\filefn.h and - src\common\filefn.cpp. -- Borland C++ support (WIN32) for main library and - samples, using makefile.b32 files. -- Preparation done for allowing BC++ to compile wxWin as a DLL, - including changes to defs.h. -- wxIntPoint removed, wxPoint is now int, and wxRealPoint - introduced. -- Added wxShowEvent (generated when window is being shown or - hidden). -- Got minimal, docview, mdi samples working for 16-bit VC++ and - cured 16-bit problem with wxTextCtrl (removed global memory - trick). -- Updated GnuWin32 makefiles, checked minimal, mdi, docview samples. - -Alpha 3, September 1997 ------------------------ - -All: - -- wxListCtrl, wxTreeCtrl, wxImageList classes done. -- Instigated new file hierarchy, split files and classes up more logically. -- PrologIO and some other utils now put into core library. -- Revamped print/preview classes, added wxPageSetupDialog. -- Started documentation. - -Alpha 2, 30th April 1997 ------------------------- - -All: - -- EVT_... macros now have at least one argument, for conformance - with MetroWerks compiler. -- Added ids to .wxr file format. -- Got Dialog Editor compiled and running again but need - to extend functionality to be in line with new controls. - Added dialoged\test app to allow dynamic loading of .wxr files - for testing purposes. -- Rewrote wxBitmap to allow installable file type - handlers. -- Rewrote wxBitmapButton, wxStaticBitmap to not use Fafa. -- Wrote most of wxTreeCtrl and sample (need wxImageList to implement it - fully). -- Added back wxRadioBox. -- Tidied up wx_main.cpp, wxApp class, putting PenWin code in - a separate file. - -Alpha 1, 5th April 1997 ------------------------ - -Generic: - -At this point, the following has been achieved: - -- A lot, but not all, of the code has been revamped for better - naming conventions, protection of data members, and use of - wxString instead of char *. -- Obsolete functionality deleted (e.g. default wxPanel layout, - old system event system) and code size reduced. -- Class hierarchy changed (see design doc) - base classes such - as wxbWindow now removed. -- No longer includes windows.h in wxWin headers, by using stand-in - Windows types where needed e.g. WXHWND. -- PrologIO revised. -- wxScrolledWindow, wxStatusBar and new MDI classes added. - MDI is now achived using separate classes, not window styles. -- wxSystemSettings added, and made use of to reflect standard - Windows settings. -- SetButtonFont/SetLabelFont replaced by SetFont; font and colour - settings mucho rationalised. -- All windows are now subclassed with the same window proc to make - event handling far more consistent. Old internal wxWnd and derived - classes removed. -- API for controls revised, in particular addition of - wxValidator parameters and removal of labels for some controls. -- 1 validator written: see examples/validate. -- Event table system introduced (see most samples and - wx_event.cpp/ProcessEvent, wx_event.h). wxEvtHandler - made more flexible, with Push/PopEventHandler allowing a chain - of event handlers. -- wxRadioBox removed - will be added back soon. -- Toolbar class hierarchy revised: - wxToolBarBase - wxToolBarSimple (= old wxToolBar) - wxToolBar95 (= old wxButtonBar under Win95 - wxToolBarMSW (= old wxButtonBar under WIN16/WIN32) -- Constraint system debugged somewhat (sizers now work properly). -- wxFileDialog, wxDirDialog added; other common dialogs now - have class equivalents. Generic colour and font dialogs - rewritten to not need obsolete panel layout. -- .wxr resource system partially reinstated, though needs - an integer ID for controls. Hopefully the resource system - will be replaced by something better and more efficient - in the future. -- Device contexts no longer stored with window and accessed - with GetDC - use wxClientDC, wxPaintDC, wxWindowDC stack - variables instead. -- wxSlider uses trackbar class under Win95, and wxSL_LABELS flag - determines whether labels are shown. Other Win95-specific flags - introduced, e.g. for showing ticks. -- Styles introduced for dealing with 3D effects per window, for - any window: all Win95 3D effects supported, plus transparent windows. -- Major change to allow 3D effect support without CTL3D, under - Win95. -- Bitmap versions of button and checkbox separated out into new - classes, but unimplemented as yet because I intend to remove - the need for Fafa - it apparently causes GPFs in Win95 OSR 2. -- utils/wxprop classes working (except maybe wxPropertyFormView) - in preparation for use in Dialog Editor. -- GNU-WIN32 compilation verified (a month or so ago). - - diff --git a/docs/gpl.txt b/docs/gpl.txt deleted file mode 100644 index b8cf3a1ab2..0000000000 --- a/docs/gpl.txt +++ /dev/null @@ -1,339 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 675 Mass Ave, Cambridge, MA 02139, USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - Appendix: How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) 19yy - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) 19yy name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff --git a/docs/gtk/COPYING.LIB b/docs/gtk/COPYING.LIB deleted file mode 100644 index eb685a5ec9..0000000000 --- a/docs/gtk/COPYING.LIB +++ /dev/null @@ -1,481 +0,0 @@ - GNU LIBRARY GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1991 Free Software Foundation, Inc. - 675 Mass Ave, Cambridge, MA 02139, USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the library GPL. It is - numbered 2 because it goes with version 2 of the ordinary GPL.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Library General Public License, applies to some -specially designated Free Software Foundation software, and to any -other libraries whose authors decide to use it. You can use it for -your libraries, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if -you distribute copies of the library, or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link a program with the library, you must provide -complete object files to the recipients so that they can relink them -with the library, after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - Our method of protecting your rights has two steps: (1) copyright -the library, and (2) offer you this license which gives you legal -permission to copy, distribute and/or modify the library. - - Also, for each distributor's protection, we want to make certain -that everyone understands that there is no warranty for this free -library. If the library is modified by someone else and passed on, we -want its recipients to know that what they have is not the original -version, so that any problems introduced by others will not reflect on -the original authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that companies distributing free -software will individually obtain patent licenses, thus in effect -transforming the program into proprietary software. To prevent this, -we have made it clear that any patent must be licensed for everyone's -free use or not licensed at all. - - Most GNU software, including some libraries, is covered by the ordinary -GNU General Public License, which was designed for utility programs. This -license, the GNU Library General Public License, applies to certain -designated libraries. This license is quite different from the ordinary -one; be sure to read it in full, and don't assume that anything in it is -the same as in the ordinary license. - - The reason we have a separate public license for some libraries is that -they blur the distinction we usually make between modifying or adding to a -program and simply using it. Linking a program with a library, without -changing the library, is in some sense simply using the library, and is -analogous to running a utility program or application program. However, in -a textual and legal sense, the linked executable is a combined work, a -derivative of the original library, and the ordinary General Public License -treats it as such. - - Because of this blurred distinction, using the ordinary General -Public License for libraries did not effectively promote software -sharing, because most developers did not use the libraries. We -concluded that weaker conditions might promote sharing better. - - However, unrestricted linking of non-free programs would deprive the -users of those programs of all benefit from the free status of the -libraries themselves. This Library General Public License is intended to -permit developers of non-free programs to use free libraries, while -preserving your freedom as a user of such programs to change the free -libraries that are incorporated in them. (We have not seen how to achieve -this as regards changes in header files, but we have achieved it as regards -changes in the actual functions of the Library.) The hope is that this -will lead to faster development of free libraries. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, while the latter only -works together with the library. - - Note that it is possible for a library to be covered by the ordinary -General Public License rather than by this special one. - - GNU LIBRARY GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library which -contains a notice placed by the copyright holder or other authorized -party saying it may be distributed under the terms of this Library -General Public License (also called "this License"). Each licensee is -addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also compile or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - c) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - d) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the source code distributed need not include anything that is normally -distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Library General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - Appendix: How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - 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, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! diff --git a/docs/gtk/install.txt b/docs/gtk/install.txt deleted file mode 100644 index cc9979e03d..0000000000 --- a/docs/gtk/install.txt +++ /dev/null @@ -1,441 +0,0 @@ -* The most simple case ------------------------ - -If you compile wxWindows on Unix for the first time and don't -like to read install instructions just do (in the base dir): - -./configure -make -make install - -* The most simple errors ------------------------- - -configure reports, that you don't have GTK 1.0.X installed -although you are certainly sure you have. Well, you have -installed it, but you also have another version of the -GTK installed, which you may need to removed including -other versions of glib (and its headers). - -* The most simple program -------------------------- - -Now create your super-application myfoo.app and compile anywhere -with - -g++ myfoo.cpp `wx-config --libs` `wx-config --cflags` -o myfoo - -* General ------------------------ - -The Unix variants of wxWindows use GNU configure. If you have -problems with your make use GNU make instead. - -If you have general problems with installation, read my -homepage at - - http://wesley.informatik.uni-freiburg.de/~wxxt - -for newest information. If you still don't have any success, -please send a bug report to one of our mailing lists (see -my homepage) INCLUDING A DESCRIPTION OF YOUR SYSTEM AND -YOUR PROBLEM, SUCH AS YOUR VERSION OF GTK, WXGTK, WHAT -DISTRIBUTION YOU USE AND WHAT ERROR WAS REPORTED. I know -this has no effect, but I tried... - -* GUI libraries ------------------------ - -wxWindows/GTK requires the GTK+ library to be installed on your system. -It has to be a stable version, preferebly version 1.0.6. When using -a version previous to 1.0.6 you'll get crashes here and there. - -wxWindows/GTK does NOT work with the 1.1.X versions of the GTK+ library -and we will wait until the 1.2 version comes out and has stabilized -until we'll work with that library. - -You can get the newest version of the GTK+ from the GTK homepage -at - http://www.gtk.org - -We also mirror GTK+ 1.0.6 at my ftp site. You'll find information -about downloading at my homepage. - -* Additional libraries ------------------------ - -wxWindows/Gtk requires a thread library and X libraries -known to work with threads. This is the case on all -commercial Unix-Variants and all Linux-Versions that -are based on glibc 2 except RedHat 5.0 which is broken -in many aspects. As of writing this, these Linux -distributions have correct glibc 2 support: - - - RedHat 5.1 - - Debian 2.0 - - Stampede - - DLD 6.0 - - SuSE 6.0 - -On IRIX you can also use SGI threads if Posix-Threads -are not present. The SGI threads will be detected by -configure automatically. - -You can enable thread support by running - -./configure "--with-threads" -make clean -make -make install - -NB: I included thread support in wxWindows/Gtk, as this -problem will disappear in the near future when all major -Linux Variants have moved to glibc 2. Also, the Linux -Base Standard will include glibc 2 and Posix threads. - -* Create your configuration ------------------------------ - -Usage: - ./configure options - -If you want to use system's C and C++ compiler, -set environment variables CC and CCC as - - % setenv CC cc - % setenv CCC CC - % ./configure options - -Using the SGI native compilers, it is recommended that you -also set CFLAGS and CXXFLAGS before running configure. These -should be set to : - -CFLAGS="-mips3 -n32" -CXXFLAGS="-mips3 -n32" - -This is essential if you want to use the resultant binaries -on any other machine than the one it was compiled on. If you -have a 64bit machine (Octane) you should also do this to ensure -you don't accidently build the libraries as 64bit (which is -untested). - -The SGI native compiler support has only been tested on Irix 6.5. - -to see all the options please use: - - ./configure --help - -The basic philosophy is that if you want to use different -configurations, like a debug and a release version, -or use the same source tree on different systems, -you have only to change the environment variable OSTYPE. -(Sadly this variable is not set by default on some systems -in some shells - on SGI's for example). So you will have to -set it there. This variable HAS to be set before starting -configure, so that it knows which system it tries to -configure for. - -Configure will complain if the system variable OSTYPE has -not been defined. And Make in some circumstances as well... - - -* General options -------------------- - -Normally, you won't have to choose a toolkit, because when -you download wxGTK, it will default to --with-gtk etc. But -if you use all of our CVS repository you have to choose a -toolkit. You must do this by running configure with either of: - - --with-gtk Use the GIMP ToolKit (GTK) - - --with-motif Use either Motif or Lesstif - Configure will look for both. - -The following options handle the kind of library you want to build. - - --with-threads Compile without thread support. - - --without-shared Do not create shared libraries. - - --without-optimise Do not optimise the code. - - --with-profile Add profiling info to the object - files. Currently broken, I think. - - --with-mem_tracing Add built-in memory tracing. - - --with-dmalloc Use the dmalloc memory debugger. - Read more at www.letters.com/dmalloc/ - - --with-debug_info Add debug info to object files and - executables. - - --with-debug_flag Define __DEBUG__ and __WXDEBUG__ when - compiling. - -* Feature Options -------------------- - -As I don't yet care for binary size and target mainly at -producing a shared library, wxWindows's configure system auto- -matically enables all features, as long as they are already -implemented. It is currently NOT possible to disable these -options (in contrast to what configure tells you). - -* Compiling -------------- - -The following must be done in the base directory (e.g. ~/wxGTK -or ~/wxWin or whatever) - -Now the makefiles are created (by configure) and you can compile -the library by typing: - - make - -make yourself some coffee, as it will take some time. On an old -386SX possibly week. During compilation, you'll get a few -warning messages. - -if you want to be more selective: - - make src will build only the base libraries - make samples will build the samples - make other will build everything in other - make user will build everything in user - -Then you may install the library and it's header files under -/usr/local/include/wx and /usr/local/lib respectively. You -have to log in as root (i.e. run "su" and enter the root -password) and type - - make install - -Depending on the configuration of some files, the libraries -and binaries will be placed in different directories. -The "global" binaries and libraries will be placed in: - - bin/$(OSTYPE) and - lib/$(OSTYPE) respectively - -"local" binaries and libraries will be placed in: - - (basedir of that application)/$(OSTYPE). - -This is also the place where all the object-files will go. -(Currently there arent any global binaries). - -If you want to conserve disk space by removing unnecessary -object-files: - - make clean_obj - -will do the work for you. - -* Creating a new Project --------------------------- - -There are two ways to create your own project: - -1) The first way uses the installed libraries and header files -automatically using wx-config - -g++ myfoo.cpp `wx-config --libs` `wx-config --cflags` -o myfoo - -Using this way, a make file for the minimal sample would look -like this - -CC = g++ - -minimal: minimal.o - $(CC) -o minimal minimal.o `wx-config --libs` - -minimal.o: minimal.cpp mondrian.xpm - $(CC) `wx-config --cflags` -c minimal.cpp -o minimal.o - -clean: - rm -f *.o minimal - -This is certain to become the standard way unless we decide -to sitch to tmake. - -2) The other way creates a project within the source code -directories of wxWindows: In this case I propose to put -all contributed programs in the directory "/user", with a -directory of its own. - -This directory then should include the following files: - -Makefile (You can copy this one from any application in samples - probably you will not need to edit this one. There is - only one case where you might be interested in changing - this file, but about that see later.) -Makefile.in (This is the base application-Makefile template, from - which the actual Makefile for each system is created. - More about this later) - -put ALL your source code along with all the other stuff you need for -your application in this directory (subdirectories are welcome). - - -** Something about Makefiles ------------------------------- - -On general principle it should only contain ONE line, which is as follows: - - include ../../setup/general/makeapp - -this will include all the necessary definitions for creating the applications - -the only case where you might want to add another line is the following: -this version of configure also supports creation of source archives of the -application for easy distribution and updates to newer version of wxWindows. - For this purpose all files in the application-directory will be put into -a gziped tar-file in the full notation user//* -if you want to include some other files that you want "more visible", like -a README. or a shell script for easy -compilation/installation/distribution, then you have to add a variable - - DISTRIBUTE_ADDITIONAL= - -to the Makefile. -So it would look like this: - - DISTRIBUTE_ADDITIONAL=README.TheApp - include ../../setup/general/makeapp - -As we have already talked about distribution the command to create a -distribution is: - - make distrib - -NOTE: If you are in the base directory of wxWindows it will create -distribution packages for wxWindows as well as for all packages in the -user directory. - So if you want to create only packages for the files in user, -then go to the directory other and type: - - make distrib - -or if you only want one application to be created then -enter the specific directory and type there: -make distrib - -All the distribution files will be put in the directory -distrib at the base of the wxWindows-tree (where also configure -and template.mak can be found). - -** Something about Makefile.in --------------------------------- - -As you have already seen with Makefile, configure makes a lot of use -if the include statement in make to keep the Makefiles as simple as -possible. - -So basically there are only variables to define and then a include command. -Exception to this rule is if you have special rules for some stuff... -These rules should go AFTER the include statement!!! - -so the general header looks like this: - - # wxWindows base directory - WXBASEDIR=@WXBASEDIR@ - # set the OS type for compilation - OS=@OS@ - # compile a library only - RULE=bin - -and the general footer will look like this: - - # include the definitions now - include ../../../template.mak - -the key variable is RULE, which defines what make should create -in this directory. - -here are some examples: - - RULE description - =========================================================================== - bin creates a local binary (for a global binary prefix bin with g) - additional variables needed: - BIN_TARGET this gives the name of your application - BIN_OBJ this gives the object files needed to - link the application - optional variables are: - BIN_SRC this gives the list of c/c++ files for - which dependencies will be checked. - (This can be achieved with: make depend) - BIN_LINK this gives commands for additional - libraries needed to link the application - --------------------------------------------------------------------------- - bin2 creates two local binaries (for global binaries prefix bin2 with g) - in addition to the variables specified above you MUST also - provide the same variables with BIN2_ instead of BIN_ - --------------------------------------------------------------------------- - lib creates a local library (for a global binary prefix bin with g) - additional variables needed: - LIB_TARGET this gives the name of your library - LIB_OBJ this gives the object files needed for - the library to be build. - optional variables are: - LIB_SRC this gives the list of c/c++ files for - which dependencies will be checked. - libbin and libgbin are also possible and will need in addition - the variables from bin - --------------------------------------------------------------------------- - gslib is similar to lib, but it creates a shared library if the system - supports it. - additional variables needed: - LIB_MAJOR major number of the shared library - LIB_MINOR minor number of the shared library - --------------------------------------------------------------------------- - other additional variables: - - ADD_COMPILE define additional includes/defines that - are needed to compile the object files - (if you need to reference some directory - utils - like wxGrid -, then please - reference them with the variables defined - in template.mak - e.g.: $(SRCDIR),$(UTILS), - $(SAMPLES),$(OTHERS)) - - NEEDED_DEFINES lists all the defines that HAVE to be set in - /include/wx/setup.h to compile correctly. - - SRC_DIR lists all directories that are needed to - compile. (i.e: lists all the directories, - where there are source-files.) But it is - also needed to clean an object and for - machines, for which make does not support - VPATH - -currently there are the following compiling rules provided: -object files are created for the following file extensions: -.c .cc .cpp - -Please have a closer look at the Makefiles in this distribution. - -* Platforms configure is working with ---------------------------------------- - -Please report build succes on any machine. Especially non- -Linux operating systems (which I don't have). - -Original author of the autoconf system for wxxt-1.66 and for this INSTALL -file: - - Martin Sperl sperl@dsn.ast.univie.ac.at - -Ported to wxGTK 0.1: - - Wolfram Gloger wmglo@dent.med.uni-muenchen.de - -Thanks alot to both of them. - -In the hope that it will be useful, - - Robert Roebling roebling@sun2.ruf.uni-freiburg.de - - diff --git a/docs/gtk/licence.txt b/docs/gtk/licence.txt deleted file mode 100644 index e6dcfbd25c..0000000000 --- a/docs/gtk/licence.txt +++ /dev/null @@ -1,56 +0,0 @@ - - -wxWindows Library License, Version 3 -==================================== - - Copyright (C) 1998 Julian Smart, Robert Roebling et al. - - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - WXWINDOWS LIBRARY LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 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 MERCHAN- - TABILITY 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 software, usually in a file named COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - Boston, MA 02111-1307 USA. - - EXCEPTION NOTICE - - 1. As a special exception, the copyright holders of this library give - permission for additional uses of the text contained in this release of - the library as licensed under the wxWindows Library License, applying - either version 3 of the License, or (at your option) any later version of - the License as published by the copyright holders of version 3 of the - License document. - - 2. The exception is that you may create binary object code versions of any - works using this library or based on this library, and use, copy, modify, - link and distribute such binary object code files unrestricted under terms - of your choice. - - 3. If you copy code from files distributed under the terms of the GNU - General Public License or the GNU Library General Public License into a - copy of this library, as this license permits, the exception does not - apply to the code that you add in this way. To avoid misleading anyone as - to the status of such modified files, you must delete this exception - notice from such code and/or adjust the licensing conditions notice - accordingly. - - 4. If you write modifications of your own for this library, it is your - choice whether to permit this exception to apply to your modifications. - If you do not wish that, you must delete the exception notice from such - code and/or adjust the licensing conditions notice accordingly. - - diff --git a/docs/gtk/readme.txt b/docs/gtk/readme.txt deleted file mode 100644 index e8e4f3c9cb..0000000000 --- a/docs/gtk/readme.txt +++ /dev/null @@ -1,62 +0,0 @@ - - Welcome to wxWindows/Gtk 2.01 (beta 3), - -you have downloaded version 2.01 of the GTK+ 1.0 port of -the wxWindows GUI library. - -More information is available from my homepage at: - - http://wesley.informatik.uni-freiburg.de/~wxxt - -and about the wxWindows project as a whole (and the -Windows and Motif ports in particular) can be found -at Julian Smart's homepage at: - - http://web.ukonline.co.uk/julian.smart/wxwin - -Information on how to install can be found in the file -INSTALL.txt, but if you cannot wait, this should work on -all systems - -./configure -make -make install - -Type the following to make the samples - -make samples - -To start the samples, change into the directory that -corresponds to the sample and your system, e.g on a -linux-gnu machine the minimal sample would get started -from the wxWindows base dir with - -./samples/minimal/linux-gnu/minimal - -When you run into problems, please read the INSTALL.txt and -follow those instructions. If you still don't have any success, -please send a bug report to one of our mailing lists (see -my homepage) INCLUDING A DESCRIPTION OF YOUR SYSTEM AND -YOUR PROBLEM, SUCH AS YOUR VERSION OF GTK, WXGTK, WHAT -DISTRIBUTION YOU USE AND WHAT ERROR WAS REPORTED. I know -this has no effect, but I tried... - -The library produced by the install process will be called -libwx_gtk2.a (static) and libwx_gtk2.so.0.1 (shared) so that -once a binary incompatible version of wxWindows/Gtk comes out -we'll augment library version number to avoid linking problems. - -Please send problems concerning installation, feature requests, -bug reports or comments to the wxWindows users Information on -how to subscribe is available from my homepage. - -wxWindows/Gtk doesn't come with any guarantee whatsoever. It might -crash your harddisk or destroy your monitor. It doesn't claim to be -suitable for any special purpose. - - Regards, - - Robert Roebling - - - diff --git a/docs/gtk/todo.txt b/docs/gtk/todo.txt deleted file mode 100644 index 05ba0e3afd..0000000000 --- a/docs/gtk/todo.txt +++ /dev/null @@ -1,23 +0,0 @@ - --------------------- High priority --------------------- - --------------------- Low priority --------------------- - -OwnerDraw for wxListCtrl and others - -> Postponed. - -DnD - -> Must be rewritten for GTK+ 1.1.3 - -wxDebugContext <-> wxLogXXX functions - -> Remove either - -Implement wxPalette - -> I never understood that. Postponed. - -Show accelerator in menus - -> Changed in GTK 1.1.X. Postponed. - -Cooperation with Qt - -> Would be nice. - \ No newline at end of file diff --git a/docs/html/faq.htm b/docs/html/faq.htm deleted file mode 100644 index cbe471dcb6..0000000000 --- a/docs/html/faq.htm +++ /dev/null @@ -1,43 +0,0 @@ - - - -wxWindows 2 FAQ - - - - - - - - - - -
- -wxWindows 2 FAQ - -
- -

- -Welcome to the wxWindows FAQ. Please select a category:

- -

- -

- -For further information, please see the wxWindows Web site, -plus install.txt (per port), todo.txt (per port), and bugs.txt (all ports). -

- - - - - - diff --git a/docs/html/faqgen.htm b/docs/html/faqgen.htm deleted file mode 100644 index e0f0fc6673..0000000000 --- a/docs/html/faqgen.htm +++ /dev/null @@ -1,232 +0,0 @@ - - - -wxWindows 2 FAQ: General - - - - - - - - - - -
- -wxWindows 2 FAQ: General - -
- -

- -See also top-level FAQ page. -


- -

What is wxWindows?

- -wxWindows is a class library that allows you to compile graphical C++ programs on a range of -different platforms. wxWindows defines a common API across platforms, but uses the native graphical user interface (GUI) on each platform, -so your program will take on the native 'look and feel' that users are familiar with.

- -Although GUI applications are mostly built programmatically, there is a dialog editor to help -build attractive dialogs and panels.

- -You don't have to use C++ to use wxWindows: wxWindows 1 has been interfaced to several interpreted languages, -such as CLIPS, Python, Scheme, XLisp and Perl, and there is a Python interface for wxWindows 2. -

- -

Can I use wxWindows 2 for both proprietary (commercial) projects, and GPL'ed projects?

- -Yes. Please see the licence for details, but basically -you can distribute proprietary binaries without distributing any source code, and neither will wxWindows -conflict with GPL code you may be using or developing with it. -

-The conditions for using wxWindows 2 are the same whether you are a personal, academic -or commercial developer. -

- -

Is there support?

- -No official support, but the mailing list is very helpful and some people say that -wxWindows support is better than for much commercial software. The developers are -keen to fix bugs as soon as possible, though obviously there are no guarantees. -

- -

Who uses wxWindows?

- -Many organisations - commercial, government, and academic - across the -world. It's impossible to estimate the true number of users, since -wxWindows is obtained by many different means, and we cannot monitor -distribution. The mailing list contains around 300-400 entries which is -quite large for a list of this type.

- -

I am about to start a wxWindows 1.xx project. Should I use 2 instead?

- -wxWindows 2 is still in beta but it's actually pretty useable (Windows, GTK, Motif).

- -Porting to wxWindows 2 from 1.xx will not be too painful; see the next question -for ways in which you can make it easier.

- -

Why would I want to use wxWindows 2 in preference to wxWindows 1.xx?

- -Some reasons: - -
    -
  • In 2 there is far more flexibility, for example in the way windows can be -nested, and the way events are intercepted. -
  • There is more functionality for producing sophisticated applications, -for example using the wxTreeCtrl and wxListCtrl classes. -
  • There is better C++-conformance (such as usage of wxString and const) which -will make your applications more reliable and easier to maintain. -
  • wxWindows 2 will be better supported than 1.xx. -
  • The GTK version is attractive for people interested in writing Linux and GNOME -applications. -
  • The Mac version will be one of the best frameworks available on that platform. -
- -

How can I prepare for wxWindows 2?

- -To make porting to wxWindows 2 easier in the future, take a look at some -tips for writing existing code in a 2-compatible way.

- -

How much has the API changed since 1.xx?

- -It's difficult to summarize, but some aspects haven't changed very much. For example, if you have some -complex drawing code, you will mostly need to make sure it's parameterised with a device -context (instead of obtaining one from a window or storing it). You won't have -to completely rewrite the drawing code.

- -The way that events are handled has changed, so for example, where you overrode -OnSize before, you now have a non-virtual OnSize with a single event class argument. -To make this function known to wxWindows, you add an entry in an 'event table' using macros. Addition of these macros -will eventually be made easier by a tool which will allow selection from a list -and copy-and-paste into your editor. This is extended to button presses, listbox selection -etc. so callbacks have gone (they may be added back for limited backward compatibility).

- -The class hierarchy has changed to allow greater flexibility but it probably won't affect your -existing application. One exception to this is MDI applications which now use separate MDI classes instead of style -flags. As a result, it won't be possible to switch between MDI and SDI operation at run-time -without further coding, but a benefit is less interdependence between areas of code, -and therefore smaller executable size.

- -Panel items (now called controls) no longer have labels associated with most of them, -and default panel layout has been removed. The idea is that you make greater use -of dialog resources, for better-looking dialogs.

- -

What classes have disappeared?

- -wxForm, wxTextWindow (subsumed into wxTextCtrl). - -

Does wxWindows 2 mean that wxWindows 1.xx is dead?

- -While wxWindows 2 is being developed, there will be further patches to wxWindows 1.xx. -Obviously we are investing most of our energy into the new code, but we're also trying -to fix bugs in the current version.

- -

What platforms will be supported by wxWindows 2?

- -
    -
  • Windows 3.1, Windows 95/98, Windows NT; -
  • Linux and other Unix platforms with GTK+; -
  • Unix with Motif or the free Motif clone Lesstif; -
  • Mac (coming later in 1999); -
  • A BeOS port is being investigated. -
  • A Windows CE port is being investigated. -
  • There are no plans to support OS/2 or XView. However, -you may be able to compile the GTK and Motif versions under OS/2 with X and GTK -installed, or the Windows version with IBM's Open32 extensions. -
-

- -

How does wxWindows 2 support platform-specific features?

- -This is a hotly-debated topic amongst the developers. My own philosophy -is to make wxWindows as platform-independent as possible, but allow in a -few classes (functions, window styles) that are platform-specific. -For example, Windows metafiles and Windows 95 taskbar icons have -their own classes on Windows, but nowhere else. Because these classes -are provided and are wxWindows-compatible, it doesn't take much -coding effort for an application programmer to add support for -some functionality that the user on a particular platform might otherwise -miss. Also, some classes that started off as platform-specific, such -as the MDI classes, have been emulated on other platforms. I can imagine -that even wxTaskBarIcon may be implemented for Unix desktops one day. -

- -In other words, wxWindows is not a 'lowest common denominator' approach, -but it will still be possible to write portable programs using the -core API. Forbidding some platform-specific classes would be a stupid -approach that would alienate many potential users, and encourage -the perception that toolkits such as wxWindows are not up to the demands -of today's sophisticated applications.

- -Currently resources such as bitmaps and icons are handled in a platform-specific -way, but it is hoped to reduce this dependence in due course.

- -Another reason why wxWindows 2 is not a 'lowest common denominator' toolkit is that -some functionality missing on some platform has been provided using generic, -platform-independent code, such as the wxTreeCtrl and wxListCtrl classes.

- -

Does wxWindows use STL? or the standard string class?

- -No. This is a much-discussed topic that has (many times) ended with the conclusion that it is in -wxWindows' best interests to avoid use of templates. Not all compilers can handle -templates adequately so it would dramatically reduce the number of compilers -and platforms that could be supported. It would also be undersirable to make -wxWindows dependent on another large library that may have to be downloaded and installed. -In addition, use of templates can lead to executable bloat, which is something -wxWindows 2 is strenously trying to avoid.

- -The standard C++ string class is not used, again because it is not available to all compilers, -and it is not necessarily a very efficient implementation. Also, we retain more flexibility -by being able to modify our own string class. Some compatibility with the string class -has been built into wxString.

- -There is nothing to stop an application using templates or the string class for its own -purposes.

- -

How is wxWindows 2 being developed?

- -We are using the CVS system to develop and maintain wxWindows. This allows -us to make alterations and upload them instantly to the server in Edinburgh, from -which others can update their source.

- -

How is wxWindows 2 distributed?

- -By ftp, and via the wxWindows CD-ROM.

- -

What are the plans for the future?

- -Currently we're working too hard on getting wxWindows 2 finished (are GUI toolkits ever -finished?) to think very far ahead. However, we know we want to make wxWindows as robust -and well-publicised as possible. We also want to aim for better platform-independence of -resources such as icons and bitmaps, standardising on the PNG for all platforms.

- -Other possibilities include: DCOM/CORBA compatibility; a wxWindows book; an -IDE; -other platforms; other interface abilities such as speech output.

- -We will investigate the possibility of compiler or operating system vendors bundling wxWindows with -their product.

- -The high-level goal of wxWindows is to be thought of as the number one C++ framework, -for virtually any platform. Move over, MFC!

- -

What about Java?

- -The Java honeymoon period is over :-) and people are realising that it cannot -meet all their cross-platform development needs. We don't anticipate a major threat -from Java, and the level of interest in wxWindows is as high as ever.

- -

How can I help the project?

- -Please check out the Backroom pages, -in particular the suggested projects, and -mail Julian Smart or the developers' mailing list with your own suggestions.

- - - - - - diff --git a/docs/html/faqgtk.htm b/docs/html/faqgtk.htm deleted file mode 100644 index 1fe2c3586f..0000000000 --- a/docs/html/faqgtk.htm +++ /dev/null @@ -1,47 +0,0 @@ - - - -wxWindows 2 for GTK FAQ - - - - - - - - - - -
- -wxWindows 2 for GTK FAQ - -
- -

- -See also top-level FAQ page. -


- -

What is wxWindows 2 for GTK?

- -wxWindows 2 for GTK is a port of wxWindows to the GTK+ toolkit, -which is freely available for most flavours of Unix with X. wxWindows 2 for GTK is -often abbreviated to wxGTK. wxGTK has a separate home page here. -

- -

Does wxGTK have GNOME support?

- -Currently wxGTK does not have any features that would involve dependence on any desktop -environment's libraries, so it can work on GNOME, KDE and with other window managers -without installation hassles. Some GNOME and KDE integration features are file based, and -so may be added without dependence on libraries. Other features may be supported in the -future, probably as a separate library. -

- - - - - - - diff --git a/docs/html/faqmac.htm b/docs/html/faqmac.htm deleted file mode 100644 index 182e458cbc..0000000000 --- a/docs/html/faqmac.htm +++ /dev/null @@ -1,37 +0,0 @@ - - - -wxWindows 2 for Mac FAQ - - - - - - - - - - -
- -wxWindows 2 for Mac FAQ - -
- -

- -See also top-level FAQ page. -


- -

When is wxMac 2 due to be released?

- -There is a preview available. -A beta release can be expected by early Q2 1999. The author of this port -is Stefan Csomor (csomor@advancedconcepts.ch). -

- - - - - - diff --git a/docs/html/faqmot.htm b/docs/html/faqmot.htm deleted file mode 100644 index ed76c94145..0000000000 --- a/docs/html/faqmot.htm +++ /dev/null @@ -1,96 +0,0 @@ - - - -wxWindows 2 for Motif FAQ - - - - - - - - - - -
- -wxWindows 2 for Motif FAQ - -
- -

- -See also top-level FAQ page. -


- -

What version of Motif do I need?

- -You will need version 1.2 or above. Version 2 should also be fine. Some people -have had a positive experience with Lesstif, -a free Motif clone. (Note from Julian Smart - I use the Linux version of MetroLink Motif). - -

- -

What features are missing or partially implemented?

- -The following classes are not yet implemented: wxSpinButton, wxCheckListBox, wxJoyStick, -wxGLCanvas.

- -The following classes are not likely to be implemented because there is no sensible -equivalent on Motif: wxMiniFrame, wxTaskBar.

- -wxNotebook works for smaller dialogs (see notebook sample) but has some problems -with a more complex situation (see the controls sample: initial resizing is very apparent). -

- -These features are not yet implemented:

- -

    -
  • Clipboard and drag and drop support are currently under development. Motif clipboard support -should work, but currently for text only. -
  • Support for selection of specific visuals. -
  • Wide character support (but when Unicode is supported under Windows, this support will -be relatively easy to add). -
  • Configurable colour/font settings (they are currently hard-wired in wxSystemSettings). -
  • OnEraseBackground. -
  • OnPaint optimization and backing pixmap. -
  • A help system (please use wxHelpController and Netscape instead). -
- -

- -

Does Dialog Editor work with wxWindows for Motif?

- -Suport for Dialog Editor is almost there, but there are some wrinkles to iron -out. You may find it's useful though: compile it and see. -

- -

How do I switch between debugging and release compilation modes?

- -Unfortunately the makefile system doesn't currently allow you to compile -for both simultaneously: you need -to recompile wxWindows and your application having adjusted make.env. However, -you could rename the binary and release library archives, and adjust your makefiles -to use the appropriate one (or change a symbolic link). -

- -

Why are windows are not refreshed properly until I resize them?

- -Very occasionally you can experience this glitch, probably because sometimes the -window tries to resize and repaint itself before the final size is known. The workaround -is to add code like this after window creation and initialization:

- -

-#ifdef __WXMOTIF__
-  wxNoOptimize noOptimize;
-  window->SetSize(-1, -1, w, h);
-#endif
-
-

- - - - - - - diff --git a/docs/html/faqmsw.htm b/docs/html/faqmsw.htm deleted file mode 100644 index 2f600a7cf6..0000000000 --- a/docs/html/faqmsw.htm +++ /dev/null @@ -1,154 +0,0 @@ - - - -wxWindows 2 for Windows FAQ - - - - - - - - - - -
- -wxWindows 2 for Windows FAQ - -
- -

- -See also top-level FAQ page. -


- -

Which Windows platforms are supported?

- -wxWindows can be used to develop and deliver applications on Windows 3.1, Win32s, -Windows 95, Windows 98, and Windows NT. A Windows CE version is being looked into (see below).

- -wxWindows 2 is designed to make use of WIN32 features and controls. However, unlike Microsoft, -we have not forgotten users of 16-bit Windows. Most features -work under Windows 3.1, including wxTreeCtrl and wxListCtrl using the generic implementation. -However, don't expect very Windows-specific classes to work, such as wxTaskBarIcon. The wxRegConfig -class doesn't work either because the Windows 3.1 registry is very simplistic. Check out the 16-bit -makefiles to see what other files have been left out. -

-16-bit compilation is supported under Visual C++ 1.5, and Borland BC++ 4 to 5. -

- -wxWindows 2 for Windows will also compile on Unix with gcc using TWIN32 from Willows, -although TWIN32 is still in a preliminary state. The resulting executables are -Unix binaries that work with the TWIN32 Windows API emulator.

- -You can also compile wxWindows 2 for Windows on Unix with Cygwin or Mingw32, resulting -in executables that will run on Windows. So in theory you could write your applications -using wxGTK or wxMotif, then check/debug your wxWindows for Windows -programs with TWIN32, and finally produce an ix86 Windows executable using Cygwin/Mingw32, -without ever needing a copy of Microsoft Windows. See the Technical Note on the Web site detailing cross-compilation.

- -

What about Windows CE?

- -This is under consideration, though we need to get wxWindows Unicode-aware first. -There are other interesting issues, such as how to combine the menubar and toolbar APIs -as Windows CE requires. But there's no doubt that it will be possible, albeit -by mostly cutting down wxWindows 2 API functionality, and adding a few classes here -and there. Since wxWindows for 2 produces small binaries (less than 300K for -the statically-linked 'minimal' sample), shoehorning wxWindows 2 into a Windows CE device's limited -storage should not be a problem.

- -

What compilers are supported?

- -Please see the wxWindows 2 for Windows install.txt file for up-to-date information, but -currently the following are known to work:

- -

    -
  • Visual C++ 1.5, 4.0, 5.0, 6.0 -
  • Borland C++ 4.5, 5.0 -
  • Borland C++Builder 1.0, 3.0 -
  • Watcom C++ 10.6 (WIN32) -
  • Cygwin b20 -
  • Mingw32 -
  • MetroWerks CodeWarrior 4 -
-

- -There is a linking problem with Symantec C++ which I hope someone can help solve. -

- -

Which is the best compiler to use with wxWindows 2?

- -It's partly a matter of taste, but I (JACS) prefer Visual C++ since the debugger is very -good, it's very stable, the documentation is extensive, and it generates small executables. -Since project files are plain text, it's easy for me to generate appropriate project files -for wxWindows samples.

- -Borland C++ is fine - and very fast - but it's hard (impossible?) to use the debugger without using project files, and -the debugger is nowhere near up to VC++'s quality. The IDE isn't great.

- -C++Builder's power isn't really used with wxWindows since it needs integration with its -own class library (VCL). For wxWindows, I've only used it with makefiles, in which case -it's almost identical to BC++ 5.0 (the same makefiles can be used).

- -You can't beat Cygwin's price (free), and you can debug adequately using gdb. However, it's -quite slow to compile since it does not use precompiled headers.

- -CodeWarrior is cross-platform - you can debug and generate Windows executables from a Mac, but not -the other way around I think - but the IDE is, to my mind, a bit primitive.

- -Watcom C++ is a little slow and the debugger is not really up to today's standards.

- -

Is Unicode supported?

- -No, although there are other internationalisation features.

- -However, the issues surrounding Unicode support have been looked into so we know -what we need to do, and have some header files ready to use containing appropriate -type definitions. Just about every file in wxWindows will need changes, due to the -pervasive nature of characters and character arrays. Unicode support is needed -for the port to Windows CE (see above).

- -

Can you compile wxWindows 2 as a DLL?

- -Yes (using the Visual C++ or Borland C++ makefile), but be aware that distributing DLLs is a thorny issue -and you may be better off compiling statically-linked applications, unless you're -delivering a suite of separate programs, or you're compiling a lot of wxWindows applications -and have limited hard disk space.

- -With a DLL approach, and with different versions and configurations of wxWindows -needing to be catered for, the end user may end up with a host of large DLLs in his or her Windows system directory, -negating the point of using DLLs. Of course, this is not a problem just associated with -wxWindows! -

- -

How can I reduce executable size?

- -You can compile wxWindows as a DLL (see above, VC++/BC++ only at present). You should also -compile your programs for release using non-debugging and space-optimisation options.

- -Statically-linked wxWindows 2 programs are smaller than wxWindows 1.xx programs, because of the way -wxWindows 2 has been designed to reduce dependencies between classes, and other -techniques. The linker will not include code from the library that is not (directly or -indirectly) referenced -by your application. So for example, the 'minimal' sample is less than 300KB using VC++ 6.

- -If you want to distribute really small executables, you can -use Petite -by Ian Luck. This nifty utility compresses Windows executables by around 50%, so your 500KB executable -will shrink to a mere 250KB. With this sort of size, there is reduced incentive to -use DLLs.

- - -

Will wxWindows be compatible with MFC?

- -There is a sample which demonstrates MFC and wxWindows code co-existing in the same -application. However, don't expect to be able to enable wxWindows windows with OLE-2 -functionality using MFC.

- - - - - - - diff --git a/docs/html/gettext/gettext.htm b/docs/html/gettext/gettext.htm deleted file mode 100644 index c48fc3708b..0000000000 --- a/docs/html/gettext/gettext.htm +++ /dev/null @@ -1,4961 +0,0 @@ - - - - -GNU gettext utilities - - -

GNU gettext tools, version 0.10

-

Native Language Support Library and Tools

-

Edition 0.10, 26 November

-
Ulrich Drepper
-
Jim Meyering
-
Pinard
-

-


- -

-Copyright (C) 1995 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 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 this permission notice may be stated in a translation approved -by the Foundation. - -

- - - -

Introduction

- - -
-

-This manual is still in DRAFT state. Some sections are still -empty, or almost. We keep merging material from other sources -(essentially email folders) while the proper integration of this -material is delayed. -

- -

-In this manual, we use he when speaking of the programmer or -maintainer, she when speaking of the translator, and they -when speaking of the installers or end users of the translated program. -This is only a convenience for clarifying the documentation. It is -absolutely not meant to imply that some roles are more appropriate -to males or females. Besides, as you might guess, GNU gettext -is meant to be useful for people using computers, whatever their sex, -race, religion or nationality! - -

-

-This chapter explains what are the goals seeked by the mere existence -of GNU gettext. Then, it explains a few wide concepts around -Native Language Support, and situates message translation in regard -to other aspects of national and cultural variance, as applicable -to programs. It also surveys what are those files used to convey -translations. It explains how the various tools interrelate in the -initial generation for these files, and later, how the maintenance -cycle usually operate. - -

- - - -

The Purpose of GNU gettext

- -

-Usually, programs are written and documented in English, and use -English at execution time for interacting with users. This is true -not only from within GNU, but also in a great deal of commercial -and free software. Using a common language is quite handy for -communication between developers, maintainers and users from all -countries. On the other hand, most people are less comfortable with -English than with their own native language, and would rather prefer -using their mother tongue for day to day's work, as far as possible. -Many would simply love seeing their computer screen showing -a lot less of English, and far more of their own spoken language. - -

-

-However, to some people, this dream might appear so far fetched that -they may believe it is not even worth spending time thinking about -it, and they have no confidence at all that the dream might ever -become true. Many did not loose hope yet, and organized themselves. -The GNU Translation Project is a formalization of this hope into a -workable structure, which has a good chance to get all of us nearer -the achievement of a truly multi-lingual set of programs. - -

-

-GNU gettext is an important step for the GNU Translation -Project, as it is an asset on which we may build many other steps. -This package offers to programmers, translators and even users, a -well integrated set of tools and documentation. Specifically, the GNU -gettext utilities are a set of tools that provides a framework -to help other GNU packages produce multi-lingual messages. These tools -include a set of conventions about how programs should be written to -support message catalogs, a directory and file naming organization -for the message catalogs themselves, a runtime library supporting the -retrieval of translated messages, and a few stand-alone programs to -massage in various ways the sets of translatable strings, or already -translated strings. A special GNU Emacs mode also helps interested -parties into preparing these sets, or bringing them up to date. - -

-

-GNU gettext is designed so it minimizes the impact of -internationalization on program sources, keeping this impact as small -and hardly noticeable as possible. Internationalization has better -chances of succeeding if it is very light weighted, or at least, -appear to be so, when looking at program sources. - -

-

-The GNU Translation Project also uses the GNU gettext -distribution as a vehicle for documenting its structure and methods, -even if this goes beyond the technicalities of the GNU gettext -proper. By doing so, translators will find in a single place, as -far as possible, all they need to know for properly doing their -translating work. Also, this supplementary documentation might also -help programmers, and even curious users, at understanding how GNU -gettext is related to the remainder of the GNU Translation -Project, and consequently, have a glimpse at the big picture. - -

- - -

I18n, L10n, and Such

- -

-Two long words appear all the time when we discuss support of native -language in programs, and these words have a precise meaning, worth -being explained here, once and for all in this document. The words are -internationalization and localization. Many people, -tired of writing these long words over and over again, took the -habit of writing i18n and l10n instead, quoting the first -and last letter of each word, and replacing the run of intermediate -letters by a number merely telling how many such letters there are. -But in this manual, in the sake of clarity, we will patiently write -the names in full, each time... - -

-

-By internationalization, one refers to the operation by which a -program, or a set of programs turned into a package, is made aware and -able to support multiple languages. This is a generalization process, -by which the programs are untied from using only English strings or -other English specific habits, and connected to generic ways of doing -the same, instead. Program developers may use various techniques to -internationalize their programs, some of them have been standardized. -GNU gettext offers one of these standards. See section The Programmer's View. - -

-

-By localization, one means the operation by which, in a set -of programs already internationalized, one gives the program all -needed information so that it can bend itself to handle its input -and output in a fashion which is correct for some native language and -cultural habits. This is a particularisation process, by which generic -methods already implemented in an internationalized program are used -in specific ways. The programming environment puts several functions -to the programmers disposal which allow this runtime configuration. -The formal description of specific set of cultural habits for some -country, together with all associated translations targeted to the -same native language, is called the locale for this language -or country. Users achieve localization of programs by setting proper -values to special environment variables, prior to executing those -programs, identifying which locale should be used. - -

-

-In fact, locale message support is only one component of the cultural -data that makes up a particular locale. There are a whole host of -routines and functions provided to aid programmers in developing -internationalized software and which allows them to access the data -stored in a particular locale. When someone presently refers to a -particular locale, they are obviously referring to the data stored -within that particular locale. Similarly, if a programmer is referring -to "accessing the locale routines", they are referring to the -complete suite of routines that access all of the locale's information. - -

-

-One uses the expression Native Language Support, or merely NLS, -for speaking of the overall activity or feature encompassing both -internationalization and localization, allowing for multi-lingual -interactions in a program. In a nutshell, one could say that -internationalization is the operation by which further localizations -are made possible. - -

-

-Also, very roughly said, when it comes to multi-lingual messages, -internationalization is usually taken care of by programmers, and -localization is usually taken care of by translators. - -

- - -

Aspects in Native Language Support

- -

-For a totally multi-lingual distribution, there are many things to -translate beyond output messages. - -

- -
    -
  • - -As of today, GNU gettext offers a complete toolset for -translating messages output by C programs. Perl scripts and shell -scripts also need to be translated. Even if there are some hooks -so this can be done, these hooks are not integrated as well as they -should be. - -
  • - -Some programs, like autoconf or bison, are able -to produce other programs (or scripts). Even if the generating -programs themselves are internationalized, the generated programs they -produce may need internationalization on their own, and this indirect -internationalization could be automated right from the generating -program. In fact, quite usually, generating and generated programs -could be internationalized independently, as the effort needed is -fairly orthogonal. - -
  • - -A few programs include textual tables which might need translation -themselves, independently of the strings contained in the program -itself. For example, RFC 1345 gives an English description for each -character which GNU recode is able to reconstruct at execution. -Since these descriptions are extracted from the RFC by mechanical means, -translating them properly would require a prior translation of the RFC -itself. - -
  • - -Almost all programs accept options, which are often worded out so to -be descriptive for the English readers; one might want to consider -offering translated versions for program options as well. - -
  • - -Many programs read, interpret, compile, or are somewhat driven by -input files which are texts containing keywords, identifiers, or -replies which are inherently translatable. For example, one may want -gcc to allow diacriticized characters in identifiers or use -translated keywords; `rm -i' might accept something else than -`y' or `n' for replies, etc. Even if the program will -eventually make most of its output in the foreign languages, one has -to decide whether the input syntax, option values, etc., are to be -localized or not. - -
  • - -The manual accompanying a package, as well as all documentation files -in the distribution, could surely be translated, too. Translating a -manual, with the intent of later keeping up with updates, is a major -undertaking in itself, generally. - -
- -

-As we already stressed, translation is only one aspect of locales. -Other internationalization aspects are not currently handled by GNU -gettext, but perhaps may be handled in future versions. There -are many attributes that are needed to define a country's cultural -conventions. These attributes include beside the country's native -language, the formatting of the date and time, the representation of -numbers, the symbols for currency, etc. These local rules are -termed the country's locale. The locale represents the knowledge -needed to support the country's native attributes. - -

-

-There are a few major areas which may vary between countries and -hence, define what a locale must describe. The following list helps -putting multi-lingual messages into the proper context of other tasks -related to locales, and also presents some other areas which GNU -gettext might eventually tackle, maybe, one of these days. - -

-
- -
Characters and Codesets -
-The codeset most commonly used through out the USA and most English -speaking parts of the world is the ASCII codeset. However, there are -many characters needed by various locales that are not found within -this codeset. The 8-bit ISO 8859-1 code set has most of the special -characters needed to handle the major European languages. However, in -many cases, the ISO 8859-1 font is not adequate. Hence each locale -will need to specify which codeset they need to use and will need -to have the appropriate character handling routines to cope with -the codeset. - -
Currency -
-The symbols used vary from country to country as does the position -used by the symbol. Software needs to be able to transparently -display currency figures in the native mode for each locale. - -
Dates -
-The format of date varies between locales. For example, Christmas day -in 1994 is written as 12/25/94 in the USA and as 25/12/94 in Australia. -Other countries might use ISO 8061 dates, etc. - -Time of the day may be noted as hh:mm, hh.mm, -or otherwise. Some locales require time to be specified in 24-hour -mode rather than as AM or PM. Further, the nature and yearly extent -of the Daylight Saving correction vary widely between countries. - -
Numbers -
-Numbers can be represented differently in different locales. -For example, the following numbers are all written correctly for -their respective locales: - - -
-12,345.67       English
-12.345,67       French
-1,2345.67       Asia
-
- -Some programs could go further and use different unit systems, like -English units or Metric units, or even take into account variants -about how numbers are spelled in full. - -
Messages -
-The most obvious area is the language support within a locale. This is -where GNU gettext provide an ease for developers and users to -easily change the language that the software uses to communicate to -the user. - -
- -

-In the near future we see no chance that beside message handling -more components of locale will be made available for use in other -GNU packages. The reason for this is that most modern system provide -a more or less reasonable support for at least some of the missing -components. Another point is that the GNU libc and Linux will get -a new and complete implementation of the whole locale functionality -which could be adopted by system lacking a reasonable locale support. - -

- - -

Files Conveying Translations

- -

-The letters PO in `.po' files means Portable Object, to -distinguish it from `.mo' files, where MO stands for Machine -Object. This paradigm, as well as the PO file format, is inspired -by the NLS standard developed by Uniforum, and implemented by Sun -in their Solaris system. - -

-

-PO files are meant to be read and edited by humans, and associate each -original, translatable string of a given package with its translation -in a particular target language. A single PO file is dedicated to -a single target language. If a package supports many languages, -there is one such PO file per language supported, and each package -has its own set of PO files. These PO files are best created by -the xgettext program, and later updated or refreshed through -the tupdate program. Program xgettext extracts all -marked messages from a set of C files and initializes a PO file with -empty translations. Program tupdate takes care of adjusting -PO files between releases of the corresponding sources, commenting -obsolete entries, initializing new ones, and updating all source -line references. Files ending with `.pot' are kind of base -translation files found in distributions, in PO file format, and -`.pox' files are often temporary PO files. - -

-

-MO files are meant to be read by programs, and are binary in nature. -A few systems already offer tools for creating and handling MO files -as part of the Native Language Support coming with the system, but the -format of these MO files is often different from system to system, -and non-portable. They do not necessary use `.mo' for file -extensions, but since system libraries are also used for accessing -these files, it works as long as the system is self-consistent about -it. If GNU gettext is able to interface with the tools already -provided with systems, it will consequently let these provided tools -take care of generating the MO files. Or else, if such tools are not -found or do not seem usable, GNU gettext will use its own ways -and its own format for MO files. Files ending with `.gmo' are -really MO files, when it is known that these files use the GNU format. - -

- - -

Overview of GNU gettext

- -

-The following diagram summarizes the relation between the files -handled by GNU gettext and the tools acting on these files. -It is followed by a somewhat detailed explanations, which you should -read while keeping an eye on the diagram. Having a clear understanding -of these interrelations would surely help programmers, translators -and maintainers. - -

- -
-Original C Sources ---> PO mode ---> Marked C Sources ---.
-                                                         |
-              .---------<--- GNU gettext Library         |
-.--- make <---+                                          |
-|             `---------<--------------------+-----------'
-|                                            |
-|   .-----<--- PACKAGE.pot <--- xgettext <---'   .---<--- PO Compendium
-|   |                                            |             ^
-|   |                                            `---.         |
-|   `---.                                            +---> PO mode ---.
-|       +----> tupdate -------> LANG.pox --->--------'                |
-|   .---'                                                             |
-|   |                                                                 |
-|   `-------------<---------------.                                   |
-|                                 +--- LANG.po <--- New LANG.pox <----'
-|   .--- LANG.gmo <--- msgfmt <---'
-|   |
-|   `---> install ---> /.../LANG/PACKAGE.mo ---.
-|                                              +---> "Hello world!"
-`-------> install ---> /.../bin/PROGRAM -------'
-
- -

-The indication `PO mode' appears in two places in this picture, -and you may safely read it as merely meaning "hand editing", using -any editor of your choice, really. However, for those of you being -the lucky users of GNU Emacs, PO mode has been specifically created -for providing a cosy environment for editing or modifying PO files. -While editing a PO file, PO mode allows for the easy browsing of -auxiliary and compendium PO files, as well as following references into -the set of C program sources from which PO files has been derived. -It has a few special features, among which the interactive marking -of program strings as translatable, and the validatation of PO files -with easy repositioning to PO file lines showing errors. - -

-

-As a programmer, the first step into bringing GNU gettext -into your package is identifying, right in the C sources, which -strings are meant to be translatable, and which are untranslatable. -This tedious job can be done a little more comfortably using PO -mode, but you can use any means being usual to you for modifying your -C sources. Some other simple, standard changes are also needed to -properly initialize the translation library. See section Preparing Program Sources, for -more information about all this. - -

-

-Once the C sources have been modified, the xgettext program -is used to find and extract all translatable strings, and create an -initial PO file out of all these. This `package.pot' file -contains all original program strings, it has sets of pointers to -exactly where in C sources each string is used, and all translations -are set to empty. The letter t in `.pot' marks that this is -a Template PO file, not yet oriented towards any particular language. -See section Invoking the xgettext Program, for more details about how one calls the -xgettext program. If you are really lazy, you might -be interested at working a lot more right away, and preparing the -whole distribution setup (see section The Maintainer's View). By doing so, you -spare typing the xgettext command yourself, as make -should now generate the proper things automatically for you! - -

-

-The first time through, there is no `lang.po' yet, so the -tupdate step may be skipped and replaced by a mere copy of -`package.pot' to `lang.pox', where lang -represents the target language. - -

-

-Then comes the initial translation of messages. Translation in -itself is a whole matter, still exclusively meant for humans, -and whose complexity far overwhelms the level of this manual. -Nevertheless, a few hints are given in some other chapter of this -manual (see section The Translator's View). You will also find there indications -about how to contact translating teams, or becoming part of them, -for sharing your translating concerns with others who target the same -native language. - -

-

-While adding the translated messages into the `lang.pox' -PO file, if you do not have GNU Emacs handy, you are on your own -for ensuring that your fully respect the PO file format, and quoting -conventions (see section The Format of PO Files). This is surely not an impossible task, -as this is the way many people handled PO files already for Uniforum or -Solaris. On the other hand, using PO mode in GNU Emacs, most details -of PO file format are taken care for you, but you have to acquire -some familiarity with PO mode itself. Besides main PO mode commands -(see section Main Commands), you should know how to move between entries -(see section Entry Positioning), and how to handle untranslated entries -(see section Untranslated Entries). - -

-

-If some common translations have already been saved into a compendium -PO file, translators may use PO mode for initializing untranslated -entries from the compendium, and also save selected translations into -the compendium, updating it (see section Using Translation Compendiums). Compendium files -are meant to be exchanged between members of a given translation team. - -

-

-Programs, or packages of programs, are dynamic in nature: users write -bug reports and suggestion for improvements, maintainers react by -modifying programs in various ways. The fact that a package has -already been internationalized should not make maintainers shy -of adding new strings, or modifying strings already translated. -They just do their job the best they can. For the GNU Translation -Project to work smoothly, it is important that maintainers do not -carry translation concerns on their already loaded shoulders, and that -translators be kept as free as possible of programmatic concerns. - -

-

-The only concern maintainers should have is carefully marking new -strings are translatable, when they should be, and do not otherwise -worry about them being translated, as this will come in proper time. -Consequently, when programs and their strings are adjusted in various -ways by maintainers, and for matters usually unrelated to translation, -xgettext would construct `package.pot' files which are -evolving over time, so the translations carried by `lang.po' -are slowly fading out of date. - -

-

-It is important for translators (and even maintainers) to understand -that package translation is a continuous process in the lifetime of a -package, and not something which is done once and for all at the start. -After an initial burst of translation activity for a given package, -interventions are needed once in a while, because here and there, -translated entries become obsolete, and new untranslated entries -appear, needing translation. - -

-

-The tupdate program has the purpose of refreshing an already -existing `lang.po' file, by comparing it with a newer -`package.pot' template file, extracted by xgettext -out of recent C sources. The refreshing operation adjusts all -references to C source locations for strings, since these strings -move as programs are modified. Also, tupdate comments out as -obsolete, in `lang.pox', those already translated entries -which are no longer used in the program sources (see section Obsolete Entries. It finally discovers new strings and insert them in -the resulting PO file as untranslated entries (see section Untranslated Entries. See section Invoking the tupdate Program, for more information about what -tupdate really does. - -

-

-Whatever route or means taken, the goal is obtaining an updated -`lang.pox' file offering translations for all strings. -When this is properly achieved, this file `lang.pox' may -take the place of the previous official `lang.po' file. - -

-

-The time mobility, or fluidity of PO files, is an integral part of -the translation game, and should be well understood, and accepted. -People resisting it will have a hard time participating in the GNU -Translation Project, or will give a hard time to other participants! -In particular, maintainers should relax and include all available PO -files in their distributions, even if these have not recently been -updated, without banging or otherwise trying to exert pressure on the -translator teams to get the job done. The pressure should rather -come from the community of users speaking a particular language, -and maintainers should consider themselves fairly relieved of any -concern about the adequacy of translation files. On the other hand, -translators should reasonably try updating the PO files they are -responsible for, while the package is undergoing pretest, prior to -an official distribution. - -

-

-Once the PO file is complete and dependable, the msgfmt program -is used for turning the PO file into a machine-oriented format, which -may yield efficient retrieval of translations by the programs of the -package, whenever needed at runtime (see section The Format of GNU MO Files). See section Invoking the msgfmt Program, for more information about all modalities of execution -for the msgfmt program. - -

-

-Finally, the modified and marked C sources are compiled and linked -with the GNU gettext library, usually through the operation of -make, given a suitable `Makefile' exists for the project, -and the resulting executable is installed somewhere users will find it. -The MO files themselves should also be properly installed. Given the -appropriate environment variables are set (see section Magic for End Users), the -program should localize itself automatically, whenever it executes. - -

-

-The remaining of this manual has the purpose of deepening the various -steps outlined in this section. - -

- - -

PO Files and PO Mode Basics

- -

-The GNU gettext toolset helps programmers and translators -at producing, updating and using translation files, mainly those -PO files which are textual, editable files. This chapter insists -on the format of PO files, and contains a PO mode starter. PO mode -description is spread over this manual instead of being concentrated -in one place, this chapter presents only the basics of PO mode. - -

- - - -

Completing GNU gettext Installation

- -

-Once you have received, unpacked, configured and compiled the GNU -gettext distribution, the `make install' command puts in -place the programs xgettext, msgfmt, gettext, and -tupdate, as well as their available message catalogs. For -completing a comfortable installation, you might also want to make the -PO mode available to your GNU Emacs users. - -

-

-To finish the installation of the PO mode, you might want modify your -file `.emacs', once and for all, so it contains a few lines looking -like: - -

- -
-(setq auto-mode-alist
-      (cons '("\\.pox?\\'" . po-mode) auto-mode-alist))
-(autoload 'po-mode "po-mode")
-
- -

-Later, whenever you edit some `.po' or `.pox' file, Emacs -loads `po-mode.elc' (or `po-mode.el') as needed, and -automatically activate PO mode commands for the associated buffer. -The string PO appears in the mode line for any buffer for -which PO mode is active. Many PO files may be active at once in a -single Emacs session. - -

- - -

The Format of PO Files

- -

-A PO file is made up of many entries, each entry holding the relation -between an original untranslated string and its corresponding -translation. All entries in a given PO file usually pertain -to a single project, and all translations are expressed in a single -target language. One PO file entry has the following schematic -structure: - -

- -
-white-space
-#  translator-comments
-#. automatic-comments
-#: reference...
-msgid untranslated-string
-msgstr translated-string
-
- -

-The general structure of a PO file should be well understood by -the translator. When using PO mode, very little has to be known -about the format details, as PO mode takes care of them for her. - -

-

-Entries begin with some optional white space. Usually, when generated -through GNU gettext tools, there is exactly one blank line -between entries. Then comments follow, on lines all starting with the -character #. There are two kinds of comments: those which have -some white space immediately following the #, which comments are -created and maintained exclusively by the translator, and those which -have some non-white character just after the #, which comments -are created and maintained automatically by GNU gettext tools. -All comments, of any kind, are optional. - -

-

-After white space and comments, entries show two strings, giving -first the untranslated string as it appears in the original program -sources, and then, the translation of this string. The original -string is introduced by the keyword msgid, and the translation, -by msgstr. The two strings, untranslated and translated, -are quoted in various ways in the PO file, using " -delimiters and \ escapes, but the translator does not really -have to pay attention to the precise quoting format, as PO mode fully -intend to take care of quoting for her. - -

-

-The msgid strings, as well as automatic comments, are produced -and managed by other GNU gettext tools, and PO mode does not -provide means for the translator to alter these. The most she can -do is merely deleting them, and only by deleting the whole entry. -On the other hand, the msgstr string, as well as translator -comments, are really meant for the translator, and PO mode gives her -the full control she needs. - -

-

-It happens that some lines, usually whitespace or comments, follow the -very last entry of a PO file. Such lines are not part of any entry, -and PO mode is unable to take action on those lines. By using the -PO mode function M-x po-normalize, the translator may get -rid of those spurious lines. See section Normalizing Strings in Entries. - -

-

-The remainder of this section may be safely skipped for those using -PO mode, yet it may be interesting for everybody to have a better -idea of the precise format of a PO file. On the other hand, those -not having GNU Emacs handy should carefully continue reading on. - -

-

-Each of untranslated-string and translated-string respects -the C syntax for a character string, including the surrounding quotes -and imbedded backslashed escape sequences. When the time comes -to write multi-line strings, one should not use escaped newlines. -Instead, a closing quote should follow the last character on the -line to be continued, and an opening quote should resume the string -at the beginning of the following PO file line. For example: - -

- -
-msgid ""
-"Here is an example of how one might continue a very long string\n"
-"for the common case the string represents multi-line output.\n"
-
- -

-In this example, the empty string is used on the first line, for -allowing the better alignment of the H from the word `Here' -over the f from the word `for'. In this example, the -msgid keyword is followed by three strings, which are meant -to be concatenated. Concatenating the empty string does not change -the resulting overall string, but it is a way for us to comply with -the necessity of msgid to be followed by a string on the same -line, while keeping the multi-line presentation left-justified, as -we find this to be cleaner disposition. The empty string could have -been omitted, but only if the string starting with `Here' was -promoted on the first line, right after msgid.(1) It was not really necessary -either to switch between the two last quoted strings immediately after -the newline `\n', the switch could have occurred after any -other character, we just did it this way because it is neater. - -

-

-One should carefully distinguish between end of lines marked as -`\n' inside quotes, which are part of the represented -string, and end of lines in the PO file itself, outside string quotes, -which have no incidence on the represented string. - -

-

-Outside strings, white lines and comments may be used freely. -Comments start at the beginning of a line with `#' and extend -until the end of the PO file line. Comments written by translators -should have the initial `#' immediately followed by some white -space. If the `#' is not immediately followed by white space, -this comment is most likely generated and managed by specialized GNU -tools, and might disappear or be replaced unexpectandly when the PO -file is given to tupdate. - -

- - -

Main Commands

- -

-When Emacs finds a PO file in a window, PO mode is activated -for that window. This puts the window read-only and establishes a -po-mode-map, which is a genuine Emacs mode, in that way that it is -not derived from text mode in any way. - -

-

-The main PO commands are those who do not fit in the other categories in -subsequent sections, they allow for quitting PO mode or managing windows -in special ways. - -

-
- -
u -
-Undo last modification to the PO file. - -
q -
-Quit processing and save the PO file. - -
o -
-Temporary leave the PO file window. - -
h -
-Show help about PO mode. - -
= -
-Give some PO file statistics. - -
v -
-Batch validate the format of the whole PO file. - -
- -

-The command u (po-undo) interfaces to the GNU Emacs -undo facility. See section `Undoing Changes' in The Emacs Editor. Each time u is typed, modifications the translator -did to the PO file are undone a little more. For the purpose of -undoing, each PO mode command is atomic. This is especially true for -the RET command: the whole edition made by using a single -use of this command is undone at once, even if the edition itself -implied several actions. However, while in the editing window, one -can undo the edition work quite parsimoniously. - -

-

-The command q (po-quit) is used when the translator is -done with the PO file. If the file has been modified, it is saved -on disk first. However, prior to all this, the command checks if -some untranslated message remains in the PO file and, if yes, the -translator is asked if she really wants to leave working with this -PO file. This is the preferred way of getting rid of an Emacs PO -file buffer. Merely killing it through the usual command C-x -k (kill-buffer), say, has the unnice effect of leaving a PO -internal work buffer behind. - -

-

-The command o (po-other-window) is another, softer -way, to leave PO mode, temporarily. It just moves the cursor in -some other Emacs window, and pops one if necessary. For example, if -the translator just got PO mode to show some source context in some -other, she might discover some apparent bug in the program source -that needs correction. This command allows the translator to change -sex, become a programmer, and have the cursor right into the window -containing the program she (or rather he) wants to modify. -By later getting the cursor back in the PO file window, or by -asking Emacs to edit this file once again, PO mode is then recovered. - -

-

-The command h (po-help) displays a summary of all -available PO mode commands. The translator should then type any -character to resume normal PO mode operations. The command ? -has the same effect as h. - -

-

-The command = (po-statistics) computes the total number -of entries in the PO file, the ordinal of the current entry -(counted from 1), the number of untranslated entries, the number of -obsolete entries, and displays all these numbers. - -

-

-The command v (po-validate) launches msgfmt in -verbose mode over the current PO file. This command first offers -to save the current PO file on disk. The msgfmt tool, from -GNU gettext, has the purpose of creating an MO file out of a -PO file, and PO mode uses the features of this program for checking -the overall format of a PO file, as well as all individual entries. - -

-

-The program msgfmt runs asynchronously with Emacs, so -the translator regains control immediately while her PO file -is being studied. Error output is collected in the GNU Emacs -`*compilation*' buffer, displayed in another window. The regular -GNU Emacs command C-x` (next-error), as well as other -usual compile commands, allow the translator to reposition quickly to -the offending parts of the PO file. Once the cursor on the line in -error, the translator may decide for any PO mode action which would -help correcting the error. - -

- - -

Entry Positioning

- -

-The cursor in a PO file window is almost always part of -an entry. The only exceptions are the special case when the cursor -is after the last entry in the file, or when the PO file is -empty. The entry where the cursor is found to be is said to be the -current entry. Many PO mode commands operate on the current entry, -so moving the cursor does more than allowing the translator to browse -the PO file, this also selects on which entry commands operate. - -

-

-Some PO mode commands alter the position of the cursor in a specialized -way. A few of those special purpose positioning are described here, -the others are described in following sections. - -

-
- -
. -
-Redisplay the current entry. - -
n -
-
SPC -
-Select the entry after the current one. - -
p -
-
DEL -
-Select the entry before the current one. - -
< -
-Select the first entry in the PO file. - -
> -
-Select the last entry in the PO file. - -
m -
-Record the location of the current entry for later use. - -
l -
-Return to a previously saved entry location. - -
x -
-Exchange the current entry location with the previously saved one. - -
- -

-Any GNU Emacs command able to reposition the cursor may be used -to select the current entry in PO mode, including commands which -move by characters, lines, paragraphs, screens or pages, and search -commands. However, there is a kind of standard way to display the -current entry in PO mode, which usual GNU Emacs commands moving -the cursor do not especially try to enforce. The command . -(po-current-entry) has the sole purpose of redisplaying the -current entry properly, after the current entry has been changed by -means external to PO mode, or the Emacs screen otherwise altered. - -

-

-It is yet to decide if PO mode would help the translator, or otherwise -irritate her, by forcing a more fixed window disposition while she -is doing her work. We originally had quite precise ideas about -how windows should behave, but on the other hand, anyone used to -GNU Emacs is often happy to keep full control. Maybe a fixed window -disposition might be offered as a PO mode option that the translator -might activate or deactivate at will, so it could be offered on an -experimental basis. If nobody feels a real need for using it, or -a compulsion for writing it, we might as well drop this whole idea. -The incentive for doing it should come from translators rather than -programmers, as opinions from an experienced translator are surely -more worth to me than opinions from programmers thinking about -how others should do translation. - -

-

-The commands n (po-next-entry) and p -(po-previous-entry) move the cursor the entry following, -or preceding, the current one. If n is given while the -cursor is on the last entry of the PO file, or if p -is given while the cursor is on the first entry, no move is done. -SPC and DEL are alternate keys for n and -p, respectively. - -

-

-The commands < (po-first-entry) and > -(po-last-entry) move the cursor to the first entry, or last -entry, of the PO file. When the cursor is located past the last -entry in a PO file, most PO mode commands will return an error saying -`After last entry'. However, the commands < and > -have the special property of being able to work even when the cursor -is not into some PO file entry, and you may use them for nicely -correcting this situation. But even these commands will fail on a -truly empty PO file. There are development plans for PO mode for it -to interactively fill an empty PO file from sources. See section Marking Translatable Strings. - -

-

-The translator may decide, before working at the translation of -a particular entry, that she needs browsing the remainder of the -PO file, maybe for finding the terminology or phraseology used -in related entries. She can of course use the standard Emacs idioms -for saving the current cursor location in some register, and use that -register for getting back, or else, to use the location ring. - -

-

-PO mode offers another approach, by which cursor locations may be saved -onto a special stack. The command m (po-push-location) -merely adds the location of current entry to the stack, pushing -the already saved locations under the new one. The command -l (po-pop-location) consumes the top stack element and -reposition the cursor to the entry associated with that top element. -This position is then lost, for the next l will move the cursor -to the previously saved location, and so on until locations remain -on the stack. - -

-

-If the translator wants the position to be kept on the location stack, -maybe for taking a mere look at the entry associated with the top -element, then go elsewhere with the intent of getting back later, she -ought to use m immediately after l. - -

-

-The command x (po-exchange-location) simultaneously -reposition the cursor to the entry associated with the top element of -the stack of saved locations, and replace that top element with the -location of the current entry before the move. Consequently, repeating -the x command toggles alternatively between two entries. -For achieving this, the translator will position the cursor on the -first entry, use m, then position to the second entry, and -merely use x for making the switch. - -

- - -

Normalizing Strings in Entries

- -

-There are many different ways for encoding a particular string into a -PO file entry, because there are so many different ways to split and -quote multi-line strings, and even, to represent special characters -by backslahsed escaped sequences. Some features of PO mode rely on -the ability for PO mode to scan an already existing PO file for a -particular string encoded into the msgid field of some entry. -Even if PO mode has internally all the built-in machinery for -implementing this recognition easily, doing it fast is technically -difficult. For facilitating a solution to this efficiency problem, -we decided for a canonical representation for strings. - -

-

-A conventional representation of strings in a PO file is currently -under discussion, and PO mode experiments a canonical representation. -Having both xgettext and PO mode converging towards a uniform -way of representing equivalent strings would be useful, as the internal -normalization needed by PO mode could be automatically satisfied -when using xgettext from GNU gettext. An explicit -PO mode normalization should then be only necessary for PO files -imported from elsewhere, or for when the convention itself evolves. - -

-

-So, for achieving normalization of at least the strings of a given -PO file needing a canonical representation, the following PO mode -command is available: - -

-
- -
M-x po-normalize -
-Tidy the whole PO file by making entries more uniform. - -
- -

-The special command M-x po-normalize, which has no associate -keys, revises all entries, ensuring that strings of both original -and translated entries use uniform internal quoting in the PO file. -It also removes any crumb after the last entry. This command may be -useful for PO files freshly imported from elsewhere, or if we ever -improve on the canonical quoting format we use. This canonical format -is not only meant for getting cleaner PO files, but also for greatly -speeding up msgid string lookup for some other PO mode commands. - -

-

-M-x po-normalize presently makes three passes over the entries. -The first implements heuristics for converting PO files for GNU -gettext 0.6 and earlier, in which msgid and msgstr -fields were using K&R style C string syntax for multi-line strings. -These heuristics may fail for comments not related to obsolete -entries and ending with a backslash; they also depend on subsequent -passes for finalizing the proper commenting of continued lines for -obsolete entries. This first pass might disappear once all oldish PO -files would have been adjusted. The second and third pass normalize -all msgid and msgstr strings respectively. They also -clean out those trailing backslashes used by XView's msgfmt -for continued lines. - -

-

-Having such an explicit normalizing command allows for importing PO -files from other sources, but also eases the evolution of the current -convention, evolution driven mostly by aesthetic concerns, as of now. -It is all easy to make suggested adjustments at a later time, as the -normalizing command and eventually, other GNU gettext tools -should greatly automate conformance. A description of the canonical -string format is given below, for the particular benefit of those not -having GNU Emacs handy, and who would nevertheless want to handcraft -their PO files in nice ways. - -

-

-Right now, in PO mode, strings are single line or multi-line. A string -goes multi-line if and only if it has embedded newlines, that -is, if it matches `[^\n]\n+[^\n]'. So, we would have: - -

- -
-msgstr "\n\nHello, world!\n\n\n"
-
- -

-but, replacing the space by a newline, this becomes: - -

- -
-msgstr ""
-"\n"
-"\n"
-"Hello,\n"
-"world!\n"
-"\n"
-"\n"
-
- -

-We are deliberately using a caricatural example, here, to make the -point clearer. Usually, multi-lines are not that bad looking. -It is probable that we will implement the following suggestion. -We might lump together all initial newlines into the empty string, -and also all newlines introducing empty lines (that is, for n -> 1, the n-1'th last newlines would go together on a separate -string), so making the previous example appear: - -

- -
-msgstr "\n\n"
-"Hello,\n"
-"world!\n"
-"\n\n"
-
- -

-There are a few yet undecided little points about string normalization, -to be documented in this manual, once these questions settle. - -

- - -

Preparing Program Sources

- -

-For the programmer, changes to the C source code fall into three -categories. First, you have to make the localization functions -known to all modules needing message translation. Second, you should -properly trigger the operation of GNU gettext when the program -initializes, usually from the main function. Last, you should -identify and especially mark all constant strings in your program -needing translation. - -

-

-Presuming that your set of programs, or package, has been adjusted -so all needed GNU gettext files are available, and your -`Makefile' files are adjusted (see section The Maintainer's View), each C module -having translated C strings should contain the line: - -

- -
-#include <libintl.h>
-
- -

-The remaining changes to your C sources are discussed in the further -sections of this chapter. - -

- - - -

Triggering gettext Operations

- -

-The initialization of locale data should be done with more or less -the same code in every program, as demonstrated below: - -

- -
-int
-main (argc, argv)
-     int argc;
-     char argv;
-{
-  ...
-  setlocale (LC_ALL, "");
-  bindtextdomain (PACKAGE, LOCALEDIR);
-  textdomain (PACKAGE);
-  ...
-}
-
- -

-PACKAGE and LOCALEDIR should be provided either by -`config.h' or by the Makefile. For now consult the gettext -sources for more information. - -

-

-The use of LC_ALL might not be appropriate for you. -LC_ALL includes all locale categories and especially -LC_CTYPE. This later category is responsible for determining -character classes with the isalnum etc. functions from -`ctype.h' which could especially for programs, which process some -kind of input language, be wrong. For example this would mean that a -source code using the (cedille character) is runnable in -France but not in the U.S. - -

-

-So it is sometimes necessary to replace the LC_ALL line in the -code above by a sequence of setlocale lines - -

- -
-{
-  ...
-  setlocale (LC_TIME, "");
-  setlocale (LC_MESSAGES, "");
-  ...
-}
-
- -

-or to switch for and back to the character class in question. - -

- - -

How Marks Appears in Sources

- -

-The C sources should mark all strings requiring translation. Marking -is done in such a way that each translatable string appears to be -the sole argument of some function or preprocessor macro. There are -only a few such possible functions or macros meant for translation, -and their names are said to be marking keywords. The marking is -attached to strings themselves, rather than to what we do with them. -This approach has more uses. A blatant example is an error message -produced by formatting. The format string needs translation, as -well as some strings inserted through some `%s' specification -in the format, while the result from sprintf may have so many -different instances that it is unpractical to list them all in some -`error_string_out()' routine, say. - -

-

-This marking operation has two goals. The first goal of marking -is for triggering the retrieval of the translation, at run time. -The keyword are possibly resolved into a routine able to dynamically -return the proper translation, as far as possible or wanted, for the -argument string. Most localizable strings are found into executable -positions, that is, affected to variables or given as parameter to -functions. But this is not universal usage, and some translatable -strings appear in structured initializations. See section Special Cases of Translatable Strings. - -

-

-The second goal of the marking operation is to help xgettext -at properly extracting all translatable strings when it scans a set -of program sources and produces PO file templates. - -

-

-The canonical keyword for marking translatable strings is -`gettext', it gave its name to the whole GNU gettext -package. For packages making only light use of the `gettext' -keyword, macro or function, it is easily used as is. However, -for packages using the gettext interface more heavily, it -is usually more convenient giving the main keyword a shorter, less -obtrusive name. Indeed, the keyword might appear on a lot of strings -all over the package, and programmers usually do not want nor need -that their program sources remind them loud, all the time, that they -are internationalized. Further, a long keyword has the disadvantage -of using more horizontal space, forcing more indentation work on -sources for those trying to keep them within 79 or 80 columns. - -

-

-Many GNU packages use `_' (a simple underline) as a keyword, -and write `_("Translatable string")' instead of `gettext -("Translatable string")'. Further, the usual GNU coding rule -wanting that there is a space between the keyword and the opening -parenthesis is relaxed, in practice, for this particular usage. -So, the textual overhead per translatable string is reduced to -only three characters: the underline and the two parentheses. -However, even if GNU gettext uses this convention internally, -it does not offer it officially. The real, genuine keyword is truly -`gettext' indeed. It is fairly easy for those wanting to use -`_' instead of `gettext' to declare: - -

- -
-#include <libintl.h>
-#define _(String) gettext (String)
-
- -

-instead of merely using `#include <libintl.h>'. - -

-

-Later on, the maintenance is relatively easy. If, as a programmer, -you add or modify a string, you will have to ask yourself if the -new or altered string requires translation, and include it within -`_()' if you think it should be translated. `"%s: %d"' is -an example of string not requiring translation! - -

- - -

Marking Translatable Strings

- -

-In PO mode, one set of features is meant more for the programmer than -for the translator, and allows him to interactively mark which strings, -in a set of program sources, are translatable, and which are not. -Even if it is a fairly easy job for a programmer to find and mark -such strings by other means, using any editor of his choice, PO mode -makes this work more comfortable. Further, this gives translators -who feel a little like programmers, or programmers who feel a little -like translators, a tool letting them work at marking translatable -strings in the program sources, while simultaneously producing a set of -translation in some language, for the package being internationalized. - -

-

-The set of program sources, aimed by the PO mode commands describe -here, should have an Emacs tags table constructed for your project, -prior to using these PO file commands. This is easy to do. In any -shell window, change the directory to the root of your project, then -execute a command resembling: - -

- -
-etags src/*.[hc] lib/*.[hc]
-
- -

-presuming here you want to process all `.h' and `.c' files -from the `src/' and `lib/' directories. This command will -explore all said files and create a `TAGS' file in your root -directory, somewhat summarizing the contents using a special file -format Emacs can understand. - -

-

-For official GNU packages which follow the GNU coding standard there is -a make goal tags or TAGS which construct the tag files in -all directories and for all files containing source code. - -

-

-Once your `TAGS' file is ready, the following commands assist -the programmer at marking translatable strings in his set of sources. -But these commands are necessarily driven from within a PO file -window, and it is likely that you do not even have such a PO file yet. -This is not a problem at all, as you may safely open a new, empty PO -file, mainly for using these commands. This empty PO file will slowly -fill in while you mark strings as translatable in your program sources. - -

-
- -
, -
-Search through program sources for a string which looks like a -candidate for translation. - -
M-, -
-Mark the last string found with `_()'. - -
M-. -
-Mark the last string found with a keyword taken from a set of possible -keywords. This command with a prefix allows some management of these -keywords. - -
- -

-The , (po-tags-search) command search for the next -occurrence of a string which looks like a possible candidate for -translation, and displays the program source in another Emacs window, -positioned in such a way that the string is near the top of this other -window. If the string is to big to fit whole in this window, it is -rather positioned so only its end is shown. In any case, the cursor -is left in the PO file window. If the shown string would be better -presented differently in different native languages, you may mark it -using M-, or M-.. Otherwise, you might rather ignore it -and skip to the next string by merely repeating the , command. - -

-

-A string is a good candidate for translation if it contains a sequence -of three or more letters. A string containing at most two letters in -a row will be considered as a candidate if it has more letters than -non-letters. The command disregards strings containing no letters, -or isolated letters only. It also disregards strings within comments, -or strings already marked with some keyword PO mode knows (see below). - -

-

-If you have never told Emacs about some `TAGS' file to use, the -command will request that you specify one from the minibuffer, the -first time you use the command. You may later change your `TAGS' -file by using the regular Emacs command M-x visit-tags-table, -which will ask you to name the precise `TAGS' file you want -to use. See section `Tag Tables' in The Emacs Editor. - -

-

-Each time you use the , command, the search resumes where it was -left over by the previous search, and goes through all program sources, -obeying the `TAGS' file, until all sources have been processed. -However, by giving a prefix argument to the command (C-u -,), you may request that the search be restarted all over again -from the first program source; but in this case, strings that you -recently marked as translatable will be automatically skipped. - -

-

-Using this , command does not prevent using of other regular -Emacs tags commands. For example, regular tags-search or -tags-query-replace commands may be used without disrupting the -independent , search sequence. However, as implemented, the -initial , command (or the , command is used with a -prefix) might also reinitialize the regular Emacs tags searching to the -first tags file, this reinitialization might be considered spurious. - -

-

-The M-, (po-mark-translatable) command will mark the -recently found string with the `_' keyword. The M-. -(po-select-mark-and-mark) command will request that you type -one keyword from the minibuffer and use that keyword for marking -the string. Both commands will automatically create a new PO file -untranslated entry for the string being marked, and make it the -current entry (making it easy for you to immediately proceed to its -translation, if you feel like doing it right away). It is possible -that the modifications made to the program source by M-, or -M-. render some source line longer than 80 columns, forcing you -to break and re-indent this line differently. You may use the o -command from PO mode, or any other window changing command from -GNU Emacs, to break out into the program source window, and do any -needed adjustments. You will have to use some regular Emacs command -to return the cursor to the PO file window, if you want commanding -, for the next string, say. - -

-

-The M-. command has a few built-in speedups, so you do not -have to explicitly type all keywords all the time. The first such -speedup is that you are presented with a preferred keyword, -which you may accept by merely typing RET at the prompt. -The second speedup is that you may type any non-ambiguous prefix of the -keyword you really mean, and the command will complete it automatically -for you. This also means that PO mode has to know all -your possible keywords, and that it will not accept mistyped keywords. - -

-

-If you reply ? to the keyword request, the command gives a -list of all known keywords, from which you may choose. When the -command is prefixed by an argument (C-u M-.), it inhibits -updating any program source or PO file buffer, and does some simple -keyword management instead. In this case, the command asks for a -keyword, written in full, which becomes a new allowed keyword for -later M-. commands. Moreover, this new keyword automatically -becomes the preferred keyword for later commands. By typing -an already known keyword in response to C-u M-., one merely -changes the preferred keyword and does nothing more. - -

-

-All keywords known for M-. are recognized by the , command -when scanning for strings, and strings already marked by any of those -known keywords are automatically skipped. If many PO files are opened -simultaneously, each one has its own independent set of known keywords. -There is no provision in PO mode, currently, for deleting a known -keyword, you have to quit the file (maybe using q) and reopen -it afresh. When a PO file is newly brought up in an Emacs window, only -`gettext' and `_' are known as keywords, and `gettext' -is preferred for the M-. command. In fact, this is not useful to -prefer `_', as this one is already built in the M-, command. - -

- - -

Special Cases of Translatable Strings

- -

-The attentive reader might now point out that it is not always possible -to mark translatable string with gettext or something like this. -Consider the following case: - -

- -
-{
-  static const char *messages[] = {
-    "some very meaningful message",
-    "and another one"
-  };
-  const char *string;
-  ...
-  string
-    = index > 1 ? "a default message" : messages[index];
-
-  fputs (string);
-  ...
-}
-
- -

-While it is no problem to mark the string "a default message" it -is not possible to mark the string initializers for messages. -What is to do? We have to fulfill two tasks. First we have to mark the -strings so that the xgettext program (see section Invoking the xgettext Program) -can find them, and second we have to translate the string at runtime -before printing them. - -

-

-The first task can be fulfilled by creating a new keyword, which names a -no-op. For the second we have to mark all access points to a string -from the array. So one solution can look like this: - -

- -
-#define gettext_noop(String) (String)
-
-{
-  static const char *messages[] = {
-    gettext_noop ("some very meaningful message"),
-    gettext_noop ("and another one")
-  };
-  const char *string;
-  ...
-  string
-    = index > 1 ? gettext ("a default message") : gettext (messages[index]);
-
-  fputs (string);
-  ...
-}
-
- -

-Please convince yourself that the string which is written by -fputs is translated in any case. How to get xgettext know -the additional keyword gettext_noop is explained in section Invoking the xgettext Program. - -

-

-The above is of course not the only solution. You could also come along -with the following one: - -

- -
-#define gettext_noop(String) (String)
-
-{
-  static const char *messages[] = {
-    gettext_noop ("some very meaningful message",
-    gettext_noop ("and another one")
-  };
-  const char *string;
-  ...
-  string
-    = index > 1 ? gettext_noop ("a default message") : messages[index];
-
-  fputs (gettext (string));
-  ...
-}
-
- -

-But this has some drawbacks. First the programmer has to take care that -he uses gettext_noop for the string "a default message". -A use of gettext could have in rare cases unpredictable results. -The second reason is found in the internals of the GNU gettext -Library which will make this solution less efficient. - -

-

-One advantage is that you need not make control flow analysis to make -sure the output is really translated in any case. But this analysis is -generally not very difficult. If it should be in any situation you can -use this second method in this situation. - -

- - - -

Making the Initial PO File

- - - -

Invoking the xgettext Program

- - -
-xgettext [option] inputfile ...
-
- -
- -
`-a' -
-
`--extract-all' -
-Extract all strings. - -
`-c [tag]' -
-
`--add-comments[=tag]' -
-Place comment block with tag (or those preceding keyword lines) -in output file. - -
`-C' -
-
`--c++' -
-Recognize C++ style comments. - -
`-d name' -
-
`--default-domain=name' -
-Use `name.po' for output (instead of `messages.po'). - -
`-D directory' -
-
`--directory=directory' -
-Change to directory before beginning to search and scan source -files. The resulting `.po' file will be written relative to the -original directory, though. - -
`-f file' -
-
`--files-from=file' -
-Read the names of the input files from file instead of getting -them from the command line. - -
`-h' -
-
`--help' -
-Display this help and exit. - -
`-I list' -
-
`--input-path=list' -
-List of directories searched for input files. - -
`-j' -
-
`--join-existing' -
-Join messages with existing file. - -
`-k word' -
-
`--keyword[=word]' -
-Additonal keyword to be looked for (without word means not to -use default keywords). - -The default keywords, which are always looked for if not explicitly -disabled, are gettext, dgettext, dcgettext and -gettext_noop. - -
`-m [string]' -
-
`--msgstr-prefix[=string]' -
-Use string or "" as prefix for msgstr entries. - -
`-M [string]' -
-
`--msgstr-suffix[=string]' -
-Use string or "" as suffix for msgstr entries. - -
`--no-location' -
-Do not write `#: filename:line' lines. - -
`-n' -
-
`--add-location' -
-Generate `#: filename:line' lines (default). - -
`--omit-header' -
-Don't write header with `msgid ""' entry. - -This is useful for testing purposes because it eliminates a source -of variance for generated .gmo files. We can ship some of -these files in the GNU gettext package, and the result of -regenerating them through msgfmt should yield the same values. - -
`-p dir' -
-
`--output-dir=dir' -
-Output files will be placed in directory dir. - -
`-s' -
-
`--sort-output' -
-Generate sorted output and remove duplicates. - -
`--strict' -
-Write out strict Uniforum conforming PO file. - -
`-v' -
-
`--version' -
-Output version information and exit. - -
`-x file' -
-
`--exclude-file=file' -
-Entries from file are not extracted. - -
- -

-Search path for supplementary PO files is: -`/usr/local/share/nls/src/'. - -

-

-If inputfile is `-', standard input is read. - -

-

-This implementation of xgettext is able to process a few awkward -cases, like strings in preprocessor macros, ANSI concatenation of -adjacent strings, and escaped end of lines for continued strings. - -

- - -

C Sources Context

- -

-PO mode is particularily powerful when used with PO files -created through GNU gettext utilities, as those utilities -insert special comments in the PO files they generate. -Some of these special comments relate the PO file entry to -exactly where the untranslated string appears in the program sources. - -

-

-When the translator gets to an untranslated entry, she is fairly -often faced with an original string which is not as informative as -it normally should, being succinct, cryptic, or otherwise ambiguous. -Before chosing how to translate the string, she needs to understand -better what the string really means and how tight the translation has -to be. Most of times, when problems arise, the only way left to make -her judgment is looking at the true program sources from where this -string originated, searching for surrounding comments the programmer -might have put in there, and looking around for helping clues of -any kind. - -

-

-Surely, when looking at program sources, the translator will receive -more help if she is a fluent programmer. However, even if she is -not versed in programming and feels a little lost in C code, the -translator should not be shy at taking a look, once in a while. -It is most probable that she will still be able to find some of the -hints she needs. She will learn quickly to not feel uncomfortable -in program code, paying more attention to programmer's comments, -variable and function names (if he dared chosing them well), and -overall organization, than to programmation itself. - -

-

-The following commands are meant to help the translator at getting -program source context for a PO file entry. - -

-
- -
c -
-Resume the display of a program source context, or cycle through them. - -
M-c -
-Display of a program source context selected by menu. - -
d -
-Add a directory to the search path for source files. - -
M-d -
-Delete a directory from the search path for source files. - -
- -

-The commands c (po-cycle-reference) and M-c -(po-select-reference) both open another window displaying -some source program file, and already positioned in such a way that -it shows an actual use of the current string to translate. By doing -so, the command gives source program context for the string. But if -the entry has no source context references, or if all references -are unresolved along the search path for program sources, then the -command diagnoses this as an error. - -

-

-Even if c (or M-c) opens a new window, the cursor stays -in the PO file window. If the translator really wants to -get into the program source window, she ought to do it explicitly, -maybe by using command o. - -

-

-When c is typed for the first time, or for a PO file entry which -is different of the last one used for getting source context, then the -command reacts by giving the first context available for this entry, -if any. If some context has already been recently displayed for the -current PO file entry, and the translator wandered to do other -things, typing c again will merely resume, in another window, -the context last displayed. In particular, if the translator moved -the cursor away from the context in the source file, the command will -bring the cursor back to the context. By using c many times -in a row, with no interning other commands, PO mode will cycle to -the next available contexts for this particular entry, getting back -to the first context once the last has been shown. - -

-

-The command M-c behaves differently. Instead of cycling through -references, it lets the translator choose of particular reference among -many, and displays that reference. It is best used with completion, -if the translator types TAB immediately after M-c, in -response to the question, she will be offered a menu of all possible -references, as a reminder of which are the acceptable answers. -This command is useful only where there are really many contexts -available for a single string to translate. - -

-

-Program source files are usually found relative to where the PO -file stands. As a special provision, when this fails, the file is -also looked for, but relative to the directory immediately above it. -Those two cases take proper care of most PO files. However, it might -happen that a PO file has been moved, or is edited in a different -place than its normal location. When this happens, the translator -should tell PO mode in which directory normally sits the genuine PO -file. Many such directories may be specified, and all together, they -constitute what is called the search path for program sources. -The command d (po-add-path) is used to interactively -enter a new directory at the front of the search path, and the command -M-d (po-delete-path) is used to select, with completion, -one of the directories she does not want anymore on the search path. - -

- - -

Using Translation Compendiums

- -

-Compendiums are yet to be implemented. - -

-

-An incoming PO mode feature will let the translator maintain a -compendium of already achieved translations. A compendium -is a special PO file containing a set of translations recurring in -many different packages. The translator will be given commands for -adding entries to her compendium, and later initializing untranslated -entries, or updating already translated entries, from translations -kept in the compendium. For this to work, however, the compendium -would have to be normalized. See section Normalizing Strings in Entries. - -

- - - -

Updating Existing PO Files

- - - -

Invoking the tupdate Program

- - -
-tupdate --help
-tupdate --version
-tupdate new old
-
- -

-File new is the last created PO file (generally by -xgettext). It need not contain any translations. File -old is the PO file including the old translations which will -be taken over to the newly created file as long as they still match. - -

-

-When English messages change in the programs, this is reflected in -the PO file as extracted by xgettext. In large messages, that -can be hard to detect, and will obviously result in an incomplete -translation. One of the virtues of tupdate is that it detects -such changes, saving the previous translation into a PO file comment, -so marking the entry as obsolete, and giving the modified string with -an empty translation, that is, marking the entry as untranslated. - -

- - -

Untranslated Entries

- -

-When xgettext originally creates a PO file, unless told -otherwise, it initializes the msgid field with the untranslated -string, and leaves the msgstr string to be empty. Such entries, -having an empty translation, are said to be untranslated entries. -Later, when the programmer slightly modifies some string right in -the program, this change is later reflected in the PO file -by the appearance of a new untranslated entry for the modified string. - -

-

-The usual commands moving from entry to entry consider untranslated -entries on the same level as active entries. Untranslated entries -are easily recognizable by the fact they end with `msgstr ""'. - -

-

-The work of the translator might be (quite naively) seen as the process -of seeking after an untranslated entry, editing a translation for -it, and repeating these actions until no untranslated entries remain. -Some commands are more specifically related to untranslated entry -processing. - -

-
- -
e -
-Find the next untranslated entry. - -
M-e -
-Find the previous untranslated entry. - -
k -
-Turn the current entry into an untranslated one. - -
- -

-The commands e (po-next-empty-entry) and M-e -(po-previous-empty) move forwards or backwards, chasing for an -obsolete entry. If none is found, the search is extended and wraps -around in the PO file buffer. - -

-

-An entry can be turned back into an untranslated entry by -merely emptying its translation, using the command k -(po-kill-msgstr). See section Modifying Translations. - -

-

-Also, when time comes to quit working on a PO file buffer -with the q command, the translator is asked for confirmation, -if some untranslated string still exists. - -

- - -

Obsolete Entries

- -

-By obsolete PO file entries, we mean those entries which are -commented out, usually by tupdate when it found that the -translation is not needed anymore by the package being localized. - -

-

-The usual commands moving from entry to entry consider obsolete -entries on the same level as active entries. Obsolete entries are -easily recognizable by the fact that all their lines start with -#, even those lines containing msgid or msgstr. - -

-

-Commands exist for emptying the translation or reinitializing it -to the original untranslated string. Commands interfacing with the -kill ring may force some previously saved text into the translation. -The user may interactively edit the translation. All these commands -may apply to obsolete entries, carefully leaving the entry obsolete -after the fact. - -

-

-Moreover, some commands are more specifically related to obsolete -entry processing. - -

-
- -
M-n -
-
M-SPC -
-Find the next obsolete entry. - -
M-p -
-
M-DEL -
-Find the previous obsolete entry. - -
z -
-Make an active entry obsolete, or zap out an obsolete entry. - -
- -

-The commands M-n (po-next-obsolete-entry) and M-p -(po-previous-obsolete-entry) move forwards or backwards, -chasing for an obsolete entry. If none is found, the search is -extended and wraps around in the PO file buffer. The commands -M-SPC and M-DEL are synonymous to M-n -and M-p, respectively. - -

-

-PO mode does not provide ways for un-commenting an obsolete entry -and making it active, because this would reintroduce an original -untranslated string which does not correspond to any marked string -in the program sources. This goes with the philosophy of never -introducing useless msgid values. - -

-

-However, it is possible to comment out an active entry, so making -it obsolete. GNU gettext utilities will later react to the -disappearance of a translation by using the untranslated string. -The command z (po-fade-out-entry) pushes the current entry -a little further towards annihilation. If the entry is active, then -the entry is merely commented out. If the entry is already obsolete, -then it is completely deleted from the PO file. It is easy to recycle -the translation so deleted into some other PO file entry, usually -one which is untranslated. See section Modifying Translations. - -

-

-Here is a quite interesting problem to solve for later development of -PO mode, for those nights you are not sleepy. The idea would be that -PO mode might become bright enough, one of these days, to make good -guesses at retrieving the most probable candidate, among all obsolete -entries, for initializing the translation of a newly appeared string. -I think it might be a quite hard problem to do this algorithmically, as -we have to develop good and efficient measures of string similarity. -Right now, PO mode completely lets the decision to the translator, -when the time comes to find the adequate obsolete translation, it -merely tries to provide handy tools for helping her to do so. - -

- - -

Modifying Translations

- -

-PO mode prevents direct edition of the PO file, by the usual -means Emacs give for altering a buffer's contents. By doing so, -it pretends helping the translator to avoid little clerical errors -about the overall file format, or the proper quoting of strings, -as those errors would be easily made. Other kinds of errors are -still possible, but some may be catched and diagnosed by the batch -validation process, which the translator may always trigger by the -v command. For all other errors, the translator has to rely on -her own judgment, and also on the linguistic reports submitted to her -by the users of the translated package, having the same mother tongue. - -

-

-When the time comes to create a translation, correct a error diagnosed -mechanically or reported by a user, the translator have to resort to -using the following commands for modifying the translations. - -

-
- -
RET -
-Interactively edit the translation. - -
TAB -
-Reinitialize the translation with the original, untranslated string. - -
k -
-Save the translation on the kill ring, and delete it. - -
w -
-Save the translation on the kill ring, without deleting it. - -
y -
-Replace the translation, taking the new from the kill ring. - -
- -

-The command RET (po-edit-msgstr) opens a new Emacs -window containing a copy of the translation taken from the current -PO file entry, all ready for edition, fully modifiable -and with the complete extent of GNU Emacs modifying commands. -The string is presented to the translator expunged of all quoting -marks, and she will modify the unquoted string in this -window to heart's content. Once done, the regular Emacs command -M-C-c (exit-recursive-edit) may be used to return the -edited translation into the PO file, replacing the original -translation. The keys C-c C-c are bound so they have the -same effect as M-C-c. - -

-

-If the translator becomes unsatisfied with her translation to the -extent she prefers keeping the translation which was existent prior to -the RET command, she may use the regular Emacs command C-] -(abort-recursive-edit) to merely get rid of edition, while -preserving the original translation. Another way would be for her -to exit normally with C-c C-c, then type u once for -undoing the whole effect of last edition. - -

-

-While editing her translation, the translator should pay attention at -not inserting unwanted RET (carriage returns) characters at -the end of the translated string if those are not meant to be there, -or removing such characters when they are required. Since these -characters are not visible in the editing buffer, they are easily to -introduce by mistake. To help her, RET automatically puts -the character < at the end of the string being edited, but this -< is not really part of the string. On exiting the editing -window with C-c C-c, PO mode automatically removes such -< and all whitespace added after it. If the translator adds -characters after the terminating <, it looses its delimiting -property and integrally becomes part of the string. If she removes -the delimiting <, then the edited string is taken as -is, with all trailing newlines, even if invisible. Also, if the -translated string ought to end itself with a genuine <, then the -delimiting < may not be removed; so the string should appear, -in the editing window, as ending with two < in a row. - -

-

-When a translation (or a comment) is being edited, the translator -may move the cursor back into the PO file buffer and freely -move to other entries, and browsing at will. The edited entry will -be recovered as soon as the edit ceases, because this is this entry -only which is being modified. If, with an edition still opened, the -translator wanders in the PO file buffer, she cannot modify -any other entry. If she tries to, PO mode will react by suggesting -that she aborts the current edit, or else, by inviting her to finish -the current edit prior to any other modification. - -

-

-The command TAB (po-msgid-to-msgstr) initializes, or -reinitializes the translation with the original string. This command -is normally used when the translator wants to redo a fresh translation -of the original string, disregarding any previous work. - -

-

-In fact, whether it is best to start a translation with an empty -string, or rather with a copy of the original string, is a matter of -taste or habit. Sometimes, the source mother tongue language and the -target language are so different that is simply best to start writing -on an empty page. At other times, the source and target languages -are so close that it would be a waste to retype a number of words -already being written in the original string. A translator may also -like having the original string right under her eyes, as she will -progressively overwrite the original text with the translation, even -if this requires some extra editing work to get rid of the original. - -

-

-The command k (po-kill-msgstr) merely empties the -translation string, so turning the entry into an untranslated -one. But while doing so, its previous contents is put apart in -a special place, known as the kill ring. The command w -(po-kill-ring-save-msgstr) has also the effect of taking a -copy of the translation onto the kill ring, but it otherwise leaves -the entry alone, and does not remove the translation from the -entry. Both commands use exactly the Emacs kill ring, which is shared -between buffers, and which is well known already to GNU Emacs lovers. - -

-

-The translator may use k or w many times in the course -of her work, as the kill ring may hold several saved translations. -From the kill ring, strings may later be reinserted in various -Emacs buffers. In particular, the kill ring may be used for moving -translation strings between different entries of a single PO file -buffer, or if the translator is handling many such buffers at once, -even between PO files. - -

-

-To facilitate exchanges with buffers which are not in PO mode, the -translation string put on the kill ring by the k command is fully -unquoted before being saved: external quotes are removed, multi-lines -strings are concatenated, and backslashed escaped sequences are turned -into their corresponding characters. In the special case of obsolete -entries, the translation is also uncommented prior to saving. - -

-

-The command y (po-yank-msgstr) completely replaces the -translation of the current entry by a string taken from the kill ring. -Following GNU Emacs terminology, we then say that the replacement -string is yanked into the PO file buffer. -See section `Yanking' in The Emacs Editor. -The first time y is used, the translation receives the value of -the most recent addition to the kill ring. If y is typed once -again, immediately, without intervening keystrokes, the translation -just inserted is taken away and replaced by the second most recent -addition to the kill ring. By repeating y many times in a row, -the translator may travel along the kill ring for saved strings, -until she finds the string she really wanted. - -

-

-When a string is yanked into a PO file entry, it is fully and -automatically requoted for complying with the format PO files should -have. Further, if the entry is obsolete, PO mode then appropriately -push the inserted string inside comments. Once again, translators -should not burden themselves with quoting considerations besides, of -course, the necessity of the translated string itself respective to -the program using it. - -

-

-Note that k or w are not the only commands pushing strings -on the kill ring, as almost any PO mode command replacing translation -strings (or the translator comments) automatically save the old string -on the kill ring. The main exceptions to this general rule are the -yanking commands themselves. - -

-

-To better illustrate the operation of killing and yanking, let's -use an actual example, taken from a common situation. When the -programmer slightly modifies some string right in the program, his -change is later reflected in the PO file by the appearance -of a new untranslated entry for the modified string, and the fact -that the entry translating the original or unmodified string becomes -obsolete. In many cases, the translator might spare herself some work -by retrieving the unmodified translation from the obsolete entry, -then initializing the untranslated entry msgstr field with -this retrieved translation. Once this done, the obsolete entry is -not wanted anymore, and may be safely deleted. - -

-

-When the translator finds an untranslated entry and suspects that a -slight variant of the translation exists, she immediately uses m -to mark the current entry location, then starts chasing obsolete -entries with M-SPC, hoping to find some translation corresponding -to the unmodified string. Once found, she uses the z command -for deleting the obsolete entry, knowing that z also kills -the translation, that is, pushes the translation on the kill ring. -Then, l returns to the initial untranslated entry, y -then yanks the saved translation right into the msgstr -field. The translator is then free to use RET for fine -tuning the translation contents, and maybe to later use e, -then m again, for going on with the next untranslated string. - -

-

-When some sequence of keys has to be typed over and over again, the -translator may find comfortable to become more acquainted with the GNU -Emacs capability of learning these sequences and playing them back under -request. See section `Keyboard Macros' in The Emacs Editor. - -

- - -

Modifying Comments

- -

-Any translation work done seriously will raise many linguistic -difficulties, for which decisions have to be made, and the choices -further documented. These documents may be saved within the -PO file in form of translator comments, which the translator -is free to create, delete, or modify at will. These comments may -be useful to herself when she returns to this PO file after a while. -Memory forgets! - -

-

-These commands are somewhat similar to those modifying translations, -so the general indications given for these apply here. See section Modifying Translations. - -

-
- -
M-RET -
-Interactively edit the translator comments. - -
M-k -
-Save the translator comments on the kill ring, and delete it. - -
M-w -
-Save the translator comments on the kill ring, without deleting it. - -
M-y -
-Replace the translator comments, taking the new from the kill ring. - -
- -

-Those commands parallel PO mode commands for modifying the translation -strings, and behave much the same way as them, except that they handle -this part of PO file comments meant for translator usage, rather -than the translation strings. So, the descriptions given below are -slightly succinct, because the full details have already been given. -See section Modifying Translations. - -

-

-The command M-RET (po-edit-comment) opens a new Emacs -window containing a copy of the translator comments the current -PO file entry. If there is no such comments, PO mode -understands that the translator wants to add a comment to the entry, -and she is presented an empty screen. Comment marks (#) and -the space following them are automatically removed before edition, -and reinstated after. For translator comments pertaining to obsolete -entries, the uncommenting and recommenting operations are done twice. -The command # also has the same effect as M-RET, and might -be easier to type. Once in the editing window, the keys C-c -C-c allow the translator to tell she is finished with editing -the comment. - -

-

-The command M-k (po-kill-comment) get rid of all -translator comments, while saving those comments on the kill ring. -The command M-w (po-kill-ring-save-comment) takes -a copy of the translator comments on the kill ring, but leaves -them undisturbed in the current entry. The command M-y -(po-yank-comment) completely replaces the translator comments -by a string taken at the front of the kill ring. When this command -is immediately repeated, the comments just inserted are withdrawn, -and replaced by other strings taken along the kill ring. - -

-

-On the kill ring, all strings have the same nature. There is no -distinction between translation strings and translator -comments strings. So, for example, let's presume the translator -has just finished editing a translation, and wants to create a new -translator comments for documenting why the previous translation was -not good, just to remember what was the problem. Foreseeing that she -will do that in her documentation, the translator will want to quote -the previous translation in her translator comments. For doing so, she -may initialize the translator comments with the previous translation, -still at the head of the kill ring. Because editing already pushed the -previous translation on the kill ring, she just has to type M-w -prior to #, and the previous translation will be right there, -all ready for being introduced by some explanatory text. - -

-

-On the other hand, presume there are some translator comments already -and that the translator wants to add to those comments, instead -of wholly replacing them. Then, she should edit the comment right -away with #. Once inside the editing window, she can use the -regular GNU Emacs commands C-y (yank) and M-y -(yank-pop) for getting the previous translation where she likes. - -

- - -

Consulting Auxiliary PO Files

- -

-An incoming feature of PO mode should help the knowledgeable translator -to take advantage of translations already achieved in other languages -she just happens to know, by providing these other language translation -as additional context for her own work. Each PO file existing for -the same package the translator is working on, but targeted to a -different mother tongue language, is called an auxiliary PO file. -Commands will exist for declaring and handling auxiliary PO files, -and also for showing contexts for the entry under work. For this to -work fully, all auxiliary PO files will have to be normalized. - -

- - -

Producing Binary MO Files

- - - -

Invoking the msgfmt Program

- - -
-Usage: msgfmt [option] filename.po ...
-
- -
- -
`-a number' -
-
`--alignment=number' -
-Align strings to number bytes (default: 1). - -
`-h' -
-
`--help' -
-Display this help and exit. - -
`-I list' -
-
`--input-path=list' -
-List of directories searched for input files. - -
`--no-hash' -
-Binary file will not include the hash table. - -
`-o file' -
-
`--output-file=file' -
-Specify output file name as file. - -
`-v' -
-
`--verbose' -
-Detect and diagnose input file anomalies which might represent -translation errors. The msgid and msgstr strings are -studied and compared. It is considered abnormal that one string -starts or ends with a newline while the other does not. Also, both -strings should have the same number of `%' format specifiers, -with matching types. For example, the check will diagnose using -`%.*s' against `%s', or `%d' against `%s', or -`%d' against `%x'. It can even handle positional parameters. - -
`-V' -
-
`--version' -
-Output version information and exit. - -
- -

-If input file is `-', standard input is read. If output file -is `-', output is written to standard output. - -

-

-The search patch for msgfmt is `/usr/local/share/nls/src/', -by default. It represents the path to additional directories where -other PO files can be found. This feature could be used for some -PO files for standard libraries, in case we would like to spare -translating their strings over and over again. The `-x' option -could then exclude these strings from the generation. - -

- - -

The Format of GNU MO Files

- -

-The format of the generated MO files is best described by a picture, -which appears below. - -

-

-The first two words serve the identification of the file. The magic -number will always signal GNU MO files. The number is stored in the -byte order of the generating machine, so the magic number really is -two numbers: 0x950412de and 0xde120495. The second -word describes the current revision of the file format. For now the -revision is 0. This might change in future versions, and ensures -that the readers of MO files can distinguish new formats from old -ones, so that both can be handled correctly. The version is kept -separate from the magic number, instead of using different magic -numbers for different formats, mainly because `/etc/magic' is -not updated often. It might be better to have magic separated from -internal format version identification. - -

-

-Follow a number of pointers to later tables in the file, allowing -for the extension of the prefix part of MO files without having to -recompile programs reading them. This might become useful for later -inserting a few flag bits, indication about the charset used, new -tables, or other things. - -

-

-Then, at offset O and offset T in the picture, two tables -of string descriptors can be found. In both tables, each string -descriptor uses two 32 bits integers, one for the string length, -another for the offset of the string in the MO file, counting in bytes -from the start of the file. The first table contains descriptors -for the original strings, and is sorted so the original strings -are in increasing lexicographical order. The second table contains -descriptors for the translated strings, and is parallel to the first -table: to find the corresponding translation one has to access the -array slot in the second array with the same index. - -

-

-Having the original strings sorted enables the use of simple binary -search, for when the MO file does not contain an hashing table, or -for when it is not practical to use the hashing table provided in -the MO file. This also has another advantage, as the empty string -in a PO file GNU gettext is usually translated into -some system information attached to that particular MO file, and the -empty string necessarily becomes the first in both the original and -translated tables, making the system information very easy to find. - -

-

-The size S of the hash table can be zero. In this case, the -hash table itself is not contained in the MO file. Some people might -prefer this because a precomputed hashing table takes disk space, and -does not win that much speed. The hash table contains indices -to the sorted array of strings in the MO file. Conflict resolution is -done by double hashing. The precise hashing algorithm used is fairly -dependent of GNU gettext code, and is not documented here. - -

-

-As for the strings themselves, they follow the hash file, and each -is terminated with a NUL, and this NUL is not counted in -the length which appears in the string descriptor. The msgfmt -program has an option selecting the alignment for MO file strings. -With this option, each string is separately aligned so it starts at -an offset which is a multiple of the alignment value. On some RISC -machines, a correct alignment will speed things up. - -

-

-Nothing prevents an MO file from having embedded NULs in strings. -However, the program interface currently used already presumes -that strings are NUL terminated, so embedded NULs are -somewhat useless. But MO file format is general enough so other -interfaces would be later possible, if for example, we ever want to -implement wide characters right in MO files, where NUL bytes may -accidently appear. - -

-

-This particular issue has been strongly debated in the GNU -gettext development forum, and it is expectable that MO file -format will evolve or change over time. It is even possible that many -formats may later be supported concurrently. But surely, we got to -start somewhere, and the MO file format described here is a good start. -Nothing is cast in concrete, and the format may later evolve fairly -easily, so we should feel comfortable with the current approach. - -

- -
-        byte
-             +------------------------------------------+
-          0  | magic number = 0x950412de                |
-             |                                          |
-          4  | file format revision = 0                 |
-             |                                          |
-          8  | number of strings                        |  == N
-             |                                          |
-         12  | offset of table with original strings    |  == O
-             |                                          |
-         16  | offset of table with translation strings |  == T
-             |                                          |
-         20  | size of hashing table                    |  == S
-             |                                          |
-         24  | offset of hashing table                  |  == H
-             |                                          |
-             .                                          .
-             .    (possibly more entries later)         .
-             .                                          .
-             |                                          |
-          O  | length & offset 0th string  ----------------.
-      O + 8  | length & offset 1st string  ------------------.
-              ...                                    ...   | |
-O + ((N-1)*8)| length & offset (N-1)th string           |  | |
-             |                                          |  | |
-          T  | length & offset 0th translation  ---------------.
-      T + 8  | length & offset 1st translation  -----------------.
-              ...                                    ...   | | | |
-T + ((N-1)*8)| length & offset (N-1)th translation      |  | | | |
-             |                                          |  | | | |
-          H  | start hash table                         |  | | | |
-              ...                                    ...   | | | |
-  H + S * 4  | end hash table                           |  | | | |
-             |                                          |  | | | |
-             | NUL terminated 0th string  <----------------' | | |
-             |                                          |    | | |
-             | NUL terminated 1st string  <------------------' | |
-             |                                          |      | |
-              ...                                    ...       | |
-             |                                          |      | |
-             | NUL terminated 0th translation  <---------------' |
-             |                                          |        |
-             | NUL terminated 1st translation  <-----------------'
-             |                                          |
-              ...                                    ...
-             |                                          |
-             +------------------------------------------+
-
- - - -

The User's View

- -

-When GNU gettext will truly have reached is goal, average users -should feel some kind of astonished pleasure, seeing the effect of -that strange kind of magic that just makes their own native language -appear everywhere on their screens. As for naive users, they would -ideally have no special pleasure about it, merely taking their own -language for granted, and becoming rather unhappy otherwise. - -

-

-So, let's try to describe here how we would like the magic to operate, -as we want the users' view to be the simplest, among all ways one -could look at GNU gettext. All other software engineers: -programmers, translators, maintainers, should work together in such a -way that the magic becomes possible. This is a long and progressive -undertaking, and information is available about the progress of the -GNU Translation Project. - -

-

-When a package is distributed, there are two kind of users: -installers who fetch the distribution, unpack it, configure -it, compile it and install it for themselves or others to use; and -end users that call programs of the package, once these have -been installed at their site. GNU gettext is offering magic -for both installers and end users. - -

- - - -

The Current `NLS' Matrix for GNU

- -

-Languages are not equally supported in all GNU packages. To know -if some GNU package uses GNU gettext, one may check -the distribution for the `NLS' information file, for some -`ll.po' files, often kept together into some `po/' -directory, or for an `intl/' directory. Internationalized -packages have usually many `ll.po' files, where ll -represents the language. section Magic for End Users for a complete description -of the format for ll. - -

-

-More generally, a matrix is available for showing the current state -of GNU internationalization, listing which packages are prepared -for multi-lingual messages, and which languages is supported by each. -Because this information changes often, this matrix is not kept within -this GNU gettext manual. This information is often found in -file `NLS' from various GNU distributions, but is also as old -as the distribution itself. A recent copy of this `NLS' file, -containing up-to-date information, should generally be found on most -GNU archive sites. - -

- - -

Magic for Installers

- -

-By default, packages fully using GNU gettext, internally, -are installed in such a way that they to allow translation of -messages. At configuration time, those packages should -automatically detect whether the underlying host system provides usable -catgets or gettext functions. If neither is present, -the GNU gettext library should be automatically prepared -and used. Installers may use special options at configuration -time for changing this behavior. The command `./configure ---with-gnu-gettext' bypasses system catgets or gettext to -use GNU gettext instead, while `./configure --disable-nls' -produces program totally unable to translate messages. - -

-

-Internationalized packages have usually many `ll.po' -files. Unless -translations are disabled, all those available are installed together -with the package. However, the environment variable LINGUAS -may be set, prior to configuration, to limit the installed set. -LINGUAS should then contain a space separated list of two-letter -codes, stating which languages are allowed. - -

- - -

Magic for End Users

- -

-We consider here those packages using GNU gettext internally, -and for which the installers did not disable translation at -configure time. Then, users only have to set the LANG -environment variable to the appropriate `ll' prior to -using the programs in the package. See section The Current `NLS' Matrix for GNU. For example, -let's presume a German site. At the shell prompt, users merely have to -execute `setenv LANG de' (in csh) or `export -LANG; LANG=de' (in sh). They could even do this from their -`.login' or `.profile' file. - -

- - -

The Programmer's View

- -

-One aim of the current message catalog implementation provided by -GNU gettext was to use the systems message catalog handling, if the -installer wishes to do so. So we perhaps should first take a look at -the solutions we know about. The people in the POSIX committee does not -manage to agree on one of the semi-official standards which we'll -describe below. In fact they couldn't agree on anything, so nothing -decide only to include an example of an interface. The major Unix vendors -are split in the usage of the two most important specifications: X/Opens -catgets vs. Uniforums gettext interface. We'll describe them both and -later explain our solution of this dilemma. - -

- - - -

About catgets

- -

-The catgets implementation is defined in the X/Open Portability -Guide, Volume 3, XSI Supplementary Definitions, Chapter 5. But the -process of creating this standard seemed to be too slow for some of -the Unix vendors so they created their implementations on preliminary -versions of the standard. Of course this leads again to problems while -writing platform independent programs: even the usage of catgets -does not guarantee a unique interface. - -

-

-Another, personal comment on this that only a bunch of committee members -could have made this interface. They never really tried to program -using this interface. It is a fast, memory-saving implementation, an -user can happily live with it. But programmers hate it (at least me and -some others do...) - -

-

-But we must not forget one point: after all the trouble with transfering -the rights on Unix(tm) they at last came to X/Open, the very same who -published this specifications. This leads me to making the prediction -that this interface will be in future Unix standards (e.g. Spec1170) and -therefore part of all Unix implementation (implementations, which are -allowed to wear this name). - -

- - - -

The Interface

- -

-The interface to the catgets implementation consists of three -functions which correspond to those used in file access: catopen -to open the catalog for using, catgets for accessing the message -tables, and catclose for closing after work is done. Prototypes -for the functions and the needed definitions are in the -<nl_types.h> header file. - -

-

-catopen is used like in this: - -

- -
-nl_catd catd = catopen ("catalog_name", 0);
-
- -

-The function takes as the argument the name of the catalog. This usual -refers to the name of the program or the package. The second parameter -is not further specified in the standard. I don't even know whether it -is implemented consistently among various systems. So the common advice -is to use 0 as the value. The return value is a handle to the -message catalog, equivalent to handles to file returned by open. - -

-

-This handle is of course used in the catgets function which can -be used like this: - -

- -
-char *translation = catgets (catd, set_no, msg_id, "original string");
-
- -

-The first parameter is this catalog descriptor. The second parameter -specifies the set of messages in this catalog, in which the message -described by msg_id is obtained. catgets therefore uses a -three-stage addressing: - -

- -
-catalog name => set number => message ID => translation
-
- -

-The fourth argument is not used to address the translation. It is given -as a default value in case when one of the addressing stages fail. One -important thing to remember is that although the return type of catgets -is char * the resulting string must not be changed. It -should better const char *, but the standard is published in -1988, one year before ANSI C. - -

-

-The last of these function functions is used and behaves as expected: - -

- -
-catclose (catd);
-
- -

-After this no catgets call using the descriptor is legal anymore. - -

- - -

Problems with the catgets Interface?!

- -

-Now that this descriptions seemed to be really easy where are the -problem we speak of. In fact the interface could be used in a -reasonable way, but constructing the message catalogs is a pain. The -reason for this lies in the third argument of catgets: the unique -message ID. This has to be a numeric value for all messages in a single -set. Perhaps you could imagine the problems keeping such list while -changing the source code. Add a new message here, remove one there. Of -course there have been developed a lot of tools helping to organize this -chaos but one as the other fails in one aspect or the other. We don't -want to say that the other approach has no problems but they are far -more easily to manage. - -

- - -

About gettext

- -

-The definition of the gettext interface comes from a Uniforum -proposal and it is followed by at least one major Unix vendor -(Sun) in its last developments. It is not specified in any official -standard, though. - -

-

-The main points about this solution is that it does not follow the -method of normal file handling (open-use-close) and that it does not -burden the programmer so many task, especially the unique key handling. -Of course here is also a unique key needed, but this key is the -message itself (how long or short it is). See section Comparing the Two Interfaces for a -more detailed comparison of the two methods. - -

-

-The following section contains a rather detailed description of the -interface. We make it that detailed because this is the interface -we chose for the GNU gettext Library. Programmers interested -in using this library will be interested in this description. - -

- - - -

The Interface

- -

-The minimal functionality an interface must have is a) to select a -domain the strings are coming from (a single domain for all programs is -not reasonable because its construction and maintenance is difficult, -perhaps impossible) and b) to access a string in a selected domain. - -

-

-This is principally the description of the gettext interface. It -has an global domain which unqualified usages reference. Of course this -domain is selectable by the user. - -

- -
-char *textdomain (const char *domain_name);
-
- -

-This provides the possibility to change or query the current status of -the current global domain of the LC_MESSAGE category. The -argument is a null-terminated string, whose characters must be legal in -the use in filenames. If the domain_name argument is NULL, -the function return the current value. If no value has been set -before, the name of the default domain is returned: messages. -Please note that although the return value of textdomain is of -type char * no changing is allowed. It is also important to know -that no checks of the availability are made. If the name is not -available you will see this by the fact that no translations are provided. - -

-

-To use a domain set by textdomain the function - -

- -
-char *gettext (const char *msgid);
-
- -

-is to be used. This is the simplest reasonable form one can imagine. -The translation of the string msgid is returned if it is available -in the current domain. If not available the argument itself is -returned. If the argument is NULL the result is undefined. - -

-

-One things which should come into mind is that no explicit dependency to -the used domain is given. The current value of the domain for the -LC_MESSAGES locale is used. If this changes between two -executions of the same gettext call in the program, both calls -reference a different message catalog. - -

-

-For the easiest case, which is normally used in internationalized GNU -packages, once at the beginning of execution a call to textdomain -is issued, setting the domain to a unique name, normally the package -name. In the following code all strings which have to be translated are -filtered through the gettext function. That's all, the package speaks -your language. - -

- - -

Solving Ambiguities

- -

-While this single name domain work good for most applications there -might be the need to get translations from more than one domain. Of -course one could switch between different domains with calls to -textdomain, but this is really not convenient nor is it fast. A -possible situation could be one case discussing while this writing: all -error messages of functions in the set of common used functions should -go into a separate domain error. By this mean we would only need -to translate them once. - -

-

-For this reasons there are two more functions to retrieve strings: - -

- -
-char *dgettext (const char *domain_name, const char *msgid);
-char *dcgettext (const char *domain_name, const char *msgid,
-                 int category);
-
- -

-Both take an additional argument at the first place, which corresponds -to the argument of textdomain. The third argument of -dcgettext allows to use another locale but LC_MESSAGES. -But I really don't know where this can be useful. If the -domain_name is NULL or category has an value beside -the known ones, the result is undefined. It should also be noted that -this function is not part of the second known implementation of this -function family, the one found in Solaris. - -

-

-A second ambiguity can arise by the fact, that perhaps more than one -domain has the same name. This can be solved by specifying where the -needed message catalog files can be found. - -

- -
-char *bindtextdomain (const char *domain_name,
-                      const char *dir_name);
-
- -

-Calling this function binds the given domain to a file in the specified -directory (how this file is determined follows below). Esp a file in -the systems default place is not favored against the specified file -anymore (as it would be by solely using textdomain). A NULL -pointer for the dir_name parameter returns the binding associated -with domain_name. If domain_name itself is NULL -nothing happens and a NULL pointer is returned. Here again as -for all the other functions is true that none of the return value must -be changed! - -

- - -

Locating Message Catalog Files

- -

-Because many different languages for many different packages have to be -stored we need some way to add these information to file message catalog -files. The way usually used in Unix environments is have this encoding -in the file name. This is also done here. The directory name given in -bindtextdomains second argument (or the default directory), -followed by the value and name of the locale and the domain name are -concatenated: - -

- -
-dir_name/locale/LC_category/domain_name.mo
-
- -

-The default value for dir_name is system specific. For the GNU -library it's: - -

-/usr/local/share/locale
-
- -

-locale is the value of the locale whose name is this -LC_category. For gettext and dgettext this -locale is always LC_MESSAGES. dcgettext specifies the -locale by the third argument.(2) (3) - -

- - -

Optimization of the *gettext functions

- -

-At this point of the discussion we should talk about an advantage of the -GNU gettext implementation. Some readers might have pointed out -that an internationalized program might have a poor performance if some -string has to be translated in an inner loop. While this is unavoidable -when the string varies from one run of the loop to the other it is -simply a waste of time when the string is always the same. Take the -following example: - -

- -
-{
-  while (...)
-    {
-      puts (gettext ("Hello world"));
-    }
-}
-
- -

-When the locale selection does not change between two runs the resulting -string is always the same. One way to use this is: - -

- -
-{
-  str = gettext ("Hello world");
-  while (...)
-    {
-      puts (str);
-    }
-}
-
- -

-But this solution is not usable in all situation (e.g. when the locale -selection changes) nor is it good readable. - -

-

-The GNU C compiler, version 2.7 and above, provide another solution for -this. To describe this we show here some lines of the -`intl/libgettext.h' file. For an explanation of the expression -command block see section `Statements and Declarations in Expressions' in The GNU CC Manual. - -

- -
-#  if defined __GNUC__ && __GNUC__ == 2 && __GNUC_MINOR__ >= 7
-#   define	dcgettext(domainname, msgid, category)           \
-  (__extension__                                                 \
-   ({                                                            \
-     char *result;                                               \
-     if (__builtin_constant_p (msgid))                           \
-       {                                                         \
-         extern int _nl_msg_cat_cntr;                            \
-         static char *__translation__;                           \
-         static int __catalog_counter__;                         \
-         if (! __translation__                                   \
-             || __catalog_counter__ != _nl_msg_cat_cntr)         \
-           {                                                     \
-             __translation__ =                                   \
-               dcgettext__ ((domainname), (msgid), (category));  \
-             __catalog_counter__ = _nl_msg_cat_cntr;             \
-           }                                                     \
-         result = __translation__;                               \
-       }                                                         \
-     else                                                        \
-       result = dcgettext__ ((domainname), (msgid), (category)); \
-     result;                                                     \
-    }))
-#  endif
-
- -

-The interesting thing here is the __builtin_constant_p predicate. -This is evaluated at compile time and so optimization can take place -immediately. Here two cases are distinguished: the argument to -gettext is not a constant value in which case simply the function -dcgettext__ is called, the real implementation of the -dcgettext function. - -

-

-If the string argument is constant we can reuse the once gained -translation when the locale selection has not changed. This is exactly -what is done here. The _nl_msg_cat_cntr variable is defined in -the `loadmsgcat.c' which is available in `libintl.a' and is -changed whenever a new message catalog is loaded. - -

- - -

Comparing the Two Interfaces

- -

-The following discussion is perhaps a little bit colored. As said -above we implemented GNU gettext following the Uniforum -proposal and this surely has its reasons. But it should show how we -came to this decision. - -

-

-First we take a look at the developing process. When we write an -application using NLS provided by gettext we proceed as always. -Only when we come to a string which might be seen by the users and thus -has to be translated we use gettext("...") instead of -"...". At the beginning of each source file (or in a central -header file) we define - -

- -
-#define gettext(String) (String)
-
- -

-Even this definition can be avoided when the system supports the -gettext function in its C library. When we compile this code the -result is the same as if no NLS code is used. When you take a look at -the GNU gettext code you will see that we use _("...") -instead of gettext("..."). This reduces the number of -additional characters per translatable string to 3 (in words: -three). - -

-

-When now a production version of the program is needed we simply replace -the definition - -

- -
-#define _(String) (String)
-
- -

-by - -

- -
-#include <libintl.h>
-#define _(String) gettext (String)
-
- -

-and include the header `libintl.h'. Additionally we run the -program `xgettext' on all source code file which contain -translatable strings and we are gone. We have a running program which -does not depend on translations to be available, but which can use any -that becomes available. - -

-

-The same procedure can be done for the gettext_noop invocations -(see section Special Cases of Translatable Strings). First you can define gettext_noop to a -no-op macro and later use the definition from `libintl.h'. Because -this name is not used in Suns implementation of `libintl.h', -you should consider the following code for your project: - -

- -
-#ifdef gettext_noop
-# define N_(Str) gettext_noop (Str)
-#else
-# define N_(Str) (Str)
-#endif
-
- -

-N_ is a short form similar to _. The `Makefile' in -the `po/' directory of GNU gettext knows by default both of the -mentioned short forms so you are invited to follow this proposal for -your own ease. - -

-

-Now to catgets. The main problem is the work for the -programmer. Every time he comes to a translatable string he has to -define a number (or a symbolic constant) which has also be defined in -the message catalog file. He also has to take care for duplicate -entries, duplicate message IDs etc. If he wants to have the same -quality in the message catalog as the GNU gettext program -provides he also has to put the descriptive comments for the strings and -the location in all source code files in the message catalog. This is -nearly a Mission: Impossible. - -

-

-But there are also some points people might call advantages speaking for -catgets. If you have a single word in a string and this string -is used in different contexts it is likely that in one or the other -language the word has different translations. Example: - -

- -
-printf ("%s: %d", gettext ("number"), number_of_errors)
-
-printf ("you should see %d %s", number_count,
-        number_count == 1 ? gettext ("number") : gettext ("numbers"))
-
- -

-Here we have to translate two times the string "number". Even -if you do not speak a language beside English it might be possible to -recognize that the two words have a different meaning. In German the -first appearance has to be translated to "Anzahl" and the second -to "Zahl". - -

-

-Now you can say that this example is really esoteric. And you are -right! This is exactly how we felt about this problem and decide that -it does not weight that much. The solution for the above problem could -be very easy: - -

- -
-printf (gettext ("number: %d"), number_of_errors)
-
-printf (number_count == 1 ? gettext ("you should see %d number")
-                          : gettext ("you should see %d numbers"),
-        number_count)
-
- -

-We believe that we can solve all conflicts with this method. If it is -difficult one can also consider changing one of the conflicting string a -little bit. But it is not impossible to overcome. - -

-

-Translator note: It is perhaps appropriate here to tell those English -speaking programmers that the plural form of a noun cannot be formed by -appending a single `s'. Most other languages use different methods. So -you should at least use the method given in the above example. - -

-

-But I have been told that some languages have even more complex rules. -A good approach might be to consider methods like the one used for -LC_TIME in the POSIX.2 standard. - -

- - - -

Using libintl.a in own programs

- -

-Starting with version 0.9.4 the library libintl.h should be more -or less self-contained. I.e. you can use it in your own programs. The -`Makefile' will put the header and the library in directories -selected using the $(prefix). - -

-

-One exception of the above is found on HP-UX systems. Here the C library -does not contain the alloca function (and the HP compiler does -not generate it inlined). But it is not intended to rewrite the whole -library just because of this dumb system. Instead include the -alloca function in all package you use the libintl.a in. - -

- - - -

Being a gettext grok

- -

-To fully exploit the functionality of the GNU gettext library it -is surely helpful to read the source code. But for those who don't want -to spend that much time in reading the (sometimes complicated) code here -is a list comments: - -

- -
    -
  • Changing the language at runtime - -For interactive programs it might be useful to offer a selection of the -used language at runtime. To understand how to do this one need to know -how the used language is determined while executing the gettext -function. The method which is presented here only works correctly -with the GNU implementation of the gettext functions. It is not -possible with underlying catgets functions or gettext -functions from the systems C library. The exception is of course the -GNU C Library which uses the GNU gettext Library for message handling. - -In the function dcgettext at every call the current setting of -the highest priority environment variable is determined and used. -Highest priority means here the following list with decreasing -priority: - - -
      -
    1. LANGUAGE - -
    2. LC_ALL - -
    3. LC_xxx, according to selected locale - -
    4. LANG - -
    - -Afterwards the path is constructed using the found value and the -translation file is loaded if available. - -What is now when the value for, say, LANGUAGE changes. According -to the process explained above the new value of this variable is found -as soon as the dcgettext function is called. But this also means -the (perhaps) different message catalog file is loaded. In other -words: the used language is changed. - -But there is one little hook. The code for gcc-2.7.0 and up provides -some optimization. This optimization normally prevents the calling of -the dcgettext function as long as now new catalog is loaded. But -if dcgettext is not called we program also cannot find the -LANGUAGE variable be changed (see section Optimization of the *gettext functions). But the -solution is very easy. Include the following code in the language -switching function. - - -
    -  /* Change language.  */
    -  setenv ("LANGUAGE", "fr", 1);
    -
    -  /* Make change known.  */
    -  {
    -    extern int  _nl_msg_cat_cntr;
    -    ++_nl_msg_cat_cntr;
    -  }
    -
    - -The variable _nl_msg_cat_cntr is defined in `loadmsgcat.c'. - -
- - - -

Temporary Notes for the Programmers Chapter

- - - -

Temporary - Two Possible Implementations

- -

-There are two competing methods for language independent messages: -the X/Open catgets method, and the Uniforum gettext -method. The catgets method indexes messages by integers; the -gettext method indexes them by their English translations. -The catgets method has been around longer and is supported -by more vendors. The gettext method is supported by Sun, -and it has been heard that the COSE multi-vendor initiative is -supporting it. Neither method is a POSIX standard; the POSIX.1 -committee had a lot of disagreement in this area. - -

-

-Neither one is in the POSIX standard. There was much disagreement -in the POSIX.1 committee about using the gettext routines -vs. catgets (XPG). In the end the committee couldn't -agree on anything, so no messaging system was included as part -of the standard. I believe the informative annex of the standard -includes the XPG3 messaging interfaces, "...as an example of -a messaging system that has been implemented..." - -

-

-They were very careful not to say anywhere that you should use one -set of interfaces over the other. For more on this topic please -see the Programming for Internationalization FAQ. - -

- - -

Temporary - About catgets

- -

-There have been a few discussions of late on the use of -catgets as a base. I think it important to present both -sides of the argument and hence am opting to play devil's advocate -for a little bit. - -

-

-I'll not deny the fact that catgets could have been designed -a lot better. It currently has quite a number of limitations and -these have already been pointed out. - -

-

-However there is a great deal to be said for consistency and -standardization. A common recurring problem when writing Unix -software is the myriad portability problems across Unix platforms. -It seems as if every Unix vendor had a look at the operating system -and found parts they could improve upon. Undoubtedly, these -modifications are probably innovative and solve real problems. -However, software developers have a hard time keeping up with all -these changes across so many platforms. - -

-

-And this has prompted the Unix vendors to begin to standardize their -systems. Hence the impetus for Spec1170. Every major Unix vendor -has committed to supporting this standard and every Unix software -developer waits with glee the day they can write software to this -standard and simply recompile (without having to use autoconf) -across different platforms. - -

-

-As I understand it, Spec1170 is roughly based upon version 4 of the -X/Open Portability Guidelines (XPG4). Because catgets and -friends are defined in XPG4, I'm led to believe that catgets -is a part of Spec1170 and hence will become a standardized component -of all Unix systems. - -

- - -

Temporary - Why a single implementation

- -

-Now it seems kind of wasteful to me to have two different systems -installed for accessing message catalogs. If we do want to remedy -catgets deficiencies why don't we try to expand catgets -(in a compatible manner) rather than implement an entirely new system. -Otherwise, we'll end up with two message catalog access systems -installed with an operating system - one set of routines for GNU -software, and another set of routines (catgets) for all other software. -Bloated? - -

-

-Supposing another catalog access system is implemented. Which do -we recommend? At least for Linux, we need to attract as many -software developers as possible. Hence we need to make it as easy -for them to port their software as possible. Which means supporting -catgets. We will be implementing the glocale code -within our libc, but does this mean we also have to incorporate -another message catalog access scheme within our libc as well? -And what about people who are going to be using the glocale -+ non-catgets routines. When they port their software to -other platforms, they're now going to have to include the front-end -(glocale) code plus the back-end code (the non-catgets -access routines) with their software instead of just including the -glocale code with their software. - -

-

-Message catalog support is however only the tip of the iceberg. -What about the data for the other locale categories. They also have -a number of deficiencies. Are we going to abandon them as well and -develop another duplicate set of routines (should glocale -expand beyond message catalog support)? - -

-

-Like many parts of Unix that can be improved upon, we're stuck with balancing -compatibility with the past with useful improvements and innovations for -the future. - -

- - -

Temporary - Double layer solution

- -

-GNU locale implements a gettext-style interface on top of a -catgets-style interface. - -

-

-This is not needless complexity. It is absolutely vital, because -it enables gettext to run on top of catgets, which -enables Linux International to recommend users use it today. - -

-

-Rewriting gettext so that it could use either -catgets or some simpler mechanism would not break -anything, but would not reduce complexity either. It might be -worth doing, but it isn't urgent. - -

-

-In general, simplicity is not enough of a reason to rewrite a -program that works. Simplicity is just one desirable thing. -It is not overridingly important. - -

- - -

Temporary - Notes

- -

-X/Open agreed very late on the standard form so that many -implementations differ from the final form. Both of my system (old -Linux catgets and Ultrix-4) have a strange variation. - -

-

-OK. After incorporating the last changes I have to spend some time on -making the GNU/Linux libc gettext functions. So in future Solaris is -not the only system having gettext. - -

- - -

The Translator's View

- - - -

Introduction 0

- -

-GNU is going international! The GNU Translation Project is a way -to get maintainers, translators and users all together, so GNU will -gradually become able to speak many native languages. - -

-

-The GNU gettext tool set contains everything maintainers -need for internationalizing their packages for messages. It also -contains quite useful tools for helping translators at localizing -messages to their native language, once a package has already been -internationalized. - -

-

-To achieve the GNU Translation Project, we need many interested -people who like their own language and write it well, and who are also -able to synergize with other translators speaking the same language. -If you'd like to volunteer to work at translating messages, -please send mail to your translating team. - -

-

-Each team has its own mailing list, courtesy of Linux -International. You may reach your translating team at the address -`ll@li.org', replacing ll by the two-letter ISO 639 -code for your language. Language codes are not the same as -country codes given in ISO 3166. The following translating teams -exist: - -

- -
-

-Chinese zh, Czech cs, Danish da, Dutch nl, -Esperanto eo, Finnish fi, French fr, Irish -ga, German de, Greek el, Italian it, -Japanese ja, Indonesian in, Norwegian no, Polish -pl, Portuguese pt, Russian ru, Spanish es, -Swedish sv and Turkish tr. -

- -

-For example, you may reach the Chinese translating team by writing to -`zh@li.org'. When you become a member of the translating team -for your own language, you may subscribe to its list. For example, -Swedish people can send a message to `sv-request@li.org', -having this message body: - -

- -
-subscribe
-
- -

-Keep in mind that team members should be interested in working -at translations, or at solving translational difficulties, rather than -merely lurking around. If your team does not exist yet and you want to -start one, please write to `gnu-translation@prep.ai.mit.edu'; -you will then reach the GNU coordinator for all translator teams. - -

-

-A handful of GNU packages have already been adapted and provided -with message translations for several languages. Translation -teams have begun to organize, using these packages as a starting -point. But there are many more packages and many languages for -which we have no volunteer translators. If you would like to -volunteer to work at translating messages, please send mail to -`gnu-translation@prep.ai.mit.edu' indicating what language(s) -you can work on. - -

- - -

Introduction 1

- -

-This is now official, GNU is going international! Here is the -announcement submitted for the January 1995 GNU Bulletin: - -

- -
-

-A handful of GNU packages have already been adapted and provided -with message translations for several languages. Translation -teams have begun to organize, using these packages as a starting -point. But there are many more packages and many languages -for which we have no volunteer translators. If you'd like to -volunteer to work at translating messages, please send mail to -`gnu-translation@prep.ai.mit.edu' indicating what language(s) -you can work on. -

- -

-This document should answer many questions for those who are curious -about the process or would like to contribute. Please at least skim -over it, hoping to cut down a little of the high volume of email -generated by this collective effort towards GNU internationalization. - -

-

-GNU programming is done in English, and currently, English is used -as the main communicating language between national communities -collaborating to the GNU project. This very document is written -in English. This will not change in the foreseeable future. - -

-

-However, there is a strong appetite from national communities for -having more software able to write using national language and habits, -and there is an on-going effort to modify GNU software in such a way -that it becomes able to do so. The experiments driven so far raised -an enthusiastic response from pretesters, so we believe that GNU -internationalization is dedicated to succeed. - -

-

-For suggestion clarifications, additions or corrections to this -document, please email to `gnu-translation@prep.ai.mit.edu'. - -

- - -

Discussions

- -

-Facing this internationalization effort, a few users expressed their -concerns. Some of these doubts are presented and discussed, here. - -

- -
    -
  • Smaller groups - -Some languages are not spoken by a very large number of people, -so people speaking them sometimes consider that there may not be -all that much demand such versions of GNU packages. Moreover, many -people being into computers, in some countries, generally seem -to prefer English versions of their software. - -On the other end, people might enjoy their own language a lot, and -be very motivated at providing to themselves the pleasure of having -their beloved GNU software speaking their mother tongue. They do -themselves a personal favor, and do not pay that much attention to -the number of people beneficiating of their work. - -
  • Misinterpretation - -Other users are shy to push forward their own language, seeing in this -some kind of misplaced propaganda. Someone thought there must be some -users of the language over the networks pestering other people with it. - -But any spoken language is worth localization, because there are -people behind the language for whom the language is important and -dear to their hearts. - -
  • Odd translations - -The biggest problem is to find the right translations so that -everybody can understand the messages. Translations are usually a -little odd. Some people get used to English, to the extent they may -find translations into their own language "rather pushy, obnoxious -and sometimes even hilarious." As a French speaking man, I have -the experience of those instruction manuals for goods, so poorly -translated in French in Korea or Taiwan... - -The fact is that we sometimes have to create a kind of national -computer culture, and this is not easy without the collaboration of -many people liking their mother tongue. This is why translations are -better achieved by people knowing and loving their own language, and -ready to work together at improving the results they obtain. - -
  • Dependencies over the GPL - -Some people wonder if using GNU gettext necessarily brings their package -under the protective wing of the GNU General Public License, when they -do not want to make their program free, or want other kinds of freedom. -The simplest answer is yes. - -The mere marking of localizable strings in a package, or conditional -inclusion of a few lines for initialization, is not really including -GPL'ed code. However, the localization routines themselves are under -the GPL and would bring the remainder of the package under the GPL -if they were distributed with it. So, I presume that, for those -for which this is a problem, it could be circumvented by letting to -the end installers the burden of assembling a package prepared for -localization, but not providing the localization routines themselves. - -
- - - -

Organization

- -

-On a larger scale, the true solution would be to organize some kind of -fairly precise set up in which volunteers could participate. I gave -some thought to this idea lately, and realize there will be some -touchy points. I thought of writing to Richard Stallman to launch -such a project, but feel it might be good to shake out the ideas -between ourselves first. Most probably that Linux International has -some experience in the field already, or would like to orchestrate -the volunteer work, maybe. Food for thought, in any case! - -

-

-I guess we have to setup something early, somehow, that will help -many possible contributors of the same language to interlock and avoid -work duplication, and further be put in contact for solving together -problems particular to their tongue (in most languages, there are many -difficulties peculiar to translating technical English). My Swedish -contributor acknowledged these difficulties, and I'm well aware of -them for French. - -

-

-This is surely not a technical issue, but we should manage so the -effort of locale contributors be maximally useful, despite the national -team layer interface between contributors and maintainers. - -

-

-GNU needs some setup for coordinating language coordinators. -Localizing evolving GNU programs will surely become a permanent -and continuous activity in GNU, once started. The setup should be -minimally completed and tested before GNU gettext becomes an official -reality. The email address `gnu-translation@prep.ai.mit.edu' -has been setup for receiving offers from volunteers and general -email on these topics. This address reaches the GNU Translation -Project coordinator. - -

- - - -

Central Coordination

- -

-I also think GNU will need sooner than it thinks, that someone setup -a way to organize and coordinate these groups. Some kind of group -of groups. My opinion is that it would be good that GNU delegate -this task to a small group of collaborating volunteers, shortly. -Perhaps in `gnu.announce' a list of this national committee's -can be published. - -

-

-My role as coordinator would simply be to refer to Ulrich any German -speaking volunteer interested to localization of GNU programs, and -maybe helping national groups to initially organize, while maintaining -national registries for until national groups are ready to take over. -In fact, the coordinator should ease volunteers to get in contact with -one another for creating national teams, which should then select -one coordinator per language, or country (regionalized language). -If well done, the coordination should be useful without being an -overwhelming task, the time to put delegations in place. - -

- - -

National Teams

- -

-I suggest we look for volunteer coordinators/editors for individual -languages. These people will scan contributions of translation files -for various programs, for their own languages, and will ensure high -and uniform standards of diction. - -

-

-From my current experience with other people in these days, those who -provide localizations are very enthusiastic about the process, and are -more interested in the localization process than in the program they -localize, and want to do many programs, not just one. This seems -to confirm that having a coordinator/editor for each language is a -good idea. - -

-

-We need to choose someone who is good at writing clear and concise -prose in the language in question. That is hard--we can't check -it ourselves. So we need to ask a few people to judge each others' -writing and select the one who is best. - -

-

-I announce my prerelease to a few dozen people, and you would not -believe all the discussions it generated already. I shudder to think -what will happen when this will be launched, for true, officially, -world wide. Who am I to arbitrate between two Czekolsovak users -contradicting each other, for example? - -

-

-I assume that your German is not much better than my French so that -I would not be able to judge about these formulations. What I would -suggest is that for each language there is a group for people who -maintain the PO files and judge about changes. I suspect there will -be cultural differences between how such groups of people will behave. -Some will have relaxed ways, reach consensus easily, and have anyone -of the group relate to the maintainers, while others will fight to -death, organize heavy administrations up to national standards, and -use strict channels. - -

-

-The German team is putting out a good example. Right now, they are -maybe half a dozen people revising translations of each other and -discussing the linguistic issues. I do not even have all the names. -Ulrich Drepper is taking care of coordinating the German team. -He subscribed to all my pretest lists, so I do not even have to warn -him specifically of incoming releases. - -

-

-I'm sure, that is a good idea to get teams for each language working -on translations. That will make the translations better and more -consistent. - -

- - - -

Sub-Cultures

- -

-Taking French for example, there are a few sub-cultures around -computers which developed diverging vocabularies. Picking volunteers -here and there without addressing this problem in an organized way, -soon in the project, might produce a distasteful mix of GNU programs, -and possibly trigger endless quarrels among those who really care. - -

-

-Keeping some kind of unity in the way French localization of GNU -programs is achieved is a difficult (and delicate) job. Knowing the -latin character of French people (:-), if we take this the wrong -way, we could end up nowhere, or spoil a lot of energies. Maybe we -should begin to address this problem seriously before GNU -gettext become officially published. And I suspect that this -means soon! - -

- - -

Organizational Ideas

- -

-I expect the next big changes after the official release. Please note -that I use the German translation of the short GPL message. We need -to set a few good examples before the localization goes out for true -in GNU. Here are a few points to discuss: - -

- -
    -
  • - -Each group should have one FTP server (at least one master). - -
  • - -The files on the server should reflect the latest version (of -course!) and it should also contain a RCS directory with the -corresponding archives (I don't have this now). - -
  • - -There should also be a ChangeLog file (this is more useful than the -RCS archive but can be generated automatically from the later by -Emacs). - -
  • - -A core group should judge about questionable changes (for now -this group consists solely by me but I ask some others occasionally; -this also seems to work). - -
- - - -

Mailing Lists

- -

-If we get any inquiries about GNU gettext, send them on to: - -

- -
-`gnu-translation@prep.ai.mit.edu'
-
- -

-The `*-pretest' lists are quite useful to me, maybe the idea could -be generalized to all GNU packages. But each maintainer his/her way! - -

-

-, we have a mechanism in place here at -`gnu.ai.mit.edu' to track teams, support mailing lists for -them and log members. We have a slight preference that you use it. -If this is OK with you, I can get you clued in. - -

-

-Things are changing! A few years ago, when Daniel Fekete and I -asked for a mailing list for GNU localization, nested at the FSF, we -were politely invited to organize it anywhere else, and so did we. -For communicating with my pretesters, I later made a handful of -mailing lists located at iro.umontreal.ca and administrated by -majordomo. These lists have been very dependable -so far... - -

-

-I suspect that the German team will organize itself a mailing list -located in Germany, and so forth for other countries. But before they -organize for true, it could surely be useful to offer mailing lists -located at the FSF to each national team. So yes, please explain me -how I should proceed to create and handle them. - -

-

-We should create temporary mailing lists, one per country, to help -people organize. Temporary, because once regrouped and structured, it -would be fair the volunteers from country bring back their list -in there and manage it as they want. My feeling is that, in the long -run, each team should run its own list, from within their country. -There also should be some central list to which all teams could -subscribe as they see fit, as long as each team is represented in it. - -

- - -

Information Flow

- -

-There will surely be some discussion about this messages after the -packages are finally released. If people now send you some proposals -for better messages, how do you proceed? Jim, please note that -right now, as I put forward nearly a dozen of localizable programs, I -receive both the translations and the coordination concerns about them. - -

-

-If I put one of my things to pretest, Ulrich receives the announcement -and passes it on to the German team, who make last minute revisions. -Then he submits the translation files to me as the maintainer. -For GNU packages I do not maintain, I would not even hear about it. -This scheme could be made to work GNU-wide, I think. For security -reasons, maybe Ulrich (national coordinators, in fact) should update -central registry kept by GNU (Jim, me, or Len's recruits) once in -a while. - -

-

-In December/January, I was aggressively ready to internationalize -all of GNU, giving myself the duty of one small GNU package per week -or so, taking many weeks or months for bigger packages. But it does -not work this way. I first did all the things I'm responsible for. -I've nothing against some missionary work on other maintainers, but -I'm also loosing a lot of energy over it--same debates over again. - -

-

-And when the first localized packages are released we'll get a lot of -responses about ugly translations :-). Surely, and we need to have -beforehand a fairly good idea about how to handle the information -flow between the national teams and the package maintainers. - -

-

-Please start saving somewhere a quick history of each PO file. I know -for sure that the file format will change, allowing for comments. -It would be nice that each file has a kind of log, and references for -those who want to submit comments or gripes, or otherwise contribute. -I sent a proposal for a fast and flexible format, but it is not -receiving acceptance yet by the GNU deciders. I'll tell you when I -have more information about this. - -

- - -

The Maintainer's View

- -

-The maintainer of a package has many responsibilities. One of them -is ensuring that the package will install easily on many platforms, -and that the magic we described earlier (see section The User's View) will work -for installers and end users. - -

-

-Of course, there are many possible ways by which GNU gettext -might be integrated in a distribution, and this chapter does not cover -them in all generality. Instead, it details one possible approach -which is especially adequate for many GNU distributions, because -GNU gettext is purposely for helping the internationalization -of the whole GNU project. So, the maintainer's view presented here -presumes that the package already has a `configure.in' file and -uses Autoconf. - -

-

-Nevertheless, GNU gettext may surely be useful for non-GNU -packages, but the maintainers of such packages might have to show -imagination and initiative in organizing their distributions so -gettext work for them in all situations. There are surely -many, out there. - -

-

-Even if gettext methods are now stabilizing, slight adjustments -might be needed between successive gettext versions, so you -should ideally revise this chapter in subsequent releases, looking -for changes. - -

- - - -

Flat or Non-Flat Directory Structures

- -

-Some GNU packages are distributed as tar files which unpack -in a single directory, these are said to be flat distributions. -Other GNU packages have a one level hierarchy of subdirectories, using -for example a subdirectory named `doc/' for the Texinfo manual and -man pages, another called `lib/' for holding functions meant to -replace or complement C libraries, and a subdirectory `src/' for -holding the proper sources for the package. These other distributions -are said to be non-flat. - -

-

-For now, we cannot say much about flat distributions. A flat -directory structure has the disadvantage of increasing the difficulty -of updating to a new version of GNU gettext. Also, if you have -many PO files, this could somewhat pollute your single directory. -In the GNU gettext distribution, the `misc/' directory -contains a shell script named `combine-sh'. That script may -be used for combining all the C files of the `intl/' directory -into a pair of C files (one `.c' and one `.h'). Those two -generated files would fit more easily in a flat directory structure, -and you will then have to add these two files to your project. - -

-

-Maybe because GNU gettext itself has a non-flat structure, -we have more experience with this approach, and this is what will be -described in the remaining of this chapter. Some maintainers might -use this as an opportunity to unflatten their package structure. -Only later, once gained more experience adapting GNU gettext -to flat distributions, we might add some notes about how to proceed -in flat situations. - -

- - -

Prerequisite Works

- -

-There are some works which are required for using GNU gettext -in one of your package. These works have some kind of generality -that escape the point by point descriptions used in the remainder -of this chapter. So, we describe them here. - -

- -
    -
  • - -Before attempting to use you should install some other packages first. -Ensure that recent versions of GNU m4, GNU Autoconf and GNU -gettext are already installed at your site, and if not, proceed -to do this first. If you got to install these things, beware that -GNU m4 must be fully installed before GNU Autoconf is even -configured. - -Those three packages are only needed to you, as a maintainer; the -installers of your own package and end users do not really need any -of GNU m4, GNU Autoconf or GNU gettext for successfully -installing and running your package, with messages properly translated. -But this is not completely true if you provide internationalized -shell scripts within your own package: GNU gettext shall -then be installed at the user site if the end users want to see the -translation of shell script messages. - -
  • - -Your package should use Autoconf and have a `configure.in' file. -If it does not, you have to learn how. The Autoconf documentation -is quite well written, it is a good idea that you print it and get -familiar with it. - -
  • - -Your C sources should have already been modified according to -instructions given earlier in this manual. See section Preparing Program Sources. - -
  • - -Your `po/' directory should receive all PO files submitted to you -by the translator teams, each having `ll.po' as a name. -This is not usually easy to get translation -work done before your package gets internationalized and available! -Since the cycle has to start somewhere, the easiest for the maintainer -is to start with absolutely no PO files, and wait until various -translator teams get interested in your package, and submit PO files. - -
- -

-It is worth adding here a few words about how the maintainer should -ideally behave with PO files submissions. As a maintainer, your -role is to authentify the origin of the submission as being the -representative of the appropriate GNU translating team (forward the -submission to `gnu-translation@prep.ai.mit.edu' in case of -doubt), to ensure that the PO file format is not severely broken and -does not prevent successful installation, and for the rest, to merely -to put these PO files in `po/' for distribution. - -

-

-As a maintainer, you do not have to take on your shoulders the -responsibility of checking if the translations are adequate or -complete, and should avoid diving into linguistic matters. Translation -teams drive themselves and are fully responsible of their linguistic -choices for GNU. Keep in mind that translator teams are not -driven by maintainers. You can help by carefully redirecting all -communications and reports from users about linguistic matters to the -appropriate translation team, or explain users how to reach or join -their team. The simplest might be to send them the `NLS' file. - -

-

-Maintainers should never ever apply PO file bug reports -themselves, short-cutting translation teams. If some translator has -difficulty to get some of her points through her team, it should not be -an issue for her to directly negotiate translations with maintainers. -Teams ought to settle their problems themselves, if any. If you, as -a maintainer, ever think there is a real problem with a team, please -never try to solve a team's problem on your own. - -

- - -

Invoking the gettextize Program

- -

-Some files are consistently and identically needed in every package -internationalized through GNU gettext. As a matter of -convenience, the gettextize program puts all these files right -in your package. This program has the following synopsis: - -

- -
-gettextize [ option... ] [ directory ]
-
- -

-and accepts the following options: - -

-
- -
`-f' -
-
`--force' -
-Force replacement of files which already exist. - -
`-h' -
-
`--help' -
-Display this help and exit. - -
`--version' -
-Output version information and exit. - -
- -

-If directory is given, this is the top level directory of a -package to prepare for using GNU gettext. If not given, it -is assumed that the current directory is the top level directory of -such a package. - -

-

-The program gettextize provides the following files. However, -no existing file will be replaced unless the option --force -(-f) is specified. - -

- -
    -
  1. - -The `NLS' file is copied in the main directory of your package, -the one being at the top level. This file gives the main indications -about how to install and use the Native Language Support features -of your program. You might elect to use a more recent copy of this -`NLS' file than the one provided through gettextize, if -you have one handy. You may also fetch a more recent copy of file -`NLS' from most GNU archive sites. - -
  2. - -A `po/' directory is created for eventually holding -all translation files, but initially only containing the file -`po/Makefile.in.in' from the GNU gettext distribution. -(beware the double `.in' in the file name). If the `po/' -directory already exists, it will be preserved along with the files -it contains, and only `Makefile.in.in' will be overwritten. - -
  3. - -A `intl/' directory is created and filled with most of the files -originally in the `intl/' directory of the GNU gettext -distribution. Also, if option --force (-f) is given, -the `intl/' directory is emptied first. - -
- -

-If your site support symbolic links, gettextize will not -actually copy the files into your package, but establish symbolic -links instead. This avoids duplicating the disk space needed in -all packages. Merely using the `-h' option while creating the -tar archive of your distribution will resolve each link by an -actual copy in the distribution archive. So, to insist, you really -should use `-h' option with tar within your dist -goal of your main `Makefile.in'. - -

-

-It is interesting to understand that most new files for supporting -GNU gettext facilities in one package go in `intl/' -and `po/' subdirectories. One distinction between these two -directories is that `intl/' is meant to be completely identical -in all packages using GNU gettext, while all newly created -files, which have to be different, go into `po/'. There is a -common `Makefile.in.in' in `po/', because the `po/' -directory needs its own `Makefile', and it has been designed so -it can be identical in all packages. - -

- - -

Files You Must Create or Alter

- -

-Besides files which are automatically added through gettextize, -there are many files needing revision for properly interacting with -GNU gettext. If you are closely following GNU standards for -Makefile engineering and auto-configuration, the adaptations should -be easier to achieve. Here is a point by point description of the -changes needed in each. - -

-

-So, here comes a list of files, each one followed by a description of -all alterations it needs. Many examples are taken out from the GNU -gettext 0.10 distribution itself. You may indeed -refer to the source code of the GNU gettext package, as it -is intended to be a good example and master implementation for using -its own functionality. - -

- - - -

`POTFILES' in `po/'

- -

-The `po/' directory should receive a file named -`POTFILES.in'. This file tells which files, among all program -sources, have marked strings needing translation. Here is an example -of such a file: - -

- -
-# List of source files containing translatable strings.
-# Copyright (C) 1995 Free Software Foundation, Inc.
-
-# Common library files
-lib/error.c
-lib/getopt.c
-lib/xmalloc.c
-
-# Package source files
-src/gettextp.c
-src/msgfmt.c
-src/xgettext.c
-
- -

-Dashed comments and white lines are ignored. All other lines -list those source files containing strings marked for translation -(see section How Marks Appears in Sources), in a notation relative to the top level -of your whole distribution, rather than the location of the -`POTFILES.in' file itself. - -

- - -

`configure.in' at top level

- - -
    -
  1. Declare the package and version. - -This is done by a set of lines like these: - - -
    -PACKAGE=gettext
    -VERSION=0.10
    -AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE")
    -AC_DEFINE_UNQUOTED(VERSION, "$VERSION")
    -AC_SUBST(PACKAGE)
    -AC_SUBST(VERSION)
    -
    - -Of course, you replace `gettext' with the name of your package, -and `0.10' by its version numbers, exactly as they -should appear in the packaged tar file name of your distribution -(`gettext-0.10.tar.gz', here). - -
  2. Declare the available translations. - -This is done by defining ALL_LINGUAS to the white separated, -quoted list of available languages, in a single line, like this: - - -
    -ALL_LINGUAS="de fr"
    -
    - -This example means that German and French PO files are available, so -that these languages are currently supported by your package. If you -want to further restrict, at installation time, the set of installed -languages, this should not be done by modifying ALL_LINGUAS in -`configure.in', but rather by using the LINGUAS environment -variable (see section Magic for Installers). - -
  3. Check for internationalization support. - -Here is the main m4 macro for triggering internationalization -support. Just add this line to `configure.in': - - -
    -ud_GNU_GETTEXT
    -
    - -This call is purposely simple, even if it generates a lot of configure -time checking and actions. - -
  4. Obtain some `libintl.h' header file. - -Once you called ud_GNU_GETTEXT in `configure.in', use: - - -
    -AC_LINK_FILES($nls_cv_header_libgt, $nls_cv_header_intl)
    -
    - -This will create one header file `libintl.h'. The reason for -this has to do with the fact that some systems, using the Uniforum -message handling functions, already have a file of this name. - -The AC_LINK_FILES call has not been integrated into the -ud_GNU_GETTEXT macro because there can be only one such call -in a `configure' file. If you already use it, you will have to -merge the needed AC_LINK_FILES within yours, by adding -the first argument at the end of the list of your first argument, -and adding the second argument at the end of the list of your second -argument. - -
  5. Have output files created. - -The AC_OUTPUT directive, at the end of your `configure.in' -file, needs to be modified in two ways: - - -
    -AC_OUTPUT([existing configuration files intl/Makefile po/Makefile.in],
    -[sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile
    -existing additional actions])
    -
    - -The modification to the first argument to AC_OUTPUT asks -for substitution in the `intl/' and `po/' directories. -Note the `.in' suffix used for `po/' only. This is because -the distributed file is really `po/Makefile.in.in'. - -The modification to the second argument ensures that `po/Makefile' -gets generated out of the `po/Makefile.in' just created, including -in it the `po/POTFILES' produced by ud_GNU_GETTEXT. -Two steps are needed because `po/POTFILES' can get lengthy in -some packages, too lengthy in fact for being able to merely use an -Autoconf substituted variable, as many seds cannot handle very -long lines. - -
- - - -

`aclocal.m4' at top level

- -

-If you do not have an `aclocal.m4' file in your distribution, -the simplest is taking a copy of `aclocal.m4' from -GNU gettext. But to be precise, you only need macros -ud_LC_MESSAGES, ud_WITH_NLS and ud_GNU_GETTEXT, -so you may use an editor and remove macros you do not need. - -

-

-If you already have an `aclocal.m4' file, then you will have -to merge the said macros into your `aclocal.m4'. Note that if -you are upgrading from a previous release of GNU gettext, you -should most probably replace the said macros, as they usually -change a little from one release of GNU gettext to the next. -Their contents may vary as we get more experience with strange systems -out there. - -

-

-These macros check for the internationalization support functions -and related informations. Hopefully, once stabilized, these macros -might be integrated in the standard Autoconf set, because this -piece of m4 code will be the same for all projects using GNU -gettext. - -

- - -

`acconfig.h' at top level

- -

-If you do not have an `acconfig.h' file in your distribution, -the simplest is use take a copy of `acconfig.h' from -GNU gettext. But to be precise, you only need the -lines and comments for ENABLE_NLS, HAVE_CATGETS, -HAVE_GETTEXT and HAVE_LC_MESSAGES, so you may use -an editor and remove everything else. If you already have an -`acconfig.h' file, then you should merge the said definitions -into your `acconfig.h'. - -

- - -

`Makefile.in' at top level

- -

-Here are a few modifications you need to make to your main, top-level -`Makefile.in' file. - -

- -
    -
  1. - -Add the following lines near the beginning of your `Makefile.in', -so the `dist:' goal will work properly (as explained further down): - - -
    -PACKAGE = @PACKAGE@
    -VERSION = @VERSION@
    -
    - -
  2. - -Add file `NLS' to the DISTFILES definition, so the file gets -distributed. - -
  3. - -Wherever you process subdirectories in your `Makefile.in', be -sure you also process @INTLSUB@ and @POSUB@, which -are replaced respectively by `intl' and `po', or empty -when the configuration processes decides these directories should -not be processed. - -Here is an example of a canonical order of processing. In this -example, we also define SUBDIRS in Makefile.in for it -to be further used in the `dist:' goal. - - -
    -SUBDIRS = doc lib @INTLSUB@ src @POSUB@
    -
    - -that you will have to adapt to your own package. - -
  4. - -A delicate point is the `dist:' goal, as both -`intl/Makefile' and `po/Makefile' will later assume that the -proper directory has been set up from the main `Makefile'. Here is -an example at what the `dist:' goal might look like: - - -
    -distdir = $(PACKAGE)-$(VERSION)
    -dist: Makefile
    -	rm -fr $(distdir)
    -	mkdir $(distdir)
    -	chmod 777 $(distdir)
    -	for file in $(DISTFILES); do \
    -	  ln $$file $(distdir) 2>/dev/null || cp -p $$file $(distdir); \
    -	done
    -	for subdir in $(SUBDIRS); do \
    -	  mkdir $(distdir)/$$subdir || exit 1; \
    -	  chmod 777 $(distdir)/$$subdir; \
    -	  (cd $$subdir && $(MAKE) $@) || exit 1; \
    -	done
    -	tar chozf $(distdir).tar.gz $(distdir)
    -	rm -fr $(distdir)
    -
    - -
- - - -

`Makefile.in' in `src/'

- -

-Some of the modifications made in the main `Makefile.in' will -also be needed in the `Makefile.in' from your package sources, -which we assume here to be in the `src/' subdirectory. Here are -all the modifications needed in `src/Makefile.in': - -

- -
    -
  1. - -In view of the `dist:' goal, you should have these lines near the -beginning of `src/Makefile.in': - - -
    -PACKAGE = @PACKAGE@
    -VERSION = @VERSION@
    -
    - -
  2. - -If not done already, you should guarantee that top_srcdir -gets defined. This will serve for cpp include files. Just add -the line: - - -
    -top_srcdir = @top_srcdir@
    -
    - -
  3. - -You might also want to define subdir as `src', later -allowing for almost uniform `dist:' goals in all your -`Makefile.in'. At list, the `dist:' goal below assume that -you used: - - -
    -subdir = src
    -
    - -
  4. - -You should ensure that the final linking will use @INTLLIBS@ as -a library. An easy way to achieve this is to manage that it gets into -LIBS, like this: - - -
    -LIBS = @INTLLIBS@ @LIBS@
    -
    - -In most GNU packages one will find a directory `lib/' in which a -library containing some helper functions will be build. (You need at -least the few functions which the GNU gettext Library itself -needs.) However some of the functions in the `lib/' also give -messages to the user which of course should be translated, too. Taking -care of this it is not enough to place the support library (say -`libsupport.a') just between the @INTLLIBS@ and -@LIBS@ in the above example. Instead one has to write this: - - -
    -LIBS = ../lib/libsupport.a @INTLLIBS@ ../lib/libsupport.a @LIBS@
    -
    - -
  5. - -You should also ensure that directory `intl/' will be searched for -C preprocessor include files in all circumstances. So, you have to -manage so both `-I../intl' and `-I$(top_srcdir)/intl' will -be given to the C compiler. - -
  6. - -Your `dist:' goal has to conform with others. Here is a -reasonable definition for it: - - -
    -distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
    -dist: Makefile $(DISTFILES)
    -	for file in $(DISTFILES); do \
    -	  ln $$file $(distdir) 2>/dev/null || cp -p $$file $(distdir); \
    -	done
    -
    - -
- - - -

Concluding Remarks

- -

-We would like to conclude this GNU gettext manual by presenting -an history of the GNU Translation Project so far. We finally give -a few pointers for those who want to do further research or readings -about Native Language Support matters. - -

- - - -

History of GNU gettext

- -

-Internationalization concerns and algorithms have been informally -and casually discussed for years in GNU, sometimes around GNU -libc, maybe around the incoming Hurd, or otherwise -(nobody clearly remembers). And even then, when the work started for -real, this was somewhat independently of these previous discussions. - -

-

-This all began in July 1994, when Patrick D'Cruze had the idea and -initiative of internationalizing version 3.9.2 of GNU fileutils. -He then asked Jim Meyering, the maintainer, how to get those changes -folded into an official release. That first draft was full of -#ifdefs and somewhat disconcerting, and Jim wanted to find -nicer ways. Patrick and Jim shared some tries and experimentations -in this area. Then, feeling that this might eventually have a deeper -impact on GNU, Jim wanted to know what standards were, and contacted -Richard Stallman, who very quickly and verbally described an overall -design for what was meant to become glocale, at that time. - -

-

-Jim implemented glocale and got a lot of exhausting feedback -from Patrick and Richard, of course, but also from Mitchum DSouza -(who wrote a catgets-like package), Roland McGrath, maybe David -MacKenzie, Pinard, and Paul Eggert, all pushing and -pulling in various directions, not always compatible, to the extent -that after a couple of test releases, glocale was torn apart. - -

-

-While Jim took some distance and time and became dad for a second -time, Roland wanted to get GNU libc internationalized, and -got Ulrich Drepper involved in that project. Instead of starting -from glocale, Ulrich rewrote something from scratch, but -more conformant to the set of guidelines who emerged out of the -glocale effort. Then, Ulrich got people from the previous -forum to involve themselves into this new project, and the switch -from glocale to what was first named msgutils, renamed -nlsutils, and later gettext, became officially accepted -by Richard in May 1995 or so. - -

-

-Let's summarize by saying that Ulrich Drepper wrote GNU gettext -in April 1995. The first official release of the package, including -PO mode, occurred in July 1995, and was numbered 0.7. Other people -contributed to the effort by providing a discussion forum around -Ulrich, writing little pieces of code, or testing. These are quoted -in the THANKS file which comes with the GNU gettext -distribution. - -

-

-While this was being done, adapted half a dozen of -GNU packages to glocale first, then later to gettext, -putting them in pretest, so providing along the way an effective -user environment for fine tuning the evolving tools. He also took -the responsibility of organizing and coordinating the GNU Translation -Project. After nearly a year of informal exchanges between people from -many countries, translator teams started to exist in May 1995, through -the creation and support by Patrick D'Cruze of twenty unmoderated -mailing lists for that many native languages, and two moderated -lists: one for reaching all teams at once, the other for reaching -all maintainers of internationalized packages in GNU. - -

-

- also wrote PO mode in June 1995 with the collaboration -of Greg McGary, as a kind of contribution to Ulrich's package. -He also gave a hand with the GNU gettext Texinfo manual. - -

- - -

Related Readings

- -

-Eugene H. Dorr (`dorre@well.com') maintains an interesting -bibliography on internationalization matters, called -Internationalization Reference List, which is available as: - -

-ftp://ftp.ora.com/pub/examples/nutshell/ujip/doc/i18n-books.txt
-
- -

-Michael Gschwind (`mike@vlsivie.tuwien.ac.at') maintains a -Frequently Asked Questions (FAQ) list, entitled Programming for -Internationalisation. This FAQ discusses writing programs which -can handle different language conventions, character sets, etc.; -and is applicable to all character set encodings, with particular -emphasis on ISO 8859-1. It is regularly published in Usenet -groups `comp.unix.questions', `comp.std.internat', -`comp.software.international', `comp.lang.c', -`comp.windows.x', `comp.std.c', `comp.answers' -and `news.answers'. The home location of this document is: - -

-ftp://ftp.vlsivie.tuwien.ac.at/pub/8bit/ISO-programming
-
- -

-Patrick D'Cruze (`pdcruze@li.org') wrote a tutorial about NLS -matters, and Jochen Hein (`Hein@student.tu-clausthal.de') took -over the responsibility of maintaining it. It may be found as: - -

-ftp://sunsite.unc.edu/pub/Linux/utils/nls/catalogs/Incoming/...
-     ...locale-tutorial-0.8.txt.gz
-
- -

-This site is mirrored in: - -

-ftp://ftp.ibp.fr/pub/linux/sunsite/
-
- -

-A French version of the same tutorial should be findable at: - -

-ftp://ftp.ibp.fr/pub/linux/french/docs/
-
- -

-together with French translations of many Linux-related documents. - -

-


-This document was generated on 4 September 1998 using the -texi2html -translator version 1.51.

- - diff --git a/docs/html/gettext/msgfmt.htm b/docs/html/gettext/msgfmt.htm deleted file mode 100644 index 7c4834163a..0000000000 --- a/docs/html/gettext/msgfmt.htm +++ /dev/null @@ -1,222 +0,0 @@ - - - - - -msgfmt(1) manual page - - -Table of Contents

- -

NAME

-msgfmt - create a message object from a message file -

SYNOPSIS -

-msgfmt [ -v ] [ -o output-file ] ... -

DESCRIPTION

-

-msgfmt creates message -object files from portable object files (filename.po ), without changing -the portable object files.

-The .po file contains messages displayed to -users by system commands or by application programs. .po files can be edited, -and the messages in them can be rewritten in any language supported by -the system.

-The xgettext(1) - command can be used to create .po files from -script or programs.

-msgfmt interprets data as characters according to the -current setting of the LC_CTYPE - locale category. -

Portable Object Files -

-

-Formats for all .po files are the same. Each .po file contains one or -more lines, with each line containing either a comment or a statement. -Comments start the line with a hash mark (#) and end with the newline -character. All comments are ignored. The format of a statement is: -

- -
directive -value
-
-
-

-Each directive starts at the beginning of the line and is separated -from value by white space (such as one or more space or tab characters). -value consists of one or more quoted strings separated by white space. -Use any of the following types of directives:

-

domain domainname
-msgid -message_identifier
-msgstr message_string
-

-The behavior of the domain -directive is affected by the options used. See OPTIONS - for the behavior -when the -o option is specified. If the -o option is not specified, the -behavior of the domain directive is as follows:

-
  • All msgids from the beginning -of each .po file to the first domain directive are put into a default -message object file, messages.mo.
  • ·
  • When msgfmt encounters a domain domainname -directive in the .po file, all following msgids until the next domain directive -are put into the message object file
  • ·
  • Duplicate msgids are defined in -the scope of each domain. That is, a msgid is considered a duplicate only -if the identical msgid exists in the same domain.
  • ·
  • All duplicate msgids -are ignored.
  • -
-
-

-The msgid directive specifies the value of a message identifier -associated with the directive that follows it. The message_identifier string -identifies a target string to be used at retrieval time. Each statement -containing a msgid directive must be followed by a statement containing -a msgstr directive.

-The msgstr directive specifies the target string associated -with the message_identifier string declared in the immediately preceding -msgid directive.

-Message strings can contain the escape sequences \n for -newline, \t for tab, \v for vertical tab, \b for backspace, \r for carriage -return, \f for formfeed, \\ for backslash, \" for double quote, \ddd for octal -bit pattern, and \xDD for hexadecimal bit pattern. -

OPTIONS

- -
- -
-v
-
Verbose. - List duplicate message identifiers. Message strings are not redefined. -
- -
-o output-file
-
Specify output file name as output-file. All domain directives -and duplicate msgids in the .po file are ignored.
-
- -

EXAMPLES

-In this example -module1.po and module2.po are portable message objects files.

-

example% -cat module1.po
- # default domain "messages.mo"
- msgid "msg 1"
- msgstr "msg -1 translation"
- #
- domain "help_domain"
- msgid "help 2"
- msgstr "help -2 translation"
- #
- domain "error_domain"
- msgid "error 3"
- msgstr "error -3 translation"
-

- example% cat module2.po
- # default domain "messages.mo" -
- msgid "mesg 4"
- msgstr "mesg 4 translation"
- #
- domain "error_domain" -
- msgid "error 5"
- msgstr "error 5 translation"
- #
- domain "window_domain" -
- msgid "window 6"
- msgstr "window 6 translation"
-

-

-The following command -will produce the output files, messages.mo, help_domain.mo, and error_domain.mo. - -

- -
example% msgfmt module1.po
-
-
-

-The following command will produce the output -files, messages.mo, help_domain.mo, error_domain.mo, and window_domain.mo. - -

- -
example% msgfmt module1.po module2.po
-
-
-

-The following example will produce -the output file hello.mo. -

- -
example% msgfmt -o hello.mo module1.po module2.po -
-
-
-

-Install message object files in /usr/lib/locale/locale/LC_MESSAGES/ -domain.mo -where locale is the message locale as set by setlocale(3C) -, and domain -is text domain as set by textdomain(). The /usr/lib/locale portion can -optionally be changed by calling bindtextdomain(). See gettext(3C) -. -

ENVIRONMENT -

-See environ(5) - for descriptions of the following environmental variables -that affect the execution of msgfmt: LC_CTYPE - , LC_MESSAGES - , NLSPATH - -. -

ATTRIBUTES

-See attributes(5) - for descriptions of the following attributes: -

- - - - -
ATTRIBUTE TYPE ATTRIBUTE VALUE
Availability SUNWloc
CSI - Enabled
- -

SEE ALSO

-xgettext(1) -, gettext(3C) -, setlocale(3C) -, attributes(5) -, -environ(5) - -

NOTES

-

-Neither msgfmt nor any gettext() routine imposes a limit -on the total length of a message. However, each line in the *.po file is -limited to MAX_INPUT - (512) bytes.

-Installing message catalogs under the -C locale is pointless, since they are ignored for the sake of efficiency. -

- -


-Table of Contents

-

- diff --git a/docs/html/gettext/xgettext.htm b/docs/html/gettext/xgettext.htm deleted file mode 100644 index a999626c4c..0000000000 --- a/docs/html/gettext/xgettext.htm +++ /dev/null @@ -1,144 +0,0 @@ - - - - - -xgettext(1) manual page - - -Table of Contents

- -

NAME

-xgettext - extract gettext call strings from C programs -

SYNOPSIS -

-xgettext [ -ns ] [ -a [ -x exclude-file ] ] [ -c comment-tag ] [ -d default-domain -] [ -j ] [ -m prefix ] [ -M suffix ] [ -p pathname ] -| filename ...
-xgettext --h -

DESCRIPTION

-

-xgettext is used to automate the creation of portable -message files (.po). A .po file contains copies of `C' strings that are found -in ANSI C source code in filename or the standard input if `-' is specified -on the command line. The .po file can be used as input to the msgfmt(1) - -utility, which produces a binary form of the message file that can be - used by application during run-time.

-xgettext writes msgid strings from -gettext(3C) - calls in filename to the default output file messages.po. The -default output file name can be changed by -d option. msgid strings in -dgettext() calls are written to the output file where domainname is the -first parameter to the dgettext() call.

-By default, xgettext creates a - .po file in the current working directory, and each entry is in the same -order the strings are extracted from filenames. When the -p option is specified, -the .po file is created in the pathname directory. An existing .po file -is overwritten.

-Duplicate msgids are written to the .po file as comment -lines. When the -s option is specified, the .po is sorted by the msgid -string, and all duplicated msgids are removed. All msgstr directives in -the .po file are empty unless the -m option is used. -

OPTIONS

- -
- -
-n
-
Add comment -lines to the output file indicating file name and line number in the source -file where each extracted string is encountered. These lines appear before -each msgid in the following format:
# # File: filename, line:
-
-line-number - - -
- -
-s
-
Generate output sorted by msgids with all duplicate msgids removed. -
- -
-a
-
Extract all strings, not just those found in gettext(3C) -, and dgettext -() calls. Only one .po file is created.
- -
-c comment-tag
-
The comment block -beginning with comment-tag as the first token of the comment block is -added to the output .po file as # delimited comments. For multiple domains, -xgettext directs comments and messages to the prevailing text domain.
- -
-d -default-domain
-
Rename default output file from messages.po to default-domain -.po.
- -
-j
-
Join messages with existing message files. If a .po file does not -exist, it is created. If a .po file does exist, new messages are appended. - Any duplicate msgids are commented out in the resulting .po file. Domain -directives in the existing .po file are ignored. Results not guaranteed -if the existing message file has been edited.
- -
-m prefix
-
Fill in the msgstr -with prefix. This is useful for debugging purposes. To make msgstr identical -to msgid, use an empty string ("" ) for prefix.
- -
-M suffix
-
Fill in the -msgstr with suffix. This is useful for debugging purposes.
- -
-p pathname -
-
Specify the directory where the output files will be placed. This option -overrides the current working directory.
-
- -
-x exclude-file
-
Specify a .po -file that contains a list of msgids that are not to be extracted from -the input files. The format of exclude-file is identical to the .po file. -However, only the msgid directive line in exclude-file is used. All other -lines are simply ignored. The -x option can only be used with the -a option. -
- -
-h
-
Print a help message on the standard output.
-
- -

ATTRIBUTES

-See attributes(5) - -for descriptions of the following attributes:

- - - -
ATTRIBUTE TYPE ATTRIBUTE -VALUE
Availability SUNWloc
- -

SEE ALSO

-msgfmt(1) -, gettext(3C) -, attributes(5) - - -

NOTES

-xgettext is not able to extract cast strings, for example ANSI -C casts of literal strings to (const char *). This is unnecessary anyway, -since the prototypes in <libintl.h> already specify this type.

- -


-Table of Contents

-

- diff --git a/docs/html/index.htm b/docs/html/index.htm deleted file mode 100644 index 493a111e02..0000000000 --- a/docs/html/index.htm +++ /dev/null @@ -1,182 +0,0 @@ - - - -wxWindows Documentation - - - - - - - - - - - - - -
- - - - -
- -

- -Welcome to wxWindows 2, the premiere cross-platform GUI C++ framework. This is an index of -the plain text and HTML documentation. Documentation is also available in Acrobat (PDF) and Windows Help, -from the wxWindows Web site.

- -

- -[Install] -[Manuals] -[3rd party tools] -[Samples] - -
- -
- -

Installation and release notes

- - - -
- - -

wxWindows manuals

- - - -
- -

Third-party tools

- - - -
- -

Samples

- -
    -
  • bombs: minesweeper-like game. -
  • checklst: demonstrates wxCheckListBox on -supported platforms (currently Windows and GTK only). -
  • config: demonstrates use of wxConfig, which -defaults to wxRegConfig on WIN32, wxIniConfig on WIN16, and wxFileConfig on other platforms. -
  • controls: sample showing a variety of controls, including -wxNotebook. -
  • db: wxDB ODBC sample. -
  • dde: shows the DDE protocol in action, both using real -DDE on Windows, and TCP/IP on all platforms. Edit ddesetup.h -to switch between compilation modes. Currently the TCP/IP mode needs a bit of work. -
  • dialogs: shows some of the common dialogs available -- wxFontDialog, -wxColourDialog, wxFileDialog, wxDirDialog, wxMessageBox, wxTextEntryDialog, wxSingleChoiceDialog. -For printing-related dialogs, see the printing sample. -
  • dnd: demonstrates drag and drop on supported platforms. -
  • docview: demonstrates use of the document view classes, -using wxFrame. -
  • docvwmdi: : demonstrates use of the document view classes, -using wxMDIParentFrame, wxMDIChildFrame. -
  • dynamic: shows how to connect events to member functions -dynamically. -
  • forty: a great little card game by Chris Breeze. A -fully-fledged application! -
  • fractal: fractal mountains by Andrew Davison. -
  • grid: demonstrates the wxGrid class. -
  • help: shows how to use wxHelpController. -
  • image: shows off the cross-platform wxImage class. -
  • internat: use of wxWindows' internationalization support. -
  • joytest: tests the wxJoystick class (currently Windows and GTK only). -
  • layout: shows the constraint layout system in action. -
  • listctrl: demonstrates the wxListCtrl (implemented natively on -WIN32, and using a generic version on other platforms). -
  • mdi: shows off the MDI (Multiple Document Interface) classes. On Windows, the regular MDI -scheme is used whereby child windows have full sizing and moving rights within the main -window. On other platforms, tabbed windows are used, where the children are always maximized. -
  • memcheck: demonstrates the memory checking/debugging facilities. -
  • mfc: shows how to use MFC and wxWindows code in the same application (Windows only). -
  • minifram: demonstrates a frame with a small title bar. On -platforms that don't support it, a normal-sized title bar is displayed. -
  • minimal: just shows a frame, a menubar, and a statusbar. About as -small a wxWindows application as you can get. -
  • nativdlg: shows how wxWindows can load a standard Windows -dialog resource, translating the controls into wxWindows controls (Windows only). -
  • notebook: shows the wxNotebook (tabbed window) control. -
  • oleauto: a little OLE automation controller (Windows only; requires -Excel to be present). -
  • ownerdrw: demonstrates owner-draw menus and controls (Windows only). -
  • png: demonstrates PNG loading. -
  • printing: shows printing and previewing. -
  • proplist: demonstrates the property list classes (a VB-style property editor). -
  • regtest: tests the low-level Windows registry functions (Windows only). -
  • resource: shows how to use wxWindows resources (.wxr files). -
  • sashtest: demonstrates use of the wxSashWindow class to allow -the user to resize subwindows. -
  • splitter: demonstrates the wxSplitterWindow class. -
  • tab: demonstrates the generic tab window class. You should -normally use wxNotebook instead, but the generic code is sometimes useful, for example for -implementing wxNotebook on platforms with no native support. -
  • taskbar: demonstrates the wxTaskBarIcon class, for -adding icons to the system tray. Windows only, but may eventually be implemented for other desktop -environments that use this metaphor. -
  • thread: tests the family of classes for doing thread -programming. -
  • toolbar: demonstrates wxToolBar. -
  • treectrl: demonstrates wxTreeCtrl. -
  • typetest: tests various data type classes, including -wxTime, wxDate and wxVariant. -
  • validate: shows simple use of validation. -
  • wxpoem: a little poetry display program. -
  • wxsocket: demonstrates the TCP/IP family of classes. -
- -
- -
- - - - - diff --git a/docs/html/logo.gif b/docs/html/logo.gif deleted file mode 100644 index 62b41f0f10ff3a7a534eef3dde6ecb99bbcd2fe4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3490 zcmYk74OA0X-p21_GD*mn;VXm)5EHm3%C?h$5VY3tf*7i{L1;uO81Q3bKPMkx zRB+>~tBmVvq++334T_4b?U?|+r5bH?k&Ruqjf$3TyKcI6x7v1{yaKY+-GAPBSBOw+XA?+=H=EXz)YLc!5d+H7V#p1|N>C=duw zPWD=@gKl@1$u!#A>uG54QdE#(n69o~i^XFy4Z2(buXi#S^jfW5Mq_V7!>Gr@xZR=A zQMbVm931R27|aCW*6aN=9S((DBIh0H6Wz1Hi&BL9k{sOVh01&qCP*@DqSF!$SxfPG~c01~hzx81N@E zTp?IL&C8^~f+e6(D9aCZOff(z z$N*qH)C%WN8x%UlKupm_NZ<-whg;yuk&S+sA50NONI)1kLfyY)U|E7?%`8i^te<87 zg9JrGWf6%HLa2j=`@s|vF(oL%0P&y#2n?k|!ieQCDA+B63YEdo;2ZQyq+iAYbBK69 zg+xSbhM7c=V9P0kr_@I>i6B8{e}oyTk08OW&^!N>cT<@}yn}v2@~KRIffPw85<&zX zik{+`@*C#-pD6yzGZi3I6XA>)4~Wz!+^I{D6B#3S0ti^pB1qDEJwAsZHfz7$?SQCGgV>eJJ&_!4v0oNhRRc1soWYR4`b z9qm^RlMW#^zu1n6lNRr_dKr`_Ul@CB5U(xX9;H-P^=d21#8S~Laq^OLCvNSJnbFZ( zTj%NQR!NJ(TMhhe{3P?(m`&$!bK`328w}K?Tf?r{!_Mz&-yai7)E%xYy!2)wZ?;0V zu%gVxOB>9ZvGjvYixhDhe86`EI27n+uhre%q)k?cjr#9Woh2e3-ZkTei-W$zxEaAh z<2{}0KtY@$9H{=JO{~6nt|7W^tw<7mz`?4cuk-9^d*|_&4;w$>Nxt4N+oR$-C;ui{ zY&=ZeDviP<6jdWJ?p|9g*;_E6Lubq!{lXz@&L3`-`hc>nc{OQ6#I9owbD}X!HE`CQ zixS-0LhnfooqQN(^?cf;(UP>zwB)8zzuH853f9kBqO| zq&7%!rDX`qtEcayIyJ84$_MZvREd)gX|9Gmv_fhkXK3@1?(fGcE^S8yNh4deOABWj zd_wIS+_s@|^_F`_c4PoMk{BXUO!9ny;=Q#UOmd~TiNTT$2JqT61u*Jz^8-hu=~ho4 zvb!Rbg^BZ7neD)9K9!Hdd&6MI`gfUz1u8-REwTWtLr$jYndRb`s<0NTe#Jnd3(61J z1pEez4pDo<2wzYiQgu%Vmk$eg29v`quE!^YVxx+~Yg%MtkmAxXCB4yC+K4_`?O{$1 z{r#C?AMOevX6`MS7D?(b=+0$Vfd|NBl#|0t@GuCLc#j%F6W#!JUUpE1qB^g42;o(! zIHEkG7)3MuAw(>@?{Y|Dj#}h_4a&V4(($Iy+|rk7ygr^fSU7}nYM$Xpb5u1i1&$8M zhk4>X1G*2?jCcrZN?vGd)vuM^w#6&PPw9G;VZc!b48Csp2>Z{x_1JF%ByUxDpyyJH zuz#*Jv&a*BN<8l5U@OW4TK{wDsuE#y0*-u^{f?*R@|<}SFJYQ7hO(IZo-*2kdP{)_ zDZPeP!xZ zOK(cYN}9K&EMVuCEnT}(lxA^zhI#A5XZSjmOe@ZAaJLABO!aWP&Z89FJsbC->4nW= zuRdPUXV}P;s8IWkW8u?6G%US7@Q zar?BKYKx64b|I(!U=vo4+LanokmAw`S+VEv;jJ>~bJJ7#FM92=yuF!as9oN%ySuAjgM~rQ-?bw!6sfFLoI7=wOtgHIA1Qmv*_Ei zlvftbFIb64H7X>pS&*5bag$vmlsB=2A0LoNG+|pJS&nwmzVk^lHIlFxlbEW+>pdV< zPx7<%SJReRPRYkS96^`Njt78tpK7t#%^+!ELKKMNUs!i^X<;03bLo!acDf5WP$EmN z>Oot>ze6B-Q!9oWVxsCU3~byZvzOpTA2EyJr>MP5dl3#hZfmRywxzFGdQ;d#~e< z0FSzHPz^79mB%4b$bHx62r zI*-9dfNe#~*O%p#T_~umlRRc7e4xc z(Rc0gUyuXBRIc*UgkgGAhUlQ>=#OK-m*t(ae;k57k*y`>J51Xt=meER`KAuP{|Cny#(2fU>0Zar~43^=c-5hNA%7Y1ZR{hw-*= zjm+|RS*GxEl*B<zm*Br96<$*uNx%I>Cv~Ah5Nq3`nf>-5%gY?+S%G8d~ zr8rkVV*Z(&Hh7KxW`IPuV9 z-yA%>`1l4@?8EztC z7qYdI1)yPj*K9Q3jkhiTJrcjy!=dU{Avjq%^rnV;_R+pw=!KI!uL+IuYK6)Gl5AbQ zjb{KN;SS`FS1BZA^!h+<{i>AT%-7^gn$Bab^{sQZ-e#|4hzzE=H{T#VY3rG9KGx?P z^*%VC;7SyIzoh21592WLr0l>#%c}UvJxC^)TbZZIz)F6|R~cXB+<4Y4NdlhOUagn} zUNKozm@UAuLfjrbK7mGCCY*%(`+F3{NgSd011lVuiu$@BOrmnKWx0c@BNRwa5mk8J zNo@(-v}JZP*3S_zZ|U%QZyqXA zaWNUyrM33(%`-yP{js*mndT?y+?wmD^6vU4$51Il{UfjLX*&waqO%+=acfYVT!w1V z;$UO+GtS~*^1`q5eP@u5e$bzE=0`0r$deTo091T0{)2bhN{dUsOh8Ml$`5@?dp(-y z%>Qr*=^0ka-Fl6;xPG9$y8=xLx92)J&;U&PLOO#agXvrH>aNxz*#^$Xr?XcC5pmr% z>)Vfsb?SK!2{btr8?!MfA+$tam6&WoZ0g2@P}ZFJJ|Wf - - -Welcome to wxWindows 2 - - - - - - - - - - - - - -
- -Welcome to wxWindows 2 - -
- -

- -Welcome to wxWindows 2, the premiere cross-platform GUI C++ framework.

- -Please click on docs/html/index.htm to view the main document index.

- -Have fun!

- - - - - - - diff --git a/docs/latex/porting/back.gif b/docs/latex/porting/back.gif deleted file mode 100644 index 8a61076d3ba74bdedc1d24f60c3d1f5a361a6cee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/docs/latex/porting/books.bmp b/docs/latex/porting/books.bmp deleted file mode 100644 index cf1e148734c807052ec6359ad2eb1a3e8d43d43d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/docs/latex/porting/books.gif b/docs/latex/porting/books.gif deleted file mode 100644 index 036d016fb16b793dd714a3916251f59b7efc654d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 242 zcmZ?wbhEHb)MwCR*vtR|`@wiWnA#8I?caakz=4K_hW|kE{|x`Z6p#k8fI#sl3nK#q zKZ6cPC&&y2mVX~kdamAU@%rrU{|Op>ib=ClxMcXbmpr~@cYwQjllG1B@c#@4*Bxh6 zXgW0aLdB!6GuAT~S-RNt`OVPr@_rW=wo=ji*1082C&e=)?D>Nd&T?mLf1Rh>9rogT zb5=!pc{od3n0ygKU42Pea&8+-0S8NmU4OSQYXiUa%t^xRQ&~D^_RQ&<*e14knp~++ aGOJLpXX!!_Q{5#SmiGi(ui53dZaM&TQeqzf diff --git a/docs/latex/porting/bullet.bmp b/docs/latex/porting/bullet.bmp deleted file mode 100644 index 6481f5143b934b2b2fad561a9b39fb441944418a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/docs/latex/porting/contents.gif b/docs/latex/porting/contents.gif deleted file mode 100644 index 3dddfa3dd5f0c652e8b27cd6c29e1fdd49ced5a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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{9_k^7`NQ&{w!+r zf%KU9zk~h~zZD#X^N5AuKea*5ueKt+`*Q6=#S#sWkN~ N6xIITmGWvyEC7KBF*X1I diff --git a/docs/latex/porting/porting.hpj b/docs/latex/porting/porting.hpj deleted file mode 100644 index 75e76d091b..0000000000 --- a/docs/latex/porting/porting.hpj +++ /dev/null @@ -1,16 +0,0 @@ -[OPTIONS] -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 deleted file mode 100644 index 3c29f69eec..0000000000 --- a/docs/latex/porting/porting.tex +++ /dev/null @@ -1,385 +0,0 @@ -\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. - -wxMetaFile and wxMetaFileDC have been renamed to wxMetafile and wxMetafileDC. - -\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. - -Mostly this defines old names to be the new names (e.g. wxRectangle is defined to be wxRect). - -\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 deleted file mode 100644 index 304529b8e4..0000000000 --- a/docs/latex/porting/tex2rtf.ini +++ /dev/null @@ -1,28 +0,0 @@ -;;; 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 = no -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 deleted file mode 100644 index 81704b0575..0000000000 --- a/docs/latex/porting/texhelp.sty +++ /dev/null @@ -1,289 +0,0 @@ -% 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 deleted file mode 100644 index f9e7031e64..0000000000 --- a/docs/latex/porting/up.gif +++ /dev/null @@ -1 +0,0 @@ -GIF87a \ No newline at end of file diff --git a/docs/latex/proplist/back.gif b/docs/latex/proplist/back.gif deleted file mode 100644 index bfd15ce82c3e3fcf580c35d1a5fc63dc256bb2b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 226 zcmV<803H8FNk%v~VLt#E0Pz3-zrVld=jU&4Z(9HWEC2ui06zd20008IjE||y?GK}z zNf>~$-n{z{YJwGn=81mem9{RpmcUHc_KoNIPRH~B4DyD9p%LJl6@Sa4^Epcbno6kk zD5XxT&EQg7>

ZGT^H8%!L^>t1ZP<-XbXc2wf|8{PDA-=DcINBFvKX|{-KJsnSk%R^8+L44U z$i4ypjl*e0x17_nYJ{TLVo0D{@K#MLDW|A@*mc}m=&yKHEYr5oM3m!9)F6> zWRkara|1;v${y@VNlHBT1(UorWq!$nK2v742gLsKId5fXE%V@^%F%$Wm>CECwzGf~9 z`H|JEA(!tEPv%)p z?sR7>JK=AxFyGXPKi{iEP|B*;YN@Q@s;9DstDedlu6inKxX>S&vIDMqDr>mvsjT6ur?Q5t zp2`}odMazU>Zz>ZYNWD;tC7kYu0|?rxEiUf;cBF^hO3dv8m>kvYq%Pztl?^;vWBaX z${Ma_Dr>l!sjT6`4c(MAqiUwIhO3#%8m?w4Yq*-Jtl?^=vWBaf${Ma_Dr>k9vXQcK zUMrO~T&+~raJ5od!_`V<4Oc6bHC(M!)^H&{DuqQYh5c}~Qdz^*PGt>OJC!wD?Nruq zwNqKc)lOv%S38w8TnNQXStV0Dl{H-LRJP%2r?Q5tlgb*dPAY4-I;pJT>ZG!UtCPwa zu1+dzxH_q<;p(KahO3jx8m><2YPisXOW9RwSb566(-2mkvVOR*@|4|64J%Js#BW%6 z%HrX|%2U>c3oB3ARccsy%C1tw%2O5(7cLW1Si`08I}KsaQ&_`QNo5U}!tXSMWKUrY zm%{HfggsAT4VS|2G=x1*VGWnU?=*ytuoSl8Quv*Qu;-x-_wV2Tu@op4m5&N|WL%4= zNEE)d9sUlAqPiZTb#%{%#{22pEM zw2Cf^u8P`5WwVM=AIKdV&MVwG|%Xx-JRKMY# z=F5|{A3L8fyt|tmvi9(UE_KW0&a*X5eBkfs==i!TGoSV9H@)mZ>!^)9>LedK%ArPv zucd9)|5r!tymykkzRIWB{|=A#vkfbw!@Zg3_k3<`uCUcbqC(^IMd|a4j@mywTi8@( z!xpD)nK~@5gXP6j7u{~^a?zo6pNn=+D`(DvSzFZBv}GN0og8tOZk^8qsG{Oo=@8O8 zw+9NG8P(rN__3|o zGDk*qWWGD1O3@xWnLZpXg`*Ote;{q!^bS1J@41ud!!{O<_Avdq>GAX-H;b8muboUE za=)|@(cY#Xl56|rm)yzp;mWFT zw2$d;%)R~erFJrXXety|wu^MDn5bQo)nZ;*AzvgdX9uv(M|HLnS8x5>li%6 z(bme?mSZkYRLWAOrss{e{&blmw}~Z;P76nHvH#~1%4S_5xvUaX5Q-;_Vr6Dc+Untu$ z>t&UzEA2}tTVW0Pqy4u0%yJ$h(UH-K=15OJ(r}S%^VQ#4;zGUI$=qA!E#NhzMAkF< zqPo$s<}H?9*Sz8Azsx$qnnJ4XA7yN-Ve6K2TxZoiWfLmcsDiZf9INyS=E=X4bPVZp zz?P>5+R}!mt(vu^`J$$_>Qd|5w$9z61H(E)jb680+HQ{QZI6?zD(yX!DLw3ep@cI> z*=YN`K4@z$9Uc8v#50@HLmro~zIIaN+N@M;l9igBj9n!?j(4QAGTd4&UT50$=wScX zj2hMTq_Ol+Dhlpo&$gszdQ?tLS-)XX=bQ|W!OUHRYM z;ai?G7}n{bD#g-0)G;h2pWhSQHhjbH!&{g0|9m;m6o1tPVd?hmo!pUM2#cb!`TY`T z0lx;jTNE|-)E5aIl`Q5L1&c?~H+w|UBYXLU@qPRKUtjmgjh$7chG?h?jVoS9p!V z4B<`Q;(f+4jk)~DYQn>z(C8FpT`_QM1b(FPChu^+O zc$BgVzu1v}9rIYPb))E~deY=1zmTk9RH2byRc~r}=R{Gx3;oh|%P5+EnRQ%kJFbhO zTRKJ2DbirV&9!147=9!lFl?OL{YkfcXMMqB>9>2n`dav8^%d6oR|H7}ngROlJmPFpDpl%^bdF9`mt#(RbLzXaNiPiJ!5{(Gr#s z9!k3$NuU+um&jSeS|o|5n?+f_NU+iCuWaTwvI?x@AUsAngK)eT-b-GV^TZ^T)##IK z|5=WM%Ps4A`**kP>FfBGPwz{N{&upg9SG^y-|VmRE+6m_%c5`io<%IB z0(Gz|wQ!{Vi`0PD!2>*vRb{1nSVq{#uz%q=-k$>r5AZyb#u<FSo;>_ZJ|b2^uCC0*&q za|~l9U-A>V^2;j@;8>35Y_6pfJsHT$jAcIGlTpC0{c-@u(46zRiAQ*xH<-*+z9*CP zg7%YI97$6;a4q-p0)zN~FPXzSitnaA;|NaW3|eys-RQ?~K4b>VSw%i|?m-;F(VR;Q zuBI3F^CF`e$9#SzlahrU2h`y#uAw8{d7goM$ZY14R>bi`S*mgdjcH3)?&c}pV>qAj zGfT-|R9T@s^|^>k>B3X=<87ugoyFwcU0Gp&j-f6Wa1*!k0IxEbF?_>!Y+|osTh6W3 zy*8pLm(ZCm^yXz=V>q*z%~J9gcg09)YI78)(w57)nMdi%%Zz6t^ZAub_H-VsN)1k< z9aqqqzC6WXKH)RwvVmXOYY+7iH93{GT+S^##uGfxD8}#^KeLpyJ>?N)smy7dNpm`J zBVFmoa}4EkX0m`Zb$2d89bSQo)TSBda0U0!gXbB=7-qAU4HVwnyj0{kT5uuP(whf) zo2g7^3HkQX!lV$P4OhHSiOk{$cg%cb)W84#n*#rg!8u$&@%>9= zKGLQ5e&K&r=<>SW(<)wG*8l11e$9c%snzwDa=YDd-Duwxs!-QJ{?kh9(xppi#}!qF zr!Q~dt+G+R<<5^;GlnasB2mWj%EpUCxt5pDdO!d2uz>CV(xU=d^M!e|3&ITP%fl}w z6y3VOuvOtYFD!7B&HB>|G*4Jyn0}Pk=hC;VDC_FbnYCqF!R6h&--Yz(j_9c>eoH;; z|E^j8cgy;}M--+%Ijzdl%*+O9Gg`QENUOUhGqYjZna+5prZw7}nR!~)@EvKH(q&{? zQCt3bNWN%#*8elI{-2rk|8e$9uV%*H%l&R+Mo7!sGfs+bH*L|-pxXMkd)BZV@>gi< z`{_IEN7l9PcKhL4BI$mF=}%7k^3Jdy>lbBao|5*{h_D~;X)T*Mcq?(MeaJPdc=@M@GC!a5Qx`bQi$>&R+F5!lA^7)ddOSoN| zY`$-obO}!52~R>v zK40>53C|HpK40>52~XijK40>53D2-dHeYzeMDov)r%QN1L-P5Or%QOeLGt;Mr%QM^ zK=S#Lr%U*1eX{w&H{X+gmONd;_r{aYmpom|jo;++B~O>| zec5F5g|D+F|15dBgfD|8pD%g3gs)O2pD%g3gfAi{pD%g3gs<@>n=gb#m+)D#bP1m&OPBCjvUCZbB}5{y? z8)}K<$4dzAOSbRH+q+vrorP0#2CH#W8EbgXIkqt9+o} z3p+S1s_XY|FQKAd+VB_tcL|==8|9Kbs}CpiO1T^leMBNDLUc%o9|&<+;krDl`#`@! z=r_#;aAqq-bVJ?e7;Cvp;@ zH?IMw(2!F(4To=5FQ3C#ESF=ICN!lPXK^;?a4yX`4~KVjKA~suLN4NBF5yyI(u&r! zp)KvWjLW%#D`}5nB7VeOBCg?DuA?KJxSktOEW{$Y<3ULoQI0CSB14Aru}r8h@h_3k zCrI4c5_OIQY$fsDKTumHomis?`z}VWE?ZQ+m;^EpNYNQ z4ez6_c*I@hM~y$G4EJ+K?m1~bKwa~KJ7zCQ^Vb~PgKhhp?p(bkU*C3@^d0*+)SZrZ zt@nM)R<@rWB~QlauT-`NkF&1v(&S_H)I{s}-23y~v0LC+TI?>(66w5Bx~_ExeVzQ? zL@rdWH}kBrJxk`Ecp6sA+&@o_j6sXUjPp33OKHVbgmcC)Ch-|_`JN)B)D86I zS$<$4AyVdH9@^I{t69t0j?Hrk=b!NuP*Lp5QPksRZlgc1^DT>6!YaZ!>v)=QHs^3D zC#YObr4LU~NJVovGnhj-&t1gTbfgovb2q(tl&5)t*BH(ie&QFNIMgvi`3mYK>Z!QS zB%C{|QiFOleR+|AyvhfRVL9tLySloRc3jC-TuVo8qAT~(gZp@$H(10HekGh7 z(#buHv- ze8fa1*K^#G;rx}C&`vE)MXFGh+O(iGp$&U4Pw)&c^BV8)9;2AROupnwjfoB{K2bVS z=_JeK$Og8L<2acHoXNSg<`(YcZh8>f&Exoj+05Z5+B9^IC$ydUDpVNX?^x+voyL}{6nZZov^CQct?Yw_Hp>5xtzC6X# zyv{p}U=H6C+W)(A0OdG@s?^~)PNyl$SWT@)&OhAC!-VUG(7q^31v+pCFYzwnnj*A4 zW;35vY-0B&${CfYK_i;co*U@TKt5v*C7UXToJn(@WFWKnmh#Q)J6-6_XMDlWEGN%d zjxCO*0X=w_5lrJZLW8jc6*!0Hbf7DfnMJ8{q!Cwe8zcCX^`xCE9XOO4)Z;R)kS zC=>XNg3Yz1xPa$)l@)BJ@_Cj)5ANsk7Sfz>eHPkrlbFn}WSp=3)0{i$!JE9#_bg_g z3$*b$nKQYSZVcvK7O<4PFSHMwMl){XZiet4Kd^+oFESmc(v;5J#k-7TDQhTuvAp42 zE~Xa`Gnz@PWFr+Waoo|8D|np#e98=dBhRI#;Yixki2=OASA0u}mg)~q;tXz~E3fbt zb6G&qR`!9DID;;9XBZ#x6U#ZcwQ|UXw4o1AGMSlVlDCa*q8?Xp9sL=^G`=ElTWv3D zQl)5x~M8g(v?RDeIVglX%^q{JG^AYDdPT?F{aUC!67Q>i8=tKU7<*a56(WCN;&V>Hu$<%wyaZKoIp1_xU&0KzB zIqTTKX7W7lc%cBr*@M#TOF61@6g_#EVSL1wd_(Ui^CQx^Fr6P+&#!DIUw>tiZ)xzX^2JLGVFc4C z{haGls!*GU7(nQof1gkIjGtIc?E#KoLcjf4wBd4wF^Nz4nt3c^6&cSf|CFLR?a1|l zw5A|sIh5n5Ph-yF62iTK&h+LX`tU5ju$Ja8DnmTQ+kC~>{JTB^A5v!pK*N3mn>u@r@!o2=Q|d0(W|zV2YG}UEFj#|IG4+~lJ;EB zFh&vXcVx21VAoz8N)@V6lUmfJ0nKQ`RTLj0?|6ond6VIUdnajcs(aXzz1WYp8O>Pc z@(pX)K+(4>j{~VrZR${$8GOeNY$lUE-qy~eGT|OgeVTDD&AFJ>q`xDdDZ_r$pbm{_ zN=w51ot`{Jf1YI!b%&~xX~bn*!5!SiQ}kmn;oi`f{K9&|eWKMAc+bAGFXbrDVH{3v zj^a4Z=0Y-tIVTeCF->6sE7?HWaG#ThycA_`4x%Q<@;ysv@quzm2W}+XuNuQw{Kzsk z@++ByudNlN3dhiiE-YgcMMp|&8gdT3MyaEDmBB1zDOEp`woDkU{^K*gV=*gONxm`C zgi6%r1Wus^S8_Gia5J}X8@JPqhj@%n_?)bJZ)2S&c!!~UO5t&i53Zy${dtWK8O=8= zWZ&`fgNtcHM{ed;x)JW_g}(nE_=!cVVm0e1Izhd`>kMVzkL5GrKH%{*;cPCYHMh~5 z(i7zyy?B^#&+t{oF_EdvU?%hUi6s=Aqz+>&pYR#;`RWt-%3+_%15V})+R%|tn8PWP zZ4XnKNA=GfgG}N}x=&Ge@BtIKe5yR)cJ3!_n&Xq**`GtG&c{q=HEEyAU-qXl=hBhe zd5Iys!wABC(r;MKYSxf3UAdtcWhu|mGnH>{q6_(FDa$ne((>6v`d8W))MOH0vCnMt zb10Shn6H@2QcBEmEkG#_;3Y=zA>&xa8a9#fwR(VaXwIdy;tFn|2M_ZKuQP?)=W09B zodLFOj-ehWa54=zoo1ZFg69ayeIVJ-2f=&+q~-F_e*vXA(15 z!dgnL)b~e-)wqT`xtn`)&DoW2wGIp7S1)IeD%0Cd7eU z&pq^{7f&*PR~W`egjkVH?6%%<#T8u3l^b1`Fqn53$|R<;Z@$EW?EWw3^#E*U3i$Md5d=$%h#-8 zGlku&FUnp#PCrUzq(ujD7)Ko@Hpf@WgIRpZLYA|6t4yy&tEWY~Z&l1|ahh`;hl;PM zK!~%+u+^pi0i`T6_D?MT-(~(Y`Sx$R{+q7<9s~a#1OFZa{~iPX9s~a#1OFZa{~iPX z9s~a#1OFZaIe!d2~!6x&}vBp1?(L4=t2 zxqL&2g|AMCfp1BPL-aq>iJJ*A?@bA@?p=su+UFR~I8+}laZG!)3ikOh^N{y&eL}>s z?ID)E4co`8&#tJChY*{-8zm`CTiO$1&L^^nrG%LC$%L5mw!Fm$gxK;*gxK=7#IfX$ zRCBM05F>sbw{r&}2K-Gz4ER!xs-bU;5bJ#h&oYn@^F5Ui>%ERR#yiAzpG}DAzK1xL zdr2MlF*x{0Y0J?ZOB|cs&Tt2M^DrSsdms~;Oo-7g!!aCBh|TU!h|L~Mh|OM4h|S)Q z5S!hc5S!hV5S#r2AtrkdwvWBO_gH;=jAa6gSVD-g&db3ZN{FrQ#&f*LdVXb}y4FiO zuBFTIiLujD>gf+B#7vhU#7fs8#7K9gAJ6j*3kb2$H<3y86CF=1;>ZTljV3hXO@# zta6A+&P9ktu0|Y#9O92R1&!ESg>8-X9@$ax)#TwT*|mAjCknCysFpv5oH&$2P_>iOFIS3*9W= zn0K2zr(_rR7P)|nn8UaHO8OnPjglNrRj%h29^+}^*u&Qhzrkdtv4XXnaHo4x+(Ktc zb`?XxF&sx6GZ@DR#<78MEMOc17{~r?AM+Q-_{Fh(aV%f1yW~G{?B4b9s|ajadNyAxyV;+VQPmM)H+i(}^E*tqRu;^G*%IQA`$b&F%%;#juqF>DjNI|j)f z!xm!HY7%18u4C1G@~QWh*tD~}hM2VX2(f6339)D$`2L|SF=(s2t|5*=>)l8BC3`H| zG~=sSM~Fe2N{Br>fe>5vIU%Mj?NQ~O{RuH;~OxX4@U~$Y>KhwQHi20gLi1o_f-|@{{LTuMq z4t!31$794XU4sqBFvXQ*T1GLNi=THdl%L5Yj@7F4g5#P7gcz;!h-0+c8xFBq z&oSUd+s9&-a{eG~A%0*XC%%*zdv&YvIQHr>!y)EsJaMd5o|i3y&E$PW9KoxO9S(g> zJB<)ybvl<3VyqUut`4Q>U}c%2oiUxfsZTWzu#4$$uk93^Sn5Og^B`k5QX@mIA$os3Uw#M2u z1Y?O~fI|GwWcL2Val=qXF`w^f|EYS3&zV7^$=X!R;wz?ortC6iigPB{OjX~JZ<;m; z$zpnL`dpii0SqF0EYB3tr!+vw+9W^f{Fv5pW^ z(S{I95#lJ~*ohD$aV#VGh>W%BAwrBqYeH;{E6JjG)vHN;ufH)T7%Z=(@ zR+2piqV^`|4MGe=L)y`SIQAiqd04f1ON>Jt+i>=8TVfgF7={mxhggLWqcDpQn~*1S zTTDV6bMTy)f)H!)0oh{>(!~{oScCA~kK+k31_u+K0dgMUIUpMd&jNXzPnphoqTE}a z4>Hno1ZMChKeLhluf02gkD@x@IR3KP4IwIoQx1XU5CURIP-sAooIrpi5F!x-!jfzt zl4N0%C@57F4~kMy4lhb*>w!f91uGS51GZ{yt)NnmR!gh2^{Ay5i%2E?{bzPDgrp7H zPqiOr^7-b?{bt_G&d!^C^Il7uZfJ$0&8hPPszbz0Jp&!l6RJ;S8LIIRRJTYAsD6=c zP#q)Vpn68$hUyx*26tc$RPV^gIER)KS|JA$(TVyBxTtOg_o5oA z&*dVF!4%9#CDM9wY@xbd9>#9Gh}>QgW-?U&%lkNnS`6&Xe&P{4ihbCRgLoH%<08y3 z^z29aq8O!Eg}bpC+wlVS;Y}Pwj|zYi_fI7EA8g_uiUrrncqDe-Y-%0n3uF_0-HedAx?m zTc@?jU%zM1@`k2$oqlX?W7BxzW7U~Ta8h?xEagUMC08x;wtI$_ocFq-a>nw!1%Wuj zgM~v{)FfN~Pb@k|gV9>lZq(PsU_5ivH85v~I&%(+HiM(hh<>yr+m@DOc}fprie%Bg z#`|AcM-=N)LTPitof0S9uTY8H(D047J#KA7c={`$VI8o#^D}r-x03n1>_uZ~aB6C4 z@dMUUYB-rL+4_GXl7`dRj?{f(E*{s?PX(Ut2v@YJO&*_dSyoE!IB$Mtc7ASVUPi9> z;)Dbg06+)eY)=M`~!eu>ULM76c8 zL+fZoi6{FO+sn;bsddw?bK3qotg_Crrp)6$u^xUjV~sl3W{1|NHTyX8icags`Ah8N zsf!-xi@|MO%}$=C#5{0Q^+!i@=EQEgJ=$E*XWQ$fy4lVIC6T7z1tr@C=*->)H(rAW zhoG-B&8*KkKd0!M#PG9#Rd@O@Lal2IVGN;;;8}$82+t;5M0gJ2Qogk>elJ#%xyct{jJr!Z~$1MM3cfEe4 zy|ziAE=LM=NmA%^P6{|F;G}?)0!|7zDd41llLAf(I4R(yfRh4F3Md5{%l|8%>e~Op z{&n%4V^`ft{=fgx&FPHu)EhUGjHmMR$~!9$IuFXDFMyr}=ox|X&l{j;0UOZ@TX8OS zKzaTeC{O3<)!s3LF+yMJrg*Nx_N!glj|?5sPqNBndLkUF85WI1j@;d`|SMh zOD-$aLpkM#uZKcCGE$h>F4~Hp-bTZ&Y?$_~;pYlxGgVup9KH51ucWfnZ>?L)X#d0c za4-EDHyB!CL}*z3dj3%`Av3*T^re~UC-yLfvDvtW_S**W@F)>OcxaSJTW=X=lu?V6 z7c!*r3G}7X)|*<1y^#6!r0p&-P|5P4T`E}*hm5bHy+WM`&Ig~e59$oow<;C?|yz=$rU2dH>PCv?Vn=mO=GyTOa@=z*T-h4axHeGrGf=!XlyPut{dRalR@29SV6 z48%pa7?iuQ^4H%WOu`Th#U&Vq;ZVMNB$A;Vb}G`K=NlOqh0z#;OpL`ij7JufBhSGE zOhhgwArF^gGE{!=GEBi#T#jj&ju|MxO!zPhg(!j_#h8sbD8Ut&i&B)K90AP3d<0Q} zN>t%WT!jT#h^ui87D4&{YjGVG<9ghHCAbkc;bz=|rT7+>;a1#+<@h#MU?pzH9ax3c zScA2=6L;Zm+=F|u4&T9gRAU3ai|^t4xDWT^0X&F}cnCkhCOnKsuo+vh6_4UEY{Pau zjvwL)?7)xkBz9sKevGH^6VzZg_TXv!6hFf=coxs$=Xf5!z%TIveuWpY7yIxMUdAif zk6+_eyoT5D27ZIz;!V7T-{Am$k3ZmTyn}=IBmRUx<6XRm_wfP#f)DXm9Kzr55&n+D z_!$4d5qyH9_!P(RPke^ssD&OzQTWkNh|xsC4G*HgE7T?$ygtn{!rEG1jke0~@anVS zb!S6yUK0ymQ8v7uY}%kLc&*s*+ORnnyf$n)g4c!(uLfJs33(OR@EWk;RbS%;uk4y0 z=!st7)my{swWbf^ptyN$*6_+KWiz;TVCDNJa`$k%n|+U=&6}<&rW%abhzLm404gUnA3wTPATwDE3S@e{7TJY`3>Uj6Z z?oOGZff0RK;MpbignUw81prkru#l^_iq7gdG_~u*{zoyh2ik(BE?3>!K29FKxfH94 zHR{-B5__?=O&X&&kpkBDO=Ihg`vU1dR|yttuhDbLo}b?KBoV)xRfUqjN&8<>Cw^)M zU=PdqF3sV4_=?7Mv(fRbiC-z%EVK=c&RB0kI3_z*KgYh3`w4v(OY6<~?+4p+_J#Mo zvEv{9+=ausYt%JC*9LLAGcN`7QE-m^nRnd7dmO>hkBqUepY^}HJ8*8)E1#SmD6A^; mmseVO!mLRuv&<;#Vy^!9@bvg3b9l&O^Xpz|oc^z43j7PU4M+0; diff --git a/docs/wxQt.html b/docs/wxQt.html deleted file mode 100644 index 87f7013694..0000000000 --- a/docs/wxQt.html +++ /dev/null @@ -1,70 +0,0 @@ - $Id$ -
-

Proposal for a port of wxWindows to Qt - wxQt

-

- Following the recent discussions - and flamewars about KDE vs Gnome, we got worried that we'll see a - repetition of the same damaging infighting from which Unix has - suffered before. Competition is a good thing, but the current - situation leaves application developers with a difficult decision to - make: Write for KDE, using qt/harmony or write for Gnome, using GTK? - Whatever happens to these projects, we will end up with a lot of - duplicated efforts and a mix of applications written for either of the - two environments. The result will not be the consistent look and feel - that both projects aim for. -

- - The people on the wxWindows developers team thought that we might have - a solution for this problem, if we can get some outside help to get it - done. Let us explain: wxWindows is a cross-platform development - toolkit, a library of C++ classes which provide GUI concepts as well - as other cross-platform issues such as container classes, debug - features or configuration management. It has been around since 1992 - and started by supporting Motif, XView and MS-Windows, with a direct - X11/Xt port added later. Last year, a major rewrite was started and we - now have a much advanced library, available for MS Windows, with a - Motif port under construction. Later last year, Robert Roebling set - out on a one-man project to build wxGTK, a gtk-based implementation of - wxWindows which in less than a year has become sufficiently stable to - use it as the main development platform of rather large - applications. The wxWindows license is a variant of the LGPL, - which should meet no objections from the free software community. In - fact, this has been an open source project long before the term became - commonly used. -

- - Our idea is, that if this is good enough to work across different - operating systems (a MacOS port is under construction, too), it could - easily bridge the gap between KDE and Gnome. The quick evolution of - wxGTK has shown that a new port based on an existing widget set or - toolkit can easily be created by a small team within a few - months. Therefore, we would like to start a project for a Qt/Harmony - based wxWindow library, wxQt. It would then be possible for - application developers to write the same source and compile it either - for KDE, Gnome or even any of the other supported systems. -

- - But for this we need help. The core developers are all pretty busy on - the existing ports, but we could provide significant help and support - for any such effort. A wxQt port could also recycle lots of existing - code from the other ports. - - Please, join us in this effort and, if you feel that you could - contribute, join the wxWindows developers mailing list for further - discussions. Just send a mail containing "subscribe" to - wxwin-developers-request@wx.dent.med.uni-muenchen.de -

- You can find some more information about wxWindows at the following places: -

-

-


- Karsten Ballueder Ballueder@usa.net http://Ballueder.home.ml.org/ diff --git a/include/install-sh b/include/install-sh deleted file mode 100755 index ebc66913e9..0000000000 --- a/include/install-sh +++ /dev/null @@ -1,250 +0,0 @@ -#! /bin/sh -# -# install - install a program, script, or datafile -# This comes from X11R5 (mit/util/scripts/install.sh). -# -# Copyright 1991 by the Massachusetts Institute of Technology -# -# 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. -# -# Calling this script install-sh is preferred over install.sh, to prevent -# `make' implicit rules from creating a file called install from it -# when there is no Makefile. -# -# This script is compatible with the BSD install script, but was written -# from scratch. It can only install one file at a time, a restriction -# shared with many OS's install programs. - - -# set DOITPROG to echo to test this script - -# Don't use :- since 4.3BSD and earlier shells don't like it. -doit="${DOITPROG-}" - - -# put in absolute paths if you don't have them in your path; or use env. vars. - -mvprog="${MVPROG-mv}" -cpprog="${CPPROG-cp}" -chmodprog="${CHMODPROG-chmod}" -chownprog="${CHOWNPROG-chown}" -chgrpprog="${CHGRPPROG-chgrp}" -stripprog="${STRIPPROG-strip}" -rmprog="${RMPROG-rm}" -mkdirprog="${MKDIRPROG-mkdir}" - -transformbasename="" -transform_arg="" -instcmd="$mvprog" -chmodcmd="$chmodprog 0755" -chowncmd="" -chgrpcmd="" -stripcmd="" -rmcmd="$rmprog -f" -mvcmd="$mvprog" -src="" -dst="" -dir_arg="" - -while [ x"$1" != x ]; do - case $1 in - -c) instcmd="$cpprog" - shift - continue;; - - -d) dir_arg=true - shift - continue;; - - -m) chmodcmd="$chmodprog $2" - shift - shift - continue;; - - -o) chowncmd="$chownprog $2" - shift - shift - continue;; - - -g) chgrpcmd="$chgrpprog $2" - shift - shift - continue;; - - -s) stripcmd="$stripprog" - shift - continue;; - - -t=*) transformarg=`echo $1 | sed 's/-t=//'` - shift - continue;; - - -b=*) transformbasename=`echo $1 | sed 's/-b=//'` - shift - continue;; - - *) if [ x"$src" = x ] - then - src=$1 - else - # this colon is to work around a 386BSD /bin/sh bug - : - dst=$1 - fi - shift - continue;; - esac -done - -if [ x"$src" = x ] -then - echo "install: no input file specified" - exit 1 -else - true -fi - -if [ x"$dir_arg" != x ]; then - dst=$src - src="" - - if [ -d $dst ]; then - instcmd=: - else - instcmd=mkdir - fi -else - -# Waiting for this to be detected by the "$instcmd $src $dsttmp" command -# might cause directories to be created, which would be especially bad -# if $src (and thus $dsttmp) contains '*'. - - if [ -f $src -o -d $src ] - then - true - else - echo "install: $src does not exist" - exit 1 - fi - - if [ x"$dst" = x ] - then - echo "install: no destination specified" - exit 1 - else - true - fi - -# If destination is a directory, append the input filename; if your system -# does not like double slashes in filenames, you may need to add some logic - - if [ -d $dst ] - then - dst="$dst"/`basename $src` - else - true - fi -fi - -## this sed command emulates the dirname command -dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` - -# Make sure that the destination directory exists. -# this part is taken from Noah Friedman's mkinstalldirs script - -# Skip lots of stat calls in the usual case. -if [ ! -d "$dstdir" ]; then -defaultIFS=' -' -IFS="${IFS-${defaultIFS}}" - -oIFS="${IFS}" -# Some sh's can't handle IFS=/ for some reason. -IFS='%' -set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` -IFS="${oIFS}" - -pathcomp='' - -while [ $# -ne 0 ] ; do - pathcomp="${pathcomp}${1}" - shift - - if [ ! -d "${pathcomp}" ] ; - then - $mkdirprog "${pathcomp}" - else - true - fi - - pathcomp="${pathcomp}/" -done -fi - -if [ x"$dir_arg" != x ] -then - $doit $instcmd $dst && - - if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && - if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi -else - -# If we're going to rename the final executable, determine the name now. - - if [ x"$transformarg" = x ] - then - dstfile=`basename $dst` - else - dstfile=`basename $dst $transformbasename | - sed $transformarg`$transformbasename - fi - -# don't allow the sed command to completely eliminate the filename - - if [ x"$dstfile" = x ] - then - dstfile=`basename $dst` - else - true - fi - -# Make a temp file name in the proper directory. - - dsttmp=$dstdir/#inst.$$# - -# Move or copy the file name to the temp name - - $doit $instcmd $src $dsttmp && - - trap "rm -f ${dsttmp}" 0 && - -# and set any options; do chmod last to preserve setuid bits - -# If any of these fail, we abort the whole thing. If we want to -# ignore errors from any of these, just make sure not to ignore -# errors from the above "$doit $instcmd $src $dsttmp" command. - - if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && - if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && - -# Now rename the file to the real destination. - - $doit $rmcmd -f $dstdir/$dstfile && - $doit $mvcmd $dsttmp $dstdir/$dstfile - -fi && - - -exit 0 diff --git a/include/wx/accel.h b/include/wx/accel.h deleted file mode 100644 index a36d4a0a44..0000000000 --- a/include/wx/accel.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef _WX_ACCEL_H_BASE_ -#define _WX_ACCEL_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/accel.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/accel.h" -#elif defined(__WXGTK__) -#include "wx/gtk/accel.h" -#elif defined(__WXQT__) -#include "wx/qt/accel.h" -#elif defined(__WXMAC__) -#include "wx/mac/accel.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/accel.h" -#endif - -#endif - // _WX_ACCEL_H_BASE_ diff --git a/include/wx/app.h b/include/wx/app.h deleted file mode 100644 index d454acf6fa..0000000000 --- a/include/wx/app.h +++ /dev/null @@ -1,78 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: app.h -// Purpose: wxApp inclusion -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_APP_H_BASE_ -#define _WX_APP_H_BASE_ - -#ifdef __WXMSW__ -class WXDLLEXPORT wxApp; -typedef wxApp* (*wxAppInitializerFunction) (void); -#endif - -#include "wx/object.h" - -#ifndef __WXMSW__ -typedef wxObject* (*wxAppInitializerFunction) (void); // returning wxApp* won't work with gcc -#endif - -#if defined(__WXMSW__) -#include "wx/msw/app.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/app.h" -#elif defined(__WXQT__) -#include "wx/qt/app.h" -#elif defined(__WXGTK__) -#include "wx/gtk/app.h" -#elif defined(__WXMAC__) -#include "wx/mac/app.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/app.h" -#endif - -// Having a global instance of this class allows -// wxApp to be aware of the app creator function. -// wxApp can then call this function to create a new -// app object. Convoluted, but necessary. - -class WXDLLEXPORT wxAppInitializer -{ -public: - wxAppInitializer(wxAppInitializerFunction fn) - { - wxApp::SetInitializerFunction(fn); - } -}; - -// Here's a macro you can use if your compiler -// really, really wants main() to be in your main program -// (e.g. hello.cpp). -// Now IMPLEMENT_APP should add this code if required. - -#if defined(__AIX__) || defined(__HPUX__) -#define IMPLEMENT_WXWIN_MAIN \ -extern int wxEntry( int argc, char *argv[] ); \ -int main(int argc, char *argv[]) { return wxEntry(argc, argv); } -#else -#define IMPLEMENT_WXWIN_MAIN -#endif - -#define IMPLEMENT_APP(appname) \ - wxApp *wxCreateApp(void) { return new appname; } \ - wxAppInitializer wxTheAppInitializer((wxAppInitializerFunction) wxCreateApp); \ - appname& wxGetApp(void) { return *(appname *)wxTheApp; } \ - IMPLEMENT_WXWIN_MAIN - -#define DECLARE_APP(appname) \ - extern appname& wxGetApp(void) ; - - -#endif - // _WX_APP_H_BASE_ diff --git a/include/wx/arrimpl.cpp b/include/wx/arrimpl.cpp deleted file mode 100644 index 5131c7ac44..0000000000 --- a/include/wx/arrimpl.cpp +++ /dev/null @@ -1,108 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: listimpl.cpp -// Purpose: helper file for implementation of dynamic lists -// Author: Vadim Zeitlin -// Modified by: -// Created: 16.10.97 -// RCS-ID: $Id$ -// Copyright: (c) 1997 Vadim Zeitlin -// Licence: wxWindows license -/////////////////////////////////////////////////////////////////////////////// - -/***************************************************************************** - * Purpose: implements methods of "template" class declared in * - * DECLARE_OBJARRAY macro and which couldn't be implemented inline * - * (because they need the full definition of type T in scope) * - * * - * Usage: 1) #include dynarray.h * - * 2) WX_DECLARE_OBJARRAY * - * 3) #include arrimpl.cpp * - * 4) WX_DEFINE_OBJARRAY * - *****************************************************************************/ - -// macro implements remaining (not inline) methods of template list -// (it's private to this file) -#undef _DEFINE_OBJARRAY -#define _DEFINE_OBJARRAY(T, name) \ -name::~name() \ -{ \ - Empty(); \ -} \ - \ -void name::DoCopy(const name& src) \ -{ \ - for ( size_t ui = 0; ui < src.Count(); ui++ ) \ - Add(src[ui]); \ -} \ - \ -name& name::operator=(const name& src) \ -{ \ - Empty(); \ - DoCopy(src); \ - \ - return *this; \ -} \ - \ -name::name(const name& src) \ -{ \ - DoCopy(src); \ -} \ - \ -void name::Empty() \ -{ \ - for ( size_t ui = 0; ui < Count(); ui++ ) \ - delete (T*)wxBaseArray::Item(ui); \ - \ - wxBaseArray::Clear(); \ -} \ - \ -void name::Remove(size_t uiIndex) \ -{ \ - wxCHECK_RET( uiIndex < Count(), "bad index in " #name "::Remove()" ); \ - \ - delete (T*)wxBaseArray::Item(uiIndex); \ - \ - wxBaseArray::Remove(uiIndex); \ -} \ - \ -void name::Add(const T& item) \ -{ \ - T* pItem = new T(item); \ - if ( pItem != NULL ) \ - Add(pItem); \ -} \ - \ -void name::Insert(const T& item, size_t uiIndex) \ -{ \ - T* pItem = new T(item); \ - if ( pItem != NULL ) \ - Insert(pItem, uiIndex); \ -} \ - \ -int name::Index(const T& Item, bool bFromEnd) const \ -{ \ - if ( bFromEnd ) { \ - if ( Count() > 0 ) { \ - size_t ui = Count() - 1; \ - do { \ - if ( (T*)wxBaseArray::Item(ui) == &Item ) \ - return ui; \ - ui--; \ - } \ - while ( ui != 0 ); \ - } \ - } \ - else { \ - for( size_t ui = 0; ui < Count(); ui++ ) { \ - if( (T*)wxBaseArray::Item(ui) == &Item ) \ - return ui; \ - } \ - } \ - \ - return wxNOT_FOUND; \ -} - -// redefine the macro so that now it will generate the class implementation -// old value would provoke a compile-time error if this file is not included -#undef WX_DEFINE_OBJARRAY -#define WX_DEFINE_OBJARRAY(name) _DEFINE_OBJARRAY(_L##name, name) diff --git a/include/wx/bitmap.h b/include/wx/bitmap.h deleted file mode 100644 index f031e7041a..0000000000 --- a/include/wx/bitmap.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef _WX_BITMAP_H_BASE_ -#define _WX_BITMAP_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/bitmap.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/bitmap.h" -#elif defined(__WXGTK__) -#include "wx/gtk/bitmap.h" -#elif defined(__WXQT__) -#include "wx/qt/bitmap.h" -#elif defined(__WXMAC__) -#include "wx/mac/bitmap.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/bitmap.h" -#endif - -#endif - // _WX_BITMAP_H_BASE_ diff --git a/include/wx/bmpbuttn.h b/include/wx/bmpbuttn.h deleted file mode 100644 index 2ff65ebbb2..0000000000 --- a/include/wx/bmpbuttn.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef _WX_BMPBUTTON_H_BASE_ -#define _WX_BMPBUTTON_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/bmpbuttn.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/bmpbuttn.h" -#elif defined(__WXGTK__) -#include "wx/gtk/bmpbuttn.h" -#elif defined(__WXQT__) -#include "wx/qt/bmpbuttn.h" -#elif defined(__WXMAC__) -#include "wx/mac/bmpbuttn.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/bmpbuttn.h" -#endif - -#endif diff --git a/include/wx/brush.h b/include/wx/brush.h deleted file mode 100644 index e5d99b39a1..0000000000 --- a/include/wx/brush.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef _WX_BRUSH_H_BASE_ -#define _WX_BRUSH_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/brush.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/brush.h" -#elif defined(__WXGTK__) -#include "wx/gtk/brush.h" -#elif defined(__WXQT__) -#include "wx/qt/brush.h" -#elif defined(__WXMAC__) -#include "wx/mac/brush.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/brush.h" -#endif - -#endif - // _WX_BRUSH_H_BASE_ diff --git a/include/wx/button.h b/include/wx/button.h deleted file mode 100644 index 454a0a58f6..0000000000 --- a/include/wx/button.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef _WX_BUTTON_H_BASE_ -#define _WX_BUTTON_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/button.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/button.h" -#elif defined(__WXGTK__) -#include "wx/gtk/button.h" -#elif defined(__WXQT__) -#include "wx/qt/button.h" -#elif defined(__WXMAC__) -#include "wx/mac/button.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/button.h" -#endif - -#endif - // _WX_BUTTON_H_BASE_ diff --git a/include/wx/checkbox.h b/include/wx/checkbox.h deleted file mode 100644 index 47895df8cd..0000000000 --- a/include/wx/checkbox.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef _WX_CHECKBOX_H_BASE_ -#define _WX_CHECKBOX_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/checkbox.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/checkbox.h" -#elif defined(__WXGTK__) -#include "wx/gtk/checkbox.h" -#elif defined(__WXQT__) -#include "wx/qt/checkbox.h" -#elif defined(__WXMAC__) -#include "wx/mac/checkbox.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/checkbox.h" -#endif - -#endif - // _WX_CHECKBOX_H_BASE_ diff --git a/include/wx/checklst.h b/include/wx/checklst.h deleted file mode 100644 index 96f31e454f..0000000000 --- a/include/wx/checklst.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef _WX_CHECKLST_H_BASE_ -#define _WX_CHECKLST_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/checklst.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/checklst.h" -#elif defined(__WXGTK__) -#include "wx/gtk/checklst.h" -#elif defined(__WXQT__) -#include "wx/qt/checklst.h" -#elif defined(__WXMAC__) -#include "wx/mac/checklst.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/checklst.h" -#endif - -#endif - // _WX_CHECKLST_H_BASE_ diff --git a/include/wx/choicdlg.h b/include/wx/choicdlg.h deleted file mode 100644 index 52439ffd71..0000000000 --- a/include/wx/choicdlg.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef _WX_CHOICDLG_H_BASE_ -#define _WX_CHOICDLG_H_BASE_ - -#include "wx/generic/choicdgg.h" - -#endif - // _WX_CHOICDLG_H_BASE_ diff --git a/include/wx/choice.h b/include/wx/choice.h deleted file mode 100644 index 1830d779aa..0000000000 --- a/include/wx/choice.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef _WX_CHOICE_H_BASE_ -#define _WX_CHOICE_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/choice.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/choice.h" -#elif defined(__WXGTK__) -#include "wx/gtk/choice.h" -#elif defined(__WXQT__) -#include "wx/qt/choice.h" -#elif defined(__WXMAC__) -#include "wx/mac/choice.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/choice.h" -#endif - -#endif - // _WX_CHOICE_H_BASE_ diff --git a/include/wx/clipbrd.h b/include/wx/clipbrd.h deleted file mode 100644 index c37f46116f..0000000000 --- a/include/wx/clipbrd.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef _WX_CLIPBRD_H_BASE_ -#define _WX_CLIPBRD_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/clipbrd.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/clipbrd.h" -#elif defined(__WXGTK__) -#include "wx/gtk/clipbrd.h" -#elif defined(__WXQT__) -#include "wx/gtk/clipbrd.h" -#elif defined(__WXMAC__) -#include "wx/mac/clipbrd.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/clipbrd.h" -#endif - -#endif - // _WX_CLIPBRD_H_BASE_ diff --git a/include/wx/cmndata.h b/include/wx/cmndata.h deleted file mode 100644 index dc4eeb3ee0..0000000000 --- a/include/wx/cmndata.h +++ /dev/null @@ -1,226 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: cmndata.h -// Purpose: Common GDI data classes -// Author: Julian Smart and others -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_CMNDATA_H_BASE_ -#define _WX_CMNDATA_H_BASE_ - -#ifdef __GNUG__ -#pragma interface "cmndata.h" -#endif - -#include "wx/font.h" -#include "wx/colour.h" - -class WXDLLEXPORT wxColourData: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxColourData) - public: - wxColour dataColour; - wxColour custColours[16]; - bool chooseFull; - - wxColourData(void); - ~wxColourData(void); - - inline void SetChooseFull(bool flag) { chooseFull = flag; } - inline bool GetChooseFull(void) { return chooseFull; } - inline void SetColour(wxColour& colour) { dataColour = colour; } - inline wxColour &GetColour(void) { return dataColour; } - - // Array of 16 custom colours - void SetCustomColour(int i, wxColour& colour); - wxColour GetCustomColour(int i); - - void operator=(const wxColourData& data); -}; - -class WXDLLEXPORT wxFontData: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxFontData) - public: - wxColour fontColour; - bool showHelp; - bool allowSymbols; - bool enableEffects; - wxFont initialFont; - wxFont chosenFont; - int minSize; - int maxSize; - - wxFontData(void); - ~wxFontData(void); - - inline void SetAllowSymbols(bool flag) { allowSymbols = flag; } - inline bool GetAllowSymbols(void) { return allowSymbols; } - inline void SetColour(const wxColour& colour) { fontColour = colour; } - inline wxColour &GetColour(void) { return fontColour; } - inline void SetShowHelp(bool flag) { showHelp = flag; } - inline bool GetShowHelp(void) { return showHelp; } - inline void EnableEffects(bool flag) { enableEffects = flag; } - inline bool GetEnableEffects(void) { return enableEffects; } - inline void SetInitialFont(const wxFont& font) { initialFont = font; } - inline wxFont GetInitialFont(void) { return initialFont; } - inline void SetChosenFont(const wxFont& font) { chosenFont = font; } - inline wxFont GetChosenFont(void) { return chosenFont; } - inline void SetRange(int minRange, int maxRange) { minSize = minRange; maxSize = maxRange; } - - void operator=(const wxFontData& data); -}; - -/* - * wxPrintData - * Encapsulates information displayed and edited in the printer dialog box. - */ - -class WXDLLEXPORT wxPrintData: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxPrintData) - - public: -#ifdef __WXMSW__ - void *printData; -#endif - int printFromPage; - int printToPage; - int printMinPage; - int printMaxPage; - int printNoCopies; - int printOrientation; - bool printAllPages; - bool printCollate; - bool printToFile; - bool printEnableSelection; - bool printEnablePageNumbers; - bool printEnableHelp; - bool printEnablePrintToFile; - bool printSetupDialog; - - wxPrintData(void); - ~wxPrintData(void); - - inline int GetFromPage(void) { return printFromPage; }; - inline int GetToPage(void) { return printToPage; }; - inline int GetMinPage(void) { return printMinPage; }; - inline int GetMaxPage(void) { return printMaxPage; }; - inline int GetNoCopies(void) { return printNoCopies; }; - inline bool GetAllPages(void) { return printAllPages; }; - inline bool GetCollate(void) { return printCollate; }; - inline bool GetPrintToFile(void) { return printToFile; }; - inline bool GetSetupDialog(void) { return printSetupDialog; }; - inline int GetOrientation(void) { return printOrientation; }; - - inline void SetFromPage(int v) { printFromPage = v; }; - inline void SetToPage(int v) { printToPage = v; }; - inline void SetMinPage(int v) { printMinPage = v; }; - inline void SetMaxPage(int v) { printMaxPage = v; }; - inline void SetNoCopies(int v) { printNoCopies = v; }; - inline void SetAllPages(bool flag) { printAllPages = flag; }; - inline void SetCollate(bool flag) { printCollate = flag; }; - inline void SetPrintToFile(bool flag) { printToFile = flag; }; - inline void SetSetupDialog(bool flag) { printSetupDialog = flag; }; - inline void SetOrientation(int orient) { printOrientation = orient; }; - - inline void EnablePrintToFile(bool flag) { printEnablePrintToFile = flag; }; - inline void EnableSelection(bool flag) { printEnableSelection = flag; }; - inline void EnablePageNumbers(bool flag) { printEnablePageNumbers = flag; }; - inline void EnableHelp(bool flag) { printEnableHelp = flag; }; - - inline bool GetEnablePrintToFile(void) { return printEnablePrintToFile; }; - inline bool GetEnableSelection(void) { return printEnableSelection; }; - inline bool GetEnablePageNumbers(void) { return printEnablePageNumbers; }; - inline bool GetEnableHelp(void) { return printEnableHelp; }; - - void operator=(const wxPrintData& data); - -#ifdef __WXMSW__ - // Convert to/from the PRINTDLG structure - void ConvertToNative(void); - void ConvertFromNative(void); - void SetOwnerWindow(wxWindow* win); - inline void* GetNativeData(void) { return printData; } -#endif -}; - -/* - * This is the data used (and returned) by the wxPageSetupDialog. - */ - -class WXDLLEXPORT wxPageSetupData: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxPageSetupData) - - public: -#if defined(__WIN95__) - void* m_pageSetupData; -#endif - wxPoint m_paperSize; - wxPoint m_minMarginTopLeft; - wxPoint m_minMarginBottomRight; - wxPoint m_marginTopLeft; - wxPoint m_marginBottomRight; - int m_orientation; - - // Flags - bool m_defaultMinMargins; - bool m_enableMargins; - bool m_enableOrientation; - bool m_enablePaper; - bool m_enablePrinter; - bool m_getDefaultInfo; // Equiv. to PSD_RETURNDEFAULT - bool m_enableHelp; - - wxPageSetupData(void); - ~wxPageSetupData(void); - - inline wxPoint GetPaperSize(void) { return m_paperSize; }; - inline wxPoint GetMinMarginTopLeft(void) { return m_minMarginTopLeft; }; - inline wxPoint GetMinMarginBottomRight(void) { return m_minMarginBottomRight; }; - inline wxPoint GetMarginTopLeft(void) { return m_marginTopLeft; }; - inline wxPoint GetMarginBottomRight(void) { return m_marginBottomRight; }; - inline int GetOrientation(void) { return m_orientation; }; - - inline bool GetDefaultMinMargins(void) { return m_defaultMinMargins; }; - inline bool GetEnableMargins(void) { return m_enableMargins; }; - inline bool GetEnableOrientation(void) { return m_enableOrientation; }; - inline bool GetEnablePaper(void) { return m_enablePaper; }; - inline bool GetEnablePrinter(void) { return m_enablePrinter; }; - inline bool GetDefaultInfo(void) { return m_getDefaultInfo; }; - inline bool GetEnableHelp(void) { return m_enableHelp; }; - - inline void SetPaperSize(const wxPoint& pt) { m_paperSize = pt; }; - inline void SetMinMarginTopLeft(const wxPoint& pt) { m_minMarginTopLeft = pt; }; - inline void SetMinMarginBottomRight(const wxPoint& pt) { m_minMarginBottomRight = pt; }; - inline void SetMarginTopLeft(const wxPoint& pt) { m_marginTopLeft = pt; }; - inline void SetMarginBottomRight(const wxPoint& pt) { m_marginBottomRight = pt; }; - inline void SetOrientation(int orient) { m_orientation = orient; }; - inline void SetDefaultMinMargins(bool flag) { m_defaultMinMargins = flag; }; - inline void SetDefaultInfo(bool flag) { m_getDefaultInfo = flag; }; - - inline void EnableMargins(bool flag) { m_enableMargins = flag; }; - inline void EnableOrientation(bool flag) { m_enableOrientation = flag; }; - inline void EnablePaper(bool flag) { m_enablePaper = flag; }; - inline void EnablePrinter(bool flag) { m_enablePrinter = flag; }; - inline void EnableHelp(bool flag) { m_enableHelp = flag; }; - -#if defined(__WIN95__) - // Convert to/from the PAGESETUPDLG structure - void ConvertToNative(void); - void ConvertFromNative(void); - void SetOwnerWindow(wxWindow* win); - inline void* GetNativeData(void) { return m_pageSetupData; } -#endif - - void operator=(const wxPageSetupData& data); -}; - - -#endif - // _WX_CMNDATA_H_BASE_ diff --git a/include/wx/colordlg.h b/include/wx/colordlg.h deleted file mode 100644 index a8ca97c25b..0000000000 --- a/include/wx/colordlg.h +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef _WX_COLORDLG_H_BASE_ -#define _WX_COLORDLG_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/colordlg.h" -#elif defined(__WXMOTIF__) -#include "wx/generic/colrdlgg.h" -#elif defined(__WXGTK__) -#include "wx/generic/colrdlgg.h" -#elif defined(__WXQT__) -#include "wx/generic/colrdlgg.h" -#elif defined(__WXMAC__) -#include "wx/generic/colrdlgg.h" -#elif defined(__WXSTUBS__) -#include "wx/generic/colrdlgg.h" -#endif - -#ifndef __WXMSW__ -#define wxColourDialog wxGenericColourDialog -#define sm_classwxColourDialog sm_classwxColourDialog -#endif - -#endif - // _WX_COLORDLG_H_BASE_ diff --git a/include/wx/colour.h b/include/wx/colour.h deleted file mode 100644 index 3fff200431..0000000000 --- a/include/wx/colour.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef _WX_COLOUR_H_BASE_ -#define _WX_COLOUR_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/colour.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/colour.h" -#elif defined(__WXGTK__) -#include "wx/gtk/colour.h" -#elif defined(__WXQT__) -#include "wx/qt/colour.h" -#elif defined(__WXMAC__) -#include "wx/mac/colour.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/colour.h" -#endif - -#define wxColor wxColour - -#endif - // _WX_COLOUR_H_BASE_ diff --git a/include/wx/combobox.h b/include/wx/combobox.h deleted file mode 100644 index 26512aa0cd..0000000000 --- a/include/wx/combobox.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef _WX_COMBOBOX_H_BASE_ -#define _WX_COMBOBOX_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/combobox.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/combobox.h" -#elif defined(__WXGTK__) -#include "wx/gtk/combobox.h" -#elif defined(__WXQT__) -#include "wx/qt/combobox.h" -#elif defined(__WXMAC__) -#include "wx/mac/combobox.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/combobox.h" -#endif - -#endif - // _WX_COMBOBOX_H_BASE_ diff --git a/include/wx/confbase.h b/include/wx/confbase.h deleted file mode 100644 index 2fcb50efee..0000000000 --- a/include/wx/confbase.h +++ /dev/null @@ -1,302 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: confbase.h -// Purpose: declaration of the base class of all config implementations -// (see also: fileconf.h and msw/regconf.h) -// Author: Karsten Ballüder & Vadim Zeitlin -// Modified by: -// Created: 07.04.98 (adapted from appconf.h) -// RCS-ID: $Id$ -// Copyright: (c) 1997 Karsten Ballüder Ballueder@usa.net -// Vadim Zeitlin -// Licence: wxWindows license -/////////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_CONFBASE_H_ -#define _WX_CONFBASE_H_ - -#ifdef __GNUG__ -#pragma interface "confbase.h" -#endif - -#include "wx/defs.h" - -#if wxUSE_CONFIG - -#include "wx/string.h" - -// ---------------------------------------------------------------------------- -// constants -// ---------------------------------------------------------------------------- - -/// shall we be case sensitive in parsing variable names? -#ifndef wxCONFIG_CASE_SENSITIVE - #define wxCONFIG_CASE_SENSITIVE FALSE -#endif - -/// separates group and entry names (probably shouldn't be changed) -#ifndef wxCONFIG_PATH_SEPARATOR - #define wxCONFIG_PATH_SEPARATOR '/' -#endif - -/// introduces immutable entries -// (i.e. the ones which can't be changed from the local config file) -#ifndef wxCONFIG_IMMUTABLE_PREFIX - #define wxCONFIG_IMMUTABLE_PREFIX '!' -#endif - -/// should we use registry instead of configuration files under Win32? -// (i.e. whether wxConfigBase::Create() will create a wxFileConfig (if it's -// FALSE) or wxRegConfig (if it's true and we're under Win32) or wxIniConfig -// (under Win16)) -#ifndef wxCONFIG_WIN32_NATIVE - #define wxCONFIG_WIN32_NATIVE TRUE -#endif - -// Style flags for constructor style parameter -#define wxCONFIG_USE_LOCAL_FILE 1 -#define wxCONFIG_USE_GLOBAL_FILE 2 - -// ---------------------------------------------------------------------------- -// various helper global functions -// ---------------------------------------------------------------------------- - -/* - Replace environment variables ($SOMETHING) with their values. The format is - $VARNAME or ${VARNAME} where VARNAME contains alphanumeric characters and - '_' only. '$' must be escaped ('\$') in order to be taken literally. - */ -extern wxString wxExpandEnvVars(const wxString &sz); - -/* - Split path into parts removing '..' in progress - */ -extern void wxSplitPath(wxArrayString& aParts, const char *sz); - -// ---------------------------------------------------------------------------- -// abstract base class wxConfigBase which defines the interface for derived -// classes -// -// wxConfig organizes the items in a tree-like structure (modeled after the -// Unix/Dos filesystem). There are groups (directories) and keys (files). -// There is always one current group given by the current path. -// -// Keys are pairs "key_name = value" where value may be of string or integer -// (long) type (@@@ doubles and other types such as wxDate coming soon). -// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxConfigBase -{ -public: - // static functions - // sets the config object, returns the previous pointer - static wxConfigBase *Set(wxConfigBase *pConfig); - // get the config object, creates it on demand unless DontCreateOnDemand - // was called - static wxConfigBase *Get() { if ( !ms_pConfig ) Create(); return ms_pConfig; } - // create a new config object: this function will create the "best" - // implementation of wxConfig available for the current platform, see - // comments near definition wxCONFIG_WIN32_NATIVE for details. It returns - // the created object and also sets it as ms_pConfig. - static wxConfigBase *Create(); - // should Get() try to create a new log object if the current one is NULL? - static void DontCreateOnDemand() { ms_bAutoCreate = FALSE; } - - // ctor & virtual dtor - // environment variable expansion is on by default -// wxConfigBase() { m_bExpandEnvVars = TRUE; m_bRecordDefaults = FALSE; } - - // ctor - - // Not all args will always be used by derived classes, but - // including them all in each class ensures compatibility. - // If appName is empty, uses wxApp name - wxConfigBase(const wxString& appName = "", const wxString& vendorName = "", - const wxString& localFilename = "", const wxString& globalFilename = "", - long style = 0); - - // empty but ensures that dtor of all derived classes is virtual - virtual ~wxConfigBase() { } - - // path management - // set current path: if the first character is '/', it's the absolute path, - // otherwise it's a relative path. '..' is supported. If the strPath - // doesn't exist it is created. - virtual void SetPath(const wxString& strPath) = 0; - // retrieve the current path (always as absolute path) - virtual const wxString& GetPath() const = 0; - - // enumeration: all functions here return false when there are no more items. - // you must pass the same lIndex to GetNext and GetFirst (don't modify it) - // enumerate subgroups - virtual bool GetFirstGroup(wxString& str, long& lIndex) const = 0; - virtual bool GetNextGroup (wxString& str, long& lIndex) const = 0; - // enumerate entries - virtual bool GetFirstEntry(wxString& str, long& lIndex) const = 0; - virtual bool GetNextEntry (wxString& str, long& lIndex) const = 0; - // get number of entries/subgroups in the current group, with or without - // it's subgroups - virtual size_t GetNumberOfEntries(bool bRecursive = FALSE) const = 0; - virtual size_t GetNumberOfGroups(bool bRecursive = FALSE) const = 0; - - // tests of existence - // returns TRUE if the group by this name exists - virtual bool HasGroup(const wxString& strName) const = 0; - // same as above, but for an entry - virtual bool HasEntry(const wxString& strName) const = 0; - // returns TRUE if either a group or an entry with a given name exist - bool Exists(const wxString& strName) const - { return HasGroup(strName) || HasEntry(strName); } - - // key access: returns TRUE if value was really read, FALSE if default used - // (and if the key is not found the default value is returned.) - // read a string from the key - virtual bool Read(const wxString& key, wxString *pStr) const = 0; - virtual bool Read(const wxString& key, wxString *pStr, const wxString& defVal) const; - - virtual wxString Read(const wxString& key, const wxString& defVal = "") const; - - virtual bool Read(const wxString& key, long *pl) const = 0; - virtual bool Read(const wxString& key, long *pl, long defVal) const; - - virtual long Read(const wxString& strKey, long defVal) const - { long l; Read(strKey, &l, defVal); return l; } - - // Convenience functions that are built on other forms - - // int - virtual bool Read(const wxString& key, int *pi) const; - virtual bool Read(const wxString& key, int *pi, int defVal) const; - - // double - virtual bool Read(const wxString& key, double* val) const; - virtual bool Read(const wxString& key, double* val, double defVal) const; - - // bool - virtual bool Read(const wxString& key, bool* val) const; - virtual bool Read(const wxString& key, bool* val, bool defVal) const; - - // write the value (return true on success) - virtual bool Write(const wxString& key, const wxString& value) = 0; - virtual bool Write(const wxString& key, long value) = 0; - - // Convenience functions - virtual bool Write(const wxString& key, double value); - virtual bool Write(const wxString& key, bool value); - - // permanently writes all changes - virtual bool Flush(bool bCurrentOnly = FALSE) = 0; - - // renaming, all functions return FALSE on failure (probably because the new - // name is already taken by an existing entry) - // rename an entry - virtual bool RenameEntry(const wxString& oldName, - const wxString& newName) = 0; - // rename a group - virtual bool RenameGroup(const wxString& oldName, - const wxString& newName) = 0; - - // delete entries/groups - // deletes the specified entry and the group it belongs to if - // it was the last key in it and the second parameter is true - virtual bool DeleteEntry(const wxString& key, - bool bDeleteGroupIfEmpty = TRUE) = 0; - // delete the group (with all subgroups) - virtual bool DeleteGroup(const wxString& key) = 0; - // delete the whole underlying object (disk file, registry key, ...) - // primarly for use by desinstallation routine. - virtual bool DeleteAll() = 0; - - // options - // we can automatically expand environment variables in the config entries - // (this option is on by default, you can turn it on/off at any time) - bool IsExpandingEnvVars() const { return m_bExpandEnvVars; } - void SetExpandEnvVars(bool bDoIt = TRUE) { m_bExpandEnvVars = bDoIt; } - // recording of default values - void SetRecordDefaults(bool bDoIt = TRUE) { m_bRecordDefaults = bDoIt; } - bool IsRecordingDefaults() const { return m_bRecordDefaults; } - // does expansion only if needed - wxString ExpandEnvVars(const wxString& str) const; - - // misc accessors - inline wxString GetAppName() const { return m_appName; } - inline wxString GetVendorName() const { return m_vendorName; } - - inline void SetAppName(const wxString& appName) { m_appName = appName; } - inline void SetVendorName(const wxString& vendorName) { m_vendorName = vendorName; } - - inline void SetStyle(long style) { m_style = style; } - inline long GetStyle() const { return m_style; } - -protected: - static bool IsImmutable(const wxString& key) - #ifndef __WXMAC__ - { return !key.IsEmpty() && key[0u] == wxCONFIG_IMMUTABLE_PREFIX; } - #else - { return !key.IsEmpty() && key[0ul] == wxCONFIG_IMMUTABLE_PREFIX; } - #endif - -private: - // are we doing automatic environment variable expansion? - bool m_bExpandEnvVars; - // do we record default values? - bool m_bRecordDefaults; - - // static variables - static wxConfigBase *ms_pConfig; - static bool ms_bAutoCreate; - - // Application name and organisation name - wxString m_appName; - wxString m_vendorName; - - // Style flag - long m_style; -}; - - // a handy little class which changes current path to the path of given entry - // and restores it in dtor: so if you declare a local variable of this type, - // you work in the entry directory and the path is automatically restored - // when the function returns - // Taken out of wxConfig since not all compilers can cope with nested classes. - class wxConfigPathChanger - { - public: - // ctor/dtor do path changing/restorin - wxConfigPathChanger(const wxConfigBase *pContainer, const wxString& strEntry); - ~wxConfigPathChanger(); - - // get the key name - const wxString& Name() const { return m_strName; } - - private: - wxConfigBase *m_pContainer; // object we live in - wxString m_strName, // name of entry (i.e. name only) - m_strOldPath; // saved path - bool m_bChanged; // was the path changed? - }; - - -// ---------------------------------------------------------------------------- -// the native wxConfigBase implementation -// ---------------------------------------------------------------------------- - -// under Windows we prefer to use the native implementation -#if defined(__WXMSW__) && wxCONFIG_WIN32_NATIVE - #ifdef __WIN32__ - #define wxConfig wxRegConfig - #define sm_classwxConfig sm_classwxRegConfig - #else //WIN16 - #define wxConfig wxIniConfig - #define sm_classwxConfig sm_classwxIniConfig - #endif -#else // either we're under Unix or wish to use files even under Windows - #define wxConfig wxFileConfig - #define sm_classwxConfig sm_classwxFileConfig -#endif - -#endif - - // wxUSE_CONFIG - -#endif - // _WX_CONFIG_H_ - diff --git a/include/wx/config.h b/include/wx/config.h deleted file mode 100644 index d9ffb9fa58..0000000000 --- a/include/wx/config.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef _WX_CONFIG_H_BASE_ -#define _WX_CONFIG_H_BASE_ - -#include "wx/confbase.h" - -#if defined(__WXMSW__) && defined(wxCONFIG_WIN32_NATIVE) -# ifdef __WIN32__ -# include "wx/msw/regconf.h" -#else -# include "wx/msw/iniconf.h" -# endif -#else -# include "wx/fileconf.h" -#endif - -#endif - // _WX_CONFIG_H_BASE_ diff --git a/include/wx/control.h b/include/wx/control.h deleted file mode 100644 index e4341393e8..0000000000 --- a/include/wx/control.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef _WX_CONTROL_H_BASE_ -#define _WX_CONTROL_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/control.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/control.h" -#elif defined(__WXGTK__) -#include "wx/gtk/control.h" -#elif defined(__WXQT__) -#include "wx/qt/control.h" -#elif defined(__WXMAC__) -#include "wx/mac/control.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/control.h" -#endif - -#endif - // _WX_CONTROL_H_BASE_ diff --git a/include/wx/cursor.h b/include/wx/cursor.h deleted file mode 100644 index 4ebe73a971..0000000000 --- a/include/wx/cursor.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef _WX_CURSOR_H_BASE_ -#define _WX_CURSOR_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/cursor.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/cursor.h" -#elif defined(__WXGTK__) -#include "wx/gtk/cursor.h" -#elif defined(__WXQT__) -#include "wx/qt/cursor.h" -#elif defined(__WXMAC__) -#include "wx/mac/cursor.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/cursor.h" -#endif - -#endif - // _WX_CURSOR_H_BASE_ diff --git a/include/wx/dataobj.h b/include/wx/dataobj.h deleted file mode 100644 index 5d0b3f23ee..0000000000 --- a/include/wx/dataobj.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef _WX_DATAOBJ_H_BASE_ -#define _WX_DATAOBJ_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/ole/dataobj.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/dataobj.h" -#elif defined(__WXGTK__) -#include "wx/gtk/dataobj.h" -#elif defined(__WXQT__) -#include "wx/qt/dnd.h" -#elif defined(__WXMAC__) -#include "wx/mac/dnd.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/dnd.h" -#endif - -#endif - // _WX_DATAOBJ_H_BASE_ diff --git a/include/wx/date.h b/include/wx/date.h deleted file mode 100644 index 49936f064d..0000000000 --- a/include/wx/date.h +++ /dev/null @@ -1,134 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: date.h -// Purpose: wxDate class -// Author: Julian Smart, Steve Marcus, Eric Simon, Chris Hill, -// Charles D. Price -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_DATE_H_ -#define _WX_DATE_H_ - -#ifdef __GNUG__ -#pragma interface "date.h" -#endif - -#include "wx/object.h" -#include "wx/string.h" - -#if wxUSE_TIMEDATE - -enum wxdate_format_type {wxMDY, wxDAY, wxMONTH, wxFULL, wxEUROPEAN}; - -#define wxNO_CENTURY 0x02 -#define wxDATE_ABBR 0x04 - -class WXDLLEXPORT wxDate: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxDate) - protected: - unsigned long julian; // see julDate(); days since 1/1/4713 B.C. - int month; // see NMonth() - int day; // see Day() - int year; // see NYear4() - int day_of_week; // see NDOW(); 1 = Sunday, ... 7 = Saturday - - private: - int DisplayFormat; - unsigned char DisplayOptions; - - void julian_to_mdy (); // convert julian day to mdy - void julian_to_wday (); // convert julian day to day_of_week - void mdy_to_julian (); // convert mdy to julian day - - public: - wxDate (); - wxDate (long j); - wxDate (int m, int d, int y); - wxDate (const wxString& dat); - wxDate (const wxDate &dt); - -#ifndef __SALFORDC__ - operator wxString (void); -#endif - - void operator = (const wxDate& date); - void operator = (const wxString& date); - - wxDate operator + (long i); - wxDate operator + (int i); - - wxDate operator - (long i); - wxDate operator - (int i); - - long operator - (const wxDate &dt); - - wxDate &operator += (long i); - wxDate &operator -= (long i); - - wxDate &operator ++ (); // Prefix increment - wxDate &operator ++ (int); // Postfix increment - wxDate &operator -- (); // Prefix decrement - wxDate &operator -- (int); // Postfix decrement - - friend bool WXDLLEXPORT operator < (const wxDate &dt1, const wxDate &dt2); - friend bool WXDLLEXPORT operator <= (const wxDate &dt1, const wxDate &dt2); - friend bool WXDLLEXPORT operator > (const wxDate &dt1, const wxDate &dt2); - friend bool WXDLLEXPORT operator >= (const wxDate &dt1, const wxDate &dt2); - friend bool WXDLLEXPORT operator == (const wxDate &dt1, const wxDate &dt2); - friend bool WXDLLEXPORT operator != (const wxDate &dt1, const wxDate &dt2); - - friend ostream WXDLLEXPORT & operator << (ostream &os, const wxDate &dt); - - wxString FormatDate (int type=-1) const; - void SetFormat (int format); - int SetOption (int option, bool enable=TRUE); - - long GetJulianDate() const; // returns julian date - int GetDayOfYear() const; // returns relative date since Jan. 1 - bool IsLeapYear() const; // returns TRUE if leap year, FALSE if not - - // Version 4.0 Extension to Public Interface - CDP - - // These 'Set's modify the date object and actually SET it - // They all return a reference to self (*this) - - wxDate &Set(); // Sets to current system date - wxDate &Set(long lJulian); - wxDate &Set(int nMonth, int nDay, int nYear); - - wxDate &AddWeeks(int nCount = 1); // - wxDate &AddMonths(int nCount = 1); // May also pass neg# to decrement - wxDate &AddYears(int nCount = 1); // - - int GetDay() const; // Numeric Day of date object - int GetDaysInMonth(); // Number of days in month (1..31) - int GetFirstDayOfMonth() const; // First Day Of Month (1..7) - - wxString GetDayOfWeekName(); // Character Day Of Week ('Sunday'..'Saturday') - int GetDayOfWeek() const; // (1..7) - - int GetWeekOfMonth(); // Numeric Week Of Month (1..6) - int GetWeekOfYear(); // Numeric Week Of Year (1..52) - - wxString GetMonthName(); // Character Month name - int GetMonth() const; // Month Number (1..12) - wxDate GetMonthStart(); // First Date Of Month - wxDate GetMonthEnd(); // Last Date Of Month - - int GetYear() const; // eg. 1992 - wxDate GetYearStart(); // First Date Of Year - wxDate GetYearEnd(); // Last Date Of Year - - bool IsBetween(const wxDate& first, const wxDate& second) const; - - wxDate Previous(int dayOfWeek) const; -}; - -#endif -#endif - // _WX_DATE_H_ diff --git a/include/wx/datstrm.h b/include/wx/datstrm.h deleted file mode 100644 index 82e7b8daa9..0000000000 --- a/include/wx/datstrm.h +++ /dev/null @@ -1,48 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: datstrm.h -// Purpose: Data stream classes -// Author: Guilhem Lavaux -// Modified by: -// Created: 28/06/1998 -// RCS-ID: $Id$ -// Copyright: (c) Guilhem Lavaux -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_DATSTREAM_H_ -#define _WX_DATSTREAM_H_ - -#ifdef __GNUG__ -#pragma interface "datstrm.h" -#endif - -#include - -class WXDLLEXPORT wxDataInputStream: public wxFilterInputStream { -public: - wxDataInputStream(wxInputStream& s); - virtual ~wxDataInputStream(); - - unsigned long Read32(); - unsigned short Read16(); - unsigned char Read8(); - double ReadDouble(); - wxString ReadLine(); - wxString ReadString(); -}; - -class WXDLLEXPORT wxDataOutputStream: public wxFilterOutputStream { - public: - wxDataOutputStream(wxOutputStream& s); - virtual ~wxDataOutputStream(); - - void Write32(unsigned long i); - void Write16(unsigned short i); - void Write8(unsigned char i); - void WriteDouble(double d); - void WriteLine(const wxString& line); - void WriteString(const wxString& string); -}; - -#endif - // _WX_DATSTREAM_H_ diff --git a/include/wx/db.h b/include/wx/db.h deleted file mode 100644 index 8d29a834e5..0000000000 --- a/include/wx/db.h +++ /dev/null @@ -1,378 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: db.h -// Purpose: Header file wxDB class. The wxDB class represents a connection -// to an ODBC data source. The wxDB class allows operations on the data -// source such as opening and closing the data source. -// Author: Doug Card -// Modified by: -// Mods: Dec, 1998: Added support for SQL statement logging and database -// cataloging -// Created: 9.96 -// RCS-ID: $Id$ -// Copyright: (c) 1996 Remstar International, Inc. -// Licence: wxWindows licence, plus: -// Notice: This class library and its intellectual design are free of charge for use, -// modification, enhancement, debugging under the following conditions: -// 1) These classes may only be used as part of the implementation of a -// wxWindows-based application -// 2) All enhancements and bug fixes are to be submitted back to the wxWindows -// user groups free of all charges for use with the wxWindows library. -// 3) These classes may not be distributed as part of any other class library, -// DLL, text (written or electronic), other than a complete distribution of -// the wxWindows GUI development toolkit. -// -/////////////////////////////////////////////////////////////////////////////// - -/* -// SYNOPSIS START -// SYNOPSIS STOP -*/ - -#ifndef DB_DOT_H -#define DB_DOT_H - -#ifdef __GNUG__ -#pragma interface "db.h" -#endif - -#if defined(__WXMSW__) || defined(WIN32) -#include -#endif - - -#ifdef __WXGTK__ - -extern "C" { -#include <../iodbc/isql.h> -#include <../iodbc/isqlext.h> -typedef float SFLOAT; -typedef double SDOUBLE; -typedef unsigned int UINT; -#define ULONG UDWORD - -} - -#else - -#define ODBCVER 0x0250 -#include -#include - -#endif - -enum enumDummy {enumDum1}; - -#define SQL_C_BOOLEAN (sizeof(int) == 2 ? SQL_C_USHORT : SQL_C_ULONG) -#define SQL_C_ENUM (sizeof(enumDummy) == 2 ? SQL_C_USHORT : SQL_C_ULONG) //glt 2-21-97 - -// Database Globals -const int DB_TYPE_NAME_LEN = 40; -const int DB_MAX_STATEMENT_LEN = 2048; -const int DB_MAX_WHERE_CLAUSE_LEN = 1024; -const int DB_MAX_ERROR_MSG_LEN = 512; -const int DB_MAX_ERROR_HISTORY = 5; -const int DB_MAX_TABLE_NAME_LEN = 128; -const int DB_MAX_COLUMN_NAME_LEN = 128; - -const int DB_DATA_TYPE_VARCHAR = 1; -const int DB_DATA_TYPE_INTEGER = 2; -const int DB_DATA_TYPE_FLOAT = 3; -const int DB_DATA_TYPE_DATE = 4; - -const int DB_SELECT_KEYFIELDS = 1; -const int DB_SELECT_WHERE = 2; -const int DB_SELECT_MATCHING = 3; -const int DB_SELECT_STATEMENT = 4; - -const int DB_UPD_KEYFIELDS = 1; -const int DB_UPD_WHERE = 2; - -const int DB_DEL_KEYFIELDS = 1; -const int DB_DEL_WHERE = 2; -const int DB_DEL_MATCHING = 3; - -const int DB_WHERE_KEYFIELDS = 1; -const int DB_WHERE_MATCHING = 2; - -const int DB_CURSOR0 = 0; -const int DB_CURSOR1 = 1; -const int DB_CURSOR2 = 2; -//const int DB_CURSOR3 = 3; -//const int DB_CURSOR4 = 4; -//const int DB_CURSOR5 = 5; - -const int DB_GRANT_SELECT = 1; -const int DB_GRANT_INSERT = 2; -const int DB_GRANT_UPDATE = 4; -const int DB_GRANT_DELETE = 8; -const int DB_GRANT_ALL = DB_GRANT_SELECT | DB_GRANT_INSERT | DB_GRANT_UPDATE | DB_GRANT_DELETE; - -// ODBC Error codes (derived from ODBC SqlState codes) -enum ODBC_ERRORS -{ - DB_FAILURE = 0, - DB_SUCCESS = 1, - DB_ERR_NOT_IN_USE, - DB_ERR_GENERAL_WARNING, // SqlState = '01000' - DB_ERR_DISCONNECT_ERROR, // SqlState = '01002' - DB_ERR_DATA_TRUNCATED, // SqlState = '01004' - DB_ERR_PRIV_NOT_REVOKED, // SqlState = '01006' - DB_ERR_INVALID_CONN_STR_ATTR, // SqlState = '01S00' - DB_ERR_ERROR_IN_ROW, // SqlState = '01S01' - DB_ERR_OPTION_VALUE_CHANGED, // SqlState = '01S02' - DB_ERR_NO_ROWS_UPD_OR_DEL, // SqlState = '01S03' - DB_ERR_MULTI_ROWS_UPD_OR_DEL, // SqlState = '01S04' - DB_ERR_WRONG_NO_OF_PARAMS, // SqlState = '07001' - DB_ERR_DATA_TYPE_ATTR_VIOL, // SqlState = '07006' - DB_ERR_UNABLE_TO_CONNECT, // SqlState = '08001' - DB_ERR_CONNECTION_IN_USE, // SqlState = '08002' - DB_ERR_CONNECTION_NOT_OPEN, // SqlState = '08003' - DB_ERR_REJECTED_CONNECTION, // SqlState = '08004' - DB_ERR_CONN_FAIL_IN_TRANS, // SqlState = '08007' - DB_ERR_COMM_LINK_FAILURE, // SqlState = '08S01' - DB_ERR_INSERT_VALUE_LIST_MISMATCH, // SqlState = '21S01' - DB_ERR_DERIVED_TABLE_MISMATCH, // SqlState = '21S02' - DB_ERR_STRING_RIGHT_TRUNC, // SqlState = '22001' - DB_ERR_NUMERIC_VALUE_OUT_OF_RNG, // SqlState = '22003' - DB_ERR_ERROR_IN_ASSIGNMENT, // SqlState = '22005' - DB_ERR_DATETIME_FLD_OVERFLOW, // SqlState = '22008' - DB_ERR_DIVIDE_BY_ZERO, // SqlState = '22012' - DB_ERR_STR_DATA_LENGTH_MISMATCH, // SqlState = '22026' - DB_ERR_INTEGRITY_CONSTRAINT_VIOL, // SqlState = '23000' - DB_ERR_INVALID_CURSOR_STATE, // SqlState = '24000' - DB_ERR_INVALID_TRANS_STATE, // SqlState = '25000' - DB_ERR_INVALID_AUTH_SPEC, // SqlState = '28000' - DB_ERR_INVALID_CURSOR_NAME, // SqlState = '34000' - DB_ERR_SYNTAX_ERROR_OR_ACCESS_VIOL, // SqlState = '37000' - DB_ERR_DUPLICATE_CURSOR_NAME, // SqlState = '3C000' - DB_ERR_SERIALIZATION_FAILURE, // SqlState = '40001' - DB_ERR_SYNTAX_ERROR_OR_ACCESS_VIOL2, // SqlState = '42000' - DB_ERR_OPERATION_ABORTED, // SqlState = '70100' - DB_ERR_UNSUPPORTED_FUNCTION, // SqlState = 'IM001' - DB_ERR_NO_DATA_SOURCE, // SqlState = 'IM002' - DB_ERR_DRIVER_LOAD_ERROR, // SqlState = 'IM003' - DB_ERR_SQLALLOCENV_FAILED, // SqlState = 'IM004' - DB_ERR_SQLALLOCCONNECT_FAILED, // SqlState = 'IM005' - DB_ERR_SQLSETCONNECTOPTION_FAILED, // SqlState = 'IM006' - DB_ERR_NO_DATA_SOURCE_DLG_PROHIB, // SqlState = 'IM007' - DB_ERR_DIALOG_FAILED, // SqlState = 'IM008' - DB_ERR_UNABLE_TO_LOAD_TRANSLATION_DLL, // SqlState = 'IM009' - DB_ERR_DATA_SOURCE_NAME_TOO_LONG, // SqlState = 'IM010' - DB_ERR_DRIVER_NAME_TOO_LONG, // SqlState = 'IM011' - DB_ERR_DRIVER_KEYWORD_SYNTAX_ERROR, // SqlState = 'IM012' - DB_ERR_TRACE_FILE_ERROR, // SqlState = 'IM013' - DB_ERR_TABLE_OR_VIEW_ALREADY_EXISTS, // SqlState = 'S0001' - DB_ERR_TABLE_NOT_FOUND, // SqlState = 'S0002' - DB_ERR_INDEX_ALREADY_EXISTS, // SqlState = 'S0011' - DB_ERR_INDEX_NOT_FOUND, // SqlState = 'S0012' - DB_ERR_COLUMN_ALREADY_EXISTS, // SqlState = 'S0021' - DB_ERR_COLUMN_NOT_FOUND, // SqlState = 'S0022' - DB_ERR_NO_DEFAULT_FOR_COLUMN, // SqlState = 'S0023' - DB_ERR_GENERAL_ERROR, // SqlState = 'S1000' - DB_ERR_MEMORY_ALLOCATION_FAILURE, // SqlState = 'S1001' - DB_ERR_INVALID_COLUMN_NUMBER, // SqlState = 'S1002' - DB_ERR_PROGRAM_TYPE_OUT_OF_RANGE, // SqlState = 'S1003' - DB_ERR_SQL_DATA_TYPE_OUT_OF_RANGE, // SqlState = 'S1004' - DB_ERR_OPERATION_CANCELLED, // SqlState = 'S1008' - DB_ERR_INVALID_ARGUMENT_VALUE, // SqlState = 'S1009' - DB_ERR_FUNCTION_SEQUENCE_ERROR, // SqlState = 'S1010' - DB_ERR_OPERATION_INVALID_AT_THIS_TIME, // SqlState = 'S1011' - DB_ERR_INVALID_TRANS_OPERATION_CODE, // SqlState = 'S1012' - DB_ERR_NO_CURSOR_NAME_AVAIL, // SqlState = 'S1015' - DB_ERR_INVALID_STR_OR_BUF_LEN, // SqlState = 'S1090' - DB_ERR_DESCRIPTOR_TYPE_OUT_OF_RANGE, // SqlState = 'S1091' - DB_ERR_OPTION_TYPE_OUT_OF_RANGE, // SqlState = 'S1092' - DB_ERR_INVALID_PARAM_NO, // SqlState = 'S1093' - DB_ERR_INVALID_SCALE_VALUE, // SqlState = 'S1094' - DB_ERR_FUNCTION_TYPE_OUT_OF_RANGE, // SqlState = 'S1095' - DB_ERR_INF_TYPE_OUT_OF_RANGE, // SqlState = 'S1096' - DB_ERR_COLUMN_TYPE_OUT_OF_RANGE, // SqlState = 'S1097' - DB_ERR_SCOPE_TYPE_OUT_OF_RANGE, // SqlState = 'S1098' - DB_ERR_NULLABLE_TYPE_OUT_OF_RANGE, // SqlState = 'S1099' - DB_ERR_UNIQUENESS_OPTION_TYPE_OUT_OF_RANGE, // SqlState = 'S1100' - DB_ERR_ACCURACY_OPTION_TYPE_OUT_OF_RANGE, // SqlState = 'S1101' - DB_ERR_DIRECTION_OPTION_OUT_OF_RANGE, // SqlState = 'S1103' - DB_ERR_INVALID_PRECISION_VALUE, // SqlState = 'S1104' - DB_ERR_INVALID_PARAM_TYPE, // SqlState = 'S1105' - DB_ERR_FETCH_TYPE_OUT_OF_RANGE, // SqlState = 'S1106' - DB_ERR_ROW_VALUE_OUT_OF_RANGE, // SqlState = 'S1107' - DB_ERR_CONCURRENCY_OPTION_OUT_OF_RANGE, // SqlState = 'S1108' - DB_ERR_INVALID_CURSOR_POSITION, // SqlState = 'S1109' - DB_ERR_INVALID_DRIVER_COMPLETION, // SqlState = 'S1110' - DB_ERR_INVALID_BOOKMARK_VALUE, // SqlState = 'S1111' - DB_ERR_DRIVER_NOT_CAPABLE, // SqlState = 'S1C00' - DB_ERR_TIMEOUT_EXPIRED // SqlState = 'S1T00' -}; - -struct DbStuff -{ - HENV Henv; - char Dsn[SQL_MAX_DSN_LENGTH+1]; // Data Source Name - char Uid[20]; // User ID - char AuthStr[20]; // Authorization string (password) -}; - -typedef struct -{ - char TypeName[DB_TYPE_NAME_LEN]; - int FsqlType; - long Precision; - short CaseSensitive; -// short MinimumScale; - short MaximumScale; -} SqlTypeInfo; - -class WXDLLEXPORT CcolInf -{ -public: - char tableName[DB_MAX_TABLE_NAME_LEN+1]; - char colName[DB_MAX_COLUMN_NAME_LEN+1]; - int sqlDataType; -}; - -enum sqlLog -{ - sqlLogOFF, - sqlLogON -}; - -class WXDLLEXPORT wxDB -{ -private: - - // Private data - bool dbIsOpen; - char *dsn; // Data source name - char *uid; // User ID - char *authStr; // Authorization string (password) - FILE *fpSqlLog; // Sql Log file pointer - enum sqlLog sqlLogState; // On or Off - - // Private member functions - bool getDbInfo(void); - bool getDataTypeInfo(SWORD fSqlType, SqlTypeInfo &structSQLTypeInfo); - bool setConnectionOptions(void); - void logError(char *errMsg, char *SQLState); - -public: - - // The following structure contains database information gathered from the - // datasource when the datasource is first opened. - struct - { - char dbmsName[40]; // Name of the dbms product - char dbmsVer[40]; // Version # of the dbms product - char driverName[40]; // Driver name - char odbcVer[60]; // ODBC version of the driver - char drvMgrOdbcVer[60]; // ODBC version of the driver manager - char driverVer[60]; // Driver version - char serverName[80]; // Server Name, typically a connect string - char databaseName[128]; // Database filename - char outerJoins[2]; // Indicates whether the data source supports outer joins - char procedureSupport[2]; // Indicates whether the data source supports stored procedures - UWORD maxConnections; // Maximum # of connections the data source supports - UWORD maxStmts; // Maximum # of HSTMTs per HDBC - UWORD apiConfLvl; // ODBC API conformance level - UWORD cliConfLvl; // Indicates whether the data source is SAG compliant - UWORD sqlConfLvl; // SQL conformance level - UWORD cursorCommitBehavior; // Indicates how cursors are affected by a db commit - UWORD cursorRollbackBehavior; // Indicates how cursors are affected by a db rollback - UWORD supportNotNullClause; // Indicates if data source supports NOT NULL clause - char supportIEF[2]; // Integrity Enhancement Facility (Referential Integrity) - UDWORD txnIsolation; // Default transaction isolation level supported by the driver - UDWORD txnIsolationOptions; // Transaction isolation level options available - UDWORD fetchDirections; // Fetch directions supported - UDWORD lockTypes; // Lock types supported in SQLSetPos - UDWORD posOperations; // Position operations supported in SQLSetPos - UDWORD posStmts; // Position statements supported - UDWORD scrollConcurrency; // Concurrency control options supported for scrollable cursors - UDWORD scrollOptions; // Scroll Options supported for scrollable cursors - UDWORD staticSensitivity; // Indicates if additions, deletions and updates can be detected - UWORD txnCapable; // Indicates if the data source supports transactions - UDWORD loginTimeout; // Number seconds to wait for a login request - } dbInf; - - // ODBC handles - HENV henv; // ODBC Environment handle - HDBC hdbc; // ODBC DB Connection handle - HSTMT hstmt; // ODBC Statement handle - - // ODBC Error Inf. - char sqlState[20]; - SDWORD nativeError; - char errorMsg[SQL_MAX_MESSAGE_LENGTH]; - SWORD cbErrorMsg; - char errorList[DB_MAX_ERROR_HISTORY][DB_MAX_ERROR_MSG_LEN]; - int DB_STATUS; - - //Error reporting mode - bool silent; - - // Inf. about logical data types VARCHAR, INTEGER, FLOAT and DATE. - // This inf. is obtained from the ODBC driver by use of the - // SQLGetTypeInfo() function. The key piece of inf. is the - // type name the data source uses for each logical data type. - // e.g. VARCHAR; Oracle calls it VARCHAR2. - SqlTypeInfo typeInfVarchar, typeInfInteger, typeInfFloat, typeInfDate; - - // Public member functions - wxDB(HENV &aHenv); - bool Open(char *Dsn, char *Uid, char *AuthStr); // Data Source Name, User ID, Password - void Close(void); - bool CommitTrans(void); - bool RollbackTrans(void); - bool DispAllErrors(HENV aHenv, HDBC aHdbc = SQL_NULL_HDBC, HSTMT aHstmt = SQL_NULL_HSTMT); - bool GetNextError(HENV aHenv, HDBC aHdbc = SQL_NULL_HDBC, HSTMT aHstmt = SQL_NULL_HSTMT); - void DispNextError(void); - bool CreateView(char *viewName, char *colList, char *pSqlStmt); - bool ExecSql(char *pSqlStmt); - bool Grant(int privileges, char *tableName, char *userList = "PUBLIC"); - int TranslateSqlState(char *SQLState); - bool Catalog(char *userID, char *fileName = "Catalog.txt"); - CcolInf *GetColumns(char *tableName[]); - char *GetDatabaseName(void) {return dbInf.dbmsName;} - char *GetDataSource(void) {return dsn;} - char *GetUsername(void) {return uid;} - char *GetPassword(void) {return authStr;} - bool IsOpen(void) {return dbIsOpen;} - HENV GetHENV(void) {return henv;} - HDBC GetHDBC(void) {return hdbc;} - HSTMT GetHSTMT(void) {return hstmt;} - bool TableExists(char *tableName); // Table name can refer to a table, view, alias or synonym - void LogError(char *errMsg, char *SQLState = 0) {logError(errMsg, SQLState);} - bool SqlLog(enum sqlLog state, char *filename = "sqllog.txt", bool append = FALSE); - bool WriteSqlLog(char *logMsg); - -}; // wxDB - -// This structure forms a node in a linked list. The linked list of "DbList" objects -// keeps track of allocated database connections. This allows the application to -// open more than one database connection through ODBC for multiple transaction support -// or for multiple database support. - -struct DbList -{ - DbList *PtrPrev; // Pointer to previous item in the list - char Dsn[SQL_MAX_DSN_LENGTH+1]; // Data Source Name - wxDB *PtrDb; // Pointer to the wxDB object - bool Free; // Is item free or in use? - DbList *PtrNext; // Pointer to next item in the list -}; - -// The following routines allow a user to get new database connections, free them -// for other code segments to use, or close all of them when the application has -// completed. - -wxDB* WXDLLEXPORT GetDbConnection(DbStuff *pDbStuff); -bool WXDLLEXPORT FreeDbConnection(wxDB *pDb); -void WXDLLEXPORT CloseDbConnections(void); -int WXDLLEXPORT NumberDbConnectionsInUse(void); - -// This routine allows you to query a driver manager -// for a list of available datasources. Call this routine -// the first time using SQL_FETCH_FIRST. Continue to call it -// using SQL_FETCH_NEXT until you've exhausted the list. -bool WXDLLEXPORT GetDataSource(HENV henv, char *Dsn, SWORD DsnMax, char *DsDesc, SWORD DsDescMax, - UWORD direction = SQL_FETCH_NEXT); - -#endif diff --git a/include/wx/dbtable.h b/include/wx/dbtable.h deleted file mode 100644 index 004f02a299..0000000000 --- a/include/wx/dbtable.h +++ /dev/null @@ -1,165 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: table.h -// Purpose: Declaration of the wxTable class. -// Author: Doug Card -// Modified by: -// Created: 9.96 -// RCS-ID: $Id$ -// Copyright: (c) 1996 Remstar International, Inc. -// Licence: wxWindows licence, plus: -// Notice: This class library and its intellectual design are free of charge for use, -// modification, enhancement, debugging under the following conditions: -// 1) These classes may only be used as part of the implementation of a -// wxWindows-based application -// 2) All enhancements and bug fixes are to be submitted back to the wxWindows -// user groups free of all charges for use with the wxWindows library. -// 3) These classes may not be distributed as part of any other class library, -// DLL, text (written or electronic), other than a complete distribution of -// the wxWindows GUI development toolkit. -/////////////////////////////////////////////////////////////////////////////// - -/* -// SYNOPSIS START -// SYNOPSIS STOP -*/ - -#ifndef TABLE_DOT_H -#define TABLE_DOT_H - -#ifdef __GNUG__ -#pragma interface "dbtable.h" -#endif - -#include "wx/db.h" - -const int ROWID_LEN = 24; // 18 is the max, 24 is in case it gets larger - -// The following class is used to define a column of a table. -// The wxTable constructor will dynamically allocate as many of -// these as there are columns in the table. The class derived -// from wxTable must initialize these column definitions in it's -// constructor. These column definitions provide inf. to the -// wxTable class which allows it to create a table in the data -// source, exchange data between the data source and the C++ -// object, and so on. - -class WXDLLEXPORT CcolDef -{ -public: - char ColName[DB_MAX_COLUMN_NAME_LEN+1]; // Column Name glt 4/19/97 added one for the null terminator - int DbDataType; // Logical Data Type; e.g. DB_DATA_TYPE_INTEGER - int SqlCtype; // C data type; e.g. SQL_C_LONG - void *PtrDataObj; // Address of the data object - int SzDataObj; // Size, in bytes, of the data object - bool KeyField; // TRUE if this column is part of the PRIMARY KEY to the table; Date fields should NOT be KeyFields. - bool Updateable; // Specifies whether this column is updateable - bool InsertAllowed; // Specifies whether this column should be included in an INSERT statement - bool DerivedCol; // Specifies whether this column is a derived value - SDWORD CbValue; // Internal use only!!! -}; // CcolDef - -// This structure is used when creating secondary indexes. -class WXDLLEXPORT CidxDef -{ -public: - char ColName[DB_MAX_COLUMN_NAME_LEN+1]; // Column Name glt 4/19/97 added one for the null terminator - bool Ascending; -}; // CidxDef - -class WXDLLEXPORT wxTable -{ -private: - - // Private member variables - int currCursorNo; - - // Private member functions - bool bindInsertParams(void); - bool bindUpdateParams(void); - bool bindCols(HSTMT cursor); - bool getRec(UWORD fetchType); - bool execDelete(char *pSqlStmt); - bool execUpdate(char *pSqlStmt); - bool query(int queryType, bool forUpdate, bool distinct, char *pSqlStmt = 0); - -public: - - // Pointer to the database object this table belongs to - wxDB *pDb; - - // ODBC Handles - HENV henv; // ODBC Environment handle - HDBC hdbc; // ODBC DB Connection handle - HSTMT hstmt; // ODBC Statement handle -// HSTMT c0, c1, c2, c3, c4, c5; // Cursors 0 through 5 - HSTMT c0, c1, c2; // Limited to Cursors 0 through 2 for now - HSTMT hstmtInsert; // ODBC Statement handle used specifically for inserts - HSTMT hstmtDelete; // ODBC Statement handle used specifically for deletes - HSTMT hstmtUpdate; // ODBC Statement handle used specifically for updates - HSTMT hstmtCount; // ODBC Statement handle used specifically for COUNT(*) - - // Table Inf. - char tableName[DB_MAX_TABLE_NAME_LEN+1]; // Table name - char queryTableName[DB_MAX_TABLE_NAME_LEN+1]; // Query Table Name - int noCols; // # of columns in the table - - // Column Definitions - CcolDef *colDefs; // Array of CcolDef structures - - // Where, Order By and From clauses - char *where; // Standard SQL where clause, minus the word WHERE - char *orderBy; // Standard SQL order by clause, minus the ORDER BY - char *from; // Allows for joins in a Ctable::Query(). Format: ",tbl,tbl..." - - // Flags - bool selectForUpdate; - - // Public member functions - wxTable(wxDB *pwxDB, const char *tblName, const int nCols, const char *qryTblName = 0); - virtual ~wxTable(); - bool Open(void); - bool CreateTable(void); - bool CreateIndex(char * idxName, bool unique, int noIdxCols, CidxDef *pIdxDefs); - bool CloseCursor(HSTMT cursor); - int Insert(void); - bool Update(void); - bool Update(char *pSqlStmt); - bool UpdateWhere(char *pWhereClause); - bool Delete(void); - bool DeleteWhere(char *pWhereClause); - bool DeleteMatching(void); - virtual bool Query(bool forUpdate = FALSE, bool distinct = FALSE); - bool QueryBySqlStmt(char *pSqlStmt); - bool QueryMatching(bool forUpdate = FALSE, bool distinct = FALSE); - bool QueryOnKeyFields(bool forUpdate = FALSE, bool distinct = FALSE); - bool GetNext(void) { return(getRec(SQL_FETCH_NEXT)); } - bool operator++(int) { return(getRec(SQL_FETCH_NEXT)); } -#ifndef FWD_ONLY_CURSORS - bool GetPrev(void) { return(getRec(SQL_FETCH_PRIOR)); } - bool operator--(int) { return(getRec(SQL_FETCH_PRIOR)); } - bool GetFirst(void) { return(getRec(SQL_FETCH_FIRST)); } - bool GetLast(void) { return(getRec(SQL_FETCH_LAST)); } -#endif - bool IsCursorClosedOnCommit(void); - bool IsColNull(int colNo); - UWORD GetRowNum(void); - void GetSelectStmt(char *pSqlStmt, int typeOfSelect, bool distinct); - void GetDeleteStmt(char *pSqlStmt, int typeOfDel, char *pWhereClause = 0); - void GetUpdateStmt(char *pSqlStmt, int typeOfUpd, char *pWhereClause = 0); - void GetWhereClause(char *pWhereClause, int typeOfWhere, char *qualTableName = 0); - bool CanSelectForUpdate(void); - bool CanUpdByROWID(void); - void ClearMemberVars(void); - bool SetQueryTimeout(UDWORD nSeconds); - void SetColDefs (int index, char *fieldName, int dataType, void *pData, int cType, - int size, bool keyField = FALSE, bool upd = TRUE, - bool insAllow = TRUE, bool derivedCol = FALSE); - bool SetCursor(int cursorNo = DB_CURSOR0); - int GetCursor(void) { return(currCursorNo); } - ULONG Count(void); - int DB_STATUS(void) { return(pDb->DB_STATUS); } - bool Refresh(void); - -}; // wxTable - -#endif diff --git a/include/wx/dc.h b/include/wx/dc.h deleted file mode 100644 index 2cf32f30d2..0000000000 --- a/include/wx/dc.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef _WX_DC_H_BASE_ -#define _WX_DC_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/dc.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/dc.h" -#elif defined(__WXGTK__) -#include "wx/gtk/dc.h" -#elif defined(__WXQT__) -#include "wx/qt/dc.h" -#elif defined(__WXMAC__) -#include "wx/mac/dc.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/dc.h" -#endif - -#endif - // _WX_DC_H_BASE_ diff --git a/include/wx/dcclient.h b/include/wx/dcclient.h deleted file mode 100644 index 557e2f4dc2..0000000000 --- a/include/wx/dcclient.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef _WX_DCCLIENT_H_BASE_ -#define _WX_DCCLIENT_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/dcclient.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/dcclient.h" -#elif defined(__WXGTK__) -#include "wx/gtk/dcclient.h" -#elif defined(__WXQT__) -#include "wx/qt/dcclient.h" -#elif defined(__WXMAC__) -#include "wx/mac/dcclient.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/dcclient.h" -#endif - -#endif - // _WX_DCCLIENT_H_BASE_ diff --git a/include/wx/dcmemory.h b/include/wx/dcmemory.h deleted file mode 100644 index 84a814c4d6..0000000000 --- a/include/wx/dcmemory.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef _WX_DCMEMORY_H_BASE_ -#define _WX_DCMEMORY_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/dcmemory.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/dcmemory.h" -#elif defined(__WXGTK__) -#include "wx/gtk/dcmemory.h" -#elif defined(__WXQT__) -#include "wx/qt/dcmemory.h" -#elif defined(__WXMAC__) -#include "wx/mac/dcmemory.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/dcmemory.h" -#endif - -#endif - // _WX_DCMEMORY_H_BASE_ diff --git a/include/wx/dcprint.h b/include/wx/dcprint.h deleted file mode 100644 index 532323e9d2..0000000000 --- a/include/wx/dcprint.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef _WX_DCPRINT_H_BASE_ -#define _WX_DCPRINT_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/dcprint.h" -#endif - -#endif - // _WX_DCPRINT_H_BASE_ diff --git a/include/wx/dcps.h b/include/wx/dcps.h deleted file mode 100644 index 6c146675cb..0000000000 --- a/include/wx/dcps.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef _WX_DCPS_H_BASE_ -#define _WX_DCPS_H_BASE_ - -#include "wx/generic/dcpsg.h" - -#endif - diff --git a/include/wx/dcscreen.h b/include/wx/dcscreen.h deleted file mode 100644 index bd35719499..0000000000 --- a/include/wx/dcscreen.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef _WX_DCSCREEN_H_BASE_ -#define _WX_DCSCREEN_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/dcscreen.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/dcscreen.h" -#elif defined(__WXGTK__) -#include "wx/gtk/dcscreen.h" -#elif defined(__WXQT__) -#include "wx/qt/dcscreen.h" -#elif defined(__WXMAC__) -#include "wx/mac/dcscreen.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/dcscreen.h" -#endif - -#endif - // _WX_DCSCREEN_H_BASE_ diff --git a/include/wx/dde.h b/include/wx/dde.h deleted file mode 100644 index 908fb09388..0000000000 --- a/include/wx/dde.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef _WX_DDE_H_BASE_ -#define _WX_DDE_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/dde.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/dde.h" -#elif defined(__WXGTK__) -#include "wx/gtk/dde.h" -#elif defined(__WXQT__) -#include "wx/qt/dde.h" -#elif defined(__WXMAC__) -#include "wx/mac/dde.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/dde.h" -#endif - -#endif - // _WX_DDE_H_BASE_ diff --git a/include/wx/debug.h b/include/wx/debug.h deleted file mode 100644 index ca8a8989b9..0000000000 --- a/include/wx/debug.h +++ /dev/null @@ -1,118 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: debug.h -// Purpose: Misc debug functions and macros -// Author: Vadim Zeitlin -// Modified by: -// Created: 29/01/98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_DEBUG_H_ -#define _WX_DEBUG_H_ - -#include - -// ---------------------------------------------------------------------------- -/** - @name Debugging macros - - All debugging macros rely on ASSERT() which in turn calls user-defined - OnAssert() function. To keep things simple, it's called even when the - expression is TRUE (i.e. everything is ok) and by default does nothing: just - returns the same value back. But if you redefine it to do something more sexy - (popping up a message box in your favourite GUI, sending you e-mail or - whatever) it will affect all ASSERTs, FAILs and CHECKs in your code. -
-
- Warning: if you don't like advices on programming style, don't read - further! ;-) -
-
- Extensive use of these macros is recommended! Remember that ASSERTs are - disabled in final (without __WXDEBUG__ defined) build, so they add strictly - nothing to your program's code. On the other hand, CHECK macros do stay - even in release builds, but in general are not much of a burden, while - a judicious use of them might increase your program's stability. - - @memo Debugging macros (replacement for standard assert()) and more. - */ -// ---------------------------------------------------------------------------- -//@{ - -/** @name Macros which are completely disabled in 'release' mode */ -//@{ -#ifdef __WXDEBUG__ - /** - this function may be redefined to do something non trivial and is called - whenever one of debugging macros fails (i.e. condition is false in an - assertion) - @param szFile and nLine - file name and line number of the ASSERT - szMsg - optional message explaining the reason - */ - void WXDLLEXPORT wxOnAssert(const char *szFile, int nLine, const char *szMsg = (const char *) NULL); - - /// generic assert macro - #define wxASSERT(cond) if ( !(cond) ) wxOnAssert(__FILE__, __LINE__) - -#if 0 // defined(__BORLANDC__) && defined(__WIN16__) - // Too much text, so make wxASSERT_MSG the same as wxASSERT, - // thus removing the text from the program. - #define wxASSERT_MSG(x, m) if ( !(x) ) wxOnAssert(__FILE__, __LINE__) -#else - /// assert with additional message explaining it's cause - #define wxASSERT_MSG(x, m) if ( !(x) ) wxOnAssert(__FILE__, __LINE__, m) -#endif - -#else - // nothing to do in release modes (hopefully at this moment there are - // no more bugs ;-) - #define wxASSERT(cond) - #define wxASSERT_MSG(x, m) -#endif //__WXDEBUG__ - - /// special form of assert: always triggers it (in debug mode) -#define wxFAIL wxASSERT(wxFalse) - -#if 0 // defined(__BORLANDC__) && defined(__WIN16__) - // Too much text, so make wxFAIL_MSG the same as wxFAIL, - // thus removing the text from the program. -#define wxFAIL_MSG(msg) wxASSERT(wxFalse) -#else - /// FAIL with some message -#define wxFAIL_MSG(msg) wxASSERT_MSG(wxFalse, msg) -#endif -//@} - -// NB: these macros work also in release mode! - -/** - These macros must be used only in invalid situation: for example, an - invalid parameter (NULL pointer) is passed to a function. Instead of - dereferencing it and causing core dump the function might try using - CHECK( p != NULL ) or CHECK( p != NULL, return LogError("p is NULL!!") ) - - @name Macros which remain even in 'release' mode -*/ -//@{ - /// check that expression is true, "return" if not (also FAILs in debug mode) -#define wxCHECK(x, rc) if (!(x)) {wxFAIL; return rc; } - /// as wxCHECK but with a message explaining why we fail -#define wxCHECK_MSG(x, rc, msg) if (!(x)) {wxFAIL_MSG(msg); return rc; } - /// check that expression is true, perform op if not -#define wxCHECK2(x, op) if (!(x)) {wxFAIL; op; } - /// as wxCHECK2 but with a message explaining why we fail -#define wxCHECK2_MSG(x, op, msg) if (!(x)) {wxFAIL_MSG(msg); op; } - /// special form of wxCHECK2: as wxCHECK, but for use in void functions - // NB: there is only one form (with msg parameter) and it's intentional: - // there is no other way to tell the caller what exactly went wrong - // from the void function (of course, the function shouldn't be void - // to begin with...) -#define wxCHECK_RET(x, msg) if (!(x)) {wxFAIL_MSG(msg); return; } -//@} - -//@} - -#endif // _WX_DEBUG_H_ - diff --git a/include/wx/defs.h b/include/wx/defs.h deleted file mode 100644 index 55a54645ef..0000000000 --- a/include/wx/defs.h +++ /dev/null @@ -1,1074 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: defs.h -// Purpose: Declarations/definitions common to all wx source files -// Author: Julian Smart and others -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_DEFS_H_ -#define _WX_DEFS_H_ - -#ifdef __GNUG__ -#pragma interface "defs.h" -#endif - -#include - -#include "wx/setup.h" -#include "wx/version.h" - -// Helps SGI compilation, apparently -#if defined(__SGI__) -#if defined(__GNUG__) -#define __need_wchar_t -#else -/* Note I use the term __SGI_CC__ for both cc and CC, its not a good idea to - * mix gcc and cc/CC, the name mangling is different */ -#define __SGI_CC__ -#endif -#endif - -#if defined(sun) || defined(__SUN__) -# if !defined(__GNUG__) -# ifndef __SUNCC__ -# define __SUNCC__ -# endif -# endif -#endif - -// suppress some Visual C++ warnings -#ifdef _MSC_VER -# pragma warning(disable:4244) // cobversion from double to float -# pragma warning(disable:4100) // unreferenced formal parameter -#endif - -// suppress some Salford C++ warnings -#ifdef __SALFORDC__ -# pragma suppress 353 // Possible nested comments -# pragma suppress 593 // Define not used -# pragma suppress 61 // enum has no name (doesn't suppress!) -# pragma suppress 106 // unnamed, unused parameter -# pragma suppress 571 // Virtual function hiding -#endif - -////////////////////////////////////////////////////////////////////////////////// -// Currently Only MS-Windows/NT, XView and Motif are supported -// -#if defined(__HPUX__) && !defined(__WXMOTIF__) -# define __WXMOTIF__ -#endif -#if defined(__WXMOTIF__) -# define __X__ -#endif - -#ifdef __WXMSW__ -// wxWindows checks for WIN32, not __WIN32__ -#if ((defined(WIN32) || defined(__NT__)) && !defined(__WIN32__) && !defined(__WXSTUBS__)) -#define __WIN32__ -#endif - -#ifndef __WIN32__ -#define __WIN16__ -#endif - -#if !defined(__WIN95__) && (WINVER >= 0x0400) -#define __WIN95__ -#endif - -#if defined(TWIN32) && !defined(__TWIN32__) -#define __TWIN32__ -#endif - -#endif // wxMSW - -// Make sure the environment is set correctly -#if defined(__WXMSW__) && defined(__X__) -# error "Target can't be both X and Windows" -#elif !defined(__WXMOTIF__) && !defined(__WXMSW__) && !defined(__WXGTK__) && \ - !defined(__WXMAC__) && !defined(__X__) && !defined(__WXQT__) && !defined(__WXSTUBS__) -#error "No Target! Use -D[__WXMOTIF__|__WXGTK__|__WXMSW__|__WXMAC__|__WXQT__|__WXSTUBS__]" -#endif - -#if defined(__WXMOTIF__) || defined(__WXGTK__) || defined(__WXQT__) || defined(__WXSTUBS__) - -// Bool is now obsolete, use bool instead -// typedef int Bool; - -#ifndef TRUE -# define TRUE 1 -# define FALSE 0 -# define Bool_DEFINED -#endif - -#elif defined(__WXMSW__) - -#ifndef TRUE -# define TRUE 1 -# define FALSE 0 -#endif - -#endif - -// VC++ 4.0 is 1000. - -// Add more tests here for compilers that don't already define bool. -#if defined( __MWERKS__ ) - #if (__MWERKS__ < 0x1000) || !__option(bool) - typedef unsigned int bool; - #endif -#elif defined(__SC__) - typedef unsigned int bool; -#elif defined(__SALFORDC__) - typedef unsigned int bool; -#elif defined(_MSC_VER) && (_MSC_VER <= 1000) - typedef unsigned int bool; -#elif defined(_MSC_VER) && (_MSC_VER == 1020) - #define bool unsigned int -#elif defined(__BORLANDC__) && (__BORLANDC__ < 0x500) - typedef unsigned int bool; -#elif defined(__WATCOMC__) - typedef unsigned int bool; -#elif defined(__SUNCC__) - #ifdef __SUNPRO_CC - // starting from version 5.0 Sun CC understands 'bool' - #if __SUNPRO_CC <= 0x0420 - // If we use int, we get identically overloaded functions in config.cpp - typedef unsigned char bool; - #endif // Sun CC version - #else - #error "Unknown compiler: only Sun's CC and gcc are currently reckognized." - #endif // Sun CC -#endif - -#if ( defined(_MSC_VER) && (_MSC_VER <= 800) ) || defined(__GNUWIN32__) || (defined(__BORLANDC__) && defined(__WIN16__)) || defined(__SC__) || defined(__SALFORDC__) -// Not a good idea, because later system files (e.g. windows.h) -// may try to define it. Use wxByte instead. -// #define byte unsigned char -#endif - -typedef unsigned char wxByte; -typedef short int WXTYPE; -typedef int wxWindowID; - -// Macro to cut down on compiler warnings. -#if REMOVE_UNUSED_ARG -#define WXUNUSED(identifier) /* identifier */ -#else // stupid, broken compiler -#define WXUNUSED(identifier) identifier -#endif - -/* - * Making or using wxWindows as a Windows DLL - */ - -#ifdef __WXMSW__ - -#ifdef __BORLANDC__ - -# ifdef WXMAKINGDLL -# define WXDLLEXPORT __export -# define WXDLLEXPORT_DATA(type) type __export -# define WXDLLEXPORT_CTORFN __export -# elif defined(WXUSINGDLL) -# define WXDLLEXPORT __import -# define WXDLLEXPORT_DATA(type) type __import -# define WXDLLEXPORT_CTORFN -# else -# define WXDLLEXPORT -# define WXDLLEXPORT_DATA(type) type -# define WXDLLEXPORT_CTORFN -# endif - -#else - -# ifdef WXMAKINGDLL -# define WXDLLEXPORT __declspec( dllexport ) -# define WXDLLEXPORT_DATA(type) __declspec( dllexport ) type -# define WXDLLEXPORT_CTORFN // __declspec( dllexport ) -# elif defined(WXUSINGDLL) -# define WXDLLEXPORT __declspec( dllimport ) -# define WXDLLEXPORT_DATA(type) __declspec( dllimport ) type -# define WXDLLEXPORT_CTORFN -# else -# define WXDLLEXPORT -# define WXDLLEXPORT_DATA(type) type -# define WXDLLEXPORT_CTORFN -# endif - -#endif - -#else -// Non-Windows -# define WXDLLEXPORT -# define WXDLLEXPORT_DATA(type) type -# define WXDLLEXPORT_CTORFN -#endif - -// For ostream, istream ofstream -#if defined(__BORLANDC__) && defined( _RTLDLL ) -# define WXDLLIMPORT __import -#else -# define WXDLLIMPORT -#endif - -class WXDLLEXPORT wxObject; -class WXDLLEXPORT wxEvent; - - /** symbolic constant used by all Find()-like functions returning positive - integer on success as failure indicator */ -#define wxNOT_FOUND (-1) - -// ---------------------------------------------------------------------------- -// Error codes -// ---------------------------------------------------------------------------- - -#ifdef ERR_PARAM -#undef ERR_PARAM -#endif - -/// Standard error codes -enum ErrCode -{ - /// invalid parameter (in broad sense) - ERR_PARAM = (-4000), - /// no more data (iteration functions usually return this) - ERR_NODATA, - /// user cancelled the operation - ERR_CANCEL, - /// no error (the only non negative error code) - ERR_SUCCESS = 0 -}; - -// ---------------------------------------------------------------------------- -/** @name Very common macros */ -// ---------------------------------------------------------------------------- -//@{ -/// delete pointer if it is not NULL and NULL it afterwards -// (checking that it's !NULL before passing it to delete is just a -// a question of style, because delete will do it itself anyhow, but it might -// be considered as an error by some overzealous debugging implementations of -// the library, so we do it ourselves) -#if defined(__SGI_CC__) -// Okay this is bad styling, but the native SGI compiler is very picky, it -// wont let you compare/assign between a NULL (void *) and another pointer -// type. To be really clean we'd need to pass in another argument, the type -// of p. -// Also note the use of 0L, this would allow future possible 64bit support -// (as yet untested) by ensuring that we zero all the bits in a pointer -// (which is always the same length as a long (at least with the LP64 standard) -// --- offer aug 98 -#define wxDELETE(p) if ( (p) ) { delete (p); p = 0L; } -#else -#define wxDELETE(p) if ( (p) != NULL ) { delete p; p = NULL; } -#endif /* __SGI__CC__ */ - -// delete an array and NULL it (see comments above) -#if defined(__SGI_CC__) -// see above comment. -#define wxDELETEA(p) if ( (p) ) { delete [] (p); p = 0L; } -#else -#define wxDELETEA(p) if ( ((void *) (p)) != NULL ) { delete [] p; p = NULL; } -#endif /* __SGI__CC__ */ - -/// size of statically declared array -#define WXSIZEOF(array) (sizeof(array)/sizeof(array[0])) - -// Use of these suppresses some compiler warnings -WXDLLEXPORT_DATA(extern const bool) wxTrue; -WXDLLEXPORT_DATA(extern const bool) wxFalse; - -// ---------------------------------------------------------------------------- -// compiler and OS identification -// ---------------------------------------------------------------------------- - -// OS -#if defined(__HPUX__) || defined(____SVR4____) || defined(__LINUX__) || defined(__sgi ) || defined(__unix__) - #ifndef __UNIX__ - #define __UNIX__ - #endif -#endif - -#ifndef __UNIX__ // Windows - #if defined(_MSC_VER) - #define __VISUALC__ - #elif defined(__BCPLUSPLUS__) && !defined(__BORLANDC__) - #define __BORLANDC__ - #elif defined(__WATCOMC__) - //#define __WATCOMC__ - #elif defined(__SC__) - #define __SYMANTECC__ - #endif // compiler - -#endif // OS - -// ---------------------------------------------------------------------------- -// compiler specific settings -// ---------------------------------------------------------------------------- - -// to allow compiling with warning level 4 under Microsoft Visual C++ some -// warnings just must be disabled -#ifdef __VISUALC__ - #pragma warning(disable: 4514) // unreferenced inline func has been removed -/* - you might be tempted to disable this one also: triggered by CHECK and FAIL - macros in debug.h, but it's, overall, is a rather useful one, so I leave it - and will try to find some way to disable this warning just for CHECK/FAIL. - Anyone? -*/ - #pragma warning(disable: 4127) // conditional expression is constant - -#endif // VC++ - -#if _MSC_VER > 1010 -#undef try -#undef except -#undef finally -#define except(x) catch(...) -#elif defined(__MWERKS__) -#undef try -#undef except -#undef finally -#define except(x) catch(...) -#endif - -// where should i put this? we need to make sure of this as it breaks -// the code. -#if !wxUSE_IOSTREAMH && defined(__WXDEBUG__) -#ifndef __MWERKS__ -#undef __WXDEBUG__ -#endif -#endif - -// Callback function type definition -typedef void (*wxFunction) (wxObject&, wxEvent&); - -/* - * Window style flags. - * Values are chosen so they can be |'ed in a bit list. - * Some styles are used across more than one group, - * so the values mustn't clash with others in the group. - * Otherwise, numbers can be reused across groups. - * - * From version 1.66: - * Window (cross-group) styles now take up the first half - * of the flag, and control-specific styles the - * second half. - * - */ - -/* - * Window (Frame/dialog/subwindow/panel item) style flags - */ -#define wxVSCROLL 0x80000000 -#define wxHSCROLL 0x40000000 -#define wxCAPTION 0x20000000 - -// New styles -#define wxDOUBLE_BORDER 0x10000000 -#define wxSUNKEN_BORDER 0x08000000 -#define wxRAISED_BORDER 0x04000000 -#define wxBORDER 0x02000000 -#define wxSIMPLE_BORDER 0x02000000 -#define wxSTATIC_BORDER 0x01000000 -#define wxTRANSPARENT_WINDOW 0x00100000 -#define wxNO_BORDER 0x00200000 - -#define wxUSER_COLOURS 0x00800000 - // Override CTL3D etc. control colour processing to - // allow own background colour - // OBSOLETE - use wxNO_3D instead -#define wxNO_3D 0x00800000 - // Override CTL3D or native 3D styles for children -#define wxCLIP_CHILDREN 0x00400000 - // Clip children when painting, which reduces flicker in - // e.g. frames and splitter windows, but can't be used in - // a panel where a static box must be 'transparent' (panel - // paints the background for it) - -// Add this style to a panel to get tab traversal working -// outside of dialogs. -#define wxTAB_TRAVERSAL 0x00080000 - -// Orientations -#define wxHORIZONTAL 0x01 -#define wxVERTICAL 0x02 -#define wxBOTH (wxVERTICAL|wxHORIZONTAL) -#define wxCENTER_FRAME 0x04 /* centering into frame rather than screen */ - -/* - * Frame/dialog style flags - */ -#define wxSTAY_ON_TOP 0x8000 -#define wxICONIZE 0x4000 -#define wxMINIMIZE wxICONIZE -#define wxMAXIMIZE 0x2000 -#define wxTHICK_FRAME 0x1000 -#define wxSYSTEM_MENU 0x0800 -#define wxMINIMIZE_BOX 0x0400 -#define wxMAXIMIZE_BOX 0x0200 -#define wxTINY_CAPTION_HORIZ 0x0100 -#define wxTINY_CAPTION_VERT 0x0080 -#define wxRESIZE_BOX wxMAXIMIZE_BOX -#define wxRESIZE_BORDER 0x0040 -#define wxDIALOG_MODAL 0x0020 -#define wxDIALOG_MODELESS 0x0000 - -#define wxDEFAULT_FRAME_STYLE (wxRESIZE_BORDER | wxMINIMIZE_BOX | wxMAXIMIZE_BOX | wxTHICK_FRAME | wxSYSTEM_MENU | wxCAPTION | wxCLIP_CHILDREN) - -#if WXWIN_COMPATIBILITY -#define wxDEFAULT_FRAME wxDEFAULT_FRAME_STYLE -#endif - -#define wxDEFAULT_DIALOG_STYLE (wxSYSTEM_MENU|wxCAPTION|wxTHICK_FRAME) - -/* - * Subwindow style flags - */ -#define wxRETAINED 0x0001 -#define wxBACKINGSTORE wxRETAINED -// wxCanvas or wxPanel can optionally have a thick frame under MS Windows. -// #define wxTHICK_FRAME 0x1000 - -/* - * wxToolBar style flags - */ - -#define wxTB_3DBUTTONS 0x8000 -#define wxTB_HORIZONTAL 0x0002 -#define wxTB_VERTICAL 0x0004 -// Flatbar/Coolbar under Win98 -#define wxTB_FLAT 0x0008 - -/* - * Apply to all panel items - */ - -#define wxCOLOURED 0x0800 -// Alignment for panel item labels: replaces characters with zeros -// when creating label, so spaces can be included in string for alignment. -#define wxFIXED_LENGTH 0x0400 -#define wxALIGN_LEFT 0x0000 -#define wxALIGN_CENTER 0x0100 -#define wxALIGN_CENTRE 0x0100 -#define wxALIGN_RIGHT 0x0200 - -/* - * Styles for wxListBox - */ - -#define wxLB_SORT 0x0010 -#define wxLB_SINGLE 0x0020 -#define wxLB_MULTIPLE 0x0040 -#define wxLB_EXTENDED 0x0080 -// wxLB_OWNERDRAW is Windows-only -#define wxLB_OWNERDRAW 0x0100 -#define wxLB_NEEDED_SB 0x0200 -#define wxLB_ALWAYS_SB 0x0400 -#define wxLB_HSCROLL wxHSCROLL - -/* - * wxTextCtrl style flags - */ -#define wxPROCESS_ENTER 0x0004 -#define wxPASSWORD 0x0008 -#define wxTE_PROCESS_ENTER wxPROCESS_ENTER -#define wxTE_PASSWORD wxPASSWORD -#define wxTE_READONLY 0x0010 -#define wxTE_MULTILINE 0x0020 -#define wxTE_PROCESS_TAB 0x0040 - -/* - * wxComboBox style flags - */ -#define wxCB_SIMPLE 0x0004 -#define wxCB_SORT 0x0008 -#define wxCB_READONLY 0x0010 -#define wxCB_DROPDOWN 0x0020 - -/* - * wxRadioBox/wxRadioButton style flags - */ - -// New, more intuitive names to specify majorDim argument - -// Same as wxRA_HORIZONTAL -#define wxRA_SPECIFY_COLS 0x0001 -// Same as wxRA_VERTICAL -#define wxRA_SPECIFY_ROWS 0x0002 - -// Old names for compatibility -#define wxRA_HORIZONTAL wxHORIZONTAL -#define wxRA_VERTICAL wxVERTICAL -#define wxRB_GROUP 0x0004 - -/* - * wxGauge flags - */ -#define wxGA_PROGRESSBAR 0x0004 -#define wxGA_HORIZONTAL wxHORIZONTAL -#define wxGA_VERTICAL wxVERTICAL - -/* - * wxSlider flags - */ - -#define wxSL_HORIZONTAL wxHORIZONTAL -#define wxSL_VERTICAL wxVERTICAL -// The next one is obsolete - use scroll events instead -#define wxSL_NOTIFY_DRAG 0x0000 -#define wxSL_AUTOTICKS 0x0008 -// #define wxSL_MANUALTICKS 0x0010 -#define wxSL_LABELS 0x0020 -#define wxSL_LEFT 0x0040 -#define wxSL_TOP 0x0080 -#define wxSL_RIGHT 0x0100 -#define wxSL_BOTTOM 0x0200 -#define wxSL_BOTH 0x0400 -#define wxSL_SELRANGE 0x0800 - -/* - * wxScrollBar flags - */ - -#define wxSB_HORIZONTAL wxHORIZONTAL -#define wxSB_VERTICAL wxVERTICAL - -/* - * wxButton flags - */ - -#define wxBU_AUTODRAW 0x0004 -#define wxBU_NOAUTODRAW 0x0000 - -/* - * wxTreeCtrl flags - */ - -#define wxTR_HAS_BUTTONS 0x0004 -#define wxTR_EDIT_LABELS 0x0008 -#define wxTR_LINES_AT_ROOT 0x0010 - -/* - * wxListCtrl flags - */ - -#define wxLC_ICON 0x0004 -#define wxLC_SMALL_ICON 0x0008 -#define wxLC_LIST 0x0010 -#define wxLC_REPORT 0x0020 -#define wxLC_ALIGN_TOP 0x0040 -#define wxLC_ALIGN_LEFT 0x0080 -#define wxLC_AUTOARRANGE 0x0100 -#define wxLC_USER_TEXT 0x0200 -#define wxLC_EDIT_LABELS 0x0400 -#define wxLC_NO_HEADER 0x0800 -#define wxLC_NO_SORT_HEADER 0x1000 -#define wxLC_SINGLE_SEL 0x2000 -#define wxLC_SORT_ASCENDING 0x4000 -#define wxLC_SORT_DESCENDING 0x8000 - -#define wxLC_MASK_TYPE (wxLC_ICON | wxLC_SMALL_ICON | wxLC_LIST | wxLC_REPORT) -#define wxLC_MASK_ALIGN (wxLC_ALIGN_TOP | wxLC_ALIGN_LEFT) -#define wxLC_MASK_SORT (wxLC_SORT_ASCENDING | wxLC_SORT_DESCENDING) - -// Omitted because (a) too much detail (b) not enough style flags -// #define wxLC_NO_SCROLL -// #define wxLC_NO_LABEL_WRAP -// #define wxLC_OWNERDRAW_FIXED -// #define wxLC_SHOW_SEL_ALWAYS - -/* - * wxSpinButton flags - */ - -#define wxSP_VERTICAL 0x0004 -#define wxSP_HORIZONTAL 0x0008 -#define wxSP_ARROW_KEYS 0x0010 -#define wxSP_WRAP 0x0020 - -/* - * wxSplitterWindow flags - */ - -#define wxSP_NOBORDER 0x0000 -#define wxSP_3D 0x0004 -#define wxSP_BORDER 0x0008 - -/* - * wxFrame extra flags - */ - -// No title on taskbar -#define wxFRAME_TOOL_WINDOW 0x0004 - -/* - * wxTabCtrl flags - */ - -#define wxTAB_MULTILINE 0x0000 -#define wxTAB_RIGHTJUSTIFY 0x0004 -#define wxTAB_FIXEDWIDTH 0x0008 -#define wxTAB_OWNERDRAW 0x0010 - -// Sorry, I changed my mind about these names... -#define wxTC_MULTILINE 0x0000 -#define wxTC_RIGHTJUSTIFY 0x0004 -#define wxTC_FIXEDWIDTH 0x0008 -#define wxTC_OWNERDRAW 0x0010 - -/* - * wxStatusBar95 flags - */ - -#define wxST_SIZEGRIP 0x0002 - -/* - * GDI descriptions - */ - -enum { -// Text font families - wxDEFAULT = 70, - wxDECORATIVE, - wxROMAN, - wxSCRIPT, - wxSWISS, - wxMODERN, - wxTELETYPE, /* @@@@ */ - -// Proportional or Fixed width fonts (not yet used) - wxVARIABLE = 80, - wxFIXED, - - wxNORMAL = 90, - wxLIGHT, - wxBOLD, -// Also wxNORMAL for normal (non-italic text) - wxITALIC, - wxSLANT, - -// Pen styles - wxSOLID = 100, - wxDOT, - wxLONG_DASH, - wxSHORT_DASH, - wxDOT_DASH, - wxUSER_DASH, - - wxTRANSPARENT, - -// Brush & Pen Stippling. Note that a stippled pen cannot be dashed!! -// Note also that stippling a Pen IS meaningfull, because a Line is -// drawn with a Pen, and without any Brush -- and it can be stippled. - wxSTIPPLE = 110, - wxBDIAGONAL_HATCH, - wxCROSSDIAG_HATCH, - wxFDIAGONAL_HATCH, - wxCROSS_HATCH, - wxHORIZONTAL_HATCH, - wxVERTICAL_HATCH, -#define IS_HATCH(s) ((s)>=wxBDIAGONAL_HATCH && (s)<=wxVERTICAL_HATCH) - - wxJOIN_BEVEL = 120, - wxJOIN_MITER, - wxJOIN_ROUND, - - wxCAP_ROUND = 130, - wxCAP_PROJECTING, - wxCAP_BUTT -}; - - -// Logical ops -typedef enum -{ - wxCLEAR, // 0 - wxXOR, // src XOR dst - wxINVERT, // NOT dst - wxOR_REVERSE, // src OR (NOT dst) - wxAND_REVERSE,// src AND (NOT dst) - wxCOPY, // src - wxAND, // src AND dst - wxAND_INVERT, // (NOT src) AND dst - wxNO_OP, // dst - wxNOR, // (NOT src) AND (NOT dst) - wxEQUIV, // (NOT src) XOR dst - wxSRC_INVERT, // (NOT src) - wxOR_INVERT, // (NOT src) OR dst - wxNAND, // (NOT src) OR (NOT dst) - wxOR, // src OR dst - wxSET, // 1 - wxSRC_OR, // source _bitmap_ OR destination - wxSRC_AND // source _bitmap_ AND destination -} form_ops_t; - -// Flood styles -#define wxFLOOD_SURFACE 1 -#define wxFLOOD_BORDER 2 - -// Polygon filling mode -#define wxODDEVEN_RULE 1 -#define wxWINDING_RULE 2 - -// ToolPanel in wxFrame -#define wxTOOL_TOP 1 -#define wxTOOL_BOTTOM 2 -#define wxTOOL_LEFT 3 -#define wxTOOL_RIGHT 4 - -// Dialog specifiers/return values - -#define wxOK 0x0001 -#define wxYES_NO 0x0002 -#define wxCANCEL 0x0004 -#define wxYES 0x0008 -#define wxNO 0x0010 - -#define wxICON_EXCLAMATION 0x0020 -#define wxICON_HAND 0x0040 -#define wxICON_QUESTION 0x0080 -#define wxICON_INFORMATION 0x0100 - -#define wxICON_STOP wxICON_HAND -#define wxICON_ASTERISK wxICON_INFORMATION -#define wxICON_MASK (0x0020|0x0040|0x0080|0x0100) - -#define wxCENTRE 0x0200 -#define wxCENTER wxCENTRE - -// Possible SetSize flags - -// Use internally-calculated width if -1 -#define wxSIZE_AUTO_WIDTH 0x0001 -// Use internally-calculated height if -1 -#define wxSIZE_AUTO_HEIGHT 0x0002 -// Use internally-calculated width and height if each is -1 -#define wxSIZE_AUTO (wxSIZE_AUTO_WIDTH|wxSIZE_AUTO_HEIGHT) -// Ignore missing (-1) dimensions (use existing). -// For readability only: test for wxSIZE_AUTO_WIDTH/HEIGHT in code. -#define wxSIZE_USE_EXISTING 0x0000 -// Allow -1 as a valid position -#define wxSIZE_ALLOW_MINUS_ONE 0x0004 -// Don't do parent client adjustments (for implementation only) -#define wxSIZE_NO_ADJUSTMENTS 0x0008 - -#ifndef __WXGTK__ - -enum wxDataFormat -{ - wxDF_INVALID = 0, - wxDF_TEXT = 1, /* CF_TEXT */ - wxDF_BITMAP = 2, /* CF_BITMAP */ - wxDF_METAFILE = 3, /* CF_METAFILEPICT */ - wxDF_SYLK = 4, - wxDF_DIF = 5, - wxDF_TIFF = 6, - wxDF_OEMTEXT = 7, /* CF_OEMTEXT */ - wxDF_DIB = 8, /* CF_DIB */ - wxDF_PALETTE = 9, - wxDF_PENDATA = 10, - wxDF_RIFF = 11, - wxDF_WAVE = 12, - wxDF_UNICODETEXT = 13, - wxDF_ENHMETAFILE = 14, - wxDF_FILENAME = 15, /* CF_HDROP */ - wxDF_LOCALE = 16, - wxDF_PRIVATE = 20 -}; - -#endif - -/* Virtual keycodes */ - -enum wxKeyCode -{ - WXK_BACK = 8, - WXK_TAB = 9, - WXK_RETURN = 13, - WXK_ESCAPE = 27, - WXK_SPACE = 32, - WXK_DELETE = 127, - - WXK_START = 300, - WXK_LBUTTON, - WXK_RBUTTON, - WXK_CANCEL, - WXK_MBUTTON, - WXK_CLEAR, - WXK_SHIFT, - WXK_CONTROL, - WXK_MENU, - WXK_PAUSE, - WXK_CAPITAL, - WXK_PRIOR, /* Page up */ - WXK_NEXT, /* Page down */ - WXK_END, - WXK_HOME, - WXK_LEFT, - WXK_UP, - WXK_RIGHT, - WXK_DOWN, - WXK_SELECT, - WXK_PRINT, - WXK_EXECUTE, - WXK_SNAPSHOT, - WXK_INSERT, - WXK_HELP, - WXK_NUMPAD0, - WXK_NUMPAD1, - WXK_NUMPAD2, - WXK_NUMPAD3, - WXK_NUMPAD4, - WXK_NUMPAD5, - WXK_NUMPAD6, - WXK_NUMPAD7, - WXK_NUMPAD8, - WXK_NUMPAD9, - WXK_MULTIPLY, - WXK_ADD, - WXK_SEPARATOR, - WXK_SUBTRACT, - WXK_DECIMAL, - WXK_DIVIDE, - WXK_F1, - WXK_F2, - WXK_F3, - WXK_F4, - WXK_F5, - WXK_F6, - WXK_F7, - WXK_F8, - WXK_F9, - WXK_F10, - WXK_F11, - WXK_F12, - WXK_F13, - WXK_F14, - WXK_F15, - WXK_F16, - WXK_F17, - WXK_F18, - WXK_F19, - WXK_F20, - WXK_F21, - WXK_F22, - WXK_F23, - WXK_F24, - WXK_NUMLOCK, - WXK_SCROLL, - WXK_PAGEUP, - WXK_PAGEDOWN -}; - -/* OS mnemonics -- Identify the running OS (useful for Windows) - * [Not all platforms are currently available or supported] */ -enum -{ - wxUNKNOWN_PLATFORM, - wxCURSES, /* Text-only CURSES */ - wxXVIEW_X, /* Sun's XView OpenLOOK toolkit */ - wxMOTIF_X, /* OSF Motif 1.x.x */ - wxCOSE_X, /* OSF Common Desktop Environment */ - wxNEXTSTEP, /* NeXTStep */ - wxMACINTOSH, /* Apple System 7 */ - wxGTK, /* GTK */ - wxQT, /* Qt */ - wxGEOS, /* GEOS */ - wxOS2_PM, /* OS/2 Workplace */ - wxWINDOWS, /* Windows or WfW */ - wxPENWINDOWS, /* Windows for Pen Computing */ - wxWINDOWS_NT, /* Windows NT */ - wxWIN32S, /* Windows 32S API */ - wxWIN95, /* Windows 95 */ - wxWIN386 /* Watcom 32-bit supervisor modus */ -}; - -/* Printing */ -#ifndef wxPORTRAIT -#define wxPORTRAIT 1 -#define wxLANDSCAPE 2 -#endif - -/* Standard menu identifiers */ -#define wxID_OPEN 5000 -#define wxID_CLOSE 5001 -#define wxID_NEW 5002 -#define wxID_SAVE 5003 -#define wxID_SAVEAS 5004 -#define wxID_REVERT 5005 -#define wxID_EXIT 5006 -#define wxID_UNDO 5007 -#define wxID_REDO 5008 -#define wxID_HELP 5009 -#define wxID_PRINT 5010 -#define wxID_PRINT_SETUP 5011 -#define wxID_PREVIEW 5012 -#define wxID_ABOUT 5013 -#define wxID_HELP_CONTENTS 5014 -#define wxID_HELP_COMMANDS 5015 -#define wxID_HELP_PROCEDURES 5016 -#define wxID_HELP_CONTEXT 5017 - -#define wxID_CUT 5030 -#define wxID_COPY 5031 -#define wxID_PASTE 5032 -#define wxID_CLEAR 5033 -#define wxID_FIND 5034 -#define wxID_DUPLICATE 5035 -#define wxID_SELECTALL 5036 - -#define wxID_FILE1 5050 -#define wxID_FILE2 5051 -#define wxID_FILE3 5052 -#define wxID_FILE4 5053 -#define wxID_FILE5 5054 -#define wxID_FILE6 5055 -#define wxID_FILE7 5056 -#define wxID_FILE8 5057 -#define wxID_FILE9 5058 - -#define wxID_OK 5100 -#define wxID_CANCEL 5101 -#define wxID_APPLY 5102 -#define wxID_YES 5103 -#define wxID_NO 5104 -#define wxID_STATIC 5105 - -#define wxID_HIGHEST 5999 - -/* Shortcut for easier dialog-unit-to-pixel conversion */ -#define wxDLG_UNIT(parent, pt) parent->ConvertDialogToPixels(pt) - -#ifdef __WXMSW__ -/* Stand-ins for Windows types, to avoid - * #including all of windows.h */ -typedef unsigned long WXHWND; -typedef unsigned long WXHANDLE; -typedef unsigned long WXHICON; -typedef unsigned long WXHFONT; -typedef unsigned long WXHMENU; -typedef unsigned long WXHPEN; -typedef unsigned long WXHBRUSH; -typedef unsigned long WXHPALETTE; -typedef unsigned long WXHCURSOR; -typedef unsigned long WXHRGN; -typedef unsigned long WXHACCEL; -typedef unsigned long WXHINSTANCE; -typedef unsigned long WXHBITMAP; -typedef unsigned long WXHIMAGELIST; -typedef unsigned long WXHGLOBAL; -typedef unsigned long WXHDC; -typedef unsigned int WXUINT; -typedef unsigned long WXDWORD; -typedef unsigned short WXWORD; -typedef unsigned int WXWPARAM; -typedef long WXLPARAM; -typedef unsigned long WXCOLORREF; -typedef void * WXRGNDATA; -typedef void * WXMSG; -typedef unsigned long WXHCONV; -typedef unsigned long WXHKEY; -typedef unsigned long WXHTREEITEM; -typedef void * WXDRAWITEMSTRUCT; -typedef void * WXMEASUREITEMSTRUCT; -typedef void * WXLPCREATESTRUCT; -#ifdef __GNUWIN32__ -typedef int (*WXFARPROC)(); -#elif defined(__WIN32__) -typedef int (__stdcall *WXFARPROC)(); -#else -typedef int (*WXFARPROC)(); -#endif - -#endif - -#ifdef __WXMOTIF__ -/* Stand-ins for X/Xt/Motif types */ -typedef void* WXWindow; -typedef void* WXWidget; -typedef void* WXAppContext; -typedef void* WXColormap; -typedef void WXDisplay; -typedef void WXEvent; -typedef void* WXCursor; -typedef void* WXPixmap; -typedef void* WXFontStructPtr; -typedef void* WXGC; -typedef void* WXRegion; -typedef void* WXFont; -typedef void* WXImage; -typedef void* WXCursor; -typedef void* WXFontList; -#endif - -#ifdef __WXGTK__ -/* Stand-ins for GLIB types */ -typedef int gint; -typedef unsigned guint; -typedef unsigned long gulong; -typedef void* gpointer; - -/* Stand-ins for GDK types */ -typedef gulong GdkAtom; -typedef struct _GdkColor GdkColor; -typedef struct _GdkColormap GdkColormap; -typedef struct _GdkFont GdkFont; -typedef struct _GdkGC GdkGC; -typedef struct _GdkWindow GdkWindow; -typedef struct _GdkWindow GdkBitmap; -typedef struct _GdkWindow GdkPixmap; -typedef struct _GdkCursor GdkCursor; -typedef struct _GdkRegion GdkRegion; - -/* Stand-ins for GTK types */ -typedef struct _GtkWidget GtkWidget; -typedef struct _GtkStyle GtkStyle; -typedef struct _GtkAdjustment GtkAdjustment; -typedef struct _GtkList GtkList; -typedef struct _GtkToolbar GtkToolbar; -typedef struct _GtkTooltips GtkTooltips; -typedef struct _GtkNotebook GtkNotebook; -typedef struct _GtkNotebookPage GtkNotebookPage; - -#endif - -// This is required because of clashing macros in windows.h, which may be -// included before or after wxWindows classes, and therefore must be -// disabled here before any significant wxWindows headers are included. -#ifdef __WXMSW__ -#ifdef GetClassInfo -#undef GetClassInfo -#endif - -#ifdef GetClassName -#undef GetClassName -#endif - -#ifdef DrawText -#undef DrawText -#endif - -#ifdef GetCharWidth -#undef GetCharWidth -#endif - -#ifdef StartDoc -#undef StartDoc -#endif - -#ifdef FindWindow -#undef FindWindow -#endif - -#ifdef FindResource -#undef FindResource -#endif -#endif - // __WXMSW__ - -#endif - // _WX_DEFS_H_ diff --git a/include/wx/dialog.h b/include/wx/dialog.h deleted file mode 100644 index 823d2d4573..0000000000 --- a/include/wx/dialog.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef _WX_DIALOG_H_BASE_ -#define _WX_DIALOG_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/dialog.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/dialog.h" -#elif defined(__WXGTK__) -#include "wx/gtk/dialog.h" -#elif defined(__WXQT__) -#include "wx/qt/dialog.h" -#elif defined(__WXMAC__) -#include "wx/mac/dialog.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/dialog.h" -#endif - -#endif - // _WX_DIALOG_H_BASE_ diff --git a/include/wx/dirdlg.h b/include/wx/dirdlg.h deleted file mode 100644 index f2d1dbbdf2..0000000000 --- a/include/wx/dirdlg.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef _WX_DIRDLG_H_BASE_ -#define _WX_DIRDLG_H_BASE_ - -#if defined(__WXMSW__) -#if defined(__WIN16__) || defined(__GNUWIN32__) || defined(__SALFORDC__) -#include "wx/generic/dirdlgg.h" -#else -#include "wx/msw/dirdlg.h" -#endif -#elif defined(__WXMOTIF__) -#include "wx/generic/dirdlgg.h" -#elif defined(__WXGTK__) -#include "wx/generic/dirdlgg.h" -#elif defined(__WXQT__) -#include "wx/qt/dirdlg.h" -#elif defined(__WXMAC__) -#include "wx/mac/dirdlg.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/dirdlg.h" -#endif - -#endif - // _WX_DIRDLG_H_BASE_ diff --git a/include/wx/dnd.h b/include/wx/dnd.h deleted file mode 100644 index dc69fe940d..0000000000 --- a/include/wx/dnd.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef _WX_DND_H_BASE_ -#define _WX_DND_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/ole/dropsrc.h" -#include "wx/msw/ole/droptgt.h" -#include "wx/msw/ole/dataobj.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/dnd.h" -#elif defined(__WXGTK__) -#include "wx/gtk/dnd.h" -#elif defined(__WXQT__) -#include "wx/qt/dnd.h" -#elif defined(__WXMAC__) -#include "wx/mac/dnd.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/dnd.h" -#endif - -#endif - // _WX_DND_H_BASE_ diff --git a/include/wx/docmdi.h b/include/wx/docmdi.h deleted file mode 100644 index 1fd76e1abe..0000000000 --- a/include/wx/docmdi.h +++ /dev/null @@ -1,83 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: docmdi.h -// Purpose: Frame classes for MDI document/view applications -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_DOCMDI_H_ -#define _WX_DOCMDI_H_ - -#ifdef __GNUG__ -#pragma interface "docmdi.h" -#endif - -#include "wx/docview.h" -#include "wx/mdi.h" - -/* - * Use this instead of wxMDIParentFrame - */ - -class WXDLLEXPORT wxDocMDIParentFrame: public wxMDIParentFrame -{ - DECLARE_CLASS(wxDocMDIParentFrame) - public: - wxDocMDIParentFrame(wxDocManager *manager, wxFrame *parent, wxWindowID id, - const wxString& title, const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = wxDEFAULT_FRAME_STYLE, const wxString& name = "frame"); - - // Extend event processing to search the document manager's event table - virtual bool ProcessEvent(wxEvent& event); - - wxDocManager *GetDocumentManager(void) const { return m_docManager; } - - void OnExit(wxCommandEvent& event); - void OnMRUFile(wxCommandEvent& event); - void OnCloseWindow(wxCloseEvent& event); - - protected: - wxDocManager *m_docManager; - - -DECLARE_EVENT_TABLE() -}; - -/* - * Use this instead of wxMDIChildFrame - */ - -class WXDLLEXPORT wxDocMDIChildFrame: public wxMDIChildFrame -{ - DECLARE_CLASS(wxDocMDIChildFrame) - - public: - wxDocMDIChildFrame(wxDocument *doc, wxView *view, wxMDIParentFrame *frame, wxWindowID id, - const wxString& title, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long type = wxDEFAULT_FRAME_STYLE, const wxString& name = "frame"); - ~wxDocMDIChildFrame(void); - - // Extend event processing to search the view's event table - virtual bool ProcessEvent(wxEvent& event); - - void OnActivate(wxActivateEvent& event); - void OnCloseWindow(wxCloseEvent& event); - - inline wxDocument *GetDocument(void) const { return m_childDocument; } - inline wxView *GetView(void) const { return m_childView; } - inline void SetDocument(wxDocument *doc) { m_childDocument = doc; } - inline void SetView(wxView *view) { m_childView = view; } - protected: - wxDocument* m_childDocument; - wxView* m_childView; - -DECLARE_EVENT_TABLE() - -}; - -#endif - // _WX_DOCMDI_H_ diff --git a/include/wx/docview.h b/include/wx/docview.h deleted file mode 100644 index ba1b413a12..0000000000 --- a/include/wx/docview.h +++ /dev/null @@ -1,553 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: docview.h -// Purpose: Doc/View classes -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_DOCH__ -#define _WX_DOCH__ - -#ifdef __GNUG__ -#pragma interface "docview.h" -#endif - -#include "wx/defs.h" -#include "wx/list.h" -#include "wx/cmndata.h" -#include "wx/string.h" - -#if wxUSE_PRINTING_ARCHITECTURE -#include "wx/print.h" -#endif - -class WXDLLEXPORT wxWindow; -class WXDLLEXPORT wxDocument; -class WXDLLEXPORT wxView; -class WXDLLEXPORT wxDocTemplate; -class WXDLLEXPORT wxDocManager; -class WXDLLEXPORT wxPrintInfo; -class WXDLLEXPORT wxCommand; -class WXDLLEXPORT wxCommandProcessor; -class WXDLLEXPORT wxFileHistory; -#if wxUSE_CONFIG -class WXDLLEXPORT wxConfigBase; -#endif - -#if wxUSE_IOSTREAMH -// N.B. BC++ doesn't have istream.h, ostream.h -# include -#else -# include -# include -# ifdef _MSC_VER - using namespace std; -# endif -#endif - -// Document manager flags -#define wxDOC_SDI 1 -#define wxDOC_MDI 2 -#define wxDOC_NEW 4 -#define wxDOC_SILENT 8 -#define wxDEFAULT_DOCMAN_FLAGS wxDOC_SDI - -// Document template flags -#define wxTEMPLATE_VISIBLE 1 -#define wxTEMPLATE_INVISIBLE 2 -#define wxDEFAULT_TEMPLATE_FLAGS wxTEMPLATE_VISIBLE - -#define wxMAX_FILE_HISTORY 9 - -class WXDLLEXPORT wxDocument : public wxEvtHandler -{ - DECLARE_ABSTRACT_CLASS(wxDocument) - public: - wxDocument(wxDocument *parent = (wxDocument *) NULL); - ~wxDocument(void); - - void SetFilename(const wxString& filename, bool notifyViews = FALSE); - inline wxString GetFilename(void) const { return m_documentFile; } - inline void SetTitle(const wxString& title) { m_documentTitle = title; }; - inline wxString GetTitle(void) const { return m_documentTitle; } - inline void SetDocumentName(const wxString& name) { m_documentTypeName = name; }; - inline wxString GetDocumentName(void) const { return m_documentTypeName; } - // Has the document been saved yet? - inline bool GetDocumentSaved(void) { return m_savedYet; } - inline void SetDocumentSaved(bool saved = TRUE) { m_savedYet = saved; } - - virtual bool Close(void); - virtual bool Save(void); - virtual bool SaveAs(void); - virtual bool Revert(void); - - virtual ostream& SaveObject(ostream& stream); - virtual istream& LoadObject(istream& stream); - - // Called by wxWindows - virtual bool OnSaveDocument(const wxString& filename); - virtual bool OnOpenDocument(const wxString& filename); - virtual bool OnNewDocument(void); - virtual bool OnCloseDocument(void); - - // Prompts for saving if about to close a modified document. - // Returns TRUE if ok to close the document (may have saved in the - // meantime, or set modified to FALSE) - virtual bool OnSaveModified(void); - - // Called by framework if created automatically by the - // default document manager: gives document a chance to - // initialise and (usually) create a view - virtual bool OnCreate(const wxString& path, long flags); - - // By default, creates a base wxCommandProcessor. - virtual wxCommandProcessor *OnCreateCommandProcessor(void); - virtual inline wxCommandProcessor *GetCommandProcessor(void) const { return m_commandProcessor; } - virtual inline void SetCommandProcessor(wxCommandProcessor *proc) { m_commandProcessor = proc; } - - // Called after a view is added or removed. - // The default implementation deletes the document if this - // is there are no more views. - virtual void OnChangedViewList(void); - - virtual bool DeleteContents(void); - - virtual bool Draw(wxDC&); - virtual inline bool IsModified(void) const { return m_documentModified; } - virtual inline void Modify(bool mod) { m_documentModified = mod; } - - virtual bool AddView(wxView *view); - virtual bool RemoveView(wxView *view); - inline wxList& GetViews(void) const { return (wxList&) m_documentViews; } - wxView *GetFirstView(void) const; - - virtual void UpdateAllViews(wxView *sender = (wxView *) NULL, wxObject *hint = (wxObject *) NULL); - - // Remove all views (because we're closing the document) - virtual bool DeleteAllViews(void); - - // Other stuff - virtual wxDocManager *GetDocumentManager(void) const; - virtual inline wxDocTemplate *GetDocumentTemplate(void) const { return m_documentTemplate; } - virtual inline void SetDocumentTemplate(wxDocTemplate *temp) { m_documentTemplate = temp; } - - // Get title, or filename if no title, else [unnamed] - virtual bool GetPrintableName(wxString& buf) const; - - // Returns a window that can be used as a parent for document-related - // dialogs. Override if necessary. - virtual wxWindow *GetDocumentWindow(void) const; - protected: - wxList m_documentViews; - wxString m_documentFile; - wxString m_documentTitle; - wxString m_documentTypeName; - wxDocTemplate* m_documentTemplate; - bool m_documentModified; - wxDocument* m_documentParent; - wxCommandProcessor* m_commandProcessor; - bool m_savedYet; -}; - -class WXDLLEXPORT wxView: public wxEvtHandler -{ - DECLARE_ABSTRACT_CLASS(wxView) - public: - wxView(wxDocument *doc = (wxDocument *) NULL); - ~wxView(void); - - inline wxDocument *GetDocument(void) const { return m_viewDocument; } - void SetDocument(wxDocument *doc); - - inline wxString GetViewName(void) const { return m_viewTypeName; } - void SetViewName(const wxString& name) { m_viewTypeName = name; }; - - inline wxFrame *GetFrame(void) const { return m_viewFrame ; } - inline void SetFrame(wxFrame *frame) { m_viewFrame = frame; } - - virtual void OnActivateView(bool activate, wxView *activeView, wxView *deactiveView); - virtual void OnDraw(wxDC *dc) = 0; - virtual void OnPrint(wxDC *dc, wxObject *info); - virtual void OnUpdate(wxView *sender, wxObject *hint = (wxObject *) NULL); - virtual void OnChangeFilename(void); - - // Called by framework if created automatically by the - // default document manager class: gives view a chance to - // initialise - virtual bool OnCreate(wxDocument *WXUNUSED(doc), long WXUNUSED(flags)) { return TRUE; }; - - // Checks if the view is the last one for the document; if so, - // asks user to confirm save data (if modified). If ok, - // deletes itself and returns TRUE. - virtual bool Close(bool deleteWindow = TRUE); - - // Override to do cleanup/veto close - virtual bool OnClose(bool deleteWindow); - // Defeat compiler warning - inline bool OnClose(void) { return wxEvtHandler::OnClose(); } - - // Extend event processing to search the document's event table - virtual bool ProcessEvent(wxEvent& event); - - // A view's window can call this to notify the view it is (in)active. - // The function then notifies the document manager. - virtual void Activate(bool activate); - - inline wxDocManager *GetDocumentManager(void) const { return m_viewDocument->GetDocumentManager(); } - -#if wxUSE_PRINTING_ARCHITECTURE - virtual wxPrintout *OnCreatePrintout(void); -#endif - - protected: - wxDocument* m_viewDocument; - wxString m_viewTypeName; - wxFrame* m_viewFrame; -}; - -// Represents user interface (and other) properties of documents and views -class WXDLLEXPORT wxDocTemplate: public wxObject -{ - DECLARE_CLASS(wxDocTemplate) - - friend class WXDLLEXPORT wxDocManager; - - public: - - // Associate document and view types. - // They're for identifying what view is associated with what - // template/document type - wxDocTemplate(wxDocManager *manager, const wxString& descr, const wxString& filter, const wxString& dir, - const wxString& ext, const wxString& docTypeName, const wxString& viewTypeName, - wxClassInfo *docClassInfo = (wxClassInfo *) NULL, wxClassInfo *viewClassInfo = (wxClassInfo *)NULL, - long flags = wxDEFAULT_TEMPLATE_FLAGS); - - ~wxDocTemplate(void); - - // By default, these two member functions dynamically creates document - // and view using dynamic instance construction. - // Override these if you need a different method of construction. - virtual wxDocument *CreateDocument(const wxString& path, long flags = 0); - virtual wxView *CreateView(wxDocument *doc, long flags = 0); - - inline wxString GetDefaultExtension(void) const { return m_defaultExt; }; - inline wxString GetDescription(void) const { return m_description; } - inline wxString GetDirectory(void) const { return m_directory; }; - inline wxDocManager *GetDocumentManager(void) const { return m_documentManager; } - inline void SetDocumentManager(wxDocManager *manager) { m_documentManager = manager; } - inline wxString GetFileFilter(void) const { return m_fileFilter; }; - inline long GetFlags(void) const { return m_flags; }; - virtual wxString GetViewName(void) const { return m_viewTypeName; } - virtual wxString GetDocumentName(void) const { return m_docTypeName; } - - inline void SetFileFilter(const wxString& filter) { m_fileFilter = filter; }; - inline void SetDirectory(const wxString& dir) { m_directory = dir; }; - inline void SetDescription(const wxString& descr) { m_description = descr; }; - inline void SetDefaultExtension(const wxString& ext) { m_defaultExt = ext; }; - inline void SetFlags(long flags) { m_flags = flags; }; - - inline bool IsVisible(void) const { return ((m_flags & wxTEMPLATE_VISIBLE) == wxTEMPLATE_VISIBLE); } - - protected: - long m_flags; - wxString m_fileFilter; - wxString m_directory; - wxString m_description; - wxString m_defaultExt; - wxString m_docTypeName; - wxString m_viewTypeName; - wxDocManager* m_documentManager; - - // For dynamic creation of appropriate instances. - wxClassInfo* m_docClassInfo; - wxClassInfo* m_viewClassInfo; - -}; - -// One object of this class may be created in an application, -// to manage all the templates and documents. -class WXDLLEXPORT wxDocManager: public wxEvtHandler -{ - DECLARE_DYNAMIC_CLASS(wxDocManager) - public: - wxDocManager(long flags = wxDEFAULT_DOCMAN_FLAGS, bool initialize = TRUE); - ~wxDocManager(void); - - virtual bool Initialize(void); - - // Handlers for common user commands -// virtual void OldOnMenuCommand(int command); - - void OnFileClose(wxCommandEvent& event); - void OnFileNew(wxCommandEvent& event); - void OnFileOpen(wxCommandEvent& event); - void OnFileRevert(wxCommandEvent& event); - void OnFileSave(wxCommandEvent& event); - void OnFileSaveAs(wxCommandEvent& event); - void OnPrint(wxCommandEvent& event); - void OnPrintSetup(wxCommandEvent& event); - void OnPreview(wxCommandEvent& event); - void OnUndo(wxCommandEvent& event); - void OnRedo(wxCommandEvent& event); - - // Extend event processing to search the view's event table - virtual bool ProcessEvent(wxEvent& event); - - virtual wxDocument *CreateDocument(const wxString& path, long flags = 0); - virtual wxView *CreateView(wxDocument *doc, long flags = 0); - virtual void DeleteTemplate(wxDocTemplate *temp, long flags = 0); - virtual bool FlushDoc(wxDocument *doc); - virtual wxDocTemplate *MatchTemplate(const wxString& path); - virtual wxDocTemplate *SelectDocumentPath(wxDocTemplate **templates, - int noTemplates, wxString& path, long flags, bool save = FALSE); - virtual wxDocTemplate *SelectDocumentType(wxDocTemplate **templates, - int noTemplates); - virtual wxDocTemplate *SelectViewType(wxDocTemplate **templates, - int noTemplates); - virtual wxDocTemplate *FindTemplateForPath(const wxString& path); - - void AssociateTemplate(wxDocTemplate *temp); - void DisassociateTemplate(wxDocTemplate *temp); - - wxDocument *GetCurrentDocument(void) const; - - inline void SetMaxDocsOpen(int n) { m_maxDocsOpen = n; } - inline int GetMaxDocsOpen(void) const { return m_maxDocsOpen; } - - // Add and remove a document from the manager's list - void AddDocument(wxDocument *doc); - void RemoveDocument(wxDocument *doc); - - // Clear remaining documents and templates - bool Clear(bool force = TRUE); - - // Views or windows should inform the document manager - // when a view is going in or out of focus - virtual void ActivateView(wxView *view, bool activate = TRUE, bool deleting = FALSE); - virtual wxView *GetCurrentView(void) const; - - virtual inline wxList& GetDocuments(void) const { return (wxList&) m_docs; } - - // Make a default document name - virtual bool MakeDefaultName(wxString& buf); - - virtual wxFileHistory *OnCreateFileHistory(void); - virtual inline wxFileHistory *GetFileHistory(void) const { return m_fileHistory; } - - // File history management - virtual void AddFileToHistory(const wxString& file); - virtual int GetNoHistoryFiles(void) const; - virtual wxString GetHistoryFile(int i) const; - virtual void FileHistoryUseMenu(wxMenu *menu); - virtual void FileHistoryRemoveMenu(wxMenu *menu); -#if wxUSE_CONFIG - virtual void FileHistoryLoad(wxConfigBase& config); - virtual void FileHistorySave(wxConfigBase& config); -#endif - virtual void FileHistoryAddFilesToMenu(); - virtual void FileHistoryAddFilesToMenu(wxMenu* menu); - protected: - long m_flags; - int m_defaultDocumentNameCounter; - int m_maxDocsOpen; - wxList m_docs; - wxList m_templates; - wxView* m_currentView; - wxFileHistory* m_fileHistory; - -DECLARE_EVENT_TABLE() -}; - -/* - * A default child frame - */ - -class WXDLLEXPORT wxDocChildFrame: public wxFrame -{ - DECLARE_CLASS(wxDocChildFrame) - - public: - wxDocChildFrame(wxDocument *doc, wxView *view, wxFrame *frame, wxWindowID id, const wxString& title, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long type = wxDEFAULT_FRAME_STYLE, const wxString& name = "frame"); - ~wxDocChildFrame(void); - - // Extend event processing to search the view's event table - virtual bool ProcessEvent(wxEvent& event); - - void OnActivate(wxActivateEvent& event); - void OnCloseWindow(wxCloseEvent& event); - - inline wxDocument *GetDocument(void) const { return m_childDocument; } - inline wxView *GetView(void) const { return m_childView; } - inline void SetDocument(wxDocument *doc) { m_childDocument = doc; } - inline void SetView(wxView *view) { m_childView = view; } - protected: - wxDocument* m_childDocument; - wxView* m_childView; - -DECLARE_EVENT_TABLE() - -}; - -/* - * A default parent frame - */ - -class WXDLLEXPORT wxDocParentFrame: public wxFrame -{ - DECLARE_CLASS(wxDocParentFrame) - public: - wxDocParentFrame(wxDocManager *manager, wxFrame *frame, wxWindowID id, const wxString& title, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long type = wxDEFAULT_FRAME_STYLE, const wxString& name = "frame"); - - // Extend event processing to search the document manager's event table - virtual bool ProcessEvent(wxEvent& event); - - wxDocManager *GetDocumentManager(void) const { return m_docManager; } - - void OnExit(wxCommandEvent& event); - void OnMRUFile(wxCommandEvent& event); - void OnCloseWindow(wxCloseEvent& event); - - protected: - wxDocManager *m_docManager; - -DECLARE_EVENT_TABLE() -}; - -/* - * Provide simple default printing facilities - */ - -#if wxUSE_PRINTING_ARCHITECTURE -class WXDLLEXPORT wxDocPrintout: public wxPrintout -{ - DECLARE_DYNAMIC_CLASS(wxDocPrintout) - public: - wxDocPrintout(wxView *view = (wxView *) NULL, const wxString& title = "Printout"); - bool OnPrintPage(int page); - bool HasPage(int page); - bool OnBeginDocument(int startPage, int endPage); - void GetPageInfo(int *minPage, int *maxPage, int *selPageFrom, int *selPageTo); - - virtual inline wxView *GetView(void) { return m_printoutView; } - protected: - wxView* m_printoutView; -}; -#endif - -/* - * Command processing framework - */ - -class WXDLLEXPORT wxCommand: public wxObject -{ - DECLARE_CLASS(wxCommand) - public: - wxCommand(bool canUndoIt = FALSE, const wxString& name = ""); - ~wxCommand(void); - - // Override this to perform a command - virtual bool Do(void) = 0; - - // Override this to undo a command - virtual bool Undo(void) = 0; - - virtual inline bool CanUndo(void) const { return m_canUndo; } - virtual inline wxString GetName(void) const { return m_commandName; } - protected: - bool m_canUndo; - wxString m_commandName; -}; - -class WXDLLEXPORT wxCommandProcessor: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxCommandProcessor) - public: - wxCommandProcessor(int maxCommands = 100); - ~wxCommandProcessor(void); - - // Pass a command to the processor. The processor calls Do(); - // if successful, is appended to the command history unless - // storeIt is FALSE. - virtual bool Submit(wxCommand *command, bool storeIt = TRUE); - virtual bool Undo(void); - virtual bool Redo(void); - virtual bool CanUndo(void) const; - virtual bool CanRedo(void) const; - - // Call this to manage an edit menu. - inline void SetEditMenu(wxMenu *menu) { m_commandEditMenu = menu; } - inline wxMenu *GetEditMenu(void) const { return m_commandEditMenu; } - virtual void SetMenuStrings(void); - virtual void Initialize(void); - - inline wxList& GetCommands(void) const { return (wxList&) m_commands; } - inline int GetMaxCommands(void) const { return m_maxNoCommands; } - virtual void ClearCommands(void); - - protected: - int m_maxNoCommands; - wxList m_commands; - wxNode* m_currentCommand; - wxMenu* m_commandEditMenu; -}; - -// File history management - -class WXDLLEXPORT wxFileHistory: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxFileHistory) - public: - wxFileHistory(int maxFiles = 9); - ~wxFileHistory(void); - -// Operations - virtual void AddFileToHistory(const wxString& file); - virtual int GetMaxFiles(void) const { return m_fileMaxFiles; } - virtual void UseMenu(wxMenu *menu); - - // Remove menu from the list (MDI child may be closing) - virtual void RemoveMenu(wxMenu *menu); - -#if wxUSE_CONFIG - virtual void Load(wxConfigBase& config); - virtual void Save(wxConfigBase& config); -#endif - - virtual void AddFilesToMenu(); - virtual void AddFilesToMenu(wxMenu* menu); // Single menu - -// Accessors - virtual wxString GetHistoryFile(int i) const; - - // A synonym for GetNoHistoryFiles - virtual int GetCount() const { return m_fileHistoryN; } - inline int GetNoHistoryFiles(void) const { return m_fileHistoryN; } - - inline wxList& GetMenus() const { return (wxList&) m_fileMenus; } - - protected: - // Last n files - char** m_fileHistory; - // Number of files saved - int m_fileHistoryN; - // Menus to maintain (may need several for an MDI app) - wxList m_fileMenus; - // Max files to maintain - int m_fileMaxFiles; -}; - -// For compatibility with existing file formats: -// converts from/to a stream to/from a temporary file. -bool WXDLLEXPORT wxTransferFileToStream(const wxString& filename, ostream& stream); -bool WXDLLEXPORT wxTransferStreamToFile(istream& stream, const wxString& filename); - - -#endif diff --git a/include/wx/dynarray.h b/include/wx/dynarray.h deleted file mode 100644 index a5b90b2b16..0000000000 --- a/include/wx/dynarray.h +++ /dev/null @@ -1,443 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: dynarray.h -// Purpose: auto-resizable (i.e. dynamic) array support -// Author: Vadim Zeitlin -// Modified by: -// Created: 12.09.97 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows license -/////////////////////////////////////////////////////////////////////////////// - -#ifndef _DYNARRAY_H -#define _DYNARRAY_H - -#ifdef __GNUG__ -#pragma interface "dynarray.h" -#endif - -#include "wx/defs.h" -#include "wx/debug.h" - -/** @name Dynamic arrays and object arrays (array which own their elements) - @memo Arrays which grow on demand and do range checking (only in debug) - */ -//@{ - -// ---------------------------------------------------------------------------- -// constants -// ---------------------------------------------------------------------------- - -/** - the initial size by which an array grows when an element is added - default value avoids allocate one or two bytes when the array is created - which is rather inefficient -*/ -#define WX_ARRAY_DEFAULT_INITIAL_SIZE (16) - -// ---------------------------------------------------------------------------- -// types -// ---------------------------------------------------------------------------- - -/** - callback compare function for quick sort - must return negative value, 0 or positive value if pItem1 <, = or > pItem2 - */ - -#ifdef __VISUALC__ - #define CMPFUNC_CONV _cdecl -#else // !Visual C++ - #define CMPFUNC_CONV -#endif // compiler -typedef int (CMPFUNC_CONV *CMPFUNC)(const void* pItem1, const void* pItem2); - -// ---------------------------------------------------------------------------- -/** - base class managing data having size of type 'long' (not used directly) - - NB: for efficiency this often used class has no virtual functions (hence no - VTBL), even dtor is not virtual. If used as expected it won't - create any problems because ARRAYs from DEFINE_ARRAY have no dtor at all, - so it's not too important if it's not called (this happens when you cast - "SomeArray *" as "BaseArray *" and then delete it) - - @memo Base class for template array classes -*/ -// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxBaseArray -{ -public: - /** @name ctors and dtor */ - //@{ - /// default ctor - wxBaseArray(); - /// copy ctor - wxBaseArray(const wxBaseArray& array); - /// assignment operator - wxBaseArray& operator=(const wxBaseArray& src); - /// not virtual, see above - /// EXCEPT for Gnu compiler to reduce warnings... -#ifdef __GNUG__ - virtual -#endif - ~wxBaseArray(); - //@} - - /** @name memory management */ - //@{ - /// empties the array, but doesn't release memory - void Empty() { m_nCount = 0; } - /// empties the array and releases memory - void Clear(); - /// preallocates memory for given number of items - void Alloc(size_t uiSize); - /// minimizes the memory used by the array (frees unused memory) - void Shrink(); - //@} - - /** @name simple accessors */ - //@{ - /// number of elements in the array - size_t Count() const { return m_nCount; } - size_t GetCount() const { return m_nCount; } - /// is it empty? - bool IsEmpty() const { return m_nCount == 0; } - //@} - -protected: - // these methods are protected because if they were public one could - // mistakenly call one of them instead of DEFINE_ARRAY's or OBJARRAY's - // type safe methods - - /** @name items access */ - //@{ - /// get item at position uiIndex (range checking is done in debug version) - long& Item(size_t uiIndex) const - { wxASSERT( uiIndex < m_nCount ); return m_pItems[uiIndex]; } - /// same as Item() - long& operator[](size_t uiIndex) const { return Item(uiIndex); } - //@} - - /** @name item management */ - //@{ - /** - Search the element in the array, starting from the either side - @param bFromEnd if TRUE, start from the end - @return index of the first item matched or wxNOT_FOUND - @see wxNOT_FOUND - */ - int Index(long lItem, bool bFromEnd = FALSE) const; - /// search for an item using binary search in a sorted array - int Index(long lItem, CMPFUNC fnCompare) const; - /// add new element at the end - void Add(long lItem); - /// add item assuming the array is sorted with fnCompare function - void Add(long lItem, CMPFUNC fnCompare); - /// add new element at given position (it becomes Item[uiIndex]) - void Insert(long lItem, size_t uiIndex); - /// remove first item matching this value - void Remove(long lItem); - /// remove item by index - void Remove(size_t uiIndex); - //@} - - /// sort array elements using given compare function - void Sort(CMPFUNC fnCompare); - -private: - void Grow(); // makes array bigger if needed - - size_t m_nSize, // current size of the array - m_nCount; // current number of elements - - long *m_pItems; // pointer to data -}; - -// ============================================================================ -// template classes -// ============================================================================ - -// ---------------------------------------------------------------------------- -// This macro generates a new array class. It is intended for storage of simple -// types of sizeof()<=sizeof(long) or pointers if sizeof(pointer)<=sizeof(long) -// -// NB: it has only inline functions => takes no space at all -// Mod by JACS: Salford C++ doesn't like 'var->operator=' syntax, as in: -// { ((wxBaseArray *)this)->operator=((const wxBaseArray&)src); -// so using a temporary variable instead. -// ---------------------------------------------------------------------------- -#define _WX_DEFINE_ARRAY(T, name) \ -typedef int (CMPFUNC_CONV *CMPFUNC##T)(T *pItem1, T *pItem2); \ -class WXDLLEXPORTLOCAL name : public wxBaseArray \ -{ \ -public: \ - name() \ - { wxASSERT( sizeof(T) <= sizeof(long) ); } \ - \ - name& operator=(const name& src) \ - { wxBaseArray* temp = (wxBaseArray*) this; \ - (*temp) = ((const wxBaseArray&)src); \ - return *this; } \ - \ - T& operator[](size_t uiIndex) const \ - { return (T&)(wxBaseArray::Item(uiIndex)); } \ - T& Item(size_t uiIndex) const \ - { return (T&)(wxBaseArray::Item(uiIndex)); } \ - T& Last() const \ - { return (T&)(wxBaseArray::Item(Count() - 1)); } \ - \ - int Index(T Item, bool bFromEnd = FALSE) const \ - { return wxBaseArray::Index((long)Item, bFromEnd); } \ - \ - void Add(T Item) \ - { wxBaseArray::Add((long)Item); } \ - void Insert(T Item, size_t uiIndex) \ - { wxBaseArray::Insert((long)Item, uiIndex) ; } \ - \ - void Remove(size_t uiIndex) { wxBaseArray::Remove(uiIndex); } \ - void Remove(T Item) \ - { int iIndex = Index(Item); \ - wxCHECK2_MSG( iIndex != wxNOT_FOUND, return, \ - "removing inexisting element in wxArray::Remove" ); \ - wxBaseArray::Remove((size_t)iIndex); } \ - \ - void Sort(CMPFUNC##T fCmp) { wxBaseArray::Sort((CMPFUNC)fCmp); } \ -} - -// ---------------------------------------------------------------------------- -// This is the same as the previous macro, but it defines a sorted array. -// Differences: -// 1) it must be given a COMPARE function in ctor which takes 2 items of type -// T* and should return -1, 0 or +1 if the first one is less/greater -// than/equal to the second one. -// 2) the Add() method inserts the item in such was that the array is always -// sorted (it uses the COMPARE function) -// 3) it has no Sort() method because it's always sorted -// 4) Index() method is much faster (the sorted arrays use binary search -// instead of linear one), but Add() is slower. -// -// Summary: use this class when the speed of Index() function is important, use -// the normal arrays otherwise. -// -// NB: it has only inline functions => takes no space at all -// Mod by JACS: Salford C++ doesn't like 'var->operator=' syntax, as in: -// { ((wxBaseArray *)this)->operator=((const wxBaseArray&)src); -// so using a temporary variable instead. -// ---------------------------------------------------------------------------- -#define _WX_DEFINE_SORTED_ARRAY(T, name) \ -typedef int (CMPFUNC_CONV *SCMPFUNC##T)(T pItem1, T pItem2); \ -class WXDLLEXPORTLOCAL name : public wxBaseArray \ -{ \ -public: \ - name(SCMPFUNC##T fn) \ - { wxASSERT( sizeof(T) <= sizeof(long) ); m_fnCompare = fn; } \ - \ - name& operator=(const name& src) \ - { wxBaseArray* temp = (wxBaseArray*) this; \ - (*temp) = ((const wxBaseArray&)src); \ - m_fnCompare = src.m_fnCompare; \ - return *this; } \ - \ - T& operator[](size_t uiIndex) const \ - { return (T&)(wxBaseArray::Item(uiIndex)); } \ - T& Item(size_t uiIndex) const \ - { return (T&)(wxBaseArray::Item(uiIndex)); } \ - T& Last() const \ - { return (T&)(wxBaseArray::Item(Count() - 1)); } \ - \ - int Index(T Item) const \ - { return wxBaseArray::Index((long)Item, (CMPFUNC)m_fnCompare); }\ - \ - void Add(T Item) \ - { wxBaseArray::Add((long)Item, (CMPFUNC)m_fnCompare); } \ - \ - void Remove(size_t uiIndex) { wxBaseArray::Remove(uiIndex); } \ - void Remove(T Item) \ - { int iIndex = Index(Item); \ - wxCHECK2_MSG( iIndex != wxNOT_FOUND, return, \ - "removing inexisting element in wxArray::Remove" ); \ - wxBaseArray::Remove((size_t)iIndex); } \ - \ -private: \ - SCMPFUNC##T m_fnCompare; \ -} - -// ---------------------------------------------------------------------------- -// see WX_DECLARE_OBJARRAY and WX_DEFINE_OBJARRAY -// ---------------------------------------------------------------------------- -#define _WX_DECLARE_OBJARRAY(T, name) \ -typedef int (CMPFUNC_CONV *CMPFUNC##T)(T** pItem1, T** pItem2); \ -class WXDLLEXPORTLOCAL name : public wxBaseArray \ -{ \ -public: \ - name() { } \ - name(const name& src); \ - name& operator=(const name& src); \ - \ - ~name(); \ - \ - T& operator[](size_t uiIndex) const \ - { return *(T*)wxBaseArray::Item(uiIndex); } \ - T& Item(size_t uiIndex) const \ - { return *(T*)wxBaseArray::Item(uiIndex); } \ - T& Last() const \ - { return *(T*)(wxBaseArray::Item(Count() - 1)); } \ - \ - int Index(const T& Item, bool bFromEnd = FALSE) const; \ - \ - void Add(const T& Item); \ - void Add(const T* pItem) \ - { wxBaseArray::Add((long)pItem); } \ - \ - void Insert(const T& Item, size_t uiIndex); \ - void Insert(const T* pItem, size_t uiIndex) \ - { wxBaseArray::Insert((long)pItem, uiIndex); } \ - \ - void Empty(); \ - \ - T* Detach(size_t uiIndex) \ - { T* p = (T*)wxBaseArray::Item(uiIndex); \ - wxBaseArray::Remove(uiIndex); return p; } \ - void Remove(size_t uiIndex); \ - \ - void Sort(CMPFUNC##T fCmp) { wxBaseArray::Sort((CMPFUNC)fCmp); } \ - \ -private: \ - void DoCopy(const name& src); \ -} - -// ---------------------------------------------------------------------------- -/** @name Macros for definition of dynamic arrays and objarrays - - These macros are ugly (especially if you look in the sources ;-), but they - allow us to define 'template' classes without actually using templates. -
-
- Range checking is performed in debug build for both arrays and objarrays. - Type checking is done at compile-time. Warning: arrays never shrink, - they only grow, so loading 10 millions in an array only to delete them 2 - lines below is not recommended. However, it does free memory when - it's destroyed, so if you destroy array also, it's ok. - */ -// ---------------------------------------------------------------------------- - -//@{ - /** - This macro generates a new array class. It is intended for storage of simple - types of sizeof()<=sizeof(long) or pointers if sizeof(pointer)<=sizeof(long) -
- NB: it has only inline functions => takes no space at all -
- - @memo declare and define array class 'name' containing elements of type 'T' - */ -#define WX_DEFINE_ARRAY(T, name) typedef T _A##name; \ - _WX_DEFINE_ARRAY(_A##name, name) - - /** - This macro does the same as WX_DEFINE_ARRAY except that the array will be - sorted with the specified compare function. - */ -#define WX_DEFINE_SORTED_ARRAY(T, name) typedef T _A##name; \ - _WX_DEFINE_SORTED_ARRAY(_A##name, name) - - /** - This macro generates a new objarrays class which owns the objects it - contains, i.e. it will delete them when it is destroyed. An element is of - type T*, but arguments of type T& are taken (see below!) and T& is - returned.
- Don't use this for simple types such as "int" or "long"! - You _may_ use it for "double" but it's awfully inefficient. -
-
- Note on Add/Insert functions: -
- 1) function(T*) gives the object to the array, i.e. it will delete the - object when it's removed or in the array's dtor -
- 2) function(T&) will create a copy of the object and work with it -
-
- Also: -
- 1) Remove() will delete the object after removing it from the array -
- 2) Detach() just removes the object from the array (returning pointer to it) -
-
- NB1: Base type T should have an accessible copy ctor if Add(T&) is used, -
- NB2: Never ever cast a array to it's base type: as dtor is not virtual - it will provoke memory leaks -
-
- some functions of this class are not inline, so it takes some space to - define new class from this template. - - @memo declare objarray class 'name' containing elements of type 'T' - */ -#define WX_DECLARE_OBJARRAY(T, name) typedef T _L##name; \ - _WX_DECLARE_OBJARRAY(_L##name, name) - /** - To use an objarray class you must - -
  • #include "dynarray.h" -
  • WX_DECLARE_OBJARRAY(element_type, list_class_name) -
  • #include "arrimpl.cpp" -
  • WX_DEFINE_OBJARRAY(list_class_name) // same as above! - -

    - This is necessary because at the moment of DEFINE_OBJARRAY class - element_type must be fully defined (i.e. forward declaration is not - enough), while WX_DECLARE_OBJARRAY may be done anywhere. The separation of - two allows to break cicrcular dependencies with classes which have member - variables of objarray type. - - @memo define (must include arrimpl.cpp!) objarray class 'name' - */ -#define WX_DEFINE_OBJARRAY(name) "don't forget to include arrimpl.cpp!" -//@} - -// ---------------------------------------------------------------------------- -/** @name Some commonly used predefined arrays */ -// # overhead if not used? -// ---------------------------------------------------------------------------- - -#define WXDLLEXPORTLOCAL WXDLLEXPORT - -//@{ - /** @name ArrayInt */ -WX_DEFINE_ARRAY(int, wxArrayInt); - /** @name ArrayLong */ -WX_DEFINE_ARRAY(long, wxArrayLong); - /** @name ArrayPtrVoid */ -WX_DEFINE_ARRAY(void *, wxArrayPtrVoid); -//@} - -//@} - -#undef WXDLLEXPORTLOCAL -#define WXDLLEXPORTLOCAL - -// ----------------------------------------------------------------------------- -// convinience macros -// ----------------------------------------------------------------------------- - -// delete all array elements -// -// NB: the class declaration of the array elements must be visible from the -// place where you use this macro, otherwise the proper destructor may not -// be called (a decent compiler should give a warning about it, but don't -// count on it)! -#define WX_CLEAR_ARRAY(array) \ - { \ - size_t count = array.Count(); \ - for ( size_t n = 0; n < count; n++ ) \ - { \ - delete array[n]; \ - } \ - \ - array.Empty(); \ - } -#endif // _DYNARRAY_H - diff --git a/include/wx/dynlib.h b/include/wx/dynlib.h deleted file mode 100644 index ceecce4a58..0000000000 --- a/include/wx/dynlib.h +++ /dev/null @@ -1,73 +0,0 @@ -#ifndef _WX_DYNLIB_H__ -#define _WX_DYNLIB_H__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include -#include -#include -#include - -#ifdef LoadLibrary -#undef LoadLibrary -#endif - -// --------------------------------------------------------------------------- -// wxLibrary - -class wxLibrary: public wxObject { - protected: - void *m_handle; - bool m_destroy; - public: - wxHashTable classTable; - - public: - wxLibrary(void *handle); - ~wxLibrary(void); - - // Get a symbol from the dynamic library - void *GetSymbol(const wxString& symbname); - - // Create the object whose classname is "name" - wxObject *CreateObject(const wxString& name); - - // Merge the symbols with the main symbols: WARNING! the library will not - // be unloaded. - void MergeWithSystem(); - - protected: - void PrepareClasses(wxClassInfo *first); -}; - -// --------------------------------------------------------------------------- -// wxLibraries - -class wxLibraries { - protected: - wxList m_loaded; - public: - wxLibraries(void); - ~wxLibraries(void); - - wxLibrary *LoadLibrary(const wxString& name); - wxObject *CreateObject(const wxString& name); -}; - -// --------------------------------------------------------------------------- -// Global variables - -extern wxLibraries wxTheLibraries; - -// --------------------------------------------------------------------------- -// Interesting defines - -#define WXDLL_ENTRY_FUNCTION() \ -extern "C" wxClassInfo *wxGetClassFirst(); \ -wxClassInfo *wxGetClassFirst() { \ - return wxClassInfo::GetFirst(); \ -} - -#endif diff --git a/include/wx/event.h b/include/wx/event.h deleted file mode 100644 index 8defe804d3..0000000000 --- a/include/wx/event.h +++ /dev/null @@ -1,1326 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: event.h -// Purpose: Event classes -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_EVENTH__ -#define _WX_EVENTH__ - -#ifdef __GNUG__ -#pragma interface "event.h" -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/gdicmn.h" - -/* - * Event types - * - */ - -typedef int wxEventType; - -const wxEventType wxEVT_NULL = 0; -const wxEventType wxEVT_FIRST = 10000; - -const wxEventType wxEVT_COMMAND_BUTTON_CLICKED = wxEVT_FIRST + 1; -const wxEventType wxEVT_COMMAND_CHECKBOX_CLICKED = wxEVT_FIRST + 2; -const wxEventType wxEVT_COMMAND_CHOICE_SELECTED = wxEVT_FIRST + 3; -const wxEventType wxEVT_COMMAND_LISTBOX_SELECTED = wxEVT_FIRST + 4; -const wxEventType wxEVT_COMMAND_LISTBOX_DOUBLECLICKED = wxEVT_FIRST + 5; -const wxEventType wxEVT_COMMAND_CHECKLISTBOX_TOGGLED = wxEVT_FIRST + 6; -const wxEventType wxEVT_COMMAND_TEXT_UPDATED = wxEVT_FIRST + 7; -const wxEventType wxEVT_COMMAND_TEXT_ENTER = wxEVT_FIRST + 8; -const wxEventType wxEVT_COMMAND_MENU_SELECTED = wxEVT_FIRST + 9; -const wxEventType wxEVT_COMMAND_TOOL_CLICKED = wxEVT_COMMAND_MENU_SELECTED; -const wxEventType wxEVT_COMMAND_SLIDER_UPDATED = wxEVT_FIRST + 10; -const wxEventType wxEVT_COMMAND_RADIOBOX_SELECTED = wxEVT_FIRST + 11; -const wxEventType wxEVT_COMMAND_RADIOBUTTON_SELECTED = wxEVT_FIRST + 12; -//const wxEventType wxEVT_COMMAND_SCROLLBAR_UPDATED is now obsolete since we use wxEVT_SCROLL... events -const wxEventType wxEVT_COMMAND_SCROLLBAR_UPDATED = wxEVT_FIRST + 13; -const wxEventType wxEVT_COMMAND_VLBOX_SELECTED = wxEVT_FIRST + 14; -const wxEventType wxEVT_COMMAND_COMBOBOX_SELECTED = wxEVT_FIRST + 15; -const wxEventType wxEVT_COMMAND_TOOL_RCLICKED = wxEVT_FIRST + 16; -const wxEventType wxEVT_COMMAND_TOOL_ENTER = wxEVT_FIRST + 17; - -/* Sockets send events, too */ -const wxEventType wxEVT_SOCKET = wxEVT_FIRST + 50; - -/* Mouse event types */ -const wxEventType wxEVT_LEFT_DOWN = wxEVT_FIRST + 100; -const wxEventType wxEVT_LEFT_UP = wxEVT_FIRST + 101; -const wxEventType wxEVT_MIDDLE_DOWN = wxEVT_FIRST + 102; -const wxEventType wxEVT_MIDDLE_UP = wxEVT_FIRST + 103; -const wxEventType wxEVT_RIGHT_DOWN = wxEVT_FIRST + 104; -const wxEventType wxEVT_RIGHT_UP = wxEVT_FIRST + 105; -const wxEventType wxEVT_MOTION = wxEVT_FIRST + 106; -const wxEventType wxEVT_ENTER_WINDOW = wxEVT_FIRST + 107; -const wxEventType wxEVT_LEAVE_WINDOW = wxEVT_FIRST + 108; -const wxEventType wxEVT_LEFT_DCLICK = wxEVT_FIRST + 109; -const wxEventType wxEVT_MIDDLE_DCLICK = wxEVT_FIRST + 110; -const wxEventType wxEVT_RIGHT_DCLICK = wxEVT_FIRST + 111; -const wxEventType wxEVT_SET_FOCUS = wxEVT_FIRST + 112; -const wxEventType wxEVT_KILL_FOCUS = wxEVT_FIRST + 113; - - /* Non-client mouse events */ -const wxEventType wxEVT_NC_LEFT_DOWN = wxEVT_FIRST + 200; -const wxEventType wxEVT_NC_LEFT_UP = wxEVT_FIRST + 201; -const wxEventType wxEVT_NC_MIDDLE_DOWN = wxEVT_FIRST + 202; -const wxEventType wxEVT_NC_MIDDLE_UP = wxEVT_FIRST + 203; -const wxEventType wxEVT_NC_RIGHT_DOWN = wxEVT_FIRST + 204; -const wxEventType wxEVT_NC_RIGHT_UP = wxEVT_FIRST + 205; -const wxEventType wxEVT_NC_MOTION = wxEVT_FIRST + 206; -const wxEventType wxEVT_NC_ENTER_WINDOW = wxEVT_FIRST + 207; -const wxEventType wxEVT_NC_LEAVE_WINDOW = wxEVT_FIRST + 208; -const wxEventType wxEVT_NC_LEFT_DCLICK = wxEVT_FIRST + 209; -const wxEventType wxEVT_NC_MIDDLE_DCLICK = wxEVT_FIRST + 210; -const wxEventType wxEVT_NC_RIGHT_DCLICK = wxEVT_FIRST + 211; - -/* Character input event type */ -const wxEventType wxEVT_CHAR = wxEVT_FIRST + 212; -const wxEventType wxEVT_CHAR_HOOK = wxEVT_FIRST + 213; -const wxEventType wxEVT_NAVIGATION_KEY = wxEVT_FIRST + 214; -const wxEventType wxEVT_KEY_DOWN = wxEVT_FIRST + 215; -const wxEventType wxEVT_KEY_UP = wxEVT_FIRST + 216; - - /* - * Scrollbar event identifiers - */ -const wxEventType wxEVT_SCROLL_TOP = wxEVT_FIRST + 300; -const wxEventType wxEVT_SCROLL_BOTTOM = wxEVT_FIRST + 301; -const wxEventType wxEVT_SCROLL_LINEUP = wxEVT_FIRST + 302; -const wxEventType wxEVT_SCROLL_LINEDOWN = wxEVT_FIRST + 303; -const wxEventType wxEVT_SCROLL_PAGEUP = wxEVT_FIRST + 304; -const wxEventType wxEVT_SCROLL_PAGEDOWN = wxEVT_FIRST + 305; -const wxEventType wxEVT_SCROLL_THUMBTRACK = wxEVT_FIRST + 306; - -const wxEventType wxEVT_SIZE = wxEVT_FIRST + 400; -const wxEventType wxEVT_MOVE = wxEVT_FIRST + 401; -const wxEventType wxEVT_CLOSE_WINDOW = wxEVT_FIRST + 402; -const wxEventType wxEVT_END_SESSION = wxEVT_FIRST + 403; -const wxEventType wxEVT_QUERY_END_SESSION = wxEVT_FIRST + 404; -const wxEventType wxEVT_ACTIVATE_APP = wxEVT_FIRST + 405; -const wxEventType wxEVT_POWER = wxEVT_FIRST + 406; -const wxEventType wxEVT_ACTIVATE = wxEVT_FIRST + 409; -const wxEventType wxEVT_CREATE = wxEVT_FIRST + 410; -const wxEventType wxEVT_DESTROY = wxEVT_FIRST + 411; -const wxEventType wxEVT_SHOW = wxEVT_FIRST + 412; -const wxEventType wxEVT_ICONIZE = wxEVT_FIRST + 413; -const wxEventType wxEVT_MAXIMIZE = wxEVT_FIRST + 414; -const wxEventType wxEVT_MOUSE_CAPTURE_CHANGED = wxEVT_FIRST + 415; -const wxEventType wxEVT_PAINT = wxEVT_FIRST + 416; -const wxEventType wxEVT_ERASE_BACKGROUND = wxEVT_FIRST + 417; -const wxEventType wxEVT_NC_PAINT = wxEVT_FIRST + 418; -const wxEventType wxEVT_PAINT_ICON = wxEVT_FIRST + 419; -const wxEventType wxEVT_MENU_CHAR = wxEVT_FIRST + 420; -const wxEventType wxEVT_MENU_INIT = wxEVT_FIRST + 421; -const wxEventType wxEVT_MENU_HIGHLIGHT = wxEVT_FIRST + 422; -const wxEventType wxEVT_POPUP_MENU_INIT = wxEVT_FIRST + 423; -const wxEventType wxEVT_CONTEXT_MENU = wxEVT_FIRST + 424; -const wxEventType wxEVT_SYS_COLOUR_CHANGED = wxEVT_FIRST + 425; -const wxEventType wxEVT_SETTING_CHANGED = wxEVT_FIRST + 426; -const wxEventType wxEVT_QUERY_NEW_PALETTE = wxEVT_FIRST + 427; -const wxEventType wxEVT_PALETTE_CHANGED = wxEVT_FIRST + 428; -const wxEventType wxEVT_JOY_BUTTON_DOWN = wxEVT_FIRST + 429; -const wxEventType wxEVT_JOY_BUTTON_UP = wxEVT_FIRST + 430; -const wxEventType wxEVT_JOY_MOVE = wxEVT_FIRST + 431; -const wxEventType wxEVT_JOY_ZMOVE = wxEVT_FIRST + 432; -const wxEventType wxEVT_DROP_FILES = wxEVT_FIRST + 433; -const wxEventType wxEVT_DRAW_ITEM = wxEVT_FIRST + 434; -const wxEventType wxEVT_MEASURE_ITEM = wxEVT_FIRST + 435; -const wxEventType wxEVT_COMPARE_ITEM = wxEVT_FIRST + 436; -const wxEventType wxEVT_INIT_DIALOG = wxEVT_FIRST + 437; -const wxEventType wxEVT_IDLE = wxEVT_FIRST + 438; -const wxEventType wxEVT_UPDATE_UI = wxEVT_FIRST + 439; - /* System misc. */ -const wxEventType wxEVT_END_PROCESS = wxEVT_FIRST + 440; - - /* Generic command events */ - /* Note: a click is a higher-level event than button down/up */ -const wxEventType wxEVT_COMMAND_LEFT_CLICK = wxEVT_FIRST + 500; -const wxEventType wxEVT_COMMAND_LEFT_DCLICK = wxEVT_FIRST + 501; -const wxEventType wxEVT_COMMAND_RIGHT_CLICK = wxEVT_FIRST + 502; -const wxEventType wxEVT_COMMAND_RIGHT_DCLICK = wxEVT_FIRST + 503; -const wxEventType wxEVT_COMMAND_SET_FOCUS = wxEVT_FIRST + 504; -const wxEventType wxEVT_COMMAND_KILL_FOCUS = wxEVT_FIRST + 505; -const wxEventType wxEVT_COMMAND_ENTER = wxEVT_FIRST + 506; - - /* Tree control event types */ -const wxEventType wxEVT_COMMAND_TREE_BEGIN_DRAG = wxEVT_FIRST + 600; -const wxEventType wxEVT_COMMAND_TREE_BEGIN_RDRAG = wxEVT_FIRST + 601; -const wxEventType wxEVT_COMMAND_TREE_BEGIN_LABEL_EDIT = wxEVT_FIRST + 602; -const wxEventType wxEVT_COMMAND_TREE_END_LABEL_EDIT = wxEVT_FIRST + 603; -const wxEventType wxEVT_COMMAND_TREE_DELETE_ITEM = wxEVT_FIRST + 604; -const wxEventType wxEVT_COMMAND_TREE_GET_INFO = wxEVT_FIRST + 605; -const wxEventType wxEVT_COMMAND_TREE_SET_INFO = wxEVT_FIRST + 606; -const wxEventType wxEVT_COMMAND_TREE_ITEM_EXPANDED = wxEVT_FIRST + 607; -const wxEventType wxEVT_COMMAND_TREE_ITEM_EXPANDING = wxEVT_FIRST + 608; -const wxEventType wxEVT_COMMAND_TREE_ITEM_COLLAPSED = wxEVT_FIRST + 609; -const wxEventType wxEVT_COMMAND_TREE_ITEM_COLLAPSING = wxEVT_FIRST + 610; -const wxEventType wxEVT_COMMAND_TREE_SEL_CHANGED = wxEVT_FIRST + 611; -const wxEventType wxEVT_COMMAND_TREE_SEL_CHANGING = wxEVT_FIRST + 612; -const wxEventType wxEVT_COMMAND_TREE_KEY_DOWN = wxEVT_FIRST + 613; -const wxEventType wxEVT_COMMAND_TREE_ITEM_ACTIVATED = wxEVT_FIRST + 614; - - /* List control event types */ -const wxEventType wxEVT_COMMAND_LIST_BEGIN_DRAG = wxEVT_FIRST + 700; -const wxEventType wxEVT_COMMAND_LIST_BEGIN_RDRAG = wxEVT_FIRST + 701; -const wxEventType wxEVT_COMMAND_LIST_BEGIN_LABEL_EDIT = wxEVT_FIRST + 702; -const wxEventType wxEVT_COMMAND_LIST_END_LABEL_EDIT = wxEVT_FIRST + 703; -const wxEventType wxEVT_COMMAND_LIST_DELETE_ITEM = wxEVT_FIRST + 704; -const wxEventType wxEVT_COMMAND_LIST_DELETE_ALL_ITEMS = wxEVT_FIRST + 705; -const wxEventType wxEVT_COMMAND_LIST_GET_INFO = wxEVT_FIRST + 706; -const wxEventType wxEVT_COMMAND_LIST_SET_INFO = wxEVT_FIRST + 707; -const wxEventType wxEVT_COMMAND_LIST_ITEM_SELECTED = wxEVT_FIRST + 708; -const wxEventType wxEVT_COMMAND_LIST_ITEM_DESELECTED = wxEVT_FIRST + 709; -const wxEventType wxEVT_COMMAND_LIST_KEY_DOWN = wxEVT_FIRST + 710; -const wxEventType wxEVT_COMMAND_LIST_INSERT_ITEM = wxEVT_FIRST + 711; -const wxEventType wxEVT_COMMAND_LIST_COL_CLICK = wxEVT_FIRST + 712; -const wxEventType wxEVT_COMMAND_LIST_ITEM_RIGHT_CLICK = wxEVT_FIRST + 713; -const wxEventType wxEVT_COMMAND_LIST_ITEM_MIDDLE_CLICK = wxEVT_FIRST + 714; -const wxEventType wxEVT_COMMAND_LIST_ITEM_ACTIVATED = wxEVT_FIRST + 715; - - /* Tab and notebook control event types */ -const wxEventType wxEVT_COMMAND_TAB_SEL_CHANGED = wxEVT_FIRST + 800; -const wxEventType wxEVT_COMMAND_TAB_SEL_CHANGING = wxEVT_FIRST + 801; - -#if defined(__BORLANDC__) && defined(__WIN16__) -/* For 16-bit BC++, these 2 are identical (truncated) */ -const wxEventType wxEVT_COMMAND_NB_PAGE_CHANGED = wxEVT_FIRST + 802; -const wxEventType wxEVT_COMMAND_NB_PAGE_CHANGING = wxEVT_FIRST + 803; -#else -const wxEventType wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED = wxEVT_FIRST + 802; -const wxEventType wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING = wxEVT_FIRST + 803; -#endif - -const wxEventType wxEVT_USER_FIRST = wxEVT_FIRST + 2000; - -/* Compatibility */ - -#if WXWIN_COMPATIBILITY - -#define wxEVENT_TYPE_BUTTON_COMMAND wxEVT_COMMAND_BUTTON_CLICKED -#define wxEVENT_TYPE_CHECKBOX_COMMAND wxEVT_COMMAND_CHECKBOX_CLICKED -#define wxEVENT_TYPE_CHOICE_COMMAND wxEVT_COMMAND_CHOICE_SELECTED -#define wxEVENT_TYPE_LISTBOX_COMMAND wxEVT_COMMAND_LISTBOX_SELECTED -#define wxEVENT_TYPE_LISTBOX_DCLICK_COMMAND wxEVT_COMMAND_LISTBOX_DOUBLECLICKED -#define wxEVENT_TYPE_TEXT_COMMAND wxEVT_COMMAND_TEXT_UPDATED -#define wxEVENT_TYPE_MULTITEXT_COMMAND wxEVT_COMMAND_TEXT_UPDATED -#define wxEVENT_TYPE_MENU_COMMAND wxEVT_COMMAND_MENU_SELECTED -#define wxEVENT_TYPE_SLIDER_COMMAND wxEVT_COMMAND_SLIDER_UPDATED -#define wxEVENT_TYPE_RADIOBOX_COMMAND wxEVT_COMMAND_RADIOBOX_SELECTED -#define wxEVENT_TYPE_RADIOBUTTON_COMMAND wxEVT_COMMAND_RADIOBUTTON_SELECTED -#define wxEVENT_TYPE_TEXT_ENTER_COMMAND wxEVT_COMMAND_TEXT_ENTER -#define wxEVENT_TYPE_SET_FOCUS wxEVT_SET_FOCUS -#define wxEVENT_TYPE_KILL_FOCUS wxEVT_KILL_FOCUS -#define wxEVENT_TYPE_SCROLLBAR_COMMAND wxEVT_COMMAND_SCROLLBAR_UPDATED -#define wxEVENT_TYPE_VIRT_LISTBOX_COMMAND wxEVT_COMMAND_VLBOX_SELECTED -#define wxEVENT_TYPE_COMBOBOX_COMMAND wxEVT_COMMAND_COMBOBOX_SELECTED - -#define wxEVENT_TYPE_LEFT_DOWN wxEVT_LEFT_DOWN -#define wxEVENT_TYPE_LEFT_UP wxEVT_LEFT_UP -#define wxEVENT_TYPE_MIDDLE_DOWN wxEVT_MIDDLE_DOWN -#define wxEVENT_TYPE_MIDDLE_UP wxEVT_MIDDLE_UP -#define wxEVENT_TYPE_RIGHT_DOWN wxEVT_RIGHT_DOWN -#define wxEVENT_TYPE_RIGHT_UP wxEVT_RIGHT_UP -#define wxEVENT_TYPE_MOTION wxEVT_MOTION -#define wxEVENT_TYPE_ENTER_WINDOW wxEVT_ENTER_WINDOW -#define wxEVENT_TYPE_LEAVE_WINDOW wxEVT_LEAVE_WINDOW -#define wxEVENT_TYPE_LEFT_DCLICK wxEVT_LEFT_DCLICK -#define wxEVENT_TYPE_MIDDLE_DCLICK wxEVT_MIDDLE_DCLICK -#define wxEVENT_TYPE_RIGHT_DCLICK wxEVT_RIGHT_DCLICK -#define wxEVENT_TYPE_CHAR wxEVT_CHAR -#define wxEVENT_TYPE_SCROLL_TOP wxEVT_SCROLL_TOP -#define wxEVENT_TYPE_SCROLL_BOTTOM wxEVT_SCROLL_BOTTOM -#define wxEVENT_TYPE_SCROLL_LINEUP wxEVT_SCROLL_LINEUP -#define wxEVENT_TYPE_SCROLL_LINEDOWN wxEVT_SCROLL_LINEDOWN -#define wxEVENT_TYPE_SCROLL_PAGEUP wxEVT_SCROLL_PAGEUP -#define wxEVENT_TYPE_SCROLL_PAGEDOWN wxEVT_SCROLL_PAGEDOWN -#define wxEVENT_TYPE_SCROLL_THUMBTRACK wxEVT_SCROLL_THUMBTRACK - -#endif - -/* - * wxWindows events, covering all interesting things that might happen - * (button clicking, resizing, setting text in widgets, etc.). - * - * For each completely new event type, derive a new event class. - * An event CLASS represents a C++ class defining a range of similar event TYPES; - * examples are canvas events, panel item command events. - * An event TYPE is a unique identifier for a particular system event, - * such as a button press or a listbox deselection. - * - */ - -class WXDLLEXPORT wxEvent: public wxObject -{ - DECLARE_ABSTRACT_CLASS(wxEvent) - -public: - wxEvent(int id = 0); - inline ~wxEvent(void) {} - - inline void SetEventType(wxEventType typ) { m_eventType = typ; } - inline wxEventType GetEventType(void) const { return m_eventType; } - inline wxObject *GetEventObject(void) const { return m_eventObject; } - inline void SetEventObject(wxObject *obj) { m_eventObject = obj; } - inline long GetTimestamp(void) const { return m_timeStamp; } - inline void SetTimestamp(long ts = 0) { m_timeStamp = ts; } - inline int GetId() const { return m_id; } - inline void SetId(int Id) { m_id = Id; } - - // Can instruct event processor that we wish to ignore this event - // (treat as if the event table entry had not been found) - inline void Skip(bool skip = TRUE) { m_skipped = skip; } - inline bool GetSkipped(void) const { return m_skipped; }; - -public: - bool m_skipped; - wxObject* m_eventObject; - char* m_eventHandle; // Handle of an underlying windowing system event - wxEventType m_eventType; - long m_timeStamp; - int m_id; - wxObject* m_callbackUserData; - -}; - -// Item or menu event class -/* - wxEVT_COMMAND_BUTTON_CLICKED - wxEVT_COMMAND_CHECKBOX_CLICKED - wxEVT_COMMAND_CHOICE_SELECTED - wxEVT_COMMAND_LISTBOX_SELECTED - wxEVT_COMMAND_LISTBOX_DOUBLECLICKED - wxEVT_COMMAND_TEXT_UPDATED - wxEVT_COMMAND_TEXT_ENTER - wxEVT_COMMAND_MENU_SELECTED - wxEVT_COMMAND_SLIDER_UPDATED - wxEVT_COMMAND_RADIOBOX_SELECTED - wxEVT_COMMAND_RADIOBUTTON_SELECTED - wxEVT_COMMAND_SCROLLBAR_UPDATED - wxEVT_COMMAND_VLBOX_SELECTED - wxEVT_COMMAND_COMBOBOX_SELECTED -*/ - -class WXDLLEXPORT wxClientData; - -class WXDLLEXPORT wxCommandEvent: public wxEvent -{ - DECLARE_DYNAMIC_CLASS(wxCommandEvent) - - wxCommandEvent(wxEventType commandType = wxEVT_NULL, int id = 0); - inline ~wxCommandEvent(void) {} - - /* - * Accessors dependent on context - * - */ - - // Set/Get client data from controls - inline void SetClientData(void* clientData) { m_clientData = clientData; } - inline void *GetClientData() const { return m_clientData; } - - // Set/Get client object from controls - inline void SetClientObject(wxClientData* clientObject) { m_clientObject = clientObject; } - inline void *GetClientObject() const { return m_clientObject; } - - // Get listbox selection if single-choice - inline int GetSelection() const { return m_commandInt; } - - // Set/Get listbox/choice selection string - inline void SetString(char* s) { m_commandString = s; } - inline char *GetString() const { return m_commandString; } - - // Get checkbox value - inline bool Checked() const { return (m_commandInt != 0); } - - // TRUE if the listbox event was a selection. - inline bool IsSelection() const { return (m_extraLong != 0); } - - inline void SetExtraLong(long extraLong) { m_extraLong = extraLong; } - inline long GetExtraLong(void) const { return m_extraLong ; } - - inline void SetInt(int i) { m_commandInt = i; } - inline long GetInt(void) const { return m_commandInt ; } - - public: - char* m_commandString; // String event argument - int m_commandInt; - long m_extraLong; // Additional information (e.g. select/deselect) - void* m_clientData; // Arbitrary client data - wxClientData* m_clientObject; // Arbitrary client object -}; - -// this class adds a possibility to react (from the user) code to a control -// notification: allow or veto the operation being reported. -class WXDLLEXPORT wxNotifyEvent : public wxCommandEvent -{ -public: - wxNotifyEvent(wxEventType commandType = wxEVT_NULL, int id = 0) - : wxCommandEvent(commandType, id) { m_bAllow = TRUE; } - - // veto the operation (by default it's allowed) - void Veto() { m_bAllow = FALSE; } - - // for implementation code only: is the operation allowed? - bool IsAllowed() const { return m_bAllow; } - -private: - bool m_bAllow; - - DECLARE_DYNAMIC_CLASS(wxNotifyEvent) -}; - -// Scroll event class -/* - wxEVT_SCROLL_TOP - wxEVT_SCROLL_BOTTOM - wxEVT_SCROLL_LINEUP - wxEVT_SCROLL_LINEDOWN - wxEVT_SCROLL_PAGEUP - wxEVT_SCROLL_PAGEDOWN - wxEVT_SCROLL_THUMBTRACK -*/ - -class WXDLLEXPORT wxScrollEvent: public wxCommandEvent -{ - DECLARE_DYNAMIC_CLASS(wxScrollEvent) - - public: - wxScrollEvent(wxEventType commandType = wxEVT_NULL, int id = 0, int pos = 0, int orient = 0); - inline ~wxScrollEvent(void) {} - - /* - * Accessors - * - */ - - inline int GetOrientation(void) const { return (int) m_extraLong ; } - inline int GetPosition(void) const { return m_commandInt ; } - inline void SetOrientation(int orient) { m_extraLong = (long) orient; } - inline void SetPosition(int pos) { m_commandInt = pos; } -}; - -// Mouse event class - -/* - wxEVT_LEFT_DOWN - wxEVT_LEFT_UP - wxEVT_MIDDLE_DOWN - wxEVT_MIDDLE_UP - wxEVT_RIGHT_DOWN - wxEVT_RIGHT_UP - wxEVT_MOTION - wxEVT_ENTER_WINDOW - wxEVT_LEAVE_WINDOW - wxEVT_LEFT_DCLICK - wxEVT_MIDDLE_DCLICK - wxEVT_RIGHT_DCLICK - wxEVT_NC_LEFT_DOWN - wxEVT_NC_LEFT_UP, - wxEVT_NC_MIDDLE_DOWN, - wxEVT_NC_MIDDLE_UP, - wxEVT_NC_RIGHT_DOWN, - wxEVT_NC_RIGHT_UP, - wxEVT_NC_MOTION, - wxEVT_NC_ENTER_WINDOW, - wxEVT_NC_LEAVE_WINDOW, - wxEVT_NC_LEFT_DCLICK, - wxEVT_NC_MIDDLE_DCLICK, - wxEVT_NC_RIGHT_DCLICK, -*/ - -class WXDLLEXPORT wxDC; -class WXDLLEXPORT wxMouseEvent: public wxEvent -{ - DECLARE_DYNAMIC_CLASS(wxMouseEvent) - - public: - wxMouseEvent(wxEventType mouseType = wxEVT_NULL); - - // Was it a button event? (*doesn't* mean: is any button *down*?) - inline bool IsButton(void) const { return Button(-1); } - - // Was it a down event from button 1, 2 or 3 or any? - bool ButtonDown(int but = -1) const; - - // Was it a dclick event from button 1, 2 or 3 or any? - bool ButtonDClick(int but = -1) const; - - // Was it a up event from button 1, 2 or 3 or any? - bool ButtonUp(int but = -1) const; - - // Was the given button 1,2,3 or any changing state? - bool Button(int but) const; - - // Was the given button 1,2,3 or any in Down state? - bool ButtonIsDown(int but) const; - - // Find state of shift/control keys - inline bool ControlDown(void) const { return m_controlDown; } - inline bool MetaDown(void) const { return m_metaDown; } - inline bool AltDown(void) const { return m_altDown; } - inline bool ShiftDown(void) const { return m_shiftDown; } - - // Find which event was just generated - inline bool LeftDown(void) const { return (m_eventType == wxEVT_LEFT_DOWN); } - inline bool MiddleDown(void) const { return (m_eventType == wxEVT_MIDDLE_DOWN); } - inline bool RightDown(void) const { return (m_eventType == wxEVT_RIGHT_DOWN); } - - inline bool LeftUp(void) const { return (m_eventType == wxEVT_LEFT_UP); } - inline bool MiddleUp(void) const { return (m_eventType == wxEVT_MIDDLE_UP); } - inline bool RightUp(void) const { return (m_eventType == wxEVT_RIGHT_UP); } - - inline bool LeftDClick(void) const { return (m_eventType == wxEVT_LEFT_DCLICK); } - inline bool MiddleDClick(void) const { return (m_eventType == wxEVT_MIDDLE_DCLICK); } - inline bool RightDClick(void) const { return (m_eventType == wxEVT_RIGHT_DCLICK); } - - // Find the current state of the mouse buttons (regardless - // of current event type) - inline bool LeftIsDown(void) const { return m_leftDown; } - inline bool MiddleIsDown(void) const { return m_middleDown; } - inline bool RightIsDown(void) const { return m_rightDown; } - - // True if a button is down and the mouse is moving - inline bool Dragging(void) const { return ((m_eventType == wxEVT_MOTION) && (LeftIsDown() || MiddleIsDown() || RightIsDown())); } - - // True if the mouse is moving, and no button is down - inline bool Moving(void) const { return (m_eventType == wxEVT_MOTION); } - - // True if the mouse is just entering the window - inline bool Entering(void) const { return (m_eventType == wxEVT_ENTER_WINDOW); } - - // True if the mouse is just leaving the window - inline bool Leaving(void) const { return (m_eventType == wxEVT_LEAVE_WINDOW); } - - // Find the position of the event - inline void Position(long *xpos, long *ypos) const { *xpos = m_x; *ypos = m_y; } - - // Find the position of the event - inline wxPoint GetPosition() const { return wxPoint(m_x, m_y); } - - // Find the logical position of the event given the DC - wxPoint GetLogicalPosition(const wxDC& dc) const ; - - // Compatibility - inline void Position(float *xpos, float *ypos) const { *xpos = (float) m_x; *ypos = (float) m_y; } - - // Get X position - inline long GetX(void) const { return m_x; } - - // Get Y position - inline long GetY(void) const { return m_y; } - -public: - long m_x; - long m_y; - bool m_leftDown; - bool m_middleDown; - bool m_rightDown; - - bool m_controlDown; - bool m_shiftDown; - bool m_altDown; - bool m_metaDown; - -}; - -// Keyboard input event class - -/* - wxEVT_CHAR - wxEVT_CHAR_HOOK - wxEVT_KEY_DOWN - wxEVT_KEY_UP - */ - -class WXDLLEXPORT wxKeyEvent: public wxEvent -{ - DECLARE_DYNAMIC_CLASS(wxKeyEvent) - -public: - wxKeyEvent(wxEventType keyType = wxEVT_NULL); - - // Find state of shift/control keys - inline bool ControlDown(void) const { return m_controlDown; } - inline bool MetaDown(void) const { return m_metaDown; } - inline bool AltDown(void) const { return m_altDown; } - inline bool ShiftDown(void) const { return m_shiftDown; } - inline long KeyCode(void) const { return m_keyCode; } - - // Find the position of the event - inline void Position(float *xpos, float *ypos) const { *xpos = m_x; *ypos = m_y; } - - // Get X position - inline float GetX(void) const { return m_x; } - - // Get Y position - inline float GetY(void) const { return m_y; } - -public: - float m_x ; - float m_y ; - long m_keyCode; - bool m_controlDown; - bool m_shiftDown; - bool m_altDown; - bool m_metaDown; - -}; - -// Size event class -/* - wxEVT_SIZE - */ - -class WXDLLEXPORT wxSizeEvent: public wxEvent -{ - DECLARE_DYNAMIC_CLASS(wxSizeEvent) - - public: - wxSize m_size; - - inline wxSizeEvent(void) { m_eventType = wxEVT_SIZE; } - inline wxSizeEvent(const wxSize& sz, int id = 0) - { m_eventType = wxEVT_SIZE; m_size.x = sz.x; m_size.y = sz.y; m_id = id; } - - inline wxSize GetSize(void) const { return m_size; } -}; - -// Move event class - -/* - wxEVT_MOVE - */ - -class WXDLLEXPORT wxMoveEvent: public wxEvent -{ - DECLARE_DYNAMIC_CLASS(wxMoveEvent) - - public: - wxPoint m_pos; - - inline wxMoveEvent(void) { m_eventType = wxEVT_MOVE; } - inline wxMoveEvent(const wxPoint& pos, int id = 0) - { m_eventType = wxEVT_MOVE; m_pos.x = pos.x; m_pos.y = pos.y; m_id = id; } - - inline wxPoint GetPosition(void) const { return m_pos; } -}; - -// Paint event class -/* - wxEVT_PAINT - wxEVT_NC_PAINT - wxEVT_PAINT_ICON - */ - -class WXDLLEXPORT wxPaintEvent: public wxEvent -{ - DECLARE_DYNAMIC_CLASS(wxPaintEvent) - - public: - inline wxPaintEvent(int Id = 0) { m_eventType = wxEVT_PAINT; m_id = Id; } -}; - -// Erase background event class -/* - wxEVT_ERASE_BACKGROUND - */ - -class WXDLLEXPORT wxDC; -class WXDLLEXPORT wxEraseEvent: public wxEvent -{ - DECLARE_DYNAMIC_CLASS(wxEraseEvent) - public: - wxDC *m_dc ; - inline wxEraseEvent(int Id = 0, wxDC *dc = (wxDC *) NULL) { m_eventType = wxEVT_ERASE_BACKGROUND; m_id = Id; m_dc = dc; } - inline wxDC *GetDC() const { return m_dc; } -}; - -// Focus event class -/* - wxEVT_SET_FOCUS - wxEVT_KILL_FOCUS - */ - -class WXDLLEXPORT wxFocusEvent: public wxEvent -{ - DECLARE_DYNAMIC_CLASS(wxFocusEvent) - - public: - inline wxFocusEvent(wxEventType type = wxEVT_NULL, int Id = 0) { m_eventType = type; m_id = Id; } -}; - -// Activate event class -/* - wxEVT_ACTIVATE - wxEVT_ACTIVATE_APP - */ - -class WXDLLEXPORT wxActivateEvent: public wxEvent -{ - DECLARE_DYNAMIC_CLASS(wxActivateEvent) - - public: - bool m_active; - inline wxActivateEvent(wxEventType type = wxEVT_NULL, bool active = TRUE, int Id = 0) { m_eventType = type; m_active = active; m_id = Id; } - inline bool GetActive(void) const { return m_active; } -}; - -// InitDialog event class -/* - wxEVT_INIT_DIALOG - */ - -class WXDLLEXPORT wxInitDialogEvent: public wxEvent -{ - DECLARE_DYNAMIC_CLASS(wxInitDialogEvent) - - public: - inline wxInitDialogEvent(int Id = 0) { m_eventType = wxEVT_INIT_DIALOG; m_id = Id; } -}; - -// Miscellaneous menu event class -/* - wxEVT_MENU_CHAR, - wxEVT_MENU_INIT, - wxEVT_MENU_HIGHLIGHT, - wxEVT_POPUP_MENU_INIT, - wxEVT_CONTEXT_MENU, -*/ - -class WXDLLEXPORT wxMenuEvent: public wxEvent -{ - DECLARE_DYNAMIC_CLASS(wxMenuEvent) - -public: - int m_menuId; - - inline wxMenuEvent(wxEventType type = wxEVT_NULL, int id = 0) { m_eventType = type; m_menuId = id; } - - inline int GetMenuId(void) const { return m_menuId; } -}; - -// Window close or session close event class -/* - wxEVT_CLOSE_WINDOW, - wxEVT_END_SESSION, - wxEVT_QUERY_END_SESSION - */ - -class WXDLLEXPORT wxCloseEvent: public wxEvent -{ - DECLARE_DYNAMIC_CLASS(wxCloseEvent) -public: - - inline wxCloseEvent(wxEventType type = wxEVT_NULL, int id = 0) - { m_eventType = type; m_loggingOff = TRUE; m_veto = FALSE; - m_id = id; m_force = FALSE; m_canVeto = FALSE; } - - inline void SetLoggingOff(bool logOff) { m_loggingOff = logOff; } - inline bool GetLoggingOff(void) const { return m_loggingOff; } - inline void Veto(bool veto = TRUE) { m_veto = veto; } - inline void SetCanVeto(bool canVeto) { m_canVeto = canVeto; } - inline bool CanVeto() const { return m_canVeto; } - inline bool GetVeto(void) const { return m_veto; } - - // This is probably obsolete now, since we use CanVeto instead, in - // both OnCloseWindow and OnQueryEndSession. - // m_force == ! m_canVeto i.e., can't veto means we must force it to close. - inline void SetForce(bool force) { m_force = force; } - inline bool GetForce(void) const { return m_force; } - - protected: - bool m_loggingOff; - bool m_veto; - bool m_force; - bool m_canVeto; -}; - -/* - wxEVT_SHOW - */ - -class WXDLLEXPORT wxShowEvent: public wxEvent -{ - DECLARE_DYNAMIC_CLASS(wxShowEvent) -public: - - inline wxShowEvent(int id = 0, bool show = FALSE) - { m_eventType = wxEVT_SHOW; m_id = id; m_show = show; } - - inline void SetShow(bool show) { m_show = show; } - inline bool GetShow(void) const { return m_show; } - -protected: - bool m_show; -}; - -/* - wxEVT_ICONIZE - */ - -class WXDLLEXPORT wxIconizeEvent: public wxEvent -{ - DECLARE_DYNAMIC_CLASS(wxIconizeEvent) -public: - - inline wxIconizeEvent(int id = 0) - { m_eventType = wxEVT_ICONIZE; m_id = id; } -}; - -/* - wxEVT_MAXIMIZE - */ - -class WXDLLEXPORT wxMaximizeEvent: public wxEvent -{ - DECLARE_DYNAMIC_CLASS(wxMaximizeEvent) -public: - - inline wxMaximizeEvent(int id = 0) - { m_eventType = wxEVT_MAXIMIZE; m_id = id; } -}; - -// Joystick event class -/* - wxEVT_JOY_BUTTON_DOWN, - wxEVT_JOY_BUTTON_UP, - wxEVT_JOY_MOVE, - wxEVT_JOY_ZMOVE -*/ - -// Which joystick? Same as Windows ids so no conversion necessary. -#define wxJOYSTICK1 0 -#define wxJOYSTICK2 1 - -// Which button is down? -#define wxJOY_BUTTON1 1 -#define wxJOY_BUTTON2 2 -#define wxJOY_BUTTON3 4 -#define wxJOY_BUTTON4 8 -#define wxJOY_BUTTON_ANY -1 - -class WXDLLEXPORT wxJoystickEvent: public wxEvent -{ - DECLARE_DYNAMIC_CLASS(wxJoystickEvent) - - public: - wxPoint m_pos; - int m_zPosition; - int m_buttonChange; // Which button changed? - int m_buttonState; // Which buttons are down? - int m_joyStick; // Which joystick? - - inline wxJoystickEvent(wxEventType type = wxEVT_NULL, int state = 0, int joystick = wxJOYSTICK1, int change = 0) - { m_eventType = type; m_buttonState = state; m_pos = wxPoint(0,0); m_zPosition = 0; - m_joyStick = joystick; m_buttonChange = change; } - - inline wxPoint GetPosition(void) const { return m_pos; } - inline int GetZPosition(void) const { return m_zPosition; } - inline int GetButtonState(void) const { return m_buttonState; } - inline int GetButtonChange(void) const { return m_buttonChange; } - inline int GetJoystick(void) const { return m_joyStick; } - - inline void SetJoystick(int stick) { m_joyStick = stick; } - inline void SetButtonState(int state) { m_buttonState = state; } - inline void SetButtonChange(int change) { m_buttonChange = change; } - inline void SetPosition(const wxPoint& pos) { m_pos = pos; } - inline void SetZPosition(int zPos) { m_zPosition = zPos; } - - // Was it a button event? (*doesn't* mean: is any button *down*?) - inline bool IsButton(void) const { return ((GetEventType() == wxEVT_JOY_BUTTON_DOWN) || - (GetEventType() == wxEVT_JOY_BUTTON_DOWN)); } - - // Was it a move event? - inline bool IsMove(void) const { return (GetEventType() == wxEVT_JOY_MOVE) ; } - - // Was it a zmove event? - inline bool IsZMove(void) const { return (GetEventType() == wxEVT_JOY_ZMOVE) ; } - - // Was it a down event from button 1, 2, 3, 4 or any? - inline bool ButtonDown(int but = wxJOY_BUTTON_ANY) const - { return ((GetEventType() == wxEVT_JOY_BUTTON_DOWN) && - ((but == wxJOY_BUTTON_ANY) || (but == m_buttonChange))); } - - // Was it a up event from button 1, 2, 3 or any? - inline bool ButtonUp(int but = wxJOY_BUTTON_ANY) const - { return ((GetEventType() == wxEVT_JOY_BUTTON_UP) && - ((but == wxJOY_BUTTON_ANY) || (but == m_buttonChange))); } - - // Was the given button 1,2,3,4 or any in Down state? - inline bool ButtonIsDown(int but = wxJOY_BUTTON_ANY) const - { return (((but == wxJOY_BUTTON_ANY) && (m_buttonState != 0)) || - ((m_buttonState & but) == but)); } -}; - -// Drop files event class -/* - wxEVT_DROP_FILES - */ - -class WXDLLEXPORT wxDropFilesEvent: public wxEvent -{ - DECLARE_DYNAMIC_CLASS(wxDropFilesEvent) - - public: - int m_noFiles; - wxPoint m_pos; - wxString* m_files; // Memory (de)allocated by code calling ProcessEvent - - inline wxDropFilesEvent(wxEventType type = wxEVT_NULL, int noFiles = 0, wxString *files = (wxString *) NULL) - { m_eventType = type; m_noFiles = noFiles; m_files = files; } - - inline wxPoint GetPosition(void) const { return m_pos; } - inline int GetNumberOfFiles(void) const { return m_noFiles; } - inline wxString *GetFiles(void) const { return m_files; } -}; - -// Idle event -/* - wxEVT_IDLE - */ - -class WXDLLEXPORT wxIdleEvent: public wxEvent -{ - DECLARE_DYNAMIC_CLASS(wxIdleEvent) - -public: - inline wxIdleEvent(void) - { m_eventType = wxEVT_IDLE; m_requestMore = FALSE; } - - inline void RequestMore(bool needMore = TRUE) { m_requestMore = needMore; } - inline bool MoreRequested(void) const { return m_requestMore; } - -protected: - bool m_requestMore; -}; - -// Update UI event -/* - wxEVT_UPDATE_UI - */ - -class WXDLLEXPORT wxMenu; -class WXDLLEXPORT wxWindow; - -class WXDLLEXPORT wxUpdateUIEvent: public wxCommandEvent -{ - DECLARE_DYNAMIC_CLASS(wxUpdateUIEvent) - - inline wxUpdateUIEvent(wxWindowID commandId = 0) - { m_eventType = wxEVT_UPDATE_UI; m_id = commandId; - m_checked = FALSE; m_setChecked = FALSE; m_enabled = FALSE; m_setEnabled = FALSE; - m_setText = FALSE; m_text = ""; } - - inline bool GetChecked(void) const { return m_checked; } - inline bool GetEnabled(void) const { return m_enabled; } - inline wxString GetText(void) const { return m_text; } - inline bool GetSetText(void) const { return m_setText; } - inline bool GetSetChecked(void) const { return m_setChecked; } - inline bool GetSetEnabled(void) const { return m_setEnabled; } - - inline void Check(bool check) { m_checked = check; m_setChecked = TRUE; } - inline void Enable(bool enable) { m_enabled = enable; m_setEnabled = TRUE; } - inline void SetText(const wxString& text) { m_text = text; m_setText = TRUE; } - - protected: - - bool m_checked; - bool m_enabled; - bool m_setEnabled; - bool m_setText; - bool m_setChecked; - wxString m_text; - -}; - -/* - wxEVT_SYS_COLOUR_CHANGED - */ - -// TODO: shouldn't all events record the window ID? -class WXDLLEXPORT wxSysColourChangedEvent: public wxEvent -{ - DECLARE_DYNAMIC_CLASS(wxSysColourChangedEvent) - - public: - inline wxSysColourChangedEvent(void) - { m_eventType = wxEVT_SYS_COLOUR_CHANGED; } -}; - -/* - wxEVT_PALETTE_CHANGED - */ - -class WXDLLEXPORT wxPaletteChangedEvent: public wxEvent -{ - DECLARE_DYNAMIC_CLASS(wxPaletteChangedEvent) - -public: - inline wxPaletteChangedEvent(wxWindowID id = 0): wxEvent(id) - { m_eventType = wxEVT_PALETTE_CHANGED; m_changedWindow = (wxWindow *) NULL; } - - inline void SetChangedWindow(wxWindow* win) { m_changedWindow = win; } - inline wxWindow* GetChangedWindow() const { return m_changedWindow; } - -protected: - wxWindow* m_changedWindow; -}; - -/* - wxEVT_QUERY_NEW_PALETTE - Indicates the window is getting keyboard focus and should re-do its palette. - */ - -class WXDLLEXPORT wxQueryNewPaletteEvent: public wxEvent -{ - DECLARE_DYNAMIC_CLASS(wxQueryNewPaletteEvent) - -public: - inline wxQueryNewPaletteEvent(wxWindowID id = 0): wxEvent(id) - { m_eventType = wxEVT_QUERY_NEW_PALETTE; m_paletteRealized = FALSE; } - - // App sets this if it changes the palette. - inline void SetPaletteRealized(bool realized) { m_paletteRealized = realized; } - inline bool GetPaletteRealized() const { return m_paletteRealized; } - -protected: - bool m_paletteRealized; -}; - -/* - Event generated by dialog navigation keys - wxEVT_NAVIGATION_KEY - */ -// must derive from command event to be propagated to the parent -class WXDLLEXPORT wxNavigationKeyEvent : public wxCommandEvent -{ - DECLARE_DYNAMIC_CLASS(wxNavigationKeyEvent) - -public: - wxNavigationKeyEvent() : wxCommandEvent(wxEVT_NAVIGATION_KEY) { } - - // direction: forward (true) or backward (false) - bool GetDirection() const { return m_commandInt == 1; } - void SetDirection(bool bForward) { m_commandInt = bForward; } - - // it may be a window change event (MDI, notebook pages...) or a control - // change event - bool IsWindowChange() const { return m_extraLong == 1; } - void SetWindowChange(bool bIs) { m_extraLong = bIs; } - - // the child which has the focus currently (may be NULL - use - // wxWindow::FindFocus then) - wxWindow* GetCurrentFocus() const { return (wxWindow *)m_clientData; } - void SetCurrentFocus(wxWindow *win) { m_clientData = (void *)win; } -}; - -/* TODO - wxEVT_POWER, - wxEVT_CREATE, - wxEVT_DESTROY, - wxEVT_MOUSE_CAPTURE_CHANGED, - wxEVT_SETTING_CHANGED, // WM_WININICHANGE (NT) / WM_SETTINGCHANGE (Win95) -// wxEVT_FONT_CHANGED, // WM_FONTCHANGE: roll into wxEVT_SETTING_CHANGED, but remember to propagate - // wxEVT_FONT_CHANGED to all other windows (maybe). - wxEVT_DRAW_ITEM, // Leave these three as virtual functions in wxControl?? Platform-specific. - wxEVT_MEASURE_ITEM, - wxEVT_COMPARE_ITEM -*/ - -class WXDLLEXPORT wxWindow; -class WXDLLEXPORT wxControl; - -// struct WXDLLEXPORT wxEventTableEntry; - -typedef void (wxObject::*wxObjectEventFunction)(wxEvent&); - -struct WXDLLEXPORT wxEventTableEntry -{ - // For some reason, this can't be wxEventType, or VC++ complains. - int m_eventType; // main event type - int m_id; // control/menu/toolbar id - int m_lastId; // used for ranges of ids - wxObjectEventFunction m_fn; // function to call: not wxEventFunction, because - // of dependency problems - wxObject* m_callbackUserData; -}; - -struct WXDLLEXPORT wxEventTable -{ - const wxEventTable *baseTable; // Points to base event table (next in chain) - const wxEventTableEntry *entries; // Points to bottom of entry array -}; - -class WXDLLEXPORT wxEvtHandler: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxEvtHandler) - public: - wxEvtHandler(void); - ~wxEvtHandler(void); - - inline wxEvtHandler *GetNextHandler(void) const { return m_nextHandler; } - inline wxEvtHandler *GetPreviousHandler(void) const { return m_previousHandler; } - inline void SetNextHandler(wxEvtHandler *handler) { m_nextHandler = handler; } - inline void SetPreviousHandler(wxEvtHandler *handler) { m_previousHandler = handler; } - - inline void SetEvtHandlerEnabled(bool en) { m_enabled = en; } - inline bool GetEvtHandlerEnabled(void) const { return m_enabled; } - - inline virtual void OnCommand(wxWindow& WXUNUSED(win), wxCommandEvent& WXUNUSED(event)) {}; - // Called if child control has no - // callback function - // Default behaviour - virtual long Default(void) { if (GetNextHandler()) return GetNextHandler()->Default(); else return 0; }; - - virtual bool OnClose(void); - - virtual bool ProcessEvent(wxEvent& event); - virtual bool SearchEventTable(wxEventTable& table, wxEvent& event); - - // Dynamic association of a member function handler with the event handler, id and event type - void Connect( int id, int lastId, wxEventType eventType, - wxObjectEventFunction func, - wxObject *userData = (wxObject *) NULL ); - - // Convenience function: take just one id - inline void Connect( int id, wxEventType eventType, - wxObjectEventFunction func, - wxObject *userData = (wxObject *) NULL ) { Connect(id, -1, eventType, func, userData); } - - bool SearchDynamicEventTable( wxEvent& event ); - -private: - static const wxEventTableEntry sm_eventTableEntries[]; -protected: - static const wxEventTable sm_eventTable; - virtual const wxEventTable* GetEventTable() const; -protected: - wxEvtHandler* m_nextHandler; - wxEvtHandler* m_previousHandler; - bool m_enabled; // Is event handler enabled? - wxList* m_dynamicEvents; - -}; - -typedef void (wxEvtHandler::*wxEventFunction)(wxEvent&); -typedef void (wxEvtHandler::*wxCommandEventFunction)(wxCommandEvent&); -typedef void (wxEvtHandler::*wxScrollEventFunction)(wxScrollEvent&); -typedef void (wxEvtHandler::*wxSizeEventFunction)(wxSizeEvent&); -typedef void (wxEvtHandler::*wxMoveEventFunction)(wxMoveEvent&); -typedef void (wxEvtHandler::*wxPaintEventFunction)(wxPaintEvent&); -typedef void (wxEvtHandler::*wxEraseEventFunction)(wxEraseEvent&); -typedef void (wxEvtHandler::*wxMouseEventFunction)(wxMouseEvent&); -typedef void (wxEvtHandler::*wxCharEventFunction)(wxKeyEvent&); -typedef void (wxEvtHandler::*wxFocusEventFunction)(wxFocusEvent&); -typedef void (wxEvtHandler::*wxActivateEventFunction)(wxActivateEvent&); -typedef void (wxEvtHandler::*wxMenuEventFunction)(wxMenuEvent&); -typedef void (wxEvtHandler::*wxJoystickEventFunction)(wxJoystickEvent&); -typedef void (wxEvtHandler::*wxDropFilesEventFunction)(wxDropFilesEvent&); -typedef void (wxEvtHandler::*wxInitDialogEventFunction)(wxInitDialogEvent&); -typedef void (wxEvtHandler::*wxSysColourChangedFunction)(wxSysColourChangedEvent&); -typedef void (wxEvtHandler::*wxUpdateUIEventFunction)(wxUpdateUIEvent&); -typedef void (wxEvtHandler::*wxIdleEventFunction)(wxIdleEvent&); -typedef void (wxEvtHandler::*wxCloseEventFunction)(wxCloseEvent&); -typedef void (wxEvtHandler::*wxShowEventFunction)(wxShowEvent&); -typedef void (wxEvtHandler::*wxIconizeEventFunction)(wxShowEvent&); -typedef void (wxEvtHandler::*wxMaximizeEventFunction)(wxShowEvent&); -typedef void (wxEvtHandler::*wxNavigationKeyEventFunction)(wxNavigationKeyEvent&); -typedef void (wxEvtHandler::*wxPaletteChangedEventFunction)(wxPaletteChangedEvent&); -typedef void (wxEvtHandler::*wxQueryNewPaletteEventFunction)(wxQueryNewPaletteEvent&); - -// N.B. In GNU-WIN32, you *have* to take the address of a member function -// (use &) or the compiler crashes... - -#define DECLARE_EVENT_TABLE() \ -private:\ - static const wxEventTableEntry sm_eventTableEntries[];\ -protected:\ - static const wxEventTable sm_eventTable;\ - virtual const wxEventTable* GetEventTable() const; - -#define BEGIN_EVENT_TABLE(theClass, baseClass) \ -const wxEventTable *theClass::GetEventTable() const { return &theClass::sm_eventTable; }\ -const wxEventTable theClass::sm_eventTable =\ - { &baseClass::sm_eventTable, &theClass::sm_eventTableEntries[0] };\ -const wxEventTableEntry theClass::sm_eventTableEntries[] = { \ - -#define END_EVENT_TABLE() \ - { 0, 0, 0, 0, 0 } }; - -/* - * Event table macros - */ - -// Generic events -#define EVT_CUSTOM(event, id, func) { event, id, -1, (wxObjectEventFunction) (wxEventFunction) & func, (wxObject *) NULL }, -#define EVT_CUSTOM_RANGE(event, id1, id2, func) { event, id1, id2, (wxObjectEventFunction) (wxEventFunction) & func, (wxObject *) NULL }, - -// Miscellaneous -#define EVT_SIZE(func) { wxEVT_SIZE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxSizeEventFunction) & func, (wxObject *) NULL }, -#define EVT_MOVE(func) { wxEVT_MOVE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMoveEventFunction) & func, (wxObject *) NULL }, -#define EVT_CLOSE(func) { wxEVT_CLOSE_WINDOW, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxCloseEventFunction) & func, (wxObject *) NULL }, -#define EVT_END_SESSION(func) { wxEVT_END_SESSION, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxCloseEventFunction) & func, (wxObject *) NULL }, -#define EVT_QUERY_END_SESSION(func) { wxEVT_QUERY_END_SESSION, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxCloseEventFunction) & func, (wxObject *) NULL }, -#define EVT_PAINT(func) { wxEVT_PAINT, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxPaintEventFunction) & func, (wxObject *) NULL }, -#define EVT_ERASE_BACKGROUND(func) { wxEVT_ERASE_BACKGROUND, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxEraseEventFunction) & func, (wxObject *) NULL }, -#define EVT_CHAR(func) { wxEVT_CHAR, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxCharEventFunction) & func, (wxObject *) NULL }, -#define EVT_KEY_DOWN(func) { wxEVT_KEY_DOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxCharEventFunction) & func, (wxObject *) NULL }, -#define EVT_KEY_UP(func) { wxEVT_KEY_UP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxCharEventFunction) & func, (wxObject *) NULL }, -#define EVT_CHAR_HOOK(func) { wxEVT_CHAR_HOOK, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxCharEventFunction) & func, NULL }, -#define EVT_MENU_HIGHLIGHT(id, func) { wxEVT_MENU_HIGHLIGHT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxMenuEventFunction) & func, (wxObject *) NULL }, -#define EVT_MENU_HIGHLIGHT_ALL(func) { wxEVT_MENU_HIGHLIGHT, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMenuEventFunction) & func, (wxObject *) NULL }, -#define EVT_SET_FOCUS(func) { wxEVT_SET_FOCUS, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxFocusEventFunction) & func, (wxObject *) NULL }, -#define EVT_KILL_FOCUS(func) { wxEVT_KILL_FOCUS, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxFocusEventFunction) & func, (wxObject *) NULL }, -#define EVT_ACTIVATE(func) { wxEVT_ACTIVATE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxActivateEventFunction) & func, (wxObject *) NULL }, -#define EVT_ACTIVATE_APP(func) { wxEVT_ACTIVATE_APP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxActivateEventFunction) & func, (wxObject *) NULL }, -#define EVT_END_SESSION(func) { wxEVT_END_SESSION, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxCloseEventFunction) & func, (wxObject *) NULL }, -#define EVT_QUERY_END_SESSION(func) { wxEVT_QUERY_END_SESSION, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxCloseEventFunction) & func, (wxObject *) NULL }, -#define EVT_DROP_FILES(func) { wxEVT_DROP_FILES, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxDropFilesEventFunction) & func, (wxObject *) NULL }, -#define EVT_INIT_DIALOG(func) { wxEVT_INIT_DIALOG, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxInitDialogEventFunction) & func, (wxObject *) NULL }, -#define EVT_SYS_COLOUR_CHANGED(func) { wxEVT_SYS_COLOUR_CHANGED, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxSysColourChangedFunction) & func, (wxObject *) NULL }, -#define EVT_SHOW(func) { wxEVT_SHOW, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxShowEventFunction) & func, (wxObject *) NULL }, -#define EVT_MAXIMIZE(func) { wxEVT_MAXIMIZE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMaximizeEventFunction) & func, (wxObject *) NULL }, -#define EVT_ICONIZE(func) { wxEVT_ICONIZE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxIconizeEventFunction) & func, (wxObject *) NULL }, -#define EVT_NAVIGATION_KEY(func) { wxEVT_NAVIGATION_KEY, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) (wxNavigationKeyEventFunction) & func, (wxObject *) NULL }, -#define EVT_PALETTE_CHANGED(func) { wxEVT_PALETTE_CHANGED, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxPaletteChangedEventFunction) & func, (wxObject *) NULL }, -#define EVT_QUERY_NEW_PALETTE(func) { wxEVT_QUERY_NEW_PALETTE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxQueryNewPaletteEventFunction) & func, (wxObject *) NULL }, - -// Mouse events -#define EVT_LEFT_DOWN(func) { wxEVT_LEFT_DOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL }, -#define EVT_LEFT_UP(func) { wxEVT_LEFT_UP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL }, -#define EVT_MIDDLE_DOWN(func) { wxEVT_MIDDLE_DOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL }, -#define EVT_MIDDLE_UP(func) { wxEVT_MIDDLE_UP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL }, -#define EVT_RIGHT_DOWN(func) { wxEVT_RIGHT_DOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL }, -#define EVT_RIGHT_UP(func) { wxEVT_RIGHT_UP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL }, -#define EVT_MOTION(func) { wxEVT_MOTION, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL }, -#define EVT_LEFT_DCLICK(func) { wxEVT_LEFT_DCLICK, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL }, -#define EVT_MIDDLE_DCLICK(func) { wxEVT_MIDDLE_DCLICK, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL }, -#define EVT_RIGHT_DCLICK(func) { wxEVT_RIGHT_DCLICK, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL }, -#define EVT_LEAVE_WINDOW(func) { wxEVT_LEAVE_WINDOW, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL }, -#define EVT_ENTER_WINDOW(func) { wxEVT_ENTER_WINDOW, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL }, - -// All mouse events -#define EVT_MOUSE_EVENTS(func) \ - { wxEVT_LEFT_DOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL },\ - { wxEVT_LEFT_UP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL },\ - { wxEVT_MIDDLE_DOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL },\ - { wxEVT_MIDDLE_UP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL },\ - { wxEVT_RIGHT_DOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL },\ - { wxEVT_RIGHT_UP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL },\ - { wxEVT_MOTION, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL },\ - { wxEVT_LEFT_DCLICK, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL },\ - { wxEVT_MIDDLE_DCLICK, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL },\ - { wxEVT_RIGHT_DCLICK, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL },\ - { wxEVT_ENTER_WINDOW, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL },\ - { wxEVT_LEAVE_WINDOW, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxMouseEventFunction) & func, (wxObject *) NULL }, - -// EVT_COMMAND -#define EVT_COMMAND(id, cmd, fn) { cmd, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL }, -#define EVT_COMMAND_RANGE(id1, id2, cmd, fn) { cmd, id1, id2, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL }, - -// Scrolling -#define EVT_SCROLL(func) \ - { wxEVT_SCROLL_TOP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL },\ - { wxEVT_SCROLL_BOTTOM, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL },\ - { wxEVT_SCROLL_LINEUP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL },\ - { wxEVT_SCROLL_LINEDOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL },\ - { wxEVT_SCROLL_PAGEUP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL },\ - { wxEVT_SCROLL_PAGEDOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL },\ - { wxEVT_SCROLL_THUMBTRACK, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL }, - -#define EVT_SCROLL_TOP(func) { wxEVT_SCROLL_TOP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL }, -#define EVT_SCROLL_BOTTOM(func) { wxEVT_SCROLL_BOTTOM, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL }, -#define EVT_SCROLL_LINEUP(func) { wxEVT_SCROLL_LINEUP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL }, -#define EVT_SCROLL_LINEDOWN(func) { wxEVT_SCROLL_LINEDOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL }, -#define EVT_SCROLL_PAGEUP(func) { wxEVT_SCROLL_PAGEUP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL }, -#define EVT_SCROLL_PAGEDOWN(func) { wxEVT_SCROLL_PAGEDOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL }, -#define EVT_SCROLL_THUMBTRACK(func) { wxEVT_SCROLL_THUMBTRACK, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL }, - -// Scrolling, with an id -#define EVT_COMMAND_SCROLL(id, func) \ - { wxEVT_SCROLL_TOP, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL },\ - { wxEVT_SCROLL_BOTTOM, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL },\ - { wxEVT_SCROLL_LINEUP, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL },\ - { wxEVT_SCROLL_LINEDOWN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL },\ - { wxEVT_SCROLL_PAGEUP, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL },\ - { wxEVT_SCROLL_PAGEDOWN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL },\ - { wxEVT_SCROLL_THUMBTRACK, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL }, - -#define EVT_COMMAND_SCROLL_TOP(id, func) { wxEVT_SCROLL_TOP, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL }, -#define EVT_COMMAND_SCROLL_BOTTOM(id, func) { wxEVT_SCROLL_BOTTOM, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL }, -#define EVT_COMMAND_SCROLL_LINEUP(id, func) { wxEVT_SCROLL_LINEUP, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL }, -#define EVT_COMMAND_SCROLL_LINEDOWN(id, func) { wxEVT_SCROLL_LINEDOWN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL }, -#define EVT_COMMAND_SCROLL_PAGEUP(id, func) { wxEVT_SCROLL_PAGEUP, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL }, -#define EVT_COMMAND_SCROLL_PAGEDOWN(id, func) { wxEVT_SCROLL_PAGEDOWN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL }, -#define EVT_COMMAND_SCROLL_THUMBTRACK(id, func) { wxEVT_SCROLL_THUMBTRACK, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxScrollEventFunction) & func, (wxObject *) NULL }, - -// Convenience macros for commonly-used commands -#define EVT_BUTTON(id, fn) { wxEVT_COMMAND_BUTTON_CLICKED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL }, -#define EVT_CHECKBOX(id, fn) { wxEVT_COMMAND_CHECKBOX_CLICKED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL }, -#define EVT_CHOICE(id, fn) { wxEVT_COMMAND_CHOICE_SELECTED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL }, -#define EVT_LISTBOX(id, fn) { wxEVT_COMMAND_LISTBOX_SELECTED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL }, -#define EVT_LISTBOX_DCLICK(id, fn) { wxEVT_COMMAND_LISTBOX_DOUBLECLICKED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TEXT(id, fn) { wxEVT_COMMAND_TEXT_UPDATED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TEXT_ENTER(id, fn) { wxEVT_COMMAND_TEXT_ENTER, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL }, -#define EVT_MENU(id, fn) { wxEVT_COMMAND_MENU_SELECTED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL }, -#define EVT_MENU_RANGE(id1, id2, fn) { wxEVT_COMMAND_MENU_SELECTED, id1, id2, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL }, -#define EVT_SLIDER(id, fn) { wxEVT_COMMAND_SLIDER_UPDATED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL }, -#define EVT_RADIOBOX(id, fn) { wxEVT_COMMAND_RADIOBOX_SELECTED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL }, -#define EVT_RADIOBUTTON(id, fn) { wxEVT_COMMAND_RADIOBUTTON_SELECTED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL }, -// EVT_SCROLLBAR is now obsolete since we use EVT_COMMAND_SCROLL... events -#define EVT_SCROLLBAR(id, fn) { wxEVT_COMMAND_SCROLLBAR_UPDATED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL }, -#define EVT_VLBOX(id, fn) { wxEVT_COMMAND_VLBOX_SELECTED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL }, -#define EVT_COMBOBOX(id, fn) { wxEVT_COMMAND_COMBOBOX_SELECTED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TOOL(id, fn) { wxEVT_COMMAND_TOOL_CLICKED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TOOL_RANGE(id1, id2, fn) { wxEVT_COMMAND_TOOL_CLICKED, id1, id2, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TOOL_RCLICKED(id, fn) { wxEVT_COMMAND_TOOL_RCLICKED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TOOL_RCLICKED_RANGE(id1, id2, fn) { wxEVT_COMMAND_TOOL_RCLICKED, id1, id2, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TOOL_ENTER(id, fn) { wxEVT_COMMAND_TOOL_ENTER, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL }, -#define EVT_CHECKLISTBOX(id, fn) { wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL }, - -// Generic command events -#define EVT_COMMAND_LEFT_CLICK(id, fn) { wxEVT_COMMAND_LEFT_CLICK, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL }, -#define EVT_COMMAND_LEFT_DCLICK(id, fn) { wxEVT_COMMAND_LEFT_DCLICK, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL }, -#define EVT_COMMAND_RIGHT_CLICK(id, fn) { wxEVT_COMMAND_RIGHT_CLICK, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL }, -#define EVT_COMMAND_RIGHT_DCLICK(id, fn) { wxEVT_COMMAND_RIGHT_DCLICK, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL }, -#define EVT_COMMAND_SET_FOCUS(id, fn) { wxEVT_COMMAND_SET_FOCUS, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL }, -#define EVT_COMMAND_KILL_FOCUS(id, fn) { wxEVT_COMMAND_KILL_FOCUS, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL }, -#define EVT_COMMAND_ENTER(id, fn) { wxEVT_COMMAND_ENTER, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) & fn, (wxObject *) NULL }, - -// Joystick events -#define EVT_JOY_DOWN(func) \ - { wxEVT_JOY_BUTTON_DOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxJoystickEventFunction) & func, (wxObject *) NULL }, -#define EVT_JOY_UP(func) \ - { wxEVT_JOY_BUTTON_UP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxJoystickEventFunction) & func, (wxObject *) NULL }, -#define EVT_JOY_MOVE(func) \ - { wxEVT_JOY_MOVE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxJoystickEventFunction) & func, (wxObject *) NULL }, -#define EVT_JOY_ZMOVE(func) \ - { wxEVT_JOY_ZMOVE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxJoystickEventFunction) & func, (wxObject *) NULL }, - -// All joystick events -#define EVT_JOYSTICK_EVENTS(func) \ - { wxEVT_JOY_BUTTON_DOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxJoystickEventFunction) & func, (wxObject *) NULL },\ - { wxEVT_JOY_BUTTON_UP, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxJoystickEventFunction) & func, (wxObject *) NULL },\ - { wxEVT_JOY_MOVE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxJoystickEventFunction) & func, (wxObject *) NULL },\ - { wxEVT_JOY_ZMOVE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxJoystickEventFunction) & func, (wxObject *) NULL },\ - -// Idle event -#define EVT_IDLE(func) \ - { wxEVT_IDLE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxIdleEventFunction) & func, (wxObject *) NULL },\ - -// Update UI event -#define EVT_UPDATE_UI(id, func) \ - { wxEVT_UPDATE_UI, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxUpdateUIEventFunction) & func, (wxObject *) NULL },\ - -#endif - // _WX_EVENTH__ diff --git a/include/wx/expr.h b/include/wx/expr.h deleted file mode 100644 index 7dee180b93..0000000000 --- a/include/wx/expr.h +++ /dev/null @@ -1,129 +0,0 @@ -/* ////////////////////////////////////////////////////////////////////////// -// Name: expr.h -// Purpose: C helper defines and functions for wxExpr class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) -// Licence: wxWindows licence -////////////////////////////////////////////////////////////////////////// */ - -#ifndef _WX_EXPRH__ -#define _WX_EXPRH__ - -#include -#include - -#ifdef ____HPUX__ -#define alloca malloc -#endif - -/* Rename all YACC/LEX stuff or we'll conflict with other - * applications - */ - -#define yyback PROIO_yyback -#define yylook PROIO_yylook -#define yywrap PROIO_yywrap -#define yyoutput PROIO_yyoutput -#define yylex PROIO_yylex -#define yyerror PROIO_yyerror -#define input PROIO_input -#define unput PROIO_unput - -#define yyleng PROIO_yyleng -#define yytext PROIO_yytext -#define yymorfg PROIO_yymorfg -#define yylineno PROIO_yylineno -#define yytchar PROIO_yytchar -#define yyin PROIO_yyin -#define yyout PROIO_yyout -#define yysvf PROIO_yysvf -#define yyestate PROIO_yyestate -#define yysvec PROIO_yysvec -#define yybgin PROIO_yybgin -#define yyprevious PROIO_yyprevious -#define yylhs PROIO_yylhs -#define yylen PROIO_yylen -#define yydefred PROIO_yydefred -#define yydgoto PROIO_yydgoto -#define yysindex PROIO_yysindex -#define yyrindex PROIO_yyrindex -#define yygindex PROIO_yygindex -#define yytable PROIO_yytable -#define yycheck PROIO_yycheck -#define yyname PROIO_yyname -#define yyrule PROIO_yyrule -#define yydebug PROIO_yydebug -#define yynerrs PROIO_yynerrs -#define yyerrflag PROIO_yyerrflag -#define yychar PROIO_yychar -#define yyvsp PROIO_yyvsp -#define yyssp PROIO_yyssp -#define yyval PROIO_yyval -#define yylval PROIO_yylval -#define yyss PROIO_yyss -#define yyvs PROIO_yyvs -#define yyparse PROIO_yyparse - -/* +++steve162e: more defines necessary */ -#define yy_init_buffer PROIO_yy_init_buffer -#define yy_create_buffer PROIO_yy_create_buffer -#define yy_load_buffer_state PROIO_yy_load_buffer_state -#define yyrestart PROIO_yyrestart -#define yy_switch_to_buffer PROIO_yy_switch_to_buffer -#define yy_delete_buffer PROIO_yy_delete_buffer -/* ---steve162e */ - -/* WG 1/96: still more for flex 2.5 */ -#define yy_scan_buffer PROIO_scan_buffer -#define yy_scan_string PROIO_scan_string -#define yy_scan_bytes PROIO_scan_bytes -#define yy_flex_debug PROIO_flex_debug -#define yy_flush_buffer PROIO_flush_buffer -#define yyleng PROIO_yyleng -#define yytext PROIO_yytext - -#ifdef __cplusplus -extern "C" { -char *proio_cons(char *, char *); -char * wxmake_integer(char *); -char * wxmake_word(char *); -char * wxmake_string(char *); -char * wxmake_real(char *, char *); -char * wxmake_exp(char *, char *); -char * wxmake_exp2(char *, char *, char*); -void add_expr(char *); -void process_command(char *); -void syntax_error(char *); -} -#else -#if __BORLANDC__ -char *proio_cons(char *, char *); -char * wxmake_integer(char *); -char * wxmake_word(char *); -char * wxmake_string(char *); -char * wxmake_real(char *, char *); -char * wxmake_exp(char *, char *); -char * wxmake_exp2(char *, char *, char*); -void add_expr(char *); -void process_command(char *); -void syntax_error(char *); -#else -char *proio_cons(); -char * wxmake_integer(); -char * wxmake_word(); -char * wxmake_string(); -char * wxmake_real(); -char * wxmake_exp(); -char * wxmake_exp2(); - -void add_expr(); -void process_command(); -void syntax_error(); -#endif -#endif - -#endif - /* _WX_EXPRH__ */ diff --git a/include/wx/file.h b/include/wx/file.h deleted file mode 100644 index 50074970d3..0000000000 --- a/include/wx/file.h +++ /dev/null @@ -1,182 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: file.cpp -// Purpose: wxFile - encapsulates low-level "file descriptor" -// wxTempFile - safely replace the old file -// Author: Vadim Zeitlin -// Modified by: -// Created: 29/01/98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifndef __FILEH__ -#define __FILEH__ - -#ifdef __GNUG__ -#pragma interface "file.h" -#endif - -#ifndef WX_PRECOMP - #include "wx/string.h" - #include "wx/filefn.h" -#endif - -// ---------------------------------------------------------------------------- -// constants -// ---------------------------------------------------------------------------- - -// we redefine these constants here because S_IREAD &c are _not_ standard -// however, we do assume that the values correspond to the Unix umask bits -#define wxS_IRUSR 00400 -#define wxS_IWUSR 00200 -#define wxS_IXUSR 00100 - -#define wxS_IRGRP 00040 -#define wxS_IWGRP 00020 -#define wxS_IXGRP 00010 - -#define wxS_IROTH 00004 -#define wxS_IWOTH 00002 -#define wxS_IXOTH 00001 - -// default mode for the new files: corresponds to umask 022 -#define wxS_DEFAULT (wxS_IRUSR | wxS_IWUSR | wxS_IRGRP | wxS_IWGRP |\ - wxS_IROTH | wxS_IWOTH) - -// ---------------------------------------------------------------------------- -// class wxFile: raw file IO -// -// NB: for space efficiency this class has no virtual functions, including -// dtor which is _not_ virtual, so it shouldn't be used as a base class. -// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxFile -{ -public: - // more file constants - // ------------------- - // opening mode - enum OpenMode { read, write, read_write, write_append }; - // standard values for file descriptor - enum { fd_invalid = -1, fd_stdin, fd_stdout, fd_stderr }; - - // static functions - // ---------------- - // check whether a regular file by this name exists - static bool Exists(const char *name); - // check whetther we can access the given file in given mode - // (only read and write make sense here) - static bool Access(const char *name, OpenMode mode); - - // ctors - // ----- - // def ctor - wxFile() { m_fd = fd_invalid; } - // open specified file (may fail, use IsOpened()) - wxFile(const char *szFileName, OpenMode mode = read); - // attach to (already opened) file - wxFile(int fd) { m_fd = fd; } - - // open/close - // create a new file (with the default value of bOverwrite, it will fail if - // the file already exists, otherwise it will overwrite it and succeed) - bool Create(const char *szFileName, bool bOverwrite = FALSE, - int access = wxS_DEFAULT); - bool Open(const char *szFileName, OpenMode mode = read, - int access = wxS_DEFAULT); - bool Close(); // Close is a NOP if not opened - - // assign an existing file descriptor and get it back from wxFile object - void Attach(int fd) { Close(); m_fd = fd; } - void Detach() { m_fd = fd_invalid; } - int fd() const { return m_fd; } - - // read/write (unbuffered) - // returns number of bytes read or ofsInvalid on error - off_t Read(void *pBuf, off_t nCount); - // returns true on success - size_t Write(const void *pBuf, size_t nCount); - // returns true on success - bool Write(const wxString& s) { return Write(s.c_str(), s.Len()) != 0; } - // flush data not yet written - bool Flush(); - - // file pointer operations (return ofsInvalid on failure) - // move ptr ofs bytes related to start/current off_t/end of file - off_t Seek(off_t ofs, wxSeekMode mode = wxFromStart); - // move ptr to ofs bytes before the end - off_t SeekEnd(off_t ofs = 0) { return Seek(ofs, wxFromEnd); } - // get current off_t - off_t Tell() const; - // get current file length - off_t Length() const; - - // simple accessors - // is file opened? - bool IsOpened() const { return m_fd != fd_invalid; } - // is end of file reached? - bool Eof() const; - // is an error occured? - bool Error() const { return m_error; } - - // dtor closes the file if opened - ~wxFile(); - -private: - // copy ctor and assignment operator are private because - // it doesn't make sense to copy files this way: - // attempt to do it will provoke a compile-time error. - wxFile(const wxFile&); - wxFile& operator=(const wxFile&); - - int m_fd; // file descriptor or INVALID_FD if not opened - bool m_error; // error memory -}; - -// ---------------------------------------------------------------------------- -// class wxTempFile: if you want to replace another file, create an instance -// of wxTempFile passing the name of the file to be replaced to the ctor. Then -// you can write to wxTempFile and call Commit() function to replace the old -// file (and close this one) or call Discard() to cancel the modification. If -// you call neither of them, dtor will call Discard(). -// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxTempFile -{ -public: - // ctors - // default - wxTempFile() { } - // associates the temp file with the file to be replaced and opens it - wxTempFile(const wxString& strName); - - // open the temp file (strName is the name of file to be replaced) - bool Open(const wxString& strName); - - // is the file opened? - bool IsOpened() const { return m_file.IsOpened(); } - - // I/O (both functions return true on success, false on failure) - bool Write(const void *p, size_t n) { return m_file.Write(p, n) != 0; } - bool Write(const wxString& str) { return m_file.Write(str); } - - // different ways to close the file - // validate changes and delete the old file of name m_strName - bool Commit(); - // discard changes - void Discard(); - - // dtor calls Discard() if file is still opened - ~wxTempFile(); - -private: - // no copy ctor/assignment operator - wxTempFile(const wxTempFile&); - wxTempFile& operator=(const wxTempFile&); - - wxString m_strName, // name of the file to replace in Commit() - m_strTemp; // temporary file name - wxFile m_file; // the temporary file -}; - -#endif - // _WX_FILEH__ diff --git a/include/wx/fileconf.h b/include/wx/fileconf.h deleted file mode 100644 index c4712f7147..0000000000 --- a/include/wx/fileconf.h +++ /dev/null @@ -1,366 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: fileconf.h -// Purpose: wxFileConfig derivation of wxConfigBase -// Author: Vadim Zeitlin -// Modified by: -// Created: 07.04.98 (adapted from appconf.cpp) -// RCS-ID: $Id$ -// Copyright: (c) 1997 Karsten Ballüder & Vadim Zeitlin -// Ballueder@usa.net -// Licence: wxWindows license -/////////////////////////////////////////////////////////////////////////////// - -#ifndef _FILECONF_H -#define _FILECONF_H - -#ifdef __GNUG__ -#pragma interface "fileconf.h" -#endif - -#include "wx/defs.h" -#include "wx/textfile.h" -#include "wx/string.h" - -// ---------------------------------------------------------------------------- -// compile options -// ---------------------------------------------------------------------------- - -// it won't compile without it anyhow -#ifndef wxUSE_CONFIG - #error "Please define wxUSE_CONFIG or remove fileconf.cpp from your makefile" -#endif // wxUSE_CONFIG - -// ---------------------------------------------------------------------------- -// wxFileConfig -// ---------------------------------------------------------------------------- - -/* - wxFileConfig derives from base Config and implements file based config class, - i.e. it uses ASCII disk files to store the information. These files are - alternatively called INI, .conf or .rc in the documentation. They are - organized in groups or sections, which can nest (i.e. a group contains - subgroups, which contain their own subgroups &c). Each group has some - number of entries, which are "key = value" pairs. More precisely, the format - is: - - # comments are allowed after either ';' or '#' (Win/UNIX standard) - - # blank lines (as above) are ignored - - # global entries are members of special (no name) top group - written_for = Windows - platform = Linux - - # the start of the group 'Foo' - [Foo] # may put comments like this also - # following 3 lines are entries - key = value - another_key = " strings with spaces in the beginning should be quoted, \ - otherwise the spaces are lost" - last_key = but you don't have to put " normally (nor quote them, like here) - - # subgroup of the group 'Foo' - # (order is not important, only the name is: separator is '/', as in paths) - [Foo/Bar] - # entries prefixed with "!" are immutable, i.e. can't be changed if they are - # set in the system-wide config file - !special_key = value - bar_entry = whatever - - [Foo/Bar/Fubar] # depth is (theoretically :-) unlimited - # may have the same name as key in another section - bar_entry = whatever not - - You have {read/write/delete}Entry functions (guess what they do) and also - setCurrentPath to select current group. enum{Subgroups/Entries} allow you - to get all entries in the config file (in the current group). Finally, - flush() writes immediately all changed entries to disk (otherwise it would - be done automatically in dtor) - - wxFileConfig manages not less than 2 config files for each program: global - and local (or system and user if you prefer). Entries are read from both of - them and the local entries override the global ones unless the latter is - immutable (prefixed with '!') in which case a warning message is generated - and local value is ignored. Of course, the changes are always written to local - file only. - - The names of these files can be specified in a number of ways. First of all, - you can use the standard convention: using the ctor which takes 'strAppName' - parameter will probably be sufficient for 90% of cases. If, for whatever - reason you wish to use the files with some other names, you can always use the - second ctor. - - wxFileConfig also may automatically expand the values of environment variables - in the entries it reads: for example, if you have an entry - score_file = $HOME/.score - a call to Read(&str, "score_file") will return a complete path to .score file - unless the expansion was previousle disabled with SetExpandEnvVars(FALSE) call - (it's on by default, the current status can be retrieved with - IsExpandingEnvVars function). -*/ -class wxFileConfig; -class ConfigGroup; -class ConfigEntry; - -// we store all lines of the local config file as a linked list in memory -class LineList -{ -public: - void SetNext(LineList *pNext) { m_pNext = pNext; } - void SetPrev(LineList *pPrev) { m_pPrev = pPrev; } - - // ctor - LineList(const wxString& str, LineList *pNext = (LineList *) NULL) : m_strLine(str) - { SetNext(pNext); SetPrev((LineList *) NULL); } - - // - LineList *Next() const { return m_pNext; } - LineList *Prev() const { return m_pPrev; } - - // - void SetText(const wxString& str) { m_strLine = str; } - const wxString& Text() const { return m_strLine; } - -private: - wxString m_strLine; // line contents - LineList *m_pNext, // next node - *m_pPrev; // previous one -}; - -class wxFileConfig : public wxConfigBase -{ -public: - // construct the "standard" full name for global (system-wide) and - // local (user-specific) config files from the base file name. - // - // the following are the filenames returned by this functions: - // global local - // Unix /etc/file.ext ~/.file - // Win %windir%\file.ext %USERPROFILE%\file.ext - // - // where file is the basename of szFile, ext is it's extension - // or .conf (Unix) or .ini (Win) if it has none - static wxString GetGlobalFileName(const char *szFile); - static wxString GetLocalFileName(const char *szFile); - - // ctor & dtor - -#if 0 - // the names of local and global (if not disabled) config files are - // constructed using Get{Local|Global}FileName functions described above - // (szAppName is just the (short) name of your application) - wxFileConfig(const char *szAppName, bool bLocalOnly = FALSE); - // this ctor allows you to specify custom names for both files (if strGlobal - // isn't a full path, it's considered to be relative to the standard - // directory, i.e. /etc under Unix and %windir% under Windows, if strLocal - // is not an absolute path, it's considered to be relative to the user's - // directory). If either of strings is empty, the corresponding file is not - // used. - wxFileConfig(const wxString& strLocal, const wxString& strGlobal); -#endif - - // New constructor: one size fits all. Specify wxCONFIG_USE_LOCAL_FILE - // or wxCONFIG_USE_GLOBAL_FILE to say which files should be used. - wxFileConfig(const wxString& appName, const wxString& vendorName = "", - const wxString& localFilename = "", const wxString& globalFilename = "", - long style = wxCONFIG_USE_LOCAL_FILE); - - // dtor will save unsaved data - virtual ~wxFileConfig(); - - // implement inherited pure virtual functions - virtual void SetPath(const wxString& strPath); - virtual const wxString& GetPath() const { return m_strPath; } - - virtual bool GetFirstGroup(wxString& str, long& lIndex) const; - virtual bool GetNextGroup (wxString& str, long& lIndex) const; - virtual bool GetFirstEntry(wxString& str, long& lIndex) const; - virtual bool GetNextEntry (wxString& str, long& lIndex) const; - - virtual size_t GetNumberOfEntries(bool bRecursive = FALSE) const; - virtual size_t GetNumberOfGroups(bool bRecursive = FALSE) const; - - virtual bool HasGroup(const wxString& strName) const; - virtual bool HasEntry(const wxString& strName) const; - - virtual bool Read(const wxString& key, wxString *pStr) const; - virtual bool Read(const wxString& key, wxString *pStr, const wxString& defValue) const; - virtual bool Read(const wxString& key, long *pl) const; - - // The following are necessary to satisfy the compiler - wxString Read(const wxString& key, const wxString& defVal) const - { return wxConfigBase::Read(key, defVal); } - bool Read(const wxString& key, long *pl, long defVal) const - { return wxConfigBase::Read(key, pl, defVal); } - long Read(const wxString& key, long defVal) const - { return wxConfigBase::Read(key, defVal); } - bool Read(const wxString& key, int *pi, int defVal) const - { return wxConfigBase::Read(key, pi, defVal); } - bool Read(const wxString& key, int *pi) const - { return wxConfigBase::Read(key, pi); } - bool Read(const wxString& key, double* val) const - { return wxConfigBase::Read(key, val); } - bool Read(const wxString& key, double* val, double defVal) const - { return wxConfigBase::Read(key, val, defVal); } - bool Read(const wxString& key, bool* val) const - { return wxConfigBase::Read(key, val); } - bool Read(const wxString& key, bool* val, bool defVal) const - { return wxConfigBase::Read(key, val, defVal); } - - virtual bool Write(const wxString& key, const wxString& szValue); - virtual bool Write(const wxString& key, long lValue); - bool Write(const wxString& key, double value) - { return wxConfigBase::Write(key, value); } - bool Write(const wxString& key, bool value) - { return wxConfigBase::Write(key, value); } - - virtual bool Flush(bool bCurrentOnly = FALSE); - - virtual bool RenameEntry(const wxString& oldName, const wxString& newName); - virtual bool RenameGroup(const wxString& oldName, const wxString& newName); - - virtual bool DeleteEntry(const wxString& key, bool bGroupIfEmptyAlso); - virtual bool DeleteGroup(const wxString& szKey); - virtual bool DeleteAll(); - -public: - // functions to work with this list - LineList *LineListAppend(const wxString& str); - LineList *LineListInsert(const wxString& str, - LineList *pLine); // NULL => Prepend() - void LineListRemove(LineList *pLine); - bool LineListIsEmpty(); - -private: - // GetXXXFileName helpers: return ('/' terminated) directory names - static wxString GetGlobalDir(); - static wxString GetLocalDir(); - - // common part of all ctors (assumes that m_str{Local|Global}File are already - // initialized - void Init(); - - // common part of from dtor and DeleteAll - void CleanUp(); - - // parse the whole file - void Parse(wxTextFile& file, bool bLocal); - - // the same as SetPath("/") - void SetRootPath(); - - // member variables - // ---------------- - LineList *m_linesHead, // head of the linked list - *m_linesTail; // tail - - wxString m_strLocalFile, // local file name passed to ctor - m_strGlobalFile; // global - wxString m_strPath; // current path (not '/' terminated) - - ConfigGroup *m_pRootGroup, // the top (unnamed) group - *m_pCurrentGroup; // the current group - -public: - WX_DEFINE_SORTED_ARRAY(ConfigEntry *, ArrayEntries); - WX_DEFINE_SORTED_ARRAY(ConfigGroup *, ArrayGroups); -}; - -class ConfigEntry -{ -private: - ConfigGroup *m_pParent; // group that contains us - wxString m_strName, // entry name - m_strValue; // value - bool m_bDirty, // changed since last read? - m_bImmutable; // can be overriden locally? - int m_nLine; // used if m_pLine == NULL only - LineList *m_pLine; // pointer to our line in the linked list - // or NULL if it was found in global file - -public: - ConfigEntry(ConfigGroup *pParent, const wxString& strName, int nLine); - - // simple accessors - const wxString& Name() const { return m_strName; } - const wxString& Value() const { return m_strValue; } - ConfigGroup *Group() const { return m_pParent; } - bool IsDirty() const { return m_bDirty; } - bool IsImmutable() const { return m_bImmutable; } - bool IsLocal() const { return m_pLine != 0; } - int Line() const { return m_nLine; } - LineList *GetLine() const { return m_pLine; } - - // modify entry attributes - void SetValue(const wxString& strValue, bool bUser = TRUE); - void SetDirty(); - void SetLine(LineList *pLine); -}; - -class ConfigGroup -{ -private: - wxFileConfig *m_pConfig; // config object we belong to - ConfigGroup *m_pParent; // parent group (NULL for root group) - wxFileConfig::ArrayEntries m_aEntries; // entries in this group - wxFileConfig::ArrayGroups m_aSubgroups; // subgroups - wxString m_strName; // group's name - bool m_bDirty; // if FALSE => all subgroups are not dirty - LineList *m_pLine; // pointer to our line in the linked list - ConfigEntry *m_pLastEntry; // last entry/subgroup of this group in the - ConfigGroup *m_pLastGroup; // local file (we insert new ones after it) - - // DeleteSubgroupByName helper - bool DeleteSubgroup(ConfigGroup *pGroup); - -public: - // ctor - ConfigGroup(ConfigGroup *pParent, const wxString& strName, wxFileConfig *); - - // dtor deletes all entries and subgroups also - ~ConfigGroup(); - - // simple accessors - const wxString& Name() const { return m_strName; } - ConfigGroup *Parent() const { return m_pParent; } - wxFileConfig *Config() const { return m_pConfig; } - bool IsDirty() const { return m_bDirty; } - - const wxFileConfig::ArrayEntries& Entries() const { return m_aEntries; } - const wxFileConfig::ArrayGroups& Groups() const { return m_aSubgroups; } - bool IsEmpty() const { return Entries().IsEmpty() && Groups().IsEmpty(); } - - // find entry/subgroup (NULL if not found) - ConfigGroup *FindSubgroup(const char *szName) const; - ConfigEntry *FindEntry (const char *szName) const; - - // delete entry/subgroup, return FALSE if doesn't exist - bool DeleteSubgroupByName(const char *szName); - bool DeleteEntry(const char *szName); - - // create new entry/subgroup returning pointer to newly created element - ConfigGroup *AddSubgroup(const wxString& strName); - ConfigEntry *AddEntry (const wxString& strName, int nLine = wxNOT_FOUND); - - // will also recursively set parent's dirty flag - void SetDirty(); - void SetLine(LineList *pLine); - - // rename: no checks are done to ensure that the name is unique! - void Rename(const wxString& newName); - - // - wxString GetFullName() const; - - // get the last line belonging to an entry/subgroup of this group - LineList *GetGroupLine(); // line which contains [group] - LineList *GetLastEntryLine(); // after which our subgroups start - LineList *GetLastGroupLine(); // after which the next group starts - - // called by entries/subgroups when they're created/deleted - void SetLastEntry(ConfigEntry *pEntry) { m_pLastEntry = pEntry; } - void SetLastGroup(ConfigGroup *pGroup) { m_pLastGroup = pGroup; } -}; - -#endif //_FILECONF_H - diff --git a/include/wx/filedlg.h b/include/wx/filedlg.h deleted file mode 100644 index 7fc2e7a76e..0000000000 --- a/include/wx/filedlg.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef _WX_FILEDLG_H_BASE_ -#define _WX_FILEDLG_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/filedlg.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/filedlg.h" -#elif defined(__WXGTK__) -#include "wx/gtk/filedlg.h" -#elif defined(__WXQT__) -#include "wx/qt/filedlg.h" -#elif defined(__WXMAC__) -#include "wx/mac/filedlg.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/filedlg.h" -#endif - - -#endif - // _WX_FILEDLG_H_BASE_ diff --git a/include/wx/filefn.h b/include/wx/filefn.h deleted file mode 100644 index 3127f1c51e..0000000000 --- a/include/wx/filefn.h +++ /dev/null @@ -1,233 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: filefn.h -// Purpose: File- and directory-related functions -// Author: Julian Smart -// Modified by: -// Created: 29/01/98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Julian Smart -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifndef _FILEFN_H_ -#define _FILEFN_H_ - -#ifdef __GNUG__ -#pragma interface "filefn.h" -#endif - -#include - -// ---------------------------------------------------------------------------- -// constants -// ---------------------------------------------------------------------------- - -// define off_t -#ifndef __WXMAC__ -#include -#else -typedef long off_t; -#endif - -#ifdef _MSC_VER - #define off_t _off_t -#endif - -#if defined(__BORLANDC__) && defined(__WIN16__) -typedef long off_t; -#endif - -#if defined(__SC__) -typedef long off_t; -#endif - -const off_t wxInvalidOffset = (off_t)-1; - -typedef enum { - wxFromStart, - wxFromCurrent, - wxFromEnd -} wxSeekMode; - -WXDLLEXPORT_DATA(extern const char*) wxEmptyString; - -// ---------------------------------------------------------------------------- -// functions -// ---------------------------------------------------------------------------- -WXDLLEXPORT bool wxFileExists(const wxString& filename); -#define FileExists wxFileExists - -// does the path exist? (may have or not '/' or '\\' at the end) -WXDLLEXPORT bool wxPathExists(const char *pszPathName); - -#define wxDirExists wxPathExists -#define DirExists wxDirExists - -WXDLLEXPORT bool wxIsAbsolutePath(const wxString& filename); -#define IsAbsolutePath wxIsAbsolutePath - -// Get filename -WXDLLEXPORT char* wxFileNameFromPath(char *path); -WXDLLEXPORT wxString wxFileNameFromPath(const wxString& path); -#define FileNameFromPath wxFileNameFromPath - -// Get directory -WXDLLEXPORT char* wxPathOnly(char *path); -WXDLLEXPORT wxString wxPathOnly(const wxString& path); -#define PathOnly wxPathOnly - -// wxString version -WXDLLEXPORT wxString wxRealPath(const wxString& path); - -WXDLLEXPORT void wxDos2UnixFilename(char *s); -#define Dos2UnixFilename wxDos2UnixFilename - -WXDLLEXPORT void wxUnix2DosFilename(char *s); -#define Unix2DosFilename wxUnix2DosFilename - -#ifdef __WXMAC__ - WXDLLEXPORT void wxMacPathToFSSpec( const char *path , FSSpec *spec ) ; - WXDLLEXPORT void wxMac2UnixFilename(char *s); - WXDLLEXPORT void wxUnix2MacFilename(char *s); -#endif -// Strip the extension, in situ -WXDLLEXPORT void wxStripExtension(char *buffer); -WXDLLEXPORT void wxStripExtension(wxString& buffer); - -// Get a temporary filename, opening and closing the file. -WXDLLEXPORT char* wxGetTempFileName(const wxString& prefix, char *buf = (char *) NULL); - -// Expand file name (~/ and ${OPENWINHOME}/ stuff) -WXDLLEXPORT char* wxExpandPath(char *dest, const char *path); - -// Contract w.r.t environment ( -> ${OPENWINHOME}/lib) -// and make (if under the home tree) relative to home -// [caller must copy-- volatile] -WXDLLEXPORT char* wxContractPath(const wxString& filename, - const wxString& envname = "", - const wxString& user = ""); - -// Destructive removal of /./ and /../ stuff -WXDLLEXPORT char* wxRealPath(char *path); - -// Allocate a copy of the full absolute path -WXDLLEXPORT char* wxCopyAbsolutePath(const wxString& path); - -// Get first file name matching given wild card. -// Flags are reserved for future use. -#define wxFILE 1 -#define wxDIR 2 -WXDLLEXPORT char* wxFindFirstFile(const char *spec, int flags = wxFILE); -WXDLLEXPORT char* wxFindNextFile(void); - -// Does the pattern contain wildcards? -WXDLLEXPORT bool wxIsWild(const wxString& pattern); - -// Does the pattern match the text (usually a filename)? -// If dot_special is TRUE, doesn't match * against . (eliminating -// `hidden' dot files) -WXDLLEXPORT bool wxMatchWild(const wxString& pattern, const wxString& text, bool dot_special = TRUE); - -// Concatenate two files to form third -WXDLLEXPORT bool wxConcatFiles(const wxString& file1, const wxString& file2, const wxString& file3); - -// Copy file1 to file2 -WXDLLEXPORT bool wxCopyFile(const wxString& file1, const wxString& file2); - -// Remove file -WXDLLEXPORT bool wxRemoveFile(const wxString& file); - -// Rename file -WXDLLEXPORT bool wxRenameFile(const wxString& file1, const wxString& file2); - -// Get current working directory. -// If buf is NULL, allocates space using new, else -// copies into buf. -// IMPORTANT NOTE getcwd is know not to work under some releases -// of Win32s 1.3, according to MS release notes! -WXDLLEXPORT char* wxGetWorkingDirectory(char *buf = (char *) NULL, int sz = 1000); - -// Set working directory -WXDLLEXPORT bool wxSetWorkingDirectory(const wxString& d); - -// Make directory -WXDLLEXPORT bool wxMkdir(const wxString& dir); - -// Remove directory. Flags reserved for future use. -WXDLLEXPORT bool wxRmdir(const wxString& dir, int flags = 0); - -// separators in file names -#define FILE_SEP_EXT '.' -#define FILE_SEP_DSK ':' -#define FILE_SEP_PATH_DOS '\\' -#define FILE_SEP_PATH_UNIX '/' - -// separator in the path list (as in PATH environment variable) -// NB: these are strings and not characters on purpose! -#define PATH_SEP_DOS ";" -#define PATH_SEP_UNIX ":" - -// platform independent versions -#ifdef __UNIX__ - #define FILE_SEP_PATH FILE_SEP_PATH_UNIX - #define PATH_SEP PATH_SEP_UNIX -#else // Windows - #define FILE_SEP_PATH FILE_SEP_PATH_DOS - #define PATH_SEP PATH_SEP_DOS -#endif // Unix/Windows - -// this is useful for wxString::IsSameAs(): to compare two file names use -// filename1.IsSameAs(filename2, wxARE_FILENAMES_CASE_SENSITIVE) -#ifdef __UNIX__ - #define wxARE_FILENAMES_CASE_SENSITIVE TRUE -#else // Windows - #define wxARE_FILENAMES_CASE_SENSITIVE FALSE -#endif // Unix/Windows - -// is the char a path separator? -inline bool wxIsPathSeparator(char c) - { return c == FILE_SEP_PATH_DOS || c == FILE_SEP_PATH_UNIX; } - -// does the string ends with path separator? -WXDLLEXPORT bool wxEndsWithPathSeparator(const char *pszFileName); - -// split the full path into path (including drive for DOS), name and extension -// (understands both '/' and '\\') -WXDLLEXPORT void wxSplitPath(const char *pszFileName, - wxString *pstrPath, - wxString *pstrName, - wxString *pstrExt); - -// find a file in a list of directories, returns false if not found -WXDLLEXPORT bool wxFindFileInPath(wxString *pStr, const char *pszPath, const char *pszFile); - -// ---------------------------------------------------------------------------- -// classes -// ---------------------------------------------------------------------------- - -// Path searching -class WXDLLEXPORT wxPathList : public wxStringList -{ -public: - void AddEnvList(const wxString& envVariable); // Adds all paths in environment variable - - void Add(const wxString& path); - // Avoid compiler warning - wxNode *Add(const char *s) { return wxStringList::Add(s); } - - wxString FindValidPath(const wxString& filename); // Find the first full path - // for which the file exists - wxString FindAbsoluteValidPath(const wxString& filename); // Find the first full path - // for which the file exists; ensure it's an absolute - // path that gets returned. - void EnsureFileAccessible(const wxString& path); // Given full path and filename, - // add path to list - bool Member(const wxString& path); - -private: - DECLARE_DYNAMIC_CLASS(wxPathList) -}; - -#endif - // _WX_FILEFN_H_ - diff --git a/include/wx/font.h b/include/wx/font.h deleted file mode 100644 index 165c9c9f06..0000000000 --- a/include/wx/font.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef _WX_FONT_H_BASE_ -#define _WX_FONT_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/font.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/font.h" -#elif defined(__WXGTK__) -#include "wx/gtk/font.h" -#elif defined(__WXQT__) -#include "wx/qt/font.h" -#elif defined(__WXMAC__) -#include "wx/mac/font.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/font.h" -#endif - -#endif - // _WX_FONT_H_BASE_ diff --git a/include/wx/fontdlg.h b/include/wx/fontdlg.h deleted file mode 100644 index f851cd8ee9..0000000000 --- a/include/wx/fontdlg.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef _WX_FONTDLG_H_BASE_ -#define _WX_FONTDLG_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/fontdlg.h" -#elif defined(__WXMOTIF__) -#include "wx/generic/fontdlgg.h" -# define wxFontDialog wxGenericFontDialog -# define sm_classwxFontDialog sm_classwxGenericFontDialog -#elif defined(__WXGTK__) -#include "wx/generic/fontdlgg.h" -# define wxFontDialog wxGenericFontDialog -# define sm_classwxFontDialog sm_classwxGenericFontDialog -#elif defined(__WXQT__) -#include "wx/generic/fontdlgg.h" -# define wxFontDialog wxGenericFontDialog -# define sm_classwxFontDialog sm_classwxGenericFontDialog -#elif defined(__WXMAC__) -#include "wx/generic/fontdlgg.h" -# define wxFontDialog wxGenericFontDialog -# define sm_classwxFontDialog sm_classwxGenericFontDialog -#elif defined(__WXSTUBS__) -#include "wx/generic/fontdlgg.h" -# define wxFontDialog wxGenericFontDialog -# define sm_classwxFontDialog sm_classwxGenericFontDialog -#endif - -#endif - // _WX_FONTDLG_H_BASE_ diff --git a/include/wx/frame.h b/include/wx/frame.h deleted file mode 100644 index 329561fd9a..0000000000 --- a/include/wx/frame.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef _WX_FRAME_H_BASE_ -#define _WX_FRAME_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/frame.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/frame.h" -#elif defined(__WXGTK__) -#include "wx/gtk/frame.h" -#elif defined(__WXQT__) -#include "wx/qt/frame.h" -#elif defined(__WXMAC__) -#include "wx/mac/frame.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/frame.h" -#endif - -#endif - // _WX_FRAME_H_BASE_ diff --git a/include/wx/gauge.h b/include/wx/gauge.h deleted file mode 100644 index abf8a1f7e0..0000000000 --- a/include/wx/gauge.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef _WX_GAUGE_H_BASE_ -#define _WX_GAUGE_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/gauge.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/gauge.h" -#elif defined(__WXGTK__) -#include "wx/gtk/gauge.h" -#elif defined(__WXQT__) -#include "wx/qt/gauge.h" -#elif defined(__WXMAC__) -#include "wx/mac/gauge.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/gauge.h" -#endif - -#endif - // _WX_GAUGE_H_BASE_ diff --git a/include/wx/gdicmn.h b/include/wx/gdicmn.h deleted file mode 100644 index 9b97b7d0f8..0000000000 --- a/include/wx/gdicmn.h +++ /dev/null @@ -1,369 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: gdicmn.h -// Purpose: Common GDI classes, types and declarations -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_GDICMNH__ -#define _WX_GDICMNH__ - -#ifdef __GNUG__ -#pragma interface "gdicmn.h" -#endif - -#include "wx/object.h" -#include "wx/list.h" -#include "wx/hash.h" -#include "wx/string.h" -#include "wx/setup.h" -#include "wx/colour.h" - -// Standard cursors -typedef enum { - wxCURSOR_NONE = 0, - wxCURSOR_ARROW = 1, - wxCURSOR_BULLSEYE, - wxCURSOR_CHAR, - wxCURSOR_CROSS, - wxCURSOR_HAND, - wxCURSOR_IBEAM, - wxCURSOR_LEFT_BUTTON, - wxCURSOR_MAGNIFIER, - wxCURSOR_MIDDLE_BUTTON, - wxCURSOR_NO_ENTRY, - wxCURSOR_PAINT_BRUSH, - wxCURSOR_PENCIL, - wxCURSOR_POINT_LEFT, - wxCURSOR_POINT_RIGHT, - wxCURSOR_QUESTION_ARROW, - wxCURSOR_RIGHT_BUTTON, - wxCURSOR_SIZENESW, - wxCURSOR_SIZENS, - wxCURSOR_SIZENWSE, - wxCURSOR_SIZEWE, - wxCURSOR_SIZING, - wxCURSOR_SPRAYCAN, - wxCURSOR_WAIT, - wxCURSOR_WATCH, - wxCURSOR_BLANK -#ifdef __X__ - /* Not yet implemented for Windows */ - , wxCURSOR_CROSS_REVERSE, - wxCURSOR_DOUBLE_ARROW, - wxCURSOR_BASED_ARROW_UP, - wxCURSOR_BASED_ARROW_DOWN -#endif -} wxStockCursor; - -class WXDLLEXPORT wxSize -{ -public: - long x; - long y; - inline wxSize() { x = 0; y = 0; } - inline wxSize(long xx, long yy) { x = xx; y = yy; } - inline wxSize(const wxSize& sz) { x = sz.x; y = sz.y; } - inline void operator = (const wxSize& sz) { x = sz.x; y = sz.y; } - inline wxSize operator + (const wxSize& sz) { return wxSize(x + sz.x, y + sz.y); } - inline wxSize operator - (const wxSize& sz) { return wxSize(x - sz.x, y - sz.y); } - inline void Set(long xx, long yy) { x = xx; y = yy; } - inline long GetX() const { return x; } - inline long GetY() const { return y; } -}; - -// Point -class WXDLLEXPORT wxRealPoint -{ - public: - double x; - double y; - inline wxRealPoint() { x = 0.0; y = 0.0; }; - inline wxRealPoint(double _x, double _y) { x = _x; y = _y; }; - inline wxRealPoint operator + (const wxRealPoint& pt) { return wxRealPoint(x + pt.x, y + pt.y); } - inline wxRealPoint operator - (const wxRealPoint& pt) { return wxRealPoint(x - pt.x, y - pt.y); } - - inline void operator = (const wxRealPoint& pt) { x = pt.x; y = pt.y; } -}; - -class WXDLLEXPORT wxPoint -{ - public: -#if defined(__WXMSW__) && !defined(__WIN32__) - int x; - int y; -#else - long x; - long y; -#endif - - inline wxPoint() { x = 0; y = 0; }; - wxPoint(long the_x, long the_y) { x = the_x; y = the_y; }; - wxPoint(const wxPoint& pt) { x = pt.x; y = pt.y; }; - - inline void operator = (const wxPoint& pt) { x = pt.x; y = pt.y; } - inline wxPoint operator + (const wxPoint& pt) { return wxPoint(x + pt.x, y + pt.y); } - inline wxPoint operator - (const wxPoint& pt) { return wxPoint(x - pt.x, y - pt.y); } -}; - -#if WXWIN_COMPATIBILITY -#define wxIntPoint wxPoint -#define wxRectangle wxRect -#endif - -class WXDLLEXPORT wxRect -{ -public: - wxRect() ; - wxRect(long x, long y, long w, long h); - wxRect(const wxPoint& topLeft, const wxPoint& bottomRight); - wxRect(const wxPoint& pos, const wxSize& size); - wxRect(const wxRect& rect); - - inline long GetX() const { return x; } - inline void SetX(long X) { x = X; } - inline long GetY() const { return y; } - inline void SetY(long Y) { y = Y; } - inline long GetWidth() const { return width; } - inline void SetWidth(long w) { width = w; } - inline long GetHeight() const { return height; } - inline void SetHeight(long h) { height = h; } - - inline wxPoint GetPosition() { return wxPoint(x, y); } - inline wxSize GetSize() { return wxSize(width, height); } - - inline long GetLeft() const { return x; } - inline long GetTop() const { return y; } - inline long GetBottom() const { return y + height; } - inline long GetRight() const { return x + width; } - - wxRect& operator = (const wxRect& rect); - bool operator == (const wxRect& rect); - bool operator != (const wxRect& rect); -public: - long x, y, width, height; -}; - -class WXDLLEXPORT wxBrush; -class WXDLLEXPORT wxPen; -class WXDLLEXPORT wxBitmap; -class WXDLLEXPORT wxIcon; -class WXDLLEXPORT wxCursor; -class WXDLLEXPORT wxFont; -class WXDLLEXPORT wxPalette; -class WXDLLEXPORT wxPalette; -class WXDLLEXPORT wxRegion; - -/* - * Bitmap flags - */ - -// Hint to indicate filetype -#define wxBITMAP_TYPE_BMP 1 -#define wxBITMAP_TYPE_BMP_RESOURCE 2 -#define wxBITMAP_TYPE_ICO 3 -#define wxBITMAP_TYPE_ICO_RESOURCE 4 -#define wxBITMAP_TYPE_CUR 5 -#define wxBITMAP_TYPE_CUR_RESOURCE 6 -#define wxBITMAP_TYPE_XBM 7 -#define wxBITMAP_TYPE_XBM_DATA 8 -#define wxBITMAP_TYPE_XPM 9 -#define wxBITMAP_TYPE_XPM_DATA 10 -#define wxBITMAP_TYPE_TIF 11 -#define wxBITMAP_TYPE_TIF_RESOURCE 12 -#define wxBITMAP_TYPE_GIF 13 -#define wxBITMAP_TYPE_GIF_RESOURCE 14 -#define wxBITMAP_TYPE_PNG 15 -#define wxBITMAP_TYPE_PNG_RESOURCE 16 -#define wxBITMAP_TYPE_JPEG 17 -#define wxBITMAP_TYPE_JPEG_RESOURCE 18 -#define wxBITMAP_TYPE_ANY 50 - -#define wxBITMAP_TYPE_RESOURCE wxBITMAP_TYPE_BMP_RESOURCE - -class WXDLLEXPORT wxBitmap; -class WXDLLEXPORT wxCursor; -class WXDLLEXPORT wxIcon; -class WXDLLEXPORT wxColour; -class WXDLLEXPORT wxString; - -// Management of pens, brushes and fonts -class WXDLLEXPORT wxPenList: public wxList -{ - DECLARE_DYNAMIC_CLASS(wxPenList) - public: - inline wxPenList() - { } - ~wxPenList(); - void AddPen(wxPen *pen); - void RemovePen(wxPen *pen); - wxPen *FindOrCreatePen(const wxColour& colour, int width, int style); -}; - -class WXDLLEXPORT wxBrushList: public wxList -{ - DECLARE_DYNAMIC_CLASS(wxBrushList) - public: - inline wxBrushList() - { } - ~wxBrushList(); - void AddBrush(wxBrush *brush); - void RemoveBrush(wxBrush *brush); - wxBrush *FindOrCreateBrush(const wxColour& colour, int style); -}; - -WXDLLEXPORT_DATA(extern const char*) wxEmptyString; - -class WXDLLEXPORT wxFontList: public wxList -{ - DECLARE_DYNAMIC_CLASS(wxFontList) - public: - inline wxFontList() - { } - ~wxFontList(); - void AddFont(wxFont *font); - void RemoveFont(wxFont *font); - wxFont *FindOrCreateFont(int pointSize, int family, int style, int weight, - bool underline = FALSE, const wxString& face = wxEmptyString); -}; - -class WXDLLEXPORT wxColourDatabase: public wxList -{ - DECLARE_CLASS(wxColourDatabase) - public: - wxColourDatabase(int type); - ~wxColourDatabase() ; - // Not const because it may add a name to the database - wxColour *FindColour(const wxString& colour) ; - wxString FindName(const wxColour& colour) const; - void Initialize(); -}; - -class WXDLLEXPORT wxBitmapList: public wxList -{ - DECLARE_DYNAMIC_CLASS(wxBitmapList) - public: - wxBitmapList(); - ~wxBitmapList(); - - void AddBitmap(wxBitmap *bitmap); - void RemoveBitmap(wxBitmap *bitmap); -}; - -// Lists of GDI objects -WXDLLEXPORT_DATA(extern wxPenList*) wxThePenList; -WXDLLEXPORT_DATA(extern wxBrushList*) wxTheBrushList; -WXDLLEXPORT_DATA(extern wxFontList*) wxTheFontList; -WXDLLEXPORT_DATA(extern wxBitmapList*) wxTheBitmapList; - -// Stock objects -WXDLLEXPORT_DATA(extern wxFont*) wxNORMAL_FONT; -WXDLLEXPORT_DATA(extern wxFont*) wxSMALL_FONT; -WXDLLEXPORT_DATA(extern wxFont*) wxITALIC_FONT; -WXDLLEXPORT_DATA(extern wxFont*) wxSWISS_FONT; - -WXDLLEXPORT_DATA(extern wxPen*) wxRED_PEN; -WXDLLEXPORT_DATA(extern wxPen*) wxCYAN_PEN; -WXDLLEXPORT_DATA(extern wxPen*) wxGREEN_PEN; -WXDLLEXPORT_DATA(extern wxPen*) wxBLACK_PEN; -WXDLLEXPORT_DATA(extern wxPen*) wxWHITE_PEN; -WXDLLEXPORT_DATA(extern wxPen*) wxTRANSPARENT_PEN; -WXDLLEXPORT_DATA(extern wxPen*) wxBLACK_DASHED_PEN; -WXDLLEXPORT_DATA(extern wxPen*) wxGREY_PEN; -WXDLLEXPORT_DATA(extern wxPen*) wxMEDIUM_GREY_PEN; -WXDLLEXPORT_DATA(extern wxPen*) wxLIGHT_GREY_PEN; - -WXDLLEXPORT_DATA(extern wxBrush*) wxBLUE_BRUSH; -WXDLLEXPORT_DATA(extern wxBrush*) wxGREEN_BRUSH; -WXDLLEXPORT_DATA(extern wxBrush*) wxWHITE_BRUSH; -WXDLLEXPORT_DATA(extern wxBrush*) wxBLACK_BRUSH; -WXDLLEXPORT_DATA(extern wxBrush*) wxGREY_BRUSH; -WXDLLEXPORT_DATA(extern wxBrush*) wxMEDIUM_GREY_BRUSH; -WXDLLEXPORT_DATA(extern wxBrush*) wxLIGHT_GREY_BRUSH; -WXDLLEXPORT_DATA(extern wxBrush*) wxTRANSPARENT_BRUSH; -WXDLLEXPORT_DATA(extern wxBrush*) wxCYAN_BRUSH; -WXDLLEXPORT_DATA(extern wxBrush*) wxRED_BRUSH; - -WXDLLEXPORT_DATA(extern wxColour*) wxBLACK; -WXDLLEXPORT_DATA(extern wxColour*) wxWHITE; -WXDLLEXPORT_DATA(extern wxColour*) wxRED; -WXDLLEXPORT_DATA(extern wxColour*) wxBLUE; -WXDLLEXPORT_DATA(extern wxColour*) wxGREEN; -WXDLLEXPORT_DATA(extern wxColour*) wxCYAN; -WXDLLEXPORT_DATA(extern wxColour*) wxLIGHT_GREY; - -// 'Null' objects -WXDLLEXPORT_DATA(extern wxBitmap) wxNullBitmap; -WXDLLEXPORT_DATA(extern wxIcon) wxNullIcon; -WXDLLEXPORT_DATA(extern wxCursor) wxNullCursor; -WXDLLEXPORT_DATA(extern wxPen) wxNullPen; -WXDLLEXPORT_DATA(extern wxBrush) wxNullBrush; -WXDLLEXPORT_DATA(extern wxPalette) wxNullPalette; -WXDLLEXPORT_DATA(extern wxFont) wxNullFont; -WXDLLEXPORT_DATA(extern wxColour) wxNullColour; - -// Stock cursors types -WXDLLEXPORT_DATA(extern wxCursor*) wxSTANDARD_CURSOR; -WXDLLEXPORT_DATA(extern wxCursor*) wxHOURGLASS_CURSOR; -WXDLLEXPORT_DATA(extern wxCursor*) wxCROSS_CURSOR; - -WXDLLEXPORT_DATA(extern wxColourDatabase*) wxTheColourDatabase; -extern void WXDLLEXPORT wxInitializeStockObjects(); -extern void WXDLLEXPORT wxInitializeStockLists(); -extern void WXDLLEXPORT wxDeleteStockObjects(); -extern void WXDLLEXPORT wxDeleteStockLists(); - -extern bool WXDLLEXPORT wxColourDisplay(); - -// Returns depth of screen -extern int WXDLLEXPORT wxDisplayDepth(); -#define wxGetDisplayDepth wxDisplayDepth - -extern void WXDLLEXPORT wxDisplaySize(int *width, int *height); -extern wxSize WXDLLEXPORT wxGetDisplaySize(); - -extern void WXDLLEXPORT wxSetCursor(const wxCursor& cursor); - -// Useful macro for creating icons portably - -#ifdef __WXMSW__ -// Load from a resource -# define wxICON(X) wxIcon("" #X "") - -#elif defined(__WXGTK__) -// Initialize from an included XPM -# define wxICON(X) wxIcon( (const char**) X##_xpm ) -#elif defined(__WXMOTIF__) -// Initialize from an included XPM -# define wxICON(X) wxIcon( X##_xpm ) -#else - -// This will usually mean something on any platform -# define wxICON(X) wxIcon("" #X "") -#endif - -/* - Example: - wxIcon *icon = new wxICON(mondrian); - expands into: - wxIcon *icon = new wxIcon("mondrian"); // On wxMSW - wxIcon *icon = new wxIcon(mondrian_xpm); // On wxGTK - */ - -class WXDLLEXPORT wxResourceCache: public wxList -{ -public: - wxResourceCache() { } - wxResourceCache(const unsigned int keyType) : wxList(keyType) { } - ~wxResourceCache(); - -private: - DECLARE_DYNAMIC_CLASS(wxResourceCache) -}; - -#endif - // _WX_GDICMNH__ diff --git a/include/wx/gdiobj.h b/include/wx/gdiobj.h deleted file mode 100644 index 39762ec749..0000000000 --- a/include/wx/gdiobj.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef _WX_GDIOBJ_H_BASE_ -#define _WX_GDIOBJ_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/gdiobj.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/gdiobj.h" -#elif defined(__WXGTK__) -#include "wx/gtk/gdiobj.h" -#elif defined(__WXQT__) -#include "wx/qt/gdiobj.h" -#elif defined(__WXMAC__) -#include "wx/mac/gdiobj.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/gdiobj.h" -#endif - -#endif - // _WX_GDIOBJ_H_BASE_ diff --git a/include/wx/generic/choicdgg.h b/include/wx/generic/choicdgg.h deleted file mode 100644 index 1f0ba8dacf..0000000000 --- a/include/wx/generic/choicdgg.h +++ /dev/null @@ -1,102 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: choicdgg.h -// Purpose: Generic choice dialogs -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __CHOICEDLGH_G__ -#define __CHOICEDLGH_G__ - -#ifdef __GNUG__ -#pragma interface "choicdgg.h" -#endif - -#include "wx/setup.h" -#include "wx/dialog.h" - -#define wxCHOICE_HEIGHT 150 -#define wxCHOICE_WIDTH 200 - -#define wxID_LISTBOX 3000 - -class WXDLLEXPORT wxSingleChoiceDialog: public wxDialog -{ -DECLARE_DYNAMIC_CLASS(wxSingleChoiceDialog) -public: - wxSingleChoiceDialog(wxWindow *parent, const wxString& message, const wxString& caption, - int n, const wxString *choices, char **clientData = (char **) NULL, long style = wxOK|wxCANCEL|wxCENTRE, const wxPoint& pos = wxDefaultPosition); - - wxSingleChoiceDialog(wxWindow *parent, const wxString& message, const wxString& caption, - const wxStringList& choices, char **clientData = (char **) NULL, long style = wxOK|wxCANCEL|wxCENTRE, const wxPoint& pos = wxDefaultPosition); - - bool Create(wxWindow *parent, const wxString& message, const wxString& caption, - int n, const wxString *choices, char **clientData = (char **) NULL, long style = wxOK|wxCANCEL|wxCENTRE, const wxPoint& pos = wxDefaultPosition); - bool Create(wxWindow *parent, const wxString& message, const wxString& caption, - const wxStringList& choices, char **clientData = (char **) NULL, long style = wxOK|wxCANCEL|wxCENTRE, const wxPoint& pos = wxDefaultPosition); - - void SetSelection(int sel) ; - inline int GetSelection(void) const { return m_selection; } - inline wxString GetStringSelection(void) const { return m_stringSelection; } - inline char *GetSelectionClientData(void) const { return m_clientData; } - - void OnOK(wxCommandEvent& event); - void OnListBoxDClick(wxCommandEvent& event); - -DECLARE_EVENT_TABLE() - -protected: - long m_dialogStyle; - int m_selection; - wxString m_stringSelection; - char* m_clientData; -}; - -WXDLLEXPORT wxString wxGetSingleChoice(const wxString& message, const wxString& caption, - int n, const wxString *choices, wxWindow *parent = (wxWindow *) NULL, - int x = -1, int y = -1, bool centre = TRUE, - int width = wxCHOICE_WIDTH, int height = wxCHOICE_HEIGHT); - -WXDLLEXPORT wxString wxGetSingleChoice(const wxString& message, const wxString& caption, - int n, char *choices[], wxWindow *parent = (wxWindow *) NULL, - int x = -1, int y = -1, bool centre = TRUE, - int width = wxCHOICE_WIDTH, int height = wxCHOICE_HEIGHT); - -// Same as above but gets position in list of strings, instead of string, -// or -1 if no selection -WXDLLEXPORT int wxGetSingleChoiceIndex(const wxString& message, const wxString& caption, - int n, const wxString *choices, wxWindow *parent = (wxWindow *) NULL, - int x = -1, int y = -1, bool centre = TRUE, - int width = wxCHOICE_WIDTH, int height = wxCHOICE_HEIGHT); - -WXDLLEXPORT int wxGetSingleChoiceIndex(const wxString& message, const wxString& caption, - int n, char *choices[], wxWindow *parent = (wxWindow *) NULL, - int x = -1, int y = -1, bool centre = TRUE, - int width = wxCHOICE_WIDTH, int height = wxCHOICE_HEIGHT); - -// Return client data instead -WXDLLEXPORT char* wxGetSingleChoiceData(const wxString& message, const wxString& caption, - int n, const wxString *choices, char **client_data, - wxWindow *parent = (wxWindow *) NULL, int x = -1, int y = -1, - bool centre = TRUE, - int width = wxCHOICE_WIDTH, int height = wxCHOICE_HEIGHT); - -WXDLLEXPORT char* wxGetSingleChoiceData(const wxString& message, const wxString& caption, - int n, char *choices[], char **client_data, - wxWindow *parent = (wxWindow *) NULL, int x = -1, int y = -1, - bool centre = TRUE, - int width = wxCHOICE_WIDTH, int height = wxCHOICE_HEIGHT); - -/* -WXDLLEXPORT int wxGetMultipleChoice(const wxString& message, const wxString& caption, - int n, const wxString *choices, - int nsel, int * selection, - wxWindow *parent = NULL, int x = -1 , int y = -1, bool centre = TRUE, - int width = wxCHOICE_WIDTH, int height = wxCHOICE_HEIGHT); -*/ - -#endif diff --git a/include/wx/generic/colrdlgg.h b/include/wx/generic/colrdlgg.h deleted file mode 100644 index 942d2ed8ee..0000000000 --- a/include/wx/generic/colrdlgg.h +++ /dev/null @@ -1,123 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: colrdlgg.h -// Purpose: wxGenericColourDialog -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __COLORDLGH_G__ -#define __COLORDLGH_G__ - -#ifdef __GNUG__ -#pragma interface "colrdlgg.h" -#endif - -#include "wx/setup.h" -#include "wx/gdicmn.h" -#include "wx/dialog.h" -#include "wx/cmndata.h" - -#define wxID_ADD_CUSTOM 3000 -#define wxID_RED_SLIDER 3001 -#define wxID_GREEN_SLIDER 3002 -#define wxID_BLUE_SLIDER 3003 - -class WXDLLEXPORT wxSlider; -class WXDLLEXPORT wxGenericColourDialog: public wxDialog -{ - DECLARE_DYNAMIC_CLASS(wxGenericColourDialog) - protected: - wxColourData colourData; - wxWindow *dialogParent; - - // Area reserved for grids of colours - wxRect standardColoursRect; - wxRect customColoursRect; - wxRect singleCustomColourRect; - - // Size of each colour rectangle - wxPoint smallRectangleSize; - - // For single customizable colour - wxPoint customRectangleSize; - - // Grid spacing (between rectangles) - int gridSpacing; - - // Section spacing (between left and right halves of dialog box) - int sectionSpacing; - - // 48 'standard' colours - wxColour standardColours[48]; - - // 16 'custom' colours - wxColour customColours[16]; - - // One single custom colour (use sliders) - wxColour singleCustomColour; - - // Which colour is selected? An index into one of the two areas. - int colourSelection; - int whichKind; // 1 for standard colours, 2 for custom colours, - - wxSlider *redSlider; - wxSlider *greenSlider; - wxSlider *blueSlider; - - int buttonY; - - int okButtonX; - int customButtonX; - -// static bool colourDialogCancelled; - public: - wxGenericColourDialog(void); - wxGenericColourDialog(wxWindow *parent, wxColourData *data = (wxColourData *) NULL); - ~wxGenericColourDialog(void); - - bool Create(wxWindow *parent, wxColourData *data = (wxColourData *) NULL); - - int ShowModal(void); - wxColourData &GetColourData(void) { return colourData; } - - // Internal functions - void OnMouseEvent(wxMouseEvent& event); - void OnPaint(wxPaintEvent& event); - - bool OnClose(void); - - virtual void CalculateMeasurements(void); - virtual void CreateWidgets(void); - virtual void InitializeColours(void); - - virtual void PaintBasicColours(wxDC& dc); - virtual void PaintCustomColours(wxDC& dc); - virtual void PaintCustomColour(wxDC& dc); - virtual void PaintHighlight(wxDC& dc, bool draw); - - virtual void OnBasicColourClick(int which); - virtual void OnCustomColourClick(int which); - -/* - virtual void OnOk(void); - virtual void OnCancel(void); - virtual void OnAddCustom(void); -*/ - void OnAddCustom(wxCommandEvent& event); - - void OnRedSlider(wxCommandEvent& event); - void OnGreenSlider(wxCommandEvent& event); - void OnBlueSlider(wxCommandEvent& event); - -DECLARE_EVENT_TABLE() -}; - -#ifdef __WXGTK__ -typedef wxGenericColourDialog wxColourDialog; -#endif - -#endif diff --git a/include/wx/generic/dcpsg.h b/include/wx/generic/dcpsg.h deleted file mode 100644 index b52b60fd1a..0000000000 --- a/include/wx/generic/dcpsg.h +++ /dev/null @@ -1,314 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcps.h -// Purpose: wxPostScriptDC class -// Author: Julian Smart and others -// Modified by: -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart, Robert Roebling and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_DCPSG_H_ -#define _WX_DCPSG_H_ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/dc.h" - -#if wxUSE_POSTSCRIPT - -#include "wx/dialog.h" -#include "wx/module.h" -#include - - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxPostScriptDC; - -//----------------------------------------------------------------------------- -// wxPostScriptDC -//----------------------------------------------------------------------------- - -class WXDLLEXPORT wxPostScriptDC: public wxDC -{ - DECLARE_DYNAMIC_CLASS(wxPostScriptDC) - -public: - - wxPostScriptDC(); - wxPostScriptDC(const wxString& output, bool interactive = TRUE, wxWindow *parent = (wxWindow *) NULL); - - ~wxPostScriptDC(); - - bool Create(const wxString& output, bool interactive = TRUE, wxWindow *parent = (wxWindow *) NULL); - - virtual bool Ok() const; - - virtual bool PrinterDialog(wxWindow *parent = (wxWindow *) NULL); - - virtual void BeginDrawing() {} - virtual void EndDrawing() {} - - void FloodFill(long x1, long y1, const wxColour &col, int style=wxFLOOD_SURFACE) ; - bool GetPixel(long x1, long y1, wxColour *col) const; - - void DrawLine(long x1, long y1, long x2, long y2); - void CrossHair(long x, long y) ; - void DrawArc(long x1,long y1,long x2,long y2,long xc,long yc); - void DrawEllipticArc(long x,long y,long w,long h,double sa,double ea); - void DrawPoint(long x, long y); - // Avoid compiler warning - void DrawPoint(wxPoint& point) { wxDC::DrawPoint(point); } - void DrawLines(int n, wxPoint points[], long xoffset = 0, long yoffset = 0); - // Avoid compiler warning - void DrawLines(wxList *lines, long xoffset = 0, long yoffset = 0) - { wxDC::DrawLines(lines, xoffset, yoffset); } - void DrawPolygon(int n, wxPoint points[], long xoffset = 0, long yoffset = 0, int fillStyle=wxODDEVEN_RULE); - // Avoid compiler warning - void DrawPolygon(wxList *lines, long xoffset = 0, long yoffset = 0, int fillStyle=wxODDEVEN_RULE) - { wxDC::DrawPolygon(lines, xoffset, yoffset, fillStyle); } - void DrawRectangle(long x, long y, long width, long height); - void DrawRoundedRectangle(long x, long y, long width, long height, double radius = 20); - void DrawEllipse(long x, long y, long width, long height); - - void DrawSpline(wxList *points); - - bool Blit(long xdest, long ydest, long width, long height, - wxDC *source, long xsrc, long ysrc, int rop = wxCOPY, bool useMask = FALSE); - inline bool CanDrawBitmap(void) const { return TRUE; } - - void DrawIcon( const wxIcon& icon, long x, long y ); - void DrawBitmap( const wxBitmap& bitmap, long x, long y, bool useMask=FALSE ); - - void DrawText(const wxString& text, long x, long y, bool use16 = FALSE); - - void Clear(); - void SetFont( const wxFont& font ); - void SetPen( const wxPen& pen ); - void SetBrush( const wxBrush& brush ); - void SetLogicalFunction( int function ); - void SetBackground( const wxBrush& brush ); - - void SetClippingRegion(long x, long y, long width, long height); - void SetClippingRegion( const wxRegion ®ion ); - void DestroyClippingRegion(); - - bool StartDoc(const wxString& message); - void EndDoc(); - void StartPage(); - void EndPage(); - - long GetCharHeight(); - long GetCharWidth(); - inline bool CanGetTextExtent(void) const { return FALSE; } - void GetTextExtent(const wxString& string, long *x, long *y, - long *descent = (long *) NULL, - long *externalLeading = (long *) NULL, - wxFont *theFont = (wxFont *) NULL, bool use16 = FALSE); - - void GetSize(int* width, int* height) const; - void GetSizeMM(long *width, long *height) const; - - void SetAxisOrientation( bool xLeftRight, bool yBottomUp ); - void SetDeviceOrigin( long x, long y ); - - inline void SetBackgroundMode(int WXUNUSED(mode)) {} - inline void SetPalette(const wxPalette& WXUNUSED(palette)) {} - - inline ofstream *GetStream(void) const { return m_pstream; } - -protected: - - ofstream * m_pstream; // PostScript output stream - wxString m_title; - unsigned char m_currentRed; - unsigned char m_currentGreen; - unsigned char m_currentBlue; - int m_pageNumber; - bool m_clipping; - double m_underlinePosition; - double m_underlineThickness; -}; - -// A module to allow initialization/cleanup of PostScript-related -// things without calling these functions from app.cpp. - -class WXDLLEXPORT wxPostScriptModule: public wxModule -{ -DECLARE_DYNAMIC_CLASS(wxPostScriptModule) -public: - wxPostScriptModule() {} - bool OnInit(); - void OnExit(); -}; - -// TODO Needed? Should perhaps use wxGenericPrintDialog instead. -#if 1 -#define wxID_PRINTER_COMMAND 1 -#define wxID_PRINTER_OPTIONS 2 -#define wxID_PRINTER_ORIENTATION 3 -#define wxID_PRINTER_MODES 4 -#define wxID_PRINTER_X_SCALE 5 -#define wxID_PRINTER_Y_SCALE 6 -#define wxID_PRINTER_X_TRANS 7 -#define wxID_PRINTER_Y_TRANS 8 - -class WXDLLEXPORT wxPostScriptPrintDialog: public wxDialog -{ -DECLARE_CLASS(wxPostScriptPrintDialog) -public: - wxPostScriptPrintDialog (wxWindow *parent, const wxString& title, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_DIALOG_STYLE); - - virtual int ShowModal(void) ; -}; -#endif - -// Print Orientation (Should also add Left, Right) -enum { - PS_PORTRAIT = 1, - PS_LANDSCAPE = 2 -};// ps_orientation = PS_PORTRAIT; - -// Print Actions -enum { - PS_PRINTER, - PS_FILE, - PS_PREVIEW -};// ps_action = PS_PREVIEW; - -// PostScript printer settings -WXDLLEXPORT void wxSetPrinterCommand(const char *cmd); -WXDLLEXPORT void wxSetPrintPreviewCommand(const char *cmd); -WXDLLEXPORT void wxSetPrinterOptions(const char *flags); -WXDLLEXPORT void wxSetPrinterOrientation(int orientation); -WXDLLEXPORT void wxSetPrinterScaling(double x, double y); -WXDLLEXPORT void wxSetPrinterTranslation(long x, long y); -WXDLLEXPORT void wxSetPrinterMode(int mode); -WXDLLEXPORT void wxSetPrinterFile(const char *f); -WXDLLEXPORT void wxSetAFMPath(const char *f); - -// Get current values -WXDLLEXPORT char* wxGetPrinterCommand(); -WXDLLEXPORT char* wxGetPrintPreviewCommand(); -WXDLLEXPORT char* wxGetPrinterOptions(); -WXDLLEXPORT int wxGetPrinterOrientation(); -WXDLLEXPORT void wxGetPrinterScaling(double* x, double* y); -WXDLLEXPORT void wxGetPrinterTranslation(long *x, long *y); -WXDLLEXPORT int wxGetPrinterMode(); -WXDLLEXPORT char* wxGetPrinterFile(); -WXDLLEXPORT char* wxGetAFMPath(); - -/* - * PostScript print setup information - */ - -class WXDLLEXPORT wxPrintSetupData: public wxObject -{ -public: - char *printerCommand; - char *previewCommand; - char *printerFlags; - char *printerFile; - int printerOrient; - double printerScaleX; - double printerScaleY; - long printerTranslateX; - long printerTranslateY; - // 1 = Preview, 2 = print to file, 3 = send to printer - int printerMode; - char *afmPath; - // A name in the paper database (see wx_print.h: the printing framework) - char *paperName; - bool printColour; - -public: - wxPrintSetupData(); - ~wxPrintSetupData(); - - void SetPrinterCommand(const char *cmd); - void SetPaperName(const char *paper); - void SetPrintPreviewCommand(const char *cmd); - void SetPrinterOptions(const char *flags); - void SetPrinterFile(const char *f); - void SetPrinterOrientation(int orient); - void SetPrinterScaling(double x, double y); - void SetPrinterTranslation(long x, long y); - // 1 = Preview, 2 = print to file, 3 = send to printer - void SetPrinterMode(int mode); - void SetAFMPath(const char *f); - void SetColour(bool col); - - // Get current values - char *GetPrinterCommand(); - char *GetPrintPreviewCommand(); - char *GetPrinterOptions(); - char *GetPrinterFile(); - char *GetPaperName(); - int GetPrinterOrientation(); - void GetPrinterScaling(double* x, double* y); - void GetPrinterTranslation(long *x, long *y); - int GetPrinterMode(); - char *GetAFMPath(); - bool GetColour(); - - void operator=(wxPrintSetupData& data); - -private: - DECLARE_DYNAMIC_CLASS(wxPrintSetupData) -}; - -WXDLLEXPORT_DATA(extern wxPrintSetupData*) wxThePrintSetupData; -WXDLLEXPORT extern void wxInitializePrintSetupData(bool init = TRUE); - -/* - * Again, this only really needed for non-Windows platforms - * or if you want to test the PostScript printing under Windows. - */ - -class WXDLLEXPORT wxPrintPaperType: public wxObject -{ -public: - wxPrintPaperType(const char *name = (const char *) NULL, int wmm = 0, int hmm = 0, int wp = 0, int hp = 0); - ~wxPrintPaperType(); - -public: - int widthMM; - int heightMM; - int widthPixels; - int heightPixels; - char *pageName; - -private: - DECLARE_DYNAMIC_CLASS(wxPrintPaperType) -}; - -class WXDLLEXPORT wxPrintPaperDatabase: public wxList -{ -public: - wxPrintPaperDatabase(); - ~wxPrintPaperDatabase(); - - void CreateDatabase(); - void ClearDatabase(); - - void AddPaperType(const char *name, int wmm, int hmm, int wp, int hp); - wxPrintPaperType *FindPaperType(const char *name); - -private: - DECLARE_DYNAMIC_CLASS(wxPrintPaperDatabase) -}; - -WXDLLEXPORT_DATA(extern wxPrintPaperDatabase*) wxThePrintPaperDatabase; - -#endif - // wxUSE_POSTSCRIPT - -#endif - // _WX_DCPSG_H_ diff --git a/include/wx/generic/dirdlgg.h b/include/wx/generic/dirdlgg.h deleted file mode 100644 index dbefc430d5..0000000000 --- a/include/wx/generic/dirdlgg.h +++ /dev/null @@ -1,121 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dirdlgg.h -// Purpose: wxDirDialog -// Author: Harm van der Heijden and Robert Roebling -// Modified by: -// Created: 12/12/98 -// Copyright: (c) Harm van der Heijden and Robert Roebling -// Licence: wxWindows licence -// -// Notes: wxDirDialog class written by Harm van der Heijden, -// uses wxDirCtrl class written by Robert Roebling for the -// wxFile application, modified by Harm van der Heijden -// -// Description: This generic dirdialog implementation defines three classes: -// 1) wxDirItemData(public wxTreeItemData) stores pathname and -// displayed name for each item in the directory tree -// 2) wxDirCtrl(public wxTreeCtrl) is a tree widget that -// displays a directory tree. It is possible to define sections -// for fast access to parts of the file system (such as the -// user's homedir, /usr/local, /tmp ...etc), similar to -// Win95 Explorer's shortcuts to 'My Computer', 'Desktop', etc. -// 3) wxDirDialog is the dialog box itself. The user can choose -// a directory by navigating the tree, or by typing a dir -// in an inputbox. The inputbox displays paths selected in the -// tree. It is possible to create new directories. The user -// will automatically be prompted for dir creation if he -// enters a non-existing dir. -// -// TODO/BUGS: - standard sections only have reasonable defaults for Unix -// (but others are easily added in wxDirCtrl::SetupSections) -// - No direct support for "show hidden" toggle. Partly due -// to laziness on my part and partly because -// wxFindFirst/NextFile never seems to find hidden dirs -// anyway. -// - No automatic update of the tree (branch) after directory -// creation. -// - I call wxBeginBusyCursor while expanding items (creating -// a new branch might take a few seconds, especially if a -// CDROM drive or something is involved) but that doesn't -// seem to do anything. Need to look into that. -// - Am still looking for an efficient way to delete wxTreeCtrl -// branches. DeleteChildren has disappeared and -// CollapseAndReset( parent ) deletes the parent as well. -// - The dialog window layout is done using wxConstraints. It -// works, but it's not as simple as I'd like it to be (see -// comments in wxDirDialog::doSize) -// -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_DIRDLGG_H_ -#define _WX_DIRDLGG_H_ - -#ifdef __GNUG__ -#pragma interface "dirdlgg.h" -#endif - -#include "wx/dialog.h" -//#include "wx/checkbox.h" -#include "wx/treectrl.h" - -//----------------------------------------------------------------------------- -// data -//----------------------------------------------------------------------------- - -WXDLLEXPORT_DATA(extern const char*) wxFileSelectorPromptStr; - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxDirItemData; -class wxDirCtrl; -class wxDirDialog; - -//----------------------------------------------------------------------------- -// wxDirDialog -//----------------------------------------------------------------------------- - -class WXDLLEXPORT wxDirDialog: public wxDialog -{ - DECLARE_DYNAMIC_CLASS(wxDirDialog) - public: - wxDirDialog(wxWindow *parent, - const wxString& message = wxFileSelectorPromptStr, - const wxString& defaultPath = wxEmptyString, - long style = 0, const wxPoint& pos = wxDefaultPosition); - inline void SetMessage(const wxString& message) { m_message = message; } - inline void SetPath(const wxString& path) { m_path = path; } - inline void SetStyle(long style) { m_dialogStyle = style; } - - inline wxString GetMessage() const { return m_message; } - inline wxString GetPath() const { return m_path; } - inline long GetStyle() const { return m_dialogStyle; } - - int ShowModal(); - - void OnTreeSelected( wxTreeEvent &event ); - void OnTreeKeyDown( wxTreeEvent &event ); - void OnSize(wxSizeEvent& event); - void OnOK(wxCommandEvent& event); - void OnCancel(wxCommandEvent& event); - void OnNew(wxCommandEvent& event); - // void OnCheck(wxCommandEvent& event); - DECLARE_EVENT_TABLE() - - protected: - // implementation - wxString m_message; - long m_dialogStyle; - wxWindow * m_parent; - wxString m_path; - wxDirCtrl *m_dir; - wxTextCtrl *m_input; - // wxCheckBox *m_check; - wxButton *m_ok, *m_cancel, *m_new; - void doSize(); -}; - -#endif - // _WX_DIRDLGG_H_ - diff --git a/include/wx/generic/fontdlgg.h b/include/wx/generic/fontdlgg.h deleted file mode 100644 index b02d7093b0..0000000000 --- a/include/wx/generic/fontdlgg.h +++ /dev/null @@ -1,95 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: fontdlgg.h -// Purpose: wxGenericFontDialog -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __FONTDLGH_G__ -#define __FONTDLGH_G__ - -#ifdef __GNUG__ -#pragma interface "fontdlgg.h" -#endif - -#include "wx/setup.h" -#include "wx/gdicmn.h" -#include "wx/font.h" -#include "wx/dialog.h" -#include "wx/cmndata.h" - -/* - * FONT DIALOG - */ - -class WXDLLEXPORT wxChoice; -class WXDLLEXPORT wxText; -class WXDLLEXPORT wxCheckBox; - -#define wxID_FONT_UNDERLINE 3000 -#define wxID_FONT_STYLE 3001 -#define wxID_FONT_WEIGHT 3002 -#define wxID_FONT_FAMILY 3003 -#define wxID_FONT_COLOUR 3004 -#define wxID_FONT_SIZE 3005 - -class WXDLLEXPORT wxGenericFontDialog: public wxDialog -{ - DECLARE_DYNAMIC_CLASS(wxGenericFontDialog) - protected: - wxFontData fontData; - wxFont dialogFont; - wxWindow *dialogParent; - - // Area reserved for font display - wxRect fontRect; - - wxChoice *familyChoice; - wxChoice *styleChoice; - wxChoice *weightChoice; - wxChoice *colourChoice; - wxCheckBox *underLineCheckBox; - wxChoice *pointSizeChoice; - bool m_useEvents; - -// static bool fontDialogCancelled; - public: - - wxGenericFontDialog(void); - wxGenericFontDialog(wxWindow *parent, wxFontData *data = (wxFontData *) NULL); - ~wxGenericFontDialog(void); - - bool Create(wxWindow *parent, wxFontData *data = (wxFontData *) NULL); - - int ShowModal(void); - - inline wxFontData& GetFontData(void) { return fontData; } - - // Internal functions - void OnPaint(wxPaintEvent& event); - - bool OnClose(void); - - virtual void CreateWidgets(void); - virtual void InitializeFont(void); - - virtual void PaintFontBackground(wxDC& dc); - virtual void PaintFont(wxDC& dc); - - void OnChangeFont(wxCommandEvent& event); - -DECLARE_EVENT_TABLE() -}; - -char WXDLLEXPORT *wxFontFamilyIntToString(int family); -char WXDLLEXPORT *wxFontWeightIntToString(int weight); -char WXDLLEXPORT *wxFontStyleIntToString(int style); -int WXDLLEXPORT wxFontFamilyStringToInt(char *family); -int WXDLLEXPORT wxFontWeightStringToInt(char *weight); -int WXDLLEXPORT wxFontStyleStringToInt(char *style); - -#endif diff --git a/include/wx/generic/gridg.h b/include/wx/generic/gridg.h deleted file mode 100644 index b7bd11f4be..0000000000 --- a/include/wx/generic/gridg.h +++ /dev/null @@ -1,386 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: gridg.h -// Purpose: wxGenericGrid -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __GRIDH_G__ -#define __GRIDH_G__ - -#ifdef __GNUG__ -#pragma interface "gridg.h" -#endif - -#include "wx/defs.h" -#include "wx/panel.h" -#include "wx/string.h" -#include "wx/scrolbar.h" -#include "wx/event.h" - -#define wxGRID_DEFAULT_EDIT_WIDTH 300 -#define wxGRID_DEFAULT_EDIT_HEIGHT 27 -#define wxGRID_DEFAULT_EDIT_X 2 -#define wxGRID_DEFAULT_EDIT_Y 1 -#define wxGRID_DEFAULT_SHEET_TOP 31 -#define wxGRID_DEFAULT_SHEET_LEFT 0 -#define wxGRID_DEFAULT_CELL_HEIGHT 20 -#define wxGRID_DEFAULT_CELL_WIDTH 80 -#define wxGRID_DEFAULT_VERTICAL_LABEL_WIDTH 40 -#define wxGRID_DEFAULT_HORIZONAL_LABEL_HEIGHT 20 - -#ifndef wxLEFT -#define wxLEFT 0x0400 -#endif - -#ifndef wxRIGHT -#define wxRIGHT 0x0800 -#endif - -#define WXGENERIC_GRID_VERSION 0.5 - -class WXDLLEXPORT wxGridEvent; -class WXDLLEXPORT wxGridCell; -class WXDLLEXPORT wxGenericGrid: public wxPanel -{ - DECLARE_DYNAMIC_CLASS(wxGenericGrid) - public: - wxGenericGrid(void); - - inline wxGenericGrid(wxWindow *parent, int x, int y, int width, int height, long style = 0, char *name = "grid") - { - Create(parent, -1, wxPoint(x, y), wxSize(width, height), style, name); - } - inline wxGenericGrid(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style = 0, const wxString& name = "grid") - { - Create(parent, id, pos, size, style, name); - } - ~wxGenericGrid(void); - - void OnPaint(wxPaintEvent& event); - void OnEraseBackground(wxEraseEvent& event); - void OnMouseEvent(wxMouseEvent& event); - void OnSize(wxSizeEvent& event); - - bool Create(wxWindow *parent, wxWindowID, const wxPoint& pos, const wxSize& size, long style = 0, const wxString& name = "grid"); - - bool CreateGrid(int nRows, int nCols, wxString **cellValues = (wxString **) NULL, short *widths = (short *) NULL, - short defaultWidth = wxGRID_DEFAULT_CELL_WIDTH, short defaultHeight = wxGRID_DEFAULT_CELL_HEIGHT); - void PaintGrid(wxDC& dc); - void ClearGrid(void); - virtual wxGridCell *GetCell(int row, int col) const; - inline wxGridCell ***GetCells(void) const { return m_gridCells; } - bool InsertCols(int pos = 0, int n = 1, bool updateLabels = TRUE); - bool InsertRows(int pos = 0, int n = 1, bool updateLabels = TRUE); - bool AppendCols(int n = 1, bool updateLabels = TRUE); - bool AppendRows(int n = 1, bool updateLabels = TRUE); - bool DeleteCols(int pos = 0, int n = 1, bool updateLabels = TRUE); - bool DeleteRows(int pos = 0, int n = 1, bool updateLabels = TRUE); - - // Cell accessors - void SetCellValue(const wxString& val, int row, int col); - wxString& GetCellValue(int row, int col) const; - void SetCellAlignment(int flag, int row, int col); - void SetCellAlignment(int flag); - int GetCellAlignment(int row, int col) const; - int GetCellAlignment(void) const; - void SetCellTextColour(const wxColour& val, int row, int col); - void SetCellTextColour(const wxColour& col); - wxColour& GetCellTextColour(int row, int col) const; - inline wxColour& GetCellTextColour(void) const { return (wxColour&) m_cellTextColour; } - void SetCellBackgroundColour(const wxColour& col); - void SetCellBackgroundColour(const wxColour& colour, int row, int col); - inline wxColour& GetCellBackgroundColour(void) const { return (wxColour&) m_cellBackgroundColour; } - wxColour& GetCellBackgroundColour(int row, int col) const; - inline wxFont& GetCellTextFont(void) const { return (wxFont&) m_cellTextFont; } - wxFont& GetCellTextFont(int row, int col) const; - void SetCellTextFont(const wxFont& fnt); - void SetCellTextFont(const wxFont& fnt, int row, int col); - wxBitmap *GetCellBitmap(int row, int col) const; - void SetCellBitmap(wxBitmap *bitmap, int row, int col); - - // Size accessors - void SetColumnWidth(int col, int width); - int GetColumnWidth(int col) const; - void SetRowHeight(int row, int height); - int GetRowHeight(int row) const; - - // Label accessors - void SetLabelSize(int orientation, int sz); - int GetLabelSize(int orientation) const; - void SetLabelAlignment(int orientation, int alignment); - int GetLabelAlignment(int orientation) const; - wxGridCell *GetLabelCell(int orientation, int pos) const; - void SetLabelValue(int orientation, const wxString& val, int pos); - wxString& GetLabelValue(int orientation, int pos) const; - void SetLabelTextColour(const wxColour& colour); - void SetLabelBackgroundColour(const wxColour& colour); - inline wxColour& GetLabelTextColour(void) const { return (wxColour&) m_labelTextColour; } - inline wxColour& GetLabelBackgroundColour(void) { return (wxColour&) m_labelBackgroundColour; } - inline wxFont& GetLabelTextFont(void) { return (wxFont&) m_labelTextFont; } - inline void SetLabelTextFont(const wxFont& fnt) { m_labelTextFont = fnt; } - - // Miscellaneous accessors - inline int GetCursorRow(void) const { return m_wCursorRow; } - inline int GetCursorColumn(void) const { return m_wCursorColumn; } - void SetGridCursor(int row, int col); - inline int GetRows(void) const { return m_totalRows; } - inline int GetCols(void) const { return m_totalCols; } - inline int GetScrollPosX(void) const { return m_scrollPosX; } - inline int GetScrollPosY(void) const { return m_scrollPosY; } - inline void SetScrollPosX(int pos) { m_scrollPosX = pos; } - inline void SetScrollPosY(int pos) { m_scrollPosY = pos; } - inline wxTextCtrl *GetTextItem(void) const { return m_textItem; } - inline wxScrollBar *GetHorizScrollBar(void) const { return m_hScrollBar; } - inline wxScrollBar *GetVertScrollBar(void) const { return m_vScrollBar; } - inline bool GetEditable(void) const { return m_editable; } - void SetEditable(bool edit); - inline wxRect& GetCurrentRect(void) const { return (wxRect&) m_currentRect; } - inline bool CurrentCellVisible(void) const { return m_currentRectVisible; } - inline void SetDividerPen(const wxPen& pen) { m_divisionPen = pen; } - inline wxPen& GetDividerPen(void) const { return (wxPen&) m_divisionPen; } - - // High-level event handling - // Override e.g. to check value of current cell; but call - // base member for default processing. - virtual void OnSelectCellImplementation(wxDC *dc, int row, int col); - - virtual void OnSelectCell(int WXUNUSED(row), int WXUNUSED(col)) {}; - void _OnSelectCell(wxGridEvent& event); - - // Override to create your own class of grid cell - virtual wxGridCell *OnCreateCell(void); - void _OnCreateCell(wxGridEvent& event); - - // Override to change labels e.g. creation of grid, inserting/deleting a row/col. - // By default, auto-labels the grid. - virtual void OnChangeLabels(void); - void _OnChangeLabels(wxGridEvent& event); - - // Override to change the label of the edit field when selecting a cell - // By default, sets it to e.g. A12 - virtual void OnChangeSelectionLabel(void); - void _OnChangeSelectionLabel(wxGridEvent& event); - - // Override for event processing - virtual void OnCellChange(int WXUNUSED(row), int WXUNUSED(col)) {}; - virtual void OnCellLeftClick(int WXUNUSED(row), int WXUNUSED(col), int WXUNUSED(x), int WXUNUSED(y), bool WXUNUSED(control), bool WXUNUSED(shift)) {}; - virtual void OnCellRightClick(int WXUNUSED(row), int WXUNUSED(col), int WXUNUSED(x), int WXUNUSED(y), bool WXUNUSED(control), bool WXUNUSED(shift)) {}; - virtual void OnLabelLeftClick(int WXUNUSED(row), int WXUNUSED(col), int WXUNUSED(x), int WXUNUSED(y), bool WXUNUSED(control), bool WXUNUSED(shift)) {}; - virtual void OnLabelRightClick(int WXUNUSED(row), int WXUNUSED(col), int WXUNUSED(x), int WXUNUSED(y), bool WXUNUSED(control), bool WXUNUSED(shift)) {}; - - void _OnCellChange(wxGridEvent& event); - void _OnCellLeftClick(wxGridEvent& event); - void _OnCellRightClick(wxGridEvent& event); - void _OnLabelLeftClick(wxGridEvent& event); - void _OnLabelRightClick(wxGridEvent& event); - - // Activation: call from wxFrame::OnActivate - void OnActivate(bool active); - - // Miscellaneous - void AdjustScrollbars(void); - void UpdateDimensions(void); - - /* INTERNAL - */ - void SetCurrentRect (int Row, int Column, int canvasW = -1, int canvasH = -1); - void HighlightCell (wxDC *dc); - void DrawCellText(void); - void SetGridClippingRegion(wxDC *dc); - virtual bool CellHitTest(int x, int y, int *row, int *col); - virtual bool LabelSashHitTest(int x, int y, int *orientation, int *rowOrCol, int *startPos); - virtual bool LabelHitTest(int x, int y, int *row, int *col); - // Painting - virtual void DrawLabelAreas(wxDC *dc); - virtual void DrawEditableArea(wxDC *dc); - virtual void DrawGridLines(wxDC *dc); - virtual void DrawColumnLabels(wxDC *dc); - virtual void DrawColumnLabel(wxDC *dc, wxRect *rect, int col); - virtual void DrawRowLabels(wxDC *dc); - virtual void DrawRowLabel(wxDC *dc, wxRect *rect, int row); - virtual void DrawCells(wxDC *dc); - virtual void DrawCellValue(wxDC *dc, wxRect *rect, int row, int col); - virtual void DrawCellBackground(wxDC *dc, wxRect *rect, int row, int col); - virtual void DrawTextRect(wxDC *dc, const wxString& text, wxRect *rect, int flag); - virtual void DrawBitmapRect(wxDC *dc, wxBitmap *bitmap, wxRect *rect, int flag); - - // Refresh cell and optionally set the text field - void RefreshCell(int row, int col, bool setText = FALSE); - - // Don't refresh within the outer pair of these. - inline void BeginBatch(void) { m_batchCount ++; } - inline void EndBatch(void) { m_batchCount --; } - inline int GetBatchCount(void) { return m_batchCount; } - - void OnText(wxCommandEvent& ev); - void OnGridScroll(wxScrollEvent& ev); - - protected: - wxPanel* m_editingPanel; // Contains the text control - wxTextCtrl* m_textItem; - wxScrollBar* m_hScrollBar; - wxScrollBar* m_vScrollBar; - int m_wCursorRow; - int m_wCursorColumn; - wxRect m_currentRect; - bool m_currentRectVisible; - wxGridCell*** m_gridCells; - wxGridCell** m_rowLabelCells; - wxGridCell** m_colLabelCells; - bool m_editCreated; - bool m_editable; - - int m_totalRows; - int m_totalCols; - - // Row and column we're currently looking at - int m_scrollPosX; - int m_scrollPosY; - - // Dimensions - int m_leftOfSheet; - int m_topOfSheet; - int m_rightOfSheet; // Calculated from m_colWidths - int m_bottomOfSheet; // Calculated from m_rowHeights - int m_totalGridWidth; // Total 'virtual' size - int m_totalGridHeight; - int m_cellHeight; // For now, a default - int m_verticalLabelWidth; - int m_horizontalLabelHeight; - int m_verticalLabelAlignment; - int m_horizontalLabelAlignment; - int m_cellAlignment; - short* m_colWidths; // Dynamically allocated - short* m_rowHeights; // Dynamically allocated - int m_scrollWidth; // Vert. scroll width, horiz. scroll height - - // Colours - wxColour m_cellTextColour; - wxColour m_cellBackgroundColour; - wxFont m_cellTextFont; - wxColour m_labelTextColour; - wxColour m_labelBackgroundColour; - wxBrush m_labelBackgroundBrush; - wxFont m_labelTextFont; - wxPen m_divisionPen; - wxBitmap* m_doubleBufferingBitmap; - - // Position of Edit control - wxRect m_editControlPosition; - - // Drag status - int m_dragStatus; - int m_dragRowOrCol; - int m_dragStartPosition; - int m_dragLastPosition; - wxCursor m_horizontalSashCursor; - wxCursor m_verticalSashCursor; - - // To avoid multiple refreshes, use Begin/EndBatch - int m_batchCount; - -DECLARE_EVENT_TABLE() -}; - -#define wxGRID_TEXT_CTRL 2000 -#define wxGRID_HSCROLL 2001 -#define wxGRID_VSCROLL 2002 - -class WXDLLEXPORT wxGridCell: public wxObject -{ - public: - wxString textValue; - wxFont font; - wxColour textColour; - wxColour backgroundColour; - wxBrush backgroundBrush; - wxBitmap* cellBitmap; - int alignment; - - wxGridCell(wxGenericGrid *window = (wxGenericGrid *) NULL); - ~wxGridCell(void); - - virtual wxString& GetTextValue(void) const { return (wxString&) textValue; } - virtual void SetTextValue(const wxString& str) { textValue = str; } - inline wxFont& GetFont(void) const { return (wxFont&) font; } - inline void SetFont(const wxFont& f) { font = f; } - inline wxColour& GetTextColour(void) const { return (wxColour&) textColour; } - inline void SetTextColour(const wxColour& colour) { textColour = colour; } - inline wxColour& GetBackgroundColour(void) const { return (wxColour&) backgroundColour; } - void SetBackgroundColour(const wxColour& colour); - inline wxBrush& GetBackgroundBrush(void) const { return (wxBrush&) backgroundBrush; } - inline void SetBackgroundBrush(const wxBrush& brush) { backgroundBrush = brush; } - inline int GetAlignment(void) const { return alignment; } - inline void SetAlignment(int align) { alignment = align; } - inline wxBitmap *GetCellBitmap(void) const { return cellBitmap; } - inline void SetCellBitmap(wxBitmap *bitmap) { cellBitmap = bitmap; } -}; - -class WXDLLEXPORT wxGrid: public wxGenericGrid -{ - public: - wxGrid(void):wxGenericGrid() {} - wxGrid(wxWindow *parent, int x=-1, int y=-1, int width=-1, int height=-1, - long style=0, char *name = "gridWindow"): - wxGenericGrid(parent, x, y, width, height, style, name) - { - } -}; - -class WXDLLEXPORT wxGridEvent : public wxCommandEvent { - DECLARE_DYNAMIC_CLASS(wxGridEvent) -public: - wxGridEvent() - : wxCommandEvent(), m_row(-1), m_col(-1), m_x(-1), m_y(-1), - m_control(0), m_shift(0), m_cell(0) - {} - - wxGridEvent(int id, wxEventType type, wxObject* obj, - int row=-1, int col=-1, int x=-1, int y=-1, - bool control=FALSE, bool shift=FALSE) - : wxCommandEvent(type, id), m_row(row), m_col(col), m_x(x), m_y(y), - m_control(control), m_shift(shift), m_cell(0) - { - SetEventObject(obj); - } - - - int m_row; - int m_col; - int m_x; - int m_y; - bool m_control; - bool m_shift; - wxGridCell* m_cell; -}; - -const wxEventType wxEVT_GRID_SELECT_CELL = wxEVT_FIRST + 1575; -const wxEventType wxEVT_GRID_CREATE_CELL = wxEVT_FIRST + 1576; -const wxEventType wxEVT_GRID_CHANGE_LABELS = wxEVT_FIRST + 1577; -const wxEventType wxEVT_GRID_CHANGE_SEL_LABEL = wxEVT_FIRST + 1578; -const wxEventType wxEVT_GRID_CELL_CHANGE = wxEVT_FIRST + 1579; -const wxEventType wxEVT_GRID_CELL_LCLICK = wxEVT_FIRST + 1580; -const wxEventType wxEVT_GRID_CELL_RCLICK = wxEVT_FIRST + 1581; -const wxEventType wxEVT_GRID_LABEL_LCLICK = wxEVT_FIRST + 1582; -const wxEventType wxEVT_GRID_LABEL_RCLICK = wxEVT_FIRST + 1583; - - -typedef void (wxEvtHandler::*wxGridEventFunction)(wxGridEvent&); - -#define EVT_GRID_SELECT_CELL(fn) { wxEVT_GRID_SELECT_CELL, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxGridEventFunction) &fn, NULL }, -#define EVT_GRID_CREATE_CELL(fn) { wxEVT_GRID_CREATE_CELL, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxGridEventFunction) &fn, NULL }, -#define EVT_GRID_CHANGE_LABELS(fn) { wxEVT_GRID_CHANGE_LABELS, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxGridEventFunction) &fn, NULL }, -#define EVT_GRID_CHANGE_SEL_LABEL(fn) { wxEVT_GRID_CHANGE_SEL_LABEL, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxGridEventFunction) &fn, NULL }, -#define EVT_GRID_CELL_CHANGE(fn) { wxEVT_GRID_CELL_CHANGE, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxGridEventFunction) &fn, NULL }, -#define EVT_GRID_CELL_LCLICK(fn) { wxEVT_GRID_CELL_LCLICK, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxGridEventFunction) &fn, NULL }, -#define EVT_GRID_CELL_RCLICK(fn) { wxEVT_GRID_CELL_RCLICK, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxGridEventFunction) &fn, NULL }, -#define EVT_GRID_LABEL_LCLICK(fn) { wxEVT_GRID_LABEL_LCLICK, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxGridEventFunction) &fn, NULL }, -#define EVT_GRID_LABEL_RCLICK(fn) { wxEVT_GRID_LABEL_RCLICK, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxGridEventFunction) &fn, NULL }, - -#endif - diff --git a/include/wx/generic/helpext.h b/include/wx/generic/helpext.h deleted file mode 100644 index 32033dea06..0000000000 --- a/include/wx/generic/helpext.h +++ /dev/null @@ -1,76 +0,0 @@ -/*-*- c++ -*-******************************************************** - * exthlp.h - an external help controller for wxWindows * - * * - * (C) 1998 by Karsten Ballüder (Ballueder@usa.net) * - * * - * $Id$ - *******************************************************************/ -#ifndef WXXHELP_H -#define WXXHELP_H - -#if wxUSE_HELP - -#ifdef __GNUG__ -# pragma interface "wxexthlp.h" -#endif - -#include "wx/generic/helphtml.h" - -#ifndef WXEXTHELP_DEFAULTBROWSER -/// Default browser name. -# define WXEXTHELP_DEFAULTBROWSER "netscape" -/// Is default browse a variant of netscape? -# define WXEXTHELP_DEFAULTBROWSER_IS_NETSCAPE TRUE -#endif -/// Name of environment variable to set help browser. -#define WXEXTHELP_ENVVAR_BROWSER "WX_HELPBROWSER" -/// Is browser a netscape browser? -#define WXEXTHELP_ENVVAR_BROWSERISNETSCAPE "WX_HELPBROWSER_NS" - - -/** - This class implements help via an external browser. - It requires the name of a directory containing the documentation - and a file mapping numerical Section numbers to relative URLS. - - The map file contains two or three fields per line: - numeric_id relative_URL [; comment/documentation] - - The numeric_id is the id used to look up the entry in - DisplaySection()/DisplayBlock(). The relative_URL is a filename of - an html file, relative to the help directory. The optional - comment/documentation field (after a ';') is used for keyword - searches, so some meaningful text here does not hurt. - If the documentation itself contains a ';', only the part before - that will be displayed in the listbox, but all of it used for search. - - Lines starting with ';' will be ignored. -*/ - -class wxExtHelpController : public wxHTMLHelpControllerBase -{ -DECLARE_CLASS(wxExtHelpController) - public: - wxExtHelpController(void); - - /** Tell it which browser to use. - The Netscape support will check whether Netscape is already - running (by looking at the .netscape/lock file in the user's - home directory) and tell it to load the page into the existing - window. - @param browsername The command to call a browser/html viewer. - @param isNetscape Set this to TRUE if the browser is some variant of Netscape. - */ - void SetBrowser(wxString const & browsername = WXEXTHELP_DEFAULTBROWSER, - bool isNetscape = WXEXTHELP_DEFAULTBROWSER_IS_NETSCAPE); - private: - /// How to call the html viewer. - wxString m_BrowserName; - /// Is the viewer a variant of netscape? - bool m_BrowserIsNetscape; - /// Call the browser using a relative URL. - bool DisplayHelp(wxString const &); -}; - -#endif -#endif diff --git a/include/wx/generic/helphtml.h b/include/wx/generic/helphtml.h deleted file mode 100644 index 05bfbd947f..0000000000 --- a/include/wx/generic/helphtml.h +++ /dev/null @@ -1,128 +0,0 @@ -/*-*- c++ -*-******************************************************** - * helphtml.h - base class for html based help controllers * - * * - * (C) 1999 by Karsten Ballüder (Ballueder@usa.net) * - * * - * $Id$ - *******************************************************************/ -#ifndef WXXHELPHTML_H -#define WXXHELPHTML_H - -#if wxUSE_HELP - -#ifdef __GNUG__ -# pragma interface "helphtml.h" -#endif - -#include "wx/helpbase.h" - -/// Name for map file. -#define WXEXTHELP_MAPFILE "wxhelp.map" -/// Path separator. -#define WXEXTHELP_SEPARATOR '/' -/// Maximum line length in map file. -#define WXEXTHELP_BUFLEN 512 -/// Character introducing comments/documentation field in map file. -#define WXEXTHELP_COMMENTCHAR ';' - -class wxExtHelpMapList; - - -/** - This class is the base class for all html help implementations. - It requires the name of a directory containing the documentation - and a file mapping numerical Section numbers to relative URLS. - - The map file contains two or three fields per line: - numeric_id relative_URL [; comment/documentation] - - The numeric_id is the id used to look up the entry in - DisplaySection()/DisplayBlock(). The relative_URL is a filename of - an html file, relative to the help directory. The optional - comment/documentation field (after a ';') is used for keyword - searches, so some meaningful text here does not hurt. - If the documentation itself contains a ';', only the part before - that will be displayed in the listbox, but all of it used for search. - - Lines starting with ';' will be ignored. -*/ - -class wxHTMLHelpControllerBase : public wxHelpControllerBase -{ -DECLARE_ABSTRACT_CLASS(wxHTMLHelpControllerBase) - public: - wxHTMLHelpControllerBase(void); - virtual ~wxHTMLHelpControllerBase(void); - - /** This must be called to tell the controller where to find the - documentation. - If a locale is set, look in file/localename, i.e. - If passed "/usr/local/myapp/help" and the current wxLocale is - set to be "de", then look in "/usr/local/myapp/help/de/" - first and fall back to "/usr/local/myapp/help" if that - doesn't exist. - - @param file - NOT a filename, but a directory name. - @return true on success - */ - virtual bool Initialize(const wxString& dir, int WXUNUSED(server)) - { return Initialize(dir); } - - /** This must be called to tell the controller where to find the - documentation. - If a locale is set, look in file/localename, i.e. - If passed "/usr/local/myapp/help" and the current wxLocale is - set to be "de", then look in "/usr/local/myapp/help/de/" - first and fall back to "/usr/local/myapp/help" if that - doesn't exist. - @param dir - directory name where to fine the help files - @return true on success - */ - virtual bool Initialize(const wxString& dir); - - /** If file is "", reloads file given in Initialize. - @file Name of help directory. - @return true on success - */ - virtual bool LoadFile(const wxString& file = ""); - - /** Display list of all help entries. - @return true on success - */ - virtual bool DisplayContents(void); - /** Display help for id sectionNo. - @return true on success - */ - virtual bool DisplaySection(int sectionNo); - /** Display help for id sectionNo -- identical with DisplaySection(). - @return true on success - */ - virtual bool DisplayBlock(long blockNo); - /** Search comment/documentation fields in map file and present a - list to chose from. - @key k string to search for, empty string will list all entries - @return true on success - */ - virtual bool KeywordSearch(const wxString& k); - - /// does nothing - virtual bool Quit(void); - /// does nothing - virtual void OnQuit(void); - - /// Call the browser using a relative URL. - virtual bool DisplayHelp(wxString const &) = 0; - - protected: - /// Filename of currently active map file. - wxString m_MapFile; - /// How many entries do we have in the map file? - int m_NumOfEntries; - /// A list containing all id,url,documentation triples. - wxList *m_MapList; - /// Deletes the list and all objects. - void DeleteList(void); -}; - -#endif -#endif diff --git a/include/wx/generic/helpxlp.h b/include/wx/generic/helpxlp.h deleted file mode 100644 index ec5aa7e174..0000000000 --- a/include/wx/generic/helpxlp.h +++ /dev/null @@ -1,127 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: helpxlp.h -// Purpose: Help system: wxHelp implementation -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -/* sccsid[] = "@(#)wx_help.h 1.2 5/9/94" */ - -#ifndef __HELPXLPH__ -#define __HELPXLPH__ - -#ifdef __GNUG__ -#pragma interface "helpxlp.h" -#endif - -#include -#include "wx/wx.h" - -#if wxUSE_HELP - -#include "wx/helpbase.h" - -#ifdef __WXMSW__ -#include "wx/dde.h" -#else -// Or whatever it'll be called -#include "wx/ipctcp.h" -#endif - -class WXDLLEXPORT wxXLPHelpController; - -// Connection class for implementing the connection between the -// wxHelp process and the application -class WXDLLEXPORT wxXLPHelpConnection: public - -#ifdef __WXMSW__ - wxDDEConnection -#else - wxTCPConnection -#endif - -{ - friend class wxXLPHelpController; - - DECLARE_DYNAMIC_CLASS(wxXLPHelpConnection) - - public: - - wxXLPHelpConnection(wxXLPHelpController *instance); - bool OnDisconnect(void); - - private: - wxXLPHelpController *helpInstance; -}; - -// Connection class for implementing the client process -// controlling the wxHelp process -class WXDLLEXPORT wxXLPHelpClient: public - -#ifdef __WXMSW__ - wxDDEClient -#else - wxTCPClient -#endif - -{ -DECLARE_CLASS(wxXLPHelpClient) - - friend class WXDLLEXPORT wxXLPHelpController; -public: - wxXLPHelpClient(wxXLPHelpController* c) { m_controller = c; } - - wxConnectionBase *OnMakeConnection(void) - { return new wxXLPHelpConnection(m_controller); - } -protected: - wxXLPHelpController* m_controller; -}; - -// An application can have one or more instances of wxHelp, -// represented by an object of this class. -// Nothing happens on initial creation; the application -// must call a member function to display help. -// If the instance of wxHelp is already active, that instance -// will be used for subsequent help. - -class WXDLLEXPORT wxXLPHelpController: public wxHelpControllerBase -{ - friend class WXDLLEXPORT wxXLPHelpConnection; - DECLARE_CLASS(wxXLPHelpController) - - public: - wxXLPHelpController(void); - ~wxXLPHelpController(void); - - // Must call this to set the filename and server name - virtual bool Initialize(const wxString& file, int server = -1); - // If file is "", reloads file given in Initialize - virtual bool LoadFile(const wxString& file = ""); - virtual bool DisplayContents(void); - virtual bool DisplaySection(int sectionNo); - virtual bool DisplayBlock(long blockNo); - virtual bool KeywordSearch(const wxString& k); - - virtual bool Quit(void); - virtual void OnQuit(void); - - // Private - bool Run(void); - - protected: - wxString helpFile; - wxString helpHost; - int helpServer; - bool helpRunning; - wxXLPHelpConnection* helpConnection; - wxXLPHelpClient helpClient; -}; - -#endif // wxUSE_HELP -#endif - // __HELPXLPH__ diff --git a/include/wx/generic/imaglist.h b/include/wx/generic/imaglist.h deleted file mode 100644 index 60f0c5d8e3..0000000000 --- a/include/wx/generic/imaglist.h +++ /dev/null @@ -1,78 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: imaglist.h -// Purpose: -// Author: Robert Roebling -// Created: 01/02/97 -// Id: -// Copyright: (c) 1998 Robert Roebling, Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __IMAGELISTH_G__ -#define __IMAGELISTH_G__ - -#ifdef __GNUG__ -#pragma interface "imaglist.h" -#endif - -#include "wx/defs.h" -#include "wx/gdicmn.h" -#include "wx/bitmap.h" -#include "wx/dc.h" - -/* - * wxImageList is used for wxListCtrl, wxTreeCtrl. These controls refer to - * images for their items by an index into an image list. - * A wxImageList is capable of creating images with optional masks from - * a variety of sources - a single bitmap plus a colour to indicate the mask, - * two bitmaps, or an icon. - * - * Image lists can also create and draw images used for drag and drop functionality. - * This is not yet implemented in wxImageList. We need to discuss a generic API - * for doing drag and drop and see whether it ties in with the Win95 view of it. - * See below for candidate functions and an explanation of how they might be - * used. - */ - -// Flags for Draw -#define wxIMAGELIST_DRAW_NORMAL 0x0001 -#define wxIMAGELIST_DRAW_TRANSPARENT 0x0002 -#define wxIMAGELIST_DRAW_SELECTED 0x0004 -#define wxIMAGELIST_DRAW_FOCUSED 0x0008 - -// Flag values for Set/GetImageList -enum { - wxIMAGE_LIST_NORMAL, // Normal icons - wxIMAGE_LIST_SMALL, // Small icons - wxIMAGE_LIST_STATE // State icons: unimplemented (see WIN32 documentation) -}; - -class wxImageList: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxImageList) - - public: - - wxImageList() { } - wxImageList( int width, int height, bool mask = TRUE, int initialCount = 1 ); - ~wxImageList(); - bool Create(); - int GetImageCount() const; - int Add( const wxBitmap &bitmap ); - const wxBitmap *GetBitmap(int index) const; - bool Replace( int index, const wxBitmap &bitmap ); - bool Remove( int index ); - bool RemoveAll(); - bool GetSize( int index, int &width, int &height ) const; - bool Draw(int index, wxDC& dc, int x, int y, - int flags = wxIMAGELIST_DRAW_NORMAL, bool solidBackground = FALSE ); - - private: - - wxList m_images; - int m_width; - int m_height; -}; - -#endif // __IMAGELISTH_G__ - diff --git a/include/wx/generic/laywin.h b/include/wx/generic/laywin.h deleted file mode 100644 index 49afa3d91b..0000000000 --- a/include/wx/generic/laywin.h +++ /dev/null @@ -1,181 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: laywin.h -// Purpose: Implements a simple layout algorithm, plus -// wxSashLayoutWindow which is an example of a window with -// layout-awareness (via event handlers). This is suited to -// IDE-style window layout. -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_LAYWIN_H_G_ -#define _WX_LAYWIN_H_G_ - -#ifdef __GNUG__ -#pragma interface "laywin.h" -#endif - -#include "wx/sashwin.h" - -const wxEventType wxEVT_QUERY_LAYOUT_INFO = wxEVT_FIRST + 1500; -const wxEventType wxEVT_CALCULATE_LAYOUT = wxEVT_FIRST + 1501; - -enum wxLayoutOrientation { - wxLAYOUT_HORIZONTAL, - wxLAYOUT_VERTICAL -}; - -enum wxLayoutAlignment { - wxLAYOUT_NONE, - wxLAYOUT_TOP, - wxLAYOUT_LEFT, - wxLAYOUT_RIGHT, - wxLAYOUT_BOTTOM, -}; - -// Not sure this is necessary -// Tell window which dimension we're sizing on -#define wxLAYOUT_LENGTH_Y 0x0008 -#define wxLAYOUT_LENGTH_X 0x0000 - -// Use most recently used length -#define wxLAYOUT_MRU_LENGTH 0x0010 - -// Only a query, so don't actually move it. -#define wxLAYOUT_QUERY 0x0100 - -/* - * This event is used to get information about window alignment, - * orientation and size. - */ - -class WXDLLEXPORT wxQueryLayoutInfoEvent: public wxEvent -{ -DECLARE_DYNAMIC_CLASS(wxQueryLayoutInfoEvent) -public: - - wxQueryLayoutInfoEvent(wxWindowID id = 0) - { - SetEventType(wxEVT_QUERY_LAYOUT_INFO); - m_requestedLength = 0; - m_flags = 0; - m_id = id; - m_alignment = wxLAYOUT_TOP; - m_orientation = wxLAYOUT_HORIZONTAL; - } -// Read by the app - inline void SetRequestedLength(int length) { m_requestedLength = length; } - inline int GetRequestedLength() const { return m_requestedLength; } - - inline void SetFlags(int flags) { m_flags = flags; } - inline int GetFlags() const { return m_flags; } - -// Set by the app - inline void SetSize(const wxSize& size) { m_size = size; } - inline wxSize GetSize() const { return m_size; } - - inline void SetOrientation(wxLayoutOrientation orient) { m_orientation = orient; } - inline wxLayoutOrientation GetOrientation() const { return m_orientation; } - - inline void SetAlignment(wxLayoutAlignment align) { m_alignment = align; } - inline wxLayoutAlignment GetAlignment() const { return m_alignment; } -protected: - int m_flags; - int m_requestedLength; - wxSize m_size; - wxLayoutOrientation m_orientation; - wxLayoutAlignment m_alignment; - -}; - -typedef void (wxEvtHandler::*wxQueryLayoutInfoEventFunction)(wxQueryLayoutInfoEvent&); - -#define EVT_QUERY_LAYOUT_INFO(func) { wxEVT_QUERY_LAYOUT_INFO, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxQueryLayoutInfoEventFunction) & func, NULL }, - -/* - * This event is used to take a bite out of the available client area. - */ - -class WXDLLEXPORT wxCalculateLayoutEvent: public wxEvent -{ -DECLARE_DYNAMIC_CLASS(wxCalculateLayoutEvent) -public: - wxCalculateLayoutEvent(wxWindowID id = 0) - { - SetEventType(wxEVT_CALCULATE_LAYOUT); - m_flags = 0; - m_id = id; - } -// Read by the app - inline void SetFlags(int flags) { m_flags = flags; } - inline int GetFlags() const { return m_flags; } - -// Set by the app - inline void SetRect(const wxRect& rect) { m_rect = rect; } - inline wxRect GetRect() const { return m_rect; } -protected: - int m_flags; - wxRect m_rect; -}; - -typedef void (wxEvtHandler::*wxCalculateLayoutEventFunction)(wxCalculateLayoutEvent&); - -#define EVT_CALCULATE_LAYOUT(func) { wxEVT_CALCULATE_LAYOUT, -1, -1, (wxObjectEventFunction) (wxEventFunction) (wxCalculateLayoutEventFunction) & func, NULL }, - -// This is window that can remember alignment/orientation, does its own layout, -// and can provide sashes too. Useful for implementing docked windows with sashes in -// an IDE-style interface. -class WXDLLEXPORT wxSashLayoutWindow: public wxSashWindow -{ - DECLARE_CLASS(wxSashLayoutWindow) -public: - wxSashLayoutWindow(wxWindow *parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = wxSW_3D|wxCLIP_CHILDREN, const wxString& name = "layoutWindow"); - -// Accessors - inline wxLayoutAlignment GetAlignment() const { return m_alignment; }; - inline wxLayoutOrientation GetOrientation() const { return m_orientation; }; - - inline void SetAlignment(wxLayoutAlignment align) { m_alignment = align; }; - inline void SetOrientation(wxLayoutOrientation orient) { m_orientation = orient; }; - - // Give the window default dimensions - inline void SetDefaultSize(const wxSize& size) { m_defaultSize = size; } - -// Event handlers - // Called by layout algorithm to allow window to take a bit out of the - // client rectangle, and size itself if not in wxLAYOUT_QUERY mode. - void OnCalculateLayout(wxCalculateLayoutEvent& event); - - // Called by layout algorithm to retrieve information about the window. - void OnQueryLayoutInfo(wxQueryLayoutInfoEvent& event); -protected: - wxLayoutAlignment m_alignment; - wxLayoutOrientation m_orientation; - wxSize m_defaultSize; - -DECLARE_EVENT_TABLE() -}; - -class WXDLLEXPORT wxMDIParentFrame; -class WXDLLEXPORT wxFrame; - -// This class implements the layout algorithm -class WXDLLEXPORT wxLayoutAlgorithm: public wxObject -{ -public: - wxLayoutAlgorithm() {} - - // The MDI client window is sized to whatever's left over. - bool LayoutMDIFrame(wxMDIParentFrame* frame, wxRect* rect = (wxRect*) NULL); - - // mainWindow is sized to whatever's left over. - bool LayoutFrame(wxFrame* frame, wxWindow* mainWindow = (wxWindow*) NULL); -}; - -#endif - // _WX_LAYWIN_H_G_ diff --git a/include/wx/generic/listctrl.h b/include/wx/generic/listctrl.h deleted file mode 100644 index 810d91f9a6..0000000000 --- a/include/wx/generic/listctrl.h +++ /dev/null @@ -1,652 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: listctrl.h -// Purpose: Generic list control -// Author: Robert Roebling -// Created: 01/02/97 -// Id: -// Copyright: (c) 1998 Robert Roebling, Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __LISTCTRLH_G__ -#define __LISTCTRLH_G__ - -#ifdef __GNUG__ -#pragma interface "listctrl.h" -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/generic/imaglist.h" -#include "wx/control.h" -#include "wx/timer.h" -#include "wx/textctrl.h" -#include "wx/dcclient.h" -#include "wx/scrolwin.h" -#include "wx/settings.h" - -#if wxUSE_DRAG_AND_DROP -class WXDLLEXPORT wxDropTarget; -#endif - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class WXDLLEXPORT wxListItem; -class WXDLLEXPORT wxListEvent; -class WXDLLEXPORT wxListCtrl; - -//----------------------------------------------------------------------------- -// internal classes -//----------------------------------------------------------------------------- - -class WXDLLEXPORT wxListHeaderData; -class WXDLLEXPORT wxListItemData; -class WXDLLEXPORT wxListLineData; - -class WXDLLEXPORT wxListHeaderWindow; -class WXDLLEXPORT wxListMainWindow; - -class WXDLLEXPORT wxListRenameTimer; -//class wxListTextCtrl; - -//----------------------------------------------------------------------------- -// types -//----------------------------------------------------------------------------- - -// type of compare function for wxListCtrl sort operation -typedef int (*wxListCtrlCompare)(long item1, long item2, long sortData); - -//----------------------------------------------------------------------------- -// wxListCtrl flags -//----------------------------------------------------------------------------- - -#define wxLC_ICON 0x0004 -#define wxLC_SMALL_ICON 0x0008 -#define wxLC_LIST 0x0010 -#define wxLC_REPORT 0x0020 -#define wxLC_ALIGN_TOP 0x0040 -#define wxLC_ALIGN_LEFT 0x0080 -#define wxLC_AUTOARRANGE 0x0100 // not supported in wxGLC -#define wxLC_USER_TEXT 0x0200 // not supported in wxGLC (how does it work?) -#define wxLC_EDIT_LABELS 0x0400 -#define wxLC_NO_HEADER 0x0800 // not supported in wxGLC -#define wxLC_NO_SORT_HEADER 0x1000 // not supported in wxGLC -#define wxLC_SINGLE_SEL 0x2000 -#define wxLC_SORT_ASCENDING 0x4000 -#define wxLC_SORT_DESCENDING 0x8000 // not supported in wxGLC - -#define wxLC_MASK_TYPE (wxLC_ICON | wxLC_SMALL_ICON | wxLC_LIST | wxLC_REPORT) -#define wxLC_MASK_ALIGN (wxLC_ALIGN_TOP | wxLC_ALIGN_LEFT) -#define wxLC_MASK_SORT (wxLC_SORT_ASCENDING | wxLC_SORT_DESCENDING) - -// Omitted because (a) too much detail (b) not enough style flags -// #define wxLC_NO_SCROLL -// #define wxLC_NO_LABEL_WRAP -// #define wxLC_OWNERDRAW_FIXED -// #define wxLC_SHOW_SEL_ALWAYS - -// Mask flags to tell app/GUI what fields of wxListItem are valid -#define wxLIST_MASK_STATE 0x0001 -#define wxLIST_MASK_TEXT 0x0002 -#define wxLIST_MASK_IMAGE 0x0004 -#define wxLIST_MASK_DATA 0x0008 -#define wxLIST_SET_ITEM 0x0010 -#define wxLIST_MASK_WIDTH 0x0020 -#define wxLIST_MASK_FORMAT 0x0040 - -// State flags for indicating the state of an item -#define wxLIST_STATE_DONTCARE 0x0000 -#define wxLIST_STATE_DROPHILITED 0x0001 // not supported in wxGLC -#define wxLIST_STATE_FOCUSED 0x0002 -#define wxLIST_STATE_SELECTED 0x0004 -#define wxLIST_STATE_CUT 0x0008 // not supported in wxGLC - -// Hit test flags, used in HitTest // wxGLC suppots 20 and 80 -#define wxLIST_HITTEST_ABOVE 0x0001 // Above the client area. -#define wxLIST_HITTEST_BELOW 0x0002 // Below the client area. -#define wxLIST_HITTEST_NOWHERE 0x0004 // In the client area but below the last item. -#define wxLIST_HITTEST_ONITEMICON 0x0020 // On the bitmap associated with an item. -#define wxLIST_HITTEST_ONITEMLABEL 0x0080 // On the label (string) associated with an item. -#define wxLIST_HITTEST_ONITEMRIGHT 0x0100 // In the area to the right of an item. -#define wxLIST_HITTEST_ONITEMSTATEICON 0x0200 // On the state icon for a tree view item that is in a user-defined state. -#define wxLIST_HITTEST_TOLEFT 0x0400 // To the right of the client area. -#define wxLIST_HITTEST_TORIGHT 0x0800 // To the left of the client area. - -#define wxLIST_HITTEST_ONITEM (wxLIST_HITTEST_ONITEMICON | wxLIST_HITTEST_ONITEMLABEL | wxLIST_HITTEST_ONITEMSTATEICON) - - - -// Flags for GetNextItem // always wxLIST_NEXT_ALL in wxGLC -enum { - wxLIST_NEXT_ABOVE, // Searches for an item above the specified item - wxLIST_NEXT_ALL, // Searches for subsequent item by index - wxLIST_NEXT_BELOW, // Searches for an item below the specified item - wxLIST_NEXT_LEFT, // Searches for an item to the left of the specified item - wxLIST_NEXT_RIGHT // Searches for an item to the right of the specified item -}; - -// Alignment flags for Arrange // always wxLIST_ALIGN_LEFT in wxGLC -enum { - wxLIST_ALIGN_DEFAULT, - wxLIST_ALIGN_LEFT, - wxLIST_ALIGN_TOP, - wxLIST_ALIGN_SNAP_TO_GRID -}; - -// Column format // always wxLIST_FORMAT_LEFT in wxGLC -enum { - wxLIST_FORMAT_LEFT, - wxLIST_FORMAT_RIGHT, - wxLIST_FORMAT_CENTRE, - wxLIST_FORMAT_CENTER = wxLIST_FORMAT_CENTRE -}; - -// Autosize values for SetColumnWidth -enum { - wxLIST_AUTOSIZE = -1, // always 80 in wxGLC (what else?) - wxLIST_AUTOSIZE_USEHEADER = -2 -}; - -// Flag values for GetItemRect -enum { - wxLIST_RECT_BOUNDS, - wxLIST_RECT_ICON, - wxLIST_RECT_LABEL -}; - -// Flag values for FindItem // not supported by wxGLC -enum { - wxLIST_FIND_UP, - wxLIST_FIND_DOWN, - wxLIST_FIND_LEFT, - wxLIST_FIND_RIGHT -}; - -//----------------------------------------------------------------------------- -// wxListItem -//----------------------------------------------------------------------------- - -class WXDLLEXPORT wxListItem: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxListItem) - - public: - long m_mask; // Indicates what fields are valid - long m_itemId; // The zero-based item position - int m_col; // Zero-based column, if in report mode - long m_state; // The state of the item - long m_stateMask; // Which flags of m_state are valid (uses same flags) - wxString m_text; // The label/header text - int m_image; // The zero-based index into an image list - long m_data; // App-defined data - wxColour *m_colour; // only wxGLC, not supported by Windows ;-> - - // For columns only - int m_format; // left, right, centre - int m_width; // width of column - - wxListItem(void); -}; - -//----------------------------------------------------------------------------- -// wxListEvent -//----------------------------------------------------------------------------- - -class WXDLLEXPORT wxListEvent: public wxNotifyEvent -{ - DECLARE_DYNAMIC_CLASS(wxListEvent) - - public: - wxListEvent(wxEventType commandType = wxEVT_NULL, int id = 0); - - int m_code; - long m_itemIndex; - long m_oldItemIndex; - int m_col; - bool m_cancelled; - wxPoint m_pointDrag; - - wxListItem m_item; -}; - -typedef void (wxEvtHandler::*wxListEventFunction)(wxListEvent&); - -#define EVT_LIST_BEGIN_DRAG(id, fn) { wxEVT_COMMAND_LIST_BEGIN_DRAG, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, (wxObject *) NULL }, -#define EVT_LIST_BEGIN_RDRAG(id, fn) { wxEVT_COMMAND_LIST_BEGIN_RDRAG, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, (wxObject *) NULL }, -#define EVT_LIST_BEGIN_LABEL_EDIT(id, fn) { wxEVT_COMMAND_LIST_BEGIN_LABEL_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, (wxObject *) NULL }, -#define EVT_LIST_END_LABEL_EDIT(id, fn) { wxEVT_COMMAND_LIST_END_LABEL_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, (wxObject *) NULL }, -#define EVT_LIST_DELETE_ITEM(id, fn) { wxEVT_COMMAND_LIST_DELETE_ITEM, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, (wxObject *) NULL }, -#define EVT_LIST_DELETE_ALL_ITEMS(id, fn) { wxEVT_COMMAND_LIST_DELETE_ALL_ITEMS, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, (wxObject *) NULL }, -#define EVT_LIST_GET_INFO(id, fn) { wxEVT_COMMAND_LIST_GET_INFO, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, (wxObject *) NULL }, -#define EVT_LIST_SET_INFO(id, fn) { wxEVT_COMMAND_LIST_SET_INFO, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, (wxObject *) NULL }, -#define EVT_LIST_ITEM_SELECTED(id, fn) { wxEVT_COMMAND_LIST_ITEM_SELECTED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, (wxObject *) NULL }, -#define EVT_LIST_ITEM_DESELECTED(id, fn) { wxEVT_COMMAND_LIST_ITEM_DESELECTED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, (wxObject *) NULL }, -#define EVT_LIST_KEY_DOWN(id, fn) { wxEVT_COMMAND_LIST_KEY_DOWN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, (wxObject *) NULL }, -#define EVT_LIST_INSERT_ITEM(id, fn) { wxEVT_COMMAND_LIST_INSERT_ITEM, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, (wxObject *) NULL }, -#define EVT_LIST_COL_CLICK(id, fn) { wxEVT_COMMAND_LIST_COL_CLICK, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, (wxObject *) NULL }, -#define EVT_LIST_ITEM_RIGHT_CLICK(id, fn) { wxEVT_COMMAND_LIST_ITEM_RIGHT_CLICK, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, (wxObject *) NULL }, -#define EVT_LIST_ITEM_MIDDLE_CLICK(id, fn) { wxEVT_COMMAND_LIST_ITEM_MIDDLE_CLICK, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, (wxObject *) NULL }, -#define EVT_LIST_ITEM_ACTIVATED(id, fn) { wxEVT_COMMAND_LIST_ITEM_ACTIVATED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, (wxObject *) NULL }, - -//----------------------------------------------------------------------------- -// wxListItemData (internal) -//----------------------------------------------------------------------------- - -class WXDLLEXPORT wxListItemData : public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxListItemData); - - public: - wxString m_text; - int m_image; - long m_data; - int m_xpos,m_ypos; - int m_width,m_height; - wxColour *m_colour; - - public: - wxListItemData(void); - wxListItemData( const wxListItem &info ); - void SetItem( const wxListItem &info ); - void SetText( const wxString &s ); - void SetImage( int image ); - void SetData( long data ); - void SetPosition( int x, int y ); - void SetSize( int width, int height ); - void SetColour( wxColour *col ); - bool HasImage(void) const; - bool HasText(void) const; - bool IsHit( int x, int y ) const; - void GetText( wxString &s ); - int GetX( void ) const; - int GetY( void ) const; - int GetWidth(void) const; - int GetHeight(void) const; - int GetImage(void) const; - void GetItem( wxListItem &info ); - wxColour *GetColour(void); -}; - -//----------------------------------------------------------------------------- -// wxListHeaderData (internal) -//----------------------------------------------------------------------------- - -class WXDLLEXPORT wxListHeaderData : public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxListHeaderData); - - protected: - long m_mask; - int m_image; - wxString m_text; - int m_format; - int m_width; - int m_xpos,m_ypos; - int m_height; - - public: - wxListHeaderData(void); - wxListHeaderData( const wxListItem &info ); - void SetItem( const wxListItem &item ); - void SetPosition( int x, int y ); - void SetWidth( int w ); - void SetFormat( int format ); - void SetHeight( int h ); - bool HasImage(void) const; - bool HasText(void) const; - bool IsHit( int x, int y ) const; - void GetItem( wxListItem &item ); - void GetText( wxString &s ); - int GetImage(void) const; - int GetWidth(void) const; - int GetFormat(void) const; -}; - -//----------------------------------------------------------------------------- -// wxListLineData (internal) -//----------------------------------------------------------------------------- - -class WXDLLEXPORT wxListLineData : public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxListLineData); - - public: - wxList m_items; - wxRectangle m_bound_all; - wxRectangle m_bound_label; - wxRectangle m_bound_icon; - wxRectangle m_bound_hilight; - int m_mode; - bool m_hilighted; - wxBrush *m_hilightBrush; - int m_spacing; - wxListMainWindow *m_owner; - - void DoDraw( wxDC *dc, bool hilight, bool paintBG ); - - public: - wxListLineData( void ) {}; - wxListLineData( wxListMainWindow *owner, int mode, wxBrush *hilightBrush ); - void CalculateSize( wxDC *dc, int spacing ); - void SetPosition( wxDC *dc, int x, int y, int window_width ); - void SetColumnPosition( int index, int x ); - void GetSize( int &width, int &height ); - void GetExtent( int &x, int &y, int &width, int &height ); - void GetLabelExtent( int &x, int &y, int &width, int &height ); - long IsHit( int x, int y ); - void InitItems( int num ); - void SetItem( int index, const wxListItem &info ); - void GetItem( int index, wxListItem &info ); - void GetText( int index, wxString &s ); - void SetText( int index, const wxString s ); - int GetImage( int index ); - void GetRect( wxRectangle &rect ); - void Hilight( bool on ); - void ReverseHilight( void ); - void DrawRubberBand( wxDC *dc, bool on ); - void Draw( wxDC *dc ); - bool IsInRect( int x, int y, const wxRectangle &rect ); - bool IsHilighted( void ); - void AssignRect( wxRectangle &dest, int x, int y, int width, int height ); - void AssignRect( wxRectangle &dest, const wxRectangle &source ); -}; - -//----------------------------------------------------------------------------- -// wxListHeaderWindow (internal) -//----------------------------------------------------------------------------- - -class WXDLLEXPORT wxListHeaderWindow : public wxWindow -{ - DECLARE_DYNAMIC_CLASS(wxListHeaderWindow) - - protected: - wxListMainWindow *m_owner; - wxCursor *m_currentCursor; - wxCursor *m_resizeCursor; - bool m_isDraging; - int m_column; - int m_minX; - int m_currentX; - - public: - wxListHeaderWindow( void ); - ~wxListHeaderWindow( void ); - wxListHeaderWindow( wxWindow *win, wxWindowID id, wxListMainWindow *owner, - const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, - long style = 0, const wxString &name = "columntitles" ); - void DoDrawRect( wxDC *dc, int x, int y, int w, int h ); - void OnPaint( wxPaintEvent &event ); - void DrawCurrent(); - void OnMouse( wxMouseEvent &event ); - void OnSetFocus( wxFocusEvent &event ); - - DECLARE_EVENT_TABLE() -}; - -//----------------------------------------------------------------------------- -// wxListRenameTimer (internal) -//----------------------------------------------------------------------------- - -class WXDLLEXPORT wxListRenameTimer: public wxTimer -{ - private: - wxListMainWindow *m_owner; - - public: - wxListRenameTimer( wxListMainWindow *owner ); - void Notify(); -}; - -//----------------------------------------------------------------------------- -// wxListTextCtrl (internal) -//----------------------------------------------------------------------------- - -class WXDLLEXPORT wxListTextCtrl: public wxTextCtrl -{ - DECLARE_DYNAMIC_CLASS(wxListTextCtrl); - - private: - bool *m_accept; - wxString *m_res; - wxListMainWindow *m_owner; - - public: - wxListTextCtrl(void) {}; - wxListTextCtrl( wxWindow *parent, const wxWindowID id, - bool *accept, wxString *res, wxListMainWindow *owner, - const wxString &value = "", - const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, - int style = 0, const wxValidator& validator = wxDefaultValidator, - const wxString &name = "wxListTextCtrlText" ); - void OnChar( wxKeyEvent &event ); - void OnKillFocus( wxFocusEvent &event ); - - DECLARE_EVENT_TABLE() -}; - -//----------------------------------------------------------------------------- -// wxListMainWindow (internal) -//----------------------------------------------------------------------------- - -class WXDLLEXPORT wxListMainWindow: public wxScrolledWindow -{ - DECLARE_DYNAMIC_CLASS(wxListMainWindow); - - public: - long m_mode; - wxList m_lines; - wxList m_columns; - wxListLineData *m_current; - int m_visibleLines; - wxBrush *m_hilightBrush; - wxColour *m_hilightColour; - int m_xScroll,m_yScroll; - bool m_dirty; - wxImageList *m_small_image_list; - wxImageList *m_normal_image_list; - int m_small_spacing; - int m_normal_spacing; - bool m_hasFocus; - bool m_usedKeys; - bool m_lastOnSame; - wxTimer *m_renameTimer; -// wxListTextCtrl *m_text; - bool m_renameAccept; - wxString m_renameRes; - bool m_isCreated; - int m_dragCount; - - public: - wxListMainWindow(void); - wxListMainWindow( wxWindow *parent, wxWindowID id, - const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, - long style = 0, const wxString &name = "listctrl" ); - ~wxListMainWindow(void); - void RefreshLine( wxListLineData *line ); - void OnPaint( wxPaintEvent &event ); - void HilightAll( bool on ); - void SendNotify( wxListLineData *line, wxEventType command ); - void FocusLine( wxListLineData *line ); - void UnfocusLine( wxListLineData *line ); - void SelectLine( wxListLineData *line ); - void DeselectLine( wxListLineData *line ); - void DeleteLine( wxListLineData *line ); - void RenameLine( wxListLineData *line, const wxString &newName ); - void StartLabelEdit( wxListLineData *line ); - void OnRenameTimer(void); - void OnRenameAccept(void); - void OnMouse( wxMouseEvent &event ); - void MoveToFocus( void ); - void OnArrowChar( wxListLineData *newCurrent, bool shiftDown ); - void OnChar( wxKeyEvent &event ); - void OnSetFocus( wxFocusEvent &event ); - void OnKillFocus( wxFocusEvent &event ); - void OnSize( wxSizeEvent &event ); - void DrawImage( int index, wxDC *dc, int x, int y ); - void GetImageSize( int index, int &width, int &height ); - int GetIndexOfLine( const wxListLineData *line ); - int GetTextLength( wxString &s ); // should be const - - void SetImageList( wxImageList *imageList, int which ); - void SetItemSpacing( int spacing, bool isSmall = FALSE ); - int GetItemSpacing( bool isSmall = FALSE ); - void SetColumn( int col, wxListItem &item ); - void SetColumnWidth( int col, int width ); - void GetColumn( int col, wxListItem &item ); - int GetColumnWidth( int vol ); - int GetColumnCount( void ); - int GetCountPerPage( void ); - void SetItem( wxListItem &item ); - void GetItem( wxListItem &item ); - void SetItemState( long item, long state, long stateMask ); - int GetItemState( long item, long stateMask ); - int GetItemCount( void ); - void GetItemRect( long index, wxRectangle &rect ); - bool GetItemPosition(long item, wxPoint& pos); - int GetSelectedItemCount( void ); - void SetMode( long mode ); - long GetMode( void ) const; - void CalculatePositions( void ); - void RealizeChanges(void); - long GetNextItem( long item, int geometry, int state ); - void DeleteItem( long index ); - void DeleteAllItems( void ); - void DeleteColumn( int col ); - void DeleteEverything( void ); - void EnsureVisible( long index ); - long FindItem(long start, const wxString& str, bool partial = FALSE ); - long FindItem(long start, long data); - long HitTest( int x, int y, int &flags ); - void InsertItem( wxListItem &item ); -// void AddItem( wxListItem &item ); - void InsertColumn( long col, wxListItem &item ); -// void AddColumn( wxListItem &item ); - void SortItems( wxListCtrlCompare fn, long data ); - - DECLARE_EVENT_TABLE() -}; - -//----------------------------------------------------------------------------- -// wxListCtrl -//----------------------------------------------------------------------------- - -class WXDLLEXPORT wxListCtrl: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxListCtrl); - - public: - - wxListCtrl(void); - wxListCtrl( wxWindow *parent, wxWindowID id = -1, - const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, - long style = wxLC_ICON, const wxValidator& validator = wxDefaultValidator, - const wxString &name = "listctrl" ) - { - Create(parent, id, pos, size, style, validator, name); - } - ~wxListCtrl(void); - bool Create( wxWindow *parent, wxWindowID id = -1, - const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, - long style = wxLC_ICON, const wxValidator& validator = wxDefaultValidator, - const wxString &name = "listctrl" ); - void OnSize( wxSizeEvent &event ); - bool GetColumn( int col, wxListItem& item ) const; - bool SetColumn( int col, wxListItem& item ); - int GetColumnWidth( int col ) const; - bool SetColumnWidth( int col, int width); - int GetCountPerPage(void) const; // not the same in wxGLC as in Windows, I think -// wxText& GetEditControl(void) const; // not supported in wxGLC - bool GetItem( wxListItem& info ) const; - bool SetItem( wxListItem& info ) ; - long SetItem( long index, int col, const wxString& label, int imageId = -1 ); - int GetItemState( long item, long stateMask ) const; - bool SetItemState( long item, long state, long stateMask); - bool SetItemImage( long item, int image, int selImage); - wxString GetItemText( long item ) const; - void SetItemText( long item, const wxString& str ); - long GetItemData( long item ) const; - bool SetItemData( long item, long data ); - bool GetItemRect( long item, wxRectangle& rect, int code = wxLIST_RECT_BOUNDS ) const; - bool GetItemPosition( long item, wxPoint& pos ) const; - bool SetItemPosition( long item, const wxPoint& pos ); // not supported in wxGLC - int GetItemCount(void) const; - int GetColumnCount(void) const; - void SetItemSpacing( int spacing, bool isSmall = FALSE ); - int GetItemSpacing( bool isSmall ) const; - int GetSelectedItemCount(void) const; -// wxColour GetTextColour(void) const; // wxGLC has colours for every Item (see wxListItem) -// void SetTextColour(const wxColour& col); - long GetTopItem(void) const; - void SetSingleStyle( long style, bool add = TRUE ) ; - void SetWindowStyleFlag(long style); - void RecreateWindow(void) {}; - long GetNextItem(long item, int geometry = wxLIST_NEXT_ALL, int state = wxLIST_STATE_DONTCARE) const; - wxImageList *GetImageList(int which) const; - void SetImageList(wxImageList *imageList, int which) ; - bool Arrange( int flag = wxLIST_ALIGN_DEFAULT ); // always wxLIST_ALIGN_LEFT in wxGLC - void ClearAll(); - bool DeleteItem( long item ); - bool DeleteAllItems(void); - bool DeleteAllColumns(void); - bool DeleteColumn( int col ); -// wxText& Edit(long item) ; // not supported in wxGLC - bool EnsureVisible( long item ); - long FindItem(long start, const wxString& str, bool partial = FALSE ); - long FindItem(long start, long data); - long FindItem(long start, const wxPoint& pt, int direction); // not supported in wxGLC - long HitTest(const wxPoint& point, int& flags); - long InsertItem(wxListItem& info); - long InsertItem(long index, const wxString& label); - long InsertItem(long index, int imageIndex); - long InsertItem(long index, const wxString& label, int imageIndex); - long InsertColumn(long col, wxListItem& info); - long InsertColumn(long col, const wxString& heading, int format = wxLIST_FORMAT_LEFT, - int width = -1); - bool ScrollList(int dx, int dy); - bool SortItems(wxListCtrlCompare fn, long data); - bool Update(long item); - void OnIdle( wxIdleEvent &event ); - - // We have to hand down a few functions - - void SetBackgroundColour( const wxColour &colour ); - void SetForegroundColour( const wxColour &colour ); - void SetFont( const wxFont &font ); - -#if wxUSE_DRAG_AND_DROP - void SetDropTarget( wxDropTarget *dropTarget ) - { m_mainWin->SetDropTarget( dropTarget ); } - wxDropTarget *GetDropTarget() const - { return m_mainWin->GetDropTarget(); } -#endif - - void SetCursor( const wxCursor &cursor ) - { if (m_mainWin) m_mainWin->wxWindow::SetCursor( cursor); } - wxColour GetBackgroundColour() const - { if (m_mainWin) return m_mainWin->GetBackgroundColour(); - else return wxColour(); } - wxColour GetForegroundColour() const - { if (m_mainWin) return m_mainWin->GetForegroundColour(); - else return wxColour(); } - bool PopupMenu( wxMenu *menu, int x, int y ) - { return m_mainWin->PopupMenu( menu, x, y ); } - void SetFocus() - { m_mainWin->SetFocus(); } - - // implementation - -// wxListTextCtrl m_textCtrl; - wxImageList *m_imageListNormal; - wxImageList *m_imageListSmall; - wxImageList *m_imageListState; // what's that ? - wxListHeaderWindow *m_headerWin; - wxListMainWindow *m_mainWin; - - DECLARE_EVENT_TABLE() - -}; - - -#endif // __LISTCTRLH_G__ diff --git a/include/wx/generic/msgdlgg.h b/include/wx/generic/msgdlgg.h deleted file mode 100644 index c9f3778037..0000000000 --- a/include/wx/generic/msgdlgg.h +++ /dev/null @@ -1,52 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: msgdlgg.h -// Purpose: Generic wxMessageDialog -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __MSGDLGH_G__ -#define __MSGDLGH_G__ - -#ifdef __GNUG__ -#pragma interface "msgdlgg.h" -#endif - -#include "wx/setup.h" -#include "wx/dialog.h" - -// type is an 'or' (|) of wxOK, wxCANCEL, wxYES_NO -// Returns wxYES/NO/OK/CANCEL - -WXDLLEXPORT_DATA(extern const char*) wxMessageBoxCaptionStr; - -class WXDLLEXPORT wxGenericMessageDialog: public wxDialog -{ -DECLARE_DYNAMIC_CLASS(wxGenericMessageDialog) -protected: - long m_dialogStyle; -public: - wxGenericMessageDialog(wxWindow *parent, const wxString& message, const wxString& caption = wxMessageBoxCaptionStr, - long style = wxOK|wxCENTRE, const wxPoint& pos = wxDefaultPosition); - - void OnYes(wxCommandEvent& event); - void OnNo(wxCommandEvent& event); - void OnCancel(wxCommandEvent& event); - -DECLARE_EVENT_TABLE() -}; - -#if !defined( __WXMSW__ ) && !defined( __WXMAC__) -#define wxMessageDialog wxGenericMessageDialog - -int wxMessageBox(const wxString& message, const wxString& caption = wxMessageBoxCaptionStr, - long style = wxOK|wxCENTRE, wxWindow *parent = (wxWindow *) NULL, int x = -1, int y = -1); - -#endif - -#endif - // __MSGDLGH_G__ diff --git a/include/wx/generic/notebook.h b/include/wx/generic/notebook.h deleted file mode 100644 index 99fb13d1ad..0000000000 --- a/include/wx/generic/notebook.h +++ /dev/null @@ -1,272 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: notebook.h -// Purpose: wxNotebook class (a.k.a. property sheet, tabbed dialog) -// Author: Julian Smart -// Modified by: -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_NOTEBOOK_H_ -#define _WX_NOTEBOOK_H_ - -#ifdef __GNUG__ -#pragma interface "notebook.h" -#endif - -// ---------------------------------------------------------------------------- -// headers -// ---------------------------------------------------------------------------- -#include "wx/dynarray.h" -#include "wx/event.h" -#include "wx/control.h" -#include "wx/generic/tabg.h" - -// ---------------------------------------------------------------------------- -// types -// ---------------------------------------------------------------------------- - -// fwd declarations -class WXDLLEXPORT wxImageList; -class WXDLLEXPORT wxWindow; - -// array of notebook pages -typedef wxWindow wxNotebookPage; // so far, any window can be a page -WX_DEFINE_ARRAY(wxNotebookPage *, wxArrayPages); - -// ---------------------------------------------------------------------------- -// notebook events -// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxNotebookEvent : public wxCommandEvent -{ -public: - wxNotebookEvent(wxEventType commandType = wxEVT_NULL, int id = 0, - int nSel = -1, int nOldSel = -1) - : wxCommandEvent(commandType, id) { m_nSel = nSel; m_nOldSel = nOldSel; } - - // accessors - int GetSelection() const { return m_nSel; } - int GetOldSelection() const { return m_nOldSel; } - - void SetSelection(int sel) { m_nSel = sel; } - void SetOldSelection(int oldSel) { m_nOldSel = oldSel; } - -private: - int m_nSel, // currently selected page - m_nOldSel; // previously selected page - - DECLARE_DYNAMIC_CLASS(wxNotebookEvent) -}; - -// ---------------------------------------------------------------------------- -// wxNotebook -// ---------------------------------------------------------------------------- - -class WXDLLEXPORT wxNotebook; - -// This reuses wxTabView to draw the tabs. -class WXDLLEXPORT wxNotebookTabView: public wxTabView -{ -DECLARE_DYNAMIC_CLASS(wxNotebookTabView) -public: - wxNotebookTabView(wxNotebook* notebook, long style = wxTAB_STYLE_DRAW_BOX | wxTAB_STYLE_COLOUR_INTERIOR); - ~wxNotebookTabView(void); - - // Called when a tab is activated - virtual void OnTabActivate(int activateId, int deactivateId); - -protected: - wxNotebook* m_notebook; -}; - -class wxNotebook : public wxControl -{ -public: - // ctors - // ----- - // default for dynamic class - wxNotebook(); - // the same arguments as for wxControl (@@@ any special styles?) - wxNotebook(wxWindow *parent, - wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = "notebook"); - // Create() function - bool Create(wxWindow *parent, - wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = "notebook"); - // dtor - ~wxNotebook(); - - // accessors - // --------- - // get number of pages in the dialog - int GetPageCount() const; - - // Find the position of the wxNotebookPage, -1 if not found. - int FindPagePosition(wxNotebookPage* page) const; - - // set the currently selected page, return the index of the previously - // selected one (or -1 on error) - // NB: this function will _not_ generate wxEVT_NOTEBOOK_PAGE_xxx events - int SetSelection(int nPage); - // cycle thru the tabs - void AdvanceSelection(bool bForward = TRUE); - // get the currently selected page - int GetSelection() const { return m_nSelection; } - - // set/get the title of a page - bool SetPageText(int nPage, const wxString& strText); - wxString GetPageText(int nPage) const; - - // image list stuff: each page may have an image associated with it. All - // the images belong to an image list, so you have to - // 1) create an image list - // 2) associate it with the notebook - // 3) set for each page it's image - // associate image list with a control - void SetImageList(wxImageList* imageList); - // get pointer (may be NULL) to the associated image list - wxImageList* GetImageList() const { return m_pImageList; } - - // sets/returns item's image index in the current image list - int GetPageImage(int nPage) const; - bool SetPageImage(int nPage, int nImage); - - // currently it's always 1 because wxGTK doesn't support multi-row - // tab controls - int GetRowCount() const; - - // control the appearance of the notebook pages - // set the size (the same for all pages) - void SetPageSize(const wxSize& size); - // set the padding between tabs (in pixels) - void SetPadding(const wxSize& padding); - - // operations - // ---------- - // remove one page from the notebook, and delete the page. - bool DeletePage(int nPage); - bool DeletePage(wxNotebookPage* page); - // remove one page from the notebook, without deleting the page. - bool RemovePage(int nPage); - bool RemovePage(wxNotebookPage* page); - // remove all pages - bool DeleteAllPages(); - // adds a new page to the notebook (it will be deleted ny the notebook, - // don't delete it yourself). If bSelect, this page becomes active. - bool AddPage(wxNotebookPage *pPage, - const wxString& strText, - bool bSelect = FALSE, - int imageId = -1); - // the same as AddPage(), but adds it at the specified position - bool InsertPage(int nPage, - wxNotebookPage *pPage, - const wxString& strText, - bool bSelect = FALSE, - int imageId = -1); - // get the panel which represents the given page - wxNotebookPage *GetPage(int nPage) { return m_aPages[nPage]; } - - // callbacks - // --------- - void OnSize(wxSizeEvent& event); - void OnIdle(wxIdleEvent& event); - void OnSelChange(wxNotebookEvent& event); - void OnSetFocus(wxFocusEvent& event); - void OnNavigationKey(wxNavigationKeyEvent& event); - - // base class virtuals - // ------------------- - virtual void Command(wxCommandEvent& event); - virtual void SetConstraintSizes(bool recurse = TRUE); - virtual bool DoPhase(int nPhase); - -// Implementation - - // wxNotebook on Motif uses a generic wxTabView to implement itself. - inline wxTabView *GetTabView() const { return m_tabView; } - inline void SetTabView(wxTabView *v) { m_tabView = v; } - - void OnMouseEvent(wxMouseEvent& event); - void OnPaint(wxPaintEvent& event); - - virtual wxRect GetAvailableClientSize(); - - // Implementation: calculate the layout of the view rect - // and resize the children if required - bool RefreshLayout(bool force = TRUE); - -protected: - // common part of all ctors - void Init(); - - // helper functions - void ChangePage(int nOldSel, int nSel); // change pages - - wxImageList *m_pImageList; // we can have an associated image list - wxArrayPages m_aPages; // array of pages - - int m_nSelection; // the current selection (-1 if none) - - wxTabView* m_tabView; - - DECLARE_DYNAMIC_CLASS(wxNotebook) - DECLARE_EVENT_TABLE() -}; - -// ---------------------------------------------------------------------------- -// event macros -// ---------------------------------------------------------------------------- -typedef void (wxEvtHandler::*wxNotebookEventFunction)(wxNotebookEvent&); - -// Because of name truncation! -#if defined(__BORLANDC__) && defined(__WIN16__) - -#define EVT_NOTEBOOK_PAGE_CHANGED(id, fn) \ - { \ - wxEVT_COMMAND_NB_PAGE_CHANGED, \ - id, \ - -1, \ - (wxObjectEventFunction)(wxEventFunction)(wxNotebookEventFunction) &fn, \ - NULL \ - }, - -#define EVT_NOTEBOOK_PAGE_CHANGING(id, fn) \ - { \ - wxEVT_COMMAND_NB_PAGE_CHANGING, \ \ - id, \ - -1, \ - (wxObjectEventFunction)(wxEventFunction)(wxNotebookEventFunction) &fn, \ - NULL \ - }, - -#else - -#define EVT_NOTEBOOK_PAGE_CHANGED(id, fn) \ - { \ - wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED, \ - id, \ - -1, \ - (wxObjectEventFunction)(wxEventFunction)(wxNotebookEventFunction) &fn, \ - NULL \ - }, - -#define EVT_NOTEBOOK_PAGE_CHANGING(id, fn) \ - { \ - wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING, \ \ - id, \ - -1, \ - (wxObjectEventFunction)(wxEventFunction)(wxNotebookEventFunction) &fn, \ - NULL \ - }, - -#endif - -#endif // _WX_NOTEBOOK_H_ diff --git a/include/wx/generic/panelg.h b/include/wx/generic/panelg.h deleted file mode 100644 index cf47375852..0000000000 --- a/include/wx/generic/panelg.h +++ /dev/null @@ -1,71 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: panelg.h -// Purpose: wxPanel: similar to wxWindows but is coloured as for a dialog -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __PANELH_G__ -#define __PANELH_G__ - -#ifdef __GNUG__ -#pragma interface "panelg.h" -#endif - -#include "wx/window.h" - -WXDLLEXPORT_DATA(extern const char*) wxPanelNameStr; - - -class WXDLLEXPORT wxPanel: public wxWindow -{ -public: - wxPanel(); - - // Old-style constructor (no default values for coordinates to avoid ambiguity - // with the new one) - inline wxPanel(wxWindow *parent, - int x, int y, int width, int height, - long style = wxTAB_TRAVERSAL | wxNO_BORDER, - const wxString& name = wxPanelNameStr) - { - Create(parent, -1, wxPoint(x, y), wxSize(width, height), style, name); - } - - // Constructor - inline wxPanel(wxWindow *parent, wxWindowID id = -1, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxTAB_TRAVERSAL | wxNO_BORDER, - const wxString& name = wxPanelNameStr) - { - Create(parent, id, pos, size, style, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxTAB_TRAVERSAL | wxNO_BORDER, - const wxString& name = wxPanelNameStr); - - // Sends an OnInitDialog event, which in turns transfers data to - // to the dialog via validators. - virtual void InitDialog(); - - // Responds to colour changes - void OnSysColourChanged(wxSysColourChangedEvent& event); - - // Process a keyboard navigation message (Tab traversal) - void OnNavigationKey(wxNavigationKeyEvent& event); - - -DECLARE_DYNAMIC_CLASS(wxPanel) -DECLARE_EVENT_TABLE() -}; - -#endif - // __PANELH_G__ diff --git a/include/wx/generic/printps.h b/include/wx/generic/printps.h deleted file mode 100644 index 15213b91a0..0000000000 --- a/include/wx/generic/printps.h +++ /dev/null @@ -1,57 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: printps.h -// Purpose: wxPostScriptPrinter, wxPostScriptPrintPreview -// wxGenericPageSetupDialog -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __PRINTPSH__ -#define __PRINTPSH__ - -#ifdef __GNUG__ -#pragma interface "printps.h" -#endif - -#include "wx/prntbase.h" - -/* - * Represents the printer: manages printing a wxPrintout object - */ - -class WXDLLEXPORT wxPostScriptPrinter: public wxPrinterBase -{ - DECLARE_DYNAMIC_CLASS(wxPostScriptPrinter) - - public: - wxPostScriptPrinter(wxPrintData *data = (wxPrintData *) NULL); - ~wxPostScriptPrinter(void); - - virtual bool Print(wxWindow *parent, wxPrintout *printout, bool prompt = TRUE); - virtual bool PrintDialog(wxWindow *parent); - virtual bool Setup(wxWindow *parent); -}; - -/* - * wxPrintPreview - * Programmer creates an object of this class to preview a wxPrintout. - */ - -class WXDLLEXPORT wxPostScriptPrintPreview: public wxPrintPreviewBase -{ - DECLARE_CLASS(wxPostScriptPrintPreview) - - public: - wxPostScriptPrintPreview(wxPrintout *printout, wxPrintout *printoutForPrinting = (wxPrintout *) NULL, wxPrintData *data = (wxPrintData *) NULL); - ~wxPostScriptPrintPreview(void); - - virtual bool Print(bool interactive); - virtual void DetermineScaling(void); -}; - -#endif - // __PRINTPSH__ diff --git a/include/wx/generic/prntdlgg.h b/include/wx/generic/prntdlgg.h deleted file mode 100644 index be7cf5c5e4..0000000000 --- a/include/wx/generic/prntdlgg.h +++ /dev/null @@ -1,153 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: prntdlgg.h -// Purpose: wxGenericPrintDialog, wxGenericPrintSetupDialog, -// wxGenericPageSetupDialog -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __PRINTDLGH_G_ -#define __PRINTDLGH_G_ - -#ifdef __GNUG__ -#pragma interface "prntdlgg.h" -#endif - -#include "wx/defs.h" -#include "wx/dialog.h" -#include "wx/dc.h" -#include "wx/cmndata.h" -#include "wx/dialog.h" - -#if wxUSE_POSTSCRIPT -#include "wx/dcps.h" -#endif - -class WXDLLEXPORT wxTextCtrl; -class WXDLLEXPORT wxButton; -class WXDLLEXPORT wxCheckBox; -class WXDLLEXPORT wxChoice; -class WXDLLEXPORT wxStaticText; -class WXDLLEXPORT wxRadioBox; -class WXDLLEXPORT wxPrintSetupData; - -/* - * Simulated Print and Print Setup dialogs - * for non-Windows platforms (and Windows using PostScript print/preview) - */ - -#define wxPRINTID_STATIC 10 -#define wxPRINTID_RANGE 11 -#define wxPRINTID_FROM 12 -#define wxPRINTID_TO 13 -#define wxPRINTID_COPIES 14 -#define wxPRINTID_PRINTTOFILE 15 -#define wxPRINTID_SETUP 16 - -class WXDLLEXPORT wxGenericPrintDialog: public wxDialog -{ - DECLARE_DYNAMIC_CLASS(wxGenericPrintDialog) - - public: - wxStaticText *printerMessage; - wxButton *setupButton; - wxButton *helpButton; - wxRadioBox *rangeRadioBox; - wxTextCtrl *fromText; - wxTextCtrl *toText; - wxTextCtrl *noCopiesText; - wxCheckBox *printToFileCheckBox; - wxCheckBox *collateCopiesCheckBox; - - wxPrintData printData; - wxGenericPrintDialog(wxWindow *parent, wxPrintData* data); - ~wxGenericPrintDialog(void); - - void OnSetup(wxCommandEvent& event); - void OnRange(wxCommandEvent& event); - void OnOK(wxCommandEvent& event); - - virtual bool TransferDataFromWindow(void); - virtual bool TransferDataToWindow(void); - - virtual int ShowModal(void); - - inline wxPrintData& GetPrintData(void) { return printData; } - wxDC *GetPrintDC(void); - -DECLARE_EVENT_TABLE() -}; - -#define wxPRINTID_PRINTCOLOUR 10 -#define wxPRINTID_ORIENTATION 11 -#define wxPRINTID_COMMAND 12 -#define wxPRINTID_OPTIONS 13 -#define wxPRINTID_PAPERSIZE 14 - -class WXDLLEXPORT wxGenericPrintSetupDialog: public wxDialog -{ - DECLARE_CLASS(wxGenericPrintSetupDialog) - - public: - wxRadioBox *orientationRadioBox; - wxTextCtrl *printerCommandText; - wxTextCtrl *printerOptionsText; - wxCheckBox *colourCheckBox; - wxChoice *paperTypeChoice; - -#if wxUSE_POSTSCRIPT - wxPrintSetupData printData; - inline wxPrintSetupData& GetPrintData(void) { return printData; } -#endif - - wxGenericPrintSetupDialog(wxWindow *parent, wxPrintSetupData* data); - ~wxGenericPrintSetupDialog(void); - - virtual bool TransferDataFromWindow(void); - virtual bool TransferDataToWindow(void); - - wxChoice *CreatePaperTypeChoice(int* x, int* y); -}; - -#define wxPRINTID_LEFTMARGIN 30 -#define wxPRINTID_RIGHTMARGIN 31 -#define wxPRINTID_TOPMARGIN 32 -#define wxPRINTID_BOTTOMMARGIN 33 - -class WXDLLEXPORT wxGenericPageSetupDialog: public wxDialog -{ - DECLARE_CLASS(wxGenericPageSetupDialog) - - public: - wxButton *printerButton; - wxRadioBox *orientationRadioBox; - wxTextCtrl *marginLeftText; - wxTextCtrl *marginTopText; - wxTextCtrl *marginRightText; - wxTextCtrl *marginBottomText; - wxChoice *paperTypeChoice; - - static bool pageSetupDialogCancelled; - - wxPageSetupData pageData; - - wxGenericPageSetupDialog(wxWindow *parent, wxPageSetupData* data = (wxPageSetupData*) NULL); - ~wxGenericPageSetupDialog(void); - - virtual bool TransferDataFromWindow(void); - virtual bool TransferDataToWindow(void); - - void OnPrinter(wxCommandEvent& event); - - wxChoice *CreatePaperTypeChoice(int* x, int* y); - inline wxPageSetupData& GetPageSetupData(void) { return pageData; } - -DECLARE_EVENT_TABLE() -}; - -#endif - // __PRINTDLGH_G__ diff --git a/include/wx/generic/sashwin.h b/include/wx/generic/sashwin.h deleted file mode 100644 index 1b1d8e0e7e..0000000000 --- a/include/wx/generic/sashwin.h +++ /dev/null @@ -1,214 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: sashwin.h -// Purpose: wxSashWindow implementation. A sash window has an optional -// sash on each edge, allowing it to be dragged. An event -// is generated when the sash is released. -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_SASHWIN_H_G_ -#define _WX_SASHWIN_H_G_ - -#ifdef __GNUG__ -#pragma interface "sashwin.h" -#endif - -#include "wx/defs.h" -#include "wx/window.h" -#include "wx/string.h" - -#define wxSASH_DRAG_NONE 0 -#define wxSASH_DRAG_DRAGGING 1 -#define wxSASH_DRAG_LEFT_DOWN 2 - -enum wxSashEdgePosition { - wxSASH_TOP = 0, - wxSASH_RIGHT, - wxSASH_BOTTOM, - wxSASH_LEFT, - wxSASH_NONE = 100 -}; - -/* - * wxSashEdge represents one of the four edges of a window. - */ - -class WXDLLEXPORT wxSashEdge -{ -public: - wxSashEdge() { m_show = FALSE; m_border = FALSE; m_margin = 0; } - - bool m_show; // Is the sash showing? - bool m_border; // Do we draw a border? - int m_margin; // The margin size -}; - -/* - * wxSashWindow flags - */ - -#define wxSW_3D 0x0004 - -/* - * wxSashWindow allows any of its edges to have a sash which can be dragged - * to resize the window. The actual content window will be created as a child - * of wxSashWindow. - */ - -class WXDLLEXPORT wxSashWindow: public wxWindow -{ - DECLARE_DYNAMIC_CLASS(wxSashWindow) - -public: - -//////////////////////////////////////////////////////////////////////////// -// Public API - - // Default constructor - wxSashWindow(); - - // Normal constructor - wxSashWindow(wxWindow *parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = wxSW_3D|wxCLIP_CHILDREN, const wxString& name = "sashWindow"); - ~wxSashWindow(); - - // Set whether there's a sash in this position - void SetSashVisible(wxSashEdgePosition edge, bool sash); - - // Get whether there's a sash in this position - inline bool GetSashVisible(wxSashEdgePosition edge) const { return m_sashes[edge].m_show; } - - // Set whether there's a border in this position - inline void SetSashBorder(wxSashEdgePosition edge, bool border) { m_sashes[edge].m_border = border; } - - // Get whether there's a border in this position - inline bool HasBorder(wxSashEdgePosition edge) const { return m_sashes[edge].m_border; } - - // Get border size - inline int GetEdgeMargin(wxSashEdgePosition edge) const { return m_sashes[edge].m_margin; } - - // Sets the default sash border size - inline void SetDefaultBorderSize(int width) { m_borderSize = width; } - - // Gets the default sash border size - inline int GetDefaultBorderSize() const { return m_borderSize; } - - // Sets the addition border size between child and sash window - inline void SetExtraBorderSize(int width) { m_extraBorderSize = width; } - - // Gets the addition border size between child and sash window - inline int GetExtraBorderSize() const { return m_extraBorderSize; } - - virtual void SetMinimumSizeX(int min) { m_minimumPaneSizeX = min; } - virtual void SetMinimumSizeY(int min) { m_minimumPaneSizeY = min; } - virtual int GetMinimumSizeX() const { return m_minimumPaneSizeX; } - virtual int GetMinimumSizeY() const { return m_minimumPaneSizeY; } - - virtual void SetMaximumSizeX(int max) { m_maximumPaneSizeX = max; } - virtual void SetMaximumSizeY(int max) { m_maximumPaneSizeY = max; } - virtual int GetMaximumSizeX() const { return m_maximumPaneSizeX; } - virtual int GetMaximumSizeY() const { return m_maximumPaneSizeY; } - -//////////////////////////////////////////////////////////////////////////// -// Implementation - - // Paints the border and sash - void OnPaint(wxPaintEvent& event); - - // Handles mouse events - void OnMouseEvent(wxMouseEvent& ev); - - // Adjusts the panes - void OnSize(wxSizeEvent& event); - - // Draws borders - void DrawBorders(wxDC& dc); - - // Draws the sashes - void DrawSash(wxSashEdgePosition edge, wxDC& dc); - - // Draws the sashes - void DrawSashes(wxDC& dc); - - // Draws the sash tracker (for whilst moving the sash) - void DrawSashTracker(wxSashEdgePosition edge, int x, int y); - - // Tests for x, y over sash - wxSashEdgePosition SashHitTest(int x, int y, int tolerance = 2); - - // Resizes subwindows - void SizeWindows(); - - // Initialize colours - void InitColours(); - -protected: - wxSashEdge m_sashes[4]; - int m_dragMode; - wxSashEdgePosition m_draggingEdge; - int m_oldX; - int m_oldY; - int m_borderSize; - int m_extraBorderSize; - int m_firstX; - int m_firstY; - int m_minimumPaneSizeX; - int m_minimumPaneSizeY; - int m_maximumPaneSizeX; - int m_maximumPaneSizeY; - wxCursor* m_sashCursorWE; - wxCursor* m_sashCursorNS; - wxColour m_lightShadowColour; - wxColour m_mediumShadowColour; - wxColour m_darkShadowColour; - wxColour m_hilightColour; - wxColour m_faceColour; - -DECLARE_EVENT_TABLE() -}; - -#define wxEVT_SASH_DRAGGED (wxEVT_FIRST + 1200) - -enum wxSashDragStatus -{ - wxSASH_STATUS_OK, - wxSASH_STATUS_OUT_OF_RANGE -}; - -class WXDLLEXPORT wxSashEvent: public wxCommandEvent -{ - DECLARE_DYNAMIC_CLASS(wxSashEvent) - - public: - inline wxSashEvent(int id = 0, wxSashEdgePosition edge = wxSASH_NONE) { - m_eventType = (wxEventType) wxEVT_SASH_DRAGGED; m_id = id; m_edge = edge; } - - inline void SetEdge(wxSashEdgePosition edge) { m_edge = edge; } - inline wxSashEdgePosition GetEdge() const { return m_edge; } - - //// The rectangle formed by the drag operation - inline void SetDragRect(const wxRect& rect) { m_dragRect = rect; } - inline wxRect GetDragRect() const { return m_dragRect; } - - //// Whether the drag caused the rectangle to be reversed (e.g. - //// dragging the top below the bottom) - inline void SetDragStatus(wxSashDragStatus status) { m_dragStatus = status; } - inline wxSashDragStatus GetDragStatus() const { return m_dragStatus; } - private: - wxSashEdgePosition m_edge; - wxRect m_dragRect; - wxSashDragStatus m_dragStatus; -}; - -typedef void (wxEvtHandler::*wxSashEventFunction)(wxSashEvent&); - -#define EVT_SASH_DRAGGED(id, fn) { wxEVT_SASH_DRAGGED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSashEventFunction) & fn, NULL }, -#define EVT_SASH_DRAGGED_RANGE(id1, id2, fn) { wxEVT_SASH_DRAGGED, id1, id2, (wxObjectEventFunction) (wxEventFunction) (wxSashEventFunction) & fn, NULL }, - -#endif - // _WX_SASHWIN_H_G_ diff --git a/include/wx/generic/scrolwin.h b/include/wx/generic/scrolwin.h deleted file mode 100644 index 8a337fa77d..0000000000 --- a/include/wx/generic/scrolwin.h +++ /dev/null @@ -1,138 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: scrolwin.h -// Purpose: wxScrolledWindow class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifndef __SCROLWINH_G__ -#define __SCROLWINH_G__ - -#ifdef __GNUG__ -#pragma interface "scrolwin.h" -#endif - -#include "wx/window.h" - -WXDLLEXPORT_DATA(extern const char*) wxPanelNameStr; - -class WXDLLEXPORT wxScrolledWindow: public wxWindow -{ - DECLARE_ABSTRACT_CLASS(wxScrolledWindow) - -public: - wxScrolledWindow(void); - inline wxScrolledWindow(wxWindow *parent, wxWindowID id = -1, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxHSCROLL|wxVSCROLL, - const wxString& name = wxPanelNameStr) - { - Create(parent, id, pos, size, style, name); - } - - inline ~wxScrolledWindow(void) {} - - bool Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxHSCROLL|wxVSCROLL, - const wxString& name = wxPanelNameStr); - - // Set client size - // Should take account of scrollbars -// virtual void SetClientSize(int width, int size); - - // Is the window retained? -// inline bool IsRetained(void) const; - - // Number of pixels per user unit (0 or -1 for no scrollbar) - // Length of virtual canvas in user units - // Length of page in user units - virtual void SetScrollbars(int pixelsPerUnitX, int pixelsPerUnitY, - int noUnitsX, int noUnitsY, - int xPos = 0, int yPos = 0, - bool noRefresh = FALSE ); - - // Physically scroll the window - virtual void Scroll(int x_pos, int y_pos); - -#if WXWIN_COMPATIBILITY - virtual void GetScrollUnitsPerPage(int *x_page, int *y_page) const; -#endif - - int GetScrollPageSize(int orient) const ; - void SetScrollPageSize(int orient, int pageSize); - - virtual void GetScrollPixelsPerUnit(int *x_unit, int *y_unit) const; - // Enable/disable Windows scrolling in either direction. - // If TRUE, wxWindows scrolls the canvas and only a bit of - // the canvas is invalidated; no Clear() is necessary. - // If FALSE, the whole canvas is invalidated and a Clear() is - // necessary. Disable for when the scroll increment is used - // to actually scroll a non-constant distance - virtual void EnableScrolling(bool x_scrolling, bool y_scrolling); - - // Get the view start - virtual void ViewStart(int *x, int *y) const; - - // Actual size in pixels when scrolling is taken into account - virtual void GetVirtualSize(int *x, int *y) const; - - // Set the scale factor, used in PrepareDC - inline void SetScale(double xs, double ys) { m_scaleX = xs; m_scaleY = ys; } - inline double GetScaleX() const { return m_scaleX; } - inline double GetScaleY() const { return m_scaleY; } - - virtual void CalcScrolledPosition(int x, int y, int *xx, int *yy) const ; - virtual void CalcUnscrolledPosition(int x, int y, float *xx, float *yy) const ; - - // Adjust the scrollbars - virtual void AdjustScrollbars(void); - - void OnScroll(wxScrollEvent& event); - void OnSize(wxSizeEvent& event); - void OnPaint(wxPaintEvent& event); - - // Override this function to draw the graphic. - virtual void OnDraw(wxDC& WXUNUSED(dc)) {}; - - // Override this function if you don't want to have wxScrolledWindow - // automatically change the origin according to the scroll position. - virtual void PrepareDC(wxDC& dc); - -public: - //////////////////////////////////////////////////////////////////////// - //// IMPLEMENTATION - - // Calculate scroll increment - virtual int CalcScrollInc(wxScrollEvent& event); - - //////////////////////////////////////////////////////////////////////// - //// PROTECTED DATA -protected: - int m_xScrollPixelsPerLine; - int m_yScrollPixelsPerLine; - bool m_xScrollingEnabled; - bool m_yScrollingEnabled; - int m_xScrollPosition; - int m_yScrollPosition; - int m_xScrollLines; - int m_yScrollLines; - int m_xScrollLinesPerPage; - int m_yScrollLinesPerPage; - double m_scaleX; - double m_scaleY; - -DECLARE_EVENT_TABLE() -}; - -//////////////////////////////////////////////////////////////////////// -//// INLINES - -#endif - // __SCROLWINH_G__ diff --git a/include/wx/generic/splitter.h b/include/wx/generic/splitter.h deleted file mode 100644 index d8ffcc0f37..0000000000 --- a/include/wx/generic/splitter.h +++ /dev/null @@ -1,195 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: splitter.h -// Purpose: wxSplitterWindow class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifndef __SPLITTERH_G__ -#define __SPLITTERH_G__ - -#ifdef __GNUG__ -#pragma interface "splitter.h" -#endif - -#include "wx/defs.h" -#include "wx/window.h" -#include "wx/string.h" - -#define WXSPLITTER_VERSION 1.0 - -#define wxSPLIT_HORIZONTAL 1 -#define wxSPLIT_VERTICAL 2 - -#define wxSPLIT_DRAG_NONE 0 -#define wxSPLIT_DRAG_DRAGGING 1 -#define wxSPLIT_DRAG_LEFT_DOWN 2 - -/* - * wxSplitterWindow maintains one or two panes, with - * an optional vertical or horizontal split which - * can be used with the mouse or programmatically. - */ - -// TODO: -// 1) Perhaps make the borders sensitive to dragging in order to create a split. -// The MFC splitter window manages scrollbars as well so is able to -// put sash buttons on the scrollbars, but we probably don't want to go down -// this path. -// 2) for wxWindows 2.0, we must find a way to set the WS_CLIPCHILDREN style -// to prevent flickering. (WS_CLIPCHILDREN doesn't work in all cases so can't be -// standard). - -class WXDLLEXPORT wxSplitterWindow: public wxWindow -{ -public: - -//////////////////////////////////////////////////////////////////////////// -// Public API - - // Default constructor - wxSplitterWindow(); - - // Normal constructor - wxSplitterWindow(wxWindow *parent, wxWindowID id = -1, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxSP_3D|wxCLIP_CHILDREN, - const wxString& name = "splitter"); - ~wxSplitterWindow(); - - // Gets the only or left/top pane - wxWindow *GetWindow1() const { return m_windowOne; } - - // Gets the right/bottom pane - wxWindow *GetWindow2() const { return m_windowTwo; } - - // Sets the split mode - void SetSplitMode(int mode) { m_splitMode = mode; } - - // Gets the split mode - int GetSplitMode() const { return m_splitMode; }; - - // Initialize with one window - void Initialize(wxWindow *window); - - // Associates the given window with window 2, drawing the appropriate sash - // and changing the split mode. - // Does nothing and returns FALSE if the window is already split. - // A sashPosition of 0 means choose a default sash position, - // negative sashPosition specifies the size of right/lower pane as it's - // absolute value rather than the size of left/upper pane. - virtual bool SplitVertically(wxWindow *window1, - wxWindow *window2, - int sashPosition = 0); - virtual bool SplitHorizontally(wxWindow *window1, - wxWindow *window2, - int sashPosition = 0); - - // Removes the specified (or second) window from the view - // Doesn't actually delete the window. - bool Unsplit(wxWindow *toRemove = (wxWindow *) NULL); - - // Is the window split? - bool IsSplit() const { return (m_windowTwo != NULL); } - - // Sets the sash size - void SetSashSize(int width) { m_sashSize = width; } - - // Sets the border size - void SetBorderSize(int width) { m_borderSize = width; } - - // Gets the sash size - int GetSashSize() const { return m_sashSize; } - - // Gets the border size - int GetBorderSize() const { return m_borderSize; } - - // Set the sash position - void SetSashPosition(int position, bool redaw = TRUE); - - // Gets the sash position - int GetSashPosition() const { return m_sashPosition; } - - // If this is zero, we can remove panes by dragging the sash. - void SetMinimumPaneSize(int min) { m_minimumPaneSize = min; } - int GetMinimumPaneSize() const { return m_minimumPaneSize; } - - // Called when the sash position is about to be changed, return - // FALSE from here to prevent the change from taking place. - // newSashPosition here is always positive or zero. - virtual bool OnSashPositionChange(int newSashPosition); - - // If the sash is moved to an extreme position, a subwindow - // is removed from the splitter window, and the app is - // notified. The app should delete or hide the window. - virtual void OnUnsplit(wxWindow *removed) { removed->Show(FALSE); } - - // Called when the sash is double-clicked. - // The default behaviour is to remove the sash if the - // minimum pane size is zero. - virtual void OnDoubleClickSash(int x, int y); - -//////////////////////////////////////////////////////////////////////////// -// Implementation - - // Paints the border and sash - void OnPaint(wxPaintEvent& event); - - // Handles mouse events - void OnMouseEvent(wxMouseEvent& ev); - - // Adjusts the panes - void OnSize(wxSizeEvent& event); - - // Draws borders - void DrawBorders(wxDC& dc); - - // Draws the sash - void DrawSash(wxDC& dc); - - // Draws the sash tracker (for whilst moving the sash) - void DrawSashTracker(int x, int y); - - // Tests for x, y over sash - bool SashHitTest(int x, int y, int tolerance = 2); - - // Resizes subwindows - void SizeWindows(); - - // Initialize colours - void InitColours(); - -protected: - int m_splitMode; - wxWindow* m_windowOne; - wxWindow* m_windowTwo; - int m_dragMode; - int m_oldX; - int m_oldY; - int m_borderSize; - int m_sashSize; // Sash width or height - int m_sashPosition; // Number of pixels from left or top - int m_firstX; - int m_firstY; - int m_minimumPaneSize; - wxCursor* m_sashCursorWE; - wxCursor* m_sashCursorNS; - wxPen* m_sashTrackerPen; - wxPen* m_lightShadowPen; - wxPen* m_mediumShadowPen; - wxPen* m_darkShadowPen; - wxPen* m_hilightPen; - wxBrush* m_faceBrush; - wxPen* m_facePen; - -private: - DECLARE_DYNAMIC_CLASS(wxSplitterWindow) - DECLARE_EVENT_TABLE() -}; - -#endif // __SPLITTERH_G__ diff --git a/include/wx/generic/statusbr.h b/include/wx/generic/statusbr.h deleted file mode 100644 index 68a4e96f42..0000000000 --- a/include/wx/generic/statusbr.h +++ /dev/null @@ -1,94 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: statusbr.h -// Purpose: wxStatusBar class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifndef __STATUSBRH_G__ -#define __STATUSBRH_G__ - -#ifdef __GNUG__ -#pragma interface "statusbr.h" -#endif - -#include "wx/window.h" -#include "wx/pen.h" -#include "wx/font.h" - -WXDLLEXPORT_DATA(extern const char*) wxPanelNameStr; - -class WXDLLEXPORT wxStatusBar: public wxWindow -{ - DECLARE_DYNAMIC_CLASS(wxStatusBar) - -public: - wxStatusBar(void); - inline wxStatusBar(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = wxPanelNameStr) - { - Create(parent, id, pos, size, style, name); - } - - ~wxStatusBar(); - - bool Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = wxPanelNameStr); - - // Create status line - virtual void SetFieldsCount(int number=1, const int widths[] = (const int *) NULL); - inline int GetFieldsCount() const { return m_nFields; } - - // Set status line text - virtual void SetStatusText(const wxString& text, int number = 0); - virtual wxString GetStatusText(int number = 0) const; - - // Set status line widths - virtual void SetStatusWidths(int n, const int widths_field[]); - - virtual void DrawFieldText(wxDC& dc, int i); - virtual void DrawField(wxDC& dc, int i); - - // Get the position and size of the field's internal bounding rectangle - virtual bool GetFieldRect(int i, wxRect& rect) const; - - inline int GetBorderX() const { return m_borderX; } - inline int GetBorderY() const { return m_borderY; } - inline void SetBorderX(int x); - inline void SetBorderY(int y); - - //////////////////////////////////////////////////////////////////////// - // Implementation - - void OnPaint(wxPaintEvent& event); - - virtual void InitColours(); - - // Responds to colour changes - void OnSysColourChanged(wxSysColourChangedEvent& event); - -protected: - int * m_statusWidths; - int m_nFields; - wxString * m_statusStrings; - int m_borderX; - int m_borderY; - wxFont m_defaultStatusBarFont; - wxPen m_mediumShadowPen; - wxPen m_hilightPen; - - DECLARE_EVENT_TABLE() -}; - -#endif - // __STATUSBRH_G__ diff --git a/include/wx/generic/tabg.h b/include/wx/generic/tabg.h deleted file mode 100644 index b3a02100ee..0000000000 --- a/include/wx/generic/tabg.h +++ /dev/null @@ -1,351 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: tabg.h -// Purpose: Generic tabbed dialogs -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __TABGH_G__ -#define __TABGH_G__ - -#ifdef __GNUG__ -#pragma interface "tabg.h" -#endif - -#define WXTAB_VERSION 1.1 - -#include "wx/hash.h" -#include "wx/string.h" -#include "wx/dialog.h" - -class WXDLLEXPORT wxTabView; - -/* - * A wxTabControl is the internal and visual representation - * of the tab. - */ - -class WXDLLEXPORT wxTabControl: public wxObject -{ -DECLARE_DYNAMIC_CLASS(wxTabControl) -public: - wxTabControl(wxTabView *v = (wxTabView *) NULL); - ~wxTabControl(void); - - virtual void OnDraw(wxDC& dc, bool lastInRow); - inline void SetLabel(const wxString& str) { m_controlLabel = str; } - inline wxString GetLabel(void) const { return m_controlLabel; } - - inline void SetFont(const wxFont& f) { m_labelFont = f; } - inline wxFont *GetFont(void) const { return (wxFont*) & m_labelFont; } - - inline void SetSelected(bool sel) { m_isSelected = sel; } - inline bool IsSelected(void) const { return m_isSelected; } - - inline void SetPosition(int x, int y) { m_offsetX = x; m_offsetY = y; } - inline void SetSize(int x, int y) { m_width = x; m_height = y; } - - inline void SetRowPosition(int r) { m_rowPosition = r; } - inline int GetRowPosition() const { return m_rowPosition; } - inline void SetColPosition(int c) { m_colPosition = c; } - inline int GetColPosition() const { return m_colPosition; } - - inline int GetX(void) const { return m_offsetX; } - inline int GetY(void) const { return m_offsetY; } - inline int GetWidth(void) const { return m_width; } - inline int GetHeight(void) const { return m_height; } - - inline int GetId(void) const { return m_id; } - inline void SetId(int i) { m_id = i; } - - virtual bool HitTest(int x, int y) const ; - -protected: - wxTabView* m_view; - wxString m_controlLabel; - bool m_isSelected; - wxFont m_labelFont; - int m_offsetX; // Offsets from top-left of tab view area (the area below the tabs) - int m_offsetY; - int m_width; - int m_height; - int m_id; - int m_rowPosition; // Position in row from 0 - int m_colPosition; // Position in col from 0 -}; - -/* - * Each wxTabLayer is a list of tabs. E.g. there - * are 3 layers in the MS Word Options dialog. - */ - -class WXDLLEXPORT wxTabLayer: public wxList -{ - DECLARE_DYNAMIC_CLASS(wxTabLayer) -}; - -/* - * The wxTabView controls and draws the tabbed object - */ - -#define wxTAB_STYLE_DRAW_BOX 1 // Draws 3D boxes round tab layers -#define wxTAB_STYLE_COLOUR_INTERIOR 2 // Colours interior of tabs, otherwise draws outline - -class WXDLLEXPORT wxTabView: public wxObject -{ -DECLARE_DYNAMIC_CLASS(wxTabView) -public: - wxTabView(long style = wxTAB_STYLE_DRAW_BOX | wxTAB_STYLE_COLOUR_INTERIOR); - ~wxTabView(); - - inline int GetNumberOfLayers() const { return m_layers.Number(); } - inline wxList& GetLayers() { return m_layers; } - - inline void SetWindow(wxWindow* wnd) { m_window = wnd; } - inline wxWindow* GetWindow(void) const { return m_window; } - - // Automatically positions tabs - wxTabControl *AddTab(int id, const wxString& label, wxTabControl *existingTab = (wxTabControl *) NULL); - - // Remove the tab without deleting the window - bool RemoveTab(int id); - - void ClearTabs(bool deleteTabs = TRUE); - - bool SetTabText(int id, const wxString& label); - wxString GetTabText(int id) const; - - // Layout tabs (optional, e.g. if resizing window) - void Layout(void); - - // Draw all tabs - virtual void Draw(wxDC& dc); - - // Process mouse event, return FALSE if we didn't process it - virtual bool OnEvent(wxMouseEvent& event); - - // Called when a tab is activated - virtual void OnTabActivate(int activateId, int deactivateId); - // Allows vetoing - virtual bool OnTabPreActivate(int WXUNUSED(activateId), int WXUNUSED(deactivateId) ) { return TRUE; }; - - // Allows use of application-supplied wxTabControl classes. - virtual wxTabControl *OnCreateTabControl(void) { return new wxTabControl(this); } - - void SetHighlightColour(const wxColour& col); - void SetShadowColour(const wxColour& col); - void SetBackgroundColour(const wxColour& col); - inline void SetTextColour(const wxColour& col) { m_textColour = col; } - - inline wxColour GetHighlightColour(void) const { return m_highlightColour; } - inline wxColour GetShadowColour(void) const { return m_shadowColour; } - inline wxColour GetBackgroundColour(void) const { return m_backgroundColour; } - inline wxColour GetTextColour(void) const { return m_textColour; } - inline wxPen *GetHighlightPen(void) const { return m_highlightPen; } - inline wxPen *GetShadowPen(void) const { return m_shadowPen; } - inline wxPen *GetBackgroundPen(void) const { return m_backgroundPen; } - inline wxBrush *GetBackgroundBrush(void) const { return m_backgroundBrush; } - - inline void SetViewRect(const wxRect& rect) { m_tabViewRect = rect; } - inline wxRect GetViewRect(void) const { return m_tabViewRect; } - - // Calculate tab width to fit to view, and optionally adjust the view - // to fit the tabs exactly. - int CalculateTabWidth(int noTabs, bool adjustView = FALSE); - - inline void SetTabStyle(long style) { m_tabStyle = style; } - inline long GetTabStyle(void) const { return m_tabStyle; } - - inline void SetTabSize(int w, int h) { m_tabWidth = w; m_tabHeight = h; } - inline int GetTabWidth(void) const { return m_tabWidth; } - inline int GetTabHeight(void) const { return m_tabHeight; } - inline void SetTabSelectionHeight(int h) { m_tabSelectionHeight = h; } - inline int GetTabSelectionHeight(void) const { return m_tabSelectionHeight; } - - // Returns the total height of the tabs component -- this may be several - // times the height of a tab, if there are several tab layers (rows). - int GetTotalTabHeight(); - - inline int GetTopMargin(void) const { return m_topMargin; } - inline void SetTopMargin(int margin) { m_topMargin = margin; } - - void SetTabSelection(int sel, bool activateTool = TRUE); - inline int GetTabSelection() const { return m_tabSelection; } - - // Find tab control for id - wxTabControl *FindTabControlForId(int id) const ; - - // Find tab control for layer, position (starting from zero) - wxTabControl *FindTabControlForPosition(int layer, int position) const ; - - inline int GetHorizontalTabOffset() const { return m_tabHorizontalOffset; } - inline int GetHorizontalTabSpacing() const { return m_tabHorizontalSpacing; } - inline void SetHorizontalTabOffset(int sp) { m_tabHorizontalOffset = sp; } - inline void SetHorizontalTabSpacing(int sp) { m_tabHorizontalSpacing = sp; } - - inline void SetVerticalTabTextSpacing(int s) { m_tabVerticalTextSpacing = s; } - inline int GetVerticalTabTextSpacing() const { return m_tabVerticalTextSpacing; } - - inline wxFont *GetTabFont() const { return (wxFont*) & m_tabFont; } - inline void SetTabFont(const wxFont& f) { m_tabFont = f; } - - inline wxFont *GetSelectedTabFont() const { return (wxFont*) & m_tabSelectedFont; } - inline void SetSelectedTabFont(const wxFont& f) { m_tabSelectedFont = f; } - // Find the node and the column at which this control is positioned. - wxNode *FindTabNodeAndColumn(wxTabControl *control, int *col) const ; - - // Do the necessary to change to this tab - virtual bool ChangeTab(wxTabControl *control); - - // Move the selected tab to the bottom layer, if necessary, - // without calling app activation code - bool MoveSelectionTab(wxTabControl *control); - - inline int GetNumberOfTabs() const { return m_noTabs; } - -protected: - // List of layers, from front to back. - wxList m_layers; - - // Selected tab - int m_tabSelection; - - // Usual tab height - int m_tabHeight; - - // The height of the selected tab - int m_tabSelectionHeight; - - // Usual tab width - int m_tabWidth; - - // Space between tabs - int m_tabHorizontalSpacing; - - // Space between top of normal tab and text - int m_tabVerticalTextSpacing; - - // Horizontal offset of each tab row above the first - int m_tabHorizontalOffset; - - // The distance between the bottom of the first tab row - // and the top of the client area (i.e. the margin) - int m_topMargin; - - // The position and size of the view above which the tabs are placed. - // I.e., the internal client area of the sheet. - wxRect m_tabViewRect; - - // Bitlist of styles - long m_tabStyle; - - // Colours - wxColour m_highlightColour; - wxColour m_shadowColour; - wxColour m_backgroundColour; - wxColour m_textColour; - - // Pen and brush cache - wxPen* m_highlightPen; - wxPen* m_shadowPen; - wxPen* m_backgroundPen; - wxBrush* m_backgroundBrush; - - wxFont m_tabFont; - wxFont m_tabSelectedFont; - - int m_noTabs; - - wxWindow* m_window; -}; - -/* - * A dialog box class that is tab-friendly - */ - -class WXDLLEXPORT wxTabbedDialog: public wxDialog -{ -DECLARE_DYNAMIC_CLASS(wxTabbedDialog) - -public: - - wxTabbedDialog(wxWindow *parent, wxWindowID id, const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long windowStyle = wxDEFAULT_DIALOG_STYLE, const wxString& name = wxDialogNameStr); - ~wxTabbedDialog(void); - - inline wxTabView *GetTabView() const { return m_tabView; } - inline void SetTabView(wxTabView *v) { m_tabView = v; } - - void OnCloseWindow(wxCloseEvent& event); - void OnMouseEvent(wxMouseEvent& event); - void OnPaint(wxPaintEvent& event); - -protected: - wxTabView* m_tabView; - -DECLARE_EVENT_TABLE() -}; - -/* - * A panel class that is tab-friendly - */ - -class WXDLLEXPORT wxTabbedPanel: public wxPanel -{ -DECLARE_DYNAMIC_CLASS(wxTabbedPanel) - -public: - - wxTabbedPanel(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long windowStyle = 0, const wxString& name = wxPanelNameStr); - ~wxTabbedPanel(void); - - inline wxTabView *GetTabView() const { return m_tabView; } - inline void SetTabView(wxTabView *v) { m_tabView = v; } - - void OnMouseEvent(wxMouseEvent& event); - void OnPaint(wxPaintEvent& event); - -protected: - wxTabView* m_tabView; - -DECLARE_EVENT_TABLE() -}; - -class WXDLLEXPORT wxPanelTabView: public wxTabView -{ -DECLARE_DYNAMIC_CLASS(wxPanelTabView) -public: - wxPanelTabView(wxPanel *pan, long style = wxTAB_STYLE_DRAW_BOX | wxTAB_STYLE_COLOUR_INTERIOR); - ~wxPanelTabView(void); - - // Called when a tab is activated - virtual void OnTabActivate(int activateId, int deactivateId); - - // Specific to this class - void AddTabWindow(int id, wxWindow *window); - wxWindow *GetTabWindow(int id) const ; - void ClearWindows(bool deleteWindows = TRUE); - inline wxWindow *GetCurrentWindow() const { return m_currentWindow; } - - void ShowWindowForTab(int id); - inline wxList& GetWindows() const { return (wxList&) m_tabWindows; } - -protected: - // List of panels, one for each tab. Indexed - // by tab ID. - wxList m_tabWindows; - wxWindow* m_currentWindow; - wxPanel* m_panel; -}; - -#endif - diff --git a/include/wx/generic/textdlgg.h b/include/wx/generic/textdlgg.h deleted file mode 100644 index 5b5eccb267..0000000000 --- a/include/wx/generic/textdlgg.h +++ /dev/null @@ -1,51 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: textdlgg.h -// Purpose: wxStatusBar class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifndef __TEXTDLGH_G__ -#define __TEXTDLGH_G__ - -#ifdef __GNUG__ -#pragma interface "textdlgg.h" -#endif - -#include "wx/setup.h" -#include "wx/dialog.h" - -// Handy dialog functions (will be converted into classes at some point) -WXDLLEXPORT_DATA(extern const char*) wxGetTextFromUserPromptStr; -WXDLLEXPORT_DATA(extern const char*) wxEmptyString; - -#define wxID_TEXT 3000 - -class WXDLLEXPORT wxTextEntryDialog: public wxDialog -{ -DECLARE_DYNAMIC_CLASS(wxTextEntryDialog) -protected: - long m_dialogStyle; - wxString m_value; -public: - wxTextEntryDialog(wxWindow *parent, const wxString& message, const wxString& caption = wxGetTextFromUserPromptStr, - const wxString& value = wxEmptyString, long style = wxOK|wxCANCEL|wxCENTRE, const wxPoint& pos = wxDefaultPosition); - - inline void SetValue(const wxString& val) { m_value = val; } - inline wxString GetValue(void) const { return m_value; } - - void OnOK(wxCommandEvent& event); - -DECLARE_EVENT_TABLE() -}; - -wxString WXDLLEXPORT wxGetTextFromUser(const wxString& message, const wxString& caption = wxGetTextFromUserPromptStr, - const wxString& default_value = wxEmptyString, wxWindow *parent = (wxWindow *) NULL, - int x = -1, int y = -1, bool centre = TRUE); - -#endif - // __TEXTDLGH_G__ diff --git a/include/wx/generic/treectrl.h b/include/wx/generic/treectrl.h deleted file mode 100644 index 014a048ce5..0000000000 --- a/include/wx/generic/treectrl.h +++ /dev/null @@ -1,489 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: treectrl.h -// Purpose: wxTreeCtrl class -// Author: Robert Roebling -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) 1997,1998 Robert Roebling -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifndef _GENERIC_TREECTRL_H_ -#define _GENERIC_TREECTRL_H_ - -#ifdef __GNUG__ - #pragma interface "treectrl.h" -#endif - -#ifdef __WXMSW__ -WXDLLEXPORT_DATA(extern const char*) wxTreeCtrlNameStr; -#else -#define wxTreeCtrlNameStr "wxTreeCtrl" -#endif - -#include "wx/defs.h" -#include "wx/string.h" -#include "wx/object.h" -#include "wx/event.h" -#include "wx/scrolwin.h" -#include "wx/textctrl.h" -#include "wx/pen.h" - -// ----------------------------------------------------------------------------- -// constants -// ----------------------------------------------------------------------------- - -// values for the `flags' parameter of wxTreeCtrl::HitTest() which determine -// where exactly the specified point is situated: -static const int wxTREE_HITTEST_NOWHERE = 0x0004; - // on the bitmap associated with an item. -static const int wxTREE_HITTEST_ONITEMICON = 0x0020; - // on the label (string) associated with an item. -static const int wxTREE_HITTEST_ONITEMLABEL = 0x0080; - // anywhere on the item -static const int wxTREE_HITTEST_ONITEM = wxTREE_HITTEST_ONITEMICON | - wxTREE_HITTEST_ONITEMLABEL; - -// ----------------------------------------------------------------------------- -// forward declaration -// ----------------------------------------------------------------------------- - -class wxImageList; -class wxGenericTreeItem; - -class wxTreeItemData; - -// ----------------------------------------------------------------------------- -// wxTreeItemId - unique identifier of a tree element -// ----------------------------------------------------------------------------- - -class WXDLLEXPORT wxTreeItemId -{ -friend class wxTreeCtrl; -friend class wxTreeEvent; -public: - // ctors - // 0 is invalid value for HTREEITEM - wxTreeItemId() { m_pItem = 0; } - - // default copy ctor/assignment operator are ok for us - - // accessors - // is this a valid tree item? - bool IsOk() const { return m_pItem != 0; } - - // deprecated: only for compatibility - wxTreeItemId(long itemId) { m_pItem = (wxGenericTreeItem *)itemId; } - operator long() const { return (long)m_pItem; } - -//protected: // not for gcc - // for wxTreeCtrl usage only - wxTreeItemId(wxGenericTreeItem *pItem) { m_pItem = pItem; } - - wxGenericTreeItem *m_pItem; -}; - -// ---------------------------------------------------------------------------- -// wxTreeItemData is some (arbitrary) user class associated with some item. -// -// Because the objects of this class are deleted by the tree, they should -// always be allocated on the heap! -// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxTreeItemData: public wxClientData -{ -friend class wxTreeCtrl; -public: - // creation/destruction - // -------------------- - // default ctor - wxTreeItemData() { } - - // default copy ctor/assignment operator are ok - - // accessor: get the item associated with us - const wxTreeItemId& GetId() const { return m_pItem; } - void SetId(const wxTreeItemId& id) { m_pItem = id; } - -protected: - wxTreeItemId m_pItem; -}; - -// ----------------------------------------------------------------------------- -// wxTreeEvent - the event generated by the tree control -// ----------------------------------------------------------------------------- -class WXDLLEXPORT wxTreeEvent : public wxNotifyEvent -{ -friend class wxTreeCtrl; -public: - wxTreeEvent(wxEventType commandType = wxEVT_NULL, int id = 0); - - // accessors - // get the item on which the operation was performed or the newly - // selected item for wxEVT_COMMAND_TREE_SEL_CHANGED/ING events - wxTreeItemId GetItem() const { return m_item; } - - // for wxEVT_COMMAND_TREE_SEL_CHANGED/ING events, get the previously - // selected item - wxTreeItemId GetOldItem() const { return m_itemOld; } - - // the point where the mouse was when the drag operation started (for - // wxEVT_COMMAND_TREE_BEGIN_(R)DRAG events only) - wxPoint GetPoint() const { return m_pointDrag; } - - // keyboard code (for wxEVT_COMMAND_TREE_KEY_DOWN only) - int GetCode() const { return m_code; } - - // set return code for wxEVT_COMMAND_TREE_ITEM_{EXPAND|COLLAPS}ING events - // call this to forbid the change in item status - void Veto() { m_code = TRUE; } - - // for implementation usage only - bool WasVetoed() const { return m_code; } - -private: - // @@ we could save some space by using union here - int m_code; - wxTreeItemId m_item, - m_itemOld; - wxPoint m_pointDrag; - - DECLARE_DYNAMIC_CLASS(wxTreeEvent) -}; - -typedef void (wxEvtHandler::*wxTreeEventFunction)(wxTreeEvent&); - -// ---------------------------------------------------------------------------- -// macros for handling tree control events -// ---------------------------------------------------------------------------- - -// GetItem() returns the item being dragged, GetPoint() the mouse coords -#define EVT_TREE_BEGIN_DRAG(id, fn) { wxEVT_COMMAND_TREE_BEGIN_DRAG, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TREE_BEGIN_RDRAG(id, fn) { wxEVT_COMMAND_TREE_BEGIN_RDRAG, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, - -// GetItem() returns the itme whose label is being edited -#define EVT_TREE_BEGIN_LABEL_EDIT(id, fn) { wxEVT_COMMAND_TREE_BEGIN_LABEL_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TREE_END_LABEL_EDIT(id, fn) { wxEVT_COMMAND_TREE_END_LABEL_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, - -// provide/update information about GetItem() item -#define EVT_TREE_GET_INFO(id, fn) { wxEVT_COMMAND_TREE_GET_INFO, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TREE_SET_INFO(id, fn) { wxEVT_COMMAND_TREE_SET_INFO, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, - -// GetItem() is the item being expanded/collapsed, the "ING" versions can use -#define EVT_TREE_ITEM_EXPANDED(id, fn) { wxEVT_COMMAND_TREE_ITEM_EXPANDED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TREE_ITEM_EXPANDING(id, fn) { wxEVT_COMMAND_TREE_ITEM_EXPANDING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TREE_ITEM_COLLAPSED(id, fn) { wxEVT_COMMAND_TREE_ITEM_COLLAPSED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TREE_ITEM_COLLAPSING(id, fn) { wxEVT_COMMAND_TREE_ITEM_COLLAPSING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, NULL }, - -// GetOldItem() is the item which had the selection previously, GetItem() is -// the item which acquires selection -#define EVT_TREE_SEL_CHANGED(id, fn) { wxEVT_COMMAND_TREE_SEL_CHANGED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, NULL }, -#define EVT_TREE_SEL_CHANGING(id, fn) { wxEVT_COMMAND_TREE_SEL_CHANGING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, NULL }, - -// GetCode() returns the key code -// NB: this is the only message for which GetItem() is invalid (you may get the -// item from GetSelection()) -#define EVT_TREE_KEY_DOWN(id, fn) { wxEVT_COMMAND_TREE_KEY_DOWN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, NULL }, - -// GetItem() returns the item being deleted, the associated data (if any) will -// be deleted just after the return of this event handler (if any) -#define EVT_TREE_DELETE_ITEM(id, fn) { wxEVT_COMMAND_TREE_DELETE_ITEM, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, - -// GetItem() returns the item that was activated (double click, enter, space) -#define EVT_TREE_ITEM_ACTIVATED(id, fn) { wxEVT_COMMAND_TREE_ITEM_ACTIVATED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, NULL }, - -// ----------------------------------------------------------------------------- -// wxTreeCtrl - the tree control -// ----------------------------------------------------------------------------- - -class WXDLLEXPORT wxTreeCtrl : public wxScrolledWindow -{ -public: - // creation - // -------- - wxTreeCtrl() { Init(); } - - wxTreeCtrl(wxWindow *parent, wxWindowID id = -1, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxTR_HAS_BUTTONS | wxTR_LINES_AT_ROOT, - const wxValidator &validator = wxDefaultValidator, - const wxString& name = wxTreeCtrlNameStr) - { - Create(parent, id, pos, size, style, validator, name); - } - - virtual ~wxTreeCtrl(); - - bool Create(wxWindow *parent, wxWindowID id = -1, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxTR_HAS_BUTTONS | wxTR_LINES_AT_ROOT, - const wxValidator &validator = wxDefaultValidator, - const wxString& name = wxTreeCtrlNameStr); - - // accessors - // --------- - - // get the total number of items in the control - size_t GetCount() const; - - // indent is the number of pixels the children are indented relative to - // the parents position. SetIndent() also redraws the control - // immediately. - unsigned int GetIndent() const { return m_indent; } - void SetIndent(unsigned int indent); - - // image list: these functions allow to associate an image list with - // the control and retrieve it. Note that the control does _not_ delete - // the associated image list when it's deleted in order to allow image - // lists to be shared between different controls. - // - // The normal image list is for the icons which correspond to the - // normal tree item state (whether it is selected or not). - // Additionally, the application might choose to show a state icon - // which corresponds to an app-defined item state (for example, - // checked/unchecked) which are taken from the state image list. - wxImageList *GetImageList() const; - wxImageList *GetStateImageList() const; - - void SetImageList(wxImageList *imageList); - void SetStateImageList(wxImageList *imageList); - - // Functions to work with tree ctrl items. - - // accessors - // --------- - - // retrieve items label - wxString GetItemText(const wxTreeItemId& item) const; - // get the normal item image - int GetItemImage(const wxTreeItemId& item) const; - // get the selected item image - int GetItemSelectedImage(const wxTreeItemId& item) const; - // get the data associated with the item - wxTreeItemData *GetItemData(const wxTreeItemId& item) const; - - // modifiers - // --------- - - // set items label - void SetItemText(const wxTreeItemId& item, const wxString& text); - // set the normal item image - void SetItemImage(const wxTreeItemId& item, int image); - // set the selected item image - void SetItemSelectedImage(const wxTreeItemId& item, int image); - // associate some data with the item - void SetItemData(const wxTreeItemId& item, wxTreeItemData *data); - - // force appearance of [+] button near the item. This is useful to - // allow the user to expand the items which don't have any children now - // - but instead add them only when needed, thus minimizing memory - // usage and loading time. - void SetItemHasChildren(const wxTreeItemId& item, bool has = TRUE); - - // the item will be shown in bold - void SetItemBold(const wxTreeItemId& item, bool bold = TRUE); - - // item status inquiries - // --------------------- - - // is the item visible (it might be outside the view or not expanded)? - bool IsVisible(const wxTreeItemId& item) const; - // does the item has any children? - bool HasChildren(const wxTreeItemId& item) const - { return ItemHasChildren(item); } - bool ItemHasChildren(const wxTreeItemId& item) const; - // is the item expanded (only makes sense if HasChildren())? - bool IsExpanded(const wxTreeItemId& item) const; - // is this item currently selected (the same as has focus)? - bool IsSelected(const wxTreeItemId& item) const; - // is item text in bold font? - bool IsBold(const wxTreeItemId& item) const; - - // number of children - // ------------------ - - // if 'recursively' is FALSE, only immediate children count, otherwise - // the returned number is the number of all items in this branch - size_t GetChildrenCount(const wxTreeItemId& item, bool recursively = TRUE); - - // navigation - // ---------- - - // wxTreeItemId.IsOk() will return FALSE if there is no such item - - // get the root tree item - wxTreeItemId GetRootItem() const { return m_anchor; } - - // get the item currently selected (may return NULL if no selection) - wxTreeItemId GetSelection() const { return m_current; } - - // get the parent of this item (may return NULL if root) - wxTreeItemId GetParent(const wxTreeItemId& item) const; - - // for this enumeration function you must pass in a "cookie" parameter - // which is opaque for the application but is necessary for the library - // to make these functions reentrant (i.e. allow more than one - // enumeration on one and the same object simultaneously). Of course, - // the "cookie" passed to GetFirstChild() and GetNextChild() should be - // the same! - - // get the first child of this item - wxTreeItemId GetFirstChild(const wxTreeItemId& item, long& cookie) const; - // get the next child - wxTreeItemId GetNextChild(const wxTreeItemId& item, long& cookie) const; - // get the last child of this item - this method doesn't use cookies - wxTreeItemId GetLastChild(const wxTreeItemId& item) const; - - // get the next sibling of this item - wxTreeItemId GetNextSibling(const wxTreeItemId& item) const; - // get the previous sibling - wxTreeItemId GetPrevSibling(const wxTreeItemId& item) const; - - // get first visible item - wxTreeItemId GetFirstVisibleItem() const; - // get the next visible item: item must be visible itself! - // see IsVisible() and wxTreeCtrl::GetFirstVisibleItem() - wxTreeItemId GetNextVisible(const wxTreeItemId& item) const; - // get the previous visible item: item must be visible itself! - wxTreeItemId GetPrevVisible(const wxTreeItemId& item) const; - - // operations - // ---------- - - // add the root node to the tree - wxTreeItemId AddRoot(const wxString& text, - int image = -1, int selectedImage = -1, - wxTreeItemData *data = NULL); - - // insert a new item in as the first child of the parent - wxTreeItemId PrependItem(const wxTreeItemId& parent, - const wxString& text, - int image = -1, int selectedImage = -1, - wxTreeItemData *data = NULL); - - // insert a new item after a given one - wxTreeItemId InsertItem(const wxTreeItemId& parent, - const wxTreeItemId& idPrevious, - const wxString& text, - int image = -1, int selectedImage = -1, - wxTreeItemData *data = NULL); - - // insert a new item in as the last child of the parent - wxTreeItemId AppendItem(const wxTreeItemId& parent, - const wxString& text, - int image = -1, int selectedImage = -1, - wxTreeItemData *data = NULL); - - // delete this item and associated data if any - void Delete(const wxTreeItemId& item); - // delete all children (but don't delete the item itself) - // NB: this won't send wxEVT_COMMAND_TREE_ITEM_DELETED events - void DeleteChildren(const wxTreeItemId& item); - // delete all items from the tree - // NB: this won't send wxEVT_COMMAND_TREE_ITEM_DELETED events - void DeleteAllItems(); - - // expand this item - void Expand(const wxTreeItemId& item); - // collapse the item without removing its children - void Collapse(const wxTreeItemId& item); - // collapse the item and remove all children - void CollapseAndReset(const wxTreeItemId& item); - // toggles the current state - void Toggle(const wxTreeItemId& item); - - // remove the selection from currently selected item (if any) - void Unselect(); - // select this item - void SelectItem(const wxTreeItemId& item); - // make sure this item is visible (expanding the parent item and/or - // scrolling to this item if necessary) - void EnsureVisible(const wxTreeItemId& item); - // scroll to this item (but don't expand its parent) - void ScrollTo(const wxTreeItemId& item); - - // The first function is more portable (because easier to implement - // on other platforms), but the second one returns some extra info. - wxTreeItemId HitTest(const wxPoint& point) - { int dummy; return HitTest(point, dummy); } - wxTreeItemId HitTest(const wxPoint& point, int& flags); - - // start editing the item label: this (temporarily) replaces the item - // with a one line edit control. The item will be selected if it hadn't - // been before. textCtrlClass parameter allows you to create an edit - // control of arbitrary user-defined class deriving from wxTextCtrl. - wxTextCtrl* EditLabel(const wxTreeItemId& item, - wxClassInfo* textCtrlClass = CLASSINFO(wxTextCtrl)); - // returns the same pointer as StartEdit() if the item is being edited, - // NULL otherwise (it's assumed that no more than one item may be - // edited simultaneously) - wxTextCtrl* GetEditControl() const; - // end editing and accept or discard the changes to item label - void EndEditLabel(const wxTreeItemId& item, bool discardChanges = FALSE); - - // sorting - // this function is called to compare 2 items and should return -1, 0 - // or +1 if the first item is less than, equal to or greater than the - // second one. The base class version performs alphabetic comparaison - // of item labels (GetText) - virtual int OnCompareItems(const wxTreeItemId& item1, - const wxTreeItemId& item2); - // sort the children of this item using OnCompareItems - // - // NB: this function is not reentrant and not MT-safe (FIXME)! - void SortChildren(const wxTreeItemId& item); - - // callbacks - void OnPaint( wxPaintEvent &event ); - void OnSetFocus( wxFocusEvent &event ); - void OnKillFocus( wxFocusEvent &event ); - void OnChar( wxKeyEvent &event ); - void OnMouse( wxMouseEvent &event ); - void OnIdle( wxIdleEvent &event ); - - // implementation - void SendDeleteEvent(wxGenericTreeItem *itemBeingDeleted); - -protected: - wxGenericTreeItem *m_anchor; - wxGenericTreeItem *m_current; - bool m_hasFocus; - bool m_dirty; - int m_xScroll,m_yScroll; - unsigned int m_indent; - int m_lineHeight; - wxPen m_dottedPen; - wxBrush *m_hilightBrush; - wxImageList *m_imageListNormal, - *m_imageListState; - int m_dragCount; - - // the common part of all ctors - void Init(); - - // misc helpers - wxTreeItemId DoInsertItem(const wxTreeItemId& parent, - size_t previous, - const wxString& text, - int image, int selectedImage, - wxTreeItemData *data); - - void AdjustMyScrollbars(); - void PaintLevel( wxGenericTreeItem *item, wxDC& dc, int level, int &y ); - void PaintItem( wxGenericTreeItem *item, wxDC& dc); - - void CalculateLevel( wxGenericTreeItem *item, wxDC &dc, int level, int &y ); - void CalculatePositions(); - - void RefreshSubtree( wxGenericTreeItem *item ); - void RefreshLine( wxGenericTreeItem *item ); - -private: - DECLARE_EVENT_TABLE() - DECLARE_DYNAMIC_CLASS(wxTreeCtrl) -}; - -#endif // _GENERIC_TREECTRL_H_ - diff --git a/include/wx/grid.h b/include/wx/grid.h deleted file mode 100644 index 668f69a3e3..0000000000 --- a/include/wx/grid.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef _WX_GRID_H_BASE_ -#define _WX_GRID_H_BASE_ - -#include "wx/generic/gridg.h" - -#ifndef wxGrid -#define wxGrid wxGenericGrid -#endif - -#endif - // _WX_GRID_H_BASE_ diff --git a/include/wx/gtk/.cvsignore b/include/wx/gtk/.cvsignore deleted file mode 100644 index 3f915354e8..0000000000 --- a/include/wx/gtk/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -setup.h diff --git a/include/wx/gtk/accel.h b/include/wx/gtk/accel.h deleted file mode 100644 index 4765e6fe3d..0000000000 --- a/include/wx/gtk/accel.h +++ /dev/null @@ -1,105 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: accel.h -// Purpose: wxAcceleratorTable class -// Author: Robert Roebling -// RCS-ID: $Id$ -// Copyright: (c) Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __GTKACCELH__ -#define __GTKACCELH__ - -#ifdef __GNUG__ -#pragma interface "accel.h" -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/event.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxAcceleratorEntry; -class wxAcceleratorTable; - -//----------------------------------------------------------------------------- -// constants -//----------------------------------------------------------------------------- - -extern wxAcceleratorTable wxNullAcceleratorTable; - -//----------------------------------------------------------------------------- -// constants -//----------------------------------------------------------------------------- - -// Hold Ctrl key down -#define wxACCEL_ALT 0x01 - -// Hold Ctrl key down -#define wxACCEL_CTRL 0x02 - - // Hold Shift key down -#define wxACCEL_SHIFT 0x04 - - // Hold no other key -#define wxACCEL_NORMAL 0x00 - -//----------------------------------------------------------------------------- -// wxAcceleratorEntry -//----------------------------------------------------------------------------- - -class wxAcceleratorEntry: public wxObject -{ - public: - - wxAcceleratorEntry(int flags = 0, int keyCode = 0, int cmd = 0) - { m_flags = flags; m_keyCode = keyCode; m_command = cmd; } - - inline void Set(int flags, int keyCode, int cmd) - { m_flags = flags; m_keyCode = keyCode; m_command = cmd; } - - inline int GetFlags() const { return m_flags; } - inline int GetKeyCode() const { return m_keyCode; } - inline int GetCommand() const { return m_command; } - - int m_flags; - int m_keyCode; // ASCII or virtual keycode - int m_command; // Command id to generate -}; - -//----------------------------------------------------------------------------- -// wxAcceleratorTable -//----------------------------------------------------------------------------- - -class wxAcceleratorTable: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxAcceleratorTable) - - public: - wxAcceleratorTable(); - wxAcceleratorTable(int n, wxAcceleratorEntry entries[] ); - ~wxAcceleratorTable(); - - inline wxAcceleratorTable(const wxAcceleratorTable& accel) : wxObject() - { Ref(accel); } - inline wxAcceleratorTable(const wxAcceleratorTable* accel) - { if (accel) Ref(*accel); } - inline bool operator == (const wxAcceleratorTable& accel) - { return m_refData == accel.m_refData; } - inline bool operator != (const wxAcceleratorTable& accel) - { return m_refData != accel.m_refData; } - inline wxAcceleratorTable& operator = (const wxAcceleratorTable& accel) - { if (*this == accel) return (*this); Ref(accel); return *this; } - - bool Ok() const; - -// private: - - int GetCommand( wxKeyEvent &event ); - -}; - -#endif diff --git a/include/wx/gtk/app.h b/include/wx/gtk/app.h deleted file mode 100644 index 365c08f90a..0000000000 --- a/include/wx/gtk/app.h +++ /dev/null @@ -1,140 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: app.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling, Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __GTKAPPH__ -#define __GTKAPPH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/window.h" -#include "wx/frame.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxApp; -class wxLog; - -//----------------------------------------------------------------------------- -// global data -//----------------------------------------------------------------------------- - -extern wxApp *wxTheApp; - -//----------------------------------------------------------------------------- -// global functions -//----------------------------------------------------------------------------- - -void wxExit(void); -bool wxYield(void); - -//----------------------------------------------------------------------------- -// constants -//----------------------------------------------------------------------------- - -#define wxPRINT_WINDOWS 1 -#define wxPRINT_POSTSCRIPT 2 - -//----------------------------------------------------------------------------- -// wxApp -//----------------------------------------------------------------------------- - -class wxApp: public wxEvtHandler -{ - DECLARE_DYNAMIC_CLASS(wxApp) - - public: - - wxApp(); - ~wxApp(); - - static void SetInitializerFunction(wxAppInitializerFunction fn) { m_appInitFn = fn; } - static wxAppInitializerFunction GetInitializerFunction() { return m_appInitFn; } - - /* override for altering the way wxGTK intializes the GUI (palette/visual/colorcube). - * under wxMSW, OnInitGui() does nothing by default. when overriding this method, - * the code in it is likely to be platform dependent, otherwise use OnInit(). */ - virtual bool OnInitGui(); - - /* override to create top level frame, display splash screen etc. */ - virtual bool OnInit() { return FALSE; } - - virtual int OnRun() { return MainLoop(); } - virtual int OnExit() { return 0; } - - wxWindow *GetTopWindow(); - void SetTopWindow( wxWindow *win ); - - virtual int MainLoop(); - void ExitMainLoop(); - bool Initialized(); - virtual bool Pending(); - virtual void Dispatch(); - - inline void SetWantDebugOutput( bool flag ) { m_wantDebugOutput = flag; } - inline bool GetWantDebugOutput() { return m_wantDebugOutput; } - - void OnIdle( wxIdleEvent &event ); - bool SendIdleEvents(); - bool SendIdleEvents( wxWindow* win ); - - inline wxString GetAppName() const - { if (m_appName != "") return m_appName; else return m_className; } - inline void SetAppName( const wxString& name ) { m_appName = name; } - - inline wxString GetClassName() const { return m_className; } - inline void SetClassName( const wxString& name ) { m_className = name; } - - const wxString& GetVendorName() const { return m_vendorName; } - void SetVendorName( const wxString& name ) { m_vendorName = name; } - - inline void SetExitOnFrameDelete( bool flag ) { m_exitOnFrameDelete = flag; } - inline bool GetExitOnFrameDelete() const { return m_exitOnFrameDelete; } - - void SetPrintMode( int WXUNUSED(mode) ) {} - int GetPrintMode() const { return wxPRINT_POSTSCRIPT; } - - /* override this function to create default log target of arbitrary - * user-defined classv (default implementation creates a wxLogGui object) */ - virtual wxLog *CreateLogTarget(); - - // implementation - - static bool Initialize(); - static bool InitialzeVisual(); - static void CleanUp(); - - bool ProcessIdle(); - void DeletePendingObjects(); - - bool m_initialized; - bool m_exitOnFrameDelete; - bool m_wantDebugOutput; - wxWindow *m_topWindow; - - gint m_idleTag; - unsigned char *m_colorCube; - - int argc; - char **argv; - - wxString m_vendorName; - wxString m_appName; - wxString m_className; - - static wxAppInitializerFunction m_appInitFn; - - DECLARE_EVENT_TABLE() -}; - -#endif // __GTKAPPH__ diff --git a/include/wx/gtk/bitmap.h b/include/wx/gtk/bitmap.h deleted file mode 100644 index 61245d92c1..0000000000 --- a/include/wx/gtk/bitmap.h +++ /dev/null @@ -1,100 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: bitmap.h -// Purpose: -// Author: Robert Roebling -// RCS-ID: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKBITMAPH__ -#define __GTKBITMAPH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/string.h" -#include "wx/palette.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxMask; -class wxBitmap; - -//----------------------------------------------------------------------------- -// wxMask -//----------------------------------------------------------------------------- - -class wxMask: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxMask) - -public: - wxMask(); - wxMask( const wxBitmap& bitmap, const wxColour& colour ); - wxMask( const wxBitmap& bitmap, int paletteIndex ); - wxMask( const wxBitmap& bitmap ); - ~wxMask(); - - // implementation - - GdkBitmap *m_bitmap; - GdkBitmap *GetBitmap() const; -}; - -//----------------------------------------------------------------------------- -// wxBitmap -//----------------------------------------------------------------------------- - -class wxBitmap: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxBitmap) - -public: - wxBitmap(); - wxBitmap( int width, int height, int depth = -1 ); - wxBitmap( const char bits[], int width, int height, int depth = 1 ); - wxBitmap( const char **bits ); - wxBitmap( char **bits ); - wxBitmap( const wxBitmap& bmp ); - wxBitmap( const wxString &filename, int type = wxBITMAP_TYPE_XPM ); - ~wxBitmap(); - wxBitmap& operator = ( const wxBitmap& bmp ); - bool operator == ( const wxBitmap& bmp ); - bool operator != ( const wxBitmap& bmp ); - bool Ok() const; - - int GetHeight() const; - int GetWidth() const; - int GetDepth() const; - - wxMask *GetMask() const; - void SetMask( wxMask *mask ); - - bool SaveFile( const wxString &name, int type, wxPalette *palette = (wxPalette *) NULL ); - bool LoadFile( const wxString &name, int type = wxBITMAP_TYPE_XPM ); - - wxPalette *GetPalette() const; - wxPalette *GetColourMap() const - { return GetPalette(); }; - -// implementation - - void SetHeight( int height ); - void SetWidth( int width ); - void SetDepth( int depth ); - void SetPixmap( GdkPixmap *pixmap ); - - GdkPixmap *GetPixmap() const; - GdkBitmap *GetBitmap() const; - - // no data :-) -}; - -#endif // __GTKBITMAPH__ diff --git a/include/wx/gtk/bmpbuttn.h b/include/wx/gtk/bmpbuttn.h deleted file mode 100644 index fd1df719c8..0000000000 --- a/include/wx/gtk/bmpbuttn.h +++ /dev/null @@ -1,94 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: bmpbutton.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __BMPBUTTONH__ -#define __BMPBUTTONH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/list.h" -#include "wx/control.h" -#include "wx/bitmap.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxBitmapButton; - -//----------------------------------------------------------------------------- -// global data -//----------------------------------------------------------------------------- - -extern const char *wxButtonNameStr; - -//----------------------------------------------------------------------------- -// wxBitmapButton -//----------------------------------------------------------------------------- - -class wxBitmapButton: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxBitmapButton) - -public: - wxBitmapButton(); - inline wxBitmapButton( wxWindow *parent, wxWindowID id, const wxBitmap& bitmap, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = wxBU_AUTODRAW, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxButtonNameStr ) - { - Create(parent, id, bitmap, pos, size, style, validator, name); - } - bool Create( wxWindow *parent, wxWindowID id, const wxBitmap& bitmap, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = wxBU_AUTODRAW, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxButtonNameStr); - void SetDefault(); - - void SetLabel( const wxString &label ); - wxString GetLabel() const; - virtual void SetLabel( const wxBitmap& bitmap ) { SetBitmapLabel(bitmap); } - - wxBitmap& GetBitmapDisabled() const { return (wxBitmap&) m_disabled; } - wxBitmap& GetBitmapFocus() const { return (wxBitmap&) m_focus; } - wxBitmap& GetBitmapLabel() const { return (wxBitmap&) m_bitmap; } - wxBitmap& GetBitmapSelected() const { return (wxBitmap&) m_selected; } - - void SetBitmapDisabled( const wxBitmap& bitmap ); - void SetBitmapFocus( const wxBitmap& bitmap ); - void SetBitmapLabel( const wxBitmap& bitmap ); - void SetBitmapSelected( const wxBitmap& bitmap ); - - virtual void Enable(const bool); - -// implementation - - void HasFocus(); - void NotFocus(); - void StartSelect(); - void EndSelect(); - void SetBitmap(); - void ApplyWidgetStyle(); - - bool m_hasFocus; - bool m_isSelected; - wxBitmap m_bitmap; - wxBitmap m_disabled; - wxBitmap m_focus; - wxBitmap m_selected; -}; - -#endif // __BMPBUTTONH__ diff --git a/include/wx/gtk/brush.h b/include/wx/gtk/brush.h deleted file mode 100644 index c52eb45011..0000000000 --- a/include/wx/gtk/brush.h +++ /dev/null @@ -1,64 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: brush.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKBRUSHH__ -#define __GTKBRUSHH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/string.h" -#include "wx/gdiobj.h" -#include "wx/bitmap.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxBrush; - -//----------------------------------------------------------------------------- -// wxBrush -//----------------------------------------------------------------------------- - -class wxBrush: public wxGDIObject -{ - DECLARE_DYNAMIC_CLASS(wxBrush) - - public: - - wxBrush(); - wxBrush( const wxColour &colour, int style ); - wxBrush( const wxBitmap &stippleBitmap ); - wxBrush( const wxBrush &brush ); - ~wxBrush(); - wxBrush& operator = ( const wxBrush& brush ); - bool operator == ( const wxBrush& brush ); - bool operator != ( const wxBrush& brush ); - bool Ok() const; - - int GetStyle() const; - wxColour &GetColour() const; - wxBitmap *GetStipple() const; - - void SetColour( const wxColour& col ); - void SetColour( unsigned char r, unsigned char g, unsigned char b ); - void SetStyle( int style ); - void SetStipple( const wxBitmap& stipple ); - - void Unshare(); - - // no data :-) -}; - -#endif // __GTKBRUSHH__ diff --git a/include/wx/gtk/button.h b/include/wx/gtk/button.h deleted file mode 100644 index 2b8b262c96..0000000000 --- a/include/wx/gtk/button.h +++ /dev/null @@ -1,69 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: button.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKBUTTONH__ -#define __GTKBUTTONH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/list.h" -#include "wx/control.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxButton; - -//----------------------------------------------------------------------------- -// global data -//----------------------------------------------------------------------------- - -extern const char *wxButtonNameStr; - -//----------------------------------------------------------------------------- -// wxButton -//----------------------------------------------------------------------------- - -class wxButton: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxButton) - - public: - - wxButton(); - inline wxButton(wxWindow *parent, wxWindowID id, const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxButtonNameStr) - { - Create(parent, id, label, pos, size, style, validator, name); - } - ~wxButton(); - bool Create(wxWindow *parent, wxWindowID id, const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxButtonNameStr); - void SetDefault(); - void SetLabel( const wxString &label ); - void Enable( bool enable ); - - // implementation - - void ApplyWidgetStyle(); -}; - -#endif // __GTKBUTTONH__ diff --git a/include/wx/gtk/checkbox.h b/include/wx/gtk/checkbox.h deleted file mode 100644 index f883cf78c9..0000000000 --- a/include/wx/gtk/checkbox.h +++ /dev/null @@ -1,72 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: checkbox.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKCHECKBOXH__ -#define __GTKCHECKBOXH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/list.h" -#include "wx/control.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxCheckBox; - -//----------------------------------------------------------------------------- -// global data -//----------------------------------------------------------------------------- - -extern const char *wxCheckBoxNameStr; - -//----------------------------------------------------------------------------- -// wxCheckBox -//----------------------------------------------------------------------------- - -class wxCheckBox: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxCheckBox) - - public: - - wxCheckBox(void); - inline wxCheckBox( wxWindow *parent, wxWindowID id, const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxCheckBoxNameStr) - { - Create(parent, id, label, pos, size, style, validator, name); - } - bool Create( wxWindow *parent, wxWindowID id, const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxCheckBoxNameStr ); - void SetValue( bool state ); - bool GetValue() const; - - void SetLabel( const wxString& label ); - void Enable( bool enable ); - - // implementation - - void ApplyWidgetStyle(); - - bool m_blockFirstEvent; -}; - -#endif // __GTKCHECKBOXH__ diff --git a/include/wx/gtk/checklst.h b/include/wx/gtk/checklst.h deleted file mode 100644 index 4331972d9f..0000000000 --- a/include/wx/gtk/checklst.h +++ /dev/null @@ -1,57 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: checklst.h -// Purpose: wxCheckListBox class -// Author: Robert Roebling -// Modified by: -// RCS-ID: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -#ifndef __GTKCHECKLISTH__ -#define __GTKCHECKLISTH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/list.h" -#include "wx/control.h" -#include "wx/listbox.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxCheckListBox; - -//----------------------------------------------------------------------------- -// wxCheckListBox -//----------------------------------------------------------------------------- - -class wxCheckListBox : public wxListBox -{ - DECLARE_DYNAMIC_CLASS(wxCheckListBox) -public: - - wxCheckListBox(); - wxCheckListBox(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - int nStrings = 0, - const wxString choices[] = (wxString[]) NULL, - long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxListBoxNameStr); - - bool IsChecked( int index ) const; - void Check( int index, bool check = TRUE ); - - int GetItemHeight(); - -}; - -#endif - //__GTKCHECKLISTH__ diff --git a/include/wx/gtk/choice.h b/include/wx/gtk/choice.h deleted file mode 100644 index 393c9e8861..0000000000 --- a/include/wx/gtk/choice.h +++ /dev/null @@ -1,95 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: choice.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __GTKCHOICEH__ -#define __GTKCHOICEH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/list.h" -#include "wx/control.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxChoice; - -//----------------------------------------------------------------------------- -// global data -//----------------------------------------------------------------------------- - -extern const char *wxChoiceNameStr; - -//----------------------------------------------------------------------------- -// wxChoice -//----------------------------------------------------------------------------- - -class wxChoice: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxChoice) - -public: - - wxChoice(); - inline wxChoice( wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = (const wxString *) NULL, - long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxChoiceNameStr ) - { - Create(parent, id, pos, size, n, choices, style, validator, name); - } - ~wxChoice(); - bool Create( wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = (wxString *) NULL, - long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxChoiceNameStr ); - - void Append( const wxString &item ); - void Append( const wxString &item, void* clientData ); - void Append( const wxString &item, wxClientData* clientData ); - - void SetClientData( int n, void* clientData ); - void* GetClientData( int n ); - void SetClientObject( int n, wxClientData* clientData ); - wxClientData* GetClientObject( int n ); - - void Clear(); - void Delete(int n); - - int FindString( const wxString &string ) const; - int GetColumns() const; - int GetSelection(); - wxString GetString( int n ) const; - wxString GetStringSelection() const; - int Number() const; - void SetColumns( int n = 1 ); - void SetSelection( int n ); - void SetStringSelection( const wxString &string ); - -// implementation - - wxList m_clientDataList; - wxList m_clientObjectList; - - void AppendCommon( const wxString &item ); - void ApplyWidgetStyle(); -}; - -#endif // __GTKCHOICEH__ diff --git a/include/wx/gtk/clipbrd.h b/include/wx/gtk/clipbrd.h deleted file mode 100644 index e880b5ffaa..0000000000 --- a/include/wx/gtk/clipbrd.h +++ /dev/null @@ -1,110 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: clipboard.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKCLIPBOARDH__ -#define __GTKCLIPBOARDH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" - -#if wxUSE_CLIPBOARD - -#include "wx/object.h" -#include "wx/list.h" -#include "wx/dataobj.h" -#include "wx/control.h" -#include "wx/module.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxClipboard; -class wxClipboardModule; - -//----------------------------------------------------------------------------- -// global data -//----------------------------------------------------------------------------- - -extern wxClipboard* wxTheClipboard; - -//----------------------------------------------------------------------------- -// wxClipboard -//----------------------------------------------------------------------------- - -class wxClipboard: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxClipboard) - -public: - - wxClipboard(); - ~wxClipboard(); - - /* open the clipboard before SetData() and GetData() */ - virtual bool Open(); - - /* close the clipboard after SetData() and GetData() */ - virtual void Close(); - - /* set the clipboard data. all other formats will be deleted. */ - virtual bool SetData( wxDataObject *data ); - - /* add to the clipboard data. */ - virtual bool AddData( wxDataObject *data ); - - /* ask if data in correct format is available */ - virtual bool IsSupported( wxDataObject &data ); - - /* fill data with data on the clipboard (if available) */ - virtual bool GetData( wxDataObject &data ); - - /* clears wxTheClipboard and the system's clipboard if possible */ - virtual void Clear(); - - /* implementation */ - - bool m_open; - - bool m_ownsClipboard; - bool m_ownsPrimarySelection; - - wxDataBroker *m_dataBroker; - GtkWidget *m_clipboardWidget; - - bool m_formatSupported; - GdkAtom m_targetRequested; - - wxDataObject *m_receivedData; -}; - -//----------------------------------------------------------------------------- -// wxClipboardModule -//----------------------------------------------------------------------------- - -class wxClipboardModule: public wxModule -{ - DECLARE_DYNAMIC_CLASS(wxClipboardModule) - -public: - wxClipboardModule() {} - bool OnInit(); - void OnExit(); -}; - -#endif - - // wxUSE_CLIPBOARD - -#endif - // __GTKCLIPBOARDH__ diff --git a/include/wx/gtk/colour.h b/include/wx/gtk/colour.h deleted file mode 100644 index ff686d2e06..0000000000 --- a/include/wx/gtk/colour.h +++ /dev/null @@ -1,82 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: colour.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKCOLOURH__ -#define __GTKCOLOURH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/string.h" -#include "wx/gdiobj.h" -#include "wx/palette.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxDC; -class wxPaintDC; -class wxBitmap; -class wxWindow; - -class wxColour; - -//----------------------------------------------------------------------------- -// wxColour -//----------------------------------------------------------------------------- - -class wxColour: public wxGDIObject -{ -public: - // ctors - // default - wxColour(); - // from RGB - wxColour( unsigned char red, unsigned char green, unsigned char blue ); - // implicit conversion from the colour name - wxColour( const wxString &colourName ) { InitFromName(colourName); } - wxColour( const char *colourName ) { InitFromName(colourName); } - - // copy ctors and assignment operators - wxColour( const wxColour& col ); - wxColour& operator = ( const wxColour& col ); - - // dtor - ~wxColour(); - - // comparison - bool operator == ( const wxColour& col ); - bool operator != ( const wxColour& col ); - - // accessors - void Set( unsigned char red, unsigned char green, unsigned char blue ); - unsigned char Red() const; - unsigned char Green() const; - unsigned char Blue() const; - bool Ok() const; - - // implementation - void CalcPixel( GdkColormap *cmap ); - int GetPixel() const; - GdkColor *GetColor() const; - -protected: - // helper functions - void InitFromName(const wxString& colourName); - -private: - DECLARE_DYNAMIC_CLASS(wxColour) -}; - -#endif // __GTKCOLOURH__ diff --git a/include/wx/gtk/combobox.h b/include/wx/gtk/combobox.h deleted file mode 100644 index 7d7822f941..0000000000 --- a/include/wx/gtk/combobox.h +++ /dev/null @@ -1,122 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: combobox.h -// Purpose: -// Author: Robert Roebling -// Created: 01/02/97 -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKCOMBOBOXH__ -#define __GTKCOMBOBOXH__ - -#ifdef __GNUG__ -#pragma interface "combobox.h" -#endif - -#include "wx/defs.h" - -#include "wx/object.h" -#include "wx/control.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxComboBox; - -//----------------------------------------------------------------------------- -// global data -//----------------------------------------------------------------------------- - -extern const char* wxComboBoxNameStr; -extern const char* wxEmptyString; - -//----------------------------------------------------------------------------- -// wxComboBox -//----------------------------------------------------------------------------- - -class wxComboBox : public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxComboBox) - -public: - - inline wxComboBox() {} - inline wxComboBox(wxWindow *parent, wxWindowID id, - const wxString& value = wxEmptyString, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = (const wxString *) NULL, - long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxComboBoxNameStr) - { - Create(parent, id, value, pos, size, n, choices, style, validator, name); - } - ~wxComboBox(); - bool Create(wxWindow *parent, wxWindowID id, - const wxString& value = wxEmptyString, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = (const wxString *) NULL, - long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxComboBoxNameStr); - - void Append( const wxString &item ); - void Append( const wxString &item, void* clientData ); - void Append( const wxString &item, wxClientData* clientData ); - - void SetClientData( int n, void* clientData ); - void* GetClientData( int n ); - void SetClientObject( int n, wxClientData* clientData ); - wxClientData* GetClientObject( int n ); - - void Clear(); - void Delete( int n ); - - int FindString( const wxString &item ); - int GetSelection() const; - wxString GetString( int n ) const; - wxString GetStringSelection() const; - int Number() const; - void SetSelection( int n ); - void SetStringSelection( const wxString &string ); - - wxString GetValue() const; - void SetValue(const wxString& value); - - void Copy(); - void Cut(); - void Paste(); - void SetInsertionPoint( long pos ); - void SetInsertionPointEnd(); - long GetInsertionPoint() const; - long GetLastPosition() const; - void Replace( long from, long to, const wxString& value ); - void Remove( long from, long to ); - void SetSelection( long from, long to ); - void SetEditable( bool editable ); - - void OnSize( wxSizeEvent &event ); - -// implementation - - bool m_alreadySent; - wxList m_clientDataList; - wxList m_clientObjectList; - - void AppendCommon( const wxString &item ); - GtkWidget* GetConnectWidget(); - bool IsOwnGtkWindow( GdkWindow *window ); - void ApplyWidgetStyle(); - - DECLARE_EVENT_TABLE() -}; - -#endif - - // __GTKCOMBOBOXH__ diff --git a/include/wx/gtk/control.h b/include/wx/gtk/control.h deleted file mode 100644 index d3a164d275..0000000000 --- a/include/wx/gtk/control.h +++ /dev/null @@ -1,55 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: control.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling, Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __GTKCONTROLH__ -#define __GTKCONTROLH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/list.h" -#include "wx/window.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxControl; - -//----------------------------------------------------------------------------- -// wxControl -//----------------------------------------------------------------------------- - -class wxControl: public wxWindow -{ -DECLARE_DYNAMIC_CLASS(wxControl) - -public: - wxControl(); - wxControl( wxWindow *parent, wxWindowID id, - const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, - long style = 0, const wxString &name = wxPanelNameStr ); - - virtual void Command( wxCommandEvent &event ); - - // this function will filter out '&' characters and will put the accelerator - // char (the one immediately after '&') into m_chAccel (@@ not yet) - virtual void SetLabel( const wxString &label ); - virtual wxString GetLabel() const; - -protected: - wxString m_label; - char m_chAccel; // enabled to avoid breaking binary compatibility later on - -}; - -#endif // __GTKCONTROLH__ diff --git a/include/wx/gtk/cursor.h b/include/wx/gtk/cursor.h deleted file mode 100644 index d274b6be95..0000000000 --- a/include/wx/gtk/cursor.h +++ /dev/null @@ -1,46 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: cursor.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKCURSORH__ -#define __GTKCURSORH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/gdicmn.h" - -//----------------------------------------------------------------------------- -// wxCursor -//----------------------------------------------------------------------------- - -class wxCursor: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxCursor) - - public: - - wxCursor(); - wxCursor( int cursorId ); - wxCursor( const wxCursor &cursor ); - ~wxCursor(); - wxCursor& operator = ( const wxCursor& cursor ); - bool operator == ( const wxCursor& cursor ) const; - bool operator != ( const wxCursor& cursor ) const; - bool Ok() const; - - GdkCursor *GetCursor() const; - - // no data :-) -}; - -#endif // __GTKCURSORH__ diff --git a/include/wx/gtk/dataobj.h b/include/wx/gtk/dataobj.h deleted file mode 100644 index 42233e4494..0000000000 --- a/include/wx/gtk/dataobj.h +++ /dev/null @@ -1,317 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: dataobj.h -// Purpose: declaration of the wxDataObject class -// Author: Robert Roebling -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin, Robert Roebling -// Licence: wxWindows license -/////////////////////////////////////////////////////////////////////////////// - -#ifndef __GTKDATAOBJECTH__ -#define __GTKDATAOBJECTH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/string.h" -#include "wx/bitmap.h" - -//------------------------------------------------------------------------- -// classes -//------------------------------------------------------------------------- - -class wxDataFormat; -class wxDataBroker; -class wxDataObject; -class wxTextDataObject; -class wxBitmapDataObject; -class wxPrivateDataObject; -class wxFileDataObject; - -//------------------------------------------------------------------------- -// wxDataType (internal) -//------------------------------------------------------------------------- - -enum wxDataType -{ - wxDF_INVALID = 0, - wxDF_TEXT = 1, /* CF_TEXT */ - wxDF_BITMAP = 2, /* CF_BITMAP */ - wxDF_METAFILE = 3, /* CF_METAFILEPICT */ - wxDF_SYLK = 4, - wxDF_DIF = 5, - wxDF_TIFF = 6, - wxDF_OEMTEXT = 7, /* CF_OEMTEXT */ - wxDF_DIB = 8, /* CF_DIB */ - wxDF_PALETTE = 9, - wxDF_PENDATA = 10, - wxDF_RIFF = 11, - wxDF_WAVE = 12, - wxDF_UNICODETEXT = 13, - wxDF_ENHMETAFILE = 14, - wxDF_FILENAME = 15, /* CF_HDROP */ - wxDF_LOCALE = 16, - wxDF_PRIVATE = 20 -}; - -//------------------------------------------------------------------------- -// wxDataFormat (internal) -//------------------------------------------------------------------------- - -class wxDataFormat : public wxObject -{ - DECLARE_CLASS( wxDataFormat ) - -public: - - wxDataFormat(); - wxDataFormat( wxDataType type ); - wxDataFormat( const wxString &id ); - wxDataFormat( wxDataFormat &format ); - wxDataFormat( const GdkAtom atom ); - - void SetType( wxDataType type ); - wxDataType GetType() const; - - wxString GetId() const; - void SetId( const wxString &id ); - - GdkAtom GetAtom(); - -private: - - wxDataType m_type; - wxString m_id; - bool m_hasAtom; - GdkAtom m_atom; -}; - -//------------------------------------------------------------------------- -// wxDataBroker (internal) -//------------------------------------------------------------------------- - -class wxDataBroker : public wxObject -{ - DECLARE_CLASS( wxDataBroker ) - -public: - - /* constructor */ - wxDataBroker(); - - /* add data object */ - void Add( wxDataObject *dataObject, bool preferred = FALSE ); - -private: - - /* OLE implementation, the methods don't need to be overridden */ - - /* get number of supported formats */ - virtual size_t GetFormatCount() const; - - /* return nth supported format */ - virtual wxDataFormat &GetNthFormat( size_t nth ) const; - - /* return preferrd/best supported format */ - virtual wxDataFormat &GetPreferredFormat() const; - - /* search through m_dataObjects, return TRUE if found */ - virtual bool IsSupportedFormat( wxDataFormat &format ) const; - - /* search through m_dataObjects and call child's GetSize() */ - virtual size_t GetSize( wxDataFormat& format ) const; - - /* search through m_dataObjects and call child's WriteData(dest) */ - virtual void WriteData( wxDataFormat& format, void *dest ) const; - - /* implementation */ - -public: - - wxList m_dataObjects; - size_t m_preferred; -}; - -//---------------------------------------------------------------------------- -// wxDataObject to be placed in wxDataBroker -//---------------------------------------------------------------------------- - -class wxDataObject : public wxObject -{ - DECLARE_DYNAMIC_CLASS( wxDataObject ) - -public: - - /* constructor */ - wxDataObject(); - - /* destructor */ - ~wxDataObject(); - - /* write data to dest */ - virtual void WriteData( void *dest ) const = 0; - - /* get size of data */ - virtual size_t GetSize() const = 0; - - /* implementation */ - - wxDataFormat &GetFormat(); - - wxDataType GetFormatType() const; - wxString GetFormatId() const; - GdkAtom GetFormatAtom() const; - - wxDataFormat m_format; -}; - -//---------------------------------------------------------------------------- -// wxTextDataObject is a specialization of wxDataObject for text data -//---------------------------------------------------------------------------- - -class wxTextDataObject : public wxDataObject -{ - DECLARE_DYNAMIC_CLASS( wxTextDataObject ) - -public: - - /* default constructor. call SetText() later or override - WriteData() and GetSize() for working on-demand */ - wxTextDataObject(); - - /* constructor */ - wxTextDataObject( const wxString& data ); - - /* set current text data */ - void SetText( const wxString& data ); - - /* get current text data */ - wxString GetText() const; - - /* by default calls WriteString() with string set by constructor or - by SetText(). can be overridden for working on-demand */ - virtual void WriteData( void *dest ) const; - - /* by default, returns length of string as set by constructor or - by SetText(). can be overridden for working on-demand */ - virtual size_t GetSize() const; - - /* write string to dest */ - void WriteString( const wxString &str, void *dest ) const; - - /* implementation */ - - wxString m_data; -}; - -//---------------------------------------------------------------------------- -// wxFileDataObject is a specialization of wxDataObject for file names -//---------------------------------------------------------------------------- - -class wxFileDataObject : public wxDataObject -{ - DECLARE_DYNAMIC_CLASS( wxFileDataObject ) - -public: - - /* default constructor */ - wxFileDataObject(); - - /* add file name to list */ - void AddFile( const wxString &file ); - - /* get all filename as one string. each file name is 0 terminated, - the list is double zero terminated */ - wxString GetFiles() const; - - /* write list of filenames */ - virtual void WriteData( void *dest ) const; - - /* return length of list of filenames */ - virtual size_t GetSize() const; - - /* implementation */ - - wxString m_files; -}; - -//---------------------------------------------------------------------------- -// wxBitmapDataObject is a specialization of wxDataObject for bitmaps -//---------------------------------------------------------------------------- - -class wxBitmapDataObject : public wxDataObject -{ - DECLARE_DYNAMIC_CLASS( wxBitmapDataObject ) - -public: - - /* see wxTextDataObject for explanation */ - - wxBitmapDataObject(); - wxBitmapDataObject( const wxBitmap& bitmap ); - - void SetBitmap( const wxBitmap &bitmap ); - wxBitmap GetBitmap() const; - - virtual void WriteData( void *dest ) const; - virtual size_t GetSize() const; - - void WriteBitmap( const wxBitmap &bitmap, void *dest ) const; - - // implementation - - wxBitmap m_bitmap; - -}; - -//---------------------------------------------------------------------------- -// wxPrivateDataObject is a specialization of wxDataObject for app specific data -//---------------------------------------------------------------------------- - -class wxPrivateDataObject : public wxDataObject -{ - DECLARE_DYNAMIC_CLASS( wxPrivateDataObject ) - -public: - - /* see wxTextDataObject for explanation of functions */ - - wxPrivateDataObject(); - ~wxPrivateDataObject(); - - /* the string Id identifies the format of clipboard or DnD data. a word - * processor would e.g. add a wxTextDataObject and a wxPrivateDataObject - * to the clipboard - the latter with the Id "application/wxword", an - * image manipulation program would put a wxBitmapDataObject and a - * wxPrivateDataObject to the clipboard - the latter with "image/png". */ - - void SetId( const wxString& id ); - - /* get id */ - wxString GetId() const; - - /* set data. will make internal copy. */ - void SetData( const char *data, size_t size ); - - /* returns pointer to data */ - char* GetData() const; - - virtual void WriteData( void *dest ) const; - virtual size_t GetSize() const; - - void WriteData( const char *data, void *dest ) const; - - // implementation - - size_t m_size; - char* m_data; - wxString m_id; -}; - - -#endif - //__GTKDNDH__ - diff --git a/include/wx/gtk/dc.h b/include/wx/gtk/dc.h deleted file mode 100644 index 7f4503fb6e..0000000000 --- a/include/wx/gtk/dc.h +++ /dev/null @@ -1,377 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dc.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKDCH__ -#define __GTKDCH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/gdicmn.h" -#include "wx/pen.h" -#include "wx/brush.h" -#include "wx/icon.h" -#include "wx/font.h" -#include "wx/gdicmn.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxDC; - -//----------------------------------------------------------------------------- -// constants -//----------------------------------------------------------------------------- - -#define MM_TEXT 0 -#define MM_ISOTROPIC 1 -#define MM_ANISOTROPIC 2 -#define MM_LOMETRIC 3 -#define MM_HIMETRIC 4 -#define MM_TWIPS 5 -#define MM_POINTS 6 -#define MM_METRIC 7 - -//----------------------------------------------------------------------------- -// global variables -//----------------------------------------------------------------------------- - -extern int wxPageNumber; - -//----------------------------------------------------------------------------- -// wxDC -//----------------------------------------------------------------------------- - -class wxDC: public wxObject -{ - DECLARE_ABSTRACT_CLASS(wxDC) - -public: - - wxDC(); - ~wxDC(); - - virtual void BeginDrawing() {} - virtual void EndDrawing() {} - - virtual bool Ok() const; - - virtual void FloodFill( long x, long y, const wxColour& col, int style=wxFLOOD_SURFACE ) = 0; - inline void FloodFill(const wxPoint& pt, const wxColour& col, int style=wxFLOOD_SURFACE) - { - FloodFill(pt.x, pt.y, col, style); - } - virtual bool GetPixel( long x, long y, wxColour *col ) const = 0; - inline bool GetPixel(const wxPoint& pt, wxColour *col) const - { - return GetPixel(pt.x, pt.y, col); - } - - virtual void DrawLine( long x1, long y1, long x2, long y2 ) = 0; - inline void DrawLine(const wxPoint& pt1, const wxPoint& pt2) - { - DrawLine(pt1.x, pt1.y, pt2.x, pt2.y); - } - virtual void CrossHair( long x, long y ) = 0; - inline void CrossHair(const wxPoint& pt) - { - CrossHair(pt.x, pt.y); - } - virtual void DrawArc( long x1, long y1, long x2, long y2, double xc, double yc ); - inline void DrawArc(const wxPoint& pt1, const wxPoint& pt2, const wxPoint& centre) - { - DrawArc(pt1.x, pt1.y, pt2.x, pt2.y, centre.x, centre.y); - } - virtual void DrawEllipticArc( long x, long y, long width, long height, double sa, double ea ) = 0; - virtual void DrawEllipticArc (const wxPoint& pt, const wxSize& sz, double sa, double ea) - { - DrawEllipticArc(pt.x, pt.y, sz.x, sz.y, sa, ea); - } - virtual void DrawPoint( long x, long y ) = 0; - inline void DrawPoint(const wxPoint& pt) - { - DrawPoint(pt.x, pt.y); - } - virtual void DrawPoint( wxPoint& point ); - - virtual void DrawLines( int n, wxPoint points[], long xoffset = 0, long yoffset = 0 ) = 0; - virtual void DrawLines( wxList *points, long xoffset = 0, long yoffset = 0 ); - virtual void DrawPolygon( int n, wxPoint points[], long xoffset = 0, long yoffset = 0, - int fillStyle=wxODDEVEN_RULE ) = 0; - virtual void DrawPolygon( wxList *lines, long xoffset = 0, long yoffset = 0, - int fillStyle=wxODDEVEN_RULE ); - - virtual void DrawRectangle( long x, long y, long width, long height ) = 0; - inline void DrawRectangle(const wxPoint& pt, const wxSize& sz) - { - DrawRectangle(pt.x, pt.y, sz.x, sz.y); - } - inline void DrawRectangle(const wxRect& rect) - { - DrawRectangle(rect.x, rect.y, rect.width, rect.height); - } - virtual void DrawRoundedRectangle( long x, long y, long width, long height, double radius = 20.0 ) = 0; - inline void DrawRoundedRectangle(const wxPoint& pt, const wxSize& sz, double radius = 20.0) - { - DrawRoundedRectangle(pt.x, pt.y, sz.x, sz.y, radius); - } - inline void DrawRoundedRectangle(const wxRect& rect, double radius = 20.0) - { - DrawRoundedRectangle(rect.x, rect.y, rect.width, rect.height, radius); - } - virtual void DrawEllipse( long x, long y, long width, long height ) = 0; - inline void DrawEllipse(const wxPoint& pt, const wxSize& sz) - { - DrawEllipse(pt.x, pt.y, sz.x, sz.y); - } - inline void DrawEllipse(const wxRect& rect) - { - DrawEllipse(rect.x, rect.y, rect.width, rect.height); - } - - virtual void DrawSpline( long x1, long y1, long x2, long y2, long x3, long y3 ); - virtual void DrawSpline( wxList *points ) = 0; - virtual void DrawSpline( int n, wxPoint points[] ); - - virtual bool CanDrawBitmap(void) const = 0; - virtual void DrawIcon( const wxIcon &icon, long x, long y ) = 0; - inline void DrawIcon( const wxIcon& icon, const wxPoint& pt ) - { - DrawIcon(icon, pt.x, pt.y); - } - virtual void DrawBitmap( const wxBitmap &bmp, long x, long y, bool useMask=FALSE ) = 0; - inline void DrawBitmap( const wxBitmap& bitmap, const wxPoint& pt, bool useMask=FALSE ) - { - DrawBitmap(bitmap, pt.x, pt.y, useMask ); - } - virtual bool Blit( long xdest, long ydest, - long width, long height, - wxDC *source, - long xsrc, long ysrc, - int logical_func=wxCOPY, - bool useMask=FALSE ) = 0; - inline bool Blit( const wxPoint& destPt, - const wxSize& sz, - wxDC *source, - const wxPoint& srcPt, - int rop = wxCOPY, - bool useMask=FALSE) - { - return Blit(destPt.x, destPt.y, sz.x, sz.y, source, srcPt.x, srcPt.y, rop, useMask); - } - - virtual void DrawText( const wxString &text, long x, long y, bool use16 = FALSE ) = 0; - inline void DrawText(const wxString& text, const wxPoint& pt, bool use16bit = FALSE ) - { - DrawText(text, pt.x, pt.y, use16bit); - } - virtual bool CanGetTextExtent(void) const = 0; - virtual void GetTextExtent( const wxString &string, - long *width, long *height, - long *descent = (long *) NULL, - long *externalLeading = (long *) NULL, - wxFont *theFont = (wxFont *) NULL, - bool use16 = FALSE ) = 0; - virtual long GetCharWidth(void) = 0; - virtual long GetCharHeight(void) = 0; - - virtual void Clear() = 0; - - virtual void SetFont( const wxFont &font ) = 0; - virtual wxFont& GetFont() const { return (wxFont&)m_font; }; - - virtual void SetPen( const wxPen &pen ) = 0; - virtual wxPen& GetPen() const { return (wxPen&)m_pen; }; - - virtual void SetBrush( const wxBrush &brush ) = 0; - virtual wxBrush& GetBrush() const { return (wxBrush&)m_brush; }; - - virtual void SetBackground( const wxBrush &brush ) = 0; - virtual wxBrush& GetBackground() const { return (wxBrush&)m_backgroundBrush; }; - - virtual void SetLogicalFunction( int function ) = 0; - virtual int GetLogicalFunction() { return m_logicalFunction; }; - - virtual void SetTextForeground( const wxColour &col ); - virtual void SetTextBackground( const wxColour &col ); - virtual wxColour& GetTextBackground() const { return (wxColour&)m_textBackgroundColour; }; - virtual wxColour& GetTextForeground() const { return (wxColour&)m_textForegroundColour; }; - - virtual void SetBackgroundMode( int mode ) = 0; - virtual int GetBackgroundMode() { return m_backgroundMode; }; - - virtual void SetPalette( const wxPalette& palette ) = 0; - void SetColourMap( const wxPalette& palette ) { SetPalette(palette); }; - - // the first two must be overridden and called - virtual void DestroyClippingRegion(void); - virtual void SetClippingRegion( long x, long y, long width, long height ); - virtual void GetClippingBox( long *x, long *y, long *width, long *height ) const; - virtual void SetClippingRegion( const wxRegion ®ion ) = 0; - - virtual long MinX() const { return m_minX; } - virtual long MaxX() const { return m_maxX; } - virtual long MinY() const { return m_minY; } - virtual long MaxY() const { return m_maxY; } - - virtual void GetSize( int* width, int* height ) const; - inline wxSize GetSize(void) const { int w, h; GetSize(&w, &h); return wxSize(w, h); } - virtual void GetSizeMM( long* width, long* height ) const; - - virtual bool StartDoc( const wxString& WXUNUSED(message) ) { return TRUE; } - virtual void EndDoc() {} - virtual void StartPage() {} - virtual void EndPage() {} - - virtual void SetMapMode( int mode ); - virtual int GetMapMode(void) const { return m_mappingMode; }; - - virtual void SetUserScale( double x, double y ); - virtual void GetUserScale( double *x, double *y ); - virtual void SetLogicalScale( double x, double y ); - virtual void GetLogicalScale( double *x, double *y ); - - virtual void SetLogicalOrigin( long x, long y ); - virtual void GetLogicalOrigin( long *x, long *y ); - virtual void SetDeviceOrigin( long x, long y ); - virtual void GetDeviceOrigin( long *x, long *y ); - - virtual void SetAxisOrientation( bool xLeftRight, bool yBottomUp ); - - virtual void SetOptimization( bool WXUNUSED(optimize) ) {} - virtual bool GetOptimization() { return m_optimize; } - - virtual long DeviceToLogicalX(long x) const; - virtual long DeviceToLogicalY(long y) const; - virtual long DeviceToLogicalXRel(long x) const; - virtual long DeviceToLogicalYRel(long y) const; - virtual long LogicalToDeviceX(long x) const; - virtual long LogicalToDeviceY(long y) const; - virtual long LogicalToDeviceXRel(long x) const; - virtual long LogicalToDeviceYRel(long y) const; - - // implementation - - void CalcBoundingBox( long x, long y ); - void ComputeScaleAndOrigin(); - - long XDEV2LOG(long x) const - { - long new_x = x - m_deviceOriginX; - if (new_x > 0) - return (long)((double)(new_x) / m_scaleX + 0.5) * m_signX + m_logicalOriginX; - else - return (long)((double)(new_x) / m_scaleX - 0.5) * m_signX + m_logicalOriginX; - } - long XDEV2LOGREL(long x) const - { - if (x > 0) - return (long)((double)(x) / m_scaleX + 0.5); - else - return (long)((double)(x) / m_scaleX - 0.5); - } - long YDEV2LOG(long y) const - { - long new_y = y - m_deviceOriginY; - if (new_y > 0) - return (long)((double)(new_y) / m_scaleY + 0.5) * m_signY + m_logicalOriginY; - else - return (long)((double)(new_y) / m_scaleY - 0.5) * m_signY + m_logicalOriginY; - } - long YDEV2LOGREL(long y) const - { - if (y > 0) - return (long)((double)(y) / m_scaleY + 0.5); - else - return (long)((double)(y) / m_scaleY - 0.5); - } - long XLOG2DEV(long x) const - { - long new_x = x - m_logicalOriginX; - if (new_x > 0) - return (long)((double)(new_x) * m_scaleX + 0.5) * m_signX + m_deviceOriginX; - else - return (long)((double)(new_x) * m_scaleX - 0.5) * m_signX + m_deviceOriginX; - } - long XLOG2DEVREL(long x) const - { - if (x > 0) - return (long)((double)(x) * m_scaleX + 0.5); - else - return (long)((double)(x) * m_scaleX - 0.5); - } - long YLOG2DEV(long y) const - { - long new_y = y - m_logicalOriginY; - if (new_y > 0) - return (long)((double)(new_y) * m_scaleY + 0.5) * m_signY + m_deviceOriginY; - else - return (long)((double)(new_y) * m_scaleY - 0.5) * m_signY + m_deviceOriginY; - } - long YLOG2DEVREL(long y) const - { - if (y > 0) - return (long)((double)(y) * m_scaleY + 0.5); - else - return (long)((double)(y) * m_scaleY - 0.5); - } - - - public: - - bool m_ok; - bool m_colour; - - // not sure, what these mean - bool m_clipping; // Is clipping on right now ? - bool m_isInteractive; // Is GetPixel possible ? - bool m_autoSetting; // wxMSW only ? - bool m_dontDelete; // wxMSW only ? - bool m_optimize; // wxMSW only ? - wxString m_filename; // Not sure where this belongs. - - wxPen m_pen; - wxBrush m_brush; - wxBrush m_backgroundBrush; - wxColour m_textForegroundColour; - wxColour m_textBackgroundColour; - wxFont m_font; - - int m_logicalFunction; - int m_backgroundMode; - int m_textAlignment; // gone in wxWin 2.0 ? - - int m_mappingMode; - - // not sure what for, but what is a mm on a screen you don't know the size of? - double m_mm_to_pix_x,m_mm_to_pix_y; - - long m_deviceOriginX,m_deviceOriginY; - - long m_logicalOriginX,m_logicalOriginY; // User defined. - - double m_scaleX,m_scaleY; - double m_logicalScaleX,m_logicalScaleY; - double m_userScaleX,m_userScaleY; - long m_signX,m_signY; - - bool m_needComputeScaleX,m_needComputeScaleY; // not yet used - - float m_scaleFactor; // wxPSDC wants to have this. Will disappear. - - long m_clipX1,m_clipY1,m_clipX2,m_clipY2; - long m_minX,m_maxX,m_minY,m_maxY; -}; - -#endif // __GTKDCH__ diff --git a/include/wx/gtk/dcclient.h b/include/wx/gtk/dcclient.h deleted file mode 100644 index 4f4999affb..0000000000 --- a/include/wx/gtk/dcclient.h +++ /dev/null @@ -1,137 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcclient.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKDCCLIENTH__ -#define __GTKDCCLIENTH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/dc.h" -#include "wx/window.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxWindowDC; -class wxPaintDC; -class wxClientDC; - -//----------------------------------------------------------------------------- -// wxWindowDC -//----------------------------------------------------------------------------- - -class wxWindowDC: public wxDC -{ - DECLARE_DYNAMIC_CLASS(wxWindowDC) - -public: - wxWindowDC(); - wxWindowDC( wxWindow *win ); - - ~wxWindowDC(); - - virtual void FloodFill( long x, long y, const wxColour& col, int style=wxFLOOD_SURFACE ); - virtual bool GetPixel( long x1, long y1, wxColour *col ) const; - - virtual void DrawLine( long x1, long y1, long x2, long y2 ); - virtual void CrossHair( long x, long y ); - virtual void DrawArc( long x1, long y1, long x2, long y2, double xc, double yc ); - virtual void DrawEllipticArc( long x, long y, long width, long height, double sa, double ea ); - virtual void DrawPoint( long x, long y ); - - virtual void DrawLines( int n, wxPoint points[], long xoffset = 0, long yoffset = 0 ); - virtual void DrawLines( wxList *points, long xoffset = 0, long yoffset = 0 ); - virtual void DrawPolygon( int n, wxPoint points[], long xoffset = 0, long yoffset = 0, - int fillStyle=wxODDEVEN_RULE ); - virtual void DrawPolygon( wxList *lines, long xoffset = 0, long yoffset = 0, - int fillStyle=wxODDEVEN_RULE ); - - virtual void DrawRectangle( long x, long y, long width, long height ); - virtual void DrawRoundedRectangle( long x, long y, long width, long height, double radius = 20.0 ); - virtual void DrawEllipse( long x, long y, long width, long height ); - - virtual bool CanDrawBitmap() const; - virtual void DrawIcon( const wxIcon &icon, long x, long y ); - virtual void DrawBitmap( const wxBitmap &bitmap, long x, long y, bool useMask=FALSE ); - virtual bool Blit( long xdest, long ydest, long width, long height, - wxDC *source, long xsrc, long ysrc, int logical_func = wxCOPY, bool useMask=FALSE ); - - virtual void DrawText( const wxString &text, long x, long y, bool use16 = FALSE ); - virtual bool CanGetTextExtent() const; - virtual void GetTextExtent( const wxString &string, long *width, long *height, - long *descent = (long *) NULL, long *externalLeading = (long *) NULL, - wxFont *theFont = (wxFont *) NULL, bool use16 = FALSE ); - virtual long GetCharWidth(); - virtual long GetCharHeight(); - - virtual void Clear(); - - virtual void SetFont( const wxFont &font ); - virtual void SetPen( const wxPen &pen ); - virtual void SetBrush( const wxBrush &brush ); - virtual void SetBackground( const wxBrush &brush ); - virtual void SetLogicalFunction( int function ); - virtual void SetTextForeground( const wxColour &col ); - virtual void SetTextBackground( const wxColour &col ); - virtual void SetBackgroundMode( int mode ); - virtual void SetPalette( const wxPalette& palette ); - - virtual void SetClippingRegion( long x, long y, long width, long height ); - virtual void DestroyClippingRegion(); - virtual void SetClippingRegion( const wxRegion ®ion ); - - virtual void DrawSpline( wxList *points ); - - // implementation - - GdkWindow *m_window; - GdkGC *m_penGC; - GdkGC *m_brushGC; - GdkGC *m_textGC; - GdkGC *m_bgGC; - GdkColormap *m_cmap; - bool m_isMemDC; - - void SetUpDC(); - void Destroy(); - GdkWindow *GetWindow(); -}; - -//----------------------------------------------------------------------------- -// wxPaintDC -//----------------------------------------------------------------------------- - -class wxPaintDC : public wxWindowDC -{ - DECLARE_DYNAMIC_CLASS(wxPaintDC) - -public: - wxPaintDC(); - wxPaintDC( wxWindow *win ); -}; - -//----------------------------------------------------------------------------- -// wxClientDC -//----------------------------------------------------------------------------- - -class wxClientDC : public wxWindowDC -{ - DECLARE_DYNAMIC_CLASS(wxClientDC) - -public: - wxClientDC(); - wxClientDC( wxWindow *win ); -}; - - -#endif // __GTKDCCLIENTH__ diff --git a/include/wx/gtk/dcmemory.h b/include/wx/gtk/dcmemory.h deleted file mode 100644 index ea4a1f1571..0000000000 --- a/include/wx/gtk/dcmemory.h +++ /dev/null @@ -1,49 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcmemory.h -// Purpose: -// Author: Robert Roebling -// RCS-ID: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKDCMEMORYH__ -#define __GTKDCMEMORYH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/dcclient.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxMemoryDC; - -//----------------------------------------------------------------------------- -// wxMemoryDC -//----------------------------------------------------------------------------- - -class wxMemoryDC: public wxWindowDC -{ - DECLARE_DYNAMIC_CLASS(wxMemoryDC) - -public: - wxMemoryDC(); - wxMemoryDC( wxDC *dc ); // Create compatible DC - ~wxMemoryDC(); - virtual void SelectObject( const wxBitmap& bitmap ); - void GetSize( int *width, int *height ) const; - - // implementation - - wxBitmap m_selected; -}; - -#endif - // __GTKDCMEMORYH__ - diff --git a/include/wx/gtk/dcps.h b/include/wx/gtk/dcps.h deleted file mode 100644 index df8f2d0b09..0000000000 --- a/include/wx/gtk/dcps.h +++ /dev/null @@ -1,142 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcps.h -// Purpose: wxPostScriptDC class -// Author: Julian Smart and others -// Modified by: -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart, Robert Roebling and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __GTKDCPSH__ -#define __GTKDCPSNH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/dc.h" - -#if wxUSE_POSTSCRIPT - -#include "wx/dialog.h" -#include "wx/module.h" -#include - - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxPostScriptDC; - -//----------------------------------------------------------------------------- -// wxPostScriptDC -//----------------------------------------------------------------------------- - -class WXDLLEXPORT wxPostScriptDC: public wxDC -{ - DECLARE_DYNAMIC_CLASS(wxPostScriptDC) - -public: - - wxPostScriptDC(); - wxPostScriptDC(const wxString& output, bool interactive = TRUE, wxWindow *parent = (wxWindow *) NULL); - - ~wxPostScriptDC(); - - bool Create(const wxString& output, bool interactive = TRUE, wxWindow *parent = (wxWindow *) NULL); - - virtual bool Ok() const; - - virtual bool PrinterDialog(wxWindow *parent = (wxWindow *) NULL); - - virtual void BeginDrawing() {} - virtual void EndDrawing() {} - - void FloodFill(long x1, long y1, const wxColour &col, int style=wxFLOOD_SURFACE) ; - bool GetPixel(long x1, long y1, wxColour *col) const; - - void DrawLine(long x1, long y1, long x2, long y2); - void CrossHair(long x, long y) ; - void DrawArc(long x1,long y1,long x2,long y2,long xc,long yc); - void DrawEllipticArc(long x,long y,long w,long h,double sa,double ea); - void DrawPoint(long x, long y); - // Avoid compiler warning - void DrawPoint(wxPoint& point) { wxDC::DrawPoint(point); } - void DrawLines(int n, wxPoint points[], long xoffset = 0, long yoffset = 0); - // Avoid compiler warning - void DrawLines(wxList *lines, long xoffset = 0, long yoffset = 0) - { wxDC::DrawLines(lines, xoffset, yoffset); } - void DrawPolygon(int n, wxPoint points[], long xoffset = 0, long yoffset = 0, int fillStyle=wxODDEVEN_RULE); - // Avoid compiler warning - void DrawPolygon(wxList *lines, long xoffset = 0, long yoffset = 0, int fillStyle=wxODDEVEN_RULE) - { wxDC::DrawPolygon(lines, xoffset, yoffset, fillStyle); } - void DrawRectangle(long x, long y, long width, long height); - void DrawRoundedRectangle(long x, long y, long width, long height, double radius = 20); - void DrawEllipse(long x, long y, long width, long height); - - void DrawSpline(wxList *points); - - bool Blit(long xdest, long ydest, long width, long height, - wxDC *source, long xsrc, long ysrc, int rop = wxCOPY, bool useMask = FALSE); - inline bool CanDrawBitmap(void) const { return TRUE; } - - void DrawIcon( const wxIcon& icon, long x, long y ); - void DrawBitmap( const wxBitmap& bitmap, long x, long y, bool useMask=FALSE ); - - void DrawText(const wxString& text, long x, long y, bool use16 = FALSE); - - void Clear(); - void SetFont( const wxFont& font ); - void SetPen( const wxPen& pen ); - void SetBrush( const wxBrush& brush ); - void SetLogicalFunction( int function ); - void SetBackground( const wxBrush& brush ); - - void SetClippingRegion(long x, long y, long width, long height); - void SetClippingRegion( const wxRegion ®ion ); - void DestroyClippingRegion(); - - bool StartDoc(const wxString& message); - void EndDoc(); - void StartPage(); - void EndPage(); - - long GetCharHeight(); - long GetCharWidth(); - inline bool CanGetTextExtent(void) const { return FALSE; } - void GetTextExtent(const wxString& string, long *x, long *y, - long *descent = (long *) NULL, - long *externalLeading = (long *) NULL, - wxFont *theFont = (wxFont *) NULL, bool use16 = FALSE); - - void GetSize(int* width, int* height) const; - void GetSizeMM(long *width, long *height) const; - - void SetAxisOrientation( bool xLeftRight, bool yBottomUp ); - void SetDeviceOrigin( long x, long y ); - - inline void SetBackgroundMode(int WXUNUSED(mode)) {} - inline void SetPalette(const wxPalette& WXUNUSED(palette)) {} - - inline ofstream *GetStream(void) const { return m_pstream; } - -protected: - - ofstream * m_pstream; // PostScript output stream - wxString m_title; - unsigned char m_currentRed; - unsigned char m_currentGreen; - unsigned char m_currentBlue; - int m_pageNumber; - bool m_clipping; - double m_underlinePosition; - double m_underlineThickness; -}; - -#endif - // wxUSE_POSTSCRIPT - -#endif - // __GTKDCPSH__ diff --git a/include/wx/gtk/dcscreen.h b/include/wx/gtk/dcscreen.h deleted file mode 100644 index 34a90bc599..0000000000 --- a/include/wx/gtk/dcscreen.h +++ /dev/null @@ -1,47 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcscreen.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __GTKDCSCREENH__ -#define __GTKDCSCREENH__ - -#include "wx/dcclient.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxScreenDC; - -//----------------------------------------------------------------------------- -// wxScreenDC -//----------------------------------------------------------------------------- - -class wxScreenDC: public wxPaintDC -{ - DECLARE_DYNAMIC_CLASS(wxScreenDC) - -public: - wxScreenDC(void); - ~wxScreenDC(void); - - static bool StartDrawingOnTop( wxWindow *window ); - static bool StartDrawingOnTop( wxRect *rect = (wxRect *) NULL ); - static bool EndDrawingOnTop(void); - - // implementation - - static GdkWindow *sm_overlayWindow; - static int sm_overlayWindowX; - static int sm_overlayWindowY; -}; - -#endif - - // __GTKDCSCREENH__ - diff --git a/include/wx/gtk/dialog.h b/include/wx/gtk/dialog.h deleted file mode 100644 index 25cfa99c37..0000000000 --- a/include/wx/gtk/dialog.h +++ /dev/null @@ -1,106 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dialog.h -// Purpose: -// Author: Robert Roebling -// Created: -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __GTKDIALOGH__ -#define __GTKDIALOGH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/panel.h" -#include "wx/icon.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxDialog; - -//----------------------------------------------------------------------------- -// global data -//----------------------------------------------------------------------------- - -extern const char *wxDialogNameStr; - -//----------------------------------------------------------------------------- -// wxDialog -//----------------------------------------------------------------------------- - -class wxDialog: public wxPanel -{ - DECLARE_DYNAMIC_CLASS(wxDialog) - -public: - wxDialog(); - wxDialog( wxWindow *parent, wxWindowID id, - const wxString &title, - const wxPoint &pos = wxDefaultPosition, - const wxSize &size = wxDefaultSize, - long style = wxDEFAULT_DIALOG_STYLE, - const wxString &name = wxDialogNameStr ); - bool Create( wxWindow *parent, wxWindowID id, - const wxString &title, - const wxPoint &pos = wxDefaultPosition, - const wxSize &size = wxDefaultSize, - long style = wxDEFAULT_DIALOG_STYLE, - const wxString &name = wxDialogNameStr ); - ~wxDialog(); - - void SetTitle(const wxString& title); - wxString GetTitle() const; - - bool OnClose(); - void OnApply( wxCommandEvent &event ); - void OnCancel( wxCommandEvent &event ); - void OnOK( wxCommandEvent &event ); - void OnPaint( wxPaintEvent& event ); - void OnSize( wxSizeEvent &event ); -/* - void OnCharHook( wxKeyEvent& event ); -*/ - - bool Destroy(); - void OnCloseWindow( wxCloseEvent& event ); - - virtual void SetSize( int x, int y, int width, int height, - int sizeFlags = wxSIZE_AUTO ); - virtual void SetSize( int width, int height ); - - virtual bool Show( bool show ); - virtual int ShowModal(); - virtual void EndModal( int retCode ); - virtual bool IsModal() const; - void SetModal( bool modal ); - - virtual void InitDialog(void); - - virtual void Centre( int direction = wxHORIZONTAL ); - - virtual void SetIcon( const wxIcon &icon ); - virtual void Iconize( bool WXUNUSED(iconize)) { } - virtual bool IsIconized() const { return FALSE; } - bool Iconized() const { return IsIconized(); } - virtual void Maximize() { } - virtual void Restore() { } - -// implementation - - virtual void GtkOnSize( int x, int y, int width, int height ); - - bool m_modalShowing; - wxString m_title; - wxIcon m_icon; - - DECLARE_EVENT_TABLE() -}; - -#endif // __GTKDIALOGH__ diff --git a/include/wx/gtk/dnd.h b/include/wx/gtk/dnd.h deleted file mode 100644 index f2f81e8550..0000000000 --- a/include/wx/gtk/dnd.h +++ /dev/null @@ -1,204 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: dnd.h -// Purpose: declaration of the wxDropTarget class -// Author: Robert Roebling -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin, Robert Roebling -// Licence: wxWindows license -/////////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKDNDH__ -#define __GTKDNDH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" - -#if wxUSE_DRAG_AND_DROP - -#include "wx/object.h" -#include "wx/string.h" -#include "wx/dataobj.h" -#include "wx/cursor.h" - -//------------------------------------------------------------------------- -// conditional compilation -//------------------------------------------------------------------------- - -#if (GTK_MINOR_VERSION == 1) -#if (GTK_MICRO_VERSION >= 3) -#define NEW_GTK_DND_CODE -#endif -#endif - -//------------------------------------------------------------------------- -// classes -//------------------------------------------------------------------------- - -class wxWindow; - -class wxDropTarget; -class wxTextDropTarget; -class wxFileDropTarget; -class wxPrivateDropTarget; - -class wxDropSource; - -//------------------------------------------------------------------------- -// wxDropTarget -//------------------------------------------------------------------------- - -class wxDropTarget: public wxObject -{ - public: - - wxDropTarget(); - ~wxDropTarget(); - - virtual void OnEnter() { } - virtual void OnLeave() { } - virtual void OnMouseMove( long WXUNUSED(x), long WXUNUSED(y) ) { } - virtual bool OnDrop( long x, long y, const void *data, size_t size ) = 0; - - // Override these to indicate what kind of data you support: - - virtual size_t GetFormatCount() const = 0; - virtual wxDataFormat &GetFormat(size_t n) const; - - // implementation - - void RegisterWidget( GtkWidget *widget ); - void UnregisterWidget( GtkWidget *widget ); - - wxDataFormat *m_format; -}; - -//------------------------------------------------------------------------- -// wxTextDropTarget -//------------------------------------------------------------------------- - -class wxTextDropTarget: public wxDropTarget -{ - public: - - wxTextDropTarget(); - virtual bool OnDrop( long x, long y, const void *data, size_t size ); - virtual bool OnDropText( long x, long y, const char *psz ); - - protected: - - virtual size_t GetFormatCount() const; -}; - -//------------------------------------------------------------------------- -// wxPrivateDropTarget -//------------------------------------------------------------------------- - -class wxPrivateDropTarget: public wxDropTarget -{ -public: - - wxPrivateDropTarget(); - - // you have to override OnDrop to get at the data - - // the string ID identifies the format of clipboard or DnD data. a word - // processor would e.g. add a wxTextDataObject and a wxPrivateDataObject - // to the clipboard - the latter with the Id "application/wxword" or - // "image/png". - - void SetId( const wxString& id ); - - wxString GetId() - { return m_id; } - -private: - - virtual size_t GetFormatCount() const; - - wxString m_id; -}; - -//---------------------------------------------------------------------------- -// A drop target which accepts files (dragged from File Manager or Explorer) -//---------------------------------------------------------------------------- - -class wxFileDropTarget: public wxDropTarget -{ - public: - - wxFileDropTarget(); - - virtual bool OnDrop( long x, long y, const void *data, size_t size ); - virtual bool OnDropFiles( long x, long y, - size_t nFiles, const char * const aszFiles[] ); - - protected: - - virtual size_t GetFormatCount() const; -}; - -//------------------------------------------------------------------------- -// wxDropSource -//------------------------------------------------------------------------- - -enum wxDragResult -{ - wxDragError, // error prevented the d&d operation from completing - wxDragNone, // drag target didn't accept the data - wxDragCopy, // the data was successfully copied - wxDragMove, // the data was successfully moved (MSW only) - wxDragCancel // the operation was cancelled by user (not an error) -}; - -class wxDropSource: public wxObject -{ - public: - - /* constructor. set data later with SetData() */ - wxDropSource( wxWindow *win ); - - /* constructor for setting one data object */ - wxDropSource( wxDataObject *data, wxWindow *win ); - - /* constructor for setting several data objects via wxDataBroker */ - wxDropSource( wxDataBroker *data, wxWindow *win ); - - ~wxDropSource(void); - - /* set one dataobject */ - void SetData( wxDataBroker *data ); - - /* set severa dataobjects via wxDataBroker */ - void SetData( wxDataObject *data ); - - /* start drag action */ - wxDragResult DoDragDrop( bool bAllowMove = FALSE ); - - /* override to give feedback */ - virtual bool GiveFeedback( wxDragResult WXUNUSED(effect), bool WXUNUSED(bScrolling) ) { return TRUE; } - - /* GTK implementation */ - - void RegisterWindow(void); - void UnregisterWindow(void); - - GtkWidget *m_widget; - wxWindow *m_window; - wxDragResult m_retValue; - wxDataBroker *m_data; - - wxCursor m_defaultCursor; - wxCursor m_goaheadCursor; -}; - -#endif - - // wxUSE_DRAG_AND_DROP - -#endif - //__GTKDNDH__ - diff --git a/include/wx/gtk/filedlg.h b/include/wx/gtk/filedlg.h deleted file mode 100644 index 641c056762..0000000000 --- a/include/wx/gtk/filedlg.h +++ /dev/null @@ -1,116 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: filedlg.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKFILEDLGH__ -#define __GTKFILEDLGH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/dialog.h" - -//------------------------------------------------------------------------- -// File selector -//------------------------------------------------------------------------- - -extern const char *wxFileSelectorPromptStr; -extern const char *wxFileSelectorDefaultWildcardStr; - -class wxFileDialog: public wxDialog -{ - - DECLARE_DYNAMIC_CLASS(wxFileDialog) - - friend void gtk_filedialog_ok_callback( GtkWidget *widget, gpointer data ); - - public: - - wxFileDialog() {}; - - wxFileDialog(wxWindow *parent, const wxString& message = wxFileSelectorPromptStr, - const wxString& defaultDir = "", const wxString& defaultFile = "", - const wxString& wildCard = wxFileSelectorDefaultWildcardStr, - long style = 0, const wxPoint& pos = wxDefaultPosition); - - inline void SetMessage(const wxString& message) { m_message = message; } - inline void SetPath(const wxString& path) { m_path = path; } - inline void SetDirectory(const wxString& dir) { m_dir = dir; } - inline void SetFilename(const wxString& name) { m_fileName = name; } - inline void SetWildcard(const wxString& wildCard) { m_wildCard = wildCard; } - inline void SetStyle(long style) { m_dialogStyle = style; } - inline void SetFilterIndex(int filterIndex) { m_filterIndex = filterIndex; } - - inline wxString GetMessage(void) const { return m_message; } - inline wxString GetPath(void) const { return m_path; } - inline wxString GetDirectory(void) const { return m_dir; } - inline wxString GetFilename(void) const { return m_fileName; } - inline wxString GetWildcard(void) const { return m_wildCard; } - inline long GetStyle(void) const { return m_dialogStyle; } - inline int GetFilterIndex(void) const { return m_filterIndex ; } - - int ShowModal(void); - - protected: - - wxString m_message; - long m_dialogStyle; - wxWindow * m_parent; - wxString m_dir; - wxString m_path; // Full path - wxString m_fileName; - wxString m_wildCard; - int m_filterIndex; -}; - -#define wxOPEN 1 -#define wxSAVE 2 -#define wxOVERWRITE_PROMPT 4 -#define wxHIDE_READONLY 8 -#define wxFILE_MUST_EXIST 16 - -// File selector - backward compatibility -WXDLLEXPORT wxString -wxFileSelector(const char *message = wxFileSelectorPromptStr, - const char *default_path = NULL, - const char *default_filename = NULL, - const char *default_extension = NULL, - const char *wildcard = wxFileSelectorDefaultWildcardStr, - int flags = 0, - wxWindow *parent = NULL, - int x = -1, int y = -1); - -// An extended version of wxFileSelector -WXDLLEXPORT wxString -wxFileSelectorEx(const char *message = wxFileSelectorPromptStr, - const char *default_path = NULL, - const char *default_filename = NULL, - int *indexDefaultExtension = NULL, - const char *wildcard = wxFileSelectorDefaultWildcardStr, - int flags = 0, - wxWindow *parent = NULL, - int x = -1, int y = -1); - -// Ask for filename to load -WXDLLEXPORT wxString -wxLoadFileSelector(const char *what, - const char *extension, - const char *default_name = (const char *)NULL, - wxWindow *parent = (wxWindow *) NULL); - -// Ask for filename to save -WXDLLEXPORT wxString -wxSaveFileSelector(const char *what, - const char *extension, - const char *default_name = (const char *) NULL, - wxWindow *parent = (wxWindow *) NULL); - -#endif - // __GTKFILEDLGH__ diff --git a/include/wx/gtk/font.h b/include/wx/gtk/font.h deleted file mode 100644 index 7e27d54e1a..0000000000 --- a/include/wx/gtk/font.h +++ /dev/null @@ -1,123 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: font.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling, Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKFONTH__ -#define __GTKFONTH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/string.h" -#include "wx/hash.h" -#include "wx/gdiobj.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxDC; -class wxPaintDC; -class wxWindow; - -class wxFont; -/* -class wxFontNameDirectory; -*/ - -//----------------------------------------------------------------------------- -// global variables -//----------------------------------------------------------------------------- - -/* -extern wxFontNameDirectory *wxTheFontNameDirectory; -*/ -extern const char* wxEmptyString; - -//----------------------------------------------------------------------------- -// wxFont -//----------------------------------------------------------------------------- - -class wxFont: public wxGDIObject -{ - DECLARE_DYNAMIC_CLASS(wxFont) - -public: - wxFont(); - wxFont( int pointSize, int family, int style, int weight, bool underlined = FALSE, - const wxString& face = wxEmptyString ); - wxFont( const wxFont& font ); - ~wxFont(); - wxFont& operator = ( const wxFont& font ); - bool operator == ( const wxFont& font ); - bool operator != ( const wxFont& font ); - bool Ok() const; - - int GetPointSize() const; - int GetFamily() const; - int GetStyle() const; - int GetWeight() const; - bool GetUnderlined() const; - - void SetPointSize( int pointSize ); - void SetFamily( int family ); - void SetStyle( int style ); - void SetWeight( int weight ); - void SetFaceName( const wxString& faceName ); - void SetUnderlined( bool underlined ); - - wxString GetFaceName() const; - wxString GetFamilyString() const; - wxString GetStyleString() const; - wxString GetWeightString() const; - - // implementation - - wxFont( char *xFontName ); - void Unshare(); - - GdkFont* GetInternalFont(float scale = 1.0) const; - - // no data :-) -}; - -/* -//----------------------------------------------------------------------------- -// wxFontDirectory -//----------------------------------------------------------------------------- - -class wxFontNameDirectory: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxFontNameDirectory) - - public: - wxFontNameDirectory(); - ~wxFontNameDirectory(); - - void Initialize(); - void Initialize(int fontid, int family, const char *name); - - int FindOrCreateFontId(const char *name, int family); - char* GetAFMName(int fontid, int weight, int style); - int GetFamily(int fontid); - int GetFontId(const char *name); - char* GetFontName(int fontid); - int GetNewFontId(); - char* GetPostScriptName(int fontid, int weight, int style); - char* GetScreenName(int fontid, int weight, int style); - - class wxHashTable *table; - int nextFontId; -}; -*/ - -#endif // __GTKFONTH__ diff --git a/include/wx/gtk/frame.h b/include/wx/gtk/frame.h deleted file mode 100644 index 0dd712f946..0000000000 --- a/include/wx/gtk/frame.h +++ /dev/null @@ -1,124 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: frame.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling, Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKFRAMEH__ -#define __GTKFRAMEH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/window.h" -#include "wx/icon.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxMDIChildFrame; -class wxMDIClientWindow; -class wxMenu; -class wxMenuBar; -class wxToolBar; -class wxStatusBar; - -class wxFrame; - -//----------------------------------------------------------------------------- -// global data -//----------------------------------------------------------------------------- - -extern const char *wxFrameNameStr; -extern const char *wxToolBarNameStr; - -//----------------------------------------------------------------------------- -// wxFrame -//----------------------------------------------------------------------------- - -class wxFrame: public wxWindow -{ - DECLARE_DYNAMIC_CLASS(wxFrame) -public: - - wxFrame(); - wxFrame( wxWindow *parent, wxWindowID id, const wxString &title, - const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE, const wxString &name = wxFrameNameStr ); - bool Create( wxWindow *parent, wxWindowID id, const wxString &title, - const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE, const wxString &name = wxFrameNameStr ); - ~wxFrame(); - bool Destroy(); - - virtual bool Show( bool show ); - virtual void Centre( int direction = wxHORIZONTAL ); - - virtual void GetClientSize( int *width, int *height ) const; - wxSize GetClientSize() const { int w, h; GetClientSize(& w, & h); return wxSize(w, h); } - - virtual void SetClientSize( int const width, int const height ); - - virtual void SetSize( int x, int y, int width, int height, - int sizeFlags = wxSIZE_AUTO ); - virtual void SetSize( int width, int height ); - - virtual wxStatusBar* CreateStatusBar(int number=1, long style = wxST_SIZEGRIP, wxWindowID id = 0, - const wxString& name = "statusBar"); - virtual wxStatusBar *OnCreateStatusBar( int number, long style, wxWindowID id, - const wxString& name ); - virtual wxStatusBar *GetStatusBar() const; - inline void SetStatusBar(wxStatusBar *statusBar) { m_frameStatusBar = statusBar; } - virtual void SetStatusText( const wxString &text, int number = 0 ); - virtual void SetStatusWidths( int n, const int widths_field[] ); - - virtual wxToolBar* CreateToolBar( long style = wxNO_BORDER|wxTB_HORIZONTAL, wxWindowID id = -1, - const wxString& name = wxToolBarNameStr); - virtual wxToolBar *OnCreateToolBar( long style, wxWindowID id, const wxString& name ); - virtual wxToolBar *GetToolBar() const; - inline void SetToolBar(wxToolBar *toolbar) { m_frameToolBar = toolbar; } - - virtual void SetMenuBar( wxMenuBar *menuBar ); - virtual wxMenuBar *GetMenuBar() const; - - virtual void SetTitle( const wxString &title ); - virtual wxString GetTitle() const { return m_title; } - - virtual void SetIcon( const wxIcon &icon ); - virtual void Iconize( bool WXUNUSED(iconize)) { } - virtual bool IsIconized() const { return FALSE; } - bool Iconized() const { return IsIconized(); } - virtual void Maximize(bool WXUNUSED(maximize)) {} - virtual void Restore() {} - - void OnActivate( wxActivateEvent &WXUNUSED(event) ) { } // called from docview.cpp - void OnSize( wxSizeEvent &event ); - void OnCloseWindow( wxCloseEvent& event ); - - // implementation - - virtual void GtkOnSize( int x, int y, int width, int height ); - virtual wxPoint GetClientAreaOrigin() const; - void DoMenuUpdates(); - void DoMenuUpdates(wxMenu* menu); - virtual void OnInternalIdle(); - - wxMenuBar *m_frameMenuBar; - wxStatusBar *m_frameStatusBar; - wxToolBar *m_frameToolBar; - wxString m_title; - wxIcon m_icon; - int m_miniEdge,m_miniTitle; - - DECLARE_EVENT_TABLE() -}; - -#endif // __GTKFRAMEH__ diff --git a/include/wx/gtk/gauge.h b/include/wx/gtk/gauge.h deleted file mode 100644 index e75a0c41b5..0000000000 --- a/include/wx/gtk/gauge.h +++ /dev/null @@ -1,82 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: gauge.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKGAUGEH__ -#define __GTKGAUGEH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/list.h" -#include "wx/control.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxGauge; - -//----------------------------------------------------------------------------- -// global data -//----------------------------------------------------------------------------- - -extern const char* wxGaugeNameStr; - -//----------------------------------------------------------------------------- -// wxGaugeBox -//----------------------------------------------------------------------------- - -class wxGauge: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxGauge) - - public: - inline wxGauge() { m_rangeMax = 0; m_gaugePos = 0; m_useProgressBar = TRUE; } - - inline wxGauge( wxWindow *parent, wxWindowID id, int range, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxGA_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxGaugeNameStr ) - { - Create(parent, id, range, pos, size, style, validator, name); - } - bool Create( wxWindow *parent, wxWindowID id, int range, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxGA_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxGaugeNameStr ); - void SetShadowWidth( int WXUNUSED(w) ) {}; - void SetBezelFace( int WXUNUSED(w) ) {}; - void SetRange( int r ); - void SetValue( int pos ); - int GetShadowWidth() const { return 0; }; - int GetBezelFace() const { return 0; }; - int GetRange() const; - int GetValue() const; - - // Are we a Win95/GTK progress bar, or a normal gauge? - inline bool GetProgressBar() const { return m_useProgressBar; } - - // implementation - - void ApplyWidgetStyle(); - - int m_rangeMax; - int m_gaugePos; - bool m_useProgressBar; -}; - -#endif // __GTKGAUGEH__ diff --git a/include/wx/gtk/gdiobj.h b/include/wx/gtk/gdiobj.h deleted file mode 100644 index ac8e8e9447..0000000000 --- a/include/wx/gtk/gdiobj.h +++ /dev/null @@ -1,37 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: gdiobj.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling, Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GDIOBJH__ -#define __GDIOBJH__ - -#include "wx/object.h" - -#ifdef __GNUG__ -#pragma interface -#endif - -class wxGDIObject : public wxObject -{ -DECLARE_DYNAMIC_CLASS(wxGDIObject) - -public: - inline wxGDIObject() { m_visible = FALSE; }; - inline ~wxGDIObject() {}; - - virtual bool GetVisible() { return m_visible; } - virtual void SetVisible( bool visible ) { m_visible = visible; } - -protected: - bool m_visible; /* can a pointer to this object be safely taken? - * - only if created within FindOrCreate... */ -}; - -#endif - // __GDIOBJH__ diff --git a/include/wx/gtk/icon.h b/include/wx/gtk/icon.h deleted file mode 100644 index e306018665..0000000000 --- a/include/wx/gtk/icon.h +++ /dev/null @@ -1,56 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: icon.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKICONH__ -#define __GTKICONH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/bitmap.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxIcon; - -//----------------------------------------------------------------------------- -// wxIcon -//----------------------------------------------------------------------------- - -class wxIcon: public wxBitmap -{ - DECLARE_DYNAMIC_CLASS(wxIcon) - -public: - - wxIcon(); - wxIcon( const wxIcon& icon); - wxIcon( const char **bits, int width=-1, int height=-1 ); - - // For compatibility with wxMSW where desired size is sometimes required to - // distinguish between multiple icons in a resource. - wxIcon( const wxString& filename, int type = wxBITMAP_TYPE_XPM, int WXUNUSED(desiredWidth)=-1, int WXUNUSED(desiredHeight)=-1 ): - wxBitmap(filename, type) - { - } - wxIcon( char **bits, int width=-1, int height=-1 ); - - wxIcon& operator = (const wxIcon& icon); - inline bool operator == (const wxIcon& icon) { return m_refData == icon.m_refData; } - inline bool operator != (const wxIcon& icon) { return m_refData != icon.m_refData; } -}; - - -#endif // __GTKICONH__ diff --git a/include/wx/gtk/joystick.h b/include/wx/gtk/joystick.h deleted file mode 100644 index 957c16581a..0000000000 --- a/include/wx/gtk/joystick.h +++ /dev/null @@ -1,102 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: joystick.h -// Purpose: wxJoystick class -// Author: Guilhem Lavaux -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __JOYSTICKH__ -#define __JOYSTICKH__ - -#ifdef __GNUG__ -#pragma interface "joystick.h" -#endif - -#include "wx/event.h" -#include "wx/thread.h" - -class WXDLLEXPORT wxJoystick: public wxObject, public wxThread -{ - DECLARE_DYNAMIC_CLASS(wxJoystick) - public: - /* - * Public interface - */ - - wxJoystick(int joystick = wxJOYSTICK1); - - // Attributes - //////////////////////////////////////////////////////////////////////////// - - wxPoint GetPosition(void) const; - int GetZPosition(void) const; - int GetButtonState(void) const; - int GetPOVPosition(void) const; - int GetPOVCTSPosition(void) const; - int GetRudderPosition(void) const; - int GetUPosition(void) const; - int GetVPosition(void) const; - int GetMovementThreshold(void) const; - void SetMovementThreshold(int threshold) ; - - // Capabilities - //////////////////////////////////////////////////////////////////////////// - - bool IsOk(void) const; // Checks that the joystick is functioning - int GetNumberJoysticks(void) const ; - int GetManufacturerId(void) const ; - int GetProductId(void) const ; - wxString GetProductName(void) const ; - int GetXMin(void) const; - int GetYMin(void) const; - int GetZMin(void) const; - int GetXMax(void) const; - int GetYMax(void) const; - int GetZMax(void) const; - int GetNumberButtons(void) const; - int GetNumberAxes(void) const; - int GetMaxButtons(void) const; - int GetMaxAxes(void) const; - int GetPollingMin(void) const; - int GetPollingMax(void) const; - int GetRudderMin(void) const; - int GetRudderMax(void) const; - int GetUMin(void) const; - int GetUMax(void) const; - int GetVMin(void) const; - int GetVMax(void) const; - - bool HasRudder(void) const; - bool HasZ(void) const; - bool HasU(void) const; - bool HasV(void) const; - bool HasPOV(void) const; - bool HasPOV4Dir(void) const; - bool HasPOVCTS(void) const; - - // Operations - //////////////////////////////////////////////////////////////////////////// - - // pollingFreq = 0 means that movement events are sent when above the threshold. - // If pollingFreq > 0, events are received every this many milliseconds. - bool SetCapture(wxWindow* win, int pollingFreq = 0); - bool ReleaseCapture(void); - -protected: - int m_joystick; - wxPoint m_lastposition; - int m_axe[15]; - int m_buttons; - wxWindow *m_catchwin; - int m_polling; - - void *Entry(void); -}; - -#endif - // __JOYSTICKH__ - diff --git a/include/wx/gtk/listbox.h b/include/wx/gtk/listbox.h deleted file mode 100644 index 9d6cafe665..0000000000 --- a/include/wx/gtk/listbox.h +++ /dev/null @@ -1,115 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: listbox.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKLISTBOXH__ -#define __GTKLISTBOXH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/list.h" -#include "wx/control.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxListBox; -class wxArrayInt; - -//----------------------------------------------------------------------------- -// global data -//----------------------------------------------------------------------------- - -extern const char *wxListBoxNameStr; - -//----------------------------------------------------------------------------- -// wxListBox -//----------------------------------------------------------------------------- - -class wxListBox : public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxListBox) - -public: - - wxListBox(); - inline wxListBox( wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = (const wxString *) NULL, - long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxListBoxNameStr ) - { - m_hasCheckBoxes = FALSE; - Create(parent, id, pos, size, n, choices, style, validator, name); - } - ~wxListBox(); - bool Create( wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = (const wxString *) NULL, - long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxListBoxNameStr ); - - void Append( const wxString &item ); - void Append( const wxString &item, void* clientData ); - void Append( const wxString &item, wxClientData* clientData ); - - void SetClientData( int n, void* clientData ); - void* GetClientData( int n ); - void SetClientObject( int n, wxClientData* clientData ); - wxClientData* GetClientObject( int n ); - - void Clear(); - void Delete( int n ); - - void Deselect( int n ); - int FindString( const wxString &item ) const; - int GetSelection(void) const; - int GetSelections( class wxArrayInt &) const; - wxString GetString( int n ) const; - wxString GetStringSelection(void) const; - int Number(); - bool Selected( int n ); - void Set( int n, const wxString *choices ); - void SetFirstItem( int n ); - void SetFirstItem( const wxString &item ); - void SetSelection( int n, bool select = TRUE ); - void SetString( int n, const wxString &string ); - void SetStringSelection( const wxString &string, bool select = TRUE ); - -#if wxUSE_DRAG_AND_DROP - void SetDropTarget( wxDropTarget *dropTarget ); -#endif - void SetToolTip( wxToolTip *tip ); - void SetToolTip( const wxString &tip ); - - -// implementation - - void AppendCommon( const wxString &item ); - int GetIndex( GtkWidget *item ) const; - GtkWidget *GetConnectWidget(); - bool IsOwnGtkWindow( GdkWindow *window ); - void ApplyWidgetStyle(); - - GtkList *m_list; - wxList m_clientDataList; - wxList m_clientObjectList; - bool m_hasCheckBoxes; -}; - -#endif // __GTKLISTBOXH__ diff --git a/include/wx/gtk/mdi.h b/include/wx/gtk/mdi.h deleted file mode 100644 index 95d9df89f4..0000000000 --- a/include/wx/gtk/mdi.h +++ /dev/null @@ -1,184 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: mdi.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __MDIH__ -#define __MDIH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/list.h" -#include "wx/control.h" -#include "wx/panel.h" -#include "wx/frame.h" -#include "wx/toolbar.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxMDIParentFrame; -class wxMDIClientWindow; -class wxMDIChildFrame; - -//----------------------------------------------------------------------------- -// global data -//----------------------------------------------------------------------------- - -extern const char* wxFrameNameStr; -extern const char* wxStatusLineNameStr; - -//----------------------------------------------------------------------------- -// wxMDIParentFrame -//----------------------------------------------------------------------------- - -class wxMDIParentFrame: public wxFrame -{ - DECLARE_DYNAMIC_CLASS(wxMDIParentFrame) - - friend class wxMDIChildFrame; - - public: - - wxMDIParentFrame(void); - wxMDIParentFrame( wxWindow *parent, - wxWindowID id, const wxString& title, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE | wxVSCROLL | wxHSCROLL, - const wxString& name = wxFrameNameStr ); - ~wxMDIParentFrame(void); - bool Create( wxWindow *parent, - wxWindowID id, const wxString& title, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE | wxVSCROLL | wxHSCROLL, - const wxString& name = wxFrameNameStr ); - - - void GetClientSize(int *width, int *height) const; - wxMDIChildFrame *GetActiveChild(void) const; - - wxMDIClientWindow *GetClientWindow(void) const; - virtual wxMDIClientWindow *OnCreateClient(void); - - virtual void Cascade(void) {}; - virtual void Tile(void) {}; - virtual void ArrangeIcons(void) {}; - virtual void ActivateNext(void); - virtual void ActivatePrevious(void); - - void OnActivate( wxActivateEvent& event ); - void OnSysColourChanged( wxSysColourChangedEvent& event ); - - // implementation - - wxMDIChildFrame *m_currentChild; - - void SetMDIMenuBar( wxMenuBar *menu_bar ); - virtual void GtkOnSize( int x, int y, int width, int height ); - - private: - - wxMDIClientWindow *m_clientWindow; - bool m_parentFrameActive; - wxMenuBar *m_mdiMenuBar; - - DECLARE_EVENT_TABLE() -}; - -//----------------------------------------------------------------------------- -// wxMDIChildFrame -//----------------------------------------------------------------------------- - -class wxMDIChildFrame: public wxFrame -{ - DECLARE_DYNAMIC_CLASS(wxMDIChildFrame) - - public: - - wxMDIChildFrame(void); - wxMDIChildFrame( wxMDIParentFrame *parent, - wxWindowID id, const wxString& title, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE, const wxString& name = wxFrameNameStr ); - ~wxMDIChildFrame(void); - bool Create( wxMDIParentFrame *parent, - wxWindowID id, const wxString& title, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE, const wxString& name = wxFrameNameStr ); - - virtual void SetMenuBar( wxMenuBar *menu_bar ); - virtual wxMenuBar *GetMenuBar(); - - virtual void GetClientSize( int *width, int *height ) const; - virtual void AddChild( wxWindow *child ); - - virtual void Activate(void); - - // no status bars - virtual wxStatusBar* CreateStatusBar( int WXUNUSED(number)=1, long WXUNUSED(style)=1, - wxWindowID WXUNUSED(id)=1, const wxString& WXUNUSED(name)=WXSTRINGCAST NULL ) {return (wxStatusBar*)NULL; } - virtual wxStatusBar *GetStatusBar() { return (wxStatusBar*)NULL; } - virtual void SetStatusText( const wxString &WXUNUSED(text), int WXUNUSED(number) ) {} - virtual void SetStatusWidths( int WXUNUSED(n), int *WXUNUSED(width) ) {} - - // no size hints - virtual void SetSizeHints( int WXUNUSED(minW), int WXUNUSED(minH), int WXUNUSED(maxW), - int WXUNUSED(maxH), int WXUNUSED(incW) ) {} - - // no toolbar bars - virtual wxToolBar* CreateToolBar( long WXUNUSED(style), wxWindowID WXUNUSED(id), - const wxString& WXUNUSED(name) ) { return (wxToolBar*)NULL; } - virtual wxToolBar *GetToolBar() { return (wxToolBar*)NULL; } - - // no icon - void SetIcon( const wxIcon &icon ) { m_icon = icon; } - - // no title - void SetTitle( const wxString &title ) { m_title = title; } - wxString GetTitle() const { return m_title; } - - // no maximize etc - virtual void Maximize(void) {} - virtual void Restore(void) {} - - void OnActivate( wxActivateEvent &event ); - - public: - - wxMenuBar *m_menuBar; - -// private: - - GtkNotebookPage *m_page; - - DECLARE_EVENT_TABLE() -}; - -//----------------------------------------------------------------------------- -// wxMDIClientWindow -//----------------------------------------------------------------------------- - -class wxMDIClientWindow: public wxWindow -{ - DECLARE_DYNAMIC_CLASS(wxMDIClientWindow) - - public: - - wxMDIClientWindow(void); - wxMDIClientWindow( wxMDIParentFrame *parent, long style = 0 ); - ~wxMDIClientWindow(void); - virtual bool CreateClient( wxMDIParentFrame *parent, long style = wxVSCROLL | wxHSCROLL ); -}; - -#endif // __MDIH__ - diff --git a/include/wx/gtk/menu.h b/include/wx/gtk/menu.h deleted file mode 100644 index 860e0b8d14..0000000000 --- a/include/wx/gtk/menu.h +++ /dev/null @@ -1,146 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: menu.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling, Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKMENUH__ -#define __GTKMENUH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/list.h" -#include "wx/window.h" -#include "wx/menuitem.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxMenuBar; -class wxMenuItem; -class wxMenu; - -//----------------------------------------------------------------------------- -// const -//----------------------------------------------------------------------------- - -#define ID_SEPARATOR (-1) - -//----------------------------------------------------------------------------- -// wxMenuBar -//----------------------------------------------------------------------------- - -class wxMenuBar: public wxWindow -{ -DECLARE_DYNAMIC_CLASS(wxMenuBar) - -public: - wxMenuBar(); - void Append( wxMenu *menu, const wxString &title ); - - int FindMenuItem( const wxString &menuString, const wxString &itemString ) const; - wxMenuItem* FindMenuItemById( int id ) const; - inline wxMenuItem* FindItemForId( int id ) const - { return FindMenuItemById( id ); } - - void Check( int id, bool check ); - bool Checked( int id ) const; - void Enable( int id, bool enable ); - bool Enabled( int id ) const; - inline bool IsEnabled(int Id) const { return Enabled(Id); } - inline bool IsChecked(int Id) const { return Checked(Id); } - - wxString GetLabel( int id ) const; - void SetLabel( int id, const wxString &label ); - - void EnableTop( int pos, bool flag ); - void SetLabelTop( int pos, const wxString& label ); - wxString GetLabelTop( int pos ) const; - - int GetMenuCount() const { return m_menus.Number(); } - wxMenu *GetMenu(int n) const { return (wxMenu *)m_menus.Nth(n)->Data(); } - - wxList m_menus; - GtkWidget *m_menubar; -}; - -//----------------------------------------------------------------------------- -// wxMenu -//----------------------------------------------------------------------------- - -class wxMenu: public wxEvtHandler -{ -DECLARE_DYNAMIC_CLASS(wxMenu) - -public: - // construction - wxMenu( const wxString& title = wxEmptyString, const wxFunction func = (wxFunction) NULL ); - - // operations - // title - void SetTitle(const wxString& label); - const wxString GetTitle() const; - // menu creation - void AppendSeparator(); - void Append(int id, const wxString &item, - const wxString &helpStr = "", bool checkable = FALSE); - void Append(int id, const wxString &item, - wxMenu *subMenu, const wxString &helpStr = "" ); - void Break() {}; - - // find item by name/id - int FindItem( const wxString itemString ) const; - wxMenuItem *FindItem( int id ) const; - wxMenuItem *FindItemForId( int id ) const { return FindItem( id ); } - - // get/set item's state - void Enable( int id, bool enable ); - bool IsEnabled( int id ) const; - void Check( int id, bool check ); - bool IsChecked( int id ) const; - - void SetLabel( int id, const wxString &label ); - wxString GetLabel( int id ) const; - - // helpstring - virtual void SetHelpString(int id, const wxString& helpString); - virtual wxString GetHelpString(int id) const ; - - // accessors - wxList& GetItems() { return m_items; } - - inline void Callback(const wxFunction func) { m_callback = func; } - - inline void SetEventHandler(wxEvtHandler *handler) { m_eventHandler = handler; } - inline wxEvtHandler *GetEventHandler() { return m_eventHandler; } - - inline void SetClientData( void* clientData ) { m_clientData = clientData; } - inline void* GetClientData() const { return m_clientData; } - -// implementation - - int FindMenuIdByMenuItem( GtkWidget *menuItem ) const; - void SetInvokingWindow( wxWindow *win ); - wxWindow *GetInvokingWindow(); - - wxString m_title; - wxList m_items; - wxWindow *m_invokingWindow; - wxFunction m_callback; - wxEvtHandler *m_eventHandler; - void *m_clientData; - - GtkWidget *m_menu; // GtkMenu - GtkWidget *m_owner; -}; - -#endif // __GTKMENUH__ diff --git a/include/wx/gtk/menuitem.h b/include/wx/gtk/menuitem.h deleted file mode 100644 index 446498063b..0000000000 --- a/include/wx/gtk/menuitem.h +++ /dev/null @@ -1,92 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: menuitem.h -// Purpose: wxMenuItem class -// Author: Robert Roebling -// RCS-ID: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows license -/////////////////////////////////////////////////////////////////////////////// - -#ifndef __GTKMENUITEMH__ -#define __GTKMENUITEMH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/string.h" - -// ---------------------------------------------------------------------------- -// constants -// ---------------------------------------------------------------------------- - -#define ID_SEPARATOR (-1) - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxMenuItem; - -class wxMenu; - -//----------------------------------------------------------------------------- -// wxMenuItem -//----------------------------------------------------------------------------- - -class wxMenuItem: public wxObject -{ -DECLARE_DYNAMIC_CLASS(wxMenuItem) - -public: - wxMenuItem(); - - // accessors - // id - void SetId(int id) { m_id = id; } - int GetId() const { return m_id; } - bool IsSeparator() const { return m_id == ID_SEPARATOR; } - - // the item's text = name - void SetName(const wxString& str); - void SetText(const wxString& str) { SetName(str); } // compatibility - const wxString& GetName() const { return m_text; } - const wxString& GetText() const { return GetName(); } - - // what kind of menu item we are - void SetCheckable(bool checkable) { m_isCheckMenu = checkable; } - bool IsCheckable() const { return m_isCheckMenu; } - void SetSubMenu(wxMenu *menu) { m_subMenu = menu; } - wxMenu *GetSubMenu() const { return m_subMenu; } - bool IsSubMenu() const { return m_subMenu != NULL; } - - // state - void Enable( bool enable = TRUE ); - bool IsEnabled() const { return m_isEnabled; } - void Check( bool check = TRUE ); - bool IsChecked() const; - - // help string (displayed in the status bar by default) - void SetHelp(const wxString& str) { m_helpStr = str; } - const wxString& GetHelp() const { return m_helpStr; } - - // implementation - - void SetMenuItem(GtkWidget *menuItem) { m_menuItem = menuItem; } - GtkWidget *GetMenuItem() const { return m_menuItem; } - - int m_id; - wxString m_text; - bool m_isCheckMenu; - bool m_isChecked; - bool m_isEnabled; - wxMenu *m_subMenu; - wxString m_helpStr; - - GtkWidget *m_menuItem; // GtkMenuItem -}; - - -#endif - //__GTKMENUITEMH__ diff --git a/include/wx/gtk/minifram.h b/include/wx/gtk/minifram.h deleted file mode 100644 index 9f1ebaa345..0000000000 --- a/include/wx/gtk/minifram.h +++ /dev/null @@ -1,69 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: minifram.h -// Purpose: wxMiniFrame class -// Author: Robert Roebling -// RCS-ID: $Id$ -// Copyright: (c) Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __GTKMINIFRAMEH__ -#define __GTKMINIFRAMEH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/frame.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxMiniFrame; - -//----------------------------------------------------------------------------- -// wxMiniFrame -//----------------------------------------------------------------------------- - -class wxMiniFrame: public wxFrame -{ - DECLARE_DYNAMIC_CLASS(wxMiniFrame) - -public: - inline wxMiniFrame(void) {} - inline wxMiniFrame(wxWindow *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME|wxTINY_CAPTION_HORIZ, - const wxString& name = wxFrameNameStr) - { - Create(parent, id, title, pos, size, style, name); - } - bool Create(wxWindow *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME|wxTINY_CAPTION_HORIZ, - const wxString& name = wxFrameNameStr); - - // implementation - - bool m_isDragging; - int m_oldX,m_oldY; - int m_diffX,m_diffY; - - void DrawFrame( int x, int y ); - void OnPaint( wxPaintEvent &event ); - void OnMouse( wxMouseEvent &event ); - - DECLARE_EVENT_TABLE() -}; - -#endif - // __GTKMINIFRAMEH__ diff --git a/include/wx/gtk/notebook.h b/include/wx/gtk/notebook.h deleted file mode 100644 index 1c2aa872b9..0000000000 --- a/include/wx/gtk/notebook.h +++ /dev/null @@ -1,200 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: notebook.h -// Purpose: wxNotebook class -// Author: Robert Roebling -// Modified by: -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Robert Roebling -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifndef __GTKNOTEBOOKH__ -#define __GTKNOTEBOOKH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/string.h" -#include "wx/control.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxImageList; -class wxNotebook; -class wxNotebookPage; - -// ---------------------------------------------------------------------------- -// notebook events -// ---------------------------------------------------------------------------- - -class wxNotebookEvent : public wxNotifyEvent -{ -public: - wxNotebookEvent(wxEventType commandType = wxEVT_NULL, int id = 0, - int nSel = -1, int nOldSel = -1) - : wxNotifyEvent(commandType, id) - { - m_bAllow = TRUE; - m_nSel = nSel; - m_nOldSel = nOldSel; - } - - // accessors - int GetSelection() const { return m_nSel; } - int GetOldSelection() const { return m_nOldSel; } - - // for wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING event this method may be called - // to disallow the page change - void Veto() { m_bAllow = FALSE; } - - // implementation: for wxNotebook usage only - bool Allowed() const { return m_bAllow; } - -private: - bool m_bAllow; - - int m_nSel, // currently selected page - m_nOldSel; // previously selected page - - DECLARE_DYNAMIC_CLASS(wxNotebookEvent) -}; - -//----------------------------------------------------------------------------- -// wxNotebook -//----------------------------------------------------------------------------- - -class wxNotebook : public wxControl -{ -public: - // ctors - // ----- - // default for dynamic class - wxNotebook(); - // the same arguments as for wxControl (@@@ any special styles?) - wxNotebook(wxWindow *parent, - wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = "notebook"); - // Create() function - bool Create(wxWindow *parent, - wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = "notebook"); - // dtor - ~wxNotebook(); - - // accessors - // --------- - // get number of pages in the dialog - int GetPageCount() const; - - // set the currently selected page, return the index of the previously - // selected one (or -1 on error) - // NB: this function will _not_ generate wxEVT_NOTEBOOK_PAGE_xxx events - int SetSelection(int nPage); - // cycle thru the tabs - void AdvanceSelection(bool bForward = TRUE); - // get the currently selected page - int GetSelection() const; - - // set/get the title of a page - bool SetPageText(int nPage, const wxString& strText); - wxString GetPageText(int nPage) const; - - // image list stuff: each page may have an image associated with it. All - // the images belong to an image list, so you have to - // 1) create an image list - // 2) associate it with the notebook - // 3) set for each page it's image - // associate image list with a control - void SetImageList(wxImageList* imageList); - // get pointer (may be NULL) to the associated image list - wxImageList* GetImageList() const { return m_imageList; } - - // sets/returns item's image index in the current image list - int GetPageImage(int nPage) const; - bool SetPageImage(int nPage, int nImage); - - // currently it's always 1 because wxGTK doesn't support multi-row - // tab controls - int GetRowCount() const; - - // control the appearance of the notebook pages - // set the size (the same for all pages) - void SetPageSize(const wxSize& size); - // set the padding between tabs (in pixels) - void SetPadding(const wxSize& padding); - - // operations - // ---------- - // remove one page from the notebook but do not destroy it - bool RemovePage(int nPage); - // remove one page from the notebook - bool DeletePage(int nPage); - // remove all pages - bool DeleteAllPages(); - // adds a new page to the notebook (it will be deleted ny the notebook, - // don't delete it yourself). If bSelect, this page becomes active. - bool AddPage(wxWindow *pPage, - const wxString& strText, - bool select = FALSE, - int imageId = -1); - // @@@@ VZ: I don't know how to implement InsertPage() - - // get the panel which represents the given page - wxWindow *GetPage(int nPage) const; - - - // implementation - - void SetConstraintSizes(bool recurse); - bool DoPhase(int phase); - void ApplyWidgetStyle(); - - // common part of all ctors - void Init(); - - // helper function - wxNotebookPage* GetNotebookPage(int page) const; - - wxImageList* m_imageList; - wxList m_pages; - size_t m_idHandler; // the change page handler id - - DECLARE_DYNAMIC_CLASS(wxNotebook) -}; - -// ---------------------------------------------------------------------------- -// event macros -// ---------------------------------------------------------------------------- -typedef void (wxEvtHandler::*wxNotebookEventFunction)(wxNotebookEvent&); - -#define EVT_NOTEBOOK_PAGE_CHANGED(id, fn) \ - { \ - wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED, \ - id, \ - -1, \ - (wxObjectEventFunction)(wxEventFunction)(wxNotebookEventFunction) &fn, \ - NULL \ - }, - -#define EVT_NOTEBOOK_PAGE_CHANGING(id, fn) \ - { \ - wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING, \ - id, \ - -1, \ - (wxObjectEventFunction)(wxEventFunction)(wxNotebookEventFunction) &fn, \ - NULL \ - }, - -#endif - // __GTKNOTEBOOKH__ diff --git a/include/wx/gtk/palette.h b/include/wx/gtk/palette.h deleted file mode 100644 index 8574526cb3..0000000000 --- a/include/wx/gtk/palette.h +++ /dev/null @@ -1,59 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: palette.h -// Purpose: -// Author: Robert Roebling -// Created: 01/02/97 -// Id: -// Copyright: (c) 1998 Robert Roebling, Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKPALETTEH__ -#define __GTKPALETTEH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/gdiobj.h" -#include "wx/gdicmn.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxPalette; - -//----------------------------------------------------------------------------- -// wxPalette -//----------------------------------------------------------------------------- - -class wxPalette: public wxGDIObject -{ - DECLARE_DYNAMIC_CLASS(wxPalette) - - public: - - wxPalette(); - wxPalette( int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue ); - wxPalette( const wxPalette& palette ); - ~wxPalette(); - wxPalette& operator = ( const wxPalette& palette ); - bool operator == ( const wxPalette& palette ); - bool operator != ( const wxPalette& palette ); - bool Ok() const; - - bool Create( int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue); - int GetPixel( const unsigned char red, const unsigned char green, const unsigned char blue ) const; - bool GetRGB( int pixel, unsigned char *red, unsigned char *green, unsigned char *blue ) const; - - // no data -}; - -#define wxColorMap wxPalette -#define wxColourMap wxPalette - -#endif // __GTKPALETTEH__ diff --git a/include/wx/gtk/pen.h b/include/wx/gtk/pen.h deleted file mode 100644 index fb37103370..0000000000 --- a/include/wx/gtk/pen.h +++ /dev/null @@ -1,66 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: pen.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKPENH__ -#define __GTKPENH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/string.h" -#include "wx/gdiobj.h" -#include "wx/gdicmn.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxPen; - -//----------------------------------------------------------------------------- -// wxPen -//----------------------------------------------------------------------------- - -class wxPen: public wxGDIObject -{ - DECLARE_DYNAMIC_CLASS(wxPen) - - public: - - wxPen(); - wxPen( const wxColour &colour, int width, int style ); - wxPen( const wxPen& pen ); - ~wxPen(); - wxPen& operator = ( const wxPen& pen ); - bool operator == ( const wxPen& pen ); - bool operator != ( const wxPen& pen ); - - void SetColour( const wxColour &colour ); - void SetColour( int red, int green, int blue ); - void SetCap( int capStyle ); - void SetJoin( int joinStyle ); - void SetStyle( int style ); - void SetWidth( int width ); - wxColour &GetColour() const; - int GetCap() const; - int GetJoin() const; - int GetStyle() const; - int GetWidth() const; - bool Ok() const; - - void Unshare(); - - // no data :-) -}; - -#endif // __GTKPENH__ diff --git a/include/wx/gtk/radiobox.h b/include/wx/gtk/radiobox.h deleted file mode 100644 index 09b518b732..0000000000 --- a/include/wx/gtk/radiobox.h +++ /dev/null @@ -1,98 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: radiobox.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKRADIOBOXH__ -#define __GTKRADIOBOXH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/list.h" -#include "wx/control.h" -#include "wx/bitmap.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxRadioBox; - -//----------------------------------------------------------------------------- -// global data -//----------------------------------------------------------------------------- - -extern const char *wxRadioBoxNameStr; - -//----------------------------------------------------------------------------- -// wxRadioBox -//----------------------------------------------------------------------------- - -class wxRadioBox: public wxControl -{ - - DECLARE_DYNAMIC_CLASS(wxRadioBox) - - public: - - wxRadioBox(void); - inline wxRadioBox( wxWindow *parent, wxWindowID id, const wxString& title, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = (const wxString *) NULL, - int majorDim = 0, long style = wxRA_HORIZONTAL, - const wxValidator& val = wxDefaultValidator, - const wxString& name = wxRadioBoxNameStr ) - { - Create( parent, id, title, pos, size, n, choices, majorDim, style, val, name ); - } - ~wxRadioBox(void); - bool Create( wxWindow *parent, wxWindowID id, const wxString& title, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = (const wxString *) NULL, - int majorDim = 0, long style = wxRA_HORIZONTAL, - const wxValidator& val = wxDefaultValidator, - const wxString& name = wxRadioBoxNameStr ); - int FindString( const wxString& s) const; - void SetSelection( int n ); - int GetSelection(void) const; - wxString GetString( int n ) const; - void SetLabel( const wxString& label ); - void SetLabel( int item, const wxString& label ); - void SetLabel( int item, wxBitmap *bitmap ); - wxString GetLabel( int item ) const; - bool Show( bool show ); - void Enable( bool enable ); - void Enable( int item, bool enable ); - void Show( int item, bool show ); - virtual wxString GetStringSelection(void) const; - virtual bool SetStringSelection( const wxString& s ); - virtual int Number(void) const; - int GetNumberOfRowsOrCols(void) const; - void SetNumberOfRowsOrCols( int n ); - - void OnSize( wxSizeEvent &event ); - void SetFocus(); - - // implementation - - bool IsOwnGtkWindow( GdkWindow *window ); - void ApplyWidgetStyle(); - wxSize LayoutItems(); - - bool m_alreadySent; - int m_majorDim; - wxList m_boxes; - - DECLARE_EVENT_TABLE() -}; - -#endif // __GTKRADIOBOXH__ diff --git a/include/wx/gtk/radiobut.h b/include/wx/gtk/radiobut.h deleted file mode 100644 index 9a00ea810c..0000000000 --- a/include/wx/gtk/radiobut.h +++ /dev/null @@ -1,73 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: radiobut.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKRADIOBUTTONH__ -#define __GTKRADIOBUTTONH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/list.h" -#include "wx/control.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxRadioButton; - -//----------------------------------------------------------------------------- -// data -//----------------------------------------------------------------------------- - -extern const char* wxRadioButtonNameStr; - -//----------------------------------------------------------------------------- -// wxRadioButton -//----------------------------------------------------------------------------- - -class wxRadioButton: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxRadioButton) - - public: - inline wxRadioButton(void) {} - inline wxRadioButton( wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxRadioButtonNameStr ) - { - Create( parent, id, label, pos, size, style, validator, name ); - } - bool Create(wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxRadioButtonNameStr ); - virtual void SetLabel(const wxString& label); - virtual void SetValue(bool val); - virtual bool GetValue(void) const; - void Enable( bool enable ); - - // implementation - - void ApplyWidgetStyle(); - - bool m_blockFirstEvent; - GtkWidget* m_theOtherRadioButtton; -}; - -#endif // __GTKRADIOBUTTONH__ diff --git a/include/wx/gtk/region.h b/include/wx/gtk/region.h deleted file mode 100644 index b61066a208..0000000000 --- a/include/wx/gtk/region.h +++ /dev/null @@ -1,137 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: region.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __REGIONH__ -#define __REGIONH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/list.h" -#include "wx/gdiobj.h" -#include "wx/gdicmn.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxRegion; - -//----------------------------------------------------------------------------- -// constants -//----------------------------------------------------------------------------- - -enum wxRegionContain -{ - wxOutRegion = 0, wxPartRegion = 1, wxInRegion = 2 -}; - -// So far, for internal use only -enum wxRegionOp { -wxRGN_AND, // Creates the intersection of the two combined regions. -wxRGN_COPY, // Creates a copy of the region identified by hrgnSrc1. -wxRGN_DIFF, // Combines the parts of hrgnSrc1 that are not part of hrgnSrc2. -wxRGN_OR, // Creates the union of two combined regions. -wxRGN_XOR // Creates the union of two combined regions except for any overlapping areas. -}; - -//----------------------------------------------------------------------------- -// wxRegion -//----------------------------------------------------------------------------- - -class wxRegion : public wxGDIObject -{ - DECLARE_DYNAMIC_CLASS(wxRegion); - - public: - - wxRegion( long x, long y, long w, long h ); - wxRegion( const wxPoint& topLeft, const wxPoint& bottomRight ); - wxRegion( const wxRect& rect ); - wxRegion(void); - ~wxRegion(void); - - inline wxRegion( const wxRegion& r ): wxGDIObject() - { Ref(r); } - inline wxRegion& operator = ( const wxRegion& r ) - { Ref(r); return (*this); } - - bool operator == ( const wxRegion& region ); - bool operator != ( const wxRegion& region ); - - void Clear(void); - - bool Union( long x, long y, long width, long height ); - bool Union( const wxRect& rect ); - bool Union( const wxRegion& region ); - - bool Intersect( long x, long y, long width, long height ); - bool Intersect( const wxRect& rect ); - bool Intersect( const wxRegion& region ); - - bool Subtract( long x, long y, long width, long height ); - bool Subtract( const wxRect& rect ); - bool Subtract( const wxRegion& region ); - - bool Xor( long x, long y, long width, long height ); - bool Xor( const wxRect& rect ); - bool Xor( const wxRegion& region ); - - void GetBox( long& x, long& y, long&w, long &h ) const; - wxRect GetBox(void) const ; - - bool Empty(void) const; - - wxRegionContain Contains( long x, long y ) const; - wxRegionContain Contains( long x, long y, long w, long h ) const; - wxRegionContain Contains(const wxPoint& pt) const; - wxRegionContain Contains(const wxRect& rect) const; - - public: - - wxList *GetRectList() const; - GdkRegion *GetRegion(void) const; -}; - -class wxRegionIterator: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxRegionIterator); - - public: - - wxRegionIterator(void); - wxRegionIterator(const wxRegion& region); - - void Reset(void) { m_current = 0; } - void Reset(const wxRegion& region); - - operator bool (void) const; - bool HaveRects(void) const; - - void operator ++ (void); - void operator ++ (int); - - long GetX(void) const; - long GetY(void) const; - long GetW(void) const; - long GetWidth(void) const { return GetW(); } - long GetH(void) const; - long GetHeight(void) const { return GetH(); } - wxRect GetRect() const { return wxRect(GetX(), GetY(), GetWidth(), GetHeight()); } - - private: - - long m_current; - wxRegion m_region; -}; - - -#endif - // __REGIONH__ diff --git a/include/wx/gtk/scrolbar.h b/include/wx/gtk/scrolbar.h deleted file mode 100644 index 98a3da43b1..0000000000 --- a/include/wx/gtk/scrolbar.h +++ /dev/null @@ -1,90 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: scrolbar.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKSCROLLBARH__ -#define __GTKSCROLLBARH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/control.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxScrollBar; - -//----------------------------------------------------------------------------- -// global data -//----------------------------------------------------------------------------- - -extern const char *wxScrollBarNameStr; - -//----------------------------------------------------------------------------- -// wxScrollBar -//----------------------------------------------------------------------------- - -class wxScrollBar: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxScrollBar) - - public: - - wxScrollBar(void) { m_adjust = (GtkAdjustment *) NULL; m_oldPos = 0.0; }; - inline wxScrollBar( wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxSB_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxScrollBarNameStr ) - { - Create( parent, id, pos, size, style, validator, name ); - } - bool Create( wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxSB_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxScrollBarNameStr ); - ~wxScrollBar(void); - int GetThumbPosition(void) const; - int GetThumbSize() const; - int GetPageSize() const; - int GetRange() const; - virtual void SetThumbPosition( int viewStart ); - virtual void SetScrollbar( int position, int thumbSize, int range, int pageSize, - bool refresh = TRUE ); - - // Backward compatibility - - int GetValue(void) const; - void SetValue( int viewStart ); - void GetValues( int *viewStart, int *viewLength, int *objectLength, int *pageLength) const; - int GetViewLength() const; - int GetObjectLength() const; - void SetPageSize( int pageLength ); - void SetObjectLength( int objectLength ); - void SetViewLength( int viewLength ); - - // implementation - - bool IsOwnGtkWindow( GdkWindow *window ); - void ApplyWidgetStyle(); - - GtkAdjustment *m_adjust; - float m_oldPos; -}; - -#endif - // __GTKSCROLLBARH__ diff --git a/include/wx/gtk/settings.h b/include/wx/gtk/settings.h deleted file mode 100644 index 9e7db68bcd..0000000000 --- a/include/wx/gtk/settings.h +++ /dev/null @@ -1,41 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: settings.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __GTKSETTINGSH__ -#define __GTKSETTINGSH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/gdicmn.h" -#include "wx/pen.h" -#include "wx/font.h" - -class wxSystemSettings: public wxObject -{ -public: - inline wxSystemSettings() {} - - inline static void Init() {} - static void Done(); - - // Get a system colour - static wxColour GetSystemColour(int index); - - // Get a system font - static wxFont GetSystemFont(int index); - - // Get a system metric, e.g. scrollbar size - static int GetSystemMetric(int index); -}; - -#endif - // __GTKSETTINGSH__ diff --git a/include/wx/gtk/slider.h b/include/wx/gtk/slider.h deleted file mode 100644 index 1e2714065a..0000000000 --- a/include/wx/gtk/slider.h +++ /dev/null @@ -1,92 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: slider.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling, Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __GTKSLIDERH__ -#define __GTKSLIDERH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/list.h" -#include "wx/control.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxSlider; - -//----------------------------------------------------------------------------- -// global data -//----------------------------------------------------------------------------- - -extern const char *wxSliderNameStr; - -//----------------------------------------------------------------------------- -// wxSlider -//----------------------------------------------------------------------------- - -class wxSlider: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxSlider) - - public: - wxSlider(void); - inline wxSlider( wxWindow *parent, wxWindowID id, - int value, int minValue, int maxValue, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxSL_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxSliderNameStr ) - { - Create( parent, id, value, minValue, maxValue, pos, size, style, validator, name ); - } - ~wxSlider(void); - bool Create(wxWindow *parent, wxWindowID id, - int value, int minValue, int maxValue, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxSL_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxSliderNameStr ); - virtual int GetValue(void) const; - virtual void SetValue( int ); - void SetRange( int minValue, int maxValue ); - int GetMin(void) const; - int GetMax(void) const; - void SetTickFreq( int n, int pos ); - int GetTickFreq(void) const; - void SetPageSize( int pageSize ); - int GetPageSize(void) const; - void ClearSel(void); - void ClearTicks(void); - void SetLineSize( int lineSize ); - int GetLineSize(void) const; - int GetSelEnd(void) const; - int GetSelStart(void) const; - void SetSelection( int minPos, int maxPos ); - void SetThumbLength( int len ); - int GetThumbLength(void) const; - void SetTick( int tickPos ); - - // implementation - - bool IsOwnGtkWindow( GdkWindow *window ); - void ApplyWidgetStyle(); - - GtkAdjustment *m_adjust; - float m_oldPos; - -}; - -#endif // __GTKSLIDERH__ diff --git a/include/wx/gtk/spinbutt.h b/include/wx/gtk/spinbutt.h deleted file mode 100644 index 4192465863..0000000000 --- a/include/wx/gtk/spinbutt.h +++ /dev/null @@ -1,98 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: spinbutt.h -// Purpose: wxSpinButton class -// Author: Robert Roebling -// Modified by: -// RCS-ID: $Id$ -// Copyright: (c) Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __GTKSPINPUTTH__ -#define __GTKSPINBUTTH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/control.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxSpinButton; -class wxSpinEvent; - -//----------------------------------------------------------------------------- -// wxSpinButton -//----------------------------------------------------------------------------- - -class wxSpinButton : public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxSpinButton) - -public: - wxSpinButton(); - inline wxSpinButton( wxWindow *parent, wxWindowID id = -1, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxSP_VERTICAL, const wxString& name = "wxSpinButton") - { - Create(parent, id, pos, size, style, name); - } - ~wxSpinButton(); - bool Create( wxWindow *parent, wxWindowID id = -1, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxSP_VERTICAL, const wxString& name = "wxSpinButton" ); - - int GetValue() const; - void SetValue( int value ); - void SetRange( int minVal, int maxVal ); - int GetMin() const; - int GetMax() const; - -// implementation - - void OnSize( wxSizeEvent &event ); - - bool IsOwnGtkWindow( GdkWindow *window ); - void ApplyWidgetStyle(); - - GtkAdjustment *m_adjust; - float m_oldPos; - - DECLARE_EVENT_TABLE(); -}; - -//----------------------------------------------------------------------------- -// wxSpinEvent -//----------------------------------------------------------------------------- - -class wxSpinEvent : public wxScrollEvent -{ - DECLARE_DYNAMIC_CLASS(wxSpinEvent) - -public: - wxSpinEvent(wxEventType commandType = wxEVT_NULL, int id = 0); -}; - -typedef void (wxEvtHandler::*wxSpinEventFunction)(wxSpinEvent&); - -// Spin events - -#define EVT_SPIN_UP(id, func) { wxEVT_SCROLL_LINEUP, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func } -#define EVT_SPIN_DOWN(id, func) { wxEVT_SCROLL_LINEDOWN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func } - -#define EVT_SPIN(id, func) \ - { wxEVT_SCROLL_TOP, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func },\ - { wxEVT_SCROLL_BOTTOM, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func },\ - { wxEVT_SCROLL_LINEUP, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func },\ - { wxEVT_SCROLL_LINEDOWN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func },\ - { wxEVT_SCROLL_PAGEUP, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func },\ - { wxEVT_SCROLL_PAGEDOWN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func },\ - { wxEVT_SCROLL_THUMBTRACK, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func }, - -#endif - // __GTKSPINBUTTH__ diff --git a/include/wx/gtk/statbmp.h b/include/wx/gtk/statbmp.h deleted file mode 100644 index ab6e7c331d..0000000000 --- a/include/wx/gtk/statbmp.h +++ /dev/null @@ -1,60 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: statbmp.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKSTATICBITMAPH__ -#define __GTKSTATICBITMAPH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/control.h" -#include "wx/bitmap.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxStaticBitmap; - -//----------------------------------------------------------------------------- -// global data -//----------------------------------------------------------------------------- - -extern const char* wxStaticBitmapNameStr; - -//----------------------------------------------------------------------------- -// wxStaticBitmap -//----------------------------------------------------------------------------- - -class wxStaticBitmap: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxStaticBitmap) - - public: - - wxStaticBitmap(void); - wxStaticBitmap( wxWindow *parent, wxWindowID id, const wxBitmap& label, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = 0, const wxString& name = wxStaticBitmapNameStr ); - bool Create( wxWindow *parent, wxWindowID id, const wxBitmap& label, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = 0, const wxString& name = wxStaticBitmapNameStr); - virtual void SetBitmap( const wxBitmap& bitmap ); - wxBitmap& GetBitmap(void) const { return (wxBitmap&)m_bitmap; } - - private: - - wxBitmap m_bitmap; -}; - -#endif // __GTKSTATICBITMAPH__ diff --git a/include/wx/gtk/statbox.h b/include/wx/gtk/statbox.h deleted file mode 100644 index 7d827c0d4b..0000000000 --- a/include/wx/gtk/statbox.h +++ /dev/null @@ -1,59 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: stabox.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKSTATICBOXH__ -#define __GTKSTATICBOXH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/list.h" -#include "wx/control.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxStaticBox; - -//----------------------------------------------------------------------------- -// global data -//----------------------------------------------------------------------------- - -extern const char *wxStaticBoxNameStr; - -//----------------------------------------------------------------------------- -// wxStaticBox -//----------------------------------------------------------------------------- - -class wxStaticBox: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxStaticBox) - - public: - - wxStaticBox(void); - wxStaticBox( wxWindow *parent, wxWindowID id, const wxString &label, - const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, - long style = 0, const wxString &name = wxStaticBoxNameStr ); - bool Create( wxWindow *parent, wxWindowID id, const wxString &label, - const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, - long style = 0, const wxString &name = wxStaticBoxNameStr ); - void SetLabel( const wxString &label ); - - // implementation - - void ApplyWidgetStyle(); -}; - -#endif // __GTKSTATICBOXH__ diff --git a/include/wx/gtk/stattext.h b/include/wx/gtk/stattext.h deleted file mode 100644 index 1febeb3139..0000000000 --- a/include/wx/gtk/stattext.h +++ /dev/null @@ -1,60 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: stattext.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKSTATICTEXTH__ -#define __GTKSTATICTEXTH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/list.h" -#include "wx/control.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxStaticText; - -//----------------------------------------------------------------------------- -// global data -//----------------------------------------------------------------------------- - -extern const char *wxStaticTextNameStr; - -//----------------------------------------------------------------------------- -// wxStaticText -//----------------------------------------------------------------------------- - -class wxStaticText: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxStaticText) - - public: - - wxStaticText(void); - wxStaticText( wxWindow *parent, wxWindowID id, const wxString &label, - const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, - long style = 0, const wxString &name = wxStaticTextNameStr ); - bool Create( wxWindow *parent, wxWindowID id, const wxString &label, - const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, - long style = 0, const wxString &name = wxStaticTextNameStr ); - wxString GetLabel(void) const; - void SetLabel( const wxString &label ); - - // implementation - - void ApplyWidgetStyle(); -}; - -#endif // __GTKSTATICTEXTH__ diff --git a/include/wx/gtk/tbargtk.h b/include/wx/gtk/tbargtk.h deleted file mode 100644 index 7a864d8d40..0000000000 --- a/include/wx/gtk/tbargtk.h +++ /dev/null @@ -1,156 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: tbargtk.h -// Purpose: GTK toolbar -// Author: Robert Roebling -// RCS-ID: $Id$ -// Copyright: (c) Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __TBARGTKH__ -#define __TBARGTKH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/control.h" -#include "wx/bitmap.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxToolBarTool; -class wxToolBar; - -//----------------------------------------------------------------------------- -// constants -//----------------------------------------------------------------------------- - -#define wxTOOL_STYLE_BUTTON 1 -#define wxTOOL_STYLE_SEPARATOR 2 - -//----------------------------------------------------------------------------- -// global data -//----------------------------------------------------------------------------- - -extern const char *wxToolBarNameStr; - -//----------------------------------------------------------------------------- -// wxToolBarTool -//----------------------------------------------------------------------------- - -class wxToolBarTool: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxToolBarTool) - - public: - - wxToolBarTool(void) {}; - wxToolBarTool( wxToolBar *owner, int theIndex = 0, - const wxBitmap& bitmap1 = wxNullBitmap, const wxBitmap& bitmap2 = wxNullBitmap, - bool toggle = FALSE, wxObject *clientData = (wxObject *) NULL, - const wxString& shortHelpString = "", const wxString& longHelpString = "", - GtkWidget *item = (GtkWidget *) NULL ); - ~wxToolBarTool(void); - - public: - - int m_toolStyle; - wxObject *m_clientData; - int m_index; - bool m_toggleState; - bool m_isToggle; - bool m_deleteSecondBitmap; - bool m_enabled; - wxBitmap m_bitmap1; - wxBitmap m_bitmap2; - bool m_isMenuCommand; - wxString m_shortHelpString; - wxString m_longHelpString; - wxToolBar *m_owner; - GtkWidget *m_item; -}; - -//----------------------------------------------------------------------------- -// wxToolBar -//----------------------------------------------------------------------------- - -class wxToolBar: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxToolBar) - - public: - - wxToolBar(void); - wxToolBar( wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = 0, const wxString& name = wxToolBarNameStr ); - ~wxToolBar(void); - - bool Create( wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = 0, const wxString& name = wxToolBarNameStr); - - // Only allow toggle if returns TRUE. Call when left button up. - virtual bool OnLeftClick(int toolIndex, bool toggleDown); - - // Call when right button down. - virtual void OnRightClick(int toolIndex, float x, float y); - - // Called when the mouse cursor enters a tool bitmap. - // Argument is -1 if mouse is exiting the toolbar. - virtual void OnMouseEnter(int toolIndex); - - // If pushedBitmap is NULL, a reversed version of bitmap is - // created and used as the pushed/toggled image. - // If toggle is TRUE, the button toggles between the two states. - virtual wxToolBarTool *AddTool( int toolIndex, const wxBitmap& bitmap, - const wxBitmap& pushedBitmap = wxNullBitmap, bool toggle = FALSE, - float xPos = -1, float yPos = -1, wxObject *clientData = (wxObject *)NULL, - const wxString& helpString1 = "", const wxString& helpString2 = ""); - virtual void AddSeparator(void); - virtual void ClearTools(void); - - virtual bool Realize(void); - - virtual void EnableTool(int toolIndex, bool enable); - virtual void ToggleTool(int toolIndex, bool toggle); // toggle is TRUE if toggled on - virtual wxObject *GetToolClientData(int index) const; - - virtual bool GetToolState(int toolIndex) const; - virtual bool GetToolEnabled(int toolIndex) const; - - virtual void SetMargins(int x, int y); - void SetMargins(const wxSize& size) { SetMargins(size.x, size.y); }; - virtual wxSize GetToolMargins(void) { return wxSize(m_xMargin, m_yMargin); } - - virtual void SetToolPacking(int packing); - virtual void SetToolSeparation(int separation); - virtual int GetToolPacking(); - virtual int GetToolSeparation(); - - virtual wxString GetToolLongHelp(int toolIndex); - virtual wxString GetToolShortHelp(int toolIndex); - - virtual void SetToolLongHelp(int toolIndex, const wxString& helpString); - virtual void SetToolShortHelp(int toolIndex, const wxString& helpString); - - // implementation - - GtkToolbar *m_toolbar; - int m_separation; - wxList m_tools; - - GdkColor *m_fg; - GdkColor *m_bg; - int m_xMargin; - int m_yMargin; - bool m_hasToolAlready; -}; - -#endif - // __TBARGTKH__ - diff --git a/include/wx/gtk/textctrl.h b/include/wx/gtk/textctrl.h deleted file mode 100644 index da978601d1..0000000000 --- a/include/wx/gtk/textctrl.h +++ /dev/null @@ -1,138 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: textctrl.h -// Purpose: -// Author: Robert Roebling -// Created: 01/02/97 -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling, Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKTEXTCTRLH__ -#define __GTKTEXTCTRLH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/string.h" -#include "wx/control.h" - -#if wxUSE_STD_IOSTREAM - -#if wxUSE_IOSTREAMH -#include -#else -#include -#endif - -#else - -#define NO_TEXT_WINDOW_STREAM - -#endif - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxTextCtrl; - -//----------------------------------------------------------------------------- -// global data -//----------------------------------------------------------------------------- - -extern const char *wxTextCtrlNameStr; - -//----------------------------------------------------------------------------- -// wxTextCtrl -//----------------------------------------------------------------------------- - -#ifndef NO_TEXT_WINDOW_STREAM -class wxTextCtrl: public wxControl, public streambuf -#else -class wxTextCtrl: public wxControl -#endif -{ - DECLARE_EVENT_TABLE() - DECLARE_DYNAMIC_CLASS(wxTextCtrl); - - public: - wxTextCtrl(); - wxTextCtrl( wxWindow *parent, wxWindowID id, const wxString &value = "", - const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, - int style = 0, const wxValidator& validator = wxDefaultValidator, - const wxString &name = wxTextCtrlNameStr ); - bool Create( wxWindow *parent, wxWindowID id, const wxString &value = "", - const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, - int style = 0, const wxValidator& validator = wxDefaultValidator, - const wxString &name = wxTextCtrlNameStr ); - wxString GetValue() const; - void SetValue( const wxString &value ); - void WriteText( const wxString &text ); - - bool LoadFile( const wxString &file ); - bool SaveFile( const wxString &file ); - bool IsModified() const { return m_modified; } - void SetModified() { m_modified = TRUE; } - void DiscardEdits() { m_modified = FALSE; } - wxString GetLineText( long lineNo ) const; - void OnDropFiles( wxDropFilesEvent &event ); - long PositionToXY( long pos, long *x, long *y ) const; - long XYToPosition( long x, long y ) const; - int GetLineLength(long lineNo) const; - int GetNumberOfLines() const; - virtual void SetInsertionPoint( long pos ); - virtual void SetInsertionPointEnd(); - virtual void SetEditable( bool editable ); - virtual void SetSelection( long from, long to ); - void ShowPosition( long pos ); - virtual long GetInsertionPoint() const; - virtual long GetLastPosition() const; - virtual void Remove( long from, long to ); - virtual void Replace( long from, long to, const wxString &value ); - void Cut(); - void Copy(); - void Paste(); - void Clear(); - - void OnChar( wxKeyEvent &event ); - -#ifndef NO_TEXT_WINDOW_STREAM - int overflow(int i); - int sync(); - int underflow(); - - wxTextCtrl& operator<<(const wxString& s); - wxTextCtrl& operator<<(int i); - wxTextCtrl& operator<<(long i); - wxTextCtrl& operator<<(float f); - wxTextCtrl& operator<<(double d); - wxTextCtrl& operator<<(const char c); -#endif - - void SetFont( const wxFont &font ); - void SetForegroundColour(const wxColour &colour); - void SetBackgroundColour(const wxColour &colour); - - // implementation - - GtkWidget* GetConnectWidget(); - bool IsOwnGtkWindow( GdkWindow *window ); - void ApplyWidgetStyle(); - void CalculateScrollbar(); - - private: - - bool m_modified; - GtkWidget *m_text; - GtkWidget *m_vScrollbar; - bool m_vScrollbarVisible; -}; - -#endif // __GTKTEXTCTRLH__ - - diff --git a/include/wx/gtk/timer.h b/include/wx/gtk/timer.h deleted file mode 100644 index ad3fbc619d..0000000000 --- a/include/wx/gtk/timer.h +++ /dev/null @@ -1,71 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: timer.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKTIMERH__ -#define __GTKTIMERH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" - -//----------------------------------------------------------------------------- -// derived classes -//----------------------------------------------------------------------------- - -class wxTimer; - -//----------------------------------------------------------------------------- -// global functions -//----------------------------------------------------------------------------- - -/* Timer functions (milliseconds) */ -void wxStartTimer(); - -/* Gets time since last wxStartTimer or wxGetElapsedTime */ -long wxGetElapsedTime(bool resetTimer = TRUE); - -/* EXPERIMENTAL: comment this out if it doesn't compile. */ -bool wxGetLocalTime(long *timeZone, int *dstObserved); - -/* Get number of seconds since 00:00:00 GMT, Jan 1st 1970. */ -long wxGetCurrentTime(); - -//----------------------------------------------------------------------------- -// wxTimer -//----------------------------------------------------------------------------- - -class wxTimer: public wxObject -{ -public: - wxTimer(); - ~wxTimer(); - - int Interval() const { return m_time; } - - bool OneShot() const { return m_oneShot; } - - virtual bool Start( int millisecs = -1, bool oneShot = FALSE ); - virtual void Stop(); - - virtual void Notify() = 0; // override this - -protected: - int m_tag; - int m_time; - bool m_oneShot; - -private: - DECLARE_ABSTRACT_CLASS(wxTimer) -}; - -#endif // __GTKTIMERH__ diff --git a/include/wx/gtk/tooltip.h b/include/wx/gtk/tooltip.h deleted file mode 100644 index a724074f56..0000000000 --- a/include/wx/gtk/tooltip.h +++ /dev/null @@ -1,55 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: tooltip.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling, Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __GTKTOOLTIPH__ -#define __GTKTOOLTIPH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/window.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxToolTip; - -//----------------------------------------------------------------------------- -// wxToolTip -//----------------------------------------------------------------------------- - -class wxToolTip: public wxObject -{ -public: - - wxToolTip( const wxString &tip ); - ~wxToolTip(); - - wxString GetTip(); - - void Enable( bool flag ); - void SetDelay( long msecs ); - bool Ok(); - - // implementation - - wxString m_text; - - GtkTooltips *m_tooltips; - GdkColor *m_bg; - GdkColor *m_fg; - - void Create( GtkWidget *tool ); -}; - -#endif // __GTKTOOLTIPH__ diff --git a/include/wx/gtk/treectrl.h b/include/wx/gtk/treectrl.h deleted file mode 100644 index 7598a25c5a..0000000000 --- a/include/wx/gtk/treectrl.h +++ /dev/null @@ -1,492 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: treectrl.h -// Purpose: wxTreeCtrl class -// Author: Denis Pershin -// Modified by: -// Created: 08/08/98 -// RCS-ID: $Id$ -// Copyright: (c) Denis Pershin -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_TREECTRL_H_ -#define _WX_TREECTRL_H_ - -#ifdef __GNUG__ -#pragma interface "treectrl.h" -#endif - -#include "wx/textctrl.h" -#include "wx/control.h" -#include "wx/event.h" -#include "wx/imaglist.h" - -#include - -// the type for "untyped" data -typedef long wxDataType; - -// fwd decl -class wxImageList; -struct wxTreeViewItem; - -// a callback function used for sorting tree items, it should return -1 if the -// first item precedes the second, +1 if the second precedes the first or 0 if -// they're equivalent -class wxTreeItemData; -typedef int (*wxTreeItemCmpFunc)(wxTreeItemData *item1, wxTreeItemData *item2); - -// ---------------------------------------------------------------------------- -// constants -// ---------------------------------------------------------------------------- - -// values for the `flags' parameter of wxTreeCtrl::HitTest() which determine -// where exactly the specified point is situated: - // above the client area. -static const int wxTREE_HITTEST_ABOVE = 0x0001; - // below the client area. -static const int wxTREE_HITTEST_BELOW = 0x0002; - // in the client area but below the last item. -static const int wxTREE_HITTEST_NOWHERE = 0x0004; - // on the button associated with an item. -static const int wxTREE_HITTEST_ONITEMBUTTON = 0x0010; - // on the bitmap associated with an item. -static const int wxTREE_HITTEST_ONITEMICON = 0x0020; - // in the indentation associated with an item. -static const int wxTREE_HITTEST_ONITEMINDENT = 0x0040; - // on the label (string) associated with an item. -static const int wxTREE_HITTEST_ONITEMLABEL = 0x0080; - // in the area to the right of an item. -static const int wxTREE_HITTEST_ONITEMRIGHT = 0x0100; - // on the state icon for a tree view item that is in a user-defined state. -static const int wxTREE_HITTEST_ONITEMSTATEICON = 0x0200; - // to the right of the client area. -static const int wxTREE_HITTEST_TOLEFT = 0x0400; - // to the left of the client area. -static const int wxTREE_HITTEST_TORIGHT = 0x0800; - // anywhere on the item -static const int wxTREE_HITTEST_ONITEM = wxTREE_HITTEST_ONITEMICON | - wxTREE_HITTEST_ONITEMLABEL | - wxTREE_HITTEST_ONITEMSTATEICON; - -// NB: all the following flags are for compatbility only and will be removed in -// next versions - -// flags for deprecated `Expand(int action)' -enum -{ - wxTREE_EXPAND_EXPAND, - wxTREE_EXPAND_COLLAPSE, - wxTREE_EXPAND_COLLAPSE_RESET, - wxTREE_EXPAND_TOGGLE -}; - -// flags for deprecated InsertItem() variant -#define wxTREE_INSERT_FIRST 0xFFFF0001 -#define wxTREE_INSERT_LAST 0xFFFF0002 - -// ---------------------------------------------------------------------------- -// wxTreeItemId identifies an element of the tree. In this implementation, it's -// just a trivial wrapper around GTK GtkTreeItem *. It's opaque for the -// application. -// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxTreeItemId { -public: - // ctors - wxTreeItemId() { m_itemId = NULL; } - - // default copy ctor/assignment operator are ok for us - - // accessors - // is this a valid tree item? - bool IsOk() const { return m_itemId != NULL; } - - // conversion to/from either real (system-dependent) tree item id or - // to "long" which used to be the type for tree item ids in previous - // versions of wxWindows - - // for wxTreeCtrl usage only - wxTreeItemId(GtkTreeItem *itemId) { m_itemId = itemId; } - operator GtkTreeItem *() const { return m_itemId; } - void operator =(GtkTreeItem *item) { m_itemId = item; } - -protected: - GtkTreeItem *m_itemId; -}; - -// ---------------------------------------------------------------------------- -// wxTreeItemData is some (arbitrary) user class associated with some item. The -// main advantage of having this class (compared to old untyped interface) is -// that wxTreeItemData's are destroyed automatically by the tree and, as this -// class has virtual dtor, it means that the memory will be automatically -// freed. OTOH, we don't just use wxObject instead of wxTreeItemData because -// the size of this class is critical: in any real application, each tree leaf -// will have wxTreeItemData associated with it and number of leaves may be -// quite big. -// -// Because the objects of this class are deleted by the tree, they should -// always be allocated on the heap! -// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxTreeItemData : private wxTreeItemId { -public: - // default ctor/copy ctor/assignment operator are ok - - // dtor is virtual and all the items are deleted by the tree control when - // it's deleted, so you normally don't have to care about freeing memory - // allocated in your wxTreeItemData-derived class - virtual ~wxTreeItemData() { } - - // accessors: set/get the item associated with this node - void SetId(const wxTreeItemId& id) { m_itemId = id; } - const wxTreeItemId& GetId() const { return (wxTreeItemId&) m_itemId; } -}; - -class WXDLLEXPORT wxTreeCtrl: public wxControl { -public: - // creation - // -------- - wxTreeCtrl() { Init(); } - - wxTreeCtrl(wxWindow *parent, wxWindowID id = -1, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxTR_HAS_BUTTONS | wxTR_LINES_AT_ROOT, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = "wxTreeCtrl") { - Create(parent, id, pos, size, style, validator, name); - } - - virtual ~wxTreeCtrl(); - - bool Create(wxWindow *parent, wxWindowID id = -1, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxTR_HAS_BUTTONS | wxTR_LINES_AT_ROOT, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = "wxTreeCtrl"); - - // accessors - // --------- - - // get the total number of items in the control - size_t GetCount() const; - - // indent is the number of pixels the children are indented relative to - // the parents position. SetIndent() also redraws the control - // immediately. - unsigned int GetIndent() const; - void SetIndent(unsigned int indent); - - // image list: these functions allow to associate an image list with - // the control and retrieve it. Note that the control does _not_ delete - // the associated image list when it's deleted in order to allow image - // lists to be shared between different controls. - // - // The normal image list is for the icons which correspond to the - // normal tree item state (whether it is selected or not). - // Additionally, the application might choose to show a state icon - // which corresponds to an app-defined item state (for example, - // checked/unchecked) which are taken from the state image list. - wxImageList *GetImageList() const; - wxImageList *GetStateImageList() const; - - void SetImageList(wxImageList *imageList); - void SetStateImageList(wxImageList *imageList); - - // Functions to work with tree ctrl items. Unfortunately, they can _not_ be - // member functions of wxTreeItem because they must know the tree the item - // belongs to for Windows implementation and storing the pointer to - // wxTreeCtrl in each wxTreeItem is just too much waste. - - // accessors - // --------- - - // retrieve items label - wxString GetItemText(const wxTreeItemId& item) const; - // get the normal item image - int GetItemImage(const wxTreeItemId& item) const; - // get the selected item image - int GetItemSelectedImage(const wxTreeItemId& item) const; - // get the data associated with the item - wxTreeItemData *GetItemData(const wxTreeItemId& item) const; - - // modifiers - // --------- - - // set items label - void SetItemText(const wxTreeItemId& item, const wxString& text); - // set the normal item image - void SetItemImage(const wxTreeItemId& item, int image); - // set the selected item image - void SetItemSelectedImage(const wxTreeItemId& item, int image); - // associate some data with the item - void SetItemData(const wxTreeItemId& item, wxTreeItemData *data); - - // item status inquiries - // --------------------- - - // is the item visible (it might be outside the view or not expanded)? - bool IsVisible(const wxTreeItemId& item) const; - // does the item has any children? - bool ItemHasChildren(const wxTreeItemId& item) const; - // is the item expanded (only makes sense if HasChildren())? - bool IsExpanded(const wxTreeItemId& item) const; - // is this item currently selected (the same as has focus)? - bool IsSelected(const wxTreeItemId& item) const; - - // number of children - // ------------------ - - // if 'recursively' is FALSE, only immediate children count, otherwise - // the returned number is the number of all items in this branch - size_t GetChildrenCount(const wxTreeItemId& item, bool recursively = TRUE); - - // navigation - // ---------- - - // wxTreeItemId.IsOk() will return FALSE if there is no such item - - // get the root tree item - wxTreeItemId GetRootItem() const; - - // get the item currently selected (may return NULL if no selection) - wxTreeItemId GetSelection() const; - - // get the parent of this item (may return NULL if root) - wxTreeItemId GetParent(const wxTreeItemId& item) const; - - // for this enumeration function you must pass in a "cookie" parameter - // which is opaque for the application but is necessary for the library - // to make these functions reentrant (i.e. allow more than one - // enumeration on one and the same object simultaneously). Of course, - // the "cookie" passed to GetFirstChild() and GetNextChild() should be - // the same! - - // get the first child of this item - wxTreeItemId GetFirstChild(const wxTreeItemId& item, long& cookie) const; - // get the next child (after GetFirstChild or GetNextChild) - wxTreeItemId GetNextChild(const wxTreeItemId& item, long& cookie) const; - // get the last child of this item - this method doesn't use cookies - wxTreeItemId GetLastChild(const wxTreeItemId& item) const; - - // get the next sibling of this item - wxTreeItemId GetNextSibling(const wxTreeItemId& item) const; - // get the previous sibling - wxTreeItemId GetPrevSibling(const wxTreeItemId& item) const; - - // get first visible item - wxTreeItemId GetFirstVisibleItem() const; - // get the next visible item: item must be visible itself! - // see IsVisible() and wxTreeCtrl::GetFirstVisibleItem() - wxTreeItemId GetNextVisible(const wxTreeItemId& item) const; - // get the previous visible item: item must be visible itself! - wxTreeItemId GetPrevVisible(const wxTreeItemId& item) const; - - // operations - // ---------- - - // add the root node to the tree - wxTreeItemId AddRoot(const wxString& text, - int image = -1, int selectedImage = -1, - wxTreeItemData *data = NULL); - - // insert a new item in as the first child of the parent - wxTreeItemId PrependItem(const wxTreeItemId& parent, - const wxString& text, - int image = -1, int selectedImage = -1, - wxTreeItemData *data = NULL); - - // insert a new item after a given one - wxTreeItemId InsertItem(const wxTreeItemId& parent, - const wxTreeItemId& idPrevious, - const wxString& text, - int image = -1, int selectedImage = -1, - wxTreeItemData *data = NULL); - - // insert a new item in as the last child of the parent - wxTreeItemId AppendItem(const wxTreeItemId& parent, - const wxString& text, - int image = -1, int selectedImage = -1, - wxTreeItemData *data = NULL); - - // delete this item and associated data if any - void Delete(const wxTreeItemId& item); - // delete all items from the tree - void DeleteAllItems(); - - // expand this item - void Expand(const wxTreeItemId& item); - // collapse the item without removing its children - void Collapse(const wxTreeItemId& item); - // collapse the item and remove all children - void CollapseAndReset(const wxTreeItemId& item); - // toggles the current state - void Toggle(const wxTreeItemId& item); - - // remove the selection from currently selected item (if any) - void Unselect(); - // select this item - void SelectItem(const wxTreeItemId& item); - // make sure this item is visible (expanding the parent item and/or - // scrolling to this item if necessary) - void EnsureVisible(const wxTreeItemId& item); - // scroll to this item (but don't expand its parent) - void ScrollTo(const wxTreeItemId& item); - - // start editing the item label: this (temporarily) replaces the item - // with a one line edit control. The item will be selected if it hadn't - // been before. textCtrlClass parameter allows you to create an edit - // control of arbitrary user-defined class deriving from wxTextCtrl. - wxTextCtrl* EditLabel(const wxTreeItemId& item, - wxClassInfo* textCtrlClass = CLASSINFO(wxTextCtrl)); - // returns the same pointer as StartEdit() if the item is being edited, - // NULL otherwise (it's assumed that no more than one item may be - // edited simultaneously) - wxTextCtrl* GetEditControl() const; - // end editing and accept or discard the changes to item label - void EndEditLabel(const wxTreeItemId& item, bool discardChanges = FALSE); - - // sort the children of this item using the specified callback function - // (it should return -1, 0 or +1 as usual), if it's not specified - // alphabetical comparaison is performed. - // - // NB: this function is not reentrant! - void SortChildren(const wxTreeItemId& item, - wxTreeItemCmpFunc *cmpFunction = NULL); - - // deprecated - // ---------- - - // these methods are deprecated and will be removed in future versions of - // wxWindows, they're here for compatibility only, don't use them in new - // code (the comments indicate why these methods are now useless and how to - // replace them) - - // use Expand, Collapse, CollapseAndReset or Toggle - void ExpandItem(const wxTreeItemId& item, int action); - - // use AddRoot, PrependItem or AppendItem - wxTreeItemId InsertItem(const wxTreeItemId& parent, - const wxString& text, - int image = -1, int selImage = -1, - long insertAfter = wxTREE_INSERT_LAST); - - // use Set/GetImageList and Set/GetStateImageList - wxImageList *GetImageList(int) const - { return GetImageList(); } - void SetImageList(wxImageList *imageList, int) - { SetImageList(imageList); } - - void SendExpanding(const wxTreeItemId& item); - void SendExpanded(const wxTreeItemId& item); - void SendCollapsing(const wxTreeItemId& item); - void SendCollapsed(const wxTreeItemId& item); - void SendSelChanging(const wxTreeItemId& item); - void SendSelChanged(const wxTreeItemId& item); -protected: - wxTreeItemId m_editItem; - GtkTree *m_tree; - GtkTreeItem *m_anchor; - wxTextCtrl* m_textCtrl; - wxImageList* m_imageListNormal; - wxImageList* m_imageListState; - - long m_curitemId; - - void SendMessage(wxEventType command, const wxTreeItemId& item); -// GtkTreeItem *findGtkTreeItem(wxTreeCtrlId &id) const; - - // the common part of all ctors - void Init(); - // insert a new item in as the last child of the parent - wxTreeItemId p_InsertItem(GtkTreeItem *p, - const wxString& text, - int image, int selectedImage, - wxTreeItemData *data); - - - DECLARE_DYNAMIC_CLASS(wxTreeCtrl) -}; - -// ---------------------------------------------------------------------------- -// wxTreeEvent is a special class for all events associated with tree controls -// -// NB: note that not all accessors make sense for all events, see the event -// descriptions below -// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxTreeEvent : public wxCommandEvent -{ -friend wxTreeCtrl; -public: - wxTreeEvent(wxEventType commandType = wxEVT_NULL, int id = 0); - - // accessors - // get the item on which the operation was performed or the newly - // selected item for wxEVT_COMMAND_TREE_SEL_CHANGED/ING events - wxTreeItemId GetItem() const { return m_item; } - - // for wxEVT_COMMAND_TREE_SEL_CHANGED/ING events, get the previously - // selected item - wxTreeItemId GetOldItem() const { return m_itemOld; } - - // the point where the mouse was when the drag operation started (for - // wxEVT_COMMAND_TREE_BEGIN_(R)DRAG events only) - wxPoint GetPoint() const { return m_pointDrag; } - - // keyboard code (for wxEVT_COMMAND_TREE_KEY_DOWN only) - int GetCode() const { return m_code; } - - // set return code for wxEVT_COMMAND_TREE_ITEM_{EXPAND|COLLAPS}ING events - // call this to forbid the change in item status - void Veto() { m_code = TRUE; } - -private: - // @@ we could save some space by using union here - int m_code; - wxTreeItemId m_item, - m_itemOld; - wxPoint m_pointDrag; - - DECLARE_DYNAMIC_CLASS(wxTreeEvent) -}; - -typedef void (wxEvtHandler::*wxTreeEventFunction)(wxTreeEvent&); - -// ---------------------------------------------------------------------------- -// macros for handling tree control events -// ---------------------------------------------------------------------------- - -// GetItem() returns the item being dragged, GetPoint() the mouse coords -#define EVT_TREE_BEGIN_DRAG(id, fn) { wxEVT_COMMAND_TREE_BEGIN_DRAG, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TREE_BEGIN_RDRAG(id, fn) { wxEVT_COMMAND_TREE_BEGIN_RDRAG, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, - -// GetItem() returns the itme whose label is being edited -#define EVT_TREE_BEGIN_LABEL_EDIT(id, fn) { wxEVT_COMMAND_TREE_BEGIN_LABEL_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TREE_END_LABEL_EDIT(id, fn) { wxEVT_COMMAND_TREE_END_LABEL_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, - -// provide/update information about GetItem() item -#define EVT_TREE_GET_INFO(id, fn) { wxEVT_COMMAND_TREE_GET_INFO, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TREE_SET_INFO(id, fn) { wxEVT_COMMAND_TREE_SET_INFO, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, - -// GetItem() is the item being expanded/collapsed, the "ING" versions can use -#define EVT_TREE_ITEM_EXPANDED(id, fn) { wxEVT_COMMAND_TREE_ITEM_EXPANDED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TREE_ITEM_EXPANDING(id, fn) { wxEVT_COMMAND_TREE_ITEM_EXPANDING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TREE_ITEM_COLLAPSED(id, fn) { wxEVT_COMMAND_TREE_ITEM_COLLAPSED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TREE_ITEM_COLLAPSING(id, fn) { wxEVT_COMMAND_TREE_ITEM_COLLAPSING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, NULL }, - -// GetOldItem() is the item which had the selection previously, GetItem() is -// the item which acquires selection -#define EVT_TREE_SEL_CHANGED(id, fn) { wxEVT_COMMAND_TREE_SEL_CHANGED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, NULL }, -#define EVT_TREE_SEL_CHANGING(id, fn) { wxEVT_COMMAND_TREE_SEL_CHANGING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, NULL }, - -// GetCode() returns the key code -// NB: this is the only message for which GetItem() is invalid (you may get the -// item from GetSelection()) -#define EVT_TREE_KEY_DOWN(id, fn) { wxEVT_COMMAND_TREE_KEY_DOWN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, NULL }, - -// GetItem() returns the item being deleted, the associated data (if any) will -// be deleted just after the return of this event handler (if any) -#define EVT_TREE_DELETE_ITEM(id, fn) { wxEVT_COMMAND_TREE_DELETE_ITEM, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, - -#endif - // _WX_TREECTRL_H_ diff --git a/include/wx/gtk/wave.h b/include/wx/gtk/wave.h deleted file mode 100644 index 14bdf11293..0000000000 --- a/include/wx/gtk/wave.h +++ /dev/null @@ -1,59 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: wave.h -// Purpose: wxWave class -// Author: Julian Smart -// Modified by: -// Created: 25/10/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_WAVE_H_ -#define _WX_WAVE_H_ - -#ifdef __GNUG__ -#pragma interface "wave.h" -#endif - -#include "wx/object.h" - -#ifndef AUDIODEV -#define AUDIODEV "/dev/dsp" // Default path for audio device -#endif - -class wxWave : public wxObject -{ -public: - wxWave(); - wxWave(const wxString& fileName, bool isResource = FALSE); - wxWave(int size, const wxByte* data); - ~wxWave(); - -public: - // Create from resource or file - bool Create(const wxString& fileName, bool isResource = FALSE); - // Create from data - bool Create(int size, const wxByte* data); - - bool IsOk() const { return (m_waveData ? TRUE : FALSE); }; - bool Play(bool async = TRUE, bool looped = FALSE); - -protected: - bool Free(); - -private: - wxByte* m_waveData; - int m_waveLength; - bool m_isResource; - - - int OpenDSP(void); - bool InitDSP(int dev, int iDataBits, int iChannel,unsigned long ulSamplingRate); - int m_DSPblkSize; // Size of the DSP buffer - char *m_data; - int m_sizeData; -}; - -#endif - diff --git a/include/wx/gtk/win_gtk.h b/include/wx/gtk/win_gtk.h deleted file mode 100644 index 16acb8d305..0000000000 --- a/include/wx/gtk/win_gtk.h +++ /dev/null @@ -1,68 +0,0 @@ -/* /////////////////////////////////////////////////////////////////////////// -// Name: win_gtk.h -// Purpose: wxWindows's GTK base widget -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////// */ - - -#ifndef __GTK_MYFIXED_H__ -#define __GTK_MYFIXED_H__ - - -#include -#include - - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - - -#define GTK_MYFIXED(obj) GTK_CHECK_CAST (obj, gtk_myfixed_get_type (), GtkMyFixed) -#define GTK_MYFIXED_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, gtk_myfixed_get_type (), GtkMyFixedClass) -#define GTK_IS_MYFIXED(obj) GTK_CHECK_TYPE (obj, gtk_myfixed_get_type ()) - - -typedef struct _GtkMyFixed GtkMyFixed; -typedef struct _GtkMyFixedClass GtkMyFixedClass; -typedef struct _GtkMyFixedChild GtkMyFixedChild; - -struct _GtkMyFixed -{ - GtkContainer container; - - GList *children; -}; - -struct _GtkMyFixedClass -{ - GtkContainerClass parent_class; -}; - -struct _GtkMyFixedChild -{ - GtkWidget *widget; - gint16 x; - gint16 y; -}; - -guint gtk_myfixed_get_type (void); -GtkWidget* gtk_myfixed_new (void); -void gtk_myfixed_put (GtkMyFixed *myfixed, - GtkWidget *widget, - gint16 x, - gint16 y); -void gtk_myfixed_move (GtkMyFixed *myfixed, - GtkWidget *widget, - gint16 x, - gint16 y); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - - -#endif /* __GTK_MYFIXED_H__ */ diff --git a/include/wx/gtk/window.h b/include/wx/gtk/window.h deleted file mode 100644 index 0031aa27a1..0000000000 --- a/include/wx/gtk/window.h +++ /dev/null @@ -1,427 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: window.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKWINDOWH__ -#define __GTKWINDOWH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/list.h" -#include "wx/event.h" -#include "wx/validate.h" -#include "wx/cursor.h" -#include "wx/font.h" -#include "wx/region.h" -#include "wx/accel.h" - -//----------------------------------------------------------------------------- -// global data -//----------------------------------------------------------------------------- - -extern const char *wxFrameNameStr; -extern wxList wxTopLevelWindows; - -//----------------------------------------------------------------------------- -// global function -//----------------------------------------------------------------------------- - -wxWindow* wxGetActiveWindow(); - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxLayoutConstraints; -class wxSizer; -class wxDC; -class wxClientData; -class wxVoidClientData; -class wxWindow; -#if wxUSE_WX_RESOURCES -class wxResourceTable; -class wxItemResource; -#endif -#if wxUSE_DRAG_AND_DROP -class wxDropTarget; -#endif -class wxToolTip; - -//----------------------------------------------------------------------------- -// callback definition for inserting a window (internal) -//----------------------------------------------------------------------------- - -typedef void (*wxInsertChildFunction)( wxWindow*, wxWindow* ); - -//----------------------------------------------------------------------------- -// global data -//----------------------------------------------------------------------------- - -extern const char *wxPanelNameStr; -extern const wxSize wxDefaultSize; -extern const wxPoint wxDefaultPosition; - -//----------------------------------------------------------------------------- -// wxClientData -//----------------------------------------------------------------------------- - -class wxClientData -{ -public: - wxClientData() { } - virtual ~wxClientData() { } -}; - -//----------------------------------------------------------------------------- -// wxStringClientData -//----------------------------------------------------------------------------- - -class wxStringClientData: public wxClientData -{ -public: - wxStringClientData() { } - wxStringClientData( wxString &data ) { m_data = data; } - void SetData( wxString &data ) { m_data = data; } - wxString GetData() const { return m_data; } - -private: - wxString m_data; -}; - -//----------------------------------------------------------------------------- -// (debug) -//----------------------------------------------------------------------------- - -#ifdef __WXDEBUG__ - -void debug_focus_in( GtkWidget* widget, const char* name, const char* window ); - -#endif - -//----------------------------------------------------------------------------- -// wxWindow -//----------------------------------------------------------------------------- - -class wxWindow: public wxEvtHandler -{ - DECLARE_DYNAMIC_CLASS(wxWindow) - -public: - wxWindow(); - wxWindow(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = wxPanelNameStr); - bool Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = wxPanelNameStr); - virtual ~wxWindow(); - -#if wxUSE_WX_RESOURCES - virtual bool LoadFromResource( wxWindow *parent, const wxString& resourceName, - const wxResourceTable *table = (const wxResourceTable *) NULL); - virtual wxControl *CreateItem(const wxItemResource* childResource, const wxItemResource* parentResource, - const wxResourceTable *table = (const wxResourceTable *) NULL); -#endif - - bool Close( bool force = FALSE ); - virtual bool Destroy(); - virtual bool DestroyChildren(); - - virtual void PrepareDC( wxDC &dc ); - - virtual void SetSize( int x, int y, int width, int height, - int sizeFlags = wxSIZE_AUTO ); - virtual void SetSize( int width, int height ); - - virtual void Move( int x, int y ); - - virtual void GetSize( int *width, int *height ) const; - wxSize GetSize() const { int w, h; GetSize(& w, & h); return wxSize(w, h); } - - virtual void SetClientSize( int const width, int const height ); - - virtual void GetClientSize( int *width, int *height ) const; - wxSize GetClientSize() const { int w, h; GetClientSize(& w, & h); return wxSize(w, h); } - - virtual void GetPosition( int *x, int *y ) const; - wxPoint GetPosition() const { int w, h; GetPosition(& w, & h); return wxPoint(w, h); } - - wxRect GetRect() const - { int x, y, w, h; GetPosition(& x, & y); GetSize(& w, & h); return wxRect(x, y, w, h); } - - virtual void Centre( int direction = wxHORIZONTAL ); - inline void Center(int direction = wxHORIZONTAL) { Centre(direction); } - virtual void Fit(); - - virtual void SetSizeHints( int minW, int minH, int maxW = -1, int maxH = -1, int incW = -1, int incH = -1 ); - - /* Dialog units translations. Implemented in wincmn.cpp. */ - wxPoint ConvertPixelsToDialog( const wxPoint& pt ); - wxPoint ConvertDialogToPixels( const wxPoint& pt ); - inline wxSize ConvertPixelsToDialog( const wxSize& sz ) - { wxPoint pt(ConvertPixelsToDialog(wxPoint(sz.x, sz.y))); return wxSize(pt.x, pt.y); } - inline wxSize ConvertDialogToPixels( const wxSize& sz ) - { wxPoint pt(ConvertDialogToPixels(wxPoint(sz.x, sz.y))); return wxSize(pt.x, pt.y); } - - void OnSize( wxSizeEvent &event ); - - virtual bool Show( bool show ); - virtual void Enable( bool enable ); - virtual void MakeModal( bool modal ); - virtual bool IsEnabled() const { return m_isEnabled; } - inline bool Enabled() const { return IsEnabled(); } - virtual bool OnClose(); - - virtual void SetFocus(); - static wxWindow *FindFocus(); - - virtual void AddChild( wxWindow *child ); - wxList& GetChildren() { return m_children; } - - virtual void RemoveChild( wxWindow *child ); - void SetReturnCode( int retCode ); - int GetReturnCode(); - wxWindow *GetParent() const - { return m_parent; } - wxWindow *GetGrandParent() const - { return (m_parent ? m_parent->m_parent : (wxWindow*)NULL); } - void SetParent( wxWindow *parent ) - { m_parent = parent; } - virtual wxWindow *ReParent( wxWindow *newParent ); - - wxEvtHandler *GetEventHandler() const; - void SetEventHandler( wxEvtHandler *handler ); - void PushEventHandler( wxEvtHandler *handler ); - wxEvtHandler *PopEventHandler( bool deleteHandler = FALSE ); - - virtual void SetValidator( const wxValidator &validator ); - virtual wxValidator *GetValidator(); - - virtual void SetClientObject( wxClientData *data ); - virtual wxClientData *GetClientObject(); - - virtual void SetClientData( void *data ); - virtual void *GetClientData(); - - virtual void SetAcceleratorTable( const wxAcceleratorTable& accel ); - virtual wxAcceleratorTable *GetAcceleratorTable() { return &m_acceleratorTable; } - - bool IsBeingDeleted(); - - void SetId( wxWindowID id ); - wxWindowID GetId() const; - - void SetCursor( const wxCursor &cursor ); - - void WarpPointer(int x, int y); - - virtual void SetToolTip( const wxString &tip ); - virtual void SetToolTip( wxToolTip *tip ); - virtual wxToolTip& GetToolTip(); - - virtual void Refresh( bool eraseBackground = TRUE, const wxRect *rect = (const wxRect *) NULL ); - virtual void Clear(); - - virtual wxRegion GetUpdateRegion() const; - virtual bool IsExposed(int x, int y) const; - virtual bool IsExposed(int x, int y, int w, int h) const; - virtual bool IsExposed(const wxPoint& pt) const; - virtual bool IsExposed(const wxRect& rect) const; - - virtual wxColour GetBackgroundColour() const; - virtual void SetBackgroundColour( const wxColour &colour ); - virtual wxColour GetForegroundColour() const; - virtual void SetForegroundColour( const wxColour &colour ); - - virtual int GetCharHeight() const; - virtual int GetCharWidth() const; - virtual void GetTextExtent( const wxString& string, int *x, int *y, - int *descent = (int *) NULL, - int *externalLeading = (int *) NULL, - const wxFont *theFont = (const wxFont *) NULL, bool use16 = FALSE) const; - - virtual void SetFont( const wxFont &font ); - virtual wxFont& GetFont() { return m_font; } - - // For backward compatibility - inline virtual void SetButtonFont(const wxFont& font) { SetFont(font); } - inline virtual void SetLabelFont(const wxFont& font) { SetFont(font); } - inline virtual wxFont& GetLabelFont() { return GetFont(); }; - inline virtual wxFont& GetButtonFont() { return GetFont(); }; - - virtual void SetWindowStyleFlag( long flag ); - virtual long GetWindowStyleFlag() const; - - virtual void CaptureMouse(); - virtual void ReleaseMouse(); - - virtual void SetTitle( const wxString &title ); - virtual wxString GetTitle() const; - virtual void SetName( const wxString &name ); - virtual wxString GetName() const; - virtual wxString GetLabel() const; - - void OnSysColourChanged( wxSysColourChangedEvent &WXUNUSED(event) ) {}; - void OnKeyDown( wxKeyEvent &event ); - - virtual bool IsShown() const; - - virtual void Raise(); - virtual void Lower(); - - virtual bool IsRetained(); - virtual wxWindow *FindWindow( long id ); - virtual wxWindow *FindWindow( const wxString& name ); - - void AllowDoubleClick( bool WXUNUSED(allow) ) {}; - void SetDoubleClick( bool WXUNUSED(allow) ) {}; - - virtual void ClientToScreen( int *x, int *y ); - virtual void ScreenToClient( int *x, int *y ); - - virtual bool Validate(); - virtual bool TransferDataToWindow(); - virtual bool TransferDataFromWindow(); - void OnInitDialog( wxInitDialogEvent &event ); - virtual void InitDialog(); - - virtual bool PopupMenu( wxMenu *menu, int x, int y ); - -#if wxUSE_DRAG_AND_DROP - virtual void SetDropTarget( wxDropTarget *dropTarget ); - virtual wxDropTarget *GetDropTarget() const; -#endif - - virtual void SetScrollbar( int orient, int pos, int thumbVisible, - int range, bool refresh = TRUE ); - virtual void SetScrollPos( int orient, int pos, bool refresh = TRUE ); - virtual int GetScrollPos( int orient ) const; - virtual int GetScrollThumb( int orient ) const; - virtual int GetScrollRange( int orient ) const; - virtual void ScrollWindow( int dx, int dy, const wxRect* rect = (wxRect *) NULL ); - - virtual bool AcceptsFocus() const; - - void UpdateWindowUI(); - - // implementation - - void PreCreation( wxWindow *parent, wxWindowID id, const wxPoint &pos, - const wxSize &size, long style, const wxString &name ); - void PostCreation(); - - virtual GtkWidget* GetConnectWidget(); - virtual bool IsOwnGtkWindow( GdkWindow *window ); - void ConnectWidget( GtkWidget *widget ); - - bool HasVMT(); - - virtual wxPoint GetClientAreaOrigin() const; - virtual void AdjustForParentClientOrigin( int& x, int& y, int sizeFlags ); - - GtkStyle *GetWidgetStyle(); - void SetWidgetStyle(); - virtual void ApplyWidgetStyle(); - - virtual void OnInternalIdle(); - - wxWindow *m_parent; - wxList m_children; - int m_x,m_y; - int m_width,m_height; - int m_minWidth,m_minHeight; - int m_maxWidth,m_maxHeight; - int m_retCode; - wxEvtHandler *m_eventHandler; - wxValidator *m_windowValidator; -#if wxUSE_DRAG_AND_DROP - wxDropTarget *m_dropTarget; -#endif - wxWindowID m_windowId; - wxCursor *m_cursor; - wxFont m_font; - wxColour m_backgroundColour; - wxColour m_foregroundColour; - wxRegion m_updateRegion; - long m_windowStyle; - bool m_isShown; - bool m_isEnabled; - wxString m_windowName; - wxAcceleratorTable m_acceleratorTable; - wxClientData *m_clientObject; - void *m_clientData; - wxToolTip *m_toolTip; - - GtkWidget *m_widget; - GtkWidget *m_wxwindow; - GtkAdjustment *m_hAdjust,*m_vAdjust; - float m_oldHorizontalPos; - float m_oldVerticalPos; - bool m_needParent; - bool m_hasScrolling; - bool m_isScrolling; - bool m_hasVMT; - bool m_sizeSet; - bool m_resizing; - GdkGC *m_scrollGC; - GtkStyle *m_widgetStyle; - bool m_isStaticBox; - bool m_acceptsFocus; - - wxInsertChildFunction m_insertCallback; - -public: - - wxLayoutConstraints *m_constraints; - wxList *m_constraintsInvolvedIn; - wxSizer *m_windowSizer; - wxWindow *m_sizerParent; - bool m_autoLayout; - - wxLayoutConstraints *GetConstraints() const; - void SetConstraints( wxLayoutConstraints *constraints ); - void SetAutoLayout( bool autoLayout ); - bool GetAutoLayout() const; - bool Layout(); - void SetSizer( wxSizer *sizer ); - wxSizer *GetSizer() const; - void SetSizerParent( wxWindow *win ); - wxWindow *GetSizerParent() const; - void UnsetConstraints(wxLayoutConstraints *c); - inline wxList *GetConstraintsInvolvedIn() const ; - void AddConstraintReference(wxWindow *otherWin); - void RemoveConstraintReference(wxWindow *otherWin); - void DeleteRelatedConstraints(); - virtual void ResetConstraints(); - virtual void SetConstraintSizes(bool recurse = TRUE); - virtual bool LayoutPhase1(int *noChanges); - virtual bool LayoutPhase2(int *noChanges); - virtual bool DoPhase(int); - virtual void TransformSizerToActual(int *x, int *y) const ; - virtual void SizerSetSize(int x, int y, int w, int h); - virtual void SizerMove(int x, int y); - virtual void SetSizeConstraint(int x, int y, int w, int h); - virtual void MoveConstraint(int x, int y); - virtual void GetSizeConstraint(int *w, int *h) const ; - virtual void GetClientSizeConstraint(int *w, int *h) const ; - virtual void GetPositionConstraint(int *x, int *y) const ; - -private: - DECLARE_EVENT_TABLE() -}; - -#endif // __GTKWINDOWH__ diff --git a/include/wx/gtk1/.cvsignore b/include/wx/gtk1/.cvsignore deleted file mode 100644 index 3f915354e8..0000000000 --- a/include/wx/gtk1/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -setup.h diff --git a/include/wx/gtk1/accel.h b/include/wx/gtk1/accel.h deleted file mode 100644 index 4765e6fe3d..0000000000 --- a/include/wx/gtk1/accel.h +++ /dev/null @@ -1,105 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: accel.h -// Purpose: wxAcceleratorTable class -// Author: Robert Roebling -// RCS-ID: $Id$ -// Copyright: (c) Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __GTKACCELH__ -#define __GTKACCELH__ - -#ifdef __GNUG__ -#pragma interface "accel.h" -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/event.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxAcceleratorEntry; -class wxAcceleratorTable; - -//----------------------------------------------------------------------------- -// constants -//----------------------------------------------------------------------------- - -extern wxAcceleratorTable wxNullAcceleratorTable; - -//----------------------------------------------------------------------------- -// constants -//----------------------------------------------------------------------------- - -// Hold Ctrl key down -#define wxACCEL_ALT 0x01 - -// Hold Ctrl key down -#define wxACCEL_CTRL 0x02 - - // Hold Shift key down -#define wxACCEL_SHIFT 0x04 - - // Hold no other key -#define wxACCEL_NORMAL 0x00 - -//----------------------------------------------------------------------------- -// wxAcceleratorEntry -//----------------------------------------------------------------------------- - -class wxAcceleratorEntry: public wxObject -{ - public: - - wxAcceleratorEntry(int flags = 0, int keyCode = 0, int cmd = 0) - { m_flags = flags; m_keyCode = keyCode; m_command = cmd; } - - inline void Set(int flags, int keyCode, int cmd) - { m_flags = flags; m_keyCode = keyCode; m_command = cmd; } - - inline int GetFlags() const { return m_flags; } - inline int GetKeyCode() const { return m_keyCode; } - inline int GetCommand() const { return m_command; } - - int m_flags; - int m_keyCode; // ASCII or virtual keycode - int m_command; // Command id to generate -}; - -//----------------------------------------------------------------------------- -// wxAcceleratorTable -//----------------------------------------------------------------------------- - -class wxAcceleratorTable: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxAcceleratorTable) - - public: - wxAcceleratorTable(); - wxAcceleratorTable(int n, wxAcceleratorEntry entries[] ); - ~wxAcceleratorTable(); - - inline wxAcceleratorTable(const wxAcceleratorTable& accel) : wxObject() - { Ref(accel); } - inline wxAcceleratorTable(const wxAcceleratorTable* accel) - { if (accel) Ref(*accel); } - inline bool operator == (const wxAcceleratorTable& accel) - { return m_refData == accel.m_refData; } - inline bool operator != (const wxAcceleratorTable& accel) - { return m_refData != accel.m_refData; } - inline wxAcceleratorTable& operator = (const wxAcceleratorTable& accel) - { if (*this == accel) return (*this); Ref(accel); return *this; } - - bool Ok() const; - -// private: - - int GetCommand( wxKeyEvent &event ); - -}; - -#endif diff --git a/include/wx/gtk1/app.h b/include/wx/gtk1/app.h deleted file mode 100644 index 365c08f90a..0000000000 --- a/include/wx/gtk1/app.h +++ /dev/null @@ -1,140 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: app.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling, Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __GTKAPPH__ -#define __GTKAPPH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/window.h" -#include "wx/frame.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxApp; -class wxLog; - -//----------------------------------------------------------------------------- -// global data -//----------------------------------------------------------------------------- - -extern wxApp *wxTheApp; - -//----------------------------------------------------------------------------- -// global functions -//----------------------------------------------------------------------------- - -void wxExit(void); -bool wxYield(void); - -//----------------------------------------------------------------------------- -// constants -//----------------------------------------------------------------------------- - -#define wxPRINT_WINDOWS 1 -#define wxPRINT_POSTSCRIPT 2 - -//----------------------------------------------------------------------------- -// wxApp -//----------------------------------------------------------------------------- - -class wxApp: public wxEvtHandler -{ - DECLARE_DYNAMIC_CLASS(wxApp) - - public: - - wxApp(); - ~wxApp(); - - static void SetInitializerFunction(wxAppInitializerFunction fn) { m_appInitFn = fn; } - static wxAppInitializerFunction GetInitializerFunction() { return m_appInitFn; } - - /* override for altering the way wxGTK intializes the GUI (palette/visual/colorcube). - * under wxMSW, OnInitGui() does nothing by default. when overriding this method, - * the code in it is likely to be platform dependent, otherwise use OnInit(). */ - virtual bool OnInitGui(); - - /* override to create top level frame, display splash screen etc. */ - virtual bool OnInit() { return FALSE; } - - virtual int OnRun() { return MainLoop(); } - virtual int OnExit() { return 0; } - - wxWindow *GetTopWindow(); - void SetTopWindow( wxWindow *win ); - - virtual int MainLoop(); - void ExitMainLoop(); - bool Initialized(); - virtual bool Pending(); - virtual void Dispatch(); - - inline void SetWantDebugOutput( bool flag ) { m_wantDebugOutput = flag; } - inline bool GetWantDebugOutput() { return m_wantDebugOutput; } - - void OnIdle( wxIdleEvent &event ); - bool SendIdleEvents(); - bool SendIdleEvents( wxWindow* win ); - - inline wxString GetAppName() const - { if (m_appName != "") return m_appName; else return m_className; } - inline void SetAppName( const wxString& name ) { m_appName = name; } - - inline wxString GetClassName() const { return m_className; } - inline void SetClassName( const wxString& name ) { m_className = name; } - - const wxString& GetVendorName() const { return m_vendorName; } - void SetVendorName( const wxString& name ) { m_vendorName = name; } - - inline void SetExitOnFrameDelete( bool flag ) { m_exitOnFrameDelete = flag; } - inline bool GetExitOnFrameDelete() const { return m_exitOnFrameDelete; } - - void SetPrintMode( int WXUNUSED(mode) ) {} - int GetPrintMode() const { return wxPRINT_POSTSCRIPT; } - - /* override this function to create default log target of arbitrary - * user-defined classv (default implementation creates a wxLogGui object) */ - virtual wxLog *CreateLogTarget(); - - // implementation - - static bool Initialize(); - static bool InitialzeVisual(); - static void CleanUp(); - - bool ProcessIdle(); - void DeletePendingObjects(); - - bool m_initialized; - bool m_exitOnFrameDelete; - bool m_wantDebugOutput; - wxWindow *m_topWindow; - - gint m_idleTag; - unsigned char *m_colorCube; - - int argc; - char **argv; - - wxString m_vendorName; - wxString m_appName; - wxString m_className; - - static wxAppInitializerFunction m_appInitFn; - - DECLARE_EVENT_TABLE() -}; - -#endif // __GTKAPPH__ diff --git a/include/wx/gtk1/bitmap.h b/include/wx/gtk1/bitmap.h deleted file mode 100644 index 61245d92c1..0000000000 --- a/include/wx/gtk1/bitmap.h +++ /dev/null @@ -1,100 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: bitmap.h -// Purpose: -// Author: Robert Roebling -// RCS-ID: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKBITMAPH__ -#define __GTKBITMAPH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/string.h" -#include "wx/palette.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxMask; -class wxBitmap; - -//----------------------------------------------------------------------------- -// wxMask -//----------------------------------------------------------------------------- - -class wxMask: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxMask) - -public: - wxMask(); - wxMask( const wxBitmap& bitmap, const wxColour& colour ); - wxMask( const wxBitmap& bitmap, int paletteIndex ); - wxMask( const wxBitmap& bitmap ); - ~wxMask(); - - // implementation - - GdkBitmap *m_bitmap; - GdkBitmap *GetBitmap() const; -}; - -//----------------------------------------------------------------------------- -// wxBitmap -//----------------------------------------------------------------------------- - -class wxBitmap: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxBitmap) - -public: - wxBitmap(); - wxBitmap( int width, int height, int depth = -1 ); - wxBitmap( const char bits[], int width, int height, int depth = 1 ); - wxBitmap( const char **bits ); - wxBitmap( char **bits ); - wxBitmap( const wxBitmap& bmp ); - wxBitmap( const wxString &filename, int type = wxBITMAP_TYPE_XPM ); - ~wxBitmap(); - wxBitmap& operator = ( const wxBitmap& bmp ); - bool operator == ( const wxBitmap& bmp ); - bool operator != ( const wxBitmap& bmp ); - bool Ok() const; - - int GetHeight() const; - int GetWidth() const; - int GetDepth() const; - - wxMask *GetMask() const; - void SetMask( wxMask *mask ); - - bool SaveFile( const wxString &name, int type, wxPalette *palette = (wxPalette *) NULL ); - bool LoadFile( const wxString &name, int type = wxBITMAP_TYPE_XPM ); - - wxPalette *GetPalette() const; - wxPalette *GetColourMap() const - { return GetPalette(); }; - -// implementation - - void SetHeight( int height ); - void SetWidth( int width ); - void SetDepth( int depth ); - void SetPixmap( GdkPixmap *pixmap ); - - GdkPixmap *GetPixmap() const; - GdkBitmap *GetBitmap() const; - - // no data :-) -}; - -#endif // __GTKBITMAPH__ diff --git a/include/wx/gtk1/bmpbuttn.h b/include/wx/gtk1/bmpbuttn.h deleted file mode 100644 index fd1df719c8..0000000000 --- a/include/wx/gtk1/bmpbuttn.h +++ /dev/null @@ -1,94 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: bmpbutton.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __BMPBUTTONH__ -#define __BMPBUTTONH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/list.h" -#include "wx/control.h" -#include "wx/bitmap.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxBitmapButton; - -//----------------------------------------------------------------------------- -// global data -//----------------------------------------------------------------------------- - -extern const char *wxButtonNameStr; - -//----------------------------------------------------------------------------- -// wxBitmapButton -//----------------------------------------------------------------------------- - -class wxBitmapButton: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxBitmapButton) - -public: - wxBitmapButton(); - inline wxBitmapButton( wxWindow *parent, wxWindowID id, const wxBitmap& bitmap, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = wxBU_AUTODRAW, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxButtonNameStr ) - { - Create(parent, id, bitmap, pos, size, style, validator, name); - } - bool Create( wxWindow *parent, wxWindowID id, const wxBitmap& bitmap, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = wxBU_AUTODRAW, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxButtonNameStr); - void SetDefault(); - - void SetLabel( const wxString &label ); - wxString GetLabel() const; - virtual void SetLabel( const wxBitmap& bitmap ) { SetBitmapLabel(bitmap); } - - wxBitmap& GetBitmapDisabled() const { return (wxBitmap&) m_disabled; } - wxBitmap& GetBitmapFocus() const { return (wxBitmap&) m_focus; } - wxBitmap& GetBitmapLabel() const { return (wxBitmap&) m_bitmap; } - wxBitmap& GetBitmapSelected() const { return (wxBitmap&) m_selected; } - - void SetBitmapDisabled( const wxBitmap& bitmap ); - void SetBitmapFocus( const wxBitmap& bitmap ); - void SetBitmapLabel( const wxBitmap& bitmap ); - void SetBitmapSelected( const wxBitmap& bitmap ); - - virtual void Enable(const bool); - -// implementation - - void HasFocus(); - void NotFocus(); - void StartSelect(); - void EndSelect(); - void SetBitmap(); - void ApplyWidgetStyle(); - - bool m_hasFocus; - bool m_isSelected; - wxBitmap m_bitmap; - wxBitmap m_disabled; - wxBitmap m_focus; - wxBitmap m_selected; -}; - -#endif // __BMPBUTTONH__ diff --git a/include/wx/gtk1/brush.h b/include/wx/gtk1/brush.h deleted file mode 100644 index c52eb45011..0000000000 --- a/include/wx/gtk1/brush.h +++ /dev/null @@ -1,64 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: brush.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKBRUSHH__ -#define __GTKBRUSHH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/string.h" -#include "wx/gdiobj.h" -#include "wx/bitmap.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxBrush; - -//----------------------------------------------------------------------------- -// wxBrush -//----------------------------------------------------------------------------- - -class wxBrush: public wxGDIObject -{ - DECLARE_DYNAMIC_CLASS(wxBrush) - - public: - - wxBrush(); - wxBrush( const wxColour &colour, int style ); - wxBrush( const wxBitmap &stippleBitmap ); - wxBrush( const wxBrush &brush ); - ~wxBrush(); - wxBrush& operator = ( const wxBrush& brush ); - bool operator == ( const wxBrush& brush ); - bool operator != ( const wxBrush& brush ); - bool Ok() const; - - int GetStyle() const; - wxColour &GetColour() const; - wxBitmap *GetStipple() const; - - void SetColour( const wxColour& col ); - void SetColour( unsigned char r, unsigned char g, unsigned char b ); - void SetStyle( int style ); - void SetStipple( const wxBitmap& stipple ); - - void Unshare(); - - // no data :-) -}; - -#endif // __GTKBRUSHH__ diff --git a/include/wx/gtk1/button.h b/include/wx/gtk1/button.h deleted file mode 100644 index 2b8b262c96..0000000000 --- a/include/wx/gtk1/button.h +++ /dev/null @@ -1,69 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: button.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKBUTTONH__ -#define __GTKBUTTONH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/list.h" -#include "wx/control.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxButton; - -//----------------------------------------------------------------------------- -// global data -//----------------------------------------------------------------------------- - -extern const char *wxButtonNameStr; - -//----------------------------------------------------------------------------- -// wxButton -//----------------------------------------------------------------------------- - -class wxButton: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxButton) - - public: - - wxButton(); - inline wxButton(wxWindow *parent, wxWindowID id, const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxButtonNameStr) - { - Create(parent, id, label, pos, size, style, validator, name); - } - ~wxButton(); - bool Create(wxWindow *parent, wxWindowID id, const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxButtonNameStr); - void SetDefault(); - void SetLabel( const wxString &label ); - void Enable( bool enable ); - - // implementation - - void ApplyWidgetStyle(); -}; - -#endif // __GTKBUTTONH__ diff --git a/include/wx/gtk1/checkbox.h b/include/wx/gtk1/checkbox.h deleted file mode 100644 index f883cf78c9..0000000000 --- a/include/wx/gtk1/checkbox.h +++ /dev/null @@ -1,72 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: checkbox.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKCHECKBOXH__ -#define __GTKCHECKBOXH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/list.h" -#include "wx/control.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxCheckBox; - -//----------------------------------------------------------------------------- -// global data -//----------------------------------------------------------------------------- - -extern const char *wxCheckBoxNameStr; - -//----------------------------------------------------------------------------- -// wxCheckBox -//----------------------------------------------------------------------------- - -class wxCheckBox: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxCheckBox) - - public: - - wxCheckBox(void); - inline wxCheckBox( wxWindow *parent, wxWindowID id, const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxCheckBoxNameStr) - { - Create(parent, id, label, pos, size, style, validator, name); - } - bool Create( wxWindow *parent, wxWindowID id, const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxCheckBoxNameStr ); - void SetValue( bool state ); - bool GetValue() const; - - void SetLabel( const wxString& label ); - void Enable( bool enable ); - - // implementation - - void ApplyWidgetStyle(); - - bool m_blockFirstEvent; -}; - -#endif // __GTKCHECKBOXH__ diff --git a/include/wx/gtk1/checklst.h b/include/wx/gtk1/checklst.h deleted file mode 100644 index 4331972d9f..0000000000 --- a/include/wx/gtk1/checklst.h +++ /dev/null @@ -1,57 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: checklst.h -// Purpose: wxCheckListBox class -// Author: Robert Roebling -// Modified by: -// RCS-ID: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -#ifndef __GTKCHECKLISTH__ -#define __GTKCHECKLISTH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/list.h" -#include "wx/control.h" -#include "wx/listbox.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxCheckListBox; - -//----------------------------------------------------------------------------- -// wxCheckListBox -//----------------------------------------------------------------------------- - -class wxCheckListBox : public wxListBox -{ - DECLARE_DYNAMIC_CLASS(wxCheckListBox) -public: - - wxCheckListBox(); - wxCheckListBox(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - int nStrings = 0, - const wxString choices[] = (wxString[]) NULL, - long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxListBoxNameStr); - - bool IsChecked( int index ) const; - void Check( int index, bool check = TRUE ); - - int GetItemHeight(); - -}; - -#endif - //__GTKCHECKLISTH__ diff --git a/include/wx/gtk1/choice.h b/include/wx/gtk1/choice.h deleted file mode 100644 index 393c9e8861..0000000000 --- a/include/wx/gtk1/choice.h +++ /dev/null @@ -1,95 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: choice.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __GTKCHOICEH__ -#define __GTKCHOICEH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/list.h" -#include "wx/control.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxChoice; - -//----------------------------------------------------------------------------- -// global data -//----------------------------------------------------------------------------- - -extern const char *wxChoiceNameStr; - -//----------------------------------------------------------------------------- -// wxChoice -//----------------------------------------------------------------------------- - -class wxChoice: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxChoice) - -public: - - wxChoice(); - inline wxChoice( wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = (const wxString *) NULL, - long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxChoiceNameStr ) - { - Create(parent, id, pos, size, n, choices, style, validator, name); - } - ~wxChoice(); - bool Create( wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = (wxString *) NULL, - long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxChoiceNameStr ); - - void Append( const wxString &item ); - void Append( const wxString &item, void* clientData ); - void Append( const wxString &item, wxClientData* clientData ); - - void SetClientData( int n, void* clientData ); - void* GetClientData( int n ); - void SetClientObject( int n, wxClientData* clientData ); - wxClientData* GetClientObject( int n ); - - void Clear(); - void Delete(int n); - - int FindString( const wxString &string ) const; - int GetColumns() const; - int GetSelection(); - wxString GetString( int n ) const; - wxString GetStringSelection() const; - int Number() const; - void SetColumns( int n = 1 ); - void SetSelection( int n ); - void SetStringSelection( const wxString &string ); - -// implementation - - wxList m_clientDataList; - wxList m_clientObjectList; - - void AppendCommon( const wxString &item ); - void ApplyWidgetStyle(); -}; - -#endif // __GTKCHOICEH__ diff --git a/include/wx/gtk1/clipbrd.h b/include/wx/gtk1/clipbrd.h deleted file mode 100644 index e880b5ffaa..0000000000 --- a/include/wx/gtk1/clipbrd.h +++ /dev/null @@ -1,110 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: clipboard.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKCLIPBOARDH__ -#define __GTKCLIPBOARDH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" - -#if wxUSE_CLIPBOARD - -#include "wx/object.h" -#include "wx/list.h" -#include "wx/dataobj.h" -#include "wx/control.h" -#include "wx/module.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxClipboard; -class wxClipboardModule; - -//----------------------------------------------------------------------------- -// global data -//----------------------------------------------------------------------------- - -extern wxClipboard* wxTheClipboard; - -//----------------------------------------------------------------------------- -// wxClipboard -//----------------------------------------------------------------------------- - -class wxClipboard: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxClipboard) - -public: - - wxClipboard(); - ~wxClipboard(); - - /* open the clipboard before SetData() and GetData() */ - virtual bool Open(); - - /* close the clipboard after SetData() and GetData() */ - virtual void Close(); - - /* set the clipboard data. all other formats will be deleted. */ - virtual bool SetData( wxDataObject *data ); - - /* add to the clipboard data. */ - virtual bool AddData( wxDataObject *data ); - - /* ask if data in correct format is available */ - virtual bool IsSupported( wxDataObject &data ); - - /* fill data with data on the clipboard (if available) */ - virtual bool GetData( wxDataObject &data ); - - /* clears wxTheClipboard and the system's clipboard if possible */ - virtual void Clear(); - - /* implementation */ - - bool m_open; - - bool m_ownsClipboard; - bool m_ownsPrimarySelection; - - wxDataBroker *m_dataBroker; - GtkWidget *m_clipboardWidget; - - bool m_formatSupported; - GdkAtom m_targetRequested; - - wxDataObject *m_receivedData; -}; - -//----------------------------------------------------------------------------- -// wxClipboardModule -//----------------------------------------------------------------------------- - -class wxClipboardModule: public wxModule -{ - DECLARE_DYNAMIC_CLASS(wxClipboardModule) - -public: - wxClipboardModule() {} - bool OnInit(); - void OnExit(); -}; - -#endif - - // wxUSE_CLIPBOARD - -#endif - // __GTKCLIPBOARDH__ diff --git a/include/wx/gtk1/colour.h b/include/wx/gtk1/colour.h deleted file mode 100644 index ff686d2e06..0000000000 --- a/include/wx/gtk1/colour.h +++ /dev/null @@ -1,82 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: colour.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKCOLOURH__ -#define __GTKCOLOURH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/string.h" -#include "wx/gdiobj.h" -#include "wx/palette.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxDC; -class wxPaintDC; -class wxBitmap; -class wxWindow; - -class wxColour; - -//----------------------------------------------------------------------------- -// wxColour -//----------------------------------------------------------------------------- - -class wxColour: public wxGDIObject -{ -public: - // ctors - // default - wxColour(); - // from RGB - wxColour( unsigned char red, unsigned char green, unsigned char blue ); - // implicit conversion from the colour name - wxColour( const wxString &colourName ) { InitFromName(colourName); } - wxColour( const char *colourName ) { InitFromName(colourName); } - - // copy ctors and assignment operators - wxColour( const wxColour& col ); - wxColour& operator = ( const wxColour& col ); - - // dtor - ~wxColour(); - - // comparison - bool operator == ( const wxColour& col ); - bool operator != ( const wxColour& col ); - - // accessors - void Set( unsigned char red, unsigned char green, unsigned char blue ); - unsigned char Red() const; - unsigned char Green() const; - unsigned char Blue() const; - bool Ok() const; - - // implementation - void CalcPixel( GdkColormap *cmap ); - int GetPixel() const; - GdkColor *GetColor() const; - -protected: - // helper functions - void InitFromName(const wxString& colourName); - -private: - DECLARE_DYNAMIC_CLASS(wxColour) -}; - -#endif // __GTKCOLOURH__ diff --git a/include/wx/gtk1/combobox.h b/include/wx/gtk1/combobox.h deleted file mode 100644 index 7d7822f941..0000000000 --- a/include/wx/gtk1/combobox.h +++ /dev/null @@ -1,122 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: combobox.h -// Purpose: -// Author: Robert Roebling -// Created: 01/02/97 -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKCOMBOBOXH__ -#define __GTKCOMBOBOXH__ - -#ifdef __GNUG__ -#pragma interface "combobox.h" -#endif - -#include "wx/defs.h" - -#include "wx/object.h" -#include "wx/control.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxComboBox; - -//----------------------------------------------------------------------------- -// global data -//----------------------------------------------------------------------------- - -extern const char* wxComboBoxNameStr; -extern const char* wxEmptyString; - -//----------------------------------------------------------------------------- -// wxComboBox -//----------------------------------------------------------------------------- - -class wxComboBox : public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxComboBox) - -public: - - inline wxComboBox() {} - inline wxComboBox(wxWindow *parent, wxWindowID id, - const wxString& value = wxEmptyString, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = (const wxString *) NULL, - long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxComboBoxNameStr) - { - Create(parent, id, value, pos, size, n, choices, style, validator, name); - } - ~wxComboBox(); - bool Create(wxWindow *parent, wxWindowID id, - const wxString& value = wxEmptyString, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = (const wxString *) NULL, - long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxComboBoxNameStr); - - void Append( const wxString &item ); - void Append( const wxString &item, void* clientData ); - void Append( const wxString &item, wxClientData* clientData ); - - void SetClientData( int n, void* clientData ); - void* GetClientData( int n ); - void SetClientObject( int n, wxClientData* clientData ); - wxClientData* GetClientObject( int n ); - - void Clear(); - void Delete( int n ); - - int FindString( const wxString &item ); - int GetSelection() const; - wxString GetString( int n ) const; - wxString GetStringSelection() const; - int Number() const; - void SetSelection( int n ); - void SetStringSelection( const wxString &string ); - - wxString GetValue() const; - void SetValue(const wxString& value); - - void Copy(); - void Cut(); - void Paste(); - void SetInsertionPoint( long pos ); - void SetInsertionPointEnd(); - long GetInsertionPoint() const; - long GetLastPosition() const; - void Replace( long from, long to, const wxString& value ); - void Remove( long from, long to ); - void SetSelection( long from, long to ); - void SetEditable( bool editable ); - - void OnSize( wxSizeEvent &event ); - -// implementation - - bool m_alreadySent; - wxList m_clientDataList; - wxList m_clientObjectList; - - void AppendCommon( const wxString &item ); - GtkWidget* GetConnectWidget(); - bool IsOwnGtkWindow( GdkWindow *window ); - void ApplyWidgetStyle(); - - DECLARE_EVENT_TABLE() -}; - -#endif - - // __GTKCOMBOBOXH__ diff --git a/include/wx/gtk1/control.h b/include/wx/gtk1/control.h deleted file mode 100644 index d3a164d275..0000000000 --- a/include/wx/gtk1/control.h +++ /dev/null @@ -1,55 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: control.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling, Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __GTKCONTROLH__ -#define __GTKCONTROLH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/list.h" -#include "wx/window.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxControl; - -//----------------------------------------------------------------------------- -// wxControl -//----------------------------------------------------------------------------- - -class wxControl: public wxWindow -{ -DECLARE_DYNAMIC_CLASS(wxControl) - -public: - wxControl(); - wxControl( wxWindow *parent, wxWindowID id, - const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, - long style = 0, const wxString &name = wxPanelNameStr ); - - virtual void Command( wxCommandEvent &event ); - - // this function will filter out '&' characters and will put the accelerator - // char (the one immediately after '&') into m_chAccel (@@ not yet) - virtual void SetLabel( const wxString &label ); - virtual wxString GetLabel() const; - -protected: - wxString m_label; - char m_chAccel; // enabled to avoid breaking binary compatibility later on - -}; - -#endif // __GTKCONTROLH__ diff --git a/include/wx/gtk1/cursor.h b/include/wx/gtk1/cursor.h deleted file mode 100644 index d274b6be95..0000000000 --- a/include/wx/gtk1/cursor.h +++ /dev/null @@ -1,46 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: cursor.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKCURSORH__ -#define __GTKCURSORH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/gdicmn.h" - -//----------------------------------------------------------------------------- -// wxCursor -//----------------------------------------------------------------------------- - -class wxCursor: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxCursor) - - public: - - wxCursor(); - wxCursor( int cursorId ); - wxCursor( const wxCursor &cursor ); - ~wxCursor(); - wxCursor& operator = ( const wxCursor& cursor ); - bool operator == ( const wxCursor& cursor ) const; - bool operator != ( const wxCursor& cursor ) const; - bool Ok() const; - - GdkCursor *GetCursor() const; - - // no data :-) -}; - -#endif // __GTKCURSORH__ diff --git a/include/wx/gtk1/dataobj.h b/include/wx/gtk1/dataobj.h deleted file mode 100644 index 42233e4494..0000000000 --- a/include/wx/gtk1/dataobj.h +++ /dev/null @@ -1,317 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: dataobj.h -// Purpose: declaration of the wxDataObject class -// Author: Robert Roebling -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin, Robert Roebling -// Licence: wxWindows license -/////////////////////////////////////////////////////////////////////////////// - -#ifndef __GTKDATAOBJECTH__ -#define __GTKDATAOBJECTH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/string.h" -#include "wx/bitmap.h" - -//------------------------------------------------------------------------- -// classes -//------------------------------------------------------------------------- - -class wxDataFormat; -class wxDataBroker; -class wxDataObject; -class wxTextDataObject; -class wxBitmapDataObject; -class wxPrivateDataObject; -class wxFileDataObject; - -//------------------------------------------------------------------------- -// wxDataType (internal) -//------------------------------------------------------------------------- - -enum wxDataType -{ - wxDF_INVALID = 0, - wxDF_TEXT = 1, /* CF_TEXT */ - wxDF_BITMAP = 2, /* CF_BITMAP */ - wxDF_METAFILE = 3, /* CF_METAFILEPICT */ - wxDF_SYLK = 4, - wxDF_DIF = 5, - wxDF_TIFF = 6, - wxDF_OEMTEXT = 7, /* CF_OEMTEXT */ - wxDF_DIB = 8, /* CF_DIB */ - wxDF_PALETTE = 9, - wxDF_PENDATA = 10, - wxDF_RIFF = 11, - wxDF_WAVE = 12, - wxDF_UNICODETEXT = 13, - wxDF_ENHMETAFILE = 14, - wxDF_FILENAME = 15, /* CF_HDROP */ - wxDF_LOCALE = 16, - wxDF_PRIVATE = 20 -}; - -//------------------------------------------------------------------------- -// wxDataFormat (internal) -//------------------------------------------------------------------------- - -class wxDataFormat : public wxObject -{ - DECLARE_CLASS( wxDataFormat ) - -public: - - wxDataFormat(); - wxDataFormat( wxDataType type ); - wxDataFormat( const wxString &id ); - wxDataFormat( wxDataFormat &format ); - wxDataFormat( const GdkAtom atom ); - - void SetType( wxDataType type ); - wxDataType GetType() const; - - wxString GetId() const; - void SetId( const wxString &id ); - - GdkAtom GetAtom(); - -private: - - wxDataType m_type; - wxString m_id; - bool m_hasAtom; - GdkAtom m_atom; -}; - -//------------------------------------------------------------------------- -// wxDataBroker (internal) -//------------------------------------------------------------------------- - -class wxDataBroker : public wxObject -{ - DECLARE_CLASS( wxDataBroker ) - -public: - - /* constructor */ - wxDataBroker(); - - /* add data object */ - void Add( wxDataObject *dataObject, bool preferred = FALSE ); - -private: - - /* OLE implementation, the methods don't need to be overridden */ - - /* get number of supported formats */ - virtual size_t GetFormatCount() const; - - /* return nth supported format */ - virtual wxDataFormat &GetNthFormat( size_t nth ) const; - - /* return preferrd/best supported format */ - virtual wxDataFormat &GetPreferredFormat() const; - - /* search through m_dataObjects, return TRUE if found */ - virtual bool IsSupportedFormat( wxDataFormat &format ) const; - - /* search through m_dataObjects and call child's GetSize() */ - virtual size_t GetSize( wxDataFormat& format ) const; - - /* search through m_dataObjects and call child's WriteData(dest) */ - virtual void WriteData( wxDataFormat& format, void *dest ) const; - - /* implementation */ - -public: - - wxList m_dataObjects; - size_t m_preferred; -}; - -//---------------------------------------------------------------------------- -// wxDataObject to be placed in wxDataBroker -//---------------------------------------------------------------------------- - -class wxDataObject : public wxObject -{ - DECLARE_DYNAMIC_CLASS( wxDataObject ) - -public: - - /* constructor */ - wxDataObject(); - - /* destructor */ - ~wxDataObject(); - - /* write data to dest */ - virtual void WriteData( void *dest ) const = 0; - - /* get size of data */ - virtual size_t GetSize() const = 0; - - /* implementation */ - - wxDataFormat &GetFormat(); - - wxDataType GetFormatType() const; - wxString GetFormatId() const; - GdkAtom GetFormatAtom() const; - - wxDataFormat m_format; -}; - -//---------------------------------------------------------------------------- -// wxTextDataObject is a specialization of wxDataObject for text data -//---------------------------------------------------------------------------- - -class wxTextDataObject : public wxDataObject -{ - DECLARE_DYNAMIC_CLASS( wxTextDataObject ) - -public: - - /* default constructor. call SetText() later or override - WriteData() and GetSize() for working on-demand */ - wxTextDataObject(); - - /* constructor */ - wxTextDataObject( const wxString& data ); - - /* set current text data */ - void SetText( const wxString& data ); - - /* get current text data */ - wxString GetText() const; - - /* by default calls WriteString() with string set by constructor or - by SetText(). can be overridden for working on-demand */ - virtual void WriteData( void *dest ) const; - - /* by default, returns length of string as set by constructor or - by SetText(). can be overridden for working on-demand */ - virtual size_t GetSize() const; - - /* write string to dest */ - void WriteString( const wxString &str, void *dest ) const; - - /* implementation */ - - wxString m_data; -}; - -//---------------------------------------------------------------------------- -// wxFileDataObject is a specialization of wxDataObject for file names -//---------------------------------------------------------------------------- - -class wxFileDataObject : public wxDataObject -{ - DECLARE_DYNAMIC_CLASS( wxFileDataObject ) - -public: - - /* default constructor */ - wxFileDataObject(); - - /* add file name to list */ - void AddFile( const wxString &file ); - - /* get all filename as one string. each file name is 0 terminated, - the list is double zero terminated */ - wxString GetFiles() const; - - /* write list of filenames */ - virtual void WriteData( void *dest ) const; - - /* return length of list of filenames */ - virtual size_t GetSize() const; - - /* implementation */ - - wxString m_files; -}; - -//---------------------------------------------------------------------------- -// wxBitmapDataObject is a specialization of wxDataObject for bitmaps -//---------------------------------------------------------------------------- - -class wxBitmapDataObject : public wxDataObject -{ - DECLARE_DYNAMIC_CLASS( wxBitmapDataObject ) - -public: - - /* see wxTextDataObject for explanation */ - - wxBitmapDataObject(); - wxBitmapDataObject( const wxBitmap& bitmap ); - - void SetBitmap( const wxBitmap &bitmap ); - wxBitmap GetBitmap() const; - - virtual void WriteData( void *dest ) const; - virtual size_t GetSize() const; - - void WriteBitmap( const wxBitmap &bitmap, void *dest ) const; - - // implementation - - wxBitmap m_bitmap; - -}; - -//---------------------------------------------------------------------------- -// wxPrivateDataObject is a specialization of wxDataObject for app specific data -//---------------------------------------------------------------------------- - -class wxPrivateDataObject : public wxDataObject -{ - DECLARE_DYNAMIC_CLASS( wxPrivateDataObject ) - -public: - - /* see wxTextDataObject for explanation of functions */ - - wxPrivateDataObject(); - ~wxPrivateDataObject(); - - /* the string Id identifies the format of clipboard or DnD data. a word - * processor would e.g. add a wxTextDataObject and a wxPrivateDataObject - * to the clipboard - the latter with the Id "application/wxword", an - * image manipulation program would put a wxBitmapDataObject and a - * wxPrivateDataObject to the clipboard - the latter with "image/png". */ - - void SetId( const wxString& id ); - - /* get id */ - wxString GetId() const; - - /* set data. will make internal copy. */ - void SetData( const char *data, size_t size ); - - /* returns pointer to data */ - char* GetData() const; - - virtual void WriteData( void *dest ) const; - virtual size_t GetSize() const; - - void WriteData( const char *data, void *dest ) const; - - // implementation - - size_t m_size; - char* m_data; - wxString m_id; -}; - - -#endif - //__GTKDNDH__ - diff --git a/include/wx/gtk1/dc.h b/include/wx/gtk1/dc.h deleted file mode 100644 index 7f4503fb6e..0000000000 --- a/include/wx/gtk1/dc.h +++ /dev/null @@ -1,377 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dc.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKDCH__ -#define __GTKDCH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/gdicmn.h" -#include "wx/pen.h" -#include "wx/brush.h" -#include "wx/icon.h" -#include "wx/font.h" -#include "wx/gdicmn.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxDC; - -//----------------------------------------------------------------------------- -// constants -//----------------------------------------------------------------------------- - -#define MM_TEXT 0 -#define MM_ISOTROPIC 1 -#define MM_ANISOTROPIC 2 -#define MM_LOMETRIC 3 -#define MM_HIMETRIC 4 -#define MM_TWIPS 5 -#define MM_POINTS 6 -#define MM_METRIC 7 - -//----------------------------------------------------------------------------- -// global variables -//----------------------------------------------------------------------------- - -extern int wxPageNumber; - -//----------------------------------------------------------------------------- -// wxDC -//----------------------------------------------------------------------------- - -class wxDC: public wxObject -{ - DECLARE_ABSTRACT_CLASS(wxDC) - -public: - - wxDC(); - ~wxDC(); - - virtual void BeginDrawing() {} - virtual void EndDrawing() {} - - virtual bool Ok() const; - - virtual void FloodFill( long x, long y, const wxColour& col, int style=wxFLOOD_SURFACE ) = 0; - inline void FloodFill(const wxPoint& pt, const wxColour& col, int style=wxFLOOD_SURFACE) - { - FloodFill(pt.x, pt.y, col, style); - } - virtual bool GetPixel( long x, long y, wxColour *col ) const = 0; - inline bool GetPixel(const wxPoint& pt, wxColour *col) const - { - return GetPixel(pt.x, pt.y, col); - } - - virtual void DrawLine( long x1, long y1, long x2, long y2 ) = 0; - inline void DrawLine(const wxPoint& pt1, const wxPoint& pt2) - { - DrawLine(pt1.x, pt1.y, pt2.x, pt2.y); - } - virtual void CrossHair( long x, long y ) = 0; - inline void CrossHair(const wxPoint& pt) - { - CrossHair(pt.x, pt.y); - } - virtual void DrawArc( long x1, long y1, long x2, long y2, double xc, double yc ); - inline void DrawArc(const wxPoint& pt1, const wxPoint& pt2, const wxPoint& centre) - { - DrawArc(pt1.x, pt1.y, pt2.x, pt2.y, centre.x, centre.y); - } - virtual void DrawEllipticArc( long x, long y, long width, long height, double sa, double ea ) = 0; - virtual void DrawEllipticArc (const wxPoint& pt, const wxSize& sz, double sa, double ea) - { - DrawEllipticArc(pt.x, pt.y, sz.x, sz.y, sa, ea); - } - virtual void DrawPoint( long x, long y ) = 0; - inline void DrawPoint(const wxPoint& pt) - { - DrawPoint(pt.x, pt.y); - } - virtual void DrawPoint( wxPoint& point ); - - virtual void DrawLines( int n, wxPoint points[], long xoffset = 0, long yoffset = 0 ) = 0; - virtual void DrawLines( wxList *points, long xoffset = 0, long yoffset = 0 ); - virtual void DrawPolygon( int n, wxPoint points[], long xoffset = 0, long yoffset = 0, - int fillStyle=wxODDEVEN_RULE ) = 0; - virtual void DrawPolygon( wxList *lines, long xoffset = 0, long yoffset = 0, - int fillStyle=wxODDEVEN_RULE ); - - virtual void DrawRectangle( long x, long y, long width, long height ) = 0; - inline void DrawRectangle(const wxPoint& pt, const wxSize& sz) - { - DrawRectangle(pt.x, pt.y, sz.x, sz.y); - } - inline void DrawRectangle(const wxRect& rect) - { - DrawRectangle(rect.x, rect.y, rect.width, rect.height); - } - virtual void DrawRoundedRectangle( long x, long y, long width, long height, double radius = 20.0 ) = 0; - inline void DrawRoundedRectangle(const wxPoint& pt, const wxSize& sz, double radius = 20.0) - { - DrawRoundedRectangle(pt.x, pt.y, sz.x, sz.y, radius); - } - inline void DrawRoundedRectangle(const wxRect& rect, double radius = 20.0) - { - DrawRoundedRectangle(rect.x, rect.y, rect.width, rect.height, radius); - } - virtual void DrawEllipse( long x, long y, long width, long height ) = 0; - inline void DrawEllipse(const wxPoint& pt, const wxSize& sz) - { - DrawEllipse(pt.x, pt.y, sz.x, sz.y); - } - inline void DrawEllipse(const wxRect& rect) - { - DrawEllipse(rect.x, rect.y, rect.width, rect.height); - } - - virtual void DrawSpline( long x1, long y1, long x2, long y2, long x3, long y3 ); - virtual void DrawSpline( wxList *points ) = 0; - virtual void DrawSpline( int n, wxPoint points[] ); - - virtual bool CanDrawBitmap(void) const = 0; - virtual void DrawIcon( const wxIcon &icon, long x, long y ) = 0; - inline void DrawIcon( const wxIcon& icon, const wxPoint& pt ) - { - DrawIcon(icon, pt.x, pt.y); - } - virtual void DrawBitmap( const wxBitmap &bmp, long x, long y, bool useMask=FALSE ) = 0; - inline void DrawBitmap( const wxBitmap& bitmap, const wxPoint& pt, bool useMask=FALSE ) - { - DrawBitmap(bitmap, pt.x, pt.y, useMask ); - } - virtual bool Blit( long xdest, long ydest, - long width, long height, - wxDC *source, - long xsrc, long ysrc, - int logical_func=wxCOPY, - bool useMask=FALSE ) = 0; - inline bool Blit( const wxPoint& destPt, - const wxSize& sz, - wxDC *source, - const wxPoint& srcPt, - int rop = wxCOPY, - bool useMask=FALSE) - { - return Blit(destPt.x, destPt.y, sz.x, sz.y, source, srcPt.x, srcPt.y, rop, useMask); - } - - virtual void DrawText( const wxString &text, long x, long y, bool use16 = FALSE ) = 0; - inline void DrawText(const wxString& text, const wxPoint& pt, bool use16bit = FALSE ) - { - DrawText(text, pt.x, pt.y, use16bit); - } - virtual bool CanGetTextExtent(void) const = 0; - virtual void GetTextExtent( const wxString &string, - long *width, long *height, - long *descent = (long *) NULL, - long *externalLeading = (long *) NULL, - wxFont *theFont = (wxFont *) NULL, - bool use16 = FALSE ) = 0; - virtual long GetCharWidth(void) = 0; - virtual long GetCharHeight(void) = 0; - - virtual void Clear() = 0; - - virtual void SetFont( const wxFont &font ) = 0; - virtual wxFont& GetFont() const { return (wxFont&)m_font; }; - - virtual void SetPen( const wxPen &pen ) = 0; - virtual wxPen& GetPen() const { return (wxPen&)m_pen; }; - - virtual void SetBrush( const wxBrush &brush ) = 0; - virtual wxBrush& GetBrush() const { return (wxBrush&)m_brush; }; - - virtual void SetBackground( const wxBrush &brush ) = 0; - virtual wxBrush& GetBackground() const { return (wxBrush&)m_backgroundBrush; }; - - virtual void SetLogicalFunction( int function ) = 0; - virtual int GetLogicalFunction() { return m_logicalFunction; }; - - virtual void SetTextForeground( const wxColour &col ); - virtual void SetTextBackground( const wxColour &col ); - virtual wxColour& GetTextBackground() const { return (wxColour&)m_textBackgroundColour; }; - virtual wxColour& GetTextForeground() const { return (wxColour&)m_textForegroundColour; }; - - virtual void SetBackgroundMode( int mode ) = 0; - virtual int GetBackgroundMode() { return m_backgroundMode; }; - - virtual void SetPalette( const wxPalette& palette ) = 0; - void SetColourMap( const wxPalette& palette ) { SetPalette(palette); }; - - // the first two must be overridden and called - virtual void DestroyClippingRegion(void); - virtual void SetClippingRegion( long x, long y, long width, long height ); - virtual void GetClippingBox( long *x, long *y, long *width, long *height ) const; - virtual void SetClippingRegion( const wxRegion ®ion ) = 0; - - virtual long MinX() const { return m_minX; } - virtual long MaxX() const { return m_maxX; } - virtual long MinY() const { return m_minY; } - virtual long MaxY() const { return m_maxY; } - - virtual void GetSize( int* width, int* height ) const; - inline wxSize GetSize(void) const { int w, h; GetSize(&w, &h); return wxSize(w, h); } - virtual void GetSizeMM( long* width, long* height ) const; - - virtual bool StartDoc( const wxString& WXUNUSED(message) ) { return TRUE; } - virtual void EndDoc() {} - virtual void StartPage() {} - virtual void EndPage() {} - - virtual void SetMapMode( int mode ); - virtual int GetMapMode(void) const { return m_mappingMode; }; - - virtual void SetUserScale( double x, double y ); - virtual void GetUserScale( double *x, double *y ); - virtual void SetLogicalScale( double x, double y ); - virtual void GetLogicalScale( double *x, double *y ); - - virtual void SetLogicalOrigin( long x, long y ); - virtual void GetLogicalOrigin( long *x, long *y ); - virtual void SetDeviceOrigin( long x, long y ); - virtual void GetDeviceOrigin( long *x, long *y ); - - virtual void SetAxisOrientation( bool xLeftRight, bool yBottomUp ); - - virtual void SetOptimization( bool WXUNUSED(optimize) ) {} - virtual bool GetOptimization() { return m_optimize; } - - virtual long DeviceToLogicalX(long x) const; - virtual long DeviceToLogicalY(long y) const; - virtual long DeviceToLogicalXRel(long x) const; - virtual long DeviceToLogicalYRel(long y) const; - virtual long LogicalToDeviceX(long x) const; - virtual long LogicalToDeviceY(long y) const; - virtual long LogicalToDeviceXRel(long x) const; - virtual long LogicalToDeviceYRel(long y) const; - - // implementation - - void CalcBoundingBox( long x, long y ); - void ComputeScaleAndOrigin(); - - long XDEV2LOG(long x) const - { - long new_x = x - m_deviceOriginX; - if (new_x > 0) - return (long)((double)(new_x) / m_scaleX + 0.5) * m_signX + m_logicalOriginX; - else - return (long)((double)(new_x) / m_scaleX - 0.5) * m_signX + m_logicalOriginX; - } - long XDEV2LOGREL(long x) const - { - if (x > 0) - return (long)((double)(x) / m_scaleX + 0.5); - else - return (long)((double)(x) / m_scaleX - 0.5); - } - long YDEV2LOG(long y) const - { - long new_y = y - m_deviceOriginY; - if (new_y > 0) - return (long)((double)(new_y) / m_scaleY + 0.5) * m_signY + m_logicalOriginY; - else - return (long)((double)(new_y) / m_scaleY - 0.5) * m_signY + m_logicalOriginY; - } - long YDEV2LOGREL(long y) const - { - if (y > 0) - return (long)((double)(y) / m_scaleY + 0.5); - else - return (long)((double)(y) / m_scaleY - 0.5); - } - long XLOG2DEV(long x) const - { - long new_x = x - m_logicalOriginX; - if (new_x > 0) - return (long)((double)(new_x) * m_scaleX + 0.5) * m_signX + m_deviceOriginX; - else - return (long)((double)(new_x) * m_scaleX - 0.5) * m_signX + m_deviceOriginX; - } - long XLOG2DEVREL(long x) const - { - if (x > 0) - return (long)((double)(x) * m_scaleX + 0.5); - else - return (long)((double)(x) * m_scaleX - 0.5); - } - long YLOG2DEV(long y) const - { - long new_y = y - m_logicalOriginY; - if (new_y > 0) - return (long)((double)(new_y) * m_scaleY + 0.5) * m_signY + m_deviceOriginY; - else - return (long)((double)(new_y) * m_scaleY - 0.5) * m_signY + m_deviceOriginY; - } - long YLOG2DEVREL(long y) const - { - if (y > 0) - return (long)((double)(y) * m_scaleY + 0.5); - else - return (long)((double)(y) * m_scaleY - 0.5); - } - - - public: - - bool m_ok; - bool m_colour; - - // not sure, what these mean - bool m_clipping; // Is clipping on right now ? - bool m_isInteractive; // Is GetPixel possible ? - bool m_autoSetting; // wxMSW only ? - bool m_dontDelete; // wxMSW only ? - bool m_optimize; // wxMSW only ? - wxString m_filename; // Not sure where this belongs. - - wxPen m_pen; - wxBrush m_brush; - wxBrush m_backgroundBrush; - wxColour m_textForegroundColour; - wxColour m_textBackgroundColour; - wxFont m_font; - - int m_logicalFunction; - int m_backgroundMode; - int m_textAlignment; // gone in wxWin 2.0 ? - - int m_mappingMode; - - // not sure what for, but what is a mm on a screen you don't know the size of? - double m_mm_to_pix_x,m_mm_to_pix_y; - - long m_deviceOriginX,m_deviceOriginY; - - long m_logicalOriginX,m_logicalOriginY; // User defined. - - double m_scaleX,m_scaleY; - double m_logicalScaleX,m_logicalScaleY; - double m_userScaleX,m_userScaleY; - long m_signX,m_signY; - - bool m_needComputeScaleX,m_needComputeScaleY; // not yet used - - float m_scaleFactor; // wxPSDC wants to have this. Will disappear. - - long m_clipX1,m_clipY1,m_clipX2,m_clipY2; - long m_minX,m_maxX,m_minY,m_maxY; -}; - -#endif // __GTKDCH__ diff --git a/include/wx/gtk1/dcclient.h b/include/wx/gtk1/dcclient.h deleted file mode 100644 index 4f4999affb..0000000000 --- a/include/wx/gtk1/dcclient.h +++ /dev/null @@ -1,137 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcclient.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKDCCLIENTH__ -#define __GTKDCCLIENTH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/dc.h" -#include "wx/window.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxWindowDC; -class wxPaintDC; -class wxClientDC; - -//----------------------------------------------------------------------------- -// wxWindowDC -//----------------------------------------------------------------------------- - -class wxWindowDC: public wxDC -{ - DECLARE_DYNAMIC_CLASS(wxWindowDC) - -public: - wxWindowDC(); - wxWindowDC( wxWindow *win ); - - ~wxWindowDC(); - - virtual void FloodFill( long x, long y, const wxColour& col, int style=wxFLOOD_SURFACE ); - virtual bool GetPixel( long x1, long y1, wxColour *col ) const; - - virtual void DrawLine( long x1, long y1, long x2, long y2 ); - virtual void CrossHair( long x, long y ); - virtual void DrawArc( long x1, long y1, long x2, long y2, double xc, double yc ); - virtual void DrawEllipticArc( long x, long y, long width, long height, double sa, double ea ); - virtual void DrawPoint( long x, long y ); - - virtual void DrawLines( int n, wxPoint points[], long xoffset = 0, long yoffset = 0 ); - virtual void DrawLines( wxList *points, long xoffset = 0, long yoffset = 0 ); - virtual void DrawPolygon( int n, wxPoint points[], long xoffset = 0, long yoffset = 0, - int fillStyle=wxODDEVEN_RULE ); - virtual void DrawPolygon( wxList *lines, long xoffset = 0, long yoffset = 0, - int fillStyle=wxODDEVEN_RULE ); - - virtual void DrawRectangle( long x, long y, long width, long height ); - virtual void DrawRoundedRectangle( long x, long y, long width, long height, double radius = 20.0 ); - virtual void DrawEllipse( long x, long y, long width, long height ); - - virtual bool CanDrawBitmap() const; - virtual void DrawIcon( const wxIcon &icon, long x, long y ); - virtual void DrawBitmap( const wxBitmap &bitmap, long x, long y, bool useMask=FALSE ); - virtual bool Blit( long xdest, long ydest, long width, long height, - wxDC *source, long xsrc, long ysrc, int logical_func = wxCOPY, bool useMask=FALSE ); - - virtual void DrawText( const wxString &text, long x, long y, bool use16 = FALSE ); - virtual bool CanGetTextExtent() const; - virtual void GetTextExtent( const wxString &string, long *width, long *height, - long *descent = (long *) NULL, long *externalLeading = (long *) NULL, - wxFont *theFont = (wxFont *) NULL, bool use16 = FALSE ); - virtual long GetCharWidth(); - virtual long GetCharHeight(); - - virtual void Clear(); - - virtual void SetFont( const wxFont &font ); - virtual void SetPen( const wxPen &pen ); - virtual void SetBrush( const wxBrush &brush ); - virtual void SetBackground( const wxBrush &brush ); - virtual void SetLogicalFunction( int function ); - virtual void SetTextForeground( const wxColour &col ); - virtual void SetTextBackground( const wxColour &col ); - virtual void SetBackgroundMode( int mode ); - virtual void SetPalette( const wxPalette& palette ); - - virtual void SetClippingRegion( long x, long y, long width, long height ); - virtual void DestroyClippingRegion(); - virtual void SetClippingRegion( const wxRegion ®ion ); - - virtual void DrawSpline( wxList *points ); - - // implementation - - GdkWindow *m_window; - GdkGC *m_penGC; - GdkGC *m_brushGC; - GdkGC *m_textGC; - GdkGC *m_bgGC; - GdkColormap *m_cmap; - bool m_isMemDC; - - void SetUpDC(); - void Destroy(); - GdkWindow *GetWindow(); -}; - -//----------------------------------------------------------------------------- -// wxPaintDC -//----------------------------------------------------------------------------- - -class wxPaintDC : public wxWindowDC -{ - DECLARE_DYNAMIC_CLASS(wxPaintDC) - -public: - wxPaintDC(); - wxPaintDC( wxWindow *win ); -}; - -//----------------------------------------------------------------------------- -// wxClientDC -//----------------------------------------------------------------------------- - -class wxClientDC : public wxWindowDC -{ - DECLARE_DYNAMIC_CLASS(wxClientDC) - -public: - wxClientDC(); - wxClientDC( wxWindow *win ); -}; - - -#endif // __GTKDCCLIENTH__ diff --git a/include/wx/gtk1/dcmemory.h b/include/wx/gtk1/dcmemory.h deleted file mode 100644 index ea4a1f1571..0000000000 --- a/include/wx/gtk1/dcmemory.h +++ /dev/null @@ -1,49 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcmemory.h -// Purpose: -// Author: Robert Roebling -// RCS-ID: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKDCMEMORYH__ -#define __GTKDCMEMORYH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/dcclient.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxMemoryDC; - -//----------------------------------------------------------------------------- -// wxMemoryDC -//----------------------------------------------------------------------------- - -class wxMemoryDC: public wxWindowDC -{ - DECLARE_DYNAMIC_CLASS(wxMemoryDC) - -public: - wxMemoryDC(); - wxMemoryDC( wxDC *dc ); // Create compatible DC - ~wxMemoryDC(); - virtual void SelectObject( const wxBitmap& bitmap ); - void GetSize( int *width, int *height ) const; - - // implementation - - wxBitmap m_selected; -}; - -#endif - // __GTKDCMEMORYH__ - diff --git a/include/wx/gtk1/dcps.h b/include/wx/gtk1/dcps.h deleted file mode 100644 index df8f2d0b09..0000000000 --- a/include/wx/gtk1/dcps.h +++ /dev/null @@ -1,142 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcps.h -// Purpose: wxPostScriptDC class -// Author: Julian Smart and others -// Modified by: -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart, Robert Roebling and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __GTKDCPSH__ -#define __GTKDCPSNH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/dc.h" - -#if wxUSE_POSTSCRIPT - -#include "wx/dialog.h" -#include "wx/module.h" -#include - - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxPostScriptDC; - -//----------------------------------------------------------------------------- -// wxPostScriptDC -//----------------------------------------------------------------------------- - -class WXDLLEXPORT wxPostScriptDC: public wxDC -{ - DECLARE_DYNAMIC_CLASS(wxPostScriptDC) - -public: - - wxPostScriptDC(); - wxPostScriptDC(const wxString& output, bool interactive = TRUE, wxWindow *parent = (wxWindow *) NULL); - - ~wxPostScriptDC(); - - bool Create(const wxString& output, bool interactive = TRUE, wxWindow *parent = (wxWindow *) NULL); - - virtual bool Ok() const; - - virtual bool PrinterDialog(wxWindow *parent = (wxWindow *) NULL); - - virtual void BeginDrawing() {} - virtual void EndDrawing() {} - - void FloodFill(long x1, long y1, const wxColour &col, int style=wxFLOOD_SURFACE) ; - bool GetPixel(long x1, long y1, wxColour *col) const; - - void DrawLine(long x1, long y1, long x2, long y2); - void CrossHair(long x, long y) ; - void DrawArc(long x1,long y1,long x2,long y2,long xc,long yc); - void DrawEllipticArc(long x,long y,long w,long h,double sa,double ea); - void DrawPoint(long x, long y); - // Avoid compiler warning - void DrawPoint(wxPoint& point) { wxDC::DrawPoint(point); } - void DrawLines(int n, wxPoint points[], long xoffset = 0, long yoffset = 0); - // Avoid compiler warning - void DrawLines(wxList *lines, long xoffset = 0, long yoffset = 0) - { wxDC::DrawLines(lines, xoffset, yoffset); } - void DrawPolygon(int n, wxPoint points[], long xoffset = 0, long yoffset = 0, int fillStyle=wxODDEVEN_RULE); - // Avoid compiler warning - void DrawPolygon(wxList *lines, long xoffset = 0, long yoffset = 0, int fillStyle=wxODDEVEN_RULE) - { wxDC::DrawPolygon(lines, xoffset, yoffset, fillStyle); } - void DrawRectangle(long x, long y, long width, long height); - void DrawRoundedRectangle(long x, long y, long width, long height, double radius = 20); - void DrawEllipse(long x, long y, long width, long height); - - void DrawSpline(wxList *points); - - bool Blit(long xdest, long ydest, long width, long height, - wxDC *source, long xsrc, long ysrc, int rop = wxCOPY, bool useMask = FALSE); - inline bool CanDrawBitmap(void) const { return TRUE; } - - void DrawIcon( const wxIcon& icon, long x, long y ); - void DrawBitmap( const wxBitmap& bitmap, long x, long y, bool useMask=FALSE ); - - void DrawText(const wxString& text, long x, long y, bool use16 = FALSE); - - void Clear(); - void SetFont( const wxFont& font ); - void SetPen( const wxPen& pen ); - void SetBrush( const wxBrush& brush ); - void SetLogicalFunction( int function ); - void SetBackground( const wxBrush& brush ); - - void SetClippingRegion(long x, long y, long width, long height); - void SetClippingRegion( const wxRegion ®ion ); - void DestroyClippingRegion(); - - bool StartDoc(const wxString& message); - void EndDoc(); - void StartPage(); - void EndPage(); - - long GetCharHeight(); - long GetCharWidth(); - inline bool CanGetTextExtent(void) const { return FALSE; } - void GetTextExtent(const wxString& string, long *x, long *y, - long *descent = (long *) NULL, - long *externalLeading = (long *) NULL, - wxFont *theFont = (wxFont *) NULL, bool use16 = FALSE); - - void GetSize(int* width, int* height) const; - void GetSizeMM(long *width, long *height) const; - - void SetAxisOrientation( bool xLeftRight, bool yBottomUp ); - void SetDeviceOrigin( long x, long y ); - - inline void SetBackgroundMode(int WXUNUSED(mode)) {} - inline void SetPalette(const wxPalette& WXUNUSED(palette)) {} - - inline ofstream *GetStream(void) const { return m_pstream; } - -protected: - - ofstream * m_pstream; // PostScript output stream - wxString m_title; - unsigned char m_currentRed; - unsigned char m_currentGreen; - unsigned char m_currentBlue; - int m_pageNumber; - bool m_clipping; - double m_underlinePosition; - double m_underlineThickness; -}; - -#endif - // wxUSE_POSTSCRIPT - -#endif - // __GTKDCPSH__ diff --git a/include/wx/gtk1/dcscreen.h b/include/wx/gtk1/dcscreen.h deleted file mode 100644 index 34a90bc599..0000000000 --- a/include/wx/gtk1/dcscreen.h +++ /dev/null @@ -1,47 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcscreen.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __GTKDCSCREENH__ -#define __GTKDCSCREENH__ - -#include "wx/dcclient.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxScreenDC; - -//----------------------------------------------------------------------------- -// wxScreenDC -//----------------------------------------------------------------------------- - -class wxScreenDC: public wxPaintDC -{ - DECLARE_DYNAMIC_CLASS(wxScreenDC) - -public: - wxScreenDC(void); - ~wxScreenDC(void); - - static bool StartDrawingOnTop( wxWindow *window ); - static bool StartDrawingOnTop( wxRect *rect = (wxRect *) NULL ); - static bool EndDrawingOnTop(void); - - // implementation - - static GdkWindow *sm_overlayWindow; - static int sm_overlayWindowX; - static int sm_overlayWindowY; -}; - -#endif - - // __GTKDCSCREENH__ - diff --git a/include/wx/gtk1/dialog.h b/include/wx/gtk1/dialog.h deleted file mode 100644 index 25cfa99c37..0000000000 --- a/include/wx/gtk1/dialog.h +++ /dev/null @@ -1,106 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dialog.h -// Purpose: -// Author: Robert Roebling -// Created: -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __GTKDIALOGH__ -#define __GTKDIALOGH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/panel.h" -#include "wx/icon.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxDialog; - -//----------------------------------------------------------------------------- -// global data -//----------------------------------------------------------------------------- - -extern const char *wxDialogNameStr; - -//----------------------------------------------------------------------------- -// wxDialog -//----------------------------------------------------------------------------- - -class wxDialog: public wxPanel -{ - DECLARE_DYNAMIC_CLASS(wxDialog) - -public: - wxDialog(); - wxDialog( wxWindow *parent, wxWindowID id, - const wxString &title, - const wxPoint &pos = wxDefaultPosition, - const wxSize &size = wxDefaultSize, - long style = wxDEFAULT_DIALOG_STYLE, - const wxString &name = wxDialogNameStr ); - bool Create( wxWindow *parent, wxWindowID id, - const wxString &title, - const wxPoint &pos = wxDefaultPosition, - const wxSize &size = wxDefaultSize, - long style = wxDEFAULT_DIALOG_STYLE, - const wxString &name = wxDialogNameStr ); - ~wxDialog(); - - void SetTitle(const wxString& title); - wxString GetTitle() const; - - bool OnClose(); - void OnApply( wxCommandEvent &event ); - void OnCancel( wxCommandEvent &event ); - void OnOK( wxCommandEvent &event ); - void OnPaint( wxPaintEvent& event ); - void OnSize( wxSizeEvent &event ); -/* - void OnCharHook( wxKeyEvent& event ); -*/ - - bool Destroy(); - void OnCloseWindow( wxCloseEvent& event ); - - virtual void SetSize( int x, int y, int width, int height, - int sizeFlags = wxSIZE_AUTO ); - virtual void SetSize( int width, int height ); - - virtual bool Show( bool show ); - virtual int ShowModal(); - virtual void EndModal( int retCode ); - virtual bool IsModal() const; - void SetModal( bool modal ); - - virtual void InitDialog(void); - - virtual void Centre( int direction = wxHORIZONTAL ); - - virtual void SetIcon( const wxIcon &icon ); - virtual void Iconize( bool WXUNUSED(iconize)) { } - virtual bool IsIconized() const { return FALSE; } - bool Iconized() const { return IsIconized(); } - virtual void Maximize() { } - virtual void Restore() { } - -// implementation - - virtual void GtkOnSize( int x, int y, int width, int height ); - - bool m_modalShowing; - wxString m_title; - wxIcon m_icon; - - DECLARE_EVENT_TABLE() -}; - -#endif // __GTKDIALOGH__ diff --git a/include/wx/gtk1/dnd.h b/include/wx/gtk1/dnd.h deleted file mode 100644 index f2f81e8550..0000000000 --- a/include/wx/gtk1/dnd.h +++ /dev/null @@ -1,204 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: dnd.h -// Purpose: declaration of the wxDropTarget class -// Author: Robert Roebling -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin, Robert Roebling -// Licence: wxWindows license -/////////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKDNDH__ -#define __GTKDNDH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" - -#if wxUSE_DRAG_AND_DROP - -#include "wx/object.h" -#include "wx/string.h" -#include "wx/dataobj.h" -#include "wx/cursor.h" - -//------------------------------------------------------------------------- -// conditional compilation -//------------------------------------------------------------------------- - -#if (GTK_MINOR_VERSION == 1) -#if (GTK_MICRO_VERSION >= 3) -#define NEW_GTK_DND_CODE -#endif -#endif - -//------------------------------------------------------------------------- -// classes -//------------------------------------------------------------------------- - -class wxWindow; - -class wxDropTarget; -class wxTextDropTarget; -class wxFileDropTarget; -class wxPrivateDropTarget; - -class wxDropSource; - -//------------------------------------------------------------------------- -// wxDropTarget -//------------------------------------------------------------------------- - -class wxDropTarget: public wxObject -{ - public: - - wxDropTarget(); - ~wxDropTarget(); - - virtual void OnEnter() { } - virtual void OnLeave() { } - virtual void OnMouseMove( long WXUNUSED(x), long WXUNUSED(y) ) { } - virtual bool OnDrop( long x, long y, const void *data, size_t size ) = 0; - - // Override these to indicate what kind of data you support: - - virtual size_t GetFormatCount() const = 0; - virtual wxDataFormat &GetFormat(size_t n) const; - - // implementation - - void RegisterWidget( GtkWidget *widget ); - void UnregisterWidget( GtkWidget *widget ); - - wxDataFormat *m_format; -}; - -//------------------------------------------------------------------------- -// wxTextDropTarget -//------------------------------------------------------------------------- - -class wxTextDropTarget: public wxDropTarget -{ - public: - - wxTextDropTarget(); - virtual bool OnDrop( long x, long y, const void *data, size_t size ); - virtual bool OnDropText( long x, long y, const char *psz ); - - protected: - - virtual size_t GetFormatCount() const; -}; - -//------------------------------------------------------------------------- -// wxPrivateDropTarget -//------------------------------------------------------------------------- - -class wxPrivateDropTarget: public wxDropTarget -{ -public: - - wxPrivateDropTarget(); - - // you have to override OnDrop to get at the data - - // the string ID identifies the format of clipboard or DnD data. a word - // processor would e.g. add a wxTextDataObject and a wxPrivateDataObject - // to the clipboard - the latter with the Id "application/wxword" or - // "image/png". - - void SetId( const wxString& id ); - - wxString GetId() - { return m_id; } - -private: - - virtual size_t GetFormatCount() const; - - wxString m_id; -}; - -//---------------------------------------------------------------------------- -// A drop target which accepts files (dragged from File Manager or Explorer) -//---------------------------------------------------------------------------- - -class wxFileDropTarget: public wxDropTarget -{ - public: - - wxFileDropTarget(); - - virtual bool OnDrop( long x, long y, const void *data, size_t size ); - virtual bool OnDropFiles( long x, long y, - size_t nFiles, const char * const aszFiles[] ); - - protected: - - virtual size_t GetFormatCount() const; -}; - -//------------------------------------------------------------------------- -// wxDropSource -//------------------------------------------------------------------------- - -enum wxDragResult -{ - wxDragError, // error prevented the d&d operation from completing - wxDragNone, // drag target didn't accept the data - wxDragCopy, // the data was successfully copied - wxDragMove, // the data was successfully moved (MSW only) - wxDragCancel // the operation was cancelled by user (not an error) -}; - -class wxDropSource: public wxObject -{ - public: - - /* constructor. set data later with SetData() */ - wxDropSource( wxWindow *win ); - - /* constructor for setting one data object */ - wxDropSource( wxDataObject *data, wxWindow *win ); - - /* constructor for setting several data objects via wxDataBroker */ - wxDropSource( wxDataBroker *data, wxWindow *win ); - - ~wxDropSource(void); - - /* set one dataobject */ - void SetData( wxDataBroker *data ); - - /* set severa dataobjects via wxDataBroker */ - void SetData( wxDataObject *data ); - - /* start drag action */ - wxDragResult DoDragDrop( bool bAllowMove = FALSE ); - - /* override to give feedback */ - virtual bool GiveFeedback( wxDragResult WXUNUSED(effect), bool WXUNUSED(bScrolling) ) { return TRUE; } - - /* GTK implementation */ - - void RegisterWindow(void); - void UnregisterWindow(void); - - GtkWidget *m_widget; - wxWindow *m_window; - wxDragResult m_retValue; - wxDataBroker *m_data; - - wxCursor m_defaultCursor; - wxCursor m_goaheadCursor; -}; - -#endif - - // wxUSE_DRAG_AND_DROP - -#endif - //__GTKDNDH__ - diff --git a/include/wx/gtk1/filedlg.h b/include/wx/gtk1/filedlg.h deleted file mode 100644 index 641c056762..0000000000 --- a/include/wx/gtk1/filedlg.h +++ /dev/null @@ -1,116 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: filedlg.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKFILEDLGH__ -#define __GTKFILEDLGH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/dialog.h" - -//------------------------------------------------------------------------- -// File selector -//------------------------------------------------------------------------- - -extern const char *wxFileSelectorPromptStr; -extern const char *wxFileSelectorDefaultWildcardStr; - -class wxFileDialog: public wxDialog -{ - - DECLARE_DYNAMIC_CLASS(wxFileDialog) - - friend void gtk_filedialog_ok_callback( GtkWidget *widget, gpointer data ); - - public: - - wxFileDialog() {}; - - wxFileDialog(wxWindow *parent, const wxString& message = wxFileSelectorPromptStr, - const wxString& defaultDir = "", const wxString& defaultFile = "", - const wxString& wildCard = wxFileSelectorDefaultWildcardStr, - long style = 0, const wxPoint& pos = wxDefaultPosition); - - inline void SetMessage(const wxString& message) { m_message = message; } - inline void SetPath(const wxString& path) { m_path = path; } - inline void SetDirectory(const wxString& dir) { m_dir = dir; } - inline void SetFilename(const wxString& name) { m_fileName = name; } - inline void SetWildcard(const wxString& wildCard) { m_wildCard = wildCard; } - inline void SetStyle(long style) { m_dialogStyle = style; } - inline void SetFilterIndex(int filterIndex) { m_filterIndex = filterIndex; } - - inline wxString GetMessage(void) const { return m_message; } - inline wxString GetPath(void) const { return m_path; } - inline wxString GetDirectory(void) const { return m_dir; } - inline wxString GetFilename(void) const { return m_fileName; } - inline wxString GetWildcard(void) const { return m_wildCard; } - inline long GetStyle(void) const { return m_dialogStyle; } - inline int GetFilterIndex(void) const { return m_filterIndex ; } - - int ShowModal(void); - - protected: - - wxString m_message; - long m_dialogStyle; - wxWindow * m_parent; - wxString m_dir; - wxString m_path; // Full path - wxString m_fileName; - wxString m_wildCard; - int m_filterIndex; -}; - -#define wxOPEN 1 -#define wxSAVE 2 -#define wxOVERWRITE_PROMPT 4 -#define wxHIDE_READONLY 8 -#define wxFILE_MUST_EXIST 16 - -// File selector - backward compatibility -WXDLLEXPORT wxString -wxFileSelector(const char *message = wxFileSelectorPromptStr, - const char *default_path = NULL, - const char *default_filename = NULL, - const char *default_extension = NULL, - const char *wildcard = wxFileSelectorDefaultWildcardStr, - int flags = 0, - wxWindow *parent = NULL, - int x = -1, int y = -1); - -// An extended version of wxFileSelector -WXDLLEXPORT wxString -wxFileSelectorEx(const char *message = wxFileSelectorPromptStr, - const char *default_path = NULL, - const char *default_filename = NULL, - int *indexDefaultExtension = NULL, - const char *wildcard = wxFileSelectorDefaultWildcardStr, - int flags = 0, - wxWindow *parent = NULL, - int x = -1, int y = -1); - -// Ask for filename to load -WXDLLEXPORT wxString -wxLoadFileSelector(const char *what, - const char *extension, - const char *default_name = (const char *)NULL, - wxWindow *parent = (wxWindow *) NULL); - -// Ask for filename to save -WXDLLEXPORT wxString -wxSaveFileSelector(const char *what, - const char *extension, - const char *default_name = (const char *) NULL, - wxWindow *parent = (wxWindow *) NULL); - -#endif - // __GTKFILEDLGH__ diff --git a/include/wx/gtk1/font.h b/include/wx/gtk1/font.h deleted file mode 100644 index 7e27d54e1a..0000000000 --- a/include/wx/gtk1/font.h +++ /dev/null @@ -1,123 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: font.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling, Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKFONTH__ -#define __GTKFONTH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/string.h" -#include "wx/hash.h" -#include "wx/gdiobj.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxDC; -class wxPaintDC; -class wxWindow; - -class wxFont; -/* -class wxFontNameDirectory; -*/ - -//----------------------------------------------------------------------------- -// global variables -//----------------------------------------------------------------------------- - -/* -extern wxFontNameDirectory *wxTheFontNameDirectory; -*/ -extern const char* wxEmptyString; - -//----------------------------------------------------------------------------- -// wxFont -//----------------------------------------------------------------------------- - -class wxFont: public wxGDIObject -{ - DECLARE_DYNAMIC_CLASS(wxFont) - -public: - wxFont(); - wxFont( int pointSize, int family, int style, int weight, bool underlined = FALSE, - const wxString& face = wxEmptyString ); - wxFont( const wxFont& font ); - ~wxFont(); - wxFont& operator = ( const wxFont& font ); - bool operator == ( const wxFont& font ); - bool operator != ( const wxFont& font ); - bool Ok() const; - - int GetPointSize() const; - int GetFamily() const; - int GetStyle() const; - int GetWeight() const; - bool GetUnderlined() const; - - void SetPointSize( int pointSize ); - void SetFamily( int family ); - void SetStyle( int style ); - void SetWeight( int weight ); - void SetFaceName( const wxString& faceName ); - void SetUnderlined( bool underlined ); - - wxString GetFaceName() const; - wxString GetFamilyString() const; - wxString GetStyleString() const; - wxString GetWeightString() const; - - // implementation - - wxFont( char *xFontName ); - void Unshare(); - - GdkFont* GetInternalFont(float scale = 1.0) const; - - // no data :-) -}; - -/* -//----------------------------------------------------------------------------- -// wxFontDirectory -//----------------------------------------------------------------------------- - -class wxFontNameDirectory: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxFontNameDirectory) - - public: - wxFontNameDirectory(); - ~wxFontNameDirectory(); - - void Initialize(); - void Initialize(int fontid, int family, const char *name); - - int FindOrCreateFontId(const char *name, int family); - char* GetAFMName(int fontid, int weight, int style); - int GetFamily(int fontid); - int GetFontId(const char *name); - char* GetFontName(int fontid); - int GetNewFontId(); - char* GetPostScriptName(int fontid, int weight, int style); - char* GetScreenName(int fontid, int weight, int style); - - class wxHashTable *table; - int nextFontId; -}; -*/ - -#endif // __GTKFONTH__ diff --git a/include/wx/gtk1/frame.h b/include/wx/gtk1/frame.h deleted file mode 100644 index 0dd712f946..0000000000 --- a/include/wx/gtk1/frame.h +++ /dev/null @@ -1,124 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: frame.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling, Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKFRAMEH__ -#define __GTKFRAMEH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/window.h" -#include "wx/icon.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxMDIChildFrame; -class wxMDIClientWindow; -class wxMenu; -class wxMenuBar; -class wxToolBar; -class wxStatusBar; - -class wxFrame; - -//----------------------------------------------------------------------------- -// global data -//----------------------------------------------------------------------------- - -extern const char *wxFrameNameStr; -extern const char *wxToolBarNameStr; - -//----------------------------------------------------------------------------- -// wxFrame -//----------------------------------------------------------------------------- - -class wxFrame: public wxWindow -{ - DECLARE_DYNAMIC_CLASS(wxFrame) -public: - - wxFrame(); - wxFrame( wxWindow *parent, wxWindowID id, const wxString &title, - const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE, const wxString &name = wxFrameNameStr ); - bool Create( wxWindow *parent, wxWindowID id, const wxString &title, - const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE, const wxString &name = wxFrameNameStr ); - ~wxFrame(); - bool Destroy(); - - virtual bool Show( bool show ); - virtual void Centre( int direction = wxHORIZONTAL ); - - virtual void GetClientSize( int *width, int *height ) const; - wxSize GetClientSize() const { int w, h; GetClientSize(& w, & h); return wxSize(w, h); } - - virtual void SetClientSize( int const width, int const height ); - - virtual void SetSize( int x, int y, int width, int height, - int sizeFlags = wxSIZE_AUTO ); - virtual void SetSize( int width, int height ); - - virtual wxStatusBar* CreateStatusBar(int number=1, long style = wxST_SIZEGRIP, wxWindowID id = 0, - const wxString& name = "statusBar"); - virtual wxStatusBar *OnCreateStatusBar( int number, long style, wxWindowID id, - const wxString& name ); - virtual wxStatusBar *GetStatusBar() const; - inline void SetStatusBar(wxStatusBar *statusBar) { m_frameStatusBar = statusBar; } - virtual void SetStatusText( const wxString &text, int number = 0 ); - virtual void SetStatusWidths( int n, const int widths_field[] ); - - virtual wxToolBar* CreateToolBar( long style = wxNO_BORDER|wxTB_HORIZONTAL, wxWindowID id = -1, - const wxString& name = wxToolBarNameStr); - virtual wxToolBar *OnCreateToolBar( long style, wxWindowID id, const wxString& name ); - virtual wxToolBar *GetToolBar() const; - inline void SetToolBar(wxToolBar *toolbar) { m_frameToolBar = toolbar; } - - virtual void SetMenuBar( wxMenuBar *menuBar ); - virtual wxMenuBar *GetMenuBar() const; - - virtual void SetTitle( const wxString &title ); - virtual wxString GetTitle() const { return m_title; } - - virtual void SetIcon( const wxIcon &icon ); - virtual void Iconize( bool WXUNUSED(iconize)) { } - virtual bool IsIconized() const { return FALSE; } - bool Iconized() const { return IsIconized(); } - virtual void Maximize(bool WXUNUSED(maximize)) {} - virtual void Restore() {} - - void OnActivate( wxActivateEvent &WXUNUSED(event) ) { } // called from docview.cpp - void OnSize( wxSizeEvent &event ); - void OnCloseWindow( wxCloseEvent& event ); - - // implementation - - virtual void GtkOnSize( int x, int y, int width, int height ); - virtual wxPoint GetClientAreaOrigin() const; - void DoMenuUpdates(); - void DoMenuUpdates(wxMenu* menu); - virtual void OnInternalIdle(); - - wxMenuBar *m_frameMenuBar; - wxStatusBar *m_frameStatusBar; - wxToolBar *m_frameToolBar; - wxString m_title; - wxIcon m_icon; - int m_miniEdge,m_miniTitle; - - DECLARE_EVENT_TABLE() -}; - -#endif // __GTKFRAMEH__ diff --git a/include/wx/gtk1/gauge.h b/include/wx/gtk1/gauge.h deleted file mode 100644 index e75a0c41b5..0000000000 --- a/include/wx/gtk1/gauge.h +++ /dev/null @@ -1,82 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: gauge.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKGAUGEH__ -#define __GTKGAUGEH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/list.h" -#include "wx/control.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxGauge; - -//----------------------------------------------------------------------------- -// global data -//----------------------------------------------------------------------------- - -extern const char* wxGaugeNameStr; - -//----------------------------------------------------------------------------- -// wxGaugeBox -//----------------------------------------------------------------------------- - -class wxGauge: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxGauge) - - public: - inline wxGauge() { m_rangeMax = 0; m_gaugePos = 0; m_useProgressBar = TRUE; } - - inline wxGauge( wxWindow *parent, wxWindowID id, int range, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxGA_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxGaugeNameStr ) - { - Create(parent, id, range, pos, size, style, validator, name); - } - bool Create( wxWindow *parent, wxWindowID id, int range, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxGA_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxGaugeNameStr ); - void SetShadowWidth( int WXUNUSED(w) ) {}; - void SetBezelFace( int WXUNUSED(w) ) {}; - void SetRange( int r ); - void SetValue( int pos ); - int GetShadowWidth() const { return 0; }; - int GetBezelFace() const { return 0; }; - int GetRange() const; - int GetValue() const; - - // Are we a Win95/GTK progress bar, or a normal gauge? - inline bool GetProgressBar() const { return m_useProgressBar; } - - // implementation - - void ApplyWidgetStyle(); - - int m_rangeMax; - int m_gaugePos; - bool m_useProgressBar; -}; - -#endif // __GTKGAUGEH__ diff --git a/include/wx/gtk1/gdiobj.h b/include/wx/gtk1/gdiobj.h deleted file mode 100644 index ac8e8e9447..0000000000 --- a/include/wx/gtk1/gdiobj.h +++ /dev/null @@ -1,37 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: gdiobj.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling, Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GDIOBJH__ -#define __GDIOBJH__ - -#include "wx/object.h" - -#ifdef __GNUG__ -#pragma interface -#endif - -class wxGDIObject : public wxObject -{ -DECLARE_DYNAMIC_CLASS(wxGDIObject) - -public: - inline wxGDIObject() { m_visible = FALSE; }; - inline ~wxGDIObject() {}; - - virtual bool GetVisible() { return m_visible; } - virtual void SetVisible( bool visible ) { m_visible = visible; } - -protected: - bool m_visible; /* can a pointer to this object be safely taken? - * - only if created within FindOrCreate... */ -}; - -#endif - // __GDIOBJH__ diff --git a/include/wx/gtk1/icon.h b/include/wx/gtk1/icon.h deleted file mode 100644 index e306018665..0000000000 --- a/include/wx/gtk1/icon.h +++ /dev/null @@ -1,56 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: icon.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKICONH__ -#define __GTKICONH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/bitmap.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxIcon; - -//----------------------------------------------------------------------------- -// wxIcon -//----------------------------------------------------------------------------- - -class wxIcon: public wxBitmap -{ - DECLARE_DYNAMIC_CLASS(wxIcon) - -public: - - wxIcon(); - wxIcon( const wxIcon& icon); - wxIcon( const char **bits, int width=-1, int height=-1 ); - - // For compatibility with wxMSW where desired size is sometimes required to - // distinguish between multiple icons in a resource. - wxIcon( const wxString& filename, int type = wxBITMAP_TYPE_XPM, int WXUNUSED(desiredWidth)=-1, int WXUNUSED(desiredHeight)=-1 ): - wxBitmap(filename, type) - { - } - wxIcon( char **bits, int width=-1, int height=-1 ); - - wxIcon& operator = (const wxIcon& icon); - inline bool operator == (const wxIcon& icon) { return m_refData == icon.m_refData; } - inline bool operator != (const wxIcon& icon) { return m_refData != icon.m_refData; } -}; - - -#endif // __GTKICONH__ diff --git a/include/wx/gtk1/joystick.h b/include/wx/gtk1/joystick.h deleted file mode 100644 index 957c16581a..0000000000 --- a/include/wx/gtk1/joystick.h +++ /dev/null @@ -1,102 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: joystick.h -// Purpose: wxJoystick class -// Author: Guilhem Lavaux -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __JOYSTICKH__ -#define __JOYSTICKH__ - -#ifdef __GNUG__ -#pragma interface "joystick.h" -#endif - -#include "wx/event.h" -#include "wx/thread.h" - -class WXDLLEXPORT wxJoystick: public wxObject, public wxThread -{ - DECLARE_DYNAMIC_CLASS(wxJoystick) - public: - /* - * Public interface - */ - - wxJoystick(int joystick = wxJOYSTICK1); - - // Attributes - //////////////////////////////////////////////////////////////////////////// - - wxPoint GetPosition(void) const; - int GetZPosition(void) const; - int GetButtonState(void) const; - int GetPOVPosition(void) const; - int GetPOVCTSPosition(void) const; - int GetRudderPosition(void) const; - int GetUPosition(void) const; - int GetVPosition(void) const; - int GetMovementThreshold(void) const; - void SetMovementThreshold(int threshold) ; - - // Capabilities - //////////////////////////////////////////////////////////////////////////// - - bool IsOk(void) const; // Checks that the joystick is functioning - int GetNumberJoysticks(void) const ; - int GetManufacturerId(void) const ; - int GetProductId(void) const ; - wxString GetProductName(void) const ; - int GetXMin(void) const; - int GetYMin(void) const; - int GetZMin(void) const; - int GetXMax(void) const; - int GetYMax(void) const; - int GetZMax(void) const; - int GetNumberButtons(void) const; - int GetNumberAxes(void) const; - int GetMaxButtons(void) const; - int GetMaxAxes(void) const; - int GetPollingMin(void) const; - int GetPollingMax(void) const; - int GetRudderMin(void) const; - int GetRudderMax(void) const; - int GetUMin(void) const; - int GetUMax(void) const; - int GetVMin(void) const; - int GetVMax(void) const; - - bool HasRudder(void) const; - bool HasZ(void) const; - bool HasU(void) const; - bool HasV(void) const; - bool HasPOV(void) const; - bool HasPOV4Dir(void) const; - bool HasPOVCTS(void) const; - - // Operations - //////////////////////////////////////////////////////////////////////////// - - // pollingFreq = 0 means that movement events are sent when above the threshold. - // If pollingFreq > 0, events are received every this many milliseconds. - bool SetCapture(wxWindow* win, int pollingFreq = 0); - bool ReleaseCapture(void); - -protected: - int m_joystick; - wxPoint m_lastposition; - int m_axe[15]; - int m_buttons; - wxWindow *m_catchwin; - int m_polling; - - void *Entry(void); -}; - -#endif - // __JOYSTICKH__ - diff --git a/include/wx/gtk1/listbox.h b/include/wx/gtk1/listbox.h deleted file mode 100644 index 9d6cafe665..0000000000 --- a/include/wx/gtk1/listbox.h +++ /dev/null @@ -1,115 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: listbox.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKLISTBOXH__ -#define __GTKLISTBOXH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/list.h" -#include "wx/control.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxListBox; -class wxArrayInt; - -//----------------------------------------------------------------------------- -// global data -//----------------------------------------------------------------------------- - -extern const char *wxListBoxNameStr; - -//----------------------------------------------------------------------------- -// wxListBox -//----------------------------------------------------------------------------- - -class wxListBox : public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxListBox) - -public: - - wxListBox(); - inline wxListBox( wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = (const wxString *) NULL, - long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxListBoxNameStr ) - { - m_hasCheckBoxes = FALSE; - Create(parent, id, pos, size, n, choices, style, validator, name); - } - ~wxListBox(); - bool Create( wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = (const wxString *) NULL, - long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxListBoxNameStr ); - - void Append( const wxString &item ); - void Append( const wxString &item, void* clientData ); - void Append( const wxString &item, wxClientData* clientData ); - - void SetClientData( int n, void* clientData ); - void* GetClientData( int n ); - void SetClientObject( int n, wxClientData* clientData ); - wxClientData* GetClientObject( int n ); - - void Clear(); - void Delete( int n ); - - void Deselect( int n ); - int FindString( const wxString &item ) const; - int GetSelection(void) const; - int GetSelections( class wxArrayInt &) const; - wxString GetString( int n ) const; - wxString GetStringSelection(void) const; - int Number(); - bool Selected( int n ); - void Set( int n, const wxString *choices ); - void SetFirstItem( int n ); - void SetFirstItem( const wxString &item ); - void SetSelection( int n, bool select = TRUE ); - void SetString( int n, const wxString &string ); - void SetStringSelection( const wxString &string, bool select = TRUE ); - -#if wxUSE_DRAG_AND_DROP - void SetDropTarget( wxDropTarget *dropTarget ); -#endif - void SetToolTip( wxToolTip *tip ); - void SetToolTip( const wxString &tip ); - - -// implementation - - void AppendCommon( const wxString &item ); - int GetIndex( GtkWidget *item ) const; - GtkWidget *GetConnectWidget(); - bool IsOwnGtkWindow( GdkWindow *window ); - void ApplyWidgetStyle(); - - GtkList *m_list; - wxList m_clientDataList; - wxList m_clientObjectList; - bool m_hasCheckBoxes; -}; - -#endif // __GTKLISTBOXH__ diff --git a/include/wx/gtk1/mdi.h b/include/wx/gtk1/mdi.h deleted file mode 100644 index 95d9df89f4..0000000000 --- a/include/wx/gtk1/mdi.h +++ /dev/null @@ -1,184 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: mdi.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __MDIH__ -#define __MDIH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/list.h" -#include "wx/control.h" -#include "wx/panel.h" -#include "wx/frame.h" -#include "wx/toolbar.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxMDIParentFrame; -class wxMDIClientWindow; -class wxMDIChildFrame; - -//----------------------------------------------------------------------------- -// global data -//----------------------------------------------------------------------------- - -extern const char* wxFrameNameStr; -extern const char* wxStatusLineNameStr; - -//----------------------------------------------------------------------------- -// wxMDIParentFrame -//----------------------------------------------------------------------------- - -class wxMDIParentFrame: public wxFrame -{ - DECLARE_DYNAMIC_CLASS(wxMDIParentFrame) - - friend class wxMDIChildFrame; - - public: - - wxMDIParentFrame(void); - wxMDIParentFrame( wxWindow *parent, - wxWindowID id, const wxString& title, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE | wxVSCROLL | wxHSCROLL, - const wxString& name = wxFrameNameStr ); - ~wxMDIParentFrame(void); - bool Create( wxWindow *parent, - wxWindowID id, const wxString& title, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE | wxVSCROLL | wxHSCROLL, - const wxString& name = wxFrameNameStr ); - - - void GetClientSize(int *width, int *height) const; - wxMDIChildFrame *GetActiveChild(void) const; - - wxMDIClientWindow *GetClientWindow(void) const; - virtual wxMDIClientWindow *OnCreateClient(void); - - virtual void Cascade(void) {}; - virtual void Tile(void) {}; - virtual void ArrangeIcons(void) {}; - virtual void ActivateNext(void); - virtual void ActivatePrevious(void); - - void OnActivate( wxActivateEvent& event ); - void OnSysColourChanged( wxSysColourChangedEvent& event ); - - // implementation - - wxMDIChildFrame *m_currentChild; - - void SetMDIMenuBar( wxMenuBar *menu_bar ); - virtual void GtkOnSize( int x, int y, int width, int height ); - - private: - - wxMDIClientWindow *m_clientWindow; - bool m_parentFrameActive; - wxMenuBar *m_mdiMenuBar; - - DECLARE_EVENT_TABLE() -}; - -//----------------------------------------------------------------------------- -// wxMDIChildFrame -//----------------------------------------------------------------------------- - -class wxMDIChildFrame: public wxFrame -{ - DECLARE_DYNAMIC_CLASS(wxMDIChildFrame) - - public: - - wxMDIChildFrame(void); - wxMDIChildFrame( wxMDIParentFrame *parent, - wxWindowID id, const wxString& title, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE, const wxString& name = wxFrameNameStr ); - ~wxMDIChildFrame(void); - bool Create( wxMDIParentFrame *parent, - wxWindowID id, const wxString& title, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE, const wxString& name = wxFrameNameStr ); - - virtual void SetMenuBar( wxMenuBar *menu_bar ); - virtual wxMenuBar *GetMenuBar(); - - virtual void GetClientSize( int *width, int *height ) const; - virtual void AddChild( wxWindow *child ); - - virtual void Activate(void); - - // no status bars - virtual wxStatusBar* CreateStatusBar( int WXUNUSED(number)=1, long WXUNUSED(style)=1, - wxWindowID WXUNUSED(id)=1, const wxString& WXUNUSED(name)=WXSTRINGCAST NULL ) {return (wxStatusBar*)NULL; } - virtual wxStatusBar *GetStatusBar() { return (wxStatusBar*)NULL; } - virtual void SetStatusText( const wxString &WXUNUSED(text), int WXUNUSED(number) ) {} - virtual void SetStatusWidths( int WXUNUSED(n), int *WXUNUSED(width) ) {} - - // no size hints - virtual void SetSizeHints( int WXUNUSED(minW), int WXUNUSED(minH), int WXUNUSED(maxW), - int WXUNUSED(maxH), int WXUNUSED(incW) ) {} - - // no toolbar bars - virtual wxToolBar* CreateToolBar( long WXUNUSED(style), wxWindowID WXUNUSED(id), - const wxString& WXUNUSED(name) ) { return (wxToolBar*)NULL; } - virtual wxToolBar *GetToolBar() { return (wxToolBar*)NULL; } - - // no icon - void SetIcon( const wxIcon &icon ) { m_icon = icon; } - - // no title - void SetTitle( const wxString &title ) { m_title = title; } - wxString GetTitle() const { return m_title; } - - // no maximize etc - virtual void Maximize(void) {} - virtual void Restore(void) {} - - void OnActivate( wxActivateEvent &event ); - - public: - - wxMenuBar *m_menuBar; - -// private: - - GtkNotebookPage *m_page; - - DECLARE_EVENT_TABLE() -}; - -//----------------------------------------------------------------------------- -// wxMDIClientWindow -//----------------------------------------------------------------------------- - -class wxMDIClientWindow: public wxWindow -{ - DECLARE_DYNAMIC_CLASS(wxMDIClientWindow) - - public: - - wxMDIClientWindow(void); - wxMDIClientWindow( wxMDIParentFrame *parent, long style = 0 ); - ~wxMDIClientWindow(void); - virtual bool CreateClient( wxMDIParentFrame *parent, long style = wxVSCROLL | wxHSCROLL ); -}; - -#endif // __MDIH__ - diff --git a/include/wx/gtk1/menu.h b/include/wx/gtk1/menu.h deleted file mode 100644 index 860e0b8d14..0000000000 --- a/include/wx/gtk1/menu.h +++ /dev/null @@ -1,146 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: menu.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling, Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKMENUH__ -#define __GTKMENUH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/list.h" -#include "wx/window.h" -#include "wx/menuitem.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxMenuBar; -class wxMenuItem; -class wxMenu; - -//----------------------------------------------------------------------------- -// const -//----------------------------------------------------------------------------- - -#define ID_SEPARATOR (-1) - -//----------------------------------------------------------------------------- -// wxMenuBar -//----------------------------------------------------------------------------- - -class wxMenuBar: public wxWindow -{ -DECLARE_DYNAMIC_CLASS(wxMenuBar) - -public: - wxMenuBar(); - void Append( wxMenu *menu, const wxString &title ); - - int FindMenuItem( const wxString &menuString, const wxString &itemString ) const; - wxMenuItem* FindMenuItemById( int id ) const; - inline wxMenuItem* FindItemForId( int id ) const - { return FindMenuItemById( id ); } - - void Check( int id, bool check ); - bool Checked( int id ) const; - void Enable( int id, bool enable ); - bool Enabled( int id ) const; - inline bool IsEnabled(int Id) const { return Enabled(Id); } - inline bool IsChecked(int Id) const { return Checked(Id); } - - wxString GetLabel( int id ) const; - void SetLabel( int id, const wxString &label ); - - void EnableTop( int pos, bool flag ); - void SetLabelTop( int pos, const wxString& label ); - wxString GetLabelTop( int pos ) const; - - int GetMenuCount() const { return m_menus.Number(); } - wxMenu *GetMenu(int n) const { return (wxMenu *)m_menus.Nth(n)->Data(); } - - wxList m_menus; - GtkWidget *m_menubar; -}; - -//----------------------------------------------------------------------------- -// wxMenu -//----------------------------------------------------------------------------- - -class wxMenu: public wxEvtHandler -{ -DECLARE_DYNAMIC_CLASS(wxMenu) - -public: - // construction - wxMenu( const wxString& title = wxEmptyString, const wxFunction func = (wxFunction) NULL ); - - // operations - // title - void SetTitle(const wxString& label); - const wxString GetTitle() const; - // menu creation - void AppendSeparator(); - void Append(int id, const wxString &item, - const wxString &helpStr = "", bool checkable = FALSE); - void Append(int id, const wxString &item, - wxMenu *subMenu, const wxString &helpStr = "" ); - void Break() {}; - - // find item by name/id - int FindItem( const wxString itemString ) const; - wxMenuItem *FindItem( int id ) const; - wxMenuItem *FindItemForId( int id ) const { return FindItem( id ); } - - // get/set item's state - void Enable( int id, bool enable ); - bool IsEnabled( int id ) const; - void Check( int id, bool check ); - bool IsChecked( int id ) const; - - void SetLabel( int id, const wxString &label ); - wxString GetLabel( int id ) const; - - // helpstring - virtual void SetHelpString(int id, const wxString& helpString); - virtual wxString GetHelpString(int id) const ; - - // accessors - wxList& GetItems() { return m_items; } - - inline void Callback(const wxFunction func) { m_callback = func; } - - inline void SetEventHandler(wxEvtHandler *handler) { m_eventHandler = handler; } - inline wxEvtHandler *GetEventHandler() { return m_eventHandler; } - - inline void SetClientData( void* clientData ) { m_clientData = clientData; } - inline void* GetClientData() const { return m_clientData; } - -// implementation - - int FindMenuIdByMenuItem( GtkWidget *menuItem ) const; - void SetInvokingWindow( wxWindow *win ); - wxWindow *GetInvokingWindow(); - - wxString m_title; - wxList m_items; - wxWindow *m_invokingWindow; - wxFunction m_callback; - wxEvtHandler *m_eventHandler; - void *m_clientData; - - GtkWidget *m_menu; // GtkMenu - GtkWidget *m_owner; -}; - -#endif // __GTKMENUH__ diff --git a/include/wx/gtk1/menuitem.h b/include/wx/gtk1/menuitem.h deleted file mode 100644 index 446498063b..0000000000 --- a/include/wx/gtk1/menuitem.h +++ /dev/null @@ -1,92 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: menuitem.h -// Purpose: wxMenuItem class -// Author: Robert Roebling -// RCS-ID: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows license -/////////////////////////////////////////////////////////////////////////////// - -#ifndef __GTKMENUITEMH__ -#define __GTKMENUITEMH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/string.h" - -// ---------------------------------------------------------------------------- -// constants -// ---------------------------------------------------------------------------- - -#define ID_SEPARATOR (-1) - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxMenuItem; - -class wxMenu; - -//----------------------------------------------------------------------------- -// wxMenuItem -//----------------------------------------------------------------------------- - -class wxMenuItem: public wxObject -{ -DECLARE_DYNAMIC_CLASS(wxMenuItem) - -public: - wxMenuItem(); - - // accessors - // id - void SetId(int id) { m_id = id; } - int GetId() const { return m_id; } - bool IsSeparator() const { return m_id == ID_SEPARATOR; } - - // the item's text = name - void SetName(const wxString& str); - void SetText(const wxString& str) { SetName(str); } // compatibility - const wxString& GetName() const { return m_text; } - const wxString& GetText() const { return GetName(); } - - // what kind of menu item we are - void SetCheckable(bool checkable) { m_isCheckMenu = checkable; } - bool IsCheckable() const { return m_isCheckMenu; } - void SetSubMenu(wxMenu *menu) { m_subMenu = menu; } - wxMenu *GetSubMenu() const { return m_subMenu; } - bool IsSubMenu() const { return m_subMenu != NULL; } - - // state - void Enable( bool enable = TRUE ); - bool IsEnabled() const { return m_isEnabled; } - void Check( bool check = TRUE ); - bool IsChecked() const; - - // help string (displayed in the status bar by default) - void SetHelp(const wxString& str) { m_helpStr = str; } - const wxString& GetHelp() const { return m_helpStr; } - - // implementation - - void SetMenuItem(GtkWidget *menuItem) { m_menuItem = menuItem; } - GtkWidget *GetMenuItem() const { return m_menuItem; } - - int m_id; - wxString m_text; - bool m_isCheckMenu; - bool m_isChecked; - bool m_isEnabled; - wxMenu *m_subMenu; - wxString m_helpStr; - - GtkWidget *m_menuItem; // GtkMenuItem -}; - - -#endif - //__GTKMENUITEMH__ diff --git a/include/wx/gtk1/minifram.h b/include/wx/gtk1/minifram.h deleted file mode 100644 index 9f1ebaa345..0000000000 --- a/include/wx/gtk1/minifram.h +++ /dev/null @@ -1,69 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: minifram.h -// Purpose: wxMiniFrame class -// Author: Robert Roebling -// RCS-ID: $Id$ -// Copyright: (c) Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __GTKMINIFRAMEH__ -#define __GTKMINIFRAMEH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/frame.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxMiniFrame; - -//----------------------------------------------------------------------------- -// wxMiniFrame -//----------------------------------------------------------------------------- - -class wxMiniFrame: public wxFrame -{ - DECLARE_DYNAMIC_CLASS(wxMiniFrame) - -public: - inline wxMiniFrame(void) {} - inline wxMiniFrame(wxWindow *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME|wxTINY_CAPTION_HORIZ, - const wxString& name = wxFrameNameStr) - { - Create(parent, id, title, pos, size, style, name); - } - bool Create(wxWindow *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME|wxTINY_CAPTION_HORIZ, - const wxString& name = wxFrameNameStr); - - // implementation - - bool m_isDragging; - int m_oldX,m_oldY; - int m_diffX,m_diffY; - - void DrawFrame( int x, int y ); - void OnPaint( wxPaintEvent &event ); - void OnMouse( wxMouseEvent &event ); - - DECLARE_EVENT_TABLE() -}; - -#endif - // __GTKMINIFRAMEH__ diff --git a/include/wx/gtk1/notebook.h b/include/wx/gtk1/notebook.h deleted file mode 100644 index 1c2aa872b9..0000000000 --- a/include/wx/gtk1/notebook.h +++ /dev/null @@ -1,200 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: notebook.h -// Purpose: wxNotebook class -// Author: Robert Roebling -// Modified by: -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Robert Roebling -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifndef __GTKNOTEBOOKH__ -#define __GTKNOTEBOOKH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/string.h" -#include "wx/control.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxImageList; -class wxNotebook; -class wxNotebookPage; - -// ---------------------------------------------------------------------------- -// notebook events -// ---------------------------------------------------------------------------- - -class wxNotebookEvent : public wxNotifyEvent -{ -public: - wxNotebookEvent(wxEventType commandType = wxEVT_NULL, int id = 0, - int nSel = -1, int nOldSel = -1) - : wxNotifyEvent(commandType, id) - { - m_bAllow = TRUE; - m_nSel = nSel; - m_nOldSel = nOldSel; - } - - // accessors - int GetSelection() const { return m_nSel; } - int GetOldSelection() const { return m_nOldSel; } - - // for wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING event this method may be called - // to disallow the page change - void Veto() { m_bAllow = FALSE; } - - // implementation: for wxNotebook usage only - bool Allowed() const { return m_bAllow; } - -private: - bool m_bAllow; - - int m_nSel, // currently selected page - m_nOldSel; // previously selected page - - DECLARE_DYNAMIC_CLASS(wxNotebookEvent) -}; - -//----------------------------------------------------------------------------- -// wxNotebook -//----------------------------------------------------------------------------- - -class wxNotebook : public wxControl -{ -public: - // ctors - // ----- - // default for dynamic class - wxNotebook(); - // the same arguments as for wxControl (@@@ any special styles?) - wxNotebook(wxWindow *parent, - wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = "notebook"); - // Create() function - bool Create(wxWindow *parent, - wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = "notebook"); - // dtor - ~wxNotebook(); - - // accessors - // --------- - // get number of pages in the dialog - int GetPageCount() const; - - // set the currently selected page, return the index of the previously - // selected one (or -1 on error) - // NB: this function will _not_ generate wxEVT_NOTEBOOK_PAGE_xxx events - int SetSelection(int nPage); - // cycle thru the tabs - void AdvanceSelection(bool bForward = TRUE); - // get the currently selected page - int GetSelection() const; - - // set/get the title of a page - bool SetPageText(int nPage, const wxString& strText); - wxString GetPageText(int nPage) const; - - // image list stuff: each page may have an image associated with it. All - // the images belong to an image list, so you have to - // 1) create an image list - // 2) associate it with the notebook - // 3) set for each page it's image - // associate image list with a control - void SetImageList(wxImageList* imageList); - // get pointer (may be NULL) to the associated image list - wxImageList* GetImageList() const { return m_imageList; } - - // sets/returns item's image index in the current image list - int GetPageImage(int nPage) const; - bool SetPageImage(int nPage, int nImage); - - // currently it's always 1 because wxGTK doesn't support multi-row - // tab controls - int GetRowCount() const; - - // control the appearance of the notebook pages - // set the size (the same for all pages) - void SetPageSize(const wxSize& size); - // set the padding between tabs (in pixels) - void SetPadding(const wxSize& padding); - - // operations - // ---------- - // remove one page from the notebook but do not destroy it - bool RemovePage(int nPage); - // remove one page from the notebook - bool DeletePage(int nPage); - // remove all pages - bool DeleteAllPages(); - // adds a new page to the notebook (it will be deleted ny the notebook, - // don't delete it yourself). If bSelect, this page becomes active. - bool AddPage(wxWindow *pPage, - const wxString& strText, - bool select = FALSE, - int imageId = -1); - // @@@@ VZ: I don't know how to implement InsertPage() - - // get the panel which represents the given page - wxWindow *GetPage(int nPage) const; - - - // implementation - - void SetConstraintSizes(bool recurse); - bool DoPhase(int phase); - void ApplyWidgetStyle(); - - // common part of all ctors - void Init(); - - // helper function - wxNotebookPage* GetNotebookPage(int page) const; - - wxImageList* m_imageList; - wxList m_pages; - size_t m_idHandler; // the change page handler id - - DECLARE_DYNAMIC_CLASS(wxNotebook) -}; - -// ---------------------------------------------------------------------------- -// event macros -// ---------------------------------------------------------------------------- -typedef void (wxEvtHandler::*wxNotebookEventFunction)(wxNotebookEvent&); - -#define EVT_NOTEBOOK_PAGE_CHANGED(id, fn) \ - { \ - wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED, \ - id, \ - -1, \ - (wxObjectEventFunction)(wxEventFunction)(wxNotebookEventFunction) &fn, \ - NULL \ - }, - -#define EVT_NOTEBOOK_PAGE_CHANGING(id, fn) \ - { \ - wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING, \ - id, \ - -1, \ - (wxObjectEventFunction)(wxEventFunction)(wxNotebookEventFunction) &fn, \ - NULL \ - }, - -#endif - // __GTKNOTEBOOKH__ diff --git a/include/wx/gtk1/palette.h b/include/wx/gtk1/palette.h deleted file mode 100644 index 8574526cb3..0000000000 --- a/include/wx/gtk1/palette.h +++ /dev/null @@ -1,59 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: palette.h -// Purpose: -// Author: Robert Roebling -// Created: 01/02/97 -// Id: -// Copyright: (c) 1998 Robert Roebling, Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKPALETTEH__ -#define __GTKPALETTEH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/gdiobj.h" -#include "wx/gdicmn.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxPalette; - -//----------------------------------------------------------------------------- -// wxPalette -//----------------------------------------------------------------------------- - -class wxPalette: public wxGDIObject -{ - DECLARE_DYNAMIC_CLASS(wxPalette) - - public: - - wxPalette(); - wxPalette( int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue ); - wxPalette( const wxPalette& palette ); - ~wxPalette(); - wxPalette& operator = ( const wxPalette& palette ); - bool operator == ( const wxPalette& palette ); - bool operator != ( const wxPalette& palette ); - bool Ok() const; - - bool Create( int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue); - int GetPixel( const unsigned char red, const unsigned char green, const unsigned char blue ) const; - bool GetRGB( int pixel, unsigned char *red, unsigned char *green, unsigned char *blue ) const; - - // no data -}; - -#define wxColorMap wxPalette -#define wxColourMap wxPalette - -#endif // __GTKPALETTEH__ diff --git a/include/wx/gtk1/pen.h b/include/wx/gtk1/pen.h deleted file mode 100644 index fb37103370..0000000000 --- a/include/wx/gtk1/pen.h +++ /dev/null @@ -1,66 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: pen.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKPENH__ -#define __GTKPENH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/string.h" -#include "wx/gdiobj.h" -#include "wx/gdicmn.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxPen; - -//----------------------------------------------------------------------------- -// wxPen -//----------------------------------------------------------------------------- - -class wxPen: public wxGDIObject -{ - DECLARE_DYNAMIC_CLASS(wxPen) - - public: - - wxPen(); - wxPen( const wxColour &colour, int width, int style ); - wxPen( const wxPen& pen ); - ~wxPen(); - wxPen& operator = ( const wxPen& pen ); - bool operator == ( const wxPen& pen ); - bool operator != ( const wxPen& pen ); - - void SetColour( const wxColour &colour ); - void SetColour( int red, int green, int blue ); - void SetCap( int capStyle ); - void SetJoin( int joinStyle ); - void SetStyle( int style ); - void SetWidth( int width ); - wxColour &GetColour() const; - int GetCap() const; - int GetJoin() const; - int GetStyle() const; - int GetWidth() const; - bool Ok() const; - - void Unshare(); - - // no data :-) -}; - -#endif // __GTKPENH__ diff --git a/include/wx/gtk1/radiobox.h b/include/wx/gtk1/radiobox.h deleted file mode 100644 index 09b518b732..0000000000 --- a/include/wx/gtk1/radiobox.h +++ /dev/null @@ -1,98 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: radiobox.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKRADIOBOXH__ -#define __GTKRADIOBOXH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/list.h" -#include "wx/control.h" -#include "wx/bitmap.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxRadioBox; - -//----------------------------------------------------------------------------- -// global data -//----------------------------------------------------------------------------- - -extern const char *wxRadioBoxNameStr; - -//----------------------------------------------------------------------------- -// wxRadioBox -//----------------------------------------------------------------------------- - -class wxRadioBox: public wxControl -{ - - DECLARE_DYNAMIC_CLASS(wxRadioBox) - - public: - - wxRadioBox(void); - inline wxRadioBox( wxWindow *parent, wxWindowID id, const wxString& title, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = (const wxString *) NULL, - int majorDim = 0, long style = wxRA_HORIZONTAL, - const wxValidator& val = wxDefaultValidator, - const wxString& name = wxRadioBoxNameStr ) - { - Create( parent, id, title, pos, size, n, choices, majorDim, style, val, name ); - } - ~wxRadioBox(void); - bool Create( wxWindow *parent, wxWindowID id, const wxString& title, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = (const wxString *) NULL, - int majorDim = 0, long style = wxRA_HORIZONTAL, - const wxValidator& val = wxDefaultValidator, - const wxString& name = wxRadioBoxNameStr ); - int FindString( const wxString& s) const; - void SetSelection( int n ); - int GetSelection(void) const; - wxString GetString( int n ) const; - void SetLabel( const wxString& label ); - void SetLabel( int item, const wxString& label ); - void SetLabel( int item, wxBitmap *bitmap ); - wxString GetLabel( int item ) const; - bool Show( bool show ); - void Enable( bool enable ); - void Enable( int item, bool enable ); - void Show( int item, bool show ); - virtual wxString GetStringSelection(void) const; - virtual bool SetStringSelection( const wxString& s ); - virtual int Number(void) const; - int GetNumberOfRowsOrCols(void) const; - void SetNumberOfRowsOrCols( int n ); - - void OnSize( wxSizeEvent &event ); - void SetFocus(); - - // implementation - - bool IsOwnGtkWindow( GdkWindow *window ); - void ApplyWidgetStyle(); - wxSize LayoutItems(); - - bool m_alreadySent; - int m_majorDim; - wxList m_boxes; - - DECLARE_EVENT_TABLE() -}; - -#endif // __GTKRADIOBOXH__ diff --git a/include/wx/gtk1/radiobut.h b/include/wx/gtk1/radiobut.h deleted file mode 100644 index 9a00ea810c..0000000000 --- a/include/wx/gtk1/radiobut.h +++ /dev/null @@ -1,73 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: radiobut.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKRADIOBUTTONH__ -#define __GTKRADIOBUTTONH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/list.h" -#include "wx/control.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxRadioButton; - -//----------------------------------------------------------------------------- -// data -//----------------------------------------------------------------------------- - -extern const char* wxRadioButtonNameStr; - -//----------------------------------------------------------------------------- -// wxRadioButton -//----------------------------------------------------------------------------- - -class wxRadioButton: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxRadioButton) - - public: - inline wxRadioButton(void) {} - inline wxRadioButton( wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxRadioButtonNameStr ) - { - Create( parent, id, label, pos, size, style, validator, name ); - } - bool Create(wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxRadioButtonNameStr ); - virtual void SetLabel(const wxString& label); - virtual void SetValue(bool val); - virtual bool GetValue(void) const; - void Enable( bool enable ); - - // implementation - - void ApplyWidgetStyle(); - - bool m_blockFirstEvent; - GtkWidget* m_theOtherRadioButtton; -}; - -#endif // __GTKRADIOBUTTONH__ diff --git a/include/wx/gtk1/region.h b/include/wx/gtk1/region.h deleted file mode 100644 index b61066a208..0000000000 --- a/include/wx/gtk1/region.h +++ /dev/null @@ -1,137 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: region.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __REGIONH__ -#define __REGIONH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/list.h" -#include "wx/gdiobj.h" -#include "wx/gdicmn.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxRegion; - -//----------------------------------------------------------------------------- -// constants -//----------------------------------------------------------------------------- - -enum wxRegionContain -{ - wxOutRegion = 0, wxPartRegion = 1, wxInRegion = 2 -}; - -// So far, for internal use only -enum wxRegionOp { -wxRGN_AND, // Creates the intersection of the two combined regions. -wxRGN_COPY, // Creates a copy of the region identified by hrgnSrc1. -wxRGN_DIFF, // Combines the parts of hrgnSrc1 that are not part of hrgnSrc2. -wxRGN_OR, // Creates the union of two combined regions. -wxRGN_XOR // Creates the union of two combined regions except for any overlapping areas. -}; - -//----------------------------------------------------------------------------- -// wxRegion -//----------------------------------------------------------------------------- - -class wxRegion : public wxGDIObject -{ - DECLARE_DYNAMIC_CLASS(wxRegion); - - public: - - wxRegion( long x, long y, long w, long h ); - wxRegion( const wxPoint& topLeft, const wxPoint& bottomRight ); - wxRegion( const wxRect& rect ); - wxRegion(void); - ~wxRegion(void); - - inline wxRegion( const wxRegion& r ): wxGDIObject() - { Ref(r); } - inline wxRegion& operator = ( const wxRegion& r ) - { Ref(r); return (*this); } - - bool operator == ( const wxRegion& region ); - bool operator != ( const wxRegion& region ); - - void Clear(void); - - bool Union( long x, long y, long width, long height ); - bool Union( const wxRect& rect ); - bool Union( const wxRegion& region ); - - bool Intersect( long x, long y, long width, long height ); - bool Intersect( const wxRect& rect ); - bool Intersect( const wxRegion& region ); - - bool Subtract( long x, long y, long width, long height ); - bool Subtract( const wxRect& rect ); - bool Subtract( const wxRegion& region ); - - bool Xor( long x, long y, long width, long height ); - bool Xor( const wxRect& rect ); - bool Xor( const wxRegion& region ); - - void GetBox( long& x, long& y, long&w, long &h ) const; - wxRect GetBox(void) const ; - - bool Empty(void) const; - - wxRegionContain Contains( long x, long y ) const; - wxRegionContain Contains( long x, long y, long w, long h ) const; - wxRegionContain Contains(const wxPoint& pt) const; - wxRegionContain Contains(const wxRect& rect) const; - - public: - - wxList *GetRectList() const; - GdkRegion *GetRegion(void) const; -}; - -class wxRegionIterator: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxRegionIterator); - - public: - - wxRegionIterator(void); - wxRegionIterator(const wxRegion& region); - - void Reset(void) { m_current = 0; } - void Reset(const wxRegion& region); - - operator bool (void) const; - bool HaveRects(void) const; - - void operator ++ (void); - void operator ++ (int); - - long GetX(void) const; - long GetY(void) const; - long GetW(void) const; - long GetWidth(void) const { return GetW(); } - long GetH(void) const; - long GetHeight(void) const { return GetH(); } - wxRect GetRect() const { return wxRect(GetX(), GetY(), GetWidth(), GetHeight()); } - - private: - - long m_current; - wxRegion m_region; -}; - - -#endif - // __REGIONH__ diff --git a/include/wx/gtk1/scrolbar.h b/include/wx/gtk1/scrolbar.h deleted file mode 100644 index 98a3da43b1..0000000000 --- a/include/wx/gtk1/scrolbar.h +++ /dev/null @@ -1,90 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: scrolbar.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKSCROLLBARH__ -#define __GTKSCROLLBARH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/control.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxScrollBar; - -//----------------------------------------------------------------------------- -// global data -//----------------------------------------------------------------------------- - -extern const char *wxScrollBarNameStr; - -//----------------------------------------------------------------------------- -// wxScrollBar -//----------------------------------------------------------------------------- - -class wxScrollBar: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxScrollBar) - - public: - - wxScrollBar(void) { m_adjust = (GtkAdjustment *) NULL; m_oldPos = 0.0; }; - inline wxScrollBar( wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxSB_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxScrollBarNameStr ) - { - Create( parent, id, pos, size, style, validator, name ); - } - bool Create( wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxSB_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxScrollBarNameStr ); - ~wxScrollBar(void); - int GetThumbPosition(void) const; - int GetThumbSize() const; - int GetPageSize() const; - int GetRange() const; - virtual void SetThumbPosition( int viewStart ); - virtual void SetScrollbar( int position, int thumbSize, int range, int pageSize, - bool refresh = TRUE ); - - // Backward compatibility - - int GetValue(void) const; - void SetValue( int viewStart ); - void GetValues( int *viewStart, int *viewLength, int *objectLength, int *pageLength) const; - int GetViewLength() const; - int GetObjectLength() const; - void SetPageSize( int pageLength ); - void SetObjectLength( int objectLength ); - void SetViewLength( int viewLength ); - - // implementation - - bool IsOwnGtkWindow( GdkWindow *window ); - void ApplyWidgetStyle(); - - GtkAdjustment *m_adjust; - float m_oldPos; -}; - -#endif - // __GTKSCROLLBARH__ diff --git a/include/wx/gtk1/settings.h b/include/wx/gtk1/settings.h deleted file mode 100644 index 9e7db68bcd..0000000000 --- a/include/wx/gtk1/settings.h +++ /dev/null @@ -1,41 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: settings.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __GTKSETTINGSH__ -#define __GTKSETTINGSH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/gdicmn.h" -#include "wx/pen.h" -#include "wx/font.h" - -class wxSystemSettings: public wxObject -{ -public: - inline wxSystemSettings() {} - - inline static void Init() {} - static void Done(); - - // Get a system colour - static wxColour GetSystemColour(int index); - - // Get a system font - static wxFont GetSystemFont(int index); - - // Get a system metric, e.g. scrollbar size - static int GetSystemMetric(int index); -}; - -#endif - // __GTKSETTINGSH__ diff --git a/include/wx/gtk1/slider.h b/include/wx/gtk1/slider.h deleted file mode 100644 index 1e2714065a..0000000000 --- a/include/wx/gtk1/slider.h +++ /dev/null @@ -1,92 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: slider.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling, Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __GTKSLIDERH__ -#define __GTKSLIDERH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/list.h" -#include "wx/control.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxSlider; - -//----------------------------------------------------------------------------- -// global data -//----------------------------------------------------------------------------- - -extern const char *wxSliderNameStr; - -//----------------------------------------------------------------------------- -// wxSlider -//----------------------------------------------------------------------------- - -class wxSlider: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxSlider) - - public: - wxSlider(void); - inline wxSlider( wxWindow *parent, wxWindowID id, - int value, int minValue, int maxValue, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxSL_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxSliderNameStr ) - { - Create( parent, id, value, minValue, maxValue, pos, size, style, validator, name ); - } - ~wxSlider(void); - bool Create(wxWindow *parent, wxWindowID id, - int value, int minValue, int maxValue, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxSL_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxSliderNameStr ); - virtual int GetValue(void) const; - virtual void SetValue( int ); - void SetRange( int minValue, int maxValue ); - int GetMin(void) const; - int GetMax(void) const; - void SetTickFreq( int n, int pos ); - int GetTickFreq(void) const; - void SetPageSize( int pageSize ); - int GetPageSize(void) const; - void ClearSel(void); - void ClearTicks(void); - void SetLineSize( int lineSize ); - int GetLineSize(void) const; - int GetSelEnd(void) const; - int GetSelStart(void) const; - void SetSelection( int minPos, int maxPos ); - void SetThumbLength( int len ); - int GetThumbLength(void) const; - void SetTick( int tickPos ); - - // implementation - - bool IsOwnGtkWindow( GdkWindow *window ); - void ApplyWidgetStyle(); - - GtkAdjustment *m_adjust; - float m_oldPos; - -}; - -#endif // __GTKSLIDERH__ diff --git a/include/wx/gtk1/spinbutt.h b/include/wx/gtk1/spinbutt.h deleted file mode 100644 index 4192465863..0000000000 --- a/include/wx/gtk1/spinbutt.h +++ /dev/null @@ -1,98 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: spinbutt.h -// Purpose: wxSpinButton class -// Author: Robert Roebling -// Modified by: -// RCS-ID: $Id$ -// Copyright: (c) Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __GTKSPINPUTTH__ -#define __GTKSPINBUTTH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/control.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxSpinButton; -class wxSpinEvent; - -//----------------------------------------------------------------------------- -// wxSpinButton -//----------------------------------------------------------------------------- - -class wxSpinButton : public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxSpinButton) - -public: - wxSpinButton(); - inline wxSpinButton( wxWindow *parent, wxWindowID id = -1, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxSP_VERTICAL, const wxString& name = "wxSpinButton") - { - Create(parent, id, pos, size, style, name); - } - ~wxSpinButton(); - bool Create( wxWindow *parent, wxWindowID id = -1, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxSP_VERTICAL, const wxString& name = "wxSpinButton" ); - - int GetValue() const; - void SetValue( int value ); - void SetRange( int minVal, int maxVal ); - int GetMin() const; - int GetMax() const; - -// implementation - - void OnSize( wxSizeEvent &event ); - - bool IsOwnGtkWindow( GdkWindow *window ); - void ApplyWidgetStyle(); - - GtkAdjustment *m_adjust; - float m_oldPos; - - DECLARE_EVENT_TABLE(); -}; - -//----------------------------------------------------------------------------- -// wxSpinEvent -//----------------------------------------------------------------------------- - -class wxSpinEvent : public wxScrollEvent -{ - DECLARE_DYNAMIC_CLASS(wxSpinEvent) - -public: - wxSpinEvent(wxEventType commandType = wxEVT_NULL, int id = 0); -}; - -typedef void (wxEvtHandler::*wxSpinEventFunction)(wxSpinEvent&); - -// Spin events - -#define EVT_SPIN_UP(id, func) { wxEVT_SCROLL_LINEUP, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func } -#define EVT_SPIN_DOWN(id, func) { wxEVT_SCROLL_LINEDOWN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func } - -#define EVT_SPIN(id, func) \ - { wxEVT_SCROLL_TOP, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func },\ - { wxEVT_SCROLL_BOTTOM, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func },\ - { wxEVT_SCROLL_LINEUP, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func },\ - { wxEVT_SCROLL_LINEDOWN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func },\ - { wxEVT_SCROLL_PAGEUP, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func },\ - { wxEVT_SCROLL_PAGEDOWN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func },\ - { wxEVT_SCROLL_THUMBTRACK, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func }, - -#endif - // __GTKSPINBUTTH__ diff --git a/include/wx/gtk1/statbmp.h b/include/wx/gtk1/statbmp.h deleted file mode 100644 index ab6e7c331d..0000000000 --- a/include/wx/gtk1/statbmp.h +++ /dev/null @@ -1,60 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: statbmp.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKSTATICBITMAPH__ -#define __GTKSTATICBITMAPH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/control.h" -#include "wx/bitmap.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxStaticBitmap; - -//----------------------------------------------------------------------------- -// global data -//----------------------------------------------------------------------------- - -extern const char* wxStaticBitmapNameStr; - -//----------------------------------------------------------------------------- -// wxStaticBitmap -//----------------------------------------------------------------------------- - -class wxStaticBitmap: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxStaticBitmap) - - public: - - wxStaticBitmap(void); - wxStaticBitmap( wxWindow *parent, wxWindowID id, const wxBitmap& label, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = 0, const wxString& name = wxStaticBitmapNameStr ); - bool Create( wxWindow *parent, wxWindowID id, const wxBitmap& label, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = 0, const wxString& name = wxStaticBitmapNameStr); - virtual void SetBitmap( const wxBitmap& bitmap ); - wxBitmap& GetBitmap(void) const { return (wxBitmap&)m_bitmap; } - - private: - - wxBitmap m_bitmap; -}; - -#endif // __GTKSTATICBITMAPH__ diff --git a/include/wx/gtk1/statbox.h b/include/wx/gtk1/statbox.h deleted file mode 100644 index 7d827c0d4b..0000000000 --- a/include/wx/gtk1/statbox.h +++ /dev/null @@ -1,59 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: stabox.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKSTATICBOXH__ -#define __GTKSTATICBOXH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/list.h" -#include "wx/control.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxStaticBox; - -//----------------------------------------------------------------------------- -// global data -//----------------------------------------------------------------------------- - -extern const char *wxStaticBoxNameStr; - -//----------------------------------------------------------------------------- -// wxStaticBox -//----------------------------------------------------------------------------- - -class wxStaticBox: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxStaticBox) - - public: - - wxStaticBox(void); - wxStaticBox( wxWindow *parent, wxWindowID id, const wxString &label, - const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, - long style = 0, const wxString &name = wxStaticBoxNameStr ); - bool Create( wxWindow *parent, wxWindowID id, const wxString &label, - const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, - long style = 0, const wxString &name = wxStaticBoxNameStr ); - void SetLabel( const wxString &label ); - - // implementation - - void ApplyWidgetStyle(); -}; - -#endif // __GTKSTATICBOXH__ diff --git a/include/wx/gtk1/stattext.h b/include/wx/gtk1/stattext.h deleted file mode 100644 index 1febeb3139..0000000000 --- a/include/wx/gtk1/stattext.h +++ /dev/null @@ -1,60 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: stattext.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKSTATICTEXTH__ -#define __GTKSTATICTEXTH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/list.h" -#include "wx/control.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxStaticText; - -//----------------------------------------------------------------------------- -// global data -//----------------------------------------------------------------------------- - -extern const char *wxStaticTextNameStr; - -//----------------------------------------------------------------------------- -// wxStaticText -//----------------------------------------------------------------------------- - -class wxStaticText: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxStaticText) - - public: - - wxStaticText(void); - wxStaticText( wxWindow *parent, wxWindowID id, const wxString &label, - const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, - long style = 0, const wxString &name = wxStaticTextNameStr ); - bool Create( wxWindow *parent, wxWindowID id, const wxString &label, - const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, - long style = 0, const wxString &name = wxStaticTextNameStr ); - wxString GetLabel(void) const; - void SetLabel( const wxString &label ); - - // implementation - - void ApplyWidgetStyle(); -}; - -#endif // __GTKSTATICTEXTH__ diff --git a/include/wx/gtk1/tbargtk.h b/include/wx/gtk1/tbargtk.h deleted file mode 100644 index 7a864d8d40..0000000000 --- a/include/wx/gtk1/tbargtk.h +++ /dev/null @@ -1,156 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: tbargtk.h -// Purpose: GTK toolbar -// Author: Robert Roebling -// RCS-ID: $Id$ -// Copyright: (c) Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __TBARGTKH__ -#define __TBARGTKH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/control.h" -#include "wx/bitmap.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxToolBarTool; -class wxToolBar; - -//----------------------------------------------------------------------------- -// constants -//----------------------------------------------------------------------------- - -#define wxTOOL_STYLE_BUTTON 1 -#define wxTOOL_STYLE_SEPARATOR 2 - -//----------------------------------------------------------------------------- -// global data -//----------------------------------------------------------------------------- - -extern const char *wxToolBarNameStr; - -//----------------------------------------------------------------------------- -// wxToolBarTool -//----------------------------------------------------------------------------- - -class wxToolBarTool: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxToolBarTool) - - public: - - wxToolBarTool(void) {}; - wxToolBarTool( wxToolBar *owner, int theIndex = 0, - const wxBitmap& bitmap1 = wxNullBitmap, const wxBitmap& bitmap2 = wxNullBitmap, - bool toggle = FALSE, wxObject *clientData = (wxObject *) NULL, - const wxString& shortHelpString = "", const wxString& longHelpString = "", - GtkWidget *item = (GtkWidget *) NULL ); - ~wxToolBarTool(void); - - public: - - int m_toolStyle; - wxObject *m_clientData; - int m_index; - bool m_toggleState; - bool m_isToggle; - bool m_deleteSecondBitmap; - bool m_enabled; - wxBitmap m_bitmap1; - wxBitmap m_bitmap2; - bool m_isMenuCommand; - wxString m_shortHelpString; - wxString m_longHelpString; - wxToolBar *m_owner; - GtkWidget *m_item; -}; - -//----------------------------------------------------------------------------- -// wxToolBar -//----------------------------------------------------------------------------- - -class wxToolBar: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxToolBar) - - public: - - wxToolBar(void); - wxToolBar( wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = 0, const wxString& name = wxToolBarNameStr ); - ~wxToolBar(void); - - bool Create( wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = 0, const wxString& name = wxToolBarNameStr); - - // Only allow toggle if returns TRUE. Call when left button up. - virtual bool OnLeftClick(int toolIndex, bool toggleDown); - - // Call when right button down. - virtual void OnRightClick(int toolIndex, float x, float y); - - // Called when the mouse cursor enters a tool bitmap. - // Argument is -1 if mouse is exiting the toolbar. - virtual void OnMouseEnter(int toolIndex); - - // If pushedBitmap is NULL, a reversed version of bitmap is - // created and used as the pushed/toggled image. - // If toggle is TRUE, the button toggles between the two states. - virtual wxToolBarTool *AddTool( int toolIndex, const wxBitmap& bitmap, - const wxBitmap& pushedBitmap = wxNullBitmap, bool toggle = FALSE, - float xPos = -1, float yPos = -1, wxObject *clientData = (wxObject *)NULL, - const wxString& helpString1 = "", const wxString& helpString2 = ""); - virtual void AddSeparator(void); - virtual void ClearTools(void); - - virtual bool Realize(void); - - virtual void EnableTool(int toolIndex, bool enable); - virtual void ToggleTool(int toolIndex, bool toggle); // toggle is TRUE if toggled on - virtual wxObject *GetToolClientData(int index) const; - - virtual bool GetToolState(int toolIndex) const; - virtual bool GetToolEnabled(int toolIndex) const; - - virtual void SetMargins(int x, int y); - void SetMargins(const wxSize& size) { SetMargins(size.x, size.y); }; - virtual wxSize GetToolMargins(void) { return wxSize(m_xMargin, m_yMargin); } - - virtual void SetToolPacking(int packing); - virtual void SetToolSeparation(int separation); - virtual int GetToolPacking(); - virtual int GetToolSeparation(); - - virtual wxString GetToolLongHelp(int toolIndex); - virtual wxString GetToolShortHelp(int toolIndex); - - virtual void SetToolLongHelp(int toolIndex, const wxString& helpString); - virtual void SetToolShortHelp(int toolIndex, const wxString& helpString); - - // implementation - - GtkToolbar *m_toolbar; - int m_separation; - wxList m_tools; - - GdkColor *m_fg; - GdkColor *m_bg; - int m_xMargin; - int m_yMargin; - bool m_hasToolAlready; -}; - -#endif - // __TBARGTKH__ - diff --git a/include/wx/gtk1/textctrl.h b/include/wx/gtk1/textctrl.h deleted file mode 100644 index da978601d1..0000000000 --- a/include/wx/gtk1/textctrl.h +++ /dev/null @@ -1,138 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: textctrl.h -// Purpose: -// Author: Robert Roebling -// Created: 01/02/97 -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling, Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKTEXTCTRLH__ -#define __GTKTEXTCTRLH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/string.h" -#include "wx/control.h" - -#if wxUSE_STD_IOSTREAM - -#if wxUSE_IOSTREAMH -#include -#else -#include -#endif - -#else - -#define NO_TEXT_WINDOW_STREAM - -#endif - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxTextCtrl; - -//----------------------------------------------------------------------------- -// global data -//----------------------------------------------------------------------------- - -extern const char *wxTextCtrlNameStr; - -//----------------------------------------------------------------------------- -// wxTextCtrl -//----------------------------------------------------------------------------- - -#ifndef NO_TEXT_WINDOW_STREAM -class wxTextCtrl: public wxControl, public streambuf -#else -class wxTextCtrl: public wxControl -#endif -{ - DECLARE_EVENT_TABLE() - DECLARE_DYNAMIC_CLASS(wxTextCtrl); - - public: - wxTextCtrl(); - wxTextCtrl( wxWindow *parent, wxWindowID id, const wxString &value = "", - const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, - int style = 0, const wxValidator& validator = wxDefaultValidator, - const wxString &name = wxTextCtrlNameStr ); - bool Create( wxWindow *parent, wxWindowID id, const wxString &value = "", - const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, - int style = 0, const wxValidator& validator = wxDefaultValidator, - const wxString &name = wxTextCtrlNameStr ); - wxString GetValue() const; - void SetValue( const wxString &value ); - void WriteText( const wxString &text ); - - bool LoadFile( const wxString &file ); - bool SaveFile( const wxString &file ); - bool IsModified() const { return m_modified; } - void SetModified() { m_modified = TRUE; } - void DiscardEdits() { m_modified = FALSE; } - wxString GetLineText( long lineNo ) const; - void OnDropFiles( wxDropFilesEvent &event ); - long PositionToXY( long pos, long *x, long *y ) const; - long XYToPosition( long x, long y ) const; - int GetLineLength(long lineNo) const; - int GetNumberOfLines() const; - virtual void SetInsertionPoint( long pos ); - virtual void SetInsertionPointEnd(); - virtual void SetEditable( bool editable ); - virtual void SetSelection( long from, long to ); - void ShowPosition( long pos ); - virtual long GetInsertionPoint() const; - virtual long GetLastPosition() const; - virtual void Remove( long from, long to ); - virtual void Replace( long from, long to, const wxString &value ); - void Cut(); - void Copy(); - void Paste(); - void Clear(); - - void OnChar( wxKeyEvent &event ); - -#ifndef NO_TEXT_WINDOW_STREAM - int overflow(int i); - int sync(); - int underflow(); - - wxTextCtrl& operator<<(const wxString& s); - wxTextCtrl& operator<<(int i); - wxTextCtrl& operator<<(long i); - wxTextCtrl& operator<<(float f); - wxTextCtrl& operator<<(double d); - wxTextCtrl& operator<<(const char c); -#endif - - void SetFont( const wxFont &font ); - void SetForegroundColour(const wxColour &colour); - void SetBackgroundColour(const wxColour &colour); - - // implementation - - GtkWidget* GetConnectWidget(); - bool IsOwnGtkWindow( GdkWindow *window ); - void ApplyWidgetStyle(); - void CalculateScrollbar(); - - private: - - bool m_modified; - GtkWidget *m_text; - GtkWidget *m_vScrollbar; - bool m_vScrollbarVisible; -}; - -#endif // __GTKTEXTCTRLH__ - - diff --git a/include/wx/gtk1/timer.h b/include/wx/gtk1/timer.h deleted file mode 100644 index ad3fbc619d..0000000000 --- a/include/wx/gtk1/timer.h +++ /dev/null @@ -1,71 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: timer.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKTIMERH__ -#define __GTKTIMERH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" - -//----------------------------------------------------------------------------- -// derived classes -//----------------------------------------------------------------------------- - -class wxTimer; - -//----------------------------------------------------------------------------- -// global functions -//----------------------------------------------------------------------------- - -/* Timer functions (milliseconds) */ -void wxStartTimer(); - -/* Gets time since last wxStartTimer or wxGetElapsedTime */ -long wxGetElapsedTime(bool resetTimer = TRUE); - -/* EXPERIMENTAL: comment this out if it doesn't compile. */ -bool wxGetLocalTime(long *timeZone, int *dstObserved); - -/* Get number of seconds since 00:00:00 GMT, Jan 1st 1970. */ -long wxGetCurrentTime(); - -//----------------------------------------------------------------------------- -// wxTimer -//----------------------------------------------------------------------------- - -class wxTimer: public wxObject -{ -public: - wxTimer(); - ~wxTimer(); - - int Interval() const { return m_time; } - - bool OneShot() const { return m_oneShot; } - - virtual bool Start( int millisecs = -1, bool oneShot = FALSE ); - virtual void Stop(); - - virtual void Notify() = 0; // override this - -protected: - int m_tag; - int m_time; - bool m_oneShot; - -private: - DECLARE_ABSTRACT_CLASS(wxTimer) -}; - -#endif // __GTKTIMERH__ diff --git a/include/wx/gtk1/tooltip.h b/include/wx/gtk1/tooltip.h deleted file mode 100644 index a724074f56..0000000000 --- a/include/wx/gtk1/tooltip.h +++ /dev/null @@ -1,55 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: tooltip.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling, Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __GTKTOOLTIPH__ -#define __GTKTOOLTIPH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/window.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxToolTip; - -//----------------------------------------------------------------------------- -// wxToolTip -//----------------------------------------------------------------------------- - -class wxToolTip: public wxObject -{ -public: - - wxToolTip( const wxString &tip ); - ~wxToolTip(); - - wxString GetTip(); - - void Enable( bool flag ); - void SetDelay( long msecs ); - bool Ok(); - - // implementation - - wxString m_text; - - GtkTooltips *m_tooltips; - GdkColor *m_bg; - GdkColor *m_fg; - - void Create( GtkWidget *tool ); -}; - -#endif // __GTKTOOLTIPH__ diff --git a/include/wx/gtk1/treectrl.h b/include/wx/gtk1/treectrl.h deleted file mode 100644 index 7598a25c5a..0000000000 --- a/include/wx/gtk1/treectrl.h +++ /dev/null @@ -1,492 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: treectrl.h -// Purpose: wxTreeCtrl class -// Author: Denis Pershin -// Modified by: -// Created: 08/08/98 -// RCS-ID: $Id$ -// Copyright: (c) Denis Pershin -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_TREECTRL_H_ -#define _WX_TREECTRL_H_ - -#ifdef __GNUG__ -#pragma interface "treectrl.h" -#endif - -#include "wx/textctrl.h" -#include "wx/control.h" -#include "wx/event.h" -#include "wx/imaglist.h" - -#include - -// the type for "untyped" data -typedef long wxDataType; - -// fwd decl -class wxImageList; -struct wxTreeViewItem; - -// a callback function used for sorting tree items, it should return -1 if the -// first item precedes the second, +1 if the second precedes the first or 0 if -// they're equivalent -class wxTreeItemData; -typedef int (*wxTreeItemCmpFunc)(wxTreeItemData *item1, wxTreeItemData *item2); - -// ---------------------------------------------------------------------------- -// constants -// ---------------------------------------------------------------------------- - -// values for the `flags' parameter of wxTreeCtrl::HitTest() which determine -// where exactly the specified point is situated: - // above the client area. -static const int wxTREE_HITTEST_ABOVE = 0x0001; - // below the client area. -static const int wxTREE_HITTEST_BELOW = 0x0002; - // in the client area but below the last item. -static const int wxTREE_HITTEST_NOWHERE = 0x0004; - // on the button associated with an item. -static const int wxTREE_HITTEST_ONITEMBUTTON = 0x0010; - // on the bitmap associated with an item. -static const int wxTREE_HITTEST_ONITEMICON = 0x0020; - // in the indentation associated with an item. -static const int wxTREE_HITTEST_ONITEMINDENT = 0x0040; - // on the label (string) associated with an item. -static const int wxTREE_HITTEST_ONITEMLABEL = 0x0080; - // in the area to the right of an item. -static const int wxTREE_HITTEST_ONITEMRIGHT = 0x0100; - // on the state icon for a tree view item that is in a user-defined state. -static const int wxTREE_HITTEST_ONITEMSTATEICON = 0x0200; - // to the right of the client area. -static const int wxTREE_HITTEST_TOLEFT = 0x0400; - // to the left of the client area. -static const int wxTREE_HITTEST_TORIGHT = 0x0800; - // anywhere on the item -static const int wxTREE_HITTEST_ONITEM = wxTREE_HITTEST_ONITEMICON | - wxTREE_HITTEST_ONITEMLABEL | - wxTREE_HITTEST_ONITEMSTATEICON; - -// NB: all the following flags are for compatbility only and will be removed in -// next versions - -// flags for deprecated `Expand(int action)' -enum -{ - wxTREE_EXPAND_EXPAND, - wxTREE_EXPAND_COLLAPSE, - wxTREE_EXPAND_COLLAPSE_RESET, - wxTREE_EXPAND_TOGGLE -}; - -// flags for deprecated InsertItem() variant -#define wxTREE_INSERT_FIRST 0xFFFF0001 -#define wxTREE_INSERT_LAST 0xFFFF0002 - -// ---------------------------------------------------------------------------- -// wxTreeItemId identifies an element of the tree. In this implementation, it's -// just a trivial wrapper around GTK GtkTreeItem *. It's opaque for the -// application. -// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxTreeItemId { -public: - // ctors - wxTreeItemId() { m_itemId = NULL; } - - // default copy ctor/assignment operator are ok for us - - // accessors - // is this a valid tree item? - bool IsOk() const { return m_itemId != NULL; } - - // conversion to/from either real (system-dependent) tree item id or - // to "long" which used to be the type for tree item ids in previous - // versions of wxWindows - - // for wxTreeCtrl usage only - wxTreeItemId(GtkTreeItem *itemId) { m_itemId = itemId; } - operator GtkTreeItem *() const { return m_itemId; } - void operator =(GtkTreeItem *item) { m_itemId = item; } - -protected: - GtkTreeItem *m_itemId; -}; - -// ---------------------------------------------------------------------------- -// wxTreeItemData is some (arbitrary) user class associated with some item. The -// main advantage of having this class (compared to old untyped interface) is -// that wxTreeItemData's are destroyed automatically by the tree and, as this -// class has virtual dtor, it means that the memory will be automatically -// freed. OTOH, we don't just use wxObject instead of wxTreeItemData because -// the size of this class is critical: in any real application, each tree leaf -// will have wxTreeItemData associated with it and number of leaves may be -// quite big. -// -// Because the objects of this class are deleted by the tree, they should -// always be allocated on the heap! -// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxTreeItemData : private wxTreeItemId { -public: - // default ctor/copy ctor/assignment operator are ok - - // dtor is virtual and all the items are deleted by the tree control when - // it's deleted, so you normally don't have to care about freeing memory - // allocated in your wxTreeItemData-derived class - virtual ~wxTreeItemData() { } - - // accessors: set/get the item associated with this node - void SetId(const wxTreeItemId& id) { m_itemId = id; } - const wxTreeItemId& GetId() const { return (wxTreeItemId&) m_itemId; } -}; - -class WXDLLEXPORT wxTreeCtrl: public wxControl { -public: - // creation - // -------- - wxTreeCtrl() { Init(); } - - wxTreeCtrl(wxWindow *parent, wxWindowID id = -1, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxTR_HAS_BUTTONS | wxTR_LINES_AT_ROOT, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = "wxTreeCtrl") { - Create(parent, id, pos, size, style, validator, name); - } - - virtual ~wxTreeCtrl(); - - bool Create(wxWindow *parent, wxWindowID id = -1, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxTR_HAS_BUTTONS | wxTR_LINES_AT_ROOT, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = "wxTreeCtrl"); - - // accessors - // --------- - - // get the total number of items in the control - size_t GetCount() const; - - // indent is the number of pixels the children are indented relative to - // the parents position. SetIndent() also redraws the control - // immediately. - unsigned int GetIndent() const; - void SetIndent(unsigned int indent); - - // image list: these functions allow to associate an image list with - // the control and retrieve it. Note that the control does _not_ delete - // the associated image list when it's deleted in order to allow image - // lists to be shared between different controls. - // - // The normal image list is for the icons which correspond to the - // normal tree item state (whether it is selected or not). - // Additionally, the application might choose to show a state icon - // which corresponds to an app-defined item state (for example, - // checked/unchecked) which are taken from the state image list. - wxImageList *GetImageList() const; - wxImageList *GetStateImageList() const; - - void SetImageList(wxImageList *imageList); - void SetStateImageList(wxImageList *imageList); - - // Functions to work with tree ctrl items. Unfortunately, they can _not_ be - // member functions of wxTreeItem because they must know the tree the item - // belongs to for Windows implementation and storing the pointer to - // wxTreeCtrl in each wxTreeItem is just too much waste. - - // accessors - // --------- - - // retrieve items label - wxString GetItemText(const wxTreeItemId& item) const; - // get the normal item image - int GetItemImage(const wxTreeItemId& item) const; - // get the selected item image - int GetItemSelectedImage(const wxTreeItemId& item) const; - // get the data associated with the item - wxTreeItemData *GetItemData(const wxTreeItemId& item) const; - - // modifiers - // --------- - - // set items label - void SetItemText(const wxTreeItemId& item, const wxString& text); - // set the normal item image - void SetItemImage(const wxTreeItemId& item, int image); - // set the selected item image - void SetItemSelectedImage(const wxTreeItemId& item, int image); - // associate some data with the item - void SetItemData(const wxTreeItemId& item, wxTreeItemData *data); - - // item status inquiries - // --------------------- - - // is the item visible (it might be outside the view or not expanded)? - bool IsVisible(const wxTreeItemId& item) const; - // does the item has any children? - bool ItemHasChildren(const wxTreeItemId& item) const; - // is the item expanded (only makes sense if HasChildren())? - bool IsExpanded(const wxTreeItemId& item) const; - // is this item currently selected (the same as has focus)? - bool IsSelected(const wxTreeItemId& item) const; - - // number of children - // ------------------ - - // if 'recursively' is FALSE, only immediate children count, otherwise - // the returned number is the number of all items in this branch - size_t GetChildrenCount(const wxTreeItemId& item, bool recursively = TRUE); - - // navigation - // ---------- - - // wxTreeItemId.IsOk() will return FALSE if there is no such item - - // get the root tree item - wxTreeItemId GetRootItem() const; - - // get the item currently selected (may return NULL if no selection) - wxTreeItemId GetSelection() const; - - // get the parent of this item (may return NULL if root) - wxTreeItemId GetParent(const wxTreeItemId& item) const; - - // for this enumeration function you must pass in a "cookie" parameter - // which is opaque for the application but is necessary for the library - // to make these functions reentrant (i.e. allow more than one - // enumeration on one and the same object simultaneously). Of course, - // the "cookie" passed to GetFirstChild() and GetNextChild() should be - // the same! - - // get the first child of this item - wxTreeItemId GetFirstChild(const wxTreeItemId& item, long& cookie) const; - // get the next child (after GetFirstChild or GetNextChild) - wxTreeItemId GetNextChild(const wxTreeItemId& item, long& cookie) const; - // get the last child of this item - this method doesn't use cookies - wxTreeItemId GetLastChild(const wxTreeItemId& item) const; - - // get the next sibling of this item - wxTreeItemId GetNextSibling(const wxTreeItemId& item) const; - // get the previous sibling - wxTreeItemId GetPrevSibling(const wxTreeItemId& item) const; - - // get first visible item - wxTreeItemId GetFirstVisibleItem() const; - // get the next visible item: item must be visible itself! - // see IsVisible() and wxTreeCtrl::GetFirstVisibleItem() - wxTreeItemId GetNextVisible(const wxTreeItemId& item) const; - // get the previous visible item: item must be visible itself! - wxTreeItemId GetPrevVisible(const wxTreeItemId& item) const; - - // operations - // ---------- - - // add the root node to the tree - wxTreeItemId AddRoot(const wxString& text, - int image = -1, int selectedImage = -1, - wxTreeItemData *data = NULL); - - // insert a new item in as the first child of the parent - wxTreeItemId PrependItem(const wxTreeItemId& parent, - const wxString& text, - int image = -1, int selectedImage = -1, - wxTreeItemData *data = NULL); - - // insert a new item after a given one - wxTreeItemId InsertItem(const wxTreeItemId& parent, - const wxTreeItemId& idPrevious, - const wxString& text, - int image = -1, int selectedImage = -1, - wxTreeItemData *data = NULL); - - // insert a new item in as the last child of the parent - wxTreeItemId AppendItem(const wxTreeItemId& parent, - const wxString& text, - int image = -1, int selectedImage = -1, - wxTreeItemData *data = NULL); - - // delete this item and associated data if any - void Delete(const wxTreeItemId& item); - // delete all items from the tree - void DeleteAllItems(); - - // expand this item - void Expand(const wxTreeItemId& item); - // collapse the item without removing its children - void Collapse(const wxTreeItemId& item); - // collapse the item and remove all children - void CollapseAndReset(const wxTreeItemId& item); - // toggles the current state - void Toggle(const wxTreeItemId& item); - - // remove the selection from currently selected item (if any) - void Unselect(); - // select this item - void SelectItem(const wxTreeItemId& item); - // make sure this item is visible (expanding the parent item and/or - // scrolling to this item if necessary) - void EnsureVisible(const wxTreeItemId& item); - // scroll to this item (but don't expand its parent) - void ScrollTo(const wxTreeItemId& item); - - // start editing the item label: this (temporarily) replaces the item - // with a one line edit control. The item will be selected if it hadn't - // been before. textCtrlClass parameter allows you to create an edit - // control of arbitrary user-defined class deriving from wxTextCtrl. - wxTextCtrl* EditLabel(const wxTreeItemId& item, - wxClassInfo* textCtrlClass = CLASSINFO(wxTextCtrl)); - // returns the same pointer as StartEdit() if the item is being edited, - // NULL otherwise (it's assumed that no more than one item may be - // edited simultaneously) - wxTextCtrl* GetEditControl() const; - // end editing and accept or discard the changes to item label - void EndEditLabel(const wxTreeItemId& item, bool discardChanges = FALSE); - - // sort the children of this item using the specified callback function - // (it should return -1, 0 or +1 as usual), if it's not specified - // alphabetical comparaison is performed. - // - // NB: this function is not reentrant! - void SortChildren(const wxTreeItemId& item, - wxTreeItemCmpFunc *cmpFunction = NULL); - - // deprecated - // ---------- - - // these methods are deprecated and will be removed in future versions of - // wxWindows, they're here for compatibility only, don't use them in new - // code (the comments indicate why these methods are now useless and how to - // replace them) - - // use Expand, Collapse, CollapseAndReset or Toggle - void ExpandItem(const wxTreeItemId& item, int action); - - // use AddRoot, PrependItem or AppendItem - wxTreeItemId InsertItem(const wxTreeItemId& parent, - const wxString& text, - int image = -1, int selImage = -1, - long insertAfter = wxTREE_INSERT_LAST); - - // use Set/GetImageList and Set/GetStateImageList - wxImageList *GetImageList(int) const - { return GetImageList(); } - void SetImageList(wxImageList *imageList, int) - { SetImageList(imageList); } - - void SendExpanding(const wxTreeItemId& item); - void SendExpanded(const wxTreeItemId& item); - void SendCollapsing(const wxTreeItemId& item); - void SendCollapsed(const wxTreeItemId& item); - void SendSelChanging(const wxTreeItemId& item); - void SendSelChanged(const wxTreeItemId& item); -protected: - wxTreeItemId m_editItem; - GtkTree *m_tree; - GtkTreeItem *m_anchor; - wxTextCtrl* m_textCtrl; - wxImageList* m_imageListNormal; - wxImageList* m_imageListState; - - long m_curitemId; - - void SendMessage(wxEventType command, const wxTreeItemId& item); -// GtkTreeItem *findGtkTreeItem(wxTreeCtrlId &id) const; - - // the common part of all ctors - void Init(); - // insert a new item in as the last child of the parent - wxTreeItemId p_InsertItem(GtkTreeItem *p, - const wxString& text, - int image, int selectedImage, - wxTreeItemData *data); - - - DECLARE_DYNAMIC_CLASS(wxTreeCtrl) -}; - -// ---------------------------------------------------------------------------- -// wxTreeEvent is a special class for all events associated with tree controls -// -// NB: note that not all accessors make sense for all events, see the event -// descriptions below -// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxTreeEvent : public wxCommandEvent -{ -friend wxTreeCtrl; -public: - wxTreeEvent(wxEventType commandType = wxEVT_NULL, int id = 0); - - // accessors - // get the item on which the operation was performed or the newly - // selected item for wxEVT_COMMAND_TREE_SEL_CHANGED/ING events - wxTreeItemId GetItem() const { return m_item; } - - // for wxEVT_COMMAND_TREE_SEL_CHANGED/ING events, get the previously - // selected item - wxTreeItemId GetOldItem() const { return m_itemOld; } - - // the point where the mouse was when the drag operation started (for - // wxEVT_COMMAND_TREE_BEGIN_(R)DRAG events only) - wxPoint GetPoint() const { return m_pointDrag; } - - // keyboard code (for wxEVT_COMMAND_TREE_KEY_DOWN only) - int GetCode() const { return m_code; } - - // set return code for wxEVT_COMMAND_TREE_ITEM_{EXPAND|COLLAPS}ING events - // call this to forbid the change in item status - void Veto() { m_code = TRUE; } - -private: - // @@ we could save some space by using union here - int m_code; - wxTreeItemId m_item, - m_itemOld; - wxPoint m_pointDrag; - - DECLARE_DYNAMIC_CLASS(wxTreeEvent) -}; - -typedef void (wxEvtHandler::*wxTreeEventFunction)(wxTreeEvent&); - -// ---------------------------------------------------------------------------- -// macros for handling tree control events -// ---------------------------------------------------------------------------- - -// GetItem() returns the item being dragged, GetPoint() the mouse coords -#define EVT_TREE_BEGIN_DRAG(id, fn) { wxEVT_COMMAND_TREE_BEGIN_DRAG, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TREE_BEGIN_RDRAG(id, fn) { wxEVT_COMMAND_TREE_BEGIN_RDRAG, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, - -// GetItem() returns the itme whose label is being edited -#define EVT_TREE_BEGIN_LABEL_EDIT(id, fn) { wxEVT_COMMAND_TREE_BEGIN_LABEL_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TREE_END_LABEL_EDIT(id, fn) { wxEVT_COMMAND_TREE_END_LABEL_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, - -// provide/update information about GetItem() item -#define EVT_TREE_GET_INFO(id, fn) { wxEVT_COMMAND_TREE_GET_INFO, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TREE_SET_INFO(id, fn) { wxEVT_COMMAND_TREE_SET_INFO, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, - -// GetItem() is the item being expanded/collapsed, the "ING" versions can use -#define EVT_TREE_ITEM_EXPANDED(id, fn) { wxEVT_COMMAND_TREE_ITEM_EXPANDED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TREE_ITEM_EXPANDING(id, fn) { wxEVT_COMMAND_TREE_ITEM_EXPANDING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TREE_ITEM_COLLAPSED(id, fn) { wxEVT_COMMAND_TREE_ITEM_COLLAPSED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TREE_ITEM_COLLAPSING(id, fn) { wxEVT_COMMAND_TREE_ITEM_COLLAPSING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, NULL }, - -// GetOldItem() is the item which had the selection previously, GetItem() is -// the item which acquires selection -#define EVT_TREE_SEL_CHANGED(id, fn) { wxEVT_COMMAND_TREE_SEL_CHANGED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, NULL }, -#define EVT_TREE_SEL_CHANGING(id, fn) { wxEVT_COMMAND_TREE_SEL_CHANGING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, NULL }, - -// GetCode() returns the key code -// NB: this is the only message for which GetItem() is invalid (you may get the -// item from GetSelection()) -#define EVT_TREE_KEY_DOWN(id, fn) { wxEVT_COMMAND_TREE_KEY_DOWN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, NULL }, - -// GetItem() returns the item being deleted, the associated data (if any) will -// be deleted just after the return of this event handler (if any) -#define EVT_TREE_DELETE_ITEM(id, fn) { wxEVT_COMMAND_TREE_DELETE_ITEM, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, - -#endif - // _WX_TREECTRL_H_ diff --git a/include/wx/gtk1/wave.h b/include/wx/gtk1/wave.h deleted file mode 100644 index 14bdf11293..0000000000 --- a/include/wx/gtk1/wave.h +++ /dev/null @@ -1,59 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: wave.h -// Purpose: wxWave class -// Author: Julian Smart -// Modified by: -// Created: 25/10/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_WAVE_H_ -#define _WX_WAVE_H_ - -#ifdef __GNUG__ -#pragma interface "wave.h" -#endif - -#include "wx/object.h" - -#ifndef AUDIODEV -#define AUDIODEV "/dev/dsp" // Default path for audio device -#endif - -class wxWave : public wxObject -{ -public: - wxWave(); - wxWave(const wxString& fileName, bool isResource = FALSE); - wxWave(int size, const wxByte* data); - ~wxWave(); - -public: - // Create from resource or file - bool Create(const wxString& fileName, bool isResource = FALSE); - // Create from data - bool Create(int size, const wxByte* data); - - bool IsOk() const { return (m_waveData ? TRUE : FALSE); }; - bool Play(bool async = TRUE, bool looped = FALSE); - -protected: - bool Free(); - -private: - wxByte* m_waveData; - int m_waveLength; - bool m_isResource; - - - int OpenDSP(void); - bool InitDSP(int dev, int iDataBits, int iChannel,unsigned long ulSamplingRate); - int m_DSPblkSize; // Size of the DSP buffer - char *m_data; - int m_sizeData; -}; - -#endif - diff --git a/include/wx/gtk1/win_gtk.h b/include/wx/gtk1/win_gtk.h deleted file mode 100644 index 16acb8d305..0000000000 --- a/include/wx/gtk1/win_gtk.h +++ /dev/null @@ -1,68 +0,0 @@ -/* /////////////////////////////////////////////////////////////////////////// -// Name: win_gtk.h -// Purpose: wxWindows's GTK base widget -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////// */ - - -#ifndef __GTK_MYFIXED_H__ -#define __GTK_MYFIXED_H__ - - -#include -#include - - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - - -#define GTK_MYFIXED(obj) GTK_CHECK_CAST (obj, gtk_myfixed_get_type (), GtkMyFixed) -#define GTK_MYFIXED_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, gtk_myfixed_get_type (), GtkMyFixedClass) -#define GTK_IS_MYFIXED(obj) GTK_CHECK_TYPE (obj, gtk_myfixed_get_type ()) - - -typedef struct _GtkMyFixed GtkMyFixed; -typedef struct _GtkMyFixedClass GtkMyFixedClass; -typedef struct _GtkMyFixedChild GtkMyFixedChild; - -struct _GtkMyFixed -{ - GtkContainer container; - - GList *children; -}; - -struct _GtkMyFixedClass -{ - GtkContainerClass parent_class; -}; - -struct _GtkMyFixedChild -{ - GtkWidget *widget; - gint16 x; - gint16 y; -}; - -guint gtk_myfixed_get_type (void); -GtkWidget* gtk_myfixed_new (void); -void gtk_myfixed_put (GtkMyFixed *myfixed, - GtkWidget *widget, - gint16 x, - gint16 y); -void gtk_myfixed_move (GtkMyFixed *myfixed, - GtkWidget *widget, - gint16 x, - gint16 y); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - - -#endif /* __GTK_MYFIXED_H__ */ diff --git a/include/wx/gtk1/window.h b/include/wx/gtk1/window.h deleted file mode 100644 index 0031aa27a1..0000000000 --- a/include/wx/gtk1/window.h +++ /dev/null @@ -1,427 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: window.h -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKWINDOWH__ -#define __GTKWINDOWH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/list.h" -#include "wx/event.h" -#include "wx/validate.h" -#include "wx/cursor.h" -#include "wx/font.h" -#include "wx/region.h" -#include "wx/accel.h" - -//----------------------------------------------------------------------------- -// global data -//----------------------------------------------------------------------------- - -extern const char *wxFrameNameStr; -extern wxList wxTopLevelWindows; - -//----------------------------------------------------------------------------- -// global function -//----------------------------------------------------------------------------- - -wxWindow* wxGetActiveWindow(); - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxLayoutConstraints; -class wxSizer; -class wxDC; -class wxClientData; -class wxVoidClientData; -class wxWindow; -#if wxUSE_WX_RESOURCES -class wxResourceTable; -class wxItemResource; -#endif -#if wxUSE_DRAG_AND_DROP -class wxDropTarget; -#endif -class wxToolTip; - -//----------------------------------------------------------------------------- -// callback definition for inserting a window (internal) -//----------------------------------------------------------------------------- - -typedef void (*wxInsertChildFunction)( wxWindow*, wxWindow* ); - -//----------------------------------------------------------------------------- -// global data -//----------------------------------------------------------------------------- - -extern const char *wxPanelNameStr; -extern const wxSize wxDefaultSize; -extern const wxPoint wxDefaultPosition; - -//----------------------------------------------------------------------------- -// wxClientData -//----------------------------------------------------------------------------- - -class wxClientData -{ -public: - wxClientData() { } - virtual ~wxClientData() { } -}; - -//----------------------------------------------------------------------------- -// wxStringClientData -//----------------------------------------------------------------------------- - -class wxStringClientData: public wxClientData -{ -public: - wxStringClientData() { } - wxStringClientData( wxString &data ) { m_data = data; } - void SetData( wxString &data ) { m_data = data; } - wxString GetData() const { return m_data; } - -private: - wxString m_data; -}; - -//----------------------------------------------------------------------------- -// (debug) -//----------------------------------------------------------------------------- - -#ifdef __WXDEBUG__ - -void debug_focus_in( GtkWidget* widget, const char* name, const char* window ); - -#endif - -//----------------------------------------------------------------------------- -// wxWindow -//----------------------------------------------------------------------------- - -class wxWindow: public wxEvtHandler -{ - DECLARE_DYNAMIC_CLASS(wxWindow) - -public: - wxWindow(); - wxWindow(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = wxPanelNameStr); - bool Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = wxPanelNameStr); - virtual ~wxWindow(); - -#if wxUSE_WX_RESOURCES - virtual bool LoadFromResource( wxWindow *parent, const wxString& resourceName, - const wxResourceTable *table = (const wxResourceTable *) NULL); - virtual wxControl *CreateItem(const wxItemResource* childResource, const wxItemResource* parentResource, - const wxResourceTable *table = (const wxResourceTable *) NULL); -#endif - - bool Close( bool force = FALSE ); - virtual bool Destroy(); - virtual bool DestroyChildren(); - - virtual void PrepareDC( wxDC &dc ); - - virtual void SetSize( int x, int y, int width, int height, - int sizeFlags = wxSIZE_AUTO ); - virtual void SetSize( int width, int height ); - - virtual void Move( int x, int y ); - - virtual void GetSize( int *width, int *height ) const; - wxSize GetSize() const { int w, h; GetSize(& w, & h); return wxSize(w, h); } - - virtual void SetClientSize( int const width, int const height ); - - virtual void GetClientSize( int *width, int *height ) const; - wxSize GetClientSize() const { int w, h; GetClientSize(& w, & h); return wxSize(w, h); } - - virtual void GetPosition( int *x, int *y ) const; - wxPoint GetPosition() const { int w, h; GetPosition(& w, & h); return wxPoint(w, h); } - - wxRect GetRect() const - { int x, y, w, h; GetPosition(& x, & y); GetSize(& w, & h); return wxRect(x, y, w, h); } - - virtual void Centre( int direction = wxHORIZONTAL ); - inline void Center(int direction = wxHORIZONTAL) { Centre(direction); } - virtual void Fit(); - - virtual void SetSizeHints( int minW, int minH, int maxW = -1, int maxH = -1, int incW = -1, int incH = -1 ); - - /* Dialog units translations. Implemented in wincmn.cpp. */ - wxPoint ConvertPixelsToDialog( const wxPoint& pt ); - wxPoint ConvertDialogToPixels( const wxPoint& pt ); - inline wxSize ConvertPixelsToDialog( const wxSize& sz ) - { wxPoint pt(ConvertPixelsToDialog(wxPoint(sz.x, sz.y))); return wxSize(pt.x, pt.y); } - inline wxSize ConvertDialogToPixels( const wxSize& sz ) - { wxPoint pt(ConvertDialogToPixels(wxPoint(sz.x, sz.y))); return wxSize(pt.x, pt.y); } - - void OnSize( wxSizeEvent &event ); - - virtual bool Show( bool show ); - virtual void Enable( bool enable ); - virtual void MakeModal( bool modal ); - virtual bool IsEnabled() const { return m_isEnabled; } - inline bool Enabled() const { return IsEnabled(); } - virtual bool OnClose(); - - virtual void SetFocus(); - static wxWindow *FindFocus(); - - virtual void AddChild( wxWindow *child ); - wxList& GetChildren() { return m_children; } - - virtual void RemoveChild( wxWindow *child ); - void SetReturnCode( int retCode ); - int GetReturnCode(); - wxWindow *GetParent() const - { return m_parent; } - wxWindow *GetGrandParent() const - { return (m_parent ? m_parent->m_parent : (wxWindow*)NULL); } - void SetParent( wxWindow *parent ) - { m_parent = parent; } - virtual wxWindow *ReParent( wxWindow *newParent ); - - wxEvtHandler *GetEventHandler() const; - void SetEventHandler( wxEvtHandler *handler ); - void PushEventHandler( wxEvtHandler *handler ); - wxEvtHandler *PopEventHandler( bool deleteHandler = FALSE ); - - virtual void SetValidator( const wxValidator &validator ); - virtual wxValidator *GetValidator(); - - virtual void SetClientObject( wxClientData *data ); - virtual wxClientData *GetClientObject(); - - virtual void SetClientData( void *data ); - virtual void *GetClientData(); - - virtual void SetAcceleratorTable( const wxAcceleratorTable& accel ); - virtual wxAcceleratorTable *GetAcceleratorTable() { return &m_acceleratorTable; } - - bool IsBeingDeleted(); - - void SetId( wxWindowID id ); - wxWindowID GetId() const; - - void SetCursor( const wxCursor &cursor ); - - void WarpPointer(int x, int y); - - virtual void SetToolTip( const wxString &tip ); - virtual void SetToolTip( wxToolTip *tip ); - virtual wxToolTip& GetToolTip(); - - virtual void Refresh( bool eraseBackground = TRUE, const wxRect *rect = (const wxRect *) NULL ); - virtual void Clear(); - - virtual wxRegion GetUpdateRegion() const; - virtual bool IsExposed(int x, int y) const; - virtual bool IsExposed(int x, int y, int w, int h) const; - virtual bool IsExposed(const wxPoint& pt) const; - virtual bool IsExposed(const wxRect& rect) const; - - virtual wxColour GetBackgroundColour() const; - virtual void SetBackgroundColour( const wxColour &colour ); - virtual wxColour GetForegroundColour() const; - virtual void SetForegroundColour( const wxColour &colour ); - - virtual int GetCharHeight() const; - virtual int GetCharWidth() const; - virtual void GetTextExtent( const wxString& string, int *x, int *y, - int *descent = (int *) NULL, - int *externalLeading = (int *) NULL, - const wxFont *theFont = (const wxFont *) NULL, bool use16 = FALSE) const; - - virtual void SetFont( const wxFont &font ); - virtual wxFont& GetFont() { return m_font; } - - // For backward compatibility - inline virtual void SetButtonFont(const wxFont& font) { SetFont(font); } - inline virtual void SetLabelFont(const wxFont& font) { SetFont(font); } - inline virtual wxFont& GetLabelFont() { return GetFont(); }; - inline virtual wxFont& GetButtonFont() { return GetFont(); }; - - virtual void SetWindowStyleFlag( long flag ); - virtual long GetWindowStyleFlag() const; - - virtual void CaptureMouse(); - virtual void ReleaseMouse(); - - virtual void SetTitle( const wxString &title ); - virtual wxString GetTitle() const; - virtual void SetName( const wxString &name ); - virtual wxString GetName() const; - virtual wxString GetLabel() const; - - void OnSysColourChanged( wxSysColourChangedEvent &WXUNUSED(event) ) {}; - void OnKeyDown( wxKeyEvent &event ); - - virtual bool IsShown() const; - - virtual void Raise(); - virtual void Lower(); - - virtual bool IsRetained(); - virtual wxWindow *FindWindow( long id ); - virtual wxWindow *FindWindow( const wxString& name ); - - void AllowDoubleClick( bool WXUNUSED(allow) ) {}; - void SetDoubleClick( bool WXUNUSED(allow) ) {}; - - virtual void ClientToScreen( int *x, int *y ); - virtual void ScreenToClient( int *x, int *y ); - - virtual bool Validate(); - virtual bool TransferDataToWindow(); - virtual bool TransferDataFromWindow(); - void OnInitDialog( wxInitDialogEvent &event ); - virtual void InitDialog(); - - virtual bool PopupMenu( wxMenu *menu, int x, int y ); - -#if wxUSE_DRAG_AND_DROP - virtual void SetDropTarget( wxDropTarget *dropTarget ); - virtual wxDropTarget *GetDropTarget() const; -#endif - - virtual void SetScrollbar( int orient, int pos, int thumbVisible, - int range, bool refresh = TRUE ); - virtual void SetScrollPos( int orient, int pos, bool refresh = TRUE ); - virtual int GetScrollPos( int orient ) const; - virtual int GetScrollThumb( int orient ) const; - virtual int GetScrollRange( int orient ) const; - virtual void ScrollWindow( int dx, int dy, const wxRect* rect = (wxRect *) NULL ); - - virtual bool AcceptsFocus() const; - - void UpdateWindowUI(); - - // implementation - - void PreCreation( wxWindow *parent, wxWindowID id, const wxPoint &pos, - const wxSize &size, long style, const wxString &name ); - void PostCreation(); - - virtual GtkWidget* GetConnectWidget(); - virtual bool IsOwnGtkWindow( GdkWindow *window ); - void ConnectWidget( GtkWidget *widget ); - - bool HasVMT(); - - virtual wxPoint GetClientAreaOrigin() const; - virtual void AdjustForParentClientOrigin( int& x, int& y, int sizeFlags ); - - GtkStyle *GetWidgetStyle(); - void SetWidgetStyle(); - virtual void ApplyWidgetStyle(); - - virtual void OnInternalIdle(); - - wxWindow *m_parent; - wxList m_children; - int m_x,m_y; - int m_width,m_height; - int m_minWidth,m_minHeight; - int m_maxWidth,m_maxHeight; - int m_retCode; - wxEvtHandler *m_eventHandler; - wxValidator *m_windowValidator; -#if wxUSE_DRAG_AND_DROP - wxDropTarget *m_dropTarget; -#endif - wxWindowID m_windowId; - wxCursor *m_cursor; - wxFont m_font; - wxColour m_backgroundColour; - wxColour m_foregroundColour; - wxRegion m_updateRegion; - long m_windowStyle; - bool m_isShown; - bool m_isEnabled; - wxString m_windowName; - wxAcceleratorTable m_acceleratorTable; - wxClientData *m_clientObject; - void *m_clientData; - wxToolTip *m_toolTip; - - GtkWidget *m_widget; - GtkWidget *m_wxwindow; - GtkAdjustment *m_hAdjust,*m_vAdjust; - float m_oldHorizontalPos; - float m_oldVerticalPos; - bool m_needParent; - bool m_hasScrolling; - bool m_isScrolling; - bool m_hasVMT; - bool m_sizeSet; - bool m_resizing; - GdkGC *m_scrollGC; - GtkStyle *m_widgetStyle; - bool m_isStaticBox; - bool m_acceptsFocus; - - wxInsertChildFunction m_insertCallback; - -public: - - wxLayoutConstraints *m_constraints; - wxList *m_constraintsInvolvedIn; - wxSizer *m_windowSizer; - wxWindow *m_sizerParent; - bool m_autoLayout; - - wxLayoutConstraints *GetConstraints() const; - void SetConstraints( wxLayoutConstraints *constraints ); - void SetAutoLayout( bool autoLayout ); - bool GetAutoLayout() const; - bool Layout(); - void SetSizer( wxSizer *sizer ); - wxSizer *GetSizer() const; - void SetSizerParent( wxWindow *win ); - wxWindow *GetSizerParent() const; - void UnsetConstraints(wxLayoutConstraints *c); - inline wxList *GetConstraintsInvolvedIn() const ; - void AddConstraintReference(wxWindow *otherWin); - void RemoveConstraintReference(wxWindow *otherWin); - void DeleteRelatedConstraints(); - virtual void ResetConstraints(); - virtual void SetConstraintSizes(bool recurse = TRUE); - virtual bool LayoutPhase1(int *noChanges); - virtual bool LayoutPhase2(int *noChanges); - virtual bool DoPhase(int); - virtual void TransformSizerToActual(int *x, int *y) const ; - virtual void SizerSetSize(int x, int y, int w, int h); - virtual void SizerMove(int x, int y); - virtual void SetSizeConstraint(int x, int y, int w, int h); - virtual void MoveConstraint(int x, int y); - virtual void GetSizeConstraint(int *w, int *h) const ; - virtual void GetClientSizeConstraint(int *w, int *h) const ; - virtual void GetPositionConstraint(int *x, int *y) const ; - -private: - DECLARE_EVENT_TABLE() -}; - -#endif // __GTKWINDOWH__ diff --git a/include/wx/hash.h b/include/wx/hash.h deleted file mode 100644 index a223f99968..0000000000 --- a/include/wx/hash.h +++ /dev/null @@ -1,100 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: hash.h -// Purpose: wxHashTable class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_WXHASHH__ -#define _WX_WXHASHH__ - -#ifdef __GNUG__ -#pragma interface "hash.h" -#endif - -#include "wx/object.h" -#include "wx/list.h" - -/* - * A hash table is an array of user-definable size with lists - * of data items hanging off the array positions. Usually there'll - * be a hit, so no search is required; otherwise we'll have to run down - * the list to find the desired item. -*/ - -class WXDLLEXPORT wxHashTable: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxHashTable) - - public: - int n; - int current_position; - wxNode *current_node; - - unsigned int key_type; - wxList **hash_table; - - wxHashTable(int the_key_type = wxKEY_INTEGER, int size = 1000); - ~wxHashTable(void); - - void Destroy(void); // Robert Roebling - - bool Create(int the_key_type = wxKEY_INTEGER, int size = 1000); - - // Note that there are 2 forms of Put, Get. - // With a key and a value, the *value* will be checked - // when a collision is detected. Otherwise, if there are - // 2 items with a different value but the same key, - // we'll retrieve the WRONG ONE. So where possible, - // supply the required value along with the key. - // In fact, the value-only versions make a key, and still store - // the value. The use of an explicit key might be required - // e.g. when combining several values into one key. - // When doing that, it's highly likely we'll get a collision, - // e.g. 1 + 2 = 3, 2 + 1 = 3. - - // key and value are NOT necessarily the same - void Put(long key, long value, wxObject *object); - void Put(long key, const char *value, wxObject *object); - - // key and value are the same - void Put(long value, wxObject *object); - void Put(const char *value, wxObject *object); - - // key and value not the same - wxObject *Get(long key, long value) const; - wxObject *Get(long key, const char *value) const; - - // key and value are the same - wxObject *Get(long value) const; - wxObject *Get(const char *value) const; - - // Deletes entry and returns data if found - wxObject *Delete(long key); - wxObject *Delete(const char *key); - - wxObject *Delete(long key, int value); - wxObject *Delete(long key, const char *value); - - // Construct your own integer key from a string, e.g. in case - // you need to combine it with something - long MakeKey(const char *string) const; - - // Way of iterating through whole hash table (e.g. to delete everything) - // Not necessary, of course, if you're only storing pointers to - // objects maintained separately - - void BeginFind(void); - wxNode *Next(void); - - void DeleteContents(bool flag); - void Clear(void); - -}; - -#endif - // _WX_WXHASHH__ diff --git a/include/wx/help.h b/include/wx/help.h deleted file mode 100644 index b8d5098502..0000000000 --- a/include/wx/help.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef _WX_HELP_H_BASE_ -#define _WX_HELP_H_BASE_ - -#ifdef __WXMSW__ -#include "wx/msw/helpwin.h" -#else -#include "wx/generic/helpext.h" -#endif - -#ifdef __WXMSW__ -#define wxHelpController wxWinHelpController -#define sm_classwxHelpController sm_classwxWinHelpController -#else -#define wxHelpController wxExtHelpController -#define sm_classwxHelpController sm_classwxExtHelpController -#endif - -#endif - // _WX_HELP_H_BASE_ diff --git a/include/wx/helpbase.h b/include/wx/helpbase.h deleted file mode 100644 index 830925e80d..0000000000 --- a/include/wx/helpbase.h +++ /dev/null @@ -1,51 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: helpbase.h -// Purpose: Help system base classes -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_HELPBASEH__ -#define _WX_HELPBASEH__ - -#ifdef __GNUG__ -#pragma interface "helpbase.h" -#endif - -#include "wx/wx.h" - -#if wxUSE_HELP - -// Defines the API for help controllers -class WXDLLEXPORT wxHelpControllerBase: public wxObject -{ - DECLARE_CLASS(wxHelpControllerBase) - - public: - inline wxHelpControllerBase(void) {} - inline ~wxHelpControllerBase(void) {}; - - // Must call this to set the filename and server name. - // server is only required when implementing TCP/IP-based - // help controllers. - virtual bool Initialize(const wxString& WXUNUSED(file), int WXUNUSED(server) ) { return FALSE; }; - virtual bool Initialize(const wxString& file) = 0; - - // If file is "", reloads file given in Initialize - virtual bool LoadFile(const wxString& file = "") = 0; - virtual bool DisplayContents(void) = 0; - virtual bool DisplaySection(int sectionNo) = 0; - virtual bool DisplayBlock(long blockNo) = 0; - virtual bool KeywordSearch(const wxString& k) = 0; - - virtual bool Quit(void) = 0; - virtual void OnQuit(void) {}; -}; - -#endif // wxUSE_HELP -#endif - // _WX_HELPBASEH__ diff --git a/include/wx/helphtml.h b/include/wx/helphtml.h deleted file mode 100644 index 20ce2789ab..0000000000 --- a/include/wx/helphtml.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef _WX_HELPHTML_H_BASE_ -#define _WX_HELPHTML_H_BASE_ - -#include "wx/generic/helphtml.h" - -#endif - // _WX_HELPHTML_H_BASE_ diff --git a/include/wx/helpwin.h b/include/wx/helpwin.h deleted file mode 100644 index 5743288dad..0000000000 --- a/include/wx/helpwin.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef _WX_HELPWIN_H_BASE_ -#define _WX_HELPWIN_H_BASE_ - -#include "wx/msw/helpwin.h" - -#endif - // _WX_HELPWIN_H_BASE_ diff --git a/include/wx/helpxlp.h b/include/wx/helpxlp.h deleted file mode 100644 index b9f6af78eb..0000000000 --- a/include/wx/helpxlp.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef _WX_HELPXLP_H_BASE_ -#define _WX_HELPXLP_H_BASE_ - -#include "wx/generic/helpxlp.h" - -#endif - // _WX_HELPXLP_H_BASE_ diff --git a/include/wx/icon.h b/include/wx/icon.h deleted file mode 100644 index 4fa9b5d225..0000000000 --- a/include/wx/icon.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef _WX_ICON_H_BASE_ -#define _WX_ICON_H_BASE_ - -/* Commenting out since duplicated in gdicmn.h -// this is for Unix (i.e. now for anything other than MSW) -#undef wxICON -#define wxICON(icon_name) wxIcon(icon_name##_xpm) -*/ - -#if defined(__WXMSW__) - #include "wx/msw/icon.h" -#elif defined(__WXMOTIF__) - #include "wx/motif/icon.h" -#elif defined(__WXGTK__) - #include "wx/gtk/icon.h" -#elif defined(__WXQT__) - #include "wx/qt/icon.h" -#elif defined(__WXMAC__) - #include "wx/mac/icon.h" -#elif defined(__WXSTUBS__) - #include "wx/stubs/icon.h" -#endif - -#endif - // _WX_ICON_H_BASE_ diff --git a/include/wx/image.h b/include/wx/image.h deleted file mode 100644 index 325c7a9a53..0000000000 --- a/include/wx/image.h +++ /dev/null @@ -1,233 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: image.h -// Purpose: wxImage class -// Author: Robert Roebling -// RCS-ID: $Id$ -// Copyright: (c) Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_IMAGE_H_ -#define _WX_IMAGE_H_ - -#ifdef __GNUG__ -#pragma interface "image.h" -#endif - -#include "wx/setup.h" -#include "wx/object.h" -#include "wx/string.h" -#include "wx/gdicmn.h" - -#if wxUSE_STREAMS -#include "wx/stream.h" -#endif - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class WXDLLEXPORT wxImageHandler; -#if wxUSE_LIBPNG -class WXDLLEXPORT wxPNGHandler; -#endif -#if wxUSE_LIBJPEG -class WXDLLEXPORT wxJPEGHandler; -#endif -class WXDLLEXPORT wxBMPHandler; -class WXDLLEXPORT wxImage; - -class WXDLLEXPORT wxBitmap; - -//----------------------------------------------------------------------------- -// wxImageHandler -//----------------------------------------------------------------------------- - -class WXDLLEXPORT wxImageHandler: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxImageHandler) - -public: - wxImageHandler() { m_name = ""; m_extension = ""; m_type = 0; } - -#if wxUSE_STREAMS - virtual bool LoadFile( wxImage *image, wxInputStream& stream ); - virtual bool SaveFile( wxImage *image, wxOutputStream& stream ); -#endif - - inline void SetName(const wxString& name) { m_name = name; } - inline void SetExtension(const wxString& ext) { m_extension = ext; } - inline void SetType(long type) { m_type = type; } - inline wxString GetName() const { return m_name; } - inline wxString GetExtension() const { return m_extension; } - inline long GetType() const { return m_type; } - -protected: - wxString m_name; - wxString m_extension; - long m_type; - -}; - -//----------------------------------------------------------------------------- -// wxPNGHandler -//----------------------------------------------------------------------------- - -#if wxUSE_LIBPNG -class WXDLLEXPORT wxPNGHandler: public wxImageHandler -{ - DECLARE_DYNAMIC_CLASS(wxPNGHandler) - -public: - - inline wxPNGHandler() - { - m_name = "PNG file"; - m_extension = "png"; - m_type = wxBITMAP_TYPE_PNG; - }; - -#if wxUSE_STREAMS - virtual bool LoadFile( wxImage *image, wxInputStream& stream ); - virtual bool SaveFile( wxImage *image, wxOutputStream& stream ); -#endif - -}; -#endif - -//----------------------------------------------------------------------------- -// wxJPEGHandler -//----------------------------------------------------------------------------- - -#ifdef wxUSE_LIBJPEG -class WXDLLEXPORT wxJPEGHandler: public wxImageHandler -{ - DECLARE_DYNAMIC_CLASS(wxJPEGHandler) - -public: - - inline wxJPEGHandler() - { - m_name = "JPEG file"; - m_extension = "jpg"; - m_type = wxBITMAP_TYPE_JPEG; - }; - - virtual bool LoadFile( wxImage *image, wxInputStream& stream ); - virtual bool SaveFile( wxImage *image, wxOutputStream& stream ); -}; -#endif - -//----------------------------------------------------------------------------- -// wxBMPHandler -//----------------------------------------------------------------------------- - -class WXDLLEXPORT wxBMPHandler: public wxImageHandler -{ - DECLARE_DYNAMIC_CLASS(wxBMPHandler) - -public: - - inline wxBMPHandler() - { - m_name = "BMP file"; - m_extension = "bmp"; - m_type = wxBITMAP_TYPE_BMP; - }; - -#if wxUSE_STREAMS - virtual bool LoadFile( wxImage *image, wxInputStream& stream ); -#endif -}; - -//----------------------------------------------------------------------------- -// wxImage -//----------------------------------------------------------------------------- - -class WXDLLEXPORT wxImage: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxImage) - - friend class WXDLLEXPORT wxImageHandler; - -public: - - wxImage(); - wxImage( int width, int height ); - wxImage( const wxString& name, long type = wxBITMAP_TYPE_PNG ); - wxImage( wxInputStream& stream, long type = wxBITMAP_TYPE_PNG ); - - wxImage( const wxImage& image ); - wxImage( const wxImage* image ); - - // these functions get implemented in /src/(platform)/bitmap.cpp - wxImage( const wxBitmap &bitmap ); - wxBitmap ConvertToBitmap() const; - - void Create( int width, int height ); - void Destroy(); - - wxImage Scale( int width, int height ); - - // these routines are slow but safe - void SetRGB( int x, int y, unsigned char r, unsigned char g, unsigned char b ); - unsigned char GetRed( int x, int y ); - unsigned char GetGreen( int x, int y ); - unsigned char GetBlue( int x, int y ); - - virtual bool LoadFile( const wxString& name, long type = wxBITMAP_TYPE_PNG ); - -#if wxUSE_STREAMS - virtual bool LoadFile( wxInputStream& stream, long type = wxBITMAP_TYPE_PNG ); -#endif - - virtual bool SaveFile( const wxString& name, int type ); - -#if wxUSE_STREAMS - virtual bool SaveFile( wxOutputStream& stream, int type ); -#endif - - bool Ok() const; - int GetWidth() const; - int GetHeight() const; - - char unsigned *GetData() const; - void SetData( char unsigned *data ); - - void SetMaskColour( unsigned char r, unsigned char g, unsigned char b ); - unsigned char GetMaskRed() const; - unsigned char GetMaskGreen() const; - unsigned char GetMaskBlue() const; - void SetMask( bool mask = TRUE ); - bool HasMask() const; - - inline wxImage& operator = (const wxImage& image) - { if ((*this) == image) - return (*this); - Ref(image); - return *this; } - - inline bool operator == (const wxImage& image) - { return m_refData == image.m_refData; } - inline bool operator != (const wxImage& image) - { return m_refData != image.m_refData; } - - static inline wxList& GetHandlers() { return sm_handlers; } - static void AddHandler( wxImageHandler *handler ); - static void InsertHandler( wxImageHandler *handler ); - static bool RemoveHandler( const wxString& name ); - static wxImageHandler *FindHandler( const wxString& name ); - static wxImageHandler *FindHandler( const wxString& extension, long imageType ); - static wxImageHandler *FindHandler( long imageType ); - - static void CleanUpHandlers(); - static void InitStandardHandlers(); - -protected: - - static wxList sm_handlers; - -}; - -#endif - // _WX_IMAGE_H_ diff --git a/include/wx/imaglist.h b/include/wx/imaglist.h deleted file mode 100644 index 7aa92ee1bf..0000000000 --- a/include/wx/imaglist.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef _WX_IMAGLIST_H_BASE_ -#define _WX_IMAGLIST_H_BASE_ - -#if defined(__WXMSW__) -#ifdef __WIN16__ -#include "wx/generic/imaglist.h" -#else -#include "wx/msw/imaglist.h" -#endif -#elif defined(__WXMOTIF__) -#include "wx/generic/imaglist.h" -#elif defined(__WXGTK__) -#include "wx/generic/imaglist.h" -#elif defined(__WXQT__) -#include "wx/generic/imaglist.h" -#elif defined(__WXMAC__) -#include "wx/generic/imaglist.h" -#elif defined(__WXSTUBS__) -#include "wx/generic/imaglist.h" -#endif - -#endif - // _WX_IMAGLIST_H_BASE_ diff --git a/include/wx/install-sh b/include/wx/install-sh deleted file mode 100755 index ebc66913e9..0000000000 --- a/include/wx/install-sh +++ /dev/null @@ -1,250 +0,0 @@ -#! /bin/sh -# -# install - install a program, script, or datafile -# This comes from X11R5 (mit/util/scripts/install.sh). -# -# Copyright 1991 by the Massachusetts Institute of Technology -# -# 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. -# -# Calling this script install-sh is preferred over install.sh, to prevent -# `make' implicit rules from creating a file called install from it -# when there is no Makefile. -# -# This script is compatible with the BSD install script, but was written -# from scratch. It can only install one file at a time, a restriction -# shared with many OS's install programs. - - -# set DOITPROG to echo to test this script - -# Don't use :- since 4.3BSD and earlier shells don't like it. -doit="${DOITPROG-}" - - -# put in absolute paths if you don't have them in your path; or use env. vars. - -mvprog="${MVPROG-mv}" -cpprog="${CPPROG-cp}" -chmodprog="${CHMODPROG-chmod}" -chownprog="${CHOWNPROG-chown}" -chgrpprog="${CHGRPPROG-chgrp}" -stripprog="${STRIPPROG-strip}" -rmprog="${RMPROG-rm}" -mkdirprog="${MKDIRPROG-mkdir}" - -transformbasename="" -transform_arg="" -instcmd="$mvprog" -chmodcmd="$chmodprog 0755" -chowncmd="" -chgrpcmd="" -stripcmd="" -rmcmd="$rmprog -f" -mvcmd="$mvprog" -src="" -dst="" -dir_arg="" - -while [ x"$1" != x ]; do - case $1 in - -c) instcmd="$cpprog" - shift - continue;; - - -d) dir_arg=true - shift - continue;; - - -m) chmodcmd="$chmodprog $2" - shift - shift - continue;; - - -o) chowncmd="$chownprog $2" - shift - shift - continue;; - - -g) chgrpcmd="$chgrpprog $2" - shift - shift - continue;; - - -s) stripcmd="$stripprog" - shift - continue;; - - -t=*) transformarg=`echo $1 | sed 's/-t=//'` - shift - continue;; - - -b=*) transformbasename=`echo $1 | sed 's/-b=//'` - shift - continue;; - - *) if [ x"$src" = x ] - then - src=$1 - else - # this colon is to work around a 386BSD /bin/sh bug - : - dst=$1 - fi - shift - continue;; - esac -done - -if [ x"$src" = x ] -then - echo "install: no input file specified" - exit 1 -else - true -fi - -if [ x"$dir_arg" != x ]; then - dst=$src - src="" - - if [ -d $dst ]; then - instcmd=: - else - instcmd=mkdir - fi -else - -# Waiting for this to be detected by the "$instcmd $src $dsttmp" command -# might cause directories to be created, which would be especially bad -# if $src (and thus $dsttmp) contains '*'. - - if [ -f $src -o -d $src ] - then - true - else - echo "install: $src does not exist" - exit 1 - fi - - if [ x"$dst" = x ] - then - echo "install: no destination specified" - exit 1 - else - true - fi - -# If destination is a directory, append the input filename; if your system -# does not like double slashes in filenames, you may need to add some logic - - if [ -d $dst ] - then - dst="$dst"/`basename $src` - else - true - fi -fi - -## this sed command emulates the dirname command -dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` - -# Make sure that the destination directory exists. -# this part is taken from Noah Friedman's mkinstalldirs script - -# Skip lots of stat calls in the usual case. -if [ ! -d "$dstdir" ]; then -defaultIFS=' -' -IFS="${IFS-${defaultIFS}}" - -oIFS="${IFS}" -# Some sh's can't handle IFS=/ for some reason. -IFS='%' -set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` -IFS="${oIFS}" - -pathcomp='' - -while [ $# -ne 0 ] ; do - pathcomp="${pathcomp}${1}" - shift - - if [ ! -d "${pathcomp}" ] ; - then - $mkdirprog "${pathcomp}" - else - true - fi - - pathcomp="${pathcomp}/" -done -fi - -if [ x"$dir_arg" != x ] -then - $doit $instcmd $dst && - - if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && - if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi -else - -# If we're going to rename the final executable, determine the name now. - - if [ x"$transformarg" = x ] - then - dstfile=`basename $dst` - else - dstfile=`basename $dst $transformbasename | - sed $transformarg`$transformbasename - fi - -# don't allow the sed command to completely eliminate the filename - - if [ x"$dstfile" = x ] - then - dstfile=`basename $dst` - else - true - fi - -# Make a temp file name in the proper directory. - - dsttmp=$dstdir/#inst.$$# - -# Move or copy the file name to the temp name - - $doit $instcmd $src $dsttmp && - - trap "rm -f ${dsttmp}" 0 && - -# and set any options; do chmod last to preserve setuid bits - -# If any of these fail, we abort the whole thing. If we want to -# ignore errors from any of these, just make sure not to ignore -# errors from the above "$doit $instcmd $src $dsttmp" command. - - if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && - if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && - -# Now rename the file to the real destination. - - $doit $rmcmd -f $dstdir/$dstfile && - $doit $mvcmd $dsttmp $dstdir/$dstfile - -fi && - - -exit 0 diff --git a/include/wx/intl.h b/include/wx/intl.h deleted file mode 100644 index 3edc2edb9a..0000000000 --- a/include/wx/intl.h +++ /dev/null @@ -1,141 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: intl.h -// Purpose: Internationalization and localisation for wxWindows -// Author: Vadim Zeitlin -// Modified by: -// Created: 29/01/98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifndef __INTLH__ -#define __INTLH__ - -#ifdef __GNUG__ -#pragma interface "intl.h" -#endif - -#include "wx/defs.h" -#include "wx/string.h" - -// ============================================================================ -// global decls -// ============================================================================ - -// ---------------------------------------------------------------------------- -// simple types -// ---------------------------------------------------------------------------- - -// # adjust if necessary -typedef unsigned char size_t8; -typedef unsigned long size_t32; - -// ---------------------------------------------------------------------------- -// macros -// ---------------------------------------------------------------------------- - -// gettext() style macro -#ifndef WXINTL_NO_GETTEXT_MACRO -#define _(str) wxGetTranslation(str) -#endif - -// ---------------------------------------------------------------------------- -// forward decls -// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxLocale; -class WXDLLEXPORT wxMsgCatalog; -extern WXDLLEXPORT_DATA(wxLocale *) g_pLocale; - -// ============================================================================ -// locale support -// ============================================================================ - -// ---------------------------------------------------------------------------- -// wxLocale: encapsulates all language dependent settings, including current -// message catalogs, date, time and currency formats (#### to do) &c -// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxLocale -{ -public: - // ctor & dtor - // call Init() if you use this ctor - wxLocale(); - // the ctor has a side effect of changing current locale - wxLocale(const char *szName, // name (for messages) - const char *szShort = (const char *) NULL, // dir prefix (for msg files) - const char *szLocale = (const char *) NULL, // locale (for setlocale) - bool bLoadDefault = TRUE) // preload wxstd.mo? - { Init(szName, szShort, szLocale, bLoadDefault); } - // the same as a function (returns TRUE on success) - bool Init(const char *szName, - const char *szShort = (const char *) NULL, - const char *szLocale = (const char *) NULL, - bool bLoadDefault = TRUE); - // restores old locale - ~wxLocale(); - - // returns locale name - const char *GetLocale() const { return m_strLocale; } - - // add a prefix to the catalog lookup path: the message catalog files will be - // looked up under prefix//LC_MESSAGES, prefix/LC_MESSAGES and prefix - // (in this order). - // - // This only applies to subsequent invocations of AddCatalog()! - static void AddCatalogLookupPathPrefix(const wxString& prefix); - - // add a catalog: it's searched for in standard places (current directory - // first, system one after), but the you may prepend additional directories to - // the search path with AddCatalogLookupPathPrefix(). - // - // The loaded catalog will be used for message lookup by GetString(). - // - // Returns 'true' if it was successfully loaded - bool AddCatalog(const char *szDomain); - - // check if the given catalog is loaded - bool IsLoaded(const char *szDomain) const; - - // retrieve the translation for a string in all loaded domains unless - // the szDomain parameter is specified (and then only this domain is - // searched) - // - // return original string if translation is not available - // (in this case an error message is generated the first time - // a string is not found; use wxLogNull to suppress it) - // - // domains are searched in the last to first order, i.e. catalogs - // added later override those added before. - const char *GetString(const char *szOrigString, - const char *szDomain = (const char *) NULL) const; - - // Returns the current short name for the locale - wxString const &GetName() const { return m_strShort; } - private: - // find catalog by name in a linked list, return NULL if !found - wxMsgCatalog *FindCatalog(const char *szDomain) const; - - wxString m_strLocale, // this locale name - m_strShort; // short name for the locale - - const char *m_pszOldLocale; // previous locale from setlocale() - wxLocale *m_pOldLocale; // previous wxLocale - - wxMsgCatalog *m_pMsgCat; // pointer to linked list of catalogs -}; - -// ---------------------------------------------------------------------------- -// global functions -// ---------------------------------------------------------------------------- -WXDLLEXPORT wxLocale* wxGetLocale(); - -// get the translation of the string in the current locale -inline const char *wxGetTranslation(const char *sz) -{ - wxLocale *pLoc = wxGetLocale(); - return pLoc == (wxLocale *) NULL ? sz : pLoc->GetString(sz); -} - -#endif - // _WX_INTLH__ diff --git a/include/wx/ipcbase.h b/include/wx/ipcbase.h deleted file mode 100644 index 6bb4d924c7..0000000000 --- a/include/wx/ipcbase.h +++ /dev/null @@ -1,119 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: ipcbase.h -// Purpose: Base classes for IPC -// Author: Julian Smart -// Modified by: -// Created: 4/1/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_IPCBASEH__ -#define _WX_IPCBASEH__ - -#ifdef __GNUG__ -#pragma interface "ipcbase.h" -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/string.h" - -enum wxIPCFormat -{ - wxIPC_INVALID = 0, - wxIPC_TEXT = 1, /* CF_TEXT */ - wxIPC_BITMAP = 2, /* CF_BITMAP */ - wxIPC_METAFILE = 3, /* CF_METAFILEPICT */ - wxIPC_SYLK = 4, - wxIPC_DIF = 5, - wxIPC_TIFF = 6, - wxIPC_OEMTEXT = 7, /* CF_OEMTEXT */ - wxIPC_DIB = 8, /* CF_DIB */ - wxIPC_PALETTE = 9, - wxIPC_PENDATA = 10, - wxIPC_RIFF = 11, - wxIPC_WAVE = 12, - wxIPC_UNICODETEXT = 13, - wxIPC_ENHMETAFILE = 14, - wxIPC_FILENAME = 15, /* CF_HDROP */ - wxIPC_LOCALE = 16, - wxIPC_PRIVATE = 20 -}; - -class WXDLLEXPORT wxDDEServerBase; -class WXDLLEXPORT wxDDEClientBase; - -class WXDLLEXPORT wxConnectionBase: public wxObject -{ - DECLARE_CLASS(wxConnectionBase) - public: - inline wxConnectionBase(void) {} - inline ~wxConnectionBase(void) {} - - // Calls that CLIENT can make - virtual bool Execute(char *data, int size = -1, wxIPCFormat format = wxIPC_TEXT ) = 0; - virtual bool Execute(const wxString& str) { return Execute((char *)(const char *)str, -1, wxIPC_TEXT); } - virtual char *Request(const wxString& item, int *size = (int *) NULL, wxIPCFormat format = wxIPC_TEXT) = 0; - virtual bool Poke(const wxString& item, char *data, int size = -1, wxIPCFormat format = wxIPC_TEXT) = 0; - virtual bool StartAdvise(const wxString& item) = 0; - virtual bool StopAdvise(const wxString& item) = 0; - - // Calls that SERVER can make - virtual bool Advise(const wxString& item, char *data, int size = -1, wxIPCFormat format = wxIPC_TEXT) = 0; - - // Calls that both can make - virtual bool Disconnect(void) = 0; - - // Callbacks to SERVER - override at will - virtual bool OnExecute( const wxString& WXUNUSED(topic), char *WXUNUSED(data), int WXUNUSED(size), - int WXUNUSED(format) ) { return FALSE; }; - virtual char *OnRequest( const wxString& WXUNUSED(topic), const wxString& WXUNUSED(item), - int *WXUNUSED(size), int WXUNUSED(format) ) { return (char *) NULL; }; - virtual bool OnPoke( const wxString& WXUNUSED(topic), const wxString& WXUNUSED(item), char *WXUNUSED(data), - int WXUNUSED(size), int WXUNUSED(format) ) { return FALSE; }; - virtual bool OnStartAdvise( const wxString& WXUNUSED(topic), const wxString& WXUNUSED(item) ) - { return FALSE; }; - virtual bool OnStopAdvise( const wxString& WXUNUSED(topic), const wxString& WXUNUSED(item) ) - { return FALSE; }; - - // Callbacks to CLIENT - override at will - virtual bool OnAdvise( const wxString& WXUNUSED(topic), const wxString& WXUNUSED(item), char *WXUNUSED(data), - int WXUNUSED(size), int WXUNUSED(format) ) { return FALSE; }; - - // Callbacks to BOTH - - // Default behaviour is to delete connection and return TRUE - virtual bool OnDisconnect(void) = 0; -}; - -class WXDLLEXPORT wxServerBase: public wxObject -{ - DECLARE_CLASS(wxServerBase) - public: - - inline wxServerBase(void) {} - inline ~wxServerBase(void) {}; - virtual bool Create(const wxString& serverName) = 0; // Returns FALSE if can't create server (e.g. port - // number is already in use) - virtual wxConnectionBase *OnAcceptConnection(const wxString& topic) = 0; - -}; - -class WXDLLEXPORT wxClientBase: public wxObject -{ - DECLARE_CLASS(wxClientBase) - public: - inline wxClientBase(void) {}; - inline ~wxClientBase(void) {}; - virtual bool ValidHost(const wxString& host) = 0; - virtual wxConnectionBase *MakeConnection(const wxString& host, const wxString& server, const wxString& topic) = 0; - // Call this to make a connection. - // Returns NULL if cannot. - virtual wxConnectionBase *OnMakeConnection(void) = 0; // Tailor this to return own connection. - -}; - -#endif - // _WX_IPCBASEH__ diff --git a/include/wx/joystick.h b/include/wx/joystick.h deleted file mode 100644 index 5391c9c5c3..0000000000 --- a/include/wx/joystick.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef _WX_JOYSTICK_H_BASE_ -#define _WX_JOYSTICK_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/joystick.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/joystick.h" -#elif defined(__WXGTK__) -#include "wx/gtk/joystick.h" -#elif defined(__WXMAC__) -#include "wx/mac/joystick.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/joystick.h" -#endif - -#endif - // _WX_JOYSTICK_H_BASE_ diff --git a/include/wx/layout.h b/include/wx/layout.h deleted file mode 100644 index 04ae4f1401..0000000000 --- a/include/wx/layout.h +++ /dev/null @@ -1,308 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: layout.h -// Purpose: Layout classes -// Author: Julian Smart -// Modified by: -// Created: 29/01/98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Julian Smart -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_LAYOUTH__ -#define _WX_LAYOUTH__ - -#ifdef __GNUG__ -#pragma interface "layout.h" -#endif - -#include "wx/defs.h" - -class WXDLLEXPORT wxWindow; - -// X stupidly defines these in X.h -#ifdef Above -#undef Above -#endif -#ifdef Below -#undef Below -#endif - -#define wxLAYOUT_DEFAULT_MARGIN 0 - -enum wxEdge { wxLeft, wxTop, wxRight, wxBottom, wxWidth, wxHeight, - wxCentre, wxCenter = wxCentre, wxCentreX, wxCentreY }; -enum wxRelationship { wxUnconstrained = 0, - wxAsIs, - wxPercentOf, - wxAbove, - wxBelow, - wxLeftOf, - wxRightOf, - wxSameAs, - wxAbsolute }; - -class WXDLLEXPORT wxLayoutConstraints; -class WXDLLEXPORT wxIndividualLayoutConstraint: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxIndividualLayoutConstraint) - - protected: - // To be allowed to modify the internal variables - friend class wxIndividualLayoutConstraint_Serialize; - - // 'This' window is the parent or sibling of otherWin - wxWindow *otherWin; - - wxEdge myEdge; - wxRelationship relationship; - int margin; - int value; - int percent; - wxEdge otherEdge; - bool done; - - public: - wxIndividualLayoutConstraint(); - ~wxIndividualLayoutConstraint(); - - void Set(wxRelationship rel, wxWindow *otherW, wxEdge otherE, int val = 0, int marg = wxLAYOUT_DEFAULT_MARGIN); - - // - // Sibling relationships - // - void LeftOf(wxWindow *sibling, int marg = wxLAYOUT_DEFAULT_MARGIN); - void RightOf(wxWindow *sibling, int marg = wxLAYOUT_DEFAULT_MARGIN); - void Above(wxWindow *sibling, int marg = wxLAYOUT_DEFAULT_MARGIN); - void Below(wxWindow *sibling, int marg = wxLAYOUT_DEFAULT_MARGIN); - - // - // 'Same edge' alignment - // - void SameAs(wxWindow *otherW, wxEdge edge, int marg = wxLAYOUT_DEFAULT_MARGIN); - - // The edge is a percentage of the other window's edge - void PercentOf(wxWindow *otherW, wxEdge wh, int per); - - // - // Edge has absolute value - // - void Absolute(int val); - - // - // Dimension is unconstrained - // - inline void Unconstrained() { relationship = wxUnconstrained; } - - // - // Dimension is 'as is' (use current size settings) - // - inline void AsIs() { relationship = wxAsIs; } - - // - // Accessors - // - inline wxWindow *GetOtherWindow() { return otherWin; } - inline wxEdge GetMyEdge() const { return myEdge; } - inline void SetEdge(wxEdge which) { myEdge = which; } - inline void SetValue(int v) { value = v; } - inline int GetMargin() { return margin; } - inline void SetMargin(int m) { margin = m; } - inline int GetValue() const { return value; } - inline int GetPercent() const { return percent; } - inline int GetOtherEdge() const { return otherEdge; } - inline bool GetDone() const { return done; } - inline void SetDone(bool d) { done = d; } - inline wxRelationship GetRelationship() { return relationship; } - inline void SetRelationship(wxRelationship r) { relationship = r; } - - // Reset constraint if it mentions otherWin - bool ResetIfWin(wxWindow *otherW); - - // Try to satisfy constraint - bool SatisfyConstraint(wxLayoutConstraints *constraints, wxWindow *win); - - // Get the value of this edge or dimension, or if this - // is not determinable, -1. - int GetEdge(wxEdge which, wxWindow *thisWin, wxWindow *other) const; -}; - -class WXDLLEXPORT wxLayoutConstraints: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxLayoutConstraints) - - public: - // Edge constraints - wxIndividualLayoutConstraint left; - wxIndividualLayoutConstraint top; - wxIndividualLayoutConstraint right; - wxIndividualLayoutConstraint bottom; - // Size constraints - wxIndividualLayoutConstraint width; - wxIndividualLayoutConstraint height; - // Centre constraints - wxIndividualLayoutConstraint centreX; - wxIndividualLayoutConstraint centreY; - - wxLayoutConstraints(); - ~wxLayoutConstraints(); - - bool SatisfyConstraints(wxWindow *win, int *noChanges); - bool AreSatisfied() const - { - return left.GetDone() && top.GetDone() && right.GetDone() && - bottom.GetDone() && centreX.GetDone() && centreY.GetDone(); - } -}; - -bool WXDLLEXPORT wxOldDoLayout(wxWindow *win); - -/* - -Algorithm: - - Each sizer has a Layout function. - - wxExpandSizer::Layout ; E.g. for resizeable windows - - - parent size must be known (i.e. called - from OnSize or explicitly) - - call Layout on each child to give it a chance to resize - (e.g. child shrinks around its own children): - stop when all children return TRUE, or no change - - evaluate constraints on self to set size - - wxShrinkSizer::Layout ; E.g. fit-to-contents windows - ; Perhaps 2 rowcols, one above other. - - - call Layout on each child to give it a chance to resize - (e.g. child shrinks around its own children): - stop when each returns TRUE, or no change - - fit around children - (what if some want to be centred? E.g. OK/Cancel rowcol. - - done by centring e.g. bottom sizer w.r.t. top sizer. - (sibling relationship only)) - - evaluate own constraints (e.g. may be below another window) - - IF parent is a real window (remember: a real window can - have only one child sizer, although a sizer can have several child - (real) windows), then resize this parent WITHOUT invoking Layout - again. - Frame and dialog box OnSizes can check if the sizer is a shrink - sizer; if not, can call layout. Maybe have virtual bool AutoSizeLayout() - to determine this. - -How to relayout if a child sizer/window changes? Need to go all the way -to the top of the hierarchy and call Layout() again. - - wxRowColSizer::Layout - - - Similar to wxShrinkSizer only instead of shrinking to fit - contents, more sophisticated layout of contents, and THEN - shrinking (possibly). - - Do the same parent window check/setsize as for wxShrinkSizer. - -*/ - -typedef enum { - wxSizerShrink, - wxSizerExpand, - wxSizerNone -} wxSizerBehaviour; - -#define wxTYPE_SIZER 90 - -class WXDLLEXPORT wxSizer: public wxWindow -{ - DECLARE_DYNAMIC_CLASS(wxSizer) - - private: - protected: - wxSizerBehaviour sizerBehaviour; - int borderX; - int borderY; - int sizerWidth; - int sizerHeight; - int sizerX; - int sizerY; - public: - wxSizer(); - wxSizer(wxWindow *parent, wxSizerBehaviour behav = wxSizerNone); - ~wxSizer(); - - bool Create(wxWindow *parent, wxSizerBehaviour behav = wxSizerNone); - virtual void SetSize(int x, int y, int w, int h, int flags = wxSIZE_AUTO); - virtual void GetSize(int *w, int *h) const; - - virtual void GetClientSize(int *w, int *h) const { GetSize(w, h); } - virtual void GetPosition(int *x, int *y) const; - - inline void SizerSetSize(int x, int y, int w, int h) - { SetSize(x, y, w, h); } - inline void SizerMove(int x, int y) - { Move(x, y); } - - virtual void SetBorder(int w, int h); - inline int GetBorderX() { return borderX ; } - inline int GetBorderY() { return borderY ; } - - virtual void AddSizerChild(wxWindow *child); - virtual void RemoveSizerChild(wxWindow *child); - - inline virtual void SetBehaviour(wxSizerBehaviour b) { sizerBehaviour = b; } - inline virtual wxSizerBehaviour GetBehaviour() { return sizerBehaviour; } - - virtual bool LayoutPhase1(int *); - virtual bool LayoutPhase2(int *); -}; - -#define wxSIZER_ROWS TRUE -#define wxSIZER_COLS FALSE - -class WXDLLEXPORT wxRowColSizer: public wxSizer -{ - DECLARE_DYNAMIC_CLASS(wxRowColSizer) - - private: - protected: - bool rowOrCol; - int rowOrColSize; - int xSpacing; - int ySpacing; - public: - // rowOrCol = TRUE to be laid out in rows, otherwise in columns. - wxRowColSizer(); - wxRowColSizer(wxWindow *parent, bool rowOrCol = wxSIZER_ROWS, int rowsOrColSize = 20, wxSizerBehaviour = wxSizerShrink); - ~wxRowColSizer(); - - bool Create(wxWindow *parent, bool rowOrCol = wxSIZER_ROWS, int rowsOrColSize = 20, wxSizerBehaviour = wxSizerShrink); - virtual void SetSize(int x, int y, int w, int h, int flags = wxSIZE_AUTO); - - inline virtual void SetRowOrCol(bool rc) { rowOrCol = rc; } - inline virtual bool GetRowOrCol() { return rowOrCol; } - inline virtual void SetRowOrColSize(int n) { rowOrColSize = n; } - inline virtual int GetRowOrColSize() { return rowOrColSize; } - inline virtual void SetSpacing(int x, int y) { xSpacing = x; ySpacing = y; } - inline virtual void GetSpacing(int *x, int *y) { *x = xSpacing; *y = ySpacing; } - - bool LayoutPhase1(int *); - bool LayoutPhase2(int *); -}; - -class WXDLLEXPORT wxSpacingSizer: public wxSizer -{ - DECLARE_DYNAMIC_CLASS(wxSpacingSizer) - - private: - protected: - public: - wxSpacingSizer(); - wxSpacingSizer(wxWindow *parent, wxRelationship rel, wxWindow *other, int spacing); - wxSpacingSizer(wxWindow *parent); - ~wxSpacingSizer(); - - bool Create(wxWindow *parent, wxRelationship rel, wxWindow *other, int sp); - bool Create(wxWindow *parent); -}; - -#endif - // _WX_LAYOUTH__ diff --git a/include/wx/laywin.h b/include/wx/laywin.h deleted file mode 100644 index f3ad27274d..0000000000 --- a/include/wx/laywin.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef _WX_LAYWIN_H_BASE_ -#define _WX_LAYWIN_H_BASE_ - -#include "wx/generic/laywin.h" - -#endif - // _WX_LAYWIN_H_BASE_ diff --git a/include/wx/list.h b/include/wx/list.h deleted file mode 100644 index b578982866..0000000000 --- a/include/wx/list.h +++ /dev/null @@ -1,510 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: list.h -// Purpose: wxList, wxStringList classes -// Author: Julian Smart -// Modified by: VZ at 16/11/98: WX_DECLARE_LIST() and typesafe lists added -// Created: 29/01/98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Julian Smart -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -/* - All this is quite ugly but serves two purposes: - 1. Be almost 100% compatible with old, untyped, wxList class - 2. Ensure compile-time type checking for the linked lists - - The idea is to have one base class (wxListBase) working with "void *" data, - but to hide these untyped functions - i.e. make them protected, so they - can only be used from derived classes which have inline member functions - working with right types. This achieves the 2nd goal. As for the first one, - we provide a special derivation of wxListBase called wxList which looks just - like the old class. -*/ - -#ifndef _WX_LISTH__ -#define _WX_LISTH__ - -#ifdef __GNUG__ -#pragma interface "list.h" -#endif - -// ----------------------------------------------------------------------------- -// headers -// ----------------------------------------------------------------------------- - -#include "wx/defs.h" -#include "wx/debug.h" -#include "wx/object.h" -#include "wx/string.h" - -// due to circular header dependencies this function has to be declared here -// (normally it's found in utils.h which includes itself list.h...) -extern WXDLLEXPORT char* copystring(const char *s); - -class WXDLLEXPORT wxObjectListNode; -typedef wxObjectListNode wxNode; - -// undef it to get rid of old, deprecated functions -#define wxLIST_COMPATIBILITY - -// ----------------------------------------------------------------------------- -// constants -// ----------------------------------------------------------------------------- -enum wxKeyType -{ - wxKEY_NONE, - wxKEY_INTEGER, - wxKEY_STRING -}; - -// ----------------------------------------------------------------------------- -// types -// ----------------------------------------------------------------------------- - -// type of compare function for list sort operation (as in 'qsort'): it should -// return a negative value, 0 or positive value if the first element is less -// than, equal or greater than the second -typedef int (*wxSortCompareFunction)(const void *elem1, const void *elem2); - -// -typedef int (*wxListIterateFunction)(void *current); - -// ----------------------------------------------------------------------------- -// key stuff: a list may be optionally keyed on integer or string key -// ----------------------------------------------------------------------------- - -union wxListKeyValue -{ - long integer; - char *string; -}; - -// a struct which may contain both types of keys -// -// implementation note: on one hand, this class allows to have only one function -// for any keyed operation instead of 2 almost equivalent. OTOH, it's needed to -// resolve ambiguity which we would otherwise have with wxStringList::Find() and -// wxList::Find(const char *). -class WXDLLEXPORT wxListKey -{ -public: - // implicit ctors - wxListKey() - { m_keyType = wxKEY_NONE; } - wxListKey(long i) - { m_keyType = wxKEY_INTEGER; m_key.integer = i; } - wxListKey(const char *s) - { m_keyType = wxKEY_STRING; m_key.string = strdup(s); } - wxListKey(const wxString& s) - { m_keyType = wxKEY_STRING; m_key.string = strdup(s.c_str()); } - - // accessors - wxKeyType GetKeyType() const { return m_keyType; } - const char *GetString() const - { wxASSERT( m_keyType == wxKEY_STRING ); return m_key.string; } - long GetNumber() const - { wxASSERT( m_keyType == wxKEY_INTEGER ); return m_key.integer; } - - // comparison - // Note: implementation moved to list.cpp to prevent BC++ inline - // expansion warning. - bool operator==(wxListKeyValue value) const ; - - // dtor - ~wxListKey() - { - if ( m_keyType == wxKEY_STRING ) - free(m_key.string); - } - -private: - wxKeyType m_keyType; - wxListKeyValue m_key; -}; - -// ----------------------------------------------------------------------------- -// wxNodeBase class is a (base for) node in a double linked list -// ----------------------------------------------------------------------------- - -WXDLLEXPORT_DATA(extern wxListKey) wxDefaultListKey; - -class WXDLLEXPORT wxNodeBase -{ -friend class wxListBase; -public: - // ctor - wxNodeBase(wxListBase *list = (wxListBase *)NULL, - wxNodeBase *previous = (wxNodeBase *)NULL, - wxNodeBase *next = (wxNodeBase *)NULL, - void *data = NULL, - const wxListKey& key = wxDefaultListKey); - - virtual ~wxNodeBase(); - - // @@ no check is done that the list is really keyed on strings - const char *GetKeyString() const { return m_key.string; } - long GetKeyInteger() const { return m_key.integer; } - - // Necessary for some existing code - void SetKeyString(char* s) { m_key.string = s; } - void SetKeyInteger(long i) { m_key.integer = i; } - -#ifdef wxLIST_COMPATIBILITY - // compatibility methods - wxNode *Next() const { return (wxNode *)GetNext(); } - wxNode *Previous() const { return (wxNode *)GetPrevious(); } - wxObject *Data() const { return (wxObject *)GetData(); } -#endif // wxLIST_COMPATIBILITY - -protected: - // all these are going to be "overloaded" in the derived classes - wxNodeBase *GetNext() const { return m_next; } - wxNodeBase *GetPrevious() const { return m_previous; } - - void *GetData() const { return m_data; } - void SetData(void *data) { m_data = data; } - - // get 0-based index of this node within the list or wxNOT_FOUND - int IndexOf() const; - - virtual void DeleteData() { } - -private: - // optional key stuff - wxListKeyValue m_key; - - void *m_data; // user data - wxNodeBase *m_next, // next and previous nodes in the list - *m_previous; - - wxListBase *m_list; // list we belong to -}; - -// ----------------------------------------------------------------------------- -// a double-linked list class -// ----------------------------------------------------------------------------- -class WXDLLEXPORT wxListBase : public wxObject -{ -friend class wxNodeBase; // should be able to call DetachNode() -public: - // default ctor & dtor - wxListBase(wxKeyType keyType = wxKEY_NONE) { Init(keyType); } - virtual ~wxListBase(); - - // accessors - // count of items in the list - size_t GetCount() const { return m_count; } - - // operations - - // delete all nodes - void Clear(); - - // instruct it to destroy user data when deleting nodes - void DeleteContents(bool destroy) { m_destroy = destroy; } - - // query if to delete - bool GetDeleteContents() const - { return m_destroy; } - - // get the keytype - wxKeyType GetKeyType() const - { return m_keyType; } - - // set the keytype (required by the serial code) - void SetKeyType(wxKeyType keyType) - { wxASSERT( m_count==0 ); m_keyType = keyType; } - -protected: - - // all methods here are "overloaded" in derived classes to provide compile - // time type checking - - // create a node for the list of this type - virtual wxNodeBase *CreateNode(wxNodeBase *prev, wxNodeBase *next, - void *data, - const wxListKey& key = wxDefaultListKey) = 0; - -// Can't access these from derived classes otherwise (bug in Salford C++?) -#ifdef __SALFORDC__ -public: -#endif - - // ctors - // from an array - wxListBase(size_t count, void *elements[]); - // from a sequence of objects - wxListBase(void *object, ... /* terminate with NULL */); - -protected: - // copy ctor and assignment operator - wxListBase(const wxListBase& list) - { DoCopy(list); } - wxListBase& operator=(const wxListBase& list) - { Clear(); DoCopy(list); return *this; } - - // get list head/tail - wxNodeBase *GetFirst() const { return m_nodeFirst; } - wxNodeBase *GetLast() const { return m_nodeLast; } - - // by (0-based) index - wxNodeBase *Item(size_t index) const; - - // get the list item's data - void *operator[](size_t index) const - { wxNodeBase *node = Item(index); return node ? node->GetData() : (wxNodeBase*)NULL; } - - // operations - // append to end of list - wxNodeBase *Append(void *object); - // insert a new item at the beginning of the list - wxNodeBase *Insert(void *object) { return Insert( (wxNodeBase*)NULL, object); } - // insert before given node or at front of list if prev == NULL - wxNodeBase *Insert(wxNodeBase *prev, void *object); - - // keyed append - wxNodeBase *Append(long key, void *object); - wxNodeBase *Append(const char *key, void *object); - - // removes node from the list but doesn't delete it (returns pointer - // to the node or NULL if it wasn't found in the list) - wxNodeBase *DetachNode(wxNodeBase *node); - // delete element from list, returns FALSE if node not found - bool DeleteNode(wxNodeBase *node); - // finds object pointer and deletes node (and object if DeleteContents - // is on), returns FALSE if object not found - bool DeleteObject(void *object); - - // search (all return NULL if item not found) - // by data - wxNodeBase *Find(void *object) const; - - // by key - wxNodeBase *Find(const wxListKey& key) const; - - // get 0-based index of object or wxNOT_FOUND - int IndexOf( void *object ) const; - - // this function allows the sorting of arbitrary lists by giving - // a function to compare two list elements. The list is sorted in place. - void Sort(const wxSortCompareFunction compfunc); - - // functions for iterating over the list - void *FirstThat(wxListIterateFunction func); - void ForEach(wxListIterateFunction func); - void *LastThat(wxListIterateFunction func); - -private: - // helpers - // common part of all ctors - void Init(wxKeyType keyType = wxKEY_NONE); - // common part of copy ctor and assignment operator - void DoCopy(const wxListBase& list); - // common part of all Append()s - wxNodeBase *AppendCommon(wxNodeBase *node); - // free node's data and node itself - void DoDeleteNode(wxNodeBase *node); - - size_t m_count; // number of elements in the list - bool m_destroy; // destroy user data when deleting list items? - wxNodeBase *m_nodeFirst, // pointers to the head and tail of the list - *m_nodeLast; - - wxKeyType m_keyType; // type of our keys (may be wxKEY_NONE) -}; - -// ----------------------------------------------------------------------------- -// macros for definition of "template" list type -// ----------------------------------------------------------------------------- - -// and now some heavy magic... - -// declare a list type named 'name' and containing elements of type 'T *' -// (as a by product of macro expansion you also get wx##name##Node -// wxNode-derived type) -// -// implementation details: -// 1. We define _WX_LIST_ITEM_TYPE_##name typedef to save in it the item type -// for the list of given type - this allows us to pass only the list name -// to WX_DEFINE_LIST() even if it needs both the name and the type -// -// 2. We redefine all non-type-safe wxList functions with type-safe versions -// which don't take any space (everything is inline), but bring compile -// time error checking. - -#define WX_DECLARE_LIST_2(T, name, nodetype) \ - typedef int (*wxSortFuncFor_##name)(const T *, const T *); \ - \ - class WXDLLEXPORT nodetype : public wxNodeBase \ - { \ - public: \ - nodetype(wxListBase *list = (wxListBase *)NULL, \ - nodetype *previous = (nodetype *)NULL, \ - nodetype *next = (nodetype *)NULL, \ - T *data = (T *)NULL, \ - const wxListKey& key = wxDefaultListKey) \ - : wxNodeBase(list, previous, next, data, key) { } \ - \ - nodetype *GetNext() const \ - { return (nodetype *)wxNodeBase::GetNext(); } \ - nodetype *GetPrevious() const \ - { return (nodetype *)wxNodeBase::GetPrevious(); } \ - \ - T *GetData() const \ - { return (T *)wxNodeBase::GetData(); } \ - void SetData(T *data) \ - { wxNodeBase::SetData(data); } \ - \ - virtual void DeleteData(); \ - }; \ - \ - class WXDLLEXPORT name : public wxListBase \ - { \ - public: \ - typedef nodetype Node; \ - \ - name(wxKeyType keyType = wxKEY_NONE) : wxListBase(keyType) \ - { } \ - name(size_t count, T *elements[]) \ - : wxListBase(count, (void **)elements) { } \ - \ - nodetype *GetFirst() const \ - { return (nodetype *)wxListBase::GetFirst(); } \ - nodetype *GetLast() const \ - { return (nodetype *)wxListBase::GetLast(); } \ - \ - nodetype *Item(size_t index) const \ - { return (nodetype *)wxListBase::Item(index); } \ - \ - T *operator[](size_t index) const \ - { \ - nodetype *node = Item(index); \ - return node ? (T*)(node->GetData()) : (T*)NULL; \ - } \ - \ - nodetype *Append(T *object) \ - { return (nodetype *)wxListBase::Append(object); } \ - nodetype *Insert(T *object) \ - { return (nodetype *)Insert((nodetype*)NULL, object); } \ - nodetype *Insert(nodetype *prev, T *object) \ - { return (nodetype *)wxListBase::Insert(prev, object); } \ - \ - nodetype *Append(long key, void *object) \ - { return (nodetype *)wxListBase::Append(key, object); } \ - nodetype *Append(const char *key, void *object) \ - { return (nodetype *)wxListBase::Append(key, object); } \ - \ - nodetype *DetachNode(nodetype *node) \ - { return (nodetype *)wxListBase::DetachNode(node); } \ - bool DeleteNode(nodetype *node) \ - { return wxListBase::DeleteNode(node); } \ - bool DeleteObject(T *object) \ - { return wxListBase::DeleteObject(object); } \ - \ - nodetype *Find(T *object) const \ - { return (nodetype *)wxListBase::Find(object); } \ - \ - virtual nodetype *Find(const wxListKey& key) const \ - { return (nodetype *)wxListBase::Find(key); } \ - \ - int IndexOf( T *object ) const \ - { return wxListBase::IndexOf(object); } \ - \ - void Sort(wxSortFuncFor_##name func) \ - { wxListBase::Sort((wxSortCompareFunction)func); } \ - \ - protected: \ - wxNodeBase *CreateNode(wxNodeBase *prev, wxNodeBase *next, \ - void *data, \ - const wxListKey& key = wxDefaultListKey) \ - { \ - return new nodetype(this, \ - (nodetype *)prev, (nodetype *)next, \ - (T *)data, key); \ - } \ - } - -#define WX_DECLARE_LIST(elementtype, listname) \ - typedef elementtype _WX_LIST_ITEM_TYPE_##listname; \ - WX_DECLARE_LIST_2(elementtype, listname, wx##listname##Node) - -// this macro must be inserted in your program after -// #include -#define WX_DEFINE_LIST(name) "don't forget to include listimpl.cpp!" - - -// ============================================================================= -// now we can define classes 100% compatible with the old ones -// ============================================================================= - -#ifdef wxLIST_COMPATIBILITY - -// ----------------------------------------------------------------------------- -// wxList compatibility class: in fact, it's a list of wxObjects -// ----------------------------------------------------------------------------- - -WX_DECLARE_LIST_2(wxObject, wxObjectList, wxObjectListNode); - -class WXDLLEXPORT wxList : public wxObjectList -{ -public: - wxList(int key_type = wxKEY_NONE) : wxObjectList((wxKeyType)key_type) { } - - // compatibility methods - void Sort(wxSortCompareFunction compfunc) { wxListBase::Sort(compfunc); } - - int Number() const { return GetCount(); } - wxNode *First() const { return (wxNode *)GetFirst(); } - wxNode *Last() const { return (wxNode *)GetLast(); } - wxNode *Nth(size_t index) const { return (wxNode *)Item(index); } - wxNode *Member(wxObject *object) const { return (wxNode *)Find(object); } -}; - -// ----------------------------------------------------------------------------- -// wxStringList class for compatibility with the old code -// ----------------------------------------------------------------------------- - -WX_DECLARE_LIST_2(char, wxStringListBase, wxStringListNode); - -class WXDLLEXPORT wxStringList : public wxStringListBase -{ -public: - // ctors and such - // default - wxStringList() { DeleteContents(TRUE); } - wxStringList(const char *first ...); - - // copying the string list: the strings are copied, too (extremely - // inefficient!) - wxStringList(const wxStringList& other) { DoCopy(other); } - wxStringList& operator=(const wxStringList& other) - { Clear(); DoCopy(other); return *this; } - - // operations - // makes a copy of the string - wxNode *Add(const char *s) - { return (wxNode *)wxStringListBase::Append(copystring(s)); } - - bool Delete(const char *s); - - char **ListToArray(bool new_copies = FALSE) const; - bool Member(const char *s) const; - - // alphabetic sort - void Sort(); - - // compatibility methods - int Number() const { return GetCount(); } - wxNode *First() const { return (wxNode *)GetFirst(); } - wxNode *Last() const { return (wxNode *)GetLast(); } - wxNode *Nth(size_t index) const { return (wxNode *)Item(index); } - -private: - void DoCopy(const wxStringList&); // common part of copy ctor and operator= -}; - -#endif // wxLIST_COMPATIBILITY - -#endif - // _WX_LISTH__ diff --git a/include/wx/listbox.h b/include/wx/listbox.h deleted file mode 100644 index 9d8a3460db..0000000000 --- a/include/wx/listbox.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef _WX_LISTBOX_H_BASE_ -#define _WX_LISTBOX_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/listbox.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/listbox.h" -#elif defined(__WXGTK__) -#include "wx/gtk/listbox.h" -#elif defined(__WXQT__) -#include "wx/qt/listbox.h" -#elif defined(__WXMAC__) -#include "wx/mac/listbox.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/listbox.h" -#endif - -#endif - // _WX_LISTBOX_H_BASE_ diff --git a/include/wx/listctrl.h b/include/wx/listctrl.h deleted file mode 100644 index 1e5c3480c8..0000000000 --- a/include/wx/listctrl.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef _WX_LISTCTRL_H_BASE_ -#define _WX_LISTCTRL_H_BASE_ - -#if defined(__WXMSW__) -#ifdef __WIN16__ -#include "wx/generic/listctrl.h" -#else -#include "wx/msw/listctrl.h" -#endif -#elif defined(__WXMOTIF__) -#include "wx/generic/listctrl.h" -#elif defined(__WXGTK__) -#include "wx/generic/listctrl.h" -#elif defined(__WXQT__) -#include "wx/generic/listctrl.h" -#elif defined(__WXMAC__) -#include "wx/generic/listctrl.h" -#elif defined(__WXSTUBS__) -#include "wx/generic/listctrl.h" -#endif - -#endif - // _WX_LISTCTRL_H_BASE_ diff --git a/include/wx/listimpl.cpp b/include/wx/listimpl.cpp deleted file mode 100644 index ccb1e6397c..0000000000 --- a/include/wx/listimpl.cpp +++ /dev/null @@ -1,24 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: listimpl.cpp -// Purpose: second-part of macro based implementation of template lists -// Author: Vadim Zeitlin -// Modified by: -// Created: 16/11/98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#define _DEFINE_LIST(T, name) \ - void wx##name##Node::DeleteData() \ - { \ - delete (T *)GetData(); \ - } - -// redefine the macro so that now it will generate the class implementation -// old value would provoke a compile-time error if this file is not included -#undef WX_DEFINE_LIST -#define WX_DEFINE_LIST(name) _DEFINE_LIST(_WX_LIST_ITEM_TYPE_##name, name) - -// don't pollute preprocessor's name space -//#undef _DEFINE_LIST diff --git a/include/wx/log.h b/include/wx/log.h deleted file mode 100644 index ec849d8df9..0000000000 --- a/include/wx/log.h +++ /dev/null @@ -1,405 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: log.h -// Purpose: Assorted wxLogXXX functions, and wxLog (sink for logs) -// Author: Vadim Zeitlin -// Modified by: -// Created: 29/01/98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_LOG_H_ -#define _WX_LOG_H_ - -#ifdef __GNUG__ -#pragma interface "log.h" -#endif - -// ---------------------------------------------------------------------------- -// constants -// ---------------------------------------------------------------------------- - -// different standard log levels (you may also define your own) -enum -{ - wxLOG_FatalError, // program can't continue, abort immediately - wxLOG_Error, // a serious error, user must be informed about it - wxLOG_Warning, // user is normally informed about it but may be ignored - wxLOG_Message, // normal message (i.e. normal output of a non GUI app) - wxLOG_Info, // informational message (a.k.a. 'Verbose') - wxLOG_Status, // informational: might go to the status line of GUI app - wxLOG_Debug, // never shown to the user, disabled in release mode - wxLOG_Trace, // trace messages are also only enabled in debug mode - wxLOG_Progress, // used for progress indicator (not yet) - wxLOG_User = 100 // user defined levels start here -}; - -// meaning of different bits of the trace mask (which allows selectively -// enable/disable some trace messages) -#define wxTraceMemAlloc 0x0001 // trace memory allocation (new/delete) -#define wxTraceMessages 0x0002 // trace window messages/X callbacks -#define wxTraceResAlloc 0x0004 // trace GDI resource allocation -#define wxTraceRefCount 0x0008 // trace various ref counting operations - -#ifdef __WXMSW__ - #define wxTraceOleCalls 0x0100 // OLE interface calls -#endif - -typedef unsigned long wxTraceMask; -typedef unsigned long wxLogLevel; - -// ---------------------------------------------------------------------------- -// forward declarations -// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxTextCtrl; -class WXDLLEXPORT wxLogFrame; -class WXDLLEXPORT wxFrame; - -#if wxUSE_IOSTREAMH -// N.B. BC++ doesn't have istream.h, ostream.h -# include -#else -# include -# ifdef _MSC_VER - using namespace std; -# endif -#endif - -// ---------------------------------------------------------------------------- -// derive from this class to redirect (or suppress, or ...) log messages -// normally, only a single instance of this class exists but it's not enforced -// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxLog -{ -public: - // ctor - wxLog(); - - // these functions allow to completely disable all log messages - // is logging disabled now? - static bool IsEnabled() { return ms_doLog; } - // change the flag state, return the previous one - static bool EnableLogging(bool doIt = TRUE) - { bool doLogOld = ms_doLog; ms_doLog = doIt; return doLogOld; } - - // sink function - static void OnLog(wxLogLevel level, const char *szString) - { - if ( IsEnabled() ) { - wxLog *pLogger = GetActiveTarget(); - if ( pLogger ) - pLogger->DoLog(level, szString); - } - } - - // message buffering - // flush shows all messages if they're not logged immediately - // (FILE and iostream logs don't need it, but wxGuiLog does to avoid - // showing 17 modal dialogs one after another) - virtual void Flush(); - // call to Flush() may be optimized: call it only if this function - // returns true (although Flush() also returns immediately if there - // is no messages, this functions is more efficient because inline) - bool HasPendingMessages() const { return m_bHasMessages; } - - // only one sink is active at each moment - // get current log target, will call wxApp::CreateLogTarget() to create one - // if none exists - static wxLog *GetActiveTarget(); - // change log target, pLogger may be NULL - static wxLog *SetActiveTarget(wxLog *pLogger); - - // functions controlling the default wxLog behaviour - // verbose mode is activated by standard command-line '-verbose' option - void SetVerbose(bool bVerbose = TRUE) { m_bVerbose = bVerbose; } - // sets the format for timestamp prepended by wxLog::DoLog(): it's - // passed to strftime() function, see it's documentation for details. - // no time stamp at all if szTF is NULL or empty - // NB: the string is not copied, so it's lifetime must be long enough! - void SetTimeStampFormat(const char *szTF) { m_szTimeFormat = szTF; } - // trace mask (see wxTraceXXX constants for details) - static void SetTraceMask(wxTraceMask ulMask) { ms_ulTraceMask = ulMask; } - // should GetActiveTarget() try to create a new log object if the current - // is NULL? - static void DontCreateOnDemand() { ms_bAutoCreate = FALSE; } - - // accessors - // gets the verbose status - bool GetVerbose() const { return m_bVerbose; } - // get current time format - const char *GetTimeStampFormat() const { return m_szTimeFormat; } - // get trace mask - static wxTraceMask GetTraceMask() { return ms_ulTraceMask; } - - // make dtor virtual for all derived classes - virtual ~wxLog() { } - -protected: - bool m_bHasMessages; - - bool m_bVerbose; // FALSE => ignore LogInfo messages - const char *m_szTimeFormat; // format for strftime() - - // the logging functions that can be overriden - // default DoLog() prepends the time stamp and a prefix corresponding - // to the message to szString and then passes it to DoLogString() - virtual void DoLog(wxLogLevel level, const char *szString); - // default DoLogString does nothing but is not pure virtual because if - // you override DoLog() you might not need it at all - virtual void DoLogString(const char *szString); - - // helpers - // put the time stamp in the current format into the string - wxString TimeStamp() const; - -private: - // static variables - // ---------------- - static wxLog *ms_pLogger; // currently active log sink - static bool ms_doLog; // FALSE => all logging disabled - static bool ms_bAutoCreate; // automatically create new log targets? - static wxTraceMask ms_ulTraceMask; // controls wxLogTrace behaviour -}; - -// ---------------------------------------------------------------------------- -// "trivial" derivations of wxLog -// ---------------------------------------------------------------------------- - -// log everything to a "FILE *", stderr by default -class WXDLLEXPORT wxLogStderr : public wxLog -{ -public: - // redirect log output to a FILE - wxLogStderr(FILE *fp = (FILE *) NULL); - -private: - // implement sink function - virtual void DoLogString(const char *szString); - - FILE *m_fp; -}; - -#if wxUSE_STD_IOSTREAM -// log everything to an "ostream", cerr by default -class WXDLLEXPORT wxLogStream : public wxLog -{ -public: - // redirect log output to an ostream - wxLogStream(ostream *ostr = (ostream *) NULL); - -protected: - // implement sink function - virtual void DoLogString(const char *szString); - - // @@ using ptr here to avoid including from this file - ostream *m_ostr; -}; -#endif - -#ifndef wxUSE_NOGUI - -#if wxUSE_STD_IOSTREAM -// log everything to a text window (GUI only of course) -class WXDLLEXPORT wxLogTextCtrl : public wxLogStream -{ -public: - // we just create an ostream from wxTextCtrl and use it in base class - wxLogTextCtrl(wxTextCtrl *pTextCtrl); - ~wxLogTextCtrl(); -}; -#endif - -// ---------------------------------------------------------------------------- -// GUI log target, the default one for wxWindows programs -// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxLogGui : public wxLog -{ -public: - // ctor - wxLogGui(); - - // show all messages that were logged since the last Flush() - virtual void Flush(); - -protected: - virtual void DoLog(wxLogLevel level, const char *szString); - - wxArrayString m_aMessages; - bool m_bErrors; -}; - -// ---------------------------------------------------------------------------- -// (background) log window: this class forwards all log messages to the log -// target which was active when it was instantiated, but also collects them -// to the log window. This window has it's own menu which allows the user to -// close it, clear the log contents or save it to the file. -// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxLogWindow : public wxLog -{ -public: - wxLogWindow(wxFrame *pParent, // the parent frame (can be NULL) - const char *szTitle, // the title of the frame - bool bShow = TRUE, // show window immediately? - bool bPassToOld = TRUE); // pass log messages to the old target? - ~wxLogWindow(); - - // window operations - // show/hide the log window - void Show(bool bShow = TRUE); - // retrieve the pointer to the frame - wxFrame *GetFrame() const; - - // accessors - // the previous log target (may be NULL) - wxLog *GetOldLog() const { return m_pOldLog; } - // are we passing the messages to the previous log target? - bool IsPassingMessages() const { return m_bPassMessages; } - - // we can pass the messages to the previous log target (we're in this mode by - // default: we collect all messages in the window, but also let the default - // processing take place) - void PassMessages(bool bDoPass) { m_bPassMessages = bDoPass; } - - // base class virtuals - // we don't need it ourselves, but we pass it to the previous logger - virtual void Flush(); - - // overridables - // called immediately after the log frame creation allowing for - // any extra initializations - virtual void OnFrameCreate(wxFrame *frame); - // called right before the log frame is going to be deleted - virtual void OnFrameDelete(wxFrame *frame); - -protected: - virtual void DoLog(wxLogLevel level, const char *szString); - virtual void DoLogString(const char *szString); - -private: - bool m_bPassMessages; // pass messages to m_pOldLog? - wxLog *m_pOldLog; // previous log target - wxLogFrame *m_pLogFrame; // the log frame -}; - -#endif // wxUSE_NOGUI - -// ---------------------------------------------------------------------------- -// /dev/null log target: suppress logging until this object goes out of scope -// ---------------------------------------------------------------------------- - -// example of usage: -/* -void Foo() { - wxFile file; - - // wxFile.Open() normally complains if file can't be opened, we don't want it - wxLogNull logNo; - if ( !file.Open("bar") ) - ... process error ourselves ... - - // ~wxLogNull called, old log sink restored -} -*/ -class WXDLLEXPORT wxLogNull -{ -public: - wxLogNull() { m_flagOld = wxLog::EnableLogging(FALSE); } - ~wxLogNull() { (void)wxLog::EnableLogging(m_flagOld); } - -private: - bool m_flagOld; // the previous value of the wxLog::ms_doLog -}; - -// ============================================================================ -// global functions -// ============================================================================ - -// ---------------------------------------------------------------------------- -// Log functions should be used by application instead of stdio, iostream &c -// for log messages for easy redirection -// ---------------------------------------------------------------------------- - -// define wxLog -// ------------------- - -#define DECLARE_LOG_FUNCTION(level) \ - extern void WXDLLEXPORT wxLog##level(const char *szFormat, ...) -#define DECLARE_LOG_FUNCTION2(level, arg1) \ - extern void WXDLLEXPORT wxLog##level(arg1, const char *szFormat, ...) - -// a generic function for all levels (level is passes as parameter) -DECLARE_LOG_FUNCTION2(Generic, wxLogLevel level); - -// one function per each level -DECLARE_LOG_FUNCTION(FatalError); -DECLARE_LOG_FUNCTION(Error); -DECLARE_LOG_FUNCTION(Warning); -DECLARE_LOG_FUNCTION(Message); -DECLARE_LOG_FUNCTION(Info); -DECLARE_LOG_FUNCTION(Verbose); - -// this function sends the log message to the status line of the top level -// application frame, if any -DECLARE_LOG_FUNCTION(Status); - -// this one is the same as previous except that it allows to explicitly -// specify the frame to which the output should go -DECLARE_LOG_FUNCTION2(Status, wxFrame *pFrame); - -// additional one: as wxLogError, but also logs last system call error code -// and the corresponding error message if available -DECLARE_LOG_FUNCTION(SysError); - -// and another one which also takes the error code (for those broken APIs -// that don't set the errno (like registry APIs in Win32)) -DECLARE_LOG_FUNCTION2(SysError, long lErrCode); - -// debug functions do nothing in release mode -#ifdef __WXDEBUG__ - DECLARE_LOG_FUNCTION(Debug); - - // first king of LogTrace is uncoditional: it doesn't check the level, - // while the second one does nothing if all of level bits are not set - // in wxLog::GetActive()->GetTraceMask(). - DECLARE_LOG_FUNCTION(Trace); - DECLARE_LOG_FUNCTION2(Trace, wxTraceMask mask); -#else //!debug - // these functions do nothing - inline void wxLogDebug(const char *, ...) { } - inline void wxLogTrace(const char *, ...) { } - inline void wxLogTrace(wxTraceMask, const char *, ...) { } -#endif - - -// are we in 'verbose' mode? -// (note that it's often handy to change this var manually from the -// debugger, thus enabling/disabling verbose reporting for some -// parts of the program only) -WXDLLEXPORT_DATA(extern bool) g_bVerbose; - -// ---------------------------------------------------------------------------- -// get error code/error message from system in a portable way -// ---------------------------------------------------------------------------- - -// return the last system error code -WXDLLEXPORT unsigned long wxSysErrorCode(); -// return the error message for given (or last if 0) error code -WXDLLEXPORT const char* wxSysErrorMsg(unsigned long nErrCode = 0); - -// ---------------------------------------------------------------------------- -// debug only logging functions: use them with API name and error code -// ---------------------------------------------------------------------------- - -#ifdef __WXDEBUG__ - #define wxLogApiError(api, rc) \ - wxLogDebug("At %s(%d) '%s' failed with error %lx (%s).", \ - __FILE__, __LINE__, api, \ - rc, wxSysErrorMsg(rc)) - #define wxLogLastError(api) wxLogApiError(api, wxSysErrorCode()) -#else //!debug - inline void wxLogApiError(const char *, long) { } - inline void wxLogLastError(const char *) { } -#endif //debug/!debug - -#endif // _WX_LOG_H_ diff --git a/include/wx/mac/accel.h b/include/wx/mac/accel.h deleted file mode 100644 index ec39737483..0000000000 --- a/include/wx/mac/accel.h +++ /dev/null @@ -1,80 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: accel.h -// Purpose: wxAcceleratorTable class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_ACCEL_H_ -#define _WX_ACCEL_H_ - -#ifdef __GNUG__ -#pragma interface "accel.h" -#endif - -#include "wx/object.h" -#include "wx/string.h" - -class WXDLLEXPORT wxAcceleratorTable; - -// Hold Ctrl key down -#define wxACCEL_ALT 0x01 - -// Hold Ctrl key down -#define wxACCEL_CTRL 0x02 - - // Hold Shift key down -#define wxACCEL_SHIFT 0x04 - - // Hold no key down -#define wxACCEL_NORMAL 0x00 - -class WXDLLEXPORT wxAcceleratorEntry -{ -public: - wxAcceleratorEntry(int flags = 0, int keyCode = 0, int cmd = 0) - { - m_flags = flags; m_keyCode = keyCode; m_command = cmd; - } - - inline void Set(int flags, int keyCode, int cmd) - { m_flags = flags; m_keyCode = keyCode; m_command = cmd; } - - inline int GetFlags() const { return m_flags; } - inline int GetKeyCode() const { return m_keyCode; } - inline int GetCommand() const { return m_command; } - - int m_flags; - int m_keyCode; // ASCII or virtual keycode - int m_command; // Command id to generate -}; - -class WXDLLEXPORT wxAcceleratorTable: public wxObject -{ -DECLARE_DYNAMIC_CLASS(wxAcceleratorTable) -public: - wxAcceleratorTable(); - wxAcceleratorTable(const wxString& resource); // Load from .rc resource - wxAcceleratorTable(int n, wxAcceleratorEntry entries[]); // Load from array - - // Copy constructors - inline wxAcceleratorTable(const wxAcceleratorTable& accel) { Ref(accel); } - inline wxAcceleratorTable(const wxAcceleratorTable* accel) { if (accel) Ref(*accel); } - - ~wxAcceleratorTable(); - - inline wxAcceleratorTable& operator = (const wxAcceleratorTable& accel) { if (*this == accel) return (*this); Ref(accel); return *this; } - inline bool operator == (const wxAcceleratorTable& accel) { return m_refData == accel.m_refData; } - inline bool operator != (const wxAcceleratorTable& accel) { return m_refData != accel.m_refData; } - - bool Ok() const; -}; - -WXDLLEXPORT_DATA(extern wxAcceleratorTable) wxNullAcceleratorTable; - -#endif - // _WX_ACCEL_H_ diff --git a/include/wx/mac/app.h b/include/wx/mac/app.h deleted file mode 100644 index 67bceb9169..0000000000 --- a/include/wx/mac/app.h +++ /dev/null @@ -1,152 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: app.h -// Purpose: wxApp class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_APP_H_ -#define _WX_APP_H_ - -#ifdef __GNUG__ -#pragma interface "app.h" -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/gdicmn.h" -#include "wx/event.h" - -class WXDLLEXPORT wxFrame; -class WXDLLEXPORT wxWindow; -class WXDLLEXPORT wxApp ; -class WXDLLEXPORT wxKeyEvent; -class WXDLLEXPORT wxLog; - -#define wxPRINT_WINDOWS 1 -#define wxPRINT_POSTSCRIPT 2 - -WXDLLEXPORT_DATA(extern wxApp*) wxTheApp; - -// Force an exit from main loop -void WXDLLEXPORT wxExit(); - -// Yield to other apps/messages -bool WXDLLEXPORT wxYield(); - -// Represents the application. Derive OnInit and declare -// a new App object to start application -class WXDLLEXPORT wxApp: public wxEvtHandler -{ - DECLARE_DYNAMIC_CLASS(wxApp) - wxApp(); - inline ~wxApp() {} - - static void SetInitializerFunction(wxAppInitializerFunction fn) { m_appInitFn = fn; } - static wxAppInitializerFunction GetInitializerFunction() { return m_appInitFn; } - - virtual int MainLoop(); - void ExitMainLoop(); - bool Initialized(); - virtual bool Pending() ; - virtual void Dispatch() ; - - void OnIdle(wxIdleEvent& event); - -// Generic - virtual bool OnInit() { return FALSE; }; - - // No specific tasks to do here. - virtual bool OnInitGui() { return TRUE; } - - // Called to set off the main loop - virtual int OnRun() { return MainLoop(); }; - virtual int OnExit() { return 0; } - - inline void SetPrintMode(int mode) { m_printMode = mode; } - inline int GetPrintMode() const { return m_printMode; } - - inline void SetExitOnFrameDelete(bool flag) { m_exitOnFrameDelete = flag; } - inline bool GetExitOnFrameDelete() const { return m_exitOnFrameDelete; } - - inline wxString GetAppName() const { - if (m_appName != "") - return m_appName; - else return m_className; - } - - inline void SetAppName(const wxString& name) { m_appName = name; }; - inline wxString GetClassName() const { return m_className; } - inline void SetClassName(const wxString& name) { m_className = name; } - - void SetVendorName(const wxString& vendorName) { m_vendorName = vendorName; } - const wxString& GetVendorName() const { return m_vendorName; } - - wxWindow *GetTopWindow() const ; - inline void SetTopWindow(wxWindow *win) { m_topWindow = win; } - - inline void SetWantDebugOutput(bool flag) { m_wantDebugOutput = flag; } - inline bool GetWantDebugOutput() { return m_wantDebugOutput; } - - // Send idle event to all top-level windows. - // Returns TRUE if more idle time is requested. - bool SendIdleEvents(); - - // Send idle event to window and all subwindows - // Returns TRUE if more idle time is requested. - bool SendIdleEvents(wxWindow* win); - - // Windows only, but for compatibility... - inline void SetAuto3D(bool flag) { m_auto3D = flag; } - inline bool GetAuto3D() const { return m_auto3D; } - - // Creates a log object - virtual wxLog* CreateLogTarget(); - -public: - // Will always be set to the appropriate, main-style values. - int argc; - char ** argv; - -protected: - bool m_wantDebugOutput ; - wxString m_className; - wxString m_appName, - m_vendorName; - wxWindow * m_topWindow; - bool m_exitOnFrameDelete; - bool m_showOnInit; - int m_printMode; // wxPRINT_WINDOWS, wxPRINT_POSTSCRIPT - bool m_auto3D ; // Always use 3D controls, except - // where overriden - static wxAppInitializerFunction m_appInitFn; - -public: - - // Implementation - static bool Initialize(); - static void CleanUp(); - - void DeletePendingObjects(); - bool ProcessIdle(); - -public: - static long sm_lastMessageTime; - int m_nCmdShow; - -protected: - bool m_keepGoing ; - -DECLARE_EVENT_TABLE() -}; - -// TODO: add platform-specific arguments -int WXDLLEXPORT wxEntry( int argc, char *argv[] ); - -#endif - // _WX_APP_H_ - diff --git a/include/wx/mac/bitmap.h b/include/wx/mac/bitmap.h deleted file mode 100644 index 1d2f5417e5..0000000000 --- a/include/wx/mac/bitmap.h +++ /dev/null @@ -1,197 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: bitmap.h -// Purpose: wxBitmap class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_BITMAP_H_ -#define _WX_BITMAP_H_ - -#ifdef __GNUG__ -#pragma interface "bitmap.h" -#endif - -#include "wx/gdiobj.h" -#include "wx/gdicmn.h" -#include "wx/palette.h" - -// Bitmap -class WXDLLEXPORT wxDC; -class WXDLLEXPORT wxControl; -class WXDLLEXPORT wxBitmap; -class WXDLLEXPORT wxBitmapHandler; -class WXDLLEXPORT wxIcon; -class WXDLLEXPORT wxCursor; - -// A mask is a mono bitmap used for drawing bitmaps -// transparently. -class WXDLLEXPORT wxMask: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxMask) - -public: - wxMask(); - - // Construct a mask from a bitmap and a colour indicating - // the transparent area - wxMask(const wxBitmap& bitmap, const wxColour& colour); - - // Construct a mask from a bitmap and a palette index indicating - // the transparent area - wxMask(const wxBitmap& bitmap, int paletteIndex); - - // Construct a mask from a mono bitmap (copies the bitmap). - wxMask(const wxBitmap& bitmap); - - ~wxMask(); - - bool Create(const wxBitmap& bitmap, const wxColour& colour); - bool Create(const wxBitmap& bitmap, int paletteIndex); - bool Create(const wxBitmap& bitmap); - -/* TODO: platform-specific data access - // Implementation - inline WXHBITMAP GetMaskBitmap() const { return m_maskBitmap; } - inline void SetMaskBitmap(WXHBITMAP bmp) { m_maskBitmap = bmp; } -protected: - WXHBITMAP m_maskBitmap; -*/ -}; - -class WXDLLEXPORT wxBitmapRefData: public wxGDIRefData -{ - friend class WXDLLEXPORT wxBitmap; - friend class WXDLLEXPORT wxIcon; - friend class WXDLLEXPORT wxCursor; -public: - wxBitmapRefData(); - ~wxBitmapRefData(); - -public: - int m_width; - int m_height; - int m_depth; - bool m_ok; - int m_numColors; - wxPalette m_bitmapPalette; - int m_quality; - -/* WXHBITMAP m_hBitmap; TODO: platform-specific handle */ - wxMask * m_bitmapMask; // Optional mask -}; - -#define M_BITMAPDATA ((wxBitmapRefData *)m_refData) - -class WXDLLEXPORT wxBitmapHandler: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxBitmapHandler) -public: - wxBitmapHandler() { m_name = ""; m_extension = ""; m_type = 0; }; - - virtual bool Create(wxBitmap *bitmap, void *data, long flags, int width, int height, int depth = 1); - virtual bool LoadFile(wxBitmap *bitmap, const wxString& name, long flags, - int desiredWidth, int desiredHeight); - virtual bool SaveFile(wxBitmap *bitmap, const wxString& name, int type, const wxPalette *palette = NULL); - - inline void SetName(const wxString& name) { m_name = name; } - inline void SetExtension(const wxString& ext) { m_extension = ext; } - inline void SetType(long type) { m_type = type; } - inline wxString GetName() const { return m_name; } - inline wxString GetExtension() const { return m_extension; } - inline long GetType() const { return m_type; } -protected: - wxString m_name; - wxString m_extension; - long m_type; -}; - -#define M_BITMAPHANDLERDATA ((wxBitmapRefData *)bitmap->GetRefData()) - -class WXDLLEXPORT wxBitmap: public wxGDIObject -{ - DECLARE_DYNAMIC_CLASS(wxBitmap) - - friend class WXDLLEXPORT wxBitmapHandler; - -public: - wxBitmap(); // Platform-specific - - // Copy constructors - inline wxBitmap(const wxBitmap& bitmap) - { Ref(bitmap); if ( wxTheBitmapList ) wxTheBitmapList->AddBitmap(this); } - - // Initialize with raw data. - wxBitmap(const char bits[], int width, int height, int depth = 1); - -/* TODO: maybe implement XPM reading - // Initialize with XPM data - wxBitmap(const char **data); -*/ - - // Load a file or resource - // TODO: make default type whatever's appropriate for the platform. - wxBitmap(const wxString& name, long type = wxBITMAP_TYPE_BMP_RESOURCE); - - // Constructor for generalised creation from data - wxBitmap(void *data, long type, int width, int height, int depth = 1); - - // If depth is omitted, will create a bitmap compatible with the display - wxBitmap(int width, int height, int depth = -1); - ~wxBitmap(); - - virtual bool Create(int width, int height, int depth = -1); - virtual bool Create(void *data, long type, int width, int height, int depth = 1); - virtual bool LoadFile(const wxString& name, long type = wxBITMAP_TYPE_BMP_RESOURCE); - virtual bool SaveFile(const wxString& name, int type, const wxPalette *cmap = NULL); - - inline bool Ok() const { return (M_BITMAPDATA && M_BITMAPDATA->m_ok); } - inline int GetWidth() const { return (M_BITMAPDATA ? M_BITMAPDATA->m_width : 0); } - inline int GetHeight() const { return (M_BITMAPDATA ? M_BITMAPDATA->m_height : 0); } - inline int GetDepth() const { return (M_BITMAPDATA ? M_BITMAPDATA->m_depth : 0); } - inline int GetQuality() const { return (M_BITMAPDATA ? M_BITMAPDATA->m_quality : 0); } - void SetWidth(int w); - void SetHeight(int h); - void SetDepth(int d); - void SetQuality(int q); - void SetOk(bool isOk); - - inline wxPalette* GetPalette() const { return (M_BITMAPDATA ? (& M_BITMAPDATA->m_bitmapPalette) : (wxPalette*) NULL); } - void SetPalette(const wxPalette& palette); - - inline wxMask *GetMask() const { return (M_BITMAPDATA ? M_BITMAPDATA->m_bitmapMask : (wxMask*) NULL); } - void SetMask(wxMask *mask) ; - - inline wxBitmap& operator = (const wxBitmap& bitmap) { if (*this == bitmap) return (*this); Ref(bitmap); return *this; } - inline bool operator == (const wxBitmap& bitmap) { return m_refData == bitmap.m_refData; } - inline bool operator != (const wxBitmap& bitmap) { return m_refData != bitmap.m_refData; } - - // Format handling - static inline wxList& GetHandlers() { return sm_handlers; } - static void AddHandler(wxBitmapHandler *handler); - static void InsertHandler(wxBitmapHandler *handler); - static bool RemoveHandler(const wxString& name); - static wxBitmapHandler *FindHandler(const wxString& name); - static wxBitmapHandler *FindHandler(const wxString& extension, long bitmapType); - static wxBitmapHandler *FindHandler(long bitmapType); - - static void InitStandardHandlers(); - static void CleanUpHandlers(); -protected: - static wxList sm_handlers; - -/* - // TODO: Implementation -public: - void SetHBITMAP(WXHBITMAP bmp); - inline WXHBITMAP GetHBITMAP() const { return (M_BITMAPDATA ? M_BITMAPDATA->m_hBitmap : 0); } - bool FreeResource(bool force = FALSE); -*/ - -}; -#endif - // _WX_BITMAP_H_ diff --git a/include/wx/mac/bmpbuttn.h b/include/wx/mac/bmpbuttn.h deleted file mode 100644 index defe39e438..0000000000 --- a/include/wx/mac/bmpbuttn.h +++ /dev/null @@ -1,83 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: bmpbuttn.h -// Purpose: wxBitmapButton class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_BMPBUTTN_H_ -#define _WX_BMPBUTTN_H_ - -#ifdef __GNUG__ -#pragma interface "bmpbuttn.h" -#endif - -#include "wx/button.h" - -WXDLLEXPORT_DATA(extern const char*) wxButtonNameStr; - -#define wxDEFAULT_BUTTON_MARGIN 4 - -class WXDLLEXPORT wxBitmapButton: public wxButton -{ - DECLARE_DYNAMIC_CLASS(wxBitmapButton) - public: - inline wxBitmapButton() { m_marginX = wxDEFAULT_BUTTON_MARGIN; m_marginY = wxDEFAULT_BUTTON_MARGIN; } - inline wxBitmapButton(wxWindow *parent, wxWindowID id, const wxBitmap& bitmap, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = wxBU_AUTODRAW, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxButtonNameStr) - { - Create(parent, id, bitmap, pos, size, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, const wxBitmap& bitmap, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = wxBU_AUTODRAW, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxButtonNameStr); - - virtual void SetLabel(const wxBitmap& bitmap) - { - SetBitmapLabel(bitmap); - } - - virtual void SetBitmapLabel(const wxBitmap& bitmap); - - inline wxBitmap& GetBitmapLabel() const { return (wxBitmap&) m_buttonBitmap; } - inline wxBitmap& GetBitmapSelected() const { return (wxBitmap&) m_buttonBitmapSelected; } - inline wxBitmap& GetBitmapFocus() const { return (wxBitmap&) m_buttonBitmapFocus; } - inline wxBitmap& GetBitmapDisabled() const { return (wxBitmap&) m_buttonBitmapDisabled; } - - inline void SetBitmapSelected(const wxBitmap& sel) { m_buttonBitmapSelected = sel; }; - inline void SetBitmapFocus(const wxBitmap& focus) { m_buttonBitmapFocus = focus; }; - inline void SetBitmapDisabled(const wxBitmap& disabled) { m_buttonBitmapDisabled = disabled; }; - - inline void SetMargins(int x, int y) { m_marginX = x; m_marginY = y; } - inline int GetMarginX() { return m_marginX; } - inline int GetMarginY() { return m_marginY; } - -/* - // TODO: Implementation - virtual bool MSWOnDraw(WXDRAWITEMSTRUCT *item); - virtual void DrawFace( WXHDC dc, int left, int top, int right, int bottom, bool sel ); - virtual void DrawButtonFocus( WXHDC dc, int left, int top, int right, int bottom, bool sel ); - virtual void DrawButtonDisable( WXHDC dc, int left, int top, int right, int bottom, bool with_marg ); -*/ - - protected: - wxBitmap m_buttonBitmap; - wxBitmap m_buttonBitmapSelected; - wxBitmap m_buttonBitmapFocus; - wxBitmap m_buttonBitmapDisabled; - int m_marginX; - int m_marginY; -}; - -#endif - // _WX_BMPBUTTN_H_ diff --git a/include/wx/mac/brush.h b/include/wx/mac/brush.h deleted file mode 100644 index a0a1bd7471..0000000000 --- a/include/wx/mac/brush.h +++ /dev/null @@ -1,83 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: brush.h -// Purpose: wxBrush class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_BRUSH_H_ -#define _WX_BRUSH_H_ - -#ifdef __GNUG__ -#pragma interface "brush.h" -#endif - -#include "wx/gdicmn.h" -#include "wx/gdiobj.h" -#include "wx/bitmap.h" - -class WXDLLEXPORT wxBrush; - -class WXDLLEXPORT wxBrushRefData: public wxGDIRefData -{ - friend class WXDLLEXPORT wxBrush; -public: - wxBrushRefData(); - wxBrushRefData(const wxBrushRefData& data); - ~wxBrushRefData(); - -protected: - int m_style; - wxBitmap m_stipple ; - wxColour m_colour; - -/* TODO: implementation - WXHBRUSH m_hBrush; -*/ -}; - -#define M_BRUSHDATA ((wxBrushRefData *)m_refData) - -// Brush -class WXDLLEXPORT wxBrush: public wxGDIObject -{ - DECLARE_DYNAMIC_CLASS(wxBrush) - -public: - wxBrush(); - wxBrush(const wxColour& col, int style); - wxBrush(const wxBitmap& stipple); - inline wxBrush(const wxBrush& brush) { Ref(brush); } - ~wxBrush(); - - virtual void SetColour(const wxColour& col) ; - virtual void SetColour(unsigned char r, unsigned char g, unsigned char b) ; - virtual void SetStyle(int style) ; - virtual void SetStipple(const wxBitmap& stipple) ; - - inline wxBrush& operator = (const wxBrush& brush) { if (*this == brush) return (*this); Ref(brush); return *this; } - inline bool operator == (const wxBrush& brush) { return m_refData == brush.m_refData; } - inline bool operator != (const wxBrush& brush) { return m_refData != brush.m_refData; } - - inline wxColour& GetColour() const { return (M_BRUSHDATA ? M_BRUSHDATA->m_colour : wxNullColour); }; - inline int GetStyle() const { return (M_BRUSHDATA ? M_BRUSHDATA->m_style : 0); }; - inline wxBitmap *GetStipple() const { return (M_BRUSHDATA ? & M_BRUSHDATA->m_stipple : 0); }; - - virtual bool Ok() const { return (m_refData != NULL) ; } - -// Implementation - - // Useful helper: create the brush resource - bool RealizeResource(); - - // When setting properties, we must make sure we're not changing - // another object - void Unshare(); -}; - -#endif - // _WX_BRUSH_H_ diff --git a/include/wx/mac/button.h b/include/wx/mac/button.h deleted file mode 100644 index 68b67d8c96..0000000000 --- a/include/wx/mac/button.h +++ /dev/null @@ -1,53 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: button.h -// Purpose: wxButton class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_BUTTON_H_ -#define _WX_BUTTON_H_ - -#ifdef __GNUG__ -#pragma interface "button.h" -#endif - -#include "wx/control.h" -#include "wx/gdicmn.h" - -WXDLLEXPORT_DATA(extern const char*) wxButtonNameStr; - -// Pushbutton -class WXDLLEXPORT wxButton: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxButton) - public: - inline wxButton() {} - inline wxButton(wxWindow *parent, wxWindowID id, const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxButtonNameStr) - { - Create(parent, id, label, pos, size, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxButtonNameStr); - - virtual void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - virtual void SetDefault(); - virtual void SetLabel(const wxString& label); - virtual wxString GetLabel() const ; - virtual void Command(wxCommandEvent& event); -}; - -#endif - // _WX_BUTTON_H_ diff --git a/include/wx/mac/checkbox.h b/include/wx/mac/checkbox.h deleted file mode 100644 index 8bf41d9958..0000000000 --- a/include/wx/mac/checkbox.h +++ /dev/null @@ -1,81 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: checkbox.h -// Purpose: wxCheckBox class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_CHECKBOX_H_ -#define _WX_CHECKBOX_H_ - -#ifdef __GNUG__ -#pragma interface "checkbox.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxCheckBoxNameStr; - -// Checkbox item (single checkbox) -class WXDLLEXPORT wxBitmap; -class WXDLLEXPORT wxCheckBox: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxCheckBox) - - public: - inline wxCheckBox() { } - inline wxCheckBox(wxWindow *parent, wxWindowID id, const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxCheckBoxNameStr) - { - Create(parent, id, label, pos, size, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxCheckBoxNameStr); - virtual void SetValue(bool); - virtual bool GetValue() const ; - virtual void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - virtual void SetLabel(const wxString& label); - virtual void Command(wxCommandEvent& event); -}; - -class WXDLLEXPORT wxBitmapCheckBox: public wxCheckBox -{ - DECLARE_DYNAMIC_CLASS(wxBitmapCheckBox) - - public: - int checkWidth ; - int checkHeight ; - - inline wxBitmapCheckBox() { checkWidth = -1; checkHeight = -1; } - inline wxBitmapCheckBox(wxWindow *parent, wxWindowID id, const wxBitmap *label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxCheckBoxNameStr) - { - Create(parent, id, label, pos, size, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, const wxBitmap *bitmap, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxCheckBoxNameStr); - virtual void SetValue(bool); - virtual bool GetValue() const ; - virtual void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - virtual void SetLabel(const wxBitmap *bitmap); -}; -#endif - // _WX_CHECKBOX_H_ diff --git a/include/wx/mac/checklst.h b/include/wx/mac/checklst.h deleted file mode 100644 index fd6ad64785..0000000000 --- a/include/wx/mac/checklst.h +++ /dev/null @@ -1,49 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: checklst.h -// Purpose: wxCheckListBox class - a listbox with checkable items -// Note: this is an optional class. -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_CHECKLST_H_ -#define _WX_CHECKLST_H_ - -#ifdef __GNUG__ -#pragma interface "checklst.h" -#endif - -#include "wx/listbox.h" - -#ifndef __MWERKS__ -typedef unsigned int size_t; -#endif - -class wxCheckListBox : public wxListBox -{ - DECLARE_DYNAMIC_CLASS(wxCheckListBox) -public: - // ctors - wxCheckListBox(); - wxCheckListBox(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - int nStrings = 0, - const wxString choices[] = NULL, - long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxListBoxNameStr); - - // items may be checked - bool IsChecked(size_t uiIndex) const; - void Check(size_t uiIndex, bool bCheck = TRUE); - - DECLARE_EVENT_TABLE() -}; - -#endif - // _WX_CHECKLST_H_ diff --git a/include/wx/mac/choice.h b/include/wx/mac/choice.h deleted file mode 100644 index 7f360ed5cc..0000000000 --- a/include/wx/mac/choice.h +++ /dev/null @@ -1,72 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: choice.h -// Purpose: wxChoice class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_CHOICE_H_ -#define _WX_CHOICE_H_ - -#ifdef __GNUG__ -#pragma interface "choice.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxChoiceNameStr; - -// Choice item -class WXDLLEXPORT wxChoice: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxChoice) - - public: - inline wxChoice() { m_noStrings = 0; } - - inline wxChoice(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = NULL, - long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxChoiceNameStr) - { - Create(parent, id, pos, size, n, choices, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = NULL, - long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxChoiceNameStr); - - virtual void Append(const wxString& item); - virtual void Delete(int n); - virtual void Clear(); - virtual int GetSelection() const ; - virtual void SetSelection(int n); - virtual int FindString(const wxString& s) const; - virtual wxString GetString(int n) const ; - virtual void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - virtual wxString GetStringSelection() const ; - virtual bool SetStringSelection(const wxString& sel); - - virtual inline int Number() const { return m_noStrings; } - virtual void Command(wxCommandEvent& event); - - virtual inline void SetColumns(int WXUNUSED(n) = 1 ) { /* No effect */ } ; - virtual inline int GetColumns() const { return 1 ; }; - -protected: - int m_noStrings; -}; - -#endif - // _WX_CHOICE_H_ diff --git a/include/wx/mac/clipbrd.h b/include/wx/mac/clipbrd.h deleted file mode 100644 index 697dc9d939..0000000000 --- a/include/wx/mac/clipbrd.h +++ /dev/null @@ -1,104 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: clipbrd.h -// Purpose: Clipboard functionality. -// Note: this functionality is under review, and -// is derived from wxWindows 1.xx code. Please contact -// the wxWindows developers for further information. -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_CLIPBRD_H_ -#define _WX_CLIPBRD_H_ - -#ifdef __GNUG__ -#pragma interface "clipbrd.h" -#endif - -#include "wx/defs.h" -#include "wx/setup.h" - -#include "wx/list.h" - -bool WXDLLEXPORT wxOpenClipboard(); -bool WXDLLEXPORT wxClipboardOpen(); -bool WXDLLEXPORT wxCloseClipboard(); -bool WXDLLEXPORT wxEmptyClipboard(); -bool WXDLLEXPORT wxIsClipboardFormatAvailable(int dataFormat); -bool WXDLLEXPORT wxSetClipboardData(int dataFormat, wxObject *obj, int width = 0, int height = 0); -wxObject* WXDLLEXPORT wxGetClipboardData(int dataFormat, long *len = NULL); -int WXDLLEXPORT wxEnumClipboardFormats(int dataFormat); -int WXDLLEXPORT wxRegisterClipboardFormat(char *formatName); -bool WXDLLEXPORT wxGetClipboardFormatName(int dataFormat, char *formatName, int maxCount); - -/* A clipboard client holds data belonging to the clipboard. - For plain text, a client is not necessary. */ -class WXDLLEXPORT wxClipboardClient : public wxObject -{ - DECLARE_ABSTRACT_CLASS(wxClipboardClient) - - public: - /* 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 */ - wxStringList formats; - - /* This method is called when the client is losing the selection. */ - virtual void BeingReplaced() = 0; - - /* This method is called when someone wants the data this client is - supplying to the clipboard. "format" is a string indicating the - format of the data - one of the strings from the "formats" - list. "*size" should be filled with the size of the resulting - data. In the case of text, "*size" does not count the - NULL terminator. */ - virtual char *GetData(char *format, long *size) = 0; -}; - -/* ONE instance of this class: */ -class WXDLLEXPORT wxClipboard : public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxClipboard) - - public: - wxClipboardClient *clipOwner; - char *cbString, *sentString, *receivedString; - void *receivedTargets; - long receivedLength; - - wxClipboard(); - ~wxClipboard(); - - /* Set the clipboard data owner. "time" comes from the event record. */ - void SetClipboardClient(wxClipboardClient *, long time); - - /* Set the clipboard string; does not require a client. */ - void SetClipboardString(char *, long time); - - /* Get data from the clipboard in the format "TEXT". */ - char *GetClipboardString(long time); - - /* Get data from the clipboard */ - char *GetClipboardData(char *format, long *length, long time); - - /* 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. (This is used - by the wxMediaEdit class.) */ - wxClipboardClient *GetClipboardClient(); -}; - -/* Initialize wxTheClipboard. Can be called repeatedly */ -void WXDLLEXPORT wxInitClipboard(); - -/* The clipboard */ -WXDLLEXPORT_DATA(extern wxClipboard*) wxTheClipboard; - -#endif - // _WX_CLIPBRD_H_ diff --git a/include/wx/mac/colordlg.h b/include/wx/mac/colordlg.h deleted file mode 100644 index 556c2f316e..0000000000 --- a/include/wx/mac/colordlg.h +++ /dev/null @@ -1,46 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: colordlg.h -// Purpose: wxColourDialog class. Use generic version if no -// platform-specific implementation. -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_COLORDLG_H_ -#define _WX_COLORDLG_H_ - -#ifdef __GNUG__ -#pragma interface "colordlg.h" -#endif - -#include "wx/setup.h" -#include "wx/dialog.h" -#include "wx/cmndata.h" - -/* - * Platform-specific colour dialog implementation - */ - -class WXDLLEXPORT wxColourDialog: public wxDialog -{ -DECLARE_DYNAMIC_CLASS(wxColourDialog) -public: - wxColourDialog(); - wxColourDialog(wxWindow *parent, wxColourData *data = NULL); - - bool Create(wxWindow *parent, wxColourData *data = NULL); - - int ShowModal(); - wxColourData& GetColourData() { return m_colourData; } - -protected: - wxColourData m_colourData; - wxWindow* m_dialogParent; -}; - -#endif - // _WX_COLORDLG_H_ diff --git a/include/wx/mac/colour.h b/include/wx/mac/colour.h deleted file mode 100644 index 16ffdac9aa..0000000000 --- a/include/wx/mac/colour.h +++ /dev/null @@ -1,97 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: colour.h -// Purpose: wxColour class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_COLOUR_H_ -#define _WX_COLOUR_H_ - -#ifdef __GNUG__ -#pragma interface "colour.h" -#endif - -#include "wx/object.h" -#include "wx/string.h" - -// Colour -class WXDLLEXPORT wxColour: public wxObject -{ -public: - // ctors - // default - wxColour(); - // from RGB - wxColour( unsigned char red, unsigned char green, unsigned char blue ); - // implicit conversion from the colour name - wxColour( const wxString &colourName ) { InitFromName(colourName); } - wxColour( const char *colourName ) { InitFromName(colourName); } - - // copy ctors and assignment operators - wxColour( const wxColour& col ); - wxColour( const wxColour* col ); - wxColour& operator = ( const wxColour& col ); - - // dtor - ~wxColour(); - - // Set() functions - void Set( unsigned char red, unsigned char green, unsigned char blue ); - void Set( unsigned long colRGB ) - { - // we don't need to know sizeof(long) here because we assume that the three - // least significant bytes contain the R, G and B values - Set((unsigned char)colRGB, - (unsigned char)(colRGB >> 8), - (unsigned char)(colRGB >> 16)); - } - - // accessors - bool Ok() const {return m_isInit; } - - // Let's remove this inelegant function -#if WXWIN_COMPATIBILITY - void Get(unsigned char *r, unsigned char *g, unsigned char *b) const; -#endif - - unsigned char Red() const { return m_red; } - unsigned char Green() const { return m_green; } - unsigned char Blue() const { return m_blue; } - - // comparison - bool operator == (const wxColour& colour) - { - return (m_red == colour.m_red && - m_green == colour.m_green && - m_blue == colour.m_blue); - } - bool operator != (const wxColour& colour) { return !(*this == colour); } - - void InitFromName(const wxString& col); - -/* TODO - WXCOLORREF GetPixel() const { return m_pixel; }; -*/ - -private: - bool m_isInit; - unsigned char m_red; - unsigned char m_blue; - unsigned char m_green; - -public: - /* TODO: implementation - WXCOLORREF m_pixel ; - */ - -private: - DECLARE_DYNAMIC_CLASS(wxColour) -}; - -#endif - // _WX_COLOUR_H_ diff --git a/include/wx/mac/combobox.h b/include/wx/mac/combobox.h deleted file mode 100644 index 07054af74e..0000000000 --- a/include/wx/mac/combobox.h +++ /dev/null @@ -1,84 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: combobox.h -// Purpose: wxComboBox class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_COMBOBOX_H_ -#define _WX_COMBOBOX_H_ - -#ifdef __GNUG__ -#pragma interface "combobox.h" -#endif - -#include "wx/choice.h" - -WXDLLEXPORT_DATA(extern const char*) wxComboBoxNameStr; -WXDLLEXPORT_DATA(extern const char*) wxEmptyString; - -// Combobox item -class WXDLLEXPORT wxComboBox: public wxChoice -{ - DECLARE_DYNAMIC_CLASS(wxComboBox) - - public: - inline wxComboBox() {} - - inline wxComboBox(wxWindow *parent, wxWindowID id, - const wxString& value = wxEmptyString, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = NULL, - long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxComboBoxNameStr) - { - Create(parent, id, value, pos, size, n, choices, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - const wxString& value = wxEmptyString, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = NULL, - long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxComboBoxNameStr); - - // List functions - virtual void Append(const wxString& item); - virtual void Delete(int n); - virtual void Clear(); - virtual int GetSelection() const ; - virtual void SetSelection(int n); - virtual int FindString(const wxString& s) const; - virtual wxString GetString(int n) const ; - virtual wxString GetStringSelection() const ; - virtual bool SetStringSelection(const wxString& sel); - virtual inline int Number() const { return m_noStrings; } - - // Text field functions - virtual wxString GetValue() const ; - virtual void SetValue(const wxString& value); - - // Clipboard operations - virtual void Copy(); - virtual void Cut(); - virtual void Paste(); - virtual void SetInsertionPoint(long pos); - virtual void SetInsertionPointEnd(); - virtual long GetInsertionPoint() const ; - virtual long GetLastPosition() const ; - virtual void Replace(long from, long to, const wxString& value); - virtual void Remove(long from, long to); - virtual void SetSelection(long from, long to); - virtual void SetEditable(bool editable); -}; - -#endif - // _WX_COMBOBOX_H_ diff --git a/include/wx/mac/control.h b/include/wx/mac/control.h deleted file mode 100644 index c75756a72a..0000000000 --- a/include/wx/mac/control.h +++ /dev/null @@ -1,50 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: control.h -// Purpose: wxControl class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_CONTROL_H_ -#define _WX_CONTROL_H_ - -#ifdef __GNUG__ -#pragma interface "control.h" -#endif - -#include "wx/window.h" -#include "wx/list.h" -#include "wx/validate.h" - -// General item class -class WXDLLEXPORT wxControl: public wxWindow -{ - DECLARE_ABSTRACT_CLASS(wxControl) -public: - wxControl(); - ~wxControl(); - - virtual void Command(wxCommandEvent& WXUNUSED(event)) {}; // Simulates an event - virtual void ProcessCommand(wxCommandEvent& event); // Calls the callback and - // appropriate event handlers - virtual void SetLabel(const wxString& label); - virtual wxString GetLabel() const ; - - // Places item in centre of panel - so can't be used BEFORE panel->Fit() - void Centre(int direction = wxHORIZONTAL); - inline void Callback(const wxFunction function) { m_callback = function; }; // Adds callback - - inline wxFunction GetCallback() { return m_callback; } - -protected: - wxFunction m_callback; // Callback associated with the window - -DECLARE_EVENT_TABLE() -}; - -#endif - // _WX_CONTROL_H_ diff --git a/include/wx/mac/cursor.h b/include/wx/mac/cursor.h deleted file mode 100644 index bc6397069f..0000000000 --- a/include/wx/mac/cursor.h +++ /dev/null @@ -1,75 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: cursor.h -// Purpose: wxCursor class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_CURSOR_H_ -#define _WX_CURSOR_H_ - -#ifdef __GNUG__ -#pragma interface "cursor.h" -#endif - -#include "wx/bitmap.h" - -class WXDLLEXPORT wxCursorRefData: public wxBitmapRefData -{ - friend class WXDLLEXPORT wxBitmap; - friend class WXDLLEXPORT wxCursor; -public: - wxCursorRefData(); - ~wxCursorRefData(); - -protected: -/* TODO: implementation - WXHCURSOR m_hCursor; -*/ -}; - -#define M_CURSORDATA ((wxCursorRefData *)m_refData) -#define M_CURSORHANDLERDATA ((wxCursorRefData *)bitmap->m_refData) - -// Cursor -class WXDLLEXPORT wxCursor: public wxBitmap -{ - DECLARE_DYNAMIC_CLASS(wxCursor) - -public: - wxCursor(); - - // Copy constructors - inline wxCursor(const wxCursor& cursor) { Ref(cursor); } - - wxCursor(const char bits[], int width, int height, int hotSpotX = -1, int hotSpotY = -1, - const char maskBits[] = NULL); - - /* TODO: make default type suit platform */ - wxCursor(const wxString& name, long flags = wxBITMAP_TYPE_CUR_RESOURCE, - int hotSpotX = 0, int hotSpotY = 0); - - wxCursor(int cursor_type); - ~wxCursor(); - - // TODO: also verify the internal cursor handle - virtual bool Ok() const { return (m_refData != NULL) ; } - - inline wxCursor& operator = (const wxCursor& cursor) { if (*this == cursor) return (*this); Ref(cursor); return *this; } - inline bool operator == (const wxCursor& cursor) { return m_refData == cursor.m_refData; } - inline bool operator != (const wxCursor& cursor) { return m_refData != cursor.m_refData; } - -/* TODO: implementation - void SetHCURSOR(WXHCURSOR cursor); - inline WXHCURSOR GetHCURSOR() const { return (M_CURSORDATA ? M_CURSORDATA->m_hCursor : 0); } -*/ -}; - -extern WXDLLEXPORT void wxSetCursor(const wxCursor& cursor); - -#endif - // _WX_CURSOR_H_ diff --git a/include/wx/mac/dc.h b/include/wx/mac/dc.h deleted file mode 100644 index ce3e9998d1..0000000000 --- a/include/wx/mac/dc.h +++ /dev/null @@ -1,374 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dc.h -// Purpose: wxDC class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_DC_H_ -#define _WX_DC_H_ - -#ifdef __GNUG__ -#pragma interface "dc.h" -#endif - -#include "wx/pen.h" -#include "wx/brush.h" -#include "wx/icon.h" -#include "wx/font.h" -#include "wx/gdicmn.h" - -//----------------------------------------------------------------------------- -// constants -//----------------------------------------------------------------------------- - -#ifndef MM_TEXT -#define MM_TEXT 0 -#define MM_ISOTROPIC 1 -#define MM_ANISOTROPIC 2 -#define MM_LOMETRIC 3 -#define MM_HIMETRIC 4 -#define MM_TWIPS 5 -#define MM_POINTS 6 -#define MM_METRIC 7 -#endif - -//----------------------------------------------------------------------------- -// global variables -//----------------------------------------------------------------------------- - -extern int wxPageNumber; - -//----------------------------------------------------------------------------- -// wxDC -//----------------------------------------------------------------------------- - -class WXDLLEXPORT wxDC: public wxObject -{ - DECLARE_ABSTRACT_CLASS(wxDC) - - public: - - wxDC(void); - ~wxDC(void); - - void BeginDrawing(void) {}; - void EndDrawing(void) {}; - - virtual bool Ok(void) const { return m_ok; }; - - virtual void FloodFill( long x1, long y1, const wxColour& col, int style=wxFLOOD_SURFACE ) = 0; - inline void FloodFill(const wxPoint& pt, const wxColour& col, int style=wxFLOOD_SURFACE) - { - FloodFill(pt.x, pt.y, col, style); - } - - virtual bool GetPixel( long x1, long y1, wxColour *col ) const = 0; - inline bool GetPixel(const wxPoint& pt, wxColour *col) const - { - return GetPixel(pt.x, pt.y, col); - } - - virtual void DrawLine( long x1, long y1, long x2, long y2 ) = 0; - inline void DrawLine(const wxPoint& pt1, const wxPoint& pt2) - { - DrawLine(pt1.x, pt1.y, pt2.x, pt2.y); - } - - virtual void CrossHair( long x, long y ) = 0; - inline void CrossHair(const wxPoint& pt) - { - CrossHair(pt.x, pt.y); - } - - virtual void DrawArc( long x1, long y1, long x2, long y2, long xc, long yc ) = 0; - inline void DrawArc(const wxPoint& pt1, const wxPoint& pt2, const wxPoint& centre) - { - DrawArc(pt1.x, pt1.y, pt2.x, pt2.y, centre.x, centre.y); - } - - virtual void DrawEllipticArc( long x, long y, long width, long height, double sa, double ea ) = 0; - virtual void DrawEllipticArc (const wxPoint& pt, const wxSize& sz, double sa, double ea) - { - DrawEllipticArc(pt.x, pt.y, sz.x, sz.y, sa, ea); - } - - virtual void DrawPoint( long x, long y ) = 0; - virtual void DrawPoint( wxPoint& point ); - - virtual void DrawLines( int n, wxPoint points[], long xoffset = 0, long yoffset = 0 ) = 0; - virtual void DrawLines( wxList *points, long xoffset = 0, long yoffset = 0 ); - virtual void DrawPolygon( int n, wxPoint points[], long xoffset = 0, long yoffset = 0, - int fillStyle=wxODDEVEN_RULE ) = 0; - virtual void DrawPolygon( wxList *lines, long xoffset = 0, long yoffset = 0, - int fillStyle=wxODDEVEN_RULE ); - - virtual void DrawRectangle( long x, long y, long width, long height ) = 0; - inline void DrawRectangle(const wxPoint& pt, const wxSize& sz) - { - DrawRectangle(pt.x, pt.y, sz.x, sz.y); - } - inline void DrawRectangle(const wxRect& rect) - { - DrawRectangle(rect.x, rect.y, rect.width, rect.height); - } - virtual void DrawRoundedRectangle( long x, long y, long width, long height, double radius = 20.0 ) = 0; - inline void DrawRoundedRectangle(const wxPoint& pt, const wxSize& sz, double radius = 20.0) - { - DrawRoundedRectangle(pt.x, pt.y, sz.x, sz.y, radius); - } - inline void DrawRoundedRectangle(const wxRect& rect, double radius = 20.0) - { - DrawRoundedRectangle(rect.x, rect.y, rect.width, rect.height, radius); - } - - virtual void DrawEllipse( long x, long y, long width, long height ) = 0; - inline void DrawEllipse(const wxPoint& pt, const wxSize& sz) - { - DrawEllipse(pt.x, pt.y, sz.x, sz.y); - } - inline void DrawEllipse(const wxRect& rect) - { - DrawEllipse(rect.x, rect.y, rect.width, rect.height); - } - - virtual void DrawSpline( long x1, long y1, long x2, long y2, long x3, long y3 ); - virtual void DrawSpline( wxList *points ) = 0; - virtual void DrawSpline( int n, wxPoint points[] ); - - virtual bool CanDrawBitmap(void) const = 0; - - virtual void DrawIcon( const wxIcon &icon, long x, long y, bool useMask=FALSE ); - inline void DrawIcon(const wxIcon& icon, const wxPoint& pt) - { - DrawIcon(icon, pt.x, pt.y); - } - - // TODO DrawBitmap is not always the same as DrawIcon, especially if bitmaps and - // icons are implemented differently. - void DrawBitmap( const wxBitmap &bmp, long x, long y, bool useMask=FALSE ) - { DrawIcon( *((wxIcon*)(&bmp)), x, y, useMask ); } - - virtual bool Blit( long xdest, long ydest, long width, long height, - wxDC *source, long xsrc, long ysrc, int logical_func = wxCOPY, bool useMask=FALSE ) = 0; - inline bool Blit(const wxPoint& destPt, const wxSize& sz, - wxDC *source, const wxPoint& srcPt, int rop = wxCOPY, bool useMask = FALSE) - { - return Blit(destPt.x, destPt.y, sz.x, sz.y, source, srcPt.x, srcPt.y, rop, useMask); - } - - virtual void DrawText( const wxString &text, long x, long y, bool use16 = FALSE ) = 0; - inline void DrawText(const wxString& text, const wxPoint& pt, bool use16bit = FALSE) - { - DrawText(text, pt.x, pt.y, use16bit); - } - - virtual bool CanGetTextExtent(void) const = 0; - virtual void GetTextExtent( const wxString &string, long *width, long *height, - long *descent = NULL, long *externalLeading = NULL, - wxFont *theFont = NULL, bool use16 = FALSE ) = 0; - virtual long GetCharWidth(void) = 0; - virtual long GetCharHeight(void) = 0; - - virtual void Clear(void) = 0; - - virtual void SetFont( const wxFont &font ) = 0; - virtual wxFont& GetFont(void) const { return (wxFont&) m_font; }; - - virtual void SetPen( const wxPen &pen ) = 0; - virtual wxPen& GetPen(void) const { return (wxPen&) m_pen; }; - - virtual void SetBrush( const wxBrush &brush ) = 0; - virtual wxBrush& GetBrush(void) const { return (wxBrush&) m_brush; }; - - virtual void SetBackground( const wxBrush &brush ) = 0; - virtual wxBrush& GetBackground(void) const { return (wxBrush&) m_backgroundBrush; }; - - virtual void SetLogicalFunction( int function ) = 0; - virtual int GetLogicalFunction(void) const { return m_logicalFunction; }; - - virtual void SetTextForeground( const wxColour &col ); - virtual void SetTextBackground( const wxColour &col ); - virtual wxColour& GetTextBackground(void) const { return (wxColour&)m_textBackgroundColour; }; - virtual wxColour& GetTextForeground(void) const { return (wxColour&)m_textForegroundColour; }; - - virtual void SetBackgroundMode( int mode ) = 0; - virtual int GetBackgroundMode(void) const { return m_backgroundMode; }; - - virtual void SetPalette( const wxPalette& palette ) = 0; - void SetColourMap( const wxPalette& palette ) { SetPalette(palette); }; - - // the first two must be overridden and called - virtual void SetClippingRegion( long x, long y, long width, long height ); - virtual void DestroyClippingRegion(void); - virtual void GetClippingBox( long *x, long *y, long *width, long *height ) const; - - virtual inline long MinX(void) const { return m_minX; } - virtual inline long MaxX(void) const { return m_maxX; } - virtual inline long MinY(void) const { return m_minY; } - virtual inline long MaxY(void) const { return m_maxY; } - - virtual void GetSize( int* width, int* height ) const; - inline wxSize GetSize(void) const { int w, h; GetSize(&w, &h); return wxSize(w, h); } - virtual void GetSizeMM( long* width, long* height ) const; - - virtual bool StartDoc( const wxString& WXUNUSED(message) ) { return TRUE; }; - virtual void EndDoc(void) {}; - virtual void StartPage(void) {}; - virtual void EndPage(void) {}; - - virtual void SetMapMode( int mode ); - virtual int GetMapMode(void) const { return m_mappingMode; }; - - virtual void SetUserScale( double x, double y ); - virtual void GetUserScale( double *x, double *y ); - virtual void SetLogicalScale( double x, double y ); - virtual void GetLogicalScale( double *x, double *y ); - - virtual void SetLogicalOrigin( long x, long y ); - virtual void GetLogicalOrigin( long *x, long *y ); - virtual void SetDeviceOrigin( long x, long y ); - virtual void GetDeviceOrigin( long *x, long *y ); - virtual void SetInternalDeviceOrigin( long x, long y ); - virtual void GetInternalDeviceOrigin( long *x, long *y ); - - virtual void SetAxisOrientation( bool xLeftRight, bool yBottomUp ); - - virtual void SetOptimization( bool WXUNUSED(optimize) ) {}; - virtual bool GetOptimization(void) { return m_optimize; }; - - virtual long DeviceToLogicalX(long x) const; - virtual long DeviceToLogicalY(long y) const; - virtual long DeviceToLogicalXRel(long x) const; - virtual long DeviceToLogicalYRel(long y) const; - virtual long LogicalToDeviceX(long x) const; - virtual long LogicalToDeviceY(long y) const; - virtual long LogicalToDeviceXRel(long x) const; - virtual long LogicalToDeviceYRel(long y) const; - - public: - - void CalcBoundingBox( long x, long y ); - void ComputeScaleAndOrigin(void); - - long XDEV2LOG(long x) const - { - long new_x = x - m_deviceOriginX; - if (new_x > 0) - return (long)((double)(new_x) / m_scaleX + 0.5) * m_signX + m_logicalOriginX; - else - return (long)((double)(new_x) / m_scaleX - 0.5) * m_signX + m_logicalOriginX; - } - long XDEV2LOGREL(long x) const - { - if (x > 0) - return (long)((double)(x) / m_scaleX + 0.5); - else - return (long)((double)(x) / m_scaleX - 0.5); - } - long YDEV2LOG(long y) const - { - long new_y = y - m_deviceOriginY; - if (new_y > 0) - return (long)((double)(new_y) / m_scaleY + 0.5) * m_signY + m_logicalOriginY; - else - return (long)((double)(new_y) / m_scaleY - 0.5) * m_signY + m_logicalOriginY; - } - long YDEV2LOGREL(long y) const - { - if (y > 0) - return (long)((double)(y) / m_scaleY + 0.5); - else - return (long)((double)(y) / m_scaleY - 0.5); - } - long XLOG2DEV(long x) const - { - long new_x = x - m_logicalOriginX; - if (new_x > 0) - return (long)((double)(new_x) * m_scaleX + 0.5) * m_signX + m_deviceOriginX; - else - return (long)((double)(new_x) * m_scaleX - 0.5) * m_signX + m_deviceOriginX; - } - long XLOG2DEVREL(long x) const - { - if (x > 0) - return (long)((double)(x) * m_scaleX + 0.5); - else - return (long)((double)(x) * m_scaleX - 0.5); - } - long YLOG2DEV(long y) const - { - long new_y = y - m_logicalOriginY; - if (new_y > 0) - return (long)((double)(new_y) * m_scaleY + 0.5) * m_signY + m_deviceOriginY; - else - return (long)((double)(new_y) * m_scaleY - 0.5) * m_signY + m_deviceOriginY; - } - long YLOG2DEVREL(long y) const - { - if (y > 0) - return (long)((double)(y) * m_scaleY + 0.5); - else - return (long)((double)(y) * m_scaleY - 0.5); - } - - public: - - bool m_ok; - bool m_colour; - - // not sure, what these mean - bool m_clipping; // Is clipping on right now ? - bool m_isInteractive; // Is GetPixel possible ? - bool m_autoSetting; // wxMSW only ? - bool m_dontDelete; // wxMSW only ? - bool m_optimize; // wxMSW only ? - wxString m_filename; // Not sure where this belongs. - - wxPen m_pen; - wxBrush m_brush; - wxBrush m_backgroundBrush; - wxColour m_textForegroundColour; - wxColour m_textBackgroundColour; - wxFont m_font; - - int m_logicalFunction; - int m_backgroundMode; - int m_textAlignment; // gone in wxWin 2.0 ? - - int m_mappingMode; - - // not sure what for, but what is a mm on a screen you don't know the size of? - double m_mm_to_pix_x,m_mm_to_pix_y; - - long m_internalDeviceOriginX,m_internalDeviceOriginY; // If un-scrolled is non-zero or - // d.o. changes with scrolling. - // Set using SetInternalDeviceOrigin(). - - long m_externalDeviceOriginX,m_externalDeviceOriginY; // To be set by external classes - // such as wxScrolledWindow - // using SetDeviceOrigin() - - long m_deviceOriginX,m_deviceOriginY; // Sum of the two above. - - long m_logicalOriginX,m_logicalOriginY; // User defined. - - double m_scaleX,m_scaleY; - double m_logicalScaleX,m_logicalScaleY; - double m_userScaleX,m_userScaleY; - long m_signX,m_signY; - - bool m_needComputeScaleX,m_needComputeScaleY; // not yet used - - float m_scaleFactor; // wxPSDC wants to have this. Will disappear. - - long m_clipX1,m_clipY1,m_clipX2,m_clipY2; - long m_minX,m_maxX,m_minY,m_maxY; -}; - -#endif - // _WX_DC_H_ diff --git a/include/wx/mac/dcclient.h b/include/wx/mac/dcclient.h deleted file mode 100644 index 29e4e6f7a0..0000000000 --- a/include/wx/mac/dcclient.h +++ /dev/null @@ -1,125 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcclient.h -// Purpose: wxClientDC, wxPaintDC and wxWindowDC classes -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_DCCLIENT_H_ -#define _WX_DCCLIENT_H_ - -#ifdef __GNUG__ -#pragma interface "dcclient.h" -#endif - -#include "wx/dc.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class WXDLLEXPORT wxPaintDC; -class WXDLLEXPORT wxWindow; - -// Under Windows, wxClientDC, wxPaintDC and wxWindowDC are implemented differently. -// On many platforms, however, they will be the same. - -class WXDLLEXPORT wxWindowDC: public wxDC -{ - DECLARE_DYNAMIC_CLASS(wxWindowDC) - - public: - - wxWindowDC(void); - wxWindowDC( wxWindow *win ); - - ~wxWindowDC(void); - - virtual void FloodFill( long x1, long y1, const wxColour& col, int style=wxFLOOD_SURFACE ); - virtual bool GetPixel( long x1, long y1, wxColour *col ) const; - - virtual void DrawLine( long x1, long y1, long x2, long y2 ); - virtual void CrossHair( long x, long y ); - virtual void DrawArc( long x1, long y1, long x2, long y2, long xc, long yc ); - virtual void DrawEllipticArc( long x, long y, long width, long height, double sa, double ea ); - virtual void DrawPoint( long x, long y ); - - virtual void DrawLines( int n, wxPoint points[], long xoffset = 0, long yoffset = 0 ); - virtual void DrawLines( wxList *points, long xoffset = 0, long yoffset = 0 ); - virtual void DrawPolygon( int n, wxPoint points[], long xoffset = 0, long yoffset = 0, - int fillStyle=wxODDEVEN_RULE ); - virtual void DrawPolygon( wxList *lines, long xoffset = 0, long yoffset = 0, - int fillStyle=wxODDEVEN_RULE ); - - virtual void DrawRectangle( long x, long y, long width, long height ); - virtual void DrawRoundedRectangle( long x, long y, long width, long height, double radius = 20.0 ); - virtual void DrawEllipse( long x, long y, long width, long height ); - - virtual bool CanDrawBitmap(void) const; - virtual void DrawIcon( const wxIcon &icon, long x, long y, bool useMask=FALSE ); - virtual bool Blit( long xdest, long ydest, long width, long height, - wxDC *source, long xsrc, long ysrc, int logical_func = wxCOPY, bool useMask=FALSE ); - - virtual void DrawText( const wxString &text, long x, long y, bool use16 = FALSE ); - virtual bool CanGetTextExtent(void) const; - virtual void GetTextExtent( const wxString &string, long *width, long *height, - long *descent = NULL, long *externalLeading = NULL, - wxFont *theFont = NULL, bool use16 = FALSE ); - virtual long GetCharWidth(void); - virtual long GetCharHeight(void); - - virtual void Clear(void); - - virtual void SetFont( const wxFont &font ); - virtual void SetPen( const wxPen &pen ); - virtual void SetBrush( const wxBrush &brush ); - virtual void SetBackground( const wxBrush &brush ); - virtual void SetLogicalFunction( int function ); - virtual void SetTextForeground( const wxColour &col ); - virtual void SetTextBackground( const wxColour &col ); - virtual void SetBackgroundMode( int mode ); - virtual void SetPalette( const wxPalette& palette ); - - virtual void SetClippingRegion( long x, long y, long width, long height ); - virtual void SetClippingRegion( const wxRegion& region ) ; - virtual void DestroyClippingRegion(void); - - virtual void DrawSpline( wxList *points ); -}; - -//----------------------------------------------------------------------------- -// wxPaintDC -//----------------------------------------------------------------------------- - -class WXDLLEXPORT wxPaintDC: public wxWindowDC -{ - DECLARE_DYNAMIC_CLASS(wxPaintDC) - - public: - - wxPaintDC(void):wxWindowDC() {}; - wxPaintDC( wxWindow *win ): wxWindowDC(win) {}; - -}; - -//----------------------------------------------------------------------------- -// wxClientDC -//----------------------------------------------------------------------------- - -class WXDLLEXPORT wxClientDC: public wxWindowDC -{ - DECLARE_DYNAMIC_CLASS(wxClientDC) - - public: - - wxClientDC(void):wxWindowDC() {}; - wxClientDC( wxWindow *win ): wxWindowDC(win) {}; - -}; - -#endif - // _WX_DCCLIENT_H_ diff --git a/include/wx/mac/dcmemory.h b/include/wx/mac/dcmemory.h deleted file mode 100644 index c6c5737642..0000000000 --- a/include/wx/mac/dcmemory.h +++ /dev/null @@ -1,38 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcmemory.h -// Purpose: wxMemoryDC class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_DCMEMORY_H_ -#define _WX_DCMEMORY_H_ - -#ifdef __GNUG__ -#pragma interface "dcmemory.h" -#endif - -#include "wx/dcclient.h" - -class WXDLLEXPORT wxMemoryDC: public wxPaintDC -{ - DECLARE_DYNAMIC_CLASS(wxMemoryDC) - - public: - wxMemoryDC(void); - wxMemoryDC( wxDC *dc ); // Create compatible DC - ~wxMemoryDC(void); - virtual void SelectObject( const wxBitmap& bitmap ); - void GetSize( int *width, int *height ) const; - - private: - friend wxPaintDC; - wxBitmap m_selected; -}; - -#endif - // _WX_DCMEMORY_H_ diff --git a/include/wx/mac/dcprint.h b/include/wx/mac/dcprint.h deleted file mode 100644 index 2ea66d15bf..0000000000 --- a/include/wx/mac/dcprint.h +++ /dev/null @@ -1,34 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcprint.h -// Purpose: wxPrinterDC class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_DCPRINT_H_ -#define _WX_DCPRINT_H_ - -#ifdef __GNUG__ -#pragma interface "dcprint.h" -#endif - -#include "wx/dc.h" - -class WXDLLEXPORT wxPrinterDC: public wxDC -{ - public: - DECLARE_CLASS(wxPrinterDC) - - // Create a printer DC - wxPrinterDC(const wxString& driver, const wxString& device, const wxString& output, bool interactive = TRUE, int orientation = wxPORTRAIT); - - ~wxPrinterDC(); -}; - -#endif - // _WX_DCPRINT_H_ - diff --git a/include/wx/mac/dcscreen.h b/include/wx/mac/dcscreen.h deleted file mode 100644 index e04b450f69..0000000000 --- a/include/wx/mac/dcscreen.h +++ /dev/null @@ -1,39 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcscreen.h -// Purpose: wxScreenDC class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_DCSCREEN_H_ -#define _WX_DCSCREEN_H_ - -#ifdef __GNUG__ -#pragma interface "dcscreen.h" -#endif - -#include "wx/dcclient.h" - -class WXDLLEXPORT wxScreenDC: public wxWindowDC -{ - DECLARE_DYNAMIC_CLASS(wxScreenDC) - - public: - // Create a DC representing the whole screen - wxScreenDC(); - ~wxScreenDC(); - - // Compatibility with X's requirements for - // drawing on top of all windows - static bool StartDrawingOnTop(wxWindow* WXUNUSED(window)) { return TRUE; } - static bool StartDrawingOnTop(wxRect* WXUNUSED(rect) = NULL) { return TRUE; } - static bool EndDrawingOnTop() { return TRUE; } -}; - -#endif - // _WX_DCSCREEN_H_ - diff --git a/include/wx/mac/dialog.h b/include/wx/mac/dialog.h deleted file mode 100644 index ebd7bff2a8..0000000000 --- a/include/wx/mac/dialog.h +++ /dev/null @@ -1,98 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dialog.h -// Purpose: wxDialog class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_DIALOG_H_ -#define _WX_DIALOG_H_ - -#ifdef __GNUG__ -#pragma interface "dialog.h" -#endif - -#include "wx/panel.h" - -WXDLLEXPORT_DATA(extern const char*) wxDialogNameStr; - -// Dialog boxes -class WXDLLEXPORT wxDialog: public wxPanel -{ - DECLARE_DYNAMIC_CLASS(wxDialog) -public: - - wxDialog(); - - // Constructor with a modal flag, but no window id - the old convention - inline wxDialog(wxWindow *parent, - const wxString& title, bool modal, - int x = -1, int y= -1, int width = 500, int height = 500, - long style = wxDEFAULT_DIALOG_STYLE, - const wxString& name = wxDialogNameStr) - { - long modalStyle = modal ? wxDIALOG_MODAL : wxDIALOG_MODELESS ; - Create(parent, -1, title, wxPoint(x, y), wxSize(width, height), style|modalStyle, name); - } - - // Constructor with no modal flag - the new convention. - inline wxDialog(wxWindow *parent, wxWindowID id, - const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_DIALOG_STYLE, - const wxString& name = wxDialogNameStr) - { - Create(parent, id, title, pos, size, style, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - const wxString& title, // bool modal = FALSE, // TODO make this a window style? - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_DIALOG_STYLE, - const wxString& name = wxDialogNameStr); - - ~wxDialog(); - - virtual bool Destroy(); - void SetClientSize(int width, int height); - void GetPosition(int *x, int *y) const; - bool Show(bool show); - void Iconize(bool iconize); - - virtual bool IsIconized() const; - void Fit(); - - void SetTitle(const wxString& title); - wxString GetTitle() const ; - - bool OnClose(); - void OnCharHook(wxKeyEvent& event); - void OnCloseWindow(wxCloseEvent& event); - - void SetModal(bool flag); - - virtual void Centre(int direction = wxBOTH); - virtual bool IsModal() const { return ((GetWindowStyleFlag() & wxDIALOG_MODAL) == wxDIALOG_MODAL); } - - virtual int ShowModal(); - virtual void EndModal(int retCode); - - // Standard buttons - void OnOK(wxCommandEvent& event); - void OnApply(wxCommandEvent& event); - void OnCancel(wxCommandEvent& event); - - // Responds to colour changes - void OnSysColourChanged(wxSysColourChangedEvent& event); - -DECLARE_EVENT_TABLE() -}; - -#endif - // _WX_DIALOG_H_ diff --git a/include/wx/mac/dirdlg.h b/include/wx/mac/dirdlg.h deleted file mode 100644 index 44f96238e2..0000000000 --- a/include/wx/mac/dirdlg.h +++ /dev/null @@ -1,49 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dirdlg.h -// Purpose: wxDirDialog class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_DIRDLG_H_ -#define _WX_DIRDLG_H_ - -#ifdef __GNUG__ -#pragma interface "dirdlg.h" -#endif - -#include "wx/dialog.h" - -WXDLLEXPORT_DATA(extern const char*) wxFileSelectorPromptStr; - -class WXDLLEXPORT wxDirDialog: public wxDialog -{ -DECLARE_DYNAMIC_CLASS(wxDirDialog) -public: - wxDirDialog(wxWindow *parent, const wxString& message = wxFileSelectorPromptStr, - const wxString& defaultPath = "", - long style = 0, const wxPoint& pos = wxDefaultPosition); - - inline void SetMessage(const wxString& message) { m_message = message; } - inline void SetPath(const wxString& path) { m_path = path; } - inline void SetStyle(long style) { m_dialogStyle = style; } - - inline wxString GetMessage() const { return m_message; } - inline wxString GetPath() const { return m_path; } - inline long GetStyle() const { return m_dialogStyle; } - - int ShowModal(); - -protected: - wxString m_message; - long m_dialogStyle; - wxWindow * m_parent; - wxString m_path; -}; - -#endif - // _WX_DIRDLG_H_ diff --git a/include/wx/mac/dnd.h b/include/wx/mac/dnd.h deleted file mode 100644 index 5a7a65335f..0000000000 --- a/include/wx/mac/dnd.h +++ /dev/null @@ -1,238 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: dnd.h -// Purpose: Declaration of the wxDropTarget, wxDropSource class etc. -// Author: AUTHOR -// RCS-ID: $Id$ -// Copyright: (c) 1998 AUTHOR -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_DND_H_ -#define _WX_DND_H_ - -#ifdef __GNUG__ -#pragma interface "dnd.h" -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/string.h" -#include "wx/cursor.h" - -//------------------------------------------------------------------------- -// classes -//------------------------------------------------------------------------- - -class WXDLLEXPORT wxWindow; - -class WXDLLEXPORT wxDataObject; -class WXDLLEXPORT wxTextDataObject; -class WXDLLEXPORT wxFileDataObject; - -class WXDLLEXPORT wxDropTarget; -class WXDLLEXPORT wxTextDropTarget; -class WXDLLEXPORT wxFileDropTarget; - -class WXDLLEXPORT wxDropSource; - -//------------------------------------------------------------------------- -// wxDataObject -//------------------------------------------------------------------------- - -class WXDLLEXPORT wxDataObject: public wxObject -{ -public: - // all data formats (values are the same as in windows.h, do not change!) - enum StdFormat - { - Invalid, - Text, - Bitmap, - MetafilePict, - Sylk, - Dif, - Tiff, - OemText, - Dib, - Palette, - Pendata, - Riff, - Wave, - UnicodeText, - EnhMetafile, - Hdrop, - Locale, - Max - }; - - // function to return symbolic name of clipboard format (debug messages) - static const char *GetFormatName(wxDataFormat format); - - // ctor & dtor - wxDataObject() {}; - ~wxDataObject() {}; - - // pure virtuals to override - // get the best suited format for our data - virtual wxDataFormat GetPreferredFormat() const = 0; - // decide if we support this format (should be one of values of - // StdFormat enumerations or a user-defined format) - virtual bool IsSupportedFormat(wxDataFormat format) const = 0; - // get the (total) size of data - virtual size_t GetDataSize() const = 0; - // copy raw data to provided pointer - virtual void GetDataHere(void *pBuf) const = 0; - -}; - -// ---------------------------------------------------------------------------- -// wxTextDataObject is a specialization of wxDataObject for text data -// ---------------------------------------------------------------------------- - -class WXDLLEXPORT wxTextDataObject : public wxDataObject -{ -public: - // ctors - wxTextDataObject() { } - wxTextDataObject(const wxString& strText) : m_strText(strText) { } - void Init(const wxString& strText) { m_strText = strText; } - - // implement base class pure virtuals - virtual wxDataFormat GetPreferredFormat() const - { return wxDF_TEXT; } - virtual bool IsSupportedFormat(wxDataFormat format) const - { return format == wxDF_TEXT; } - virtual size_t GetDataSize() const - { return m_strText.Len() + 1; } // +1 for trailing '\0'of course - virtual void GetDataHere(void *pBuf) const - { memcpy(pBuf, m_strText.c_str(), GetDataSize()); } - -private: - wxString m_strText; - -}; - -// ---------------------------------------------------------------------------- -// wxFileDataObject is a specialization of wxDataObject for file names -// ---------------------------------------------------------------------------- - -class WXDLLEXPORT wxFileDataObject : public wxDataObject -{ -public: - - wxFileDataObject(void) { } - void AddFile( const wxString &file ) - { m_files += file; m_files += ";"; } - - // implement base class pure virtuals - virtual wxDataFormat GetPreferredFormat() const - { return wxDF_FILENAME; } - virtual bool IsSupportedFormat(wxDataFormat format) const - { return format == wxDF_FILENAME; } - virtual size_t GetDataSize() const - { return m_files.Len() + 1; } // +1 for trailing '\0'of course - virtual void GetDataHere(void *pBuf) const - { memcpy(pBuf, m_files.c_str(), GetDataSize()); } - -private: - wxString m_files; - -}; -//------------------------------------------------------------------------- -// wxDropTarget -//------------------------------------------------------------------------- - -class WXDLLEXPORT wxDropTarget: public wxObject -{ - public: - - wxDropTarget(); - ~wxDropTarget(); - - virtual void OnEnter() { } - virtual void OnLeave() { } - virtual bool OnDrop( long x, long y, const void *pData ) = 0; - -// protected: - - friend wxWindow; - - // Override these to indicate what kind of data you support: - - virtual size_t GetFormatCount() const = 0; - virtual wxDataFormat GetFormat(size_t n) const = 0; -}; - -//------------------------------------------------------------------------- -// wxTextDropTarget -//------------------------------------------------------------------------- - -class WXDLLEXPORT wxTextDropTarget: public wxDropTarget -{ - public: - - wxTextDropTarget() {}; - virtual bool OnDrop( long x, long y, const void *pData ); - virtual bool OnDropText( long x, long y, const char *psz ); - - protected: - - virtual size_t GetFormatCount() const; - virtual wxDataFormat GetFormat(size_t n) const; -}; - -// ---------------------------------------------------------------------------- -// A drop target which accepts files (dragged from File Manager or Explorer) -// ---------------------------------------------------------------------------- - -class WXDLLEXPORT wxFileDropTarget: public wxDropTarget -{ - public: - - wxFileDropTarget() {}; - - virtual bool OnDrop(long x, long y, const void *pData); - virtual bool OnDropFiles( long x, long y, - size_t nFiles, const char * const aszFiles[]); - - protected: - - virtual size_t GetFormatCount() const; - virtual wxDataFormat GetFormat(size_t n) const; -}; - -//------------------------------------------------------------------------- -// wxDropSource -//------------------------------------------------------------------------- - -enum wxDragResult - { - wxDragError, // error prevented the d&d operation from completing - wxDragNone, // drag target didn't accept the data - wxDragCopy, // the data was successfully copied - wxDragMove, // the data was successfully moved - wxDragCancel // the operation was cancelled by user (not an error) - }; - -class WXDLLEXPORT wxDropSource: public wxObject -{ - public: - - wxDropSource( wxWindow *win ); - wxDropSource( wxDataObject &data, wxWindow *win ); - - ~wxDropSource(void); - - void SetData( wxDataObject &data ); - wxDragResult DoDragDrop( bool bAllowMove = FALSE ); - - virtual bool GiveFeedback( wxDragResult WXUNUSED(effect), bool WXUNUSED(bScrolling) ) { return TRUE; }; - - protected: - - wxDataObject *m_data; -}; - -#endif - //_WX_DND_H_ - diff --git a/include/wx/mac/filedlg.h b/include/wx/mac/filedlg.h deleted file mode 100644 index 0259f2d943..0000000000 --- a/include/wx/mac/filedlg.h +++ /dev/null @@ -1,89 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: filedlg.h -// Purpose: wxFileDialog class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_FILEDLG_H_ -#define _WX_FILEDLG_H_ - -#ifdef __GNUG__ -#pragma interface "filedlg.h" -#endif - -#include "wx/dialog.h" - -/* - * File selector - */ - -WXDLLEXPORT_DATA(extern const char*) wxFileSelectorPromptStr; -WXDLLEXPORT_DATA(extern const char*) wxFileSelectorDefaultWildcardStr; - -class WXDLLEXPORT wxFileDialog: public wxDialog -{ -DECLARE_DYNAMIC_CLASS(wxFileDialog) -protected: - wxString m_message; - long m_dialogStyle; - wxWindow * m_parent; - wxString m_dir; - wxString m_path; // Full path - wxString m_fileName; - wxString m_wildCard; - int m_filterIndex; -public: - wxFileDialog(wxWindow *parent, const wxString& message = wxFileSelectorPromptStr, - const wxString& defaultDir = "", const wxString& defaultFile = "", const wxString& wildCard = wxFileSelectorDefaultWildcardStr, - long style = 0, const wxPoint& pos = wxDefaultPosition); - - inline void SetMessage(const wxString& message) { m_message = message; } - inline void SetPath(const wxString& path) { m_path = path; } - inline void SetDirectory(const wxString& dir) { m_dir = dir; } - inline void SetFilename(const wxString& name) { m_fileName = name; } - inline void SetWildcard(const wxString& wildCard) { m_wildCard = wildCard; } - inline void SetStyle(long style) { m_dialogStyle = style; } - inline void SetFilterIndex(int filterIndex) { m_filterIndex = filterIndex; } - - inline wxString GetMessage() const { return m_message; } - inline wxString GetPath() const { return m_path; } - inline wxString GetDirectory() const { return m_dir; } - inline wxString GetFilename() const { return m_fileName; } - inline wxString GetWildcard() const { return m_wildCard; } - inline long GetStyle() const { return m_dialogStyle; } - inline int GetFilterIndex() const { return m_filterIndex ; } - - int ShowModal(); -}; - -#define wxOPEN 0x0001 -#define wxSAVE 0x0002 -#define wxOVERWRITE_PROMPT 0x0004 -#define wxHIDE_READONLY 0x0008 -#define wxFILE_MUST_EXIST 0x0010 - -// File selector - backward compatibility -char* WXDLLEXPORT wxFileSelector(const char *message = wxFileSelectorPromptStr, const char *default_path = NULL, - const char *default_filename = NULL, const char *default_extension = NULL, - const char *wildcard = wxFileSelectorDefaultWildcardStr, int flags = 0, - wxWindow *parent = NULL, int x = -1, int y = -1); - -// An extended version of wxFileSelector -char* WXDLLEXPORT wxFileSelectorEx(const char *message = wxFileSelectorPromptStr, const char *default_path = NULL, - const char *default_filename = NULL, int *indexDefaultExtension = NULL, - const char *wildcard = wxFileSelectorDefaultWildcardStr, int flags = 0, - wxWindow *parent = NULL, int x = -1, int y = -1); - -// Generic file load dialog -char* WXDLLEXPORT wxLoadFileSelector(const char *what, const char *extension, const char *default_name = NULL, wxWindow *parent = NULL); - -// Generic file save dialog -char* WXDLLEXPORT wxSaveFileSelector(const char *what, const char *extension, const char *default_name = NULL, wxWindow *parent = NULL); - -#endif - // _WX_FILEDLG_H_ diff --git a/include/wx/mac/font.h b/include/wx/mac/font.h deleted file mode 100644 index aff8fb3a75..0000000000 --- a/include/wx/mac/font.h +++ /dev/null @@ -1,89 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: font.h -// Purpose: wxFont class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_FONT_H_ -#define _WX_FONT_H_ - -#ifdef __GNUG__ -#pragma interface "font.h" -#endif - -#include "wx/gdiobj.h" - -class WXDLLEXPORT wxFont; - -class WXDLLEXPORT wxFontRefData: public wxGDIRefData -{ - friend class WXDLLEXPORT wxFont; -public: - wxFontRefData(); - wxFontRefData(const wxFontRefData& data); - ~wxFontRefData(); -protected: - int m_pointSize; - int m_family; - int m_style; - int m_weight; - bool m_underlined; - wxString m_faceName; -/* TODO: implementation - WXHFONT m_hFont; -*/ -}; - -#define M_FONTDATA ((wxFontRefData *)m_refData) - -WXDLLEXPORT_DATA(extern const char*) wxEmptyString; - -// Font -class WXDLLEXPORT wxFont: public wxGDIObject -{ - DECLARE_DYNAMIC_CLASS(wxFont) -public: - wxFont(); - wxFont(int pointSize, int family, int style, int weight, bool underlined = FALSE, const wxString& faceName = wxEmptyString); - inline wxFont(const wxFont& font) { Ref(font); } - - ~wxFont(); - - bool Create(int pointSize, int family, int style, int weight, bool underlined = FALSE, const wxString& faceName = wxEmptyString); - - virtual bool Ok() const { return (m_refData != NULL) ; } - - inline int GetPointSize() const { return M_FONTDATA->m_pointSize; } - inline int GetFamily() const { return M_FONTDATA->m_family; } - inline int GetStyle() const { return M_FONTDATA->m_style; } - inline int GetWeight() const { return M_FONTDATA->m_weight; } - wxString GetFamilyString() const ; - wxString GetFaceName() const ; - wxString GetStyleString() const ; - wxString GetWeightString() const ; - inline bool GetUnderlined() const { return M_FONTDATA->m_underlined; } - - void SetPointSize(int pointSize); - void SetFamily(int family); - void SetStyle(int style); - void SetWeight(int weight); - void SetFaceName(const wxString& faceName); - void SetUnderlined(bool underlined); - - inline wxFont& operator = (const wxFont& font) { if (*this == font) return (*this); Ref(font); return *this; } - inline bool operator == (const wxFont& font) { return m_refData == font.m_refData; } - inline bool operator != (const wxFont& font) { return m_refData != font.m_refData; } - - // Implementation -protected: - bool RealizeResource(); - void Unshare(); -}; - -#endif - // _WX_FONT_H_ diff --git a/include/wx/mac/fontdlg.h b/include/wx/mac/fontdlg.h deleted file mode 100644 index 39da6fd967..0000000000 --- a/include/wx/mac/fontdlg.h +++ /dev/null @@ -1,46 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: fontdlg.h -// Purpose: wxFontDialog class. Use generic version if no -// platform-specific implementation. -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_FONTDLG_H_ -#define _WX_FONTDLG_H_ - -#ifdef __GNUG__ -#pragma interface "fontdlg.h" -#endif - -#include "wx/dialog.h" -#include "wx/cmndata.h" - -/* - * Font dialog - */ - -class WXDLLEXPORT wxFontDialog: public wxDialog -{ -DECLARE_DYNAMIC_CLASS(wxFontDialog) -public: - wxFontDialog(); - wxFontDialog(wxWindow *parent, wxFontData *data = NULL); - - bool Create(wxWindow *parent, wxFontData *data = NULL); - - int ShowModal(); - wxFontData& GetFontData() { return m_fontData; } - -protected: - wxWindow* m_dialogParent; - wxFontData m_fontData; -}; - -#endif - // _WX_FONTDLG_H_ - diff --git a/include/wx/mac/frame.h b/include/wx/mac/frame.h deleted file mode 100644 index c013362175..0000000000 --- a/include/wx/mac/frame.h +++ /dev/null @@ -1,158 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: frame.h -// Purpose: wxFrame class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_FRAME_H_ -#define _WX_FRAME_H_ - -#ifdef __GNUG__ -#pragma interface "frame.h" -#endif - -#include "wx/window.h" -#include "wx/toolbar.h" -#include "wx/accel.h" - -WXDLLEXPORT_DATA(extern const char*) wxFrameNameStr; -WXDLLEXPORT_DATA(extern const char*) wxToolBarNameStr; - -class WXDLLEXPORT wxMenuBar; -class WXDLLEXPORT wxStatusBar; - -class WXDLLEXPORT wxFrame: public wxWindow { - - DECLARE_DYNAMIC_CLASS(wxFrame) - -public: - wxFrame(); - inline wxFrame(wxWindow *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE, - const wxString& name = wxFrameNameStr) - { - Create(parent, id, title, pos, size, style, name); - } - - ~wxFrame(); - - bool Create(wxWindow *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE, - const wxString& name = wxFrameNameStr); - - virtual bool Destroy(); - void SetClientSize(int width, int height); - void GetClientSize(int *width, int *height) const; - - void GetSize(int *width, int *height) const ; - void GetPosition(int *x, int *y) const ; - void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - void ClientToScreen(int *x, int *y) const; - void ScreenToClient(int *x, int *y) const; - - virtual bool OnClose(); - - void OnSize(wxSizeEvent& event); - void OnMenuHighlight(wxMenuEvent& event); - void OnActivate(wxActivateEvent& event); - void OnIdle(wxIdleEvent& event); - void OnCloseWindow(wxCloseEvent& event); - - bool Show(bool show); - - // Set menu bar - void SetMenuBar(wxMenuBar *menu_bar); - virtual wxMenuBar *GetMenuBar() const ; - - // Set title - void SetTitle(const wxString& title); - wxString GetTitle() const ; - - void Centre(int direction = wxBOTH); - - // Call this to simulate a menu command - virtual void Command(int id); - virtual void ProcessCommand(int id); - - // Set icon - virtual void SetIcon(const wxIcon& icon); - - // Create status line - virtual wxStatusBar* CreateStatusBar(int number=1, long style = wxST_SIZEGRIP, wxWindowID id = 0, - const wxString& name = "statusBar"); - inline wxStatusBar *GetStatusBar() const { return m_frameStatusBar; } - virtual void PositionStatusBar(); - virtual wxStatusBar *OnCreateStatusBar(int number, long style, wxWindowID id, - const wxString& name); - - // Create toolbar - virtual wxToolBar* CreateToolBar(long style = wxNO_BORDER|wxTB_HORIZONTAL, wxWindowID id = -1, const wxString& name = wxToolBarNameStr); - virtual wxToolBar *OnCreateToolBar(long style, wxWindowID id, const wxString& name); - // If made known to the frame, the frame will manage it automatically. - virtual inline void SetToolBar(wxToolBar *toolbar) { m_frameToolBar = toolbar; } - virtual inline wxToolBar *GetToolBar() const { return m_frameToolBar; } - virtual void PositionToolBar(); - - // Set status line text - virtual void SetStatusText(const wxString& text, int number = 0); - - // Set status line widths - virtual void SetStatusWidths(int n, const int widths_field[]); - - // Hint to tell framework which status bar to use - // TODO: should this go into a wxFrameworkSettings class perhaps? - static void UseNativeStatusBar(bool useNative) { m_useNativeStatusBar = useNative; }; - static bool UsesNativeStatusBar() { return m_useNativeStatusBar; }; - - // Fit frame around subwindows - virtual void Fit(); - - // Iconize - virtual void Iconize(bool iconize); - - virtual bool IsIconized() const ; - - // Compatibility - inline bool Iconized() const { return IsIconized(); } - - // Is the frame maximized? - virtual bool IsMaximized(void) const ; - - virtual void Maximize(bool maximize); - - // Responds to colour changes - void OnSysColourChanged(wxSysColourChangedEvent& event); - - // Query app for menu item updates (called from OnIdle) - void DoMenuUpdates(); - void DoMenuUpdates(wxMenu* menu); - - // Checks if there is a toolbar, and returns the first free client position - virtual wxPoint GetClientAreaOrigin() const; - -protected: - wxMenuBar * m_frameMenuBar; - wxStatusBar * m_frameStatusBar; - wxIcon m_icon; - bool m_iconized; - static bool m_useNativeStatusBar; - wxToolBar * m_frameToolBar ; - - DECLARE_EVENT_TABLE() -}; - -#endif - // _WX_FRAME_H_ diff --git a/include/wx/mac/gauge.h b/include/wx/mac/gauge.h deleted file mode 100644 index ce19d9ef1f..0000000000 --- a/include/wx/mac/gauge.h +++ /dev/null @@ -1,69 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: gauge.h -// Purpose: wxGauge class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_GAUGE_H_ -#define _WX_GAUGE_H_ - -#ifdef __GNUG__ -#pragma interface "gauge.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxGaugeNameStr; - -// Group box -class WXDLLEXPORT wxGauge: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxGauge) - public: - inline wxGauge() { m_rangeMax = 0; m_gaugePos = 0; } - - inline wxGauge(wxWindow *parent, wxWindowID id, - int range, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxGA_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxGaugeNameStr) - { - Create(parent, id, range, pos, size, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - int range, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxGA_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxGaugeNameStr); - - void SetShadowWidth(int w); - void SetBezelFace(int w); - void SetRange(int r); - void SetValue(int pos); - - int GetShadowWidth() const ; - int GetBezelFace() const ; - int GetRange() const ; - int GetValue() const ; - - void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - - virtual void Command(wxCommandEvent& WXUNUSED(event)) {} ; - - protected: - int m_rangeMax; - int m_gaugePos; -}; - -#endif - // _WX_GAUGE_H_ diff --git a/include/wx/mac/gdiobj.h b/include/wx/mac/gdiobj.h deleted file mode 100644 index 9263d4d6ad..0000000000 --- a/include/wx/mac/gdiobj.h +++ /dev/null @@ -1,48 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: gdiobj.h -// Purpose: wxGDIObject class: base class for other GDI classes -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_GDIOBJ_H_ -#define _WX_GDIOBJ_H_ - -#include "wx/object.h" - -#ifdef __GNUG__ -#pragma interface "gdiobj.h" -#endif - -class WXDLLEXPORT wxGDIRefData: public wxObjectRefData { -public: - inline wxGDIRefData() - { - } -}; - -#define M_GDIDATA ((wxGDIRefData *)m_refData) - -class WXDLLEXPORT wxGDIObject: public wxObject -{ -DECLARE_DYNAMIC_CLASS(wxGDIObject) - public: - inline wxGDIObject() { m_visible = FALSE; }; - inline ~wxGDIObject() {}; - - inline bool IsNull() const { return (m_refData == 0); } - - virtual bool GetVisible() { return m_visible; } - virtual void SetVisible(bool v) { m_visible = v; } - -protected: - bool m_visible; // Can a pointer to this object be safely taken? - // - only if created within FindOrCreate... -}; - -#endif - // _WX_GDIOBJ_H_ diff --git a/include/wx/mac/helpxxxx.h b/include/wx/mac/helpxxxx.h deleted file mode 100644 index d53c28b7e4..0000000000 --- a/include/wx/mac/helpxxxx.h +++ /dev/null @@ -1,52 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: helpxxxx.h -// Purpose: Help system: native implementation for your system. Replace -// XXXX with suitable name. -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_HELPXXXX_H_ -#define _WX_HELPXXXX_H_ - -#ifdef __GNUG__ -#pragma interface "helpxxxx.h" -#endif - -#include "wx/wx.h" - -#include "wx/helpbase.h" - -class WXDLLEXPORT wxXXXXHelpController: public wxHelpControllerBase -{ - DECLARE_CLASS(wxXXXXHelpController) - - public: - wxXXXXHelpController(); - ~wxXXXXHelpController(); - - // Must call this to set the filename and server name - virtual bool Initialize(const wxString& file); - - // If file is "", reloads file given in Initialize - virtual bool LoadFile(const wxString& file = ""); - virtual bool DisplayContents(); - virtual bool DisplaySection(int sectionNo); - virtual bool DisplayBlock(long blockNo); - virtual bool KeywordSearch(const wxString& k); - - virtual bool Quit(); - virtual void OnQuit(); - - inline wxString GetHelpFile() const { return m_helpFile; } - -protected: - wxString m_helpFile; -}; - -#endif - // _WX_HELPXXXX_H_ diff --git a/include/wx/mac/icon.h b/include/wx/mac/icon.h deleted file mode 100644 index df475672ba..0000000000 --- a/include/wx/mac/icon.h +++ /dev/null @@ -1,106 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: icon.h -// Purpose: wxIcon class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_ICON_H_ -#define _WX_ICON_H_ - -#ifdef __GNUG__ -#pragma interface "icon.h" -#endif - -#include "wx/bitmap.h" - -class WXDLLEXPORT wxIconRefData: public wxBitmapRefData -{ - friend class WXDLLEXPORT wxBitmap; - friend class WXDLLEXPORT wxIcon; -public: - wxIconRefData(); - ~wxIconRefData(); - -public: -/* TODO: whatever your actual icon handle is - WXHICON m_hIcon; -*/ -}; - -#define M_ICONDATA ((wxIconRefData *)m_refData) -#define M_ICONHANDLERDATA ((wxIconRefData *)bitmap->GetRefData()) - -// Icon -class WXDLLEXPORT wxIcon: public wxBitmap -{ - DECLARE_DYNAMIC_CLASS(wxIcon) - -public: - wxIcon(); - - // Copy constructors - inline wxIcon(const wxIcon& icon) { Ref(icon); } - - wxIcon(const char bits[], int width, int height); - wxIcon(const wxString& name, long flags = wxBITMAP_TYPE_ICO_RESOURCE, - int desiredWidth = -1, int desiredHeight = -1); - ~wxIcon(); - - bool LoadFile(const wxString& name, long flags = wxBITMAP_TYPE_ICO_RESOURCE, - int desiredWidth = -1, int desiredHeight = -1); - - inline wxIcon& operator = (const wxIcon& icon) { if (*this == icon) return (*this); Ref(icon); return *this; } - inline bool operator == (const wxIcon& icon) { return m_refData == icon.m_refData; } - inline bool operator != (const wxIcon& icon) { return m_refData != icon.m_refData; } - -/* TODO: implementation - void SetHICON(WXHICON ico); - inline WXHICON GetHICON() const { return (M_ICONDATA ? M_ICONDATA->m_hIcon : 0); } -*/ - -/* TODO */ - virtual bool Ok() const { return (m_refData != NULL) ; } -}; - -/* Example handlers. TODO: write your own handlers for relevant types. - -class WXDLLEXPORT wxICOFileHandler: public wxBitmapHandler -{ - DECLARE_DYNAMIC_CLASS(wxICOFileHandler) -public: - inline wxICOFileHandler() - { - m_name = "ICO icon file"; - m_extension = "ico"; - m_type = wxBITMAP_TYPE_ICO; - }; - - virtual bool LoadFile(wxBitmap *bitmap, const wxString& name, long flags, - int desiredWidth = -1, int desiredHeight = -1); -}; - -class WXDLLEXPORT wxICOResourceHandler: public wxBitmapHandler -{ - DECLARE_DYNAMIC_CLASS(wxICOResourceHandler) -public: - inline wxICOResourceHandler() - { - m_name = "ICO resource"; - m_extension = "ico"; - m_type = wxBITMAP_TYPE_ICO_RESOURCE; - }; - - virtual bool LoadFile(wxBitmap *bitmap, const wxString& name, long flags, - int desiredWidth = -1, int desiredHeight = -1); - -}; - -*/ - -#endif - // _WX_ICON_H_ diff --git a/include/wx/mac/imaglist.h b/include/wx/mac/imaglist.h deleted file mode 100644 index 7e66ffb36a..0000000000 --- a/include/wx/mac/imaglist.h +++ /dev/null @@ -1,145 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: imaglist.h -// Purpose: wxImageList class. Note: if your GUI doesn't have -// an image list equivalent, you can use the generic class -// in src/generic. -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_IMAGLIST_H_ -#define _WX_IMAGLIST_H_ - -#ifdef __GNUG__ -#pragma interface "imaglist.h" -#endif - -#include "wx/bitmap.h" - -/* - * wxImageList is used for wxListCtrl, wxTreeCtrl. These controls refer to - * images for their items by an index into an image list. - * A wxImageList is capable of creating images with optional masks from - * a variety of sources - a single bitmap plus a colour to indicate the mask, - * two bitmaps, or an icon. - * - */ - -// Flags for Draw -#define wxIMAGELIST_DRAW_NORMAL 0x0001 -#define wxIMAGELIST_DRAW_TRANSPARENT 0x0002 -#define wxIMAGELIST_DRAW_SELECTED 0x0004 -#define wxIMAGELIST_DRAW_FOCUSED 0x0008 - -// Flag values for Set/GetImageList -enum { - wxIMAGE_LIST_NORMAL, // Normal icons - wxIMAGE_LIST_SMALL, // Small icons - wxIMAGE_LIST_STATE // State icons: unimplemented (see WIN32 documentation) -}; - -// Eventually we'll make this a reference-counted wxGDIObject. For -// now, the app must take care of ownership issues. That is, the -// image lists must be explicitly deleted after the control(s) that uses them -// is (are) deleted, or when the app exits. -class WXDLLEXPORT wxImageList: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxImageList) - public: - /* - * Public interface - */ - - wxImageList(); - - // Creates an image list. - // Specify the width and height of the images in the list, - // whether there are masks associated with them (e.g. if creating images - // from icons), and the initial size of the list. - inline wxImageList(int width, int height, bool mask = TRUE, int initialCount = 1) - { - Create(width, height, mask, initialCount); - } - ~wxImageList(); - - - // Attributes - //////////////////////////////////////////////////////////////////////////// - - // Returns the number of images in the image list. - int GetImageCount() const; - - // Operations - //////////////////////////////////////////////////////////////////////////// - - // Creates an image list - // width, height specify the size of the images in the list (all the same). - // mask specifies whether the images have masks or not. - // initialNumber is the initial number of images to reserve. - bool Create(int width, int height, bool mask = TRUE, int initialNumber = 1); - - // Adds a bitmap, and optionally a mask bitmap. - // Note that wxImageList creates *new* bitmaps, so you may delete - // 'bitmap' and 'mask' after calling Add. - int Add(const wxBitmap& bitmap, const wxBitmap& mask = wxNullBitmap); - - // Adds a bitmap, using the specified colour to create the mask bitmap - // Note that wxImageList creates *new* bitmaps, so you may delete - // 'bitmap' after calling Add. - int Add(const wxBitmap& bitmap, const wxColour& maskColour); - - // Adds a bitmap and mask from an icon. - int Add(const wxIcon& icon); - - // Replaces a bitmap, optionally passing a mask bitmap. - // Note that wxImageList creates new bitmaps, so you may delete - // 'bitmap' and 'mask' after calling Replace. - bool Replace(int index, const wxBitmap& bitmap, const wxBitmap& mask = wxNullBitmap); - -/* Not supported by Win95 - // Replacing a bitmap, using the specified colour to create the mask bitmap - // Note that wxImageList creates new bitmaps, so you may delete - // 'bitmap'. - bool Replace(int index, const wxBitmap& bitmap, const wxColour& maskColour); -*/ - - // Replaces a bitmap and mask from an icon. - // You can delete 'icon' after calling Replace. - bool Replace(int index, const wxIcon& icon); - - // Removes the image at the given index. - bool Remove(int index); - - // Remove all images - bool RemoveAll(); - - // Draws the given image on a dc at the specified position. - // If 'solidBackground' is TRUE, Draw sets the image list background - // colour to the background colour of the wxDC, to speed up - // drawing by eliminating masked drawing where possible. - bool Draw(int index, wxDC& dc, int x, int y, - int flags = wxIMAGELIST_DRAW_NORMAL, bool solidBackground = FALSE); - -/* TODO (optional?) - wxIcon *MakeIcon(int index); -*/ - -/* TODO - // Implementation - //////////////////////////////////////////////////////////////////////////// - - // Returns the native image list handle - inline WXHIMAGELIST GetHIMAGELIST() const { return m_hImageList; } - -protected: - WXHIMAGELIST m_hImageList; -*/ - -}; - -#endif - // _WX_IMAGLIST_H_ diff --git a/include/wx/mac/joystick.h b/include/wx/mac/joystick.h deleted file mode 100644 index 30324fc035..0000000000 --- a/include/wx/mac/joystick.h +++ /dev/null @@ -1,93 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: joystick.h -// Purpose: wxJoystick class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_JOYSTICK_H_ -#define _WX_JOYSTICK_H_ - -#ifdef __GNUG__ -#pragma interface "joystick.h" -#endif - -#include "wx/event.h" - -class WXDLLEXPORT wxJoystick: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxJoystick) - public: - /* - * Public interface - */ - - wxJoystick(int joystick = wxJOYSTICK1) { m_joystick = joystick; }; - - // Attributes - //////////////////////////////////////////////////////////////////////////// - - wxPoint GetPosition() const; - int GetZPosition() const; - int GetButtonState() const; - int GetPOVPosition() const; - int GetPOVCTSPosition() const; - int GetRudderPosition() const; - int GetUPosition() const; - int GetVPosition() const; - int GetMovementThreshold() const; - void SetMovementThreshold(int threshold) ; - - // Capabilities - //////////////////////////////////////////////////////////////////////////// - - bool IsOk() const; // Checks that the joystick is functioning - int GetNumberJoysticks() const ; - int GetManufacturerId() const ; - int GetProductId() const ; - wxString GetProductName() const ; - int GetXMin() const; - int GetYMin() const; - int GetZMin() const; - int GetXMax() const; - int GetYMax() const; - int GetZMax() const; - int GetNumberButtons() const; - int GetNumberAxes() const; - int GetMaxButtons() const; - int GetMaxAxes() const; - int GetPollingMin() const; - int GetPollingMax() const; - int GetRudderMin() const; - int GetRudderMax() const; - int GetUMin() const; - int GetUMax() const; - int GetVMin() const; - int GetVMax() const; - - bool HasRudder() const; - bool HasZ() const; - bool HasU() const; - bool HasV() const; - bool HasPOV() const; - bool HasPOV4Dir() const; - bool HasPOVCTS() const; - - // Operations - //////////////////////////////////////////////////////////////////////////// - - // pollingFreq = 0 means that movement events are sent when above the threshold. - // If pollingFreq > 0, events are received every this many milliseconds. - bool SetCapture(wxWindow* win, int pollingFreq = 0); - bool ReleaseCapture(); - -protected: - int m_joystick; -}; - -#endif - // _WX_JOYSTICK_H_ diff --git a/include/wx/mac/listbox.h b/include/wx/mac/listbox.h deleted file mode 100644 index d95db4379b..0000000000 --- a/include/wx/mac/listbox.h +++ /dev/null @@ -1,97 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: listbox.h -// Purpose: wxListBox class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_LISTBOX_H_ -#define _WX_LISTBOX_H_ - -#ifdef __GNUG__ -#pragma interface "listbox.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxListBoxNameStr; - -// forward decl for GetSelections() -class WXDLLEXPORT wxArrayInt; - -WXDLLEXPORT_DATA(extern const char*) wxEmptyString; - -// List box item -class WXDLLEXPORT wxListBox: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxListBox) - public: - - wxListBox(); - inline wxListBox(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = NULL, - long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxListBoxNameStr) - { - Create(parent, id, pos, size, n, choices, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = NULL, - long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxListBoxNameStr); - - ~wxListBox(); - - virtual void Append(const wxString& item); - virtual void Append(const wxString& item, char *clientData); - virtual void Set(int n, const wxString* choices, char **clientData = NULL); - virtual int FindString(const wxString& s) const ; - virtual void Clear(); - virtual void SetSelection(int n, bool select = TRUE); - - virtual void Deselect(int n); - - // For single choice list item only - virtual int GetSelection() const ; - virtual void Delete(int n); - virtual char *GetClientData(int n) const ; - virtual void SetClientData(int n, char *clientData); - virtual void SetString(int n, const wxString& s); - - // For single or multiple choice list item - virtual int GetSelections(wxArrayInt& aSelections) const; - virtual bool Selected(int n) const ; - virtual wxString GetString(int n) const ; - virtual void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - - // Set the specified item at the first visible item - // or scroll to max range. - virtual void SetFirstItem(int n) ; - virtual void SetFirstItem(const wxString& s) ; - - virtual void InsertItems(int nItems, const wxString items[], int pos); - - virtual wxString GetStringSelection() const ; - virtual bool SetStringSelection(const wxString& s, bool flag = TRUE); - virtual int Number() const ; - - void Command(wxCommandEvent& event); - - protected: - int m_noItems; - int m_selected; -}; - -#endif - // _WX_LISTBOX_H_ diff --git a/include/wx/mac/listctrl.h b/include/wx/mac/listctrl.h deleted file mode 100644 index 6dfc25df98..0000000000 --- a/include/wx/mac/listctrl.h +++ /dev/null @@ -1,451 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: listctrl.h -// Purpose: wxListCtrl class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_LISTCTRL_H_ -#define _WX_LISTCTRL_H_ - -#ifdef __GNUG__ -#pragma interface "listctrl.h" -#endif - -#include "wx/control.h" -#include "wx/event.h" -#include "wx/imaglist.h" - -/* - The wxListCtrl can show lists of items in four different modes: - wxLC_LIST: multicolumn list view, with optional small icons (icons could be - optional for some platforms). Columns are computed automatically, - i.e. you don't set columns as in wxLC_REPORT. In other words, - the list wraps, unlike a wxListBox. - wxLC_REPORT: single or multicolumn report view (with optional header) - wxLC_ICON: large icon view, with optional labels - wxLC_SMALL_ICON: small icon view, with optional labels - - You can change the style dynamically, either with SetSingleStyle or - SetWindowStyleFlag. - - Further window styles: - - wxLC_ALIGN_TOP icons align to the top (default) - wxLC_ALIGN_LEFT icons align to the left - wxLC_AUTOARRANGE icons arrange themselves - wxLC_USER_TEXT the app provides label text on demand, except for column headers - wxLC_EDIT_LABELS labels are editable: app will be notified. - wxLC_NO_HEADER no header in report mode - wxLC_NO_SORT_HEADER can't click on header - wxLC_SINGLE_SEL single selection - wxLC_SORT_ASCENDING sort ascending (must still supply a comparison callback in SortItems) - wxLC_SORT_DESCENDING sort descending (ditto) - - Items are referred to by their index (position in the list starting from zero). - - Label text is supplied via insertion/setting functions and is stored by the - control, unless the wxLC_USER_TEXT style has been specified, in which case - the app will be notified when text is required (see sample). - - Images are dealt with by (optionally) associating 3 image lists with the control. - Zero-based indexes into these image lists indicate which image is to be used for - which item. Each image in an image list can contain a mask, and can be made out - of either a bitmap, two bitmaps or an icon. See ImagList.h for more details. - - Notifications are passed via the wxWindows 2.0 event system. - - See the sample wxListCtrl app for API usage. - - */ - -// Mask flags to tell app/GUI what fields of wxListItem are valid -#define wxLIST_MASK_STATE 0x0001 -#define wxLIST_MASK_TEXT 0x0002 -#define wxLIST_MASK_IMAGE 0x0004 -#define wxLIST_MASK_DATA 0x0008 -#define wxLIST_SET_ITEM 0x0010 -#define wxLIST_MASK_WIDTH 0x0020 -#define wxLIST_MASK_FORMAT 0x0040 - -// State flags for indicating the state of an item -#define wxLIST_STATE_DONTCARE 0x0000 -#define wxLIST_STATE_DROPHILITED 0x0001 -#define wxLIST_STATE_FOCUSED 0x0002 -#define wxLIST_STATE_SELECTED 0x0004 -#define wxLIST_STATE_CUT 0x0008 - -// Hit test flags, used in HitTest -#define wxLIST_HITTEST_ABOVE 0x0001 // Above the client area. -#define wxLIST_HITTEST_BELOW 0x0002 // Below the client area. -#define wxLIST_HITTEST_NOWHERE 0x0004 // In the client area but below the last item. -#define wxLIST_HITTEST_ONITEMICON 0x0020 // On the bitmap associated with an item. -#define wxLIST_HITTEST_ONITEMLABEL 0x0080 // On the label (string) associated with an item. -#define wxLIST_HITTEST_ONITEMRIGHT 0x0100 // In the area to the right of an item. -#define wxLIST_HITTEST_ONITEMSTATEICON 0x0200 // On the state icon for a tree view item that is in a user-defined state. -#define wxLIST_HITTEST_TOLEFT 0x0400 // To the left of the client area. -#define wxLIST_HITTEST_TORIGHT 0x0800 // To the right of the client area. - -#define wxLIST_HITTEST_ONITEM (wxLIST_HITTEST_ONITEMICON | wxLIST_HITTEST_ONITEMLABEL wxLIST_HITTEST_ONITEMSTATEICON) - -// Flags for GetNextItem -enum { - wxLIST_NEXT_ABOVE, // Searches for an item above the specified item - wxLIST_NEXT_ALL, // Searches for subsequent item by index - wxLIST_NEXT_BELOW, // Searches for an item below the specified item - wxLIST_NEXT_LEFT, // Searches for an item to the left of the specified item - wxLIST_NEXT_RIGHT, // Searches for an item to the right of the specified item -}; - -// Alignment flags for Arrange -enum { - wxLIST_ALIGN_DEFAULT, - wxLIST_ALIGN_LEFT, - wxLIST_ALIGN_TOP, - wxLIST_ALIGN_SNAP_TO_GRID -}; - -// Column format -enum { - wxLIST_FORMAT_LEFT, - wxLIST_FORMAT_RIGHT, - wxLIST_FORMAT_CENTRE, - wxLIST_FORMAT_CENTER = wxLIST_FORMAT_CENTRE -}; - -// Autosize values for SetColumnWidth -enum { - wxLIST_AUTOSIZE = -1, - wxLIST_AUTOSIZE_USEHEADER = -2 -}; - -// Flag values for GetItemRect -enum { - wxLIST_RECT_BOUNDS, - wxLIST_RECT_ICON, - wxLIST_RECT_LABEL -}; - -// Flag values for FindItem -enum { - wxLIST_FIND_UP, - wxLIST_FIND_DOWN, - wxLIST_FIND_LEFT, - wxLIST_FIND_RIGHT -}; - -// wxListItem: data representing an item, or report field. -// It also doubles up to represent entire column information -// when inserting or setting a column. -class WXDLLEXPORT wxListItem: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxListItem) -public: - long m_mask; // Indicates what fields are valid - long m_itemId; // The zero-based item position - int m_col; // Zero-based column, if in report mode - long m_state; // The state of the item - long m_stateMask; // Which flags of m_state are valid (uses same flags) - wxString m_text; // The label/header text - int m_image; // The zero-based index into an image list - long m_data; // App-defined data - - // For columns only - int m_format; // left, right, centre - int m_width; // width of column - - wxListItem(); -}; - -// type of compare function for wxListCtrl sort operation -typedef int (*wxListCtrlCompare)(long item1, long item2, long sortData); - -class WXDLLEXPORT wxListCtrl: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxListCtrl) - public: - /* - * Public interface - */ - - wxListCtrl(); - - inline wxListCtrl(wxWindow *parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxLC_ICON, const wxValidator& validator = wxDefaultValidator, - const wxString& name = "listCtrl") - { - Create(parent, id, pos, size, style, validator, name); - } - ~wxListCtrl(); - - bool Create(wxWindow *parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxLC_ICON, const wxValidator& validator = wxDefaultValidator, const wxString& name = "wxListCtrl"); - - - // Attributes - //////////////////////////////////////////////////////////////////////////// - - // Gets information about this column - bool GetColumn(int col, wxListItem& item) const; - - // Sets information about this column - bool SetColumn(int col, wxListItem& item) ; - - // Gets the column width - int GetColumnWidth(int col) const; - - // Sets the column width - bool SetColumnWidth(int col, int width) ; - - // 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) - int GetCountPerPage() const; - - // Gets the edit control for editing labels. - wxTextCtrl* GetEditControl() const; - - // Gets information about the item - bool GetItem(wxListItem& info) const ; - - // Sets information about the item - bool SetItem(wxListItem& info) ; - - // Sets a string field at a particular column - long SetItem(long index, int col, const wxString& label, int imageId = -1); - - // Gets the item state - int GetItemState(long item, long stateMask) const ; - - // Sets the item state - bool SetItemState(long item, long state, long stateMask) ; - - // Sets the item image - bool SetItemImage(long item, int image, int selImage) ; - - // Gets the item text - wxString GetItemText(long item) const ; - - // Sets the item text - void SetItemText(long item, const wxString& str) ; - - // Gets the item data - long GetItemData(long item) const ; - - // Sets the item data - bool SetItemData(long item, long data) ; - - // Gets the item rectangle - bool GetItemRect(long item, wxRect& rect, int code = wxLIST_RECT_BOUNDS) const ; - - // Gets the item position - bool GetItemPosition(long item, wxPoint& pos) const ; - - // Sets the item position - bool SetItemPosition(long item, const wxPoint& pos) ; - - // Gets the number of items in the list control - int GetItemCount() const; - - // Gets the number of columns in the list control - int GetColumnCount() const; - - // Retrieves the spacing between icons in pixels. - // If small is TRUE, gets the spacing for the small icon - // view, otherwise the large icon view. - int GetItemSpacing(bool isSmall) const; - - // Gets the number of selected items in the list control - int GetSelectedItemCount() const; - - // Gets the text colour of the listview - wxColour GetTextColour() const; - - // Sets the text colour of the listview - void SetTextColour(const wxColour& col); - - // Gets the index of the topmost visible item when in - // list or report view - long GetTopItem() const ; - - // Add or remove a single window style - void SetSingleStyle(long style, bool add = TRUE) ; - - // Set the whole window style - void SetWindowStyleFlag(long style) ; - - // Searches for an item, starting from 'item'. - // item can be -1 to find the first item that matches the - // specified flags. - // Returns the item or -1 if unsuccessful. - long GetNextItem(long item, int geometry = wxLIST_NEXT_ALL, int state = wxLIST_STATE_DONTCARE) const ; - - // Implementation: converts wxWindows style to MSW style. - // Can be a single style flag or a bit list. - // oldStyle is 'normalised' so that it doesn't contain - // conflicting styles. - long ConvertToMSWStyle(long& oldStyle, long style) const; - - // Gets one of the three image lists - wxImageList *GetImageList(int which) const ; - - // Sets the image list - // N.B. There's a quirk in the Win95 list view implementation. - // If in wxLC_LIST mode, it'll *still* display images by the labels if - // there's a small-icon image list set for the control - even though you - // haven't specified wxLIST_MASK_IMAGE when inserting. - // So you have to set a NULL small-icon image list to be sure that - // the wxLC_LIST mode works without icons. Of course, you may want icons... - void SetImageList(wxImageList *imageList, int which) ; - - // Operations - //////////////////////////////////////////////////////////////////////////// - - // Arranges the items - bool Arrange(int flag = wxLIST_ALIGN_DEFAULT); - - // Deletes an item - bool DeleteItem(long item); - - // Deletes all items - bool DeleteAllItems() ; - - // Deletes a column - bool DeleteColumn(int col); - - // Deletes all columns - bool DeleteAllColumns(); - - // Clears items, and columns if there are any. - void ClearAll(); - - // Edit the label - wxTextCtrl* EditLabel(long item, wxClassInfo* textControlClass = CLASSINFO(wxTextCtrl)); - - // End label editing, optionally cancelling the edit - bool EndEditLabel(bool cancel); - - // Ensures this item is visible - bool EnsureVisible(long item) ; - - // Find an item whose label matches this string, starting from the item after 'start' - // or the beginning if 'start' is -1. - long FindItem(long start, const wxString& str, bool partial = FALSE); - - // Find an item whose data matches this data, starting from the item after 'start' - // or the beginning if 'start' is -1. - long FindItem(long start, long data); - - // Find an item nearest this position in the specified direction, starting from - // the item after 'start' or the beginning if 'start' is -1. - long FindItem(long start, const wxPoint& pt, int direction); - - // Determines which item (if any) is at the specified point, - // giving details in 'flags' (see wxLIST_HITTEST_... flags above) - long HitTest(const wxPoint& point, int& flags); - - // Inserts an item, returning the index of the new item if successful, - // -1 otherwise. - // TOD: Should also have some further convenience functions - // which don't require setting a wxListItem object - long InsertItem(wxListItem& info); - - // Insert a string item - long InsertItem(long index, const wxString& label); - - // Insert an image item - long InsertItem(long index, int imageIndex); - - // Insert an image/string item - long InsertItem(long index, const wxString& label, int imageIndex); - - // For list view mode (only), inserts a column. - long InsertColumn(long col, wxListItem& info); - - long InsertColumn(long col, const wxString& heading, int format = wxLIST_FORMAT_LEFT, - int width = -1); - - // Scrolls the list control. If in icon, small icon or report view mode, - // x specifies the number of pixels to scroll. If in list view mode, x - // specifies the number of columns to scroll. - // If in icon, small icon or list view mode, y specifies the number of pixels - // to scroll. If in report view mode, y specifies the number of lines to scroll. - bool ScrollList(int dx, int dy); - - // Sort items. - - // 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. - bool SortItems(wxListCtrlCompare fn, long data); - -/* Why should we need this function? Leave for now. - * We might need it because item data may have changed, - * but the display needs refreshing (in string callback mode) - // Updates an item. If the list control has the wxLI_AUTO_ARRANGE style, - // the items will be rearranged. - bool Update(long item); -*/ - - void Command(wxCommandEvent& event) { ProcessCommand(event); }; - -protected: - wxTextCtrl* m_textCtrl; // The control used for editing a label - wxImageList * m_imageListNormal; // The image list for normal icons - wxImageList * m_imageListSmall; // The image list for small icons - wxImageList * m_imageListState; // The image list state icons (not implemented yet) - - long m_baseStyle; // Basic Windows style flags, for recreation purposes - wxStringList m_stringPool; // Pool of 3 strings to satisfy Windows callback - // requirements - int m_colCount; // Windows doesn't have GetColumnCount so must - // keep track of inserted/deleted columns - -}; - -class WXDLLEXPORT wxListEvent: public wxCommandEvent -{ - DECLARE_DYNAMIC_CLASS(wxListEvent) - - public: - wxListEvent(wxEventType commandType = wxEVT_NULL, int id = 0); - - int m_code; - long m_itemIndex; - long m_oldItemIndex; - int m_col; - bool m_cancelled; - wxPoint m_pointDrag; - - wxListItem m_item; -}; - -typedef void (wxEvtHandler::*wxListEventFunction)(wxListEvent&); - -#define EVT_LIST_BEGIN_DRAG(id, fn) { wxEVT_COMMAND_LIST_BEGIN_DRAG, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL }, -#define EVT_LIST_BEGIN_RDRAG(id, fn) { wxEVT_COMMAND_LIST_BEGIN_RDRAG, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL }, -#define EVT_LIST_BEGIN_LABEL_EDIT(id, fn) { wxEVT_COMMAND_LIST_BEGIN_LABEL_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL }, -#define EVT_LIST_END_LABEL_EDIT(id, fn) { wxEVT_COMMAND_LIST_END_LABEL_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL }, -#define EVT_LIST_DELETE_ITEM(id, fn) { wxEVT_COMMAND_LIST_DELETE_ITEM, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL }, -#define EVT_LIST_DELETE_ALL_ITEMS(id, fn) { wxEVT_COMMAND_LIST_DELETE_ALL_ITEMS, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL }, -#define EVT_LIST_GET_INFO(id, fn) { wxEVT_COMMAND_LIST_GET_INFO, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL }, -#define EVT_LIST_SET_INFO(id, fn) { wxEVT_COMMAND_LIST_SET_INFO, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL }, -#define EVT_LIST_ITEM_SELECTED(id, fn) { wxEVT_COMMAND_LIST_ITEM_SELECTED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL }, -#define EVT_LIST_ITEM_DESELECTED(id, fn) { wxEVT_COMMAND_LIST_ITEM_DESELECTED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL }, -#define EVT_LIST_KEY_DOWN(id, fn) { wxEVT_COMMAND_LIST_KEY_DOWN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL }, -#define EVT_LIST_INSERT_ITEM(id, fn) { wxEVT_COMMAND_LIST_INSERT_ITEM, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL }, -#define EVT_LIST_COL_CLICK(id, fn) { wxEVT_COMMAND_LIST_COL_CLICK, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL }, - -#endif - // _WX_LISTCTRL_H_ diff --git a/include/wx/mac/macsock.h b/include/wx/mac/macsock.h deleted file mode 100644 index 6866a2eeff..0000000000 --- a/include/wx/mac/macsock.h +++ /dev/null @@ -1,1059 +0,0 @@ -/********************************************************************* -Project : GUSI - Grand Unified Socket Interface -File : GUSI.h - Socket calls -Author : Matthias Neeracher -Language : MPW C/C++ -*********************************************************************/ - -#ifndef _GUSI_ -#define _GUSI_ - -#ifdef __MWERKS__ - #ifndef macintosh - #define macintosh 1 - #endif -#endif - -#ifdef macintosh -#include -#else -#ifndef KERNEL -extern int errno; /* global error number */ -#endif -#endif - -#define __P(protos) protos /* full-blown ANSI C */ - -#define EPERM 1 /* Operation not permitted */ -/* MSL defines ENOMEM, EACCES, ENOENT, ENOSYS. We give in. */ -#ifndef ENOENT -#define ENOENT 2 /* No such file or directory */ -#endif -#define ESRCH 3 /* No such process */ -#define EINTR 4 /* Interrupted system call */ -#define EIO 5 /* Input/output error */ -#define ENXIO 6 /* Device not configured */ -#define E2BIG 7 /* Argument list too long */ -#define ENOEXEC 8 /* Exec format error */ -#define EBADF 9 /* Bad file descriptor */ -#define ECHILD 10 /* No child processes */ -#define EDEADLK 11 /* Resource deadlock avoided */ - /* 11 was EAGAIN */ -#ifndef ENOMEM -#define ENOMEM 12 /* Cannot allocate memory */ -#define EACCES 13 /* Permission denied */ -#endif -#define EFAULT 14 /* Bad address */ -#ifndef _POSIX_SOURCE -#define ENOTBLK 15 /* Block device required */ -#define EBUSY 16 /* Device busy */ -#endif -#define EEXIST 17 /* File exists */ -#define EXDEV 18 /* Cross-device link */ -#define ENODEV 19 /* Operation not supported by device */ -#define ENOTDIR 20 /* Not a directory */ -#define EISDIR 21 /* Is a directory */ -#define EINVAL 22 /* Invalid argument */ -#define ENFILE 23 /* Too many open files in system */ -#define EMFILE 24 /* Too many open files */ -#define ENOTTY 25 /* Inappropriate ioctl for device */ -#ifndef _POSIX_SOURCE -#define ETXTBSY 26 /* Text file busy */ -#endif -#define EFBIG 27 /* File too large */ -#define ENOSPC 28 /* No space left on device */ -#define ESPIPE 29 /* Illegal seek */ -#define EROFS 30 /* Read-only file system */ -#define EMLINK 31 /* Too many links */ -#define EPIPE 32 /* Broken pipe */ - -#ifndef __MWERKS__ -/* math software */ -#define EDOM 33 /* Numerical argument out of domain */ -#define ERANGE 34 /* Result too large */ -#endif - -/* non-blocking and interrupt i/o */ -#if defined(macintosh) -#ifndef EAGAIN -#define EAGAIN 11 -#endif -#else -#define EAGAIN 35 /* Resource temporarily unavailable */ -#endif -#define EWOULDBLOCK EAGAIN /* Operation would block */ -#ifndef _POSIX_SOURCE -/* Did I tell that MSL also occupies errnos 33-40? We give in. */ -#if ENOMEM==37 -#define EINPROGRESS 136 /* Operation now in progress */ -#define EALREADY 137 /* Operation already in progress */ - -/* ipc/network software -- argument errors */ -#define ENOTSOCK 138 /* Socket operation on non-socket */ -#define EDESTADDRREQ 139 /* Destination address required */ -#define EMSGSIZE 140 /* Message too long */ -#else -#define EINPROGRESS 36 /* Operation now in progress */ -#define EALREADY 37 /* Operation already in progress */ - -/* ipc/network software -- argument errors */ -#define ENOTSOCK 38 /* Socket operation on non-socket */ -#define EDESTADDRREQ 39 /* Destination address required */ -#define EMSGSIZE 40 /* Message too long */ -#endif -#define EPROTOTYPE 41 /* Protocol wrong type for socket */ -#define ENOPROTOOPT 42 /* Protocol not available */ -#define EPROTONOSUPPORT 43 /* Protocol not supported */ -#define ESOCKTNOSUPPORT 44 /* Socket type not supported */ -#define EOPNOTSUPP 45 /* Operation not supported on socket */ -#define EPFNOSUPPORT 46 /* Protocol family not supported */ -#define EAFNOSUPPORT 47 /* Address family not supported by protocol family */ -#define EADDRINUSE 48 /* Address already in use */ -#define EADDRNOTAVAIL 49 /* Can't assign requested address */ - -/* ipc/network software -- operational errors */ -#define ENETDOWN 50 /* Network is down */ -#define ENETUNREACH 51 /* Network is unreachable */ -#define ENETRESET 52 /* Network dropped connection on reset */ -#define ECONNABORTED 53 /* Software caused connection abort */ -#define ECONNRESET 54 /* Connection reset by peer */ -#define ENOBUFS 55 /* No buffer space available */ -#define EISCONN 56 /* Socket is already connected */ -#define ENOTCONN 57 /* Socket is not connected */ -#define ESHUTDOWN 58 /* Can't send after socket shutdown */ -#define ETOOMANYREFS 59 /* Too many references: can't splice */ -#define ETIMEDOUT 60 /* Connection timed out */ -#define ECONNREFUSED 61 /* Connection refused */ - -#define ELOOP 62 /* Too many levels of symbolic links */ -#endif /* _POSIX_SOURCE */ -#define ENAMETOOLONG 63 /* File name too long */ - -/* should be rearranged */ -#ifndef _POSIX_SOURCE -#define EHOSTDOWN 64 /* Host is down */ -#define EHOSTUNREACH 65 /* No route to host */ -#endif /* _POSIX_SOURCE */ -#define ENOTEMPTY 66 /* Directory not empty */ - -/* quotas & mush */ -#ifndef _POSIX_SOURCE -#define EPROCLIM 67 /* Too many processes */ -#define EUSERS 68 /* Too many users */ -#define EDQUOT 69 /* Disc quota exceeded */ - -/* Network File System */ -#define ESTALE 70 /* Stale NFS file handle */ -#define EREMOTE 71 /* Too many levels of remote in path */ -#define EBADRPC 72 /* RPC struct is bad */ -#define ERPCMISMATCH 73 /* RPC version wrong */ -#define EPROGUNAVAIL 74 /* RPC prog. not avail */ -#define EPROGMISMATCH 75 /* Program version wrong */ -#define EPROCUNAVAIL 76 /* Bad procedure for program */ -#endif /* _POSIX_SOURCE */ - -#define ENOLCK 77 /* No locks available */ - -#ifndef ENOSYS -#define ENOSYS 78 /* Function not implemented */ -#endif - -#define EFTYPE 79 /* Inappropriate file type or format */ - -#ifdef KERNEL -/* pseudo-errors returned inside kernel to modify return to process */ -#define ERESTART -1 /* restart syscall */ -#define EJUSTRETURN -2 /* don't modify regs, just return */ -#endif - -#define NBBY 8 /* number of bits in a byte */ - -/* - * Select uses bit masks of file descriptors in longs. These macros - * manipulate such bit fields (the filesystem macros use chars). - * FD_SETSIZE may be defined by the user, but the default here should - * be enough for most uses. - */ -#ifndef FD_SETSIZE -#ifdef macintosh -#define FD_SETSIZE 64 -#else -#define FD_SETSIZE 256 -#endif -#endif - -typedef long fd_mask; -#define NFDBITS (sizeof(fd_mask) * NBBY) /* bits per mask */ - -#ifndef howmany -#define howmany(x, y) (((x)+((y)-1))/(y)) -#endif - -typedef struct fd_set { - fd_mask fds_bits[howmany(FD_SETSIZE, NFDBITS)]; -} fd_set; - -#define FD_SET(n, p) ((p)->fds_bits[(n)/NFDBITS] |= (1 << ((n) % NFDBITS))) -#define FD_CLR(n, p) ((p)->fds_bits[(n)/NFDBITS] &= ~(1 << ((n) % NFDBITS))) -#define FD_ISSET(n, p) ((p)->fds_bits[(n)/NFDBITS] & (1 << ((n) % NFDBITS))) -#define FD_ZERO(p) bzero((char *)(p), sizeof(*(p))) - -// #include -typedef unsigned char u_char; -typedef unsigned short u_short; -typedef unsigned int u_int; -typedef unsigned long u_long; -typedef unsigned short ushort; /* Sys V compatibility */ - -typedef char * caddr_t; /* core address */ -typedef long daddr_t; /* disk address */ -typedef short dev_t; /* device number */ -typedef u_long ino_t; /* inode number */ -typedef long off_t; /* file offset (should be a quad) */ -typedef u_short nlink_t; /* link count */ -typedef long swblk_t; /* swap offset */ -typedef long segsz_t; /* segment size */ -typedef u_short uid_t; /* user id */ -typedef u_short gid_t; /* group id */ -typedef short pid_t; /* process id */ -typedef u_short mode_t; /* permissions */ -typedef u_long fixpt_t; /* fixed point number */ - - -// Feel free to increase FD_SETSIZE as needed -#define GUSI_MAX_FD FD_SETSIZE - -//#include - -#ifndef macintosh -#ifdef __MWERKS__ -#define macintosh 1 -#endif -#endif - -#if defined(__cplusplus) -#define __BEGIN_DECLS extern "C" { -#define __END_DECLS } -#else -#define __BEGIN_DECLS -#define __END_DECLS -#endif - -//#include -//#include -#define IOCPARM_MASK 0x1fff /* parameter length, at most 13 bits */ -#define IOCPARM_LEN(x) (((x) >> 16) & IOCPARM_MASK) -#define IOCBASECMD(x) ((x) & ~IOCPARM_MASK) -#define IOCGROUP(x) (((x) >> 8) & 0xff) - -#define IOCPARM_MAX NBPG /* max size of ioctl, mult. of NBPG */ -#define IOC_VOID 0x20000000 /* no parameters */ -#define IOC_OUT 0x40000000 /* copy out parameters */ -#define IOC_IN 0x80000000 /* copy in parameters */ -#define IOC_INOUT (IOC_IN|IOC_OUT) -#define IOC_DIRMASK 0xe0000000 /* mask for IN/OUT/VOID */ - -#define _IOC(inout,group,num,len) \ - (inout | ((len & IOCPARM_MASK) << 16) | ((group) << 8) | (num)) -#define _IO(g,n) _IOC(IOC_VOID, (g), (n), 0) -#define _IOR(g,n,t) _IOC(IOC_OUT, (g), (n), sizeof(t)) -#define _IOW(g,n,t) _IOC(IOC_IN, (g), (n), sizeof(t)) -/* this should be _IORW, but stdio got there first */ -#define _IOWR(g,n,t) _IOC(IOC_INOUT, (g), (n), sizeof(t)) - -#define FIOCLEX _IO('f', 1) /* set close on exec on fd */ -#define FIONCLEX _IO('f', 2) /* remove close on exec */ -#define FIONREAD _IOR('f', 127, int) /* get # bytes to read */ -#define FIONBIO _IOW('f', 126, int) /* set/clear non-blocking i/o */ -#define FIOASYNC _IOW('f', 125, int) /* set/clear async i/o */ -#define FIOSETOWN _IOW('f', 124, int) /* set owner */ -#define FIOGETOWN _IOR('f', 123, int) /* get owner */ - -__BEGIN_DECLS -#ifdef macintosh -int ioctl(int fildes, unsigned int cmd, unsigned long *arg); -#else -int ioctl __P((int, unsigned long, ...)); -#endif -__END_DECLS - -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include - - -/* - * Definitions for byte order, according to byte significance from low - * address to high. - */ -#define LITTLE_ENDIAN 1234 /* LSB first: i386, vax */ -#define BIG_ENDIAN 4321 /* MSB first: 68000, ibm, net */ -#define PDP_ENDIAN 3412 /* LSB first in word, MSW first in long */ - -#define BYTE_ORDER BIG_ENDIAN - -__BEGIN_DECLS -unsigned long htonl (unsigned long); -unsigned short htons (unsigned short); -unsigned long ntohl (unsigned long); -unsigned short ntohs (unsigned short); -__END_DECLS - -/* - * Macros for network/external number representation conversion. - */ -#if BYTE_ORDER == BIG_ENDIAN && !defined(lint) -#define ntohl(x) (x) -#define ntohs(x) (x) -#define htonl(x) (x) -#define htons(x) (x) - -#define NTOHL(x) (x) -#define NTOHS(x) (x) -#define HTONL(x) (x) -#define HTONS(x) (x) - -#else - -#define NTOHL(x) (x) = ntohl((u_long)x) -#define NTOHS(x) (x) = ntohs((u_short)x) -#define HTONL(x) (x) = htonl((u_long)x) -#define HTONS(x) (x) = htons((u_short)x) -#endif - - - -/* - * Constants and structures defined by the internet system, - * Per RFC 790, September 1981. - */ - -/* - * Protocols - */ -#define IPPROTO_IP 0 /* dummy for IP */ -#define IPPROTO_ICMP 1 /* control message protocol */ -#define IPPROTO_GGP 3 /* gateway^2 (deprecated) */ -#define IPPROTO_TCP 6 /* tcp */ -#define IPPROTO_EGP 8 /* exterior gateway protocol */ -#define IPPROTO_PUP 12 /* pup */ -#define IPPROTO_UDP 17 /* user datagram protocol */ -#define IPPROTO_IDP 22 /* xns idp */ -#define IPPROTO_TP 29 /* tp-4 w/ class negotiation */ -#define IPPROTO_EON 80 /* ISO cnlp */ - -#define IPPROTO_RAW 255 /* raw IP packet */ -#define IPPROTO_MAX 256 - - -/* - * Local port number conventions: - * Ports < IPPORT_RESERVED are reserved for - * privileged processes (e.g. root). - * Ports > IPPORT_USERRESERVED are reserved - * for servers, not necessarily privileged. - */ -#define IPPORT_RESERVED 1024 -#define IPPORT_USERRESERVED 5000 - -/* - * Internet address (a structure for historical reasons) - */ -struct in_addr { - u_long s_addr; -}; - -/* - * Definitions of bits in internet address integers. - * On subnets, the decomposition of addresses to host and net parts - * is done according to subnet mask, not the masks here. - */ -#define IN_CLASSA(i) (((long)(i) & 0x80000000) == 0) -#define IN_CLASSA_NET 0xff000000 -#define IN_CLASSA_NSHIFT 24 -#define IN_CLASSA_HOST 0x00ffffff -#define IN_CLASSA_MAX 128 - -#define IN_CLASSB(i) (((long)(i) & 0xc0000000) == 0x80000000) -#define IN_CLASSB_NET 0xffff0000 -#define IN_CLASSB_NSHIFT 16 -#define IN_CLASSB_HOST 0x0000ffff -#define IN_CLASSB_MAX 65536 - -#define IN_CLASSC(i) (((long)(i) & 0xe0000000) == 0xc0000000) -#define IN_CLASSC_NET 0xffffff00 -#define IN_CLASSC_NSHIFT 8 -#define IN_CLASSC_HOST 0x000000ff - -#define IN_CLASSD(i) (((long)(i) & 0xf0000000) == 0xe0000000) -#define IN_MULTICAST(i) IN_CLASSD(i) - -#define IN_EXPERIMENTAL(i) (((long)(i) & 0xe0000000) == 0xe0000000) -#define IN_BADCLASS(i) (((long)(i) & 0xf0000000) == 0xf0000000) - -#define INADDR_ANY (u_long)0x00000000 -#define INADDR_BROADCAST (u_long)0xffffffff /* must be masked */ -#ifndef KERNEL -#define INADDR_NONE 0xffffffff /* -1 return */ -#endif - -#define IN_LOOPBACKNET 127 /* official! */ - -/* - * Socket address, internet style. - */ -struct sockaddr_in { - u_char sin_len; - u_char sin_family; - u_short sin_port; - struct in_addr sin_addr; - char sin_zero[8]; -}; - -/* - * Structure used to describe IP options. - * Used to store options internally, to pass them to a process, - * or to restore options retrieved earlier. - * The ip_dst is used for the first-hop gateway when using a source route - * (this gets put into the header proper). - */ -#ifdef __MWERKS__ -#pragma cplusplus off -#endif -struct ip_opts { - struct in_addr ip_dst; /* first hop, 0 w/o src rt */ - char ip_opts[40]; /* actually variable in size */ -}; -#ifdef __MWERKS__ -#pragma cplusplus reset -#endif - -/* - * Options for use with [gs]etsockopt at the IP level. - * First word of comment is data type; bool is stored in int. - */ -#define IP_OPTIONS 1 /* buf/ip_opts; set/get IP per-packet options */ -#define IP_HDRINCL 2 /* int; header is included with data (raw) */ -#define IP_TOS 3 /* int; IP type of service and precedence */ -#define IP_TTL 4 /* int; IP time to live */ -#define IP_RECVOPTS 5 /* bool; receive all IP options w/datagram */ -#define IP_RECVRETOPTS 6 /* bool; receive IP options for response */ -#define IP_RECVDSTADDR 7 /* bool; receive IP dst addr w/datagram */ -#define IP_RETOPTS 8 /* ip_opts; set/get IP per-packet options */ - -/* - * Structure returned by gettimeofday(2) system call, - * and used in other calls. - */ -struct timeval { - long tv_sec; /* seconds */ - long tv_usec; /* and microseconds */ -}; - -struct timezone { - int tz_minuteswest; /* minutes west of Greenwich */ - int tz_dsttime; /* type of dst correction */ -}; -#define DST_NONE 0 /* not on dst */ -#define DST_USA 1 /* USA style dst */ -#define DST_AUST 2 /* Australian style dst */ -#define DST_WET 3 /* Western European dst */ -#define DST_MET 4 /* Middle European dst */ -#define DST_EET 5 /* Eastern European dst */ -#define DST_CAN 6 /* Canada */ -//#include - -/* - * Definitions related to sockets: types, address families, options. - */ - -/* - * Types - */ -#define SOCK_STREAM 1 /* stream socket */ -#define SOCK_DGRAM 2 /* datagram socket */ -#define SOCK_RAW 3 /* raw-protocol interface */ -#define SOCK_RDM 4 /* reliably-delivered message */ -#define SOCK_SEQPACKET 5 /* sequenced packet stream */ - -/* - * Option flags per-socket. - */ -#define SO_DEBUG 0x0001 /* turn on debugging info recording */ -#define SO_ACCEPTCONN 0x0002 /* socket has had listen() */ -#define SO_REUSEADDR 0x0004 /* allow local address reuse */ -#define SO_KEEPALIVE 0x0008 /* keep connections alive */ -#define SO_DONTROUTE 0x0010 /* just use interface addresses */ -#define SO_BROADCAST 0x0020 /* permit sending of broadcast msgs */ -#define SO_USELOOPBACK 0x0040 /* bypass hardware when possible */ -#define SO_LINGER 0x0080 /* linger on close if data present */ -#define SO_OOBINLINE 0x0100 /* leave received OOB data in line */ - -/* - * Additional options, not kept in so_options. - */ -#define SO_SNDBUF 0x1001 /* send buffer size */ -#define SO_RCVBUF 0x1002 /* receive buffer size */ -#define SO_SNDLOWAT 0x1003 /* send low-water mark */ -#define SO_RCVLOWAT 0x1004 /* receive low-water mark */ -#define SO_SNDTIMEO 0x1005 /* send timeout */ -#define SO_RCVTIMEO 0x1006 /* receive timeout */ -#define SO_ERROR 0x1007 /* get error status and clear */ -#define SO_TYPE 0x1008 /* get socket type */ - -/* - * Structure used for manipulating linger option. - */ -struct linger { - int l_onoff; /* option on/off */ - int l_linger; /* linger time */ -}; - -/* - * Level number for (get/set)sockopt() to apply to socket itself. - */ -#define SOL_SOCKET 0xffff /* options for socket level */ - -/* - * Address families. - */ -#ifdef macintosh -#define AF_UNSPEC 0 /* unspecified */ -#define AF_UNIX 1 /* local to host (pipes, portals) */ -#define AF_INET 2 /* internetwork: UDP, TCP, etc. */ -#define AF_CTB 3 /* Apple Comm Toolbox (not yet supported) */ -#define AF_FILE 4 /* Normal File I/O (used internally) */ -#define AF_PPC 5 /* PPC Toolbox */ -#define AF_PAP 6 /* Printer Access Protocol (client only) */ -#define AF_APPLETALK 16 /* Apple Talk */ - -#define AF_MAX 20 -#else -#define ATALK_SYMADDR 272 /* Symbolic Address for AppleTalk */ -#define AF_UNSPEC 0 /* unspecified */ -#define AF_UNIX 1 /* local to host (pipes, portals) */ -#define AF_INET 2 /* internetwork: UDP, TCP, etc. */ -#define AF_IMPLINK 3 /* arpanet imp addresses */ -#define AF_PUP 4 /* pup protocols: e.g. BSP */ -#define AF_CHAOS 5 /* mit CHAOS protocols */ -#define AF_NS 6 /* XEROX NS protocols */ -#define AF_ISO 7 /* ISO protocols */ -#define AF_OSI AF_ISO -#define AF_ECMA 8 /* european computer manufacturers */ -#define AF_DATAKIT 9 /* datakit protocols */ -#define AF_CCITT 10 /* CCITT protocols, X.25 etc */ -#define AF_SNA 11 /* IBM SNA */ -#define AF_DECnet 12 /* DECnet */ -#define AF_DLI 13 /* DEC Direct data link interface */ -#define AF_LAT 14 /* LAT */ -#define AF_HYLINK 15 /* NSC Hyperchannel */ -#define AF_APPLETALK16 /* Apple Talk */ -#define AF_ROUTE 17 /* Internal Routing Protocol */ -#define AF_LINK 18 /* Link layer interface */ -#define pseudo_AF_XTP 19 /* eXpress Transfer Protocol (no AF) */ - -#define AF_MAX 20 -#endif - -/* - * Structure used by kernel to store most - * addresses. - */ -#if defined(powerc) || defined (__powerc) -#pragma options align=mac68k -#endif -struct sockaddr { - u_char sa_len; /* total length */ - u_char sa_family; /* address family */ - char sa_data[14]; /* actually longer; address value */ -}; -#if defined(powerc) || defined (__powerc) -#pragma options align=reset -#endif - -/* - * Structure used by kernel to pass protocol - * information in raw sockets. - */ -struct sockproto { - u_short sp_family; /* address family */ - u_short sp_protocol; /* protocol */ -}; - -/* - * Protocol families, same as address families for now. - */ -#ifdef macintosh -#define PF_UNSPEC AF_UNSPEC /* unspecified */ -#define PF_UNIX AF_UNIX /* local to host (pipes, portals) */ -#define PF_INET AF_INET /* internetwork: UDP, TCP, etc. */ -#define PF_CTB AF_CTB /* Apple Comm Toolbox (not yet supported) */ -#define PF_FILE AF_FILE /* Normal File I/O (used internally) */ -#define PF_PPC AF_PPC /* PPC Toolbox */ -#define PF_PAP AF_PAP /* Printer Access Protocol (client only) */ -#define PF_APPLETALK AF_APPLETALK /* Apple Talk */ -#else -#define PF_UNSPEC AF_UNSPEC -#define PF_UNIX AF_UNIX -#define PF_INET AF_INET -#define PF_IMPLINK AF_IMPLINK -#define PF_PUP AF_PUP -#define PF_CHAOS AF_CHAOS -#define PF_NS AF_NS -#define PF_ISO AF_ISO -#define PF_OSI AF_ISO -#define PF_ECMA AF_ECMA -#define PF_DATAKIT AF_DATAKIT -#define PF_CCITT AF_CCITT -#define PF_SNA AF_SNA -#define PF_DECnet AF_DECnet -#define PF_DLI AF_DLI -#define PF_LAT AF_LAT -#define PF_HYLINK AF_HYLINK -#define PF_APPLETALK AF_APPLETALK -#define PF_ROUTE AF_ROUTE -#define PF_LINK AF_LINK -#define PF_XTP pseudo_AF_XTP /* really just proto family, no AF */ -#endif - -#define PF_MAX AF_MAX - -/* - * Maximum queue length specifiable by listen. - */ -#define SOMAXCONN 5 - -/* - * Message header for recvmsg and sendmsg calls. - * Used value-result for recvmsg, value only for sendmsg. - */ -struct msghdr { - caddr_t msg_name; /* optional address */ - u_int msg_namelen; /* size of address */ - struct iovec *msg_iov; /* scatter/gather array */ - u_int msg_iovlen; /* # elements in msg_iov */ - caddr_t msg_control; /* ancillary data, see below */ - u_int msg_controllen; /* ancillary data buffer len */ - int msg_flags; /* flags on received message */ -}; - -#define MSG_OOB 0x1 /* process out-of-band data */ -#define MSG_PEEK 0x2 /* peek at incoming message */ -#define MSG_DONTROUTE 0x4 /* send without using routing tables */ -#define MSG_EOR 0x8 /* data completes record */ -#define MSG_TRUNC 0x10 /* data discarded before delivery */ -#define MSG_CTRUNC 0x20 /* control data lost before delivery */ -#define MSG_WAITALL 0x40 /* wait for full request or error */ - -/* - * Header for ancillary data objects in msg_control buffer. - * Used for additional information with/about a datagram - * not expressible by flags. The format is a sequence - * of message elements headed by cmsghdr structures. - */ -struct cmsghdr { - u_int cmsg_len; /* data byte count, including hdr */ - int cmsg_level; /* originating protocol */ - int cmsg_type; /* protocol-specific type */ -/* followed by u_char cmsg_data[]; */ -}; - -/* given pointer to struct adatahdr, return pointer to data */ -#define CMSG_DATA(cmsg) ((u_char *)((cmsg) + 1)) - -/* given pointer to struct adatahdr, return pointer to next adatahdr */ -#define CMSG_NXTHDR(mhdr, cmsg) \ - (((caddr_t)(cmsg) + (cmsg)->cmsg_len + sizeof(struct cmsghdr) > \ - (mhdr)->msg_control + (mhdr)->msg_controllen) ? \ - (struct cmsghdr *)NULL : \ - (struct cmsghdr *)((caddr_t)(cmsg) + ALIGN((cmsg)->cmsg_len))) - -#define CMSG_FIRSTHDR(mhdr) ((struct cmsghdr *)(mhdr)->msg_control) - -/* "Socket"-level control message types: */ -#define SCM_RIGHTS 0x01 /* access rights (array of int) */ - -/* - * 4.3 compat sockaddr, move to compat file later - */ -struct osockaddr { - u_short sa_family; /* address family */ - char sa_data[14]; /* up to 14 bytes of direct address */ -}; - -/* - * 4.3-compat message header (move to compat file later). - */ -struct omsghdr { - caddr_t msg_name; /* optional address */ - int msg_namelen; /* size of address */ - struct iovec *msg_iov; /* scatter/gather array */ - int msg_iovlen; /* # elements in msg_iov */ - caddr_t msg_accrights; /* access rights sent/received */ - int msg_accrightslen; -}; - -//#include -//#include -//#include -//#include -//#include -//#include -// - -typedef enum spin_msg { - SP_MISC, /* some weird thing, usually just return immediately if you get this */ - SP_SELECT, /* in a select call */ - SP_NAME, /* getting a host by name */ - SP_ADDR, /* getting a host by address */ - SP_STREAM_READ, /* Stream read call */ - SP_STREAM_WRITE, /* Stream write call */ - SP_DGRAM_READ, /* Datagram read call */ - SP_DGRAM_WRITE, /* Datagram write call */ - SP_SLEEP, /* sleeping, passes ticks left to sleep */ - SP_AUTO_SPIN /* Autospin, passes argument to SpinCursor */ -} spin_msg; - -typedef int (*GUSISpinFn)(spin_msg msg, long param); -typedef void (*GUSIEvtHandler)(EventRecord * ev); -typedef GUSIEvtHandler GUSIEvtTable[24]; - -/* - * Address families, defined in sys/socket.h - * - -#define AF_UNSPEC 0 // unspecified -#define AF_UNIX 1 // local to host (pipes, portals) -#define AF_INET 2 // internetwork: UDP, TCP, etc. -#define AF_CTB 3 // Apple Comm Toolbox (not yet supported) -#define AF_FILE 4 // Normal File I/O (used internally) -#define AF_PPC 5 // PPC Toolbox -#define AF_PAP 6 // Printer Access Protocol (client only) -#define AF_APPLETALK 16 // Apple Talk - -*/ - -#define ATALK_SYMADDR 272 /* Symbolic Address for AppleTalk */ - -/* - * Some Implementations of GUSI require you to call GUSISetup for the - * socket families you'd like to have defined. It's a good idea to call - * this for *all* implementations. - * - * GUSIDefaultSetup() will include all socket families. - * - * Never call any of the GUSIwithXXX routines directly. - */ - -__BEGIN_DECLS -void GUSIwithAppleTalkSockets(); -void GUSIwithInternetSockets(); -void GUSIwithPAPSockets(); -void GUSIwithPPCSockets(); -void GUSIwithUnixSockets(); -void GUSIwithSIOUXSockets(); -void GUSIwithMPWSockets(); - -void GUSISetup(void (*socketfamily)()); -void GUSIDefaultSetup(); -__END_DECLS -/* - * Types, defined in sys/socket.h - * - -#define SOCK_STREAM 1 // stream socket -#define SOCK_DGRAM 2 // datagram socket - -*/ - -/* - * Defined in sys/un.h - * - -struct sockaddr_un { - short sun_family; - char sun_path[108]; -}; - -*/ - -#ifndef PRAGMA_ALIGN_SUPPORTED -#error Apple had some fun with the conditional macros again -#endif - -#if PRAGMA_ALIGN_SUPPORTED -#pragma options align=mac68k -#endif - -/* -struct sockaddr_atlk { - short family; - AddrBlock addr; -}; - -struct sockaddr_atlk_sym { - short family; - EntityName name; -}; - -struct sockaddr_ppc { - short family; - LocationNameRec location; - PPCPortRec port; -}; - -// Definitions for choose() - -#define CHOOSE_DEFAULT 1 -#define CHOOSE_NEW 2 -#define CHOOSE_DIR 4 - -typedef struct { - short numTypes; - SFTypeList types; -} sa_constr_file; - -typedef struct { - short numTypes; - NLType types; -} sa_constr_atlk; - - -// Definitions for sa_constr_ppc - -#define PPC_CON_NEWSTYLE 0x8000 -#define PPC_CON_MATCH_NAME 0x0001 -#define PPC_CON_MATCH_TYPE 0x0002 -#define PPC_CON_MATCH_NBP 0x0004 - -typedef struct { - short flags; - Str32 nbpType; - PPCPortRec match; -} sa_constr_ppc; - -*/ - -#if PRAGMA_ALIGN_SUPPORTED -#pragma options align=reset -#endif - -__BEGIN_DECLS -/* - * IO/Socket stuff, defined elsewhere (unistd.h, sys/socket.h - * -*/ -int socket(int domain, int type, short protocol); -int bind(int s, void *name, int namelen); -int connect(int s, void *addr, int addrlen); -int listen(int s, int qlen); -int accept(int s, void *addr, int *addrlen); -int close(int s); -int read(int s, char *buffer, unsigned buflen); -int readv(int s, struct iovec *iov, int count); -int recv(int s, void *buffer, int buflen, int flags); -int recvfrom(int s, void *buffer, int buflen, int flags, void *from, int *fromlen); -int recvmsg(int s,struct msghdr *msg,int flags); -int write(int s, const char *buffer, unsigned buflen); -int writev(int s, struct iovec *iov, int count); -int send(int s, void *buffer, int buflen, int flags); -int sendto (int s, void *buffer, int buflen, int flags, void *to, int tolen); -int sendmsg(int s,struct msghdr *msg,int flags); -int select(int width, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); -int getdtablesize(void); -int getsockname(int s, void *name, int *namelen); -int getpeername(int s, struct sockaddr *name, int *namelen); -int shutdown(int s, int how); -int fcntl(int s, unsigned int cmd, int arg); -int dup(int s); -int dup2(int s, int s1); -//int ioctl(int d, unsigned int request, long *argp); -int getsockopt(int s, int level, int optname, char *optval, int * optlen); -int setsockopt(int s, int level, int optname, char *optval, int optlen); -int isatty(int); -int remove(const char *filename); -int rename(const char *oldname, const char *newname); -int creat(const char*); -int faccess(char*, unsigned int, long*); -long lseek(int, long, int); -int open(const char*, int); -int unlink(char*); -int symlink(char* linkto, char* linkname); -int readlink(char* path, char* buf, int bufsiz); -int truncate(char *path, long length); -int ftruncate(int fd, long length); -int chdir(char * path); -int mkdir(char * path); -int rmdir(char * path); -char * getcwd(char * buf, int size); - - -/* - * Defined in stdio.h - */ - -#ifdef __MWERKS__ -void fsetfileinfo (char *filename, unsigned long newcreator, unsigned long newtype); -#endif - -void fgetfileinfo (char *filename, unsigned long * creator, unsigned long * type); - -#ifdef __MWERKS__ -FILE *fdopen(int fd, const char *mode); -int fwalk(int (*func)(FILE * stream)); -#endif - -int choose( - int domain, - int type, - char * prompt, - void * constraint, - int flags, - void * name, - int * namelen); - -/* - * Hostname routines, defined in netdb.h - * -*/ - -/* - * Structures returned by network data base library. All addresses are - * supplied in host order, and returned in network order (suitable for - * use in system calls). - */ -struct hostent { - char *h_name; /* official name of host */ - char **h_aliases; /* alias list */ - int h_addrtype; /* host address type */ - int h_length; /* length of address */ - char **h_addr_list; /* list of addresses from name server */ -#define h_addr h_addr_list[0] /* address, for backward compatiblity */ -}; - -/* - * Assumption here is that a network number - * fits in 32 bits -- probably a poor one. - */ -struct netent { - char *n_name; /* official name of net */ - char **n_aliases; /* alias list */ - int n_addrtype; /* net address type */ - unsigned long n_net; /* network # */ -}; - -struct servent { - char *s_name; /* official service name */ - char **s_aliases; /* alias list */ - int s_port; /* port # */ - char *s_proto; /* protocol to use */ -}; - -struct protoent { - char *p_name; /* official protocol name */ - char **p_aliases; /* alias list */ - int p_proto; /* protocol # */ -}; - -/* - * Error return codes from gethostbyname() and gethostbyaddr() - * (left in extern int h_errno). - */ - -#define HOST_NOT_FOUND 1 /* Authoritative Answer Host not found */ -#define TRY_AGAIN 2 /* Non-Authoritive Host not found, or SERVERFAIL */ -#define NO_RECOVERY 3 /* Non recoverable errors, FORMERR, REFUSED, NOTIMP */ -#define NO_DATA 4 /* Valid name, no data record of requested type */ -#define NO_ADDRESS NO_DATA /* no address, look for MX record */ - -int gethostname(char *machname, long buflen); - -void endhostent __P((void)); -void endnetent __P((void)); -void endprotoent __P((void)); -void endservent __P((void)); -struct hostent *gethostbyaddr __P((const char *, int, int)); -struct hostent *gethostbyname __P((const char *)); -struct hostent *gethostent __P((void)); -struct netent *getnetbyaddr __P((long, int)); /* u_long? */ -struct netent *getnetbyname __P((const char *)); -struct netent *getnetent __P((void)); -struct protoent *getprotobyname __P((const char *)); -struct protoent *getprotobynumber __P((int)); -struct protoent *getprotoent __P((void)); -struct servent *getservbyname __P((const char *, const char *)); -struct servent *getservbyport __P((int, const char *)); -struct servent *getservent __P((void)); -void herror __P((const char *)); -void sethostent __P((int)); -/* void sethostfile __P((const char *)); */ -void setnetent __P((int)); -void setprotoent __P((int)); -void setservent __P((int)); - - -char * inet_ntoa(struct in_addr inaddr); -struct in_addr inet_addr(const char *address); - -/* - * GUSI supports a number of hooks. Every one of them has a different prototype, but needs - * to be passed as a GUSIHook - */ - -typedef enum { - GUSI_SpinHook, /* A GUSISpinFn, to be called when a call blocks */ - GUSI_ExecHook, /* Boolean (*hook)(const GUSIFileRef & ref), decides if file is executable */ - GUSI_FTypeHook,/* Boolean (*hook)(const FSSpec & spec) sets a default file type */ - GUSI_SpeedHook /* A long integer, to be added to the cursor spin variable */ -} GUSIHookCode; - -typedef void (*GUSIHook)(void); -void GUSISetHook(GUSIHookCode code, GUSIHook hook); -GUSIHook GUSIGetHook(GUSIHookCode code); - -/* - * What to do when a routine blocks - */ - -/* Defined for compatibility */ -#define GUSISetSpin(routine) GUSISetHook(GUSI_SpinHook, (GUSIHook)routine) -#define GUSIGetSpin() (GUSISpinFn) GUSIGetHook(GUSI_SpinHook) - -int GUSISetEvents(GUSIEvtTable table); -GUSIEvtHandler * GUSIGetEvents(void); - -extern GUSIEvtHandler GUSISIOWEvents[]; - -#define SIGPIPE 13 -#define SIGALRM 14 - -/* - * BSD memory routines, defined in compat.h - * -*/ -#define index(a, b) strchr(a, b) -#define rindex(a, b) strrchr(a, b) -#define bzero(from, len) memset(from, 0, len) -#define bcopy(from, to, len) memcpy(to, from, len) -#define bcmp(s1, s2, len) memcmp(s1, s2, len) -#define bfill(from, len, x) memset(from, x, len) - - -__END_DECLS - - typedef struct wxSockInternal - { - long nothing ; - } ; - -#endif /* !_GUSI_ */ \ No newline at end of file diff --git a/include/wx/mac/mdi.h b/include/wx/mac/mdi.h deleted file mode 100644 index 6f9fc294e2..0000000000 --- a/include/wx/mac/mdi.h +++ /dev/null @@ -1,164 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: mdi.h -// Purpose: MDI (Multiple Document Interface) classes. -// This doesn't have to be implemented just like Windows, -// it could be a tabbed design as in wxGTK. -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_MDI_H_ -#define _WX_MDI_H_ - -#ifdef __GNUG__ -#pragma interface "mdi.h" -#endif - -#include "wx/frame.h" - -WXDLLEXPORT_DATA(extern const char*) wxFrameNameStr; -WXDLLEXPORT_DATA(extern const char*) wxStatusLineNameStr; - -class WXDLLEXPORT wxMDIClientWindow; -class WXDLLEXPORT wxMDIChildFrame; - -class WXDLLEXPORT wxMDIParentFrame: public wxFrame -{ -DECLARE_DYNAMIC_CLASS(wxMDIParentFrame) - - friend class WXDLLEXPORT wxMDIChildFrame; -public: - - wxMDIParentFrame(); - inline wxMDIParentFrame(wxWindow *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE | wxVSCROLL | wxHSCROLL, // Scrolling refers to client window - const wxString& name = wxFrameNameStr) - { - Create(parent, id, title, pos, size, style, name); - } - - ~wxMDIParentFrame(); - - bool Create(wxWindow *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE | wxVSCROLL | wxHSCROLL, - const wxString& name = wxFrameNameStr); - - void OnSize(wxSizeEvent& event); - void OnActivate(wxActivateEvent& event); - void OnSysColourChanged(wxSysColourChangedEvent& event); - - void SetMenuBar(wxMenuBar *menu_bar); - - // Gets the size available for subwindows after menu size, toolbar size - // and status bar size have been subtracted. If you want to manage your own - // toolbar(s), don't call SetToolBar. - void GetClientSize(int *width, int *height) const; - - // Get the active MDI child window (Windows only) - wxMDIChildFrame *GetActiveChild() const ; - - // Get the client window - inline wxMDIClientWindow *GetClientWindow() const { return m_clientWindow; }; - - // Create the client window class (don't Create the window, - // just return a new class) - virtual wxMDIClientWindow *OnCreateClient() ; - - // MDI operations - virtual void Cascade(); - virtual void Tile(); - virtual void ArrangeIcons(); - virtual void ActivateNext(); - virtual void ActivatePrevious(); - -protected: - - // TODO maybe have this member - wxMDIClientWindow *m_clientWindow; - -DECLARE_EVENT_TABLE() -}; - -class WXDLLEXPORT wxMDIChildFrame: public wxFrame -{ -DECLARE_DYNAMIC_CLASS(wxMDIChildFrame) -public: - - wxMDIChildFrame(); - inline wxMDIChildFrame(wxMDIParentFrame *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE, - const wxString& name = wxFrameNameStr) - { - Create(parent, id, title, pos, size, style, name); - } - - ~wxMDIChildFrame(); - - bool Create(wxMDIParentFrame *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE, - const wxString& name = wxFrameNameStr); - - // Set menu bar - void SetMenuBar(wxMenuBar *menu_bar); - void SetClientSize(int width, int height); - void GetPosition(int *x, int *y) const ; - - // MDI operations - virtual void Maximize(); - virtual void Restore(); - virtual void Activate(); -}; - -/* The client window is a child of the parent MDI frame, and itself - * contains the child MDI frames. - * However, you create the MDI children as children of the MDI parent: - * only in the implementation does the client window become the parent - * of the children. Phew! So the children are sort of 'adopted'... - */ - -class WXDLLEXPORT wxMDIClientWindow: public wxWindow -{ - DECLARE_DYNAMIC_CLASS(wxMDIClientWindow) - public: - - wxMDIClientWindow() ; - inline wxMDIClientWindow(wxMDIParentFrame *parent, long style = 0) - { - CreateClient(parent, style); - } - - ~wxMDIClientWindow(); - - // Note: this is virtual, to allow overridden behaviour. - virtual bool CreateClient(wxMDIParentFrame *parent, long style = wxVSCROLL | wxHSCROLL); - - // Explicitly call default scroll behaviour - void OnScroll(wxScrollEvent& event); - -protected: - -DECLARE_EVENT_TABLE() -}; - -#endif - // _WX_MDI_H_ diff --git a/include/wx/mac/menu.h b/include/wx/mac/menu.h deleted file mode 100644 index fa3936557c..0000000000 --- a/include/wx/mac/menu.h +++ /dev/null @@ -1,162 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: menu.h -// Purpose: wxMenu, wxMenuBar classes -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_MENU_H_ -#define _WX_MENU_H_ - -#ifdef __GNUG__ -#pragma interface "menu.h" -#endif - -#include "wx/defs.h" -#include "wx/event.h" - -class WXDLLEXPORT wxMenuItem; -class WXDLLEXPORT wxMenuBar; -class WXDLLEXPORT wxMenu; - -WXDLLEXPORT_DATA(extern const char*) wxEmptyString; - -// ---------------------------------------------------------------------------- -// Menu -// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxMenu: public wxEvtHandler -{ - DECLARE_DYNAMIC_CLASS(wxMenu) - -public: - // ctor & dtor - wxMenu(const wxString& title = wxEmptyString, const wxFunction func = NULL); - ~wxMenu(); - - // construct menu - // append items to the menu - // separator line - void AppendSeparator(); - // normal item - void Append(int id, const wxString& Label, const wxString& helpString = wxEmptyString, - bool checkable = FALSE); - // a submenu - void Append(int id, const wxString& Label, wxMenu *SubMenu, - const wxString& helpString = wxEmptyString); - // the most generic form (create wxMenuItem first and use it's functions) - void Append(wxMenuItem *pItem); - // insert a break in the menu - void Break(); - // delete an item - void Delete(int id); - - // menu item control - void Enable(int id, bool Flag); - bool Enabled(int id) const; - inline bool IsEnabled(int id) const { return Enabled(id); }; - void Check(int id, bool Flag); - bool Checked(int id) const; - inline bool IsChecked(int id) const { return IsChecked(id); }; - - // Client data - inline void SetClientData(void* clientData) { m_clientData = clientData; } - inline void* GetClientData() const { return m_clientData; } - - // item properties - // title - void SetTitle(const wxString& label); - const wxString GetTitle() const; - // label - void SetLabel(int id, const wxString& label); - wxString GetLabel(int id) const; - // help string - virtual void SetHelpString(int id, const wxString& helpString); - virtual wxString GetHelpString(int id) const ; - - // find item - // Finds the item id matching the given string, -1 if not found. - virtual int FindItem(const wxString& itemString) const ; - // Find wxMenuItem by ID, and item's menu too if itemMenu is !NULL. - wxMenuItem *FindItemForId(int itemId, wxMenu **itemMenu = NULL) const; - - void ProcessCommand(wxCommandEvent& event); - inline void Callback(const wxFunction func) { m_callback = func; } - - virtual void SetParent(wxEvtHandler *parent) { m_parent = parent; } - inline void SetEventHandler(wxEvtHandler *handler) { m_eventHandler = handler; } - inline wxEvtHandler *GetEventHandler() { return m_eventHandler; } - - inline wxList& GetItems() const { return (wxList&) m_menuItems; } - -public: - wxFunction m_callback; - - int m_noItems; - wxString m_title; - wxMenuBar * m_menuBar; - wxList m_menuItems; - wxEvtHandler * m_parent; - wxEvtHandler * m_eventHandler; - void* m_clientData; -}; - -// ---------------------------------------------------------------------------- -// Menu Bar (a la Windows) -// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxFrame; -class WXDLLEXPORT wxMenuBar: public wxEvtHandler -{ - DECLARE_DYNAMIC_CLASS(wxMenuBar) - - wxMenuBar(); - wxMenuBar(int n, wxMenu *menus[], const wxString titles[]); - ~wxMenuBar(); - - void Append(wxMenu *menu, const wxString& title); - // Must only be used AFTER menu has been attached to frame, - // otherwise use individual menus to enable/disable items - void Enable(int Id, bool Flag); - bool Enabled(int Id) const ; - inline bool IsEnabled(int Id) const { return Enabled(Id); }; - void EnableTop(int pos, bool Flag); - void Check(int id, bool Flag); - bool Checked(int id) const ; - inline bool IsChecked(int Id) const { return Checked(Id); }; - void SetLabel(int id, const wxString& label) ; - wxString GetLabel(int id) const ; - void SetLabelTop(int pos, const wxString& label) ; - wxString GetLabelTop(int pos) const ; - virtual void Delete(wxMenu *menu, int index = 0); /* Menu not destroyed */ - virtual bool OnAppend(wxMenu *menu, const char *title); - virtual bool OnDelete(wxMenu *menu, int index); - - virtual void SetHelpString(int Id, const wxString& helpString); - virtual wxString GetHelpString(int Id) const ; - - virtual int FindMenuItem(const wxString& menuString, const wxString& itemString) const ; - - // Find wxMenuItem for item ID, and return item's - // menu too if itemMenu is non-NULL. - wxMenuItem *FindItemForId(int itemId, wxMenu **menuForItem = NULL) const ; - - inline void SetEventHandler(wxEvtHandler *handler) { m_eventHandler = handler; } - inline wxEvtHandler *GetEventHandler() { return m_eventHandler; } - - inline int GetMenuCount() const { return m_menuCount; } - inline wxMenu* GetMenu(int i) const { return m_menus[i]; } - - public: - wxEvtHandler * m_eventHandler; - int m_menuCount; - wxMenu ** m_menus; - wxString * m_titles; - wxFrame * m_menuBarFrame; -/* TODO: data that represents the actual menubar when created. - */ -}; - -#endif // _WX_MENU_H_ diff --git a/include/wx/mac/menuitem.h b/include/wx/mac/menuitem.h deleted file mode 100644 index 9c912967f1..0000000000 --- a/include/wx/mac/menuitem.h +++ /dev/null @@ -1,95 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: menuitem.h -// Purpose: wxMenuItem class -// Author: Vadim Zeitlin -// Modified by: -// Created: 11.11.97 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows license -/////////////////////////////////////////////////////////////////////////////// - -#ifndef _MENUITEM_H -#define _MENUITEM_H - -#ifdef __GNUG__ -#pragma interface "menuitem.h" -#endif - -// ---------------------------------------------------------------------------- -// headers -// ---------------------------------------------------------------------------- - -#include "wx/setup.h" - -// an exception to the general rule that a normal header doesn't include other -// headers - only because ownerdrw.h is not always included and I don't want -// to write #ifdef's everywhere... -#if wxUSE_OWNER_DRAWN -#include "wx/ownerdrw.h" -#endif - -// ---------------------------------------------------------------------------- -// constants -// ---------------------------------------------------------------------------- - -// id for a separator line in the menu (invalid for normal item) -#define ID_SEPARATOR (-1) - -// ---------------------------------------------------------------------------- -// wxMenuItem: an item in the menu, optionally implements owner-drawn behaviour -// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxMenuItem: public wxObject -#if wxUSE_OWNER_DRAWN - , public wxOwnerDrawn -#endif -{ -DECLARE_DYNAMIC_CLASS(wxMenuItem) - -public: - // ctor & dtor - wxMenuItem(wxMenu *pParentMenu = NULL, int id = ID_SEPARATOR, - const wxString& strName = "", const wxString& wxHelp = "", - bool bCheckable = FALSE, wxMenu *pSubMenu = NULL); - virtual ~wxMenuItem(); - - // accessors (some more are inherited from wxOwnerDrawn or are below) - bool IsSeparator() const { return m_idItem == ID_SEPARATOR; } - bool IsEnabled() const { return m_bEnabled; } - bool IsChecked() const { return m_bChecked; } - - int GetId() const { return m_idItem; } - const wxString& GetHelp() const { return m_strHelp; } - wxMenu *GetSubMenu() const { return m_pSubMenu; } - - // operations - void SetName(const wxString& strName) { m_strName = strName; } - void SetHelp(const wxString& strHelp) { m_strHelp = strHelp; } - - void Enable(bool bDoEnable = TRUE); - void Check(bool bDoCheck = TRUE); - - void DeleteSubMenu(); - -private: - int m_idItem; // numeric id of the item - wxString m_strHelp; // associated help string - wxMenu *m_pSubMenu, // may be NULL - *m_pParentMenu; // menu this item is contained in - bool m_bEnabled, // enabled or greyed? - m_bChecked; // checked? (only if checkable) - -#if wxUSE_OWNER_DRAWN - // wxOwnerDrawn base class already has these variables - nothing to do - -#else //!owner drawn - bool m_bCheckable; // can be checked? - wxString m_strName; // name or label of the item - -public: - const wxString& GetName() const { return m_strName; } - bool IsCheckable() const { return m_bCheckable; } -#endif //owner drawn -}; - -#endif //_MENUITEM_H diff --git a/include/wx/mac/metafile.h b/include/wx/mac/metafile.h deleted file mode 100644 index eb86b97a04..0000000000 --- a/include/wx/mac/metafile.h +++ /dev/null @@ -1,101 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: metafile.h -// Purpose: wxMetaFile, wxMetaFileDC classes. -// This probably should be restricted to Windows platforms, -// but if there is an equivalent on your platform, great. -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef _WX_METAFIILE_H_ -#define _WX_METAFIILE_H_ - -#ifdef __GNUG__ -#pragma interface "metafile.h" -#endif - -#include "wx/setup.h" - -/* - * Metafile and metafile device context classes - work in Windows 3.1 only - * - */ - -class WXDLLEXPORT wxDC; -class WXDLLEXPORT wxMetaFile: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxMetaFile) - public: - wxMetaFile(const wxString& file = ""); - ~wxMetaFile(); - - // After this is called, the metafile cannot be used for anything - // since it is now owned by the clipboard. - virtual bool SetClipboard(int width = 0, int height = 0); - - virtual bool Play(wxDC *dc); - // TODO - inline bool Ok() { return FALSE; }; - -/* TODO: Implementation - inline WXHANDLE GetHMETAFILE() { return m_metaFile; } - inline void SetHMETAFILE(WXHANDLE mf) { m_metaFile = mf; } - -protected: - WXHANDLE m_metaFile; -*/ -}; - -class WXDLLEXPORT wxMetaFileDC: public wxDC -{ - DECLARE_DYNAMIC_CLASS(wxMetaFileDC) - - public: - // Don't supply origin and extent - // Supply them to wxMakeMetaFilePlaceable instead. - wxMetaFileDC(const wxString& file = ""); - - // Supply origin and extent (recommended). - // Then don't need to supply them to wxMakeMetaFilePlaceable. - wxMetaFileDC(const wxString& file, int xext, int yext, int xorg, int yorg); - - ~wxMetaFileDC(); - - // Should be called at end of drawing - virtual wxMetaFile *Close(); - virtual void SetMapMode(int mode); - virtual void GetTextExtent(const wxString& string, float *x, float *y, - float *descent = NULL, float *externalLeading = NULL, - wxFont *theFont = NULL, bool use16bit = FALSE); - - // Implementation - inline wxMetaFile *GetMetaFile() { return m_metaFile; } - inline void SetMetaFile(wxMetaFile *mf) { m_metaFile = mf; } - inline int GetWindowsMappingMode() { return m_windowsMappingMode; } - inline void SetWindowsMappingMode(int mm) { m_windowsMappingMode = mm; } - -protected: - int m_windowsMappingMode; - wxMetaFile *m_metaFile; -}; - -/* - * Pass filename of existing non-placeable metafile, and bounding box. - * Adds a placeable metafile header, sets the mapping mode to anisotropic, - * and sets the window origin and extent to mimic the MM_TEXT mapping mode. - * - */ - -// No origin or extent -bool WXDLLEXPORT wxMakeMetaFilePlaceable(const wxString& filename, float scale = 1.0); - -// Optional origin and extent -bool WXDLLEXPORT wxMakeMetaFilePlaceable(const wxString& filename, int x1, int y1, int x2, int y2, float scale = 1.0, bool useOriginAndExtent = TRUE); - -#endif - // _WX_METAFIILE_H_ diff --git a/include/wx/mac/minifram.h b/include/wx/mac/minifram.h deleted file mode 100644 index 8f1644d558..0000000000 --- a/include/wx/mac/minifram.h +++ /dev/null @@ -1,46 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: minifram.h -// Purpose: wxMiniFrame class. A small frame for e.g. floating toolbars. -// If there is no equivalent on your platform, just make it a -// normal frame. -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_MINIFRAM_H_ -#define _WX_MINIFRAM_H_ - -#ifdef __GNUG__ -#pragma interface "minifram.h" -#endif - -#include "wx/frame.h" - -class WXDLLEXPORT wxMiniFrame: public wxFrame { - - DECLARE_DYNAMIC_CLASS(wxMiniFrame) - -public: - inline wxMiniFrame() {} - inline wxMiniFrame(wxWindow *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE|wxTINY_CAPTION_HORIZ, - const wxString& name = wxFrameNameStr) - { - // Use wxFrame constructor in absence of more specific code. - Create(parent, id, title, pos, size, style, name); - } - - ~wxMiniFrame() {} -protected: -}; - -#endif - // _WX_MINIFRAM_H_ diff --git a/include/wx/mac/msgdlg.h b/include/wx/mac/msgdlg.h deleted file mode 100644 index 58fa8e51ae..0000000000 --- a/include/wx/mac/msgdlg.h +++ /dev/null @@ -1,50 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: msgdlg.h -// Purpose: wxMessageDialog class. Use generic version if no -// platform-specific implementation. -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_MSGBOXDLG_H_ -#define _WX_MSGBOXDLG_H_ - -#ifdef __GNUG__ -#pragma interface "msgdlg.h" -#endif - -#include "wx/setup.h" -#include "wx/dialog.h" - -/* - * Message box dialog - */ - -WXDLLEXPORT_DATA(extern const char*) wxMessageBoxCaptionStr; - -class WXDLLEXPORT wxMessageDialog: public wxDialog -{ -DECLARE_DYNAMIC_CLASS(wxMessageDialog) -protected: - wxString m_caption; - wxString m_message; - long m_dialogStyle; - wxWindow * m_parent; -public: - wxMessageDialog(wxWindow *parent, const wxString& message, const wxString& caption = wxMessageBoxCaptionStr, - long style = wxOK|wxCENTRE, const wxPoint& pos = wxDefaultPosition); - - int ShowModal(); -}; - - -int WXDLLEXPORT wxMessageBox(const wxString& message, const wxString& caption = wxMessageBoxCaptionStr, - long style = wxOK|wxCENTRE, - wxWindow *parent = NULL, int x = -1, int y = -1); - -#endif - // _WX_MSGBOXDLG_H_ diff --git a/include/wx/mac/notebook.h b/include/wx/mac/notebook.h deleted file mode 100644 index 83f8c1ce4e..0000000000 --- a/include/wx/mac/notebook.h +++ /dev/null @@ -1,206 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: notebook.h -// Purpose: MSW/GTK compatible notebook (a.k.a. property sheet) -// Author: AUTHOR -// Modified by: -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_NOTEBOOK_H_ -#define _WX_NOTEBOOK_H_ - -#ifdef __GNUG__ -#pragma interface "notebook.h" -#endif - -// ---------------------------------------------------------------------------- -// headers -// ---------------------------------------------------------------------------- -#include "wx/dynarray.h" -#include "wx/event.h" -#include "wx/control.h" - -// ---------------------------------------------------------------------------- -// types -// ---------------------------------------------------------------------------- - -// fwd declarations -class WXDLLEXPORT wxImageList; -class WXDLLEXPORT wxWindow; - -// array of notebook pages -typedef wxWindow wxNotebookPage; // so far, any window can be a page -WX_DEFINE_ARRAY(wxNotebookPage *, wxArrayPages); - -// ---------------------------------------------------------------------------- -// notebook events -// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxNotebookEvent : public wxCommandEvent -{ -public: - wxNotebookEvent(wxEventType commandType = wxEVT_NULL, int id = 0, - int nSel = -1, int nOldSel = -1) - : wxCommandEvent(commandType, id) { m_nSel = nSel; m_nOldSel = nOldSel; } - - // accessors - int GetSelection() const { return m_nSel; } - int GetOldSelection() const { return m_nOldSel; } - -private: - int m_nSel, // currently selected page - m_nOldSel; // previously selected page - - DECLARE_DYNAMIC_CLASS(wxNotebookEvent) -}; - -// ---------------------------------------------------------------------------- -// wxNotebook -// ---------------------------------------------------------------------------- - -// @@@ this class should really derive from wxTabCtrl, but the interface is not -// exactly the same, so I can't do it right now and instead we reimplement -// part of wxTabCtrl here -class wxNotebook : public wxControl -{ -public: - // ctors - // ----- - // default for dynamic class - wxNotebook(); - // the same arguments as for wxControl (@@@ any special styles?) - wxNotebook(wxWindow *parent, - wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = "notebook"); - // Create() function - bool Create(wxWindow *parent, - wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = "notebook"); - // dtor - ~wxNotebook(); - - // accessors - // --------- - // get number of pages in the dialog - int GetPageCount() const; - - // set the currently selected page, return the index of the previously - // selected one (or -1 on error) - // NB: this function will _not_ generate wxEVT_NOTEBOOK_PAGE_xxx events - int SetSelection(int nPage); - // cycle thru the tabs - void AdvanceSelection(bool bForward = TRUE); - // get the currently selected page - int GetSelection() const { return m_nSelection; } - - // set/get the title of a page - bool SetPageText(int nPage, const wxString& strText); - wxString GetPageText(int nPage) const; - - // image list stuff: each page may have an image associated with it. All - // the images belong to an image list, so you have to - // 1) create an image list - // 2) associate it with the notebook - // 3) set for each page it's image - // associate image list with a control - void SetImageList(wxImageList* imageList); - // get pointer (may be NULL) to the associated image list - wxImageList* GetImageList() const { return m_pImageList; } - - // sets/returns item's image index in the current image list - int GetPageImage(int nPage) const; - bool SetPageImage(int nPage, int nImage); - - // currently it's always 1 because wxGTK doesn't support multi-row - // tab controls - int GetRowCount() const; - - // control the appearance of the notebook pages - // set the size (the same for all pages) - void SetPageSize(const wxSize& size); - // set the padding between tabs (in pixels) - void SetPadding(const wxSize& padding); - - // operations - // ---------- - // remove one page from the notebook - bool DeletePage(int nPage); - // remove one page from the notebook, without deleting - bool RemovePage(int nPage); - // remove all pages - bool DeleteAllPages(); - // adds a new page to the notebook (it will be deleted ny the notebook, - // don't delete it yourself). If bSelect, this page becomes active. - bool AddPage(wxNotebookPage *pPage, - const wxString& strText, - bool bSelect = FALSE, - int imageId = -1); - // the same as AddPage(), but adds it at the specified position - bool InsertPage(int nPage, - wxNotebookPage *pPage, - const wxString& strText, - bool bSelect = FALSE, - int imageId = -1); - // get the panel which represents the given page - wxNotebookPage *GetPage(int nPage) { return m_aPages[nPage]; } - - // callbacks - // --------- - void OnSize(wxSizeEvent& event); - void OnSelChange(wxNotebookEvent& event); - void OnSetFocus(wxFocusEvent& event); - void OnNavigationKey(wxNavigationKeyEvent& event); - - // base class virtuals - // ------------------- - virtual void Command(wxCommandEvent& event); - virtual void SetConstraintSizes(bool recurse = TRUE); - virtual bool DoPhase(int nPhase); - -protected: - // common part of all ctors - void Init(); - - // helper functions - void ChangePage(int nOldSel, int nSel); // change pages - - wxImageList *m_pImageList; // we can have an associated image list - wxArrayPages m_aPages; // array of pages - - int m_nSelection; // the current selection (-1 if none) - - DECLARE_DYNAMIC_CLASS(wxNotebook) - DECLARE_EVENT_TABLE() -}; - -// ---------------------------------------------------------------------------- -// event macros -// ---------------------------------------------------------------------------- -typedef void (wxEvtHandler::*wxNotebookEventFunction)(wxNotebookEvent&); - -#define EVT_NOTEBOOK_PAGE_CHANGED(id, fn) \ - { \ - wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED, \ - id, \ - -1, \ - (wxObjectEventFunction)(wxEventFunction)(wxNotebookEventFunction) &fn, \ - NULL \ - }, - -#define EVT_NOTEBOOK_PAGE_CHANGING(id, fn) \ - { \ - wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING, \ \ - id, \ - -1, \ - (wxObjectEventFunction)(wxEventFunction)(wxNotebookEventFunction) &fn, \ - NULL \ - }, - -#endif // _WX_NOTEBOOK_H_ diff --git a/include/wx/mac/palette.h b/include/wx/mac/palette.h deleted file mode 100644 index 3482b33934..0000000000 --- a/include/wx/mac/palette.h +++ /dev/null @@ -1,64 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: palette.h -// Purpose: wxPalette class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_PALETTE_H_ -#define _WX_PALETTE_H_ - -#ifdef __GNUG__ -#pragma interface "palette.h" -#endif - -#include "wx/gdiobj.h" - -class WXDLLEXPORT wxPalette; - -class WXDLLEXPORT wxPaletteRefData: public wxGDIRefData -{ - friend class WXDLLEXPORT wxPalette; -public: - wxPaletteRefData(); - ~wxPaletteRefData(); -/* TODO: implementation -protected: - WXHPALETTE m_hPalette; -*/ -}; - -#define M_PALETTEDATA ((wxPaletteRefData *)m_refData) - -class WXDLLEXPORT wxPalette: public wxGDIObject -{ - DECLARE_DYNAMIC_CLASS(wxPalette) - -public: - wxPalette(); - inline wxPalette(const wxPalette& palette) { Ref(palette); } - - wxPalette(int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue); - ~wxPalette(); - bool Create(int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue); - int GetPixel(const unsigned char red, const unsigned char green, const unsigned char blue) const; - bool GetRGB(int pixel, unsigned char *red, unsigned char *green, unsigned char *blue) const; - - virtual bool Ok() const { return (m_refData != NULL) ; } - - inline wxPalette& operator = (const wxPalette& palette) { if (*this == palette) return (*this); Ref(palette); return *this; } - inline bool operator == (const wxPalette& palette) { return m_refData == palette.m_refData; } - inline bool operator != (const wxPalette& palette) { return m_refData != palette.m_refData; } - -/* TODO: implementation - inline WXHPALETTE GetHPALETTE() const { return (M_PALETTEDATA ? M_PALETTEDATA->m_hPalette : 0); } - void SetHPALETTE(WXHPALETTE pal); -*/ -}; - -#endif - // _WX_PALETTE_H_ diff --git a/include/wx/mac/pen.h b/include/wx/mac/pen.h deleted file mode 100644 index 938908b56b..0000000000 --- a/include/wx/mac/pen.h +++ /dev/null @@ -1,101 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: pen.h -// Purpose: wxPen class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_PEN_H_ -#define _WX_PEN_H_ - -#ifdef __GNUG__ -#pragma interface "pen.h" -#endif - -#include "wx/gdiobj.h" -#include "wx/colour.h" -#include "wx/bitmap.h" - -typedef long wxDash ; - -class WXDLLEXPORT wxPen; - -class WXDLLEXPORT wxPenRefData: public wxGDIRefData -{ - friend class WXDLLEXPORT wxPen; -public: - wxPenRefData(); - wxPenRefData(const wxPenRefData& data); - ~wxPenRefData(); - -protected: - int m_width; - int m_style; - int m_join ; - int m_cap ; - wxBitmap m_stipple ; - int m_nbDash ; - wxDash * m_dash ; - wxColour m_colour; -/* TODO: implementation - WXHPEN m_hPen; -*/ -}; - -#define M_PENDATA ((wxPenRefData *)m_refData) - -// Pen -class WXDLLEXPORT wxPen: public wxGDIObject -{ - DECLARE_DYNAMIC_CLASS(wxPen) -public: - wxPen(); - wxPen(const wxColour& col, int width, int style); - wxPen(const wxBitmap& stipple, int width); - inline wxPen(const wxPen& pen) { Ref(pen); } - ~wxPen(); - - inline wxPen& operator = (const wxPen& pen) { if (*this == pen) return (*this); Ref(pen); return *this; } - inline bool operator == (const wxPen& pen) { return m_refData == pen.m_refData; } - inline bool operator != (const wxPen& pen) { return m_refData != pen.m_refData; } - - virtual bool Ok() const { return (m_refData != NULL) ; } - - // Override in order to recreate the pen - void SetColour(const wxColour& col) ; - void SetColour(unsigned char r, unsigned char g, unsigned char b) ; - - void SetWidth(int width) ; - void SetStyle(int style) ; - void SetStipple(const wxBitmap& stipple) ; - void SetDashes(int nb_dashes, const wxDash *dash) ; - void SetJoin(int join) ; - void SetCap(int cap) ; - - inline wxColour& GetColour() const { return (M_PENDATA ? M_PENDATA->m_colour : wxNullColour); }; - inline int GetWidth() const { return (M_PENDATA ? M_PENDATA->m_width : 0); }; - inline int GetStyle() const { return (M_PENDATA ? M_PENDATA->m_style : 0); }; - inline int GetJoin() const { return (M_PENDATA ? M_PENDATA->m_join : 0); }; - inline int GetCap() const { return (M_PENDATA ? M_PENDATA->m_cap : 0); }; - inline int GetDashes(wxDash **ptr) const { - *ptr = (M_PENDATA ? M_PENDATA->m_dash : (wxDash*) NULL); return (M_PENDATA ? M_PENDATA->m_nbDash : 0); - } - - inline wxBitmap *GetStipple() const { return (M_PENDATA ? (& M_PENDATA->m_stipple) : (wxBitmap*) NULL); }; - -// Implementation - - // Useful helper: create the brush resource - bool RealizeResource(); - - // When setting properties, we must make sure we're not changing - // another object - void Unshare(); -}; - -#endif - // _WX_PEN_H_ diff --git a/include/wx/mac/print.h b/include/wx/mac/print.h deleted file mode 100644 index bac3703496..0000000000 --- a/include/wx/mac/print.h +++ /dev/null @@ -1,56 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: print.h -// Purpose: wxPrinter, wxPrintPreview classes -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_PRINT_H_ -#define _WX_PRINT_H_ - -#ifdef __GNUG__ -#pragma interface "print.h" -#endif - -#include "wx/prntbase.h" - -/* - * Represents the printer: manages printing a wxPrintout object - */ - -class WXDLLEXPORT wxPrinter: public wxPrinterBase -{ - DECLARE_DYNAMIC_CLASS(wxPrinter) - - public: - wxPrinter(wxPrintData *data = NULL); - ~wxPrinter(); - - virtual bool Print(wxWindow *parent, wxPrintout *printout, bool prompt = TRUE); - virtual bool PrintDialog(wxWindow *parent); - virtual bool Setup(wxWindow *parent); -}; - -/* - * wxPrintPreview - * Programmer creates an object of this class to preview a wxPrintout. - */ - -class WXDLLEXPORT wxPrintPreview: public wxPrintPreviewBase -{ - DECLARE_CLASS(wxPrintPreview) - - public: - wxPrintPreview(wxPrintout *printout, wxPrintout *printoutForPrinting = NULL, wxPrintData *data = NULL); - ~wxPrintPreview(); - - virtual bool Print(bool interactive); - virtual void DetermineScaling(); -}; - -#endif - // _WX_PRINT_H_ diff --git a/include/wx/mac/printdlg.h b/include/wx/mac/printdlg.h deleted file mode 100644 index ac31a49096..0000000000 --- a/include/wx/mac/printdlg.h +++ /dev/null @@ -1,70 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: printdlg.h -// Purpose: wxPrintDialog, wxPageSetupDialog classes. -// Use generic, PostScript version if no -// platform-specific implementation. -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_PRINTDLG_H_ -#define _WX_PRINTDLG_H_ - -#ifdef __GNUG__ -#pragma interface "printdlg.h" -#endif - -#include "wx/dialog.h" -#include "wx/cmndata.h" - -/* - * wxPrinterDialog - * The common dialog for printing. - */ - -class WXDLLEXPORT wxDC; -class WXDLLEXPORT wxPrintDialog: public wxDialog -{ - DECLARE_DYNAMIC_CLASS(wxPrintDialog) - - public: - wxPrintDialog(); - wxPrintDialog(wxWindow *parent, wxPrintData* data = NULL); - ~wxPrintDialog(); - - bool Create(wxWindow *parent, wxPrintData* data = NULL); - virtual int ShowModal(); - - inline wxPrintData& GetPrintData() { return m_printData; } - virtual wxDC *GetPrintDC(); - - private: - wxPrintData m_printData; - wxDC* m_printerDC; - wxWindow* m_dialogParent; -}; - -class WXDLLEXPORT wxPageSetupDialog: public wxDialog -{ - DECLARE_DYNAMIC_CLASS(wxPageSetupDialog) - - private: - wxPageSetupData m_pageSetupData; - wxWindow* m_dialogParent; - public: - wxPageSetupDialog(); - wxPageSetupDialog(wxWindow *parent, wxPageSetupData *data = NULL); - ~wxPageSetupDialog(); - - bool Create(wxWindow *parent, wxPageSetupData *data = NULL); - virtual int ShowModal(); - - inline wxPageSetupData& GetPageSetupData() { return m_pageSetupData; } -}; - -#endif - // _WX_PRINTDLG_H_ diff --git a/include/wx/mac/private.h b/include/wx/mac/private.h deleted file mode 100644 index 922c172436..0000000000 --- a/include/wx/mac/private.h +++ /dev/null @@ -1,21 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: private.h -// Purpose: Private declarations -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_PRIVATE_H_ -#define _WX_PRIVATE_H_ - -#include "wx/defs.h" - -/* TODO: put any private declarations here. - */ - -#endif - // _WX_PRIVATE_H_ diff --git a/include/wx/mac/radiobox.h b/include/wx/mac/radiobox.h deleted file mode 100644 index cb7c5ba405..0000000000 --- a/include/wx/mac/radiobox.h +++ /dev/null @@ -1,88 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: radiobox.h -// Purpose: wxRadioBox class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_RADIOBOX_H_ -#define _WX_RADIOBOX_H_ - -#ifdef __GNUG__ -#pragma interface "radiobox.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxRadioBoxNameStr; - -// List box item -class WXDLLEXPORT wxBitmap ; - -class WXDLLEXPORT wxRadioBox: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxRadioBox) -public: - wxRadioBox(); - - inline wxRadioBox(wxWindow *parent, wxWindowID id, const wxString& title, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = NULL, - int majorDim = 0, long style = wxRA_HORIZONTAL, - const wxValidator& val = wxDefaultValidator, const wxString& name = wxRadioBoxNameStr) - { - Create(parent, id, title, pos, size, n, choices, majorDim, style, val, name); - } - - ~wxRadioBox(); - - bool Create(wxWindow *parent, wxWindowID id, const wxString& title, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = NULL, - int majorDim = 0, long style = wxRA_HORIZONTAL, - const wxValidator& val = wxDefaultValidator, const wxString& name = wxRadioBoxNameStr); - - int FindString(const wxString& s) const; - void SetSelection(int N); - int GetSelection() const; - wxString GetString(int N) const; - void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - void GetSize(int *x, int *y) const; - void GetPosition(int *x, int *y) const; - wxString GetLabel() const; - void SetLabel(const wxString& label); - void SetLabel(int item, const wxString& label) ; - wxString GetLabel(int item) const; - bool Show(bool show); - void SetFocus(); - void Enable(bool enable); - void Enable(int item, bool enable); - void Show(int item, bool show) ; - inline void SetLabelFont(const wxFont& WXUNUSED(font)) {}; - inline void SetButtonFont(const wxFont& font) { SetFont(font); } - - virtual wxString GetStringSelection() const; - virtual bool SetStringSelection(const wxString& s); - inline virtual int Number() const { return m_noItems; } ; - void Command(wxCommandEvent& event); - - inline int GetNumberOfRowsOrCols() const { return m_noRowsOrCols; } - inline void SetNumberOfRowsOrCols(int n) { m_noRowsOrCols = n; } - -protected: -/* TODO: implementation - WXHWND * m_radioButtons; -*/ - int m_majorDim ; - int m_noItems; - int m_noRowsOrCols; - int m_selectedButton; - -}; - -#endif - // _WX_RADIOBOX_H_ diff --git a/include/wx/mac/radiobut.h b/include/wx/mac/radiobut.h deleted file mode 100644 index 8e8bf1313d..0000000000 --- a/include/wx/mac/radiobut.h +++ /dev/null @@ -1,90 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: radiobut.h -// Purpose: wxRadioButton class -// Author: AUTHOR -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_RADIOBUT_H_ -#define _WX_RADIOBUT_H_ - -#ifdef __GNUG__ -#pragma interface "radiobut.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxRadioButtonNameStr; - -class WXDLLEXPORT wxRadioButton: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxRadioButton) - protected: - public: - inline wxRadioButton() {} - inline wxRadioButton(wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxRadioButtonNameStr) - { - Create(parent, id, label, pos, size, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxRadioButtonNameStr); - - virtual void SetLabel(const wxString& label); - virtual void SetValue(bool val); - virtual bool GetValue() const ; - - void Command(wxCommandEvent& event); -}; - -// Not implemented -#if 0 -class WXDLLEXPORT wxBitmap ; - -WXDLLEXPORT_DATA(extern const char*) wxBitmapRadioButtonNameStr; - -class WXDLLEXPORT wxBitmapRadioButton: public wxRadioButton -{ - DECLARE_DYNAMIC_CLASS(wxBitmapRadioButton) - protected: - wxBitmap *theButtonBitmap; - public: - inline wxBitmapRadioButton() { theButtonBitmap = NULL; } - inline wxBitmapRadioButton(wxWindow *parent, wxWindowID id, - const wxBitmap *label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxBitmapRadioButtonNameStr) - { - Create(parent, id, label, pos, size, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - const wxBitmap *label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxBitmapRadioButtonNameStr); - - virtual void SetLabel(const wxBitmap *label); - virtual void SetValue(bool val) ; - virtual bool GetValue() const ; -}; -#endif - -#endif - // _WX_RADIOBUT_H_ diff --git a/include/wx/mac/region.h b/include/wx/mac/region.h deleted file mode 100644 index 04d143c2e9..0000000000 --- a/include/wx/mac/region.h +++ /dev/null @@ -1,137 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: region.h -// Purpose: wxRegion class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_REGION_H_ -#define _WX_REGION_H_ - -#ifdef __GNUG__ -#pragma interface "region.h" -#endif - -#include "wx/list.h" -#include "wx/gdiobj.h" -#include "wx/gdicmn.h" - -class WXDLLEXPORT wxRect; -class WXDLLEXPORT wxPoint; - -enum wxRegionContain { - wxOutRegion = 0, wxPartRegion = 1, wxInRegion = 2 -}; - -// So far, for internal use only -enum wxRegionOp { -wxRGN_AND, // Creates the intersection of the two combined regions. -wxRGN_COPY, // Creates a copy of the region identified by hrgnSrc1. -wxRGN_DIFF, // Combines the parts of hrgnSrc1 that are not part of hrgnSrc2. -wxRGN_OR, // Creates the union of two combined regions. -wxRGN_XOR // Creates the union of two combined regions except for any overlapping areas. -}; - -class WXDLLEXPORT wxRegion : public wxGDIObject { -DECLARE_DYNAMIC_CLASS(wxRegion); - friend class WXDLLEXPORT wxRegionIterator; -public: - wxRegion(long x, long y, long w, long h); - wxRegion(const wxPoint& topLeft, const wxPoint& bottomRight); - wxRegion(const wxRect& rect); - wxRegion(); - ~wxRegion(); - - //# Copying - inline wxRegion(const wxRegion& r) - { Ref(r); } - inline wxRegion& operator = (const wxRegion& r) - { Ref(r); return (*this); } - - //# Modify region - // Clear current region - void Clear(); - - // Union rectangle or region with this. - inline bool Union(long x, long y, long width, long height) { return Combine(x, y, width, height, wxRGN_OR); } - inline bool Union(const wxRect& rect) { return Combine(rect, wxRGN_OR); } - inline bool Union(const wxRegion& region) { return Combine(region, wxRGN_OR); } - - // Intersect rectangle or region with this. - inline bool Intersect(long x, long y, long width, long height) { return Combine(x, y, width, height, wxRGN_AND); } - inline bool Intersect(const wxRect& rect) { return Combine(rect, wxRGN_AND); } - inline bool Intersect(const wxRegion& region) { return Combine(region, wxRGN_AND); } - - // Subtract rectangle or region from this: - // Combines the parts of 'this' that are not part of the second region. - inline bool Subtract(long x, long y, long width, long height) { return Combine(x, y, width, height, wxRGN_DIFF); } - inline bool Subtract(const wxRect& rect) { return Combine(rect, wxRGN_DIFF); } - inline bool Subtract(const wxRegion& region) { return Combine(region, wxRGN_DIFF); } - - // XOR: the union of two combined regions except for any overlapping areas. - inline bool Xor(long x, long y, long width, long height) { return Combine(x, y, width, height, wxRGN_XOR); } - inline bool Xor(const wxRect& rect) { return Combine(rect, wxRGN_XOR); } - inline bool Xor(const wxRegion& region) { return Combine(region, wxRGN_XOR); } - - //# Information on region - // Outer bounds of region - void GetBox(long& x, long& y, long&w, long &h) const; - wxRect GetBox() const ; - - // Is region empty? - bool Empty() const; - inline bool IsEmpty() const { return Empty(); } - - //# Tests - // Does the region contain the point (x,y)? - wxRegionContain Contains(long x, long y) const; - // Does the region contain the point pt? - wxRegionContain Contains(const wxPoint& pt) const; - // Does the region contain the rectangle (x, y, w, h)? - wxRegionContain Contains(long x, long y, long w, long h) const; - // Does the region contain the rectangle rect? - wxRegionContain Contains(const wxRect& rect) const; - -// Internal - bool Combine(long x, long y, long width, long height, wxRegionOp op); - bool Combine(const wxRegion& region, wxRegionOp op); - bool Combine(const wxRect& rect, wxRegionOp op); -}; - -class WXDLLEXPORT wxRegionIterator : public wxObject { -DECLARE_DYNAMIC_CLASS(wxRegionIterator); -public: - wxRegionIterator(); - wxRegionIterator(const wxRegion& region); - ~wxRegionIterator(); - - void Reset() { m_current = 0; } - void Reset(const wxRegion& region); - - operator bool () const { return m_current < m_numRects; } - bool HaveRects() const { return m_current < m_numRects; } - - void operator ++ (); - void operator ++ (int); - - long GetX() const; - long GetY() const; - long GetW() const; - long GetWidth() const { return GetW(); } - long GetH() const; - long GetHeight() const { return GetH(); } - wxRect GetRect() const { return wxRect(GetX(), GetY(), GetWidth(), GetHeight()); } - -private: - long m_current; - long m_numRects; - wxRegion m_region; - wxRect* m_rects; -}; - -#endif - // _WX_REGION_H_ diff --git a/include/wx/mac/scrolbar.h b/include/wx/mac/scrolbar.h deleted file mode 100644 index 3ec992e78e..0000000000 --- a/include/wx/mac/scrolbar.h +++ /dev/null @@ -1,68 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: scrollbar.h -// Purpose: wxScrollBar class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_SCROLBAR_H_ -#define _WX_SCROLBAR_H_ - -#ifdef __GNUG__ -#pragma interface "scrolbar.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxScrollBarNameStr; - -// Scrollbar item -class WXDLLEXPORT wxScrollBar: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxScrollBar) - -public: - inline wxScrollBar() { m_pageSize = 0; m_viewSize = 0; m_objectSize = 0; } - ~wxScrollBar(); - - inline wxScrollBar(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxSB_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxScrollBarNameStr) - { - Create(parent, id, pos, size, style, validator, name); - } - bool Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxSB_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxScrollBarNameStr); - - int GetThumbPosition() const ; - inline int GetThumbSize() const { return m_pageSize; } - inline int GetPageSize() const { return m_viewSize; } - inline int GetRange() const { return m_objectSize; } - - virtual void SetThumbPosition(int viewStart); - virtual void SetScrollbar(int position, int thumbSize, int range, int pageSize, - bool refresh = TRUE); - - void Command(wxCommandEvent& event); - -protected: - int m_pageSize; - int m_viewSize; - int m_objectSize; - -DECLARE_EVENT_TABLE() -}; - -#endif - // _WX_SCROLBAR_H_ diff --git a/include/wx/mac/settings.h b/include/wx/mac/settings.h deleted file mode 100644 index 8ed994f1ba..0000000000 --- a/include/wx/mac/settings.h +++ /dev/null @@ -1,133 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: settings.h -// Purpose: wxSystemSettings class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_SETTINGS_H_ -#define _WX_SETTINGS_H_ - -#ifdef __GNUG__ -#pragma interface "settings.h" -#endif - -#include "wx/setup.h" -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/colour.h" -#include "wx/font.h" - -#define wxSYS_WHITE_BRUSH 0 -#define wxSYS_LTGRAY_BRUSH 1 -#define wxSYS_GRAY_BRUSH 2 -#define wxSYS_DKGRAY_BRUSH 3 -#define wxSYS_BLACK_BRUSH 4 -#define wxSYS_NULL_BRUSH 5 -#define wxSYS_HOLLOW_BRUSH wxSYS_NULL_BRUSH -#define wxSYS_WHITE_PEN 6 -#define wxSYS_BLACK_PEN 7 -#define wxSYS_NULL_PEN 8 -#define wxSYS_OEM_FIXED_FONT 10 -#define wxSYS_ANSI_FIXED_FONT 11 -#define wxSYS_ANSI_VAR_FONT 12 -#define wxSYS_SYSTEM_FONT 13 -#define wxSYS_DEVICE_DEFAULT_FONT 14 -#define wxSYS_DEFAULT_PALETTE 15 -#define wxSYS_SYSTEM_FIXED_FONT 16 // Obsolete -#define wxSYS_DEFAULT_GUI_FONT 17 - -#define wxSYS_COLOUR_SCROLLBAR 0 -#define wxSYS_COLOUR_BACKGROUND 1 -#define wxSYS_COLOUR_ACTIVECAPTION 2 -#define wxSYS_COLOUR_INACTIVECAPTION 3 -#define wxSYS_COLOUR_MENU 4 -#define wxSYS_COLOUR_WINDOW 5 -#define wxSYS_COLOUR_WINDOWFRAME 6 -#define wxSYS_COLOUR_MENUTEXT 7 -#define wxSYS_COLOUR_WINDOWTEXT 8 -#define wxSYS_COLOUR_CAPTIONTEXT 9 -#define wxSYS_COLOUR_ACTIVEBORDER 10 -#define wxSYS_COLOUR_INACTIVEBORDER 11 -#define wxSYS_COLOUR_APPWORKSPACE 12 -#define wxSYS_COLOUR_HIGHLIGHT 13 -#define wxSYS_COLOUR_HIGHLIGHTTEXT 14 -#define wxSYS_COLOUR_BTNFACE 15 -#define wxSYS_COLOUR_BTNSHADOW 16 -#define wxSYS_COLOUR_GRAYTEXT 17 -#define wxSYS_COLOUR_BTNTEXT 18 -#define wxSYS_COLOUR_INACTIVECAPTIONTEXT 19 -#define wxSYS_COLOUR_BTNHIGHLIGHT 20 - -#define wxSYS_COLOUR_3DDKSHADOW 21 -#define wxSYS_COLOUR_3DLIGHT 22 -#define wxSYS_COLOUR_INFOTEXT 23 -#define wxSYS_COLOUR_INFOBK 24 - -#define wxSYS_COLOUR_DESKTOP wxSYS_COLOUR_BACKGROUND -#define wxSYS_COLOUR_3DFACE wxSYS_COLOUR_BTNFACE -#define wxSYS_COLOUR_3DSHADOW wxSYS_COLOUR_BTNSHADOW -#define wxSYS_COLOUR_3DHIGHLIGHT wxSYS_COLOUR_BTNHIGHLIGHT -#define wxSYS_COLOUR_3DHILIGHT wxSYS_COLOUR_BTNHIGHLIGHT -#define wxSYS_COLOUR_BTNHILIGHT wxSYS_COLOUR_BTNHIGHLIGHT - -// Metrics -#define wxSYS_MOUSE_BUTTONS 1 -#define wxSYS_BORDER_X 2 -#define wxSYS_BORDER_Y 3 -#define wxSYS_CURSOR_X 4 -#define wxSYS_CURSOR_Y 5 -#define wxSYS_DCLICK_X 6 -#define wxSYS_DCLICK_Y 7 -#define wxSYS_DRAG_X 8 -#define wxSYS_DRAG_Y 9 -#define wxSYS_EDGE_X 10 -#define wxSYS_EDGE_Y 11 -#define wxSYS_HSCROLL_ARROW_X 12 -#define wxSYS_HSCROLL_ARROW_Y 13 -#define wxSYS_HTHUMB_X 14 -#define wxSYS_ICON_X 15 -#define wxSYS_ICON_Y 16 -#define wxSYS_ICONSPACING_X 17 -#define wxSYS_ICONSPACING_Y 18 -#define wxSYS_WINDOWMIN_X 19 -#define wxSYS_WINDOWMIN_Y 20 -#define wxSYS_SCREEN_X 21 -#define wxSYS_SCREEN_Y 22 -#define wxSYS_FRAMESIZE_X 23 -#define wxSYS_FRAMESIZE_Y 24 -#define wxSYS_SMALLICON_X 25 -#define wxSYS_SMALLICON_Y 26 -#define wxSYS_HSCROLL_Y 27 -#define wxSYS_VSCROLL_X 28 -#define wxSYS_VSCROLL_ARROW_X 29 -#define wxSYS_VSCROLL_ARROW_Y 30 -#define wxSYS_VTHUMB_Y 31 -#define wxSYS_CAPTION_Y 32 -#define wxSYS_MENU_Y 33 -#define wxSYS_NETWORK_PRESENT 34 -#define wxSYS_PENWINDOWS_PRESENT 35 -#define wxSYS_SHOW_SOUNDS 36 -#define wxSYS_SWAP_BUTTONS 37 - -class WXDLLEXPORT wxSystemSettings: public wxObject -{ -public: - inline wxSystemSettings() {} - - // Get a system colour - static wxColour GetSystemColour(int index); - - // Get a system font - static wxFont GetSystemFont(int index); - - // Get a system metric, e.g. scrollbar size - static int GetSystemMetric(int index); -}; - -#endif - // _WX_SETTINGS_H_ diff --git a/include/wx/mac/setup.h b/include/wx/mac/setup.h deleted file mode 100644 index 74e055c016..0000000000 --- a/include/wx/mac/setup.h +++ /dev/null @@ -1,125 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: setup.h -// Purpose: Configuration for the library -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_SETUP_H_ -#define _WX_SETUP_H_ - -/* - * General features - * - */ - -#define wxUSE_CONSTRAINTS 1 - // Use constraints mechanism -#define wxUSE_CONFIG 1 - // Use wxConfig, with CreateConfig in wxApp -#define _WX_GOODCOMPILER__ - // gcc can have problems, but Windows compilers - // are generally OK. -#define WXWIN_COMPATIBILITY 1 - // Compatibility with 1.66 API. - // Level 0: no backward compatibility, all new features - // Level 1: wxDC, OnSize (etc.) compatibility, but - // some new features such as event tables - -#define wxUSE_POSTSCRIPT 1 - // 0 for no PostScript device context -#define wxUSE_AFM_FOR_POSTSCRIPT 0 - // 1 to use font metric files in GetTextExtent -#define wxUSE_METAFILE 1 - // 0 for no Metafile and metafile device context -#define wxUSE_IPC 1 - // 0 for no interprocess comms -#define wxUSE_HELP 1 - // 0 for no help facility -#define wxUSE_RESOURCES 1 - // 0 for no wxGetResource/wxWriteResource -#define wxUSE_CLIPBOARD 1 - // 0 for no clipboard functions -#define wxUSE_SPLINES 1 - // 0 for no splines -#define wxUSE_XFIG_SPLINE_CODE 1 - // 1 for XFIG spline code, 0 for AIAI spline code. -// AIAI spline code is slower, but freer of copyright issues. - // 0 for no splines - -#define wxUSE_TOOLBAR 1 - // Use toolbars -#define wxUSE_DRAG_AND_DROP 1 - // 0 for no drag and drop - -#define wxUSE_WX_RESOURCES 1 - // Use .wxr resource mechanism (requires PrologIO library) - -#define wxUSE_DOC_VIEW_ARCHITECTURE 1 - // Set to 0 to disable document/view architecture -#define wxUSE_PRINTING_ARCHITECTURE 1 - // Set to 0 to disable print/preview architecture code -#define wxUSE_POSTSCRIPT_ARCHITECTURE_IN_MSW 1 - // Set to 0 to disable PostScript print/preview architecture code - // under Windows (just use Windows printing). -#define wxUSE_DYNAMIC_CLASSES 1 - // If 1, enables provision of run-time type information. - // NOW MANDATORY: don't change. -#define wxUSE_MEMORY_TRACING 1 - // If 1, enables debugging versions of wxObject::new and - // wxObject::delete *IF* WXDEBUG is also defined. - // WARNING: this code may not work with all architectures, especially - // if alignment is an issue. -#define wxUSE_DEBUG_CONTEXT 1 - // If 1, enables wxDebugContext, for - // writing error messages to file, etc. - // If WXDEBUG is not defined, will still use - // normal memory operators. - // It's recommended to set this to 1, - // since you may well need to output - // an error log in a production - // version (or non-debugging beta) -#define wxUSE_GLOBAL_MEMORY_OPERATORS 0 - // In debug mode, cause new and delete to be redefined globally. - // If this causes problems (e.g. link errors), set this to 0. - -#define wxUSE_DEBUG_NEW_ALWAYS 1 - // In debug mode, causes new to be defined to - // be WXDEBUG_NEW (see object.h). - // If this causes problems (e.g. link errors), set this to 0. - -#define REMOVE_UNUSED_ARG 1 - // Set this to 0 if your compiler can't cope - // with omission of prototype parameters. - -#define wxUSE_C_MAIN 0 - // Set to 1 to use main.c instead of main.cpp (UNIX only) - -#define wxUSE_ODBC 0 - // Define 1 to use ODBC classes - -#define wxUSE_IOSTREAMH 0 - // VC++ 4.2 and above allows and - // but you can't mix them. Set to 1 for , - // 0 for - -#define wxUSE_WXCONFIG 1 - // if enabled, compiles built-in OS independent wxConfig - // class and it's file (any platform) and registry (Win) - // based implementations -/* - * Finer detail - * - */ - -#define wxUSE_APPLE_IEEE 1 - // if enabled, the float codec written by Apple - // will be used to write, in a portable way, - // float on the disk - -#endif - // _WX_SETUP_H_ diff --git a/include/wx/mac/slider.h b/include/wx/mac/slider.h deleted file mode 100644 index 239e914e5c..0000000000 --- a/include/wx/mac/slider.h +++ /dev/null @@ -1,91 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: slider.h -// Purpose: wxSlider class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_SLIDER_H_ -#define _WX_SLIDER_H_ - -#ifdef __GNUG__ -#pragma interface "slider.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxSliderNameStr; - -// Slider -class WXDLLEXPORT wxSlider: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxSlider) - -public: - wxSlider(); - - inline wxSlider(wxWindow *parent, wxWindowID id, - int value, int minValue, int maxValue, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxSL_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxSliderNameStr) - { - Create(parent, id, value, minValue, maxValue, pos, size, style, validator, name); - } - - ~wxSlider(); - - bool Create(wxWindow *parent, wxWindowID id, - int value, int minValue, int maxValue, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxSL_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxSliderNameStr); - - virtual int GetValue() const ; - virtual void SetValue(int); - void GetSize(int *x, int *y) const ; - void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - void GetPosition(int *x, int *y) const ; - bool Show(bool show); - - void SetRange(int minValue, int maxValue); - - inline int GetMin() const { return m_rangeMin; } - inline int GetMax() const { return m_rangeMax; } - - // For trackbars only - void SetTickFreq(int n, int pos); - inline int GetTickFreq() const { return m_tickFreq; } - void SetPageSize(int pageSize); - int GetPageSize() const ; - void ClearSel() ; - void ClearTicks() ; - void SetLineSize(int lineSize); - int GetLineSize() const ; - int GetSelEnd() const ; - int GetSelStart() const ; - void SetSelection(int minPos, int maxPos); - void SetThumbLength(int len) ; - int GetThumbLength() const ; - void SetTick(int tickPos) ; - - void Command(wxCommandEvent& event); - protected: - int m_rangeMin; - int m_rangeMax; - int m_pageSize; - int m_lineSize; - int m_tickFreq; -DECLARE_EVENT_TABLE() -}; - -#endif - // _WX_SLIDER_H_ diff --git a/include/wx/mac/spinbutt.h b/include/wx/mac/spinbutt.h deleted file mode 100644 index afdb978c3f..0000000000 --- a/include/wx/mac/spinbutt.h +++ /dev/null @@ -1,97 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: spinbutt.h -// Purpose: wxSpinButton class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_SPINBUTT_H_ -#define _WX_SPINBUTT_H_ - -#ifdef __GNUG__ -#pragma interface "spinbutt.h" -#endif - -#include "wx/control.h" -#include "wx/event.h" - -/* - The wxSpinButton is like a small scrollbar than is often placed next - to a text control. - - wxSP_HORIZONTAL: horizontal spin button - wxSP_VERTICAL: vertical spin button (the default) - wxSP_ARROW_KEYS: arrow keys increment/decrement value - wxSP_WRAP: value wraps at either end - */ - -class WXDLLEXPORT wxSpinButton: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxSpinButton) - public: - /* - * Public interface - */ - - wxSpinButton(); - - inline wxSpinButton(wxWindow *parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxSP_VERTICAL, const wxString& name = "wxSpinButton") - { - Create(parent, id, pos, size, style, name); - } - ~wxSpinButton(); - - bool Create(wxWindow *parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxSP_VERTICAL, const wxString& name = "wxSpinButton"); - - - // Attributes - //////////////////////////////////////////////////////////////////////////// - - int GetValue() const ; - void SetValue(int val) ; - void SetRange(int minVal, int maxVal) ; - inline int GetMin() const { return m_min; } - inline int GetMax() const { return m_max; } - - // Operations - //////////////////////////////////////////////////////////////////////////// - - void Command(wxCommandEvent& event) { ProcessCommand(event); }; - -protected: - int m_min; - int m_max; -}; - -class WXDLLEXPORT wxSpinEvent: public wxScrollEvent -{ - DECLARE_DYNAMIC_CLASS(wxSpinEvent) - - public: - wxSpinEvent(wxEventType commandType = wxEVT_NULL, int id = 0); -}; - -typedef void (wxEvtHandler::*wxSpinEventFunction)(wxSpinEvent&); - -// Spin events - -#define EVT_SPIN_UP(id, func) { wxEVT_SCROLL_LINEUP, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func } -#define EVT_SPIN_DOWN(id, func) { wxEVT_SCROLL_LINEDOWN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func } - -#define EVT_SPIN(id, func) \ - { wxEVT_SCROLL_TOP, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func },\ - { wxEVT_SCROLL_BOTTOM, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func },\ - { wxEVT_SCROLL_LINEUP, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func },\ - { wxEVT_SCROLL_LINEDOWN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func },\ - { wxEVT_SCROLL_PAGEUP, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func },\ - { wxEVT_SCROLL_PAGEDOWN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func },\ - { wxEVT_SCROLL_THUMBTRACK, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func }, - -#endif - // _WX_SPINBUTT_H_ diff --git a/include/wx/mac/statbmp.h b/include/wx/mac/statbmp.h deleted file mode 100644 index f371fddd2d..0000000000 --- a/include/wx/mac/statbmp.h +++ /dev/null @@ -1,64 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: statbmp.h -// Purpose: wxStaticBitmap class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_STATBMP_H_ -#define _WX_STATBMP_H_ - -#ifdef __GNUG__ -#pragma interface "statbmp.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxStaticBitmapNameStr; - -class WXDLLEXPORT wxStaticBitmap: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxStaticBitmap) - public: - inline wxStaticBitmap() { } - - inline wxStaticBitmap(wxWindow *parent, wxWindowID id, - const wxBitmap& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = wxStaticBitmapNameStr) - { - Create(parent, id, label, pos, size, style, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - const wxBitmap& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = wxStaticBitmapNameStr); - - virtual void SetBitmap(const wxBitmap& bitmap); - - virtual void Command(wxCommandEvent& WXUNUSED(event)) {}; - virtual void ProcessCommand(wxCommandEvent& WXUNUSED(event)) {}; - - void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - - inline wxBitmap& GetBitmap() const { return (wxBitmap&) m_messageBitmap; } - - // overriden base class virtuals - virtual bool AcceptsFocus() const { return FALSE; } - - protected: - wxBitmap m_messageBitmap; - -}; - -#endif - // _WX_STATBMP_H_ diff --git a/include/wx/mac/statbox.h b/include/wx/mac/statbox.h deleted file mode 100644 index 1aa4a6f88a..0000000000 --- a/include/wx/mac/statbox.h +++ /dev/null @@ -1,57 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: statbox.h -// Purpose: wxStaticBox class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_STATBOX_H_ -#define _WX_STATBOX_H_ - -#ifdef __GNUG__ -#pragma interface "statbox.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxStaticBoxNameStr; - -// Group box -class WXDLLEXPORT wxStaticBox: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxStaticBox) - - public: - inline wxStaticBox() {} - inline wxStaticBox(wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = wxStaticBoxNameStr) - { - Create(parent, id, label, pos, size, style, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = wxStaticBoxNameStr); - - virtual void Command(wxCommandEvent& WXUNUSED(event)) {}; - virtual void ProcessCommand(wxCommandEvent& WXUNUSED(event)) {}; - - void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - void SetLabel(const wxString& label); - -DECLARE_EVENT_TABLE() -}; - -#endif - // _WX_STATBOX_H_ diff --git a/include/wx/mac/stattext.h b/include/wx/mac/stattext.h deleted file mode 100644 index aa8eaf229e..0000000000 --- a/include/wx/mac/stattext.h +++ /dev/null @@ -1,56 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: stattext.h -// Purpose: wxStaticText class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_STATTEXT_H_ -#define _WX_STATTEXT_H_ - -#ifdef __GNUG__ -#pragma interface "stattext.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxStaticTextNameStr; - -class WXDLLEXPORT wxStaticText: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxStaticText) - public: - inline wxStaticText() { } - - inline wxStaticText(wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = wxStaticTextNameStr) - { - Create(parent, id, label, pos, size, style, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = wxStaticTextNameStr); - - // accessors - void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - void SetLabel(const wxString&); - - // operations - virtual void Command(wxCommandEvent& WXUNUSED(event)) {}; - virtual void ProcessCommand(wxCommandEvent& WXUNUSED(event)) {}; -}; - -#endif - // _WX_STATTEXT_H_ diff --git a/include/wx/mac/statusbr.h b/include/wx/mac/statusbr.h deleted file mode 100644 index c5dcc0dc7d..0000000000 --- a/include/wx/mac/statusbr.h +++ /dev/null @@ -1,54 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: statusbr.h -// Purpose: native implementation of wxStatusBar. Optional; can use generic -// version instead. -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_STATBAR_H_ -#define _WX_STATBAR_H_ - -#ifdef __GNUG__ -#pragma interface "statbar.h" -#endif - -#include "wx/generic/statusbr.h" - -class WXDLLEXPORT wxStatusBarXX : public wxStatusBar -{ - DECLARE_DYNAMIC_CLASS(wxStatusBarXX); - -public: - // ctors - wxStatusBarXX(); - wxStatusBarXX(wxWindow *parent, wxWindowID id = -1, long style = wxST_SIZEGRIP); - - // create status line - bool Create(wxWindow *parent, wxWindowID id = -1, long style = wxST_SIZEGRIP); - - // a status line can have several (<256) fields numbered from 0 - virtual void SetFieldsCount(int number = 1, const int widths[] = NULL); - - // each field of status line has its own text - virtual void SetStatusText(const wxString& text, int number = 0); - virtual wxString GetStatusText(int number = 0) const; - - // set status line fields' widths - virtual void SetStatusWidths(int n, const int widths_field[]); - - void OnSize(wxSizeEvent& event); - - DECLARE_EVENT_TABLE() - -protected: - void CopyFieldsWidth(const int widths[]); - void SetFieldsWidth(); -}; - -#endif - // _WX_STATBAR_H_ \ No newline at end of file diff --git a/include/wx/mac/tabctrl.h b/include/wx/mac/tabctrl.h deleted file mode 100644 index 80740019b4..0000000000 --- a/include/wx/mac/tabctrl.h +++ /dev/null @@ -1,138 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: tabctrl.h -// Purpose: wxTabCtrl class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_TABCTRL_H_ -#define _WX_TABCTRL_H_ - -#ifdef __GNUG__ -#pragma interface "tabctrl.h" -#endif - -class wxImageList; - -/* - * Flags returned by HitTest - */ - -#define wxTAB_HITTEST_NOWHERE 1 -#define wxTAB_HITTEST_ONICON 2 -#define wxTAB_HITTEST_ONLABEL 4 -#define wxTAB_HITTEST_ONITEM 6 - -class WXDLLEXPORT wxTabCtrl: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxTabCtrl) - public: - /* - * Public interface - */ - - wxTabCtrl(); - - inline wxTabCtrl(wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = 0, const wxString& name = "tabCtrl") - { - Create(parent, id, pos, size, style, name); - } - ~wxTabCtrl(); - -// Accessors - - // Get the selection - int GetSelection() const; - - // Get the tab with the current keyboard focus - int GetCurFocus() const; - - // Get the associated image list - wxImageList* GetImageList() const; - - // Get the number of items - int GetItemCount() const; - - // Get the rect corresponding to the tab - bool GetItemRect(int item, wxRect& rect) const; - - // Get the number of rows - int GetRowCount() const; - - // Get the item text - wxString GetItemText(int item) const ; - - // Get the item image - int GetItemImage(int item) const; - - // Get the item data - void* GetItemData(int item) const; - - // Set the selection - int SetSelection(int item); - - // Set the image list - void SetImageList(wxImageList* imageList); - - // Set the text for an item - bool SetItemText(int item, const wxString& text); - - // Set the image for an item - bool SetItemImage(int item, int image); - - // Set the data for an item - bool SetItemData(int item, void* data); - - // Set the size for a fixed-width tab control - void SetItemSize(const wxSize& size); - - // Set the padding between tabs - void SetPadding(const wxSize& padding); - -// Operations - - bool Create(wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = 0, const wxString& name = "tabCtrl"); - - // Delete all items - bool DeleteAllItems(); - - // Delete an item - bool DeleteItem(int item); - - // Hit test - int HitTest(const wxPoint& pt, long& flags); - - // Insert an item - bool InsertItem(int item, const wxString& text, int imageId = -1, void* data = NULL); - - void Command(wxCommandEvent& event); - -protected: - wxImageList* m_imageList; - -DECLARE_EVENT_TABLE() -}; - -class WXDLLEXPORT wxTabEvent: public wxCommandEvent -{ - DECLARE_DYNAMIC_CLASS(wxTabEvent) - - public: - wxTabEvent(wxEventType commandType = wxEVT_NULL, int id = 0); -}; - -typedef void (wxEvtHandler::*wxTabEventFunction)(wxTabEvent&); - -#define EVT_TAB_SEL_CHANGED(id, fn) { wxEVT_COMMAND_TAB_SEL_CHANGED, \ - id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTabEventFunction) & fn, NULL }, -#define EVT_TAB_SEL_CHANGING(id, fn) { wxEVT_COMMAND_TAB_SEL_CHANGING, \ - id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTabEventFunction) & fn, NULL }, - -#endif - // _WX_TABCTRL_H_ diff --git a/include/wx/mac/taskbar.h b/include/wx/mac/taskbar.h deleted file mode 100644 index 7f4a36b8b4..0000000000 --- a/include/wx/mac/taskbar.h +++ /dev/null @@ -1,49 +0,0 @@ -///////////////////////////////////////////////////////////////////////// -// File: taskbar.h -// Purpose: Defines wxTaskBarIcon class for manipulating icons on the -// task bar. Optional. -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////// - -#ifndef _WX_TASKBAR_H_ -#define _WX_TASKBAR_H_ - -#ifdef __GNUG__ -#pragma interface "taskbar.h" -#endif - -#include -#include - -class wxTaskBarIcon: public wxObject -{ -public: - wxTaskBarIcon(); - virtual ~wxTaskBarIcon(); - -// Accessors - -// Operations - bool SetIcon(const wxIcon& icon, const wxString& tooltip = ""); - bool RemoveIcon(); - -// Overridables - virtual void OnMouseMove(); - virtual void OnLButtonDown(); - virtual void OnLButtonUp(); - virtual void OnRButtonDown(); - virtual void OnRButtonUp(); - virtual void OnLButtonDClick(); - virtual void OnRButtonDClick(); - -// Data members -protected: -}; - -#endif - // _WX_TASKBAR_H_ diff --git a/include/wx/mac/textctrl.h b/include/wx/mac/textctrl.h deleted file mode 100644 index 253491eaa0..0000000000 --- a/include/wx/mac/textctrl.h +++ /dev/null @@ -1,139 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: textctrl.h -// Purpose: wxTextCtrl class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_TEXTCTRL_H_ -#define _WX_TEXTCTRL_H_ - -#ifdef __GNUG__ -#pragma interface "textctrl.h" -#endif - -#include "wx/control.h" - -#if wxUSE_IOSTREAMH -#include -#else -#include -#endif - -WXDLLEXPORT_DATA(extern const char*) wxTextCtrlNameStr; -WXDLLEXPORT_DATA(extern const char*) wxEmptyString; - -// Single-line text item -class WXDLLEXPORT wxTextCtrl: public wxControl - -// TODO Some platforms/compilers don't like inheritance from streambuf. - -#if (defined(__BORLANDC__) && !defined(__WIN32__)) || defined(__MWERKS__) -#define NO_TEXT_WINDOW_STREAM -#endif - -#ifndef NO_TEXT_WINDOW_STREAM -, public streambuf -#endif - -{ - DECLARE_DYNAMIC_CLASS(wxTextCtrl) - -public: - // creation - // -------- - wxTextCtrl(); - inline wxTextCtrl(wxWindow *parent, wxWindowID id, - const wxString& value = wxEmptyString, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxTextCtrlNameStr) -#ifndef NO_TEXT_WINDOW_STREAM - :streambuf() -#endif - { - Create(parent, id, value, pos, size, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - const wxString& value = wxEmptyString, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxTextCtrlNameStr); - - // accessors - // --------- - virtual wxString GetValue() const ; - virtual void SetValue(const wxString& value); - - virtual int GetLineLength(long lineNo) const; - virtual wxString GetLineText(long lineNo) const; - virtual int GetNumberOfLines() const; - - // operations - // ---------- - virtual void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - - // Clipboard operations - virtual void Copy(); - virtual void Cut(); - virtual void Paste(); - - virtual void SetInsertionPoint(long pos); - virtual void SetInsertionPointEnd(); - virtual long GetInsertionPoint() const ; - virtual long GetLastPosition() const ; - virtual void Replace(long from, long to, const wxString& value); - virtual void Remove(long from, long to); - virtual void SetSelection(long from, long to); - virtual void SetEditable(bool editable); - - // streambuf implementation -#ifndef NO_TEXT_WINDOW_STREAM - int overflow(int i); - int sync(); - int underflow(); -#endif - - wxTextCtrl& operator<<(const wxString& s); - wxTextCtrl& operator<<(int i); - wxTextCtrl& operator<<(long i); - wxTextCtrl& operator<<(float f); - wxTextCtrl& operator<<(double d); - wxTextCtrl& operator<<(const char c); - - virtual bool LoadFile(const wxString& file); - virtual bool SaveFile(const wxString& file); - virtual void WriteText(const wxString& text); - virtual void DiscardEdits(); - virtual bool IsModified() const; - - virtual long XYToPosition(long x, long y) const ; - virtual void PositionToXY(long pos, long *x, long *y) const ; - virtual void ShowPosition(long pos); - virtual void Clear(); - - // callbacks - // --------- - void OnDropFiles(wxDropFilesEvent& event); -// void OnChar(wxKeyEvent& event); // Process 'enter' if required -// void OnEraseBackground(wxEraseEvent& event); - - // Implementation - // -------------- - virtual void Command(wxCommandEvent& event); - -protected: - wxString m_fileName; - - DECLARE_EVENT_TABLE() -}; - -#endif - // _WX_TEXTCTRL_H_ diff --git a/include/wx/mac/timer.h b/include/wx/mac/timer.h deleted file mode 100644 index 953da997c6..0000000000 --- a/include/wx/mac/timer.h +++ /dev/null @@ -1,64 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: timer.h -// Purpose: wxTimer class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_TIMER_H_ -#define _WX_TIMER_H_ - -#ifdef __GNUG__ -#pragma interface "timer.h" -#endif - -#include "wx/object.h" - -class WXDLLEXPORT wxTimer: public wxObject -{ -public: - wxTimer(); - ~wxTimer(); - - virtual bool Start(int milliseconds = -1, - bool one_shot = FALSE); // Start timer - virtual void Stop(); // Stop timer - - virtual void Notify() = 0; // Override this member - - // Returns the current interval time (0 if stop) - int Interval() const { return m_milli; }; - bool OneShot() const { return m_oneShot; } - -protected: - bool m_oneShot ; - int m_milli ; - int m_lastMilli ; - - long m_id; - -private: - DECLARE_ABSTRACT_CLASS(wxTimer) -}; - -/* Note: these are implemented in common/timercmn.cpp, so need to implement them separately. - * But you may need to modify timercmn.cpp. - */ - -// Timer functions (milliseconds) -void WXDLLEXPORT wxStartTimer(); -// Gets time since last wxStartTimer or wxGetElapsedTime -long WXDLLEXPORT wxGetElapsedTime(bool resetTimer = TRUE); - -// EXPERIMENTAL: comment this out if it doesn't compile. -bool WXDLLEXPORT wxGetLocalTime(long *timeZone, int *dstObserved); - -// Get number of seconds since 00:00:00 GMT, Jan 1st 1970. -long WXDLLEXPORT wxGetCurrentTime(); - -#endif - // _WX_TIMER_H_ diff --git a/include/wx/mac/toolbar.h b/include/wx/mac/toolbar.h deleted file mode 100644 index e42c5827ef..0000000000 --- a/include/wx/mac/toolbar.h +++ /dev/null @@ -1,77 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: toolbar.h -// Purpose: wxToolBar class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_TOOLBAR_H_ -#define _WX_TOOLBAR_H_ - -#ifdef __GNUG__ -#pragma interface "toolbar.h" -#endif - -#include "wx/tbarbase.h" - -WXDLLEXPORT_DATA(extern const char*) wxToolBarNameStr; - -class WXDLLEXPORT wxToolBar: public wxToolBarBase -{ - DECLARE_DYNAMIC_CLASS(wxToolBar) - public: - /* - * Public interface - */ - - wxToolBar(); - - inline wxToolBar(wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxNO_BORDER|wxTB_HORIZONTAL, - const wxString& name = wxToolBarNameStr) - { - Create(parent, id, pos, size, style, name); - } - ~wxToolBar(); - - bool Create(wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxNO_BORDER|wxTB_HORIZONTAL, - const wxString& name = wxToolBarNameStr); - - // If pushedBitmap is NULL, a reversed version of bitmap is - // created and used as the pushed/toggled image. - // If toggle is TRUE, the button toggles between the two states. - wxToolBarTool *AddTool(int toolIndex, const wxBitmap& bitmap, const wxBitmap& pushedBitmap = wxNullBitmap, - bool toggle = FALSE, long xPos = -1, long yPos = -1, wxObject *clientData = NULL, - const wxString& helpString1 = "", const wxString& helpString2 = ""); - - // Set default bitmap size - void SetToolBitmapSize(const wxSize& size); - void EnableTool(int toolIndex, bool enable); // additional drawing on enabling - void ToggleTool(int toolIndex, bool toggle); // toggle is TRUE if toggled on - void ClearTools(); - - // The button size is bigger than the bitmap size - wxSize GetToolSize() const; - - wxSize GetMaxSize() const; - - // Add all the buttons - virtual bool CreateTools(); - virtual void Layout() {} - - // The post-tool-addition call. TODO: do here whatever's - // necessary for completing the toolbar construction. - bool Realize() { return CreateTools(); }; - -protected: - -DECLARE_EVENT_TABLE() -}; - -#endif - // _WX_TOOLBAR_H_ diff --git a/include/wx/mac/treectrl.h b/include/wx/mac/treectrl.h deleted file mode 100644 index cb307ec0e9..0000000000 --- a/include/wx/mac/treectrl.h +++ /dev/null @@ -1,295 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: treectrl.h -// Purpose: wxTreeCtrl class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_TREECTRL_H_ -#define _WX_TREECTRL_H_ - -#ifdef __GNUG__ -#pragma interface "treectrl.h" -#endif - -#include "wx/control.h" -#include "wx/event.h" -#include "wx/imaglist.h" - -#define wxTREE_MASK_HANDLE 0x0001 -#define wxTREE_MASK_STATE 0x0002 -#define wxTREE_MASK_TEXT 0x0004 -#define wxTREE_MASK_IMAGE 0x0008 -#define wxTREE_MASK_SELECTED_IMAGE 0x0010 -#define wxTREE_MASK_CHILDREN 0x0020 -#define wxTREE_MASK_DATA 0x0040 - -#define wxTREE_STATE_BOLD 0x0001 -#define wxTREE_STATE_DROPHILITED 0x0002 -#define wxTREE_STATE_EXPANDED 0x0004 -#define wxTREE_STATE_EXPANDEDONCE 0x0008 -#define wxTREE_STATE_FOCUSED 0x0010 -#define wxTREE_STATE_SELECTED 0x0020 -#define wxTREE_STATE_CUT 0x0040 - -#define wxTREE_HITTEST_ABOVE 0x0001 // Above the client area. -#define wxTREE_HITTEST_BELOW 0x0002 // Below the client area. -#define wxTREE_HITTEST_NOWHERE 0x0004 // In the client area but below the last item. -#define wxTREE_HITTEST_ONITEMBUTTON 0x0010 // On the button associated with an item. -#define wxTREE_HITTEST_ONITEMICON 0x0020 // On the bitmap associated with an item. -#define wxTREE_HITTEST_ONITEMINDENT 0x0040 // In the indentation associated with an item. -#define wxTREE_HITTEST_ONITEMLABEL 0x0080 // On the label (string) associated with an item. -#define wxTREE_HITTEST_ONITEMRIGHT 0x0100 // In the area to the right of an item. -#define wxTREE_HITTEST_ONITEMSTATEICON 0x0200 // On the state icon for a tree view item that is in a user-defined state. -#define wxTREE_HITTEST_TOLEFT 0x0400 // To the right of the client area. -#define wxTREE_HITTEST_TORIGHT 0x0800 // To the left of the client area. - -#define wxTREE_HITTEST_ONITEM (wxTREE_HITTEST_ONITEMICON | wxTREE_HITTEST_ONITEMLABEL | wxTREE_HITTEST_ONITEMSTATEICON) - -// Flags for GetNextItem -enum { - wxTREE_NEXT_CARET, // Retrieves the currently selected item. - wxTREE_NEXT_CHILD, // Retrieves the first child item. The hItem parameter must be NULL. - wxTREE_NEXT_DROPHILITE, // Retrieves the item that is the target of a drag-and-drop operation. - wxTREE_NEXT_FIRSTVISIBLE, // Retrieves the first visible item. - wxTREE_NEXT_NEXT, // Retrieves the next sibling item. - wxTREE_NEXT_NEXTVISIBLE, // Retrieves the next visible item that follows the specified item. - wxTREE_NEXT_PARENT, // Retrieves the parent of the specified item. - wxTREE_NEXT_PREVIOUS, // Retrieves the previous sibling item. - wxTREE_NEXT_PREVIOUSVISIBLE, // Retrieves the first visible item that precedes the specified item. - wxTREE_NEXT_ROOT // Retrieves the first child item of the root item of which the specified item is a part. -}; - -// Flags for ExpandItem -enum { - wxTREE_EXPAND_EXPAND, - wxTREE_EXPAND_COLLAPSE, - wxTREE_EXPAND_COLLAPSE_RESET, - wxTREE_EXPAND_TOGGLE -}; - -// Flags for InsertItem -enum { - wxTREE_INSERT_LAST = -1, - wxTREE_INSERT_FIRST = -2, - wxTREE_INSERT_SORT = -3 -}; - -class WXDLLEXPORT wxTreeItem: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxTreeItem) -public: - long m_mask; - long m_itemId; - long m_state; - long m_stateMask; - wxString m_text; - int m_image; - int m_selectedImage; - int m_children; - long m_data; - - wxTreeItem(); - -// Accessors - inline long GetMask() const { return m_mask; } - inline long GetItemId() const { return m_itemId; } - inline long GetState() const { return m_state; } - inline long GetStateMask() const { return m_stateMask; } - inline wxString GetText() const { return m_text; } - inline int GetImage() const { return m_image; } - inline int GetSelectedImage() const { return m_selectedImage; } - inline int GetChildren() const { return m_children; } - inline long GetData() const { return m_data; } - - inline void SetMask(long mask) { m_mask = mask; } - inline void SetItemId(long id) { m_itemId = m_itemId = id; } - inline void SetState(long state) { m_state = state; } - inline void SetStateMask(long stateMask) { m_stateMask = stateMask; } - inline void GetText(const wxString& text) { m_text = text; } - inline void SetImage(int image) { m_image = image; } - inline void GetSelectedImage(int selImage) { m_selectedImage = selImage; } - inline void SetChildren(int children) { m_children = children; } - inline void SetData(long data) { m_data = data; } -}; - -class WXDLLEXPORT wxTreeCtrl: public wxControl -{ -public: - /* - * Public interface - */ - - // creation - // -------- - wxTreeCtrl(); - - inline wxTreeCtrl(wxWindow *parent, wxWindowID id = -1, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxTR_HAS_BUTTONS|wxTR_LINES_AT_ROOT, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = "wxTreeCtrl") - { - Create(parent, id, pos, size, style, validator, name); - } - ~wxTreeCtrl(); - - bool Create(wxWindow *parent, wxWindowID id = -1, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxTR_HAS_BUTTONS|wxTR_LINES_AT_ROOT, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = "wxTreeCtrl"); - - // accessors - // --------- - // - int GetCount() const; - - // indent - int GetIndent() const; - void SetIndent(int indent); - // image list - wxImageList *GetImageList(int which = wxIMAGE_LIST_NORMAL) const; - void SetImageList(wxImageList *imageList, int which = wxIMAGE_LIST_NORMAL); - - // navigation inside the tree - long GetNextItem(long item, int code) const; - bool ItemHasChildren(long item) const; - long GetChild(long item) const; - long GetParent(long item) const; - long GetFirstVisibleItem() const; - long GetNextVisibleItem(long item) const; - long GetSelection() const; - long GetRootItem() const; - - // generic function for (g|s)etting item attributes - bool GetItem(wxTreeItem& info) const; - bool SetItem(wxTreeItem& info); - // item state - int GetItemState(long item, long stateMask) const; - bool SetItemState(long item, long state, long stateMask); - // item image - bool SetItemImage(long item, int image, int selImage); - // item text - wxString GetItemText(long item) const; - void SetItemText(long item, const wxString& str); - // custom data associated with the item - long GetItemData(long item) const; - bool SetItemData(long item, long data); - // convenience function - bool IsItemExpanded(long item) - { - return (GetItemState(item, wxTREE_STATE_EXPANDED) & - wxTREE_STATE_EXPANDED) != 0; - } - - // bounding rect - bool GetItemRect(long item, wxRect& rect, bool textOnly = FALSE) const; - // - wxTextCtrl* GetEditControl() const; - - // operations - // ---------- - // adding/deleting items - bool DeleteItem(long item); - long InsertItem(long parent, wxTreeItem& info, - long insertAfter = wxTREE_INSERT_LAST); - // If image > -1 and selImage == -1, the same image is used for - // both selected and unselected items. - long InsertItem(long parent, const wxString& label, - int image = -1, int selImage = -1, - long insertAfter = wxTREE_INSERT_LAST); - - // changing item state - bool ExpandItem(long item) { return ExpandItem(item, wxTREE_EXPAND_EXPAND); } - bool CollapseItem(long item) { return ExpandItem(item, wxTREE_EXPAND_COLLAPSE); } - bool ToggleItem(long item) { return ExpandItem(item, wxTREE_EXPAND_TOGGLE); } - // common interface for {Expand|Collapse|Toggle}Item - bool ExpandItem(long item, int action); - - // - bool SelectItem(long item); - bool ScrollTo(long item); - bool DeleteAllItems(); - - // Edit the label (tree must have the focus) - wxTextCtrl* EditLabel(long item, wxClassInfo* textControlClass = CLASSINFO(wxTextCtrl)); - - // End label editing, optionally cancelling the edit - bool EndEditLabel(bool cancel); - - long HitTest(const wxPoint& point, int& flags); - // wxImageList *CreateDragImage(long item); - bool SortChildren(long item); - bool EnsureVisible(long item); - - void Command(wxCommandEvent& event) { ProcessCommand(event); }; - -protected: - wxTextCtrl* m_textCtrl; - wxImageList* m_imageListNormal; - wxImageList* m_imageListState; - - DECLARE_DYNAMIC_CLASS(wxTreeCtrl) -}; - -/* - wxEVT_COMMAND_TREE_BEGIN_DRAG, - wxEVT_COMMAND_TREE_BEGIN_RDRAG, - wxEVT_COMMAND_TREE_BEGIN_LABEL_EDIT, - wxEVT_COMMAND_TREE_END_LABEL_EDIT, - wxEVT_COMMAND_TREE_DELETE_ITEM, - wxEVT_COMMAND_TREE_GET_INFO, - wxEVT_COMMAND_TREE_SET_INFO, - wxEVT_COMMAND_TREE_ITEM_EXPANDED, - wxEVT_COMMAND_TREE_ITEM_EXPANDING, - wxEVT_COMMAND_TREE_ITEM_COLLAPSED, - wxEVT_COMMAND_TREE_ITEM_COLLAPSING, - wxEVT_COMMAND_TREE_SEL_CHANGED, - wxEVT_COMMAND_TREE_SEL_CHANGING, - wxEVT_COMMAND_TREE_KEY_DOWN -*/ - -class WXDLLEXPORT wxTreeEvent: public wxCommandEvent -{ - DECLARE_DYNAMIC_CLASS(wxTreeEvent) - - public: - wxTreeEvent(wxEventType commandType = wxEVT_NULL, int id = 0); - - int m_code; - wxTreeItem m_item; - long m_oldItem; - wxPoint m_pointDrag; - - inline long GetOldItem() const { return m_oldItem; } - inline wxTreeItem& GetItem() const { return (wxTreeItem&) m_item; } - inline wxPoint GetPoint() const { return m_pointDrag; } - inline int GetCode() const { return m_code; } -}; - -typedef void (wxEvtHandler::*wxTreeEventFunction)(wxTreeEvent&); - -#define EVT_TREE_BEGIN_DRAG(id, fn) { wxEVT_COMMAND_TREE_BEGIN_DRAG, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TREE_BEGIN_RDRAG(id, fn) { wxEVT_COMMAND_TREE_BEGIN_RDRAG, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TREE_BEGIN_LABEL_EDIT(id, fn) { wxEVT_COMMAND_TREE_BEGIN_LABEL_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TREE_END_LABEL_EDIT(id, fn) { wxEVT_COMMAND_TREE_END_LABEL_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TREE_DELETE_ITEM(id, fn) { wxEVT_COMMAND_TREE_DELETE_ITEM, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TREE_GET_INFO(id, fn) { wxEVT_COMMAND_TREE_GET_INFO, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TREE_SET_INFO(id, fn) { wxEVT_COMMAND_TREE_SET_INFO, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TREE_ITEM_EXPANDED(id, fn) { wxEVT_COMMAND_TREE_ITEM_EXPANDED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TREE_ITEM_EXPANDING(id, fn) { wxEVT_COMMAND_TREE_ITEM_EXPANDING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TREE_ITEM_COLLAPSED(id, fn) { wxEVT_COMMAND_TREE_ITEM_COLLAPSED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TREE_ITEM_COLLAPSING(id, fn) { wxEVT_COMMAND_TREE_ITEM_COLLAPSING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TREE_SEL_CHANGED(id, fn) { wxEVT_COMMAND_TREE_SEL_CHANGED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TREE_SEL_CHANGING(id, fn) { wxEVT_COMMAND_TREE_SEL_CHANGING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TREE_KEY_DOWN(id, fn) { wxEVT_COMMAND_TREE_KEY_DOWN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, - -#endif - // _WX_TREECTRL_H_ diff --git a/include/wx/mac/wave.h b/include/wx/mac/wave.h deleted file mode 100644 index e55bd5aa5f..0000000000 --- a/include/wx/mac/wave.h +++ /dev/null @@ -1,44 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: wave.h -// Purpose: wxWave class (loads and plays short Windows .wav files). -// Optional on non-Windows platforms. -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_WAVE_H_ -#define _WX_WAVE_H_ - -#ifdef __GNUG__ -#pragma interface "wave.h" -#endif - -#include "wx/object.h" - -class wxWave : public wxObject -{ -public: - wxWave(); - wxWave(const wxString& fileName, bool isResource = FALSE); - ~wxWave(); - -public: - bool Create(const wxString& fileName, bool isResource = FALSE); - bool IsOk() const { return (m_waveData ? TRUE : FALSE); }; - bool Play(bool async = TRUE, bool looped = FALSE) const; - -protected: - bool Free(); - -private: - char* m_waveData; - int m_waveLength; - bool m_isResource; -}; - -#endif - // _WX_WAVE_H_ diff --git a/include/wx/mac/window.h b/include/wx/mac/window.h deleted file mode 100644 index 75809c01b1..0000000000 --- a/include/wx/mac/window.h +++ /dev/null @@ -1,569 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: window.h -// Purpose: wxWindow class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_WINDOW_H_ -#define _WX_WINDOW_H_ - -#ifdef __GNUG__ -#pragma interface "window.h" -#endif - -#include "wx/gdicmn.h" -#include "wx/icon.h" -#include "wx/cursor.h" -#include "wx/pen.h" -#include "wx/font.h" -#include "wx/validate.h" -#include "wx/event.h" -#include "wx/string.h" -#include "wx/list.h" -#include "wx/region.h" -#include "wx/accel.h" - -#define wxKEY_SHIFT 1 -#define wxKEY_CTRL 2 - -/* - * Base class for frame, panel, canvas, panel items, dialog box. - * - */ - -/* - * Event handler: windows have themselves as their event handlers - * by default, but their event handlers could be set to another - * object entirely. This separation can reduce the amount of - * derivation required, and allow alteration of a window's functionality - * (e.g. by a resource editor that temporarily switches event handlers). - */ - -class WXDLLEXPORT wxWindow; -class WXDLLEXPORT wxEvent; -class WXDLLEXPORT wxCommandEvent; -class WXDLLEXPORT wxKeyEvent; -class WXDLLEXPORT wxControl; -class WXDLLEXPORT wxCursor; -class WXDLLEXPORT wxColourMap; -class WXDLLEXPORT wxFont; -class WXDLLEXPORT wxMenu; -class WXDLLEXPORT wxRect; -class WXDLLEXPORT wxBitmap; -class WXDLLEXPORT wxSizer; -class WXDLLEXPORT wxList; -class WXDLLEXPORT wxLayoutConstraints; -class WXDLLEXPORT wxMouseEvent; -class WXDLLEXPORT wxButton; -class WXDLLEXPORT wxColour; -class WXDLLEXPORT wxBrush; -class WXDLLEXPORT wxPen; -class WXDLLEXPORT wxIcon; -class WXDLLEXPORT wxDC; -class WXDLLEXPORT wxValidator; - -#if wxUSE_DRAG_AND_DROP -class WXDLLEXPORT wxDropTarget; -#endif - -#if wxUSE_WX_RESOURCES -class WXDLLEXPORT wxResourceTable; -class WXDLLEXPORT wxItemResource; -#endif - -WXDLLEXPORT_DATA(extern const char*) wxPanelNameStr; - -WXDLLEXPORT_DATA(extern const wxSize) wxDefaultSize; -WXDLLEXPORT_DATA(extern const wxPoint) wxDefaultPosition; - -//----------------------------------------------------------------------------- -// wxClientData -//----------------------------------------------------------------------------- - -class wxClientData -{ -public: - wxClientData() { } - virtual ~wxClientData() { } -}; - -//----------------------------------------------------------------------------- -// wxStringClientData -//----------------------------------------------------------------------------- - -class wxStringClientData: public wxClientData -{ -public: - wxStringClientData() { } - wxStringClientData( wxString &data ) { m_data = data; } - void SetData( wxString &data ) { m_data = data; } - wxString GetData() const { return m_data; } - -private: - wxString m_data; -}; - -class WXDLLEXPORT wxWindow: public wxEvtHandler -{ - DECLARE_ABSTRACT_CLASS(wxWindow) - - friend class wxDC; - friend class wxPaintDC; - -public: - wxWindow(); - inline wxWindow(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = wxPanelNameStr) - { - m_children = new wxList; - Create(parent, id, pos, size, style, name); - } - - virtual ~wxWindow(); - - bool Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = wxPanelNameStr); - - // Fit the window around the items - virtual void Fit(); - - // Show or hide the window - virtual bool Show(bool show); - - // Is the window shown? - virtual bool IsShown() const; - - // Raise the window to the top of the Z order - virtual void Raise(); - - // Lower the window to the bottom of the Z order - virtual void Lower(); - - // Is the window enabled? - virtual bool IsEnabled() const; - - // For compatibility - inline bool Enabled() const { return IsEnabled(); } - - // Dialog support: override these and call - // base class members to add functionality - // that can't be done using validators. - - // Transfer values to controls. If returns FALSE, - // it's an application error (pops up a dialog) - virtual bool TransferDataToWindow(); - - // Transfer values from controls. If returns FALSE, - // transfer failed: don't quit - virtual bool TransferDataFromWindow(); - - // Validate controls. If returns FALSE, - // validation failed: don't quit - virtual bool Validate(); - - // Return code for dialogs - inline void SetReturnCode(int retCode); - inline int GetReturnCode(); - - // Set the cursor - virtual void SetCursor(const wxCursor& cursor); - inline virtual wxCursor *GetCursor() const { return (wxCursor *)& m_windowCursor; }; - - // Get the window with the focus - static wxWindow *FindFocus(); - - // Get character size - virtual int GetCharHeight() const; - virtual int GetCharWidth() const; - - // Get overall window size - virtual void GetSize(int *width, int *height) const; - - // Get window position, relative to parent (or screen if no parent) - virtual void GetPosition(int *x, int *y) const; - - // Get client (application-useable) size - virtual void GetClientSize(int *width, int *height) const; - - // Set overall size and position - virtual void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - inline virtual void SetSize(int width, int height) { SetSize(-1, -1, width, height, wxSIZE_USE_EXISTING); } - inline virtual void Move(int x, int y) { SetSize(x, y, -1, -1, wxSIZE_USE_EXISTING); } - - // Set client size - virtual void SetClientSize(int width, int size); - - // Convert client to screen coordinates - virtual void ClientToScreen(int *x, int *y) const; - - // Convert screen to client coordinates - virtual void ScreenToClient(int *x, int *y) const; - - // Set the focus to this window - virtual void SetFocus(); - - // Capture/release mouse - virtual void CaptureMouse(); - virtual void ReleaseMouse(); - - // Enable or disable the window - virtual void Enable(bool enable); - -#if wxUSE_DRAG_AND_DROP - // Associate a drop target with this window (if the window already had a drop - // target, it's deleted!) and return the current drop target (may be NULL). - void SetDropTarget(wxDropTarget *pDropTarget); - wxDropTarget *GetDropTarget() const { return m_pDropTarget; } -#endif - - // Accept files for dragging - virtual void DragAcceptFiles(bool accept); - - // Update region access - virtual wxRegion GetUpdateRegion() const; - virtual bool IsExposed(int x, int y, int w, int h) const; - virtual bool IsExposed(const wxPoint& pt) const; - virtual bool IsExposed(const wxRect& rect) const; - - // Set/get the window title - virtual inline void SetTitle(const wxString& WXUNUSED(title)) {}; - inline virtual wxString GetTitle() const { return wxString(""); }; - // Most windows have the concept of a label; for frames, this is the - // title; for items, this is the label or button text. - inline virtual wxString GetLabel() const { return GetTitle(); } - - // Set/get the window name (used for resource setting in X) - inline virtual wxString GetName() const; - inline virtual void SetName(const wxString& name); - - // Centre the window - virtual void Centre(int direction) ; - inline void Center(int direction = wxHORIZONTAL) { Centre(direction); } - - // Popup a menu - virtual bool PopupMenu(wxMenu *menu, int x, int y); - - // Send the window a refresh event - virtual void Refresh(bool eraseBack = TRUE, const wxRect *rect = NULL); - - // New functions that will replace the above. - virtual void SetScrollbar(int orient, int pos, int thumbVisible, - int range, bool refresh = TRUE); - - virtual void SetScrollPos(int orient, int pos, bool refresh = TRUE); - virtual int GetScrollPos(int orient) const; - virtual int GetScrollRange(int orient) const; - virtual int GetScrollThumb(int orient) const; - - virtual void ScrollWindow(int dx, int dy, const wxRect *rect = NULL); - - // Caret manipulation - virtual void CreateCaret(int w, int h); - virtual void CreateCaret(const wxBitmap *bitmap); - virtual void DestroyCaret(); - virtual void ShowCaret(bool show); - virtual void SetCaretPos(int x, int y); - virtual void GetCaretPos(int *x, int *y) const; - - // Tell window how much it can be sized - virtual void SetSizeHints(int minW = -1, int minH = -1, int maxW = -1, int maxH = -1, int incW = -1, int incH = -1); - - // Set/get the window's identifier - inline int GetId() const; - inline void SetId(int id); - - virtual void SetAcceleratorTable(const wxAcceleratorTable& accel); - inline virtual wxAcceleratorTable& GetAcceleratorTable() const { return (wxAcceleratorTable&) m_acceleratorTable; } - - // Make the window modal (all other windows unresponsive) - virtual void MakeModal(bool modal); - - // Get the private handle (platform-dependent) - inline void *GetHandle() const; - - // Set/get the window's relatives - inline wxWindow *GetParent() const; - inline void SetParent(wxWindow *p) ; - inline wxWindow *GetGrandParent() const; - inline wxList& GetChildren() const; - - // Set/get the window's font - virtual void SetFont(const wxFont& f); - inline virtual wxFont& GetFont() const; - - // Set/get the window's validator - void SetValidator(const wxValidator& validator); - inline wxValidator *GetValidator() const; - - // Set/get the window's style - inline void SetWindowStyleFlag(long flag); - inline long GetWindowStyleFlag() const; - - // Handle a control command - virtual void OnCommand(wxWindow& win, wxCommandEvent& event); - - // Set/get event handler - inline void SetEventHandler(wxEvtHandler *handler); - inline wxEvtHandler *GetEventHandler() const; - - // Push/pop event handler (i.e. allow a chain of event handlers - // be searched) - void PushEventHandler(wxEvtHandler *handler) ; - wxEvtHandler *PopEventHandler(bool deleteHandler = FALSE) ; - - // Close the window by calling OnClose, posting a deletion - virtual bool Close(bool force = FALSE); - - // Destroy the window (delayed, if a managed window) - virtual bool Destroy() ; - - // Mode for telling default OnSize members to - // call Layout(), if not using Sizers, just top-down constraints - inline void SetAutoLayout(bool a); - inline bool GetAutoLayout() const; - - // Set/get constraints - inline wxLayoutConstraints *GetConstraints() const; - void SetConstraints(wxLayoutConstraints *c); - - // Set/get window background colour - inline virtual void SetBackgroundColour(const wxColour& col); - inline virtual wxColour GetBackgroundColour() const; - - // Set/get window foreground colour - inline virtual void SetForegroundColour(const wxColour& col); - inline virtual wxColour GetForegroundColour() const; - - // Get the default button, if there is one - inline virtual wxButton *GetDefaultItem() const; - inline virtual void SetDefaultItem(wxButton *but); - - // Override to define new behaviour for default action (e.g. double clicking - // on a listbox) - virtual void OnDefaultAction(wxControl *initiatingItem); - - // Resource loading -#if wxUSE_WX_RESOURCES - virtual bool LoadFromResource(wxWindow *parent, const wxString& resourceName, const wxResourceTable *table = NULL); - virtual wxControl *CreateItem(const wxItemResource* childResource, const wxItemResource* parentResource, - const wxResourceTable *table = (const wxResourceTable *) NULL); -#endif - - virtual void GetTextExtent(const wxString& string, int *x, int *y, - int *descent = NULL, - int *externalLeading = NULL, - const wxFont *theFont = NULL, bool use16 = FALSE) const; - - // Is the window retained? - inline bool IsRetained() const; - - // Warp the pointer the given position - virtual void WarpPointer(int x_pos, int y_pos) ; - - // Clear the window - virtual void Clear(); - - // Find a window by id or name - virtual wxWindow *FindWindow(long id); - virtual wxWindow *FindWindow(const wxString& name); - - // Constraint operations - bool Layout(); - void SetSizer(wxSizer *sizer); // Adds sizer child to this window - inline wxSizer *GetSizer() const ; - inline wxWindow *GetSizerParent() const ; - inline void SetSizerParent(wxWindow *win); - - // Do Update UI processing for controls - void UpdateWindowUI(); - - void OnEraseBackground(wxEraseEvent& event); - void OnChar(wxKeyEvent& event); - void OnPaint(wxPaintEvent& event); - void OnIdle(wxIdleEvent& event); - - // Does this window want to accept keyboard focus? - virtual bool AcceptsFocus() const; - - virtual void PrepareDC( wxDC &dc ) {}; - - -public: - //////////////////////////////////////////////////////////////////////// - //// IMPLEMENTATION - - // For implementation purposes - sometimes decorations make the client area - // smaller - virtual wxPoint GetClientAreaOrigin() const; - - // Makes an adjustment to the window position (for example, a frame that has - // a toolbar that it manages itself). - virtual void AdjustForParentClientOrigin(int& x, int& y, int sizeFlags); - - // Executes the default message - virtual long Default(); - -/* TODO: you may need something like this - // Determine whether 3D effects are wanted - virtual WXDWORD Determine3DEffects(WXDWORD defaultBorderStyle, bool *want3D); -*/ - - virtual void AddChild(wxWindow *child); // Adds reference to the child object - virtual void RemoveChild(wxWindow *child); // Removes reference to child - // (but doesn't delete the child object) - virtual void DestroyChildren(); // Removes and destroys all children - - inline bool IsBeingDeleted() const { return FALSE; } // TODO: Should probably eliminate this - - // Constraint implementation - void UnsetConstraints(wxLayoutConstraints *c); - inline wxList *GetConstraintsInvolvedIn() const ; - // Back-pointer to other windows we're involved with, so if we delete - // this window, we must delete any constraints we're involved with. - void AddConstraintReference(wxWindow *otherWin); - void RemoveConstraintReference(wxWindow *otherWin); - void DeleteRelatedConstraints(); - - virtual void ResetConstraints(); - virtual void SetConstraintSizes(bool recurse = TRUE); - virtual bool LayoutPhase1(int *noChanges); - virtual bool LayoutPhase2(int *noChanges); - virtual bool DoPhase(int); - // Transforms from sizer coordinate space to actual - // parent coordinate space - virtual void TransformSizerToActual(int *x, int *y) const ; - - // Set size with transformation to actual coordinates if nec. - virtual void SizerSetSize(int x, int y, int w, int h); - virtual void SizerMove(int x, int y); - - // Only set/get the size/position of the constraint (if any) - virtual void SetSizeConstraint(int x, int y, int w, int h); - virtual void MoveConstraint(int x, int y); - virtual void GetSizeConstraint(int *w, int *h) const ; - virtual void GetClientSizeConstraint(int *w, int *h) const ; - virtual void GetPositionConstraint(int *x, int *y) const ; - - // Dialog units translations. Implemented in wincmn.cpp. - wxPoint ConvertPixelsToDialog(const wxPoint& pt) ; - wxPoint ConvertDialogToPixels(const wxPoint& pt) ; - inline wxSize ConvertPixelsToDialog(const wxSize& sz) - { wxPoint pt(ConvertPixelsToDialog(wxPoint(sz.x, sz.y))); return wxSize(pt.x, pt.y); } - inline wxSize ConvertDialogToPixels(const wxSize& sz) - { wxPoint pt(ConvertDialogToPixels(wxPoint(sz.x, sz.y))); return wxSize(pt.x, pt.y); } - - wxObject *GetChild(int number) const ; - - // Generates a new id for controls - static int NewControlId(); - - // Responds to colour changes: passes event on to children. - void OnSysColourChanged(wxSysColourChangedEvent& event); - - // Transfers data to any child controls - void OnInitDialog(wxInitDialogEvent& event); - - // Sends an OnInitDialog event, which in turns transfers data to - // to the window via validators. - virtual void InitDialog(); - - //////////////////////////////////////////////////////////////////////// - //// PROTECTED DATA -protected: - int m_windowId; - long m_windowStyle; // Store the window's style - wxEvtHandler * m_windowEventHandler; // Usually is 'this' - wxLayoutConstraints * m_constraints; // Constraints for this window - wxList * m_constraintsInvolvedIn; // List of constraints we're involved in - wxSizer * m_windowSizer; // Window's top-level sizer (if any) - wxWindow * m_sizerParent; // Window's parent sizer (if any) - bool m_autoLayout; // Whether to call Layout() in OnSize - wxWindow * m_windowParent; // Each window always knows its parent - wxValidator * m_windowValidator; - int m_minSizeX; - int m_minSizeY; - int m_maxSizeX; - int m_maxSizeY; - - // Caret data - int m_caretWidth; - int m_caretHeight; - bool m_caretEnabled; - bool m_caretShown; - wxFont m_windowFont; // Window's font - wxCursor m_windowCursor; // Window's cursor - wxString m_windowName; // Window name - - wxButton * m_defaultItem; - - wxColour m_backgroundColour ; - wxColour m_foregroundColour ; - wxAcceleratorTable m_acceleratorTable; - -#if wxUSE_DRAG_AND_DROP - wxDropTarget *m_pDropTarget; // the current drop target or NULL -#endif //USE_DRAG_AND_DROP - -public: - wxRegion m_updateRegion; - wxList * m_children; // Window's children - int m_returnCode; - -DECLARE_EVENT_TABLE() -}; - -//////////////////////////////////////////////////////////////////////// -//// INLINES - -inline void *wxWindow::GetHandle() const { return (void *)NULL; } -inline int wxWindow::GetId() const { return m_windowId; } -inline void wxWindow::SetId(int id) { m_windowId = id; } -inline wxWindow *wxWindow::GetParent() const { return m_windowParent; } -inline void wxWindow::SetParent(wxWindow *p) { m_windowParent = p; } -inline wxWindow *wxWindow::GetGrandParent() const { return (m_windowParent ? m_windowParent->m_windowParent : (wxWindow*) NULL); } -inline wxList& wxWindow::GetChildren() const { return (wxList&) * m_children; } -inline wxFont& wxWindow::GetFont() const { return (wxFont&) m_windowFont; } -inline wxString wxWindow::GetName() const { return m_windowName; } -inline void wxWindow::SetName(const wxString& name) { m_windowName = name; } -inline long wxWindow::GetWindowStyleFlag() const { return m_windowStyle; } -inline void wxWindow::SetWindowStyleFlag(long flag) { m_windowStyle = flag; } -inline void wxWindow::SetEventHandler(wxEvtHandler *handler) { m_windowEventHandler = handler; } -inline wxEvtHandler *wxWindow::GetEventHandler() const { return m_windowEventHandler; } -inline void wxWindow::SetAutoLayout(bool a) { m_autoLayout = a; } -inline bool wxWindow::GetAutoLayout() const { return m_autoLayout; } -inline wxLayoutConstraints *wxWindow::GetConstraints() const { return m_constraints; } -inline void wxWindow::SetBackgroundColour(const wxColour& col) { m_backgroundColour = col; }; -inline wxColour wxWindow::GetBackgroundColour() const { return m_backgroundColour; }; -inline void wxWindow::SetForegroundColour(const wxColour& col) { m_foregroundColour = col; }; -inline wxColour wxWindow::GetForegroundColour() const { return m_foregroundColour; }; - -inline wxButton *wxWindow::GetDefaultItem() const { return m_defaultItem; } -inline void wxWindow::SetDefaultItem(wxButton *but) { m_defaultItem = but; } -inline bool wxWindow::IsRetained() const { return ((m_windowStyle & wxRETAINED) == wxRETAINED); } - -inline wxList *wxWindow::GetConstraintsInvolvedIn() const { return m_constraintsInvolvedIn; } -inline wxSizer *wxWindow::GetSizer() const { return m_windowSizer; } -inline wxWindow *wxWindow::GetSizerParent() const { return m_sizerParent; } -inline void wxWindow::SetSizerParent(wxWindow *win) { m_sizerParent = win; } -inline wxValidator *wxWindow::GetValidator() const { return m_windowValidator; } -inline void wxWindow::SetReturnCode(int retCode) { m_returnCode = retCode; } -inline int wxWindow::GetReturnCode() { return m_returnCode; } - -// Get the active window. -wxWindow* WXDLLEXPORT wxGetActiveWindow(); - -WXDLLEXPORT_DATA(extern wxList) wxTopLevelWindows; - -#endif - // _WX_WINDOW_H_ diff --git a/include/wx/matrix.h b/include/wx/matrix.h deleted file mode 100644 index 8204b66f39..0000000000 --- a/include/wx/matrix.h +++ /dev/null @@ -1,144 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: matrix.h -// Purpose: wxTransformMatrix class. NOT YET USED -// Author: Chris Breeze, Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_MATRIXH__ -#define _WX_MATRIXH__ - -#ifdef __GNUG__ -#pragma interface "matrix.h" -#endif - -#include "wx/object.h" - -// A simple 3x3 matrix. This may be replaced by a more general matrix -// class some day. -// -// Note: this is intended to be used in wxDC at some point to replace -// the current system of scaling/translation. It is not yet used. - -class WXDLLEXPORT wxTransformMatrix: public wxObject -{ -public: - wxTransformMatrix(void); - wxTransformMatrix(const wxTransformMatrix& mat); - - double GetValue(int row, int col) const; - void SetValue(int row, int col, double value); - - void operator = (const wxTransformMatrix& mat); - bool operator == (const wxTransformMatrix& mat); - bool operator != (const wxTransformMatrix& mat); - - double& operator()(int row, int col); - double operator()(int row, int col) const; - - // Invert matrix - bool Invert(void); - - // Make into identity matrix - bool Identity(void); - - // Is the matrix the identity matrix? - // Only returns a flag, which is set whenever an operation - // is done. - inline bool IsIdentity(void) const { return m_isIdentity; }; - - // This does an actual check. - inline bool IsIdentity1(void) const ; - - // Isotropic scaling - bool Scale(double scale); - - // Translate - bool Translate(double x, double y); - - // Rotate - bool Rotate(double angle); - - // Transform X value from logical to device - inline double TransformX(double x) const; - - // Transform Y value from logical to device - inline double TransformY(double y) const; - - // Transform a point from logical to device coordinates - bool TransformPoint(double x, double y, double& tx, double& ty) const; - - // Transform a point from device to logical coordinates. - - // Example of use: - // wxTransformMatrix mat = dc.GetTransformation(); - // mat.Invert(); - // mat.InverseTransformPoint(x, y, x1, y1); - // OR (shorthand:) - // dc.LogicalToDevice(x, y, x1, y1); - // The latter is slightly less efficient if we're doing several - // conversions, since the matrix is inverted several times. - - // N.B. 'this' matrix is the inverse at this point - - bool InverseTransformPoint(double x, double y, double& tx, double& ty) const; - -public: - double m_matrix[3][3]; - bool m_isIdentity; -/* - double m11, m21, m31; - double m12, m22, m32; - double m13, m23, m33; -*/ -}; - - -/* -The code is wrong and doesn't compile. Chris Breeze als reported, that -some functions of wxTransformMatrix cannot work because it is not -known if he matrix has been inverted. Be careful when using it. - -// Transform X value from logical to device -inline double wxTransformMatrix::TransformX(double x) const -{ - return (m_isIdentity ? x : (x * m_matrix[0][0] + y * m_matrix[1][0] + m_matrix[2][0])); -} - -// Transform Y value from logical to device -inline double wxTransformMatrix::TransformY(double y) const -{ - return (m_isIdentity ? y : (x * m_matrix[0][1] + y * m_matrix[1][1] + m_matrix[2][1])); -} -*/ - -// Is the matrix the identity matrix? -// Perhaps there's some kind of optimization we can do to make this -// a faster operation. E.g. each operation (scale, translate etc.) -// checks whether it's still the identity matrix and sets a flag. -inline bool wxTransformMatrix::IsIdentity1(void) const -{ - return - (m_matrix[0][0] == 1.0 && - m_matrix[1][1] == 1.0 && - m_matrix[2][2] == 1.0 && - m_matrix[1][0] == 0.0 && - m_matrix[2][0] == 0.0 && - m_matrix[0][1] == 0.0 && - m_matrix[2][1] == 0.0 && - m_matrix[0][2] == 0.0 && - m_matrix[1][2] == 0.0) ; -} - -// Calculates the determinant of a 2 x 2 matrix -inline double wxCalculateDet(double a11, double a21, double a12, double a22) -{ - return a11 * a22 - a12 * a21; -} - -#endif - // _WX_MATRIXH__ diff --git a/include/wx/mdi.h b/include/wx/mdi.h deleted file mode 100644 index 1ce5e5555c..0000000000 --- a/include/wx/mdi.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef _WX_MDI_H_BASE_ -#define _WX_MDI_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/mdi.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/mdi.h" -#elif defined(__WXGTK__) -#include "wx/gtk/mdi.h" -#elif defined(__WXQT__) -#include "wx/qt/mdi.h" -#elif defined(__WXMAC__) -#include "wx/mac/mdi.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/mdi.h" -#endif - -#endif - // _WX_MDI_H_BASE_ diff --git a/include/wx/memory.h b/include/wx/memory.h deleted file mode 100644 index 841ea9e410..0000000000 --- a/include/wx/memory.h +++ /dev/null @@ -1,299 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: memory.h -// Purpose: MDI classes -// Author: Arthur Seaton, Julian Smart -// Modified by: -// Created: 29/01/98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Julian Smart -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_MEMORYH__ -#define _WX_MEMORYH__ - -#ifdef __GNUG__ -#pragma interface "memory.h" -#endif - -#include "wx/defs.h" -#include "wx/string.h" - -/* - The macro which will be expanded to include the file and line number - info, or to be a straight call to the new operator. -*/ - -#if (defined(__WXDEBUG__) && wxUSE_MEMORY_TRACING) || wxUSE_DEBUG_CONTEXT - -#include - -#if wxUSE_IOSTREAMH -// N.B. BC++ doesn't have istream.h, ostream.h -# include -#else -# include -# ifdef _MSC_VER - using namespace std; -# endif -#endif - -#ifdef __WXDEBUG__ - -void * wxDebugAlloc(size_t size, char * fileName, int lineNum, bool isObject, bool isVect = FALSE); -void wxDebugFree(void * buf, bool isVect = FALSE); - -// Global versions of the new and delete operators. -#if wxUSE_GLOBAL_MEMORY_OPERATORS - -// Undefine temporarily (new is #defined in object.h) because we want to -// declare some new operators. -#ifdef new -#undef new -#endif - -#if defined(__SUNCC__) -#define wxUSE_ARRAY_MEMORY_OPERATORS 0 -#elif !( defined (_MSC_VER) && (_MSC_VER <= 1020) ) || defined( __MWERKS__) -#define wxUSE_ARRAY_MEMORY_OPERATORS 1 -#else -#define wxUSE_ARRAY_MEMORY_OPERATORS 0 -#endif - -// Added JACS 25/11/98: needed for some compilers -void * operator new (size_t size); - -#if wxUSE_ARRAY_MEMORY_OPERATORS -void * operator new[] (size_t size); -#endif - -void * operator new (size_t size, char * fileName, int lineNum); -void operator delete (void * buf); - -#if wxUSE_ARRAY_MEMORY_OPERATORS -void * operator new[] (size_t size, char * fileName, int lineNum); -void operator delete[] (void * buf); -#endif - -// VC++ 6.0 -#if _MSC_VER >= 1200 -void operator delete(void *buf, char*, int); -void operator delete[](void *buf, char*, int); -#endif - -#endif - // wxUSE_GLOBAL_MEMORY_OPERATORS -#endif - // __WXDEBUG__ - -typedef unsigned int wxMarkerType; - -/* - Define the struct which will be placed at the start of all dynamically - allocated memory. -*/ - -class WXDLLEXPORT wxMemStruct { - -friend class WXDLLEXPORT wxDebugContext; // access to the m_next pointer for list traversal. - -public: -public: - int AssertList (); - - size_t RequestSize () { return m_reqSize; } - wxMarkerType Marker () { return m_firstMarker; } - - // When an object is deleted we set the id slot to a specific value. - inline void SetDeleted (); - inline int IsDeleted (); - - int Append (); - int Unlink (); - - // Used to determine if the object is really a wxMemStruct. - // Not a foolproof test by any means, but better than none I hope! - int AssertIt (); - - // Do all validation on a node. - int ValidateNode (); - - // Check the integrity of a node and of the list, node by node. - int CheckBlock (); - int CheckAllPrevious (); - - // Print a single node. - void PrintNode (); - - // Called when the memory linking functions get an error. - void ErrorMsg (const char *); - void ErrorMsg (); - - inline void *GetActualData(void) const { return m_actualData; } - - void Dump(void); - -public: - // Check for underwriting. There are 2 of these checks. This one - // inside the struct and another right after the struct. - wxMarkerType m_firstMarker; - - // File name and line number are from cpp. - char* m_fileName; - int m_lineNum; - - // The amount of memory requested by the caller. - size_t m_reqSize; - - // Used to try to verify that we really are dealing with an object - // of the required class. Can be 1 of 2 values these indicating a valid - // wxMemStruct object, or a deleted wxMemStruct object. - wxMarkerType m_id; - - wxMemStruct * m_prev; - wxMemStruct * m_next; - - void * m_actualData; - bool m_isObject; -}; - - -typedef void (wxMemStruct::*PmSFV) (); - - -/* - Debugging class. This will only have a single instance, but it\'s - a reasonable way to keep everything together and to make this - available for change if needed by someone else. - A lot of this stuff would be better off within the wxMemStruct class, but - it\'s stuff which we need to access at times when there is no wxMemStruct - object so we use this class instead. Think of it as a collection of - globals which have to do with the wxMemStruct class. -*/ - -class WXDLLEXPORT wxDebugContext { - -protected: - // Used to set alignment for markers. - static size_t CalcAlignment (); - - // Returns the amount of padding needed after something of the given - // size. This is so that when we cast pointers backwards and forwards - // the pointer value will be valid for a wxMarkerType. - static size_t GetPadding (const size_t size) ; - - // Traverse the list. - static void TraverseList (PmSFV, wxMemStruct *from = NULL); - - static streambuf *m_streamBuf; - static ostream *m_debugStream; - - static int debugLevel; - static bool debugOn; - -public: - // Set a checkpoint to dump only the memory from - // a given point - static wxMemStruct *checkPoint; - - wxDebugContext(void); - ~wxDebugContext(void); - - static bool HasStream(void) { return (m_debugStream != NULL); }; - static ostream& GetStream(void) { return *m_debugStream; } - static streambuf *GetStreamBuf(void) { return m_streamBuf; } - static void SetStream(ostream *stream, streambuf *buf = NULL); - static bool SetFile(const wxString& file); - static bool SetStandardError(void); - - static int GetLevel(void) { return debugLevel; } - static void SetLevel(int level) { debugLevel = level; } - - static bool GetDebugMode(void) { return debugOn; } - static void SetDebugMode(bool flag) { debugOn = flag; } - - static void SetCheckpoint(bool all = FALSE); - static wxMemStruct *GetCheckpoint(void) { return checkPoint; } - - // Calculated from the request size and any padding needed - // before the final marker. - static size_t PaddedSize (const size_t reqSize); - - // Calc the total amount of space we need from the system - // to satisfy a caller request. This includes all padding. - static size_t TotSize (const size_t reqSize); - - // Return valid pointers to offsets within the allocated memory. - static char * StructPos (const char * buf); - static char * MidMarkerPos (const char * buf); - static char * CallerMemPos (const char * buf); - static char * EndMarkerPos (const char * buf, const size_t size); - - // Given a pointer to the start of the caller requested area - // return a pointer to the start of the entire alloc\'d buffer. - static char * StartPos (const char * caller); - - // Access to the list. - static wxMemStruct * GetHead () { return m_head; } - static wxMemStruct * GetTail () { return m_tail; } - - // Set the list sentinals. - static wxMemStruct * SetHead (wxMemStruct * st) { return (m_head = st); } - static wxMemStruct * SetTail (wxMemStruct * st) { return (m_tail = st); } - - // If this is set then every new operation checks the validity - // of the all previous nodes in the list. - static bool GetCheckPrevious () { return m_checkPrevious; } - static void SetCheckPrevious (bool value) { m_checkPrevious = value; } - - // Checks all nodes, or all nodes if checkAll is TRUE - static int Check(bool checkAll = FALSE); - - // Print out the list of wxMemStruct nodes. - static bool PrintList(void); - - // Dump objects - static bool Dump(void); - - // Print statistics - static bool PrintStatistics(bool detailed = TRUE); - - // Print out the classes in the application. - static bool PrintClasses(void); - - // Count the number of non-wxDebugContext-related objects - // that are outstanding - static int CountObjectsLeft(bool sinceCheckpoint = FALSE); - -private: - // Store these here to allow access to the list without - // needing to have a wxMemStruct object. - static wxMemStruct* m_head; - static wxMemStruct* m_tail; - - // Set to FALSE if we're not checking all previous nodes when - // we do a new. Set to TRUE when we are. - static bool m_checkPrevious; -}; - -// Output a debug message, in a system dependent fashion. -void WXDLLEXPORT wxTrace(const char *fmt ...); -void WXDLLEXPORT wxTraceLevel(int level, const char *fmt ...); - -#define WXTRACE wxTrace -#define WXTRACELEVEL wxTraceLevel - -#else // else part for the #if __WXDEBUG__ - -inline void wxTrace(const char *WXUNUSED(fmt)) {} -inline void wxTraceLevel(int WXUNUSED(level), const char *WXUNUSED(fmt)) {} - -#define WXTRACE TRUE ? (void)0 : wxTrace -#define WXTRACELEVEL TRUE ? (void)0 : wxTraceLevel -// #define WXDEBUG_NEW new - -#endif // __WXDEBUG__ - -#endif - // _WX_MEMORYH__ - diff --git a/include/wx/menu.h b/include/wx/menu.h deleted file mode 100644 index 2d0ce9798b..0000000000 --- a/include/wx/menu.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef _WX_MENU_H_BASE_ -#define _WX_MENU_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/menu.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/menu.h" -#elif defined(__WXGTK__) -#include "wx/gtk/menu.h" -#elif defined(__WXQT__) -#include "wx/qt/menu.h" -#elif defined(__WXMAC__) -#include "wx/mac/menu.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/menu.h" -#endif - -#endif - // _WX_MENU_H_BASE_ diff --git a/include/wx/menuitem.h b/include/wx/menuitem.h deleted file mode 100644 index ffb693fe0c..0000000000 --- a/include/wx/menuitem.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef _WX_MENUITEM_H_BASE_ -#define _WX_MENUITEM_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/menuitem.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/menuitem.h" -#elif defined(__WXGTK__) -#include "wx/gtk/menuitem.h" -#elif defined(__WXQT__) -#include "wx/qt/menuitem.h" -#elif defined(__WXMAC__) -#include "wx/mac/menuitem.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/menuitem.h" -#endif - -#endif - // _WX_MENUITEM_H_BASE_ diff --git a/include/wx/metafile.h b/include/wx/metafile.h deleted file mode 100644 index dab13f19f2..0000000000 --- a/include/wx/metafile.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef _WX_METAFILE_H_BASE_ -#define _WX_METAFILE_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/metafile.h" -#endif - -#endif - // _WX_METAFILE_H_BASE_ diff --git a/include/wx/mimetype.h b/include/wx/mimetype.h deleted file mode 100644 index 4c5f826a17..0000000000 --- a/include/wx/mimetype.h +++ /dev/null @@ -1,145 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: wx/mimetype.h -// Purpose: classes and functions to manage MIME types -// Author: Vadim Zeitlin -// Modified by: -// Created: 23.09.98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows license (part of wxExtra library) -///////////////////////////////////////////////////////////////////////////// - -#ifndef _MIMETYPE_H -#define _MIMETYPE_H - -// fwd decls -class wxIcon; -class wxFileTypeImpl; -class wxMimeTypesManagerImpl; - -// the things we really need -#include "wx/string.h" - -// This class holds information about a given "file type". File type is the -// same as MIME type under Unix, but under Windows it corresponds more to an -// extension than to MIME type (in fact, several extensions may correspond to a -// file type). This object may be created in many different ways and depending -// on how it was created some fields may be unknown so the return value of all -// the accessors *must* be checked! -class wxFileType -{ -friend wxMimeTypesManagerImpl; // it has access to m_impl - -public: - // An object of this class must be passed to Get{Open|Print}Command. The - // default implementation is trivial and doesn't know anything at all about - // parameters, only filename and MIME type are used (so it's probably ok for - // Windows where %{param} is not used anyhow) - class MessageParameters - { - public: - // ctors - MessageParameters() { } - MessageParameters(const wxString& filename, const wxString& mimetype) - : m_filename(filename), m_mimetype(mimetype) { } - - // accessors (called by GetOpenCommand) - // filename - const wxString& GetFileName() const { return m_filename; } - // mime type - const wxString& GetMimeType() const { return m_mimetype; } - - // override this function in derived class - virtual wxString GetParamValue(const wxString& WXUNUSED(paramName)) const - { return ""; } - - // virtual dtor as in any base class - virtual ~MessageParameters() { } - - protected: - wxString m_filename, m_mimetype; - }; - - // accessors: all of them return true if the corresponding information - // could be retrieved/found, false otherwise (and in this case all [out] - // parameters are unchanged) - // return the MIME type for this file type - bool GetMimeType(wxString *mimeType) const; - // fill passed in array with all extensions associated with this file - // type - bool GetExtensions(wxArrayString& extensions); - // get the icon corresponding to this file type - bool GetIcon(wxIcon *icon) const; - // get a brief file type description ("*.txt" => "text document") - bool GetDescription(wxString *desc) const; - - // get the command to be used to open/print the given file. - // get the command to execute the file of given type - bool GetOpenCommand(wxString *openCmd, - const MessageParameters& params) const; - // get the command to print the file of given type - bool GetPrintCommand(wxString *printCmd, - const MessageParameters& params) const; - - // operations - // expand a string in the format of GetOpenCommand (which may contain - // '%s' and '%t' format specificators for the file name and mime type - // and %{param} constructions). - static wxString ExpandCommand(const wxString& command, - const MessageParameters& params); - - // dtor (not virtual, shouldn't be derived from) - ~wxFileType(); - -private: - // default ctor is private because the user code never creates us - wxFileType(); - - // no copy ctor/assignment operator - wxFileType(const wxFileType&); - wxFileType& operator=(const wxFileType&); - - wxFileTypeImpl *m_impl; -}; - -// This class accesses the information about all known MIME types and allows -// the application to retrieve information (including how to handle data of -// given type) about them. -// -// NB: currently it doesn't support modifying MIME database (read-only access). -class wxMimeTypesManager -{ -public: - // ctor - wxMimeTypesManager(); - - // Database lookup: all functions return a pointer to wxFileType object - // whose methods may be used to query it for the information you're - // interested in. If the return value is !NULL, caller is responsible for - // deleting it. - // get file type from file extension - wxFileType *GetFileTypeFromExtension(const wxString& ext); - // get file type from MIME type (in format /) - wxFileType *GetFileTypeFromMimeType(const wxString& mimeType); - - // other operations - // read in additional file (the standard ones are read automatically) - // in mailcap format (see mimetype.cpp for description) - void ReadMailcap(const wxString& filename); - // read in additional file in mime.types format - void ReadMimeTypes(const wxString& filename); - - // dtor (not virtual, shouldn't be derived from) - ~wxMimeTypesManager(); - -private: - // no copy ctor/assignment operator - wxMimeTypesManager(const wxMimeTypesManager&); - wxMimeTypesManager& operator=(const wxMimeTypesManager&); - - wxMimeTypesManagerImpl *m_impl; -}; - -#endif //_MIMETYPE_H - -/* vi: set cin tw=80 ts=4 sw=4: */ diff --git a/include/wx/minifram.h b/include/wx/minifram.h deleted file mode 100644 index 3b45d33a52..0000000000 --- a/include/wx/minifram.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef _WX_MINIFRAM_H_BASE_ -#define _WX_MINIFRAMH_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/minifram.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/minifram.h" -#elif defined(__WXGTK__) -#include "wx/gtk/minifram.h" -#elif defined(__WXMAC__) -#include "wx/mac/minifram.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/minifram.h" -#endif - -#endif - // _WX_MINIFRAM_H_BASE_ diff --git a/include/wx/module.h b/include/wx/module.h deleted file mode 100644 index e15b4de06b..0000000000 --- a/include/wx/module.h +++ /dev/null @@ -1,58 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: module.h -// Purpose: Modules handling -// Author: Wolfram Gloger/adapted by Guilhem Lavaux -// Modified by: -// Created: 04/11/98 -// RCS-ID: $Id$ -// Copyright: (c) Wolfram Gloger and Guilhem Lavaux -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_MODULEH__ -#define _WX_MODULEH__ - -#ifdef __GNUG__ - #pragma interface "module.h" -#endif - -#include "wx/object.h" -#include "wx/list.h" - -// declare a linked list of modules -class wxModule; -WX_DECLARE_LIST(wxModule, wxModuleList); - -// declaring a class derived from wxModule will automatically create an -// instance of this class on program startup, call its OnInit() method and call -// OnExit() on program termination (but only if OnInit() succeeded) -class WXDLLEXPORT wxModule : public wxObject -{ -public: - wxModule() {} - virtual ~wxModule() {} - - // if module init routine returns FALSE application will fail to startup - bool Init() { return OnInit(); } - void Exit() { OnExit(); } - - // Override both of these - // called on program startup - virtual bool OnInit() = 0; - // called just before program termination, but only if OnInit() - // succeeded - virtual void OnExit() = 0; - - static void RegisterModule(wxModule* module); - static void RegisterModules(); - static bool InitializeModules(); - static void CleanUpModules(); - -protected: - static wxModuleList m_modules; - - DECLARE_CLASS(wxModule) -}; - -#endif // _WX_MODULEH__ - diff --git a/include/wx/motif/accel.h b/include/wx/motif/accel.h deleted file mode 100644 index cd08c75f1d..0000000000 --- a/include/wx/motif/accel.h +++ /dev/null @@ -1,98 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: accel.h -// Purpose: wxAcceleratorTable class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_ACCEL_H_ -#define _WX_ACCEL_H_ - -#ifdef __GNUG__ -#pragma interface "accel.h" -#endif - -#include "wx/object.h" -#include "wx/string.h" -#include "wx/event.h" - -class WXDLLEXPORT wxAcceleratorTable; - -// Hold Ctrl key down -#define wxACCEL_ALT 0x01 - -// Hold Ctrl key down -#define wxACCEL_CTRL 0x02 - - // Hold Shift key down -#define wxACCEL_SHIFT 0x04 - - // Hold no key down -#define wxACCEL_NORMAL 0x00 - -class WXDLLEXPORT wxAcceleratorEntry -{ -public: - wxAcceleratorEntry(const wxAcceleratorEntry& entry) - { - m_flags = entry.m_flags; m_keyCode = entry.m_keyCode; m_command = entry.m_command; - } - wxAcceleratorEntry(int flags = 0, int keyCode = 0, int cmd = 0) - { - m_flags = flags; m_keyCode = keyCode; m_command = cmd; - } - - inline void Set(int flags, int keyCode, int cmd) - { m_flags = flags; m_keyCode = keyCode; m_command = cmd; } - - inline int GetFlags() const { return m_flags; } - inline int GetKeyCode() const { return m_keyCode; } - inline int GetCommand() const { return m_command; } - - void operator = (const wxAcceleratorEntry& entry) - { - m_flags = entry.m_flags; m_keyCode = entry.m_keyCode; m_command = entry.m_command; - } - - // Implementation use only - bool MatchesEvent(const wxKeyEvent& event) const; - -public: - int m_flags; - int m_keyCode; // ASCII or virtual keycode - int m_command; // Command id to generate -}; - -class WXDLLEXPORT wxAcceleratorTable: public wxObject -{ -DECLARE_DYNAMIC_CLASS(wxAcceleratorTable) -public: - wxAcceleratorTable(); - wxAcceleratorTable(const wxString& resource); // Load from .rc resource - wxAcceleratorTable(int n, wxAcceleratorEntry entries[]); // Load from array - - // Copy constructors - inline wxAcceleratorTable(const wxAcceleratorTable& accel) { Ref(accel); } - inline wxAcceleratorTable(const wxAcceleratorTable* accel) { if (accel) Ref(*accel); } - - ~wxAcceleratorTable(); - - inline wxAcceleratorTable& operator = (const wxAcceleratorTable& accel) { if (*this == accel) return (*this); Ref(accel); return *this; } - inline bool operator == (const wxAcceleratorTable& accel) { return m_refData == accel.m_refData; } - inline bool operator != (const wxAcceleratorTable& accel) { return m_refData != accel.m_refData; } - - bool Ok() const; - -// Implementation only - int GetCount() const; - wxAcceleratorEntry* GetEntries() const; -}; - -WXDLLEXPORT_DATA(extern wxAcceleratorTable) wxNullAcceleratorTable; - -#endif - // _WX_ACCEL_H_ diff --git a/include/wx/motif/app.h b/include/wx/motif/app.h deleted file mode 100644 index 5cbe5267fa..0000000000 --- a/include/wx/motif/app.h +++ /dev/null @@ -1,176 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: app.h -// Purpose: wxApp class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_APP_H_ -#define _WX_APP_H_ - -#ifdef __GNUG__ -#pragma interface "app.h" -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/gdicmn.h" -#include "wx/event.h" - -class WXDLLEXPORT wxFrame; -class WXDLLEXPORT wxWindow; -class WXDLLEXPORT wxApp ; -class WXDLLEXPORT wxKeyEvent; -class WXDLLEXPORT wxLog; - -#define wxPRINT_WINDOWS 1 -#define wxPRINT_POSTSCRIPT 2 - -WXDLLEXPORT_DATA(extern wxApp*) wxTheApp; - -// Force an exit from main loop -void WXDLLEXPORT wxExit(); - -// Yield to other apps/messages -bool WXDLLEXPORT wxYield(); - -// Represents the application. Derive OnInit and declare -// a new App object to start application -class WXDLLEXPORT wxApp: public wxEvtHandler -{ - DECLARE_DYNAMIC_CLASS(wxApp) - wxApp(); - inline ~wxApp() {} - - static void SetInitializerFunction(wxAppInitializerFunction fn) { m_appInitFn = fn; } - static wxAppInitializerFunction GetInitializerFunction() { return m_appInitFn; } - - virtual int MainLoop(); - void ExitMainLoop(); - bool Initialized(); - virtual bool Pending() ; - virtual void Dispatch() ; - - void OnIdle(wxIdleEvent& event); - -// Generic - virtual bool OnInit() { return FALSE; }; - - // Create an application context - virtual bool OnInitGui(); - - // Called to set off the main loop - virtual int OnRun() { return MainLoop(); }; - virtual int OnExit() { return 0; } - - inline void SetPrintMode(int mode) { m_printMode = mode; } - inline int GetPrintMode() const { return m_printMode; } - - inline void SetExitOnFrameDelete(bool flag) { m_exitOnFrameDelete = flag; } - inline bool GetExitOnFrameDelete() const { return m_exitOnFrameDelete; } - - inline wxString GetAppName() const { - if (m_appName != "") - return m_appName; - else return m_className; - } - - inline void SetAppName(const wxString& name) { m_appName = name; }; - inline wxString GetClassName() const { return m_className; } - inline void SetClassName(const wxString& name) { m_className = name; } - - void SetVendorName(const wxString& vendorName) { m_vendorName = vendorName; } - const wxString& GetVendorName() const { return m_vendorName; } - - wxWindow *GetTopWindow() const ; - inline void SetTopWindow(wxWindow *win) { m_topWindow = win; } - - inline void SetWantDebugOutput(bool flag) { m_wantDebugOutput = flag; } - inline bool GetWantDebugOutput() { return m_wantDebugOutput; } - - // Send idle event to all top-level windows. - // Returns TRUE if more idle time is requested. - bool SendIdleEvents(); - - // Send idle event to window and all subwindows - // Returns TRUE if more idle time is requested. - bool SendIdleEvents(wxWindow* win); - - // Windows only, but for compatibility... - inline void SetAuto3D(bool flag) { m_auto3D = flag; } - inline bool GetAuto3D() const { return m_auto3D; } - - // Creates a log object - virtual wxLog* CreateLogTarget(); - -// Motif implementation. - - // Processes an X event. - virtual void ProcessXEvent(WXEvent* event); - - // Returns TRUE if an accelerator has been processed - virtual bool CheckForAccelerator(WXEvent* event); - -public: - // Will always be set to the appropriate, main-style values. - int argc; - char ** argv; - -protected: - bool m_wantDebugOutput ; - wxString m_className; - wxString m_appName, - m_vendorName; - wxWindow * m_topWindow; - bool m_exitOnFrameDelete; - bool m_showOnInit; - int m_printMode; // wxPRINT_WINDOWS, wxPRINT_POSTSCRIPT - bool m_auto3D ; // Always use 3D controls, except - // where overriden - static wxAppInitializerFunction m_appInitFn; - -public: - - // Implementation - static bool Initialize(); - static void CleanUp(); - - void DeletePendingObjects(); - bool ProcessIdle(); - - // Motif-specific - inline WXAppContext GetAppContext() const { return m_appContext; } - inline WXWidget GetTopLevelWidget() const { return m_topLevelWidget; } - WXColormap GetMainColormap(WXDisplay* display) ; - WXDisplay* GetInitialDisplay() const { return m_initialDisplay; } - inline long GetMaxRequestSize() const { return m_maxRequestSize; } - - // This handler is called when a property change event occurs - virtual void HandlePropertyChange(WXEvent *event); - -public: - static long sm_lastMessageTime; - int m_nCmdShow; - -protected: - bool m_keepGoing ; - -// Motif-specific - WXAppContext m_appContext; - WXWidget m_topLevelWidget; - WXColormap m_mainColormap; - WXDisplay* m_initialDisplay; - long m_maxRequestSize; - -DECLARE_EVENT_TABLE() -}; - -int WXDLLEXPORT wxEntry( int argc, char *argv[] ); - -#endif - // _WX_APP_H_ - diff --git a/include/wx/motif/bitmap.h b/include/wx/motif/bitmap.h deleted file mode 100644 index 39bd89c5a8..0000000000 --- a/include/wx/motif/bitmap.h +++ /dev/null @@ -1,211 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: bitmap.h -// Purpose: wxBitmap class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_BITMAP_H_ -#define _WX_BITMAP_H_ - -#ifdef __GNUG__ -#pragma interface "bitmap.h" -#endif - -#include "wx/gdiobj.h" -#include "wx/gdicmn.h" -#include "wx/palette.h" - -// Bitmap -class WXDLLEXPORT wxDC; -class WXDLLEXPORT wxControl; -class WXDLLEXPORT wxBitmap; -class WXDLLEXPORT wxBitmapHandler; -class WXDLLEXPORT wxIcon; -class WXDLLEXPORT wxCursor; - -// A mask is a mono bitmap used for drawing bitmaps -// transparently. -class WXDLLEXPORT wxMask: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxMask) - -public: - wxMask(); - - // Construct a mask from a bitmap and a colour indicating - // the transparent area - wxMask(const wxBitmap& bitmap, const wxColour& colour); - - // Construct a mask from a bitmap and a palette index indicating - // the transparent area - wxMask(const wxBitmap& bitmap, int paletteIndex); - - // Construct a mask from a mono bitmap (copies the bitmap). - wxMask(const wxBitmap& bitmap); - - ~wxMask(); - - bool Create(const wxBitmap& bitmap, const wxColour& colour); - bool Create(const wxBitmap& bitmap, int paletteIndex); - bool Create(const wxBitmap& bitmap); - - inline WXPixmap GetPixmap() const { return m_pixmap; } - inline void SetPixmap(WXPixmap pixmap) { m_pixmap = pixmap; } - -protected: - WXPixmap m_pixmap; -}; - -class WXDLLEXPORT wxBitmapRefData: public wxGDIRefData -{ - friend class WXDLLEXPORT wxBitmap; - friend class WXDLLEXPORT wxIcon; - friend class WXDLLEXPORT wxCursor; -public: - wxBitmapRefData(); - ~wxBitmapRefData(); - -public: - int m_width; - int m_height; - int m_depth; - bool m_ok; - int m_numColors; - wxPalette m_bitmapPalette; - int m_quality; - - wxMask * m_bitmapMask; // Optional mask - - // Motif implementation -public: - WXPixmap m_pixmap; - WXDisplay* m_display; - bool m_freePixmap; - unsigned long* m_freeColors; - long m_freeColorsCount; - - // These 5 variables are for wxControl - WXPixmap m_insensPixmap ; - WXPixmap m_labelPixmap ; - WXPixmap m_armPixmap ; - WXImage* m_image ; - WXImage* m_insensImage ; -}; - -#define M_BITMAPDATA ((wxBitmapRefData *)m_refData) - -class WXDLLEXPORT wxBitmapHandler: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxBitmapHandler) -public: - wxBitmapHandler() { m_name = ""; m_extension = ""; m_type = 0; }; - - virtual bool Create(wxBitmap *bitmap, void *data, long flags, int width, int height, int depth = 1); - virtual bool LoadFile(wxBitmap *bitmap, const wxString& name, long flags, - int desiredWidth, int desiredHeight); - virtual bool SaveFile(wxBitmap *bitmap, const wxString& name, int type, const wxPalette *palette = NULL); - - inline void SetName(const wxString& name) { m_name = name; } - inline void SetExtension(const wxString& ext) { m_extension = ext; } - inline void SetType(long type) { m_type = type; } - inline wxString GetName() const { return m_name; } - inline wxString GetExtension() const { return m_extension; } - inline long GetType() const { return m_type; } -protected: - wxString m_name; - wxString m_extension; - long m_type; -}; - -#define M_BITMAPHANDLERDATA ((wxBitmapRefData *)bitmap->GetRefData()) - -class WXDLLEXPORT wxBitmap: public wxGDIObject -{ - DECLARE_DYNAMIC_CLASS(wxBitmap) - - friend class WXDLLEXPORT wxBitmapHandler; - -public: - wxBitmap(); // Platform-specific - - // Copy constructors - inline wxBitmap(const wxBitmap& bitmap) - { Ref(bitmap); if ( wxTheBitmapList ) wxTheBitmapList->AddBitmap(this); } - - // Initialize with raw XBM data - wxBitmap(const char bits[], int width, int height, int depth = 1); - - // Initialize with XPM data - wxBitmap(char **data, wxControl* control = NULL); - - // Load a file or resource - wxBitmap(const wxString& name, long type = wxBITMAP_TYPE_XBM); - - // Constructor for generalised creation from data - wxBitmap(void *data, long type, int width, int height, int depth = 1); - - // If depth is omitted, will create a bitmap compatible with the display - wxBitmap(int width, int height, int depth = -1); - ~wxBitmap(); - - virtual bool Create(int width, int height, int depth = -1); - virtual bool Create(void *data, long type, int width, int height, int depth = 1); - virtual bool LoadFile(const wxString& name, long type = wxBITMAP_TYPE_XBM); - virtual bool SaveFile(const wxString& name, int type, const wxPalette *cmap = NULL); - - inline bool Ok() const { return (M_BITMAPDATA && M_BITMAPDATA->m_ok); } - inline int GetWidth() const { return (M_BITMAPDATA ? M_BITMAPDATA->m_width : 0); } - inline int GetHeight() const { return (M_BITMAPDATA ? M_BITMAPDATA->m_height : 0); } - inline int GetDepth() const { return (M_BITMAPDATA ? M_BITMAPDATA->m_depth : 0); } - inline int GetQuality() const { return (M_BITMAPDATA ? M_BITMAPDATA->m_quality : 0); } - void SetWidth(int w); - void SetHeight(int h); - void SetDepth(int d); - void SetQuality(int q); - void SetOk(bool isOk); - - inline wxPalette* GetPalette() const { return (M_BITMAPDATA ? (& M_BITMAPDATA->m_bitmapPalette) : (wxPalette*) NULL); } - void SetPalette(const wxPalette& palette); - - inline wxMask *GetMask() const { return (M_BITMAPDATA ? M_BITMAPDATA->m_bitmapMask : (wxMask*) NULL); } - void SetMask(wxMask *mask) ; - - inline wxBitmap& operator = (const wxBitmap& bitmap) { if (*this == bitmap) return (*this); Ref(bitmap); return *this; } - inline bool operator == (const wxBitmap& bitmap) { return m_refData == bitmap.m_refData; } - inline bool operator != (const wxBitmap& bitmap) { return m_refData != bitmap.m_refData; } - - // Format handling - static inline wxList& GetHandlers() { return sm_handlers; } - static void AddHandler(wxBitmapHandler *handler); - static void InsertHandler(wxBitmapHandler *handler); - static bool RemoveHandler(const wxString& name); - static wxBitmapHandler *FindHandler(const wxString& name); - static wxBitmapHandler *FindHandler(const wxString& extension, long bitmapType); - static wxBitmapHandler *FindHandler(long bitmapType); - - static void InitStandardHandlers(); - static void CleanUpHandlers(); - - // Motif implementation -public: - inline WXDisplay* GetDisplay() const { return M_BITMAPDATA->m_display; } - inline WXDisplay* GetPixmap() const { return M_BITMAPDATA->m_pixmap; } - virtual WXPixmap GetLabelPixmap(WXWidget w) ; - virtual WXPixmap GetArmPixmap(WXWidget w) ; - virtual WXPixmap GetInsensPixmap(WXWidget w = (WXWidget) 0) ; - -protected: - static wxList sm_handlers; -}; - -// Creates a bitmap with transparent areas drawn in -// the given colour. -wxBitmap wxCreateMaskedBitmap(wxBitmap& bitmap, wxColour& colour); - -#endif - // _WX_BITMAP_H_ diff --git a/include/wx/motif/bmpbuttn.h b/include/wx/motif/bmpbuttn.h deleted file mode 100644 index 47fe63c018..0000000000 --- a/include/wx/motif/bmpbuttn.h +++ /dev/null @@ -1,93 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: bmpbuttn.h -// Purpose: wxBitmapButton class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_BMPBUTTN_H_ -#define _WX_BMPBUTTN_H_ - -#ifdef __GNUG__ -#pragma interface "bmpbuttn.h" -#endif - -#include "wx/button.h" - -WXDLLEXPORT_DATA(extern const char*) wxButtonNameStr; - -#define wxDEFAULT_BUTTON_MARGIN 4 - -class WXDLLEXPORT wxBitmapButton: public wxButton -{ - DECLARE_DYNAMIC_CLASS(wxBitmapButton) - public: - wxBitmapButton(); - ~wxBitmapButton(); - inline wxBitmapButton(wxWindow *parent, wxWindowID id, const wxBitmap& bitmap, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = wxBU_AUTODRAW, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxButtonNameStr) - { - Create(parent, id, bitmap, pos, size, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, const wxBitmap& bitmap, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = wxBU_AUTODRAW, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxButtonNameStr); - - virtual void SetLabel(const wxBitmap& bitmap) - { - SetBitmapLabel(bitmap); - } - virtual void SetLabel(const wxString& label) - { - wxControl::SetLabel(label); - } - - virtual void SetBitmapLabel(const wxBitmap& bitmap); - - inline wxBitmap& GetBitmapLabel() const { return (wxBitmap&) m_buttonBitmap; } - inline wxBitmap& GetBitmapSelected() const { return (wxBitmap&) m_buttonBitmapSelected; } - inline wxBitmap& GetBitmapFocus() const { return (wxBitmap&) m_buttonBitmapFocus; } - inline wxBitmap& GetBitmapDisabled() const { return (wxBitmap&) m_buttonBitmapDisabled; } - - void SetBitmapSelected(const wxBitmap& sel); - void SetBitmapFocus(const wxBitmap& focus); - void SetBitmapDisabled(const wxBitmap& disabled); - - inline void SetMargins(int x, int y) { m_marginX = x; m_marginY = y; } - inline int GetMarginX() { return m_marginX; } - inline int GetMarginY() { return m_marginY; } - -// Implementation - void DoSetBitmap(); - virtual void ChangeBackgroundColour(); - - protected: - wxBitmap m_buttonBitmapFocus; - wxBitmap m_buttonBitmap; - wxBitmap m_buttonBitmapOriginal; // May be different from m_buttonBitmap - // if m_buttonBitmap has been changed - // to reflect button background colour - wxBitmap m_buttonBitmapSelected; - wxBitmap m_buttonBitmapSelectedOriginal; - - wxBitmap m_buttonBitmapDisabled; - wxBitmap m_buttonBitmapDisabledOriginal; - - int m_marginX; - int m_marginY; - - WXPixmap m_insensPixmap; -}; - -#endif - // _WX_BMPBUTTN_H_ diff --git a/include/wx/motif/brush.h b/include/wx/motif/brush.h deleted file mode 100644 index 15488cba9b..0000000000 --- a/include/wx/motif/brush.h +++ /dev/null @@ -1,79 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: brush.h -// Purpose: wxBrush class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_BRUSH_H_ -#define _WX_BRUSH_H_ - -#ifdef __GNUG__ -#pragma interface "brush.h" -#endif - -#include "wx/gdicmn.h" -#include "wx/gdiobj.h" -#include "wx/bitmap.h" - -class WXDLLEXPORT wxBrush; - -class WXDLLEXPORT wxBrushRefData: public wxGDIRefData -{ - friend class WXDLLEXPORT wxBrush; -public: - wxBrushRefData(); - wxBrushRefData(const wxBrushRefData& data); - ~wxBrushRefData(); - -protected: - int m_style; - wxBitmap m_stipple ; - wxColour m_colour; -}; - -#define M_BRUSHDATA ((wxBrushRefData *)m_refData) - -// Brush -class WXDLLEXPORT wxBrush: public wxGDIObject -{ - DECLARE_DYNAMIC_CLASS(wxBrush) - -public: - wxBrush(); - wxBrush(const wxColour& col, int style); - wxBrush(const wxBitmap& stipple); - inline wxBrush(const wxBrush& brush) { Ref(brush); } - ~wxBrush(); - - virtual void SetColour(const wxColour& col) ; - virtual void SetColour(unsigned char r, unsigned char g, unsigned char b) ; - virtual void SetStyle(int style) ; - virtual void SetStipple(const wxBitmap& stipple) ; - - inline wxBrush& operator = (const wxBrush& brush) { if (*this == brush) return (*this); Ref(brush); return *this; } - inline bool operator == (const wxBrush& brush) { return m_refData == brush.m_refData; } - inline bool operator != (const wxBrush& brush) { return m_refData != brush.m_refData; } - - inline wxColour& GetColour() const { return (M_BRUSHDATA ? M_BRUSHDATA->m_colour : wxNullColour); }; - inline int GetStyle() const { return (M_BRUSHDATA ? M_BRUSHDATA->m_style : 0); }; - inline wxBitmap *GetStipple() const { return (M_BRUSHDATA ? & M_BRUSHDATA->m_stipple : 0); }; - - virtual bool Ok() const { return (m_refData != NULL) ; } - -// Implementation - - // Useful helper: create the brush resource - bool RealizeResource(); - - // When setting properties, we must make sure we're not changing - // another object - void Unshare(); -}; - -#endif - // _WX_BRUSH_H_ diff --git a/include/wx/motif/button.h b/include/wx/motif/button.h deleted file mode 100644 index 3c155e38b3..0000000000 --- a/include/wx/motif/button.h +++ /dev/null @@ -1,55 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: button.h -// Purpose: wxButton class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_BUTTON_H_ -#define _WX_BUTTON_H_ - -#ifdef __GNUG__ -#pragma interface "button.h" -#endif - -#include "wx/control.h" -#include "wx/gdicmn.h" - -WXDLLEXPORT_DATA(extern const char*) wxButtonNameStr; - -// Pushbutton -class WXDLLEXPORT wxButton: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxButton) - public: - inline wxButton() {} - inline wxButton(wxWindow *parent, wxWindowID id, const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxButtonNameStr) - { - Create(parent, id, label, pos, size, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxButtonNameStr); - - virtual void SetDefault(); - virtual void Command(wxCommandEvent& event); - -// Implementation - virtual void ChangeFont(bool keepOriginalSize = TRUE); - virtual void ChangeBackgroundColour(); - virtual void ChangeForegroundColour(); -}; - -#endif - // _WX_BUTTON_H_ diff --git a/include/wx/motif/checkbox.h b/include/wx/motif/checkbox.h deleted file mode 100644 index 187cd9aa91..0000000000 --- a/include/wx/motif/checkbox.h +++ /dev/null @@ -1,91 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: checkbox.h -// Purpose: wxCheckBox class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_CHECKBOX_H_ -#define _WX_CHECKBOX_H_ - -#ifdef __GNUG__ -#pragma interface "checkbox.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxCheckBoxNameStr; - -// Checkbox item (single checkbox) -class WXDLLEXPORT wxBitmap; -class WXDLLEXPORT wxCheckBox: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxCheckBox) - - public: - inline wxCheckBox() { } - inline wxCheckBox(wxWindow *parent, wxWindowID id, const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxCheckBoxNameStr) - { - Create(parent, id, label, pos, size, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxCheckBoxNameStr); - virtual void SetValue(bool); - virtual bool GetValue() const ; - virtual void Command(wxCommandEvent& event); - -// Implementation - virtual void ChangeFont(bool keepOriginalSize = TRUE); - virtual void ChangeBackgroundColour(); - virtual void ChangeForegroundColour(); -}; - -class WXDLLEXPORT wxBitmapCheckBox: public wxCheckBox -{ - DECLARE_DYNAMIC_CLASS(wxBitmapCheckBox) - - public: - int checkWidth ; - int checkHeight ; - - inline wxBitmapCheckBox() { checkWidth = -1; checkHeight = -1; } - inline wxBitmapCheckBox(wxWindow *parent, wxWindowID id, const wxBitmap *label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxCheckBoxNameStr) - { - Create(parent, id, label, pos, size, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, const wxBitmap *bitmap, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxCheckBoxNameStr); - - virtual void SetValue(bool); - virtual bool GetValue() const ; - - virtual void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - virtual void SetSize(const wxRect& rect, int sizeFlags = wxSIZE_AUTO) - { wxWindow::SetSize(rect, sizeFlags); } - virtual void SetSize(const wxSize& size) { wxWindow::SetSize(size); } - virtual void SetSize(int width, int height) { SetSize(-1, -1, width, height, wxSIZE_USE_EXISTING); } - - virtual void SetLabel(const wxBitmap *bitmap); -}; -#endif - // _WX_CHECKBOX_H_ diff --git a/include/wx/motif/checklst.h b/include/wx/motif/checklst.h deleted file mode 100644 index 392737ccc1..0000000000 --- a/include/wx/motif/checklst.h +++ /dev/null @@ -1,47 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: checklst.h -// Purpose: wxCheckListBox class - a listbox with checkable items -// Note: this is an optional class. -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_CHECKLST_H_ -#define _WX_CHECKLST_H_ - -#ifdef __GNUG__ -#pragma interface "checklst.h" -#endif - -#include "wx/listbox.h" - -typedef unsigned int size_t; - -class wxCheckListBox : public wxListBox -{ - DECLARE_DYNAMIC_CLASS(wxCheckListBox) -public: - // ctors - wxCheckListBox(); - wxCheckListBox(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - int nStrings = 0, - const wxString choices[] = NULL, - long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxListBoxNameStr); - - // items may be checked - bool IsChecked(size_t uiIndex) const; - void Check(size_t uiIndex, bool bCheck = TRUE); - - DECLARE_EVENT_TABLE() -}; - -#endif - // _WX_CHECKLST_H_ diff --git a/include/wx/motif/choice.h b/include/wx/motif/choice.h deleted file mode 100644 index 17702e03cb..0000000000 --- a/include/wx/motif/choice.h +++ /dev/null @@ -1,93 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: choice.h -// Purpose: wxChoice class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_CHOICE_H_ -#define _WX_CHOICE_H_ - -#ifdef __GNUG__ -#pragma interface "choice.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxChoiceNameStr; - -// Choice item -class WXDLLEXPORT wxChoice: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxChoice) - - public: - wxChoice(); - ~wxChoice(); - - inline wxChoice(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = NULL, - long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxChoiceNameStr) - { - Create(parent, id, pos, size, n, choices, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = NULL, - long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxChoiceNameStr); - - virtual void Append(const wxString& item); - virtual void Delete(int n); - virtual void Clear(); - virtual int GetSelection() const ; - virtual void SetSelection(int n); - virtual int FindString(const wxString& s) const; - virtual wxString GetString(int n) const ; - - virtual void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - virtual void SetSize(const wxRect& rect, int sizeFlags = wxSIZE_AUTO) - { wxWindow::SetSize(rect, sizeFlags); } - virtual void SetSize(const wxSize& size) { wxWindow::SetSize(size); } - virtual void SetSize(int width, int height) { SetSize(-1, -1, width, height, wxSIZE_USE_EXISTING); } - - virtual wxString GetStringSelection() const ; - virtual bool SetStringSelection(const wxString& sel); - - virtual inline int Number() const { return m_noStrings; } - virtual void Command(wxCommandEvent& event); - - virtual void SetColumns(int n = 1 ); - virtual int GetColumns() const ; - - void SetFocus(); - -// Implementation - virtual void ChangeFont(bool keepOriginalSize = TRUE); - virtual void ChangeBackgroundColour(); - virtual void ChangeForegroundColour(); - WXWidget GetTopWidget() const { return m_formWidget; } - WXWidget GetMainWidget() const { return m_buttonWidget; } - -protected: - int m_noStrings; - WXWidget m_menuWidget; - WXWidget m_buttonWidget; - WXWidget* m_widgetList ; - WXWidget m_formWidget; - wxStringList m_stringList; -}; - -#endif - // _WX_CHOICE_H_ diff --git a/include/wx/motif/clipbrd.h b/include/wx/motif/clipbrd.h deleted file mode 100644 index 583a1a1068..0000000000 --- a/include/wx/motif/clipbrd.h +++ /dev/null @@ -1,167 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: clipbrd.h -// Purpose: Clipboard functionality. -// Note: this functionality is under review, and -// is derived from wxWindows 1.xx code. Please contact -// the wxWindows developers for further information. -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_CLIPBRD_H_ -#define _WX_CLIPBRD_H_ - -#ifdef __GNUG__ -#pragma interface "clipbrd.h" -#endif - -#include "wx/defs.h" -#include "wx/setup.h" - -#include "wx/list.h" -#include "wx/module.h" - -bool WXDLLEXPORT wxOpenClipboard(); -bool WXDLLEXPORT wxClipboardOpen(); -bool WXDLLEXPORT wxCloseClipboard(); -bool WXDLLEXPORT wxEmptyClipboard(); -bool WXDLLEXPORT wxIsClipboardFormatAvailable(wxDataFormat dataFormat); -bool WXDLLEXPORT wxSetClipboardData(wxDataFormat dataFormat, wxObject *obj, int width = 0, int height = 0); -wxObject* WXDLLEXPORT wxGetClipboardData(wxDataFormat dataFormat, long *len = NULL); -wxDataFormat WXDLLEXPORT wxEnumClipboardFormats(wxDataFormat dataFormat); -wxDataFormat WXDLLEXPORT wxRegisterClipboardFormat(char *formatName); -bool WXDLLEXPORT wxGetClipboardFormatName(wxDataFormat dataFormat, char *formatName, int maxCount); - -//----------------------------------------------------------------------------- -// wxClipboard -//----------------------------------------------------------------------------- - -class WXDLLEXPORT wxDataObject; -class WXDLLEXPORT wxClipboard: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxClipboard) - -public: - - wxClipboard(); - ~wxClipboard(); - - // open the clipboard before SetData() and GetData() - virtual bool Open(); - - // close the clipboard after SetData() and GetData() - virtual void Close(); - - // can be called several times - virtual bool SetData( wxDataObject *data ); - - // format available on the clipboard ? - // supply ID if private format, the same as wxPrivateDataObject::SetId() - virtual bool IsSupportedFormat( wxDataFormat format, const wxString &id = wxEmptyString ); - - // fill data with data on the clipboard (if available) - virtual bool GetData( wxDataObject *data ); - - // clears wxTheClipboard and the system's clipboard if possible - virtual void Clear(); - - // implementation - - bool m_open; - wxList m_data; -}; - -/* The clipboard */ -WXDLLEXPORT_DATA(extern wxClipboard*) wxTheClipboard; - -//----------------------------------------------------------------------------- -// wxClipboardModule -//----------------------------------------------------------------------------- - -class wxClipboardModule: public wxModule -{ - DECLARE_DYNAMIC_CLASS(wxClipboardModule) - -public: - wxClipboardModule() {} - bool OnInit(); - void OnExit(); -}; - -// This is the old, 1.68 implementation -#if 0 - -/* A clipboard client holds data belonging to the clipboard. - For plain text, a client is not necessary. */ -class WXDLLEXPORT wxClipboardClient : public wxObject -{ - DECLARE_ABSTRACT_CLASS(wxClipboardClient) - - public: - /* 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 */ - wxStringList formats; - - /* This method is called when the client is losing the selection. */ - virtual void BeingReplaced() = 0; - - /* This method is called when someone wants the data this client is - supplying to the clipboard. "format" is a string indicating the - format of the data - one of the strings from the "formats" - list. "*size" should be filled with the size of the resulting - data. In the case of text, "*size" does not count the - NULL terminator. */ - virtual char *GetData(char *format, long *size) = 0; -}; - -/* ONE instance of this class: */ -class WXDLLEXPORT wxClipboard : public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxClipboard) - - public: - wxClipboardClient *clipOwner; - char *cbString, *sentString, *receivedString; - void *receivedTargets; - long receivedLength; - - wxClipboard(); - ~wxClipboard(); - - /* Set the clipboard data owner. "time" comes from the event record. */ - void SetClipboardClient(wxClipboardClient *, long time); - - /* Set the clipboard string; does not require a client. */ - void SetClipboardString(char *, long time); - - /* Get data from the clipboard in the format "TEXT". */ - char *GetClipboardString(long time); - - /* Get data from the clipboard */ - char *GetClipboardData(char *format, long *length, long time); - - /* 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. (This is used - by the wxMediaEdit class.) */ - wxClipboardClient *GetClipboardClient(); -}; - -/* Initialize wxTheClipboard. Can be called repeatedly */ -void WXDLLEXPORT wxInitClipboard(); - -/* The clipboard */ -WXDLLEXPORT_DATA(extern wxClipboard*) wxTheClipboard; - -#endif - // Old clipboard class - -#endif - // _WX_CLIPBRD_H_ diff --git a/include/wx/motif/colordlg.h b/include/wx/motif/colordlg.h deleted file mode 100644 index 58cbb11e0a..0000000000 --- a/include/wx/motif/colordlg.h +++ /dev/null @@ -1,46 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: colordlg.h -// Purpose: wxColourDialog class. Use generic version if no -// platform-specific implementation. -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_COLORDLG_H_ -#define _WX_COLORDLG_H_ - -#ifdef __GNUG__ -#pragma interface "colordlg.h" -#endif - -#include "wx/setup.h" -#include "wx/dialog.h" -#include "wx/cmndata.h" - -/* - * Platform-specific colour dialog implementation - */ - -class WXDLLEXPORT wxColourDialog: public wxDialog -{ -DECLARE_DYNAMIC_CLASS(wxColourDialog) -public: - wxColourDialog(); - wxColourDialog(wxWindow *parent, wxColourData *data = NULL); - - bool Create(wxWindow *parent, wxColourData *data = NULL); - - int ShowModal(); - wxColourData& GetColourData() { return m_colourData; } - -protected: - wxColourData m_colourData; - wxWindow* m_dialogParent; -}; - -#endif - // _WX_COLORDLG_H_ diff --git a/include/wx/motif/colour.h b/include/wx/motif/colour.h deleted file mode 100644 index 7059f61441..0000000000 --- a/include/wx/motif/colour.h +++ /dev/null @@ -1,90 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: colour.h -// Purpose: wxColour class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_COLOUR_H_ -#define _WX_COLOUR_H_ - -#ifdef __GNUG__ -#pragma interface "colour.h" -#endif - -#include "wx/object.h" -#include "wx/string.h" - -// Colour -class WXDLLEXPORT wxColour : public wxObject -{ -DECLARE_DYNAMIC_CLASS(wxColour) -public: - // ctors - // default - wxColour(); - // from RGB - wxColour( unsigned char red, unsigned char green, unsigned char blue ); - // implicit conversion from the colour name - wxColour( const wxString &colourName ) { InitFromName(colourName); } - wxColour( const char *colourName ) { InitFromName(colourName); } - - // copy ctors and assignment operators - wxColour( const wxColour& col ); - wxColour& operator = ( const wxColour& col ); - - // dtor - ~wxColour(); - - // Set() functions - void Set( unsigned char red, unsigned char green, unsigned char blue ); - void Set( unsigned long colRGB ) - { - // we don't need to know sizeof(long) here because we assume that the three - // least significant bytes contain the R, G and B values - Set((unsigned char)colRGB, - (unsigned char)(colRGB >> 8), - (unsigned char)(colRGB >> 16)); - } - - // accessors - bool Ok() const {return m_isInit; } - unsigned char Red() const { return m_red; } - unsigned char Green() const { return m_green; } - unsigned char Blue() const { return m_blue; } - - int GetPixel() const { return m_pixel; }; - void SetPixel(int pixel) { m_pixel = pixel; m_isInit = TRUE; }; - - inline bool operator == (const wxColour& colour) { return (m_red == colour.m_red && m_green == colour.m_green && m_blue == colour.m_blue); } - - inline bool operator != (const wxColour& colour) { return (!(m_red == colour.m_red && m_green == colour.m_green && m_blue == colour.m_blue)); } - - // Allocate a colour, or nearest colour, using the given display. - // If realloc is TRUE, ignore the existing pixel, otherwise just return - // the existing one. - // Returns the allocated pixel. - - // TODO: can this handle mono displays? If not, we should have an extra - // flag to specify whether this should be black or white by default. - - int AllocColour(WXDisplay* display, bool realloc = FALSE); - - void InitFromName(const wxString& col); - -private: - bool m_isInit; - unsigned char m_red; - unsigned char m_blue; - unsigned char m_green; - -public: - int m_pixel; -}; - -#endif - // _WX_COLOUR_H_ diff --git a/include/wx/motif/combobox.h b/include/wx/motif/combobox.h deleted file mode 100644 index 7568d28b79..0000000000 --- a/include/wx/motif/combobox.h +++ /dev/null @@ -1,98 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: combobox.h -// Purpose: wxComboBox class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_COMBOBOX_H_ -#define _WX_COMBOBOX_H_ - -#ifdef __GNUG__ -#pragma interface "combobox.h" -#endif - -#include "wx/choice.h" - -WXDLLEXPORT_DATA(extern const char*) wxComboBoxNameStr; -WXDLLEXPORT_DATA(extern const char*) wxEmptyString; - -// Combobox item -class WXDLLEXPORT wxComboBox: public wxChoice -{ - DECLARE_DYNAMIC_CLASS(wxComboBox) - - public: - inline wxComboBox() {} - ~wxComboBox(); - - inline wxComboBox(wxWindow *parent, wxWindowID id, - const wxString& value = wxEmptyString, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = NULL, - long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxComboBoxNameStr) - { - Create(parent, id, value, pos, size, n, choices, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - const wxString& value = wxEmptyString, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = NULL, - long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxComboBoxNameStr); - - virtual void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - virtual void SetSize(const wxRect& rect, int sizeFlags = wxSIZE_AUTO) - { wxWindow::SetSize(rect, sizeFlags); } - virtual void SetSize(const wxSize& size) { wxWindow::SetSize(size); } - virtual void SetSize(int width, int height) { SetSize(-1, -1, width, height, wxSIZE_USE_EXISTING); } - - // List functions - virtual void Append(const wxString& item); - virtual void Delete(int n); - virtual void Clear(); - virtual int GetSelection() const ; - virtual void SetSelection(int n); - virtual int FindString(const wxString& s) const; - virtual wxString GetString(int n) const ; - virtual wxString GetStringSelection() const ; - virtual bool SetStringSelection(const wxString& sel); - virtual inline int Number() const { return m_noStrings; } - - // Text field functions - virtual wxString GetValue() const ; - virtual void SetValue(const wxString& value); - - // Clipboard operations - virtual void Copy(); - virtual void Cut(); - virtual void Paste(); - virtual void SetInsertionPoint(long pos); - virtual void SetInsertionPointEnd(); - virtual long GetInsertionPoint() const ; - virtual long GetLastPosition() const ; - virtual void Replace(long from, long to, const wxString& value); - virtual void Remove(long from, long to); - virtual void SetSelection(long from, long to); - virtual void SetEditable(bool editable); - -// Implementation - virtual void ChangeFont(bool keepOriginalSize = TRUE); - virtual void ChangeBackgroundColour(); - virtual void ChangeForegroundColour(); - WXWidget GetTopWidget() const { return m_mainWidget; } - WXWidget GetMainWidget() const { return m_mainWidget; } -}; - -#endif - // _WX_COMBOBOX_H_ diff --git a/include/wx/motif/control.h b/include/wx/motif/control.h deleted file mode 100644 index a40687a118..0000000000 --- a/include/wx/motif/control.h +++ /dev/null @@ -1,54 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: control.h -// Purpose: wxControl class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_CONTROL_H_ -#define _WX_CONTROL_H_ - -#ifdef __GNUG__ -#pragma interface "control.h" -#endif - -#include "wx/window.h" -#include "wx/list.h" -#include "wx/validate.h" - -// General item class -class WXDLLEXPORT wxControl: public wxWindow -{ - DECLARE_ABSTRACT_CLASS(wxControl) -public: - wxControl(); - ~wxControl(); - - virtual void Command(wxCommandEvent& WXUNUSED(event)) {}; // Simulates an event - virtual void ProcessCommand(wxCommandEvent& event); // Calls the callback and - // appropriate event handlers - virtual void SetLabel(const wxString& label); - virtual wxString GetLabel() const ; - - // Places item in centre of panel - so can't be used BEFORE panel->Fit() - void Centre(int direction = wxHORIZONTAL); - inline void Callback(const wxFunction function) { m_callback = function; }; // Adds callback - - inline wxFunction GetCallback() { return m_callback; } - - inline bool InSetValue() const { return m_inSetValue; } -protected: - wxFunction m_callback; // Callback associated with the window - - bool m_inSetValue; // Motif: prevent callbacks being called while - // in SetValue - - DECLARE_EVENT_TABLE() -}; - -#endif - // _WX_CONTROL_H_ diff --git a/include/wx/motif/cursor.h b/include/wx/motif/cursor.h deleted file mode 100644 index 2ca07ac040..0000000000 --- a/include/wx/motif/cursor.h +++ /dev/null @@ -1,84 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: cursor.h -// Purpose: wxCursor class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_CURSOR_H_ -#define _WX_CURSOR_H_ - -#ifdef __GNUG__ -#pragma interface "cursor.h" -#endif - -#include "wx/bitmap.h" - -/* Cursor for one display, so we can choose the correct one for - * the current display. - */ -class wxXCursor : public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxXCursor) - - public: - WXDisplay* m_display; - WXCursor m_cursor; -}; - -class WXDLLEXPORT wxCursorRefData: public wxBitmapRefData -{ - friend class WXDLLEXPORT wxBitmap; - friend class WXDLLEXPORT wxCursor; -public: - wxCursorRefData(); - ~wxCursorRefData(); - - wxList m_cursors; // wxXCursor objects, one per display - wxStockCursor m_cursorId; // wxWindows standard cursor id -}; - -#define M_CURSORDATA ((wxCursorRefData *)m_refData) -#define M_CURSORHANDLERDATA ((wxCursorRefData *)bitmap->m_refData) - -// Cursor -class WXDLLEXPORT wxCursor: public wxBitmap -{ - DECLARE_DYNAMIC_CLASS(wxCursor) - -public: - wxCursor(); - - // Copy constructors - inline wxCursor(const wxCursor& cursor) { Ref(cursor); } - - wxCursor(const char bits[], int width, int height, int hotSpotX = -1, int hotSpotY = -1, - const char maskBits[] = NULL); - - wxCursor(const wxString& name, long flags = wxBITMAP_TYPE_XBM, - int hotSpotX = 0, int hotSpotY = 0); - - wxCursor(wxStockCursor id); - ~wxCursor(); - - virtual bool Ok() const { return ((m_refData != NULL) && M_CURSORDATA->m_ok); } - - inline wxCursor& operator = (const wxCursor& cursor) { if (*this == cursor) return (*this); Ref(cursor); return *this; } - inline bool operator == (const wxCursor& cursor) { return m_refData == cursor.m_refData; } - inline bool operator != (const wxCursor& cursor) { return m_refData != cursor.m_refData; } - - // Motif-specific. - // Create/get a cursor for the current display - WXCursor GetXCursor(WXDisplay* display) ; - // Make a cursor from standard id - WXCursor MakeCursor(WXDisplay* display, wxStockCursor id); -}; - -extern WXDLLEXPORT void wxSetCursor(const wxCursor& cursor); - -#endif - // _WX_CURSOR_H_ diff --git a/include/wx/motif/dataobj.h b/include/wx/motif/dataobj.h deleted file mode 100644 index 8c8150a8b1..0000000000 --- a/include/wx/motif/dataobj.h +++ /dev/null @@ -1,174 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: dataobj.h -// Purpose: declaration of the wxDataObject class -// Author: Julian Smart -// RCS-ID: $Id$ -// Copyright: (c) 1998 Julian Smart -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_DATAOBJ_H_ -#define _WX_DATAOBJ_H_ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/string.h" -#include "wx/bitmap.h" - -//------------------------------------------------------------------------- -// classes -//------------------------------------------------------------------------- - -class WXDLLEXPORT wxDataObject; -class WXDLLEXPORT wxTextDataObject; -class WXDLLEXPORT wxBitmapDataObject; -class WXDLLEXPORT wxPrivateDataObject; -class WXDLLEXPORT wxFileDataObject; - -//------------------------------------------------------------------------- -// wxDataObject -//------------------------------------------------------------------------- - -class WXDLLEXPORT wxDataObject: public wxObject -{ - DECLARE_ABSTRACT_CLASS( wxDataObject ) - -public: - - wxDataObject() {} - ~wxDataObject() {} - - virtual wxDataFormat GetFormat() const = 0; - - // implementation -}; - -// ---------------------------------------------------------------------------- -// wxTextDataObject is a specialization of wxDataObject for text data -// ---------------------------------------------------------------------------- - -class WXDLLEXPORT wxTextDataObject : public wxDataObject -{ - DECLARE_DYNAMIC_CLASS( wxTextDataObject ) - -public: - - wxTextDataObject() {} - wxTextDataObject( const wxString& strText ) - : m_strText(strText) { } - - virtual wxDataFormat GetFormat() const - { return wxDF_TEXT; } - - void SetText( const wxString& strText) - { m_strText = strText; } - - wxString GetText() const - { return m_strText; } - -private: - wxString m_strText; - -}; - -// ---------------------------------------------------------------------------- -// wxFileDataObject is a specialization of wxDataObject for file names -// ---------------------------------------------------------------------------- - -class WXDLLEXPORT wxFileDataObject : public wxDataObject -{ - DECLARE_DYNAMIC_CLASS( wxFileDataObject ) - -public: - - wxFileDataObject(void) {} - - virtual wxDataFormat GetFormat() const - { return wxDF_FILENAME; } - - void AddFile( const wxString &file ) - { m_files += file; m_files += (char)0; } - - wxString GetFiles() const - { return m_files; } - -private: - wxString m_files; - -}; - -// ---------------------------------------------------------------------------- -// wxBitmapDataObject is a specialization of wxDataObject for bitmaps -// ---------------------------------------------------------------------------- - -class WXDLLEXPORT wxBitmapDataObject : public wxDataObject -{ - DECLARE_DYNAMIC_CLASS( wxBitmapDataObject ) - -public: - - wxBitmapDataObject(void) {} - - virtual wxDataFormat GetFormat() const - { return wxDF_BITMAP; } - - void SetBitmap( const wxBitmap &bitmap ) - { m_bitmap = bitmap; } - - wxBitmap GetBitmap() const - { return m_bitmap; } - -private: - wxBitmap m_bitmap; -}; - -// ---------------------------------------------------------------------------- -// wxPrivateDataObject is a specialization of wxDataObject for app specific data -// ---------------------------------------------------------------------------- - -class WXDLLEXPORT wxPrivateDataObject : public wxDataObject -{ - DECLARE_DYNAMIC_CLASS( wxPrivateDataObject ) - -public: - - wxPrivateDataObject(); - - ~wxPrivateDataObject(); - - virtual wxDataFormat GetFormat() const - { return wxDF_PRIVATE; } - - // the string ID identifies the format of clipboard or DnD data. a word - // processor would e.g. add a wxTextDataObject and a wxPrivateDataObject - // to the clipboard - the latter with the Id "WXWORD_FORMAT". - - void SetId( const wxString& id ) - { m_id = id; } - - wxString GetId() const - { return m_id; } - - // will make internal copy - void SetData( const char *data, size_t size ); - - size_t GetDataSize() const - { return m_size; } - - char* GetData() const - { return m_data; } - -private: - size_t m_size; - char* m_data; - wxString m_id; -}; - - -#endif - //_WX_DATAOBJ_H_ - diff --git a/include/wx/motif/dc.h b/include/wx/motif/dc.h deleted file mode 100644 index 35842b1095..0000000000 --- a/include/wx/motif/dc.h +++ /dev/null @@ -1,389 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dc.h -// Purpose: wxDC class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_DC_H_ -#define _WX_DC_H_ - -#ifdef __GNUG__ -#pragma interface "dc.h" -#endif - -#include "wx/pen.h" -#include "wx/brush.h" -#include "wx/icon.h" -#include "wx/font.h" -#include "wx/gdicmn.h" - -//----------------------------------------------------------------------------- -// constants -//----------------------------------------------------------------------------- - -#ifndef MM_TEXT -#define MM_TEXT 0 -#define MM_ISOTROPIC 1 -#define MM_ANISOTROPIC 2 -#define MM_LOMETRIC 3 -#define MM_HIMETRIC 4 -#define MM_TWIPS 5 -#define MM_POINTS 6 -#define MM_METRIC 7 -#endif - -//----------------------------------------------------------------------------- -// global variables -//----------------------------------------------------------------------------- - -extern int wxPageNumber; - -//----------------------------------------------------------------------------- -// wxDC -//----------------------------------------------------------------------------- - -class WXDLLEXPORT wxDC: public wxObject -{ - DECLARE_ABSTRACT_CLASS(wxDC) - - public: - - wxDC(void); - ~wxDC(void); - - void BeginDrawing(void) {}; - void EndDrawing(void) {}; - - virtual bool Ok(void) const { return m_ok; }; - - virtual void FloodFill( long x1, long y1, const wxColour& col, int style=wxFLOOD_SURFACE ) = 0; - inline void FloodFill(const wxPoint& pt, const wxColour& col, int style=wxFLOOD_SURFACE) - { - FloodFill(pt.x, pt.y, col, style); - } - - virtual bool GetPixel( long x1, long y1, wxColour *col ) const = 0; - inline bool GetPixel(const wxPoint& pt, wxColour *col) const - { - return GetPixel(pt.x, pt.y, col); - } - - virtual void DrawLine( long x1, long y1, long x2, long y2 ) = 0; - inline void DrawLine(const wxPoint& pt1, const wxPoint& pt2) - { - DrawLine(pt1.x, pt1.y, pt2.x, pt2.y); - } - - virtual void CrossHair( long x, long y ) = 0; - inline void CrossHair(const wxPoint& pt) - { - CrossHair(pt.x, pt.y); - } - - virtual void DrawArc( long x1, long y1, long x2, long y2, long xc, long yc ) = 0; - inline void DrawArc(const wxPoint& pt1, const wxPoint& pt2, const wxPoint& centre) - { - DrawArc(pt1.x, pt1.y, pt2.x, pt2.y, centre.x, centre.y); - } - - virtual void DrawEllipticArc( long x, long y, long width, long height, double sa, double ea ) = 0; - virtual void DrawEllipticArc (const wxPoint& pt, const wxSize& sz, double sa, double ea) - { - DrawEllipticArc(pt.x, pt.y, sz.x, sz.y, sa, ea); - } - - virtual void DrawPoint( long x, long y ) = 0; - virtual void DrawPoint( wxPoint& point ); - - virtual void DrawLines( int n, wxPoint points[], long xoffset = 0, long yoffset = 0 ) = 0; - virtual void DrawLines( wxList *points, long xoffset = 0, long yoffset = 0 ); - virtual void DrawPolygon( int n, wxPoint points[], long xoffset = 0, long yoffset = 0, - int fillStyle=wxODDEVEN_RULE ) = 0; - virtual void DrawPolygon( wxList *lines, long xoffset = 0, long yoffset = 0, - int fillStyle=wxODDEVEN_RULE ); - - virtual void DrawRectangle( long x, long y, long width, long height ) = 0; - inline void DrawRectangle(const wxPoint& pt, const wxSize& sz) - { - DrawRectangle(pt.x, pt.y, sz.x, sz.y); - } - inline void DrawRectangle(const wxRect& rect) - { - DrawRectangle(rect.x, rect.y, rect.width, rect.height); - } - virtual void DrawRoundedRectangle( long x, long y, long width, long height, double radius = 20.0 ) = 0; - inline void DrawRoundedRectangle(const wxPoint& pt, const wxSize& sz, double radius = 20.0) - { - DrawRoundedRectangle(pt.x, pt.y, sz.x, sz.y, radius); - } - inline void DrawRoundedRectangle(const wxRect& rect, double radius = 20.0) - { - DrawRoundedRectangle(rect.x, rect.y, rect.width, rect.height, radius); - } - - virtual void DrawEllipse( long x, long y, long width, long height ) = 0; - inline void DrawEllipse(const wxPoint& pt, const wxSize& sz) - { - DrawEllipse(pt.x, pt.y, sz.x, sz.y); - } - inline void DrawEllipse(const wxRect& rect) - { - DrawEllipse(rect.x, rect.y, rect.width, rect.height); - } - - virtual void DrawSpline( long x1, long y1, long x2, long y2, long x3, long y3 ); - virtual void DrawSpline( wxList *points ) = 0; - virtual void DrawSpline( int n, wxPoint points[] ); - - virtual bool CanDrawBitmap(void) const = 0; - - virtual void DrawIcon( const wxIcon &icon, long x, long y); - inline void DrawIcon(const wxIcon& icon, const wxPoint& pt) - { - DrawIcon(icon, pt.x, pt.y); - } - - // DrawBitmap is not always the same as DrawIcon, especially if bitmaps and - // icons are implemented differently. - virtual void DrawBitmap( const wxBitmap &bmp, long x, long y, bool useMask=FALSE ) ; - - virtual bool Blit( long xdest, long ydest, long width, long height, - wxDC *source, long xsrc, long ysrc, int logical_func = wxCOPY, bool useMask=FALSE ) = 0; - inline bool Blit(const wxPoint& destPt, const wxSize& sz, - wxDC *source, const wxPoint& srcPt, int rop = wxCOPY, bool useMask = FALSE) - { - return Blit(destPt.x, destPt.y, sz.x, sz.y, source, srcPt.x, srcPt.y, rop, useMask); - } - - virtual void DrawText( const wxString &text, long x, long y, bool use16 = FALSE ) = 0; - inline void DrawText(const wxString& text, const wxPoint& pt, bool use16bit = FALSE) - { - DrawText(text, pt.x, pt.y, use16bit); - } - - virtual bool CanGetTextExtent(void) const = 0; - virtual void GetTextExtent( const wxString &string, long *width, long *height, - long *descent = NULL, long *externalLeading = NULL, - wxFont *theFont = NULL, bool use16 = FALSE ) = 0; - virtual long GetCharWidth(void) = 0; - virtual long GetCharHeight(void) = 0; - - virtual void Clear(void) = 0; - - virtual void SetFont( const wxFont &font ) = 0; - virtual wxFont& GetFont(void) const { return (wxFont&) m_font; }; - - virtual void SetPen( const wxPen &pen ) = 0; - virtual wxPen& GetPen(void) const { return (wxPen&) m_pen; }; - - virtual void SetBrush( const wxBrush &brush ) = 0; - virtual wxBrush& GetBrush(void) const { return (wxBrush&) m_brush; }; - - virtual void SetBackground( const wxBrush &brush ) = 0; - virtual wxBrush& GetBackground(void) const { return (wxBrush&) m_backgroundBrush; }; - - virtual void SetLogicalFunction( int function ) = 0; - virtual int GetLogicalFunction(void) const { return m_logicalFunction; }; - - virtual void SetTextForeground( const wxColour &col ); - virtual void SetTextBackground( const wxColour &col ); - virtual wxColour& GetTextBackground(void) const { return (wxColour&)m_textBackgroundColour; }; - virtual wxColour& GetTextForeground(void) const { return (wxColour&)m_textForegroundColour; }; - - virtual void SetBackgroundMode( int mode ) = 0; - virtual int GetBackgroundMode(void) const { return m_backgroundMode; }; - - virtual void SetPalette( const wxPalette& palette ) = 0; - void SetColourMap( const wxPalette& palette ) { SetPalette(palette); }; - - // the first two must be overridden and called - virtual void SetClippingRegion( long x, long y, long width, long height ); - virtual void DestroyClippingRegion(void); - virtual void GetClippingBox( long *x, long *y, long *width, long *height ) const; - - virtual inline long MinX(void) const { return m_minX; } - virtual inline long MaxX(void) const { return m_maxX; } - virtual inline long MinY(void) const { return m_minY; } - virtual inline long MaxY(void) const { return m_maxY; } - - virtual void GetSize( int* width, int* height ) const; - inline wxSize GetSize(void) const { int w, h; GetSize(&w, &h); return wxSize(w, h); } - virtual void GetSizeMM( long* width, long* height ) const; - - virtual bool StartDoc( const wxString& WXUNUSED(message) ) { return TRUE; }; - virtual void EndDoc(void) {}; - virtual void StartPage(void) {}; - virtual void EndPage(void) {}; - - virtual void SetMapMode( int mode ); - virtual int GetMapMode(void) const { return m_mappingMode; }; - - virtual void SetUserScale( double x, double y ); - virtual void GetUserScale( double *x, double *y ); - virtual void SetLogicalScale( double x, double y ); - virtual void GetLogicalScale( double *x, double *y ); - - virtual void SetLogicalOrigin( long x, long y ); - virtual void GetLogicalOrigin( long *x, long *y ); - virtual void SetDeviceOrigin( long x, long y ); - virtual void GetDeviceOrigin( long *x, long *y ); - virtual void SetInternalDeviceOrigin( long x, long y ); - virtual void GetInternalDeviceOrigin( long *x, long *y ); - - virtual void SetAxisOrientation( bool xLeftRight, bool yBottomUp ); - - virtual void SetOptimization( bool optimize ) { m_optimize = optimize; }; - virtual bool GetOptimization(void) { return m_optimize; }; - - virtual long DeviceToLogicalX(long x) const; - virtual long DeviceToLogicalY(long y) const; - virtual long DeviceToLogicalXRel(long x) const; - virtual long DeviceToLogicalYRel(long y) const; - virtual long LogicalToDeviceX(long x) const; - virtual long LogicalToDeviceY(long y) const; - virtual long LogicalToDeviceXRel(long x) const; - virtual long LogicalToDeviceYRel(long y) const; - - public: - - void CalcBoundingBox( long x, long y ); - void ComputeScaleAndOrigin(void); - - long XDEV2LOG(long x) const - { - long new_x = x - m_deviceOriginX; - if (new_x > 0) - return (long)((double)(new_x) / m_scaleX + 0.5) * m_signX + m_logicalOriginX; - else - return (long)((double)(new_x) / m_scaleX - 0.5) * m_signX + m_logicalOriginX; - } - long XDEV2LOGREL(long x) const - { - if (x > 0) - return (long)((double)(x) / m_scaleX + 0.5); - else - return (long)((double)(x) / m_scaleX - 0.5); - } - long YDEV2LOG(long y) const - { - long new_y = y - m_deviceOriginY; - if (new_y > 0) - return (long)((double)(new_y) / m_scaleY + 0.5) * m_signY + m_logicalOriginY; - else - return (long)((double)(new_y) / m_scaleY - 0.5) * m_signY + m_logicalOriginY; - } - long YDEV2LOGREL(long y) const - { - if (y > 0) - return (long)((double)(y) / m_scaleY + 0.5); - else - return (long)((double)(y) / m_scaleY - 0.5); - } - long XLOG2DEV(long x) const - { - long new_x = x - m_logicalOriginX; - if (new_x > 0) - return (long)((double)(new_x) * m_scaleX + 0.5) * m_signX + m_deviceOriginX; - else - return (long)((double)(new_x) * m_scaleX - 0.5) * m_signX + m_deviceOriginX; - } - // Without device translation, for backing pixmap purposes - long XLOG2DEV_2(long x) const - { - long new_x = x - m_logicalOriginX; - if (new_x > 0) - return (long)((double)(new_x) * m_scaleX + 0.5) * m_signX; - else - return (long)((double)(new_x) * m_scaleX - 0.5) * m_signX; - } - long XLOG2DEVREL(long x) const - { - if (x > 0) - return (long)((double)(x) * m_scaleX + 0.5); - else - return (long)((double)(x) * m_scaleX - 0.5); - } - long YLOG2DEV(long y) const - { - long new_y = y - m_logicalOriginY; - if (new_y > 0) - return (long)((double)(new_y) * m_scaleY + 0.5) * m_signY + m_deviceOriginY; - else - return (long)((double)(new_y) * m_scaleY - 0.5) * m_signY + m_deviceOriginY; - } - // Without device translation, for backing pixmap purposes - long YLOG2DEV_2(long y) const - { - long new_y = y - m_logicalOriginY; - if (new_y > 0) - return (long)((double)(new_y) * m_scaleY + 0.5) * m_signY; - else - return (long)((double)(new_y) * m_scaleY - 0.5) * m_signY; - } - long YLOG2DEVREL(long y) const - { - if (y > 0) - return (long)((double)(y) * m_scaleY + 0.5); - else - return (long)((double)(y) * m_scaleY - 0.5); - } - - public: - - bool m_ok; - bool m_colour; - - // not sure, what these mean - bool m_clipping; // Is clipping on right now ? - bool m_optimize; // wxMSW only ? - bool m_isInteractive; // For wxPostScriptDC - wxString m_filename; // Ditto - - wxPen m_pen; - wxBrush m_brush; - wxBrush m_backgroundBrush; - wxColour m_textForegroundColour; - wxColour m_textBackgroundColour; - wxFont m_font; - - int m_logicalFunction; - int m_backgroundMode; - int m_textAlignment; // gone in wxWin 2.0 ? - - int m_mappingMode; - - // not sure what for, but what is a mm on a screen you don't know the size of? - double m_mm_to_pix_x,m_mm_to_pix_y; - - long m_internalDeviceOriginX,m_internalDeviceOriginY; // If un-scrolled is non-zero or - // d.o. changes with scrolling. - // Set using SetInternalDeviceOrigin(). - - long m_externalDeviceOriginX,m_externalDeviceOriginY; // To be set by external classes - // such as wxScrolledWindow - // using SetDeviceOrigin() - - long m_deviceOriginX,m_deviceOriginY; // Sum of the two above. - - long m_logicalOriginX,m_logicalOriginY; // User defined. - - double m_scaleX,m_scaleY; - double m_logicalScaleX,m_logicalScaleY; - double m_userScaleX,m_userScaleY; - long m_signX,m_signY; - - bool m_needComputeScaleX,m_needComputeScaleY; // not yet used - - float m_scaleFactor; // wxPSDC wants to have this. Will disappear. - - long m_clipX1,m_clipY1,m_clipX2,m_clipY2; - long m_minX,m_maxX,m_minY,m_maxY; -}; - -#endif - // _WX_DC_H_ diff --git a/include/wx/motif/dcclient.h b/include/wx/motif/dcclient.h deleted file mode 100644 index 2eef5da012..0000000000 --- a/include/wx/motif/dcclient.h +++ /dev/null @@ -1,226 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcclient.h -// Purpose: wxClientDC, wxPaintDC and wxWindowDC classes -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_DCCLIENT_H_ -#define _WX_DCCLIENT_H_ - -#ifdef __GNUG__ -#pragma interface "dcclient.h" -#endif - -#include "wx/dc.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class WXDLLEXPORT wxWindowDC; -class WXDLLEXPORT wxWindow; - -// Under Windows, wxClientDC, wxPaintDC and wxWindowDC are implemented differently. -// On many platforms, however, they will be the same. - -//----------------------------------------------------------------------------- -// wxWindowDC -//----------------------------------------------------------------------------- - -class WXDLLEXPORT wxWindowDC: public wxDC -{ - DECLARE_DYNAMIC_CLASS(wxWindowDC) - - public: - - wxWindowDC(void); - wxWindowDC( wxWindow *win ); - - ~wxWindowDC(void); - - virtual void FloodFill( long x1, long y1, const wxColour& col, int style=wxFLOOD_SURFACE ); - inline void FloodFill(const wxPoint& pt, const wxColour& col, int style=wxFLOOD_SURFACE) - { - FloodFill(pt.x, pt.y, col, style); - } - - virtual bool GetPixel( long x1, long y1, wxColour *col ) const; - inline bool GetPixel(const wxPoint& pt, wxColour *col) const - { - return GetPixel(pt.x, pt.y, col); - } - - virtual void DrawLine( long x1, long y1, long x2, long y2 ); - inline void DrawLine(const wxPoint& pt1, const wxPoint& pt2) - { - DrawLine(pt1.x, pt1.y, pt2.x, pt2.y); - } - - virtual void CrossHair( long x, long y ); - inline void CrossHair(const wxPoint& pt) - { - CrossHair(pt.x, pt.y); - } - - virtual void DrawArc( long x1, long y1, long x2, long y2, long xc, long yc ); - inline void DrawArc(const wxPoint& pt1, const wxPoint& pt2, const wxPoint& centre) - { - DrawArc(pt1.x, pt1.y, pt2.x, pt2.y, centre.x, centre.y); - } - - virtual void DrawEllipticArc( long x, long y, long width, long height, double sa, double ea ); - virtual void DrawEllipticArc (const wxPoint& pt, const wxSize& sz, double sa, double ea) - { - DrawEllipticArc(pt.x, pt.y, sz.x, sz.y, sa, ea); - } - - virtual void DrawPoint( long x, long y ); - inline void DrawPoint( wxPoint& point ) - { DrawPoint(point.x, point.y); } - - virtual void DrawLines( int n, wxPoint points[], long xoffset = 0, long yoffset = 0 ); - virtual void DrawLines( wxList *points, long xoffset = 0, long yoffset = 0 ); - virtual void DrawPolygon( int n, wxPoint points[], long xoffset = 0, long yoffset = 0, - int fillStyle=wxODDEVEN_RULE ); - virtual void DrawPolygon( wxList *lines, long xoffset = 0, long yoffset = 0, - int fillStyle=wxODDEVEN_RULE ); - - virtual void DrawRectangle( long x, long y, long width, long height ); - inline void DrawRectangle(const wxPoint& pt, const wxSize& sz) - { - DrawRectangle(pt.x, pt.y, sz.x, sz.y); - } - inline void DrawRectangle(const wxRect& rect) - { - DrawRectangle(rect.x, rect.y, rect.width, rect.height); - } - - virtual void DrawRoundedRectangle( long x, long y, long width, long height, double radius = 20.0 ); - inline void DrawRoundedRectangle(const wxPoint& pt, const wxSize& sz, double radius = 20.0) - { - DrawRoundedRectangle(pt.x, pt.y, sz.x, sz.y, radius); - } - inline void DrawRoundedRectangle(const wxRect& rect, double radius = 20.0) - { - DrawRoundedRectangle(rect.x, rect.y, rect.width, rect.height, radius); - } - - virtual void DrawEllipse( long x, long y, long width, long height ); - inline void DrawEllipse(const wxPoint& pt, const wxSize& sz) - { - DrawEllipse(pt.x, pt.y, sz.x, sz.y); - } - inline void DrawEllipse(const wxRect& rect) - { - DrawEllipse(rect.x, rect.y, rect.width, rect.height); - } - - virtual bool CanDrawBitmap(void) const; - - virtual void DrawIcon( const wxIcon &icon, long x, long y); - inline void DrawIcon(const wxIcon& icon, const wxPoint& pt) - { - DrawIcon(icon, pt.x, pt.y); - } - - virtual bool Blit( long xdest, long ydest, long width, long height, - wxDC *source, long xsrc, long ysrc, int logical_func = wxCOPY, bool useMask=FALSE ); - inline bool Blit(const wxPoint& destPt, const wxSize& sz, - wxDC *source, const wxPoint& srcPt, int rop = wxCOPY, bool useMask = FALSE) - { - return Blit(destPt.x, destPt.y, sz.x, sz.y, source, srcPt.x, srcPt.y, rop, useMask); - } - - virtual void DrawText( const wxString &text, long x, long y, bool use16 = FALSE ); - inline void DrawText(const wxString& text, const wxPoint& pt, bool use16bit = FALSE) - { - DrawText(text, pt.x, pt.y, use16bit); - } - - virtual bool CanGetTextExtent(void) const; - virtual void GetTextExtent( const wxString &string, long *width, long *height, - long *descent = NULL, long *externalLeading = NULL, - wxFont *theFont = NULL, bool use16 = FALSE ); - virtual long GetCharWidth(void); - virtual long GetCharHeight(void); - - virtual void Clear(void); - virtual void Clear(const wxRect& rect); - - virtual void SetFont( const wxFont &font ); - virtual void SetPen( const wxPen &pen ); - virtual void SetBrush( const wxBrush &brush ); - virtual void SetBackground( const wxBrush &brush ); - virtual void SetLogicalFunction( int function ); - virtual void SetTextForeground( const wxColour &col ); - virtual void SetTextBackground( const wxColour &col ); - virtual void SetBackgroundMode( int mode ); - virtual void SetPalette( const wxPalette& palette ); - - virtual void SetClippingRegion( long x, long y, long width, long height ); - virtual void SetClippingRegion( const wxRegion& region ); - virtual void DestroyClippingRegion(void); - - virtual void DrawSpline( wxList *points ); - virtual void DrawSpline( long x1, long y1, long x2, long y2, long x3, long y3 ) - { wxDC::DrawSpline(x1, y1, x2, y2, x3, y3); } - virtual void DrawSpline( int n, wxPoint points[] ) - { wxDC::DrawSpline(n, points); } - - // Motif-specific - void SetDCClipping (); // Helper function for setting clipping - - inline WXGC GetGC() const { return m_gc; } - inline WXDisplay* GetDisplay() const { return m_display; } - inline bool GetAutoSetting() const { return m_autoSetting; } - inline void SetAutoSetting(bool flag) { m_autoSetting = flag; } - -protected: - WXGC m_gc; - WXGC m_gcBacking; - WXDisplay* m_display; - wxWindow* m_window; - WXRegion m_currentRegion; // Current clipping region (incl. paint clip region) - WXRegion m_userRegion; // User-defined clipping region - WXPixmap m_pixmap; // Pixmap for drawing on - - // Not sure if we'll need all of these - int m_backgroundPixel; - wxColour m_currentColour; -// int m_currentBkMode; - int m_currentPenWidth ; - int m_currentPenJoin ; - int m_currentPenCap ; - int m_currentPenDashCount ; - char* m_currentPenDash ; - wxBitmap m_currentStipple ; - int m_currentStyle ; - int m_currentFill ; - int m_autoSetting ; // See comment in dcclient.cpp - WXFont m_oldFont; -}; - -class WXDLLEXPORT wxPaintDC: public wxWindowDC -{ - DECLARE_DYNAMIC_CLASS(wxPaintDC) -public: - wxPaintDC() {} - wxPaintDC(wxWindow* win); - ~wxPaintDC(); -}; - -class WXDLLEXPORT wxClientDC: public wxWindowDC -{ - DECLARE_DYNAMIC_CLASS(wxClientDC) -public: - wxClientDC() {} - wxClientDC(wxWindow* win): wxWindowDC(win) {} -}; - -#endif - // _WX_DCCLIENT_H_ diff --git a/include/wx/motif/dcmemory.h b/include/wx/motif/dcmemory.h deleted file mode 100644 index 6edc566925..0000000000 --- a/include/wx/motif/dcmemory.h +++ /dev/null @@ -1,40 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcmemory.h -// Purpose: wxMemoryDC class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_DCMEMORY_H_ -#define _WX_DCMEMORY_H_ - -#ifdef __GNUG__ -#pragma interface "dcmemory.h" -#endif - -#include "wx/dcclient.h" - -class WXDLLEXPORT wxMemoryDC: public wxWindowDC -{ - DECLARE_DYNAMIC_CLASS(wxMemoryDC) - - public: - wxMemoryDC(void); - wxMemoryDC( wxDC *dc ); // Create compatible DC - ~wxMemoryDC(void); - virtual void SelectObject( const wxBitmap& bitmap ); - void GetSize( int *width, int *height ) const; - - inline wxBitmap& GetBitmap() const { return (wxBitmap&) m_bitmap; } - - private: - friend wxPaintDC; - wxBitmap m_bitmap; -}; - -#endif - // _WX_DCMEMORY_H_ diff --git a/include/wx/motif/dcprint.h b/include/wx/motif/dcprint.h deleted file mode 100644 index d46260ffce..0000000000 --- a/include/wx/motif/dcprint.h +++ /dev/null @@ -1,34 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcprint.h -// Purpose: wxPrinterDC class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_DCPRINT_H_ -#define _WX_DCPRINT_H_ - -#ifdef __GNUG__ -#pragma interface "dcprint.h" -#endif - -#include "wx/dc.h" - -class WXDLLEXPORT wxPrinterDC: public wxDC -{ - public: - DECLARE_CLASS(wxPrinterDC) - - // Create a printer DC - wxPrinterDC(const wxString& driver, const wxString& device, const wxString& output, bool interactive = TRUE, int orientation = wxPORTRAIT); - - ~wxPrinterDC(); -}; - -#endif - // _WX_DCPRINT_H_ - diff --git a/include/wx/motif/dcscreen.h b/include/wx/motif/dcscreen.h deleted file mode 100644 index e4d4c16979..0000000000 --- a/include/wx/motif/dcscreen.h +++ /dev/null @@ -1,48 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcscreen.h -// Purpose: wxScreenDC class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_DCSCREEN_H_ -#define _WX_DCSCREEN_H_ - -#ifdef __GNUG__ -#pragma interface "dcscreen.h" -#endif - -#include "wx/dcclient.h" - -class WXDLLEXPORT wxScreenDC: public wxWindowDC -{ - DECLARE_DYNAMIC_CLASS(wxScreenDC) - - public: - // Create a DC representing the whole screen - wxScreenDC(); - ~wxScreenDC(); - - // Compatibility with X's requirements for - // drawing on top of all windows - static bool StartDrawingOnTop(wxWindow* window); - static bool StartDrawingOnTop(wxRect* rect = NULL); - static bool EndDrawingOnTop(); - -private: - static WXWindow sm_overlayWindow; - - // If we have started transparent drawing at a non-(0,0) point - // then we will have to adjust the device origin in the - // constructor. - static int sm_overlayWindowX; - static int sm_overlayWindowY; -}; - -#endif - // _WX_DCSCREEN_H_ - diff --git a/include/wx/motif/dialog.h b/include/wx/motif/dialog.h deleted file mode 100644 index f1d351436b..0000000000 --- a/include/wx/motif/dialog.h +++ /dev/null @@ -1,120 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dialog.h -// Purpose: wxDialog class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_DIALOG_H_ -#define _WX_DIALOG_H_ - -#ifdef __GNUG__ -#pragma interface "dialog.h" -#endif - -#include "wx/panel.h" - -WXDLLEXPORT_DATA(extern const char*) wxDialogNameStr; - -// Dialog boxes -class WXDLLEXPORT wxDialog: public wxPanel -{ - DECLARE_DYNAMIC_CLASS(wxDialog) -public: - - wxDialog(); - - // Constructor with a modal flag, but no window id - the old convention - inline wxDialog(wxWindow *parent, - const wxString& title, bool modal, - int x = -1, int y= -1, int width = 500, int height = 500, - long style = wxDEFAULT_DIALOG_STYLE, - const wxString& name = wxDialogNameStr) - { - long modalStyle = modal ? wxDIALOG_MODAL : wxDIALOG_MODELESS ; - Create(parent, -1, title, wxPoint(x, y), wxSize(width, height), style|modalStyle, name); - } - - // Constructor with no modal flag - the new convention. - inline wxDialog(wxWindow *parent, wxWindowID id, - const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_DIALOG_STYLE, - const wxString& name = wxDialogNameStr) - { - Create(parent, id, title, pos, size, style, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - const wxString& title, // bool modal = FALSE, // TODO make this a window style? - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_DIALOG_STYLE, - const wxString& name = wxDialogNameStr); - - ~wxDialog(); - - virtual bool Destroy(); - void SetClientSize(int width, int height); - void SetClientSize(const wxSize& size) { wxWindow::SetClientSize(size); } - - void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - virtual void SetSize(const wxRect& rect, int sizeFlags = wxSIZE_AUTO) - { wxWindow::SetSize(rect, sizeFlags); } - virtual void SetSize(const wxSize& size) { wxWindow::SetSize(size); } - virtual void SetSize(int width, int height) { SetSize(-1, -1, width, height, wxSIZE_USE_EXISTING); } - - bool Show(bool show); - void Iconize(bool iconize); - void Raise(); - void Lower(); - - virtual bool IsIconized() const; - void Fit(); - - void SetTitle(const wxString& title); - wxString GetTitle() const ; - - bool OnClose(); - void OnCharHook(wxKeyEvent& event); - void OnCloseWindow(wxCloseEvent& event); - - void SetModal(bool flag); - - virtual void Centre(int direction = wxBOTH); - virtual bool IsModal() const { return ((GetWindowStyleFlag() & wxDIALOG_MODAL) == wxDIALOG_MODAL); } - - virtual int ShowModal(); - virtual void EndModal(int retCode); - - // Standard buttons - void OnOK(wxCommandEvent& event); - void OnApply(wxCommandEvent& event); - void OnCancel(wxCommandEvent& event); - - // Responds to colour changes - void OnSysColourChanged(wxSysColourChangedEvent& event); - -// Implementation - virtual void ChangeFont(bool keepOriginalSize = TRUE); - virtual void ChangeBackgroundColour(); - virtual void ChangeForegroundColour(); - inline WXWidget GetTopWidget() const { return m_mainWidget; } - inline WXWidget GetClientWidget() const { return m_mainWidget; } - - -public: - //// Motif-specific - bool m_modalShowing; - wxString m_dialogTitle; - -DECLARE_EVENT_TABLE() -}; - -#endif - // _WX_DIALOG_H_ diff --git a/include/wx/motif/dirdlg.h b/include/wx/motif/dirdlg.h deleted file mode 100644 index b27cb74466..0000000000 --- a/include/wx/motif/dirdlg.h +++ /dev/null @@ -1,49 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dirdlg.h -// Purpose: wxDirDialog class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_DIRDLG_H_ -#define _WX_DIRDLG_H_ - -#ifdef __GNUG__ -#pragma interface "dirdlg.h" -#endif - -#include "wx/dialog.h" - -WXDLLEXPORT_DATA(extern const char*) wxFileSelectorPromptStr; - -class WXDLLEXPORT wxDirDialog: public wxDialog -{ -DECLARE_DYNAMIC_CLASS(wxDirDialog) -public: - wxDirDialog(wxWindow *parent, const wxString& message = wxFileSelectorPromptStr, - const wxString& defaultPath = "", - long style = 0, const wxPoint& pos = wxDefaultPosition); - - inline void SetMessage(const wxString& message) { m_message = message; } - inline void SetPath(const wxString& path) { m_path = path; } - inline void SetStyle(long style) { m_dialogStyle = style; } - - inline wxString GetMessage() const { return m_message; } - inline wxString GetPath() const { return m_path; } - inline long GetStyle() const { return m_dialogStyle; } - - int ShowModal(); - -protected: - wxString m_message; - long m_dialogStyle; - wxWindow * m_parent; - wxString m_path; -}; - -#endif - // _WX_DIRDLG_H_ diff --git a/include/wx/motif/dnd.h b/include/wx/motif/dnd.h deleted file mode 100644 index fab08d7476..0000000000 --- a/include/wx/motif/dnd.h +++ /dev/null @@ -1,178 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: dnd.h -// Purpose: declaration of wxDropTarget, wxDropSource classes -// Author: Julian Smart -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin, Robert Roebling, Julian Smart -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - - -#ifndef _WX_DND_H_ -#define _WX_DND_H_ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" - -#if wxUSE_DRAG_AND_DROP - -#include "wx/object.h" -#include "wx/string.h" -#include "wx/dataobj.h" -#include "wx/cursor.h" - -//------------------------------------------------------------------------- -// classes -//------------------------------------------------------------------------- - -class WXDLLEXPORT wxWindow; - -class WXDLLEXPORT wxDropTarget; -class WXDLLEXPORT wxTextDropTarget; -class WXDLLEXPORT wxFileDropTarget; -class WXDLLEXPORT wxPrivateDropTarget; - -class WXDLLEXPORT wxDropSource; - -//------------------------------------------------------------------------- -// wxDropTarget -//------------------------------------------------------------------------- - -class WXDLLEXPORT wxDropTarget: public wxObject -{ - public: - - wxDropTarget(); - ~wxDropTarget(); - - virtual void OnEnter() { } - virtual void OnLeave() { } - virtual bool OnDrop( long x, long y, const void *data, size_t size ) = 0; - - // Override these to indicate what kind of data you support: - - virtual size_t GetFormatCount() const = 0; - virtual wxDataFormat GetFormat(size_t n) const = 0; - - // implementation -}; - -//------------------------------------------------------------------------- -// wxTextDropTarget -//------------------------------------------------------------------------- - -class WXDLLEXPORT wxTextDropTarget: public wxDropTarget -{ - public: - - wxTextDropTarget() {}; - virtual bool OnDrop( long x, long y, const void *data, size_t size ); - virtual bool OnDropText( long x, long y, const char *psz ); - - protected: - - virtual size_t GetFormatCount() const; - virtual wxDataFormat GetFormat(size_t n) const; -}; - -//------------------------------------------------------------------------- -// wxPrivateDropTarget -//------------------------------------------------------------------------- - -class WXDLLEXPORT wxPrivateDropTarget: public wxDropTarget -{ -public: - - wxPrivateDropTarget(); - - // you have to override OnDrop to get at the data - - // the string ID identifies the format of clipboard or DnD data. a word - // processor would e.g. add a wxTextDataObject and a wxPrivateDataObject - // to the clipboard - the latter with the Id "WXWORD_FORMAT". - - void SetId( const wxString& id ) - { m_id = id; } - - wxString GetId() - { return m_id; } - -private: - - virtual size_t GetFormatCount() const; - virtual wxDataFormat GetFormat(size_t n) const; - - wxString m_id; -}; - -// ---------------------------------------------------------------------------- -// A drop target which accepts files (dragged from File Manager or Explorer) -// ---------------------------------------------------------------------------- - -class WXDLLEXPORT wxFileDropTarget: public wxDropTarget -{ - public: - - wxFileDropTarget() {}; - - virtual bool OnDrop( long x, long y, const void *data, size_t size ); - virtual bool OnDropFiles( long x, long y, - size_t nFiles, const char * const aszFiles[] ); - - protected: - - virtual size_t GetFormatCount() const; - virtual wxDataFormat GetFormat(size_t n) const; -}; - -//------------------------------------------------------------------------- -// wxDropSource -//------------------------------------------------------------------------- - -enum wxDragResult -{ - wxDragError, // error prevented the d&d operation from completing - wxDragNone, // drag target didn't accept the data - wxDragCopy, // the data was successfully copied - wxDragMove, // the data was successfully moved - wxDragCancel // the operation was cancelled by user (not an error) -}; - -class WXDLLEXPORT wxDropSource: public wxObject -{ - public: - - wxDropSource( wxWindow *win ); - wxDropSource( wxDataObject &data, wxWindow *win ); - - ~wxDropSource(void); - - void SetData( wxDataObject &data ); - wxDragResult DoDragDrop( bool bAllowMove = FALSE ); - - virtual bool GiveFeedback( wxDragResult WXUNUSED(effect), bool WXUNUSED(bScrolling) ) { return TRUE; }; - - // implementation -#if 0 - void RegisterWindow(void); - void UnregisterWindow(void); - - wxWindow *m_window; - wxDragResult m_retValue; - wxDataObject *m_data; - - wxCursor m_defaultCursor; - wxCursor m_goaheadCursor; -#endif -}; - -#endif - - // wxUSE_DRAG_AND_DROP - -#endif - //_WX_DND_H_ - diff --git a/include/wx/motif/filedlg.h b/include/wx/motif/filedlg.h deleted file mode 100644 index 29cd0fb8f7..0000000000 --- a/include/wx/motif/filedlg.h +++ /dev/null @@ -1,95 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: filedlg.h -// Purpose: wxFileDialog class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_FILEDLG_H_ -#define _WX_FILEDLG_H_ - -#ifdef __GNUG__ -#pragma interface "filedlg.h" -#endif - -#include "wx/dialog.h" - -/* - * File selector - */ - -WXDLLEXPORT_DATA(extern const char*) wxFileSelectorPromptStr; -WXDLLEXPORT_DATA(extern const char*) wxFileSelectorDefaultWildcardStr; - -class WXDLLEXPORT wxFileDialog: public wxDialog -{ -DECLARE_DYNAMIC_CLASS(wxFileDialog) -public: - wxString m_message; - long m_dialogStyle; - wxWindow * m_parent; - wxString m_dir; - wxString m_path; // Full path - wxString m_fileName; - wxString m_wildCard; - int m_filterIndex; - - // For Motif - wxPoint m_pos; - static wxString m_fileSelectorAnswer; - static bool m_fileSelectorReturned; - -public: - wxFileDialog(wxWindow *parent, const wxString& message = wxFileSelectorPromptStr, - const wxString& defaultDir = "", const wxString& defaultFile = "", const wxString& wildCard = wxFileSelectorDefaultWildcardStr, - long style = 0, const wxPoint& pos = wxDefaultPosition); - - inline void SetMessage(const wxString& message) { m_message = message; } - inline void SetPath(const wxString& path) { m_path = path; } - inline void SetDirectory(const wxString& dir) { m_dir = dir; } - inline void SetFilename(const wxString& name) { m_fileName = name; } - inline void SetWildcard(const wxString& wildCard) { m_wildCard = wildCard; } - inline void SetStyle(long style) { m_dialogStyle = style; } - inline void SetFilterIndex(int filterIndex) { m_filterIndex = filterIndex; } - - inline wxString GetMessage() const { return m_message; } - inline wxString GetPath() const { return m_path; } - inline wxString GetDirectory() const { return m_dir; } - inline wxString GetFilename() const { return m_fileName; } - inline wxString GetWildcard() const { return m_wildCard; } - inline long GetStyle() const { return m_dialogStyle; } - inline int GetFilterIndex() const { return m_filterIndex ; } - - int ShowModal(); -}; - -#define wxOPEN 0x0001 -#define wxSAVE 0x0002 -#define wxOVERWRITE_PROMPT 0x0004 -#define wxHIDE_READONLY 0x0008 -#define wxFILE_MUST_EXIST 0x0010 - -// File selector - backward compatibility -WXDLLEXPORT wxString wxFileSelector(const char *message = wxFileSelectorPromptStr, const char *default_path = NULL, - const char *default_filename = NULL, const char *default_extension = NULL, - const char *wildcard = wxFileSelectorDefaultWildcardStr, int flags = 0, - wxWindow *parent = NULL, int x = -1, int y = -1); - -// An extended version of wxFileSelector -WXDLLEXPORT wxString wxFileSelectorEx(const char *message = wxFileSelectorPromptStr, const char *default_path = NULL, - const char *default_filename = NULL, int *indexDefaultExtension = NULL, - const char *wildcard = wxFileSelectorDefaultWildcardStr, int flags = 0, - wxWindow *parent = NULL, int x = -1, int y = -1); - -// Generic file load dialog -WXDLLEXPORT wxString wxLoadFileSelector(const char *what, const char *extension, const char *default_name = NULL, wxWindow *parent = NULL); - -// Generic file save dialog -WXDLLEXPORT wxString wxSaveFileSelector(const char *what, const char *extension, const char *default_name = NULL, wxWindow *parent = NULL); - -#endif - // _WX_FILEDLG_H_ diff --git a/include/wx/motif/font.h b/include/wx/motif/font.h deleted file mode 100644 index 1aa0d4ee0c..0000000000 --- a/include/wx/motif/font.h +++ /dev/null @@ -1,133 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: font.h -// Purpose: wxFont class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_FONT_H_ -#define _WX_FONT_H_ - -#ifdef __GNUG__ -#pragma interface "font.h" -#endif - -#include "wx/gdiobj.h" -#include "wx/list.h" - -class WXDLLEXPORT wxFont; - -// For every wxFont, there must be a font for each display and scale requested. -// So these objects are stored in wxFontRefData::m_fonts -class WXDLLEXPORT wxXFont: public wxObject -{ -public: - wxXFont(); - ~wxXFont(); - - WXFontStructPtr m_fontStruct; // XFontStruct - WXFontList m_fontList; // Motif XmFontList - WXDisplay* m_display; // XDisplay - int m_scale; // Scale * 100 -}; - -class WXDLLEXPORT wxFontRefData: public wxGDIRefData -{ - friend class WXDLLEXPORT wxFont; -public: - wxFontRefData(); - wxFontRefData(const wxFontRefData& data); - ~wxFontRefData(); -protected: - int m_pointSize; - int m_family; - int m_style; - int m_weight; - bool m_underlined; - wxString m_faceName; - - // A list of wxXFonts - wxList m_fonts; -}; - -#define M_FONTDATA ((wxFontRefData *)m_refData) - -WXDLLEXPORT_DATA(extern const char*) wxEmptyString; - -// Font -class WXDLLEXPORT wxFont: public wxGDIObject -{ - DECLARE_DYNAMIC_CLASS(wxFont) -public: - wxFont(); - wxFont(int pointSize, int family, int style, int weight, bool underlined = FALSE, const wxString& faceName = wxEmptyString); - inline wxFont(const wxFont& font) { Ref(font); } - - ~wxFont(); - - bool Create(int pointSize, int family, int style, int weight, bool underlined = FALSE, const wxString& faceName = wxEmptyString); - - virtual bool Ok() const { return (m_refData != NULL) ; } - - inline int GetPointSize() const { return M_FONTDATA->m_pointSize; } - inline int GetFamily() const { return M_FONTDATA->m_family; } - inline int GetStyle() const { return M_FONTDATA->m_style; } - inline int GetWeight() const { return M_FONTDATA->m_weight; } - wxString GetFamilyString() const ; - wxString GetFaceName() const ; - wxString GetStyleString() const ; - wxString GetWeightString() const ; - inline bool GetUnderlined() const { return M_FONTDATA->m_underlined; } - - void SetPointSize(int pointSize); - void SetFamily(int family); - void SetStyle(int style); - void SetWeight(int weight); - void SetFaceName(const wxString& faceName); - void SetUnderlined(bool underlined); - - inline wxFont& operator = (const wxFont& font) { if (*this == font) return (*this); Ref(font); return *this; } - inline bool operator == (const wxFont& font) { return m_refData == font.m_refData; } - inline bool operator != (const wxFont& font) { return m_refData != font.m_refData; } - -// Implementation - - // Find an existing, or create a new, XFontStruct - // based on this wxFont and the given scale. Append the - // font to list in the private data for future reference. - - // TODO This is a fairly basic implementation, that doesn't - // allow for different facenames, and also doesn't do a mapping - // between 'standard' facenames (e.g. Arial, Helvetica, Times Roman etc.) - // and the fonts that are available on a particular system. - // Maybe we need to scan the user's machine to build up a profile - // of the fonts and a mapping file. - - // Return font struct, and optionally the Motif font list - wxXFont* GetInternalFont(double scale = 1.0, WXDisplay* display = NULL) const; - - // These two are helper functions for convenient access of the above. - inline WXFontStructPtr GetFontStruct(double scale = 1.0, WXDisplay* display = NULL) const - { - wxXFont* f = GetInternalFont(scale, display); - return (f ? f->m_fontStruct : (WXFontStructPtr) 0); - } - WXFontList GetFontList(double scale = 1.0, WXDisplay* display = NULL) const - { - wxXFont* f = GetInternalFont(scale, display); - return (f ? f->m_fontList : (WXFontList) 0); - } - - WXFontStructPtr LoadQueryFont(int pointSize, int family, int style, - int weight, bool underlined) const; -protected: - bool RealizeResource(); - void Unshare(); -}; - -#endif - // _WX_FONT_H_ diff --git a/include/wx/motif/fontdlg.h b/include/wx/motif/fontdlg.h deleted file mode 100644 index ca799d759a..0000000000 --- a/include/wx/motif/fontdlg.h +++ /dev/null @@ -1,46 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: fontdlg.h -// Purpose: wxFontDialog class. Use generic version if no -// platform-specific implementation. -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_FONTDLG_H_ -#define _WX_FONTDLG_H_ - -#ifdef __GNUG__ -#pragma interface "fontdlg.h" -#endif - -#include "wx/dialog.h" -#include "wx/cmndata.h" - -/* - * Font dialog - */ - -class WXDLLEXPORT wxFontDialog: public wxDialog -{ -DECLARE_DYNAMIC_CLASS(wxFontDialog) -public: - wxFontDialog(); - wxFontDialog(wxWindow *parent, wxFontData *data = NULL); - - bool Create(wxWindow *parent, wxFontData *data = NULL); - - int ShowModal(); - wxFontData& GetFontData() { return m_fontData; } - -protected: - wxWindow* m_dialogParent; - wxFontData m_fontData; -}; - -#endif - // _WX_FONTDLG_H_ - diff --git a/include/wx/motif/frame.h b/include/wx/motif/frame.h deleted file mode 100644 index 25afb91bd8..0000000000 --- a/include/wx/motif/frame.h +++ /dev/null @@ -1,213 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: frame.h -// Purpose: wxFrame class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_FRAME_H_ -#define _WX_FRAME_H_ - -#ifdef __GNUG__ -#pragma interface "frame.h" -#endif - -#include "wx/window.h" -#include "wx/toolbar.h" -#include "wx/accel.h" - -WXDLLEXPORT_DATA(extern const char*) wxFrameNameStr; -WXDLLEXPORT_DATA(extern const char*) wxToolBarNameStr; - -class WXDLLEXPORT wxMenuBar; -class WXDLLEXPORT wxStatusBar; - -class WXDLLEXPORT wxFrame: public wxWindow { - - DECLARE_DYNAMIC_CLASS(wxFrame) - -public: - wxFrame(); - inline wxFrame(wxWindow *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE, - const wxString& name = wxFrameNameStr) - { - Create(parent, id, title, pos, size, style, name); - } - - ~wxFrame(); - - bool Create(wxWindow *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE, - const wxString& name = wxFrameNameStr); - - virtual bool Destroy(); - - void SetClientSize(int width, int height); - void SetClientSize(const wxSize& size) { wxWindow::SetClientSize(size); } - - void GetClientSize(int *width, int *height) const; - wxSize GetClientSize() const { return wxWindow::GetClientSize(); } - - void GetSize(int *width, int *height) const ; - wxSize GetSize() const { return wxWindow::GetSize(); } - - void GetPosition(int *x, int *y) const ; - wxPoint GetPosition() const { return wxWindow::GetPosition(); } - - void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - virtual void SetSize(const wxRect& rect, int sizeFlags = wxSIZE_AUTO) - { wxWindow::SetSize(rect, sizeFlags); } - virtual void SetSize(const wxSize& size) { wxWindow::SetSize(size); } - virtual void SetSize(int width, int height) { SetSize(-1, -1, width, height, wxSIZE_USE_EXISTING); } - - void ClientToScreen(int *x, int *y) const; - wxPoint ClientToScreen(const wxPoint& pt) const { return wxWindow::ClientToScreen(pt); } - - void ScreenToClient(int *x, int *y) const; - wxPoint ScreenToClient(const wxPoint& pt) const { return wxWindow::ScreenToClient(pt); } - - virtual bool OnClose(); - - void OnSize(wxSizeEvent& event); - void OnMenuHighlight(wxMenuEvent& event); - void OnActivate(wxActivateEvent& event); - void OnIdle(wxIdleEvent& event); - void OnCloseWindow(wxCloseEvent& event); - - bool Show(bool show); - - // Set menu bar - void SetMenuBar(wxMenuBar *menu_bar); - virtual wxMenuBar *GetMenuBar() const ; - - // Set title - void SetTitle(const wxString& title); - inline wxString GetTitle() const { return m_title; } - - void Centre(int direction = wxBOTH); - - // Call this to simulate a menu command - virtual void Command(int id); - virtual void ProcessCommand(int id); - - // Set icon - virtual void SetIcon(const wxIcon& icon); - - // Create status line - virtual wxStatusBar* CreateStatusBar(int number=1, long style = wxST_SIZEGRIP, wxWindowID id = 0, - const wxString& name = "statusBar"); - inline wxStatusBar *GetStatusBar() const { return m_frameStatusBar; } - virtual void PositionStatusBar(); - virtual wxStatusBar *OnCreateStatusBar(int number, long style, wxWindowID id, - const wxString& name); - - // Create toolbar -#if wxUSE_TOOLBAR - virtual wxToolBar* CreateToolBar(long style = wxNO_BORDER|wxTB_HORIZONTAL, wxWindowID id = -1, const wxString& name = wxToolBarNameStr); - virtual wxToolBar *OnCreateToolBar(long style, wxWindowID id, const wxString& name); - // If made known to the frame, the frame will manage it automatically. - virtual void SetToolBar(wxToolBar *toolbar) ; - virtual wxToolBar *GetToolBar() const ; - virtual void PositionToolBar(); -#endif // wxUSE_TOOLBAR - - // Set status line text - virtual void SetStatusText(const wxString& text, int number = 0); - - // Set status line widths - virtual void SetStatusWidths(int n, const int widths_field[]); - - // Hint to tell framework which status bar to use - // TODO: should this go into a wxFrameworkSettings class perhaps? - static void UseNativeStatusBar(bool useNative) { m_useNativeStatusBar = useNative; }; - static bool UsesNativeStatusBar() { return m_useNativeStatusBar; }; - - // Fit frame around subwindows - virtual void Fit(); - - // Iconize - virtual void Iconize(bool iconize); - - virtual bool IsIconized() const ; - - // Compatibility - inline bool Iconized() const { return IsIconized(); } - - // Is the frame maximized? Returns FALSE under Motif (but TRUE for - // wxMDIChildFrame due to the tabbed implementation). - virtual bool IsMaximized(void) const ; - - virtual void Maximize(bool maximize); - - // Responds to colour changes - void OnSysColourChanged(wxSysColourChangedEvent& event); - - // Query app for menu item updates (called from OnIdle) - void DoMenuUpdates(); - void DoMenuUpdates(wxMenu* menu); - - // Checks if there is a toolbar, and returns the first free client position - virtual wxPoint GetClientAreaOrigin() const; - - virtual void Raise(); - virtual void Lower(); - - virtual void CaptureMouse(); - virtual void ReleaseMouse(); - -// Implementation - virtual void ChangeFont(bool keepOriginalSize = TRUE); - virtual void ChangeBackgroundColour(); - virtual void ChangeForegroundColour(); - WXWidget GetMenuBarWidget() const ; - inline WXWidget GetShellWidget() const { return m_frameShell; } - inline WXWidget GetWorkAreaWidget() const { return m_workArea; } - inline WXWidget GetClientAreaWidget() const { return m_clientArea; } - inline WXWidget GetTopWidget() const { return m_frameShell; } - inline WXWidget GetMainWindowWidget() const { return m_frameWidget; } - - // The widget that can have children on it - WXWidget GetClientWidget() const; - bool GetVisibleStatus() const { return m_visibleStatus; } - - bool PreResize(); - -protected: - wxMenuBar * m_frameMenuBar; - wxStatusBar * m_frameStatusBar; - wxIcon m_icon; - bool m_iconized; - static bool m_useNativeStatusBar; - -#if wxUSE_TOOLBAR - wxToolBar * m_frameToolBar ; -#endif // wxUSE_TOOLBAR - - //// Motif-specific - - WXWidget m_frameShell; - WXWidget m_frameWidget; - WXWidget m_workArea; - WXWidget m_clientArea; -// WXWidget m_menuBarWidget; - bool m_visibleStatus; - wxString m_title; - - DECLARE_EVENT_TABLE() -}; - -#endif - // _WX_FRAME_H_ diff --git a/include/wx/motif/gauge.h b/include/wx/motif/gauge.h deleted file mode 100644 index 81413b0488..0000000000 --- a/include/wx/motif/gauge.h +++ /dev/null @@ -1,78 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: gauge.h -// Purpose: wxGauge class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_GAUGE_H_ -#define _WX_GAUGE_H_ - -#ifdef __GNUG__ -#pragma interface "gauge.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxGaugeNameStr; - -// Group box -class WXDLLEXPORT wxGauge: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxGauge) - public: - inline wxGauge() { m_rangeMax = 0; m_gaugePos = 0; } - - inline wxGauge(wxWindow *parent, wxWindowID id, - int range, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxGA_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxGaugeNameStr) - { - Create(parent, id, range, pos, size, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - int range, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxGA_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxGaugeNameStr); - - void SetShadowWidth(int w); - void SetBezelFace(int w); - void SetRange(int r); - void SetValue(int pos); - - int GetShadowWidth() const ; - int GetBezelFace() const ; - int GetRange() const ; - int GetValue() const ; - - void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - virtual void SetSize(const wxRect& rect, int sizeFlags = wxSIZE_AUTO) - { wxWindow::SetSize(rect, sizeFlags); } - virtual void SetSize(const wxSize& size) { wxWindow::SetSize(size); } - virtual void SetSize(int width, int height) { SetSize(-1, -1, width, height, wxSIZE_USE_EXISTING); } - - virtual void Command(wxCommandEvent& WXUNUSED(event)) {} ; - -// Implementation - virtual void ChangeFont(bool keepOriginalSize = TRUE); - virtual void ChangeBackgroundColour(); - virtual void ChangeForegroundColour(); - - protected: - int m_rangeMax; - int m_gaugePos; -}; - -#endif - // _WX_GAUGE_H_ diff --git a/include/wx/motif/gdiobj.h b/include/wx/motif/gdiobj.h deleted file mode 100644 index c25575dffc..0000000000 --- a/include/wx/motif/gdiobj.h +++ /dev/null @@ -1,48 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: gdiobj.h -// Purpose: wxGDIObject class: base class for other GDI classes -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_GDIOBJ_H_ -#define _WX_GDIOBJ_H_ - -#include "wx/object.h" - -#ifdef __GNUG__ -#pragma interface "gdiobj.h" -#endif - -class WXDLLEXPORT wxGDIRefData: public wxObjectRefData { -public: - inline wxGDIRefData() - { - } -}; - -#define M_GDIDATA ((wxGDIRefData *)m_refData) - -class WXDLLEXPORT wxGDIObject: public wxObject -{ -DECLARE_DYNAMIC_CLASS(wxGDIObject) - public: - inline wxGDIObject() { m_visible = FALSE; }; - inline ~wxGDIObject() {}; - - inline bool IsNull() const { return (m_refData == 0); } - - virtual bool GetVisible() { return m_visible; } - virtual void SetVisible(bool v) { m_visible = v; } - -protected: - bool m_visible; // Can a pointer to this object be safely taken? - // - only if created within FindOrCreate... -}; - -#endif - // _WX_GDIOBJ_H_ diff --git a/include/wx/motif/helpxxxx.h b/include/wx/motif/helpxxxx.h deleted file mode 100644 index fc991a93b3..0000000000 --- a/include/wx/motif/helpxxxx.h +++ /dev/null @@ -1,52 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: helpxxxx.h -// Purpose: Help system: native implementation for your system. Replace -// XXXX with suitable name. -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_HELPXXXX_H_ -#define _WX_HELPXXXX_H_ - -#ifdef __GNUG__ -#pragma interface "helpxxxx.h" -#endif - -#include "wx/wx.h" - -#include "wx/helpbase.h" - -class WXDLLEXPORT wxXXXXHelpController: public wxHelpControllerBase -{ - DECLARE_CLASS(wxXXXXHelpController) - - public: - wxXXXXHelpController(); - ~wxXXXXHelpController(); - - // Must call this to set the filename and server name - virtual bool Initialize(const wxString& file); - - // If file is "", reloads file given in Initialize - virtual bool LoadFile(const wxString& file = ""); - virtual bool DisplayContents(); - virtual bool DisplaySection(int sectionNo); - virtual bool DisplayBlock(long blockNo); - virtual bool KeywordSearch(const wxString& k); - - virtual bool Quit(); - virtual void OnQuit(); - - inline wxString GetHelpFile() const { return m_helpFile; } - -protected: - wxString m_helpFile; -}; - -#endif - // _WX_HELPXXXX_H_ diff --git a/include/wx/motif/icon.h b/include/wx/motif/icon.h deleted file mode 100644 index 4231ec7e05..0000000000 --- a/include/wx/motif/icon.h +++ /dev/null @@ -1,70 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: icon.h -// Purpose: wxIcon class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_ICON_H_ -#define _WX_ICON_H_ - -#ifdef __GNUG__ -#pragma interface "icon.h" -#endif - -#include "wx/bitmap.h" - -/* -// Same as for wxBitmap -class WXDLLEXPORT wxIconRefData: public wxBitmapRefData -{ - friend class WXDLLEXPORT wxBitmap; - friend class WXDLLEXPORT wxIcon; -public: - wxIconRefData(); - ~wxIconRefData(); -}; -*/ - -#define M_ICONDATA ((wxBitmapRefData *)m_refData) -#define M_ICONHANDLERDATA ((wxBitmapRefData *)bitmap->GetRefData()) - -// Icon -class WXDLLEXPORT wxIcon: public wxBitmap -{ - DECLARE_DYNAMIC_CLASS(wxIcon) - -public: - wxIcon(); - - // Copy constructors - inline wxIcon(const wxIcon& icon) { Ref(icon); } - - // Initialize with XBM data - wxIcon(const char bits[], int width, int height); - - // Initialize with XPM data - wxIcon(char **data); - - wxIcon(const wxString& name, long flags = wxBITMAP_TYPE_ICO_RESOURCE, - int desiredWidth = -1, int desiredHeight = -1); - ~wxIcon(); - - bool LoadFile(const wxString& name, long flags = wxBITMAP_TYPE_ICO_RESOURCE, - int desiredWidth = -1, int desiredHeight = -1); - bool LoadFile(const wxString& name, long type = wxBITMAP_TYPE_XBM) - { return wxBitmap::LoadFile(name, type); } - - inline wxIcon& operator = (const wxIcon& icon) { if (*this == icon) return (*this); Ref(icon); return *this; } - inline bool operator == (const wxIcon& icon) { return m_refData == icon.m_refData; } - inline bool operator != (const wxIcon& icon) { return m_refData != icon.m_refData; } - - virtual bool Ok() const { return ((m_refData != NULL) && (M_ICONDATA->m_ok)); } -}; - -#endif - // _WX_ICON_H_ diff --git a/include/wx/motif/joystick.h b/include/wx/motif/joystick.h deleted file mode 100644 index cc544c4d93..0000000000 --- a/include/wx/motif/joystick.h +++ /dev/null @@ -1,93 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: joystick.h -// Purpose: wxJoystick class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_JOYSTICK_H_ -#define _WX_JOYSTICK_H_ - -#ifdef __GNUG__ -#pragma interface "joystick.h" -#endif - -#include "wx/event.h" - -class WXDLLEXPORT wxJoystick: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxJoystick) - public: - /* - * Public interface - */ - - wxJoystick(int joystick = wxJOYSTICK1) { m_joystick = joystick; }; - - // Attributes - //////////////////////////////////////////////////////////////////////////// - - wxPoint GetPosition() const; - int GetZPosition() const; - int GetButtonState() const; - int GetPOVPosition() const; - int GetPOVCTSPosition() const; - int GetRudderPosition() const; - int GetUPosition() const; - int GetVPosition() const; - int GetMovementThreshold() const; - void SetMovementThreshold(int threshold) ; - - // Capabilities - //////////////////////////////////////////////////////////////////////////// - - bool IsOk() const; // Checks that the joystick is functioning - int GetNumberJoysticks() const ; - int GetManufacturerId() const ; - int GetProductId() const ; - wxString GetProductName() const ; - int GetXMin() const; - int GetYMin() const; - int GetZMin() const; - int GetXMax() const; - int GetYMax() const; - int GetZMax() const; - int GetNumberButtons() const; - int GetNumberAxes() const; - int GetMaxButtons() const; - int GetMaxAxes() const; - int GetPollingMin() const; - int GetPollingMax() const; - int GetRudderMin() const; - int GetRudderMax() const; - int GetUMin() const; - int GetUMax() const; - int GetVMin() const; - int GetVMax() const; - - bool HasRudder() const; - bool HasZ() const; - bool HasU() const; - bool HasV() const; - bool HasPOV() const; - bool HasPOV4Dir() const; - bool HasPOVCTS() const; - - // Operations - //////////////////////////////////////////////////////////////////////////// - - // pollingFreq = 0 means that movement events are sent when above the threshold. - // If pollingFreq > 0, events are received every this many milliseconds. - bool SetCapture(wxWindow* win, int pollingFreq = 0); - bool ReleaseCapture(); - -protected: - int m_joystick; -}; - -#endif - // _WX_JOYSTICK_H_ diff --git a/include/wx/motif/listbox.h b/include/wx/motif/listbox.h deleted file mode 100644 index 5d3d61ca42..0000000000 --- a/include/wx/motif/listbox.h +++ /dev/null @@ -1,114 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: listbox.h -// Purpose: wxListBox class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_LISTBOX_H_ -#define _WX_LISTBOX_H_ - -#ifdef __GNUG__ -#pragma interface "listbox.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxListBoxNameStr; - -// forward decl for GetSelections() -class WXDLLEXPORT wxArrayInt; - -WXDLLEXPORT_DATA(extern const char*) wxEmptyString; - -// List box item -class WXDLLEXPORT wxListBox: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxListBox) - public: - - wxListBox(); - inline wxListBox(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = NULL, - long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxListBoxNameStr): - m_clientDataList(wxKEY_INTEGER) - { - Create(parent, id, pos, size, n, choices, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = NULL, - long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxListBoxNameStr); - - ~wxListBox(); - - virtual void Append(const wxString& item); - virtual void Append(const wxString& item, char *clientData); - virtual void Set(int n, const wxString* choices, char **clientData = NULL); - virtual int FindString(const wxString& s) const ; - virtual void Clear(); - virtual void SetSelection(int n, bool select = TRUE); - - virtual void Deselect(int n); - - // For single choice list item only - virtual int GetSelection() const ; - virtual void Delete(int n); - virtual char *GetClientData(int n) const ; - virtual void *GetClientData() { return wxWindow::GetClientData(); } - virtual void SetClientData(int n, char *clientData); - virtual void SetClientData( void *data ) { wxWindow::SetClientData(data); } - virtual void SetString(int n, const wxString& s); - - // For single or multiple choice list item - virtual int GetSelections(wxArrayInt& aSelections) const; - virtual bool Selected(int n) const ; - virtual wxString GetString(int n) const ; - - virtual void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - virtual void SetSize(const wxRect& rect, int sizeFlags = wxSIZE_AUTO) - { wxWindow::SetSize(rect, sizeFlags); } - virtual void SetSize(const wxSize& size) { wxWindow::SetSize(size); } - virtual void SetSize(int width, int height) { SetSize(-1, -1, width, height, wxSIZE_USE_EXISTING); } - - // Set the specified item at the first visible item - // or scroll to max range. - virtual void SetFirstItem(int n) ; - virtual void SetFirstItem(const wxString& s) ; - - virtual void InsertItems(int nItems, const wxString items[], int pos); - - virtual wxString GetStringSelection() const ; - virtual bool SetStringSelection(const wxString& s, bool flag = TRUE); - virtual int Number() const ; - - void Command(wxCommandEvent& event); - -// Implementation - virtual void ChangeFont(bool keepOriginalSize = TRUE); - virtual void ChangeBackgroundColour(); - virtual void ChangeForegroundColour(); - WXWidget GetTopWidget() const; - -protected: - int m_noItems; - int m_selected; - - // List mapping positions->client data - wxList m_clientDataList; -}; - -#endif - // _WX_LISTBOX_H_ diff --git a/include/wx/motif/mdi.h b/include/wx/motif/mdi.h deleted file mode 100644 index a45aa1e434..0000000000 --- a/include/wx/motif/mdi.h +++ /dev/null @@ -1,259 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: mdi.h -// Purpose: MDI (Multiple Document Interface) classes. -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_MDI_H_ -#define _WX_MDI_H_ - -#ifdef __GNUG__ -#pragma interface "mdi.h" -#endif - -/* -New MDI scheme using tabs. We can use a wxNotebook to implement the client -window. wxMDIChildFrame can be implemented as an XmMainWindow widget -as before, and is a child of the notebook _and_ of the parent frame... -but wxMDIChildFrame::GetParent should return the parent frame. - -*/ - -#include "wx/frame.h" -#include "wx/notebook.h" - -WXDLLEXPORT_DATA(extern const char*) wxFrameNameStr; -WXDLLEXPORT_DATA(extern const char*) wxStatusLineNameStr; - -class WXDLLEXPORT wxMDIClientWindow; -class WXDLLEXPORT wxMDIChildFrame; - -class WXDLLEXPORT wxMDIParentFrame: public wxFrame -{ -DECLARE_DYNAMIC_CLASS(wxMDIParentFrame) - - friend class WXDLLEXPORT wxMDIChildFrame; -public: - - wxMDIParentFrame(); - inline wxMDIParentFrame(wxWindow *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE | wxVSCROLL | wxHSCROLL, // Scrolling refers to client window - const wxString& name = wxFrameNameStr) - { - Create(parent, id, title, pos, size, style, name); - } - - ~wxMDIParentFrame(); - - bool Create(wxWindow *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE | wxVSCROLL | wxHSCROLL, - const wxString& name = wxFrameNameStr); - - void OnSize(wxSizeEvent& event); - void OnActivate(wxActivateEvent& event); - void OnSysColourChanged(wxSysColourChangedEvent& event); - - void SetMenuBar(wxMenuBar *menu_bar); - - // Gets the size available for subwindows after menu size, toolbar size - // and status bar size have been subtracted. If you want to manage your own - // toolbar(s), don't call SetToolBar. - void GetClientSize(int *width, int *height) const; - wxSize GetClientSize() const { return wxWindow::GetClientSize(); } - - // Get the active MDI child window - wxMDIChildFrame *GetActiveChild() const ; - - // Get the client window - inline wxMDIClientWindow *GetClientWindow() const { return m_clientWindow; }; - - // Create the client window class (don't Create the window, - // just return a new class) - virtual wxMDIClientWindow *OnCreateClient() ; - - // MDI operations - virtual void Cascade(); - virtual void Tile(); - virtual void ArrangeIcons(); - virtual void ActivateNext(); - virtual void ActivatePrevious(); - -// Implementation - - // Set the active child - inline void SetActiveChild(wxMDIChildFrame* child) { m_activeChild = child; } - - // Set the child's menubar into the parent frame - void SetChildMenuBar(wxMDIChildFrame* frame); - - inline wxMenuBar* GetActiveMenuBar() const { return m_activeMenuBar; } - - // Redirect events to active child first - virtual bool ProcessEvent(wxEvent& event); - - -protected: - - wxMDIClientWindow* m_clientWindow; - wxMDIChildFrame* m_activeChild; - wxMenuBar* m_activeMenuBar; - -DECLARE_EVENT_TABLE() -}; - -class WXDLLEXPORT wxMDIChildFrame: public wxFrame -{ -DECLARE_DYNAMIC_CLASS(wxMDIChildFrame) -public: - - wxMDIChildFrame(); - inline wxMDIChildFrame(wxMDIParentFrame *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE, - const wxString& name = wxFrameNameStr) - { - Create(parent, id, title, pos, size, style, name); - } - - ~wxMDIChildFrame(); - - bool Create(wxMDIParentFrame *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE, - const wxString& name = wxFrameNameStr); - - // Set menu bar - void SetMenuBar(wxMenuBar *menu_bar); - void SetTitle(const wxString& title); - - void SetClientSize(int width, int height); - void SetClientSize(const wxSize& size) { wxWindow::SetClientSize(size); } - - void GetClientSize(int *width, int *height) const; - wxSize GetClientSize() const { return wxWindow::GetClientSize(); } - - void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - virtual void SetSize(const wxRect& rect, int sizeFlags = wxSIZE_AUTO) - { wxWindow::SetSize(rect, sizeFlags); } - virtual void SetSize(const wxSize& size) { wxWindow::SetSize(size); } - virtual void SetSize(int width, int height) { SetSize(-1, -1, width, height, wxSIZE_USE_EXISTING); } - - void GetSize(int *width, int *height) const; - wxSize GetSize() const { return wxWindow::GetSize(); } - - void GetPosition(int *x, int *y) const ; - wxPoint GetPosition() const { return wxWindow::GetPosition(); } - - // Set icon - virtual void SetIcon(const wxIcon& icon); - - // Override wxFrame operations - void CaptureMouse(); - void ReleaseMouse(); - void Raise(); - void Lower(void); - void SetSizeHints(int minW = -1, int minH = -1, int maxW = -1, int maxH = -1, int incW = -1, int incH = -1); - - // MDI operations - virtual void Maximize(); - inline void Minimize() { Iconize(TRUE); }; - virtual void Iconize(bool iconize); - virtual void Restore(); - virtual void Activate(); - virtual bool IsIconized() const ; - - // Is the frame maximized? Returns TRUE for - // wxMDIChildFrame due to the tabbed implementation. - virtual bool IsMaximized(void) const ; - - bool Show(bool show); - - inline WXWidget GetMainWidget() const { return m_mainWidget; }; - inline WXWidget GetTopWidget() const { return m_mainWidget; }; - inline WXWidget GetClientWidget() const { return m_mainWidget; }; - -/* - virtual void OnRaise(); - virtual void OnLower(); -*/ - - inline void SetMDIParentFrame(wxMDIParentFrame* parentFrame) { m_mdiParentFrame = parentFrame; } - inline wxMDIParentFrame* GetMDIParentFrame() const { return m_mdiParentFrame; } - -protected: - wxMDIParentFrame* m_mdiParentFrame; -}; - -/* The client window is a child of the parent MDI frame, and itself - * contains the child MDI frames. - * However, you create the MDI children as children of the MDI parent: - * only in the implementation does the client window become the parent - * of the children. Phew! So the children are sort of 'adopted'... - */ - -class WXDLLEXPORT wxMDIClientWindow: public wxNotebook -{ - DECLARE_DYNAMIC_CLASS(wxMDIClientWindow) - public: - - wxMDIClientWindow() ; - inline wxMDIClientWindow(wxMDIParentFrame *parent, long style = 0) - { - CreateClient(parent, style); - } - - ~wxMDIClientWindow(); - - void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - void SetSize(const wxRect& rect, int sizeFlags = wxSIZE_AUTO) - { wxWindow::SetSize(rect, sizeFlags); } - void SetSize(const wxSize& size) { wxWindow::SetSize(size); } - virtual void SetSize(int width, int height) { SetSize(-1, -1, width, height, wxSIZE_USE_EXISTING); } - - void SetClientSize(int width, int height); - void SetClientSize(const wxSize& size) { wxWindow::SetClientSize(size); } - - void GetClientSize(int *width, int *height) const; - wxSize GetClientSize() const { return wxWindow::GetClientSize(); } - - void GetSize(int *width, int *height) const ; - wxSize GetSize() const { return wxWindow::GetSize(); } - - void GetPosition(int *x, int *y) const ; - wxPoint GetPosition() const { return wxWindow::GetPosition(); } - - // Note: this is virtual, to allow overridden behaviour. - virtual bool CreateClient(wxMDIParentFrame *parent, long style = wxVSCROLL | wxHSCROLL); - - // Explicitly call default scroll behaviour - void OnScroll(wxScrollEvent& event); - - // Implementation - void OnPageChanged(wxNotebookEvent& event); - -protected: - -DECLARE_EVENT_TABLE() -}; - -#endif - // _WX_MDI_H_ diff --git a/include/wx/motif/menu.h b/include/wx/motif/menu.h deleted file mode 100644 index d29ae23ac4..0000000000 --- a/include/wx/motif/menu.h +++ /dev/null @@ -1,235 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: menu.h -// Purpose: wxMenu, wxMenuBar classes -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_MENU_H_ -#define _WX_MENU_H_ - -#ifdef __GNUG__ -#pragma interface "menu.h" -#endif - -#include "wx/defs.h" -#include "wx/event.h" -#include "wx/font.h" -#include "wx/gdicmn.h" - -class WXDLLEXPORT wxMenuItem; -class WXDLLEXPORT wxMenuBar; -class WXDLLEXPORT wxMenu; - -WXDLLEXPORT_DATA(extern const char*) wxEmptyString; - -// ---------------------------------------------------------------------------- -// Menu -// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxMenu: public wxEvtHandler -{ - DECLARE_DYNAMIC_CLASS(wxMenu) - -public: - // ctor & dtor - wxMenu(const wxString& title = wxEmptyString, const wxFunction func = NULL); - ~wxMenu(); - - // construct menu - // append items to the menu - // separator line - void AppendSeparator(); - // normal item - void Append(int id, const wxString& Label, const wxString& helpString = wxEmptyString, - bool checkable = FALSE); - // a submenu - void Append(int id, const wxString& Label, wxMenu *SubMenu, - const wxString& helpString = wxEmptyString); - // the most generic form (create wxMenuItem first and use it's functions) - void Append(wxMenuItem *pItem); - // insert a break in the menu - void Break(); - // delete an item - void Delete(int id); - - // menu item control - void Enable(int id, bool Flag); - bool Enabled(int id) const; - inline bool IsEnabled(int id) const { return Enabled(id); }; - void Check(int id, bool Flag); - bool Checked(int id) const; - inline bool IsChecked(int id) const { return IsChecked(id); }; - - // Client data - inline void SetClientData(void* clientData) { m_clientData = clientData; } - inline void* GetClientData() const { return m_clientData; } - - // item properties - // title - void SetTitle(const wxString& label); - const wxString GetTitle() const; - // label - void SetLabel(int id, const wxString& label); - wxString GetLabel(int id) const; - // help string - virtual void SetHelpString(int id, const wxString& helpString); - virtual wxString GetHelpString(int id) const ; - - // find item - // Finds the item id matching the given string, -1 if not found. - virtual int FindItem(const wxString& itemString) const ; - // Find wxMenuItem by ID, and item's menu too if itemMenu is !NULL. - wxMenuItem *FindItemForId(int itemId, wxMenu **itemMenu = NULL) const; - - void ProcessCommand(wxCommandEvent& event); - inline void Callback(const wxFunction func) { m_callback = func; } - - virtual void SetParent(wxEvtHandler *parent) { m_parent = parent; } - inline void SetEventHandler(wxEvtHandler *handler) { m_eventHandler = handler; } - inline wxEvtHandler *GetEventHandler() { return m_eventHandler; } - - inline wxList& GetItems() const { return (wxList&) m_menuItems; } - - //// Motif-specific - inline WXWidget GetButtonWidget() const { return m_buttonWidget; } - inline void SetButtonWidget(WXWidget buttonWidget) { m_buttonWidget = buttonWidget; } - inline WXWidget GetMainWidget() const { return m_menuWidget; } - inline wxMenu* GetParent() const { return m_menuParent; } - inline int GetId() const { return m_menuId; } - inline void SetId(int id) { m_menuId = id; } - inline void SetMenuBar(wxMenuBar* menuBar) { m_menuBar = menuBar; } - inline wxMenuBar* GetMenuBar() const { return m_menuBar; } - - void CreatePopup (WXWidget logicalParent, int x, int y); - void DestroyPopup (void); - void ShowPopup (int x, int y); - void HidePopup (void); - - WXWidget CreateMenu(wxMenuBar *menuBar, WXWidget parent, wxMenu *topMenu, - const wxString& title = "", bool isPulldown = FALSE); - - // For popups, need to destroy, then recreate menu for a different (or - // possibly same) window, since the parent may change. - void DestroyMenu(bool full); - WXWidget FindMenuItem(int id, wxMenuItem **it = NULL) const; - - const wxColour& GetBackgroundColour() const { return m_backgroundColour; } - const wxColour& GetForegroundColour() const { return m_foregroundColour; } - const wxFont& GetFont() const { return m_font; } - - void SetBackgroundColour(const wxColour& colour); - void SetForegroundColour(const wxColour& colour); - void SetFont(const wxFont& colour); - void ChangeFont(bool keepOriginalSize = FALSE); - -public: - wxFunction m_callback; - - int m_noItems; - wxString m_title; - wxMenuBar * m_menuBar; - wxList m_menuItems; - wxEvtHandler * m_parent; - wxEvtHandler * m_eventHandler; - void* m_clientData; - - //// Motif-specific - int m_numColumns; - WXWidget m_menuWidget; - WXWidget m_popupShell; // For holding the popup shell widget - WXWidget m_buttonWidget; // The actual string, so we can grey it etc. - int m_menuId; - wxMenu* m_topLevelMenu ; - wxMenu* m_menuParent; - bool m_ownedByMenuBar; - wxColour m_foregroundColour; - wxColour m_backgroundColour; - wxFont m_font; -}; - -// ---------------------------------------------------------------------------- -// Menu Bar (a la Windows) -// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxFrame; -class WXDLLEXPORT wxMenuBar: public wxEvtHandler -{ - DECLARE_DYNAMIC_CLASS(wxMenuBar) - - wxMenuBar(); - wxMenuBar(int n, wxMenu *menus[], const wxString titles[]); - ~wxMenuBar(); - - void Append(wxMenu *menu, const wxString& title); - // Must only be used AFTER menu has been attached to frame, - // otherwise use individual menus to enable/disable items - void Enable(int Id, bool Flag); - bool Enabled(int Id) const ; - inline bool IsEnabled(int Id) const { return Enabled(Id); }; - void EnableTop(int pos, bool Flag); - void Check(int id, bool Flag); - bool Checked(int id) const ; - inline bool IsChecked(int Id) const { return Checked(Id); }; - void SetLabel(int id, const wxString& label) ; - wxString GetLabel(int id) const ; - void SetLabelTop(int pos, const wxString& label) ; - wxString GetLabelTop(int pos) const ; - virtual void Delete(wxMenu *menu, int index = 0); /* Menu not destroyed */ - virtual bool OnAppend(wxMenu *menu, const char *title); - virtual bool OnDelete(wxMenu *menu, int index); - - virtual void SetHelpString(int Id, const wxString& helpString); - virtual wxString GetHelpString(int Id) const ; - - virtual int FindMenuItem(const wxString& menuString, const wxString& itemString) const ; - - // Find wxMenuItem for item ID, and return item's - // menu too if itemMenu is non-NULL. - wxMenuItem *FindItemForId(int itemId, wxMenu **menuForItem = NULL) const ; - - inline void SetEventHandler(wxEvtHandler *handler) { m_eventHandler = handler; } - inline wxEvtHandler *GetEventHandler() { return m_eventHandler; } - - inline int GetMenuCount() const { return m_menuCount; } - inline wxMenu* GetMenu(int i) const { return m_menus[i]; } - - //// Motif-specific - inline wxFrame* GetMenuBarFrame() const { return m_menuBarFrame; } - inline void SetMenuBarFrame(wxFrame* frame) { m_menuBarFrame = frame; } - inline WXWidget GetMainWidget() const { return m_mainWidget; } - inline void SetMainWidget(WXWidget widget) { m_mainWidget = widget; } - - // Create menubar - bool CreateMenuBar(wxFrame* frame); - - // Destroy menubar, but keep data structures intact so we can recreate it. - bool DestroyMenuBar(); - - const wxColour& GetBackgroundColour() const { return m_backgroundColour; } - const wxColour& GetForegroundColour() const { return m_foregroundColour; } - const wxFont& GetFont() const { return m_font; } - - void SetBackgroundColour(const wxColour& colour); - void SetForegroundColour(const wxColour& colour); - void SetFont(const wxFont& colour); - void ChangeFont(bool keepOriginalSize = FALSE); - - public: - wxEvtHandler * m_eventHandler; - int m_menuCount; - wxMenu ** m_menus; - wxString * m_titles; - wxFrame * m_menuBarFrame; - - //// Motif-specific - WXWidget m_mainWidget; - - wxColour m_foregroundColour; - wxColour m_backgroundColour; - wxFont m_font; -}; - -#endif // _WX_MENU_H_ diff --git a/include/wx/motif/menuitem.h b/include/wx/motif/menuitem.h deleted file mode 100644 index 8fc4a7418a..0000000000 --- a/include/wx/motif/menuitem.h +++ /dev/null @@ -1,115 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: menuitem.h -// Purpose: wxMenuItem class -// Author: Vadim Zeitlin -// Modified by: -// Created: 11.11.97 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows license -/////////////////////////////////////////////////////////////////////////////// - -#ifndef _MENUITEM_H -#define _MENUITEM_H - -#ifdef __GNUG__ -#pragma interface "menuitem.h" -#endif - -// ---------------------------------------------------------------------------- -// headers -// ---------------------------------------------------------------------------- - -#include "wx/setup.h" - -// an exception to the general rule that a normal header doesn't include other -// headers - only because ownerdrw.h is not always included and I don't want -// to write #ifdef's everywhere... -#if wxUSE_OWNER_DRAWN -#include "wx/ownerdrw.h" -#endif - -// ---------------------------------------------------------------------------- -// constants -// ---------------------------------------------------------------------------- - -// id for a separator line in the menu (invalid for normal item) -#define ID_SEPARATOR (-1) - -// ---------------------------------------------------------------------------- -// wxMenuItem: an item in the menu, optionally implements owner-drawn behaviour -// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxMenuItem: public wxObject -#if wxUSE_OWNER_DRAWN - , public wxOwnerDrawn -#endif -{ -DECLARE_DYNAMIC_CLASS(wxMenuItem) - -public: - // ctor & dtor - wxMenuItem(wxMenu *pParentMenu = NULL, int id = ID_SEPARATOR, - const wxString& strName = "", const wxString& wxHelp = "", - bool bCheckable = FALSE, wxMenu *pSubMenu = NULL); - virtual ~wxMenuItem(); - - // accessors (some more are inherited from wxOwnerDrawn or are below) - bool IsSeparator() const { return m_idItem == ID_SEPARATOR; } - bool IsEnabled() const { return m_bEnabled; } - bool IsChecked() const { return m_bChecked; } - - int GetId() const { return m_idItem; } - const wxString& GetHelp() const { return m_strHelp; } - wxMenu *GetSubMenu() const { return m_pSubMenu; } - - // operations - void SetName(const wxString& strName) { m_strName = strName; } - void SetHelp(const wxString& strHelp) { m_strHelp = strHelp; } - - void Enable(bool bDoEnable = TRUE); - void Check(bool bDoCheck = TRUE); - - void DeleteSubMenu(); - - //// Motif-specific - - // These two should probably exist for all ports - void SetLabel(const wxString& label); - wxString GetLabel() const { return m_strName; } - void CreateItem (WXWidget menu, wxMenuBar * menuBar, wxMenu * topMenu); - void DestroyItem(bool full); - - inline WXWidget GetButtonWidget() const { return m_buttonWidget; } - inline void SetChecked(bool check) { m_bChecked = check; } - inline wxMenuBar* GetMenuBar() const { return m_menuBar; } - inline void SetMenuBar(wxMenuBar* menuBar) { m_menuBar = menuBar; } - inline wxMenu* GetTopMenu() const { return m_topMenu; } - inline void SetTopMenu(wxMenu* menu) { m_topMenu = menu; } - -private: - int m_idItem; // numeric id of the item - wxString m_strHelp; // associated help string - wxMenu *m_pSubMenu, // may be NULL - *m_pParentMenu; // menu this item is contained in - bool m_bEnabled, // enabled or greyed? - m_bChecked; // checked? (only if checkable) - - //// Motif-specific - WXWidget m_buttonWidget; - wxMenuBar* m_menuBar; - wxMenu* m_topMenu; // Top-level menu e.g. popup-menu - -#if wxUSE_OWNER_DRAWN - // wxOwnerDrawn base class already has these variables - nothing to do - -#else //!owner drawn - bool m_bCheckable; // can be checked? - wxString m_strName; // name or label of the item - -public: - const wxString& GetName() const { return m_strName; } - bool IsCheckable() const { return m_bCheckable; } -#endif //owner drawn -}; - -#endif //_MENUITEM_H diff --git a/include/wx/motif/metafile.h b/include/wx/motif/metafile.h deleted file mode 100644 index 2a8843952c..0000000000 --- a/include/wx/motif/metafile.h +++ /dev/null @@ -1,101 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: metafile.h -// Purpose: wxMetaFile, wxMetaFileDC classes. -// This probably should be restricted to Windows platforms, -// but if there is an equivalent on your platform, great. -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef _WX_METAFIILE_H_ -#define _WX_METAFIILE_H_ - -#ifdef __GNUG__ -#pragma interface "metafile.h" -#endif - -#include "wx/setup.h" - -/* - * Metafile and metafile device context classes - work in Windows 3.1 only - * - */ - -class WXDLLEXPORT wxDC; -class WXDLLEXPORT wxMetaFile: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxMetaFile) - public: - wxMetaFile(const wxString& file = ""); - ~wxMetaFile(); - - // After this is called, the metafile cannot be used for anything - // since it is now owned by the clipboard. - virtual bool SetClipboard(int width = 0, int height = 0); - - virtual bool Play(wxDC *dc); - // TODO - inline bool Ok() { return FALSE; }; - -/* TODO: Implementation - inline WXHANDLE GetHMETAFILE() { return m_metaFile; } - inline void SetHMETAFILE(WXHANDLE mf) { m_metaFile = mf; } - -protected: - WXHANDLE m_metaFile; -*/ -}; - -class WXDLLEXPORT wxMetaFileDC: public wxDC -{ - DECLARE_DYNAMIC_CLASS(wxMetaFileDC) - - public: - // Don't supply origin and extent - // Supply them to wxMakeMetaFilePlaceable instead. - wxMetaFileDC(const wxString& file = ""); - - // Supply origin and extent (recommended). - // Then don't need to supply them to wxMakeMetaFilePlaceable. - wxMetaFileDC(const wxString& file, int xext, int yext, int xorg, int yorg); - - ~wxMetaFileDC(); - - // Should be called at end of drawing - virtual wxMetaFile *Close(); - virtual void SetMapMode(int mode); - virtual void GetTextExtent(const wxString& string, float *x, float *y, - float *descent = NULL, float *externalLeading = NULL, - wxFont *theFont = NULL, bool use16bit = FALSE); - - // Implementation - inline wxMetaFile *GetMetaFile() { return m_metaFile; } - inline void SetMetaFile(wxMetaFile *mf) { m_metaFile = mf; } - inline int GetWindowsMappingMode() { return m_windowsMappingMode; } - inline void SetWindowsMappingMode(int mm) { m_windowsMappingMode = mm; } - -protected: - int m_windowsMappingMode; - wxMetaFile *m_metaFile; -}; - -/* - * Pass filename of existing non-placeable metafile, and bounding box. - * Adds a placeable metafile header, sets the mapping mode to anisotropic, - * and sets the window origin and extent to mimic the MM_TEXT mapping mode. - * - */ - -// No origin or extent -bool WXDLLEXPORT wxMakeMetaFilePlaceable(const wxString& filename, float scale = 1.0); - -// Optional origin and extent -bool WXDLLEXPORT wxMakeMetaFilePlaceable(const wxString& filename, int x1, int y1, int x2, int y2, float scale = 1.0, bool useOriginAndExtent = TRUE); - -#endif - // _WX_METAFIILE_H_ diff --git a/include/wx/motif/minifram.h b/include/wx/motif/minifram.h deleted file mode 100644 index 07d9fff441..0000000000 --- a/include/wx/motif/minifram.h +++ /dev/null @@ -1,46 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: minifram.h -// Purpose: wxMiniFrame class. A small frame for e.g. floating toolbars. -// If there is no equivalent on your platform, just make it a -// normal frame. -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_MINIFRAM_H_ -#define _WX_MINIFRAM_H_ - -#ifdef __GNUG__ -#pragma interface "minifram.h" -#endif - -#include "wx/frame.h" - -class WXDLLEXPORT wxMiniFrame: public wxFrame { - - DECLARE_DYNAMIC_CLASS(wxMiniFrame) - -public: - inline wxMiniFrame() {} - inline wxMiniFrame(wxWindow *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE|wxTINY_CAPTION_HORIZ, - const wxString& name = wxFrameNameStr) - { - // Use wxFrame constructor in absence of more specific code. - Create(parent, id, title, pos, size, style, name); - } - - ~wxMiniFrame() {} -protected: -}; - -#endif - // _WX_MINIFRAM_H_ diff --git a/include/wx/motif/msgdlg.h b/include/wx/motif/msgdlg.h deleted file mode 100644 index 4e8b790290..0000000000 --- a/include/wx/motif/msgdlg.h +++ /dev/null @@ -1,50 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: msgdlg.h -// Purpose: wxMessageDialog class. Use generic version if no -// platform-specific implementation. -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_MSGBOXDLG_H_ -#define _WX_MSGBOXDLG_H_ - -#ifdef __GNUG__ -#pragma interface "msgdlg.h" -#endif - -#include "wx/setup.h" -#include "wx/dialog.h" - -/* - * Message box dialog - */ - -WXDLLEXPORT_DATA(extern const char*) wxMessageBoxCaptionStr; - -class WXDLLEXPORT wxMessageDialog: public wxDialog -{ -DECLARE_DYNAMIC_CLASS(wxMessageDialog) -protected: - wxString m_caption; - wxString m_message; - long m_dialogStyle; - wxWindow * m_parent; -public: - wxMessageDialog(wxWindow *parent, const wxString& message, const wxString& caption = wxMessageBoxCaptionStr, - long style = wxOK|wxCENTRE, const wxPoint& pos = wxDefaultPosition); - - int ShowModal(); -}; - - -int WXDLLEXPORT wxMessageBox(const wxString& message, const wxString& caption = wxMessageBoxCaptionStr, - long style = wxOK|wxCENTRE, - wxWindow *parent = NULL, int x = -1, int y = -1); - -#endif - // _WX_MSGBOXDLG_H_ diff --git a/include/wx/motif/palette.h b/include/wx/motif/palette.h deleted file mode 100644 index 18302f09df..0000000000 --- a/include/wx/motif/palette.h +++ /dev/null @@ -1,81 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: palette.h -// Purpose: wxPalette class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_PALETTE_H_ -#define _WX_PALETTE_H_ - -#ifdef __GNUG__ -#pragma interface "palette.h" -#endif - -#include "wx/gdiobj.h" -#include "wx/list.h" - -class WXDLLEXPORT wxPalette; - -// Palette for one display -class wxXPalette : public wxObject -{ -DECLARE_DYNAMIC_CLASS(wxXPalette) - -public: - wxXPalette(); - - WXDisplay* m_display; - int m_pix_array_n; - unsigned long* m_pix_array; - WXColormap m_cmap; - bool m_destroyable; -}; - -class WXDLLEXPORT wxPaletteRefData: public wxGDIRefData -{ - friend class WXDLLEXPORT wxPalette; -public: - wxPaletteRefData(); - ~wxPaletteRefData(); - -protected: - wxList m_palettes; -}; - -#define M_PALETTEDATA ((wxPaletteRefData *)m_refData) - -class WXDLLEXPORT wxPalette: public wxGDIObject -{ - DECLARE_DYNAMIC_CLASS(wxPalette) - -public: - wxPalette(); - inline wxPalette(const wxPalette& palette) { Ref(palette); } - - wxPalette(int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue); - ~wxPalette(); - bool Create(int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue); - int GetPixel(const unsigned char red, const unsigned char green, const unsigned char blue) const; - bool GetRGB(int pixel, unsigned char *red, unsigned char *green, unsigned char *blue) const; - - virtual bool Ok() const { return (m_refData != NULL) ; } - - inline wxPalette& operator = (const wxPalette& palette) { if (*this == palette) return (*this); Ref(palette); return *this; } - inline bool operator == (const wxPalette& palette) { return m_refData == palette.m_refData; } - inline bool operator != (const wxPalette& palette) { return m_refData != palette.m_refData; } - - // Motif-specific - WXColormap GetXColormap(WXDisplay* display = NULL) const; - bool TransferBitmap(void *data, int depth, int size); - bool TransferBitmap8(unsigned char *data, unsigned long size, void *dest, unsigned int bpp); - unsigned long *GetXPixArray(WXDisplay* display, int *pix_array_n); - void PutXColormap(WXDisplay* display, WXColormap cmap, bool destroyable); -}; - -#endif - // _WX_PALETTE_H_ diff --git a/include/wx/motif/pen.h b/include/wx/motif/pen.h deleted file mode 100644 index 4bc54d41b7..0000000000 --- a/include/wx/motif/pen.h +++ /dev/null @@ -1,100 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: pen.h -// Purpose: wxPen class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_PEN_H_ -#define _WX_PEN_H_ - -#ifdef __GNUG__ -#pragma interface "pen.h" -#endif - -#include "wx/gdiobj.h" -#include "wx/colour.h" -#include "wx/bitmap.h" - -typedef char wxDash ; - -class WXDLLEXPORT wxPen; - -class WXDLLEXPORT wxPenRefData: public wxGDIRefData -{ - friend class WXDLLEXPORT wxPen; -public: - wxPenRefData(); - wxPenRefData(const wxPenRefData& data); - ~wxPenRefData(); - -protected: - int m_width; - int m_style; - int m_join ; - int m_cap ; - wxBitmap m_stipple ; - int m_nbDash ; - wxDash * m_dash ; - wxColour m_colour; -}; - -#define M_PENDATA ((wxPenRefData *)m_refData) - -// Pen -class WXDLLEXPORT wxPen: public wxGDIObject -{ - DECLARE_DYNAMIC_CLASS(wxPen) -public: - wxPen(); - wxPen(const wxColour& col, int width, int style); - wxPen(const wxBitmap& stipple, int width); - inline wxPen(const wxPen& pen) { Ref(pen); } - ~wxPen(); - - inline wxPen& operator = (const wxPen& pen) { if (*this == pen) return (*this); Ref(pen); return *this; } - inline bool operator == (const wxPen& pen) { return m_refData == pen.m_refData; } - inline bool operator != (const wxPen& pen) { return m_refData != pen.m_refData; } - - virtual bool Ok() const { return (m_refData != NULL) ; } - - // Override in order to recreate the pen - void SetColour(const wxColour& col) ; - void SetColour(unsigned char r, unsigned char g, unsigned char b) ; - - void SetWidth(int width) ; - void SetStyle(int style) ; - void SetStipple(const wxBitmap& stipple) ; - void SetDashes(int nb_dashes, const wxDash *dash) ; - void SetJoin(int join) ; - void SetCap(int cap) ; - - inline wxColour& GetColour() const { return (M_PENDATA ? M_PENDATA->m_colour : wxNullColour); }; - inline int GetWidth() const { return (M_PENDATA ? M_PENDATA->m_width : 0); }; - inline int GetStyle() const { return (M_PENDATA ? M_PENDATA->m_style : 0); }; - inline int GetJoin() const { return (M_PENDATA ? M_PENDATA->m_join : 0); }; - inline int GetCap() const { return (M_PENDATA ? M_PENDATA->m_cap : 0); }; - inline int GetDashes(wxDash **ptr) const { - *ptr = (M_PENDATA ? M_PENDATA->m_dash : (wxDash*) NULL); return (M_PENDATA ? M_PENDATA->m_nbDash : 0); - } - inline int GetDashCount() const { return (M_PENDATA->m_nbDash); } - inline wxDash* GetDash() const { return (M_PENDATA->m_dash); } - - inline wxBitmap *GetStipple() const { return (M_PENDATA ? (& M_PENDATA->m_stipple) : (wxBitmap*) NULL); }; - -// Implementation - - // Useful helper: create the brush resource - bool RealizeResource(); - - // When setting properties, we must make sure we're not changing - // another object - void Unshare(); -}; - -#endif - // _WX_PEN_H_ diff --git a/include/wx/motif/print.h b/include/wx/motif/print.h deleted file mode 100644 index 3f4b4a6b7d..0000000000 --- a/include/wx/motif/print.h +++ /dev/null @@ -1,56 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: print.h -// Purpose: wxPrinter, wxPrintPreview classes -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_PRINT_H_ -#define _WX_PRINT_H_ - -#ifdef __GNUG__ -#pragma interface "print.h" -#endif - -#include "wx/prntbase.h" - -/* - * Represents the printer: manages printing a wxPrintout object - */ - -class WXDLLEXPORT wxPrinter: public wxPrinterBase -{ - DECLARE_DYNAMIC_CLASS(wxPrinter) - - public: - wxPrinter(wxPrintData *data = NULL); - ~wxPrinter(); - - virtual bool Print(wxWindow *parent, wxPrintout *printout, bool prompt = TRUE); - virtual bool PrintDialog(wxWindow *parent); - virtual bool Setup(wxWindow *parent); -}; - -/* - * wxPrintPreview - * Programmer creates an object of this class to preview a wxPrintout. - */ - -class WXDLLEXPORT wxPrintPreview: public wxPrintPreviewBase -{ - DECLARE_CLASS(wxPrintPreview) - - public: - wxPrintPreview(wxPrintout *printout, wxPrintout *printoutForPrinting = NULL, wxPrintData *data = NULL); - ~wxPrintPreview(); - - virtual bool Print(bool interactive); - virtual void DetermineScaling(); -}; - -#endif - // _WX_PRINT_H_ diff --git a/include/wx/motif/printdlg.h b/include/wx/motif/printdlg.h deleted file mode 100644 index 81d630d5b2..0000000000 --- a/include/wx/motif/printdlg.h +++ /dev/null @@ -1,70 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: printdlg.h -// Purpose: wxPrintDialog, wxPageSetupDialog classes. -// Use generic, PostScript version if no -// platform-specific implementation. -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_PRINTDLG_H_ -#define _WX_PRINTDLG_H_ - -#ifdef __GNUG__ -#pragma interface "printdlg.h" -#endif - -#include "wx/dialog.h" -#include "wx/cmndata.h" - -/* - * wxPrinterDialog - * The common dialog for printing. - */ - -class WXDLLEXPORT wxDC; -class WXDLLEXPORT wxPrintDialog: public wxDialog -{ - DECLARE_DYNAMIC_CLASS(wxPrintDialog) - - public: - wxPrintDialog(); - wxPrintDialog(wxWindow *parent, wxPrintData* data = NULL); - ~wxPrintDialog(); - - bool Create(wxWindow *parent, wxPrintData* data = NULL); - virtual int ShowModal(); - - inline wxPrintData& GetPrintData() { return m_printData; } - virtual wxDC *GetPrintDC(); - - private: - wxPrintData m_printData; - wxDC* m_printerDC; - wxWindow* m_dialogParent; -}; - -class WXDLLEXPORT wxPageSetupDialog: public wxDialog -{ - DECLARE_DYNAMIC_CLASS(wxPageSetupDialog) - - private: - wxPageSetupData m_pageSetupData; - wxWindow* m_dialogParent; - public: - wxPageSetupDialog(); - wxPageSetupDialog(wxWindow *parent, wxPageSetupData *data = NULL); - ~wxPageSetupDialog(); - - bool Create(wxWindow *parent, wxPageSetupData *data = NULL); - virtual int ShowModal(); - - inline wxPageSetupData& GetPageSetupData() { return m_pageSetupData; } -}; - -#endif - // _WX_PRINTDLG_H_ diff --git a/include/wx/motif/private.h b/include/wx/motif/private.h deleted file mode 100644 index 94d89bfbb7..0000000000 --- a/include/wx/motif/private.h +++ /dev/null @@ -1,57 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: private.h -// Purpose: Private declarations -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_PRIVATE_H_ -#define _WX_PRIVATE_H_ - -#include "wx/defs.h" - -class WXDLLEXPORT wxMouseEvent; -class WXDLLEXPORT wxKeyEvent; - -/* Put any private declarations here. - */ - -extern void wxWidgetResizeProc(Widget w, XConfigureEvent *event, String args[], int *num_args); - -extern wxHashTable *wxWidgetHashTable; -extern void wxDeleteWindowFromTable(Widget w); -extern wxWindow *wxGetWindowFromTable(Widget w); -extern bool wxAddWindowToTable(Widget w, wxWindow *win); -extern char wxFindMnemonic(const char* s); -extern char * wxFindAccelerator (char *s); -extern XmString wxFindAcceleratorText (char *s); -extern int wxCharCodeXToWX(KeySym keySym); -extern KeySym wxCharCodeWXToX(int id); -bool wxTranslateMouseEvent(wxMouseEvent& wxevent, wxWindow *win, Widget widget, XEvent *xevent); -bool wxTranslateKeyEvent(wxKeyEvent& wxevent, wxWindow *win, Widget widget, XEvent *xevent); -int wxGetBestMatchingPixel(Display *display, XColor *desiredColor, Colormap cmap); -Pixmap XCreateInsensitivePixmap( Display *display, Pixmap pixmap ); -extern XColor g_itemColors[]; -extern int wxComputeColours (Display *display, wxColour * back, wxColour * fore); - -extern void wxDoChangeForegroundColour(WXWidget widget, wxColour& foregroundColour); -extern void wxDoChangeBackgroundColour(WXWidget widget, wxColour& backgroundColour, bool changeArmColour = FALSE); - -#define wxNO_COLORS 0x00 -#define wxBACK_COLORS 0x01 -#define wxFORE_COLORS 0x02 - -extern XColor itemColors[5] ; - -#define wxBACK_INDEX 0 -#define wxFORE_INDEX 1 -#define wxSELE_INDEX 2 -#define wxTOPS_INDEX 3 -#define wxBOTS_INDEX 4 - -#endif - // _WX_PRIVATE_H_ diff --git a/include/wx/motif/radiobox.h b/include/wx/motif/radiobox.h deleted file mode 100644 index 6d536f7a97..0000000000 --- a/include/wx/motif/radiobox.h +++ /dev/null @@ -1,100 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: radiobox.h -// Purpose: wxRadioBox class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_RADIOBOX_H_ -#define _WX_RADIOBOX_H_ - -#ifdef __GNUG__ -#pragma interface "radiobox.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxRadioBoxNameStr; - -// List box item -class WXDLLEXPORT wxBitmap ; - -class WXDLLEXPORT wxRadioBox: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxRadioBox) -public: - wxRadioBox(); - - inline wxRadioBox(wxWindow *parent, wxWindowID id, const wxString& title, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = NULL, - int majorDim = 0, long style = wxRA_HORIZONTAL, - const wxValidator& val = wxDefaultValidator, const wxString& name = wxRadioBoxNameStr) - { - Create(parent, id, title, pos, size, n, choices, majorDim, style, val, name); - } - - ~wxRadioBox(); - - bool Create(wxWindow *parent, wxWindowID id, const wxString& title, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = NULL, - int majorDim = 0, long style = wxRA_HORIZONTAL, - const wxValidator& val = wxDefaultValidator, const wxString& name = wxRadioBoxNameStr); - - int FindString(const wxString& s) const; - void SetSelection(int N); - int GetSelection() const; - wxString GetString(int N) const; - void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - void SetSize(const wxRect& rect, int sizeFlags = wxSIZE_AUTO) - { wxWindow::SetSize(rect, sizeFlags); } - void SetSize(const wxSize& size) { wxWindow::SetSize(size); } - virtual void SetSize(int width, int height) { SetSize(-1, -1, width, height, wxSIZE_USE_EXISTING); } - - void SetLabel(const wxString& label) { wxControl::SetLabel(label); }; - void SetLabel(int item, const wxString& label) ; - wxString GetLabel(int item) const; - wxString GetLabel() const { return wxControl::GetLabel(); }; - void Enable(bool enable); - void Enable(int item, bool enable); - void Show(int item, bool show) ; - bool Show(bool show) ; - - virtual wxString GetStringSelection() const; - virtual bool SetStringSelection(const wxString& s); - inline virtual int Number() const { return m_noItems; } ; - void Command(wxCommandEvent& event); - - inline int GetNumberOfRowsOrCols() const { return m_noRowsOrCols; } - inline void SetNumberOfRowsOrCols(int n) { m_noRowsOrCols = n; } - -// Implementation - virtual void ChangeFont(bool keepOriginalSize = TRUE); - virtual void ChangeBackgroundColour(); - virtual void ChangeForegroundColour(); - WXWidget GetTopWidget() const { return m_formWidget; } - WXWidget GetLabelWidget() const { return m_labelWidget; } - WXWidget GetFrameWidget() const { return m_frameWidget; } - inline WXWidget* GetRadioButtons() const { return m_radioButtons; } - inline void SetSel(int i) { m_selectedButton = i; } - -protected: - int m_majorDim ; - int m_noItems; - int m_noRowsOrCols; - int m_selectedButton; - - WXWidget m_formWidget; - WXWidget m_labelWidget; - WXWidget m_frameWidget; - WXWidget* m_radioButtons; - wxString* m_radioButtonLabels; -}; - -#endif - // _WX_RADIOBOX_H_ diff --git a/include/wx/motif/radiobut.h b/include/wx/motif/radiobut.h deleted file mode 100644 index 1292321fad..0000000000 --- a/include/wx/motif/radiobut.h +++ /dev/null @@ -1,94 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: radiobut.h -// Purpose: wxRadioButton class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_RADIOBUT_H_ -#define _WX_RADIOBUT_H_ - -#ifdef __GNUG__ -#pragma interface "radiobut.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxRadioButtonNameStr; - -class WXDLLEXPORT wxRadioButton: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxRadioButton) -protected: -public: - wxRadioButton(); - inline wxRadioButton(wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxRadioButtonNameStr) - { - Create(parent, id, label, pos, size, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxRadioButtonNameStr); - - virtual void SetValue(bool val); - virtual bool GetValue() const ; - - void Command(wxCommandEvent& event); - -// Implementation - virtual void ChangeFont(bool keepOriginalSize = TRUE); - virtual void ChangeBackgroundColour(); - virtual void ChangeForegroundColour(); -}; - -// Not implemented -#if 0 -class WXDLLEXPORT wxBitmap ; - -WXDLLEXPORT_DATA(extern const char*) wxBitmapRadioButtonNameStr; - -class WXDLLEXPORT wxBitmapRadioButton: public wxRadioButton -{ - DECLARE_DYNAMIC_CLASS(wxBitmapRadioButton) - protected: - wxBitmap *theButtonBitmap; - public: - inline wxBitmapRadioButton() { theButtonBitmap = NULL; } - inline wxBitmapRadioButton(wxWindow *parent, wxWindowID id, - const wxBitmap *label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxBitmapRadioButtonNameStr) - { - Create(parent, id, label, pos, size, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - const wxBitmap *label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxBitmapRadioButtonNameStr); - - virtual void SetLabel(const wxBitmap *label); - virtual void SetValue(bool val) ; - virtual bool GetValue() const ; -}; -#endif - -#endif - // _WX_RADIOBUT_H_ diff --git a/include/wx/motif/region.h b/include/wx/motif/region.h deleted file mode 100644 index 969a44f654..0000000000 --- a/include/wx/motif/region.h +++ /dev/null @@ -1,141 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: region.h -// Purpose: wxRegion class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_REGION_H_ -#define _WX_REGION_H_ - -#ifdef __GNUG__ -#pragma interface "region.h" -#endif - -#include "wx/list.h" -#include "wx/gdiobj.h" -#include "wx/gdicmn.h" - -class WXDLLEXPORT wxRect; -class WXDLLEXPORT wxPoint; - -enum wxRegionContain { - wxOutRegion = 0, wxPartRegion = 1, wxInRegion = 2 -}; - -// So far, for internal use only -enum wxRegionOp { -wxRGN_AND, // Creates the intersection of the two combined regions. -wxRGN_COPY, // Creates a copy of the region identified by hrgnSrc1. -wxRGN_DIFF, // Combines the parts of hrgnSrc1 that are not part of hrgnSrc2. -wxRGN_OR, // Creates the union of two combined regions. -wxRGN_XOR // Creates the union of two combined regions except for any overlapping areas. -}; - -class WXDLLEXPORT wxRegion : public wxGDIObject { -DECLARE_DYNAMIC_CLASS(wxRegion); - friend class WXDLLEXPORT wxRegionIterator; -public: - wxRegion(long x, long y, long w, long h); - wxRegion(const wxPoint& topLeft, const wxPoint& bottomRight); - wxRegion(const wxRect& rect); - wxRegion(); - ~wxRegion(); - - //# Copying - inline wxRegion(const wxRegion& r) - { Ref(r); } - inline wxRegion& operator = (const wxRegion& r) - { Ref(r); return (*this); } - - //# Modify region - // Clear current region - void Clear(); - - // Union rectangle or region with this. - inline bool Union(long x, long y, long width, long height) { return Combine(x, y, width, height, wxRGN_OR); } - inline bool Union(const wxRect& rect) { return Combine(rect, wxRGN_OR); } - inline bool Union(const wxRegion& region) { return Combine(region, wxRGN_OR); } - - // Intersect rectangle or region with this. - inline bool Intersect(long x, long y, long width, long height) { return Combine(x, y, width, height, wxRGN_AND); } - inline bool Intersect(const wxRect& rect) { return Combine(rect, wxRGN_AND); } - inline bool Intersect(const wxRegion& region) { return Combine(region, wxRGN_AND); } - - // Subtract rectangle or region from this: - // Combines the parts of 'this' that are not part of the second region. - inline bool Subtract(long x, long y, long width, long height) { return Combine(x, y, width, height, wxRGN_DIFF); } - inline bool Subtract(const wxRect& rect) { return Combine(rect, wxRGN_DIFF); } - inline bool Subtract(const wxRegion& region) { return Combine(region, wxRGN_DIFF); } - - // XOR: the union of two combined regions except for any overlapping areas. - inline bool Xor(long x, long y, long width, long height) { return Combine(x, y, width, height, wxRGN_XOR); } - inline bool Xor(const wxRect& rect) { return Combine(rect, wxRGN_XOR); } - inline bool Xor(const wxRegion& region) { return Combine(region, wxRGN_XOR); } - - //# Information on region - // Outer bounds of region - void GetBox(long& x, long& y, long&w, long &h) const; - wxRect GetBox() const ; - - // Is region empty? - bool Empty() const; - inline bool IsEmpty() const { return Empty(); } - bool Ok() const { return (m_refData != NULL) ; } - - //# Tests - // Does the region contain the point (x,y)? - wxRegionContain Contains(long x, long y) const; - // Does the region contain the point pt? - wxRegionContain Contains(const wxPoint& pt) const; - // Does the region contain the rectangle (x, y, w, h)? - wxRegionContain Contains(long x, long y, long w, long h) const; - // Does the region contain the rectangle rect? - wxRegionContain Contains(const wxRect& rect) const; - -// Internal - bool Combine(long x, long y, long width, long height, wxRegionOp op); - bool Combine(const wxRegion& region, wxRegionOp op); - bool Combine(const wxRect& rect, wxRegionOp op); - - // Get the internal Region handle - WXRegion GetXRegion() const; -}; - -class WXDLLEXPORT wxRegionIterator : public wxObject { -DECLARE_DYNAMIC_CLASS(wxRegionIterator); -public: - wxRegionIterator(); - wxRegionIterator(const wxRegion& region); - ~wxRegionIterator(); - - void Reset() { m_current = 0; } - void Reset(const wxRegion& region); - - operator bool () const { return m_current < m_numRects; } - bool HaveRects() const { return m_current < m_numRects; } - - void operator ++ (); - void operator ++ (int); - - long GetX() const; - long GetY() const; - long GetW() const; - long GetWidth() const { return GetW(); } - long GetH() const; - long GetHeight() const { return GetH(); } - wxRect GetRect() const { return wxRect(GetX(), GetY(), GetWidth(), GetHeight()); } - -private: - long m_current; - long m_numRects; - wxRegion m_region; - wxRect* m_rects; -}; - -#endif - // _WX_REGION_H_ diff --git a/include/wx/motif/scrolbar.h b/include/wx/motif/scrolbar.h deleted file mode 100644 index 2cda645071..0000000000 --- a/include/wx/motif/scrolbar.h +++ /dev/null @@ -1,73 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: scrollbar.h -// Purpose: wxScrollBar class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_SCROLBAR_H_ -#define _WX_SCROLBAR_H_ - -#ifdef __GNUG__ -#pragma interface "scrolbar.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxScrollBarNameStr; - -// Scrollbar item -class WXDLLEXPORT wxScrollBar: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxScrollBar) - -public: - inline wxScrollBar() { m_pageSize = 0; m_viewSize = 0; m_objectSize = 0; } - ~wxScrollBar(); - - inline wxScrollBar(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxSB_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxScrollBarNameStr) - { - Create(parent, id, pos, size, style, validator, name); - } - bool Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxSB_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxScrollBarNameStr); - - int GetThumbPosition() const ; - inline int GetThumbSize() const { return m_pageSize; } - inline int GetPageSize() const { return m_viewSize; } - inline int GetRange() const { return m_objectSize; } - - virtual void SetThumbPosition(int viewStart); - virtual void SetScrollbar(int position, int thumbSize, int range, int pageSize, - bool refresh = TRUE); - - void Command(wxCommandEvent& event); - -// Implementation - virtual void ChangeFont(bool keepOriginalSize = TRUE); - virtual void ChangeBackgroundColour(); - virtual void ChangeForegroundColour(); - -protected: - int m_pageSize; - int m_viewSize; - int m_objectSize; - -// DECLARE_EVENT_TABLE() -}; - -#endif - // _WX_SCROLBAR_H_ diff --git a/include/wx/motif/settings.h b/include/wx/motif/settings.h deleted file mode 100644 index 435e30b53b..0000000000 --- a/include/wx/motif/settings.h +++ /dev/null @@ -1,133 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: settings.h -// Purpose: wxSystemSettings class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_SETTINGS_H_ -#define _WX_SETTINGS_H_ - -#ifdef __GNUG__ -#pragma interface "settings.h" -#endif - -#include "wx/setup.h" -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/colour.h" -#include "wx/font.h" - -#define wxSYS_WHITE_BRUSH 0 -#define wxSYS_LTGRAY_BRUSH 1 -#define wxSYS_GRAY_BRUSH 2 -#define wxSYS_DKGRAY_BRUSH 3 -#define wxSYS_BLACK_BRUSH 4 -#define wxSYS_NULL_BRUSH 5 -#define wxSYS_HOLLOW_BRUSH wxSYS_NULL_BRUSH -#define wxSYS_WHITE_PEN 6 -#define wxSYS_BLACK_PEN 7 -#define wxSYS_NULL_PEN 8 -#define wxSYS_OEM_FIXED_FONT 10 -#define wxSYS_ANSI_FIXED_FONT 11 -#define wxSYS_ANSI_VAR_FONT 12 -#define wxSYS_SYSTEM_FONT 13 -#define wxSYS_DEVICE_DEFAULT_FONT 14 -#define wxSYS_DEFAULT_PALETTE 15 -#define wxSYS_SYSTEM_FIXED_FONT 16 // Obsolete -#define wxSYS_DEFAULT_GUI_FONT 17 - -#define wxSYS_COLOUR_SCROLLBAR 0 -#define wxSYS_COLOUR_BACKGROUND 1 -#define wxSYS_COLOUR_ACTIVECAPTION 2 -#define wxSYS_COLOUR_INACTIVECAPTION 3 -#define wxSYS_COLOUR_MENU 4 -#define wxSYS_COLOUR_WINDOW 5 -#define wxSYS_COLOUR_WINDOWFRAME 6 -#define wxSYS_COLOUR_MENUTEXT 7 -#define wxSYS_COLOUR_WINDOWTEXT 8 -#define wxSYS_COLOUR_CAPTIONTEXT 9 -#define wxSYS_COLOUR_ACTIVEBORDER 10 -#define wxSYS_COLOUR_INACTIVEBORDER 11 -#define wxSYS_COLOUR_APPWORKSPACE 12 -#define wxSYS_COLOUR_HIGHLIGHT 13 -#define wxSYS_COLOUR_HIGHLIGHTTEXT 14 -#define wxSYS_COLOUR_BTNFACE 15 -#define wxSYS_COLOUR_BTNSHADOW 16 -#define wxSYS_COLOUR_GRAYTEXT 17 -#define wxSYS_COLOUR_BTNTEXT 18 -#define wxSYS_COLOUR_INACTIVECAPTIONTEXT 19 -#define wxSYS_COLOUR_BTNHIGHLIGHT 20 - -#define wxSYS_COLOUR_3DDKSHADOW 21 -#define wxSYS_COLOUR_3DLIGHT 22 -#define wxSYS_COLOUR_INFOTEXT 23 -#define wxSYS_COLOUR_INFOBK 24 - -#define wxSYS_COLOUR_DESKTOP wxSYS_COLOUR_BACKGROUND -#define wxSYS_COLOUR_3DFACE wxSYS_COLOUR_BTNFACE -#define wxSYS_COLOUR_3DSHADOW wxSYS_COLOUR_BTNSHADOW -#define wxSYS_COLOUR_3DHIGHLIGHT wxSYS_COLOUR_BTNHIGHLIGHT -#define wxSYS_COLOUR_3DHILIGHT wxSYS_COLOUR_BTNHIGHLIGHT -#define wxSYS_COLOUR_BTNHILIGHT wxSYS_COLOUR_BTNHIGHLIGHT - -// Metrics -#define wxSYS_MOUSE_BUTTONS 1 -#define wxSYS_BORDER_X 2 -#define wxSYS_BORDER_Y 3 -#define wxSYS_CURSOR_X 4 -#define wxSYS_CURSOR_Y 5 -#define wxSYS_DCLICK_X 6 -#define wxSYS_DCLICK_Y 7 -#define wxSYS_DRAG_X 8 -#define wxSYS_DRAG_Y 9 -#define wxSYS_EDGE_X 10 -#define wxSYS_EDGE_Y 11 -#define wxSYS_HSCROLL_ARROW_X 12 -#define wxSYS_HSCROLL_ARROW_Y 13 -#define wxSYS_HTHUMB_X 14 -#define wxSYS_ICON_X 15 -#define wxSYS_ICON_Y 16 -#define wxSYS_ICONSPACING_X 17 -#define wxSYS_ICONSPACING_Y 18 -#define wxSYS_WINDOWMIN_X 19 -#define wxSYS_WINDOWMIN_Y 20 -#define wxSYS_SCREEN_X 21 -#define wxSYS_SCREEN_Y 22 -#define wxSYS_FRAMESIZE_X 23 -#define wxSYS_FRAMESIZE_Y 24 -#define wxSYS_SMALLICON_X 25 -#define wxSYS_SMALLICON_Y 26 -#define wxSYS_HSCROLL_Y 27 -#define wxSYS_VSCROLL_X 28 -#define wxSYS_VSCROLL_ARROW_X 29 -#define wxSYS_VSCROLL_ARROW_Y 30 -#define wxSYS_VTHUMB_Y 31 -#define wxSYS_CAPTION_Y 32 -#define wxSYS_MENU_Y 33 -#define wxSYS_NETWORK_PRESENT 34 -#define wxSYS_PENWINDOWS_PRESENT 35 -#define wxSYS_SHOW_SOUNDS 36 -#define wxSYS_SWAP_BUTTONS 37 - -class WXDLLEXPORT wxSystemSettings: public wxObject -{ -public: - inline wxSystemSettings() {} - - // Get a system colour - static wxColour GetSystemColour(int index); - - // Get a system font - static wxFont GetSystemFont(int index); - - // Get a system metric, e.g. scrollbar size - static int GetSystemMetric(int index); -}; - -#endif - // _WX_SETTINGS_H_ diff --git a/include/wx/motif/setup.h b/include/wx/motif/setup.h deleted file mode 100644 index 923e2fef2a..0000000000 --- a/include/wx/motif/setup.h +++ /dev/null @@ -1,154 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: setup.h -// Purpose: Configuration for the library -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_SETUP_H_ -#define _WX_SETUP_H_ - -/* - * General features - * - */ - -#define wxUSE_CONSTRAINTS 1 - // Use constraints mechanism -#define wxUSE_CONFIG 1 - // Use wxConfig, with CreateConfig in wxApp -#define _WX_GOODCOMPILER__ - // gcc can have problems, but Windows compilers - // are generally OK. -#define WXWIN_COMPATIBILITY 1 - // Compatibility with 1.66 API. - // Level 0: no backward compatibility, all new features - // Level 1: wxDC, OnSize (etc.) compatibility, but - // some new features such as event tables - -#define wxUSE_POSTSCRIPT 1 - // 0 for no PostScript device context -#define wxUSE_AFM_FOR_POSTSCRIPT 0 - // 1 to use font metric files in GetTextExtent -#define wxUSE_METAFILE 1 - // 0 for no Metafile and metafile device context -#define wxUSE_IPC 1 - // 0 for no interprocess comms -#define wxUSE_HELP 1 - // 0 for no help facility -#define wxUSE_RESOURCES 1 - // 0 for no wxGetResource/wxWriteResource -#define wxUSE_CLIPBOARD 1 - // 0 for no clipboard functions -#define wxUSE_SPLINES 1 - // 0 for no splines -#define wxUSE_XFIG_SPLINE_CODE 1 - // 1 for XFIG spline code, 0 for AIAI spline code. -// AIAI spline code is slower, but freer of copyright issues. - // 0 for no splines - -#define wxUSE_XPM 1 - // Use XPMs - -#define wxUSE_TOOLBAR 1 - // Use toolbars -#define wxUSE_COMBOBOX 1 - // Use wxComboBox -#define wxUSE_DRAG_AND_DROP 1 - // 0 for no drag and drop - -#define wxUSE_WX_RESOURCES 1 - // Use .wxr resource mechanism (requires PrologIO library) - -#define wxUSE_DOC_VIEW_ARCHITECTURE 1 - // Set to 0 to disable document/view architecture -#define wxUSE_PRINTING_ARCHITECTURE 1 - // Set to 0 to disable print/preview architecture code -#define wxUSE_POSTSCRIPT_ARCHITECTURE_IN_MSW 1 - // Set to 0 to disable PostScript print/preview architecture code - // under Windows (just use Windows printing). -#define wxUSE_DYNAMIC_CLASSES 1 - // If 1, enables provision of run-time type information. - // NOW MANDATORY: don't change. -#define wxUSE_MEMORY_TRACING 1 - // If 1, enables debugging versions of wxObject::new and - // wxObject::delete *IF* __WXDEBUG__ is also defined. - // WARNING: this code may not work with all architectures, especially - // if alignment is an issue. -#define wxUSE_DEBUG_CONTEXT 1 - // If 1, enables wxDebugContext, for - // writing error messages to file, etc. - // If WXDEBUG is not defined, will still use - // normal memory operators. - // It's recommended to set this to 1, - // since you may well need to output - // an error log in a production - // version (or non-debugging beta) - -#define wxUSE_GLOBAL_MEMORY_OPERATORS 1 - // In debug mode, cause new and delete to be redefined globally. - // If this causes problems (e.g. link errors), set this to 0. - -#define wxUSE_DEBUG_NEW_ALWAYS 1 - // In debug mode, causes new to be defined to - // be WXDEBUG_NEW (see object.h). - // If this causes problems (e.g. link errors), set this to 0. - -#define REMOVE_UNUSED_ARG 1 - // Set this to 0 if your compiler can't cope - // with omission of prototype parameters. - -#define wxUSE_C_MAIN 0 - // Set to 1 to use main.c instead of main.cpp (UNIX only) - -#define wxUSE_ODBC 0 - // Define 1 to use ODBC classes - -#define wxUSE_IOSTREAMH 1 - // VC++ 4.2 and above allows and - // but you can't mix them. Set to 1 for , - // 0 for - -#define wxUSE_WXCONFIG 1 - // if enabled, compiles built-in OS independent wxConfig - // class and it's file (any platform) and registry (Win) - // based implementations - -#define wxUSE_GADGETS 0 - // Use gadgets where possible - -#define wxUSE_TIMEDATE 1 - // Use time and date - -#define wxUSE_THREADS 0 - // Use threads - -#define wxUSE_ZLIB 1 - // Use zlib for compression in streams and PNG code -#define wxUSE_LIBPNG 1 - // Use PNG bitmap code -#define wxUSE_STD_IOSTREAM 1 - // Use standard C++ streams if 1. If 0, use wxWin - // streams implementation. -#define wxUSE_STREAMS 1 - // Use wxStream implementation within wxWindows code - -#define wxUSE_SERIAL 0 - // Use serialization - -/* - * Finer detail - * - */ - -#define wxUSE_APPLE_IEEE 1 - // if enabled, the float codec written by Apple - // will be used to write, in a portable way, - // float on the disk - -#endif - // _WX_SETUP_H_ diff --git a/include/wx/motif/slider.h b/include/wx/motif/slider.h deleted file mode 100644 index 5d1bacf51a..0000000000 --- a/include/wx/motif/slider.h +++ /dev/null @@ -1,101 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: slider.h -// Purpose: wxSlider class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_SLIDER_H_ -#define _WX_SLIDER_H_ - -#ifdef __GNUG__ -#pragma interface "slider.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxSliderNameStr; - -// Slider -class WXDLLEXPORT wxSlider: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxSlider) - -public: - wxSlider(); - - inline wxSlider(wxWindow *parent, wxWindowID id, - int value, int minValue, int maxValue, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxSL_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxSliderNameStr) - { - Create(parent, id, value, minValue, maxValue, pos, size, style, validator, name); - } - - ~wxSlider(); - - bool Create(wxWindow *parent, wxWindowID id, - int value, int minValue, int maxValue, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxSL_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxSliderNameStr); - - virtual int GetValue() const ; - virtual void SetValue(int); - void GetSize(int *x, int *y) const ; - wxSize GetSize() const { return wxWindow::GetSize(); } - - void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - void SetSize(const wxRect& rect, int sizeFlags = wxSIZE_AUTO) - { wxWindow::SetSize(rect, sizeFlags); } - void SetSize(const wxSize& size) { wxWindow::SetSize(size); } - virtual void SetSize(int width, int height) { SetSize(-1, -1, width, height, wxSIZE_USE_EXISTING); } - - void SetRange(int minValue, int maxValue); - - inline int GetMin() const { return m_rangeMin; } - inline int GetMax() const { return m_rangeMax; } - - // For trackbars only - void SetTickFreq(int n, int pos); - inline int GetTickFreq() const { return m_tickFreq; } - void SetPageSize(int pageSize); - int GetPageSize() const ; - void ClearSel() ; - void ClearTicks() ; - void SetLineSize(int lineSize); - int GetLineSize() const ; - int GetSelEnd() const ; - int GetSelStart() const ; - void SetSelection(int minPos, int maxPos); - void SetThumbLength(int len) ; - int GetThumbLength() const ; - void SetTick(int tickPos) ; - - void Command(wxCommandEvent& event); - -// Implementation - virtual void ChangeFont(bool keepOriginalSize = TRUE); - virtual void ChangeBackgroundColour(); - virtual void ChangeForegroundColour(); - - protected: - int m_rangeMin; - int m_rangeMax; - int m_pageSize; - int m_lineSize; - int m_tickFreq; -DECLARE_EVENT_TABLE() -}; - -#endif - // _WX_SLIDER_H_ diff --git a/include/wx/motif/spinbutt.h b/include/wx/motif/spinbutt.h deleted file mode 100644 index 0f3b2dafd7..0000000000 --- a/include/wx/motif/spinbutt.h +++ /dev/null @@ -1,102 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: spinbutt.h -// Purpose: wxSpinButton class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_SPINBUTT_H_ -#define _WX_SPINBUTT_H_ - -#ifdef __GNUG__ -#pragma interface "spinbutt.h" -#endif - -#include "wx/control.h" -#include "wx/event.h" - -/* - The wxSpinButton is like a small scrollbar than is often placed next - to a text control. - - wxSP_HORIZONTAL: horizontal spin button - wxSP_VERTICAL: vertical spin button (the default) - wxSP_ARROW_KEYS: arrow keys increment/decrement value - wxSP_WRAP: value wraps at either end - */ - -class WXDLLEXPORT wxSpinButton: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxSpinButton) - public: - /* - * Public interface - */ - - wxSpinButton(); - - inline wxSpinButton(wxWindow *parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxSP_VERTICAL, const wxString& name = "wxSpinButton") - { - Create(parent, id, pos, size, style, name); - } - ~wxSpinButton(); - - bool Create(wxWindow *parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxSP_VERTICAL, const wxString& name = "wxSpinButton"); - - - // Attributes - //////////////////////////////////////////////////////////////////////////// - - int GetValue() const ; - void SetValue(int val) ; - void SetRange(int minVal, int maxVal) ; - inline int GetMin() const { return m_min; } - inline int GetMax() const { return m_max; } - - // Operations - //////////////////////////////////////////////////////////////////////////// - - void Command(wxCommandEvent& event) { ProcessCommand(event); }; - -// Implementation - virtual void ChangeFont(bool keepOriginalSize = TRUE); - virtual void ChangeBackgroundColour(); - virtual void ChangeForegroundColour(); - -protected: - int m_min; - int m_max; -}; - -class WXDLLEXPORT wxSpinEvent: public wxScrollEvent -{ - DECLARE_DYNAMIC_CLASS(wxSpinEvent) - - public: - wxSpinEvent(wxEventType commandType = wxEVT_NULL, int id = 0); -}; - -typedef void (wxEvtHandler::*wxSpinEventFunction)(wxSpinEvent&); - -// Spin events - -#define EVT_SPIN_UP(id, func) { wxEVT_SCROLL_LINEUP, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func } -#define EVT_SPIN_DOWN(id, func) { wxEVT_SCROLL_LINEDOWN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func } - -#define EVT_SPIN(id, func) \ - { wxEVT_SCROLL_TOP, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func },\ - { wxEVT_SCROLL_BOTTOM, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func },\ - { wxEVT_SCROLL_LINEUP, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func },\ - { wxEVT_SCROLL_LINEDOWN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func },\ - { wxEVT_SCROLL_PAGEUP, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func },\ - { wxEVT_SCROLL_PAGEDOWN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func },\ - { wxEVT_SCROLL_THUMBTRACK, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func }, - -#endif - // _WX_SPINBUTT_H_ diff --git a/include/wx/motif/statbmp.h b/include/wx/motif/statbmp.h deleted file mode 100644 index 3da85fba6f..0000000000 --- a/include/wx/motif/statbmp.h +++ /dev/null @@ -1,74 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: statbmp.h -// Purpose: wxStaticBitmap class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_STATBMP_H_ -#define _WX_STATBMP_H_ - -#ifdef __GNUG__ -#pragma interface "statbmp.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxStaticBitmapNameStr; - -class WXDLLEXPORT wxStaticBitmap: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxStaticBitmap) - public: - inline wxStaticBitmap() { } - ~wxStaticBitmap(); - - inline wxStaticBitmap(wxWindow *parent, wxWindowID id, - const wxBitmap& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = wxStaticBitmapNameStr) - { - Create(parent, id, label, pos, size, style, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - const wxBitmap& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = wxStaticBitmapNameStr); - - virtual void SetBitmap(const wxBitmap& bitmap); - - virtual void Command(wxCommandEvent& WXUNUSED(event)) {}; - virtual void ProcessCommand(wxCommandEvent& WXUNUSED(event)) {}; - - void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - void SetSize(const wxRect& rect, int sizeFlags = wxSIZE_AUTO) - { wxWindow::SetSize(rect, sizeFlags); } - void SetSize(const wxSize& size) { wxWindow::SetSize(size); } - virtual void SetSize(int width, int height) { SetSize(-1, -1, width, height, wxSIZE_USE_EXISTING); } - - inline wxBitmap& GetBitmap() const { return (wxBitmap&) m_messageBitmap; } - - // overriden base class virtuals - virtual bool AcceptsFocus() const { return FALSE; } - -// Implementation - virtual void ChangeFont(bool keepOriginalSize = TRUE); - virtual void ChangeBackgroundColour(); - virtual void ChangeForegroundColour(); - - protected: - wxBitmap m_messageBitmap; - -}; - -#endif - // _WX_STATBMP_H_ diff --git a/include/wx/motif/statbox.h b/include/wx/motif/statbox.h deleted file mode 100644 index 5ebf48dd4e..0000000000 --- a/include/wx/motif/statbox.h +++ /dev/null @@ -1,76 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: statbox.h -// Purpose: wxStaticBox class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_STATBOX_H_ -#define _WX_STATBOX_H_ - -#ifdef __GNUG__ -#pragma interface "statbox.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxStaticBoxNameStr; - -// Group box -class WXDLLEXPORT wxStaticBox: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxStaticBox) - - public: - wxStaticBox(); - inline wxStaticBox(wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = wxStaticBoxNameStr) - { - Create(parent, id, label, pos, size, style, name); - } - ~wxStaticBox(); - - bool Create(wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = wxStaticBoxNameStr); - - virtual void Command(wxCommandEvent& WXUNUSED(event)) {}; - virtual void ProcessCommand(wxCommandEvent& WXUNUSED(event)) {}; - - void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - void SetSize(const wxRect& rect, int sizeFlags = wxSIZE_AUTO) - { wxWindow::SetSize(rect, sizeFlags); } - void SetSize(const wxSize& size) { wxWindow::SetSize(size); } - virtual void SetSize(int width, int height) { SetSize(-1, -1, width, height, wxSIZE_USE_EXISTING); } - - void SetLabel(const wxString& label); - wxString GetLabel() const; - -// Implementation - virtual void ChangeFont(bool keepOriginalSize = TRUE); - virtual void ChangeBackgroundColour(); - virtual void ChangeForegroundColour(); - WXWidget GetTopWidget() const { return m_formWidget; } - WXWidget GetLabelWidget() const { return m_labelWidget; } - -DECLARE_EVENT_TABLE() - -protected: - // Motif-specific - WXWidget m_formWidget; - WXWidget m_labelWidget; -}; - -#endif - // _WX_STATBOX_H_ diff --git a/include/wx/motif/stattext.h b/include/wx/motif/stattext.h deleted file mode 100644 index c4205fa426..0000000000 --- a/include/wx/motif/stattext.h +++ /dev/null @@ -1,57 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: stattext.h -// Purpose: wxStaticText class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_STATTEXT_H_ -#define _WX_STATTEXT_H_ - -#ifdef __GNUG__ -#pragma interface "stattext.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxStaticTextNameStr; - -class WXDLLEXPORT wxStaticText: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxStaticText) - public: - inline wxStaticText() { } - - inline wxStaticText(wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = wxStaticTextNameStr) - { - Create(parent, id, label, pos, size, style, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = wxStaticTextNameStr); - - // operations - virtual void Command(wxCommandEvent& WXUNUSED(event)) {}; - virtual void ProcessCommand(wxCommandEvent& WXUNUSED(event)) {}; - -// Implementation - virtual void ChangeFont(bool keepOriginalSize = TRUE); - virtual void ChangeBackgroundColour(); - virtual void ChangeForegroundColour(); -}; - -#endif - // _WX_STATTEXT_H_ diff --git a/include/wx/motif/tabctrl.h b/include/wx/motif/tabctrl.h deleted file mode 100644 index c7ffd57bf7..0000000000 --- a/include/wx/motif/tabctrl.h +++ /dev/null @@ -1,138 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: tabctrl.h -// Purpose: wxTabCtrl class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_TABCTRL_H_ -#define _WX_TABCTRL_H_ - -#ifdef __GNUG__ -#pragma interface "tabctrl.h" -#endif - -class wxImageList; - -/* - * Flags returned by HitTest - */ - -#define wxTAB_HITTEST_NOWHERE 1 -#define wxTAB_HITTEST_ONICON 2 -#define wxTAB_HITTEST_ONLABEL 4 -#define wxTAB_HITTEST_ONITEM 6 - -class WXDLLEXPORT wxTabCtrl: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxTabCtrl) - public: - /* - * Public interface - */ - - wxTabCtrl(); - - inline wxTabCtrl(wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = 0, const wxString& name = "tabCtrl") - { - Create(parent, id, pos, size, style, name); - } - ~wxTabCtrl(); - -// Accessors - - // Get the selection - int GetSelection() const; - - // Get the tab with the current keyboard focus - int GetCurFocus() const; - - // Get the associated image list - wxImageList* GetImageList() const; - - // Get the number of items - int GetItemCount() const; - - // Get the rect corresponding to the tab - bool GetItemRect(int item, wxRect& rect) const; - - // Get the number of rows - int GetRowCount() const; - - // Get the item text - wxString GetItemText(int item) const ; - - // Get the item image - int GetItemImage(int item) const; - - // Get the item data - void* GetItemData(int item) const; - - // Set the selection - int SetSelection(int item); - - // Set the image list - void SetImageList(wxImageList* imageList); - - // Set the text for an item - bool SetItemText(int item, const wxString& text); - - // Set the image for an item - bool SetItemImage(int item, int image); - - // Set the data for an item - bool SetItemData(int item, void* data); - - // Set the size for a fixed-width tab control - void SetItemSize(const wxSize& size); - - // Set the padding between tabs - void SetPadding(const wxSize& padding); - -// Operations - - bool Create(wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = 0, const wxString& name = "tabCtrl"); - - // Delete all items - bool DeleteAllItems(); - - // Delete an item - bool DeleteItem(int item); - - // Hit test - int HitTest(const wxPoint& pt, long& flags); - - // Insert an item - bool InsertItem(int item, const wxString& text, int imageId = -1, void* data = NULL); - - void Command(wxCommandEvent& event); - -protected: - wxImageList* m_imageList; - -DECLARE_EVENT_TABLE() -}; - -class WXDLLEXPORT wxTabEvent: public wxCommandEvent -{ - DECLARE_DYNAMIC_CLASS(wxTabEvent) - - public: - wxTabEvent(wxEventType commandType = wxEVT_NULL, int id = 0); -}; - -typedef void (wxEvtHandler::*wxTabEventFunction)(wxTabEvent&); - -#define EVT_TAB_SEL_CHANGED(id, fn) { wxEVT_COMMAND_TAB_SEL_CHANGED, \ - id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTabEventFunction) & fn, NULL }, -#define EVT_TAB_SEL_CHANGING(id, fn) { wxEVT_COMMAND_TAB_SEL_CHANGING, \ - id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTabEventFunction) & fn, NULL }, - -#endif - // _WX_TABCTRL_H_ diff --git a/include/wx/motif/taskbar.h b/include/wx/motif/taskbar.h deleted file mode 100644 index d9453f7033..0000000000 --- a/include/wx/motif/taskbar.h +++ /dev/null @@ -1,49 +0,0 @@ -///////////////////////////////////////////////////////////////////////// -// File: taskbar.h -// Purpose: Defines wxTaskBarIcon class for manipulating icons on the -// task bar. Optional. -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////// - -#ifndef _WX_TASKBAR_H_ -#define _WX_TASKBAR_H_ - -#ifdef __GNUG__ -#pragma interface "taskbar.h" -#endif - -#include -#include - -class wxTaskBarIcon: public wxObject -{ -public: - wxTaskBarIcon(); - virtual ~wxTaskBarIcon(); - -// Accessors - -// Operations - bool SetIcon(const wxIcon& icon, const wxString& tooltip = ""); - bool RemoveIcon(); - -// Overridables - virtual void OnMouseMove(); - virtual void OnLButtonDown(); - virtual void OnLButtonUp(); - virtual void OnRButtonDown(); - virtual void OnRButtonUp(); - virtual void OnLButtonDClick(); - virtual void OnRButtonDClick(); - -// Data members -protected: -}; - -#endif - // _WX_TASKBAR_H_ diff --git a/include/wx/motif/textctrl.h b/include/wx/motif/textctrl.h deleted file mode 100644 index 984432970f..0000000000 --- a/include/wx/motif/textctrl.h +++ /dev/null @@ -1,149 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: textctrl.h -// Purpose: wxTextCtrl class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_TEXTCTRL_H_ -#define _WX_TEXTCTRL_H_ - -#ifdef __GNUG__ -#pragma interface "textctrl.h" -#endif - -#include "wx/control.h" - -#if wxUSE_IOSTREAMH -#include -#else -#include -#endif - -WXDLLEXPORT_DATA(extern const char*) wxTextCtrlNameStr; -WXDLLEXPORT_DATA(extern const char*) wxEmptyString; - -// Single-line text item -class WXDLLEXPORT wxTextCtrl: public wxControl - -// TODO Some platforms/compilers don't like inheritance from streambuf. - -#if (defined(__BORLANDC__) && !defined(__WIN32__)) || defined(__MWERKS__) -#define NO_TEXT_WINDOW_STREAM -#endif - -#ifndef NO_TEXT_WINDOW_STREAM -, public streambuf -#endif - -{ - DECLARE_DYNAMIC_CLASS(wxTextCtrl) - -public: - // creation - // -------- - wxTextCtrl(); - inline wxTextCtrl(wxWindow *parent, wxWindowID id, - const wxString& value = wxEmptyString, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxTextCtrlNameStr) -#ifndef NO_TEXT_WINDOW_STREAM - :streambuf() -#endif - { - Create(parent, id, value, pos, size, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - const wxString& value = wxEmptyString, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxTextCtrlNameStr); - - // accessors - // --------- - virtual wxString GetValue() const ; - virtual void SetValue(const wxString& value); - - virtual int GetLineLength(long lineNo) const; - virtual wxString GetLineText(long lineNo) const; - virtual int GetNumberOfLines() const; - - // operations - // ---------- - - // Clipboard operations - virtual void Copy(); - virtual void Cut(); - virtual void Paste(); - - virtual void SetInsertionPoint(long pos); - virtual void SetInsertionPointEnd(); - virtual long GetInsertionPoint() const ; - virtual long GetLastPosition() const ; - virtual void Replace(long from, long to, const wxString& value); - virtual void Remove(long from, long to); - virtual void SetSelection(long from, long to); - virtual void SetEditable(bool editable); - - // streambuf implementation -#ifndef NO_TEXT_WINDOW_STREAM - int overflow(int i); - int sync(); - int underflow(); -#endif - - wxTextCtrl& operator<<(const wxString& s); - wxTextCtrl& operator<<(int i); - wxTextCtrl& operator<<(long i); - wxTextCtrl& operator<<(float f); - wxTextCtrl& operator<<(double d); - wxTextCtrl& operator<<(const char c); - - virtual bool LoadFile(const wxString& file); - virtual bool SaveFile(const wxString& file); - virtual void WriteText(const wxString& text); - virtual void DiscardEdits(); - virtual bool IsModified() const; - - virtual long XYToPosition(long x, long y) const ; - virtual void PositionToXY(long pos, long *x, long *y) const ; - virtual void ShowPosition(long pos); - virtual void Clear(); - - // callbacks - // --------- - void OnDropFiles(wxDropFilesEvent& event); - void OnChar(wxKeyEvent& event); -// void OnEraseBackground(wxEraseEvent& event); - - virtual void Command(wxCommandEvent& event); - -// Implementation - virtual void ChangeFont(bool keepOriginalSize = TRUE); - virtual void ChangeBackgroundColour(); - virtual void ChangeForegroundColour(); - inline void SetModified(bool mod) { m_modified = mod; } - virtual WXWidget GetTopWidget() const; - -protected: - wxString m_fileName; -public: - // Motif-specific - void* m_tempCallbackStruct; - bool m_modified; - wxString m_value; // Required for password text controls - bool m_processedDefault; // Did we call wxTextCtrl::OnChar? - // If so, generate a command event. - DECLARE_EVENT_TABLE() -}; - -#endif - // _WX_TEXTCTRL_H_ diff --git a/include/wx/motif/timer.h b/include/wx/motif/timer.h deleted file mode 100644 index 7065c19ca4..0000000000 --- a/include/wx/motif/timer.h +++ /dev/null @@ -1,59 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: timer.h -// Purpose: wxTimer class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_TIMER_H_ -#define _WX_TIMER_H_ - -#ifdef __GNUG__ -#pragma interface "timer.h" -#endif - -#include "wx/object.h" - -class WXDLLEXPORT wxTimer: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxTimer) - - friend void wxTimerCallback (wxTimer * timer); - - public: - wxTimer(); - ~wxTimer(); - virtual bool Start(int milliseconds = -1,bool one_shot = FALSE); // Start timer - virtual void Stop(); // Stop timer - virtual void Notify() = 0; // Override this member - inline int Interval() { return m_milli ; }; // Returns the current interval time (0 if stop) - -protected: - bool m_oneShot ; - int m_milli ; - int m_lastMilli ; - long m_id; - -}; - -/* Note: these are implemented in common/timercmn.cpp, so need to implement them separately. - * But you may need to modify timercmn.cpp. - */ - -// Timer functions (milliseconds) -void WXDLLEXPORT wxStartTimer(); -// Gets time since last wxStartTimer or wxGetElapsedTime -long WXDLLEXPORT wxGetElapsedTime(bool resetTimer = TRUE); - -// EXPERIMENTAL: comment this out if it doesn't compile. -bool WXDLLEXPORT wxGetLocalTime(long *timeZone, int *dstObserved); - -// Get number of seconds since 00:00:00 GMT, Jan 1st 1970. -long WXDLLEXPORT wxGetCurrentTime(); - -#endif - // _WX_TIMER_H_ diff --git a/include/wx/motif/toolbar.h b/include/wx/motif/toolbar.h deleted file mode 100644 index f93c142d21..0000000000 --- a/include/wx/motif/toolbar.h +++ /dev/null @@ -1,94 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: toolbar.h -// Purpose: wxToolBar class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_TOOLBAR_H_ -#define _WX_TOOLBAR_H_ - -#ifdef __GNUG__ -#pragma interface "toolbar.h" -#endif - -#include "wx/tbarbase.h" - -WXDLLEXPORT_DATA(extern const char*) wxToolBarNameStr; - -class WXDLLEXPORT wxToolBar: public wxToolBarBase -{ - DECLARE_DYNAMIC_CLASS(wxToolBar) - public: - /* - * Public interface - */ - - wxToolBar(); - - inline wxToolBar(wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxNO_BORDER|wxTB_HORIZONTAL, - const wxString& name = wxToolBarNameStr): - m_widgets(wxKEY_INTEGER) - - { - Create(parent, id, pos, size, style, name); - } - ~wxToolBar(); - - bool Create(wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxNO_BORDER|wxTB_HORIZONTAL, - const wxString& name = wxToolBarNameStr); - - // If pushedBitmap is NULL, a reversed version of bitmap is - // created and used as the pushed/toggled image. - // If toggle is TRUE, the button toggles between the two states. - wxToolBarTool *AddTool(int toolIndex, const wxBitmap& bitmap, const wxBitmap& pushedBitmap = wxNullBitmap, - bool toggle = FALSE, long xPos = -1, long yPos = -1, wxObject *clientData = NULL, - const wxString& helpString1 = "", const wxString& helpString2 = ""); - - // Set default bitmap size - void SetToolBitmapSize(const wxSize& size); - void EnableTool(int toolIndex, bool enable); // additional drawing on enabling - void ToggleTool(int toolIndex, bool toggle); // toggle is TRUE if toggled on - void ClearTools(); - - // The button size is bigger than the bitmap size - wxSize GetToolSize() const; - - wxSize GetMaxSize() const; - - // Add all the buttons - virtual bool CreateTools(); - virtual void Layout() {} - - // The post-tool-addition call. TODO: do here whatever's - // necessary for completing the toolbar construction. - bool Realize() { return CreateTools(); }; - -// Implementation - void DestroyPixmaps(); - int FindIndexForWidget(WXWidget w); - WXWidget FindWidgetForIndex(int index); - - WXWidget GetTopWidget() const; - WXWidget GetClientWidget() const; - WXWidget GetMainWidget() const; - -protected: - // List of widgets in the toolbar, indexed by tool index - wxList m_widgets; - - // List of pixmaps to destroy when tools are recreated or - // or toolbar is destroyed. - wxList m_pixmaps; - -DECLARE_EVENT_TABLE() -}; - -#endif - // _WX_TOOLBAR_H_ diff --git a/include/wx/motif/wave.h b/include/wx/motif/wave.h deleted file mode 100644 index 272b152aa3..0000000000 --- a/include/wx/motif/wave.h +++ /dev/null @@ -1,44 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: wave.h -// Purpose: wxWave class (loads and plays short Windows .wav files). -// Optional on non-Windows platforms. -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_WAVE_H_ -#define _WX_WAVE_H_ - -#ifdef __GNUG__ -#pragma interface "wave.h" -#endif - -#include "wx/object.h" - -class wxWave : public wxObject -{ -public: - wxWave(); - wxWave(const wxString& fileName, bool isResource = FALSE); - ~wxWave(); - -public: - bool Create(const wxString& fileName, bool isResource = FALSE); - bool IsOk() const { return (m_waveData ? TRUE : FALSE); }; - bool Play(bool async = TRUE, bool looped = FALSE) const; - -protected: - bool Free(); - -private: - char* m_waveData; - int m_waveLength; - bool m_isResource; -}; - -#endif - // _WX_WAVE_H_ diff --git a/include/wx/motif/window.h b/include/wx/motif/window.h deleted file mode 100644 index ae9f07668d..0000000000 --- a/include/wx/motif/window.h +++ /dev/null @@ -1,710 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: window.h -// Purpose: wxWindow class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_WINDOW_H_ -#define _WX_WINDOW_H_ - -#ifdef __GNUG__ -#pragma interface "window.h" -#endif - -#include "wx/gdicmn.h" -#include "wx/icon.h" -#include "wx/cursor.h" -#include "wx/pen.h" -#include "wx/font.h" -#include "wx/validate.h" -#include "wx/event.h" -#include "wx/string.h" -#include "wx/list.h" -#include "wx/region.h" -#include "wx/accel.h" - -#define wxKEY_SHIFT 1 -#define wxKEY_CTRL 2 - -/* - * Base class for frame, panel, canvas, panel items, dialog box. - * - */ - -/* - * Event handler: windows have themselves as their event handlers - * by default, but their event handlers could be set to another - * object entirely. This separation can reduce the amount of - * derivation required, and allow alteration of a window's functionality - * (e.g. by a resource editor that temporarily switches event handlers). - */ - -class WXDLLEXPORT wxWindow; -class WXDLLEXPORT wxEvent; -class WXDLLEXPORT wxCommandEvent; -class WXDLLEXPORT wxKeyEvent; -class WXDLLEXPORT wxControl; -class WXDLLEXPORT wxCursor; -class WXDLLEXPORT wxColourMap; -class WXDLLEXPORT wxFont; -class WXDLLEXPORT wxMenu; -class WXDLLEXPORT wxRect; -class WXDLLEXPORT wxBitmap; -class WXDLLEXPORT wxSizer; -class WXDLLEXPORT wxList; -class WXDLLEXPORT wxLayoutConstraints; -class WXDLLEXPORT wxMouseEvent; -class WXDLLEXPORT wxButton; -class WXDLLEXPORT wxColour; -class WXDLLEXPORT wxBrush; -class WXDLLEXPORT wxPen; -class WXDLLEXPORT wxIcon; -class WXDLLEXPORT wxDC; -class WXDLLEXPORT wxValidator; - -#if wxUSE_DRAG_AND_DROP -class WXDLLEXPORT wxDropTarget; -#endif - -#if wxUSE_WX_RESOURCES -class WXDLLEXPORT wxResourceTable; -class WXDLLEXPORT wxItemResource; -#endif - -WXDLLEXPORT_DATA(extern const char*) wxPanelNameStr; - -WXDLLEXPORT_DATA(extern const wxSize) wxDefaultSize; -WXDLLEXPORT_DATA(extern const wxPoint) wxDefaultPosition; - -//----------------------------------------------------------------------------- -// wxClientData -//----------------------------------------------------------------------------- - -class wxClientData -{ -public: - wxClientData() { } - virtual ~wxClientData() { } -}; - -//----------------------------------------------------------------------------- -// wxStringClientData -//----------------------------------------------------------------------------- - -class wxStringClientData: public wxClientData -{ -public: - wxStringClientData() { } - wxStringClientData( wxString &data ) { m_data = data; } - void SetData( wxString &data ) { m_data = data; } - wxString GetData() const { return m_data; } - -private: - wxString m_data; -}; - -class WXDLLEXPORT wxWindow: public wxEvtHandler -{ - DECLARE_ABSTRACT_CLASS(wxWindow) - - friend class WXDLLEXPORT wxDC; - friend class WXDLLEXPORT wxWindowDC; - -public: - wxWindow(); - inline wxWindow(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = wxPanelNameStr) - { - m_children = new wxList; - Create(parent, id, pos, size, style, name); - } - - virtual ~wxWindow(); - - bool Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = wxPanelNameStr); - - // Fit the window around the items - virtual void Fit(); - - // Show or hide the window - virtual bool Show(bool show); - - // Is the window shown? - virtual bool IsShown() const; - - // Raise the window to the top of the Z order - virtual void Raise(); - - // Lower the window to the bottom of the Z order - virtual void Lower(); - - // Is the window enabled? - virtual bool IsEnabled() const; - - // For compatibility - inline bool Enabled() const { return IsEnabled(); } - - // Dialog support: override these and call - // base class members to add functionality - // that can't be done using validators. - - // Transfer values to controls. If returns FALSE, - // it's an application error (pops up a dialog) - virtual bool TransferDataToWindow(); - - // Transfer values from controls. If returns FALSE, - // transfer failed: don't quit - virtual bool TransferDataFromWindow(); - - // Validate controls. If returns FALSE, - // validation failed: don't quit - virtual bool Validate(); - - // Return code for dialogs - inline void SetReturnCode(int retCode); - inline int GetReturnCode(); - - // Set the cursor - virtual void SetCursor(const wxCursor& cursor); - inline virtual wxCursor *GetCursor() const { return (wxCursor *)& m_windowCursor; }; - - // Get the window with the focus - static wxWindow *FindFocus(); - - // Get character size - virtual int GetCharHeight() const; - virtual int GetCharWidth() const; - - // Get overall window size - virtual void GetSize(int *width, int *height) const; - virtual wxSize GetSize() const { int w, h; GetSize(& w, & h); return wxSize(w, h); } - virtual wxRect GetRect() const { int w, h; int x, y; GetPosition(& x, & y); GetSize(& w, & h); return wxRect(x, y, w, h); } - - // Get window position, relative to parent (or screen if no parent) - virtual void GetPosition(int *x, int *y) const; - virtual wxPoint GetPosition() const { int x, y; GetPosition(&x, &y); return wxPoint(x, y); } - - // Get client (application-useable) size - virtual void GetClientSize(int *width, int *height) const; - virtual wxSize GetClientSize() const { int w, h; GetClientSize(& w, & h); return wxSize(w, h); } - - // Set overall size and position - virtual void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - virtual void SetSize(int width, int height) { SetSize(-1, -1, width, height, wxSIZE_USE_EXISTING); } - virtual void SetSize(const wxRect& rect, int sizeFlags = wxSIZE_AUTO) - { SetSize(rect.x, rect.y, rect.width, rect.height, sizeFlags); } - virtual void SetSize(const wxSize& size) { SetSize(-1, -1, size.x, size.y, wxSIZE_USE_EXISTING); } - - virtual void Move(int x, int y) { SetSize(x, y, -1, -1, wxSIZE_USE_EXISTING); } - virtual void Move(const wxPoint& pt) { SetSize(pt.x, pt.y, -1, -1, wxSIZE_USE_EXISTING); } - - // Set client size - virtual void SetClientSize(int width, int size); - virtual void SetClientSize(const wxSize& sz) { SetClientSize(sz.x, sz.y); } - - // Convert client to screen coordinates - virtual void ClientToScreen(int *x, int *y) const; - virtual wxPoint ClientToScreen(const wxPoint& pt) const - { int x = pt.x; int y = pt.y; ClientToScreen(& x, & y); return wxPoint(x, y); } - - // Convert screen to client coordinates - virtual void ScreenToClient(int *x, int *y) const; - virtual wxPoint ScreenToClient(const wxPoint& pt) const - { int x = pt.x; int y = pt.y; ScreenToClient(& x, & y); return wxPoint(x, y); } - - // Set the focus to this window - virtual void SetFocus(); - - // Capture/release mouse - virtual void CaptureMouse(); - virtual void ReleaseMouse(); - - // Enable or disable the window - virtual void Enable(bool enable); - -#if wxUSE_DRAG_AND_DROP - // Associate a drop target with this window (if the window already had a drop - // target, it's deleted!) and return the current drop target (may be NULL). - void SetDropTarget(wxDropTarget *pDropTarget); - wxDropTarget *GetDropTarget() const { return m_pDropTarget; } -#endif - - // Accept files for dragging - virtual void DragAcceptFiles(bool accept); - - // Update region access - virtual wxRegion& GetUpdateRegion() const; - virtual bool IsExposed(int x, int y, int w, int h) const; - virtual bool IsExposed(const wxPoint& pt) const; - virtual bool IsExposed(const wxRect& rect) const; - - // Set/get the window title - virtual inline void SetTitle(const wxString& WXUNUSED(title)) {}; - inline virtual wxString GetTitle() const { return wxString(""); }; - // Most windows have the concept of a label; for frames, this is the - // title; for items, this is the label or button text. - inline virtual wxString GetLabel() const { return GetTitle(); } - - // Set/get the window name (used for resource setting in X) - inline virtual wxString GetName() const; - inline virtual void SetName(const wxString& name); - - // Centre the window - virtual void Centre(int direction) ; - inline void Center(int direction = wxHORIZONTAL) { Centre(direction); } - - // Popup a menu - virtual bool PopupMenu(wxMenu *menu, int x, int y); - - // Send the window a refresh event - virtual void Refresh(bool eraseBack = TRUE, const wxRect *rect = NULL); - - // New functions that will replace the above. - virtual void SetScrollbar(int orient, int pos, int thumbVisible, - int range, bool refresh = TRUE); - - // Helper functions for Motif - void CreateScrollbar(int orientation); - void DestroyScrollbar(int orientation); - - virtual void SetScrollPos(int orient, int pos, bool refresh = TRUE); - virtual int GetScrollPos(int orient) const; - virtual int GetScrollRange(int orient) const; - virtual int GetScrollThumb(int orient) const; - - virtual void ScrollWindow(int dx, int dy, const wxRect *rect = NULL); - - // Caret manipulation - virtual void CreateCaret(int w, int h); - virtual void CreateCaret(const wxBitmap *bitmap); - virtual void DestroyCaret(); - virtual void ShowCaret(bool show); - virtual void SetCaretPos(int x, int y); - virtual void GetCaretPos(int *x, int *y) const; - - // Tell window how much it can be sized - virtual void SetSizeHints(int minW = -1, int minH = -1, int maxW = -1, int maxH = -1, int incW = -1, int incH = -1); - - // Set/get the window's identifier - inline int GetId() const; - inline void SetId(int id); - - virtual void SetAcceleratorTable(const wxAcceleratorTable& accel); - inline virtual wxAcceleratorTable& GetAcceleratorTable() const { return (wxAcceleratorTable&) m_acceleratorTable; } - - // Make the window modal (all other windows unresponsive) - virtual void MakeModal(bool modal); - - // Get the private handle (platform-dependent) - inline void *GetHandle() const; - - // Set/get the window's relatives - inline wxWindow *GetParent() const; - inline void SetParent(wxWindow *p) ; - inline wxWindow *GetGrandParent() const; - inline wxList& GetChildren() const; - // Reparents this window to have the new parent. - virtual bool Reparent(wxWindow* parent); - - // Set/get the window's font - virtual void SetFont(const wxFont& f); - inline virtual wxFont& GetFont() const; - - // Set/get the window's validator - void SetValidator(const wxValidator& validator); - inline wxValidator *GetValidator() const; - - virtual void SetClientObject( wxClientData *data ); - virtual wxClientData *GetClientObject(); - - virtual void SetClientData( void *data ); - virtual void *GetClientData(); - - // Set/get the window's style - inline void SetWindowStyleFlag(long flag); - inline long GetWindowStyleFlag() const; - - // Handle a control command - virtual void OnCommand(wxWindow& win, wxCommandEvent& event); - - // Set/get event handler - inline void SetEventHandler(wxEvtHandler *handler); - inline wxEvtHandler *GetEventHandler() const; - - // Push/pop event handler (i.e. allow a chain of event handlers - // be searched) - void PushEventHandler(wxEvtHandler *handler) ; - wxEvtHandler *PopEventHandler(bool deleteHandler = FALSE) ; - - // Close the window by calling OnClose, posting a deletion - virtual bool Close(bool force = FALSE); - - // Destroy the window (delayed, if a managed window) - virtual bool Destroy() ; - - // Mode for telling default OnSize members to - // call Layout(), if not using Sizers, just top-down constraints - inline void SetAutoLayout(bool a); - inline bool GetAutoLayout() const; - - // Set/get constraints - inline wxLayoutConstraints *GetConstraints() const; - void SetConstraints(wxLayoutConstraints *c); - - // Set/get window background colour - virtual void SetBackgroundColour(const wxColour& col); - inline virtual wxColour GetBackgroundColour() const; - - // Set/get window foreground colour - virtual void SetForegroundColour(const wxColour& col); - inline virtual wxColour GetForegroundColour() const; - - // Get the default button, if there is one - inline virtual wxButton *GetDefaultItem() const; - inline virtual void SetDefaultItem(wxButton *but); - - // Override to define new behaviour for default action (e.g. double clicking - // on a listbox) - virtual void OnDefaultAction(wxControl *initiatingItem); - - // Resource loading -#if wxUSE_WX_RESOURCES - virtual bool LoadFromResource(wxWindow *parent, const wxString& resourceName, const wxResourceTable *table = NULL); - virtual wxControl *CreateItem(const wxItemResource* childResource, const wxItemResource* parentResource, - const wxResourceTable *table = (const wxResourceTable *) NULL); -#endif - - virtual void GetTextExtent(const wxString& string, int *x, int *y, - int *descent = NULL, - int *externalLeading = NULL, - const wxFont *theFont = NULL, bool use16 = FALSE) const; - - // Is the window retained? - inline bool IsRetained() const; - - // Warp the pointer the given position - virtual void WarpPointer(int x_pos, int y_pos) ; - - // Clear the window - virtual void Clear(); - - // Find a window by id or name - virtual wxWindow *FindWindow(long id); - virtual wxWindow *FindWindow(const wxString& name); - - // Constraint operations - bool Layout(); - void SetSizer(wxSizer *sizer); // Adds sizer child to this window - inline wxSizer *GetSizer() const ; - inline wxWindow *GetSizerParent() const ; - inline void SetSizerParent(wxWindow *win); - - // Do Update UI processing for controls - void UpdateWindowUI(); - - void OnEraseBackground(wxEraseEvent& event); - void OnChar(wxKeyEvent& event); - void OnKeyDown(wxKeyEvent& event); - void OnKeyUp(wxKeyEvent& event); - void OnPaint(wxPaintEvent& event); - void OnIdle(wxIdleEvent& event); - - // Does this window want to accept keyboard focus? - virtual bool AcceptsFocus() const; - - virtual void PrepareDC( wxDC & WXUNUSED(dc) ) {}; - - -public: - //////////////////////////////////////////////////////////////////////// - //// IMPLEMENTATION - - // For implementation purposes - sometimes decorations make the client area - // smaller - virtual wxPoint GetClientAreaOrigin() const; - - // Makes an adjustment to the window position (for example, a frame that has - // a toolbar that it manages itself). - virtual void AdjustForParentClientOrigin(int& x, int& y, int sizeFlags); - - // Executes the default message - virtual long Default(); - -/* TODO: you may need something like this - // Determine whether 3D effects are wanted - virtual WXDWORD Determine3DEffects(WXDWORD defaultBorderStyle, bool *want3D); -*/ - - virtual void AddChild(wxWindow *child); // Adds reference to the child object - virtual void RemoveChild(wxWindow *child); // Removes reference to child - // (but doesn't delete the child object) - virtual void DestroyChildren(); // Removes and destroys all children - - inline bool IsBeingDeleted() const { return FALSE; } // TODO: Should probably eliminate this - - // Constraint implementation - void UnsetConstraints(wxLayoutConstraints *c); - inline wxList *GetConstraintsInvolvedIn() const ; - // Back-pointer to other windows we're involved with, so if we delete - // this window, we must delete any constraints we're involved with. - void AddConstraintReference(wxWindow *otherWin); - void RemoveConstraintReference(wxWindow *otherWin); - void DeleteRelatedConstraints(); - - virtual void ResetConstraints(); - virtual void SetConstraintSizes(bool recurse = TRUE); - virtual bool LayoutPhase1(int *noChanges); - virtual bool LayoutPhase2(int *noChanges); - virtual bool DoPhase(int); - // Transforms from sizer coordinate space to actual - // parent coordinate space - virtual void TransformSizerToActual(int *x, int *y) const ; - - // Set size with transformation to actual coordinates if nec. - virtual void SizerSetSize(int x, int y, int w, int h); - virtual void SizerMove(int x, int y); - - // Only set/get the size/position of the constraint (if any) - virtual void SetSizeConstraint(int x, int y, int w, int h); - virtual void MoveConstraint(int x, int y); - virtual void GetSizeConstraint(int *w, int *h) const ; - virtual void GetClientSizeConstraint(int *w, int *h) const ; - virtual void GetPositionConstraint(int *x, int *y) const ; - - // Dialog units translations. Implemented in wincmn.cpp. - wxPoint ConvertPixelsToDialog(const wxPoint& pt) ; - wxPoint ConvertDialogToPixels(const wxPoint& pt) ; - inline wxSize ConvertPixelsToDialog(const wxSize& sz) - { wxPoint pt(ConvertPixelsToDialog(wxPoint(sz.x, sz.y))); return wxSize(pt.x, pt.y); } - inline wxSize ConvertDialogToPixels(const wxSize& sz) - { wxPoint pt(ConvertDialogToPixels(wxPoint(sz.x, sz.y))); return wxSize(pt.x, pt.y); } - - wxObject *GetChild(int number) const ; - - // Generates a new id for controls - static int NewControlId(); - - // Responds to colour changes: passes event on to children. - void OnSysColourChanged(wxSysColourChangedEvent& event); - - // Transfers data to any child controls - void OnInitDialog(wxInitDialogEvent& event); - - // Sends an OnInitDialog event, which in turns transfers data to - // to the window via validators. - virtual void InitDialog(); - - /// Motif-specific - - void ClearUpdateRects(); - void CanvasGetSize(int* width, int* height) const; // If have drawing area - void CanvasGetClientSize(int *width, int *height) const; - void CanvasGetPosition(int *x, int *y) const; // If have drawing area - void CanvasSetClientSize(int width, int size); - void CanvasSetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - - // Gives window a chance to do something in response to a size - // message, e.g. arrange status bar, toolbar etc. - virtual bool PreResize() { return TRUE; } - - // Get main widget for this window, e.g. a text widget - virtual WXWidget GetMainWidget() const; - // Get the widget that corresponds to the label (for font setting, label setting etc.) - virtual WXWidget GetLabelWidget() const { return GetMainWidget(); } - // Get the client widget for this window (something we can - // create other windows on) - virtual WXWidget GetClientWidget() const; - // Get the top widget for this window, e.g. the scrolled widget parent - // of a multi-line text widget. Top means, top in the window hierarchy - // that implements this window. - virtual WXWidget GetTopWidget() const; - virtual void SetMainWidget(WXWidget w) { m_mainWidget = w; } - bool CanAddEventHandler() const { return m_canAddEventHandler; } - void SetCanAddEventHandler(bool flag) { m_canAddEventHandler = flag; } - - // Get the underlying X window and display - virtual WXWindow GetXWindow() const; - virtual WXDisplay *GetXDisplay() const; - - virtual WXPixmap GetBackingPixmap() const { return m_backingPixmap; } - inline int GetPixmapWidth() const { return m_pixmapWidth; } - inline int GetPixmapHeight() const { return m_pixmapHeight; } - - // Change properties - virtual void ChangeFont(bool keepOriginalSize = TRUE); // Change to the current font (often overridden) - virtual void DoChangeForegroundColour(WXWidget widget, wxColour& foregroundColour); - virtual void DoChangeBackgroundColour(WXWidget widget, wxColour& backgroundColour, bool changeArmColour = FALSE); - // These to be overridden as needed (may change several widgets) - virtual void ChangeBackgroundColour(); // Change background and foreground colour using current - // background colour setting (Motif generates - // foreground based on background) - virtual void ChangeForegroundColour(); // Change foreground colour using current - // foreground colour setting - - // Adds the widget to the hash table and adds event handlers. - bool AttachWidget (wxWindow* parent, WXWidget mainWidget, - WXWidget formWidget, int x, int y, int width, int height); - bool DetachWidget(WXWidget widget); - - // Generates a paint event - virtual void DoPaint(); - - // How to implement accelerators. If we find a key event, - // translate to wxWindows wxKeyEvent form. Find a widget for the window. - // Now find a wxWindow for the widget. If there isn't one, go up the widget hierarchy - // trying to find one. Once one is found, call ProcessAccelerator for the - // window. If it returns TRUE (processed the event), skip the X event, - // otherwise carry on up the wxWindows window hierarchy calling ProcessAccelerator. - // If all return FALSE, process the X event as normal. - // Eventually we can implement OnCharHook the same way, but concentrate on accelerators - // for now. - // ProcessAccelerator must look at the current accelerator table, and try to find - // what menu id or window (beneath it) has this ID. Then construct an appropriate command - // event and send it. - virtual bool ProcessAccelerator(wxKeyEvent& event); - - //////////////////////////////////////////////////////////////////////// - //// PROTECTED DATA -protected: - int m_windowId; - long m_windowStyle; // Store the window's style - wxEvtHandler * m_windowEventHandler; // Usually is 'this' - wxLayoutConstraints * m_constraints; // Constraints for this window - wxList * m_constraintsInvolvedIn; // List of constraints we're involved in - wxSizer * m_windowSizer; // Window's top-level sizer (if any) - wxWindow * m_sizerParent; // Window's parent sizer (if any) - bool m_autoLayout; // Whether to call Layout() in OnSize - wxWindow * m_windowParent; // Each window always knows its parent - wxValidator * m_windowValidator; - int m_minSizeX; - int m_minSizeY; - int m_maxSizeX; - int m_maxSizeY; - - // Caret data - int m_caretWidth; - int m_caretHeight; - bool m_caretEnabled; - bool m_caretShown; - wxFont m_windowFont; // Window's font - wxCursor m_windowCursor; // Window's cursor - wxString m_windowName; // Window name - - wxButton * m_defaultItem; - - wxColour m_backgroundColour ; - wxColour m_foregroundColour ; - wxAcceleratorTable m_acceleratorTable; - wxClientData* m_clientObject; - void* m_clientData; - -#if wxUSE_DRAG_AND_DROP - wxDropTarget *m_pDropTarget; // the current drop target or NULL -#endif //USE_DRAG_AND_DROP - -public: - wxRegion m_updateRegion; - wxList * m_children; // Window's children - int m_returnCode; - -public: - /// Motif-specific - bool m_canAddEventHandler; - bool m_button1Pressed; - bool m_button2Pressed; - bool m_button3Pressed; - // For double-click detection - long m_lastTS; // last timestamp - int m_lastButton; // last pressed button - wxList m_updateRects; // List of wxRects representing damaged region - bool m_isShown; -protected: - WXWidget m_mainWidget; - WXWidget m_hScrollBar; - WXWidget m_vScrollBar; - WXWidget m_borderWidget; - WXWidget m_scrolledWindow; - WXWidget m_drawingArea; - bool m_winCaptured; - bool m_hScroll; - bool m_vScroll; - WXPixmap m_backingPixmap; - int m_pixmapWidth; - int m_pixmapHeight; - int m_pixmapOffsetX; - int m_pixmapOffsetY; - int m_scrollPosX; // Store the last scroll pos, - int m_scrollPosY; // since in wxWin the pos isn't - // set automatically by system - -DECLARE_EVENT_TABLE() -}; - -//////////////////////////////////////////////////////////////////////// -//// INLINES - -inline void *wxWindow::GetHandle() const { return (void *)NULL; } -inline int wxWindow::GetId() const { return m_windowId; } -inline void wxWindow::SetId(int id) { m_windowId = id; } -inline wxWindow *wxWindow::GetParent() const { return m_windowParent; } -inline void wxWindow::SetParent(wxWindow *p) { m_windowParent = p; } -inline wxWindow *wxWindow::GetGrandParent() const { return (m_windowParent ? m_windowParent->m_windowParent : (wxWindow*) NULL); } -inline wxList& wxWindow::GetChildren() const { return (wxList&) * m_children; } -inline wxFont& wxWindow::GetFont() const { return (wxFont&) m_windowFont; } -inline wxString wxWindow::GetName() const { return m_windowName; } -inline void wxWindow::SetName(const wxString& name) { m_windowName = name; } -inline long wxWindow::GetWindowStyleFlag() const { return m_windowStyle; } -inline void wxWindow::SetWindowStyleFlag(long flag) { m_windowStyle = flag; } -inline void wxWindow::SetEventHandler(wxEvtHandler *handler) { m_windowEventHandler = handler; } -inline wxEvtHandler *wxWindow::GetEventHandler() const { return m_windowEventHandler; } -inline void wxWindow::SetAutoLayout(bool a) { m_autoLayout = a; } -inline bool wxWindow::GetAutoLayout() const { return m_autoLayout; } -inline wxLayoutConstraints *wxWindow::GetConstraints() const { return m_constraints; } -inline wxColour wxWindow::GetBackgroundColour() const { return m_backgroundColour; }; -inline wxColour wxWindow::GetForegroundColour() const { return m_foregroundColour; }; - -inline wxButton *wxWindow::GetDefaultItem() const { return m_defaultItem; } -inline void wxWindow::SetDefaultItem(wxButton *but) { m_defaultItem = but; } -inline bool wxWindow::IsRetained() const { return ((m_windowStyle & wxRETAINED) == wxRETAINED); } - -inline wxList *wxWindow::GetConstraintsInvolvedIn() const { return m_constraintsInvolvedIn; } -inline wxSizer *wxWindow::GetSizer() const { return m_windowSizer; } -inline wxWindow *wxWindow::GetSizerParent() const { return m_sizerParent; } -inline void wxWindow::SetSizerParent(wxWindow *win) { m_sizerParent = win; } -inline wxValidator *wxWindow::GetValidator() const { return m_windowValidator; } -inline void wxWindow::SetReturnCode(int retCode) { m_returnCode = retCode; } -inline int wxWindow::GetReturnCode() { return m_returnCode; } - -// Get the active window. -wxWindow* WXDLLEXPORT wxGetActiveWindow(); - -WXDLLEXPORT_DATA(extern wxList) wxTopLevelWindows; - -// A little class to switch off size optimization while an instance of the object -// exists -class WXDLLEXPORT wxNoOptimize: public wxObject -{ -public: - wxNoOptimize(); - ~wxNoOptimize(); - - static bool CanOptimize(); - -protected: - static int m_count; -}; - -#endif - // _WX_WINDOW_H_ diff --git a/include/wx/msgdlg.h b/include/wx/msgdlg.h deleted file mode 100644 index e0f80d630c..0000000000 --- a/include/wx/msgdlg.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef _WX_MSGDLG_H_BASE_ -#define _WX_MSGDLG_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/msgdlg.h" -#elif defined(__WXMOTIF__) -#include "wx/generic/msgdlgg.h" -#elif defined(__WXGTK__) -#include "wx/generic/msgdlgg.h" -#elif defined(__WXQT__) -#include "wx/generic/msgdlgg.h" -#elif defined(__WXMAC__) -#include "wx/mac/msgdlg.h" -#elif defined(__WXSTUBS__) -#include "wx/generic/msgdlgg.h" -#endif - -#endif - // _WX_MSGDLG_H_BASE_ diff --git a/include/wx/mstream.h b/include/wx/mstream.h deleted file mode 100644 index c25fc94a85..0000000000 --- a/include/wx/mstream.h +++ /dev/null @@ -1,36 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: mstream.h -// Purpose: Memory stream classes -// Author: Guilhem Lavaux -// Modified by: -// Created: 11/07/98 -// RCS-ID: $Id$ -// Copyright: (c) Guilhem Lavaux -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// -#ifndef _WX_WXMMSTREAM_H__ -#define _WX_WXMMSTREAM_H__ - -#include - -class wxMemoryInputStream: public wxInputStream { - public: - wxMemoryInputStream(const char *data, size_t length); - virtual ~wxMemoryInputStream(); - - char Peek(); -}; - -class wxMemoryOutputStream: public wxOutputStream { - public: - wxMemoryOutputStream(char *data = NULL, size_t length = 0); - virtual ~wxMemoryOutputStream(); -}; - -class wxMemoryStream: public wxMemoryInputStream, public wxMemoryOutputStream { - public: - wxMemoryStream(char *data = NULL, size_t length = 0); - virtual ~wxMemoryStream(); -}; - -#endif diff --git a/include/wx/msw/accel.h b/include/wx/msw/accel.h deleted file mode 100644 index af0a7ca0e7..0000000000 --- a/include/wx/msw/accel.h +++ /dev/null @@ -1,81 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: accel.h -// Purpose: wxAcceleratorTable class -// Author: Julian Smart -// Modified by: -// Created: 31/7/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_ACCEL_H_ -#define _WX_ACCEL_H_ - -#ifdef __GNUG__ -#pragma interface "accel.h" -#endif - -#include "wx/object.h" - -class WXDLLEXPORT wxAcceleratorTable; - -// Hold Ctrl key down -#define wxACCEL_ALT 0x01 - -// Hold Ctrl key down -#define wxACCEL_CTRL 0x02 - - // Hold Shift key down -#define wxACCEL_SHIFT 0x04 - - // Hold no other key -#define wxACCEL_NORMAL 0x00 - -class WXDLLEXPORT wxAcceleratorEntry -{ -public: - wxAcceleratorEntry(int flags = 0, int keyCode = 0, int cmd = 0) - { - m_flags = flags; m_keyCode = keyCode; m_command = cmd; - } - - inline void Set(int flags, int keyCode, int cmd) - { m_flags = flags; m_keyCode = keyCode; m_command = cmd; } - - inline int GetFlags() const { return m_flags; } - inline int GetKeyCode() const { return m_keyCode; } - inline int GetCommand() const { return m_command; } - - int m_flags; - int m_keyCode; // ASCII or virtual keycode - int m_command; // Command id to generate -}; - -class WXDLLEXPORT wxAcceleratorTable: public wxObject -{ -DECLARE_DYNAMIC_CLASS(wxAcceleratorTable) -public: - wxAcceleratorTable(); - wxAcceleratorTable(const wxString& resource); // Load from .rc resource - wxAcceleratorTable(int n, const wxAcceleratorEntry entries[]); // Load from array - - // Copy constructors - inline wxAcceleratorTable(const wxAcceleratorTable& accel) { Ref(accel); } - inline wxAcceleratorTable(const wxAcceleratorTable* accel) { if (accel) Ref(*accel); } - - ~wxAcceleratorTable(); - - inline wxAcceleratorTable& operator = (const wxAcceleratorTable& accel) { if (*this == accel) return (*this); Ref(accel); return *this; } - inline bool operator == (const wxAcceleratorTable& accel) { return m_refData == accel.m_refData; } - inline bool operator != (const wxAcceleratorTable& accel) { return m_refData != accel.m_refData; } - - bool Ok(void) const; - void SetHACCEL(WXHACCEL hAccel); - WXHACCEL GetHACCEL() const; -}; - -WXDLLEXPORT_DATA(extern wxAcceleratorTable) wxNullAcceleratorTable; - -#endif - // _WX_ACCEL_H_ diff --git a/include/wx/msw/app.h b/include/wx/msw/app.h deleted file mode 100644 index f299a952ea..0000000000 --- a/include/wx/msw/app.h +++ /dev/null @@ -1,168 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: app.h -// Purpose: wxApp class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_APP_H_ -#define _WX_APP_H_ - -#ifdef __GNUG__ -#pragma interface "app.h" -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/event.h" - -class WXDLLEXPORT wxFrame; -class WXDLLEXPORT wxWindow; -class WXDLLEXPORT wxApp ; -class WXDLLEXPORT wxKeyEvent; -class WXDLLEXPORT wxLog; - -#define wxPRINT_WINDOWS 1 -#define wxPRINT_POSTSCRIPT 2 - -WXDLLEXPORT_DATA(extern wxApp*) wxTheApp; - -// Force an exit from main loop -void WXDLLEXPORT wxExit(); - -// Yield to other apps/messages -bool WXDLLEXPORT wxYield(); - -// Represents the application. Derive OnInit and declare -// a new App object to start application -class WXDLLEXPORT wxApp: public wxEvtHandler -{ - DECLARE_DYNAMIC_CLASS(wxApp) - wxApp(); - ~wxApp(); - - static void SetInitializerFunction(wxAppInitializerFunction fn) { m_appInitFn = fn; } - static wxAppInitializerFunction GetInitializerFunction() { return m_appInitFn; } - - virtual int MainLoop(); - void ExitMainLoop(); - bool Initialized(); - virtual bool Pending() ; - virtual void Dispatch() ; - - void OnIdle(wxIdleEvent& event); - void OnEndSession(wxCloseEvent& event); - void OnQueryEndSession(wxCloseEvent& event); - - // Generic - virtual bool OnInit() { return FALSE; }; - - // No specific tasks to do here. - virtual bool OnInitGui() { return TRUE; } - - // Called to set off the main loop - virtual int OnRun() { return MainLoop(); }; - virtual int OnExit() { return 0; } - - // called when a fatal exception occurs, this function should take care not - // to do anything which might provoke a nested exception! - virtual void OnFatalException() { } - - inline void SetPrintMode(int mode) { m_printMode = mode; } - inline int GetPrintMode() const { return m_printMode; } - - inline void SetExitOnFrameDelete(bool flag) { m_exitOnFrameDelete = flag; } - inline bool GetExitOnFrameDelete() const { return m_exitOnFrameDelete; } - - inline wxString GetAppName() const { - if (m_appName != "") - return m_appName; - else return m_className; - } - - inline void SetAppName(const wxString& name) { m_appName = name; }; - inline wxString GetClassName() const { return m_className; } - inline void SetClassName(const wxString& name) { m_className = name; } - - void SetVendorName(const wxString& vendorName) { m_vendorName = vendorName; } - const wxString& GetVendorName() const { return m_vendorName; } - - wxWindow *GetTopWindow() const ; - inline void SetTopWindow(wxWindow *win) { m_topWindow = win; } - - inline void SetWantDebugOutput(bool flag) { m_wantDebugOutput = flag; } - inline bool GetWantDebugOutput() { return m_wantDebugOutput; } - - // Send idle event to all top-level windows. - // Returns TRUE if more idle time is requested. - bool SendIdleEvents(); - - // Send idle event to window and all subwindows - // Returns TRUE if more idle time is requested. - bool SendIdleEvents(wxWindow* win); - - inline void SetAuto3D(bool flag) { m_auto3D = flag; } - inline bool GetAuto3D() const { return m_auto3D; } - - // Creates a log object - virtual wxLog* CreateLogTarget(); - -public: -// void (*work_proc)(wxApp*app); // work procedure; - int argc; - char ** argv; - -protected: - bool m_wantDebugOutput ; - wxString m_className; - wxString m_appName, - m_vendorName; - wxWindow * m_topWindow; - bool m_exitOnFrameDelete; - bool m_showOnInit; - int m_printMode; // wxPRINT_WINDOWS, wxPRINT_POSTSCRIPT - bool m_auto3D ; // Always use 3D controls, except - // where overriden - static wxAppInitializerFunction m_appInitFn; - -/* Windows-specific wxApp definitions */ - -public: - - // Implementation - static bool Initialize(); - static void CleanUp(); - - static bool RegisterWindowClasses(); - // Convert Windows to argc, argv style - void ConvertToStandardCommandArgs(char* p); - virtual bool DoMessage(); - virtual bool ProcessMessage(WXMSG* pMsg); - void DeletePendingObjects(); - bool ProcessIdle(); - int GetComCtl32Version() const; - -public: - static long sm_lastMessageTime; - int m_nCmdShow; - -protected: - bool m_keepGoing ; - -DECLARE_EVENT_TABLE() -}; - -#if !defined(_WINDLL) || (defined(_WINDLL) && defined(WXMAKINGDLL)) -int WXDLLEXPORT wxEntry(WXHINSTANCE hInstance, WXHINSTANCE hPrevInstance, char *lpszCmdLine, - int nCmdShow, bool enterLoop = TRUE); -#else -int WXDLLEXPORT wxEntry(WXHINSTANCE hInstance); -#endif - -#endif - // _WX_APP_H_ - diff --git a/include/wx/msw/bitmap.h b/include/wx/msw/bitmap.h deleted file mode 100644 index 94ac9fa3fe..0000000000 --- a/include/wx/msw/bitmap.h +++ /dev/null @@ -1,214 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: bitmap.h -// Purpose: wxBitmap class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_BITMAP_H_ -#define _WX_BITMAP_H_ - -#ifdef __GNUG__ -#pragma interface "bitmap.h" -#endif - -#include "wx/gdiobj.h" -#include "wx/gdicmn.h" -#include "wx/palette.h" - -// Bitmap -class WXDLLEXPORT wxDC; -class WXDLLEXPORT wxControl; -class WXDLLEXPORT wxBitmap; -class WXDLLEXPORT wxBitmapHandler; -class WXDLLEXPORT wxIcon; -class WXDLLEXPORT wxCursor; - -// A mask is a mono bitmap used for drawing bitmaps -// transparently. -class WXDLLEXPORT wxMask: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxMask) - -public: - wxMask(void); - - // Construct a mask from a bitmap and a colour indicating - // the transparent area - wxMask(const wxBitmap& bitmap, const wxColour& colour); - - // Construct a mask from a bitmap and a palette index indicating - // the transparent area - wxMask(const wxBitmap& bitmap, int paletteIndex); - - // Construct a mask from a mono bitmap (copies the bitmap). - wxMask(const wxBitmap& bitmap); - - ~wxMask(void); - - bool Create(const wxBitmap& bitmap, const wxColour& colour); - bool Create(const wxBitmap& bitmap, int paletteIndex); - bool Create(const wxBitmap& bitmap); - - // Implementation - inline WXHBITMAP GetMaskBitmap(void) const { return m_maskBitmap; } - inline void SetMaskBitmap(WXHBITMAP bmp) { m_maskBitmap = bmp; } -protected: - WXHBITMAP m_maskBitmap; -}; - -class WXDLLEXPORT wxBitmapRefData: public wxGDIRefData -{ - friend class WXDLLEXPORT wxBitmap; - friend class WXDLLEXPORT wxIcon; - friend class WXDLLEXPORT wxCursor; -public: - wxBitmapRefData(void); - ~wxBitmapRefData(void); - -public: - int m_width; - int m_height; - int m_depth; - bool m_ok; - int m_numColors; - wxPalette m_bitmapPalette; - int m_quality; - -#ifdef __WXMSW__ - WXHBITMAP m_hBitmap; - wxDC * m_selectedInto; // So bitmap knows whether it's been selected into - // a device context (for error checking) - wxMask * m_bitmapMask; // Option mask -#endif -}; - -#define M_BITMAPDATA ((wxBitmapRefData *)m_refData) - -class WXDLLEXPORT wxBitmapHandler: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxBitmapHandler) -public: - wxBitmapHandler(void) { m_name = ""; m_extension = ""; m_type = 0; }; - - virtual bool Create(wxBitmap *bitmap, void *data, long flags, int width, int height, int depth = 1); - virtual bool LoadFile(wxBitmap *bitmap, const wxString& name, long flags, - int desiredWidth, int desiredHeight); - virtual bool SaveFile(wxBitmap *bitmap, const wxString& name, int type, const wxPalette *palette = NULL); - - inline void SetName(const wxString& name) { m_name = name; } - inline void SetExtension(const wxString& ext) { m_extension = ext; } - inline void SetType(long type) { m_type = type; } - inline wxString GetName(void) const { return m_name; } - inline wxString GetExtension(void) const { return m_extension; } - inline long GetType(void) const { return m_type; } -protected: - wxString m_name; - wxString m_extension; - long m_type; -}; -#define M_BITMAPHANDLERDATA ((wxBitmapRefData *)bitmap->GetRefData()) - -class WXDLLEXPORT wxBitmap: public wxGDIObject -{ - DECLARE_DYNAMIC_CLASS(wxBitmap) - - friend class WXDLLEXPORT wxBitmapHandler; - -public: - wxBitmap(void); // Platform-specific - - // Copy constructors - inline wxBitmap(const wxBitmap& bitmap) - { Ref(bitmap); if ( wxTheBitmapList ) wxTheBitmapList->AddBitmap(this); } - - // Initialize with raw data - wxBitmap(const char bits[], int width, int height, int depth = 1); - - class WXDLLEXPORT wxItem; - // Initialize with XPM data - wxBitmap(char **data, wxItem *anItem = NULL); - - // Load a file or resource - wxBitmap(const wxString& name, long type = wxBITMAP_TYPE_BMP_RESOURCE); - - // New constructor for generalised creation from data - wxBitmap(void *data, long type, int width, int height, int depth = 1); - - // If depth is omitted, will create a bitmap compatible with the display - wxBitmap(int width, int height, int depth = -1); - ~wxBitmap(void); - - virtual bool Create(int width, int height, int depth = -1); - virtual bool Create(void *data, long type, int width, int height, int depth = 1); - virtual bool LoadFile(const wxString& name, long type = wxBITMAP_TYPE_BMP_RESOURCE); - virtual bool SaveFile(const wxString& name, int type, const wxPalette *cmap = NULL); - - inline bool Ok(void) const { return (M_BITMAPDATA && M_BITMAPDATA->m_ok); } - inline int GetWidth(void) const { return (M_BITMAPDATA ? M_BITMAPDATA->m_width : 0); } - inline int GetHeight(void) const { return (M_BITMAPDATA ? M_BITMAPDATA->m_height : 0); } - inline int GetDepth(void) const { return (M_BITMAPDATA ? M_BITMAPDATA->m_depth : 0); } - inline int GetQuality(void) const { return (M_BITMAPDATA ? M_BITMAPDATA->m_quality : 0); } - void SetWidth(int w); - void SetHeight(int h); - void SetDepth(int d); - void SetQuality(int q); - void SetOk(bool isOk); -#if WXWIN_COMPATIBILITY - inline wxPalette *GetColourMap(void) const { return GetPalette(); } - void SetColourMap(wxPalette *cmap) { SetPalette(*cmap); }; -#endif - inline wxPalette* GetPalette(void) const { return (M_BITMAPDATA ? (& M_BITMAPDATA->m_bitmapPalette) : (wxPalette*) NULL); } - void SetPalette(const wxPalette& palette); - - inline wxMask *GetMask(void) const { return (M_BITMAPDATA ? M_BITMAPDATA->m_bitmapMask : (wxMask*) NULL); } - void SetMask(wxMask *mask) ; - - inline wxBitmap& operator = (const wxBitmap& bitmap) { if (*this == bitmap) return (*this); Ref(bitmap); return *this; } - - inline bool operator == (const wxBitmap& bitmap) { return m_refData == bitmap.m_refData; } - inline bool operator != (const wxBitmap& bitmap) { return m_refData != bitmap.m_refData; } - - // Format handling - static inline wxList& GetHandlers(void) { return sm_handlers; } - static void AddHandler(wxBitmapHandler *handler); - static void InsertHandler(wxBitmapHandler *handler); - static bool RemoveHandler(const wxString& name); - static wxBitmapHandler *FindHandler(const wxString& name); - static wxBitmapHandler *FindHandler(const wxString& extension, long bitmapType); - static wxBitmapHandler *FindHandler(long bitmapType); - - static void InitStandardHandlers(void); - static void CleanUpHandlers(void); -protected: - static wxList sm_handlers; - - // Implementation -public: - void SetHBITMAP(WXHBITMAP bmp); - inline WXHBITMAP GetHBITMAP(void) const { return (M_BITMAPDATA ? M_BITMAPDATA->m_hBitmap : 0); } - inline void SetSelectedInto(wxDC *dc) { if (M_BITMAPDATA) M_BITMAPDATA->m_selectedInto = dc; } - inline wxDC *GetSelectedInto(void) const { return (M_BITMAPDATA ? M_BITMAPDATA->m_selectedInto : (wxDC*) NULL); } - bool FreeResource(bool force = FALSE); - - // Creates a bitmap that matches the device context's depth, from - // an arbitray bitmap. At present, the original bitmap must have an - // associated palette. (TODO: use a default palette if no palette exists.) - // This function is necessary for you to Blit an arbitrary bitmap (which may have - // the wrong depth). wxDC::SelectObject will compare the depth of the bitmap - // with the DC's depth, and create a new bitmap if the depths differ. - // Eventually we should perhaps make this a public API function so that - // an app can efficiently produce bitmaps of the correct depth. - // The Windows solution is to use SetDibBits to blit an arbotrary DIB directly to a DC, but - // this is too Windows-specific, hence this solution of quietly converting the wxBitmap. - // Contributed by Frederic Villeneuve - wxBitmap GetBitmapForDC(wxDC& dc) const; - -}; - -#endif - // _WX_BITMAP_H_ diff --git a/include/wx/msw/blank.cur b/include/wx/msw/blank.cur deleted file mode 100644 index 048f06b4aefde54e0ff825ccb5a5db4d7001d513..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 326 zcmZQzU}9ioP*7k10|Q0|1~DK@1BexX*a3(cfe;L!6oi8y|NsAw;0zE8=!O9W0CiJ? AlK=n! diff --git a/include/wx/msw/bmpbuttn.h b/include/wx/msw/bmpbuttn.h deleted file mode 100644 index 956c9128f9..0000000000 --- a/include/wx/msw/bmpbuttn.h +++ /dev/null @@ -1,85 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: bmpbuttn.h -// Purpose: wxBitmapButton class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_BMPBUTTN_H_ -#define _WX_BMPBUTTN_H_ - -#ifdef __GNUG__ -#pragma interface "bmpbuttn.h" -#endif - -#include "wx/button.h" - -WXDLLEXPORT_DATA(extern const char*) wxButtonNameStr; - -#define wxDEFAULT_BUTTON_MARGIN 4 - -class WXDLLEXPORT wxBitmapButton: public wxButton -{ - DECLARE_DYNAMIC_CLASS(wxBitmapButton) - public: - inline wxBitmapButton(void) { m_marginX = wxDEFAULT_BUTTON_MARGIN; m_marginY = wxDEFAULT_BUTTON_MARGIN; } - inline wxBitmapButton(wxWindow *parent, wxWindowID id, const wxBitmap& bitmap, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = wxBU_AUTODRAW, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxButtonNameStr) - { - Create(parent, id, bitmap, pos, size, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, const wxBitmap& bitmap, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = wxBU_AUTODRAW, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxButtonNameStr); - - virtual void SetLabel(const wxBitmap& bitmap) - { - SetBitmapLabel(bitmap); - } - - virtual void SetBitmapLabel(const wxBitmap& bitmap); - -#if WXWIN_COMPATIBILITY - inline wxBitmap *GetBitmap(void) const { return (wxBitmap *) & m_buttonBitmap; } -#endif - - inline wxBitmap& GetBitmapLabel(void) const { return (wxBitmap&) m_buttonBitmap; } - inline wxBitmap& GetBitmapSelected(void) const { return (wxBitmap&) m_buttonBitmapSelected; } - inline wxBitmap& GetBitmapFocus(void) const { return (wxBitmap&) m_buttonBitmapFocus; } - inline wxBitmap& GetBitmapDisabled(void) const { return (wxBitmap&) m_buttonBitmapDisabled; } - - inline void SetBitmapSelected(const wxBitmap& sel) { m_buttonBitmapSelected = sel; }; - inline void SetBitmapFocus(const wxBitmap& focus) { m_buttonBitmapFocus = focus; }; - inline void SetBitmapDisabled(const wxBitmap& disabled) { m_buttonBitmapDisabled = disabled; }; - - inline void SetMargins(int x, int y) { m_marginX = x; m_marginY = y; } - inline int GetMarginX(void) { return m_marginX; } - inline int GetMarginY(void) { return m_marginY; } - - // Implementation - virtual bool MSWOnDraw(WXDRAWITEMSTRUCT *item); - virtual void DrawFace( WXHDC dc, int left, int top, int right, int bottom, bool sel ); - virtual void DrawButtonFocus( WXHDC dc, int left, int top, int right, int bottom, bool sel ); - virtual void DrawButtonDisable( WXHDC dc, int left, int top, int right, int bottom, bool with_marg ); - - protected: - wxBitmap m_buttonBitmap; - wxBitmap m_buttonBitmapSelected; - wxBitmap m_buttonBitmapFocus; - wxBitmap m_buttonBitmapDisabled; - int m_marginX; - int m_marginY; -}; - -#endif - // _WX_BMPBUTTN_H_ diff --git a/include/wx/msw/brush.h b/include/wx/msw/brush.h deleted file mode 100644 index 5805a69252..0000000000 --- a/include/wx/msw/brush.h +++ /dev/null @@ -1,78 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: brush.h -// Purpose: wxBrush class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_BRUSH_H_ -#define _WX_BRUSH_H_ - -#ifdef __GNUG__ -#pragma interface "brush.h" -#endif - -#include "wx/gdicmn.h" -#include "wx/gdiobj.h" -#include "wx/bitmap.h" - -class WXDLLEXPORT wxBrush; - -class WXDLLEXPORT wxBrushRefData: public wxGDIRefData -{ - friend class WXDLLEXPORT wxBrush; -public: - wxBrushRefData(void); - wxBrushRefData(const wxBrushRefData& data); - ~wxBrushRefData(void); - -protected: - int m_style; - wxBitmap m_stipple ; - wxColour m_colour; - WXHBRUSH m_hBrush; -}; - -#define M_BRUSHDATA ((wxBrushRefData *)m_refData) - -// Brush -class WXDLLEXPORT wxBrush: public wxGDIObject -{ - DECLARE_DYNAMIC_CLASS(wxBrush) - -public: - wxBrush(void); - wxBrush(const wxColour& col, int style); - wxBrush(const wxBitmap& stipple); - inline wxBrush(const wxBrush& brush) { Ref(brush); } - ~wxBrush(void); - - virtual void SetColour(const wxColour& col) ; - virtual void SetColour(unsigned char r, unsigned char g, unsigned char b) ; - virtual void SetStyle(int style) ; - virtual void SetStipple(const wxBitmap& stipple) ; - - inline wxBrush& operator = (const wxBrush& brush) { if (*this == brush) return (*this); Ref(brush); return *this; } - inline bool operator == (const wxBrush& brush) { return m_refData == brush.m_refData; } - inline bool operator != (const wxBrush& brush) { return m_refData != brush.m_refData; } - - inline wxColour& GetColour(void) const { return (M_BRUSHDATA ? M_BRUSHDATA->m_colour : wxNullColour); }; - inline int GetStyle(void) const { return (M_BRUSHDATA ? M_BRUSHDATA->m_style : 0); }; - inline wxBitmap *GetStipple(void) const { return (M_BRUSHDATA ? & M_BRUSHDATA->m_stipple : 0); }; - - virtual bool Ok(void) const { return (m_refData != NULL) ; } - - // Internal - bool RealizeResource(void); - WXHANDLE GetResourceHandle(void) ; - bool FreeResource(bool force = FALSE); - bool IsFree(void); - void Unshare(); -}; - -#endif - // _WX_BRUSH_H_ diff --git a/include/wx/msw/bullseye.cur b/include/wx/msw/bullseye.cur deleted file mode 100644 index 308c07d3325a0d7dc7b480cfd402abd7a25830f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 326 zcma)0u?@m75Ioa_0*O?#q@-j5Oc5~$5`$y`Bu2<6q+kyU1_+W1u!uPR5+qAdz`fq@ zyT5-M7{Q?^fT_jO0W$y#OOvp+bQV3{WgzJ!naHnO)&P?&kmvTm7})KB%?T*Wp^8ga zUq1Q&fc@bc*E!i_ -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -#ifndef __CHECKLST__H_ -#define __CHECKLST__H_ - -#ifdef __GNUG__ -#pragma interface "checklst.h" -#endif - -// No! -// typedef unsigned int size_t; -#include - -#if !wxUSE_OWNER_DRAWN - #error "wxCheckListBox class requires owner-drawn functionality." -#endif - -class wxCheckListBoxItem; // fwd decl, define in checklst.cpp - -class WXDLLEXPORT wxCheckListBox : public wxListBox -{ - DECLARE_DYNAMIC_CLASS(wxCheckListBox) -public: - // ctors - wxCheckListBox(); - wxCheckListBox(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - int nStrings = 0, - const wxString choices[] = NULL, - long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxListBoxNameStr); -// const wxFont& font = wxNullFont); - - // items may be checked - bool IsChecked(size_t uiIndex) const; - void Check(size_t uiIndex, bool bCheck = TRUE); - - // accessors - size_t GetItemHeight() const { return m_nItemHeight; } - -protected: - // we create our items ourselves and they have non-standard size, - // so we need to override these functions - virtual wxOwnerDrawn *CreateItem(size_t n); - virtual bool MSWOnMeasure(WXMEASUREITEMSTRUCT *item); - - // pressing space or clicking the check box toggles the item - void OnChar(wxKeyEvent& event); - void OnLeftClick(wxMouseEvent& event); - -private: - size_t m_nItemHeight; // height of checklistbox items (the same for all) - - DECLARE_EVENT_TABLE() -}; - -#endif //_CHECKLST_H diff --git a/include/wx/msw/child.ico b/include/wx/msw/child.ico deleted file mode 100644 index 00c8d8b8a4c243143ecca37973cbc13ea97484a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmchUJ#K_B5JqRCNGRTwoGLYCj*%nLZOak1r2%SJ^e*5AzCy~-Slqz-2D7YIiMGrK zV|e~N<3EuDPg%Z;>gPq|gYPF%5?{nYUTG2D-x@`DWgPQ|mS35sN$R@BNb4&p=^w$P zT{JQ4`{=WNbJI3$%>LkgoExMp-Va9~6>m)6oweSOId1unJjf&8$M5yXpPQKHXFjbT z<4kPpVSc#Xnf0OO#$+g?eSd8KsW=nWVq8{AHnS-AlC0H^#S{iEDoE^N7t>eRXJb=1 z2|dO!pr~95uvhLYY!^a0O)I+s+lAE0#%jCN!Gn$`8^7!H#@76^&e^5#c5!R{ijrDC i^O{{4>dU3a*WwHatd*Nyj8M@zy>r#Rzo&=s59SqGV?PG~ diff --git a/include/wx/msw/choice.h b/include/wx/msw/choice.h deleted file mode 100644 index c7518c79b8..0000000000 --- a/include/wx/msw/choice.h +++ /dev/null @@ -1,83 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: choice.h -// Purpose: wxChoice class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_CHOICE_H_ -#define _WX_CHOICE_H_ - -#ifdef __GNUG__ -#pragma interface "choice.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxChoiceNameStr; - -// Choice item -class WXDLLEXPORT wxChoice: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxChoice) - - public: - inline wxChoice(void) { m_noStrings = 0; } - - inline wxChoice(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = NULL, - long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxChoiceNameStr) - { - Create(parent, id, pos, size, n, choices, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = NULL, - long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxChoiceNameStr); - - virtual void Append(const wxString& item); - virtual void Delete(int n); - virtual void Clear(void); - virtual int GetSelection(void) const ; - virtual void SetSelection(int n); - virtual int FindString(const wxString& s) const; - virtual wxString GetString(int n) const ; - virtual void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - void SetSize(const wxRect& rect, int sizeFlags = wxSIZE_AUTO) - { wxWindow::SetSize(rect, sizeFlags); } - void SetSize(const wxSize& size) { wxWindow::SetSize(size); } - virtual wxString GetStringSelection(void) const ; - virtual bool SetStringSelection(const wxString& sel); - - virtual inline int Number(void) const { return m_noStrings; } - virtual void Command(wxCommandEvent& event); - - virtual bool MSWCommand(WXUINT param, WXWORD id); - - virtual inline void SetColumns(int WXUNUSED(n) = 1 ) { /* No effect */ } ; - virtual inline int GetColumns(void) const { return 1 ; }; - - virtual WXHBRUSH OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor, - WXUINT message, WXWPARAM wParam, WXLPARAM lParam); - - long MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam); - -protected: - int m_noStrings; - -}; - -#endif - // _WX_CHOICE_H_ diff --git a/include/wx/msw/clipbrd.h b/include/wx/msw/clipbrd.h deleted file mode 100644 index 9849af42eb..0000000000 --- a/include/wx/msw/clipbrd.h +++ /dev/null @@ -1,98 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: clipbrd.h -// Purpose: Clipboard functionality -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_CLIPBRD_H_ -#define _WX_CLIPBRD_H_ - -#ifdef __GNUG__ -#pragma interface "clipbrd.h" -#endif - -#include "wx/defs.h" -#include "wx/setup.h" - -#if wxUSE_CLIPBOARD - -#include "wx/list.h" -#include "wx/module.h" - -// These functions superceded by wxClipboard, but retained in order to implement -// wxClipboard, and for compatibility. -WXDLLEXPORT bool wxOpenClipboard(void); -WXDLLEXPORT bool wxClipboardOpen(void); -WXDLLEXPORT bool wxCloseClipboard(void); -WXDLLEXPORT bool wxEmptyClipboard(void); -WXDLLEXPORT bool wxIsClipboardFormatAvailable(wxDataFormat dataFormat); -WXDLLEXPORT bool wxSetClipboardData(wxDataFormat dataFormat, wxObject *obj, int width = 0, int height = 0); -WXDLLEXPORT wxObject* wxGetClipboardData(wxDataFormat dataFormat, long *len = NULL); -WXDLLEXPORT wxDataFormat wxEnumClipboardFormats(wxDataFormat dataFormat); -WXDLLEXPORT int wxRegisterClipboardFormat(char *formatName); -WXDLLEXPORT bool wxGetClipboardFormatName(wxDataFormat dataFormat, char *formatName, int maxCount); - -//----------------------------------------------------------------------------- -// wxClipboard -//----------------------------------------------------------------------------- - -class WXDLLEXPORT wxDataObject; -class WXDLLEXPORT wxClipboard: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxClipboard) - -public: - - wxClipboard(); - ~wxClipboard(); - - // open the clipboard before SetData() and GetData() - virtual bool Open(); - - // close the clipboard after SetData() and GetData() - virtual void Close(); - - // can be called several times - virtual bool SetData( wxDataObject *data ); - - // format available on the clipboard ? - // supply ID if private format, the same as wxPrivateDataObject::SetId() - virtual bool IsSupportedFormat( wxDataFormat format, const wxString &id = wxEmptyString ); - - // fill data with data on the clipboard (if available) - virtual bool GetData( wxDataObject *data ); - - // clears wxTheClipboard and the system's clipboard if possible - virtual void Clear(); - - // implementation - - bool m_open; - wxList m_data; -}; - -/* The clipboard */ -WXDLLEXPORT_DATA(extern wxClipboard*) wxTheClipboard; - -//----------------------------------------------------------------------------- -// wxClipboardModule -//----------------------------------------------------------------------------- - -class wxClipboardModule: public wxModule -{ - DECLARE_DYNAMIC_CLASS(wxClipboardModule) - -public: - wxClipboardModule() {} - bool OnInit(); - void OnExit(); -}; - -#endif // wxUSE_CLIPBOARD -#endif - // _WX_CLIPBRD_H_ diff --git a/include/wx/msw/clock.cur b/include/wx/msw/clock.cur deleted file mode 100644 index 6693b04d6b52ad5bcce3fb27f77ca16c88ddcb58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 326 zcmZ{fI}XAy5JV@WpbRv$rljNqgqu+0AfZczI08rD27r_zB_$mRN=ZRnAR;~> 8), - (unsigned char)(colRGB >> 16)); - } - - // accessors - bool Ok() const {return m_isInit; } - - // Let's remove this inelegant function -#if WXWIN_COMPATIBILITY - void Get(unsigned char *r, unsigned char *g, unsigned char *b) const; -#endif - - unsigned char Red() const { return m_red; } - unsigned char Green() const { return m_green; } - unsigned char Blue() const { return m_blue; } - - // comparison - bool operator == (const wxColour& colour) - { - return (m_red == colour.m_red && - m_green == colour.m_green && - m_blue == colour.m_blue); - } - bool operator != (const wxColour& colour) { return !(*this == colour); } - - WXCOLORREF GetPixel() const { return m_pixel; }; - -private: - bool m_isInit; - unsigned char m_red; - unsigned char m_blue; - unsigned char m_green; - - // helper func - void InitFromName(const wxString& colourName); - -public: - WXCOLORREF m_pixel ; - -private: - DECLARE_DYNAMIC_CLASS(wxColour) -}; - -#endif - // _WX_COLOUR_H_ diff --git a/include/wx/msw/combobox.h b/include/wx/msw/combobox.h deleted file mode 100644 index b3510ec208..0000000000 --- a/include/wx/msw/combobox.h +++ /dev/null @@ -1,83 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: combobox.h -// Purpose: wxComboBox class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_COMBOBOX_H_ -#define _WX_COMBOBOX_H_ - -#ifdef __GNUG__ -#pragma interface "combobox.h" -#endif - -#include "wx/choice.h" - -#if wxUSE_COMBOBOX - -WXDLLEXPORT_DATA(extern const char*) wxComboBoxNameStr; -WXDLLEXPORT_DATA(extern const char*) wxEmptyString; - -// Combobox item -class WXDLLEXPORT wxComboBox: public wxChoice -{ - DECLARE_DYNAMIC_CLASS(wxComboBox) - - public: - inline wxComboBox(void) {} - - inline wxComboBox(wxWindow *parent, wxWindowID id, - const wxString& value = wxEmptyString, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = NULL, - long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxComboBoxNameStr) - { - Create(parent, id, value, pos, size, n, choices, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - const wxString& value = wxEmptyString, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = NULL, - long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxComboBoxNameStr); - - // List functions: see wxChoice - - // Text field functions - virtual wxString GetValue(void) const ; - virtual void SetValue(const wxString& value); - - // Clipboard operations - virtual void Copy(void); - virtual void Cut(void); - virtual void Paste(void); - virtual void SetInsertionPoint(long pos); - virtual void SetInsertionPointEnd(void); - virtual long GetInsertionPoint(void) const ; - virtual long GetLastPosition(void) const ; - virtual void Replace(long from, long to, const wxString& value); - virtual void Remove(long from, long to); - virtual void SetSelection(int n) - { - wxChoice::SetSelection(n); - } - virtual void SetSelection(long from, long to); - virtual void SetEditable(bool editable); - - virtual bool MSWCommand(WXUINT param, WXWORD id); -}; - -#endif // wxUSE_COMBOBOX -#endif - // _WX_COMBOBOX_H_ diff --git a/include/wx/msw/control.h b/include/wx/msw/control.h deleted file mode 100644 index df1b339b8c..0000000000 --- a/include/wx/msw/control.h +++ /dev/null @@ -1,88 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: control.h -// Purpose: wxControl class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_CONTROL_H_ -#define _WX_CONTROL_H_ - -#ifdef __GNUG__ -#pragma interface "control.h" -#endif - -#include "wx/window.h" -#include "wx/list.h" -#include "wx/validate.h" - -// General item class -class WXDLLEXPORT wxControl: public wxWindow -{ - DECLARE_ABSTRACT_CLASS(wxControl) -public: - wxControl(void); - ~wxControl(void); - - virtual void Command(wxCommandEvent& WXUNUSED(event)) {}; // Simulates an event - virtual void ProcessCommand(wxCommandEvent& event); // Calls the callback and - // appropriate event handlers - virtual void SetClientSize(int width, int height); - virtual void SetClientSize(const wxSize& sz) { wxWindow::SetClientSize(sz); } - - virtual void SetLabel(const wxString& label); - virtual wxString GetLabel(void) const ; - -#if WXWIN_COMPATIBILITY - inline virtual void SetButtonColour(const wxColour& WXUNUSED(col)) { } - inline wxColour*GetButtonColour(void) const { return NULL; } - - inline virtual void SetLabelFont(const wxFont& font); - inline virtual void SetButtonFont(const wxFont& font); - inline wxFont& GetLabelFont(void) const ; - inline wxFont& GetButtonFont(void) const ; -#endif - - // Places item in centre of panel - so can't be used BEFORE panel->Fit() - void Centre(int direction = wxHORIZONTAL); - inline void Callback(const wxFunction function); // Adds callback - - // MSW-specific - - // Window procedure - virtual long MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam); - virtual void MSWOnMouseMove(int x, int y, WXUINT flags); - virtual bool MSWNotify(WXWPARAM wParam, WXLPARAM lParam, WXLPARAM *result); - - void OnEraseBackground(wxEraseEvent& event); - - // For ownerdraw items - virtual bool MSWOnDraw(WXDRAWITEMSTRUCT *WXUNUSED(item)) { return FALSE; }; - virtual bool MSWOnMeasure(WXMEASUREITEMSTRUCT *WXUNUSED(item)) { return FALSE; }; - - inline wxFunction GetCallback(void) { return m_callback; } - inline wxList& GetSubcontrols(void) { return m_subControls; } -protected: - wxFunction m_callback; // Callback associated with the window - - // MSW implementation - wxList m_subControls; // For controls like radiobuttons which are really composite - -DECLARE_EVENT_TABLE() -}; - -inline void wxControl::Callback(const wxFunction function) { m_callback = function; }; // Adds callback - -#if WXWIN_COMPATIBILITY -inline wxFont& wxControl::GetLabelFont(void) const { return GetFont() ; } -inline wxFont& wxControl::GetButtonFont(void) const { return GetFont() ; } -inline void wxControl::SetLabelFont(const wxFont& font) { SetFont(font); } -inline void wxControl::SetButtonFont(const wxFont& font) { SetFont(font); } -#endif - -#endif - // _WX_CONTROL_H_ diff --git a/include/wx/msw/ctl3d/ctl3d.h b/include/wx/msw/ctl3d/ctl3d.h deleted file mode 100644 index de7e67aa50..0000000000 --- a/include/wx/msw/ctl3d/ctl3d.h +++ /dev/null @@ -1,61 +0,0 @@ -/*----------------------------------------------------------------------- -| CTL3D.DLL -| -| Adds 3d effects to Windows controls -| -| See ctl3d.doc for info -| ------------------------------------------------------------------------*/ -#ifdef __cplusplus -extern "C" { -#endif - - -BOOL WINAPI Ctl3dSubclassDlg(HWND, WORD); -BOOL WINAPI Ctl3dSubclassDlgEx(HWND, DWORD); -WORD WINAPI Ctl3dGetVer(void); -BOOL WINAPI Ctl3dEnabled(void); -HBRUSH WINAPI Ctl3dCtlColor(HDC, LONG); // ARCHAIC, use Ctl3dCtlColorEx -HBRUSH WINAPI Ctl3dCtlColorEx(UINT wm, WPARAM wParam, LPARAM lParam); -BOOL WINAPI Ctl3dColorChange(void); -BOOL WINAPI Ctl3dSubclassCtl(HWND); -LONG WINAPI Ctl3dDlgFramePaint(HWND, UINT, WPARAM, LPARAM); - -BOOL WINAPI Ctl3dAutoSubclass(HANDLE); - -BOOL WINAPI Ctl3dRegister(HANDLE); -BOOL WINAPI Ctl3dUnregister(HANDLE); - -//begin DBCS: far east short cut key support -VOID WINAPI Ctl3dWinIniChange(void); -//end DBCS - - -/* Ctl3dSubclassDlg3d flags */ -#define CTL3D_BUTTONS 0x0001 -#define CTL3D_LISTBOXES 0x0002 -#define CTL3D_EDITS 0x0004 -#define CTL3D_COMBOS 0x0008 -#define CTL3D_STATICTEXTS 0x0010 -#define CTL3D_STATICFRAMES 0x0020 - -#define CTL3D_NODLGWINDOW 0x00010000 -#define CTL3D_ALL 0xffff - -#define WM_DLGBORDER (WM_USER+3567) -/* WM_DLGBORDER *(int FAR *)lParam return codes */ -#define CTL3D_NOBORDER 0 -#define CTL3D_BORDER 1 - -#define WM_DLGSUBCLASS (WM_USER+3568) -/* WM_DLGSUBCLASS *(int FAR *)lParam return codes */ -#define CTL3D_NOSUBCLASS 0 -#define CTL3D_SUBCLASS 1 - -/* Resource ID for 3dcheck.bmp (for .lib version of ctl3d) */ -#define CTL3D_3DCHECK 26567 - - -#ifdef __cplusplus -} -#endif diff --git a/include/wx/msw/curico.h b/include/wx/msw/curico.h deleted file mode 100644 index b85a39b194..0000000000 --- a/include/wx/msw/curico.h +++ /dev/null @@ -1,22 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: curico.h -// Purpose: Icon and cursor functions -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -HICON ReadIconFile( char *szFileName, HINSTANCE hInst, - int *W = 0, int *H = 0); -HCURSOR ReadCursorFile( char *szFileName, HINSTANCE hInst, - int *W = 0, int *H = 0, int *XHot = 0, int *YHot = 0); -HCURSOR IconToCursor( char *szFileName, HINSTANCE hInst, int XHot, int YHot, - int *W = 0, int *H = 0); -HICON CursorToIcon( char *szFileName, HINSTANCE hInst, - int *W = 0, int *H = 0); - -HCURSOR MakeCursorFromBitmap(HINSTANCE hInst, HBITMAP hBitmap, POINT *pPoint); -HICON MakeIconFromBitmap(HINSTANCE hInst, HBITMAP hBitmap); diff --git a/include/wx/msw/curicop.h b/include/wx/msw/curicop.h deleted file mode 100644 index 1ec5056e90..0000000000 --- a/include/wx/msw/curicop.h +++ /dev/null @@ -1,63 +0,0 @@ -// PRIVATE STUFF FOLLOWS UNTIL END - -// Header signatures for various resources -#define BFT_ICON 0x4349 /* 'IC' */ -#define BFT_BITMAP 0x4d42 /* 'BM' */ -#define BFT_CURSOR 0x5450 /* 'PT' */ - -// This WIDTHBYTES macro determines the number of BYTES per scan line. -#define WIDTHBYTES( i) ((i + 31) / 32 * 4) -#define IS_WIN30_DIB( lpbi) ((*(LPDWORD)( lpbi)) == sizeof( BITMAPINFOHEADER)) - -WORD DIBNumColors(LPSTR pv); -WORD PaletteSize(LPSTR lpbi); - - -struct tagCURFILEHEADER { WORD wReserved; // Always 0 - WORD wResourceType; // 2 = cursor - WORD wResourceCount; // Number of icons in the file - }; - -typedef struct tagCURFILEHEADER CURFILEHEADER; - -struct tagCURFILERES { - BYTE bWidth; // Width of image - BYTE bHeight; // Height of image - BYTE bColorCount; // Number of colors in image (2, 8, or 16) - BYTE bReserved1; // Reserved - WORD wXHotspot; // x coordinate of hotspot - WORD wYHotspot; // y coordinate of hotspot - DWORD dwDIBSize; // Size of DIB for this image - DWORD dwDIBOffset; // Offset to DIB for this image - }; - -typedef struct tagCURFILERES CURFILERES; - -HANDLE ReadCur( LPSTR szFileName, LPPOINT lpptHotSpot, int *W = 0, int *H = 0); -HBITMAP ColorDDBToMonoDDB( HBITMAP hbm); -HCURSOR MakeCursor( HANDLE hDIB, LPPOINT lpptHotSpot, HINSTANCE hInst); - -struct tagICONFILEHEADER { - WORD wReserved; // Always 0 - WORD wResourceType; // 1 = icon - WORD wResourceCount; // Number of icons in the file - }; - -typedef struct tagICONFILEHEADER ICONFILEHEADER; - -struct tagICONFILERES { - BYTE bWidth; // Width of image - BYTE bHeight; // Height of image - BYTE bColorCount; // Number of colors in image (2, 8, or 16) - BYTE bReserved1; // Reserved - WORD wReserved2; - WORD wReserved3; - DWORD dwDIBSize; // Size of DIB for this image - DWORD dwDIBOffset; // Offset to DIB for this image - }; - -typedef struct tagICONFILERES ICONFILERES; - -HANDLE ReadIcon( char *szFileName, int *W = 0, int *H = 0); -HICON MakeIcon( HANDLE hDIB, HINSTANCE hInst); - diff --git a/include/wx/msw/cursor.h b/include/wx/msw/cursor.h deleted file mode 100644 index d15f6fcb1a..0000000000 --- a/include/wx/msw/cursor.h +++ /dev/null @@ -1,68 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: cursor.h -// Purpose: wxCursor class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_CURSOR_H_ -#define _WX_CURSOR_H_ - -#ifdef __GNUG__ -#pragma interface "cursor.h" -#endif - -#include "wx/bitmap.h" - -class WXDLLEXPORT wxCursorRefData: public wxBitmapRefData -{ - friend class WXDLLEXPORT wxBitmap; - friend class WXDLLEXPORT wxCursor; -public: - wxCursorRefData(void); - ~wxCursorRefData(void); - -protected: - WXHCURSOR m_hCursor; - bool m_destroyCursor; -}; - -#define M_CURSORDATA ((wxCursorRefData *)m_refData) -#define M_CURSORHANDLERDATA ((wxCursorRefData *)bitmap->m_refData) - -// Cursor -class WXDLLEXPORT wxCursor: public wxBitmap -{ - DECLARE_DYNAMIC_CLASS(wxCursor) - -public: - wxCursor(void); - - // Copy constructors - inline wxCursor(const wxCursor& cursor) { Ref(cursor); } - - wxCursor(const char bits[], int width, int height, int hotSpotX = -1, int hotSpotY = -1, - const char maskBits[] = NULL); - wxCursor(const wxString& name, long flags = wxBITMAP_TYPE_CUR_RESOURCE, - int hotSpotX = 0, int hotSpotY = 0); - wxCursor(int cursor_type); - ~wxCursor(void); - - virtual bool Ok(void) const { return (m_refData != NULL && M_CURSORDATA->m_hCursor) ; } - - inline wxCursor& operator = (const wxCursor& cursor) { if (*this == cursor) return (*this); Ref(cursor); return *this; } - inline bool operator == (const wxCursor& cursor) { return m_refData == cursor.m_refData; } - inline bool operator != (const wxCursor& cursor) { return m_refData != cursor.m_refData; } - - void SetHCURSOR(WXHCURSOR cursor); - inline WXHCURSOR GetHCURSOR(void) const { return (M_CURSORDATA ? M_CURSORDATA->m_hCursor : 0); } - - bool FreeResource(bool force = FALSE); -}; - -#endif - // _WX_CURSOR_H_ diff --git a/include/wx/msw/dc.h b/include/wx/msw/dc.h deleted file mode 100644 index bba7bd5f81..0000000000 --- a/include/wx/msw/dc.h +++ /dev/null @@ -1,445 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dc.h -// Purpose: wxDC class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_DC_H_ -#define _WX_DC_H_ - -#ifdef __GNUG__ -#pragma interface "dc.h" -#endif - -#include "wx/pen.h" -#include "wx/brush.h" -#include "wx/icon.h" -#include "wx/font.h" -#include "wx/gdicmn.h" -#include "wx/window.h" - -// Clash with Windows header files -#ifdef StartDoc -#undef StartDoc -#endif - -#ifdef DrawText -#undef DrawText -#endif - -#ifdef GetCharWidth -#undef GetCharWidth -#endif - -class WXDLLEXPORT wxDC: public wxObject -{ - DECLARE_ABSTRACT_CLASS(wxDC) - protected: -public: - wxDC(void); - ~wxDC(void); - -#ifdef WX_COMP_INLINE_NO_CLASS - inline void BeginDrawing(void) {} - inline void EndDrawing(void) {} -#else - inline void wxDC::BeginDrawing(void) {} - inline void wxDC::EndDrawing(void) {} -#endif - - virtual void FloodFill(long x1, long y1, const wxColour& col, int style=wxFLOOD_SURFACE) ; - inline void FloodFill(const wxPoint& pt, const wxColour& col, int style=wxFLOOD_SURFACE) - { - FloodFill(pt.x, pt.y, col, style); - } - - virtual bool GetPixel(long x1, long y1, wxColour *col) const ; - inline bool GetPixel(const wxPoint& pt, wxColour *col) const - { - return GetPixel(pt.x, pt.y, col); - } - - virtual void DrawLine(long x1, long y1, long x2, long y2); - inline void DrawLine(const wxPoint& pt1, const wxPoint& pt2) - { - DrawLine(pt1.x, pt1.y, pt2.x, pt2.y); - } - - virtual void CrossHair(long x, long y) ; - inline void CrossHair(const wxPoint& pt) - { - CrossHair(pt.x, pt.y); - } - - virtual void DrawArc(long x1,long y1,long x2,long y2,long xc, long yc); - inline void DrawArc(const wxPoint& pt1, const wxPoint& pt2, const wxPoint& centre) - { - DrawArc(pt1.x, pt1.y, pt2.x, pt2.y, centre.x, centre.y); - } - - virtual void DrawEllipticArc (long x, long y, long w, long h, double sa, double ea); - virtual void DrawEllipticArc (const wxPoint& pt, const wxSize& sz, double sa, double ea) - { - DrawEllipticArc(pt.x, pt.y, sz.x, sz.y, sa, ea); - } - - virtual void DrawPoint(long x, long y); - inline void DrawPoint(const wxPoint& pt) - { - DrawPoint(pt.x, pt.y); - } - - virtual void DrawLines(int n, wxPoint points[], long xoffset = 0, long yoffset = 0); - - virtual void DrawPolygon(int n, wxPoint points[], long xoffset = 0, long yoffset = 0, int fillStyle=wxODDEVEN_RULE); - - virtual void DrawRectangle(long x, long y, long width, long height); - inline void DrawRectangle(const wxPoint& pt, const wxSize& sz) - { - DrawRectangle(pt.x, pt.y, sz.x, sz.y); - } - inline void DrawRectangle(const wxRect& rect) - { - DrawRectangle(rect.x, rect.y, rect.width, rect.height); - } - - virtual void DrawRoundedRectangle(long x, long y, long width, long height, double radius = 20.0); - inline void DrawRoundedRectangle(const wxPoint& pt, const wxSize& sz, double radius = 20.0) - { - DrawRoundedRectangle(pt.x, pt.y, sz.x, sz.y, radius); - } - inline void DrawRoundedRectangle(const wxRect& rect, double radius = 20.0) - { - DrawRoundedRectangle(rect.x, rect.y, rect.width, rect.height, radius); - } - - virtual void DrawEllipse(long x, long y, long width, long height); - inline void DrawEllipse(const wxPoint& pt, const wxSize& sz) - { - DrawEllipse(pt.x, pt.y, sz.x, sz.y); - } - inline void DrawEllipse(const wxRect& rect) - { - DrawEllipse(rect.x, rect.y, rect.width, rect.height); - } - - virtual void DrawIcon(const wxIcon& icon, long x, long y); - inline void DrawIcon(const wxIcon& icon, const wxPoint& pt) - { - DrawIcon(icon, pt.x, pt.y); - } - - virtual void DrawBitmap( const wxBitmap &bmp, long x, long y, bool useMask=FALSE ); - - inline void DrawPoint(wxPoint& point) { DrawPoint(point.x, point.y); } - virtual void DrawLines(wxList *list, long xoffset = 0, long yoffset = 0); - virtual void DrawPolygon(wxList *list, long xoffset = 0, long yoffset = 0, int fillStyle=wxODDEVEN_RULE); - - virtual void DrawText(const wxString& text, long x, long y, bool use16bit = FALSE); - inline void DrawText(const wxString& text, const wxPoint& pt, bool use16bit = FALSE) - { - DrawText(text, pt.x, pt.y, use16bit); - } - - virtual bool Blit(long xdest, long ydest, long width, long height, - wxDC *source, long xsrc, long ysrc, int rop = wxCOPY, bool useMask = FALSE); - inline bool Blit(const wxPoint& destPt, const wxSize& sz, - wxDC *source, const wxPoint& srcPt, int rop = wxCOPY, bool useMask = FALSE) - { - return Blit(destPt.x, destPt.y, sz.x, sz.y, source, srcPt.x, srcPt.y, rop, useMask); - } - -#if wxUSE_SPLINES - // Splines - // 3-point spline - virtual void DrawSpline(long x1, long y1, long x2, long y2, long x3, long y3); - // Any number of control points - a list of pointers to wxPoints - virtual void DrawSpline(wxList *points); - virtual void DrawSpline(int n, wxPoint points[]); -#endif - virtual void Clear(void); - virtual void SetFont(const wxFont& font); - virtual void SetPen(const wxPen& pen); - virtual void SetBrush(const wxBrush& brush); - virtual void SetLogicalFunction(int function); - virtual void SetBackground(const wxBrush& brush); - virtual void SetBackgroundMode(int mode); - - virtual void SetClippingRegion(long x, long y, long width, long height); - inline void SetClippingRegion(const wxPoint& pt, const wxSize& sz) - { - SetClippingRegion(pt.x, pt.y, sz.x, sz.y); - } - inline void SetClippingRegion(const wxRect& rect) - { - SetClippingRegion(rect.x, rect.y, rect.width, rect.height); - } - virtual void SetClippingRegion(const wxRegion& region); - - virtual void SetPalette(const wxPalette& palette); -#if WXWIN_COMPATIBILITY - virtual inline void SetColourMap(const wxPalette& palette) { SetPalette(palette); }; -#endif - virtual void DestroyClippingRegion(void); - virtual long GetCharHeight(void) const; - virtual long GetCharWidth(void) const; - virtual void GetTextExtent(const wxString& string, long *x, long *y, - long *descent = NULL, long *externalLeading = NULL, - wxFont *theFont = NULL, bool use16bit = FALSE) const; -#if WXWIN_COMPATIBILITY - void GetTextExtent(const wxString& string, float *x, float *y, - float *descent = NULL, float *externalLeading = NULL, - wxFont *theFont = NULL, bool use16bit = FALSE) const ; -#endif - - // Size in device units - virtual void GetSize(int* width, int* height) const; - inline wxSize GetSize(void) const { int w, h; GetSize(&w, &h); return wxSize(w, h); } - - // Size in mm - virtual void GetSizeMM(long* width, long* height) const ; - - // Compatibility -#if WXWIN_COMPATIBILITY - inline void GetSize(float* width, float* height) const { int w, h; GetSize(& w, & h); *width = w; *height = h; } - inline void GetSizeMM(float *width, float *height) const { long w, h; GetSizeMM(& w, & h); *width = (float) w; *height = (float) h; } -#endif - - virtual bool StartDoc(const wxString& message); - virtual void EndDoc(void); - virtual void StartPage(void); - virtual void EndPage(void); - virtual void SetMapMode(int mode); - virtual void SetUserScale(double x, double y); - virtual void SetSystemScale(double x, double y); - virtual void SetLogicalOrigin(long x, long y); - virtual void SetDeviceOrigin(long x, long y); - virtual void SetAxisOrientation(bool xLeftRight, bool yBottomUp); - - // This group of functions does actual conversion - // of the input, as you'd expect. - - long DeviceToLogicalX(long x) const; - long DeviceToLogicalY(long y) const; - long DeviceToLogicalXRel(long x) const; - long DeviceToLogicalYRel(long y) const; - long LogicalToDeviceX(long x) const; - long LogicalToDeviceY(long y) const; - long LogicalToDeviceXRel(long x) const; - long LogicalToDeviceYRel(long y) const; - - // This group of functions may not do any conversion - // if m_scaleGDI is TRUE, since the HDC does the - // conversion automatically. - // m_scaleGDI NOW OBSOLETE - long ImplDeviceToLogicalX(long x) const; - long ImplDeviceToLogicalY(long y) const; - long ImplDeviceToLogicalXRel(long x) const; - long ImplDeviceToLogicalYRel(long y) const; - long ImplLogicalToDeviceX(long x) const; - long ImplLogicalToDeviceY(long y) const; - long ImplLogicalToDeviceXRel(long x) const; - long ImplLogicalToDeviceYRel(long y) const; - - virtual bool CanDrawBitmap(void) const; - virtual bool CanGetTextExtent(void) const; - - virtual void SetTextForeground(const wxColour& colour); - virtual void SetTextBackground(const wxColour& colour); - inline virtual bool Ok(void) const {return m_ok;}; - inline virtual int GetMapMode(void) const {return m_mappingMode;}; - - inline virtual wxBrush& GetBackground(void) const { return (wxBrush&) m_backgroundBrush ;} - inline virtual wxBrush& GetBrush(void) const { return (wxBrush&) m_brush ;} - inline virtual wxFont& GetFont(void) const { return (wxFont&) m_font ;} - inline virtual int GetLogicalFunction(void) const { return m_logicalFunction ;} - inline virtual wxPen& GetPen(void) const { return (wxPen&) m_pen ;} - inline virtual wxColour&GetTextBackground(void) const { return (wxColour&) m_textBackgroundColour ;} - inline virtual wxColour&GetTextForeground(void) const { return (wxColour&) m_textForegroundColour ;} - - virtual void SetLogicalScale(double x, double y); - virtual inline void GetUserScale(double* x, double *y) const { *x = m_userScaleX; *y = m_userScaleY; } - virtual void CalcBoundingBox(long x, long y); - // Get the final bounding box of the PostScript or Metafile picture. - virtual inline long MinX(void) const { return m_minX; } - virtual inline long MaxX(void) const { return m_maxX; } - virtual inline long MinY(void) const { return m_minY; } - virtual inline long MaxY(void) const { return m_maxY; } - // Sometimes we need to override optimization, e.g. - // if other software is drawing onto our surface and we - // can't be sure of who's done what. - virtual inline void SetOptimization(bool WXUNUSED(opt)) { } - virtual inline bool GetOptimization(void) { return FALSE; } - - virtual void GetClippingBox(long *x,long *y,long *w,long *h) const ; - inline void GetClippingBox(wxRect& rect) const - { - long x, y, w, h; - GetClippingBox(&x, &y, &w, &h); rect.x = x; rect.y = y; rect.width = w; rect.height = h; - } - - // This should probably be made available on other platforms -#ifdef WX_COMP_INLINE_NO_CLASS - int GetDepth(void) const ; -#else - int wxDC::GetDepth(void) const ; -#endif - -// Implementation - virtual void SetRop(WXHDC cdc); - virtual void DoClipping(WXHDC cdc); - virtual void SelectOldObjects(WXHDC dc); - - inline wxWindow *GetWindow(void) const { return m_canvas; } - inline void SetWindow(wxWindow *win) { m_canvas = win; } - inline WXHDC GetHDC(void) const { return m_hDC; } - inline void SetHDC(WXHDC dc, bool bOwnsDC = FALSE) { m_hDC = dc; m_bOwnsDC = bOwnsDC; } - -protected: - bool m_colour; - bool m_ok; - bool m_clipping; - bool m_isInteractive; - - // Coordinate system variables - long m_logicalOriginX; - long m_logicalOriginY; - - long m_deviceOriginX; - long m_deviceOriginY; - - double m_logicalScaleX; - double m_logicalScaleY; - - double m_userScaleX; - double m_userScaleY; - - int m_signX; // Used by SetAxisOrientation() to - int m_signY; // invert the axes - - int m_mappingMode; - - long m_minX; // bounding box - long m_minY; - long m_maxX; - long m_maxY; - - int m_logicalFunction; - int m_backgroundMode; - - wxPen m_pen; - wxBrush m_brush; - wxBrush m_backgroundBrush; - wxColour m_textForegroundColour; - wxColour m_textBackgroundColour; - wxFont m_font; - wxPalette m_palette; - int m_clipX1; - int m_clipY1; - int m_clipX2; - int m_clipY2; -// bool m_dontDelete; - int m_windowExtX; - int m_windowExtY; - double m_systemScaleX; - double m_systemScaleY; - - wxWindow * m_canvas; - wxBitmap m_selectedBitmap; - wxString m_filename; - - // TRUE => DeleteDC() in dtor, FALSE => only ReleaseDC() it - bool m_bOwnsDC; - - WXHDC m_hDC; - int m_hDCCount; - - // Store all old GDI objects when do a SelectObject, - // so we can select them back in (this unselecting user's - // objects) so we can safely delete the DC. - WXHBITMAP m_oldBitmap; - WXHPEN m_oldPen; - WXHBRUSH m_oldBrush; - WXHFONT m_oldFont; - WXHPALETTE m_oldPalette; - - // Stores scaling, translation, rotation -// wxTransformMatrix m_transformMatrix; - - // Do we wish to scale GDI objects too, e.g. pen width? -// bool m_scaleGDI; -}; - -// Logical to device -// Absolute -#define XLOG2DEV(x) ImplLogicalToDeviceX(x) - -#define YLOG2DEV(y) ImplLogicalToDeviceY(y) - -// Relative -#define XLOG2DEVREL(x) ImplLogicalToDeviceXRel(x) -#define YLOG2DEVREL(y) ImplLogicalToDeviceYRel(y) - -// Device to logical -// Absolute -#define XDEV2LOG(x) ImplDeviceToLogicalX(x) - -#define YDEV2LOG(y) ImplDeviceToLogicalY(y) - -// Relative -#define XDEV2LOGREL(x) ImplDeviceToLogicalXRel(x) -#define YDEV2LOGREL(y) ImplDeviceToLogicalYRel(y) - -/* - * Have the same macros as for XView but not for every operation: - * just for calculating window/viewport extent (a better way of scaling). - */ - -// Logical to device -// Absolute -#define MS_XLOG2DEV(x) LogicalToDevice(x) - -#define MS_YLOG2DEV(y) LogicalToDevice(y) - -// Relative -#define MS_XLOG2DEVREL(x) LogicalToDeviceXRel(x) -#define MS_YLOG2DEVREL(y) LogicalToDeviceYRel(y) - -// Device to logical -// Absolute -#define MS_XDEV2LOG(x) DeviceToLogicalX(x) - -#define MS_YDEV2LOG(y) DeviceToLogicalY(y) - -// Relative -#define MS_XDEV2LOGREL(x) DeviceToLogicalXRel(x) -#define MS_YDEV2LOGREL(y) DeviceToLogicalYRel(y) - -#define MM_POINTS 7 -#define MM_METRIC 8 - -extern int wxPageNumber; - -// Conversion -#define METRIC_CONVERSION_CONSTANT 0.0393700787 - -// Scaling factors for various unit conversions -#define mm2inches (METRIC_CONVERSION_CONSTANT) -#define inches2mm (1/METRIC_CONVERSION_CONSTANT) - -#define mm2twips (METRIC_CONVERSION_CONSTANT*1440) -#define twips2mm (1/(METRIC_CONVERSION_CONSTANT*1440)) - -#define mm2pt (METRIC_CONVERSION_CONSTANT*72) -#define pt2mm (1/(METRIC_CONVERSION_CONSTANT*72)) - -#define wx_round(a) (int)((a)+.5) - - -#endif - // _WX_DC_H_ diff --git a/include/wx/msw/dcclient.h b/include/wx/msw/dcclient.h deleted file mode 100644 index 182b71b686..0000000000 --- a/include/wx/msw/dcclient.h +++ /dev/null @@ -1,65 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcclient.h -// Purpose: wxClientDC class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_DCCLIENT_H_ -#define _WX_DCCLIENT_H_ - -#ifdef __GNUG__ -#pragma interface "dcclient.h" -#endif - -#include "wx/dc.h" - -class WXDLLEXPORT wxWindowDC: public wxDC -{ - DECLARE_DYNAMIC_CLASS(wxWindowDC) - - public: - wxWindowDC(void); - - // Create a DC corresponding to a canvas - wxWindowDC(wxWindow *win); - - ~wxWindowDC(void); -}; - -class WXDLLEXPORT wxClientDC: public wxWindowDC -{ - DECLARE_DYNAMIC_CLASS(wxClientDC) - - public: - wxClientDC(void); - - // Create a DC corresponding to a canvas - wxClientDC(wxWindow *win); - - ~wxClientDC(void); -}; - -class WXDLLEXPORT wxPaintDC: public wxWindowDC -{ - DECLARE_DYNAMIC_CLASS(wxPaintDC) - - public: - wxPaintDC(void); - - // Create a DC corresponding to a canvas - wxPaintDC(wxWindow *win); - - ~wxPaintDC(void); - - protected: - static WXHDC ms_PaintHDC; - static size_t ms_PaintCount; -}; - -#endif - // _WX_DCCLIENT_H_ diff --git a/include/wx/msw/dcmemory.h b/include/wx/msw/dcmemory.h deleted file mode 100644 index f278bc447e..0000000000 --- a/include/wx/msw/dcmemory.h +++ /dev/null @@ -1,35 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcmemory.h -// Purpose: wxMemoryDC class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_DCMEMORY_H_ -#define _WX_DCMEMORY_H_ - -#ifdef __GNUG__ -#pragma interface "dcmemory.h" -#endif - -#include "wx/dcclient.h" - -class WXDLLEXPORT wxMemoryDC: public wxDC -{ - DECLARE_DYNAMIC_CLASS(wxMemoryDC) - - public: - wxMemoryDC(void); - wxMemoryDC(wxDC *dc); // Create compatible DC - - ~wxMemoryDC(void); - virtual void SelectObject(const wxBitmap& bitmap); - virtual void GetSize(int* width, int* height) const; -}; - -#endif - // _WX_DCMEMORY_H_ diff --git a/include/wx/msw/dcprint.h b/include/wx/msw/dcprint.h deleted file mode 100644 index 8ad3c3574b..0000000000 --- a/include/wx/msw/dcprint.h +++ /dev/null @@ -1,38 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcprint.h -// Purpose: wxPrinterDC class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_DCPRINT_H_ -#define _WX_DCPRINT_H_ - -#ifdef __GNUG__ -#pragma interface "dcprint.h" -#endif - -#include "wx/dc.h" - -class WXDLLEXPORT wxPrinterDC: public wxDC -{ - public: - DECLARE_CLASS(wxPrinterDC) - - // Create a printer DC - wxPrinterDC(const wxString& driver, const wxString& device, const wxString& output, bool interactive = TRUE, int orientation = wxPORTRAIT); - wxPrinterDC(WXHDC theDC); - - ~wxPrinterDC(void); -}; - -// Gets an HDC for the default printer configuration -WXHDC WXDLLEXPORT wxGetPrinterDC(int orientation); - -#endif - // _WX_DCPRINT_H_ - diff --git a/include/wx/msw/dcscreen.h b/include/wx/msw/dcscreen.h deleted file mode 100644 index 67a0cbd95e..0000000000 --- a/include/wx/msw/dcscreen.h +++ /dev/null @@ -1,39 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcscreen.h -// Purpose: wxScreenDC class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_DCSCREEN_H_ -#define _WX_DCSCREEN_H_ - -#ifdef __GNUG__ -#pragma interface "dcscreen.h" -#endif - -#include "wx/dcclient.h" - -class WXDLLEXPORT wxScreenDC: public wxWindowDC -{ - DECLARE_DYNAMIC_CLASS(wxScreenDC) - - public: - // Create a DC representing the whole screen - wxScreenDC(void); - ~wxScreenDC(void); - - // Compatibility with X's requirements for - // drawing on top of all windows - static bool StartDrawingOnTop(wxWindow* WXUNUSED(window)) { return TRUE; } - static bool StartDrawingOnTop(wxRect* WXUNUSED(rect) = NULL) { return TRUE; } - static bool EndDrawingOnTop(void) { return TRUE; } -}; - -#endif - // _WX_DCSCREEN_H_ - diff --git a/include/wx/msw/dde.h b/include/wx/msw/dde.h deleted file mode 100644 index 5e7ec5e9f9..0000000000 --- a/include/wx/msw/dde.h +++ /dev/null @@ -1,153 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dde.h -// Purpose: DDE class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_DDE_H_ -#define _WX_DDE_H_ - -#ifdef __GNUG__ -#pragma interface "dde.h" -#endif - -#include "wx/ipcbase.h" - -/* - * Mini-DDE implementation - - Most transactions involve a topic name and an item name (choose these - as befits your application). - - A client can: - - - ask the server to execute commands (data) associated with a topic - - request data from server by topic and item - - poke data into the server - - ask the server to start an advice loop on topic/item - - ask the server to stop an advice loop - - A server can: - - - respond to execute, request, poke and advice start/stop - - send advise data to client - - Note that this limits the server in the ways it can send data to the - client, i.e. it can't send unsolicited information. - * - */ - -class WXDLLEXPORT wxDDEServer; -class WXDLLEXPORT wxDDEClient; - -class WXDLLEXPORT wxDDEConnection: public wxConnectionBase -{ - DECLARE_DYNAMIC_CLASS(wxDDEConnection) -public: - wxDDEConnection(char *buffer, int size); - wxDDEConnection(void); - ~wxDDEConnection(void); - - // Calls that CLIENT can make - virtual bool Execute(char *data, int size = -1, wxIPCFormat format = wxIPC_TEXT); - virtual bool Execute(const wxString& str) { return Execute((char *)(const char *)str, -1, wxIPC_TEXT); } - virtual char *Request(const wxString& item, int *size = NULL, wxIPCFormat format = wxIPC_TEXT); - virtual bool Poke(const wxString& item, char *data, int size = -1, wxIPCFormat format = wxIPC_TEXT); - virtual bool StartAdvise(const wxString& item); - virtual bool StopAdvise(const wxString& item); - - // Calls that SERVER can make - virtual bool Advise(const wxString& item, char *data, int size = -1, wxIPCFormat format = wxIPC_TEXT); - - // Calls that both can make - virtual bool Disconnect(void); - - // Callbacks to SERVER - override at will - virtual bool OnExecute(const wxString& topic, char *data, int size, wxIPCFormat format) { return FALSE; }; - virtual char *OnRequest(const wxString& topic, const wxString& item, int *size, wxIPCFormat format) { return NULL; }; - virtual bool OnPoke(const wxString& topic, const wxString& item, char *data, int size, wxIPCFormat format) { return FALSE; }; - virtual bool OnStartAdvise(const wxString& topic, const wxString& item) { return FALSE; }; - virtual bool OnStopAdvise(const wxString& topic, const wxString& item) { return FALSE; }; - - // Callbacks to CLIENT - override at will - virtual bool OnAdvise(const wxString& topic, const wxString& item, char *data, int size, wxIPCFormat format) { return FALSE; }; - - // Callbacks to BOTH - - // Default behaviour is to delete connection and return TRUE - virtual bool OnDisconnect(void); - - public: - char* m_bufPtr; - wxString m_topicName; - int m_bufSize; - wxDDEServer* m_server; - wxDDEClient* m_client; - - WXHCONV m_hConv; - char* m_sendingData; - int m_dataSize; - wxIPCFormat m_dataType; -}; - -class WXDLLEXPORT wxDDEServer: public wxServerBase -{ - DECLARE_DYNAMIC_CLASS(wxDDEServer) - public: - - wxDDEServer(void); - ~wxDDEServer(void); - bool Create(const wxString& server_name); // Returns FALSE if can't create server (e.g. port - // number is already in use) - virtual wxConnectionBase *OnAcceptConnection(const wxString& topic); - - //////////////////////////////////////////////////////////// - // Implementation - - // Find/delete wxDDEConnection corresponding to the HCONV - wxDDEConnection *FindConnection(WXHCONV conv); - bool DeleteConnection(WXHCONV conv); - inline wxString& GetServiceName(void) const { return (wxString&) m_serviceName; } - inline wxList& GetConnections(void) const { return (wxList&) m_connections; } - - protected: - int m_lastError; - wxString m_serviceName; - wxList m_connections; -}; - -class WXDLLEXPORT wxDDEClient: public wxClientBase -{ - DECLARE_DYNAMIC_CLASS(wxDDEClient) - public: - wxDDEClient(void); - ~wxDDEClient(void); - bool ValidHost(const wxString& host); - virtual wxConnectionBase *MakeConnection(const wxString& host, const wxString& server, const wxString& topic); - // Call this to make a connection. - // Returns NULL if cannot. - virtual wxConnectionBase *OnMakeConnection(void); // Tailor this to return own connection. - - //////////////////////////////////////////////////////////// - // Implementation - - // Find/delete wxDDEConnection corresponding to the HCONV - wxDDEConnection *FindConnection(WXHCONV conv); - bool DeleteConnection(WXHCONV conv); - inline wxList& GetConnections(void) const { return (wxList&) m_connections; } - - protected: - int m_lastError; - wxList m_connections; -}; - -void WXDLLEXPORT wxDDEInitialize(); -void WXDLLEXPORT wxDDECleanUp(); - -#endif - // _WX_DDE_H_ diff --git a/include/wx/msw/dialog.h b/include/wx/msw/dialog.h deleted file mode 100644 index b63c9875d0..0000000000 --- a/include/wx/msw/dialog.h +++ /dev/null @@ -1,124 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dialog.h -// Purpose: wxDialog class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_DIALOG_H_ -#define _WX_DIALOG_H_ - -#ifdef __GNUG__ -#pragma interface "dialog.h" -#endif - -#include "wx/panel.h" - -WXDLLEXPORT_DATA(extern const char*) wxDialogNameStr; - -// Dialog boxes -class WXDLLEXPORT wxDialog: public wxPanel -{ - DECLARE_DYNAMIC_CLASS(wxDialog) - protected: - bool m_modalShowing; -public: - - wxDialog(); - - // Constructor with a modal flag, but no window id - the old convention - inline wxDialog(wxWindow *parent, - const wxString& title, bool modal, - int x = -1, int y= -1, int width = 500, int height = 500, - long style = wxDEFAULT_DIALOG_STYLE, - const wxString& name = wxDialogNameStr) - { - long modalStyle = modal ? wxDIALOG_MODAL : wxDIALOG_MODELESS ; - Create(parent, -1, title, wxPoint(x, y), wxSize(width, height), style|modalStyle, name); - } - - // Constructor with no modal flag - the new convention. - inline wxDialog(wxWindow *parent, wxWindowID id, - const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_DIALOG_STYLE, - const wxString& name = wxDialogNameStr) - { - Create(parent, id, title, pos, size, style, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - const wxString& title, // bool modal = FALSE, // TODO make this a window style? - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_DIALOG_STYLE, - const wxString& name = wxDialogNameStr); - - ~wxDialog(); - - virtual bool Destroy(); - - virtual void SetClientSize(int width, int height); - - virtual void GetPosition(int *x, int *y) const; - - bool Show(bool show); - bool IsShown() const ; - void Iconize(bool iconize); - -#if WXWIN_COMPATIBILITY - inline bool Iconized() const { return IsIconized(); }; -#endif - - virtual bool IsIconized() const; - void Fit(); - - void SetTitle(const wxString& title); - wxString GetTitle() const ; - - void OnSize(wxSizeEvent& event); - bool OnClose(); - void OnCharHook(wxKeyEvent& event); - void OnPaint(wxPaintEvent& event); - void OnCloseWindow(wxCloseEvent& event); - - void SetModal(bool flag); - - virtual void Centre(int direction = wxBOTH); - virtual bool IsModal() const { return ((GetWindowStyleFlag() & wxDIALOG_MODAL) == wxDIALOG_MODAL); } - - // For now, same as Show(TRUE) but returns return code - virtual int ShowModal(); - virtual void EndModal(int retCode); - - // Standard buttons - void OnOK(wxCommandEvent& event); - void OnApply(wxCommandEvent& event); - void OnCancel(wxCommandEvent& event); - - // Responds to colour changes - void OnSysColourChanged(wxSysColourChangedEvent& event); - - // IMPLEMENTATION - virtual long MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam); - virtual long MSWDefWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam); - virtual bool MSWProcessMessage(WXMSG* pMsg); -// virtual bool MSWOnEraseBkgnd(WXHDC pDC); - virtual bool MSWOnClose(); - inline bool IsModalShowing() const { return m_modalShowing ; } - virtual WXHBRUSH OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor, - WXUINT message, WXWPARAM wParam, WXLPARAM lParam); - -protected: - WXHWND m_hwndOldFocus; // the window which had focus before we were shown - -DECLARE_EVENT_TABLE() -}; - -#endif - // _WX_DIALOG_H_ diff --git a/include/wx/msw/dib.h b/include/wx/msw/dib.h deleted file mode 100644 index 885663d0a8..0000000000 --- a/include/wx/msw/dib.h +++ /dev/null @@ -1,26 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dib.h -// Purpose: Routines for loading and saving DIBs -// Author: Various -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -// Save (device dependent) wxBitmap as a DIB -bool wxSaveBitmap(char *filename, wxBitmap *bitmap, wxColourMap *colourmap = NULL); - -// Load device independent bitmap into device dependent bitmap -wxBitmap *wxLoadBitmap(char *filename, wxColourMap **colourmap = NULL); - -// Load into existing bitmap; -bool wxLoadIntoBitmap(char *filename, wxBitmap *bitmap, wxColourMap **pal = NULL); - -HANDLE BitmapToDIB (HBITMAP hBitmap, HPALETTE hPal); -BOOL ReadDIB(LPSTR lpFileName, HBITMAP *bitmap, HPALETTE *palette); -HANDLE ReadDIB2(LPSTR lpFileName); -LPSTR FindDIBBits (LPSTR lpbi); -HPALETTE MakeDIBPalette(LPBITMAPINFOHEADER lpInfo); - diff --git a/include/wx/msw/dibutils.h b/include/wx/msw/dibutils.h deleted file mode 100644 index 746660d688..0000000000 --- a/include/wx/msw/dibutils.h +++ /dev/null @@ -1,131 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dibutils.h -// Purpose: Utilities for DIBs -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Microsoft, Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -/*************************************************************************** - - (C) Copyright 1994 Microsoft Corp. All rights reserved. - - You have a royalty-free right to use, modify, reproduce and - distribute the Sample Files (and/or any modified version) in - any way you find useful, provided that you agree that - Microsoft has no warranty obligations or liability for any - Sample Application Files which are modified. - - **************************************************************************/ - -/*************************************************************************** - Functions for handling Device Independent Bitmaps and clearing the - System Palette. - **************************************************************************/ - -#ifndef SAMPLES_UTILS_H -#define SAMPLES_UTILS_H - -#ifdef __GNUG__ -#pragma interface "dibutils.h" -#endif - -typedef LPBITMAPINFOHEADER PDIB; -typedef HANDLE HDIB; - -/*************************************************************************** - External function declarations - **************************************************************************/ - -void ClearSystemPalette(void); -PDIB DibOpenFile(LPSTR szFile); -int DibWriteFile(LPSTR szFile, LPBITMAPINFOHEADER lpbi); -BOOL DibSetUsage(PDIB pdib, HPALETTE hpal,UINT wUsage); -PDIB DibCreate(int bits, int dx, int dy); -BOOL DibMapToPalette(PDIB pdib, HPALETTE hpal); -HPALETTE MakePalette(const BITMAPINFO FAR* Info, UINT flags); - -/**************************************************************************** - Internal function declarations - ***************************************************************************/ - -PDIB DibReadBitmapInfo(HFILE fh); - -/**************************************************************************** - DIB macros. - ***************************************************************************/ - -#ifdef WIN32 - #define HandleFromDib(lpbi) GlobalHandle(lpbi) -#else - #define HandleFromDib(lpbi) (HANDLE)GlobalHandle(SELECTOROF(lpbi)) -#endif - -#define DibFromHandle(h) (PDIB)GlobalLock(h) - -#define DibFree(pdib) GlobalFreePtr(pdib) - -#define WIDTHBYTES(i) ((unsigned)((i+31)&(~31))/8) /* ULONG aligned ! */ - -#define DibWidth(lpbi) (UINT)(((LPBITMAPINFOHEADER)(lpbi))->biWidth) -#define DibHeight(lpbi) (UINT)(((LPBITMAPINFOHEADER)(lpbi))->biHeight) -#define DibBitCount(lpbi) (UINT)(((LPBITMAPINFOHEADER)(lpbi))->biBitCount) -#define DibCompression(lpbi) (DWORD)(((LPBITMAPINFOHEADER)(lpbi))->biCompression) - -#define DibWidthBytesN(lpbi, n) (UINT)WIDTHBYTES((UINT)(lpbi)->biWidth * (UINT)(n)) -#define DibWidthBytes(lpbi) DibWidthBytesN(lpbi, (lpbi)->biBitCount) - -#define DibSizeImage(lpbi) ((lpbi)->biSizeImage == 0 \ - ? ((DWORD)(UINT)DibWidthBytes(lpbi) * (DWORD)(UINT)(lpbi)->biHeight) \ - : (lpbi)->biSizeImage) - -#define DibSize(lpbi) ((lpbi)->biSize + (lpbi)->biSizeImage + (int)(lpbi)->biClrUsed * sizeof(RGBQUAD)) -#define DibPaletteSize(lpbi) (DibNumColors(lpbi) * sizeof(RGBQUAD)) - -#define DibFlipY(lpbi, y) ((int)(lpbi)->biHeight-1-(y)) - -//HACK for NT BI_BITFIELDS DIBs -#ifdef WIN32 - #define DibPtr(lpbi) ((lpbi)->biCompression == BI_BITFIELDS \ - ? (LPVOID)(DibColors(lpbi) + 3) \ - : (LPVOID)(DibColors(lpbi) + (UINT)(lpbi)->biClrUsed)) -#else - #define DibPtr(lpbi) (LPVOID)(DibColors(lpbi) + (UINT)(lpbi)->biClrUsed) -#endif - -#define DibColors(lpbi) ((RGBQUAD FAR *)((LPBYTE)(lpbi) + (int)(lpbi)->biSize)) - -#define DibNumColors(lpbi) ((lpbi)->biClrUsed == 0 && (lpbi)->biBitCount <= 8 \ - ? (int)(1 << (int)(lpbi)->biBitCount) \ - : (int)(lpbi)->biClrUsed) - -#define DibXYN(lpbi,pb,x,y,n) (LPVOID)( \ - (BYTE _huge *)(pb) + \ - (UINT)((UINT)(x) * (UINT)(n) / 8u) + \ - ((DWORD)DibWidthBytesN(lpbi,n) * (DWORD)(UINT)(y))) - -#define DibXY(lpbi,x,y) DibXYN(lpbi,DibPtr(lpbi),x,y,(lpbi)->biBitCount) - -#define FixBitmapInfo(lpbi) if ((lpbi)->biSizeImage == 0) \ - (lpbi)->biSizeImage = DibSizeImage(lpbi); \ - if ((lpbi)->biClrUsed == 0) \ - (lpbi)->biClrUsed = DibNumColors(lpbi); \ - if ((lpbi)->biCompression == BI_BITFIELDS && (lpbi)->biClrUsed == 0) \ - ; // (lpbi)->biClrUsed = 3; - -#define DibInfo(pDIB) ((BITMAPINFO FAR *)(pDIB)) - -/***************************************************************************/ - -#ifndef BI_BITFIELDS - #define BI_BITFIELDS 3 -#endif - -#ifndef HALFTONE - #define HALFTONE COLORONCOLOR -#endif - -#endif diff --git a/include/wx/msw/dirdlg.h b/include/wx/msw/dirdlg.h deleted file mode 100644 index 5f8f7778ac..0000000000 --- a/include/wx/msw/dirdlg.h +++ /dev/null @@ -1,49 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dirdlg.h -// Purpose: wxDirDialog class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_DIRDLG_H_ -#define _WX_DIRDLG_H_ - -#ifdef __GNUG__ -#pragma interface "dirdlg.h" -#endif - -#include "wx/dialog.h" - -WXDLLEXPORT_DATA(extern const char*) wxFileSelectorPromptStr; - -class WXDLLEXPORT wxDirDialog: public wxDialog -{ -DECLARE_DYNAMIC_CLASS(wxDirDialog) -public: - wxDirDialog(wxWindow *parent, const wxString& message = wxFileSelectorPromptStr, - const wxString& defaultPath = "", - long style = 0, const wxPoint& pos = wxDefaultPosition); - - inline void SetMessage(const wxString& message) { m_message = message; } - inline void SetPath(const wxString& path) { m_path = path; } - inline void SetStyle(long style) { m_dialogStyle = style; } - - inline wxString GetMessage(void) const { return m_message; } - inline wxString GetPath(void) const { return m_path; } - inline long GetStyle(void) const { return m_dialogStyle; } - - int ShowModal(void); - -protected: - wxString m_message; - long m_dialogStyle; - wxWindow * m_parent; - wxString m_path; -}; - -#endif - // _WX_DIRDLG_H_ diff --git a/include/wx/msw/disable.bmp b/include/wx/msw/disable.bmp deleted file mode 100644 index 8859e1b9ae0aae4441e0c2322ee0a5e16f855f36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 630 zcmZ?rEn{K;gEAng0mKSW%*en3WZ?r13=BZT(9i&(fFzK~aNxiJAPtiE4@M0C|ASaS d41^#dAW?t@*wFx*bOD+)`=~r>2n@CG0RVm_pointSize; } - inline int GetFamily(void) const { return M_FONTDATA->m_family; } - inline int GetFontId(void) const { return M_FONTDATA->m_fontId; } /* New font system */ - inline int GetStyle(void) const { return M_FONTDATA->m_style; } - inline int GetWeight(void) const { return M_FONTDATA->m_weight; } - wxString GetFamilyString(void) const ; - wxString GetFaceName(void) const ; - wxString GetStyleString(void) const ; - wxString GetWeightString(void) const ; - inline bool GetUnderlined(void) const { return M_FONTDATA->m_underlined; } - - void SetPointSize(int pointSize); - void SetFamily(int family); - void SetStyle(int style); - void SetWeight(int weight); - void SetFaceName(const wxString& faceName); - void SetUnderlined(bool underlined); - - inline wxFont& operator = (const wxFont& font) { if (*this == font) return (*this); Ref(font); return *this; } - inline bool operator == (const wxFont& font) { return m_refData == font.m_refData; } - inline bool operator != (const wxFont& font) { return m_refData != font.m_refData; } - -protected: - void Unshare(); -}; - -#endif - // _WX_FONT_H_ diff --git a/include/wx/msw/fontdlg.h b/include/wx/msw/fontdlg.h deleted file mode 100644 index 43d5d315be..0000000000 --- a/include/wx/msw/fontdlg.h +++ /dev/null @@ -1,46 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: fontdlg.h -// Purpose: wxFontDialog class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_FONTDLG_H_ -#define _WX_FONTDLG_H_ - -#ifdef __GNUG__ -#pragma interface "fontdlg.h" -#endif - -#include "wx/dialog.h" -#include "wx/cmndata.h" - -/* - * FONT DIALOG - */ - -class WXDLLEXPORT wxFontDialog: public wxDialog -{ -DECLARE_DYNAMIC_CLASS(wxFontDialog) - -public: - wxFontDialog(void); - wxFontDialog(wxWindow *parent, wxFontData *data = NULL); - - bool Create(wxWindow *parent, wxFontData *data = NULL); - - int ShowModal(void); - wxFontData& GetFontData(void) { return m_fontData; } - -protected: - wxWindow *m_dialogParent; - wxFontData m_fontData; -}; - -#endif - // _WX_FONTDLG_H_ - diff --git a/include/wx/msw/frame.h b/include/wx/msw/frame.h deleted file mode 100644 index 9038a6e60b..0000000000 --- a/include/wx/msw/frame.h +++ /dev/null @@ -1,191 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: frame.h -// Purpose: wxFrame class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_FRAME_H_ -#define _WX_FRAME_H_ - -#ifdef __GNUG__ -#pragma interface "frame.h" -#endif - -#include "wx/window.h" -#include "wx/toolbar.h" -#include "wx/msw/accel.h" - -WXDLLEXPORT_DATA(extern const char*) wxFrameNameStr; -WXDLLEXPORT_DATA(extern const char*) wxToolBarNameStr; -WXDLLEXPORT_DATA(extern const char*) wxStatusLineNameStr; - -class WXDLLEXPORT wxMenuBar; -class WXDLLEXPORT wxStatusBar; - -class WXDLLEXPORT wxFrame: public wxWindow { - - DECLARE_DYNAMIC_CLASS(wxFrame) - -public: - wxFrame(void); - inline wxFrame(wxWindow *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE, - const wxString& name = wxFrameNameStr) - { - Create(parent, id, title, pos, size, style, name); - } - - ~wxFrame(void); - - bool Create(wxWindow *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE, - const wxString& name = wxFrameNameStr); - - virtual bool Destroy(void); - - void SetClientSize(int width, int height); - void SetClientSize(const wxSize& sz) { wxWindow::SetClientSize(sz); } - - void GetClientSize(int *width, int *height) const; - wxSize GetClientSize() const { return wxWindow::GetClientSize(); } - - void GetSize(int *width, int *height) const ; - wxSize GetSize() const { return wxWindow::GetSize(); } - - void GetPosition(int *x, int *y) const ; - wxPoint GetPosition() const { return wxWindow::GetPosition(); } - - virtual void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - - virtual void ClientToScreen(int *x, int *y) const; - - virtual void ScreenToClient(int *x, int *y) const; - - virtual bool OnClose(void); - - void OnSize(wxSizeEvent& event); - void OnMenuHighlight(wxMenuEvent& event); - void OnActivate(wxActivateEvent& event); - void OnIdle(wxIdleEvent& event); - void OnCloseWindow(wxCloseEvent& event); - - bool Show(bool show); - - // Set menu bar - void SetMenuBar(wxMenuBar *menu_bar); - virtual wxMenuBar *GetMenuBar(void) const ; - - // Set title - void SetTitle(const wxString& title); - wxString GetTitle(void) const ; - - void Centre(int direction = wxBOTH); - - // Call this to simulate a menu command - virtual void Command(int id); - virtual void ProcessCommand(int id); - - // Set icon - virtual void SetIcon(const wxIcon& icon); - - // Create status line - virtual wxStatusBar* CreateStatusBar(int number=1, long style = wxST_SIZEGRIP, wxWindowID id = 0, - const wxString& name = wxStatusLineNameStr); - inline wxStatusBar *GetStatusBar() const { return m_frameStatusBar; } - inline void SetStatusBar(wxStatusBar *statusBar) { m_frameStatusBar = statusBar; } - virtual void PositionStatusBar(void); - virtual wxStatusBar *OnCreateStatusBar(int number, long style, wxWindowID id, - const wxString& name); - - // Create toolbar - virtual wxToolBar* CreateToolBar(long style = wxNO_BORDER | wxTB_HORIZONTAL | wxTB_FLAT, - wxWindowID id = -1, - const wxString& name = wxToolBarNameStr); - virtual wxToolBar *OnCreateToolBar(long style, wxWindowID id, const wxString& name); - // If made known to the frame, the frame will manage it automatically. - virtual inline void SetToolBar(wxToolBar *toolbar) { m_frameToolBar = toolbar; } - virtual inline wxToolBar *GetToolBar(void) const { return m_frameToolBar; } - virtual void PositionToolBar(void); - - // Set status line text - virtual void SetStatusText(const wxString& text, int number = 0); - - // Set status line widths - virtual void SetStatusWidths(int n, const int widths_field[]); - - // Hint to tell framework which status bar to use - // TODO: should this go into a wxFrameworkSettings class perhaps? - static void UseNativeStatusBar(bool useNative) { m_useNativeStatusBar = useNative; }; - static bool UsesNativeStatusBar(void) { return m_useNativeStatusBar; }; - - // Fit frame around subwindows - virtual void Fit(void); - - // Iconize - virtual void Iconize(bool iconize); - - virtual bool IsIconized(void) const ; - - // Is it maximized? - virtual bool IsMaximized(void) const ; - - // Compatibility - inline bool Iconized(void) const { return IsIconized(); } - - virtual void Maximize(bool maximize); -// virtual bool LoadAccelerators(const wxString& table); - - // Responds to colour changes - void OnSysColourChanged(wxSysColourChangedEvent& event); - - // Query app for menu item updates (called from OnIdle) - void DoMenuUpdates(void); - void DoMenuUpdates(wxMenu* menu); - - WXHMENU GetWinMenu(void) const ; - - // Checks if there is a toolbar, and returns the first free client position - virtual wxPoint GetClientAreaOrigin() const; - - // Handlers - bool MSWOnPaint(void); - WXHICON MSWOnQueryDragIcon(void); - void MSWOnSize(int x, int y, WXUINT flag); - bool MSWOnCommand(WXWORD id, WXWORD cmd, WXHWND control); - bool MSWOnClose(void); - void MSWOnMenuHighlight(WXWORD item, WXWORD flags, WXHMENU sysmenu); - bool MSWProcessMessage(WXMSG *msg); - bool MSWTranslateMessage(WXMSG *msg); - void MSWCreate(int id, wxWindow *parent, const char *WXUNUSED(wclass), wxWindow *wx_win, const char *title, - int x, int y, int width, int height, long style); - -protected: - // propagate our state change to all child frames - void IconizeChildFrames(bool bIconize); - - wxMenuBar * m_frameMenuBar; - wxStatusBar * m_frameStatusBar; - wxIcon m_icon; - bool m_iconized; - WXHICON m_defaultIcon; - static bool m_useNativeStatusBar; - wxToolBar * m_frameToolBar ; - - DECLARE_EVENT_TABLE() -}; - -#endif - // _WX_FRAME_H_ diff --git a/include/wx/msw/gauge.h b/include/wx/msw/gauge.h deleted file mode 100644 index 3b5569a769..0000000000 --- a/include/wx/msw/gauge.h +++ /dev/null @@ -1,30 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: gauge.h -// Purpose: wxGauge header, includes gauge class headers as appropriate -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_GAUGE_H_ -#define _WX_GAUGE_H_ - -#ifdef __GNUG__ -#pragma interface "gauge.h" -#endif - -#ifdef __WIN95__ -#include "wx/msw/gauge95.h" -#define wxGauge wxGauge95 -#define sm_classwxGauge sm_classwxGauge95 -#else -#include "wx/msw/gaugemsw.h" -#define wxGauge wxGaugeMSW -#define sm_classwxGauge sm_classwxGaugeMSW -#endif - -#endif - // _WX_GAUGE_H_ diff --git a/include/wx/msw/gauge95.h b/include/wx/msw/gauge95.h deleted file mode 100644 index 99635c2669..0000000000 --- a/include/wx/msw/gauge95.h +++ /dev/null @@ -1,80 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: gauge95.h -// Purpose: wxGauge95 class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _GAUGE95_H_ -#define _GAUGE95_H_ - -#ifdef __GNUG__ -#pragma interface "gauge95.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxGaugeNameStr; - -// Group box -class WXDLLEXPORT wxGauge95: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxGauge95) - public: - inline wxGauge95(void) { m_rangeMax = 0; m_gaugePos = 0; } - - inline wxGauge95(wxWindow *parent, wxWindowID id, - int range, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxGA_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxGaugeNameStr) - { - Create(parent, id, range, pos, size, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - int range, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxGA_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxGaugeNameStr); - - void SetShadowWidth(int w); - void SetBezelFace(int w); - void SetRange(int r); - void SetValue(int pos); - - int GetShadowWidth(void) const ; - int GetBezelFace(void) const ; - int GetRange(void) const ; - int GetValue(void) const ; - - void SetForegroundColour(const wxColour& col); - void SetBackgroundColour(const wxColour& col); - - // Backward compatibility -#if WXWIN_COMPATIBILITY - inline void SetButtonColour(const wxColour& col) { SetForegroundColour(col); } -#endif - - void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - void SetSize(const wxRect& rect, int sizeFlags = wxSIZE_AUTO) - { wxWindow::SetSize(rect, sizeFlags); } - void SetSize(const wxSize& size) { wxWindow::SetSize(size); } - - virtual void Command(wxCommandEvent& WXUNUSED(event)) {} ; - - protected: - int m_rangeMax; - int m_gaugePos; -}; - -#endif - // _GAUGEMSW_H_ diff --git a/include/wx/msw/gaugemsw.h b/include/wx/msw/gaugemsw.h deleted file mode 100644 index b21b098c66..0000000000 --- a/include/wx/msw/gaugemsw.h +++ /dev/null @@ -1,80 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: gaugemsw.h -// Purpose: wxGauge class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _GAUGEMSW_H_ -#define _GAUGEMSW_H_ - -#ifdef __GNUG__ -#pragma interface "gaugemsw.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxGaugeNameStr; - -// Group box -class WXDLLEXPORT wxGaugeMSW: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxGaugeMSW) - public: - inline wxGaugeMSW(void) { m_rangeMax = 0; m_gaugePos = 0; } - - inline wxGaugeMSW(wxWindow *parent, wxWindowID id, - int range, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxGA_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxGaugeNameStr) - { - Create(parent, id, range, pos, size, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - int range, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxGA_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxGaugeNameStr); - - void SetShadowWidth(int w); - void SetBezelFace(int w); - void SetRange(int r); - void SetValue(int pos); - - int GetShadowWidth(void) const ; - int GetBezelFace(void) const ; - int GetRange(void) const ; - int GetValue(void) const ; - - void SetForegroundColour(const wxColour& col); - void SetBackgroundColour(const wxColour& col); - - // Backward compatibility -#if WXWIN_COMPATIBILITY - inline void SetButtonColour(const wxColour& col) { SetForegroundColour(col); } -#endif - - void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - void SetSize(const wxRect& rect, int sizeFlags = wxSIZE_AUTO) - { wxWindow::SetSize(rect, sizeFlags); } - void SetSize(const wxSize& size) { wxWindow::SetSize(size); } - - virtual void Command(wxCommandEvent& WXUNUSED(event)) {} ; - - protected: - int m_rangeMax; - int m_gaugePos; -}; - -#endif - // _GAUGEMSW_H_ diff --git a/include/wx/msw/gdiobj.h b/include/wx/msw/gdiobj.h deleted file mode 100644 index 1950d12ffe..0000000000 --- a/include/wx/msw/gdiobj.h +++ /dev/null @@ -1,67 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: gdiobj.h -// Purpose: wxGDIObject class: base class for other GDI classes -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_GDIOBJ_H_ -#define _WX_GDIOBJ_H_ - -#include "wx/object.h" - -#ifdef __GNUG__ -#pragma interface "gdiobj.h" -#endif - -// wxGDIRefData is the reference-counted data part of a GDI object. -// It contains another counter, m_usageCount, which counts the number -// of times this object has been used; e.g. in SetFont, the count -// is incremented. This is different from reference counting, -// where only the constructors, destructors and (un)clone operations -// affect the reference count. -// THIS IS NOW BEING REMOVED AS REDUNDANT AND ERROR-PRONE - -class WXDLLEXPORT wxGDIRefData: public wxObjectRefData { -public: - inline wxGDIRefData(void) - { - } -}; - -#define M_GDIDATA ((wxGDIRefData *)m_refData) - -class WXDLLEXPORT wxGDIObject: public wxObject -{ -DECLARE_DYNAMIC_CLASS(wxGDIObject) - public: - inline wxGDIObject(void) { m_visible = FALSE; }; - inline ~wxGDIObject(void) {}; - - // Creates the resource - virtual bool RealizeResource(void) { return FALSE; }; - - // Frees the resource - virtual bool FreeResource(bool WXUNUSED(force) = FALSE) { return FALSE; }; - - virtual bool IsFree(void) { return FALSE; }; - - inline bool IsNull(void) const { return (m_refData == 0); } - - // Returns handle. - virtual WXHANDLE GetResourceHandle(void) { return 0; } - - virtual bool GetVisible(void) { return m_visible; } - virtual void SetVisible(bool v) { m_visible = v; } - -protected: - bool m_visible; // Can a pointer to this object be safely taken? - // - only if created within FindOrCreate... -}; - -#endif - // _WX_GDIOBJ_H_ diff --git a/include/wx/msw/hand.cur b/include/wx/msw/hand.cur deleted file mode 100644 index ce349aa3324a9dee883052b92064b2d63300ede7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 326 zcmaLRu?@m75QX92Ae4e49YUfYB_$h>Q5b+7V3Vw3i9tw5o01~R%X5enBm!rB_W3ON z4i*H80@kcJ2G{@xbBWS|*AV0JzD&EM>GCVfYDn@1_AfXkEnH14;bE2Y-DPx!E#F+4 n3(xRBnp{fiOo~hCmIO~8)S0^vy3)0n_&rwA-QRwC&bR3S<|=*2 diff --git a/include/wx/msw/heart.cur b/include/wx/msw/heart.cur deleted file mode 100644 index 53811dcc55b75b2a6d25cc0915f81e65ef55a465..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 326 zcmc)Dy$!=47=+=MP|$@gEiO}L17|Zc8lx}*r3>WCM@SUO3*^wlzjScHu`Cd|@^Eki z?#8Zo8fW93&oU3cSrW#wNyo5CJxP0%+7P7brQ)PK*mu~DY3-19t8Wl0_%gX{)hF}K T5vtFzg_3$|R``u=|J45i+#Y=v diff --git a/include/wx/msw/helpwin.h b/include/wx/msw/helpwin.h deleted file mode 100644 index 308439b8b3..0000000000 --- a/include/wx/msw/helpwin.h +++ /dev/null @@ -1,54 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: helpwin.h -// Purpose: Help system: WinHelp implementation -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_HELPWIN_H_ -#define _WX_HELPWIN_H_ - -#ifdef __GNUG__ -#pragma interface "helpwin.h" -#endif - -#include "wx/wx.h" - -#if wxUSE_HELP - -#include "wx/helpbase.h" - -class WXDLLEXPORT wxWinHelpController: public wxHelpControllerBase -{ - DECLARE_CLASS(wxWinHelpController) - - public: - wxWinHelpController(void); - ~wxWinHelpController(void); - - // Must call this to set the filename and server name - virtual bool Initialize(const wxString& file); - - // If file is "", reloads file given in Initialize - virtual bool LoadFile(const wxString& file = ""); - virtual bool DisplayContents(void); - virtual bool DisplaySection(int sectionNo); - virtual bool DisplayBlock(long blockNo); - virtual bool KeywordSearch(const wxString& k); - - virtual bool Quit(void); - virtual void OnQuit(void); - - inline wxString GetHelpFile(void) const { return m_helpFile; } - -protected: - wxString m_helpFile; -}; - -#endif // wxUSE_HELP -#endif - // _WX_HELPWIN_H_ diff --git a/include/wx/msw/icon.h b/include/wx/msw/icon.h deleted file mode 100644 index 78fd6c42be..0000000000 --- a/include/wx/msw/icon.h +++ /dev/null @@ -1,101 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: icon.h -// Purpose: wxIcon class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_ICON_H_ -#define _WX_ICON_H_ - -#ifdef __GNUG__ -#pragma interface "icon.h" -#endif - -#include "wx/bitmap.h" - -class WXDLLEXPORT wxIconRefData: public wxBitmapRefData -{ - friend class WXDLLEXPORT wxBitmap; - friend class WXDLLEXPORT wxIcon; -public: - wxIconRefData(void); - ~wxIconRefData(void); - -public: - WXHICON m_hIcon; -}; - -#define M_ICONDATA ((wxIconRefData *)m_refData) -#define M_ICONHANDLERDATA ((wxIconRefData *)bitmap->GetRefData()) - -// Icon -class WXDLLEXPORT wxIcon: public wxBitmap -{ - DECLARE_DYNAMIC_CLASS(wxIcon) - -public: - wxIcon(void); - - // Copy constructors - inline wxIcon(const wxIcon& icon) { Ref(icon); } - - wxIcon(const char bits[], int width, int height); - wxIcon(const wxString& name, long flags = wxBITMAP_TYPE_ICO_RESOURCE, - int desiredWidth = -1, int desiredHeight = -1); - ~wxIcon(void); - - bool LoadFile(const wxString& name, long flags = wxBITMAP_TYPE_ICO_RESOURCE, - int desiredWidth = -1, int desiredHeight = -1); - - inline wxIcon& operator = (const wxIcon& icon) { if (*this == icon) return (*this); Ref(icon); return *this; } - inline bool operator == (const wxIcon& icon) { return m_refData == icon.m_refData; } - inline bool operator != (const wxIcon& icon) { return m_refData != icon.m_refData; } - - void SetHICON(WXHICON ico); - inline WXHICON GetHICON(void) const { return (M_ICONDATA ? M_ICONDATA->m_hIcon : 0); } - - virtual bool Ok(void) const { return (m_refData != NULL && M_ICONDATA->m_hIcon) ; } - - bool FreeResource(bool force = FALSE); -}; - -// TODO: Put these in separate, private header - -class WXDLLEXPORT wxICOFileHandler: public wxBitmapHandler -{ - DECLARE_DYNAMIC_CLASS(wxICOFileHandler) -public: - inline wxICOFileHandler(void) - { - m_name = "ICO icon file"; - m_extension = "ico"; - m_type = wxBITMAP_TYPE_ICO; - }; - - virtual bool LoadFile(wxBitmap *bitmap, const wxString& name, long flags, - int desiredWidth = -1, int desiredHeight = -1); -}; - -class WXDLLEXPORT wxICOResourceHandler: public wxBitmapHandler -{ - DECLARE_DYNAMIC_CLASS(wxICOResourceHandler) -public: - inline wxICOResourceHandler(void) - { - m_name = "ICO resource"; - m_extension = "ico"; - m_type = wxBITMAP_TYPE_ICO_RESOURCE; - }; - - virtual bool LoadFile(wxBitmap *bitmap, const wxString& name, long flags, - int desiredWidth = -1, int desiredHeight = -1); - -}; - -#endif - // _WX_ICON_H_ diff --git a/include/wx/msw/imaglist.h b/include/wx/msw/imaglist.h deleted file mode 100644 index 153cfd00d1..0000000000 --- a/include/wx/msw/imaglist.h +++ /dev/null @@ -1,226 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: imaglist.h -// Purpose: wxImageList class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_IMAGLIST_H_ -#define _WX_IMAGLIST_H_ - -#ifdef __GNUG__ -#pragma interface "imaglist.h" -#endif - -#include "wx/bitmap.h" - -/* - * wxImageList is used for wxListCtrl, wxTreeCtrl. These controls refer to - * images for their items by an index into an image list. - * A wxImageList is capable of creating images with optional masks from - * a variety of sources - a single bitmap plus a colour to indicate the mask, - * two bitmaps, or an icon. - * - * Image lists can also create and draw images used for drag and drop functionality. - * This is not yet implemented in wxImageList. We need to discuss a generic API - * for doing drag and drop and see whether it ties in with the Win95 view of it. - * See below for candidate functions and an explanation of how they might be - * used. - */ - -// Flags for Draw -#define wxIMAGELIST_DRAW_NORMAL 0x0001 -#define wxIMAGELIST_DRAW_TRANSPARENT 0x0002 -#define wxIMAGELIST_DRAW_SELECTED 0x0004 -#define wxIMAGELIST_DRAW_FOCUSED 0x0008 - -// Flag values for Set/GetImageList -enum { - wxIMAGE_LIST_NORMAL, // Normal icons - wxIMAGE_LIST_SMALL, // Small icons - wxIMAGE_LIST_STATE // State icons: unimplemented (see WIN32 documentation) -}; - -// Eventually we'll make this a reference-counted wxGDIObject. For -// now, the app must take care of ownership issues. That is, the -// image lists must be explicitly deleted after the control(s) that uses them -// is (are) deleted, or when the app exits. -class WXDLLEXPORT wxImageList: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxImageList) - public: - /* - * Public interface - */ - - wxImageList(void); - - // Creates an image list. - // Specify the width and height of the images in the list, - // whether there are masks associated with them (e.g. if creating images - // from icons), and the initial size of the list. - inline wxImageList(int width, int height, bool mask = TRUE, int initialCount = 1) - { - Create(width, height, mask, initialCount); - } - ~wxImageList(void); - - - // Attributes - //////////////////////////////////////////////////////////////////////////// - - // Returns the number of images in the image list. - int GetImageCount(void) const; - - // Operations - //////////////////////////////////////////////////////////////////////////// - - // Creates an image list - // width, height specify the size of the images in the list (all the same). - // mask specifies whether the images have masks or not. - // initialNumber is the initial number of images to reserve. - bool Create(int width, int height, bool mask = TRUE, int initialNumber = 1); - - // Adds a bitmap, and optionally a mask bitmap. - // Note that wxImageList creates *new* bitmaps, so you may delete - // 'bitmap' and 'mask' after calling Add. - int Add(const wxBitmap& bitmap, const wxBitmap& mask = wxNullBitmap); - - // Adds a bitmap, using the specified colour to create the mask bitmap - // Note that wxImageList creates *new* bitmaps, so you may delete - // 'bitmap' after calling Add. - int Add(const wxBitmap& bitmap, const wxColour& maskColour); - - // Adds a bitmap and mask from an icon. - int Add(const wxIcon& icon); - - // Replaces a bitmap, optionally passing a mask bitmap. - // Note that wxImageList creates new bitmaps, so you may delete - // 'bitmap' and 'mask' after calling Replace. - bool Replace(int index, const wxBitmap& bitmap, const wxBitmap& mask = wxNullBitmap); - -/* Not supported by Win95 - // Replacing a bitmap, using the specified colour to create the mask bitmap - // Note that wxImageList creates new bitmaps, so you may delete - // 'bitmap'. - bool Replace(int index, const wxBitmap& bitmap, const wxColour& maskColour); -*/ - - // Replaces a bitmap and mask from an icon. - // You can delete 'icon' after calling Replace. - bool Replace(int index, const wxIcon& icon); - - // Removes the image at the given index. - bool Remove(int index); - - // Remove all images - bool RemoveAll(void); - - // Draws the given image on a dc at the specified position. - // If 'solidBackground' is TRUE, Draw sets the image list background - // colour to the background colour of the wxDC, to speed up - // drawing by eliminating masked drawing where possible. - bool Draw(int index, wxDC& dc, int x, int y, - int flags = wxIMAGELIST_DRAW_NORMAL, bool solidBackground = FALSE); - - // TODO: miscellaneous functionality -/* - wxIcon *MakeIcon(int index); - bool SetOverlayImage(int index, int overlayMask); - -*/ - - // TODO: Drag-and-drop related functionality. - -#if 0 - // Creates a new drag image by combining the given image (typically a mouse cursor image) - // with the current drag image. - bool SetDragCursorImage(int index, const wxPoint& hotSpot); - - // If successful, returns a pointer to the temporary image list that is used for dragging; - // otherwise, NULL. - // dragPos: receives the current drag position. - // hotSpot: receives the offset of the drag image relative to the drag position. - static wxImageList *GetDragImageList(wxPoint& dragPos, wxPoint& hotSpot); - - // Call this function to begin dragging an image. This function creates a temporary image list - // that is used for dragging. The image combines the specified image and its mask with the - // current cursor. In response to subsequent mouse move messages, you can move the drag image - // by using the DragMove member function. To end the drag operation, you can use the EndDrag - // member function. - bool BeginDrag(int index, const wxPoint& hotSpot); - - // Ends a drag operation. - bool EndDrag(void); - - // Call this function to move the image that is being dragged during a drag-and-drop operation. - // This function is typically called in response to a mouse move message. To begin a drag - // operation, use the BeginDrag member function. - static bool DragMove(const wxPoint& point); - - // During a drag operation, locks updates to the window specified by lockWindow and displays - // the drag image at the position specified by point. - // The coordinates are relative to the window's upper left corner, so you must compensate - // for the widths of window elements, such as the border, title bar, and menu bar, when - // specifying the coordinates. - // If lockWindow is NULL, this function draws the image in the display context associated - // with the desktop window, and coordinates are relative to the upper left corner of the screen. - // This function locks all other updates to the given window during the drag operation. - // If you need to do any drawing during a drag operation, such as highlighting the target - // of a drag-and-drop operation, you can temporarily hide the dragged image by using the - // wxImageList::DragLeave function. - - // lockWindow: pointer to the window that owns the drag image. - // point: position at which to display the drag image. Coordinates are relative to the - // upper left corner of the window (not the client area). - - static bool DragEnter( wxWindow *lockWindow, const wxPoint& point ); - - // Unlocks the window specified by pWndLock and hides the drag image, allowing the - // window to be updated. - static bool DragLeave( wxWindow *lockWindow ); - - /* Here's roughly how you'd use these functions if implemented in this Win95-like way: - - 1) Starting to drag: - - wxImageList *dragImageList = new wxImageList(16, 16, TRUE); - dragImageList->Add(myDragImage); // Provide an image to combine with the current cursor - dragImageList->BeginDrag(0, wxPoint(0, 0)); - wxShowCursor(FALSE); // wxShowCursor not yet implemented in wxWin - myWindow->CaptureMouse(); - - 2) Dragging: - - // Called within mouse move event. Could also use dragImageList instead of assuming - // these are static functions. - // These two functions could possibly be combined into one, since DragEnter is - // a bit obscure. - wxImageList::DragMove(wxPoint(x, y)); // x, y are current cursor position - wxImageList::DragEnter(NULL, wxPoint(x, y)); // NULL assumes dragging across whole screen - - 3) Finishing dragging: - - dragImageList->EndDrag(); - myWindow->ReleaseMouse(); - wxShowCursor(TRUE); -*/ - -#endif - - // Implementation - //////////////////////////////////////////////////////////////////////////// - - // Returns the native image list handle - inline WXHIMAGELIST GetHIMAGELIST(void) const { return m_hImageList; } - -protected: - WXHIMAGELIST m_hImageList; -}; - -#endif - // _WX_IMAGLIST_H_ diff --git a/include/wx/msw/iniconf.h b/include/wx/msw/iniconf.h deleted file mode 100644 index a49994978f..0000000000 --- a/include/wx/msw/iniconf.h +++ /dev/null @@ -1,111 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: include/wx/msw/iniconf.h -// Purpose: INI-file based wxConfigBase implementation -// Author: Vadim Zeitlin -// Modified by: -// Created: 27.07.98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -#ifndef _INICONF_H -#define _INICONF_H - -// ---------------------------------------------------------------------------- -// wxIniConfig is a wxConfig implementation which uses MS Windows INI files to -// store the data. Because INI files don't really support arbitrary nesting of -// groups, we do the following: -// (1) in win.ini file we store all entries in the [vendor] section and -// the value group1/group2/key is mapped to the value group1_group2_key -// in this section, i.e. all path separators are replaced with underscore -// (2) in appname.ini file we map group1/group2/group3/key to the entry -// group2_group3_key in [group1] -// -// Of course, it might lead to indesirable results if '_' is also used in key -// names (i.e. group/key is the same as group_key) and also GetPath() result -// may be not what you would expect it to be. -// -// Another limitation: the keys and section names are never case-sensitive -// which might differ from wxFileConfig it it was compiled with -// wxCONFIG_CASE_SENSITIVE option. -// ---------------------------------------------------------------------------- - -// for this class, "local" file is the file appname.ini and the global file -// is the [vendor] subsection of win.ini (default for "vendor" is to be the -// same as appname). The file name (strAppName parameter) may, in fact, -// contain the full path to the file. If it doesn't, the file is searched for -// in the Windows directory. -class WXDLLEXPORT wxIniConfig : public wxConfigBase -{ -public: - // ctor & dtor - // if strAppName doesn't contain the extension and is not an absolute path, - // ".ini" is appended to it. if strVendor is empty, it's taken to be the - // same as strAppName. - wxIniConfig(const wxString& strAppName = wxEmptyString, const wxString& strVendor = wxEmptyString, - const wxString& localFilename = wxEmptyString, const wxString& globalFilename = wxEmptyString, long style = wxCONFIG_USE_LOCAL_FILE); - virtual ~wxIniConfig(); - - // implement inherited pure virtual functions - virtual void SetPath(const wxString& strPath); - virtual const wxString& GetPath() const; - - virtual bool GetFirstGroup(wxString& str, long& lIndex) const; - virtual bool GetNextGroup (wxString& str, long& lIndex) const; - virtual bool GetFirstEntry(wxString& str, long& lIndex) const; - virtual bool GetNextEntry (wxString& str, long& lIndex) const; - - virtual size_t GetNumberOfEntries(bool bRecursive = FALSE) const; - virtual size_t GetNumberOfGroups(bool bRecursive = FALSE) const; - - virtual bool HasGroup(const wxString& strName) const; - virtual bool HasEntry(const wxString& strName) const; - - // return TRUE if the current group is empty - bool IsEmpty() const; - - // read/write - bool Read(const wxString& key, wxString *pStr) const; - bool Read(const wxString& key, wxString *pStr, const wxString& szDefault) const; - bool Read(const wxString& key, long *plResult) const; - - // The following are necessary to satisfy the compiler - wxString Read(const wxString& key, const wxString& defVal) const - { return wxConfigBase::Read(key, defVal); } - bool Read(const wxString& key, long *pl, long defVal) const - { return wxConfigBase::Read(key, pl, defVal); } - long Read(const wxString& key, long defVal) const - { return wxConfigBase::Read(key, defVal); } - bool Read(const wxString& key, int *pi, int defVal) const - { return wxConfigBase::Read(key, pi, defVal); } - bool Read(const wxString& key, int *pi) const - { return wxConfigBase::Read(key, pi); } - bool Read(const wxString& key, double* val) const - { return wxConfigBase::Read(key, val); } - bool Read(const wxString& key, double* val, double defVal) const - { return wxConfigBase::Read(key, val, defVal); } - - bool Write(const wxString& key, const wxString& szValue); - bool Write(const wxString& key, long lValue); - - virtual bool Flush(bool bCurrentOnly = FALSE); - - virtual bool RenameEntry(const wxString& oldName, const wxString& newName); - virtual bool RenameGroup(const wxString& oldName, const wxString& newName); - - virtual bool DeleteEntry(const wxString& Key, bool bGroupIfEmptyAlso); - virtual bool DeleteGroup(const wxString& szKey); - virtual bool DeleteAll(); - -private: - // helpers - wxString GetPrivateKeyName(const wxString& szKey) const; - wxString GetKeyName(const wxString& szKey) const; - - wxString m_strLocalFilename; // name of the private INI file - wxString m_strGroup, // current group in appname.ini file - m_strPath; // the rest of the path (no trailing '_'!) -}; - -#endif //_INICONF_H diff --git a/include/wx/msw/joystick.h b/include/wx/msw/joystick.h deleted file mode 100644 index 4b15a0245e..0000000000 --- a/include/wx/msw/joystick.h +++ /dev/null @@ -1,93 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: joystick.h -// Purpose: wxJoystick class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_JOYSTICK_H_ -#define _WX_JOYSTICK_H_ - -#ifdef __GNUG__ -#pragma interface "joystick.h" -#endif - -#include "wx/event.h" - -class WXDLLEXPORT wxJoystick: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxJoystick) - public: - /* - * Public interface - */ - - wxJoystick(int joystick = wxJOYSTICK1) { m_joystick = joystick; }; - - // Attributes - //////////////////////////////////////////////////////////////////////////// - - wxPoint GetPosition(void) const; - int GetZPosition(void) const; - int GetButtonState(void) const; - int GetPOVPosition(void) const; - int GetPOVCTSPosition(void) const; - int GetRudderPosition(void) const; - int GetUPosition(void) const; - int GetVPosition(void) const; - int GetMovementThreshold(void) const; - void SetMovementThreshold(int threshold) ; - - // Capabilities - //////////////////////////////////////////////////////////////////////////// - - bool IsOk(void) const; // Checks that the joystick is functioning - int GetNumberJoysticks(void) const ; - int GetManufacturerId(void) const ; - int GetProductId(void) const ; - wxString GetProductName(void) const ; - int GetXMin(void) const; - int GetYMin(void) const; - int GetZMin(void) const; - int GetXMax(void) const; - int GetYMax(void) const; - int GetZMax(void) const; - int GetNumberButtons(void) const; - int GetNumberAxes(void) const; - int GetMaxButtons(void) const; - int GetMaxAxes(void) const; - int GetPollingMin(void) const; - int GetPollingMax(void) const; - int GetRudderMin(void) const; - int GetRudderMax(void) const; - int GetUMin(void) const; - int GetUMax(void) const; - int GetVMin(void) const; - int GetVMax(void) const; - - bool HasRudder(void) const; - bool HasZ(void) const; - bool HasU(void) const; - bool HasV(void) const; - bool HasPOV(void) const; - bool HasPOV4Dir(void) const; - bool HasPOVCTS(void) const; - - // Operations - //////////////////////////////////////////////////////////////////////////// - - // pollingFreq = 0 means that movement events are sent when above the threshold. - // If pollingFreq > 0, events are received every this many milliseconds. - bool SetCapture(wxWindow* win, int pollingFreq = 0); - bool ReleaseCapture(void); - -protected: - int m_joystick; -}; - -#endif - // _WX_JOYSTICK_H_ diff --git a/include/wx/msw/listbox.h b/include/wx/msw/listbox.h deleted file mode 100644 index f64c4741e2..0000000000 --- a/include/wx/msw/listbox.h +++ /dev/null @@ -1,145 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: listbox.h -// Purpose: wxListBox class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_LISTBOX_H_ -#define _WX_LISTBOX_H_ - -#ifdef __GNUG__ -#pragma interface "listbox.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxListBoxNameStr; - -#if wxUSE_OWNER_DRAWN - class WXDLLEXPORT wxOwnerDrawn; - - // define the array of list box items - #include - - #undef WXDLLEXPORTLOCAL - #define WXDLLEXPORTLOCAL WXDLLEXPORT - WX_DEFINE_ARRAY(wxOwnerDrawn *, wxListBoxItemsArray); - #undef WXDLLEXPORTLOCAL - #define WXDLLEXPORTLOCAL - -#endif - -// forward decl for GetSelections() -class wxArrayInt; - -WXDLLEXPORT_DATA(extern const char*) wxEmptyString; - -// List box item -class WXDLLEXPORT wxListBox: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxListBox) - public: - - wxListBox(void); - inline wxListBox(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = NULL, - long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxListBoxNameStr) - { - Create(parent, id, pos, size, n, choices, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = NULL, - long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxListBoxNameStr); - - ~wxListBox(); - - bool MSWCommand(WXUINT param, WXWORD id); - -#if wxUSE_OWNER_DRAWN - bool MSWOnMeasure(WXMEASUREITEMSTRUCT *item); - bool MSWOnDraw(WXDRAWITEMSTRUCT *item); - - // plug-in for derived classes - virtual wxOwnerDrawn *CreateItem(size_t n); - - // allows to get the item and use SetXXX functions to set it's appearance - wxOwnerDrawn *GetItem(size_t n) const { return m_aItems[n]; } -#endif - - virtual void Append(const wxString& item); - virtual void Append(const wxString& item, char *clientData); - virtual void Set(int n, const wxString* choices, char **clientData = NULL); - virtual int FindString(const wxString& s) const ; - virtual void Clear(void); - virtual void SetSelection(int n, bool select = TRUE); - - virtual void Deselect(int n); - - // For single choice list item only - virtual int GetSelection() const ; - virtual void Delete(int n); - virtual char *GetClientData(int n) const ; - virtual void SetClientData(int n, char *clientData); - virtual void SetString(int n, const wxString& s); - - // For single or multiple choice list item - virtual int GetSelections(wxArrayInt& aSelections) const; - virtual bool Selected(int n) const ; - virtual wxString GetString(int n) const ; - virtual void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - void SetSize(const wxRect& rect, int sizeFlags = wxSIZE_AUTO) - { wxWindow::SetSize(rect, sizeFlags); } - void SetSize(const wxSize& size) { wxWindow::SetSize(size); } - - // Set the specified item at the first visible item - // or scroll to max range. - virtual void SetFirstItem(int n) ; - virtual void SetFirstItem(const wxString& s) ; - - virtual void InsertItems(int nItems, const wxString items[], int pos); - - virtual wxString GetStringSelection(void) const ; - virtual bool SetStringSelection(const wxString& s, bool flag = TRUE); - virtual int Number(void) const ; - - void Command(wxCommandEvent& event); - - // Windows-specific code to set the horizontal extent of - // the listbox, if necessary. If s is non-NULL, it's - // used to calculate the horizontal extent. - // Otherwise, all strings are used. - virtual void SetHorizontalExtent(const wxString& s = wxEmptyString); - - virtual WXHBRUSH OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor, - WXUINT message, WXWPARAM wParam, WXLPARAM lParam); - - virtual long MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam); - virtual void SetupColours(void); - - protected: - int m_noItems; - int m_selected; - -#if wxUSE_OWNER_DRAWN - // control items - wxListBoxItemsArray m_aItems; -#endif - -}; - -#endif - // _WX_LISTBOX_H_ diff --git a/include/wx/msw/listctrl.h b/include/wx/msw/listctrl.h deleted file mode 100644 index 863f46b01c..0000000000 --- a/include/wx/msw/listctrl.h +++ /dev/null @@ -1,480 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: listctrl.h -// Purpose: wxListCtrl class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_LISTCTRL_H_ -#define _WX_LISTCTRL_H_ - -#ifdef __GNUG__ -#pragma interface "listctrl.h" -#endif - -#include "wx/control.h" -#include "wx/event.h" -#include "wx/imaglist.h" - -/* - The wxListCtrl can show lists of items in four different modes: - wxLC_LIST: multicolumn list view, with optional small icons (icons could be - optional for some platforms). Columns are computed automatically, - i.e. you don't set columns as in wxLC_REPORT. In other words, - the list wraps, unlike a wxListBox. - wxLC_REPORT: single or multicolumn report view (with optional header) - wxLC_ICON: large icon view, with optional labels - wxLC_SMALL_ICON: small icon view, with optional labels - - You can change the style dynamically, either with SetSingleStyle or - SetWindowStyleFlag. - - Further window styles: - - wxLC_ALIGN_TOP icons align to the top (default) - wxLC_ALIGN_LEFT icons align to the left - wxLC_AUTOARRANGE icons arrange themselves - wxLC_USER_TEXT the app provides label text on demand, except for column headers - wxLC_EDIT_LABELS labels are editable: app will be notified. - wxLC_NO_HEADER no header in report mode - wxLC_NO_SORT_HEADER can't click on header - wxLC_SINGLE_SEL single selection - wxLC_SORT_ASCENDING sort ascending (must still supply a comparison callback in SortItems) - wxLC_SORT_DESCENDING sort descending (ditto) - - Items are referred to by their index (position in the list starting from zero). - - Label text is supplied via insertion/setting functions and is stored by the - control, unless the wxLC_USER_TEXT style has been specified, in which case - the app will be notified when text is required (see sample). - - Images are dealt with by (optionally) associating 3 image lists with the control. - Zero-based indexes into these image lists indicate which image is to be used for - which item. Each image in an image list can contain a mask, and can be made out - of either a bitmap, two bitmaps or an icon. See ImagList.h for more details. - - Notifications are passed via the wxWindows 2.0 event system, or using virtual - functions in wxWindows 1.66. - - See the sample wxListCtrl app for API usage. - - TODO: - - addition of further convenience functions - to avoid use of wxListItem in some functions - - state/overlay images: probably not needed. - - in Win95, you can be called back to supply other information - besides text, such as state information. This saves no memory - and is probably superfluous to requirements. - - discover why SetWindowLong doesn't properly change the - style, requiring RecreateWindow instead. - - testing of whole API, extending current sample. - - - */ - -// Mask flags to tell app/GUI what fields of wxListItem are valid -#define wxLIST_MASK_STATE 0x0001 -#define wxLIST_MASK_TEXT 0x0002 -#define wxLIST_MASK_IMAGE 0x0004 -#define wxLIST_MASK_DATA 0x0008 -#define wxLIST_SET_ITEM 0x0010 -#define wxLIST_MASK_WIDTH 0x0020 -#define wxLIST_MASK_FORMAT 0x0040 - -// State flags for indicating the state of an item -#define wxLIST_STATE_DONTCARE 0x0000 -#define wxLIST_STATE_DROPHILITED 0x0001 -#define wxLIST_STATE_FOCUSED 0x0002 -#define wxLIST_STATE_SELECTED 0x0004 -#define wxLIST_STATE_CUT 0x0008 - -// Hit test flags, used in HitTest -#define wxLIST_HITTEST_ABOVE 0x0001 // Above the client area. -#define wxLIST_HITTEST_BELOW 0x0002 // Below the client area. -#define wxLIST_HITTEST_NOWHERE 0x0004 // In the client area but below the last item. -#define wxLIST_HITTEST_ONITEMICON 0x0020 // On the bitmap associated with an item. -#define wxLIST_HITTEST_ONITEMLABEL 0x0080 // On the label (string) associated with an item. -#define wxLIST_HITTEST_ONITEMRIGHT 0x0100 // In the area to the right of an item. -#define wxLIST_HITTEST_ONITEMSTATEICON 0x0200 // On the state icon for a tree view item that is in a user-defined state. -#define wxLIST_HITTEST_TOLEFT 0x0400 // To the left of the client area. -#define wxLIST_HITTEST_TORIGHT 0x0800 // To the right of the client area. - -#define wxLIST_HITTEST_ONITEM (wxLIST_HITTEST_ONITEMICON | wxLIST_HITTEST_ONITEMLABEL wxLIST_HITTEST_ONITEMSTATEICON) - -// Flags for GetNextItem -enum { - wxLIST_NEXT_ABOVE, // Searches for an item above the specified item - wxLIST_NEXT_ALL, // Searches for subsequent item by index - wxLIST_NEXT_BELOW, // Searches for an item below the specified item - wxLIST_NEXT_LEFT, // Searches for an item to the left of the specified item - wxLIST_NEXT_RIGHT, // Searches for an item to the right of the specified item -}; - -// Alignment flags for Arrange -enum { - wxLIST_ALIGN_DEFAULT, - wxLIST_ALIGN_LEFT, - wxLIST_ALIGN_TOP, - wxLIST_ALIGN_SNAP_TO_GRID -}; - -// Column format -enum { - wxLIST_FORMAT_LEFT, - wxLIST_FORMAT_RIGHT, - wxLIST_FORMAT_CENTRE, - wxLIST_FORMAT_CENTER = wxLIST_FORMAT_CENTRE -}; - -// Autosize values for SetColumnWidth -enum { - wxLIST_AUTOSIZE = -1, - wxLIST_AUTOSIZE_USEHEADER = -2 -}; - -// Flag values for GetItemRect -enum { - wxLIST_RECT_BOUNDS, - wxLIST_RECT_ICON, - wxLIST_RECT_LABEL -}; - -// Flag values for FindItem -enum { - wxLIST_FIND_UP, - wxLIST_FIND_DOWN, - wxLIST_FIND_LEFT, - wxLIST_FIND_RIGHT -}; - -// wxListItem: data representing an item, or report field. -// It also doubles up to represent entire column information -// when inserting or setting a column. -class WXDLLEXPORT wxListItem: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxListItem) -public: - long m_mask; // Indicates what fields are valid - long m_itemId; // The zero-based item position - int m_col; // Zero-based column, if in report mode - long m_state; // The state of the item - long m_stateMask; // Which flags of m_state are valid (uses same flags) - wxString m_text; // The label/header text - int m_image; // The zero-based index into an image list - long m_data; // App-defined data - - // For columns only - int m_format; // left, right, centre - int m_width; // width of column - - wxListItem(void); -}; - -// type of compare function for wxListCtrl sort operation -typedef int (*wxListCtrlCompare)(long item1, long item2, long sortData); - -class WXDLLEXPORT wxListCtrl: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxListCtrl) - public: - /* - * Public interface - */ - - wxListCtrl(void); - - inline wxListCtrl(wxWindow *parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxLC_ICON, const wxValidator& validator = wxDefaultValidator, - const wxString& name = "listCtrl") - { - Create(parent, id, pos, size, style, validator, name); - } - ~wxListCtrl(void); - - bool Create(wxWindow *parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxLC_ICON, const wxValidator& validator = wxDefaultValidator, const wxString& name = "wxListCtrl"); - - - // Attributes - //////////////////////////////////////////////////////////////////////////// - - // Sets the background colour (GetBackgroundColour already implicit in - // wxWindow class) - void SetBackgroundColour(const wxColour& col); - - // Gets information about this column - bool GetColumn(int col, wxListItem& item) const; - - // Sets information about this column - bool SetColumn(int col, wxListItem& item) ; - - // Gets the column width - int GetColumnWidth(int col) const; - - // Sets the column width - bool SetColumnWidth(int col, int width) ; - - // 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) - int GetCountPerPage(void) const; - - // Gets the edit control for editing labels. - wxTextCtrl* GetEditControl(void) const; - - // Gets information about the item - bool GetItem(wxListItem& info) const ; - - // Sets information about the item - bool SetItem(wxListItem& info) ; - - // Sets a string field at a particular column - long SetItem(long index, int col, const wxString& label, int imageId = -1); - - // Gets the item state - int GetItemState(long item, long stateMask) const ; - - // Sets the item state - bool SetItemState(long item, long state, long stateMask) ; - - // Sets the item image - bool SetItemImage(long item, int image, int selImage) ; - - // Gets the item text - wxString GetItemText(long item) const ; - - // Sets the item text - void SetItemText(long item, const wxString& str) ; - - // Gets the item data - long GetItemData(long item) const ; - - // Sets the item data - bool SetItemData(long item, long data) ; - - // Gets the item rectangle - bool GetItemRect(long item, wxRect& rect, int code = wxLIST_RECT_BOUNDS) const ; - - // Gets the item position - bool GetItemPosition(long item, wxPoint& pos) const ; - - // Sets the item position - bool SetItemPosition(long item, const wxPoint& pos) ; - - // Gets the number of items in the list control - int GetItemCount(void) const; - - // Gets the number of columns in the list control - int GetColumnCount(void) const; - - // Retrieves the spacing between icons in pixels. - // If small is TRUE, gets the spacing for the small icon - // view, otherwise the large icon view. - int GetItemSpacing(bool isSmall) const; - - // Gets the number of selected items in the list control - int GetSelectedItemCount(void) const; - - // Gets the text colour of the listview - wxColour GetTextColour(void) const; - - // Sets the text colour of the listview - void SetTextColour(const wxColour& col); - - // Gets the index of the topmost visible item when in - // list or report view - long GetTopItem(void) const ; - - // Add or remove a single window style - void SetSingleStyle(long style, bool add = TRUE) ; - - // Set the whole window style - void SetWindowStyleFlag(long style) ; - - // Searches for an item, starting from 'item'. - // item can be -1 to find the first item that matches the - // specified flags. - // Returns the item or -1 if unsuccessful. - long GetNextItem(long item, int geometry = wxLIST_NEXT_ALL, int state = wxLIST_STATE_DONTCARE) const ; - - // Implementation: converts wxWindows style to MSW style. - // Can be a single style flag or a bit list. - // oldStyle is 'normalised' so that it doesn't contain - // conflicting styles. - long ConvertToMSWStyle(long& oldStyle, long style) const; - - // Gets one of the three image lists - wxImageList *GetImageList(int which) const ; - - // Sets the image list - // N.B. There's a quirk in the Win95 list view implementation. - // If in wxLC_LIST mode, it'll *still* display images by the labels if - // there's a small-icon image list set for the control - even though you - // haven't specified wxLIST_MASK_IMAGE when inserting. - // So you have to set a NULL small-icon image list to be sure that - // the wxLC_LIST mode works without icons. Of course, you may want icons... - void SetImageList(wxImageList *imageList, int which) ; - - // Operations - //////////////////////////////////////////////////////////////////////////// - - // Arranges the items - bool Arrange(int flag = wxLIST_ALIGN_DEFAULT); - - // Deletes an item - bool DeleteItem(long item); - - // Deletes all items - bool DeleteAllItems(void) ; - - // Deletes a column - bool DeleteColumn(int col); - - // Deletes all columns - bool DeleteAllColumns(void); - - // Clears items, and columns if there are any. - void ClearAll(void); - - // Edit the label - wxTextCtrl* EditLabel(long item, wxClassInfo* textControlClass = CLASSINFO(wxTextCtrl)); - - // End label editing, optionally cancelling the edit - bool EndEditLabel(bool cancel); - - // Ensures this item is visible - bool EnsureVisible(long item) ; - - // Find an item whose label matches this string, starting from the item after 'start' - // or the beginning if 'start' is -1. - long FindItem(long start, const wxString& str, bool partial = FALSE); - - // Find an item whose data matches this data, starting from the item after 'start' - // or the beginning if 'start' is -1. - long FindItem(long start, long data); - - // Find an item nearest this position in the specified direction, starting from - // the item after 'start' or the beginning if 'start' is -1. - long FindItem(long start, const wxPoint& pt, int direction); - - // Determines which item (if any) is at the specified point, - // giving details in 'flags' (see wxLIST_HITTEST_... flags above) - long HitTest(const wxPoint& point, int& flags); - - // Inserts an item, returning the index of the new item if successful, - // -1 otherwise. - // TOD: Should also have some further convenience functions - // which don't require setting a wxListItem object - long InsertItem(wxListItem& info); - - // Insert a string item - long InsertItem(long index, const wxString& label); - - // Insert an image item - long InsertItem(long index, int imageIndex); - - // Insert an image/string item - long InsertItem(long index, const wxString& label, int imageIndex); - - // For list view mode (only), inserts a column. - long InsertColumn(long col, wxListItem& info); - - long InsertColumn(long col, const wxString& heading, int format = wxLIST_FORMAT_LEFT, - int width = -1); - - // Scrolls the list control. If in icon, small icon or report view mode, - // x specifies the number of pixels to scroll. If in list view mode, x - // specifies the number of columns to scroll. - // If in icon, small icon or list view mode, y specifies the number of pixels - // to scroll. If in report view mode, y specifies the number of lines to scroll. - bool ScrollList(int dx, int dy); - - // Sort items. - - // 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. - bool SortItems(wxListCtrlCompare fn, long data); - -/* Why should we need this function? Leave for now. - * WE NEED IT because item data may have changed, - * but the display needs refreshing (in string callback mode) - // Updates an item. If the list control has the wxLI_AUTO_ARRANGE style, - // the items will be rearranged. - bool Update(long item); -*/ - - void Command(wxCommandEvent& event) { ProcessCommand(event); }; - - // IMPLEMENTATION - virtual bool MSWCommand(WXUINT param, WXWORD id); - virtual bool MSWNotify(WXWPARAM wParam, WXLPARAM lParam, WXLPARAM *result); - - // Recreate window - seems to be necessary when changing a style. - void RecreateWindow(void); - - // Add to pool: necessary because Windows needs to have a string - // still exist across 3 callbacks. - char *AddPool(const wxString& str); - -protected: - wxTextCtrl* m_textCtrl; // The control used for editing a label - wxImageList * m_imageListNormal; // The image list for normal icons - wxImageList * m_imageListSmall; // The image list for small icons - wxImageList * m_imageListState; // The image list state icons (not implemented yet) - - long m_baseStyle; // Basic Windows style flags, for recreation purposes - wxStringList m_stringPool; // Pool of 3 strings to satisfy Windows callback - // requirements - int m_colCount; // Windows doesn't have GetColumnCount so must - // keep track of inserted/deleted columns - -}; - -class WXDLLEXPORT wxListEvent : public wxNotifyEvent -{ -public: - wxListEvent(wxEventType commandType = wxEVT_NULL, int id = 0); - - int m_code; - long m_itemIndex; - long m_oldItemIndex; - int m_col; - bool m_cancelled; - wxPoint m_pointDrag; - - wxListItem m_item; - - DECLARE_DYNAMIC_CLASS(wxListEvent) -}; - -typedef void (wxEvtHandler::*wxListEventFunction)(wxListEvent&); - -#define EVT_LIST_BEGIN_DRAG(id, fn) { wxEVT_COMMAND_LIST_BEGIN_DRAG, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL }, -#define EVT_LIST_BEGIN_RDRAG(id, fn) { wxEVT_COMMAND_LIST_BEGIN_RDRAG, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL }, -#define EVT_LIST_BEGIN_LABEL_EDIT(id, fn) { wxEVT_COMMAND_LIST_BEGIN_LABEL_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL }, -#define EVT_LIST_END_LABEL_EDIT(id, fn) { wxEVT_COMMAND_LIST_END_LABEL_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL }, -#define EVT_LIST_DELETE_ITEM(id, fn) { wxEVT_COMMAND_LIST_DELETE_ITEM, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL }, -#define EVT_LIST_DELETE_ALL_ITEMS(id, fn) { wxEVT_COMMAND_LIST_DELETE_ALL_ITEMS, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL }, -#define EVT_LIST_GET_INFO(id, fn) { wxEVT_COMMAND_LIST_GET_INFO, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL }, -#define EVT_LIST_SET_INFO(id, fn) { wxEVT_COMMAND_LIST_SET_INFO, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL }, -#define EVT_LIST_ITEM_SELECTED(id, fn) { wxEVT_COMMAND_LIST_ITEM_SELECTED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL }, -#define EVT_LIST_ITEM_DESELECTED(id, fn) { wxEVT_COMMAND_LIST_ITEM_DESELECTED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL }, -#define EVT_LIST_KEY_DOWN(id, fn) { wxEVT_COMMAND_LIST_KEY_DOWN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL }, -#define EVT_LIST_INSERT_ITEM(id, fn) { wxEVT_COMMAND_LIST_INSERT_ITEM, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL }, -#define EVT_LIST_COL_CLICK(id, fn) { wxEVT_COMMAND_LIST_COL_CLICK, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL }, -#define EVT_LIST_ITEM_ACTIVATED(id, fn) { wxEVT_COMMAND_LIST_ITEM_ACTIVATED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, (wxObject *) NULL }, - -#endif - // _WX_LISTCTRL_H_ diff --git a/include/wx/msw/magnif1.cur b/include/wx/msw/magnif1.cur deleted file mode 100644 index bb4c8978d6ff06cf471120492e33ef0ec3aa5a9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 326 zcma)$I}Uj%~Y^Ahh2U5B#=yVarEx8MAFE4>7bUl^2Og?mRSL=Gs&6db^TgQ3<2@rcN diff --git a/include/wx/msw/mdi.h b/include/wx/msw/mdi.h deleted file mode 100644 index 35879cd380..0000000000 --- a/include/wx/msw/mdi.h +++ /dev/null @@ -1,214 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: mdi.h -// Purpose: MDI (Multiple Document Interface) classes -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_MDI_H_ -#define _WX_MDI_H_ - -#ifdef __GNUG__ -#pragma interface "mdi.h" -#endif - -#include "wx/frame.h" - -WXDLLEXPORT_DATA(extern const char*) wxFrameNameStr; -WXDLLEXPORT_DATA(extern const char*) wxStatusLineNameStr; - -class WXDLLEXPORT wxMDIClientWindow; -class WXDLLEXPORT wxMDIChildFrame; - -class WXDLLEXPORT wxMDIParentFrame: public wxFrame -{ - DECLARE_DYNAMIC_CLASS(wxMDIParentFrame) - - friend class WXDLLEXPORT wxMDIChildFrame; - public: - - wxMDIParentFrame(void); - inline wxMDIParentFrame(wxWindow *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE | wxVSCROLL | wxHSCROLL, - const wxString& name = wxFrameNameStr) - { - Create(parent, id, title, pos, size, style, name); - } - - ~wxMDIParentFrame(void); - - bool Create(wxWindow *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE | wxVSCROLL | wxHSCROLL, - const wxString& name = wxFrameNameStr); - -/* -#if WXWIN_COMPATIBILITY - virtual void OldOnActivate(bool flag); - virtual void OldOnSize(int x, int y); -#endif -*/ - - void OnSize(wxSizeEvent& event); - void OnActivate(wxActivateEvent& event); - - void SetMenuBar(wxMenuBar *menu_bar); - - // Gets the size available for subwindows after menu size, toolbar size - // and status bar size have been subtracted. If you want to manage your own - // toolbar(s), don't call SetToolBar. - void GetClientSize(int *width, int *height) const; - wxSize GetClientSize() const { return wxWindow::GetClientSize(); } - - // Get the active MDI child window (Windows only) - wxMDIChildFrame *GetActiveChild(void) const ; - - // Get the client window - inline wxMDIClientWindow *GetClientWindow(void) const ; - - // Create the client window class (don't Create the window, - // just return a new class) - virtual wxMDIClientWindow *OnCreateClient(void) ; - - inline WXHMENU GetWindowMenu(void) const ; - - // MDI operations - virtual void Cascade(void); - virtual void Tile(void); - virtual void ArrangeIcons(void); - virtual void ActivateNext(void); - virtual void ActivatePrevious(void); - - // Handlers - void MSWOnSize(int x, int y, WXUINT flag); - bool MSWOnCommand(WXWORD id, WXWORD cmd, WXHWND control); - void MSWOnMenuHighlight(WXWORD item, WXWORD flags, WXHMENU sysmenu); - bool MSWProcessMessage(WXMSG *msg); - bool MSWTranslateMessage(WXMSG *msg); - void MSWOnCreate(WXLPCREATESTRUCT cs); - long MSWDefWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam); - bool MSWOnEraseBkgnd(WXHDC pDC); - bool MSWOnDestroy(void); - bool MSWOnActivate(int state, bool minimized, WXHWND activate); - - // Responds to colour changes - void OnSysColourChanged(wxSysColourChangedEvent& event); - - protected: - wxMDIClientWindow * m_clientWindow; - wxMDIChildFrame * m_currentChild; - WXHMENU m_windowMenu; - bool m_parentFrameActive; // TRUE if MDI Frame is intercepting - // commands, not child -DECLARE_EVENT_TABLE() -}; - -// Inlines -inline wxMDIClientWindow *wxMDIParentFrame::GetClientWindow(void) const { return m_clientWindow; } -inline WXHMENU wxMDIParentFrame::GetWindowMenu(void) const { return m_windowMenu; } - -class WXDLLEXPORT wxMDIChildFrame: public wxFrame -{ - DECLARE_DYNAMIC_CLASS(wxMDIChildFrame) - public: - - wxMDIChildFrame(void); - inline wxMDIChildFrame(wxMDIParentFrame *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE, - const wxString& name = wxFrameNameStr) - { - Create(parent, id, title, pos, size, style, name); - } - - ~wxMDIChildFrame(void); - - bool Create(wxMDIParentFrame *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE, - const wxString& name = wxFrameNameStr); - - // Set menu bar - void SetMenuBar(wxMenuBar *menu_bar); - - void SetClientSize(int width, int height); - void SetClientSize(const wxSize& sz) { wxWindow::SetClientSize(sz); } - - void GetPosition(int *x, int *y) const ; - wxPoint GetPosition() const { return wxWindow::GetPosition(); } - - // MDI operations - virtual void Maximize(void); - virtual void Restore(void); - virtual void Activate(void); - - // Handlers - - long MSWOnMDIActivate(long bActivate, WXHWND, WXHWND); - void MSWOnSize(int x, int y, WXUINT); - void MSWOnWindowPosChanging(void *lpPos); - bool MSWOnCommand(WXWORD id, WXWORD cmd, WXHWND control); - long MSWDefWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam); - bool MSWProcessMessage(WXMSG *msg); - bool MSWTranslateMessage(WXMSG *msg); - void MSWDestroyWindow(void); - - // Implementation - bool ResetWindowStyle(void *vrect); - protected: -// bool m_active; -}; - -class WXDLLEXPORT wxMDIClientWindow: public wxWindow -{ - DECLARE_DYNAMIC_CLASS(wxMDIClientWindow) - public: - - wxMDIClientWindow(void) ; - inline wxMDIClientWindow(wxMDIParentFrame *parent, long style = 0) - { - CreateClient(parent, style); - } - - ~wxMDIClientWindow(void); - - // Note: this is virtual, to allow overridden behaviour. - virtual bool CreateClient(wxMDIParentFrame *parent, long style = wxVSCROLL | wxHSCROLL); - - // Explicitly call default scroll behaviour - void OnScroll(wxScrollEvent& event); - - // Window procedure - virtual long MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam); - - // Calls an appropriate default window procedure - virtual long MSWDefWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam); - - // Should hand the message to the default proc - long MSWOnMDIActivate(long bActivate, WXHWND, WXHWND); - -protected: - int m_scrollX; - int m_scrollY; -DECLARE_EVENT_TABLE() -}; - -#endif - // _WX_MDI_H_ diff --git a/include/wx/msw/mdi.ico b/include/wx/msw/mdi.ico deleted file mode 100644 index 00c8d8b8a4c243143ecca37973cbc13ea97484a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmchUJ#K_B5JqRCNGRTwoGLYCj*%nLZOak1r2%SJ^e*5AzCy~-Slqz-2D7YIiMGrK zV|e~N<3EuDPg%Z;>gPq|gYPF%5?{nYUTG2D-x@`DWgPQ|mS35sN$R@BNb4&p=^w$P zT{JQ4`{=WNbJI3$%>LkgoExMp-Va9~6>m)6oweSOId1unJjf&8$M5yXpPQKHXFjbT z<4kPpVSc#Xnf0OO#$+g?eSd8KsW=nWVq8{AHnS-AlC0H^#S{iEDoE^N7t>eRXJb=1 z2|dO!pr~95uvhLYY!^a0O)I+s+lAE0#%jCN!Gn$`8^7!H#@76^&e^5#c5!R{ijrDC i^O{{4>dU3a*WwHatd*Nyj8M@zy>r#Rzo&=s59SqGV?PG~ diff --git a/include/wx/msw/menu.h b/include/wx/msw/menu.h deleted file mode 100644 index 6ca343d1af..0000000000 --- a/include/wx/msw/menu.h +++ /dev/null @@ -1,185 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: menu.h -// Purpose: wxMenu, wxMenuBar classes -// Author: Julian Smart -// Modified by: Vadim Zeitlin (wxMenuItem is now in separate file) -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_MENU_H_ -#define _WX_MENU_H_ - -#ifdef __GNUG__ -#pragma interface "menu.h" -#endif - -#include "wx/defs.h" -#include "wx/event.h" - -class WXDLLEXPORT wxMenuItem; -class WXDLLEXPORT wxMenuBar; -class WXDLLEXPORT wxMenu; - -WXDLLEXPORT_DATA(extern const char*) wxEmptyString; - -// ---------------------------------------------------------------------------- -// Menu -// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxMenu: public wxEvtHandler -{ - DECLARE_DYNAMIC_CLASS(wxMenu) - -public: - // ctor & dtor - wxMenu(const wxString& title = wxEmptyString, const wxFunction func = NULL); - ~wxMenu(); - - // construct menu - // append items to the menu - // separator line - void AppendSeparator(); - // normal item - void Append(int id, const wxString& Label, const wxString& helpString = wxEmptyString, - bool checkable = FALSE); - // a submenu - void Append(int id, const wxString& Label, wxMenu *SubMenu, - const wxString& helpString = wxEmptyString); - // the most generic form (create wxMenuItem first and use it's functions) - void Append(wxMenuItem *pItem); - // insert a break in the menu - void Break(); - // delete an item - void Delete(int id); /* If it's a submenu, menu is not destroyed. VZ: why? */ - - // Client data - inline void SetClientData(void* clientData) { m_clientData = clientData; } - inline void* GetClientData() const { return m_clientData; } - - // menu item control - void Enable(int id, bool Flag); - bool Enabled(int id) const; - inline bool IsEnabled(int id) const { return Enabled(id); }; - void Check(int id, bool Flag); - bool Checked(int id) const; - inline bool IsChecked(int id) const { return Checked(id); }; - - // item properties - // title - void SetTitle(const wxString& label); - const wxString GetTitle() const; - // label - void SetLabel(int id, const wxString& label); - wxString GetLabel(int id) const; - // help string - virtual void SetHelpString(int id, const wxString& helpString); - virtual wxString GetHelpString(int id) const ; - - // find item - // Finds the item id matching the given string, wxNOT_FOUND if not found. - virtual int FindItem(const wxString& itemString) const ; - // Find wxMenuItem by ID, and item's menu too if itemMenu is !NULL. - wxMenuItem *FindItemForId(int itemId, wxMenu **itemMenu = NULL) const; - - void ProcessCommand(wxCommandEvent& event); - inline void Callback(const wxFunction func) { m_callback = func; } - - virtual void SetParent(wxEvtHandler *parent) { m_parent = parent; } - inline void SetEventHandler(wxEvtHandler *handler) { m_eventHandler = handler; } - inline wxEvtHandler *GetEventHandler() { return m_eventHandler; } - - inline wxList& GetItems() const { return (wxList&) m_menuItems; } - - // IMPLEMENTATION - bool MSWCommand(WXUINT param, WXWORD id); - - void SetInvokingWindow(wxWindow *pWin) { m_pInvokingWindow = pWin; } - wxWindow *GetInvokingWindow() const { return m_pInvokingWindow; } - - // semi-private accessors - // get the window which contains this menu - wxWindow *GetWindow() const; - // get the menu handle - WXHMENU GetHMenu() const; - -private: - bool m_doBreak ; - -public: - // This is used when m_hMenu is NULL because we don't want to - // delete it in ~wxMenu (it's been added to a parent menu). - // But we'll still need the handle for other purposes. - // Might be better to have a flag saying whether it's deleteable or not. - WXHMENU m_savehMenu ; // Used for Enable() on popup - WXHMENU m_hMenu; - wxFunction m_callback; - - int m_noItems; - wxString m_title; - wxMenu * m_topLevelMenu; - wxMenuBar * m_menuBar; - wxList m_menuItems; - wxEvtHandler * m_parent; - wxEvtHandler * m_eventHandler; - wxWindow *m_pInvokingWindow; - void* m_clientData; -}; - -// ---------------------------------------------------------------------------- -// Menu Bar (a la Windows) -// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxFrame; -class WXDLLEXPORT wxMenuBar: public wxEvtHandler -{ - DECLARE_DYNAMIC_CLASS(wxMenuBar) - -public: - wxMenuBar(); - wxMenuBar(int n, wxMenu *menus[], const wxString titles[]); - ~wxMenuBar(); - - void Append(wxMenu *menu, const wxString& title); - // Must only be used AFTER menu has been attached to frame, - // otherwise use individual menus to enable/disable items - void Enable(int Id, bool Flag); - bool Enabled(int Id) const ; - inline bool IsEnabled(int Id) const { return Enabled(Id); }; - void EnableTop(int pos, bool Flag); - void Check(int id, bool Flag); - bool Checked(int id) const ; - inline bool IsChecked(int Id) const { return Checked(Id); }; - void SetLabel(int id, const wxString& label) ; - wxString GetLabel(int id) const ; - void SetLabelTop(int pos, const wxString& label) ; - wxString GetLabelTop(int pos) const ; - virtual void Delete(wxMenu *menu, int index = 0); /* Menu not destroyed */ - virtual bool OnAppend(wxMenu *menu, const char *title); - virtual bool OnDelete(wxMenu *menu, int index); - - virtual void SetHelpString(int Id, const wxString& helpString); - virtual wxString GetHelpString(int Id) const ; - - virtual int FindMenuItem(const wxString& menuString, const wxString& itemString) const ; - - // Find wxMenuItem for item ID, and return item's - // menu too if itemMenu is non-NULL. - wxMenuItem *FindItemForId(int itemId, wxMenu **menuForItem = NULL) const ; - - inline void SetEventHandler(wxEvtHandler *handler) { m_eventHandler = handler; } - inline wxEvtHandler *GetEventHandler() { return m_eventHandler; } - - inline int GetMenuCount() const { return m_menuCount; } - inline wxMenu* GetMenu(int i) const { return m_menus[i]; } - - public: - wxEvtHandler * m_eventHandler; - int m_menuCount; - wxMenu ** m_menus; - wxString * m_titles; - wxFrame * m_menuBarFrame; - WXHMENU m_hMenu; -}; - -#endif // _WX_MENU_H_ diff --git a/include/wx/msw/menuitem.h b/include/wx/msw/menuitem.h deleted file mode 100644 index 9c912967f1..0000000000 --- a/include/wx/msw/menuitem.h +++ /dev/null @@ -1,95 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: menuitem.h -// Purpose: wxMenuItem class -// Author: Vadim Zeitlin -// Modified by: -// Created: 11.11.97 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows license -/////////////////////////////////////////////////////////////////////////////// - -#ifndef _MENUITEM_H -#define _MENUITEM_H - -#ifdef __GNUG__ -#pragma interface "menuitem.h" -#endif - -// ---------------------------------------------------------------------------- -// headers -// ---------------------------------------------------------------------------- - -#include "wx/setup.h" - -// an exception to the general rule that a normal header doesn't include other -// headers - only because ownerdrw.h is not always included and I don't want -// to write #ifdef's everywhere... -#if wxUSE_OWNER_DRAWN -#include "wx/ownerdrw.h" -#endif - -// ---------------------------------------------------------------------------- -// constants -// ---------------------------------------------------------------------------- - -// id for a separator line in the menu (invalid for normal item) -#define ID_SEPARATOR (-1) - -// ---------------------------------------------------------------------------- -// wxMenuItem: an item in the menu, optionally implements owner-drawn behaviour -// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxMenuItem: public wxObject -#if wxUSE_OWNER_DRAWN - , public wxOwnerDrawn -#endif -{ -DECLARE_DYNAMIC_CLASS(wxMenuItem) - -public: - // ctor & dtor - wxMenuItem(wxMenu *pParentMenu = NULL, int id = ID_SEPARATOR, - const wxString& strName = "", const wxString& wxHelp = "", - bool bCheckable = FALSE, wxMenu *pSubMenu = NULL); - virtual ~wxMenuItem(); - - // accessors (some more are inherited from wxOwnerDrawn or are below) - bool IsSeparator() const { return m_idItem == ID_SEPARATOR; } - bool IsEnabled() const { return m_bEnabled; } - bool IsChecked() const { return m_bChecked; } - - int GetId() const { return m_idItem; } - const wxString& GetHelp() const { return m_strHelp; } - wxMenu *GetSubMenu() const { return m_pSubMenu; } - - // operations - void SetName(const wxString& strName) { m_strName = strName; } - void SetHelp(const wxString& strHelp) { m_strHelp = strHelp; } - - void Enable(bool bDoEnable = TRUE); - void Check(bool bDoCheck = TRUE); - - void DeleteSubMenu(); - -private: - int m_idItem; // numeric id of the item - wxString m_strHelp; // associated help string - wxMenu *m_pSubMenu, // may be NULL - *m_pParentMenu; // menu this item is contained in - bool m_bEnabled, // enabled or greyed? - m_bChecked; // checked? (only if checkable) - -#if wxUSE_OWNER_DRAWN - // wxOwnerDrawn base class already has these variables - nothing to do - -#else //!owner drawn - bool m_bCheckable; // can be checked? - wxString m_strName; // name or label of the item - -public: - const wxString& GetName() const { return m_strName; } - bool IsCheckable() const { return m_bCheckable; } -#endif //owner drawn -}; - -#endif //_MENUITEM_H diff --git a/include/wx/msw/metafile.h b/include/wx/msw/metafile.h deleted file mode 100644 index d5f6f3f8db..0000000000 --- a/include/wx/msw/metafile.h +++ /dev/null @@ -1,179 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: metafile.h -// Purpose: wxMetaFile, wxMetaFileDC classes -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef _WX_METAFIILE_H_ -#define _WX_METAFIILE_H_ - -#ifdef __GNUG__ -#pragma interface "metafile.h" -#endif - -#include "wx/setup.h" - -#if wxUSE_METAFILE -#include "wx/dc.h" -#include "wx/gdiobj.h" - -#if wxUSE_DRAG_AND_DROP -#include "wx/dataobj.h" -#endif - -/* - * Metafile and metafile device context classes - * - */ - -#define wxMetaFile wxMetafile -#define wxMetaFileDC wxMetafileDC - -class WXDLLEXPORT wxMetafile; - -class WXDLLEXPORT wxMetafileRefData: public wxGDIRefData -{ - friend class WXDLLEXPORT wxMetafile; -public: - wxMetafileRefData(void); - ~wxMetafileRefData(void); - -public: - WXHANDLE m_metafile; - int m_windowsMappingMode; -}; - -#define M_METAFILEDATA ((wxMetafileRefData *)m_refData) - -class WXDLLEXPORT wxMetafile: public wxGDIObject -{ - DECLARE_DYNAMIC_CLASS(wxMetafile) - public: - // Copy constructor - inline wxMetafile(const wxMetafile& metafile) - { Ref(metafile); } - - wxMetafile(const wxString& file = ""); - ~wxMetafile(void); - - // After this is called, the metafile cannot be used for anything - // since it is now owned by the clipboard. - virtual bool SetClipboard(int width = 0, int height = 0); - - virtual bool Play(wxDC *dc); - inline bool Ok(void) const { return (M_METAFILEDATA && (M_METAFILEDATA->m_metafile != 0)); }; - - // Implementation - inline WXHANDLE GetHMETAFILE(void) { return M_METAFILEDATA->m_metafile; } - void SetHMETAFILE(WXHANDLE mf) ; - inline int GetWindowsMappingMode(void) { return M_METAFILEDATA->m_windowsMappingMode; } - void SetWindowsMappingMode(int mm); - - // Operators - inline wxMetafile& operator = (const wxMetafile& metafile) { if (*this == metafile) return (*this); Ref(metafile); return *this; } - inline bool operator == (const wxMetafile& metafile) { return m_refData == metafile.m_refData; } - inline bool operator != (const wxMetafile& metafile) { return m_refData != metafile.m_refData; } - -protected: -}; - -class WXDLLEXPORT wxMetafileDC: public wxDC -{ - DECLARE_DYNAMIC_CLASS(wxMetafileDC) - - public: - // Don't supply origin and extent - // Supply them to wxMakeMetaFilePlaceable instead. - wxMetafileDC(const wxString& file = ""); - - // Supply origin and extent (recommended). - // Then don't need to supply them to wxMakeMetaFilePlaceable. - wxMetafileDC(const wxString& file, int xext, int yext, int xorg, int yorg); - - ~wxMetafileDC(void); - - // Should be called at end of drawing - virtual wxMetafile *Close(void); - virtual void SetMapMode(int mode); - virtual void GetTextExtent(const wxString& string, long *x, long *y, - long *descent = NULL, long *externalLeading = NULL, - wxFont *theFont = NULL, bool use16bit = FALSE) const; - - // Implementation - inline wxMetafile *GetMetaFile(void) const { return m_metaFile; } - inline void SetMetaFile(wxMetafile *mf) { m_metaFile = mf; } - inline int GetWindowsMappingMode(void) const { return m_windowsMappingMode; } - inline void SetWindowsMappingMode(int mm) { m_windowsMappingMode = mm; } - -protected: - int m_windowsMappingMode; - wxMetafile* m_metaFile; -}; - -/* - * Pass filename of existing non-placeable metafile, and bounding box. - * Adds a placeable metafile header, sets the mapping mode to anisotropic, - * and sets the window origin and extent to mimic the MM_TEXT mapping mode. - * - */ - -// No origin or extent -#define wxMakeMetaFilePlaceable wxMakeMetafilePlaceable -bool WXDLLEXPORT wxMakeMetafilePlaceable(const wxString& filename, float scale = 1.0); - -// Optional origin and extent -bool WXDLLEXPORT wxMakeMetaFilePlaceable(const wxString& filename, int x1, int y1, int x2, int y2, float scale = 1.0, bool useOriginAndExtent = TRUE); - -// ---------------------------------------------------------------------------- -// wxMetafileDataObject is a specialization of wxDataObject for metafile data -// ---------------------------------------------------------------------------- - -// TODO: implement OLE side of things. At present, it's just for clipboard -// use. - -#if wxUSE_DRAG_AND_DROP -class WXDLLEXPORT wxMetafileDataObject : public wxDataObject -{ -public: - // ctors - wxMetafileDataObject() { m_width = 0; m_height = 0; }; - wxMetafileDataObject(const wxMetafile& metafile, int width = 0, int height = 0): - m_metafile(metafile), m_width(width), m_height(height) { } - - void SetMetafile(const wxMetafile& metafile, int w = 0, int h = 0) - { m_metafile = metafile; m_width = w; m_height = h; } - wxMetafile GetMetafile() const { return m_metafile; } - int GetWidth() const { return m_width; } - int GetHeight() const { return m_height; } - - virtual wxDataFormat GetFormat() const { return wxDF_METAFILE; } - -/* ?? - // implement base class pure virtuals - virtual wxDataFormat GetPreferredFormat() const - { return (wxDataFormat) wxDataObject::Text; } - virtual bool IsSupportedFormat(wxDataFormat format) const - { return format == wxDataObject::Text || format == wxDataObject::Locale; } - virtual size_t GetDataSize() const - { return m_strText.Len() + 1; } // +1 for trailing '\0'of course - virtual void GetDataHere(void *pBuf) const - { memcpy(pBuf, m_strText.c_str(), GetDataSize()); } -*/ - -private: - wxMetafile m_metafile; - int m_width; - int m_height; -}; -#endif - -#endif // wxUSE_METAFILE -#endif - // _WX_METAFIILE_H_ - diff --git a/include/wx/msw/minifram.h b/include/wx/msw/minifram.h deleted file mode 100644 index 97ba03c69a..0000000000 --- a/include/wx/msw/minifram.h +++ /dev/null @@ -1,46 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: minifram.h -// Purpose: wxMiniFrame class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_MINIFRAM_H_ -#define _WX_MINIFRAM_H_ - -#ifdef __GNUG__ -#pragma interface "minifram.h" -#endif - -#include "wx/frame.h" - -class WXDLLEXPORT wxMiniFrame: public wxFrame { - - DECLARE_DYNAMIC_CLASS(wxMiniFrame) - -public: - inline wxMiniFrame(void) {} - inline wxMiniFrame(wxWindow *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE|wxTINY_CAPTION_HORIZ, - const wxString& name = wxFrameNameStr) - { - Create(parent, id, title, pos, size, style, name); - } - - ~wxMiniFrame(void); - - long MSWDefWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam); - -protected: -}; - -#endif - // _WX_MINIFRAM_H_ diff --git a/include/wx/msw/msgdlg.h b/include/wx/msw/msgdlg.h deleted file mode 100644 index 51f7d0e39d..0000000000 --- a/include/wx/msw/msgdlg.h +++ /dev/null @@ -1,49 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: msgdlg.h -// Purpose: wxMessageDialog class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_MSGBOXDLG_H_ -#define _WX_MSGBOXDLG_H_ - -#ifdef __GNUG__ -#pragma interface "msgdlg.h" -#endif - -#include "wx/setup.h" -#include "wx/dialog.h" - -/* - * Message box dialog - */ - -WXDLLEXPORT_DATA(extern const char*) wxMessageBoxCaptionStr; - -class WXDLLEXPORT wxMessageDialog: public wxDialog -{ -DECLARE_DYNAMIC_CLASS(wxMessageDialog) -protected: - wxString m_caption; - wxString m_message; - long m_dialogStyle; - wxWindow * m_parent; -public: - wxMessageDialog(wxWindow *parent, const wxString& message, const wxString& caption = wxMessageBoxCaptionStr, - long style = wxOK|wxCENTRE, const wxPoint& pos = wxDefaultPosition); - - int ShowModal(void); -}; - - -int WXDLLEXPORT wxMessageBox(const wxString& message, const wxString& caption = wxMessageBoxCaptionStr, - long style = wxOK|wxCENTRE, - wxWindow *parent = NULL, int x = -1, int y = -1); - -#endif - // _WX_MSGBOXDLG_H_ diff --git a/include/wx/msw/noentry.cur b/include/wx/msw/noentry.cur deleted file mode 100644 index b002e96b36dc2bd4664a6b7ef2d08c5a8f25f5a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 326 zcmZ{eJqp4=5QX1t0 -#endif //_DYNARRAY_H - -// ---------------------------------------------------------------------------- -// types -// ---------------------------------------------------------------------------- - -// fwd declarations -class WXDLLEXPORT wxImageList; -class WXDLLEXPORT wxWindow; - -// array of notebook pages -typedef wxWindow WXDLLEXPORT wxNotebookPage; // so far, any window can be a page - -#undef WXDLLEXPORTLOCAL -#define WXDLLEXPORTLOCAL WXDLLEXPORT - -WX_DEFINE_ARRAY(wxNotebookPage *, wxArrayPages); - -#undef WXDLLEXPORTLOCAL -#define WXDLLEXPORTLOCAL - -// ---------------------------------------------------------------------------- -// notebook events -// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxNotebookEvent : public wxNotifyEvent -{ -public: - wxNotebookEvent(wxEventType commandType = wxEVT_NULL, int id = 0, - int nSel = -1, int nOldSel = -1) - : wxNotifyEvent(commandType, id) - { - m_nSel = nSel; - m_nOldSel = nOldSel; - } - - // accessors - // the currently selected page (-1 if none) - int GetSelection() const { return m_nSel; } - void SetSelection(int nSel) { m_nSel = nSel; } - // the page that was selected before the change (-1 if none) - int GetOldSelection() const { return m_nOldSel; } - void SetOldSelection(int nOldSel) { m_nOldSel = nOldSel; } - -private: - int m_nSel, // currently selected page - m_nOldSel; // previously selected page - - DECLARE_DYNAMIC_CLASS(wxNotebookEvent) -}; - -// ---------------------------------------------------------------------------- -// wxNotebook -// ---------------------------------------------------------------------------- - -// @@@ this class should really derive from wxTabCtrl, but the interface is not -// exactly the same, so I can't do it right now and instead we reimplement -// part of wxTabCtrl here -class WXDLLEXPORT wxNotebook : public wxControl -{ -public: - // ctors - // ----- - // default for dynamic class - wxNotebook(); - // the same arguments as for wxControl (@@@ any special styles?) - wxNotebook(wxWindow *parent, - wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = "notebook"); - // Create() function - bool Create(wxWindow *parent, - wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = "notebook"); - // dtor - ~wxNotebook(); - - // accessors - // --------- - // get number of pages in the dialog - int GetPageCount() const; - - // set the currently selected page, return the index of the previously - // selected one (or -1 on error) - // NB: this function will _not_ generate wxEVT_NOTEBOOK_PAGE_xxx events - int SetSelection(int nPage); - // cycle thru the tabs - void AdvanceSelection(bool bForward = TRUE); - // get the currently selected page - int GetSelection() const { return m_nSelection; } - - // set/get the title of a page - bool SetPageText(int nPage, const wxString& strText); - wxString GetPageText(int nPage) const; - - // image list stuff: each page may have an image associated with it. All - // the images belong to an image list, so you have to - // 1) create an image list - // 2) associate it with the notebook - // 3) set for each page it's image - // associate image list with a control - void SetImageList(wxImageList* imageList); - // get pointer (may be NULL) to the associated image list - wxImageList* GetImageList() const { return m_pImageList; } - - // sets/returns item's image index in the current image list - int GetPageImage(int nPage) const; - bool SetPageImage(int nPage, int nImage); - - // currently it's always 1 because wxGTK doesn't support multi-row - // tab controls - int GetRowCount() const; - - // control the appearance of the notebook pages - // set the size (the same for all pages) - void SetPageSize(const wxSize& size); - // set the padding between tabs (in pixels) - void SetPadding(const wxSize& padding); - - // operations - // ---------- - // remove one page from the notebook - bool DeletePage(int nPage); - // remove one page from the notebook, without deleting - bool RemovePage(int nPage); - // remove all pages - bool DeleteAllPages(); - // adds a new page to the notebook (it will be deleted ny the notebook, - // don't delete it yourself). If bSelect, this page becomes active. - bool AddPage(wxNotebookPage *pPage, - const wxString& strText, - bool bSelect = FALSE, - int imageId = -1); - // the same as AddPage(), but adds it at the specified position - bool InsertPage(int nPage, - wxNotebookPage *pPage, - const wxString& strText, - bool bSelect = FALSE, - int imageId = -1); - // get the panel which represents the given page - wxNotebookPage *GetPage(int nPage) { return m_aPages[nPage]; } - - // callbacks - // --------- - void OnSize(wxSizeEvent& event); - void OnSelChange(wxNotebookEvent& event); - void OnSetFocus(wxFocusEvent& event); - void OnNavigationKey(wxNavigationKeyEvent& event); - void OnEraseBackground(wxEraseEvent& event); - - // base class virtuals - // ------------------- - virtual void Command(wxCommandEvent& event); - virtual bool MSWNotify(WXWPARAM wParam, WXLPARAM lParam, WXLPARAM *result); - virtual void SetConstraintSizes(bool recurse = TRUE); - virtual bool DoPhase(int nPhase); - -protected: - // common part of all ctors - void Init(); - - // helper functions - void ChangePage(int nOldSel, int nSel); // change pages - - wxImageList *m_pImageList; // we can have an associated image list - wxArrayPages m_aPages; // array of pages - - int m_nSelection; // the current selection (-1 if none) - - DECLARE_DYNAMIC_CLASS(wxNotebook) - DECLARE_EVENT_TABLE() -}; - -// ---------------------------------------------------------------------------- -// event macros -// ---------------------------------------------------------------------------- -typedef void (wxEvtHandler::*wxNotebookEventFunction)(wxNotebookEvent&); - -#define EVT_NOTEBOOK_PAGE_CHANGED(id, fn) \ - { \ - wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED, \ - id, \ - -1, \ - (wxObjectEventFunction)(wxEventFunction)(wxNotebookEventFunction) &fn, \ - NULL \ - }, - -#define EVT_NOTEBOOK_PAGE_CHANGING(id, fn) \ - { \ - wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING, \ \ - id, \ - -1, \ - (wxObjectEventFunction)(wxEventFunction)(wxNotebookEventFunction) &fn, \ - NULL \ - }, - -#endif // _NOTEBOOK_H diff --git a/include/wx/msw/ole/automtn.h b/include/wx/msw/ole/automtn.h deleted file mode 100644 index 412b04dcf4..0000000000 --- a/include/wx/msw/ole/automtn.h +++ /dev/null @@ -1,116 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: automtn.h -// Purpose: OLE automation utilities -// Author: Julian Smart -// Modified by: -// Created: 11/6/98 -// RCS-ID: $Id$ -// Copyright: (c) 1998, Julian Smart -// Licence: wxWindows Licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma interface "automtn.h" -#endif - -#ifndef _WX_AUTOMTN_H_ -#define _WX_AUTOMTN_H_ - -#include "wx/object.h" -#include "wx/variant.h" - -typedef void WXIDISPATCH; -typedef unsigned short* WXBSTR; - -/* - * wxAutomationObject - * Wraps up an IDispatch pointer and invocation; does variant conversion. - */ - -class WXDLLEXPORT wxAutomationObject: public wxObject -{ -public: - wxAutomationObject(WXIDISPATCH* dispatchPtr = NULL); - ~wxAutomationObject(); - - // Set/get dispatch pointer - inline void SetDispatchPtr(WXIDISPATCH* dispatchPtr) { m_dispatchPtr = dispatchPtr; }; - inline WXIDISPATCH* GetDispatchPtr() const { return m_dispatchPtr; } - - // Get a dispatch pointer from the current object associated - // with a class id, such as "Excel.Application" - bool GetInstance(const wxString& classId) const; - - // Get a dispatch pointer from a new instance of the the class - bool CreateInstance(const wxString& classId) const; - - // Low-level invocation function. Pass either an array of variants, - // or an array of pointers to variants. - bool Invoke(const wxString& member, int action, - wxVariant& retValue, int noArgs, wxVariant args[], const wxVariant* ptrArgs[] = 0) const; - - // Invoke a member function - wxVariant CallMethod(const wxString& method, int noArgs, wxVariant args[]); - - // Convenience function - wxVariant CallMethod(const wxString& method, - const wxVariant& arg1 = wxNullVariant, const wxVariant& arg2 = wxNullVariant, - const wxVariant& arg3 = wxNullVariant, const wxVariant& arg4 = wxNullVariant, - const wxVariant& arg5 = wxNullVariant, const wxVariant& arg6 = wxNullVariant); - - // Get/Put property - wxVariant GetProperty(const wxString& property, int noArgs = 0, wxVariant args[] = (wxVariant*) NULL) const; - wxVariant GetProperty(const wxString& property, - const wxVariant& arg1, const wxVariant& arg2 = wxNullVariant, - const wxVariant& arg3 = wxNullVariant, const wxVariant& arg4 = wxNullVariant, - const wxVariant& arg5 = wxNullVariant, const wxVariant& arg6 = wxNullVariant); - - bool PutProperty(const wxString& property, int noArgs, wxVariant args[]) ; - bool PutProperty(const wxString& property, - const wxVariant& arg1, const wxVariant& arg2 = wxNullVariant, - const wxVariant& arg3 = wxNullVariant, const wxVariant& arg4 = wxNullVariant, - const wxVariant& arg5 = wxNullVariant, const wxVariant& arg6 = wxNullVariant); - - // Uses DISPATCH_PROPERTYGET - // and returns a dispatch pointer. The calling code should call Release - // on the pointer, though this could be implicit by constructing an wxAutomationObject - // with it and letting the destructor call Release. - WXIDISPATCH* GetDispatchProperty(const wxString& property, int noArgs, wxVariant args[]) const; - - // A way of initialising another wxAutomationObject with a dispatch object, - // without having to deal with nasty IDispatch pointers. - bool GetObject(wxAutomationObject& obj, const wxString& property, int noArgs = 0, wxVariant args[] = (wxVariant*) NULL) const; - - // Convert variants - static bool ConvertVariantToOle(const wxVariant& variant, VARIANTARG& oleVariant) ; - static bool ConvertOleToVariant(const VARIANTARG& oleVariant, wxVariant& variant) ; - -public: - WXIDISPATCH* m_dispatchPtr; -}; - -// wrapper around BSTR type (by Vadim Zeitlin) - -class WXDLLEXPORT BasicString -{ -public: - // ctors & dtor - BasicString(const char *sz); - ~BasicString(); - - // accessors - // just get the string - operator BSTR() const { return m_wzBuf; } - // retrieve a copy of our string - caller must SysFreeString() it later! - BSTR Get() const { return SysAllocString(m_wzBuf); } - -private: - // @@@ not implemented (but should be) - BasicString(const BasicString&); - BasicString& operator=(const BasicString&); - - OLECHAR *m_wzBuf; // actual string -}; - -#endif - // _WX_AUTOMTN_H_ diff --git a/include/wx/msw/ole/dataobj.h b/include/wx/msw/ole/dataobj.h deleted file mode 100644 index 06fcfd6a67..0000000000 --- a/include/wx/msw/ole/dataobj.h +++ /dev/null @@ -1,157 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: ole/dataobj.h -// Purpose: declaration of the wxDataObject class -// Author: Vadim Zeitlin -// Modified by: -// Created: 10.05.98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_OLEDATAOBJ_H -#define _WX_OLEDATAOBJ_H - -// ---------------------------------------------------------------------------- -// forward declarations -// ---------------------------------------------------------------------------- -struct IDataObject; - -// ---------------------------------------------------------------------------- -// wxDataObject is a "smart" and polymorphic piece of data. -// -// @@@ it's currently "read-only" from COM point of view, i.e. we don't support -// SetData. We don't support all advise functions neither (but it's easy to -// do if we really want them) -// ---------------------------------------------------------------------------- - -class WXDLLEXPORT wxDataObject -{ -public: - // all data formats (values are the same as in windows.h, do not change!) - enum StdFormat - { - Invalid, - Text, - Bitmap, - MetafilePict, - Sylk, - Dif, - Tiff, - OemText, - Dib, - Palette, - Pendata, - Riff, - Wave, - UnicodeText, - EnhMetafile, - Hdrop, - Locale, - Max - }; - - // function to return symbolic name of clipboard format (debug messages) - static const char *GetFormatName(wxDataFormat format); - - // ctor & dtor - wxDataObject(); - ~wxDataObject(); - - // pure virtuals to override - // get the best suited format for our data - virtual wxDataFormat GetPreferredFormat() const = 0; - // decide if we support this format (should be one of values of - // StdFormat enumerations or a user-defined format) - virtual bool IsSupportedFormat(wxDataFormat format) const = 0; - // get the (total) size of data - virtual size_t GetDataSize() const = 0; - // copy raw data to provided pointer - virtual void GetDataHere(void *pBuf) const = 0; - - // accessors - // retrieve IDataObject interface (for other OLE related classes) - IDataObject *GetInterface() const { return m_pIDataObject; } - - ////// wxGTK compatibility: hopefully to become the preferred API. - virtual wxDataFormat GetFormat() const { return GetPreferredFormat(); } - -private: - IDataObject *m_pIDataObject; // pointer to the COM interface -}; - -// ---------------------------------------------------------------------------- -// wxTextDataObject is a specialization of wxDataObject for text data -// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxTextDataObject : public wxDataObject -{ -public: - // ctors - wxTextDataObject(); - wxTextDataObject(const wxString& strText) : m_strText(strText) { } - void Init(const wxString& strText) { m_strText = strText; } - - // implement base class pure virtuals - virtual wxDataFormat GetPreferredFormat() const - { return (wxDataFormat) wxDataObject::Text; } - virtual bool IsSupportedFormat(wxDataFormat format) const - { return format == wxDataObject::Text || format == wxDataObject::Locale; } - virtual size_t GetDataSize() const - { return m_strText.Len() + 1; } // +1 for trailing '\0'of course - virtual void GetDataHere(void *pBuf) const - { memcpy(pBuf, m_strText.c_str(), GetDataSize()); } - - ////// wxGTK compatibility: hopefully to become the preferred API. - void SetText(const wxString& strText) { m_strText = strText; } - wxString GetText() const { return m_strText; } - virtual wxDataFormat GetFormat() const { return wxDF_TEXT; } - -private: - wxString m_strText; -}; - -// ---------------------------------------------------------------------------- -// @@@ TODO: wx{Bitmap|Metafile|...}DataObject -// ---------------------------------------------------------------------------- - -// ---------------------------------------------------------------------------- -// wxBitmapDataObject is a specialization of wxDataObject for bitmap data -// ---------------------------------------------------------------------------- - -// TODO: implement OLE side of things. At present, it's just for clipboard -// use. -class WXDLLEXPORT wxBitmapDataObject : public wxDataObject -{ -public: - // ctors - wxBitmapDataObject() {}; - wxBitmapDataObject(const wxBitmap& bitmap): m_bitmap(bitmap) {} - void SetBitmap(const wxBitmap& bitmap) { m_bitmap = bitmap; } - wxBitmap GetBitmap() const { return m_bitmap; } - - virtual wxDataFormat GetFormat() const { return wxDF_BITMAP; } - -/* ?? - // implement base class pure virtuals - virtual wxDataFormat GetPreferredFormat() const - { return (wxDataFormat) wxDataObject::Text; } - virtual bool IsSupportedFormat(wxDataFormat format) const - { return format == wxDataObject::Text || format == wxDataObject::Locale; } - virtual size_t GetDataSize() const - { return m_strText.Len() + 1; } // +1 for trailing '\0'of course - virtual void GetDataHere(void *pBuf) const - { memcpy(pBuf, m_strText.c_str(), GetDataSize()); } -*/ - -private: - wxBitmap m_bitmap; -}; - -// ---------------------------------------------------------------------------- -// wxMetaFileDataObject: see metafile.h is a specialization of wxDataObject for bitmap data -// ---------------------------------------------------------------------------- - -// TODO: wxFileDataObject. - -#endif //_WX_OLEDATAOBJ_H - diff --git a/include/wx/msw/ole/dropsrc.h b/include/wx/msw/ole/dropsrc.h deleted file mode 100644 index bafcddee67..0000000000 --- a/include/wx/msw/ole/dropsrc.h +++ /dev/null @@ -1,73 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: ole/dropsrc.h -// Purpose: declaration of the wxDropSource class -// Author: Vadim Zeitlin -// Modified by: -// Created: 06.03.98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_OLEDROPSRC_H -#define _WX_OLEDROPSRC_H - -#ifdef __GNUG__ -#pragma interface -#endif - -#if !wxUSE_DRAG_AND_DROP - #error "You should #define wxUSE_DRAG_AND_DROP to 1 to compile this file!" -#endif //WX_DRAG_DROP - -// ---------------------------------------------------------------------------- -// forward declarations -// ---------------------------------------------------------------------------- -class wxIDropSource; -class wxDataObject; - -enum wxDragResult - { - wxDragError, // error prevented the d&d operation from completing - wxDragNone, // drag target didn't accept the data - wxDragCopy, // the data was successfully copied - wxDragMove, // the data was successfully moved - wxDragCancel // the operation was cancelled by user (not an error) - }; - -// ---------------------------------------------------------------------------- -// wxDropSource is used to start the drag-&-drop operation on associated -// wxDataObject object. It's responsible for giving UI feedback while dragging. -// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxDropSource -{ -public: - // ctors: if you use default ctor you must call SetData() later! - // NB: the "wxWindow *win" parameter is unused and is here only for wxGTK - // compatibility - wxDropSource(wxWindow *win = NULL); - wxDropSource(wxDataObject& data, wxWindow *win = NULL); - - void SetData(wxDataObject& data); - - virtual ~wxDropSource(); - - // do it (call this in response to a mouse button press, for example) - // params: if bAllowMove is false, data can be only copied - wxDragResult DoDragDrop(bool bAllowMove = FALSE); - - // overridable: you may give some custom UI feedback during d&d operation - // in this function (it's called on each mouse move, so it shouldn't be too - // slow). Just return false if you want default feedback. - virtual bool GiveFeedback(wxDragResult effect, bool bScrolling); - -protected: - void Init(); - - wxDataObject *m_pData; // pointer to associated data object - -private: - wxIDropSource *m_pIDropSource; // the pointer to COM interface -}; - -#endif //_WX_OLEDROPSRC_H diff --git a/include/wx/msw/ole/droptgt.h b/include/wx/msw/ole/droptgt.h deleted file mode 100644 index 95484cf7a6..0000000000 --- a/include/wx/msw/ole/droptgt.h +++ /dev/null @@ -1,111 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: ole/droptgt.h -// Purpose: declaration of the wxDropTarget class -// Author: Vadim Zeitlin -// Modified by: -// Created: 06.03.98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -// ============================================================================ -// prolog -// ============================================================================ -#ifndef _WX_OLEDROPTGT_H -#define _WX_OLEDROPTGT_H - -#ifdef __GNUG__ -#pragma interface "droptgt.h" -#endif - -#if !wxUSE_DRAG_AND_DROP - #error "You should #define wxUSE_DRAG_AND_DROP to 1 to compile this file!" -#endif //WX_DRAG_DROP - -// ---------------------------------------------------------------------------- -// forward declarations -// ---------------------------------------------------------------------------- -class wxIDropTarget; -struct IDataObject; - -// ---------------------------------------------------------------------------- -// An instance of the class wxDropTarget may be associated with any wxWindow -// derived object via SetDropTarget() function. If this is done, the virtual -// methods of wxDropTarget are called when something is dropped on the window. -// -// Note that wxDropTarget is an abstract base class (ABC) and you should derive -// your own class from it implementing pure virtual function in order to use it -// (all of them, including protected ones which are called by the class itself) -// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxDropTarget -{ -public: - // ctor & dtor - wxDropTarget(); - virtual ~wxDropTarget(); - - // normally called by wxWindow on window creation/destruction, but might be - // called `manually' as well. Register() returns true on success. - bool Register(WXHWND hwnd); - void Revoke(WXHWND hwnd); - - // do we accept this kind of data? - virtual bool IsAcceptedData(IDataObject *pIDataSource) const; - - // called when mouse enters/leaves the window: might be used to give - // some visual feedback to the user - virtual void OnEnter() { } - virtual void OnLeave() { } - - // this function is called when data is dropped. - // (x, y) are the coordinates of the drop - virtual bool OnDrop(long x, long y, const void *pData) = 0; - -protected: - // Override these to indicate what kind of data you support: the first - // format to which data can be converted is used. The classes below show - // how it can be done in the simplest cases. - // how many different (clipboard) formats do you support? - virtual size_t GetFormatCount() const = 0; - // return the n-th supported format - virtual wxDataFormat GetFormat(size_t n) const = 0; - -private: - wxIDropTarget *m_pIDropTarget; // the pointer to COM interface -}; - -// ---------------------------------------------------------------------------- -// A simple wxDropTarget derived class for text data: you only need to -// override OnDropText() to get something working -// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxTextDropTarget : public wxDropTarget -{ -public: - virtual bool OnDrop(long x, long y, const void *pData); - virtual bool OnDropText(long x, long y, const char *psz) = 0; - -protected: - virtual size_t GetFormatCount() const; - virtual wxDataFormat GetFormat(size_t n) const; -}; - -// ---------------------------------------------------------------------------- -// A drop target which accepts files (dragged from File Manager or Explorer) -// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxFileDropTarget : public wxDropTarget -{ -public: - virtual bool OnDrop(long x, long y, const void *pData); - - // params: the number of files and the array of file names - virtual bool OnDropFiles(long x, long y, - size_t nFiles, const char * const aszFiles[]) = 0; - -protected: - virtual size_t GetFormatCount() const; - virtual wxDataFormat GetFormat(size_t n) const; -}; - -// ============================================================================ -#endif //_WX_OLEDROPTGT_H diff --git a/include/wx/msw/ole/oleutils.h b/include/wx/msw/ole/oleutils.h deleted file mode 100644 index 2335dd5468..0000000000 --- a/include/wx/msw/ole/oleutils.h +++ /dev/null @@ -1,146 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: oleutils.h -// Purpose: OLE helper routines, OLE debugging support &c -// Author: Vadim Zeitlin -// Modified by: -// Created: 19.02.1998 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_OLEUTILS_H -#define _WX_OLEUTILS_H - -#ifdef __GNUG__ -#pragma interface "oleutils.h" -#endif - -#include "wx/defs.h" - -// ============================================================================ -// General purpose functions and macros -// ============================================================================ - -// ---------------------------------------------------------------------------- -// misc helper functions/macros -// ---------------------------------------------------------------------------- - -// release the interface pointer (if !NULL) -inline void ReleaseInterface(IUnknown *pIUnk) -{ - if ( pIUnk != NULL ) - pIUnk->Release(); -} - -// release the interface pointer (if !NULL) and make it NULL -#define RELEASE_AND_NULL(p) if ( (p) != NULL ) { p->Release(); p = NULL; }; - -// return TRUE if the iid is in the array -bool IsIidFromList(REFIID riid, const IID *aIids[], size_t nCount); - -// ============================================================================ -// IUnknown implementation helpers -// ============================================================================ - -/* - The most dumb implementation of IUnknown methods. We don't support - aggregation nor containment, but for 99% of cases this simple - implementation is quite enough. - - Usage is trivial: here is all you should have - 1) DECLARE_IUNKNOWN_METHOS in your (IUnknown derived!) class declaration - 2) BEGIN/END_IID_TABLE with ADD_IID in between for all interfaces you - support (at least all for which you intent to return 'this' from QI, - i.e. you should derive from IFoo if you have ADD_IID(Foo)) somewhere else - 3) IMPLEMENT_IUNKNOWN_METHOS somewhere also - - These macros are quite simple: AddRef and Release are trivial and QI does - lookup in a static member array of IIDs and returns 'this' if it founds - the requested interface in it or E_NOINTERFACE if not. - */ - -// declare the methods and the member variable containing reference count -// you must also define the ms_aIids array somewhere with BEGIN_IID_TABLE -// and friends (see below) -#define DECLARE_IUNKNOWN_METHODS \ - public: \ - STDMETHODIMP QueryInterface(REFIID, void **); \ - STDMETHODIMP_(ULONG) AddRef(); \ - STDMETHODIMP_(ULONG) Release(); \ - private: \ - static const IID *ms_aIids[]; \ - ULONG m_cRef - -// macros for declaring supported interfaces -// NB: you should write ADD_INTERFACE(Foo) and not ADD_INTERFACE(IID_IFoo)! -#define BEGIN_IID_TABLE(cname) const IID *cname::ms_aIids[] = { -#define ADD_IID(iid) &IID_I##iid, -#define END_IID_TABLE } - -// implementation is as straightforward as possible -// Parameter: classname - the name of the class -#define IMPLEMENT_IUNKNOWN_METHODS(classname) \ - STDMETHODIMP classname::QueryInterface(REFIID riid, void **ppv) \ - { \ - wxLogQueryInterface(#classname, riid); \ - \ - if ( IsIidFromList(riid, ms_aIids, WXSIZEOF(ms_aIids)) ) { \ - *ppv = this; \ - AddRef(); \ - \ - return S_OK; \ - } \ - else { \ - *ppv = NULL; \ - \ - return (HRESULT) E_NOINTERFACE; \ - } \ - } \ - \ - STDMETHODIMP_(ULONG) classname::AddRef() \ - { \ - wxLogAddRef(#classname, m_cRef); \ - \ - return ++m_cRef; \ - } \ - \ - STDMETHODIMP_(ULONG) classname::Release() \ - { \ - wxLogRelease(#classname, m_cRef); \ - \ - if ( --m_cRef == 0 ) { \ - delete this; \ - return 0; \ - } \ - else \ - return m_cRef; \ - } - -// ============================================================================ -// Debugging support -// ============================================================================ - -#if defined(__WXDEBUG__) && defined(_MSC_VER) && (_MSC_VER > 1000) -// ---------------------------------------------------------------------------- -// -// ---------------------------------------------------------------------------- - -// ---------------------------------------------------------------------------- -// All OLE specific log functions have DebugTrace level (as LogTrace) -// ---------------------------------------------------------------------------- - -// tries to translate riid into a symbolic name, if possible -void wxLogQueryInterface(const char *szInterface, REFIID riid); - -// these functions print out the new value of reference counter -void wxLogAddRef (const char *szInterface, ULONG cRef); -void wxLogRelease(const char *szInterface, ULONG cRef); - -#else //!WXDEBUG - #define wxLogQueryInterface(szInterface, riid) - #define wxLogAddRef(szInterface, cRef) - #define wxLogRelease(szInterface, cRef) -#endif //WXDEBUG - -#endif //_WX_OLEUTILS_H \ No newline at end of file diff --git a/include/wx/msw/ole/uuid.h b/include/wx/msw/ole/uuid.h deleted file mode 100644 index 2dee9946aa..0000000000 --- a/include/wx/msw/ole/uuid.h +++ /dev/null @@ -1,91 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: ole/uuid.h -// Purpose: encapsulates an UUID with some added helper functions -// Author: Vadim Zeitlin -// Modified by: -// Created: 11.07.97 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows licence -// -// Notes: you should link your project with RPCRT4.LIB! -/////////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_OLEUUID_H -#define _WX_OLEUUID_H - -#ifdef __GNUG__ -#pragma interface "uuid.h" -#endif - -// ------------------------------------------------------------------ -// UUID (Universally Unique IDentifier) definition -// ------------------------------------------------------------------ - -// ----- taken from RPC.H -#ifndef UUID_DEFINED // in some cases RPC.H will be already - #ifdef __WIN32__ // included, so avoid redefinition - typedef struct - { - unsigned long Data1; - unsigned short Data2; - unsigned short Data3; - unsigned char Data4[8]; - } UUID; // UUID = GUID = CLSID = LIBID = IID - #else // WIN16 - #error "Don't know about UUIDs on this platform" - #endif // WIN32 -#endif // UUID_DEFINED - -#ifndef GUID_DEFINED - typedef UUID GUID; - #define UUID_DEFINED // prevent redefinition -#endif // GUID_DEFINED - -typedef unsigned char uchar; - -// ------------------------------------------------------------------ -// a class to store UUID and it's string representation -// ------------------------------------------------------------------ - -// uses RPC functions to create/convert Universally Unique Identifiers -class WXDLLEXPORT Uuid -{ -private: - UUID m_uuid; - uchar *m_pszUuid; // this string is alloc'd and freed by RPC - char *m_pszCForm; // this string is allocated in Set/Create - - void UuidToCForm(); - - // function used to set initial state by all ctors - void Init() { m_pszUuid = NULL; m_pszCForm = NULL; } - -public: - // ctors & dtor - Uuid() { Init(); } - Uuid(const char *pc) { Init(); Set(pc); } - Uuid(const UUID &uuid) { Init(); Set(uuid); } - ~Uuid(); - - // copy ctor and assignment operator needed for this class - Uuid(const Uuid& uuid); - Uuid& operator=(const Uuid& uuid); - - // create a brand new UUID - void Create(); - - // set value of UUID - bool Set(const char *pc); // from a string, returns true if ok - void Set(const UUID& uuid); // from another UUID (never fails) - - // accessors - operator const UUID*() const { return &m_uuid; } - operator const char*() const { return (char *)(m_pszUuid); } - - // return string representation of the UUID in the C form - // (as in DEFINE_GUID macro) - const char *CForm() const { return m_pszCForm; } -}; - -#endif //_WX_OLEUUID_H diff --git a/include/wx/msw/palette.h b/include/wx/msw/palette.h deleted file mode 100644 index 4383c44a3f..0000000000 --- a/include/wx/msw/palette.h +++ /dev/null @@ -1,65 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: palette.h -// Purpose: wxPalette class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_PALETTE_H_ -#define _WX_PALETTE_H_ - -#ifdef __GNUG__ -#pragma interface "palette.h" -#endif - -#include "wx/gdiobj.h" - -class WXDLLEXPORT wxPalette; - -class WXDLLEXPORT wxPaletteRefData: public wxGDIRefData -{ - friend class WXDLLEXPORT wxPalette; -public: - wxPaletteRefData(void); - ~wxPaletteRefData(void); -protected: - WXHPALETTE m_hPalette; -}; - -#define M_PALETTEDATA ((wxPaletteRefData *)m_refData) - -class WXDLLEXPORT wxPalette: public wxGDIObject -{ - DECLARE_DYNAMIC_CLASS(wxPalette) - -public: - wxPalette(void); - inline wxPalette(const wxPalette& palette) { Ref(palette); } - - wxPalette(int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue); - ~wxPalette(void); - bool Create(int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue); - int GetPixel(const unsigned char red, const unsigned char green, const unsigned char blue) const; - bool GetRGB(int pixel, unsigned char *red, unsigned char *green, unsigned char *blue) const; - - virtual bool Ok(void) const { return (m_refData != NULL) ; } - - inline wxPalette& operator = (const wxPalette& palette) { if (*this == palette) return (*this); Ref(palette); return *this; } - inline bool operator == (const wxPalette& palette) { return m_refData == palette.m_refData; } - inline bool operator != (const wxPalette& palette) { return m_refData != palette.m_refData; } - - virtual bool FreeResource(bool force = FALSE); - - inline WXHPALETTE GetHPALETTE(void) const { return (M_PALETTEDATA ? M_PALETTEDATA->m_hPalette : 0); } - void SetHPALETTE(WXHPALETTE pal); -}; - -#define wxColorMap wxPalette -#define wxColourMap wxPalette - -#endif - // _WX_PALETTE_H_ diff --git a/include/wx/msw/pbrush.cur b/include/wx/msw/pbrush.cur deleted file mode 100644 index 97212e3faad4bb1f28892269ee9bdfed99e70a85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 326 zcmaKmF%m#95Jg{%(HWi5Q7Rq5C7dUY>Ihnm^@EIRz06DYXET|Fg1|69O~(|V1xBeW zW*M|@-s1`1Zf0Nbs%3_3+#s3Ab-zNTT>hw*hh}g&=`~^V@2WRjG~4x!=b@g%1>swF A?*IS* diff --git a/include/wx/msw/pen.h b/include/wx/msw/pen.h deleted file mode 100644 index d30a10ff83..0000000000 --- a/include/wx/msw/pen.h +++ /dev/null @@ -1,98 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: pen.h -// Purpose: wxPen class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_PEN_H_ -#define _WX_PEN_H_ - -#ifdef __GNUG__ -#pragma interface "pen.h" -#endif - -#include "wx/gdiobj.h" -#include "wx/bitmap.h" - -typedef WXDWORD wxDash ; - -class WXDLLEXPORT wxPen; - -class WXDLLEXPORT wxPenRefData: public wxGDIRefData -{ - friend class WXDLLEXPORT wxPen; -public: - wxPenRefData(); - wxPenRefData(const wxPenRefData& data); - ~wxPenRefData(); - -protected: - int m_width; - int m_style; - int m_join ; - int m_cap ; - wxBitmap m_stipple ; - int m_nbDash ; - wxDash * m_dash ; - wxColour m_colour; - WXHPEN m_hPen; -}; - -#define M_PENDATA ((wxPenRefData *)m_refData) - -// Pen -class WXDLLEXPORT wxPen: public wxGDIObject -{ - DECLARE_DYNAMIC_CLASS(wxPen) -public: - wxPen(); - wxPen(const wxColour& col, int width, int style); - wxPen(const wxBitmap& stipple, int width); - inline wxPen(const wxPen& pen) { Ref(pen); } - ~wxPen(); - - inline wxPen& operator = (const wxPen& pen) { if (*this == pen) return (*this); Ref(pen); return *this; } - inline bool operator == (const wxPen& pen) { return m_refData == pen.m_refData; } - inline bool operator != (const wxPen& pen) { return m_refData != pen.m_refData; } - - virtual bool Ok() const { return (m_refData != NULL) ; } - - // Override in order to recreate the pen - void SetColour(const wxColour& col) ; - void SetColour(unsigned char r, unsigned char g, unsigned char b); - - void SetWidth(int width) ; - void SetStyle(int style) ; - void SetStipple(const wxBitmap& stipple) ; - void SetDashes(int nb_dashes, const wxDash *dash) ; - void SetJoin(int join) ; - void SetCap(int cap) ; - - inline wxColour& GetColour() const { return (M_PENDATA ? M_PENDATA->m_colour : wxNullColour); }; - inline int GetWidth() const { return (M_PENDATA ? M_PENDATA->m_width : 0); }; - inline int GetStyle() const { return (M_PENDATA ? M_PENDATA->m_style : 0); }; - inline int GetJoin() const { return (M_PENDATA ? M_PENDATA->m_join : 0); }; - inline int GetCap() const { return (M_PENDATA ? M_PENDATA->m_cap : 0); }; - inline int GetDashes(wxDash **ptr) const { - *ptr = (M_PENDATA ? M_PENDATA->m_dash : (wxDash*) NULL); return (M_PENDATA ? M_PENDATA->m_nbDash : 0); - } - - inline wxBitmap *GetStipple() const { return (M_PENDATA ? (& M_PENDATA->m_stipple) : (wxBitmap*) NULL); }; - - // Internal - bool RealizeResource(); - bool FreeResource(bool force = FALSE); - WXHANDLE GetResourceHandle() ; - bool IsFree() const; - void Unshare(); -}; - -int wx2msPenStyle(int wx_style); - -#endif - // _WX_PEN_H_ diff --git a/include/wx/msw/pencil.cur b/include/wx/msw/pencil.cur deleted file mode 100644 index 231ed1e79f7bc3c1b4291024697607f58f1c91ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 326 zcmbWxAr8Vo5QX8lG@*{707F<=i9liKq44YtxB^G%5jX-8Sy>X&#}92%f$MC(o!QMy zGSW;zF^X7fAEXskiHHh;^NS(%kMXuWJ| - * - * - */ - -#ifndef _WX_PNGREAD__ -#define _WX_PNGREAD__ - -#ifdef __GNUG__ -#pragma interface "pngread.h" -#endif - -#ifndef byte -typedef unsigned char byte; -#endif - -#define WXIMA_COLORS DIB_PAL_COLORS - -#ifdef __WIN32__ -typedef byte* ImagePointerType; -#else -typedef byte huge* ImagePointerType; -#endif - -typedef struct -{ - byte red; - byte green; - byte blue; -} rgb_color_struct; - - -#define COLORTYPE_PALETTE 1 -#define COLORTYPE_COLOR 2 -#define COLORTYPE_ALPHA 4 - -class wxPNGReader -{ -protected: - int filetype; - char filename[255]; - ImagePointerType RawImage; // Image data - - int Width, Height; // Dimensions - int Depth; // (bits x pixel) - int ColorType; // Bit 1 = Palette used - // Bit 2 = Color used - // Bit 3 = Alpha used - - long EfeWidth; // Efective Width - - LPBITMAPINFOHEADER lpbi; - int bgindex; - wxPalette* Palette; - bool imageOK; -friend class wxPNGReaderIter; -public: - wxPNGReader(void); - wxPNGReader (char* ImageFileName); // Read an image file - ~wxPNGReader (); - - void Create(int width, int height, int deep, int colortype=-1); - - bool ReadFile( char* ImageFileName=0 ); - bool SaveFile( char* ImageFileName=0 ); - bool SaveXPM(char *filename, char *name = 0); - int GetWidth( void ) const { return Width; }; - int GetHeight( void ) const { return Height; }; - int GetDepth( void ) const { return Depth; }; - int GetColorType( void ) const { return ColorType; }; - - int GetIndex(int x, int y); - bool GetRGB(int x, int y, byte* r, byte* g, byte* b); - - bool SetIndex(int x, int y, int index); - bool SetRGB(int x, int y, byte r, byte g, byte b); - - // ColorMap settings - bool SetPalette(wxPalette* colourmap); - bool SetPalette(int n, rgb_color_struct *rgb_struct); - bool SetPalette(int n, byte *r, byte *g=0, byte *b=0); - wxPalette* GetPalette() const { return Palette; } - - void NullData(); - inline int GetBGIndex(void) { return bgindex; } - - inline bool Inside(int x, int y) - { return (0<=y && yRawImage; - Itx = Ity = 0; - Stepx = Stepy = 0; -} - -inline -wxPNGReaderIter::operator wxPNGReader* () -{ - return ima; -} - -inline -bool wxPNGReaderIter::ItOK () -{ - if (ima) - return ima->Inside(Itx, Ity); - else - return FALSE; -} - - -inline void wxPNGReaderIter::reset() -{ - IterImage = ima->RawImage; - Itx = Ity = 0; -} - -inline void wxPNGReaderIter::upset() -{ - Itx = 0; - Ity = ima->Height-1; - IterImage = ima->RawImage + ima->EfeWidth*(ima->Height-1); -} - -inline bool wxPNGReaderIter::NextRow() -{ - if (++Ity >= ima->Height) return 0; - IterImage += ima->EfeWidth; - return 1; -} - -inline bool wxPNGReaderIter::PrevRow() -{ - if (--Ity < 0) return 0; - IterImage -= ima->EfeWidth; - return 1; -} - -////////////////////////// AD - for interlace /////////////////////////////// -inline void wxPNGReaderIter::SetY(int y) -{ - if ((y < 0) || (y > ima->Height)) return; - Ity = y; - IterImage = ima->RawImage + ima->EfeWidth*y; -} - -///////////////////////////////////////////////////////////////////////////// - -inline void wxPNGReaderIter::SetRow(byte *buf, int n) -{ -// Here should be bcopy or memcpy - //_fmemcpy(IterImage, (void far *)buf, n); - if (n<0) - n = ima->GetWidth(); - - for (int i=0; iEfeWidth) - return 1; - else - if (++Ity < ima->Height) - { - IterImage += ima->EfeWidth; - Itx = 0; - return 1; - } else - return 0; -} - -inline bool wxPNGReaderIter::PrevByte() -{ - if (--Itx >= 0) - return 1; - else - if (--Ity >= 0) - { - IterImage -= ima->EfeWidth; - Itx = 0; - return 1; - } else - return 0; -} - -inline bool wxPNGReaderIter::NextStep() -{ - Itx += Stepx; - if (Itx < ima->EfeWidth) - return 1; - else { - Ity += Stepy; - if (Ity < ima->Height) - { - IterImage += ima->EfeWidth; - Itx = 0; - return 1; - } else - return 0; - } -} - -inline bool wxPNGReaderIter::PrevStep() -{ - Itx -= Stepx; - if (Itx >= 0) - return 1; - else { - Ity -= Stepy; - if (Ity >= 0 && Ity < ima->Height) - { - IterImage -= ima->EfeWidth; - Itx = 0; - return 1; - } else - return 0; - } -} - -#endif - diff --git a/include/wx/msw/pntleft.cur b/include/wx/msw/pntleft.cur deleted file mode 100644 index 222b25b86408566858225dab95d0d8e78a86babc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 326 zcmaiuyAc905JR%f`ZD0jM z&XCqP7_gPwi!6@9G@8EU6PB6e5_)c<19k;=r;4FCrkmqDJCX=N@vd|u_N68HkD=IZVP*JAV(X;&%%ld&8MqNW< z!_i;|9E7eo3)A_;SiWM)5iyCy?gG~qd!F#V!(V%RxQQ&1bl}lr@fc|Cnba?CECcc| f8>x$^*vja7#8s^r|EH1u{jyS@T2f@6-CZ8va`9(v diff --git a/include/wx/msw/printdlg.h b/include/wx/msw/printdlg.h deleted file mode 100644 index cf14ef75b0..0000000000 --- a/include/wx/msw/printdlg.h +++ /dev/null @@ -1,71 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: printdlg.h -// Purpose: wxPrintDialog, wxPageSetupDialog classes -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_PRINTDLG_H_ -#define _WX_PRINTDLG_H_ - -#ifdef __GNUG__ -#pragma interface "printdlg.h" -#endif - -#include "wx/dialog.h" -#include "wx/cmndata.h" - -/* - * wxPrinterDialog - * The common dialog for printing. - */ - -class WXDLLEXPORT wxDC; -class WXDLLEXPORT wxPrintDialog: public wxDialog -{ - DECLARE_DYNAMIC_CLASS(wxPrintDialog) - - private: - wxPrintData printData; - wxDC *printerDC; - bool destroyDC; - char *deviceName; - char *driverName; - char *portName; - wxWindow *dialogParent; - public: - wxPrintDialog(void); - wxPrintDialog(wxWindow *parent, wxPrintData* data = NULL); - ~wxPrintDialog(void); - - bool Create(wxWindow *parent, wxPrintData* data = NULL); - virtual int ShowModal(void); - - inline wxPrintData& GetPrintData(void) { return printData; } - virtual wxDC *GetPrintDC(void); -}; - -class WXDLLEXPORT wxPageSetupDialog: public wxDialog -{ - DECLARE_DYNAMIC_CLASS(wxPageSetupDialog) - - private: - wxPageSetupData m_pageSetupData; - wxWindow* m_dialogParent; - public: - wxPageSetupDialog(void); - wxPageSetupDialog(wxWindow *parent, wxPageSetupData *data = NULL); - ~wxPageSetupDialog(void); - - bool Create(wxWindow *parent, wxPageSetupData *data = NULL); - virtual int ShowModal(void); - - inline wxPageSetupData& GetPageSetupData(void) { return m_pageSetupData; } -}; - -#endif - // _WX_PRINTDLG_H_ diff --git a/include/wx/msw/printwin.h b/include/wx/msw/printwin.h deleted file mode 100644 index 2f92fa3ca9..0000000000 --- a/include/wx/msw/printwin.h +++ /dev/null @@ -1,59 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: printwin.h -// Purpose: wxWindowsPrinter, wxWindowsPrintPreview classes -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_PRINTWIN_H_ -#define _WX_PRINTWIN_H_ - -#ifdef __GNUG__ -#pragma interface "printwin.h" -#endif - -#include "wx/prntbase.h" - -/* - * Represents the printer: manages printing a wxPrintout object - */ - -class WXDLLEXPORT wxWindowsPrinter: public wxPrinterBase -{ - DECLARE_DYNAMIC_CLASS(wxWindowsPrinter) - - public: - wxWindowsPrinter(wxPrintData *data = NULL); - ~wxWindowsPrinter(void); - - virtual bool Print(wxWindow *parent, wxPrintout *printout, bool prompt = TRUE); - virtual bool PrintDialog(wxWindow *parent); - virtual bool Setup(wxWindow *parent); - - private: - WXFARPROC m_lpAbortProc; -}; - -/* - * wxPrintPreview - * Programmer creates an object of this class to preview a wxPrintout. - */ - -class WXDLLEXPORT wxWindowsPrintPreview: public wxPrintPreviewBase -{ - DECLARE_CLASS(wxWindowsPrintPreview) - - public: - wxWindowsPrintPreview(wxPrintout *printout, wxPrintout *printoutForPrinting = NULL, wxPrintData *data = NULL); - ~wxWindowsPrintPreview(void); - - virtual bool Print(bool interactive); - virtual void DetermineScaling(void); -}; - -#endif - // _WX_PRINTWIN_H_ diff --git a/include/wx/msw/private.h b/include/wx/msw/private.h deleted file mode 100644 index 14ebb23d13..0000000000 --- a/include/wx/msw/private.h +++ /dev/null @@ -1,198 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: private.h -// Purpose: Private declarations -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_PRIVATE_H_ -#define _WX_PRIVATE_H_ - -#include "wx/defs.h" - -#include - -#define VIEWPORT_EXTENT 1000 - -class WXDLLEXPORT wxFont ; - -WXDLLEXPORT void wxGetCharSize(WXHWND wnd, int *x, int *y,wxFont *the_font); -WXDLLEXPORT void wxSliderEvent(WXHWND control, WXWORD wParam, WXWORD pos); -WXDLLEXPORT wxWindow* wxFindWinFromHandle(WXHWND hWnd); -WXDLLEXPORT void wxScrollBarEvent(WXHWND hbar, WXWORD wParam, WXWORD pos); - -WXDLLEXPORT_DATA(extern HICON) wxSTD_FRAME_ICON; -WXDLLEXPORT_DATA(extern HICON) wxSTD_MDIPARENTFRAME_ICON; -WXDLLEXPORT_DATA(extern HICON) wxSTD_MDICHILDFRAME_ICON; -WXDLLEXPORT_DATA(extern HICON) wxDEFAULT_FRAME_ICON; -WXDLLEXPORT_DATA(extern HICON) wxDEFAULT_MDIPARENTFRAME_ICON; -WXDLLEXPORT_DATA(extern HICON) wxDEFAULT_MDICHILDFRAME_ICON; -WXDLLEXPORT_DATA(extern HFONT) wxSTATUS_LINE_FONT; - -WXDLLEXPORT HINSTANCE wxGetInstance(); -WXDLLEXPORT void wxFillLogFont(LOGFONT *logFont, wxFont *font); -WXDLLEXPORT wxFont wxCreateFontFromLogFont(LOGFONT *logFont); // , bool createNew = TRUE); - -#ifdef __GNUWIN32__ -# define CASTWNDPROC (long unsigned) -#else -# ifdef __BORLANDC__ - -# ifdef __WIN32__ -# define CASTWNDPROC -# else - typedef int (pascal * WndProcCast) (); -# define CASTWNDPROC (WndProcCast) -# endif - -# else -# if defined (__WIN32__) && defined(STRICT) - typedef long (_stdcall * WndProcCast) (HWND, unsigned int, unsigned int, long); -# define CASTWNDPROC (WndProcCast) -# elif defined(__WIN16__) -# ifdef __BORLANDC__ - typedef int (pascal * WndProcCast) (); -# define CASTWNDPROC (WndProcCast) -# else - typedef int (PASCAL * WndProcCast) (); -# define CASTWNDPROC (WndProcCast) -# endif -# else -# define CASTWNDPROC -# endif -# endif -#endif - -#if !defined(APIENTRY) // NT defines APIENTRY, 3.x not -#define APIENTRY FAR PASCAL -#endif - -#ifdef __WIN32__ -#define _EXPORT /**/ -#else -#define _EXPORT _export -typedef signed short int SHORT ; -#endif - -#if !defined(__WIN32__) // 3.x uses FARPROC for dialogs -#define DLGPROC FARPROC -#endif - -#if wxUSE_PENWIN -WXDLLEXPORT void wxRegisterPenWin(void); -WXDLLEXPORT void wxCleanUpPenWin(void); -WXDLLEXPORT void wxEnablePenAppHooks (bool hook); -#endif - -#if wxUSE_ITSY_BITSY -#define IBS_HORZCAPTION 0x4000L -#define IBS_VERTCAPTION 0x8000L - -UINT WINAPI ibGetCaptionSize( HWND hWnd ) ; -UINT WINAPI ibSetCaptionSize( HWND hWnd, UINT nSize ) ; -LRESULT WINAPI ibDefWindowProc( HWND hWnd, UINT uiMsg, WPARAM wParam, LPARAM lParam ) ; -VOID WINAPI ibAdjustWindowRect( HWND hWnd, LPRECT lprc ) ; -#endif - -/* When implementing a new item, be sure to: - * - * - add the item to the parent panel - * - set window_parent to the parent - * - NULL any extra child window pointers not created for this item - * (e.g. label control that wasn't needed) - * - delete any extra child windows in the destructor (e.g. label control) - * - implement GetSize and SetSize - * - to find panel position if coordinates are (-1, -1), use GetPosition - * - call AdvanceCursor after creation, for panel layout mechanism. - * - */ - -#if CTL3D -#include -#endif - -/* - * Decide what window classes we're going to use - * for this combination of CTl3D/FAFA settings - */ - -#define STATIC_CLASS "STATIC" -#define STATIC_FLAGS (SS_LEFT|WS_CHILD|WS_VISIBLE) -#define CHECK_CLASS "BUTTON" -#define CHECK_FLAGS (BS_AUTOCHECKBOX|WS_TABSTOP|WS_CHILD) -#define CHECK_IS_FAFA FALSE -#define RADIO_CLASS "BUTTON" -#define RADIO_FLAGS (BS_AUTORADIOBUTTON|WS_CHILD|WS_VISIBLE) -#define RADIO_SIZE 20 -#define RADIO_IS_FAFA FALSE -#define PURE_WINDOWS -#define GROUP_CLASS "BUTTON" -#define GROUP_FLAGS (BS_GROUPBOX|WS_CHILD|WS_VISIBLE) - -/* -#define BITCHECK_FLAGS (FB_BITMAP|FC_BUTTONDRAW|FC_DEFAULT|WS_VISIBLE) -#define BITRADIO_FLAGS (FC_BUTTONDRAW|FB_BITMAP|FC_RADIO|WS_CHILD|WS_VISIBLE) -*/ - -#define MEANING_CHARACTER '0' -#define DEFAULT_ITEM_WIDTH 200 -#define DEFAULT_ITEM_HEIGHT 80 - -// Scale font to get edit control height -#define EDIT_HEIGHT_FROM_CHAR_HEIGHT(cy) (3*(cy)/2) - -// Generic subclass proc, for panel item moving/sizing and intercept -// EDIT control VK_RETURN messages -extern LONG APIENTRY _EXPORT - wxSubclassedGenericControlProc(WXHWND hWnd, WXUINT message, WXWPARAM wParam, WXLPARAM lParam); - -// Find maximum size of window/rectangle -WXDLLEXPORT extern void wxFindMaxSize(WXHWND hwnd, RECT *rect); - -// List of scrollbar controls -WXDLLEXPORT_DATA(extern wxList) wxScrollBarList; -// The MakeProcInstance version of the function wxSubclassedGenericControlProc -WXDLLEXPORT_DATA(extern FARPROC) wxGenericControlSubClassProc; -WXDLLEXPORT_DATA(extern char*) wxBuffer; -WXDLLEXPORT_DATA(extern HINSTANCE) wxhInstance; - -WXDLLEXPORT wxWindow* wxFindControlFromHandle(WXHWND hWnd); -WXDLLEXPORT void wxAddControlHandle(WXHWND hWnd, wxWindow *item); - -// Safely get the window text (i.e. without using fixed size buffer) -WXDLLEXPORT extern wxString wxGetWindowText(WXHWND hWnd); - -// Does this window style specify any border? -inline bool wxStyleHasBorder(long style) -{ - return (style & (wxSIMPLE_BORDER | wxRAISED_BORDER | - wxSUNKEN_BORDER | wxDOUBLE_BORDER)) != 0; -} - -#if !defined(__WIN32__) && !defined(WS_EX_CLIENTEDGE) - #define WS_EX_CLIENTEDGE 0 -#endif - -#if defined(__WIN32__) && !defined(WS_EX_CLIENTEDGE) - #define WS_EX_CLIENTEDGE 0x00000200L -#endif - -#if defined(__WIN95__) && defined(__WXDEBUG__) && wxUSE_DBWIN32 - -#ifndef __TWIN32__ -#ifdef OutputDebugString -#undef OutputDebugString -#endif - -#define OutputDebugString OutputDebugStringW95 -#endif - -extern void OutputDebugStringW95(const char*, ...); -#endif - -#endif - // _WX_PRIVATE_H_ diff --git a/include/wx/msw/query.cur b/include/wx/msw/query.cur deleted file mode 100644 index 3578e90fd956ff8ff5288634e9c7a96505910746..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 326 zcmZY3t#Se}6vgp>Hakt+Mqv|)MAmgtyhc@ZC4%9jHGQm=eGD9SC4%Afrj%iJdNRM9 z+^Yf&j#3(G77k|Cb5l%joSonN)opm(k{-kT6$Xf9s_tq|1AG@;^;PgyEUenZTNBy3 zmfiTlu3b)SZQgtySoaO@rR6n6`j{Xbu|G_6ev!sJWxH!9U86Nwmvr;I$V!HFCpJMm Yc@doO`~N_0@8k!sa183kPWhbm0~DuU7XSbN diff --git a/include/wx/msw/radiobox.h b/include/wx/msw/radiobox.h deleted file mode 100644 index 6d86bed742..0000000000 --- a/include/wx/msw/radiobox.h +++ /dev/null @@ -1,148 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: radiobox.h -// Purpose: wxRadioBox class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_RADIOBOX_H_ -#define _WX_RADIOBOX_H_ - -#ifdef __GNUG__ -#pragma interface "radiobox.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxRadioBoxNameStr; - -// List box item -class WXDLLEXPORT wxBitmap ; - -class WXDLLEXPORT wxRadioBox: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxRadioBox) -public: - wxRadioBox(void); - -#if WXWIN_COMPATIBILITY - wxRadioBox(wxWindow *parent, wxFunction func, const char *title, - int x = -1, int y = -1, int width = -1, int height = -1, - int n = 0, char **choices = NULL, - int majorDim = 0, long style = wxRA_HORIZONTAL, const char *name = wxRadioBoxNameStr); - -/* - inline wxRadioBox(wxWindow *parent, wxFunction func, const char *title, - int x, int y, int width, int height, - int n, wxBitmap **choices, - int majorDim = 0, long style = wxRA_HORIZONTAL, const char *name = wxRadioBoxNameStr) - { - Create(parent, -1, title, wxPoint(x, y), wxSize(width, height), n, (const wxBitmap **)choices, majorDim, style, - wxDefaultValidator, name); - Callback(func); - } -*/ - -#endif - - inline wxRadioBox(wxWindow *parent, wxWindowID id, const wxString& title, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = NULL, - int majorDim = 0, long style = wxRA_HORIZONTAL, - const wxValidator& val = wxDefaultValidator, const wxString& name = wxRadioBoxNameStr) - { - Create(parent, id, title, pos, size, n, choices, majorDim, style, val, name); - } - -/* - wxRadioBox(wxWindow *parent, wxWindowID id, const wxString& title, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - int n = 0, const wxBitmap *choices[] = NULL, - int majorDim = 0, long style = wxRA_HORIZONTAL, - const wxValidator& val = wxDefaultValidator, const wxString& name = wxRadioBoxNameStr) - { - Create(parent, id, title, pos, size, n, choices, majorDim, style, val, name); - } -*/ - - ~wxRadioBox(void); - - bool Create(wxWindow *parent, wxWindowID id, const wxString& title, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = NULL, - int majorDim = 0, long style = wxRA_HORIZONTAL, - const wxValidator& val = wxDefaultValidator, const wxString& name = wxRadioBoxNameStr); - -/* - bool Create(wxWindow *parent, wxWindowID id, const wxString& title, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - int n = 0, const wxBitmap *choices[] = NULL, - int majorDim = 0, long style = wxRA_HORIZONTAL, - const wxValidator& val = wxDefaultValidator, const wxString& name = wxRadioBoxNameStr); -*/ - - virtual bool MSWCommand(WXUINT param, WXWORD id); - virtual WXHBRUSH OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor, - WXUINT message, WXWPARAM wParam, WXLPARAM lParam); - - int FindString(const wxString& s) const; - void SetSelection(int N); - int GetSelection(void) const; - wxString GetString(int N) const; - - void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - void SetSize(const wxRect& rect, int sizeFlags = wxSIZE_AUTO) - { wxWindow::SetSize(rect, sizeFlags); } - void SetSize(const wxSize& size) { wxWindow::SetSize(size); } - - void GetSize(int *x, int *y) const; - wxSize GetSize() const { return wxWindow::GetSize(); } - - void GetPosition(int *x, int *y) const; - wxPoint GetPosition() const { return wxWindow::GetPosition(); } - - wxString GetLabel(void) const; - void SetLabel(const wxString& label); - void SetLabel(int item, const wxString& label) ; - void SetLabel(int item, wxBitmap *bitmap) ; - wxString GetLabel(int item) const; - bool Show(bool show); - void SetFocus(void); - void Enable(bool enable); - void Enable(int item, bool enable); - void Show(int item, bool show) ; - inline void SetLabelFont(const wxFont& WXUNUSED(font)) {}; - inline void SetButtonFont(const wxFont& font) { SetFont(font); } - - virtual wxString GetStringSelection(void) const; - virtual bool SetStringSelection(const wxString& s); - inline virtual int Number(void) const { return m_noItems; } ; - void Command(wxCommandEvent& event); - - inline int GetNumberOfRowsOrCols(void) const { return m_noRowsOrCols; } - inline void SetNumberOfRowsOrCols(int n) { m_noRowsOrCols = n; } - - // Implementation - inline WXHWND *GetRadioButtons(void) const { return m_radioButtons; } - bool ContainsHWND(WXHWND hWnd) const ; - - long MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam); - -protected: - WXHWND * m_radioButtons; - int m_majorDim ; - int * m_radioWidth ; // for bitmaps - int * m_radioHeight ; - - int m_noItems; - int m_noRowsOrCols; - int m_selectedButton; - -}; - -#endif - // _WX_RADIOBOX_H_ diff --git a/include/wx/msw/radiobut.h b/include/wx/msw/radiobut.h deleted file mode 100644 index 1a546cee83..0000000000 --- a/include/wx/msw/radiobut.h +++ /dev/null @@ -1,93 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: radiobut.h -// Purpose: wxRadioButton class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_RADIOBUT_H_ -#define _WX_RADIOBUT_H_ - -#ifdef __GNUG__ -#pragma interface "radiobut.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxRadioButtonNameStr; - -class WXDLLEXPORT wxRadioButton: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxRadioButton) - protected: - public: - inline wxRadioButton(void) {} - inline wxRadioButton(wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxRadioButtonNameStr) - { - Create(parent, id, label, pos, size, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxRadioButtonNameStr); - - virtual void SetLabel(const wxString& label); - virtual void SetValue(bool val); - virtual bool GetValue(void) const ; - - bool MSWCommand(WXUINT param, WXWORD id); - void Command(wxCommandEvent& event); - virtual WXHBRUSH OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor, - WXUINT message, WXWPARAM wParam, WXLPARAM lParam); -}; - -// Not implemented -#if 0 -class WXDLLEXPORT wxBitmap ; - -WXDLLEXPORT_DATA(extern const char*) wxBitmapRadioButtonNameStr; - -class WXDLLEXPORT wxBitmapRadioButton: public wxRadioButton -{ - DECLARE_DYNAMIC_CLASS(wxBitmapRadioButton) - protected: - wxBitmap *theButtonBitmap; - public: - inline wxBitmapRadioButton(void) { theButtonBitmap = NULL; } - inline wxBitmapRadioButton(wxWindow *parent, wxWindowID id, - const wxBitmap *label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxBitmapRadioButtonNameStr) - { - Create(parent, id, label, pos, size, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - const wxBitmap *label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxBitmapRadioButtonNameStr); - - virtual void SetLabel(const wxBitmap *label); - virtual void SetValue(bool val) ; - virtual bool GetValue(void) const ; -}; -#endif - -#endif - // _WX_RADIOBUT_H_ diff --git a/include/wx/msw/regconf.h b/include/wx/msw/regconf.h deleted file mode 100644 index 630bab52d6..0000000000 --- a/include/wx/msw/regconf.h +++ /dev/null @@ -1,110 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: msw/regconf.h -// Purpose: Registry based implementation of wxConfigBase -// Author: Vadim Zeitlin -// Modified by: -// Created: 27.04.98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -#ifndef _REGCONF_H -#define _REGCONF_H - -#ifdef __GNUG__ -#pragma interface "regconf.h" -#endif - -#ifndef _REGISTRY_H - #include -#endif - -// ---------------------------------------------------------------------------- -// wxRegConfig -// ---------------------------------------------------------------------------- - -class WXDLLEXPORT wxRegConfig : public wxConfigBase -{ -public: - // ctor & dtor - // will store data in HKLM\appName and HKCU\appName - wxRegConfig(const wxString& appName = "", const wxString& vendorName = "", - const wxString& localFilename = "", const wxString& globalFilename = "", - long style = 0); - - // dtor will save unsaved data - virtual ~wxRegConfig(); - - // implement inherited pure virtual functions - // ------------------------------------------ - - // path management - virtual void SetPath(const wxString& strPath); - virtual const wxString& GetPath() const { return m_strPath; } - - // entry/subgroup info - // enumerate all of them - virtual bool GetFirstGroup(wxString& str, long& lIndex) const; - virtual bool GetNextGroup (wxString& str, long& lIndex) const; - virtual bool GetFirstEntry(wxString& str, long& lIndex) const; - virtual bool GetNextEntry (wxString& str, long& lIndex) const; - - // tests for existence - virtual bool HasGroup(const wxString& strName) const; - virtual bool HasEntry(const wxString& strName) const; - - // get number of entries/subgroups in the current group, with or without - // it's subgroups - virtual size_t GetNumberOfEntries(bool bRecursive = FALSE) const; - virtual size_t GetNumberOfGroups(bool bRecursive = FALSE) const; - - // read/write - bool Read(const wxString& key, wxString *pStr) const; - bool Read(const wxString& key, wxString *pStr, const wxString& szDefault) const; - bool Read(const wxString& key, long *plResult) const; - - // The following are necessary to satisfy the compiler - wxString Read(const wxString& key, const wxString& defVal) const - { return wxConfigBase::Read(key, defVal); } - bool Read(const wxString& key, long *pl, long defVal) const - { return wxConfigBase::Read(key, pl, defVal); } - bool Read(const wxString& key, int *pi, int defVal) const - { return wxConfigBase::Read(key, pi, defVal); } - bool Read(const wxString& key, int *pi) const - { return wxConfigBase::Read(key, pi); } - long Read(const wxString& key, long defVal) const - { return wxConfigBase::Read(key, defVal); } - bool Read(const wxString& key, double* val) const - { return wxConfigBase::Read(key, val); } - bool Read(const wxString& key, double* val, double defVal) const - { return wxConfigBase::Read(key, val, defVal); } - - bool Write(const wxString& key, const wxString& szValue); - bool Write(const wxString& key, long lValue); - - virtual bool Flush(bool /* bCurrentOnly = FALSE */ ) { return TRUE; } - - // rename - virtual bool RenameEntry(const wxString& oldName, const wxString& newName); - virtual bool RenameGroup(const wxString& oldName, const wxString& newName); - - // delete - virtual bool DeleteEntry(const wxString& key, bool bGroupIfEmptyAlso); - virtual bool DeleteGroup(const wxString& key); - virtual bool DeleteAll(); - -private: - // no copy ctor/assignment operator - wxRegConfig(const wxRegConfig&); - wxRegConfig& operator=(const wxRegConfig&); - - // these keys are opened during all lifetime of wxRegConfig object - wxRegKey m_keyLocalRoot, m_keyLocal, - m_keyGlobalRoot, m_keyGlobal; - - // current path (not '/' terminated) - wxString m_strPath; -}; - -#endif //_REGCONF_H diff --git a/include/wx/msw/region.h b/include/wx/msw/region.h deleted file mode 100644 index 4349debda6..0000000000 --- a/include/wx/msw/region.h +++ /dev/null @@ -1,145 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: region.h -// Purpose: wxRegion class -// Author: Markus Holzem, Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_REGION_H_ -#define _WX_REGION_H_ - -#ifdef __GNUG__ -#pragma interface "region.h" -#endif - -#include "wx/list.h" -#include "wx/gdiobj.h" -#include "wx/gdicmn.h" - -class WXDLLEXPORT wxRect; -class WXDLLEXPORT wxPoint; - -enum wxRegionContain { - wxOutRegion = 0, wxPartRegion = 1, wxInRegion = 2 -}; - -// So far, for internal use only -enum wxRegionOp { -wxRGN_AND, // Creates the intersection of the two combined regions. -wxRGN_COPY, // Creates a copy of the region identified by hrgnSrc1. -wxRGN_DIFF, // Combines the parts of hrgnSrc1 that are not part of hrgnSrc2. -wxRGN_OR, // Creates the union of two combined regions. -wxRGN_XOR // Creates the union of two combined regions except for any overlapping areas. -}; - -class WXDLLEXPORT wxRegion : public wxGDIObject { -DECLARE_DYNAMIC_CLASS(wxRegion); - friend class WXDLLEXPORT wxRegionIterator; -public: - wxRegion(long x, long y, long w, long h); - wxRegion(const wxPoint& topLeft, const wxPoint& bottomRight); - wxRegion(const wxRect& rect); - wxRegion(WXHRGN hRegion); // Hangs on to this region - - wxRegion(void); - ~wxRegion(void); - - //# Copying - inline wxRegion(const wxRegion& r) - { Ref(r); } - inline wxRegion& operator = (const wxRegion& r) - { Ref(r); return (*this); } - - //# Modify region - // Clear current region - void Clear(void); - - // Union rectangle or region with this. - inline bool Union(long x, long y, long width, long height) { return Combine(x, y, width, height, wxRGN_OR); } - inline bool Union(const wxRect& rect) { return Combine(rect, wxRGN_OR); } - inline bool Union(const wxRegion& region) { return Combine(region, wxRGN_OR); } - - // Intersect rectangle or region with this. - inline bool Intersect(long x, long y, long width, long height) { return Combine(x, y, width, height, wxRGN_AND); } - inline bool Intersect(const wxRect& rect) { return Combine(rect, wxRGN_AND); } - inline bool Intersect(const wxRegion& region) { return Combine(region, wxRGN_AND); } - - // Subtract rectangle or region from this: - // Combines the parts of 'this' that are not part of the second region. - inline bool Subtract(long x, long y, long width, long height) { return Combine(x, y, width, height, wxRGN_DIFF); } - inline bool Subtract(const wxRect& rect) { return Combine(rect, wxRGN_DIFF); } - inline bool Subtract(const wxRegion& region) { return Combine(region, wxRGN_DIFF); } - - // XOR: the union of two combined regions except for any overlapping areas. - inline bool Xor(long x, long y, long width, long height) { return Combine(x, y, width, height, wxRGN_XOR); } - inline bool Xor(const wxRect& rect) { return Combine(rect, wxRGN_XOR); } - inline bool Xor(const wxRegion& region) { return Combine(region, wxRGN_XOR); } - - //# Information on region - // Outer bounds of region - void GetBox(long& x, long& y, long&w, long &h) const; - wxRect GetBox(void) const ; - - // Is region empty? - bool Empty(void) const; - inline bool IsEmpty(void) const { return Empty(); } - - //# Tests - // Does the region contain the point (x,y)? - wxRegionContain Contains(long x, long y) const; - // Does the region contain the point pt? - wxRegionContain Contains(const wxPoint& pt) const; - // Does the region contain the rectangle (x, y, w, h)? - wxRegionContain Contains(long x, long y, long w, long h) const; - // Does the region contain the rectangle rect? - wxRegionContain Contains(const wxRect& rect) const; - -// Internal - bool Combine(long x, long y, long width, long height, wxRegionOp op); - bool Combine(const wxRegion& region, wxRegionOp op); - bool Combine(const wxRect& rect, wxRegionOp op); - - // Get internal region handle - WXHRGN GetHRGN() const; -}; - -class WXDLLEXPORT wxRegionIterator : public wxObject { -DECLARE_DYNAMIC_CLASS(wxRegionIterator); -public: - wxRegionIterator(void); - wxRegionIterator(const wxRegion& region); - ~wxRegionIterator(void); - - void Reset(void) { m_current = 0; } - void Reset(const wxRegion& region); - -#ifndef __SALFORDC__ - operator bool (void) const { return (m_current < m_numRects); } -#endif - - bool HaveRects(void) const { return (m_current < m_numRects); } - - void operator ++ (void); - void operator ++ (int); - - long GetX(void) const; - long GetY(void) const; - long GetW(void) const; - long GetWidth(void) const { return GetW(); } - long GetH(void) const; - long GetHeight(void) const { return GetH(); } - wxRect GetRect() const { return wxRect(GetX(), GetY(), GetWidth(), GetHeight()); } - -private: - long m_current; - long m_numRects; - wxRegion m_region; - wxRect* m_rects; -}; - -#endif - // _WX_REGION_H_ diff --git a/include/wx/msw/registry.h b/include/wx/msw/registry.h deleted file mode 100644 index f4694aff5c..0000000000 --- a/include/wx/msw/registry.h +++ /dev/null @@ -1,228 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: msw/registry.h -// Purpose: Registry classes and functions -// Author: Vadim Zeitlin -// Modified by: -// Created: 03.04.198 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -#ifndef _REGISTRY_H -#define _REGISTRY_H - -#ifdef __GNUG__ -#pragma interface "registry.h" -#endif - -// ---------------------------------------------------------------------------- -// mutable hack (see also registry.cpp) -// ---------------------------------------------------------------------------- -#if wxUSE_MUTABLE - #define MUTABLE mutable -#else - #define MUTABLE -#endif - -// ---------------------------------------------------------------------------- -// types used in this module -// ---------------------------------------------------------------------------- - -/* -#ifndef HKEY_DEFINED - #define HKEY_DEFINED - #define HKEY unsigned long -#endif -*/ - -typedef unsigned long ulong; - -// ---------------------------------------------------------------------------- -// class wxRegKey encapsulates window HKEY handle -// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxRegKey -{ -public: - // NB: do _not_ change the values of elements in these enumerations! - - // registry value types (with comments from winnt.h) - enum ValueType - { - Type_None, // No value type - Type_String, // Unicode nul terminated string -#ifdef __WIN32__ - Type_Expand_String, // Unicode nul terminated string - // (with environment variable references) - Type_Binary, // Free form binary - Type_Dword, // 32-bit number - Type_Dword_little_endian, // 32-bit number (same as Type_DWORD) - Type_Dword_big_endian, // 32-bit number - Type_Link, // Symbolic Link (unicode) - Type_Multi_String, // Multiple Unicode strings - Type_Resource_list, // Resource list in the resource map - Type_Full_resource_descriptor, // Resource list in the hardware description - Type_Resource_requirements_list // ??? -#endif //WIN32 - }; - - // predefined registry keys - enum StdKey - { - HKCR // classes root -#ifdef __WIN32__ - , HKCU, // current user - HKLM, // local machine - HKUSR, // users - HKPD // performance data (@@ NT only?) -#if WINVER >= 0x0400 - , HKCC, // current config - HKDD // dynamic data -#endif // Winver -#endif // Win32/16 - }; - - // information about standard (predefined) registry keys - // number of standard keys - static const size_t nStdKeys; - // get the name of a standard key - static const char *GetStdKeyName(size_t key); - // get the short name of a standard key - static const char *GetStdKeyShortName(size_t key); - // get StdKey from root HKEY - static StdKey GetStdKeyFromHkey(WXHKEY hkey); - - // extacts the std key prefix from the string (return value) and - // leaves only the part after it (i.e. modifies the string passed!) - static StdKey ExtractKeyName(wxString& str); - - // ctors - // root key is set to HKCR (the only root key under Win16) - wxRegKey(); - // strKey is the full name of the key (i.e. starting with HKEY_xxx...) - wxRegKey(const wxString& strKey); - // strKey is the name of key under (standard key) keyParent - wxRegKey(StdKey keyParent, const wxString& strKey); - // strKey is the name of key under (previously created) keyParent - wxRegKey(const wxRegKey& keyParent, const wxString& strKey); - // - ~wxRegKey(); - - // change key (closes the previously opened key if any) - // the name is absolute, i.e. should start with HKEY_xxx - void SetName(const wxString& strKey); - // the name is relative to the parent key - void SetName(StdKey keyParent, const wxString& strKey); - // the name is relative to the parent key - void SetName(const wxRegKey& keyParent, const wxString& strKey); - // hKey should be opened and will be closed in wxRegKey dtor - void SetHkey(WXHKEY hKey); - - // get infomation about the key - // get the (full) key name. Abbreviate std root keys if bShortPrefix. - wxString GetName(bool bShortPrefix = TRUE) const; - // return true if the key exists - bool Exists() const; - // get the info about key (any number of these pointers may be NULL) - -#ifdef __GNUWIN32__ - bool GetKeyInfo(size_t *pnSubKeys, // number of subkeys - size_t *pnMaxKeyLen, // max len of subkey name - size_t *pnValues, // number of values - size_t *pnMaxValueLen) const; -#else - bool GetKeyInfo(ulong *pnSubKeys, // number of subkeys - ulong *pnMaxKeyLen, // max len of subkey name - ulong *pnValues, // number of values - ulong *pnMaxValueLen) const; -#endif - // return true if the key is opened - bool IsOpened() const { return m_hKey != 0; } - // for "if ( !key ) wxLogError(...)" kind of expressions - operator bool() const { return m_dwLastError == 0; } - - // operations on the key itself - // explicitly open the key (will be automatically done by all functions - // which need the key to be opened if the key is not opened yet) - bool Open(); - // create the key: will fail if the key already exists and bOkIfExists - bool Create(bool bOkIfExists = TRUE); - // close the key (will be automatically done in dtor) - bool Close(); - - // deleting keys/values - // deletes this key and all of it's subkeys/values - bool DeleteSelf(); - // deletes the subkey with all of it's subkeys/values recursively - bool DeleteKey(const char *szKey); - // deletes the named value (may be NULL to remove the default value) - bool DeleteValue(const char *szValue); - - // access to values and subkeys - // get value type - ValueType GetValueType(const char *szValue) const; - // returns TRUE if the value contains a number (else it's some string) - bool IsNumericValue(const char *szValue) const - { - ValueType type = GetValueType(szValue); - switch ( type ) { - case Type_Dword: - case Type_Dword_little_endian: - case Type_Dword_big_endian: - return TRUE; - - default: - return FALSE; - } - } - - // assignment operators set the default value of the key - wxRegKey& operator=(const wxString& strValue) - { SetValue(NULL, strValue); return *this; } - wxRegKey& operator=(long lValue) - { SetValue(NULL, lValue); return *this; } - - // conversion operators query the default value of the key - operator wxString() const; - - // set the string value - bool SetValue(const char *szValue, const wxString& strValue); - // return the string value - bool QueryValue(const char *szValue, wxString& strValue) const; - -#ifdef __WIN32__ - // set the numeric value - bool SetValue(const char *szValue, long lValue); - // return the numeric value - bool QueryValue(const char *szValue, long *plValue) const; -#endif //Win32 - - // query existence of a key/value - // return true if value exists - bool HasValue(const char *szKey) const; - // return true if given subkey exists - bool HasSubKey(const char *szKey) const; - // return true if any subkeys exist - bool HasSubkeys() const; - - // enumerate values and subkeys - bool GetFirstValue(wxString& strValueName, long& lIndex); - bool GetNextValue (wxString& strValueName, long& lIndex) const; - - bool GetFirstKey (wxString& strKeyName , long& lIndex); - bool GetNextKey (wxString& strKeyName , long& lIndex) const; - -private: - // no copy ctor/assignment operator - wxRegKey(const wxRegKey& key); // not implemented - wxRegKey& operator=(const wxRegKey& key); // not implemented - - WXHKEY m_hKey, // our handle - m_hRootKey; // handle of the top key (i.e. StdKey) - wxString m_strKey; // key name (relative to m_hRootKey) - - MUTABLE long m_dwLastError; // last error (0 if none) -}; - -#endif //_REGISTRY_H - diff --git a/include/wx/msw/roller.cur b/include/wx/msw/roller.cur deleted file mode 100644 index bb7f16613384321a0a749dd94a669c8412bff613..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 326 zcmc)Eu?@m75QX7)i4X+^RH-6#B_$=LN1#dXP2v$UN2c%yjKBy?!10G5WdzRpY(MK{ zoz%$WE~?knq>kGKjs#vybS+aqEN+zK*oIOF(~_HU_;mu%^cC^pa4h9U7~#-04& feWKl^v97-qVuIs@9?NtG?26P>rptuN41cW;gqE8j diff --git a/include/wx/msw/scrolbar.h b/include/wx/msw/scrolbar.h deleted file mode 100644 index 588d3d1321..0000000000 --- a/include/wx/msw/scrolbar.h +++ /dev/null @@ -1,91 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: scrollbar.h -// Purpose: wxScrollBar class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_SCROLBAR_H_ -#define _WX_SCROLBAR_H_ - -#ifdef __GNUG__ -#pragma interface "scrolbar.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxScrollBarNameStr; - -// Scrollbar item -class WXDLLEXPORT wxScrollBar: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxScrollBar) - -public: - inline wxScrollBar(void) { m_pageSize = 0; m_viewSize = 0; m_objectSize = 0; } - ~wxScrollBar(void); - - inline wxScrollBar(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxSB_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxScrollBarNameStr) - { - Create(parent, id, pos, size, style, validator, name); - } - bool Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxSB_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxScrollBarNameStr); - - int GetThumbPosition(void) const ; - inline int GetThumbSize() const { return m_pageSize; } - inline int GetPageSize() const { return m_viewSize; } - inline int GetRange() const { return m_objectSize; } - - virtual void SetThumbPosition(int viewStart); - virtual void SetScrollbar(int position, int thumbSize, int range, int pageSize, - bool refresh = TRUE); - -#if WXWIN_COMPATIBILITY - // Backward compatibility - inline int GetValue(void) const { return GetThumbPosition(); } - inline void SetValue(int viewStart) { SetThumbPosition(viewStart); } - void GetValues(int *viewStart, int *viewLength, int *objectLength, - int *pageLength) const ; - inline int GetViewLength() const { return m_viewSize; } - inline int GetObjectLength() const { return m_objectSize; } - - void SetPageSize(int pageLength); - void SetObjectLength(int objectLength); - void SetViewLength(int viewLength); -#endif - - void Command(wxCommandEvent& event); - virtual WXHBRUSH OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor, - WXUINT message, WXWPARAM wParam, WXLPARAM lParam); - void MSWOnVScroll(WXWORD wParam, WXWORD pos, WXHWND control); - void MSWOnHScroll(WXWORD wParam, WXWORD pos, WXHWND control); - -#if WXWIN_COMPATIBILITY - // Backward compatibility: generate an old-style scroll command - void OnScroll(wxScrollEvent& event); -#endif - -protected: - int m_pageSize; - int m_viewSize; - int m_objectSize; - -DECLARE_EVENT_TABLE() -}; - -#endif - // _WX_SCROLBAR_H_ diff --git a/include/wx/msw/settings.h b/include/wx/msw/settings.h deleted file mode 100644 index 2df189e9ae..0000000000 --- a/include/wx/msw/settings.h +++ /dev/null @@ -1,129 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: settings.h -// Purpose: wxSystemSettings class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_SETTINGS_H_ -#define _WX_SETTINGS_H_ - -#ifdef __GNUG__ -#pragma interface "settings.h" -#endif - -#include "wx/setup.h" - -#define wxSYS_WHITE_BRUSH 0 -#define wxSYS_LTGRAY_BRUSH 1 -#define wxSYS_GRAY_BRUSH 2 -#define wxSYS_DKGRAY_BRUSH 3 -#define wxSYS_BLACK_BRUSH 4 -#define wxSYS_NULL_BRUSH 5 -#define wxSYS_HOLLOW_BRUSH wxSYS_NULL_BRUSH -#define wxSYS_WHITE_PEN 6 -#define wxSYS_BLACK_PEN 7 -#define wxSYS_NULL_PEN 8 -#define wxSYS_OEM_FIXED_FONT 10 -#define wxSYS_ANSI_FIXED_FONT 11 -#define wxSYS_ANSI_VAR_FONT 12 -#define wxSYS_SYSTEM_FONT 13 -#define wxSYS_DEVICE_DEFAULT_FONT 14 -#define wxSYS_DEFAULT_PALETTE 15 -#define wxSYS_SYSTEM_FIXED_FONT 16 // Obsolete -#define wxSYS_DEFAULT_GUI_FONT 17 - -#define wxSYS_COLOUR_SCROLLBAR 0 -#define wxSYS_COLOUR_BACKGROUND 1 -#define wxSYS_COLOUR_ACTIVECAPTION 2 -#define wxSYS_COLOUR_INACTIVECAPTION 3 -#define wxSYS_COLOUR_MENU 4 -#define wxSYS_COLOUR_WINDOW 5 -#define wxSYS_COLOUR_WINDOWFRAME 6 -#define wxSYS_COLOUR_MENUTEXT 7 -#define wxSYS_COLOUR_WINDOWTEXT 8 -#define wxSYS_COLOUR_CAPTIONTEXT 9 -#define wxSYS_COLOUR_ACTIVEBORDER 10 -#define wxSYS_COLOUR_INACTIVEBORDER 11 -#define wxSYS_COLOUR_APPWORKSPACE 12 -#define wxSYS_COLOUR_HIGHLIGHT 13 -#define wxSYS_COLOUR_HIGHLIGHTTEXT 14 -#define wxSYS_COLOUR_BTNFACE 15 -#define wxSYS_COLOUR_BTNSHADOW 16 -#define wxSYS_COLOUR_GRAYTEXT 17 -#define wxSYS_COLOUR_BTNTEXT 18 -#define wxSYS_COLOUR_INACTIVECAPTIONTEXT 19 -#define wxSYS_COLOUR_BTNHIGHLIGHT 20 - -#define wxSYS_COLOUR_3DDKSHADOW 21 -#define wxSYS_COLOUR_3DLIGHT 22 -#define wxSYS_COLOUR_INFOTEXT 23 -#define wxSYS_COLOUR_INFOBK 24 - -#define wxSYS_COLOUR_DESKTOP wxSYS_COLOUR_BACKGROUND -#define wxSYS_COLOUR_3DFACE wxSYS_COLOUR_BTNFACE -#define wxSYS_COLOUR_3DSHADOW wxSYS_COLOUR_BTNSHADOW -#define wxSYS_COLOUR_3DHIGHLIGHT wxSYS_COLOUR_BTNHIGHLIGHT -#define wxSYS_COLOUR_3DHILIGHT wxSYS_COLOUR_BTNHIGHLIGHT -#define wxSYS_COLOUR_BTNHILIGHT wxSYS_COLOUR_BTNHIGHLIGHT - -// Metrics -#define wxSYS_MOUSE_BUTTONS 1 -#define wxSYS_BORDER_X 2 -#define wxSYS_BORDER_Y 3 -#define wxSYS_CURSOR_X 4 -#define wxSYS_CURSOR_Y 5 -#define wxSYS_DCLICK_X 6 -#define wxSYS_DCLICK_Y 7 -#define wxSYS_DRAG_X 8 -#define wxSYS_DRAG_Y 9 -#define wxSYS_EDGE_X 10 -#define wxSYS_EDGE_Y 11 -#define wxSYS_HSCROLL_ARROW_X 12 -#define wxSYS_HSCROLL_ARROW_Y 13 -#define wxSYS_HTHUMB_X 14 -#define wxSYS_ICON_X 15 -#define wxSYS_ICON_Y 16 -#define wxSYS_ICONSPACING_X 17 -#define wxSYS_ICONSPACING_Y 18 -#define wxSYS_WINDOWMIN_X 19 -#define wxSYS_WINDOWMIN_Y 20 -#define wxSYS_SCREEN_X 21 -#define wxSYS_SCREEN_Y 22 -#define wxSYS_FRAMESIZE_X 23 -#define wxSYS_FRAMESIZE_Y 24 -#define wxSYS_SMALLICON_X 25 -#define wxSYS_SMALLICON_Y 26 -#define wxSYS_HSCROLL_Y 27 -#define wxSYS_VSCROLL_X 28 -#define wxSYS_VSCROLL_ARROW_X 29 -#define wxSYS_VSCROLL_ARROW_Y 30 -#define wxSYS_VTHUMB_Y 31 -#define wxSYS_CAPTION_Y 32 -#define wxSYS_MENU_Y 33 -#define wxSYS_NETWORK_PRESENT 34 -#define wxSYS_PENWINDOWS_PRESENT 35 -#define wxSYS_SHOW_SOUNDS 36 -#define wxSYS_SWAP_BUTTONS 37 - -class WXDLLEXPORT wxSystemSettings: public wxObject -{ -public: - inline wxSystemSettings(void) {} - - // Get a system colour - static wxColour GetSystemColour(int index); - - // Get a system font - static wxFont GetSystemFont(int index); - - // Get a system metric, e.g. scrollbar size - static int GetSystemMetric(int index); -}; - -#endif - // _WX_SETTINGS_H_ diff --git a/include/wx/msw/setup.h b/include/wx/msw/setup.h deleted file mode 100644 index 5e58c37d5f..0000000000 --- a/include/wx/msw/setup.h +++ /dev/null @@ -1,333 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: setup.h -// Purpose: Configuration for the library -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_SETUP_H_ -#define _WX_SETUP_H_ - -/* - * General features - * - */ - -#define wxUSE_CONFIG 1 - // Use wxConfig, with CreateConfig in wxApp -#define _WX_GOODCOMPILER__ - // gcc can have problems, but Windows compilers - // are generally OK. -#define WXWIN_COMPATIBILITY 0 - // Compatibility with 1.68 API. - // Level 0: no backward compatibility, all new features - // Level 1: Some compatibility. In fact - // the compatibility code is now very minimal so there - // is little advantage to setting it to 1. - -#define wxUSE_AUTOTRANS 1 - // Define wxTString -#define wxUSE_POSTSCRIPT 0 - // 0 for no PostScript device context -#define wxUSE_AFM_FOR_POSTSCRIPT 0 - // 1 to use font metric files in GetTextExtent -#define wxUSE_METAFILE 1 - // 0 for no Metafile and metafile device context -#define wxUSE_FORM 0 - // 0 for no wxForm -#define wxUSE_IPC 1 - // 0 for no interprocess comms -// Note: wxHELP uses IPC under X so these are interdependent! -#define wxUSE_HELP 1 - // 0 for no help facility -#define wxUSE_RESOURCES 1 - // 0 for no wxGetResource/wxWriteResource -#define wxUSE_CONSTRAINTS 1 - // 0 for no window layout constraint system - -#define wxUSE_TIMEDATE 1 - // 0 for no wxTime/wxDate classes - -#define wxUSE_CLIPBOARD 1 - // 0 for no clipboard functions -#define wxUSE_SPLINES 1 - // 0 for no splines -#define wxUSE_XFIG_SPLINE_CODE 1 - // 1 for XFIG spline code, 0 for AIAI spline code. -// AIAI spline code is slower, but freer of copyright issues. - -#define wxUSE_DRAG_AND_DROP 1 - // 0 for no drag and drop - -#define wxUSE_TOOLBAR 1 - // Define 1 to use toolbar classes -#define wxUSE_BUTTONBAR 1 - // Define 1 to use buttonbar classes (enhanced toolbar - // for MS Windows) -#define wxUSE_GAUGE 1 - // Define 1 to use Microsoft's gauge (Windows) - // or Bull's gauge (Motif) library (both in contrib). -#define wxUSE_COMBOBOX 1 - // Define 1 to use COMBOXBOX control (Windows) - // or FWW's ComboBox widget (Motif). -#define wxUSE_RADIOBUTTON 1 - // Define 1 to use radio button control - -#define wxUSE_SCROLLBAR 1 - // Define 1 to compile contributed wxScrollBar class -#define wxUSE_XPM_IN_MSW 1 - // Define 1 to support the XPM package in wxBitmap. -#define wxUSE_IMAGE_LOADING_IN_MSW 1 - // Use dynamic DIB loading/saving code in utils/dib under MSW. -#define wxUSE_RESOURCE_LOADING_IN_MSW 1 - // Use dynamic icon/cursor loading/saving code - // under MSW. -#define wxUSE_WX_RESOURCES 1 - // Use .wxr resource mechanism (requires PrologIO library) - -// BC++/Win16 can't cope with the amount of data in resource.cpp -#if defined(__WIN16__) && defined(__BORLANDC__) -#undef wxUSE_WX_RESOURCES -#define wxUSE_WX_RESOURCES 0 -#endif - -#define HAVE_SOCKET 1 - // Use WinSock if 1 -#define wxUSE_DOC_VIEW_ARCHITECTURE 1 - // Set to 0 to disable document/view architecture -#define wxUSE_PRINTING_ARCHITECTURE 1 - // Set to 0 to disable print/preview architecture code -#define wxUSE_POSTSCRIPT_ARCHITECTURE_IN_MSW 1 - // Set to 0 to disable PostScript print/preview architecture code - // under Windows (just use Windows printing). -#define wxUSE_DYNAMIC_CLASSES 1 - // If 1, enables provision of run-time type information. - // NOW MANDATORY: don't change. -#define wxUSE_MEMORY_TRACING 1 - // If 1, enables debugging versions of wxObject::new and - // wxObject::delete *IF* __WXDEBUG__ is also defined. - // WARNING: this code may not work with all architectures, especially - // if alignment is an issue. -#define wxUSE_DEBUG_CONTEXT 1 - // If 1, enables wxDebugContext, for - // writing error messages to file, etc. - // If __WXDEBUG__ is not defined, will still use - // normal memory operators. - // It's recommended to set this to 1, - // since you may well need to output - // an error log in a production - // version (or non-debugging beta) -#define wxUSE_GLOBAL_MEMORY_OPERATORS 1 - // In debug mode, cause new and delete to be redefined globally. - // If this causes problems (e.g. link errors), set this to 0. - -#define wxUSE_DEBUG_NEW_ALWAYS 1 - // In debug mode, causes new to be defined to - // be WXDEBUG_NEW (see object.h). - // If this causes problems (e.g. link errors), set this to 0. - // You may need to set this to 0 if using templates (at least - // for VC++). - -#define REMOVE_UNUSED_ARG 1 - // Set this to 0 if your compiler can't cope - // with omission of prototype parameters. - -#define wxUSE_ODBC 1 - // Define 1 to use ODBC classes - -#ifndef __MWERKS__ -#define wxUSE_IOSTREAMH 1 -#else -#define wxUSE_IOSTREAMH 0 -#endif - // VC++ 4.2 and above allows and - // but you can't mix them. Set to 1 for , - // 0 for - -#define wxUSE_WXCONFIG 1 - // if enabled, compiles built-in OS independent wxConfig - // class and it's file (any platform) and registry (Win) - // based implementations -#define wxUSE_THREADS 1 - // support for multithreaded applications: if - // 1, compile in thread classes (thread.h) - // and make the library thread safe -#define wxUSE_ZLIB 1 - // Use zlib for compression in streams and PNG code -#define wxUSE_LIBPNG 1 - // Use PNG bitmap code -#define wxUSE_STD_IOSTREAM 1 - // Use standard C++ streams if 1. If 0, use wxWin - // streams implementation. - -/* - * Finer detail - * - */ - -#define wxUSE_APPLE_IEEE 1 - // if enabled, the float codec written by Apple - // will be used to write, in a portable way, - // float on the disk - -/* - * MS Windows/Windows NT - * - */ - -#if defined(__WIN95__) -#define CTL3D 0 -#else -#define CTL3D 1 - // Define 1 to use Microsoft CTL3D library. - // See note above about using FAFA and CTL3D. -#endif - -#define wxUSE_COMMON_DIALOGS 1 - // On rare occasions (e.g. using DJGPP) may want - // to omit common dialogs - // (e.g. file selector, printer dialog). - // Switching this off also switches off - // the printing architecture and interactive - // wxPrinterDC. -#define wxUSE_ITSY_BITSY 1 - // Define 1 to use Microsoft's ItsyBitsy - // small title bar library, for wxMiniFrame -#define wxUSE_BITMAP_MESSAGE 1 - // Define 1 to use bitmap messages. -#define wxUSE_PORTABLE_FONTS_IN_MSW 0 - // Define 1 to use new portable font scheme in Windows - // (used by default under X) -#define FONT_SIZE_COMPATIBILITY 0 - // Define 1 for font size to be backward compatible - // to 1.63 and earlier. 1.64 and later define point - // sizes to be compatible with Windows. -#define wxUSE_GENERIC_DIALOGS_IN_MSW 1 - // Define 1 to use generic dialogs in Windows, even though - // they duplicate native common dialog (e.g. wxColourDialog) -#define wxUSE_PENWINDOWS 0 - // Set to 1 to use PenWindows - -#define wxUSE_OWNER_DRAWN 1 - // Owner-drawn menus and listboxes - -#define wxUSE_NATIVE_STATUSBAR 1 - // Set to 0 to use cross-platform wxStatusBar -#define wxUSE_DBWIN32 1 - // Use Andrew Tucker's OutputDebugString implementation - // (required on Win95 only). See utils.cpp. - -/* - * Any platform - * - */ - -#define wxUSE_TYPEDEFS 0 - // Use typedefs not classes for wxPoint - // and others, to reduce overhead and avoid - // MS C7 memory bug. Bounds checker - // complains about deallocating - // arrays of wxPoints if wxPoint is a class. - -#if (!defined(WIN32) && !defined(__WIN32__)) || defined(__GNUWIN32__) || defined(__BORLANDC__) -// Can't use OLE drag and drop in Windows 3.1 because we don't know how -// to implement UUIDs -// GnuWin32 doesn't have appropriate headers for e.g. IUnknown. -#undef wxUSE_DRAG_AND_DROP -#define wxUSE_DRAG_AND_DROP 0 -#endif - -// Only WIN32 supports wxStatusBar95 -#if !defined(__WIN32__) && wxUSE_NATIVE_STATUSBAR -#undef wxUSE_NATIVE_STATUSBAR -#define wxUSE_NATIVE_STATUSBAR 0 -#endif - -// Salford C++ doesn't like some of the memory operator definitions -#ifdef __SALFORDC__ -#undef wxUSE_MEMORY_TRACING -#define wxUSE_MEMORY_TRACING 0 - -#undef wxUSE_GLOBAL_MEMORY_OPERATORS -#define wxUSE_GLOBAL_MEMORY_OPERATORS 0 - -#undef wxUSE_DEBUG_NEW_ALWAYS -#define wxUSE_DEBUG_NEW_ALWAYS 0 - -#undef wxUSE_THREADS -#define wxUSE_THREADS 0 - -#undef wxUSE_DBWIN32 -#define wxUSE_DBWIN32 0 - -#undef wxUSE_OWNER_DRAWN -#define wxUSE_OWNER_DRAWN 0 -#endif - -#ifdef __TWIN32__ - -#undef wxUSE_THREADS -#define wxUSE_THREADS 0 - -#undef wxUSE_DBWIN32 -#define wxUSE_DBWIN32 0 - -#undef wxUSE_ODBC -#define wxUSE_ODBC 0 - -#endif - -// Minimal setup e.g. for compiling small utilities -#define MINIMAL_WXWINDOWS_SETUP 0 - -#if MINIMAL_WXWINDOWS_SETUP -#undef wxUSE_POSTSCRIPT -# define wxUSE_POSTSCRIPT 0 -#undef wxUSE_PRINTING_ARCHITECTURE -# define wxUSE_PRINTING_ARCHITECTURE 0 -#undef wxUSE_POSTSCRIPT_ARCHITECTURE_IN_MSW -# define wxUSE_POSTSCRIPT_ARCHITECTURE_IN_MSW 0 -#undef wxUSE_METAFILE -# define wxUSE_METAFILE 0 -#undef wxUSE_FORM -# define wxUSE_FORM 0 -#undef wxUSE_SPLINES -# define wxUSE_SPLINES 0 -#undef wxUSE_SCROLLBAR -# define wxUSE_SCROLLBAR 0 -#undef wxUSE_COMBOBOX -# define wxUSE_COMBOBOX 0 -#undef wxUSE_RADIOBUTTON -# define wxUSE_RADIOBUTTON 0 -#undef wxUSE_XPM_IN_MSW -# define wxUSE_XPM_IN_MSW 0 -#undef wxUSE_WX_RESOURCES -# define wxUSE_WX_RESOURCES 0 -#undef wxUSE_DOC_VIEW_ARCHITECTURE -# define wxUSE_DOC_VIEW_ARCHITECTURE 0 -#undef wxUSE_GNU_WXSTRING -# define wxUSE_GNU_WXSTRING 0 -#undef wxUSE_ODBC -# define wxUSE_ODBC 0 -#undef wxUSE_TIMEDATE -# define wxUSE_TIMEDATE 0 -#undef CTL3D -# define CTL3D 0 -#undef wxUSE_ITSY_BITSY -# define wxUSE_ITSY_BITSY 0 -#undef wxUSE_IMAGE_LOADING_IN_MSW -# define wxUSE_IMAGE_LOADING_IN_MSW 0 -#undef wxUSE_GAUGE -# define wxUSE_GAUGE 0 -#undef wxUSE_RESOURCE_LOADING_IN_MSW -# define wxUSE_RESOURCE_LOADING_IN_MSW 0 -#undef wxUSE_DRAG_AND_DROP -# define wxUSE_DRAG_AND_DROP 0 -#endif - -#endif - // _WX_SETUP_H_ diff --git a/include/wx/msw/size.cur b/include/wx/msw/size.cur deleted file mode 100644 index 01a731c1b21b8c373b8f358e7501fd02d9d9ec4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 326 zcmZvWF%p763`O6Xf=)VHC@sAK9&4@OXdHzjP*O0)`~?Sf%uY7>KgmzvM51lsOwBF9 z1-OO>#XUU5E4GIX9KX9C;4`xT)d2Mf%>=@`Cp%$gRAxi%KFXDgQ|;YXqGqKbEzSS2 zxZ&H@fJ^T_ckWZOZ-_0yJ@doYoPEi;pP`$!>l)?aR8voxFPFufG^8a>Y5&*@<;HQ& diff --git a/include/wx/msw/slider.h b/include/wx/msw/slider.h deleted file mode 100644 index 95cf43b5f6..0000000000 --- a/include/wx/msw/slider.h +++ /dev/null @@ -1,30 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: slider.h -// Purpose: wxSlider header, includes slider class headers as appropriate -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _SLIDER_H_ -#define _SLIDER_H_ - -#ifdef __GNUG__ -#pragma interface "slider.h" -#endif - -#ifdef __WIN95__ -#include "wx/msw/slider95.h" -#define wxSlider wxSlider95 -#define sm_classwxSlider sm_classwxSlider95 -#else -#include "wx/msw/slidrmsw.h" -#define wxSlider wxSliderMSW -#define sm_classwxSlider sm_classwxSliderMSW -#endif - -#endif - // _SLIDER_H_ diff --git a/include/wx/msw/slider95.h b/include/wx/msw/slider95.h deleted file mode 100644 index 612c5f5044..0000000000 --- a/include/wx/msw/slider95.h +++ /dev/null @@ -1,113 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: slider95.h -// Purpose: wxSlider95 class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _SLIDER95_H_ -#define _SLIDER95_H_ - -#ifdef __GNUG__ -#pragma interface "slider95.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxSliderNameStr; - -// Slider -class WXDLLEXPORT wxSlider95: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxSlider95) - -public: - wxSlider95(void); - - inline wxSlider95(wxWindow *parent, wxWindowID id, - int value, int minValue, int maxValue, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxSL_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxSliderNameStr) - { - Create(parent, id, value, minValue, maxValue, pos, size, style, validator, name); - } - - ~wxSlider95(void); - - bool Create(wxWindow *parent, wxWindowID id, - int value, int minValue, int maxValue, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxSL_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxSliderNameStr); - - virtual int GetValue(void) const ; - virtual void SetValue(int); - - void GetSize(int *x, int *y) const ; - wxSize GetSize() const { return wxWindow::GetSize(); } - - void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - void SetSize(const wxRect& rect, int sizeFlags = wxSIZE_AUTO) - { wxWindow::SetSize(rect, sizeFlags); } - void SetSize(const wxSize& size) { wxWindow::SetSize(size); } - - void GetPosition(int *x, int *y) const ; - wxPoint GetPosition() const { return wxWindow::GetPosition(); } - - bool Show(bool show); - - void SetRange(int minValue, int maxValue); - - inline int GetMin(void) const { return m_rangeMin; } - inline int GetMax(void) const { return m_rangeMax; } - - // For trackbars only - void SetTickFreq(int n, int pos); - inline int GetTickFreq(void) const { return m_tickFreq; } - void SetPageSize(int pageSize); - int GetPageSize(void) const ; - void ClearSel(void) ; - void ClearTicks(void) ; - void SetLineSize(int lineSize); - int GetLineSize(void) const ; - int GetSelEnd(void) const ; - int GetSelStart(void) const ; - void SetSelection(int minPos, int maxPos); - void SetThumbLength(int len) ; - int GetThumbLength(void) const ; - void SetTick(int tickPos) ; - - // IMPLEMENTATION - inline WXHWND GetStaticMin() const { return m_staticMin; } - inline WXHWND GetStaticMax() const { return m_staticMax; } - inline WXHWND GetEditValue() const { return m_staticValue; } - virtual bool ContainsHWND(WXHWND hWnd) const; - - void Command(wxCommandEvent& event); - virtual WXHBRUSH OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor, - WXUINT message, WXWPARAM wParam, WXLPARAM lParam); - void MSWOnVScroll(WXWORD wParam, WXWORD pos, WXHWND control); - void MSWOnHScroll(WXWORD wParam, WXWORD pos, WXHWND control); - - protected: - WXHWND m_staticMin; - WXHWND m_staticMax; - WXHWND m_staticValue; - int m_rangeMin; - int m_rangeMax; - int m_pageSize; - int m_lineSize; - int m_tickFreq; -}; - -#endif - // _SLIDER95_H_ diff --git a/include/wx/msw/slidrmsw.h b/include/wx/msw/slidrmsw.h deleted file mode 100644 index 47a8fb2196..0000000000 --- a/include/wx/msw/slidrmsw.h +++ /dev/null @@ -1,113 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: slidrmsw.h -// Purpose: wxSliderMSW class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _SLIDRMSW_H_ -#define _SLIDRMSW_H_ - -#ifdef __GNUG__ -#pragma interface "slidrmsw.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxSliderNameStr; - -// Slider -class WXDLLEXPORT wxSliderMSW: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxSliderMSW) - -public: - wxSliderMSW(void); - - inline wxSliderMSW(wxWindow *parent, wxWindowID id, - int value, int minValue, int maxValue, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxSL_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxSliderNameStr) - { - Create(parent, id, value, minValue, maxValue, pos, size, style, validator, name); - } - - ~wxSliderMSW(void); - - bool Create(wxWindow *parent, wxWindowID id, - int value, int minValue, int maxValue, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxSL_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxSliderNameStr); - - virtual int GetValue(void) const ; - virtual void SetValue(int); - - void GetSize(int *x, int *y) const ; - wxSize GetSize() const { return wxWindow::GetSize(); } - - void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - void SetSize(const wxRect& rect, int sizeFlags = wxSIZE_AUTO) - { wxWindow::SetSize(rect, sizeFlags); } - void SetSize(const wxSize& size) { wxWindow::SetSize(size); } - - void GetPosition(int *x, int *y) const ; - wxPoint GetPosition() const { return wxWindow::GetPosition(); } - - bool Show(bool show); - - void SetRange(int minValue, int maxValue); - - inline int GetMin(void) const { return m_rangeMin; } - inline int GetMax(void) const { return m_rangeMax; } - - // For trackbars only - void SetTickFreq(int n, int pos); - inline int GetTickFreq(void) const { return m_tickFreq; } - void SetPageSize(int pageSize); - int GetPageSize(void) const ; - void ClearSel(void) ; - void ClearTicks(void) ; - void SetLineSize(int lineSize); - int GetLineSize(void) const ; - int GetSelEnd(void) const ; - int GetSelStart(void) const ; - void SetSelection(int minPos, int maxPos); - void SetThumbLength(int len) ; - int GetThumbLength(void) const ; - void SetTick(int tickPos) ; - - // IMPLEMENTATION - inline WXHWND GetStaticMin() const { return m_staticMin; } - inline WXHWND GetStaticMax() const { return m_staticMax; } - inline WXHWND GetEditValue() const { return m_staticValue; } - virtual bool ContainsHWND(WXHWND hWnd) const; - - void Command(wxCommandEvent& event); - virtual WXHBRUSH OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor, - WXUINT message, WXWPARAM wParam, WXLPARAM lParam); - void MSWOnVScroll(WXWORD wParam, WXWORD pos, WXHWND control); - void MSWOnHScroll(WXWORD wParam, WXWORD pos, WXHWND control); - - protected: - WXHWND m_staticMin; - WXHWND m_staticMax; - WXHWND m_staticValue; - int m_rangeMin; - int m_rangeMax; - int m_pageSize; - int m_lineSize; - int m_tickFreq; -}; - -#endif - // _SLIDRMSW_H_ diff --git a/include/wx/msw/spinbutt.h b/include/wx/msw/spinbutt.h deleted file mode 100644 index 4f7d3f7824..0000000000 --- a/include/wx/msw/spinbutt.h +++ /dev/null @@ -1,107 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: spinbutt.h -// Purpose: wxSpinButton class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_SPINBUTT_H_ -#define _WX_SPINBUTT_H_ - -#ifdef __GNUG__ -#pragma interface "spinbutt.h" -#endif - -#include "wx/control.h" -#include "wx/event.h" - -#if defined(__WIN95__) - -/* - The wxSpinButton is like a small scrollbar than is often placed next - to a text control. - - wxSP_HORIZONTAL: horizontal spin button - wxSP_VERTICAL: vertical spin button (the default) - wxSP_ARROW_KEYS: arrow keys increment/decrement value - wxSP_WRAP: value wraps at either end - */ - -class WXDLLEXPORT wxSpinButton: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxSpinButton) - public: - /* - * Public interface - */ - - wxSpinButton(void); - - inline wxSpinButton(wxWindow *parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxSP_VERTICAL, const wxString& name = "wxSpinButton") - { - Create(parent, id, pos, size, style, name); - } - ~wxSpinButton(void); - - bool Create(wxWindow *parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxSP_VERTICAL, const wxString& name = "wxSpinButton"); - - - // Attributes - //////////////////////////////////////////////////////////////////////////// - - int GetValue(void) const ; - void SetValue(int val) ; - void SetRange(int minVal, int maxVal) ; - inline int GetMin(void) const { return m_min; } - inline int GetMax(void) const { return m_max; } - - // Operations - //////////////////////////////////////////////////////////////////////////// - - void Command(wxCommandEvent& event) { ProcessCommand(event); }; - - // IMPLEMENTATION - virtual bool MSWCommand(WXUINT param, WXWORD id); - virtual bool MSWNotify(WXWPARAM wParam, WXLPARAM lParam, WXLPARAM *result); - virtual void MSWOnVScroll(WXWORD wParam, WXWORD pos, WXHWND control); - virtual void MSWOnHScroll(WXWORD wParam, WXWORD pos, WXHWND control); - -protected: - int m_min; - int m_max; -}; - -class WXDLLEXPORT wxSpinEvent: public wxScrollEvent -{ - DECLARE_DYNAMIC_CLASS(wxSpinEvent) - - public: - wxSpinEvent(wxEventType commandType = wxEVT_NULL, int id = 0); -}; - -typedef void (wxEvtHandler::*wxSpinEventFunction)(wxSpinEvent&); - -// Spin events - -#define EVT_SPIN_UP(id, func) { wxEVT_SCROLL_LINEUP, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func } -#define EVT_SPIN_DOWN(id, func) { wxEVT_SCROLL_LINEDOWN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func } - -#define EVT_SPIN(id, func) \ - { wxEVT_SCROLL_TOP, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func },\ - { wxEVT_SCROLL_BOTTOM, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func },\ - { wxEVT_SCROLL_LINEUP, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func },\ - { wxEVT_SCROLL_LINEDOWN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func },\ - { wxEVT_SCROLL_PAGEUP, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func },\ - { wxEVT_SCROLL_PAGEDOWN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func },\ - { wxEVT_SCROLL_THUMBTRACK, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func }, - -#endif - // _WX_WIN95__ -#endif - // _WX_SPINBUTT_H_ diff --git a/include/wx/msw/statbmp.h b/include/wx/msw/statbmp.h deleted file mode 100644 index e4b0253978..0000000000 --- a/include/wx/msw/statbmp.h +++ /dev/null @@ -1,70 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: statbmp.h -// Purpose: wxStaticBitmap class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_STATBMP_H_ -#define _WX_STATBMP_H_ - -#ifdef __GNUG__ -#pragma interface "statbmp.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxStaticBitmapNameStr; - -class WXDLLEXPORT wxStaticBitmap: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxStaticBitmap) - public: - inline wxStaticBitmap(void) { } - - inline wxStaticBitmap(wxWindow *parent, wxWindowID id, - const wxBitmap& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = wxStaticBitmapNameStr) - { - Create(parent, id, label, pos, size, style, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - const wxBitmap& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = wxStaticBitmapNameStr); - - virtual void SetBitmap(const wxBitmap& bitmap); - - virtual void Command(wxCommandEvent& WXUNUSED(event)) {}; - virtual void ProcessCommand(wxCommandEvent& WXUNUSED(event)) {}; - - void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - void SetSize(const wxRect& rect, int sizeFlags = wxSIZE_AUTO) - { wxWindow::SetSize(rect, sizeFlags); } - void SetSize(const wxSize& size) { wxWindow::SetSize(size); } - - inline wxBitmap& GetBitmap(void) const { return (wxBitmap&) m_messageBitmap; } - - // overriden base class virtuals - virtual bool AcceptsFocus() const { return FALSE; } - - // Implementation - virtual bool MSWOnDraw(WXDRAWITEMSTRUCT *item); - virtual long MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam); - protected: - wxBitmap m_messageBitmap; - -}; - -#endif - // _WX_STATBMP_H_ diff --git a/include/wx/msw/statbox.h b/include/wx/msw/statbox.h deleted file mode 100644 index 3f15d25e37..0000000000 --- a/include/wx/msw/statbox.h +++ /dev/null @@ -1,66 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: statbox.h -// Purpose: wxStaticBox class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_STATBOX_H_ -#define _WX_STATBOX_H_ - -#ifdef __GNUG__ -#pragma interface "statbox.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxStaticBoxNameStr; - -// Group box -class WXDLLEXPORT wxStaticBox: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxStaticBox) - - public: - inline wxStaticBox(void) {} - inline wxStaticBox(wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = wxStaticBoxNameStr) - { - Create(parent, id, label, pos, size, style, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = wxStaticBoxNameStr); - - virtual void Command(wxCommandEvent& WXUNUSED(event)) {}; - virtual void ProcessCommand(wxCommandEvent& WXUNUSED(event)) {}; - - void OnEraseBackground(wxEraseEvent& event); - - virtual long MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam); - - void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - void SetSize(const wxRect& rect, int sizeFlags = wxSIZE_AUTO) - { wxWindow::SetSize(rect, sizeFlags); } - void SetSize(const wxSize& size) { wxWindow::SetSize(size); } - void SetLabel(const wxString& label); - virtual WXHBRUSH OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor, - WXUINT message, WXWPARAM wParam, WXLPARAM lParam); - -DECLARE_EVENT_TABLE() -}; - -#endif - // _WX_STATBOX_H_ diff --git a/include/wx/msw/statbr95.h b/include/wx/msw/statbr95.h deleted file mode 100644 index ab844a5910..0000000000 --- a/include/wx/msw/statbr95.h +++ /dev/null @@ -1,55 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: msw/statbr95.h -// Purpose: native implementation of wxStatusBar -// Author: Vadim Zeitlin -// Modified by: -// Created: 04.04.98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -#ifndef _STATBR95_H -#define _STATBR95_H - -#ifdef __GNUG__ -#pragma interface "statbr95.h" -#endif - -#if wxUSE_NATIVE_STATUSBAR - -class WXDLLEXPORT wxStatusBar95 : public wxStatusBar -{ - DECLARE_DYNAMIC_CLASS(wxStatusBar95); - -public: - // ctors - wxStatusBar95(); - wxStatusBar95(wxWindow *parent, wxWindowID id = -1, long style = wxST_SIZEGRIP); - - // create status line - bool Create(wxWindow *parent, wxWindowID id = -1, long style = wxST_SIZEGRIP); - - // a status line can have several (<256) fields numbered from 0 - virtual void SetFieldsCount(int number = 1, const int widths[] = NULL); - - // each field of status line has it's own text - virtual void SetStatusText(const wxString& text, int number = 0); - virtual wxString GetStatusText(int number = 0) const; - - // set status line fields' widths - virtual void SetStatusWidths(int n, const int widths_field[]); - - // we're going to process WM_SIZE (of the parent window) - void OnSize(wxSizeEvent& event); - - DECLARE_EVENT_TABLE() - -protected: - void CopyFieldsWidth(const int widths[]); - void SetFieldsWidth(); -}; - -#endif // wxUSE_NATIVE_STATUSBAR - -#endif //_STATBR95_H \ No newline at end of file diff --git a/include/wx/msw/stattext.h b/include/wx/msw/stattext.h deleted file mode 100644 index 432987cf5e..0000000000 --- a/include/wx/msw/stattext.h +++ /dev/null @@ -1,67 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: stattext.h -// Purpose: wxStaticText class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_STATTEXT_H_ -#define _WX_STATTEXT_H_ - -#ifdef __GNUG__ -#pragma interface "stattext.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxStaticTextNameStr; - -class WXDLLEXPORT wxStaticText: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxStaticText) - public: - inline wxStaticText(void) { } - - inline wxStaticText(wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = wxStaticTextNameStr) - { - Create(parent, id, label, pos, size, style, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = wxStaticTextNameStr); - - // accessors - void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - void SetSize(const wxRect& rect, int sizeFlags = wxSIZE_AUTO) - { wxWindow::SetSize(rect, sizeFlags); } - void SetSize(const wxSize& size) { wxWindow::SetSize(size); } - void SetLabel(const wxString&); - - // operations - virtual void Command(wxCommandEvent& WXUNUSED(event)) {}; - virtual void ProcessCommand(wxCommandEvent& WXUNUSED(event)) {}; - - // overriden base class virtuals - virtual bool AcceptsFocus() const { return FALSE; } - - // callbacks - virtual WXHBRUSH OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor, - WXUINT message, WXWPARAM wParam, WXLPARAM lParam); - virtual long MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam); -}; - -#endif - // _WX_STATTEXT_H_ diff --git a/include/wx/msw/std.ico b/include/wx/msw/std.ico deleted file mode 100644 index 00c8d8b8a4c243143ecca37973cbc13ea97484a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmchUJ#K_B5JqRCNGRTwoGLYCj*%nLZOak1r2%SJ^e*5AzCy~-Slqz-2D7YIiMGrK zV|e~N<3EuDPg%Z;>gPq|gYPF%5?{nYUTG2D-x@`DWgPQ|mS35sN$R@BNb4&p=^w$P zT{JQ4`{=WNbJI3$%>LkgoExMp-Va9~6>m)6oweSOId1unJjf&8$M5yXpPQKHXFjbT z<4kPpVSc#Xnf0OO#$+g?eSd8KsW=nWVq8{AHnS-AlC0H^#S{iEDoE^N7t>eRXJb=1 z2|dO!pr~95uvhLYY!^a0O)I+s+lAE0#%jCN!Gn$`8^7!H#@76^&e^5#c5!R{ijrDC i^O{{4>dU3a*WwHatd*Nyj8M@zy>r#Rzo&=s59SqGV?PG~ diff --git a/include/wx/msw/tabctrl.h b/include/wx/msw/tabctrl.h deleted file mode 100644 index cd975821e2..0000000000 --- a/include/wx/msw/tabctrl.h +++ /dev/null @@ -1,154 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: tabctrl.h -// Purpose: wxTabCtrl class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_TABCTRL_H_ -#define _WX_TABCTRL_H_ - -#ifdef __GNUG__ -#pragma interface "tabctrl.h" -#endif - -class wxImageList; - -// WXDLLEXPORT_DATA(extern const char*) wxToolBarNameStr; - -/* - * Flags returned by HitTest - */ - -#define wxTAB_HITTEST_NOWHERE 1 -#define wxTAB_HITTEST_ONICON 2 -#define wxTAB_HITTEST_ONLABEL 4 -#define wxTAB_HITTEST_ONITEM 6 - -class WXDLLEXPORT wxTabCtrl: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxTabCtrl) - public: - /* - * Public interface - */ - - wxTabCtrl(); - - inline wxTabCtrl(wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = 0, const wxString& name = "tabCtrl") - { - Create(parent, id, pos, size, style, name); - } - ~wxTabCtrl(); - -// Accessors - - // Get the selection - int GetSelection() const; - - // Get the tab with the current keyboard focus - int GetCurFocus() const; - - // Get the associated image list - wxImageList* GetImageList() const; - - // Get the number of items - int GetItemCount() const; - - // Get the rect corresponding to the tab - bool GetItemRect(int item, wxRect& rect) const; - - // Get the number of rows - int GetRowCount() const; - - // Get the item text - wxString GetItemText(int item) const ; - - // Get the item image - int GetItemImage(int item) const; - - // Get the item data - void* GetItemData(int item) const; - - // Set the selection - int SetSelection(int item); - - // Set the image list - void SetImageList(wxImageList* imageList); - - // Set the text for an item - bool SetItemText(int item, const wxString& text); - - // Set the image for an item - bool SetItemImage(int item, int image); - - // Set the data for an item - bool SetItemData(int item, void* data); - - // Set the size for a fixed-width tab control - void SetItemSize(const wxSize& size); - - // Set the padding between tabs - void SetPadding(const wxSize& padding); - -// Operations - - bool Create(wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = 0, const wxString& name = "tabCtrl"); - - // Delete all items - bool DeleteAllItems(); - - // Delete an item - bool DeleteItem(int item); - - // Hit test - int HitTest(const wxPoint& pt, long& flags); - - // Insert an item - bool InsertItem(int item, const wxString& text, int imageId = -1, void* data = NULL); - -// Implementation - - // Call default behaviour - void OnPaint(wxPaintEvent& event) { Default() ; } - void OnSize(wxSizeEvent& event) { Default() ; } - void OnMouseEvent(wxMouseEvent& event) { Default() ; } - void OnKillFocus(wxFocusEvent& event) { Default() ; } - - void Command(wxCommandEvent& event); - - virtual bool MSWCommand(WXUINT param, WXWORD id); - virtual bool MSWNotify(WXWPARAM wParam, WXLPARAM lParam, WXLPARAM *result); - - // Responds to colour changes - void OnSysColourChanged(wxSysColourChangedEvent& event); - -protected: - wxImageList* m_imageList; - -DECLARE_EVENT_TABLE() -}; - -class WXDLLEXPORT wxTabEvent: public wxCommandEvent -{ - DECLARE_DYNAMIC_CLASS(wxTabEvent) - - public: - wxTabEvent(wxEventType commandType = wxEVT_NULL, int id = 0); -}; - -typedef void (wxEvtHandler::*wxTabEventFunction)(wxTabEvent&); - -#define EVT_TAB_SEL_CHANGED(id, fn) { wxEVT_COMMAND_TAB_SEL_CHANGED, \ - id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTabEventFunction) & fn, NULL }, -#define EVT_TAB_SEL_CHANGING(id, fn) { wxEVT_COMMAND_TAB_SEL_CHANGING, \ - id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTabEventFunction) & fn, NULL }, - -#endif - // _WX_TABCTRL_H_ diff --git a/include/wx/msw/taskbar.h b/include/wx/msw/taskbar.h deleted file mode 100644 index 966f030ee8..0000000000 --- a/include/wx/msw/taskbar.h +++ /dev/null @@ -1,104 +0,0 @@ -///////////////////////////////////////////////////////////////////////// -// File: taskbar.h -// Purpose: Defines wxTaskBarIcon class for manipulating icons on the -// Windows task bar. -// Author: Julian Smart -// Modified by: -// Created: 24/3/98 -// RCS-ID: $Id$ -// Copyright: (c) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////// - -#ifndef _TASKBAR_H_ -#define _TASKBAR_H_ - -#ifdef __GNUG__ -#pragma interface "taskbar.h" -#endif - -#include -#include -#include - -class WXDLLEXPORT wxTaskBarIcon: public wxEvtHandler { - DECLARE_DYNAMIC_CLASS(wxTaskBarIcon) -public: - wxTaskBarIcon(void); - virtual ~wxTaskBarIcon(void); - -// Accessors - inline WXHWND GetHWND() const { return m_hWnd; } - inline bool IsOK() const { return (m_hWnd != 0) ; } - inline bool IsIconInstalled() const { return m_iconAdded; } - -// Operations - bool SetIcon(const wxIcon& icon, const wxString& tooltip = ""); - bool RemoveIcon(void); - bool PopupMenu(wxMenu *menu); //, int x, int y); - -// Overridables - virtual void OnMouseMove(wxEvent&); - virtual void OnLButtonDown(wxEvent&); - virtual void OnLButtonUp(wxEvent&); - virtual void OnRButtonDown(wxEvent&); - virtual void OnRButtonUp(wxEvent&); - virtual void OnLButtonDClick(wxEvent&); - virtual void OnRButtonDClick(wxEvent&); - -// Implementation - static wxTaskBarIcon* FindObjectForHWND(WXHWND hWnd); - static void AddObject(wxTaskBarIcon* obj); - static void RemoveObject(wxTaskBarIcon* obj); - static bool RegisterWindowClass(); - static WXHWND CreateTaskBarWindow(); - long WindowProc( WXHWND hWnd, unsigned int msg, unsigned int wParam, long lParam ); - -// Data members -protected: - WXHWND m_hWnd; - bool m_iconAdded; - static wxList sm_taskBarIcons; - static bool sm_registeredClass; - static unsigned int sm_taskbarMsg; - - // non-virtual default event handlers to forward events to the virtuals - void _OnMouseMove(wxEvent&); - void _OnLButtonDown(wxEvent&); - void _OnLButtonUp(wxEvent&); - void _OnRButtonDown(wxEvent&); - void _OnRButtonUp(wxEvent&); - void _OnLButtonDClick(wxEvent&); - void _OnRButtonDClick(wxEvent&); - - - DECLARE_EVENT_TABLE() -}; - - - -const wxEventType wxEVT_TASKBAR_MOVE = wxEVT_FIRST + 1550; -const wxEventType wxEVT_TASKBAR_LEFT_DOWN = wxEVT_FIRST + 1551; -const wxEventType wxEVT_TASKBAR_LEFT_UP = wxEVT_FIRST + 1552; -const wxEventType wxEVT_TASKBAR_RIGHT_DOWN = wxEVT_FIRST + 1553; -const wxEventType wxEVT_TASKBAR_RIGHT_UP = wxEVT_FIRST + 1554; -const wxEventType wxEVT_TASKBAR_LEFT_DCLICK = wxEVT_FIRST + 1555; -const wxEventType wxEVT_TASKBAR_RIGHT_DCLICK = wxEVT_FIRST + 1556; - - -#define EVT_TASKBAR_MOVE(fn) { wxEVT_TASKBAR_MOVE, -1, -1, (wxObjectEventFunction) (wxEventFunction) &fn, NULL }, -#define EVT_TASKBAR_LEFT_DOWN(fn) { wxEVT_TASKBAR_LEFT_DOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) &fn, NULL }, -#define EVT_TASKBAR_LEFT_UP(fn) { wxEVT_TASKBAR_LEFT_UP, -1, -1, (wxObjectEventFunction) (wxEventFunction) &fn, NULL }, -#define EVT_TASKBAR_RIGHT_DOWN(fn) { wxEVT_TASKBAR_RIGHT_DOWN, -1, -1, (wxObjectEventFunction) (wxEventFunction) &fn, NULL }, -#define EVT_TASKBAR_RIGHT_UP(fn) { wxEVT_TASKBAR_RIGHT_UP, -1, -1, (wxObjectEventFunction) (wxEventFunction) &fn, NULL }, -#define EVT_TASKBAR_LEFT_DCLICK(fn) { wxEVT_TASKBAR_LEFT_DCLICK, -1, -1, (wxObjectEventFunction) (wxEventFunction) &fn, NULL }, -#define EVT_TASKBAR_RIGHT_DCLICK(fn) { wxEVT_TASKBAR_RIGHT_DCLICK, -1, -1, (wxObjectEventFunction) (wxEventFunction) &fn, NULL }, - - -#endif - // _TASKBAR_H_ - - - - - diff --git a/include/wx/msw/tbar95.h b/include/wx/msw/tbar95.h deleted file mode 100644 index 78ef1e5ff8..0000000000 --- a/include/wx/msw/tbar95.h +++ /dev/null @@ -1,100 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: tbar95.h -// Purpose: wxToolBar95 (Windows 95 toolbar) class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_TBAR95_H_ -#define _WX_TBAR95_H_ - -#ifdef __GNUG__ -#pragma interface "tbar95.h" -#endif - -#if wxUSE_BUTTONBAR && wxUSE_TOOLBAR -#include "wx/tbarbase.h" - -WXDLLEXPORT_DATA(extern const char*) wxToolBarNameStr; - -class WXDLLEXPORT wxToolBar95: public wxToolBarBase -{ - DECLARE_DYNAMIC_CLASS(wxToolBar95) - public: - /* - * Public interface - */ - - wxToolBar95(void); - - inline wxToolBar95(wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxNO_BORDER|wxTB_HORIZONTAL, - const wxString& name = wxToolBarNameStr) - { - Create(parent, id, pos, size, style, name); - } - ~wxToolBar95(void); - - bool Create(wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxNO_BORDER|wxTB_HORIZONTAL, - const wxString& name = wxToolBarNameStr); - - // Call default behaviour - void OnPaint(wxPaintEvent& WXUNUSED(event)) { Default() ; } - void OnSize(wxSizeEvent& WXUNUSED(event)) { Default() ; } - void OnKillFocus(wxFocusEvent& WXUNUSED(event)) { Default() ; } - void OnMouseEvent(wxMouseEvent& event); - - // Handle wxToolBar95 events - - // If pushedBitmap is NULL, a reversed version of bitmap is - // created and used as the pushed/toggled image. - // If toggle is TRUE, the button toggles between the two states. - wxToolBarTool *AddTool(int toolIndex, const wxBitmap& bitmap, const wxBitmap& pushedBitmap = wxNullBitmap, - bool toggle = FALSE, long xPos = -1, long yPos = -1, wxObject *clientData = NULL, - const wxString& helpString1 = "", const wxString& helpString2 = ""); - - // Set default bitmap size - void SetToolBitmapSize(const wxSize& size); - void EnableTool(int toolIndex, bool enable); // additional drawing on enabling - void ToggleTool(int toolIndex, bool toggle); // toggle is TRUE if toggled on - void ClearTools(void); - - // The button size is bigger than the bitmap size - wxSize GetToolSize(void) const; - - wxSize GetMaxSize(void) const; - - void GetSize(int *w, int *y) const; - wxSize GetSize() const { return wxWindow::GetSize(); } - - virtual bool GetToolState(int toolIndex) const; - - // Add all the buttons: required for Win95. - virtual bool CreateTools(void); - virtual void SetRows(int nRows); - virtual void Layout(void) {} - - // The post-tool-addition call - bool Realize() { return CreateTools(); }; - - // IMPLEMENTATION - virtual bool MSWCommand(WXUINT param, WXWORD id); - virtual bool MSWNotify(WXWPARAM wParam, WXLPARAM lParam, WXLPARAM *result); - - // Responds to colour changes - void OnSysColourChanged(wxSysColourChangedEvent& event); - -protected: - WXHBITMAP m_hBitmap; - -DECLARE_EVENT_TABLE() -}; - -#endif // wxUSE_TOOL/BUTTONBAR -#endif - // _WX_TBAR95_H_ diff --git a/include/wx/msw/tbarmsw.h b/include/wx/msw/tbarmsw.h deleted file mode 100644 index 5ce62ea20d..0000000000 --- a/include/wx/msw/tbarmsw.h +++ /dev/null @@ -1,123 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: tbarmsw.h -// Purpose: wxToolBarMSW class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_TBARMSW_H_ -#define _WX_TBARMSW_H_ - -#ifdef __GNUG__ -#pragma interface "tbarmsw.h" -#endif - -#if wxUSE_BUTTONBAR && wxUSE_TOOLBAR -#include "wx/tbarbase.h" - -WXDLLEXPORT_DATA(extern const char*) wxButtonBarNameStr; - -class WXDLLEXPORT wxMemoryDC; - -// Non-Win95 (WIN32, WIN16, UNIX) version - -class WXDLLEXPORT wxToolBarMSW: public wxToolBarBase -{ - DECLARE_DYNAMIC_CLASS(wxToolBarMSW) -public: - /* - * Public interface - */ - wxToolBarMSW(void); - - inline wxToolBarMSW(wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxNO_BORDER|wxTB_HORIZONTAL, const wxString& name = wxButtonBarNameStr) - { - Create(parent, id, pos, size, style, name); - } - bool Create(wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxNO_BORDER|wxTB_HORIZONTAL, const wxString& name = wxButtonBarNameStr); - - ~wxToolBarMSW(void); - - // Handle wxWindows events - void OnPaint(wxPaintEvent& event); - void OnSize(wxSizeEvent& event); - void OnMouseEvent(wxMouseEvent& event); - - // If pushedBitmap is NULL, a reversed version of bitmap is - // created and used as the pushed/toggled image. - // If toggle is TRUE, the button toggles between the two states. - wxToolBarTool *AddTool(int toolIndex, const wxBitmap& bitmap, const wxBitmap& pushedBitmap = wxNullBitmap, - bool toggle = FALSE, long xPos = -1, long yPos = -1, wxObject *clientData = NULL, - const wxString& helpString1 = wxEmptyString, const wxString& helpString2 = wxEmptyString); - - void DrawTool(wxDC& dc, wxMemoryDC& memDc, wxToolBarTool *tool); - - // Set default bitmap size - virtual void SetToolBitmapSize(const wxSize& size); - void EnableTool(int toolIndex, bool enable); // additional drawing on enabling - - // The button size is bigger than the bitmap size - wxSize GetToolSize(void) const; - - void Layout(void); - - // The post-tool-addition call - bool Realize() { Layout(); return TRUE; }; - - protected: - void DrawTool(wxDC& dc, wxToolBarTool *tool, int state); - - void GetSysColors(void); - bool InitGlobalObjects(void); - void FreeGlobalObjects(void); - void PatB(WXHDC hdc,int x,int y,int dx,int dy, long rgb); - void CreateMask(WXHDC hDC, int xoffset, int yoffset, int dx, int dy); - void DrawBlankButton(WXHDC hdc, int x, int y, int dx, int dy, int state); - void DrawButton(WXHDC hdc, int x, int y, int dx, int dy, wxToolBarTool *tool, int state); - WXHBITMAP CreateDitherBitmap(); - bool CreateDitherBrush(void); - bool FreeDitherBrush(void); - WXHBITMAP CreateMappedBitmap(WXHINSTANCE hInstance, void *lpBitmapInfo); - WXHBITMAP CreateMappedBitmap(WXHINSTANCE hInstance, WXHBITMAP hBitmap); - -protected: - int m_currentRowsOrColumns; - long m_lastX, m_lastY; - - WXHBRUSH m_hbrDither; - WXDWORD m_rgbFace; - WXDWORD m_rgbShadow; - WXDWORD m_rgbHilight; - WXDWORD m_rgbFrame; - -// -// m_hdcMono is the DC that holds a mono bitmap, m_hbmMono -// that is used to create highlights -// of button faces. -// m_hbmDefault hold the default bitmap if there is one. -// - WXHDC m_hdcMono; - WXHBITMAP m_hbmMono; - WXHBITMAP m_hbmDefault; - -DECLARE_EVENT_TABLE() -}; - -// -// States (not all of them currently used) -// -#define wxTBSTATE_CHECKED 0x01 // radio button is checked -#define wxTBSTATE_PRESSED 0x02 // button is being depressed (any style) -#define wxTBSTATE_ENABLED 0x04 // button is enabled -#define wxTBSTATE_HIDDEN 0x08 // button is hidden -#define wxTBSTATE_INDETERMINATE 0x10 // button is indeterminate - -#endif // wxUSE_TOOL/BUTTONBAR -#endif - // _WX_TBARMSW_H_ diff --git a/include/wx/msw/textctrl.h b/include/wx/msw/textctrl.h deleted file mode 100644 index 3764644be4..0000000000 --- a/include/wx/msw/textctrl.h +++ /dev/null @@ -1,159 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: textctrl.h -// Purpose: wxTextCtrl class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_TEXTCTRL_H_ -#define _WX_TEXTCTRL_H_ - -#ifdef __GNUG__ -#pragma interface "textctrl.h" -#endif - -#include "wx/control.h" - -#if wxUSE_IOSTREAMH -#include -#else -#include -#endif - -WXDLLEXPORT_DATA(extern const char*) wxTextCtrlNameStr; -WXDLLEXPORT_DATA(extern const char*) wxEmptyString; - -// Single-line text item -class WXDLLEXPORT wxTextCtrl: public wxControl - -// 16-bit Borland 4.0 doesn't seem to allow multiple inheritance with wxWindow and streambuf: -// it complains about deriving a huge class from the huge class streambuf. !! -// Also, can't use streambuf if making or using a DLL :-( - -#if (defined(__BORLANDC__)) || defined(__MWERKS__) || defined(_WINDLL) || defined(WXUSINGDLL) || defined(WXMAKINGDLL) -#define NO_TEXT_WINDOW_STREAM -#endif - -#ifndef NO_TEXT_WINDOW_STREAM -, public streambuf -#endif - -{ - DECLARE_DYNAMIC_CLASS(wxTextCtrl) - -public: - // creation - // -------- - wxTextCtrl(); - inline wxTextCtrl(wxWindow *parent, wxWindowID id, - const wxString& value = wxEmptyString, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxTextCtrlNameStr) -#ifndef NO_TEXT_WINDOW_STREAM - :streambuf() -#endif - { - Create(parent, id, value, pos, size, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - const wxString& value = wxEmptyString, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = wxTE_PROCESS_TAB, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxTextCtrlNameStr); - - // accessors - // --------- - virtual wxString GetValue() const ; - virtual void SetValue(const wxString& value); - - virtual int GetLineLength(long lineNo) const; - virtual wxString GetLineText(long lineNo) const; - virtual int GetNumberOfLines() const; - - // operations - // ---------- - virtual void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - void SetSize(const wxRect& rect, int sizeFlags = wxSIZE_AUTO) - { wxWindow::SetSize(rect, sizeFlags); } - void SetSize(const wxSize& size) { wxWindow::SetSize(size); } - - // Clipboard operations - virtual void Copy(); - virtual void Cut(); - virtual void Paste(); - - virtual void SetInsertionPoint(long pos); - virtual void SetInsertionPointEnd(); - virtual long GetInsertionPoint() const ; - virtual long GetLastPosition() const ; - virtual void Replace(long from, long to, const wxString& value); - virtual void Remove(long from, long to); - virtual void SetSelection(long from, long to); - virtual void SetEditable(bool editable); - - // streambuf implementation -#ifndef NO_TEXT_WINDOW_STREAM - int overflow(int i); - int sync(); - int underflow(); -#endif - - wxTextCtrl& operator<<(const wxString& s); - wxTextCtrl& operator<<(int i); - wxTextCtrl& operator<<(long i); - wxTextCtrl& operator<<(float f); - wxTextCtrl& operator<<(double d); - wxTextCtrl& operator<<(const char c); - - virtual bool LoadFile(const wxString& file); - virtual bool SaveFile(const wxString& file); - virtual void WriteText(const wxString& text); - virtual void DiscardEdits(); - virtual bool IsModified() const; - -#if WXWIN_COMPATIBILITY - inline bool Modified() const { return IsModified(); } -#endif - - virtual long XYToPosition(long x, long y) const ; - virtual void PositionToXY(long pos, long *x, long *y) const ; - virtual void ShowPosition(long pos); - virtual void Clear(); - - // callbacks - // --------- - void OnDropFiles(wxDropFilesEvent& event); - void OnChar(wxKeyEvent& event); // Process 'enter' if required - void OnEraseBackground(wxEraseEvent& event); - - // Implementation - // -------------- - virtual void Command(wxCommandEvent& event); - virtual bool MSWCommand(WXUINT param, WXWORD id); - inline bool IsRich() const { return m_isRich; } - inline void SetRichEdit(bool isRich) { m_isRich = isRich; } - virtual WXHBRUSH OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor, - WXUINT message, WXWPARAM wParam, - WXLPARAM lParam); - - virtual void AdoptAttributesFromHWND(); - virtual void SetupColours(); - virtual long MSWGetDlgCode(); - -protected: - bool m_isRich; // Are we using rich text edit to implement this? - wxString m_fileName; - - DECLARE_EVENT_TABLE() -}; - -#endif - // _WX_TEXTCTRL_H_ diff --git a/include/wx/msw/timer.h b/include/wx/msw/timer.h deleted file mode 100644 index 8ce875f657..0000000000 --- a/include/wx/msw/timer.h +++ /dev/null @@ -1,62 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: timer.h -// Purpose: wxTimer class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_TIMER_H_ -#define _WX_TIMER_H_ - -#ifdef __GNUG__ -#pragma interface "timer.h" -#endif - -#include "wx/object.h" - -class WXDLLEXPORT wxTimer : public wxObject -{ -friend void wxProcessTimer(wxTimer& timer); - -public: - wxTimer(); - ~wxTimer(); - - virtual bool Start(int milliseconds = -1, - bool one_shot = FALSE); // Start timer - virtual void Stop(); // Stop timer - - virtual void Notify() = 0; // Override this member - - // Returns the current interval time (0 if stop) - int Interval() const { return milli; }; - bool OneShot() const { return oneShot; } - -protected: - bool oneShot ; - int milli ; - int lastMilli ; - - long id; - -private: - DECLARE_ABSTRACT_CLASS(wxTimer) -}; - -// Timer functions (milliseconds) -void WXDLLEXPORT wxStartTimer(); -// Gets time since last wxStartTimer or wxGetElapsedTime -long WXDLLEXPORT wxGetElapsedTime(bool resetTimer = TRUE); - -// EXPERIMENTAL: comment this out if it doesn't compile. -bool WXDLLEXPORT wxGetLocalTime(long *timeZone, int *dstObserved); - -// Get number of seconds since 00:00:00 GMT, Jan 1st 1970. -long WXDLLEXPORT wxGetCurrentTime(); - -#endif - // _WX_TIMERH_ diff --git a/include/wx/msw/treectrl.h b/include/wx/msw/treectrl.h deleted file mode 100644 index 3864830c01..0000000000 --- a/include/wx/msw/treectrl.h +++ /dev/null @@ -1,556 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: treectrl.h -// Purpose: wxTreeCtrl class -// Author: Julian Smart -// Modified by: Vadim Zeitlin to be less MSW-specific on 10/10/98 -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_TREECTRL_H_ -#define _WX_TREECTRL_H_ - -// ---------------------------------------------------------------------------- -// headers -// ---------------------------------------------------------------------------- -#ifdef __GNUG__ - #pragma interface "treectrl.h" -#endif - -#include "wx/control.h" -#include "wx/event.h" -#include "wx/textctrl.h" - -#ifdef __GNUWIN32__ -# ifdef GetFirstChild -# undef GetFirstChild -# endif - -# ifdef GetNextSibling -# undef GetNextSibling -# endif -#endif - -// the type for "untyped" data -typedef long wxDataType; - -// fwd decl -class WXDLLEXPORT wxImageList; -struct WXDLLEXPORT wxTreeViewItem; - -// a callback function used for sorting tree items, it should return -1 if the -// first item precedes the second, +1 if the second precedes the first or 0 if -// they're equivalent -class wxTreeItemData; - -// ---------------------------------------------------------------------------- -// constants -// ---------------------------------------------------------------------------- - -// values for the `flags' parameter of wxTreeCtrl::HitTest() which determine -// where exactly the specified point is situated: - // above the client area. -static const int wxTREE_HITTEST_ABOVE = 0x0001; - // below the client area. -static const int wxTREE_HITTEST_BELOW = 0x0002; - // in the client area but below the last item. -static const int wxTREE_HITTEST_NOWHERE = 0x0004; - // on the button associated with an item. -static const int wxTREE_HITTEST_ONITEMBUTTON = 0x0010; - // on the bitmap associated with an item. -static const int wxTREE_HITTEST_ONITEMICON = 0x0020; - // in the indentation associated with an item. -static const int wxTREE_HITTEST_ONITEMINDENT = 0x0040; - // on the label (string) associated with an item. -static const int wxTREE_HITTEST_ONITEMLABEL = 0x0080; - // in the area to the right of an item. -static const int wxTREE_HITTEST_ONITEMRIGHT = 0x0100; - // on the state icon for a tree view item that is in a user-defined state. -static const int wxTREE_HITTEST_ONITEMSTATEICON = 0x0200; - // to the right of the client area. -static const int wxTREE_HITTEST_TOLEFT = 0x0400; - // to the left of the client area. -static const int wxTREE_HITTEST_TORIGHT = 0x0800; - // anywhere on the item -static const int wxTREE_HITTEST_ONITEM = wxTREE_HITTEST_ONITEMICON | - wxTREE_HITTEST_ONITEMLABEL | - wxTREE_HITTEST_ONITEMSTATEICON; - -// NB: all the following flags are for compatbility only and will be removed in the -// next versions - -// flags for deprecated `Expand(int action)' -enum -{ - wxTREE_EXPAND_EXPAND, - wxTREE_EXPAND_COLLAPSE, - wxTREE_EXPAND_COLLAPSE_RESET, - wxTREE_EXPAND_TOGGLE -}; - -// flags for deprecated InsertItem() variant -#define wxTREE_INSERT_FIRST 0xFFFF0001 -#define wxTREE_INSERT_LAST 0xFFFF0002 - -// ---------------------------------------------------------------------------- -// wxTreeItemId identifies an element of the tree. In this implementation, it's -// just a trivial wrapper around Win32 HTREEITEM. It's opaque for the -// application. -// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxTreeItemId -{ -public: - // ctors - // 0 is invalid value for HTREEITEM - wxTreeItemId() { m_itemId = 0; } - - // default copy ctor/assignment operator are ok for us - - // accessors - // is this a valid tree item? - bool IsOk() const { return m_itemId != 0; } - - // conversion to/from either real (system-dependent) tree item id or - // to "long" which used to be the type for tree item ids in previous - // versions of wxWindows - - // for wxTreeCtrl usage only - wxTreeItemId(WXHTREEITEM itemId) { m_itemId = (long)itemId; } - operator WXHTREEITEM() const { return (WXHTREEITEM)m_itemId; } - - void operator=(WXHTREEITEM item) { m_itemId = (long) item; } - -protected: - long m_itemId; -}; - -// ---------------------------------------------------------------------------- -// wxTreeItemData is some (arbitrary) user class associated with some item. The -// main advantage of having this class (compared to old untyped interface) is -// that wxTreeItemData's are destroyed automatically by the tree and, as this -// class has virtual dtor, it means that the memory will be automatically -// freed. OTOH, we don't just use wxObject instead of wxTreeItemData because -// the size of this class is critical: in any real application, each tree leaf -// will have wxTreeItemData associated with it and number of leaves may be -// quite big. -// -// Because the objects of this class are deleted by the tree, they should -// always be allocated on the heap! -// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxTreeItemData : private wxTreeItemId -{ -public: - // default ctor/copy ctor/assignment operator are ok - - // dtor is virtual and all the items are deleted by the tree control when - // it's deleted, so you normally don't have to care about freeing memory - // allocated in your wxTreeItemData-derived class - virtual ~wxTreeItemData() { } - - // accessors: set/get the item associated with this node - void SetId(const wxTreeItemId& id) { m_itemId = id; } -#ifdef __WATCOMC__ - const wxTreeItemId GetId() const { return m_itemId; } -#else - const wxTreeItemId& GetId() const { return (wxTreeItemId&) m_itemId; } -#endif -}; - -// ---------------------------------------------------------------------------- -// wxTreeCtrl -// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxTreeCtrl : public wxControl -{ -public: - // creation - // -------- - wxTreeCtrl() { Init(); } - - wxTreeCtrl(wxWindow *parent, wxWindowID id = -1, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxTR_HAS_BUTTONS | wxTR_LINES_AT_ROOT, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = "wxTreeCtrl") - { - Create(parent, id, pos, size, style, validator, name); - } - - virtual ~wxTreeCtrl(); - - bool Create(wxWindow *parent, wxWindowID id = -1, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxTR_HAS_BUTTONS | wxTR_LINES_AT_ROOT, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = "wxTreeCtrl"); - - // accessors - // --------- - - // get the total number of items in the control - size_t GetCount() const; - - // indent is the number of pixels the children are indented relative to - // the parents position. SetIndent() also redraws the control - // immediately. - unsigned int GetIndent() const; - void SetIndent(unsigned int indent); - - // image list: these functions allow to associate an image list with - // the control and retrieve it. Note that the control does _not_ delete - // the associated image list when it's deleted in order to allow image - // lists to be shared between different controls. - // - // The normal image list is for the icons which correspond to the - // normal tree item state (whether it is selected or not). - // Additionally, the application might choose to show a state icon - // which corresponds to an app-defined item state (for example, - // checked/unchecked) which are taken from the state image list. - wxImageList *GetImageList() const; - wxImageList *GetStateImageList() const; - - void SetImageList(wxImageList *imageList); - void SetStateImageList(wxImageList *imageList); - - // Functions to work with tree ctrl items. Unfortunately, they can _not_ be - // member functions of wxTreeItem because they must know the tree the item - // belongs to for Windows implementation and storing the pointer to - // wxTreeCtrl in each wxTreeItem is just too much waste. - - // accessors - // --------- - - // retrieve items label - wxString GetItemText(const wxTreeItemId& item) const; - // get the normal item image - int GetItemImage(const wxTreeItemId& item) const; - // get the selected item image - int GetItemSelectedImage(const wxTreeItemId& item) const; - // get the data associated with the item - wxTreeItemData *GetItemData(const wxTreeItemId& item) const; - - // modifiers - // --------- - - // set items label - void SetItemText(const wxTreeItemId& item, const wxString& text); - // set the normal item image - void SetItemImage(const wxTreeItemId& item, int image); - // set the selected item image - void SetItemSelectedImage(const wxTreeItemId& item, int image); - // associate some data with the item - void SetItemData(const wxTreeItemId& item, wxTreeItemData *data); - - // force appearance of [+] button near the item. This is useful to - // allow the user to expand the items which don't have any children now - // - but instead add them only when needed, thus minimizing memory - // usage and loading time. - void SetItemHasChildren(const wxTreeItemId& item, bool has = TRUE); - - // the item will be shown in bold - void SetItemBold(const wxTreeItemId& item, bool bold = TRUE); - - // item status inquiries - // --------------------- - - // is the item visible (it might be outside the view or not expanded)? - bool IsVisible(const wxTreeItemId& item) const; - // does the item has any children? - bool ItemHasChildren(const wxTreeItemId& item) const; - // is the item expanded (only makes sense if HasChildren())? - bool IsExpanded(const wxTreeItemId& item) const; - // is this item currently selected (the same as has focus)? - bool IsSelected(const wxTreeItemId& item) const; - // is item text in bold font? - bool IsBold(const wxTreeItemId& item) const; - - // number of children - // ------------------ - - // if 'recursively' is FALSE, only immediate children count, otherwise - // the returned number is the number of all items in this branch - size_t GetChildrenCount(const wxTreeItemId& item, bool recursively = TRUE); - - // navigation - // ---------- - - // wxTreeItemId.IsOk() will return FALSE if there is no such item - - // get the root tree item - wxTreeItemId GetRootItem() const; - - // get the item currently selected (may return NULL if no selection) - wxTreeItemId GetSelection() const; - - // get the parent of this item (may return NULL if root) - wxTreeItemId GetParent(const wxTreeItemId& item) const; - - // for this enumeration function you must pass in a "cookie" parameter - // which is opaque for the application but is necessary for the library - // to make these functions reentrant (i.e. allow more than one - // enumeration on one and the same object simultaneously). Of course, - // the "cookie" passed to GetFirstChild() and GetNextChild() should be - // the same! - - // get the first child of this item - wxTreeItemId GetFirstChild(const wxTreeItemId& item, long& _cookie) const; - // get the next child - wxTreeItemId GetNextChild(const wxTreeItemId& item, long& _cookie) const; - // get the last child of this item - this method doesn't use cookies - wxTreeItemId GetLastChild(const wxTreeItemId& item) const; - - // get the next sibling of this item - wxTreeItemId GetNextSibling(const wxTreeItemId& item) const; - // get the previous sibling - wxTreeItemId GetPrevSibling(const wxTreeItemId& item) const; - - // get first visible item - wxTreeItemId GetFirstVisibleItem() const; - // get the next visible item: item must be visible itself! - // see IsVisible() and wxTreeCtrl::GetFirstVisibleItem() - wxTreeItemId GetNextVisible(const wxTreeItemId& item) const; - // get the previous visible item: item must be visible itself! - wxTreeItemId GetPrevVisible(const wxTreeItemId& item) const; - - // operations - // ---------- - - // add the root node to the tree - wxTreeItemId AddRoot(const wxString& text, - int image = -1, int selectedImage = -1, - wxTreeItemData *data = NULL); - - // insert a new item in as the first child of the parent - wxTreeItemId PrependItem(const wxTreeItemId& parent, - const wxString& text, - int image = -1, int selectedImage = -1, - wxTreeItemData *data = NULL); - - // insert a new item after a given one - wxTreeItemId InsertItem(const wxTreeItemId& parent, - const wxTreeItemId& idPrevious, - const wxString& text, - int image = -1, int selectedImage = -1, - wxTreeItemData *data = NULL); - - // insert a new item in as the last child of the parent - wxTreeItemId AppendItem(const wxTreeItemId& parent, - const wxString& text, - int image = -1, int selectedImage = -1, - wxTreeItemData *data = NULL); - - // delete this item and associated data if any - void Delete(const wxTreeItemId& item); - // delete all children (but don't delete the item itself) - // NB: this won't send wxEVT_COMMAND_TREE_ITEM_DELETED events - void DeleteChildren(const wxTreeItemId& item); - // delete all items from the tree - // NB: this won't send wxEVT_COMMAND_TREE_ITEM_DELETED events - void DeleteAllItems(); - - // expand this item - void Expand(const wxTreeItemId& item); - // collapse the item without removing its children - void Collapse(const wxTreeItemId& item); - // collapse the item and remove all children - void CollapseAndReset(const wxTreeItemId& item); - // toggles the current state - void Toggle(const wxTreeItemId& item); - - // remove the selection from currently selected item (if any) - void Unselect(); - // select this item - void SelectItem(const wxTreeItemId& item); - // make sure this item is visible (expanding the parent item and/or - // scrolling to this item if necessary) - void EnsureVisible(const wxTreeItemId& item); - // scroll to this item (but don't expand its parent) - void ScrollTo(const wxTreeItemId& item); - - // start editing the item label: this (temporarily) replaces the item - // with a one line edit control. The item will be selected if it hadn't - // been before. textCtrlClass parameter allows you to create an edit - // control of arbitrary user-defined class deriving from wxTextCtrl. - wxTextCtrl* EditLabel(const wxTreeItemId& item, - wxClassInfo* textCtrlClass = CLASSINFO(wxTextCtrl)); - // returns the same pointer as StartEdit() if the item is being edited, - // NULL otherwise (it's assumed that no more than one item may be - // edited simultaneously) - wxTextCtrl* GetEditControl() const; - // end editing and accept or discard the changes to item label - void EndEditLabel(const wxTreeItemId& item, bool discardChanges = FALSE); - - // sorting - // this function is called to compare 2 items and should return -1, 0 - // or +1 if the first item is less than, equal to or greater than the - // second one. The base class version performs alphabetic comparaison - // of item labels (GetText) - virtual int OnCompareItems(const wxTreeItemId& item1, - const wxTreeItemId& item2); - // sort the children of this item using OnCompareItems - // - // NB: this function is not reentrant and not MT-safe (FIXME)! - void SortChildren(const wxTreeItemId& item); - - // helpers - // ------- - - // determine to which item (if any) belongs the given point (the - // coordinates specified are relative to the client area of tree ctrl) - // and fill the flags parameter with a bitmask of wxTREE_HITTEST_xxx - // constants. - // - // The first function is more portable (because easier to implement - // on other platforms), but the second one returns some extra info. - wxTreeItemId HitTest(const wxPoint& point) - { int dummy; return HitTest(point, dummy); } - wxTreeItemId HitTest(const wxPoint& point, int& flags); - - // get the bounding rectangle of the item (or of its label only) - // @@@ do we really need to expose this functions to the application? - void GetBoundingRect(const wxTreeItemId& item, - wxRect& rect, - bool textOnly = FALSE) const; - - // deprecated - // ---------- - - // these methods are deprecated and will be removed in future versions of - // wxWindows, they're here for compatibility only, don't use them in new - // code (the comments indicate why these methods are now useless and how to - // replace them) - - // use Expand, Collapse, CollapseAndReset or Toggle - void ExpandItem(const wxTreeItemId& item, int action); - - // use AddRoot, PrependItem or AppendItem - wxTreeItemId InsertItem(const wxTreeItemId& parent, - const wxString& text, - int image = -1, int selImage = -1, - long insertAfter = wxTREE_INSERT_LAST); - - // use Set/GetImageList and Set/GetStateImageList - wxImageList *GetImageList(int) const - { return GetImageList(); } - void SetImageList(wxImageList *imageList, int) - { SetImageList(imageList); } - - // implementation - // -------------- - void Command(wxCommandEvent& event) { ProcessCommand(event); }; - virtual bool MSWCommand(WXUINT param, WXWORD id); - virtual bool MSWNotify(WXWPARAM wParam, WXLPARAM lParam, WXLPARAM *result); - -protected: - // SetImageList helper - void SetAnyImageList(wxImageList *imageList, int which); - - wxTextCtrl* m_textCtrl; // used while editing the item label - wxImageList *m_imageListNormal, // images for tree elements - *m_imageListState; // special images for app defined states - -private: - // the common part of all ctors - void Init(); - - // helper functions - inline bool DoGetItem(wxTreeViewItem *tvItem) const; - inline void DoSetItem(wxTreeViewItem *tvItem); - - inline void DoExpand(const wxTreeItemId& item, int flag); - - wxTreeItemId DoInsertItem(const wxTreeItemId& parent, - wxTreeItemId hInsertAfter, - const wxString& text, - int image, int selectedImage, - wxTreeItemData *data); - - void DeleteTextCtrl(); - - DECLARE_DYNAMIC_CLASS(wxTreeCtrl) -}; - -// ---------------------------------------------------------------------------- -// wxTreeEvent is a special class for all events associated with tree controls -// -// NB: note that not all accessors make sense for all events, see the event -// descriptions below -// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxTreeEvent : public wxNotifyEvent -{ -friend wxTreeCtrl; -public: - wxTreeEvent(wxEventType commandType = wxEVT_NULL, int id = 0); - - // accessors - // get the item on which the operation was performed or the newly - // selected item for wxEVT_COMMAND_TREE_SEL_CHANGED/ING events - wxTreeItemId GetItem() const { return m_item; } - - // for wxEVT_COMMAND_TREE_SEL_CHANGED/ING events, get the previously - // selected item - wxTreeItemId GetOldItem() const { return m_itemOld; } - - // the point where the mouse was when the drag operation started (for - // wxEVT_COMMAND_TREE_BEGIN_(R)DRAG events only) - wxPoint GetPoint() const { return m_pointDrag; } - - // keyboard code (for wxEVT_COMMAND_TREE_KEY_DOWN only) - int GetCode() const { return m_code; } - -private: - // @@ we could save some space by using union here - int m_code; - wxTreeItemId m_item, - m_itemOld; - wxPoint m_pointDrag; - - DECLARE_DYNAMIC_CLASS(wxTreeEvent) -}; - -typedef void (wxEvtHandler::*wxTreeEventFunction)(wxTreeEvent&); - -// ---------------------------------------------------------------------------- -// macros for handling tree control events -// ---------------------------------------------------------------------------- - -// GetItem() returns the item being dragged, GetPoint() the mouse coords -#define EVT_TREE_BEGIN_DRAG(id, fn) { wxEVT_COMMAND_TREE_BEGIN_DRAG, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TREE_BEGIN_RDRAG(id, fn) { wxEVT_COMMAND_TREE_BEGIN_RDRAG, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, - -// GetItem() returns the itme whose label is being edited -#define EVT_TREE_BEGIN_LABEL_EDIT(id, fn) { wxEVT_COMMAND_TREE_BEGIN_LABEL_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TREE_END_LABEL_EDIT(id, fn) { wxEVT_COMMAND_TREE_END_LABEL_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, - -// provide/update information about GetItem() item -#define EVT_TREE_GET_INFO(id, fn) { wxEVT_COMMAND_TREE_GET_INFO, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TREE_SET_INFO(id, fn) { wxEVT_COMMAND_TREE_SET_INFO, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, - -// GetItem() is the item being expanded/collapsed, the "ING" versions can use -#define EVT_TREE_ITEM_EXPANDED(id, fn) { wxEVT_COMMAND_TREE_ITEM_EXPANDED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TREE_ITEM_EXPANDING(id, fn) { wxEVT_COMMAND_TREE_ITEM_EXPANDING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TREE_ITEM_COLLAPSED(id, fn) { wxEVT_COMMAND_TREE_ITEM_COLLAPSED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TREE_ITEM_COLLAPSING(id, fn) { wxEVT_COMMAND_TREE_ITEM_COLLAPSING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, NULL }, - -// GetOldItem() is the item which had the selection previously, GetItem() is -// the item which acquires selection -#define EVT_TREE_SEL_CHANGED(id, fn) { wxEVT_COMMAND_TREE_SEL_CHANGED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, NULL }, -#define EVT_TREE_SEL_CHANGING(id, fn) { wxEVT_COMMAND_TREE_SEL_CHANGING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, NULL }, - -// GetCode() returns the key code -// NB: this is the only message for which GetItem() is invalid (you may get the -// item from GetSelection()) -#define EVT_TREE_KEY_DOWN(id, fn) { wxEVT_COMMAND_TREE_KEY_DOWN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, NULL }, - -// GetItem() returns the item being deleted, the associated data (if any) will -// be deleted just after the return of this event handler (if any) -#define EVT_TREE_DELETE_ITEM(id, fn) { wxEVT_COMMAND_TREE_DELETE_ITEM, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, - -// GetItem() returns the item that was activated (double click, enter, space) -#define EVT_TREE_ITEM_ACTIVATED(id, fn) { wxEVT_COMMAND_TREE_ITEM_ACTIVATED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, NULL }, - -#endif - // _WX_TREECTRL_H_ diff --git a/include/wx/msw/watch1.cur b/include/wx/msw/watch1.cur deleted file mode 100644 index 323f01c3e5e7698be6414ef664354d7ea0f22e9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 326 zcmaivJraU25QSf)pp2D`1(cRnc8K@U&N5=Sffr&X+D1Gxgi3q~VR9qe@^c#Y7>X|n8t*m76w1H{s zr7CaR)|{f(J!4c8mx}1ip7d3bc70DoI%77Z4}m_{fk|pv94%{lCdt{O^Kzc--2m~F i8VD>PE5OeIk4fEEM(`)bcU<#fzj9iv$=XvdzJCB`+hyqh diff --git a/include/wx/msw/wave.h b/include/wx/msw/wave.h deleted file mode 100644 index d95560bc6f..0000000000 --- a/include/wx/msw/wave.h +++ /dev/null @@ -1,48 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: wave.h -// Purpose: wxWave class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_WAVE_H_ -#define _WX_WAVE_H_ - -#ifdef __GNUG__ -#pragma interface "wave.h" -#endif - -#include "wx/object.h" - -class WXDLLEXPORT wxWave : public wxObject -{ -public: - wxWave(); - wxWave(const wxString& fileName, bool isResource = FALSE); - wxWave(int size, const wxByte* data); - ~wxWave(); - -public: - // Create from resource or file - bool Create(const wxString& fileName, bool isResource = FALSE); - // Create from data - bool Create(int size, const wxByte* data); - - bool IsOk() const { return (m_waveData ? TRUE : FALSE); }; - bool Play(bool async = TRUE, bool looped = FALSE) const; - -protected: - bool Free(); - -private: - wxByte* m_waveData; - int m_waveLength; - bool m_isResource; -}; - -#endif - diff --git a/include/wx/msw/window.h b/include/wx/msw/window.h deleted file mode 100644 index 27d739947d..0000000000 --- a/include/wx/msw/window.h +++ /dev/null @@ -1,818 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: window.h -// Purpose: wxWindow class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_WINDOW_H_ -#define _WX_WINDOW_H_ - -#ifdef __GNUG__ -#pragma interface "window.h" -#endif - -#include "wx/gdicmn.h" -#include "wx/icon.h" -#include "wx/cursor.h" -#include "wx/pen.h" -#include "wx/font.h" -#include "wx/validate.h" -#include "wx/event.h" -#include "wx/string.h" -#include "wx/list.h" -#include "wx/region.h" -#include "wx/msw/accel.h" - -#define wxKEY_SHIFT 1 -#define wxKEY_CTRL 2 - -/* - * Base class for frame, panel, canvas, panel items, dialog box. - * - */ - -/* - * Event handler: windows have themselves as their event handlers - * by default, but their event handlers could be set to another - * object entirely. This separation can reduce the amount of - * derivation required, and allow alteration of a window's functionality - * (e.g. by a resource editor that temporarily switches event handlers). - */ - -class WXDLLEXPORT wxWindow; -class WXDLLEXPORT wxEvent; -class WXDLLEXPORT wxCommandEvent; -class WXDLLEXPORT wxKeyEvent; -class WXDLLEXPORT wxControl; -class WXDLLEXPORT wxCursor; -class WXDLLEXPORT wxColourMap; -class WXDLLEXPORT wxFont; -class WXDLLEXPORT wxMenu; -class WXDLLEXPORT wxRect; -class WXDLLEXPORT wxBitmap; -class WXDLLEXPORT wxSizer; -class WXDLLEXPORT wxList; -class WXDLLEXPORT wxLayoutConstraints; -class WXDLLEXPORT wxMouseEvent; -class WXDLLEXPORT wxButton; -class WXDLLEXPORT wxColour; -class WXDLLEXPORT wxBrush; -class WXDLLEXPORT wxPen; -class WXDLLEXPORT wxIcon; -class WXDLLEXPORT wxDC; -class WXDLLEXPORT wxValidator; - -#if wxUSE_DRAG_AND_DROP -class WXDLLEXPORT wxDropTarget; -#endif - -#if wxUSE_WX_RESOURCES -class WXDLLEXPORT wxResourceTable; -class WXDLLEXPORT wxItemResource; -#endif - -WXDLLEXPORT_DATA(extern const char*) wxPanelNameStr; - -WXDLLEXPORT_DATA(extern const wxSize) wxDefaultSize; -WXDLLEXPORT_DATA(extern const wxPoint) wxDefaultPosition; - -//----------------------------------------------------------------------------- -// wxClientData -//----------------------------------------------------------------------------- - -class wxClientData -{ -public: - wxClientData() { } - virtual ~wxClientData() { } -}; - -//----------------------------------------------------------------------------- -// wxStringClientData -//----------------------------------------------------------------------------- - -class wxStringClientData: public wxClientData -{ -public: - wxStringClientData() { } - wxStringClientData( wxString &data ) { m_data = data; } - void SetData( wxString &data ) { m_data = data; } - wxString GetData() const { return m_data; } - -private: - wxString m_data; -}; - -// Clash with Windows headers -#ifdef GetCharWidth -#undef GetCharWidth -#endif - -#ifdef FindWindow -#undef FindWindow -#endif - -class WXDLLEXPORT wxWindow : public wxEvtHandler -{ - DECLARE_ABSTRACT_CLASS(wxWindow) - - friend class wxDC; - friend class wxPaintDC; - -public: - wxWindow(); - wxWindow(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = wxPanelNameStr) - { - Init(); - Create(parent, id, pos, size, style, name); - } - - virtual ~wxWindow(); - - bool Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = wxPanelNameStr); - - // Fit the window around the items - virtual void Fit(); - - // Show or hide the window - virtual bool Show(bool show); - - // Is the window shown? - virtual bool IsShown() const; - - // Raise the window to the top of the Z order - virtual void Raise(); - - // Lower the window to the bottom of the Z order - virtual void Lower(); - - // Is the window enabled? - virtual bool IsEnabled() const; - - // For compatibility - inline bool Enabled() const { return IsEnabled(); } - - // Dialog support: override these and call - // base class members to add functionality - // that can't be done using validators. - - // Transfer values to controls. If returns FALSE, - // it's an application error (pops up a dialog) - virtual bool TransferDataToWindow(); - - // Transfer values from controls. If returns FALSE, - // transfer failed: don't quit - virtual bool TransferDataFromWindow(); - - // Validate controls. If returns FALSE, - // validation failed: don't quit - virtual bool Validate(); - - // Return code for dialogs - inline void SetReturnCode(int retCode); - inline int GetReturnCode(); - - // Set the cursor - virtual void SetCursor(const wxCursor& cursor); - inline virtual wxCursor& GetCursor() const { return (wxCursor& ) m_windowCursor; }; - - // Get the window with the focus - static wxWindow *FindFocus(); - - // Get character size - virtual int GetCharHeight() const; - virtual int GetCharWidth() const; - - // Get overall window size - virtual void GetSize(int *width, int *height) const; - wxSize GetSize() const { int w, h; GetSize(& w, & h); return wxSize(w, h); } - - // Get window position, relative to parent (or screen if no parent) - virtual void GetPosition(int *x, int *y) const; - wxPoint GetPosition() const - { int x, y; GetPosition(&x, &y); return wxPoint(x, y); } - - // Get size and position - wxRect GetRect() const - { int x, y, w, h; GetPosition(& x, & y); GetSize(& w, & h); return wxRect(x, y, w, h); } - - // Get client (application-useable) size - virtual void GetClientSize(int *width, int *height) const; - wxSize GetClientSize() const { int w, h; GetClientSize(& w, & h); return wxSize(w, h); } - - // Set overall size and position - // generic function, may be overriden in derived classes - virtual void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - - void SetSize(const wxRect& rect, int sizeFlags = wxSIZE_AUTO) - { SetSize(rect.x, rect.y, rect.width, rect.height, sizeFlags); } - - // set size only - void SetSize(int width, int height) - { SetSize(-1, -1, width, height, wxSIZE_USE_EXISTING); } - void SetSize(const wxSize& size) - { SetSize(-1, -1, size.x, size.y, wxSIZE_USE_EXISTING); } - - // set position only - virtual void Move(int x, int y) { SetSize(x, y, -1, -1, wxSIZE_USE_EXISTING); } - void Move(const wxPoint& pt) { SetSize(pt.x, pt.y, -1, -1, wxSIZE_USE_EXISTING); } - - // Set client size - virtual void SetClientSize(int width, int height); - void SetClientSize(const wxSize& sz) { SetClientSize(sz.x, sz.y); } - - // Convert client to screen coordinates - virtual void ClientToScreen(int *x, int *y) const; - wxPoint ClientToScreen(const wxPoint& pt) const - { int x = pt.x; int y = pt.y; ClientToScreen(& x, & y); return wxPoint(x, y); } - - // Convert screen to client coordinates - virtual void ScreenToClient(int *x, int *y) const; - wxPoint ScreenToClient(const wxPoint& pt) const - { int x = pt.x; int y = pt.y; ScreenToClient(& x, & y); return wxPoint(x, y); } - - // Set the focus to this window - virtual void SetFocus(); - - // Capture/release mouse - virtual void CaptureMouse(); - virtual void ReleaseMouse(); - - // Enable or disable the window - virtual void Enable(bool enable); - -#if wxUSE_DRAG_AND_DROP - // Associate a drop target with this window (if the window already had a drop - // target, it's deleted!) and return the current drop target (may be NULL). - void SetDropTarget(wxDropTarget *pDropTarget); - wxDropTarget *GetDropTarget() const { return m_pDropTarget; } -#endif - - // Accept files for dragging - virtual void DragAcceptFiles(bool accept); - - // Update region access - virtual wxRegion GetUpdateRegion() const; - virtual bool IsExposed(int x, int y, int w, int h) const; - virtual bool IsExposed(const wxPoint& pt) const; - virtual bool IsExposed(const wxRect& rect) const; - - // Set/get the window title - virtual inline void SetTitle(const wxString& WXUNUSED(title)) {}; - inline virtual wxString GetTitle() const { return wxString(""); }; - // Most windows have the concept of a label; for frames, this is the - // title; for items, this is the label or button text. - inline virtual wxString GetLabel() const { return GetTitle(); } - - // Set/get the window name (used for resource setting in X) - inline virtual wxString GetName() const; - inline virtual void SetName(const wxString& name); - - // Centre the window - virtual void Centre(int direction) ; - inline void Center(int direction = wxHORIZONTAL) { Centre(direction); } - - // Popup a menu - virtual bool PopupMenu(wxMenu *menu, int x, int y); - - // Send the window a refresh event - virtual void Refresh(bool eraseBack = TRUE, const wxRect *rect = NULL); - -#if WXWIN_COMPATIBILITY - // Set/get scroll attributes - virtual void SetScrollRange(int orient, int range, bool refresh = TRUE); - virtual void SetScrollPage(int orient, int page, bool refresh = TRUE); - virtual int OldGetScrollRange(int orient) const; - virtual int GetScrollPage(int orient) const; -#endif - - // New functions that will replace the above. - virtual void SetScrollbar(int orient, int pos, int thumbVisible, - int range, bool refresh = TRUE); - - virtual void SetScrollPos(int orient, int pos, bool refresh = TRUE); - virtual int GetScrollPos(int orient) const; - virtual int GetScrollRange(int orient) const; - virtual int GetScrollThumb(int orient) const; - - virtual void ScrollWindow(int dx, int dy, const wxRect *rect = NULL); - - // Caret manipulation - virtual void CreateCaret(int w, int h); - virtual void CreateCaret(const wxBitmap *bitmap); - virtual void DestroyCaret(); - virtual void ShowCaret(bool show); - virtual void SetCaretPos(int x, int y); - virtual void GetCaretPos(int *x, int *y) const; - - // Tell window how much it can be sized - virtual void SetSizeHints(int minW = -1, int minH = -1, int maxW = -1, int maxH = -1, int incW = -1, int incH = -1); - - // Set/get the window's identifier - inline int GetId() const; - inline void SetId(int id); - - // Make the window modal (all other windows unresponsive) - virtual void MakeModal(bool modal); - - // Get the private handle (platform-dependent) - inline void *GetHandle() const; - - // Set/get the window's relatives - inline wxWindow *GetParent() const; - inline void SetParent(wxWindow *p) ; - inline wxWindow *GetGrandParent() const; - inline wxList& GetChildren() const; - // Set this window to be the child of 'parent'. - // Returns FALSE it's not possible (some systems - // won't allow it) - virtual bool Reparent(wxWindow *parent); - - // Set/get the window's font - virtual void SetFont(const wxFont& f); - inline virtual wxFont& GetFont() const; - - // Set/get the window's validator - void SetValidator(const wxValidator& validator); - inline wxValidator *GetValidator() const; - - // Set/get the window's style - inline void SetWindowStyleFlag(long flag); - inline long GetWindowStyleFlag() const; - - // Set/get double-clickability - // TODO: we probably wish to get rid of this, and - // always allow double clicks. - inline void SetDoubleClick(bool flag); - inline bool GetDoubleClick() const; - inline void AllowDoubleClick(bool value) { SetDoubleClick(value); } - - // Handle a control command - virtual void OnCommand(wxWindow& win, wxCommandEvent& event); - - // Set/get event handler - inline void SetEventHandler(wxEvtHandler *handler); - inline wxEvtHandler *GetEventHandler() const; - - // Push/pop event handler (i.e. allow a chain of event handlers - // be searched) - void PushEventHandler(wxEvtHandler *handler) ; - wxEvtHandler *PopEventHandler(bool deleteHandler = FALSE) ; - - // Close the window by calling OnClose, posting a deletion - virtual bool Close(bool force = FALSE); - - // Destroy the window (delayed, if a managed window) - virtual bool Destroy() ; - - // Mode for telling default OnSize members to - // call Layout(), if not using Sizers, just top-down constraints - inline void SetAutoLayout(bool a); - inline bool GetAutoLayout() const; - - // Set/get constraints - inline wxLayoutConstraints *GetConstraints() const; - void SetConstraints(wxLayoutConstraints *c); - - // Set/get window background colour - inline virtual void SetBackgroundColour(const wxColour& col); - inline virtual wxColour GetBackgroundColour() const; - - // Set/get window foreground colour - inline virtual void SetForegroundColour(const wxColour& col); - inline virtual wxColour GetForegroundColour() const; - - // For backward compatibility - inline virtual void SetButtonFont(const wxFont& font) { SetFont(font); } - inline virtual void SetLabelFont(const wxFont& font) { SetFont(font); } - inline virtual wxFont& GetLabelFont() const { return GetFont(); }; - inline virtual wxFont& GetButtonFont() const { return GetFont(); }; - - // Get the default button, if there is one - inline virtual wxButton *GetDefaultItem() const; - inline virtual void SetDefaultItem(wxButton *but); - - virtual void SetAcceleratorTable(const wxAcceleratorTable& accel); - inline virtual wxAcceleratorTable& GetAcceleratorTable() const { return (wxAcceleratorTable&) m_acceleratorTable; } - - // Override to define new behaviour for default action (e.g. double clicking - // on a listbox) - virtual void OnDefaultAction(wxControl *initiatingItem); - - // Resource loading -#if wxUSE_WX_RESOURCES - virtual bool LoadFromResource(wxWindow *parent, const wxString& resourceName, const wxResourceTable *table = NULL); - virtual wxControl *CreateItem(const wxItemResource* childResource, const wxItemResource* parentResource, const wxResourceTable *table = NULL); -#endif - - // Native resource loading - virtual bool LoadNativeDialog(wxWindow* parent, wxWindowID& id); - virtual bool LoadNativeDialog(wxWindow* parent, const wxString& name); - virtual wxWindow* GetWindowChild1(wxWindowID& id); - virtual wxWindow* GetWindowChild(wxWindowID& id); - - virtual void GetTextExtent(const wxString& string, int *x, int *y, - int *descent = NULL, - int *externalLeading = NULL, - const wxFont *theFont = NULL, bool use16 = FALSE) const; - - // Is the window retained? - inline bool IsRetained() const; - - // Warp the pointer the given position - virtual void WarpPointer(int x_pos, int y_pos) ; - - // Clear the window - virtual void Clear(); - - // Find a window by id or name - virtual wxWindow *FindWindow(long id); - virtual wxWindow *FindWindow(const wxString& name); - - // Constraint operations - bool Layout(); - void SetSizer(wxSizer *sizer); // Adds sizer child to this window - inline wxSizer *GetSizer() const ; - inline wxWindow *GetSizerParent() const ; - inline void SetSizerParent(wxWindow *win); - - // Do Update UI processing for controls - void UpdateWindowUI(); - - void OnEraseBackground(wxEraseEvent& event); - void OnChar(wxKeyEvent& event); - void OnKeyDown(wxKeyEvent& event); - void OnKeyUp(wxKeyEvent& event); - void OnPaint(wxPaintEvent& event); - void OnIdle(wxIdleEvent& event); - - // Does this window want to accept keyboard focus? - virtual bool AcceptsFocus() const; - - virtual void PrepareDC( wxDC& WXUNUSED(dc) ) {}; -public: - //////////////////////////////////////////////////////////////////////// - //// IMPLEMENTATION - - // For implementation purposes - sometimes decorations make the client area - // smaller - virtual wxPoint GetClientAreaOrigin() const; - - // Makes an adjustment to the window position (for example, a frame that has - // a toolbar that it manages itself). - virtual void AdjustForParentClientOrigin(int& x, int& y, int sizeFlags); - - // Windows subclassing - void SubclassWin(WXHWND hWnd); - void UnsubclassWin(); - virtual long Default(); - virtual bool MSWCommand(WXUINT param, WXWORD id); - - // returns TRUE if the event was processed - virtual bool MSWNotify(WXWPARAM wParam, WXLPARAM lParam, WXLPARAM *result); - - virtual wxWindow *FindItem(int id) const; - virtual wxWindow *FindItemByHWND(WXHWND hWnd, bool controlOnly = FALSE) const ; - virtual void PreDelete(WXHDC dc); // Allows system cleanup - // TO DO: how many of these need to be virtual? - virtual WXHWND GetHWND() const ; - virtual void SetHWND(WXHWND hWnd); - - // Make a Windows extended style from the given wxWindows window style - virtual WXDWORD MakeExtendedStyle(long style, bool eliminateBorders = TRUE); - // Determine whether 3D effects are wanted - virtual WXDWORD Determine3DEffects(WXDWORD defaultBorderStyle, bool *want3D); - - virtual void AddChild(wxWindow *child); // Adds reference to the child object - virtual void RemoveChild(wxWindow *child); // Removes reference to child - // (but doesn't delete the child object) - virtual void DestroyChildren(); // Removes and destroys all children - - inline bool IsBeingDeleted(); - - // MSW only: TRUE if this control is part of the main control - virtual bool ContainsHWND(WXHWND WXUNUSED(hWnd)) const { return FALSE; }; - - // Constraint implementation - void UnsetConstraints(wxLayoutConstraints *c); - inline wxList *GetConstraintsInvolvedIn() const ; - // Back-pointer to other windows we're involved with, so if we delete - // this window, we must delete any constraints we're involved with. - void AddConstraintReference(wxWindow *otherWin); - void RemoveConstraintReference(wxWindow *otherWin); - void DeleteRelatedConstraints(); - - virtual void ResetConstraints(); - virtual void SetConstraintSizes(bool recurse = TRUE); - virtual bool LayoutPhase1(int *noChanges); - virtual bool LayoutPhase2(int *noChanges); - virtual bool DoPhase(int); - // Transforms from sizer coordinate space to actual - // parent coordinate space - virtual void TransformSizerToActual(int *x, int *y) const ; - - // Set size with transformation to actual coordinates if nec. - virtual void SizerSetSize(int x, int y, int w, int h); - virtual void SizerMove(int x, int y); - - // Only set/get the size/position of the constraint (if any) - virtual void SetSizeConstraint(int x, int y, int w, int h); - virtual void MoveConstraint(int x, int y); - virtual void GetSizeConstraint(int *w, int *h) const ; - virtual void GetClientSizeConstraint(int *w, int *h) const ; - virtual void GetPositionConstraint(int *x, int *y) const ; - - // Dialog units translations. Implemented in wincmn.cpp. - wxPoint ConvertPixelsToDialog(const wxPoint& pt) ; - wxPoint ConvertDialogToPixels(const wxPoint& pt) ; - inline wxSize ConvertPixelsToDialog(const wxSize& sz) - { wxPoint pt(ConvertPixelsToDialog(wxPoint(sz.x, sz.y))); return wxSize(pt.x, pt.y); } - inline wxSize ConvertDialogToPixels(const wxSize& sz) - { wxPoint pt(ConvertDialogToPixels(wxPoint(sz.x, sz.y))); return wxSize(pt.x, pt.y); } - - wxObject *GetChild(int number) const ; - - void MSWCreate(int id, wxWindow *parent, const char *wclass, wxWindow *wx_win, const char *title, - int x, int y, int width, int height, - WXDWORD style, const char *dialog_template = NULL, - WXDWORD exendedStyle = 0); - - // Actually defined in wx_canvs.cc since requires wxCanvas declaration - virtual void MSWDeviceToLogical(float *x, float *y) const ; - - // Create an appropriate wxWindow from a HWND - virtual wxWindow* CreateWindowFromHWND(wxWindow* parent, WXHWND hWnd); - - // Make sure the window style reflects the HWND style (roughly) - virtual void AdoptAttributesFromHWND(); - - // Setup background and foreground colours correctly - virtual void SetupColours(); - - // Saves the last message information before calling base version - virtual bool ProcessEvent(wxEvent& event); - - // Handlers - virtual void MSWOnCreate(WXLPCREATESTRUCT cs); - virtual bool MSWOnPaint(); - virtual WXHICON MSWOnQueryDragIcon() { return 0; } - virtual void MSWOnSize(int x, int y, WXUINT flag); - virtual void MSWOnWindowPosChanging(void *lpPos); - virtual void MSWOnHScroll(WXWORD nSBCode, WXWORD pos, WXHWND control); - virtual void MSWOnVScroll(WXWORD nSBCode, WXWORD pos, WXHWND control); - virtual bool MSWOnCommand(WXWORD id, WXWORD cmd, WXHWND control); - virtual long MSWOnSysCommand(WXWPARAM wParam, WXLPARAM lParam); - virtual long MSWOnNotify(WXWPARAM wParam, WXLPARAM lParam); - virtual WXHBRUSH MSWOnCtlColor(WXHDC dc, WXHWND pWnd, WXUINT nCtlColor, - WXUINT message, WXWPARAM wParam, WXLPARAM lParam); - virtual bool MSWOnColorChange(WXHWND hWnd, WXUINT message, WXWPARAM wParam, WXLPARAM lParam); - virtual long MSWOnPaletteChanged(WXHWND hWndPalChange); - virtual long MSWOnQueryNewPalette(); - virtual bool MSWOnEraseBkgnd(WXHDC pDC); - virtual void MSWOnMenuHighlight(WXWORD item, WXWORD flags, WXHMENU sysmenu); - virtual void MSWOnInitMenuPopup(WXHMENU menu, int pos, bool isSystem); - virtual bool MSWOnClose(); - // Return TRUE to end session, FALSE to veto end session. - virtual bool MSWOnQueryEndSession(long logOff); - virtual bool MSWOnEndSession(bool endSession, long logOff); - virtual bool MSWOnDestroy(); - virtual bool MSWOnSetFocus(WXHWND wnd); - virtual bool MSWOnKillFocus(WXHWND wnd); - virtual void MSWOnDropFiles(WXWPARAM wParam); - virtual bool MSWOnInitDialog(WXHWND hWndFocus); - virtual void MSWOnShow(bool show, int status); - - // TODO: rationalise these functions into 1 or 2 which take the - // event type as argument. - virtual void MSWOnLButtonDown(int x, int y, WXUINT flags); - virtual void MSWOnLButtonUp(int x, int y, WXUINT flags); - virtual void MSWOnLButtonDClick(int x, int y, WXUINT flags); - - virtual void MSWOnMButtonDown(int x, int y, WXUINT flags); - virtual void MSWOnMButtonUp(int x, int y, WXUINT flags); - virtual void MSWOnMButtonDClick(int x, int y, WXUINT flags); - - virtual void MSWOnRButtonDown(int x, int y, WXUINT flags); - virtual void MSWOnRButtonUp(int x, int y, WXUINT flags); - virtual void MSWOnRButtonDClick(int x, int y, WXUINT flags); - - virtual void MSWOnMouseMove(int x, int y, WXUINT flags); - virtual void MSWOnMouseEnter(int x, int y, WXUINT flags); - virtual void MSWOnMouseLeave(int x, int y, WXUINT flags); - - virtual void MSWOnChar(WXWORD wParam, WXLPARAM lParam, bool isASCII = FALSE); - virtual void MSWOnKeyDown(WXWORD wParam, WXLPARAM lParam, bool isASCII = FALSE); - virtual void MSWOnKeyUp(WXWORD wParam, WXLPARAM lParam, bool isASCII = FALSE); - - virtual bool MSWOnActivate(int flag, bool minimized, WXHWND activate); - virtual long MSWOnMDIActivate(long flag, WXHWND activate, WXHWND deactivate); - - virtual bool MSWOnDrawItem(int id, WXDRAWITEMSTRUCT *item); - virtual bool MSWOnMeasureItem(int id, WXMEASUREITEMSTRUCT *item); - - virtual void MSWOnJoyDown(int joystick, int x, int y, WXUINT flags); - virtual void MSWOnJoyUp(int joystick, int x, int y, WXUINT flags); - virtual void MSWOnJoyMove(int joystick, int x, int y, WXUINT flags); - virtual void MSWOnJoyZMove(int joystick, int z, WXUINT flags); - - virtual long MSWGetDlgCode(); - - // Window procedure - virtual long MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam); - - // Calls an appropriate default window procedure - virtual long MSWDefWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam); - virtual bool MSWProcessMessage(WXMSG* pMsg); - virtual bool MSWTranslateMessage(WXMSG* pMsg); - virtual void MSWDestroyWindow(); - - // Detach "Window" menu from menu bar so it doesn't get deleted - void MSWDetachWindowMenu(); - - inline WXFARPROC MSWGetOldWndProc() const; - inline void MSWSetOldWndProc(WXFARPROC proc); - - // Define for each class of dialog and control - virtual WXHBRUSH OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor, - WXUINT message, WXWPARAM wParam, WXLPARAM lParam); - - inline void SetShowing(bool show); - inline bool IsUserEnabled() const; - inline bool GetUseCtl3D() const ; - inline bool GetTransparentBackground() const ; - - // Responds to colour changes: passes event on to children. - void OnSysColourChanged(wxSysColourChangedEvent& event); - - // Transfers data to any child controls - void OnInitDialog(wxInitDialogEvent& event); - - // Sends an OnInitDialog event, which in turns transfers data to - // to the window via validators. - virtual void InitDialog(); - - //////////////////////////////////////////////////////////////////////// - //// PROTECTED DATA -protected: - wxAcceleratorTable m_acceleratorTable; - int m_windowId; - long m_windowStyle; // Store the window's style - wxEvtHandler * m_windowEventHandler; // Usually is 'this' - wxLayoutConstraints * m_constraints; // Constraints for this window - wxList * m_constraintsInvolvedIn; // List of constraints we're involved in - wxSizer * m_windowSizer; // Window's top-level sizer (if any) - wxWindow * m_sizerParent; // Window's parent sizer (if any) - bool m_autoLayout; // Whether to call Layout() in OnSize - wxWindow * m_windowParent; // Each window always knows its parent - wxValidator * m_windowValidator; - // Old window proc, for subclassed controls - WXFARPROC m_oldWndProc; - bool m_useCtl3D; // Using CTL3D for this control - - bool m_inOnSize; // Protection against OnSize reentry -#ifndef _WX_WIN32__ - // Pointer to global memory, for EDIT controls that need - // special treatment to reduce USER area consumption. - WXHGLOBAL m_globalHandle; -#endif - - bool m_winEnabled; - int m_minSizeX; - int m_minSizeY; - int m_maxSizeX; - int m_maxSizeY; - - // Caret data - int m_caretWidth; - int m_caretHeight; - bool m_caretEnabled; - bool m_caretShown; - wxFont m_windowFont; // Window's font - bool m_isShown; - bool m_doubleClickAllowed ; - wxCursor m_windowCursor; // Window's cursor - bool m_winCaptured; - wxString m_windowName; // Window name - -#if wxUSE_EXTENDED_STATICS - wxList m_staticItems; -#endif - - wxButton * m_defaultItem; - wxColour m_backgroundColour ; - wxColour m_foregroundColour ; - bool m_backgroundTransparent; - - int m_xThumbSize; - int m_yThumbSize; - - float m_lastXPos; - float m_lastYPos; - int m_lastEvent; - - bool m_mouseInWindow; - -#if wxUSE_DRAG_AND_DROP - wxDropTarget *m_pDropTarget; // the current drop target or NULL -#endif //USE_DRAG_AND_DROP - -public: - WXHWND m_hWnd; // MS Windows window handle - WXUINT m_lastMsg; - WXWPARAM m_lastWParam; - WXLPARAM m_lastLParam; - - wxRegion m_updateRegion; -/* - wxRect m_updateRect; // Bounding box for screen damage area -#ifdef __WIN32__ - WXHRGN m_updateRgn; // NT allows access to the rectangle list -#endif -*/ - -// WXHANDLE m_acceleratorTable; - WXHMENU m_hMenu; // Menu, if any - wxList * m_children; // Window's children - int m_returnCode; - bool m_isBeingDeleted; // Fudge because can't access parent - // when being deleted - -private: - // common part of all ctors - void Init(); - - DECLARE_EVENT_TABLE() -}; - -//////////////////////////////////////////////////////////////////////// -//// INLINES - -inline void *wxWindow::GetHandle() const { return (void *)GetHWND(); } -inline int wxWindow::GetId() const { return m_windowId; } -inline void wxWindow::SetId(int id) { m_windowId = id; } -inline wxWindow *wxWindow::GetParent() const { return m_windowParent; } -inline void wxWindow::SetParent(wxWindow *p) { m_windowParent = p; } -inline wxWindow *wxWindow::GetGrandParent() const { return (m_windowParent ? m_windowParent->m_windowParent : (wxWindow*) NULL); } -inline wxList& wxWindow::GetChildren() const { return (wxList&) *m_children; } -inline wxFont& wxWindow::GetFont() const { return (wxFont&) m_windowFont; } -inline wxString wxWindow::GetName() const { return m_windowName; } -inline void wxWindow::SetName(const wxString& name) { m_windowName = name; } -inline long wxWindow::GetWindowStyleFlag() const { return m_windowStyle; } -inline void wxWindow::SetWindowStyleFlag(long flag) { m_windowStyle = flag; } -inline void wxWindow::SetDoubleClick(bool flag) { m_doubleClickAllowed = flag; } -inline bool wxWindow::GetDoubleClick() const { return m_doubleClickAllowed; } -inline void wxWindow::SetEventHandler(wxEvtHandler *handler) { m_windowEventHandler = handler; } -inline wxEvtHandler *wxWindow::GetEventHandler() const { return m_windowEventHandler; } -inline void wxWindow::SetAutoLayout(bool a) { m_autoLayout = a; } -inline bool wxWindow::GetAutoLayout() const { return m_autoLayout; } -inline wxLayoutConstraints *wxWindow::GetConstraints() const { return m_constraints; } -inline void wxWindow::SetBackgroundColour(const wxColour& col) { m_backgroundColour = col; }; -inline wxColour wxWindow::GetBackgroundColour() const { return m_backgroundColour; }; -inline void wxWindow::SetForegroundColour(const wxColour& col) { m_foregroundColour = col; }; -inline wxColour wxWindow::GetForegroundColour() const { return m_foregroundColour; }; - -inline wxButton *wxWindow::GetDefaultItem() const { return m_defaultItem; } -inline void wxWindow::SetDefaultItem(wxButton *but) { m_defaultItem = but; } -inline bool wxWindow::IsRetained() const { return ((m_windowStyle & wxRETAINED) == wxRETAINED); } - -inline void wxWindow::SetShowing(bool show) { m_isShown = show; } -inline wxList *wxWindow::GetConstraintsInvolvedIn() const { return m_constraintsInvolvedIn; } -inline wxSizer *wxWindow::GetSizer() const { return m_windowSizer; } -inline wxWindow *wxWindow::GetSizerParent() const { return m_sizerParent; } -inline void wxWindow::SetSizerParent(wxWindow *win) { m_sizerParent = win; } -inline WXFARPROC wxWindow::MSWGetOldWndProc() const { return m_oldWndProc; } -inline void wxWindow::MSWSetOldWndProc(WXFARPROC proc) { m_oldWndProc = proc; } -inline wxValidator *wxWindow::GetValidator() const { return m_windowValidator; } -inline bool wxWindow::IsUserEnabled() const { return m_winEnabled; } -inline bool wxWindow::GetUseCtl3D() const { return m_useCtl3D; } -inline bool wxWindow::GetTransparentBackground() const { return m_backgroundTransparent; } -inline void wxWindow::SetReturnCode(int retCode) { m_returnCode = retCode; } -inline int wxWindow::GetReturnCode() { return m_returnCode; } -inline bool wxWindow::IsBeingDeleted() { return m_isBeingDeleted; } - -// Window specific (so far) -WXDLLEXPORT wxWindow* wxGetActiveWindow(); - -WXDLLEXPORT_DATA(extern wxList) wxTopLevelWindows; - -WXDLLEXPORT int wxCharCodeMSWToWX(int keySym); -WXDLLEXPORT int wxCharCodeWXToMSW(int id, bool *IsVirtual); - -// Allocates control ids -WXDLLEXPORT int NewControlId(); - -#endif - // _WX_WINDOW_H_ diff --git a/include/wx/msw/wx.rc b/include/wx/msw/wx.rc deleted file mode 100644 index a8eed6817b..0000000000 --- a/include/wx/msw/wx.rc +++ /dev/null @@ -1,129 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// File: wx.rc -// Purpose: wxWindows resource definitions. ALWAYS include -// this in your application resource file. -// -// wxWindows version 1.50 -// Copyright (c) 1993 Artificial Intelligence Applications Institute, -// The University of Edinburgh -// -// Author: Julian Smart -// Date: 9-4-93 -// -// 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. -///////////////////////////////////////////////////////////////////////////// -// -// - -#if (defined( __GNUWIN32__ ) && !defined(__TWIN32__)) || defined(__MWERKS__) -#include -#else -#include -#endif - -////////////////////////////////////////////////////////////////////////////// -// -// Dummy Dialog for all wxCAPTION Dialog boxes -// - -wxCaptionDialog DIALOG DISCARDABLE 34, 22, 144, 75 -STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -CAPTION "Dummy dialog" -BEGIN - LTEXT "", -1,-2,-2,1,1 //necessary for __WATCOMC__ -END - -// -// Dummy dialog for dialog boxes without caption & with thin frame -// -wxNoCaptionDialog DIALOG 34, 22, 144, 75 -STYLE WS_POPUP -BEGIN - LTEXT "", -1,-2,-2,1,1 //necessary for __WATCOMC__ -END - -////////////////////////////////////////////////////////////////////////////// -// -// This is the MDI Window menu -// - -wxWindowMenu MENU DISCARDABLE -BEGIN - POPUP "&Window" - BEGIN - MENUITEM "&Cascade", 4002 - MENUITEM "&Tile", 4001 - MENUITEM "&Arrange Icons", 4003 - MENUITEM "&Next", 4004 - END -END - -////////////////////////////////////////////////////////////////////////////// -// -// Standard wxWindows Cursors -// - -#ifdef __SALFORDC__ -WXCURSOR_HAND CURSOR DISCARDABLE WXINCDIR"wx/msw/hand.cur" -WXCURSOR_BULLSEYE CURSOR DISCARDABLE WXINCDIR"wx/msw/bullseye.cur" -WXCURSOR_PENCIL CURSOR DISCARDABLE WXINCDIR"wx/msw/pencil.cur" -WXCURSOR_MAGNIFIER CURSOR DISCARDABLE WXINCDIR"wx/msw/magnif1.cur" -WXCURSOR_NO_ENTRY CURSOR DISCARDABLE WXINCDIR"wx/msw/noentry.cur" -WXCURSOR_SIZING CURSOR DISCARDABLE WXINCDIR"wx/msw/size.cur" -WXCURSOR_ROLLER CURSOR DISCARDABLE WXINCDIR"wx/msw/roller.cur" -WXCURSOR_WATCH CURSOR DISCARDABLE WXINCDIR"wx/msw/watch1.cur" -WXCURSOR_PBRUSH CURSOR DISCARDABLE WXINCDIR"wx/msw/pbrush.cur" -WXCURSOR_PLEFT CURSOR DISCARDABLE WXINCDIR"wx/msw/pntleft.cur" -WXCURSOR_PRIGHT CURSOR DISCARDABLE WXINCDIR"wx/msw/pntright.cur" -WXCURSOR_QARROW CURSOR DISCARDABLE WXINCDIR"wx/msw/query.cur" -WXCURSOR_BLANK CURSOR DISCARDABLE WXINCDIR"wx/msw/blank.cur" -#else -WXCURSOR_HAND CURSOR DISCARDABLE "wx/msw/hand.cur" -WXCURSOR_BULLSEYE CURSOR DISCARDABLE "wx/msw/bullseye.cur" -WXCURSOR_PENCIL CURSOR DISCARDABLE "wx/msw/pencil.cur" -WXCURSOR_MAGNIFIER CURSOR DISCARDABLE "wx/msw/magnif1.cur" -WXCURSOR_NO_ENTRY CURSOR DISCARDABLE "wx/msw/noentry.cur" -WXCURSOR_SIZING CURSOR DISCARDABLE "wx/msw/size.cur" -WXCURSOR_ROLLER CURSOR DISCARDABLE "wx/msw/roller.cur" -WXCURSOR_WATCH CURSOR DISCARDABLE "wx/msw/watch1.cur" -WXCURSOR_PBRUSH CURSOR DISCARDABLE "wx/msw/pbrush.cur" -WXCURSOR_PLEFT CURSOR DISCARDABLE "wx/msw/pntleft.cur" -WXCURSOR_PRIGHT CURSOR DISCARDABLE "wx/msw/pntright.cur" -WXCURSOR_QARROW CURSOR DISCARDABLE "wx/msw/query.cur" -WXCURSOR_BLANK CURSOR DISCARDABLE "wx/msw/blank.cur" -#endif - -////////////////////////////////////////////////////////////////////////////// -// -// Default Icons -// - -//wxDEFAULT_FRAME ICON "wx/msw/std.ico" -//wxDEFAULT_MDIPARENTFRAME ICON "wx/msw/mdi.ico" -//wxDEFAULT_MDICHILDFRAME ICON "wx/msw/child.ico" - -////////////////////////////////////////////////////////////////////////////// -// -// Bitmaps -// - -#ifdef __SALFORDC__ -wxDISABLE_BUTTON_BITMAP BITMAP WXINCDIR"wx/msw/disable.bmp" -#else -wxDISABLE_BUTTON_BITMAP BITMAP "wx/msw/disable.bmp" -#endif - diff --git a/include/wx/msw/xpmhand.h b/include/wx/msw/xpmhand.h deleted file mode 100644 index 2289cd1995..0000000000 --- a/include/wx/msw/xpmhand.h +++ /dev/null @@ -1,51 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: xpmhand.h -// Purpose: XPM bitmap handler -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma interface "xpmhand.h" -#endif - -#ifndef _WX_XPMHAND_H_ -#define _WX_XPMHAND_H_ - -class WXDLLEXPORT wxXPMFileHandler: public wxBitmapHandler -{ - DECLARE_DYNAMIC_CLASS(wxXPMFileHandler) -public: - inline wxXPMFileHandler(void) - { - m_name = "XPM bitmap file"; - m_extension = "xpm"; - m_type = wxBITMAP_TYPE_XPM; - }; - - virtual bool LoadFile(wxBitmap *bitmap, const wxString& name, long flags, - int desiredWidth = -1, int desiredHeight = -1); - virtual bool SaveFile(wxBitmap *bitmap, const wxString& name, int type, const wxPalette *palette = NULL); -}; - -class WXDLLEXPORT wxXPMDataHandler: public wxBitmapHandler -{ - DECLARE_DYNAMIC_CLASS(wxXPMDataHandler) -public: - inline wxXPMDataHandler(void) - { - m_name = "XPM bitmap data"; - m_extension = "xpm"; - m_type = wxBITMAP_TYPE_XPM_DATA; - }; - - virtual bool Create(wxBitmap *bitmap, void *data, long flags, int width, int height, int depth = 1); -}; - -#endif - // _WX_XPMHAND_H_ - diff --git a/include/wx/notebook.h b/include/wx/notebook.h deleted file mode 100644 index 9d254fd754..0000000000 --- a/include/wx/notebook.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef _WX_NOTEBOOK_H_BASE_ -#define _WX_NOTEBOOK_H_BASE_ - -#if defined(__WXMSW__) -#ifdef __WIN16__ - #include "wx/generic/notebook.h" -#else - #include "wx/msw/notebook.h" -#endif -#elif defined(__WXMOTIF__) - #include "wx/generic/notebook.h" -#elif defined(__WXGTK__) - #include "wx/gtk/notebook.h" -#elif defined(__WXQT__) - #include "wx/qt/notebook.h" -#elif defined(__WXMAC__) - #include "wx/mac/notebook.h" -#elif defined(__WXSTUBS__) - #include "wx/stubs/notebook.h" -#endif - -#endif - // _WX_NOTEBOOK_H_BASE_ diff --git a/include/wx/object.h b/include/wx/object.h deleted file mode 100644 index b914b190dc..0000000000 --- a/include/wx/object.h +++ /dev/null @@ -1,282 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: object.h -// Purpose: wxObject class, plus run-time type information macros -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_OBJECTH__ -#define _WX_OBJECTH__ - -#ifdef __GNUG__ -#pragma interface "object.h" -#endif - -#include "wx/defs.h" -#include "wx/memory.h" - -class WXDLLEXPORT wxObject; - -#if wxUSE_DYNAMIC_CLASSES - -// #ifdef __GNUWIN32__ -#ifdef GetClassName -#undef GetClassName -#endif -#ifdef GetClassInfo -#undef GetClassInfo -#endif -// #endif - -class WXDLLEXPORT wxClassInfo; -class WXDLLEXPORT wxInputStream; -class WXDLLEXPORT wxObjectInputStream; -class WXDLLEXPORT wxObjectOutputStream; -class WXDLLEXPORT wxHashTable; -class WXDLLEXPORT wxObject_Serialize; - -#if wxUSE_IOSTREAMH -// N.B. BC++ doesn't have istream.h, ostream.h -# include -#else -# include -# ifdef _MSC_VER - using namespace std; -# endif -#endif - -/* - * Dynamic object system declarations - */ - -typedef wxObject * (*wxObjectConstructorFn) (void); - -class WXDLLEXPORT wxClassInfo -{ - public: - wxClassInfo(char *cName, char *baseName1, char *baseName2, int sz, wxObjectConstructorFn fn); - - wxObject *CreateObject(void); - - inline char *GetClassName(void) const { return m_className; } - inline char *GetBaseClassName1(void) const { return m_baseClassName1; } - inline char *GetBaseClassName2(void) const { return m_baseClassName2; } - inline wxClassInfo* GetBaseClass1() const { return m_baseInfo1; } - inline wxClassInfo* GetBaseClass2() const { return m_baseInfo2; } - inline int GetSize(void) const { return m_objectSize; } - inline wxObjectConstructorFn GetConstructor() const { return m_objectConstructor; } - static inline wxClassInfo* GetFirst() { return sm_first; } - inline wxClassInfo* GetNext() const { return m_next; } - bool IsKindOf(wxClassInfo *info) const; - - static wxClassInfo *FindClass(char *c); - - // Initializes parent pointers and hash table for fast searching. - static void InitializeClasses(void); - - // Cleans up hash table used for fast searching. - static void CleanUpClasses(void); - -public: - char* m_className; - char* m_baseClassName1; - char* m_baseClassName2; - int m_objectSize; - wxObjectConstructorFn m_objectConstructor; - - // Pointers to base wxClassInfos: set in InitializeClasses - // called from wx_main.cc - wxClassInfo* m_baseInfo1; - wxClassInfo* m_baseInfo2; - - static wxClassInfo* sm_first; - wxClassInfo* m_next; - - static wxHashTable* sm_classTable; -}; - -WXDLLEXPORT wxObject* wxCreateDynamicObject(const char *name); - -#if wxUSE_SERIAL -WXDLLEXPORT wxObject* wxCreateStoredObject( wxInputStream& stream ); -#endif - -#define DECLARE_DYNAMIC_CLASS(name) \ - public:\ - static wxClassInfo sm_class##name;\ - wxClassInfo *GetClassInfo() const \ - { return &name::sm_class##name; } - -#define DECLARE_ABSTRACT_CLASS(name) DECLARE_DYNAMIC_CLASS(name) -#define DECLARE_CLASS(name) DECLARE_DYNAMIC_CLASS(name) - -////// -////// for concrete classes -////// - -// Single inheritance with one base class -#define IMPLEMENT_DYNAMIC_CLASS(name, basename) \ -wxObject* WXDLLEXPORT_CTORFN wxConstructorFor##name(void) \ - { return new name; }\ - wxClassInfo name::sm_class##name((char *) #name, (char *) #basename, (char *) NULL, (int) sizeof(name), (wxObjectConstructorFn) wxConstructorFor##name); - -// Multiple inheritance with two base classes -#define IMPLEMENT_DYNAMIC_CLASS2(name, basename1, basename2) \ -wxObject* WXDLLEXPORT_CTORFN wxConstructorFor##name(void) \ - { return new name; }\ - wxClassInfo name::sm_class##name((char *) #name, (char *) #basename1, (char *) #basename2, (int) sizeof(name), (wxObjectConstructorFn) wxConstructorFor##name); - -////// -////// for abstract classes -////// - -// Single inheritance with one base class -#define IMPLEMENT_ABSTRACT_CLASS(name, basename) \ - wxClassInfo name::sm_class##name((char *) #name, (char *) #basename, \ - (char *) NULL, (int) sizeof(name), (wxObjectConstructorFn) NULL); - -// Multiple inheritance with two base classes -#define IMPLEMENT_ABSTRACT_CLASS2(name, basename1, basename2) \ - wxClassInfo name::sm_class##name((char *) #name, (char *) #basename1, (char *) #basename2, (int) sizeof(name), (wxObjectConstructorFn) NULL); - -#define IMPLEMENT_CLASS IMPLEMENT_ABSTRACT_CLASS -#define IMPLEMENT_CLASS2 IMPLEMENT_ABSTRACT_CLASS2 - -#define CLASSINFO(name) (&name::sm_class##name) - -#else - -// No dynamic class system: so stub out the macros -#define DECLARE_DYNAMIC_CLASS(name) -#define DECLARE_ABSTRACT_CLASS(name) -#define DECLARE_CLASS(name) -#define IMPLEMENT_DYNAMIC_CLASS(name, basename) -#define IMPLEMENT_DYNAMIC_CLASS2(name, basename1, basename2) -#define IMPLEMENT_ABSTRACT_CLASS(name, basename) -#define IMPLEMENT_ABSTRACT_CLASS2(name, basename1, basename2) -#define IMPLEMENT_CLASS IMPLEMENT_ABSTRACT_CLASS -#define IMPLEMENT_CLASS2 IMPLEMENT_ABSTRACT_CLASS2 - -#endif - -#define wxIS_KIND_OF(obj, className) obj->IsKindOf(&className::sm_class##className) - -// Just seems a bit nicer-looking (pretend it's not a macro) -#define wxIsKindOf(obj, className) obj->IsKindOf(&className::sm_class##className) - -// Unfortunately Borland seems to need this include. -#ifdef __BORLANDC__ -#if wxUSE_IOSTREAMH -#include -#else -#include -#endif -#endif - -class WXDLLEXPORT wxObjectRefData; - -class WXDLLEXPORT wxObject -{ - public: - - // This is equivalent to using the macro DECLARE_ABSTRACT_CLASS - static wxClassInfo sm_classwxObject; - - wxObject(void); - virtual ~wxObject(void); - - virtual wxClassInfo *GetClassInfo(void) const { return &sm_classwxObject; } - - bool IsKindOf(wxClassInfo *info) const; - -#if defined(__WXDEBUG__) && wxUSE_MEMORY_TRACING - void * operator new (size_t size, char * fileName = NULL, int lineNum = 0); - void operator delete (void * buf); - -// VC++ 6.0 -#if _MSC_VER >= 1200 - void operator delete(void *buf, char*, int); -#endif - - // Cause problems for VC++ -// #ifndef _MSC_VER -#if !defined(_MSC_VER) && wxUSE_ARRAY_MEMORY_OPERATORS - void * operator new[] (size_t size, char * fileName = NULL, int lineNum = 0); - void operator delete[] (void * buf); -#endif - -/* -#ifdef __MWERKS__ - void * operator new[] (size_t size, char * fileName , int lineNum = 0); - void operator delete[] (void * buf); -#endif -*/ - -#endif - -#if defined(__WXDEBUG__) || wxUSE_DEBUG_CONTEXT - virtual void Dump(ostream& str); -#endif - -#if wxUSE_SERIAL - virtual void StoreObject( wxObjectOutputStream &stream ); - virtual void LoadObject( wxObjectInputStream &stream ); -#endif - - // make a 'clone' of the object - void Ref(const wxObject& clone); - - // destroy a reference - void UnRef(void); - - inline wxObjectRefData *GetRefData(void) const { return m_refData; } - inline void SetRefData(wxObjectRefData *data) { m_refData = data; } - -protected: - wxObjectRefData* m_refData; -#if wxUSE_SERIAL - wxObject_Serialize* m_serialObj; -#endif -}; - -/* - * wxObjectData - */ - -class WXDLLEXPORT wxObjectRefData { - - friend class wxObject; - -public: - wxObjectRefData(void); - virtual ~wxObjectRefData(void); - - inline int GetRefCount(void) const { return m_count; } -private: - int m_count; -}; - -#ifdef __WXDEBUG__ -#ifndef WXDEBUG_NEW -#define WXDEBUG_NEW new(__FILE__,__LINE__) -#endif -#else -#define WXDEBUG_NEW new -#endif - -// Redefine new to be the debugging version. This doesn't -// work with all compilers, in which case you need to -// use WXDEBUG_NEW explicitly if you wish to use the debugging version. - -#if defined(__WXDEBUG__) && wxUSE_GLOBAL_MEMORY_OPERATORS && wxUSE_DEBUG_NEW_ALWAYS -#define new new(__FILE__,__LINE__) -#endif - -#endif - // _WX_OBJECTH__ - - diff --git a/include/wx/objstrm.h b/include/wx/objstrm.h deleted file mode 100644 index 699492671c..0000000000 --- a/include/wx/objstrm.h +++ /dev/null @@ -1,83 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: objstrm.h -// Purpose: wxObjectStream classes -// Author: Guilhem Lavaux -// Modified by: -// Created: 16/07/98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Guilhem Lavaux -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// -#ifndef _WX_WXOBJSTRM_H__ -#define _WX_WXOBJSTRM_H__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/string.h" -#include "wx/stream.h" - -class wxObjectStreamInfo : public wxObject { - public: - wxString object_name; - int n_children, children_removed; - wxList children; - wxObjectStreamInfo *parent; - wxObject *object; - bool duplicate, recall; -}; - -class wxObjectOutputStream : public wxFilterOutputStream { - public: - wxObjectOutputStream(wxOutputStream& s); - - void AddChild(wxObject *obj); - bool SaveObject(wxObject& obj); - - bool FirstStage() const { return m_stage == 0; } - - wxString GetObjectName(wxObject *obj); - - protected: - void WriteObjectDef(wxObjectStreamInfo& info); - void ProcessObjectDef(wxObjectStreamInfo *info); - void ProcessObjectData(wxObjectStreamInfo *info); - - protected: - int m_stage; - bool m_saving; - wxObjectStreamInfo *m_current_info; - wxList m_saved_objs; -}; - -class wxObjectInputStream : public wxFilterInputStream { - public: - wxObjectInputStream(wxInputStream& s); - - bool SecondCall() const { return m_secondcall; } - void Recall(bool on = TRUE) { m_current_info->recall = on; } - - wxObject *GetChild(int no) const; - wxObject *GetChild(); - int NumberOfChildren() const { return m_current_info->n_children; } - void RemoveChildren(int nb); - wxObject *GetParent() const; - wxObject *LoadObject(); - - wxObject *SolveName(const wxString& objName) const; - - protected: - bool ReadObjectDef(wxObjectStreamInfo *info); - wxObjectStreamInfo *ProcessObjectDef(wxObjectStreamInfo *info); - void ProcessObjectData(wxObjectStreamInfo *info); - - protected: - bool m_secondcall; - wxObjectStreamInfo *m_current_info; - wxList m_solver; -}; - -#endif diff --git a/include/wx/odbc.h b/include/wx/odbc.h deleted file mode 100644 index 90fcbaea0c..0000000000 --- a/include/wx/odbc.h +++ /dev/null @@ -1,339 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: odbc.h -// Purpose: ODBC classes -// Author: Olaf Klein, Patrick Halke, Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#include "wx/setup.h" - -#if wxUSE_ODBC - -#ifdef __GNUG__ -#pragma interface "odbc.h" -#endif - -#ifndef _WX_ODBCH__ -#define _WX_ODBCH__ - -#ifdef __WXMSW__ -#include -#endif - - -#ifdef __WXGTK__ -extern "C" { -#include <../iodbc/isql.h> -#include <../iodbc/isqlext.h> -#include <../iodbc/odbc_funcs.h> -#include <../iodbc/odbc_types.h> -typedef float SFLOAT; -typedef double SDOUBLE; -#define ULONG UDWORD -} -#else -#include -#endif - -#include "wx/defs.h" -#include "wx/list.h" -#include "wx/string.h" - -typedef RETCODE wxRETCODE; - -// Recordset open types -#define wxOPEN_TYPE_DYNASET 1 -#define wxOPEN_TYPE_SNAPSHOT 2 -#define wxOPEN_TYPE_FORWARD_ONLY 3 - -// Recordset open options -#define wxOPTION_DEFAULT 1 -#define wxOPTION_APPEND_ONLY 2 -#define wxOPTION_READ_ONLY 3 - -// Data types -class WXDLLEXPORT wxRecordSet; - -class WXDLLEXPORT wxDatabase: public wxObject -{ - // JACS - DECLARE_DYNAMIC_CLASS(wxDatabase) - private: - protected: - static HENV hEnv; - static int refCount; - - HDBC hDBC; - char* username; - char* password; - char* datasource; - char* dbname; - char* connectstring; - bool isOpen; - - // error-handling variables - wxRETCODE retcode; - char sqlstate[SQL_SQLSTATE_SIZE+1]; // error class and subclass - char errmsg[SQL_MAX_MESSAGE_LENGTH]; // error message - long nat_err; // error number by ODBC driver - bool err_occured; - - wxList recordSets; // Record sets: Added by JACS - - public: - wxDatabase(void); - ~wxDatabase(void); - - bool Open(char *, bool exclusive =FALSE, bool readOnly =TRUE, char *username ="ODBC", char *password =""); - bool Close(void); - - // Cleanup operations, added by JACS - void DeleteRecordSets(void); // Called when the database is deleted - void ResetRecordSets(void); // Required if the database is closed - inline wxList& GetRecordSets(void) { return recordSets; } - - inline char *GetUsername(void) { return username; } - inline char *GetPassword(void) { return password; } - inline char *GetDataSource(void) { return datasource; } - inline bool IsOpen(void) { return isOpen; } - inline wxRETCODE GetErrorCode(void) { return retcode; } - inline HDBC GetHDBC(void) { return hDBC; } - inline HENV GetHENV(void) { return hEnv; } - - void SetPassword(char *s); - void SetUsername(char *s); - void SetDataSource(char *s); - - // Database attributes - char *GetDatabaseName(void); - bool CanUpdate(void); - bool CanTransact(void); - bool InWaitForDataSource(void); - void SetLoginTimeout(long seconds); - void SetQueryTimeout(long seconds); - void SetSynchronousMode(bool synchronous); - - // Database operations - bool BeginTrans(void); - bool CommitTrans(void); - bool RollbackTrans(void); - void Cancel(void); - - // Error handling - bool ErrorOccured(void); - char* GetErrorMessage(void); - long GetErrorNumber(void); - char* GetErrorClass(void); - inline void ErrorSnapshot(HSTMT =SQL_NULL_HSTMT); - - // Overridables - virtual void OnSetOptions(wxRecordSet *recordSet); - virtual void OnWaitForDataSource(bool stillExecuting); - - bool GetInfo(long infoType, long *buf); - bool GetInfo(long infoType, char *buf, int bufSize = -1); - - // implementation = TRUE means get the DLL version. - // Otherwise, returns header file version. - wxString GetODBCVersionString(bool implementation = TRUE); - float GetODBCVersionFloat(bool implementation = TRUE); -}; - -// Represents a data row -class WXDLLEXPORT wxQueryField: public wxObject -{ - // JACS - DECLARE_DYNAMIC_CLASS(wxQueryField) - private: - void *data; - short type; - long size; - bool dirty; - - bool AllocData(void); - - public: - wxQueryField(void); - ~wxQueryField(void); - - bool SetData(void*, long); - void SetDirty(bool =TRUE); - void ClearData(void); - void SetType(short); - void SetSize(long); - - void* GetData(void); - short GetType(void); - long GetSize(void); - - bool IsDirty(void); -}; - -// Represents a column description -class WXDLLEXPORT wxQueryCol: public wxObject -{ - // JACS - DECLARE_DYNAMIC_CLASS(wxQueryCol) - private: - short type; - char *name; - bool nullable; - long varsize; - void* var; - - public: - wxList fields; - - wxQueryCol(void); - ~wxQueryCol(void); - - void* BindVar(void*, long); - void FillVar(int); - void AppendField(void*, long); - bool SetData(int, void*, long); - void SetName(char*); - void SetNullable(bool); - void SetFieldDirty(int, bool =TRUE); - void SetType(short); - - char* GetName(void); - short GetType(void); - bool IsNullable(void); - void* GetData(int); - long GetSize(int); - - bool IsFieldDirty(int); -}; - -class WXDLLEXPORT wxRecordSet: public wxObject -{ - // JACS - DECLARE_DYNAMIC_CLASS(wxRecordSet) - private: - int cursor; - int type; - int options; - - protected: - HSTMT hStmt; - int nFields; - int nParams; - int nRecords; - short nCols; - char *recordFilter; - char *sortString; - char *defaultSQL; - char* tablename; - wxDatabase *parentdb; - wxRETCODE retcode; - wxList cols; - wxList fetchbuf; - - void FillVars(int); - - public: - // JACS gave parent a default value for benefit of IMPLEMENT_DYNAMIC_CLASS - wxRecordSet(wxDatabase *parent = NULL, int =wxOPEN_TYPE_DYNASET, int =wxOPTION_DEFAULT); - ~wxRecordSet(void); - - // My own, lower-level functions. - bool BeginQuery(int openType, char *sql = NULL, int options = wxOPTION_DEFAULT); - bool EndQuery(void); - bool Query(char* columns, char* table =NULL, char *filter =NULL); - - // Attributes - inline int GetNumberFields(void) { return nFields; } - inline int GetNumberParams(void) { return nParams; } - long GetNumberRecords(void); - long GetNumberCols(void); - inline char *GetFilter(void) { return recordFilter; } - inline char *GetSortString(void) { return sortString; } - inline wxDatabase *GetDatabase(void) { return parentdb; } - inline wxRETCODE GetErrorCode(void) { return retcode; } - bool CanAppend(void); - bool CanRestart(void); - bool CanScroll(void); - bool CanTransact(void); - bool CanUpdate(void); - long GetCurrentRecord(void); - bool RecordCountFinal(void); - bool GetResultSet(void); - bool ExecuteSQL(char*); - bool GetTables(void); - bool GetColumns(char* =NULL); - bool GetPrimaryKeys(char* =NULL); - bool GetForeignKeys(char* , char * ); - char *GetTableName(void); - void SetTableName(char*); - char *GetSQL(void); - bool IsOpen(void); - bool IsBOF(void); - bool IsEOF(void); - bool IsDeleted(void); - - bool GetFieldData(int colPos, int dataType, void *dataPtr); - bool GetFieldData(const char*, int dataType, void *dataPtr); - void* GetFieldDataPtr(int, int); - void* GetFieldDataPtr(const char*, int); - char* GetColName(int); - short GetColType(int); - short GetColType(const char*); - void* BindVar(int, void*, long); - void* BindVar(const char*, void*, long); - - void SetType(int); - int GetType(void); - void SetOptions(int); - int GetOptions(void); - - // Update operations - void AddNew(void); - bool Delete(void); - void Edit(void); - bool Update(void); - - // Record navigation - virtual bool Move(long rows); - virtual bool MoveFirst(void); - virtual bool MoveLast(void); - virtual bool MoveNext(void); - virtual bool MovePrev(void); - virtual bool GoTo(long); - - // Others - bool GetDataSources(void); - - // Associate a column name/position with a data location - // bool BindColumn(int colPos, int dataType, void *dataPtr); - - void Cancel(void); - bool IsFieldDirty(int); - bool IsFieldDirty(const char*); - bool IsFieldNull(int); - bool IsFieldNull(const char*); - bool IsColNullable(int); - bool IsColNullable(const char*); - virtual bool Requery(void); - virtual void SetFieldDirty(int, bool dirty = TRUE); - virtual void SetFieldDirty(const char*, bool dirty = TRUE); - void SetFieldNull(void *p, bool isNull = TRUE); - - // Overridables - virtual char *GetDefaultConnect(void); - virtual char *GetDefaultSQL(void); - - // Internal - - // Build SQL query from column specification - bool ConstructDefaultSQL(void); - void SetDefaultSQL(char *s); - bool ReleaseHandle(void); // Added JACS -}; - -#endif - -#endif // wxUSE_ODBC diff --git a/include/wx/ownerdrw.h b/include/wx/ownerdrw.h deleted file mode 100644 index 5a742f3dda..0000000000 --- a/include/wx/ownerdrw.h +++ /dev/null @@ -1,137 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: ownerdrw.h -// Purpose: interface for owner-drawn GUI elements -// Author: Vadim Zeitlin -// Modified by: -// Created: 11.11.97 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows license -/////////////////////////////////////////////////////////////////////////////// - -#ifndef _OWNERDRW_H -#define _OWNERDRW_H - -#ifdef __GNUG__ -#pragma interface "ownerdrw.h" -#endif - -// No, don't do this: BC++ 5 complains that size_t already been defined. -// typedef unsigned int size_t; -#include - -// ---------------------------------------------------------------------------- -// wxOwnerDrawn - a mix-in base class, derive from it to implement owner-drawn -// behaviour -// -// wxOwnerDrawn supports drawing of an item with non standard font, color and -// also supports 3 bitmaps: either a checked/unchecked bitmap for a checkable -// element or one unchangeable bitmap otherwise. -// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxOwnerDrawn -{ -public: - // ctor & dtor - wxOwnerDrawn(const wxString& str = "", - bool bCheckable = FALSE, - bool bMenuItem = FALSE); // @@ kludge for colors - virtual ~wxOwnerDrawn() { } - - // fix appearance - inline void SetFont(const wxFont& font) - { m_font = font; m_bOwnerDrawn = TRUE; } - - inline wxFont& GetFont() const { return (wxFont &)m_font; } - - inline void SetTextColour(const wxColour& colText) - { m_colText = colText; m_bOwnerDrawn = TRUE; } - - inline wxColour& GetTextColour() const { return (wxColour&) m_colText; } - - inline void SetBackgroundColour(const wxColour& colBack) - { m_colBack = colBack; m_bOwnerDrawn = TRUE; } - - inline wxColour& GetBackgroundColour() const - { return (wxColour&) m_colBack ; } - - inline void SetBitmaps(const wxBitmap& bmpChecked, - const wxBitmap& bmpUnchecked = wxNullBitmap) - { m_bmpChecked = bmpChecked; - m_bmpUnchecked = bmpUnchecked; - m_bOwnerDrawn = TRUE; } - - inline const wxBitmap& GetBitmap(bool bChecked = TRUE) const - { return (bChecked ? m_bmpChecked : m_bmpUnchecked); } - - // the height of the menu checkmark (or bitmap) is determined by the font - // for the current item, but the width should be always the same (for the - // items to be aligned), so by default it's taken to be the same as for - // the last item (and default width for the first one). - // - // NB: default is too small for bitmaps, but ok for checkmarks. - inline void SetMarginWidth(int nWidth) - { ms_nLastMarginWidth = m_nMarginWidth = (size_t) nWidth; - if ( ((size_t) nWidth) != ms_nDefaultMarginWidth ) m_bOwnerDrawn = TRUE; } - - inline int GetMarginWidth() const { return (int) m_nMarginWidth; } - inline static int GetDefaultMarginWidth() { return (int) ms_nDefaultMarginWidth; } - - // accessors - void SetName(const wxString& strName) { m_strName = strName; } - const wxString& GetName() const { return m_strName; } - bool IsCheckable() const { return m_bCheckable; } - - // this function might seem strange, but if it returns FALSE it means that - // no non-standard attribute are set, so there is no need for this control - // to be owner-drawn. Moreover, you can force owner-drawn to FALSE if you - // want to change, say, the color for the item but only if it is owner-drawn - // (see wxMenuItem::wxMenuItem for example) - inline bool IsOwnerDrawn() const { return m_bOwnerDrawn; } - inline void ResetOwnerDrawn() { m_bOwnerDrawn = FALSE; } - -public: - // constants used in OnDrawItem - // (they have the same values as corresponding Win32 constants) - enum wxODAction - { - wxODDrawAll = 0x0001, // redraw entire control - wxODSelectChanged = 0x0002, // selection changed (see Status.Select) - wxODFocusChanged = 0x0004, // keyboard focus changed (see Status.Focus) - }; - - enum wxODStatus - { - wxODSelected = 0x0001, // control is currently selected - wxODGrayed = 0x0002, // item is to be grayed - wxODDisabled = 0x0004, // item is to be drawn as disabled - wxODChecked = 0x0008, // item is to be checked - wxODHasFocus = 0x0010, // item has the keyboard focus - wxODDefault = 0x0020, // item is the default item - }; - - // virtual functions to implement drawing (return TRUE if processed) - virtual bool OnMeasureItem(size_t *pwidth, size_t *pheight); - virtual bool OnDrawItem(wxDC& dc, const wxRect& rc, wxODAction act, wxODStatus stat); - -protected: - wxString m_strName; // label for a manu item - -private: - static size_t ms_nDefaultMarginWidth; // menu check mark width - static size_t ms_nLastMarginWidth; // handy for aligning all items - - bool m_bCheckable, // used only for menu or check listbox items - m_bOwnerDrawn; // true if something is non standard - - wxFont m_font; // font to use for drawing - wxColour m_colText, // color ----"---"---"---- - m_colBack; // background color - wxBitmap m_bmpChecked, // bitmap to put near the item - m_bmpUnchecked; // (checked is used also for 'uncheckable' items) - - size_t m_nHeight, // font height - m_nMarginWidth; // space occupied by bitmap to the left of the item -}; - -#endif - // _OWNERDRW_H diff --git a/include/wx/palette.h b/include/wx/palette.h deleted file mode 100644 index 9702d374a1..0000000000 --- a/include/wx/palette.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef _WX_PALETTE_H_BASE_ -#define _WX_PALETTE_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/palette.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/palette.h" -#elif defined(__WXGTK__) -#include "wx/gtk/palette.h" -#elif defined(__WXQT__) -#include "wx/qt/palette.h" -#elif defined(__WXMAC__) -#include "wx/mac/palette.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/palette.h" -#endif - -#endif - // _WX_PALETTE_H_BASE_ diff --git a/include/wx/panel.h b/include/wx/panel.h deleted file mode 100644 index 0bfa7daaca..0000000000 --- a/include/wx/panel.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef _WX_PANEL_H_BASE_ -#define _WX_PANEL_H_BASE_ - -#include "wx/generic/panelg.h" - -#endif - // _WX_PANELH_BASE_ diff --git a/include/wx/pen.h b/include/wx/pen.h deleted file mode 100644 index d132d8a7c9..0000000000 --- a/include/wx/pen.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef _WX_PEN_H_BASE_ -#define _WX_PEN_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/pen.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/pen.h" -#elif defined(__WXGTK__) -#include "wx/gtk/pen.h" -#elif defined(__WXQT__) -#include "wx/qt/pen.h" -#elif defined(__WXMAC__) -#include "wx/mac/pen.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/pen.h" -#endif - -#endif - // _WX_PEN_H_BASE_ diff --git a/include/wx/pnghand.h b/include/wx/pnghand.h deleted file mode 100644 index 405e234ba5..0000000000 --- a/include/wx/pnghand.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef _WX_PNGHAND_H_BASE_ -#define _WX_PNGHAND_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/pnghand.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/pnghand.h" -#elif defined(__WXGTK__) -#include "wx/gtk/pnghand.h" -#elif defined(__WXMAC__) -#include "wx/mac/pnghand.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/pnghand.h" -#endif - -#endif - // _WX_PNGHAND_H_BASE_ diff --git a/include/wx/print.h b/include/wx/print.h deleted file mode 100644 index 5d7c7a4f60..0000000000 --- a/include/wx/print.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef _WX_PRINT_H_BASE_ -#define _WX_PRINT_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/printwin.h" - -#ifndef wxPrinter -#define wxPrinter wxWindowsPrinter -#endif -#ifndef wxPrintPreview -#define wxPrintPreview wxWindowsPrintPreview -#endif - -#else -#include "wx/generic/printps.h" - -#ifndef wxPrinter -#define wxPrinter wxPostScriptPrinter -#define sm_classwxPrinter sm_classwxPostScriptPrinter -#endif -#ifndef wxPrintPreview -#define wxPrintPreview wxPostScriptPrintPreview -#define sm_classwxPrintPreview sm_classwxPostScriptPrintPreview -#endif - -#endif - - -#endif - // _WX_PRINT_H_BASE_ diff --git a/include/wx/printdlg.h b/include/wx/printdlg.h deleted file mode 100644 index 59d382735e..0000000000 --- a/include/wx/printdlg.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef _WX_PRINTDLG_H_BASE_ -#define _WX_PRINTDLG_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/printdlg.h" -#elif defined(__WXMOTIF__) -#include "wx/generic/prntdlgg.h" -#elif defined(__WXGTK__) -#include "wx/generic/prntdlgg.h" -#elif defined(__WXQT__) -#include "wx/generic/prntdlgg.h" -#elif defined(__WXMAC__) -#include "wx/mac/printdlg.h" -#elif defined(__WXSTUBS__) -#include "wx/generic/prntdlgg.h" -#endif - -#if !defined(__WXMSW__) && !defined(__WXMAC__) -#define wxPrintDialog wxGenericPrintDialog -#define sm_classwxPrintDialog sm_classwxGenericPrintDialog - -#define wxPrintSetupDialog wxGenericPrintSetupDialog -#define sm_classwxPrintSetupDialog sm_classwxGenericPrintSetupDialog - -#define wxPageSetupDialog wxGenericPageSetupDialog -#define sm_classwxPageSetupDialog sm_classwxGenericPageSetupDialog -#endif - -#endif - // _WX_PRINTDLG_H_BASE_ diff --git a/include/wx/prntbase.h b/include/wx/prntbase.h deleted file mode 100644 index 9bd3aeb0c1..0000000000 --- a/include/wx/prntbase.h +++ /dev/null @@ -1,342 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: prntbase.h -// Purpose: Base classes for printing framework -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_PRNTBASEH__ -#define _WX_PRNTBASEH__ - -#ifdef __GNUG__ -#pragma interface "prntbase.h" -#endif - -#include "wx/defs.h" -#include "wx/event.h" -#include "wx/cmndata.h" -#include "wx/panel.h" -#include "wx/scrolwin.h" -#include "wx/dialog.h" -#include "wx/frame.h" - -class WXDLLEXPORT wxDC; -class WXDLLEXPORT wxButton; -class WXDLLEXPORT wxChoice; -class WXDLLEXPORT wxPrintout; -class WXDLLEXPORT wxPrinterBase; -class WXDLLEXPORT wxPrintDialog; -class WXDLLEXPORT wxPrintPreviewBase; -class WXDLLEXPORT wxPreviewCanvas; -class WXDLLEXPORT wxPreviewControlBar; -class WXDLLEXPORT wxPreviewFrame; - -/* - * Represents the printer: manages printing a wxPrintout object - */ - -class WXDLLEXPORT wxPrinterBase: public wxObject -{ - DECLARE_CLASS(wxPrinterBase) - -public: - wxPrinterBase(wxPrintData *data = (wxPrintData *) NULL); - ~wxPrinterBase(); - - virtual wxWindow *CreateAbortWindow(wxWindow *parent, wxPrintout *printout); - virtual void ReportError(wxWindow *parent, wxPrintout *printout, char *message); - inline wxPrintData& GetPrintData() { return m_printData; }; - inline bool GetAbort() { return sm_abortIt; } - - /////////////////////////////////////////////////////////////////////////// - // OVERRIDES - - virtual bool Setup(wxWindow *parent) = 0; - virtual bool Print(wxWindow *parent, wxPrintout *printout, bool prompt = TRUE) = 0; - virtual bool PrintDialog(wxWindow *parent) = 0; - -protected: - wxPrintData m_printData; - wxPrintout* m_currentPrintout; -public: - static wxWindow* sm_abortWindow; - static bool sm_abortIt; - -}; - -/* - * wxPrintout - * Represents an object via which a document may be printed. - * The programmer derives from this, overrides (at least) OnPrintPage, - * and passes it to a wxPrinter object for printing, or a wxPrintPreview - * object for previewing. - */ - -class WXDLLEXPORT wxPrintout: public wxObject -{ - DECLARE_ABSTRACT_CLASS(wxPrintout) - -public: - wxPrintout(const wxString& title = "Printout"); - ~wxPrintout(); - - virtual bool OnBeginDocument(int startPage, int endPage); - virtual void OnEndDocument(); - virtual void OnBeginPrinting(); - virtual void OnEndPrinting(); - - // Guaranteed to be before any other functions are called - inline virtual void OnPreparePrinting() { } - - virtual bool HasPage(int page); - virtual bool OnPrintPage(int page) = 0; - virtual void GetPageInfo(int *minPage, int *maxPage, int *pageFrom, int *pageTo); - - inline virtual wxString GetTitle() { return m_printoutTitle; } - - inline wxDC *GetDC() { return m_printoutDC; } - inline void SetDC(wxDC *dc) { m_printoutDC = dc; } - inline void SetPageSizePixels(int w, int h) { m_pageWidthPixels = w; m_pageHeightPixels = h; } - inline void GetPageSizePixels(int *w, int *h) { *w = m_pageWidthPixels; *h = m_pageHeightPixels; } - inline void SetPageSizeMM(int w, int h) { m_pageWidthMM = w; m_pageHeightMM = h; } - inline void GetPageSizeMM(int *w, int *h) { *w = m_pageWidthMM; *h = m_pageHeightMM; } - - inline void SetPPIScreen(int x, int y) { m_PPIScreenX = x; m_PPIScreenY = y; } - inline void GetPPIScreen(int *x, int *y) { *x = m_PPIScreenX; *y = m_PPIScreenY; } - inline void SetPPIPrinter(int x, int y) { m_PPIPrinterX = x; m_PPIPrinterY = y; } - inline void GetPPIPrinter(int *x, int *y) { *x = m_PPIPrinterX; *y = m_PPIPrinterY; } - - inline virtual bool IsPreview() { return m_isPreview; } - - inline virtual void SetIsPreview(bool p) { m_isPreview = p; } - -private: - wxString m_printoutTitle; - wxDC* m_printoutDC; - - int m_pageWidthPixels; - int m_pageHeightPixels; - - int m_pageWidthMM; - int m_pageHeightMM; - - int m_PPIScreenX; - int m_PPIScreenY; - int m_PPIPrinterX; - int m_PPIPrinterY; - - bool m_isPreview; -}; - -/* - * wxPreviewCanvas - * Canvas upon which a preview is drawn. - */ - -class WXDLLEXPORT wxPreviewCanvas: public wxScrolledWindow -{ - DECLARE_CLASS(wxPreviewCanvas) - -public: - wxPreviewCanvas(wxPrintPreviewBase *preview, wxWindow *parent, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = 0, const wxString& name = "canvas"); - ~wxPreviewCanvas(); - - void OnPaint(wxPaintEvent& event); - - // Responds to colour changes - void OnSysColourChanged(wxSysColourChangedEvent& event); - -private: - wxPrintPreviewBase* m_printPreview; - -DECLARE_EVENT_TABLE() -}; - -/* - * wxPreviewFrame - * Default frame for showing preview. - */ - -class WXDLLEXPORT wxPreviewFrame: public wxFrame -{ - DECLARE_CLASS(wxPreviewFrame) - -public: - wxPreviewFrame(wxPrintPreviewBase *preview, wxFrame *parent, const wxString& title = "Print Preview", - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE, const wxString& name = "frame"); - ~wxPreviewFrame(); - - bool OnClose(); - virtual void Initialize(); - virtual void CreateCanvas(); - virtual void CreateControlBar(); - -protected: - wxWindow* m_previewCanvas; - wxPreviewControlBar* m_controlBar; - wxPrintPreviewBase* m_printPreview; -}; - -/* - * wxPreviewControlBar - * A panel with buttons for controlling a print preview. - * The programmer may wish to use other means for controlling - * the print preview. - */ - -#define wxPREVIEW_PRINT 1 -#define wxPREVIEW_PREVIOUS 2 -#define wxPREVIEW_NEXT 4 -#define wxPREVIEW_ZOOM 8 - -#define wxPREVIEW_DEFAULT wxPREVIEW_PREVIOUS|wxPREVIEW_NEXT|wxPREVIEW_ZOOM - -// Ids for controls -#define wxID_PREVIEW_CLOSE 1 -#define wxID_PREVIEW_NEXT 2 -#define wxID_PREVIEW_PREVIOUS 3 -#define wxID_PREVIEW_PRINT 4 -#define wxID_PREVIEW_ZOOM 5 - -class WXDLLEXPORT wxPreviewControlBar: public wxPanel -{ - DECLARE_CLASS(wxPreviewControlBar) - -public: - wxPreviewControlBar(wxPrintPreviewBase *preview, long buttons, - wxWindow *parent, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = 0, const wxString& name = "panel"); - ~wxPreviewControlBar(); - - virtual void CreateButtons(); - virtual void SetZoomControl(int zoom); - virtual int GetZoomControl(); - inline virtual wxPrintPreviewBase *GetPrintPreview() const { return m_printPreview; } - - void OnPrint(wxCommandEvent& event); - void OnWindowClose(wxCommandEvent& event); - void OnNext(wxCommandEvent& event); - void OnPrevious(wxCommandEvent& event); - void OnZoom(wxCommandEvent& event); - void OnPaint(wxPaintEvent& event); - -protected: - wxPrintPreviewBase* m_printPreview; - wxButton* m_closeButton; - wxButton* m_nextPageButton; - wxButton* m_previousPageButton; - wxButton* m_printButton; - wxChoice* m_zoomControl; - long m_buttonFlags; - -DECLARE_EVENT_TABLE() -}; - -/* - * wxPrintPreview - * Programmer creates an object of this class to preview a wxPrintout. - */ - -class WXDLLEXPORT wxPrintPreviewBase: public wxObject -{ - DECLARE_CLASS(wxPrintPreviewBase) - -public: - wxPrintPreviewBase(wxPrintout *printout, wxPrintout *printoutForPrinting = (wxPrintout *) NULL, wxPrintData *data = (wxPrintData *) NULL); - ~wxPrintPreviewBase(); - - virtual bool SetCurrentPage(int pageNum); - inline int GetCurrentPage() const { return m_currentPage; }; - - inline void SetPrintout(wxPrintout *printout) { m_previewPrintout = printout; }; - inline wxPrintout *GetPrintout() const { return m_previewPrintout; }; - inline wxPrintout *GetPrintoutForPrinting() const { return m_printPrintout; }; - - inline void SetFrame(wxFrame *frame) { m_previewFrame = frame; }; - inline void SetCanvas(wxWindow *canvas) { m_previewCanvas = canvas; }; - - inline virtual wxFrame *GetFrame() const { return m_previewFrame; } - inline virtual wxWindow *GetCanvas() const { return m_previewCanvas; } - - // The preview canvas should call this from OnPaint - virtual bool PaintPage(wxWindow *canvas, wxDC& dc); - - // This draws a blank page onto the preview canvas - virtual bool DrawBlankPage(wxWindow *canvas, wxDC& dc); - - // This is called by wxPrintPreview to render a page into - // a wxMemoryDC. - virtual bool RenderPage(int pageNum); - - inline wxPrintData& GetPrintData() { return m_printData; } - - virtual void SetZoom(int percent); - inline int GetZoom() const { return m_currentZoom; }; - - inline int GetMaxPage() const { return m_maxPage; } - inline int GetMinPage() const { return m_minPage; } - - inline bool Ok() const { return m_isOk; } - inline void SetOk(bool ok) { m_isOk = ok; } - - /////////////////////////////////////////////////////////////////////////// - // OVERRIDES - - // If we own a wxPrintout that can be used for printing, this - // will invoke the actual printing procedure. Called - // by the wxPreviewControlBar. - virtual bool Print(bool interactive) = 0; - - // Calculate scaling that needs to be done to get roughly - // the right scaling for the screen pretending to be - // the currently selected printer. - virtual void DetermineScaling() = 0; - -protected: - wxPrintData m_printData; - wxWindow* m_previewCanvas; - wxFrame* m_previewFrame; - wxBitmap* m_previewBitmap; - wxPrintout* m_previewPrintout; - wxPrintout* m_printPrintout; - int m_currentPage; - int m_currentZoom; - float m_previewScale; - int m_topMargin; - int m_leftMargin; - int m_pageWidth; - int m_pageHeight; - int m_minPage; - int m_maxPage; - protected: - bool m_isOk; -}; - -/* - * Abort dialog - */ - -class WXDLLEXPORT wxPrintAbortDialog: public wxDialog -{ -public: - wxPrintAbortDialog(wxWindow *parent, - const wxString& title, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = 0, const wxString& name = "dialog"): - wxDialog(parent, -1, title, pos, size, style, name) - { - } - - void OnCancel(wxCommandEvent& event); - - DECLARE_EVENT_TABLE() -}; - -#endif - // _WX_PRNTBASEH__ diff --git a/include/wx/process.h b/include/wx/process.h deleted file mode 100644 index 94788268cb..0000000000 --- a/include/wx/process.h +++ /dev/null @@ -1,58 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: process.h -// Purpose: wxProcess class -// Author: Guilhem Lavaux -// Modified by: -// Created: 24/06/98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Guilhem Lavaux -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_PROCESSH__ -#define _WX_PROCESSH__ - -#ifdef __GNUG__ -#pragma interface "process.h" -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/event.h" - -class WXDLLEXPORT wxProcess: public wxEvtHandler -{ - DECLARE_DYNAMIC_CLASS(wxProcess) - public: - - wxProcess(wxEvtHandler *parent = (wxEvtHandler *) NULL, int id = -1); - virtual ~wxProcess(); - - virtual void OnTerminate(int pid); - - protected: - int m_id; -}; - -// Process Event handling - -class WXDLLEXPORT wxProcessEvent: public wxEvent -{ - DECLARE_DYNAMIC_CLASS(wxProcessEvent) - public: - - wxProcessEvent(int id = 0, int pid = -1); - - inline int GetPid() { return m_pid; } - inline void SetPid(int pid) { m_pid = pid; } - - public: - int m_pid; -}; - -typedef void (wxObject::*wxProcessEventFunction)(wxProcessEvent&); - -#define EVT_END_PROCESS(id, func) { wxEVT_END_PROCESS, id, -1, (wxObjectEvent) (wxEventFunction) (wxProcessEventFunction) & fn, NULL}, - -#endif - // _WX_PROCESSH__ diff --git a/include/wx/prop.h b/include/wx/prop.h deleted file mode 100644 index 327bd20379..0000000000 --- a/include/wx/prop.h +++ /dev/null @@ -1,338 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: prop.h -// Purpose: Property sheet classes -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_PROP_H_ -#define _WX_PROP_H_ - -#ifdef __GNUG__ -#pragma interface "prop.h" -#endif - -#include "wx/defs.h" -#include "wx/string.h" -#include "wx/hash.h" -#include "wx/dialog.h" -#include "wx/frame.h" -#include "wx/button.h" -#include "wx/listbox.h" -#include "wx/textctrl.h" -#include "wx/gdicmn.h" -#include "wx/layout.h" - -class wxWindow; -class wxProperty; -class wxPropertyValue; -class wxPropertySheet; -class wxPropertyView; -class wxPropertyValidator; -class wxPropertyValidatorRegistry; - -#define wxPROPERTY_VERSION 2.0 - -// A storable sheet of values -class WXDLLEXPORT wxPropertySheet: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxPropertySheet) - public: - wxPropertySheet(wxString name = ""); - ~wxPropertySheet(void); - - // Set the name of the sheet - inline virtual void SetName(wxString name) { m_name=name; } - inline virtual wxString GetName() { return m_name; } - // Does this sheet contain a property with this name - virtual bool HasProperty(wxString name); - - // Set property name to value - virtual bool SetProperty(const wxString name, wxPropertyValue value); - - // Remove property from sheet by name, deleting it - virtual void RemoveProperty(wxString name); - - // Get the name of the sheet - // Add a property - virtual void AddProperty(wxProperty *property); - - // Get property by name - virtual wxProperty *GetProperty(wxString name); - - // Clear all properties - virtual void Clear(void); - - virtual bool Save(ostream& str); - virtual bool Load(ostream& str); - - virtual void UpdateAllViews(wxPropertyView *thisView = NULL); - inline virtual wxList& GetProperties(void) const { return (wxList&) m_properties; } - - // Sets/clears the modified flag for each property value - virtual void SetAllModified(bool flag = TRUE); - - protected: - wxObject* m_viewedObject; - wxList m_properties; - wxPropertyView* m_propertyView; - wxString m_name; -}; - - -// Base class for property sheet views. There are currently two directly derived -// classes: wxPropertyListView, and wxPropertyFormView. -class WXDLLEXPORT wxPropertyView: public wxEvtHandler -{ - DECLARE_DYNAMIC_CLASS(wxPropertyView) - public: - wxPropertyView(long flags = 0); - ~wxPropertyView(void); - - // Associates and shows the view - virtual void ShowView(wxPropertySheet *WXUNUSED(propertySheet), wxWindow *WXUNUSED(panel)) {} - - // Update this view of the viewed object, called e.g. by - // the object itself. - virtual bool OnUpdateView(void) {return FALSE;}; - - // Override this to do something as soon as the property changed, - // if the view and validators support it. - virtual void OnPropertyChanged(wxProperty *WXUNUSED(property)) {} - - virtual void AddRegistry(wxPropertyValidatorRegistry *registry); - inline virtual wxList& GetRegistryList(void) const - { return (wxList&) m_validatorRegistryList; } - - virtual wxPropertyValidator *FindPropertyValidator(wxProperty *property); - inline virtual void SetPropertySheet(wxPropertySheet *sheet) { m_propertySheet = sheet; } - inline virtual wxPropertySheet *GetPropertySheet(void) const { return m_propertySheet; } - - virtual void OnOk(void) {}; - virtual void OnCancel(void) {}; - virtual void OnHelp(void) {}; - - inline virtual bool OnClose(void) { return FALSE; } - inline long GetFlags(void) { return m_buttonFlags; } - - protected: - long m_buttonFlags; - wxPropertySheet* m_propertySheet; - wxProperty* m_currentProperty; - wxList m_validatorRegistryList; - wxPropertyValidator* m_currentValidator; -}; - - -class WXDLLEXPORT wxPropertyValidator: public wxEvtHandler -{ - DECLARE_DYNAMIC_CLASS(wxPropertyValidator) - public: - wxPropertyValidator(long flags = 0); - ~wxPropertyValidator(void); - - inline long GetFlags(void) const { return m_validatorFlags; } - inline void SetValidatorProperty(wxProperty *prop) { m_validatorProperty = prop; } - inline wxProperty *GetValidatorProperty(void) const { return m_validatorProperty; } - - virtual bool StringToFloat (char *s, float *number); - virtual bool StringToDouble (char *s, double *number); - virtual bool StringToInt (char *s, int *number); - virtual bool StringToLong (char *s, long *number); - virtual char *FloatToString (float number); - virtual char *DoubleToString (double number); - virtual char *IntToString (int number); - virtual char *LongToString (long number); - - protected: - long m_validatorFlags; - wxProperty* m_validatorProperty; -}; - - -// extern wxPropertyValidator *wxDefaultPropertyValidator; - -class WXDLLEXPORT wxPropertyValidatorRegistry: public wxHashTable -{ - DECLARE_DYNAMIC_CLASS(wxPropertyValidatorRegistry) - public: - wxPropertyValidatorRegistry(void); - ~wxPropertyValidatorRegistry(void); - - virtual void RegisterValidator(const wxString& roleName, wxPropertyValidator *validator); - virtual wxPropertyValidator *GetValidator(const wxString& roleName); - void ClearRegistry(void); -}; - -/* - * Property value class - */ - -typedef enum { - wxPropertyValueNull, - wxPropertyValueInteger, - wxPropertyValueReal, - wxPropertyValuebool, - wxPropertyValueString, - wxPropertyValueList, - wxPropertyValueIntegerPtr, - wxPropertyValueRealPtr, - wxPropertyValueboolPtr, - wxPropertyValueStringPtr -} wxPropertyValueType; - -class WXDLLEXPORT wxPropertyValue: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxPropertyValue) - - wxPropertyValue(void); // Unknown type - wxPropertyValue(const wxPropertyValue& copyFrom); // Copy constructor - wxPropertyValue(const char *val); - wxPropertyValue(const wxString& val); - wxPropertyValue(long val); - wxPropertyValue(bool val); - wxPropertyValue(float val); - wxPropertyValue(double the_real); - wxPropertyValue(wxList *val); - wxPropertyValue(wxStringList *val); - // Pointer versions - wxPropertyValue(char **val); - wxPropertyValue(long *val); - wxPropertyValue(bool *val); - wxPropertyValue(float *val); - - ~wxPropertyValue(void); - - virtual inline wxPropertyValueType Type(void) const { return m_type; } - virtual inline void SetType(wxPropertyValueType typ) { m_type = typ; } - virtual long IntegerValue(void) const; - virtual float RealValue(void) const; - virtual bool BoolValue(void) const; - virtual char *StringValue(void) const; - virtual long *IntegerValuePtr(void) const; - virtual float *RealValuePtr(void) const; - virtual bool *BoolValuePtr(void) const; - virtual char **StringValuePtr(void) const; - - // Get nth arg of clause (starting from 1) - virtual wxPropertyValue *Arg(wxPropertyValueType type, int arg) const; - - // Return nth argument of a list expression (starting from zero) - virtual wxPropertyValue *Nth(int arg) const; - // Returns the number of elements in a list expression - virtual int Number(void) const; - - virtual wxPropertyValue *NewCopy(void) const; - virtual void Copy(wxPropertyValue& copyFrom); - - virtual void WritePropertyClause(ostream& stream); // Write this expression as a top-level clause - virtual void WritePropertyType(ostream& stream); // Write as any other subexpression - - // Append an expression to a list - virtual void Append(wxPropertyValue *expr); - // Insert at beginning of list - virtual void Insert(wxPropertyValue *expr); - - // Get first expr in list - virtual inline wxPropertyValue *GetFirst(void) const - { return ((m_type == wxPropertyValueList) ? m_value.first : (wxPropertyValue*)NULL); } - - // Get next expr if this is a node in a list - virtual inline wxPropertyValue *GetNext(void) const - { return m_next; } - - // Get last expr in list - virtual inline wxPropertyValue *GetLast(void) const - { return ((m_type == wxPropertyValueList) ? m_last : (wxPropertyValue*)NULL); } - - // Delete this node from the list - virtual void Delete(wxPropertyValue *node); - - // Clear list - virtual void ClearList(void); - - virtual inline void SetClientData(wxObject *data) { m_clientData = data; } - virtual inline wxObject *GetClientData(void) { return m_clientData; } - - virtual wxString GetStringRepresentation(void); - - inline void SetModified(bool flag = TRUE) { m_modifiedFlag = flag; } - inline bool GetModified(void) { return m_modifiedFlag; } - - // Operators - void operator=(const wxPropertyValue& val); -// void operator=(const char *val); - void operator=(const wxString& val); - void operator=(const long val); - void operator=(const bool val); - void operator=(const float val); - void operator=(const char **val); - void operator=(const long *val); - void operator=(const bool *val); - void operator=(const float *val); - - public: - wxObject* m_clientData; - wxPropertyValueType m_type; - bool m_modifiedFlag; - - union { - long integer; // Also doubles as bool - char *string; - float real; - long *integerPtr; - bool *boolPtr; - char **stringPtr; - float *realPtr; - wxPropertyValue *first; // If is a list expr, points to the first node - } m_value; - - wxPropertyValue* m_next; // If this is a node in a list, points to the next node - wxPropertyValue* m_last; // If is a list expr, points to the last node - -}; - -/* - * Property class: contains a name and a value. - */ - -class WXDLLEXPORT wxProperty: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxProperty) - protected: - bool m_enabled; - public: - wxPropertyValue m_value; - wxString m_name; - wxString m_propertyRole; - wxPropertyValidator* m_propertyValidator; - wxWindow* m_propertyWindow; // Usually a panel item, if anything - - wxProperty(void); - wxProperty(wxProperty& copyFrom); - wxProperty(wxString name, wxString role, wxPropertyValidator *ed = NULL); - wxProperty(wxString name, const wxPropertyValue& val, wxString role, wxPropertyValidator *ed = NULL); - ~wxProperty(void); - - virtual wxPropertyValue& GetValue(void) const; - virtual wxPropertyValidator *GetValidator(void) const; - virtual wxString& GetName(void) const; - virtual wxString& GetRole(void) const; - virtual void SetValue(const wxPropertyValue& val); - virtual void SetValidator(wxPropertyValidator *v); - virtual void SetName(wxString& nm); - virtual void SetRole(wxString& role); - void operator=(const wxPropertyValue& val); - virtual inline void SetWindow(wxWindow *win) { m_propertyWindow = win; } - virtual inline wxWindow *GetWindow(void) const { return m_propertyWindow; } - - inline void Enable(bool en) { m_enabled = en; } - inline bool IsEnabled(void) const { return m_enabled; } -}; - -#endif - // _WX_PROP_H_ diff --git a/include/wx/propform.h b/include/wx/propform.h deleted file mode 100644 index ede043929e..0000000000 --- a/include/wx/propform.h +++ /dev/null @@ -1,297 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: propform.h -// Purpose: Property form classes -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_PROPFORM_H_ -#define _WX_PROPFORM_H_ - -#ifdef __GNUG__ -#pragma interface "propform.h" -#endif - -#include "wx/prop.h" - -//// -//// Property form classes: for using an existing dialog or panel -//// - -#define wxID_PROP_REVERT 3100 -#define wxID_PROP_UPDATE 3101 - -// Mediates between a physical panel and the property sheet -class WXDLLEXPORT wxPropertyFormView: public wxPropertyView -{ - DECLARE_DYNAMIC_CLASS(wxPropertyFormView) - public: - wxPropertyFormView(wxWindow *propPanel = NULL, long flags = 0); - ~wxPropertyFormView(void); - - // Associates and shows the view - virtual void ShowView(wxPropertySheet *propertySheet, wxWindow *panel); - - // Update this view of the viewed object, called e.g. by - // the object itself. - virtual bool OnUpdateView(void); - - // Transfer values from property sheet to dialog - virtual bool TransferToDialog(void); - - // Transfer values from dialog to property sheet - virtual bool TransferToPropertySheet(void); - - // Check that all the values are valid - virtual bool Check(void); - - // Give each property in the sheet a panel item, by matching - // the name of the property to the name of the panel item. - // The user doesn't always want to call this; sometimes, it - // will have been done explicitly (e.g., no matching names). - virtual bool AssociateNames(void); - - void OnOk(wxCommandEvent& event); - void OnCancel(wxCommandEvent& event); - void OnHelp(wxCommandEvent& event); - void OnUpdate(wxCommandEvent& event); - void OnRevert(wxCommandEvent& event); - - virtual bool OnClose(void); - virtual void OnDoubleClick(wxControl *item); - - // TODO: does OnCommand still get called...??? - virtual void OnCommand(wxWindow& win, wxCommandEvent& event); - - inline virtual void AssociatePanel(wxWindow *win) { m_propertyWindow = win; } - inline virtual wxWindow *GetPanel(void) const { return m_propertyWindow; } - - inline virtual void SetManagedWindow(wxWindow *win) { m_managedWindow = win; } - inline virtual wxWindow *GetManagedWindow(void) const { return m_managedWindow; } - - inline virtual wxButton *GetWindowCloseButton() const { return m_windowCloseButton; } - inline virtual wxButton *GetWindowCancelButton() const { return m_windowCancelButton; } - inline virtual wxButton *GetHelpButton() const { return m_windowHelpButton; } - -public: - static bool sm_dialogCancelled; - - protected: - bool m_detailedEditing; // E.g. using listbox for choices - - wxWindow* m_propertyWindow; // Panel that the controls will appear on - wxWindow* m_managedWindow; // Frame or dialog - - wxButton* m_windowCloseButton; // Or OK - wxButton* m_windowCancelButton; - wxButton* m_windowHelpButton; - -DECLARE_EVENT_TABLE() - -}; - -/* - * The type of validator used for forms (wxForm style but using an existing panel - * or dialog box). - * Classes derived from this know how to map from whatever widget they - * find themselves paired with, to the wxProperty and vice versa. - * Should the widget pointer be stored with the validator, or - * the wxProperty? If with the property, we don't have to supply - * a validator for every property. Otherwise, there ALWAYS needs - * to be a validator. On the other hand, not storing a wxWindow pointer - * in the wxProperty is more elegant. Perhaps. - * I think on balance, should put wxWindow pointer into wxProperty. - * After all, wxProperty will often be used to represent the data - * assocated with a window. It's that kinda thing. - */ - -class WXDLLEXPORT wxPropertyFormValidator: public wxPropertyValidator -{ - DECLARE_DYNAMIC_CLASS(wxPropertyFormValidator) - protected: - public: - wxPropertyFormValidator(long flags = 0): wxPropertyValidator(flags) { } - ~wxPropertyFormValidator(void) {} - - // Called to check value is OK (e.g. when OK is pressed) - // Return FALSE if value didn't check out; signal to restore old value. - virtual bool OnCheckValue( wxProperty *WXUNUSED(property), wxPropertyFormView *WXUNUSED(view), - wxWindow *WXUNUSED(parentWindow) ) { return TRUE; } - - // Does the transferance from the property editing area to the property itself. - // Called by the view, e.g. when closing the window. - virtual bool OnRetrieveValue(wxProperty *property, wxPropertyFormView *view, wxWindow *parentWindow) = 0; - - // Called by the view to transfer the property to the window. - virtual bool OnDisplayValue(wxProperty *property, wxPropertyFormView *view, wxWindow *parentWindow) = 0; - - virtual void OnDoubleClick( wxProperty *WXUNUSED(property), wxPropertyFormView *WXUNUSED(view), - wxWindow *WXUNUSED(parentWindow) ) { } - virtual void OnSetFocus( wxProperty *WXUNUSED(property), wxPropertyFormView *WXUNUSED(view), - wxWindow *WXUNUSED(parentWindow) ) { } - virtual void OnKillFocus( wxProperty *WXUNUSED(property), wxPropertyFormView *WXUNUSED(view), - wxWindow *WXUNUSED(parentWindow) ) { } - virtual void OnCommand( wxProperty *WXUNUSED(property), wxPropertyFormView *WXUNUSED(view), - wxWindow *WXUNUSED(parentWindow), wxCommandEvent& WXUNUSED(event) ) {} -}; - -/* - * Some default validators - */ - -class WXDLLEXPORT wxRealFormValidator: public wxPropertyFormValidator -{ - DECLARE_DYNAMIC_CLASS(wxRealFormValidator) - public: - // 0.0, 0.0 means no range - wxRealFormValidator(float min = 0.0, float max = 0.0, long flags = 0):wxPropertyFormValidator(flags) - { - m_realMin = min; m_realMax = max; - } - ~wxRealFormValidator(void) {} - - bool OnCheckValue(wxProperty *property, wxPropertyFormView *view, wxWindow *parentWindow); - bool OnRetrieveValue(wxProperty *property, wxPropertyFormView *view, wxWindow *parentWindow); - // Called by the view to transfer the property to the window. - bool OnDisplayValue(wxProperty *property, wxPropertyFormView *view, wxWindow *parentWindow); - - protected: - float m_realMin; - float m_realMax; -}; - -class WXDLLEXPORT wxIntegerFormValidator: public wxPropertyFormValidator -{ - DECLARE_DYNAMIC_CLASS(wxIntegerFormValidator) - public: - // 0, 0 means no range - wxIntegerFormValidator(long min = 0, long max = 0, long flags = 0):wxPropertyFormValidator(flags) - { - m_integerMin = min; m_integerMax = max; - } - ~wxIntegerFormValidator(void) {} - - bool OnCheckValue(wxProperty *property, wxPropertyFormView *view, wxWindow *parentWindow); - bool OnRetrieveValue(wxProperty *property, wxPropertyFormView *view, wxWindow *parentWindow); - bool OnDisplayValue(wxProperty *property, wxPropertyFormView *view, wxWindow *parentWindow); - - protected: - long m_integerMin; - long m_integerMax; -}; - -class WXDLLEXPORT wxBoolFormValidator: public wxPropertyFormValidator -{ - DECLARE_DYNAMIC_CLASS(wxBoolFormValidator) - protected: - public: - wxBoolFormValidator(long flags = 0):wxPropertyFormValidator(flags) - { - } - ~wxBoolFormValidator(void) {} - - bool OnCheckValue(wxProperty *property, wxPropertyFormView *view, wxWindow *parentWindow); - bool OnRetrieveValue(wxProperty *property, wxPropertyFormView *view, wxWindow *parentWindow); - bool OnDisplayValue(wxProperty *property, wxPropertyFormView *view, wxWindow *parentWindow); -}; - -class WXDLLEXPORT wxStringFormValidator: public wxPropertyFormValidator -{ - DECLARE_DYNAMIC_CLASS(wxStringFormValidator) - public: - wxStringFormValidator(wxStringList *list = NULL, long flags = 0); - - ~wxStringFormValidator(void) - { - if (m_strings) - delete m_strings; - } - - bool OnCheckValue(wxProperty *property, wxPropertyFormView *view, wxWindow *parentWindow); - bool OnRetrieveValue(wxProperty *property, wxPropertyFormView *view, wxWindow *parentWindow); - bool OnDisplayValue(wxProperty *property, wxPropertyFormView *view, wxWindow *parentWindow); - - protected: - wxStringList* m_strings; -}; - -/* - * A default dialog box class to use. - */ - -class WXDLLEXPORT wxPropertyFormDialog: public wxDialog -{ - DECLARE_CLASS(wxPropertyFormDialog) - public: - wxPropertyFormDialog(wxPropertyFormView *v, wxWindow *parent, const wxString& title, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_DIALOG_STYLE, const wxString& name = "dialogBox"); - bool OnClose(void); - void OnDefaultAction(wxControl *item); - void OnCommand(wxWindow& win, wxCommandEvent& event); - - // Extend event processing to search the view's event table - virtual bool ProcessEvent(wxEvent& event); - - private: - wxPropertyFormView* m_view; -}; - -/* - * A default panel class to use. - */ - -class WXDLLEXPORT wxPropertyFormPanel: public wxPanel -{ - DECLARE_CLASS(wxPropertyFormPanel) - public: - wxPropertyFormPanel(wxPropertyFormView *v, wxWindow *parent, const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, const wxString& name = "panel"): - wxPanel(parent, -1, pos, size, style, name) - { - m_view = v; - } - void OnDefaultAction(wxControl *item); - void OnCommand(wxWindow& win, wxCommandEvent& event); - - // Extend event processing to search the view's event table - virtual bool ProcessEvent(wxEvent& event); - - private: - wxPropertyFormView* m_view; -}; - -/* - * A default frame class to use. - */ - -class WXDLLEXPORT wxPropertyFormFrame: public wxFrame -{ - DECLARE_CLASS(wxPropertyFormFrame) - public: - wxPropertyFormFrame(wxPropertyFormView *v, wxFrame *parent, const wxString& title, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE, const wxString& name = "frame"): - wxFrame(parent, -1, title, pos, size, style, name) - { - m_view = v; - m_propertyPanel = NULL; - } - bool OnClose(void); - - // Must call this to create panel and associate view - virtual bool Initialize(void); - virtual wxPanel *OnCreatePanel(wxFrame *parent, wxPropertyFormView *v); - inline virtual wxPanel *GetPropertyPanel(void) const { return m_propertyPanel; } - - private: - wxPropertyFormView* m_view; - wxPanel* m_propertyPanel; -}; - -#endif - // _WX_PROPFORM_H_ diff --git a/include/wx/proplist.h b/include/wx/proplist.h deleted file mode 100644 index a18213ae87..0000000000 --- a/include/wx/proplist.h +++ /dev/null @@ -1,559 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: proplist.h -// Purpose: Property list classes -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - /* - - TO DO: - - (1) Optional popup-help for each item, and an optional Help button - for dialog. - - (2) Align Ok, Cancel, Help buttons properly. - - (3) Consider retrieving the rectangle on the panel that can be - drawn into (where the value listbox is) and giving an example - of editing graphically. May be too fancy. - - (4) Deriveable types for wxPropertyValue => may need to reorganise - wxPropertyValue to use inheritance rather than present all-types-in-one - scheme. - - (5) Optional popup panel for value list, perhaps. - - (6) Floating point checking routine still crashes with Floating - point error for zany input. - - (7) Property sheet with choice (or listbox) to select alternative - sheets... multiple views per panel, only one active. For this - we really need a wxChoice that can be dynamically set: XView - may be a problem; Motif? - - (8) More example validators, e.g. colour selector. - */ - -#ifndef _WX_PROPLIST_H_ -#define _WX_PROPLIST_H_ - -#ifdef __GNUG__ -#pragma interface "proplist.h" -#endif - -#include "wx/prop.h" - -#define wxPROP_BUTTON_CLOSE 1 -#define wxPROP_BUTTON_OK 2 -#define wxPROP_BUTTON_CANCEL 4 -#define wxPROP_BUTTON_CHECK_CROSS 8 -#define wxPROP_BUTTON_HELP 16 -#define wxPROP_DYNAMIC_VALUE_FIELD 32 -#define wxPROP_PULLDOWN 64 -#define wxPROP_SHOWVALUES 128 - -// Show OK/Cancel buttons on X-based systems where window management is -// more awkward -#if defined(__WXMOTIF__) || defined(__WXGTK__) -#define wxPROP_BUTTON_DEFAULT wxPROP_BUTTON_OK | wxPROP_BUTTON_CANCEL | wxPROP_BUTTON_CHECK_CROSS | wxPROP_PULLDOWN -#else -#define wxPROP_BUTTON_DEFAULT wxPROP_BUTTON_CHECK_CROSS | wxPROP_PULLDOWN | wxPROP_SHOWVALUES -#endif - -#define wxID_PROP_CROSS 3000 -#define wxID_PROP_CHECK 3001 -#define wxID_PROP_EDIT 3002 -#define wxID_PROP_TEXT 3003 -#define wxID_PROP_SELECT 3004 -#define wxID_PROP_VALUE_SELECT 3005 - -// Mediates between a physical panel and the property sheet -class WXDLLEXPORT wxPropertyListView: public wxPropertyView -{ - DECLARE_DYNAMIC_CLASS(wxPropertyListView) - public: - wxPropertyListView(wxPanel *propPanel = NULL, long flags = wxPROP_BUTTON_DEFAULT); - ~wxPropertyListView(void); - - // Associates and shows the view - virtual void ShowView(wxPropertySheet *propertySheet, wxPanel *panel); - - // Update this view of the viewed object, called e.g. by - // the object itself. - virtual bool OnUpdateView(void); - - wxString MakeNameValueString(wxString name, wxString value); - - // Update a single line in the list of properties - virtual bool UpdatePropertyDisplayInList(wxProperty *property); - - // Update the whole list - virtual bool UpdatePropertyList(bool clearEditArea = TRUE); - - // Find the wxListBox index corresponding to this property - virtual int FindListIndexForProperty(wxProperty *property); - - // Select and show string representation in editor the given - // property. NULL resets to show no property. - virtual bool ShowProperty(wxProperty *property, bool select = TRUE); - virtual bool EditProperty(wxProperty *property); - - // Update the display from the property - virtual bool DisplayProperty(wxProperty *property); - // Update the property from the display - virtual bool RetrieveProperty(wxProperty *property); - - // Find appropriate validator and load property into value controls - virtual bool BeginShowingProperty(wxProperty *property); - // Find appropriate validator and unload property from value controls - virtual bool EndShowingProperty(wxProperty *property); - - // Begin detailed editing (e.g. using value listbox) - virtual void BeginDetailedEditing(void); - - // End detailed editing (e.g. using value listbox) - virtual void EndDetailedEditing(void); - - // Called by the property listbox - void OnPropertySelect(wxCommandEvent& event); - - // Called by the value listbox - void OnValueListSelect(wxCommandEvent& event); - - virtual bool CreateControls(void); - virtual void ShowTextControl(bool show); - virtual void ShowListBoxControl(bool show); - virtual void EnableCheck(bool show); - virtual void EnableCross(bool show); - - void OnOk(wxCommandEvent& event); - void OnCancel(wxCommandEvent& event); - void OnHelp(wxCommandEvent& event); - void OnPropertyDoubleClick(wxCommandEvent& event); -// virtual void OnDoubleClick(void); - - void OnCheck(wxCommandEvent& event); - void OnCross(wxCommandEvent& event); - void OnEdit(wxCommandEvent& event); - void OnText(wxCommandEvent& event); - - inline virtual wxListBox *GetPropertyScrollingList() const { return m_propertyScrollingList; } - inline virtual wxListBox *GetValueList() const { return m_valueList; } - inline virtual wxTextCtrl *GetValueText() const { return m_valueText; } - inline virtual wxButton *GetConfirmButton() const { return m_confirmButton; } - inline virtual wxButton *GetCancelButton() const { return m_cancelButton; } - inline virtual wxButton *GetEditButton() const { return m_editButton; } - inline virtual bool GetDetailedEditing(void) const { return m_detailedEditing; } - - inline virtual void AssociatePanel(wxPanel *win) { m_propertyWindow = win; } - inline virtual wxPanel *GetPanel(void) const { return m_propertyWindow; } - - inline virtual void SetManagedWindow(wxWindow *win) { m_managedWindow = win; } - inline virtual wxWindow *GetManagedWindow(void) const { return m_managedWindow; } - - inline virtual wxButton *GetWindowCloseButton() const { return m_windowCloseButton; } - inline virtual wxButton *GetWindowCancelButton() const { return m_windowCancelButton; } - inline virtual wxButton *GetHelpButton() const { return m_windowHelpButton; } - - bool OnClose(void); - -public: - static bool sm_dialogCancelled; - - protected: - wxListBox* m_propertyScrollingList; - wxListBox* m_valueList; // Should really be a combobox, but we don't have one. - wxTextCtrl* m_valueText; - wxButton* m_confirmButton; // A tick, as in VB - wxButton* m_cancelButton; // A cross, as in VB - wxButton* m_editButton; // Invokes the custom validator, if any - - bool m_detailedEditing; // E.g. using listbox for choices - - static wxBitmap* sm_tickBitmap; - static wxBitmap* sm_crossBitmap; - - wxPanel* m_propertyWindow; // Panel that the controls will appear on - wxWindow* m_managedWindow; // Frame or dialog - - wxButton* m_windowCloseButton; // Or OK - wxButton* m_windowCancelButton; - wxButton* m_windowHelpButton; - -DECLARE_EVENT_TABLE() -}; - -class WXDLLEXPORT wxPropertyTextEdit: public wxTextCtrl -{ - DECLARE_CLASS(wxPropertyTextEdit) - public: - wxPropertyTextEdit(wxPropertyListView *v, wxWindow *parent, const wxWindowID id, - const wxString& value, const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, const wxString& name = "text"); - void OnSetFocus(void); - void OnKillFocus(void); - - wxPropertyListView* m_view; -}; - -#define wxPROP_ALLOW_TEXT_EDITING 1 - -/* - * The type of validator used for property lists (Visual Basic style) - */ - -class WXDLLEXPORT wxPropertyListValidator: public wxPropertyValidator -{ - DECLARE_DYNAMIC_CLASS(wxPropertyListValidator) - protected: - public: - wxPropertyListValidator(long flags = wxPROP_ALLOW_TEXT_EDITING): wxPropertyValidator(flags) { } - ~wxPropertyListValidator(void) {} - - // 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) - virtual bool OnSelect(bool select, wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - - // Called when the property is double clicked. Extra functionality can be provided, such as - // cycling through possible values. - inline virtual bool OnDoubleClick( - wxProperty *WXUNUSED(property), wxPropertyListView *WXUNUSED(view), wxWindow *WXUNUSED(parentWindow) ) - { return TRUE; } - - // Called when the value listbox is selected. Default behaviour is to copy - // string to text control, and retrieve the value into the property. - virtual bool OnValueListSelect(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - - // Called when the property value is edited using standard text control - inline virtual bool OnPrepareControls( - wxProperty *WXUNUSED(property), wxPropertyListView *WXUNUSED(view), wxWindow *WXUNUSED(parentWindow) ) - { return TRUE; } - - virtual bool OnClearControls(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - - // Called when the property is edited in detail - inline virtual bool OnPrepareDetailControls( - wxProperty *WXUNUSED(property), wxPropertyListView *WXUNUSED(view), wxWindow *WXUNUSED(parentWindow) ) - { return TRUE; } - - // Called if focus lost, IF we're in a modeless property editing situation. - inline virtual bool OnClearDetailControls( - wxProperty *WXUNUSED(property), wxPropertyListView *WXUNUSED(view), wxWindow *WXUNUSED(parentWindow) ) - { return TRUE; } - - // Called when the edit (...) button is pressed. The default implementation - // calls view->BeginDetailedEditing; the filename validator (for example) overrides - // this function to show the file selector. - virtual void OnEdit(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - - // Called when TICK is pressed or focus is lost. - // Return FALSE if value didn't check out; signal to restore old value. - inline virtual bool OnCheckValue( - wxProperty *WXUNUSED(property), wxPropertyListView *WXUNUSED(view), wxWindow *WXUNUSED(parentWindow) ) - { return TRUE; } - - // Called when TICK is pressed or focus is lost or view wants to update - // the property list. - // Does the transferance from the property editing area to the property itself - virtual bool OnRetrieveValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - - virtual bool OnDisplayValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); -}; - -/* - * A default dialog box class to use. - */ - -class WXDLLEXPORT wxPropertyListDialog: public wxDialog -{ - DECLARE_CLASS(wxPropertyListDialog) - public: - wxPropertyListDialog(wxPropertyListView *v, wxWindow *parent, const wxString& title, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_DIALOG_STYLE, const wxString& name = "dialogBox"); - bool OnClose(void); - void OnDefaultAction(wxControl *item); - void OnCancel(wxCommandEvent& event); - - // Extend event processing to search the view's event table - virtual bool ProcessEvent(wxEvent& event); - - private: - wxPropertyListView* m_view; - -DECLARE_EVENT_TABLE() -}; - -/* - * A default panel class to use. - */ - -class WXDLLEXPORT wxPropertyListPanel: public wxPanel -{ - DECLARE_CLASS(wxPropertyListPanel) - public: - wxPropertyListPanel(wxPropertyListView *v, wxWindow *parent, const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, const wxString& name = "panel"): - wxPanel(parent, -1, pos, size, style, name) - { - m_view = v; - } - ~wxPropertyListPanel(); - void OnDefaultAction(wxControl *item); - - inline void SetView(wxPropertyListView* v) { m_view = v; } - inline wxPropertyListView* GetView() const { return m_view; } - - // Extend event processing to search the view's event table - virtual bool ProcessEvent(wxEvent& event); - - // Call Layout() - void OnSize(wxSizeEvent& event); - - private: - wxPropertyListView* m_view; - -DECLARE_EVENT_TABLE() -}; - -/* - * A default frame class to use. - */ - -class WXDLLEXPORT wxPropertyListFrame: public wxFrame -{ - DECLARE_CLASS(wxPropertyListFrame) - public: - wxPropertyListFrame(wxPropertyListView *v, wxFrame *parent, const wxString& title, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE, const wxString& name = "frame"): - wxFrame(parent, -1, title, pos, size, style, name) - { - m_view = v; - m_propertyPanel = NULL; - } - bool OnClose(void); - - // Must call this to create panel and associate view - virtual bool Initialize(void); - virtual wxPropertyListPanel *OnCreatePanel(wxFrame *parent, wxPropertyListView *v); - inline virtual wxPropertyListPanel *GetPropertyPanel(void) const { return m_propertyPanel; } - - private: - wxPropertyListView* m_view; - wxPropertyListPanel* m_propertyPanel; -}; - -/* - * Some default validators - */ - -class WXDLLEXPORT wxRealListValidator: public wxPropertyListValidator -{ - DECLARE_DYNAMIC_CLASS(wxRealListValidator) - public: - // 0.0, 0.0 means no range - wxRealListValidator(float min = 0.0, float max = 0.0, long flags = wxPROP_ALLOW_TEXT_EDITING):wxPropertyListValidator(flags) - { - m_realMin = min; m_realMax = max; - } - ~wxRealListValidator(void) {} - - bool OnPrepareControls(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - - // Called when TICK is pressed or focus is lost. - // Return FALSE if value didn't check out; signal to restore old value. - bool OnCheckValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - - // Called when TICK is pressed or focus is lost or view wants to update - // the property list. - // Does the transfer from the property editing area to the property itself - bool OnRetrieveValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - - protected: - float m_realMin; - float m_realMax; -}; - -class WXDLLEXPORT wxIntegerListValidator: public wxPropertyListValidator -{ - DECLARE_DYNAMIC_CLASS(wxIntegerListValidator) - public: - // 0, 0 means no range - wxIntegerListValidator(long min = 0, long max = 0, long flags = wxPROP_ALLOW_TEXT_EDITING):wxPropertyListValidator(flags) - { - m_integerMin = min; m_integerMax = max; - } - ~wxIntegerListValidator(void) {} - - bool OnPrepareControls(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - - // Called when TICK is pressed or focus is lost. - // Return FALSE if value didn't check out; signal to restore old value. - bool OnCheckValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - - // Called when TICK is pressed or focus is lost or view wants to update - // the property list. - // Does the transfer from the property editing area to the property itself - bool OnRetrieveValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - - protected: - long m_integerMin; - long m_integerMax; -}; - -class WXDLLEXPORT wxBoolListValidator: public wxPropertyListValidator -{ - DECLARE_DYNAMIC_CLASS(wxBoolListValidator) - protected: - public: - wxBoolListValidator(long flags = 0):wxPropertyListValidator(flags) - { - } - ~wxBoolListValidator(void) {} - - bool OnPrepareControls(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - bool OnPrepareDetailControls(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - bool OnClearDetailControls(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - - // Called when TICK is pressed or focus is lost. - // Return FALSE if value didn't check out; signal to restore old value. - bool OnCheckValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - - // Called when TICK is pressed or focus is lost or view wants to update - // the property list. - // Does the transfer from the property editing area to the property itself - bool OnRetrieveValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - bool OnDisplayValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - - // Called when the property is double clicked. Extra functionality can be provided, - // cycling through possible values. - virtual bool OnDoubleClick(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); -}; - -class WXDLLEXPORT wxStringListValidator: public wxPropertyListValidator -{ - DECLARE_DYNAMIC_CLASS(wxStringListValidator) - public: - wxStringListValidator(wxStringList *list = NULL, long flags = 0); - - ~wxStringListValidator(void) - { - if (m_strings) - delete m_strings; - } - - bool OnPrepareControls(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - bool OnPrepareDetailControls(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - bool OnClearDetailControls(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - - // Called when TICK is pressed or focus is lost. - // Return FALSE if value didn't check out; signal to restore old value. - bool OnCheckValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - - // Called when TICK is pressed or focus is lost or view wants to update - // the property list. - // Does the transfer from the property editing area to the property itself - bool OnRetrieveValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - bool OnDisplayValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - - // Called when the property is double clicked. Extra functionality can be provided, - // cycling through possible values. - bool OnDoubleClick(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - - protected: - wxStringList* m_strings; -}; - -class WXDLLEXPORT wxFilenameListValidator: public wxPropertyListValidator -{ - DECLARE_DYNAMIC_CLASS(wxFilenameListValidator) - public: - wxFilenameListValidator(wxString message = "Select a file", wxString wildcard = "*.*", long flags = 0); - - ~wxFilenameListValidator(void); - - // Called when TICK is pressed or focus is lost. - // Return FALSE if value didn't check out; signal to restore old value. - bool OnCheckValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - - // Called when TICK is pressed or focus is lost or view wants to update - // the property list. - // Does the transferance from the property editing area to the property itself - bool OnRetrieveValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - bool OnDisplayValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - - bool OnDoubleClick(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - - bool OnPrepareControls(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - - // Called when the edit (...) button is pressed. - void OnEdit(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - - protected: - wxString m_filenameWildCard; - wxString m_filenameMessage; - -}; - -class WXDLLEXPORT wxColourListValidator: public wxPropertyListValidator -{ - DECLARE_DYNAMIC_CLASS(wxColourListValidator) - protected: - public: - wxColourListValidator(long flags = 0); - - ~wxColourListValidator(void); - - bool OnCheckValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - bool OnRetrieveValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - bool OnDisplayValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - - bool OnDoubleClick(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - - bool OnPrepareControls(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - - // Called when the edit (...) button is pressed. - void OnEdit(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); -}; - -class WXDLLEXPORT wxListOfStringsListValidator: public wxPropertyListValidator -{ - DECLARE_DYNAMIC_CLASS(wxListOfStringsListValidator) - protected: - public: - wxListOfStringsListValidator(long flags = 0); - - ~wxListOfStringsListValidator(void) - { - } - - bool OnPrepareControls(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - - // Called when TICK is pressed or focus is lost. - // Return FALSE if value didn't check out; signal to restore old value. - bool OnCheckValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - - // Called when TICK is pressed or focus is lost or view wants to update - // the property list. - // Does the transfer from the property editing area to the property itself - bool OnRetrieveValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - bool OnDisplayValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - - // Called when the property is double clicked. - bool OnDoubleClick(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - - bool EditStringList(wxWindow *parent, wxStringList *stringList, const char *title = "String List Editor"); - - // Called when the edit (...) button is pressed. - void OnEdit(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); -}; - -#endif - // _WX_PROPLIST_H_ diff --git a/include/wx/protocol/file.h b/include/wx/protocol/file.h deleted file mode 100644 index 773cdcc5b2..0000000000 --- a/include/wx/protocol/file.h +++ /dev/null @@ -1,35 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: file.h -// Purpose: File protocol -// Author: Guilhem Lavaux -// Modified by: -// Created: 1997 -// RCS-ID: $Id$ -// Copyright: (c) 1997, 1998 Guilhem Lavaux -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// -#ifndef __WX_PROTO_FILE_H__ -#define __WX_PROTO_FILE_H__ - -#ifdef __GNUG__ -#pragma interface "sckfile.h" -#endif - -#include "wx/protocol/protocol.h" -#include "wx/url.h" - -class WXDLLEXPORT wxFileProto: public wxProtocol { - DECLARE_DYNAMIC_CLASS(wxFileProto) - DECLARE_PROTOCOL(wxFileProto) -protected: - wxProtocolError m_error; -public: - wxFileProto(); - ~wxFileProto(); - - wxProtocolError GetError() { return m_error; } - bool Abort() { return TRUE; } - wxInputStream *GetInputStream(const wxString& path); -}; - -#endif diff --git a/include/wx/protocol/ftp.h b/include/wx/protocol/ftp.h deleted file mode 100644 index 9f71992f2b..0000000000 --- a/include/wx/protocol/ftp.h +++ /dev/null @@ -1,74 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: ftp.h -// Purpose: FTP protocol -// Author: Vadim Zeitlin -// Modified by: -// Created: 07/07/1997 -// RCS-ID: $Id$ -// Copyright: (c) 1997, 1998 Guilhem Lavaux -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// -#ifndef __WX_FTP_H__ -#define __WX_FTP_H__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/object.h" -#include "wx/sckaddr.h" -#include "wx/protocol/protocol.h" -#include "wx/url.h" - -class WXDLLEXPORT wxFTP : public wxProtocol { - DECLARE_DYNAMIC_CLASS(wxFTP) - DECLARE_PROTOCOL(wxFTP) -public: - typedef enum { ASCII, BINARY } wxFTPmode; - - wxFTP(); - ~wxFTP(); - - bool Close(); - bool Connect(wxSockAddress& addr, bool wait = TRUE); - bool Connect(const wxString& host); - - void SetUser(const wxString& user) { m_user = user; } - void SetPassword(const wxString& passwd) { m_passwd = passwd; } - - // Low-level methods - bool SendCommand(const wxString& command, char exp_ret); - inline virtual wxProtocolError GetError() - { return m_lastError; } - const wxString& GetLastResult(); // Get the complete return - - // Filesystem commands - bool ChDir(const wxString& dir); - bool MkDir(const wxString& dir); - bool RmDir(const wxString& dir); - wxString Pwd(); - bool Rename(const wxString& src, const wxString& dst); - bool RmFile(const wxString& path); - - // Download methods - bool Abort(); - wxInputStream *GetInputStream(const wxString& path); - wxOutputStream *GetOutputStream(const wxString& path); - - // List method - wxList *GetList(const wxString& wildcard); - -protected: - wxString m_user, m_passwd; - wxString m_lastResult; - wxProtocolError m_lastError; - bool m_streaming; - - friend class wxInputFTPStream; - friend class wxOutputFTPStream; - - wxSocketClient *GetPort(); - bool GetResult(char exp); -}; - -#endif diff --git a/include/wx/protocol/http.h b/include/wx/protocol/http.h deleted file mode 100644 index 82c1365889..0000000000 --- a/include/wx/protocol/http.h +++ /dev/null @@ -1,48 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: http.h -// Purpose: HTTP protocol -// Author: Guilhem Lavaux -// Modified by: -// Created: August 1997 -// RCS-ID: $Id$ -// Copyright: (c) 1997, 1998 Guilhem Lavaux -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// -#ifndef _WX_HTTP_H -#define _WX_HTTP_H - -#include "wx/list.h" -#include "wx/protocol/protocol.h" - -class WXDLLEXPORT wxHTTP : public wxProtocol { - DECLARE_DYNAMIC_CLASS(wxHTTP) - DECLARE_PROTOCOL(wxHTTP) -protected: - wxProtocolError m_perr; - wxList m_headers; - bool m_read; - wxSockAddress *m_addr; -public: - wxHTTP(); - ~wxHTTP(); - - bool Connect(const wxString& host); - bool Connect(wxSockAddress& addr, bool wait); - bool Abort(); - wxInputStream *GetInputStream(const wxString& path); - inline wxProtocolError GetError() { return m_perr; } - wxString GetContentType(); - - void SetHeader(const wxString& header, const wxString& h_data); - wxString GetHeader(const wxString& header); - -protected: - typedef enum { - wxHTTP_GET - } wxHTTP_Req; - bool BuildRequest(const wxString& path, wxHTTP_Req req); - void SendHeaders(); - bool ParseHeaders(); -}; - -#endif diff --git a/include/wx/protocol/protocol.h b/include/wx/protocol/protocol.h deleted file mode 100644 index 608c8f1f06..0000000000 --- a/include/wx/protocol/protocol.h +++ /dev/null @@ -1,79 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: protocol.h -// Purpose: Protocol base class -// Author: Guilhem Lavaux -// Modified by: -// Created: 10/07/1997 -// RCS-ID: $Id$ -// Copyright: (c) 1997, 1998 Guilhem Lavaux -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// -#ifndef _WX_PROTOCOL_PROTOCOL_H -#define _WX_PROTOCOL_PROTOCOL_H - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/object.h" -#include "wx/string.h" -#include "wx/stream.h" -#include "wx/socket.h" - -typedef enum { - wxPROTO_NOERR = 0, - wxPROTO_NETERR, - wxPROTO_PROTERR, - wxPROTO_CONNERR, - wxPROTO_INVVAL, - wxPROTO_NOHNDLR, - wxPROTO_NOFILE, - wxPROTO_ABRT, - wxPROTO_RCNCT, - wxPROTO_STREAMING -} wxProtocolError; - -// For protocols -#define DECLARE_PROTOCOL(class) \ -public: \ - static wxProtoInfo g_proto_##class; - -#define IMPLEMENT_PROTOCOL(class, name, serv, host) \ -wxProtoInfo class::g_proto_##class(name, serv, host, CLASSINFO(class)); - -class WXDLLEXPORT wxProtoInfo : public wxObject { - DECLARE_DYNAMIC_CLASS(wxProtoInfo) -protected: - wxProtoInfo *next; - wxString m_protoname; - wxString prefix; - wxString m_servname; - wxClassInfo *m_cinfo; - bool m_needhost; - - friend class wxURL; -public: - wxProtoInfo(const char *name, const char *serv_name, const bool need_host1, - wxClassInfo *info); -}; - -class WXDLLEXPORT wxProtocol : public wxSocketClient { - DECLARE_ABSTRACT_CLASS(wxProtocol) -public: - wxProtocol(); - - bool Reconnect(); - virtual bool Connect( const wxString& WXUNUSED(host) ) { return FALSE; } - virtual bool Connect( wxSockAddress& addr, bool WXUNUSED(wait) = TRUE) { return wxSocketClient::Connect(addr); } - - virtual bool Abort() = 0; - virtual wxInputStream *GetInputStream(const wxString& path) = 0; - virtual wxProtocolError GetError() = 0; - virtual wxString GetContentType() { return wxEmptyString; } - virtual void SetUser(const wxString& WXUNUSED(user)) {} - virtual void SetPassword(const wxString& WXUNUSED(passwd) ) {} -}; - -wxProtocolError WXDLLEXPORT GetLine(wxSocketBase *sock, wxString& result); - -#endif diff --git a/include/wx/qt/app.h b/include/wx/qt/app.h deleted file mode 100644 index cb50ba9c9e..0000000000 --- a/include/wx/qt/app.h +++ /dev/null @@ -1,153 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: app.h -// Purpose: wxApp class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_APP_H_ -#define _WX_APP_H_ - -#ifdef __GNUG__ -#pragma interface "app.h" -#endif - -#include "wx/defs.h" -#include "wx/object.h" - -class WXDLLEXPORT wxFrame; -class WXDLLEXPORT wxWindow; -class WXDLLEXPORT wxApp ; -class WXDLLEXPORT wxKeyEvent; -class WXDLLEXPORT wxLog; - -#define wxPRINT_WINDOWS 1 -#define wxPRINT_POSTSCRIPT 2 - -WXDLLEXPORT_DATA(extern wxApp*) wxTheApp; - -void WXDLLEXPORT wxCleanUp(); -void WXDLLEXPORT wxCommonCleanUp(); // Call this from the platform's wxCleanUp() -void WXDLLEXPORT wxCommonInit(); // Call this from the platform's initialization - -// Force an exit from main loop -void WXDLLEXPORT wxExit(); - -// Yield to other apps/messages -bool WXDLLEXPORT wxYield(); - -// Represents the application. Derive OnInit and declare -// a new App object to start application -class WXDLLEXPORT wxApp: public wxEvtHandler -{ - DECLARE_DYNAMIC_CLASS(wxApp) - wxApp(); - inline ~wxApp() {} - - static void SetInitializerFunction(wxAppInitializerFunction fn) { m_appInitFn = fn; } - static wxAppInitializerFunction GetInitializerFunction() { return m_appInitFn; } - - virtual int MainLoop(); - void ExitMainLoop(); - bool Initialized(); - virtual bool Pending() ; - virtual void Dispatch() ; - - virtual void OnIdle(wxIdleEvent& event); - -// Generic - virtual bool OnInit() { return FALSE; }; - - // No specific tasks to do here. - virtual bool OnInitGui() { return TRUE; } - - // Called to set off the main loop - virtual int OnRun() { return MainLoop(); }; - virtual int OnExit() { return 0; } - - inline void SetPrintMode(int mode) { m_printMode = mode; } - inline int GetPrintMode() const { return m_printMode; } - - inline void SetExitOnFrameDelete(bool flag) { m_exitOnFrameDelete = flag; } - inline bool GetExitOnFrameDelete() const { return m_exitOnFrameDelete; } - - inline wxString GetAppName() const { - if (m_appName != "") - return m_appName; - else return m_className; - } - - inline void SetAppName(const wxString& name) { m_appName = name; }; - inline wxString GetClassName() const { return m_className; } - inline void SetClassName(const wxString& name) { m_className = name; } - - void SetVendorName(const wxString& vendorName) { m_vendorName = vendorName; } - const wxString& GetVendorName() const { return m_vendorName; } - - wxWindow *GetTopWindow() const ; - inline void SetTopWindow(wxWindow *win) { m_topWindow = win; } - - inline void SetWantDebugOutput(bool flag) { m_wantDebugOutput = flag; } - inline bool GetWantDebugOutput() { return m_wantDebugOutput; } - - // Send idle event to all top-level windows. - // Returns TRUE if more idle time is requested. - bool SendIdleEvents(); - - // Send idle event to window and all subwindows - // Returns TRUE if more idle time is requested. - bool SendIdleEvents(wxWindow* win); - - // Windows only, but for compatibility... - inline void SetAuto3D(bool flag) { m_auto3D = flag; } - inline bool GetAuto3D() const { return m_auto3D; } - - // Creates a log object - virtual wxLog* CreateLogTarget(); - -public: - // Will always be set to the appropriate, main-style values. - int argc; - char ** argv; - -protected: - bool m_wantDebugOutput ; - wxString m_className; - wxString m_appName, - m_vendorName; - wxWindow * m_topWindow; - bool m_exitOnFrameDelete; - bool m_showOnInit; - int m_printMode; // wxPRINT_WINDOWS, wxPRINT_POSTSCRIPT - bool m_auto3D ; // Always use 3D controls, except - // where overriden - static wxAppInitializerFunction m_appInitFn; - -public: - - // Implementation - static void CommonInit(); - static void CommonCleanUp(); - void DeletePendingObjects(); - bool ProcessIdle(); - -public: - static long sm_lastMessageTime; - int m_nCmdShow; - -protected: - bool m_keepGoing ; - -DECLARE_EVENT_TABLE() -}; - -// TODO: add platform-specific arguments -int WXDLLEXPORT wxEntry( int argc, char *argv[] ); - -#endif - // _WX_APP_H_ - diff --git a/include/wx/qt/bitmap.h b/include/wx/qt/bitmap.h deleted file mode 100644 index 195944f835..0000000000 --- a/include/wx/qt/bitmap.h +++ /dev/null @@ -1,198 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: bitmap.h -// Purpose: wxBitmap class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_BITMAP_H_ -#define _WX_BITMAP_H_ - -#ifdef __GNUG__ -#pragma interface "bitmap.h" -#endif - -#include "wx/gdiobj.h" -#include "wx/gdicmn.h" -#include "wx/palette.h" - -// Bitmap -class WXDLLEXPORT wxDC; -class WXDLLEXPORT wxControl; -class WXDLLEXPORT wxBitmap; -class WXDLLEXPORT wxBitmapHandler; -class WXDLLEXPORT wxIcon; -class WXDLLEXPORT wxCursor; - -// A mask is a mono bitmap used for drawing bitmaps -// transparently. -class WXDLLEXPORT wxMask: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxMask) - -public: - wxMask(); - - // Construct a mask from a bitmap and a colour indicating - // the transparent area - wxMask(const wxBitmap& bitmap, const wxColour& colour); - - // Construct a mask from a bitmap and a palette index indicating - // the transparent area - wxMask(const wxBitmap& bitmap, int paletteIndex); - - // Construct a mask from a mono bitmap (copies the bitmap). - wxMask(const wxBitmap& bitmap); - - ~wxMask(); - - bool Create(const wxBitmap& bitmap, const wxColour& colour); - bool Create(const wxBitmap& bitmap, int paletteIndex); - bool Create(const wxBitmap& bitmap); - -/* TODO: platform-specific data access - // Implementation - inline WXHBITMAP GetMaskBitmap() const { return m_maskBitmap; } - inline void SetMaskBitmap(WXHBITMAP bmp) { m_maskBitmap = bmp; } -protected: - WXHBITMAP m_maskBitmap; -*/ -}; - -class WXDLLEXPORT wxBitmapRefData: public wxGDIRefData -{ - friend class WXDLLEXPORT wxBitmap; - friend class WXDLLEXPORT wxIcon; - friend class WXDLLEXPORT wxCursor; -public: - wxBitmapRefData(); - ~wxBitmapRefData(); - -public: - int m_width; - int m_height; - int m_depth; - bool m_ok; - int m_numColors; - wxPalette m_bitmapPalette; - int m_quality; - -/* WXHBITMAP m_hBitmap; TODO: platform-specific handle */ - wxMask * m_bitmapMask; // Optional mask -}; - -#define M_BITMAPDATA ((wxBitmapRefData *)m_refData) - -class WXDLLEXPORT wxBitmapHandler: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxBitmapHandler) -public: - wxBitmapHandler() { m_name = ""; m_extension = ""; m_type = 0; }; - - virtual bool Create(wxBitmap *bitmap, void *data, long flags, int width, int height, int depth = 1); - virtual bool LoadFile(wxBitmap *bitmap, const wxString& name, long flags, - int desiredWidth, int desiredHeight); - virtual bool SaveFile(wxBitmap *bitmap, const wxString& name, int type, const wxPalette *palette = NULL); - - inline void SetName(const wxString& name) { m_name = name; } - inline void SetExtension(const wxString& ext) { m_extension = ext; } - inline void SetType(long type) { m_type = type; } - inline wxString GetName() const { return m_name; } - inline wxString GetExtension() const { return m_extension; } - inline long GetType() const { return m_type; } -protected: - wxString m_name; - wxString m_extension; - long m_type; -}; - -#define M_BITMAPHANDLERDATA ((wxBitmapRefData *)bitmap->GetRefData()) - -class WXDLLEXPORT wxBitmap: public wxGDIObject -{ - DECLARE_DYNAMIC_CLASS(wxBitmap) - - friend class WXDLLEXPORT wxBitmapHandler; - -public: - wxBitmap(); // Platform-specific - - // Copy constructors - inline wxBitmap(const wxBitmap& bitmap) - { Ref(bitmap); if ( wxTheBitmapList ) wxTheBitmapList->AddBitmap(this); } - inline wxBitmap(const wxBitmap* bitmap) { if (bitmap) Ref(*bitmap); if ( wxTheBitmapList ) wxTheBitmapList->AddBitmap(this); } - - // Initialize with raw data. - wxBitmap(const char bits[], int width, int height, int depth = 1); - -/* TODO: maybe implement XPM reading - // Initialize with XPM data - wxBitmap(const char **data); -*/ - - // Load a file or resource - // TODO: make default type whatever's appropriate for the platform. - wxBitmap(const wxString& name, long type = wxBITMAP_TYPE_BMP_RESOURCE); - - // Constructor for generalised creation from data - wxBitmap(void *data, long type, int width, int height, int depth = 1); - - // If depth is omitted, will create a bitmap compatible with the display - wxBitmap(int width, int height, int depth = -1); - ~wxBitmap(); - - virtual bool Create(int width, int height, int depth = -1); - virtual bool Create(void *data, long type, int width, int height, int depth = 1); - virtual bool LoadFile(const wxString& name, long type = wxBITMAP_TYPE_BMP_RESOURCE); - virtual bool SaveFile(const wxString& name, int type, const wxPalette *cmap = NULL); - - inline bool Ok() const { return (M_BITMAPDATA && M_BITMAPDATA->m_ok); } - inline int GetWidth() const { return (M_BITMAPDATA ? M_BITMAPDATA->m_width : 0); } - inline int GetHeight() const { return (M_BITMAPDATA ? M_BITMAPDATA->m_height : 0); } - inline int GetDepth() const { return (M_BITMAPDATA ? M_BITMAPDATA->m_depth : 0); } - inline int GetQuality() const { return (M_BITMAPDATA ? M_BITMAPDATA->m_quality : 0); } - void SetWidth(int w); - void SetHeight(int h); - void SetDepth(int d); - void SetQuality(int q); - void SetOk(bool isOk); - - inline wxPalette* GetPalette() const { return (M_BITMAPDATA ? (& M_BITMAPDATA->m_bitmapPalette) : NULL); } - void SetPalette(const wxPalette& palette); - - inline wxMask *GetMask() const { return (M_BITMAPDATA ? M_BITMAPDATA->m_bitmapMask : NULL); } - void SetMask(wxMask *mask) ; - - inline wxBitmap& operator = (const wxBitmap& bitmap) { if (*this == bitmap) return (*this); Ref(bitmap); return *this; } - inline bool operator == (const wxBitmap& bitmap) { return m_refData == bitmap.m_refData; } - inline bool operator != (const wxBitmap& bitmap) { return m_refData != bitmap.m_refData; } - - // Format handling - static inline wxList& GetHandlers() { return sm_handlers; } - static void AddHandler(wxBitmapHandler *handler); - static void InsertHandler(wxBitmapHandler *handler); - static bool RemoveHandler(const wxString& name); - static wxBitmapHandler *FindHandler(const wxString& name); - static wxBitmapHandler *FindHandler(const wxString& extension, long bitmapType); - static wxBitmapHandler *FindHandler(long bitmapType); - - static void InitStandardHandlers(); - static void CleanUpHandlers(); -protected: - static wxList sm_handlers; - -/* - // TODO: Implementation -public: - void SetHBITMAP(WXHBITMAP bmp); - inline WXHBITMAP GetHBITMAP() const { return (M_BITMAPDATA ? M_BITMAPDATA->m_hBitmap : 0); } - bool FreeResource(bool force = FALSE); -*/ - -}; -#endif - // _WX_BITMAP_H_ diff --git a/include/wx/qt/bmpbuttn.h b/include/wx/qt/bmpbuttn.h deleted file mode 100644 index defe39e438..0000000000 --- a/include/wx/qt/bmpbuttn.h +++ /dev/null @@ -1,83 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: bmpbuttn.h -// Purpose: wxBitmapButton class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_BMPBUTTN_H_ -#define _WX_BMPBUTTN_H_ - -#ifdef __GNUG__ -#pragma interface "bmpbuttn.h" -#endif - -#include "wx/button.h" - -WXDLLEXPORT_DATA(extern const char*) wxButtonNameStr; - -#define wxDEFAULT_BUTTON_MARGIN 4 - -class WXDLLEXPORT wxBitmapButton: public wxButton -{ - DECLARE_DYNAMIC_CLASS(wxBitmapButton) - public: - inline wxBitmapButton() { m_marginX = wxDEFAULT_BUTTON_MARGIN; m_marginY = wxDEFAULT_BUTTON_MARGIN; } - inline wxBitmapButton(wxWindow *parent, wxWindowID id, const wxBitmap& bitmap, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = wxBU_AUTODRAW, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxButtonNameStr) - { - Create(parent, id, bitmap, pos, size, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, const wxBitmap& bitmap, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = wxBU_AUTODRAW, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxButtonNameStr); - - virtual void SetLabel(const wxBitmap& bitmap) - { - SetBitmapLabel(bitmap); - } - - virtual void SetBitmapLabel(const wxBitmap& bitmap); - - inline wxBitmap& GetBitmapLabel() const { return (wxBitmap&) m_buttonBitmap; } - inline wxBitmap& GetBitmapSelected() const { return (wxBitmap&) m_buttonBitmapSelected; } - inline wxBitmap& GetBitmapFocus() const { return (wxBitmap&) m_buttonBitmapFocus; } - inline wxBitmap& GetBitmapDisabled() const { return (wxBitmap&) m_buttonBitmapDisabled; } - - inline void SetBitmapSelected(const wxBitmap& sel) { m_buttonBitmapSelected = sel; }; - inline void SetBitmapFocus(const wxBitmap& focus) { m_buttonBitmapFocus = focus; }; - inline void SetBitmapDisabled(const wxBitmap& disabled) { m_buttonBitmapDisabled = disabled; }; - - inline void SetMargins(int x, int y) { m_marginX = x; m_marginY = y; } - inline int GetMarginX() { return m_marginX; } - inline int GetMarginY() { return m_marginY; } - -/* - // TODO: Implementation - virtual bool MSWOnDraw(WXDRAWITEMSTRUCT *item); - virtual void DrawFace( WXHDC dc, int left, int top, int right, int bottom, bool sel ); - virtual void DrawButtonFocus( WXHDC dc, int left, int top, int right, int bottom, bool sel ); - virtual void DrawButtonDisable( WXHDC dc, int left, int top, int right, int bottom, bool with_marg ); -*/ - - protected: - wxBitmap m_buttonBitmap; - wxBitmap m_buttonBitmapSelected; - wxBitmap m_buttonBitmapFocus; - wxBitmap m_buttonBitmapDisabled; - int m_marginX; - int m_marginY; -}; - -#endif - // _WX_BMPBUTTN_H_ diff --git a/include/wx/qt/brush.h b/include/wx/qt/brush.h deleted file mode 100644 index 2475bd0b24..0000000000 --- a/include/wx/qt/brush.h +++ /dev/null @@ -1,86 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: brush.h -// Purpose: wxBrush class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_BRUSH_H_ -#define _WX_BRUSH_H_ - -#ifdef __GNUG__ -#pragma interface "brush.h" -#endif - -#include "wx/gdicmn.h" -#include "wx/gdiobj.h" -#include "wx/bitmap.h" - -class WXDLLEXPORT wxBrush; - -class WXDLLEXPORT wxBrushRefData: public wxGDIRefData -{ - friend class WXDLLEXPORT wxBrush; -public: - wxBrushRefData(); - wxBrushRefData(const wxBrushRefData& data); - ~wxBrushRefData(); - -protected: - int m_style; - wxBitmap m_stipple ; - wxColour m_colour; - -/* TODO: implementation - WXHBRUSH m_hBrush; -*/ -}; - -#define M_BRUSHDATA ((wxBrushRefData *)m_refData) - -// Brush -class WXDLLEXPORT wxBrush: public wxGDIObject -{ - DECLARE_DYNAMIC_CLASS(wxBrush) - -public: - wxBrush(); - wxBrush(const wxColour& col, int style); - wxBrush(const wxString& col, int style); - wxBrush(const wxBitmap& stipple); - inline wxBrush(const wxBrush& brush) { Ref(brush); } - inline wxBrush(const wxBrush* brush) { if (brush) Ref(*brush); } - ~wxBrush(); - - virtual void SetColour(const wxColour& col) ; - virtual void SetColour(const wxString& col) ; - virtual void SetColour(unsigned char r, unsigned char g, unsigned char b) ; - virtual void SetStyle(int style) ; - virtual void SetStipple(const wxBitmap& stipple) ; - - inline wxBrush& operator = (const wxBrush& brush) { if (*this == brush) return (*this); Ref(brush); return *this; } - inline bool operator == (const wxBrush& brush) { return m_refData == brush.m_refData; } - inline bool operator != (const wxBrush& brush) { return m_refData != brush.m_refData; } - - inline wxColour& GetColour() const { return (M_BRUSHDATA ? M_BRUSHDATA->m_colour : wxNullColour); }; - inline int GetStyle() const { return (M_BRUSHDATA ? M_BRUSHDATA->m_style : 0); }; - inline wxBitmap *GetStipple() const { return (M_BRUSHDATA ? & M_BRUSHDATA->m_stipple : 0); }; - - virtual bool Ok() const { return (m_refData != NULL) ; } - -// Implementation - - // Useful helper: create the brush resource - void RealizeResource(); - - // When setting properties, we must make sure we're not changing - // another object - void Unshare(); -}; - -#endif - // _WX_BRUSH_H_ diff --git a/include/wx/qt/button.h b/include/wx/qt/button.h deleted file mode 100644 index 68b67d8c96..0000000000 --- a/include/wx/qt/button.h +++ /dev/null @@ -1,53 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: button.h -// Purpose: wxButton class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_BUTTON_H_ -#define _WX_BUTTON_H_ - -#ifdef __GNUG__ -#pragma interface "button.h" -#endif - -#include "wx/control.h" -#include "wx/gdicmn.h" - -WXDLLEXPORT_DATA(extern const char*) wxButtonNameStr; - -// Pushbutton -class WXDLLEXPORT wxButton: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxButton) - public: - inline wxButton() {} - inline wxButton(wxWindow *parent, wxWindowID id, const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxButtonNameStr) - { - Create(parent, id, label, pos, size, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxButtonNameStr); - - virtual void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - virtual void SetDefault(); - virtual void SetLabel(const wxString& label); - virtual wxString GetLabel() const ; - virtual void Command(wxCommandEvent& event); -}; - -#endif - // _WX_BUTTON_H_ diff --git a/include/wx/qt/checkbox.h b/include/wx/qt/checkbox.h deleted file mode 100644 index 8bf41d9958..0000000000 --- a/include/wx/qt/checkbox.h +++ /dev/null @@ -1,81 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: checkbox.h -// Purpose: wxCheckBox class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_CHECKBOX_H_ -#define _WX_CHECKBOX_H_ - -#ifdef __GNUG__ -#pragma interface "checkbox.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxCheckBoxNameStr; - -// Checkbox item (single checkbox) -class WXDLLEXPORT wxBitmap; -class WXDLLEXPORT wxCheckBox: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxCheckBox) - - public: - inline wxCheckBox() { } - inline wxCheckBox(wxWindow *parent, wxWindowID id, const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxCheckBoxNameStr) - { - Create(parent, id, label, pos, size, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxCheckBoxNameStr); - virtual void SetValue(bool); - virtual bool GetValue() const ; - virtual void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - virtual void SetLabel(const wxString& label); - virtual void Command(wxCommandEvent& event); -}; - -class WXDLLEXPORT wxBitmapCheckBox: public wxCheckBox -{ - DECLARE_DYNAMIC_CLASS(wxBitmapCheckBox) - - public: - int checkWidth ; - int checkHeight ; - - inline wxBitmapCheckBox() { checkWidth = -1; checkHeight = -1; } - inline wxBitmapCheckBox(wxWindow *parent, wxWindowID id, const wxBitmap *label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxCheckBoxNameStr) - { - Create(parent, id, label, pos, size, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, const wxBitmap *bitmap, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxCheckBoxNameStr); - virtual void SetValue(bool); - virtual bool GetValue() const ; - virtual void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - virtual void SetLabel(const wxBitmap *bitmap); -}; -#endif - // _WX_CHECKBOX_H_ diff --git a/include/wx/qt/choice.h b/include/wx/qt/choice.h deleted file mode 100644 index 7f360ed5cc..0000000000 --- a/include/wx/qt/choice.h +++ /dev/null @@ -1,72 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: choice.h -// Purpose: wxChoice class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_CHOICE_H_ -#define _WX_CHOICE_H_ - -#ifdef __GNUG__ -#pragma interface "choice.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxChoiceNameStr; - -// Choice item -class WXDLLEXPORT wxChoice: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxChoice) - - public: - inline wxChoice() { m_noStrings = 0; } - - inline wxChoice(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = NULL, - long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxChoiceNameStr) - { - Create(parent, id, pos, size, n, choices, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = NULL, - long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxChoiceNameStr); - - virtual void Append(const wxString& item); - virtual void Delete(int n); - virtual void Clear(); - virtual int GetSelection() const ; - virtual void SetSelection(int n); - virtual int FindString(const wxString& s) const; - virtual wxString GetString(int n) const ; - virtual void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - virtual wxString GetStringSelection() const ; - virtual bool SetStringSelection(const wxString& sel); - - virtual inline int Number() const { return m_noStrings; } - virtual void Command(wxCommandEvent& event); - - virtual inline void SetColumns(int WXUNUSED(n) = 1 ) { /* No effect */ } ; - virtual inline int GetColumns() const { return 1 ; }; - -protected: - int m_noStrings; -}; - -#endif - // _WX_CHOICE_H_ diff --git a/include/wx/qt/colour.h b/include/wx/qt/colour.h deleted file mode 100644 index e8fca8e3b4..0000000000 --- a/include/wx/qt/colour.h +++ /dev/null @@ -1,68 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: colour.h -// Purpose: wxColour class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_COLOUR_H_ -#define _WX_COLOUR_H_ - -#ifdef __GNUG__ -#pragma interface "colour.h" -#endif - -// Colour -class WXDLLEXPORT wxColour: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxColour) -public: - wxColour(); - wxColour(unsigned char r, unsigned char g, unsigned char b); - wxColour(unsigned long colRGB) { Set(colRGB); } - wxColour(const wxColour& col); - wxColour(const wxString& col); - ~wxColour() ; - wxColour& operator =(const wxColour& src) ; - wxColour& operator =(const wxString& src) ; - inline int Ok() const { return (m_isInit) ; } - - void Set(unsigned char r, unsigned char g, unsigned char b); - void Set(unsigned long colRGB) - { - // we don't need to know sizeof(long) here because we assume that the three - // least significant bytes contain the R, G and B values - Set((unsigned char)colRGB, - (unsigned char)(colRGB >> 8), - (unsigned char)(colRGB >> 16)); - } - - inline unsigned char Red() const { return m_red; } - inline unsigned char Green() const { return m_green; } - inline unsigned char Blue() const { return m_blue; } - - inline bool operator == (const wxColour& colour) { return (m_red == colour.m_red && m_green == colour.m_green && m_blue == colour.m_blue); } - - inline bool operator != (const wxColour& colour) { return (!(m_red == colour.m_red && m_green == colour.m_green && m_blue == colour.m_blue)); } - - WXCOLORREF GetPixel() const { return m_pixel; }; - - private: - bool m_isInit; - unsigned char m_red; - unsigned char m_blue; - unsigned char m_green; - public: -/* TODO: implementation - WXCOLORREF m_pixel ; -*/ -}; - -#define wxColor wxColour - -#endif - // _WX_COLOUR_H_ diff --git a/include/wx/qt/combobox.h b/include/wx/qt/combobox.h deleted file mode 100644 index 86895e561c..0000000000 --- a/include/wx/qt/combobox.h +++ /dev/null @@ -1,78 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: combobox.h -// Purpose: wxComboBox class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_COMBOBOX_H_ -#define _WX_COMBOBOX_H_ - -#ifdef __GNUG__ -#pragma interface "combobox.h" -#endif - -#include "wx/choice.h" - -WXDLLEXPORT_DATA(extern const char*) wxComboBoxNameStr; -WXDLLEXPORT_DATA(extern const char*) wxEmptyString; - -// Combobox item -class WXDLLEXPORT wxComboBox: public wxChoice -{ - DECLARE_DYNAMIC_CLASS(wxComboBox) - - public: - inline wxComboBox() {} - - inline wxComboBox(wxWindow *parent, wxWindowID id, - const wxString& value = wxEmptyString, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = NULL, - long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxComboBoxNameStr) - { - Create(parent, id, value, pos, size, n, choices, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - const wxString& value = wxEmptyString, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = NULL, - long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxComboBoxNameStr); - - // List functions: see wxChoice - - // Text field functions - virtual wxString GetValue() const ; - virtual void SetValue(const wxString& value); - - // Clipboard operations - virtual void Copy(); - virtual void Cut(); - virtual void Paste(); - virtual void SetInsertionPoint(long pos); - virtual void SetInsertionPointEnd(); - virtual long GetInsertionPoint() const ; - virtual long GetLastPosition() const ; - virtual void Replace(long from, long to, const wxString& value); - virtual void Remove(long from, long to); - virtual void SetSelection(int n) - { - wxChoice::SetSelection(n); - } - virtual void SetSelection(long from, long to); - virtual void SetEditable(bool editable); -}; - -#endif - // _WX_COMBOBOX_H_ diff --git a/include/wx/qt/control.h b/include/wx/qt/control.h deleted file mode 100644 index 5432b5c5e7..0000000000 --- a/include/wx/qt/control.h +++ /dev/null @@ -1,50 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: control.h -// Purpose: wxControl class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_CONTROL_H_ -#define _WX_CONTROL_H_ - -#ifdef __GNUG__ -#pragma interface "control.h" -#endif - -#include "wx/window.h" -#include "wx/list.h" -#include "wx/validate.h" - -// General item class -class WXDLLEXPORT wxControl: public wxWindow -{ - DECLARE_ABSTRACT_CLASS(wxControl) -public: - wxControl(); - ~wxControl(); - - virtual void Command(wxCommandEvent& WXUNUSED(event)) = 0; // Simulates an event - virtual void ProcessCommand(wxCommandEvent& event); // Calls the callback and - // appropriate event handlers - virtual void SetLabel(const wxString& label); - virtual wxString GetLabel() const ; - - // Places item in centre of panel - so can't be used BEFORE panel->Fit() - void Centre(int direction = wxHORIZONTAL); - inline void Callback(const wxFunction function) { m_callback = function; }; // Adds callback - - inline wxFunction GetCallback() { return m_callback; } - -protected: - wxFunction m_callback; // Callback associated with the window - -DECLARE_EVENT_TABLE() -}; - -#endif - // _WX_CONTROL_H_ diff --git a/include/wx/qt/cursor.h b/include/wx/qt/cursor.h deleted file mode 100644 index 9cf490cdc6..0000000000 --- a/include/wx/qt/cursor.h +++ /dev/null @@ -1,75 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: cursor.h -// Purpose: wxCursor class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_CURSOR_H_ -#define _WX_CURSOR_H_ - -#ifdef __GNUG__ -#pragma interface "cursor.h" -#endif - -#include "wx/bitmap.h" - -class WXDLLEXPORT wxCursorRefData: public wxBitmapRefData -{ - friend class WXDLLEXPORT wxBitmap; - friend class WXDLLEXPORT wxCursor; -public: - wxCursorRefData(); - ~wxCursorRefData(); - -protected: -/* TODO: implementation - WXHCURSOR m_hCursor; -*/ -}; - -#define M_CURSORDATA ((wxCursorRefData *)m_refData) -#define M_CURSORHANDLERDATA ((wxCursorRefData *)bitmap->m_refData) - -// Cursor -class WXDLLEXPORT wxCursor: public wxBitmap -{ - DECLARE_DYNAMIC_CLASS(wxCursor) - -public: - wxCursor(); - - // Copy constructors - inline wxCursor(const wxCursor& cursor) { Ref(cursor); } - inline wxCursor(const wxCursor* cursor) { if (cursor) Ref(*cursor); } - - wxCursor(const char bits[], int width, int height, int hotSpotX = -1, int hotSpotY = -1, - const char maskBits[] = NULL); - - /* TODO: make default type suit platform */ - wxCursor(const wxString& name, long flags = wxBITMAP_TYPE_CUR_RESOURCE, - int hotSpotX = 0, int hotSpotY = 0); - - wxCursor(int cursor_type); - ~wxCursor(); - - virtual bool Ok() const { return (m_refData != NULL && M_CURSORDATA->m_hCursor) ; } - - inline wxCursor& operator = (const wxCursor& cursor) { if (*this == cursor) return (*this); Ref(cursor); return *this; } - inline bool operator == (const wxCursor& cursor) { return m_refData == cursor.m_refData; } - inline bool operator != (const wxCursor& cursor) { return m_refData != cursor.m_refData; } - -/* TODO: implementation - void SetHCURSOR(WXHCURSOR cursor); - inline WXHCURSOR GetHCURSOR() const { return (M_CURSORDATA ? M_CURSORDATA->m_hCursor : 0); } -*/ -}; - -extern WXDLLEXPORT void wxSetCursor(const wxCursor& cursor); - -#endif - // _WX_CURSOR_H_ diff --git a/include/wx/qt/dc.h b/include/wx/qt/dc.h deleted file mode 100644 index eb10154ab9..0000000000 --- a/include/wx/qt/dc.h +++ /dev/null @@ -1,375 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dc.h -// Purpose: wxDC class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_DC_H_ -#define _WX_DC_H_ - -#ifdef __GNUG__ -#pragma interface "dc.h" -#endif - -#include "wx/pen.h" -#include "wx/brush.h" -#include "wx/icon.h" -#include "wx/font.h" -#include "wx/gdicmn.h" - -//----------------------------------------------------------------------------- -// constants -//----------------------------------------------------------------------------- - -#define MM_TEXT 0 -#define MM_ISOTROPIC 1 -#define MM_ANISOTROPIC 2 -#define MM_LOMETRIC 3 -#define MM_HIMETRIC 4 -#define MM_TWIPS 5 -#define MM_POINTS 6 -#define MM_METRIC 7 - -//----------------------------------------------------------------------------- -// global variables -//----------------------------------------------------------------------------- - -extern int wxPageNumber; - -//----------------------------------------------------------------------------- -// wxDC -//----------------------------------------------------------------------------- - -class WXDLLEXPORT wxDC: public wxObject -{ - DECLARE_ABSTRACT_CLASS(wxDC) - - public: - - wxDC(void); - ~wxDC(void); - - void BeginDrawing(void) {}; - void EndDrawing(void) {}; - - virtual bool Ok(void) const { return m_ok; }; - - virtual void FloodFill( long x1, long y1, wxColour *col, int style=wxFLOOD_SURFACE ) = 0; - inline void FloodFill(const wxPoint& pt, const wxColour& col, int style=wxFLOOD_SURFACE) - { - FloodFill(pt.x, pt.y, col, style); - } - virtual bool GetPixel( long x1, long y1, wxColour *col ) const = 0; - inline bool GetPixel(const wxPoint& pt, wxColour *col) const - { - return GetPixel(pt.x, pt.y, col); - } - - virtual void DrawLine( long x1, long y1, long x2, long y2 ) = 0; - inline void DrawLine(const wxPoint& pt1, const wxPoint& pt2) - { - DrawLine(pt1.x, pt1.y, pt2.x, pt2.y); - } - - virtual void CrossHair( long x, long y ) = 0; - inline void CrossHair(const wxPoint& pt) - { - CrossHair(pt.x, pt.y); - } - - virtual void DrawArc( long x1, long y1, long x2, long y2, double xc, double yc ) = 0; - inline void DrawArc(const wxPoint& pt1, const wxPoint& pt2, double xc, double yc) - { - DrawArc(pt1.x, pt1.y, pt2.x, pt2.y, xc, yc); - } - - virtual void DrawEllipticArc( long x, long y, long width, long height, double sa, double ea ) = 0; - virtual void DrawEllipticArc (const wxPoint& pt, const wxSize& sz, double sa, double ea) - { - DrawEllipticArc(pt.x, pt.y, sz.x, sz.y, sa, ea); - } - - virtual void DrawPoint( long x, long y ) = 0; - virtual void DrawPoint( wxPoint& point ); - - virtual void DrawLines( int n, wxPoint points[], long xoffset = 0, long yoffset = 0 ) = 0; - virtual void DrawLines( wxList *points, long xoffset = 0, long yoffset = 0 ); - virtual void DrawPolygon( int n, wxPoint points[], long xoffset = 0, long yoffset = 0, - int fillStyle=wxODDEVEN_RULE ) = 0; - virtual void DrawPolygon( wxList *lines, long xoffset = 0, long yoffset = 0, - int fillStyle=wxODDEVEN_RULE ); - - virtual void DrawRectangle( long x, long y, long width, long height ) = 0; - inline void DrawRectangle(const wxPoint& pt, const wxSize& sz) - { - DrawRectangle(pt.x, pt.y, sz.x, sz.y); - } - inline void DrawRectangle(const wxRect& rect) - { - DrawRectangle(rect.x, rect.y, rect.width, rect.height); - } - virtual void DrawRoundedRectangle( long x, long y, long width, long height, double radius = 20.0 ) = 0; - inline void DrawRoundedRectangle(const wxPoint& pt, const wxSize& sz, double radius = 20.0) - { - DrawRoundedRectangle(pt.x, pt.y, sz.x, sz.y, radius); - } - inline void DrawRoundedRectangle(const wxRect& rect, double radius = 20.0) - { - DrawRoundedRectangle(rect.x, rect.y, rect.width, rect.height, radius); - } - - virtual void DrawEllipse( long x, long y, long width, long height ) = 0; - inline void DrawEllipse(const wxPoint& pt, const wxSize& sz) - { - DrawEllipse(pt.x, pt.y, sz.x, sz.y); - } - inline void DrawEllipse(const wxRect& rect) - { - DrawEllipse(rect.x, rect.y, rect.width, rect.height); - } - - virtual void DrawIcon(const wxIcon& icon, long x, long y) = 0; - - virtual void DrawSpline( long x1, long y1, long x2, long y2, long x3, long y3 ); - virtual void DrawSpline( wxList *points ); - virtual void DrawSpline( int n, wxPoint points[] ); - - virtual bool CanDrawBitmap(void) const = 0; - - virtual void DrawIcon( const wxIcon &icon, long x, long y, bool useMask=FALSE ); - inline void DrawIcon(const wxIcon& icon, const wxPoint& pt) - { - DrawIcon(icon, pt.x, pt.y); - } - - // TODO DrawBitmap is not always the same as DrawIcon, especially if bitmaps and - // icons are implemented differently. - void DrawBitmap( const wxBitmap &bmp, long x, long y, bool useMask=FALSE ) - { DrawIcon( *((wxIcon*)(&bmp)), x, y, useMask ); } - - virtual bool Blit( long xdest, long ydest, long width, long height, - wxDC *source, long xsrc, long ysrc, int logical_func = wxCOPY, bool useMask=FALSE ) = 0; - inline bool Blit(const wxPoint& destPt, const wxSize& sz, - wxDC *source, const wxPoint& srcPt, int rop = wxCOPY, bool useMask = FALSE) - { - return Blit(destPt.x, destPt.y, sz.x, sz.y, source, srcPt.x, srcPt.y, rop, useMask); - } - - virtual void DrawText( const wxString &text, long x, long y, bool use16 = FALSE ) = 0; - inline void DrawText(const wxString& text, const wxPoint& pt, bool use16bit = FALSE) - { - DrawText(text, pt.x, pt.y, use16bit); - } - - virtual bool CanGetTextExtent(void) const = 0; - virtual void GetTextExtent( const wxString &string, long *width, long *height, - long *descent = NULL, long *externalLeading = NULL, - wxFont *theFont = NULL, bool use16 = FALSE ) = 0; - virtual long GetCharWidth(void) = 0; - virtual long GetCharHeight(void) = 0; - - virtual void Clear(void) = 0; - - virtual void SetFont( const wxFont &font ) = 0; - virtual wxFont *GetFont(void) const { return &m_font; }; - - virtual void SetPen( const wxPen &pen ) = 0; - virtual wxPen *GetPen(void) const { return &m_pen; }; - - virtual void SetBrush( const wxBrush &brush ) = 0; - virtual wxBrush *GetBrush(void) const { return &m_brush; }; - - virtual void SetBackground( const wxBrush &brush ) = 0; - virtual wxBrush *GetBackground(void) const { return &m_backgroundBrush; }; - - virtual void SetLogicalFunction( int function ) = 0; - virtual int GetLogicalFunction(void) const { return m_logicalFunction; }; - - virtual void SetTextForeground( const wxColour &col ); - virtual void SetTextBackground( const wxColour &col ); - virtual wxColour& GetTextBackground(void) const { return (wxColour&)m_textBackgroundColour; }; - virtual wxColour& GetTextForeground(void) const { return (wxColour&)m_textForegroundColour; }; - - virtual void SetBackgroundMode( int mode ) = 0; - virtual int GetBackgroundMode(void) const { return m_backgroundMode; }; - - virtual void SetPalette( const wxPalette& palette ) = 0; - void SetColourMap( const wxPalette& palette ) { SetPalette(palette); }; - - // the first two must be overridden and called - virtual void SetClippingRegion( long x, long y, long width, long height ); - virtual void DestroyClippingRegion(void); - virtual void GetClippingBox( long *x, long *y, long *width, long *height ) const; - - virtual inline long MinX(void) const { return m_minX; } - virtual inline long MaxX(void) const { return m_maxX; } - virtual inline long MinY(void) const { return m_minY; } - virtual inline long MaxY(void) const { return m_maxY; } - - virtual void GetSize( int* width, int* height ) const; - inline wxSize GetSize(void) const { int w, h; GetSize(&w, &h); return wxSize(w, h); } - virtual void GetSizeMM( long* width, long* height ) const; - - virtual bool StartDoc( const wxString& WXUNUSED(message) ) { return TRUE; }; - virtual void EndDoc(void) {}; - virtual void StartPage(void) {}; - virtual void EndPage(void) {}; - - virtual void SetMapMode( int mode ); - virtual int GetMapMode(void) const { return m_mappingMode; }; - - virtual void SetUserScale( double x, double y ); - virtual void GetUserScale( double *x, double *y ); - virtual void SetLogicalScale( double x, double y ); - virtual void GetLogicalScale( double *x, double *y ); - - virtual void SetLogicalOrigin( long x, long y ); - virtual void GetLogicalOrigin( long *x, long *y ); - virtual void SetDeviceOrigin( long x, long y ); - virtual void GetDeviceOrigin( long *x, long *y ); - virtual void SetInternalDeviceOrigin( long x, long y ); - virtual void GetInternalDeviceOrigin( long *x, long *y ); - - virtual void SetAxisOrientation( bool xLeftRight, bool yBottomUp ); - - virtual void SetOptimization( bool WXUNUSED(optimize) ) {}; - virtual bool GetOptimization(void) { return m_optimize; }; - - virtual long DeviceToLogicalX(long x) const; - virtual long DeviceToLogicalY(long y) const; - virtual long DeviceToLogicalXRel(long x) const; - virtual long DeviceToLogicalYRel(long y) const; - virtual long LogicalToDeviceX(long x) const; - virtual long LogicalToDeviceY(long y) const; - virtual long LogicalToDeviceXRel(long x) const; - virtual long LogicalToDeviceYRel(long y) const; - - public: - - void CalcBoundingBox( long x, long y ); - void ComputeScaleAndOrigin(void); - - long XDEV2LOG(long x) const - { - long new_x = x - m_deviceOriginX; - if (new_x > 0) - return (long)((double)(new_x) / m_scaleX + 0.5) * m_signX + m_logicalOriginX; - else - return (long)((double)(new_x) / m_scaleX - 0.5) * m_signX + m_logicalOriginX; - } - long XDEV2LOGREL(long x) const - { - if (x > 0) - return (long)((double)(x) / m_scaleX + 0.5); - else - return (long)((double)(x) / m_scaleX - 0.5); - } - long YDEV2LOG(long y) const - { - long new_y = y - m_deviceOriginY; - if (new_y > 0) - return (long)((double)(new_y) / m_scaleY + 0.5) * m_signY + m_logicalOriginY; - else - return (long)((double)(new_y) / m_scaleY - 0.5) * m_signY + m_logicalOriginY; - } - long YDEV2LOGREL(long y) const - { - if (y > 0) - return (long)((double)(y) / m_scaleY + 0.5); - else - return (long)((double)(y) / m_scaleY - 0.5); - } - long XLOG2DEV(long x) const - { - long new_x = x - m_logicalOriginX; - if (new_x > 0) - return (long)((double)(new_x) * m_scaleX + 0.5) * m_signX + m_deviceOriginX; - else - return (long)((double)(new_x) * m_scaleX - 0.5) * m_signX + m_deviceOriginX; - } - long XLOG2DEVREL(long x) const - { - if (x > 0) - return (long)((double)(x) * m_scaleX + 0.5); - else - return (long)((double)(x) * m_scaleX - 0.5); - } - long YLOG2DEV(long y) const - { - long new_y = y - m_logicalOriginY; - if (new_y > 0) - return (long)((double)(new_y) * m_scaleY + 0.5) * m_signY + m_deviceOriginY; - else - return (long)((double)(new_y) * m_scaleY - 0.5) * m_signY + m_deviceOriginY; - } - long YLOG2DEVREL(long y) const - { - if (y > 0) - return (long)((double)(y) * m_scaleY + 0.5); - else - return (long)((double)(y) * m_scaleY - 0.5); - } - - virtual void DrawOpenSpline( wxList *points ) = 0; - - public: - - bool m_ok; - bool m_colour; - - // not sure, what these mean - bool m_clipping; // Is clipping on right now ? - bool m_isInteractive; // Is GetPixel possible ? - bool m_autoSetting; // wxMSW only ? - bool m_dontDelete; // wxMSW only ? - bool m_optimize; // wxMSW only ? - wxString m_filename; // Not sure where this belongs. - - wxPen m_pen; - wxBrush m_brush; - wxBrush m_backgroundBrush; - wxColour m_textForegroundColour; - wxColour m_textBackgroundColour; - wxFont m_font; - - int m_logicalFunction; - int m_backgroundMode; - int m_textAlignment; // gone in wxWin 2.0 ? - - int m_mappingMode; - - // not sure what for, but what is a mm on a screen you don't know the size of? - double m_mm_to_pix_x,m_mm_to_pix_y; - - long m_internalDeviceOriginX,m_internalDeviceOriginY; // If un-scrolled is non-zero or - // d.o. changes with scrolling. - // Set using SetInternalDeviceOrigin(). - - long m_externalDeviceOriginX,m_externalDeviceOriginY; // To be set by external classes - // such as wxScrolledWindow - // using SetDeviceOrigin() - - long m_deviceOriginX,m_deviceOriginY; // Sum of the two above. - - long m_logicalOriginX,m_logicalOriginY; // User defined. - - double m_scaleX,m_scaleY; - double m_logicalScaleX,m_logicalScaleY; - double m_userScaleX,m_userScaleY; - long m_signX,m_signY; - - bool m_needComputeScaleX,m_needComputeScaleY; // not yet used - - float m_scaleFactor; // wxPSDC wants to have this. Will disappear. - - long m_clipX1,m_clipY1,m_clipX2,m_clipY2; - long m_minX,m_maxX,m_minY,m_maxY; -}; - -#endif - // _WX_DC_H_ diff --git a/include/wx/qt/dcclient.h b/include/wx/qt/dcclient.h deleted file mode 100644 index 828a507d75..0000000000 --- a/include/wx/qt/dcclient.h +++ /dev/null @@ -1,100 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcclient.h -// Purpose: wxClientDC, wxPaintDC and wxWindowDC classes -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_DCCLIENT_H_ -#define _WX_DCCLIENT_H_ - -#ifdef __GNUG__ -#pragma interface "dcclient.h" -#endif - -#include "wx/dc.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class WXDLLEXPORT wxPaintDC; - -// Under Windows, wxClientDC, wxPaintDC and wxWindowDC are implemented differently. -// On many platforms, however, they will be the same. - -typedef wxPaintDC wxClientDC; -typedef wxPaintDC wxWindowDC; - -//----------------------------------------------------------------------------- -// wxPaintDC -//----------------------------------------------------------------------------- - -class WXDLLEXPORT wxPaintDC: public wxDC -{ - DECLARE_DYNAMIC_CLASS(wxPaintDC) - - public: - - wxPaintDC(void); - wxPaintDC( wxWindow *win ); - - ~wxPaintDC(void); - - virtual void FloodFill( long x1, long y1, wxColour *col, int style=wxFLOOD_SURFACE ); - virtual bool GetPixel( long x1, long y1, wxColour *col ) const; - - virtual void DrawLine( long x1, long y1, long x2, long y2 ); - virtual void CrossHair( long x, long y ); - virtual void DrawArc( long x1, long y1, long x2, long y2, double xc, double yc ); - virtual void DrawEllipticArc( long x, long y, long width, long height, double sa, double ea ); - virtual void DrawPoint( long x, long y ); - - virtual void DrawLines( int n, wxPoint points[], long xoffset = 0, long yoffset = 0 ); - virtual void DrawLines( wxList *points, long xoffset = 0, long yoffset = 0 ); - virtual void DrawPolygon( int n, wxPoint points[], long xoffset = 0, long yoffset = 0, - int fillStyle=wxODDEVEN_RULE ); - virtual void DrawPolygon( wxList *lines, long xoffset = 0, long yoffset = 0, - int fillStyle=wxODDEVEN_RULE ); - - virtual void DrawRectangle( long x, long y, long width, long height ); - virtual void DrawRoundedRectangle( long x, long y, long width, long height, double radius = 20.0 ); - virtual void DrawEllipse( long x, long y, long width, long height ); - - virtual bool CanDrawBitmap(void) const; - virtual void DrawIcon( const wxIcon &icon, long x, long y, bool useMask=FALSE ); - virtual bool Blit( long xdest, long ydest, long width, long height, - wxDC *source, long xsrc, long ysrc, int logical_func = wxCOPY, bool useMask=FALSE ); - - virtual void DrawText( const wxString &text, long x, long y, bool use16 = FALSE ); - virtual bool CanGetTextExtent(void) const; - virtual void GetTextExtent( const wxString &string, long *width, long *height, - long *descent = NULL, long *externalLeading = NULL, - wxFont *theFont = NULL, bool use16 = FALSE ); - virtual long GetCharWidth(void); - virtual long GetCharHeight(void); - - virtual void Clear(void); - - virtual void SetFont( const wxFont &font ); - virtual void SetPen( const wxPen &pen ); - virtual void SetBrush( const wxBrush &brush ); - virtual void SetBackground( const wxBrush &brush ); - virtual void SetLogicalFunction( int function ); - virtual void SetTextForeground( const wxColour &col ); - virtual void SetTextBackground( const wxColour &col ); - virtual void SetBackgroundMode( int mode ); - virtual void SetPalette( const wxPalette& palette ); - - virtual void SetClippingRegion( long x, long y, long width, long height ); - virtual void DestroyClippingRegion(void); - - virtual void DrawOpenSpline( wxList *points ); -}; - -#endif - // _WX_DCCLIENT_H_ diff --git a/include/wx/qt/dcmemory.h b/include/wx/qt/dcmemory.h deleted file mode 100644 index c6c5737642..0000000000 --- a/include/wx/qt/dcmemory.h +++ /dev/null @@ -1,38 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcmemory.h -// Purpose: wxMemoryDC class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_DCMEMORY_H_ -#define _WX_DCMEMORY_H_ - -#ifdef __GNUG__ -#pragma interface "dcmemory.h" -#endif - -#include "wx/dcclient.h" - -class WXDLLEXPORT wxMemoryDC: public wxPaintDC -{ - DECLARE_DYNAMIC_CLASS(wxMemoryDC) - - public: - wxMemoryDC(void); - wxMemoryDC( wxDC *dc ); // Create compatible DC - ~wxMemoryDC(void); - virtual void SelectObject( const wxBitmap& bitmap ); - void GetSize( int *width, int *height ) const; - - private: - friend wxPaintDC; - wxBitmap m_selected; -}; - -#endif - // _WX_DCMEMORY_H_ diff --git a/include/wx/qt/dcscreen.h b/include/wx/qt/dcscreen.h deleted file mode 100644 index 27961a1caa..0000000000 --- a/include/wx/qt/dcscreen.h +++ /dev/null @@ -1,39 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcscreen.h -// Purpose: wxScreenDC class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_DCSCREEN_H_ -#define _WX_DCSCREEN_H_ - -#ifdef __GNUG__ -#pragma interface "dcscreen.h" -#endif - -#include "wx/dcclient.h" - -class WXDLLEXPORT wxScreenDC: public wxPaintDC -{ - DECLARE_DYNAMIC_CLASS(wxScreenDC) - - public: - // Create a DC representing the whole screen - wxScreenDC(); - ~wxScreenDC(); - - // Compatibility with X's requirements for - // drawing on top of all windows - static bool StartDrawingOnTop(wxWindow* WXUNUSED(window)) { return TRUE; } - static bool StartDrawingOnTop(wxRect* WXUNUSED(rect) = NULL) { return TRUE; } - static bool EndDrawingOnTop() { return TRUE; } -}; - -#endif - // _WX_DCSCREEN_H_ - diff --git a/include/wx/qt/dialog.h b/include/wx/qt/dialog.h deleted file mode 100644 index ebd7bff2a8..0000000000 --- a/include/wx/qt/dialog.h +++ /dev/null @@ -1,98 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dialog.h -// Purpose: wxDialog class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_DIALOG_H_ -#define _WX_DIALOG_H_ - -#ifdef __GNUG__ -#pragma interface "dialog.h" -#endif - -#include "wx/panel.h" - -WXDLLEXPORT_DATA(extern const char*) wxDialogNameStr; - -// Dialog boxes -class WXDLLEXPORT wxDialog: public wxPanel -{ - DECLARE_DYNAMIC_CLASS(wxDialog) -public: - - wxDialog(); - - // Constructor with a modal flag, but no window id - the old convention - inline wxDialog(wxWindow *parent, - const wxString& title, bool modal, - int x = -1, int y= -1, int width = 500, int height = 500, - long style = wxDEFAULT_DIALOG_STYLE, - const wxString& name = wxDialogNameStr) - { - long modalStyle = modal ? wxDIALOG_MODAL : wxDIALOG_MODELESS ; - Create(parent, -1, title, wxPoint(x, y), wxSize(width, height), style|modalStyle, name); - } - - // Constructor with no modal flag - the new convention. - inline wxDialog(wxWindow *parent, wxWindowID id, - const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_DIALOG_STYLE, - const wxString& name = wxDialogNameStr) - { - Create(parent, id, title, pos, size, style, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - const wxString& title, // bool modal = FALSE, // TODO make this a window style? - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_DIALOG_STYLE, - const wxString& name = wxDialogNameStr); - - ~wxDialog(); - - virtual bool Destroy(); - void SetClientSize(int width, int height); - void GetPosition(int *x, int *y) const; - bool Show(bool show); - void Iconize(bool iconize); - - virtual bool IsIconized() const; - void Fit(); - - void SetTitle(const wxString& title); - wxString GetTitle() const ; - - bool OnClose(); - void OnCharHook(wxKeyEvent& event); - void OnCloseWindow(wxCloseEvent& event); - - void SetModal(bool flag); - - virtual void Centre(int direction = wxBOTH); - virtual bool IsModal() const { return ((GetWindowStyleFlag() & wxDIALOG_MODAL) == wxDIALOG_MODAL); } - - virtual int ShowModal(); - virtual void EndModal(int retCode); - - // Standard buttons - void OnOK(wxCommandEvent& event); - void OnApply(wxCommandEvent& event); - void OnCancel(wxCommandEvent& event); - - // Responds to colour changes - void OnSysColourChanged(wxSysColourChangedEvent& event); - -DECLARE_EVENT_TABLE() -}; - -#endif - // _WX_DIALOG_H_ diff --git a/include/wx/qt/dirdlg.h b/include/wx/qt/dirdlg.h deleted file mode 100644 index fe36bb7fec..0000000000 --- a/include/wx/qt/dirdlg.h +++ /dev/null @@ -1,47 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dirdlg.h -// Purpose: wxDirDialog class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_DIRDLG_H_ -#define _WX_DIRDLG_H_ - -#ifdef __GNUG__ -#pragma interface "dirdlg.h" -#endif - -#include "wx/dialog.h" - -class WXDLLEXPORT wxDirDialog: public wxDialog -{ -DECLARE_DYNAMIC_CLASS(wxDirDialog) -public: - wxDirDialog(wxWindow *parent, const wxString& message = wxFileSelectorPromptStr, - const wxString& defaultPath = "", - long style = 0, const wxPoint& pos = wxDefaultPosition); - - inline void SetMessage(const wxString& message) { m_message = message; } - inline void SetPath(const wxString& path) { m_path = path; } - inline void SetStyle(long style) { m_dialogStyle = style; } - - inline wxString GetMessage() const { return m_message; } - inline wxString GetPath() const { return m_path; } - inline long GetStyle() const { return m_dialogStyle; } - - int ShowModal(); - -protected: - wxString m_message; - long m_dialogStyle; - wxWindow * m_parent; - wxString m_path; -}; - -#endif - // _WX_DIRDLG_H_ diff --git a/include/wx/qt/dnd.h b/include/wx/qt/dnd.h deleted file mode 100644 index 217561903a..0000000000 --- a/include/wx/qt/dnd.h +++ /dev/null @@ -1,239 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: dnd.h -// Purpose: declaration of the wxDropTarget class -// Author: Robert Roebling -// RCS-ID: -// Copyright: (c) 1998 Vadim Zeitlin, Robert Roebling -// Licence: wxWindows license -/////////////////////////////////////////////////////////////////////////////// - - -#ifndef __GTKDNDH__ -#define __GTKDNDH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/string.h" -#include "wx/cursor.h" - -//------------------------------------------------------------------------- -// classes -//------------------------------------------------------------------------- - -class wxWindow; - -class wxDataObject; -class wxTextDataObject; -class wxFileDataObject; - -class wxDropTarget; -class wxTextDropTarget; -class wxFileDropTarget; - -class wxDropSource; - -//------------------------------------------------------------------------- -// wxDataObject -//------------------------------------------------------------------------- - -class wxDataObject: public wxObject -{ -public: - // all data formats (values are the same as in windows.h, do not change!) - enum StdFormat - { - Invalid, - Text, - Bitmap, - MetafilePict, - Sylk, - Dif, - Tiff, - OemText, - Dib, - Palette, - Pendata, - Riff, - Wave, - UnicodeText, - EnhMetafile, - Hdrop, - Locale, - Max - }; - - // function to return symbolic name of clipboard format (debug messages) - static const char *GetFormatName(wxDataFormat format); - - // ctor & dtor - wxDataObject() {}; - ~wxDataObject() {}; - - // pure virtuals to override - // get the best suited format for our data - virtual wxDataFormat GetPreferredFormat() const = 0; - // decide if we support this format (should be one of values of - // StdFormat enumerations or a user-defined format) - virtual bool IsSupportedFormat(wxDataFormat format) const = 0; - // get the (total) size of data - virtual size_t GetDataSize() const = 0; - // copy raw data to provided pointer - virtual void GetDataHere(void *pBuf) const = 0; - -}; - -// ---------------------------------------------------------------------------- -// wxTextDataObject is a specialization of wxDataObject for text data -// ---------------------------------------------------------------------------- - -class wxTextDataObject : public wxDataObject -{ -public: - // ctors - wxTextDataObject() { } - wxTextDataObject(const wxString& strText) : m_strText(strText) { } - void Init(const wxString& strText) { m_strText = strText; } - - // implement base class pure virtuals - virtual wxDataFormat GetPreferredFormat() const - { return wxDF_TEXT; } - virtual bool IsSupportedFormat(wxDataFormat format) const - { return format == wxDF_TEXT; } - virtual size_t GetDataSize() const - { return m_strText.Len() + 1; } // +1 for trailing '\0'of course - virtual void GetDataHere(void *pBuf) const - { memcpy(pBuf, m_strText.c_str(), GetDataSize()); } - -private: - wxString m_strText; - -}; - -// ---------------------------------------------------------------------------- -// wxFileDataObject is a specialization of wxDataObject for file names -// ---------------------------------------------------------------------------- - -class wxFileDataObject : public wxDataObject -{ -public: - - wxFileDataObject(void) { } - void AddFile( const wxString &file ) - { m_files += file; m_files += ";"; } - - // implement base class pure virtuals - virtual wxDataFormat GetPreferredFormat() const - { return wxDF_FILENAME; } - virtual bool IsSupportedFormat(wxDataFormat format) const - { return format == wxDF_FILENAME; } - virtual size_t GetDataSize() const - { return m_files.Len() + 1; } // +1 for trailing '\0'of course - virtual void GetDataHere(void *pBuf) const - { memcpy(pBuf, m_files.c_str(), GetDataSize()); } - -private: - wxString m_files; - -}; -//------------------------------------------------------------------------- -// wxDropTarget -//------------------------------------------------------------------------- - -class wxDropTarget: public wxObject -{ - public: - - wxDropTarget(); - ~wxDropTarget(); - - virtual void OnEnter() { } - virtual void OnLeave() { } - virtual bool OnDrop( long x, long y, const void *pData ) = 0; - -// protected: - - friend wxWindow; - - // Override these to indicate what kind of data you support: - - virtual size_t GetFormatCount() const = 0; - virtual wxDataFormat GetFormat(size_t n) const = 0; -}; - -//------------------------------------------------------------------------- -// wxTextDropTarget -//------------------------------------------------------------------------- - -class wxTextDropTarget: public wxDropTarget -{ - public: - - wxTextDropTarget() {}; - virtual bool OnDrop( long x, long y, const void *pData ); - virtual bool OnDropText( long x, long y, const char *psz ); - - protected: - - virtual size_t GetFormatCount() const; - virtual wxDataFormat GetFormat(size_t n) const; -}; - -// ---------------------------------------------------------------------------- -// A drop target which accepts files (dragged from File Manager or Explorer) -// ---------------------------------------------------------------------------- - -class wxFileDropTarget: public wxDropTarget -{ - public: - - wxFileDropTarget() {}; - - virtual bool OnDrop(long x, long y, const void *pData); - virtual bool OnDropFiles( long x, long y, - size_t nFiles, const char * const aszFiles[]); - - protected: - - virtual size_t GetFormatCount() const; - virtual wxDataFormat GetFormat(size_t n) const; -}; - -//------------------------------------------------------------------------- -// wxDropSource -//------------------------------------------------------------------------- - -class wxDropSource: public wxObject -{ - public: - - enum DragResult - { - Error, // error prevented the d&d operation from completing - None, // drag target didn't accept the data - Copy, // the data was successfully copied - Move, // the data was successfully moved - Cancel // the operation was cancelled by user (not an error) - }; - - wxDropSource( wxWindow *win ); - wxDropSource( wxDataObject &data, wxWindow *win ); - - ~wxDropSource(void); - - void SetData( wxDataObject &data ); - DragResult DoDragDrop( bool bAllowMove = FALSE ); - - virtual bool GiveFeedback( DragResult WXUNUSED(effect), bool WXUNUSED(bScrolling) ) { return TRUE; }; - - protected: - - wxDataObject *m_data; -}; - -#endif - //__GTKDNDH__ - diff --git a/include/wx/qt/filedlg.h b/include/wx/qt/filedlg.h deleted file mode 100644 index 1abeed4d68..0000000000 --- a/include/wx/qt/filedlg.h +++ /dev/null @@ -1,71 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: filedlg.h -// Purpose: wxFileDialog class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_FILEDLG_H_ -#define _WX_FILEDLG_H_ - -#ifdef __GNUG__ -#pragma interface "filedlg.h" -#endif - -#include "wx/dialog.h" - -/* - * File selector - */ - -WXDLLEXPORT_DATA(extern const char*) wxFileSelectorPromptStr; -WXDLLEXPORT_DATA(extern const char*) wxFileSelectorDefaultWildcardStr; - -class WXDLLEXPORT wxFileDialog: public wxDialog -{ -DECLARE_DYNAMIC_CLASS(wxFileDialog) -protected: - wxString m_message; - long m_dialogStyle; - wxWindow * m_parent; - wxString m_dir; - wxString m_path; // Full path - wxString m_fileName; - wxString m_wildCard; - int m_filterIndex; -public: - wxFileDialog(wxWindow *parent, const wxString& message = wxFileSelectorPromptStr, - const wxString& defaultDir = "", const wxString& defaultFile = "", const wxString& wildCard = wxFileSelectorDefaultWildcardStr, - long style = 0, const wxPoint& pos = wxDefaultPosition); - - inline void SetMessage(const wxString& message) { m_message = message; } - inline void SetPath(const wxString& path) { m_path = path; } - inline void SetDirectory(const wxString& dir) { m_dir = dir; } - inline void SetFilename(const wxString& name) { m_fileName = name; } - inline void SetWildcard(const wxString& wildCard) { m_wildCard = wildCard; } - inline void SetStyle(long style) { m_dialogStyle = style; } - inline void SetFilterIndex(int filterIndex) { m_filterIndex = filterIndex; } - - inline wxString GetMessage() const { return m_message; } - inline wxString GetPath() const { return m_path; } - inline wxString GetDirectory() const { return m_dir; } - inline wxString GetFilename() const { return m_fileName; } - inline wxString GetWildcard() const { return m_wildCard; } - inline long GetStyle() const { return m_dialogStyle; } - inline int GetFilterIndex() const { return m_filterIndex ; } - - int ShowModal(); -}; - -#define wxOPEN 0x0001 -#define wxSAVE 0x0002 -#define wxOVERWRITE_PROMPT 0x0004 -#define wxHIDE_READONLY 0x0008 -#define wxFILE_MUST_EXIST 0x0010 - -#endif - // _WX_FILEDLG_H_ diff --git a/include/wx/qt/font.h b/include/wx/qt/font.h deleted file mode 100644 index 2079f2d0f0..0000000000 --- a/include/wx/qt/font.h +++ /dev/null @@ -1,88 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: font.h -// Purpose: wxFont class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_FONT_H_ -#define _WX_FONT_H_ - -#ifdef __GNUG__ -#pragma interface "font.h" -#endif - -#include "wx/gdiobj.h" - -class WXDLLEXPORT wxFont; - -class WXDLLEXPORT wxFontRefData: public wxGDIRefData -{ - friend class WXDLLEXPORT wxFont; -public: - wxFontRefData(); - ~wxFontRefData(); -protected: - int m_pointSize; - int m_family; - int m_style; - int m_weight; - bool m_underlined; - wxString m_faceName; -/* TODO: implementation - WXHFONT m_hFont; -*/ -}; - -#define M_FONTDATA ((wxFontRefData *)m_refData) - -WXDLLEXPORT_DATA(extern const char*) wxEmptyString; - -// Font -class WXDLLEXPORT wxFont: public wxGDIObject -{ - DECLARE_DYNAMIC_CLASS(wxFont) -public: - wxFont(); - wxFont(int pointSize, int family, int style, int weight, bool underlined = FALSE, const wxString& faceName = wxEmptyString); - inline wxFont(const wxFont& font) { Ref(font); } - inline wxFont(const wxFont* font) { if (font) Ref(*font); } - - ~wxFont(); - - bool Create(int pointSize, int family, int style, int weight, bool underlined = FALSE, const wxString& faceName = wxEmptyString); - - virtual bool Ok() const { return (m_refData != NULL) ; } - - inline int GetPointSize() const { return M_FONTDATA->m_pointSize; } - inline int GetFamily() const { return M_FONTDATA->m_family; } - inline int GetStyle() const { return M_FONTDATA->m_style; } - inline int GetWeight() const { return M_FONTDATA->m_weight; } - wxString GetFamilyString() const ; - wxString GetFaceName() const ; - wxString GetStyleString() const ; - wxString GetWeightString() const ; - inline bool GetUnderlined() const { return M_FONTDATA->m_underlined; } - - void SetPointSize(int pointSize); - void SetFamily(int family); - void SetStyle(int style); - void SetWeight(int weight); - void SetFaceName(const wxString& faceName); - void SetUnderlined(bool underlined); - - inline wxFont& operator = (const wxFont& font) { if (*this == font) return (*this); Ref(font); return *this; } - inline bool operator == (const wxFont& font) { return m_refData == font.m_refData; } - inline bool operator != (const wxFont& font) { return m_refData != font.m_refData; } - - // Implementation -protected: - void Unshare(); -}; - -#endif - // _WX_FONT_H_ diff --git a/include/wx/qt/frame.h b/include/wx/qt/frame.h deleted file mode 100644 index 70247ae171..0000000000 --- a/include/wx/qt/frame.h +++ /dev/null @@ -1,156 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: frame.h -// Purpose: wxFrame class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_FRAME_H_ -#define _WX_FRAME_H_ - -#ifdef __GNUG__ -#pragma interface "frame.h" -#endif - -#include "wx/window.h" -#include "wx/toolbar.h" -#include "wx/accel.h" - -WXDLLEXPORT_DATA(extern const char*) wxFrameNameStr; -WXDLLEXPORT_DATA(extern const char*) wxToolBarNameStr; - -class WXDLLEXPORT wxMenuBar; -class WXDLLEXPORT wxStatusBar; - -class WXDLLEXPORT wxFrame: public wxWindow { - - DECLARE_DYNAMIC_CLASS(wxFrame) - -public: - wxFrame(); - inline wxFrame(wxWindow *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE, - const wxString& name = wxFrameNameStr) - { - Create(parent, id, title, pos, size, style, name); - } - - ~wxFrame(); - - bool Create(wxWindow *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE, - const wxString& name = wxFrameNameStr); - - virtual bool Destroy(); - void SetClientSize(int width, int height); - void GetClientSize(int *width, int *height) const; - - void GetSize(int *width, int *height) const ; - void GetPosition(int *x, int *y) const ; - void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - - virtual bool OnClose(); - - void OnSize(wxSizeEvent& event); - void OnMenuHighlight(wxMenuEvent& event); - void OnActivate(wxActivateEvent& event); - void OnIdle(wxIdleEvent& event); - void OnCloseWindow(wxCloseEvent& event); - - bool Show(bool show); - - // Set menu bar - void SetMenuBar(wxMenuBar *menu_bar); - virtual wxMenuBar *GetMenuBar() const ; - - // Set title - void SetTitle(const wxString& title); - wxString GetTitle() const ; - - void Centre(int direction = wxBOTH); - - // Call this to simulate a menu command - virtual void Command(int id); - virtual void ProcessCommand(int id); - - // Set icon - virtual void SetIcon(const wxIcon& icon); - - // Create status line - virtual wxStatusBar* CreateStatusBar(int number=1, long style = wxST_SIZEGRIP, wxWindowID id = 0, - const wxString& name = "statusBar"); - inline wxStatusBar *GetStatusBar() const { return m_frameStatusBar; } - virtual void PositionStatusBar(); - virtual wxStatusBar *OnCreateStatusBar(int number, long style, wxWindowID id, - const wxString& name); - - // Create toolbar - virtual wxToolBar* CreateToolBar(long style = wxNO_BORDER|wxTB_HORIZONTAL, wxWindowID id = -1, const wxString& name = wxToolBarNameStr); - virtual wxToolBar *OnCreateToolBar(long style, wxWindowID id, const wxString& name); - // If made known to the frame, the frame will manage it automatically. - virtual inline void SetToolBar(wxToolBar *toolbar) { m_frameToolBar = toolbar; } - virtual inline wxToolBar *GetToolBar() const { return m_frameToolBar; } - virtual void PositionToolBar(); - - // Set status line text - virtual void SetStatusText(const wxString& text, int number = 0); - - // Set status line widths - virtual void SetStatusWidths(int n, const int widths_field[]); - - // Hint to tell framework which status bar to use - // TODO: should this go into a wxFrameworkSettings class perhaps? - static void UseNativeStatusBar(bool useNative) { m_useNativeStatusBar = useNative; }; - static bool UsesNativeStatusBar() { return m_useNativeStatusBar; }; - - // Fit frame around subwindows - virtual void Fit(); - - // Iconize - virtual void Iconize(bool iconize); - - virtual bool IsIconized() const ; - - // Compatibility - inline bool Iconized() const { return IsIconized(); } - - virtual void Maximize(bool maximize); - - virtual void SetAcceleratorTable(const wxAcceleratorTable& accel); - - // Responds to colour changes - void OnSysColourChanged(wxSysColourChangedEvent& event); - - // Query app for menu item updates (called from OnIdle) - void DoMenuUpdates(); - void DoMenuUpdates(wxMenu* menu); - - // Checks if there is a toolbar, and returns the first free client position - virtual wxPoint GetClientAreaOrigin() const; - -protected: - wxMenuBar * m_frameMenuBar; - wxStatusBar * m_frameStatusBar; - wxIcon m_icon; - bool m_iconized; - static bool m_useNativeStatusBar; - wxToolBar * m_frameToolBar ; - wxAcceleratorTable m_acceleratorTable; - - DECLARE_EVENT_TABLE() -}; - -#endif - // _WX_FRAME_H_ diff --git a/include/wx/qt/gauge.h b/include/wx/qt/gauge.h deleted file mode 100644 index ce19d9ef1f..0000000000 --- a/include/wx/qt/gauge.h +++ /dev/null @@ -1,69 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: gauge.h -// Purpose: wxGauge class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_GAUGE_H_ -#define _WX_GAUGE_H_ - -#ifdef __GNUG__ -#pragma interface "gauge.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxGaugeNameStr; - -// Group box -class WXDLLEXPORT wxGauge: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxGauge) - public: - inline wxGauge() { m_rangeMax = 0; m_gaugePos = 0; } - - inline wxGauge(wxWindow *parent, wxWindowID id, - int range, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxGA_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxGaugeNameStr) - { - Create(parent, id, range, pos, size, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - int range, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxGA_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxGaugeNameStr); - - void SetShadowWidth(int w); - void SetBezelFace(int w); - void SetRange(int r); - void SetValue(int pos); - - int GetShadowWidth() const ; - int GetBezelFace() const ; - int GetRange() const ; - int GetValue() const ; - - void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - - virtual void Command(wxCommandEvent& WXUNUSED(event)) {} ; - - protected: - int m_rangeMax; - int m_gaugePos; -}; - -#endif - // _WX_GAUGE_H_ diff --git a/include/wx/qt/gdiobj.h b/include/wx/qt/gdiobj.h deleted file mode 100644 index 9263d4d6ad..0000000000 --- a/include/wx/qt/gdiobj.h +++ /dev/null @@ -1,48 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: gdiobj.h -// Purpose: wxGDIObject class: base class for other GDI classes -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_GDIOBJ_H_ -#define _WX_GDIOBJ_H_ - -#include "wx/object.h" - -#ifdef __GNUG__ -#pragma interface "gdiobj.h" -#endif - -class WXDLLEXPORT wxGDIRefData: public wxObjectRefData { -public: - inline wxGDIRefData() - { - } -}; - -#define M_GDIDATA ((wxGDIRefData *)m_refData) - -class WXDLLEXPORT wxGDIObject: public wxObject -{ -DECLARE_DYNAMIC_CLASS(wxGDIObject) - public: - inline wxGDIObject() { m_visible = FALSE; }; - inline ~wxGDIObject() {}; - - inline bool IsNull() const { return (m_refData == 0); } - - virtual bool GetVisible() { return m_visible; } - virtual void SetVisible(bool v) { m_visible = v; } - -protected: - bool m_visible; // Can a pointer to this object be safely taken? - // - only if created within FindOrCreate... -}; - -#endif - // _WX_GDIOBJ_H_ diff --git a/include/wx/qt/icon.h b/include/wx/qt/icon.h deleted file mode 100644 index f68c23154b..0000000000 --- a/include/wx/qt/icon.h +++ /dev/null @@ -1,107 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: icon.h -// Purpose: wxIcon class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_ICON_H_ -#define _WX_ICON_H_ - -#ifdef __GNUG__ -#pragma interface "icon.h" -#endif - -#include "wx/bitmap.h" - -class WXDLLEXPORT wxIconRefData: public wxBitmapRefData -{ - friend class WXDLLEXPORT wxBitmap; - friend class WXDLLEXPORT wxIcon; -public: - wxIconRefData(); - ~wxIconRefData(); - -public: -/* TODO: whatever your actual icon handle is - WXHICON m_hIcon; -*/ -}; - -#define M_ICONDATA ((wxIconRefData *)m_refData) -#define M_ICONHANDLERDATA ((wxIconRefData *)bitmap->GetRefData()) - -// Icon -class WXDLLEXPORT wxIcon: public wxBitmap -{ - DECLARE_DYNAMIC_CLASS(wxIcon) - -public: - wxIcon(); - - // Copy constructors - inline wxIcon(const wxIcon& icon) { Ref(icon); } - inline wxIcon(const wxIcon* icon) { if (icon) Ref(*icon); } - - wxIcon(const char bits[], int width, int height); - wxIcon(const wxString& name, long flags = wxBITMAP_TYPE_ICO_RESOURCE, - int desiredWidth = -1, int desiredHeight = -1); - ~wxIcon(); - - bool LoadFile(const wxString& name, long flags = wxBITMAP_TYPE_ICO_RESOURCE, - int desiredWidth = -1, int desiredHeight = -1); - - inline wxIcon& operator = (const wxIcon& icon) { if (*this == icon) return (*this); Ref(icon); return *this; } - inline bool operator == (const wxIcon& icon) { return m_refData == icon.m_refData; } - inline bool operator != (const wxIcon& icon) { return m_refData != icon.m_refData; } - -/* TODO: implementation - void SetHICON(WXHICON ico); - inline WXHICON GetHICON() const { return (M_ICONDATA ? M_ICONDATA->m_hIcon : 0); } -*/ - -/* TODO */ - virtual bool Ok() const { return (m_refData != NULL) ; } -}; - -/* Example handlers. TODO: write your own handlers for relevant types. - -class WXDLLEXPORT wxICOFileHandler: public wxBitmapHandler -{ - DECLARE_DYNAMIC_CLASS(wxICOFileHandler) -public: - inline wxICOFileHandler() - { - m_name = "ICO icon file"; - m_extension = "ico"; - m_type = wxBITMAP_TYPE_ICO; - }; - - virtual bool LoadFile(wxBitmap *bitmap, const wxString& name, long flags, - int desiredWidth = -1, int desiredHeight = -1); -}; - -class WXDLLEXPORT wxICOResourceHandler: public wxBitmapHandler -{ - DECLARE_DYNAMIC_CLASS(wxICOResourceHandler) -public: - inline wxICOResourceHandler() - { - m_name = "ICO resource"; - m_extension = "ico"; - m_type = wxBITMAP_TYPE_ICO_RESOURCE; - }; - - virtual bool LoadFile(wxBitmap *bitmap, const wxString& name, long flags, - int desiredWidth = -1, int desiredHeight = -1); - -}; - -*/ - -#endif - // _WX_ICON_H_ diff --git a/include/wx/qt/joystick.h b/include/wx/qt/joystick.h deleted file mode 100644 index 30324fc035..0000000000 --- a/include/wx/qt/joystick.h +++ /dev/null @@ -1,93 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: joystick.h -// Purpose: wxJoystick class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_JOYSTICK_H_ -#define _WX_JOYSTICK_H_ - -#ifdef __GNUG__ -#pragma interface "joystick.h" -#endif - -#include "wx/event.h" - -class WXDLLEXPORT wxJoystick: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxJoystick) - public: - /* - * Public interface - */ - - wxJoystick(int joystick = wxJOYSTICK1) { m_joystick = joystick; }; - - // Attributes - //////////////////////////////////////////////////////////////////////////// - - wxPoint GetPosition() const; - int GetZPosition() const; - int GetButtonState() const; - int GetPOVPosition() const; - int GetPOVCTSPosition() const; - int GetRudderPosition() const; - int GetUPosition() const; - int GetVPosition() const; - int GetMovementThreshold() const; - void SetMovementThreshold(int threshold) ; - - // Capabilities - //////////////////////////////////////////////////////////////////////////// - - bool IsOk() const; // Checks that the joystick is functioning - int GetNumberJoysticks() const ; - int GetManufacturerId() const ; - int GetProductId() const ; - wxString GetProductName() const ; - int GetXMin() const; - int GetYMin() const; - int GetZMin() const; - int GetXMax() const; - int GetYMax() const; - int GetZMax() const; - int GetNumberButtons() const; - int GetNumberAxes() const; - int GetMaxButtons() const; - int GetMaxAxes() const; - int GetPollingMin() const; - int GetPollingMax() const; - int GetRudderMin() const; - int GetRudderMax() const; - int GetUMin() const; - int GetUMax() const; - int GetVMin() const; - int GetVMax() const; - - bool HasRudder() const; - bool HasZ() const; - bool HasU() const; - bool HasV() const; - bool HasPOV() const; - bool HasPOV4Dir() const; - bool HasPOVCTS() const; - - // Operations - //////////////////////////////////////////////////////////////////////////// - - // pollingFreq = 0 means that movement events are sent when above the threshold. - // If pollingFreq > 0, events are received every this many milliseconds. - bool SetCapture(wxWindow* win, int pollingFreq = 0); - bool ReleaseCapture(); - -protected: - int m_joystick; -}; - -#endif - // _WX_JOYSTICK_H_ diff --git a/include/wx/qt/listbox.h b/include/wx/qt/listbox.h deleted file mode 100644 index d95db4379b..0000000000 --- a/include/wx/qt/listbox.h +++ /dev/null @@ -1,97 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: listbox.h -// Purpose: wxListBox class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_LISTBOX_H_ -#define _WX_LISTBOX_H_ - -#ifdef __GNUG__ -#pragma interface "listbox.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxListBoxNameStr; - -// forward decl for GetSelections() -class WXDLLEXPORT wxArrayInt; - -WXDLLEXPORT_DATA(extern const char*) wxEmptyString; - -// List box item -class WXDLLEXPORT wxListBox: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxListBox) - public: - - wxListBox(); - inline wxListBox(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = NULL, - long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxListBoxNameStr) - { - Create(parent, id, pos, size, n, choices, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = NULL, - long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxListBoxNameStr); - - ~wxListBox(); - - virtual void Append(const wxString& item); - virtual void Append(const wxString& item, char *clientData); - virtual void Set(int n, const wxString* choices, char **clientData = NULL); - virtual int FindString(const wxString& s) const ; - virtual void Clear(); - virtual void SetSelection(int n, bool select = TRUE); - - virtual void Deselect(int n); - - // For single choice list item only - virtual int GetSelection() const ; - virtual void Delete(int n); - virtual char *GetClientData(int n) const ; - virtual void SetClientData(int n, char *clientData); - virtual void SetString(int n, const wxString& s); - - // For single or multiple choice list item - virtual int GetSelections(wxArrayInt& aSelections) const; - virtual bool Selected(int n) const ; - virtual wxString GetString(int n) const ; - virtual void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - - // Set the specified item at the first visible item - // or scroll to max range. - virtual void SetFirstItem(int n) ; - virtual void SetFirstItem(const wxString& s) ; - - virtual void InsertItems(int nItems, const wxString items[], int pos); - - virtual wxString GetStringSelection() const ; - virtual bool SetStringSelection(const wxString& s, bool flag = TRUE); - virtual int Number() const ; - - void Command(wxCommandEvent& event); - - protected: - int m_noItems; - int m_selected; -}; - -#endif - // _WX_LISTBOX_H_ diff --git a/include/wx/qt/mdi.h b/include/wx/qt/mdi.h deleted file mode 100644 index 1daec94008..0000000000 --- a/include/wx/qt/mdi.h +++ /dev/null @@ -1,160 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: mdi.h -// Purpose: MDI (Multiple Document Interface) classes. -// This doesn't have to be implemented just like Windows, -// it could be a tabbed design as in wxGTK. -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_MDI_H_ -#define _WX_MDI_H_ - -#ifdef __GNUG__ -#pragma interface "mdi.h" -#endif - -#include "wx/frame.h" - -WXDLLEXPORT_DATA(extern const char*) wxFrameNameStr; -WXDLLEXPORT_DATA(extern const char*) wxStatusLineNameStr; - -class WXDLLEXPORT wxMDIClientWindow; -class WXDLLEXPORT wxMDIChildFrame; - -class WXDLLEXPORT wxMDIParentFrame: public wxFrame -{ -DECLARE_DYNAMIC_CLASS(wxMDIParentFrame) - - friend class WXDLLEXPORT wxMDIChildFrame; -public: - - wxMDIParentFrame(); - inline wxMDIParentFrame(wxWindow *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE | wxVSCROLL | wxHSCROLL, // Scrolling refers to client window - const wxString& name = wxFrameNameStr) - { - Create(parent, id, title, pos, size, style, name); - } - - ~wxMDIParentFrame(); - - bool Create(wxWindow *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE | wxVSCROLL | wxHSCROLL, - const wxString& name = wxFrameNameStr); - - void OnSize(wxSizeEvent& event); - void OnActivate(wxActivateEvent& event); - - void SetMenuBar(wxMenuBar *menu_bar); - - // Gets the size available for subwindows after menu size, toolbar size - // and status bar size have been subtracted. If you want to manage your own - // toolbar(s), don't call SetToolBar. - void GetClientSize(int *width, int *height) const; - - // Get the active MDI child window (Windows only) - wxMDIChildFrame *GetActiveChild() const ; - - // Get the client window - inline wxMDIClientWindow *GetClientWindow() const { return m_clientWindow; }; - - // Create the client window class (don't Create the window, - // just return a new class) - virtual wxMDIClientWindow *OnCreateClient() ; - - // MDI operations - virtual void Cascade(); - virtual void Tile(); - virtual void ArrangeIcons(); - virtual void ActivateNext(); - virtual void ActivatePrevious(); - -protected: - -DECLARE_EVENT_TABLE() -}; - -class WXDLLEXPORT wxMDIChildFrame: public wxFrame -{ -DECLARE_DYNAMIC_CLASS(wxMDIChildFrame) -public: - - wxMDIChildFrame(); - inline wxMDIChildFrame(wxMDIParentFrame *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE, - const wxString& name = wxFrameNameStr) - { - Create(parent, id, title, pos, size, style, name); - } - - ~wxMDIChildFrame(); - - bool Create(wxMDIParentFrame *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE, - const wxString& name = wxFrameNameStr); - - // Set menu bar - void SetMenuBar(wxMenuBar *menu_bar); - void SetClientSize(int width, int height); - void GetPosition(int *x, int *y) const ; - - // MDI operations - virtual void Maximize(); - virtual void Restore(); - virtual void Activate(); -}; - -/* The client window is a child of the parent MDI frame, and itself - * contains the child MDI frames. - * However, you create the MDI children as children of the MDI parent: - * only in the implementation does the client window become the parent - * of the children. Phew! So the children are sort of 'adopted'... - */ - -class WXDLLEXPORT wxMDIClientWindow: public wxWindow -{ - DECLARE_DYNAMIC_CLASS(wxMDIClientWindow) - public: - - wxMDIClientWindow() ; - inline wxMDIClientWindow(wxMDIParentFrame *parent, long style = 0) - { - CreateClient(parent, style); - } - - ~wxMDIClientWindow(); - - // Note: this is virtual, to allow overridden behaviour. - virtual bool CreateClient(wxMDIParentFrame *parent, long style = wxVSCROLL | wxHSCROLL); - - // Explicitly call default scroll behaviour - void OnScroll(wxScrollEvent& event); - -protected: - -DECLARE_EVENT_TABLE() -}; - -#endif - // _WX_MDI_H_ diff --git a/include/wx/qt/menu.h b/include/wx/qt/menu.h deleted file mode 100644 index 1654602141..0000000000 --- a/include/wx/qt/menu.h +++ /dev/null @@ -1,157 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: menu.h -// Purpose: wxMenu, wxMenuBar classes -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_MENU_H_ -#define _WX_MENU_H_ - -#ifdef __GNUG__ -#pragma interface "menu.h" -#endif - -#include "wx/defs.h" -#include "wx/event.h" - -class WXDLLEXPORT wxMenuItem; -class WXDLLEXPORT wxMenuBar; -class WXDLLEXPORT wxMenu; - -WXDLLEXPORT_DATA(extern const char*) wxEmptyString; - -// ---------------------------------------------------------------------------- -// Menu -// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxMenu: public wxEvtHandler -{ - DECLARE_DYNAMIC_CLASS(wxMenu) - -public: - // ctor & dtor - wxMenu(const wxString& title = wxEmptyString, const wxFunction func = NULL); - ~wxMenu(); - - // construct menu - // append items to the menu - // separator line - void AppendSeparator(); - // normal item - void Append(int id, const wxString& Label, const wxString& helpString = wxEmptyString, - bool checkable = FALSE); - // a submenu - void Append(int id, const wxString& Label, wxMenu *SubMenu, - const wxString& helpString = wxEmptyString); - // the most generic form (create wxMenuItem first and use it's functions) - void Append(wxMenuItem *pItem); - // insert a break in the menu - void Break(); - // delete an item - void Delete(int id); - - // menu item control - void Enable(int id, bool Flag); - bool Enabled(int id) const; - inline bool IsEnabled(int id) const { return Enabled(id); }; - void Check(int id, bool Flag); - bool Checked(int id) const; - inline bool IsChecked(int id) const { return IsChecked(id); }; - - // item properties - // title - void SetTitle(const wxString& label); - const wxString& GetTitle() const; - // label - void SetLabel(int id, const wxString& label); - wxString GetLabel(int id) const; - // help string - virtual void SetHelpString(int id, const wxString& helpString); - virtual wxString GetHelpString(int id) const ; - - // find item - // Finds the item id matching the given string, -1 if not found. - virtual int FindItem(const wxString& itemString) const ; - // Find wxMenuItem by ID, and item's menu too if itemMenu is !NULL. - wxMenuItem *FindItemForId(int itemId, wxMenu **itemMenu = NULL) const; - - void ProcessCommand(wxCommandEvent& event); - inline void Callback(const wxFunction func) { m_callback = func; } - - virtual void SetParent(wxEvtHandler *parent) { m_parent = parent; } - inline void SetEventHandler(wxEvtHandler *handler) { m_eventHandler = handler; } - inline wxEvtHandler *GetEventHandler() { return m_eventHandler; } - - inline wxList& GetItems() const { return (wxList&) m_menuItems; } - -public: - wxFunction m_callback; - - int m_noItems; - wxString m_title; - wxMenuBar * m_menuBar; - wxList m_menuItems; - wxEvtHandler * m_parent; - wxEvtHandler * m_eventHandler; -}; - -// ---------------------------------------------------------------------------- -// Menu Bar (a la Windows) -// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxFrame; -class WXDLLEXPORT wxMenuBar: public wxEvtHandler -{ - DECLARE_DYNAMIC_CLASS(wxMenuBar) - - wxMenuBar(); - wxMenuBar(int n, wxMenu *menus[], const wxString titles[]); - ~wxMenuBar(); - - void Append(wxMenu *menu, const wxString& title); - // Must only be used AFTER menu has been attached to frame, - // otherwise use individual menus to enable/disable items - void Enable(int Id, bool Flag); - bool Enabled(int Id) const ; - inline bool IsEnabled(int Id) const { return Enabled(Id); }; - void EnableTop(int pos, bool Flag); - void Check(int id, bool Flag); - bool Checked(int id) const ; - inline bool IsChecked(int Id) const { return Checked(Id); }; - void SetLabel(int id, const wxString& label) ; - wxString GetLabel(int id) const ; - void SetLabelTop(int pos, const wxString& label) ; - wxString GetLabelTop(int pos) const ; - virtual void Delete(wxMenu *menu, int index = 0); /* Menu not destroyed */ - virtual bool OnAppend(wxMenu *menu, const char *title); - virtual bool OnDelete(wxMenu *menu, int index); - - virtual void SetHelpString(int Id, const wxString& helpString); - virtual wxString GetHelpString(int Id) const ; - - virtual int FindMenuItem(const wxString& menuString, const wxString& itemString) const ; - - // Find wxMenuItem for item ID, and return item's - // menu too if itemMenu is non-NULL. - wxMenuItem *FindItemForId(int itemId, wxMenu **menuForItem = NULL) const ; - - inline void SetEventHandler(wxEvtHandler *handler) { m_eventHandler = handler; } - inline wxEvtHandler *GetEventHandler() { return m_eventHandler; } - - inline int GetMenuCount() const { return m_menuCount; } - inline wxMenu* GetMenu(int i) const { return m_menus[i]; } - - public: - wxEvtHandler * m_eventHandler; - int m_menuCount; - wxMenu ** m_menus; - wxString * m_titles; - wxFrame * m_menuBarFrame; -/* TODO: data that represents the actual menubar when created. - */ -}; - -#endif // _WX_MENU_H_ diff --git a/include/wx/qt/notebook.h b/include/wx/qt/notebook.h deleted file mode 100644 index b5834ec181..0000000000 --- a/include/wx/qt/notebook.h +++ /dev/null @@ -1,202 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: notebook.h -// Purpose: MSW/GTK compatible notebook (a.k.a. property sheet) -// Author: AUTHOR -// Modified by: -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_NOTEBOOK_H_ -#define _WX_NOTEBOOK_H_ - -#ifdef __GNUG__ -#pragma interface "notebook.h" -#endif - -// ---------------------------------------------------------------------------- -// headers -// ---------------------------------------------------------------------------- -#include - -// ---------------------------------------------------------------------------- -// types -// ---------------------------------------------------------------------------- - -// fwd declarations -class WXDLLEXPORT wxImageList; -class WXDLLEXPORT wxWindow; - -// array of notebook pages -typedef wxWindow wxNotebookPage; // so far, any window can be a page -WX_DEFINE_ARRAY(wxNotebookPage *, wxArrayPages); - -// ---------------------------------------------------------------------------- -// notebook events -// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxNotebookEvent : public wxCommandEvent -{ -public: - wxNotebookEvent(wxEventType commandType = wxEVT_NULL, int id = 0, - int nSel = -1, int nOldSel = -1) - : wxCommandEvent(commandType, id) { m_nSel = nSel; m_nOldSel = nOldSel; } - - // accessors - int GetSelection() const { return m_nSel; } - int GetOldSelection() const { return m_nOldSel; } - -private: - int m_nSel, // currently selected page - m_nOldSel; // previously selected page - - DECLARE_DYNAMIC_CLASS(wxNotebookEvent) -}; - -// ---------------------------------------------------------------------------- -// wxNotebook -// ---------------------------------------------------------------------------- - -// @@@ this class should really derive from wxTabCtrl, but the interface is not -// exactly the same, so I can't do it right now and instead we reimplement -// part of wxTabCtrl here -class wxNotebook : public wxControl -{ -public: - // ctors - // ----- - // default for dynamic class - wxNotebook(); - // the same arguments as for wxControl (@@@ any special styles?) - wxNotebook(wxWindow *parent, - wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = "notebook"); - // Create() function - bool Create(wxWindow *parent, - wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = "notebook"); - // dtor - ~wxNotebook(); - - // accessors - // --------- - // get number of pages in the dialog - int GetPageCount() const; - - // set the currently selected page, return the index of the previously - // selected one (or -1 on error) - // NB: this function will _not_ generate wxEVT_NOTEBOOK_PAGE_xxx events - int SetSelection(int nPage); - // cycle thru the tabs - void AdvanceSelection(bool bForward = TRUE); - // get the currently selected page - int GetSelection() const { return m_nSelection; } - - // set/get the title of a page - bool SetPageText(int nPage, const wxString& strText); - wxString GetPageText(int nPage) const; - - // image list stuff: each page may have an image associated with it. All - // the images belong to an image list, so you have to - // 1) create an image list - // 2) associate it with the notebook - // 3) set for each page it's image - // associate image list with a control - void SetImageList(wxImageList* imageList); - // get pointer (may be NULL) to the associated image list - wxImageList* GetImageList() const { return m_pImageList; } - - // sets/returns item's image index in the current image list - int GetPageImage(int nPage) const; - bool SetPageImage(int nPage, int nImage); - - // currently it's always 1 because wxGTK doesn't support multi-row - // tab controls - int GetRowCount() const; - - // control the appearance of the notebook pages - // set the size (the same for all pages) - void SetPageSize(const wxSize& size); - // set the padding between tabs (in pixels) - void SetPadding(const wxSize& padding); - - // operations - // ---------- - // remove one page from the notebook - bool DeletePage(int nPage); - // remove all pages - bool DeleteAllPages(); - // adds a new page to the notebook (it will be deleted ny the notebook, - // don't delete it yourself). If bSelect, this page becomes active. - bool AddPage(wxNotebookPage *pPage, - const wxString& strText, - bool bSelect = FALSE, - int imageId = -1); - // the same as AddPage(), but adds it at the specified position - bool InsertPage(int nPage, - wxNotebookPage *pPage, - const wxString& strText, - bool bSelect = FALSE, - int imageId = -1); - // get the panel which represents the given page - wxNotebookPage *GetPage(int nPage) { return m_aPages[nPage]; } - - // callbacks - // --------- - void OnSize(wxSizeEvent& event); - void OnSelChange(wxNotebookEvent& event); - void OnSetFocus(wxFocusEvent& event); - void OnNavigationKey(wxNavigationKeyEvent& event); - - // base class virtuals - // ------------------- - virtual void Command(wxCommandEvent& event); - virtual void SetConstraintSizes(bool recurse = TRUE); - virtual bool DoPhase(int nPhase); - -protected: - // common part of all ctors - void Init(); - - // helper functions - void ChangePage(int nOldSel, int nSel); // change pages - - wxImageList *m_pImageList; // we can have an associated image list - wxArrayPages m_aPages; // array of pages - - int m_nSelection; // the current selection (-1 if none) - - DECLARE_DYNAMIC_CLASS(wxNotebook) - DECLARE_EVENT_TABLE() -}; - -// ---------------------------------------------------------------------------- -// event macros -// ---------------------------------------------------------------------------- -typedef void (wxEvtHandler::*wxNotebookEventFunction)(wxNotebookEvent&); - -#define EVT_NOTEBOOK_PAGE_CHANGED(id, fn) \ - { \ - wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED, \ - id, \ - -1, \ - (wxObjectEventFunction)(wxEventFunction)(wxNotebookEventFunction) &fn, \ - NULL \ - }, - -#define EVT_NOTEBOOK_PAGE_CHANGING(id, fn) \ - { \ - wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING, \ \ - id, \ - -1, \ - (wxObjectEventFunction)(wxEventFunction)(wxNotebookEventFunction) &fn, \ - NULL \ - }, - -#endif // _WX_NOTEBOOK_H_ diff --git a/include/wx/qt/palette.h b/include/wx/qt/palette.h deleted file mode 100644 index a5c85bb1d0..0000000000 --- a/include/wx/qt/palette.h +++ /dev/null @@ -1,66 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: palette.h -// Purpose: wxPalette class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_PALETTE_H_ -#define _WX_PALETTE_H_ - -#ifdef __GNUG__ -#pragma interface "palette.h" -#endif - -#include "wx/gdiobj.h" - -class WXDLLEXPORT wxPalette; - -class WXDLLEXPORT wxPaletteRefData: public wxGDIRefData -{ - friend class WXDLLEXPORT wxPalette; -public: - wxPaletteRefData(); - ~wxPaletteRefData(); -/* TODO: implementation -protected: - WXHPALETTE m_hPalette; -*/ -}; - -#define M_PALETTEDATA ((wxPaletteRefData *)m_refData) - -class WXDLLEXPORT wxPalette: public wxGDIObject -{ - DECLARE_DYNAMIC_CLASS(wxPalette) - -public: - wxPalette(); - inline wxPalette(const wxPalette& palette) { Ref(palette); } - inline wxPalette(const wxPalette* palette) { UnRef(); if (palette) Ref(*palette); } - - wxPalette(int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue); - ~wxPalette(); - bool Create(int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue); - int GetPixel(const unsigned char red, const unsigned char green, const unsigned char blue) const; - bool GetRGB(int pixel, unsigned char *red, unsigned char *green, unsigned char *blue) const; - - virtual bool Ok() const { return (m_refData != NULL) ; } - - inline wxPalette& operator = (const wxPalette& palette) { if (*this == palette) return (*this); Ref(palette); return *this; } - inline bool operator == (const wxPalette& palette) { return m_refData == palette.m_refData; } - inline bool operator != (const wxPalette& palette) { return m_refData != palette.m_refData; } - - virtual bool FreeResource(bool force = FALSE); -/* TODO: implementation - inline WXHPALETTE GetHPALETTE() const { return (M_PALETTEDATA ? M_PALETTEDATA->m_hPalette : 0); } - void SetHPALETTE(WXHPALETTE pal); -*/ -}; - -#endif - // _WX_PALETTE_H_ diff --git a/include/wx/qt/pen.h b/include/wx/qt/pen.h deleted file mode 100644 index 0e23c99daf..0000000000 --- a/include/wx/qt/pen.h +++ /dev/null @@ -1,102 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: pen.h -// Purpose: wxPen class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_PEN_H_ -#define _WX_PEN_H_ - -#ifdef __GNUG__ -#pragma interface "pen.h" -#endif - -#include "wx/gdiobj.h" - -typedef WXDWORD wxDash ; - -class WXDLLEXPORT wxPen; - -class WXDLLEXPORT wxPenRefData: public wxGDIRefData -{ - friend class WXDLLEXPORT wxPen; -public: - wxPenRefData(); - wxPenRefData(const wxPenRefData& data); - ~wxPenRefData(); - -protected: - int m_width; - int m_style; - int m_join ; - int m_cap ; - wxBitmap m_stipple ; - int m_nbDash ; - wxDash * m_dash ; - wxColour m_colour; -/* TODO: implementation - WXHPEN m_hPen; -*/ -}; - -#define M_PENDATA ((wxPenRefData *)m_refData) - -// Pen -class WXDLLEXPORT wxPen: public wxGDIObject -{ - DECLARE_DYNAMIC_CLASS(wxPen) -public: - wxPen(); - wxPen(const wxColour& col, int width, int style); - wxPen(const wxString& col, int width, int style); - wxPen(const wxBitmap& stipple, int width); - inline wxPen(const wxPen& pen) { Ref(pen); } - inline wxPen(const wxPen* pen) { if (pen) Ref(*pen); } - ~wxPen(); - - inline wxPen& operator = (const wxPen& pen) { if (*this == pen) return (*this); Ref(pen); return *this; } - inline bool operator == (const wxPen& pen) { return m_refData == pen.m_refData; } - inline bool operator != (const wxPen& pen) { return m_refData != pen.m_refData; } - - virtual bool Ok() const { return (m_refData != NULL) ; } - - // Override in order to recreate the pen - void SetColour(const wxColour& col) ; - void SetColour(const wxString& col) ; - void SetColour(const unsigned char r, const unsigned char g, const unsigned char b) ; - - void SetWidth(int width) ; - void SetStyle(int style) ; - void SetStipple(const wxBitmap& stipple) ; - void SetDashes(int nb_dashes, const wxDash *dash) ; - void SetJoin(int join) ; - void SetCap(int cap) ; - - inline wxColour& GetColour() const { return (M_PENDATA ? M_PENDATA->m_colour : wxNullColour); }; - inline int GetWidth() const { return (M_PENDATA ? M_PENDATA->m_width : 0); }; - inline int GetStyle() const { return (M_PENDATA ? M_PENDATA->m_style : 0); }; - inline int GetJoin() const { return (M_PENDATA ? M_PENDATA->m_join : 0); }; - inline int GetCap() const { return (M_PENDATA ? M_PENDATA->m_cap : 0); }; - inline int GetDashes(wxDash **ptr) const { - *ptr = (M_PENDATA ? M_PENDATA->m_dash : NULL); return (M_PENDATA ? M_PENDATA->m_nbDash : 0); - } - - inline wxBitmap *GetStipple() const { return (M_PENDATA ? (& M_PENDATA->m_stipple) : NULL); }; - -// Implementation - - // Useful helper: create the brush resource - void RealizeResource(); - - // When setting properties, we must make sure we're not changing - // another object - void Unshare(); -}; - -#endif - // _WX_PEN_H_ diff --git a/include/wx/qt/radiobox.h b/include/wx/qt/radiobox.h deleted file mode 100644 index cb7c5ba405..0000000000 --- a/include/wx/qt/radiobox.h +++ /dev/null @@ -1,88 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: radiobox.h -// Purpose: wxRadioBox class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_RADIOBOX_H_ -#define _WX_RADIOBOX_H_ - -#ifdef __GNUG__ -#pragma interface "radiobox.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxRadioBoxNameStr; - -// List box item -class WXDLLEXPORT wxBitmap ; - -class WXDLLEXPORT wxRadioBox: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxRadioBox) -public: - wxRadioBox(); - - inline wxRadioBox(wxWindow *parent, wxWindowID id, const wxString& title, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = NULL, - int majorDim = 0, long style = wxRA_HORIZONTAL, - const wxValidator& val = wxDefaultValidator, const wxString& name = wxRadioBoxNameStr) - { - Create(parent, id, title, pos, size, n, choices, majorDim, style, val, name); - } - - ~wxRadioBox(); - - bool Create(wxWindow *parent, wxWindowID id, const wxString& title, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = NULL, - int majorDim = 0, long style = wxRA_HORIZONTAL, - const wxValidator& val = wxDefaultValidator, const wxString& name = wxRadioBoxNameStr); - - int FindString(const wxString& s) const; - void SetSelection(int N); - int GetSelection() const; - wxString GetString(int N) const; - void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - void GetSize(int *x, int *y) const; - void GetPosition(int *x, int *y) const; - wxString GetLabel() const; - void SetLabel(const wxString& label); - void SetLabel(int item, const wxString& label) ; - wxString GetLabel(int item) const; - bool Show(bool show); - void SetFocus(); - void Enable(bool enable); - void Enable(int item, bool enable); - void Show(int item, bool show) ; - inline void SetLabelFont(const wxFont& WXUNUSED(font)) {}; - inline void SetButtonFont(const wxFont& font) { SetFont(font); } - - virtual wxString GetStringSelection() const; - virtual bool SetStringSelection(const wxString& s); - inline virtual int Number() const { return m_noItems; } ; - void Command(wxCommandEvent& event); - - inline int GetNumberOfRowsOrCols() const { return m_noRowsOrCols; } - inline void SetNumberOfRowsOrCols(int n) { m_noRowsOrCols = n; } - -protected: -/* TODO: implementation - WXHWND * m_radioButtons; -*/ - int m_majorDim ; - int m_noItems; - int m_noRowsOrCols; - int m_selectedButton; - -}; - -#endif - // _WX_RADIOBOX_H_ diff --git a/include/wx/qt/radiobut.h b/include/wx/qt/radiobut.h deleted file mode 100644 index 7a4ce62d50..0000000000 --- a/include/wx/qt/radiobut.h +++ /dev/null @@ -1,92 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: radiobut.h -// Purpose: wxRadioButton class -// Author: AUTHOR -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_RADIOBUT_H_ -#define _WX_RADIOBUT_H_ - -#ifdef __GNUG__ -#pragma interface "radiobut.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxRadioButtonNameStr; - -class WXDLLEXPORT wxRadioButton: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxRadioButton) - protected: - public: - inline wxRadioButton() {} - inline wxRadioButton(wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxRadioButtonNameStr) - { - Create(parent, id, label, pos, size, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxRadioButtonNameStr); - - virtual void SetLabel(const wxString& label); - virtual void SetValue(bool val); - virtual bool GetValue() const ; - - void Command(wxCommandEvent& event); - virtual WXHBRUSH OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor, - WXUINT message, WXWPARAM wParam, WXLPARAM lParam); -}; - -// Not implemented -#if 0 -class WXDLLEXPORT wxBitmap ; - -WXDLLEXPORT_DATA(extern const char*) wxBitmapRadioButtonNameStr; - -class WXDLLEXPORT wxBitmapRadioButton: public wxRadioButton -{ - DECLARE_DYNAMIC_CLASS(wxBitmapRadioButton) - protected: - wxBitmap *theButtonBitmap; - public: - inline wxBitmapRadioButton() { theButtonBitmap = NULL; } - inline wxBitmapRadioButton(wxWindow *parent, wxWindowID id, - const wxBitmap *label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxBitmapRadioButtonNameStr) - { - Create(parent, id, label, pos, size, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - const wxBitmap *label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxBitmapRadioButtonNameStr); - - virtual void SetLabel(const wxBitmap *label); - virtual void SetValue(bool val) ; - virtual bool GetValue() const ; -}; -#endif - -#endif - // _WX_RADIOBUT_H_ diff --git a/include/wx/qt/region.h b/include/wx/qt/region.h deleted file mode 100644 index 02bf97845f..0000000000 --- a/include/wx/qt/region.h +++ /dev/null @@ -1,140 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: region.h -// Purpose: wxRegion class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_REGION_H_ -#define _WX_REGION_H_ - -#ifdef __GNUG__ -#pragma interface "region.h" -#endif - -#include "wx/list.h" -#include "wx/gdiobj.h" - -class WXDLLEXPORT wxRect; -class WXDLLEXPORT wxPoint; - -enum wxRegionContain { - wxOutRegion = 0, wxPartRegion = 1, wxInRegion = 2 -}; - -// So far, for internal use only -enum wxRegionOp { -wxRGN_AND, // Creates the intersection of the two combined regions. -wxRGN_COPY, // Creates a copy of the region identified by hrgnSrc1. -wxRGN_DIFF, // Combines the parts of hrgnSrc1 that are not part of hrgnSrc2. -wxRGN_OR, // Creates the union of two combined regions. -wxRGN_XOR // Creates the union of two combined regions except for any overlapping areas. -}; - -class WXDLLEXPORT wxRegion : public wxGDIObject { -DECLARE_DYNAMIC_CLASS(wxRegion); - friend class WXDLLEXPORT wxRegionIterator; -public: - wxRegion(long x, long y, long w, long h); - wxRegion(const wxPoint& topLeft, const wxPoint& bottomRight); - wxRegion(const wxRect& rect); - -/* TODO: implementation - wxRegion(WXHRGN hRegion); // Hangs on to this region -*/ - - wxRegion(); - ~wxRegion(); - - //# Copying - inline wxRegion(const wxRegion& r) - { Ref(r); } - inline wxRegion& operator = (const wxRegion& r) - { Ref(r); return (*this); } - - //# Modify region - // Clear current region - void Clear(); - - // Union rectangle or region with this. - inline bool Union(long x, long y, long width, long height) { return Combine(x, y, width, height, wxRGN_OR); } - inline bool Union(const wxRect& rect) { return Combine(rect, wxRGN_OR); } - inline bool Union(const wxRegion& region) { return Combine(region, wxRGN_OR); } - - // Intersect rectangle or region with this. - inline bool Intersect(long x, long y, long width, long height) { return Combine(x, y, width, height, wxRGN_AND); } - inline bool Intersect(const wxRect& rect) { return Combine(rect, wxRGN_AND); } - inline bool Intersect(const wxRegion& region) { return Combine(region, wxRGN_AND); } - - // Subtract rectangle or region from this: - // Combines the parts of 'this' that are not part of the second region. - inline bool Subtract(long x, long y, long width, long height) { return Combine(x, y, width, height, wxRGN_DIFF); } - inline bool Subtract(const wxRect& rect) { return Combine(rect, wxRGN_DIFF); } - inline bool Subtract(const wxRegion& region) { return Combine(region, wxRGN_DIFF); } - - // XOR: the union of two combined regions except for any overlapping areas. - inline bool Xor(long x, long y, long width, long height) { return Combine(x, y, width, height, wxRGN_XOR); } - inline bool Xor(const wxRect& rect) { return Combine(rect, wxRGN_XOR); } - inline bool Xor(const wxRegion& region) { return Combine(region, wxRGN_XOR); } - - //# Information on region - // Outer bounds of region - void GetBox(long& x, long& y, long&w, long &h) const; - wxRect GetBox() const ; - - // Is region empty? - bool Empty() const; - inline bool IsEmpty() const { return Empty(); } - - //# Tests - // Does the region contain the point (x,y)? - wxRegionContain Contains(long x, long y) const; - // Does the region contain the point pt? - wxRegionContain Contains(const wxPoint& pt) const; - // Does the region contain the rectangle (x, y, w, h)? - wxRegionContain Contains(long x, long y, long w, long h) const; - // Does the region contain the rectangle rect? - wxRegionContain Contains(const wxRect& rect) const; - -// Internal - bool Combine(long x, long y, long width, long height, wxRegionOp op); - bool Combine(const wxRegion& region, wxRegionOp op); - bool Combine(const wxRect& rect, wxRegionOp op); -}; - -class WXDLLEXPORT wxRegionIterator : public wxObject { -DECLARE_DYNAMIC_CLASS(wxRegionIterator); -public: - wxRegionIterator(); - wxRegionIterator(const wxRegion& region); - ~wxRegionIterator(); - - void Reset() { m_current = 0; } - void Reset(const wxRegion& region); - - operator bool () const { return m_current < m_numRects; } - bool HaveRects() const { return m_current < m_numRects; } - - void operator ++ (); - void operator ++ (int); - - long GetX() const; - long GetY() const; - long GetW() const; - long GetWidth() const { return GetW(); } - long GetH() const; - long GetHeight() const { return GetH(); } - -private: - long m_current; - long m_numRects; - wxRegion m_region; - wxRect* m_rects; -}; - -#endif - // _WX_REGION_H_ diff --git a/include/wx/qt/scrolbar.h b/include/wx/qt/scrolbar.h deleted file mode 100644 index eeef6727c5..0000000000 --- a/include/wx/qt/scrolbar.h +++ /dev/null @@ -1,68 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: scrollbar.h -// Purpose: wxScrollBar class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_SCROLBAR_H_ -#define _WX_SCROLBAR_H_ - -#ifdef __GNUG__ -#pragma interface "scrolbar.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxScrollBarNameStr; - -// Scrollbar item -class WXDLLEXPORT wxScrollBar: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxScrollBar) - -public: - inline wxScrollBar() { m_pageSize = 0; m_viewSize = 0; m_objectSize = 0; } - ~wxScrollBar(); - - inline wxScrollBar(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxSB_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxScrollBarNameStr) - { - Create(parent, id, pos, size, style, validator, name); - } - bool Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxSB_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxScrollBarNameStr); - - int GetPosition() const ; - inline int GetThumbSize() const { return m_pageSize; } - inline int GetPageSize() const { return m_viewSize; } - inline int GetRange() const { return m_objectSize; } - - virtual void SetPosition(int viewStart); - virtual void SetScrollbar(int position, int thumbSize, int range, int pageSize, - bool refresh = TRUE); - - void Command(wxCommandEvent& event); - -protected: - int m_pageSize; - int m_viewSize; - int m_objectSize; - -DECLARE_EVENT_TABLE() -}; - -#endif - // _WX_SCROLBAR_H_ diff --git a/include/wx/qt/settings.h b/include/wx/qt/settings.h deleted file mode 100644 index 7cd3cbe19e..0000000000 --- a/include/wx/qt/settings.h +++ /dev/null @@ -1,129 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: settings.h -// Purpose: wxSystemSettings class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_SETTINGS_H_ -#define _WX_SETTINGS_H_ - -#ifdef __GNUG__ -#pragma interface "settings.h" -#endif - -#include "wx/setup.h" - -#define wxSYS_WHITE_BRUSH 0 -#define wxSYS_LTGRAY_BRUSH 1 -#define wxSYS_GRAY_BRUSH 2 -#define wxSYS_DKGRAY_BRUSH 3 -#define wxSYS_BLACK_BRUSH 4 -#define wxSYS_NULL_BRUSH 5 -#define wxSYS_HOLLOW_BRUSH wxSYS_NULL_BRUSH -#define wxSYS_WHITE_PEN 6 -#define wxSYS_BLACK_PEN 7 -#define wxSYS_NULL_PEN 8 -#define wxSYS_OEM_FIXED_FONT 10 -#define wxSYS_ANSI_FIXED_FONT 11 -#define wxSYS_ANSI_VAR_FONT 12 -#define wxSYS_SYSTEM_FONT 13 -#define wxSYS_DEVICE_DEFAULT_FONT 14 -#define wxSYS_DEFAULT_PALETTE 15 -#define wxSYS_SYSTEM_FIXED_FONT 16 // Obsolete -#define wxSYS_DEFAULT_GUI_FONT 17 - -#define wxSYS_COLOUR_SCROLLBAR 0 -#define wxSYS_COLOUR_BACKGROUND 1 -#define wxSYS_COLOUR_ACTIVECAPTION 2 -#define wxSYS_COLOUR_INACTIVECAPTION 3 -#define wxSYS_COLOUR_MENU 4 -#define wxSYS_COLOUR_WINDOW 5 -#define wxSYS_COLOUR_WINDOWFRAME 6 -#define wxSYS_COLOUR_MENUTEXT 7 -#define wxSYS_COLOUR_WINDOWTEXT 8 -#define wxSYS_COLOUR_CAPTIONTEXT 9 -#define wxSYS_COLOUR_ACTIVEBORDER 10 -#define wxSYS_COLOUR_INACTIVEBORDER 11 -#define wxSYS_COLOUR_APPWORKSPACE 12 -#define wxSYS_COLOUR_HIGHLIGHT 13 -#define wxSYS_COLOUR_HIGHLIGHTTEXT 14 -#define wxSYS_COLOUR_BTNFACE 15 -#define wxSYS_COLOUR_BTNSHADOW 16 -#define wxSYS_COLOUR_GRAYTEXT 17 -#define wxSYS_COLOUR_BTNTEXT 18 -#define wxSYS_COLOUR_INACTIVECAPTIONTEXT 19 -#define wxSYS_COLOUR_BTNHIGHLIGHT 20 - -#define wxSYS_COLOUR_3DDKSHADOW 21 -#define wxSYS_COLOUR_3DLIGHT 22 -#define wxSYS_COLOUR_INFOTEXT 23 -#define wxSYS_COLOUR_INFOBK 24 - -#define wxSYS_COLOUR_DESKTOP wxSYS_COLOUR_BACKGROUND -#define wxSYS_COLOUR_3DFACE wxSYS_COLOUR_BTNFACE -#define wxSYS_COLOUR_3DSHADOW wxSYS_COLOUR_BTNSHADOW -#define wxSYS_COLOUR_3DHIGHLIGHT wxSYS_COLOUR_BTNHIGHLIGHT -#define wxSYS_COLOUR_3DHILIGHT wxSYS_COLOUR_BTNHIGHLIGHT -#define wxSYS_COLOUR_BTNHILIGHT wxSYS_COLOUR_BTNHIGHLIGHT - -// Metrics -#define wxSYS_MOUSE_BUTTONS 1 -#define wxSYS_BORDER_X 2 -#define wxSYS_BORDER_Y 3 -#define wxSYS_CURSOR_X 4 -#define wxSYS_CURSOR_Y 5 -#define wxSYS_DCLICK_X 6 -#define wxSYS_DCLICK_Y 7 -#define wxSYS_DRAG_X 8 -#define wxSYS_DRAG_Y 9 -#define wxSYS_EDGE_X 10 -#define wxSYS_EDGE_Y 11 -#define wxSYS_HSCROLL_ARROW_X 12 -#define wxSYS_HSCROLL_ARROW_Y 13 -#define wxSYS_HTHUMB_X 14 -#define wxSYS_ICON_X 15 -#define wxSYS_ICON_Y 16 -#define wxSYS_ICONSPACING_X 17 -#define wxSYS_ICONSPACING_Y 18 -#define wxSYS_WINDOWMIN_X 19 -#define wxSYS_WINDOWMIN_Y 20 -#define wxSYS_SCREEN_X 21 -#define wxSYS_SCREEN_Y 22 -#define wxSYS_FRAMESIZE_X 23 -#define wxSYS_FRAMESIZE_Y 24 -#define wxSYS_SMALLICON_X 25 -#define wxSYS_SMALLICON_Y 26 -#define wxSYS_HSCROLL_Y 27 -#define wxSYS_VSCROLL_X 28 -#define wxSYS_VSCROLL_ARROW_X 29 -#define wxSYS_VSCROLL_ARROW_Y 30 -#define wxSYS_VTHUMB_Y 31 -#define wxSYS_CAPTION_Y 32 -#define wxSYS_MENU_Y 33 -#define wxSYS_NETWORK_PRESENT 34 -#define wxSYS_PENWINDOWS_PRESENT 35 -#define wxSYS_SHOW_SOUNDS 36 -#define wxSYS_SWAP_BUTTONS 37 - -class WXDLLEXPORT wxSystemSettings: public wxObject -{ -public: - inline wxSystemSettings() {} - - // Get a system colour - static wxColour GetSystemColour(int index); - - // Get a system font - static wxFont GetSystemFont(int index); - - // Get a system metric, e.g. scrollbar size - static int GetSystemMetric(int index); -}; - -#endif - // _WX_SETTINGS_H_ diff --git a/include/wx/qt/slider.h b/include/wx/qt/slider.h deleted file mode 100644 index 239e914e5c..0000000000 --- a/include/wx/qt/slider.h +++ /dev/null @@ -1,91 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: slider.h -// Purpose: wxSlider class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_SLIDER_H_ -#define _WX_SLIDER_H_ - -#ifdef __GNUG__ -#pragma interface "slider.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxSliderNameStr; - -// Slider -class WXDLLEXPORT wxSlider: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxSlider) - -public: - wxSlider(); - - inline wxSlider(wxWindow *parent, wxWindowID id, - int value, int minValue, int maxValue, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxSL_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxSliderNameStr) - { - Create(parent, id, value, minValue, maxValue, pos, size, style, validator, name); - } - - ~wxSlider(); - - bool Create(wxWindow *parent, wxWindowID id, - int value, int minValue, int maxValue, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxSL_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxSliderNameStr); - - virtual int GetValue() const ; - virtual void SetValue(int); - void GetSize(int *x, int *y) const ; - void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - void GetPosition(int *x, int *y) const ; - bool Show(bool show); - - void SetRange(int minValue, int maxValue); - - inline int GetMin() const { return m_rangeMin; } - inline int GetMax() const { return m_rangeMax; } - - // For trackbars only - void SetTickFreq(int n, int pos); - inline int GetTickFreq() const { return m_tickFreq; } - void SetPageSize(int pageSize); - int GetPageSize() const ; - void ClearSel() ; - void ClearTicks() ; - void SetLineSize(int lineSize); - int GetLineSize() const ; - int GetSelEnd() const ; - int GetSelStart() const ; - void SetSelection(int minPos, int maxPos); - void SetThumbLength(int len) ; - int GetThumbLength() const ; - void SetTick(int tickPos) ; - - void Command(wxCommandEvent& event); - protected: - int m_rangeMin; - int m_rangeMax; - int m_pageSize; - int m_lineSize; - int m_tickFreq; -DECLARE_EVENT_TABLE() -}; - -#endif - // _WX_SLIDER_H_ diff --git a/include/wx/qt/statbmp.h b/include/wx/qt/statbmp.h deleted file mode 100644 index f371fddd2d..0000000000 --- a/include/wx/qt/statbmp.h +++ /dev/null @@ -1,64 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: statbmp.h -// Purpose: wxStaticBitmap class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_STATBMP_H_ -#define _WX_STATBMP_H_ - -#ifdef __GNUG__ -#pragma interface "statbmp.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxStaticBitmapNameStr; - -class WXDLLEXPORT wxStaticBitmap: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxStaticBitmap) - public: - inline wxStaticBitmap() { } - - inline wxStaticBitmap(wxWindow *parent, wxWindowID id, - const wxBitmap& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = wxStaticBitmapNameStr) - { - Create(parent, id, label, pos, size, style, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - const wxBitmap& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = wxStaticBitmapNameStr); - - virtual void SetBitmap(const wxBitmap& bitmap); - - virtual void Command(wxCommandEvent& WXUNUSED(event)) {}; - virtual void ProcessCommand(wxCommandEvent& WXUNUSED(event)) {}; - - void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - - inline wxBitmap& GetBitmap() const { return (wxBitmap&) m_messageBitmap; } - - // overriden base class virtuals - virtual bool AcceptsFocus() const { return FALSE; } - - protected: - wxBitmap m_messageBitmap; - -}; - -#endif - // _WX_STATBMP_H_ diff --git a/include/wx/qt/statbox.h b/include/wx/qt/statbox.h deleted file mode 100644 index 1aa4a6f88a..0000000000 --- a/include/wx/qt/statbox.h +++ /dev/null @@ -1,57 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: statbox.h -// Purpose: wxStaticBox class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_STATBOX_H_ -#define _WX_STATBOX_H_ - -#ifdef __GNUG__ -#pragma interface "statbox.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxStaticBoxNameStr; - -// Group box -class WXDLLEXPORT wxStaticBox: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxStaticBox) - - public: - inline wxStaticBox() {} - inline wxStaticBox(wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = wxStaticBoxNameStr) - { - Create(parent, id, label, pos, size, style, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = wxStaticBoxNameStr); - - virtual void Command(wxCommandEvent& WXUNUSED(event)) {}; - virtual void ProcessCommand(wxCommandEvent& WXUNUSED(event)) {}; - - void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - void SetLabel(const wxString& label); - -DECLARE_EVENT_TABLE() -}; - -#endif - // _WX_STATBOX_H_ diff --git a/include/wx/qt/stattext.h b/include/wx/qt/stattext.h deleted file mode 100644 index aa8eaf229e..0000000000 --- a/include/wx/qt/stattext.h +++ /dev/null @@ -1,56 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: stattext.h -// Purpose: wxStaticText class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_STATTEXT_H_ -#define _WX_STATTEXT_H_ - -#ifdef __GNUG__ -#pragma interface "stattext.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxStaticTextNameStr; - -class WXDLLEXPORT wxStaticText: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxStaticText) - public: - inline wxStaticText() { } - - inline wxStaticText(wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = wxStaticTextNameStr) - { - Create(parent, id, label, pos, size, style, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = wxStaticTextNameStr); - - // accessors - void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - void SetLabel(const wxString&); - - // operations - virtual void Command(wxCommandEvent& WXUNUSED(event)) {}; - virtual void ProcessCommand(wxCommandEvent& WXUNUSED(event)) {}; -}; - -#endif - // _WX_STATTEXT_H_ diff --git a/include/wx/qt/tbargtk.h b/include/wx/qt/tbargtk.h deleted file mode 100644 index f6a3636927..0000000000 --- a/include/wx/qt/tbargtk.h +++ /dev/null @@ -1,139 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: tbargtk.h -// Purpose: GTK toolbar -// Author: Robert Roebling -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __TBARGTKH__ -#define __TBARGTKH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/control.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxToolBarTool; -class wxToolBar; - -//----------------------------------------------------------------------------- -// constants -//----------------------------------------------------------------------------- - -#define wxTOOL_STYLE_BUTTON 1 -#define wxTOOL_STYLE_SEPARATOR 2 - -//----------------------------------------------------------------------------- -// global data -//----------------------------------------------------------------------------- - -extern const char *wxToolBarNameStr; - -//----------------------------------------------------------------------------- -// wxToolBarTool -//----------------------------------------------------------------------------- - -class wxToolBarTool: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxToolBarTool) - - public: - - wxToolBarTool(void) {}; - wxToolBarTool( wxToolBar *owner, int theIndex = 0, - const wxBitmap& bitmap1 = wxNullBitmap, const wxBitmap& bitmap2 = wxNullBitmap, - bool toggle = FALSE, wxObject *clientData = NULL, - const wxString& shortHelpString = "", const wxString& longHelpString = ""); - ~wxToolBarTool(void); - - public: - - int m_toolStyle; - wxObject *m_clientData; - int m_index; - bool m_toggleState; - bool m_isToggle; - bool m_deleteSecondBitmap; - bool m_enabled; - wxBitmap m_bitmap1; - wxBitmap m_bitmap2; - bool m_isMenuCommand; - wxString m_shortHelpString; - wxString m_longHelpString; - wxToolBar *m_owner; -}; - -//----------------------------------------------------------------------------- -// wxToolBar -//----------------------------------------------------------------------------- - -class wxToolBar: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxToolBar) - - public: - - wxToolBar(void); - wxToolBar( wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = 0, const wxString& name = wxToolBarNameStr ); - ~wxToolBar(void); - - bool Create( wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = 0, const wxString& name = wxToolBarNameStr); - - // Only allow toggle if returns TRUE. Call when left button up. - virtual bool OnLeftClick(int toolIndex, bool toggleDown); - - // Call when right button down. - virtual void OnRightClick(int toolIndex, float x, float y); - - // Called when the mouse cursor enters a tool bitmap. - // Argument is -1 if mouse is exiting the toolbar. - virtual void OnMouseEnter(int toolIndex); - - // If pushedBitmap is NULL, a reversed version of bitmap is - // created and used as the pushed/toggled image. - // If toggle is TRUE, the button toggles between the two states. - virtual wxToolBarTool *AddTool( int toolIndex, const wxBitmap& bitmap, - const wxBitmap& pushedBitmap = wxNullBitmap, bool toggle = FALSE, - float xPos = -1, float yPos = -1, wxObject *clientData = NULL, - const wxString& helpString1 = "", const wxString& helpString2 = ""); - virtual void AddSeparator(void); - virtual void ClearTools(void); - - virtual void Realize(void); - - virtual void EnableTool(int toolIndex, bool enable); - virtual void ToggleTool(int toolIndex, bool toggle); // toggle is TRUE if toggled on - virtual wxObject *GetToolClientData(int index) const; - - virtual bool GetToolState(int toolIndex) const; - virtual bool GetToolEnabled(int toolIndex) const; - - virtual void SetMargins(int x, int y); - void SetMargins(const wxSize& size) { SetMargins(size.x, size.y); }; - virtual void SetToolPacking(int packing); - virtual void SetToolSeparation(int separation); - - public: - - wxList m_tools; - - DECLARE_EVENT_TABLE() -}; - -#endif - // __TBARGTKH__ - diff --git a/include/wx/qt/textctrl.h b/include/wx/qt/textctrl.h deleted file mode 100644 index 26fe6548a3..0000000000 --- a/include/wx/qt/textctrl.h +++ /dev/null @@ -1,139 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: textctrl.h -// Purpose: wxTextCtrl class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_TEXTCTRL_H_ -#define _WX_TEXTCTRL_H_ - -#ifdef __GNUG__ -#pragma interface "textctrl.h" -#endif - -#include "wx/control.h" - -#if wxUSE_IOSTREAMH -#include -#else -#include -#endif - -WXDLLEXPORT_DATA(extern const char*) wxTextCtrlNameStr; -WXDLLEXPORT_DATA(extern const char*) wxEmptyString; - -// Single-line text item -class WXDLLEXPORT wxTextCtrl: public wxControl - -// TODO Some platforms/compilers don't like inheritance from streambuf. - -#if (defined(__BORLANDC__) && !defined(__WIN32__)) || defined(__MWERKS__) -#define NO_TEXT_WINDOW_STREAM -#endif - -#ifndef NO_TEXT_WINDOW_STREAM -, public streambuf -#endif - -{ - DECLARE_DYNAMIC_CLASS(wxTextCtrl) - -public: - // creation - // -------- - wxTextCtrl(); - inline wxTextCtrl(wxWindow *parent, wxWindowID id, - const wxString& value = wxEmptyString, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxTextCtrlNameStr) -#ifndef NO_TEXT_WINDOW_STREAM - :streambuf() -#endif - { - Create(parent, id, value, pos, size, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - const wxString& value = wxEmptyString, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxTextCtrlNameStr); - - // accessors - // --------- - virtual wxString GetValue() const ; - virtual void SetValue(const wxString& value); - - virtual int GetLineLength(long lineNo) const; - virtual wxString GetLineText(long lineNo) const; - virtual int GetNumberOfLines() const; - - // operations - // ---------- - virtual void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - - // Clipboard operations - virtual void Copy(); - virtual void Cut(); - virtual void Paste(); - - virtual void SetInsertionPoint(long pos); - virtual void SetInsertionPointEnd(); - virtual long GetInsertionPoint() const ; - virtual long GetLastPosition() const ; - virtual void Replace(long from, long to, const wxString& value); - virtual void Remove(long from, long to); - virtual void SetSelection(long from, long to); - virtual void SetEditable(bool editable); - - // streambuf implementation -#ifndef NO_TEXT_WINDOW_STREAM - int overflow(int i); - int sync(); - int underflow(); -#endif - - wxTextCtrl& operator<<(const wxString& s); - wxTextCtrl& operator<<(int i); - wxTextCtrl& operator<<(long i); - wxTextCtrl& operator<<(float f); - wxTextCtrl& operator<<(double d); - wxTextCtrl& operator<<(const char c); - - virtual bool LoadFile(const wxString& file); - virtual bool SaveFile(const wxString& file); - virtual void WriteText(const wxString& text); - virtual void DiscardEdits(); - virtual bool IsModified() const; - - virtual long XYToPosition(long x, long y) const ; - virtual void PositionToXY(long pos, long *x, long *y) const ; - virtual void ShowPosition(long pos); - virtual void Clear(); - - // callbacks - // --------- - void OnDropFiles(wxDropFilesEvent& event); - void OnChar(wxKeyEvent& event); // Process 'enter' if required - void OnEraseBackground(wxEraseEvent& event); - - // Implementation - // -------------- - virtual void Command(wxCommandEvent& event); - -protected: - wxString m_fileName; - - DECLARE_EVENT_TABLE() -}; - -#endif - // _WX_TEXTCTRL_H_ diff --git a/include/wx/qt/timer.h b/include/wx/qt/timer.h deleted file mode 100644 index 2dc0c5b486..0000000000 --- a/include/wx/qt/timer.h +++ /dev/null @@ -1,64 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: timer.h -// Purpose: wxTimer class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_TIMER_H_ -#define _WX_TIMER_H_ - -#ifdef __GNUG__ -#pragma interface "timer.h" -#endif - -#include "wx/object.h" - -class WXDLLEXPORT wxTimer: public wxObject -{ -public: - wxTimer(); - ~wxTimer(); - - virtual bool Start(int milliseconds = -1, - bool one_shot = FALSE); // Start timer - virtual void Stop(); // Stop timer - - virtual void Notify() = 0; // Override this member - - // Returns the current interval time (0 if stop) - int Interval() const { return milli; }; - bool OneShot() const { return oneShot; } - -protected: - bool oneShot ; - int milli ; - int lastMilli ; - - long id; - -private: - DECLARE_ABSTRACT_CLASS(wxTimer) -}; - -/* Note: these are implemented in common/timercmn.cpp, so need to implement them separately. - * But you may need to modify timercmn.cpp. - */ - -// Timer functions (milliseconds) -void WXDLLEXPORT wxStartTimer(); -// Gets time since last wxStartTimer or wxGetElapsedTime -long WXDLLEXPORT wxGetElapsedTime(bool resetTimer = TRUE); - -// EXPERIMENTAL: comment this out if it doesn't compile. -bool WXDLLEXPORT wxGetLocalTime(long *timeZone, int *dstObserved); - -// Get number of seconds since 00:00:00 GMT, Jan 1st 1970. -long WXDLLEXPORT wxGetCurrentTime(); - -#endif - // _WX_TIMER_H_ diff --git a/include/wx/qt/window.h b/include/wx/qt/window.h deleted file mode 100644 index cac783dfc4..0000000000 --- a/include/wx/qt/window.h +++ /dev/null @@ -1,547 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: window.h -// Purpose: wxWindow class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_WINDOW_H_ -#define _WX_WINDOW_H_ - -#ifdef __GNUG__ -#pragma interface "window.h" -#endif - -#include "wx/gdicmn.h" -#include "wx/icon.h" -#include "wx/cursor.h" -#include "wx/pen.h" -#include "wx/font.h" -#include "wx/validate.h" -#include "wx/event.h" -#include "wx/string.h" -#include "wx/list.h" -#include "wx/region.h" - -#define wxKEY_SHIFT 1 -#define wxKEY_CTRL 2 - -/* - * Base class for frame, panel, canvas, panel items, dialog box. - * - */ - -/* - * Event handler: windows have themselves as their event handlers - * by default, but their event handlers could be set to another - * object entirely. This separation can reduce the amount of - * derivation required, and allow alteration of a window's functionality - * (e.g. by a resource editor that temporarily switches event handlers). - */ - -class WXDLLEXPORT wxWindow; -class WXDLLEXPORT wxEvent; -class WXDLLEXPORT wxCommandEvent; -class WXDLLEXPORT wxKeyEvent; -class WXDLLEXPORT wxControl; -class WXDLLEXPORT wxCursor; -class WXDLLEXPORT wxColourMap; -class WXDLLEXPORT wxFont; -class WXDLLEXPORT wxMenu; -class WXDLLEXPORT wxRect; -class WXDLLEXPORT wxBitmap; -class WXDLLEXPORT wxSizer; -class WXDLLEXPORT wxList; -class WXDLLEXPORT wxLayoutConstraints; -class WXDLLEXPORT wxMouseEvent; -class WXDLLEXPORT wxButton; -class WXDLLEXPORT wxColour; -class WXDLLEXPORT wxBrush; -class WXDLLEXPORT wxPen; -class WXDLLEXPORT wxIcon; -class WXDLLEXPORT wxDC; -class WXDLLEXPORT wxValidator; - -#if wxUSE_DRAG_AND_DROP -class WXDLLEXPORT wxDropTarget; -#endif - -#if wxUSE_WX_RESOURCES -class WXDLLEXPORT wxResourceTable; -class WXDLLEXPORT wxItemResource; -#endif - -WXDLLEXPORT_DATA(extern const char*) wxPanelNameStr; - -WXDLLEXPORT_DATA(extern const wxSize) wxDefaultSize; -WXDLLEXPORT_DATA(extern const wxPoint) wxDefaultPosition; - -class WXDLLEXPORT wxWindow: public wxEvtHandler -{ - DECLARE_ABSTRACT_CLASS(wxWindow) - - friend class wxDC; - friend class wxPaintDC; - -public: - wxWindow(); - inline wxWindow(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = wxPanelNameStr) - { - m_children = new wxList; - Create(parent, id, pos, size, style, name); - } - - virtual ~wxWindow(); - - bool Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = wxPanelNameStr); - - // Fit the window around the items - virtual void Fit(); - - // Show or hide the window - virtual bool Show(bool show); - - // Is the window shown? - virtual bool IsShown() const; - - // Raise the window to the top of the Z order - virtual void Raise(); - - // Lower the window to the bottom of the Z order - virtual void Lower(); - - // Is the window enabled? - virtual bool IsEnabled() const; - - // For compatibility - inline bool Enabled() const { return IsEnabled(); } - - // Dialog support: override these and call - // base class members to add functionality - // that can't be done using validators. - - // Transfer values to controls. If returns FALSE, - // it's an application error (pops up a dialog) - virtual bool TransferDataToWindow(); - - // Transfer values from controls. If returns FALSE, - // transfer failed: don't quit - virtual bool TransferDataFromWindow(); - - // Validate controls. If returns FALSE, - // validation failed: don't quit - virtual bool Validate(); - - // Return code for dialogs - inline void SetReturnCode(int retCode); - inline int GetReturnCode(); - - // Set the cursor - virtual void SetCursor(const wxCursor& cursor); - inline virtual wxCursor *GetCursor() const { return (wxCursor *)& m_windowCursor; }; - - // Get the window with the focus - static wxWindow *FindFocus(); - - // Get character size - virtual int GetCharHeight() const; - virtual int GetCharWidth() const; - - // Get overall window size - virtual void GetSize(int *width, int *height) const; - - // Get window position, relative to parent (or screen if no parent) - virtual void GetPosition(int *x, int *y) const; - - // Get client (application-useable) size - virtual void GetClientSize(int *width, int *height) const; - - // Set overall size and position - virtual void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - inline virtual void SetSize(int width, int height) { SetSize(-1, -1, width, height, wxSIZE_USE_EXISTING); } - inline virtual void Move(int x, int y) { SetSize(x, y, -1, -1, wxSIZE_USE_EXISTING); } - - // Set client size - virtual void SetClientSize(int width, int size); - - // Convert client to screen coordinates - virtual void ClientToScreen(int *x, int *y) const; - - // Convert screen to client coordinates - virtual void ScreenToClient(int *x, int *y) const; - - // Set the focus to this window - virtual void SetFocus(); - - // Capture/release mouse - virtual void CaptureMouse(); - virtual void ReleaseMouse(); - - // Enable or disable the window - virtual void Enable(bool enable); - -#if wxUSE_DRAG_AND_DROP - // Associate a drop target with this window (if the window already had a drop - // target, it's deleted!) and return the current drop target (may be NULL). - void SetDropTarget(wxDropTarget *pDropTarget); - wxDropTarget *GetDropTarget() const { return m_pDropTarget; } -#endif - - // Accept files for dragging - virtual void DragAcceptFiles(bool accept); - - // Update region access - virtual wxRegion GetUpdateRegion() const; - virtual bool IsExposed(int x, int y, int w, int h) const; - virtual bool IsExposed(const wxPoint& pt) const; - virtual bool IsExposed(const wxRect& rect) const; - - // Set/get the window title - virtual inline void SetTitle(const wxString& WXUNUSED(title)) {}; - inline virtual wxString GetTitle() const { return wxString(""); }; - // Most windows have the concept of a label; for frames, this is the - // title; for items, this is the label or button text. - inline virtual wxString GetLabel() const { return GetTitle(); } - - // Set/get the window name (used for resource setting in X) - inline virtual wxString GetName() const; - inline virtual void SetName(const wxString& name); - - // Centre the window - virtual void Centre(int direction) ; - inline void Center(int direction = wxHORIZONTAL) { Centre(direction); } - - // Popup a menu - virtual bool PopupMenu(wxMenu *menu, int x, int y); - - // Send the window a refresh event - virtual void Refresh(bool eraseBack = TRUE, const wxRect *rect = NULL); - - // New functions that will replace the above. - virtual void SetScrollbar(int orient, int pos, int thumbVisible, - int range, bool refresh = TRUE); - - virtual void SetScrollPos(int orient, int pos, bool refresh = TRUE); - virtual int GetScrollPos(int orient) const; - virtual int GetScrollRange(int orient) const; - virtual int GetScrollThumb(int orient) const; - - virtual void ScrollWindow(int dx, int dy, const wxRect *rect = NULL); - - // Caret manipulation - virtual void CreateCaret(int w, int h); - virtual void CreateCaret(const wxBitmap *bitmap); - virtual void DestroyCaret(); - virtual void ShowCaret(bool show); - virtual void SetCaretPos(int x, int y); - virtual void GetCaretPos(int *x, int *y) const; - - // Tell window how much it can be sized - virtual void SetSizeHints(int minW = -1, int minH = -1, int maxW = -1, int maxH = -1, int incW = -1, int incH = -1); - - // Set/get the window's identifier - inline int GetId() const; - inline void SetId(int id); - - // Make the window modal (all other windows unresponsive) - virtual void MakeModal(bool modal); - - // Get the private handle (platform-dependent) - inline void *GetHandle() const; - - // Set/get the window's relatives - inline wxWindow *GetParent() const; - inline void SetParent(wxWindow *p) ; - inline wxWindow *GetGrandParent() const; - inline wxList *GetChildren() const; - - // Set/get the window's font - virtual void SetFont(const wxFont& f); - inline virtual wxFont *GetFont() const; - - // Set/get the window's validator - void SetValidator(const wxValidator& validator); - inline wxValidator *GetValidator() const; - - // Set/get the window's style - inline void SetWindowStyleFlag(long flag); - inline long GetWindowStyleFlag() const; - - // Set/get event handler - inline void SetEventHandler(wxEvtHandler *handler); - inline wxEvtHandler *GetEventHandler() const; - - // Push/pop event handler (i.e. allow a chain of event handlers - // be searched) - void PushEventHandler(wxEvtHandler *handler) ; - wxEvtHandler *PopEventHandler(bool deleteHandler = FALSE) ; - - // Close the window by calling OnClose, posting a deletion - virtual bool Close(bool force = FALSE); - - // Destroy the window (delayed, if a managed window) - virtual bool Destroy() ; - - // Mode for telling default OnSize members to - // call Layout(), if not using Sizers, just top-down constraints - inline void SetAutoLayout(bool a); - inline bool GetAutoLayout() const; - - // Set/get constraints - inline wxLayoutConstraints *GetConstraints() const; - void SetConstraints(wxLayoutConstraints *c); - - // Set/get window background colour - inline virtual void SetBackgroundColour(const wxColour& col); - inline virtual wxColour GetBackgroundColour() const; - - // Set/get window foreground colour - inline virtual void SetForegroundColour(const wxColour& col); - inline virtual wxColour GetForegroundColour() const; - - // Set/get window default background colour (for children to inherit). - // NOTE: these may be removed in later revisions. - inline virtual void SetDefaultBackgroundColour(const wxColour& col); - inline virtual wxColour GetDefaultBackgroundColour(void) const; - - // Set/get window default foreground colour (for children to inherit) - inline virtual void SetDefaultForegroundColour(const wxColour& col); - inline virtual wxColour GetDefaultForegroundColour(void) const; - - // Get the default button, if there is one - inline virtual wxButton *GetDefaultItem() const; - inline virtual void SetDefaultItem(wxButton *but); - - // Override to define new behaviour for default action (e.g. double clicking - // on a listbox) - virtual void OnDefaultAction(wxControl *initiatingItem); - - // Resource loading -#if wxUSE_WX_RESOURCES - virtual bool LoadFromResource(wxWindow *parent, const wxString& resourceName, const wxResourceTable *table = NULL); - virtual wxControl *CreateItem(const wxItemResource *childResource, const wxResourceTable *table = NULL); -#endif - - // Native resource loading - virtual bool LoadNativeDialog(wxWindow* parent, wxWindowID& id); - virtual bool LoadNativeDialog(wxWindow* parent, const wxString& name); - virtual wxWindow* GetWindowChild1(wxWindowID& id); - virtual wxWindow* GetWindowChild(wxWindowID& id); - - virtual void GetTextExtent(const wxString& string, int *x, int *y, - int *descent = NULL, - int *externalLeading = NULL, - const wxFont *theFont = NULL, bool use16 = FALSE) const; - - // Is the window retained? - inline bool IsRetained() const; - - // Warp the pointer the given position - virtual void WarpPointer(int x_pos, int y_pos) ; - - // Clear the window - virtual void Clear(); - - // Find a window by id or name - virtual wxWindow *FindWindow(long id); - virtual wxWindow *FindWindow(const wxString& name); - - // Constraint operations - bool Layout(); - void SetSizer(wxSizer *sizer); // Adds sizer child to this window - inline wxSizer *GetSizer() const ; - inline wxWindow *GetSizerParent() const ; - inline void SetSizerParent(wxWindow *win); - - // Do Update UI processing for controls - void UpdateWindowUI(); - - void OnEraseBackground(wxEraseEvent& event); - void OnChar(wxKeyEvent& event); - void OnPaint(wxPaintEvent& event); - void OnIdle(wxIdleEvent& event); - - // Does this window want to accept keyboard focus? - virtual bool AcceptsFocus() const; - -public: - //////////////////////////////////////////////////////////////////////// - //// IMPLEMENTATION - - // For implementation purposes - sometimes decorations make the client area - // smaller - virtual wxPoint GetClientAreaOrigin() const; - - // Makes an adjustment to the window position (for example, a frame that has - // a toolbar that it manages itself). - virtual void AdjustForParentClientOrigin(int& x, int& y, int sizeFlags); - - // Executes the default message - virtual long Default(); - -/* TODO: you may need something like this - // Determine whether 3D effects are wanted - virtual WXDWORD Determine3DEffects(WXDWORD defaultBorderStyle, bool *want3D); -*/ - - virtual void AddChild(wxWindow *child); // Adds reference to the child object - virtual void RemoveChild(wxWindow *child); // Removes reference to child - // (but doesn't delete the child object) - virtual void DestroyChildren(); // Removes and destroys all children - - // Constraint implementation - void UnsetConstraints(wxLayoutConstraints *c); - inline wxList *GetConstraintsInvolvedIn() const ; - // Back-pointer to other windows we're involved with, so if we delete - // this window, we must delete any constraints we're involved with. - void AddConstraintReference(wxWindow *otherWin); - void RemoveConstraintReference(wxWindow *otherWin); - void DeleteRelatedConstraints(); - - virtual void ResetConstraints(); - virtual void SetConstraintSizes(bool recurse = TRUE); - virtual bool LayoutPhase1(int *noChanges); - virtual bool LayoutPhase2(int *noChanges); - virtual bool DoPhase(int); - // Transforms from sizer coordinate space to actual - // parent coordinate space - virtual void TransformSizerToActual(int *x, int *y) const ; - - // Set size with transformation to actual coordinates if nec. - virtual void SizerSetSize(int x, int y, int w, int h); - virtual void SizerMove(int x, int y); - - // Only set/get the size/position of the constraint (if any) - virtual void SetSizeConstraint(int x, int y, int w, int h); - virtual void MoveConstraint(int x, int y); - virtual void GetSizeConstraint(int *w, int *h) const ; - virtual void GetClientSizeConstraint(int *w, int *h) const ; - virtual void GetPositionConstraint(int *x, int *y) const ; - - wxObject *GetChild(int number) const ; - - inline void SetShowing(bool show); - inline bool IsUserEnabled() const; - inline bool GetTransparentBackground() const ; - - // Responds to colour changes: passes event on to children. - void OnSysColourChanged(wxSysColourChangedEvent& event); - - // Transfers data to any child controls - void OnInitDialog(wxInitDialogEvent& event); - - // Sends an OnInitDialog event, which in turns transfers data to - // to the window via validators. - virtual void InitDialog(); - - //////////////////////////////////////////////////////////////////////// - //// PROTECTED DATA -protected: - int m_windowId; - long m_windowStyle; // Store the window's style - wxEvtHandler * m_windowEventHandler; // Usually is 'this' - wxLayoutConstraints * m_constraints; // Constraints for this window - wxList * m_constraintsInvolvedIn; // List of constraints we're involved in - wxSizer * m_windowSizer; // Window's top-level sizer (if any) - wxWindow * m_sizerParent; // Window's parent sizer (if any) - bool m_autoLayout; // Whether to call Layout() in OnSize - wxWindow * m_windowParent; // Each window always knows its parent - wxValidator * m_windowValidator; - int m_minSizeX; - int m_minSizeY; - int m_maxSizeX; - int m_maxSizeY; - - // Caret data - int m_caretWidth; - int m_caretHeight; - bool m_caretEnabled; - bool m_caretShown; - wxFont m_windowFont; // Window's font - wxCursor m_windowCursor; // Window's cursor - wxString m_windowName; // Window name - - wxButton * m_defaultItem; - - wxColour m_backgroundColour ; - wxColour m_foregroundColour ; - wxColour m_defaultBackgroundColour; - wxColour m_defaultForegroundColour; - -#if wxUSE_DRAG_AND_DROP - wxDropTarget *m_pDropTarget; // the current drop target or NULL -#endif //USE_DRAG_AND_DROP - -public: - wxRegion m_updateRegion; - wxList * m_children; // Window's children - int m_returnCode; - -DECLARE_EVENT_TABLE() -}; - -//////////////////////////////////////////////////////////////////////// -//// INLINES - -inline void *wxWindow::GetHandle() const { return (void *)NULL; } -inline int wxWindow::GetId() const { return m_windowId; } -inline void wxWindow::SetId(int id) { m_windowId = id; } -inline wxWindow *wxWindow::GetParent() const { return m_windowParent; } -inline void wxWindow::SetParent(wxWindow *p) { m_windowParent = p; } -inline wxWindow *wxWindow::GetGrandParent() const { return (m_windowParent ? m_windowParent->m_windowParent : NULL); } -inline wxList *wxWindow::GetChildren() const { return m_children; } -inline wxFont *wxWindow::GetFont() const { return (wxFont *) & m_windowFont; } -inline wxString wxWindow::GetName() const { return m_windowName; } -inline void wxWindow::SetName(const wxString& name) { m_windowName = name; } -inline long wxWindow::GetWindowStyleFlag() const { return m_windowStyle; } -inline void wxWindow::SetWindowStyleFlag(long flag) { m_windowStyle = flag; } -inline void wxWindow::SetDoubleClick(bool flag) { m_doubleClickAllowed = flag; } -inline bool wxWindow::GetDoubleClick() const { return m_doubleClickAllowed; } -inline void wxWindow::SetEventHandler(wxEvtHandler *handler) { m_windowEventHandler = handler; } -inline wxEvtHandler *wxWindow::GetEventHandler() const { return m_windowEventHandler; } -inline void wxWindow::SetAutoLayout(bool a) { m_autoLayout = a; } -inline bool wxWindow::GetAutoLayout() const { return m_autoLayout; } -inline wxLayoutConstraints *wxWindow::GetConstraints() const { return m_constraints; } -inline void wxWindow::SetBackgroundColour(const wxColour& col) { m_backgroundColour = col; }; -inline wxColour wxWindow::GetBackgroundColour() const { return m_backgroundColour; }; -inline void wxWindow::SetForegroundColour(const wxColour& col) { m_foregroundColour = col; }; -inline wxColour wxWindow::GetForegroundColour() const { return m_foregroundColour; }; -inline void wxWindow::SetDefaultForegroundColour(const wxColour& col) { m_defaultForegroundColour = col; }; -inline wxColour wxWindow::GetDefaultForegroundColour(void) const { return m_defaultForegroundColour; }; -inline void wxWindow::SetDefaultBackgroundColour(const wxColour& col) { m_defaultBackgroundColour = col; }; -inline wxColour wxWindow::GetDefaultBackgroundColour(void) const { return m_defaultBackgroundColour; }; - -inline wxButton *wxWindow::GetDefaultItem() const { return m_defaultItem; } -inline void wxWindow::SetDefaultItem(wxButton *but) { m_defaultItem = but; } -inline bool wxWindow::IsRetained() const { return ((m_windowStyle & wxRETAINED) == wxRETAINED); } - -inline void wxWindow::SetShowing(bool show) { m_isShown = show; } -inline wxList *wxWindow::GetConstraintsInvolvedIn() const { return m_constraintsInvolvedIn; } -inline wxSizer *wxWindow::GetSizer() const { return m_windowSizer; } -inline wxWindow *wxWindow::GetSizerParent() const { return m_sizerParent; } -inline void wxWindow::SetSizerParent(wxWindow *win) { m_sizerParent = win; } -inline wxValidator *wxWindow::GetValidator() const { return m_windowValidator; } -inline bool wxWindow::IsUserEnabled() const { return m_winEnabled; } -inline bool wxWindow::GetTransparentBackground() const { return m_backgroundTransparent; } -inline void wxWindow::SetReturnCode(int retCode) { m_returnCode = retCode; } -inline int wxWindow::GetReturnCode() { return m_returnCode; } - -// Get the active window. -wxWindow* WXDLLEXPORT wxGetActiveWindow(); - -WXDLLEXPORT_DATA(extern wxList) wxTopLevelWindows; - -#endif - // _WX_WINDOW_H_ diff --git a/include/wx/radiobox.h b/include/wx/radiobox.h deleted file mode 100644 index 2f0253ddb9..0000000000 --- a/include/wx/radiobox.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef _WX_RADIOBOX_H_BASE_ -#define _WX_RADIOBOX_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/radiobox.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/radiobox.h" -#elif defined(__WXGTK__) -#include "wx/gtk/radiobox.h" -#elif defined(__WXQT__) -#include "wx/qt/radiobox.h" -#elif defined(__WXMAC__) -#include "wx/mac/radiobox.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/radiobox.h" -#endif - -#endif - // _WX_RADIOBOX_H_BASE_ diff --git a/include/wx/radiobut.h b/include/wx/radiobut.h deleted file mode 100644 index ce602dcc0f..0000000000 --- a/include/wx/radiobut.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef _WX_RADIOBUT_H_BASE_ -#define _WX_RADIOBUT_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/radiobut.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/radiobut.h" -#elif defined(__WXGTK__) -#include "wx/gtk/radiobut.h" -#elif defined(__WXQT__) -#include "wx/qt/radiobut.h" -#elif defined(__WXMAC__) -#include "wx/mac/radiobut.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/radiobut.h" -#endif - -#endif - // _WX_RADIOBUT_H_BASE_ diff --git a/include/wx/region.h b/include/wx/region.h deleted file mode 100644 index 9c5afd22bc..0000000000 --- a/include/wx/region.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef _WX_REGION_H_BASE_ -#define _WX_REGION_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/region.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/region.h" -#elif defined(__WXGTK__) -#include "wx/gtk/region.h" -#elif defined(__WXQT__) -#include "wx/qt/region.h" -#elif defined(__WXMAC__) -#include "wx/mac/region.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/region.h" -#endif - -#endif - // _WX_REGION_H_BASE_ diff --git a/include/wx/resource.h b/include/wx/resource.h deleted file mode 100644 index 74fa153f01..0000000000 --- a/include/wx/resource.h +++ /dev/null @@ -1,194 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: resource.h -// Purpose: Resource processing -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_RESOURCEH__ -#define _WX_RESOURCEH__ - -#ifdef __GNUG__ -#pragma interface "resource.h" -#endif - -#include "wx/setup.h" - -#if wxUSE_WX_RESOURCES -#include - -// A few further types not in wx_types.h -#define wxRESOURCE_TYPE_SEPARATOR 1000 -#define wxRESOURCE_TYPE_XBM_DATA 1001 -#define wxRESOURCE_TYPE_XPM_DATA 1002 - -#define RESOURCE_PLATFORM_WINDOWS 1 -#define RESOURCE_PLATFORM_X 2 -#define RESOURCE_PLATFORM_MAC 3 -#define RESOURCE_PLATFORM_ANY 4 - -// Extended styles: for resource usage only - -// Use dialog units instead of pixels -#define wxRESOURCE_DIALOG_UNITS 1 -// Use default system colour and font -#define wxRESOURCE_USE_DEFAULTS 2 - -// Macros to help use dialog units -#define wxDLG_POINT(x, y, parent, useDlgUnits) (useDlgUnits ? parent->ConvertDialogToPixel(wxPoint(x, y)) : wxPoint(x, y)) -#define wxDLG_SIZE(x, y, parent, useDlgUnits) (useDlgUnits ? parent->ConvertDialogToPixel(wxSize(x, y)) : wxSize(x, y)) - -#ifdef FindResource -#undef FindResource -#endif - -/* - * Internal format for control/panel item - */ - -class WXDLLEXPORT wxItemResource: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxItemResource) - - public: - - wxItemResource(); - ~wxItemResource(); - - inline void SetType(const wxString& type) { m_itemType = type; } - inline void SetStyle(long styl) { m_windowStyle = styl; } - inline void SetId(int id) { m_windowId = id; } - inline void SetBitmap(const wxBitmap& bm) { m_bitmap = bm; } - inline wxBitmap& GetBitmap() const { return (wxBitmap&) m_bitmap; } - inline void SetFont(const wxFont& font) { m_windowFont = font; } - inline wxFont& GetFont() const { return (wxFont&) m_windowFont; } - inline void SetSize(int xx, int yy, int ww, int hh) - { m_x = xx; m_y = yy; m_width = ww; m_height = hh; } - inline void SetTitle(const wxString& title) { m_title = title; } - inline void SetName(const wxString& name) { m_name = name; } - inline void SetValue1(long v) { m_value1 = v; } - inline void SetValue2(long v) { m_value2 = v; } - inline void SetValue3(long v) { m_value3 = v; } - inline void SetValue5(long v) { m_value5 = v; } - inline void SetValue4(const wxString& v) { m_value4 = v; } - inline void SetStringValues(const wxStringList& svalues) { m_stringValues = svalues; } - - inline wxString GetType() const { return m_itemType; } - inline int GetX() const { return m_x; } - inline int GetY() const { return m_y; } - inline int GetWidth() const { return m_width; } - inline int GetHeight() const { return m_height; } - - inline wxString GetTitle() const { return m_title; } - inline wxString GetName() const { return m_name; } - inline long GetStyle() const { return m_windowStyle; } - inline int GetId() const { return m_windowId; } - - inline long GetValue1() const { return m_value1; } - inline long GetValue2() const { return m_value2; } - inline long GetValue3() const { return m_value3; } - inline long GetValue5() const { return m_value5; } - inline wxString GetValue4() const { return m_value4; } - inline wxList& GetChildren() const { return (wxList&) m_children; } - inline wxStringList& GetStringValues() const { return (wxStringList&) m_stringValues; } - - inline void SetBackgroundColour(const wxColour& col) { m_backgroundColour = col; } - inline void SetLabelColour(const wxColour& col) { m_labelColour = col; } - inline void SetButtonColour(const wxColour& col) { m_buttonColour = col; } - - inline wxColour& GetBackgroundColour() const { return (wxColour&) m_backgroundColour; } - inline wxColour& GetLabelColour() const { return (wxColour&) m_labelColour; } - inline wxColour& GetButtonColour() const { return (wxColour&) m_buttonColour; } - - inline void SetResourceStyle(long style) { m_exStyle = style; } - inline long GetResourceStyle() const { return m_exStyle; } - - protected: - wxList m_children; - wxString m_itemType; - int m_x, m_y, m_width, m_height; - wxString m_title; - wxString m_name; - long m_windowStyle; - long m_value1, m_value2, m_value3, m_value5; - wxString m_value4; - int m_windowId; - wxStringList m_stringValues; // Optional string values - wxBitmap m_bitmap; - wxColour m_backgroundColour; - wxColour m_labelColour; - wxColour m_buttonColour; - wxFont m_windowFont; - long m_exStyle; // Extended, resource-specific styles -}; - -/* - * Resource table (normally only one of these) - */ - -class WXDLLEXPORT wxResourceTable: public wxHashTable -{ - DECLARE_DYNAMIC_CLASS(wxResourceTable) - - protected: - - public: - wxHashTable identifiers; - - wxResourceTable(); - ~wxResourceTable(); - - virtual wxItemResource *FindResource(const wxString& name) const; - virtual void AddResource(wxItemResource *item); - virtual bool DeleteResource(const wxString& name); - - virtual bool ParseResourceFile(const wxString& filename); - virtual bool ParseResourceData(const wxString& data); - virtual bool SaveResource(const wxString& filename); - - // Register XBM/XPM data - virtual bool RegisterResourceBitmapData(const wxString& name, char bits[], int width, int height); - virtual bool RegisterResourceBitmapData(const wxString& name, char **data); - - virtual wxControl *CreateItem(wxWindow *panel, const wxItemResource* childResource, const wxItemResource* parentResource) const; - - virtual void ClearTable(); -}; - -WXDLLEXPORT extern void wxInitializeResourceSystem(); -WXDLLEXPORT extern void wxCleanUpResourceSystem(); - -WXDLLEXPORT_DATA(extern wxResourceTable*) wxDefaultResourceTable; -WXDLLEXPORT extern long wxParseWindowStyle(const wxString& style); - -class WXDLLEXPORT wxMenuBar; -class WXDLLEXPORT wxMenu; -class WXDLLEXPORT wxBitmap; -class WXDLLEXPORT wxIcon; -WXDLLEXPORT extern wxBitmap wxResourceCreateBitmap(const wxString& resource, wxResourceTable *table = (wxResourceTable *) NULL); -WXDLLEXPORT extern wxIcon wxResourceCreateIcon(const wxString& resource, wxResourceTable *table = (wxResourceTable *) NULL); -WXDLLEXPORT extern wxMenuBar* wxResourceCreateMenuBar(const wxString& resource, wxResourceTable *table = (wxResourceTable *) NULL, wxMenuBar *menuBar = (wxMenuBar *) NULL); -WXDLLEXPORT extern wxMenu* wxResourceCreateMenu(const wxString& resource, wxResourceTable *table = (wxResourceTable *) NULL); -WXDLLEXPORT extern bool wxResourceParseData(const wxString& resource, wxResourceTable *table = (wxResourceTable *) NULL); -WXDLLEXPORT extern bool wxResourceParseFile(const wxString& filename, wxResourceTable *table = (wxResourceTable *) NULL); -WXDLLEXPORT extern bool wxResourceParseString(char* s, wxResourceTable *table = (wxResourceTable *) NULL); -WXDLLEXPORT extern void wxResourceClear(wxResourceTable *table = (wxResourceTable *) NULL); -// Register XBM/XPM data -WXDLLEXPORT extern bool wxResourceRegisterBitmapData(const wxString& name, char bits[], int width, int height, wxResourceTable *table = (wxResourceTable *) NULL); -WXDLLEXPORT extern bool wxResourceRegisterBitmapData(const wxString& name, char **data, wxResourceTable *table = (wxResourceTable *) NULL); -#define wxResourceRegisterIconData wxResourceRegisterBitmapData - -/* - * Resource identifer code: #define storage - */ - -WXDLLEXPORT extern bool wxResourceAddIdentifier(const wxString& name, int value, wxResourceTable *table = (wxResourceTable *) NULL); -WXDLLEXPORT extern int wxResourceGetIdentifier(const wxString& name, wxResourceTable *table = (wxResourceTable *) NULL); - -#endif -#endif - // _WX_RESOURCEH__ diff --git a/include/wx/sashwin.h b/include/wx/sashwin.h deleted file mode 100644 index 6b46b6348f..0000000000 --- a/include/wx/sashwin.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef _WX_SASHWIN_H_BASE_ -#define _WX_SASHWIN_H_BASE_ - -#include "wx/generic/sashwin.h" - -#endif - // _WX_SASHWIN_H_BASE_ diff --git a/include/wx/sckaddr.h b/include/wx/sckaddr.h deleted file mode 100644 index 392a9d1387..0000000000 --- a/include/wx/sckaddr.h +++ /dev/null @@ -1,136 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: sckaddr.h -// Purpose: Network address classes -// Author: Guilhem Lavaux -// Modified by: -// Created: 26/04/1997 -// RCS-ID: $Id$ -// Copyright: (c) 1997, 1998 Guilhem Lavaux -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// -#ifndef _WX_NETWORK_ADDRESS_H -#define _WX_NETWORK_ADDRESS_H - -#if defined(__WINDOWS__) && defined(WXSOCK_INTERNAL) -#include - -#elif defined(__UNIX__) && defined(WXSOCK_INTERNAL) - -#include -#include -#include -#endif - -#ifdef __GNUG__ -#pragma interface -#endif - -#ifdef WXPREC -#include -#else -#include -#endif - -class WXDLLEXPORT wxSockAddress : public wxObject { - DECLARE_ABSTRACT_CLASS(wxSockAddress) -public: - typedef enum { IPV4=1, IPV6=2, UNIX=3 } Addr; - - wxSockAddress() {}; - virtual ~wxSockAddress() {}; - - virtual void Clear() = 0; - - virtual void Build(struct sockaddr*& addr, size_t& len) = 0; - virtual void Disassemble(struct sockaddr *addr, size_t len) = 0; - virtual int SockAddrLen() = 0; - - virtual int GetFamily() = 0; - virtual int Type() = 0; -}; - -class WXDLLEXPORT wxIPV4address : public wxSockAddress { - DECLARE_DYNAMIC_CLASS(wxIPV4address) -private: - struct sockaddr_in *m_addr; -public: - wxIPV4address(); - virtual ~wxIPV4address(); - - virtual void Clear(); -// const wxSockAddress& operator =(const wxSockAddress& addr); - - virtual bool Hostname(const wxString& name); - virtual bool Hostname(unsigned long addr); - virtual bool Service(const wxString& name); - virtual bool Service(unsigned short port); - virtual bool LocalHost(); - - wxString Hostname(); - unsigned short Service(); - - void Build(struct sockaddr*& addr, size_t& len); - void Disassemble(struct sockaddr *addr, size_t len); - - inline int SockAddrLen(); - inline int GetFamily(); - inline int Type() { return wxSockAddress::IPV4; } -}; - -#ifdef ENABLE_IPV6 -class WXDLLEXPORT wxIPV6address : public wxSockAddress { - DECLARE_DYNAMIC_CLASS(wxIPV6address) -private: - struct sockaddr_in6 *m_addr; -public: - wxIPV6address(); - ~wxIPV6address(); - - void Clear(); -// const wxSockAddress& operator =(const wxSockAddress& addr); - - bool Hostname(const wxString& name); - bool Hostname(unsigned char addr[16]); - bool Service(const wxString& name); - bool Service(unsigned short port); - bool LocalHost(); - - wxString Hostname() const; - unsigned short Service() const; - - void Build(struct sockaddr*& addr, size_t& len); - void Disassemble(struct sockaddr *addr, size_t len); - - inline int SockAddrLen(); - inline int GetFamily(); - inline int Type() { return wxSockAddress::IPV6; } -}; -#endif - -#ifdef __UNIX__ -#include - -class WXDLLEXPORT wxUNIXaddress : public wxSockAddress { - DECLARE_DYNAMIC_CLASS(wxUNIXaddress) -private: - struct sockaddr_un *m_addr; -public: - wxUNIXaddress(); - ~wxUNIXaddress(); - - void Clear(); -// const wxSockAddress& operator =(const wxSockAddress& addr); - - void Filename(const wxString& name); - wxString Filename(); - - void Build(struct sockaddr*& addr, size_t& len); - void Disassemble(struct sockaddr *addr, size_t len); - - inline int SockAddrLen(); - inline int GetFamily(); - inline int Type() { return wxSockAddress::UNIX; } -}; -#endif - -#endif diff --git a/include/wx/sckipc.h b/include/wx/sckipc.h deleted file mode 100644 index f0a80d8cbb..0000000000 --- a/include/wx/sckipc.h +++ /dev/null @@ -1,133 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: sckipc.h -// Purpose: Interprocess communication -// Author: Julian Smart/Guilhem Lavaux (big rewrite) -// Modified by: Guilhem Lavaux 1997 -// Created: 1993 -// RCS-ID: $Id$ -// Copyright: (c) 1993 Julian Smart -// (c) 1997, 1998 Guilhem Lavaux -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// -#ifndef _WX_SCKIPC_H -#define _WX_SCKIPC_H - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/setup.h" -#include "wx/ipcbase.h" -#include "wx/socket.h" -#include "wx/sckstrm.h" -#include "wx/datstrm.h" - -/* - * Mini-DDE implementation - - Most transactions involve a topic name and an item name (choose these - as befits your application). - - A client can: - - - ask the server to execute commands (data) associated with a topic - - request data from server by topic and item - - poke data into the server - - ask the server to start an advice loop on topic/item - - ask the server to stop an advice loop - - A server can: - - - respond to execute, request, poke and advice start/stop - - send advise data to client - - Note that this limits the server in the ways it can send data to the - client, i.e. it can't send unsolicited information. - * - */ - -class wxTCPServer; -class wxTCPClient; -class wxTCPConnection: public wxConnectionBase -{ - DECLARE_DYNAMIC_CLASS(wxTCPConnection) - -protected: - wxSocketBase *m_sock; - wxSocketStream *m_sockstrm; - wxDataInputStream *m_codeci; - wxDataOutputStream *m_codeco; - wxString m_topic; - - friend class wxTCPServer; - friend class wxTCPClient; - friend void Client_OnRequest(wxSocketBase&, - wxSocketBase::wxRequestEvent, char *); - friend void Server_OnRequest(wxSocketServer&, - wxSocketBase::wxRequestEvent, char *); -public: - - wxTCPConnection(char *buffer, int size); - wxTCPConnection(); - virtual ~wxTCPConnection(); - - // Calls that CLIENT can make - bool Execute(char *data, int size = -1, - wxIPCFormat format = wxIPC_TEXT); - char *Request(const wxString& item, int *size = NULL, - wxIPCFormat format = wxIPC_TEXT); - bool Poke(const wxString& item, char *data, int size = -1, - wxIPCFormat format = wxIPC_TEXT); - bool StartAdvise(const wxString& item); - bool StopAdvise(const wxString& item); - - // Calls that SERVER can make - bool Advise(const wxString& item, char *data, int size = -1, - wxIPCFormat format = wxIPC_TEXT); - - // Calls that both can make - bool Disconnect(); - - // Called when we lost the peer. - bool OnDisconnect() { return TRUE; } - - // To enable the compressor - void Compress(bool on); -}; - -class wxTCPServer: public wxServerBase -{ - DECLARE_DYNAMIC_CLASS(wxTCPServer) - -public: - wxTCPConnection *topLevelConnection; - - wxTCPServer(); - virtual ~wxTCPServer(); - - // Returns FALSE if can't create server (e.g. port number is already in use) - virtual bool Create(const wxString& server_name); - virtual wxConnectionBase *OnAcceptConnection(const wxString& topic); -}; - -class wxTCPClient: public wxClientBase -{ - DECLARE_DYNAMIC_CLASS(wxTCPClient) - -public: - wxTCPClient(); - virtual ~wxTCPClient(); - - virtual bool ValidHost(const wxString& host); - // Call this to make a connection. - // Returns NULL if cannot. - virtual wxConnectionBase *MakeConnection(const wxString& host, - const wxString& server, - const wxString& topic); - - // Tailor this to return own connection. - virtual wxConnectionBase *OnMakeConnection(); -}; - -#endif // ipcsock.h diff --git a/include/wx/sckstrm.h b/include/wx/sckstrm.h deleted file mode 100644 index 0f05c8c3f7..0000000000 --- a/include/wx/sckstrm.h +++ /dev/null @@ -1,61 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: sckstrm.h -// Purpose: wxSocket*Stream -// Author: Guilhem Lavaux -// Modified by: -// Created: 17/07/97 -// RCS-ID: $Id$ -// Copyright: (c) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// -#ifndef __SCK_STREAM_H__ -#define __SCK_STREAM_H__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/stream.h" -#include "wx/socket.h" - -class WXDLLEXPORT wxSocketOutputStream : public wxOutputStream -{ - public: - wxSocketOutputStream(wxSocketBase& s); - ~wxSocketOutputStream(); - - wxOutputStream& Write(const void *buffer, size_t size); - off_t SeekO( off_t WXUNUSED(pos), wxSeekMode WXUNUSED(mode) ) - { return -1; } - off_t TellO() - { return -1; } - - protected: - wxSocketBase *m_o_socket; -}; - -class WXDLLEXPORT wxSocketInputStream : public wxInputStream -{ - public: - wxSocketInputStream(wxSocketBase& s); - ~wxSocketInputStream(); - - wxInputStream& Read(void *buffer, size_t size); - off_t SeekI( off_t WXUNUSED(pos), wxSeekMode WXUNUSED(mode) ) - { return -1; } - off_t TellI() - { return -1; } - - protected: - wxSocketBase *m_i_socket; -}; - -class WXDLLEXPORT wxSocketStream : public wxSocketInputStream, - public wxSocketOutputStream -{ - public: - wxSocketStream(wxSocketBase& s); - ~wxSocketStream(); -}; - -#endif diff --git a/include/wx/scrolbar.h b/include/wx/scrolbar.h deleted file mode 100644 index 49f9a11b05..0000000000 --- a/include/wx/scrolbar.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef _WX_SCROLBAR_H_BASE_ -#define _WX_SCROLBAR_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/scrolbar.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/scrolbar.h" -#elif defined(__WXGTK__) -#include "wx/gtk/scrolbar.h" -#elif defined(__WXQT__) -#include "wx/qt/scrolbar.h" -#elif defined(__WXMAC__) -#include "wx/mac/scrolbar.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/scrolbar.h" -#endif - -#endif - // _WX_SCROLBAR_H_BASE_ diff --git a/include/wx/scrolwin.h b/include/wx/scrolwin.h deleted file mode 100644 index 44298184bb..0000000000 --- a/include/wx/scrolwin.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef _WX_SCROLWIN_H_BASE_ -#define _WX_SCROLWIN_H_BASE_ - -#include "wx/generic/scrolwin.h" - -#endif - // _WX_SCROLWIN_H_BASE_ diff --git a/include/wx/serbase.h b/include/wx/serbase.h deleted file mode 100644 index 1abe0e30c2..0000000000 --- a/include/wx/serbase.h +++ /dev/null @@ -1,60 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: serbase.h -// Purpose: Serialization plug-ins -// Author: Guilhem Lavaux -// Modified by: -// Created: July 1998 -// RCS-ID: $Id$ -// Copyright: (c) Guilhem Lavaux -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// -#ifndef _WX_WX_SERBASEH_H__ -#define _WX_WX_SERBASEH_H__ - -#include - -#define WXSERIAL(classname) classname##_Serialize - -class wxObject_Serialize : public wxObject { - DECLARE_DYNAMIC_CLASS(wxObject_Serialize) - public: - wxObject_Serialize() {} - virtual ~wxObject_Serialize() {} - - void SetObject(wxObject *obj) { m_object = obj; } - wxObject *Object() { return m_object; } - - protected: - wxObject *m_object; -}; - - -#define DECLARE_SERIAL_CLASS(classname, parent) \ -class WXSERIAL(classname) : public WXSERIAL(parent) { \ - DECLARE_DYNAMIC_CLASS(classname##_Serialize) \ - public: \ - WXSERIAL(classname)() { } \ - virtual ~WXSERIAL(classname)() { } \ -\ - virtual void StoreObject(wxObjectOutputStream& stream); \ - virtual void LoadObject(wxObjectInputStream& stream); \ -}; - -#define DECLARE_ALIAS_SERIAL_CLASS(classname, parent) \ -class WXSERIAL(classname) : public WXSERIAL(parent) { \ - DECLARE_DYNAMIC_CLASS(classname##_Serialize) \ - public: \ - WXSERIAL(classname)() { } \ - virtual ~WXSERIAL(classname)() { } \ -}; - -#define IMPLEMENT_SERIAL_CLASS(classname, parent) \ -IMPLEMENT_DYNAMIC_CLASS(classname##_Serialize, parent##_Serialize) - -#define IMPLEMENT_ALIAS_SERIAL_CLASS(classname, parent) \ -IMPLEMENT_DYNAMIC_CLASS(classname##_Serialize, parent##_Serialize) - -DECLARE_SERIAL_CLASS(wxList, wxObject) -DECLARE_SERIAL_CLASS(wxHashTable, wxObject) - -#endif diff --git a/include/wx/settings.h b/include/wx/settings.h deleted file mode 100644 index 1dfc5d9280..0000000000 --- a/include/wx/settings.h +++ /dev/null @@ -1,123 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: settings.h -// Purpose: wxSystemSettings defines; includes platform settings.h -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_SETTINGS_H_BASE_ -#define _WX_SETTINGS_H_BASE_ - -#define wxSYS_WHITE_BRUSH 0 -#define wxSYS_LTGRAY_BRUSH 1 -#define wxSYS_GRAY_BRUSH 2 -#define wxSYS_DKGRAY_BRUSH 3 -#define wxSYS_BLACK_BRUSH 4 -#define wxSYS_NULL_BRUSH 5 -#define wxSYS_HOLLOW_BRUSH wxSYS_NULL_BRUSH -#define wxSYS_WHITE_PEN 6 -#define wxSYS_BLACK_PEN 7 -#define wxSYS_NULL_PEN 8 -#define wxSYS_OEM_FIXED_FONT 10 -#define wxSYS_ANSI_FIXED_FONT 11 -#define wxSYS_ANSI_VAR_FONT 12 -#define wxSYS_SYSTEM_FONT 13 -#define wxSYS_DEVICE_DEFAULT_FONT 14 -#define wxSYS_DEFAULT_PALETTE 15 -#define wxSYS_SYSTEM_FIXED_FONT 16 -#define wxSYS_DEFAULT_GUI_FONT 17 - -#define wxSYS_COLOUR_SCROLLBAR 0 -#define wxSYS_COLOUR_BACKGROUND 1 -#define wxSYS_COLOUR_ACTIVECAPTION 2 -#define wxSYS_COLOUR_INACTIVECAPTION 3 -#define wxSYS_COLOUR_MENU 4 -#define wxSYS_COLOUR_WINDOW 5 -#define wxSYS_COLOUR_WINDOWFRAME 6 -#define wxSYS_COLOUR_MENUTEXT 7 -#define wxSYS_COLOUR_WINDOWTEXT 8 -#define wxSYS_COLOUR_CAPTIONTEXT 9 -#define wxSYS_COLOUR_ACTIVEBORDER 10 -#define wxSYS_COLOUR_INACTIVEBORDER 11 -#define wxSYS_COLOUR_APPWORKSPACE 12 -#define wxSYS_COLOUR_HIGHLIGHT 13 -#define wxSYS_COLOUR_HIGHLIGHTTEXT 14 -#define wxSYS_COLOUR_BTNFACE 15 -#define wxSYS_COLOUR_BTNSHADOW 16 -#define wxSYS_COLOUR_GRAYTEXT 17 -#define wxSYS_COLOUR_BTNTEXT 18 -#define wxSYS_COLOUR_INACTIVECAPTIONTEXT 19 -#define wxSYS_COLOUR_BTNHIGHLIGHT 20 - -#define wxSYS_COLOUR_3DDKSHADOW 21 -#define wxSYS_COLOUR_3DLIGHT 22 -#define wxSYS_COLOUR_INFOTEXT 23 -#define wxSYS_COLOUR_INFOBK 24 - -#define wxSYS_COLOUR_DESKTOP wxSYS_COLOUR_BACKGROUND -#define wxSYS_COLOUR_3DFACE wxSYS_COLOUR_BTNFACE -#define wxSYS_COLOUR_3DSHADOW wxSYS_COLOUR_BTNSHADOW -#define wxSYS_COLOUR_3DHIGHLIGHT wxSYS_COLOUR_BTNHIGHLIGHT -#define wxSYS_COLOUR_3DHILIGHT wxSYS_COLOUR_BTNHIGHLIGHT -#define wxSYS_COLOUR_BTNHILIGHT wxSYS_COLOUR_BTNHIGHLIGHT - -// Metrics -#define wxSYS_MOUSE_BUTTONS 1 -#define wxSYS_BORDER_X 2 -#define wxSYS_BORDER_Y 3 -#define wxSYS_CURSOR_X 4 -#define wxSYS_CURSOR_Y 5 -#define wxSYS_DCLICK_X 6 -#define wxSYS_DCLICK_Y 7 -#define wxSYS_DRAG_X 8 -#define wxSYS_DRAG_Y 9 -#define wxSYS_EDGE_X 10 -#define wxSYS_EDGE_Y 11 -#define wxSYS_HSCROLL_ARROW_X 12 -#define wxSYS_HSCROLL_ARROW_Y 13 -#define wxSYS_HTHUMB_X 14 -#define wxSYS_ICON_X 15 -#define wxSYS_ICON_Y 16 -#define wxSYS_ICONSPACING_X 17 -#define wxSYS_ICONSPACING_Y 18 -#define wxSYS_WINDOWMIN_X 19 -#define wxSYS_WINDOWMIN_Y 20 -#define wxSYS_SCREEN_X 21 -#define wxSYS_SCREEN_Y 22 -#define wxSYS_FRAMESIZE_X 23 -#define wxSYS_FRAMESIZE_Y 24 -#define wxSYS_SMALLICON_X 25 -#define wxSYS_SMALLICON_Y 26 -#define wxSYS_HSCROLL_Y 27 -#define wxSYS_VSCROLL_X 28 -#define wxSYS_VSCROLL_ARROW_X 29 -#define wxSYS_VSCROLL_ARROW_Y 30 -#define wxSYS_VTHUMB_Y 31 -#define wxSYS_CAPTION_Y 32 -#define wxSYS_MENU_Y 33 -#define wxSYS_NETWORK_PRESENT 34 -#define wxSYS_PENWINDOWS_PRESENT 35 -#define wxSYS_SHOW_SOUNDS 36 -#define wxSYS_SWAP_BUTTONS 37 - -#if defined(__WXMSW__) -#include "wx/msw/settings.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/settings.h" -#elif defined(__WXGTK__) -#include "wx/gtk/settings.h" -#elif defined(__WXQT__) -#include "wx/qt/settings.h" -#elif defined(__WXMAC__) -#include "wx/mac/settings.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/settings.h" -#endif - -#endif - // _WX_SETTINGS_H_BASE_ - diff --git a/include/wx/setup.h b/include/wx/setup.h deleted file mode 100644 index 54936598ae..0000000000 --- a/include/wx/setup.h +++ /dev/null @@ -1,26 +0,0 @@ - -#ifndef _WX_SETUP_H_BASE_ -#define _WX_SETUP_H_BASE_ - -/* compatibility code, to be removed asap: */ - -#if !defined(__WXMSW__) && !defined(__WXGTK__) && !defined(__WXMOTIF__) && !defined(__WXQT__) && !defined(__WXSTUBS__) && !defined(__WXMAC__) -# error No __WXxxx__ define set! Please define one of __WXGTK__,__WXMSW__,__WXMOTIF__,__WXMAC__,__WXQT__,__WXSTUBS__ -#endif - -#if defined(__WXMSW__) -#include "wx/msw/setup.h" -#elif defined(__WXMAC__) -#include "wx/mac/setup.h" -#elif defined(__WXQT__) -#include "wx/qt/setup.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/setup.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/setup.h" -#elif defined(__WXGTK__) -#include "wx/gtk/setup.h" -#endif - -#endif - /* _WX_SETUP_H_BASE_ */ diff --git a/include/wx/slider.h b/include/wx/slider.h deleted file mode 100644 index 739a311aa5..0000000000 --- a/include/wx/slider.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef _WX_SLIDER_H_BASE_ -#define _WX_SLIDER_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/slider.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/slider.h" -#elif defined(__WXGTK__) -#include "wx/gtk/slider.h" -#elif defined(__WXQT__) -#include "wx/qt/slider.h" -#elif defined(__WXMAC__) -#include "wx/mac/slider.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/slider.h" -#endif - -#endif - // _WX_SLIDER_H_BASE_ diff --git a/include/wx/socket.h b/include/wx/socket.h deleted file mode 100644 index ebd5a5ecd6..0000000000 --- a/include/wx/socket.h +++ /dev/null @@ -1,349 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: socket.h -// Purpose: Socket handling classes -// Author: Guilhem Lavaux -// Modified by: -// Created: April 1997 -// RCS-ID: $Id$ -// Copyright: (c) Guilhem Lavaux -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_NETWORK_SOCKET_H -#define _WX_NETWORK_SOCKET_H - -#ifdef __GNUG__ -#pragma interface "socket.h" -#endif - -// --------------------------------------------------------------------------- -// Windows(tm) specific -// --------------------------------------------------------------------------- -#if defined(__WINDOWS__) && defined(WXSOCK_INTERNAL) -#include -#include - -struct wxSockInternal { - UINT my_msg; -}; - -struct wxSockHandlerInternal { - HWND sockWin; - UINT firstAvailableMsg; -}; -#endif // defined(__WINDOWS__) && defined(WXSOCK_INTERNAL) - -// --------------------------------------------------------------------------- -// Unix specific -// --------------------------------------------------------------------------- -#if defined(__UNIX__) && defined(WXSOCK_INTERNAL) -#include -#include -#include - -// --------------------------------------------------------------------------- -// Athena specific -// --------------------------------------------------------------------------- -#if defined(__WXXT__) || defined(__WXMOTIF__) -#include - -struct wxSockInternal { - XtInputId sock_inputid, sock_outputid, sock_exceptid; -}; -#endif - -// --------------------------------------------------------------------------- -// GTK specific -// --------------------------------------------------------------------------- -#if defined(__WXGTK__) -#include - -struct wxSockInternal { - gint sock_inputid, sock_outputid, sock_exceptid; -}; -#endif - -#endif // defined(__UNIX__) && defined(WXSOCK_INTERNAL) - -// --------------------------------------------------------------------------- -// wxSocket headers (generic) -// --------------------------------------------------------------------------- -#ifdef WXPREC -#include -#else -#include -#endif -#include "wx/sckaddr.h" - -class WXDLLEXPORT wxSocketEvent; -class WXDLLEXPORT wxSocketHandler; -class WXDLLEXPORT wxSocketBase : public wxEvtHandler -{ - DECLARE_CLASS(wxSocketBase) -#ifdef __WXMAC__ -friend void wxMacSocketOnRequestProc(void *refcon , short event) ; -#endif -public: - - enum wxSockFlags { NONE=0, NOWAIT=1, WAITALL=2, SPEED=4 }; - // Type of request - enum { REQ_READ=0x1, REQ_PEEK=0x2, REQ_WRITE=0x4, REQ_LOST=0x8, - REQ_ACCEPT=0x10, REQ_CONNECT=0x20}; - enum { EVT_READ=0, EVT_PEEK=1, EVT_WRITE=2, EVT_LOST=3, EVT_ACCEPT=4, - EVT_CONNECT=5 }; - - typedef int wxRequestNotify; - typedef int wxRequestEvent; - typedef void (*wxSockCbk)(wxSocketBase& sock,wxRequestEvent evt,char *cdata); - -protected: - wxList req_list[EVT_WRITE+1]; - - // Internal use for SaveState() and RestoreState() - class wxSockState : public wxObject { - public: - bool cbk_on; - wxSockCbk cbk; - char *cdata; - bool notif; - wxRequestNotify cbk_set; - wxSockFlags flags; - }; - typedef struct { - char sig[4]; - char len[4]; - } SockMsg; - enum wxSockType { SOCK_CLIENT, SOCK_SERVER, SOCK_INTERNAL, SOCK_UNINIT }; - - wxSockFlags m_flags; - wxSockType m_type; // wxSocket type - bool m_connected, m_connecting; // State of the socket - int m_fd; // Socket file descriptors - int m_waitflags; // Wait flags - wxList m_states; // States list - wxSockCbk m_cbk; // C callback - char *m_cdata; // C callback data - int m_id; // Socket id (for event handler) - wxSocketHandler *m_handler; // the current socket handler - wxRequestNotify m_neededreq; // Specify which requet signals we need - bool m_cbkon; - char *m_unread; // The unread buf - size_t m_unrd_size; // The size of the unread buf - bool m_processing; // To prevent some endless loop - unsigned long m_timeout; - int m_wantbuf; - size_t m_lcount; // Last IO request size - int m_error; // Last IO error - bool m_notifyme; - - struct wxSockInternal *m_internal; // System specific variables - -public: - wxSocketBase(); - virtual ~wxSocketBase(); - virtual bool Close(); - - // Base IO - wxSocketBase& Peek(char* buffer, size_t nbytes); - wxSocketBase& Read(char* buffer, size_t nbytes); - wxSocketBase& Write(const char *buffer, size_t nbytes); - wxSocketBase& WriteMsg(const char *buffer, size_t nbytes); - wxSocketBase& ReadMsg(char* buffer, size_t nbytes); - wxSocketBase& Unread(const char *buffer, size_t nbytes); - void Discard(); - - // Try not to use this two methods (they sould be protected) - void CreatePushbackAfter(const char *buffer, size_t size); - void CreatePushbackBefore(const char *buffer, size_t size); - - // Status - inline bool Ok() const { return (m_fd < 0 ? 0 : 1); }; - inline bool Error() const { return (m_error != 0); }; - inline bool IsConnected() const { return m_connected; }; - inline bool IsDisconnected() const { return !IsConnected(); }; - inline bool IsNoWait() const { return m_flags & NOWAIT; }; - bool IsData() const; - inline size_t LastCount() const { return m_lcount; } - inline int LastError() const { return m_error; } - - inline void SetFlags(wxSockFlags _flags); - inline void SetTimeout(unsigned long sec) { m_timeout = sec; } - - // seconds = -1 means infinite wait - // seconds = 0 means no wait - // seconds > 0 means specified wait - bool Wait(long seconds = -1, long microseconds = 0); - bool WaitForRead(long seconds = -1, long microseconds = 0); - bool WaitForWrite(long seconds = -1, long microseconds = 0); - bool WaitForLost(long seconds = -1, long microseconds = 0); - - // Save the current state of Socket - void SaveState(); - void RestoreState(); - - // Setup external callback - wxSockCbk Callback(wxSockCbk cbk_); - char *CallbackData(char *data); - - // Setup event handler - void SetEventHandler(wxEvtHandler& evt_hdlr, int id = -1); - - // Method called when it happens something on the socket - void SetNotify(wxRequestNotify flags); - virtual void OnRequest(wxRequestEvent req_evt); - - // Public internal callback - virtual void OldOnNotify(wxRequestEvent WXUNUSED(evt)); - - // Some info on the socket... - virtual bool GetPeer(wxSockAddress& addr_man) const; - virtual bool GetLocal(wxSockAddress& addr_man) const; - - // Install or uninstall callbacks - void Notify(bool notify); - - // So you can know what the socket driver is looking for ... - inline wxRequestNotify NeededReq() const { return m_neededreq; } - - static wxRequestNotify EventToNotify(wxRequestEvent evt); - -protected: - friend class wxSocketServer; - friend class wxSocketHandler; - -#ifdef __SALFORDC__ -public: -#endif - - wxSocketBase(wxSockFlags flags, wxSockType type); - -#ifdef __SALFORDC__ -protected: -#endif - - bool _Wait(long seconds, long microseconds, int type); - - // Set "my" handler - inline virtual void SetHandler(wxSocketHandler *handler) - { m_handler = handler; } - - // Activate or disactivate callback - void SetupCallbacks(); - void DestroyCallbacks(); - - // Pushback library - size_t GetPushback(char *buffer, size_t size, bool peek); - - // To prevent many read or write on the same socket at the same time - // ==> cause strange things :-) - void WantSpeedBuffer(char *buffer, size_t size, wxRequestEvent req); - void WantBuffer(char *buffer, size_t size, wxRequestEvent req); - - virtual bool DoRequests(wxRequestEvent req); -}; - -//////////////////////////////////////////////////////////////////////// - -class WXDLLEXPORT wxSocketServer : public wxSocketBase -{ - DECLARE_CLASS(wxSocketServer) -public: - - // 'service' can be a name or a port-number - - wxSocketServer(wxSockAddress& addr_man, wxSockFlags flags = wxSocketBase::NONE); - - wxSocketBase* Accept(); - bool AcceptWith(wxSocketBase& sock); - virtual void OnRequest(wxRequestEvent flags); -}; - -//////////////////////////////////////////////////////////////////////// - -class WXDLLEXPORT wxSocketClient : public wxSocketBase -{ - DECLARE_CLASS(wxSocketClient) -public: - - wxSocketClient(wxSockFlags flags = wxSocketBase::NONE); - virtual ~wxSocketClient(); - - virtual bool Connect(wxSockAddress& addr_man, bool wait = TRUE); - - bool WaitOnConnect(long seconds = -1, long microseconds = 0); - - virtual void OnRequest(wxRequestEvent flags); -}; - -//////////////////////////////////////////////////////////////////////// - -class WXDLLEXPORT wxSocketHandler : public wxObject -{ - DECLARE_CLASS(wxSocketHandler) -protected: -#if defined(__WINDOWS__) - wxList *smsg_list; - struct wxSockHandlerInternal *internal; -#endif - wxList *socks; - -public: - enum SockStatus { SOCK_NONE, SOCK_DATA, SOCK_CONNECT, SOCK_DISCONNECT, - SOCK_ERROR }; - static wxSocketHandler *master; - - wxSocketHandler(); - virtual ~wxSocketHandler(); - - void Register(wxSocketBase* sock); - void UnRegister(wxSocketBase* sock); - - unsigned long Count() const; - - // seconds = -1 means indefinite wait - // seconds = 0 means no wait - // seconds > 0 means specified wait - - int Wait(long seconds = -1, long microseconds = 0); - void YieldSock(); - - wxSocketServer *CreateServer - (wxSockAddress& addr, - wxSocketBase::wxSockFlags flags = wxSocketBase::NONE); - wxSocketClient *CreateClient - (wxSocketBase::wxSockFlags flags = wxSocketBase::NONE); - - // Create or reuse a socket handler - static wxSocketHandler& Master() { return *master; } - -#if defined(WXSOCK_INTERNAL) && defined(__WINDOWS__) - - friend LRESULT APIENTRY _EXPORT wxSocketHandlerWndProc(HWND hWnd, - UINT message, WPARAM wParam, LPARAM lParam); - - UINT NewMessage(wxSocketBase *sock); - void DestroyMessage(UINT msg); - - HWND GetHWND() const; -#endif -}; - -class WXDLLEXPORT wxSocketEvent : public wxEvent { - DECLARE_DYNAMIC_CLASS(wxSocketEvent) -public: - wxSocketEvent(int id = 0); - - wxSocketBase::wxRequestEvent SocketEvent() const { return m_skevt; } -public: - wxSocketBase::wxRequestEvent m_skevt; -}; - -typedef void (wxEvtHandler::*wxSocketEventFunction)(wxSocketEvent&); - -#define wxEVT_SOCKET wxEVT_FIRST+301 - -#define EVT_SOCKET(id, func) { wxEVT_SOCKET, id, 0, \ - (wxObjectEventFunction) (wxEventFunction) (wxSocketEventFunction) & func, \ - (wxObject *) NULL }, - -#endif diff --git a/include/wx/spinbutt.h b/include/wx/spinbutt.h deleted file mode 100644 index 7d1c5c3806..0000000000 --- a/include/wx/spinbutt.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef _WX_SPINBUTT_H_BASE_ -#define _WX_SPINBUTT_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/spinbutt.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/spinbutt.h" -#elif defined(__WXGTK__) -#include "wx/gtk/spinbutt.h" -#elif defined(__WXQT__) -#include "wx/qt/spinbutt.h" -#elif defined(__WXMAC__) -#include "wx/mac/spinbutt.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/spinbutt.h" -#endif - -#endif - // _WX_SPINBUTT_H_BASE_ diff --git a/include/wx/splitter.h b/include/wx/splitter.h deleted file mode 100644 index 0a5232403b..0000000000 --- a/include/wx/splitter.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef _WX_SPLITTER_H_BASE_ -#define _WX_SPLITTER_H_BASE_ - -#include "wx/generic/splitter.h" - -#endif - // _WX_SPLITTER_H_BASE_ diff --git a/include/wx/statbmp.h b/include/wx/statbmp.h deleted file mode 100644 index 0f32d687a3..0000000000 --- a/include/wx/statbmp.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef _WX_STATBMP_H_BASE_ -#define _WX_STATBMP_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/statbmp.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/statbmp.h" -#elif defined(__WXGTK__) -#include "wx/gtk/statbmp.h" -#elif defined(__WXQT__) -#include "wx/qt/statbmp.h" -#elif defined(__WXMAC__) -#include "wx/mac/statbmp.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/statbmp.h" -#endif - -#endif - // _WX_STATBMP_H_BASE_ diff --git a/include/wx/statbox.h b/include/wx/statbox.h deleted file mode 100644 index f1a8bd6eea..0000000000 --- a/include/wx/statbox.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef _WX_STATBOX_H_BASE_ -#define _WX_STATBOX_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/statbox.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/statbox.h" -#elif defined(__WXGTK__) -#include "wx/gtk/statbox.h" -#elif defined(__WXQT__) -#include "wx/qt/statbox.h" -#elif defined(__WXMAC__) -#include "wx/mac/statbox.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/statbox.h" -#endif - -#endif - // _WX_STATBOX_H_BASE_ diff --git a/include/wx/stattext.h b/include/wx/stattext.h deleted file mode 100644 index abfbbd5be6..0000000000 --- a/include/wx/stattext.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef _WX_STATTEXT_H_BASE_ -#define _WX_STATTEXT_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/stattext.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/stattext.h" -#elif defined(__WXGTK__) -#include "wx/gtk/stattext.h" -#elif defined(__WXQT__) -#include "wx/qt/stattext.h" -#elif defined(__WXMAC__) -#include "wx/mac/stattext.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/stattext.h" -#endif - -#endif - // _WX_STATTEXT_H_BASE_ diff --git a/include/wx/statusbr.h b/include/wx/statusbr.h deleted file mode 100644 index 327238fbd2..0000000000 --- a/include/wx/statusbr.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef _WX_STATUSBR_H_BASE_ -#define _WX_STATUSBR_H_BASE_ - -#include "wx/generic/statusbr.h" - -#endif - // _WX_STATUSBR_H_BASE_ diff --git a/include/wx/stream.h b/include/wx/stream.h deleted file mode 100644 index 25f04afbcc..0000000000 --- a/include/wx/stream.h +++ /dev/null @@ -1,261 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: stream.h -// Purpose: "wxWindows stream" base classes -// Author: Guilhem Lavaux -// Modified by: -// Created: 11/07/98 -// RCS-ID: $Id$ -// Copyright: (c) Guilhem Lavaux -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_WXSTREAM_H__ -#define _WX_WXSTREAM_H__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include -#include "wx/object.h" -#include "wx/string.h" -#include "wx/filefn.h" // for off_t, wxInvalidOffset and wxSeekMode - -class WXDLLEXPORT wxStreamBase; -class WXDLLEXPORT wxInputStream; -class WXDLLEXPORT wxOutputStream; - -typedef wxInputStream& (*__wxInputManip)(wxInputStream&); -typedef wxOutputStream& (*__wxOutputManip)(wxOutputStream&); - -WXDLLEXPORT wxOutputStream& wxEndL(wxOutputStream& o_stream); - -// --------------------------------------------------------------------------- -// Stream buffer -// --------------------------------------------------------------------------- - -class WXDLLEXPORT wxStreamBuffer { - public: - typedef enum { - read = 0, write, read_write - } BufMode; - - // ----------- - // ctor & dtor - // ----------- - wxStreamBuffer(wxStreamBase& stream, BufMode mode); - wxStreamBuffer(BufMode mode); - wxStreamBuffer(const wxStreamBuffer& buf); - ~wxStreamBuffer(); - - // ----------- - // Filtered IO - // ----------- - size_t Read(void *buffer, size_t size); - size_t Read(wxStreamBuffer *buf); - size_t Write(const void *buffer, size_t size); - size_t Write(wxStreamBuffer *buf); - - size_t WriteBack(const char *buffer, size_t size); - bool WriteBack(char c); - char GetChar(); - void PutChar(char c); - off_t Tell() const; - off_t Seek(off_t pos, wxSeekMode mode); - - // -------------- - // Buffer control - // -------------- - void ResetBuffer(); - void SetBufferIO(char *buffer_start, char *buffer_end); - void SetBufferIO(size_t bufsize); - char *GetBufferStart() const { return m_buffer_start; } - char *GetBufferEnd() const { return m_buffer_end; } - char *GetBufferPos() const { return m_buffer_pos; } - off_t GetIntPosition() const { return m_buffer_pos-m_buffer_start; } - void SetIntPosition(off_t pos) { m_buffer_pos = m_buffer_start+pos; } - size_t GetLastAccess() const { return m_buffer_end-m_buffer_start; } - - void Fixed(bool fixed) { m_fixed = fixed; } - void Flushable(bool f) { m_flushable = f; } - - bool FlushBuffer(); - bool FillBuffer(); - size_t GetDataLeft(); - - // -------------- - // Administration - // -------------- - wxStreamBase *Stream() { return m_stream; } - - protected: - char *AllocSpaceWBack(size_t needed_size); - size_t GetWBack(char *buf, size_t bsize); - - void GetFromBuffer(void *buffer, size_t size); - void PutToBuffer(const void *buffer, size_t size); - - protected: - char *m_buffer_start, *m_buffer_end, *m_buffer_pos; - size_t m_buffer_size; - - char *m_wback; - size_t m_wbacksize, m_wbackcur; - - bool m_fixed, m_flushable; - - wxStreamBase *m_stream; - BufMode m_mode; - bool m_destroybuf, m_destroystream; -}; - -// --------------------------------------------------------------------------- -// wxStream: base classes -// --------------------------------------------------------------------------- - -typedef enum { - wxStream_NOERROR = 0, - wxStream_EOF, - wxStream_WRITE_ERR, - wxStream_READ_ERR -} wxStreamError; - -class WXDLLEXPORT wxStreamBase { - public: - wxStreamBase(); - virtual ~wxStreamBase(); - - wxStreamError LastError() const { return m_lasterror; } - virtual size_t StreamSize() const { return ~((size_t)0); } - - protected: - friend class wxStreamBuffer; - - virtual size_t OnSysRead(void *buffer, size_t bufsize); - virtual size_t OnSysWrite(const void *buffer, size_t bufsize); - virtual off_t OnSysSeek(off_t seek, wxSeekMode mode); - virtual off_t OnSysTell() const; - - protected: - size_t m_lastcount; - wxStreamError m_lasterror; -}; - -class WXDLLEXPORT wxInputStream: public wxStreamBase { - public: - wxInputStream(); - wxInputStream(wxStreamBuffer *sbuf); - virtual ~wxInputStream(); - - // IO functions - virtual char Peek(); - char GetC(); - wxInputStream& Read(void *buffer, size_t size); - wxInputStream& Read(wxOutputStream& stream_out); - - // Position functions - off_t SeekI(off_t pos, wxSeekMode mode = wxFromStart); - off_t TellI() const; - - // State functions - wxStreamBuffer *InputStreamBuffer() { return m_i_streambuf; } - size_t LastRead() { return wxStreamBase::m_lastcount; } - - // Operators - wxInputStream& operator>>(wxOutputStream& out) { return Read(out); } - wxInputStream& operator>>(wxString& line); - wxInputStream& operator>>(char& c); - wxInputStream& operator>>(short& i); - wxInputStream& operator>>(int& i); - wxInputStream& operator>>(long& i); - wxInputStream& operator>>(double& i); -#if wxUSE_SERIAL - wxInputStream& operator>>(wxObject *& obj); -#endif - - wxInputStream& operator>>(float& f) { double d; operator>>((double&)d); f = (float)d; return *this; } - wxInputStream& operator>>(unsigned char& c) { return operator>>((char&)c); } - wxInputStream& operator>>(unsigned short& i) { return operator>>((short&)i); } - wxInputStream& operator>>(unsigned int& i) { return operator>>((int&)i); } - wxInputStream& operator>>(unsigned long& i) { return operator>>((long&)i); } - wxInputStream& operator>>( __wxInputManip func) { return func(*this); } - - protected: - bool m_i_destroybuf; - wxStreamBuffer *m_i_streambuf; -}; - -class WXDLLEXPORT wxOutputStream: public wxStreamBase { - public: - wxOutputStream(); - wxOutputStream(wxStreamBuffer *sbuf); - virtual ~wxOutputStream(); - - wxOutputStream& Write(const void *buffer, size_t size); - wxOutputStream& Write(wxInputStream& stream_in); - - off_t SeekO(off_t pos, wxSeekMode mode = wxFromStart); - off_t TellO() const; - - size_t LastWrite() const { return wxStreamBase::m_lastcount; } - wxStreamBuffer *OutputStreamBuffer() { return m_o_streambuf; } - - void Sync(); - - wxOutputStream& operator<<(wxInputStream& out) { return Write(out); } - wxOutputStream& operator<<(const char *string); - wxOutputStream& operator<<(wxString& string); - wxOutputStream& operator<<(char c); - wxOutputStream& operator<<(short i); - wxOutputStream& operator<<(int i); - wxOutputStream& operator<<(long i); - wxOutputStream& operator<<(double f); -#if wxUSE_SERIAL - wxOutputStream& operator<<(wxObject& obj); -#endif - - wxOutputStream& operator<<(float f) { return operator<<((double)f); } - wxOutputStream& operator<<(unsigned char c) { return operator<<((char)c); } - wxOutputStream& operator<<(unsigned short i) { return operator<<((short)i); } - wxOutputStream& operator<<(unsigned int i) { return operator<<((int)i); } - wxOutputStream& operator<<(unsigned long i) { return operator<<((long)i); } - wxOutputStream& operator<<( __wxOutputManip func) { return func(*this); } - - protected: - bool m_o_destroybuf; - wxStreamBuffer *m_o_streambuf; -}; - -// --------------------------------------------------------------------------- -// "Filter" streams -// --------------------------------------------------------------------------- - -class WXDLLEXPORT wxFilterInputStream: public wxInputStream { - public: - wxFilterInputStream(); - wxFilterInputStream(wxInputStream& stream); - ~wxFilterInputStream(); - - char Peek() { return m_parent_i_stream->Peek(); } - - wxStreamError LastError() const { return m_parent_i_stream->LastError(); } - size_t StreamSize() const { return m_parent_i_stream->StreamSize(); } - - protected: - wxInputStream *m_parent_i_stream; -}; - -class WXDLLEXPORT wxFilterOutputStream: public wxOutputStream { - public: - wxFilterOutputStream(); - wxFilterOutputStream(wxOutputStream& stream); - ~wxFilterOutputStream(); - - wxStreamError LastError() const { return m_parent_o_stream->LastError(); } - size_t StreamSize() const { return m_parent_o_stream->StreamSize(); } - - protected: - wxOutputStream *m_parent_o_stream; -}; - -#endif diff --git a/include/wx/string.h b/include/wx/string.h deleted file mode 100644 index c23b431316..0000000000 --- a/include/wx/string.h +++ /dev/null @@ -1,880 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: string.h -// Purpose: wxString and wxArrayString classes -// Author: Vadim Zeitlin -// Modified by: -// Created: 29/01/98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows license -/////////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_WXSTRINGH__ -#define _WX_WXSTRINGH__ - -#ifdef __GNUG__ -#pragma interface "string.h" -#endif - -/* Dependencies (should be included before this header): - * string.h - * stdio.h - * stdarg.h - * limits.h - */ -#ifdef __WXMAC__ -#include -#endif -#include -#include -#include -#include -#include - -#ifndef WX_PRECOMP - #include "wx/defs.h" // Robert Roebling - #ifdef WXSTRING_IS_WXOBJECT - #include "wx/object.h" - #endif -#endif - -#include "wx/debug.h" - -/* - Efficient string class [more or less] compatible with MFC CString, - wxWindows version 1 wxString and std::string and some handy functions - missing from string.h. -*/ - -// --------------------------------------------------------------------------- -// macros -// --------------------------------------------------------------------------- - -// compile the std::string compatibility functions if defined -#define wxSTD_STRING_COMPATIBILITY - -// define to derive wxString from wxObject -#ifdef WXSTRING_IS_WXOBJECT -#undef WXSTRING_IS_WXOBJECT -#endif - -// maximum possible length for a string means "take all string" everywhere -// (as sizeof(StringData) is unknown here we substract 100) -#define STRING_MAXLEN (UINT_MAX - 100) - -// 'naughty' cast -#define WXSTRINGCAST (char *)(const char *) - -// implementation only -#define ASSERT_VALID_INDEX(i) wxASSERT( (unsigned)(i) < Len() ) - -// --------------------------------------------------------------------------- -// Global functions complementing standard C string library replacements for -// strlen() and portable strcasecmp() -//--------------------------------------------------------------------------- - -// checks whether the passed in pointer is NULL and if the string is empty -inline bool WXDLLEXPORT IsEmpty(const char *p) { return !p || !*p; } - -// safe version of strlen() (returns 0 if passed NULL pointer) -inline size_t WXDLLEXPORT Strlen(const char *psz) - { return psz ? strlen(psz) : 0; } - -// portable strcasecmp/_stricmp -inline int WXDLLEXPORT Stricmp(const char *psz1, const char *psz2) -{ -#if defined(_MSC_VER) - return _stricmp(psz1, psz2); -#elif defined(__SC__) - return _stricmp(psz1, psz2); -#elif defined(__SALFORDC__) - return stricmp(psz1, psz2); -#elif defined(__BORLANDC__) - return stricmp(psz1, psz2); -#elif defined(__WATCOMC__) - return stricmp(psz1, psz2); -#elif defined(__UNIX__) || defined(__GNUWIN32__) - return strcasecmp(psz1, psz2); -#elif defined(__MWERKS__) && !defined(_MSC_VER) - register char c1, c2; - do { - c1 = tolower(*psz1++); - c2 = tolower(*psz2++); - } while ( c1 && (c1 == c2) ); - - return c1 - c2; -#else - // almost all compilers/libraries provide this function (unfortunately under - // different names), that's why we don't implement our own which will surely - // be more efficient than this code (uncomment to use): - /* - register char c1, c2; - do { - c1 = tolower(*psz1++); - c2 = tolower(*psz2++); - } while ( c1 && (c1 == c2) ); - - return c1 - c2; - */ - - #error "Please define string case-insensitive compare for your OS/compiler" -#endif // OS/compiler -} - -// ---------------------------------------------------------------------------- -// global data -// ---------------------------------------------------------------------------- - -WXDLLEXPORT_DATA(extern const char*) wxEmptyString; - -// global pointer to empty string -WXDLLEXPORT_DATA(extern const char*) g_szNul; - -// return an empty wxString -class WXDLLEXPORT wxString; // not yet defined -inline const wxString& wxGetEmptyString() { return *(wxString *)&g_szNul; } - -// --------------------------------------------------------------------------- -// string data prepended with some housekeeping info (used by wxString class), -// is never used directly (but had to be put here to allow inlining) -// --------------------------------------------------------------------------- -struct WXDLLEXPORT wxStringData -{ - int nRefs; // reference count - size_t nDataLength, // actual string length - nAllocLength; // allocated memory size - - // mimics declaration 'char data[nAllocLength]' - char* data() const { return (char*)(this + 1); } - - // empty string has a special ref count so it's never deleted - bool IsEmpty() const { return nRefs == -1; } - bool IsShared() const { return nRefs > 1; } - - // lock/unlock - void Lock() { if ( !IsEmpty() ) nRefs++; } - void Unlock() { if ( !IsEmpty() && --nRefs == 0) free(this); } - - // if we had taken control over string memory (GetWriteBuf), it's - // intentionally put in invalid state - void Validate(bool b) { nRefs = b ? 1 : 0; } - bool IsValid() const { return nRefs != 0; } -}; - -// --------------------------------------------------------------------------- -// This is (yet another one) String class for C++ programmers. It doesn't use -// any of "advanced" C++ features (i.e. templates, exceptions, namespaces...) -// thus you should be able to compile it with practicaly any C++ compiler. -// This class uses copy-on-write technique, i.e. identical strings share the -// same memory as long as neither of them is changed. -// -// This class aims to be as compatible as possible with the new standard -// std::string class, but adds some additional functions and should be at -// least as efficient than the standard implementation. -// -// Performance note: it's more efficient to write functions which take "const -// String&" arguments than "const char *" if you assign the argument to -// another string. -// -// It was compiled and tested under Win32, Linux (libc 5 & 6), Solaris 5.5. -// -// To do: -// - ressource support (string tables in ressources) -// - more wide character (UNICODE) support -// - regular expressions support -// --------------------------------------------------------------------------- - -#ifdef WXSTRING_IS_WXOBJECT -class WXDLLEXPORT wxString : public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxString) -#else //WXSTRING_IS_WXOBJECT -class WXDLLEXPORT wxString -{ -#endif //WXSTRING_IS_WXOBJECT - -friend class WXDLLEXPORT wxArrayString; - - // NB: special care was taken in arranging the member functions in such order - // that all inline functions can be effectively inlined, verify that all - // performace critical functions are still inlined if you change order! -private: - // points to data preceded by wxStringData structure with ref count info - char *m_pchData; - - // accessor to string data - wxStringData* GetStringData() const { return (wxStringData*)m_pchData - 1; } - - // string (re)initialization functions - // initializes the string to the empty value (must be called only from - // ctors, use Reinit() otherwise) - void Init() { m_pchData = (char *)g_szNul; } - // initializaes the string with (a part of) C-string - void InitWith(const char *psz, size_t nPos = 0, size_t nLen = STRING_MAXLEN); - // as Init, but also frees old data - void Reinit() { GetStringData()->Unlock(); Init(); } - - // memory allocation - // allocates memory for string of lenght nLen - void AllocBuffer(size_t nLen); - // copies data to another string - void AllocCopy(wxString&, int, int) const; - // effectively copies data to string - void AssignCopy(size_t, const char *); - - // append a (sub)string - void ConcatSelf(int nLen, const char *src); - - // functions called before writing to the string: they copy it if there - // are other references to our data (should be the only owner when writing) - void CopyBeforeWrite(); - void AllocBeforeWrite(size_t); - -public: - // constructors and destructor - // ctor for an empty string - wxString() { Init(); } - // copy ctor - wxString(const wxString& stringSrc) - { - wxASSERT( stringSrc.GetStringData()->IsValid() ); - - if ( stringSrc.IsEmpty() ) { - // nothing to do for an empty string - Init(); - } - else { - m_pchData = stringSrc.m_pchData; // share same data - GetStringData()->Lock(); // => one more copy - } - } - // string containing nRepeat copies of ch - wxString(char ch, size_t nRepeat = 1); - // ctor takes first nLength characters from C string - // (default value of STRING_MAXLEN means take all the string) - wxString(const char *psz, size_t nLength = STRING_MAXLEN) - { InitWith(psz, 0, nLength); } - // from C string (for compilers using unsigned char) - wxString(const unsigned char* psz, size_t nLength = STRING_MAXLEN); - // from wide (UNICODE) string - wxString(const wchar_t *pwz); - // dtor is not virtual, this class must not be inherited from! - ~wxString() { GetStringData()->Unlock(); } - - // generic attributes & operations - // as standard strlen() - size_t Len() const { return GetStringData()->nDataLength; } - // string contains any characters? - bool IsEmpty() const { return Len() == 0; } - // empty string is "FALSE", so !str will return TRUE - bool operator!() const { return IsEmpty(); } - // empty string contents - void Empty() - { - if ( !IsEmpty() ) - Reinit(); - - // should be empty - wxASSERT( GetStringData()->nDataLength == 0 ); - } - // empty the string and free memory - void Clear() - { - if ( !GetStringData()->IsEmpty() ) - Reinit(); - - wxASSERT( GetStringData()->nDataLength == 0 ); // should be empty - wxASSERT( GetStringData()->nAllocLength == 0 ); // and not own any memory - } - - // contents test - // Is an ascii value - bool IsAscii() const; - // Is a number - bool IsNumber() const; - // Is a word - bool IsWord() const; - - // data access (all indexes are 0 based) - // read access - char GetChar(size_t n) const - { ASSERT_VALID_INDEX( n ); return m_pchData[n]; } - // read/write access - char& GetWritableChar(size_t n) - { ASSERT_VALID_INDEX( n ); CopyBeforeWrite(); return m_pchData[n]; } - // write access - void SetChar(size_t n, char ch) - { ASSERT_VALID_INDEX( n ); CopyBeforeWrite(); m_pchData[n] = ch; } - - // get last character - char Last() const - { wxASSERT( !IsEmpty() ); return m_pchData[Len() - 1]; } - // get writable last character - char& Last() - { wxASSERT( !IsEmpty() ); CopyBeforeWrite(); return m_pchData[Len()-1]; } - - // on alpha-linux this gives overload problems: - // Also on Solaris, so removing for now (JACS) -#if ! defined(__ALPHA__) - // operator version of GetChar - char operator[](size_t n) const - { ASSERT_VALID_INDEX( n ); return m_pchData[n]; } -#endif - - // operator version of GetChar - char operator[](int n) const - { ASSERT_VALID_INDEX( n ); return m_pchData[n]; } - // operator version of GetWritableChar - char& operator[](size_t n) - { ASSERT_VALID_INDEX( n ); CopyBeforeWrite(); return m_pchData[n]; } - - // implicit conversion to C string - operator const char*() const { return m_pchData; } - // explicit conversion to C string (use this with printf()!) - const char* c_str() const { return m_pchData; } - // - const char* GetData() const { return m_pchData; } - - // overloaded assignment - // from another wxString - wxString& operator=(const wxString& stringSrc); - // from a character - wxString& operator=(char ch); - // from a C string - wxString& operator=(const char *psz); - // from another kind of C string - wxString& operator=(const unsigned char* psz); - // from a wide string - wxString& operator=(const wchar_t *pwz); - - // string concatenation - // in place concatenation - /* - Concatenate and return the result. Note that the left to right - associativity of << allows to write things like "str << str1 << str2 - << ..." (unlike with +=) - */ - // string += string - wxString& operator<<(const wxString& s) - { - wxASSERT( s.GetStringData()->IsValid() ); - - ConcatSelf(s.Len(), s); - return *this; - } - // string += C string - wxString& operator<<(const char *psz) - { ConcatSelf(Strlen(psz), psz); return *this; } - // string += char - wxString& operator<<(char ch) { ConcatSelf(1, &ch); return *this; } - - // string += string - void operator+=(const wxString& s) { (void)operator<<(s); } - // string += C string - void operator+=(const char *psz) { (void)operator<<(psz); } - // string += char - void operator+=(char ch) { (void)operator<<(ch); } - - // string += C string - wxString& Append(const char* psz) - { ConcatSelf(Strlen(psz), psz); return *this; } - // append count copies of given character - wxString& Append(char ch, size_t count = 1u) - { wxString str(ch, count); return *this << str; } - - // prepend a string, return the string itself - wxString& Prepend(const wxString& str) - { *this = str + *this; return *this; } - - // non-destructive concatenation - // - friend wxString WXDLLEXPORT operator+(const wxString& string1, const wxString& string2); - // - friend wxString WXDLLEXPORT operator+(const wxString& string, char ch); - // - friend wxString WXDLLEXPORT operator+(char ch, const wxString& string); - // - friend wxString WXDLLEXPORT operator+(const wxString& string, const char *psz); - // - friend wxString WXDLLEXPORT operator+(const char *psz, const wxString& string); - - // stream-like functions - // insert an int into string - wxString& operator<<(int i); - // insert a float into string - wxString& operator<<(float f); - // insert a double into string - wxString& operator<<(double d); - - // string comparison - // case-sensitive comparison: return 0 if =, +1 if > or -1 if < - int Cmp(const char *psz) const { return strcmp(c_str(), psz); } - // same as Cmp() but not case-sensitive - int CmpNoCase(const char *psz) const { return Stricmp(c_str(), psz); } - // test for the string equality, either considering case or not - // (if compareWithCase then the case matters) - bool IsSameAs(const char *psz, bool compareWithCase = TRUE) const - { return (compareWithCase ? Cmp(psz) : CmpNoCase(psz)) == 0; } - - // simple sub-string extraction - // return substring starting at nFirst of length nCount (or till the end - // if nCount = default value) - wxString Mid(size_t nFirst, size_t nCount = STRING_MAXLEN) const; - - // operator version of Mid() - wxString operator()(size_t start, size_t len) const - { return Mid(start, len); } - - // get first nCount characters - wxString Left(size_t nCount) const; - // get last nCount characters - wxString Right(size_t nCount) const; - // get all characters before the first occurence of ch - // (returns the whole string if ch not found) - wxString BeforeFirst(char ch) const; - // get all characters before the last occurence of ch - // (returns empty string if ch not found) - wxString BeforeLast(char ch) const; - // get all characters after the first occurence of ch - // (returns empty string if ch not found) - wxString AfterFirst(char ch) const; - // get all characters after the last occurence of ch - // (returns the whole string if ch not found) - wxString AfterLast(char ch) const; - - // for compatibility only, use more explicitly named functions above - wxString Before(char ch) const { return BeforeLast(ch); } - wxString After(char ch) const { return AfterFirst(ch); } - - // case conversion - // convert to upper case in place, return the string itself - wxString& MakeUpper(); - // convert to upper case, return the copy of the string - wxString Upper() const { wxString s(*this); return s.MakeUpper(); } - // convert to lower case in place, return the string itself - wxString& MakeLower(); - // convert to lower case, return the copy of the string - wxString Lower() const { wxString s(*this); return s.MakeLower(); } - - // trimming/padding whitespace (either side) and truncating - // remove spaces from left or from right (default) side - wxString& Trim(bool bFromRight = TRUE); - // add nCount copies chPad in the beginning or at the end (default) - wxString& Pad(size_t nCount, char chPad = ' ', bool bFromRight = TRUE); - // truncate string to given length - wxString& Truncate(size_t uiLen); - - // searching and replacing - // searching (return starting index, or -1 if not found) - int Find(char ch, bool bFromEnd = FALSE) const; // like strchr/strrchr - // searching (return starting index, or -1 if not found) - int Find(const char *pszSub) const; // like strstr - // replace first (or all of bReplaceAll) occurences of substring with - // another string, returns the number of replacements made - size_t Replace(const char *szOld, - const char *szNew, - bool bReplaceAll = TRUE); - - // check if the string contents matches a mask containing '*' and '?' - bool Matches(const char *szMask) const; - - // formated input/output - // as sprintf(), returns the number of characters written or < 0 on error - int Printf(const char *pszFormat, ...); - // as vprintf(), returns the number of characters written or < 0 on error - int PrintfV(const char* pszFormat, va_list argptr); - - // raw access to string memory - // ensure that string has space for at least nLen characters - // only works if the data of this string is not shared - void Alloc(size_t nLen); - // minimize the string's memory - // only works if the data of this string is not shared - void Shrink(); - // get writable buffer of at least nLen bytes. Unget() *must* be called - // a.s.a.p. to put string back in a reasonable state! - char *GetWriteBuf(size_t nLen); - // call this immediately after GetWriteBuf() has been used - void UngetWriteBuf(); - - // wxWindows version 1 compatibility functions - - // use Mid() - wxString SubString(size_t from, size_t to) const - { return Mid(from, (to - from + 1)); } - // values for second parameter of CompareTo function - enum caseCompare {exact, ignoreCase}; - // values for first parameter of Strip function - enum stripType {leading = 0x1, trailing = 0x2, both = 0x3}; - // use Printf() - inline int sprintf(const char *pszFormat, ...) - { - va_list argptr; - va_start(argptr, pszFormat); - int iLen = PrintfV(pszFormat, argptr); - va_end(argptr); - return iLen; - } - - // use Cmp() - inline int CompareTo(const char* psz, caseCompare cmp = exact) const - { return cmp == exact ? Cmp(psz) : CmpNoCase(psz); } - - // use Len - size_t Length() const { return Len(); } - // Count the number of characters - int Freq(char ch) const; - // use MakeLower - void LowerCase() { MakeLower(); } - // use MakeUpper - void UpperCase() { MakeUpper(); } - // use Trim except that it doesn't change this string - wxString Strip(stripType w = trailing) const; - - // use Find (more general variants not yet supported) - size_t Index(const char* psz) const { return Find(psz); } - size_t Index(char ch) const { return Find(ch); } - // use Truncate - wxString& Remove(size_t pos) { return Truncate(pos); } - wxString& RemoveLast() { return Truncate(Len() - 1); } - - wxString& Remove(size_t nStart, size_t nLen) { return erase( nStart, nLen ); } - - // use Find() - int First( const char ch ) const { return Find(ch); } - int First( const char* psz ) const { return Find(psz); } - int First( const wxString &str ) const { return Find(str); } - int Last( const char ch ) const { return Find(ch, TRUE); } - bool Contains(const wxString& str) const { return Find(str) != -1; } - - // use IsEmpty() - bool IsNull() const { return IsEmpty(); } - -#ifdef wxSTD_STRING_COMPATIBILITY - // std::string compatibility functions - - // an 'invalid' value for string index - static const size_t npos; - - // constructors - // take nLen chars starting at nPos - wxString(const wxString& str, size_t nPos, size_t nLen) - { - wxASSERT( str.GetStringData()->IsValid() ); - InitWith(str.c_str(), nPos, nLen == npos ? 0 : nLen); - } - // take all characters from pStart to pEnd - wxString(const void *pStart, const void *pEnd); - - // lib.string.capacity - // return the length of the string - size_t size() const { return Len(); } - // return the length of the string - size_t length() const { return Len(); } - // return the maximum size of the string - size_t max_size() const { return STRING_MAXLEN; } - // resize the string, filling the space with c if c != 0 - void resize(size_t nSize, char ch = '\0'); - // delete the contents of the string - void clear() { Empty(); } - // returns true if the string is empty - bool empty() const { return IsEmpty(); } - - // lib.string.access - // return the character at position n - char at(size_t n) const { return GetChar(n); } - // returns the writable character at position n - char& at(size_t n) { return GetWritableChar(n); } - - // lib.string.modifiers - // append a string - wxString& append(const wxString& str) - { *this += str; return *this; } - // append elements str[pos], ..., str[pos+n] - wxString& append(const wxString& str, size_t pos, size_t n) - { ConcatSelf(n, str.c_str() + pos); return *this; } - // append first n (or all if n == npos) characters of sz - wxString& append(const char *sz, size_t n = npos) - { ConcatSelf(n == npos ? Strlen(sz) : n, sz); return *this; } - - // append n copies of ch - wxString& append(size_t n, char ch) { return Pad(n, ch); } - - // same as `this_string = str' - wxString& assign(const wxString& str) { return (*this) = str; } - // same as ` = str[pos..pos + n] - wxString& assign(const wxString& str, size_t pos, size_t n) - { return *this = wxString((const char *)str + pos, n); } - // same as `= first n (or all if n == npos) characters of sz' - wxString& assign(const char *sz, size_t n = npos) - { return *this = wxString(sz, n); } - // same as `= n copies of ch' - wxString& assign(size_t n, char ch) - { return *this = wxString(ch, n); } - - // insert another string - wxString& insert(size_t nPos, const wxString& str); - // insert n chars of str starting at nStart (in str) - wxString& insert(size_t nPos, const wxString& str, size_t nStart, size_t n) - { return insert(nPos, wxString((const char *)str + nStart, n)); } - - // insert first n (or all if n == npos) characters of sz - wxString& insert(size_t nPos, const char *sz, size_t n = npos) - { return insert(nPos, wxString(sz, n)); } - // insert n copies of ch - wxString& insert(size_t nPos, size_t n, char ch) - { return insert(nPos, wxString(ch, n)); } - - // delete characters from nStart to nStart + nLen - wxString& erase(size_t nStart = 0, size_t nLen = npos); - - // replaces the substring of length nLen starting at nStart - wxString& replace(size_t nStart, size_t nLen, const char* sz); - // replaces the substring with nCount copies of ch - wxString& replace(size_t nStart, size_t nLen, size_t nCount, char ch); - // replaces a substring with another substring - wxString& replace(size_t nStart, size_t nLen, - const wxString& str, size_t nStart2, size_t nLen2); - // replaces the substring with first nCount chars of sz - wxString& replace(size_t nStart, size_t nLen, - const char* sz, size_t nCount); - - // swap two strings - void swap(wxString& str); - - // All find() functions take the nStart argument which specifies the - // position to start the search on, the default value is 0. All functions - // return npos if there were no match. - - // find a substring - size_t find(const wxString& str, size_t nStart = 0) const; - - // VC++ 1.5 can't cope with this syntax. -#if !(defined(_MSC_VER) && !defined(__WIN32__)) - // find first n characters of sz - size_t find(const char* sz, size_t nStart = 0, size_t n = npos) const; -#endif - - // Gives a duplicate symbol (presumably a case-insensitivity problem) -#if !defined(__BORLANDC__) - // find the first occurence of character ch after nStart - size_t find(char ch, size_t nStart = 0) const; -#endif - // rfind() family is exactly like find() but works right to left - - // as find, but from the end - size_t rfind(const wxString& str, size_t nStart = npos) const; - - // VC++ 1.5 can't cope with this syntax. -#if ! (defined(_MSC_VER) && !defined(__WIN32__)) - // as find, but from the end - size_t rfind(const char* sz, size_t nStart = npos, - size_t n = npos) const; - // as find, but from the end - size_t rfind(char ch, size_t nStart = npos) const; -#endif - - // find first/last occurence of any character in the set - - // - size_t find_first_of(const wxString& str, size_t nStart = 0) const; - // - size_t find_first_of(const char* sz, size_t nStart = 0) const; - // same as find(char, size_t) - size_t find_first_of(char c, size_t nStart = 0) const; - // - size_t find_last_of (const wxString& str, size_t nStart = npos) const; - // - size_t find_last_of (const char* s, size_t nStart = npos) const; - // same as rfind(char, size_t) - size_t find_last_of (char c, size_t nStart = npos) const; - - // find first/last occurence of any character not in the set - - // - size_t find_first_not_of(const wxString& str, size_t nStart = 0) const; - // - size_t find_first_not_of(const char* s, size_t nStart = 0) const; - // - size_t find_first_not_of(char ch, size_t nStart = 0) const; - // - size_t find_last_not_of(const wxString& str, size_t nStart=npos) const; - // - size_t find_last_not_of(const char* s, size_t nStart = npos) const; - // - size_t find_last_not_of(char ch, size_t nStart = npos) const; - - // All compare functions return -1, 0 or 1 if the [sub]string is less, - // equal or greater than the compare() argument. - - // just like strcmp() - int compare(const wxString& str) const { return Cmp(str); } - // comparison with a substring - int compare(size_t nStart, size_t nLen, const wxString& str) const; - // comparison of 2 substrings - int compare(size_t nStart, size_t nLen, - const wxString& str, size_t nStart2, size_t nLen2) const; - // just like strcmp() - int compare(const char* sz) const { return Cmp(sz); } - // substring comparison with first nCount characters of sz - int compare(size_t nStart, size_t nLen, - const char* sz, size_t nCount = npos) const; - - // substring extraction - wxString substr(size_t nStart = 0, size_t nLen = npos) const; -#endif // wxSTD_STRING_COMPATIBILITY -}; - -// ---------------------------------------------------------------------------- -// The string array uses it's knowledge of internal structure of the wxString -// class to optimize string storage. Normally, we would store pointers to -// string, but as wxString is, in fact, itself a pointer (sizeof(wxString) is -// sizeof(char *)) we store these pointers instead. The cast to "wxString *" is -// really all we need to turn such pointer into a string! -// -// Of course, it can be called a dirty hack, but we use twice less memory and -// this approach is also more speed efficient, so it's probably worth it. -// -// Usage notes: when a string is added/inserted, a new copy of it is created, -// so the original string may be safely deleted. When a string is retrieved -// from the array (operator[] or Item() method), a reference is returned. -// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxArrayString -{ -public: - // constructors and destructor - // default ctor - wxArrayString(); - // copy ctor - wxArrayString(const wxArrayString& array); - // assignment operator - wxArrayString& operator=(const wxArrayString& src); - // not virtual, this class should not be derived from - ~wxArrayString(); - - // memory management - // empties the list, but doesn't release memory - void Empty(); - // empties the list and releases memory - void Clear(); - // preallocates memory for given number of items - void Alloc(size_t nCount); - // minimzes the memory usage (by freeing all extra memory) - void Shrink(); - - // simple accessors - // number of elements in the array - size_t GetCount() const { return m_nCount; } - // is it empty? - bool IsEmpty() const { return m_nCount == 0; } - // number of elements in the array (GetCount is preferred API) - size_t Count() const { return m_nCount; } - - // items access (range checking is done in debug version) - // get item at position uiIndex - wxString& Item(size_t nIndex) const - { wxASSERT( nIndex < m_nCount ); return *(wxString *)&(m_pItems[nIndex]); } - // same as Item() - wxString& operator[](size_t nIndex) const { return Item(nIndex); } - // get last item - wxString& Last() const { wxASSERT( !IsEmpty() ); return Item(Count() - 1); } - - // item management - // Search the element in the array, starting from the beginning if - // bFromEnd is FALSE or from end otherwise. If bCase, comparison is case - // sensitive (default). Returns index of the first item matched or - // wxNOT_FOUND - int Index (const char *sz, bool bCase = TRUE, bool bFromEnd = FALSE) const; - // add new element at the end - void Add(const wxString& str); - // add new element at given position - void Insert(const wxString& str, size_t uiIndex); - // remove first item matching this value - void Remove(const char *sz); - // remove item by index - void Remove(size_t nIndex); - - // sort array elements - void Sort(bool bCase = TRUE, bool bReverse = FALSE); - -private: - void Grow(); // makes array bigger if needed - void Free(); // free the string stored - - size_t m_nSize, // current size of the array - m_nCount; // current number of elements - - char **m_pItems; // pointer to data -}; - -// --------------------------------------------------------------------------- -// wxString comparison functions: operator versions are always case sensitive -// --------------------------------------------------------------------------- -// -inline bool operator==(const wxString& s1, const wxString& s2) { return (s1.Cmp(s2) == 0); } -// -inline bool operator==(const wxString& s1, const char * s2) { return (s1.Cmp(s2) == 0); } -// -inline bool operator==(const char * s1, const wxString& s2) { return (s2.Cmp(s1) == 0); } -// -inline bool operator!=(const wxString& s1, const wxString& s2) { return (s1.Cmp(s2) != 0); } -// -inline bool operator!=(const wxString& s1, const char * s2) { return (s1.Cmp(s2) != 0); } -// -inline bool operator!=(const char * s1, const wxString& s2) { return (s2.Cmp(s1) != 0); } -// -inline bool operator< (const wxString& s1, const wxString& s2) { return (s1.Cmp(s2) < 0); } -// -inline bool operator< (const wxString& s1, const char * s2) { return (s1.Cmp(s2) < 0); } -// -inline bool operator< (const char * s1, const wxString& s2) { return (s2.Cmp(s1) > 0); } -// -inline bool operator> (const wxString& s1, const wxString& s2) { return (s1.Cmp(s2) > 0); } -// -inline bool operator> (const wxString& s1, const char * s2) { return (s1.Cmp(s2) > 0); } -// -inline bool operator> (const char * s1, const wxString& s2) { return (s2.Cmp(s1) < 0); } -// -inline bool operator<=(const wxString& s1, const wxString& s2) { return (s1.Cmp(s2) <= 0); } -// -inline bool operator<=(const wxString& s1, const char * s2) { return (s1.Cmp(s2) <= 0); } -// -inline bool operator<=(const char * s1, const wxString& s2) { return (s2.Cmp(s1) >= 0); } -// -inline bool operator>=(const wxString& s1, const wxString& s2) { return (s1.Cmp(s2) >= 0); } -// -inline bool operator>=(const wxString& s1, const char * s2) { return (s1.Cmp(s2) >= 0); } -// -inline bool operator>=(const char * s1, const wxString& s2) { return (s2.Cmp(s1) <= 0); } - -wxString WXDLLEXPORT operator+(const wxString& string1, const wxString& string2); -wxString WXDLLEXPORT operator+(const wxString& string, char ch); -wxString WXDLLEXPORT operator+(char ch, const wxString& string); -wxString WXDLLEXPORT operator+(const wxString& string, const char *psz); -wxString WXDLLEXPORT operator+(const char *psz, const wxString& string); - -// --------------------------------------------------------------------------- -// Implementation only from here until the end of file -// --------------------------------------------------------------------------- - -#ifdef wxSTD_STRING_COMPATIBILITY - -// forward declare iostream -// Known not to work with wxUSE_IOSTREAMH set to 0, so -// replacing with includes (on advice of ungod@pasdex.com.au) -// class WXDLLEXPORT istream; -#if wxUSE_IOSTREAMH -// N.B. BC++ doesn't have istream.h, ostream.h -#include -#else -#include -# ifdef _MSC_VER - using namespace std; -# endif -#endif - -WXDLLEXPORT istream& operator>>(istream& is, wxString& str); - -#endif // wxSTD_STRING_COMPATIBILITY - -#endif // _WX_WXSTRINGH__ diff --git a/include/wx/stubs/accel.h b/include/wx/stubs/accel.h deleted file mode 100644 index ec39737483..0000000000 --- a/include/wx/stubs/accel.h +++ /dev/null @@ -1,80 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: accel.h -// Purpose: wxAcceleratorTable class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_ACCEL_H_ -#define _WX_ACCEL_H_ - -#ifdef __GNUG__ -#pragma interface "accel.h" -#endif - -#include "wx/object.h" -#include "wx/string.h" - -class WXDLLEXPORT wxAcceleratorTable; - -// Hold Ctrl key down -#define wxACCEL_ALT 0x01 - -// Hold Ctrl key down -#define wxACCEL_CTRL 0x02 - - // Hold Shift key down -#define wxACCEL_SHIFT 0x04 - - // Hold no key down -#define wxACCEL_NORMAL 0x00 - -class WXDLLEXPORT wxAcceleratorEntry -{ -public: - wxAcceleratorEntry(int flags = 0, int keyCode = 0, int cmd = 0) - { - m_flags = flags; m_keyCode = keyCode; m_command = cmd; - } - - inline void Set(int flags, int keyCode, int cmd) - { m_flags = flags; m_keyCode = keyCode; m_command = cmd; } - - inline int GetFlags() const { return m_flags; } - inline int GetKeyCode() const { return m_keyCode; } - inline int GetCommand() const { return m_command; } - - int m_flags; - int m_keyCode; // ASCII or virtual keycode - int m_command; // Command id to generate -}; - -class WXDLLEXPORT wxAcceleratorTable: public wxObject -{ -DECLARE_DYNAMIC_CLASS(wxAcceleratorTable) -public: - wxAcceleratorTable(); - wxAcceleratorTable(const wxString& resource); // Load from .rc resource - wxAcceleratorTable(int n, wxAcceleratorEntry entries[]); // Load from array - - // Copy constructors - inline wxAcceleratorTable(const wxAcceleratorTable& accel) { Ref(accel); } - inline wxAcceleratorTable(const wxAcceleratorTable* accel) { if (accel) Ref(*accel); } - - ~wxAcceleratorTable(); - - inline wxAcceleratorTable& operator = (const wxAcceleratorTable& accel) { if (*this == accel) return (*this); Ref(accel); return *this; } - inline bool operator == (const wxAcceleratorTable& accel) { return m_refData == accel.m_refData; } - inline bool operator != (const wxAcceleratorTable& accel) { return m_refData != accel.m_refData; } - - bool Ok() const; -}; - -WXDLLEXPORT_DATA(extern wxAcceleratorTable) wxNullAcceleratorTable; - -#endif - // _WX_ACCEL_H_ diff --git a/include/wx/stubs/app.h b/include/wx/stubs/app.h deleted file mode 100644 index 67bceb9169..0000000000 --- a/include/wx/stubs/app.h +++ /dev/null @@ -1,152 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: app.h -// Purpose: wxApp class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_APP_H_ -#define _WX_APP_H_ - -#ifdef __GNUG__ -#pragma interface "app.h" -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/gdicmn.h" -#include "wx/event.h" - -class WXDLLEXPORT wxFrame; -class WXDLLEXPORT wxWindow; -class WXDLLEXPORT wxApp ; -class WXDLLEXPORT wxKeyEvent; -class WXDLLEXPORT wxLog; - -#define wxPRINT_WINDOWS 1 -#define wxPRINT_POSTSCRIPT 2 - -WXDLLEXPORT_DATA(extern wxApp*) wxTheApp; - -// Force an exit from main loop -void WXDLLEXPORT wxExit(); - -// Yield to other apps/messages -bool WXDLLEXPORT wxYield(); - -// Represents the application. Derive OnInit and declare -// a new App object to start application -class WXDLLEXPORT wxApp: public wxEvtHandler -{ - DECLARE_DYNAMIC_CLASS(wxApp) - wxApp(); - inline ~wxApp() {} - - static void SetInitializerFunction(wxAppInitializerFunction fn) { m_appInitFn = fn; } - static wxAppInitializerFunction GetInitializerFunction() { return m_appInitFn; } - - virtual int MainLoop(); - void ExitMainLoop(); - bool Initialized(); - virtual bool Pending() ; - virtual void Dispatch() ; - - void OnIdle(wxIdleEvent& event); - -// Generic - virtual bool OnInit() { return FALSE; }; - - // No specific tasks to do here. - virtual bool OnInitGui() { return TRUE; } - - // Called to set off the main loop - virtual int OnRun() { return MainLoop(); }; - virtual int OnExit() { return 0; } - - inline void SetPrintMode(int mode) { m_printMode = mode; } - inline int GetPrintMode() const { return m_printMode; } - - inline void SetExitOnFrameDelete(bool flag) { m_exitOnFrameDelete = flag; } - inline bool GetExitOnFrameDelete() const { return m_exitOnFrameDelete; } - - inline wxString GetAppName() const { - if (m_appName != "") - return m_appName; - else return m_className; - } - - inline void SetAppName(const wxString& name) { m_appName = name; }; - inline wxString GetClassName() const { return m_className; } - inline void SetClassName(const wxString& name) { m_className = name; } - - void SetVendorName(const wxString& vendorName) { m_vendorName = vendorName; } - const wxString& GetVendorName() const { return m_vendorName; } - - wxWindow *GetTopWindow() const ; - inline void SetTopWindow(wxWindow *win) { m_topWindow = win; } - - inline void SetWantDebugOutput(bool flag) { m_wantDebugOutput = flag; } - inline bool GetWantDebugOutput() { return m_wantDebugOutput; } - - // Send idle event to all top-level windows. - // Returns TRUE if more idle time is requested. - bool SendIdleEvents(); - - // Send idle event to window and all subwindows - // Returns TRUE if more idle time is requested. - bool SendIdleEvents(wxWindow* win); - - // Windows only, but for compatibility... - inline void SetAuto3D(bool flag) { m_auto3D = flag; } - inline bool GetAuto3D() const { return m_auto3D; } - - // Creates a log object - virtual wxLog* CreateLogTarget(); - -public: - // Will always be set to the appropriate, main-style values. - int argc; - char ** argv; - -protected: - bool m_wantDebugOutput ; - wxString m_className; - wxString m_appName, - m_vendorName; - wxWindow * m_topWindow; - bool m_exitOnFrameDelete; - bool m_showOnInit; - int m_printMode; // wxPRINT_WINDOWS, wxPRINT_POSTSCRIPT - bool m_auto3D ; // Always use 3D controls, except - // where overriden - static wxAppInitializerFunction m_appInitFn; - -public: - - // Implementation - static bool Initialize(); - static void CleanUp(); - - void DeletePendingObjects(); - bool ProcessIdle(); - -public: - static long sm_lastMessageTime; - int m_nCmdShow; - -protected: - bool m_keepGoing ; - -DECLARE_EVENT_TABLE() -}; - -// TODO: add platform-specific arguments -int WXDLLEXPORT wxEntry( int argc, char *argv[] ); - -#endif - // _WX_APP_H_ - diff --git a/include/wx/stubs/bitmap.h b/include/wx/stubs/bitmap.h deleted file mode 100644 index 1d2f5417e5..0000000000 --- a/include/wx/stubs/bitmap.h +++ /dev/null @@ -1,197 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: bitmap.h -// Purpose: wxBitmap class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_BITMAP_H_ -#define _WX_BITMAP_H_ - -#ifdef __GNUG__ -#pragma interface "bitmap.h" -#endif - -#include "wx/gdiobj.h" -#include "wx/gdicmn.h" -#include "wx/palette.h" - -// Bitmap -class WXDLLEXPORT wxDC; -class WXDLLEXPORT wxControl; -class WXDLLEXPORT wxBitmap; -class WXDLLEXPORT wxBitmapHandler; -class WXDLLEXPORT wxIcon; -class WXDLLEXPORT wxCursor; - -// A mask is a mono bitmap used for drawing bitmaps -// transparently. -class WXDLLEXPORT wxMask: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxMask) - -public: - wxMask(); - - // Construct a mask from a bitmap and a colour indicating - // the transparent area - wxMask(const wxBitmap& bitmap, const wxColour& colour); - - // Construct a mask from a bitmap and a palette index indicating - // the transparent area - wxMask(const wxBitmap& bitmap, int paletteIndex); - - // Construct a mask from a mono bitmap (copies the bitmap). - wxMask(const wxBitmap& bitmap); - - ~wxMask(); - - bool Create(const wxBitmap& bitmap, const wxColour& colour); - bool Create(const wxBitmap& bitmap, int paletteIndex); - bool Create(const wxBitmap& bitmap); - -/* TODO: platform-specific data access - // Implementation - inline WXHBITMAP GetMaskBitmap() const { return m_maskBitmap; } - inline void SetMaskBitmap(WXHBITMAP bmp) { m_maskBitmap = bmp; } -protected: - WXHBITMAP m_maskBitmap; -*/ -}; - -class WXDLLEXPORT wxBitmapRefData: public wxGDIRefData -{ - friend class WXDLLEXPORT wxBitmap; - friend class WXDLLEXPORT wxIcon; - friend class WXDLLEXPORT wxCursor; -public: - wxBitmapRefData(); - ~wxBitmapRefData(); - -public: - int m_width; - int m_height; - int m_depth; - bool m_ok; - int m_numColors; - wxPalette m_bitmapPalette; - int m_quality; - -/* WXHBITMAP m_hBitmap; TODO: platform-specific handle */ - wxMask * m_bitmapMask; // Optional mask -}; - -#define M_BITMAPDATA ((wxBitmapRefData *)m_refData) - -class WXDLLEXPORT wxBitmapHandler: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxBitmapHandler) -public: - wxBitmapHandler() { m_name = ""; m_extension = ""; m_type = 0; }; - - virtual bool Create(wxBitmap *bitmap, void *data, long flags, int width, int height, int depth = 1); - virtual bool LoadFile(wxBitmap *bitmap, const wxString& name, long flags, - int desiredWidth, int desiredHeight); - virtual bool SaveFile(wxBitmap *bitmap, const wxString& name, int type, const wxPalette *palette = NULL); - - inline void SetName(const wxString& name) { m_name = name; } - inline void SetExtension(const wxString& ext) { m_extension = ext; } - inline void SetType(long type) { m_type = type; } - inline wxString GetName() const { return m_name; } - inline wxString GetExtension() const { return m_extension; } - inline long GetType() const { return m_type; } -protected: - wxString m_name; - wxString m_extension; - long m_type; -}; - -#define M_BITMAPHANDLERDATA ((wxBitmapRefData *)bitmap->GetRefData()) - -class WXDLLEXPORT wxBitmap: public wxGDIObject -{ - DECLARE_DYNAMIC_CLASS(wxBitmap) - - friend class WXDLLEXPORT wxBitmapHandler; - -public: - wxBitmap(); // Platform-specific - - // Copy constructors - inline wxBitmap(const wxBitmap& bitmap) - { Ref(bitmap); if ( wxTheBitmapList ) wxTheBitmapList->AddBitmap(this); } - - // Initialize with raw data. - wxBitmap(const char bits[], int width, int height, int depth = 1); - -/* TODO: maybe implement XPM reading - // Initialize with XPM data - wxBitmap(const char **data); -*/ - - // Load a file or resource - // TODO: make default type whatever's appropriate for the platform. - wxBitmap(const wxString& name, long type = wxBITMAP_TYPE_BMP_RESOURCE); - - // Constructor for generalised creation from data - wxBitmap(void *data, long type, int width, int height, int depth = 1); - - // If depth is omitted, will create a bitmap compatible with the display - wxBitmap(int width, int height, int depth = -1); - ~wxBitmap(); - - virtual bool Create(int width, int height, int depth = -1); - virtual bool Create(void *data, long type, int width, int height, int depth = 1); - virtual bool LoadFile(const wxString& name, long type = wxBITMAP_TYPE_BMP_RESOURCE); - virtual bool SaveFile(const wxString& name, int type, const wxPalette *cmap = NULL); - - inline bool Ok() const { return (M_BITMAPDATA && M_BITMAPDATA->m_ok); } - inline int GetWidth() const { return (M_BITMAPDATA ? M_BITMAPDATA->m_width : 0); } - inline int GetHeight() const { return (M_BITMAPDATA ? M_BITMAPDATA->m_height : 0); } - inline int GetDepth() const { return (M_BITMAPDATA ? M_BITMAPDATA->m_depth : 0); } - inline int GetQuality() const { return (M_BITMAPDATA ? M_BITMAPDATA->m_quality : 0); } - void SetWidth(int w); - void SetHeight(int h); - void SetDepth(int d); - void SetQuality(int q); - void SetOk(bool isOk); - - inline wxPalette* GetPalette() const { return (M_BITMAPDATA ? (& M_BITMAPDATA->m_bitmapPalette) : (wxPalette*) NULL); } - void SetPalette(const wxPalette& palette); - - inline wxMask *GetMask() const { return (M_BITMAPDATA ? M_BITMAPDATA->m_bitmapMask : (wxMask*) NULL); } - void SetMask(wxMask *mask) ; - - inline wxBitmap& operator = (const wxBitmap& bitmap) { if (*this == bitmap) return (*this); Ref(bitmap); return *this; } - inline bool operator == (const wxBitmap& bitmap) { return m_refData == bitmap.m_refData; } - inline bool operator != (const wxBitmap& bitmap) { return m_refData != bitmap.m_refData; } - - // Format handling - static inline wxList& GetHandlers() { return sm_handlers; } - static void AddHandler(wxBitmapHandler *handler); - static void InsertHandler(wxBitmapHandler *handler); - static bool RemoveHandler(const wxString& name); - static wxBitmapHandler *FindHandler(const wxString& name); - static wxBitmapHandler *FindHandler(const wxString& extension, long bitmapType); - static wxBitmapHandler *FindHandler(long bitmapType); - - static void InitStandardHandlers(); - static void CleanUpHandlers(); -protected: - static wxList sm_handlers; - -/* - // TODO: Implementation -public: - void SetHBITMAP(WXHBITMAP bmp); - inline WXHBITMAP GetHBITMAP() const { return (M_BITMAPDATA ? M_BITMAPDATA->m_hBitmap : 0); } - bool FreeResource(bool force = FALSE); -*/ - -}; -#endif - // _WX_BITMAP_H_ diff --git a/include/wx/stubs/bmpbuttn.h b/include/wx/stubs/bmpbuttn.h deleted file mode 100644 index defe39e438..0000000000 --- a/include/wx/stubs/bmpbuttn.h +++ /dev/null @@ -1,83 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: bmpbuttn.h -// Purpose: wxBitmapButton class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_BMPBUTTN_H_ -#define _WX_BMPBUTTN_H_ - -#ifdef __GNUG__ -#pragma interface "bmpbuttn.h" -#endif - -#include "wx/button.h" - -WXDLLEXPORT_DATA(extern const char*) wxButtonNameStr; - -#define wxDEFAULT_BUTTON_MARGIN 4 - -class WXDLLEXPORT wxBitmapButton: public wxButton -{ - DECLARE_DYNAMIC_CLASS(wxBitmapButton) - public: - inline wxBitmapButton() { m_marginX = wxDEFAULT_BUTTON_MARGIN; m_marginY = wxDEFAULT_BUTTON_MARGIN; } - inline wxBitmapButton(wxWindow *parent, wxWindowID id, const wxBitmap& bitmap, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = wxBU_AUTODRAW, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxButtonNameStr) - { - Create(parent, id, bitmap, pos, size, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, const wxBitmap& bitmap, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = wxBU_AUTODRAW, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxButtonNameStr); - - virtual void SetLabel(const wxBitmap& bitmap) - { - SetBitmapLabel(bitmap); - } - - virtual void SetBitmapLabel(const wxBitmap& bitmap); - - inline wxBitmap& GetBitmapLabel() const { return (wxBitmap&) m_buttonBitmap; } - inline wxBitmap& GetBitmapSelected() const { return (wxBitmap&) m_buttonBitmapSelected; } - inline wxBitmap& GetBitmapFocus() const { return (wxBitmap&) m_buttonBitmapFocus; } - inline wxBitmap& GetBitmapDisabled() const { return (wxBitmap&) m_buttonBitmapDisabled; } - - inline void SetBitmapSelected(const wxBitmap& sel) { m_buttonBitmapSelected = sel; }; - inline void SetBitmapFocus(const wxBitmap& focus) { m_buttonBitmapFocus = focus; }; - inline void SetBitmapDisabled(const wxBitmap& disabled) { m_buttonBitmapDisabled = disabled; }; - - inline void SetMargins(int x, int y) { m_marginX = x; m_marginY = y; } - inline int GetMarginX() { return m_marginX; } - inline int GetMarginY() { return m_marginY; } - -/* - // TODO: Implementation - virtual bool MSWOnDraw(WXDRAWITEMSTRUCT *item); - virtual void DrawFace( WXHDC dc, int left, int top, int right, int bottom, bool sel ); - virtual void DrawButtonFocus( WXHDC dc, int left, int top, int right, int bottom, bool sel ); - virtual void DrawButtonDisable( WXHDC dc, int left, int top, int right, int bottom, bool with_marg ); -*/ - - protected: - wxBitmap m_buttonBitmap; - wxBitmap m_buttonBitmapSelected; - wxBitmap m_buttonBitmapFocus; - wxBitmap m_buttonBitmapDisabled; - int m_marginX; - int m_marginY; -}; - -#endif - // _WX_BMPBUTTN_H_ diff --git a/include/wx/stubs/brush.h b/include/wx/stubs/brush.h deleted file mode 100644 index a0a1bd7471..0000000000 --- a/include/wx/stubs/brush.h +++ /dev/null @@ -1,83 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: brush.h -// Purpose: wxBrush class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_BRUSH_H_ -#define _WX_BRUSH_H_ - -#ifdef __GNUG__ -#pragma interface "brush.h" -#endif - -#include "wx/gdicmn.h" -#include "wx/gdiobj.h" -#include "wx/bitmap.h" - -class WXDLLEXPORT wxBrush; - -class WXDLLEXPORT wxBrushRefData: public wxGDIRefData -{ - friend class WXDLLEXPORT wxBrush; -public: - wxBrushRefData(); - wxBrushRefData(const wxBrushRefData& data); - ~wxBrushRefData(); - -protected: - int m_style; - wxBitmap m_stipple ; - wxColour m_colour; - -/* TODO: implementation - WXHBRUSH m_hBrush; -*/ -}; - -#define M_BRUSHDATA ((wxBrushRefData *)m_refData) - -// Brush -class WXDLLEXPORT wxBrush: public wxGDIObject -{ - DECLARE_DYNAMIC_CLASS(wxBrush) - -public: - wxBrush(); - wxBrush(const wxColour& col, int style); - wxBrush(const wxBitmap& stipple); - inline wxBrush(const wxBrush& brush) { Ref(brush); } - ~wxBrush(); - - virtual void SetColour(const wxColour& col) ; - virtual void SetColour(unsigned char r, unsigned char g, unsigned char b) ; - virtual void SetStyle(int style) ; - virtual void SetStipple(const wxBitmap& stipple) ; - - inline wxBrush& operator = (const wxBrush& brush) { if (*this == brush) return (*this); Ref(brush); return *this; } - inline bool operator == (const wxBrush& brush) { return m_refData == brush.m_refData; } - inline bool operator != (const wxBrush& brush) { return m_refData != brush.m_refData; } - - inline wxColour& GetColour() const { return (M_BRUSHDATA ? M_BRUSHDATA->m_colour : wxNullColour); }; - inline int GetStyle() const { return (M_BRUSHDATA ? M_BRUSHDATA->m_style : 0); }; - inline wxBitmap *GetStipple() const { return (M_BRUSHDATA ? & M_BRUSHDATA->m_stipple : 0); }; - - virtual bool Ok() const { return (m_refData != NULL) ; } - -// Implementation - - // Useful helper: create the brush resource - bool RealizeResource(); - - // When setting properties, we must make sure we're not changing - // another object - void Unshare(); -}; - -#endif - // _WX_BRUSH_H_ diff --git a/include/wx/stubs/button.h b/include/wx/stubs/button.h deleted file mode 100644 index 68b67d8c96..0000000000 --- a/include/wx/stubs/button.h +++ /dev/null @@ -1,53 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: button.h -// Purpose: wxButton class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_BUTTON_H_ -#define _WX_BUTTON_H_ - -#ifdef __GNUG__ -#pragma interface "button.h" -#endif - -#include "wx/control.h" -#include "wx/gdicmn.h" - -WXDLLEXPORT_DATA(extern const char*) wxButtonNameStr; - -// Pushbutton -class WXDLLEXPORT wxButton: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxButton) - public: - inline wxButton() {} - inline wxButton(wxWindow *parent, wxWindowID id, const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxButtonNameStr) - { - Create(parent, id, label, pos, size, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxButtonNameStr); - - virtual void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - virtual void SetDefault(); - virtual void SetLabel(const wxString& label); - virtual wxString GetLabel() const ; - virtual void Command(wxCommandEvent& event); -}; - -#endif - // _WX_BUTTON_H_ diff --git a/include/wx/stubs/checkbox.h b/include/wx/stubs/checkbox.h deleted file mode 100644 index 8bf41d9958..0000000000 --- a/include/wx/stubs/checkbox.h +++ /dev/null @@ -1,81 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: checkbox.h -// Purpose: wxCheckBox class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_CHECKBOX_H_ -#define _WX_CHECKBOX_H_ - -#ifdef __GNUG__ -#pragma interface "checkbox.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxCheckBoxNameStr; - -// Checkbox item (single checkbox) -class WXDLLEXPORT wxBitmap; -class WXDLLEXPORT wxCheckBox: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxCheckBox) - - public: - inline wxCheckBox() { } - inline wxCheckBox(wxWindow *parent, wxWindowID id, const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxCheckBoxNameStr) - { - Create(parent, id, label, pos, size, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxCheckBoxNameStr); - virtual void SetValue(bool); - virtual bool GetValue() const ; - virtual void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - virtual void SetLabel(const wxString& label); - virtual void Command(wxCommandEvent& event); -}; - -class WXDLLEXPORT wxBitmapCheckBox: public wxCheckBox -{ - DECLARE_DYNAMIC_CLASS(wxBitmapCheckBox) - - public: - int checkWidth ; - int checkHeight ; - - inline wxBitmapCheckBox() { checkWidth = -1; checkHeight = -1; } - inline wxBitmapCheckBox(wxWindow *parent, wxWindowID id, const wxBitmap *label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxCheckBoxNameStr) - { - Create(parent, id, label, pos, size, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, const wxBitmap *bitmap, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxCheckBoxNameStr); - virtual void SetValue(bool); - virtual bool GetValue() const ; - virtual void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - virtual void SetLabel(const wxBitmap *bitmap); -}; -#endif - // _WX_CHECKBOX_H_ diff --git a/include/wx/stubs/checklst.h b/include/wx/stubs/checklst.h deleted file mode 100644 index 19b4ccb8d3..0000000000 --- a/include/wx/stubs/checklst.h +++ /dev/null @@ -1,47 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: checklst.h -// Purpose: wxCheckListBox class - a listbox with checkable items -// Note: this is an optional class. -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_CHECKLST_H_ -#define _WX_CHECKLST_H_ - -#ifdef __GNUG__ -#pragma interface "checklst.h" -#endif - -#include "wx/listbox.h" - -typedef unsigned int size_t; - -class wxCheckListBox : public wxListBox -{ - DECLARE_DYNAMIC_CLASS(wxCheckListBox) -public: - // ctors - wxCheckListBox(); - wxCheckListBox(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - int nStrings = 0, - const wxString choices[] = NULL, - long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxListBoxNameStr); - - // items may be checked - bool IsChecked(size_t uiIndex) const; - void Check(size_t uiIndex, bool bCheck = TRUE); - - DECLARE_EVENT_TABLE() -}; - -#endif - // _WX_CHECKLST_H_ diff --git a/include/wx/stubs/choice.h b/include/wx/stubs/choice.h deleted file mode 100644 index 7f360ed5cc..0000000000 --- a/include/wx/stubs/choice.h +++ /dev/null @@ -1,72 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: choice.h -// Purpose: wxChoice class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_CHOICE_H_ -#define _WX_CHOICE_H_ - -#ifdef __GNUG__ -#pragma interface "choice.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxChoiceNameStr; - -// Choice item -class WXDLLEXPORT wxChoice: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxChoice) - - public: - inline wxChoice() { m_noStrings = 0; } - - inline wxChoice(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = NULL, - long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxChoiceNameStr) - { - Create(parent, id, pos, size, n, choices, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = NULL, - long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxChoiceNameStr); - - virtual void Append(const wxString& item); - virtual void Delete(int n); - virtual void Clear(); - virtual int GetSelection() const ; - virtual void SetSelection(int n); - virtual int FindString(const wxString& s) const; - virtual wxString GetString(int n) const ; - virtual void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - virtual wxString GetStringSelection() const ; - virtual bool SetStringSelection(const wxString& sel); - - virtual inline int Number() const { return m_noStrings; } - virtual void Command(wxCommandEvent& event); - - virtual inline void SetColumns(int WXUNUSED(n) = 1 ) { /* No effect */ } ; - virtual inline int GetColumns() const { return 1 ; }; - -protected: - int m_noStrings; -}; - -#endif - // _WX_CHOICE_H_ diff --git a/include/wx/stubs/clipbrd.h b/include/wx/stubs/clipbrd.h deleted file mode 100644 index 697dc9d939..0000000000 --- a/include/wx/stubs/clipbrd.h +++ /dev/null @@ -1,104 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: clipbrd.h -// Purpose: Clipboard functionality. -// Note: this functionality is under review, and -// is derived from wxWindows 1.xx code. Please contact -// the wxWindows developers for further information. -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_CLIPBRD_H_ -#define _WX_CLIPBRD_H_ - -#ifdef __GNUG__ -#pragma interface "clipbrd.h" -#endif - -#include "wx/defs.h" -#include "wx/setup.h" - -#include "wx/list.h" - -bool WXDLLEXPORT wxOpenClipboard(); -bool WXDLLEXPORT wxClipboardOpen(); -bool WXDLLEXPORT wxCloseClipboard(); -bool WXDLLEXPORT wxEmptyClipboard(); -bool WXDLLEXPORT wxIsClipboardFormatAvailable(int dataFormat); -bool WXDLLEXPORT wxSetClipboardData(int dataFormat, wxObject *obj, int width = 0, int height = 0); -wxObject* WXDLLEXPORT wxGetClipboardData(int dataFormat, long *len = NULL); -int WXDLLEXPORT wxEnumClipboardFormats(int dataFormat); -int WXDLLEXPORT wxRegisterClipboardFormat(char *formatName); -bool WXDLLEXPORT wxGetClipboardFormatName(int dataFormat, char *formatName, int maxCount); - -/* A clipboard client holds data belonging to the clipboard. - For plain text, a client is not necessary. */ -class WXDLLEXPORT wxClipboardClient : public wxObject -{ - DECLARE_ABSTRACT_CLASS(wxClipboardClient) - - public: - /* 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 */ - wxStringList formats; - - /* This method is called when the client is losing the selection. */ - virtual void BeingReplaced() = 0; - - /* This method is called when someone wants the data this client is - supplying to the clipboard. "format" is a string indicating the - format of the data - one of the strings from the "formats" - list. "*size" should be filled with the size of the resulting - data. In the case of text, "*size" does not count the - NULL terminator. */ - virtual char *GetData(char *format, long *size) = 0; -}; - -/* ONE instance of this class: */ -class WXDLLEXPORT wxClipboard : public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxClipboard) - - public: - wxClipboardClient *clipOwner; - char *cbString, *sentString, *receivedString; - void *receivedTargets; - long receivedLength; - - wxClipboard(); - ~wxClipboard(); - - /* Set the clipboard data owner. "time" comes from the event record. */ - void SetClipboardClient(wxClipboardClient *, long time); - - /* Set the clipboard string; does not require a client. */ - void SetClipboardString(char *, long time); - - /* Get data from the clipboard in the format "TEXT". */ - char *GetClipboardString(long time); - - /* Get data from the clipboard */ - char *GetClipboardData(char *format, long *length, long time); - - /* 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. (This is used - by the wxMediaEdit class.) */ - wxClipboardClient *GetClipboardClient(); -}; - -/* Initialize wxTheClipboard. Can be called repeatedly */ -void WXDLLEXPORT wxInitClipboard(); - -/* The clipboard */ -WXDLLEXPORT_DATA(extern wxClipboard*) wxTheClipboard; - -#endif - // _WX_CLIPBRD_H_ diff --git a/include/wx/stubs/colordlg.h b/include/wx/stubs/colordlg.h deleted file mode 100644 index 556c2f316e..0000000000 --- a/include/wx/stubs/colordlg.h +++ /dev/null @@ -1,46 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: colordlg.h -// Purpose: wxColourDialog class. Use generic version if no -// platform-specific implementation. -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_COLORDLG_H_ -#define _WX_COLORDLG_H_ - -#ifdef __GNUG__ -#pragma interface "colordlg.h" -#endif - -#include "wx/setup.h" -#include "wx/dialog.h" -#include "wx/cmndata.h" - -/* - * Platform-specific colour dialog implementation - */ - -class WXDLLEXPORT wxColourDialog: public wxDialog -{ -DECLARE_DYNAMIC_CLASS(wxColourDialog) -public: - wxColourDialog(); - wxColourDialog(wxWindow *parent, wxColourData *data = NULL); - - bool Create(wxWindow *parent, wxColourData *data = NULL); - - int ShowModal(); - wxColourData& GetColourData() { return m_colourData; } - -protected: - wxColourData m_colourData; - wxWindow* m_dialogParent; -}; - -#endif - // _WX_COLORDLG_H_ diff --git a/include/wx/stubs/colour.h b/include/wx/stubs/colour.h deleted file mode 100644 index 16ffdac9aa..0000000000 --- a/include/wx/stubs/colour.h +++ /dev/null @@ -1,97 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: colour.h -// Purpose: wxColour class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_COLOUR_H_ -#define _WX_COLOUR_H_ - -#ifdef __GNUG__ -#pragma interface "colour.h" -#endif - -#include "wx/object.h" -#include "wx/string.h" - -// Colour -class WXDLLEXPORT wxColour: public wxObject -{ -public: - // ctors - // default - wxColour(); - // from RGB - wxColour( unsigned char red, unsigned char green, unsigned char blue ); - // implicit conversion from the colour name - wxColour( const wxString &colourName ) { InitFromName(colourName); } - wxColour( const char *colourName ) { InitFromName(colourName); } - - // copy ctors and assignment operators - wxColour( const wxColour& col ); - wxColour( const wxColour* col ); - wxColour& operator = ( const wxColour& col ); - - // dtor - ~wxColour(); - - // Set() functions - void Set( unsigned char red, unsigned char green, unsigned char blue ); - void Set( unsigned long colRGB ) - { - // we don't need to know sizeof(long) here because we assume that the three - // least significant bytes contain the R, G and B values - Set((unsigned char)colRGB, - (unsigned char)(colRGB >> 8), - (unsigned char)(colRGB >> 16)); - } - - // accessors - bool Ok() const {return m_isInit; } - - // Let's remove this inelegant function -#if WXWIN_COMPATIBILITY - void Get(unsigned char *r, unsigned char *g, unsigned char *b) const; -#endif - - unsigned char Red() const { return m_red; } - unsigned char Green() const { return m_green; } - unsigned char Blue() const { return m_blue; } - - // comparison - bool operator == (const wxColour& colour) - { - return (m_red == colour.m_red && - m_green == colour.m_green && - m_blue == colour.m_blue); - } - bool operator != (const wxColour& colour) { return !(*this == colour); } - - void InitFromName(const wxString& col); - -/* TODO - WXCOLORREF GetPixel() const { return m_pixel; }; -*/ - -private: - bool m_isInit; - unsigned char m_red; - unsigned char m_blue; - unsigned char m_green; - -public: - /* TODO: implementation - WXCOLORREF m_pixel ; - */ - -private: - DECLARE_DYNAMIC_CLASS(wxColour) -}; - -#endif - // _WX_COLOUR_H_ diff --git a/include/wx/stubs/combobox.h b/include/wx/stubs/combobox.h deleted file mode 100644 index 07054af74e..0000000000 --- a/include/wx/stubs/combobox.h +++ /dev/null @@ -1,84 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: combobox.h -// Purpose: wxComboBox class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_COMBOBOX_H_ -#define _WX_COMBOBOX_H_ - -#ifdef __GNUG__ -#pragma interface "combobox.h" -#endif - -#include "wx/choice.h" - -WXDLLEXPORT_DATA(extern const char*) wxComboBoxNameStr; -WXDLLEXPORT_DATA(extern const char*) wxEmptyString; - -// Combobox item -class WXDLLEXPORT wxComboBox: public wxChoice -{ - DECLARE_DYNAMIC_CLASS(wxComboBox) - - public: - inline wxComboBox() {} - - inline wxComboBox(wxWindow *parent, wxWindowID id, - const wxString& value = wxEmptyString, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = NULL, - long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxComboBoxNameStr) - { - Create(parent, id, value, pos, size, n, choices, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - const wxString& value = wxEmptyString, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = NULL, - long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxComboBoxNameStr); - - // List functions - virtual void Append(const wxString& item); - virtual void Delete(int n); - virtual void Clear(); - virtual int GetSelection() const ; - virtual void SetSelection(int n); - virtual int FindString(const wxString& s) const; - virtual wxString GetString(int n) const ; - virtual wxString GetStringSelection() const ; - virtual bool SetStringSelection(const wxString& sel); - virtual inline int Number() const { return m_noStrings; } - - // Text field functions - virtual wxString GetValue() const ; - virtual void SetValue(const wxString& value); - - // Clipboard operations - virtual void Copy(); - virtual void Cut(); - virtual void Paste(); - virtual void SetInsertionPoint(long pos); - virtual void SetInsertionPointEnd(); - virtual long GetInsertionPoint() const ; - virtual long GetLastPosition() const ; - virtual void Replace(long from, long to, const wxString& value); - virtual void Remove(long from, long to); - virtual void SetSelection(long from, long to); - virtual void SetEditable(bool editable); -}; - -#endif - // _WX_COMBOBOX_H_ diff --git a/include/wx/stubs/control.h b/include/wx/stubs/control.h deleted file mode 100644 index c75756a72a..0000000000 --- a/include/wx/stubs/control.h +++ /dev/null @@ -1,50 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: control.h -// Purpose: wxControl class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_CONTROL_H_ -#define _WX_CONTROL_H_ - -#ifdef __GNUG__ -#pragma interface "control.h" -#endif - -#include "wx/window.h" -#include "wx/list.h" -#include "wx/validate.h" - -// General item class -class WXDLLEXPORT wxControl: public wxWindow -{ - DECLARE_ABSTRACT_CLASS(wxControl) -public: - wxControl(); - ~wxControl(); - - virtual void Command(wxCommandEvent& WXUNUSED(event)) {}; // Simulates an event - virtual void ProcessCommand(wxCommandEvent& event); // Calls the callback and - // appropriate event handlers - virtual void SetLabel(const wxString& label); - virtual wxString GetLabel() const ; - - // Places item in centre of panel - so can't be used BEFORE panel->Fit() - void Centre(int direction = wxHORIZONTAL); - inline void Callback(const wxFunction function) { m_callback = function; }; // Adds callback - - inline wxFunction GetCallback() { return m_callback; } - -protected: - wxFunction m_callback; // Callback associated with the window - -DECLARE_EVENT_TABLE() -}; - -#endif - // _WX_CONTROL_H_ diff --git a/include/wx/stubs/cursor.h b/include/wx/stubs/cursor.h deleted file mode 100644 index bc6397069f..0000000000 --- a/include/wx/stubs/cursor.h +++ /dev/null @@ -1,75 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: cursor.h -// Purpose: wxCursor class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_CURSOR_H_ -#define _WX_CURSOR_H_ - -#ifdef __GNUG__ -#pragma interface "cursor.h" -#endif - -#include "wx/bitmap.h" - -class WXDLLEXPORT wxCursorRefData: public wxBitmapRefData -{ - friend class WXDLLEXPORT wxBitmap; - friend class WXDLLEXPORT wxCursor; -public: - wxCursorRefData(); - ~wxCursorRefData(); - -protected: -/* TODO: implementation - WXHCURSOR m_hCursor; -*/ -}; - -#define M_CURSORDATA ((wxCursorRefData *)m_refData) -#define M_CURSORHANDLERDATA ((wxCursorRefData *)bitmap->m_refData) - -// Cursor -class WXDLLEXPORT wxCursor: public wxBitmap -{ - DECLARE_DYNAMIC_CLASS(wxCursor) - -public: - wxCursor(); - - // Copy constructors - inline wxCursor(const wxCursor& cursor) { Ref(cursor); } - - wxCursor(const char bits[], int width, int height, int hotSpotX = -1, int hotSpotY = -1, - const char maskBits[] = NULL); - - /* TODO: make default type suit platform */ - wxCursor(const wxString& name, long flags = wxBITMAP_TYPE_CUR_RESOURCE, - int hotSpotX = 0, int hotSpotY = 0); - - wxCursor(int cursor_type); - ~wxCursor(); - - // TODO: also verify the internal cursor handle - virtual bool Ok() const { return (m_refData != NULL) ; } - - inline wxCursor& operator = (const wxCursor& cursor) { if (*this == cursor) return (*this); Ref(cursor); return *this; } - inline bool operator == (const wxCursor& cursor) { return m_refData == cursor.m_refData; } - inline bool operator != (const wxCursor& cursor) { return m_refData != cursor.m_refData; } - -/* TODO: implementation - void SetHCURSOR(WXHCURSOR cursor); - inline WXHCURSOR GetHCURSOR() const { return (M_CURSORDATA ? M_CURSORDATA->m_hCursor : 0); } -*/ -}; - -extern WXDLLEXPORT void wxSetCursor(const wxCursor& cursor); - -#endif - // _WX_CURSOR_H_ diff --git a/include/wx/stubs/dc.h b/include/wx/stubs/dc.h deleted file mode 100644 index ce3e9998d1..0000000000 --- a/include/wx/stubs/dc.h +++ /dev/null @@ -1,374 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dc.h -// Purpose: wxDC class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_DC_H_ -#define _WX_DC_H_ - -#ifdef __GNUG__ -#pragma interface "dc.h" -#endif - -#include "wx/pen.h" -#include "wx/brush.h" -#include "wx/icon.h" -#include "wx/font.h" -#include "wx/gdicmn.h" - -//----------------------------------------------------------------------------- -// constants -//----------------------------------------------------------------------------- - -#ifndef MM_TEXT -#define MM_TEXT 0 -#define MM_ISOTROPIC 1 -#define MM_ANISOTROPIC 2 -#define MM_LOMETRIC 3 -#define MM_HIMETRIC 4 -#define MM_TWIPS 5 -#define MM_POINTS 6 -#define MM_METRIC 7 -#endif - -//----------------------------------------------------------------------------- -// global variables -//----------------------------------------------------------------------------- - -extern int wxPageNumber; - -//----------------------------------------------------------------------------- -// wxDC -//----------------------------------------------------------------------------- - -class WXDLLEXPORT wxDC: public wxObject -{ - DECLARE_ABSTRACT_CLASS(wxDC) - - public: - - wxDC(void); - ~wxDC(void); - - void BeginDrawing(void) {}; - void EndDrawing(void) {}; - - virtual bool Ok(void) const { return m_ok; }; - - virtual void FloodFill( long x1, long y1, const wxColour& col, int style=wxFLOOD_SURFACE ) = 0; - inline void FloodFill(const wxPoint& pt, const wxColour& col, int style=wxFLOOD_SURFACE) - { - FloodFill(pt.x, pt.y, col, style); - } - - virtual bool GetPixel( long x1, long y1, wxColour *col ) const = 0; - inline bool GetPixel(const wxPoint& pt, wxColour *col) const - { - return GetPixel(pt.x, pt.y, col); - } - - virtual void DrawLine( long x1, long y1, long x2, long y2 ) = 0; - inline void DrawLine(const wxPoint& pt1, const wxPoint& pt2) - { - DrawLine(pt1.x, pt1.y, pt2.x, pt2.y); - } - - virtual void CrossHair( long x, long y ) = 0; - inline void CrossHair(const wxPoint& pt) - { - CrossHair(pt.x, pt.y); - } - - virtual void DrawArc( long x1, long y1, long x2, long y2, long xc, long yc ) = 0; - inline void DrawArc(const wxPoint& pt1, const wxPoint& pt2, const wxPoint& centre) - { - DrawArc(pt1.x, pt1.y, pt2.x, pt2.y, centre.x, centre.y); - } - - virtual void DrawEllipticArc( long x, long y, long width, long height, double sa, double ea ) = 0; - virtual void DrawEllipticArc (const wxPoint& pt, const wxSize& sz, double sa, double ea) - { - DrawEllipticArc(pt.x, pt.y, sz.x, sz.y, sa, ea); - } - - virtual void DrawPoint( long x, long y ) = 0; - virtual void DrawPoint( wxPoint& point ); - - virtual void DrawLines( int n, wxPoint points[], long xoffset = 0, long yoffset = 0 ) = 0; - virtual void DrawLines( wxList *points, long xoffset = 0, long yoffset = 0 ); - virtual void DrawPolygon( int n, wxPoint points[], long xoffset = 0, long yoffset = 0, - int fillStyle=wxODDEVEN_RULE ) = 0; - virtual void DrawPolygon( wxList *lines, long xoffset = 0, long yoffset = 0, - int fillStyle=wxODDEVEN_RULE ); - - virtual void DrawRectangle( long x, long y, long width, long height ) = 0; - inline void DrawRectangle(const wxPoint& pt, const wxSize& sz) - { - DrawRectangle(pt.x, pt.y, sz.x, sz.y); - } - inline void DrawRectangle(const wxRect& rect) - { - DrawRectangle(rect.x, rect.y, rect.width, rect.height); - } - virtual void DrawRoundedRectangle( long x, long y, long width, long height, double radius = 20.0 ) = 0; - inline void DrawRoundedRectangle(const wxPoint& pt, const wxSize& sz, double radius = 20.0) - { - DrawRoundedRectangle(pt.x, pt.y, sz.x, sz.y, radius); - } - inline void DrawRoundedRectangle(const wxRect& rect, double radius = 20.0) - { - DrawRoundedRectangle(rect.x, rect.y, rect.width, rect.height, radius); - } - - virtual void DrawEllipse( long x, long y, long width, long height ) = 0; - inline void DrawEllipse(const wxPoint& pt, const wxSize& sz) - { - DrawEllipse(pt.x, pt.y, sz.x, sz.y); - } - inline void DrawEllipse(const wxRect& rect) - { - DrawEllipse(rect.x, rect.y, rect.width, rect.height); - } - - virtual void DrawSpline( long x1, long y1, long x2, long y2, long x3, long y3 ); - virtual void DrawSpline( wxList *points ) = 0; - virtual void DrawSpline( int n, wxPoint points[] ); - - virtual bool CanDrawBitmap(void) const = 0; - - virtual void DrawIcon( const wxIcon &icon, long x, long y, bool useMask=FALSE ); - inline void DrawIcon(const wxIcon& icon, const wxPoint& pt) - { - DrawIcon(icon, pt.x, pt.y); - } - - // TODO DrawBitmap is not always the same as DrawIcon, especially if bitmaps and - // icons are implemented differently. - void DrawBitmap( const wxBitmap &bmp, long x, long y, bool useMask=FALSE ) - { DrawIcon( *((wxIcon*)(&bmp)), x, y, useMask ); } - - virtual bool Blit( long xdest, long ydest, long width, long height, - wxDC *source, long xsrc, long ysrc, int logical_func = wxCOPY, bool useMask=FALSE ) = 0; - inline bool Blit(const wxPoint& destPt, const wxSize& sz, - wxDC *source, const wxPoint& srcPt, int rop = wxCOPY, bool useMask = FALSE) - { - return Blit(destPt.x, destPt.y, sz.x, sz.y, source, srcPt.x, srcPt.y, rop, useMask); - } - - virtual void DrawText( const wxString &text, long x, long y, bool use16 = FALSE ) = 0; - inline void DrawText(const wxString& text, const wxPoint& pt, bool use16bit = FALSE) - { - DrawText(text, pt.x, pt.y, use16bit); - } - - virtual bool CanGetTextExtent(void) const = 0; - virtual void GetTextExtent( const wxString &string, long *width, long *height, - long *descent = NULL, long *externalLeading = NULL, - wxFont *theFont = NULL, bool use16 = FALSE ) = 0; - virtual long GetCharWidth(void) = 0; - virtual long GetCharHeight(void) = 0; - - virtual void Clear(void) = 0; - - virtual void SetFont( const wxFont &font ) = 0; - virtual wxFont& GetFont(void) const { return (wxFont&) m_font; }; - - virtual void SetPen( const wxPen &pen ) = 0; - virtual wxPen& GetPen(void) const { return (wxPen&) m_pen; }; - - virtual void SetBrush( const wxBrush &brush ) = 0; - virtual wxBrush& GetBrush(void) const { return (wxBrush&) m_brush; }; - - virtual void SetBackground( const wxBrush &brush ) = 0; - virtual wxBrush& GetBackground(void) const { return (wxBrush&) m_backgroundBrush; }; - - virtual void SetLogicalFunction( int function ) = 0; - virtual int GetLogicalFunction(void) const { return m_logicalFunction; }; - - virtual void SetTextForeground( const wxColour &col ); - virtual void SetTextBackground( const wxColour &col ); - virtual wxColour& GetTextBackground(void) const { return (wxColour&)m_textBackgroundColour; }; - virtual wxColour& GetTextForeground(void) const { return (wxColour&)m_textForegroundColour; }; - - virtual void SetBackgroundMode( int mode ) = 0; - virtual int GetBackgroundMode(void) const { return m_backgroundMode; }; - - virtual void SetPalette( const wxPalette& palette ) = 0; - void SetColourMap( const wxPalette& palette ) { SetPalette(palette); }; - - // the first two must be overridden and called - virtual void SetClippingRegion( long x, long y, long width, long height ); - virtual void DestroyClippingRegion(void); - virtual void GetClippingBox( long *x, long *y, long *width, long *height ) const; - - virtual inline long MinX(void) const { return m_minX; } - virtual inline long MaxX(void) const { return m_maxX; } - virtual inline long MinY(void) const { return m_minY; } - virtual inline long MaxY(void) const { return m_maxY; } - - virtual void GetSize( int* width, int* height ) const; - inline wxSize GetSize(void) const { int w, h; GetSize(&w, &h); return wxSize(w, h); } - virtual void GetSizeMM( long* width, long* height ) const; - - virtual bool StartDoc( const wxString& WXUNUSED(message) ) { return TRUE; }; - virtual void EndDoc(void) {}; - virtual void StartPage(void) {}; - virtual void EndPage(void) {}; - - virtual void SetMapMode( int mode ); - virtual int GetMapMode(void) const { return m_mappingMode; }; - - virtual void SetUserScale( double x, double y ); - virtual void GetUserScale( double *x, double *y ); - virtual void SetLogicalScale( double x, double y ); - virtual void GetLogicalScale( double *x, double *y ); - - virtual void SetLogicalOrigin( long x, long y ); - virtual void GetLogicalOrigin( long *x, long *y ); - virtual void SetDeviceOrigin( long x, long y ); - virtual void GetDeviceOrigin( long *x, long *y ); - virtual void SetInternalDeviceOrigin( long x, long y ); - virtual void GetInternalDeviceOrigin( long *x, long *y ); - - virtual void SetAxisOrientation( bool xLeftRight, bool yBottomUp ); - - virtual void SetOptimization( bool WXUNUSED(optimize) ) {}; - virtual bool GetOptimization(void) { return m_optimize; }; - - virtual long DeviceToLogicalX(long x) const; - virtual long DeviceToLogicalY(long y) const; - virtual long DeviceToLogicalXRel(long x) const; - virtual long DeviceToLogicalYRel(long y) const; - virtual long LogicalToDeviceX(long x) const; - virtual long LogicalToDeviceY(long y) const; - virtual long LogicalToDeviceXRel(long x) const; - virtual long LogicalToDeviceYRel(long y) const; - - public: - - void CalcBoundingBox( long x, long y ); - void ComputeScaleAndOrigin(void); - - long XDEV2LOG(long x) const - { - long new_x = x - m_deviceOriginX; - if (new_x > 0) - return (long)((double)(new_x) / m_scaleX + 0.5) * m_signX + m_logicalOriginX; - else - return (long)((double)(new_x) / m_scaleX - 0.5) * m_signX + m_logicalOriginX; - } - long XDEV2LOGREL(long x) const - { - if (x > 0) - return (long)((double)(x) / m_scaleX + 0.5); - else - return (long)((double)(x) / m_scaleX - 0.5); - } - long YDEV2LOG(long y) const - { - long new_y = y - m_deviceOriginY; - if (new_y > 0) - return (long)((double)(new_y) / m_scaleY + 0.5) * m_signY + m_logicalOriginY; - else - return (long)((double)(new_y) / m_scaleY - 0.5) * m_signY + m_logicalOriginY; - } - long YDEV2LOGREL(long y) const - { - if (y > 0) - return (long)((double)(y) / m_scaleY + 0.5); - else - return (long)((double)(y) / m_scaleY - 0.5); - } - long XLOG2DEV(long x) const - { - long new_x = x - m_logicalOriginX; - if (new_x > 0) - return (long)((double)(new_x) * m_scaleX + 0.5) * m_signX + m_deviceOriginX; - else - return (long)((double)(new_x) * m_scaleX - 0.5) * m_signX + m_deviceOriginX; - } - long XLOG2DEVREL(long x) const - { - if (x > 0) - return (long)((double)(x) * m_scaleX + 0.5); - else - return (long)((double)(x) * m_scaleX - 0.5); - } - long YLOG2DEV(long y) const - { - long new_y = y - m_logicalOriginY; - if (new_y > 0) - return (long)((double)(new_y) * m_scaleY + 0.5) * m_signY + m_deviceOriginY; - else - return (long)((double)(new_y) * m_scaleY - 0.5) * m_signY + m_deviceOriginY; - } - long YLOG2DEVREL(long y) const - { - if (y > 0) - return (long)((double)(y) * m_scaleY + 0.5); - else - return (long)((double)(y) * m_scaleY - 0.5); - } - - public: - - bool m_ok; - bool m_colour; - - // not sure, what these mean - bool m_clipping; // Is clipping on right now ? - bool m_isInteractive; // Is GetPixel possible ? - bool m_autoSetting; // wxMSW only ? - bool m_dontDelete; // wxMSW only ? - bool m_optimize; // wxMSW only ? - wxString m_filename; // Not sure where this belongs. - - wxPen m_pen; - wxBrush m_brush; - wxBrush m_backgroundBrush; - wxColour m_textForegroundColour; - wxColour m_textBackgroundColour; - wxFont m_font; - - int m_logicalFunction; - int m_backgroundMode; - int m_textAlignment; // gone in wxWin 2.0 ? - - int m_mappingMode; - - // not sure what for, but what is a mm on a screen you don't know the size of? - double m_mm_to_pix_x,m_mm_to_pix_y; - - long m_internalDeviceOriginX,m_internalDeviceOriginY; // If un-scrolled is non-zero or - // d.o. changes with scrolling. - // Set using SetInternalDeviceOrigin(). - - long m_externalDeviceOriginX,m_externalDeviceOriginY; // To be set by external classes - // such as wxScrolledWindow - // using SetDeviceOrigin() - - long m_deviceOriginX,m_deviceOriginY; // Sum of the two above. - - long m_logicalOriginX,m_logicalOriginY; // User defined. - - double m_scaleX,m_scaleY; - double m_logicalScaleX,m_logicalScaleY; - double m_userScaleX,m_userScaleY; - long m_signX,m_signY; - - bool m_needComputeScaleX,m_needComputeScaleY; // not yet used - - float m_scaleFactor; // wxPSDC wants to have this. Will disappear. - - long m_clipX1,m_clipY1,m_clipX2,m_clipY2; - long m_minX,m_maxX,m_minY,m_maxY; -}; - -#endif - // _WX_DC_H_ diff --git a/include/wx/stubs/dcclient.h b/include/wx/stubs/dcclient.h deleted file mode 100644 index 29e4e6f7a0..0000000000 --- a/include/wx/stubs/dcclient.h +++ /dev/null @@ -1,125 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcclient.h -// Purpose: wxClientDC, wxPaintDC and wxWindowDC classes -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_DCCLIENT_H_ -#define _WX_DCCLIENT_H_ - -#ifdef __GNUG__ -#pragma interface "dcclient.h" -#endif - -#include "wx/dc.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class WXDLLEXPORT wxPaintDC; -class WXDLLEXPORT wxWindow; - -// Under Windows, wxClientDC, wxPaintDC and wxWindowDC are implemented differently. -// On many platforms, however, they will be the same. - -class WXDLLEXPORT wxWindowDC: public wxDC -{ - DECLARE_DYNAMIC_CLASS(wxWindowDC) - - public: - - wxWindowDC(void); - wxWindowDC( wxWindow *win ); - - ~wxWindowDC(void); - - virtual void FloodFill( long x1, long y1, const wxColour& col, int style=wxFLOOD_SURFACE ); - virtual bool GetPixel( long x1, long y1, wxColour *col ) const; - - virtual void DrawLine( long x1, long y1, long x2, long y2 ); - virtual void CrossHair( long x, long y ); - virtual void DrawArc( long x1, long y1, long x2, long y2, long xc, long yc ); - virtual void DrawEllipticArc( long x, long y, long width, long height, double sa, double ea ); - virtual void DrawPoint( long x, long y ); - - virtual void DrawLines( int n, wxPoint points[], long xoffset = 0, long yoffset = 0 ); - virtual void DrawLines( wxList *points, long xoffset = 0, long yoffset = 0 ); - virtual void DrawPolygon( int n, wxPoint points[], long xoffset = 0, long yoffset = 0, - int fillStyle=wxODDEVEN_RULE ); - virtual void DrawPolygon( wxList *lines, long xoffset = 0, long yoffset = 0, - int fillStyle=wxODDEVEN_RULE ); - - virtual void DrawRectangle( long x, long y, long width, long height ); - virtual void DrawRoundedRectangle( long x, long y, long width, long height, double radius = 20.0 ); - virtual void DrawEllipse( long x, long y, long width, long height ); - - virtual bool CanDrawBitmap(void) const; - virtual void DrawIcon( const wxIcon &icon, long x, long y, bool useMask=FALSE ); - virtual bool Blit( long xdest, long ydest, long width, long height, - wxDC *source, long xsrc, long ysrc, int logical_func = wxCOPY, bool useMask=FALSE ); - - virtual void DrawText( const wxString &text, long x, long y, bool use16 = FALSE ); - virtual bool CanGetTextExtent(void) const; - virtual void GetTextExtent( const wxString &string, long *width, long *height, - long *descent = NULL, long *externalLeading = NULL, - wxFont *theFont = NULL, bool use16 = FALSE ); - virtual long GetCharWidth(void); - virtual long GetCharHeight(void); - - virtual void Clear(void); - - virtual void SetFont( const wxFont &font ); - virtual void SetPen( const wxPen &pen ); - virtual void SetBrush( const wxBrush &brush ); - virtual void SetBackground( const wxBrush &brush ); - virtual void SetLogicalFunction( int function ); - virtual void SetTextForeground( const wxColour &col ); - virtual void SetTextBackground( const wxColour &col ); - virtual void SetBackgroundMode( int mode ); - virtual void SetPalette( const wxPalette& palette ); - - virtual void SetClippingRegion( long x, long y, long width, long height ); - virtual void SetClippingRegion( const wxRegion& region ) ; - virtual void DestroyClippingRegion(void); - - virtual void DrawSpline( wxList *points ); -}; - -//----------------------------------------------------------------------------- -// wxPaintDC -//----------------------------------------------------------------------------- - -class WXDLLEXPORT wxPaintDC: public wxWindowDC -{ - DECLARE_DYNAMIC_CLASS(wxPaintDC) - - public: - - wxPaintDC(void):wxWindowDC() {}; - wxPaintDC( wxWindow *win ): wxWindowDC(win) {}; - -}; - -//----------------------------------------------------------------------------- -// wxClientDC -//----------------------------------------------------------------------------- - -class WXDLLEXPORT wxClientDC: public wxWindowDC -{ - DECLARE_DYNAMIC_CLASS(wxClientDC) - - public: - - wxClientDC(void):wxWindowDC() {}; - wxClientDC( wxWindow *win ): wxWindowDC(win) {}; - -}; - -#endif - // _WX_DCCLIENT_H_ diff --git a/include/wx/stubs/dcmemory.h b/include/wx/stubs/dcmemory.h deleted file mode 100644 index c6c5737642..0000000000 --- a/include/wx/stubs/dcmemory.h +++ /dev/null @@ -1,38 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcmemory.h -// Purpose: wxMemoryDC class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_DCMEMORY_H_ -#define _WX_DCMEMORY_H_ - -#ifdef __GNUG__ -#pragma interface "dcmemory.h" -#endif - -#include "wx/dcclient.h" - -class WXDLLEXPORT wxMemoryDC: public wxPaintDC -{ - DECLARE_DYNAMIC_CLASS(wxMemoryDC) - - public: - wxMemoryDC(void); - wxMemoryDC( wxDC *dc ); // Create compatible DC - ~wxMemoryDC(void); - virtual void SelectObject( const wxBitmap& bitmap ); - void GetSize( int *width, int *height ) const; - - private: - friend wxPaintDC; - wxBitmap m_selected; -}; - -#endif - // _WX_DCMEMORY_H_ diff --git a/include/wx/stubs/dcprint.h b/include/wx/stubs/dcprint.h deleted file mode 100644 index 2ea66d15bf..0000000000 --- a/include/wx/stubs/dcprint.h +++ /dev/null @@ -1,34 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcprint.h -// Purpose: wxPrinterDC class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_DCPRINT_H_ -#define _WX_DCPRINT_H_ - -#ifdef __GNUG__ -#pragma interface "dcprint.h" -#endif - -#include "wx/dc.h" - -class WXDLLEXPORT wxPrinterDC: public wxDC -{ - public: - DECLARE_CLASS(wxPrinterDC) - - // Create a printer DC - wxPrinterDC(const wxString& driver, const wxString& device, const wxString& output, bool interactive = TRUE, int orientation = wxPORTRAIT); - - ~wxPrinterDC(); -}; - -#endif - // _WX_DCPRINT_H_ - diff --git a/include/wx/stubs/dcscreen.h b/include/wx/stubs/dcscreen.h deleted file mode 100644 index e04b450f69..0000000000 --- a/include/wx/stubs/dcscreen.h +++ /dev/null @@ -1,39 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcscreen.h -// Purpose: wxScreenDC class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_DCSCREEN_H_ -#define _WX_DCSCREEN_H_ - -#ifdef __GNUG__ -#pragma interface "dcscreen.h" -#endif - -#include "wx/dcclient.h" - -class WXDLLEXPORT wxScreenDC: public wxWindowDC -{ - DECLARE_DYNAMIC_CLASS(wxScreenDC) - - public: - // Create a DC representing the whole screen - wxScreenDC(); - ~wxScreenDC(); - - // Compatibility with X's requirements for - // drawing on top of all windows - static bool StartDrawingOnTop(wxWindow* WXUNUSED(window)) { return TRUE; } - static bool StartDrawingOnTop(wxRect* WXUNUSED(rect) = NULL) { return TRUE; } - static bool EndDrawingOnTop() { return TRUE; } -}; - -#endif - // _WX_DCSCREEN_H_ - diff --git a/include/wx/stubs/dialog.h b/include/wx/stubs/dialog.h deleted file mode 100644 index ebd7bff2a8..0000000000 --- a/include/wx/stubs/dialog.h +++ /dev/null @@ -1,98 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dialog.h -// Purpose: wxDialog class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_DIALOG_H_ -#define _WX_DIALOG_H_ - -#ifdef __GNUG__ -#pragma interface "dialog.h" -#endif - -#include "wx/panel.h" - -WXDLLEXPORT_DATA(extern const char*) wxDialogNameStr; - -// Dialog boxes -class WXDLLEXPORT wxDialog: public wxPanel -{ - DECLARE_DYNAMIC_CLASS(wxDialog) -public: - - wxDialog(); - - // Constructor with a modal flag, but no window id - the old convention - inline wxDialog(wxWindow *parent, - const wxString& title, bool modal, - int x = -1, int y= -1, int width = 500, int height = 500, - long style = wxDEFAULT_DIALOG_STYLE, - const wxString& name = wxDialogNameStr) - { - long modalStyle = modal ? wxDIALOG_MODAL : wxDIALOG_MODELESS ; - Create(parent, -1, title, wxPoint(x, y), wxSize(width, height), style|modalStyle, name); - } - - // Constructor with no modal flag - the new convention. - inline wxDialog(wxWindow *parent, wxWindowID id, - const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_DIALOG_STYLE, - const wxString& name = wxDialogNameStr) - { - Create(parent, id, title, pos, size, style, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - const wxString& title, // bool modal = FALSE, // TODO make this a window style? - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_DIALOG_STYLE, - const wxString& name = wxDialogNameStr); - - ~wxDialog(); - - virtual bool Destroy(); - void SetClientSize(int width, int height); - void GetPosition(int *x, int *y) const; - bool Show(bool show); - void Iconize(bool iconize); - - virtual bool IsIconized() const; - void Fit(); - - void SetTitle(const wxString& title); - wxString GetTitle() const ; - - bool OnClose(); - void OnCharHook(wxKeyEvent& event); - void OnCloseWindow(wxCloseEvent& event); - - void SetModal(bool flag); - - virtual void Centre(int direction = wxBOTH); - virtual bool IsModal() const { return ((GetWindowStyleFlag() & wxDIALOG_MODAL) == wxDIALOG_MODAL); } - - virtual int ShowModal(); - virtual void EndModal(int retCode); - - // Standard buttons - void OnOK(wxCommandEvent& event); - void OnApply(wxCommandEvent& event); - void OnCancel(wxCommandEvent& event); - - // Responds to colour changes - void OnSysColourChanged(wxSysColourChangedEvent& event); - -DECLARE_EVENT_TABLE() -}; - -#endif - // _WX_DIALOG_H_ diff --git a/include/wx/stubs/dirdlg.h b/include/wx/stubs/dirdlg.h deleted file mode 100644 index 44f96238e2..0000000000 --- a/include/wx/stubs/dirdlg.h +++ /dev/null @@ -1,49 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dirdlg.h -// Purpose: wxDirDialog class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_DIRDLG_H_ -#define _WX_DIRDLG_H_ - -#ifdef __GNUG__ -#pragma interface "dirdlg.h" -#endif - -#include "wx/dialog.h" - -WXDLLEXPORT_DATA(extern const char*) wxFileSelectorPromptStr; - -class WXDLLEXPORT wxDirDialog: public wxDialog -{ -DECLARE_DYNAMIC_CLASS(wxDirDialog) -public: - wxDirDialog(wxWindow *parent, const wxString& message = wxFileSelectorPromptStr, - const wxString& defaultPath = "", - long style = 0, const wxPoint& pos = wxDefaultPosition); - - inline void SetMessage(const wxString& message) { m_message = message; } - inline void SetPath(const wxString& path) { m_path = path; } - inline void SetStyle(long style) { m_dialogStyle = style; } - - inline wxString GetMessage() const { return m_message; } - inline wxString GetPath() const { return m_path; } - inline long GetStyle() const { return m_dialogStyle; } - - int ShowModal(); - -protected: - wxString m_message; - long m_dialogStyle; - wxWindow * m_parent; - wxString m_path; -}; - -#endif - // _WX_DIRDLG_H_ diff --git a/include/wx/stubs/dnd.h b/include/wx/stubs/dnd.h deleted file mode 100644 index 5a7a65335f..0000000000 --- a/include/wx/stubs/dnd.h +++ /dev/null @@ -1,238 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: dnd.h -// Purpose: Declaration of the wxDropTarget, wxDropSource class etc. -// Author: AUTHOR -// RCS-ID: $Id$ -// Copyright: (c) 1998 AUTHOR -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_DND_H_ -#define _WX_DND_H_ - -#ifdef __GNUG__ -#pragma interface "dnd.h" -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/string.h" -#include "wx/cursor.h" - -//------------------------------------------------------------------------- -// classes -//------------------------------------------------------------------------- - -class WXDLLEXPORT wxWindow; - -class WXDLLEXPORT wxDataObject; -class WXDLLEXPORT wxTextDataObject; -class WXDLLEXPORT wxFileDataObject; - -class WXDLLEXPORT wxDropTarget; -class WXDLLEXPORT wxTextDropTarget; -class WXDLLEXPORT wxFileDropTarget; - -class WXDLLEXPORT wxDropSource; - -//------------------------------------------------------------------------- -// wxDataObject -//------------------------------------------------------------------------- - -class WXDLLEXPORT wxDataObject: public wxObject -{ -public: - // all data formats (values are the same as in windows.h, do not change!) - enum StdFormat - { - Invalid, - Text, - Bitmap, - MetafilePict, - Sylk, - Dif, - Tiff, - OemText, - Dib, - Palette, - Pendata, - Riff, - Wave, - UnicodeText, - EnhMetafile, - Hdrop, - Locale, - Max - }; - - // function to return symbolic name of clipboard format (debug messages) - static const char *GetFormatName(wxDataFormat format); - - // ctor & dtor - wxDataObject() {}; - ~wxDataObject() {}; - - // pure virtuals to override - // get the best suited format for our data - virtual wxDataFormat GetPreferredFormat() const = 0; - // decide if we support this format (should be one of values of - // StdFormat enumerations or a user-defined format) - virtual bool IsSupportedFormat(wxDataFormat format) const = 0; - // get the (total) size of data - virtual size_t GetDataSize() const = 0; - // copy raw data to provided pointer - virtual void GetDataHere(void *pBuf) const = 0; - -}; - -// ---------------------------------------------------------------------------- -// wxTextDataObject is a specialization of wxDataObject for text data -// ---------------------------------------------------------------------------- - -class WXDLLEXPORT wxTextDataObject : public wxDataObject -{ -public: - // ctors - wxTextDataObject() { } - wxTextDataObject(const wxString& strText) : m_strText(strText) { } - void Init(const wxString& strText) { m_strText = strText; } - - // implement base class pure virtuals - virtual wxDataFormat GetPreferredFormat() const - { return wxDF_TEXT; } - virtual bool IsSupportedFormat(wxDataFormat format) const - { return format == wxDF_TEXT; } - virtual size_t GetDataSize() const - { return m_strText.Len() + 1; } // +1 for trailing '\0'of course - virtual void GetDataHere(void *pBuf) const - { memcpy(pBuf, m_strText.c_str(), GetDataSize()); } - -private: - wxString m_strText; - -}; - -// ---------------------------------------------------------------------------- -// wxFileDataObject is a specialization of wxDataObject for file names -// ---------------------------------------------------------------------------- - -class WXDLLEXPORT wxFileDataObject : public wxDataObject -{ -public: - - wxFileDataObject(void) { } - void AddFile( const wxString &file ) - { m_files += file; m_files += ";"; } - - // implement base class pure virtuals - virtual wxDataFormat GetPreferredFormat() const - { return wxDF_FILENAME; } - virtual bool IsSupportedFormat(wxDataFormat format) const - { return format == wxDF_FILENAME; } - virtual size_t GetDataSize() const - { return m_files.Len() + 1; } // +1 for trailing '\0'of course - virtual void GetDataHere(void *pBuf) const - { memcpy(pBuf, m_files.c_str(), GetDataSize()); } - -private: - wxString m_files; - -}; -//------------------------------------------------------------------------- -// wxDropTarget -//------------------------------------------------------------------------- - -class WXDLLEXPORT wxDropTarget: public wxObject -{ - public: - - wxDropTarget(); - ~wxDropTarget(); - - virtual void OnEnter() { } - virtual void OnLeave() { } - virtual bool OnDrop( long x, long y, const void *pData ) = 0; - -// protected: - - friend wxWindow; - - // Override these to indicate what kind of data you support: - - virtual size_t GetFormatCount() const = 0; - virtual wxDataFormat GetFormat(size_t n) const = 0; -}; - -//------------------------------------------------------------------------- -// wxTextDropTarget -//------------------------------------------------------------------------- - -class WXDLLEXPORT wxTextDropTarget: public wxDropTarget -{ - public: - - wxTextDropTarget() {}; - virtual bool OnDrop( long x, long y, const void *pData ); - virtual bool OnDropText( long x, long y, const char *psz ); - - protected: - - virtual size_t GetFormatCount() const; - virtual wxDataFormat GetFormat(size_t n) const; -}; - -// ---------------------------------------------------------------------------- -// A drop target which accepts files (dragged from File Manager or Explorer) -// ---------------------------------------------------------------------------- - -class WXDLLEXPORT wxFileDropTarget: public wxDropTarget -{ - public: - - wxFileDropTarget() {}; - - virtual bool OnDrop(long x, long y, const void *pData); - virtual bool OnDropFiles( long x, long y, - size_t nFiles, const char * const aszFiles[]); - - protected: - - virtual size_t GetFormatCount() const; - virtual wxDataFormat GetFormat(size_t n) const; -}; - -//------------------------------------------------------------------------- -// wxDropSource -//------------------------------------------------------------------------- - -enum wxDragResult - { - wxDragError, // error prevented the d&d operation from completing - wxDragNone, // drag target didn't accept the data - wxDragCopy, // the data was successfully copied - wxDragMove, // the data was successfully moved - wxDragCancel // the operation was cancelled by user (not an error) - }; - -class WXDLLEXPORT wxDropSource: public wxObject -{ - public: - - wxDropSource( wxWindow *win ); - wxDropSource( wxDataObject &data, wxWindow *win ); - - ~wxDropSource(void); - - void SetData( wxDataObject &data ); - wxDragResult DoDragDrop( bool bAllowMove = FALSE ); - - virtual bool GiveFeedback( wxDragResult WXUNUSED(effect), bool WXUNUSED(bScrolling) ) { return TRUE; }; - - protected: - - wxDataObject *m_data; -}; - -#endif - //_WX_DND_H_ - diff --git a/include/wx/stubs/filedlg.h b/include/wx/stubs/filedlg.h deleted file mode 100644 index a5e532fa24..0000000000 --- a/include/wx/stubs/filedlg.h +++ /dev/null @@ -1,106 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: filedlg.h -// Purpose: wxFileDialog class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_FILEDLG_H_ -#define _WX_FILEDLG_H_ - -#ifdef __GNUG__ -#pragma interface "filedlg.h" -#endif - -#include "wx/dialog.h" - -/* - * File selector - */ - -WXDLLEXPORT_DATA(extern const char*) wxFileSelectorPromptStr; -WXDLLEXPORT_DATA(extern const char*) wxFileSelectorDefaultWildcardStr; - -class WXDLLEXPORT wxFileDialog: public wxDialog -{ -DECLARE_DYNAMIC_CLASS(wxFileDialog) -protected: - wxString m_message; - long m_dialogStyle; - wxWindow * m_parent; - wxString m_dir; - wxString m_path; // Full path - wxString m_fileName; - wxString m_wildCard; - int m_filterIndex; -public: - wxFileDialog(wxWindow *parent, const wxString& message = wxFileSelectorPromptStr, - const wxString& defaultDir = "", const wxString& defaultFile = "", const wxString& wildCard = wxFileSelectorDefaultWildcardStr, - long style = 0, const wxPoint& pos = wxDefaultPosition); - - inline void SetMessage(const wxString& message) { m_message = message; } - inline void SetPath(const wxString& path) { m_path = path; } - inline void SetDirectory(const wxString& dir) { m_dir = dir; } - inline void SetFilename(const wxString& name) { m_fileName = name; } - inline void SetWildcard(const wxString& wildCard) { m_wildCard = wildCard; } - inline void SetStyle(long style) { m_dialogStyle = style; } - inline void SetFilterIndex(int filterIndex) { m_filterIndex = filterIndex; } - - inline wxString GetMessage() const { return m_message; } - inline wxString GetPath() const { return m_path; } - inline wxString GetDirectory() const { return m_dir; } - inline wxString GetFilename() const { return m_fileName; } - inline wxString GetWildcard() const { return m_wildCard; } - inline long GetStyle() const { return m_dialogStyle; } - inline int GetFilterIndex() const { return m_filterIndex ; } - - int ShowModal(); -}; - -#define wxOPEN 0x0001 -#define wxSAVE 0x0002 -#define wxOVERWRITE_PROMPT 0x0004 -#define wxHIDE_READONLY 0x0008 -#define wxFILE_MUST_EXIST 0x0010 - -// File selector - backward compatibility -WXDLLEXPORT wxString -wxFileSelector(const char *message = wxFileSelectorPromptStr, - const char *default_path = NULL, - const char *default_filename = NULL, - const char *default_extension = NULL, - const char *wildcard = wxFileSelectorDefaultWildcardStr, - int flags = 0, - wxWindow *parent = NULL, - int x = -1, int y = -1); - -// An extended version of wxFileSelector -WXDLLEXPORT wxString -wxFileSelectorEx(const char *message = wxFileSelectorPromptStr, - const char *default_path = NULL, - const char *default_filename = NULL, - int *indexDefaultExtension = NULL, - const char *wildcard = wxFileSelectorDefaultWildcardStr, - int flags = 0, - wxWindow *parent = NULL, - int x = -1, int y = -1); - -// Ask for filename to load -WXDLLEXPORT wxString -wxLoadFileSelector(const char *what, - const char *extension, - const char *default_name = (const char *)NULL, - wxWindow *parent = (wxWindow *) NULL); - -// Ask for filename to save -WXDLLEXPORT wxString -wxSaveFileSelector(const char *what, - const char *extension, - const char *default_name = (const char *) NULL, - wxWindow *parent = (wxWindow *) NULL); -#endif - // _WX_FILEDLG_H_ diff --git a/include/wx/stubs/font.h b/include/wx/stubs/font.h deleted file mode 100644 index aff8fb3a75..0000000000 --- a/include/wx/stubs/font.h +++ /dev/null @@ -1,89 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: font.h -// Purpose: wxFont class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_FONT_H_ -#define _WX_FONT_H_ - -#ifdef __GNUG__ -#pragma interface "font.h" -#endif - -#include "wx/gdiobj.h" - -class WXDLLEXPORT wxFont; - -class WXDLLEXPORT wxFontRefData: public wxGDIRefData -{ - friend class WXDLLEXPORT wxFont; -public: - wxFontRefData(); - wxFontRefData(const wxFontRefData& data); - ~wxFontRefData(); -protected: - int m_pointSize; - int m_family; - int m_style; - int m_weight; - bool m_underlined; - wxString m_faceName; -/* TODO: implementation - WXHFONT m_hFont; -*/ -}; - -#define M_FONTDATA ((wxFontRefData *)m_refData) - -WXDLLEXPORT_DATA(extern const char*) wxEmptyString; - -// Font -class WXDLLEXPORT wxFont: public wxGDIObject -{ - DECLARE_DYNAMIC_CLASS(wxFont) -public: - wxFont(); - wxFont(int pointSize, int family, int style, int weight, bool underlined = FALSE, const wxString& faceName = wxEmptyString); - inline wxFont(const wxFont& font) { Ref(font); } - - ~wxFont(); - - bool Create(int pointSize, int family, int style, int weight, bool underlined = FALSE, const wxString& faceName = wxEmptyString); - - virtual bool Ok() const { return (m_refData != NULL) ; } - - inline int GetPointSize() const { return M_FONTDATA->m_pointSize; } - inline int GetFamily() const { return M_FONTDATA->m_family; } - inline int GetStyle() const { return M_FONTDATA->m_style; } - inline int GetWeight() const { return M_FONTDATA->m_weight; } - wxString GetFamilyString() const ; - wxString GetFaceName() const ; - wxString GetStyleString() const ; - wxString GetWeightString() const ; - inline bool GetUnderlined() const { return M_FONTDATA->m_underlined; } - - void SetPointSize(int pointSize); - void SetFamily(int family); - void SetStyle(int style); - void SetWeight(int weight); - void SetFaceName(const wxString& faceName); - void SetUnderlined(bool underlined); - - inline wxFont& operator = (const wxFont& font) { if (*this == font) return (*this); Ref(font); return *this; } - inline bool operator == (const wxFont& font) { return m_refData == font.m_refData; } - inline bool operator != (const wxFont& font) { return m_refData != font.m_refData; } - - // Implementation -protected: - bool RealizeResource(); - void Unshare(); -}; - -#endif - // _WX_FONT_H_ diff --git a/include/wx/stubs/fontdlg.h b/include/wx/stubs/fontdlg.h deleted file mode 100644 index 39da6fd967..0000000000 --- a/include/wx/stubs/fontdlg.h +++ /dev/null @@ -1,46 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: fontdlg.h -// Purpose: wxFontDialog class. Use generic version if no -// platform-specific implementation. -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_FONTDLG_H_ -#define _WX_FONTDLG_H_ - -#ifdef __GNUG__ -#pragma interface "fontdlg.h" -#endif - -#include "wx/dialog.h" -#include "wx/cmndata.h" - -/* - * Font dialog - */ - -class WXDLLEXPORT wxFontDialog: public wxDialog -{ -DECLARE_DYNAMIC_CLASS(wxFontDialog) -public: - wxFontDialog(); - wxFontDialog(wxWindow *parent, wxFontData *data = NULL); - - bool Create(wxWindow *parent, wxFontData *data = NULL); - - int ShowModal(); - wxFontData& GetFontData() { return m_fontData; } - -protected: - wxWindow* m_dialogParent; - wxFontData m_fontData; -}; - -#endif - // _WX_FONTDLG_H_ - diff --git a/include/wx/stubs/frame.h b/include/wx/stubs/frame.h deleted file mode 100644 index c013362175..0000000000 --- a/include/wx/stubs/frame.h +++ /dev/null @@ -1,158 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: frame.h -// Purpose: wxFrame class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_FRAME_H_ -#define _WX_FRAME_H_ - -#ifdef __GNUG__ -#pragma interface "frame.h" -#endif - -#include "wx/window.h" -#include "wx/toolbar.h" -#include "wx/accel.h" - -WXDLLEXPORT_DATA(extern const char*) wxFrameNameStr; -WXDLLEXPORT_DATA(extern const char*) wxToolBarNameStr; - -class WXDLLEXPORT wxMenuBar; -class WXDLLEXPORT wxStatusBar; - -class WXDLLEXPORT wxFrame: public wxWindow { - - DECLARE_DYNAMIC_CLASS(wxFrame) - -public: - wxFrame(); - inline wxFrame(wxWindow *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE, - const wxString& name = wxFrameNameStr) - { - Create(parent, id, title, pos, size, style, name); - } - - ~wxFrame(); - - bool Create(wxWindow *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE, - const wxString& name = wxFrameNameStr); - - virtual bool Destroy(); - void SetClientSize(int width, int height); - void GetClientSize(int *width, int *height) const; - - void GetSize(int *width, int *height) const ; - void GetPosition(int *x, int *y) const ; - void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - void ClientToScreen(int *x, int *y) const; - void ScreenToClient(int *x, int *y) const; - - virtual bool OnClose(); - - void OnSize(wxSizeEvent& event); - void OnMenuHighlight(wxMenuEvent& event); - void OnActivate(wxActivateEvent& event); - void OnIdle(wxIdleEvent& event); - void OnCloseWindow(wxCloseEvent& event); - - bool Show(bool show); - - // Set menu bar - void SetMenuBar(wxMenuBar *menu_bar); - virtual wxMenuBar *GetMenuBar() const ; - - // Set title - void SetTitle(const wxString& title); - wxString GetTitle() const ; - - void Centre(int direction = wxBOTH); - - // Call this to simulate a menu command - virtual void Command(int id); - virtual void ProcessCommand(int id); - - // Set icon - virtual void SetIcon(const wxIcon& icon); - - // Create status line - virtual wxStatusBar* CreateStatusBar(int number=1, long style = wxST_SIZEGRIP, wxWindowID id = 0, - const wxString& name = "statusBar"); - inline wxStatusBar *GetStatusBar() const { return m_frameStatusBar; } - virtual void PositionStatusBar(); - virtual wxStatusBar *OnCreateStatusBar(int number, long style, wxWindowID id, - const wxString& name); - - // Create toolbar - virtual wxToolBar* CreateToolBar(long style = wxNO_BORDER|wxTB_HORIZONTAL, wxWindowID id = -1, const wxString& name = wxToolBarNameStr); - virtual wxToolBar *OnCreateToolBar(long style, wxWindowID id, const wxString& name); - // If made known to the frame, the frame will manage it automatically. - virtual inline void SetToolBar(wxToolBar *toolbar) { m_frameToolBar = toolbar; } - virtual inline wxToolBar *GetToolBar() const { return m_frameToolBar; } - virtual void PositionToolBar(); - - // Set status line text - virtual void SetStatusText(const wxString& text, int number = 0); - - // Set status line widths - virtual void SetStatusWidths(int n, const int widths_field[]); - - // Hint to tell framework which status bar to use - // TODO: should this go into a wxFrameworkSettings class perhaps? - static void UseNativeStatusBar(bool useNative) { m_useNativeStatusBar = useNative; }; - static bool UsesNativeStatusBar() { return m_useNativeStatusBar; }; - - // Fit frame around subwindows - virtual void Fit(); - - // Iconize - virtual void Iconize(bool iconize); - - virtual bool IsIconized() const ; - - // Compatibility - inline bool Iconized() const { return IsIconized(); } - - // Is the frame maximized? - virtual bool IsMaximized(void) const ; - - virtual void Maximize(bool maximize); - - // Responds to colour changes - void OnSysColourChanged(wxSysColourChangedEvent& event); - - // Query app for menu item updates (called from OnIdle) - void DoMenuUpdates(); - void DoMenuUpdates(wxMenu* menu); - - // Checks if there is a toolbar, and returns the first free client position - virtual wxPoint GetClientAreaOrigin() const; - -protected: - wxMenuBar * m_frameMenuBar; - wxStatusBar * m_frameStatusBar; - wxIcon m_icon; - bool m_iconized; - static bool m_useNativeStatusBar; - wxToolBar * m_frameToolBar ; - - DECLARE_EVENT_TABLE() -}; - -#endif - // _WX_FRAME_H_ diff --git a/include/wx/stubs/gauge.h b/include/wx/stubs/gauge.h deleted file mode 100644 index ce19d9ef1f..0000000000 --- a/include/wx/stubs/gauge.h +++ /dev/null @@ -1,69 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: gauge.h -// Purpose: wxGauge class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_GAUGE_H_ -#define _WX_GAUGE_H_ - -#ifdef __GNUG__ -#pragma interface "gauge.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxGaugeNameStr; - -// Group box -class WXDLLEXPORT wxGauge: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxGauge) - public: - inline wxGauge() { m_rangeMax = 0; m_gaugePos = 0; } - - inline wxGauge(wxWindow *parent, wxWindowID id, - int range, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxGA_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxGaugeNameStr) - { - Create(parent, id, range, pos, size, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - int range, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxGA_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxGaugeNameStr); - - void SetShadowWidth(int w); - void SetBezelFace(int w); - void SetRange(int r); - void SetValue(int pos); - - int GetShadowWidth() const ; - int GetBezelFace() const ; - int GetRange() const ; - int GetValue() const ; - - void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - - virtual void Command(wxCommandEvent& WXUNUSED(event)) {} ; - - protected: - int m_rangeMax; - int m_gaugePos; -}; - -#endif - // _WX_GAUGE_H_ diff --git a/include/wx/stubs/gdiobj.h b/include/wx/stubs/gdiobj.h deleted file mode 100644 index 9263d4d6ad..0000000000 --- a/include/wx/stubs/gdiobj.h +++ /dev/null @@ -1,48 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: gdiobj.h -// Purpose: wxGDIObject class: base class for other GDI classes -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_GDIOBJ_H_ -#define _WX_GDIOBJ_H_ - -#include "wx/object.h" - -#ifdef __GNUG__ -#pragma interface "gdiobj.h" -#endif - -class WXDLLEXPORT wxGDIRefData: public wxObjectRefData { -public: - inline wxGDIRefData() - { - } -}; - -#define M_GDIDATA ((wxGDIRefData *)m_refData) - -class WXDLLEXPORT wxGDIObject: public wxObject -{ -DECLARE_DYNAMIC_CLASS(wxGDIObject) - public: - inline wxGDIObject() { m_visible = FALSE; }; - inline ~wxGDIObject() {}; - - inline bool IsNull() const { return (m_refData == 0); } - - virtual bool GetVisible() { return m_visible; } - virtual void SetVisible(bool v) { m_visible = v; } - -protected: - bool m_visible; // Can a pointer to this object be safely taken? - // - only if created within FindOrCreate... -}; - -#endif - // _WX_GDIOBJ_H_ diff --git a/include/wx/stubs/helpxxxx.h b/include/wx/stubs/helpxxxx.h deleted file mode 100644 index d53c28b7e4..0000000000 --- a/include/wx/stubs/helpxxxx.h +++ /dev/null @@ -1,52 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: helpxxxx.h -// Purpose: Help system: native implementation for your system. Replace -// XXXX with suitable name. -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_HELPXXXX_H_ -#define _WX_HELPXXXX_H_ - -#ifdef __GNUG__ -#pragma interface "helpxxxx.h" -#endif - -#include "wx/wx.h" - -#include "wx/helpbase.h" - -class WXDLLEXPORT wxXXXXHelpController: public wxHelpControllerBase -{ - DECLARE_CLASS(wxXXXXHelpController) - - public: - wxXXXXHelpController(); - ~wxXXXXHelpController(); - - // Must call this to set the filename and server name - virtual bool Initialize(const wxString& file); - - // If file is "", reloads file given in Initialize - virtual bool LoadFile(const wxString& file = ""); - virtual bool DisplayContents(); - virtual bool DisplaySection(int sectionNo); - virtual bool DisplayBlock(long blockNo); - virtual bool KeywordSearch(const wxString& k); - - virtual bool Quit(); - virtual void OnQuit(); - - inline wxString GetHelpFile() const { return m_helpFile; } - -protected: - wxString m_helpFile; -}; - -#endif - // _WX_HELPXXXX_H_ diff --git a/include/wx/stubs/icon.h b/include/wx/stubs/icon.h deleted file mode 100644 index df475672ba..0000000000 --- a/include/wx/stubs/icon.h +++ /dev/null @@ -1,106 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: icon.h -// Purpose: wxIcon class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_ICON_H_ -#define _WX_ICON_H_ - -#ifdef __GNUG__ -#pragma interface "icon.h" -#endif - -#include "wx/bitmap.h" - -class WXDLLEXPORT wxIconRefData: public wxBitmapRefData -{ - friend class WXDLLEXPORT wxBitmap; - friend class WXDLLEXPORT wxIcon; -public: - wxIconRefData(); - ~wxIconRefData(); - -public: -/* TODO: whatever your actual icon handle is - WXHICON m_hIcon; -*/ -}; - -#define M_ICONDATA ((wxIconRefData *)m_refData) -#define M_ICONHANDLERDATA ((wxIconRefData *)bitmap->GetRefData()) - -// Icon -class WXDLLEXPORT wxIcon: public wxBitmap -{ - DECLARE_DYNAMIC_CLASS(wxIcon) - -public: - wxIcon(); - - // Copy constructors - inline wxIcon(const wxIcon& icon) { Ref(icon); } - - wxIcon(const char bits[], int width, int height); - wxIcon(const wxString& name, long flags = wxBITMAP_TYPE_ICO_RESOURCE, - int desiredWidth = -1, int desiredHeight = -1); - ~wxIcon(); - - bool LoadFile(const wxString& name, long flags = wxBITMAP_TYPE_ICO_RESOURCE, - int desiredWidth = -1, int desiredHeight = -1); - - inline wxIcon& operator = (const wxIcon& icon) { if (*this == icon) return (*this); Ref(icon); return *this; } - inline bool operator == (const wxIcon& icon) { return m_refData == icon.m_refData; } - inline bool operator != (const wxIcon& icon) { return m_refData != icon.m_refData; } - -/* TODO: implementation - void SetHICON(WXHICON ico); - inline WXHICON GetHICON() const { return (M_ICONDATA ? M_ICONDATA->m_hIcon : 0); } -*/ - -/* TODO */ - virtual bool Ok() const { return (m_refData != NULL) ; } -}; - -/* Example handlers. TODO: write your own handlers for relevant types. - -class WXDLLEXPORT wxICOFileHandler: public wxBitmapHandler -{ - DECLARE_DYNAMIC_CLASS(wxICOFileHandler) -public: - inline wxICOFileHandler() - { - m_name = "ICO icon file"; - m_extension = "ico"; - m_type = wxBITMAP_TYPE_ICO; - }; - - virtual bool LoadFile(wxBitmap *bitmap, const wxString& name, long flags, - int desiredWidth = -1, int desiredHeight = -1); -}; - -class WXDLLEXPORT wxICOResourceHandler: public wxBitmapHandler -{ - DECLARE_DYNAMIC_CLASS(wxICOResourceHandler) -public: - inline wxICOResourceHandler() - { - m_name = "ICO resource"; - m_extension = "ico"; - m_type = wxBITMAP_TYPE_ICO_RESOURCE; - }; - - virtual bool LoadFile(wxBitmap *bitmap, const wxString& name, long flags, - int desiredWidth = -1, int desiredHeight = -1); - -}; - -*/ - -#endif - // _WX_ICON_H_ diff --git a/include/wx/stubs/imaglist.h b/include/wx/stubs/imaglist.h deleted file mode 100644 index 7e66ffb36a..0000000000 --- a/include/wx/stubs/imaglist.h +++ /dev/null @@ -1,145 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: imaglist.h -// Purpose: wxImageList class. Note: if your GUI doesn't have -// an image list equivalent, you can use the generic class -// in src/generic. -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_IMAGLIST_H_ -#define _WX_IMAGLIST_H_ - -#ifdef __GNUG__ -#pragma interface "imaglist.h" -#endif - -#include "wx/bitmap.h" - -/* - * wxImageList is used for wxListCtrl, wxTreeCtrl. These controls refer to - * images for their items by an index into an image list. - * A wxImageList is capable of creating images with optional masks from - * a variety of sources - a single bitmap plus a colour to indicate the mask, - * two bitmaps, or an icon. - * - */ - -// Flags for Draw -#define wxIMAGELIST_DRAW_NORMAL 0x0001 -#define wxIMAGELIST_DRAW_TRANSPARENT 0x0002 -#define wxIMAGELIST_DRAW_SELECTED 0x0004 -#define wxIMAGELIST_DRAW_FOCUSED 0x0008 - -// Flag values for Set/GetImageList -enum { - wxIMAGE_LIST_NORMAL, // Normal icons - wxIMAGE_LIST_SMALL, // Small icons - wxIMAGE_LIST_STATE // State icons: unimplemented (see WIN32 documentation) -}; - -// Eventually we'll make this a reference-counted wxGDIObject. For -// now, the app must take care of ownership issues. That is, the -// image lists must be explicitly deleted after the control(s) that uses them -// is (are) deleted, or when the app exits. -class WXDLLEXPORT wxImageList: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxImageList) - public: - /* - * Public interface - */ - - wxImageList(); - - // Creates an image list. - // Specify the width and height of the images in the list, - // whether there are masks associated with them (e.g. if creating images - // from icons), and the initial size of the list. - inline wxImageList(int width, int height, bool mask = TRUE, int initialCount = 1) - { - Create(width, height, mask, initialCount); - } - ~wxImageList(); - - - // Attributes - //////////////////////////////////////////////////////////////////////////// - - // Returns the number of images in the image list. - int GetImageCount() const; - - // Operations - //////////////////////////////////////////////////////////////////////////// - - // Creates an image list - // width, height specify the size of the images in the list (all the same). - // mask specifies whether the images have masks or not. - // initialNumber is the initial number of images to reserve. - bool Create(int width, int height, bool mask = TRUE, int initialNumber = 1); - - // Adds a bitmap, and optionally a mask bitmap. - // Note that wxImageList creates *new* bitmaps, so you may delete - // 'bitmap' and 'mask' after calling Add. - int Add(const wxBitmap& bitmap, const wxBitmap& mask = wxNullBitmap); - - // Adds a bitmap, using the specified colour to create the mask bitmap - // Note that wxImageList creates *new* bitmaps, so you may delete - // 'bitmap' after calling Add. - int Add(const wxBitmap& bitmap, const wxColour& maskColour); - - // Adds a bitmap and mask from an icon. - int Add(const wxIcon& icon); - - // Replaces a bitmap, optionally passing a mask bitmap. - // Note that wxImageList creates new bitmaps, so you may delete - // 'bitmap' and 'mask' after calling Replace. - bool Replace(int index, const wxBitmap& bitmap, const wxBitmap& mask = wxNullBitmap); - -/* Not supported by Win95 - // Replacing a bitmap, using the specified colour to create the mask bitmap - // Note that wxImageList creates new bitmaps, so you may delete - // 'bitmap'. - bool Replace(int index, const wxBitmap& bitmap, const wxColour& maskColour); -*/ - - // Replaces a bitmap and mask from an icon. - // You can delete 'icon' after calling Replace. - bool Replace(int index, const wxIcon& icon); - - // Removes the image at the given index. - bool Remove(int index); - - // Remove all images - bool RemoveAll(); - - // Draws the given image on a dc at the specified position. - // If 'solidBackground' is TRUE, Draw sets the image list background - // colour to the background colour of the wxDC, to speed up - // drawing by eliminating masked drawing where possible. - bool Draw(int index, wxDC& dc, int x, int y, - int flags = wxIMAGELIST_DRAW_NORMAL, bool solidBackground = FALSE); - -/* TODO (optional?) - wxIcon *MakeIcon(int index); -*/ - -/* TODO - // Implementation - //////////////////////////////////////////////////////////////////////////// - - // Returns the native image list handle - inline WXHIMAGELIST GetHIMAGELIST() const { return m_hImageList; } - -protected: - WXHIMAGELIST m_hImageList; -*/ - -}; - -#endif - // _WX_IMAGLIST_H_ diff --git a/include/wx/stubs/joystick.h b/include/wx/stubs/joystick.h deleted file mode 100644 index 30324fc035..0000000000 --- a/include/wx/stubs/joystick.h +++ /dev/null @@ -1,93 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: joystick.h -// Purpose: wxJoystick class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_JOYSTICK_H_ -#define _WX_JOYSTICK_H_ - -#ifdef __GNUG__ -#pragma interface "joystick.h" -#endif - -#include "wx/event.h" - -class WXDLLEXPORT wxJoystick: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxJoystick) - public: - /* - * Public interface - */ - - wxJoystick(int joystick = wxJOYSTICK1) { m_joystick = joystick; }; - - // Attributes - //////////////////////////////////////////////////////////////////////////// - - wxPoint GetPosition() const; - int GetZPosition() const; - int GetButtonState() const; - int GetPOVPosition() const; - int GetPOVCTSPosition() const; - int GetRudderPosition() const; - int GetUPosition() const; - int GetVPosition() const; - int GetMovementThreshold() const; - void SetMovementThreshold(int threshold) ; - - // Capabilities - //////////////////////////////////////////////////////////////////////////// - - bool IsOk() const; // Checks that the joystick is functioning - int GetNumberJoysticks() const ; - int GetManufacturerId() const ; - int GetProductId() const ; - wxString GetProductName() const ; - int GetXMin() const; - int GetYMin() const; - int GetZMin() const; - int GetXMax() const; - int GetYMax() const; - int GetZMax() const; - int GetNumberButtons() const; - int GetNumberAxes() const; - int GetMaxButtons() const; - int GetMaxAxes() const; - int GetPollingMin() const; - int GetPollingMax() const; - int GetRudderMin() const; - int GetRudderMax() const; - int GetUMin() const; - int GetUMax() const; - int GetVMin() const; - int GetVMax() const; - - bool HasRudder() const; - bool HasZ() const; - bool HasU() const; - bool HasV() const; - bool HasPOV() const; - bool HasPOV4Dir() const; - bool HasPOVCTS() const; - - // Operations - //////////////////////////////////////////////////////////////////////////// - - // pollingFreq = 0 means that movement events are sent when above the threshold. - // If pollingFreq > 0, events are received every this many milliseconds. - bool SetCapture(wxWindow* win, int pollingFreq = 0); - bool ReleaseCapture(); - -protected: - int m_joystick; -}; - -#endif - // _WX_JOYSTICK_H_ diff --git a/include/wx/stubs/listbox.h b/include/wx/stubs/listbox.h deleted file mode 100644 index d95db4379b..0000000000 --- a/include/wx/stubs/listbox.h +++ /dev/null @@ -1,97 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: listbox.h -// Purpose: wxListBox class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_LISTBOX_H_ -#define _WX_LISTBOX_H_ - -#ifdef __GNUG__ -#pragma interface "listbox.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxListBoxNameStr; - -// forward decl for GetSelections() -class WXDLLEXPORT wxArrayInt; - -WXDLLEXPORT_DATA(extern const char*) wxEmptyString; - -// List box item -class WXDLLEXPORT wxListBox: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxListBox) - public: - - wxListBox(); - inline wxListBox(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = NULL, - long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxListBoxNameStr) - { - Create(parent, id, pos, size, n, choices, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = NULL, - long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxListBoxNameStr); - - ~wxListBox(); - - virtual void Append(const wxString& item); - virtual void Append(const wxString& item, char *clientData); - virtual void Set(int n, const wxString* choices, char **clientData = NULL); - virtual int FindString(const wxString& s) const ; - virtual void Clear(); - virtual void SetSelection(int n, bool select = TRUE); - - virtual void Deselect(int n); - - // For single choice list item only - virtual int GetSelection() const ; - virtual void Delete(int n); - virtual char *GetClientData(int n) const ; - virtual void SetClientData(int n, char *clientData); - virtual void SetString(int n, const wxString& s); - - // For single or multiple choice list item - virtual int GetSelections(wxArrayInt& aSelections) const; - virtual bool Selected(int n) const ; - virtual wxString GetString(int n) const ; - virtual void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - - // Set the specified item at the first visible item - // or scroll to max range. - virtual void SetFirstItem(int n) ; - virtual void SetFirstItem(const wxString& s) ; - - virtual void InsertItems(int nItems, const wxString items[], int pos); - - virtual wxString GetStringSelection() const ; - virtual bool SetStringSelection(const wxString& s, bool flag = TRUE); - virtual int Number() const ; - - void Command(wxCommandEvent& event); - - protected: - int m_noItems; - int m_selected; -}; - -#endif - // _WX_LISTBOX_H_ diff --git a/include/wx/stubs/listctrl.h b/include/wx/stubs/listctrl.h deleted file mode 100644 index 6dfc25df98..0000000000 --- a/include/wx/stubs/listctrl.h +++ /dev/null @@ -1,451 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: listctrl.h -// Purpose: wxListCtrl class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_LISTCTRL_H_ -#define _WX_LISTCTRL_H_ - -#ifdef __GNUG__ -#pragma interface "listctrl.h" -#endif - -#include "wx/control.h" -#include "wx/event.h" -#include "wx/imaglist.h" - -/* - The wxListCtrl can show lists of items in four different modes: - wxLC_LIST: multicolumn list view, with optional small icons (icons could be - optional for some platforms). Columns are computed automatically, - i.e. you don't set columns as in wxLC_REPORT. In other words, - the list wraps, unlike a wxListBox. - wxLC_REPORT: single or multicolumn report view (with optional header) - wxLC_ICON: large icon view, with optional labels - wxLC_SMALL_ICON: small icon view, with optional labels - - You can change the style dynamically, either with SetSingleStyle or - SetWindowStyleFlag. - - Further window styles: - - wxLC_ALIGN_TOP icons align to the top (default) - wxLC_ALIGN_LEFT icons align to the left - wxLC_AUTOARRANGE icons arrange themselves - wxLC_USER_TEXT the app provides label text on demand, except for column headers - wxLC_EDIT_LABELS labels are editable: app will be notified. - wxLC_NO_HEADER no header in report mode - wxLC_NO_SORT_HEADER can't click on header - wxLC_SINGLE_SEL single selection - wxLC_SORT_ASCENDING sort ascending (must still supply a comparison callback in SortItems) - wxLC_SORT_DESCENDING sort descending (ditto) - - Items are referred to by their index (position in the list starting from zero). - - Label text is supplied via insertion/setting functions and is stored by the - control, unless the wxLC_USER_TEXT style has been specified, in which case - the app will be notified when text is required (see sample). - - Images are dealt with by (optionally) associating 3 image lists with the control. - Zero-based indexes into these image lists indicate which image is to be used for - which item. Each image in an image list can contain a mask, and can be made out - of either a bitmap, two bitmaps or an icon. See ImagList.h for more details. - - Notifications are passed via the wxWindows 2.0 event system. - - See the sample wxListCtrl app for API usage. - - */ - -// Mask flags to tell app/GUI what fields of wxListItem are valid -#define wxLIST_MASK_STATE 0x0001 -#define wxLIST_MASK_TEXT 0x0002 -#define wxLIST_MASK_IMAGE 0x0004 -#define wxLIST_MASK_DATA 0x0008 -#define wxLIST_SET_ITEM 0x0010 -#define wxLIST_MASK_WIDTH 0x0020 -#define wxLIST_MASK_FORMAT 0x0040 - -// State flags for indicating the state of an item -#define wxLIST_STATE_DONTCARE 0x0000 -#define wxLIST_STATE_DROPHILITED 0x0001 -#define wxLIST_STATE_FOCUSED 0x0002 -#define wxLIST_STATE_SELECTED 0x0004 -#define wxLIST_STATE_CUT 0x0008 - -// Hit test flags, used in HitTest -#define wxLIST_HITTEST_ABOVE 0x0001 // Above the client area. -#define wxLIST_HITTEST_BELOW 0x0002 // Below the client area. -#define wxLIST_HITTEST_NOWHERE 0x0004 // In the client area but below the last item. -#define wxLIST_HITTEST_ONITEMICON 0x0020 // On the bitmap associated with an item. -#define wxLIST_HITTEST_ONITEMLABEL 0x0080 // On the label (string) associated with an item. -#define wxLIST_HITTEST_ONITEMRIGHT 0x0100 // In the area to the right of an item. -#define wxLIST_HITTEST_ONITEMSTATEICON 0x0200 // On the state icon for a tree view item that is in a user-defined state. -#define wxLIST_HITTEST_TOLEFT 0x0400 // To the left of the client area. -#define wxLIST_HITTEST_TORIGHT 0x0800 // To the right of the client area. - -#define wxLIST_HITTEST_ONITEM (wxLIST_HITTEST_ONITEMICON | wxLIST_HITTEST_ONITEMLABEL wxLIST_HITTEST_ONITEMSTATEICON) - -// Flags for GetNextItem -enum { - wxLIST_NEXT_ABOVE, // Searches for an item above the specified item - wxLIST_NEXT_ALL, // Searches for subsequent item by index - wxLIST_NEXT_BELOW, // Searches for an item below the specified item - wxLIST_NEXT_LEFT, // Searches for an item to the left of the specified item - wxLIST_NEXT_RIGHT, // Searches for an item to the right of the specified item -}; - -// Alignment flags for Arrange -enum { - wxLIST_ALIGN_DEFAULT, - wxLIST_ALIGN_LEFT, - wxLIST_ALIGN_TOP, - wxLIST_ALIGN_SNAP_TO_GRID -}; - -// Column format -enum { - wxLIST_FORMAT_LEFT, - wxLIST_FORMAT_RIGHT, - wxLIST_FORMAT_CENTRE, - wxLIST_FORMAT_CENTER = wxLIST_FORMAT_CENTRE -}; - -// Autosize values for SetColumnWidth -enum { - wxLIST_AUTOSIZE = -1, - wxLIST_AUTOSIZE_USEHEADER = -2 -}; - -// Flag values for GetItemRect -enum { - wxLIST_RECT_BOUNDS, - wxLIST_RECT_ICON, - wxLIST_RECT_LABEL -}; - -// Flag values for FindItem -enum { - wxLIST_FIND_UP, - wxLIST_FIND_DOWN, - wxLIST_FIND_LEFT, - wxLIST_FIND_RIGHT -}; - -// wxListItem: data representing an item, or report field. -// It also doubles up to represent entire column information -// when inserting or setting a column. -class WXDLLEXPORT wxListItem: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxListItem) -public: - long m_mask; // Indicates what fields are valid - long m_itemId; // The zero-based item position - int m_col; // Zero-based column, if in report mode - long m_state; // The state of the item - long m_stateMask; // Which flags of m_state are valid (uses same flags) - wxString m_text; // The label/header text - int m_image; // The zero-based index into an image list - long m_data; // App-defined data - - // For columns only - int m_format; // left, right, centre - int m_width; // width of column - - wxListItem(); -}; - -// type of compare function for wxListCtrl sort operation -typedef int (*wxListCtrlCompare)(long item1, long item2, long sortData); - -class WXDLLEXPORT wxListCtrl: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxListCtrl) - public: - /* - * Public interface - */ - - wxListCtrl(); - - inline wxListCtrl(wxWindow *parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxLC_ICON, const wxValidator& validator = wxDefaultValidator, - const wxString& name = "listCtrl") - { - Create(parent, id, pos, size, style, validator, name); - } - ~wxListCtrl(); - - bool Create(wxWindow *parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxLC_ICON, const wxValidator& validator = wxDefaultValidator, const wxString& name = "wxListCtrl"); - - - // Attributes - //////////////////////////////////////////////////////////////////////////// - - // Gets information about this column - bool GetColumn(int col, wxListItem& item) const; - - // Sets information about this column - bool SetColumn(int col, wxListItem& item) ; - - // Gets the column width - int GetColumnWidth(int col) const; - - // Sets the column width - bool SetColumnWidth(int col, int width) ; - - // 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) - int GetCountPerPage() const; - - // Gets the edit control for editing labels. - wxTextCtrl* GetEditControl() const; - - // Gets information about the item - bool GetItem(wxListItem& info) const ; - - // Sets information about the item - bool SetItem(wxListItem& info) ; - - // Sets a string field at a particular column - long SetItem(long index, int col, const wxString& label, int imageId = -1); - - // Gets the item state - int GetItemState(long item, long stateMask) const ; - - // Sets the item state - bool SetItemState(long item, long state, long stateMask) ; - - // Sets the item image - bool SetItemImage(long item, int image, int selImage) ; - - // Gets the item text - wxString GetItemText(long item) const ; - - // Sets the item text - void SetItemText(long item, const wxString& str) ; - - // Gets the item data - long GetItemData(long item) const ; - - // Sets the item data - bool SetItemData(long item, long data) ; - - // Gets the item rectangle - bool GetItemRect(long item, wxRect& rect, int code = wxLIST_RECT_BOUNDS) const ; - - // Gets the item position - bool GetItemPosition(long item, wxPoint& pos) const ; - - // Sets the item position - bool SetItemPosition(long item, const wxPoint& pos) ; - - // Gets the number of items in the list control - int GetItemCount() const; - - // Gets the number of columns in the list control - int GetColumnCount() const; - - // Retrieves the spacing between icons in pixels. - // If small is TRUE, gets the spacing for the small icon - // view, otherwise the large icon view. - int GetItemSpacing(bool isSmall) const; - - // Gets the number of selected items in the list control - int GetSelectedItemCount() const; - - // Gets the text colour of the listview - wxColour GetTextColour() const; - - // Sets the text colour of the listview - void SetTextColour(const wxColour& col); - - // Gets the index of the topmost visible item when in - // list or report view - long GetTopItem() const ; - - // Add or remove a single window style - void SetSingleStyle(long style, bool add = TRUE) ; - - // Set the whole window style - void SetWindowStyleFlag(long style) ; - - // Searches for an item, starting from 'item'. - // item can be -1 to find the first item that matches the - // specified flags. - // Returns the item or -1 if unsuccessful. - long GetNextItem(long item, int geometry = wxLIST_NEXT_ALL, int state = wxLIST_STATE_DONTCARE) const ; - - // Implementation: converts wxWindows style to MSW style. - // Can be a single style flag or a bit list. - // oldStyle is 'normalised' so that it doesn't contain - // conflicting styles. - long ConvertToMSWStyle(long& oldStyle, long style) const; - - // Gets one of the three image lists - wxImageList *GetImageList(int which) const ; - - // Sets the image list - // N.B. There's a quirk in the Win95 list view implementation. - // If in wxLC_LIST mode, it'll *still* display images by the labels if - // there's a small-icon image list set for the control - even though you - // haven't specified wxLIST_MASK_IMAGE when inserting. - // So you have to set a NULL small-icon image list to be sure that - // the wxLC_LIST mode works without icons. Of course, you may want icons... - void SetImageList(wxImageList *imageList, int which) ; - - // Operations - //////////////////////////////////////////////////////////////////////////// - - // Arranges the items - bool Arrange(int flag = wxLIST_ALIGN_DEFAULT); - - // Deletes an item - bool DeleteItem(long item); - - // Deletes all items - bool DeleteAllItems() ; - - // Deletes a column - bool DeleteColumn(int col); - - // Deletes all columns - bool DeleteAllColumns(); - - // Clears items, and columns if there are any. - void ClearAll(); - - // Edit the label - wxTextCtrl* EditLabel(long item, wxClassInfo* textControlClass = CLASSINFO(wxTextCtrl)); - - // End label editing, optionally cancelling the edit - bool EndEditLabel(bool cancel); - - // Ensures this item is visible - bool EnsureVisible(long item) ; - - // Find an item whose label matches this string, starting from the item after 'start' - // or the beginning if 'start' is -1. - long FindItem(long start, const wxString& str, bool partial = FALSE); - - // Find an item whose data matches this data, starting from the item after 'start' - // or the beginning if 'start' is -1. - long FindItem(long start, long data); - - // Find an item nearest this position in the specified direction, starting from - // the item after 'start' or the beginning if 'start' is -1. - long FindItem(long start, const wxPoint& pt, int direction); - - // Determines which item (if any) is at the specified point, - // giving details in 'flags' (see wxLIST_HITTEST_... flags above) - long HitTest(const wxPoint& point, int& flags); - - // Inserts an item, returning the index of the new item if successful, - // -1 otherwise. - // TOD: Should also have some further convenience functions - // which don't require setting a wxListItem object - long InsertItem(wxListItem& info); - - // Insert a string item - long InsertItem(long index, const wxString& label); - - // Insert an image item - long InsertItem(long index, int imageIndex); - - // Insert an image/string item - long InsertItem(long index, const wxString& label, int imageIndex); - - // For list view mode (only), inserts a column. - long InsertColumn(long col, wxListItem& info); - - long InsertColumn(long col, const wxString& heading, int format = wxLIST_FORMAT_LEFT, - int width = -1); - - // Scrolls the list control. If in icon, small icon or report view mode, - // x specifies the number of pixels to scroll. If in list view mode, x - // specifies the number of columns to scroll. - // If in icon, small icon or list view mode, y specifies the number of pixels - // to scroll. If in report view mode, y specifies the number of lines to scroll. - bool ScrollList(int dx, int dy); - - // Sort items. - - // 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. - bool SortItems(wxListCtrlCompare fn, long data); - -/* Why should we need this function? Leave for now. - * We might need it because item data may have changed, - * but the display needs refreshing (in string callback mode) - // Updates an item. If the list control has the wxLI_AUTO_ARRANGE style, - // the items will be rearranged. - bool Update(long item); -*/ - - void Command(wxCommandEvent& event) { ProcessCommand(event); }; - -protected: - wxTextCtrl* m_textCtrl; // The control used for editing a label - wxImageList * m_imageListNormal; // The image list for normal icons - wxImageList * m_imageListSmall; // The image list for small icons - wxImageList * m_imageListState; // The image list state icons (not implemented yet) - - long m_baseStyle; // Basic Windows style flags, for recreation purposes - wxStringList m_stringPool; // Pool of 3 strings to satisfy Windows callback - // requirements - int m_colCount; // Windows doesn't have GetColumnCount so must - // keep track of inserted/deleted columns - -}; - -class WXDLLEXPORT wxListEvent: public wxCommandEvent -{ - DECLARE_DYNAMIC_CLASS(wxListEvent) - - public: - wxListEvent(wxEventType commandType = wxEVT_NULL, int id = 0); - - int m_code; - long m_itemIndex; - long m_oldItemIndex; - int m_col; - bool m_cancelled; - wxPoint m_pointDrag; - - wxListItem m_item; -}; - -typedef void (wxEvtHandler::*wxListEventFunction)(wxListEvent&); - -#define EVT_LIST_BEGIN_DRAG(id, fn) { wxEVT_COMMAND_LIST_BEGIN_DRAG, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL }, -#define EVT_LIST_BEGIN_RDRAG(id, fn) { wxEVT_COMMAND_LIST_BEGIN_RDRAG, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL }, -#define EVT_LIST_BEGIN_LABEL_EDIT(id, fn) { wxEVT_COMMAND_LIST_BEGIN_LABEL_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL }, -#define EVT_LIST_END_LABEL_EDIT(id, fn) { wxEVT_COMMAND_LIST_END_LABEL_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL }, -#define EVT_LIST_DELETE_ITEM(id, fn) { wxEVT_COMMAND_LIST_DELETE_ITEM, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL }, -#define EVT_LIST_DELETE_ALL_ITEMS(id, fn) { wxEVT_COMMAND_LIST_DELETE_ALL_ITEMS, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL }, -#define EVT_LIST_GET_INFO(id, fn) { wxEVT_COMMAND_LIST_GET_INFO, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL }, -#define EVT_LIST_SET_INFO(id, fn) { wxEVT_COMMAND_LIST_SET_INFO, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL }, -#define EVT_LIST_ITEM_SELECTED(id, fn) { wxEVT_COMMAND_LIST_ITEM_SELECTED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL }, -#define EVT_LIST_ITEM_DESELECTED(id, fn) { wxEVT_COMMAND_LIST_ITEM_DESELECTED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL }, -#define EVT_LIST_KEY_DOWN(id, fn) { wxEVT_COMMAND_LIST_KEY_DOWN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL }, -#define EVT_LIST_INSERT_ITEM(id, fn) { wxEVT_COMMAND_LIST_INSERT_ITEM, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL }, -#define EVT_LIST_COL_CLICK(id, fn) { wxEVT_COMMAND_LIST_COL_CLICK, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxListEventFunction) & fn, NULL }, - -#endif - // _WX_LISTCTRL_H_ diff --git a/include/wx/stubs/mdi.h b/include/wx/stubs/mdi.h deleted file mode 100644 index 6f9fc294e2..0000000000 --- a/include/wx/stubs/mdi.h +++ /dev/null @@ -1,164 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: mdi.h -// Purpose: MDI (Multiple Document Interface) classes. -// This doesn't have to be implemented just like Windows, -// it could be a tabbed design as in wxGTK. -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_MDI_H_ -#define _WX_MDI_H_ - -#ifdef __GNUG__ -#pragma interface "mdi.h" -#endif - -#include "wx/frame.h" - -WXDLLEXPORT_DATA(extern const char*) wxFrameNameStr; -WXDLLEXPORT_DATA(extern const char*) wxStatusLineNameStr; - -class WXDLLEXPORT wxMDIClientWindow; -class WXDLLEXPORT wxMDIChildFrame; - -class WXDLLEXPORT wxMDIParentFrame: public wxFrame -{ -DECLARE_DYNAMIC_CLASS(wxMDIParentFrame) - - friend class WXDLLEXPORT wxMDIChildFrame; -public: - - wxMDIParentFrame(); - inline wxMDIParentFrame(wxWindow *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE | wxVSCROLL | wxHSCROLL, // Scrolling refers to client window - const wxString& name = wxFrameNameStr) - { - Create(parent, id, title, pos, size, style, name); - } - - ~wxMDIParentFrame(); - - bool Create(wxWindow *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE | wxVSCROLL | wxHSCROLL, - const wxString& name = wxFrameNameStr); - - void OnSize(wxSizeEvent& event); - void OnActivate(wxActivateEvent& event); - void OnSysColourChanged(wxSysColourChangedEvent& event); - - void SetMenuBar(wxMenuBar *menu_bar); - - // Gets the size available for subwindows after menu size, toolbar size - // and status bar size have been subtracted. If you want to manage your own - // toolbar(s), don't call SetToolBar. - void GetClientSize(int *width, int *height) const; - - // Get the active MDI child window (Windows only) - wxMDIChildFrame *GetActiveChild() const ; - - // Get the client window - inline wxMDIClientWindow *GetClientWindow() const { return m_clientWindow; }; - - // Create the client window class (don't Create the window, - // just return a new class) - virtual wxMDIClientWindow *OnCreateClient() ; - - // MDI operations - virtual void Cascade(); - virtual void Tile(); - virtual void ArrangeIcons(); - virtual void ActivateNext(); - virtual void ActivatePrevious(); - -protected: - - // TODO maybe have this member - wxMDIClientWindow *m_clientWindow; - -DECLARE_EVENT_TABLE() -}; - -class WXDLLEXPORT wxMDIChildFrame: public wxFrame -{ -DECLARE_DYNAMIC_CLASS(wxMDIChildFrame) -public: - - wxMDIChildFrame(); - inline wxMDIChildFrame(wxMDIParentFrame *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE, - const wxString& name = wxFrameNameStr) - { - Create(parent, id, title, pos, size, style, name); - } - - ~wxMDIChildFrame(); - - bool Create(wxMDIParentFrame *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE, - const wxString& name = wxFrameNameStr); - - // Set menu bar - void SetMenuBar(wxMenuBar *menu_bar); - void SetClientSize(int width, int height); - void GetPosition(int *x, int *y) const ; - - // MDI operations - virtual void Maximize(); - virtual void Restore(); - virtual void Activate(); -}; - -/* The client window is a child of the parent MDI frame, and itself - * contains the child MDI frames. - * However, you create the MDI children as children of the MDI parent: - * only in the implementation does the client window become the parent - * of the children. Phew! So the children are sort of 'adopted'... - */ - -class WXDLLEXPORT wxMDIClientWindow: public wxWindow -{ - DECLARE_DYNAMIC_CLASS(wxMDIClientWindow) - public: - - wxMDIClientWindow() ; - inline wxMDIClientWindow(wxMDIParentFrame *parent, long style = 0) - { - CreateClient(parent, style); - } - - ~wxMDIClientWindow(); - - // Note: this is virtual, to allow overridden behaviour. - virtual bool CreateClient(wxMDIParentFrame *parent, long style = wxVSCROLL | wxHSCROLL); - - // Explicitly call default scroll behaviour - void OnScroll(wxScrollEvent& event); - -protected: - -DECLARE_EVENT_TABLE() -}; - -#endif - // _WX_MDI_H_ diff --git a/include/wx/stubs/menu.h b/include/wx/stubs/menu.h deleted file mode 100644 index fa3936557c..0000000000 --- a/include/wx/stubs/menu.h +++ /dev/null @@ -1,162 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: menu.h -// Purpose: wxMenu, wxMenuBar classes -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_MENU_H_ -#define _WX_MENU_H_ - -#ifdef __GNUG__ -#pragma interface "menu.h" -#endif - -#include "wx/defs.h" -#include "wx/event.h" - -class WXDLLEXPORT wxMenuItem; -class WXDLLEXPORT wxMenuBar; -class WXDLLEXPORT wxMenu; - -WXDLLEXPORT_DATA(extern const char*) wxEmptyString; - -// ---------------------------------------------------------------------------- -// Menu -// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxMenu: public wxEvtHandler -{ - DECLARE_DYNAMIC_CLASS(wxMenu) - -public: - // ctor & dtor - wxMenu(const wxString& title = wxEmptyString, const wxFunction func = NULL); - ~wxMenu(); - - // construct menu - // append items to the menu - // separator line - void AppendSeparator(); - // normal item - void Append(int id, const wxString& Label, const wxString& helpString = wxEmptyString, - bool checkable = FALSE); - // a submenu - void Append(int id, const wxString& Label, wxMenu *SubMenu, - const wxString& helpString = wxEmptyString); - // the most generic form (create wxMenuItem first and use it's functions) - void Append(wxMenuItem *pItem); - // insert a break in the menu - void Break(); - // delete an item - void Delete(int id); - - // menu item control - void Enable(int id, bool Flag); - bool Enabled(int id) const; - inline bool IsEnabled(int id) const { return Enabled(id); }; - void Check(int id, bool Flag); - bool Checked(int id) const; - inline bool IsChecked(int id) const { return IsChecked(id); }; - - // Client data - inline void SetClientData(void* clientData) { m_clientData = clientData; } - inline void* GetClientData() const { return m_clientData; } - - // item properties - // title - void SetTitle(const wxString& label); - const wxString GetTitle() const; - // label - void SetLabel(int id, const wxString& label); - wxString GetLabel(int id) const; - // help string - virtual void SetHelpString(int id, const wxString& helpString); - virtual wxString GetHelpString(int id) const ; - - // find item - // Finds the item id matching the given string, -1 if not found. - virtual int FindItem(const wxString& itemString) const ; - // Find wxMenuItem by ID, and item's menu too if itemMenu is !NULL. - wxMenuItem *FindItemForId(int itemId, wxMenu **itemMenu = NULL) const; - - void ProcessCommand(wxCommandEvent& event); - inline void Callback(const wxFunction func) { m_callback = func; } - - virtual void SetParent(wxEvtHandler *parent) { m_parent = parent; } - inline void SetEventHandler(wxEvtHandler *handler) { m_eventHandler = handler; } - inline wxEvtHandler *GetEventHandler() { return m_eventHandler; } - - inline wxList& GetItems() const { return (wxList&) m_menuItems; } - -public: - wxFunction m_callback; - - int m_noItems; - wxString m_title; - wxMenuBar * m_menuBar; - wxList m_menuItems; - wxEvtHandler * m_parent; - wxEvtHandler * m_eventHandler; - void* m_clientData; -}; - -// ---------------------------------------------------------------------------- -// Menu Bar (a la Windows) -// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxFrame; -class WXDLLEXPORT wxMenuBar: public wxEvtHandler -{ - DECLARE_DYNAMIC_CLASS(wxMenuBar) - - wxMenuBar(); - wxMenuBar(int n, wxMenu *menus[], const wxString titles[]); - ~wxMenuBar(); - - void Append(wxMenu *menu, const wxString& title); - // Must only be used AFTER menu has been attached to frame, - // otherwise use individual menus to enable/disable items - void Enable(int Id, bool Flag); - bool Enabled(int Id) const ; - inline bool IsEnabled(int Id) const { return Enabled(Id); }; - void EnableTop(int pos, bool Flag); - void Check(int id, bool Flag); - bool Checked(int id) const ; - inline bool IsChecked(int Id) const { return Checked(Id); }; - void SetLabel(int id, const wxString& label) ; - wxString GetLabel(int id) const ; - void SetLabelTop(int pos, const wxString& label) ; - wxString GetLabelTop(int pos) const ; - virtual void Delete(wxMenu *menu, int index = 0); /* Menu not destroyed */ - virtual bool OnAppend(wxMenu *menu, const char *title); - virtual bool OnDelete(wxMenu *menu, int index); - - virtual void SetHelpString(int Id, const wxString& helpString); - virtual wxString GetHelpString(int Id) const ; - - virtual int FindMenuItem(const wxString& menuString, const wxString& itemString) const ; - - // Find wxMenuItem for item ID, and return item's - // menu too if itemMenu is non-NULL. - wxMenuItem *FindItemForId(int itemId, wxMenu **menuForItem = NULL) const ; - - inline void SetEventHandler(wxEvtHandler *handler) { m_eventHandler = handler; } - inline wxEvtHandler *GetEventHandler() { return m_eventHandler; } - - inline int GetMenuCount() const { return m_menuCount; } - inline wxMenu* GetMenu(int i) const { return m_menus[i]; } - - public: - wxEvtHandler * m_eventHandler; - int m_menuCount; - wxMenu ** m_menus; - wxString * m_titles; - wxFrame * m_menuBarFrame; -/* TODO: data that represents the actual menubar when created. - */ -}; - -#endif // _WX_MENU_H_ diff --git a/include/wx/stubs/menuitem.h b/include/wx/stubs/menuitem.h deleted file mode 100644 index 9c912967f1..0000000000 --- a/include/wx/stubs/menuitem.h +++ /dev/null @@ -1,95 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: menuitem.h -// Purpose: wxMenuItem class -// Author: Vadim Zeitlin -// Modified by: -// Created: 11.11.97 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows license -/////////////////////////////////////////////////////////////////////////////// - -#ifndef _MENUITEM_H -#define _MENUITEM_H - -#ifdef __GNUG__ -#pragma interface "menuitem.h" -#endif - -// ---------------------------------------------------------------------------- -// headers -// ---------------------------------------------------------------------------- - -#include "wx/setup.h" - -// an exception to the general rule that a normal header doesn't include other -// headers - only because ownerdrw.h is not always included and I don't want -// to write #ifdef's everywhere... -#if wxUSE_OWNER_DRAWN -#include "wx/ownerdrw.h" -#endif - -// ---------------------------------------------------------------------------- -// constants -// ---------------------------------------------------------------------------- - -// id for a separator line in the menu (invalid for normal item) -#define ID_SEPARATOR (-1) - -// ---------------------------------------------------------------------------- -// wxMenuItem: an item in the menu, optionally implements owner-drawn behaviour -// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxMenuItem: public wxObject -#if wxUSE_OWNER_DRAWN - , public wxOwnerDrawn -#endif -{ -DECLARE_DYNAMIC_CLASS(wxMenuItem) - -public: - // ctor & dtor - wxMenuItem(wxMenu *pParentMenu = NULL, int id = ID_SEPARATOR, - const wxString& strName = "", const wxString& wxHelp = "", - bool bCheckable = FALSE, wxMenu *pSubMenu = NULL); - virtual ~wxMenuItem(); - - // accessors (some more are inherited from wxOwnerDrawn or are below) - bool IsSeparator() const { return m_idItem == ID_SEPARATOR; } - bool IsEnabled() const { return m_bEnabled; } - bool IsChecked() const { return m_bChecked; } - - int GetId() const { return m_idItem; } - const wxString& GetHelp() const { return m_strHelp; } - wxMenu *GetSubMenu() const { return m_pSubMenu; } - - // operations - void SetName(const wxString& strName) { m_strName = strName; } - void SetHelp(const wxString& strHelp) { m_strHelp = strHelp; } - - void Enable(bool bDoEnable = TRUE); - void Check(bool bDoCheck = TRUE); - - void DeleteSubMenu(); - -private: - int m_idItem; // numeric id of the item - wxString m_strHelp; // associated help string - wxMenu *m_pSubMenu, // may be NULL - *m_pParentMenu; // menu this item is contained in - bool m_bEnabled, // enabled or greyed? - m_bChecked; // checked? (only if checkable) - -#if wxUSE_OWNER_DRAWN - // wxOwnerDrawn base class already has these variables - nothing to do - -#else //!owner drawn - bool m_bCheckable; // can be checked? - wxString m_strName; // name or label of the item - -public: - const wxString& GetName() const { return m_strName; } - bool IsCheckable() const { return m_bCheckable; } -#endif //owner drawn -}; - -#endif //_MENUITEM_H diff --git a/include/wx/stubs/metafile.h b/include/wx/stubs/metafile.h deleted file mode 100644 index eb86b97a04..0000000000 --- a/include/wx/stubs/metafile.h +++ /dev/null @@ -1,101 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: metafile.h -// Purpose: wxMetaFile, wxMetaFileDC classes. -// This probably should be restricted to Windows platforms, -// but if there is an equivalent on your platform, great. -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifndef _WX_METAFIILE_H_ -#define _WX_METAFIILE_H_ - -#ifdef __GNUG__ -#pragma interface "metafile.h" -#endif - -#include "wx/setup.h" - -/* - * Metafile and metafile device context classes - work in Windows 3.1 only - * - */ - -class WXDLLEXPORT wxDC; -class WXDLLEXPORT wxMetaFile: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxMetaFile) - public: - wxMetaFile(const wxString& file = ""); - ~wxMetaFile(); - - // After this is called, the metafile cannot be used for anything - // since it is now owned by the clipboard. - virtual bool SetClipboard(int width = 0, int height = 0); - - virtual bool Play(wxDC *dc); - // TODO - inline bool Ok() { return FALSE; }; - -/* TODO: Implementation - inline WXHANDLE GetHMETAFILE() { return m_metaFile; } - inline void SetHMETAFILE(WXHANDLE mf) { m_metaFile = mf; } - -protected: - WXHANDLE m_metaFile; -*/ -}; - -class WXDLLEXPORT wxMetaFileDC: public wxDC -{ - DECLARE_DYNAMIC_CLASS(wxMetaFileDC) - - public: - // Don't supply origin and extent - // Supply them to wxMakeMetaFilePlaceable instead. - wxMetaFileDC(const wxString& file = ""); - - // Supply origin and extent (recommended). - // Then don't need to supply them to wxMakeMetaFilePlaceable. - wxMetaFileDC(const wxString& file, int xext, int yext, int xorg, int yorg); - - ~wxMetaFileDC(); - - // Should be called at end of drawing - virtual wxMetaFile *Close(); - virtual void SetMapMode(int mode); - virtual void GetTextExtent(const wxString& string, float *x, float *y, - float *descent = NULL, float *externalLeading = NULL, - wxFont *theFont = NULL, bool use16bit = FALSE); - - // Implementation - inline wxMetaFile *GetMetaFile() { return m_metaFile; } - inline void SetMetaFile(wxMetaFile *mf) { m_metaFile = mf; } - inline int GetWindowsMappingMode() { return m_windowsMappingMode; } - inline void SetWindowsMappingMode(int mm) { m_windowsMappingMode = mm; } - -protected: - int m_windowsMappingMode; - wxMetaFile *m_metaFile; -}; - -/* - * Pass filename of existing non-placeable metafile, and bounding box. - * Adds a placeable metafile header, sets the mapping mode to anisotropic, - * and sets the window origin and extent to mimic the MM_TEXT mapping mode. - * - */ - -// No origin or extent -bool WXDLLEXPORT wxMakeMetaFilePlaceable(const wxString& filename, float scale = 1.0); - -// Optional origin and extent -bool WXDLLEXPORT wxMakeMetaFilePlaceable(const wxString& filename, int x1, int y1, int x2, int y2, float scale = 1.0, bool useOriginAndExtent = TRUE); - -#endif - // _WX_METAFIILE_H_ diff --git a/include/wx/stubs/minifram.h b/include/wx/stubs/minifram.h deleted file mode 100644 index 8f1644d558..0000000000 --- a/include/wx/stubs/minifram.h +++ /dev/null @@ -1,46 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: minifram.h -// Purpose: wxMiniFrame class. A small frame for e.g. floating toolbars. -// If there is no equivalent on your platform, just make it a -// normal frame. -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_MINIFRAM_H_ -#define _WX_MINIFRAM_H_ - -#ifdef __GNUG__ -#pragma interface "minifram.h" -#endif - -#include "wx/frame.h" - -class WXDLLEXPORT wxMiniFrame: public wxFrame { - - DECLARE_DYNAMIC_CLASS(wxMiniFrame) - -public: - inline wxMiniFrame() {} - inline wxMiniFrame(wxWindow *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE|wxTINY_CAPTION_HORIZ, - const wxString& name = wxFrameNameStr) - { - // Use wxFrame constructor in absence of more specific code. - Create(parent, id, title, pos, size, style, name); - } - - ~wxMiniFrame() {} -protected: -}; - -#endif - // _WX_MINIFRAM_H_ diff --git a/include/wx/stubs/msgdlg.h b/include/wx/stubs/msgdlg.h deleted file mode 100644 index 58fa8e51ae..0000000000 --- a/include/wx/stubs/msgdlg.h +++ /dev/null @@ -1,50 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: msgdlg.h -// Purpose: wxMessageDialog class. Use generic version if no -// platform-specific implementation. -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_MSGBOXDLG_H_ -#define _WX_MSGBOXDLG_H_ - -#ifdef __GNUG__ -#pragma interface "msgdlg.h" -#endif - -#include "wx/setup.h" -#include "wx/dialog.h" - -/* - * Message box dialog - */ - -WXDLLEXPORT_DATA(extern const char*) wxMessageBoxCaptionStr; - -class WXDLLEXPORT wxMessageDialog: public wxDialog -{ -DECLARE_DYNAMIC_CLASS(wxMessageDialog) -protected: - wxString m_caption; - wxString m_message; - long m_dialogStyle; - wxWindow * m_parent; -public: - wxMessageDialog(wxWindow *parent, const wxString& message, const wxString& caption = wxMessageBoxCaptionStr, - long style = wxOK|wxCENTRE, const wxPoint& pos = wxDefaultPosition); - - int ShowModal(); -}; - - -int WXDLLEXPORT wxMessageBox(const wxString& message, const wxString& caption = wxMessageBoxCaptionStr, - long style = wxOK|wxCENTRE, - wxWindow *parent = NULL, int x = -1, int y = -1); - -#endif - // _WX_MSGBOXDLG_H_ diff --git a/include/wx/stubs/notebook.h b/include/wx/stubs/notebook.h deleted file mode 100644 index 83f8c1ce4e..0000000000 --- a/include/wx/stubs/notebook.h +++ /dev/null @@ -1,206 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: notebook.h -// Purpose: MSW/GTK compatible notebook (a.k.a. property sheet) -// Author: AUTHOR -// Modified by: -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_NOTEBOOK_H_ -#define _WX_NOTEBOOK_H_ - -#ifdef __GNUG__ -#pragma interface "notebook.h" -#endif - -// ---------------------------------------------------------------------------- -// headers -// ---------------------------------------------------------------------------- -#include "wx/dynarray.h" -#include "wx/event.h" -#include "wx/control.h" - -// ---------------------------------------------------------------------------- -// types -// ---------------------------------------------------------------------------- - -// fwd declarations -class WXDLLEXPORT wxImageList; -class WXDLLEXPORT wxWindow; - -// array of notebook pages -typedef wxWindow wxNotebookPage; // so far, any window can be a page -WX_DEFINE_ARRAY(wxNotebookPage *, wxArrayPages); - -// ---------------------------------------------------------------------------- -// notebook events -// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxNotebookEvent : public wxCommandEvent -{ -public: - wxNotebookEvent(wxEventType commandType = wxEVT_NULL, int id = 0, - int nSel = -1, int nOldSel = -1) - : wxCommandEvent(commandType, id) { m_nSel = nSel; m_nOldSel = nOldSel; } - - // accessors - int GetSelection() const { return m_nSel; } - int GetOldSelection() const { return m_nOldSel; } - -private: - int m_nSel, // currently selected page - m_nOldSel; // previously selected page - - DECLARE_DYNAMIC_CLASS(wxNotebookEvent) -}; - -// ---------------------------------------------------------------------------- -// wxNotebook -// ---------------------------------------------------------------------------- - -// @@@ this class should really derive from wxTabCtrl, but the interface is not -// exactly the same, so I can't do it right now and instead we reimplement -// part of wxTabCtrl here -class wxNotebook : public wxControl -{ -public: - // ctors - // ----- - // default for dynamic class - wxNotebook(); - // the same arguments as for wxControl (@@@ any special styles?) - wxNotebook(wxWindow *parent, - wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = "notebook"); - // Create() function - bool Create(wxWindow *parent, - wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = "notebook"); - // dtor - ~wxNotebook(); - - // accessors - // --------- - // get number of pages in the dialog - int GetPageCount() const; - - // set the currently selected page, return the index of the previously - // selected one (or -1 on error) - // NB: this function will _not_ generate wxEVT_NOTEBOOK_PAGE_xxx events - int SetSelection(int nPage); - // cycle thru the tabs - void AdvanceSelection(bool bForward = TRUE); - // get the currently selected page - int GetSelection() const { return m_nSelection; } - - // set/get the title of a page - bool SetPageText(int nPage, const wxString& strText); - wxString GetPageText(int nPage) const; - - // image list stuff: each page may have an image associated with it. All - // the images belong to an image list, so you have to - // 1) create an image list - // 2) associate it with the notebook - // 3) set for each page it's image - // associate image list with a control - void SetImageList(wxImageList* imageList); - // get pointer (may be NULL) to the associated image list - wxImageList* GetImageList() const { return m_pImageList; } - - // sets/returns item's image index in the current image list - int GetPageImage(int nPage) const; - bool SetPageImage(int nPage, int nImage); - - // currently it's always 1 because wxGTK doesn't support multi-row - // tab controls - int GetRowCount() const; - - // control the appearance of the notebook pages - // set the size (the same for all pages) - void SetPageSize(const wxSize& size); - // set the padding between tabs (in pixels) - void SetPadding(const wxSize& padding); - - // operations - // ---------- - // remove one page from the notebook - bool DeletePage(int nPage); - // remove one page from the notebook, without deleting - bool RemovePage(int nPage); - // remove all pages - bool DeleteAllPages(); - // adds a new page to the notebook (it will be deleted ny the notebook, - // don't delete it yourself). If bSelect, this page becomes active. - bool AddPage(wxNotebookPage *pPage, - const wxString& strText, - bool bSelect = FALSE, - int imageId = -1); - // the same as AddPage(), but adds it at the specified position - bool InsertPage(int nPage, - wxNotebookPage *pPage, - const wxString& strText, - bool bSelect = FALSE, - int imageId = -1); - // get the panel which represents the given page - wxNotebookPage *GetPage(int nPage) { return m_aPages[nPage]; } - - // callbacks - // --------- - void OnSize(wxSizeEvent& event); - void OnSelChange(wxNotebookEvent& event); - void OnSetFocus(wxFocusEvent& event); - void OnNavigationKey(wxNavigationKeyEvent& event); - - // base class virtuals - // ------------------- - virtual void Command(wxCommandEvent& event); - virtual void SetConstraintSizes(bool recurse = TRUE); - virtual bool DoPhase(int nPhase); - -protected: - // common part of all ctors - void Init(); - - // helper functions - void ChangePage(int nOldSel, int nSel); // change pages - - wxImageList *m_pImageList; // we can have an associated image list - wxArrayPages m_aPages; // array of pages - - int m_nSelection; // the current selection (-1 if none) - - DECLARE_DYNAMIC_CLASS(wxNotebook) - DECLARE_EVENT_TABLE() -}; - -// ---------------------------------------------------------------------------- -// event macros -// ---------------------------------------------------------------------------- -typedef void (wxEvtHandler::*wxNotebookEventFunction)(wxNotebookEvent&); - -#define EVT_NOTEBOOK_PAGE_CHANGED(id, fn) \ - { \ - wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED, \ - id, \ - -1, \ - (wxObjectEventFunction)(wxEventFunction)(wxNotebookEventFunction) &fn, \ - NULL \ - }, - -#define EVT_NOTEBOOK_PAGE_CHANGING(id, fn) \ - { \ - wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING, \ \ - id, \ - -1, \ - (wxObjectEventFunction)(wxEventFunction)(wxNotebookEventFunction) &fn, \ - NULL \ - }, - -#endif // _WX_NOTEBOOK_H_ diff --git a/include/wx/stubs/palette.h b/include/wx/stubs/palette.h deleted file mode 100644 index 3482b33934..0000000000 --- a/include/wx/stubs/palette.h +++ /dev/null @@ -1,64 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: palette.h -// Purpose: wxPalette class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_PALETTE_H_ -#define _WX_PALETTE_H_ - -#ifdef __GNUG__ -#pragma interface "palette.h" -#endif - -#include "wx/gdiobj.h" - -class WXDLLEXPORT wxPalette; - -class WXDLLEXPORT wxPaletteRefData: public wxGDIRefData -{ - friend class WXDLLEXPORT wxPalette; -public: - wxPaletteRefData(); - ~wxPaletteRefData(); -/* TODO: implementation -protected: - WXHPALETTE m_hPalette; -*/ -}; - -#define M_PALETTEDATA ((wxPaletteRefData *)m_refData) - -class WXDLLEXPORT wxPalette: public wxGDIObject -{ - DECLARE_DYNAMIC_CLASS(wxPalette) - -public: - wxPalette(); - inline wxPalette(const wxPalette& palette) { Ref(palette); } - - wxPalette(int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue); - ~wxPalette(); - bool Create(int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue); - int GetPixel(const unsigned char red, const unsigned char green, const unsigned char blue) const; - bool GetRGB(int pixel, unsigned char *red, unsigned char *green, unsigned char *blue) const; - - virtual bool Ok() const { return (m_refData != NULL) ; } - - inline wxPalette& operator = (const wxPalette& palette) { if (*this == palette) return (*this); Ref(palette); return *this; } - inline bool operator == (const wxPalette& palette) { return m_refData == palette.m_refData; } - inline bool operator != (const wxPalette& palette) { return m_refData != palette.m_refData; } - -/* TODO: implementation - inline WXHPALETTE GetHPALETTE() const { return (M_PALETTEDATA ? M_PALETTEDATA->m_hPalette : 0); } - void SetHPALETTE(WXHPALETTE pal); -*/ -}; - -#endif - // _WX_PALETTE_H_ diff --git a/include/wx/stubs/pen.h b/include/wx/stubs/pen.h deleted file mode 100644 index 938908b56b..0000000000 --- a/include/wx/stubs/pen.h +++ /dev/null @@ -1,101 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: pen.h -// Purpose: wxPen class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_PEN_H_ -#define _WX_PEN_H_ - -#ifdef __GNUG__ -#pragma interface "pen.h" -#endif - -#include "wx/gdiobj.h" -#include "wx/colour.h" -#include "wx/bitmap.h" - -typedef long wxDash ; - -class WXDLLEXPORT wxPen; - -class WXDLLEXPORT wxPenRefData: public wxGDIRefData -{ - friend class WXDLLEXPORT wxPen; -public: - wxPenRefData(); - wxPenRefData(const wxPenRefData& data); - ~wxPenRefData(); - -protected: - int m_width; - int m_style; - int m_join ; - int m_cap ; - wxBitmap m_stipple ; - int m_nbDash ; - wxDash * m_dash ; - wxColour m_colour; -/* TODO: implementation - WXHPEN m_hPen; -*/ -}; - -#define M_PENDATA ((wxPenRefData *)m_refData) - -// Pen -class WXDLLEXPORT wxPen: public wxGDIObject -{ - DECLARE_DYNAMIC_CLASS(wxPen) -public: - wxPen(); - wxPen(const wxColour& col, int width, int style); - wxPen(const wxBitmap& stipple, int width); - inline wxPen(const wxPen& pen) { Ref(pen); } - ~wxPen(); - - inline wxPen& operator = (const wxPen& pen) { if (*this == pen) return (*this); Ref(pen); return *this; } - inline bool operator == (const wxPen& pen) { return m_refData == pen.m_refData; } - inline bool operator != (const wxPen& pen) { return m_refData != pen.m_refData; } - - virtual bool Ok() const { return (m_refData != NULL) ; } - - // Override in order to recreate the pen - void SetColour(const wxColour& col) ; - void SetColour(unsigned char r, unsigned char g, unsigned char b) ; - - void SetWidth(int width) ; - void SetStyle(int style) ; - void SetStipple(const wxBitmap& stipple) ; - void SetDashes(int nb_dashes, const wxDash *dash) ; - void SetJoin(int join) ; - void SetCap(int cap) ; - - inline wxColour& GetColour() const { return (M_PENDATA ? M_PENDATA->m_colour : wxNullColour); }; - inline int GetWidth() const { return (M_PENDATA ? M_PENDATA->m_width : 0); }; - inline int GetStyle() const { return (M_PENDATA ? M_PENDATA->m_style : 0); }; - inline int GetJoin() const { return (M_PENDATA ? M_PENDATA->m_join : 0); }; - inline int GetCap() const { return (M_PENDATA ? M_PENDATA->m_cap : 0); }; - inline int GetDashes(wxDash **ptr) const { - *ptr = (M_PENDATA ? M_PENDATA->m_dash : (wxDash*) NULL); return (M_PENDATA ? M_PENDATA->m_nbDash : 0); - } - - inline wxBitmap *GetStipple() const { return (M_PENDATA ? (& M_PENDATA->m_stipple) : (wxBitmap*) NULL); }; - -// Implementation - - // Useful helper: create the brush resource - bool RealizeResource(); - - // When setting properties, we must make sure we're not changing - // another object - void Unshare(); -}; - -#endif - // _WX_PEN_H_ diff --git a/include/wx/stubs/print.h b/include/wx/stubs/print.h deleted file mode 100644 index bac3703496..0000000000 --- a/include/wx/stubs/print.h +++ /dev/null @@ -1,56 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: print.h -// Purpose: wxPrinter, wxPrintPreview classes -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_PRINT_H_ -#define _WX_PRINT_H_ - -#ifdef __GNUG__ -#pragma interface "print.h" -#endif - -#include "wx/prntbase.h" - -/* - * Represents the printer: manages printing a wxPrintout object - */ - -class WXDLLEXPORT wxPrinter: public wxPrinterBase -{ - DECLARE_DYNAMIC_CLASS(wxPrinter) - - public: - wxPrinter(wxPrintData *data = NULL); - ~wxPrinter(); - - virtual bool Print(wxWindow *parent, wxPrintout *printout, bool prompt = TRUE); - virtual bool PrintDialog(wxWindow *parent); - virtual bool Setup(wxWindow *parent); -}; - -/* - * wxPrintPreview - * Programmer creates an object of this class to preview a wxPrintout. - */ - -class WXDLLEXPORT wxPrintPreview: public wxPrintPreviewBase -{ - DECLARE_CLASS(wxPrintPreview) - - public: - wxPrintPreview(wxPrintout *printout, wxPrintout *printoutForPrinting = NULL, wxPrintData *data = NULL); - ~wxPrintPreview(); - - virtual bool Print(bool interactive); - virtual void DetermineScaling(); -}; - -#endif - // _WX_PRINT_H_ diff --git a/include/wx/stubs/printdlg.h b/include/wx/stubs/printdlg.h deleted file mode 100644 index ac31a49096..0000000000 --- a/include/wx/stubs/printdlg.h +++ /dev/null @@ -1,70 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: printdlg.h -// Purpose: wxPrintDialog, wxPageSetupDialog classes. -// Use generic, PostScript version if no -// platform-specific implementation. -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_PRINTDLG_H_ -#define _WX_PRINTDLG_H_ - -#ifdef __GNUG__ -#pragma interface "printdlg.h" -#endif - -#include "wx/dialog.h" -#include "wx/cmndata.h" - -/* - * wxPrinterDialog - * The common dialog for printing. - */ - -class WXDLLEXPORT wxDC; -class WXDLLEXPORT wxPrintDialog: public wxDialog -{ - DECLARE_DYNAMIC_CLASS(wxPrintDialog) - - public: - wxPrintDialog(); - wxPrintDialog(wxWindow *parent, wxPrintData* data = NULL); - ~wxPrintDialog(); - - bool Create(wxWindow *parent, wxPrintData* data = NULL); - virtual int ShowModal(); - - inline wxPrintData& GetPrintData() { return m_printData; } - virtual wxDC *GetPrintDC(); - - private: - wxPrintData m_printData; - wxDC* m_printerDC; - wxWindow* m_dialogParent; -}; - -class WXDLLEXPORT wxPageSetupDialog: public wxDialog -{ - DECLARE_DYNAMIC_CLASS(wxPageSetupDialog) - - private: - wxPageSetupData m_pageSetupData; - wxWindow* m_dialogParent; - public: - wxPageSetupDialog(); - wxPageSetupDialog(wxWindow *parent, wxPageSetupData *data = NULL); - ~wxPageSetupDialog(); - - bool Create(wxWindow *parent, wxPageSetupData *data = NULL); - virtual int ShowModal(); - - inline wxPageSetupData& GetPageSetupData() { return m_pageSetupData; } -}; - -#endif - // _WX_PRINTDLG_H_ diff --git a/include/wx/stubs/private.h b/include/wx/stubs/private.h deleted file mode 100644 index 922c172436..0000000000 --- a/include/wx/stubs/private.h +++ /dev/null @@ -1,21 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: private.h -// Purpose: Private declarations -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_PRIVATE_H_ -#define _WX_PRIVATE_H_ - -#include "wx/defs.h" - -/* TODO: put any private declarations here. - */ - -#endif - // _WX_PRIVATE_H_ diff --git a/include/wx/stubs/radiobox.h b/include/wx/stubs/radiobox.h deleted file mode 100644 index cb7c5ba405..0000000000 --- a/include/wx/stubs/radiobox.h +++ /dev/null @@ -1,88 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: radiobox.h -// Purpose: wxRadioBox class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_RADIOBOX_H_ -#define _WX_RADIOBOX_H_ - -#ifdef __GNUG__ -#pragma interface "radiobox.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxRadioBoxNameStr; - -// List box item -class WXDLLEXPORT wxBitmap ; - -class WXDLLEXPORT wxRadioBox: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxRadioBox) -public: - wxRadioBox(); - - inline wxRadioBox(wxWindow *parent, wxWindowID id, const wxString& title, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = NULL, - int majorDim = 0, long style = wxRA_HORIZONTAL, - const wxValidator& val = wxDefaultValidator, const wxString& name = wxRadioBoxNameStr) - { - Create(parent, id, title, pos, size, n, choices, majorDim, style, val, name); - } - - ~wxRadioBox(); - - bool Create(wxWindow *parent, wxWindowID id, const wxString& title, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - int n = 0, const wxString choices[] = NULL, - int majorDim = 0, long style = wxRA_HORIZONTAL, - const wxValidator& val = wxDefaultValidator, const wxString& name = wxRadioBoxNameStr); - - int FindString(const wxString& s) const; - void SetSelection(int N); - int GetSelection() const; - wxString GetString(int N) const; - void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - void GetSize(int *x, int *y) const; - void GetPosition(int *x, int *y) const; - wxString GetLabel() const; - void SetLabel(const wxString& label); - void SetLabel(int item, const wxString& label) ; - wxString GetLabel(int item) const; - bool Show(bool show); - void SetFocus(); - void Enable(bool enable); - void Enable(int item, bool enable); - void Show(int item, bool show) ; - inline void SetLabelFont(const wxFont& WXUNUSED(font)) {}; - inline void SetButtonFont(const wxFont& font) { SetFont(font); } - - virtual wxString GetStringSelection() const; - virtual bool SetStringSelection(const wxString& s); - inline virtual int Number() const { return m_noItems; } ; - void Command(wxCommandEvent& event); - - inline int GetNumberOfRowsOrCols() const { return m_noRowsOrCols; } - inline void SetNumberOfRowsOrCols(int n) { m_noRowsOrCols = n; } - -protected: -/* TODO: implementation - WXHWND * m_radioButtons; -*/ - int m_majorDim ; - int m_noItems; - int m_noRowsOrCols; - int m_selectedButton; - -}; - -#endif - // _WX_RADIOBOX_H_ diff --git a/include/wx/stubs/radiobut.h b/include/wx/stubs/radiobut.h deleted file mode 100644 index 8e8bf1313d..0000000000 --- a/include/wx/stubs/radiobut.h +++ /dev/null @@ -1,90 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: radiobut.h -// Purpose: wxRadioButton class -// Author: AUTHOR -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_RADIOBUT_H_ -#define _WX_RADIOBUT_H_ - -#ifdef __GNUG__ -#pragma interface "radiobut.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxRadioButtonNameStr; - -class WXDLLEXPORT wxRadioButton: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxRadioButton) - protected: - public: - inline wxRadioButton() {} - inline wxRadioButton(wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxRadioButtonNameStr) - { - Create(parent, id, label, pos, size, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxRadioButtonNameStr); - - virtual void SetLabel(const wxString& label); - virtual void SetValue(bool val); - virtual bool GetValue() const ; - - void Command(wxCommandEvent& event); -}; - -// Not implemented -#if 0 -class WXDLLEXPORT wxBitmap ; - -WXDLLEXPORT_DATA(extern const char*) wxBitmapRadioButtonNameStr; - -class WXDLLEXPORT wxBitmapRadioButton: public wxRadioButton -{ - DECLARE_DYNAMIC_CLASS(wxBitmapRadioButton) - protected: - wxBitmap *theButtonBitmap; - public: - inline wxBitmapRadioButton() { theButtonBitmap = NULL; } - inline wxBitmapRadioButton(wxWindow *parent, wxWindowID id, - const wxBitmap *label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxBitmapRadioButtonNameStr) - { - Create(parent, id, label, pos, size, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - const wxBitmap *label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxBitmapRadioButtonNameStr); - - virtual void SetLabel(const wxBitmap *label); - virtual void SetValue(bool val) ; - virtual bool GetValue() const ; -}; -#endif - -#endif - // _WX_RADIOBUT_H_ diff --git a/include/wx/stubs/region.h b/include/wx/stubs/region.h deleted file mode 100644 index 04d143c2e9..0000000000 --- a/include/wx/stubs/region.h +++ /dev/null @@ -1,137 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: region.h -// Purpose: wxRegion class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_REGION_H_ -#define _WX_REGION_H_ - -#ifdef __GNUG__ -#pragma interface "region.h" -#endif - -#include "wx/list.h" -#include "wx/gdiobj.h" -#include "wx/gdicmn.h" - -class WXDLLEXPORT wxRect; -class WXDLLEXPORT wxPoint; - -enum wxRegionContain { - wxOutRegion = 0, wxPartRegion = 1, wxInRegion = 2 -}; - -// So far, for internal use only -enum wxRegionOp { -wxRGN_AND, // Creates the intersection of the two combined regions. -wxRGN_COPY, // Creates a copy of the region identified by hrgnSrc1. -wxRGN_DIFF, // Combines the parts of hrgnSrc1 that are not part of hrgnSrc2. -wxRGN_OR, // Creates the union of two combined regions. -wxRGN_XOR // Creates the union of two combined regions except for any overlapping areas. -}; - -class WXDLLEXPORT wxRegion : public wxGDIObject { -DECLARE_DYNAMIC_CLASS(wxRegion); - friend class WXDLLEXPORT wxRegionIterator; -public: - wxRegion(long x, long y, long w, long h); - wxRegion(const wxPoint& topLeft, const wxPoint& bottomRight); - wxRegion(const wxRect& rect); - wxRegion(); - ~wxRegion(); - - //# Copying - inline wxRegion(const wxRegion& r) - { Ref(r); } - inline wxRegion& operator = (const wxRegion& r) - { Ref(r); return (*this); } - - //# Modify region - // Clear current region - void Clear(); - - // Union rectangle or region with this. - inline bool Union(long x, long y, long width, long height) { return Combine(x, y, width, height, wxRGN_OR); } - inline bool Union(const wxRect& rect) { return Combine(rect, wxRGN_OR); } - inline bool Union(const wxRegion& region) { return Combine(region, wxRGN_OR); } - - // Intersect rectangle or region with this. - inline bool Intersect(long x, long y, long width, long height) { return Combine(x, y, width, height, wxRGN_AND); } - inline bool Intersect(const wxRect& rect) { return Combine(rect, wxRGN_AND); } - inline bool Intersect(const wxRegion& region) { return Combine(region, wxRGN_AND); } - - // Subtract rectangle or region from this: - // Combines the parts of 'this' that are not part of the second region. - inline bool Subtract(long x, long y, long width, long height) { return Combine(x, y, width, height, wxRGN_DIFF); } - inline bool Subtract(const wxRect& rect) { return Combine(rect, wxRGN_DIFF); } - inline bool Subtract(const wxRegion& region) { return Combine(region, wxRGN_DIFF); } - - // XOR: the union of two combined regions except for any overlapping areas. - inline bool Xor(long x, long y, long width, long height) { return Combine(x, y, width, height, wxRGN_XOR); } - inline bool Xor(const wxRect& rect) { return Combine(rect, wxRGN_XOR); } - inline bool Xor(const wxRegion& region) { return Combine(region, wxRGN_XOR); } - - //# Information on region - // Outer bounds of region - void GetBox(long& x, long& y, long&w, long &h) const; - wxRect GetBox() const ; - - // Is region empty? - bool Empty() const; - inline bool IsEmpty() const { return Empty(); } - - //# Tests - // Does the region contain the point (x,y)? - wxRegionContain Contains(long x, long y) const; - // Does the region contain the point pt? - wxRegionContain Contains(const wxPoint& pt) const; - // Does the region contain the rectangle (x, y, w, h)? - wxRegionContain Contains(long x, long y, long w, long h) const; - // Does the region contain the rectangle rect? - wxRegionContain Contains(const wxRect& rect) const; - -// Internal - bool Combine(long x, long y, long width, long height, wxRegionOp op); - bool Combine(const wxRegion& region, wxRegionOp op); - bool Combine(const wxRect& rect, wxRegionOp op); -}; - -class WXDLLEXPORT wxRegionIterator : public wxObject { -DECLARE_DYNAMIC_CLASS(wxRegionIterator); -public: - wxRegionIterator(); - wxRegionIterator(const wxRegion& region); - ~wxRegionIterator(); - - void Reset() { m_current = 0; } - void Reset(const wxRegion& region); - - operator bool () const { return m_current < m_numRects; } - bool HaveRects() const { return m_current < m_numRects; } - - void operator ++ (); - void operator ++ (int); - - long GetX() const; - long GetY() const; - long GetW() const; - long GetWidth() const { return GetW(); } - long GetH() const; - long GetHeight() const { return GetH(); } - wxRect GetRect() const { return wxRect(GetX(), GetY(), GetWidth(), GetHeight()); } - -private: - long m_current; - long m_numRects; - wxRegion m_region; - wxRect* m_rects; -}; - -#endif - // _WX_REGION_H_ diff --git a/include/wx/stubs/scrolbar.h b/include/wx/stubs/scrolbar.h deleted file mode 100644 index 3ec992e78e..0000000000 --- a/include/wx/stubs/scrolbar.h +++ /dev/null @@ -1,68 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: scrollbar.h -// Purpose: wxScrollBar class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_SCROLBAR_H_ -#define _WX_SCROLBAR_H_ - -#ifdef __GNUG__ -#pragma interface "scrolbar.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxScrollBarNameStr; - -// Scrollbar item -class WXDLLEXPORT wxScrollBar: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxScrollBar) - -public: - inline wxScrollBar() { m_pageSize = 0; m_viewSize = 0; m_objectSize = 0; } - ~wxScrollBar(); - - inline wxScrollBar(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxSB_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxScrollBarNameStr) - { - Create(parent, id, pos, size, style, validator, name); - } - bool Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxSB_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxScrollBarNameStr); - - int GetThumbPosition() const ; - inline int GetThumbSize() const { return m_pageSize; } - inline int GetPageSize() const { return m_viewSize; } - inline int GetRange() const { return m_objectSize; } - - virtual void SetThumbPosition(int viewStart); - virtual void SetScrollbar(int position, int thumbSize, int range, int pageSize, - bool refresh = TRUE); - - void Command(wxCommandEvent& event); - -protected: - int m_pageSize; - int m_viewSize; - int m_objectSize; - -DECLARE_EVENT_TABLE() -}; - -#endif - // _WX_SCROLBAR_H_ diff --git a/include/wx/stubs/settings.h b/include/wx/stubs/settings.h deleted file mode 100644 index 8ed994f1ba..0000000000 --- a/include/wx/stubs/settings.h +++ /dev/null @@ -1,133 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: settings.h -// Purpose: wxSystemSettings class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_SETTINGS_H_ -#define _WX_SETTINGS_H_ - -#ifdef __GNUG__ -#pragma interface "settings.h" -#endif - -#include "wx/setup.h" -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/colour.h" -#include "wx/font.h" - -#define wxSYS_WHITE_BRUSH 0 -#define wxSYS_LTGRAY_BRUSH 1 -#define wxSYS_GRAY_BRUSH 2 -#define wxSYS_DKGRAY_BRUSH 3 -#define wxSYS_BLACK_BRUSH 4 -#define wxSYS_NULL_BRUSH 5 -#define wxSYS_HOLLOW_BRUSH wxSYS_NULL_BRUSH -#define wxSYS_WHITE_PEN 6 -#define wxSYS_BLACK_PEN 7 -#define wxSYS_NULL_PEN 8 -#define wxSYS_OEM_FIXED_FONT 10 -#define wxSYS_ANSI_FIXED_FONT 11 -#define wxSYS_ANSI_VAR_FONT 12 -#define wxSYS_SYSTEM_FONT 13 -#define wxSYS_DEVICE_DEFAULT_FONT 14 -#define wxSYS_DEFAULT_PALETTE 15 -#define wxSYS_SYSTEM_FIXED_FONT 16 // Obsolete -#define wxSYS_DEFAULT_GUI_FONT 17 - -#define wxSYS_COLOUR_SCROLLBAR 0 -#define wxSYS_COLOUR_BACKGROUND 1 -#define wxSYS_COLOUR_ACTIVECAPTION 2 -#define wxSYS_COLOUR_INACTIVECAPTION 3 -#define wxSYS_COLOUR_MENU 4 -#define wxSYS_COLOUR_WINDOW 5 -#define wxSYS_COLOUR_WINDOWFRAME 6 -#define wxSYS_COLOUR_MENUTEXT 7 -#define wxSYS_COLOUR_WINDOWTEXT 8 -#define wxSYS_COLOUR_CAPTIONTEXT 9 -#define wxSYS_COLOUR_ACTIVEBORDER 10 -#define wxSYS_COLOUR_INACTIVEBORDER 11 -#define wxSYS_COLOUR_APPWORKSPACE 12 -#define wxSYS_COLOUR_HIGHLIGHT 13 -#define wxSYS_COLOUR_HIGHLIGHTTEXT 14 -#define wxSYS_COLOUR_BTNFACE 15 -#define wxSYS_COLOUR_BTNSHADOW 16 -#define wxSYS_COLOUR_GRAYTEXT 17 -#define wxSYS_COLOUR_BTNTEXT 18 -#define wxSYS_COLOUR_INACTIVECAPTIONTEXT 19 -#define wxSYS_COLOUR_BTNHIGHLIGHT 20 - -#define wxSYS_COLOUR_3DDKSHADOW 21 -#define wxSYS_COLOUR_3DLIGHT 22 -#define wxSYS_COLOUR_INFOTEXT 23 -#define wxSYS_COLOUR_INFOBK 24 - -#define wxSYS_COLOUR_DESKTOP wxSYS_COLOUR_BACKGROUND -#define wxSYS_COLOUR_3DFACE wxSYS_COLOUR_BTNFACE -#define wxSYS_COLOUR_3DSHADOW wxSYS_COLOUR_BTNSHADOW -#define wxSYS_COLOUR_3DHIGHLIGHT wxSYS_COLOUR_BTNHIGHLIGHT -#define wxSYS_COLOUR_3DHILIGHT wxSYS_COLOUR_BTNHIGHLIGHT -#define wxSYS_COLOUR_BTNHILIGHT wxSYS_COLOUR_BTNHIGHLIGHT - -// Metrics -#define wxSYS_MOUSE_BUTTONS 1 -#define wxSYS_BORDER_X 2 -#define wxSYS_BORDER_Y 3 -#define wxSYS_CURSOR_X 4 -#define wxSYS_CURSOR_Y 5 -#define wxSYS_DCLICK_X 6 -#define wxSYS_DCLICK_Y 7 -#define wxSYS_DRAG_X 8 -#define wxSYS_DRAG_Y 9 -#define wxSYS_EDGE_X 10 -#define wxSYS_EDGE_Y 11 -#define wxSYS_HSCROLL_ARROW_X 12 -#define wxSYS_HSCROLL_ARROW_Y 13 -#define wxSYS_HTHUMB_X 14 -#define wxSYS_ICON_X 15 -#define wxSYS_ICON_Y 16 -#define wxSYS_ICONSPACING_X 17 -#define wxSYS_ICONSPACING_Y 18 -#define wxSYS_WINDOWMIN_X 19 -#define wxSYS_WINDOWMIN_Y 20 -#define wxSYS_SCREEN_X 21 -#define wxSYS_SCREEN_Y 22 -#define wxSYS_FRAMESIZE_X 23 -#define wxSYS_FRAMESIZE_Y 24 -#define wxSYS_SMALLICON_X 25 -#define wxSYS_SMALLICON_Y 26 -#define wxSYS_HSCROLL_Y 27 -#define wxSYS_VSCROLL_X 28 -#define wxSYS_VSCROLL_ARROW_X 29 -#define wxSYS_VSCROLL_ARROW_Y 30 -#define wxSYS_VTHUMB_Y 31 -#define wxSYS_CAPTION_Y 32 -#define wxSYS_MENU_Y 33 -#define wxSYS_NETWORK_PRESENT 34 -#define wxSYS_PENWINDOWS_PRESENT 35 -#define wxSYS_SHOW_SOUNDS 36 -#define wxSYS_SWAP_BUTTONS 37 - -class WXDLLEXPORT wxSystemSettings: public wxObject -{ -public: - inline wxSystemSettings() {} - - // Get a system colour - static wxColour GetSystemColour(int index); - - // Get a system font - static wxFont GetSystemFont(int index); - - // Get a system metric, e.g. scrollbar size - static int GetSystemMetric(int index); -}; - -#endif - // _WX_SETTINGS_H_ diff --git a/include/wx/stubs/setup.h b/include/wx/stubs/setup.h deleted file mode 100644 index 0456d8c1a6..0000000000 --- a/include/wx/stubs/setup.h +++ /dev/null @@ -1,140 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: setup.h -// Purpose: Configuration for the library -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_SETUP_H_ -#define _WX_SETUP_H_ - -/* - * General features - * - */ - -#define wxUSE_CONSTRAINTS 1 - // Use constraints mechanism -#define wxUSE_CONFIG 1 - // Use wxConfig, with CreateConfig in wxApp -#define _WX_GOODCOMPILER__ - // gcc can have problems, but Windows compilers - // are generally OK. -#define WXWIN_COMPATIBILITY 1 - // Compatibility with 1.66 API. - // Level 0: no backward compatibility, all new features - // Level 1: wxDC, OnSize (etc.) compatibility, but - // some new features such as event tables - -#define wxUSE_POSTSCRIPT 1 - // 0 for no PostScript device context -#define wxUSE_AFM_FOR_POSTSCRIPT 0 - // 1 to use font metric files in GetTextExtent -#define wxUSE_METAFILE 1 - // 0 for no Metafile and metafile device context -#define wxUSE_IPC 1 - // 0 for no interprocess comms -#define wxUSE_HELP 1 - // 0 for no help facility -#define wxUSE_RESOURCES 1 - // 0 for no wxGetResource/wxWriteResource -#define wxUSE_CLIPBOARD 1 - // 0 for no clipboard functions -#define wxUSE_SPLINES 1 - // 0 for no splines -#define wxUSE_XFIG_SPLINE_CODE 1 - // 1 for XFIG spline code, 0 for AIAI spline code. -// AIAI spline code is slower, but freer of copyright issues. - // 0 for no splines - -#define wxUSE_TOOLBAR 1 - // Use toolbars -#define wxUSE_DRAG_AND_DROP 1 - // 0 for no drag and drop - -#define wxUSE_WX_RESOURCES 1 - // Use .wxr resource mechanism (requires PrologIO library) - -#define wxUSE_DOC_VIEW_ARCHITECTURE 1 - // Set to 0 to disable document/view architecture -#define wxUSE_PRINTING_ARCHITECTURE 1 - // Set to 0 to disable print/preview architecture code -#define wxUSE_POSTSCRIPT_ARCHITECTURE_IN_MSW 1 - // Set to 0 to disable PostScript print/preview architecture code - // under Windows (just use Windows printing). -#define wxUSE_DYNAMIC_CLASSES 1 - // If 1, enables provision of run-time type information. - // NOW MANDATORY: don't change. -#define wxUSE_MEMORY_TRACING 1 - // If 1, enables debugging versions of wxObject::new and - // wxObject::delete *IF* WXDEBUG is also defined. - // WARNING: this code may not work with all architectures, especially - // if alignment is an issue. -#define wxUSE_DEBUG_CONTEXT 1 - // If 1, enables wxDebugContext, for - // writing error messages to file, etc. - // If WXDEBUG is not defined, will still use - // normal memory operators. - // It's recommended to set this to 1, - // since you may well need to output - // an error log in a production - // version (or non-debugging beta) -#define wxUSE_GLOBAL_MEMORY_OPERATORS 0 - // In debug mode, cause new and delete to be redefined globally. - // If this causes problems (e.g. link errors), set this to 0. - -#define wxUSE_DEBUG_NEW_ALWAYS 1 - // In debug mode, causes new to be defined to - // be WXDEBUG_NEW (see object.h). - // If this causes problems (e.g. link errors), set this to 0. - -#define REMOVE_UNUSED_ARG 1 - // Set this to 0 if your compiler can't cope - // with omission of prototype parameters. - -#define wxUSE_C_MAIN 0 - // Set to 1 to use main.c instead of main.cpp (UNIX only) - -#define wxUSE_ODBC 0 - // Define 1 to use ODBC classes - -#define wxUSE_IOSTREAMH 1 - // VC++ 4.2 and above allows and - // but you can't mix them. Set to 1 for , - // 0 for - -#define wxUSE_WXCONFIG 1 - // if enabled, compiles built-in OS independent wxConfig - // class and it's file (any platform) and registry (Win) - // based implementations -#define wxUSE_TIMEDATE 1 - // Use time and date -#define wxUSE_THREADS 0 - // Use threads - -#define wxUSE_ZLIB 1 - // Use zlib for compression in streams and PNG code -#define wxUSE_LIBPNG 1 - // Use PNG bitmap code -#define wxUSE_STD_IOSTREAM 1 - // Use standard C++ streams if 1. If 0, use wxWin - // streams implementation. - -#define wxUSE_SERIAL 0 - // Use serialization -/* - * Finer detail - * - */ - -#define wxUSE_APPLE_IEEE 1 - // if enabled, the float codec written by Apple - // will be used to write, in a portable way, - // float on the disk - -#endif - // _WX_SETUP_H_ diff --git a/include/wx/stubs/slider.h b/include/wx/stubs/slider.h deleted file mode 100644 index 239e914e5c..0000000000 --- a/include/wx/stubs/slider.h +++ /dev/null @@ -1,91 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: slider.h -// Purpose: wxSlider class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_SLIDER_H_ -#define _WX_SLIDER_H_ - -#ifdef __GNUG__ -#pragma interface "slider.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxSliderNameStr; - -// Slider -class WXDLLEXPORT wxSlider: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxSlider) - -public: - wxSlider(); - - inline wxSlider(wxWindow *parent, wxWindowID id, - int value, int minValue, int maxValue, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxSL_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxSliderNameStr) - { - Create(parent, id, value, minValue, maxValue, pos, size, style, validator, name); - } - - ~wxSlider(); - - bool Create(wxWindow *parent, wxWindowID id, - int value, int minValue, int maxValue, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxSL_HORIZONTAL, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxSliderNameStr); - - virtual int GetValue() const ; - virtual void SetValue(int); - void GetSize(int *x, int *y) const ; - void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - void GetPosition(int *x, int *y) const ; - bool Show(bool show); - - void SetRange(int minValue, int maxValue); - - inline int GetMin() const { return m_rangeMin; } - inline int GetMax() const { return m_rangeMax; } - - // For trackbars only - void SetTickFreq(int n, int pos); - inline int GetTickFreq() const { return m_tickFreq; } - void SetPageSize(int pageSize); - int GetPageSize() const ; - void ClearSel() ; - void ClearTicks() ; - void SetLineSize(int lineSize); - int GetLineSize() const ; - int GetSelEnd() const ; - int GetSelStart() const ; - void SetSelection(int minPos, int maxPos); - void SetThumbLength(int len) ; - int GetThumbLength() const ; - void SetTick(int tickPos) ; - - void Command(wxCommandEvent& event); - protected: - int m_rangeMin; - int m_rangeMax; - int m_pageSize; - int m_lineSize; - int m_tickFreq; -DECLARE_EVENT_TABLE() -}; - -#endif - // _WX_SLIDER_H_ diff --git a/include/wx/stubs/spinbutt.h b/include/wx/stubs/spinbutt.h deleted file mode 100644 index afdb978c3f..0000000000 --- a/include/wx/stubs/spinbutt.h +++ /dev/null @@ -1,97 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: spinbutt.h -// Purpose: wxSpinButton class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_SPINBUTT_H_ -#define _WX_SPINBUTT_H_ - -#ifdef __GNUG__ -#pragma interface "spinbutt.h" -#endif - -#include "wx/control.h" -#include "wx/event.h" - -/* - The wxSpinButton is like a small scrollbar than is often placed next - to a text control. - - wxSP_HORIZONTAL: horizontal spin button - wxSP_VERTICAL: vertical spin button (the default) - wxSP_ARROW_KEYS: arrow keys increment/decrement value - wxSP_WRAP: value wraps at either end - */ - -class WXDLLEXPORT wxSpinButton: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxSpinButton) - public: - /* - * Public interface - */ - - wxSpinButton(); - - inline wxSpinButton(wxWindow *parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxSP_VERTICAL, const wxString& name = "wxSpinButton") - { - Create(parent, id, pos, size, style, name); - } - ~wxSpinButton(); - - bool Create(wxWindow *parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxSP_VERTICAL, const wxString& name = "wxSpinButton"); - - - // Attributes - //////////////////////////////////////////////////////////////////////////// - - int GetValue() const ; - void SetValue(int val) ; - void SetRange(int minVal, int maxVal) ; - inline int GetMin() const { return m_min; } - inline int GetMax() const { return m_max; } - - // Operations - //////////////////////////////////////////////////////////////////////////// - - void Command(wxCommandEvent& event) { ProcessCommand(event); }; - -protected: - int m_min; - int m_max; -}; - -class WXDLLEXPORT wxSpinEvent: public wxScrollEvent -{ - DECLARE_DYNAMIC_CLASS(wxSpinEvent) - - public: - wxSpinEvent(wxEventType commandType = wxEVT_NULL, int id = 0); -}; - -typedef void (wxEvtHandler::*wxSpinEventFunction)(wxSpinEvent&); - -// Spin events - -#define EVT_SPIN_UP(id, func) { wxEVT_SCROLL_LINEUP, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func } -#define EVT_SPIN_DOWN(id, func) { wxEVT_SCROLL_LINEDOWN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func } - -#define EVT_SPIN(id, func) \ - { wxEVT_SCROLL_TOP, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func },\ - { wxEVT_SCROLL_BOTTOM, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func },\ - { wxEVT_SCROLL_LINEUP, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func },\ - { wxEVT_SCROLL_LINEDOWN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func },\ - { wxEVT_SCROLL_PAGEUP, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func },\ - { wxEVT_SCROLL_PAGEDOWN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func },\ - { wxEVT_SCROLL_THUMBTRACK, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxSpinEventFunction) & func }, - -#endif - // _WX_SPINBUTT_H_ diff --git a/include/wx/stubs/statbmp.h b/include/wx/stubs/statbmp.h deleted file mode 100644 index f371fddd2d..0000000000 --- a/include/wx/stubs/statbmp.h +++ /dev/null @@ -1,64 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: statbmp.h -// Purpose: wxStaticBitmap class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_STATBMP_H_ -#define _WX_STATBMP_H_ - -#ifdef __GNUG__ -#pragma interface "statbmp.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxStaticBitmapNameStr; - -class WXDLLEXPORT wxStaticBitmap: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxStaticBitmap) - public: - inline wxStaticBitmap() { } - - inline wxStaticBitmap(wxWindow *parent, wxWindowID id, - const wxBitmap& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = wxStaticBitmapNameStr) - { - Create(parent, id, label, pos, size, style, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - const wxBitmap& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = wxStaticBitmapNameStr); - - virtual void SetBitmap(const wxBitmap& bitmap); - - virtual void Command(wxCommandEvent& WXUNUSED(event)) {}; - virtual void ProcessCommand(wxCommandEvent& WXUNUSED(event)) {}; - - void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - - inline wxBitmap& GetBitmap() const { return (wxBitmap&) m_messageBitmap; } - - // overriden base class virtuals - virtual bool AcceptsFocus() const { return FALSE; } - - protected: - wxBitmap m_messageBitmap; - -}; - -#endif - // _WX_STATBMP_H_ diff --git a/include/wx/stubs/statbox.h b/include/wx/stubs/statbox.h deleted file mode 100644 index 1aa4a6f88a..0000000000 --- a/include/wx/stubs/statbox.h +++ /dev/null @@ -1,57 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: statbox.h -// Purpose: wxStaticBox class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_STATBOX_H_ -#define _WX_STATBOX_H_ - -#ifdef __GNUG__ -#pragma interface "statbox.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxStaticBoxNameStr; - -// Group box -class WXDLLEXPORT wxStaticBox: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxStaticBox) - - public: - inline wxStaticBox() {} - inline wxStaticBox(wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = wxStaticBoxNameStr) - { - Create(parent, id, label, pos, size, style, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = wxStaticBoxNameStr); - - virtual void Command(wxCommandEvent& WXUNUSED(event)) {}; - virtual void ProcessCommand(wxCommandEvent& WXUNUSED(event)) {}; - - void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - void SetLabel(const wxString& label); - -DECLARE_EVENT_TABLE() -}; - -#endif - // _WX_STATBOX_H_ diff --git a/include/wx/stubs/stattext.h b/include/wx/stubs/stattext.h deleted file mode 100644 index aa8eaf229e..0000000000 --- a/include/wx/stubs/stattext.h +++ /dev/null @@ -1,56 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: stattext.h -// Purpose: wxStaticText class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_STATTEXT_H_ -#define _WX_STATTEXT_H_ - -#ifdef __GNUG__ -#pragma interface "stattext.h" -#endif - -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxStaticTextNameStr; - -class WXDLLEXPORT wxStaticText: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxStaticText) - public: - inline wxStaticText() { } - - inline wxStaticText(wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = wxStaticTextNameStr) - { - Create(parent, id, label, pos, size, style, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = wxStaticTextNameStr); - - // accessors - void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - void SetLabel(const wxString&); - - // operations - virtual void Command(wxCommandEvent& WXUNUSED(event)) {}; - virtual void ProcessCommand(wxCommandEvent& WXUNUSED(event)) {}; -}; - -#endif - // _WX_STATTEXT_H_ diff --git a/include/wx/stubs/statusbr.h b/include/wx/stubs/statusbr.h deleted file mode 100644 index c5dcc0dc7d..0000000000 --- a/include/wx/stubs/statusbr.h +++ /dev/null @@ -1,54 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: statusbr.h -// Purpose: native implementation of wxStatusBar. Optional; can use generic -// version instead. -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_STATBAR_H_ -#define _WX_STATBAR_H_ - -#ifdef __GNUG__ -#pragma interface "statbar.h" -#endif - -#include "wx/generic/statusbr.h" - -class WXDLLEXPORT wxStatusBarXX : public wxStatusBar -{ - DECLARE_DYNAMIC_CLASS(wxStatusBarXX); - -public: - // ctors - wxStatusBarXX(); - wxStatusBarXX(wxWindow *parent, wxWindowID id = -1, long style = wxST_SIZEGRIP); - - // create status line - bool Create(wxWindow *parent, wxWindowID id = -1, long style = wxST_SIZEGRIP); - - // a status line can have several (<256) fields numbered from 0 - virtual void SetFieldsCount(int number = 1, const int widths[] = NULL); - - // each field of status line has its own text - virtual void SetStatusText(const wxString& text, int number = 0); - virtual wxString GetStatusText(int number = 0) const; - - // set status line fields' widths - virtual void SetStatusWidths(int n, const int widths_field[]); - - void OnSize(wxSizeEvent& event); - - DECLARE_EVENT_TABLE() - -protected: - void CopyFieldsWidth(const int widths[]); - void SetFieldsWidth(); -}; - -#endif - // _WX_STATBAR_H_ \ No newline at end of file diff --git a/include/wx/stubs/tabctrl.h b/include/wx/stubs/tabctrl.h deleted file mode 100644 index 80740019b4..0000000000 --- a/include/wx/stubs/tabctrl.h +++ /dev/null @@ -1,138 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: tabctrl.h -// Purpose: wxTabCtrl class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_TABCTRL_H_ -#define _WX_TABCTRL_H_ - -#ifdef __GNUG__ -#pragma interface "tabctrl.h" -#endif - -class wxImageList; - -/* - * Flags returned by HitTest - */ - -#define wxTAB_HITTEST_NOWHERE 1 -#define wxTAB_HITTEST_ONICON 2 -#define wxTAB_HITTEST_ONLABEL 4 -#define wxTAB_HITTEST_ONITEM 6 - -class WXDLLEXPORT wxTabCtrl: public wxControl -{ - DECLARE_DYNAMIC_CLASS(wxTabCtrl) - public: - /* - * Public interface - */ - - wxTabCtrl(); - - inline wxTabCtrl(wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = 0, const wxString& name = "tabCtrl") - { - Create(parent, id, pos, size, style, name); - } - ~wxTabCtrl(); - -// Accessors - - // Get the selection - int GetSelection() const; - - // Get the tab with the current keyboard focus - int GetCurFocus() const; - - // Get the associated image list - wxImageList* GetImageList() const; - - // Get the number of items - int GetItemCount() const; - - // Get the rect corresponding to the tab - bool GetItemRect(int item, wxRect& rect) const; - - // Get the number of rows - int GetRowCount() const; - - // Get the item text - wxString GetItemText(int item) const ; - - // Get the item image - int GetItemImage(int item) const; - - // Get the item data - void* GetItemData(int item) const; - - // Set the selection - int SetSelection(int item); - - // Set the image list - void SetImageList(wxImageList* imageList); - - // Set the text for an item - bool SetItemText(int item, const wxString& text); - - // Set the image for an item - bool SetItemImage(int item, int image); - - // Set the data for an item - bool SetItemData(int item, void* data); - - // Set the size for a fixed-width tab control - void SetItemSize(const wxSize& size); - - // Set the padding between tabs - void SetPadding(const wxSize& padding); - -// Operations - - bool Create(wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = 0, const wxString& name = "tabCtrl"); - - // Delete all items - bool DeleteAllItems(); - - // Delete an item - bool DeleteItem(int item); - - // Hit test - int HitTest(const wxPoint& pt, long& flags); - - // Insert an item - bool InsertItem(int item, const wxString& text, int imageId = -1, void* data = NULL); - - void Command(wxCommandEvent& event); - -protected: - wxImageList* m_imageList; - -DECLARE_EVENT_TABLE() -}; - -class WXDLLEXPORT wxTabEvent: public wxCommandEvent -{ - DECLARE_DYNAMIC_CLASS(wxTabEvent) - - public: - wxTabEvent(wxEventType commandType = wxEVT_NULL, int id = 0); -}; - -typedef void (wxEvtHandler::*wxTabEventFunction)(wxTabEvent&); - -#define EVT_TAB_SEL_CHANGED(id, fn) { wxEVT_COMMAND_TAB_SEL_CHANGED, \ - id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTabEventFunction) & fn, NULL }, -#define EVT_TAB_SEL_CHANGING(id, fn) { wxEVT_COMMAND_TAB_SEL_CHANGING, \ - id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTabEventFunction) & fn, NULL }, - -#endif - // _WX_TABCTRL_H_ diff --git a/include/wx/stubs/taskbar.h b/include/wx/stubs/taskbar.h deleted file mode 100644 index 7f4a36b8b4..0000000000 --- a/include/wx/stubs/taskbar.h +++ /dev/null @@ -1,49 +0,0 @@ -///////////////////////////////////////////////////////////////////////// -// File: taskbar.h -// Purpose: Defines wxTaskBarIcon class for manipulating icons on the -// task bar. Optional. -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////// - -#ifndef _WX_TASKBAR_H_ -#define _WX_TASKBAR_H_ - -#ifdef __GNUG__ -#pragma interface "taskbar.h" -#endif - -#include -#include - -class wxTaskBarIcon: public wxObject -{ -public: - wxTaskBarIcon(); - virtual ~wxTaskBarIcon(); - -// Accessors - -// Operations - bool SetIcon(const wxIcon& icon, const wxString& tooltip = ""); - bool RemoveIcon(); - -// Overridables - virtual void OnMouseMove(); - virtual void OnLButtonDown(); - virtual void OnLButtonUp(); - virtual void OnRButtonDown(); - virtual void OnRButtonUp(); - virtual void OnLButtonDClick(); - virtual void OnRButtonDClick(); - -// Data members -protected: -}; - -#endif - // _WX_TASKBAR_H_ diff --git a/include/wx/stubs/textctrl.h b/include/wx/stubs/textctrl.h deleted file mode 100644 index 253491eaa0..0000000000 --- a/include/wx/stubs/textctrl.h +++ /dev/null @@ -1,139 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: textctrl.h -// Purpose: wxTextCtrl class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_TEXTCTRL_H_ -#define _WX_TEXTCTRL_H_ - -#ifdef __GNUG__ -#pragma interface "textctrl.h" -#endif - -#include "wx/control.h" - -#if wxUSE_IOSTREAMH -#include -#else -#include -#endif - -WXDLLEXPORT_DATA(extern const char*) wxTextCtrlNameStr; -WXDLLEXPORT_DATA(extern const char*) wxEmptyString; - -// Single-line text item -class WXDLLEXPORT wxTextCtrl: public wxControl - -// TODO Some platforms/compilers don't like inheritance from streambuf. - -#if (defined(__BORLANDC__) && !defined(__WIN32__)) || defined(__MWERKS__) -#define NO_TEXT_WINDOW_STREAM -#endif - -#ifndef NO_TEXT_WINDOW_STREAM -, public streambuf -#endif - -{ - DECLARE_DYNAMIC_CLASS(wxTextCtrl) - -public: - // creation - // -------- - wxTextCtrl(); - inline wxTextCtrl(wxWindow *parent, wxWindowID id, - const wxString& value = wxEmptyString, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxTextCtrlNameStr) -#ifndef NO_TEXT_WINDOW_STREAM - :streambuf() -#endif - { - Create(parent, id, value, pos, size, style, validator, name); - } - - bool Create(wxWindow *parent, wxWindowID id, - const wxString& value = wxEmptyString, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxTextCtrlNameStr); - - // accessors - // --------- - virtual wxString GetValue() const ; - virtual void SetValue(const wxString& value); - - virtual int GetLineLength(long lineNo) const; - virtual wxString GetLineText(long lineNo) const; - virtual int GetNumberOfLines() const; - - // operations - // ---------- - virtual void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - - // Clipboard operations - virtual void Copy(); - virtual void Cut(); - virtual void Paste(); - - virtual void SetInsertionPoint(long pos); - virtual void SetInsertionPointEnd(); - virtual long GetInsertionPoint() const ; - virtual long GetLastPosition() const ; - virtual void Replace(long from, long to, const wxString& value); - virtual void Remove(long from, long to); - virtual void SetSelection(long from, long to); - virtual void SetEditable(bool editable); - - // streambuf implementation -#ifndef NO_TEXT_WINDOW_STREAM - int overflow(int i); - int sync(); - int underflow(); -#endif - - wxTextCtrl& operator<<(const wxString& s); - wxTextCtrl& operator<<(int i); - wxTextCtrl& operator<<(long i); - wxTextCtrl& operator<<(float f); - wxTextCtrl& operator<<(double d); - wxTextCtrl& operator<<(const char c); - - virtual bool LoadFile(const wxString& file); - virtual bool SaveFile(const wxString& file); - virtual void WriteText(const wxString& text); - virtual void DiscardEdits(); - virtual bool IsModified() const; - - virtual long XYToPosition(long x, long y) const ; - virtual void PositionToXY(long pos, long *x, long *y) const ; - virtual void ShowPosition(long pos); - virtual void Clear(); - - // callbacks - // --------- - void OnDropFiles(wxDropFilesEvent& event); -// void OnChar(wxKeyEvent& event); // Process 'enter' if required -// void OnEraseBackground(wxEraseEvent& event); - - // Implementation - // -------------- - virtual void Command(wxCommandEvent& event); - -protected: - wxString m_fileName; - - DECLARE_EVENT_TABLE() -}; - -#endif - // _WX_TEXTCTRL_H_ diff --git a/include/wx/stubs/timer.h b/include/wx/stubs/timer.h deleted file mode 100644 index 953da997c6..0000000000 --- a/include/wx/stubs/timer.h +++ /dev/null @@ -1,64 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: timer.h -// Purpose: wxTimer class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_TIMER_H_ -#define _WX_TIMER_H_ - -#ifdef __GNUG__ -#pragma interface "timer.h" -#endif - -#include "wx/object.h" - -class WXDLLEXPORT wxTimer: public wxObject -{ -public: - wxTimer(); - ~wxTimer(); - - virtual bool Start(int milliseconds = -1, - bool one_shot = FALSE); // Start timer - virtual void Stop(); // Stop timer - - virtual void Notify() = 0; // Override this member - - // Returns the current interval time (0 if stop) - int Interval() const { return m_milli; }; - bool OneShot() const { return m_oneShot; } - -protected: - bool m_oneShot ; - int m_milli ; - int m_lastMilli ; - - long m_id; - -private: - DECLARE_ABSTRACT_CLASS(wxTimer) -}; - -/* Note: these are implemented in common/timercmn.cpp, so need to implement them separately. - * But you may need to modify timercmn.cpp. - */ - -// Timer functions (milliseconds) -void WXDLLEXPORT wxStartTimer(); -// Gets time since last wxStartTimer or wxGetElapsedTime -long WXDLLEXPORT wxGetElapsedTime(bool resetTimer = TRUE); - -// EXPERIMENTAL: comment this out if it doesn't compile. -bool WXDLLEXPORT wxGetLocalTime(long *timeZone, int *dstObserved); - -// Get number of seconds since 00:00:00 GMT, Jan 1st 1970. -long WXDLLEXPORT wxGetCurrentTime(); - -#endif - // _WX_TIMER_H_ diff --git a/include/wx/stubs/toolbar.h b/include/wx/stubs/toolbar.h deleted file mode 100644 index e42c5827ef..0000000000 --- a/include/wx/stubs/toolbar.h +++ /dev/null @@ -1,77 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: toolbar.h -// Purpose: wxToolBar class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_TOOLBAR_H_ -#define _WX_TOOLBAR_H_ - -#ifdef __GNUG__ -#pragma interface "toolbar.h" -#endif - -#include "wx/tbarbase.h" - -WXDLLEXPORT_DATA(extern const char*) wxToolBarNameStr; - -class WXDLLEXPORT wxToolBar: public wxToolBarBase -{ - DECLARE_DYNAMIC_CLASS(wxToolBar) - public: - /* - * Public interface - */ - - wxToolBar(); - - inline wxToolBar(wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxNO_BORDER|wxTB_HORIZONTAL, - const wxString& name = wxToolBarNameStr) - { - Create(parent, id, pos, size, style, name); - } - ~wxToolBar(); - - bool Create(wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxNO_BORDER|wxTB_HORIZONTAL, - const wxString& name = wxToolBarNameStr); - - // If pushedBitmap is NULL, a reversed version of bitmap is - // created and used as the pushed/toggled image. - // If toggle is TRUE, the button toggles between the two states. - wxToolBarTool *AddTool(int toolIndex, const wxBitmap& bitmap, const wxBitmap& pushedBitmap = wxNullBitmap, - bool toggle = FALSE, long xPos = -1, long yPos = -1, wxObject *clientData = NULL, - const wxString& helpString1 = "", const wxString& helpString2 = ""); - - // Set default bitmap size - void SetToolBitmapSize(const wxSize& size); - void EnableTool(int toolIndex, bool enable); // additional drawing on enabling - void ToggleTool(int toolIndex, bool toggle); // toggle is TRUE if toggled on - void ClearTools(); - - // The button size is bigger than the bitmap size - wxSize GetToolSize() const; - - wxSize GetMaxSize() const; - - // Add all the buttons - virtual bool CreateTools(); - virtual void Layout() {} - - // The post-tool-addition call. TODO: do here whatever's - // necessary for completing the toolbar construction. - bool Realize() { return CreateTools(); }; - -protected: - -DECLARE_EVENT_TABLE() -}; - -#endif - // _WX_TOOLBAR_H_ diff --git a/include/wx/stubs/treectrl.h b/include/wx/stubs/treectrl.h deleted file mode 100644 index cb307ec0e9..0000000000 --- a/include/wx/stubs/treectrl.h +++ /dev/null @@ -1,295 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: treectrl.h -// Purpose: wxTreeCtrl class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_TREECTRL_H_ -#define _WX_TREECTRL_H_ - -#ifdef __GNUG__ -#pragma interface "treectrl.h" -#endif - -#include "wx/control.h" -#include "wx/event.h" -#include "wx/imaglist.h" - -#define wxTREE_MASK_HANDLE 0x0001 -#define wxTREE_MASK_STATE 0x0002 -#define wxTREE_MASK_TEXT 0x0004 -#define wxTREE_MASK_IMAGE 0x0008 -#define wxTREE_MASK_SELECTED_IMAGE 0x0010 -#define wxTREE_MASK_CHILDREN 0x0020 -#define wxTREE_MASK_DATA 0x0040 - -#define wxTREE_STATE_BOLD 0x0001 -#define wxTREE_STATE_DROPHILITED 0x0002 -#define wxTREE_STATE_EXPANDED 0x0004 -#define wxTREE_STATE_EXPANDEDONCE 0x0008 -#define wxTREE_STATE_FOCUSED 0x0010 -#define wxTREE_STATE_SELECTED 0x0020 -#define wxTREE_STATE_CUT 0x0040 - -#define wxTREE_HITTEST_ABOVE 0x0001 // Above the client area. -#define wxTREE_HITTEST_BELOW 0x0002 // Below the client area. -#define wxTREE_HITTEST_NOWHERE 0x0004 // In the client area but below the last item. -#define wxTREE_HITTEST_ONITEMBUTTON 0x0010 // On the button associated with an item. -#define wxTREE_HITTEST_ONITEMICON 0x0020 // On the bitmap associated with an item. -#define wxTREE_HITTEST_ONITEMINDENT 0x0040 // In the indentation associated with an item. -#define wxTREE_HITTEST_ONITEMLABEL 0x0080 // On the label (string) associated with an item. -#define wxTREE_HITTEST_ONITEMRIGHT 0x0100 // In the area to the right of an item. -#define wxTREE_HITTEST_ONITEMSTATEICON 0x0200 // On the state icon for a tree view item that is in a user-defined state. -#define wxTREE_HITTEST_TOLEFT 0x0400 // To the right of the client area. -#define wxTREE_HITTEST_TORIGHT 0x0800 // To the left of the client area. - -#define wxTREE_HITTEST_ONITEM (wxTREE_HITTEST_ONITEMICON | wxTREE_HITTEST_ONITEMLABEL | wxTREE_HITTEST_ONITEMSTATEICON) - -// Flags for GetNextItem -enum { - wxTREE_NEXT_CARET, // Retrieves the currently selected item. - wxTREE_NEXT_CHILD, // Retrieves the first child item. The hItem parameter must be NULL. - wxTREE_NEXT_DROPHILITE, // Retrieves the item that is the target of a drag-and-drop operation. - wxTREE_NEXT_FIRSTVISIBLE, // Retrieves the first visible item. - wxTREE_NEXT_NEXT, // Retrieves the next sibling item. - wxTREE_NEXT_NEXTVISIBLE, // Retrieves the next visible item that follows the specified item. - wxTREE_NEXT_PARENT, // Retrieves the parent of the specified item. - wxTREE_NEXT_PREVIOUS, // Retrieves the previous sibling item. - wxTREE_NEXT_PREVIOUSVISIBLE, // Retrieves the first visible item that precedes the specified item. - wxTREE_NEXT_ROOT // Retrieves the first child item of the root item of which the specified item is a part. -}; - -// Flags for ExpandItem -enum { - wxTREE_EXPAND_EXPAND, - wxTREE_EXPAND_COLLAPSE, - wxTREE_EXPAND_COLLAPSE_RESET, - wxTREE_EXPAND_TOGGLE -}; - -// Flags for InsertItem -enum { - wxTREE_INSERT_LAST = -1, - wxTREE_INSERT_FIRST = -2, - wxTREE_INSERT_SORT = -3 -}; - -class WXDLLEXPORT wxTreeItem: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxTreeItem) -public: - long m_mask; - long m_itemId; - long m_state; - long m_stateMask; - wxString m_text; - int m_image; - int m_selectedImage; - int m_children; - long m_data; - - wxTreeItem(); - -// Accessors - inline long GetMask() const { return m_mask; } - inline long GetItemId() const { return m_itemId; } - inline long GetState() const { return m_state; } - inline long GetStateMask() const { return m_stateMask; } - inline wxString GetText() const { return m_text; } - inline int GetImage() const { return m_image; } - inline int GetSelectedImage() const { return m_selectedImage; } - inline int GetChildren() const { return m_children; } - inline long GetData() const { return m_data; } - - inline void SetMask(long mask) { m_mask = mask; } - inline void SetItemId(long id) { m_itemId = m_itemId = id; } - inline void SetState(long state) { m_state = state; } - inline void SetStateMask(long stateMask) { m_stateMask = stateMask; } - inline void GetText(const wxString& text) { m_text = text; } - inline void SetImage(int image) { m_image = image; } - inline void GetSelectedImage(int selImage) { m_selectedImage = selImage; } - inline void SetChildren(int children) { m_children = children; } - inline void SetData(long data) { m_data = data; } -}; - -class WXDLLEXPORT wxTreeCtrl: public wxControl -{ -public: - /* - * Public interface - */ - - // creation - // -------- - wxTreeCtrl(); - - inline wxTreeCtrl(wxWindow *parent, wxWindowID id = -1, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxTR_HAS_BUTTONS|wxTR_LINES_AT_ROOT, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = "wxTreeCtrl") - { - Create(parent, id, pos, size, style, validator, name); - } - ~wxTreeCtrl(); - - bool Create(wxWindow *parent, wxWindowID id = -1, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxTR_HAS_BUTTONS|wxTR_LINES_AT_ROOT, - const wxValidator& validator = wxDefaultValidator, - const wxString& name = "wxTreeCtrl"); - - // accessors - // --------- - // - int GetCount() const; - - // indent - int GetIndent() const; - void SetIndent(int indent); - // image list - wxImageList *GetImageList(int which = wxIMAGE_LIST_NORMAL) const; - void SetImageList(wxImageList *imageList, int which = wxIMAGE_LIST_NORMAL); - - // navigation inside the tree - long GetNextItem(long item, int code) const; - bool ItemHasChildren(long item) const; - long GetChild(long item) const; - long GetParent(long item) const; - long GetFirstVisibleItem() const; - long GetNextVisibleItem(long item) const; - long GetSelection() const; - long GetRootItem() const; - - // generic function for (g|s)etting item attributes - bool GetItem(wxTreeItem& info) const; - bool SetItem(wxTreeItem& info); - // item state - int GetItemState(long item, long stateMask) const; - bool SetItemState(long item, long state, long stateMask); - // item image - bool SetItemImage(long item, int image, int selImage); - // item text - wxString GetItemText(long item) const; - void SetItemText(long item, const wxString& str); - // custom data associated with the item - long GetItemData(long item) const; - bool SetItemData(long item, long data); - // convenience function - bool IsItemExpanded(long item) - { - return (GetItemState(item, wxTREE_STATE_EXPANDED) & - wxTREE_STATE_EXPANDED) != 0; - } - - // bounding rect - bool GetItemRect(long item, wxRect& rect, bool textOnly = FALSE) const; - // - wxTextCtrl* GetEditControl() const; - - // operations - // ---------- - // adding/deleting items - bool DeleteItem(long item); - long InsertItem(long parent, wxTreeItem& info, - long insertAfter = wxTREE_INSERT_LAST); - // If image > -1 and selImage == -1, the same image is used for - // both selected and unselected items. - long InsertItem(long parent, const wxString& label, - int image = -1, int selImage = -1, - long insertAfter = wxTREE_INSERT_LAST); - - // changing item state - bool ExpandItem(long item) { return ExpandItem(item, wxTREE_EXPAND_EXPAND); } - bool CollapseItem(long item) { return ExpandItem(item, wxTREE_EXPAND_COLLAPSE); } - bool ToggleItem(long item) { return ExpandItem(item, wxTREE_EXPAND_TOGGLE); } - // common interface for {Expand|Collapse|Toggle}Item - bool ExpandItem(long item, int action); - - // - bool SelectItem(long item); - bool ScrollTo(long item); - bool DeleteAllItems(); - - // Edit the label (tree must have the focus) - wxTextCtrl* EditLabel(long item, wxClassInfo* textControlClass = CLASSINFO(wxTextCtrl)); - - // End label editing, optionally cancelling the edit - bool EndEditLabel(bool cancel); - - long HitTest(const wxPoint& point, int& flags); - // wxImageList *CreateDragImage(long item); - bool SortChildren(long item); - bool EnsureVisible(long item); - - void Command(wxCommandEvent& event) { ProcessCommand(event); }; - -protected: - wxTextCtrl* m_textCtrl; - wxImageList* m_imageListNormal; - wxImageList* m_imageListState; - - DECLARE_DYNAMIC_CLASS(wxTreeCtrl) -}; - -/* - wxEVT_COMMAND_TREE_BEGIN_DRAG, - wxEVT_COMMAND_TREE_BEGIN_RDRAG, - wxEVT_COMMAND_TREE_BEGIN_LABEL_EDIT, - wxEVT_COMMAND_TREE_END_LABEL_EDIT, - wxEVT_COMMAND_TREE_DELETE_ITEM, - wxEVT_COMMAND_TREE_GET_INFO, - wxEVT_COMMAND_TREE_SET_INFO, - wxEVT_COMMAND_TREE_ITEM_EXPANDED, - wxEVT_COMMAND_TREE_ITEM_EXPANDING, - wxEVT_COMMAND_TREE_ITEM_COLLAPSED, - wxEVT_COMMAND_TREE_ITEM_COLLAPSING, - wxEVT_COMMAND_TREE_SEL_CHANGED, - wxEVT_COMMAND_TREE_SEL_CHANGING, - wxEVT_COMMAND_TREE_KEY_DOWN -*/ - -class WXDLLEXPORT wxTreeEvent: public wxCommandEvent -{ - DECLARE_DYNAMIC_CLASS(wxTreeEvent) - - public: - wxTreeEvent(wxEventType commandType = wxEVT_NULL, int id = 0); - - int m_code; - wxTreeItem m_item; - long m_oldItem; - wxPoint m_pointDrag; - - inline long GetOldItem() const { return m_oldItem; } - inline wxTreeItem& GetItem() const { return (wxTreeItem&) m_item; } - inline wxPoint GetPoint() const { return m_pointDrag; } - inline int GetCode() const { return m_code; } -}; - -typedef void (wxEvtHandler::*wxTreeEventFunction)(wxTreeEvent&); - -#define EVT_TREE_BEGIN_DRAG(id, fn) { wxEVT_COMMAND_TREE_BEGIN_DRAG, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TREE_BEGIN_RDRAG(id, fn) { wxEVT_COMMAND_TREE_BEGIN_RDRAG, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TREE_BEGIN_LABEL_EDIT(id, fn) { wxEVT_COMMAND_TREE_BEGIN_LABEL_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TREE_END_LABEL_EDIT(id, fn) { wxEVT_COMMAND_TREE_END_LABEL_EDIT, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TREE_DELETE_ITEM(id, fn) { wxEVT_COMMAND_TREE_DELETE_ITEM, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TREE_GET_INFO(id, fn) { wxEVT_COMMAND_TREE_GET_INFO, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TREE_SET_INFO(id, fn) { wxEVT_COMMAND_TREE_SET_INFO, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TREE_ITEM_EXPANDED(id, fn) { wxEVT_COMMAND_TREE_ITEM_EXPANDED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TREE_ITEM_EXPANDING(id, fn) { wxEVT_COMMAND_TREE_ITEM_EXPANDING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TREE_ITEM_COLLAPSED(id, fn) { wxEVT_COMMAND_TREE_ITEM_COLLAPSED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TREE_ITEM_COLLAPSING(id, fn) { wxEVT_COMMAND_TREE_ITEM_COLLAPSING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TREE_SEL_CHANGED(id, fn) { wxEVT_COMMAND_TREE_SEL_CHANGED, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TREE_SEL_CHANGING(id, fn) { wxEVT_COMMAND_TREE_SEL_CHANGING, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, -#define EVT_TREE_KEY_DOWN(id, fn) { wxEVT_COMMAND_TREE_KEY_DOWN, id, -1, (wxObjectEventFunction) (wxEventFunction) (wxTreeEventFunction) & fn, (wxObject *) NULL }, - -#endif - // _WX_TREECTRL_H_ diff --git a/include/wx/stubs/wave.h b/include/wx/stubs/wave.h deleted file mode 100644 index e55bd5aa5f..0000000000 --- a/include/wx/stubs/wave.h +++ /dev/null @@ -1,44 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: wave.h -// Purpose: wxWave class (loads and plays short Windows .wav files). -// Optional on non-Windows platforms. -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_WAVE_H_ -#define _WX_WAVE_H_ - -#ifdef __GNUG__ -#pragma interface "wave.h" -#endif - -#include "wx/object.h" - -class wxWave : public wxObject -{ -public: - wxWave(); - wxWave(const wxString& fileName, bool isResource = FALSE); - ~wxWave(); - -public: - bool Create(const wxString& fileName, bool isResource = FALSE); - bool IsOk() const { return (m_waveData ? TRUE : FALSE); }; - bool Play(bool async = TRUE, bool looped = FALSE) const; - -protected: - bool Free(); - -private: - char* m_waveData; - int m_waveLength; - bool m_isResource; -}; - -#endif - // _WX_WAVE_H_ diff --git a/include/wx/stubs/window.h b/include/wx/stubs/window.h deleted file mode 100644 index bf0b03db9e..0000000000 --- a/include/wx/stubs/window.h +++ /dev/null @@ -1,571 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: window.h -// Purpose: wxWindow class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_WINDOW_H_ -#define _WX_WINDOW_H_ - -#ifdef __GNUG__ -#pragma interface "window.h" -#endif - -#include "wx/gdicmn.h" -#include "wx/icon.h" -#include "wx/cursor.h" -#include "wx/pen.h" -#include "wx/font.h" -#include "wx/validate.h" -#include "wx/event.h" -#include "wx/string.h" -#include "wx/list.h" -#include "wx/region.h" -#include "wx/accel.h" - -#define wxKEY_SHIFT 1 -#define wxKEY_CTRL 2 - -/* - * Base class for frame, panel, canvas, panel items, dialog box. - * - */ - -/* - * Event handler: windows have themselves as their event handlers - * by default, but their event handlers could be set to another - * object entirely. This separation can reduce the amount of - * derivation required, and allow alteration of a window's functionality - * (e.g. by a resource editor that temporarily switches event handlers). - */ - -class WXDLLEXPORT wxWindow; -class WXDLLEXPORT wxEvent; -class WXDLLEXPORT wxCommandEvent; -class WXDLLEXPORT wxKeyEvent; -class WXDLLEXPORT wxControl; -class WXDLLEXPORT wxCursor; -class WXDLLEXPORT wxColourMap; -class WXDLLEXPORT wxFont; -class WXDLLEXPORT wxMenu; -class WXDLLEXPORT wxRect; -class WXDLLEXPORT wxBitmap; -class WXDLLEXPORT wxSizer; -class WXDLLEXPORT wxList; -class WXDLLEXPORT wxLayoutConstraints; -class WXDLLEXPORT wxMouseEvent; -class WXDLLEXPORT wxButton; -class WXDLLEXPORT wxColour; -class WXDLLEXPORT wxBrush; -class WXDLLEXPORT wxPen; -class WXDLLEXPORT wxIcon; -class WXDLLEXPORT wxDC; -class WXDLLEXPORT wxValidator; - -#if wxUSE_DRAG_AND_DROP -class WXDLLEXPORT wxDropTarget; -#endif - -#if wxUSE_WX_RESOURCES -class WXDLLEXPORT wxResourceTable; -class WXDLLEXPORT wxItemResource; -#endif - -WXDLLEXPORT_DATA(extern const char*) wxPanelNameStr; - -WXDLLEXPORT_DATA(extern const wxSize) wxDefaultSize; -WXDLLEXPORT_DATA(extern const wxPoint) wxDefaultPosition; - -//----------------------------------------------------------------------------- -// wxClientData -//----------------------------------------------------------------------------- - -class wxClientData -{ -public: - wxClientData() { } - virtual ~wxClientData() { } -}; - -//----------------------------------------------------------------------------- -// wxStringClientData -//----------------------------------------------------------------------------- - -class wxStringClientData: public wxClientData -{ -public: - wxStringClientData() { } - wxStringClientData( wxString &data ) { m_data = data; } - void SetData( wxString &data ) { m_data = data; } - wxString GetData() const { return m_data; } - -private: - wxString m_data; -}; - -class WXDLLEXPORT wxWindow: public wxEvtHandler -{ - DECLARE_ABSTRACT_CLASS(wxWindow) - - friend class wxDC; - friend class wxPaintDC; - -public: - wxWindow(); - inline wxWindow(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = wxPanelNameStr) - { - m_children = new wxList; - Create(parent, id, pos, size, style, name); - } - - virtual ~wxWindow(); - - bool Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = wxPanelNameStr); - - // Fit the window around the items - virtual void Fit(); - - // Show or hide the window - virtual bool Show(bool show); - - // Is the window shown? - virtual bool IsShown() const; - - // Raise the window to the top of the Z order - virtual void Raise(); - - // Lower the window to the bottom of the Z order - virtual void Lower(); - - // Is the window enabled? - virtual bool IsEnabled() const; - - // For compatibility - inline bool Enabled() const { return IsEnabled(); } - - // Dialog support: override these and call - // base class members to add functionality - // that can't be done using validators. - - // Transfer values to controls. If returns FALSE, - // it's an application error (pops up a dialog) - virtual bool TransferDataToWindow(); - - // Transfer values from controls. If returns FALSE, - // transfer failed: don't quit - virtual bool TransferDataFromWindow(); - - // Validate controls. If returns FALSE, - // validation failed: don't quit - virtual bool Validate(); - - // Return code for dialogs - inline void SetReturnCode(int retCode); - inline int GetReturnCode(); - - // Set the cursor - virtual void SetCursor(const wxCursor& cursor); - inline virtual wxCursor *GetCursor() const { return (wxCursor *)& m_windowCursor; }; - - // Get the window with the focus - static wxWindow *FindFocus(); - - // Get character size - virtual int GetCharHeight() const; - virtual int GetCharWidth() const; - - // Get overall window size - virtual void GetSize(int *width, int *height) const; - - // Get window position, relative to parent (or screen if no parent) - virtual void GetPosition(int *x, int *y) const; - - // Get client (application-useable) size - virtual void GetClientSize(int *width, int *height) const; - - // Set overall size and position - virtual void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); - inline virtual void SetSize(int width, int height) { SetSize(-1, -1, width, height, wxSIZE_USE_EXISTING); } - inline virtual void Move(int x, int y) { SetSize(x, y, -1, -1, wxSIZE_USE_EXISTING); } - - // Set client size - virtual void SetClientSize(int width, int size); - - // Convert client to screen coordinates - virtual void ClientToScreen(int *x, int *y) const; - - // Convert screen to client coordinates - virtual void ScreenToClient(int *x, int *y) const; - - // Set the focus to this window - virtual void SetFocus(); - - // Capture/release mouse - virtual void CaptureMouse(); - virtual void ReleaseMouse(); - - // Enable or disable the window - virtual void Enable(bool enable); - -#if wxUSE_DRAG_AND_DROP - // Associate a drop target with this window (if the window already had a drop - // target, it's deleted!) and return the current drop target (may be NULL). - void SetDropTarget(wxDropTarget *pDropTarget); - wxDropTarget *GetDropTarget() const { return m_pDropTarget; } -#endif - - // Accept files for dragging - virtual void DragAcceptFiles(bool accept); - - // Update region access - virtual wxRegion GetUpdateRegion() const; - virtual bool IsExposed(int x, int y, int w, int h) const; - virtual bool IsExposed(const wxPoint& pt) const; - virtual bool IsExposed(const wxRect& rect) const; - - // Set/get the window title - virtual inline void SetTitle(const wxString& WXUNUSED(title)) {}; - inline virtual wxString GetTitle() const { return wxString(""); }; - // Most windows have the concept of a label; for frames, this is the - // title; for items, this is the label or button text. - inline virtual wxString GetLabel() const { return GetTitle(); } - - // Set/get the window name (used for resource setting in X) - inline virtual wxString GetName() const; - inline virtual void SetName(const wxString& name); - - // Centre the window - virtual void Centre(int direction) ; - inline void Center(int direction = wxHORIZONTAL) { Centre(direction); } - - // Popup a menu - virtual bool PopupMenu(wxMenu *menu, int x, int y); - - // Send the window a refresh event - virtual void Refresh(bool eraseBack = TRUE, const wxRect *rect = NULL); - - // New functions that will replace the above. - virtual void SetScrollbar(int orient, int pos, int thumbVisible, - int range, bool refresh = TRUE); - - virtual void SetScrollPos(int orient, int pos, bool refresh = TRUE); - virtual int GetScrollPos(int orient) const; - virtual int GetScrollRange(int orient) const; - virtual int GetScrollThumb(int orient) const; - - virtual void ScrollWindow(int dx, int dy, const wxRect *rect = NULL); - - // Caret manipulation - virtual void CreateCaret(int w, int h); - virtual void CreateCaret(const wxBitmap *bitmap); - virtual void DestroyCaret(); - virtual void ShowCaret(bool show); - virtual void SetCaretPos(int x, int y); - virtual void GetCaretPos(int *x, int *y) const; - - // Tell window how much it can be sized - virtual void SetSizeHints(int minW = -1, int minH = -1, int maxW = -1, int maxH = -1, int incW = -1, int incH = -1); - - // Set/get the window's identifier - inline int GetId() const; - inline void SetId(int id); - - virtual void SetAcceleratorTable(const wxAcceleratorTable& accel); - inline virtual wxAcceleratorTable& GetAcceleratorTable() const { return (wxAcceleratorTable&) m_acceleratorTable; } - - // Make the window modal (all other windows unresponsive) - virtual void MakeModal(bool modal); - - // Get the private handle (platform-dependent) - inline void *GetHandle() const; - - // Set/get the window's relatives - inline wxWindow *GetParent() const; - inline void SetParent(wxWindow *p) ; - inline wxWindow *GetGrandParent() const; - inline wxList& GetChildren() const; - - // Set/get the window's font - virtual void SetFont(const wxFont& f); - inline virtual wxFont& GetFont() const; - - // Set/get the window's validator - void SetValidator(const wxValidator& validator); - inline wxValidator *GetValidator() const; - - // Set/get the window's style - inline void SetWindowStyleFlag(long flag); - inline long GetWindowStyleFlag() const; - - // Handle a control command - virtual void OnCommand(wxWindow& win, wxCommandEvent& event); - - // Set/get event handler - inline void SetEventHandler(wxEvtHandler *handler); - inline wxEvtHandler *GetEventHandler() const; - - // Push/pop event handler (i.e. allow a chain of event handlers - // be searched) - void PushEventHandler(wxEvtHandler *handler) ; - wxEvtHandler *PopEventHandler(bool deleteHandler = FALSE) ; - - // Close the window by calling OnClose, posting a deletion - virtual bool Close(bool force = FALSE); - - // Destroy the window (delayed, if a managed window) - virtual bool Destroy() ; - - // Mode for telling default OnSize members to - // call Layout(), if not using Sizers, just top-down constraints - inline void SetAutoLayout(bool a); - inline bool GetAutoLayout() const; - - // Set/get constraints - inline wxLayoutConstraints *GetConstraints() const; - void SetConstraints(wxLayoutConstraints *c); - - // Set/get window background colour - inline virtual void SetBackgroundColour(const wxColour& col); - inline virtual wxColour GetBackgroundColour() const; - - // Set/get window foreground colour - inline virtual void SetForegroundColour(const wxColour& col); - inline virtual wxColour GetForegroundColour() const; - - // Get the default button, if there is one - inline virtual wxButton *GetDefaultItem() const; - inline virtual void SetDefaultItem(wxButton *but); - - // Override to define new behaviour for default action (e.g. double clicking - // on a listbox) - virtual void OnDefaultAction(wxControl *initiatingItem); - - // Resource loading -#if wxUSE_WX_RESOURCES - virtual bool LoadFromResource(wxWindow *parent, const wxString& resourceName, const wxResourceTable *table = NULL); - virtual wxControl *CreateItem(const wxItemResource* childResource, const wxItemResource* parentResource, - const wxResourceTable *table = (const wxResourceTable *) NULL); -#endif - - virtual void GetTextExtent(const wxString& string, int *x, int *y, - int *descent = NULL, - int *externalLeading = NULL, - const wxFont *theFont = NULL, bool use16 = FALSE) const; - - // Is the window retained? - inline bool IsRetained() const; - - // Warp the pointer the given position - virtual void WarpPointer(int x_pos, int y_pos) ; - - // Clear the window - virtual void Clear(); - - // Find a window by id or name - virtual wxWindow *FindWindow(long id); - virtual wxWindow *FindWindow(const wxString& name); - - // Constraint operations - bool Layout(); - void SetSizer(wxSizer *sizer); // Adds sizer child to this window - inline wxSizer *GetSizer() const ; - inline wxWindow *GetSizerParent() const ; - inline void SetSizerParent(wxWindow *win); - - // Do Update UI processing for controls - void UpdateWindowUI(); - - void OnEraseBackground(wxEraseEvent& event); - void OnChar(wxKeyEvent& event); - void OnKeyDown(wxKeyEvent& event); - void OnKeyUp(wxKeyEvent& event); - void OnPaint(wxPaintEvent& event); - void OnIdle(wxIdleEvent& event); - - // Does this window want to accept keyboard focus? - virtual bool AcceptsFocus() const; - - virtual void PrepareDC( wxDC &dc ) {}; - - -public: - //////////////////////////////////////////////////////////////////////// - //// IMPLEMENTATION - - // For implementation purposes - sometimes decorations make the client area - // smaller - virtual wxPoint GetClientAreaOrigin() const; - - // Makes an adjustment to the window position (for example, a frame that has - // a toolbar that it manages itself). - virtual void AdjustForParentClientOrigin(int& x, int& y, int sizeFlags); - - // Executes the default message - virtual long Default(); - -/* TODO: you may need something like this - // Determine whether 3D effects are wanted - virtual WXDWORD Determine3DEffects(WXDWORD defaultBorderStyle, bool *want3D); -*/ - - virtual void AddChild(wxWindow *child); // Adds reference to the child object - virtual void RemoveChild(wxWindow *child); // Removes reference to child - // (but doesn't delete the child object) - virtual void DestroyChildren(); // Removes and destroys all children - - inline bool IsBeingDeleted() const { return FALSE; } // TODO: Should probably eliminate this - - // Constraint implementation - void UnsetConstraints(wxLayoutConstraints *c); - inline wxList *GetConstraintsInvolvedIn() const ; - // Back-pointer to other windows we're involved with, so if we delete - // this window, we must delete any constraints we're involved with. - void AddConstraintReference(wxWindow *otherWin); - void RemoveConstraintReference(wxWindow *otherWin); - void DeleteRelatedConstraints(); - - virtual void ResetConstraints(); - virtual void SetConstraintSizes(bool recurse = TRUE); - virtual bool LayoutPhase1(int *noChanges); - virtual bool LayoutPhase2(int *noChanges); - virtual bool DoPhase(int); - // Transforms from sizer coordinate space to actual - // parent coordinate space - virtual void TransformSizerToActual(int *x, int *y) const ; - - // Set size with transformation to actual coordinates if nec. - virtual void SizerSetSize(int x, int y, int w, int h); - virtual void SizerMove(int x, int y); - - // Only set/get the size/position of the constraint (if any) - virtual void SetSizeConstraint(int x, int y, int w, int h); - virtual void MoveConstraint(int x, int y); - virtual void GetSizeConstraint(int *w, int *h) const ; - virtual void GetClientSizeConstraint(int *w, int *h) const ; - virtual void GetPositionConstraint(int *x, int *y) const ; - - // Dialog units translations. Implemented in wincmn.cpp. - wxPoint ConvertPixelsToDialog(const wxPoint& pt) ; - wxPoint ConvertDialogToPixels(const wxPoint& pt) ; - inline wxSize ConvertPixelsToDialog(const wxSize& sz) - { wxPoint pt(ConvertPixelsToDialog(wxPoint(sz.x, sz.y))); return wxSize(pt.x, pt.y); } - inline wxSize ConvertDialogToPixels(const wxSize& sz) - { wxPoint pt(ConvertDialogToPixels(wxPoint(sz.x, sz.y))); return wxSize(pt.x, pt.y); } - - wxObject *GetChild(int number) const ; - - // Generates a new id for controls - static int NewControlId(); - - // Responds to colour changes: passes event on to children. - void OnSysColourChanged(wxSysColourChangedEvent& event); - - // Transfers data to any child controls - void OnInitDialog(wxInitDialogEvent& event); - - // Sends an OnInitDialog event, which in turns transfers data to - // to the window via validators. - virtual void InitDialog(); - - //////////////////////////////////////////////////////////////////////// - //// PROTECTED DATA -protected: - int m_windowId; - long m_windowStyle; // Store the window's style - wxEvtHandler * m_windowEventHandler; // Usually is 'this' - wxLayoutConstraints * m_constraints; // Constraints for this window - wxList * m_constraintsInvolvedIn; // List of constraints we're involved in - wxSizer * m_windowSizer; // Window's top-level sizer (if any) - wxWindow * m_sizerParent; // Window's parent sizer (if any) - bool m_autoLayout; // Whether to call Layout() in OnSize - wxWindow * m_windowParent; // Each window always knows its parent - wxValidator * m_windowValidator; - int m_minSizeX; - int m_minSizeY; - int m_maxSizeX; - int m_maxSizeY; - - // Caret data - int m_caretWidth; - int m_caretHeight; - bool m_caretEnabled; - bool m_caretShown; - wxFont m_windowFont; // Window's font - wxCursor m_windowCursor; // Window's cursor - wxString m_windowName; // Window name - - wxButton * m_defaultItem; - - wxColour m_backgroundColour ; - wxColour m_foregroundColour ; - wxAcceleratorTable m_acceleratorTable; - -#if wxUSE_DRAG_AND_DROP - wxDropTarget *m_pDropTarget; // the current drop target or NULL -#endif //USE_DRAG_AND_DROP - -public: - wxRegion m_updateRegion; - wxList * m_children; // Window's children - int m_returnCode; - -DECLARE_EVENT_TABLE() -}; - -//////////////////////////////////////////////////////////////////////// -//// INLINES - -inline void *wxWindow::GetHandle() const { return (void *)NULL; } -inline int wxWindow::GetId() const { return m_windowId; } -inline void wxWindow::SetId(int id) { m_windowId = id; } -inline wxWindow *wxWindow::GetParent() const { return m_windowParent; } -inline void wxWindow::SetParent(wxWindow *p) { m_windowParent = p; } -inline wxWindow *wxWindow::GetGrandParent() const { return (m_windowParent ? m_windowParent->m_windowParent : (wxWindow*) NULL); } -inline wxList& wxWindow::GetChildren() const { return (wxList&) * m_children; } -inline wxFont& wxWindow::GetFont() const { return (wxFont&) m_windowFont; } -inline wxString wxWindow::GetName() const { return m_windowName; } -inline void wxWindow::SetName(const wxString& name) { m_windowName = name; } -inline long wxWindow::GetWindowStyleFlag() const { return m_windowStyle; } -inline void wxWindow::SetWindowStyleFlag(long flag) { m_windowStyle = flag; } -inline void wxWindow::SetEventHandler(wxEvtHandler *handler) { m_windowEventHandler = handler; } -inline wxEvtHandler *wxWindow::GetEventHandler() const { return m_windowEventHandler; } -inline void wxWindow::SetAutoLayout(bool a) { m_autoLayout = a; } -inline bool wxWindow::GetAutoLayout() const { return m_autoLayout; } -inline wxLayoutConstraints *wxWindow::GetConstraints() const { return m_constraints; } -inline void wxWindow::SetBackgroundColour(const wxColour& col) { m_backgroundColour = col; }; -inline wxColour wxWindow::GetBackgroundColour() const { return m_backgroundColour; }; -inline void wxWindow::SetForegroundColour(const wxColour& col) { m_foregroundColour = col; }; -inline wxColour wxWindow::GetForegroundColour() const { return m_foregroundColour; }; - -inline wxButton *wxWindow::GetDefaultItem() const { return m_defaultItem; } -inline void wxWindow::SetDefaultItem(wxButton *but) { m_defaultItem = but; } -inline bool wxWindow::IsRetained() const { return ((m_windowStyle & wxRETAINED) == wxRETAINED); } - -inline wxList *wxWindow::GetConstraintsInvolvedIn() const { return m_constraintsInvolvedIn; } -inline wxSizer *wxWindow::GetSizer() const { return m_windowSizer; } -inline wxWindow *wxWindow::GetSizerParent() const { return m_sizerParent; } -inline void wxWindow::SetSizerParent(wxWindow *win) { m_sizerParent = win; } -inline wxValidator *wxWindow::GetValidator() const { return m_windowValidator; } -inline void wxWindow::SetReturnCode(int retCode) { m_returnCode = retCode; } -inline int wxWindow::GetReturnCode() { return m_returnCode; } - -// Get the active window. -wxWindow* WXDLLEXPORT wxGetActiveWindow(); - -WXDLLEXPORT_DATA(extern wxList) wxTopLevelWindows; - -#endif - // _WX_WINDOW_H_ diff --git a/include/wx/tab.h b/include/wx/tab.h deleted file mode 100644 index 808f9c7146..0000000000 --- a/include/wx/tab.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef _WX_TAB_H_BASE_ -#define _WX_TAB_H_BASE_ - -#include "wx/generic/tabg.h" - -#endif - // _WX_TAB_H_BASE_ diff --git a/include/wx/tabctrl.h b/include/wx/tabctrl.h deleted file mode 100644 index c766f72bf3..0000000000 --- a/include/wx/tabctrl.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef _WX_TABCTRL_H_BASE_ -#define _WX_TABCTRL_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/tabctrl.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/tabctrl.h" -#elif defined(__WXGTK__) -#elif defined(__WXMAC__) -#include "wx/mac/tabctrl.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/tabctrl.h" -#endif - -#endif - // _WX_TABCTRL_H_BASE_ diff --git a/include/wx/taskbar.h b/include/wx/taskbar.h deleted file mode 100644 index 614edbb655..0000000000 --- a/include/wx/taskbar.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef _WX_TASKBAR_H_BASE_ -#define _WX_TASKBAR_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/taskbar.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/taskbar.h" -#elif defined(__WXGTK__) -#elif defined(__WXQT__) -#elif defined(__WXMAC__) -#include "wx/mac/taskbar.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/taskbar.h" -#endif - -#endif - // _WX_TASKBAR_H_BASE_ diff --git a/include/wx/tbar95.h b/include/wx/tbar95.h deleted file mode 100644 index 5e1a009544..0000000000 --- a/include/wx/tbar95.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef _WX_TBAR95_H_BASE_ -#define _WX_TBAR95_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/tbar95.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/tbar95.h" -#elif defined(__WXGTK__) -#include "wx/gtk/tbar95.h" -#endif - -#endif - // _WX_TBAR95_H_BASE_ diff --git a/include/wx/tbarbase.h b/include/wx/tbarbase.h deleted file mode 100644 index d23a8c2158..0000000000 --- a/include/wx/tbarbase.h +++ /dev/null @@ -1,243 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: tbarbase.h -// Purpose: Base class for toolbar classes -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_TBARBASE_H_ -#define _WX_TBARBASE_H_ - -#ifdef __GNUG__ -#pragma interface "tbarbase.h" -#endif - -#include "wx/setup.h" -#include "wx/defs.h" - -#include "wx/bitmap.h" -#include "wx/list.h" -#include "wx/control.h" - -WXDLLEXPORT_DATA(extern const char*) wxToolBarNameStr; -WXDLLEXPORT_DATA(extern const wxSize) wxDefaultSize; -WXDLLEXPORT_DATA(extern const wxPoint) wxDefaultPosition; - -#define wxTOOL_STYLE_BUTTON 1 -#define wxTOOL_STYLE_SEPARATOR 2 - -class WXDLLEXPORT wxToolBarTool: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxToolBarTool) - public: - wxToolBarTool(int theIndex = 0, const wxBitmap& bitmap1 = wxNullBitmap, const wxBitmap& bitmap2 = wxNullBitmap, - bool toggle = FALSE, long xPos = -1, long yPos = -1, - const wxString& shortHelpString = wxEmptyString, const wxString& longHelpString = wxEmptyString); - ~wxToolBarTool (); - inline void SetSize( long w, long h ) { m_width = w; m_height = h; } - inline long GetWidth () const { return m_width; } - inline long GetHeight () const { return m_height; } - -public: - int m_toolStyle; - wxObject * m_clientData; - int m_index; - long m_x; - long m_y; - long m_width; - long m_height; - bool m_toggleState; - bool m_isToggle; - bool m_deleteSecondBitmap; - bool m_enabled; - wxBitmap m_bitmap1; - wxBitmap m_bitmap2; - bool m_isMenuCommand; - wxString m_shortHelpString; - wxString m_longHelpString; -}; - -class WXDLLEXPORT wxToolBarBase : public wxControl -{ - DECLARE_ABSTRACT_CLASS(wxToolBarBase) - public: - - wxToolBarBase(void); - ~wxToolBarBase(void); - - // Handle wxToolBar events - - // Only allow toggle if returns TRUE. Call when left button up. - virtual bool OnLeftClick(int toolIndex, bool toggleDown); - - // Call when right button down. - virtual void OnRightClick(int toolIndex, long x, long y); - - // Called when the mouse cursor enters a tool bitmap. - // Argument is -1 if mouse is exiting the toolbar. - virtual void OnMouseEnter(int toolIndex); - - // If pushedBitmap is NULL, a reversed version of bitmap is - // created and used as the pushed/toggled image. - // If toggle is TRUE, the button toggles between the two states. - virtual wxToolBarTool *AddTool(int toolIndex, const wxBitmap& bitmap, const wxBitmap& pushedBitmap = wxNullBitmap, - bool toggle = FALSE, long xPos = -1, long yPos = -1, wxObject *clientData = NULL, - const wxString& helpString1 = wxEmptyString, const wxString& helpString2 = wxEmptyString); - virtual void AddSeparator(void); - virtual void ClearTools(void); - - virtual void EnableTool(int toolIndex, bool enable); - virtual void ToggleTool(int toolIndex, bool toggle); // toggle is TRUE if toggled on - virtual void SetToggle(int toolIndex, bool toggle); // Set this to be togglable (or not) - virtual wxObject *GetToolClientData(int index) const; - inline wxList& GetTools(void) const { return (wxList&) m_tools; } - - // After the toolbar has initialized, this is the size the tools take up -#if WXWXIN_COMPATIBILITY - inline void GetMaxSize ( long * width, long * height ) const - { wxSize maxSize(GetMaxSize()); *width = maxSize.x; *height = maxSize.y; } -#endif - virtual wxSize GetMaxSize ( void ) const; - - virtual bool GetToolState(int toolIndex) const; - virtual bool GetToolEnabled(int toolIndex) const; - virtual wxToolBarTool *FindToolForPosition(long x, long y) const; - - virtual void SetToolShortHelp(int toolIndex, const wxString& helpString); - virtual wxString GetToolShortHelp(int toolIndex) const; - virtual void SetToolLongHelp(int toolIndex, const wxString& helpString); - virtual wxString GetToolLongHelp(int toolIndex) const; - - virtual void SetMargins(int x, int y); - inline void SetMargins(const wxSize& size) { SetMargins((int) size.x, (int) size.y); } - virtual void SetToolPacking(int packing); - virtual void SetToolSeparation(int separation); - - inline virtual wxSize GetToolMargins(void) { return wxSize(m_xMargin, m_yMargin); } - inline virtual int GetToolPacking(void) { return m_toolPacking; } - inline virtual int GetToolSeparation(void) { return m_toolSeparation; } - - virtual void SetToolBitmapSize(const wxSize& size) { m_defaultWidth = size.x; m_defaultHeight = size.y; }; - virtual wxSize GetToolBitmapSize(void) const { return wxSize(m_defaultWidth, m_defaultHeight); } - - // The button size (in some implementations) is bigger than the bitmap size: this returns - // the total button size. - virtual wxSize GetToolSize(void) const { return wxSize(m_defaultWidth, m_defaultHeight); } ; - - // Compatibility -#if WXWIN_COMPATIBILITY - inline void SetDefaultSize(int w, int h) { SetDefaultSize(wxSize(w, h)); } - inline long GetDefaultWidth(void) const { return m_defaultWidth; } - inline long GetDefaultHeight(void) const { return m_defaultHeight; } - inline int GetDefaultButtonWidth(void) const { return (int) GetDefaultButtonSize().x; }; - inline int GetDefaultButtonHeight(void) const { return (int) GetDefaultButtonSize().y; }; - virtual void SetDefaultSize(const wxSize& size) { SetToolBitmapSize(size); } - virtual wxSize GetDefaultSize(void) const { return GetToolBitmapSize(); } - virtual wxSize GetDefaultButtonSize(void) const { return GetToolSize(); } -#endif - - // Lay the tools out - virtual void Layout(void); - - // Add all the buttons: required for Win95. - virtual bool CreateTools(void) { return TRUE; } - - // Calls the appropriate function after tools have been created. - // E.g. Layout, or CreateTools. - virtual bool Realize() = 0; - - void Command(wxCommandEvent& event); - - // SCROLLING: this has to be copied from wxScrolledWindow since wxToolBarBase - // inherits from wxControl. This could have been put into wxToolBarSimple, - // but we might want any derived toolbar class to be scrollable. - - // Number of pixels per user unit (0 or -1 for no scrollbar) - // Length of virtual canvas in user units - virtual void SetScrollbars(int horizontal, int vertical, - int x_length, int y_length, - int x_pos = 0, int y_pos = 0); - - // Physically scroll the window - virtual void Scroll(int x_pos, int y_pos); - virtual void GetScrollPixelsPerUnit(int *x_unit, int *y_unit) const; - virtual void EnableScrolling(bool x_scrolling, bool y_scrolling); - virtual void AdjustScrollbars(void); - - // Prepare the DC by translating it according to the current scroll position - virtual void PrepareDC(wxDC& dc); - - int GetScrollPageSize(int orient) const ; - void SetScrollPageSize(int orient, int pageSize); - - // Get the view start - virtual void ViewStart(int *x, int *y) const; - - // Actual size in pixels when scrolling is taken into account - virtual void GetVirtualSize(int *x, int *y) const; - - // Do the toolbar button updates (check for EVT_UPDATE_UI handlers) - virtual void DoToolbarUpdates(void); - - inline void SetMaxRowsCols(int rows, int cols) { m_maxRows = rows; m_maxCols = cols; } - inline int GetMaxRows() const { return m_maxRows; } - inline int GetMaxCols() const { return m_maxCols; } - - void OnScroll(wxScrollEvent& event); - void OnSize(wxSizeEvent& event); - void OnIdle(wxIdleEvent& event); - - // Required to force normal cursor-setting behaviour in Windows -#ifdef __WXMSW__ - virtual void MSWOnMouseMove(int x, int y, WXUINT flags); -#endif - - protected: - wxList m_tools; -// int m_tilingDirection; -// int m_rowsOrColumns; - int m_maxRows; - int m_maxCols; - long m_maxWidth, m_maxHeight; - int m_currentTool; // Tool where mouse currently is - int m_pressedTool; // Tool where mouse pressed - int m_xMargin; - int m_yMargin; - int m_toolPacking; - int m_toolSeparation; - long m_defaultWidth; - long m_defaultHeight; - -public: - //////////////////////////////////////////////////////////////////////// - //// IMPLEMENTATION - - // Calculate scroll increment - virtual int CalcScrollInc(wxScrollEvent& event); - - //////////////////////////////////////////////////////////////////////// - //// PROTECTED DATA -protected: - int m_xScrollPixelsPerLine; - int m_yScrollPixelsPerLine; - bool m_xScrollingEnabled; - bool m_yScrollingEnabled; - int m_xScrollPosition; - int m_yScrollPosition; - bool m_calcScrolledOffset; // If TRUE, wxCanvasDC uses scrolled offsets - int m_xScrollLines; - int m_yScrollLines; - int m_xScrollLinesPerPage; - int m_yScrollLinesPerPage; - -public: - DECLARE_EVENT_TABLE() -}; - -#endif - // _WX_TBARBASE_H_ - diff --git a/include/wx/tbarmsw.h b/include/wx/tbarmsw.h deleted file mode 100644 index 4b9d761fcf..0000000000 --- a/include/wx/tbarmsw.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef _WX_TBARMSW_H_BASE_ -#define _WX_TBARMSW_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/tbarmsw.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/tbarmsw.h" -#elif defined(__WXGTK__) -#include "wx/gtk/tbarmsw.h" -#endif - -#endif - // _WX_TBARMSW_H_BASE_ diff --git a/include/wx/tbarsmpl.h b/include/wx/tbarsmpl.h deleted file mode 100644 index 2e4911aee1..0000000000 --- a/include/wx/tbarsmpl.h +++ /dev/null @@ -1,81 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: tbarsmpl.h -// Purpose: wxToolBarSimple class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_TBARSMPLH__ -#define _WX_TBARSMPLH__ - -#ifdef __GNUG__ -#pragma interface "tbarsmpl.h" -#endif - -#include "wx/defs.h" - -#if wxUSE_TOOLBAR - -#include "wx/bitmap.h" -#include "wx/list.h" -#include "wx/tbarbase.h" - -class WXDLLEXPORT wxMemoryDC; - -WXDLLEXPORT_DATA(extern const char*) wxToolBarNameStr; -WXDLLEXPORT_DATA(extern const wxSize) wxDefaultSize; -WXDLLEXPORT_DATA(extern const wxPoint) wxDefaultPosition; - -// XView can't cope properly with panels that behave like canvases -// (e.g. no scrollbars in panels) -class WXDLLEXPORT wxToolBarSimple : public wxToolBarBase -{ - DECLARE_DYNAMIC_CLASS(wxToolBarSimple) - - public: - - wxToolBarSimple(void); - inline wxToolBarSimple(wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxNO_BORDER|wxTB_HORIZONTAL, - const wxString& name = wxToolBarNameStr) - { - Create(parent, id, pos, size, style, name); - } - ~wxToolBarSimple(void); - - bool Create(wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxNO_BORDER|wxTB_HORIZONTAL, const wxString& name = wxToolBarNameStr); - - void OnPaint(wxPaintEvent& event); - void OnSize(wxSizeEvent& event); - void OnMouseEvent(wxMouseEvent& event); - void OnKillFocus(wxFocusEvent& event); - - // Handle wxToolBar events - - virtual void DrawTool(wxDC& dc, wxMemoryDC& memDC, wxToolBarTool *tool); - virtual void ToggleTool(int toolIndex, bool toggle); // toggle is TRUE if toggled on - - virtual void SpringUpButton(int index); - - void Layout(void); - - // The post-tool-addition call - bool Realize() { Layout(); return TRUE; }; - -protected: - int m_currentRowsOrColumns; - long m_lastX, m_lastY; - -DECLARE_EVENT_TABLE() - -}; - -#endif // wxUSE_TOOLBAR -#endif - // _WX_TBARSMPLH__ - diff --git a/include/wx/textctrl.h b/include/wx/textctrl.h deleted file mode 100644 index 4123afeb1f..0000000000 --- a/include/wx/textctrl.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef _WX_TEXTCTRL_H_BASE_ -#define _WX_TEXTCTRL_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/textctrl.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/textctrl.h" -#elif defined(__WXGTK__) -#include "wx/gtk/textctrl.h" -#elif defined(__WXQT__) -#include "wx/qt/textctrl.h" -#elif defined(__WXMAC__) -#include "wx/mac/textctrl.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/textctrl.h" -#endif - -#endif - // _WX_TEXTCTRL_H_BASE_ diff --git a/include/wx/textdlg.h b/include/wx/textdlg.h deleted file mode 100644 index 491bd8b4fa..0000000000 --- a/include/wx/textdlg.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef _WX_TEXTDLG_H_BASE_ -#define _WX_TEXTDLG_H_BASE_ - -#include "wx/generic/textdlgg.h" - -#endif - // _WX_TEXTDLG_H_BASE_ diff --git a/include/wx/textfile.h b/include/wx/textfile.h deleted file mode 100644 index 4aefef1e5a..0000000000 --- a/include/wx/textfile.h +++ /dev/null @@ -1,140 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: textfile.h -// Purpose: class wxTextFile to work with text files of _small_ size -// (file is fully loaded in memory) and which understands CR/LF -// differences between platforms. -// Author: Vadim Zeitlin -// Modified by: -// Created: 03.04.98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows license -/////////////////////////////////////////////////////////////////////////////// - -#ifndef _TEXTFILE_H -#define _TEXTFILE_H - -#ifdef __GNUG__ -#pragma interface "textfile.h" -#endif - -#include "wx/defs.h" -#include "wx/string.h" -#include "wx/file.h" -#include "wx/dynarray.h" - -// ---------------------------------------------------------------------------- -// wxTextFile -// ---------------------------------------------------------------------------- - -// the line termination type -enum wxTextFileType -{ - wxTextFileType_None, // incomplete (the last line of the file only) - wxTextFileType_Unix, // line is terminated with 'LF' = 0xA = 10 = '\n' - wxTextFileType_Dos, // 'CR' 'LF' - wxTextFileType_Mac // 'CR' = 0xD = 13 = '\r' -}; - -WX_DEFINE_ARRAY(wxTextFileType, ArrayFileType); - -class wxTextFile -{ -public: - // default type for current platform (determined at compile time) - static const wxTextFileType typeDefault; - - // ctors - // def ctor, use Open(string) - wxTextFile() { } - // - wxTextFile(const wxString& strFile); - - // file operations - // file exists? - bool Exists() const; - // Open() also loads file in memory on success - bool Open(); - // same as Open() but with (another) file name - bool Open(const wxString& strFile); - // closes the file and frees memory, losing all changes - bool Close(); - // is file currently opened? - bool IsOpened() const { return m_file.IsOpened(); } - - // accessors - // get the number of lines in the file - size_t GetLineCount() const { return m_aLines.Count(); } - // the returned line may be modified (but don't add CR/LF at the end!) - wxString& GetLine(size_t n) const { return m_aLines[n]; } - wxString& operator[](size_t n) const { return m_aLines[n]; } - - // the current line has meaning only when you're using - // GetFirstLine()/GetNextLine() functions, it doesn't get updated when - // you're using "direct access" i.e. GetLine() - size_t GetCurrentLine() const { return m_nCurLine; } - void GoToLine(size_t n) { m_nCurLine = n; } - bool Eof() const { return m_nCurLine == m_aLines.Count(); } - - // these methods allow more "iterator-like" traversal of the list of - // lines, i.e. you may write something like: - // for ( str = GetFirstLine(); !Eof(); str = GetNextLine() ) { ... } - - // @@@ const is commented out because not all compilers understand - // 'mutable' keyword yet (m_nCurLine should be mutable) - wxString& GetFirstLine() /* const */ { return m_aLines[m_nCurLine = 0]; } - wxString& GetNextLine() /* const */ { return m_aLines[++m_nCurLine]; } - wxString& GetPrevLine() /* const */ - { wxASSERT(m_nCurLine > 0); return m_aLines[--m_nCurLine]; } - wxString& GetLastLine() /* const */ - { return m_aLines[m_nCurLine = m_aLines.Count() - 1]; } - - // get the type of the line (see also GetEOL) - wxTextFileType GetLineType(size_t n) const { return m_aTypes[n]; } - // guess the type of file (m_file is supposed to be opened) - wxTextFileType GuessType() const; - // get the name of the file - const char *GetName() const { return m_strFile.c_str(); } - - // add/remove lines - // add a line to the end - void AddLine(const wxString& str, wxTextFileType type = typeDefault) - { m_aLines.Add(str); m_aTypes.Add(type); } - // insert a line before the line number n - void InsertLine(const wxString& str, - size_t n, - wxTextFileType type = typeDefault) - { m_aLines.Insert(str, n); m_aTypes.Insert(type, n); } - // delete one line - void RemoveLine(size_t n) { m_aLines.Remove(n); m_aTypes.Remove(n); } - - // change the file on disk (default argument means "don't change type") - // possibly in another format - bool Write(wxTextFileType typeNew = wxTextFileType_None); - - // get the file termination string - // Note: implementation moved to textfile to prevent warning due to switch. - static const char *GetEOL(wxTextFileType type = typeDefault); - - // dtor - ~wxTextFile(); - -private: - // copy ctor/assignment operator not implemented - wxTextFile(const wxTextFile&); - wxTextFile& operator=(const wxTextFile&); - - // read the file in memory (m_file is supposed to be just opened) - bool Read(); - - wxFile m_file; // current file - - ArrayFileType m_aTypes; // type of each line - wxArrayString m_aLines; // lines of file - - size_t m_nCurLine; // number of current line in the file - - wxString m_strFile; // name of the file -}; - -#endif //_TEXTFILE_H diff --git a/include/wx/thread.h b/include/wx/thread.h deleted file mode 100644 index 1acb78279f..0000000000 --- a/include/wx/thread.h +++ /dev/null @@ -1,398 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: thread.h -// Purpose: Thread API -// Author: Guilhem Lavaux -// Modified by: Vadim Zeitlin (modifications partly inspired by omnithreads -// package from Olivetti & Oracle Research Laboratory) -// Created: 04/13/98 -// RCS-ID: $Id$ -// Copyright: (c) Guilhem Lavaux -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __THREADH__ -#define __THREADH__ - -#ifdef __GNUG__ - #pragma interface "thread.h" -#endif - -// ---------------------------------------------------------------------------- -// headers -// ---------------------------------------------------------------------------- - -// get the value of wxUSE_THREADS configuration flag -#include "wx/setup.h" - -#if wxUSE_THREADS - -// Windows headers define it -#ifdef Yield - #undef Yield -#endif - -#include "wx/module.h" - -// ---------------------------------------------------------------------------- -// constants -// ---------------------------------------------------------------------------- - -typedef enum -{ - wxMUTEX_NO_ERROR = 0, - wxMUTEX_DEAD_LOCK, // Mutex has been already locked by THE CALLING thread - wxMUTEX_BUSY, // Mutex has been already locked by ONE thread - wxMUTEX_UNLOCKED, - wxMUTEX_MISC_ERROR -} wxMutexError; - -typedef enum -{ - wxTHREAD_NO_ERROR = 0, // No error - wxTHREAD_NO_RESOURCE, // No resource left to create a new thread - wxTHREAD_RUNNING, // The thread is already running - wxTHREAD_NOT_RUNNING, // The thread isn't running - wxTHREAD_MISC_ERROR // Some other error -} wxThreadError; - -// defines the interval of priority -#define WXTHREAD_MIN_PRIORITY 0u -#define WXTHREAD_DEFAULT_PRIORITY 50u -#define WXTHREAD_MAX_PRIORITY 100u - -// ---------------------------------------------------------------------------- -// A mutex object is a synchronization object whose state is set to signaled -// when it is not owned by any thread, and nonsignaled when it is owned. Its -// name comes from its usefulness in coordinating mutually-exclusive access to -// a shared resource. Only one thread at a time can own a mutex object. -// ---------------------------------------------------------------------------- - -// you should consider wxMutexLocker whenever possible instead of directly -// working with wxMutex class - it is safer -class WXDLLEXPORT wxMutexInternal; -class WXDLLEXPORT wxMutex -{ -public: - // constructor & destructor - wxMutex(); - ~wxMutex(); - - // Lock the mutex. - wxMutexError Lock(); - // Try to lock the mutex: if it can't, returns immediately with an error. - wxMutexError TryLock(); - // Unlock the mutex. - wxMutexError Unlock(); - - // Returns true if the mutex is locked. - bool IsLocked() const { return (m_locked > 0); } - -protected: - friend class wxCondition; - - // no assignment operator nor copy ctor - wxMutex(const wxMutex&); - wxMutex& operator=(const wxMutex&); - - int m_locked; - wxMutexInternal *p_internal; -}; - -// a helper class which locks the mutex in the ctor and unlocks it in the dtor: -// this ensures that mutex is always unlocked, even if the function returns or -// throws an exception before it reaches the end -class WXDLLEXPORT wxMutexLocker -{ -public: - // lock the mutex in the ctor - wxMutexLocker(wxMutex& mutex) : m_mutex(mutex) - { m_isOk = m_mutex.Lock() == wxMUTEX_NO_ERROR; } - - // returns TRUE if mutex was successfully locked in ctor - bool IsOk() const - { return m_isOk; } - - // unlock the mutex in dtor - ~wxMutexLocker() - { if ( IsOk() ) m_mutex.Unlock(); } - -private: - // no assignment operator nor copy ctor - wxMutexLocker(const wxMutexLocker&); - wxMutexLocker& operator=(const wxMutexLocker&); - - bool m_isOk; - wxMutex& m_mutex; -}; - -// ---------------------------------------------------------------------------- -// Critical section: this is the same as mutex but is only visible to the -// threads of the same process. For the platforms which don't have native -// support for critical sections, they're implemented entirely in terms of -// mutexes -// ---------------------------------------------------------------------------- - -// in order to avoid any overhead under !MSW make all wxCriticalSection class -// functions inline - but this can't be done under MSW -#ifdef __WXMSW__ - class WXDLLEXPORT wxCriticalSectionInternal; - #define WXCRITICAL_INLINE -#else // !MSW - #define WXCRITICAL_INLINE inline -#endif // MSW/!MSW - -// you should consider wxCriticalSectionLocker whenever possible instead of -// directly working with wxCriticalSection class - it is safer -class WXDLLEXPORT wxCriticalSection -{ -public: - // ctor & dtor - WXCRITICAL_INLINE wxCriticalSection(); - WXCRITICAL_INLINE ~wxCriticalSection(); - - // enter the section (the same as locking a mutex) - void WXCRITICAL_INLINE Enter(); - // leave the critical section (same as unlocking a mutex) - void WXCRITICAL_INLINE Leave(); - -private: - // no assignment operator nor copy ctor - wxCriticalSection(const wxCriticalSection&); - wxCriticalSection& operator=(const wxCriticalSection&); - -#ifdef __WXMSW__ - wxCriticalSectionInternal *m_critsect; -#else // !MSW - wxMutex m_mutex; -#endif // MSW/!MSW -}; - -// keep your preprocessor name space clean -#undef WXCRITICAL_INLINE - -// wxCriticalSectionLocker is the same to critical sections as wxMutexLocker is -// to th mutexes -class WXDLLEXPORT wxCriticalSectionLocker -{ -public: - wxCriticalSectionLocker(wxCriticalSection& critsect) : m_critsect(critsect) - { m_critsect.Enter(); } - ~wxCriticalSectionLocker() - { m_critsect.Leave(); } - -private: - // no assignment operator nor copy ctor - wxCriticalSectionLocker(const wxCriticalSectionLocker&); - wxCriticalSectionLocker& operator=(const wxCriticalSectionLocker&); - - wxCriticalSection& m_critsect; -}; - -// ---------------------------------------------------------------------------- -// Condition handler. -// ---------------------------------------------------------------------------- - -class wxConditionInternal; -class WXDLLEXPORT wxCondition -{ -public: - // constructor & destructor - wxCondition(); - ~wxCondition(); - - // Waits indefinitely. - void Wait(wxMutex& mutex); - // Waits until a signal is raised or the timeout is elapsed. - bool Wait(wxMutex& mutex, unsigned long sec, unsigned long nsec); - // Raises a signal: only one "Waiter" is released. - void Signal(); - // Broadcasts to all "Waiters". - void Broadcast(); - -private: - wxConditionInternal *p_internal; -}; - -// ---------------------------------------------------------------------------- -// Thread management class -// ---------------------------------------------------------------------------- - -// FIXME Thread termination model is still unclear. Delete() should probably -// have a timeout after which the thread must be Kill()ed. - -// NB: in the function descriptions the words "this thread" mean the thread -// created by the wxThread object while "main thread" is the thread created -// during the process initialization (a.k.a. the GUI thread) -class wxThreadInternal; -class WXDLLEXPORT wxThread -{ -public: - // the return type for the thread function - typedef void *ExitCode; - - // static functions - // Returns the wxThread object for the calling thread. NULL is returned - // if the caller is the main thread (but it's recommended to use - // IsMain() and only call This() for threads other than the main one - // because NULL is also returned on error). If the thread wasn't - // created with wxThread class, the returned value is undefined. - static wxThread *This(); - - // Returns true if current thread is the main thread. - static bool IsMain(); - - // Release the rest of our time slice leting the other threads run - static void Yield(); - - // Sleep during the specified period of time in milliseconds - // - // NB: at least under MSW worker threads can not call ::wxSleep()! - static void Sleep(unsigned long milliseconds); - - // default constructor - wxThread(); - - // function that change the thread state - // create a new thread - call Run() to start it - wxThreadError Create(); - - // starts execution of the thread - from the moment Run() is called the - // execution of wxThread::Entry() may start at any moment, caller - // shouldn't suppose that it starts after (or before) Run() returns. - wxThreadError Run(); - - // stops the thread if it's running and deletes the wxThread object - // freeing its memory. This function should also be called if the - // Create() or Run() fails to free memory (otherwise it will be done by - // the thread itself when it terminates). The return value is the - // thread exit code if the thread was gracefully terminated, 0 if it - // wasn't running and -1 if an error occured. - ExitCode Delete(); - - // kills the thread without giving it any chance to clean up - should - // not be used in normal circumstances, use Delete() instead. It is a - // dangerous function that should only be used in the most extreme - // cases! The wxThread object is deleted by Kill() if thread was - // killed (i.e. no errors occured). - wxThreadError Kill(); - - // pause a running thread - wxThreadError Pause(); - - // resume a paused thread - wxThreadError Resume(); - - // priority - // Sets the priority to "prio": see WXTHREAD_XXX_PRIORITY constants - // - // NB: the priority can only be set before the thread is created - void SetPriority(unsigned int prio); - - // Get the current priority. - unsigned int GetPriority() const; - - // Get the thread ID - a platform dependent number which uniquely - // identifies a thread inside a process - unsigned long GetID() const; - - // thread status inquiries - // Returns true if the thread is alive: i.e. running or suspended - bool IsAlive() const; - // Returns true if the thread is running (not paused, not killed). - bool IsRunning() const; - // Returns true if the thread is suspended - bool IsPaused() const { return IsAlive() && !IsRunning(); } - - // called when the thread exits - in the context of this thread - // - // NB: this function will not be called if the thread is Kill()ed - virtual void OnExit() { } - -protected: - // Returns TRUE if the thread was asked to terminate: this function should - // be called by the thread from time to time, otherwise the main thread - // will be left forever in Delete()! - bool TestDestroy(); - - // exits from the current thread - can be called only from this thread - void Exit(void *exitcode = 0); - - // destructor is private - user code can't delete thread objects, they will - // auto-delete themselves (and thus must be always allocated on the heap). - // Use Delete() or Kill() instead. - // - // NB: derived classes dtors shouldn't be public neither! - virtual ~wxThread(); - - // entry point for the thread - called by Run() and executes in the context - // of this thread. - virtual void *Entry() = 0; - -private: - // no copy ctor/assignment operator - wxThread(const wxThread&); - wxThread& operator=(const wxThread&); - - friend class wxThreadInternal; - - // the (platform-dependent) thread class implementation - wxThreadInternal *p_internal; - - // protects access to any methods of wxThreadInternal object - wxCriticalSection m_critsect; -}; - -// ---------------------------------------------------------------------------- -// Automatic initialization -// ---------------------------------------------------------------------------- - -// GUI mutex handling. -void WXDLLEXPORT wxMutexGuiEnter(); -void WXDLLEXPORT wxMutexGuiLeave(); - -#else // !wxUSE_THREADS - -// no thread support -inline void WXDLLEXPORT wxMutexGuiEnter() { } -inline void WXDLLEXPORT wxMutexGuiLeave() { } - -#endif // wxUSE_THREADS - -// automatically unlock GUI mutex in dtor -class WXDLLEXPORT wxMutexGuiLocker -{ -public: - wxMutexGuiLocker() { wxMutexGuiEnter(); } - ~wxMutexGuiLocker() { wxMutexGuiLeave(); } -}; - -// ----------------------------------------------------------------------------- -// implementation only until the end of file -// ----------------------------------------------------------------------------- -#if wxUSE_THREADS -#ifdef __WXMSW__ - // unlock GUI if there are threads waiting for and lock it back when - // there are no more of them - should be called periodically by the main - // thread - extern void WXDLLEXPORT wxMutexGuiLeaveOrEnter(); - - // returns TRUE if the main thread has GUI lock - extern bool WXDLLEXPORT wxGuiOwnedByMainThread(); - - // wakes up the main thread if it's sleeping inside ::GetMessage() - extern void WXDLLEXPORT wxWakeUpMainThread(); - - // return TRUE if the main thread is waiting for some other to terminate: - // wxApp then should block all "dangerous" messages - extern bool WXDLLEXPORT wxIsWaitingForThread(); -#else // !MSW - // implement wxCriticalSection using mutexes - inline wxCriticalSection::wxCriticalSection() { } - inline wxCriticalSection::~wxCriticalSection() { } - - inline void wxCriticalSection::Enter() { (void)m_mutex.Lock(); } - inline void wxCriticalSection::Leave() { (void)m_mutex.Unlock(); } -#endif // MSW/!MSW -#endif // wxUSE_THREADS - -#endif // __THREADH__ diff --git a/include/wx/time.h b/include/wx/time.h deleted file mode 100644 index 49dbc62105..0000000000 --- a/include/wx/time.h +++ /dev/null @@ -1,112 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: time.h -// Purpose: wxTime class, from NIHCL -// Author: Julian Smart, after K. E. Gorlen -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_TIMEH__ -#define _WX_TIMEH__ - -#include "wx/object.h" - -#if wxUSE_TIMEDATE - -#ifdef __GNUG__ -#pragma interface "time.h" -#endif - -class WXDLLEXPORT wxDate; - -typedef unsigned short hourTy; -typedef unsigned short minuteTy; -typedef unsigned short secondTy; -typedef unsigned long clockTy; - -class WXDLLEXPORT wxTime: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxTime) - -public: // type definitions - enum tFormat { wx12h, wx24h }; - enum tPrecision { wxStdMinSec, wxStdMin }; -private: - static tFormat Format; - static tPrecision Precision; - - clockTy sec; /* seconds since 1/1/1901 */ - - bool IsDST() const; - wxTime GetLocalTime() const; -private: // static member functions - static wxTime GetLocalTime(const wxDate& date, hourTy h=0, minuteTy m=0, secondTy s=0); - static wxTime GetBeginDST(unsigned year); - static wxTime GetEndDST(unsigned year); -public: - wxTime(); // current time - wxTime(clockTy s) { sec = s; } - void operator=(const wxTime& t) { sec = t.sec; } // Ordering required for some compilers - wxTime(const wxTime& t) { (*this) = t ; } - wxTime(hourTy h, minuteTy m, secondTy s =0, bool dst =FALSE); - wxTime(const wxDate&, hourTy h =0, minuteTy m =0, secondTy s=0, bool dst =FALSE); - - // Convert to string -#ifndef __SALFORDC__ - operator char * (void); - operator wxDate() const; -#endif - - bool operator<(const wxTime& t) const { return sec < t.sec; } - bool operator<=(const wxTime& t) const { return sec <= t.sec; } - bool operator>(const wxTime& t) const { return sec > t.sec; } - bool operator>=(const wxTime& t) const { return sec >= t.sec; } - bool operator==(const wxTime& t) const { return sec == t.sec; } - bool operator!=(const wxTime& t) const { return sec != t.sec; } - friend wxTime operator+(const wxTime& t, long s) { return wxTime(t.sec+s); } - friend wxTime operator+(long s, const wxTime& t) { return wxTime(t.sec+s); } - long operator-(const wxTime& t) const { return sec - t.sec; } - wxTime operator-(long s) const { return wxTime(sec-s); } - void operator+=(long s) { sec += s; } - void operator-=(long s) { sec -= s; } - bool IsBetween(const wxTime& a, const wxTime& b) const; - - /// Get day - int GetDay() const; - /// Get month - int GetMonth() const; - /// Get year - int GetYear() const; - /// Get day of week (0=Sunday 6=Saturday) - int GetDayOfWeek() const; - - hourTy GetHour() const; // hour in local time - hourTy GetHourGMT() const; // hour in GMT - minuteTy GetMinute() const; // minute in local time - minuteTy GetMinuteGMT() const; // minute in GMT - secondTy GetSecond() const; // second in local time or GMT - clockTy GetSeconds() const { return sec; } - secondTy GetSecondGMT() const ; - wxTime Max(const wxTime&) const; - wxTime Min(const wxTime&) const; - static void SetFormat(const tFormat lFormat = wx12h, - const tPrecision lPrecision = wxStdMinSec); - char *FormatTime() const; -/* - virtual int compare(const Object&) const; - virtual void deepenShallowCopy(); // {} - virtual unsigned hash() const; - virtual bool isEqual(const Object&) const; - virtual void printOn(ostream& strm =cout) const; - virtual const Class* species() const; -*/ -}; - -#endif - // wxUSE_TIMEDATE -#endif - // _WX_TIMEH__ - diff --git a/include/wx/timer.h b/include/wx/timer.h deleted file mode 100644 index 4cf5c35b26..0000000000 --- a/include/wx/timer.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef _WX_TIMER_H_BASE_ -#define _WX_TIMER_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/timer.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/timer.h" -#elif defined(__WXGTK__) -#include "wx/gtk/timer.h" -#elif defined(__WXQT__) -#include "wx/qt/timer.h" -#elif defined(__WXMAC__) -#include "wx/mac/timer.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/timer.h" -#endif - -#endif - // _WX_TIMER_H_BASE_ diff --git a/include/wx/tokenzr.h b/include/wx/tokenzr.h deleted file mode 100644 index 7de58feed3..0000000000 --- a/include/wx/tokenzr.h +++ /dev/null @@ -1,41 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: tokenzr.h -// Purpose: String tokenizer -// Author: Guilhem Lavaux -// Modified by: -// Created: 04/22/98 -// RCS-ID: $Id$ -// Copyright: (c) Guilhem Lavaux -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_TOKENZRH -#define _WX_TOKENZRH - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/object.h" -#include "wx/string.h" -#include "wx/filefn.h" - -class wxStringTokenizer : wxObject { -public: - wxStringTokenizer(const wxString& to_tokenize, - const wxString& delims = " \t\r\n", - bool ret_delim = FALSE); - ~wxStringTokenizer(); - - int CountTokens(); - bool HasMoreToken(); - wxString NextToken(); - wxString GetString() { return m_string; } -protected: - off_t FindDelims(const wxString& str, const wxString& delims); -protected: - wxString m_string, m_delims; - bool m_retdelims; -}; - -#endif diff --git a/include/wx/toolbar.h b/include/wx/toolbar.h deleted file mode 100644 index 86d2444de7..0000000000 --- a/include/wx/toolbar.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef _TOOLBAR_H_BASE_ -#define _TOOLBAR_H_BASE_ - -// the application code should use only wxToolBar which is #define'd to be the -// native implementation for each platform -#if defined(__WXMSW__) && defined(__WIN95__) -# include "wx/msw/tbar95.h" -# define wxToolBar wxToolBar95 -# define sm_classwxToolBar sm_classwxToolBar95 -#elif defined(__WXMSW__) -# include "wx/msw/tbarmsw.h" -# define wxToolBar wxToolBarMSW -# define sm_classwxToolBar sm_classwxToolBarMSW -#elif defined(__WXMOTIF__) -# include "wx/motif/toolbar.h" -#elif defined(__WXGTK__) -# include "wx/gtk/tbargtk.h" -#elif defined(__WXQT__) -# include "wx/qt/tbarqt.h" -#elif defined(__WXMAC__) -# include "wx/mac/toolbar.h" -#elif defined(__WXSTUBS__) -# include "wx/stubs/toolbar.h" -#endif - -#endif - // _TOOLBAR_H_BASE_ diff --git a/include/wx/tooltip.h b/include/wx/tooltip.h deleted file mode 100644 index a7719973be..0000000000 --- a/include/wx/tooltip.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef _WX_TOOLTIP_H_BASE_ -#define _WX_TOOLTIP_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/tooltip.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/tooltip.h" -#elif defined(__WXGTK__) -#include "wx/gtk/tooltip.h" -#elif defined(__WXQT__) -#include "wx/qt/tooltip.h" -#elif defined(__WXMAC__) -#include "wx/mac/tooltip.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/tooltip.h" -#endif - -#endif - // _WX_TOOLTIP_H_BASE_ diff --git a/include/wx/treectrl.h b/include/wx/treectrl.h deleted file mode 100644 index fc3a89e1b3..0000000000 --- a/include/wx/treectrl.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef _WX_TREECTRL_H_BASE_ -#define _WX_TREECTRL_H_BASE_ - -#if defined(__WXMSW__) -#ifdef __WIN16__ -#include "wx/generic/treectrl.h" -#else -#include "wx/msw/treectrl.h" -#endif -#elif defined(__WXMOTIF__) -#include "wx/generic/treectrl.h" -#elif defined(__WXGTK__) -#include "wx/generic/treectrl.h" -#elif defined(__WXQT__) -#include "wx/qt/treectrl.h" -#elif defined(__WXMAC__) -#include "wx/generic/treectrl.h" -#elif defined(__WXSTUBS__) -#include "wx/generic/treectrl.h" -#endif - -#endif - // _WX_TREECTRL_H_BASE_ diff --git a/include/wx/types.h b/include/wx/types.h deleted file mode 100644 index 962783f387..0000000000 --- a/include/wx/types.h +++ /dev/null @@ -1,97 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: types.h -// Purpose: Type identifiers, used by resource system -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_TYPESH__ -#define _WX_TYPESH__ - -#ifdef __GNUG__ -// #pragma interface "types.h" -#endif - -// Types of objects -#define wxTYPE_ANY 0 -#define wxTYPE_OBJECT wxTYPE_ANY -#define wxTYPE_WINDOW 1 -#define wxTYPE_DIALOG_BOX 2 -#define wxTYPE_ITEM 3 -#define wxTYPE_PANEL 4 -#define wxTYPE_CANVAS 5 -#define wxTYPE_TEXT_WINDOW 6 -#define wxTYPE_FRAME 7 - -#define wxTYPE_BUTTON 8 -#define wxTYPE_TEXT 9 -#define wxTYPE_MESSAGE 10 -#define wxTYPE_CHOICE 11 -#define wxTYPE_LIST_BOX 12 -#define wxTYPE_SLIDER 13 -#define wxTYPE_CHECK_BOX 14 -#define wxTYPE_MENU 15 -#define wxTYPE_MENU_BAR 16 -#define wxTYPE_MULTI_TEXT 17 -#define wxTYPE_RADIO_BOX 18 -#define wxTYPE_GROUP_BOX 19 -#define wxTYPE_GAUGE 20 -#define wxTYPE_SCROLL_BAR 21 -#define wxTYPE_VIRT_LIST_BOX 22 -#define wxTYPE_COMBO_BOX 23 -#define wxTYPE_RADIO_BUTTON 24 - -#define wxTYPE_EVENT 25 -#define wxTYPE_DC 26 -#define wxTYPE_DC_CANVAS 27 -#define wxTYPE_DC_POSTSCRIPT 28 -#define wxTYPE_DC_PRINTER 29 -#define wxTYPE_DC_METAFILE 30 -#define wxTYPE_DC_MEMORY 31 -#define wxTYPE_MOUSE_EVENT 32 -#define wxTYPE_KEY_EVENT 33 -#define wxTYPE_COMMAND_EVENT 34 -#define wxTYPE_DC_PANEL 35 - -#define wxTYPE_PEN 40 -#define wxTYPE_BRUSH 41 -#define wxTYPE_FONT 42 -#define wxTYPE_ICON 42 -#define wxTYPE_BITMAP 43 -#define wxTYPE_METAFILE 44 -#define wxTYPE_TIMER 45 -#define wxTYPE_COLOUR 46 -#define wxTYPE_COLOURMAP 47 -#define wxTYPE_CURSOR 48 - -#define wxTYPE_DDE_CLIENT 60 -#define wxTYPE_DDE_SERVER 61 -#define wxTYPE_DDE_CONNECTION 62 - -#define wxTYPE_HELP_INSTANCE 63 - -#define wxTYPE_LIST 70 -#define wxTYPE_STRING_LIST 71 -#define wxTYPE_HASH_TABLE 72 -#define wxTYPE_NODE 73 -#define wxTYPE_APP 74 -#define wxTYPE_DATE 75 - -#define wxTYPE_ENHANCED_DIALOG 80 -#define wxTYPE_TOOLBAR 81 -#define wxTYPE_BUTTONBAR 82 - -#define wxTYPE_DATABASE 90 -#define wxTYPE_QUERY_FIELD 91 -#define wxTYPE_QUERY_COL 92 -#define wxTYPE_RECORDSET 93 - -#define wxTYPE_USER 500 - -#endif - // _WX_TYPESH__ - diff --git a/include/wx/url.h b/include/wx/url.h deleted file mode 100644 index f37d4a9d90..0000000000 --- a/include/wx/url.h +++ /dev/null @@ -1,72 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: url.h -// Purpose: URL parser -// Author: Guilhem Lavaux -// Modified by: -// Created: 20/07/1997 -// RCS-ID: $Id$ -// Copyright: (c) 1997, 1998 Guilhem Lavaux -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// -#ifndef _WX_URL_H -#define _WX_URL_H - -#ifdef __GNUG__ -#pragma interface -#endif - -// wxWindows header -#include "wx/object.h" - -// wxSocket headers -#include "wx/protocol/protocol.h" -#include "wx/protocol/http.h" - -typedef enum { - wxURL_NOERR = 0, - wxURL_SNTXERR, - wxURL_NOPROTO, - wxURL_NOHOST, - wxURL_NOPATH, - wxURL_CONNERR, - wxURL_PROTOERR -} wxURLError; - -class WXDLLEXPORT wxURL : public wxObject { - DECLARE_DYNAMIC_CLASS(wxURL) -protected: - static wxProtoInfo *g_protocols; - static wxHTTP *g_proxy; - wxProtoInfo *m_protoinfo; - wxProtocol *m_protocol; - wxHTTP m_proxy; - wxURLError m_error; - wxString m_protoname, m_hostname, m_servname, m_path, m_url; - wxString m_user, m_password; - - bool PrepProto(wxString& url); - bool PrepHost(wxString& url); - bool PrepPath(wxString& url); - bool ParseURL(); - void CleanData(); - bool FetchProtocol(); - - friend class wxProtoInfo; - friend class wxProtocolModule; -public: - - wxURL(const wxString& url); - virtual ~wxURL(); - - inline wxString GetProtocolName() const - { return m_protoinfo->m_protoname; } - inline wxProtocol& GetProtocol() { return *m_protocol; } - inline wxURLError GetError() const { return m_error; } - - wxInputStream *GetInputStream(); - - static void SetDefaultProxy(const wxString& url_proxy); - void SetProxy(const wxString& url_proxy); -}; - -#endif diff --git a/include/wx/utils.h b/include/wx/utils.h deleted file mode 100644 index 483e0caf07..0000000000 --- a/include/wx/utils.h +++ /dev/null @@ -1,290 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: utils.h -// Purpose: Miscellaneous utilities -// Author: Julian Smart -// Modified by: -// Created: 29/01/98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Julian Smart -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_UTILSH__ -#define _WX_UTILSH__ - -#ifdef __GNUG__ -#pragma interface "utils.h" -#endif - -#include "wx/setup.h" -#include "wx/object.h" -#include "wx/list.h" -#include "wx/window.h" -#include "wx/filefn.h" -#include "wx/process.h" - -#if wxUSE_IOSTREAMH -#include -#else -#include -# ifdef _MSC_VER - using namespace std; -# endif -#endif - -#ifdef __X__ -#ifndef __VMS__ -/*steve: these two are not known under VMS */ -#include -#include -#endif -#endif - -#include - -#ifdef __GNUWIN32__ -#define stricmp strcasecmp -#define strnicmp strncasecmp -#endif - -// Forward declaration -class WXDLLEXPORT wxFrame; - -// Stupid ASCII macros -#define wxToUpper(C) (((C) >= 'a' && (C) <= 'z')? (C) - 'a' + 'A': (C)) -#define wxToLower(C) (((C) >= 'A' && (C) <= 'Z')? (C) - 'A' + 'a': (C)) - -// Return a string with the current date/time -WXDLLEXPORT wxString wxNow(void); - -// Make a copy of this string using 'new' -WXDLLEXPORT char* copystring(const char *s); - -// Generate a unique ID -WXDLLEXPORT long wxNewId(void); -#define NewId wxNewId - -// Ensure subsequent IDs don't clash with this one -WXDLLEXPORT void wxRegisterId(long id); -#define RegisterId wxRegisterId - -// Return the current ID -WXDLLEXPORT long wxGetCurrentId(void); - -// Useful buffer -WXDLLEXPORT_DATA(extern char*) wxBuffer; - -WXDLLEXPORT_DATA(extern const char*) wxFloatToStringStr; -WXDLLEXPORT_DATA(extern const char*) wxDoubleToStringStr; - -// Various conversions -WXDLLEXPORT void StringToFloat(char *s, float *number); -WXDLLEXPORT char* FloatToString(float number, const char *fmt = wxFloatToStringStr); -WXDLLEXPORT void StringToDouble(char *s, double *number); -WXDLLEXPORT char* DoubleToString(double number, const char *fmt = wxDoubleToStringStr); -WXDLLEXPORT void StringToInt(char *s, int *number); -WXDLLEXPORT void StringToLong(char *s, long *number); -WXDLLEXPORT char* IntToString(int number); -WXDLLEXPORT char* LongToString(long number); - -// Matches string one within string two regardless of case -WXDLLEXPORT bool StringMatch(char *one, char *two, bool subString = TRUE, bool exact = FALSE); - -// A shorter way of using strcmp -#define wxStringEq(s1, s2) (s1 && s2 && (strcmp(s1, s2) == 0)) - -// Convert 2-digit hex number to decimal -WXDLLEXPORT int wxHexToDec(const wxString& buf); - -// Convert decimal integer to 2-character hex string -WXDLLEXPORT void wxDecToHex(int dec, char *buf); -WXDLLEXPORT wxString wxDecToHex(int dec); - -// Execute another program. Returns 0 if there was an error, a PID otherwise. -WXDLLEXPORT long wxExecute(char **argv, bool sync = FALSE, - wxProcess *process = (wxProcess *) NULL); -WXDLLEXPORT long wxExecute(const wxString& command, bool sync = FALSE, - wxProcess *process = (wxProcess *) NULL); - -#define wxSIGTERM 1 - -WXDLLEXPORT int wxKill(long pid, int sig=wxSIGTERM); - -// Execute a command in an interactive shell window -// If no command then just the shell -WXDLLEXPORT bool wxShell(const wxString& command = wxEmptyString); - -// Sleep for nSecs seconds under UNIX, do nothing under Windows -WXDLLEXPORT void wxSleep(int nSecs); - -// Get free memory in bytes, or -1 if cannot determine amount (e.g. on UNIX) -WXDLLEXPORT long wxGetFreeMemory(void); - -// Consume all events until no more left -WXDLLEXPORT void wxFlushEvents(void); - -/* - * Network and username functions. - * - */ - -// Get eMail address -WXDLLEXPORT bool wxGetEmailAddress(char *buf, int maxSize); - -// Get hostname. -WXDLLEXPORT bool wxGetHostName(char *buf, int maxSize); -WXDLLEXPORT bool wxGetHostName(wxString& buf); - -// Get user ID e.g. jacs -WXDLLEXPORT bool wxGetUserId(char *buf, int maxSize); -WXDLLEXPORT bool wxGetUserId(wxString& buf); - -// Get user name e.g. Julian Smart -WXDLLEXPORT bool wxGetUserName(char *buf, int maxSize); -WXDLLEXPORT bool wxGetUserName(wxString& buf); - -/* - * Strip out any menu codes - */ -WXDLLEXPORT char* wxStripMenuCodes(char *in, char *out = (char *) NULL); -WXDLLEXPORT wxString wxStripMenuCodes(const wxString& str); - -// Find the window/widget with the given title or label. -// Pass a parent to begin the search from, or NULL to look through -// all windows. -WXDLLEXPORT wxWindow* wxFindWindowByLabel(const wxString& title, wxWindow *parent = (wxWindow *) NULL); - -// Find window by name, and if that fails, by label. -WXDLLEXPORT wxWindow* wxFindWindowByName(const wxString& name, wxWindow *parent = (wxWindow *) NULL); - -// Returns menu item id or -1 if none. -WXDLLEXPORT int wxFindMenuItemId(wxFrame *frame, const wxString& menuString, const wxString& itemString); - -/* -#if (!defined(__MINMAX_DEFINED) && !defined(max)) -#define max(a,b) (((a) > (b)) ? (a) : (b)) -#define min(a,b) (((a) < (b)) ? (a) : (b)) -#define __MINMAX_DEFINED 1 -#endif -*/ - -#define wxMax(a,b) (((a) > (b)) ? (a) : (b)) -#define wxMin(a,b) (((a) < (b)) ? (a) : (b)) - -// Yield to other apps/messages -WXDLLEXPORT bool wxYield(void); - -// Format a message on the standard error (UNIX) or the debugging -// stream (Windows) -WXDLLEXPORT void wxDebugMsg(const char *fmt ...) ; - -// Sound the bell -WXDLLEXPORT void wxBell(void) ; - -// Get OS version -WXDLLEXPORT int wxGetOsVersion(int *majorVsn= (int *) NULL,int *minorVsn= (int *) NULL) ; - -// Set the cursor to the busy cursor for all windows -class WXDLLEXPORT wxCursor; -WXDLLEXPORT_DATA(extern wxCursor*) wxHOURGLASS_CURSOR; -WXDLLEXPORT void wxBeginBusyCursor(wxCursor *cursor = wxHOURGLASS_CURSOR); - -// Restore cursor to normal -WXDLLEXPORT void wxEndBusyCursor(void); - -// TRUE if we're between the above two calls -WXDLLEXPORT bool wxIsBusy(void); - -// Convenience class so we can just create a wxBusyCursor object on the stack -class WXDLLEXPORT wxBusyCursor -{ - public: - inline wxBusyCursor(wxCursor* cursor = wxHOURGLASS_CURSOR) { wxBeginBusyCursor(cursor); } - inline ~wxBusyCursor() { wxEndBusyCursor(); } -}; - -/* Error message functions used by wxWindows */ - -// Non-fatal error (continues) -WXDLLEXPORT_DATA(extern const char*) wxInternalErrorStr; -WXDLLEXPORT void wxError(const wxString& msg, const wxString& title = wxInternalErrorStr); - -// Fatal error (exits) -WXDLLEXPORT_DATA(extern const char*) wxFatalErrorStr; -WXDLLEXPORT void wxFatalError(const wxString& msg, const wxString& title = wxFatalErrorStr); - -// Reading and writing resources (eg WIN.INI, .Xdefaults) -#if wxUSE_RESOURCES -WXDLLEXPORT bool wxWriteResource(const wxString& section, const wxString& entry, const wxString& value, const wxString& file = wxEmptyString); -WXDLLEXPORT bool wxWriteResource(const wxString& section, const wxString& entry, float value, const wxString& file = wxEmptyString); -WXDLLEXPORT bool wxWriteResource(const wxString& section, const wxString& entry, long value, const wxString& file = wxEmptyString); -WXDLLEXPORT bool wxWriteResource(const wxString& section, const wxString& entry, int value, const wxString& file = wxEmptyString); - -WXDLLEXPORT bool wxGetResource(const wxString& section, const wxString& entry, char **value, const wxString& file = wxEmptyString); -WXDLLEXPORT bool wxGetResource(const wxString& section, const wxString& entry, float *value, const wxString& file = wxEmptyString); -WXDLLEXPORT bool wxGetResource(const wxString& section, const wxString& entry, long *value, const wxString& file = wxEmptyString); -WXDLLEXPORT bool wxGetResource(const wxString& section, const wxString& entry, int *value, const wxString& file = wxEmptyString); -#endif // wxUSE_RESOURCES - -// Get current Home dir and copy to dest (returns pstr->c_str()) -WXDLLEXPORT const char* wxGetHomeDir(wxString *pstr); - -// Get the user's home dir (caller must copy--- volatile) -// returns NULL is no HOME dir is known -WXDLLEXPORT char* wxGetUserHome(const wxString& user = wxEmptyString); - -// Check whether this window wants to process messages, e.g. Stop button -// in long calculations. -WXDLLEXPORT bool wxCheckForInterrupt(wxWindow *wnd); - -void WXDLLEXPORT wxGetMousePosition( int* x, int* y ); - -// MSW only: get user-defined resource from the .res file. -// Returns NULL or newly-allocated memory, so use delete[] to clean up. -#ifdef __WXMSW__ -WXDLLEXPORT extern const char* wxUserResourceStr; -WXDLLEXPORT char* wxLoadUserResource(const wxString& resourceName, const wxString& resourceType = wxUserResourceStr); - -// Implemented in utils.cpp: VC++, Win95 only. Sets up a console for standard -// input/output -WXDLLEXPORT void wxRedirectIOToConsole(); - -#endif - -// X only -#ifdef __X__ -WXDisplay *wxGetDisplay(); -bool wxSetDisplay(const wxString& display_name); -wxString wxGetDisplayName(); -#endif - -#ifdef __X__ - -#include - -#define wxMAX_RGB 0xff -#define wxMAX_SV 1000 -#define wxSIGN(x) ((x < 0) ? -x : x) -#define wxH_WEIGHT 4 -#define wxS_WEIGHT 1 -#define wxV_WEIGHT 2 - -typedef struct wx_hsv { - int h,s,v; - } wxHSV; - -#define wxMax3(x,y,z) ((x > y) ? ((x > z) ? x : z) : ((y > z) ? y : z)) -#define wxMin3(x,y,z) ((x < y) ? ((x < z) ? x : z) : ((y < z) ? y : z)) - -#define wxMax2(x,y) ((x > y) ? x : y) -#define wxMin2(x,y) ((x < y) ? x : y) - -void wxHSVToXColor(wxHSV *hsv,XColor *xcolor); -void wxXColorToHSV(wxHSV *hsv,XColor *xcolor); -void wxAllocNearestColor(Display *display,Colormap colormap,XColor *xcolor); -void wxAllocColor(Display *display,Colormap colormap,XColor *xcolor); - -#endif //__X__ - -#endif - // _WX_UTILSH__ diff --git a/include/wx/validate.h b/include/wx/validate.h deleted file mode 100644 index a67d9cba9b..0000000000 --- a/include/wx/validate.h +++ /dev/null @@ -1,70 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: validate.h -// Purpose: wxValidator class -// Author: Julian Smart -// Modified by: -// Created: 29/01/98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Julian Smart -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_VALIDATEH__ -#define _WX_VALIDATEH__ - -#ifdef __GNUG__ -#pragma interface "validate.h" -#endif - -#include "wx/event.h" - -class WXDLLEXPORT wxWindow; - -/* - A validator has up to three purposes: - - 1) To validate the data in the window that's associated - with the validator. - 2) To transfer data to and from the window. - 3) To filter input, using its role as a wxEvtHandler - to intercept e.g. OnChar. - - Note that wxValidator and derived classes use reference counting. - */ - -class WXDLLEXPORT wxValidator: public wxEvtHandler -{ -DECLARE_DYNAMIC_CLASS(wxValidator) -public: - wxValidator(void); - ~wxValidator(); - - // Make a clone of this validator (or return NULL) - currently necessary - // if you're passing a reference to a validator. - // Another possibility is to always pass a pointer to a new validator - // (so the calling code can use a copy constructor of the relevant class). - virtual wxValidator *Clone(void) const { return (wxValidator *) NULL; } - inline bool Copy(const wxValidator& val) { m_validatorWindow = val.m_validatorWindow; return TRUE; } - - // Called when the value in the window must be validated. - // This function can pop up an error message. - virtual bool Validate(wxWindow *WXUNUSED(parent)) { return FALSE; }; - - // Called to transfer data to the window - virtual bool TransferToWindow(void) { return FALSE; } - - // Called to transfer data from the window - virtual bool TransferFromWindow(void) { return FALSE; }; - - // ACCESSORS - inline wxWindow *GetWindow(void) const { return m_validatorWindow; } - inline void SetWindow(wxWindow *win) { m_validatorWindow = win; } - -protected: - wxWindow *m_validatorWindow; -}; - -WXDLLEXPORT_DATA(extern const wxValidator) wxDefaultValidator; - -#endif - // _WX_VALIDATEH__ diff --git a/include/wx/valtext.h b/include/wx/valtext.h deleted file mode 100644 index bd2bb8d93b..0000000000 --- a/include/wx/valtext.h +++ /dev/null @@ -1,77 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: valtext.h -// Purpose: wxTextValidator class -// Author: Julian Smart -// Modified by: -// Created: 29/01/98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Julian Smart -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_VALTEXTH__ -#define _WX_VALTEXTH__ - -#ifdef __GNUG__ -#pragma interface "valtext.h" -#endif - -#include "wx/validate.h" - -#define wxFILTER_NONE 0x0000 -#define wxFILTER_ASCII 0x0001 -#define wxFILTER_ALPHA 0x0002 -#define wxFILTER_ALPHANUMERIC 0x0004 -#define wxFILTER_NUMERIC 0x0008 -#define wxFILTER_INCLUDE_LIST 0x0010 -#define wxFILTER_EXCLUDE_LIST 0x0020 - -class WXDLLEXPORT wxTextValidator: public wxValidator -{ -DECLARE_DYNAMIC_CLASS(wxTextValidator) -public: - wxTextValidator(long style = wxFILTER_NONE, wxString *val = (wxString *) NULL); - wxTextValidator(const wxTextValidator& val); - - ~wxTextValidator(); - - // Make a clone of this validator (or return NULL) - currently necessary - // if you're passing a reference to a validator. - // Another possibility is to always pass a pointer to a new validator - // (so the calling code can use a copy constructor of the relevant class). - virtual wxValidator *Clone(void) const { return new wxTextValidator(*this); } - bool Copy(const wxTextValidator& val); - - // Called when the value in the window must be validated. - // This function can pop up an error message. - virtual bool Validate(wxWindow *parent); - - // Called to transfer data to the window - virtual bool TransferToWindow(void); - - // Called to transfer data to the window - virtual bool TransferFromWindow(void); - - // ACCESSORS - inline long GetStyle(void) const { return m_validatorStyle; } - inline void SetStyle(long style) { m_validatorStyle = style; } - - void SetIncludeList(const wxStringList& list); - inline wxStringList& GetIncludeList(void) { return m_includeList; } - - void SetExcludeList(const wxStringList& list); - inline wxStringList& GetExcludeList(void) { return m_excludeList; } - - // Filter keystrokes - void OnChar(wxKeyEvent& event); - -DECLARE_EVENT_TABLE() - -protected: - long m_validatorStyle; - wxString * m_stringValue; - wxStringList m_includeList; - wxStringList m_excludeList; -}; - -#endif diff --git a/include/wx/variant.h b/include/wx/variant.h deleted file mode 100644 index 4956e3283a..0000000000 --- a/include/wx/variant.h +++ /dev/null @@ -1,248 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: variant.h -// Purpose: wxVariant class, container for any type -// Author: Julian Smart -// Modified by: -// Created: 10/09/98 -// RCS-ID: $Id$ -// Copyright: (c) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_VARIANT_H_ -#define _WX_VARIANT_H_ - -#ifdef __GNUG__ -#pragma interface "variant.h" -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/string.h" -#include "wx/list.h" - -#if wxUSE_TIMEDATE -#include "wx/time.h" -#include "wx/date.h" -#endif - -#if wxUSE_IOSTREAMH -#include -#else -#include -# ifdef _MSC_VER - using namespace std; -# endif -#endif - -/* - * wxVariantData stores the actual data in a wxVariant object, - * to allow it to store any type of data. - * Derive from this to provide custom data handling. - * - * TODO: in order to replace wxPropertyValue, we would need - * to consider adding constructors that take pointers to C++ variables, - * or removing that functionality from the wxProperty library. - * Essentially wxPropertyValue takes on some of the wxValidator functionality - * by storing pointers and not just actual values, allowing update of C++ data - * to be handled automatically. Perhaps there's another way of doing this without - * overloading wxVariant with unnecessary functionality. - */ - -class WXDLLEXPORT wxVariantData: public wxObject -{ -DECLARE_ABSTRACT_CLASS(wxVariantData) -public: - -// Construction & destruction - wxVariantData() {}; - -// Override these to provide common functionality - // Copy to data - virtual void Copy(wxVariantData& data) = 0; - virtual bool Eq(wxVariantData& data) const = 0; - virtual bool Write(ostream& str) const = 0; - virtual bool Write(wxString& str) const = 0; - virtual bool Read(istream& str) = 0; - virtual bool Read(wxString& str) = 0; - // What type is it? Return a string name. - virtual wxString GetType() const = 0; -}; - -/* - * wxVariant can store any kind of data, but has some basic types - * built in. - * NOTE: this eventually should have a reference-counting implementation. - * PLEASE, if you change it to ref-counting, make sure it doesn't involve bloating - * this class too much. - */ - -class WXDLLEXPORT wxVariant: public wxObject -{ -DECLARE_DYNAMIC_CLASS(wxVariant) -public: - -// Construction & destruction - wxVariant(); - wxVariant(double val, const wxString& name = g_szNul); - wxVariant(long val, const wxString& name = g_szNul); - wxVariant(bool val, const wxString& name = g_szNul); - wxVariant(char val, const wxString& name = g_szNul); - wxVariant(const wxString& val, const wxString& name = g_szNul); - wxVariant(const char* val, const wxString& name = g_szNul); // Necessary or VC++ assumes bool! - wxVariant(const wxStringList& val, const wxString& name = g_szNul); - wxVariant(const wxList& val, const wxString& name = g_szNul); // List of variants -#if wxUSE_TIMEDATE - wxVariant(const wxTime& val, const wxString& name = g_szNul); // Time - wxVariant(const wxDate& val, const wxString& name = g_szNul); // Date -#endif - wxVariant(void* ptr, const wxString& name = g_szNul); // void* (general purpose) - wxVariant(wxVariantData* data, const wxString& name = g_szNul); // User-defined data - wxVariant(const wxVariant& variant); - ~wxVariant(); - -// Generic operators - // Assignment - void operator= (const wxVariant& variant); - - // Assignment using data, e.g. - // myVariant = new wxStringVariantData("hello"); - void operator= (wxVariantData* variantData); - bool operator== (const wxVariant& variant) const; - bool operator!= (const wxVariant& variant) const; - -// Specific operators - bool operator== (double value) const; - bool operator!= (double value) const; - void operator= (double value) ; - bool operator== (long value) const; - bool operator!= (long value) const; - void operator= (long value) ; - bool operator== (char value) const; - bool operator!= (char value) const; - void operator= (char value) ; - bool operator== (bool value) const; - bool operator!= (bool value) const; - void operator= (bool value) ; - bool operator== (const wxString& value) const; - bool operator!= (const wxString& value) const; - void operator= (const wxString& value) ; - void operator= (const char* value) ; // Necessary or VC++ assumes bool! - bool operator== (const wxStringList& value) const; - bool operator!= (const wxStringList& value) const; - void operator= (const wxStringList& value) ; - bool operator== (const wxList& value) const; - bool operator!= (const wxList& value) const; - void operator= (const wxList& value) ; -#if wxUSE_TIMEDATE - bool operator== (const wxTime& value) const; - bool operator!= (const wxTime& value) const; - void operator= (const wxTime& value) ; - bool operator== (const wxDate& value) const; - bool operator!= (const wxDate& value) const; - void operator= (const wxDate& value) ; -#endif - bool operator== (void* value) const; - bool operator!= (void* value) const; - void operator= (void* value) ; - - // Treat a list variant as an array - wxVariant operator[] (size_t idx) const; - wxVariant& operator[] (size_t idx) ; - - // Implicit conversion to a wxString - inline operator wxString () const { return MakeString(); } - wxString MakeString() const; - - // Other implicit conversions - inline operator double () const { return GetDouble(); } - inline operator char () const { return GetChar(); } - inline operator long () const { return GetLong(); } - inline operator bool () const { return GetBool(); } -#if wxUSE_TIMEDATE - inline operator wxTime () const { return GetTime(); } - inline operator wxDate () const { return GetDate(); } -#endif - inline operator void* () const { return GetVoidPtr(); } - -// Accessors - // Sets/gets name - inline void SetName(const wxString& name) { m_name = name; } - inline const wxString& GetName() const { return m_name; } - - // Tests whether there is data - inline bool IsNull() const { return (m_data == (wxVariantData*) NULL); } - - wxVariantData* GetData() const { return m_data; } - void SetData(wxVariantData* data) ; - - // Returns a string representing the type of the variant, - // e.g. "string", "bool", "stringlist", "list", "double", "long" - wxString GetType() const; - - bool IsType(const wxString& type) const; - - // Return the number of elements in a list - int GetCount() const; - -// Value accessors - double GetReal() const ; - inline double GetDouble() const { return GetReal(); }; - long GetInteger() const ; - inline long GetLong() const { return GetInteger(); }; - char GetChar() const ; - bool GetBool() const ; - wxString GetString() const ; - wxList& GetList() const ; - wxStringList& GetStringList() const ; -#if wxUSE_TIMEDATE - wxTime GetTime() const ; - wxDate GetDate() const ; -#endif - void* GetVoidPtr() const ; - -// Operations - // Make NULL (i.e. delete the data) - void MakeNull(); - - // Make empty list - void NullList(); - - // Append to list - void Append(const wxVariant& value); - - // Insert at front of list - void Insert(const wxVariant& value); - - // Returns TRUE if the variant is a member of the list - bool Member(const wxVariant& value) const; - - // Deletes the nth element of the list - bool Delete(int item); - - // Clear list - void ClearList(); - -// Implementation -protected: -// Type conversion - bool Convert(long* value) const; - bool Convert(bool* value) const; - bool Convert(double* value) const; - bool Convert(wxString* value) const; - bool Convert(char* value) const; -#if wxUSE_TIMEDATE - bool Convert(wxTime* value) const; - bool Convert(wxDate* value) const; -#endif - -// Attributes -protected: - wxVariantData* m_data; - wxString m_name; -}; - -extern wxVariant WXDLLEXPORT wxNullVariant; - -#endif - // _WX_VARIANT_H_ diff --git a/include/wx/version.h b/include/wx/version.h deleted file mode 100644 index 07fa7a7293..0000000000 --- a/include/wx/version.h +++ /dev/null @@ -1,25 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: version.h -// Purpose: wxWindows version numbers -// Author: Julian Smart -// Modified by: -// Created: 29/01/98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Julian Smart -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_VERSIONH__ -#define _WX_VERSIONH__ - -/* Bump-up with each new version */ -#define wxMAJOR_VERSION 2 -#define wxMINOR_VERSION 0 -#define wxRELEASE_NUMBER 1 -#define wxVERSION_STRING "wxWindows 2.0.1" -#define wxVERSION_NUMBER (wxMAJOR_VERSION * 1000) + (wxMINOR_VERSION * 100) + wxRELEASE_NUMBER -#define wxBETA_NUMBER 17 -#define wxVERSION_FLOAT wxMAJOR_VERSION + (wxMINOR_VERSION/10.0) + (wxRELEASE_NUMBER/100.0) + (wxBETA_NUMBER/10000.0) - -#endif - // _WX_VERSIONH__ diff --git a/include/wx/wave.h b/include/wx/wave.h deleted file mode 100644 index cd61bad818..0000000000 --- a/include/wx/wave.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef _WX_WAVE_H_BASE_ -#define _WX_WAVE_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/wave.h" -#elif defined(__WXGTK__) -#include "wx/gtk/wave.h" -#elif defined(__WXQT__) -#include "wx/qt/wave.h" -#endif - -#endif - // _WX_TREECTRL_H_BASE_ diff --git a/include/wx/wfstream.h b/include/wx/wfstream.h deleted file mode 100644 index 29f13ca1e4..0000000000 --- a/include/wx/wfstream.h +++ /dev/null @@ -1,81 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: wfstream.h -// Purpose: File stream classes -// Author: Guilhem Lavaux -// Modified by: -// Created: 11/07/98 -// RCS-ID: $Id$ -// Copyright: (c) Guilhem Lavaux -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_WXFSTREAM_H__ -#define _WX_WXFSTREAM_H__ - -#ifdef __GNUG__ -#pragma interface "wfstream.h" -#endif - -#include -#include -#include -#include - -class wxFileInputStream: public wxInputStream { - public: - wxFileInputStream(const wxString& ifileName); - wxFileInputStream(wxFile& file); - wxFileInputStream(int fd); - ~wxFileInputStream(); - - char Peek(); - size_t StreamSize() const; - - bool Ok() const { return m_file->IsOpened(); } - - protected: - wxFileInputStream(); - - size_t OnSysRead(void *buffer, size_t size); - off_t OnSysSeek(off_t pos, wxSeekMode mode); - off_t OnSysTell() const; - - protected: - wxFile *m_file; - bool m_file_destroy; -}; - -class wxFileOutputStream: public wxOutputStream { - public: - wxFileOutputStream(const wxString& fileName); - wxFileOutputStream(wxFile& file); - wxFileOutputStream(int fd); - virtual ~wxFileOutputStream(); - - // To solve an ambiguity on GCC - inline wxOutputStream& Write(const void *buffer, size_t size) - { return wxOutputStream::Write(buffer, size); } - - void Sync(); - size_t StreamSize() const; - - bool Ok() const { return m_file->IsOpened(); } - - protected: - wxFileOutputStream(); - - size_t OnSysWrite(const void *buffer, size_t size); - off_t OnSysSeek(off_t pos, wxSeekMode mode); - off_t OnSysTell() const; - - protected: - wxFile *m_file; - bool m_file_destroy; -}; - -class wxFileStream: public wxFileInputStream, public wxFileOutputStream { - public: - wxFileStream(const wxString& fileName); -}; - -#endif diff --git a/include/wx/window.h b/include/wx/window.h deleted file mode 100644 index 583eb9fb07..0000000000 --- a/include/wx/window.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef _WX_WINDOW_H_BASE_ -#define _WX_WINDOW_H_BASE_ - -#if defined(__WXMSW__) -#include "wx/msw/window.h" -#elif defined(__WXMOTIF__) -#include "wx/motif/window.h" -#elif defined(__WXGTK__) -#include "wx/gtk/window.h" -#elif defined(__WXQT__) -#include "wx/qt/window.h" -#elif defined(__WXMAC__) -#include "wx/mac/window.h" -#elif defined(__WXSTUBS__) -#include "wx/stubs/window.h" -#endif - -#endif - // _WX_WINDOW_H_BASE_ diff --git a/include/wx/wx.h b/include/wx/wx.h deleted file mode 100644 index 6fab5a9334..0000000000 --- a/include/wx/wx.h +++ /dev/null @@ -1,75 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: wx.h -// Purpose: wxWindows main include file -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_WXH__ -#define _WX_WXH__ - -#include "wx/setup.h" // Which features to include - user editable -#include "wx/defs.h" -#include "wx/string.h" -#include "wx/log.h" -#include "wx/window.h" -#include "wx/panel.h" -#include "wx/frame.h" -#include "wx/dc.h" -#include "wx/dcclient.h" -#include "wx/dcmemory.h" -#include "wx/dcprint.h" -#include "wx/dcscreen.h" -#include "wx/button.h" -#include "wx/bmpbuttn.h" -#include "wx/checkbox.h" -#include "wx/choice.h" -#include "wx/scrolbar.h" -#include "wx/stattext.h" -#include "wx/statbmp.h" -#include "wx/statbox.h" -#include "wx/listbox.h" -#include "wx/radiobox.h" -#include "wx/radiobut.h" -#include "wx/textctrl.h" -#include "wx/slider.h" -#include "wx/gauge.h" -#include "wx/combobox.h" -#include "wx/menu.h" -#include "wx/app.h" -#include "wx/event.h" -#include "wx/list.h" -#include "wx/pen.h" -#include "wx/brush.h" -#include "wx/palette.h" -#include "wx/icon.h" -#include "wx/cursor.h" -#include "wx/dialog.h" -#include "wx/timer.h" -#include "wx/utils.h" -#include "wx/settings.h" -#include "wx/layout.h" -#include "wx/memory.h" -#include "wx/mdi.h" -#include "wx/scrolwin.h" -#include "wx/statusbr.h" -#include "wx/scrolbar.h" -#include "wx/msgdlg.h" -#include "wx/choicdlg.h" -#include "wx/textdlg.h" -#include "wx/filedlg.h" -#include "wx/dirdlg.h" -#include "wx/cmndata.h" -#include "wx/intl.h" -#include "wx/valtext.h" -#if wxUSE_SERIAL -#include "wx/objstrm.h" -#include "wx/serbase.h" -#endif - -#endif - // _WX_WXH__ diff --git a/include/wx/wx_cw.h b/include/wx/wx_cw.h deleted file mode 100644 index c8bf670a26..0000000000 --- a/include/wx/wx_cw.h +++ /dev/null @@ -1,38 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: wx_cw.h -// Purpose: wxWindows definitions for CodeWarrior builds -// Author: Stefan Csomor -// Modified by: -// Created: 12/10/98 -// RCS-ID: $Id$ -// Copyright: (c) Stefan Csomor -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_CW__ -#define _WX_CW__ - -#ifdef __cplusplus - #if __POWERPC__ - #include - #elif __INTEL__ - #include - #elif __CFM68K__ - #include - #else - #include - #endif -#else - #if __POWERPC__ - #include - #elif __INTEL__ - #include - #elif __CFM68K__ - #include - #else - #include - #endif -#endif - -#endif - // _WX_CW__ diff --git a/include/wx/wx_cw_cm.h b/include/wx/wx_cw_cm.h deleted file mode 100644 index b332079e91..0000000000 --- a/include/wx/wx_cw_cm.h +++ /dev/null @@ -1,45 +0,0 @@ -#define MSL_USE_PRECOMPILED_HEADERS 1 - -#if !defined( __MWERKS__ ) - #error "this file is only for builds with Metrowerks CodeWarrior" -#endif - -#define WX_COMP_INLINE_NO_CLASS // defined if the compiler does not want the classname repeated for inlines within a class definition - -#if (__MWERKS__ < 0x0900) || macintosh - #define __MAC__ - #define __WXMAC__ - #define USE_PRECOMPILED_MAC_HEADERS 1 /*Set to 0 if you don't want to use precompiled MacHeaders*/ -// automatically includes MacHeaders -#elif (__MWERKS__ >= 0x0900) && __INTEL__ - #define __WXMSW__ - #define __WINDOWS__ - #define __WIN95__ - #define STRICT - #define NOMINMAX -#elif __BEOS__ - #include - #include -#else - #error unknown MW compiler -#endif - -#ifdef __WXMSW__ - #include -#elif defined( __WXMAC__) - #include -#endif - -#define USE_DEFINE -// in order to avoid problems further down in wxWindows - -#ifdef __cplusplus -extern "C" -{ -#endif - char *strdup(const char *s) ; - int isascii( int c ) ; -#ifdef __cplusplus -} ; -#endif - diff --git a/include/wx/wx_cw_d.h b/include/wx/wx_cw_d.h deleted file mode 100644 index f56d8cdc0a..0000000000 --- a/include/wx/wx_cw_d.h +++ /dev/null @@ -1,38 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: wx_cw_d.h -// Purpose: wxWindows definitions for CodeWarrior builds (Debug) -// Author: Stefan Csomor -// Modified by: -// Created: 12/10/98 -// RCS-ID: $Id$ -// Copyright: (c) Stefan Csomor -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_CW__ -#define _WX_CW__ - -#ifdef __cplusplus - #if __POWERPC__ - #include - #elif __INTEL__ - #include - #elif __CFM68K__ - #include - #else - #include - #endif -#else - #if __POWERPC__ - #include - #elif __INTEL__ - #include - #elif __CFM68K__ - #include - #else - #include - #endif -#endif - -#endif - // _WX_CW__ diff --git a/include/wx/wxchar.h b/include/wx/wxchar.h deleted file mode 100644 index 9083a4c7bf..0000000000 --- a/include/wx/wxchar.h +++ /dev/null @@ -1,247 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: wxchar.h -// Purpose: Declarations common to wx char/wchar_t usage (wide chars) -// Author: Joel Farley -// Modified by: -// Created: 1998/06/12 -// RCS-ID: $Id$ -// Copyright: (c) wxWindows copyright -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_WXCHAR_H_ -#define _WX_WXCHAR_H_ - -#ifdef __GNUG__ -#pragma interface "wxchar.h" -#endif - -// only do SBCS or _UNICODE -#if defined (_MBCS ) -#error "MBCS is not supported by wxChar" -#endif - -// only do Unicode for Windows (VC++), for now -#if defined(_MSC_VER) && defined(__WIN32__) - -#include -typedef _TCHAR wxChar; -typedef _TSCHAR wxSChar; -typedef _TUCHAR wxUChar; - - // ctype.h functions -#define wxIsalnum _istalnum -#define wxIsalpha _istalpha -#define wxIsctrl _istctrl -#define wxIsdigit _istdigit -#define wxIsgraph _istgraph -#define wxIslower _istlower -#define wxIsprint _istprint -#define wxIspunct _istpunct -#define wxIsspace _istspace -#define wxIsupper _istupper -#define wxIsxdigit _istxdigit -#define wxTolower _totlower -#define wxToupper _totupper - - // locale.h functons -#define wxSetlocale _tsetlocale - - // string.h functions -#define wxStrcat _tcscat -#define wxStrchr _tcschr -#define wxStrcmp _tcscmp -#define wxStrcoll _tcscoll -#define wxStrcpy _tcscpy -#define wxStrcspn _tcscspn -#define wxStrftime _tcsftime -#define wxStrncat _tcsncat -#define wxStrncmp _tcsncmp -#define wxStrncpy _tcsncpy -#define wxStrpbrk _tcspbrk -#define wxStrrchr _tcsrchr -#define wxStrspn _tcsspn -#define wxStrstr _tcsstr -#define wxStrtod _tcstod -#define wxStrtok _tcstok -#define wxStrtol _tcstol -#define wxStrtoul _tcstoul -#define wxStrxfrm _tcsxfrm - - // stdio.h functions -#define wxFgetc _fgettc -#define wxFgetchar _fgettchar -#define wxFgets _fgetts -#define wxFopen _tfopen -#define wxFputc _fputtc -#define wxFputchar _fputtchar -#define wxFprintf _ftprintf -#define wxFreopen _tfreopen -#define wxFscanf _ftscanf -#define wxGetc _gettc -#define wxGetchar _gettchar -#define wxGets _getts -#define wxPerror _tperror -#define wxPrintf _tprintf -#define wxPutc _puttc -#define wxPutchar _puttchar -#define wxPuts _putts -#define wxRemove _tremove -#define wxRename _trename -#define wxScanf _tscanf -#define wxSprintf _stprintf -#define wxSscanf _stscanf -#define wxTmpnam _ttmpnam -#define wxUngetc _tungetc -#define wxVfprint _vftprintf -#define wxVprintf _vtprintf -#define wxVsprintf _vstprintf - - // stdlib.h functions -#define wxAtoi _ttoi -#define wxAtol _ttol -#define wxGetenv _tgetenv -#define wxSystem _tsystem - - // time.h functions -#define wxAsctime _tasctime -#define wxCtime _tctime - -// #elif defined(XXX) - // #include XXX-specific files here - // typeddef YYY wxChar; - - // translate wxZZZ names - -#else//!Unicode - -// make sure we aren't doing Unicode -#if defined ( __WXUNICODE__ ) || defined ( _UNICODE ) -#error "Please define your compiler's Unicode conventions in wxChar.h" -#endif - -typedef char wxChar; -typedef signed char wxSChar; -typedef unsigned char wxUChar; - -#define _T(x) x - - // ctype.h functions -#define wxIsalnum isalnum -#define wxIsalpha isalpha -#define wxIsctrl isctrl -#define wxIsdigit isdigit -#define wxIsgraph isgraph -#define wxIslower islower -#define wxIsprint isprint -#define wxIspunct ispunct -#define wxIsspace isspace -#define wxIsupper isupper -#define wxIsxdigit isxdigit -#define wxTolower tolower -#define wxToupper toupper - - // locale.h functons -#define wxSetlocale setlocale - - // string.h functions -#define wxStrcat strcat -#define wxStrchr strchr -#define wxStrcmp strcmp -#define wxStrcoll strcoll -#define wxStrcpy strcpy -#define wxStrcspn strcspn -#define wxStrftime strftime -#define wxStrncat strncat -#define wxStrncmp strncmp -#define wxStrncpy strncpy -#define wxStrpbrk strpbrk -#define wxStrrchr strrchr -#define wxStrspn strspn -#define wxStrstr strstr -#define wxStrtod strtod -#define wxStrtok strtok -#define wxStrtol strtol -#define wxStrtoul strtoul -#define wxStrxfrm strxfrm - - // stdio.h functions -#define wxFgetc fgetc -#define wxFgetchar fgetchar -#define wxFgets fgets -#define wxFopen fopen -#define wxFputc fputc -#define wxFputchar fputchar -#define wxFprintf fprintf -#define wxFreopen freopen -#define wxFscanf fscanf -#define wxGetc getc -#define wxGetchar getchar -#define wxGets gets -#define wxPerror perror -#define wxPrintf printf -#define wxPutc putc -#define wxPutchar putchar -#define wxPuts puts -#define wxRemove remove -#define wxRename rename -#define wxScanf scanf -#define wxSprintf sprintf -#define wxSscanf sscanf -#define wxTmpnam tmpnam -#define wxUngetc ungetc -#define wxVfprint vfprintf -#define wxVprintf vprintf -#define wxVsprintf vsprintf - - // stdlib.h functions -#define wxAtoi atoi -#define wxAtol atol -#define wxGetenv getenv -#define wxSystem system - - // time.h functions -#define wxAsctime asctime -#define wxCtime ctime - -#endif//Unicode - - -/// checks whether the passed in pointer is NULL and if the string is empty -inline bool WXDLLEXPORT wxIsEmpty(const wxChar *p) { return !p || !*p; } - -/// safe version of strlen() (returns 0 if passed NULL pointer) -inline size_t WXDLLEXPORT wxStrlen(const wxChar *psz) -#if defined(_MSC_VER) - { return psz ? _tcslen(psz) : 0; } -#else - { return psz ? strlen(psz) : 0; } -#endif - -/// portable strcasecmp/_stricmp -inline int WXDLLEXPORT wxStricmp(const wxChar *, const wxChar *) -#if defined(_MSC_VER) - { return _tcsicmp(psz1, psz2); } -#elif defined(__BORLANDC__) - { return stricmp(psz1, psz2); } -#elif defined(__UNIX__) || defined(__GNUWIN32__) - { return strcasecmp(psz1, psz2); } -#else - // almost all compilers/libraries provide this function (unfortunately under - // different names), that's why we don't implement our own which will surely - // be more efficient than this code (uncomment to use): - /* - register char c1, c2; - do { - c1 = tolower(*psz1++); - c2 = tolower(*psz2++); - } while ( c1 && (c1 == c2) ); - - return c1 - c2; - */ - - #error "Please define string case-insensitive compare for your OS/compiler" -#endif // OS/compiler - -#endif - //_WX_WXCHAR_H_ diff --git a/include/wx/wxexpr.h b/include/wx/wxexpr.h deleted file mode 100644 index 76aad36b0d..0000000000 --- a/include/wx/wxexpr.h +++ /dev/null @@ -1,287 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: wxexpr.h -// Purpose: Prolog-like file I/O, used by resource system. -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_WXEXPRH__ -#define _WX_WXEXPRH__ - -#ifdef __GNUG__ -#pragma interface "wxexpr.h" -#endif - -#include - -#include "wx/defs.h" -#include "wx/string.h" - -#if wxUSE_IOSTREAMH -#include -#else -#include -# ifdef _MSC_VER - using namespace std; -# endif -#endif - -#include "wx/list.h" -#include "wx/hash.h" - -#include "wx/expr.h" - -// Compatibility -#define PrologExpr wxExpr -#define PrologDatabase wxExprDatabase -#define proioErrorHandler wxExprErrorHandler -#define PROIO_ERROR_GENERAL 1 -#define PROIO_ERROR_SYNTAX 2 -#define PrologNull wxExprNull -#define PrologInteger wxExprInteger -#define PrologReal wxExprReal -#define PrologWord wxExprWord -#define PrologString wxExprString -#define PrologList wxExprList -#define PrologType wxExprType - -// Error types -#define WXEXPR_ERROR_GENERAL 1 -#define WXEXPR_ERROR_SYNTAX 2 - -// Error handler function definition. If app returns TRUE, -// carry on processing. -typedef bool (*wxExprErrorHandler) (int errorType, char *msg); - -WXDLLEXPORT_DATA(extern wxExprErrorHandler) currentwxExprErrorHandler; - -extern "C" WXDLLEXPORT_DATA(FILE*) yyin; - -extern "C" WXDLLEXPORT int yyparse(void); - -typedef enum { - wxExprNull, - wxExprInteger, - wxExprReal, - wxExprWord, - wxExprString, - wxExprList -} wxExprType; - -class WXDLLEXPORT wxExprDatabase; - -class WXDLLEXPORT wxExpr -{ - public: - wxObject *client_data; - wxExprType type; - union { - long integer; - char *word; - char *string; - double real; - wxExpr *first; // If is a list expr, points to the first node - } value; - - wxExpr *next; // If this is a node in a list, points to the next node - wxExpr *last; // If is a list expr, points to the last node - - wxExpr(wxExprType the_type, char *word_or_string, bool allocate); - wxExpr(const wxString& functor); // Assume this is a new clause - pass functor - wxExpr(wxExprType the_type, const wxString& word_or_string = ""); - wxExpr(long the_integer); - wxExpr(double the_real); - wxExpr(wxList *the_list); - ~wxExpr(void); - - inline wxExprType Type(void) const { return type; } - inline long IntegerValue(void) const - { - if (type == wxExprInteger) - return value.integer; - else if (type == wxExprReal) - return (long)value.real; - else return 0; - } - - inline double RealValue(void) const { - if (type == wxExprReal) - return value.real; - else if (type == wxExprInteger) - return (double)value.integer; - else return (double)0.0; - } - - inline wxString WordValue(void) const { - if (type == wxExprWord) - return value.word; - else if (type == wxExprString) - return wxString(value.string); - else return wxString(""); - } - - inline wxString StringValue(void) const { - if (type == wxExprString) - return wxString(value.string); - else if (type == wxExprWord) - return wxString(value.word); - else return wxString(""); - } - - // Get nth arg of clause (starting from 1) - wxExpr *Arg(wxExprType type, int arg) const; - - // Return nth argument of a list expression (starting from zero) - wxExpr *Nth(int arg) const; - - // Returns the number of elements in a list expression - int Number(void) const; - - // Make a clone - wxExpr *Copy(void) const; - - wxExpr *GetAttributeValueNode(const wxString& word) const; // Use only for a clause or list - wxExpr *AttributeValue(const wxString& word) const; // Use only for a clause - wxString Functor(void) const; // Only for a clause - bool IsFunctor(const wxString& s) const; // Only for a clause - void WriteClause(ostream& stream); // Write this expression as a top-level clause - void WriteExpr(ostream& stream); // Write as any other subexpression - void WriteLispExpr(ostream& stream); - - // Append an expression to a list - void Append(wxExpr *expr); - // Insert at beginning of list - void Insert(wxExpr *expr); - - // Get first expr in list - inline wxExpr *GetFirst(void) const { return ((type == wxExprList) ? value.first : (wxExpr*)NULL); } - - // Get next expr if this is a node in a list - inline wxExpr *GetNext(void) const { return next; } - - // Get last expr in list - inline wxExpr *GetLast(void) const { return ((type == wxExprList) ? last : (wxExpr*)NULL); } - - // This should really be called SetAttributeValue since any existing - // attribute-value is deleted first. - void AddAttributeValue(const wxString& attribute, long value); - void AddAttributeValue(const wxString& attribute, double value); - void AddAttributeValueWord(const wxString& attribute, const wxString& value); - void AddAttributeValueString(const wxString& attribute, const wxString& value); - void AddAttributeValue(const wxString& attribute, wxList *value); - void AddAttributeValue(const wxString& attribute, wxExpr *value); - void AddAttributeValueStringList(const wxString& attribute, wxList *string_list); - - void DeleteAttributeValue(const wxString& attribute); - - bool GetAttributeValue(const wxString& att, int& var) const; - bool GetAttributeValue(const wxString& att, long& var) const; - bool GetAttributeValue(const wxString& att, float& var) const; - bool GetAttributeValue(const wxString& att, double& var) const; - bool GetAttributeValue(const wxString& att, wxString& var) const; // Word OR string -> string - bool GetAttributeValue(const wxString& att, wxExpr **var) const; - - // Compatibility with old PrologIO - inline void AssignAttributeValue(char *att, int *var) const { GetAttributeValue(att, *var); } - inline void AssignAttributeValue(char *att, long *var) const { GetAttributeValue(att, *var); } - inline void AssignAttributeValue(char *att, float *var) const { GetAttributeValue(att, *var); } - inline void AssignAttributeValue(char *att, double *var) const { GetAttributeValue(att, *var); } - inline void AssignAttributeValue(char *att, wxExpr **var) const { GetAttributeValue(att, var); } - void AssignAttributeValue(char *att, char **var) const ; // Word OR string -> string - - // Add string items to list if the list attribute exists - bool GetAttributeValueStringList(const wxString& att, wxList *var) const; - - // Associate other data with this expression, e.g. when reading in a - // number of linked items - store C++ object pointer with the expression - // so we can index into the wxExpr database and fish out the pointer. - inline void SetClientData(wxObject *data) { client_data = data; } - inline wxObject *GetClientData(void) const { return client_data; } -}; - -class WXDLLEXPORT wxExprDatabase: public wxList -{ -private: - wxNode *position; // Where we are in a search - wxHashTable *hash_table; - wxString attribute_to_hash; - -public: - int noErrors; - - wxExprDatabase(wxExprErrorHandler handler = 0); - - // Use hashing on both the functor, and the attribute of - // specified type (wxExprString or wxExprInteger) and name. - // So to find node 45 - // (i.e. match the clause node(id=45, ...)) - // it usually requires 1 look-up: the keys for functor and attribute - // are added together. - // Obviously if the attribute was missing in a clause, it would - // fail to be found by this method, but could be retrieved by a - // linear search using BeginFind and FindClauseByFunctor, - // or just searching through the list as per usual. - - wxExprDatabase(wxExprType type, const wxString& attribute, int size = 500, - wxExprErrorHandler handler = 0); - - ~wxExprDatabase(void); - - void BeginFind(void) ; // Initialise a search - wxExpr *FindClause(long id) ; // Find a term based on an integer id attribute - // e.g. node(id=23, type=rectangle, ....). - - // Find on basis of attribute/value pairs, e.g. type=rectangle - // This doesn't use hashing; it's a linear search. - wxExpr *FindClause(const wxString& word, const wxString& value); - wxExpr *FindClause(const wxString& word, long value); - wxExpr *FindClause(const wxString& word, double value); - wxExpr *FindClauseByFunctor(const wxString& functor); - - wxExpr *HashFind(const wxString& functor, const wxString& value) const; - wxExpr *HashFind(const wxString& functor, long value) const; - - void Append(wxExpr *expr); // Does cleverer things if hashing is on - void ClearDatabase(void); - inline int GetErrorCount() const { return noErrors; } - bool Read(const wxString& filename); - bool ReadFromString(const wxString& buffer); - bool Write(const wxString& fileName); - bool Write(ostream& stream); - void WriteLisp(ostream& stream); - - // Compatibility - inline bool ReadProlog(char *filename) { return Read(wxString(filename)); } - inline bool ReadPrologFromString(char *buffer) { return ReadFromString(wxString(buffer)); } - inline void WriteProlog(ostream& stream) { Write(stream); } - -private: - DECLARE_DYNAMIC_CLASS(wxExprDatabase) -}; - -// Function call-style interface - some more convenience wrappers/unwrappers - -// Make a call -WXDLLEXPORT wxExpr* wxExprMakeCall(const wxString& functor ...); - -#define wxExprMakeInteger(x) (new wxExpr((long)x)) -#define wxExprMakeReal(x) (new wxExpr((double)x)) -#define wxExprMakeString(x) (new wxExpr(wxExprString, x)) -#define wxExprMakeWord(x) (new wxExpr(wxExprWord, x)) -#define wxExprMake(x) (new wxExpr(x)) - -// Checks functor -WXDLLEXPORT bool wxExprIsFunctor(wxExpr *expr, const wxString& functor); - -// Temporary variable for communicating between wxexpr.cpp and YACC/LEX -WXDLLEXPORT_DATA(extern wxExprDatabase*) thewxExprDatabase; - -// YACC/LEX can leave memory lying around... -extern "C" WXDLLEXPORT int wxExprCleanUp(); - -#endif - diff --git a/include/wx/wxprec.h b/include/wx/wxprec.h deleted file mode 100644 index b1a93f2493..0000000000 --- a/include/wx/wxprec.h +++ /dev/null @@ -1,70 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: wxprec.h -// Purpose: Includes the appropriate files for precompiled headers -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -// check if to use precompiled headers -#if (defined(__BORLANDC__) || defined(_MSC_VER) || defined(__WATCOMC__)) && defined(__WXMSW__) -#if !NOPCH -#define WX_PRECOMP -#endif -#endif - -// For some reason, this must be defined for common dialogs to work. -#ifdef __WATCOMC__ -#define INCLUDE_COMMDLG_H 1 -#endif - -// include the wx definitions -#ifdef WX_PRECOMP -#include "wx/wx.h" - -// Comment this out if you don't mind slower compilation of the wxWindows -// library -#if !defined(__WXMAC__) && !defined(__SALFORDC__) -#include -#endif - -#ifdef GetClassInfo -#undef GetClassInfo -#endif - -#ifdef GetClassName -#undef GetClassName -#endif - -#ifdef DrawText -#undef DrawText -#endif - -#ifdef GetCharWidth -#undef GetCharWidth -#endif - -#ifdef StartDoc -#undef StartDoc -#endif - -#ifdef FindWindow -#undef FindWindow -#endif - -#ifdef FindResource -#undef FindResource -#endif - -#ifdef LoadAccelerators -#undef LoadAccelerators -#endif - -#else - // always include this file (under Unix it's generated by configure) - #include "wx/setup.h" -#endif - diff --git a/include/wx/xpmhand.h b/include/wx/xpmhand.h deleted file mode 100644 index 9a848a0f8c..0000000000 --- a/include/wx/xpmhand.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef _WX_XPMHAND_H_BASE_ -#define _WX_XPMHAND_H_BASE_ - -// Only wxMSW currently defines a separate XPM handler, since -// mostly Windows apps won't need XPMs. -#if defined(__WXMSW__) -#include "wx/msw/xpmhand.h" -#endif - -#endif - // _WX_XPMHAND_H_BASE_ diff --git a/include/wx/zstream.h b/include/wx/zstream.h deleted file mode 100644 index 9a4f11c6ad..0000000000 --- a/include/wx/zstream.h +++ /dev/null @@ -1,56 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: zstream.h -// Purpose: Memory stream classes -// Author: Guilhem Lavaux -// Modified by: -// Created: 11/07/98 -// RCS-ID: $Id$ -// Copyright: (c) Guilhem Lavaux -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// -#ifndef _WX_WXZSTREAM_H__ -#define _WX_WXZSTREAM_H__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" - -#if wxUSE_ZLIB - -#include - -class WXDLLEXPORT wxZlibInputStream: public wxFilterInputStream { - public: - wxZlibInputStream(wxInputStream& stream); - virtual ~wxZlibInputStream(); - - protected: - size_t OnSysRead(void *buffer, size_t size); - - protected: - size_t m_z_size; - unsigned char *m_z_buffer; - struct z_stream_s *m_inflate; -}; - -class WXDLLEXPORT wxZlibOutputStream: public wxFilterOutputStream { - public: - wxZlibOutputStream(wxOutputStream& stream); - virtual ~wxZlibOutputStream(); - - void Sync(); - - protected: - size_t OnSysWrite(const void *buffer, size_t size); - - protected: - size_t m_z_size; - unsigned char *m_z_buffer; - struct z_stream_s *m_deflate; -}; - -#endif - -#endif diff --git a/include/wx_cw.pch b/include/wx_cw.pch deleted file mode 100644 index c5efcf3859..0000000000 --- a/include/wx_cw.pch +++ /dev/null @@ -1,16 +0,0 @@ -#if __POWERPC__ - #pragma precompile_target "wx_PPC.mch" - -#elif __INTEL__ - #pragma precompile_target "wx_x86.mch" - -#elif __CFM68K__ - #pragma precompile_target "wx_cfm.mch" - -#else - #pragma precompile_target "wx_68k.mch" -#endif - -#pragma once on -#undef WX_PRECOMP -#include "wx/wx_cw_cm.h" diff --git a/include/wx_cw.pch++ b/include/wx_cw.pch++ deleted file mode 100644 index 35b82e4419..0000000000 --- a/include/wx_cw.pch++ +++ /dev/null @@ -1,19 +0,0 @@ -#if __POWERPC__ - #pragma precompile_target "wx_PPC++.mch" - -#elif __INTEL__ - - #pragma precompile_target "wx_x86++.mch" - - -#elif __CFM68K__ - #pragma precompile_target "wx_cfm++.mch" - -#else - #pragma precompile_target "wx_68k++.mch" -#endif - -#pragma once on -#define WX_PRECOMP -#include "wx/wx_cw_cm.h" -#include "wx/wxprec.h" \ No newline at end of file diff --git a/include/wx_cw_d.pch b/include/wx_cw_d.pch deleted file mode 100644 index 12b3530b86..0000000000 --- a/include/wx_cw_d.pch +++ /dev/null @@ -1,17 +0,0 @@ -#if __POWERPC__ - #pragma precompile_target "wx_PPC_d.mch" - -#elif __INTEL__ - #pragma precompile_target "wx_x86_d.mch" - -#elif __CFM68K__ - #pragma precompile_target "wx_cfm_d.mch" - -#else - #pragma precompile_target "wx_68k_d.mch" -#endif - -#pragma once on -#undef WX_PRECOMP -#define __WXDEBUG__ -#include "wx/wx_cw_cm.h" diff --git a/include/wx_cw_d.pch++ b/include/wx_cw_d.pch++ deleted file mode 100644 index 849502e79b..0000000000 --- a/include/wx_cw_d.pch++ +++ /dev/null @@ -1,20 +0,0 @@ -#if __POWERPC__ - #pragma precompile_target "wx_PPC++_d.mch" - -#elif __INTEL__ - - #pragma precompile_target "wx_x86++_d.mch" - - -#elif __CFM68K__ - #pragma precompile_target "wx_cfm++_d.mch" - -#else - #pragma precompile_target "wx_68k++_d.mch" -#endif - -#pragma once on -#define WX_PRECOMP -#define __WXDEBUG__ -#include "wx/wx_cw_cm.h" -#include "wx/wxprec.h" \ No newline at end of file diff --git a/install-sh b/install-sh deleted file mode 100755 index ebc66913e9..0000000000 --- a/install-sh +++ /dev/null @@ -1,250 +0,0 @@ -#! /bin/sh -# -# install - install a program, script, or datafile -# This comes from X11R5 (mit/util/scripts/install.sh). -# -# Copyright 1991 by the Massachusetts Institute of Technology -# -# 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. -# -# Calling this script install-sh is preferred over install.sh, to prevent -# `make' implicit rules from creating a file called install from it -# when there is no Makefile. -# -# This script is compatible with the BSD install script, but was written -# from scratch. It can only install one file at a time, a restriction -# shared with many OS's install programs. - - -# set DOITPROG to echo to test this script - -# Don't use :- since 4.3BSD and earlier shells don't like it. -doit="${DOITPROG-}" - - -# put in absolute paths if you don't have them in your path; or use env. vars. - -mvprog="${MVPROG-mv}" -cpprog="${CPPROG-cp}" -chmodprog="${CHMODPROG-chmod}" -chownprog="${CHOWNPROG-chown}" -chgrpprog="${CHGRPPROG-chgrp}" -stripprog="${STRIPPROG-strip}" -rmprog="${RMPROG-rm}" -mkdirprog="${MKDIRPROG-mkdir}" - -transformbasename="" -transform_arg="" -instcmd="$mvprog" -chmodcmd="$chmodprog 0755" -chowncmd="" -chgrpcmd="" -stripcmd="" -rmcmd="$rmprog -f" -mvcmd="$mvprog" -src="" -dst="" -dir_arg="" - -while [ x"$1" != x ]; do - case $1 in - -c) instcmd="$cpprog" - shift - continue;; - - -d) dir_arg=true - shift - continue;; - - -m) chmodcmd="$chmodprog $2" - shift - shift - continue;; - - -o) chowncmd="$chownprog $2" - shift - shift - continue;; - - -g) chgrpcmd="$chgrpprog $2" - shift - shift - continue;; - - -s) stripcmd="$stripprog" - shift - continue;; - - -t=*) transformarg=`echo $1 | sed 's/-t=//'` - shift - continue;; - - -b=*) transformbasename=`echo $1 | sed 's/-b=//'` - shift - continue;; - - *) if [ x"$src" = x ] - then - src=$1 - else - # this colon is to work around a 386BSD /bin/sh bug - : - dst=$1 - fi - shift - continue;; - esac -done - -if [ x"$src" = x ] -then - echo "install: no input file specified" - exit 1 -else - true -fi - -if [ x"$dir_arg" != x ]; then - dst=$src - src="" - - if [ -d $dst ]; then - instcmd=: - else - instcmd=mkdir - fi -else - -# Waiting for this to be detected by the "$instcmd $src $dsttmp" command -# might cause directories to be created, which would be especially bad -# if $src (and thus $dsttmp) contains '*'. - - if [ -f $src -o -d $src ] - then - true - else - echo "install: $src does not exist" - exit 1 - fi - - if [ x"$dst" = x ] - then - echo "install: no destination specified" - exit 1 - else - true - fi - -# If destination is a directory, append the input filename; if your system -# does not like double slashes in filenames, you may need to add some logic - - if [ -d $dst ] - then - dst="$dst"/`basename $src` - else - true - fi -fi - -## this sed command emulates the dirname command -dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` - -# Make sure that the destination directory exists. -# this part is taken from Noah Friedman's mkinstalldirs script - -# Skip lots of stat calls in the usual case. -if [ ! -d "$dstdir" ]; then -defaultIFS=' -' -IFS="${IFS-${defaultIFS}}" - -oIFS="${IFS}" -# Some sh's can't handle IFS=/ for some reason. -IFS='%' -set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` -IFS="${oIFS}" - -pathcomp='' - -while [ $# -ne 0 ] ; do - pathcomp="${pathcomp}${1}" - shift - - if [ ! -d "${pathcomp}" ] ; - then - $mkdirprog "${pathcomp}" - else - true - fi - - pathcomp="${pathcomp}/" -done -fi - -if [ x"$dir_arg" != x ] -then - $doit $instcmd $dst && - - if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && - if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi -else - -# If we're going to rename the final executable, determine the name now. - - if [ x"$transformarg" = x ] - then - dstfile=`basename $dst` - else - dstfile=`basename $dst $transformbasename | - sed $transformarg`$transformbasename - fi - -# don't allow the sed command to completely eliminate the filename - - if [ x"$dstfile" = x ] - then - dstfile=`basename $dst` - else - true - fi - -# Make a temp file name in the proper directory. - - dsttmp=$dstdir/#inst.$$# - -# Move or copy the file name to the temp name - - $doit $instcmd $src $dsttmp && - - trap "rm -f ${dsttmp}" 0 && - -# and set any options; do chmod last to preserve setuid bits - -# If any of these fail, we abort the whole thing. If we want to -# ignore errors from any of these, just make sure not to ignore -# errors from the above "$doit $instcmd $src $dsttmp" command. - - if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && - if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && - -# Now rename the file to the real destination. - - $doit $rmcmd -f $dstdir/$dstfile && - $doit $mvcmd $dsttmp $dstdir/$dstfile - -fi && - - -exit 0 diff --git a/lib/.cvsignore b/lib/.cvsignore deleted file mode 100644 index 4646a42c35..0000000000 --- a/lib/.cvsignore +++ /dev/null @@ -1,3 +0,0 @@ -Linux -linux-gnu -linux diff --git a/lib/dummy b/lib/dummy deleted file mode 100644 index bfdf726d49..0000000000 --- a/lib/dummy +++ /dev/null @@ -1 +0,0 @@ -I'm just here to force the creation of a LIB directory. diff --git a/misc/afm/Cour.afm b/misc/afm/Cour.afm deleted file mode 100644 index f54e284ba7..0000000000 --- a/misc/afm/Cour.afm +++ /dev/null @@ -1,341 +0,0 @@ -StartFontMetrics 2.0 -Comment Copyright (c) 1984 Adobe Systems Incorporated. All Rights Reserved. -Comment Creation Date:Wed Feb 25 16:01:10 PST 1987 -FontName Courier -EncodingScheme AdobeStandardEncoding -FullName Courier -FamilyName Courier -Weight Medium -ItalicAngle 0.0 -IsFixedPitch true -UnderlinePosition -82 -UnderlineThickness 40 -Version 001.003 -FontBBox -40 -290 640 795 -CapHeight 583 -XHeight 437 -Descender -207 -Ascender 624 -StartCharMetrics 260 -C 32 ; WX 600 ; N space ; B 560 -40 640 40 ; -C 33 ; WX 600 ; N exclam ; B 240 -5 360 639 ; -C 34 ; WX 600 ; N quotedbl ; B 126 314 474 603 ; -C 35 ; WX 600 ; N numbersign ; B 72 -82 528 665 ; -C 36 ; WX 600 ; N dollar ; B 93 -113 507 675 ; -C 37 ; WX 600 ; N percent ; B 67 -35 533 639 ; -C 38 ; WX 600 ; N ampersand ; B 85 -35 498 540 ; -C 39 ; WX 600 ; N quoteright ; B 135 304 340 613 ; -C 40 ; WX 600 ; N parenleft ; B 274 -144 478 623 ; -C 41 ; WX 600 ; N parenright ; B 127 -144 331 623 ; -C 42 ; WX 600 ; N asterisk ; B 93 210 507 624 ; -C 43 ; WX 600 ; N plus ; B 52 12 548 550 ; -C 44 ; WX 600 ; N comma ; B 135 -155 340 155 ; -C 45 ; WX 600 ; N hyphen ; B 52 241 548 321 ; -C 46 ; WX 600 ; N period ; B 250 10 350 90 ; -C 47 ; WX 600 ; N slash ; B 93 -103 507 686 ; -C 48 ; WX 600 ; N zero ; B 93 -35 507 639 ; -C 49 ; WX 600 ; N one ; B 93 -20 507 624 ; -C 50 ; WX 600 ; N two ; B 64 -20 498 639 ; -C 51 ; WX 600 ; N three ; B 76 -35 519 639 ; -C 52 ; WX 600 ; N four ; B 85 -20 498 624 ; -C 53 ; WX 600 ; N five ; B 76 -35 519 624 ; -C 54 ; WX 600 ; N six ; B 116 -35 530 639 ; -C 55 ; WX 600 ; N seven ; B 85 -20 498 624 ; -C 56 ; WX 600 ; N eight ; B 93 -35 507 639 ; -C 57 ; WX 600 ; N nine ; B 116 -35 530 639 ; -C 58 ; WX 600 ; N colon ; B 250 10 350 392 ; -C 59 ; WX 600 ; N semicolon ; B 139 -116 350 392 ; -C 60 ; WX 600 ; N less ; B 52 12 548 550 ; -C 61 ; WX 600 ; N equal ; B 31 168 569 394 ; -C 62 ; WX 600 ; N greater ; B 52 12 548 550 ; -C 63 ; WX 600 ; N question ; B 114 -5 507 598 ; -C 64 ; WX 600 ; N at ; B 85 -82 498 644 ; -C 65 ; WX 600 ; N A ; B -11 -20 611 583 ; -C 66 ; WX 600 ; N B ; B 23 -20 561 583 ; -C 67 ; WX 600 ; N C ; B 43 -35 554 598 ; -C 68 ; WX 600 ; N D ; B 23 -20 540 583 ; -C 69 ; WX 600 ; N E ; B 23 -20 540 583 ; -C 70 ; WX 600 ; N F ; B 23 -20 540 583 ; -C 71 ; WX 600 ; N G ; B 43 -35 582 598 ; -C 72 ; WX 600 ; N H ; B 33 -20 571 583 ; -C 73 ; WX 600 ; N I ; B 93 -20 507 583 ; -C 74 ; WX 600 ; N J ; B 64 -35 603 583 ; -C 75 ; WX 600 ; N K ; B 23 -20 592 583 ; -C 76 ; WX 600 ; N L ; B 43 -20 561 583 ; -C 77 ; WX 600 ; N M ; B -9 -20 613 583 ; -C 78 ; WX 600 ; N N ; B 2 -20 582 583 ; -C 79 ; WX 600 ; N O ; B 31 -35 569 598 ; -C 80 ; WX 600 ; N P ; B 23 -20 519 583 ; -C 81 ; WX 600 ; N Q ; B 31 -136 569 598 ; -C 82 ; WX 600 ; N R ; B 23 -20 609 583 ; -C 83 ; WX 600 ; N S ; B 72 -35 528 598 ; -C 84 ; WX 600 ; N T ; B 52 -20 548 583 ; -C 85 ; WX 600 ; N U ; B 20 -35 580 583 ; -C 86 ; WX 600 ; N V ; B -11 -20 611 583 ; -C 87 ; WX 600 ; N W ; B 0 -20 600 583 ; -C 88 ; WX 600 ; N X ; B 20 -20 580 583 ; -C 89 ; WX 600 ; N Y ; B 31 -20 569 583 ; -C 90 ; WX 600 ; N Z ; B 83 -20 517 583 ; -C 91 ; WX 600 ; N bracketleft ; B 260 -144 465 624 ; -C 92 ; WX 600 ; N backslash ; B 93 -103 507 686 ; -C 93 ; WX 600 ; N bracketright ; B 135 -144 340 624 ; -C 94 ; WX 600 ; N asciicircum ; B 93 335 507 624 ; -C 95 ; WX 600 ; N underscore ; B -32 -290 632 -210 ; -C 96 ; WX 600 ; N quoteleft ; B 260 304 465 613 ; -C 97 ; WX 600 ; N a ; B 52 -35 561 452 ; -C 98 ; WX 600 ; N b ; B 2 -35 561 624 ; -C 99 ; WX 600 ; N c ; B 64 -35 555 452 ; -C 100 ; WX 600 ; N d ; B 43 -35 603 624 ; -C 101 ; WX 600 ; N e ; B 43 -35 540 452 ; -C 102 ; WX 600 ; N f ; B 85 -20 561 624 ; L i fi ; L l fl ; -C 103 ; WX 600 ; N g ; B 43 -207 582 452 ; -C 104 ; WX 600 ; N h ; B 23 -20 571 624 ; -C 105 ; WX 600 ; N i ; B 72 -20 528 665 ; -C 106 ; WX 600 ; N j ; B 127 -207 478 665 ; -C 107 ; WX 600 ; N k ; B 43 -20 561 624 ; -C 108 ; WX 600 ; N l ; B 72 -20 528 624 ; -C 109 ; WX 600 ; N m ; B -9 -20 613 452 ; -C 110 ; WX 600 ; N n ; B 33 -20 561 452 ; -C 111 ; WX 600 ; N o ; B 52 -35 548 452 ; -C 112 ; WX 600 ; N p ; B 2 -207 561 452 ; -C 113 ; WX 600 ; N q ; B 43 -207 603 452 ; -C 114 ; WX 600 ; N r ; B 64 -20 561 448 ; -C 115 ; WX 600 ; N s ; B 83 -35 517 452 ; -C 116 ; WX 600 ; N t ; B 23 -35 519 582 ; -C 117 ; WX 600 ; N u ; B 23 -35 561 437 ; -C 118 ; WX 600 ; N v ; B 10 -20 590 437 ; -C 119 ; WX 600 ; N w ; B 10 -20 590 437 ; -C 120 ; WX 600 ; N x ; B 31 -20 569 437 ; -C 121 ; WX 600 ; N y ; B 31 -207 569 437 ; -C 122 ; WX 600 ; N z ; B 95 -20 509 437 ; -C 123 ; WX 600 ; N braceleft ; B 177 -144 423 624 ; -C 124 ; WX 600 ; N bar ; B 260 -144 340 624 ; -C 125 ; WX 600 ; N braceright ; B 177 -144 423 624 ; -C 126 ; WX 600 ; N asciitilde ; B 72 189 528 373 ; -C 161 ; WX 600 ; N exclamdown ; B 240 -207 360 415 ; -C 162 ; WX 600 ; N cent ; B 93 -19 489 665 ; -C 163 ; WX 600 ; N sterling ; B 43 -20 540 598 ; -C 164 ; WX 600 ; N fraction ; B 31 120 569 492 ; -C 165 ; WX 600 ; N yen ; B 31 -20 569 583 ; -C 166 ; WX 600 ; N florin ; B 67 -113 538 639 ; -C 167 ; WX 600 ; N section ; B 46 -87 554 629 ; -C 168 ; WX 600 ; N currency ; B 83 75 517 509 ; -C 169 ; WX 600 ; N quotesingle ; B 230 304 370 613 ; -C 170 ; WX 600 ; N quotedblleft ; B 93 340 507 619 ; -C 171 ; WX 600 ; N guillemotleft ; B 43 -20 561 437 ; -C 172 ; WX 600 ; N guilsinglleft ; B 43 -20 332 437 ; -C 173 ; WX 600 ; N guilsinglright ; B 273 -20 561 437 ; -C 174 ; WX 600 ; N fi ; B -10 -20 610 665 ; -C 175 ; WX 600 ; N fl ; B -10 -20 610 624 ; -C 177 ; WX 600 ; N endash ; B 52 241 548 321 ; -C 178 ; WX 600 ; N dagger ; B 104 -82 496 624 ; -C 179 ; WX 600 ; N daggerdbl ; B 104 -82 496 624 ; -C 180 ; WX 600 ; N periodcentered ; B 250 266 350 346 ; -C 182 ; WX 600 ; N paragraph ; B 59 -87 545 629 ; -C 183 ; WX 600 ; N bullet ; B 260 266 340 346 ; -C 184 ; WX 600 ; N quotesinglbase ; B 135 -165 340 144 ; -C 185 ; WX 600 ; N quotedblbase ; B 93 -139 507 139 ; -C 186 ; WX 600 ; N quotedblright ; B 93 340 507 619 ; -C 187 ; WX 600 ; N guillemotright ; B 43 -20 561 437 ; -C 188 ; WX 600 ; N ellipsis ; B 60 -5 540 75 ; -C 189 ; WX 600 ; N perthousand ; B 10 -35 590 639 ; -C 191 ; WX 600 ; N questiondown ; B 93 -207 486 415 ; -C 193 ; WX 600 ; N grave ; B 135 450 340 639 ; -C 194 ; WX 600 ; N acute ; B 260 450 465 639 ; -C 195 ; WX 600 ; N circumflex ; B 135 450 465 624 ; -C 196 ; WX 600 ; N tilde ; B 125 441 475 580 ; -C 197 ; WX 600 ; N macron ; B 135 476 465 556 ; -C 198 ; WX 600 ; N breve ; B 135 450 465 624 ; -C 199 ; WX 600 ; N dotaccent ; B 260 491 340 571 ; -C 200 ; WX 600 ; N dieresis ; B 156 491 444 571 ; -C 202 ; WX 600 ; N ring ; B 187 413 413 634 ; -C 203 ; WX 600 ; N cedilla ; B 190 -186 397 40 ; -C 205 ; WX 600 ; N hungarumlaut ; B 135 450 465 639 ; -C 206 ; WX 600 ; N ogonek ; B 260 -165 453 40 ; -C 207 ; WX 600 ; N caron ; B 135 450 465 624 ; -C 208 ; WX 600 ; N emdash ; B -19 241 619 321 ; -C 225 ; WX 600 ; N AE ; B -10 -20 610 583 ; -C 227 ; WX 600 ; N ordfeminine ; B 127 179 478 598 ; -C 232 ; WX 600 ; N Lslash ; B 23 -20 561 583 ; -C 233 ; WX 600 ; N Oslash ; B 20 -61 580 623 ; -C 234 ; WX 600 ; N OE ; B -10 -20 610 583 ; -C 235 ; WX 600 ; N ordmasculine ; B 131 179 469 598 ; -C 241 ; WX 600 ; N ae ; B -10 -35 600 452 ; -C 245 ; WX 600 ; N dotlessi ; B 72 -20 528 437 ; -C 248 ; WX 600 ; N lslash ; B 72 -20 528 624 ; -C 249 ; WX 600 ; N oslash ; B 33 -61 563 478 ; -C 250 ; WX 600 ; N oe ; B -10 -35 600 452 ; -C 251 ; WX 600 ; N germandbls ; B 23 -35 519 624 ; -C -1 ; WX 600 ; N Aacute ; B -11 -20 611 789 ; -C -1 ; WX 600 ; N Acircumflex ; B -11 -20 611 774 ; -C -1 ; WX 600 ; N Adieresis ; B -11 -20 611 721 ; -C -1 ; WX 600 ; N Agrave ; B -11 -20 611 789 ; -C -1 ; WX 600 ; N Aring ; B -11 -20 611 795 ; -C -1 ; WX 600 ; N Atilde ; B -11 -20 611 730 ; -C -1 ; WX 600 ; N Ccedilla ; B 43 -186 554 598 ; -C -1 ; WX 600 ; N Eacute ; B 23 -20 540 789 ; -C -1 ; WX 600 ; N Ecircumflex ; B 23 -20 540 774 ; -C -1 ; WX 600 ; N Edieresis ; B 23 -20 540 721 ; -C -1 ; WX 600 ; N Egrave ; B 23 -20 540 789 ; -C -1 ; WX 600 ; N Eth ; B 23 -20 540 583 ; -C -1 ; WX 600 ; N Gcaron ; B 43 -35 582 774 ; -C -1 ; WX 600 ; N IJ ; B -10 -35 610 583 ; -C -1 ; WX 600 ; N Iacute ; B 93 -20 507 789 ; -C -1 ; WX 600 ; N Icircumflex ; B 93 -20 507 774 ; -C -1 ; WX 600 ; N Idieresis ; B 93 -20 507 721 ; -C -1 ; WX 600 ; N Idot ; B 93 -20 507 721 ; -C -1 ; WX 600 ; N Igrave ; B 93 -20 507 789 ; -C -1 ; WX 600 ; N LL ; B -20 -20 620 583 ; -C -1 ; WX 600 ; N Ntilde ; B 2 -20 582 730 ; -C -1 ; WX 600 ; N Oacute ; B 31 -35 569 789 ; -C -1 ; WX 600 ; N Ocircumflex ; B 31 -35 569 774 ; -C -1 ; WX 600 ; N Odieresis ; B 31 -35 569 721 ; -C -1 ; WX 600 ; N Ograve ; B 31 -35 569 789 ; -C -1 ; WX 600 ; N Otilde ; B 31 -35 569 730 ; -C -1 ; WX 600 ; N Scaron ; B 72 -35 528 774 ; -C -1 ; WX 600 ; N Scedilla ; B 72 -186 528 598 ; -C -1 ; WX 600 ; N Thorn ; B 23 -20 539 583 ; -C -1 ; WX 600 ; N Uacute ; B 20 -35 580 789 ; -C -1 ; WX 600 ; N Ucircumflex ; B 20 -35 580 774 ; -C -1 ; WX 600 ; N Udieresis ; B 20 -35 580 721 ; -C -1 ; WX 600 ; N Ugrave ; B 20 -35 580 789 ; -C -1 ; WX 600 ; N Yacute ; B 31 -20 569 789 ; -C -1 ; WX 600 ; N Ydieresis ; B 31 -20 569 721 ; -C -1 ; WX 600 ; N Zcaron ; B 83 -20 517 774 ; -C -1 ; WX 600 ; N aacute ; B 52 -35 561 660 ; -C -1 ; WX 600 ; N acircumflex ; B 52 -35 561 653 ; -C -1 ; WX 600 ; N adieresis ; B 52 -35 561 592 ; -C -1 ; WX 600 ; N agrave ; B 52 -35 561 660 ; -C -1 ; WX 600 ; N aring ; B 52 -35 561 686 ; -C -1 ; WX 600 ; N arrowboth ; B -40 110 640 490 ; -C -1 ; WX 600 ; N arrowdown ; B 110 -20 490 639 ; -C -1 ; WX 600 ; N arrowleft ; B -40 110 640 490 ; -C -1 ; WX 600 ; N arrowright ; B -40 110 640 490 ; -C -1 ; WX 600 ; N arrowup ; B 110 -20 490 639 ; -C -1 ; WX 600 ; N atilde ; B 52 -35 561 618 ; -C -1 ; WX 600 ; N brokenbar ; B 260 -144 340 624 ; -C -1 ; WX 600 ; N ccedilla ; B 64 -186 555 452 ; -C -1 ; WX 600 ; N center ; B 0 -20 600 624 ; -C -1 ; WX 600 ; N copyright ; B -20 -35 620 598 ; -C -1 ; WX 600 ; N dectab ; B -5 -20 605 248 ; -C -1 ; WX 600 ; N degree ; B 135 294 465 624 ; -C -1 ; WX 600 ; N divide ; B 52 51 548 531 ; -C -1 ; WX 600 ; N down ; B 154 -20 446 452 ; -C -1 ; WX 600 ; N eacute ; B 43 -35 540 664 ; -C -1 ; WX 600 ; N ecircumflex ; B 43 -35 540 653 ; -C -1 ; WX 600 ; N edieresis ; B 43 -35 540 592 ; -C -1 ; WX 600 ; N egrave ; B 43 -35 540 664 ; -C -1 ; WX 600 ; N eth ; B 52 -35 548 639 ; -C -1 ; WX 600 ; N format ; B -15 -207 65 624 ; -C -1 ; WX 600 ; N gcaron ; B 43 -207 582 645 ; -C -1 ; WX 600 ; N graybox ; B 35 -40 565 640 ; -C -1 ; WX 600 ; N iacute ; B 72 -20 528 660 ; -C -1 ; WX 600 ; N icircumflex ; B 72 -20 528 634 ; -C -1 ; WX 600 ; N idieresis ; B 72 -20 528 592 ; -C -1 ; WX 600 ; N igrave ; B 72 -20 528 656 ; -C -1 ; WX 600 ; N ij ; B 10 -207 550 665 ; -C -1 ; WX 600 ; N indent ; B 54 60 546 352 ; -C -1 ; WX 600 ; N largebullet ; B 260 266 340 346 ; -C -1 ; WX 600 ; N left ; B 54 60 546 352 ; -C -1 ; WX 600 ; N lira ; B 43 -20 540 598 ; -C -1 ; WX 600 ; N ll ; B 0 -20 600 624 ; -C -1 ; WX 600 ; N logicalnot ; B 52 154 548 394 ; -C -1 ; WX 600 ; N merge ; B 154 -20 446 452 ; -C -1 ; WX 600 ; N minus ; B 52 241 548 321 ; -C -1 ; WX 600 ; N mu ; B 23 -207 561 437 ; -C -1 ; WX 600 ; N multiply ; B 82 12 518 470 ; -C -1 ; WX 600 ; N notegraphic ; B 150 -5 450 639 ; -C -1 ; WX 600 ; N ntilde ; B 33 -20 561 618 ; -C -1 ; WX 600 ; N oacute ; B 52 -35 548 649 ; -C -1 ; WX 600 ; N ocircumflex ; B 52 -35 548 653 ; -C -1 ; WX 600 ; N odieresis ; B 52 -35 548 592 ; -C -1 ; WX 600 ; N ograve ; B 52 -35 548 649 ; -C -1 ; WX 600 ; N onehalf ; B -10 -20 610 624 ; -C -1 ; WX 600 ; N onequarter ; B -10 -20 610 624 ; -C -1 ; WX 600 ; N onesuperior ; B 160 200 440 624 ; -C -1 ; WX 600 ; N otilde ; B 52 -35 548 597 ; -C -1 ; WX 600 ; N overscore ; B -32 559 632 639 ; -C -1 ; WX 600 ; N plusminus ; B 52 -20 548 550 ; -C -1 ; WX 600 ; N prescription ; B 23 -20 609 583 ; -C -1 ; WX 600 ; N registered ; B -20 -35 620 598 ; -C -1 ; WX 600 ; N return ; B -24 -20 624 608 ; -C -1 ; WX 600 ; N scaron ; B 83 -35 517 645 ; -C -1 ; WX 600 ; N scedilla ; B 83 -186 517 452 ; -C -1 ; WX 600 ; N square ; B -24 -20 624 608 ; -C -1 ; WX 600 ; N stop ; B -24 -20 624 608 ; -C -1 ; WX 600 ; N tab ; B -24 -20 624 608 ; -C -1 ; WX 600 ; N thorn ; B 2 -207 561 624 ; -C -1 ; WX 600 ; N threequarters ; B -10 -20 610 639 ; -C -1 ; WX 600 ; N threesuperior ; B 155 191 452 639 ; -C -1 ; WX 600 ; N trademark ; B -20 230 620 583 ; -C -1 ; WX 600 ; N twosuperior ; B 140 200 431 639 ; -C -1 ; WX 600 ; N uacute ; B 23 -35 561 656 ; -C -1 ; WX 600 ; N ucircumflex ; B 23 -35 561 634 ; -C -1 ; WX 600 ; N udieresis ; B 23 -35 561 592 ; -C -1 ; WX 600 ; N ugrave ; B 23 -35 561 656 ; -C -1 ; WX 600 ; N up ; B 154 -20 446 452 ; -C -1 ; WX 600 ; N yacute ; B 31 -207 569 656 ; -C -1 ; WX 600 ; N ydieresis ; B 31 -207 569 571 ; -C -1 ; WX 600 ; N zcaron ; B 95 -20 509 645 ; -EndCharMetrics -StartComposites 58 -CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 0 146 ; -CC zcaron 2 ; PCC z 0 0 ; PCC caron 0 0 ; -CC Scaron 2 ; PCC S 0 0 ; PCC caron 0 146 ; -CC scaron 2 ; PCC s 0 0 ; PCC caron 0 0 ; -CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 0 0 ; -CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 0 0 ; -CC Yacute 2 ; PCC Y 0 0 ; PCC acute 0 146 ; -CC yacute 2 ; PCC y 0 0 ; PCC acute 0 0 ; -CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 0 146 ; -CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 0 0 ; -CC Uacute 2 ; PCC U 0 0 ; PCC acute 0 146 ; -CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 0 146 ; -CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 0 146 ; -CC Ugrave 2 ; PCC U 0 0 ; PCC grave 0 146 ; -CC uacute 2 ; PCC u 0 0 ; PCC acute 0 0 ; -CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 0 0 ; -CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 0 0 ; -CC ugrave 2 ; PCC u 0 0 ; PCC grave 0 0 ; -CC Iacute 2 ; PCC I 0 0 ; PCC acute 0 146 ; -CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 0 146 ; -CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 0 146 ; -CC Igrave 2 ; PCC I 0 0 ; PCC grave 0 146 ; -CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute 0 0 ; -CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex 0 0 ; -CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis 0 0 ; -CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave 0 0 ; -CC Eacute 2 ; PCC E 0 0 ; PCC acute 0 146 ; -CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 0 146 ; -CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 0 146 ; -CC Egrave 2 ; PCC E 0 0 ; PCC grave 0 146 ; -CC eacute 2 ; PCC e 0 0 ; PCC acute 0 0 ; -CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 0 0 ; -CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 0 0 ; -CC egrave 2 ; PCC e 0 0 ; PCC grave 0 0 ; -CC Aacute 2 ; PCC A 0 0 ; PCC acute 0 146 ; -CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 0 146 ; -CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 0 146 ; -CC Agrave 2 ; PCC A 0 0 ; PCC grave 0 146 ; -CC aacute 2 ; PCC a 0 0 ; PCC acute 0 0 ; -CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 0 0 ; -CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 0 0 ; -CC agrave 2 ; PCC a 0 0 ; PCC grave 0 0 ; -CC Oacute 2 ; PCC O 0 0 ; PCC acute 0 146 ; -CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 0 146 ; -CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 0 146 ; -CC Ograve 2 ; PCC O 0 0 ; PCC grave 0 146 ; -CC oacute 2 ; PCC o 0 0 ; PCC acute 0 0 ; -CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 0 0 ; -CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 0 0 ; -CC ograve 2 ; PCC o 0 0 ; PCC grave 0 0 ; -CC Atilde 2 ; PCC A 0 0 ; PCC tilde 0 146 ; -CC atilde 2 ; PCC a 0 0 ; PCC tilde 0 0 ; -CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 0 146 ; -CC ntilde 2 ; PCC n 0 0 ; PCC tilde 0 0 ; -CC Otilde 2 ; PCC O 0 0 ; PCC tilde 0 146 ; -CC otilde 2 ; PCC o 0 0 ; PCC tilde 0 0 ; -CC Aring 2 ; PCC A 0 0 ; PCC ring 0 146 ; -CC aring 2 ; PCC a 0 0 ; PCC ring 0 0 ; -EndComposites -EndFontMetrics diff --git a/misc/afm/CourBo.afm b/misc/afm/CourBo.afm deleted file mode 100644 index 5a2fbdc071..0000000000 --- a/misc/afm/CourBo.afm +++ /dev/null @@ -1,341 +0,0 @@ -StartFontMetrics 2.0 -Comment Copyright (c) 1984 Adobe Systems Incorporated. All Rights Reserved. -Comment Creation Date:Wed Feb 25 16:06:47 PST 1987 -FontName Courier-Bold -EncodingScheme AdobeStandardEncoding -FullName Courier Bold -FamilyName Courier -Weight Bold -ItalicAngle 0.0 -IsFixedPitch true -UnderlinePosition -85 -UnderlineThickness 100 -Version 001.003 -FontBBox -100 -350 700 855 -CapHeight 633 -XHeight 487 -Descender -257 -Ascender 674 -StartCharMetrics 260 -C 32 ; WX 600 ; N space ; B 500 -100 700 100 ; -C 33 ; WX 600 ; N exclam ; B 170 -65 430 689 ; -C 34 ; WX 600 ; N quotedbl ; B 66 254 534 663 ; -C 35 ; WX 600 ; N numbersign ; B 12 -142 588 725 ; -C 36 ; WX 600 ; N dollar ; B 33 -173 567 735 ; -C 37 ; WX 600 ; N percent ; B 7 -65 593 689 ; -C 38 ; WX 600 ; N ampersand ; B 25 -65 558 600 ; -C 39 ; WX 600 ; N quoteright ; B 75 244 400 674 ; -C 40 ; WX 600 ; N parenleft ; B 214 -204 538 683 ; -C 41 ; WX 600 ; N parenright ; B 67 -204 391 683 ; -C 42 ; WX 600 ; N asterisk ; B 33 150 567 674 ; -C 43 ; WX 600 ; N plus ; B -8 -48 608 610 ; -C 44 ; WX 600 ; N comma ; B 75 -215 400 215 ; -C 45 ; WX 600 ; N hyphen ; B -8 181 608 381 ; -C 46 ; WX 600 ; N period ; B 190 -50 410 150 ; -C 47 ; WX 600 ; N slash ; B 33 -163 567 746 ; -C 48 ; WX 600 ; N zero ; B 33 -65 567 689 ; -C 49 ; WX 600 ; N one ; B 33 -50 567 674 ; -C 50 ; WX 600 ; N two ; B 4 -50 558 689 ; -C 51 ; WX 600 ; N three ; B 16 -65 579 689 ; -C 52 ; WX 600 ; N four ; B 25 -50 558 674 ; -C 53 ; WX 600 ; N five ; B 16 -65 579 674 ; -C 54 ; WX 600 ; N six ; B 56 -65 590 689 ; -C 55 ; WX 600 ; N seven ; B 25 -50 558 674 ; -C 56 ; WX 600 ; N eight ; B 33 -65 567 689 ; -C 57 ; WX 600 ; N nine ; B 56 -65 590 689 ; -C 58 ; WX 600 ; N colon ; B 190 -50 410 472 ; -C 59 ; WX 600 ; N semicolon ; B 79 -176 410 472 ; -C 60 ; WX 600 ; N less ; B -8 -48 608 610 ; -C 61 ; WX 600 ; N equal ; B -29 88 629 474 ; -C 62 ; WX 600 ; N greater ; B -8 -48 608 610 ; -C 63 ; WX 600 ; N question ; B 54 -65 567 648 ; -C 64 ; WX 600 ; N at ; B 26 -142 559 705 ; -C 65 ; WX 600 ; N A ; B -71 -50 671 633 ; -C 66 ; WX 600 ; N B ; B -37 -50 621 633 ; -C 67 ; WX 600 ; N C ; B -17 -65 614 648 ; -C 68 ; WX 600 ; N D ; B -37 -50 600 633 ; -C 69 ; WX 600 ; N E ; B -37 -50 600 633 ; -C 70 ; WX 600 ; N F ; B -37 -50 600 633 ; -C 71 ; WX 600 ; N G ; B -17 -65 642 648 ; -C 72 ; WX 600 ; N H ; B -27 -50 631 633 ; -C 73 ; WX 600 ; N I ; B 33 -50 567 633 ; -C 74 ; WX 600 ; N J ; B 4 -65 663 633 ; -C 75 ; WX 600 ; N K ; B -37 -50 652 633 ; -C 76 ; WX 600 ; N L ; B -17 -50 621 633 ; -C 77 ; WX 600 ; N M ; B -69 -50 673 633 ; -C 78 ; WX 600 ; N N ; B -58 -50 642 633 ; -C 79 ; WX 600 ; N O ; B -29 -65 629 648 ; -C 80 ; WX 600 ; N P ; B -37 -50 579 633 ; -C 81 ; WX 600 ; N Q ; B -29 -196 629 648 ; -C 82 ; WX 600 ; N R ; B -37 -50 669 633 ; -C 83 ; WX 600 ; N S ; B 12 -65 588 648 ; -C 84 ; WX 600 ; N T ; B -8 -50 608 633 ; -C 85 ; WX 600 ; N U ; B -40 -65 640 633 ; -C 86 ; WX 600 ; N V ; B -71 -50 671 633 ; -C 87 ; WX 600 ; N W ; B -60 -50 660 633 ; -C 88 ; WX 600 ; N X ; B -40 -50 640 633 ; -C 89 ; WX 600 ; N Y ; B -29 -50 629 633 ; -C 90 ; WX 600 ; N Z ; B 23 -50 577 633 ; -C 91 ; WX 600 ; N bracketleft ; B 200 -204 525 674 ; -C 92 ; WX 600 ; N backslash ; B 33 -163 567 746 ; -C 93 ; WX 600 ; N bracketright ; B 75 -204 400 674 ; -C 94 ; WX 600 ; N asciicircum ; B 33 275 567 674 ; -C 95 ; WX 600 ; N underscore ; B -92 -350 692 -150 ; -C 96 ; WX 600 ; N quoteleft ; B 200 244 525 674 ; -C 97 ; WX 600 ; N a ; B -8 -65 621 502 ; -C 98 ; WX 600 ; N b ; B -58 -65 621 674 ; -C 99 ; WX 600 ; N c ; B 4 -65 615 502 ; -C 100 ; WX 600 ; N d ; B -17 -65 663 674 ; -C 101 ; WX 600 ; N e ; B -17 -65 600 502 ; -C 102 ; WX 600 ; N f ; B 25 -50 621 674 ; L i fi ; L l fl ; -C 103 ; WX 600 ; N g ; B -17 -257 642 502 ; -C 104 ; WX 600 ; N h ; B -37 -50 631 674 ; -C 105 ; WX 600 ; N i ; B 12 -50 588 725 ; -C 106 ; WX 600 ; N j ; B 67 -257 538 725 ; -C 107 ; WX 600 ; N k ; B -17 -50 621 674 ; -C 108 ; WX 600 ; N l ; B 12 -50 588 674 ; -C 109 ; WX 600 ; N m ; B -69 -50 673 502 ; -C 110 ; WX 600 ; N n ; B -27 -50 621 502 ; -C 111 ; WX 600 ; N o ; B -8 -65 608 502 ; -C 112 ; WX 600 ; N p ; B -58 -257 621 502 ; -C 113 ; WX 600 ; N q ; B -17 -257 663 502 ; -C 114 ; WX 600 ; N r ; B 4 -50 621 501 ; -C 115 ; WX 600 ; N s ; B 23 -65 577 502 ; -C 116 ; WX 600 ; N t ; B -37 -65 579 642 ; -C 117 ; WX 600 ; N u ; B -37 -65 621 487 ; -C 118 ; WX 600 ; N v ; B -50 -50 650 487 ; -C 119 ; WX 600 ; N w ; B -50 -50 650 487 ; -C 120 ; WX 600 ; N x ; B -29 -50 629 487 ; -C 121 ; WX 600 ; N y ; B -29 -257 629 487 ; -C 122 ; WX 600 ; N z ; B 35 -50 569 487 ; -C 123 ; WX 600 ; N braceleft ; B 117 -204 483 674 ; -C 124 ; WX 600 ; N bar ; B 200 -204 400 674 ; -C 125 ; WX 600 ; N braceright ; B 117 -204 483 674 ; -C 126 ; WX 600 ; N asciitilde ; B 12 129 588 433 ; -C 161 ; WX 600 ; N exclamdown ; B 170 -257 430 475 ; -C 162 ; WX 600 ; N cent ; B 33 -79 549 725 ; -C 163 ; WX 600 ; N sterling ; B -17 -50 600 648 ; -C 164 ; WX 600 ; N fraction ; B -29 60 629 552 ; -C 165 ; WX 600 ; N yen ; B -29 -50 629 633 ; -C 166 ; WX 600 ; N florin ; B 7 -173 598 689 ; -C 167 ; WX 600 ; N section ; B -14 -147 614 689 ; -C 168 ; WX 600 ; N currency ; B 23 15 577 569 ; -C 169 ; WX 600 ; N quotesingle ; B 170 244 430 674 ; -C 170 ; WX 600 ; N quotedblleft ; B 33 280 567 678 ; -C 171 ; WX 600 ; N guillemotleft ; B -17 -50 621 487 ; -C 172 ; WX 600 ; N guilsinglleft ; B -17 -50 392 487 ; -C 173 ; WX 600 ; N guilsinglright ; B 213 -50 621 487 ; -C 174 ; WX 600 ; N fi ; B -70 -50 670 725 ; -C 175 ; WX 600 ; N fl ; B -70 -50 670 674 ; -C 177 ; WX 600 ; N endash ; B -8 181 608 381 ; -C 178 ; WX 600 ; N dagger ; B 44 -142 556 674 ; -C 179 ; WX 600 ; N daggerdbl ; B 44 -142 556 674 ; -C 180 ; WX 600 ; N periodcentered ; B 190 206 410 406 ; -C 182 ; WX 600 ; N paragraph ; B -1 -147 605 689 ; -C 183 ; WX 600 ; N bullet ; B 200 206 400 406 ; -C 184 ; WX 600 ; N quotesinglbase ; B 75 -225 400 204 ; -C 185 ; WX 600 ; N quotedblbase ; B 33 -199 567 199 ; -C 186 ; WX 600 ; N quotedblright ; B 33 280 567 678 ; -C 187 ; WX 600 ; N guillemotright ; B -17 -50 621 487 ; -C 188 ; WX 600 ; N ellipsis ; B 0 -65 600 135 ; -C 189 ; WX 600 ; N perthousand ; B -50 -65 650 689 ; -C 191 ; WX 600 ; N questiondown ; B 33 -257 546 475 ; -C 193 ; WX 600 ; N grave ; B 75 390 400 689 ; -C 194 ; WX 600 ; N acute ; B 200 390 525 689 ; -C 195 ; WX 600 ; N circumflex ; B 75 390 525 674 ; -C 196 ; WX 600 ; N tilde ; B 65 381 535 640 ; -C 197 ; WX 600 ; N macron ; B 75 416 525 616 ; -C 198 ; WX 600 ; N breve ; B 75 390 525 674 ; -C 199 ; WX 600 ; N dotaccent ; B 200 431 400 631 ; -C 200 ; WX 600 ; N dieresis ; B 96 431 504 631 ; -C 202 ; WX 600 ; N ring ; B 127 353 473 694 ; -C 203 ; WX 600 ; N cedilla ; B 130 -246 457 100 ; -C 205 ; WX 600 ; N hungarumlaut ; B 75 390 525 689 ; -C 206 ; WX 600 ; N ogonek ; B 200 -225 513 100 ; -C 207 ; WX 600 ; N caron ; B 75 390 525 674 ; -C 208 ; WX 600 ; N emdash ; B -79 181 679 381 ; -C 225 ; WX 600 ; N AE ; B -70 -50 670 633 ; -C 227 ; WX 600 ; N ordfeminine ; B 68 120 539 649 ; -C 232 ; WX 600 ; N Lslash ; B -37 -50 621 633 ; -C 233 ; WX 600 ; N Oslash ; B -40 -121 640 683 ; -C 234 ; WX 600 ; N OE ; B -70 -50 670 633 ; -C 235 ; WX 600 ; N ordmasculine ; B 72 120 530 649 ; -C 241 ; WX 600 ; N ae ; B -70 -65 660 502 ; -C 245 ; WX 600 ; N dotlessi ; B 12 -50 588 487 ; -C 248 ; WX 600 ; N lslash ; B 12 -50 588 674 ; -C 249 ; WX 600 ; N oslash ; B -27 -121 623 538 ; -C 250 ; WX 600 ; N oe ; B -70 -65 660 502 ; -C 251 ; WX 600 ; N germandbls ; B -37 -65 579 674 ; -C -1 ; WX 600 ; N Aacute ; B -71 -50 671 839 ; -C -1 ; WX 600 ; N Acircumflex ; B -71 -50 671 824 ; -C -1 ; WX 600 ; N Adieresis ; B -71 -50 671 781 ; -C -1 ; WX 600 ; N Agrave ; B -71 -50 671 839 ; -C -1 ; WX 600 ; N Aring ; B -71 -50 671 855 ; -C -1 ; WX 600 ; N Atilde ; B -71 -50 671 790 ; -C -1 ; WX 600 ; N Ccedilla ; B -17 -246 614 648 ; -C -1 ; WX 600 ; N Eacute ; B -37 -50 600 839 ; -C -1 ; WX 600 ; N Ecircumflex ; B -37 -50 600 824 ; -C -1 ; WX 600 ; N Edieresis ; B -37 -50 600 781 ; -C -1 ; WX 600 ; N Egrave ; B -37 -50 600 839 ; -C -1 ; WX 600 ; N Eth ; B -37 -50 600 633 ; -C -1 ; WX 600 ; N Gcaron ; B -17 -65 642 824 ; -C -1 ; WX 600 ; N IJ ; B -70 -65 670 633 ; -C -1 ; WX 600 ; N Iacute ; B 33 -50 567 839 ; -C -1 ; WX 600 ; N Icircumflex ; B 33 -50 567 824 ; -C -1 ; WX 600 ; N Idieresis ; B 33 -50 567 781 ; -C -1 ; WX 600 ; N Idot ; B 33 -50 567 781 ; -C -1 ; WX 600 ; N Igrave ; B 33 -50 567 839 ; -C -1 ; WX 600 ; N LL ; B -80 -50 680 633 ; -C -1 ; WX 600 ; N Ntilde ; B -58 -50 642 790 ; -C -1 ; WX 600 ; N Oacute ; B -29 -65 629 839 ; -C -1 ; WX 600 ; N Ocircumflex ; B -29 -65 629 824 ; -C -1 ; WX 600 ; N Odieresis ; B -29 -65 629 781 ; -C -1 ; WX 600 ; N Ograve ; B -29 -65 629 839 ; -C -1 ; WX 600 ; N Otilde ; B -29 -65 629 790 ; -C -1 ; WX 600 ; N Scaron ; B 12 -65 588 824 ; -C -1 ; WX 600 ; N Scedilla ; B 12 -246 588 648 ; -C -1 ; WX 600 ; N Thorn ; B -37 -50 599 633 ; -C -1 ; WX 600 ; N Uacute ; B -40 -65 640 839 ; -C -1 ; WX 600 ; N Ucircumflex ; B -40 -65 640 824 ; -C -1 ; WX 600 ; N Udieresis ; B -40 -65 640 781 ; -C -1 ; WX 600 ; N Ugrave ; B -40 -65 640 839 ; -C -1 ; WX 600 ; N Yacute ; B -29 -50 629 839 ; -C -1 ; WX 600 ; N Ydieresis ; B -29 -50 629 781 ; -C -1 ; WX 600 ; N Zcaron ; B 23 -50 577 824 ; -C -1 ; WX 600 ; N aacute ; B -8 -65 621 710 ; -C -1 ; WX 600 ; N acircumflex ; B -8 -65 621 703 ; -C -1 ; WX 600 ; N adieresis ; B -8 -65 621 652 ; -C -1 ; WX 600 ; N agrave ; B -8 -65 621 710 ; -C -1 ; WX 600 ; N aring ; B -8 -65 621 746 ; -C -1 ; WX 600 ; N arrowboth ; B -100 50 700 550 ; -C -1 ; WX 600 ; N arrowdown ; B 50 -50 550 689 ; -C -1 ; WX 600 ; N arrowleft ; B -100 50 700 550 ; -C -1 ; WX 600 ; N arrowright ; B -100 50 700 550 ; -C -1 ; WX 600 ; N arrowup ; B 50 -50 550 689 ; -C -1 ; WX 600 ; N atilde ; B -8 -65 621 678 ; -C -1 ; WX 600 ; N brokenbar ; B 200 -204 400 674 ; -C -1 ; WX 600 ; N ccedilla ; B 4 -246 615 502 ; -C -1 ; WX 600 ; N center ; B -60 -50 660 684 ; -C -1 ; WX 600 ; N copyright ; B -80 -65 680 648 ; -C -1 ; WX 600 ; N dectab ; B -65 -50 665 308 ; -C -1 ; WX 600 ; N degree ; B 75 234 525 674 ; -C -1 ; WX 600 ; N divide ; B -8 -9 608 591 ; -C -1 ; WX 600 ; N down ; B 94 -50 506 502 ; -C -1 ; WX 600 ; N eacute ; B -17 -65 600 714 ; -C -1 ; WX 600 ; N ecircumflex ; B -17 -65 600 703 ; -C -1 ; WX 600 ; N edieresis ; B -17 -65 600 652 ; -C -1 ; WX 600 ; N egrave ; B -17 -65 600 714 ; -C -1 ; WX 600 ; N eth ; B -8 -65 608 689 ; -C -1 ; WX 600 ; N format ; B -75 -257 125 674 ; -C -1 ; WX 600 ; N gcaron ; B -17 -257 642 695 ; -C -1 ; WX 600 ; N graybox ; B -25 -100 625 700 ; -C -1 ; WX 600 ; N iacute ; B 12 -50 588 710 ; -C -1 ; WX 600 ; N icircumflex ; B 12 -50 588 684 ; -C -1 ; WX 600 ; N idieresis ; B 12 -50 588 652 ; -C -1 ; WX 600 ; N igrave ; B 12 -50 588 706 ; -C -1 ; WX 600 ; N ij ; B -50 -257 610 725 ; -C -1 ; WX 600 ; N indent ; B -6 0 606 412 ; -C -1 ; WX 600 ; N largebullet ; B 200 206 400 406 ; -C -1 ; WX 600 ; N left ; B -6 0 606 412 ; -C -1 ; WX 600 ; N lira ; B -17 -50 600 648 ; -C -1 ; WX 600 ; N ll ; B -60 -50 660 674 ; -C -1 ; WX 600 ; N logicalnot ; B -8 94 608 454 ; -C -1 ; WX 600 ; N merge ; B 94 -50 506 502 ; -C -1 ; WX 600 ; N minus ; B -8 181 608 381 ; -C -1 ; WX 600 ; N mu ; B -37 -257 621 487 ; -C -1 ; WX 600 ; N multiply ; B 22 -48 578 530 ; -C -1 ; WX 600 ; N notegraphic ; B 80 -65 520 689 ; -C -1 ; WX 600 ; N ntilde ; B -27 -50 621 678 ; -C -1 ; WX 600 ; N oacute ; B -8 -65 608 699 ; -C -1 ; WX 600 ; N ocircumflex ; B -8 -65 608 703 ; -C -1 ; WX 600 ; N odieresis ; B -8 -65 608 652 ; -C -1 ; WX 600 ; N ograve ; B -8 -65 608 699 ; -C -1 ; WX 600 ; N onehalf ; B -70 -65 670 674 ; -C -1 ; WX 600 ; N onequarter ; B -70 -50 670 674 ; -C -1 ; WX 600 ; N onesuperior ; B 100 140 500 674 ; -C -1 ; WX 600 ; N otilde ; B -8 -65 608 657 ; -C -1 ; WX 600 ; N overscore ; B -92 489 692 689 ; -C -1 ; WX 600 ; N plusminus ; B -8 -50 608 610 ; -C -1 ; WX 600 ; N prescription ; B -37 -50 669 633 ; -C -1 ; WX 600 ; N registered ; B -80 -65 680 648 ; -C -1 ; WX 600 ; N return ; B -84 -50 684 668 ; -C -1 ; WX 600 ; N scaron ; B 23 -65 577 695 ; -C -1 ; WX 600 ; N scedilla ; B 23 -246 577 502 ; -C -1 ; WX 600 ; N square ; B -84 -50 684 668 ; -C -1 ; WX 600 ; N stop ; B -84 -50 684 668 ; -C -1 ; WX 600 ; N tab ; B -84 -50 684 668 ; -C -1 ; WX 600 ; N thorn ; B -58 -257 621 674 ; -C -1 ; WX 600 ; N threequarters ; B -70 -50 670 689 ; -C -1 ; WX 600 ; N threesuperior ; B 95 131 512 689 ; -C -1 ; WX 600 ; N trademark ; B -80 170 680 633 ; -C -1 ; WX 600 ; N twosuperior ; B 80 140 491 689 ; -C -1 ; WX 600 ; N uacute ; B -37 -65 621 706 ; -C -1 ; WX 600 ; N ucircumflex ; B -37 -65 621 684 ; -C -1 ; WX 600 ; N udieresis ; B -37 -65 621 652 ; -C -1 ; WX 600 ; N ugrave ; B -37 -65 621 706 ; -C -1 ; WX 600 ; N up ; B 94 -50 506 502 ; -C -1 ; WX 600 ; N yacute ; B -29 -257 629 706 ; -C -1 ; WX 600 ; N ydieresis ; B -29 -257 629 631 ; -C -1 ; WX 600 ; N zcaron ; B 35 -50 569 695 ; -EndCharMetrics -StartComposites 58 -CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 0 146 ; -CC zcaron 2 ; PCC z 0 0 ; PCC caron 0 0 ; -CC Scaron 2 ; PCC S 0 0 ; PCC caron 0 146 ; -CC scaron 2 ; PCC s 0 0 ; PCC caron 0 0 ; -CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 0 0 ; -CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 0 0 ; -CC Yacute 2 ; PCC Y 0 0 ; PCC acute 0 146 ; -CC yacute 2 ; PCC y 0 0 ; PCC acute 0 0 ; -CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 0 146 ; -CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 0 0 ; -CC Uacute 2 ; PCC U 0 0 ; PCC acute 0 146 ; -CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 0 146 ; -CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 0 146 ; -CC Ugrave 2 ; PCC U 0 0 ; PCC grave 0 146 ; -CC uacute 2 ; PCC u 0 0 ; PCC acute 0 0 ; -CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 0 0 ; -CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 0 0 ; -CC ugrave 2 ; PCC u 0 0 ; PCC grave 0 0 ; -CC Iacute 2 ; PCC I 0 0 ; PCC acute 0 146 ; -CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 0 146 ; -CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 0 146 ; -CC Igrave 2 ; PCC I 0 0 ; PCC grave 0 146 ; -CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute 0 0 ; -CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex 0 0 ; -CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis 0 0 ; -CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave 0 0 ; -CC Eacute 2 ; PCC E 0 0 ; PCC acute 0 146 ; -CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 0 146 ; -CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 0 146 ; -CC Egrave 2 ; PCC E 0 0 ; PCC grave 0 146 ; -CC eacute 2 ; PCC e 0 0 ; PCC acute 0 0 ; -CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 0 0 ; -CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 0 0 ; -CC egrave 2 ; PCC e 0 0 ; PCC grave 0 0 ; -CC Aacute 2 ; PCC A 0 0 ; PCC acute 0 146 ; -CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 0 146 ; -CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 0 146 ; -CC Agrave 2 ; PCC A 0 0 ; PCC grave 0 146 ; -CC aacute 2 ; PCC a 0 0 ; PCC acute 0 0 ; -CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 0 0 ; -CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 0 0 ; -CC agrave 2 ; PCC a 0 0 ; PCC grave 0 0 ; -CC Oacute 2 ; PCC O 0 0 ; PCC acute 0 146 ; -CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 0 146 ; -CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 0 146 ; -CC Ograve 2 ; PCC O 0 0 ; PCC grave 0 146 ; -CC oacute 2 ; PCC o 0 0 ; PCC acute 0 0 ; -CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 0 0 ; -CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 0 0 ; -CC ograve 2 ; PCC o 0 0 ; PCC grave 0 0 ; -CC Atilde 2 ; PCC A 0 0 ; PCC tilde 0 146 ; -CC atilde 2 ; PCC a 0 0 ; PCC tilde 0 0 ; -CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 0 146 ; -CC ntilde 2 ; PCC n 0 0 ; PCC tilde 0 0 ; -CC Otilde 2 ; PCC O 0 0 ; PCC tilde 0 146 ; -CC otilde 2 ; PCC o 0 0 ; PCC tilde 0 0 ; -CC Aring 2 ; PCC A 0 0 ; PCC ring 0 146 ; -CC aring 2 ; PCC a 0 0 ; PCC ring 0 0 ; -EndComposites -EndFontMetrics diff --git a/misc/afm/CourBoO.afm b/misc/afm/CourBoO.afm deleted file mode 100644 index 603eab5278..0000000000 --- a/misc/afm/CourBoO.afm +++ /dev/null @@ -1,341 +0,0 @@ -StartFontMetrics 2.0 -Comment Copyright (c) 1984 Adobe Systems Incorporated. All Rights Reserved. -Comment Creation Date:Wed Feb 25 16:19:52 PST 1987 -FontName Courier-BoldOblique -EncodingScheme AdobeStandardEncoding -FullName Courier Bold Oblique -FamilyName Courier -Weight Bold -ItalicAngle -12.0 -IsFixedPitch true -UnderlinePosition -85 -UnderlineThickness 100 -Version 001.003 -FontBBox -145 -350 817 855 -CapHeight 633 -XHeight 487 -Descender -257 -Ascender 674 -StartCharMetrics 260 -C 32 ; WX 600 ; N space ; B 500 -100 700 100 ; -C 33 ; WX 600 ; N exclam ; B 197 -65 549 689 ; -C 34 ; WX 600 ; N quotedbl ; B 171 254 654 663 ; -C 35 ; WX 600 ; N numbersign ; B 52 -142 672 725 ; -C 36 ; WX 600 ; N dollar ; B 51 -173 659 735 ; -C 37 ; WX 600 ; N percent ; B 58 -65 671 689 ; -C 38 ; WX 600 ; N ampersand ; B 52 -65 607 600 ; -C 39 ; WX 600 ; N quoteright ; B 148 244 522 674 ; -C 40 ; WX 600 ; N parenleft ; B 255 -204 662 683 ; -C 41 ; WX 600 ; N parenright ; B 45 -204 452 683 ; -C 42 ; WX 600 ; N asterisk ; B 131 150 665 674 ; -C 43 ; WX 600 ; N plus ; B 52 -48 668 610 ; -C 44 ; WX 600 ; N comma ; B 51 -215 424 215 ; -C 45 ; WX 600 ; N hyphen ; B 52 181 668 381 ; -C 46 ; WX 600 ; N period ; B 201 -50 421 150 ; -C 47 ; WX 600 ; N slash ; B 20 -163 704 746 ; -C 48 ; WX 600 ; N zero ; B 82 -65 649 689 ; -C 49 ; WX 600 ; N one ; B 44 -50 578 674 ; -C 50 ; WX 600 ; N two ; B 15 -50 656 689 ; -C 51 ; WX 600 ; N three ; B 30 -65 659 689 ; -C 52 ; WX 600 ; N four ; B 65 -50 618 674 ; -C 53 ; WX 600 ; N five ; B 33 -65 660 674 ; -C 54 ; WX 600 ; N six ; B 108 -65 712 689 ; -C 55 ; WX 600 ; N seven ; B 136 -50 680 674 ; -C 56 ; WX 600 ; N eight ; B 64 -65 655 689 ; -C 57 ; WX 600 ; N nine ; B 67 -65 665 689 ; -C 58 ; WX 600 ; N colon ; B 201 -50 489 472 ; -C 59 ; WX 600 ; N semicolon ; B 63 -176 489 472 ; -C 60 ; WX 600 ; N less ; B 52 -48 716 610 ; -C 61 ; WX 600 ; N equal ; B 11 88 708 474 ; -C 62 ; WX 600 ; N greater ; B 3 -48 668 610 ; -C 63 ; WX 600 ; N question ; B 148 -65 657 648 ; -C 64 ; WX 600 ; N at ; B 61 -142 640 705 ; -C 65 ; WX 600 ; N A ; B -60 -50 682 633 ; -C 66 ; WX 600 ; N B ; B -26 -50 670 633 ; -C 67 ; WX 600 ; N C ; B 31 -65 713 648 ; -C 68 ; WX 600 ; N D ; B -26 -50 670 633 ; -C 69 ; WX 600 ; N E ; B -26 -50 692 633 ; -C 70 ; WX 600 ; N F ; B -26 -50 713 633 ; -C 71 ; WX 600 ; N G ; B 29 -65 713 648 ; -C 72 ; WX 600 ; N H ; B -16 -50 723 633 ; -C 73 ; WX 600 ; N I ; B 44 -50 680 633 ; -C 74 ; WX 600 ; N J ; B 22 -65 776 633 ; -C 75 ; WX 600 ; N K ; B -26 -50 744 633 ; -C 76 ; WX 600 ; N L ; B -6 -50 665 633 ; -C 77 ; WX 600 ; N M ; B -58 -50 776 633 ; -C 78 ; WX 600 ; N N ; B -26 -50 755 633 ; -C 79 ; WX 600 ; N O ; B 26 -65 696 648 ; -C 80 ; WX 600 ; N P ; B -26 -50 666 633 ; -C 81 ; WX 600 ; N Q ; B 26 -196 696 648 ; -C 82 ; WX 600 ; N R ; B -26 -50 680 633 ; -C 83 ; WX 600 ; N S ; B 23 -65 680 648 ; -C 84 ; WX 600 ; N T ; B 72 -50 721 633 ; -C 85 ; WX 600 ; N U ; B 61 -65 753 633 ; -C 86 ; WX 600 ; N V ; B 42 -50 784 633 ; -C 87 ; WX 600 ; N W ; B 50 -50 773 633 ; -C 88 ; WX 600 ; N X ; B -29 -50 742 633 ; -C 89 ; WX 600 ; N Y ; B 76 -50 742 633 ; -C 90 ; WX 600 ; N Z ; B 34 -50 669 633 ; -C 91 ; WX 600 ; N bracketleft ; B 178 -204 647 674 ; -C 92 ; WX 600 ; N backslash ; B 170 -163 554 746 ; -C 93 ; WX 600 ; N bracketright ; B 53 -204 522 674 ; -C 94 ; WX 600 ; N asciicircum ; B 113 275 647 674 ; -C 95 ; WX 600 ; N underscore ; B -145 -350 639 -150 ; -C 96 ; WX 600 ; N quoteleft ; B 322 244 598 674 ; -C 97 ; WX 600 ; N a ; B 16 -65 632 502 ; -C 98 ; WX 600 ; N b ; B -47 -65 670 674 ; -C 99 ; WX 600 ; N c ; B 44 -65 672 502 ; -C 100 ; WX 600 ; N d ; B 23 -65 701 674 ; -C 101 ; WX 600 ; N e ; B 25 -65 650 502 ; -C 102 ; WX 600 ; N f ; B 36 -50 740 674 ; L i fi ; L l fl ; -C 103 ; WX 600 ; N g ; B 25 -257 724 502 ; -C 104 ; WX 600 ; N h ; B -16 -50 642 674 ; -C 105 ; WX 600 ; N i ; B 23 -50 599 725 ; -C 106 ; WX 600 ; N j ; B 34 -257 620 725 ; -C 107 ; WX 600 ; N k ; B -6 -50 661 674 ; -C 108 ; WX 600 ; N l ; B 23 -50 599 674 ; -C 109 ; WX 600 ; N m ; B -58 -50 684 502 ; -C 110 ; WX 600 ; N n ; B -16 -50 632 502 ; -C 111 ; WX 600 ; N o ; B 34 -65 656 502 ; -C 112 ; WX 600 ; N p ; B -91 -257 671 502 ; -C 113 ; WX 600 ; N q ; B 27 -257 745 502 ; -C 114 ; WX 600 ; N r ; B 15 -50 699 501 ; -C 115 ; WX 600 ; N s ; B 34 -65 638 502 ; -C 116 ; WX 600 ; N t ; B 45 -65 599 642 ; -C 117 ; WX 600 ; N u ; B 45 -65 640 487 ; -C 118 ; WX 600 ; N v ; B 32 -50 732 487 ; -C 119 ; WX 600 ; N w ; B 32 -50 732 487 ; -C 120 ; WX 600 ; N x ; B -18 -50 690 487 ; -C 121 ; WX 600 ; N y ; B -62 -257 711 487 ; -C 122 ; WX 600 ; N z ; B 46 -50 640 487 ; -C 123 ; WX 600 ; N braceleft ; B 168 -204 605 674 ; -C 124 ; WX 600 ; N bar ; B 178 -204 522 674 ; -C 125 ; WX 600 ; N braceright ; B 95 -204 534 674 ; -C 126 ; WX 600 ; N asciitilde ; B 67 129 652 433 ; -C 161 ; WX 600 ; N exclamdown ; B 143 -257 490 475 ; -C 162 ; WX 600 ; N cent ; B 96 -79 643 725 ; -C 163 ; WX 600 ; N sterling ; B 15 -50 620 648 ; -C 164 ; WX 600 ; N fraction ; B 5 60 725 552 ; -C 165 ; WX 600 ; N yen ; B 77 -50 742 633 ; -C 166 ; WX 600 ; N florin ; B -6 -173 720 689 ; -C 167 ; WX 600 ; N section ; B 18 -147 697 689 ; -C 168 ; WX 600 ; N currency ; B 47 15 677 569 ; -C 169 ; WX 600 ; N quotesingle ; B 273 244 552 674 ; -C 170 ; WX 600 ; N quotedblleft ; B 156 280 648 678 ; -C 171 ; WX 600 ; N guillemotleft ; B 27 -50 703 487 ; -C 172 ; WX 600 ; N guilsinglleft ; B 27 -50 474 487 ; -C 173 ; WX 600 ; N guilsinglright ; B 224 -50 665 487 ; -C 174 ; WX 600 ; N fi ; B -59 -50 681 725 ; -C 175 ; WX 600 ; N fl ; B -59 -50 687 674 ; -C 177 ; WX 600 ; N endash ; B 52 181 668 381 ; -C 178 ; WX 600 ; N dagger ; B 126 -142 638 674 ; -C 179 ; WX 600 ; N daggerdbl ; B 75 -142 638 674 ; -C 180 ; WX 600 ; N periodcentered ; B 255 206 475 406 ; -C 182 ; WX 600 ; N paragraph ; B 72 -147 730 689 ; -C 183 ; WX 600 ; N bullet ; B 265 206 465 406 ; -C 184 ; WX 600 ; N quotesinglbase ; B 48 -225 422 204 ; -C 185 ; WX 600 ; N quotedblbase ; B 12 -199 588 199 ; -C 186 ; WX 600 ; N quotedblright ; B 114 280 690 678 ; -C 187 ; WX 600 ; N guillemotright ; B -6 -50 665 487 ; -C 188 ; WX 600 ; N ellipsis ; B 7 -65 607 135 ; -C 189 ; WX 600 ; N perthousand ; B 55 -65 679 689 ; -C 191 ; WX 600 ; N questiondown ; B 26 -257 533 475 ; -C 193 ; WX 600 ; N grave ; B 200 390 504 689 ; -C 194 ; WX 600 ; N acute ; B 304 390 650 689 ; -C 195 ; WX 600 ; N circumflex ; B 179 390 629 674 ; -C 196 ; WX 600 ; N tilde ; B 171 381 646 640 ; -C 197 ; WX 600 ; N macron ; B 185 416 635 616 ; -C 198 ; WX 600 ; N breve ; B 196 390 647 674 ; -C 199 ; WX 600 ; N dotaccent ; B 313 431 513 631 ; -C 200 ; WX 600 ; N dieresis ; B 209 431 617 631 ; -C 202 ; WX 600 ; N ring ; B 237 353 586 694 ; -C 203 ; WX 600 ; N cedilla ; B 103 -246 436 100 ; -C 205 ; WX 600 ; N hungarumlaut ; B 179 390 650 689 ; -C 206 ; WX 600 ; N ogonek ; B 184 -225 490 100 ; -C 207 ; WX 600 ; N caron ; B 197 390 647 674 ; -C 208 ; WX 600 ; N emdash ; B -19 181 739 381 ; -C 225 ; WX 600 ; N AE ; B -59 -50 763 633 ; -C 227 ; WX 600 ; N ordfeminine ; B 114 120 590 649 ; -C 232 ; WX 600 ; N Lslash ; B -6 -50 665 633 ; -C 233 ; WX 600 ; N Oslash ; B -44 -121 764 683 ; -C 234 ; WX 600 ; N OE ; B -16 -50 763 633 ; -C 235 ; WX 600 ; N ordmasculine ; B 118 120 623 649 ; -C 241 ; WX 600 ; N ae ; B -39 -65 711 502 ; -C 245 ; WX 600 ; N dotlessi ; B 23 -50 599 487 ; -C 248 ; WX 600 ; N lslash ; B 23 -50 604 674 ; -C 249 ; WX 600 ; N oslash ; B -31 -121 716 538 ; -C 250 ; WX 600 ; N oe ; B -30 -65 711 502 ; -C 251 ; WX 600 ; N germandbls ; B -26 -65 618 674 ; -C -1 ; WX 600 ; N Aacute ; B -60 -50 682 839 ; -C -1 ; WX 600 ; N Acircumflex ; B -60 -50 682 824 ; -C -1 ; WX 600 ; N Adieresis ; B -60 -50 682 781 ; -C -1 ; WX 600 ; N Agrave ; B -60 -50 682 839 ; -C -1 ; WX 600 ; N Aring ; B -60 -50 682 855 ; -C -1 ; WX 600 ; N Atilde ; B -60 -50 682 790 ; -C -1 ; WX 600 ; N Ccedilla ; B 31 -246 713 648 ; -C -1 ; WX 600 ; N Eacute ; B -26 -50 692 839 ; -C -1 ; WX 600 ; N Ecircumflex ; B -26 -50 692 824 ; -C -1 ; WX 600 ; N Edieresis ; B -26 -50 692 781 ; -C -1 ; WX 600 ; N Egrave ; B -26 -50 692 839 ; -C -1 ; WX 600 ; N Eth ; B -26 -50 670 633 ; -C -1 ; WX 600 ; N Gcaron ; B 29 -65 713 824 ; -C -1 ; WX 600 ; N IJ ; B -59 -65 783 633 ; -C -1 ; WX 600 ; N Iacute ; B 44 -50 680 839 ; -C -1 ; WX 600 ; N Icircumflex ; B 44 -50 680 824 ; -C -1 ; WX 600 ; N Idieresis ; B 44 -50 680 781 ; -C -1 ; WX 600 ; N Idot ; B 44 -50 680 781 ; -C -1 ; WX 600 ; N Igrave ; B 44 -50 680 839 ; -C -1 ; WX 600 ; N LL ; B -69 -50 712 633 ; -C -1 ; WX 600 ; N Ntilde ; B -26 -50 755 790 ; -C -1 ; WX 600 ; N Oacute ; B 26 -65 696 839 ; -C -1 ; WX 600 ; N Ocircumflex ; B 26 -65 696 824 ; -C -1 ; WX 600 ; N Odieresis ; B 26 -65 696 781 ; -C -1 ; WX 600 ; N Ograve ; B 26 -65 696 839 ; -C -1 ; WX 600 ; N Otilde ; B 26 -65 696 790 ; -C -1 ; WX 600 ; N Scaron ; B 23 -65 680 824 ; -C -1 ; WX 600 ; N Scedilla ; B 23 -246 680 648 ; -C -1 ; WX 600 ; N Thorn ; B -26 -50 663 633 ; -C -1 ; WX 600 ; N Uacute ; B 61 -65 753 839 ; -C -1 ; WX 600 ; N Ucircumflex ; B 61 -65 753 824 ; -C -1 ; WX 600 ; N Udieresis ; B 61 -65 753 781 ; -C -1 ; WX 600 ; N Ugrave ; B 61 -65 753 839 ; -C -1 ; WX 600 ; N Yacute ; B 76 -50 742 839 ; -C -1 ; WX 600 ; N Ydieresis ; B 76 -50 742 781 ; -C -1 ; WX 600 ; N Zcaron ; B 34 -50 679 824 ; -C -1 ; WX 600 ; N aacute ; B 16 -65 632 710 ; -C -1 ; WX 600 ; N acircumflex ; B 16 -65 635 703 ; -C -1 ; WX 600 ; N adieresis ; B 16 -65 632 652 ; -C -1 ; WX 600 ; N agrave ; B 16 -65 632 710 ; -C -1 ; WX 600 ; N aring ; B 16 -65 632 746 ; -C -1 ; WX 600 ; N arrowboth ; B -36 50 764 550 ; -C -1 ; WX 600 ; N arrowdown ; B 93 -50 593 689 ; -C -1 ; WX 600 ; N arrowleft ; B -36 50 764 550 ; -C -1 ; WX 600 ; N arrowright ; B -36 50 764 550 ; -C -1 ; WX 600 ; N arrowup ; B 143 -50 643 689 ; -C -1 ; WX 600 ; N atilde ; B 16 -65 654 678 ; -C -1 ; WX 600 ; N brokenbar ; B 178 -204 522 674 ; -C -1 ; WX 600 ; N ccedilla ; B 44 -246 672 502 ; -C -1 ; WX 600 ; N center ; B 2 -50 722 684 ; -C -1 ; WX 600 ; N copyright ; B -27 -65 743 648 ; -C -1 ; WX 600 ; N dectab ; B -54 -50 676 308 ; -C -1 ; WX 600 ; N degree ; B 171 234 624 674 ; -C -1 ; WX 600 ; N divide ; B 52 -9 668 591 ; -C -1 ; WX 600 ; N down ; B 127 -50 539 502 ; -C -1 ; WX 600 ; N eacute ; B 25 -65 650 714 ; -C -1 ; WX 600 ; N ecircumflex ; B 25 -65 650 703 ; -C -1 ; WX 600 ; N edieresis ; B 25 -65 650 652 ; -C -1 ; WX 600 ; N egrave ; B 25 -65 650 714 ; -C -1 ; WX 600 ; N eth ; B 28 -65 695 689 ; -C -1 ; WX 600 ; N format ; B -108 -257 247 674 ; -C -1 ; WX 600 ; N gcaron ; B 25 -257 724 695 ; -C -1 ; WX 600 ; N graybox ; B -25 -100 753 700 ; -C -1 ; WX 600 ; N iacute ; B 23 -50 599 710 ; -C -1 ; WX 600 ; N icircumflex ; B 23 -50 599 684 ; -C -1 ; WX 600 ; N idieresis ; B 23 -50 599 652 ; -C -1 ; WX 600 ; N igrave ; B 23 -50 599 706 ; -C -1 ; WX 600 ; N ij ; B -39 -257 692 725 ; -C -1 ; WX 600 ; N indent ; B 38 0 650 412 ; -C -1 ; WX 600 ; N largebullet ; B 265 206 465 406 ; -C -1 ; WX 600 ; N left ; B 38 0 650 412 ; -C -1 ; WX 600 ; N lira ; B 15 -50 620 648 ; -C -1 ; WX 600 ; N ll ; B -49 -50 682 674 ; -C -1 ; WX 600 ; N logicalnot ; B 67 94 683 454 ; -C -1 ; WX 600 ; N merge ; B 127 -50 569 502 ; -C -1 ; WX 600 ; N minus ; B 52 181 668 381 ; -C -1 ; WX 600 ; N mu ; B 13 -257 640 487 ; -C -1 ; WX 600 ; N multiply ; B 33 -48 669 530 ; -C -1 ; WX 600 ; N notegraphic ; B 107 -65 639 689 ; -C -1 ; WX 600 ; N ntilde ; B -16 -50 632 678 ; -C -1 ; WX 600 ; N oacute ; B 34 -65 656 699 ; -C -1 ; WX 600 ; N ocircumflex ; B 34 -65 656 703 ; -C -1 ; WX 600 ; N odieresis ; B 34 -65 656 652 ; -C -1 ; WX 600 ; N ograve ; B 34 -65 656 699 ; -C -1 ; WX 600 ; N onehalf ; B -14 -65 725 674 ; -C -1 ; WX 600 ; N onequarter ; B -14 -50 741 674 ; -C -1 ; WX 600 ; N onesuperior ; B 151 140 551 674 ; -C -1 ; WX 600 ; N otilde ; B 34 -65 656 657 ; -C -1 ; WX 600 ; N overscore ; B 33 489 817 689 ; -C -1 ; WX 600 ; N plusminus ; B 3 -50 677 610 ; -C -1 ; WX 600 ; N prescription ; B -26 -50 680 633 ; -C -1 ; WX 600 ; N registered ; B -27 -65 743 648 ; -C -1 ; WX 600 ; N return ; B -24 -50 805 668 ; -C -1 ; WX 600 ; N scaron ; B 34 -65 651 695 ; -C -1 ; WX 600 ; N scedilla ; B 34 -246 638 502 ; -C -1 ; WX 600 ; N square ; B -73 -50 805 668 ; -C -1 ; WX 600 ; N stop ; B -73 -50 805 668 ; -C -1 ; WX 600 ; N tab ; B -73 -50 744 668 ; -C -1 ; WX 600 ; N thorn ; B -91 -257 671 674 ; -C -1 ; WX 600 ; N threequarters ; B -3 -50 711 689 ; -C -1 ; WX 600 ; N threesuperior ; B 155 131 612 689 ; -C -1 ; WX 600 ; N trademark ; B 18 170 793 633 ; -C -1 ; WX 600 ; N twosuperior ; B 131 140 601 689 ; -C -1 ; WX 600 ; N uacute ; B 45 -65 640 706 ; -C -1 ; WX 600 ; N ucircumflex ; B 45 -65 640 684 ; -C -1 ; WX 600 ; N udieresis ; B 45 -65 640 652 ; -C -1 ; WX 600 ; N ugrave ; B 45 -65 640 706 ; -C -1 ; WX 600 ; N up ; B 157 -50 569 502 ; -C -1 ; WX 600 ; N yacute ; B -62 -257 711 706 ; -C -1 ; WX 600 ; N ydieresis ; B -62 -257 711 631 ; -C -1 ; WX 600 ; N zcaron ; B 46 -50 651 695 ; -EndCharMetrics -StartComposites 58 -CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 0 146 ; -CC zcaron 2 ; PCC z 0 0 ; PCC caron 0 0 ; -CC Scaron 2 ; PCC S 0 0 ; PCC caron 0 146 ; -CC scaron 2 ; PCC s 0 0 ; PCC caron 0 0 ; -CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 0 0 ; -CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 0 0 ; -CC Yacute 2 ; PCC Y 0 0 ; PCC acute 0 146 ; -CC yacute 2 ; PCC y 0 0 ; PCC acute 0 0 ; -CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 0 146 ; -CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 0 0 ; -CC Uacute 2 ; PCC U 0 0 ; PCC acute 0 146 ; -CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 0 146 ; -CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 0 146 ; -CC Ugrave 2 ; PCC U 0 0 ; PCC grave 0 146 ; -CC uacute 2 ; PCC u 0 0 ; PCC acute 0 0 ; -CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 0 0 ; -CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 0 0 ; -CC ugrave 2 ; PCC u 0 0 ; PCC grave 0 0 ; -CC Iacute 2 ; PCC I 0 0 ; PCC acute 0 146 ; -CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 0 146 ; -CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 0 146 ; -CC Igrave 2 ; PCC I 0 0 ; PCC grave 0 146 ; -CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute 0 0 ; -CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex 0 0 ; -CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis 0 0 ; -CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave 0 0 ; -CC Eacute 2 ; PCC E 0 0 ; PCC acute 0 146 ; -CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 0 146 ; -CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 0 146 ; -CC Egrave 2 ; PCC E 0 0 ; PCC grave 0 146 ; -CC eacute 2 ; PCC e 0 0 ; PCC acute 0 0 ; -CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 0 0 ; -CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 0 0 ; -CC egrave 2 ; PCC e 0 0 ; PCC grave 0 0 ; -CC Aacute 2 ; PCC A 0 0 ; PCC acute 0 146 ; -CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 0 146 ; -CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 0 146 ; -CC Agrave 2 ; PCC A 0 0 ; PCC grave 0 146 ; -CC aacute 2 ; PCC a 0 0 ; PCC acute 0 0 ; -CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 0 0 ; -CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 0 0 ; -CC agrave 2 ; PCC a 0 0 ; PCC grave 0 0 ; -CC Oacute 2 ; PCC O 0 0 ; PCC acute 0 146 ; -CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 0 146 ; -CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 0 146 ; -CC Ograve 2 ; PCC O 0 0 ; PCC grave 0 146 ; -CC oacute 2 ; PCC o 0 0 ; PCC acute 0 0 ; -CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 0 0 ; -CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 0 0 ; -CC ograve 2 ; PCC o 0 0 ; PCC grave 0 0 ; -CC Atilde 2 ; PCC A 0 0 ; PCC tilde 0 146 ; -CC atilde 2 ; PCC a 0 0 ; PCC tilde 0 0 ; -CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 0 146 ; -CC ntilde 2 ; PCC n 0 0 ; PCC tilde 0 0 ; -CC Otilde 2 ; PCC O 0 0 ; PCC tilde 0 146 ; -CC otilde 2 ; PCC o 0 0 ; PCC tilde 0 0 ; -CC Aring 2 ; PCC A 0 0 ; PCC ring 0 146 ; -CC aring 2 ; PCC a 0 0 ; PCC ring 0 0 ; -EndComposites -EndFontMetrics diff --git a/misc/afm/CourO.afm b/misc/afm/CourO.afm deleted file mode 100644 index 0911df46f9..0000000000 --- a/misc/afm/CourO.afm +++ /dev/null @@ -1,341 +0,0 @@ -StartFontMetrics 2.0 -Comment Copyright (c) 1984 Adobe Systems Incorporated. All Rights Reserved. -Comment Creation Date:Wed Feb 25 16:13:37 PST 1987 -FontName Courier-Oblique -EncodingScheme AdobeStandardEncoding -FullName Courier Oblique -FamilyName Courier -Weight Medium -ItalicAngle -12.0 -IsFixedPitch true -UnderlinePosition -82 -UnderlineThickness 40 -Version 001.003 -FontBBox -85 -290 759 795 -CapHeight 583 -XHeight 437 -Descender -207 -Ascender 624 -StartCharMetrics 260 -C 32 ; WX 600 ; N space ; B 560 -40 640 40 ; -C 33 ; WX 600 ; N exclam ; B 257 -5 483 639 ; -C 34 ; WX 600 ; N quotedbl ; B 231 314 594 603 ; -C 35 ; WX 600 ; N numbersign ; B 116 -82 608 665 ; -C 36 ; WX 600 ; N dollar ; B 111 -113 601 675 ; -C 37 ; WX 600 ; N percent ; B 118 -35 611 639 ; -C 38 ; WX 600 ; N ampersand ; B 112 -35 547 540 ; -C 39 ; WX 600 ; N quoteright ; B 208 304 462 613 ; -C 40 ; WX 600 ; N parenleft ; B 315 -144 602 623 ; -C 41 ; WX 600 ; N parenright ; B 105 -144 392 623 ; -C 42 ; WX 600 ; N asterisk ; B 191 210 605 624 ; -C 43 ; WX 600 ; N plus ; B 112 12 608 550 ; -C 44 ; WX 600 ; N comma ; B 111 -155 364 155 ; -C 45 ; WX 600 ; N hyphen ; B 112 241 608 321 ; -C 46 ; WX 600 ; N period ; B 261 10 361 90 ; -C 47 ; WX 600 ; N slash ; B 80 -103 644 686 ; -C 48 ; WX 600 ; N zero ; B 139 -35 590 639 ; -C 49 ; WX 600 ; N one ; B 97 -20 511 624 ; -C 50 ; WX 600 ; N two ; B 68 -20 596 639 ; -C 51 ; WX 600 ; N three ; B 90 -35 599 639 ; -C 52 ; WX 600 ; N four ; B 125 -20 560 624 ; -C 53 ; WX 600 ; N five ; B 93 -35 602 624 ; -C 54 ; WX 600 ; N six ; B 167 -35 654 639 ; -C 55 ; WX 600 ; N seven ; B 196 -20 622 624 ; -C 56 ; WX 600 ; N eight ; B 124 -35 595 639 ; -C 57 ; WX 600 ; N nine ; B 120 -35 606 639 ; -C 58 ; WX 600 ; N colon ; B 261 10 425 392 ; -C 59 ; WX 600 ; N semicolon ; B 123 -116 425 392 ; -C 60 ; WX 600 ; N less ; B 112 12 656 550 ; -C 61 ; WX 600 ; N equal ; B 75 168 644 394 ; -C 62 ; WX 600 ; N greater ; B 63 12 608 550 ; -C 63 ; WX 600 ; N question ; B 211 -5 597 598 ; -C 64 ; WX 600 ; N at ; B 120 -82 580 644 ; -C 65 ; WX 600 ; N A ; B -7 -20 615 583 ; -C 66 ; WX 600 ; N B ; B 27 -20 610 583 ; -C 67 ; WX 600 ; N C ; B 91 -35 655 598 ; -C 68 ; WX 600 ; N D ; B 27 -20 610 583 ; -C 69 ; WX 600 ; N E ; B 27 -20 634 583 ; -C 70 ; WX 600 ; N F ; B 27 -20 655 583 ; -C 71 ; WX 600 ; N G ; B 89 -35 655 598 ; -C 72 ; WX 600 ; N H ; B 37 -20 665 583 ; -C 73 ; WX 600 ; N I ; B 97 -20 622 583 ; -C 74 ; WX 600 ; N J ; B 82 -35 718 583 ; -C 75 ; WX 600 ; N K ; B 27 -20 686 583 ; -C 76 ; WX 600 ; N L ; B 47 -20 605 583 ; -C 77 ; WX 600 ; N M ; B -5 -20 718 583 ; -C 78 ; WX 600 ; N N ; B 27 -20 697 583 ; -C 79 ; WX 600 ; N O ; B 83 -35 636 598 ; -C 80 ; WX 600 ; N P ; B 27 -20 606 583 ; -C 81 ; WX 600 ; N Q ; B 84 -136 636 598 ; -C 82 ; WX 600 ; N R ; B 27 -20 613 583 ; -C 83 ; WX 600 ; N S ; B 76 -35 622 598 ; -C 84 ; WX 600 ; N T ; B 129 -20 663 583 ; -C 85 ; WX 600 ; N U ; B 119 -35 695 583 ; -C 86 ; WX 600 ; N V ; B 104 -20 726 583 ; -C 87 ; WX 600 ; N W ; B 103 -20 715 583 ; -C 88 ; WX 600 ; N X ; B 24 -20 684 583 ; -C 89 ; WX 600 ; N Y ; B 129 -20 684 583 ; -C 90 ; WX 600 ; N Z ; B 87 -20 611 583 ; -C 91 ; WX 600 ; N bracketleft ; B 238 -144 589 624 ; -C 92 ; WX 600 ; N backslash ; B 230 -103 494 686 ; -C 93 ; WX 600 ; N bracketright ; B 113 -144 464 624 ; -C 94 ; WX 600 ; N asciicircum ; B 173 335 587 624 ; -C 95 ; WX 600 ; N underscore ; B -85 -290 579 -210 ; -C 96 ; WX 600 ; N quoteleft ; B 382 304 538 613 ; -C 97 ; WX 600 ; N a ; B 74 -35 565 452 ; -C 98 ; WX 600 ; N b ; B 6 -35 610 624 ; -C 99 ; WX 600 ; N c ; B 104 -35 614 452 ; -C 100 ; WX 600 ; N d ; B 83 -35 643 624 ; -C 101 ; WX 600 ; N e ; B 85 -35 590 452 ; -C 102 ; WX 600 ; N f ; B 89 -20 682 624 ; L i fi ; L l fl ; -C 103 ; WX 600 ; N g ; B 85 -207 666 452 ; -C 104 ; WX 600 ; N h ; B 37 -20 575 624 ; -C 105 ; WX 600 ; N i ; B 76 -20 532 665 ; -C 106 ; WX 600 ; N j ; B 92 -207 562 665 ; -C 107 ; WX 600 ; N k ; B 47 -20 603 624 ; -C 108 ; WX 600 ; N l ; B 76 -20 532 624 ; -C 109 ; WX 600 ; N m ; B -5 -20 621 452 ; -C 110 ; WX 600 ; N n ; B 37 -20 565 452 ; -C 111 ; WX 600 ; N o ; B 91 -35 597 452 ; -C 112 ; WX 600 ; N p ; B -33 -207 612 452 ; -C 113 ; WX 600 ; N q ; B 85 -207 687 452 ; -C 114 ; WX 600 ; N r ; B 68 -20 639 448 ; -C 115 ; WX 600 ; N s ; B 87 -35 580 452 ; -C 116 ; WX 600 ; N t ; B 107 -35 541 582 ; -C 117 ; WX 600 ; N u ; B 107 -35 582 437 ; -C 118 ; WX 600 ; N v ; B 94 -20 674 437 ; -C 119 ; WX 600 ; N w ; B 94 -20 674 437 ; -C 120 ; WX 600 ; N x ; B 35 -20 632 437 ; -C 121 ; WX 600 ; N y ; B -4 -207 653 437 ; -C 122 ; WX 600 ; N z ; B 99 -20 582 437 ; -C 123 ; WX 600 ; N braceleft ; B 228 -144 547 624 ; -C 124 ; WX 600 ; N bar ; B 238 -144 464 624 ; -C 125 ; WX 600 ; N braceright ; B 155 -144 474 624 ; -C 126 ; WX 600 ; N asciitilde ; B 127 189 592 373 ; -C 161 ; WX 600 ; N exclamdown ; B 209 -207 430 415 ; -C 162 ; WX 600 ; N cent ; B 156 -19 583 665 ; -C 163 ; WX 600 ; N sterling ; B 68 -20 560 598 ; -C 164 ; WX 600 ; N fraction ; B 65 120 665 492 ; -C 165 ; WX 600 ; N yen ; B 137 -20 684 583 ; -C 166 ; WX 600 ; N florin ; B 54 -113 663 639 ; -C 167 ; WX 600 ; N section ; B 78 -87 637 629 ; -C 168 ; WX 600 ; N currency ; B 107 75 617 509 ; -C 169 ; WX 600 ; N quotesingle ; B 333 304 492 613 ; -C 170 ; WX 600 ; N quotedblleft ; B 216 340 588 619 ; -C 171 ; WX 600 ; N guillemotleft ; B 87 -20 645 437 ; -C 172 ; WX 600 ; N guilsinglleft ; B 87 -20 416 437 ; -C 173 ; WX 600 ; N guilsinglright ; B 277 -20 605 437 ; -C 174 ; WX 600 ; N fi ; B -6 -20 628 665 ; -C 175 ; WX 600 ; N fl ; B -6 -20 629 624 ; -C 177 ; WX 600 ; N endash ; B 112 241 608 321 ; -C 178 ; WX 600 ; N dagger ; B 188 -82 580 624 ; -C 179 ; WX 600 ; N daggerdbl ; B 135 -82 580 624 ; -C 180 ; WX 600 ; N periodcentered ; B 315 266 415 346 ; -C 182 ; WX 600 ; N paragraph ; B 132 -87 670 629 ; -C 183 ; WX 600 ; N bullet ; B 325 266 405 346 ; -C 184 ; WX 600 ; N quotesinglbase ; B 108 -165 362 144 ; -C 185 ; WX 600 ; N quotedblbase ; B 72 -139 528 139 ; -C 186 ; WX 600 ; N quotedblright ; B 174 340 630 619 ; -C 187 ; WX 600 ; N guillemotright ; B 47 -20 605 437 ; -C 188 ; WX 600 ; N ellipsis ; B 67 -5 547 75 ; -C 189 ; WX 600 ; N perthousand ; B 117 -35 619 639 ; -C 191 ; WX 600 ; N questiondown ; B 85 -207 470 415 ; -C 193 ; WX 600 ; N grave ; B 262 450 444 639 ; -C 194 ; WX 600 ; N acute ; B 364 450 592 639 ; -C 195 ; WX 600 ; N circumflex ; B 239 450 569 624 ; -C 196 ; WX 600 ; N tilde ; B 231 441 586 580 ; -C 197 ; WX 600 ; N macron ; B 245 476 575 556 ; -C 198 ; WX 600 ; N breve ; B 258 450 589 624 ; -C 199 ; WX 600 ; N dotaccent ; B 373 491 453 571 ; -C 200 ; WX 600 ; N dieresis ; B 269 491 557 571 ; -C 202 ; WX 600 ; N ring ; B 297 413 526 634 ; -C 203 ; WX 600 ; N cedilla ; B 163 -186 376 40 ; -C 205 ; WX 600 ; N hungarumlaut ; B 239 450 592 639 ; -C 206 ; WX 600 ; N ogonek ; B 244 -165 430 40 ; -C 207 ; WX 600 ; N caron ; B 259 450 589 624 ; -C 208 ; WX 600 ; N emdash ; B 41 241 679 321 ; -C 225 ; WX 600 ; N AE ; B -6 -20 705 583 ; -C 227 ; WX 600 ; N ordfeminine ; B 174 179 529 598 ; -C 232 ; WX 600 ; N Lslash ; B 47 -20 605 583 ; -C 233 ; WX 600 ; N Oslash ; B 16 -61 704 623 ; -C 234 ; WX 600 ; N OE ; B 42 -20 705 583 ; -C 235 ; WX 600 ; N ordmasculine ; B 178 179 563 598 ; -C 241 ; WX 600 ; N ae ; B 19 -35 651 452 ; -C 245 ; WX 600 ; N dotlessi ; B 76 -20 532 437 ; -C 248 ; WX 600 ; N lslash ; B 76 -20 544 624 ; -C 249 ; WX 600 ; N oslash ; B 29 -61 656 478 ; -C 250 ; WX 600 ; N oe ; B 28 -35 651 452 ; -C 251 ; WX 600 ; N germandbls ; B 27 -35 558 624 ; -C -1 ; WX 600 ; N Aacute ; B -7 -20 615 789 ; -C -1 ; WX 600 ; N Acircumflex ; B -7 -20 615 774 ; -C -1 ; WX 600 ; N Adieresis ; B -7 -20 615 721 ; -C -1 ; WX 600 ; N Agrave ; B -7 -20 615 789 ; -C -1 ; WX 600 ; N Aring ; B -7 -20 615 795 ; -C -1 ; WX 600 ; N Atilde ; B -7 -20 615 730 ; -C -1 ; WX 600 ; N Ccedilla ; B 91 -186 655 598 ; -C -1 ; WX 600 ; N Eacute ; B 27 -20 634 789 ; -C -1 ; WX 600 ; N Ecircumflex ; B 27 -20 634 774 ; -C -1 ; WX 600 ; N Edieresis ; B 27 -20 634 721 ; -C -1 ; WX 600 ; N Egrave ; B 27 -20 634 789 ; -C -1 ; WX 600 ; N Eth ; B 27 -20 610 583 ; -C -1 ; WX 600 ; N Gcaron ; B 89 -35 655 774 ; -C -1 ; WX 600 ; N IJ ; B -6 -35 725 583 ; -C -1 ; WX 600 ; N Iacute ; B 97 -20 622 789 ; -C -1 ; WX 600 ; N Icircumflex ; B 97 -20 622 774 ; -C -1 ; WX 600 ; N Idieresis ; B 97 -20 622 721 ; -C -1 ; WX 600 ; N Idot ; B 97 -20 622 721 ; -C -1 ; WX 600 ; N Igrave ; B 97 -20 622 789 ; -C -1 ; WX 600 ; N LL ; B -16 -20 652 583 ; -C -1 ; WX 600 ; N Ntilde ; B 27 -20 697 730 ; -C -1 ; WX 600 ; N Oacute ; B 83 -35 636 789 ; -C -1 ; WX 600 ; N Ocircumflex ; B 83 -35 636 774 ; -C -1 ; WX 600 ; N Odieresis ; B 83 -35 636 721 ; -C -1 ; WX 600 ; N Ograve ; B 83 -35 636 789 ; -C -1 ; WX 600 ; N Otilde ; B 83 -35 636 730 ; -C -1 ; WX 600 ; N Scaron ; B 76 -35 622 774 ; -C -1 ; WX 600 ; N Scedilla ; B 76 -186 622 598 ; -C -1 ; WX 600 ; N Thorn ; B 27 -20 603 583 ; -C -1 ; WX 600 ; N Uacute ; B 119 -35 695 789 ; -C -1 ; WX 600 ; N Ucircumflex ; B 119 -35 695 774 ; -C -1 ; WX 600 ; N Udieresis ; B 119 -35 695 721 ; -C -1 ; WX 600 ; N Ugrave ; B 119 -35 695 789 ; -C -1 ; WX 600 ; N Yacute ; B 129 -20 684 789 ; -C -1 ; WX 600 ; N Ydieresis ; B 129 -20 684 721 ; -C -1 ; WX 600 ; N Zcaron ; B 87 -20 621 774 ; -C -1 ; WX 600 ; N aacute ; B 74 -35 565 660 ; -C -1 ; WX 600 ; N acircumflex ; B 74 -35 575 653 ; -C -1 ; WX 600 ; N adieresis ; B 74 -35 565 592 ; -C -1 ; WX 600 ; N agrave ; B 74 -35 565 660 ; -C -1 ; WX 600 ; N aring ; B 74 -35 565 686 ; -C -1 ; WX 600 ; N arrowboth ; B 24 110 704 490 ; -C -1 ; WX 600 ; N arrowdown ; B 146 -20 526 639 ; -C -1 ; WX 600 ; N arrowleft ; B 24 110 704 490 ; -C -1 ; WX 600 ; N arrowright ; B 24 110 704 490 ; -C -1 ; WX 600 ; N arrowup ; B 205 -20 585 639 ; -C -1 ; WX 600 ; N atilde ; B 74 -35 594 618 ; -C -1 ; WX 600 ; N brokenbar ; B 238 -144 464 624 ; -C -1 ; WX 600 ; N ccedilla ; B 104 -186 614 452 ; -C -1 ; WX 600 ; N center ; B 62 -20 662 624 ; -C -1 ; WX 600 ; N copyright ; B 33 -35 683 598 ; -C -1 ; WX 600 ; N dectab ; B -1 -20 609 248 ; -C -1 ; WX 600 ; N degree ; B 231 294 564 624 ; -C -1 ; WX 600 ; N divide ; B 112 51 608 531 ; -C -1 ; WX 600 ; N down ; B 181 -20 473 452 ; -C -1 ; WX 600 ; N eacute ; B 85 -35 590 664 ; -C -1 ; WX 600 ; N ecircumflex ; B 85 -35 590 653 ; -C -1 ; WX 600 ; N edieresis ; B 85 -35 590 592 ; -C -1 ; WX 600 ; N egrave ; B 85 -35 590 664 ; -C -1 ; WX 600 ; N eth ; B 87 -35 637 639 ; -C -1 ; WX 600 ; N format ; B -50 -207 189 624 ; -C -1 ; WX 600 ; N gcaron ; B 85 -207 666 645 ; -C -1 ; WX 600 ; N graybox ; B 35 -40 693 640 ; -C -1 ; WX 600 ; N iacute ; B 76 -20 532 660 ; -C -1 ; WX 600 ; N icircumflex ; B 76 -20 532 634 ; -C -1 ; WX 600 ; N idieresis ; B 76 -20 532 592 ; -C -1 ; WX 600 ; N igrave ; B 76 -20 532 656 ; -C -1 ; WX 600 ; N ij ; B 14 -207 634 665 ; -C -1 ; WX 600 ; N indent ; B 98 60 590 352 ; -C -1 ; WX 600 ; N largebullet ; B 325 266 405 346 ; -C -1 ; WX 600 ; N left ; B 98 60 590 352 ; -C -1 ; WX 600 ; N lira ; B 68 -20 560 598 ; -C -1 ; WX 600 ; N ll ; B 4 -20 624 624 ; -C -1 ; WX 600 ; N logicalnot ; B 127 154 623 394 ; -C -1 ; WX 600 ; N merge ; B 181 -20 511 452 ; -C -1 ; WX 600 ; N minus ; B 112 241 608 321 ; -C -1 ; WX 600 ; N mu ; B 71 -207 582 437 ; -C -1 ; WX 600 ; N multiply ; B 93 12 609 470 ; -C -1 ; WX 600 ; N notegraphic ; B 167 -5 573 639 ; -C -1 ; WX 600 ; N ntilde ; B 37 -20 569 618 ; -C -1 ; WX 600 ; N oacute ; B 91 -35 597 649 ; -C -1 ; WX 600 ; N ocircumflex ; B 91 -35 597 653 ; -C -1 ; WX 600 ; N odieresis ; B 91 -35 597 592 ; -C -1 ; WX 600 ; N ograve ; B 91 -35 597 649 ; -C -1 ; WX 600 ; N onehalf ; B 46 -20 665 624 ; -C -1 ; WX 600 ; N onequarter ; B 46 -20 681 624 ; -C -1 ; WX 600 ; N onesuperior ; B 211 200 491 624 ; -C -1 ; WX 600 ; N otilde ; B 91 -35 597 597 ; -C -1 ; WX 600 ; N overscore ; B 95 559 759 639 ; -C -1 ; WX 600 ; N plusminus ; B 56 -20 617 550 ; -C -1 ; WX 600 ; N prescription ; B 27 -20 613 583 ; -C -1 ; WX 600 ; N registered ; B 33 -35 683 598 ; -C -1 ; WX 600 ; N return ; B 36 -20 745 608 ; -C -1 ; WX 600 ; N scaron ; B 87 -35 593 645 ; -C -1 ; WX 600 ; N scedilla ; B 87 -186 580 452 ; -C -1 ; WX 600 ; N square ; B -20 -20 745 608 ; -C -1 ; WX 600 ; N stop ; B -20 -20 745 608 ; -C -1 ; WX 600 ; N tab ; B -20 -20 684 608 ; -C -1 ; WX 600 ; N thorn ; B -33 -207 612 624 ; -C -1 ; WX 600 ; N threequarters ; B 57 -20 651 639 ; -C -1 ; WX 600 ; N threesuperior ; B 215 191 552 639 ; -C -1 ; WX 600 ; N trademark ; B 78 230 735 583 ; -C -1 ; WX 600 ; N twosuperior ; B 191 200 541 639 ; -C -1 ; WX 600 ; N uacute ; B 107 -35 582 656 ; -C -1 ; WX 600 ; N ucircumflex ; B 107 -35 582 634 ; -C -1 ; WX 600 ; N udieresis ; B 107 -35 582 592 ; -C -1 ; WX 600 ; N ugrave ; B 107 -35 582 656 ; -C -1 ; WX 600 ; N up ; B 219 -20 511 452 ; -C -1 ; WX 600 ; N yacute ; B -4 -207 653 656 ; -C -1 ; WX 600 ; N ydieresis ; B -4 -207 653 571 ; -C -1 ; WX 600 ; N zcaron ; B 99 -20 593 645 ; -EndCharMetrics -StartComposites 58 -CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 0 146 ; -CC zcaron 2 ; PCC z 0 0 ; PCC caron 0 0 ; -CC Scaron 2 ; PCC S 0 0 ; PCC caron 0 146 ; -CC scaron 2 ; PCC s 0 0 ; PCC caron 0 0 ; -CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 0 0 ; -CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 0 0 ; -CC Yacute 2 ; PCC Y 0 0 ; PCC acute 0 146 ; -CC yacute 2 ; PCC y 0 0 ; PCC acute 0 0 ; -CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 0 146 ; -CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 0 0 ; -CC Uacute 2 ; PCC U 0 0 ; PCC acute 0 146 ; -CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 0 146 ; -CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 0 146 ; -CC Ugrave 2 ; PCC U 0 0 ; PCC grave 0 146 ; -CC uacute 2 ; PCC u 0 0 ; PCC acute 0 0 ; -CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 0 0 ; -CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 0 0 ; -CC ugrave 2 ; PCC u 0 0 ; PCC grave 0 0 ; -CC Iacute 2 ; PCC I 0 0 ; PCC acute 0 146 ; -CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 0 146 ; -CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 0 146 ; -CC Igrave 2 ; PCC I 0 0 ; PCC grave 0 146 ; -CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute 0 0 ; -CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex 0 0 ; -CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis 0 0 ; -CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave 0 0 ; -CC Eacute 2 ; PCC E 0 0 ; PCC acute 0 146 ; -CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 0 146 ; -CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 0 146 ; -CC Egrave 2 ; PCC E 0 0 ; PCC grave 0 146 ; -CC eacute 2 ; PCC e 0 0 ; PCC acute 0 0 ; -CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 0 0 ; -CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 0 0 ; -CC egrave 2 ; PCC e 0 0 ; PCC grave 0 0 ; -CC Aacute 2 ; PCC A 0 0 ; PCC acute 0 146 ; -CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 0 146 ; -CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 0 146 ; -CC Agrave 2 ; PCC A 0 0 ; PCC grave 0 146 ; -CC aacute 2 ; PCC a 0 0 ; PCC acute 0 0 ; -CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 0 0 ; -CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 0 0 ; -CC agrave 2 ; PCC a 0 0 ; PCC grave 0 0 ; -CC Oacute 2 ; PCC O 0 0 ; PCC acute 0 146 ; -CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 0 146 ; -CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 0 146 ; -CC Ograve 2 ; PCC O 0 0 ; PCC grave 0 146 ; -CC oacute 2 ; PCC o 0 0 ; PCC acute 0 0 ; -CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 0 0 ; -CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 0 0 ; -CC ograve 2 ; PCC o 0 0 ; PCC grave 0 0 ; -CC Atilde 2 ; PCC A 0 0 ; PCC tilde 0 146 ; -CC atilde 2 ; PCC a 0 0 ; PCC tilde 0 0 ; -CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 0 146 ; -CC ntilde 2 ; PCC n 0 0 ; PCC tilde 0 0 ; -CC Otilde 2 ; PCC O 0 0 ; PCC tilde 0 146 ; -CC otilde 2 ; PCC o 0 0 ; PCC tilde 0 0 ; -CC Aring 2 ; PCC A 0 0 ; PCC ring 0 146 ; -CC aring 2 ; PCC a 0 0 ; PCC ring 0 0 ; -EndComposites -EndFontMetrics diff --git a/misc/afm/Helv.afm b/misc/afm/Helv.afm deleted file mode 100644 index b17a3909d4..0000000000 --- a/misc/afm/Helv.afm +++ /dev/null @@ -1,435 +0,0 @@ -StartFontMetrics 2.0 -Comment Copyright (c) 1984 Adobe Systems Incorporated. All Rights Reserved. -Comment Creation Date:Tue Aug 5 11:33:55 PDT 1986 -FontName Helvetica -EncodingScheme AdobeStandardEncoding -FullName Helvetica -FamilyName Helvetica -Weight Medium -ItalicAngle 0.0 -IsFixedPitch false -UnderlinePosition -97 -UnderlineThickness 73 -Version 001.001 -Notice Helvetica is a registered trademark of Allied Corporation. -FontBBox -174 -220 1001 944 -CapHeight 729 -XHeight 525 -Descender -219 -Ascender 729 -StartCharMetrics 228 -C 32 ; WX 278 ; N space ; B 0 0 0 0 ; -C 33 ; WX 278 ; N exclam ; B 124 0 208 729 ; -C 34 ; WX 355 ; N quotedbl ; B 52 462 305 708 ; -C 35 ; WX 556 ; N numbersign ; B 14 -20 542 698 ; -C 36 ; WX 556 ; N dollar ; B 33 -125 518 770 ; -C 37 ; WX 889 ; N percent ; B 29 -20 859 708 ; -C 38 ; WX 667 ; N ampersand ; B 52 -23 637 710 ; -C 39 ; WX 222 ; N quoteright ; B 64 476 158 708 ; -C 40 ; WX 333 ; N parenleft ; B 73 -213 291 729 ; -C 41 ; WX 333 ; N parenright ; B 38 -213 256 729 ; -C 42 ; WX 389 ; N asterisk ; B 40 452 343 740 ; -C 43 ; WX 584 ; N plus ; B 50 -10 534 474 ; -C 44 ; WX 278 ; N comma ; B 87 -150 192 104 ; -C 45 ; WX 333 ; N hyphen ; B 46 240 284 313 ; -C 46 ; WX 278 ; N period ; B 87 0 191 104 ; -C 47 ; WX 278 ; N slash ; B -8 -21 284 708 ; -C 48 ; WX 556 ; N zero ; B 43 -23 507 709 ; -C 49 ; WX 556 ; N one ; B 102 0 347 709 ; -C 50 ; WX 556 ; N two ; B 34 0 511 710 ; -C 51 ; WX 556 ; N three ; B 32 -23 506 709 ; -C 52 ; WX 556 ; N four ; B 28 0 520 709 ; -C 53 ; WX 556 ; N five ; B 35 -23 513 709 ; -C 54 ; WX 556 ; N six ; B 43 -23 513 709 ; -C 55 ; WX 556 ; N seven ; B 46 0 520 709 ; -C 56 ; WX 556 ; N eight ; B 37 -23 513 709 ; -C 57 ; WX 556 ; N nine ; B 38 -23 509 709 ; -C 58 ; WX 278 ; N colon ; B 110 0 214 525 ; -C 59 ; WX 278 ; N semicolon ; B 110 -150 215 516 ; -C 60 ; WX 584 ; N less ; B 45 -10 534 474 ; -C 61 ; WX 584 ; N equal ; B 50 112 534 352 ; -C 62 ; WX 584 ; N greater ; B 50 -10 539 474 ; -C 63 ; WX 556 ; N question ; B 77 0 509 738 ; -C 64 ; WX 1015 ; N at ; B 34 -146 951 737 ; -C 65 ; WX 667 ; N A ; B 17 0 653 729 ; -C 66 ; WX 667 ; N B ; B 79 0 623 729 ; -C 67 ; WX 722 ; N C ; B 48 -23 677 741 ; -C 68 ; WX 722 ; N D ; B 89 0 667 729 ; -C 69 ; WX 667 ; N E ; B 90 0 613 729 ; -C 70 ; WX 611 ; N F ; B 90 0 579 729 ; -C 71 ; WX 778 ; N G ; B 44 -23 709 741 ; -C 72 ; WX 722 ; N H ; B 83 0 644 729 ; -C 73 ; WX 278 ; N I ; B 100 0 194 729 ; -C 74 ; WX 500 ; N J ; B 17 -26 426 729 ; -C 75 ; WX 667 ; N K ; B 79 0 658 729 ; -C 76 ; WX 556 ; N L ; B 80 0 533 729 ; -C 77 ; WX 833 ; N M ; B 75 0 761 729 ; -C 78 ; WX 722 ; N N ; B 76 0 646 729 ; -C 79 ; WX 778 ; N O ; B 38 -23 742 741 ; -C 80 ; WX 667 ; N P ; B 91 0 617 730 ; -C 81 ; WX 778 ; N Q ; B 38 -59 742 741 ; -C 82 ; WX 722 ; N R ; B 93 0 679 729 ; -C 83 ; WX 667 ; N S ; B 48 -23 621 741 ; -C 84 ; WX 611 ; N T ; B 21 0 593 729 ; -C 85 ; WX 722 ; N U ; B 85 -23 645 729 ; -C 86 ; WX 667 ; N V ; B 30 0 645 729 ; -C 87 ; WX 944 ; N W ; B 22 0 929 729 ; -C 88 ; WX 667 ; N X ; B 22 0 649 729 ; -C 89 ; WX 667 ; N Y ; B 13 0 661 729 ; -C 90 ; WX 611 ; N Z ; B 28 0 583 729 ; -C 91 ; WX 278 ; N bracketleft ; B 64 -214 250 729 ; -C 92 ; WX 278 ; N backslash ; B -8 -20 284 729 ; -C 93 ; WX 278 ; N bracketright ; B 23 -215 209 729 ; -C 94 ; WX 469 ; N asciicircum ; B 44 333 425 713 ; -C 95 ; WX 556 ; N underscore ; B -22 -175 578 -125 ; -C 96 ; WX 222 ; N quoteleft ; B 65 459 158 708 ; -C 97 ; WX 556 ; N a ; B 42 -23 535 540 ; -C 98 ; WX 556 ; N b ; B 54 -23 523 729 ; -C 99 ; WX 500 ; N c ; B 31 -23 477 540 ; -C 100 ; WX 556 ; N d ; B 26 -23 495 729 ; -C 101 ; WX 556 ; N e ; B 40 -23 513 541 ; -C 102 ; WX 278 ; N f ; B 18 0 258 733 ; L i fi ; L l fl ; -C 103 ; WX 556 ; N g ; B 29 -220 489 540 ; -C 104 ; WX 556 ; N h ; B 70 0 486 729 ; -C 105 ; WX 222 ; N i ; B 66 0 150 729 ; -C 106 ; WX 222 ; N j ; B -18 -220 153 729 ; -C 107 ; WX 500 ; N k ; B 58 0 502 729 ; -C 108 ; WX 222 ; N l ; B 68 0 152 729 ; -C 109 ; WX 833 ; N m ; B 71 0 763 540 ; -C 110 ; WX 556 ; N n ; B 70 0 487 540 ; -C 111 ; WX 556 ; N o ; B 36 -23 510 540 ; -C 112 ; WX 556 ; N p ; B 54 -219 523 540 ; -C 113 ; WX 556 ; N q ; B 26 -219 495 540 ; -C 114 ; WX 333 ; N r ; B 69 0 321 540 ; -C 115 ; WX 500 ; N s ; B 34 -24 459 540 ; -C 116 ; WX 278 ; N t ; B 14 -24 254 667 ; -C 117 ; WX 556 ; N u ; B 65 -23 482 525 ; -C 118 ; WX 500 ; N v ; B 10 0 486 525 ; -C 119 ; WX 722 ; N w ; B 6 0 708 525 ; -C 120 ; WX 500 ; N x ; B 17 0 473 525 ; -C 121 ; WX 500 ; N y ; B 20 -219 478 525 ; -C 122 ; WX 500 ; N z ; B 31 0 457 525 ; -C 123 ; WX 334 ; N braceleft ; B 43 -214 276 731 ; -C 124 ; WX 260 ; N bar ; B 100 -215 160 729 ; -C 125 ; WX 334 ; N braceright ; B 29 -214 262 731 ; -C 126 ; WX 584 ; N asciitilde ; B 75 267 508 438 ; -C 161 ; WX 333 ; N exclamdown ; B 121 -214 205 525 ; -C 162 ; WX 556 ; N cent ; B 52 -120 510 628 ; -C 163 ; WX 556 ; N sterling ; B 26 -21 535 726 ; -C 164 ; WX 167 ; N fraction ; B -174 -21 336 708 ; -C 165 ; WX 556 ; N yen ; B 11 0 545 710 ; -C 166 ; WX 556 ; N florin ; B 11 -214 542 742 ; -C 167 ; WX 556 ; N section ; B 44 -215 506 729 ; -C 168 ; WX 556 ; N currency ; B 67 126 489 554 ; -C 169 ; WX 191 ; N quotesingle ; B 48 462 142 708 ; -C 170 ; WX 333 ; N quotedblleft ; B 48 459 299 708 ; -C 171 ; WX 556 ; N guillemotleft ; B 98 106 455 438 ; -C 172 ; WX 333 ; N guilsinglleft ; B 91 112 243 436 ; -C 173 ; WX 333 ; N guilsinglright ; B 85 112 239 436 ; -C 174 ; WX 500 ; N fi ; B 12 0 436 733 ; -C 175 ; WX 500 ; N fl ; B 17 0 430 733 ; -C 177 ; WX 556 ; N endash ; B -5 240 561 313 ; -C 178 ; WX 556 ; N dagger ; B 38 -178 513 710 ; -C 179 ; WX 556 ; N daggerdbl ; B 38 -178 513 710 ; -C 180 ; WX 278 ; N periodcentered ; B 87 318 211 442 ; -C 182 ; WX 537 ; N paragraph ; B 48 -178 522 729 ; -C 183 ; WX 350 ; N bullet ; B 50 220 300 470 ; -C 184 ; WX 222 ; N quotesinglbase ; B 64 -129 158 103 ; -C 185 ; WX 333 ; N quotedblbase ; B 47 -129 300 103 ; -C 186 ; WX 333 ; N quotedblright ; B 49 476 302 708 ; -C 187 ; WX 556 ; N guillemotright ; B 98 106 451 438 ; -C 188 ; WX 1000 ; N ellipsis ; B 115 0 885 104 ; -C 189 ; WX 1000 ; N perthousand ; B 9 -20 993 740 ; -C 191 ; WX 611 ; N questiondown ; B 95 -213 528 525 ; -C 193 ; WX 333 ; N grave ; B 22 592 231 740 ; -C 194 ; WX 333 ; N acute ; B 92 592 301 740 ; -C 195 ; WX 333 ; N circumflex ; B 20 591 307 741 ; -C 196 ; WX 333 ; N tilde ; B 5 589 319 716 ; -C 197 ; WX 333 ; N macron ; B 28 621 302 694 ; -C 198 ; WX 333 ; N breve ; B 15 594 316 729 ; -C 199 ; WX 333 ; N dotaccent ; B 115 605 219 709 ; -C 200 ; WX 333 ; N dieresis ; B 30 605 296 708 ; -C 202 ; WX 333 ; N ring ; B 79 566 255 741 ; -C 203 ; WX 333 ; N cedilla ; B 39 -214 287 0 ; -C 205 ; WX 333 ; N hungarumlaut ; B -35 592 348 740 ; -C 206 ; WX 333 ; N ogonek ; B 57 -189 265 15 ; -C 207 ; WX 333 ; N caron ; B 19 590 306 740 ; -C 208 ; WX 1000 ; N emdash ; B -9 240 1001 313 ; -C 225 ; WX 1000 ; N AE ; B 11 0 950 729 ; -C 227 ; WX 370 ; N ordfeminine ; B 37 301 333 740 ; -C 232 ; WX 556 ; N Lslash ; B 0 0 552 729 ; -C 233 ; WX 778 ; N Oslash ; B 30 -23 744 742 ; -C 234 ; WX 1000 ; N OE ; B 43 -20 959 739 ; -C 235 ; WX 365 ; N ordmasculine ; B 40 301 324 741 ; -C 241 ; WX 889 ; N ae ; B 34 -20 845 546 ; -C 245 ; WX 278 ; N dotlessi ; B 94 0 178 525 ; -C 248 ; WX 222 ; N lslash ; B 0 0 212 729 ; -C 249 ; WX 611 ; N oslash ; B 18 -27 529 548 ; -C 250 ; WX 944 ; N oe ; B 40 -22 899 540 ; -C 251 ; WX 611 ; N germandbls ; B 126 -20 566 729 ; -C -1 ; WX 667 ; N Aacute ; B 17 0 653 939 ; -C -1 ; WX 667 ; N Acircumflex ; B 17 0 653 940 ; -C -1 ; WX 667 ; N Adieresis ; B 17 0 653 907 ; -C -1 ; WX 667 ; N Agrave ; B 17 0 653 939 ; -C -1 ; WX 667 ; N Aring ; B 17 0 653 940 ; -C -1 ; WX 667 ; N Atilde ; B 17 0 653 915 ; -C -1 ; WX 722 ; N Ccedilla ; B 48 -214 677 741 ; -C -1 ; WX 667 ; N Eacute ; B 90 0 613 939 ; -C -1 ; WX 667 ; N Ecircumflex ; B 90 0 613 940 ; -C -1 ; WX 667 ; N Edieresis ; B 90 0 613 907 ; -C -1 ; WX 667 ; N Egrave ; B 90 0 613 939 ; -C -1 ; WX 722 ; N Eth ; B 0 0 667 729 ; -C -1 ; WX 278 ; N Iacute ; B 71 0 280 939 ; -C -1 ; WX 278 ; N Icircumflex ; B -1 0 286 940 ; -C -1 ; WX 278 ; N Idieresis ; B 9 0 275 907 ; -C -1 ; WX 278 ; N Igrave ; B 1 0 210 939 ; -C -1 ; WX 722 ; N Ntilde ; B 76 0 646 915 ; -C -1 ; WX 778 ; N Oacute ; B 38 -23 742 939 ; -C -1 ; WX 778 ; N Ocircumflex ; B 38 -23 742 940 ; -C -1 ; WX 778 ; N Odieresis ; B 38 -23 742 907 ; -C -1 ; WX 778 ; N Ograve ; B 38 -23 742 939 ; -C -1 ; WX 778 ; N Otilde ; B 38 -23 742 915 ; -C -1 ; WX 667 ; N Scaron ; B 48 -23 621 939 ; -C -1 ; WX 667 ; N Thorn ; B 91 0 617 729 ; -C -1 ; WX 722 ; N Uacute ; B 85 -23 645 939 ; -C -1 ; WX 722 ; N Ucircumflex ; B 85 -23 645 940 ; -C -1 ; WX 722 ; N Udieresis ; B 85 -23 645 907 ; -C -1 ; WX 722 ; N Ugrave ; B 85 -23 645 939 ; -C -1 ; WX 667 ; N Yacute ; B 13 0 661 944 ; -C -1 ; WX 667 ; N Ydieresis ; B 13 0 661 907 ; -C -1 ; WX 611 ; N Zcaron ; B 28 0 583 939 ; -C -1 ; WX 556 ; N aacute ; B 42 -23 535 740 ; -C -1 ; WX 556 ; N acircumflex ; B 42 -23 535 741 ; -C -1 ; WX 556 ; N adieresis ; B 42 -23 535 708 ; -C -1 ; WX 556 ; N agrave ; B 42 -23 535 740 ; -C -1 ; WX 556 ; N aring ; B 42 -23 535 741 ; -C -1 ; WX 556 ; N atilde ; B 42 -23 535 716 ; -C -1 ; WX 260 ; N brokenbar ; B 100 -215 160 729 ; -C -1 ; WX 500 ; N ccedilla ; B 31 -214 477 540 ; -C -1 ; WX 737 ; N copyright ; B -13 -23 751 741 ; -C -1 ; WX 400 ; N degree ; B 50 409 350 709 ; -C -1 ; WX 584 ; N divide ; B 50 -10 534 474 ; -C -1 ; WX 556 ; N eacute ; B 40 -23 513 740 ; -C -1 ; WX 556 ; N ecircumflex ; B 40 -23 513 741 ; -C -1 ; WX 556 ; N edieresis ; B 40 -23 513 708 ; -C -1 ; WX 556 ; N egrave ; B 40 -23 513 740 ; -C -1 ; WX 556 ; N eth ; B 36 -23 510 729 ; -C -1 ; WX 278 ; N iacute ; B 65 0 274 740 ; -C -1 ; WX 278 ; N icircumflex ; B -7 0 280 741 ; -C -1 ; WX 278 ; N idieresis ; B 3 0 269 708 ; -C -1 ; WX 278 ; N igrave ; B -5 0 204 740 ; -C -1 ; WX 584 ; N logicalnot ; B 40 82 544 352 ; -C -1 ; WX 584 ; N minus ; B 40 194 544 270 ; -C -1 ; WX 556 ; N mu ; B 65 -219 482 525 ; -C -1 ; WX 584 ; N multiply ; B 50 -10 534 476 ; -C -1 ; WX 556 ; N ntilde ; B 70 0 487 716 ; -C -1 ; WX 556 ; N oacute ; B 36 -23 510 740 ; -C -1 ; WX 556 ; N ocircumflex ; B 36 -23 510 741 ; -C -1 ; WX 556 ; N odieresis ; B 36 -23 510 708 ; -C -1 ; WX 556 ; N ograve ; B 36 -23 510 740 ; -C -1 ; WX 834 ; N onehalf ; B 30 -21 804 709 ; -C -1 ; WX 834 ; N onequarter ; B 30 -21 804 709 ; -C -1 ; WX 333 ; N onesuperior ; B 60 284 219 709 ; -C -1 ; WX 556 ; N otilde ; B 36 -23 510 716 ; -C -1 ; WX 584 ; N plusminus ; B 40 0 544 618 ; -C -1 ; WX 737 ; N registered ; B -13 -23 751 741 ; -C -1 ; WX 500 ; N scaron ; B 34 -24 459 740 ; -C -1 ; WX 556 ; N thorn ; B 54 -219 523 729 ; -C -1 ; WX 834 ; N threequarters ; B 30 -21 804 709 ; -C -1 ; WX 333 ; N threesuperior ; B 12 270 320 709 ; -C -1 ; WX 1000 ; N trademark ; B 63 320 938 741 ; -C -1 ; WX 333 ; N twosuperior ; B 11 284 321 710 ; -C -1 ; WX 556 ; N uacute ; B 65 -23 482 740 ; -C -1 ; WX 556 ; N ucircumflex ; B 65 -23 482 741 ; -C -1 ; WX 556 ; N udieresis ; B 65 -23 482 708 ; -C -1 ; WX 556 ; N ugrave ; B 65 -23 482 740 ; -C -1 ; WX 500 ; N yacute ; B 20 -219 478 740 ; -C -1 ; WX 500 ; N ydieresis ; B 20 -219 478 708 ; -C -1 ; WX 500 ; N zcaron ; B 31 0 457 740 ; -EndCharMetrics -StartKernData -StartKernPairs 105 - -KPX A y -18 -KPX A w -18 -KPX A v -18 -KPX A space -55 -KPX A quoteright -74 -KPX A Y -74 -KPX A W -37 -KPX A V -74 -KPX A T -74 - -KPX F period -111 -KPX F comma -111 -KPX F A -55 - -KPX L y -37 -KPX L space -37 -KPX L quoteright -55 -KPX L Y -74 -KPX L W -74 -KPX L V -74 -KPX L T -74 - -KPX P space -18 -KPX P period -129 -KPX P comma -129 -KPX P A -74 - -KPX R Y -18 -KPX R W -18 -KPX R V -18 -KPX R T -18 - -KPX T y -55 -KPX T w -55 -KPX T u -37 -KPX T space -18 -KPX T semicolon -111 -KPX T s -111 -KPX T r -37 -KPX T period -111 -KPX T o -111 -KPX T i -37 -KPX T hyphen -55 -KPX T e -111 -KPX T comma -111 -KPX T colon -111 -KPX T c -111 -KPX T a -111 -KPX T O -18 -KPX T A -74 - -KPX V y -37 -KPX V u -37 -KPX V semicolon -37 -KPX V r -37 -KPX V period -92 -KPX V o -55 -KPX V i -18 -KPX V hyphen -55 -KPX V e -55 -KPX V comma -92 -KPX V colon -37 -KPX V a -74 -KPX V A -74 - -KPX W y -9 -KPX W u -18 -KPX W semicolon -18 -KPX W r -18 -KPX W period -55 -KPX W o -18 -KPX W i 0 -KPX W hyphen -18 -KPX W e -18 -KPX W comma -55 -KPX W colon -18 -KPX W a -37 -KPX W A -37 - -KPX Y v -55 -KPX Y u -55 -KPX Y space -18 -KPX Y semicolon -65 -KPX Y q -92 -KPX Y period -129 -KPX Y p -74 -KPX Y o -92 -KPX Y i -37 -KPX Y hyphen -92 -KPX Y e -92 -KPX Y comma -129 -KPX Y colon -55 -KPX Y a -74 -KPX Y A -74 - -KPX f quoteright 18 -KPX f f -18 - -KPX one one -74 - -KPX quoteleft quoteleft -18 - -KPX quoteright space -37 -KPX quoteright s -18 -KPX quoteright quoteright -18 - -KPX r quoteright 37 -KPX r period -55 -KPX r comma -55 - -KPX space Y -18 -KPX space T -18 -KPX space A -55 - -KPX v period -74 -KPX v comma -74 - -KPX w period -55 -KPX w comma -55 - -KPX y period -74 -KPX y comma -74 -EndKernPairs -EndKernData -StartComposites 56 -CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 139 199 ; -CC zcaron 2 ; PCC z 0 0 ; PCC caron 83 0 ; -CC Scaron 2 ; PCC S 0 0 ; PCC caron 167 199 ; -CC scaron 2 ; PCC s 0 0 ; PCC caron 83 0 ; -CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 207 0 ; -CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 96 0 ; -CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 167 199 ; -CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 83 0 ; -CC Uacute 2 ; PCC U 0 0 ; PCC acute 194 199 ; -CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 194 199 ; -CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 194 199 ; -CC Ugrave 2 ; PCC U 0 0 ; PCC grave 194 199 ; -CC uacute 2 ; PCC u 0 0 ; PCC acute 111 0 ; -CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 111 0 ; -CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 111 0 ; -CC ugrave 2 ; PCC u 0 0 ; PCC grave 111 0 ; -CC Iacute 2 ; PCC I 0 0 ; PCC acute -21 199 ; -CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex -21 199 ; -CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis -21 199 ; -CC Igrave 2 ; PCC I 0 0 ; PCC grave -21 199 ; -CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -27 0 ; -CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -27 0 ; -CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -27 0 ; -CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -27 0 ; -CC Eacute 2 ; PCC E 0 0 ; PCC acute 188 199 ; -CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 188 199 ; -CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 188 199 ; -CC Egrave 2 ; PCC E 0 0 ; PCC grave 188 199 ; -CC eacute 2 ; PCC e 0 0 ; PCC acute 117 0 ; -CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 117 0 ; -CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 117 0 ; -CC egrave 2 ; PCC e 0 0 ; PCC grave 117 0 ; -CC Aacute 2 ; PCC A 0 0 ; PCC acute 167 199 ; -CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 167 199 ; -CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 167 199 ; -CC Agrave 2 ; PCC A 0 0 ; PCC grave 167 199 ; -CC aacute 2 ; PCC a 0 0 ; PCC acute 111 0 ; -CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 111 0 ; -CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 111 0 ; -CC agrave 2 ; PCC a 0 0 ; PCC grave 111 0 ; -CC Oacute 2 ; PCC O 0 0 ; PCC acute 222 199 ; -CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 222 199 ; -CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 222 199 ; -CC Ograve 2 ; PCC O 0 0 ; PCC grave 222 199 ; -CC oacute 2 ; PCC o 0 0 ; PCC acute 111 0 ; -CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 111 0 ; -CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 111 0 ; -CC ograve 2 ; PCC o 0 0 ; PCC grave 111 0 ; -CC Atilde 2 ; PCC A 0 0 ; PCC tilde 167 199 ; -CC atilde 2 ; PCC a 0 0 ; PCC tilde 111 0 ; -CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 200 199 ; -CC ntilde 2 ; PCC n 0 0 ; PCC tilde 117 0 ; -CC Otilde 2 ; PCC O 0 0 ; PCC tilde 222 199 ; -CC otilde 2 ; PCC o 0 0 ; PCC tilde 111 0 ; -CC Aring 2 ; PCC A 0 0 ; PCC ring 167 199 ; -CC aring 2 ; PCC a 0 0 ; PCC ring 111 0 ; -EndComposites -EndFontMetrics diff --git a/misc/afm/HelvBo.afm b/misc/afm/HelvBo.afm deleted file mode 100644 index 5f14f52069..0000000000 --- a/misc/afm/HelvBo.afm +++ /dev/null @@ -1,431 +0,0 @@ -StartFontMetrics 2.0 -Comment Copyright (c) 1984 Adobe Systems Incorporated. All Rights Reserved. -Comment Creation Date:Tue Aug 5 11:40:08 PDT 1986 -FontName Helvetica-Bold -EncodingScheme AdobeStandardEncoding -FullName Helvetica Bold -FamilyName Helvetica -Weight Bold -ItalicAngle 0.0 -IsFixedPitch false -UnderlinePosition -106 -UnderlineThickness 73 -Version 001.001 -Notice Helvetica is a registered trademark of Allied Corporation. -FontBBox -173 -221 1003 936 -CapHeight 729 -XHeight 542 -Descender -219 -Ascender 729 -StartCharMetrics 228 -C 32 ; WX 278 ; N space ; B 0 0 0 0 ; -C 33 ; WX 333 ; N exclam ; B 112 0 262 729 ; -C 34 ; WX 474 ; N quotedbl ; B 50 470 424 729 ; -C 35 ; WX 556 ; N numbersign ; B 3 -30 553 696 ; -C 36 ; WX 556 ; N dollar ; B 22 -125 526 765 ; -C 37 ; WX 889 ; N percent ; B 22 -18 863 708 ; -C 38 ; WX 722 ; N ampersand ; B 55 -20 694 729 ; -C 39 ; WX 278 ; N quoteright ; B 66 469 201 729 ; -C 40 ; WX 333 ; N parenleft ; B 40 -202 303 729 ; -C 41 ; WX 333 ; N parenright ; B 22 -202 285 729 ; -C 42 ; WX 389 ; N asterisk ; B 23 385 356 730 ; -C 43 ; WX 584 ; N plus ; B 50 -10 534 474 ; -C 44 ; WX 278 ; N comma ; B 64 -174 214 146 ; -C 45 ; WX 333 ; N hyphen ; B 26 208 298 344 ; -C 46 ; WX 278 ; N period ; B 64 0 214 146 ; -C 47 ; WX 278 ; N slash ; B 2 -14 275 715 ; -C 48 ; WX 556 ; N zero ; B 29 -23 517 725 ; -C 49 ; WX 556 ; N one ; B 68 0 378 709 ; -C 50 ; WX 556 ; N two ; B 30 0 515 726 ; -C 51 ; WX 556 ; N three ; B 29 -23 516 726 ; -C 52 ; WX 556 ; N four ; B 24 0 522 709 ; -C 53 ; WX 556 ; N five ; B 27 -24 517 709 ; -C 54 ; WX 556 ; N six ; B 32 -23 519 727 ; -C 55 ; WX 556 ; N seven ; B 29 0 528 709 ; -C 56 ; WX 556 ; N eight ; B 22 -23 525 726 ; -C 57 ; WX 556 ; N nine ; B 28 -23 516 728 ; -C 58 ; WX 333 ; N colon ; B 113 0 263 521 ; -C 59 ; WX 333 ; N semicolon ; B 113 -174 263 521 ; -C 60 ; WX 584 ; N less ; B 40 -10 529 474 ; -C 61 ; WX 584 ; N equal ; B 50 52 534 412 ; -C 62 ; WX 584 ; N greater ; B 40 -10 529 474 ; -C 63 ; WX 611 ; N question ; B 64 0 556 744 ; -C 64 ; WX 975 ; N at ; B 27 -136 947 746 ; -C 65 ; WX 722 ; N A ; B 26 0 703 729 ; -C 66 ; WX 722 ; N B ; B 82 0 666 729 ; -C 67 ; WX 722 ; N C ; B 44 -23 685 741 ; -C 68 ; WX 722 ; N D ; B 77 0 681 729 ; -C 69 ; WX 667 ; N E ; B 79 0 624 729 ; -C 70 ; WX 611 ; N F ; B 74 0 586 729 ; -C 71 ; WX 778 ; N G ; B 42 -24 711 741 ; -C 72 ; WX 722 ; N H ; B 68 0 657 729 ; -C 73 ; WX 278 ; N I ; B 63 0 213 729 ; -C 74 ; WX 556 ; N J ; B 24 -23 486 729 ; -C 75 ; WX 722 ; N K ; B 74 0 717 729 ; -C 76 ; WX 611 ; N L ; B 80 0 579 729 ; -C 77 ; WX 833 ; N M ; B 66 0 776 729 ; -C 78 ; WX 722 ; N N ; B 68 0 661 729 ; -C 79 ; WX 778 ; N O ; B 40 -23 742 741 ; -C 80 ; WX 667 ; N P ; B 76 0 633 729 ; -C 81 ; WX 778 ; N Q ; B 43 -54 745 741 ; -C 82 ; WX 722 ; N R ; B 80 0 677 729 ; -C 83 ; WX 667 ; N S ; B 32 -23 633 741 ; -C 84 ; WX 611 ; N T ; B 14 0 598 729 ; -C 85 ; WX 722 ; N U ; B 76 -23 654 729 ; -C 86 ; WX 667 ; N V ; B 24 0 647 729 ; -C 87 ; WX 944 ; N W ; B 13 0 932 729 ; -C 88 ; WX 667 ; N X ; B 22 0 653 729 ; -C 89 ; WX 667 ; N Y ; B 27 0 650 729 ; -C 90 ; WX 611 ; N Z ; B 30 0 578 729 ; -C 91 ; WX 333 ; N bracketleft ; B 66 -202 308 729 ; -C 92 ; WX 278 ; N backslash ; B -12 -21 289 708 ; -C 93 ; WX 333 ; N bracketright ; B 18 -202 260 729 ; -C 94 ; WX 584 ; N asciicircum ; B 61 271 522 696 ; -C 95 ; WX 556 ; N underscore ; B -22 -200 578 -130 ; -C 96 ; WX 278 ; N quoteleft ; B 67 469 202 729 ; -C 97 ; WX 556 ; N a ; B 27 -24 524 551 ; -C 98 ; WX 611 ; N b ; B 59 -23 575 729 ; -C 99 ; WX 556 ; N c ; B 34 -23 522 551 ; -C 100 ; WX 611 ; N d ; B 29 -23 545 729 ; -C 101 ; WX 556 ; N e ; B 22 -23 525 551 ; -C 102 ; WX 333 ; N f ; B 14 0 313 729 ; L i fi ; L l fl ; -C 103 ; WX 611 ; N g ; B 34 -220 541 551 ; -C 104 ; WX 611 ; N h ; B 67 0 541 729 ; -C 105 ; WX 278 ; N i ; B 67 0 207 729 ; -C 106 ; WX 278 ; N j ; B 4 -219 210 729 ; -C 107 ; WX 556 ; N k ; B 59 0 548 729 ; -C 108 ; WX 278 ; N l ; B 67 0 207 729 ; -C 109 ; WX 889 ; N m ; B 60 0 824 553 ; -C 110 ; WX 611 ; N n ; B 63 0 546 551 ; -C 111 ; WX 611 ; N o ; B 35 -23 569 551 ; -C 112 ; WX 611 ; N p ; B 58 -219 574 551 ; -C 113 ; WX 611 ; N q ; B 28 -219 544 551 ; -C 114 ; WX 389 ; N r ; B 63 0 370 553 ; -C 115 ; WX 556 ; N s ; B 29 -23 520 551 ; -C 116 ; WX 333 ; N t ; B 14 -23 301 678 ; -C 117 ; WX 611 ; N u ; B 58 -23 541 542 ; -C 118 ; WX 556 ; N v ; B 14 0 536 542 ; -C 119 ; WX 778 ; N w ; B 5 0 766 542 ; -C 120 ; WX 556 ; N x ; B 16 0 535 542 ; -C 121 ; WX 556 ; N y ; B 9 -219 538 542 ; -C 122 ; WX 500 ; N z ; B 21 0 468 542 ; -C 123 ; WX 389 ; N braceleft ; B 37 -202 317 729 ; -C 124 ; WX 280 ; N bar ; B 100 -202 180 729 ; -C 125 ; WX 389 ; N braceright ; B 72 -202 352 729 ; -C 126 ; WX 584 ; N asciitilde ; B 60 144 519 322 ; -C 161 ; WX 333 ; N exclamdown ; B 66 -187 216 542 ; -C 162 ; WX 556 ; N cent ; B 37 -122 522 637 ; -C 163 ; WX 556 ; N sterling ; B 31 -20 537 717 ; -C 164 ; WX 167 ; N fraction ; B -173 -20 337 715 ; -C 165 ; WX 556 ; N yen ; B 5 0 552 705 ; -C 166 ; WX 556 ; N florin ; B 21 -221 535 745 ; -C 167 ; WX 556 ; N section ; B 33 -201 518 728 ; -C 168 ; WX 556 ; N currency ; B 26 105 530 604 ; -C 169 ; WX 238 ; N quotesingle ; B 50 469 188 729 ; -C 170 ; WX 500 ; N quotedblleft ; B 71 469 433 729 ; -C 171 ; WX 556 ; N guillemotleft ; B 88 71 468 484 ; -C 172 ; WX 333 ; N guilsinglleft ; B 83 73 250 476 ; -C 173 ; WX 333 ; N guilsinglright ; B 80 73 247 476 ; -C 174 ; WX 611 ; N fi ; B 9 0 548 729 ; -C 175 ; WX 611 ; N fl ; B 12 0 546 729 ; -C 177 ; WX 556 ; N endash ; B -9 208 557 313 ; -C 178 ; WX 556 ; N dagger ; B 31 -195 523 708 ; -C 179 ; WX 556 ; N daggerdbl ; B 28 -195 520 708 ; -C 180 ; WX 278 ; N periodcentered ; B 64 318 188 442 ; -C 182 ; WX 556 ; N paragraph ; B 20 -195 529 729 ; -C 183 ; WX 350 ; N bullet ; B 50 175 300 425 ; -C 184 ; WX 278 ; N quotesinglbase ; B 66 -135 201 125 ; -C 185 ; WX 500 ; N quotedblbase ; B 72 -164 432 141 ; -C 186 ; WX 500 ; N quotedblright ; B 73 469 440 729 ; -C 187 ; WX 556 ; N guillemotright ; B 88 71 462 482 ; -C 188 ; WX 1000 ; N ellipsis ; B 92 0 908 146 ; -C 189 ; WX 1000 ; N perthousand ; B 11 -20 990 745 ; -C 191 ; WX 611 ; N questiondown ; B 51 -192 544 542 ; -C 193 ; WX 333 ; N grave ; B 17 595 213 745 ; -C 194 ; WX 333 ; N acute ; B 121 595 317 745 ; -C 195 ; WX 333 ; N circumflex ; B 8 598 326 745 ; -C 196 ; WX 333 ; N tilde ; B -9 595 345 729 ; -C 197 ; WX 333 ; N macron ; B 16 629 315 717 ; -C 198 ; WX 333 ; N breve ; B 35 593 299 736 ; -C 199 ; WX 333 ; N dotaccent ; B 112 607 222 729 ; -C 200 ; WX 333 ; N dieresis ; B 18 609 314 731 ; -C 202 ; WX 333 ; N ring ; B 77 565 257 745 ; -C 203 ; WX 333 ; N cedilla ; B 27 -220 294 -9 ; -C 205 ; WX 333 ; N hungarumlaut ; B -44 595 340 745 ; -C 206 ; WX 333 ; N ogonek ; B 45 -195 268 38 ; -C 207 ; WX 333 ; N caron ; B 9 598 327 745 ; -C 208 ; WX 1000 ; N emdash ; B -7 208 1003 313 ; -C 225 ; WX 1000 ; N AE ; B 1 0 966 729 ; -C 227 ; WX 370 ; N ordfeminine ; B 31 277 329 746 ; -C 232 ; WX 611 ; N Lslash ; B 0 0 597 729 ; -C 233 ; WX 778 ; N Oslash ; B 31 -34 755 754 ; -C 234 ; WX 1000 ; N OE ; B 28 -20 970 741 ; -C 235 ; WX 365 ; N ordmasculine ; B 23 276 343 745 ; -C 241 ; WX 889 ; N ae ; B 27 -20 857 555 ; -C 245 ; WX 278 ; N dotlessi ; B 67 0 207 542 ; -C 248 ; WX 278 ; N lslash ; B 0 0 252 729 ; -C 249 ; WX 611 ; N oslash ; B 11 -34 598 561 ; -C 250 ; WX 944 ; N oe ; B 23 -21 920 554 ; -C 251 ; WX 611 ; N germandbls ; B 67 -16 575 730 ; -C -1 ; WX 722 ; N Aacute ; B 26 0 703 936 ; -C -1 ; WX 722 ; N Acircumflex ; B 26 0 703 936 ; -C -1 ; WX 722 ; N Adieresis ; B 26 0 703 922 ; -C -1 ; WX 722 ; N Agrave ; B 26 0 703 936 ; -C -1 ; WX 722 ; N Aring ; B 26 0 703 936 ; -C -1 ; WX 722 ; N Atilde ; B 26 0 703 920 ; -C -1 ; WX 722 ; N Ccedilla ; B 44 -220 685 741 ; -C -1 ; WX 667 ; N Eacute ; B 79 0 624 936 ; -C -1 ; WX 667 ; N Ecircumflex ; B 79 0 624 936 ; -C -1 ; WX 667 ; N Edieresis ; B 79 0 624 922 ; -C -1 ; WX 667 ; N Egrave ; B 79 0 624 936 ; -C -1 ; WX 722 ; N Eth ; B -18 0 681 729 ; -C -1 ; WX 278 ; N Iacute ; B 63 0 290 936 ; -C -1 ; WX 278 ; N Icircumflex ; B -19 0 299 936 ; -C -1 ; WX 278 ; N Idieresis ; B -9 0 287 922 ; -C -1 ; WX 278 ; N Igrave ; B -10 0 213 936 ; -C -1 ; WX 722 ; N Ntilde ; B 68 0 661 920 ; -C -1 ; WX 778 ; N Oacute ; B 40 -23 742 936 ; -C -1 ; WX 778 ; N Ocircumflex ; B 40 -23 742 936 ; -C -1 ; WX 778 ; N Odieresis ; B 40 -23 742 922 ; -C -1 ; WX 778 ; N Ograve ; B 40 -23 742 936 ; -C -1 ; WX 778 ; N Otilde ; B 40 -23 742 920 ; -C -1 ; WX 667 ; N Scaron ; B 32 -23 633 936 ; -C -1 ; WX 667 ; N Thorn ; B 76 0 633 729 ; -C -1 ; WX 722 ; N Uacute ; B 76 -23 654 936 ; -C -1 ; WX 722 ; N Ucircumflex ; B 76 -23 654 936 ; -C -1 ; WX 722 ; N Udieresis ; B 76 -23 654 922 ; -C -1 ; WX 722 ; N Ugrave ; B 76 -23 654 936 ; -C -1 ; WX 667 ; N Yacute ; B 27 0 650 932 ; -C -1 ; WX 667 ; N Ydieresis ; B 27 0 650 922 ; -C -1 ; WX 611 ; N Zcaron ; B 30 0 578 936 ; -C -1 ; WX 556 ; N aacute ; B 27 -24 524 745 ; -C -1 ; WX 556 ; N acircumflex ; B 27 -24 524 745 ; -C -1 ; WX 556 ; N adieresis ; B 27 -24 524 731 ; -C -1 ; WX 556 ; N agrave ; B 27 -24 524 745 ; -C -1 ; WX 556 ; N aring ; B 27 -24 524 745 ; -C -1 ; WX 556 ; N atilde ; B 27 -24 524 729 ; -C -1 ; WX 280 ; N brokenbar ; B 100 -202 180 729 ; -C -1 ; WX 556 ; N ccedilla ; B 34 -220 522 551 ; -C -1 ; WX 737 ; N copyright ; B -14 -20 751 745 ; -C -1 ; WX 400 ; N degree ; B 50 425 350 725 ; -C -1 ; WX 584 ; N divide ; B 50 -10 534 474 ; -C -1 ; WX 556 ; N eacute ; B 22 -23 525 745 ; -C -1 ; WX 556 ; N ecircumflex ; B 22 -23 525 745 ; -C -1 ; WX 556 ; N edieresis ; B 22 -23 525 731 ; -C -1 ; WX 556 ; N egrave ; B 22 -23 525 745 ; -C -1 ; WX 611 ; N eth ; B 35 -23 569 730 ; -C -1 ; WX 278 ; N iacute ; B 67 0 290 745 ; -C -1 ; WX 278 ; N icircumflex ; B -19 0 299 745 ; -C -1 ; WX 278 ; N idieresis ; B -9 0 287 731 ; -C -1 ; WX 278 ; N igrave ; B -10 0 207 745 ; -C -1 ; WX 584 ; N logicalnot ; B 40 121 544 412 ; -C -1 ; WX 584 ; N minus ; B 40 174 544 290 ; -C -1 ; WX 611 ; N mu ; B 58 -219 541 542 ; -C -1 ; WX 584 ; N multiply ; B 50 -10 534 474 ; -C -1 ; WX 611 ; N ntilde ; B 63 0 546 729 ; -C -1 ; WX 611 ; N oacute ; B 35 -23 569 745 ; -C -1 ; WX 611 ; N ocircumflex ; B 35 -23 569 745 ; -C -1 ; WX 611 ; N odieresis ; B 35 -23 569 731 ; -C -1 ; WX 611 ; N ograve ; B 35 -23 569 745 ; -C -1 ; WX 834 ; N onehalf ; B 30 -20 803 715 ; -C -1 ; WX 834 ; N onequarter ; B 30 -20 804 715 ; -C -1 ; WX 333 ; N onesuperior ; B 46 284 247 709 ; -C -1 ; WX 611 ; N otilde ; B 35 -23 569 729 ; -C -1 ; WX 584 ; N plusminus ; B 40 0 544 674 ; -C -1 ; WX 737 ; N registered ; B -14 -20 751 745 ; -C -1 ; WX 556 ; N scaron ; B 29 -23 520 745 ; -C -1 ; WX 611 ; N thorn ; B 58 -219 574 729 ; -C -1 ; WX 834 ; N threequarters ; B 30 -20 804 725 ; -C -1 ; WX 333 ; N threesuperior ; B 8 271 325 720 ; -C -1 ; WX 1000 ; N trademark ; B 71 341 929 745 ; -C -1 ; WX 333 ; N twosuperior ; B 9 284 324 719 ; -C -1 ; WX 611 ; N uacute ; B 58 -23 541 745 ; -C -1 ; WX 611 ; N ucircumflex ; B 58 -23 541 745 ; -C -1 ; WX 611 ; N udieresis ; B 58 -23 541 731 ; -C -1 ; WX 611 ; N ugrave ; B 58 -23 541 745 ; -C -1 ; WX 556 ; N yacute ; B 9 -219 538 745 ; -C -1 ; WX 556 ; N ydieresis ; B 9 -219 538 731 ; -C -1 ; WX 500 ; N zcaron ; B 21 0 468 745 ; -EndCharMetrics -StartKernData -StartKernPairs 101 - -KPX A y -37 -KPX A w -18 -KPX A v -37 -KPX A space -37 -KPX A quoteright -55 -KPX A Y -92 -KPX A W -55 -KPX A V -74 -KPX A T -74 - -KPX F period -111 -KPX F comma -111 -KPX F A -55 - -KPX L y -37 -KPX L space -18 -KPX L quoteright -55 -KPX L Y -92 -KPX L W -55 -KPX L V -74 -KPX L T -74 - -KPX P space -18 -KPX P period -129 -KPX P comma -129 -KPX P A -74 - -KPX R Y -37 -KPX R W -18 -KPX R V -18 - -KPX T y -74 -KPX T w -74 -KPX T u -74 -KPX T semicolon -111 -KPX T s -74 -KPX T r -55 -KPX T period -111 -KPX T o -74 -KPX T i -18 -KPX T hyphen -55 -KPX T e -74 -KPX T comma -111 -KPX T colon -111 -KPX T c -74 -KPX T a -74 -KPX T O -18 -KPX T A -74 - -KPX V y -37 -KPX V u -37 -KPX V semicolon -55 -KPX V r -55 -KPX V period -92 -KPX V o -74 -KPX V i -18 -KPX V hyphen -55 -KPX V e -55 -KPX V comma -92 -KPX V colon -55 -KPX V a -55 -KPX V A -74 - -KPX W y -18 -KPX W u -18 -KPX W semicolon -18 -KPX W r -18 -KPX W period -55 -KPX W o -18 -KPX W i -9 -KPX W hyphen -20 -KPX W e -18 -KPX W comma -55 -KPX W colon -18 -KPX W a -37 -KPX W A -55 - -KPX Y v -55 -KPX Y u -55 -KPX Y space -18 -KPX Y semicolon -74 -KPX Y q -74 -KPX Y period -111 -KPX Y p -55 -KPX Y o -74 -KPX Y i -37 -KPX Y hyphen -55 -KPX Y e -55 -KPX Y comma -111 -KPX Y colon -74 -KPX Y a -55 -KPX Y A -92 - -KPX f quoteright 18 - -KPX one one -55 - -KPX quoteleft quoteleft -37 - -KPX quoteright space -55 -KPX quoteright s -37 -KPX quoteright quoteright -37 - -KPX r quoteright 37 -KPX r period -55 -KPX r comma -55 - -KPX space Y -18 -KPX space A -37 - -KPX v period -74 -KPX v comma -74 - -KPX w period -37 -KPX w comma -37 - -KPX y period -74 -KPX y comma -74 -EndKernPairs -EndKernData -StartComposites 56 -CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 139 191 ; -CC zcaron 2 ; PCC z 0 0 ; PCC caron 83 0 ; -CC Scaron 2 ; PCC S 0 0 ; PCC caron 167 191 ; -CC scaron 2 ; PCC s 0 0 ; PCC caron 111 0 ; -CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 207 0 ; -CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 117 0 ; -CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 167 191 ; -CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 111 0 ; -CC Uacute 2 ; PCC U 0 0 ; PCC acute 197 191 ; -CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 197 191 ; -CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 197 191 ; -CC Ugrave 2 ; PCC U 0 0 ; PCC grave 197 191 ; -CC uacute 2 ; PCC u 0 0 ; PCC acute 139 0 ; -CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 139 0 ; -CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 139 0 ; -CC ugrave 2 ; PCC u 0 0 ; PCC grave 139 0 ; -CC Iacute 2 ; PCC I 0 0 ; PCC acute -27 191 ; -CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex -27 191 ; -CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis -27 191 ; -CC Igrave 2 ; PCC I 0 0 ; PCC grave -27 191 ; -CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -27 0 ; -CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -27 0 ; -CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -27 0 ; -CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -27 0 ; -CC Eacute 2 ; PCC E 0 0 ; PCC acute 188 191 ; -CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 188 191 ; -CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 188 191 ; -CC Egrave 2 ; PCC E 0 0 ; PCC grave 188 191 ; -CC eacute 2 ; PCC e 0 0 ; PCC acute 111 0 ; -CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 111 0 ; -CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 111 0 ; -CC egrave 2 ; PCC e 0 0 ; PCC grave 111 0 ; -CC Aacute 2 ; PCC A 0 0 ; PCC acute 197 191 ; -CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 197 191 ; -CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 197 191 ; -CC Agrave 2 ; PCC A 0 0 ; PCC grave 197 191 ; -CC aacute 2 ; PCC a 0 0 ; PCC acute 111 0 ; -CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 111 0 ; -CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 111 0 ; -CC agrave 2 ; PCC a 0 0 ; PCC grave 111 0 ; -CC Oacute 2 ; PCC O 0 0 ; PCC acute 222 191 ; -CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 222 191 ; -CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 222 191 ; -CC Ograve 2 ; PCC O 0 0 ; PCC grave 222 191 ; -CC oacute 2 ; PCC o 0 0 ; PCC acute 139 0 ; -CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 139 0 ; -CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 139 0 ; -CC ograve 2 ; PCC o 0 0 ; PCC grave 139 0 ; -CC Atilde 2 ; PCC A 0 0 ; PCC tilde 197 191 ; -CC atilde 2 ; PCC a 0 0 ; PCC tilde 111 0 ; -CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 200 191 ; -CC ntilde 2 ; PCC n 0 0 ; PCC tilde 146 0 ; -CC Otilde 2 ; PCC O 0 0 ; PCC tilde 222 191 ; -CC otilde 2 ; PCC o 0 0 ; PCC tilde 139 0 ; -CC Aring 2 ; PCC A 0 0 ; PCC ring 197 191 ; -CC aring 2 ; PCC a 0 0 ; PCC ring 111 0 ; -EndComposites -EndFontMetrics diff --git a/misc/afm/HelvBoO.afm b/misc/afm/HelvBoO.afm deleted file mode 100644 index dfe3bef5cc..0000000000 --- a/misc/afm/HelvBoO.afm +++ /dev/null @@ -1,429 +0,0 @@ -StartFontMetrics 2.0 -Comment Copyright (c) 1984 Adobe Systems Incorporated. All Rights Reserved. -Comment Creation Date:Tue Aug 5 11:51:40 PDT 1986 -FontName Helvetica-BoldOblique -EncodingScheme AdobeStandardEncoding -FullName Helvetica Bold Oblique -FamilyName Helvetica -Weight Bold -ItalicAngle -12.0 -IsFixedPitch false -UnderlinePosition -106 -UnderlineThickness 105 -Version 001.001 -Notice Helvetica is a registered trademark of Allied Corporation -FontBBox -177 -221 1107 936 -CapHeight 729 -XHeight 542 -Descender -219 -Ascender 729 -StartCharMetrics 228 -C 32 ; WX 278 ; N space ; B 0 0 0 0 ; -C 33 ; WX 333 ; N exclam ; B 112 0 417 729 ; -C 34 ; WX 474 ; N quotedbl ; B 177 470 579 729 ; -C 35 ; WX 556 ; N numbersign ; B 33 -30 660 696 ; -C 36 ; WX 556 ; N dollar ; B 59 -125 628 765 ; -C 37 ; WX 889 ; N percent ; B 129 -18 903 708 ; -C 38 ; WX 722 ; N ampersand ; B 89 -20 720 729 ; -C 39 ; WX 278 ; N quoteright ; B 166 469 356 729 ; -C 40 ; WX 333 ; N parenleft ; B 84 -202 458 729 ; -C 41 ; WX 333 ; N parenright ; B -21 -202 356 729 ; -C 42 ; WX 389 ; N asterisk ; B 145 385 478 730 ; -C 43 ; WX 584 ; N plus ; B 87 -10 596 474 ; -C 44 ; WX 278 ; N comma ; B 27 -174 245 146 ; -C 45 ; WX 333 ; N hyphen ; B 70 208 371 344 ; -C 46 ; WX 278 ; N period ; B 64 0 245 146 ; -C 47 ; WX 278 ; N slash ; B -1 -14 427 715 ; -C 48 ; WX 556 ; N zero ; B 81 -23 614 725 ; -C 49 ; WX 556 ; N one ; B 172 0 529 709 ; -C 50 ; WX 556 ; N two ; B 30 0 628 726 ; -C 51 ; WX 556 ; N three ; B 67 -23 613 726 ; -C 52 ; WX 556 ; N four ; B 57 0 599 709 ; -C 53 ; WX 556 ; N five ; B 59 -24 641 709 ; -C 54 ; WX 556 ; N six ; B 85 -23 625 727 ; -C 55 ; WX 556 ; N seven ; B 131 0 679 709 ; -C 56 ; WX 556 ; N eight ; B 60 -23 620 726 ; -C 57 ; WX 556 ; N nine ; B 68 -23 611 728 ; -C 58 ; WX 333 ; N colon ; B 113 0 374 521 ; -C 59 ; WX 333 ; N semicolon ; B 76 -174 374 521 ; -C 60 ; WX 584 ; N less ; B 77 -10 630 474 ; -C 61 ; WX 584 ; N equal ; B 61 52 622 412 ; -C 62 ; WX 584 ; N greater ; B 38 -10 591 474 ; -C 63 ; WX 611 ; N question ; B 168 0 672 744 ; -C 64 ; WX 975 ; N at ; B 73 -136 1032 746 ; -C 65 ; WX 722 ; N A ; B 26 0 703 729 ; -C 66 ; WX 722 ; N B ; B 82 0 762 729 ; -C 67 ; WX 722 ; N C ; B 107 -23 793 741 ; -C 68 ; WX 722 ; N D ; B 77 0 776 729 ; -C 69 ; WX 667 ; N E ; B 79 0 762 729 ; -C 70 ; WX 611 ; N F ; B 74 0 741 729 ; -C 71 ; WX 778 ; N G ; B 107 -24 819 741 ; -C 72 ; WX 722 ; N H ; B 68 0 812 729 ; -C 73 ; WX 278 ; N I ; B 63 0 368 729 ; -C 74 ; WX 556 ; N J ; B 59 -23 641 729 ; -C 75 ; WX 722 ; N K ; B 74 0 843 729 ; -C 76 ; WX 611 ; N L ; B 80 0 606 729 ; -C 77 ; WX 833 ; N M ; B 66 0 931 729 ; -C 78 ; WX 722 ; N N ; B 68 0 816 729 ; -C 79 ; WX 778 ; N O ; B 106 -23 828 741 ; -C 80 ; WX 667 ; N P ; B 76 0 747 729 ; -C 81 ; WX 778 ; N Q ; B 109 -54 831 741 ; -C 82 ; WX 722 ; N R ; B 80 0 785 729 ; -C 83 ; WX 667 ; N S ; B 76 -23 725 741 ; -C 84 ; WX 611 ; N T ; B 142 0 753 729 ; -C 85 ; WX 722 ; N U ; B 119 -23 809 729 ; -C 86 ; WX 667 ; N V ; B 179 0 802 729 ; -C 87 ; WX 944 ; N W ; B 168 0 1087 729 ; -C 88 ; WX 667 ; N X ; B 22 0 802 729 ; -C 89 ; WX 667 ; N Y ; B 182 0 805 729 ; -C 90 ; WX 611 ; N Z ; B 30 0 733 729 ; -C 91 ; WX 333 ; N bracketleft ; B 23 -202 463 729 ; -C 92 ; WX 278 ; N backslash ; B 138 -21 285 708 ; -C 93 ; WX 333 ; N bracketright ; B -25 -202 415 729 ; -C 94 ; WX 584 ; N asciicircum ; B 119 271 580 696 ; -C 95 ; WX 556 ; N underscore ; B -65 -200 550 -130 ; -C 96 ; WX 278 ; N quoteleft ; B 167 469 357 729 ; -C 97 ; WX 556 ; N a ; B 50 -24 578 551 ; -C 98 ; WX 611 ; N b ; B 59 -23 640 729 ; -C 99 ; WX 556 ; N c ; B 77 -23 597 551 ; -C 100 ; WX 611 ; N d ; B 79 -23 700 729 ; -C 101 ; WX 556 ; N e ; B 64 -23 591 551 ; -C 102 ; WX 333 ; N f ; B 90 0 464 729 ; L i fi ; L l fl ; -C 103 ; WX 611 ; N g ; B 26 -220 656 551 ; -C 104 ; WX 611 ; N h ; B 67 0 629 729 ; -C 105 ; WX 278 ; N i ; B 67 0 362 729 ; -C 106 ; WX 278 ; N j ; B -43 -219 365 729 ; -C 107 ; WX 556 ; N k ; B 59 0 651 729 ; -C 108 ; WX 278 ; N l ; B 67 0 362 729 ; -C 109 ; WX 889 ; N m ; B 60 0 911 553 ; -C 110 ; WX 611 ; N n ; B 63 0 629 551 ; -C 111 ; WX 611 ; N o ; B 82 -23 634 551 ; -C 112 ; WX 611 ; N p ; B 11 -219 637 551 ; -C 113 ; WX 611 ; N q ; B 72 -219 659 551 ; -C 114 ; WX 389 ; N r ; B 63 0 487 553 ; -C 115 ; WX 556 ; N s ; B 60 -23 589 551 ; -C 116 ; WX 333 ; N t ; B 101 -23 414 678 ; -C 117 ; WX 611 ; N u ; B 88 -23 656 542 ; -C 118 ; WX 556 ; N v ; B 129 0 651 542 ; -C 119 ; WX 778 ; N w ; B 120 0 881 542 ; -C 120 ; WX 556 ; N x ; B 16 0 648 542 ; -C 121 ; WX 556 ; N y ; B 37 -219 653 542 ; -C 122 ; WX 500 ; N z ; B 21 0 575 542 ; -C 123 ; WX 389 ; N braceleft ; B 84 -202 472 729 ; -C 124 ; WX 280 ; N bar ; B 57 -202 335 729 ; -C 125 ; WX 389 ; N braceright ; B 29 -202 419 729 ; -C 126 ; WX 584 ; N asciitilde ; B 97 144 581 322 ; -C 161 ; WX 333 ; N exclamdown ; B 26 -187 331 542 ; -C 162 ; WX 556 ; N cent ; B 79 -122 598 637 ; -C 163 ; WX 556 ; N sterling ; B 49 -20 629 717 ; -C 164 ; WX 167 ; N fraction ; B -177 -20 489 715 ; -C 165 ; WX 556 ; N yen ; B 107 0 702 705 ; -C 166 ; WX 556 ; N florin ; B -21 -221 690 745 ; -C 167 ; WX 556 ; N section ; B 56 -201 596 728 ; -C 168 ; WX 556 ; N currency ; B 66 105 644 604 ; -C 169 ; WX 238 ; N quotesingle ; B 177 469 343 729 ; -C 170 ; WX 500 ; N quotedblleft ; B 171 469 588 729 ; -C 171 ; WX 556 ; N guillemotleft ; B 135 71 571 484 ; -C 172 ; WX 333 ; N guilsinglleft ; B 128 73 351 476 ; -C 173 ; WX 333 ; N guilsinglright ; B 96 73 319 476 ; -C 174 ; WX 611 ; N fi ; B 85 0 703 729 ; -C 175 ; WX 611 ; N fl ; B 88 0 701 729 ; -C 177 ; WX 556 ; N endash ; B 35 208 624 313 ; -C 178 ; WX 556 ; N dagger ; B 109 -195 626 708 ; -C 179 ; WX 556 ; N daggerdbl ; B 35 -195 623 708 ; -C 180 ; WX 278 ; N periodcentered ; B 143 318 270 442 ; -C 182 ; WX 556 ; N paragraph ; B 121 -195 684 729 ; -C 183 ; WX 350 ; N bullet ; B 111 175 367 425 ; -C 184 ; WX 278 ; N quotesinglbase ; B 37 -135 228 125 ; -C 185 ; WX 500 ; N quotedblbase ; B 37 -164 462 141 ; -C 186 ; WX 500 ; N quotedblright ; B 173 469 595 729 ; -C 187 ; WX 556 ; N guillemotright ; B 103 71 533 482 ; -C 188 ; WX 1000 ; N ellipsis ; B 92 0 939 146 ; -C 189 ; WX 1000 ; N perthousand ; B 72 -20 1021 745 ; -C 191 ; WX 611 ; N questiondown ; B 52 -192 556 542 ; -C 193 ; WX 333 ; N grave ; B 175 595 339 745 ; -C 194 ; WX 333 ; N acute ; B 247 595 475 745 ; -C 195 ; WX 333 ; N circumflex ; B 135 598 453 745 ; -C 196 ; WX 333 ; N tilde ; B 117 595 500 729 ; -C 197 ; WX 333 ; N macron ; B 150 629 467 717 ; -C 198 ; WX 333 ; N breve ; B 188 593 455 736 ; -C 199 ; WX 333 ; N dotaccent ; B 241 607 377 729 ; -C 200 ; WX 333 ; N dieresis ; B 147 609 469 731 ; -C 202 ; WX 333 ; N ring ; B 214 565 398 745 ; -C 203 ; WX 333 ; N cedilla ; B -13 -220 270 -9 ; -C 205 ; WX 333 ; N hungarumlaut ; B 82 595 498 745 ; -C 206 ; WX 333 ; N ogonek ; B 23 -195 248 38 ; -C 207 ; WX 333 ; N caron ; B 167 598 485 745 ; -C 208 ; WX 1000 ; N emdash ; B 37 208 1070 313 ; -C 225 ; WX 1000 ; N AE ; B 1 0 1104 729 ; -C 227 ; WX 370 ; N ordfeminine ; B 96 277 451 746 ; -C 232 ; WX 611 ; N Lslash ; B 54 0 624 729 ; -C 233 ; WX 778 ; N Oslash ; B 34 -34 906 754 ; -C 234 ; WX 1000 ; N OE ; B 90 -20 1107 741 ; -C 235 ; WX 365 ; N ordmasculine ; B 92 276 471 745 ; -C 241 ; WX 889 ; N ae ; B 54 -20 927 555 ; -C 245 ; WX 278 ; N dotlessi ; B 67 0 322 542 ; -C 248 ; WX 278 ; N lslash ; B 50 0 372 729 ; -C 249 ; WX 611 ; N oslash ; B 12 -34 709 561 ; -C 250 ; WX 944 ; N oe ; B 71 -21 986 554 ; -C 251 ; WX 611 ; N germandbls ; B 67 -16 654 730 ; -C -1 ; WX 722 ; N Aacute ; B 26 0 714 936 ; -C -1 ; WX 722 ; N Acircumflex ; B 26 0 703 936 ; -C -1 ; WX 722 ; N Adieresis ; B 26 0 708 922 ; -C -1 ; WX 722 ; N Agrave ; B 26 0 703 936 ; -C -1 ; WX 722 ; N Aring ; B 26 0 703 936 ; -C -1 ; WX 722 ; N Atilde ; B 26 0 739 920 ; -C -1 ; WX 722 ; N Ccedilla ; B 107 -220 793 741 ; -C -1 ; WX 667 ; N Eacute ; B 79 0 762 936 ; -C -1 ; WX 667 ; N Ecircumflex ; B 79 0 762 936 ; -C -1 ; WX 667 ; N Edieresis ; B 79 0 762 922 ; -C -1 ; WX 667 ; N Egrave ; B 79 0 762 936 ; -C -1 ; WX 722 ; N Eth ; B 53 0 776 729 ; -C -1 ; WX 278 ; N Iacute ; B 63 0 489 936 ; -C -1 ; WX 278 ; N Icircumflex ; B 63 0 467 936 ; -C -1 ; WX 278 ; N Idieresis ; B 63 0 483 922 ; -C -1 ; WX 278 ; N Igrave ; B 63 0 368 936 ; -C -1 ; WX 722 ; N Ntilde ; B 68 0 816 920 ; -C -1 ; WX 778 ; N Oacute ; B 106 -23 828 936 ; -C -1 ; WX 778 ; N Ocircumflex ; B 106 -23 828 936 ; -C -1 ; WX 778 ; N Odieresis ; B 106 -23 828 922 ; -C -1 ; WX 778 ; N Ograve ; B 106 -23 828 936 ; -C -1 ; WX 778 ; N Otilde ; B 106 -23 828 920 ; -C -1 ; WX 667 ; N Scaron ; B 76 -23 725 936 ; -C -1 ; WX 667 ; N Thorn ; B 76 0 730 729 ; -C -1 ; WX 722 ; N Uacute ; B 119 -23 809 936 ; -C -1 ; WX 722 ; N Ucircumflex ; B 119 -23 809 936 ; -C -1 ; WX 722 ; N Udieresis ; B 119 -23 809 922 ; -C -1 ; WX 722 ; N Ugrave ; B 119 -23 809 936 ; -C -1 ; WX 667 ; N Yacute ; B 182 0 805 932 ; -C -1 ; WX 667 ; N Ydieresis ; B 182 0 805 922 ; -C -1 ; WX 611 ; N Zcaron ; B 30 0 733 936 ; -C -1 ; WX 556 ; N aacute ; B 50 -24 587 745 ; -C -1 ; WX 556 ; N acircumflex ; B 50 -24 578 745 ; -C -1 ; WX 556 ; N adieresis ; B 50 -24 581 731 ; -C -1 ; WX 556 ; N agrave ; B 50 -24 578 745 ; -C -1 ; WX 556 ; N aring ; B 50 -24 578 745 ; -C -1 ; WX 556 ; N atilde ; B 50 -24 612 729 ; -C -1 ; WX 280 ; N brokenbar ; B 57 -202 335 729 ; -C -1 ; WX 556 ; N ccedilla ; B 77 -220 597 551 ; -C -1 ; WX 737 ; N copyright ; B 54 -20 837 745 ; -C -1 ; WX 400 ; N degree ; B 169 425 476 725 ; -C -1 ; WX 584 ; N divide ; B 87 -10 596 474 ; -C -1 ; WX 556 ; N eacute ; B 64 -23 591 745 ; -C -1 ; WX 556 ; N ecircumflex ; B 64 -23 591 745 ; -C -1 ; WX 556 ; N edieresis ; B 64 -23 591 731 ; -C -1 ; WX 556 ; N egrave ; B 64 -23 591 745 ; -C -1 ; WX 611 ; N eth ; B 82 -23 633 730 ; -C -1 ; WX 278 ; N iacute ; B 67 0 448 745 ; -C -1 ; WX 278 ; N icircumflex ; B 67 0 426 745 ; -C -1 ; WX 278 ; N idieresis ; B 67 0 442 731 ; -C -1 ; WX 278 ; N igrave ; B 67 0 322 745 ; -C -1 ; WX 584 ; N logicalnot ; B 103 121 632 412 ; -C -1 ; WX 584 ; N minus ; B 77 174 606 290 ; -C -1 ; WX 611 ; N mu ; B 11 -219 656 542 ; -C -1 ; WX 584 ; N multiply ; B 66 -10 617 474 ; -C -1 ; WX 611 ; N ntilde ; B 63 0 646 729 ; -C -1 ; WX 611 ; N oacute ; B 82 -23 634 745 ; -C -1 ; WX 611 ; N ocircumflex ; B 82 -23 634 745 ; -C -1 ; WX 611 ; N odieresis ; B 82 -23 634 731 ; -C -1 ; WX 611 ; N ograve ; B 82 -23 634 745 ; -C -1 ; WX 834 ; N onehalf ; B 120 -20 871 715 ; -C -1 ; WX 834 ; N onequarter ; B 151 -20 846 715 ; -C -1 ; WX 333 ; N onesuperior ; B 169 284 398 709 ; -C -1 ; WX 611 ; N otilde ; B 82 -23 639 729 ; -C -1 ; WX 584 ; N plusminus ; B 40 0 639 674 ; -C -1 ; WX 737 ; N registered ; B 55 -20 837 745 ; -C -1 ; WX 556 ; N scaron ; B 60 -23 597 745 ; -C -1 ; WX 611 ; N thorn ; B 11 -219 641 729 ; -C -1 ; WX 834 ; N threequarters ; B 116 -20 863 725 ; -C -1 ; WX 333 ; N threesuperior ; B 92 271 442 720 ; -C -1 ; WX 1000 ; N trademark ; B 213 341 1087 745 ; -C -1 ; WX 333 ; N twosuperior ; B 69 284 452 719 ; -C -1 ; WX 611 ; N uacute ; B 88 -23 656 745 ; -C -1 ; WX 611 ; N ucircumflex ; B 88 -23 656 745 ; -C -1 ; WX 611 ; N udieresis ; B 88 -23 656 731 ; -C -1 ; WX 611 ; N ugrave ; B 88 -23 656 745 ; -C -1 ; WX 556 ; N yacute ; B 37 -219 653 745 ; -C -1 ; WX 556 ; N ydieresis ; B 37 -219 653 731 ; -C -1 ; WX 500 ; N zcaron ; B 21 0 575 745 ; -EndCharMetrics -StartKernData -StartKernPairs 99 - -KPX A space -37 -KPX A quoteright -55 -KPX A Y -74 -KPX A W -55 -KPX A V -74 -KPX A T -74 - -KPX F period -111 -KPX F comma -111 -KPX F A -55 - -KPX L space -18 -KPX L quoteright -74 -KPX L Y -74 -KPX L W -55 -KPX L V -55 -KPX L T -74 - -KPX P space -37 -KPX P period -129 -KPX P comma -129 -KPX P A -74 - -KPX R Y -18 -KPX R W -18 -KPX R T -18 - -KPX T y -37 -KPX T w -37 -KPX T u -18 -KPX T semicolon -74 -KPX T s -37 -KPX T r -18 -KPX T period -74 -KPX T o -37 -KPX T i -18 -KPX T hyphen -55 -KPX T e -37 -KPX T comma -74 -KPX T colon -74 -KPX T c -37 -KPX T a -37 -KPX T O -18 -KPX T A -74 - -KPX V y -18 -KPX V u -18 -KPX V semicolon -37 -KPX V r -18 -KPX V period -92 -KPX V o -37 -KPX V i -37 -KPX V hyphen -37 -KPX V e -37 -KPX V comma -92 -KPX V colon -37 -KPX V a -37 -KPX V A -74 - -KPX W y -18 -KPX W u -18 -KPX W semicolon -37 -KPX W r -18 -KPX W period -74 -KPX W o -18 -KPX W i -9 -KPX W hyphen -37 -KPX W e -18 -KPX W comma -74 -KPX W colon -37 -KPX W a -18 -KPX W A -55 - -KPX Y v -37 -KPX Y u -37 -KPX Y space -18 -KPX Y semicolon -55 -KPX Y q -37 -KPX Y period -92 -KPX Y p -37 -KPX Y i -37 -KPX Y o -37 -KPX Y hyphen -74 -KPX Y e -37 -KPX Y comma -92 -KPX Y colon -55 -KPX Y a -37 -KPX Y A -74 - -KPX f quoteright 18 -KPX f f -18 - -KPX one one -74 - -KPX quoteleft quoteleft -37 - -KPX quoteright t 18 -KPX quoteright space -37 -KPX quoteright s -18 -KPX quoteright quoteright -37 - -KPX r quoteright 37 -KPX r period -55 -KPX r comma -55 - -KPX space Y -18 -KPX space A -37 - -KPX v period -55 -KPX v comma -55 - -KPX w period -37 -KPX w comma -37 - -KPX y period -37 -KPX y comma -37 -EndKernPairs -EndKernData -StartComposites 56 -CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 139 187 ; -CC zcaron 2 ; PCC z 0 0 ; PCC caron 83 0 ; -CC Scaron 2 ; PCC S 0 0 ; PCC caron 167 187 ; -CC scaron 2 ; PCC s 0 0 ; PCC caron 111 0 ; -CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 194 0 ; -CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 111 0 ; -CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 167 187 ; -CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 111 0 ; -CC Uacute 2 ; PCC U 0 0 ; PCC acute 194 187 ; -CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 194 187 ; -CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 194 187 ; -CC Ugrave 2 ; PCC U 0 0 ; PCC grave 194 187 ; -CC uacute 2 ; PCC u 0 0 ; PCC acute 139 0 ; -CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 139 0 ; -CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 139 0 ; -CC ugrave 2 ; PCC u 0 0 ; PCC grave 139 0 ; -CC Iacute 2 ; PCC I 0 0 ; PCC acute -27 187 ; -CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex -27 187 ; -CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis -27 187 ; -CC Igrave 2 ; PCC I 0 0 ; PCC grave -27 187 ; -CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -27 0 ; -CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -27 0 ; -CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -27 0 ; -CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -27 0 ; -CC Eacute 2 ; PCC E 0 0 ; PCC acute 167 187 ; -CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 167 187 ; -CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 167 187 ; -CC Egrave 2 ; PCC E 0 0 ; PCC grave 167 187 ; -CC eacute 2 ; PCC e 0 0 ; PCC acute 111 0 ; -CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 111 0 ; -CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 111 0 ; -CC egrave 2 ; PCC e 0 0 ; PCC grave 111 0 ; -CC Aacute 2 ; PCC A 0 0 ; PCC acute 194 187 ; -CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 194 187 ; -CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 194 187 ; -CC Agrave 2 ; PCC A 0 0 ; PCC grave 194 187 ; -CC aacute 2 ; PCC a 0 0 ; PCC acute 111 0 ; -CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 111 0 ; -CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 111 0 ; -CC agrave 2 ; PCC a 0 0 ; PCC grave 111 0 ; -CC Oacute 2 ; PCC O 0 0 ; PCC acute 222 187 ; -CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 222 187 ; -CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 222 187 ; -CC Ograve 2 ; PCC O 0 0 ; PCC grave 222 187 ; -CC oacute 2 ; PCC o 0 0 ; PCC acute 139 0 ; -CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 139 0 ; -CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 139 0 ; -CC ograve 2 ; PCC o 0 0 ; PCC grave 139 0 ; -CC Atilde 2 ; PCC A 0 0 ; PCC tilde 194 187 ; -CC atilde 2 ; PCC a 0 0 ; PCC tilde 111 0 ; -CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 194 187 ; -CC ntilde 2 ; PCC n 0 0 ; PCC tilde 139 0 ; -CC Otilde 2 ; PCC O 0 0 ; PCC tilde 222 187 ; -CC otilde 2 ; PCC o 0 0 ; PCC tilde 139 0 ; -CC Aring 2 ; PCC A 0 0 ; PCC ring 194 187 ; -CC aring 2 ; PCC a 0 0 ; PCC ring 111 0 ; -EndComposites -EndFontMetrics diff --git a/misc/afm/HelvO.afm b/misc/afm/HelvO.afm deleted file mode 100644 index c24bdc1c20..0000000000 --- a/misc/afm/HelvO.afm +++ /dev/null @@ -1,428 +0,0 @@ -StartFontMetrics 2.0 -Comment Copyright (c) 1984 Adobe Systems Incorporated. All Rights Reserved. -Comment Creation Date:Tue Aug 5 11:45:36 PDT 1986 -FontName Helvetica-Oblique -EncodingScheme AdobeStandardEncoding -FullName Helvetica Oblique -FamilyName Helvetica -Weight Medium -ItalicAngle -12.0 -IsFixedPitch false -UnderlinePosition -106 -UnderlineThickness 73 -Version 001.001 -Notice Helvetica is a registered trademark of Allied Corporation. -FontBBox -178 -220 1108 944 -CapHeight 729 -XHeight 525 -Descender -219 -Ascender 729 -StartCharMetrics 228 -C 32 ; WX 278 ; N space ; B 0 0 0 0 ; -C 33 ; WX 278 ; N exclam ; B 124 0 363 729 ; -C 34 ; WX 355 ; N quotedbl ; B 177 462 455 708 ; -C 35 ; WX 556 ; N numbersign ; B 54 -20 649 698 ; -C 36 ; WX 556 ; N dollar ; B 69 -125 613 770 ; -C 37 ; WX 889 ; N percent ; B 134 -20 895 708 ; -C 38 ; WX 667 ; N ampersand ; B 83 -23 644 710 ; -C 39 ; WX 222 ; N quoteright ; B 165 476 308 708 ; -C 40 ; WX 333 ; N parenleft ; B 113 -213 446 729 ; -C 41 ; WX 333 ; N parenright ; B -7 -213 325 729 ; -C 42 ; WX 389 ; N asterisk ; B 169 452 471 740 ; -C 43 ; WX 584 ; N plus ; B 92 -10 591 474 ; -C 44 ; WX 278 ; N comma ; B 55 -150 214 104 ; -C 45 ; WX 333 ; N hyphen ; B 97 240 351 313 ; -C 46 ; WX 278 ; N period ; B 87 0 213 104 ; -C 47 ; WX 278 ; N slash ; B -12 -21 434 708 ; -C 48 ; WX 556 ; N zero ; B 98 -23 598 709 ; -C 49 ; WX 556 ; N one ; B 208 0 498 709 ; -C 50 ; WX 556 ; N two ; B 34 0 620 710 ; -C 51 ; WX 556 ; N three ; B 71 -23 599 709 ; -C 52 ; WX 556 ; N four ; B 63 0 573 709 ; -C 53 ; WX 556 ; N five ; B 70 -23 629 709 ; -C 54 ; WX 556 ; N six ; B 93 -23 611 709 ; -C 55 ; WX 556 ; N seven ; B 137 0 671 709 ; -C 56 ; WX 556 ; N eight ; B 74 -23 604 709 ; -C 57 ; WX 556 ; N nine ; B 83 -23 599 709 ; -C 58 ; WX 278 ; N colon ; B 110 0 326 525 ; -C 59 ; WX 278 ; N semicolon ; B 78 -150 325 516 ; -C 60 ; WX 584 ; N less ; B 87 -10 635 474 ; -C 61 ; WX 584 ; N equal ; B 74 112 609 352 ; -C 62 ; WX 584 ; N greater ; B 48 -10 596 474 ; -C 63 ; WX 556 ; N question ; B 184 0 630 738 ; -C 64 ; WX 1015 ; N at ; B 80 -146 1036 737 ; -C 65 ; WX 667 ; N A ; B 17 0 653 729 ; -C 66 ; WX 667 ; N B ; B 79 0 711 729 ; -C 67 ; WX 722 ; N C ; B 112 -23 770 741 ; -C 68 ; WX 722 ; N D ; B 89 0 759 729 ; -C 69 ; WX 667 ; N E ; B 90 0 751 729 ; -C 70 ; WX 611 ; N F ; B 90 0 734 729 ; -C 71 ; WX 778 ; N G ; B 109 -23 809 741 ; -C 72 ; WX 722 ; N H ; B 83 0 799 729 ; -C 73 ; WX 278 ; N I ; B 100 0 349 729 ; -C 74 ; WX 500 ; N J ; B 47 -26 581 729 ; -C 75 ; WX 667 ; N K ; B 79 0 813 729 ; -C 76 ; WX 556 ; N L ; B 80 0 551 729 ; -C 77 ; WX 833 ; N M ; B 75 0 916 729 ; -C 78 ; WX 722 ; N N ; B 76 0 801 729 ; -C 79 ; WX 778 ; N O ; B 104 -23 828 741 ; -C 80 ; WX 667 ; N P ; B 91 0 733 730 ; -C 81 ; WX 778 ; N Q ; B 104 -59 828 741 ; -C 82 ; WX 722 ; N R ; B 93 0 770 729 ; -C 83 ; WX 667 ; N S ; B 89 -23 714 741 ; -C 84 ; WX 611 ; N T ; B 158 0 748 729 ; -C 85 ; WX 722 ; N U ; B 124 -23 800 729 ; -C 86 ; WX 667 ; N V ; B 185 0 800 729 ; -C 87 ; WX 944 ; N W ; B 177 0 1084 729 ; -C 88 ; WX 667 ; N X ; B 22 0 794 729 ; -C 89 ; WX 667 ; N Y ; B 168 0 816 729 ; -C 90 ; WX 611 ; N Z ; B 28 0 737 729 ; -C 91 ; WX 278 ; N bracketleft ; B 19 -214 405 729 ; -C 92 ; WX 278 ; N backslash ; B 147 -20 280 729 ; -C 93 ; WX 278 ; N bracketright ; B -23 -215 364 729 ; -C 94 ; WX 469 ; N asciicircum ; B 115 333 496 713 ; -C 95 ; WX 556 ; N underscore ; B -59 -175 551 -125 ; -C 96 ; WX 222 ; N quoteleft ; B 163 459 308 708 ; -C 97 ; WX 556 ; N a ; B 65 -23 568 540 ; -C 98 ; WX 556 ; N b ; B 54 -23 588 729 ; -C 99 ; WX 500 ; N c ; B 76 -23 554 540 ; -C 100 ; WX 556 ; N d ; B 73 -23 650 729 ; -C 101 ; WX 556 ; N e ; B 84 -23 580 541 ; -C 102 ; WX 278 ; N f ; B 89 0 413 733 ; L i fi ; L l fl ; -C 103 ; WX 556 ; N g ; B 32 -220 601 540 ; -C 104 ; WX 556 ; N h ; B 70 0 574 729 ; -C 105 ; WX 222 ; N i ; B 66 0 305 729 ; -C 106 ; WX 222 ; N j ; B -65 -220 308 729 ; -C 107 ; WX 500 ; N k ; B 58 0 584 729 ; -C 108 ; WX 222 ; N l ; B 68 0 307 729 ; -C 109 ; WX 833 ; N m ; B 71 0 852 540 ; -C 110 ; WX 556 ; N n ; B 70 0 574 540 ; -C 111 ; WX 556 ; N o ; B 80 -23 576 540 ; -C 112 ; WX 556 ; N p ; B 7 -219 586 540 ; -C 113 ; WX 556 ; N q ; B 71 -219 607 540 ; -C 114 ; WX 333 ; N r ; B 69 0 436 540 ; -C 115 ; WX 500 ; N s ; B 61 -24 520 540 ; -C 116 ; WX 278 ; N t ; B 97 -24 366 667 ; -C 117 ; WX 556 ; N u ; B 88 -23 594 525 ; -C 118 ; WX 500 ; N v ; B 122 0 598 525 ; -C 119 ; WX 722 ; N w ; B 118 0 820 525 ; -C 120 ; WX 500 ; N x ; B 17 0 583 525 ; -C 121 ; WX 500 ; N y ; B 8 -219 590 525 ; -C 122 ; WX 500 ; N z ; B 31 0 557 525 ; -C 123 ; WX 334 ; N braceleft ; B 91 -214 431 731 ; -C 124 ; WX 260 ; N bar ; B 54 -215 315 729 ; -C 125 ; WX 334 ; N braceright ; B -16 -214 324 731 ; -C 126 ; WX 584 ; N asciitilde ; B 137 267 594 438 ; -C 161 ; WX 333 ; N exclamdown ; B 76 -214 317 525 ; -C 162 ; WX 556 ; N cent ; B 96 -120 585 628 ; -C 163 ; WX 556 ; N sterling ; B 44 -21 628 726 ; -C 164 ; WX 167 ; N fraction ; B -178 -21 486 708 ; -C 165 ; WX 556 ; N yen ; B 100 0 696 710 ; -C 166 ; WX 556 ; N florin ; B -32 -214 696 742 ; -C 167 ; WX 556 ; N section ; B 63 -215 589 729 ; -C 168 ; WX 556 ; N currency ; B 110 126 593 554 ; -C 169 ; WX 191 ; N quotesingle ; B 173 462 292 708 ; -C 170 ; WX 333 ; N quotedblleft ; B 146 459 449 708 ; -C 171 ; WX 556 ; N guillemotleft ; B 147 106 548 438 ; -C 172 ; WX 333 ; N guilsinglleft ; B 140 112 336 436 ; -C 173 ; WX 333 ; N guilsinglright ; B 109 112 307 436 ; -C 174 ; WX 500 ; N fi ; B 83 0 591 733 ; -C 175 ; WX 500 ; N fl ; B 88 0 585 733 ; -C 177 ; WX 556 ; N endash ; B 46 240 628 313 ; -C 178 ; WX 556 ; N dagger ; B 127 -178 620 710 ; -C 179 ; WX 556 ; N daggerdbl ; B 51 -178 620 710 ; -C 180 ; WX 278 ; N periodcentered ; B 166 318 293 442 ; -C 182 ; WX 537 ; N paragraph ; B 145 -178 677 729 ; -C 183 ; WX 350 ; N bullet ; B 120 220 376 470 ; -C 184 ; WX 222 ; N quotesinglbase ; B 37 -129 180 103 ; -C 185 ; WX 333 ; N quotedblbase ; B 20 -129 322 103 ; -C 186 ; WX 333 ; N quotedblright ; B 150 476 452 708 ; -C 187 ; WX 556 ; N guillemotright ; B 121 106 518 438 ; -C 188 ; WX 1000 ; N ellipsis ; B 115 0 907 104 ; -C 189 ; WX 1000 ; N perthousand ; B 93 -20 1024 740 ; -C 191 ; WX 611 ; N questiondown ; B 86 -213 531 525 ; -C 193 ; WX 333 ; N grave ; B 179 592 357 740 ; -C 194 ; WX 333 ; N acute ; B 218 592 458 740 ; -C 195 ; WX 333 ; N circumflex ; B 146 591 433 741 ; -C 196 ; WX 333 ; N tilde ; B 130 589 471 716 ; -C 197 ; WX 333 ; N macron ; B 160 621 450 694 ; -C 198 ; WX 333 ; N breve ; B 165 594 471 729 ; -C 199 ; WX 333 ; N dotaccent ; B 244 605 370 709 ; -C 200 ; WX 333 ; N dieresis ; B 159 605 446 708 ; -C 202 ; WX 333 ; N ring ; B 216 566 396 741 ; -C 203 ; WX 333 ; N cedilla ; B 1 -214 264 0 ; -C 205 ; WX 333 ; N hungarumlaut ; B 91 592 505 740 ; -C 206 ; WX 333 ; N ogonek ; B 35 -189 246 15 ; -C 207 ; WX 333 ; N caron ; B 176 590 463 740 ; -C 208 ; WX 1000 ; N emdash ; B 42 240 1068 313 ; -C 225 ; WX 1000 ; N AE ; B 11 0 1087 729 ; -C 227 ; WX 370 ; N ordfeminine ; B 107 301 441 740 ; -C 232 ; WX 556 ; N Lslash ; B 61 0 570 729 ; -C 233 ; WX 778 ; N Oslash ; B 32 -23 867 742 ; -C 234 ; WX 1000 ; N OE ; B 101 -20 1108 739 ; -C 235 ; WX 365 ; N ordmasculine ; B 114 301 452 741 ; -C 241 ; WX 889 ; N ae ; B 59 -20 915 546 ; -C 245 ; WX 278 ; N dotlessi ; B 94 0 290 525 ; -C 248 ; WX 222 ; N lslash ; B 62 0 312 729 ; -C 249 ; WX 611 ; N oslash ; B 19 -27 639 548 ; -C 250 ; WX 944 ; N oe ; B 85 -22 966 540 ; -C 251 ; WX 611 ; N germandbls ; B 126 -20 655 729 ; -C -1 ; WX 667 ; N Aacute ; B 17 0 667 939 ; -C -1 ; WX 667 ; N Acircumflex ; B 17 0 653 940 ; -C -1 ; WX 667 ; N Adieresis ; B 17 0 655 907 ; -C -1 ; WX 667 ; N Agrave ; B 17 0 653 939 ; -C -1 ; WX 667 ; N Aring ; B 17 0 653 940 ; -C -1 ; WX 667 ; N Atilde ; B 17 0 680 915 ; -C -1 ; WX 722 ; N Ccedilla ; B 112 -214 770 741 ; -C -1 ; WX 667 ; N Eacute ; B 90 0 751 939 ; -C -1 ; WX 667 ; N Ecircumflex ; B 90 0 751 940 ; -C -1 ; WX 667 ; N Edieresis ; B 90 0 751 907 ; -C -1 ; WX 667 ; N Egrave ; B 90 0 751 939 ; -C -1 ; WX 722 ; N Eth ; B 73 0 759 729 ; -C -1 ; WX 278 ; N Iacute ; B 100 0 479 939 ; -C -1 ; WX 278 ; N Icircumflex ; B 100 0 454 940 ; -C -1 ; WX 278 ; N Idieresis ; B 100 0 467 907 ; -C -1 ; WX 278 ; N Igrave ; B 100 0 378 939 ; -C -1 ; WX 722 ; N Ntilde ; B 76 0 801 915 ; -C -1 ; WX 778 ; N Oacute ; B 104 -23 828 939 ; -C -1 ; WX 778 ; N Ocircumflex ; B 104 -23 828 940 ; -C -1 ; WX 778 ; N Odieresis ; B 104 -23 828 907 ; -C -1 ; WX 778 ; N Ograve ; B 104 -23 828 939 ; -C -1 ; WX 778 ; N Otilde ; B 104 -23 828 915 ; -C -1 ; WX 667 ; N Scaron ; B 89 -23 714 939 ; -C -1 ; WX 667 ; N Thorn ; B 91 0 707 729 ; -C -1 ; WX 722 ; N Uacute ; B 124 -23 800 939 ; -C -1 ; WX 722 ; N Ucircumflex ; B 124 -23 800 940 ; -C -1 ; WX 722 ; N Udieresis ; B 124 -23 800 907 ; -C -1 ; WX 722 ; N Ugrave ; B 124 -23 800 939 ; -C -1 ; WX 667 ; N Yacute ; B 168 0 816 944 ; -C -1 ; WX 667 ; N Ydieresis ; B 168 0 816 907 ; -C -1 ; WX 611 ; N Zcaron ; B 28 0 737 939 ; -C -1 ; WX 556 ; N aacute ; B 65 -23 570 740 ; -C -1 ; WX 556 ; N acircumflex ; B 65 -23 568 741 ; -C -1 ; WX 556 ; N adieresis ; B 65 -23 568 708 ; -C -1 ; WX 556 ; N agrave ; B 65 -23 568 740 ; -C -1 ; WX 556 ; N aring ; B 65 -23 568 741 ; -C -1 ; WX 556 ; N atilde ; B 65 -23 583 716 ; -C -1 ; WX 260 ; N brokenbar ; B 54 -215 315 729 ; -C -1 ; WX 500 ; N ccedilla ; B 76 -214 554 540 ; -C -1 ; WX 737 ; N copyright ; B 55 -23 836 741 ; -C -1 ; WX 400 ; N degree ; B 165 409 472 709 ; -C -1 ; WX 584 ; N divide ; B 92 -10 591 474 ; -C -1 ; WX 556 ; N eacute ; B 84 -23 580 740 ; -C -1 ; WX 556 ; N ecircumflex ; B 84 -23 580 741 ; -C -1 ; WX 556 ; N edieresis ; B 84 -23 580 708 ; -C -1 ; WX 556 ; N egrave ; B 84 -23 580 740 ; -C -1 ; WX 556 ; N eth ; B 80 -23 572 729 ; -C -1 ; WX 278 ; N iacute ; B 94 0 431 740 ; -C -1 ; WX 278 ; N icircumflex ; B 94 0 406 741 ; -C -1 ; WX 278 ; N idieresis ; B 94 0 419 708 ; -C -1 ; WX 278 ; N igrave ; B 94 0 330 740 ; -C -1 ; WX 584 ; N logicalnot ; B 99 82 619 352 ; -C -1 ; WX 584 ; N minus ; B 81 194 601 270 ; -C -1 ; WX 556 ; N mu ; B 18 -219 594 525 ; -C -1 ; WX 584 ; N multiply ; B 59 -10 625 476 ; -C -1 ; WX 556 ; N ntilde ; B 70 0 589 716 ; -C -1 ; WX 556 ; N oacute ; B 80 -23 576 740 ; -C -1 ; WX 556 ; N ocircumflex ; B 80 -23 576 741 ; -C -1 ; WX 556 ; N odieresis ; B 80 -23 576 708 ; -C -1 ; WX 556 ; N ograve ; B 80 -23 576 740 ; -C -1 ; WX 834 ; N onehalf ; B 116 -21 869 709 ; -C -1 ; WX 834 ; N onequarter ; B 147 -21 836 709 ; -C -1 ; WX 333 ; N onesuperior ; B 184 284 370 709 ; -C -1 ; WX 556 ; N otilde ; B 80 -23 583 716 ; -C -1 ; WX 584 ; N plusminus ; B 40 0 621 618 ; -C -1 ; WX 737 ; N registered ; B 55 -23 836 741 ; -C -1 ; WX 500 ; N scaron ; B 61 -24 547 740 ; -C -1 ; WX 556 ; N thorn ; B 7 -219 588 729 ; -C -1 ; WX 834 ; N threequarters ; B 114 -21 868 709 ; -C -1 ; WX 333 ; N threesuperior ; B 96 270 435 709 ; -C -1 ; WX 1000 ; N trademark ; B 208 320 1096 741 ; -C -1 ; WX 333 ; N twosuperior ; B 71 284 447 710 ; -C -1 ; WX 556 ; N uacute ; B 88 -23 594 740 ; -C -1 ; WX 556 ; N ucircumflex ; B 88 -23 594 741 ; -C -1 ; WX 556 ; N udieresis ; B 88 -23 594 708 ; -C -1 ; WX 556 ; N ugrave ; B 88 -23 594 740 ; -C -1 ; WX 500 ; N yacute ; B 8 -219 590 740 ; -C -1 ; WX 500 ; N ydieresis ; B 8 -219 590 708 ; -C -1 ; WX 500 ; N zcaron ; B 31 0 557 740 ; -EndCharMetrics -StartKernData -StartKernPairs 98 - -KPX A y -9 -KPX A w -18 -KPX A v -18 -KPX A space -37 -KPX A quoteright -37 -KPX A Y -74 -KPX A W -18 -KPX A V -55 -KPX A T -74 - -KPX F space -18 -KPX F period -129 -KPX F comma -129 -KPX F A -74 - -KPX L y -18 -KPX L space -18 -KPX L quoteright -55 -KPX L Y -92 -KPX L W -37 -KPX L V -55 -KPX L T -74 - -KPX P space -37 -KPX P period -129 -KPX P comma -129 -KPX P A -74 - -KPX R Y -37 -KPX R W -18 -KPX R V -18 -KPX R T -18 - -KPX T y -74 -KPX T w -74 -KPX T u -74 -KPX T semicolon -74 -KPX T s -92 -KPX T r -74 -KPX T period -92 -KPX T o -92 -KPX T i -9 -KPX T hyphen -92 -KPX T e -92 -KPX T comma -92 -KPX T colon -74 -KPX T c -92 -KPX T a -92 -KPX T O -18 -KPX T A -74 - -KPX V y -18 -KPX V u -18 -KPX V semicolon -18 -KPX V r -18 -KPX V period -74 -KPX V o -37 -KPX V i -18 -KPX V hyphen -37 -KPX V e -37 -KPX V comma -74 -KPX V colon -18 -KPX V a -37 -KPX V A -55 - -KPX W period -37 -KPX W i -9 -KPX W hyphen -18 -KPX W e -18 -KPX W comma -37 -KPX W a -18 -KPX W A -18 - -KPX Y v -37 -KPX Y u -37 -KPX Y space -18 -KPX Y semicolon -37 -KPX Y q -55 -KPX Y period -92 -KPX Y p -55 -KPX Y o -55 -KPX Y i -18 -KPX Y hyphen -74 -KPX Y e -55 -KPX Y comma -92 -KPX Y colon -37 -KPX Y a -74 -KPX Y A -55 - -KPX f quoteright 37 - -KPX one one -74 - -KPX quoteleft quoteleft -37 - -KPX quoteright space -55 -KPX quoteright s -18 -KPX quoteright quoteright -37 - -KPX r quoteright 37 -KPX r period -37 -KPX r hyphen -18 -KPX r comma -55 - -KPX space Y -18 -KPX space A -37 - -KPX v period -74 -KPX v comma -74 - -KPX w period -55 -KPX w comma -55 - -KPX y period -74 -KPX y comma -74 -EndKernPairs -EndKernData -StartComposites 56 -CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 139 204 ; -CC zcaron 2 ; PCC z 0 0 ; PCC caron 83 0 ; -CC Scaron 2 ; PCC S 0 0 ; PCC caron 167 204 ; -CC scaron 2 ; PCC s 0 0 ; PCC caron 83 0 ; -CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 194 0 ; -CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 83 0 ; -CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 167 204 ; -CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 83 0 ; -CC Uacute 2 ; PCC U 0 0 ; PCC acute 194 204 ; -CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 194 204 ; -CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 194 204 ; -CC Ugrave 2 ; PCC U 0 0 ; PCC grave 194 204 ; -CC uacute 2 ; PCC u 0 0 ; PCC acute 111 0 ; -CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 111 0 ; -CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 111 0 ; -CC ugrave 2 ; PCC u 0 0 ; PCC grave 111 0 ; -CC Iacute 2 ; PCC I 0 0 ; PCC acute -27 204 ; -CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex -27 204 ; -CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis -27 204 ; -CC Igrave 2 ; PCC I 0 0 ; PCC grave -27 204 ; -CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -27 0 ; -CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -27 0 ; -CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -27 0 ; -CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -27 0 ; -CC Eacute 2 ; PCC E 0 0 ; PCC acute 167 204 ; -CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 167 204 ; -CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 167 204 ; -CC Egrave 2 ; PCC E 0 0 ; PCC grave 167 204 ; -CC eacute 2 ; PCC e 0 0 ; PCC acute 111 0 ; -CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 111 0 ; -CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 111 0 ; -CC egrave 2 ; PCC e 0 0 ; PCC grave 111 0 ; -CC Aacute 2 ; PCC A 0 0 ; PCC acute 167 204 ; -CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 167 204 ; -CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 167 204 ; -CC Agrave 2 ; PCC A 0 0 ; PCC grave 167 204 ; -CC aacute 2 ; PCC a 0 0 ; PCC acute 111 0 ; -CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 111 0 ; -CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 111 0 ; -CC agrave 2 ; PCC a 0 0 ; PCC grave 111 0 ; -CC Oacute 2 ; PCC O 0 0 ; PCC acute 222 204 ; -CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 222 204 ; -CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 222 204 ; -CC Ograve 2 ; PCC O 0 0 ; PCC grave 222 204 ; -CC oacute 2 ; PCC o 0 0 ; PCC acute 111 0 ; -CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 111 0 ; -CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 111 0 ; -CC ograve 2 ; PCC o 0 0 ; PCC grave 111 0 ; -CC Atilde 2 ; PCC A 0 0 ; PCC tilde 167 204 ; -CC atilde 2 ; PCC a 0 0 ; PCC tilde 111 0 ; -CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 194 204 ; -CC ntilde 2 ; PCC n 0 0 ; PCC tilde 111 0 ; -CC Otilde 2 ; PCC O 0 0 ; PCC tilde 222 204 ; -CC otilde 2 ; PCC o 0 0 ; PCC tilde 111 0 ; -CC Aring 2 ; PCC A 0 0 ; PCC ring 167 204 ; -CC aring 2 ; PCC a 0 0 ; PCC ring 111 0 ; -EndComposites -EndFontMetrics diff --git a/misc/afm/TimesBo.afm b/misc/afm/TimesBo.afm deleted file mode 100644 index a821d74c50..0000000000 --- a/misc/afm/TimesBo.afm +++ /dev/null @@ -1,454 +0,0 @@ -StartFontMetrics 2.0 -Comment Copyright (c) 1984 Adobe Systems Incorporated. All Rights Reserved. -Comment Creation Date:Tue Aug 5 11:02:18 PDT 1986 -FontName Times-Bold -EncodingScheme AdobeStandardEncoding -FullName Times Bold -FamilyName Times -Weight Bold -ItalicAngle 0.0 -IsFixedPitch false -UnderlinePosition -99 -UnderlineThickness 95 -Version 001.001 -Notice Times is a trademark of Allied Corporation. -FontBBox -172 -256 1008 965 -CapHeight 681 -XHeight 460 -Descender -210 -Ascender 670 -StartCharMetrics 228 -C 32 ; WX 250 ; N space ; B 0 0 0 0 ; -C 33 ; WX 333 ; N exclam ; B 84 -18 248 690 ; -C 34 ; WX 555 ; N quotedbl ; B 67 371 425 690 ; -C 35 ; WX 500 ; N numbersign ; B -13 -17 514 684 ; -C 36 ; WX 500 ; N dollar ; B 28 -116 474 732 ; -C 37 ; WX 1000 ; N percent ; B 122 -11 881 692 ; -C 38 ; WX 833 ; N ampersand ; B 54 -17 773 690 ; -C 39 ; WX 333 ; N quoteright ; B 77 347 257 680 ; -C 40 ; WX 333 ; N parenleft ; B 49 -169 301 699 ; -C 41 ; WX 333 ; N parenright ; B 26 -169 278 699 ; -C 42 ; WX 500 ; N asterisk ; B 57 262 445 690 ; -C 43 ; WX 570 ; N plus ; B 50 -10 520 460 ; -C 44 ; WX 250 ; N comma ; B 37 -181 214 157 ; -C 45 ; WX 333 ; N hyphen ; B 48 170 283 285 ; -C 46 ; WX 250 ; N period ; B 43 -19 207 145 ; -C 47 ; WX 278 ; N slash ; B 1 -17 279 750 ; -C 48 ; WX 500 ; N zero ; B 26 -18 472 690 ; -C 49 ; WX 500 ; N one ; B 61 0 448 690 ; -C 50 ; WX 500 ; N two ; B 18 0 473 683 ; -C 51 ; WX 500 ; N three ; B 17 -19 463 683 ; -C 52 ; WX 500 ; N four ; B 23 0 472 681 ; -C 53 ; WX 500 ; N five ; B 23 -17 465 681 ; -C 54 ; WX 500 ; N six ; B 30 -18 470 684 ; -C 55 ; WX 500 ; N seven ; B 23 0 468 679 ; -C 56 ; WX 500 ; N eight ; B 22 -17 470 685 ; -C 57 ; WX 500 ; N nine ; B 26 -18 468 684 ; -C 58 ; WX 333 ; N colon ; B 83 -18 247 473 ; -C 59 ; WX 333 ; N semicolon ; B 85 -181 262 472 ; -C 60 ; WX 570 ; N less ; B 45 -10 520 460 ; -C 61 ; WX 570 ; N equal ; B 50 91 520 375 ; -C 62 ; WX 570 ; N greater ; B 50 -10 525 460 ; -C 63 ; WX 500 ; N question ; B 57 -17 438 681 ; -C 64 ; WX 930 ; N at ; B 50 -147 889 677 ; -C 65 ; WX 722 ; N A ; B 22 0 696 681 ; -C 66 ; WX 667 ; N B ; B 24 0 609 681 ; -C 67 ; WX 722 ; N C ; B 42 -17 669 690 ; -C 68 ; WX 722 ; N D ; B 22 0 684 681 ; -C 69 ; WX 667 ; N E ; B 21 0 637 681 ; -C 70 ; WX 611 ; N F ; B 17 0 582 681 ; -C 71 ; WX 778 ; N G ; B 41 -17 748 690 ; -C 72 ; WX 778 ; N H ; B 26 0 748 681 ; -C 73 ; WX 389 ; N I ; B 17 0 366 680 ; -C 74 ; WX 500 ; N J ; B 9 -89 475 681 ; -C 75 ; WX 778 ; N K ; B 29 0 761 681 ; -C 76 ; WX 667 ; N L ; B 21 0 633 681 ; -C 77 ; WX 944 ; N M ; B 21 0 914 681 ; -C 78 ; WX 722 ; N N ; B 20 -10 697 681 ; -C 79 ; WX 778 ; N O ; B 43 -18 733 690 ; -C 80 ; WX 611 ; N P ; B 24 0 593 681 ; -C 81 ; WX 778 ; N Q ; B 24 -182 751 690 ; -C 82 ; WX 722 ; N R ; B 26 0 695 681 ; -C 83 ; WX 556 ; N S ; B 43 -19 506 690 ; -C 84 ; WX 667 ; N T ; B 30 0 629 681 ; -C 85 ; WX 722 ; N U ; B 20 -19 700 681 ; -C 86 ; WX 722 ; N V ; B 22 -18 696 681 ; -C 87 ; WX 1000 ; N W ; B 19 -18 979 680 ; -C 88 ; WX 722 ; N X ; B 23 0 695 681 ; -C 89 ; WX 722 ; N Y ; B 19 0 697 680 ; -C 90 ; WX 667 ; N Z ; B 37 0 624 681 ; -C 91 ; WX 333 ; N bracketleft ; B 73 -142 296 674 ; -C 92 ; WX 278 ; N backslash ; B 1 -17 279 750 ; -C 93 ; WX 333 ; N bracketright ; B 38 -142 261 674 ; -C 94 ; WX 581 ; N asciicircum ; B 102 290 486 690 ; -C 95 ; WX 500 ; N underscore ; B -2 -256 502 -182 ; -C 96 ; WX 333 ; N quoteleft ; B 72 357 252 691 ; -C 97 ; WX 500 ; N a ; B 25 -19 484 472 ; -C 98 ; WX 556 ; N b ; B 29 -18 512 670 ; -C 99 ; WX 444 ; N c ; B 24 -17 423 472 ; -C 100 ; WX 556 ; N d ; B 31 -17 523 670 ; -C 101 ; WX 444 ; N e ; B 25 -18 415 474 ; -C 102 ; WX 333 ; N f ; B 20 0 386 690 ; L i fi ; L l fl ; -C 103 ; WX 500 ; N g ; B 25 -210 474 472 ; -C 104 ; WX 556 ; N h ; B 29 0 523 670 ; -C 105 ; WX 278 ; N i ; B 27 0 249 690 ; -C 106 ; WX 333 ; N j ; B -57 -212 256 690 ; -C 107 ; WX 556 ; N k ; B 24 0 528 670 ; -C 108 ; WX 278 ; N l ; B 25 0 247 670 ; -C 109 ; WX 833 ; N m ; B 28 0 804 471 ; -C 110 ; WX 556 ; N n ; B 28 0 523 473 ; -C 111 ; WX 500 ; N o ; B 25 -18 473 472 ; -C 112 ; WX 556 ; N p ; B 30 -210 513 473 ; -C 113 ; WX 556 ; N q ; B 32 -210 535 472 ; -C 114 ; WX 444 ; N r ; B 29 0 417 473 ; -C 115 ; WX 389 ; N s ; B 29 -17 359 472 ; -C 116 ; WX 333 ; N t ; B 22 -19 320 627 ; -C 117 ; WX 556 ; N u ; B 23 -17 524 460 ; -C 118 ; WX 500 ; N v ; B 20 -14 479 460 ; -C 119 ; WX 722 ; N w ; B 10 -14 709 460 ; -C 120 ; WX 500 ; N x ; B 11 0 488 460 ; -C 121 ; WX 500 ; N y ; B 19 -212 475 460 ; -C 122 ; WX 444 ; N z ; B 25 0 414 460 ; -C 123 ; WX 394 ; N braceleft ; B 44 -142 342 674 ; -C 124 ; WX 220 ; N bar ; B 77 -195 151 720 ; -C 125 ; WX 394 ; N braceright ; B 38 -142 336 674 ; -C 126 ; WX 520 ; N asciitilde ; B 19 237 493 461 ; -C 161 ; WX 333 ; N exclamdown ; B 85 -210 249 498 ; -C 162 ; WX 500 ; N cent ; B 44 -148 460 586 ; -C 163 ; WX 500 ; N sterling ; B 25 -17 471 682 ; -C 164 ; WX 167 ; N fraction ; B -172 -17 335 690 ; -C 165 ; WX 500 ; N yen ; B -20 0 521 681 ; -C 166 ; WX 500 ; N florin ; B 2 -157 496 713 ; -C 167 ; WX 500 ; N section ; B 63 -148 438 677 ; -C 168 ; WX 500 ; N currency ; B 3 105 498 604 ; -C 169 ; WX 278 ; N quotesingle ; B 69 371 205 690 ; -C 170 ; WX 500 ; N quotedblleft ; B 33 346 479 679 ; -C 171 ; WX 500 ; N guillemotleft ; B 25 44 471 436 ; -C 172 ; WX 333 ; N guilsinglleft ; B 51 44 302 436 ; -C 173 ; WX 333 ; N guilsinglright ; B 26 44 277 436 ; -C 174 ; WX 556 ; N fi ; B 24 0 532 690 ; -C 175 ; WX 556 ; N fl ; B 25 0 529 691 ; -C 177 ; WX 500 ; N endash ; B -4 179 500 270 ; -C 178 ; WX 500 ; N dagger ; B 52 -141 446 690 ; -C 179 ; WX 500 ; N daggerdbl ; B 57 -138 451 681 ; -C 180 ; WX 250 ; N periodcentered ; B 43 270 167 394 ; -C 182 ; WX 540 ; N paragraph ; B 30 -190 533 681 ; -C 183 ; WX 350 ; N bullet ; B 50 175 300 425 ; -C 184 ; WX 333 ; N quotesinglbase ; B 77 -179 257 154 ; -C 185 ; WX 500 ; N quotedblbase ; B 31 -179 477 154 ; -C 186 ; WX 500 ; N quotedblright ; B 31 347 477 680 ; -C 187 ; WX 500 ; N guillemotright ; B 24 44 470 436 ; -C 188 ; WX 1000 ; N ellipsis ; B 85 -18 915 146 ; -C 189 ; WX 1000 ; N perthousand ; B 1 -55 993 718 ; -C 191 ; WX 500 ; N questiondown ; B 56 -210 437 488 ; -C 193 ; WX 333 ; N grave ; B 26 523 242 695 ; -C 194 ; WX 333 ; N acute ; B 83 523 299 695 ; -C 195 ; WX 333 ; N circumflex ; B 28 520 304 690 ; -C 196 ; WX 333 ; N tilde ; B 34 559 298 671 ; -C 197 ; WX 333 ; N macron ; B 34 543 297 600 ; -C 198 ; WX 333 ; N breve ; B 32 529 300 667 ; -C 199 ; WX 333 ; N dotaccent ; B 112 515 222 625 ; -C 200 ; WX 333 ; N dieresis ; B 33 556 297 652 ; -C 202 ; WX 333 ; N ring ; B 55 522 279 746 ; -C 203 ; WX 333 ; N cedilla ; B 42 -211 293 -10 ; -C 205 ; WX 333 ; N hungarumlaut ; B 32 539 320 753 ; -C 206 ; WX 333 ; N ogonek ; B 60 -179 277 70 ; -C 207 ; WX 333 ; N caron ; B 32 520 298 690 ; -C 208 ; WX 1000 ; N emdash ; B -2 185 1008 280 ; -C 225 ; WX 1000 ; N AE ; B 19 0 954 681 ; -C 227 ; WX 300 ; N ordfeminine ; B 12 286 288 685 ; -C 232 ; WX 667 ; N Lslash ; B 0 0 612 681 ; -C 233 ; WX 778 ; N Oslash ; B 45 -75 735 740 ; -C 234 ; WX 1000 ; N OE ; B 24 -7 979 683 ; -C 235 ; WX 330 ; N ordmasculine ; B 31 286 299 685 ; -C 241 ; WX 722 ; N ae ; B 30 -17 691 474 ; -C 245 ; WX 278 ; N dotlessi ; B 28 0 250 460 ; -C 248 ; WX 278 ; N lslash ; B 0 0 326 670 ; -C 249 ; WX 500 ; N oslash ; B 27 -95 474 550 ; -C 250 ; WX 722 ; N oe ; B 26 -17 689 473 ; -C 251 ; WX 556 ; N germandbls ; B 22 -18 513 689 ; -C -1 ; WX 722 ; N Aacute ; B 22 0 696 914 ; -C -1 ; WX 722 ; N Acircumflex ; B 22 0 696 909 ; -C -1 ; WX 722 ; N Adieresis ; B 22 0 696 871 ; -C -1 ; WX 722 ; N Agrave ; B 22 0 696 914 ; -C -1 ; WX 722 ; N Aring ; B 22 0 696 965 ; -C -1 ; WX 722 ; N Atilde ; B 22 0 696 890 ; -C -1 ; WX 722 ; N Ccedilla ; B 42 -211 669 690 ; -C -1 ; WX 667 ; N Eacute ; B 21 0 637 914 ; -C -1 ; WX 667 ; N Ecircumflex ; B 21 0 637 909 ; -C -1 ; WX 667 ; N Edieresis ; B 21 0 637 871 ; -C -1 ; WX 667 ; N Egrave ; B 21 0 637 914 ; -C -1 ; WX 722 ; N Eth ; B 22 0 685 681 ; -C -1 ; WX 389 ; N Iacute ; B 17 0 366 914 ; -C -1 ; WX 389 ; N Icircumflex ; B 17 0 366 909 ; -C -1 ; WX 389 ; N Idieresis ; B 17 0 366 871 ; -C -1 ; WX 389 ; N Igrave ; B 17 0 366 914 ; -C -1 ; WX 722 ; N Ntilde ; B 20 -10 697 890 ; -C -1 ; WX 778 ; N Oacute ; B 43 -18 733 914 ; -C -1 ; WX 778 ; N Ocircumflex ; B 43 -18 733 909 ; -C -1 ; WX 778 ; N Odieresis ; B 43 -18 733 871 ; -C -1 ; WX 778 ; N Ograve ; B 43 -18 733 914 ; -C -1 ; WX 778 ; N Otilde ; B 43 -18 733 890 ; -C -1 ; WX 556 ; N Scaron ; B 43 -19 506 909 ; -C -1 ; WX 611 ; N Thorn ; B 24 0 594 681 ; -C -1 ; WX 722 ; N Uacute ; B 20 -19 700 914 ; -C -1 ; WX 722 ; N Ucircumflex ; B 20 -19 700 909 ; -C -1 ; WX 722 ; N Udieresis ; B 20 -19 700 871 ; -C -1 ; WX 722 ; N Ugrave ; B 20 -19 700 914 ; -C -1 ; WX 722 ; N Yacute ; B 19 0 697 916 ; -C -1 ; WX 722 ; N Ydieresis ; B 19 0 697 871 ; -C -1 ; WX 667 ; N Zcaron ; B 37 0 624 909 ; -C -1 ; WX 500 ; N aacute ; B 25 -19 484 695 ; -C -1 ; WX 500 ; N acircumflex ; B 25 -19 484 690 ; -C -1 ; WX 500 ; N adieresis ; B 25 -19 484 652 ; -C -1 ; WX 500 ; N agrave ; B 25 -19 484 695 ; -C -1 ; WX 500 ; N aring ; B 25 -19 484 746 ; -C -1 ; WX 500 ; N atilde ; B 25 -19 484 671 ; -C -1 ; WX 220 ; N brokenbar ; B 77 -195 151 720 ; -C -1 ; WX 444 ; N ccedilla ; B 24 -211 423 472 ; -C -1 ; WX 747 ; N copyright ; B 16 -17 730 690 ; -C -1 ; WX 400 ; N degree ; B 50 390 350 690 ; -C -1 ; WX 570 ; N divide ; B 50 -10 520 460 ; -C -1 ; WX 444 ; N eacute ; B 25 -18 415 695 ; -C -1 ; WX 444 ; N ecircumflex ; B 25 -18 415 690 ; -C -1 ; WX 444 ; N edieresis ; B 25 -18 415 652 ; -C -1 ; WX 444 ; N egrave ; B 25 -18 415 695 ; -C -1 ; WX 500 ; N eth ; B 26 -17 474 670 ; -C -1 ; WX 278 ; N iacute ; B 28 0 265 695 ; -C -1 ; WX 278 ; N icircumflex ; B -6 0 270 690 ; -C -1 ; WX 278 ; N idieresis ; B -1 0 263 652 ; -C -1 ; WX 278 ; N igrave ; B -8 0 250 695 ; -C -1 ; WX 570 ; N logicalnot ; B 50 94 520 375 ; -C -1 ; WX 570 ; N minus ; B 50 188 520 262 ; -C -1 ; WX 556 ; N mu ; B 23 -210 524 460 ; -C -1 ; WX 570 ; N multiply ; B 50 -10 520 460 ; -C -1 ; WX 556 ; N ntilde ; B 28 0 523 671 ; -C -1 ; WX 500 ; N oacute ; B 25 -18 473 695 ; -C -1 ; WX 500 ; N ocircumflex ; B 25 -18 473 690 ; -C -1 ; WX 500 ; N odieresis ; B 25 -18 473 652 ; -C -1 ; WX 500 ; N ograve ; B 25 -18 473 695 ; -C -1 ; WX 750 ; N onehalf ; B 30 -18 720 690 ; -C -1 ; WX 750 ; N onequarter ; B 30 -18 720 690 ; -C -1 ; WX 300 ; N onesuperior ; B 24 276 275 690 ; -C -1 ; WX 500 ; N otilde ; B 25 -18 473 671 ; -C -1 ; WX 570 ; N plusminus ; B 50 0 520 600 ; -C -1 ; WX 747 ; N registered ; B 16 -17 730 690 ; -C -1 ; WX 389 ; N scaron ; B 29 -17 359 690 ; -C -1 ; WX 556 ; N thorn ; B 30 -210 513 670 ; -C -1 ; WX 750 ; N threequarters ; B 30 -18 720 690 ; -C -1 ; WX 300 ; N threesuperior ; B 5 269 294 690 ; -C -1 ; WX 1000 ; N trademark ; B 30 277 970 681 ; -C -1 ; WX 300 ; N twosuperior ; B 2 276 298 686 ; -C -1 ; WX 556 ; N uacute ; B 23 -17 524 695 ; -C -1 ; WX 556 ; N ucircumflex ; B 23 -17 524 690 ; -C -1 ; WX 556 ; N udieresis ; B 23 -17 524 652 ; -C -1 ; WX 556 ; N ugrave ; B 23 -17 524 695 ; -C -1 ; WX 500 ; N yacute ; B 19 -212 475 695 ; -C -1 ; WX 500 ; N ydieresis ; B 19 -212 475 652 ; -C -1 ; WX 444 ; N zcaron ; B 25 0 414 690 ; -EndCharMetrics -StartKernData -StartKernPairs 124 - -KPX A y -74 -KPX A w -74 -KPX A v -74 -KPX A space -55 -KPX A quoteright -74 -KPX A Y -92 -KPX A W -111 -KPX A V -129 -KPX A T -74 - -KPX F space -37 -KPX F period -92 -KPX F comma -92 -KPX F A -74 - -KPX L y -55 -KPX L space -55 -KPX L quoteright -92 -KPX L Y -92 -KPX L W -92 -KPX L V -92 -KPX L T -92 - -KPX P space -55 -KPX P period -92 -KPX P comma -92 -KPX P A -74 - -KPX R y -35 -KPX R Y -35 -KPX R W -35 -KPX R V -35 -KPX R T -35 - -KPX T y -74 -KPX T w -74 -KPX T u -92 -KPX T space -18 -KPX T semicolon -74 -KPX T s -92 -KPX T r -74 -KPX T period -74 -KPX T o -92 -KPX T i -18 -KPX T hyphen -92 -KPX T e -92 -KPX T comma -74 -KPX T colon -74 -KPX T c -92 -KPX T a -92 -KPX T O -18 -KPX T A -74 - -KPX V y -92 -KPX V u -92 -KPX V space -18 -KPX V semicolon -92 -KPX V r -74 -KPX V period -129 -KPX V o -92 -KPX V i -37 -KPX V hyphen -74 -KPX V e -92 -KPX V comma -129 -KPX V colon -92 -KPX V a -92 -KPX V O -20 -KPX V A -129 - -KPX W y -37 -KPX W u -18 -KPX W space -18 -KPX W semicolon -55 -KPX W r -18 -KPX W period -92 -KPX W o -55 -KPX W i -18 -KPX W hyphen -37 -KPX W e -55 -KPX W comma -92 -KPX W colon -55 -KPX W a -55 -KPX W A -111 - -KPX Y v -111 -KPX Y u -92 -KPX Y space -37 -KPX Y semicolon -92 -KPX Y q -111 -KPX Y period -92 -KPX Y p -92 -KPX Y o -111 -KPX Y i -37 -KPX Y hyphen -92 -KPX Y e -111 -KPX Y comma -92 -KPX Y colon -92 -KPX Y a -111 -KPX Y A -92 - -KPX f quoteright 55 -KPX f f 0 - -KPX one one -55 - -KPX quoteleft quoteleft -74 - -KPX quoteright space -74 -KPX quoteright s -37 -KPX quoteright quoteright -74 - -KPX r z 0 -KPX r y 0 -KPX r x 0 -KPX r w 0 -KPX r t 0 -KPX r space -18 -KPX r quoteright 18 -KPX r q -18 -KPX r period -92 -KPX r o -18 -KPX r hyphen -37 -KPX r h 0 -KPX r e -18 -KPX r comma -92 -KPX r c -18 - -KPX space Y -37 -KPX space W -18 -KPX space V -18 -KPX space T -18 -KPX space A -55 - -KPX v period -55 -KPX v comma -55 - -KPX w period -55 -KPX w comma -55 - -KPX y period -55 -KPX y comma -55 -EndKernPairs -EndKernData -StartComposites 56 -CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 167 219 ; -CC zcaron 2 ; PCC z 0 0 ; PCC caron 55 0 ; -CC Scaron 2 ; PCC S 0 0 ; PCC caron 111 219 ; -CC scaron 2 ; PCC s 0 0 ; PCC caron 28 0 ; -CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 207 0 ; -CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 68 0 ; -CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 194 219 ; -CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 83 0 ; -CC Uacute 2 ; PCC U 0 0 ; PCC acute 221 219 ; -CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 221 219 ; -CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 221 219 ; -CC Ugrave 2 ; PCC U 0 0 ; PCC grave 221 219 ; -CC uacute 2 ; PCC u 0 0 ; PCC acute 104 0 ; -CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 104 0 ; -CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 104 0 ; -CC ugrave 2 ; PCC u 0 0 ; PCC grave 104 0 ; -CC Iacute 2 ; PCC I 0 0 ; PCC acute 28 219 ; -CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 28 219 ; -CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 28 219 ; -CC Igrave 2 ; PCC I 0 0 ; PCC grave 28 219 ; -CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -34 0 ; -CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -34 0 ; -CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -34 0 ; -CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -34 0 ; -CC Eacute 2 ; PCC E 0 0 ; PCC acute 174 219 ; -CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 174 219 ; -CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 174 219 ; -CC Egrave 2 ; PCC E 0 0 ; PCC grave 174 219 ; -CC eacute 2 ; PCC e 0 0 ; PCC acute 61 0 ; -CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 61 0 ; -CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 61 0 ; -CC egrave 2 ; PCC e 0 0 ; PCC grave 61 0 ; -CC Aacute 2 ; PCC A 0 0 ; PCC acute 187 219 ; -CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 187 219 ; -CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 187 219 ; -CC Agrave 2 ; PCC A 0 0 ; PCC grave 187 219 ; -CC aacute 2 ; PCC a 0 0 ; PCC acute 76 0 ; -CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 76 0 ; -CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 76 0 ; -CC agrave 2 ; PCC a 0 0 ; PCC grave 76 0 ; -CC Oacute 2 ; PCC O 0 0 ; PCC acute 222 219 ; -CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 222 219 ; -CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 222 219 ; -CC Ograve 2 ; PCC O 0 0 ; PCC grave 222 219 ; -CC oacute 2 ; PCC o 0 0 ; PCC acute 83 0 ; -CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 83 0 ; -CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 83 0 ; -CC ograve 2 ; PCC o 0 0 ; PCC grave 83 0 ; -CC Atilde 2 ; PCC A 0 0 ; PCC tilde 187 219 ; -CC atilde 2 ; PCC a 0 0 ; PCC tilde 76 0 ; -CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 194 219 ; -CC ntilde 2 ; PCC n 0 0 ; PCC tilde 111 0 ; -CC Otilde 2 ; PCC O 0 0 ; PCC tilde 222 219 ; -CC otilde 2 ; PCC o 0 0 ; PCC tilde 83 0 ; -CC Aring 2 ; PCC A 0 0 ; PCC ring 187 219 ; -CC aring 2 ; PCC a 0 0 ; PCC ring 76 0 ; -EndComposites -EndFontMetrics diff --git a/misc/afm/TimesBoO.afm b/misc/afm/TimesBoO.afm deleted file mode 100644 index cf4ca76a17..0000000000 --- a/misc/afm/TimesBoO.afm +++ /dev/null @@ -1,438 +0,0 @@ -StartFontMetrics 2.0 -Comment Copyright (c) 1984 Adobe Systems Incorporated. All Rights Reserved. -Comment Creation Date:Tue Aug 5 11:23:15 PDT 1986 -FontName Times-BoldItalic -EncodingScheme AdobeStandardEncoding -FullName Times Bold Italic -FamilyName Times -Weight Bold -ItalicAngle -15.0 -IsFixedPitch false -UnderlinePosition -98 -UnderlineThickness 54 -Version 001.001 -Notice Times is a trademark of Allied Corporation. -FontBBox -168 -232 1014 894 -CapHeight 662 -XHeight 458 -Descender -203 -Ascender 682 -StartCharMetrics 228 -C 32 ; WX 250 ; N space ; B 0 0 0 0 ; -C 33 ; WX 389 ; N exclam ; B 66 -13 367 676 ; -C 34 ; WX 555 ; N quotedbl ; B 142 367 549 693 ; -C 35 ; WX 500 ; N numbersign ; B 4 0 496 662 ; -C 36 ; WX 500 ; N dollar ; B -20 -101 492 723 ; -C 37 ; WX 833 ; N percent ; B 39 -8 784 685 ; -C 38 ; WX 778 ; N ampersand ; B 41 -19 727 676 ; -C 39 ; WX 333 ; N quoteright ; B 80 362 282 675 ; -C 40 ; WX 333 ; N parenleft ; B 28 -179 340 676 ; -C 41 ; WX 333 ; N parenright ; B -44 -179 268 676 ; -C 42 ; WX 500 ; N asterisk ; B 56 244 445 676 ; -C 43 ; WX 570 ; N plus ; B 33 0 537 505 ; -C 44 ; WX 250 ; N comma ; B -10 -181 192 132 ; -C 45 ; WX 333 ; N hyphen ; B 33 167 299 282 ; -C 46 ; WX 250 ; N period ; B 23 -13 170 133 ; -C 47 ; WX 278 ; N slash ; B -11 -18 289 682 ; -C 48 ; WX 500 ; N zero ; B 17 -13 472 676 ; -C 49 ; WX 500 ; N one ; B 5 0 415 676 ; -C 50 ; WX 500 ; N two ; B -27 0 441 676 ; -C 51 ; WX 500 ; N three ; B -15 -13 445 676 ; -C 52 ; WX 500 ; N four ; B -15 0 498 676 ; -C 53 ; WX 500 ; N five ; B -11 -13 482 662 ; -C 54 ; WX 500 ; N six ; B 23 -13 504 676 ; -C 55 ; WX 500 ; N seven ; B 51 0 519 662 ; -C 56 ; WX 500 ; N eight ; B 3 -13 471 676 ; -C 57 ; WX 500 ; N nine ; B -12 -13 470 676 ; -C 58 ; WX 333 ; N colon ; B 52 -13 291 458 ; -C 59 ; WX 333 ; N semicolon ; B 13 -181 291 458 ; -C 60 ; WX 570 ; N less ; B 31 -14 540 524 ; -C 61 ; WX 570 ; N equal ; B 33 116 537 401 ; -C 62 ; WX 570 ; N greater ; B 31 -14 540 524 ; -C 63 ; WX 500 ; N question ; B 78 -13 465 676 ; -C 64 ; WX 832 ; N at ; B -9 -150 838 691 ; -C 65 ; WX 667 ; N A ; B -51 0 602 676 ; -C 66 ; WX 667 ; N B ; B -24 0 618 662 ; -C 67 ; WX 667 ; N C ; B 22 -18 660 677 ; -C 68 ; WX 722 ; N D ; B -31 0 693 662 ; -C 69 ; WX 667 ; N E ; B -27 0 646 662 ; -C 70 ; WX 667 ; N F ; B -20 0 646 662 ; -C 71 ; WX 722 ; N G ; B 21 -18 699 676 ; -C 72 ; WX 778 ; N H ; B -24 0 791 662 ; -C 73 ; WX 389 ; N I ; B -22 0 412 662 ; -C 74 ; WX 500 ; N J ; B -45 -98 519 662 ; -C 75 ; WX 667 ; N K ; B -31 0 685 662 ; -C 76 ; WX 611 ; N L ; B -22 0 584 662 ; -C 77 ; WX 889 ; N M ; B -29 -12 907 662 ; -C 78 ; WX 722 ; N N ; B -27 -18 740 662 ; -C 79 ; WX 722 ; N O ; B 27 -18 684 676 ; -C 80 ; WX 611 ; N P ; B -27 0 608 662 ; -C 81 ; WX 722 ; N Q ; B 27 -203 684 676 ; -C 82 ; WX 667 ; N R ; B -29 0 616 662 ; -C 83 ; WX 556 ; N S ; B 6 -18 524 676 ; -C 84 ; WX 611 ; N T ; B 39 0 632 662 ; -C 85 ; WX 722 ; N U ; B 66 -18 736 662 ; -C 86 ; WX 667 ; N V ; B 48 -18 692 662 ; -C 87 ; WX 889 ; N W ; B 48 -18 914 662 ; -C 88 ; WX 667 ; N X ; B -24 0 687 662 ; -C 89 ; WX 611 ; N Y ; B 46 0 625 662 ; -C 90 ; WX 611 ; N Z ; B -1 0 594 662 ; -C 91 ; WX 333 ; N bracketleft ; B -7 -157 388 682 ; -C 92 ; WX 278 ; N backslash ; B 1 0 465 682 ; -C 93 ; WX 333 ; N bracketright ; B -65 -157 330 682 ; -C 94 ; WX 570 ; N asciicircum ; B 34 259 536 662 ; -C 95 ; WX 500 ; N underscore ; B 0 -127 500 -89 ; -C 96 ; WX 333 ; N quoteleft ; B 117 363 319 676 ; -C 97 ; WX 500 ; N a ; B 9 -14 480 458 ; -C 98 ; WX 500 ; N b ; B 21 -13 474 682 ; -C 99 ; WX 444 ; N c ; B 25 -13 418 458 ; -C 100 ; WX 500 ; N d ; B 9 -13 541 682 ; -C 101 ; WX 444 ; N e ; B 25 -13 413 458 ; -C 102 ; WX 333 ; N f ; B -146 -203 460 682 ; L i fi ; L l fl ; -C 103 ; WX 500 ; N g ; B -27 -203 498 458 ; -C 104 ; WX 556 ; N h ; B 12 -13 518 682 ; -C 105 ; WX 278 ; N i ; B 25 -13 284 676 ; -C 106 ; WX 278 ; N j ; B -152 -203 311 676 ; -C 107 ; WX 500 ; N k ; B 10 -13 511 682 ; -C 108 ; WX 278 ; N l ; B 31 -13 312 682 ; -C 109 ; WX 778 ; N m ; B 16 -13 744 458 ; -C 110 ; WX 556 ; N n ; B 24 -13 518 458 ; -C 111 ; WX 500 ; N o ; B 27 -13 467 458 ; -C 112 ; WX 500 ; N p ; B -79 -203 481 458 ; -C 113 ; WX 500 ; N q ; B 21 -203 486 459 ; -C 114 ; WX 389 ; N r ; B 9 0 415 458 ; -C 115 ; WX 389 ; N s ; B 16 -13 364 459 ; -C 116 ; WX 278 ; N t ; B 16 -14 305 592 ; -C 117 ; WX 556 ; N u ; B 48 -13 521 458 ; -C 118 ; WX 444 ; N v ; B 50 -13 432 458 ; -C 119 ; WX 667 ; N w ; B 50 -13 642 458 ; -C 120 ; WX 500 ; N x ; B -5 -13 498 458 ; -C 121 ; WX 444 ; N y ; B -60 -203 423 458 ; -C 122 ; WX 389 ; N z ; B -24 -58 394 448 ; -C 123 ; WX 348 ; N braceleft ; B 31 -154 381 686 ; -C 124 ; WX 220 ; N bar ; B 70 0 151 682 ; -C 125 ; WX 348 ; N braceright ; B -31 -161 319 679 ; -C 126 ; WX 570 ; N asciitilde ; B 33 158 537 353 ; -C 161 ; WX 389 ; N exclamdown ; B 21 -232 321 458 ; -C 162 ; WX 500 ; N cent ; B 50 -142 443 570 ; -C 163 ; WX 500 ; N sterling ; B -32 -13 505 676 ; -C 164 ; WX 167 ; N fraction ; B -161 0 327 662 ; -C 165 ; WX 500 ; N yen ; B -15 0 565 662 ; -C 166 ; WX 500 ; N florin ; B -86 -154 530 682 ; -C 167 ; WX 500 ; N section ; B 36 -143 454 676 ; -C 168 ; WX 500 ; N currency ; B -3 110 503 612 ; -C 169 ; WX 278 ; N quotesingle ; B 126 367 295 693 ; -C 170 ; WX 500 ; N quotedblleft ; B 57 363 513 676 ; -C 171 ; WX 500 ; N guillemotleft ; B 21 33 474 416 ; -C 172 ; WX 333 ; N guilsinglleft ; B 42 33 310 416 ; -C 173 ; WX 333 ; N guilsinglright ; B 23 38 291 421 ; -C 174 ; WX 556 ; N fi ; B -157 -203 538 682 ; -C 175 ; WX 556 ; N fl ; B -149 -203 577 682 ; -C 177 ; WX 500 ; N endash ; B -11 176 511 266 ; -C 178 ; WX 500 ; N dagger ; B 90 -146 489 676 ; -C 179 ; WX 500 ; N daggerdbl ; B 11 -143 487 675 ; -C 180 ; WX 250 ; N periodcentered ; B 51 179 200 328 ; -C 182 ; WX 500 ; N paragraph ; B 61 -189 592 682 ; -C 183 ; WX 350 ; N bullet ; B 50 175 300 425 ; -C 184 ; WX 333 ; N quotesinglbase ; B 66 -181 268 132 ; -C 185 ; WX 500 ; N quotedblbase ; B -57 -181 398 132 ; -C 186 ; WX 500 ; N quotedblright ; B 56 362 509 675 ; -C 187 ; WX 500 ; N guillemotright ; B 21 38 474 421 ; -C 188 ; WX 1000 ; N ellipsis ; B 93 -13 906 133 ; -C 189 ; WX 1000 ; N perthousand ; B 7 -49 985 699 ; -C 191 ; WX 500 ; N questiondown ; B 30 -203 417 487 ; -C 193 ; WX 333 ; N grave ; B 115 511 325 690 ; -C 194 ; WX 333 ; N acute ; B 168 511 405 690 ; -C 195 ; WX 333 ; N circumflex ; B 70 510 394 682 ; -C 196 ; WX 333 ; N tilde ; B 69 530 424 648 ; -C 197 ; WX 333 ; N macron ; B 81 547 420 616 ; -C 198 ; WX 333 ; N breve ; B 99 511 414 671 ; -C 199 ; WX 333 ; N dotaccent ; B 180 519 308 648 ; -C 200 ; WX 333 ; N dieresis ; B 85 519 424 648 ; -C 202 ; WX 333 ; N ring ; B 141 466 352 676 ; -C 203 ; WX 333 ; N cedilla ; B 32 -216 264 5 ; -C 205 ; WX 333 ; N hungarumlaut ; B 28 538 339 750 ; -C 206 ; WX 333 ; N ogonek ; B -37 -173 192 44 ; -C 207 ; WX 333 ; N caron ; B 109 511 437 683 ; -C 208 ; WX 1000 ; N emdash ; B -14 176 1014 266 ; -C 225 ; WX 944 ; N AE ; B -41 0 931 662 ; -C 227 ; WX 266 ; N ordfeminine ; B -24 286 291 676 ; -C 232 ; WX 611 ; N Lslash ; B -22 0 584 662 ; -C 233 ; WX 722 ; N Oslash ; B 27 -124 684 754 ; -C 234 ; WX 944 ; N OE ; B 23 -8 936 670 ; -C 235 ; WX 300 ; N ordmasculine ; B 1 286 300 676 ; -C 241 ; WX 722 ; N ae ; B 15 -13 685 458 ; -C 245 ; WX 278 ; N dotlessi ; B 27 -13 260 458 ; -C 248 ; WX 278 ; N lslash ; B 12 -13 326 682 ; -C 249 ; WX 500 ; N oslash ; B 27 -118 467 556 ; -C 250 ; WX 722 ; N oe ; B 26 -13 687 458 ; -C 251 ; WX 500 ; N germandbls ; B -168 -203 497 682 ; -C -1 ; WX 667 ; N Aacute ; B -51 0 602 894 ; -C -1 ; WX 667 ; N Acircumflex ; B -51 0 602 886 ; -C -1 ; WX 667 ; N Adieresis ; B -51 0 602 852 ; -C -1 ; WX 667 ; N Agrave ; B -51 0 602 894 ; -C -1 ; WX 667 ; N Aring ; B -51 0 602 880 ; -C -1 ; WX 667 ; N Atilde ; B -51 0 602 852 ; -C -1 ; WX 667 ; N Ccedilla ; B 22 -216 660 677 ; -C -1 ; WX 667 ; N Eacute ; B -27 0 646 894 ; -C -1 ; WX 667 ; N Ecircumflex ; B -27 0 646 886 ; -C -1 ; WX 667 ; N Edieresis ; B -27 0 646 852 ; -C -1 ; WX 667 ; N Egrave ; B -27 0 646 894 ; -C -1 ; WX 722 ; N Eth ; B -31 0 693 662 ; -C -1 ; WX 389 ; N Iacute ; B -22 0 433 894 ; -C -1 ; WX 389 ; N Icircumflex ; B -22 0 422 886 ; -C -1 ; WX 389 ; N Idieresis ; B -22 0 452 852 ; -C -1 ; WX 389 ; N Igrave ; B -22 0 412 894 ; -C -1 ; WX 722 ; N Ntilde ; B -27 -18 740 852 ; -C -1 ; WX 722 ; N Oacute ; B 27 -18 684 894 ; -C -1 ; WX 722 ; N Ocircumflex ; B 27 -18 684 886 ; -C -1 ; WX 722 ; N Odieresis ; B 27 -18 684 852 ; -C -1 ; WX 722 ; N Ograve ; B 27 -18 684 894 ; -C -1 ; WX 722 ; N Otilde ; B 27 -18 684 852 ; -C -1 ; WX 556 ; N Scaron ; B 6 -18 549 887 ; -C -1 ; WX 611 ; N Thorn ; B -27 0 572 662 ; -C -1 ; WX 722 ; N Uacute ; B 66 -18 736 894 ; -C -1 ; WX 722 ; N Ucircumflex ; B 66 -18 736 886 ; -C -1 ; WX 722 ; N Udieresis ; B 66 -18 736 852 ; -C -1 ; WX 722 ; N Ugrave ; B 66 -18 736 894 ; -C -1 ; WX 611 ; N Yacute ; B 46 0 625 894 ; -C -1 ; WX 611 ; N Ydieresis ; B 46 0 625 852 ; -C -1 ; WX 611 ; N Zcaron ; B -1 0 594 887 ; -C -1 ; WX 500 ; N aacute ; B 9 -14 489 690 ; -C -1 ; WX 500 ; N acircumflex ; B 9 -14 480 682 ; -C -1 ; WX 500 ; N adieresis ; B 9 -14 508 648 ; -C -1 ; WX 500 ; N agrave ; B 9 -14 480 690 ; -C -1 ; WX 500 ; N aring ; B 9 -14 480 676 ; -C -1 ; WX 500 ; N atilde ; B 9 -14 508 648 ; -C -1 ; WX 220 ; N brokenbar ; B 70 0 151 682 ; -C -1 ; WX 444 ; N ccedilla ; B 25 -216 418 458 ; -C -1 ; WX 747 ; N copyright ; B 23 -18 723 676 ; -C -1 ; WX 400 ; N degree ; B 70 376 370 676 ; -C -1 ; WX 570 ; N divide ; B 33 0 537 505 ; -C -1 ; WX 444 ; N eacute ; B 25 -13 461 690 ; -C -1 ; WX 444 ; N ecircumflex ; B 25 -13 450 682 ; -C -1 ; WX 444 ; N edieresis ; B 25 -13 480 648 ; -C -1 ; WX 444 ; N egrave ; B 25 -13 413 690 ; -C -1 ; WX 500 ; N eth ; B 27 -13 498 682 ; -C -1 ; WX 278 ; N iacute ; B 27 -13 378 690 ; -C -1 ; WX 278 ; N icircumflex ; B 27 -13 367 682 ; -C -1 ; WX 278 ; N idieresis ; B 27 -13 397 648 ; -C -1 ; WX 278 ; N igrave ; B 27 -13 298 690 ; -C -1 ; WX 606 ; N logicalnot ; B 51 120 555 401 ; -C -1 ; WX 606 ; N minus ; B 51 210 555 300 ; -C -1 ; WX 576 ; N mu ; B -63 -210 521 458 ; -C -1 ; WX 570 ; N multiply ; B 33 0 537 504 ; -C -1 ; WX 556 ; N ntilde ; B 24 -13 536 648 ; -C -1 ; WX 500 ; N oacute ; B 27 -13 489 690 ; -C -1 ; WX 500 ; N ocircumflex ; B 27 -13 478 682 ; -C -1 ; WX 500 ; N odieresis ; B 27 -13 508 648 ; -C -1 ; WX 500 ; N ograve ; B 27 -13 467 690 ; -C -1 ; WX 750 ; N onehalf ; B 30 0 720 676 ; -C -1 ; WX 750 ; N onequarter ; B 30 0 720 676 ; -C -1 ; WX 300 ; N onesuperior ; B 17 270 283 676 ; -C -1 ; WX 500 ; N otilde ; B 27 -13 508 648 ; -C -1 ; WX 570 ; N plusminus ; B 33 0 537 665 ; -C -1 ; WX 747 ; N registered ; B 23 -18 723 676 ; -C -1 ; WX 389 ; N scaron ; B 16 -13 465 683 ; -C -1 ; WX 500 ; N thorn ; B -79 -203 474 682 ; -C -1 ; WX 750 ; N threequarters ; B 30 0 720 676 ; -C -1 ; WX 300 ; N threesuperior ; B 0 263 299 676 ; -C -1 ; WX 1000 ; N trademark ; B 40 272 980 676 ; -C -1 ; WX 300 ; N twosuperior ; B -2 270 302 676 ; -C -1 ; WX 556 ; N uacute ; B 48 -13 521 690 ; -C -1 ; WX 556 ; N ucircumflex ; B 48 -13 521 682 ; -C -1 ; WX 556 ; N udieresis ; B 48 -13 536 648 ; -C -1 ; WX 556 ; N ugrave ; B 48 -13 521 690 ; -C -1 ; WX 444 ; N yacute ; B -60 -203 461 690 ; -C -1 ; WX 444 ; N ydieresis ; B -60 -203 480 648 ; -C -1 ; WX 389 ; N zcaron ; B -24 -58 465 683 ; -EndCharMetrics -StartKernData -StartKernPairs 108 - -KPX A y -74 -KPX A w -74 -KPX A v -74 -KPX A space -55 -KPX A quoteright -74 -KPX A Y -55 -KPX A W -92 -KPX A V -74 -KPX A T -55 - -KPX F space -18 -KPX F period -129 -KPX F comma -129 -KPX F A -92 - -KPX L y -37 -KPX L space -37 -KPX L quoteright -55 -KPX L Y -37 -KPX L W -37 -KPX L V -37 -KPX L T -18 - -KPX P space -37 -KPX P period -129 -KPX P comma -129 -KPX P A -74 - -KPX R y -18 -KPX R Y -18 -KPX R W -18 -KPX R V -18 - -KPX T y -37 -KPX T w -37 -KPX T u -37 -KPX T semicolon -74 -KPX T s -92 -KPX T r -37 -KPX T period -92 -KPX T o -92 -KPX T i -37 -KPX T hyphen -92 -KPX T e -92 -KPX T comma -92 -KPX T colon -74 -KPX T c -92 -KPX T a -92 -KPX T O -18 -KPX T A -55 - -KPX V y -74 -KPX V u -55 -KPX V space -18 -KPX V semicolon -74 -KPX V r -55 -KPX V period -129 -KPX V o -111 -KPX V i -55 -KPX V hyphen -55 -KPX V e -111 -KPX V comma -129 -KPX V colon -74 -KPX V a -111 -KPX V A -74 - -KPX W y -55 -KPX W u -55 -KPX W space -18 -KPX W semicolon -55 -KPX W r -74 -KPX W period -74 -KPX W o -74 -KPX W i -37 -KPX W hyphen -37 -KPX W e -74 -KPX W comma -74 -KPX W colon -55 -KPX W a -74 -KPX W A -74 - -KPX Y v -92 -KPX Y u -92 -KPX Y space -37 -KPX Y semicolon -92 -KPX Y q -111 -KPX Y period -74 -KPX Y p -74 -KPX Y o -111 -KPX Y i -55 -KPX Y hyphen -92 -KPX Y e -111 -KPX Y comma -92 -KPX Y colon -92 -KPX Y a -92 -KPX Y A -74 - -KPX f quoteright 55 -KPX f f -18 - -KPX one one -55 - -KPX quoteleft quoteleft -74 - -KPX quoteright t -37 -KPX quoteright space -74 -KPX quoteright s -74 -KPX quoteright quoteright -74 - -KPX r quoteright 37 -KPX r period -55 -KPX r comma -55 - -KPX space Y -18 -KPX space W -18 -KPX space A -37 - -KPX v period -37 -KPX v comma -37 - -KPX w period -37 -KPX w comma -37 - -KPX y period -37 -KPX y comma -37 -EndKernPairs -EndKernData -StartComposites 56 -CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 139 204 ; -CC zcaron 2 ; PCC z 0 0 ; PCC caron 28 0 ; -CC Scaron 2 ; PCC S 0 0 ; PCC caron 111 204 ; -CC scaron 2 ; PCC s 0 0 ; PCC caron 28 0 ; -CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 167 0 ; -CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 55 0 ; -CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 139 204 ; -CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 55 0 ; -CC Uacute 2 ; PCC U 0 0 ; PCC acute 194 204 ; -CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 194 204 ; -CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 194 204 ; -CC Ugrave 2 ; PCC U 0 0 ; PCC grave 194 204 ; -CC uacute 2 ; PCC u 0 0 ; PCC acute 111 0 ; -CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 111 0 ; -CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 111 0 ; -CC ugrave 2 ; PCC u 0 0 ; PCC grave 111 0 ; -CC Iacute 2 ; PCC I 0 0 ; PCC acute 28 204 ; -CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 28 204 ; -CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 28 204 ; -CC Igrave 2 ; PCC I 0 0 ; PCC grave 28 204 ; -CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -27 0 ; -CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -27 0 ; -CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -27 0 ; -CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -27 0 ; -CC Eacute 2 ; PCC E 0 0 ; PCC acute 167 204 ; -CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 167 204 ; -CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 167 204 ; -CC Egrave 2 ; PCC E 0 0 ; PCC grave 167 204 ; -CC eacute 2 ; PCC e 0 0 ; PCC acute 55 0 ; -CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 55 0 ; -CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 55 0 ; -CC egrave 2 ; PCC e 0 0 ; PCC grave 55 0 ; -CC Aacute 2 ; PCC A 0 0 ; PCC acute 167 204 ; -CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 167 204 ; -CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 167 204 ; -CC Agrave 2 ; PCC A 0 0 ; PCC grave 167 204 ; -CC aacute 2 ; PCC a 0 0 ; PCC acute 83 0 ; -CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 83 0 ; -CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 83 0 ; -CC agrave 2 ; PCC a 0 0 ; PCC grave 83 0 ; -CC Oacute 2 ; PCC O 0 0 ; PCC acute 194 204 ; -CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 194 204 ; -CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 194 204 ; -CC Ograve 2 ; PCC O 0 0 ; PCC grave 194 204 ; -CC oacute 2 ; PCC o 0 0 ; PCC acute 83 0 ; -CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 83 0 ; -CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 83 0 ; -CC ograve 2 ; PCC o 0 0 ; PCC grave 83 0 ; -CC Atilde 2 ; PCC A 0 0 ; PCC tilde 167 204 ; -CC atilde 2 ; PCC a 0 0 ; PCC tilde 83 0 ; -CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 194 204 ; -CC ntilde 2 ; PCC n 0 0 ; PCC tilde 111 0 ; -CC Otilde 2 ; PCC O 0 0 ; PCC tilde 194 204 ; -CC otilde 2 ; PCC o 0 0 ; PCC tilde 83 0 ; -CC Aring 2 ; PCC A 0 0 ; PCC ring 167 204 ; -CC aring 2 ; PCC a 0 0 ; PCC ring 83 0 ; -EndComposites -EndFontMetrics diff --git a/misc/afm/TimesO.afm b/misc/afm/TimesO.afm deleted file mode 100644 index b8ffc6a0f3..0000000000 --- a/misc/afm/TimesO.afm +++ /dev/null @@ -1,450 +0,0 @@ -StartFontMetrics 2.0 -Comment Copyright (c) 1984 Adobe Systems Incorporated. All Rights Reserved. -Comment Creation Date:Tue Aug 5 11:12:17 PDT 1986 -FontName Times-Italic -EncodingScheme AdobeStandardEncoding -FullName Times Italic -FamilyName Times -Weight Medium -ItalicAngle -15.5 -IsFixedPitch false -UnderlinePosition -96 -UnderlineThickness 48 -Version 001.001 -Notice Times is a trademark of Allied Corporation. -FontBBox -176 -252 990 930 -CapHeight 660 -XHeight 446 -Descender -206 -Ascender 684 -StartCharMetrics 228 -C 32 ; WX 250 ; N space ; B 0 0 0 0 ; -C 33 ; WX 333 ; N exclam ; B 46 -10 296 670 ; -C 34 ; WX 420 ; N quotedbl ; B 107 442 402 673 ; -C 35 ; WX 500 ; N numbersign ; B -7 -6 508 683 ; -C 36 ; WX 500 ; N dollar ; B 13 -102 481 735 ; -C 37 ; WX 833 ; N percent ; B 63 -14 770 682 ; -C 38 ; WX 778 ; N ampersand ; B 60 -22 698 673 ; -C 39 ; WX 333 ; N quoteright ; B 69 458 206 678 ; -C 40 ; WX 333 ; N parenleft ; B 41 -180 312 662 ; -C 41 ; WX 333 ; N parenright ; B 19 -178 286 664 ; -C 42 ; WX 500 ; N asterisk ; B 60 268 434 684 ; -C 43 ; WX 675 ; N plus ; B 85 0 589 505 ; -C 44 ; WX 250 ; N comma ; B 57 -126 194 94 ; -C 45 ; WX 333 ; N hyphen ; B 55 192 276 254 ; -C 46 ; WX 250 ; N period ; B 75 -10 175 90 ; -C 47 ; WX 278 ; N slash ; B 2 -14 252 641 ; -C 48 ; WX 500 ; N zero ; B 19 -9 470 683 ; -C 49 ; WX 500 ; N one ; B 31 0 390 684 ; -C 50 ; WX 500 ; N two ; B -7 0 429 682 ; -C 51 ; WX 500 ; N three ; B -7 -12 443 682 ; -C 52 ; WX 500 ; N four ; B -8 0 454 681 ; -C 53 ; WX 500 ; N five ; B -12 -15 462 666 ; -C 54 ; WX 500 ; N six ; B 24 -8 497 685 ; -C 55 ; WX 500 ; N seven ; B 56 -12 512 666 ; -C 56 ; WX 500 ; N eight ; B 12 -7 475 681 ; -C 57 ; WX 500 ; N nine ; B 10 -18 470 684 ; -C 58 ; WX 333 ; N colon ; B 86 -10 284 444 ; -C 59 ; WX 333 ; N semicolon ; B 63 -124 292 441 ; -C 60 ; WX 675 ; N less ; B 83 -7 592 515 ; -C 61 ; WX 675 ; N equal ; B 85 125 589 383 ; -C 62 ; WX 675 ; N greater ; B 82 -7 591 515 ; -C 63 ; WX 500 ; N question ; B 105 -10 439 670 ; -C 64 ; WX 920 ; N at ; B 39 -191 866 648 ; -C 65 ; WX 611 ; N A ; B -45 0 564 672 ; -C 66 ; WX 611 ; N B ; B -28 0 562 660 ; -C 67 ; WX 667 ; N C ; B 33 -23 653 672 ; -C 68 ; WX 722 ; N D ; B -27 0 671 660 ; -C 69 ; WX 611 ; N E ; B -17 0 609 660 ; -C 70 ; WX 611 ; N F ; B -17 0 609 660 ; -C 71 ; WX 722 ; N G ; B 31 -23 701 672 ; -C 72 ; WX 722 ; N H ; B -26 0 742 660 ; -C 73 ; WX 333 ; N I ; B -26 0 357 660 ; -C 74 ; WX 444 ; N J ; B -36 -22 479 660 ; -C 75 ; WX 667 ; N K ; B -15 0 702 660 ; -C 76 ; WX 556 ; N L ; B -32 0 535 660 ; -C 77 ; WX 833 ; N M ; B -24 0 850 660 ; -C 78 ; WX 667 ; N N ; B -36 -12 698 660 ; -C 79 ; WX 722 ; N O ; B 42 -23 676 671 ; -C 80 ; WX 611 ; N P ; B -16 0 582 660 ; -C 81 ; WX 722 ; N Q ; B 41 -186 681 671 ; -C 82 ; WX 611 ; N R ; B -32 0 566 660 ; -C 83 ; WX 500 ; N S ; B 9 -22 483 674 ; -C 84 ; WX 556 ; N T ; B 32 0 602 660 ; -C 85 ; WX 722 ; N U ; B 77 -21 747 660 ; -C 86 ; WX 611 ; N V ; B 44 -20 659 660 ; -C 87 ; WX 833 ; N W ; B 35 -20 875 660 ; -C 88 ; WX 611 ; N X ; B -45 0 633 660 ; -C 89 ; WX 556 ; N Y ; B 44 0 600 660 ; -C 90 ; WX 556 ; N Z ; B -19 0 581 660 ; -C 91 ; WX 389 ; N bracketleft ; B 22 -170 391 654 ; -C 92 ; WX 278 ; N backslash ; B 2 -12 252 651 ; -C 93 ; WX 389 ; N bracketright ; B -31 -170 341 654 ; -C 94 ; WX 422 ; N asciicircum ; B 0 254 503 660 ; -C 95 ; WX 500 ; N underscore ; B -9 -252 510 -206 ; -C 96 ; WX 333 ; N quoteleft ; B 149 457 286 677 ; -C 97 ; WX 500 ; N a ; B 15 -11 474 446 ; -C 98 ; WX 500 ; N b ; B 24 -12 475 682 ; -C 99 ; WX 444 ; N c ; B 32 -11 420 446 ; -C 100 ; WX 500 ; N d ; B 15 -11 521 684 ; -C 101 ; WX 444 ; N e ; B 34 -13 412 446 ; -C 102 ; WX 278 ; N f ; B -148 -207 415 684 ; L i fi ; L l fl ; -C 103 ; WX 500 ; N g ; B 10 -209 471 445 ; -C 104 ; WX 500 ; N h ; B 23 -10 473 684 ; -C 105 ; WX 278 ; N i ; B 43 -10 263 660 ; -C 106 ; WX 278 ; N j ; B -109 -207 287 660 ; -C 107 ; WX 444 ; N k ; B 16 -12 460 685 ; -C 108 ; WX 278 ; N l ; B 41 -10 276 685 ; -C 109 ; WX 722 ; N m ; B 11 -10 698 447 ; -C 110 ; WX 500 ; N n ; B 23 -10 471 447 ; -C 111 ; WX 500 ; N o ; B 27 -13 467 448 ; -C 112 ; WX 500 ; N p ; B -75 -206 465 446 ; -C 113 ; WX 500 ; N q ; B 20 -206 483 445 ; -C 114 ; WX 389 ; N r ; B 24 0 392 446 ; -C 115 ; WX 389 ; N s ; B 16 -14 367 446 ; -C 116 ; WX 278 ; N t ; B 38 -10 288 548 ; -C 117 ; WX 500 ; N u ; B 42 -11 472 447 ; -C 118 ; WX 444 ; N v ; B 24 -11 423 444 ; -C 119 ; WX 667 ; N w ; B 14 -10 650 447 ; -C 120 ; WX 444 ; N x ; B -31 -10 450 446 ; -C 121 ; WX 444 ; N y ; B -27 -209 420 445 ; -C 122 ; WX 389 ; N z ; B 2 0 380 434 ; -C 123 ; WX 400 ; N braceleft ; B 65 -179 411 675 ; -C 124 ; WX 275 ; N bar ; B -22 -188 251 670 ; -C 125 ; WX 400 ; N braceright ; B -66 -179 300 675 ; -C 126 ; WX 541 ; N asciitilde ; B 18 169 522 340 ; -C 161 ; WX 389 ; N exclamdown ; B 59 -213 317 468 ; -C 162 ; WX 500 ; N cent ; B 62 -146 449 564 ; -C 163 ; WX 500 ; N sterling ; B -5 -9 498 672 ; -C 164 ; WX 167 ; N fraction ; B -176 -15 338 672 ; -C 165 ; WX 500 ; N yen ; B 13 0 609 684 ; -C 166 ; WX 500 ; N florin ; B 3 -189 492 688 ; -C 167 ; WX 500 ; N section ; B 42 -96 455 743 ; -C 168 ; WX 500 ; N currency ; B 3 105 498 604 ; -C 169 ; WX 214 ; N quotesingle ; B 99 453 247 678 ; -C 170 ; WX 556 ; N quotedblleft ; B 166 457 510 677 ; -C 171 ; WX 500 ; N guillemotleft ; B 54 39 444 400 ; -C 172 ; WX 333 ; N guilsinglleft ; B 60 39 285 400 ; -C 173 ; WX 333 ; N guilsinglright ; B 49 34 269 406 ; -C 174 ; WX 500 ; N fi ; B -136 -207 468 684 ; -C 175 ; WX 500 ; N fl ; B -140 -207 509 684 ; -C 177 ; WX 500 ; N endash ; B -3 194 501 242 ; -C 178 ; WX 500 ; N dagger ; B 92 -93 480 734 ; -C 179 ; WX 500 ; N daggerdbl ; B 20 -93 482 743 ; -C 180 ; WX 250 ; N periodcentered ; B 75 192 199 316 ; -C 182 ; WX 523 ; N paragraph ; B 87 -196 533 675 ; -C 183 ; WX 350 ; N bullet ; B 50 175 300 425 ; -C 184 ; WX 333 ; N quotesinglbase ; B 83 -126 220 94 ; -C 185 ; WX 556 ; N quotedblbase ; B 63 -126 407 94 ; -C 186 ; WX 556 ; N quotedblright ; B 68 458 412 678 ; -C 187 ; WX 500 ; N guillemotright ; B 59 34 442 406 ; -C 188 ; WX 889 ; N ellipsis ; B 62 -10 828 90 ; -C 189 ; WX 1000 ; N perthousand ; B 9 -65 990 690 ; -C 191 ; WX 500 ; N questiondown ; B 55 -215 395 462 ; -C 193 ; WX 333 ; N grave ; B 160 491 333 659 ; -C 194 ; WX 333 ; N acute ; B 154 501 375 680 ; -C 195 ; WX 333 ; N circumflex ; B 96 495 374 669 ; -C 196 ; WX 333 ; N tilde ; B 114 518 386 639 ; -C 197 ; WX 333 ; N macron ; B 120 543 380 603 ; -C 198 ; WX 333 ; N breve ; B 140 512 401 645 ; -C 199 ; WX 333 ; N dotaccent ; B 112 515 222 625 ; -C 200 ; WX 333 ; N dieresis ; B 117 534 389 634 ; -C 202 ; WX 333 ; N ring ; B 239 509 433 703 ; -C 203 ; WX 333 ; N cedilla ; B -30 -206 214 0 ; -C 205 ; WX 333 ; N hungarumlaut ; B 62 532 348 749 ; -C 206 ; WX 333 ; N ogonek ; B -44 -159 169 40 ; -C 207 ; WX 333 ; N caron ; B 138 495 422 669 ; -C 208 ; WX 889 ; N emdash ; B -65 194 945 242 ; -C 225 ; WX 889 ; N AE ; B -46 0 889 660 ; -C 227 ; WX 276 ; N ordfeminine ; B 32 300 310 677 ; -C 232 ; WX 556 ; N Lslash ; B 0 0 567 660 ; -C 233 ; WX 722 ; N Oslash ; B 40 -110 683 738 ; -C 234 ; WX 944 ; N OE ; B 30 -10 943 668 ; -C 235 ; WX 310 ; N ordmasculine ; B 45 301 310 679 ; -C 241 ; WX 667 ; N ae ; B 24 -12 638 448 ; -C 245 ; WX 278 ; N dotlessi ; B 47 -10 226 447 ; -C 248 ; WX 278 ; N lslash ; B 0 -10 264 685 ; -C 249 ; WX 500 ; N oslash ; B 28 -132 468 560 ; -C 250 ; WX 667 ; N oe ; B 26 -15 643 445 ; -C 251 ; WX 500 ; N germandbls ; B -167 -209 492 684 ; -C -1 ; WX 611 ; N Aacute ; B -45 0 564 907 ; -C -1 ; WX 611 ; N Acircumflex ; B -45 0 564 896 ; -C -1 ; WX 611 ; N Adieresis ; B -45 0 564 861 ; -C -1 ; WX 611 ; N Agrave ; B -45 0 564 886 ; -C -1 ; WX 611 ; N Aring ; B -45 0 564 930 ; -C -1 ; WX 611 ; N Atilde ; B -45 0 564 866 ; -C -1 ; WX 667 ; N Ccedilla ; B 33 -206 653 672 ; -C -1 ; WX 611 ; N Eacute ; B -17 0 609 907 ; -C -1 ; WX 611 ; N Ecircumflex ; B -17 0 609 896 ; -C -1 ; WX 611 ; N Edieresis ; B -17 0 609 861 ; -C -1 ; WX 611 ; N Egrave ; B -17 0 609 886 ; -C -1 ; WX 722 ; N Eth ; B -27 0 671 660 ; -C -1 ; WX 333 ; N Iacute ; B -26 0 389 907 ; -C -1 ; WX 333 ; N Icircumflex ; B -26 0 388 896 ; -C -1 ; WX 333 ; N Idieresis ; B -26 0 403 861 ; -C -1 ; WX 333 ; N Igrave ; B -26 0 357 886 ; -C -1 ; WX 667 ; N Ntilde ; B -36 -12 698 866 ; -C -1 ; WX 722 ; N Oacute ; B 42 -23 676 907 ; -C -1 ; WX 722 ; N Ocircumflex ; B 42 -23 676 896 ; -C -1 ; WX 722 ; N Odieresis ; B 42 -23 676 861 ; -C -1 ; WX 722 ; N Ograve ; B 42 -23 676 886 ; -C -1 ; WX 722 ; N Otilde ; B 42 -23 676 866 ; -C -1 ; WX 500 ; N Scaron ; B 9 -22 506 896 ; -C -1 ; WX 611 ; N Thorn ; B -16 0 547 660 ; -C -1 ; WX 722 ; N Uacute ; B 77 -21 747 907 ; -C -1 ; WX 722 ; N Ucircumflex ; B 77 -21 747 896 ; -C -1 ; WX 722 ; N Udieresis ; B 77 -21 747 861 ; -C -1 ; WX 722 ; N Ugrave ; B 77 -21 747 886 ; -C -1 ; WX 556 ; N Yacute ; B 44 0 600 894 ; -C -1 ; WX 556 ; N Ydieresis ; B 44 0 600 861 ; -C -1 ; WX 556 ; N Zcaron ; B -19 0 581 896 ; -C -1 ; WX 500 ; N aacute ; B 15 -11 474 680 ; -C -1 ; WX 500 ; N acircumflex ; B 15 -11 474 669 ; -C -1 ; WX 500 ; N adieresis ; B 15 -11 479 634 ; -C -1 ; WX 500 ; N agrave ; B 15 -11 474 659 ; -C -1 ; WX 500 ; N aring ; B 15 -11 474 703 ; -C -1 ; WX 500 ; N atilde ; B 15 -11 476 639 ; -C -1 ; WX 275 ; N brokenbar ; B -22 -188 251 670 ; -C -1 ; WX 444 ; N ccedilla ; B 32 -206 420 446 ; -C -1 ; WX 760 ; N copyright ; B 40 -22 719 672 ; -C -1 ; WX 400 ; N degree ; B 70 384 370 684 ; -C -1 ; WX 675 ; N divide ; B 85 0 589 505 ; -C -1 ; WX 444 ; N eacute ; B 34 -13 444 680 ; -C -1 ; WX 444 ; N ecircumflex ; B 34 -13 443 669 ; -C -1 ; WX 444 ; N edieresis ; B 34 -13 458 634 ; -C -1 ; WX 444 ; N egrave ; B 34 -13 412 659 ; -C -1 ; WX 500 ; N eth ; B 27 -13 487 682 ; -C -1 ; WX 278 ; N iacute ; B 47 -10 341 680 ; -C -1 ; WX 278 ; N icircumflex ; B 47 -10 340 669 ; -C -1 ; WX 278 ; N idieresis ; B 47 -10 355 634 ; -C -1 ; WX 278 ; N igrave ; B 47 -10 299 659 ; -C -1 ; WX 675 ; N logicalnot ; B 85 113 589 383 ; -C -1 ; WX 675 ; N minus ; B 85 222 589 286 ; -C -1 ; WX 500 ; N mu ; B -60 -206 472 446 ; -C -1 ; WX 675 ; N multiply ; B 85 0 589 504 ; -C -1 ; WX 500 ; N ntilde ; B 23 -10 471 639 ; -C -1 ; WX 500 ; N oacute ; B 27 -13 467 680 ; -C -1 ; WX 500 ; N ocircumflex ; B 27 -13 467 669 ; -C -1 ; WX 500 ; N odieresis ; B 27 -13 479 634 ; -C -1 ; WX 500 ; N ograve ; B 27 -13 467 659 ; -C -1 ; WX 750 ; N onehalf ; B 30 -15 720 684 ; -C -1 ; WX 750 ; N onequarter ; B 30 -15 720 684 ; -C -1 ; WX 300 ; N onesuperior ; B 43 274 277 683 ; -C -1 ; WX 500 ; N otilde ; B 27 -13 476 639 ; -C -1 ; WX 675 ; N plusminus ; B 85 0 589 645 ; -C -1 ; WX 760 ; N registered ; B 40 -22 719 672 ; -C -1 ; WX 389 ; N scaron ; B 16 -14 450 669 ; -C -1 ; WX 500 ; N thorn ; B -75 -206 465 682 ; -C -1 ; WX 750 ; N threequarters ; B 30 -15 720 684 ; -C -1 ; WX 300 ; N threesuperior ; B 13 267 306 684 ; -C -1 ; WX 980 ; N trademark ; B 35 268 945 672 ; -C -1 ; WX 300 ; N twosuperior ; B 8 274 292 684 ; -C -1 ; WX 500 ; N uacute ; B 42 -11 472 680 ; -C -1 ; WX 500 ; N ucircumflex ; B 42 -11 472 669 ; -C -1 ; WX 500 ; N udieresis ; B 42 -11 473 634 ; -C -1 ; WX 500 ; N ugrave ; B 42 -11 472 659 ; -C -1 ; WX 444 ; N yacute ; B -27 -209 431 680 ; -C -1 ; WX 444 ; N ydieresis ; B -27 -209 445 634 ; -C -1 ; WX 389 ; N zcaron ; B 2 0 450 669 ; -EndCharMetrics -StartKernData -StartKernPairs 120 - -KPX A y -55 -KPX A w -55 -KPX A v -55 -KPX A space -18 -KPX A quoteright -37 -KPX A Y -55 -KPX A W -37 -KPX A V -50 -KPX A T -37 - -KPX F period -129 -KPX F comma -129 -KPX F A -129 - -KPX L y -30 -KPX L space -18 -KPX L quoteright -37 -KPX L Y -20 -KPX L W -37 -KPX L V -37 -KPX L T -20 - -KPX P space -18 -KPX P period -129 -KPX P comma -129 -KPX P A -129 - -KPX R y -18 -KPX R Y -18 -KPX R W -18 -KPX R V -18 -KPX R T 0 - -KPX T y -74 -KPX T w -74 -KPX T u -55 -KPX T space -18 -KPX T semicolon -65 -KPX T s -92 -KPX T r -55 -KPX T period -74 -KPX T o -92 -KPX T i -55 -KPX T hyphen -74 -KPX T e -92 -KPX T comma -74 -KPX T colon -55 -KPX T c -92 -KPX T a -92 -KPX T O -18 -KPX T A -74 - -KPX V y -92 -KPX V u -74 -KPX V space -18 -KPX V semicolon -74 -KPX V r -74 -KPX V period -129 -KPX V o -111 -KPX V i -74 -KPX V hyphen -55 -KPX V e -111 -KPX V comma -129 -KPX V colon -65 -KPX V a -111 -KPX V O -30 -KPX V A -74 - -KPX W y -92 -KPX W u -55 -KPX W semicolon -65 -KPX W r -55 -KPX W period -92 -KPX W o -92 -KPX W i -55 -KPX W hyphen -37 -KPX W e -92 -KPX W comma -92 -KPX W colon -65 -KPX W a -92 -KPX W A -70 - -KPX Y v -92 -KPX Y u -92 -KPX Y semicolon -65 -KPX Y q -111 -KPX Y period -92 -KPX Y p -92 -KPX Y o -92 -KPX Y i -74 -KPX Y hyphen -74 -KPX Y e -92 -KPX Y comma -92 -KPX Y colon -65 -KPX Y a -92 -KPX Y A -70 - -KPX f quoteright 92 - -KPX one one -74 - -KPX quoteleft quoteleft -111 - -KPX quoteright t -111 -KPX quoteright space -111 -KPX quoteright s -129 -KPX quoteright quoteright -111 - -KPX r y 0 -KPX r x 0 -KPX r w 0 -KPX r v 0 -KPX r u 0 -KPX r t 0 -KPX r r 0 -KPX r quoteright 37 -KPX r q -37 -KPX r period -111 -KPX r o -37 -KPX r hyphen -20 -KPX r h -18 -KPX r g -37 -KPX r e -37 -KPX r d -37 -KPX r comma -111 -KPX r c -37 - -KPX space A -18 - -KPX v period -74 -KPX v comma -74 - -KPX w period -74 -KPX w comma -74 - -KPX y period -55 -KPX y comma -55 -EndKernPairs -EndKernData -StartComposites 56 -CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 111 227 ; -CC zcaron 2 ; PCC z 0 0 ; PCC caron 28 0 ; -CC Scaron 2 ; PCC S 0 0 ; PCC caron 83 227 ; -CC scaron 2 ; PCC s 0 0 ; PCC caron 28 0 ; -CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 188 0 ; -CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 61 0 ; -CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 111 227 ; -CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 55 0 ; -CC Uacute 2 ; PCC U 0 0 ; PCC acute 228 227 ; -CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 228 227 ; -CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 228 227 ; -CC Ugrave 2 ; PCC U 0 0 ; PCC grave 228 227 ; -CC uacute 2 ; PCC u 0 0 ; PCC acute 83 0 ; -CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 83 0 ; -CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 83 0 ; -CC ugrave 2 ; PCC u 0 0 ; PCC grave 83 0 ; -CC Iacute 2 ; PCC I 0 0 ; PCC acute 14 227 ; -CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 14 227 ; -CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 14 227 ; -CC Igrave 2 ; PCC I 0 0 ; PCC grave 14 227 ; -CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -34 0 ; -CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -34 0 ; -CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -34 0 ; -CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -34 0 ; -CC Eacute 2 ; PCC E 0 0 ; PCC acute 160 227 ; -CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 160 227 ; -CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 160 227 ; -CC Egrave 2 ; PCC E 0 0 ; PCC grave 160 227 ; -CC eacute 2 ; PCC e 0 0 ; PCC acute 68 0 ; -CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 68 0 ; -CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 68 0 ; -CC egrave 2 ; PCC e 0 0 ; PCC grave 68 0 ; -CC Aacute 2 ; PCC A 0 0 ; PCC acute 146 227 ; -CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 146 227 ; -CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 146 227 ; -CC Agrave 2 ; PCC A 0 0 ; PCC grave 146 227 ; -CC aacute 2 ; PCC a 0 0 ; PCC acute 89 0 ; -CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 89 0 ; -CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 89 0 ; -CC agrave 2 ; PCC a 0 0 ; PCC grave 89 0 ; -CC Oacute 2 ; PCC O 0 0 ; PCC acute 221 227 ; -CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 221 227 ; -CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 221 227 ; -CC Ograve 2 ; PCC O 0 0 ; PCC grave 221 227 ; -CC oacute 2 ; PCC o 0 0 ; PCC acute 89 0 ; -CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 89 0 ; -CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 89 0 ; -CC ograve 2 ; PCC o 0 0 ; PCC grave 89 0 ; -CC Atilde 2 ; PCC A 0 0 ; PCC tilde 146 227 ; -CC atilde 2 ; PCC a 0 0 ; PCC tilde 89 0 ; -CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 181 227 ; -CC ntilde 2 ; PCC n 0 0 ; PCC tilde 76 0 ; -CC Otilde 2 ; PCC O 0 0 ; PCC tilde 221 227 ; -CC otilde 2 ; PCC o 0 0 ; PCC tilde 89 0 ; -CC Aring 2 ; PCC A 0 0 ; PCC ring 80 227 ; -CC aring 2 ; PCC a 0 0 ; PCC ring 29 0 ; -EndComposites -EndFontMetrics diff --git a/misc/afm/TimesRo.afm b/misc/afm/TimesRo.afm deleted file mode 100644 index 3f8ce6b22a..0000000000 --- a/misc/afm/TimesRo.afm +++ /dev/null @@ -1,443 +0,0 @@ -StartFontMetrics 2.0 -Comment Copyright (c) 1984 Adobe Systems Incorporated. All Rights Reserved. -Comment Creation Date:Tue Aug 5 10:51:57 PDT 1986 -FontName Times-Roman -EncodingScheme AdobeStandardEncoding -FullName Times Roman -FamilyName Times -Weight Roman -ItalicAngle 0.0 -IsFixedPitch false -UnderlinePosition -109 -UnderlineThickness 49 -Version 001.001 -Notice Times Roman is a trademark of Allied Corporation. -FontBBox -170 -223 1024 896 -CapHeight 662 -XHeight 448 -Descender -217 -Ascender 682 -StartCharMetrics 228 -C 32 ; WX 250 ; N space ; B 0 0 0 0 ; -C 33 ; WX 333 ; N exclam ; B 109 -14 224 676 ; -C 34 ; WX 408 ; N quotedbl ; B 70 445 337 685 ; -C 35 ; WX 500 ; N numbersign ; B 4 0 495 662 ; -C 36 ; WX 500 ; N dollar ; B 44 -87 456 727 ; -C 37 ; WX 833 ; N percent ; B 61 -14 772 676 ; -C 38 ; WX 778 ; N ampersand ; B 42 -14 750 676 ; -C 39 ; WX 333 ; N quoteright ; B 103 432 242 676 ; -C 40 ; WX 333 ; N parenleft ; B 49 -177 304 676 ; -C 41 ; WX 333 ; N parenright ; B 29 -177 284 676 ; -C 42 ; WX 500 ; N asterisk ; B 64 265 437 683 ; -C 43 ; WX 564 ; N plus ; B 30 7 534 512 ; -C 44 ; WX 250 ; N comma ; B 63 -143 202 101 ; -C 45 ; WX 333 ; N hyphen ; B 43 194 289 257 ; -C 46 ; WX 250 ; N period ; B 68 -14 183 101 ; -C 47 ; WX 278 ; N slash ; B -12 -108 302 682 ; -C 48 ; WX 500 ; N zero ; B 24 -14 476 676 ; -C 49 ; WX 500 ; N one ; B 111 0 394 676 ; -C 50 ; WX 500 ; N two ; B 30 0 475 676 ; -C 51 ; WX 500 ; N three ; B 44 -14 431 676 ; -C 52 ; WX 500 ; N four ; B 12 0 472 676 ; -C 53 ; WX 500 ; N five ; B 32 -14 438 688 ; -C 54 ; WX 500 ; N six ; B 35 -14 468 682 ; -C 55 ; WX 500 ; N seven ; B 20 -14 449 662 ; -C 56 ; WX 500 ; N eight ; B 53 -14 442 676 ; -C 57 ; WX 500 ; N nine ; B 30 -22 460 676 ; -C 58 ; WX 278 ; N colon ; B 81 -14 196 458 ; -C 59 ; WX 278 ; N semicolon ; B 63 -143 202 458 ; -C 60 ; WX 564 ; N less ; B 27 0 536 522 ; -C 61 ; WX 564 ; N equal ; B 30 132 534 390 ; -C 62 ; WX 564 ; N greater ; B 27 0 536 522 ; -C 63 ; WX 444 ; N question ; B 49 -14 395 676 ; -C 64 ; WX 921 ; N at ; B 0 -155 819 675 ; -C 65 ; WX 722 ; N A ; B 15 0 706 676 ; -C 66 ; WX 667 ; N B ; B 20 0 596 662 ; -C 67 ; WX 667 ; N C ; B 33 -14 637 676 ; -C 68 ; WX 722 ; N D ; B 20 0 689 662 ; -C 69 ; WX 611 ; N E ; B 12 0 597 662 ; -C 70 ; WX 556 ; N F ; B 12 0 544 662 ; -C 71 ; WX 722 ; N G ; B 27 -14 704 676 ; -C 72 ; WX 722 ; N H ; B 20 0 703 662 ; -C 73 ; WX 333 ; N I ; B 18 0 316 662 ; -C 74 ; WX 389 ; N J ; B 10 -14 376 662 ; -C 75 ; WX 722 ; N K ; B 20 0 709 662 ; -C 76 ; WX 611 ; N L ; B 12 0 598 662 ; -C 77 ; WX 889 ; N M ; B 19 0 871 662 ; -C 78 ; WX 722 ; N N ; B 12 -14 709 662 ; -C 79 ; WX 722 ; N O ; B 33 -14 688 676 ; -C 80 ; WX 556 ; N P ; B 11 0 542 662 ; -C 81 ; WX 722 ; N Q ; B 33 -177 701 676 ; -C 82 ; WX 667 ; N R ; B 12 0 654 662 ; -C 83 ; WX 556 ; N S ; B 42 -14 491 676 ; -C 84 ; WX 611 ; N T ; B 18 0 594 662 ; -C 85 ; WX 722 ; N U ; B 16 -14 705 662 ; -C 86 ; WX 722 ; N V ; B 20 -14 701 662 ; -C 87 ; WX 944 ; N W ; B 9 -14 936 662 ; -C 88 ; WX 722 ; N X ; B 12 0 706 662 ; -C 89 ; WX 722 ; N Y ; B 22 0 703 662 ; -C 90 ; WX 611 ; N Z ; B 7 0 597 662 ; -C 91 ; WX 333 ; N bracketleft ; B 88 -156 299 662 ; -C 92 ; WX 278 ; N backslash ; B -83 0 361 682 ; -C 93 ; WX 333 ; N bracketright ; B 34 -156 245 662 ; -C 94 ; WX 469 ; N asciicircum ; B 13 256 456 662 ; -C 95 ; WX 500 ; N underscore ; B 0 -133 500 -84 ; -C 96 ; WX 333 ; N quoteleft ; B 91 432 230 676 ; -C 97 ; WX 444 ; N a ; B 37 -10 442 458 ; -C 98 ; WX 500 ; N b ; B 9 -10 474 682 ; -C 99 ; WX 444 ; N c ; B 25 -10 412 458 ; -C 100 ; WX 500 ; N d ; B 26 -13 491 682 ; -C 101 ; WX 444 ; N e ; B 22 -10 421 458 ; -C 102 ; WX 333 ; N f ; B 20 0 383 682 ; L i fi ; L l fl ; -C 103 ; WX 500 ; N g ; B 27 -217 470 458 ; -C 104 ; WX 500 ; N h ; B 9 0 490 682 ; -C 105 ; WX 278 ; N i ; B 22 0 259 682 ; -C 106 ; WX 278 ; N j ; B -54 -217 212 682 ; -C 107 ; WX 500 ; N k ; B 1 0 500 682 ; -C 108 ; WX 278 ; N l ; B 20 0 259 682 ; -C 109 ; WX 778 ; N m ; B 13 0 764 458 ; -C 110 ; WX 500 ; N n ; B 9 0 490 458 ; -C 111 ; WX 500 ; N o ; B 30 -10 470 458 ; -C 112 ; WX 500 ; N p ; B 2 -217 470 458 ; -C 113 ; WX 500 ; N q ; B 24 -217 498 459 ; -C 114 ; WX 333 ; N r ; B 4 0 335 458 ; -C 115 ; WX 389 ; N s ; B 51 -10 348 458 ; -C 116 ; WX 278 ; N t ; B 13 -10 279 580 ; -C 117 ; WX 500 ; N u ; B 9 -10 479 448 ; -C 118 ; WX 500 ; N v ; B 10 -10 468 448 ; -C 119 ; WX 722 ; N w ; B 21 -10 694 448 ; -C 120 ; WX 500 ; N x ; B 17 0 479 448 ; -C 121 ; WX 500 ; N y ; B 15 -217 476 448 ; -C 122 ; WX 444 ; N z ; B 25 0 418 448 ; -C 123 ; WX 480 ; N braceleft ; B 110 -165 341 682 ; -C 124 ; WX 200 ; N bar ; B 68 0 132 682 ; -C 125 ; WX 480 ; N braceright ; B 139 -165 370 682 ; -C 126 ; WX 541 ; N asciitilde ; B 18 176 522 347 ; -C 161 ; WX 333 ; N exclamdown ; B 109 -217 224 458 ; -C 162 ; WX 500 ; N cent ; B 53 -138 448 579 ; -C 163 ; WX 500 ; N sterling ; B 11 -14 491 676 ; -C 164 ; WX 167 ; N fraction ; B -170 -14 346 676 ; -C 165 ; WX 500 ; N yen ; B -43 0 502 662 ; -C 166 ; WX 500 ; N florin ; B 6 -185 490 676 ; -C 167 ; WX 500 ; N section ; B 72 -148 426 676 ; -C 168 ; WX 500 ; N currency ; B -2 99 503 600 ; -C 169 ; WX 180 ; N quotesingle ; B 47 445 133 685 ; -C 170 ; WX 444 ; N quotedblleft ; B 27 432 399 676 ; -C 171 ; WX 500 ; N guillemotleft ; B 32 35 449 422 ; -C 172 ; WX 333 ; N guilsinglleft ; B 45 35 271 422 ; -C 173 ; WX 333 ; N guilsinglright ; B 62 36 288 423 ; -C 174 ; WX 556 ; N fi ; B 33 0 521 678 ; -C 175 ; WX 556 ; N fl ; B 29 0 521 682 ; -C 177 ; WX 500 ; N endash ; B -7 201 507 250 ; -C 178 ; WX 500 ; N dagger ; B 54 -149 440 676 ; -C 179 ; WX 500 ; N daggerdbl ; B 54 -153 439 676 ; -C 180 ; WX 250 ; N periodcentered ; B 68 204 183 319 ; -C 182 ; WX 453 ; N paragraph ; B 0 -207 373 662 ; -C 183 ; WX 350 ; N bullet ; B 50 175 300 425 ; -C 184 ; WX 333 ; N quotesinglbase ; B 103 -143 242 101 ; -C 185 ; WX 444 ; N quotedblbase ; B 45 -143 417 101 ; -C 186 ; WX 444 ; N quotedblright ; B 45 432 417 676 ; -C 187 ; WX 500 ; N guillemotright ; B 51 35 468 422 ; -C 188 ; WX 1000 ; N ellipsis ; B 110 -14 891 101 ; -C 189 ; WX 1000 ; N perthousand ; B 3 -14 1024 676 ; -C 191 ; WX 444 ; N questiondown ; B 49 -217 395 458 ; -C 193 ; WX 333 ; N grave ; B 16 507 243 678 ; -C 194 ; WX 333 ; N acute ; B 93 507 317 678 ; -C 195 ; WX 333 ; N circumflex ; B 11 507 323 674 ; -C 196 ; WX 333 ; N tilde ; B 1 532 332 638 ; -C 197 ; WX 333 ; N macron ; B 11 547 323 601 ; -C 198 ; WX 333 ; N breve ; B 26 507 308 664 ; -C 199 ; WX 333 ; N dotaccent ; B 116 523 216 623 ; -C 200 ; WX 333 ; N dieresis ; B 18 523 316 623 ; -C 202 ; WX 333 ; N ring ; B 67 483 266 682 ; -C 203 ; WX 333 ; N cedilla ; B 53 -215 262 0 ; -C 205 ; WX 333 ; N hungarumlaut ; B 8 528 372 700 ; -C 206 ; WX 333 ; N ogonek ; B 68 -155 245 -10 ; -C 207 ; WX 333 ; N caron ; B 11 507 323 674 ; -C 208 ; WX 1000 ; N emdash ; B -8 201 1007 250 ; -C 225 ; WX 889 ; N AE ; B 5 0 869 662 ; -C 227 ; WX 276 ; N ordfeminine ; B 15 307 278 676 ; -C 232 ; WX 611 ; N Lslash ; B 12 0 598 662 ; -C 233 ; WX 722 ; N Oslash ; B 33 -80 688 734 ; -C 234 ; WX 889 ; N OE ; B 21 -7 877 669 ; -C 235 ; WX 310 ; N ordmasculine ; B 15 307 301 676 ; -C 241 ; WX 667 ; N ae ; B 38 -10 634 458 ; -C 245 ; WX 278 ; N dotlessi ; B 22 0 259 458 ; -C 248 ; WX 278 ; N lslash ; B 20 0 259 682 ; -C 249 ; WX 500 ; N oslash ; B 30 -108 470 549 ; -C 250 ; WX 722 ; N oe ; B 30 -10 690 458 ; -C 251 ; WX 500 ; N germandbls ; B 12 -10 468 682 ; -C -1 ; WX 722 ; N Aacute ; B 15 0 706 892 ; -C -1 ; WX 722 ; N Acircumflex ; B 15 0 706 888 ; -C -1 ; WX 722 ; N Adieresis ; B 15 0 706 837 ; -C -1 ; WX 722 ; N Agrave ; B 15 0 706 892 ; -C -1 ; WX 722 ; N Aring ; B 15 0 706 896 ; -C -1 ; WX 722 ; N Atilde ; B 15 0 706 852 ; -C -1 ; WX 667 ; N Ccedilla ; B 33 -215 637 676 ; -C -1 ; WX 611 ; N Eacute ; B 12 0 597 892 ; -C -1 ; WX 611 ; N Ecircumflex ; B 12 0 597 888 ; -C -1 ; WX 611 ; N Edieresis ; B 12 0 597 837 ; -C -1 ; WX 611 ; N Egrave ; B 12 0 597 892 ; -C -1 ; WX 722 ; N Eth ; B 20 0 689 662 ; -C -1 ; WX 333 ; N Iacute ; B 18 0 317 892 ; -C -1 ; WX 333 ; N Icircumflex ; B 11 0 323 888 ; -C -1 ; WX 333 ; N Idieresis ; B 18 0 316 837 ; -C -1 ; WX 333 ; N Igrave ; B 16 0 316 892 ; -C -1 ; WX 722 ; N Ntilde ; B 12 -14 709 852 ; -C -1 ; WX 722 ; N Oacute ; B 33 -14 688 892 ; -C -1 ; WX 722 ; N Ocircumflex ; B 33 -14 688 888 ; -C -1 ; WX 722 ; N Odieresis ; B 33 -14 688 837 ; -C -1 ; WX 722 ; N Ograve ; B 33 -14 688 892 ; -C -1 ; WX 722 ; N Otilde ; B 33 -14 688 852 ; -C -1 ; WX 556 ; N Scaron ; B 42 -14 491 888 ; -C -1 ; WX 556 ; N Thorn ; B 11 0 542 662 ; -C -1 ; WX 722 ; N Uacute ; B 16 -14 705 892 ; -C -1 ; WX 722 ; N Ucircumflex ; B 16 -14 705 888 ; -C -1 ; WX 722 ; N Udieresis ; B 16 -14 705 837 ; -C -1 ; WX 722 ; N Ugrave ; B 16 -14 705 892 ; -C -1 ; WX 722 ; N Yacute ; B 22 0 703 892 ; -C -1 ; WX 722 ; N Ydieresis ; B 22 0 703 837 ; -C -1 ; WX 611 ; N Zcaron ; B 7 0 597 888 ; -C -1 ; WX 444 ; N aacute ; B 37 -10 442 678 ; -C -1 ; WX 444 ; N acircumflex ; B 37 -10 442 674 ; -C -1 ; WX 444 ; N adieresis ; B 37 -10 442 623 ; -C -1 ; WX 444 ; N agrave ; B 37 -10 442 678 ; -C -1 ; WX 444 ; N aring ; B 37 -10 442 682 ; -C -1 ; WX 444 ; N atilde ; B 37 -10 442 638 ; -C -1 ; WX 200 ; N brokenbar ; B 68 0 132 682 ; -C -1 ; WX 444 ; N ccedilla ; B 25 -215 412 458 ; -C -1 ; WX 760 ; N copyright ; B 42 -14 717 676 ; -C -1 ; WX 400 ; N degree ; B 50 376 350 676 ; -C -1 ; WX 564 ; N divide ; B 30 10 534 512 ; -C -1 ; WX 444 ; N eacute ; B 22 -10 421 678 ; -C -1 ; WX 444 ; N ecircumflex ; B 22 -10 421 674 ; -C -1 ; WX 444 ; N edieresis ; B 22 -10 421 623 ; -C -1 ; WX 444 ; N egrave ; B 22 -10 421 678 ; -C -1 ; WX 500 ; N eth ; B 30 -10 470 682 ; -C -1 ; WX 278 ; N iacute ; B 22 0 290 678 ; -C -1 ; WX 278 ; N icircumflex ; B -16 0 296 674 ; -C -1 ; WX 278 ; N idieresis ; B -9 0 289 623 ; -C -1 ; WX 278 ; N igrave ; B -11 0 259 678 ; -C -1 ; WX 564 ; N logicalnot ; B 30 120 534 390 ; -C -1 ; WX 564 ; N minus ; B 30 229 534 293 ; -C -1 ; WX 500 ; N mu ; B 9 -223 479 448 ; -C -1 ; WX 564 ; N multiply ; B 30 8 534 512 ; -C -1 ; WX 500 ; N ntilde ; B 9 0 490 638 ; -C -1 ; WX 500 ; N oacute ; B 30 -10 470 678 ; -C -1 ; WX 500 ; N ocircumflex ; B 30 -10 470 674 ; -C -1 ; WX 500 ; N odieresis ; B 30 -10 470 623 ; -C -1 ; WX 500 ; N ograve ; B 30 -10 470 678 ; -C -1 ; WX 750 ; N onehalf ; B 30 -14 720 676 ; -C -1 ; WX 750 ; N onequarter ; B 30 -14 720 676 ; -C -1 ; WX 300 ; N onesuperior ; B 58 270 242 676 ; -C -1 ; WX 500 ; N otilde ; B 30 -10 470 638 ; -C -1 ; WX 564 ; N plusminus ; B 30 0 534 612 ; -C -1 ; WX 760 ; N registered ; B 43 -14 718 676 ; -C -1 ; WX 389 ; N scaron ; B 39 -10 351 674 ; -C -1 ; WX 500 ; N thorn ; B 2 -217 470 682 ; -C -1 ; WX 750 ; N threequarters ; B 30 -14 720 676 ; -C -1 ; WX 300 ; N threesuperior ; B 24 262 275 676 ; -C -1 ; WX 980 ; N trademark ; B 35 258 945 662 ; -C -1 ; WX 300 ; N twosuperior ; B 5 270 294 676 ; -C -1 ; WX 500 ; N uacute ; B 9 -10 479 678 ; -C -1 ; WX 500 ; N ucircumflex ; B 9 -10 479 674 ; -C -1 ; WX 500 ; N udieresis ; B 9 -10 479 623 ; -C -1 ; WX 500 ; N ugrave ; B 9 -10 479 678 ; -C -1 ; WX 500 ; N yacute ; B 15 -217 476 678 ; -C -1 ; WX 500 ; N ydieresis ; B 15 -217 476 623 ; -C -1 ; WX 444 ; N zcaron ; B 25 0 418 674 ; -EndCharMetrics -StartKernData -StartKernPairs 113 - -KPX A y -92 -KPX A w -92 -KPX A v -74 -KPX A space -55 -KPX A quoteright -111 -KPX A Y -92 -KPX A W -80 -KPX A V -129 -KPX A T -111 - -KPX F period -80 -KPX F comma -80 -KPX F A -74 - -KPX L y -55 -KPX L space -37 -KPX L quoteright -92 -KPX L Y -100 -KPX L W -74 -KPX L V -92 -KPX L T -92 - -KPX P space -37 -KPX P period -111 -KPX P comma -111 -KPX P A -92 - -KPX R y -40 -KPX R Y -55 -KPX R W -55 -KPX R V -80 -KPX R T -60 - -KPX T y -70 -KPX T w -70 -KPX T u -35 -KPX T space -18 -KPX T semicolon -55 -KPX T s -70 -KPX T r -35 -KPX T period -74 -KPX T o -70 -KPX T i -35 -KPX T hyphen -92 -KPX T e -70 -KPX T comma -74 -KPX T colon -50 -KPX T c -70 -KPX T a -70 -KPX T O -18 -KPX T A -80 - -KPX V y -111 -KPX V u -60 -KPX V space -18 -KPX V semicolon -74 -KPX V r -60 -KPX V period -129 -KPX V o -129 -KPX V i -60 -KPX V hyphen -92 -KPX V e -111 -KPX V comma -129 -KPX V colon -74 -KPX V a -111 -KPX V A -129 - -KPX W y -60 -KPX W u -40 -KPX W space -18 -KPX W semicolon -37 -KPX W r -40 -KPX W period -92 -KPX W o -80 -KPX W i -40 -KPX W hyphen -55 -KPX W e -80 -KPX W comma -92 -KPX W colon -37 -KPX W a -80 -KPX W A -111 - -KPX Y v -100 -KPX Y u -111 -KPX Y space -37 -KPX Y semicolon -92 -KPX Y q -111 -KPX Y period -129 -KPX Y p -92 -KPX Y o -100 -KPX Y i -55 -KPX Y hyphen -111 -KPX Y e -100 -KPX Y comma -129 -KPX Y colon -92 -KPX Y a -100 -KPX Y A -111 - -KPX f quoteright 55 -KPX f f -18 - -KPX one one -37 - -KPX quoteleft quoteleft -74 - -KPX quoteright t -18 -KPX quoteright space -74 -KPX quoteright s -55 -KPX quoteright quoteright -74 - -KPX r quoteright 37 -KPX r period -55 -KPX r hyphen -20 -KPX r g -18 -KPX r comma -40 - -KPX space Y -37 -KPX space W -18 -KPX space V -18 -KPX space T -18 -KPX space A -55 - -KPX v period -65 -KPX v comma -65 - -KPX w period -65 -KPX w comma -65 - -KPX y period -65 -KPX y comma -65 -EndKernPairs -EndKernData -StartComposites 56 -CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 139 214 ; -CC zcaron 2 ; PCC z 0 0 ; PCC caron 55 0 ; -CC Scaron 2 ; PCC S 0 0 ; PCC caron 111 214 ; -CC scaron 2 ; PCC s 0 0 ; PCC caron 28 0 ; -CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 167 0 ; -CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 55 0 ; -CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 194 214 ; -CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 83 0 ; -CC Uacute 2 ; PCC U 0 0 ; PCC acute 194 214 ; -CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 194 214 ; -CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 194 214 ; -CC Ugrave 2 ; PCC U 0 0 ; PCC grave 194 214 ; -CC uacute 2 ; PCC u 0 0 ; PCC acute 83 0 ; -CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 83 0 ; -CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 83 0 ; -CC ugrave 2 ; PCC u 0 0 ; PCC grave 83 0 ; -CC Iacute 2 ; PCC I 0 0 ; PCC acute 0 214 ; -CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 0 214 ; -CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 0 214 ; -CC Igrave 2 ; PCC I 0 0 ; PCC grave 0 214 ; -CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -27 0 ; -CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -27 0 ; -CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -27 0 ; -CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -27 0 ; -CC Eacute 2 ; PCC E 0 0 ; PCC acute 139 214 ; -CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 139 214 ; -CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 139 214 ; -CC Egrave 2 ; PCC E 0 0 ; PCC grave 139 214 ; -CC eacute 2 ; PCC e 0 0 ; PCC acute 55 0 ; -CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 55 0 ; -CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 55 0 ; -CC egrave 2 ; PCC e 0 0 ; PCC grave 55 0 ; -CC Aacute 2 ; PCC A 0 0 ; PCC acute 194 214 ; -CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 194 214 ; -CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 194 214 ; -CC Agrave 2 ; PCC A 0 0 ; PCC grave 194 214 ; -CC aacute 2 ; PCC a 0 0 ; PCC acute 55 0 ; -CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 55 0 ; -CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 55 0 ; -CC agrave 2 ; PCC a 0 0 ; PCC grave 55 0 ; -CC Oacute 2 ; PCC O 0 0 ; PCC acute 194 214 ; -CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 194 214 ; -CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 194 214 ; -CC Ograve 2 ; PCC O 0 0 ; PCC grave 194 214 ; -CC oacute 2 ; PCC o 0 0 ; PCC acute 83 0 ; -CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 83 0 ; -CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 83 0 ; -CC ograve 2 ; PCC o 0 0 ; PCC grave 83 0 ; -CC Atilde 2 ; PCC A 0 0 ; PCC tilde 194 214 ; -CC atilde 2 ; PCC a 0 0 ; PCC tilde 55 0 ; -CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 194 214 ; -CC ntilde 2 ; PCC n 0 0 ; PCC tilde 83 0 ; -CC Otilde 2 ; PCC O 0 0 ; PCC tilde 194 214 ; -CC otilde 2 ; PCC o 0 0 ; PCC tilde 83 0 ; -CC Aring 2 ; PCC A 0 0 ; PCC ring 194 214 ; -CC aring 2 ; PCC a 0 0 ; PCC ring 55 0 ; -EndComposites -EndFontMetrics diff --git a/misc/gs_afm/Cour.afm b/misc/gs_afm/Cour.afm deleted file mode 100644 index 2ccfea4b0f..0000000000 --- a/misc/gs_afm/Cour.afm +++ /dev/null @@ -1,255 +0,0 @@ -StartFontMetrics 3.0 -Comment Copyright URW Software, Copyright 1994 by URW -Comment Creation Date: 8/19/1994 -Comment See the file PUBLIC (Aladdin Free Public License) for license conditions. -FontName NimbusMonL-Regu -FullName Nimbus Mono L Regular -FamilyName Nimbus Mono L -Weight Regular -ItalicAngle 0.0 -IsFixedPitch false -UnderlinePosition -100 -UnderlineThickness 50 -Version 001.005 -Notice URW Software, Copyright 1994 by URW -EncodingScheme AdobeStandardEncoding -FontBBox -12 -216 612 811 -CapHeight 563 -XHeight 417 -Descender -186 -Ascender 604 -StartCharMetrics 232 -C 32 ; WX 600 ; N space ; B 295 0 295 0 ; -C 33 ; WX 600 ; N exclam ; B 240 -15 360 618 ; -C 34 ; WX 600 ; N quotedbl ; B 146 315 454 604 ; -C 35 ; WX 600 ; N numbersign ; B 92 -62 508 647 ; -C 36 ; WX 600 ; N dollar ; B 113 -92 487 655 ; -C 37 ; WX 600 ; N percent ; B 87 -12 513 611 ; -C 38 ; WX 600 ; N ampersand ; B 105 -16 478 519 ; -C 39 ; WX 600 ; N quoteright ; B 135 314 340 604 ; -C 40 ; WX 600 ; N parenleft ; B 294 -124 458 604 ; -C 41 ; WX 600 ; N parenright ; B 147 -124 311 604 ; -C 42 ; WX 600 ; N asterisk ; B 113 250 487 604 ; -C 43 ; WX 600 ; N plus ; B 72 32 528 530 ; -C 44 ; WX 600 ; N comma ; B 135 -145 340 145 ; -C 45 ; WX 600 ; N hyphen ; B 72 258 528 299 ; -C 46 ; WX 600 ; N period ; B 226 -15 374 116 ; -C 47 ; WX 600 ; N slash ; B 113 -81 487 668 ; -C 48 ; WX 600 ; N zero ; B 113 -15 487 618 ; -C 49 ; WX 600 ; N one ; B 113 0 487 612 ; -C 50 ; WX 600 ; N two ; B 84 0 478 618 ; -C 51 ; WX 600 ; N three ; B 96 -15 499 618 ; -C 52 ; WX 600 ; N four ; B 105 0 478 604 ; -C 53 ; WX 600 ; N five ; B 96 -15 499 604 ; -C 54 ; WX 600 ; N six ; B 136 -15 510 618 ; -C 55 ; WX 600 ; N seven ; B 105 -1 478 604 ; -C 56 ; WX 600 ; N eight ; B 113 -15 487 618 ; -C 57 ; WX 600 ; N nine ; B 136 -15 510 618 ; -C 58 ; WX 600 ; N colon ; B 226 -15 374 417 ; -C 59 ; WX 600 ; N semicolon ; B 139 -145 350 417 ; -C 60 ; WX 600 ; N less ; B 72 44 522 518 ; -C 61 ; WX 600 ; N equal ; B 51 190 549 375 ; -C 62 ; WX 600 ; N greater ; B 78 44 528 518 ; -C 63 ; WX 600 ; N question ; B 134 -15 487 577 ; -C 64 ; WX 600 ; N at ; B 105 -62 478 624 ; -C 65 ; WX 600 ; N A ; B 9 0 591 563 ; -C 66 ; WX 600 ; N B ; B 43 0 541 563 ; -C 67 ; WX 600 ; N C ; B 63 -16 534 576 ; -C 68 ; WX 600 ; N D ; B 43 0 520 563 ; -C 69 ; WX 600 ; N E ; B 43 0 520 563 ; -C 70 ; WX 600 ; N F ; B 43 0 520 563 ; -C 71 ; WX 600 ; N G ; B 63 -16 562 576 ; -C 72 ; WX 600 ; N H ; B 53 0 551 563 ; -C 73 ; WX 600 ; N I ; B 113 0 487 563 ; -C 74 ; WX 600 ; N J ; B 84 -16 583 563 ; -C 75 ; WX 600 ; N K ; B 43 0 572 563 ; -C 76 ; WX 600 ; N L ; B 63 0 541 563 ; -C 77 ; WX 600 ; N M ; B 11 0 593 563 ; -C 78 ; WX 600 ; N N ; B 22 0 562 563 ; -C 79 ; WX 600 ; N O ; B 51 -16 549 576 ; -C 80 ; WX 600 ; N P ; B 43 0 499 563 ; -C 81 ; WX 600 ; N Q ; B 51 -115 549 576 ; -C 82 ; WX 600 ; N R ; B 43 0 589 563 ; -C 83 ; WX 600 ; N S ; B 92 -16 508 576 ; -C 84 ; WX 600 ; N T ; B 72 0 528 563 ; -C 85 ; WX 600 ; N U ; B 40 -16 560 563 ; -C 86 ; WX 600 ; N V ; B 9 0 591 563 ; -C 87 ; WX 600 ; N W ; B 20 0 580 563 ; -C 88 ; WX 600 ; N X ; B 40 0 560 563 ; -C 89 ; WX 600 ; N Y ; B 51 0 549 563 ; -C 90 ; WX 600 ; N Z ; B 103 0 497 563 ; -C 91 ; WX 600 ; N bracketleft ; B 280 -124 445 604 ; -C 92 ; WX 600 ; N backslash ; B 113 -81 487 668 ; -C 93 ; WX 600 ; N bracketright ; B 155 -124 320 604 ; -C 94 ; WX 600 ; N asciicircum ; B 113 354 487 615 ; -C 95 ; WX 600 ; N underscore ; B -12 -125 612 -75 ; -C 96 ; WX 600 ; N quoteleft ; B 260 343 465 604 ; -C 97 ; WX 600 ; N a ; B 72 -16 541 431 ; -C 98 ; WX 600 ; N b ; B 22 -16 541 604 ; -C 99 ; WX 600 ; N c ; B 84 -16 535 431 ; -C 100 ; WX 600 ; N d ; B 63 -16 583 604 ; -C 101 ; WX 600 ; N e ; B 63 -16 520 431 ; -C 102 ; WX 600 ; N f ; B 105 0 541 604 ; -C 103 ; WX 600 ; N g ; B 63 -186 562 431 ; -C 104 ; WX 600 ; N h ; B 43 0 551 604 ; -C 105 ; WX 600 ; N i ; B 92 0 508 624 ; -C 106 ; WX 600 ; N j ; B 147 -186 458 624 ; -C 107 ; WX 600 ; N k ; B 63 0 541 604 ; -C 108 ; WX 600 ; N l ; B 92 0 508 604 ; -C 109 ; WX 600 ; N m ; B 11 0 593 431 ; -C 110 ; WX 600 ; N n ; B 53 0 541 431 ; -C 111 ; WX 600 ; N o ; B 72 -16 528 431 ; -C 112 ; WX 600 ; N p ; B 22 -186 541 431 ; -C 113 ; WX 600 ; N q ; B 63 -186 583 431 ; -C 114 ; WX 600 ; N r ; B 84 0 541 427 ; -C 115 ; WX 600 ; N s ; B 103 -16 497 431 ; -C 116 ; WX 600 ; N t ; B 43 -16 499 563 ; -C 117 ; WX 600 ; N u ; B 43 -16 541 417 ; -C 118 ; WX 600 ; N v ; B 30 0 570 417 ; -C 119 ; WX 600 ; N w ; B 30 0 570 417 ; -C 120 ; WX 600 ; N x ; B 51 0 549 417 ; -C 121 ; WX 600 ; N y ; B 51 -186 549 417 ; -C 122 ; WX 600 ; N z ; B 115 0 489 417 ; -C 123 ; WX 600 ; N braceleft ; B 197 -124 403 604 ; -C 124 ; WX 600 ; N bar ; B 280 -124 320 604 ; -C 125 ; WX 600 ; N braceright ; B 197 -124 403 604 ; -C 126 ; WX 600 ; N asciitilde ; B 92 212 508 348 ; -C 161 ; WX 600 ; N exclamdown ; B 240 -216 360 417 ; -C 162 ; WX 600 ; N cent ; B 113 -13 469 630 ; -C 163 ; WX 600 ; N sterling ; B 63 0 520 578 ; -C 164 ; WX 600 ; N fraction ; B 50 139 549 470 ; -C 165 ; WX 600 ; N yen ; B 51 0 549 563 ; -C 166 ; WX 600 ; N florin ; B 87 -93 518 618 ; -C 167 ; WX 600 ; N section ; B 66 -62 534 603 ; -C 168 ; WX 600 ; N currency ; B 103 95 497 489 ; -C 169 ; WX 600 ; N quotesingle ; B 236 315 364 604 ; -C 170 ; WX 600 ; N quotedblleft ; B 93 343 507 604 ; -C 171 ; WX 600 ; N guillemotleft ; B 63 0 541 417 ; -C 172 ; WX 600 ; N guilsinglleft ; B 63 0 312 417 ; -C 173 ; WX 600 ; N guilsinglright ; B 293 0 541 417 ; -C 174 ; WX 600 ; N fi ; B 10 0 585 624 ; -C 175 ; WX 600 ; N fl ; B 10 0 587 604 ; -C 177 ; WX 600 ; N endash ; B 72 261 528 302 ; -C 178 ; WX 600 ; N dagger ; B 124 -63 476 604 ; -C 179 ; WX 600 ; N daggerdbl ; B 124 -62 476 604 ; -C 180 ; WX 600 ; N periodcentered ; B 226 217 374 348 ; -C 182 ; WX 600 ; N paragraph ; B 79 -62 525 604 ; -C 183 ; WX 600 ; N bullet ; B 202 141 398 337 ; -C 184 ; WX 600 ; N quotesinglbase ; B 135 -145 340 145 ; -C 185 ; WX 600 ; N quotedblbase ; B 93 -116 507 145 ; -C 186 ; WX 600 ; N quotedblright ; B 93 343 507 604 ; -C 187 ; WX 600 ; N guillemotright ; B 63 0 541 417 ; -C 188 ; WX 600 ; N ellipsis ; B 51 -15 549 84 ; -C 189 ; WX 600 ; N perthousand ; B 34 -9 564 614 ; -C 191 ; WX 600 ; N questiondown ; B 113 -175 466 417 ; -C 193 ; WX 600 ; N grave ; B 155 490 320 639 ; -C 194 ; WX 600 ; N acute ; B 280 490 445 639 ; -C 195 ; WX 600 ; N circumflex ; B 155 490 445 639 ; -C 196 ; WX 600 ; N tilde ; B 145 516 455 605 ; -C 197 ; WX 600 ; N macron ; B 155 536 445 576 ; -C 198 ; WX 600 ; N breve ; B 155 490 445 620 ; -C 199 ; WX 600 ; N dotaccent ; B 250 511 350 611 ; -C 200 ; WX 600 ; N dieresis ; B 140 511 461 611 ; -C 202 ; WX 600 ; N ring ; B 207 480 393 661 ; -C 203 ; WX 600 ; N cedilla ; B 210 -173 377 0 ; -C 205 ; WX 600 ; N hungarumlaut ; B 155 490 445 633 ; -C 206 ; WX 600 ; N ogonek ; B 280 -155 433 0 ; -C 207 ; WX 600 ; N caron ; B 155 490 445 639 ; -C 208 ; WX 600 ; N emdash ; B 1 261 599 302 ; -C 225 ; WX 600 ; N AE ; B 10 0 590 563 ; -C 227 ; WX 600 ; N ordfeminine ; B 155 279 447 574 ; -C 232 ; WX 600 ; N Lslash ; B 43 0 541 563 ; -C 233 ; WX 600 ; N Oslash ; B 40 -43 560 605 ; -C 234 ; WX 600 ; N OE ; B 10 0 590 563 ; -C 235 ; WX 600 ; N ordmasculine ; B 154 284 448 577 ; -C 241 ; WX 600 ; N ae ; B 12 -16 578 431 ; -C 245 ; WX 600 ; N dotlessi ; B 92 0 508 417 ; -C 248 ; WX 600 ; N lslash ; B 92 0 508 604 ; -C 249 ; WX 600 ; N oslash ; B 53 -43 543 458 ; -C 250 ; WX 600 ; N oe ; B 12 -16 578 431 ; -C 251 ; WX 600 ; N germandbls ; B 43 -16 499 604 ; -C -1 ; WX 600 ; N Yacute ; B 51 0 549 789 ; -C -1 ; WX 600 ; N Ucircumflex ; B 40 -16 560 789 ; -C -1 ; WX 600 ; N Ugrave ; B 40 -16 560 789 ; -C -1 ; WX 600 ; N Zcaron ; B 103 0 497 789 ; -C -1 ; WX 600 ; N Ydieresis ; B 51 0 549 761 ; -C -1 ; WX 600 ; N threesuperior ; B 181 251 416 612 ; -C -1 ; WX 600 ; N Uacute ; B 40 -16 560 789 ; -C -1 ; WX 600 ; N twosuperior ; B 175 259 405 612 ; -C -1 ; WX 600 ; N Udieresis ; B 40 -16 560 761 ; -C -1 ; WX 600 ; N middot ; B 226 217 374 348 ; -C -1 ; WX 600 ; N onesuperior ; B 191 259 410 612 ; -C -1 ; WX 600 ; N aacute ; B 72 -16 541 639 ; -C -1 ; WX 600 ; N agrave ; B 72 -16 541 639 ; -C -1 ; WX 600 ; N acircumflex ; B 72 -16 541 639 ; -C -1 ; WX 600 ; N Scaron ; B 92 -16 508 789 ; -C -1 ; WX 600 ; N Otilde ; B 51 -16 549 755 ; -C -1 ; WX 600 ; N sfthyphen ; B 72 258 528 299 ; -C -1 ; WX 600 ; N atilde ; B 72 -16 541 605 ; -C -1 ; WX 600 ; N aring ; B 72 -16 541 661 ; -C -1 ; WX 600 ; N adieresis ; B 72 -16 541 611 ; -C -1 ; WX 600 ; N Ograve ; B 51 -16 549 789 ; -C -1 ; WX 600 ; N Ocircumflex ; B 51 -16 549 789 ; -C -1 ; WX 600 ; N Odieresis ; B 51 -16 549 761 ; -C -1 ; WX 600 ; N Ntilde ; B 22 0 562 755 ; -C -1 ; WX 600 ; N edieresis ; B 63 -16 520 611 ; -C -1 ; WX 600 ; N eacute ; B 63 -16 520 639 ; -C -1 ; WX 600 ; N egrave ; B 63 -16 520 639 ; -C -1 ; WX 600 ; N Icircumflex ; B 113 0 487 789 ; -C -1 ; WX 600 ; N ecircumflex ; B 63 -16 520 639 ; -C -1 ; WX 600 ; N Igrave ; B 113 0 487 789 ; -C -1 ; WX 600 ; N Iacute ; B 113 0 487 789 ; -C -1 ; WX 600 ; N Idieresis ; B 113 0 487 761 ; -C -1 ; WX 600 ; N degree ; B 155 346 445 636 ; -C -1 ; WX 600 ; N Ecircumflex ; B 43 0 520 789 ; -C -1 ; WX 600 ; N minus ; B 72 261 528 302 ; -C -1 ; WX 600 ; N multiply ; B 118 100 482 464 ; -C -1 ; WX 600 ; N divide ; B 72 25 528 540 ; -C -1 ; WX 600 ; N Egrave ; B 43 0 520 789 ; -C -1 ; WX 600 ; N trademark ; B 4 243 598 563 ; -C -1 ; WX 600 ; N Oacute ; B 51 -16 549 789 ; -C -1 ; WX 600 ; N thorn ; B 22 -186 541 590 ; -C -1 ; WX 600 ; N eth ; B 72 -17 528 620 ; -C -1 ; WX 600 ; N Eacute ; B 43 0 520 789 ; -C -1 ; WX 600 ; N ccedilla ; B 84 -173 535 431 ; -C -1 ; WX 600 ; N idieresis ; B 92 0 508 611 ; -C -1 ; WX 600 ; N iacute ; B 92 0 508 639 ; -C -1 ; WX 600 ; N igrave ; B 92 0 508 639 ; -C -1 ; WX 600 ; N plusminus ; B 72 0 528 529 ; -C -1 ; WX 600 ; N onehalf ; B 23 0 573 612 ; -C -1 ; WX 600 ; N onequarter ; B 16 0 580 612 ; -C -1 ; WX 600 ; N threequarters ; B 6 0 580 612 ; -C -1 ; WX 600 ; N icircumflex ; B 92 0 508 639 ; -C -1 ; WX 600 ; N Edieresis ; B 43 0 520 761 ; -C -1 ; WX 600 ; N ntilde ; B 53 0 541 605 ; -C -1 ; WX 600 ; N Aring ; B 9 0 591 811 ; -C -1 ; WX 600 ; N odieresis ; B 72 -16 528 611 ; -C -1 ; WX 600 ; N oacute ; B 72 -16 528 639 ; -C -1 ; WX 600 ; N ograve ; B 72 -16 528 639 ; -C -1 ; WX 600 ; N ocircumflex ; B 72 -16 528 639 ; -C -1 ; WX 600 ; N otilde ; B 72 -16 528 605 ; -C -1 ; WX 600 ; N scaron ; B 103 -16 497 639 ; -C -1 ; WX 600 ; N udieresis ; B 43 -16 541 611 ; -C -1 ; WX 600 ; N uacute ; B 43 -16 541 639 ; -C -1 ; WX 600 ; N ugrave ; B 43 -16 541 639 ; -C -1 ; WX 600 ; N ucircumflex ; B 43 -16 541 639 ; -C -1 ; WX 600 ; N yacute ; B 51 -186 549 639 ; -C -1 ; WX 600 ; N zcaron ; B 115 0 489 639 ; -C -1 ; WX 600 ; N ydieresis ; B 51 -186 549 611 ; -C -1 ; WX 600 ; N copyright ; B 3 -15 596 578 ; -C -1 ; WX 600 ; N registered ; B 3 -15 596 578 ; -C -1 ; WX 600 ; N Atilde ; B 9 0 591 755 ; -C -1 ; WX 600 ; N nbspace ; B 295 0 295 0 ; -C -1 ; WX 600 ; N Ccedilla ; B 63 -173 534 576 ; -C -1 ; WX 600 ; N Acircumflex ; B 9 0 591 789 ; -C -1 ; WX 600 ; N Agrave ; B 9 0 591 789 ; -C -1 ; WX 600 ; N logicalnot ; B 72 168 528 438 ; -C -1 ; WX 600 ; N Aacute ; B 9 0 591 789 ; -C -1 ; WX 600 ; N Eth ; B 0 0 520 563 ; -C -1 ; WX 600 ; N brokenbar ; B 280 -124 320 604 ; -C -1 ; WX 600 ; N Thorn ; B 43 0 499 563 ; -C -1 ; WX 600 ; N Adieresis ; B 9 0 591 761 ; -C -1 ; WX 600 ; N mu ; B 43 -200 541 417 ; -C -1 ; WX 600 ; N .notdef ; B 295 0 295 0 ; -EndCharMetrics -EndFontMetrics diff --git a/misc/gs_afm/CourBo.afm b/misc/gs_afm/CourBo.afm deleted file mode 100644 index 2ea312d1fb..0000000000 --- a/misc/gs_afm/CourBo.afm +++ /dev/null @@ -1,255 +0,0 @@ -StartFontMetrics 3.0 -Comment Copyright URW Software, Copyright 1994 by URW -Comment Creation Date: 8/3/1994 -Comment See the file PUBLIC (Aladdin Free Public License) for license conditions. -FontName NimbusMonL-Bold -FullName Nimbus Mono L Bold -FamilyName Nimbus Mono L -Weight Bold -ItalicAngle 0.0 -IsFixedPitch false -UnderlinePosition -100 -UnderlineThickness 50 -Version 001.005 -Notice URW Software, Copyright 1994 by URW -EncodingScheme AdobeStandardEncoding -FontBBox -43 -229 630 871 -CapHeight 583 -XHeight 437 -Descender -205 -Ascender 624 -StartCharMetrics 232 -C 32 ; WX 600 ; N space ; B 375 0 375 0 ; -C 33 ; WX 600 ; N exclam ; B 220 -15 381 638 ; -C 34 ; WX 600 ; N quotedbl ; B 136 312 464 602 ; -C 35 ; WX 600 ; N numbersign ; B 62 -92 538 675 ; -C 36 ; WX 600 ; N dollar ; B 83 -123 517 684 ; -C 37 ; WX 600 ; N percent ; B 80 -15 521 617 ; -C 38 ; WX 600 ; N ampersand ; B 75 -14 508 550 ; -C 39 ; WX 600 ; N quoteright ; B 147 331 351 623 ; -C 40 ; WX 600 ; N parenleft ; B 264 -153 488 632 ; -C 41 ; WX 600 ; N parenright ; B 117 -153 341 632 ; -C 42 ; WX 600 ; N asterisk ; B 83 208 517 622 ; -C 43 ; WX 600 ; N plus ; B 42 0 558 560 ; -C 44 ; WX 600 ; N comma ; B 147 -158 351 134 ; -C 45 ; WX 600 ; N hyphen ; B 42 229 558 329 ; -C 46 ; WX 600 ; N period ; B 225 -15 375 117 ; -C 47 ; WX 600 ; N slash ; B 83 -113 517 695 ; -C 48 ; WX 600 ; N zero ; B 83 -15 517 638 ; -C 49 ; WX 600 ; N one ; B 83 0 517 638 ; -C 50 ; WX 600 ; N two ; B 54 0 508 638 ; -C 51 ; WX 600 ; N three ; B 66 -15 529 638 ; -C 52 ; WX 600 ; N four ; B 75 0 508 622 ; -C 53 ; WX 600 ; N five ; B 66 -15 529 622 ; -C 54 ; WX 600 ; N six ; B 105 -15 540 638 ; -C 55 ; WX 600 ; N seven ; B 75 -1 508 622 ; -C 56 ; WX 600 ; N eight ; B 83 -15 517 638 ; -C 57 ; WX 600 ; N nine ; B 106 -15 541 638 ; -C 58 ; WX 600 ; N colon ; B 225 -15 375 437 ; -C 59 ; WX 600 ; N semicolon ; B 147 -158 351 437 ; -C 60 ; WX 600 ; N less ; B 42 54 544 501 ; -C 61 ; WX 600 ; N equal ; B 42 138 558 422 ; -C 62 ; WX 600 ; N greater ; B 56 53 558 500 ; -C 63 ; WX 600 ; N question ; B 104 -15 517 598 ; -C 64 ; WX 600 ; N at ; B 76 -151 509 620 ; -C 65 ; WX 600 ; N A ; B -21 0 621 583 ; -C 66 ; WX 600 ; N B ; B 13 0 571 583 ; -C 67 ; WX 600 ; N C ; B 33 -14 564 597 ; -C 68 ; WX 600 ; N D ; B 13 0 550 583 ; -C 69 ; WX 600 ; N E ; B 13 0 550 583 ; -C 70 ; WX 600 ; N F ; B 13 0 550 583 ; -C 71 ; WX 600 ; N G ; B 33 -14 592 597 ; -C 72 ; WX 600 ; N H ; B 23 0 581 583 ; -C 73 ; WX 600 ; N I ; B 83 0 517 583 ; -C 74 ; WX 600 ; N J ; B 54 -14 613 583 ; -C 75 ; WX 600 ; N K ; B 13 0 602 584 ; -C 76 ; WX 600 ; N L ; B 33 0 571 583 ; -C 77 ; WX 600 ; N M ; B -19 0 623 584 ; -C 78 ; WX 600 ; N N ; B -8 0 592 583 ; -C 79 ; WX 600 ; N O ; B 21 -14 579 597 ; -C 80 ; WX 600 ; N P ; B 13 0 529 583 ; -C 81 ; WX 600 ; N Q ; B 21 -145 579 597 ; -C 82 ; WX 600 ; N R ; B 13 0 619 583 ; -C 83 ; WX 600 ; N S ; B 62 -14 538 597 ; -C 84 ; WX 600 ; N T ; B 42 0 558 583 ; -C 85 ; WX 600 ; N U ; B 10 -14 590 583 ; -C 86 ; WX 600 ; N V ; B -21 0 621 583 ; -C 87 ; WX 600 ; N W ; B -10 0 610 583 ; -C 88 ; WX 600 ; N X ; B 10 0 590 584 ; -C 89 ; WX 600 ; N Y ; B 21 0 579 584 ; -C 90 ; WX 600 ; N Z ; B 73 0 527 583 ; -C 91 ; WX 600 ; N bracketleft ; B 250 -148 475 627 ; -C 92 ; WX 600 ; N backslash ; B 83 -113 517 695 ; -C 93 ; WX 600 ; N bracketright ; B 125 -148 350 627 ; -C 94 ; WX 600 ; N asciicircum ; B 83 325 517 652 ; -C 95 ; WX 600 ; N underscore ; B -12 -125 612 -75 ; -C 96 ; WX 600 ; N quoteleft ; B 249 348 453 602 ; -C 97 ; WX 600 ; N a ; B 42 -16 571 450 ; -C 98 ; WX 600 ; N b ; B -8 -14 571 624 ; -C 99 ; WX 600 ; N c ; B 54 -16 565 450 ; -C 100 ; WX 600 ; N d ; B 33 -14 613 624 ; -C 101 ; WX 600 ; N e ; B 33 -16 550 450 ; -C 102 ; WX 600 ; N f ; B 75 0 571 623 ; -C 103 ; WX 600 ; N g ; B 33 -205 592 451 ; -C 104 ; WX 600 ; N h ; B 13 0 581 624 ; -C 105 ; WX 600 ; N i ; B 62 0 538 623 ; -C 106 ; WX 600 ; N j ; B 117 -205 488 623 ; -C 107 ; WX 600 ; N k ; B 33 0 571 624 ; -C 108 ; WX 600 ; N l ; B 62 0 538 624 ; -C 109 ; WX 600 ; N m ; B -19 0 623 450 ; -C 110 ; WX 600 ; N n ; B 23 0 571 450 ; -C 111 ; WX 600 ; N o ; B 42 -16 558 450 ; -C 112 ; WX 600 ; N p ; B -8 -205 571 450 ; -C 113 ; WX 600 ; N q ; B 33 -205 613 450 ; -C 114 ; WX 600 ; N r ; B 54 0 571 449 ; -C 115 ; WX 600 ; N s ; B 73 -16 527 450 ; -C 116 ; WX 600 ; N t ; B 13 -16 529 591 ; -C 117 ; WX 600 ; N u ; B 13 -13 571 437 ; -C 118 ; WX 600 ; N v ; B 0 0 600 437 ; -C 119 ; WX 600 ; N w ; B 0 0 600 437 ; -C 120 ; WX 600 ; N x ; B 21 0 579 437 ; -C 121 ; WX 600 ; N y ; B 21 -205 579 437 ; -C 122 ; WX 600 ; N z ; B 85 0 519 437 ; -C 123 ; WX 600 ; N braceleft ; B 167 -153 433 623 ; -C 124 ; WX 600 ; N bar ; B 250 -153 350 622 ; -C 125 ; WX 600 ; N braceright ; B 167 -153 433 623 ; -C 126 ; WX 600 ; N asciitilde ; B 62 179 538 385 ; -C 161 ; WX 600 ; N exclamdown ; B 220 -227 381 426 ; -C 162 ; WX 600 ; N cent ; B 83 -44 499 661 ; -C 163 ; WX 600 ; N sterling ; B 33 0 550 598 ; -C 164 ; WX 600 ; N fraction ; B 21 102 580 500 ; -C 165 ; WX 600 ; N yen ; B 21 0 579 580 ; -C 166 ; WX 600 ; N florin ; B 57 -123 548 638 ; -C 167 ; WX 600 ; N section ; B 36 -170 564 583 ; -C 168 ; WX 600 ; N currency ; B 73 64 527 519 ; -C 169 ; WX 600 ; N quotesingle ; B 236 312 364 602 ; -C 170 ; WX 600 ; N quotedblleft ; B 98 348 502 602 ; -C 171 ; WX 600 ; N guillemotleft ; B 33 20 571 415 ; -C 172 ; WX 600 ; N guilsinglleft ; B 33 20 342 415 ; -C 173 ; WX 600 ; N guilsinglright ; B 263 20 571 415 ; -C 174 ; WX 600 ; N fi ; B -14 0 619 624 ; -C 175 ; WX 600 ; N fl ; B -17 0 617 623 ; -C 177 ; WX 600 ; N endash ; B 42 229 558 329 ; -C 178 ; WX 600 ; N dagger ; B 94 -92 506 622 ; -C 179 ; WX 600 ; N daggerdbl ; B 94 -92 506 622 ; -C 180 ; WX 600 ; N periodcentered ; B 225 214 375 346 ; -C 182 ; WX 600 ; N paragraph ; B 49 -174 558 583 ; -C 183 ; WX 600 ; N bullet ; B 150 154 449 453 ; -C 184 ; WX 600 ; N quotesinglbase ; B 147 -158 351 134 ; -C 185 ; WX 600 ; N quotedblbase ; B 87 -120 491 134 ; -C 186 ; WX 600 ; N quotedblright ; B 87 348 491 602 ; -C 187 ; WX 600 ; N guillemotright ; B 33 20 571 415 ; -C 188 ; WX 600 ; N ellipsis ; B 25 -15 575 117 ; -C 189 ; WX 600 ; N perthousand ; B 0 0 600 618 ; -C 191 ; WX 600 ; N questiondown ; B 83 -227 496 386 ; -C 193 ; WX 600 ; N grave ; B 125 496 350 696 ; -C 194 ; WX 600 ; N acute ; B 250 496 475 696 ; -C 195 ; WX 600 ; N circumflex ; B 125 497 476 696 ; -C 196 ; WX 600 ; N tilde ; B 115 523 485 656 ; -C 197 ; WX 600 ; N macron ; B 125 546 475 626 ; -C 198 ; WX 600 ; N breve ; B 125 503 475 687 ; -C 199 ; WX 600 ; N dotaccent ; B 240 534 360 654 ; -C 200 ; WX 600 ; N dieresis ; B 136 534 464 654 ; -C 202 ; WX 600 ; N ring ; B 177 486 423 727 ; -C 203 ; WX 600 ; N cedilla ; B 180 -229 407 0 ; -C 205 ; WX 600 ; N hungarumlaut ; B 125 496 475 694 ; -C 206 ; WX 600 ; N ogonek ; B 250 -208 463 0 ; -C 207 ; WX 600 ; N caron ; B 125 497 476 696 ; -C 208 ; WX 600 ; N emdash ; B -29 229 629 329 ; -C 225 ; WX 600 ; N AE ; B -20 0 614 583 ; -C 227 ; WX 600 ; N ordfeminine ; B 118 182 489 595 ; -C 232 ; WX 600 ; N Lslash ; B 12 0 571 583 ; -C 233 ; WX 600 ; N Oslash ; B 9 -70 590 638 ; -C 234 ; WX 600 ; N OE ; B -20 0 612 583 ; -C 235 ; WX 600 ; N ordmasculine ; B 122 182 480 595 ; -C 241 ; WX 600 ; N ae ; B -13 -16 612 450 ; -C 245 ; WX 600 ; N dotlessi ; B 62 0 538 437 ; -C 248 ; WX 600 ; N lslash ; B 62 0 538 624 ; -C 249 ; WX 600 ; N oslash ; B 23 -70 573 494 ; -C 250 ; WX 600 ; N oe ; B -11 -16 613 450 ; -C 251 ; WX 600 ; N germandbls ; B 13 -16 529 623 ; -C -1 ; WX 600 ; N Yacute ; B 21 0 579 839 ; -C -1 ; WX 600 ; N Ucircumflex ; B 10 -14 590 839 ; -C -1 ; WX 600 ; N Ugrave ; B 10 -14 590 839 ; -C -1 ; WX 600 ; N Zcaron ; B 73 0 527 839 ; -C -1 ; WX 600 ; N Ydieresis ; B 21 0 579 798 ; -C -1 ; WX 600 ; N threesuperior ; B 157 238 442 637 ; -C -1 ; WX 600 ; N Uacute ; B 10 -14 590 839 ; -C -1 ; WX 600 ; N twosuperior ; B 149 247 429 637 ; -C -1 ; WX 600 ; N Udieresis ; B 10 -14 590 798 ; -C -1 ; WX 600 ; N middot ; B 225 214 375 346 ; -C -1 ; WX 600 ; N onesuperior ; B 166 247 434 638 ; -C -1 ; WX 600 ; N aacute ; B 42 -16 571 696 ; -C -1 ; WX 600 ; N agrave ; B 42 -16 571 696 ; -C -1 ; WX 600 ; N acircumflex ; B 42 -16 571 696 ; -C -1 ; WX 600 ; N Scaron ; B 62 -14 538 839 ; -C -1 ; WX 600 ; N Otilde ; B 21 -14 579 799 ; -C -1 ; WX 600 ; N sfthyphen ; B 42 229 558 329 ; -C -1 ; WX 600 ; N atilde ; B 42 -16 571 656 ; -C -1 ; WX 600 ; N aring ; B 42 -16 571 727 ; -C -1 ; WX 600 ; N adieresis ; B 42 -16 571 654 ; -C -1 ; WX 600 ; N Ograve ; B 21 -14 579 839 ; -C -1 ; WX 600 ; N Ocircumflex ; B 21 -14 579 839 ; -C -1 ; WX 600 ; N Odieresis ; B 21 -14 579 798 ; -C -1 ; WX 600 ; N Ntilde ; B -8 0 592 799 ; -C -1 ; WX 600 ; N edieresis ; B 33 -16 550 654 ; -C -1 ; WX 600 ; N eacute ; B 33 -16 550 696 ; -C -1 ; WX 600 ; N egrave ; B 33 -16 550 696 ; -C -1 ; WX 600 ; N Icircumflex ; B 83 0 517 839 ; -C -1 ; WX 600 ; N ecircumflex ; B 33 -16 550 696 ; -C -1 ; WX 600 ; N Igrave ; B 83 0 517 839 ; -C -1 ; WX 600 ; N Iacute ; B 83 0 517 839 ; -C -1 ; WX 600 ; N Idieresis ; B 83 0 517 798 ; -C -1 ; WX 600 ; N degree ; B 125 243 475 596 ; -C -1 ; WX 600 ; N Ecircumflex ; B 13 0 550 839 ; -C -1 ; WX 600 ; N minus ; B 42 230 558 330 ; -C -1 ; WX 600 ; N multiply ; B 100 80 500 480 ; -C -1 ; WX 600 ; N divide ; B 42 28 558 533 ; -C -1 ; WX 600 ; N Egrave ; B 13 0 550 839 ; -C -1 ; WX 600 ; N trademark ; B -33 220 620 583 ; -C -1 ; WX 600 ; N Oacute ; B 21 -14 579 839 ; -C -1 ; WX 600 ; N thorn ; B -8 -205 571 624 ; -C -1 ; WX 600 ; N eth ; B 42 -16 558 646 ; -C -1 ; WX 600 ; N Eacute ; B 13 0 550 839 ; -C -1 ; WX 600 ; N ccedilla ; B 54 -229 565 450 ; -C -1 ; WX 600 ; N idieresis ; B 62 0 538 654 ; -C -1 ; WX 600 ; N iacute ; B 62 0 538 696 ; -C -1 ; WX 600 ; N igrave ; B 62 0 538 696 ; -C -1 ; WX 600 ; N plusminus ; B 42 0 558 624 ; -C -1 ; WX 600 ; N onehalf ; B -34 0 629 638 ; -C -1 ; WX 600 ; N onequarter ; B -34 0 629 638 ; -C -1 ; WX 600 ; N threequarters ; B -43 0 630 637 ; -C -1 ; WX 600 ; N icircumflex ; B 62 0 538 696 ; -C -1 ; WX 600 ; N Edieresis ; B 13 0 550 798 ; -C -1 ; WX 600 ; N ntilde ; B 23 0 571 656 ; -C -1 ; WX 600 ; N Aring ; B -21 0 621 871 ; -C -1 ; WX 600 ; N odieresis ; B 42 -16 558 654 ; -C -1 ; WX 600 ; N oacute ; B 42 -16 558 696 ; -C -1 ; WX 600 ; N ograve ; B 42 -16 558 696 ; -C -1 ; WX 600 ; N ocircumflex ; B 42 -16 558 696 ; -C -1 ; WX 600 ; N otilde ; B 42 -16 558 656 ; -C -1 ; WX 600 ; N scaron ; B 73 -16 527 696 ; -C -1 ; WX 600 ; N udieresis ; B 13 -13 571 654 ; -C -1 ; WX 600 ; N uacute ; B 13 -13 571 696 ; -C -1 ; WX 600 ; N ugrave ; B 13 -13 571 696 ; -C -1 ; WX 600 ; N ucircumflex ; B 13 -13 571 696 ; -C -1 ; WX 600 ; N yacute ; B 21 -205 579 696 ; -C -1 ; WX 600 ; N zcaron ; B 85 0 519 696 ; -C -1 ; WX 600 ; N ydieresis ; B 21 -205 579 654 ; -C -1 ; WX 600 ; N copyright ; B -7 -15 606 598 ; -C -1 ; WX 600 ; N registered ; B -7 -15 606 598 ; -C -1 ; WX 600 ; N Atilde ; B -21 0 621 799 ; -C -1 ; WX 600 ; N nbspace ; B 375 0 375 0 ; -C -1 ; WX 600 ; N Ccedilla ; B 33 -229 564 597 ; -C -1 ; WX 600 ; N Acircumflex ; B -21 0 621 839 ; -C -1 ; WX 600 ; N Agrave ; B -21 0 621 839 ; -C -1 ; WX 600 ; N logicalnot ; B 42 115 465 445 ; -C -1 ; WX 600 ; N Aacute ; B -21 0 621 839 ; -C -1 ; WX 600 ; N Eth ; B 0 0 550 583 ; -C -1 ; WX 600 ; N brokenbar ; B 250 -153 354 622 ; -C -1 ; WX 600 ; N Thorn ; B 14 0 523 583 ; -C -1 ; WX 600 ; N Adieresis ; B -21 0 621 798 ; -C -1 ; WX 600 ; N mu ; B 13 -153 571 437 ; -C -1 ; WX 600 ; N .notdef ; B 375 0 375 0 ; -EndCharMetrics -EndFontMetrics diff --git a/misc/gs_afm/CourBoO.afm b/misc/gs_afm/CourBoO.afm deleted file mode 100644 index 6b37f99b2a..0000000000 --- a/misc/gs_afm/CourBoO.afm +++ /dev/null @@ -1,255 +0,0 @@ -StartFontMetrics 3.0 -Comment Copyright URW Software, Copyright 1994 by URW -Comment Creation Date: 8/3/1994 -Comment See the file PUBLIC (Aladdin Free Public License) for license conditions. -FontName NimbusMonL-BoldObli -FullName Nimbus Mono L Bold Oblique -FamilyName Nimbus Mono L -Weight Bold -ItalicAngle -12.0 -IsFixedPitch false -UnderlinePosition -100 -UnderlineThickness 50 -Version 001.005 -Notice URW Software, Copyright 1994 by URW -EncodingScheme AdobeStandardEncoding -FontBBox -61 -229 735 871 -CapHeight 583 -XHeight 437 -Descender -205 -Ascender 624 -StartCharMetrics 232 -C 32 ; WX 600 ; N space ; B 386 0 386 0 ; -C 33 ; WX 600 ; N exclam ; B 234 -15 501 638 ; -C 34 ; WX 600 ; N quotedbl ; B 243 312 592 602 ; -C 35 ; WX 600 ; N numbersign ; B 101 -92 623 675 ; -C 36 ; WX 600 ; N dollar ; B 100 -123 610 684 ; -C 37 ; WX 600 ; N percent ; B 131 -15 599 617 ; -C 38 ; WX 600 ; N ampersand ; B 102 -14 557 550 ; -C 39 ; WX 600 ; N quoteright ; B 222 331 483 623 ; -C 40 ; WX 600 ; N parenleft ; B 304 -153 613 632 ; -C 41 ; WX 600 ; N parenright ; B 94 -153 403 632 ; -C 42 ; WX 600 ; N asterisk ; B 178 208 614 622 ; -C 43 ; WX 600 ; N plus ; B 101 0 619 560 ; -C 44 ; WX 600 ; N comma ; B 118 -158 379 134 ; -C 45 ; WX 600 ; N hyphen ; B 101 229 619 329 ; -C 46 ; WX 600 ; N period ; B 234 -15 387 117 ; -C 47 ; WX 600 ; N slash ; B 69 -113 656 695 ; -C 48 ; WX 600 ; N zero ; B 130 -15 602 638 ; -C 49 ; WX 600 ; N one ; B 93 0 529 638 ; -C 50 ; WX 600 ; N two ; B 54 0 602 638 ; -C 51 ; WX 600 ; N three ; B 80 -15 609 638 ; -C 52 ; WX 600 ; N four ; B 104 0 579 622 ; -C 53 ; WX 600 ; N five ; B 83 -15 610 622 ; -C 54 ; WX 600 ; N six ; B 154 -15 663 638 ; -C 55 ; WX 600 ; N seven ; B 184 -1 640 622 ; -C 56 ; WX 600 ; N eight ; B 114 -15 608 638 ; -C 57 ; WX 600 ; N nine ; B 115 -15 624 638 ; -C 58 ; WX 600 ; N colon ; B 234 -15 455 437 ; -C 59 ; WX 600 ; N semicolon ; B 118 -158 431 437 ; -C 60 ; WX 600 ; N less ; B 102 54 642 501 ; -C 61 ; WX 600 ; N equal ; B 81 138 638 422 ; -C 62 ; WX 600 ; N greater ; B 76 53 616 500 ; -C 63 ; WX 600 ; N question ; B 197 -15 608 598 ; -C 64 ; WX 600 ; N at ; B 98 -151 582 620 ; -C 65 ; WX 600 ; N A ; B -11 0 633 583 ; -C 66 ; WX 600 ; N B ; B 22 0 620 583 ; -C 67 ; WX 600 ; N C ; B 80 -14 663 597 ; -C 68 ; WX 600 ; N D ; B 23 0 622 583 ; -C 69 ; WX 600 ; N E ; B 23 0 652 583 ; -C 70 ; WX 600 ; N F ; B 23 0 674 583 ; -C 71 ; WX 600 ; N G ; B 79 -14 667 597 ; -C 72 ; WX 600 ; N H ; B 32 0 675 583 ; -C 73 ; WX 600 ; N I ; B 93 0 632 583 ; -C 74 ; WX 600 ; N J ; B 64 -14 727 583 ; -C 75 ; WX 600 ; N K ; B 22 0 687 583 ; -C 76 ; WX 600 ; N L ; B 42 0 616 583 ; -C 77 ; WX 600 ; N M ; B -10 0 728 583 ; -C 78 ; WX 600 ; N N ; B 21 0 706 583 ; -C 79 ; WX 600 ; N O ; B 75 -14 649 597 ; -C 80 ; WX 600 ; N P ; B 23 0 617 583 ; -C 81 ; WX 600 ; N Q ; B 75 -145 649 597 ; -C 82 ; WX 600 ; N R ; B 23 0 631 583 ; -C 83 ; WX 600 ; N S ; B 72 -14 634 597 ; -C 84 ; WX 600 ; N T ; B 121 0 682 583 ; -C 85 ; WX 600 ; N U ; B 110 -14 705 583 ; -C 86 ; WX 600 ; N V ; B 91 0 735 583 ; -C 87 ; WX 600 ; N W ; B 98 0 725 583 ; -C 88 ; WX 600 ; N X ; B 19 0 692 583 ; -C 89 ; WX 600 ; N Y ; B 128 0 694 583 ; -C 90 ; WX 600 ; N Z ; B 73 0 628 583 ; -C 91 ; WX 600 ; N bracketleft ; B 219 -148 598 627 ; -C 92 ; WX 600 ; N backslash ; B 219 -113 504 695 ; -C 93 ; WX 600 ; N bracketright ; B 104 -148 483 627 ; -C 94 ; WX 600 ; N asciicircum ; B 161 325 598 652 ; -C 95 ; WX 600 ; N underscore ; B -61 -125 564 -75 ; -C 96 ; WX 600 ; N quoteleft ; B 377 348 534 602 ; -C 97 ; WX 600 ; N a ; B 65 -16 583 450 ; -C 98 ; WX 600 ; N b ; B 2 -14 623 624 ; -C 99 ; WX 600 ; N c ; B 93 -16 626 450 ; -C 100 ; WX 600 ; N d ; B 74 -14 664 624 ; -C 101 ; WX 600 ; N e ; B 74 -16 600 450 ; -C 102 ; WX 600 ; N f ; B 84 0 691 623 ; -C 103 ; WX 600 ; N g ; B 73 -205 675 451 ; -C 104 ; WX 600 ; N h ; B 33 0 593 624 ; -C 105 ; WX 600 ; N i ; B 72 0 550 623 ; -C 106 ; WX 600 ; N j ; B 83 -205 581 623 ; -C 107 ; WX 600 ; N k ; B 42 0 606 624 ; -C 108 ; WX 600 ; N l ; B 72 0 550 624 ; -C 109 ; WX 600 ; N m ; B -9 0 635 450 ; -C 110 ; WX 600 ; N n ; B 33 0 583 450 ; -C 111 ; WX 600 ; N o ; B 84 -16 609 450 ; -C 112 ; WX 600 ; N p ; B -42 -205 623 450 ; -C 113 ; WX 600 ; N q ; B 75 -205 696 450 ; -C 114 ; WX 600 ; N r ; B 64 0 650 449 ; -C 115 ; WX 600 ; N s ; B 83 -16 592 450 ; -C 116 ; WX 600 ; N t ; B 94 -16 547 591 ; -C 117 ; WX 600 ; N u ; B 94 -13 603 437 ; -C 118 ; WX 600 ; N v ; B 81 0 683 437 ; -C 119 ; WX 600 ; N w ; B 82 0 684 437 ; -C 120 ; WX 600 ; N x ; B 30 0 641 437 ; -C 121 ; WX 600 ; N y ; B -13 -205 662 437 ; -C 122 ; WX 600 ; N z ; B 85 0 599 437 ; -C 123 ; WX 600 ; N braceleft ; B 217 -153 556 623 ; -C 124 ; WX 600 ; N bar ; B 227 -153 472 622 ; -C 125 ; WX 600 ; N braceright ; B 144 -153 483 623 ; -C 126 ; WX 600 ; N asciitilde ; B 114 179 606 385 ; -C 161 ; WX 600 ; N exclamdown ; B 186 -227 453 426 ; -C 162 ; WX 600 ; N cent ; B 144 -44 593 661 ; -C 163 ; WX 600 ; N sterling ; B 64 0 571 598 ; -C 164 ; WX 600 ; N fraction ; B 52 102 676 500 ; -C 165 ; WX 600 ; N yen ; B 133 0 693 580 ; -C 166 ; WX 600 ; N florin ; B 43 -123 672 638 ; -C 167 ; WX 600 ; N section ; B 45 -170 643 583 ; -C 168 ; WX 600 ; N currency ; B 96 64 626 519 ; -C 169 ; WX 600 ; N quotesingle ; B 343 312 492 602 ; -C 170 ; WX 600 ; N quotedblleft ; B 226 348 583 602 ; -C 171 ; WX 600 ; N guillemotleft ; B 80 20 654 415 ; -C 172 ; WX 600 ; N guilsinglleft ; B 80 20 425 415 ; -C 173 ; WX 600 ; N guilsinglright ; B 273 20 617 415 ; -C 174 ; WX 600 ; N fi ; B -4 0 633 624 ; -C 175 ; WX 600 ; N fl ; B -8 0 645 623 ; -C 177 ; WX 600 ; N endash ; B 101 229 619 329 ; -C 178 ; WX 600 ; N dagger ; B 175 -92 589 622 ; -C 179 ; WX 600 ; N daggerdbl ; B 123 -92 589 622 ; -C 180 ; WX 600 ; N periodcentered ; B 283 214 436 346 ; -C 182 ; WX 600 ; N paragraph ; B 108 -174 672 583 ; -C 183 ; WX 600 ; N bullet ; B 211 154 517 453 ; -C 184 ; WX 600 ; N quotesinglbase ; B 118 -158 379 134 ; -C 185 ; WX 600 ; N quotedblbase ; B 66 -120 519 134 ; -C 186 ; WX 600 ; N quotedblright ; B 166 348 619 602 ; -C 187 ; WX 600 ; N guillemotright ; B 43 20 617 415 ; -C 188 ; WX 600 ; N ellipsis ; B 34 -15 587 117 ; -C 189 ; WX 600 ; N perthousand ; B 104 0 627 618 ; -C 191 ; WX 600 ; N questiondown ; B 70 -227 481 386 ; -C 193 ; WX 600 ; N grave ; B 264 496 464 696 ; -C 194 ; WX 600 ; N acute ; B 362 496 616 696 ; -C 195 ; WX 600 ; N circumflex ; B 237 497 590 696 ; -C 196 ; WX 600 ; N tilde ; B 233 523 619 656 ; -C 197 ; WX 600 ; N macron ; B 249 546 600 626 ; -C 198 ; WX 600 ; N breve ; B 261 503 614 687 ; -C 199 ; WX 600 ; N dotaccent ; B 365 534 487 656 ; -C 200 ; WX 600 ; N dieresis ; B 261 534 590 655 ; -C 202 ; WX 600 ; N ring ; B 303 486 554 727 ; -C 203 ; WX 600 ; N cedilla ; B 143 -229 381 0 ; -C 205 ; WX 600 ; N hungarumlaut ; B 237 496 616 694 ; -C 206 ; WX 600 ; N ogonek ; B 222 -208 433 0 ; -C 207 ; WX 600 ; N caron ; B 264 497 617 696 ; -C 208 ; WX 600 ; N emdash ; B 30 229 690 329 ; -C 225 ; WX 600 ; N AE ; B -10 0 717 583 ; -C 227 ; WX 600 ; N ordfeminine ; B 170 182 559 595 ; -C 232 ; WX 600 ; N Lslash ; B 43 0 616 583 ; -C 233 ; WX 600 ; N Oslash ; B 4 -70 717 638 ; -C 234 ; WX 600 ; N OE ; B 34 0 717 583 ; -C 235 ; WX 600 ; N ordmasculine ; B 168 182 566 595 ; -C 241 ; WX 600 ; N ae ; B 14 -16 665 450 ; -C 245 ; WX 600 ; N dotlessi ; B 72 0 550 437 ; -C 248 ; WX 600 ; N lslash ; B 72 0 557 624 ; -C 249 ; WX 600 ; N oslash ; B 17 -70 669 494 ; -C 250 ; WX 600 ; N oe ; B 28 -16 666 450 ; -C 251 ; WX 600 ; N germandbls ; B 22 -16 569 623 ; -C -1 ; WX 600 ; N Yacute ; B 128 0 694 839 ; -C -1 ; WX 600 ; N Ucircumflex ; B 110 -14 705 839 ; -C -1 ; WX 600 ; N Ugrave ; B 110 -14 705 839 ; -C -1 ; WX 600 ; N Zcaron ; B 73 0 644 839 ; -C -1 ; WX 600 ; N Ydieresis ; B 128 0 694 800 ; -C -1 ; WX 600 ; N threesuperior ; B 218 238 543 637 ; -C -1 ; WX 600 ; N Uacute ; B 110 -14 705 839 ; -C -1 ; WX 600 ; N twosuperior ; B 202 247 538 637 ; -C -1 ; WX 600 ; N Udieresis ; B 110 -14 705 800 ; -C -1 ; WX 600 ; N middot ; B 283 214 436 346 ; -C -1 ; WX 600 ; N onesuperior ; B 224 247 494 638 ; -C -1 ; WX 600 ; N aacute ; B 66 -16 584 696 ; -C -1 ; WX 600 ; N agrave ; B 65 -16 583 696 ; -C -1 ; WX 600 ; N acircumflex ; B 65 -16 583 696 ; -C -1 ; WX 600 ; N Scaron ; B 72 -14 657 839 ; -C -1 ; WX 600 ; N Otilde ; B 75 -14 656 799 ; -C -1 ; WX 600 ; N sfthyphen ; B 101 229 619 329 ; -C -1 ; WX 600 ; N atilde ; B 65 -16 612 656 ; -C -1 ; WX 600 ; N aring ; B 65 -16 583 727 ; -C -1 ; WX 600 ; N adieresis ; B 65 -16 583 655 ; -C -1 ; WX 600 ; N Ograve ; B 75 -14 649 839 ; -C -1 ; WX 600 ; N Ocircumflex ; B 75 -14 649 839 ; -C -1 ; WX 600 ; N Odieresis ; B 75 -14 649 800 ; -C -1 ; WX 600 ; N Ntilde ; B 21 0 706 799 ; -C -1 ; WX 600 ; N edieresis ; B 74 -16 600 655 ; -C -1 ; WX 600 ; N eacute ; B 74 -16 600 696 ; -C -1 ; WX 600 ; N egrave ; B 74 -16 600 696 ; -C -1 ; WX 600 ; N Icircumflex ; B 93 0 632 839 ; -C -1 ; WX 600 ; N ecircumflex ; B 74 -16 600 696 ; -C -1 ; WX 600 ; N Igrave ; B 93 0 632 839 ; -C -1 ; WX 600 ; N Iacute ; B 93 0 632 839 ; -C -1 ; WX 600 ; N Idieresis ; B 93 0 632 800 ; -C -1 ; WX 600 ; N degree ; B 210 243 568 596 ; -C -1 ; WX 600 ; N Ecircumflex ; B 23 0 652 839 ; -C -1 ; WX 600 ; N minus ; B 101 230 619 330 ; -C -1 ; WX 600 ; N multiply ; B 126 80 592 480 ; -C -1 ; WX 600 ; N divide ; B 101 28 619 533 ; -C -1 ; WX 600 ; N Egrave ; B 23 0 652 839 ; -C -1 ; WX 600 ; N trademark ; B 60 220 732 583 ; -C -1 ; WX 600 ; N Oacute ; B 75 -14 649 839 ; -C -1 ; WX 600 ; N thorn ; B -42 -205 623 624 ; -C -1 ; WX 600 ; N eth ; B 83 -16 617 646 ; -C -1 ; WX 600 ; N Eacute ; B 23 0 652 839 ; -C -1 ; WX 600 ; N ccedilla ; B 92 -229 626 450 ; -C -1 ; WX 600 ; N idieresis ; B 72 0 575 656 ; -C -1 ; WX 600 ; N iacute ; B 71 0 574 696 ; -C -1 ; WX 600 ; N igrave ; B 72 0 550 696 ; -C -1 ; WX 600 ; N plusminus ; B 52 0 640 624 ; -C -1 ; WX 600 ; N onehalf ; B 25 0 685 638 ; -C -1 ; WX 600 ; N onequarter ; B 25 0 673 638 ; -C -1 ; WX 600 ; N threequarters ; B 18 0 673 637 ; -C -1 ; WX 600 ; N icircumflex ; B 72 0 573 696 ; -C -1 ; WX 600 ; N Edieresis ; B 23 0 652 800 ; -C -1 ; WX 600 ; N ntilde ; B 33 0 613 656 ; -C -1 ; WX 600 ; N Aring ; B -11 0 633 871 ; -C -1 ; WX 600 ; N odieresis ; B 84 -16 609 655 ; -C -1 ; WX 600 ; N oacute ; B 84 -16 609 696 ; -C -1 ; WX 600 ; N ograve ; B 84 -16 609 696 ; -C -1 ; WX 600 ; N ocircumflex ; B 84 -16 609 696 ; -C -1 ; WX 600 ; N otilde ; B 84 -16 626 656 ; -C -1 ; WX 600 ; N scaron ; B 83 -16 627 696 ; -C -1 ; WX 600 ; N udieresis ; B 94 -13 603 655 ; -C -1 ; WX 600 ; N uacute ; B 94 -13 603 696 ; -C -1 ; WX 600 ; N ugrave ; B 94 -13 603 696 ; -C -1 ; WX 600 ; N ucircumflex ; B 94 -13 603 696 ; -C -1 ; WX 600 ; N yacute ; B -13 -205 662 696 ; -C -1 ; WX 600 ; N zcaron ; B 85 0 619 696 ; -C -1 ; WX 600 ; N ydieresis ; B -13 -205 662 655 ; -C -1 ; WX 600 ; N copyright ; B 48 -15 675 598 ; -C -1 ; WX 600 ; N registered ; B 48 -15 675 598 ; -C -1 ; WX 600 ; N Atilde ; B -11 0 633 799 ; -C -1 ; WX 600 ; N nbspace ; B 386 0 386 0 ; -C -1 ; WX 600 ; N Ccedilla ; B 80 -229 663 597 ; -C -1 ; WX 600 ; N Acircumflex ; B -11 0 633 839 ; -C -1 ; WX 600 ; N Agrave ; B -11 0 633 839 ; -C -1 ; WX 600 ; N logicalnot ; B 125 115 560 445 ; -C -1 ; WX 600 ; N Aacute ; B -11 0 633 839 ; -C -1 ; WX 600 ; N Eth ; B 23 0 622 583 ; -C -1 ; WX 600 ; N brokenbar ; B 227 -153 472 622 ; -C -1 ; WX 600 ; N Thorn ; B 23 0 588 583 ; -C -1 ; WX 600 ; N Adieresis ; B -11 0 633 800 ; -C -1 ; WX 600 ; N mu ; B 72 -153 603 440 ; -C -1 ; WX 600 ; N .notdef ; B 386 0 386 0 ; -EndCharMetrics -EndFontMetrics diff --git a/misc/gs_afm/CourO.afm b/misc/gs_afm/CourO.afm deleted file mode 100644 index 51e4ee6b81..0000000000 --- a/misc/gs_afm/CourO.afm +++ /dev/null @@ -1,255 +0,0 @@ -StartFontMetrics 3.0 -Comment Copyright URW Software, Copyright 1994 by URW -Comment Creation Date: 8/19/1994 -Comment See the file PUBLIC (Aladdin Free Public License) for license conditions. -FontName NimbusMonL-ReguObli -FullName Nimbus Mono L Regular Oblique -FamilyName Nimbus Mono L -Weight Regular -ItalicAngle -12.0 -IsFixedPitch false -UnderlinePosition -100 -UnderlineThickness 50 -Version 001.005 -Notice URW Software, Copyright 1994 by URW -EncodingScheme AdobeStandardEncoding -FontBBox -61 -216 710 811 -CapHeight 563 -XHeight 417 -Descender -186 -Ascender 604 -StartCharMetrics 232 -C 32 ; WX 600 ; N space ; B 319 0 319 0 ; -C 33 ; WX 600 ; N exclam ; B 246 -15 463 618 ; -C 34 ; WX 600 ; N quotedbl ; B 254 315 582 604 ; -C 35 ; WX 600 ; N numbersign ; B 137 -62 589 647 ; -C 36 ; WX 600 ; N dollar ; B 131 -92 582 655 ; -C 37 ; WX 600 ; N percent ; B 137 -12 591 611 ; -C 38 ; WX 600 ; N ampersand ; B 132 -16 527 519 ; -C 39 ; WX 600 ; N quoteright ; B 207 314 468 604 ; -C 40 ; WX 600 ; N parenleft ; B 335 -124 583 604 ; -C 41 ; WX 600 ; N parenright ; B 124 -124 372 604 ; -C 42 ; WX 600 ; N asterisk ; B 211 250 586 604 ; -C 43 ; WX 600 ; N plus ; B 131 32 588 530 ; -C 44 ; WX 600 ; N comma ; B 110 -145 371 145 ; -C 45 ; WX 600 ; N hyphen ; B 131 258 588 299 ; -C 46 ; WX 600 ; N period ; B 235 -15 386 116 ; -C 47 ; WX 600 ; N slash ; B 99 -81 625 668 ; -C 48 ; WX 600 ; N zero ; B 156 -15 571 618 ; -C 49 ; WX 600 ; N one ; B 117 0 492 612 ; -C 50 ; WX 600 ; N two ; B 84 0 572 618 ; -C 51 ; WX 600 ; N three ; B 110 -15 579 618 ; -C 52 ; WX 600 ; N four ; B 141 0 545 604 ; -C 53 ; WX 600 ; N five ; B 113 -15 584 604 ; -C 54 ; WX 600 ; N six ; B 184 -15 631 618 ; -C 55 ; WX 600 ; N seven ; B 215 -1 606 604 ; -C 56 ; WX 600 ; N eight ; B 143 -15 576 618 ; -C 57 ; WX 600 ; N nine ; B 142 -15 589 618 ; -C 58 ; WX 600 ; N colon ; B 235 -15 450 417 ; -C 59 ; WX 600 ; N semicolon ; B 114 -145 426 417 ; -C 60 ; WX 600 ; N less ; B 131 44 627 518 ; -C 61 ; WX 600 ; N equal ; B 95 190 625 375 ; -C 62 ; WX 600 ; N greater ; B 92 44 588 518 ; -C 63 ; WX 600 ; N question ; B 231 -15 581 577 ; -C 64 ; WX 600 ; N at ; B 139 -62 561 624 ; -C 65 ; WX 600 ; N A ; B 13 0 596 563 ; -C 66 ; WX 600 ; N B ; B 47 0 591 563 ; -C 67 ; WX 600 ; N C ; B 110 -16 635 576 ; -C 68 ; WX 600 ; N D ; B 47 0 592 563 ; -C 69 ; WX 600 ; N E ; B 47 0 619 563 ; -C 70 ; WX 600 ; N F ; B 47 0 640 563 ; -C 71 ; WX 600 ; N G ; B 108 -16 636 576 ; -C 72 ; WX 600 ; N H ; B 57 0 646 563 ; -C 73 ; WX 600 ; N I ; B 117 0 603 563 ; -C 74 ; WX 600 ; N J ; B 100 -16 699 563 ; -C 75 ; WX 600 ; N K ; B 47 0 662 563 ; -C 76 ; WX 600 ; N L ; B 67 0 585 563 ; -C 77 ; WX 600 ; N M ; B 15 0 700 563 ; -C 78 ; WX 600 ; N N ; B 46 0 678 563 ; -C 79 ; WX 600 ; N O ; B 102 -16 616 576 ; -C 80 ; WX 600 ; N P ; B 47 0 587 563 ; -C 81 ; WX 600 ; N Q ; B 102 -115 616 576 ; -C 82 ; WX 600 ; N R ; B 47 0 594 563 ; -C 83 ; WX 600 ; N S ; B 96 -16 602 576 ; -C 84 ; WX 600 ; N T ; B 152 0 648 563 ; -C 85 ; WX 600 ; N U ; B 136 -16 676 563 ; -C 86 ; WX 600 ; N V ; B 124 0 707 563 ; -C 87 ; WX 600 ; N W ; B 122 0 696 563 ; -C 88 ; WX 600 ; N X ; B 44 0 662 563 ; -C 89 ; WX 600 ; N Y ; B 153 0 665 563 ; -C 90 ; WX 600 ; N Z ; B 103 0 590 563 ; -C 91 ; WX 600 ; N bracketleft ; B 254 -124 570 604 ; -C 92 ; WX 600 ; N backslash ; B 250 -81 474 668 ; -C 93 ; WX 600 ; N bracketright ; B 132 -124 448 604 ; -C 94 ; WX 600 ; N asciicircum ; B 192 354 567 615 ; -C 95 ; WX 600 ; N underscore ; B -61 -125 564 -75 ; -C 96 ; WX 600 ; N quoteleft ; B 388 343 544 604 ; -C 97 ; WX 600 ; N a ; B 93 -16 546 431 ; -C 98 ; WX 600 ; N b ; B 26 -16 591 604 ; -C 99 ; WX 600 ; N c ; B 122 -16 596 431 ; -C 100 ; WX 600 ; N d ; B 102 -16 630 604 ; -C 101 ; WX 600 ; N e ; B 104 -16 570 431 ; -C 102 ; WX 600 ; N f ; B 109 0 663 604 ; -C 103 ; WX 600 ; N g ; B 105 -186 647 431 ; -C 104 ; WX 600 ; N h ; B 55 0 556 604 ; -C 105 ; WX 600 ; N i ; B 96 0 513 624 ; -C 106 ; WX 600 ; N j ; B 112 -186 547 624 ; -C 107 ; WX 600 ; N k ; B 67 0 578 604 ; -C 108 ; WX 600 ; N l ; B 96 0 513 604 ; -C 109 ; WX 600 ; N m ; B 15 0 603 431 ; -C 110 ; WX 600 ; N n ; B 57 0 546 431 ; -C 111 ; WX 600 ; N o ; B 111 -16 577 431 ; -C 112 ; WX 600 ; N p ; B -13 -186 593 431 ; -C 113 ; WX 600 ; N q ; B 105 -186 668 431 ; -C 114 ; WX 600 ; N r ; B 88 0 619 427 ; -C 115 ; WX 600 ; N s ; B 108 -16 558 431 ; -C 116 ; WX 600 ; N t ; B 127 -16 518 563 ; -C 117 ; WX 600 ; N u ; B 127 -16 569 417 ; -C 118 ; WX 600 ; N v ; B 114 0 655 417 ; -C 119 ; WX 600 ; N w ; B 114 0 655 417 ; -C 120 ; WX 600 ; N x ; B 55 0 611 417 ; -C 121 ; WX 600 ; N y ; B 22 -186 634 417 ; -C 122 ; WX 600 ; N z ; B 115 0 563 417 ; -C 123 ; WX 600 ; N braceleft ; B 248 -124 528 604 ; -C 124 ; WX 600 ; N bar ; B 257 -124 444 604 ; -C 125 ; WX 600 ; N braceright ; B 175 -124 455 604 ; -C 126 ; WX 600 ; N asciitilde ; B 145 212 575 348 ; -C 161 ; WX 600 ; N exclamdown ; B 222 -216 439 417 ; -C 162 ; WX 600 ; N cent ; B 175 -13 563 630 ; -C 163 ; WX 600 ; N sterling ; B 90 0 541 578 ; -C 164 ; WX 600 ; N fraction ; B 84 139 645 470 ; -C 165 ; WX 600 ; N yen ; B 161 0 665 563 ; -C 166 ; WX 600 ; N florin ; B 74 -93 643 618 ; -C 167 ; WX 600 ; N section ; B 91 -62 624 603 ; -C 168 ; WX 600 ; N currency ; B 127 95 597 489 ; -C 169 ; WX 600 ; N quotesingle ; B 344 315 492 604 ; -C 170 ; WX 600 ; N quotedblleft ; B 221 343 586 604 ; -C 171 ; WX 600 ; N guillemotleft ; B 108 0 626 417 ; -C 172 ; WX 600 ; N guilsinglleft ; B 108 0 397 417 ; -C 173 ; WX 600 ; N guilsinglright ; B 297 0 585 417 ; -C 174 ; WX 600 ; N fi ; B 14 0 615 624 ; -C 175 ; WX 600 ; N fl ; B 14 0 611 604 ; -C 177 ; WX 600 ; N endash ; B 131 261 588 302 ; -C 178 ; WX 600 ; N dagger ; B 208 -63 561 604 ; -C 179 ; WX 600 ; N daggerdbl ; B 154 -62 561 604 ; -C 180 ; WX 600 ; N periodcentered ; B 285 217 436 348 ; -C 182 ; WX 600 ; N paragraph ; B 152 -62 648 604 ; -C 183 ; WX 600 ; N bullet ; B 253 141 449 337 ; -C 184 ; WX 600 ; N quotesinglbase ; B 110 -145 371 145 ; -C 185 ; WX 600 ; N quotedblbase ; B 73 -116 538 145 ; -C 186 ; WX 600 ; N quotedblright ; B 170 343 635 604 ; -C 187 ; WX 600 ; N guillemotright ; B 67 0 585 417 ; -C 188 ; WX 600 ; N ellipsis ; B 57 -15 556 85 ; -C 189 ; WX 600 ; N perthousand ; B 91 -9 598 614 ; -C 191 ; WX 600 ; N questiondown ; B 105 -175 455 417 ; -C 193 ; WX 600 ; N grave ; B 286 490 429 639 ; -C 194 ; WX 600 ; N acute ; B 388 490 577 639 ; -C 195 ; WX 600 ; N circumflex ; B 263 490 554 639 ; -C 196 ; WX 600 ; N tilde ; B 258 516 579 605 ; -C 197 ; WX 600 ; N macron ; B 273 536 564 576 ; -C 198 ; WX 600 ; N breve ; B 281 490 573 620 ; -C 199 ; WX 600 ; N dotaccent ; B 368 511 469 612 ; -C 200 ; WX 600 ; N dieresis ; B 258 511 580 612 ; -C 202 ; WX 600 ; N ring ; B 326 480 516 661 ; -C 203 ; WX 600 ; N cedilla ; B 181 -173 356 0 ; -C 205 ; WX 600 ; N hungarumlaut ; B 263 490 576 633 ; -C 206 ; WX 600 ; N ogonek ; B 258 -155 408 0 ; -C 207 ; WX 600 ; N caron ; B 286 490 577 639 ; -C 208 ; WX 600 ; N emdash ; B 60 261 659 302 ; -C 225 ; WX 600 ; N AE ; B 14 0 690 563 ; -C 227 ; WX 600 ; N ordfeminine ; B 229 279 511 574 ; -C 232 ; WX 600 ; N Lslash ; B 66 0 586 563 ; -C 233 ; WX 600 ; N Oslash ; B 34 -43 685 605 ; -C 234 ; WX 600 ; N OE ; B 62 0 690 563 ; -C 235 ; WX 600 ; N ordmasculine ; B 243 284 543 577 ; -C 241 ; WX 600 ; N ae ; B 36 -16 630 431 ; -C 245 ; WX 600 ; N dotlessi ; B 96 0 513 417 ; -C 248 ; WX 600 ; N lslash ; B 96 0 524 604 ; -C 249 ; WX 600 ; N oslash ; B 47 -43 637 458 ; -C 250 ; WX 600 ; N oe ; B 50 -16 630 431 ; -C 251 ; WX 600 ; N germandbls ; B 47 -16 539 604 ; -C -1 ; WX 600 ; N Yacute ; B 153 0 665 789 ; -C -1 ; WX 600 ; N Ucircumflex ; B 136 -16 676 789 ; -C -1 ; WX 600 ; N Ugrave ; B 136 -16 676 789 ; -C -1 ; WX 600 ; N Zcaron ; B 103 0 605 789 ; -C -1 ; WX 600 ; N Ydieresis ; B 153 0 665 762 ; -C -1 ; WX 600 ; N threesuperior ; B 245 251 516 612 ; -C -1 ; WX 600 ; N Uacute ; B 136 -16 676 789 ; -C -1 ; WX 600 ; N twosuperior ; B 230 259 514 612 ; -C -1 ; WX 600 ; N Udieresis ; B 136 -16 676 762 ; -C -1 ; WX 600 ; N middot ; B 285 217 436 348 ; -C -1 ; WX 600 ; N onesuperior ; B 249 259 469 612 ; -C -1 ; WX 600 ; N aacute ; B 93 -16 546 639 ; -C -1 ; WX 600 ; N agrave ; B 93 -16 546 639 ; -C -1 ; WX 600 ; N acircumflex ; B 93 -16 546 639 ; -C -1 ; WX 600 ; N Scaron ; B 96 -16 618 789 ; -C -1 ; WX 600 ; N Otilde ; B 103 -16 618 755 ; -C -1 ; WX 600 ; N sfthyphen ; B 131 258 588 299 ; -C -1 ; WX 600 ; N atilde ; B 93 -16 570 605 ; -C -1 ; WX 600 ; N aring ; B 93 -16 546 661 ; -C -1 ; WX 600 ; N adieresis ; B 93 -16 570 612 ; -C -1 ; WX 600 ; N Ograve ; B 102 -16 616 789 ; -C -1 ; WX 600 ; N Ocircumflex ; B 102 -16 616 789 ; -C -1 ; WX 600 ; N Odieresis ; B 102 -16 616 762 ; -C -1 ; WX 600 ; N Ntilde ; B 46 0 678 755 ; -C -1 ; WX 600 ; N edieresis ; B 104 -16 585 612 ; -C -1 ; WX 600 ; N eacute ; B 104 -16 570 639 ; -C -1 ; WX 600 ; N egrave ; B 104 -16 570 639 ; -C -1 ; WX 600 ; N Icircumflex ; B 117 0 603 789 ; -C -1 ; WX 600 ; N ecircumflex ; B 104 -16 570 639 ; -C -1 ; WX 600 ; N Igrave ; B 117 0 603 789 ; -C -1 ; WX 600 ; N Iacute ; B 117 0 603 789 ; -C -1 ; WX 600 ; N Idieresis ; B 117 0 611 762 ; -C -1 ; WX 600 ; N degree ; B 257 346 553 636 ; -C -1 ; WX 600 ; N Ecircumflex ; B 47 0 619 789 ; -C -1 ; WX 600 ; N minus ; B 131 261 588 302 ; -C -1 ; WX 600 ; N multiply ; B 143 100 577 464 ; -C -1 ; WX 600 ; N divide ; B 131 25 588 541 ; -C -1 ; WX 600 ; N Egrave ; B 47 0 619 789 ; -C -1 ; WX 600 ; N trademark ; B 90 243 710 563 ; -C -1 ; WX 600 ; N Oacute ; B 102 -16 616 789 ; -C -1 ; WX 600 ; N thorn ; B -13 -186 593 590 ; -C -1 ; WX 600 ; N eth ; B 111 -17 582 620 ; -C -1 ; WX 600 ; N Eacute ; B 47 0 619 789 ; -C -1 ; WX 600 ; N ccedilla ; B 122 -173 596 431 ; -C -1 ; WX 600 ; N idieresis ; B 96 0 567 612 ; -C -1 ; WX 600 ; N iacute ; B 96 0 535 639 ; -C -1 ; WX 600 ; N igrave ; B 96 0 513 639 ; -C -1 ; WX 600 ; N plusminus ; B 76 0 597 529 ; -C -1 ; WX 600 ; N onehalf ; B 82 0 627 612 ; -C -1 ; WX 600 ; N onequarter ; B 74 0 619 612 ; -C -1 ; WX 600 ; N threequarters ; B 70 0 619 612 ; -C -1 ; WX 600 ; N icircumflex ; B 95 0 536 639 ; -C -1 ; WX 600 ; N Edieresis ; B 47 0 619 762 ; -C -1 ; WX 600 ; N ntilde ; B 57 0 570 605 ; -C -1 ; WX 600 ; N Aring ; B 13 0 596 811 ; -C -1 ; WX 600 ; N odieresis ; B 111 -16 580 612 ; -C -1 ; WX 600 ; N oacute ; B 111 -16 577 639 ; -C -1 ; WX 600 ; N ograve ; B 111 -16 577 639 ; -C -1 ; WX 600 ; N ocircumflex ; B 111 -16 577 639 ; -C -1 ; WX 600 ; N otilde ; B 111 -16 586 605 ; -C -1 ; WX 600 ; N scaron ; B 107 -16 584 639 ; -C -1 ; WX 600 ; N udieresis ; B 127 -16 572 612 ; -C -1 ; WX 600 ; N uacute ; B 127 -16 569 639 ; -C -1 ; WX 600 ; N ugrave ; B 127 -16 569 639 ; -C -1 ; WX 600 ; N ucircumflex ; B 127 -16 569 639 ; -C -1 ; WX 600 ; N yacute ; B 22 -186 634 639 ; -C -1 ; WX 600 ; N zcaron ; B 115 0 576 639 ; -C -1 ; WX 600 ; N ydieresis ; B 22 -186 634 612 ; -C -1 ; WX 600 ; N copyright ; B 57 -15 663 578 ; -C -1 ; WX 600 ; N registered ; B 57 -15 663 578 ; -C -1 ; WX 600 ; N Atilde ; B 13 0 596 755 ; -C -1 ; WX 600 ; N nbspace ; B 319 0 319 0 ; -C -1 ; WX 600 ; N Ccedilla ; B 110 -173 635 576 ; -C -1 ; WX 600 ; N Acircumflex ; B 13 0 596 789 ; -C -1 ; WX 600 ; N Agrave ; B 13 0 596 789 ; -C -1 ; WX 600 ; N logicalnot ; B 160 168 621 438 ; -C -1 ; WX 600 ; N Aacute ; B 13 0 596 789 ; -C -1 ; WX 600 ; N Eth ; B 47 0 592 563 ; -C -1 ; WX 600 ; N brokenbar ; B 257 -124 444 604 ; -C -1 ; WX 600 ; N Thorn ; B 47 0 566 563 ; -C -1 ; WX 600 ; N Adieresis ; B 13 0 596 762 ; -C -1 ; WX 600 ; N mu ; B 86 -200 569 417 ; -C -1 ; WX 600 ; N .notdef ; B 319 0 319 0 ; -EndCharMetrics -EndFontMetrics diff --git a/misc/gs_afm/Helv.afm b/misc/gs_afm/Helv.afm deleted file mode 100644 index 56de4d61bb..0000000000 --- a/misc/gs_afm/Helv.afm +++ /dev/null @@ -1,1257 +0,0 @@ -StartFontMetrics 3.0 -Comment Copyright URW Software, Copyright 1994 by URW -Comment Creation Date: 8/3/1994 -Comment See the file PUBLIC (Aladdin Free Public License) for license conditions. -FontName NimbusSanL-ReguCond -FullName Nimbus Sans L Regular Condensed -FamilyName Nimbus Sans L -Weight Regular -ItalicAngle 0.0 -IsFixedPitch false -UnderlinePosition -100 -UnderlineThickness 50 -Version 001.005 -Notice URW Software, Copyright 1994 by URW -EncodingScheme AdobeStandardEncoding -FontBBox -136 -225 820 944 -CapHeight 718 -XHeight 523 -Descender -207 -Ascender 718 -StartCharMetrics 232 -C 32 ; WX 228 ; N space ; B 21 0 21 0 ; -C 33 ; WX 228 ; N exclam ; B 74 0 153 718 ; -C 34 ; WX 291 ; N quotedbl ; B 57 463 234 718 ; -C 35 ; WX 456 ; N numbersign ; B 23 0 434 688 ; -C 36 ; WX 456 ; N dollar ; B 26 -115 426 775 ; -C 37 ; WX 729 ; N percent ; B 32 -19 697 703 ; -C 38 ; WX 547 ; N ampersand ; B 36 -15 529 718 ; -C 39 ; WX 182 ; N quoteright ; B 43 462 129 718 ; -C 40 ; WX 273 ; N parenleft ; B 56 -207 245 733 ; -C 41 ; WX 273 ; N parenright ; B 28 -207 217 733 ; -C 42 ; WX 319 ; N asterisk ; B 32 431 286 718 ; -C 43 ; WX 479 ; N plus ; B 32 0 447 505 ; -C 44 ; WX 228 ; N comma ; B 71 -147 157 107 ; -C 45 ; WX 273 ; N hyphen ; B 36 232 237 322 ; -C 46 ; WX 228 ; N period ; B 71 0 157 107 ; -C 47 ; WX 228 ; N slash ; B -14 -19 242 737 ; -C 48 ; WX 456 ; N zero ; B 30 -19 426 703 ; -C 49 ; WX 456 ; N one ; B 83 0 294 703 ; -C 50 ; WX 456 ; N two ; B 21 0 416 703 ; -C 51 ; WX 456 ; N three ; B 28 -19 428 703 ; -C 52 ; WX 456 ; N four ; B 20 0 429 703 ; -C 53 ; WX 456 ; N five ; B 26 -19 421 688 ; -C 54 ; WX 456 ; N six ; B 31 -19 425 703 ; -C 55 ; WX 456 ; N seven ; B 30 0 429 688 ; -C 56 ; WX 456 ; N eight ; B 31 -19 424 703 ; -C 57 ; WX 456 ; N nine ; B 34 -19 421 703 ; -C 58 ; WX 228 ; N colon ; B 71 0 157 516 ; -C 59 ; WX 228 ; N semicolon ; B 71 -147 157 516 ; -C 60 ; WX 479 ; N less ; B 39 10 440 496 ; -C 61 ; WX 479 ; N equal ; B 32 115 447 390 ; -C 62 ; WX 479 ; N greater ; B 39 10 440 496 ; -C 63 ; WX 456 ; N question ; B 46 0 403 727 ; -C 64 ; WX 832 ; N at ; B 121 -19 712 737 ; -C 65 ; WX 547 ; N A ; B 11 0 536 718 ; -C 66 ; WX 547 ; N B ; B 61 0 514 718 ; -C 67 ; WX 592 ; N C ; B 36 -19 558 737 ; -C 68 ; WX 592 ; N D ; B 66 0 553 718 ; -C 69 ; WX 547 ; N E ; B 71 0 505 718 ; -C 70 ; WX 501 ; N F ; B 71 0 478 718 ; -C 71 ; WX 638 ; N G ; B 39 -19 577 737 ; -C 72 ; WX 592 ; N H ; B 63 0 530 718 ; -C 73 ; WX 228 ; N I ; B 75 0 154 718 ; -C 74 ; WX 410 ; N J ; B 14 -19 351 718 ; -C 75 ; WX 547 ; N K ; B 62 0 544 718 ; -C 76 ; WX 456 ; N L ; B 62 0 440 718 ; -C 77 ; WX 683 ; N M ; B 60 0 624 718 ; -C 78 ; WX 592 ; N N ; B 62 0 530 718 ; -C 79 ; WX 638 ; N O ; B 32 -19 606 737 ; -C 80 ; WX 547 ; N P ; B 71 0 510 718 ; -C 81 ; WX 638 ; N Q ; B 32 -56 606 737 ; -C 82 ; WX 592 ; N R ; B 72 0 561 718 ; -C 83 ; WX 547 ; N S ; B 40 -19 508 737 ; -C 84 ; WX 501 ; N T ; B 11 0 490 718 ; -C 85 ; WX 592 ; N U ; B 65 -19 528 718 ; -C 86 ; WX 547 ; N V ; B 16 0 531 718 ; -C 87 ; WX 774 ; N W ; B 13 0 761 718 ; -C 88 ; WX 547 ; N X ; B 16 0 531 718 ; -C 89 ; WX 547 ; N Y ; B 11 0 535 718 ; -C 90 ; WX 501 ; N Z ; B 19 0 482 718 ; -C 91 ; WX 228 ; N bracketleft ; B 52 -196 205 722 ; -C 92 ; WX 228 ; N backslash ; B -14 -19 242 737 ; -C 93 ; WX 228 ; N bracketright ; B 23 -196 176 722 ; -C 94 ; WX 385 ; N asciicircum ; B -11 264 396 688 ; -C 95 ; WX 456 ; N underscore ; B 0 -125 456 -75 ; -C 96 ; WX 182 ; N quoteleft ; B 53 469 139 725 ; -C 97 ; WX 456 ; N a ; B 30 -15 435 538 ; -C 98 ; WX 456 ; N b ; B 48 -15 424 718 ; -C 99 ; WX 410 ; N c ; B 25 -15 391 538 ; -C 100 ; WX 456 ; N d ; B 29 -15 409 718 ; -C 101 ; WX 456 ; N e ; B 33 -15 423 538 ; -C 102 ; WX 228 ; N f ; B 11 0 215 728 ; -C 103 ; WX 456 ; N g ; B 33 -220 409 538 ; -C 104 ; WX 456 ; N h ; B 53 0 403 718 ; -C 105 ; WX 182 ; N i ; B 55 0 127 718 ; -C 106 ; WX 182 ; N j ; B -13 -210 127 718 ; -C 107 ; WX 410 ; N k ; B 55 0 411 718 ; -C 108 ; WX 182 ; N l ; B 55 0 127 718 ; -C 109 ; WX 683 ; N m ; B 53 0 631 538 ; -C 110 ; WX 456 ; N n ; B 53 0 403 538 ; -C 111 ; WX 456 ; N o ; B 29 -14 427 538 ; -C 112 ; WX 456 ; N p ; B 48 -207 424 538 ; -C 113 ; WX 456 ; N q ; B 29 -207 405 538 ; -C 114 ; WX 273 ; N r ; B 63 0 272 538 ; -C 115 ; WX 410 ; N s ; B 26 -15 380 538 ; -C 116 ; WX 228 ; N t ; B 11 -7 211 669 ; -C 117 ; WX 456 ; N u ; B 56 -15 401 523 ; -C 118 ; WX 410 ; N v ; B 7 0 403 523 ; -C 119 ; WX 592 ; N w ; B 11 0 581 523 ; -C 120 ; WX 410 ; N x ; B 9 0 402 523 ; -C 121 ; WX 410 ; N y ; B 9 -214 401 523 ; -C 122 ; WX 410 ; N z ; B 25 0 385 523 ; -C 123 ; WX 274 ; N braceleft ; B 34 -196 239 722 ; -C 124 ; WX 213 ; N bar ; B 77 -19 137 737 ; -C 125 ; WX 274 ; N braceright ; B 34 -196 239 722 ; -C 126 ; WX 479 ; N asciitilde ; B 50 181 429 322 ; -C 161 ; WX 273 ; N exclamdown ; B 97 -195 176 523 ; -C 162 ; WX 456 ; N cent ; B 42 -115 421 623 ; -C 163 ; WX 456 ; N sterling ; B 27 -16 442 718 ; -C 164 ; WX 137 ; N fraction ; B -136 -19 273 703 ; -C 165 ; WX 456 ; N yen ; B 2 0 453 688 ; -C 166 ; WX 456 ; N florin ; B -9 -207 411 737 ; -C 167 ; WX 456 ; N section ; B 35 -191 420 737 ; -C 168 ; WX 456 ; N currency ; B 23 99 433 603 ; -C 169 ; WX 157 ; N quotesingle ; B 48 463 108 718 ; -C 170 ; WX 273 ; N quotedblleft ; B 31 469 252 725 ; -C 171 ; WX 456 ; N guillemotleft ; B 80 108 376 446 ; -C 172 ; WX 273 ; N guilsinglleft ; B 72 108 201 446 ; -C 173 ; WX 273 ; N guilsinglright ; B 72 108 201 446 ; -C 174 ; WX 410 ; N fi ; B 11 0 356 728 ; -C 175 ; WX 410 ; N fl ; B 11 0 354 728 ; -C 177 ; WX 456 ; N endash ; B 0 240 456 313 ; -C 178 ; WX 456 ; N dagger ; B 35 -159 421 718 ; -C 179 ; WX 456 ; N daggerdbl ; B 35 -159 421 718 ; -C 180 ; WX 228 ; N periodcentered ; B 63 190 166 315 ; -C 182 ; WX 440 ; N paragraph ; B 15 -173 408 718 ; -C 183 ; WX 287 ; N bullet ; B 15 202 273 517 ; -C 184 ; WX 182 ; N quotesinglbase ; B 43 -149 129 107 ; -C 185 ; WX 273 ; N quotedblbase ; B 21 -149 242 107 ; -C 186 ; WX 273 ; N quotedblright ; B 21 462 242 718 ; -C 187 ; WX 456 ; N guillemotright ; B 80 108 376 446 ; -C 188 ; WX 820 ; N ellipsis ; B 94 0 726 107 ; -C 189 ; WX 820 ; N perthousand ; B 6 -19 815 703 ; -C 191 ; WX 501 ; N questiondown ; B 75 -201 432 525 ; -C 193 ; WX 273 ; N grave ; B 11 593 173 734 ; -C 194 ; WX 273 ; N acute ; B 100 593 262 734 ; -C 195 ; WX 273 ; N circumflex ; B 17 593 256 734 ; -C 196 ; WX 273 ; N tilde ; B -3 606 276 722 ; -C 197 ; WX 273 ; N macron ; B 8 627 265 684 ; -C 198 ; WX 273 ; N breve ; B 11 595 263 731 ; -C 199 ; WX 273 ; N dotaccent ; B 99 604 174 706 ; -C 200 ; WX 273 ; N dieresis ; B 33 604 240 706 ; -C 202 ; WX 273 ; N ring ; B 61 572 212 756 ; -C 203 ; WX 273 ; N cedilla ; B 37 -225 212 0 ; -C 205 ; WX 273 ; N hungarumlaut ; B 25 593 335 734 ; -C 206 ; WX 273 ; N ogonek ; B 60 -225 235 0 ; -C 207 ; WX 273 ; N caron ; B 17 593 256 734 ; -C 208 ; WX 820 ; N emdash ; B 0 240 820 313 ; -C 225 ; WX 820 ; N AE ; B 7 0 780 718 ; -C 227 ; WX 303 ; N ordfeminine ; B 20 304 284 737 ; -C 232 ; WX 456 ; N Lslash ; B -16 0 440 718 ; -C 233 ; WX 638 ; N Oslash ; B 32 -19 607 737 ; -C 234 ; WX 820 ; N OE ; B 30 -19 791 737 ; -C 235 ; WX 299 ; N ordmasculine ; B 20 304 280 737 ; -C 241 ; WX 729 ; N ae ; B 30 -15 695 538 ; -C 245 ; WX 228 ; N dotlessi ; B 78 0 150 523 ; -C 248 ; WX 182 ; N lslash ; B -16 0 198 718 ; -C 249 ; WX 501 ; N oslash ; B 23 -22 440 545 ; -C 250 ; WX 774 ; N oe ; B 29 -15 740 538 ; -C 251 ; WX 501 ; N germandbls ; B 55 -15 468 728 ; -C -1 ; WX 547 ; N Yacute ; B 11 0 535 929 ; -C -1 ; WX 592 ; N Ucircumflex ; B 65 -19 528 929 ; -C -1 ; WX 592 ; N Ugrave ; B 65 -19 528 929 ; -C -1 ; WX 501 ; N Zcaron ; B 19 0 482 929 ; -C -1 ; WX 547 ; N Ydieresis ; B 11 0 535 901 ; -C -1 ; WX 273 ; N threesuperior ; B 4 270 266 714 ; -C -1 ; WX 592 ; N Uacute ; B 65 -19 528 929 ; -C -1 ; WX 273 ; N twosuperior ; B 3 280 265 714 ; -C -1 ; WX 592 ; N Udieresis ; B 65 -19 528 901 ; -C -1 ; WX 228 ; N middot ; B 63 190 166 315 ; -C -1 ; WX 273 ; N onesuperior ; B 35 281 182 703 ; -C -1 ; WX 456 ; N aacute ; B 30 -15 435 734 ; -C -1 ; WX 456 ; N agrave ; B 30 -15 435 734 ; -C -1 ; WX 456 ; N acircumflex ; B 30 -15 435 734 ; -C -1 ; WX 547 ; N Scaron ; B 40 -19 508 929 ; -C -1 ; WX 638 ; N Otilde ; B 32 -19 606 917 ; -C -1 ; WX 273 ; N sfthyphen ; B 36 232 237 322 ; -C -1 ; WX 456 ; N atilde ; B 30 -15 435 722 ; -C -1 ; WX 456 ; N aring ; B 30 -15 435 769 ; -C -1 ; WX 456 ; N adieresis ; B 30 -15 435 706 ; -C -1 ; WX 638 ; N Ograve ; B 32 -19 606 929 ; -C -1 ; WX 638 ; N Ocircumflex ; B 32 -19 606 929 ; -C -1 ; WX 638 ; N Odieresis ; B 32 -19 606 901 ; -C -1 ; WX 592 ; N Ntilde ; B 62 0 530 917 ; -C -1 ; WX 456 ; N edieresis ; B 33 -15 423 706 ; -C -1 ; WX 456 ; N eacute ; B 33 -15 423 734 ; -C -1 ; WX 456 ; N egrave ; B 33 -15 423 734 ; -C -1 ; WX 228 ; N Icircumflex ; B -5 0 234 929 ; -C -1 ; WX 456 ; N ecircumflex ; B 33 -15 423 734 ; -C -1 ; WX 228 ; N Igrave ; B -11 0 153 929 ; -C -1 ; WX 228 ; N Iacute ; B 75 0 240 903 ; -C -1 ; WX 228 ; N Idieresis ; B 11 0 218 901 ; -C -1 ; WX 328 ; N degree ; B 44 411 284 703 ; -C -1 ; WX 547 ; N Ecircumflex ; B 71 0 505 929 ; -C -1 ; WX 479 ; N minus ; B 32 216 447 289 ; -C -1 ; WX 479 ; N multiply ; B 32 0 447 506 ; -C -1 ; WX 479 ; N divide ; B 32 -19 447 524 ; -C -1 ; WX 547 ; N Egrave ; B 71 0 505 929 ; -C -1 ; WX 820 ; N trademark ; B 38 306 740 718 ; -C -1 ; WX 638 ; N Oacute ; B 32 -19 606 929 ; -C -1 ; WX 456 ; N thorn ; B 48 -207 424 718 ; -C -1 ; WX 456 ; N eth ; B 29 -15 428 737 ; -C -1 ; WX 547 ; N Eacute ; B 71 0 505 929 ; -C -1 ; WX 410 ; N ccedilla ; B 25 -225 391 538 ; -C -1 ; WX 228 ; N idieresis ; B 11 0 218 706 ; -C -1 ; WX 228 ; N iacute ; B 78 0 240 734 ; -C -1 ; WX 228 ; N igrave ; B -11 0 151 734 ; -C -1 ; WX 479 ; N plusminus ; B 32 0 447 561 ; -C -1 ; WX 684 ; N onehalf ; B 35 -19 634 703 ; -C -1 ; WX 684 ; N onequarter ; B 60 -19 620 703 ; -C -1 ; WX 684 ; N threequarters ; B 37 -19 664 714 ; -C -1 ; WX 228 ; N icircumflex ; B -5 0 234 734 ; -C -1 ; WX 547 ; N Edieresis ; B 71 0 505 901 ; -C -1 ; WX 456 ; N ntilde ; B 53 0 403 722 ; -C -1 ; WX 547 ; N Aring ; B 11 0 536 944 ; -C -1 ; WX 456 ; N odieresis ; B 29 -14 427 706 ; -C -1 ; WX 456 ; N oacute ; B 29 -14 427 734 ; -C -1 ; WX 456 ; N ograve ; B 29 -14 427 734 ; -C -1 ; WX 456 ; N ocircumflex ; B 29 -14 427 734 ; -C -1 ; WX 456 ; N otilde ; B 29 -14 427 722 ; -C -1 ; WX 410 ; N scaron ; B 26 -15 380 734 ; -C -1 ; WX 456 ; N udieresis ; B 56 -15 401 706 ; -C -1 ; WX 456 ; N uacute ; B 56 -15 401 734 ; -C -1 ; WX 456 ; N ugrave ; B 56 -15 401 734 ; -C -1 ; WX 456 ; N ucircumflex ; B 56 -15 401 734 ; -C -1 ; WX 410 ; N yacute ; B 9 -214 401 734 ; -C -1 ; WX 410 ; N zcaron ; B 25 0 385 734 ; -C -1 ; WX 410 ; N ydieresis ; B 9 -214 401 706 ; -C -1 ; WX 604 ; N copyright ; B -11 -19 617 737 ; -C -1 ; WX 604 ; N registered ; B -11 -19 617 737 ; -C -1 ; WX 547 ; N Atilde ; B 11 0 536 917 ; -C -1 ; WX 228 ; N nbspace ; B 21 0 21 0 ; -C -1 ; WX 592 ; N Ccedilla ; B 36 -225 558 737 ; -C -1 ; WX 547 ; N Acircumflex ; B 11 0 536 929 ; -C -1 ; WX 547 ; N Agrave ; B 11 0 536 929 ; -C -1 ; WX 479 ; N logicalnot ; B 32 108 447 390 ; -C -1 ; WX 547 ; N Aacute ; B 11 0 536 929 ; -C -1 ; WX 592 ; N Eth ; B 0 0 553 718 ; -C -1 ; WX 213 ; N brokenbar ; B 77 -19 137 737 ; -C -1 ; WX 547 ; N Thorn ; B 71 0 510 718 ; -C -1 ; WX 547 ; N Adieresis ; B 11 0 536 901 ; -C -1 ; WX 456 ; N mu ; B 56 -207 401 523 ; -C -1 ; WX 228 ; N .notdef ; B 21 0 21 0 ; -EndCharMetrics -StartKernData -StartKernPairs 998 -KPX A C -28 -KPX A Ccedilla -29 -KPX A G -30 -KPX A O -28 -KPX A Odieresis -28 -KPX A Q -28 -KPX A T -74 -KPX A U -29 -KPX A Uacute -29 -KPX A Ucircumflex -29 -KPX A Udieresis -29 -KPX A Ugrave -29 -KPX A V -56 -KPX A W -39 -KPX A Y -78 -KPX A a -3 -KPX A b 0 -KPX A c -10 -KPX A ccedilla -11 -KPX A comma 5 -KPX A d -11 -KPX A e -14 -KPX A g -14 -KPX A guillemotleft -40 -KPX A guilsinglleft -36 -KPX A hyphen -2 -KPX A o -14 -KPX A period 5 -KPX A q -11 -KPX A quotedblright -37 -KPX A quoteright -48 -KPX A t -15 -KPX A u -12 -KPX A v -27 -KPX A w -21 -KPX A y -28 -KPX Aacute C -28 -KPX Aacute G -30 -KPX Aacute O -28 -KPX Aacute Q -28 -KPX Aacute T -74 -KPX Aacute U -29 -KPX Aacute V -56 -KPX Aacute W -39 -KPX Aacute Y -78 -KPX Aacute a -3 -KPX Aacute b 0 -KPX Aacute c -10 -KPX Aacute comma 5 -KPX Aacute d -11 -KPX Aacute e -14 -KPX Aacute g -14 -KPX Aacute guillemotleft -40 -KPX Aacute guilsinglleft -36 -KPX Aacute hyphen -2 -KPX Aacute o -14 -KPX Aacute period 5 -KPX Aacute q -11 -KPX Aacute quoteright -48 -KPX Aacute t -15 -KPX Aacute u -12 -KPX Aacute v -27 -KPX Aacute w -21 -KPX Aacute y -28 -KPX Acircumflex C -28 -KPX Acircumflex G -30 -KPX Acircumflex O -28 -KPX Acircumflex Q -28 -KPX Acircumflex T -74 -KPX Acircumflex U -29 -KPX Acircumflex V -56 -KPX Acircumflex W -39 -KPX Acircumflex Y -78 -KPX Acircumflex comma 5 -KPX Acircumflex period 5 -KPX Adieresis C -28 -KPX Adieresis G -30 -KPX Adieresis O -28 -KPX Adieresis Q -28 -KPX Adieresis T -74 -KPX Adieresis U -29 -KPX Adieresis V -56 -KPX Adieresis W -39 -KPX Adieresis Y -78 -KPX Adieresis a -3 -KPX Adieresis b 0 -KPX Adieresis c -10 -KPX Adieresis comma 5 -KPX Adieresis d -11 -KPX Adieresis g -14 -KPX Adieresis guillemotleft -40 -KPX Adieresis guilsinglleft -36 -KPX Adieresis hyphen -2 -KPX Adieresis o -14 -KPX Adieresis period 5 -KPX Adieresis q -11 -KPX Adieresis quotedblright -37 -KPX Adieresis quoteright -48 -KPX Adieresis t -15 -KPX Adieresis u -12 -KPX Adieresis v -27 -KPX Adieresis w -21 -KPX Adieresis y -28 -KPX Agrave C -28 -KPX Agrave G -30 -KPX Agrave O -28 -KPX Agrave Q -28 -KPX Agrave T -74 -KPX Agrave U -29 -KPX Agrave V -56 -KPX Agrave W -39 -KPX Agrave Y -78 -KPX Agrave comma 5 -KPX Agrave period 5 -KPX Aring C -28 -KPX Aring G -30 -KPX Aring O -28 -KPX Aring Q -28 -KPX Aring T -74 -KPX Aring U -29 -KPX Aring V -56 -KPX Aring W -39 -KPX Aring Y -78 -KPX Aring a -3 -KPX Aring b 0 -KPX Aring c -10 -KPX Aring comma 5 -KPX Aring d -11 -KPX Aring e -14 -KPX Aring g -14 -KPX Aring guillemotleft -40 -KPX Aring guilsinglleft -36 -KPX Aring hyphen -2 -KPX Aring o -14 -KPX Aring period 5 -KPX Aring q -11 -KPX Aring quotedblright -37 -KPX Aring quoteright -48 -KPX Aring t -15 -KPX Aring u -12 -KPX Aring v -27 -KPX Aring w -21 -KPX Aring y -28 -KPX Atilde C -28 -KPX Atilde G -30 -KPX Atilde O -28 -KPX Atilde Q -28 -KPX Atilde T -74 -KPX Atilde U -29 -KPX Atilde V -56 -KPX Atilde W -39 -KPX Atilde Y -78 -KPX Atilde comma 5 -KPX Atilde period 5 -KPX B A -15 -KPX B AE -14 -KPX B Aacute -15 -KPX B Acircumflex -15 -KPX B Adieresis -15 -KPX B Aring -15 -KPX B Atilde -15 -KPX B O -3 -KPX B OE 0 -KPX B Oacute -3 -KPX B Ocircumflex -3 -KPX B Odieresis -3 -KPX B Ograve -3 -KPX B Oslash 0 -KPX B V -25 -KPX B W -15 -KPX B Y -31 -KPX C A -25 -KPX C AE -24 -KPX C Aacute -25 -KPX C Adieresis -25 -KPX C Aring -25 -KPX C H -6 -KPX C K -5 -KPX C O -4 -KPX C Oacute -4 -KPX C Odieresis -4 -KPX Ccedilla A -28 -KPX D A -33 -KPX D Aacute -33 -KPX D Acircumflex -33 -KPX D Adieresis -33 -KPX D Agrave -33 -KPX D Aring -33 -KPX D Atilde -33 -KPX D J -1 -KPX D T -30 -KPX D V -32 -KPX D W -18 -KPX D X -38 -KPX D Y -44 -KPX F A -55 -KPX F Aacute -55 -KPX F Acircumflex -55 -KPX F Adieresis -55 -KPX F Agrave -55 -KPX F Aring -55 -KPX F Atilde -55 -KPX F J -50 -KPX F O -15 -KPX F Odieresis -15 -KPX F a -26 -KPX F aacute -26 -KPX F adieresis -26 -KPX F ae -26 -KPX F aring -26 -KPX F comma -102 -KPX F e -19 -KPX F eacute -19 -KPX F hyphen -12 -KPX F i -8 -KPX F j -8 -KPX F o -17 -KPX F oacute -17 -KPX F odieresis -17 -KPX F oe -17 -KPX F oslash -17 -KPX F period -102 -KPX F r -32 -KPX F u -28 -KPX G A -4 -KPX G AE -2 -KPX G Aacute -4 -KPX G Acircumflex -4 -KPX G Adieresis -4 -KPX G Agrave -4 -KPX G Aring -4 -KPX G Atilde -4 -KPX G T -31 -KPX G V -36 -KPX G W -20 -KPX G Y -47 -KPX J A -22 -KPX J AE -21 -KPX J Adieresis -22 -KPX J Aring -22 -KPX K C -37 -KPX K G -40 -KPX K O -37 -KPX K OE -33 -KPX K Oacute -37 -KPX K Odieresis -37 -KPX K S -27 -KPX K T 22 -KPX K a -6 -KPX K adieresis -6 -KPX K ae -6 -KPX K aring -6 -KPX K e -26 -KPX K hyphen -38 -KPX K o -26 -KPX K oacute -26 -KPX K odieresis -26 -KPX K u -21 -KPX K udieresis -21 -KPX K y -52 -KPX L A 18 -KPX L AE 20 -KPX L Aacute 18 -KPX L Adieresis 18 -KPX L Aring 18 -KPX L C -28 -KPX L Ccedilla -32 -KPX L G -31 -KPX L O -29 -KPX L Oacute -29 -KPX L Ocircumflex -29 -KPX L Odieresis -29 -KPX L Ograve -29 -KPX L Otilde -29 -KPX L S -11 -KPX L T -81 -KPX L U -25 -KPX L Udieresis -25 -KPX L V -78 -KPX L W -50 -KPX L Y -92 -KPX L hyphen -110 -KPX L quotedblright -105 -KPX L quoteright -116 -KPX L u -9 -KPX L udieresis -9 -KPX L y -47 -KPX N A -4 -KPX N AE -2 -KPX N Aacute -4 -KPX N Adieresis -4 -KPX N Aring -4 -KPX N C 1 -KPX N Ccedilla 0 -KPX N G -1 -KPX N O 1 -KPX N Oacute 1 -KPX N Odieresis 1 -KPX N a -1 -KPX N aacute -1 -KPX N adieresis -1 -KPX N ae -1 -KPX N aring -1 -KPX N comma -4 -KPX N e 1 -KPX N eacute 1 -KPX N o 1 -KPX N oacute 1 -KPX N odieresis 1 -KPX N oslash 4 -KPX N period -4 -KPX N u 0 -KPX N udieresis 0 -KPX O A -29 -KPX O AE -29 -KPX O Aacute -29 -KPX O Adieresis -29 -KPX O Aring -29 -KPX O T -27 -KPX O V -30 -KPX O W -14 -KPX O X -34 -KPX O Y -42 -KPX Oacute A -29 -KPX Oacute T -27 -KPX Oacute V -30 -KPX Oacute W -14 -KPX Oacute Y -42 -KPX Ocircumflex T -27 -KPX Ocircumflex V -30 -KPX Ocircumflex Y -42 -KPX Odieresis A -29 -KPX Odieresis T -27 -KPX Odieresis V -30 -KPX Odieresis W -14 -KPX Odieresis X -34 -KPX Odieresis Y -42 -KPX Ograve T -27 -KPX Ograve V -30 -KPX Ograve Y -42 -KPX Oslash A -27 -KPX Otilde T -27 -KPX Otilde V -30 -KPX Otilde Y -42 -KPX P A -62 -KPX P AE -64 -KPX P Aacute -62 -KPX P Adieresis -62 -KPX P Aring -62 -KPX P J -70 -KPX P a -21 -KPX P aacute -21 -KPX P adieresis -21 -KPX P ae -21 -KPX P aring -21 -KPX P comma -123 -KPX P e -24 -KPX P eacute -24 -KPX P hyphen -28 -KPX P o -24 -KPX P oacute -24 -KPX P odieresis -24 -KPX P oe -22 -KPX P oslash -22 -KPX P period -123 -KPX R C -7 -KPX R Ccedilla -7 -KPX R G -9 -KPX R O -6 -KPX R OE -3 -KPX R Oacute -6 -KPX R Odieresis -6 -KPX R T -11 -KPX R U -8 -KPX R Udieresis -8 -KPX R V -22 -KPX R W -15 -KPX R Y -28 -KPX R a -6 -KPX R aacute -6 -KPX R adieresis -6 -KPX R ae -6 -KPX R aring -6 -KPX R e -5 -KPX R eacute -5 -KPX R hyphen 4 -KPX R o -5 -KPX R oacute -5 -KPX R odieresis -5 -KPX R oe -5 -KPX R u -4 -KPX R uacute -5 -KPX R udieresis -5 -KPX R y -1 -KPX S A -15 -KPX S AE -14 -KPX S Aacute -15 -KPX S Adieresis -15 -KPX S Aring -15 -KPX S T -14 -KPX S V -25 -KPX S W -17 -KPX S Y -31 -KPX S t -2 -KPX T A -78 -KPX T AE -76 -KPX T Aacute -78 -KPX T Acircumflex -78 -KPX T Adieresis -78 -KPX T Agrave -78 -KPX T Aring -78 -KPX T Atilde -78 -KPX T C -27 -KPX T G -31 -KPX T J -80 -KPX T O -26 -KPX T OE -21 -KPX T Oacute -26 -KPX T Ocircumflex -26 -KPX T Odieresis -26 -KPX T Ograve -26 -KPX T Oslash -27 -KPX T Otilde -26 -KPX T S -15 -KPX T V 17 -KPX T W 19 -KPX T Y 19 -KPX T a -79 -KPX T ae -79 -KPX T c -73 -KPX T colon -95 -KPX T comma -80 -KPX T e -77 -KPX T g -76 -KPX T guillemotleft -100 -KPX T guilsinglleft -96 -KPX T hyphen -60 -KPX T i -2 -KPX T j -2 -KPX T o -77 -KPX T oslash -72 -KPX T period -80 -KPX T r -77 -KPX T s -74 -KPX T semicolon -93 -KPX T u -75 -KPX T v -79 -KPX T w -80 -KPX T y -79 -KPX U A -32 -KPX U AE -32 -KPX U Aacute -32 -KPX U Acircumflex -32 -KPX U Adieresis -32 -KPX U Aring -32 -KPX U Atilde -32 -KPX U comma -24 -KPX U m -1 -KPX U n -1 -KPX U p 0 -KPX U period -22 -KPX U r -6 -KPX Uacute A -32 -KPX Uacute comma -24 -KPX Uacute m -1 -KPX Uacute n -1 -KPX Uacute p 0 -KPX Uacute period -22 -KPX Uacute r -6 -KPX Ucircumflex A -32 -KPX Udieresis A -32 -KPX Udieresis b 0 -KPX Udieresis comma -24 -KPX Udieresis m -1 -KPX Udieresis n -1 -KPX Udieresis p 0 -KPX Udieresis period -22 -KPX Udieresis r -6 -KPX Ugrave A -32 -KPX V A -58 -KPX V AE -60 -KPX V Aacute -58 -KPX V Acircumflex -58 -KPX V Adieresis -58 -KPX V Agrave -58 -KPX V Aring -58 -KPX V Atilde -58 -KPX V C -30 -KPX V G -34 -KPX V O -30 -KPX V Oacute -30 -KPX V Ocircumflex -30 -KPX V Odieresis -30 -KPX V Ograve -30 -KPX V Oslash -27 -KPX V Otilde -30 -KPX V S -26 -KPX V T 18 -KPX V a -47 -KPX V ae -47 -KPX V colon -41 -KPX V comma -73 -KPX V e -46 -KPX V g -44 -KPX V guillemotleft -68 -KPX V guilsinglleft -64 -KPX V hyphen -29 -KPX V i -5 -KPX V o -46 -KPX V oslash -41 -KPX V period -73 -KPX V r -37 -KPX V semicolon -41 -KPX V u -35 -KPX V y -12 -KPX W A -42 -KPX W AE -43 -KPX W Aacute -42 -KPX W Acircumflex -42 -KPX W Adieresis -42 -KPX W Agrave -42 -KPX W Aring -42 -KPX W Atilde -42 -KPX W C -15 -KPX W G -18 -KPX W O -15 -KPX W Oacute -15 -KPX W Ocircumflex -15 -KPX W Odieresis -15 -KPX W Ograve -15 -KPX W Oslash -12 -KPX W Otilde -15 -KPX W S -19 -KPX W T 20 -KPX W a -29 -KPX W ae -29 -KPX W colon -31 -KPX W comma -46 -KPX W e -26 -KPX W g -24 -KPX W guillemotleft -48 -KPX W guilsinglleft -44 -KPX W hyphen -9 -KPX W i -3 -KPX W o -26 -KPX W oslash -21 -KPX W period -46 -KPX W r -26 -KPX W semicolon -31 -KPX W u -24 -KPX W y -2 -KPX X C -33 -KPX X O -33 -KPX X Odieresis -33 -KPX X Q -33 -KPX X a -12 -KPX X e -31 -KPX X hyphen -40 -KPX X o -31 -KPX X u -27 -KPX X y -42 -KPX Y A -80 -KPX Y AE -82 -KPX Y Aacute -80 -KPX Y Acircumflex -80 -KPX Y Adieresis -80 -KPX Y Agrave -80 -KPX Y Aring -80 -KPX Y Atilde -80 -KPX Y C -42 -KPX Y G -47 -KPX Y O -43 -KPX Y Oacute -43 -KPX Y Ocircumflex -43 -KPX Y Odieresis -43 -KPX Y Ograve -43 -KPX Y Oslash -44 -KPX Y Otilde -43 -KPX Y S -33 -KPX Y T 20 -KPX Y a -73 -KPX Y ae -73 -KPX Y colon -60 -KPX Y comma -92 -KPX Y e -74 -KPX Y g -73 -KPX Y guillemotleft -103 -KPX Y guilsinglleft -99 -KPX Y hyphen -68 -KPX Y i -3 -KPX Y o -74 -KPX Y oslash -69 -KPX Y p -48 -KPX Y period -92 -KPX Y semicolon -60 -KPX Y u -54 -KPX Y v -31 -KPX Z v -24 -KPX Z y -25 -KPX a j -6 -KPX a quoteright -10 -KPX a v -19 -KPX a w -14 -KPX a y -20 -KPX aacute v -19 -KPX aacute w -14 -KPX aacute y -20 -KPX adieresis v -19 -KPX adieresis w -14 -KPX adieresis y -20 -KPX ae v -17 -KPX ae w -11 -KPX ae y -19 -KPX agrave v -19 -KPX agrave w -14 -KPX agrave y -20 -KPX aring v -19 -KPX aring w -14 -KPX aring y -20 -KPX b v -13 -KPX b w -8 -KPX b y -15 -KPX c h 2 -KPX c k 1 -KPX comma one -83 -KPX comma quotedblright -22 -KPX comma quoteright -33 -KPX e quoteright -5 -KPX e t -9 -KPX e v -16 -KPX e w -11 -KPX e x -19 -KPX e y -18 -KPX eacute v -16 -KPX eacute w -11 -KPX eacute y -18 -KPX ecircumflex v -16 -KPX ecircumflex w -11 -KPX ecircumflex y -18 -KPX eight four 6 -KPX eight one -36 -KPX eight seven -16 -KPX f a -9 -KPX f aacute -9 -KPX f adieresis -9 -KPX f ae -9 -KPX f aring -9 -KPX f e -13 -KPX f eacute -13 -KPX f f 17 -KPX f i -5 -KPX f j -5 -KPX f l -5 -KPX f o -12 -KPX f oacute -12 -KPX f odieresis -12 -KPX f oe -12 -KPX f oslash -8 -KPX f quoteright 12 -KPX f s -4 -KPX f t 17 -KPX five four 4 -KPX five one -56 -KPX five seven -16 -KPX four four 8 -KPX four one -65 -KPX four seven -39 -KPX g a 1 -KPX g adieresis 1 -KPX g ae 1 -KPX g aring 1 -KPX g e 4 -KPX g eacute 4 -KPX g l 4 -KPX g oacute 4 -KPX g odieresis 4 -KPX g r 0 -KPX guillemotright A -42 -KPX guillemotright AE -43 -KPX guillemotright Aacute -42 -KPX guillemotright Adieresis -42 -KPX guillemotright Aring -42 -KPX guillemotright T -101 -KPX guillemotright V -68 -KPX guillemotright W -48 -KPX guillemotright Y -102 -KPX guilsinglright A -38 -KPX guilsinglright AE -39 -KPX guilsinglright Aacute -38 -KPX guilsinglright Adieresis -38 -KPX guilsinglright Aring -38 -KPX guilsinglright T -96 -KPX guilsinglright V -64 -KPX guilsinglright W -44 -KPX guilsinglright Y -98 -KPX h quoteright -3 -KPX h y -14 -KPX hyphen A -3 -KPX hyphen AE -4 -KPX hyphen Aacute -3 -KPX hyphen Adieresis -3 -KPX hyphen Aring -3 -KPX hyphen T -61 -KPX hyphen V -29 -KPX hyphen W -9 -KPX hyphen Y -67 -KPX i T -2 -KPX i j 0 -KPX k a -5 -KPX k aacute -5 -KPX k adieresis -5 -KPX k ae -5 -KPX k aring -5 -KPX k comma 1 -KPX k e -19 -KPX k eacute -19 -KPX k g -18 -KPX k hyphen -31 -KPX k o -19 -KPX k oacute -19 -KPX k odieresis -19 -KPX k period 1 -KPX k s -9 -KPX k u -3 -KPX k udieresis -3 -KPX l v -3 -KPX l y -3 -KPX m p 4 -KPX m v -13 -KPX m w -7 -KPX m y -14 -KPX n T -75 -KPX n p 4 -KPX n quoteright -3 -KPX n v -14 -KPX n w -8 -KPX n y -14 -KPX nine four 1 -KPX nine one -31 -KPX nine seven -19 -KPX o T -77 -KPX o quoteright -8 -KPX o t -7 -KPX o v -15 -KPX o w -9 -KPX o x -18 -KPX o y -17 -KPX oacute v -15 -KPX oacute w -9 -KPX oacute y -17 -KPX ocircumflex t -7 -KPX odieresis t -7 -KPX odieresis v -15 -KPX odieresis w -9 -KPX odieresis x -18 -KPX odieresis y -17 -KPX ograve v -15 -KPX ograve w -9 -KPX ograve y -17 -KPX one comma -54 -KPX one eight -46 -KPX one five -49 -KPX one four -59 -KPX one nine -47 -KPX one one -90 -KPX one period -54 -KPX one seven -64 -KPX one six -44 -KPX one three -51 -KPX one two -50 -KPX one zero -43 -KPX p t -6 -KPX p y -15 -KPX period one -83 -KPX period quotedblright -22 -KPX period quoteright -33 -KPX q c 5 -KPX q u 1 -KPX quotedblbase A 24 -KPX quotedblbase AE 25 -KPX quotedblbase T -60 -KPX quotedblbase V -53 -KPX quotedblbase W -25 -KPX quotedblbase Y -71 -KPX quotedblleft A -41 -KPX quotedblleft AE -45 -KPX quotedblleft Aacute -41 -KPX quotedblleft Adieresis -41 -KPX quotedblleft Aring -41 -KPX quotedblleft T 16 -KPX quotedblleft V 24 -KPX quotedblleft W 31 -KPX quotedblleft Y 14 -KPX quotedblright A -49 -KPX quotedblright AE -52 -KPX quotedblright Aacute -49 -KPX quotedblright Adieresis -49 -KPX quotedblright Aring -49 -KPX quotedblright T 11 -KPX quotedblright V 16 -KPX quotedblright W 23 -KPX quotedblright Y 9 -KPX quoteleft A -52 -KPX quoteleft AE -56 -KPX quoteleft Aacute -52 -KPX quoteleft Adieresis -52 -KPX quoteleft Aring -52 -KPX quoteleft T 5 -KPX quoteleft V 13 -KPX quoteleft W 20 -KPX quoteleft Y 3 -KPX quoteright A -60 -KPX quoteright AE -63 -KPX quoteright Aacute -60 -KPX quoteright Adieresis -60 -KPX quoteright Aring -60 -KPX quoteright comma -48 -KPX quoteright d -16 -KPX quoteright o -24 -KPX quoteright period -48 -KPX quoteright r -15 -KPX quoteright s -13 -KPX quoteright t -3 -KPX quoteright v 0 -KPX quoteright w 1 -KPX quoteright y 0 -KPX r a -3 -KPX r aacute -3 -KPX r acircumflex -3 -KPX r adieresis -3 -KPX r ae -3 -KPX r agrave -3 -KPX r aring -3 -KPX r c -6 -KPX r ccedilla -3 -KPX r colon -5 -KPX r comma -48 -KPX r d -3 -KPX r e -10 -KPX r eacute -10 -KPX r ecircumflex -10 -KPX r egrave -10 -KPX r f 23 -KPX r g -4 -KPX r h 2 -KPX r hyphen -30 -KPX r i 1 -KPX r j 0 -KPX r k 1 -KPX r l 1 -KPX r m 2 -KPX r n 2 -KPX r o -11 -KPX r oacute -11 -KPX r ocircumflex -11 -KPX r odieresis -11 -KPX r oe -7 -KPX r ograve -11 -KPX r oslash -7 -KPX r p 4 -KPX r period -48 -KPX r q -4 -KPX r quoteright 13 -KPX r r -3 -KPX r s 2 -KPX r semicolon -5 -KPX r t 23 -KPX r u 0 -KPX r v 24 -KPX r w 22 -KPX r x 19 -KPX r y 23 -KPX r z 6 -KPX s quoteright -5 -KPX s t -5 -KPX seven colon -47 -KPX seven comma -95 -KPX seven eight -15 -KPX seven five -22 -KPX seven four -72 -KPX seven one -34 -KPX seven period -95 -KPX seven seven 3 -KPX seven six -24 -KPX seven three -14 -KPX seven two -13 -KPX six four 6 -KPX six one -31 -KPX six seven -13 -KPX t S -8 -KPX t a 1 -KPX t aacute 1 -KPX t adieresis 1 -KPX t ae 1 -KPX t aring 1 -KPX t colon -13 -KPX t e -10 -KPX t eacute -10 -KPX t h 1 -KPX t o -10 -KPX t oacute -10 -KPX t odieresis -10 -KPX t quoteright 10 -KPX t semicolon -13 -KPX three four 8 -KPX three one -34 -KPX three seven -15 -KPX two four -38 -KPX two one -29 -KPX two seven -13 -KPX u quoteright 5 -KPX v a -16 -KPX v aacute -16 -KPX v acircumflex -16 -KPX v adieresis -16 -KPX v ae -16 -KPX v agrave -16 -KPX v aring -16 -KPX v atilde -16 -KPX v c -12 -KPX v colon -8 -KPX v comma -51 -KPX v e -16 -KPX v eacute -16 -KPX v ecircumflex -16 -KPX v egrave -16 -KPX v g -15 -KPX v hyphen -3 -KPX v l -2 -KPX v o -16 -KPX v oacute -16 -KPX v odieresis -16 -KPX v ograve -16 -KPX v oslash -12 -KPX v period -51 -KPX v s -10 -KPX v semicolon -8 -KPX w a -13 -KPX w aacute -13 -KPX w acircumflex -13 -KPX w adieresis -13 -KPX w ae -13 -KPX w agrave -13 -KPX w aring -13 -KPX w atilde -13 -KPX w c -5 -KPX w colon -10 -KPX w comma -37 -KPX w e -9 -KPX w eacute -9 -KPX w ecircumflex -9 -KPX w egrave -9 -KPX w g -8 -KPX w hyphen 3 -KPX w l -4 -KPX w o -9 -KPX w oacute -9 -KPX w odieresis -9 -KPX w ograve -9 -KPX w oslash -5 -KPX w period -37 -KPX w s -7 -KPX w semicolon -10 -KPX x a -10 -KPX x c -13 -KPX x e -17 -KPX x eacute -17 -KPX x o -17 -KPX x q -14 -KPX y a -16 -KPX y aacute -16 -KPX y acircumflex -16 -KPX y adieresis -16 -KPX y ae -16 -KPX y agrave -16 -KPX y aring -16 -KPX y atilde -16 -KPX y c -13 -KPX y colon -9 -KPX y comma -50 -KPX y e -17 -KPX y eacute -17 -KPX y ecircumflex -17 -KPX y egrave -17 -KPX y g -15 -KPX y hyphen -2 -KPX y l -3 -KPX y o -17 -KPX y oacute -17 -KPX y odieresis -17 -KPX y ograve -17 -KPX y oslash -12 -KPX y period -49 -KPX y s -11 -KPX y semicolon -9 -KPX zero four 5 -KPX zero one -31 -KPX zero seven -21 -EndKernPairs -EndKernData -EndFontMetrics diff --git a/misc/gs_afm/HelvBo.afm b/misc/gs_afm/HelvBo.afm deleted file mode 100644 index a1100ae8d8..0000000000 --- a/misc/gs_afm/HelvBo.afm +++ /dev/null @@ -1,1257 +0,0 @@ -StartFontMetrics 3.0 -Comment Copyright URW Software, Copyright 1994 by URW -Comment Creation Date: 8/3/1994 -Comment See the file PUBLIC (Aladdin Free Public License) for license conditions. -FontName NimbusSanL-BoldCond -FullName Nimbus Sans L Bold Condensed -FamilyName Nimbus Sans L -Weight Bold -ItalicAngle 0.0 -IsFixedPitch false -UnderlinePosition -100 -UnderlineThickness 50 -Version 001.005 -Notice URW Software, Copyright 1994 by URW -EncodingScheme AdobeStandardEncoding -FontBBox -139 -228 822 975 -CapHeight 718 -XHeight 532 -Descender -207 -Ascender 718 -StartCharMetrics 232 -C 32 ; WX 228 ; N space ; B 21 0 21 0 ; -C 33 ; WX 273 ; N exclam ; B 74 0 200 718 ; -C 34 ; WX 389 ; N quotedbl ; B 80 447 308 718 ; -C 35 ; WX 456 ; N numbersign ; B 15 0 441 698 ; -C 36 ; WX 456 ; N dollar ; B 24 -115 429 775 ; -C 37 ; WX 729 ; N percent ; B 23 -19 706 710 ; -C 38 ; WX 592 ; N ampersand ; B 44 -19 575 718 ; -C 39 ; WX 228 ; N quoteright ; B 57 445 171 718 ; -C 40 ; WX 273 ; N parenleft ; B 29 -207 257 734 ; -C 41 ; WX 273 ; N parenright ; B 16 -207 244 734 ; -C 42 ; WX 319 ; N asterisk ; B 22 387 297 718 ; -C 43 ; WX 479 ; N plus ; B 33 0 446 506 ; -C 44 ; WX 228 ; N comma ; B 52 -168 175 147 ; -C 45 ; WX 273 ; N hyphen ; B 22 215 251 345 ; -C 46 ; WX 228 ; N period ; B 52 0 175 147 ; -C 47 ; WX 228 ; N slash ; B -27 -19 255 737 ; -C 48 ; WX 456 ; N zero ; B 26 -19 430 710 ; -C 49 ; WX 456 ; N one ; B 57 0 310 710 ; -C 50 ; WX 456 ; N two ; B 21 0 419 710 ; -C 51 ; WX 456 ; N three ; B 22 -19 423 710 ; -C 52 ; WX 456 ; N four ; B 22 0 431 710 ; -C 53 ; WX 456 ; N five ; B 22 -19 423 698 ; -C 54 ; WX 456 ; N six ; B 25 -19 426 710 ; -C 55 ; WX 456 ; N seven ; B 20 0 433 698 ; -C 56 ; WX 456 ; N eight ; B 26 -19 430 710 ; -C 57 ; WX 456 ; N nine ; B 25 -19 428 710 ; -C 58 ; WX 273 ; N colon ; B 75 0 198 512 ; -C 59 ; WX 273 ; N semicolon ; B 75 -168 198 512 ; -C 60 ; WX 479 ; N less ; B 31 -15 448 521 ; -C 61 ; WX 479 ; N equal ; B 33 87 446 419 ; -C 62 ; WX 479 ; N greater ; B 31 -15 448 521 ; -C 63 ; WX 501 ; N question ; B 49 0 456 727 ; -C 64 ; WX 800 ; N at ; B 97 -19 702 737 ; -C 65 ; WX 592 ; N A ; B 16 0 576 718 ; -C 66 ; WX 592 ; N B ; B 62 0 549 718 ; -C 67 ; WX 592 ; N C ; B 36 -19 561 737 ; -C 68 ; WX 592 ; N D ; B 62 0 562 718 ; -C 69 ; WX 547 ; N E ; B 62 0 509 718 ; -C 70 ; WX 501 ; N F ; B 62 0 481 718 ; -C 71 ; WX 638 ; N G ; B 36 -19 585 737 ; -C 72 ; WX 592 ; N H ; B 58 0 534 718 ; -C 73 ; WX 228 ; N I ; B 52 0 175 718 ; -C 74 ; WX 456 ; N J ; B 18 -18 397 718 ; -C 75 ; WX 592 ; N K ; B 71 0 592 718 ; -C 76 ; WX 501 ; N L ; B 62 0 478 718 ; -C 77 ; WX 683 ; N M ; B 57 0 627 718 ; -C 78 ; WX 592 ; N N ; B 57 0 536 718 ; -C 79 ; WX 638 ; N O ; B 36 -19 602 737 ; -C 80 ; WX 547 ; N P ; B 62 0 514 718 ; -C 81 ; WX 638 ; N Q ; B 36 -52 604 737 ; -C 82 ; WX 592 ; N R ; B 62 0 555 718 ; -C 83 ; WX 547 ; N S ; B 32 -19 516 737 ; -C 84 ; WX 501 ; N T ; B 11 0 490 718 ; -C 85 ; WX 592 ; N U ; B 59 -19 534 718 ; -C 86 ; WX 547 ; N V ; B 16 0 531 718 ; -C 87 ; WX 774 ; N W ; B 13 0 762 718 ; -C 88 ; WX 547 ; N X ; B 11 0 535 718 ; -C 89 ; WX 547 ; N Y ; B 12 0 535 718 ; -C 90 ; WX 501 ; N Z ; B 20 0 481 718 ; -C 91 ; WX 273 ; N bracketleft ; B 52 -196 253 722 ; -C 92 ; WX 228 ; N backslash ; B -27 -19 255 737 ; -C 93 ; WX 273 ; N bracketright ; B 20 -196 221 722 ; -C 94 ; WX 479 ; N asciicircum ; B 51 323 428 698 ; -C 95 ; WX 456 ; N underscore ; B 0 -125 456 -75 ; -C 96 ; WX 228 ; N quoteleft ; B 57 454 171 727 ; -C 97 ; WX 456 ; N a ; B 24 -14 432 546 ; -C 98 ; WX 501 ; N b ; B 50 -14 474 718 ; -C 99 ; WX 456 ; N c ; B 28 -14 430 546 ; -C 100 ; WX 501 ; N d ; B 28 -14 452 718 ; -C 101 ; WX 456 ; N e ; B 19 -14 433 546 ; -C 102 ; WX 273 ; N f ; B 8 0 261 727 ; -C 103 ; WX 501 ; N g ; B 33 -217 453 546 ; -C 104 ; WX 501 ; N h ; B 53 0 448 718 ; -C 105 ; WX 228 ; N i ; B 57 0 171 725 ; -C 106 ; WX 228 ; N j ; B 2 -214 171 725 ; -C 107 ; WX 456 ; N k ; B 57 0 461 718 ; -C 108 ; WX 228 ; N l ; B 57 0 171 718 ; -C 109 ; WX 729 ; N m ; B 52 0 677 546 ; -C 110 ; WX 501 ; N n ; B 53 0 448 546 ; -C 111 ; WX 501 ; N o ; B 28 -14 474 546 ; -C 112 ; WX 501 ; N p ; B 51 -207 474 546 ; -C 113 ; WX 501 ; N q ; B 28 -207 453 546 ; -C 114 ; WX 319 ; N r ; B 52 0 306 546 ; -C 115 ; WX 456 ; N s ; B 25 -14 426 546 ; -C 116 ; WX 273 ; N t ; B 8 -6 253 676 ; -C 117 ; WX 501 ; N u ; B 54 -14 447 532 ; -C 118 ; WX 456 ; N v ; B 11 0 445 532 ; -C 119 ; WX 638 ; N w ; B 8 0 631 532 ; -C 120 ; WX 456 ; N x ; B 12 0 444 532 ; -C 121 ; WX 456 ; N y ; B 8 -214 442 532 ; -C 122 ; WX 410 ; N z ; B 16 0 394 532 ; -C 123 ; WX 319 ; N braceleft ; B 39 -196 299 722 ; -C 124 ; WX 230 ; N bar ; B 69 -19 161 737 ; -C 125 ; WX 319 ; N braceright ; B 20 -196 280 722 ; -C 126 ; WX 479 ; N asciitilde ; B 50 173 429 336 ; -C 161 ; WX 273 ; N exclamdown ; B 74 -186 200 532 ; -C 162 ; WX 456 ; N cent ; B 28 -118 430 628 ; -C 163 ; WX 456 ; N sterling ; B 23 -16 444 718 ; -C 164 ; WX 137 ; N fraction ; B -139 -19 276 710 ; -C 165 ; WX 456 ; N yen ; B -7 0 463 698 ; -C 166 ; WX 456 ; N florin ; B -8 -210 423 737 ; -C 167 ; WX 456 ; N section ; B 28 -184 428 727 ; -C 168 ; WX 456 ; N currency ; B -2 76 458 636 ; -C 169 ; WX 195 ; N quotesingle ; B 57 447 138 718 ; -C 170 ; WX 410 ; N quotedblleft ; B 52 454 358 727 ; -C 171 ; WX 456 ; N guillemotleft ; B 72 76 384 484 ; -C 172 ; WX 273 ; N guilsinglleft ; B 68 76 205 484 ; -C 173 ; WX 273 ; N guilsinglright ; B 68 76 205 484 ; -C 174 ; WX 501 ; N fi ; B 8 0 444 727 ; -C 175 ; WX 501 ; N fl ; B 8 0 444 727 ; -C 177 ; WX 456 ; N endash ; B 0 226 456 333 ; -C 178 ; WX 456 ; N dagger ; B 30 -171 426 718 ; -C 179 ; WX 456 ; N daggerdbl ; B 30 -171 426 718 ; -C 180 ; WX 228 ; N periodcentered ; B 48 172 180 334 ; -C 182 ; WX 456 ; N paragraph ; B -7 -191 442 700 ; -C 183 ; WX 287 ; N bullet ; B 8 194 279 524 ; -C 184 ; WX 228 ; N quotesinglbase ; B 57 -146 171 127 ; -C 185 ; WX 410 ; N quotedblbase ; B 52 -146 358 127 ; -C 186 ; WX 410 ; N quotedblright ; B 52 445 358 718 ; -C 187 ; WX 456 ; N guillemotright ; B 72 76 384 484 ; -C 188 ; WX 820 ; N ellipsis ; B 75 0 745 147 ; -C 189 ; WX 820 ; N perthousand ; B -2 -19 822 710 ; -C 191 ; WX 501 ; N questiondown ; B 45 -195 452 532 ; -C 193 ; WX 273 ; N grave ; B -19 604 184 750 ; -C 194 ; WX 273 ; N acute ; B 89 604 292 750 ; -C 195 ; WX 273 ; N circumflex ; B -8 604 281 750 ; -C 196 ; WX 273 ; N tilde ; B -14 610 287 737 ; -C 197 ; WX 273 ; N macron ; B -5 605 278 678 ; -C 198 ; WX 273 ; N breve ; B -2 604 275 750 ; -C 199 ; WX 273 ; N dotaccent ; B 85 614 189 729 ; -C 200 ; WX 273 ; N dieresis ; B 5 614 268 729 ; -C 202 ; WX 273 ; N ring ; B 48 568 225 776 ; -C 203 ; WX 273 ; N cedilla ; B 5 -228 201 0 ; -C 205 ; WX 273 ; N hungarumlaut ; B 7 604 399 750 ; -C 206 ; WX 273 ; N ogonek ; B 58 -228 249 0 ; -C 207 ; WX 273 ; N caron ; B -8 604 281 750 ; -C 208 ; WX 820 ; N emdash ; B 0 226 820 333 ; -C 225 ; WX 820 ; N AE ; B 4 0 782 718 ; -C 227 ; WX 303 ; N ordfeminine ; B 18 276 285 737 ; -C 232 ; WX 501 ; N Lslash ; B -16 0 478 718 ; -C 233 ; WX 638 ; N Oslash ; B 27 -27 610 745 ; -C 234 ; WX 820 ; N OE ; B 30 -19 788 737 ; -C 235 ; WX 299 ; N ordmasculine ; B 5 276 295 737 ; -C 241 ; WX 729 ; N ae ; B 24 -14 704 546 ; -C 245 ; WX 228 ; N dotlessi ; B 57 0 171 532 ; -C 248 ; WX 228 ; N lslash ; B -15 0 243 718 ; -C 249 ; WX 501 ; N oslash ; B 18 -29 483 560 ; -C 250 ; WX 774 ; N oe ; B 28 -14 748 546 ; -C 251 ; WX 501 ; N germandbls ; B 57 -14 475 731 ; -C -1 ; WX 547 ; N Yacute ; B 12 0 535 936 ; -C -1 ; WX 592 ; N Ucircumflex ; B 59 -19 534 936 ; -C -1 ; WX 592 ; N Ugrave ; B 59 -19 534 936 ; -C -1 ; WX 501 ; N Zcaron ; B 20 0 481 936 ; -C -1 ; WX 547 ; N Ydieresis ; B 12 0 535 915 ; -C -1 ; WX 273 ; N threesuperior ; B 7 271 267 722 ; -C -1 ; WX 592 ; N Uacute ; B 59 -19 534 936 ; -C -1 ; WX 273 ; N twosuperior ; B 7 283 266 722 ; -C -1 ; WX 592 ; N Udieresis ; B 59 -19 534 915 ; -C -1 ; WX 228 ; N middot ; B 48 172 180 334 ; -C -1 ; WX 273 ; N onesuperior ; B 21 283 194 710 ; -C -1 ; WX 456 ; N aacute ; B 24 -14 432 750 ; -C -1 ; WX 456 ; N agrave ; B 24 -14 432 750 ; -C -1 ; WX 456 ; N acircumflex ; B 24 -14 432 750 ; -C -1 ; WX 547 ; N Scaron ; B 32 -19 516 936 ; -C -1 ; WX 638 ; N Otilde ; B 36 -19 602 923 ; -C -1 ; WX 273 ; N sfthyphen ; B 22 215 251 345 ; -C -1 ; WX 456 ; N atilde ; B 24 -14 432 737 ; -C -1 ; WX 456 ; N aring ; B 24 -14 432 803 ; -C -1 ; WX 456 ; N adieresis ; B 24 -14 432 729 ; -C -1 ; WX 638 ; N Ograve ; B 36 -19 602 936 ; -C -1 ; WX 638 ; N Ocircumflex ; B 36 -19 602 936 ; -C -1 ; WX 638 ; N Odieresis ; B 36 -19 602 915 ; -C -1 ; WX 592 ; N Ntilde ; B 57 0 536 923 ; -C -1 ; WX 456 ; N edieresis ; B 19 -14 433 729 ; -C -1 ; WX 456 ; N eacute ; B 19 -14 433 750 ; -C -1 ; WX 456 ; N egrave ; B 19 -14 433 750 ; -C -1 ; WX 228 ; N Icircumflex ; B -30 0 259 936 ; -C -1 ; WX 456 ; N ecircumflex ; B 19 -14 433 750 ; -C -1 ; WX 228 ; N Igrave ; B -41 0 175 936 ; -C -1 ; WX 228 ; N Iacute ; B 52 0 270 936 ; -C -1 ; WX 228 ; N Idieresis ; B -17 0 246 915 ; -C -1 ; WX 328 ; N degree ; B 47 426 281 712 ; -C -1 ; WX 547 ; N Ecircumflex ; B 62 0 509 936 ; -C -1 ; WX 479 ; N minus ; B 33 197 446 309 ; -C -1 ; WX 479 ; N multiply ; B 33 1 447 505 ; -C -1 ; WX 479 ; N divide ; B 33 -42 446 548 ; -C -1 ; WX 547 ; N Egrave ; B 62 0 509 936 ; -C -1 ; WX 820 ; N trademark ; B 36 306 784 718 ; -C -1 ; WX 638 ; N Oacute ; B 36 -19 602 936 ; -C -1 ; WX 501 ; N thorn ; B 51 -207 474 718 ; -C -1 ; WX 501 ; N eth ; B 28 -14 474 737 ; -C -1 ; WX 547 ; N Eacute ; B 62 0 509 936 ; -C -1 ; WX 456 ; N ccedilla ; B 28 -228 430 546 ; -C -1 ; WX 228 ; N idieresis ; B -17 0 246 729 ; -C -1 ; WX 228 ; N iacute ; B 57 0 270 750 ; -C -1 ; WX 228 ; N igrave ; B -41 0 171 750 ; -C -1 ; WX 479 ; N plusminus ; B 33 0 446 578 ; -C -1 ; WX 684 ; N onehalf ; B 21 -19 651 710 ; -C -1 ; WX 684 ; N onequarter ; B 21 -19 628 710 ; -C -1 ; WX 684 ; N threequarters ; B 13 -19 655 722 ; -C -1 ; WX 228 ; N icircumflex ; B -30 0 259 750 ; -C -1 ; WX 547 ; N Edieresis ; B 62 0 509 915 ; -C -1 ; WX 501 ; N ntilde ; B 53 0 448 737 ; -C -1 ; WX 592 ; N Aring ; B 16 0 576 975 ; -C -1 ; WX 501 ; N odieresis ; B 28 -14 474 729 ; -C -1 ; WX 501 ; N oacute ; B 28 -14 474 750 ; -C -1 ; WX 501 ; N ograve ; B 28 -14 474 750 ; -C -1 ; WX 501 ; N ocircumflex ; B 28 -14 474 750 ; -C -1 ; WX 501 ; N otilde ; B 28 -14 474 737 ; -C -1 ; WX 456 ; N scaron ; B 25 -14 426 750 ; -C -1 ; WX 501 ; N udieresis ; B 54 -14 447 729 ; -C -1 ; WX 501 ; N uacute ; B 54 -14 447 750 ; -C -1 ; WX 501 ; N ugrave ; B 54 -14 447 750 ; -C -1 ; WX 501 ; N ucircumflex ; B 54 -14 447 750 ; -C -1 ; WX 456 ; N yacute ; B 8 -214 442 750 ; -C -1 ; WX 410 ; N zcaron ; B 16 0 394 750 ; -C -1 ; WX 456 ; N ydieresis ; B 8 -214 442 729 ; -C -1 ; WX 604 ; N copyright ; B -9 -19 614 737 ; -C -1 ; WX 604 ; N registered ; B -9 -19 613 737 ; -C -1 ; WX 592 ; N Atilde ; B 16 0 576 923 ; -C -1 ; WX 228 ; N nbspace ; B 21 0 21 0 ; -C -1 ; WX 592 ; N Ccedilla ; B 36 -228 561 737 ; -C -1 ; WX 592 ; N Acircumflex ; B 16 0 576 936 ; -C -1 ; WX 592 ; N Agrave ; B 16 0 576 936 ; -C -1 ; WX 479 ; N logicalnot ; B 33 108 446 419 ; -C -1 ; WX 592 ; N Aacute ; B 16 0 576 936 ; -C -1 ; WX 592 ; N Eth ; B -4 0 562 718 ; -C -1 ; WX 230 ; N brokenbar ; B 69 -19 161 737 ; -C -1 ; WX 547 ; N Thorn ; B 62 0 514 718 ; -C -1 ; WX 592 ; N Adieresis ; B 16 0 576 915 ; -C -1 ; WX 501 ; N mu ; B 54 -207 447 532 ; -C -1 ; WX 228 ; N .notdef ; B 21 0 21 0 ; -EndCharMetrics -StartKernData -StartKernPairs 998 -KPX A C -26 -KPX A Ccedilla -26 -KPX A G -27 -KPX A O -27 -KPX A Odieresis -27 -KPX A Q -27 -KPX A T -62 -KPX A U -24 -KPX A Uacute -24 -KPX A Ucircumflex -24 -KPX A Udieresis -24 -KPX A Ugrave -24 -KPX A V -50 -KPX A W -41 -KPX A Y -69 -KPX A a -1 -KPX A b -1 -KPX A c -11 -KPX A ccedilla -11 -KPX A comma 17 -KPX A d -11 -KPX A e -7 -KPX A g -16 -KPX A guillemotleft -35 -KPX A guilsinglleft -33 -KPX A hyphen 7 -KPX A o -14 -KPX A period 17 -KPX A q -12 -KPX A quotedblright -48 -KPX A quoteright -50 -KPX A t -13 -KPX A u -12 -KPX A v -29 -KPX A w -19 -KPX A y -27 -KPX Aacute C -26 -KPX Aacute G -27 -KPX Aacute O -27 -KPX Aacute Q -27 -KPX Aacute T -62 -KPX Aacute U -24 -KPX Aacute V -50 -KPX Aacute W -41 -KPX Aacute Y -69 -KPX Aacute a -1 -KPX Aacute b -1 -KPX Aacute c -11 -KPX Aacute comma 17 -KPX Aacute d -11 -KPX Aacute e -7 -KPX Aacute g -16 -KPX Aacute guillemotleft -35 -KPX Aacute guilsinglleft -33 -KPX Aacute hyphen 7 -KPX Aacute o -14 -KPX Aacute period 17 -KPX Aacute q -12 -KPX Aacute quoteright -50 -KPX Aacute t -13 -KPX Aacute u -12 -KPX Aacute v -29 -KPX Aacute w -19 -KPX Aacute y -27 -KPX Acircumflex C -26 -KPX Acircumflex G -27 -KPX Acircumflex O -27 -KPX Acircumflex Q -27 -KPX Acircumflex T -62 -KPX Acircumflex U -24 -KPX Acircumflex V -50 -KPX Acircumflex W -41 -KPX Acircumflex Y -69 -KPX Acircumflex comma 17 -KPX Acircumflex period 17 -KPX Adieresis C -26 -KPX Adieresis G -27 -KPX Adieresis O -27 -KPX Adieresis Q -27 -KPX Adieresis T -62 -KPX Adieresis U -24 -KPX Adieresis V -50 -KPX Adieresis W -41 -KPX Adieresis Y -69 -KPX Adieresis a -1 -KPX Adieresis b -1 -KPX Adieresis c -11 -KPX Adieresis comma 17 -KPX Adieresis d -11 -KPX Adieresis g -16 -KPX Adieresis guillemotleft -35 -KPX Adieresis guilsinglleft -33 -KPX Adieresis hyphen 7 -KPX Adieresis o -14 -KPX Adieresis period 17 -KPX Adieresis q -12 -KPX Adieresis quotedblright -48 -KPX Adieresis quoteright -50 -KPX Adieresis t -13 -KPX Adieresis u -12 -KPX Adieresis v -29 -KPX Adieresis w -19 -KPX Adieresis y -27 -KPX Agrave C -26 -KPX Agrave G -27 -KPX Agrave O -27 -KPX Agrave Q -27 -KPX Agrave T -62 -KPX Agrave U -24 -KPX Agrave V -50 -KPX Agrave W -41 -KPX Agrave Y -69 -KPX Agrave comma 17 -KPX Agrave period 17 -KPX Aring C -26 -KPX Aring G -27 -KPX Aring O -27 -KPX Aring Q -27 -KPX Aring T -62 -KPX Aring U -24 -KPX Aring V -50 -KPX Aring W -41 -KPX Aring Y -69 -KPX Aring a -1 -KPX Aring b -1 -KPX Aring c -11 -KPX Aring comma 17 -KPX Aring d -11 -KPX Aring e -7 -KPX Aring g -16 -KPX Aring guillemotleft -35 -KPX Aring guilsinglleft -33 -KPX Aring hyphen 7 -KPX Aring o -14 -KPX Aring period 17 -KPX Aring q -12 -KPX Aring quotedblright -48 -KPX Aring quoteright -50 -KPX Aring t -13 -KPX Aring u -12 -KPX Aring v -29 -KPX Aring w -19 -KPX Aring y -27 -KPX Atilde C -26 -KPX Atilde G -27 -KPX Atilde O -27 -KPX Atilde Q -27 -KPX Atilde T -62 -KPX Atilde U -24 -KPX Atilde V -50 -KPX Atilde W -41 -KPX Atilde Y -69 -KPX Atilde comma 17 -KPX Atilde period 17 -KPX B A -17 -KPX B AE -11 -KPX B Aacute -17 -KPX B Acircumflex -17 -KPX B Adieresis -17 -KPX B Aring -17 -KPX B Atilde -17 -KPX B O -4 -KPX B OE 1 -KPX B Oacute -4 -KPX B Ocircumflex -4 -KPX B Odieresis -4 -KPX B Ograve -4 -KPX B Oslash 0 -KPX B V -22 -KPX B W -17 -KPX B Y -29 -KPX C A -19 -KPX C AE -14 -KPX C Aacute -19 -KPX C Adieresis -19 -KPX C Aring -19 -KPX C H 1 -KPX C K -5 -KPX C O -2 -KPX C Oacute -2 -KPX C Odieresis -2 -KPX Ccedilla A -21 -KPX D A -24 -KPX D Aacute -24 -KPX D Acircumflex -24 -KPX D Adieresis -24 -KPX D Agrave -24 -KPX D Aring -24 -KPX D Atilde -24 -KPX D J 8 -KPX D T -3 -KPX D V -20 -KPX D W -13 -KPX D X -22 -KPX D Y -31 -KPX F A -43 -KPX F Aacute -43 -KPX F Acircumflex -43 -KPX F Adieresis -43 -KPX F Agrave -43 -KPX F Aring -43 -KPX F Atilde -43 -KPX F J -14 -KPX F O -10 -KPX F Odieresis -10 -KPX F a -15 -KPX F aacute -15 -KPX F adieresis -15 -KPX F ae -16 -KPX F aring -15 -KPX F comma -71 -KPX F e -6 -KPX F eacute -6 -KPX F hyphen 8 -KPX F i -6 -KPX F j -6 -KPX F o -11 -KPX F oacute -11 -KPX F odieresis -11 -KPX F oe -11 -KPX F oslash -11 -KPX F period -71 -KPX F r -22 -KPX F u -23 -KPX G A 1 -KPX G AE 7 -KPX G Aacute 1 -KPX G Acircumflex 1 -KPX G Adieresis 1 -KPX G Agrave 1 -KPX G Aring 1 -KPX G Atilde 1 -KPX G T -7 -KPX G V -24 -KPX G W -15 -KPX G Y -35 -KPX J A -21 -KPX J AE -15 -KPX J Adieresis -21 -KPX J Aring -21 -KPX K C -35 -KPX K G -36 -KPX K O -36 -KPX K OE -30 -KPX K Oacute -36 -KPX K Odieresis -36 -KPX K S -18 -KPX K T 23 -KPX K a 0 -KPX K adieresis 0 -KPX K ae -1 -KPX K aring 0 -KPX K e -17 -KPX K hyphen -26 -KPX K o -25 -KPX K oacute -25 -KPX K odieresis -25 -KPX K u -19 -KPX K udieresis -19 -KPX K y -48 -KPX L A 16 -KPX L AE 22 -KPX L Aacute 16 -KPX L Adieresis 16 -KPX L Aring 16 -KPX L C -13 -KPX L Ccedilla -16 -KPX L G -15 -KPX L O -16 -KPX L Oacute -16 -KPX L Ocircumflex -16 -KPX L Odieresis -16 -KPX L Ograve -16 -KPX L Otilde -16 -KPX L S 3 -KPX L T -70 -KPX L U -12 -KPX L Udieresis -12 -KPX L V -64 -KPX L W -50 -KPX L Y -83 -KPX L hyphen -8 -KPX L quotedblright -116 -KPX L quoteright -118 -KPX L u -7 -KPX L udieresis -7 -KPX L y -41 -KPX N A 0 -KPX N AE 6 -KPX N Aacute 0 -KPX N Adieresis 0 -KPX N Aring 0 -KPX N C 6 -KPX N Ccedilla 6 -KPX N G 5 -KPX N O 6 -KPX N Oacute 6 -KPX N Odieresis 6 -KPX N a 7 -KPX N aacute 7 -KPX N adieresis 7 -KPX N ae 6 -KPX N aring 7 -KPX N comma 12 -KPX N e 12 -KPX N eacute 12 -KPX N o 5 -KPX N oacute 5 -KPX N odieresis 5 -KPX N oslash 7 -KPX N period 12 -KPX N u 5 -KPX N udieresis 5 -KPX O A -27 -KPX O AE -22 -KPX O Aacute -27 -KPX O Adieresis -27 -KPX O Aring -27 -KPX O T -9 -KPX O V -26 -KPX O W -17 -KPX O X -26 -KPX O Y -38 -KPX Oacute A -27 -KPX Oacute T -9 -KPX Oacute V -26 -KPX Oacute W -17 -KPX Oacute Y -38 -KPX Ocircumflex T -9 -KPX Ocircumflex V -26 -KPX Ocircumflex Y -38 -KPX Odieresis A -27 -KPX Odieresis T -9 -KPX Odieresis V -26 -KPX Odieresis W -17 -KPX Odieresis X -26 -KPX Odieresis Y -38 -KPX Ograve T -9 -KPX Ograve V -26 -KPX Ograve Y -38 -KPX Oslash A -24 -KPX Otilde T -9 -KPX Otilde V -26 -KPX Otilde Y -38 -KPX P A -51 -KPX P AE -47 -KPX P Aacute -51 -KPX P Adieresis -51 -KPX P Aring -51 -KPX P J -36 -KPX P a -12 -KPX P aacute -12 -KPX P adieresis -12 -KPX P ae -13 -KPX P aring -12 -KPX P comma -92 -KPX P e -10 -KPX P eacute -10 -KPX P hyphen -3 -KPX P o -16 -KPX P oacute -16 -KPX P odieresis -16 -KPX P oe -16 -KPX P oslash -16 -KPX P period -92 -KPX R C -2 -KPX R Ccedilla -2 -KPX R G -3 -KPX R O -3 -KPX R OE 1 -KPX R Oacute -3 -KPX R Odieresis -3 -KPX R T 3 -KPX R U -1 -KPX R Udieresis -1 -KPX R V -16 -KPX R W -12 -KPX R Y -24 -KPX R a 0 -KPX R aacute 0 -KPX R adieresis 0 -KPX R ae -1 -KPX R aring 0 -KPX R e 2 -KPX R eacute 2 -KPX R hyphen 14 -KPX R o -4 -KPX R oacute -4 -KPX R odieresis -4 -KPX R oe -4 -KPX R u -1 -KPX R uacute -2 -KPX R udieresis -2 -KPX R y 3 -KPX S A -10 -KPX S AE -5 -KPX S Aacute -10 -KPX S Adieresis -10 -KPX S Aring -10 -KPX S T 0 -KPX S V -20 -KPX S W -15 -KPX S Y -27 -KPX S t 2 -KPX T A -63 -KPX T AE -59 -KPX T Aacute -63 -KPX T Acircumflex -63 -KPX T Adieresis -63 -KPX T Agrave -63 -KPX T Aring -63 -KPX T Atilde -63 -KPX T C -8 -KPX T G -10 -KPX T J -67 -KPX T O -9 -KPX T OE -3 -KPX T Oacute -9 -KPX T Ocircumflex -9 -KPX T Odieresis -9 -KPX T Ograve -9 -KPX T Oslash -9 -KPX T Otilde -9 -KPX T S 6 -KPX T V 22 -KPX T W 23 -KPX T Y 23 -KPX T a -62 -KPX T ae -63 -KPX T c -62 -KPX T colon -73 -KPX T comma -55 -KPX T e -58 -KPX T g -65 -KPX T guillemotleft -84 -KPX T guilsinglleft -82 -KPX T hyphen -40 -KPX T i -2 -KPX T j -2 -KPX T o -65 -KPX T oslash -61 -KPX T period -55 -KPX T r -59 -KPX T s -63 -KPX T semicolon -73 -KPX T u -63 -KPX T v -68 -KPX T w -67 -KPX T y -67 -KPX U A -24 -KPX U AE -20 -KPX U Aacute -24 -KPX U Acircumflex -24 -KPX U Adieresis -24 -KPX U Aring -24 -KPX U Atilde -24 -KPX U comma -6 -KPX U m 4 -KPX U n 3 -KPX U p 4 -KPX U period -3 -KPX U r 4 -KPX Uacute A -24 -KPX Uacute comma -6 -KPX Uacute m 4 -KPX Uacute n 3 -KPX Uacute p 4 -KPX Uacute period -3 -KPX Uacute r 4 -KPX Ucircumflex A -24 -KPX Udieresis A -24 -KPX Udieresis b 4 -KPX Udieresis comma -6 -KPX Udieresis m 4 -KPX Udieresis n 3 -KPX Udieresis p 4 -KPX Udieresis period -3 -KPX Udieresis r 4 -KPX Ugrave A -24 -KPX V A -51 -KPX V AE -46 -KPX V Aacute -51 -KPX V Acircumflex -51 -KPX V Adieresis -51 -KPX V Agrave -51 -KPX V Aring -51 -KPX V Atilde -51 -KPX V C -25 -KPX V G -26 -KPX V O -26 -KPX V Oacute -26 -KPX V Ocircumflex -26 -KPX V Odieresis -26 -KPX V Ograve -26 -KPX V Oslash -22 -KPX V Otilde -26 -KPX V S -13 -KPX V T 22 -KPX V a -38 -KPX V ae -39 -KPX V colon -38 -KPX V comma -52 -KPX V e -34 -KPX V g -40 -KPX V guillemotleft -59 -KPX V guilsinglleft -57 -KPX V hyphen -14 -KPX V i -4 -KPX V o -41 -KPX V oslash -37 -KPX V period -52 -KPX V r -27 -KPX V semicolon -38 -KPX V u -31 -KPX V y -7 -KPX W A -40 -KPX W AE -36 -KPX W Aacute -40 -KPX W Acircumflex -40 -KPX W Adieresis -40 -KPX W Agrave -40 -KPX W Aring -40 -KPX W Atilde -40 -KPX W C -15 -KPX W G -16 -KPX W O -16 -KPX W Oacute -16 -KPX W Ocircumflex -16 -KPX W Odieresis -16 -KPX W Ograve -16 -KPX W Oslash -12 -KPX W Otilde -16 -KPX W S -8 -KPX W T 24 -KPX W a -26 -KPX W ae -27 -KPX W colon -31 -KPX W comma -36 -KPX W e -21 -KPX W g -28 -KPX W guillemotleft -47 -KPX W guilsinglleft -45 -KPX W hyphen -2 -KPX W i -2 -KPX W o -28 -KPX W oslash -25 -KPX W period -36 -KPX W r -21 -KPX W semicolon -31 -KPX W u -24 -KPX W y -1 -KPX X C -26 -KPX X O -27 -KPX X Odieresis -27 -KPX X Q -27 -KPX X a -5 -KPX X e -20 -KPX X hyphen -21 -KPX X o -27 -KPX X u -24 -KPX X y -35 -KPX Y A -67 -KPX Y AE -62 -KPX Y Aacute -67 -KPX Y Acircumflex -67 -KPX Y Adieresis -67 -KPX Y Agrave -67 -KPX Y Aring -67 -KPX Y Atilde -67 -KPX Y C -36 -KPX Y G -38 -KPX Y O -37 -KPX Y Oacute -37 -KPX Y Ocircumflex -37 -KPX Y Odieresis -37 -KPX Y Ograve -37 -KPX Y Oslash -37 -KPX Y Otilde -37 -KPX Y S -19 -KPX Y T 24 -KPX Y a -58 -KPX Y ae -59 -KPX Y colon -52 -KPX Y comma -65 -KPX Y e -54 -KPX Y g -61 -KPX Y guillemotleft -83 -KPX Y guilsinglleft -81 -KPX Y hyphen -42 -KPX Y i -2 -KPX Y o -61 -KPX Y oslash -57 -KPX Y p -39 -KPX Y period -65 -KPX Y semicolon -52 -KPX Y u -45 -KPX Y v -22 -KPX Z v -9 -KPX Z y -8 -KPX a j 0 -KPX a quoteright -7 -KPX a v -15 -KPX a w -5 -KPX a y -13 -KPX aacute v -15 -KPX aacute w -5 -KPX aacute y -13 -KPX adieresis v -15 -KPX adieresis w -5 -KPX adieresis y -13 -KPX ae v -16 -KPX ae w -6 -KPX ae y -15 -KPX agrave v -15 -KPX agrave w -5 -KPX agrave y -13 -KPX aring v -15 -KPX aring w -5 -KPX aring y -13 -KPX b v -15 -KPX b w -5 -KPX b y -14 -KPX c h 0 -KPX c k -2 -KPX comma one -59 -KPX comma quotedblright -18 -KPX comma quoteright -20 -KPX e quoteright -8 -KPX e t -2 -KPX e v -15 -KPX e w -6 -KPX e x -16 -KPX e y -14 -KPX eacute v -15 -KPX eacute w -6 -KPX eacute y -14 -KPX ecircumflex v -15 -KPX ecircumflex w -6 -KPX ecircumflex y -14 -KPX eight four 12 -KPX eight one -15 -KPX eight seven 0 -KPX f a -4 -KPX f aacute -4 -KPX f adieresis -4 -KPX f ae -6 -KPX f aring -4 -KPX f e -5 -KPX f eacute -5 -KPX f f 17 -KPX f i -3 -KPX f j -7 -KPX f l -3 -KPX f o -12 -KPX f oacute -12 -KPX f odieresis -12 -KPX f oe -12 -KPX f oslash -9 -KPX f quoteright 11 -KPX f s -5 -KPX f t 17 -KPX five four 8 -KPX five one -20 -KPX five seven -2 -KPX four four 12 -KPX four one -37 -KPX four seven -19 -KPX g a 5 -KPX g adieresis 5 -KPX g ae 4 -KPX g aring 5 -KPX g e 10 -KPX g eacute 10 -KPX g l 3 -KPX g oacute 4 -KPX g odieresis 4 -KPX g r 6 -KPX guillemotright A -36 -KPX guillemotright AE -31 -KPX guillemotright Aacute -36 -KPX guillemotright Adieresis -36 -KPX guillemotright Aring -36 -KPX guillemotright T -84 -KPX guillemotright V -59 -KPX guillemotright W -48 -KPX guillemotright Y -86 -KPX guilsinglright A -33 -KPX guilsinglright AE -28 -KPX guilsinglright Aacute -33 -KPX guilsinglright Adieresis -33 -KPX guilsinglright Aring -33 -KPX guilsinglright T -82 -KPX guilsinglright V -57 -KPX guilsinglright W -45 -KPX guilsinglright Y -84 -KPX h quoteright -7 -KPX h y -14 -KPX hyphen A 6 -KPX hyphen AE 12 -KPX hyphen Aacute 6 -KPX hyphen Adieresis 6 -KPX hyphen Aring 6 -KPX hyphen T -40 -KPX hyphen V -14 -KPX hyphen W -3 -KPX hyphen Y -45 -KPX i T -2 -KPX i j -1 -KPX k a 0 -KPX k aacute 0 -KPX k adieresis 0 -KPX k ae 0 -KPX k aring 0 -KPX k comma 15 -KPX k e -6 -KPX k eacute -6 -KPX k g -14 -KPX k hyphen -10 -KPX k o -13 -KPX k oacute -13 -KPX k odieresis -13 -KPX k period 15 -KPX k s -8 -KPX k u -4 -KPX k udieresis 0 -KPX l v -7 -KPX l y -5 -KPX m p 3 -KPX m v -16 -KPX m w -7 -KPX m y -14 -KPX n T -63 -KPX n p 3 -KPX n quoteright -7 -KPX n v -16 -KPX n w -7 -KPX n y -14 -KPX nine four 10 -KPX nine one -11 -KPX nine seven -4 -KPX o T -64 -KPX o quoteright -13 -KPX o t -5 -KPX o v -18 -KPX o w -8 -KPX o x -20 -KPX o y -17 -KPX oacute v -18 -KPX oacute w -8 -KPX oacute y -17 -KPX ocircumflex t -5 -KPX odieresis t -5 -KPX odieresis v -18 -KPX odieresis w -8 -KPX odieresis x -20 -KPX odieresis y -17 -KPX ograve v -18 -KPX ograve w -8 -KPX ograve y -17 -KPX one comma -32 -KPX one eight -32 -KPX one five -33 -KPX one four -47 -KPX one nine -32 -KPX one one -65 -KPX one period -32 -KPX one seven -47 -KPX one six -28 -KPX one three -36 -KPX one two -37 -KPX one zero -28 -KPX p t -1 -KPX p y -14 -KPX period one -59 -KPX period quotedblright -18 -KPX period quoteright -20 -KPX q c 6 -KPX q u 4 -KPX quotedblbase A 16 -KPX quotedblbase AE 21 -KPX quotedblbase T -56 -KPX quotedblbase V -53 -KPX quotedblbase W -38 -KPX quotedblbase Y -69 -KPX quotedblleft A -49 -KPX quotedblleft AE -45 -KPX quotedblleft Aacute -49 -KPX quotedblleft Adieresis -49 -KPX quotedblleft Aring -49 -KPX quotedblleft T 3 -KPX quotedblleft V 10 -KPX quotedblleft W 15 -KPX quotedblleft Y 2 -KPX quotedblright A -52 -KPX quotedblright AE -48 -KPX quotedblright Aacute -52 -KPX quotedblright Adieresis -52 -KPX quotedblright Aring -52 -KPX quotedblright T 4 -KPX quotedblright V 7 -KPX quotedblright W 12 -KPX quotedblright Y 0 -KPX quoteleft A -51 -KPX quoteleft AE -47 -KPX quoteleft Aacute -51 -KPX quoteleft Adieresis -51 -KPX quoteleft Aring -51 -KPX quoteleft T 1 -KPX quoteleft V 7 -KPX quoteleft W 12 -KPX quoteleft Y 0 -KPX quoteright A -55 -KPX quoteright AE -51 -KPX quoteright Aacute -55 -KPX quoteright Adieresis -55 -KPX quoteright Aring -55 -KPX quoteright comma -31 -KPX quoteright d -18 -KPX quoteright o -24 -KPX quoteright period -31 -KPX quoteright r -7 -KPX quoteright s -15 -KPX quoteright t 4 -KPX quoteright v 0 -KPX quoteright w 5 -KPX quoteright y 2 -KPX r a -1 -KPX r aacute -1 -KPX r acircumflex -1 -KPX r adieresis -1 -KPX r ae -2 -KPX r agrave -1 -KPX r aring -1 -KPX r c -4 -KPX r ccedilla -1 -KPX r colon -12 -KPX r comma -42 -KPX r d -2 -KPX r e 0 -KPX r eacute 0 -KPX r ecircumflex 0 -KPX r egrave 0 -KPX r f 17 -KPX r g -2 -KPX r h -5 -KPX r hyphen -25 -KPX r i -7 -KPX r j -7 -KPX r k -7 -KPX r l -7 -KPX r m -5 -KPX r n -5 -KPX r o -6 -KPX r oacute -6 -KPX r ocircumflex -6 -KPX r odieresis -6 -KPX r oe -6 -KPX r ograve -6 -KPX r oslash -6 -KPX r p -4 -KPX r period -42 -KPX r q -3 -KPX r quoteright 13 -KPX r r -5 -KPX r s -1 -KPX r semicolon -12 -KPX r t 17 -KPX r u -6 -KPX r v 15 -KPX r w 16 -KPX r x 10 -KPX r y 16 -KPX r z 5 -KPX s quoteright -11 -KPX s t -5 -KPX seven colon -40 -KPX seven comma -71 -KPX seven eight -2 -KPX seven five -9 -KPX seven four -53 -KPX seven one -4 -KPX seven period -71 -KPX seven seven 14 -KPX seven six -6 -KPX seven three 1 -KPX seven two 1 -KPX six four 10 -KPX six one -13 -KPX six seven 1 -KPX t S 1 -KPX t a 4 -KPX t aacute 4 -KPX t adieresis 4 -KPX t ae 4 -KPX t aring 4 -KPX t colon -5 -KPX t e -1 -KPX t eacute -1 -KPX t h 5 -KPX t o -8 -KPX t oacute -8 -KPX t odieresis -8 -KPX t quoteright 7 -KPX t semicolon -4 -KPX three four 8 -KPX three one -18 -KPX three seven -3 -KPX two four -11 -KPX two one -11 -KPX two seven 0 -KPX u quoteright 1 -KPX v a -17 -KPX v aacute -17 -KPX v acircumflex -17 -KPX v adieresis -17 -KPX v ae -18 -KPX v agrave -17 -KPX v aring -17 -KPX v atilde -17 -KPX v c -16 -KPX v colon -13 -KPX v comma -35 -KPX v e -12 -KPX v eacute -12 -KPX v ecircumflex -12 -KPX v egrave -12 -KPX v g -18 -KPX v hyphen 5 -KPX v l -7 -KPX v o -19 -KPX v oacute -19 -KPX v odieresis -19 -KPX v ograve -19 -KPX v oslash -16 -KPX v period -35 -KPX v s -17 -KPX v semicolon -13 -KPX w a -7 -KPX w aacute -7 -KPX w acircumflex -7 -KPX w adieresis -7 -KPX w ae -8 -KPX w agrave -7 -KPX w aring -7 -KPX w atilde -7 -KPX w c -6 -KPX w colon -10 -KPX w comma -20 -KPX w e -2 -KPX w eacute -2 -KPX w ecircumflex -2 -KPX w egrave -2 -KPX w g -8 -KPX w hyphen 14 -KPX w l -3 -KPX w o -9 -KPX w oacute -9 -KPX w odieresis -9 -KPX w ograve -9 -KPX w oslash -6 -KPX w period -20 -KPX w s -8 -KPX w semicolon -10 -KPX x a -10 -KPX x c -17 -KPX x e -13 -KPX x eacute -13 -KPX x o -20 -KPX x q -17 -KPX y a -18 -KPX y aacute -18 -KPX y acircumflex -18 -KPX y adieresis -18 -KPX y ae -19 -KPX y agrave -18 -KPX y aring -18 -KPX y atilde -18 -KPX y c -18 -KPX y colon -14 -KPX y comma -36 -KPX y e -14 -KPX y eacute -14 -KPX y ecircumflex -14 -KPX y egrave -14 -KPX y g -20 -KPX y hyphen 4 -KPX y l -8 -KPX y o -20 -KPX y oacute -20 -KPX y odieresis -20 -KPX y ograve -20 -KPX y oslash -17 -KPX y period -35 -KPX y s -19 -KPX y semicolon -14 -KPX zero four 11 -KPX zero one -10 -KPX zero seven -1 -EndKernPairs -EndKernData -EndFontMetrics diff --git a/misc/gs_afm/HelvBoO.afm b/misc/gs_afm/HelvBoO.afm deleted file mode 100644 index 37efe8a3b8..0000000000 --- a/misc/gs_afm/HelvBoO.afm +++ /dev/null @@ -1,1257 +0,0 @@ -StartFontMetrics 3.0 -Comment Copyright URW Software, Copyright 1994 by URW -Comment Creation Date: 8/3/1994 -Comment See the file PUBLIC (Aladdin Free Public License) for license conditions. -FontName NimbusSanL-BoldCondItal -FullName Nimbus Sans L Bold Condensed Italic -FamilyName Nimbus Sans L -Weight Bold -ItalicAngle -9.0 -IsFixedPitch false -UnderlinePosition -100 -UnderlineThickness 50 -Version 001.005 -Notice URW Software, Copyright 1994 by URW -EncodingScheme AdobeStandardEncoding -FontBBox -143 -228 913 989 -CapHeight 718 -XHeight 532 -Descender -207 -Ascender 718 -StartCharMetrics 232 -C 32 ; WX 228 ; N space ; B 21 0 21 0 ; -C 33 ; WX 273 ; N exclam ; B 77 0 325 718 ; -C 34 ; WX 389 ; N quotedbl ; B 158 447 433 718 ; -C 35 ; WX 456 ; N numbersign ; B 49 0 528 698 ; -C 36 ; WX 456 ; N dollar ; B 55 -115 510 775 ; -C 37 ; WX 729 ; N percent ; B 112 -19 739 710 ; -C 38 ; WX 592 ; N ampersand ; B 73 -19 600 718 ; -C 39 ; WX 228 ; N quoteright ; B 137 445 297 718 ; -C 40 ; WX 273 ; N parenleft ; B 62 -207 385 734 ; -C 41 ; WX 273 ; N parenright ; B -21 -207 302 734 ; -C 42 ; WX 319 ; N asterisk ; B 120 387 394 718 ; -C 43 ; WX 479 ; N plus ; B 67 0 500 506 ; -C 44 ; WX 228 ; N comma ; B 23 -168 201 146 ; -C 45 ; WX 273 ; N hyphen ; B 60 215 311 345 ; -C 46 ; WX 228 ; N period ; B 52 0 201 146 ; -C 47 ; WX 228 ; N slash ; B -30 -19 383 737 ; -C 48 ; WX 456 ; N zero ; B 71 -19 506 710 ; -C 49 ; WX 456 ; N one ; B 142 0 434 710 ; -C 50 ; WX 456 ; N two ; B 21 0 508 710 ; -C 51 ; WX 456 ; N three ; B 54 -19 499 710 ; -C 52 ; WX 456 ; N four ; B 50 0 490 710 ; -C 53 ; WX 456 ; N five ; B 53 -19 522 698 ; -C 54 ; WX 456 ; N six ; B 70 -19 507 710 ; -C 55 ; WX 456 ; N seven ; B 102 0 555 698 ; -C 56 ; WX 456 ; N eight ; B 57 -19 505 710 ; -C 57 ; WX 456 ; N nine ; B 64 -19 504 710 ; -C 58 ; WX 273 ; N colon ; B 75 0 288 512 ; -C 59 ; WX 273 ; N semicolon ; B 46 -168 288 512 ; -C 60 ; WX 479 ; N less ; B 67 -15 537 521 ; -C 61 ; WX 479 ; N equal ; B 48 87 519 419 ; -C 62 ; WX 479 ; N greater ; B 30 -15 500 521 ; -C 63 ; WX 501 ; N question ; B 135 0 550 727 ; -C 64 ; WX 800 ; N at ; B 152 -19 782 737 ; -C 65 ; WX 592 ; N A ; B 16 0 576 718 ; -C 66 ; WX 592 ; N B ; B 62 0 626 718 ; -C 67 ; WX 592 ; N C ; B 88 -19 647 737 ; -C 68 ; WX 592 ; N D ; B 62 0 637 718 ; -C 69 ; WX 547 ; N E ; B 62 0 620 718 ; -C 70 ; WX 501 ; N F ; B 62 0 606 718 ; -C 71 ; WX 638 ; N G ; B 89 -19 670 737 ; -C 72 ; WX 592 ; N H ; B 58 0 659 718 ; -C 73 ; WX 228 ; N I ; B 52 0 301 718 ; -C 74 ; WX 456 ; N J ; B 49 -18 522 718 ; -C 75 ; WX 592 ; N K ; B 71 0 703 718 ; -C 76 ; WX 501 ; N L ; B 62 0 501 718 ; -C 77 ; WX 683 ; N M ; B 57 0 752 718 ; -C 78 ; WX 592 ; N N ; B 57 0 661 718 ; -C 79 ; WX 638 ; N O ; B 88 -19 675 737 ; -C 80 ; WX 547 ; N P ; B 62 0 605 718 ; -C 81 ; WX 638 ; N Q ; B 88 -52 675 737 ; -C 82 ; WX 592 ; N R ; B 62 0 638 718 ; -C 83 ; WX 547 ; N S ; B 66 -19 588 737 ; -C 84 ; WX 501 ; N T ; B 114 0 615 718 ; -C 85 ; WX 592 ; N U ; B 96 -19 659 718 ; -C 86 ; WX 547 ; N V ; B 141 0 656 718 ; -C 87 ; WX 774 ; N W ; B 138 0 887 718 ; -C 88 ; WX 547 ; N X ; B 11 0 648 718 ; -C 89 ; WX 547 ; N Y ; B 137 0 661 718 ; -C 90 ; WX 501 ; N Z ; B 20 0 604 718 ; -C 91 ; WX 273 ; N bracketleft ; B 17 -196 379 722 ; -C 92 ; WX 228 ; N backslash ; B 101 -19 252 737 ; -C 93 ; WX 273 ; N bracketright ; B -14 -196 347 722 ; -C 94 ; WX 479 ; N asciicircum ; B 107 323 484 698 ; -C 95 ; WX 456 ; N underscore ; B -22 -125 443 -75 ; -C 96 ; WX 228 ; N quoteleft ; B 136 454 296 727 ; -C 97 ; WX 456 ; N a ; B 45 -14 478 546 ; -C 98 ; WX 501 ; N b ; B 50 -14 529 718 ; -C 99 ; WX 456 ; N c ; B 65 -14 491 546 ; -C 100 ; WX 501 ; N d ; B 67 -14 577 718 ; -C 101 ; WX 456 ; N e ; B 58 -14 486 546 ; -C 102 ; WX 273 ; N f ; B 71 0 385 727 ; -C 103 ; WX 501 ; N g ; B 31 -217 546 546 ; -C 104 ; WX 501 ; N h ; B 53 0 516 718 ; -C 105 ; WX 228 ; N i ; B 57 0 298 725 ; -C 106 ; WX 228 ; N j ; B -35 -214 298 725 ; -C 107 ; WX 456 ; N k ; B 57 0 549 718 ; -C 108 ; WX 228 ; N l ; B 57 0 297 718 ; -C 109 ; WX 729 ; N m ; B 52 0 746 546 ; -C 110 ; WX 501 ; N n ; B 53 0 516 546 ; -C 111 ; WX 501 ; N o ; B 67 -14 527 546 ; -C 112 ; WX 501 ; N p ; B 15 -207 529 546 ; -C 113 ; WX 501 ; N q ; B 66 -207 545 546 ; -C 114 ; WX 319 ; N r ; B 52 0 401 546 ; -C 115 ; WX 456 ; N s ; B 52 -14 479 546 ; -C 116 ; WX 273 ; N t ; B 82 -6 346 676 ; -C 117 ; WX 501 ; N u ; B 80 -14 540 532 ; -C 118 ; WX 456 ; N v ; B 103 0 538 532 ; -C 119 ; WX 638 ; N w ; B 101 0 723 532 ; -C 120 ; WX 456 ; N x ; B 12 0 531 532 ; -C 121 ; WX 456 ; N y ; B 34 -214 535 532 ; -C 122 ; WX 410 ; N z ; B 16 0 478 532 ; -C 123 ; WX 319 ; N braceleft ; B 77 -196 425 722 ; -C 124 ; WX 230 ; N bar ; B 66 -19 289 737 ; -C 125 ; WX 319 ; N braceright ; B -14 -196 333 722 ; -C 126 ; WX 479 ; N asciitilde ; B 94 173 473 336 ; -C 161 ; WX 273 ; N exclamdown ; B 41 -186 290 532 ; -C 162 ; WX 456 ; N cent ; B 65 -118 491 628 ; -C 163 ; WX 456 ; N sterling ; B 41 -16 520 718 ; -C 164 ; WX 137 ; N fraction ; B -143 -19 399 710 ; -C 165 ; WX 456 ; N yen ; B 49 0 585 698 ; -C 166 ; WX 456 ; N florin ; B -41 -210 548 737 ; -C 167 ; WX 456 ; N section ; B 50 -184 491 727 ; -C 168 ; WX 456 ; N currency ; B 22 76 558 636 ; -C 169 ; WX 195 ; N quotesingle ; B 135 447 263 718 ; -C 170 ; WX 410 ; N quotedblleft ; B 132 454 482 727 ; -C 171 ; WX 456 ; N guillemotleft ; B 111 76 468 484 ; -C 172 ; WX 273 ; N guilsinglleft ; B 106 76 289 484 ; -C 173 ; WX 273 ; N guilsinglright ; B 81 76 264 484 ; -C 174 ; WX 501 ; N fi ; B 71 0 571 727 ; -C 175 ; WX 501 ; N fl ; B 71 0 570 727 ; -C 177 ; WX 456 ; N endash ; B 40 227 514 333 ; -C 178 ; WX 456 ; N dagger ; B 97 -171 513 718 ; -C 179 ; WX 456 ; N daggerdbl ; B 38 -171 515 718 ; -C 180 ; WX 228 ; N periodcentered ; B 90 172 226 334 ; -C 182 ; WX 456 ; N paragraph ; B 80 -191 564 700 ; -C 183 ; WX 287 ; N bullet ; B 68 194 345 524 ; -C 184 ; WX 228 ; N quotesinglbase ; B 34 -146 194 127 ; -C 185 ; WX 410 ; N quotedblbase ; B 29 -146 380 127 ; -C 186 ; WX 410 ; N quotedblright ; B 132 445 483 718 ; -C 187 ; WX 456 ; N guillemotright ; B 85 76 443 484 ; -C 188 ; WX 820 ; N ellipsis ; B 75 0 770 146 ; -C 189 ; WX 820 ; N perthousand ; B 62 -19 851 710 ; -C 191 ; WX 501 ; N questiondown ; B 44 -195 459 532 ; -C 193 ; WX 273 ; N grave ; B 112 604 290 750 ; -C 194 ; WX 273 ; N acute ; B 194 604 423 750 ; -C 195 ; WX 273 ; N circumflex ; B 97 604 387 750 ; -C 196 ; WX 273 ; N tilde ; B 92 610 415 737 ; -C 197 ; WX 273 ; N macron ; B 100 604 396 678 ; -C 198 ; WX 273 ; N breve ; B 128 604 405 750 ; -C 199 ; WX 273 ; N dotaccent ; B 192 614 316 729 ; -C 200 ; WX 273 ; N dieresis ; B 112 614 395 729 ; -C 202 ; WX 273 ; N ring ; B 164 568 344 776 ; -C 203 ; WX 273 ; N cedilla ; B -30 -228 180 0 ; -C 205 ; WX 273 ; N hungarumlaut ; B 113 604 529 750 ; -C 206 ; WX 273 ; N ogonek ; B 33 -228 216 0 ; -C 207 ; WX 273 ; N caron ; B 123 604 412 750 ; -C 208 ; WX 820 ; N emdash ; B 40 227 878 333 ; -C 225 ; WX 820 ; N AE ; B 4 0 902 718 ; -C 227 ; WX 303 ; N ordfeminine ; B 75 276 381 737 ; -C 232 ; WX 501 ; N Lslash ; B 28 0 501 718 ; -C 233 ; WX 638 ; N Oslash ; B 29 -27 733 745 ; -C 234 ; WX 820 ; N OE ; B 81 -19 913 737 ; -C 235 ; WX 299 ; N ordmasculine ; B 75 276 398 737 ; -C 241 ; WX 729 ; N ae ; B 46 -14 757 546 ; -C 245 ; WX 228 ; N dotlessi ; B 57 0 264 532 ; -C 248 ; WX 228 ; N lslash ; B 33 0 334 718 ; -C 249 ; WX 501 ; N oslash ; B 18 -29 575 560 ; -C 250 ; WX 774 ; N oe ; B 67 -14 801 546 ; -C 251 ; WX 501 ; N germandbls ; B 57 -14 539 731 ; -C -1 ; WX 547 ; N Yacute ; B 137 0 661 936 ; -C -1 ; WX 592 ; N Ucircumflex ; B 96 -19 659 936 ; -C -1 ; WX 592 ; N Ugrave ; B 96 -19 659 936 ; -C -1 ; WX 501 ; N Zcaron ; B 20 0 604 936 ; -C -1 ; WX 547 ; N Ydieresis ; B 137 0 661 915 ; -C -1 ; WX 273 ; N threesuperior ; B 75 271 361 722 ; -C -1 ; WX 592 ; N Uacute ; B 96 -19 659 936 ; -C -1 ; WX 273 ; N twosuperior ; B 57 283 368 722 ; -C -1 ; WX 592 ; N Udieresis ; B 96 -19 659 915 ; -C -1 ; WX 228 ; N middot ; B 90 172 226 334 ; -C -1 ; WX 273 ; N onesuperior ; B 121 283 318 710 ; -C -1 ; WX 456 ; N aacute ; B 45 -14 514 750 ; -C -1 ; WX 456 ; N agrave ; B 45 -14 478 750 ; -C -1 ; WX 456 ; N acircumflex ; B 45 -14 478 750 ; -C -1 ; WX 547 ; N Scaron ; B 66 -19 588 936 ; -C -1 ; WX 638 ; N Otilde ; B 88 -19 675 923 ; -C -1 ; WX 273 ; N sfthyphen ; B 60 215 311 345 ; -C -1 ; WX 456 ; N atilde ; B 45 -14 507 737 ; -C -1 ; WX 456 ; N aring ; B 45 -14 478 803 ; -C -1 ; WX 456 ; N adieresis ; B 45 -14 487 729 ; -C -1 ; WX 638 ; N Ograve ; B 88 -19 675 936 ; -C -1 ; WX 638 ; N Ocircumflex ; B 88 -19 675 936 ; -C -1 ; WX 638 ; N Odieresis ; B 88 -19 675 915 ; -C -1 ; WX 592 ; N Ntilde ; B 57 0 661 923 ; -C -1 ; WX 456 ; N edieresis ; B 58 -14 488 729 ; -C -1 ; WX 456 ; N eacute ; B 58 -14 515 750 ; -C -1 ; WX 456 ; N egrave ; B 58 -14 486 750 ; -C -1 ; WX 228 ; N Icircumflex ; B 52 0 397 936 ; -C -1 ; WX 456 ; N ecircumflex ; B 58 -14 486 750 ; -C -1 ; WX 228 ; N Igrave ; B 52 0 301 936 ; -C -1 ; WX 228 ; N Iacute ; B 52 0 433 936 ; -C -1 ; WX 228 ; N Idieresis ; B 52 0 405 915 ; -C -1 ; WX 328 ; N degree ; B 143 426 383 712 ; -C -1 ; WX 547 ; N Ecircumflex ; B 62 0 620 936 ; -C -1 ; WX 479 ; N minus ; B 67 197 500 309 ; -C -1 ; WX 479 ; N multiply ; B 47 1 520 505 ; -C -1 ; WX 479 ; N divide ; B 67 -42 500 548 ; -C -1 ; WX 547 ; N Egrave ; B 62 0 620 936 ; -C -1 ; WX 820 ; N trademark ; B 146 306 909 718 ; -C -1 ; WX 638 ; N Oacute ; B 88 -19 675 936 ; -C -1 ; WX 501 ; N thorn ; B 15 -207 529 718 ; -C -1 ; WX 501 ; N eth ; B 67 -14 549 737 ; -C -1 ; WX 547 ; N Eacute ; B 62 0 620 936 ; -C -1 ; WX 456 ; N ccedilla ; B 65 -228 491 546 ; -C -1 ; WX 228 ; N idieresis ; B 57 0 373 729 ; -C -1 ; WX 228 ; N iacute ; B 57 0 401 750 ; -C -1 ; WX 228 ; N igrave ; B 57 0 268 750 ; -C -1 ; WX 479 ; N plusminus ; B 33 0 512 578 ; -C -1 ; WX 684 ; N onehalf ; B 108 -19 704 710 ; -C -1 ; WX 684 ; N onequarter ; B 108 -19 661 710 ; -C -1 ; WX 684 ; N threequarters ; B 82 -19 688 722 ; -C -1 ; WX 228 ; N icircumflex ; B 57 0 365 750 ; -C -1 ; WX 547 ; N Edieresis ; B 62 0 620 915 ; -C -1 ; WX 501 ; N ntilde ; B 53 0 529 737 ; -C -1 ; WX 592 ; N Aring ; B 16 0 576 989 ; -C -1 ; WX 501 ; N odieresis ; B 67 -14 527 729 ; -C -1 ; WX 501 ; N oacute ; B 67 -14 537 750 ; -C -1 ; WX 501 ; N ograve ; B 67 -14 527 750 ; -C -1 ; WX 501 ; N ocircumflex ; B 67 -14 527 750 ; -C -1 ; WX 501 ; N otilde ; B 67 -14 529 737 ; -C -1 ; WX 456 ; N scaron ; B 52 -14 503 750 ; -C -1 ; WX 501 ; N udieresis ; B 80 -14 540 729 ; -C -1 ; WX 501 ; N uacute ; B 80 -14 540 750 ; -C -1 ; WX 501 ; N ugrave ; B 80 -14 540 750 ; -C -1 ; WX 501 ; N ucircumflex ; B 80 -14 540 750 ; -C -1 ; WX 456 ; N yacute ; B 34 -214 535 750 ; -C -1 ; WX 410 ; N zcaron ; B 16 0 480 750 ; -C -1 ; WX 456 ; N ydieresis ; B 34 -214 535 729 ; -C -1 ; WX 604 ; N copyright ; B 46 -19 685 737 ; -C -1 ; WX 604 ; N registered ; B 45 -19 684 737 ; -C -1 ; WX 592 ; N Atilde ; B 16 0 607 923 ; -C -1 ; WX 228 ; N nbspace ; B 21 0 21 0 ; -C -1 ; WX 592 ; N Ccedilla ; B 88 -228 647 737 ; -C -1 ; WX 592 ; N Acircumflex ; B 16 0 579 936 ; -C -1 ; WX 592 ; N Agrave ; B 16 0 576 936 ; -C -1 ; WX 479 ; N logicalnot ; B 86 108 519 419 ; -C -1 ; WX 592 ; N Aacute ; B 16 0 615 936 ; -C -1 ; WX 592 ; N Eth ; B 51 0 637 718 ; -C -1 ; WX 230 ; N brokenbar ; B 66 -19 289 737 ; -C -1 ; WX 547 ; N Thorn ; B 62 0 588 718 ; -C -1 ; WX 592 ; N Adieresis ; B 16 0 587 915 ; -C -1 ; WX 501 ; N mu ; B 18 -207 540 532 ; -C -1 ; WX 228 ; N .notdef ; B 21 0 21 0 ; -EndCharMetrics -StartKernData -StartKernPairs 998 -KPX A C -30 -KPX A Ccedilla -29 -KPX A G -31 -KPX A O -31 -KPX A Odieresis -31 -KPX A Q -30 -KPX A T -72 -KPX A U -29 -KPX A Uacute -29 -KPX A Ucircumflex -29 -KPX A Udieresis -29 -KPX A Ugrave -29 -KPX A V -56 -KPX A W -46 -KPX A Y -74 -KPX A a -11 -KPX A b -11 -KPX A c -15 -KPX A ccedilla -14 -KPX A comma 9 -KPX A d -14 -KPX A e -11 -KPX A g -19 -KPX A guillemotleft -41 -KPX A guilsinglleft -39 -KPX A hyphen 1 -KPX A o -17 -KPX A period 11 -KPX A q -14 -KPX A quotedblright -54 -KPX A quoteright -56 -KPX A t -16 -KPX A u -16 -KPX A v -34 -KPX A w -24 -KPX A y -32 -KPX Aacute C -31 -KPX Aacute G -32 -KPX Aacute O -32 -KPX Aacute Q -32 -KPX Aacute T -72 -KPX Aacute U -30 -KPX Aacute V -56 -KPX Aacute W -46 -KPX Aacute Y -74 -KPX Aacute a -11 -KPX Aacute b -11 -KPX Aacute c -16 -KPX Aacute comma 9 -KPX Aacute d -15 -KPX Aacute e -12 -KPX Aacute g -19 -KPX Aacute guillemotleft -42 -KPX Aacute guilsinglleft -39 -KPX Aacute hyphen 1 -KPX Aacute o -19 -KPX Aacute period 10 -KPX Aacute q -15 -KPX Aacute quoteright -56 -KPX Aacute t -17 -KPX Aacute u -17 -KPX Aacute v -33 -KPX Aacute w -24 -KPX Aacute y -32 -KPX Acircumflex C -29 -KPX Acircumflex G -30 -KPX Acircumflex O -30 -KPX Acircumflex Q -30 -KPX Acircumflex T -72 -KPX Acircumflex U -29 -KPX Acircumflex V -56 -KPX Acircumflex W -46 -KPX Acircumflex Y -74 -KPX Acircumflex comma 10 -KPX Acircumflex period 11 -KPX Adieresis C -30 -KPX Adieresis G -31 -KPX Adieresis O -31 -KPX Adieresis Q -31 -KPX Adieresis T -72 -KPX Adieresis U -30 -KPX Adieresis V -56 -KPX Adieresis W -46 -KPX Adieresis Y -74 -KPX Adieresis a -11 -KPX Adieresis b -11 -KPX Adieresis c -15 -KPX Adieresis comma 9 -KPX Adieresis d -15 -KPX Adieresis g -19 -KPX Adieresis guillemotleft -42 -KPX Adieresis guilsinglleft -39 -KPX Adieresis hyphen 1 -KPX Adieresis o -18 -KPX Adieresis period 10 -KPX Adieresis q -15 -KPX Adieresis quotedblright -54 -KPX Adieresis quoteright -56 -KPX Adieresis t -16 -KPX Adieresis u -16 -KPX Adieresis v -34 -KPX Adieresis w -24 -KPX Adieresis y -32 -KPX Agrave C -30 -KPX Agrave G -31 -KPX Agrave O -31 -KPX Agrave Q -30 -KPX Agrave T -72 -KPX Agrave U -29 -KPX Agrave V -56 -KPX Agrave W -46 -KPX Agrave Y -74 -KPX Agrave comma 9 -KPX Agrave period 11 -KPX Aring C -30 -KPX Aring G -31 -KPX Aring O -31 -KPX Aring Q -30 -KPX Aring T -72 -KPX Aring U -29 -KPX Aring V -56 -KPX Aring W -46 -KPX Aring Y -74 -KPX Aring a -11 -KPX Aring b -11 -KPX Aring c -15 -KPX Aring comma 9 -KPX Aring d -14 -KPX Aring e -11 -KPX Aring g -19 -KPX Aring guillemotleft -41 -KPX Aring guilsinglleft -39 -KPX Aring hyphen 1 -KPX Aring o -17 -KPX Aring period 11 -KPX Aring q -14 -KPX Aring quotedblright -54 -KPX Aring quoteright -56 -KPX Aring t -16 -KPX Aring u -16 -KPX Aring v -34 -KPX Aring w -24 -KPX Aring y -32 -KPX Atilde C -31 -KPX Atilde G -32 -KPX Atilde O -32 -KPX Atilde Q -32 -KPX Atilde T -73 -KPX Atilde U -31 -KPX Atilde V -56 -KPX Atilde W -46 -KPX Atilde Y -74 -KPX Atilde comma 9 -KPX Atilde period 9 -KPX B A -26 -KPX B AE -21 -KPX B Aacute -26 -KPX B Acircumflex -26 -KPX B Adieresis -26 -KPX B Aring -26 -KPX B Atilde -26 -KPX B O -12 -KPX B OE -6 -KPX B Oacute -12 -KPX B Ocircumflex -12 -KPX B Odieresis -12 -KPX B Ograve -12 -KPX B Oslash -8 -KPX B V -30 -KPX B W -21 -KPX B Y -40 -KPX C A -29 -KPX C AE -23 -KPX C Aacute -29 -KPX C Adieresis -29 -KPX C Aring -29 -KPX C H -7 -KPX C K -13 -KPX C O -12 -KPX C Oacute -12 -KPX C Odieresis -12 -KPX Ccedilla A -31 -KPX D A -31 -KPX D Aacute -31 -KPX D Acircumflex -31 -KPX D Adieresis -31 -KPX D Agrave -31 -KPX D Aring -31 -KPX D Atilde -31 -KPX D J -1 -KPX D T -14 -KPX D V -25 -KPX D W -15 -KPX D X -28 -KPX D Y -43 -KPX F A -53 -KPX F Aacute -53 -KPX F Acircumflex -53 -KPX F Adieresis -53 -KPX F Agrave -53 -KPX F Aring -53 -KPX F Atilde -53 -KPX F J -24 -KPX F O -19 -KPX F Odieresis -19 -KPX F a -24 -KPX F aacute -24 -KPX F adieresis -24 -KPX F ae -24 -KPX F aring -24 -KPX F comma -77 -KPX F e -15 -KPX F eacute -15 -KPX F hyphen 0 -KPX F i -14 -KPX F j -13 -KPX F o -20 -KPX F oacute -20 -KPX F odieresis -20 -KPX F oe -19 -KPX F oslash -20 -KPX F period -77 -KPX F r -30 -KPX F u -31 -KPX G A -8 -KPX G AE -2 -KPX G Aacute -8 -KPX G Acircumflex -8 -KPX G Adieresis -8 -KPX G Agrave -8 -KPX G Aring -8 -KPX G Atilde -8 -KPX G T -18 -KPX G V -29 -KPX G W -20 -KPX G Y -47 -KPX J A -30 -KPX J AE -25 -KPX J Adieresis -30 -KPX J Aring -30 -KPX K C -41 -KPX K G -43 -KPX K O -42 -KPX K OE -36 -KPX K Oacute -42 -KPX K Odieresis -42 -KPX K S -30 -KPX K T 14 -KPX K a -10 -KPX K adieresis -10 -KPX K ae -11 -KPX K aring -10 -KPX K e -27 -KPX K hyphen -34 -KPX K o -35 -KPX K oacute -35 -KPX K odieresis -35 -KPX K u -30 -KPX K udieresis -30 -KPX K y -57 -KPX L A 6 -KPX L AE 12 -KPX L Aacute 6 -KPX L Adieresis 6 -KPX L Aring 6 -KPX L C -25 -KPX L Ccedilla -26 -KPX L G -27 -KPX L O -26 -KPX L Oacute -26 -KPX L Ocircumflex -26 -KPX L Odieresis -26 -KPX L Ograve -26 -KPX L Otilde -26 -KPX L S -8 -KPX L T -79 -KPX L U -23 -KPX L Udieresis -23 -KPX L V -75 -KPX L W -60 -KPX L Y -92 -KPX L hyphen -19 -KPX L quotedblright -123 -KPX L quoteright -125 -KPX L u -17 -KPX L udieresis -17 -KPX L y -50 -KPX N A -10 -KPX N AE -4 -KPX N Aacute -10 -KPX N Adieresis -10 -KPX N Aring -10 -KPX N C -3 -KPX N Ccedilla -2 -KPX N G -4 -KPX N O -4 -KPX N Oacute -4 -KPX N Odieresis -4 -KPX N a -1 -KPX N aacute -1 -KPX N adieresis -1 -KPX N ae -2 -KPX N aring -1 -KPX N comma 5 -KPX N e 2 -KPX N eacute 2 -KPX N o -3 -KPX N oacute -3 -KPX N odieresis -3 -KPX N oslash 0 -KPX N period 5 -KPX N u -2 -KPX N udieresis -2 -KPX O A -35 -KPX O AE -29 -KPX O Aacute -35 -KPX O Adieresis -35 -KPX O Aring -35 -KPX O T -21 -KPX O V -29 -KPX O W -20 -KPX O X -32 -KPX O Y -50 -KPX Oacute A -35 -KPX Oacute T -21 -KPX Oacute V -29 -KPX Oacute W -20 -KPX Oacute Y -50 -KPX Ocircumflex T -21 -KPX Ocircumflex V -29 -KPX Ocircumflex Y -50 -KPX Odieresis A -35 -KPX Odieresis T -21 -KPX Odieresis V -29 -KPX Odieresis W -20 -KPX Odieresis X -32 -KPX Odieresis Y -50 -KPX Ograve T -21 -KPX Ograve V -29 -KPX Ograve Y -50 -KPX Oslash A -31 -KPX Otilde T -21 -KPX Otilde V -29 -KPX Otilde Y -50 -KPX P A -61 -KPX P AE -56 -KPX P Aacute -61 -KPX P Adieresis -61 -KPX P Aring -61 -KPX P J -45 -KPX P a -22 -KPX P aacute -22 -KPX P adieresis -22 -KPX P ae -22 -KPX P aring -22 -KPX P comma -98 -KPX P e -20 -KPX P eacute -20 -KPX P hyphen -13 -KPX P o -25 -KPX P oacute -25 -KPX P odieresis -25 -KPX P oe -25 -KPX P oslash -25 -KPX P period -98 -KPX R C -9 -KPX R Ccedilla -8 -KPX R G -10 -KPX R O -10 -KPX R OE -4 -KPX R Oacute -10 -KPX R Odieresis -10 -KPX R T -9 -KPX R U -8 -KPX R Udieresis -8 -KPX R V -27 -KPX R W -18 -KPX R Y -36 -KPX R a -6 -KPX R aacute -6 -KPX R adieresis -6 -KPX R ae -7 -KPX R aring -6 -KPX R e -3 -KPX R eacute -3 -KPX R hyphen 7 -KPX R o -9 -KPX R oacute -9 -KPX R odieresis -9 -KPX R oe -9 -KPX R u -7 -KPX R uacute -7 -KPX R udieresis -7 -KPX R y -6 -KPX S A -20 -KPX S AE -14 -KPX S Aacute -20 -KPX S Adieresis -20 -KPX S Aring -20 -KPX S T -12 -KPX S V -29 -KPX S W -19 -KPX S Y -39 -KPX S t -5 -KPX T A -72 -KPX T AE -68 -KPX T Aacute -72 -KPX T Acircumflex -72 -KPX T Adieresis -72 -KPX T Agrave -72 -KPX T Aring -72 -KPX T Atilde -72 -KPX T C -17 -KPX T G -18 -KPX T J -77 -KPX T O -19 -KPX T OE -12 -KPX T Oacute -19 -KPX T Ocircumflex -19 -KPX T Odieresis -19 -KPX T Ograve -19 -KPX T Oslash -19 -KPX T Otilde -19 -KPX T S -2 -KPX T V 11 -KPX T W 13 -KPX T Y 13 -KPX T a -68 -KPX T ae -69 -KPX T c -68 -KPX T colon -78 -KPX T comma -61 -KPX T e -64 -KPX T g -69 -KPX T guillemotleft -92 -KPX T guilsinglleft -89 -KPX T hyphen -46 -KPX T i -9 -KPX T j -9 -KPX T o -71 -KPX T oslash -67 -KPX T period -61 -KPX T r -64 -KPX T s -69 -KPX T semicolon -79 -KPX T u -68 -KPX T v -77 -KPX T w -72 -KPX T y -76 -KPX U A -32 -KPX U AE -27 -KPX U Aacute -32 -KPX U Acircumflex -32 -KPX U Adieresis -32 -KPX U Aring -32 -KPX U Atilde -32 -KPX U comma -14 -KPX U m -5 -KPX U n -5 -KPX U p -5 -KPX U period -11 -KPX U r -5 -KPX Uacute A -32 -KPX Uacute comma -14 -KPX Uacute m -5 -KPX Uacute n -5 -KPX Uacute p -5 -KPX Uacute period -11 -KPX Uacute r -5 -KPX Ucircumflex A -32 -KPX Udieresis A -32 -KPX Udieresis b -5 -KPX Udieresis comma -14 -KPX Udieresis m -5 -KPX Udieresis n -5 -KPX Udieresis p -5 -KPX Udieresis period -11 -KPX Udieresis r -5 -KPX Ugrave A -32 -KPX V A -57 -KPX V AE -52 -KPX V Aacute -57 -KPX V Acircumflex -57 -KPX V Adieresis -57 -KPX V Agrave -57 -KPX V Aring -57 -KPX V Atilde -57 -KPX V C -32 -KPX V G -33 -KPX V O -33 -KPX V Oacute -33 -KPX V Ocircumflex -33 -KPX V Odieresis -33 -KPX V Ograve -33 -KPX V Oslash -29 -KPX V Otilde -33 -KPX V S -22 -KPX V T 13 -KPX V a -45 -KPX V ae -46 -KPX V colon -47 -KPX V comma -58 -KPX V e -41 -KPX V g -45 -KPX V guillemotleft -67 -KPX V guilsinglleft -65 -KPX V hyphen -21 -KPX V i -12 -KPX V o -47 -KPX V oslash -44 -KPX V period -58 -KPX V r -36 -KPX V semicolon -47 -KPX V u -40 -KPX V y -17 -KPX W A -47 -KPX W AE -42 -KPX W Aacute -47 -KPX W Acircumflex -47 -KPX W Adieresis -47 -KPX W Agrave -47 -KPX W Aring -47 -KPX W Atilde -47 -KPX W C -22 -KPX W G -23 -KPX W O -23 -KPX W Oacute -23 -KPX W Ocircumflex -23 -KPX W Odieresis -23 -KPX W Ograve -23 -KPX W Oslash -19 -KPX W Otilde -23 -KPX W S -17 -KPX W T 15 -KPX W a -32 -KPX W ae -33 -KPX W colon -40 -KPX W comma -42 -KPX W e -28 -KPX W g -32 -KPX W guillemotleft -55 -KPX W guilsinglleft -52 -KPX W hyphen -9 -KPX W i -10 -KPX W o -34 -KPX W oslash -31 -KPX W period -42 -KPX W r -27 -KPX W semicolon -41 -KPX W u -32 -KPX W y -11 -KPX X C -32 -KPX X O -33 -KPX X Odieresis -33 -KPX X Q -33 -KPX X a -15 -KPX X e -31 -KPX X hyphen -27 -KPX X o -37 -KPX X u -34 -KPX X y -44 -KPX Y A -73 -KPX Y AE -68 -KPX Y Aacute -73 -KPX Y Acircumflex -73 -KPX Y Adieresis -73 -KPX Y Agrave -73 -KPX Y Aring -73 -KPX Y Atilde -73 -KPX Y C -45 -KPX Y G -46 -KPX Y O -46 -KPX Y Oacute -46 -KPX Y Ocircumflex -46 -KPX Y Odieresis -46 -KPX Y Ograve -46 -KPX Y Oslash -45 -KPX Y Otilde -46 -KPX Y S -27 -KPX Y T 16 -KPX Y a -64 -KPX Y ae -65 -KPX Y colon -61 -KPX Y comma -70 -KPX Y e -60 -KPX Y g -64 -KPX Y guillemotleft -91 -KPX Y guilsinglleft -88 -KPX Y hyphen -49 -KPX Y i -9 -KPX Y o -66 -KPX Y oslash -63 -KPX Y p -48 -KPX Y period -70 -KPX Y semicolon -61 -KPX Y u -54 -KPX Y v -31 -KPX Z v -19 -KPX Z y -18 -KPX a j -2 -KPX a quoteright -11 -KPX a v -16 -KPX a w -7 -KPX a y -17 -KPX aacute v -17 -KPX aacute w -8 -KPX aacute y -17 -KPX adieresis v -17 -KPX adieresis w -8 -KPX adieresis y -17 -KPX ae v -17 -KPX ae w -7 -KPX ae y -19 -KPX agrave v -16 -KPX agrave w -7 -KPX agrave y -17 -KPX aring v -16 -KPX aring w -7 -KPX aring y -17 -KPX b v -16 -KPX b w -6 -KPX b y -17 -KPX c h -6 -KPX c k -8 -KPX comma one -64 -KPX comma quotedblright -27 -KPX comma quoteright -29 -KPX e quoteright -12 -KPX e t -4 -KPX e v -16 -KPX e w -6 -KPX e x -19 -KPX e y -18 -KPX eacute v -17 -KPX eacute w -8 -KPX eacute y -18 -KPX ecircumflex v -16 -KPX ecircumflex w -6 -KPX ecircumflex y -18 -KPX eight four 2 -KPX eight one -24 -KPX eight seven -10 -KPX f a -12 -KPX f aacute -12 -KPX f adieresis -12 -KPX f ae -13 -KPX f aring -12 -KPX f e -10 -KPX f eacute -10 -KPX f f 12 -KPX f i -11 -KPX f j -11 -KPX f l -11 -KPX f o -16 -KPX f oacute -16 -KPX f odieresis -16 -KPX f oe -16 -KPX f oslash -13 -KPX f quoteright 0 -KPX f s -13 -KPX f t 12 -KPX five four 0 -KPX five one -30 -KPX five seven -10 -KPX four four 3 -KPX four one -46 -KPX four seven -27 -KPX g a -2 -KPX g adieresis -2 -KPX g ae -3 -KPX g aring -2 -KPX g e 1 -KPX g eacute 1 -KPX g l 0 -KPX g oacute -5 -KPX g odieresis -5 -KPX g r 1 -KPX guillemotright A -41 -KPX guillemotright AE -36 -KPX guillemotright Aacute -41 -KPX guillemotright Adieresis -41 -KPX guillemotright Aring -41 -KPX guillemotright T -89 -KPX guillemotright V -63 -KPX guillemotright W -51 -KPX guillemotright Y -91 -KPX guilsinglright A -40 -KPX guilsinglright AE -34 -KPX guilsinglright Aacute -40 -KPX guilsinglright Adieresis -40 -KPX guilsinglright Aring -40 -KPX guilsinglright T -87 -KPX guilsinglright V -61 -KPX guilsinglright W -49 -KPX guilsinglright Y -89 -KPX h quoteright -13 -KPX h y -19 -KPX hyphen A 1 -KPX hyphen AE 6 -KPX hyphen Aacute 1 -KPX hyphen Adieresis 1 -KPX hyphen Aring 1 -KPX hyphen T -45 -KPX hyphen V -19 -KPX hyphen W -8 -KPX hyphen Y -51 -KPX i T -9 -KPX i j -3 -KPX k a -9 -KPX k aacute -9 -KPX k adieresis -9 -KPX k ae -9 -KPX k aring -9 -KPX k comma 6 -KPX k e -12 -KPX k eacute -12 -KPX k g -17 -KPX k hyphen -16 -KPX k o -18 -KPX k oacute -18 -KPX k odieresis -18 -KPX k period 7 -KPX k s -16 -KPX k u -12 -KPX k udieresis -6 -KPX l v -14 -KPX l y -13 -KPX m p -2 -KPX m v -17 -KPX m w -8 -KPX m y -18 -KPX n T -67 -KPX n p -3 -KPX n quoteright -13 -KPX n v -18 -KPX n w -9 -KPX n y -19 -KPX nine four 0 -KPX nine one -21 -KPX nine seven -14 -KPX o T -68 -KPX o quoteright -17 -KPX o t -7 -KPX o v -19 -KPX o w -9 -KPX o x -23 -KPX o y -21 -KPX oacute v -19 -KPX oacute w -9 -KPX oacute y -21 -KPX ocircumflex t -7 -KPX odieresis t -7 -KPX odieresis v -19 -KPX odieresis w -9 -KPX odieresis x -23 -KPX odieresis y -21 -KPX ograve v -19 -KPX ograve w -9 -KPX ograve y -21 -KPX one comma -39 -KPX one eight -41 -KPX one five -40 -KPX one four -57 -KPX one nine -41 -KPX one one -74 -KPX one period -39 -KPX one seven -55 -KPX one six -39 -KPX one three -46 -KPX one two -47 -KPX one zero -38 -KPX p t -4 -KPX p y -18 -KPX period one -64 -KPX period quotedblright -27 -KPX period quoteright -29 -KPX q c -2 -KPX q u -2 -KPX quotedblbase A 9 -KPX quotedblbase AE 15 -KPX quotedblbase T -61 -KPX quotedblbase V -58 -KPX quotedblbase W -43 -KPX quotedblbase Y -74 -KPX quotedblleft A -55 -KPX quotedblleft AE -50 -KPX quotedblleft Aacute -55 -KPX quotedblleft Adieresis -55 -KPX quotedblleft Aring -55 -KPX quotedblleft T -6 -KPX quotedblleft V 4 -KPX quotedblleft W 9 -KPX quotedblleft Y -6 -KPX quotedblright A -57 -KPX quotedblright AE -53 -KPX quotedblright Aacute -57 -KPX quotedblright Adieresis -57 -KPX quotedblright Aring -57 -KPX quotedblright T -4 -KPX quotedblright V 2 -KPX quotedblright W 8 -KPX quotedblright Y -8 -KPX quoteleft A -57 -KPX quoteleft AE -52 -KPX quoteleft Aacute -57 -KPX quoteleft Adieresis -57 -KPX quoteleft Aring -57 -KPX quoteleft T -8 -KPX quoteleft V 2 -KPX quoteleft W 7 -KPX quoteleft Y -8 -KPX quoteright A -59 -KPX quoteright AE -55 -KPX quoteright Aacute -59 -KPX quoteright Adieresis -59 -KPX quoteright Aring -59 -KPX quoteright comma -35 -KPX quoteright d -23 -KPX quoteright o -29 -KPX quoteright period -35 -KPX quoteright r -11 -KPX quoteright s -21 -KPX quoteright t -1 -KPX quoteright v -3 -KPX quoteright w 0 -KPX quoteright y -2 -KPX r a -9 -KPX r aacute -9 -KPX r acircumflex -9 -KPX r adieresis -9 -KPX r ae -9 -KPX r agrave -9 -KPX r aring -9 -KPX r c -12 -KPX r ccedilla -7 -KPX r colon -19 -KPX r comma -47 -KPX r d -9 -KPX r e -8 -KPX r eacute -8 -KPX r ecircumflex -8 -KPX r egrave -8 -KPX r f 12 -KPX r g -6 -KPX r h -10 -KPX r hyphen -30 -KPX r i -13 -KPX r j -12 -KPX r k -12 -KPX r l -12 -KPX r m -10 -KPX r n -11 -KPX r o -13 -KPX r oacute -13 -KPX r ocircumflex -13 -KPX r odieresis -13 -KPX r oe -12 -KPX r ograve -13 -KPX r oslash -12 -KPX r p -10 -KPX r period -47 -KPX r q -8 -KPX r quoteright 4 -KPX r r -10 -KPX r s -8 -KPX r semicolon -19 -KPX r t 12 -KPX r u -12 -KPX r v 8 -KPX r w 10 -KPX r x 4 -KPX r y 9 -KPX r z 0 -KPX s quoteright -12 -KPX s t -8 -KPX seven colon -48 -KPX seven comma -77 -KPX seven eight -11 -KPX seven five -20 -KPX seven four -59 -KPX seven one -14 -KPX seven period -77 -KPX seven seven 5 -KPX seven six -16 -KPX seven three -8 -KPX seven two -8 -KPX six four 0 -KPX six one -23 -KPX six seven -9 -KPX t S -5 -KPX t a -3 -KPX t aacute -3 -KPX t adieresis -3 -KPX t ae -3 -KPX t aring -3 -KPX t colon -19 -KPX t e -6 -KPX t eacute -6 -KPX t h -4 -KPX t o -12 -KPX t oacute -12 -KPX t odieresis -12 -KPX t quoteright -1 -KPX t semicolon -19 -KPX three four 0 -KPX three one -27 -KPX three seven -13 -KPX two four -21 -KPX two one -21 -KPX two seven -10 -KPX u quoteright -4 -KPX v a -21 -KPX v aacute -21 -KPX v acircumflex -21 -KPX v adieresis -21 -KPX v ae -22 -KPX v agrave -21 -KPX v aring -21 -KPX v atilde -21 -KPX v c -21 -KPX v colon -20 -KPX v comma -40 -KPX v e -17 -KPX v eacute -17 -KPX v ecircumflex -17 -KPX v egrave -17 -KPX v g -21 -KPX v hyphen 0 -KPX v l -12 -KPX v o -23 -KPX v oacute -23 -KPX v odieresis -23 -KPX v ograve -23 -KPX v oslash -20 -KPX v period -40 -KPX v s -22 -KPX v semicolon -20 -KPX w a -12 -KPX w aacute -12 -KPX w acircumflex -12 -KPX w adieresis -12 -KPX w ae -13 -KPX w agrave -12 -KPX w aring -12 -KPX w atilde -12 -KPX w c -11 -KPX w colon -18 -KPX w comma -25 -KPX w e -8 -KPX w eacute -8 -KPX w ecircumflex -8 -KPX w egrave -8 -KPX w g -12 -KPX w hyphen 8 -KPX w l -9 -KPX w o -14 -KPX w oacute -14 -KPX w odieresis -14 -KPX w ograve -14 -KPX w oslash -11 -KPX w period -25 -KPX w s -13 -KPX w semicolon -18 -KPX x a -19 -KPX x c -22 -KPX x e -18 -KPX x eacute -18 -KPX x o -25 -KPX x q -21 -KPX y a -23 -KPX y aacute -23 -KPX y acircumflex -23 -KPX y adieresis -23 -KPX y ae -24 -KPX y agrave -23 -KPX y aring -23 -KPX y atilde -23 -KPX y c -23 -KPX y colon -21 -KPX y comma -41 -KPX y e -19 -KPX y eacute -19 -KPX y ecircumflex -19 -KPX y egrave -19 -KPX y g -24 -KPX y hyphen 0 -KPX y l -14 -KPX y o -25 -KPX y oacute -25 -KPX y odieresis -25 -KPX y ograve -25 -KPX y oslash -21 -KPX y period -40 -KPX y s -24 -KPX y semicolon -22 -KPX zero four 2 -KPX zero one -20 -KPX zero seven -12 -EndKernPairs -EndKernData -EndFontMetrics diff --git a/misc/gs_afm/HelvO.afm b/misc/gs_afm/HelvO.afm deleted file mode 100644 index 4bb7bf2079..0000000000 --- a/misc/gs_afm/HelvO.afm +++ /dev/null @@ -1,1257 +0,0 @@ -StartFontMetrics 3.0 -Comment Copyright URW Software, Copyright 1994 by URW -Comment Creation Date: 8/3/1994 -Comment See the file PUBLIC (Aladdin Free Public License) for license conditions. -FontName NimbusSanL-ReguCondItal -FullName Nimbus Sans L Regular Condensed Italic -FamilyName Nimbus Sans L -Weight Regular -ItalicAngle -9.0 -IsFixedPitch false -UnderlinePosition -100 -UnderlineThickness 50 -Version 001.005 -Notice URW Software, Copyright 1994 by URW -EncodingScheme AdobeStandardEncoding -FontBBox -139 -225 915 944 -CapHeight 718 -XHeight 523 -Descender -207 -Ascender 718 -StartCharMetrics 232 -C 32 ; WX 228 ; N space ; B 21 0 21 0 ; -C 33 ; WX 228 ; N exclam ; B 74 0 278 718 ; -C 34 ; WX 291 ; N quotedbl ; B 138 463 359 718 ; -C 35 ; WX 456 ; N numbersign ; B 60 0 517 688 ; -C 36 ; WX 456 ; N dollar ; B 57 -115 506 775 ; -C 37 ; WX 729 ; N percent ; B 120 -19 729 703 ; -C 38 ; WX 547 ; N ampersand ; B 63 -15 530 718 ; -C 39 ; WX 182 ; N quoteright ; B 124 463 254 718 ; -C 40 ; WX 273 ; N parenleft ; B 89 -207 372 733 ; -C 41 ; WX 273 ; N parenright ; B -7 -207 276 733 ; -C 42 ; WX 319 ; N asterisk ; B 135 431 389 718 ; -C 43 ; WX 479 ; N plus ; B 70 0 497 505 ; -C 44 ; WX 228 ; N comma ; B 46 -147 175 106 ; -C 45 ; WX 273 ; N hyphen ; B 77 232 293 322 ; -C 46 ; WX 228 ; N period ; B 71 0 175 106 ; -C 47 ; WX 228 ; N slash ; B -17 -19 370 737 ; -C 48 ; WX 456 ; N zero ; B 77 -19 499 703 ; -C 49 ; WX 456 ; N one ; B 170 0 417 703 ; -C 50 ; WX 456 ; N two ; B 21 0 506 703 ; -C 51 ; WX 456 ; N three ; B 61 -19 500 703 ; -C 52 ; WX 456 ; N four ; B 50 0 472 703 ; -C 53 ; WX 456 ; N five ; B 55 -19 509 688 ; -C 54 ; WX 456 ; N six ; B 74 -19 504 703 ; -C 55 ; WX 456 ; N seven ; B 112 0 549 688 ; -C 56 ; WX 456 ; N eight ; B 60 -19 497 703 ; -C 57 ; WX 456 ; N nine ; B 67 -19 499 703 ; -C 58 ; WX 228 ; N colon ; B 71 0 247 516 ; -C 59 ; WX 228 ; N semicolon ; B 46 -147 247 516 ; -C 60 ; WX 479 ; N less ; B 77 10 526 496 ; -C 61 ; WX 479 ; N equal ; B 52 115 515 390 ; -C 62 ; WX 479 ; N greater ; B 41 10 490 496 ; -C 63 ; WX 456 ; N question ; B 132 0 500 727 ; -C 64 ; WX 832 ; N at ; B 176 -19 791 737 ; -C 65 ; WX 547 ; N A ; B 11 0 536 718 ; -C 66 ; WX 547 ; N B ; B 61 0 583 718 ; -C 67 ; WX 592 ; N C ; B 88 -19 640 737 ; -C 68 ; WX 592 ; N D ; B 66 0 626 718 ; -C 69 ; WX 547 ; N E ; B 71 0 625 718 ; -C 70 ; WX 501 ; N F ; B 71 0 603 718 ; -C 71 ; WX 638 ; N G ; B 91 -19 655 737 ; -C 72 ; WX 592 ; N H ; B 63 0 655 718 ; -C 73 ; WX 228 ; N I ; B 75 0 279 718 ; -C 74 ; WX 410 ; N J ; B 39 -19 476 718 ; -C 75 ; WX 547 ; N K ; B 62 0 662 718 ; -C 76 ; WX 456 ; N L ; B 62 0 455 718 ; -C 77 ; WX 683 ; N M ; B 60 0 749 718 ; -C 78 ; WX 592 ; N N ; B 62 0 655 718 ; -C 79 ; WX 638 ; N O ; B 86 -19 677 737 ; -C 80 ; WX 547 ; N P ; B 71 0 604 718 ; -C 81 ; WX 638 ; N Q ; B 86 -56 677 737 ; -C 82 ; WX 592 ; N R ; B 72 0 634 718 ; -C 83 ; WX 547 ; N S ; B 74 -19 584 737 ; -C 84 ; WX 501 ; N T ; B 122 0 615 718 ; -C 85 ; WX 592 ; N U ; B 101 -19 653 718 ; -C 86 ; WX 547 ; N V ; B 142 0 656 718 ; -C 87 ; WX 774 ; N W ; B 138 0 886 718 ; -C 88 ; WX 547 ; N X ; B 16 0 647 718 ; -C 89 ; WX 547 ; N Y ; B 137 0 661 718 ; -C 90 ; WX 501 ; N Z ; B 19 0 607 718 ; -C 91 ; WX 228 ; N bracketleft ; B 17 -196 331 722 ; -C 92 ; WX 228 ; N backslash ; B 115 -19 239 737 ; -C 93 ; WX 228 ; N bracketright ; B -11 -196 302 722 ; -C 94 ; WX 385 ; N asciicircum ; B 35 264 442 688 ; -C 95 ; WX 456 ; N underscore ; B -22 -125 443 -75 ; -C 96 ; WX 182 ; N quoteleft ; B 135 470 265 725 ; -C 97 ; WX 456 ; N a ; B 50 -15 458 538 ; -C 98 ; WX 456 ; N b ; B 48 -15 479 718 ; -C 99 ; WX 410 ; N c ; B 61 -15 454 538 ; -C 100 ; WX 456 ; N d ; B 69 -15 534 718 ; -C 101 ; WX 456 ; N e ; B 69 -15 474 538 ; -C 102 ; WX 228 ; N f ; B 71 0 341 728 ; -C 103 ; WX 456 ; N g ; B 34 -220 500 538 ; -C 104 ; WX 456 ; N h ; B 53 0 470 718 ; -C 105 ; WX 182 ; N i ; B 55 0 252 718 ; -C 106 ; WX 182 ; N j ; B -49 -210 252 718 ; -C 107 ; WX 410 ; N k ; B 55 0 492 718 ; -C 108 ; WX 182 ; N l ; B 55 0 252 718 ; -C 109 ; WX 683 ; N m ; B 53 0 699 538 ; -C 110 ; WX 456 ; N n ; B 53 0 470 538 ; -C 111 ; WX 456 ; N o ; B 68 -14 479 538 ; -C 112 ; WX 456 ; N p ; B 11 -207 479 538 ; -C 113 ; WX 456 ; N q ; B 69 -207 496 538 ; -C 114 ; WX 273 ; N r ; B 63 0 365 538 ; -C 115 ; WX 410 ; N s ; B 52 -15 434 538 ; -C 116 ; WX 228 ; N t ; B 84 -7 302 669 ; -C 117 ; WX 456 ; N u ; B 77 -15 492 523 ; -C 118 ; WX 410 ; N v ; B 98 0 495 523 ; -C 119 ; WX 592 ; N w ; B 103 0 673 523 ; -C 120 ; WX 410 ; N x ; B 9 0 487 523 ; -C 121 ; WX 410 ; N y ; B 12 -214 492 523 ; -C 122 ; WX 410 ; N z ; B 25 0 468 523 ; -C 123 ; WX 274 ; N braceleft ; B 75 -196 365 722 ; -C 124 ; WX 213 ; N bar ; B 74 -19 265 737 ; -C 125 ; WX 274 ; N braceright ; B 0 -196 291 722 ; -C 126 ; WX 479 ; N asciitilde ; B 91 181 476 322 ; -C 161 ; WX 273 ; N exclamdown ; B 63 -195 267 523 ; -C 162 ; WX 456 ; N cent ; B 78 -115 479 623 ; -C 163 ; WX 456 ; N sterling ; B 40 -16 520 718 ; -C 164 ; WX 137 ; N fraction ; B -139 -19 396 703 ; -C 165 ; WX 456 ; N yen ; B 67 0 573 688 ; -C 166 ; WX 456 ; N florin ; B -43 -207 537 737 ; -C 167 ; WX 456 ; N section ; B 63 -191 479 737 ; -C 168 ; WX 456 ; N currency ; B 49 99 530 603 ; -C 169 ; WX 157 ; N quotesingle ; B 129 463 233 718 ; -C 170 ; WX 273 ; N quotedblleft ; B 113 470 378 725 ; -C 171 ; WX 456 ; N guillemotleft ; B 120 108 454 446 ; -C 172 ; WX 273 ; N guilsinglleft ; B 112 108 279 446 ; -C 173 ; WX 273 ; N guilsinglright ; B 91 108 257 446 ; -C 174 ; WX 410 ; N fi ; B 71 0 481 728 ; -C 175 ; WX 410 ; N fl ; B 71 0 479 728 ; -C 177 ; WX 456 ; N endash ; B 42 240 510 313 ; -C 178 ; WX 456 ; N dagger ; B 110 -159 510 718 ; -C 179 ; WX 456 ; N daggerdbl ; B 43 -159 511 718 ; -C 180 ; WX 228 ; N periodcentered ; B 106 190 211 315 ; -C 182 ; WX 440 ; N paragraph ; B 103 -173 533 718 ; -C 183 ; WX 287 ; N bullet ; B 74 202 339 517 ; -C 184 ; WX 182 ; N quotesinglbase ; B 17 -149 147 106 ; -C 185 ; WX 273 ; N quotedblbase ; B -5 -149 260 106 ; -C 186 ; WX 273 ; N quotedblright ; B 102 463 367 718 ; -C 187 ; WX 456 ; N guillemotright ; B 98 108 433 446 ; -C 188 ; WX 820 ; N ellipsis ; B 94 0 744 106 ; -C 189 ; WX 820 ; N perthousand ; B 72 -19 844 703 ; -C 191 ; WX 501 ; N questiondown ; B 70 -201 438 525 ; -C 193 ; WX 273 ; N grave ; B 139 593 276 734 ; -C 194 ; WX 273 ; N acute ; B 203 593 390 734 ; -C 195 ; WX 273 ; N circumflex ; B 121 593 359 734 ; -C 196 ; WX 273 ; N tilde ; B 102 606 402 722 ; -C 197 ; WX 273 ; N macron ; B 117 627 384 684 ; -C 198 ; WX 273 ; N breve ; B 137 595 391 731 ; -C 199 ; WX 273 ; N dotaccent ; B 204 604 297 706 ; -C 200 ; WX 273 ; N dieresis ; B 138 604 363 706 ; -C 202 ; WX 273 ; N ring ; B 175 572 330 756 ; -C 203 ; WX 273 ; N cedilla ; B 2 -225 191 0 ; -C 205 ; WX 273 ; N hungarumlaut ; B 129 593 463 734 ; -C 206 ; WX 273 ; N ogonek ; B 35 -225 204 0 ; -C 207 ; WX 273 ; N caron ; B 145 593 384 734 ; -C 208 ; WX 820 ; N emdash ; B 42 240 875 313 ; -C 225 ; WX 820 ; N AE ; B 7 0 899 718 ; -C 227 ; WX 303 ; N ordfeminine ; B 82 304 368 737 ; -C 232 ; WX 456 ; N Lslash ; B 34 0 455 718 ; -C 233 ; WX 638 ; N Oslash ; B 35 -19 730 737 ; -C 234 ; WX 820 ; N OE ; B 80 -19 915 737 ; -C 235 ; WX 299 ; N ordmasculine ; B 82 304 384 737 ; -C 241 ; WX 729 ; N ae ; B 50 -15 746 538 ; -C 245 ; WX 228 ; N dotlessi ; B 78 0 241 523 ; -C 248 ; WX 182 ; N lslash ; B 34 0 284 718 ; -C 249 ; WX 501 ; N oslash ; B 24 -22 531 545 ; -C 250 ; WX 774 ; N oe ; B 68 -15 791 538 ; -C 251 ; WX 501 ; N germandbls ; B 55 -15 539 728 ; -C -1 ; WX 547 ; N Yacute ; B 137 0 661 929 ; -C -1 ; WX 592 ; N Ucircumflex ; B 101 -19 653 929 ; -C -1 ; WX 592 ; N Ugrave ; B 101 -19 653 929 ; -C -1 ; WX 501 ; N Zcaron ; B 19 0 607 929 ; -C -1 ; WX 547 ; N Ydieresis ; B 137 0 661 901 ; -C -1 ; WX 273 ; N threesuperior ; B 74 270 358 714 ; -C -1 ; WX 592 ; N Uacute ; B 101 -19 653 929 ; -C -1 ; WX 273 ; N twosuperior ; B 52 281 368 714 ; -C -1 ; WX 592 ; N Udieresis ; B 101 -19 653 901 ; -C -1 ; WX 228 ; N middot ; B 106 190 211 315 ; -C -1 ; WX 273 ; N onesuperior ; B 136 281 305 703 ; -C -1 ; WX 456 ; N aacute ; B 50 -15 482 734 ; -C -1 ; WX 456 ; N agrave ; B 50 -15 458 734 ; -C -1 ; WX 456 ; N acircumflex ; B 50 -15 458 734 ; -C -1 ; WX 547 ; N Scaron ; B 74 -19 584 929 ; -C -1 ; WX 638 ; N Otilde ; B 86 -19 677 917 ; -C -1 ; WX 273 ; N sfthyphen ; B 77 232 293 322 ; -C -1 ; WX 456 ; N atilde ; B 50 -15 486 722 ; -C -1 ; WX 456 ; N aring ; B 50 -15 458 769 ; -C -1 ; WX 456 ; N adieresis ; B 50 -15 458 706 ; -C -1 ; WX 638 ; N Ograve ; B 86 -19 677 929 ; -C -1 ; WX 638 ; N Ocircumflex ; B 86 -19 677 929 ; -C -1 ; WX 638 ; N Odieresis ; B 86 -19 677 901 ; -C -1 ; WX 592 ; N Ntilde ; B 62 0 655 917 ; -C -1 ; WX 456 ; N edieresis ; B 69 -15 474 706 ; -C -1 ; WX 456 ; N eacute ; B 69 -15 482 734 ; -C -1 ; WX 456 ; N egrave ; B 69 -15 474 734 ; -C -1 ; WX 228 ; N Icircumflex ; B 75 0 370 929 ; -C -1 ; WX 456 ; N ecircumflex ; B 69 -15 474 734 ; -C -1 ; WX 228 ; N Igrave ; B 75 0 288 929 ; -C -1 ; WX 228 ; N Iacute ; B 75 0 401 929 ; -C -1 ; WX 228 ; N Idieresis ; B 75 0 375 901 ; -C -1 ; WX 328 ; N degree ; B 138 411 384 703 ; -C -1 ; WX 547 ; N Ecircumflex ; B 71 0 625 929 ; -C -1 ; WX 479 ; N minus ; B 70 216 497 289 ; -C -1 ; WX 479 ; N multiply ; B 41 0 526 506 ; -C -1 ; WX 479 ; N divide ; B 70 -19 497 524 ; -C -1 ; WX 547 ; N Egrave ; B 71 0 625 929 ; -C -1 ; WX 820 ; N trademark ; B 152 306 866 718 ; -C -1 ; WX 638 ; N Oacute ; B 86 -19 677 929 ; -C -1 ; WX 456 ; N thorn ; B 11 -207 479 718 ; -C -1 ; WX 456 ; N eth ; B 67 -15 506 737 ; -C -1 ; WX 547 ; N Eacute ; B 71 0 625 929 ; -C -1 ; WX 410 ; N ccedilla ; B 61 -225 454 538 ; -C -1 ; WX 228 ; N idieresis ; B 78 0 341 706 ; -C -1 ; WX 228 ; N iacute ; B 78 0 368 734 ; -C -1 ; WX 228 ; N igrave ; B 78 0 254 734 ; -C -1 ; WX 479 ; N plusminus ; B 32 0 507 561 ; -C -1 ; WX 684 ; N onehalf ; B 93 -19 688 703 ; -C -1 ; WX 684 ; N onequarter ; B 123 -19 658 703 ; -C -1 ; WX 684 ; N threequarters ; B 106 -19 706 714 ; -C -1 ; WX 228 ; N icircumflex ; B 78 0 336 734 ; -C -1 ; WX 547 ; N Edieresis ; B 71 0 625 901 ; -C -1 ; WX 456 ; N ntilde ; B 53 0 486 722 ; -C -1 ; WX 547 ; N Aring ; B 11 0 536 944 ; -C -1 ; WX 456 ; N odieresis ; B 68 -14 479 706 ; -C -1 ; WX 456 ; N oacute ; B 68 -14 482 734 ; -C -1 ; WX 456 ; N ograve ; B 68 -14 479 734 ; -C -1 ; WX 456 ; N ocircumflex ; B 68 -14 479 734 ; -C -1 ; WX 456 ; N otilde ; B 68 -14 494 722 ; -C -1 ; WX 410 ; N scaron ; B 52 -15 453 734 ; -C -1 ; WX 456 ; N udieresis ; B 77 -15 492 706 ; -C -1 ; WX 456 ; N uacute ; B 77 -15 492 734 ; -C -1 ; WX 456 ; N ugrave ; B 77 -15 492 734 ; -C -1 ; WX 456 ; N ucircumflex ; B 77 -15 492 734 ; -C -1 ; WX 410 ; N yacute ; B 12 -214 492 734 ; -C -1 ; WX 410 ; N zcaron ; B 25 0 468 734 ; -C -1 ; WX 410 ; N ydieresis ; B 12 -214 492 706 ; -C -1 ; WX 604 ; N copyright ; B 44 -19 687 737 ; -C -1 ; WX 604 ; N registered ; B 44 -19 687 737 ; -C -1 ; WX 547 ; N Atilde ; B 11 0 573 917 ; -C -1 ; WX 228 ; N nbspace ; B 21 0 21 0 ; -C -1 ; WX 592 ; N Ccedilla ; B 88 -225 640 737 ; -C -1 ; WX 547 ; N Acircumflex ; B 11 0 536 929 ; -C -1 ; WX 547 ; N Agrave ; B 11 0 536 929 ; -C -1 ; WX 479 ; N logicalnot ; B 87 108 515 390 ; -C -1 ; WX 547 ; N Aacute ; B 11 0 561 929 ; -C -1 ; WX 592 ; N Eth ; B 57 0 626 718 ; -C -1 ; WX 213 ; N brokenbar ; B 74 -19 265 737 ; -C -1 ; WX 547 ; N Thorn ; B 71 0 584 718 ; -C -1 ; WX 547 ; N Adieresis ; B 11 0 536 901 ; -C -1 ; WX 456 ; N mu ; B 20 -207 492 523 ; -C -1 ; WX 228 ; N .notdef ; B 21 0 21 0 ; -EndCharMetrics -StartKernData -StartKernPairs 998 -KPX A C -30 -KPX A Ccedilla -30 -KPX A G -33 -KPX A O -30 -KPX A Odieresis -30 -KPX A Q -30 -KPX A T -81 -KPX A U -32 -KPX A Uacute -32 -KPX A Ucircumflex -32 -KPX A Udieresis -32 -KPX A Ugrave -32 -KPX A V -61 -KPX A W -43 -KPX A Y -82 -KPX A a -11 -KPX A b -6 -KPX A c -11 -KPX A ccedilla -11 -KPX A comma 0 -KPX A d -13 -KPX A e -15 -KPX A g -16 -KPX A guillemotleft -43 -KPX A guilsinglleft -39 -KPX A hyphen -6 -KPX A o -16 -KPX A period 1 -KPX A q -13 -KPX A quotedblright -40 -KPX A quoteright -51 -KPX A t -17 -KPX A u -15 -KPX A v -30 -KPX A w -25 -KPX A y -31 -KPX Aacute C -31 -KPX Aacute G -34 -KPX Aacute O -31 -KPX Aacute Q -31 -KPX Aacute T -81 -KPX Aacute U -33 -KPX Aacute V -61 -KPX Aacute W -43 -KPX Aacute Y -82 -KPX Aacute a -12 -KPX Aacute b -6 -KPX Aacute c -12 -KPX Aacute comma 0 -KPX Aacute d -14 -KPX Aacute e -16 -KPX Aacute g -16 -KPX Aacute guillemotleft -44 -KPX Aacute guilsinglleft -40 -KPX Aacute hyphen -6 -KPX Aacute o -17 -KPX Aacute period 0 -KPX Aacute q -14 -KPX Aacute quoteright -52 -KPX Aacute t -18 -KPX Aacute u -16 -KPX Aacute v -31 -KPX Aacute w -25 -KPX Aacute y -31 -KPX Acircumflex C -30 -KPX Acircumflex G -33 -KPX Acircumflex O -30 -KPX Acircumflex Q -30 -KPX Acircumflex T -81 -KPX Acircumflex U -32 -KPX Acircumflex V -61 -KPX Acircumflex W -43 -KPX Acircumflex Y -82 -KPX Acircumflex comma 0 -KPX Acircumflex period 1 -KPX Adieresis C -30 -KPX Adieresis G -33 -KPX Adieresis O -30 -KPX Adieresis Q -30 -KPX Adieresis T -81 -KPX Adieresis U -32 -KPX Adieresis V -61 -KPX Adieresis W -43 -KPX Adieresis Y -82 -KPX Adieresis a -11 -KPX Adieresis b -6 -KPX Adieresis c -11 -KPX Adieresis comma 0 -KPX Adieresis d -13 -KPX Adieresis g -16 -KPX Adieresis guillemotleft -43 -KPX Adieresis guilsinglleft -39 -KPX Adieresis hyphen -6 -KPX Adieresis o -16 -KPX Adieresis period 1 -KPX Adieresis q -13 -KPX Adieresis quotedblright -40 -KPX Adieresis quoteright -51 -KPX Adieresis t -17 -KPX Adieresis u -15 -KPX Adieresis v -30 -KPX Adieresis w -25 -KPX Adieresis y -31 -KPX Agrave C -30 -KPX Agrave G -33 -KPX Agrave O -30 -KPX Agrave Q -30 -KPX Agrave T -81 -KPX Agrave U -32 -KPX Agrave V -61 -KPX Agrave W -43 -KPX Agrave Y -82 -KPX Agrave comma 0 -KPX Agrave period 1 -KPX Aring C -30 -KPX Aring G -33 -KPX Aring O -30 -KPX Aring Q -30 -KPX Aring T -81 -KPX Aring U -32 -KPX Aring V -61 -KPX Aring W -43 -KPX Aring Y -82 -KPX Aring a -11 -KPX Aring b -6 -KPX Aring c -11 -KPX Aring comma 0 -KPX Aring d -13 -KPX Aring e -15 -KPX Aring g -16 -KPX Aring guillemotleft -43 -KPX Aring guilsinglleft -39 -KPX Aring hyphen -6 -KPX Aring o -16 -KPX Aring period 1 -KPX Aring q -13 -KPX Aring quotedblright -40 -KPX Aring quoteright -51 -KPX Aring t -17 -KPX Aring u -15 -KPX Aring v -30 -KPX Aring w -25 -KPX Aring y -31 -KPX Atilde C -31 -KPX Atilde G -35 -KPX Atilde O -31 -KPX Atilde Q -31 -KPX Atilde T -81 -KPX Atilde U -34 -KPX Atilde V -61 -KPX Atilde W -43 -KPX Atilde Y -82 -KPX Atilde comma -1 -KPX Atilde period 0 -KPX B A -22 -KPX B AE -21 -KPX B Aacute -22 -KPX B Acircumflex -22 -KPX B Adieresis -22 -KPX B Aring -22 -KPX B Atilde -22 -KPX B O -9 -KPX B OE -5 -KPX B Oacute -9 -KPX B Ocircumflex -9 -KPX B Odieresis -9 -KPX B Ograve -9 -KPX B Oslash -7 -KPX B V -34 -KPX B W -17 -KPX B Y -42 -KPX C A -33 -KPX C AE -32 -KPX C Aacute -33 -KPX C Adieresis -33 -KPX C Aring -33 -KPX C H -13 -KPX C K -13 -KPX C O -13 -KPX C Oacute -13 -KPX C Odieresis -13 -KPX Ccedilla A -37 -KPX D A -40 -KPX D Aacute -40 -KPX D Acircumflex -40 -KPX D Adieresis -40 -KPX D Agrave -40 -KPX D Aring -40 -KPX D Atilde -40 -KPX D J -9 -KPX D T -36 -KPX D V -37 -KPX D W -19 -KPX D X -43 -KPX D Y -55 -KPX F A -64 -KPX F Aacute -64 -KPX F Acircumflex -64 -KPX F Adieresis -64 -KPX F Agrave -64 -KPX F Aring -64 -KPX F Atilde -64 -KPX F J -59 -KPX F O -22 -KPX F Odieresis -22 -KPX F a -32 -KPX F aacute -32 -KPX F adieresis -32 -KPX F ae -32 -KPX F aring -32 -KPX F comma -107 -KPX F e -26 -KPX F eacute -26 -KPX F hyphen -18 -KPX F i -15 -KPX F j -15 -KPX F o -26 -KPX F oacute -26 -KPX F odieresis -26 -KPX F oe -24 -KPX F oslash -24 -KPX F period -107 -KPX F r -38 -KPX F u -34 -KPX G A -11 -KPX G AE -9 -KPX G Aacute -11 -KPX G Acircumflex -11 -KPX G Adieresis -11 -KPX G Agrave -11 -KPX G Aring -11 -KPX G Atilde -11 -KPX G T -38 -KPX G V -40 -KPX G W -23 -KPX G Y -58 -KPX J A -30 -KPX J AE -29 -KPX J Adieresis -30 -KPX J Aring -30 -KPX K C -41 -KPX K G -45 -KPX K O -41 -KPX K OE -37 -KPX K Oacute -41 -KPX K Odieresis -41 -KPX K S -37 -KPX K T 15 -KPX K a -15 -KPX K adieresis -15 -KPX K ae -15 -KPX K aring -15 -KPX K e -35 -KPX K hyphen -43 -KPX K o -36 -KPX K oacute -36 -KPX K odieresis -36 -KPX K u -29 -KPX K udieresis -29 -KPX K y -59 -KPX L A 10 -KPX L AE 12 -KPX L Aacute 10 -KPX L Adieresis 10 -KPX L Aring 10 -KPX L C -36 -KPX L Ccedilla -39 -KPX L G -40 -KPX L O -38 -KPX L Oacute -38 -KPX L Ocircumflex -38 -KPX L Odieresis -38 -KPX L Ograve -38 -KPX L Otilde -38 -KPX L S -20 -KPX L T -87 -KPX L U -34 -KPX L Udieresis -34 -KPX L V -87 -KPX L W -58 -KPX L Y -99 -KPX L hyphen -114 -KPX L quotedblright -108 -KPX L quoteright -120 -KPX L u -16 -KPX L udieresis -16 -KPX L y -53 -KPX N A -12 -KPX N AE -10 -KPX N Aacute -12 -KPX N Adieresis -12 -KPX N Aring -12 -KPX N C -6 -KPX N Ccedilla -5 -KPX N G -10 -KPX N O -6 -KPX N Oacute -6 -KPX N Odieresis -6 -KPX N a -8 -KPX N aacute -8 -KPX N adieresis -8 -KPX N ae -8 -KPX N aring -8 -KPX N comma -10 -KPX N e -5 -KPX N eacute -5 -KPX N o -6 -KPX N oacute -6 -KPX N odieresis -6 -KPX N oslash -1 -KPX N period -10 -KPX N u -5 -KPX N udieresis -5 -KPX O A -36 -KPX O AE -36 -KPX O Aacute -36 -KPX O Adieresis -36 -KPX O Aring -36 -KPX O T -34 -KPX O V -34 -KPX O W -16 -KPX O X -39 -KPX O Y -53 -KPX Oacute A -36 -KPX Oacute T -34 -KPX Oacute V -34 -KPX Oacute W -16 -KPX Oacute Y -53 -KPX Ocircumflex T -34 -KPX Ocircumflex V -34 -KPX Ocircumflex Y -53 -KPX Odieresis A -36 -KPX Odieresis T -34 -KPX Odieresis V -34 -KPX Odieresis W -16 -KPX Odieresis X -39 -KPX Odieresis Y -53 -KPX Ograve T -34 -KPX Ograve V -34 -KPX Ograve Y -53 -KPX Oslash A -33 -KPX Otilde T -34 -KPX Otilde V -34 -KPX Otilde Y -53 -KPX P A -70 -KPX P AE -72 -KPX P Aacute -70 -KPX P Adieresis -70 -KPX P Aring -70 -KPX P J -78 -KPX P a -27 -KPX P aacute -27 -KPX P adieresis -27 -KPX P ae -27 -KPX P aring -27 -KPX P comma -126 -KPX P e -30 -KPX P eacute -30 -KPX P hyphen -35 -KPX P o -31 -KPX P oacute -31 -KPX P odieresis -31 -KPX P oe -29 -KPX P oslash -29 -KPX P period -126 -KPX R C -11 -KPX R Ccedilla -10 -KPX R G -15 -KPX R O -11 -KPX R OE -7 -KPX R Oacute -11 -KPX R Odieresis -11 -KPX R T -19 -KPX R U -13 -KPX R Udieresis -13 -KPX R V -33 -KPX R W -17 -KPX R Y -39 -KPX R a -11 -KPX R aacute -11 -KPX R adieresis -11 -KPX R ae -11 -KPX R aring -11 -KPX R e -9 -KPX R eacute -9 -KPX R hyphen 0 -KPX R o -10 -KPX R oacute -10 -KPX R odieresis -10 -KPX R oe -9 -KPX R u -8 -KPX R uacute -9 -KPX R udieresis -9 -KPX R y -10 -KPX S A -22 -KPX S AE -21 -KPX S Aacute -22 -KPX S Adieresis -22 -KPX S Aring -22 -KPX S T -22 -KPX S V -36 -KPX S W -20 -KPX S Y -42 -KPX S t -10 -KPX T A -86 -KPX T AE -84 -KPX T Aacute -86 -KPX T Acircumflex -86 -KPX T Adieresis -86 -KPX T Agrave -86 -KPX T Aring -86 -KPX T Atilde -86 -KPX T C -33 -KPX T G -39 -KPX T J -88 -KPX T O -34 -KPX T OE -28 -KPX T Oacute -34 -KPX T Ocircumflex -34 -KPX T Odieresis -34 -KPX T Ograve -34 -KPX T Oslash -35 -KPX T Otilde -34 -KPX T S -23 -KPX T V 7 -KPX T W 10 -KPX T Y 9 -KPX T a -83 -KPX T ae -83 -KPX T c -76 -KPX T colon -106 -KPX T comma -84 -KPX T e -80 -KPX T g -78 -KPX T guillemotleft -104 -KPX T guilsinglleft -100 -KPX T hyphen -65 -KPX T i -9 -KPX T j -9 -KPX T o -81 -KPX T oslash -76 -KPX T period -84 -KPX T r -81 -KPX T s -78 -KPX T semicolon -102 -KPX T u -79 -KPX T v -87 -KPX T w -85 -KPX T y -88 -KPX U A -37 -KPX U AE -38 -KPX U Aacute -37 -KPX U Acircumflex -37 -KPX U Adieresis -37 -KPX U Aring -37 -KPX U Atilde -37 -KPX U comma -30 -KPX U m -9 -KPX U n -9 -KPX U p -7 -KPX U period -27 -KPX U r -14 -KPX Uacute A -37 -KPX Uacute comma -30 -KPX Uacute m -9 -KPX Uacute n -9 -KPX Uacute p -7 -KPX Uacute period -27 -KPX Uacute r -14 -KPX Ucircumflex A -37 -KPX Udieresis A -37 -KPX Udieresis b -7 -KPX Udieresis comma -30 -KPX Udieresis m -9 -KPX Udieresis n -9 -KPX Udieresis p -7 -KPX Udieresis period -27 -KPX Udieresis r -14 -KPX Ugrave A -37 -KPX V A -63 -KPX V AE -64 -KPX V Aacute -63 -KPX V Acircumflex -63 -KPX V Adieresis -63 -KPX V Agrave -63 -KPX V Aring -63 -KPX V Atilde -63 -KPX V C -36 -KPX V G -39 -KPX V O -35 -KPX V Oacute -35 -KPX V Ocircumflex -35 -KPX V Odieresis -35 -KPX V Ograve -35 -KPX V Oslash -33 -KPX V Otilde -35 -KPX V S -33 -KPX V T 12 -KPX V a -52 -KPX V ae -52 -KPX V colon -48 -KPX V comma -77 -KPX V e -49 -KPX V g -47 -KPX V guillemotleft -72 -KPX V guilsinglleft -68 -KPX V hyphen -34 -KPX V i -10 -KPX V o -51 -KPX V oslash -45 -KPX V period -77 -KPX V r -43 -KPX V semicolon -48 -KPX V u -40 -KPX V y -19 -KPX W A -46 -KPX W AE -47 -KPX W Aacute -46 -KPX W Acircumflex -46 -KPX W Adieresis -46 -KPX W Agrave -46 -KPX W Aring -46 -KPX W Atilde -46 -KPX W C -20 -KPX W G -23 -KPX W O -20 -KPX W Oacute -20 -KPX W Ocircumflex -20 -KPX W Odieresis -20 -KPX W Ograve -20 -KPX W Oslash -17 -KPX W Otilde -20 -KPX W S -25 -KPX W T 13 -KPX W a -32 -KPX W ae -32 -KPX W colon -38 -KPX W comma -50 -KPX W e -29 -KPX W g -27 -KPX W guillemotleft -52 -KPX W guilsinglleft -48 -KPX W hyphen -14 -KPX W i -9 -KPX W o -31 -KPX W oslash -25 -KPX W period -50 -KPX W r -30 -KPX W semicolon -38 -KPX W u -28 -KPX W y -10 -KPX X C -37 -KPX X O -37 -KPX X Odieresis -37 -KPX X Q -37 -KPX X a -20 -KPX X e -40 -KPX X hyphen -45 -KPX X o -41 -KPX X u -35 -KPX X y -50 -KPX Y A -85 -KPX Y AE -86 -KPX Y Aacute -85 -KPX Y Acircumflex -85 -KPX Y Adieresis -85 -KPX Y Agrave -85 -KPX Y Aring -85 -KPX Y Atilde -85 -KPX Y C -48 -KPX Y G -53 -KPX Y O -48 -KPX Y Oacute -48 -KPX Y Ocircumflex -48 -KPX Y Odieresis -48 -KPX Y Ograve -48 -KPX Y Oslash -50 -KPX Y Otilde -48 -KPX Y S -39 -KPX Y T 14 -KPX Y a -78 -KPX Y ae -79 -KPX Y colon -67 -KPX Y comma -95 -KPX Y e -77 -KPX Y g -75 -KPX Y guillemotleft -106 -KPX Y guilsinglleft -102 -KPX Y hyphen -72 -KPX Y i -8 -KPX Y o -78 -KPX Y oslash -72 -KPX Y p -53 -KPX Y period -95 -KPX Y semicolon -67 -KPX Y u -60 -KPX Y v -38 -KPX Z v -32 -KPX Z y -33 -KPX a j -9 -KPX a quoteright -13 -KPX a v -21 -KPX a w -16 -KPX a y -24 -KPX aacute v -22 -KPX aacute w -17 -KPX aacute y -24 -KPX adieresis v -21 -KPX adieresis w -16 -KPX adieresis y -24 -KPX ae v -18 -KPX ae w -13 -KPX ae y -23 -KPX agrave v -21 -KPX agrave w -16 -KPX agrave y -24 -KPX aring v -21 -KPX aring w -16 -KPX aring y -24 -KPX b v -15 -KPX b w -9 -KPX b y -19 -KPX c h -3 -KPX c k -4 -KPX comma one -88 -KPX comma quotedblright -27 -KPX comma quoteright -38 -KPX e quoteright -8 -KPX e t -12 -KPX e v -18 -KPX e w -12 -KPX e x -22 -KPX e y -22 -KPX eacute v -18 -KPX eacute w -13 -KPX eacute y -22 -KPX ecircumflex v -18 -KPX ecircumflex w -12 -KPX ecircumflex y -22 -KPX eight four -1 -KPX eight one -43 -KPX eight seven -24 -KPX f a -14 -KPX f aacute -14 -KPX f adieresis -14 -KPX f ae -14 -KPX f aring -14 -KPX f e -16 -KPX f eacute -16 -KPX f f 11 -KPX f i -10 -KPX f j -10 -KPX f l -10 -KPX f o -17 -KPX f oacute -17 -KPX f odieresis -17 -KPX f oe -15 -KPX f oslash -11 -KPX f quoteright 1 -KPX f s -10 -KPX f t 11 -KPX five four -3 -KPX five one -63 -KPX five seven -23 -KPX four four 1 -KPX four one -72 -KPX four seven -47 -KPX g a -5 -KPX g adieresis -5 -KPX g ae -5 -KPX g aring -5 -KPX g e -3 -KPX g eacute -3 -KPX g l 0 -KPX g oacute -3 -KPX g odieresis -3 -KPX g r -3 -KPX guillemotright A -47 -KPX guillemotright AE -47 -KPX guillemotright Aacute -47 -KPX guillemotright Adieresis -47 -KPX guillemotright Aring -47 -KPX guillemotright T -104 -KPX guillemotright V -72 -KPX guillemotright W -50 -KPX guillemotright Y -107 -KPX guilsinglright A -43 -KPX guilsinglright AE -44 -KPX guilsinglright Aacute -43 -KPX guilsinglright Adieresis -43 -KPX guilsinglright Aring -43 -KPX guilsinglright T -100 -KPX guilsinglright V -68 -KPX guilsinglright W -46 -KPX guilsinglright Y -103 -KPX h quoteright -7 -KPX h y -18 -KPX hyphen A -8 -KPX hyphen AE -8 -KPX hyphen Aacute -8 -KPX hyphen Adieresis -8 -KPX hyphen Aring -8 -KPX hyphen T -65 -KPX hyphen V -34 -KPX hyphen W -13 -KPX hyphen Y -72 -KPX i T -9 -KPX i j -3 -KPX k a -12 -KPX k aacute -12 -KPX k adieresis -12 -KPX k ae -12 -KPX k aring -12 -KPX k comma -5 -KPX k e -21 -KPX k eacute -21 -KPX k g -20 -KPX k hyphen -35 -KPX k o -23 -KPX k oacute -23 -KPX k odieresis -23 -KPX k period -4 -KPX k s -16 -KPX k u -8 -KPX k udieresis -8 -KPX l v -9 -KPX l y -10 -KPX m p 0 -KPX m v -15 -KPX m w -10 -KPX m y -18 -KPX n T -79 -KPX n p -1 -KPX n quoteright -7 -KPX n v -16 -KPX n w -11 -KPX n y -18 -KPX nine four -6 -KPX nine one -40 -KPX nine seven -27 -KPX o T -80 -KPX o quoteright -10 -KPX o t -10 -KPX o v -16 -KPX o w -10 -KPX o x -20 -KPX o y -20 -KPX oacute v -16 -KPX oacute w -10 -KPX oacute y -20 -KPX ocircumflex t -10 -KPX odieresis t -10 -KPX odieresis v -16 -KPX odieresis w -10 -KPX odieresis x -20 -KPX odieresis y -20 -KPX ograve v -16 -KPX ograve w -10 -KPX ograve y -20 -KPX one comma -59 -KPX one eight -53 -KPX one five -53 -KPX one four -65 -KPX one nine -54 -KPX one one -96 -KPX one period -59 -KPX one seven -71 -KPX one six -51 -KPX one three -57 -KPX one two -57 -KPX one zero -51 -KPX p t -9 -KPX p y -19 -KPX period one -88 -KPX period quotedblright -28 -KPX period quoteright -39 -KPX q c 0 -KPX q u -3 -KPX quotedblbase A 18 -KPX quotedblbase AE 19 -KPX quotedblbase T -65 -KPX quotedblbase V -58 -KPX quotedblbase W -30 -KPX quotedblbase Y -76 -KPX quotedblleft A -46 -KPX quotedblleft AE -49 -KPX quotedblleft Aacute -46 -KPX quotedblleft Adieresis -46 -KPX quotedblleft Aring -46 -KPX quotedblleft T 9 -KPX quotedblleft V 18 -KPX quotedblleft W 26 -KPX quotedblleft Y 7 -KPX quotedblright A -54 -KPX quotedblright AE -56 -KPX quotedblright Aacute -54 -KPX quotedblright Adieresis -54 -KPX quotedblright Aring -54 -KPX quotedblright T 3 -KPX quotedblright V 11 -KPX quotedblright W 18 -KPX quotedblright Y 0 -KPX quoteleft A -57 -KPX quoteleft AE -60 -KPX quoteleft Aacute -57 -KPX quoteleft Adieresis -57 -KPX quoteleft Aring -57 -KPX quoteleft T -2 -KPX quoteleft V 7 -KPX quoteleft W 15 -KPX quoteleft Y -4 -KPX quoteright A -65 -KPX quoteright AE -67 -KPX quoteright Aacute -65 -KPX quoteright Adieresis -65 -KPX quoteright Aring -65 -KPX quoteright comma -52 -KPX quoteright d -20 -KPX quoteright o -29 -KPX quoteright period -52 -KPX quoteright r -19 -KPX quoteright s -17 -KPX quoteright t -9 -KPX quoteright v -3 -KPX quoteright w -3 -KPX quoteright y -4 -KPX r a -9 -KPX r aacute -9 -KPX r acircumflex -9 -KPX r adieresis -9 -KPX r ae -9 -KPX r agrave -9 -KPX r aring -9 -KPX r c -11 -KPX r ccedilla -8 -KPX r colon -12 -KPX r comma -52 -KPX r d -9 -KPX r e -15 -KPX r eacute -15 -KPX r ecircumflex -15 -KPX r egrave -15 -KPX r f 17 -KPX r g -8 -KPX r h -4 -KPX r hyphen -34 -KPX r i -5 -KPX r j -5 -KPX r k -5 -KPX r l -5 -KPX r m -4 -KPX r n -4 -KPX r o -18 -KPX r oacute -18 -KPX r ocircumflex -18 -KPX r odieresis -18 -KPX r oe -15 -KPX r ograve -18 -KPX r oslash -15 -KPX r p -1 -KPX r period -52 -KPX r q -9 -KPX r quoteright 3 -KPX r r -9 -KPX r s -4 -KPX r semicolon -12 -KPX r t 17 -KPX r u -5 -KPX r v 17 -KPX r w 15 -KPX r x 12 -KPX r y 16 -KPX r z 0 -KPX s quoteright -6 -KPX s t -11 -KPX seven colon -55 -KPX seven comma -99 -KPX seven eight -24 -KPX seven five -30 -KPX seven four -77 -KPX seven one -42 -KPX seven period -99 -KPX seven seven -3 -KPX seven six -32 -KPX seven three -22 -KPX seven two -22 -KPX six four -1 -KPX six one -39 -KPX six seven -21 -KPX t S -14 -KPX t a -5 -KPX t aacute -5 -KPX t adieresis -5 -KPX t ae -5 -KPX t aring -5 -KPX t colon -19 -KPX t e -12 -KPX t eacute -12 -KPX t h -6 -KPX t o -13 -KPX t oacute -13 -KPX t odieresis -13 -KPX t quoteright 2 -KPX t semicolon -19 -KPX three four 0 -KPX three one -41 -KPX three seven -23 -KPX two four -46 -KPX two one -37 -KPX two seven -21 -KPX u quoteright 0 -KPX v a -20 -KPX v aacute -20 -KPX v acircumflex -20 -KPX v adieresis -20 -KPX v ae -20 -KPX v agrave -20 -KPX v aring -20 -KPX v atilde -20 -KPX v c -15 -KPX v colon -14 -KPX v comma -54 -KPX v e -19 -KPX v eacute -19 -KPX v ecircumflex -19 -KPX v egrave -19 -KPX v g -17 -KPX v hyphen -7 -KPX v l -7 -KPX v o -20 -KPX v oacute -20 -KPX v odieresis -20 -KPX v ograve -20 -KPX v oslash -16 -KPX v period -54 -KPX v s -15 -KPX v semicolon -14 -KPX w a -16 -KPX w aacute -16 -KPX w acircumflex -16 -KPX w adieresis -16 -KPX w ae -16 -KPX w agrave -16 -KPX w aring -16 -KPX w atilde -16 -KPX w c -8 -KPX w colon -16 -KPX w comma -40 -KPX w e -12 -KPX w eacute -12 -KPX w ecircumflex -12 -KPX w egrave -12 -KPX w g -10 -KPX w hyphen 0 -KPX w l -9 -KPX w o -13 -KPX w oacute -13 -KPX w odieresis -13 -KPX w ograve -13 -KPX w oslash -8 -KPX w period -40 -KPX w s -11 -KPX w semicolon -16 -KPX x a -17 -KPX x c -16 -KPX x e -20 -KPX x eacute -20 -KPX x o -21 -KPX x q -17 -KPX y a -21 -KPX y aacute -21 -KPX y acircumflex -21 -KPX y adieresis -21 -KPX y ae -21 -KPX y agrave -21 -KPX y aring -21 -KPX y atilde -21 -KPX y c -16 -KPX y colon -15 -KPX y comma -54 -KPX y e -20 -KPX y eacute -20 -KPX y ecircumflex -20 -KPX y egrave -20 -KPX y g -18 -KPX y hyphen -6 -KPX y l -8 -KPX y o -21 -KPX y oacute -21 -KPX y odieresis -21 -KPX y ograve -21 -KPX y oslash -16 -KPX y period -53 -KPX y s -16 -KPX y semicolon -15 -KPX zero four -2 -KPX zero one -40 -KPX zero seven -28 -EndKernPairs -EndKernData -EndFontMetrics diff --git a/misc/gs_afm/TimesBo.afm b/misc/gs_afm/TimesBo.afm deleted file mode 100644 index 1947d3ab1d..0000000000 --- a/misc/gs_afm/TimesBo.afm +++ /dev/null @@ -1,1257 +0,0 @@ -StartFontMetrics 3.0 -Comment Copyright URW Software, Copyright 1994 by URW -Comment Creation Date: 11/17/1994 -Comment See the file PUBLIC (Aladdin Free Public License) for license conditions. -FontName NimbusRomNo9L-Medi -FullName Nimbus Roman No9 L Medium -FamilyName Nimbus Roman No9 L -Weight Bold -ItalicAngle 0.0 -IsFixedPitch false -UnderlinePosition -100 -UnderlineThickness 50 -Version 001.005 -Notice URW Software, Copyright 1994 by URW -EncodingScheme AdobeStandardEncoding -FontBBox -168 -218 1000 948 -CapHeight 676 -XHeight 461 -Descender -205 -Ascender 676 -StartCharMetrics 232 -C 32 ; WX 250 ; N space ; B 125 0 125 0 ; -C 33 ; WX 333 ; N exclam ; B 81 -13 251 691 ; -C 34 ; WX 555 ; N quotedbl ; B 83 404 472 691 ; -C 35 ; WX 500 ; N numbersign ; B 4 0 496 700 ; -C 36 ; WX 500 ; N dollar ; B 29 -99 472 750 ; -C 37 ; WX 1000 ; N percent ; B 124 -14 877 692 ; -C 38 ; WX 833 ; N ampersand ; B 62 -16 787 691 ; -C 39 ; WX 333 ; N quoteright ; B 79 356 263 691 ; -C 40 ; WX 333 ; N parenleft ; B 46 -168 306 694 ; -C 41 ; WX 333 ; N parenright ; B 27 -168 287 694 ; -C 42 ; WX 500 ; N asterisk ; B 56 255 447 691 ; -C 43 ; WX 570 ; N plus ; B 33 0 537 506 ; -C 44 ; WX 250 ; N comma ; B 39 -180 223 155 ; -C 45 ; WX 333 ; N hyphen ; B 44 171 287 287 ; -C 46 ; WX 250 ; N period ; B 41 -13 210 156 ; -C 47 ; WX 278 ; N slash ; B -24 -19 302 691 ; -C 48 ; WX 500 ; N zero ; B 24 -13 476 688 ; -C 49 ; WX 500 ; N one ; B 65 0 442 688 ; -C 50 ; WX 500 ; N two ; B 17 0 478 688 ; -C 51 ; WX 500 ; N three ; B 16 -14 468 688 ; -C 52 ; WX 500 ; N four ; B 19 0 475 688 ; -C 53 ; WX 500 ; N five ; B 22 -8 470 676 ; -C 54 ; WX 500 ; N six ; B 28 -13 475 688 ; -C 55 ; WX 500 ; N seven ; B 17 0 477 676 ; -C 56 ; WX 500 ; N eight ; B 28 -13 472 688 ; -C 57 ; WX 500 ; N nine ; B 26 -13 473 688 ; -C 58 ; WX 333 ; N colon ; B 82 -13 251 472 ; -C 59 ; WX 333 ; N semicolon ; B 82 -180 266 472 ; -C 60 ; WX 570 ; N less ; B 31 -12 539 518 ; -C 61 ; WX 570 ; N equal ; B 33 107 537 399 ; -C 62 ; WX 570 ; N greater ; B 31 -12 539 518 ; -C 63 ; WX 500 ; N question ; B 57 -13 445 689 ; -C 64 ; WX 930 ; N at ; B 108 -19 822 691 ; -C 65 ; WX 722 ; N A ; B 9 0 689 690 ; -C 66 ; WX 667 ; N B ; B 16 0 619 676 ; -C 67 ; WX 722 ; N C ; B 49 -19 687 691 ; -C 68 ; WX 722 ; N D ; B 14 0 690 676 ; -C 69 ; WX 667 ; N E ; B 16 0 641 676 ; -C 70 ; WX 611 ; N F ; B 16 0 583 676 ; -C 71 ; WX 778 ; N G ; B 37 -19 755 691 ; -C 72 ; WX 778 ; N H ; B 21 0 759 676 ; -C 73 ; WX 389 ; N I ; B 20 0 370 676 ; -C 74 ; WX 500 ; N J ; B 3 -96 479 676 ; -C 75 ; WX 778 ; N K ; B 30 0 769 676 ; -C 76 ; WX 667 ; N L ; B 19 0 638 676 ; -C 77 ; WX 944 ; N M ; B 14 0 921 676 ; -C 78 ; WX 722 ; N N ; B 16 -18 701 676 ; -C 79 ; WX 778 ; N O ; B 35 -19 743 691 ; -C 80 ; WX 611 ; N P ; B 16 0 600 676 ; -C 81 ; WX 778 ; N Q ; B 35 -176 743 691 ; -C 82 ; WX 722 ; N R ; B 26 0 715 676 ; -C 83 ; WX 556 ; N S ; B 35 -19 513 692 ; -C 84 ; WX 667 ; N T ; B 31 0 636 676 ; -C 85 ; WX 722 ; N U ; B 16 -19 701 676 ; -C 86 ; WX 722 ; N V ; B 16 -18 701 676 ; -C 87 ; WX 1000 ; N W ; B 19 -15 981 676 ; -C 88 ; WX 722 ; N X ; B 16 0 699 676 ; -C 89 ; WX 722 ; N Y ; B 15 0 699 676 ; -C 90 ; WX 667 ; N Z ; B 28 0 634 676 ; -C 91 ; WX 333 ; N bracketleft ; B 67 -149 301 678 ; -C 92 ; WX 278 ; N backslash ; B -25 -19 303 691 ; -C 93 ; WX 333 ; N bracketright ; B 32 -149 266 678 ; -C 94 ; WX 581 ; N asciicircum ; B 73 311 509 676 ; -C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; -C 96 ; WX 333 ; N quoteleft ; B 70 356 254 691 ; -C 97 ; WX 500 ; N a ; B 25 -14 488 473 ; -C 98 ; WX 556 ; N b ; B 17 -14 521 676 ; -C 99 ; WX 444 ; N c ; B 25 -14 430 473 ; -C 100 ; WX 556 ; N d ; B 25 -14 534 676 ; -C 101 ; WX 444 ; N e ; B 25 -14 426 473 ; -C 102 ; WX 333 ; N f ; B 14 0 389 691 ; -C 103 ; WX 500 ; N g ; B 28 -206 483 473 ; -C 104 ; WX 556 ; N h ; B 16 0 534 676 ; -C 105 ; WX 278 ; N i ; B 16 0 255 691 ; -C 106 ; WX 333 ; N j ; B -57 -203 263 691 ; -C 107 ; WX 556 ; N k ; B 22 0 543 676 ; -C 108 ; WX 278 ; N l ; B 16 0 255 676 ; -C 109 ; WX 833 ; N m ; B 16 0 814 473 ; -C 110 ; WX 556 ; N n ; B 21 0 539 473 ; -C 111 ; WX 500 ; N o ; B 25 -14 476 473 ; -C 112 ; WX 556 ; N p ; B 19 -205 524 473 ; -C 113 ; WX 556 ; N q ; B 34 -205 536 473 ; -C 114 ; WX 444 ; N r ; B 29 0 434 473 ; -C 115 ; WX 389 ; N s ; B 25 -14 361 473 ; -C 116 ; WX 333 ; N t ; B 20 -12 332 630 ; -C 117 ; WX 556 ; N u ; B 16 -14 537 461 ; -C 118 ; WX 500 ; N v ; B 21 -14 485 461 ; -C 119 ; WX 722 ; N w ; B 23 -14 707 461 ; -C 120 ; WX 500 ; N x ; B 12 0 484 461 ; -C 121 ; WX 500 ; N y ; B 16 -205 480 461 ; -C 122 ; WX 444 ; N z ; B 21 0 420 461 ; -C 123 ; WX 394 ; N braceleft ; B 22 -175 340 698 ; -C 124 ; WX 220 ; N bar ; B 66 -19 154 691 ; -C 125 ; WX 394 ; N braceright ; B 54 -175 372 698 ; -C 126 ; WX 520 ; N asciitilde ; B 29 175 491 331 ; -C 161 ; WX 333 ; N exclamdown ; B 82 -203 252 501 ; -C 162 ; WX 500 ; N cent ; B 53 -140 458 588 ; -C 163 ; WX 500 ; N sterling ; B 21 -14 477 684 ; -C 164 ; WX 167 ; N fraction ; B -168 -12 329 688 ; -C 165 ; WX 500 ; N yen ; B -64 0 547 676 ; -C 166 ; WX 500 ; N florin ; B 0 -155 498 706 ; -C 167 ; WX 500 ; N section ; B 57 -132 443 691 ; -C 168 ; WX 500 ; N currency ; B -26 61 526 613 ; -C 169 ; WX 278 ; N quotesingle ; B 75 404 204 691 ; -C 170 ; WX 500 ; N quotedblleft ; B 32 356 486 691 ; -C 171 ; WX 500 ; N guillemotleft ; B 23 36 473 415 ; -C 172 ; WX 333 ; N guilsinglleft ; B 51 36 305 415 ; -C 173 ; WX 333 ; N guilsinglright ; B 28 36 282 415 ; -C 174 ; WX 556 ; N fi ; B 14 0 536 691 ; -C 175 ; WX 556 ; N fl ; B 14 0 536 691 ; -C 177 ; WX 500 ; N endash ; B 0 181 500 271 ; -C 178 ; WX 500 ; N dagger ; B 47 -134 453 691 ; -C 179 ; WX 500 ; N daggerdbl ; B 45 -132 456 691 ; -C 180 ; WX 250 ; N periodcentered ; B 41 248 210 417 ; -C 182 ; WX 540 ; N paragraph ; B 0 -186 519 676 ; -C 183 ; WX 350 ; N bullet ; B 35 198 315 478 ; -C 184 ; WX 333 ; N quotesinglbase ; B 79 -180 263 155 ; -C 185 ; WX 500 ; N quotedblbase ; B 14 -180 468 155 ; -C 186 ; WX 500 ; N quotedblright ; B 14 356 468 691 ; -C 187 ; WX 500 ; N guillemotright ; B 27 36 477 415 ; -C 188 ; WX 1000 ; N ellipsis ; B 82 -13 917 156 ; -C 189 ; WX 1000 ; N perthousand ; B 7 -29 995 706 ; -C 191 ; WX 500 ; N questiondown ; B 55 -201 443 501 ; -C 193 ; WX 333 ; N grave ; B 8 528 246 713 ; -C 194 ; WX 333 ; N acute ; B 86 528 324 713 ; -C 195 ; WX 333 ; N circumflex ; B -2 528 335 704 ; -C 196 ; WX 333 ; N tilde ; B -16 547 349 674 ; -C 197 ; WX 333 ; N macron ; B 1 565 331 637 ; -C 198 ; WX 333 ; N breve ; B 15 528 318 691 ; -C 199 ; WX 333 ; N dotaccent ; B 103 537 232 666 ; -C 200 ; WX 333 ; N dieresis ; B -2 537 337 666 ; -C 202 ; WX 333 ; N ring ; B 60 537 273 750 ; -C 203 ; WX 333 ; N cedilla ; B 68 -218 294 0 ; -C 205 ; WX 333 ; N hungarumlaut ; B -13 528 425 713 ; -C 206 ; WX 333 ; N ogonek ; B 90 -173 319 44 ; -C 207 ; WX 333 ; N caron ; B -2 528 335 704 ; -C 208 ; WX 1000 ; N emdash ; B 0 181 1000 271 ; -C 225 ; WX 1000 ; N AE ; B 4 0 951 676 ; -C 227 ; WX 300 ; N ordfeminine ; B -1 397 301 688 ; -C 232 ; WX 667 ; N Lslash ; B 19 0 638 676 ; -C 233 ; WX 778 ; N Oslash ; B 35 -74 743 737 ; -C 234 ; WX 1000 ; N OE ; B 22 -5 981 684 ; -C 235 ; WX 330 ; N ordmasculine ; B 18 397 312 688 ; -C 241 ; WX 722 ; N ae ; B 33 -14 693 473 ; -C 245 ; WX 278 ; N dotlessi ; B 16 0 255 461 ; -C 248 ; WX 278 ; N lslash ; B -22 0 303 676 ; -C 249 ; WX 500 ; N oslash ; B 25 -92 476 549 ; -C 250 ; WX 722 ; N oe ; B 22 -14 696 473 ; -C 251 ; WX 556 ; N germandbls ; B 19 -12 517 691 ; -C -1 ; WX 722 ; N Yacute ; B 15 0 699 923 ; -C -1 ; WX 722 ; N Ucircumflex ; B 16 -19 701 914 ; -C -1 ; WX 722 ; N Ugrave ; B 16 -19 701 923 ; -C -1 ; WX 667 ; N Zcaron ; B 28 0 634 914 ; -C -1 ; WX 722 ; N Ydieresis ; B 15 0 699 876 ; -C -1 ; WX 300 ; N threesuperior ; B 3 268 297 688 ; -C -1 ; WX 722 ; N Uacute ; B 16 -19 701 923 ; -C -1 ; WX 300 ; N twosuperior ; B 0 275 300 688 ; -C -1 ; WX 722 ; N Udieresis ; B 16 -19 701 876 ; -C -1 ; WX 250 ; N middot ; B 41 248 210 417 ; -C -1 ; WX 300 ; N onesuperior ; B 28 275 273 688 ; -C -1 ; WX 500 ; N aacute ; B 25 -14 488 713 ; -C -1 ; WX 500 ; N agrave ; B 25 -14 488 713 ; -C -1 ; WX 500 ; N acircumflex ; B 25 -14 488 704 ; -C -1 ; WX 556 ; N Scaron ; B 35 -19 513 914 ; -C -1 ; WX 778 ; N Otilde ; B 35 -19 743 884 ; -C -1 ; WX 333 ; N sfthyphen ; B 44 171 287 287 ; -C -1 ; WX 500 ; N atilde ; B 25 -14 488 674 ; -C -1 ; WX 500 ; N aring ; B 25 -14 488 750 ; -C -1 ; WX 500 ; N adieresis ; B 25 -14 488 666 ; -C -1 ; WX 778 ; N Ograve ; B 35 -19 743 923 ; -C -1 ; WX 778 ; N Ocircumflex ; B 35 -19 743 914 ; -C -1 ; WX 778 ; N Odieresis ; B 35 -19 743 876 ; -C -1 ; WX 722 ; N Ntilde ; B 16 -18 701 884 ; -C -1 ; WX 444 ; N edieresis ; B 25 -14 426 666 ; -C -1 ; WX 444 ; N eacute ; B 25 -14 426 713 ; -C -1 ; WX 444 ; N egrave ; B 25 -14 426 713 ; -C -1 ; WX 389 ; N Icircumflex ; B 20 0 370 914 ; -C -1 ; WX 444 ; N ecircumflex ; B 25 -14 426 704 ; -C -1 ; WX 389 ; N Igrave ; B 20 0 370 923 ; -C -1 ; WX 389 ; N Iacute ; B 20 0 370 923 ; -C -1 ; WX 389 ; N Idieresis ; B 20 0 370 876 ; -C -1 ; WX 400 ; N degree ; B 57 402 343 688 ; -C -1 ; WX 667 ; N Ecircumflex ; B 16 0 641 914 ; -C -1 ; WX 570 ; N minus ; B 33 209 537 297 ; -C -1 ; WX 570 ; N multiply ; B 48 16 522 490 ; -C -1 ; WX 570 ; N divide ; B 33 -31 537 537 ; -C -1 ; WX 667 ; N Egrave ; B 16 0 641 923 ; -C -1 ; WX 1000 ; N trademark ; B 24 271 977 676 ; -C -1 ; WX 778 ; N Oacute ; B 35 -19 743 923 ; -C -1 ; WX 556 ; N thorn ; B 19 -205 524 676 ; -C -1 ; WX 500 ; N eth ; B 25 -14 476 691 ; -C -1 ; WX 667 ; N Eacute ; B 16 0 641 923 ; -C -1 ; WX 444 ; N ccedilla ; B 25 -218 430 473 ; -C -1 ; WX 278 ; N idieresis ; B -36 0 303 666 ; -C -1 ; WX 278 ; N iacute ; B 16 0 290 713 ; -C -1 ; WX 278 ; N igrave ; B -26 0 255 713 ; -C -1 ; WX 570 ; N plusminus ; B 33 0 537 568 ; -C -1 ; WX 750 ; N onehalf ; B -7 -12 775 688 ; -C -1 ; WX 750 ; N onequarter ; B 28 -12 743 688 ; -C -1 ; WX 750 ; N threequarters ; B 23 -12 733 688 ; -C -1 ; WX 278 ; N icircumflex ; B -36 0 301 704 ; -C -1 ; WX 667 ; N Edieresis ; B 16 0 641 876 ; -C -1 ; WX 556 ; N ntilde ; B 21 0 539 674 ; -C -1 ; WX 722 ; N Aring ; B 9 0 689 948 ; -C -1 ; WX 500 ; N odieresis ; B 25 -14 476 666 ; -C -1 ; WX 500 ; N oacute ; B 25 -14 476 713 ; -C -1 ; WX 500 ; N ograve ; B 25 -14 476 713 ; -C -1 ; WX 500 ; N ocircumflex ; B 25 -14 476 704 ; -C -1 ; WX 500 ; N otilde ; B 25 -14 476 674 ; -C -1 ; WX 389 ; N scaron ; B 25 -14 363 704 ; -C -1 ; WX 556 ; N udieresis ; B 16 -14 537 666 ; -C -1 ; WX 556 ; N uacute ; B 16 -14 537 713 ; -C -1 ; WX 556 ; N ugrave ; B 16 -14 537 713 ; -C -1 ; WX 556 ; N ucircumflex ; B 16 -14 537 704 ; -C -1 ; WX 500 ; N yacute ; B 16 -205 480 713 ; -C -1 ; WX 444 ; N zcaron ; B 21 0 420 704 ; -C -1 ; WX 500 ; N ydieresis ; B 16 -205 480 666 ; -C -1 ; WX 747 ; N copyright ; B 26 -19 721 691 ; -C -1 ; WX 747 ; N registered ; B 26 -19 721 691 ; -C -1 ; WX 722 ; N Atilde ; B 9 0 689 884 ; -C -1 ; WX 250 ; N nbspace ; B 125 0 125 0 ; -C -1 ; WX 722 ; N Ccedilla ; B 49 -218 687 691 ; -C -1 ; WX 722 ; N Acircumflex ; B 9 0 689 914 ; -C -1 ; WX 722 ; N Agrave ; B 9 0 689 923 ; -C -1 ; WX 570 ; N logicalnot ; B 33 108 537 399 ; -C -1 ; WX 722 ; N Aacute ; B 9 0 689 923 ; -C -1 ; WX 722 ; N Eth ; B 6 0 690 676 ; -C -1 ; WX 220 ; N brokenbar ; B 66 -19 154 691 ; -C -1 ; WX 611 ; N Thorn ; B 16 0 600 676 ; -C -1 ; WX 722 ; N Adieresis ; B 9 0 689 876 ; -C -1 ; WX 556 ; N mu ; B 33 -206 536 461 ; -C -1 ; WX 250 ; N .notdef ; B 125 0 125 0 ; -EndCharMetrics -StartKernData -StartKernPairs 998 -KPX A C -73 -KPX A Ccedilla -78 -KPX A G -68 -KPX A O -68 -KPX A Odieresis -68 -KPX A Q -68 -KPX A T -59 -KPX A U -66 -KPX A Uacute -66 -KPX A Ucircumflex -66 -KPX A Udieresis -66 -KPX A Ugrave -66 -KPX A V -130 -KPX A W -116 -KPX A Y -74 -KPX A a -5 -KPX A b -22 -KPX A c -34 -KPX A ccedilla -43 -KPX A comma 1 -KPX A d -28 -KPX A e -32 -KPX A g -7 -KPX A guillemotleft -53 -KPX A guilsinglleft -67 -KPX A hyphen -30 -KPX A o -36 -KPX A period 0 -KPX A q -38 -KPX A quotedblright -76 -KPX A quoteright -108 -KPX A t -27 -KPX A u -30 -KPX A v -84 -KPX A w -80 -KPX A y -84 -KPX Aacute C -73 -KPX Aacute G -68 -KPX Aacute O -68 -KPX Aacute Q -68 -KPX Aacute T -59 -KPX Aacute U -66 -KPX Aacute V -130 -KPX Aacute W -116 -KPX Aacute Y -74 -KPX Aacute a -5 -KPX Aacute b -22 -KPX Aacute c -34 -KPX Aacute comma 1 -KPX Aacute d -28 -KPX Aacute e -32 -KPX Aacute g -7 -KPX Aacute guillemotleft -53 -KPX Aacute guilsinglleft -67 -KPX Aacute hyphen -30 -KPX Aacute o -36 -KPX Aacute period 0 -KPX Aacute q -38 -KPX Aacute quoteright -108 -KPX Aacute t -27 -KPX Aacute u -30 -KPX Aacute v -84 -KPX Aacute w -80 -KPX Aacute y -84 -KPX Acircumflex C -73 -KPX Acircumflex G -68 -KPX Acircumflex O -68 -KPX Acircumflex Q -68 -KPX Acircumflex T -59 -KPX Acircumflex U -66 -KPX Acircumflex V -130 -KPX Acircumflex W -116 -KPX Acircumflex Y -74 -KPX Acircumflex comma 1 -KPX Acircumflex period 0 -KPX Adieresis C -73 -KPX Adieresis G -68 -KPX Adieresis O -68 -KPX Adieresis Q -68 -KPX Adieresis T -59 -KPX Adieresis U -66 -KPX Adieresis V -130 -KPX Adieresis W -116 -KPX Adieresis Y -74 -KPX Adieresis a -5 -KPX Adieresis b -22 -KPX Adieresis c -34 -KPX Adieresis comma 1 -KPX Adieresis d -28 -KPX Adieresis g -7 -KPX Adieresis guillemotleft -53 -KPX Adieresis guilsinglleft -67 -KPX Adieresis hyphen -30 -KPX Adieresis o -36 -KPX Adieresis period 0 -KPX Adieresis q -38 -KPX Adieresis quotedblright -76 -KPX Adieresis quoteright -108 -KPX Adieresis t -27 -KPX Adieresis u -30 -KPX Adieresis v -84 -KPX Adieresis w -80 -KPX Adieresis y -84 -KPX Agrave C -73 -KPX Agrave G -68 -KPX Agrave O -68 -KPX Agrave Q -68 -KPX Agrave T -59 -KPX Agrave U -66 -KPX Agrave V -130 -KPX Agrave W -116 -KPX Agrave Y -74 -KPX Agrave comma 1 -KPX Agrave period 0 -KPX Aring C -73 -KPX Aring G -68 -KPX Aring O -68 -KPX Aring Q -68 -KPX Aring T -59 -KPX Aring U -66 -KPX Aring V -130 -KPX Aring W -116 -KPX Aring Y -74 -KPX Aring a -5 -KPX Aring b -22 -KPX Aring c -34 -KPX Aring comma 1 -KPX Aring d -28 -KPX Aring e -32 -KPX Aring g -7 -KPX Aring guillemotleft -53 -KPX Aring guilsinglleft -67 -KPX Aring hyphen -30 -KPX Aring o -36 -KPX Aring period 0 -KPX Aring q -38 -KPX Aring quotedblright -76 -KPX Aring quoteright -108 -KPX Aring t -27 -KPX Aring u -30 -KPX Aring v -84 -KPX Aring w -80 -KPX Aring y -84 -KPX Atilde C -73 -KPX Atilde G -68 -KPX Atilde O -68 -KPX Atilde Q -68 -KPX Atilde T -59 -KPX Atilde U -66 -KPX Atilde V -130 -KPX Atilde W -116 -KPX Atilde Y -74 -KPX Atilde comma 1 -KPX Atilde period 0 -KPX B A -34 -KPX B AE -32 -KPX B Aacute -34 -KPX B Acircumflex -34 -KPX B Adieresis -34 -KPX B Aring -34 -KPX B Atilde -34 -KPX B O -12 -KPX B OE -4 -KPX B Oacute -12 -KPX B Ocircumflex -12 -KPX B Odieresis -12 -KPX B Ograve -12 -KPX B Oslash -11 -KPX B V -45 -KPX B W -46 -KPX B Y -44 -KPX C A -25 -KPX C AE -22 -KPX C Aacute -25 -KPX C Adieresis -25 -KPX C Aring -25 -KPX C H -2 -KPX C K -6 -KPX C O -14 -KPX C Oacute -14 -KPX C Odieresis -14 -KPX Ccedilla A -33 -KPX D A -55 -KPX D Aacute -55 -KPX D Acircumflex -55 -KPX D Adieresis -55 -KPX D Agrave -55 -KPX D Aring -55 -KPX D Atilde -55 -KPX D J -38 -KPX D T -6 -KPX D V -60 -KPX D W -50 -KPX D X -50 -KPX D Y -59 -KPX F A -80 -KPX F Aacute -80 -KPX F Acircumflex -80 -KPX F Adieresis -80 -KPX F Agrave -80 -KPX F Aring -80 -KPX F Atilde -80 -KPX F J -42 -KPX F O -7 -KPX F Odieresis -7 -KPX F a -50 -KPX F aacute -50 -KPX F adieresis -22 -KPX F ae -53 -KPX F aring -50 -KPX F comma -59 -KPX F e -51 -KPX F eacute -51 -KPX F hyphen -34 -KPX F i -1 -KPX F j -26 -KPX F o -54 -KPX F oacute -54 -KPX F odieresis -25 -KPX F oe -52 -KPX F oslash -53 -KPX F period -60 -KPX F r -7 -KPX F u -10 -KPX G A -27 -KPX G AE -24 -KPX G Aacute -27 -KPX G Acircumflex -27 -KPX G Adieresis -27 -KPX G Agrave -27 -KPX G Aring -27 -KPX G Atilde -27 -KPX G T -41 -KPX G V -33 -KPX G W -35 -KPX G Y -33 -KPX J A -30 -KPX J AE -27 -KPX J Adieresis -30 -KPX J Aring -30 -KPX K C -61 -KPX K G -56 -KPX K O -56 -KPX K OE -45 -KPX K Oacute -56 -KPX K Odieresis -56 -KPX K S 13 -KPX K T -2 -KPX K a 6 -KPX K adieresis 6 -KPX K ae 3 -KPX K aring 6 -KPX K e -20 -KPX K hyphen -47 -KPX K o -24 -KPX K oacute -24 -KPX K odieresis -24 -KPX K u -18 -KPX K udieresis -18 -KPX K y -83 -KPX L A -1 -KPX L AE 1 -KPX L Aacute -1 -KPX L Adieresis -1 -KPX L Aring -1 -KPX L C -11 -KPX L Ccedilla -14 -KPX L G -5 -KPX L O -5 -KPX L Oacute -5 -KPX L Ocircumflex -5 -KPX L Odieresis -5 -KPX L Ograve -5 -KPX L Otilde -5 -KPX L S 2 -KPX L T -74 -KPX L U -29 -KPX L Udieresis -29 -KPX L V -106 -KPX L W -87 -KPX L Y -89 -KPX L hyphen 24 -KPX L quotedblright -37 -KPX L quoteright -69 -KPX L u -11 -KPX L udieresis -13 -KPX L y -49 -KPX N A -19 -KPX N AE -16 -KPX N Aacute -19 -KPX N Adieresis -19 -KPX N Aring -19 -KPX N C -22 -KPX N Ccedilla -22 -KPX N G -16 -KPX N O -15 -KPX N Oacute -15 -KPX N Odieresis -15 -KPX N a -16 -KPX N aacute -16 -KPX N adieresis -16 -KPX N ae -19 -KPX N aring -16 -KPX N comma 1 -KPX N e -14 -KPX N eacute -14 -KPX N o -16 -KPX N oacute -16 -KPX N odieresis -16 -KPX N oslash -15 -KPX N period 0 -KPX N u -17 -KPX N udieresis -17 -KPX O A -56 -KPX O AE -54 -KPX O Aacute -56 -KPX O Adieresis -56 -KPX O Aring -56 -KPX O T -9 -KPX O V -60 -KPX O W -54 -KPX O X -51 -KPX O Y -59 -KPX Oacute A -56 -KPX Oacute T -9 -KPX Oacute V -60 -KPX Oacute W -54 -KPX Oacute Y -59 -KPX Ocircumflex T -9 -KPX Ocircumflex V -60 -KPX Ocircumflex Y -59 -KPX Odieresis A -56 -KPX Odieresis T -9 -KPX Odieresis V -60 -KPX Odieresis W -54 -KPX Odieresis X -51 -KPX Odieresis Y -59 -KPX Ograve T -9 -KPX Ograve V -60 -KPX Ograve Y -59 -KPX Oslash A -52 -KPX Otilde T -9 -KPX Otilde V -60 -KPX Otilde Y -59 -KPX P A -82 -KPX P AE -94 -KPX P Aacute -82 -KPX P Adieresis -82 -KPX P Aring -82 -KPX P J -68 -KPX P a -20 -KPX P aacute -20 -KPX P adieresis -19 -KPX P ae -23 -KPX P aring -20 -KPX P comma -86 -KPX P e -30 -KPX P eacute -30 -KPX P hyphen -39 -KPX P o -33 -KPX P oacute -33 -KPX P odieresis -22 -KPX P oe -31 -KPX P oslash -34 -KPX P period -87 -KPX R C -36 -KPX R Ccedilla -37 -KPX R G -30 -KPX R O -29 -KPX R OE -22 -KPX R Oacute -29 -KPX R Odieresis -29 -KPX R T -26 -KPX R U -37 -KPX R Udieresis -37 -KPX R V -53 -KPX R W -54 -KPX R Y -52 -KPX R a 7 -KPX R aacute 7 -KPX R adieresis 7 -KPX R ae 4 -KPX R aring 7 -KPX R e -19 -KPX R eacute -19 -KPX R hyphen -30 -KPX R o -23 -KPX R oacute -23 -KPX R odieresis -23 -KPX R oe -21 -KPX R u -17 -KPX R uacute -17 -KPX R udieresis -17 -KPX R y -27 -KPX S A -24 -KPX S AE -21 -KPX S Aacute -24 -KPX S Adieresis -24 -KPX S Aring -24 -KPX S T -16 -KPX S V -9 -KPX S W -10 -KPX S Y -8 -KPX S t -10 -KPX T A -46 -KPX T AE -44 -KPX T Aacute -46 -KPX T Acircumflex -46 -KPX T Adieresis -46 -KPX T Agrave -46 -KPX T Aring -46 -KPX T Atilde -46 -KPX T C -17 -KPX T G -11 -KPX T J -43 -KPX T O -9 -KPX T OE -3 -KPX T Oacute -9 -KPX T Ocircumflex -9 -KPX T Odieresis -9 -KPX T Ograve -9 -KPX T Oslash -11 -KPX T Otilde -9 -KPX T S -2 -KPX T V 11 -KPX T W 9 -KPX T Y 11 -KPX T a -65 -KPX T ae -69 -KPX T c -88 -KPX T colon -85 -KPX T comma -63 -KPX T e -86 -KPX T g -68 -KPX T guillemotleft -99 -KPX T guilsinglleft -113 -KPX T hyphen -73 -KPX T i -16 -KPX T j -40 -KPX T o -88 -KPX T oslash -87 -KPX T period -64 -KPX T r -61 -KPX T s -59 -KPX T semicolon -85 -KPX T u -89 -KPX T v -106 -KPX T w -107 -KPX T y -104 -KPX U A -55 -KPX U AE -52 -KPX U Aacute -55 -KPX U Acircumflex -55 -KPX U Adieresis -55 -KPX U Aring -55 -KPX U Atilde -55 -KPX U comma -17 -KPX U m -23 -KPX U n -25 -KPX U p -28 -KPX U period -18 -KPX U r -29 -KPX Uacute A -55 -KPX Uacute comma -17 -KPX Uacute m -23 -KPX Uacute n -25 -KPX Uacute p -28 -KPX Uacute period -18 -KPX Uacute r -29 -KPX Ucircumflex A -55 -KPX Udieresis A -55 -KPX Udieresis b 10 -KPX Udieresis comma -17 -KPX Udieresis m -23 -KPX Udieresis n -25 -KPX Udieresis p -28 -KPX Udieresis period -18 -KPX Udieresis r -29 -KPX Ugrave A -55 -KPX V A -114 -KPX V AE -113 -KPX V Aacute -114 -KPX V Acircumflex -114 -KPX V Adieresis -114 -KPX V Agrave -114 -KPX V Aring -114 -KPX V Atilde -114 -KPX V C -70 -KPX V G -64 -KPX V O -63 -KPX V Oacute -63 -KPX V Ocircumflex -63 -KPX V Odieresis -63 -KPX V Ograve -63 -KPX V Oslash -65 -KPX V Otilde -63 -KPX V S -25 -KPX V T 8 -KPX V a -87 -KPX V ae -90 -KPX V colon -94 -KPX V comma -94 -KPX V e -86 -KPX V g -87 -KPX V guillemotleft -98 -KPX V guilsinglleft -112 -KPX V hyphen -68 -KPX V i -12 -KPX V o -89 -KPX V oslash -87 -KPX V period -95 -KPX V r -60 -KPX V semicolon -94 -KPX V u -58 -KPX V y -56 -KPX W A -99 -KPX W AE -102 -KPX W Aacute -99 -KPX W Acircumflex -99 -KPX W Adieresis -99 -KPX W Agrave -99 -KPX W Aring -99 -KPX W Atilde -99 -KPX W C -58 -KPX W G -52 -KPX W O -51 -KPX W Oacute -51 -KPX W Ocircumflex -51 -KPX W Odieresis -51 -KPX W Ograve -51 -KPX W Oslash -50 -KPX W Otilde -51 -KPX W S -24 -KPX W T 9 -KPX W a -70 -KPX W ae -73 -KPX W colon -80 -KPX W comma -72 -KPX W e -68 -KPX W g -70 -KPX W guillemotleft -79 -KPX W guilsinglleft -93 -KPX W hyphen -49 -KPX W i -11 -KPX W o -70 -KPX W oslash -69 -KPX W period -73 -KPX W r -49 -KPX W semicolon -80 -KPX W u -45 -KPX W y -44 -KPX X C -63 -KPX X O -56 -KPX X Odieresis -56 -KPX X Q -57 -KPX X a 0 -KPX X e -27 -KPX X hyphen -43 -KPX X o -31 -KPX X u -25 -KPX X y -90 -KPX Y A -64 -KPX Y AE -62 -KPX Y Aacute -64 -KPX Y Acircumflex -64 -KPX Y Adieresis -64 -KPX Y Agrave -64 -KPX Y Aring -64 -KPX Y Atilde -64 -KPX Y C -71 -KPX Y G -65 -KPX Y O -64 -KPX Y Oacute -64 -KPX Y Ocircumflex -64 -KPX Y Odieresis -64 -KPX Y Ograve -64 -KPX Y Oslash -68 -KPX Y Otilde -64 -KPX Y S -26 -KPX Y T 7 -KPX Y a -83 -KPX Y ae -87 -KPX Y colon -103 -KPX Y comma -80 -KPX Y e -93 -KPX Y g -86 -KPX Y guillemotleft -111 -KPX Y guilsinglleft -125 -KPX Y hyphen -87 -KPX Y i -13 -KPX Y o -96 -KPX Y oslash -95 -KPX Y p -72 -KPX Y period -81 -KPX Y semicolon -103 -KPX Y u -76 -KPX Y v -78 -KPX Z v -45 -KPX Z y -45 -KPX a j -39 -KPX a quoteright -34 -KPX a v -39 -KPX a w -40 -KPX a y -44 -KPX aacute v -39 -KPX aacute w -40 -KPX aacute y -44 -KPX adieresis v -39 -KPX adieresis w -40 -KPX adieresis y -44 -KPX ae v -33 -KPX ae w -34 -KPX ae y -37 -KPX agrave v -39 -KPX agrave w -40 -KPX agrave y -44 -KPX aring v -39 -KPX aring w -40 -KPX aring y -44 -KPX b v -39 -KPX b w -40 -KPX b y -42 -KPX c h -17 -KPX c k -18 -KPX comma one -12 -KPX comma quotedblright 9 -KPX comma quoteright -23 -KPX e quoteright -20 -KPX e t -11 -KPX e v -30 -KPX e w -31 -KPX e x -19 -KPX e y -32 -KPX eacute v -30 -KPX eacute w -31 -KPX eacute y -32 -KPX ecircumflex v -30 -KPX ecircumflex w -31 -KPX ecircumflex y -32 -KPX eight four 11 -KPX eight one -19 -KPX eight seven 0 -KPX f a -17 -KPX f aacute -17 -KPX f adieresis 14 -KPX f ae -20 -KPX f aring -14 -KPX f e -29 -KPX f eacute -29 -KPX f f 12 -KPX f i 22 -KPX f j -1 -KPX f l 33 -KPX f o -32 -KPX f oacute -32 -KPX f odieresis 11 -KPX f oe -30 -KPX f oslash -31 -KPX f quoteright 18 -KPX f s -8 -KPX f t -3 -KPX five four 1 -KPX five one -28 -KPX five seven -9 -KPX four four 13 -KPX four one -35 -KPX four seven -16 -KPX g a -15 -KPX g adieresis -15 -KPX g ae -18 -KPX g aring -15 -KPX g e -20 -KPX g eacute -20 -KPX g l 0 -KPX g oacute -20 -KPX g odieresis -20 -KPX g r 1 -KPX guillemotright A -41 -KPX guillemotright AE -46 -KPX guillemotright Aacute -41 -KPX guillemotright Adieresis -41 -KPX guillemotright Aring -41 -KPX guillemotright T -100 -KPX guillemotright V -102 -KPX guillemotright W -84 -KPX guillemotright Y -106 -KPX guilsinglright A -55 -KPX guilsinglright AE -60 -KPX guilsinglright Aacute -55 -KPX guilsinglright Adieresis -55 -KPX guilsinglright Aring -55 -KPX guilsinglright T -114 -KPX guilsinglright V -116 -KPX guilsinglright W -98 -KPX guilsinglright Y -120 -KPX h quoteright -30 -KPX h y -34 -KPX hyphen A -18 -KPX hyphen AE -24 -KPX hyphen Aacute -18 -KPX hyphen Adieresis -18 -KPX hyphen Aring -18 -KPX hyphen T -74 -KPX hyphen V -72 -KPX hyphen W -54 -KPX hyphen Y -83 -KPX i T -18 -KPX i j -36 -KPX k a -3 -KPX k aacute -3 -KPX k adieresis -3 -KPX k ae -6 -KPX k aring -3 -KPX k comma 0 -KPX k e -33 -KPX k eacute -33 -KPX k g -4 -KPX k hyphen -47 -KPX k o -38 -KPX k oacute -38 -KPX k odieresis -38 -KPX k period 0 -KPX k s 5 -KPX k u -5 -KPX k udieresis -5 -KPX l v -22 -KPX l y -19 -KPX m p -16 -KPX m v -32 -KPX m w -33 -KPX m y -33 -KPX n T -56 -KPX n p -15 -KPX n quoteright -28 -KPX n v -31 -KPX n w -32 -KPX n y -32 -KPX nine four 2 -KPX nine one -26 -KPX nine seven 10 -KPX o T -88 -KPX o quoteright -28 -KPX o t -11 -KPX o v -42 -KPX o w -38 -KPX o x -29 -KPX o y -43 -KPX oacute v -42 -KPX oacute w -38 -KPX oacute y -43 -KPX ocircumflex t -11 -KPX odieresis t -11 -KPX odieresis v -42 -KPX odieresis w -38 -KPX odieresis x -29 -KPX odieresis y -43 -KPX ograve v -42 -KPX ograve w -38 -KPX ograve y -43 -KPX one comma -16 -KPX one eight -34 -KPX one five -16 -KPX one four -56 -KPX one nine -9 -KPX one one -27 -KPX one period -17 -KPX one seven -56 -KPX one six -47 -KPX one three -9 -KPX one two -2 -KPX one zero -35 -KPX p t -11 -KPX p y -33 -KPX period one -21 -KPX period quotedblright 4 -KPX period quoteright -27 -KPX q c -14 -KPX q u -15 -KPX quotedblbase A 18 -KPX quotedblbase AE 20 -KPX quotedblbase T -59 -KPX quotedblbase V -98 -KPX quotedblbase W -75 -KPX quotedblbase Y -73 -KPX quotedblleft A -59 -KPX quotedblleft AE -78 -KPX quotedblleft Aacute -59 -KPX quotedblleft Adieresis -59 -KPX quotedblleft Aring -59 -KPX quotedblleft T 9 -KPX quotedblleft V 15 -KPX quotedblleft W 13 -KPX quotedblleft Y 15 -KPX quotedblright A -72 -KPX quotedblright AE -91 -KPX quotedblright Aacute -72 -KPX quotedblright Adieresis -72 -KPX quotedblright Aring -72 -KPX quotedblright T 4 -KPX quotedblright V 5 -KPX quotedblright W 4 -KPX quotedblright Y 6 -KPX quoteleft A -92 -KPX quoteleft AE -111 -KPX quoteleft Aacute -92 -KPX quoteleft Adieresis -92 -KPX quoteleft Aring -92 -KPX quoteleft T -22 -KPX quoteleft V -17 -KPX quoteleft W -19 -KPX quoteleft Y -17 -KPX quoteright A -91 -KPX quoteright AE -110 -KPX quoteright Aacute -91 -KPX quoteright Adieresis -91 -KPX quoteright Aring -91 -KPX quoteright comma -34 -KPX quoteright d -31 -KPX quoteright o -34 -KPX quoteright period -35 -KPX quoteright r -27 -KPX quoteright s -17 -KPX quoteright t -19 -KPX quoteright v -25 -KPX quoteright w -23 -KPX quoteright y -22 -KPX r a -6 -KPX r aacute -6 -KPX r acircumflex -6 -KPX r adieresis -6 -KPX r ae -8 -KPX r agrave -6 -KPX r aring -6 -KPX r c -15 -KPX r ccedilla -10 -KPX r colon -16 -KPX r comma -67 -KPX r d -13 -KPX r e -11 -KPX r eacute -11 -KPX r ecircumflex -11 -KPX r egrave -11 -KPX r f 11 -KPX r g -5 -KPX r h -15 -KPX r hyphen -18 -KPX r i 6 -KPX r j -12 -KPX r k -15 -KPX r l -14 -KPX r m 6 -KPX r n 3 -KPX r o -14 -KPX r oacute -14 -KPX r ocircumflex -14 -KPX r odieresis -14 -KPX r oe -12 -KPX r ograve -14 -KPX r oslash -14 -KPX r p 3 -KPX r period -68 -KPX r q -15 -KPX r quoteright -8 -KPX r r 0 -KPX r s 0 -KPX r semicolon -16 -KPX r t 9 -KPX r u 8 -KPX r v 8 -KPX r w 7 -KPX r x 10 -KPX r y 8 -KPX r z -1 -KPX s quoteright -17 -KPX s t -7 -KPX seven colon -64 -KPX seven comma -57 -KPX seven eight -18 -KPX seven five -34 -KPX seven four -54 -KPX seven one -25 -KPX seven period -58 -KPX seven seven -6 -KPX seven six -36 -KPX seven three -20 -KPX seven two -21 -KPX six four 13 -KPX six one -43 -KPX six seven -7 -KPX t S 11 -KPX t a 11 -KPX t aacute 11 -KPX t adieresis 11 -KPX t ae 7 -KPX t aring 11 -KPX t colon -12 -KPX t e -1 -KPX t eacute -1 -KPX t h -4 -KPX t o -3 -KPX t oacute -3 -KPX t odieresis -3 -KPX t quoteright -31 -KPX t semicolon -12 -KPX three four 9 -KPX three one -33 -KPX three seven -15 -KPX two four 14 -KPX two one -29 -KPX two seven -7 -KPX u quoteright -25 -KPX v a -23 -KPX v aacute -23 -KPX v acircumflex -23 -KPX v adieresis -23 -KPX v ae -25 -KPX v agrave -23 -KPX v aring -23 -KPX v atilde -23 -KPX v c -40 -KPX v colon -23 -KPX v comma -56 -KPX v e -35 -KPX v eacute -35 -KPX v ecircumflex -35 -KPX v egrave -35 -KPX v g -23 -KPX v hyphen -28 -KPX v l -16 -KPX v o -40 -KPX v oacute -40 -KPX v odieresis -40 -KPX v ograve -40 -KPX v oslash -39 -KPX v period -57 -KPX v s -16 -KPX v semicolon -23 -KPX w a -23 -KPX w aacute -23 -KPX w acircumflex -23 -KPX w adieresis -23 -KPX w ae -25 -KPX w agrave -23 -KPX w aring -23 -KPX w atilde -23 -KPX w c -36 -KPX w colon -23 -KPX w comma -51 -KPX w e -34 -KPX w eacute -34 -KPX w ecircumflex -34 -KPX w egrave -34 -KPX w g -23 -KPX w hyphen -23 -KPX w l -16 -KPX w o -36 -KPX w oacute -36 -KPX w odieresis -36 -KPX w ograve -36 -KPX w oslash -35 -KPX w period -52 -KPX w s -16 -KPX w semicolon -23 -KPX x a -2 -KPX x c -30 -KPX x e -28 -KPX x eacute -28 -KPX x o -30 -KPX x q -32 -KPX y a -32 -KPX y aacute -32 -KPX y acircumflex -32 -KPX y adieresis -32 -KPX y ae -34 -KPX y agrave -32 -KPX y aring -32 -KPX y atilde -32 -KPX y c -43 -KPX y colon -28 -KPX y comma -56 -KPX y e -40 -KPX y eacute -40 -KPX y ecircumflex -40 -KPX y egrave -40 -KPX y g -31 -KPX y hyphen -29 -KPX y l -19 -KPX y o -43 -KPX y oacute -43 -KPX y odieresis -43 -KPX y ograve -43 -KPX y oslash -42 -KPX y period -57 -KPX y s -24 -KPX y semicolon -28 -KPX zero four 11 -KPX zero one -31 -KPX zero seven 7 -EndKernPairs -EndKernData -EndFontMetrics diff --git a/misc/gs_afm/TimesBoO.afm b/misc/gs_afm/TimesBoO.afm deleted file mode 100644 index a31acdadc5..0000000000 --- a/misc/gs_afm/TimesBoO.afm +++ /dev/null @@ -1,1253 +0,0 @@ -StartFontMetrics 3.0 -Comment Copyright URW Software, Copyright 1994 by URW -Comment Creation Date: 2/11/1994 -Comment See the file PUBLIC (Aladdin Free Public License) for license conditions. -FontName NimbusRomNo9L-MediItal -FullName Nimbus Roman No9 L Medium Italic -FamilyName Nimbus Roman No9 L -Weight Bold -ItalicAngle -15.0 -IsFixedPitch false -UnderlinePosition -100 -UnderlineThickness 50 -Version 001.005 -Notice URW Software, Copyright 1994 by URW -EncodingScheme AdobeStandardEncoding -FontBBox -200 -218 996 949 -CapHeight 669 -XHeight 449 -Descender -205 -Ascender 699 -StartCharMetrics 232 -C 32 ; WX 250 ; N space ; B 125 0 125 0 ; -C 33 ; WX 389 ; N exclam ; B 67 -13 370 684 ; -C 34 ; WX 555 ; N quotedbl ; B 136 398 536 685 ; -C 35 ; WX 500 ; N numbersign ; B -33 0 533 700 ; -C 36 ; WX 500 ; N dollar ; B -20 -100 497 733 ; -C 37 ; WX 833 ; N percent ; B 39 -10 793 692 ; -C 38 ; WX 778 ; N ampersand ; B 5 -19 699 682 ; -C 39 ; WX 333 ; N quoteright ; B 98 369 302 685 ; -C 40 ; WX 333 ; N parenleft ; B 28 -179 344 685 ; -C 41 ; WX 333 ; N parenright ; B -44 -179 271 685 ; -C 42 ; WX 500 ; N asterisk ; B 65 252 456 685 ; -C 43 ; WX 570 ; N plus ; B 33 0 537 506 ; -C 44 ; WX 250 ; N comma ; B -60 -182 144 134 ; -C 45 ; WX 333 ; N hyphen ; B 2 166 271 282 ; -C 46 ; WX 250 ; N period ; B -9 -13 139 135 ; -C 47 ; WX 278 ; N slash ; B -64 -18 342 685 ; -C 48 ; WX 500 ; N zero ; B 17 -14 477 683 ; -C 49 ; WX 500 ; N one ; B 5 0 419 683 ; -C 50 ; WX 500 ; N two ; B -27 0 446 683 ; -C 51 ; WX 500 ; N three ; B -15 -13 450 683 ; -C 52 ; WX 500 ; N four ; B -15 0 503 683 ; -C 53 ; WX 500 ; N five ; B -11 -13 487 669 ; -C 54 ; WX 500 ; N six ; B 23 -15 509 679 ; -C 55 ; WX 500 ; N seven ; B 52 0 525 669 ; -C 56 ; WX 500 ; N eight ; B 3 -13 476 683 ; -C 57 ; WX 500 ; N nine ; B -12 -10 475 683 ; -C 58 ; WX 333 ; N colon ; B 23 -13 264 459 ; -C 59 ; WX 333 ; N semicolon ; B -25 -183 264 459 ; -C 60 ; WX 570 ; N less ; B 31 -12 539 518 ; -C 61 ; WX 570 ; N equal ; B 33 107 537 399 ; -C 62 ; WX 570 ; N greater ; B 31 -12 539 518 ; -C 63 ; WX 500 ; N question ; B 79 -13 470 684 ; -C 64 ; WX 832 ; N at ; B 63 -18 770 685 ; -C 65 ; WX 667 ; N A ; B -67 0 593 683 ; -C 66 ; WX 667 ; N B ; B -24 0 624 669 ; -C 67 ; WX 667 ; N C ; B 32 -18 677 685 ; -C 68 ; WX 722 ; N D ; B -46 0 685 669 ; -C 69 ; WX 667 ; N E ; B -27 0 653 669 ; -C 70 ; WX 667 ; N F ; B -13 0 660 669 ; -C 71 ; WX 722 ; N G ; B 21 -18 706 685 ; -C 72 ; WX 778 ; N H ; B -24 0 799 669 ; -C 73 ; WX 389 ; N I ; B -32 0 406 669 ; -C 74 ; WX 500 ; N J ; B -46 -99 524 669 ; -C 75 ; WX 667 ; N K ; B -21 0 702 669 ; -C 76 ; WX 611 ; N L ; B -22 0 590 669 ; -C 77 ; WX 889 ; N M ; B -29 -12 917 669 ; -C 78 ; WX 722 ; N N ; B -27 -15 748 669 ; -C 79 ; WX 722 ; N O ; B 27 -18 691 685 ; -C 80 ; WX 611 ; N P ; B -27 0 613 669 ; -C 81 ; WX 722 ; N Q ; B 27 -208 691 685 ; -C 82 ; WX 667 ; N R ; B -29 0 623 669 ; -C 83 ; WX 556 ; N S ; B 2 -18 526 685 ; -C 84 ; WX 611 ; N T ; B 50 0 650 669 ; -C 85 ; WX 722 ; N U ; B 67 -18 744 669 ; -C 86 ; WX 667 ; N V ; B 65 -18 715 669 ; -C 87 ; WX 889 ; N W ; B 65 -18 940 669 ; -C 88 ; WX 667 ; N X ; B -24 0 694 669 ; -C 89 ; WX 611 ; N Y ; B 73 0 659 669 ; -C 90 ; WX 611 ; N Z ; B -11 0 590 669 ; -C 91 ; WX 333 ; N bracketleft ; B -37 -159 362 674 ; -C 92 ; WX 278 ; N backslash ; B -1 -18 279 685 ; -C 93 ; WX 333 ; N bracketright ; B -56 -157 343 674 ; -C 94 ; WX 570 ; N asciicircum ; B 67 304 503 669 ; -C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; -C 96 ; WX 333 ; N quoteleft ; B 128 369 332 685 ; -C 97 ; WX 500 ; N a ; B -21 -14 455 462 ; -C 98 ; WX 500 ; N b ; B -14 -13 444 699 ; -C 99 ; WX 444 ; N c ; B -5 -13 392 462 ; -C 100 ; WX 500 ; N d ; B -21 -13 517 699 ; -C 101 ; WX 444 ; N e ; B 5 -13 398 462 ; -C 102 ; WX 333 ; N f ; B -169 -205 446 698 ; -C 103 ; WX 500 ; N g ; B -52 -203 478 462 ; -C 104 ; WX 556 ; N h ; B -13 -9 498 699 ; -C 105 ; WX 278 ; N i ; B 2 -9 262 684 ; -C 106 ; WX 278 ; N j ; B -189 -207 279 685 ; -C 107 ; WX 500 ; N k ; B -23 -8 483 699 ; -C 108 ; WX 278 ; N l ; B 2 -9 290 699 ; -C 109 ; WX 778 ; N m ; B -14 -9 722 462 ; -C 110 ; WX 556 ; N n ; B -6 -9 493 462 ; -C 111 ; WX 500 ; N o ; B -3 -13 441 462 ; -C 112 ; WX 500 ; N p ; B -120 -205 446 462 ; -C 113 ; WX 500 ; N q ; B 1 -205 471 462 ; -C 114 ; WX 389 ; N r ; B -21 0 389 462 ; -C 115 ; WX 389 ; N s ; B -19 -13 333 462 ; -C 116 ; WX 278 ; N t ; B -11 -9 281 594 ; -C 117 ; WX 556 ; N u ; B 15 -9 492 462 ; -C 118 ; WX 444 ; N v ; B 16 -13 401 462 ; -C 119 ; WX 667 ; N w ; B 16 -13 614 462 ; -C 120 ; WX 500 ; N x ; B -46 -13 469 462 ; -C 121 ; WX 444 ; N y ; B -94 -205 392 462 ; -C 122 ; WX 389 ; N z ; B -43 -78 368 449 ; -C 123 ; WX 348 ; N braceleft ; B 5 -187 436 686 ; -C 124 ; WX 220 ; N bar ; B 66 -18 154 685 ; -C 125 ; WX 348 ; N braceright ; B -129 -187 302 686 ; -C 126 ; WX 570 ; N asciitilde ; B 54 175 516 331 ; -C 161 ; WX 389 ; N exclamdown ; B 19 -205 320 494 ; -C 162 ; WX 500 ; N cent ; B 42 -143 439 576 ; -C 163 ; WX 500 ; N sterling ; B -32 -12 510 683 ; -C 164 ; WX 167 ; N fraction ; B -169 -14 324 683 ; -C 165 ; WX 500 ; N yen ; B 33 0 628 669 ; -C 166 ; WX 500 ; N florin ; B -87 -156 537 707 ; -C 167 ; WX 500 ; N section ; B 36 -143 459 685 ; -C 168 ; WX 500 ; N currency ; B -26 34 526 586 ; -C 169 ; WX 278 ; N quotesingle ; B 128 398 268 685 ; -C 170 ; WX 500 ; N quotedblleft ; B 53 369 513 685 ; -C 171 ; WX 500 ; N guillemotleft ; B 12 32 468 415 ; -C 172 ; WX 333 ; N guilsinglleft ; B 32 32 303 415 ; -C 173 ; WX 333 ; N guilsinglright ; B 10 32 281 415 ; -C 174 ; WX 556 ; N fi ; B -188 -205 514 703 ; -C 175 ; WX 556 ; N fl ; B -186 -205 553 704 ; -C 177 ; WX 500 ; N endash ; B -40 178 477 269 ; -C 178 ; WX 500 ; N dagger ; B 91 -145 494 685 ; -C 179 ; WX 500 ; N daggerdbl ; B 10 -139 493 685 ; -C 180 ; WX 250 ; N periodcentered ; B 51 257 199 405 ; -C 182 ; WX 500 ; N paragraph ; B -57 -193 562 669 ; -C 183 ; WX 350 ; N bullet ; B 0 175 350 525 ; -C 184 ; WX 333 ; N quotesinglbase ; B -5 -182 199 134 ; -C 185 ; WX 500 ; N quotedblbase ; B -57 -182 403 134 ; -C 186 ; WX 500 ; N quotedblright ; B 53 369 513 685 ; -C 187 ; WX 500 ; N guillemotright ; B 12 32 468 415 ; -C 188 ; WX 1000 ; N ellipsis ; B 40 -13 852 135 ; -C 189 ; WX 1000 ; N perthousand ; B 7 -29 996 706 ; -C 191 ; WX 500 ; N questiondown ; B 30 -205 421 492 ; -C 193 ; WX 333 ; N grave ; B 85 516 297 697 ; -C 194 ; WX 333 ; N acute ; B 139 516 379 697 ; -C 195 ; WX 333 ; N circumflex ; B 40 516 367 690 ; -C 196 ; WX 333 ; N tilde ; B 48 536 407 655 ; -C 197 ; WX 333 ; N macron ; B 51 553 393 623 ; -C 198 ; WX 333 ; N breve ; B 71 516 387 678 ; -C 199 ; WX 333 ; N dotaccent ; B 163 525 293 655 ; -C 200 ; WX 333 ; N dieresis ; B 55 525 397 655 ; -C 202 ; WX 333 ; N ring ; B 127 541 340 754 ; -C 203 ; WX 333 ; N cedilla ; B -80 -218 156 5 ; -C 205 ; WX 333 ; N hungarumlaut ; B 69 516 498 697 ; -C 206 ; WX 333 ; N ogonek ; B -40 -173 189 44 ; -C 207 ; WX 333 ; N caron ; B 79 516 411 690 ; -C 208 ; WX 1000 ; N emdash ; B -40 178 977 269 ; -C 225 ; WX 944 ; N AE ; B -64 0 918 669 ; -C 227 ; WX 266 ; N ordfeminine ; B 16 399 330 685 ; -C 232 ; WX 611 ; N Lslash ; B -22 0 590 669 ; -C 233 ; WX 722 ; N Oslash ; B 27 -125 691 764 ; -C 234 ; WX 944 ; N OE ; B 23 -8 946 677 ; -C 235 ; WX 300 ; N ordmasculine ; B 56 400 350 685 ; -C 241 ; WX 722 ; N ae ; B -5 -13 673 462 ; -C 245 ; WX 278 ; N dotlessi ; B 2 -9 238 462 ; -C 248 ; WX 278 ; N lslash ; B -13 -9 301 699 ; -C 249 ; WX 500 ; N oslash ; B -3 -119 441 560 ; -C 250 ; WX 722 ; N oe ; B 6 -13 674 462 ; -C 251 ; WX 500 ; N germandbls ; B -200 -200 473 705 ; -C -1 ; WX 611 ; N Yacute ; B 73 0 659 904 ; -C -1 ; WX 722 ; N Ucircumflex ; B 67 -18 744 897 ; -C -1 ; WX 722 ; N Ugrave ; B 67 -18 744 904 ; -C -1 ; WX 611 ; N Zcaron ; B -11 0 590 897 ; -C -1 ; WX 611 ; N Ydieresis ; B 73 0 659 862 ; -C -1 ; WX 300 ; N threesuperior ; B 17 265 321 683 ; -C -1 ; WX 722 ; N Uacute ; B 67 -18 744 904 ; -C -1 ; WX 300 ; N twosuperior ; B 2 274 313 683 ; -C -1 ; WX 722 ; N Udieresis ; B 67 -18 744 862 ; -C -1 ; WX 250 ; N middot ; B 51 257 199 405 ; -C -1 ; WX 300 ; N onesuperior ; B 30 274 301 683 ; -C -1 ; WX 500 ; N aacute ; B -21 -14 463 697 ; -C -1 ; WX 500 ; N agrave ; B -21 -14 455 697 ; -C -1 ; WX 500 ; N acircumflex ; B -21 -14 455 690 ; -C -1 ; WX 556 ; N Scaron ; B 2 -18 526 897 ; -C -1 ; WX 722 ; N Otilde ; B 27 -18 691 862 ; -C -1 ; WX 333 ; N sfthyphen ; B 2 166 271 282 ; -C -1 ; WX 500 ; N atilde ; B -21 -14 491 655 ; -C -1 ; WX 500 ; N aring ; B -21 -14 455 754 ; -C -1 ; WX 500 ; N adieresis ; B -21 -14 471 655 ; -C -1 ; WX 722 ; N Ograve ; B 27 -18 691 904 ; -C -1 ; WX 722 ; N Ocircumflex ; B 27 -18 691 897 ; -C -1 ; WX 722 ; N Odieresis ; B 27 -18 691 862 ; -C -1 ; WX 722 ; N Ntilde ; B -27 -15 748 862 ; -C -1 ; WX 444 ; N edieresis ; B 5 -13 443 655 ; -C -1 ; WX 444 ; N eacute ; B 5 -13 435 697 ; -C -1 ; WX 444 ; N egrave ; B 5 -13 398 697 ; -C -1 ; WX 389 ; N Icircumflex ; B -32 0 420 897 ; -C -1 ; WX 444 ; N ecircumflex ; B 5 -13 423 690 ; -C -1 ; WX 389 ; N Igrave ; B -32 0 406 904 ; -C -1 ; WX 389 ; N Iacute ; B -32 0 407 907 ; -C -1 ; WX 389 ; N Idieresis ; B -32 0 445 862 ; -C -1 ; WX 400 ; N degree ; B 83 397 369 683 ; -C -1 ; WX 667 ; N Ecircumflex ; B -27 0 653 897 ; -C -1 ; WX 606 ; N minus ; B 51 209 555 297 ; -C -1 ; WX 570 ; N multiply ; B 48 16 522 490 ; -C -1 ; WX 570 ; N divide ; B 33 -29 537 535 ; -C -1 ; WX 667 ; N Egrave ; B -27 0 653 904 ; -C -1 ; WX 1000 ; N trademark ; B 32 263 968 669 ; -C -1 ; WX 722 ; N Oacute ; B 27 -18 691 904 ; -C -1 ; WX 500 ; N thorn ; B -120 -205 446 699 ; -C -1 ; WX 500 ; N eth ; B -3 -13 454 699 ; -C -1 ; WX 667 ; N Eacute ; B -27 0 653 904 ; -C -1 ; WX 444 ; N ccedilla ; B -24 -218 392 462 ; -C -1 ; WX 278 ; N idieresis ; B 2 -9 360 655 ; -C -1 ; WX 278 ; N iacute ; B 2 -9 352 697 ; -C -1 ; WX 278 ; N igrave ; B 2 -9 260 697 ; -C -1 ; WX 570 ; N plusminus ; B 33 0 537 568 ; -C -1 ; WX 750 ; N onehalf ; B -9 -14 723 683 ; -C -1 ; WX 750 ; N onequarter ; B 7 -14 721 683 ; -C -1 ; WX 750 ; N threequarters ; B 7 -14 726 683 ; -C -1 ; WX 278 ; N icircumflex ; B -2 -9 325 690 ; -C -1 ; WX 667 ; N Edieresis ; B -27 0 653 862 ; -C -1 ; WX 556 ; N ntilde ; B -6 -9 504 655 ; -C -1 ; WX 667 ; N Aring ; B -67 0 593 949 ; -C -1 ; WX 500 ; N odieresis ; B -3 -13 466 655 ; -C -1 ; WX 500 ; N oacute ; B -3 -13 463 697 ; -C -1 ; WX 500 ; N ograve ; B -3 -13 441 697 ; -C -1 ; WX 500 ; N ocircumflex ; B -3 -13 451 690 ; -C -1 ; WX 500 ; N otilde ; B -3 -13 491 655 ; -C -1 ; WX 389 ; N scaron ; B -19 -13 439 690 ; -C -1 ; WX 556 ; N udieresis ; B 15 -9 494 655 ; -C -1 ; WX 556 ; N uacute ; B 15 -9 492 697 ; -C -1 ; WX 556 ; N ugrave ; B 15 -9 492 697 ; -C -1 ; WX 556 ; N ucircumflex ; B 15 -9 492 690 ; -C -1 ; WX 444 ; N yacute ; B -94 -205 435 697 ; -C -1 ; WX 389 ; N zcaron ; B -43 -78 424 690 ; -C -1 ; WX 444 ; N ydieresis ; B -94 -205 438 655 ; -C -1 ; WX 747 ; N copyright ; B 30 -18 718 685 ; -C -1 ; WX 747 ; N registered ; B 30 -18 718 685 ; -C -1 ; WX 667 ; N Atilde ; B -67 0 593 862 ; -C -1 ; WX 250 ; N nbspace ; B 125 0 125 0 ; -C -1 ; WX 667 ; N Ccedilla ; B 32 -218 677 685 ; -C -1 ; WX 667 ; N Acircumflex ; B -67 0 593 897 ; -C -1 ; WX 667 ; N Agrave ; B -67 0 593 904 ; -C -1 ; WX 606 ; N logicalnot ; B 51 108 555 399 ; -C -1 ; WX 667 ; N Aacute ; B -67 0 593 904 ; -C -1 ; WX 722 ; N Eth ; B -31 0 700 669 ; -C -1 ; WX 220 ; N brokenbar ; B 66 -18 154 685 ; -C -1 ; WX 611 ; N Thorn ; B -27 0 573 669 ; -C -1 ; WX 667 ; N Adieresis ; B -67 0 593 862 ; -C -1 ; WX 576 ; N mu ; B -60 -207 516 449 ; -C -1 ; WX 250 ; N .notdef ; B 125 0 125 0 ; -EndCharMetrics -StartKernData -StartKernPairs 994 -KPX A C -61 -KPX A Ccedilla -63 -KPX A G -59 -KPX A O -53 -KPX A Odieresis -53 -KPX A Q -55 -KPX A T -33 -KPX A U -61 -KPX A Uacute -61 -KPX A Ucircumflex -61 -KPX A Udieresis -61 -KPX A Ugrave -61 -KPX A V -109 -KPX A W -107 -KPX A Y -44 -KPX A a -6 -KPX A b -1 -KPX A c -20 -KPX A ccedilla -29 -KPX A comma 0 -KPX A d -5 -KPX A e -25 -KPX A g -21 -KPX A guillemotleft -58 -KPX A guilsinglleft -68 -KPX A hyphen -22 -KPX A o -23 -KPX A period 2 -KPX A q -18 -KPX A quotedblright -78 -KPX A quoteright -101 -KPX A t -4 -KPX A u -17 -KPX A v -51 -KPX A w -56 -KPX A y -67 -KPX Aacute C -61 -KPX Aacute G -59 -KPX Aacute O -53 -KPX Aacute Q -55 -KPX Aacute T -33 -KPX Aacute U -61 -KPX Aacute V -109 -KPX Aacute W -107 -KPX Aacute Y -44 -KPX Aacute a -6 -KPX Aacute b -1 -KPX Aacute c -20 -KPX Aacute comma 0 -KPX Aacute d -5 -KPX Aacute e -25 -KPX Aacute g -21 -KPX Aacute guillemotleft -58 -KPX Aacute guilsinglleft -68 -KPX Aacute hyphen -22 -KPX Aacute o -23 -KPX Aacute period 2 -KPX Aacute q -18 -KPX Aacute quoteright -101 -KPX Aacute t -4 -KPX Aacute u -17 -KPX Aacute v -51 -KPX Aacute w -56 -KPX Aacute y -67 -KPX Acircumflex C -61 -KPX Acircumflex G -59 -KPX Acircumflex O -53 -KPX Acircumflex Q -55 -KPX Acircumflex T -33 -KPX Acircumflex U -61 -KPX Acircumflex V -109 -KPX Acircumflex W -107 -KPX Acircumflex Y -44 -KPX Acircumflex comma 0 -KPX Acircumflex period 2 -KPX Adieresis C -61 -KPX Adieresis G -59 -KPX Adieresis O -53 -KPX Adieresis Q -55 -KPX Adieresis T -33 -KPX Adieresis U -61 -KPX Adieresis V -109 -KPX Adieresis W -107 -KPX Adieresis Y -44 -KPX Adieresis a -6 -KPX Adieresis b -1 -KPX Adieresis c -20 -KPX Adieresis comma 0 -KPX Adieresis d -5 -KPX Adieresis g -21 -KPX Adieresis guillemotleft -58 -KPX Adieresis guilsinglleft -68 -KPX Adieresis hyphen -22 -KPX Adieresis o -23 -KPX Adieresis period 2 -KPX Adieresis q -18 -KPX Adieresis quotedblright -78 -KPX Adieresis quoteright -101 -KPX Adieresis t -4 -KPX Adieresis u -17 -KPX Adieresis v -51 -KPX Adieresis w -56 -KPX Adieresis y -67 -KPX Agrave C -61 -KPX Agrave G -59 -KPX Agrave O -53 -KPX Agrave Q -55 -KPX Agrave T -33 -KPX Agrave U -61 -KPX Agrave V -109 -KPX Agrave W -107 -KPX Agrave Y -44 -KPX Agrave comma 0 -KPX Agrave period 2 -KPX Aring C -61 -KPX Aring G -59 -KPX Aring O -53 -KPX Aring Q -55 -KPX Aring T -33 -KPX Aring U -61 -KPX Aring V -109 -KPX Aring W -107 -KPX Aring Y -44 -KPX Aring a -6 -KPX Aring b -1 -KPX Aring c -20 -KPX Aring comma 0 -KPX Aring d -5 -KPX Aring e -25 -KPX Aring g -21 -KPX Aring guillemotleft -58 -KPX Aring guilsinglleft -68 -KPX Aring hyphen -22 -KPX Aring o -23 -KPX Aring period 2 -KPX Aring q -18 -KPX Aring quotedblright -78 -KPX Aring quoteright -101 -KPX Aring t -4 -KPX Aring u -17 -KPX Aring v -51 -KPX Aring w -56 -KPX Aring y -67 -KPX Atilde C -61 -KPX Atilde G -59 -KPX Atilde O -53 -KPX Atilde Q -55 -KPX Atilde T -33 -KPX Atilde U -61 -KPX Atilde V -109 -KPX Atilde W -107 -KPX Atilde Y -44 -KPX Atilde comma 0 -KPX Atilde period 2 -KPX B A -33 -KPX B AE -34 -KPX B Aacute -33 -KPX B Acircumflex -33 -KPX B Adieresis -33 -KPX B Aring -33 -KPX B Atilde -33 -KPX B O -22 -KPX B OE -19 -KPX B Oacute -22 -KPX B Ocircumflex -22 -KPX B Odieresis -22 -KPX B Ograve -22 -KPX B Oslash -22 -KPX B V -48 -KPX B W -51 -KPX B Y -52 -KPX C A -24 -KPX C AE -26 -KPX C Aacute -24 -KPX C Adieresis -24 -KPX C Aring -24 -KPX C H -26 -KPX C K -28 -KPX C O -25 -KPX C Oacute -25 -KPX C Odieresis -25 -KPX Ccedilla A -30 -KPX D A -52 -KPX D Aacute -52 -KPX D Acircumflex -52 -KPX D Adieresis -52 -KPX D Agrave -52 -KPX D Aring -52 -KPX D Atilde -52 -KPX D J -66 -KPX D T -27 -KPX D V -60 -KPX D W -58 -KPX D X -63 -KPX D Y -63 -KPX F A -99 -KPX F Aacute -99 -KPX F Acircumflex -99 -KPX F Adieresis -99 -KPX F Agrave -99 -KPX F Aring -99 -KPX F Atilde -99 -KPX F J -88 -KPX F O -48 -KPX F Odieresis -48 -KPX F a -74 -KPX F aacute -75 -KPX F adieresis -48 -KPX F ae -83 -KPX F aring -75 -KPX F comma -96 -KPX F e -85 -KPX F eacute -86 -KPX F hyphen -54 -KPX F i -29 -KPX F j -34 -KPX F o -81 -KPX F oacute -82 -KPX F odieresis -45 -KPX F oe -86 -KPX F oslash -82 -KPX F period -97 -KPX F r -32 -KPX F u -36 -KPX G A -14 -KPX G AE -15 -KPX G Aacute -14 -KPX G Acircumflex -14 -KPX G Adieresis -14 -KPX G Agrave -14 -KPX G Aring -14 -KPX G Atilde -14 -KPX G T -42 -KPX G V -27 -KPX G W -27 -KPX G Y -31 -KPX J A -39 -KPX J AE -41 -KPX J Adieresis -39 -KPX J Aring -39 -KPX K C -49 -KPX K G -45 -KPX K O -44 -KPX K OE -43 -KPX K Oacute -44 -KPX K Odieresis -44 -KPX K S -1 -KPX K T 0 -KPX K a 3 -KPX K adieresis 3 -KPX K ae -4 -KPX K aring 3 -KPX K e -15 -KPX K hyphen -30 -KPX K o -13 -KPX K oacute -13 -KPX K odieresis -13 -KPX K u -8 -KPX K udieresis -8 -KPX K y -68 -KPX L A 28 -KPX L AE 26 -KPX L Aacute 28 -KPX L Adieresis 28 -KPX L Aring 28 -KPX L C 0 -KPX L Ccedilla 0 -KPX L G 5 -KPX L O 4 -KPX L Oacute 4 -KPX L Ocircumflex 4 -KPX L Odieresis 4 -KPX L Ograve 4 -KPX L Otilde 4 -KPX L S 1 -KPX L T -30 -KPX L U -17 -KPX L Udieresis -17 -KPX L V -77 -KPX L W -75 -KPX L Y -41 -KPX L hyphen 41 -KPX L quotedblright -46 -KPX L quoteright -68 -KPX L u 6 -KPX L udieresis 6 -KPX L y -23 -KPX N A -39 -KPX N AE -40 -KPX N Aacute -39 -KPX N Adieresis -39 -KPX N Aring -39 -KPX N C -31 -KPX N Ccedilla -30 -KPX N G -27 -KPX N O -32 -KPX N Oacute -32 -KPX N Odieresis -32 -KPX N a -25 -KPX N aacute -26 -KPX N adieresis -26 -KPX N ae -33 -KPX N aring -26 -KPX N comma -24 -KPX N e -36 -KPX N eacute -38 -KPX N o -32 -KPX N oacute -34 -KPX N odieresis -34 -KPX N oslash -34 -KPX N period -25 -KPX N u -32 -KPX N udieresis -32 -KPX O A -56 -KPX O AE -65 -KPX O Aacute -56 -KPX O Adieresis -56 -KPX O Aring -56 -KPX O T -18 -KPX O V -52 -KPX O W -55 -KPX O X -61 -KPX O Y -56 -KPX Oacute A -56 -KPX Oacute T -18 -KPX Oacute V -52 -KPX Oacute W -55 -KPX Oacute Y -56 -KPX Ocircumflex T -18 -KPX Ocircumflex V -52 -KPX Ocircumflex Y -56 -KPX Odieresis A -56 -KPX Odieresis T -18 -KPX Odieresis V -52 -KPX Odieresis W -55 -KPX Odieresis X -61 -KPX Odieresis Y -56 -KPX Ograve T -18 -KPX Ograve V -52 -KPX Ograve Y -56 -KPX Oslash A -56 -KPX Otilde T -18 -KPX Otilde V -52 -KPX Otilde Y -56 -KPX P A -89 -KPX P AE -104 -KPX P Aacute -89 -KPX P Adieresis -89 -KPX P Aring -89 -KPX P J -105 -KPX P a -53 -KPX P aacute -53 -KPX P adieresis -38 -KPX P ae -61 -KPX P aring -53 -KPX P comma -108 -KPX P e -60 -KPX P eacute -60 -KPX P hyphen -57 -KPX P o -55 -KPX P oacute -55 -KPX P odieresis -35 -KPX P oe -60 -KPX P oslash -55 -KPX P period -109 -KPX R C -33 -KPX R Ccedilla -32 -KPX R G -28 -KPX R O -33 -KPX R OE -31 -KPX R Oacute -33 -KPX R Odieresis -33 -KPX R T -24 -KPX R U -43 -KPX R Udieresis -43 -KPX R V -46 -KPX R W -49 -KPX R Y -40 -KPX R a -1 -KPX R aacute -1 -KPX R adieresis -1 -KPX R ae -9 -KPX R aring -1 -KPX R e -20 -KPX R eacute -20 -KPX R hyphen -30 -KPX R o -18 -KPX R oacute -18 -KPX R odieresis -18 -KPX R oe -23 -KPX R u -13 -KPX R uacute -13 -KPX R udieresis -13 -KPX R y -12 -KPX S A -11 -KPX S AE -12 -KPX S Aacute -11 -KPX S Adieresis -11 -KPX S Aring -11 -KPX S T -33 -KPX S V -20 -KPX S W -20 -KPX S Y -24 -KPX S t -6 -KPX T A -52 -KPX T AE -54 -KPX T Aacute -52 -KPX T Acircumflex -52 -KPX T Adieresis -52 -KPX T Agrave -52 -KPX T Aring -52 -KPX T Atilde -52 -KPX T C -16 -KPX T G -10 -KPX T J -63 -KPX T O -21 -KPX T OE -18 -KPX T Oacute -21 -KPX T Ocircumflex -21 -KPX T Odieresis -21 -KPX T Ograve -21 -KPX T Oslash -22 -KPX T Otilde -21 -KPX T S -17 -KPX T V 15 -KPX T W 15 -KPX T Y 11 -KPX T a -83 -KPX T ae -91 -KPX T c -89 -KPX T colon -98 -KPX T comma -77 -KPX T e -94 -KPX T g -95 -KPX T guillemotleft -110 -KPX T guilsinglleft -120 -KPX T hyphen -74 -KPX T i -19 -KPX T j -27 -KPX T o -90 -KPX T oslash -92 -KPX T period -78 -KPX T r -76 -KPX T s -78 -KPX T semicolon -98 -KPX T u -90 -KPX T v -89 -KPX T w -89 -KPX T y -86 -KPX U A -65 -KPX U AE -66 -KPX U Aacute -65 -KPX U Acircumflex -65 -KPX U Adieresis -65 -KPX U Aring -65 -KPX U Atilde -65 -KPX U comma -39 -KPX U m -34 -KPX U n -38 -KPX U p -28 -KPX U period -40 -KPX U r -30 -KPX Uacute A -65 -KPX Uacute comma -39 -KPX Uacute m -34 -KPX Uacute n -38 -KPX Uacute p -28 -KPX Uacute period -40 -KPX Uacute r -30 -KPX Ucircumflex A -65 -KPX Udieresis A -65 -KPX Udieresis b 1 -KPX Udieresis comma -39 -KPX Udieresis m -34 -KPX Udieresis n -38 -KPX Udieresis p -28 -KPX Udieresis period -40 -KPX Udieresis r -30 -KPX Ugrave A -65 -KPX V A -98 -KPX V AE -111 -KPX V Aacute -98 -KPX V Acircumflex -98 -KPX V Adieresis -98 -KPX V Agrave -98 -KPX V Aring -98 -KPX V Atilde -98 -KPX V C -59 -KPX V G -54 -KPX V O -63 -KPX V Oacute -63 -KPX V Ocircumflex -63 -KPX V Odieresis -63 -KPX V Ograve -63 -KPX V Oslash -63 -KPX V Otilde -63 -KPX V S -28 -KPX V T 7 -KPX V a -75 -KPX V ae -84 -KPX V colon -95 -KPX V comma -95 -KPX V e -86 -KPX V g -82 -KPX V guillemotleft -98 -KPX V guilsinglleft -108 -KPX V hyphen -61 -KPX V i -12 -KPX V o -82 -KPX V oslash -83 -KPX V period -97 -KPX V r -39 -KPX V semicolon -95 -KPX V u -43 -KPX V y -33 -KPX W A -82 -KPX W AE -85 -KPX W Aacute -82 -KPX W Acircumflex -82 -KPX W Adieresis -82 -KPX W Agrave -82 -KPX W Aring -82 -KPX W Atilde -82 -KPX W C -47 -KPX W G -42 -KPX W O -48 -KPX W Oacute -48 -KPX W Ocircumflex -48 -KPX W Odieresis -48 -KPX W Ograve -48 -KPX W Oslash -48 -KPX W Otilde -48 -KPX W S -32 -KPX W T 7 -KPX W a -51 -KPX W ae -60 -KPX W colon -78 -KPX W comma -62 -KPX W e -63 -KPX W g -63 -KPX W guillemotleft -74 -KPX W guilsinglleft -84 -KPX W hyphen -37 -KPX W i -12 -KPX W o -58 -KPX W oslash -60 -KPX W period -63 -KPX W r -32 -KPX W semicolon -79 -KPX W u -36 -KPX W y -26 -KPX X C -56 -KPX X O -57 -KPX X Odieresis -57 -KPX X Q -57 -KPX X a -9 -KPX X e -28 -KPX X hyphen -45 -KPX X o -26 -KPX X u -21 -KPX X y -81 -KPX Y A -45 -KPX Y AE -47 -KPX Y Aacute -45 -KPX Y Acircumflex -45 -KPX Y Adieresis -45 -KPX Y Agrave -45 -KPX Y Aring -45 -KPX Y Atilde -45 -KPX Y C -59 -KPX Y G -55 -KPX Y O -60 -KPX Y Oacute -60 -KPX Y Ocircumflex -60 -KPX Y Odieresis -60 -KPX Y Ograve -60 -KPX Y Oslash -60 -KPX Y Otilde -60 -KPX Y S -28 -KPX Y T 7 -KPX Y a -69 -KPX Y ae -77 -KPX Y colon -91 -KPX Y comma -67 -KPX Y e -80 -KPX Y g -81 -KPX Y guillemotleft -97 -KPX Y guilsinglleft -107 -KPX Y hyphen -64 -KPX Y i -12 -KPX Y o -76 -KPX Y oslash -77 -KPX Y p -50 -KPX Y period -69 -KPX Y semicolon -91 -KPX Y u -56 -KPX Y v -54 -KPX Z v -27 -KPX Z y -38 -KPX a j -2 -KPX a quoteright -22 -KPX a v -5 -KPX a w -5 -KPX a y -3 -KPX aacute v -5 -KPX aacute w -5 -KPX aacute y -3 -KPX adieresis v -5 -KPX adieresis w -5 -KPX adieresis y -3 -KPX ae v -5 -KPX ae w -5 -KPX ae y -8 -KPX agrave v -5 -KPX agrave w -5 -KPX agrave y -3 -KPX aring v -5 -KPX aring w -5 -KPX aring y -3 -KPX b v -12 -KPX b w -12 -KPX b y -17 -KPX c h -20 -KPX c k -16 -KPX comma one -26 -KPX comma quotedblright -3 -KPX comma quoteright -25 -KPX e quoteright -13 -KPX e t -3 -KPX e v -3 -KPX e w -3 -KPX e x -15 -KPX e y -6 -KPX eacute v -3 -KPX eacute w -3 -KPX eacute y -6 -KPX ecircumflex v -3 -KPX ecircumflex w -3 -KPX ecircumflex y -6 -KPX eight four -4 -KPX eight one -52 -KPX eight seven -13 -KPX f a -23 -KPX f aacute -24 -KPX f adieresis 17 -KPX f ae -31 -KPX f aring -21 -KPX f e -35 -KPX f eacute -36 -KPX f f 2 -KPX f i 20 -KPX f j 12 -KPX f l 43 -KPX f o -30 -KPX f oacute -31 -KPX f odieresis 20 -KPX f oe -35 -KPX f oslash -31 -KPX f quoteright 12 -KPX f s -14 -KPX f t 9 -KPX five four -13 -KPX five one -56 -KPX five seven -37 -KPX four four 1 -KPX four one -50 -KPX four seven -21 -KPX g a -25 -KPX g adieresis -25 -KPX g ae -34 -KPX g aring -25 -KPX g e -32 -KPX g eacute -32 -KPX g l -21 -KPX g oacute -27 -KPX g odieresis -27 -KPX g r 3 -KPX guillemotright A -28 -KPX guillemotright AE -37 -KPX guillemotright Aacute -28 -KPX guillemotright Adieresis -28 -KPX guillemotright Aring -28 -KPX guillemotright T -75 -KPX guillemotright V -79 -KPX guillemotright W -75 -KPX guillemotright Y -82 -KPX guilsinglright A -38 -KPX guilsinglright AE -47 -KPX guilsinglright Aacute -38 -KPX guilsinglright Adieresis -38 -KPX guilsinglright Aring -38 -KPX guilsinglright T -85 -KPX guilsinglright V -89 -KPX guilsinglright W -85 -KPX guilsinglright Y -92 -KPX h quoteright -33 -KPX h y -20 -KPX hyphen A -11 -KPX hyphen AE -20 -KPX hyphen Aacute -11 -KPX hyphen Adieresis -11 -KPX hyphen Aring -11 -KPX hyphen T -59 -KPX hyphen V -62 -KPX hyphen W -59 -KPX hyphen Y -69 -KPX i T -21 -KPX i j -5 -KPX k a 10 -KPX k aacute 10 -KPX k adieresis 10 -KPX k ae 2 -KPX k aring 10 -KPX k comma 19 -KPX k e -2 -KPX k eacute -2 -KPX k g -13 -KPX k hyphen 0 -KPX k o 1 -KPX k oacute 1 -KPX k odieresis 1 -KPX k period 17 -KPX k s 1 -KPX k u 2 -KPX k udieresis 2 -KPX l v -12 -KPX l y -8 -KPX m p 0 -KPX m v -16 -KPX m w -16 -KPX m y -16 -KPX n T -57 -KPX n p -3 -KPX n quoteright -33 -KPX n v -20 -KPX n w -20 -KPX n y -20 -KPX nine four -18 -KPX nine one -67 -KPX nine seven -12 -KPX o T -75 -KPX o quoteright -22 -KPX o t -2 -KPX o v -21 -KPX o w -21 -KPX o x -26 -KPX o y -28 -KPX oacute v -21 -KPX oacute w -21 -KPX oacute y -28 -KPX ocircumflex t -4 -KPX odieresis t -4 -KPX odieresis v -21 -KPX odieresis w -21 -KPX odieresis x -26 -KPX odieresis y -28 -KPX ograve v -21 -KPX ograve w -21 -KPX ograve y -28 -KPX one comma -38 -KPX one eight -55 -KPX one five -45 -KPX one four -74 -KPX one nine -40 -KPX one one -48 -KPX one period -39 -KPX one seven -65 -KPX one six -62 -KPX one three -43 -KPX one two -32 -KPX one zero -48 -KPX p t -3 -KPX p y -12 -KPX period one -32 -KPX period quotedblright -7 -KPX period quoteright -29 -KPX q c -6 -KPX q u -3 -KPX quotedblbase A 25 -KPX quotedblbase AE 23 -KPX quotedblbase T -38 -KPX quotedblbase V -79 -KPX quotedblbase W -75 -KPX quotedblbase Y -48 -KPX quotedblleft A -75 -KPX quotedblleft AE -98 -KPX quotedblleft Aacute -75 -KPX quotedblleft Adieresis -75 -KPX quotedblleft Aring -75 -KPX quotedblleft T -11 -KPX quotedblleft V 3 -KPX quotedblleft W 3 -KPX quotedblleft Y 0 -KPX quotedblright A -71 -KPX quotedblright AE -94 -KPX quotedblright Aacute -71 -KPX quotedblright Adieresis -71 -KPX quotedblright Aring -71 -KPX quotedblright T -1 -KPX quotedblright V 6 -KPX quotedblright W 6 -KPX quotedblright Y 2 -KPX quoteleft A -82 -KPX quoteleft AE -105 -KPX quoteleft Aacute -82 -KPX quoteleft Adieresis -82 -KPX quoteleft Aring -82 -KPX quoteleft T -18 -KPX quoteleft V -3 -KPX quoteleft W -3 -KPX quoteleft Y -7 -KPX quoteright A -93 -KPX quoteright AE -115 -KPX quoteright Aacute -93 -KPX quoteright Adieresis -93 -KPX quoteright Aring -93 -KPX quoteright comma -55 -KPX quoteright d -50 -KPX quoteright o -49 -KPX quoteright period -57 -KPX quoteright r -24 -KPX quoteright s -25 -KPX quoteright t -19 -KPX quoteright v -23 -KPX quoteright w -23 -KPX quoteright y -17 -KPX r a -13 -KPX r aacute -13 -KPX r acircumflex -13 -KPX r adieresis -13 -KPX r ae -22 -KPX r agrave -13 -KPX r aring -13 -KPX r c -15 -KPX r ccedilla -8 -KPX r colon -30 -KPX r comma -68 -KPX r d -14 -KPX r e -20 -KPX r eacute -20 -KPX r ecircumflex -20 -KPX r egrave -20 -KPX r f 8 -KPX r g -4 -KPX r h -16 -KPX r hyphen -13 -KPX r i 17 -KPX r j 12 -KPX r k -12 -KPX r l -13 -KPX r m 10 -KPX r n 6 -KPX r o -15 -KPX r oacute -15 -KPX r ocircumflex -15 -KPX r odieresis -15 -KPX r oe -19 -KPX r ograve -15 -KPX r oslash -15 -KPX r p 16 -KPX r period -69 -KPX r q -19 -KPX r quoteright 0 -KPX r r 14 -KPX r s 1 -KPX r semicolon -30 -KPX r t 12 -KPX r u 10 -KPX r v 20 -KPX r w 20 -KPX r x 7 -KPX r y 20 -KPX r z 10 -KPX s quoteright -22 -KPX s t -6 -KPX seven colon -90 -KPX seven comma -79 -KPX seven four -79 -KPX seven one -43 -KPX seven period -81 -KPX seven seven -27 -KPX seven six -59 -KPX six four 2 -KPX six one -52 -KPX six seven -32 -KPX t S -11 -KPX t a 10 -KPX t aacute 10 -KPX t adieresis 10 -KPX t ae 2 -KPX t aring 10 -KPX t colon -22 -KPX t e -2 -KPX t eacute -2 -KPX t h -5 -KPX t o 1 -KPX t oacute 1 -KPX t odieresis 1 -KPX t quoteright -19 -KPX t semicolon -23 -KPX three four -15 -KPX three one -67 -KPX three seven -27 -KPX two four -8 -KPX two one -48 -KPX two seven -27 -KPX u quoteright -34 -KPX v a -20 -KPX v aacute -20 -KPX v acircumflex -20 -KPX v adieresis -20 -KPX v ae -28 -KPX v agrave -20 -KPX v aring -20 -KPX v atilde -20 -KPX v c -24 -KPX v colon -51 -KPX v comma -51 -KPX v e -28 -KPX v eacute -28 -KPX v ecircumflex -28 -KPX v egrave -28 -KPX v g -20 -KPX v hyphen -1 -KPX v l -24 -KPX v o -24 -KPX v oacute -24 -KPX v odieresis -24 -KPX v ograve -24 -KPX v oslash -24 -KPX v period -51 -KPX v s -18 -KPX v semicolon -51 -KPX w a -24 -KPX w aacute -24 -KPX w acircumflex -24 -KPX w adieresis -24 -KPX w ae -32 -KPX w agrave -24 -KPX w aring -24 -KPX w atilde -24 -KPX w c -30 -KPX w colon -56 -KPX w comma -53 -KPX w e -34 -KPX w eacute -34 -KPX w ecircumflex -34 -KPX w egrave -34 -KPX w g -26 -KPX w hyphen -7 -KPX w l -29 -KPX w o -30 -KPX w oacute -30 -KPX w odieresis -30 -KPX w ograve -30 -KPX w oslash -30 -KPX w period -53 -KPX w s -24 -KPX w semicolon -56 -KPX x a -1 -KPX x c -9 -KPX x e -13 -KPX x eacute -13 -KPX x o -10 -KPX x q -11 -KPX y a -11 -KPX y aacute -12 -KPX y acircumflex -12 -KPX y adieresis -12 -KPX y ae -19 -KPX y agrave -12 -KPX y aring -12 -KPX y atilde -12 -KPX y c -17 -KPX y colon -43 -KPX y comma -25 -KPX y e -22 -KPX y eacute -23 -KPX y ecircumflex -23 -KPX y egrave -23 -KPX y g -23 -KPX y hyphen 2 -KPX y l -16 -KPX y o -17 -KPX y oacute -19 -KPX y odieresis -19 -KPX y ograve -19 -KPX y oslash -19 -KPX y period -26 -KPX y s -13 -KPX y semicolon -44 -KPX zero four -1 -KPX zero one -50 -KPX zero seven -12 -EndKernPairs -EndKernData -EndFontMetrics diff --git a/misc/gs_afm/TimesO.afm b/misc/gs_afm/TimesO.afm deleted file mode 100644 index b643994a97..0000000000 --- a/misc/gs_afm/TimesO.afm +++ /dev/null @@ -1,1253 +0,0 @@ -StartFontMetrics 3.0 -Comment Copyright URW Software, Copyright 1994 by URW -Comment Creation Date: 2/11/1994 -Comment See the file PUBLIC (Aladdin Free Public License) for license conditions. -FontName NimbusRomNo9L-ReguItal -FullName Nimbus Roman No9 L Regular Italic -FamilyName Nimbus Roman No9 L -Weight Regular -ItalicAngle -15.0 -IsFixedPitch false -UnderlinePosition -100 -UnderlineThickness 50 -Version 001.005 -Notice URW Software, Copyright 1994 by URW -EncodingScheme AdobeStandardEncoding -FontBBox -169 -217 1010 904 -CapHeight 653 -XHeight 432 -Descender -205 -Ascender 683 -StartCharMetrics 232 -C 32 ; WX 250 ; N space ; B 125 0 125 0 ; -C 33 ; WX 333 ; N exclam ; B 39 -11 302 667 ; -C 34 ; WX 420 ; N quotedbl ; B 144 421 432 666 ; -C 35 ; WX 500 ; N numbersign ; B 2 0 540 676 ; -C 36 ; WX 500 ; N dollar ; B 31 -89 497 731 ; -C 37 ; WX 833 ; N percent ; B 79 -13 790 676 ; -C 38 ; WX 778 ; N ampersand ; B 76 -18 723 666 ; -C 39 ; WX 333 ; N quoteright ; B 151 436 290 666 ; -C 40 ; WX 333 ; N parenleft ; B 42 -181 315 669 ; -C 41 ; WX 333 ; N parenright ; B 16 -180 289 669 ; -C 42 ; WX 500 ; N asterisk ; B 128 255 492 666 ; -C 43 ; WX 675 ; N plus ; B 86 0 590 506 ; -C 44 ; WX 250 ; N comma ; B -4 -129 135 101 ; -C 45 ; WX 333 ; N hyphen ; B 49 192 282 255 ; -C 46 ; WX 250 ; N period ; B 27 -11 138 100 ; -C 47 ; WX 278 ; N slash ; B -65 -18 386 666 ; -C 48 ; WX 500 ; N zero ; B 32 -7 497 676 ; -C 49 ; WX 500 ; N one ; B 49 0 409 676 ; -C 50 ; WX 500 ; N two ; B 12 0 452 676 ; -C 51 ; WX 500 ; N three ; B 15 -7 465 676 ; -C 52 ; WX 500 ; N four ; B 1 0 479 676 ; -C 53 ; WX 500 ; N five ; B 15 -7 491 666 ; -C 54 ; WX 500 ; N six ; B 30 -7 521 686 ; -C 55 ; WX 500 ; N seven ; B 75 -8 537 666 ; -C 56 ; WX 500 ; N eight ; B 30 -7 493 676 ; -C 57 ; WX 500 ; N nine ; B 23 -17 492 676 ; -C 58 ; WX 333 ; N colon ; B 50 -11 261 441 ; -C 59 ; WX 333 ; N semicolon ; B 27 -129 261 441 ; -C 60 ; WX 675 ; N less ; B 84 -10 592 516 ; -C 61 ; WX 675 ; N equal ; B 86 120 590 386 ; -C 62 ; WX 675 ; N greater ; B 84 -10 592 516 ; -C 63 ; WX 500 ; N question ; B 132 -12 472 664 ; -C 64 ; WX 920 ; N at ; B 118 -18 806 666 ; -C 65 ; WX 611 ; N A ; B -51 0 564 668 ; -C 66 ; WX 611 ; N B ; B -8 0 588 653 ; -C 67 ; WX 667 ; N C ; B 66 -18 689 666 ; -C 68 ; WX 722 ; N D ; B -8 0 700 653 ; -C 69 ; WX 611 ; N E ; B -1 0 634 653 ; -C 70 ; WX 611 ; N F ; B 8 0 645 653 ; -C 71 ; WX 722 ; N G ; B 52 -18 722 666 ; -C 72 ; WX 722 ; N H ; B -8 0 767 653 ; -C 73 ; WX 333 ; N I ; B -8 0 384 653 ; -C 74 ; WX 444 ; N J ; B -6 -18 491 653 ; -C 75 ; WX 667 ; N K ; B 7 0 722 653 ; -C 76 ; WX 556 ; N L ; B -8 0 559 653 ; -C 77 ; WX 833 ; N M ; B -18 0 873 653 ; -C 78 ; WX 667 ; N N ; B -20 -15 727 653 ; -C 79 ; WX 722 ; N O ; B 60 -18 706 666 ; -C 80 ; WX 611 ; N P ; B 0 0 605 653 ; -C 81 ; WX 722 ; N Q ; B 59 -182 699 666 ; -C 82 ; WX 611 ; N R ; B -13 0 588 653 ; -C 83 ; WX 500 ; N S ; B 17 -18 508 667 ; -C 84 ; WX 556 ; N T ; B 59 0 633 653 ; -C 85 ; WX 722 ; N U ; B 102 -18 765 653 ; -C 86 ; WX 611 ; N V ; B 76 -18 688 653 ; -C 87 ; WX 833 ; N W ; B 71 -18 906 653 ; -C 88 ; WX 611 ; N X ; B -29 0 655 653 ; -C 89 ; WX 556 ; N Y ; B 78 0 633 653 ; -C 90 ; WX 556 ; N Z ; B -6 0 606 653 ; -C 91 ; WX 389 ; N bracketleft ; B 21 -153 391 663 ; -C 92 ; WX 278 ; N backslash ; B -41 -18 319 666 ; -C 93 ; WX 389 ; N bracketright ; B 12 -153 382 663 ; -C 94 ; WX 422 ; N asciicircum ; B 0 301 422 666 ; -C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; -C 96 ; WX 333 ; N quoteleft ; B 171 436 310 666 ; -C 97 ; WX 500 ; N a ; B 17 -11 476 441 ; -C 98 ; WX 500 ; N b ; B 23 -11 473 683 ; -C 99 ; WX 444 ; N c ; B 30 -11 425 441 ; -C 100 ; WX 500 ; N d ; B 15 -13 527 683 ; -C 101 ; WX 444 ; N e ; B 31 -11 412 441 ; -C 102 ; WX 278 ; N f ; B -147 -207 424 678 ; -C 103 ; WX 500 ; N g ; B 8 -206 472 441 ; -C 104 ; WX 500 ; N h ; B 19 -9 478 683 ; -C 105 ; WX 278 ; N i ; B 49 -11 264 654 ; -C 106 ; WX 278 ; N j ; B -124 -207 276 654 ; -C 107 ; WX 444 ; N k ; B 14 -11 461 683 ; -C 108 ; WX 278 ; N l ; B 41 -11 279 683 ; -C 109 ; WX 722 ; N m ; B 12 -9 704 441 ; -C 110 ; WX 500 ; N n ; B 14 -9 474 441 ; -C 111 ; WX 500 ; N o ; B 27 -11 468 441 ; -C 112 ; WX 500 ; N p ; B -75 -205 469 441 ; -C 113 ; WX 500 ; N q ; B 25 -209 483 441 ; -C 114 ; WX 389 ; N r ; B 45 0 412 441 ; -C 115 ; WX 389 ; N s ; B 16 -13 366 442 ; -C 116 ; WX 278 ; N t ; B 37 -11 296 546 ; -C 117 ; WX 500 ; N u ; B 42 -11 475 441 ; -C 118 ; WX 444 ; N v ; B 21 -18 426 441 ; -C 119 ; WX 667 ; N w ; B 16 -18 648 441 ; -C 120 ; WX 444 ; N x ; B -27 -11 447 441 ; -C 121 ; WX 444 ; N y ; B -24 -206 426 441 ; -C 122 ; WX 389 ; N z ; B -2 -81 380 428 ; -C 123 ; WX 400 ; N braceleft ; B 51 -177 407 687 ; -C 124 ; WX 275 ; N bar ; B 105 -18 171 666 ; -C 125 ; WX 400 ; N braceright ; B -7 -177 349 687 ; -C 126 ; WX 541 ; N asciitilde ; B 40 186 502 320 ; -C 161 ; WX 389 ; N exclamdown ; B 59 -205 321 474 ; -C 162 ; WX 500 ; N cent ; B 77 -143 472 560 ; -C 163 ; WX 500 ; N sterling ; B 10 -6 517 670 ; -C 164 ; WX 167 ; N fraction ; B -169 -10 337 676 ; -C 165 ; WX 500 ; N yen ; B 27 0 603 653 ; -C 166 ; WX 500 ; N florin ; B 25 -182 507 682 ; -C 167 ; WX 500 ; N section ; B 53 -162 461 666 ; -C 168 ; WX 500 ; N currency ; B -22 53 522 597 ; -C 169 ; WX 214 ; N quotesingle ; B 132 421 241 666 ; -C 170 ; WX 556 ; N quotedblleft ; B 166 436 514 666 ; -C 171 ; WX 500 ; N guillemotleft ; B 53 37 445 403 ; -C 172 ; WX 333 ; N guilsinglleft ; B 51 37 281 403 ; -C 173 ; WX 333 ; N guilsinglright ; B 52 37 282 403 ; -C 174 ; WX 500 ; N fi ; B -141 -207 481 681 ; -C 175 ; WX 500 ; N fl ; B -141 -204 518 682 ; -C 177 ; WX 500 ; N endash ; B -6 197 505 243 ; -C 178 ; WX 500 ; N dagger ; B 101 -159 488 666 ; -C 179 ; WX 500 ; N daggerdbl ; B 22 -143 491 666 ; -C 180 ; WX 250 ; N periodcentered ; B 70 199 181 310 ; -C 182 ; WX 523 ; N paragraph ; B 55 -123 616 653 ; -C 183 ; WX 350 ; N bullet ; B 40 191 310 461 ; -C 184 ; WX 333 ; N quotesinglbase ; B 44 -129 183 101 ; -C 185 ; WX 556 ; N quotedblbase ; B 57 -129 405 101 ; -C 186 ; WX 556 ; N quotedblright ; B 151 436 499 666 ; -C 187 ; WX 500 ; N guillemotright ; B 55 37 447 403 ; -C 188 ; WX 889 ; N ellipsis ; B 57 -11 762 100 ; -C 189 ; WX 1000 ; N perthousand ; B 25 -19 1010 706 ; -C 191 ; WX 500 ; N questiondown ; B 28 -205 367 473 ; -C 193 ; WX 333 ; N grave ; B 121 492 311 664 ; -C 194 ; WX 333 ; N acute ; B 180 494 403 664 ; -C 195 ; WX 333 ; N circumflex ; B 91 492 385 661 ; -C 196 ; WX 333 ; N tilde ; B 100 517 427 624 ; -C 197 ; WX 333 ; N macron ; B 99 532 411 583 ; -C 198 ; WX 333 ; N breve ; B 117 492 418 650 ; -C 199 ; WX 333 ; N dotaccent ; B 207 508 305 606 ; -C 200 ; WX 333 ; N dieresis ; B 107 508 405 606 ; -C 202 ; WX 333 ; N ring ; B 155 508 355 707 ; -C 203 ; WX 333 ; N cedilla ; B -30 -217 182 0 ; -C 205 ; WX 333 ; N hungarumlaut ; B 93 494 486 664 ; -C 206 ; WX 333 ; N ogonek ; B -20 -169 200 40 ; -C 207 ; WX 333 ; N caron ; B 121 492 426 661 ; -C 208 ; WX 889 ; N emdash ; B -6 197 894 243 ; -C 225 ; WX 889 ; N AE ; B -27 0 911 653 ; -C 227 ; WX 276 ; N ordfeminine ; B 42 406 352 676 ; -C 232 ; WX 556 ; N Lslash ; B -8 0 559 653 ; -C 233 ; WX 722 ; N Oslash ; B 60 -105 699 722 ; -C 234 ; WX 944 ; N OE ; B 49 -8 964 666 ; -C 235 ; WX 310 ; N ordmasculine ; B 67 406 362 676 ; -C 241 ; WX 667 ; N ae ; B 23 -11 640 441 ; -C 245 ; WX 278 ; N dotlessi ; B 49 -11 235 441 ; -C 248 ; WX 278 ; N lslash ; B 37 -11 307 683 ; -C 249 ; WX 500 ; N oslash ; B 28 -135 469 554 ; -C 250 ; WX 667 ; N oe ; B 20 -12 646 441 ; -C 251 ; WX 500 ; N germandbls ; B -168 -207 493 679 ; -C -1 ; WX 556 ; N Yacute ; B 78 0 633 876 ; -C -1 ; WX 722 ; N Ucircumflex ; B 102 -18 765 873 ; -C -1 ; WX 722 ; N Ugrave ; B 102 -18 765 876 ; -C -1 ; WX 556 ; N Zcaron ; B -6 0 606 873 ; -C -1 ; WX 556 ; N Ydieresis ; B 78 0 633 818 ; -C -1 ; WX 300 ; N threesuperior ; B 43 268 339 676 ; -C -1 ; WX 722 ; N Uacute ; B 102 -18 765 876 ; -C -1 ; WX 300 ; N twosuperior ; B 33 271 324 676 ; -C -1 ; WX 722 ; N Udieresis ; B 102 -18 765 818 ; -C -1 ; WX 250 ; N middot ; B 70 199 181 310 ; -C -1 ; WX 300 ; N onesuperior ; B 43 271 284 676 ; -C -1 ; WX 500 ; N aacute ; B 17 -11 487 664 ; -C -1 ; WX 500 ; N agrave ; B 17 -11 476 664 ; -C -1 ; WX 500 ; N acircumflex ; B 17 -11 476 661 ; -C -1 ; WX 500 ; N Scaron ; B 17 -18 520 873 ; -C -1 ; WX 722 ; N Otilde ; B 60 -18 706 836 ; -C -1 ; WX 333 ; N sfthyphen ; B 49 192 282 255 ; -C -1 ; WX 500 ; N atilde ; B 17 -11 511 624 ; -C -1 ; WX 500 ; N aring ; B 17 -11 476 707 ; -C -1 ; WX 500 ; N adieresis ; B 17 -11 489 606 ; -C -1 ; WX 722 ; N Ograve ; B 60 -18 706 876 ; -C -1 ; WX 722 ; N Ocircumflex ; B 60 -18 706 873 ; -C -1 ; WX 722 ; N Odieresis ; B 60 -18 706 818 ; -C -1 ; WX 667 ; N Ntilde ; B -20 -15 727 836 ; -C -1 ; WX 444 ; N edieresis ; B 31 -11 451 606 ; -C -1 ; WX 444 ; N eacute ; B 31 -11 459 664 ; -C -1 ; WX 444 ; N egrave ; B 31 -11 412 664 ; -C -1 ; WX 333 ; N Icircumflex ; B -8 0 425 873 ; -C -1 ; WX 444 ; N ecircumflex ; B 31 -11 441 661 ; -C -1 ; WX 333 ; N Igrave ; B -8 0 384 876 ; -C -1 ; WX 333 ; N Iacute ; B -8 0 403 876 ; -C -1 ; WX 333 ; N Idieresis ; B -8 0 435 818 ; -C -1 ; WX 400 ; N degree ; B 101 390 387 676 ; -C -1 ; WX 611 ; N Ecircumflex ; B -1 0 634 873 ; -C -1 ; WX 675 ; N minus ; B 86 220 590 286 ; -C -1 ; WX 675 ; N multiply ; B 93 8 582 497 ; -C -1 ; WX 675 ; N divide ; B 86 -11 590 517 ; -C -1 ; WX 611 ; N Egrave ; B -1 0 634 876 ; -C -1 ; WX 980 ; N trademark ; B 30 247 957 653 ; -C -1 ; WX 722 ; N Oacute ; B 60 -18 706 876 ; -C -1 ; WX 500 ; N thorn ; B -75 -205 469 683 ; -C -1 ; WX 500 ; N eth ; B 27 -11 482 683 ; -C -1 ; WX 611 ; N Eacute ; B -1 0 634 876 ; -C -1 ; WX 444 ; N ccedilla ; B 26 -217 425 441 ; -C -1 ; WX 278 ; N idieresis ; B 49 -11 353 606 ; -C -1 ; WX 278 ; N iacute ; B 49 -11 356 664 ; -C -1 ; WX 278 ; N igrave ; B 49 -11 284 664 ; -C -1 ; WX 675 ; N plusminus ; B 86 0 590 568 ; -C -1 ; WX 750 ; N onehalf ; B 34 -10 749 676 ; -C -1 ; WX 750 ; N onequarter ; B 33 -10 736 676 ; -C -1 ; WX 750 ; N threequarters ; B 23 -10 736 676 ; -C -1 ; WX 278 ; N icircumflex ; B 34 -11 328 661 ; -C -1 ; WX 611 ; N Edieresis ; B -1 0 634 818 ; -C -1 ; WX 500 ; N ntilde ; B 14 -9 476 624 ; -C -1 ; WX 611 ; N Aring ; B -51 0 564 904 ; -C -1 ; WX 500 ; N odieresis ; B 27 -11 489 606 ; -C -1 ; WX 500 ; N oacute ; B 27 -11 487 664 ; -C -1 ; WX 500 ; N ograve ; B 27 -11 468 664 ; -C -1 ; WX 500 ; N ocircumflex ; B 27 -11 468 661 ; -C -1 ; WX 500 ; N otilde ; B 27 -11 496 624 ; -C -1 ; WX 389 ; N scaron ; B 16 -13 454 661 ; -C -1 ; WX 500 ; N udieresis ; B 42 -11 479 606 ; -C -1 ; WX 500 ; N uacute ; B 42 -11 477 664 ; -C -1 ; WX 500 ; N ugrave ; B 42 -11 475 664 ; -C -1 ; WX 500 ; N ucircumflex ; B 42 -11 475 661 ; -C -1 ; WX 444 ; N yacute ; B -24 -206 459 664 ; -C -1 ; WX 389 ; N zcaron ; B -2 -81 434 661 ; -C -1 ; WX 444 ; N ydieresis ; B -24 -206 441 606 ; -C -1 ; WX 760 ; N copyright ; B 41 -18 719 666 ; -C -1 ; WX 760 ; N registered ; B 41 -18 719 666 ; -C -1 ; WX 611 ; N Atilde ; B -51 0 566 836 ; -C -1 ; WX 250 ; N nbspace ; B 125 0 125 0 ; -C -1 ; WX 667 ; N Ccedilla ; B 66 -217 689 666 ; -C -1 ; WX 611 ; N Acircumflex ; B -51 0 564 873 ; -C -1 ; WX 611 ; N Agrave ; B -51 0 564 876 ; -C -1 ; WX 675 ; N logicalnot ; B 86 108 590 386 ; -C -1 ; WX 611 ; N Aacute ; B -51 0 564 876 ; -C -1 ; WX 722 ; N Eth ; B -8 0 700 653 ; -C -1 ; WX 275 ; N brokenbar ; B 105 -18 171 666 ; -C -1 ; WX 611 ; N Thorn ; B 0 0 569 653 ; -C -1 ; WX 611 ; N Adieresis ; B -51 0 564 818 ; -C -1 ; WX 500 ; N mu ; B -30 -209 497 428 ; -C -1 ; WX 250 ; N .notdef ; B 125 0 125 0 ; -EndCharMetrics -StartKernData -StartKernPairs 994 -KPX A C -50 -KPX A Ccedilla -49 -KPX A G -44 -KPX A O -45 -KPX A Odieresis -45 -KPX A Q -43 -KPX A T -14 -KPX A U -56 -KPX A Uacute -56 -KPX A Ucircumflex -56 -KPX A Udieresis -56 -KPX A Ugrave -56 -KPX A V -81 -KPX A W -74 -KPX A Y -21 -KPX A a -3 -KPX A b 0 -KPX A c -18 -KPX A ccedilla -28 -KPX A comma 8 -KPX A d -3 -KPX A e -17 -KPX A g -25 -KPX A guillemotleft -44 -KPX A guilsinglleft -43 -KPX A hyphen -12 -KPX A o -17 -KPX A period 9 -KPX A q -12 -KPX A quotedblright -92 -KPX A quoteright -92 -KPX A t -6 -KPX A u -9 -KPX A v -50 -KPX A w -43 -KPX A y -57 -KPX Aacute C -50 -KPX Aacute G -44 -KPX Aacute O -45 -KPX Aacute Q -43 -KPX Aacute T -14 -KPX Aacute U -56 -KPX Aacute V -81 -KPX Aacute W -74 -KPX Aacute Y -21 -KPX Aacute a -3 -KPX Aacute b 0 -KPX Aacute c -18 -KPX Aacute comma 8 -KPX Aacute d -3 -KPX Aacute e -17 -KPX Aacute g -25 -KPX Aacute guillemotleft -44 -KPX Aacute guilsinglleft -43 -KPX Aacute hyphen -12 -KPX Aacute o -17 -KPX Aacute period 9 -KPX Aacute q -12 -KPX Aacute quoteright -92 -KPX Aacute t -6 -KPX Aacute u -9 -KPX Aacute v -50 -KPX Aacute w -43 -KPX Aacute y -57 -KPX Acircumflex C -50 -KPX Acircumflex G -44 -KPX Acircumflex O -45 -KPX Acircumflex Q -43 -KPX Acircumflex T -14 -KPX Acircumflex U -56 -KPX Acircumflex V -81 -KPX Acircumflex W -74 -KPX Acircumflex Y -21 -KPX Acircumflex comma 8 -KPX Acircumflex period 9 -KPX Adieresis C -50 -KPX Adieresis G -44 -KPX Adieresis O -45 -KPX Adieresis Q -43 -KPX Adieresis T -14 -KPX Adieresis U -56 -KPX Adieresis V -81 -KPX Adieresis W -74 -KPX Adieresis Y -21 -KPX Adieresis a -3 -KPX Adieresis b 0 -KPX Adieresis c -18 -KPX Adieresis comma 8 -KPX Adieresis d -3 -KPX Adieresis g -25 -KPX Adieresis guillemotleft -44 -KPX Adieresis guilsinglleft -43 -KPX Adieresis hyphen -12 -KPX Adieresis o -17 -KPX Adieresis period 9 -KPX Adieresis q -12 -KPX Adieresis quotedblright -92 -KPX Adieresis quoteright -92 -KPX Adieresis t -6 -KPX Adieresis u -9 -KPX Adieresis v -50 -KPX Adieresis w -43 -KPX Adieresis y -57 -KPX Agrave C -50 -KPX Agrave G -44 -KPX Agrave O -45 -KPX Agrave Q -43 -KPX Agrave T -14 -KPX Agrave U -56 -KPX Agrave V -81 -KPX Agrave W -74 -KPX Agrave Y -21 -KPX Agrave comma 8 -KPX Agrave period 9 -KPX Aring C -50 -KPX Aring G -44 -KPX Aring O -45 -KPX Aring Q -43 -KPX Aring T -14 -KPX Aring U -56 -KPX Aring V -81 -KPX Aring W -74 -KPX Aring Y -21 -KPX Aring a -3 -KPX Aring b 0 -KPX Aring c -18 -KPX Aring comma 8 -KPX Aring d -3 -KPX Aring e -17 -KPX Aring g -25 -KPX Aring guillemotleft -44 -KPX Aring guilsinglleft -43 -KPX Aring hyphen -12 -KPX Aring o -17 -KPX Aring period 9 -KPX Aring q -12 -KPX Aring quotedblright -92 -KPX Aring quoteright -92 -KPX Aring t -6 -KPX Aring u -9 -KPX Aring v -50 -KPX Aring w -43 -KPX Aring y -57 -KPX Atilde C -50 -KPX Atilde G -44 -KPX Atilde O -45 -KPX Atilde Q -43 -KPX Atilde T -14 -KPX Atilde U -56 -KPX Atilde V -81 -KPX Atilde W -74 -KPX Atilde Y -21 -KPX Atilde comma 8 -KPX Atilde period 8 -KPX B A -22 -KPX B AE -34 -KPX B Aacute -22 -KPX B Acircumflex -22 -KPX B Adieresis -22 -KPX B Aring -22 -KPX B Atilde -22 -KPX B O -13 -KPX B OE -5 -KPX B Oacute -13 -KPX B Ocircumflex -13 -KPX B Odieresis -13 -KPX B Ograve -13 -KPX B Oslash -13 -KPX B V -32 -KPX B W -29 -KPX B Y -39 -KPX C A -13 -KPX C AE -28 -KPX C Aacute -13 -KPX C Adieresis -13 -KPX C Aring -13 -KPX C H -13 -KPX C K -21 -KPX C O -19 -KPX C Oacute -19 -KPX C Odieresis -19 -KPX Ccedilla A -16 -KPX D A -35 -KPX D Aacute -35 -KPX D Acircumflex -35 -KPX D Adieresis -35 -KPX D Agrave -35 -KPX D Aring -35 -KPX D Atilde -35 -KPX D J -32 -KPX D T -9 -KPX D V -41 -KPX D W -35 -KPX D X -39 -KPX D Y -49 -KPX F A -72 -KPX F Aacute -72 -KPX F Acircumflex -72 -KPX F Adieresis -72 -KPX F Agrave -72 -KPX F Aring -72 -KPX F Atilde -72 -KPX F J -60 -KPX F O -40 -KPX F Odieresis -40 -KPX F a -76 -KPX F aacute -77 -KPX F adieresis -52 -KPX F ae -81 -KPX F aring -70 -KPX F comma -95 -KPX F e -82 -KPX F eacute -83 -KPX F hyphen -45 -KPX F i -36 -KPX F j -41 -KPX F o -79 -KPX F oacute -80 -KPX F odieresis -52 -KPX F oe -74 -KPX F oslash -80 -KPX F period -98 -KPX F r -52 -KPX F u -50 -KPX G A -17 -KPX G AE -29 -KPX G Aacute -17 -KPX G Acircumflex -17 -KPX G Adieresis -17 -KPX G Agrave -17 -KPX G Aring -17 -KPX G Atilde -17 -KPX G T -13 -KPX G V -5 -KPX G W -2 -KPX G Y -12 -KPX J A -40 -KPX J AE -52 -KPX J Adieresis -40 -KPX J Aring -40 -KPX K C -55 -KPX K G -53 -KPX K O -46 -KPX K OE -45 -KPX K Oacute -46 -KPX K Odieresis -46 -KPX K S 6 -KPX K T 21 -KPX K a -4 -KPX K adieresis -4 -KPX K ae -5 -KPX K aring -4 -KPX K e -18 -KPX K hyphen -57 -KPX K o -18 -KPX K oacute -18 -KPX K odieresis -18 -KPX K u -10 -KPX K udieresis -10 -KPX K y -87 -KPX L A 44 -KPX L AE 32 -KPX L Aacute 44 -KPX L Adieresis 44 -KPX L Aring 44 -KPX L C 6 -KPX L Ccedilla 4 -KPX L G 11 -KPX L O 10 -KPX L Oacute 10 -KPX L Ocircumflex 10 -KPX L Odieresis 10 -KPX L Ograve 10 -KPX L Otilde 10 -KPX L S 20 -KPX L T -13 -KPX L U -8 -KPX L Udieresis -8 -KPX L V -55 -KPX L W -48 -KPX L Y -20 -KPX L hyphen 47 -KPX L quotedblright -92 -KPX L quoteright -92 -KPX L u 12 -KPX L udieresis 10 -KPX L y -29 -KPX N A -20 -KPX N AE -32 -KPX N Aacute -20 -KPX N Adieresis -20 -KPX N Aring -20 -KPX N C -20 -KPX N Ccedilla -19 -KPX N G -14 -KPX N O -20 -KPX N Oacute -20 -KPX N Odieresis -20 -KPX N a -22 -KPX N aacute -23 -KPX N adieresis -23 -KPX N ae -26 -KPX N aring -23 -KPX N comma -13 -KPX N e -28 -KPX N eacute -30 -KPX N o -25 -KPX N oacute -26 -KPX N odieresis -26 -KPX N oslash -27 -KPX N period -16 -KPX N u -24 -KPX N udieresis -25 -KPX O A -37 -KPX O AE -68 -KPX O Aacute -37 -KPX O Adieresis -37 -KPX O Aring -37 -KPX O T -3 -KPX O V -45 -KPX O W -39 -KPX O X -40 -KPX O Y -50 -KPX Oacute A -37 -KPX Oacute T -3 -KPX Oacute V -45 -KPX Oacute W -39 -KPX Oacute Y -50 -KPX Ocircumflex T -3 -KPX Ocircumflex V -45 -KPX Ocircumflex Y -50 -KPX Odieresis A -37 -KPX Odieresis T -3 -KPX Odieresis V -45 -KPX Odieresis W -39 -KPX Odieresis X -40 -KPX Odieresis Y -50 -KPX Ograve T -3 -KPX Ograve V -45 -KPX Ograve Y -50 -KPX Oslash A -37 -KPX Otilde T -3 -KPX Otilde V -45 -KPX Otilde Y -50 -KPX P A -78 -KPX P AE -115 -KPX P Aacute -78 -KPX P Adieresis -78 -KPX P Aring -78 -KPX P J -89 -KPX P a -73 -KPX P aacute -73 -KPX P adieresis -64 -KPX P ae -79 -KPX P aring -73 -KPX P comma -117 -KPX P e -78 -KPX P eacute -78 -KPX P hyphen -64 -KPX P o -72 -KPX P oacute -72 -KPX P odieresis -64 -KPX P oe -66 -KPX P oslash -73 -KPX P period -120 -KPX R C -25 -KPX R Ccedilla -24 -KPX R G -19 -KPX R O -26 -KPX R OE -17 -KPX R Oacute -26 -KPX R Odieresis -26 -KPX R T 0 -KPX R U -35 -KPX R Udieresis -35 -KPX R V -31 -KPX R W -28 -KPX R Y -19 -KPX R a -2 -KPX R aacute -2 -KPX R adieresis -2 -KPX R ae -3 -KPX R aring -2 -KPX R e -15 -KPX R eacute -15 -KPX R hyphen -29 -KPX R o -15 -KPX R oacute -15 -KPX R odieresis -15 -KPX R oe -15 -KPX R u -7 -KPX R uacute -7 -KPX R udieresis -7 -KPX R y 3 -KPX S A -2 -KPX S AE -14 -KPX S Aacute -2 -KPX S Adieresis -2 -KPX S Aring -2 -KPX S T 1 -KPX S V 5 -KPX S W 8 -KPX S Y -1 -KPX S t -13 -KPX T A -33 -KPX T AE -45 -KPX T Aacute -33 -KPX T Acircumflex -33 -KPX T Adieresis -33 -KPX T Agrave -33 -KPX T Aring -33 -KPX T Atilde -33 -KPX T C -14 -KPX T G -7 -KPX T J -39 -KPX T O -21 -KPX T OE -8 -KPX T Oacute -21 -KPX T Ocircumflex -21 -KPX T Odieresis -21 -KPX T Ograve -21 -KPX T Oslash -21 -KPX T Otilde -21 -KPX T S -2 -KPX T V 41 -KPX T W 43 -KPX T Y 33 -KPX T a -80 -KPX T ae -81 -KPX T c -87 -KPX T colon -84 -KPX T comma -70 -KPX T e -90 -KPX T g -102 -KPX T guillemotleft -103 -KPX T guilsinglleft -102 -KPX T hyphen -68 -KPX T i -16 -KPX T j -20 -KPX T o -87 -KPX T oslash -89 -KPX T period -71 -KPX T r -87 -KPX T s -74 -KPX T semicolon -92 -KPX T u -86 -KPX T v -73 -KPX T w -69 -KPX T y -69 -KPX U A -49 -KPX U AE -69 -KPX U Aacute -49 -KPX U Acircumflex -49 -KPX U Adieresis -49 -KPX U Aring -49 -KPX U Atilde -49 -KPX U comma -35 -KPX U m -28 -KPX U n -29 -KPX U p -32 -KPX U period -39 -KPX U r -41 -KPX Uacute A -49 -KPX Uacute comma -35 -KPX Uacute m -28 -KPX Uacute n -29 -KPX Uacute p -32 -KPX Uacute period -39 -KPX Uacute r -41 -KPX Ucircumflex A -49 -KPX Udieresis A -49 -KPX Udieresis b 1 -KPX Udieresis comma -35 -KPX Udieresis m -28 -KPX Udieresis n -29 -KPX Udieresis p -32 -KPX Udieresis period -39 -KPX Udieresis r -41 -KPX Ugrave A -49 -KPX V A -65 -KPX V AE -101 -KPX V Aacute -65 -KPX V Acircumflex -65 -KPX V Adieresis -65 -KPX V Agrave -65 -KPX V Aring -65 -KPX V Atilde -65 -KPX V C -47 -KPX V G -41 -KPX V O -47 -KPX V Oacute -47 -KPX V Ocircumflex -47 -KPX V Odieresis -47 -KPX V Ograve -47 -KPX V Oslash -47 -KPX V Otilde -47 -KPX V S -15 -KPX V T 32 -KPX V a -66 -KPX V ae -71 -KPX V colon -81 -KPX V comma -76 -KPX V e -73 -KPX V g -83 -KPX V guillemotleft -81 -KPX V guilsinglleft -80 -KPX V hyphen -44 -KPX V i -16 -KPX V o -69 -KPX V oslash -71 -KPX V period -80 -KPX V r -44 -KPX V semicolon -78 -KPX V u -39 -KPX V y -12 -KPX W A -56 -KPX W AE -85 -KPX W Aacute -56 -KPX W Acircumflex -56 -KPX W Adieresis -56 -KPX W Agrave -56 -KPX W Aring -56 -KPX W Atilde -56 -KPX W C -38 -KPX W G -32 -KPX W O -39 -KPX W Oacute -39 -KPX W Ocircumflex -39 -KPX W Odieresis -39 -KPX W Ograve -39 -KPX W Oslash -39 -KPX W Otilde -39 -KPX W S -17 -KPX W T 30 -KPX W a -53 -KPX W ae -58 -KPX W colon -76 -KPX W comma -58 -KPX W e -59 -KPX W g -74 -KPX W guillemotleft -68 -KPX W guilsinglleft -67 -KPX W hyphen -31 -KPX W i -18 -KPX W o -56 -KPX W oslash -58 -KPX W period -61 -KPX W r -39 -KPX W semicolon -73 -KPX W u -34 -KPX W y -7 -KPX X C -48 -KPX X O -44 -KPX X Odieresis -44 -KPX X Q -42 -KPX X a -2 -KPX X e -15 -KPX X hyphen -41 -KPX X o -15 -KPX X u -7 -KPX X y -62 -KPX Y A -27 -KPX Y AE -39 -KPX Y Aacute -27 -KPX Y Acircumflex -27 -KPX Y Adieresis -27 -KPX Y Agrave -27 -KPX Y Aring -27 -KPX Y Atilde -27 -KPX Y C -51 -KPX Y G -45 -KPX Y O -52 -KPX Y Oacute -52 -KPX Y Ocircumflex -52 -KPX Y Odieresis -52 -KPX Y Ograve -52 -KPX Y Oslash -51 -KPX Y Otilde -52 -KPX Y S -15 -KPX Y T 32 -KPX Y a -72 -KPX Y ae -75 -KPX Y colon -78 -KPX Y comma -64 -KPX Y e -78 -KPX Y g -94 -KPX Y guillemotleft -93 -KPX Y guilsinglleft -92 -KPX Y hyphen -60 -KPX Y i -16 -KPX Y o -75 -KPX Y oslash -77 -KPX Y p -52 -KPX Y period -65 -KPX Y semicolon -86 -KPX Y u -58 -KPX Y v -35 -KPX Z v -12 -KPX Z y -30 -KPX a j -22 -KPX a quoteright -29 -KPX a v 0 -KPX a w 4 -KPX a y 4 -KPX aacute v 0 -KPX aacute w 4 -KPX aacute y 4 -KPX adieresis v 0 -KPX adieresis w 4 -KPX adieresis y 4 -KPX ae v 2 -KPX ae w 5 -KPX ae y 5 -KPX agrave v 0 -KPX agrave w 4 -KPX agrave y 4 -KPX aring v 0 -KPX aring w 4 -KPX aring y 4 -KPX b v -10 -KPX b w -7 -KPX b y -7 -KPX c h -30 -KPX c k -29 -KPX comma one -42 -KPX comma quotedblright -40 -KPX comma quoteright -40 -KPX e quoteright -21 -KPX e t -16 -KPX e v 0 -KPX e w 2 -KPX e x -10 -KPX e y 2 -KPX eacute v 0 -KPX eacute w 2 -KPX eacute y 2 -KPX ecircumflex v 0 -KPX ecircumflex w 2 -KPX ecircumflex y 2 -KPX eight four 13 -KPX eight one -58 -KPX eight seven -1 -KPX f a -26 -KPX f aacute -27 -KPX f adieresis -2 -KPX f ae -30 -KPX f aring -17 -KPX f e -32 -KPX f eacute -33 -KPX f f 30 -KPX f i 17 -KPX f j 13 -KPX f l 42 -KPX f o -29 -KPX f oacute -30 -KPX f odieresis -2 -KPX f oe -25 -KPX f oslash -31 -KPX f quoteright 18 -KPX f s -20 -KPX f t 18 -KPX five four -5 -KPX five one -71 -KPX five seven -28 -KPX four four 12 -KPX four one -71 -KPX four seven -27 -KPX g a -41 -KPX g adieresis -42 -KPX g ae -46 -KPX g aring -42 -KPX g e -45 -KPX g eacute -45 -KPX g l -46 -KPX g oacute -41 -KPX g odieresis -41 -KPX g r -21 -KPX guillemotright A -24 -KPX guillemotright AE -49 -KPX guillemotright Aacute -24 -KPX guillemotright Adieresis -24 -KPX guillemotright Aring -24 -KPX guillemotright T -76 -KPX guillemotright V -75 -KPX guillemotright W -66 -KPX guillemotright Y -80 -KPX guilsinglright A -23 -KPX guilsinglright AE -48 -KPX guilsinglright Aacute -23 -KPX guilsinglright Adieresis -23 -KPX guilsinglright Aring -23 -KPX guilsinglright T -75 -KPX guilsinglright V -74 -KPX guilsinglright W -65 -KPX guilsinglright Y -79 -KPX h quoteright -31 -KPX h y -5 -KPX hyphen A 3 -KPX hyphen AE -22 -KPX hyphen Aacute 3 -KPX hyphen Adieresis 3 -KPX hyphen Aring 3 -KPX hyphen T -45 -KPX hyphen V -43 -KPX hyphen W -34 -KPX hyphen Y -53 -KPX i T -10 -KPX i j -31 -KPX k a 12 -KPX k aacute 12 -KPX k adieresis 12 -KPX k ae 9 -KPX k aring 12 -KPX k comma 27 -KPX k e 5 -KPX k eacute 5 -KPX k g -27 -KPX k hyphen -27 -KPX k o 6 -KPX k oacute 6 -KPX k odieresis 6 -KPX k period 26 -KPX k s 7 -KPX k u 8 -KPX k udieresis 8 -KPX l v -13 -KPX l y -9 -KPX m p -4 -KPX m v -6 -KPX m w -4 -KPX m y -3 -KPX n T -40 -KPX n p -7 -KPX n quoteright -34 -KPX n v -10 -KPX n w -7 -KPX n y -7 -KPX nine four 1 -KPX nine one -65 -KPX nine seven -5 -KPX o T -62 -KPX o quoteright -24 -KPX o t -14 -KPX o v -18 -KPX o w -15 -KPX o x -32 -KPX o y -15 -KPX oacute v -18 -KPX oacute w -15 -KPX oacute y -15 -KPX ocircumflex t -16 -KPX odieresis t -16 -KPX odieresis v -18 -KPX odieresis w -15 -KPX odieresis x -32 -KPX odieresis y -15 -KPX ograve v -18 -KPX ograve w -15 -KPX ograve y -15 -KPX one comma -52 -KPX one eight -57 -KPX one five -55 -KPX one four -69 -KPX one nine -61 -KPX one one -69 -KPX one period -56 -KPX one seven -61 -KPX one six -50 -KPX one three -55 -KPX one two -50 -KPX one zero -42 -KPX p t -14 -KPX p y -7 -KPX period one -43 -KPX period quotedblright -39 -KPX period quoteright -39 -KPX q c -13 -KPX q u -11 -KPX quotedblbase A 3 -KPX quotedblbase AE -11 -KPX quotedblbase T -62 -KPX quotedblbase V -96 -KPX quotedblbase W -84 -KPX quotedblbase Y -68 -KPX quotedblleft A -87 -KPX quotedblleft AE -141 -KPX quotedblleft Aacute -87 -KPX quotedblleft Adieresis -87 -KPX quotedblleft Aring -87 -KPX quotedblleft T -18 -KPX quotedblleft V -17 -KPX quotedblleft W -15 -KPX quotedblleft Y -25 -KPX quotedblright A -94 -KPX quotedblright AE -148 -KPX quotedblright Aacute -94 -KPX quotedblright Adieresis -94 -KPX quotedblright Aring -94 -KPX quotedblright T -21 -KPX quotedblright V -21 -KPX quotedblright W -18 -KPX quotedblright Y -30 -KPX quoteleft A -78 -KPX quoteleft AE -132 -KPX quoteleft Aacute -78 -KPX quoteleft Adieresis -78 -KPX quoteleft Aring -78 -KPX quoteleft T -9 -KPX quoteleft V -8 -KPX quoteleft W -5 -KPX quoteleft Y -15 -KPX quoteright A -87 -KPX quoteright AE -141 -KPX quoteright Aacute -87 -KPX quoteright Adieresis -87 -KPX quoteright Aring -87 -KPX quoteright comma -74 -KPX quoteright d -80 -KPX quoteright o -78 -KPX quoteright period -78 -KPX quoteright r -57 -KPX quoteright s -63 -KPX quoteright t -49 -KPX quoteright v -31 -KPX quoteright w -26 -KPX quoteright y -25 -KPX r a -27 -KPX r aacute -27 -KPX r acircumflex -27 -KPX r adieresis -27 -KPX r ae -34 -KPX r agrave -27 -KPX r aring -27 -KPX r c -24 -KPX r ccedilla -15 -KPX r colon -28 -KPX r comma -68 -KPX r d -30 -KPX r e -32 -KPX r eacute -32 -KPX r ecircumflex -32 -KPX r egrave -32 -KPX r f 23 -KPX r g -19 -KPX r h -16 -KPX r hyphen -51 -KPX r i 8 -KPX r j 3 -KPX r k -15 -KPX r l -21 -KPX r m 17 -KPX r n 16 -KPX r o -26 -KPX r oacute -26 -KPX r ocircumflex -26 -KPX r odieresis -26 -KPX r oe -21 -KPX r ograve -26 -KPX r oslash -27 -KPX r p 13 -KPX r period -72 -KPX r q -29 -KPX r quoteright -4 -KPX r r 4 -KPX r s -16 -KPX r semicolon -28 -KPX r t 12 -KPX r u 11 -KPX r v 29 -KPX r w 32 -KPX r x 8 -KPX r y 32 -KPX r z 0 -KPX s quoteright -21 -KPX s t -12 -KPX seven colon -88 -KPX seven comma -79 -KPX seven four -64 -KPX seven one -47 -KPX seven period -82 -KPX seven seven -11 -KPX seven six -37 -KPX six four 17 -KPX six one -70 -KPX six seven -37 -KPX t S -9 -KPX t a -6 -KPX t aacute -6 -KPX t adieresis -6 -KPX t ae -10 -KPX t aring -6 -KPX t colon -29 -KPX t e -13 -KPX t eacute -13 -KPX t h -12 -KPX t o -11 -KPX t oacute -11 -KPX t odieresis -11 -KPX t quoteright -21 -KPX t semicolon -26 -KPX three four -9 -KPX three one -77 -KPX three seven -15 -KPX two four -12 -KPX two one -48 -KPX two seven -22 -KPX u quoteright -32 -KPX v a -24 -KPX v aacute -26 -KPX v acircumflex -26 -KPX v adieresis -26 -KPX v ae -29 -KPX v agrave -26 -KPX v aring -26 -KPX v atilde -26 -KPX v c -26 -KPX v colon -48 -KPX v comma -47 -KPX v e -30 -KPX v eacute -32 -KPX v ecircumflex -32 -KPX v egrave -32 -KPX v g -36 -KPX v hyphen 0 -KPX v l -29 -KPX v o -26 -KPX v oacute -28 -KPX v odieresis -28 -KPX v ograve -28 -KPX v oslash -29 -KPX v period -51 -KPX v s -30 -KPX v semicolon -48 -KPX w a -26 -KPX w aacute -27 -KPX w acircumflex -27 -KPX w adieresis -27 -KPX w ae -31 -KPX w agrave -27 -KPX w aring -27 -KPX w atilde -27 -KPX w c -28 -KPX w colon -49 -KPX w comma -46 -KPX w e -32 -KPX w eacute -33 -KPX w ecircumflex -33 -KPX w egrave -33 -KPX w g -38 -KPX w hyphen -3 -KPX w l -30 -KPX w o -28 -KPX w oacute -30 -KPX w odieresis -30 -KPX w ograve -30 -KPX w oslash -30 -KPX w period -51 -KPX w s -32 -KPX w semicolon -49 -KPX x a 5 -KPX x c -2 -KPX x e -2 -KPX x eacute -2 -KPX x o 0 -KPX x q 1 -KPX y a -14 -KPX y aacute -16 -KPX y acircumflex -16 -KPX y adieresis -16 -KPX y ae -19 -KPX y agrave -16 -KPX y aring -16 -KPX y atilde -16 -KPX y c -16 -KPX y colon -48 -KPX y comma -23 -KPX y e -20 -KPX y eacute -22 -KPX y ecircumflex -22 -KPX y egrave -22 -KPX y g -36 -KPX y hyphen 5 -KPX y l -20 -KPX y o -16 -KPX y oacute -18 -KPX y odieresis -18 -KPX y ograve -18 -KPX y oslash -19 -KPX y period -27 -KPX y s -20 -KPX y semicolon -46 -KPX zero four 14 -KPX zero one -51 -KPX zero seven -3 -EndKernPairs -EndKernData -EndFontMetrics diff --git a/misc/gs_afm/TimesRo.afm b/misc/gs_afm/TimesRo.afm deleted file mode 100644 index a272b449b5..0000000000 --- a/misc/gs_afm/TimesRo.afm +++ /dev/null @@ -1,1257 +0,0 @@ -StartFontMetrics 3.0 -Comment Copyright URW Software, Copyright 1994 by URW -Comment Creation Date: 11/17/1994 -Comment See the file PUBLIC (Aladdin Free Public License) for license conditions. -FontName NimbusRomNo9L-Regu -FullName Nimbus Roman No9 L Regular -FamilyName Nimbus Roman No9 L -Weight Regular -ItalicAngle 0.0 -IsFixedPitch false -UnderlinePosition -100 -UnderlineThickness 50 -Version 001.005 -Notice URW Software, Copyright 1994 by URW -EncodingScheme AdobeStandardEncoding -FontBBox -168 -218 1000 915 -CapHeight 662 -XHeight 450 -Descender -217 -Ascender 683 -StartCharMetrics 232 -C 32 ; WX 250 ; N space ; B 125 0 125 0 ; -C 33 ; WX 333 ; N exclam ; B 130 -9 236 676 ; -C 34 ; WX 408 ; N quotedbl ; B 77 431 331 676 ; -C 35 ; WX 500 ; N numbersign ; B 5 0 496 662 ; -C 36 ; WX 500 ; N dollar ; B 44 -87 457 727 ; -C 37 ; WX 833 ; N percent ; B 61 -13 772 676 ; -C 38 ; WX 778 ; N ampersand ; B 42 -13 750 676 ; -C 39 ; WX 333 ; N quoteright ; B 79 433 218 676 ; -C 40 ; WX 333 ; N parenleft ; B 48 -177 304 676 ; -C 41 ; WX 333 ; N parenright ; B 29 -177 285 676 ; -C 42 ; WX 500 ; N asterisk ; B 69 265 432 676 ; -C 43 ; WX 564 ; N plus ; B 30 0 534 506 ; -C 44 ; WX 250 ; N comma ; B 56 -141 195 102 ; -C 45 ; WX 333 ; N hyphen ; B 39 194 285 257 ; -C 46 ; WX 250 ; N period ; B 70 -11 181 100 ; -C 47 ; WX 278 ; N slash ; B -9 -14 287 676 ; -C 48 ; WX 500 ; N zero ; B 24 -14 476 676 ; -C 49 ; WX 500 ; N one ; B 111 0 394 676 ; -C 50 ; WX 500 ; N two ; B 30 0 475 676 ; -C 51 ; WX 500 ; N three ; B 43 -14 431 676 ; -C 52 ; WX 500 ; N four ; B 12 0 472 676 ; -C 53 ; WX 500 ; N five ; B 32 -14 438 688 ; -C 54 ; WX 500 ; N six ; B 34 -14 468 684 ; -C 55 ; WX 500 ; N seven ; B 20 -8 449 662 ; -C 56 ; WX 500 ; N eight ; B 56 -14 445 676 ; -C 57 ; WX 500 ; N nine ; B 30 -22 459 676 ; -C 58 ; WX 278 ; N colon ; B 81 -11 192 459 ; -C 59 ; WX 278 ; N semicolon ; B 80 -141 219 459 ; -C 60 ; WX 564 ; N less ; B 28 -10 536 516 ; -C 61 ; WX 564 ; N equal ; B 30 120 534 386 ; -C 62 ; WX 564 ; N greater ; B 28 -10 536 516 ; -C 63 ; WX 444 ; N question ; B 68 -8 414 676 ; -C 64 ; WX 921 ; N at ; B 116 -14 809 676 ; -C 65 ; WX 722 ; N A ; B 15 0 706 674 ; -C 66 ; WX 667 ; N B ; B 17 0 593 662 ; -C 67 ; WX 667 ; N C ; B 28 -14 633 676 ; -C 68 ; WX 722 ; N D ; B 16 0 685 662 ; -C 69 ; WX 611 ; N E ; B 12 0 597 662 ; -C 70 ; WX 556 ; N F ; B 12 0 546 662 ; -C 71 ; WX 722 ; N G ; B 32 -14 709 676 ; -C 72 ; WX 722 ; N H ; B 19 0 702 662 ; -C 73 ; WX 333 ; N I ; B 18 0 315 662 ; -C 74 ; WX 389 ; N J ; B 10 -14 370 662 ; -C 75 ; WX 722 ; N K ; B 34 0 723 662 ; -C 76 ; WX 611 ; N L ; B 12 0 598 662 ; -C 77 ; WX 889 ; N M ; B 12 0 863 662 ; -C 78 ; WX 722 ; N N ; B 12 -11 707 662 ; -C 79 ; WX 722 ; N O ; B 34 -14 688 676 ; -C 80 ; WX 556 ; N P ; B 16 0 542 662 ; -C 81 ; WX 722 ; N Q ; B 34 -178 701 676 ; -C 82 ; WX 667 ; N R ; B 17 0 659 662 ; -C 83 ; WX 556 ; N S ; B 42 -14 491 676 ; -C 84 ; WX 611 ; N T ; B 17 0 593 662 ; -C 85 ; WX 722 ; N U ; B 14 -14 705 662 ; -C 86 ; WX 722 ; N V ; B 16 -11 697 662 ; -C 87 ; WX 944 ; N W ; B 5 -11 932 662 ; -C 88 ; WX 722 ; N X ; B 10 0 704 662 ; -C 89 ; WX 722 ; N Y ; B 22 0 703 662 ; -C 90 ; WX 611 ; N Z ; B 9 0 597 662 ; -C 91 ; WX 333 ; N bracketleft ; B 88 -156 299 662 ; -C 92 ; WX 278 ; N backslash ; B -9 -14 287 676 ; -C 93 ; WX 333 ; N bracketright ; B 34 -156 245 662 ; -C 94 ; WX 469 ; N asciicircum ; B 24 297 446 662 ; -C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ; -C 96 ; WX 333 ; N quoteleft ; B 115 433 254 676 ; -C 97 ; WX 444 ; N a ; B 37 -10 442 460 ; -C 98 ; WX 500 ; N b ; B 3 -10 468 683 ; -C 99 ; WX 444 ; N c ; B 25 -10 412 460 ; -C 100 ; WX 500 ; N d ; B 27 -10 491 683 ; -C 101 ; WX 444 ; N e ; B 25 -10 424 460 ; -C 102 ; WX 333 ; N f ; B 20 0 383 683 ; -C 103 ; WX 500 ; N g ; B 28 -218 470 460 ; -C 104 ; WX 500 ; N h ; B 9 0 487 683 ; -C 105 ; WX 278 ; N i ; B 16 0 253 683 ; -C 106 ; WX 278 ; N j ; B -70 -218 194 683 ; -C 107 ; WX 500 ; N k ; B 7 0 505 683 ; -C 108 ; WX 278 ; N l ; B 19 0 257 683 ; -C 109 ; WX 778 ; N m ; B 16 0 775 460 ; -C 110 ; WX 500 ; N n ; B 16 0 485 460 ; -C 111 ; WX 500 ; N o ; B 29 -10 470 460 ; -C 112 ; WX 500 ; N p ; B 5 -217 470 460 ; -C 113 ; WX 500 ; N q ; B 24 -217 488 461 ; -C 114 ; WX 333 ; N r ; B 5 0 335 460 ; -C 115 ; WX 389 ; N s ; B 51 -10 348 459 ; -C 116 ; WX 278 ; N t ; B 13 -10 279 579 ; -C 117 ; WX 500 ; N u ; B 9 -10 479 450 ; -C 118 ; WX 500 ; N v ; B 19 -14 477 450 ; -C 119 ; WX 722 ; N w ; B 21 -14 694 450 ; -C 120 ; WX 500 ; N x ; B 17 0 479 450 ; -C 121 ; WX 500 ; N y ; B 14 -218 475 450 ; -C 122 ; WX 444 ; N z ; B 27 0 418 450 ; -C 123 ; WX 480 ; N braceleft ; B 100 -181 350 680 ; -C 124 ; WX 200 ; N bar ; B 67 -14 133 676 ; -C 125 ; WX 480 ; N braceright ; B 130 -181 380 680 ; -C 126 ; WX 541 ; N asciitilde ; B 40 186 502 320 ; -C 161 ; WX 333 ; N exclamdown ; B 97 -218 203 468 ; -C 162 ; WX 500 ; N cent ; B 53 -138 448 579 ; -C 163 ; WX 500 ; N sterling ; B 12 -8 490 676 ; -C 164 ; WX 167 ; N fraction ; B -168 -14 331 676 ; -C 165 ; WX 500 ; N yen ; B -53 0 512 662 ; -C 166 ; WX 500 ; N florin ; B 7 -189 490 676 ; -C 167 ; WX 500 ; N section ; B 70 -148 426 676 ; -C 168 ; WX 500 ; N currency ; B -22 58 522 602 ; -C 169 ; WX 180 ; N quotesingle ; B 48 431 133 676 ; -C 170 ; WX 444 ; N quotedblleft ; B 43 433 414 676 ; -C 171 ; WX 500 ; N guillemotleft ; B 42 33 456 416 ; -C 172 ; WX 333 ; N guilsinglleft ; B 63 33 285 416 ; -C 173 ; WX 333 ; N guilsinglright ; B 48 33 270 416 ; -C 174 ; WX 556 ; N fi ; B 31 0 521 683 ; -C 175 ; WX 556 ; N fl ; B 32 0 521 683 ; -C 177 ; WX 500 ; N endash ; B 0 201 500 250 ; -C 178 ; WX 500 ; N dagger ; B 59 -149 442 676 ; -C 179 ; WX 500 ; N daggerdbl ; B 58 -153 442 676 ; -C 180 ; WX 250 ; N periodcentered ; B 70 199 181 310 ; -C 182 ; WX 453 ; N paragraph ; B -22 -154 450 662 ; -C 183 ; WX 350 ; N bullet ; B 40 196 310 466 ; -C 184 ; WX 333 ; N quotesinglbase ; B 79 -141 218 102 ; -C 185 ; WX 444 ; N quotedblbase ; B 45 -141 416 102 ; -C 186 ; WX 444 ; N quotedblright ; B 30 433 401 676 ; -C 187 ; WX 500 ; N guillemotright ; B 44 33 458 416 ; -C 188 ; WX 1000 ; N ellipsis ; B 111 -11 888 100 ; -C 189 ; WX 1000 ; N perthousand ; B 7 -19 994 706 ; -C 191 ; WX 444 ; N questiondown ; B 30 -218 376 467 ; -C 193 ; WX 333 ; N grave ; B 19 507 242 678 ; -C 194 ; WX 333 ; N acute ; B 93 507 317 678 ; -C 195 ; WX 333 ; N circumflex ; B 11 507 322 674 ; -C 196 ; WX 333 ; N tilde ; B 1 532 331 638 ; -C 197 ; WX 333 ; N macron ; B 11 547 322 601 ; -C 198 ; WX 333 ; N breve ; B 26 507 307 664 ; -C 199 ; WX 333 ; N dotaccent ; B 118 523 217 622 ; -C 200 ; WX 333 ; N dieresis ; B 18 523 316 622 ; -C 202 ; WX 333 ; N ring ; B 67 512 266 711 ; -C 203 ; WX 333 ; N cedilla ; B 52 -215 261 0 ; -C 205 ; WX 333 ; N hungarumlaut ; B -3 507 377 678 ; -C 206 ; WX 333 ; N ogonek ; B 64 -165 249 0 ; -C 207 ; WX 333 ; N caron ; B 11 507 322 674 ; -C 208 ; WX 1000 ; N emdash ; B 0 201 1000 250 ; -C 225 ; WX 889 ; N AE ; B 0 0 863 662 ; -C 227 ; WX 276 ; N ordfeminine ; B 4 394 270 676 ; -C 232 ; WX 611 ; N Lslash ; B 12 0 598 662 ; -C 233 ; WX 722 ; N Oslash ; B 34 -80 688 734 ; -C 234 ; WX 889 ; N OE ; B 30 -6 885 668 ; -C 235 ; WX 310 ; N ordmasculine ; B 6 394 304 676 ; -C 241 ; WX 667 ; N ae ; B 38 -10 632 460 ; -C 245 ; WX 278 ; N dotlessi ; B 16 0 253 460 ; -C 248 ; WX 278 ; N lslash ; B 19 0 259 683 ; -C 249 ; WX 500 ; N oslash ; B 29 -112 470 551 ; -C 250 ; WX 722 ; N oe ; B 30 -10 690 460 ; -C 251 ; WX 500 ; N germandbls ; B 12 -9 468 683 ; -C -1 ; WX 722 ; N Yacute ; B 22 0 703 890 ; -C -1 ; WX 722 ; N Ucircumflex ; B 14 -14 705 886 ; -C -1 ; WX 722 ; N Ugrave ; B 14 -14 705 890 ; -C -1 ; WX 611 ; N Zcaron ; B 9 0 597 886 ; -C -1 ; WX 722 ; N Ydieresis ; B 22 0 703 834 ; -C -1 ; WX 300 ; N threesuperior ; B 15 262 291 676 ; -C -1 ; WX 722 ; N Uacute ; B 14 -14 705 890 ; -C -1 ; WX 300 ; N twosuperior ; B 1 270 296 676 ; -C -1 ; WX 722 ; N Udieresis ; B 14 -14 705 834 ; -C -1 ; WX 250 ; N middot ; B 70 199 181 310 ; -C -1 ; WX 300 ; N onesuperior ; B 57 270 248 676 ; -C -1 ; WX 444 ; N aacute ; B 37 -10 442 678 ; -C -1 ; WX 444 ; N agrave ; B 37 -10 442 678 ; -C -1 ; WX 444 ; N acircumflex ; B 37 -10 442 674 ; -C -1 ; WX 556 ; N Scaron ; B 42 -14 491 886 ; -C -1 ; WX 722 ; N Otilde ; B 34 -14 688 850 ; -C -1 ; WX 333 ; N sfthyphen ; B 39 194 285 257 ; -C -1 ; WX 444 ; N atilde ; B 37 -10 442 638 ; -C -1 ; WX 444 ; N aring ; B 37 -10 442 722 ; -C -1 ; WX 444 ; N adieresis ; B 37 -10 442 622 ; -C -1 ; WX 722 ; N Ograve ; B 34 -14 688 890 ; -C -1 ; WX 722 ; N Ocircumflex ; B 34 -14 688 886 ; -C -1 ; WX 722 ; N Odieresis ; B 34 -14 688 834 ; -C -1 ; WX 722 ; N Ntilde ; B 12 -11 707 850 ; -C -1 ; WX 444 ; N edieresis ; B 25 -10 424 622 ; -C -1 ; WX 444 ; N eacute ; B 25 -10 424 678 ; -C -1 ; WX 444 ; N egrave ; B 25 -10 424 678 ; -C -1 ; WX 333 ; N Icircumflex ; B 11 0 322 886 ; -C -1 ; WX 444 ; N ecircumflex ; B 25 -10 424 674 ; -C -1 ; WX 333 ; N Igrave ; B 18 0 315 890 ; -C -1 ; WX 333 ; N Iacute ; B 18 0 317 890 ; -C -1 ; WX 333 ; N Idieresis ; B 18 0 316 834 ; -C -1 ; WX 400 ; N degree ; B 57 390 343 676 ; -C -1 ; WX 611 ; N Ecircumflex ; B 12 0 597 886 ; -C -1 ; WX 564 ; N minus ; B 30 220 534 286 ; -C -1 ; WX 564 ; N multiply ; B 38 8 527 497 ; -C -1 ; WX 564 ; N divide ; B 30 -10 534 516 ; -C -1 ; WX 611 ; N Egrave ; B 12 0 597 890 ; -C -1 ; WX 980 ; N trademark ; B 30 256 957 662 ; -C -1 ; WX 722 ; N Oacute ; B 34 -14 688 890 ; -C -1 ; WX 500 ; N thorn ; B 5 -217 470 683 ; -C -1 ; WX 500 ; N eth ; B 29 -10 471 686 ; -C -1 ; WX 611 ; N Eacute ; B 12 0 597 890 ; -C -1 ; WX 444 ; N ccedilla ; B 25 -215 412 460 ; -C -1 ; WX 278 ; N idieresis ; B 11 0 269 622 ; -C -1 ; WX 278 ; N iacute ; B 16 0 290 678 ; -C -1 ; WX 278 ; N igrave ; B -8 0 253 678 ; -C -1 ; WX 564 ; N plusminus ; B 30 0 534 568 ; -C -1 ; WX 750 ; N onehalf ; B 31 -14 746 676 ; -C -1 ; WX 750 ; N onequarter ; B 37 -14 718 676 ; -C -1 ; WX 750 ; N threequarters ; B 15 -14 718 676 ; -C -1 ; WX 278 ; N icircumflex ; B -16 0 295 674 ; -C -1 ; WX 611 ; N Edieresis ; B 12 0 597 834 ; -C -1 ; WX 500 ; N ntilde ; B 16 0 485 638 ; -C -1 ; WX 722 ; N Aring ; B 15 0 706 915 ; -C -1 ; WX 500 ; N odieresis ; B 29 -10 470 622 ; -C -1 ; WX 500 ; N oacute ; B 29 -10 470 678 ; -C -1 ; WX 500 ; N ograve ; B 29 -10 470 678 ; -C -1 ; WX 500 ; N ocircumflex ; B 29 -10 470 674 ; -C -1 ; WX 500 ; N otilde ; B 29 -10 470 638 ; -C -1 ; WX 389 ; N scaron ; B 39 -10 350 674 ; -C -1 ; WX 500 ; N udieresis ; B 9 -10 479 622 ; -C -1 ; WX 500 ; N uacute ; B 9 -10 479 678 ; -C -1 ; WX 500 ; N ugrave ; B 9 -10 479 678 ; -C -1 ; WX 500 ; N ucircumflex ; B 9 -10 479 674 ; -C -1 ; WX 500 ; N yacute ; B 14 -218 475 678 ; -C -1 ; WX 444 ; N zcaron ; B 27 0 418 674 ; -C -1 ; WX 500 ; N ydieresis ; B 14 -218 475 622 ; -C -1 ; WX 760 ; N copyright ; B 38 -14 722 676 ; -C -1 ; WX 760 ; N registered ; B 38 -14 722 676 ; -C -1 ; WX 722 ; N Atilde ; B 15 0 706 850 ; -C -1 ; WX 250 ; N nbspace ; B 125 0 125 0 ; -C -1 ; WX 667 ; N Ccedilla ; B 28 -215 633 676 ; -C -1 ; WX 722 ; N Acircumflex ; B 15 0 706 886 ; -C -1 ; WX 722 ; N Agrave ; B 15 0 706 890 ; -C -1 ; WX 564 ; N logicalnot ; B 30 108 534 386 ; -C -1 ; WX 722 ; N Aacute ; B 15 0 706 890 ; -C -1 ; WX 722 ; N Eth ; B 16 0 685 662 ; -C -1 ; WX 200 ; N brokenbar ; B 67 -14 133 676 ; -C -1 ; WX 556 ; N Thorn ; B 16 0 542 662 ; -C -1 ; WX 722 ; N Adieresis ; B 15 0 706 834 ; -C -1 ; WX 500 ; N mu ; B 36 -218 512 450 ; -C -1 ; WX 250 ; N .notdef ; B 125 0 125 0 ; -EndCharMetrics -StartKernData -StartKernPairs 998 -KPX A C -53 -KPX A Ccedilla -57 -KPX A G -57 -KPX A O -58 -KPX A Odieresis -58 -KPX A Q -60 -KPX A T -54 -KPX A U -62 -KPX A Uacute -62 -KPX A Ucircumflex -62 -KPX A Udieresis -62 -KPX A Ugrave -62 -KPX A V -132 -KPX A W -113 -KPX A Y -81 -KPX A a -6 -KPX A b -19 -KPX A c -29 -KPX A ccedilla -29 -KPX A comma -3 -KPX A d -28 -KPX A e -27 -KPX A g -19 -KPX A guillemotleft -64 -KPX A guilsinglleft -74 -KPX A hyphen -23 -KPX A o -40 -KPX A period -10 -KPX A q -21 -KPX A quotedblright -91 -KPX A quoteright -116 -KPX A t -20 -KPX A u -28 -KPX A v -82 -KPX A w -73 -KPX A y -83 -KPX Aacute C -53 -KPX Aacute G -57 -KPX Aacute O -58 -KPX Aacute Q -60 -KPX Aacute T -54 -KPX Aacute U -62 -KPX Aacute V -132 -KPX Aacute W -113 -KPX Aacute Y -81 -KPX Aacute a -6 -KPX Aacute b -19 -KPX Aacute c -29 -KPX Aacute comma -3 -KPX Aacute d -28 -KPX Aacute e -27 -KPX Aacute g -19 -KPX Aacute guillemotleft -64 -KPX Aacute guilsinglleft -74 -KPX Aacute hyphen -23 -KPX Aacute o -40 -KPX Aacute period -10 -KPX Aacute q -21 -KPX Aacute quoteright -116 -KPX Aacute t -20 -KPX Aacute u -28 -KPX Aacute v -82 -KPX Aacute w -73 -KPX Aacute y -83 -KPX Acircumflex C -53 -KPX Acircumflex G -57 -KPX Acircumflex O -58 -KPX Acircumflex Q -60 -KPX Acircumflex T -54 -KPX Acircumflex U -62 -KPX Acircumflex V -132 -KPX Acircumflex W -113 -KPX Acircumflex Y -81 -KPX Acircumflex comma -3 -KPX Acircumflex period -10 -KPX Adieresis C -53 -KPX Adieresis G -57 -KPX Adieresis O -58 -KPX Adieresis Q -60 -KPX Adieresis T -54 -KPX Adieresis U -62 -KPX Adieresis V -132 -KPX Adieresis W -113 -KPX Adieresis Y -81 -KPX Adieresis a -6 -KPX Adieresis b -19 -KPX Adieresis c -29 -KPX Adieresis comma -3 -KPX Adieresis d -28 -KPX Adieresis g -19 -KPX Adieresis guillemotleft -64 -KPX Adieresis guilsinglleft -74 -KPX Adieresis hyphen -23 -KPX Adieresis o -40 -KPX Adieresis period -10 -KPX Adieresis q -21 -KPX Adieresis quotedblright -91 -KPX Adieresis quoteright -116 -KPX Adieresis t -20 -KPX Adieresis u -28 -KPX Adieresis v -82 -KPX Adieresis w -73 -KPX Adieresis y -83 -KPX Agrave C -53 -KPX Agrave G -57 -KPX Agrave O -58 -KPX Agrave Q -60 -KPX Agrave T -54 -KPX Agrave U -62 -KPX Agrave V -132 -KPX Agrave W -113 -KPX Agrave Y -81 -KPX Agrave comma -3 -KPX Agrave period -10 -KPX Aring C -53 -KPX Aring G -57 -KPX Aring O -58 -KPX Aring Q -60 -KPX Aring T -54 -KPX Aring U -62 -KPX Aring V -132 -KPX Aring W -113 -KPX Aring Y -81 -KPX Aring a -6 -KPX Aring b -19 -KPX Aring c -29 -KPX Aring comma -3 -KPX Aring d -28 -KPX Aring e -27 -KPX Aring g -19 -KPX Aring guillemotleft -64 -KPX Aring guilsinglleft -74 -KPX Aring hyphen -23 -KPX Aring o -40 -KPX Aring period -10 -KPX Aring q -21 -KPX Aring quotedblright -91 -KPX Aring quoteright -116 -KPX Aring t -20 -KPX Aring u -28 -KPX Aring v -82 -KPX Aring w -73 -KPX Aring y -83 -KPX Atilde C -53 -KPX Atilde G -57 -KPX Atilde O -58 -KPX Atilde Q -60 -KPX Atilde T -54 -KPX Atilde U -62 -KPX Atilde V -132 -KPX Atilde W -113 -KPX Atilde Y -81 -KPX Atilde comma -3 -KPX Atilde period -10 -KPX B A -51 -KPX B AE -43 -KPX B Aacute -51 -KPX B Acircumflex -51 -KPX B Adieresis -51 -KPX B Aring -51 -KPX B Atilde -51 -KPX B O -24 -KPX B OE -19 -KPX B Oacute -24 -KPX B Ocircumflex -24 -KPX B Odieresis -24 -KPX B Ograve -24 -KPX B Oslash -23 -KPX B V -65 -KPX B W -59 -KPX B Y -68 -KPX C A -23 -KPX C AE -15 -KPX C Aacute -23 -KPX C Adieresis -23 -KPX C Aring -23 -KPX C H -2 -KPX C K -10 -KPX C O -12 -KPX C Oacute -12 -KPX C Odieresis -12 -KPX Ccedilla A -27 -KPX D A -67 -KPX D Aacute -67 -KPX D Acircumflex -67 -KPX D Adieresis -67 -KPX D Agrave -67 -KPX D Aring -67 -KPX D Atilde -67 -KPX D J -41 -KPX D T -9 -KPX D V -70 -KPX D W -57 -KPX D X -64 -KPX D Y -73 -KPX F A -71 -KPX F Aacute -71 -KPX F Acircumflex -71 -KPX F Adieresis -71 -KPX F Agrave -71 -KPX F Aring -71 -KPX F Atilde -71 -KPX F J -13 -KPX F O -10 -KPX F Odieresis -10 -KPX F a -34 -KPX F aacute -34 -KPX F adieresis -10 -KPX F ae -36 -KPX F aring -34 -KPX F comma -51 -KPX F e -19 -KPX F eacute -19 -KPX F hyphen 3 -KPX F i -13 -KPX F j -20 -KPX F o -21 -KPX F oacute -21 -KPX F odieresis -21 -KPX F oe -21 -KPX F oslash -21 -KPX F period -58 -KPX F r -10 -KPX F u -11 -KPX G A -26 -KPX G AE -19 -KPX G Aacute -26 -KPX G Acircumflex -26 -KPX G Adieresis -26 -KPX G Agrave -26 -KPX G Aring -26 -KPX G Atilde -26 -KPX G T -21 -KPX G V -23 -KPX G W -18 -KPX G Y -26 -KPX J A -53 -KPX J AE -46 -KPX J Adieresis -53 -KPX J Aring -53 -KPX K C -44 -KPX K G -49 -KPX K O -50 -KPX K OE -44 -KPX K Oacute -50 -KPX K Odieresis -50 -KPX K S 1 -KPX K T 0 -KPX K a 2 -KPX K adieresis 2 -KPX K ae 0 -KPX K aring 2 -KPX K e -19 -KPX K hyphen -63 -KPX K o -31 -KPX K oacute -31 -KPX K odieresis -31 -KPX K u -19 -KPX K udieresis -19 -KPX K y -87 -KPX L A 0 -KPX L AE 6 -KPX L Aacute 0 -KPX L Adieresis 0 -KPX L Aring 0 -KPX L C 1 -KPX L Ccedilla 0 -KPX L G 0 -KPX L O -3 -KPX L Oacute -3 -KPX L Ocircumflex -3 -KPX L Odieresis -3 -KPX L Ograve -3 -KPX L Otilde -3 -KPX L S 5 -KPX L T -73 -KPX L U -26 -KPX L Udieresis -26 -KPX L V -115 -KPX L W -89 -KPX L Y -100 -KPX L hyphen 25 -KPX L quotedblright -100 -KPX L quoteright -125 -KPX L u -10 -KPX L udieresis -10 -KPX L y -57 -KPX N A -28 -KPX N AE -21 -KPX N Aacute -28 -KPX N Adieresis -28 -KPX N Aring -28 -KPX N C -17 -KPX N Ccedilla -17 -KPX N G -20 -KPX N O -20 -KPX N Oacute -20 -KPX N Odieresis -20 -KPX N a -27 -KPX N aacute -27 -KPX N adieresis -27 -KPX N ae -27 -KPX N aring -27 -KPX N comma -14 -KPX N e -17 -KPX N eacute -17 -KPX N o -21 -KPX N oacute -21 -KPX N odieresis -21 -KPX N oslash -20 -KPX N period -21 -KPX N u -25 -KPX N udieresis -25 -KPX O A -58 -KPX O AE -51 -KPX O Aacute -58 -KPX O Adieresis -58 -KPX O Aring -58 -KPX O T -9 -KPX O V -69 -KPX O W -55 -KPX O X -56 -KPX O Y -72 -KPX Oacute A -58 -KPX Oacute T -9 -KPX Oacute V -69 -KPX Oacute W -55 -KPX Oacute Y -72 -KPX Ocircumflex T -9 -KPX Ocircumflex V -69 -KPX Ocircumflex Y -72 -KPX Odieresis A -58 -KPX Odieresis T -9 -KPX Odieresis V -69 -KPX Odieresis W -55 -KPX Odieresis X -56 -KPX Odieresis Y -72 -KPX Ograve T -9 -KPX Ograve V -69 -KPX Ograve Y -72 -KPX Oslash A -58 -KPX Otilde T -9 -KPX Otilde V -69 -KPX Otilde Y -72 -KPX P A -90 -KPX P AE -91 -KPX P Aacute -90 -KPX P Adieresis -90 -KPX P Aring -90 -KPX P J -51 -KPX P a -18 -KPX P aacute -18 -KPX P adieresis -18 -KPX P ae -18 -KPX P aring -18 -KPX P comma -94 -KPX P e -23 -KPX P eacute -23 -KPX P hyphen -38 -KPX P o -25 -KPX P oacute -25 -KPX P odieresis -25 -KPX P oe -25 -KPX P oslash -25 -KPX P period -101 -KPX R C -42 -KPX R Ccedilla -42 -KPX R G -44 -KPX R O -45 -KPX R OE -40 -KPX R Oacute -45 -KPX R Odieresis -45 -KPX R T -34 -KPX R U -56 -KPX R Udieresis -56 -KPX R V -73 -KPX R W -68 -KPX R Y -76 -KPX R a -2 -KPX R aacute -2 -KPX R adieresis -2 -KPX R ae -5 -KPX R aring -2 -KPX R e -23 -KPX R eacute -23 -KPX R hyphen -52 -KPX R o -36 -KPX R oacute -36 -KPX R odieresis -36 -KPX R oe -31 -KPX R u -24 -KPX R uacute -24 -KPX R udieresis -24 -KPX R y -36 -KPX S A -37 -KPX S AE -30 -KPX S Aacute -37 -KPX S Adieresis -37 -KPX S Aring -37 -KPX S T -19 -KPX S V -27 -KPX S W -21 -KPX S Y -30 -KPX S t -20 -KPX T A -53 -KPX T AE -45 -KPX T Aacute -53 -KPX T Acircumflex -53 -KPX T Adieresis -53 -KPX T Agrave -53 -KPX T Aring -53 -KPX T Atilde -53 -KPX T C -8 -KPX T G -10 -KPX T J -18 -KPX T O -10 -KPX T OE -3 -KPX T Oacute -10 -KPX T Ocircumflex -10 -KPX T Odieresis -10 -KPX T Ograve -10 -KPX T Oslash -10 -KPX T Otilde -10 -KPX T S -10 -KPX T V 14 -KPX T W 20 -KPX T Y 11 -KPX T a -77 -KPX T ae -80 -KPX T c -87 -KPX T colon -88 -KPX T comma -74 -KPX T e -86 -KPX T g -91 -KPX T guillemotleft -115 -KPX T guilsinglleft -125 -KPX T hyphen -73 -KPX T i -18 -KPX T j -25 -KPX T o -90 -KPX T oslash -89 -KPX T period -82 -KPX T r -50 -KPX T s -73 -KPX T semicolon -87 -KPX T u -93 -KPX T v -105 -KPX T w -106 -KPX T y -102 -KPX U A -65 -KPX U AE -58 -KPX U Aacute -65 -KPX U Acircumflex -65 -KPX U Adieresis -65 -KPX U Aring -65 -KPX U Atilde -65 -KPX U comma -32 -KPX U m -33 -KPX U n -31 -KPX U p -28 -KPX U period -37 -KPX U r -27 -KPX Uacute A -65 -KPX Uacute comma -32 -KPX Uacute m -33 -KPX Uacute n -31 -KPX Uacute p -28 -KPX Uacute period -37 -KPX Uacute r -27 -KPX Ucircumflex A -65 -KPX Udieresis A -65 -KPX Udieresis b 21 -KPX Udieresis comma -32 -KPX Udieresis m -33 -KPX Udieresis n -31 -KPX Udieresis p -28 -KPX Udieresis period -37 -KPX Udieresis r -27 -KPX Ugrave A -65 -KPX V A -124 -KPX V AE -104 -KPX V Aacute -124 -KPX V Acircumflex -124 -KPX V Adieresis -124 -KPX V Agrave -124 -KPX V Aring -124 -KPX V Atilde -124 -KPX V C -64 -KPX V G -67 -KPX V O -67 -KPX V Oacute -67 -KPX V Ocircumflex -67 -KPX V Odieresis -67 -KPX V Ograve -67 -KPX V Oslash -66 -KPX V Otilde -67 -KPX V S -47 -KPX V T 10 -KPX V a -89 -KPX V ae -89 -KPX V colon -89 -KPX V comma -105 -KPX V e -85 -KPX V g -101 -KPX V guillemotleft -109 -KPX V guilsinglleft -119 -KPX V hyphen -69 -KPX V i -20 -KPX V o -89 -KPX V oslash -88 -KPX V period -112 -KPX V r -56 -KPX V semicolon -89 -KPX V u -51 -KPX V y -54 -KPX W A -113 -KPX W AE -98 -KPX W Aacute -113 -KPX W Acircumflex -113 -KPX W Adieresis -113 -KPX W Agrave -113 -KPX W Aring -113 -KPX W Atilde -113 -KPX W C -53 -KPX W G -56 -KPX W O -56 -KPX W Oacute -56 -KPX W Ocircumflex -56 -KPX W Odieresis -56 -KPX W Ograve -56 -KPX W Oslash -55 -KPX W Otilde -56 -KPX W S -41 -KPX W T 17 -KPX W a -80 -KPX W ae -81 -KPX W colon -81 -KPX W comma -89 -KPX W e -72 -KPX W g -91 -KPX W guillemotleft -97 -KPX W guilsinglleft -107 -KPX W hyphen -57 -KPX W i -13 -KPX W o -76 -KPX W oslash -75 -KPX W period -96 -KPX W r -47 -KPX W semicolon -81 -KPX W u -43 -KPX W y -45 -KPX X C -54 -KPX X O -59 -KPX X Odieresis -59 -KPX X Q -61 -KPX X a -7 -KPX X e -28 -KPX X hyphen -55 -KPX X o -41 -KPX X u -29 -KPX X y -96 -KPX Y A -74 -KPX Y AE -67 -KPX Y Aacute -74 -KPX Y Acircumflex -74 -KPX Y Adieresis -74 -KPX Y Agrave -74 -KPX Y Aring -74 -KPX Y Atilde -74 -KPX Y C -68 -KPX Y G -71 -KPX Y O -69 -KPX Y Oacute -69 -KPX Y Ocircumflex -69 -KPX Y Odieresis -69 -KPX Y Ograve -69 -KPX Y Oslash -69 -KPX Y Otilde -69 -KPX Y S -44 -KPX Y T 13 -KPX Y a -99 -KPX Y ae -102 -KPX Y colon -109 -KPX Y comma -96 -KPX Y e -103 -KPX Y g -112 -KPX Y guillemotleft -135 -KPX Y guilsinglleft -145 -KPX Y hyphen -98 -KPX Y i -17 -KPX Y o -107 -KPX Y oslash -106 -KPX Y p -88 -KPX Y period -103 -KPX Y semicolon -108 -KPX Y u -78 -KPX Y v -86 -KPX Z v -48 -KPX Z y -50 -KPX a j -26 -KPX a quoteright -40 -KPX a v -30 -KPX a w -31 -KPX a y -32 -KPX aacute v -30 -KPX aacute w -31 -KPX aacute y -32 -KPX adieresis v -30 -KPX adieresis w -31 -KPX adieresis y -32 -KPX ae v -27 -KPX ae w -28 -KPX ae y -30 -KPX agrave v -30 -KPX agrave w -31 -KPX agrave y -32 -KPX aring v -30 -KPX aring w -31 -KPX aring y -32 -KPX b v -27 -KPX b w -28 -KPX b y -32 -KPX c h -15 -KPX c k -20 -KPX comma one -52 -KPX comma quotedblright -29 -KPX comma quoteright -53 -KPX e quoteright -30 -KPX e t -10 -KPX e v -27 -KPX e w -28 -KPX e x -35 -KPX e y -30 -KPX eacute v -27 -KPX eacute w -28 -KPX eacute y -30 -KPX ecircumflex v -27 -KPX ecircumflex w -28 -KPX ecircumflex y -30 -KPX eight four 0 -KPX eight one -63 -KPX eight seven -15 -KPX f a -24 -KPX f aacute -24 -KPX f adieresis 12 -KPX f ae -25 -KPX f aring -7 -KPX f e -34 -KPX f eacute -34 -KPX f f 6 -KPX f i 15 -KPX f j 8 -KPX f l 44 -KPX f o -38 -KPX f oacute -38 -KPX f odieresis -1 -KPX f oe -37 -KPX f oslash -38 -KPX f quoteright 17 -KPX f s -21 -KPX f t 10 -KPX five four -9 -KPX five one -70 -KPX five seven -36 -KPX four four 14 -KPX four one -75 -KPX four seven -42 -KPX g a -18 -KPX g adieresis -18 -KPX g ae -18 -KPX g aring -18 -KPX g e -24 -KPX g eacute -24 -KPX g l -7 -KPX g oacute -26 -KPX g odieresis -26 -KPX g r 11 -KPX guillemotright A -62 -KPX guillemotright AE -61 -KPX guillemotright Aacute -62 -KPX guillemotright Adieresis -62 -KPX guillemotright Aring -62 -KPX guillemotright T -114 -KPX guillemotright V -117 -KPX guillemotright W -95 -KPX guillemotright Y -138 -KPX guilsinglright A -72 -KPX guilsinglright AE -71 -KPX guilsinglright Aacute -72 -KPX guilsinglright Adieresis -72 -KPX guilsinglright Aring -72 -KPX guilsinglright T -124 -KPX guilsinglright V -128 -KPX guilsinglright W -105 -KPX guilsinglright Y -149 -KPX h quoteright -38 -KPX h y -30 -KPX hyphen A -27 -KPX hyphen AE -25 -KPX hyphen Aacute -27 -KPX hyphen Adieresis -27 -KPX hyphen Aring -27 -KPX hyphen T -77 -KPX hyphen V -82 -KPX hyphen W -59 -KPX hyphen Y -108 -KPX i T -28 -KPX i j -36 -KPX k a 1 -KPX k aacute 1 -KPX k adieresis 1 -KPX k ae -1 -KPX k aring 1 -KPX k comma 4 -KPX k e -19 -KPX k eacute -19 -KPX k g -11 -KPX k hyphen -64 -KPX k o -32 -KPX k oacute -32 -KPX k odieresis -32 -KPX k period -2 -KPX k s 5 -KPX k u 14 -KPX k udieresis 14 -KPX l v -28 -KPX l y -25 -KPX m p -9 -KPX m v -30 -KPX m w -31 -KPX m y -31 -KPX n T -55 -KPX n p -13 -KPX n quoteright -40 -KPX n v -30 -KPX n w -31 -KPX n y -31 -KPX nine four -7 -KPX nine one -63 -KPX nine seven -6 -KPX o T -91 -KPX o quoteright -34 -KPX o t -9 -KPX o v -36 -KPX o w -36 -KPX o x -36 -KPX o y -39 -KPX oacute v -36 -KPX oacute w -36 -KPX oacute y -39 -KPX ocircumflex t -9 -KPX odieresis t -9 -KPX odieresis v -36 -KPX odieresis w -36 -KPX odieresis x -36 -KPX odieresis y -39 -KPX ograve v -36 -KPX ograve w -36 -KPX ograve y -39 -KPX one comma -48 -KPX one eight -68 -KPX one five -37 -KPX one four -72 -KPX one nine -61 -KPX one one -78 -KPX one period -55 -KPX one seven -78 -KPX one six -66 -KPX one three -41 -KPX one two -34 -KPX one zero -54 -KPX p t -6 -KPX p y -28 -KPX period one -61 -KPX period quotedblright -34 -KPX period quoteright -58 -KPX q c -8 -KPX q u -12 -KPX quotedblbase A 12 -KPX quotedblbase AE 19 -KPX quotedblbase T -60 -KPX quotedblbase V -105 -KPX quotedblbase W -76 -KPX quotedblbase Y -87 -KPX quotedblleft A -86 -KPX quotedblleft AE -91 -KPX quotedblleft Aacute -86 -KPX quotedblleft Adieresis -86 -KPX quotedblleft Aring -86 -KPX quotedblleft T 14 -KPX quotedblleft V 1 -KPX quotedblleft W 7 -KPX quotedblleft Y -1 -KPX quotedblright A -94 -KPX quotedblright AE -99 -KPX quotedblright Aacute -94 -KPX quotedblright Adieresis -94 -KPX quotedblright Aring -94 -KPX quotedblright T 11 -KPX quotedblright V 0 -KPX quotedblright W 6 -KPX quotedblright Y -2 -KPX quoteleft A -111 -KPX quoteleft AE -115 -KPX quoteleft Aacute -111 -KPX quoteleft Adieresis -111 -KPX quoteleft Aring -111 -KPX quoteleft T -9 -KPX quoteleft V -23 -KPX quoteleft W -17 -KPX quoteleft Y -26 -KPX quoteright A -130 -KPX quoteright AE -135 -KPX quoteright Aacute -130 -KPX quoteright Adieresis -130 -KPX quoteright Aring -130 -KPX quoteright comma -71 -KPX quoteright d -57 -KPX quoteright o -54 -KPX quoteright period -78 -KPX quoteright r -44 -KPX quoteright s -47 -KPX quoteright t -44 -KPX quoteright v -47 -KPX quoteright w -47 -KPX quoteright y -45 -KPX r a -2 -KPX r aacute -2 -KPX r acircumflex -2 -KPX r adieresis -2 -KPX r ae -3 -KPX r agrave -2 -KPX r aring -2 -KPX r c -9 -KPX r ccedilla -8 -KPX r colon -7 -KPX r comma -41 -KPX r d -10 -KPX r e -5 -KPX r eacute -5 -KPX r ecircumflex -5 -KPX r egrave -5 -KPX r f 19 -KPX r g -15 -KPX r h -6 -KPX r hyphen -46 -KPX r i 20 -KPX r j 14 -KPX r k -10 -KPX r l -18 -KPX r m 20 -KPX r n 22 -KPX r o -8 -KPX r oacute -8 -KPX r ocircumflex -8 -KPX r odieresis -8 -KPX r oe -7 -KPX r ograve -8 -KPX r oslash -7 -KPX r p 25 -KPX r period -48 -KPX r q -10 -KPX r quoteright -19 -KPX r r 26 -KPX r s 0 -KPX r semicolon -7 -KPX r t 23 -KPX r u 19 -KPX r v 20 -KPX r w 19 -KPX r x 17 -KPX r y 22 -KPX r z 2 -KPX s quoteright -38 -KPX s t -15 -KPX seven colon -68 -KPX seven comma -72 -KPX seven eight -40 -KPX seven five -59 -KPX seven four -63 -KPX seven one -56 -KPX seven period -79 -KPX seven seven -20 -KPX seven six -46 -KPX seven three -35 -KPX seven two -31 -KPX six four 12 -KPX six one -74 -KPX six seven -29 -KPX t S 2 -KPX t a 10 -KPX t aacute 10 -KPX t adieresis 10 -KPX t ae 9 -KPX t aring 10 -KPX t colon -8 -KPX t e 0 -KPX t eacute 0 -KPX t h 10 -KPX t o -8 -KPX t oacute -8 -KPX t odieresis -8 -KPX t quoteright -29 -KPX t semicolon -8 -KPX three four -6 -KPX three one -76 -KPX three seven -29 -KPX two four 0 -KPX two one -60 -KPX two seven -16 -KPX u quoteright -36 -KPX v a -24 -KPX v aacute -24 -KPX v acircumflex -24 -KPX v adieresis -24 -KPX v ae -24 -KPX v agrave -24 -KPX v aring -24 -KPX v atilde -24 -KPX v c -37 -KPX v colon -20 -KPX v comma -69 -KPX v e -35 -KPX v eacute -35 -KPX v ecircumflex -35 -KPX v egrave -35 -KPX v g -41 -KPX v hyphen -28 -KPX v l -31 -KPX v o -37 -KPX v oacute -37 -KPX v odieresis -37 -KPX v ograve -37 -KPX v oslash -38 -KPX v period -76 -KPX v s -20 -KPX v semicolon -20 -KPX w a -26 -KPX w aacute -26 -KPX w acircumflex -26 -KPX w adieresis -26 -KPX w ae -27 -KPX w agrave -26 -KPX w aring -26 -KPX w atilde -26 -KPX w c -33 -KPX w colon -23 -KPX w comma -64 -KPX w e -31 -KPX w eacute -31 -KPX w ecircumflex -31 -KPX w egrave -31 -KPX w g -43 -KPX w hyphen -24 -KPX w l -33 -KPX w o -36 -KPX w oacute -36 -KPX w odieresis -36 -KPX w ograve -36 -KPX w oslash -34 -KPX w period -71 -KPX w s -23 -KPX w semicolon -23 -KPX x a -11 -KPX x c -34 -KPX x e -32 -KPX x eacute -32 -KPX x o -45 -KPX x q -26 -KPX y a -30 -KPX y aacute -30 -KPX y acircumflex -30 -KPX y adieresis -30 -KPX y ae -31 -KPX y agrave -30 -KPX y aring -30 -KPX y atilde -30 -KPX y c -37 -KPX y colon -23 -KPX y comma -66 -KPX y e -35 -KPX y eacute -35 -KPX y ecircumflex -35 -KPX y egrave -35 -KPX y g -48 -KPX y hyphen -27 -KPX y l -32 -KPX y o -39 -KPX y oacute -39 -KPX y odieresis -39 -KPX y ograve -39 -KPX y oslash -38 -KPX y period -73 -KPX y s -26 -KPX y semicolon -23 -KPX zero four 12 -KPX zero one -55 -KPX zero seven -5 -EndKernPairs -EndKernData -EndFontMetrics diff --git a/mkinstalldirs b/mkinstalldirs deleted file mode 100644 index fef1eb9418..0000000000 --- a/mkinstalldirs +++ /dev/null @@ -1,36 +0,0 @@ -#! /bin/sh -# mkinstalldirs --- make directory hierarchy -# Author: Noah Friedman -# Created: 1993-05-16 -# Last modified: 1994-03-25 -# Public domain - -errstatus=0 - -for file in ${1+"$@"} ; do - set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` - shift - - pathcomp= - for d in ${1+"$@"} ; do - pathcomp="$pathcomp$d" - case "$pathcomp" in - -* ) pathcomp=./$pathcomp ;; - esac - - if test ! -d "$pathcomp"; then - echo "mkdir $pathcomp" 1>&2 - mkdir "$pathcomp" > /dev/null 2>&1 || lasterr=$? - fi - - if test ! -d "$pathcomp"; then - errstatus=$lasterr - fi - - pathcomp="$pathcomp/" - done -done - -exit $errstatus - -# mkinstalldirs ends here diff --git a/samples/Makefile b/samples/Makefile deleted file mode 100644 index 57ec5f3f82..0000000000 --- a/samples/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../setup/general/makedirs diff --git a/samples/bombs/.cvsignore b/samples/bombs/.cvsignore deleted file mode 100644 index 7957c41216..0000000000 --- a/samples/bombs/.cvsignore +++ /dev/null @@ -1,3 +0,0 @@ -Linux -linux-gnu -linux \ No newline at end of file diff --git a/samples/bombs/Makefile b/samples/bombs/Makefile deleted file mode 100644 index bccce53f76..0000000000 --- a/samples/bombs/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../../setup/general/makeapp diff --git a/samples/bombs/Makefile.in b/samples/bombs/Makefile.in deleted file mode 100644 index f72a39f7c2..0000000000 --- a/samples/bombs/Makefile.in +++ /dev/null @@ -1,26 +0,0 @@ -# WXXT base directory -WXBASEDIR=@WXBASEDIR@ - -# set the OS type for compilation -OS=@OS@ -# compile a library only -RULE=bin - -# define library name -BIN_TARGET=bombs -# define library sources -BIN_SRC=\ -bombs.cpp bombs1.cpp game.cpp - -#define library objects -BIN_OBJ=\ -bombs.o bombs1.o game.o - -# additional things needed to link -BIN_LINK= - -# additional things needed to compile -ADD_COMPILE= - -# include the definitions now -include ../../../template.mak diff --git a/samples/bombs/bombs.bmp b/samples/bombs/bombs.bmp deleted file mode 100644 index 0fffb1f4d39509c195f1f9d4eb0b46321b4eda22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 654 zcmZXRJ#xe_2!%;z3p$T)uw~AXKG#W2NflqoM@s2V`vH<=&pw0T@grI2`{(ad62Gip z=(FpGJn%rz7rCw`f{0leR$SC%-**x%MOq6F<%YX%%sUYW>OrHC5p z8m5q~*<4(6zfqnIdMW3ie*V}%-}v~izM;9>C=LrjCLqWJ1et&!6A)wqf=ob=jwQ*w z&QcQ?1q;)R8;$aqt~m4RX#Zr_^Zz4l@R7#Sx*ppMn8?;>>xe;n@H!%&#ka$*@1+bZ R6jYa5f4;HH-L7|fvKNE-S8V_Q diff --git a/samples/bombs/bombs.cpp b/samples/bombs/bombs.cpp deleted file mode 100644 index cd652bcd46..0000000000 --- a/samples/bombs/bombs.cpp +++ /dev/null @@ -1,252 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: bombs.cpp -// Purpose: Bombs game -// Author: P. Foggia 1996 -// Modified by: -// Created: 1996 -// RCS-ID: $Id$ -// Copyright: (c) 1996 P. Foggia -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation -#endif - -#include "wx/wxprec.h" - -#ifndef WX_PRECOMP - #include "wx/wx.h" -#endif //precompiled headers - -#include "bombs.h" - -#include -#include - -#if defined(__WXGTK__) || defined(__WXMOTIF__) -#include "bombs.xpm" -#endif - -IMPLEMENT_APP(AppClass) - -// Called to initialize the program -bool AppClass::OnInit() -{ - srand((unsigned)time(NULL)); - - // Initialize all the top-level window members to NULL. - BombsFrame = NULL; - level=IDM_EASY; - - BombsFrame = - new BombsFrameClass(NULL, "wxBombs", wxPoint(155, 165), wxSize(300, 300), wxMINIMIZE_BOX | wxSYSTEM_MENU | wxCAPTION); - - int xmax=BombsFrame->BombsCanvas->field_width*BombsFrame->BombsCanvas->x_cell*X_UNIT; - int ymax=BombsFrame->BombsCanvas->field_height*BombsFrame->BombsCanvas->y_cell*Y_UNIT; - BombsFrame->SetClientSize(xmax, ymax); - - return TRUE; -} - -BEGIN_EVENT_TABLE(BombsFrameClass, wxFrame) - EVT_MENU(IDM_EASY, BombsFrameClass::OnEasy) - EVT_MENU(IDM_MEDIUM, BombsFrameClass::OnMedium) - EVT_MENU(IDM_DIFFICULT, BombsFrameClass::OnDifficult) - EVT_MENU(IDM_EXIT, BombsFrameClass::OnExit) - EVT_MENU(IDM_ABOUT, BombsFrameClass::OnAbout) - EVT_MENU(IDM_RESTART, BombsFrameClass::OnRestart) - EVT_CLOSE(BombsFrameClass::OnCloseWindow) -END_EVENT_TABLE() - -BombsFrameClass::BombsFrameClass(wxFrame *parent, const wxString& title, const wxPoint& pos, const wxSize& size, long style): - wxFrame(parent, -1, title, pos, size, style) -{ - // Initialize child subwindow members. - BombsCanvas = NULL; - - SetIcon(wxICON(bombs)); - - CreateStatusBar(); - - // Create a menu bar for the frame - wxMenuBar *menuBar1 = new wxMenuBar; - wxMenu *menu1 = new wxMenu; - menu1->Append(IDM_EXIT, "E&xit"); // , "Quit the program"); - menu1->AppendSeparator(); - menu1->Append(IDM_ABOUT, "&About..."); // , "Infos on wxBombs"); - menuBar1->Append(menu1, "&File"); - wxMenu *menu2 = new wxMenu; - menu2->Append(IDM_RESTART, "&Restart"); // , "Clear the play field"); - menu2->AppendSeparator(); - menu2->Append(IDM_EASY, "&Easy", wxEmptyString, TRUE); // "10x10 play field", TRUE); - menu2->Append(IDM_MEDIUM, "&Medium", wxEmptyString, TRUE); // "15x15 play field", TRUE); - menu2->Append(IDM_DIFFICULT, "&Difficult", wxEmptyString, TRUE); // "25x20 play field", TRUE); - menuBar1->Append(menu2, "&Game"); - SetMenuBar(menuBar1); - menuBar=menuBar1; - menuBar->Check(wxGetApp().level, TRUE); - - // Create child subwindows. - BombsCanvas = new BombsCanvasClass(this); - - // Ensure the subwindows get resized o.k. -// OnSize(width, height); - - // Centre frame on the screen. - Centre(wxBOTH); - - // Show the frame. - Show(TRUE); -} - -BombsFrameClass::~BombsFrameClass(void) -{ -} - -void BombsFrameClass::OnCloseWindow(wxCloseEvent& event) -{ - this->Destroy(); -} - -void BombsFrameClass::OnExit(wxCommandEvent& event) -{ - this->Destroy(); -} - -void BombsFrameClass::OnRestart(wxCommandEvent& event) -{ - BombsCanvas->UpdateFieldSize(); - int xmax=BombsCanvas->field_width*BombsCanvas->x_cell*X_UNIT; - int ymax=BombsCanvas->field_height*BombsCanvas->y_cell*Y_UNIT; - wxGetApp().BombsFrame->SetClientSize(xmax, ymax); -} - -void BombsFrameClass::OnAbout(wxCommandEvent& event) -{ - wxMessageBox("wxBombs (c) 1996 by P. Foggia\n", "About wxBombs"); -} - -void BombsFrameClass::OnEasy(wxCommandEvent& event) -{ - menuBar->Check(wxGetApp().level, FALSE); - wxGetApp().level=IDM_EASY; - menuBar->Check(wxGetApp().level, TRUE); -} - -void BombsFrameClass::OnMedium(wxCommandEvent& event) -{ - menuBar->Check(wxGetApp().level, FALSE); - wxGetApp().level=IDM_MEDIUM; - menuBar->Check(wxGetApp().level, TRUE); -} - -void BombsFrameClass::OnDifficult(wxCommandEvent& event) -{ - menuBar->Check(wxGetApp().level, FALSE); - wxGetApp().level=IDM_DIFFICULT; - menuBar->Check(wxGetApp().level, TRUE); -} - -BEGIN_EVENT_TABLE(BombsCanvasClass, wxWindow) - EVT_PAINT(BombsCanvasClass::OnPaint) - EVT_MOUSE_EVENTS(BombsCanvasClass::OnEvent) -END_EVENT_TABLE() - -BombsCanvasClass::BombsCanvasClass(wxFrame *parent, const wxPoint& pos, const wxSize& size, long style): - wxWindow(parent, -1, pos, size, style) -{ - int sx, sy; - wxClientDC dc(this); - wxFont font= BOMBS_FONT; - dc.SetFont(font); - - long chw, chh; - char buf[]="M"; - - dc.GetTextExtent(buf, &chw, &chh); - dc.SetFont(wxNullFont); - - dc.SetMapMode(MM_METRIC); - - int xcm = dc.LogicalToDeviceX(10.0); - int ycm = dc.LogicalToDeviceY(10.0); - // To have a square cell, there must be : - // sx*ycm == sy*xcm - if (chw*ycm < chh*xcm) - { sy=chh; - sx=chh*xcm/ycm; - } - else - { sx=chw; - sy=chw*ycm/xcm; - } - x_cell = (sx+3+X_UNIT)/X_UNIT; - y_cell = (sy+3+Y_UNIT)/Y_UNIT; - dc.SetMapMode(MM_TEXT); - bmp=NULL; - UpdateFieldSize(); -} - -BombsCanvasClass::~BombsCanvasClass(void) -{ - if (bmp) - delete bmp; -} - -// Called when canvas needs to be repainted. -void BombsCanvasClass::OnPaint(wxPaintEvent& event) -{ - wxPaintDC dc(this); - - // Insert your drawing code here. - if (!bmp) - { bmp=new wxBitmap(field_width*x_cell*X_UNIT+1, - field_height*y_cell*Y_UNIT+1); - if (bmp) - { wxMemoryDC memDC; - memDC.SelectObject(* bmp); - DrawField(&memDC, 0, 0, field_width-1, field_height-1); - memDC.SelectObject(wxNullBitmap); - } - } - if (bmp) - { wxMemoryDC memDC; - memDC.SelectObject(* bmp); - dc.Blit(0, 0, field_width*x_cell*X_UNIT+1, - field_height*y_cell*Y_UNIT+1, - &memDC, 0, 0, wxCOPY); - memDC.SelectObject(wxNullBitmap); - } - else - DrawField(& dc, 0, 0, field_width-1, field_height-1); -} - -// Updates the field size depending on wxGetApp().level and -// redraws the canvas -void BombsCanvasClass::UpdateFieldSize() - { field_width=20; - field_height=20; - - switch(wxGetApp().level) - { case IDM_EASY: - field_width=10; - field_height=10; - break; - case IDM_MEDIUM: - field_width=15; - field_height=15; - break; - case IDM_DIFFICULT: - field_width=25; - field_height=20; - break; - } - wxGetApp().Game.Init(field_width, field_height); - - if (bmp) - delete bmp; - bmp=NULL; - - wxWindow::Refresh(); - } diff --git a/samples/bombs/bombs.def b/samples/bombs/bombs.def deleted file mode 100644 index a0dc76486d..0000000000 --- a/samples/bombs/bombs.def +++ /dev/null @@ -1,14 +0,0 @@ -; bombs -; Generated by wxBuilder -; -NAME bombsapp -DESCRIPTION 'A wxWindows application' -; -EXETYPE WINDOWS -STUB 'WINSTUB.EXE' -; -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE -; -HEAPSIZE 1024 -STACKSIZE 8192 diff --git a/samples/bombs/bombs.h b/samples/bombs/bombs.h deleted file mode 100644 index 9684acac88..0000000000 --- a/samples/bombs/bombs.h +++ /dev/null @@ -1,119 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: bombs.h -// Purpose: Bombs game -// Author: P. Foggia 1996 -// Modified by: -// Created: 1996 -// RCS-ID: $Id$ -// Copyright: (c) 1996 P. Foggia -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -#ifndef _INC_BOMBS_H -#define _INC_BOMBS_H - -#include "game.h" - -/* - * Forward declarations of all top-level window classes. - */ -class BombsFrameClass; -class AboutFrameClass; - -/* - * Class representing the entire Application - */ -class AppClass: public wxApp -{ - public: - BombsFrameClass *BombsFrame; - int level; - BombsGame Game; - - bool OnInit(); -}; - -DECLARE_APP(AppClass) - -class BombsCanvasClass; - -class BombsFrameClass: public wxFrame -{ - private: - protected: - public: - // Subwindows for reference within the program. - BombsCanvasClass *BombsCanvas; - wxMenuBar *menuBar; - - // Constructor and destructor - BombsFrameClass(wxFrame *parent, const wxString& title, const wxPoint& pos, const wxSize& size, long style); - ~BombsFrameClass(void); - - void OnCloseWindow(wxCloseEvent& event); - void OnExit(wxCommandEvent& event); - void OnRestart(wxCommandEvent& event); - void OnAbout(wxCommandEvent& event); - void OnEasy(wxCommandEvent& event); - void OnMedium(wxCommandEvent& event); - void OnDifficult(wxCommandEvent& event); - -DECLARE_EVENT_TABLE() -}; - -/* Menu identifiers - */ -// File -#define BOMBSFRAMECLASS_FILE 1 -// E&xit -#define IDM_EXIT 2 -// About... -#define IDM_ABOUT 3 -// Game -#define BOMBSFRAMECLASS_GAME 4 -// &Restart -#define IDM_RESTART 5 -// &Easy -#define IDM_EASY 6 -// &Medium -#define IDM_MEDIUM 7 -// &Difficult -#define IDM_DIFFICULT 8 - -class BombsCanvasClass: public wxWindow -{ - private: - protected: - public: - int field_width, field_height; - int x_cell, y_cell; - wxBitmap *bmp; - // Constructor and destructor - BombsCanvasClass(wxFrame *parent, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0); - ~BombsCanvasClass(void); - - void OnPaint(wxPaintEvent& event); - void DrawField(wxDC *, int xc1, int yc1, int xc2, int yc2); - void Refresh(int xc1, int yc1, int xc2, int yc2); - void OnEvent(wxMouseEvent& event); - void UpdateFieldSize(); - -DECLARE_EVENT_TABLE() -}; - -/* Menu identifiers - */ - -/* The following sizes should probably be redefined */ -/* dimensions of a scroll unit, in pixels */ -#define X_UNIT 4 -#define Y_UNIT 4 - -/* the dimensions of a cell, in scroll units are in - * BombsCanvasClass::x_cell and y_cell - */ - -#define BOMBS_FONT wxFont(14, wxROMAN, wxNORMAL, wxNORMAL) - -#endif /* mutual exclusion */ - diff --git a/samples/bombs/bombs.ico b/samples/bombs/bombs.ico deleted file mode 100644 index 249893a7e33a18bb18f6ad44ae319b6a3c494693..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmaKqJ#xe#429*8nW*z_lXhL^2Q%UD5`81i7Te>5k1T34$PM-A;LO&RR$i%lS zCvkkgh`gge-~z93l2=9%!}lD96OUO{j7*`)zVA3nh?L?p$mdH8nw6F8Kzj~4<{Aqb zRcBSXzeb9v!K|(-A~lk$tx>OsM}j_tvr*f>7tlX;|F2fia<(4q8Uq=?Kn5_70SsgS z0~x?T1~8C@IgD|fxptrj%yiRF)Wf~IlId4Nx#2zE|KHt)-Q8$X&&M_vOk^vhHF%@5 z+jWb$mb@MIcwb7xoST6ulo2foK|iU0rr diff --git a/samples/bombs/bombs.rc b/samples/bombs/bombs.rc deleted file mode 100644 index 9b852ccc9f..0000000000 --- a/samples/bombs/bombs.rc +++ /dev/null @@ -1,3 +0,0 @@ -bombs ICON "bombs.ico" - -#include "wx/msw/wx.rc" diff --git a/samples/bombs/bombs.xpm b/samples/bombs/bombs.xpm deleted file mode 100644 index 9708aeaee5..0000000000 --- a/samples/bombs/bombs.xpm +++ /dev/null @@ -1,44 +0,0 @@ -/* XPM */ -static char *bombs_xpm[] = { -/* columns rows colors chars-per-pixel */ -"32 32 6 1", -" c Black", -". c Blue", -"X c #00bf00", -"o c Red", -"O c Yellow", -"+ c Gray100", -/* pixels */ -" ", -" oooooo +++++++++++++++++++++++ ", -" oooooo +++++++++++++++++++++++ ", -" oooooo +++++++++++++++++++++++ ", -" oooooo +++++++++++++++++++++++ ", -" oooooo +++++++++++++++++++++++ ", -" oooooo +++++++++++++++++++++++ ", -" oooooo +++++++++++++++++++++++ ", -" ", -" ++++++ ++++++++++++++++++ .... ", -" ++++++ ++++++++++++++++++ .... ", -" ++++++ ++++++++++++++++++ .... ", -" ++++++ ++++++++++++++++++ .... ", -" ++++++ ++++++++++++++++++ .... ", -" ++++++ ++++++++++++++++++ ", -" ++++++ ++++++++++++++++++ ++++ ", -" ++++++ ++++++++++++++++++ ++++ ", -" ++++++ ++++++++++++++++++ ++++ ", -" ++++++ ++++++++++++++++++ ++++ ", -" ++++++ ++++++++++++++++++ ++++ ", -" ++++++ ++++++++++++++++++ ++++ ", -" ++++++ ++++++++++++++++++ ++++ ", -" ++++++ ++++++++++++++++++ ++++ ", -" ++++++ ++++++++++++++++++ ++++ ", -" ++++++ ++++ ", -" ++++++ OOOOOOOOOOOO XXXXX ++++ ", -" ++++++ OOOOOOOOOOOO XXXXX ++++ ", -" ++++++ OOOOOOOOOOOO XXXXX ++++ ", -" ++++++ OOOOOOOOOOOO XXXXX ++++ ", -" ++++++ OOOOOOOOOOOO XXXXX ++++ ", -" ++++++ OOOOOOOOOOOO XXXXX ++++ ", -" " -}; diff --git a/samples/bombs/bombs1.cpp b/samples/bombs/bombs1.cpp deleted file mode 100644 index 38ff757140..0000000000 --- a/samples/bombs/bombs1.cpp +++ /dev/null @@ -1,205 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: bombs1.cpp -// Purpose: Bombs game -// Author: P. Foggia 1996 -// Modified by: -// Created: 1996 -// RCS-ID: $Id$ -// Copyright: (c) 1996 P. Foggia -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -/* - * implementation of the methods DrawField and OnEvent of the - * class BombsCanvas - */ - -#ifdef __GNUG__ -#pragma implementation -#endif - -#include "wx/wxprec.h" - -#ifndef WX_PRECOMP - #include "wx/wx.h" -#endif //precompiled headers - -#include "bombs.h" - -/*-------- BombCanvasClass::DrawField(dc, xc1, yc1, xc2, yc2) -------*/ -/* Draws the field on the device context dc */ -/* xc1,yc1 etc. are the (inclusive) limits of the area to be drawn, */ -/* expressed in cells. */ -/*---------------------------------------------------------------------*/ -void BombsCanvasClass::DrawField(wxDC *dc, int xc1, int yc1, int xc2, int yc2) -{ int x,y,xmax,ymax; - char buf[2]; - long chw, chh; - - wxColour *wxBlack = wxTheColourDatabase->FindColour("BLACK"); - wxColour *wxWhite = wxTheColourDatabase->FindColour("WHITE"); - wxColour *wxRed = wxTheColourDatabase->FindColour("RED"); - wxColour *wxBlue = wxTheColourDatabase->FindColour("BLUE"); - wxColour *wxGrey = wxTheColourDatabase->FindColour("LIGHT GREY"); - wxColour *wxGreen = wxTheColourDatabase->FindColour("GREEN"); - - wxPen *blackPen = wxThePenList->FindOrCreatePen(*wxBlack, 1, wxSOLID); - wxPen *redPen = wxThePenList->FindOrCreatePen(*wxRed, 1, wxSOLID); - wxPen *bluePen = wxThePenList->FindOrCreatePen(*wxBlue, 1, wxSOLID); - wxPen *whitePen = wxThePenList->FindOrCreatePen(*wxWhite, 1, wxSOLID); - wxPen *greyPen = wxThePenList->FindOrCreatePen(*wxGrey, 1, wxSOLID); - wxBrush *whiteBrush = wxTheBrushList->FindOrCreateBrush(*wxWhite, wxSOLID); - wxBrush *greyBrush = wxTheBrushList->FindOrCreateBrush(*wxGrey, wxSOLID); - wxBrush *redBrush = wxTheBrushList->FindOrCreateBrush(*wxRed, wxSOLID); - - xmax=field_width*x_cell*X_UNIT; - ymax=field_height*y_cell*Y_UNIT; - - - dc->SetPen(* blackPen); - for(x=xc1; x<=xc2; x++) - dc->DrawLine(x*x_cell*X_UNIT, 0, x*x_cell*X_UNIT, ymax); - for(y=xc1; y<=yc2; y++) - dc->DrawLine(0, y*y_cell*Y_UNIT, xmax, y*y_cell*Y_UNIT); - - - wxFont font= BOMBS_FONT; - dc->SetFont(font); - - buf[1]='\0'; - for(x=xc1; x<=xc2; x++) - for(y=yc1; y<=yc2; y++) - { if (wxGetApp().Game.IsMarked(x,y)) - { dc->SetPen(* blackPen); - dc->SetBrush(* greyBrush); - dc->DrawRectangle( x*x_cell*X_UNIT, y*y_cell*Y_UNIT, - x_cell*X_UNIT+1, y_cell*Y_UNIT+1); - *buf='M'; - if (!wxGetApp().Game.IsHidden(x,y) && wxGetApp().Game.IsBomb(x,y)) - dc->SetTextForeground(*wxBlue); - else - dc->SetTextForeground(*wxRed); - dc->SetTextBackground(*wxGrey); - dc->GetTextExtent(buf, &chw, &chh); - dc->DrawText( buf, - x*x_cell*X_UNIT + (x_cell*X_UNIT-chw)/2, - y*y_cell*Y_UNIT + (y_cell*Y_UNIT-chh)/2 - ); - if (!wxGetApp().Game.IsHidden(x,y) && wxGetApp().Game.IsBomb(x,y)) - { dc->SetPen(*redPen); - dc->DrawLine(x*x_cell*X_UNIT, y*y_cell*Y_UNIT, - (x+1)*x_cell*X_UNIT, (y+1)*y_cell*Y_UNIT); - dc->DrawLine(x*x_cell*X_UNIT, (y+1)*y_cell*Y_UNIT, - (x+1)*x_cell*X_UNIT, y*y_cell*Y_UNIT); - } - } - else if (wxGetApp().Game.IsHidden(x,y)) - { dc->SetPen(*blackPen); - dc->SetBrush(*greyBrush); - dc->DrawRectangle( x*x_cell*X_UNIT, y*y_cell*Y_UNIT, - x_cell*X_UNIT+1, y_cell*Y_UNIT+1); - } - else if (wxGetApp().Game.IsBomb(x,y)) - { dc->SetPen(* blackPen); - dc->SetBrush(* redBrush); - dc->DrawRectangle( x*x_cell*X_UNIT, y*y_cell*Y_UNIT, - x_cell*X_UNIT+1, y_cell*Y_UNIT+1); - *buf='B'; - dc->SetTextForeground(* wxBlack); - dc->SetTextBackground(* wxRed); - dc->GetTextExtent(buf, &chw, &chh); - dc->DrawText( buf, - x*x_cell*X_UNIT + (x_cell*X_UNIT-chw)/2, - y*y_cell*Y_UNIT + (y_cell*Y_UNIT-chh)/2 - ); - if (wxGetApp().Game.IsExploded(x,y)) - { dc->SetPen(* bluePen); - dc->DrawLine(x*x_cell*X_UNIT, y*y_cell*Y_UNIT, - (x+1)*x_cell*X_UNIT, (y+1)*y_cell*Y_UNIT); - dc->DrawLine(x*x_cell*X_UNIT, (y+1)*y_cell*Y_UNIT, - (x+1)*x_cell*X_UNIT, y*y_cell*Y_UNIT); - } - } - else // Display a digit - { dc->SetPen(* blackPen); - dc->SetBrush(* whiteBrush); - dc->DrawRectangle( x*x_cell*X_UNIT, y*y_cell*Y_UNIT, - x_cell*X_UNIT+1, y_cell*Y_UNIT+1); - *buf = (wxGetApp().Game.Get(x,y) & BG_MASK) + '0'; - dc->GetTextExtent(buf, &chw, &chh); - switch(*buf) - { case '0': dc->SetTextForeground(* wxGreen); break; - case '1': dc->SetTextForeground(* wxBlue); break; - default: dc->SetTextForeground(* wxBlack); break; - } - dc->SetTextBackground(* wxWhite); - dc->DrawText( buf, - x*x_cell*X_UNIT + (x_cell*X_UNIT-chw)/2, - y*y_cell*Y_UNIT + (y_cell*Y_UNIT-chh)/2 - ); - } - } - dc->SetFont(wxNullFont); - - if (wxGetApp().BombsFrame) - { char buf[80]; - sprintf(buf, "%d bombs %d remaining cells", - wxGetApp().Game.GetBombs(), wxGetApp().Game.GetRemainingCells()); - wxGetApp().BombsFrame->SetStatusText(buf, 0); - } -} - -/*-------- BombCanvasClass::Refresh(xc1, yc1, xc2, yc2) -------------*/ -/* Refreshes the field image */ -/* xc1,yc1 etc. are the (inclusive) limits of the area to be drawn, */ -/* expressed in cells. */ -/*---------------------------------------------------------------------*/ -void BombsCanvasClass::Refresh(int xc1, int yc1, int xc2, int yc2) - { - wxClientDC dc(this); - DrawField(& dc, xc1, yc1, xc2, yc2); - if (bmp) - { wxMemoryDC memDC; - memDC.SelectObject(* bmp); - DrawField(&memDC, xc1, yc1, xc2, yc2); - memDC.SelectObject(wxNullBitmap); - } - } - -// Called when the canvas receives a mouse event. -void BombsCanvasClass::OnEvent(wxMouseEvent& event) -{ float fx, fy; - event.Position(&fx, &fy); - int x = fx/(x_cell*X_UNIT); - int y = fy/(y_cell*Y_UNIT); - if (x -#include - -#define PROB 0.2 - -#ifndef RAND_MAX -#define RAND_MAX INT_MAX -#endif - - -/*-------------------- BombsGame::~BombsGame() ---------------------*/ -/*--------------------------------------------------------------------*/ -BombsGame::~BombsGame() - { if (field) - free(field); - } - -/*------------------ int BombsGame::Init(width,height) -------------------*/ -/* Initialize the play field. Returns 0 on failure */ -/*--------------------------------------------------------------------------*/ -int BombsGame::Init(int aWidth, int aHeight) - { int x, y; - int xx, yy; - - if (field) - free(field); - field=(short *)malloc(aWidth*aHeight*sizeof(short)); - if (!field) - { width=height=0; - return 0; - } - width=aWidth; - height=aHeight; - - for(x=0; x=0 && xx=0 && yy - -class BombsGame - { protected: - int width,height; - short *field; - int bombs,normal_cells; - public: - BombsGame() { width=height=0; field=NULL; }; - ~BombsGame(); - int Init(int width, int height); - int GetWidth() { return width; }; - int GetHeight() { return height; }; - int Get(int x, int y) { return field[x+y*width]; }; - void Mark(int x, int y); - void Unhide(int x, int y); - void Explode(int x, int y); - int IsHidden(int x, int y) { return Get(x,y) & BG_HIDDEN; }; - int IsMarked(int x, int y) { return Get(x,y) & BG_MARKED; }; - int IsBomb(int x, int y) { return Get(x,y) & BG_BOMB; }; - int IsExploded(int x, int y) { return Get(x,y) & BG_EXPLODED; }; - int GetBombs() { return bombs; }; - int GetRemainingCells() { return normal_cells; }; - }; - -#endif /* def GAME_H */ - diff --git a/samples/bombs/makefile.b32 b/samples/bombs/makefile.b32 deleted file mode 100644 index 563f61f3b9..0000000000 --- a/samples/bombs/makefile.b32 +++ /dev/null @@ -1,16 +0,0 @@ -# -# File: makefile.b32 -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: -# -# Makefile : Builds sample for 32-bit BC++ - -WXDIR = $(WXWIN) - -TARGET=bombs -OBJECTS = $(TARGET).obj bombs1.obj game.obj - -!include $(WXDIR)\src\makeprog.b32 - diff --git a/samples/bombs/makefile.bcc b/samples/bombs/makefile.bcc deleted file mode 100644 index 38896fc477..0000000000 --- a/samples/bombs/makefile.bcc +++ /dev/null @@ -1,19 +0,0 @@ -# -# File: makefile.bcc -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Builds a BC++ 16-bit sample - -!if "$(WXWIN)" == "" -!error You must define the WXWIN variable in autoexec.bat, e.g. WXWIN=c:\wx -!endif - -WXDIR = $(WXWIN) - -TARGET=bombs -OBJECTS=$(TARGET).obj bombs1.obj game.obj - -!include $(WXDIR)\src\makeprog.bcc - diff --git a/samples/bombs/makefile.dos b/samples/bombs/makefile.dos deleted file mode 100644 index ff40632c83..0000000000 --- a/samples/bombs/makefile.dos +++ /dev/null @@ -1,18 +0,0 @@ -# -# File: makefile.dos -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Makefile : Builds 16-bit sample, VC++ 1.5 -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -WXDIR = $(WXWIN) - -TARGET=bombs -OBJECTS=dialoged.obj reseditr.obj dlghndlr.obj reswrite.obj\ - winprop.obj edtree.obj edlist.obj symbtabl.obj winstyle.obj - -!include $(WXDIR)\src\makeprog.msc - diff --git a/samples/bombs/makefile.g95 b/samples/bombs/makefile.g95 deleted file mode 100644 index 55743f58b4..0000000000 --- a/samples/bombs/makefile.g95 +++ /dev/null @@ -1,44 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile for bombs example (UNIX). - -WXDIR = ../.. - -# All common UNIX compiler flags and options are now in -# this central makefile. -include $(WXDIR)/src/makeg95.env - -OBJECTS = $(OBJDIR)/bombs.$(OBJSUFF) $(OBJDIR)/bombs1.$(OBJSUFF) $(OBJDIR)/game.$(OBJSUFF)\ - $(OBJDIR)/bombs_resources.$(OBJSUFF) - -all: $(OBJDIR) bombs$(GUISUFFIX)$(EXESUFF) - -wx: - -$(OBJDIR): - mkdir $(OBJDIR) - -bombs$(GUISUFFIX)$(EXESUFF): $(OBJECTS) $(WXLIB) - $(CC) $(LDFLAGS) -o bombs$(GUISUFFIX)$(EXESUFF) $(OBJECTS) $(LDLIBS) - -$(OBJDIR)/bombs.$(OBJSUFF): bombs.$(SRCSUFF) - $(CC) -c $(CPPFLAGS) -o $@ bombs.$(SRCSUFF) - -$(OBJDIR)/bombs1.$(OBJSUFF): bombs1.$(SRCSUFF) - $(CC) -c $(CPPFLAGS) -o $@ bombs1.$(SRCSUFF) - -$(OBJDIR)/game.$(OBJSUFF): game.$(SRCSUFF) - $(CC) -c $(CPPFLAGS) -o $@ game.$(SRCSUFF) - -$(OBJDIR)/bombs_resources.o: bombs.rc - $(RESCOMP) -i bombs.rc -o $(OBJDIR)/bombs_resources.o $(RESFLAGS) - -clean: - rm -f $(OBJECTS) bombs$(GUISUFFIX).exe core *.rsc *.res diff --git a/samples/bombs/makefile.unx b/samples/bombs/makefile.unx deleted file mode 100644 index 118dabbfd4..0000000000 --- a/samples/bombs/makefile.unx +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1998 -# Updated: -# Copyright: (c) 1998 Julian Smart -# -# "%W% %G%" -# -# Makefile for bombs example (UNIX). - -PROGRAM=bombs - -OBJECTS = bombs.o bombs1.o game.o - -include ../../src/makeprog.env - diff --git a/samples/bombs/makefile.vc b/samples/bombs/makefile.vc deleted file mode 100644 index 06a647f524..0000000000 --- a/samples/bombs/makefile.vc +++ /dev/null @@ -1,18 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: (c) Julian Smart -# -# Makefile : Builds sample (VC++, WIN32) -# Use FINAL=1 argument to nmake to build final version with no debug info. - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -PROGRAM=bombs -OBJECTS = $(PROGRAM).obj bombs1.obj game.obj - -!include $(WXDIR)\src\makeprog.vc - diff --git a/samples/bombs/makefile.wat b/samples/bombs/makefile.wat deleted file mode 100644 index 08562fa92a..0000000000 --- a/samples/bombs/makefile.wat +++ /dev/null @@ -1,15 +0,0 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 -# -# - -WXDIR = $(%WXWIN) - -PROGRAM = bombs -OBJECTS = $(PROGRAM).obj bombs1.obj game.obj - -!include $(WXDIR)\src\makeprog.wat - - diff --git a/samples/bombs/readme.txt b/samples/bombs/readme.txt deleted file mode 100644 index 4e6e8dad66..0000000000 --- a/samples/bombs/readme.txt +++ /dev/null @@ -1,78 +0,0 @@ - wxWin Bombs - by Pasquale Foggia - -1. The aim of the program -wxWin Bombs is the wxWin implementation of the minesweeper game you find -under MSWindows 3.1+. Later the rules of the game will be explained for -the lucky ones of you that have never used Windows. - -2. Installation -If you are reading this file, I suppose you have succesfully unpacked the -files in a directory of your hard disk :-). You should already have -installed wxWin on your system. -Now you have to modify makefile.bcc -(if a Windows user) or makefile.unx (if you use a real OS) setting the -proper values for the directories. Finally, you have to run: - make -f makefile.bcc -for Windows (nmake if you use a MicroSoft compiler), or: - make -f makefile.unx xview -for Unix+xview and - make -f makefile.unx motif -for Unix+motif - -If you are lucky, you will find the bombs executable, ready to be run. - -3. Test -Bombs has been tested under the following platforms: - PC + MSWindos 3.1 + wxWin 1.60 + Borland C 3.1 - Sun SPARCstation 20 + SunOS + xview + wxWin 1.63 + gcc 2.3.3 -and all seems to work fine. - -4. The author -This program has been developed by Pasquale Foggia, a PhD student -in Computer Engineering at the "Federico II" University of Naples, Italy. -You can contacting him using the following address: - foggia@amalfi.dis.unina.it - -5. Disclaimer -This program is freeware. You can do everything you want with it, including -copying and modifying, without the need of a permission from the author. -On the other hand, this program is provided AS IS, with NO KIND OF WARRANTY. -The author will be in NO CASE responsible for damages directly or indirectly -caused by this program. Use it AT YOUR OWN RISK, or don't use it at all. - -6. The rules of the game -Your aim is to discover all the bombs in a mined field. If you click with -the left mouse button on a cell containing a bomb, your game ends. -Otherwise, the number of bombs in the 8 neighbour cells will be displayed. -When you have clicked all the cells without a bomb, you win. -You can also use the right button (or left button+shift) to mark a cell -you think hides a bomb, in order to not click it accidentally. - -7. Concluding remarks -I hope someone of you will enjoy this program. However, I enjoyed writing -it (thanks to Julian Smart and all the other wxWin developers). -In the near future I plan to implement under wxWin the great 'empire' -(is there someone that still remember it?), IMHO one of the most addictive -strategy games. If someone is interested, please contact me by e-mail. -I beg you pardon for my approximative english. - - Pasquale Foggia - foggia@amalfi.dis.unina.it - - ------- -A note from Julian Smart: Many thanks to Pasquale for the contribution. -I've taken the liberty of making a few changes. - -1) I've made the status line have a single field so that you -can see the 'cells remaining' message properly. - -2) I've changed the title from "wxWin Bombs" (which, as a statement, -is an unfortunate reflection of the reality of earlier versions of -wxWindows :-)) to wxBombs. - -3) Added SetClientData to resize the window on Restart; eliminated -scrollbars; made the frame unresizeable. - -4) Added makefile.dos for VC++ 1.x, makefile.wat for Watcom C++. \ No newline at end of file diff --git a/samples/checklst/.cvsignore b/samples/checklst/.cvsignore deleted file mode 100644 index 7957c41216..0000000000 --- a/samples/checklst/.cvsignore +++ /dev/null @@ -1,3 +0,0 @@ -Linux -linux-gnu -linux \ No newline at end of file diff --git a/samples/checklst/Makefile b/samples/checklst/Makefile deleted file mode 100644 index bccce53f76..0000000000 --- a/samples/checklst/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../../setup/general/makeapp diff --git a/samples/checklst/Makefile.in b/samples/checklst/Makefile.in deleted file mode 100644 index 3478055e39..0000000000 --- a/samples/checklst/Makefile.in +++ /dev/null @@ -1,26 +0,0 @@ -# WXXT base directory -WXBASEDIR=@WXBASEDIR@ - -# set the OS type for compilation -OS=@OS@ -# compile a library only -RULE=bin - -# define library name -BIN_TARGET=test -# define library sources -BIN_SRC=\ -checklst.cpp - -#define library objects -BIN_OBJ=\ -checklst.o - -# additional things needed to link -BIN_LINK= - -# additional things needed to compile -ADD_COMPILE= - -# include the definitions now -include ../../../template.mak diff --git a/samples/checklst/checklst.cpp b/samples/checklst/checklst.cpp deleted file mode 100644 index 8f26703e8a..0000000000 --- a/samples/checklst/checklst.cpp +++ /dev/null @@ -1,187 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: checklst.cpp -// Purpose: wxCheckListBox sample -// Author: Vadim Zeitlin -// Modified by: -// Created: 13.11.97 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows license -/////////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -//#pragma implementation -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ - #pragma hdrstop -#endif - -#ifndef WX_PRECOMP - #include "wx/wx.h" -#endif - -#ifdef __WXMSW__ -#include "wx/ownerdrw.h" -#endif -#include "wx/menuitem.h" -#include "wx/checklst.h" - -// Define a new application type -class CheckListBoxApp: public wxApp -{ -public: - bool OnInit(); -}; - -// Define a new frame type -class CheckListBoxFrame : public wxFrame -{ -public: - // ctor & dtor - CheckListBoxFrame(wxFrame *frame, char *title, int x, int y, int w, int h); - ~CheckListBoxFrame(); - - // notifications - void OnQuit (wxCommandEvent& event); - void OnAbout (wxCommandEvent& event); - void OnListboxSelect (wxCommandEvent& event); - void OnCheckboxToggle (wxCommandEvent& event); - void OnListboxDblClick (wxCommandEvent& event); - bool OnClose () { return TRUE; } - - DECLARE_EVENT_TABLE() - -private: - wxCheckListBox *m_pListBox; -}; - -enum -{ - Menu_Quit = 1, - Control_First = 1000, - Control_Listbox, Control_Listbox2, -}; - -BEGIN_EVENT_TABLE(CheckListBoxFrame, wxFrame) - EVT_MENU(Menu_Quit, CheckListBoxFrame::OnQuit) - EVT_LISTBOX(Control_Listbox, CheckListBoxFrame::OnListboxSelect) - EVT_CHECKLISTBOX(Control_Listbox, CheckListBoxFrame::OnCheckboxToggle) - EVT_LISTBOX_DCLICK(Control_Listbox, CheckListBoxFrame::OnListboxDblClick) -END_EVENT_TABLE() - -IMPLEMENT_APP(CheckListBoxApp); - -// init our app: create windows -bool CheckListBoxApp::OnInit(void) -{ - CheckListBoxFrame *pFrame = new CheckListBoxFrame(NULL, "wxWindows Ownerdraw Sample", - 50, 50, 450, 320); - SetTopWindow(pFrame); - - return TRUE; -} - -// main frame constructor -CheckListBoxFrame::CheckListBoxFrame(wxFrame *frame, char *title, int x, int y, int w, int h) - : wxFrame(frame, -1, title, wxPoint(x, y), wxSize(w, h)) -{ - // create the status line - const int widths[] = { -1, 60 }; - CreateStatusBar(2); - SetStatusWidths(2, widths); - SetStatusText("no selection", 0); - - // Make a menubar - wxMenu *file_menu = new wxMenu; - - // construct submenu - file_menu->Append(Menu_Quit, "E&xit"); - - wxMenuBar *menu_bar = new wxMenuBar; - menu_bar->Append(file_menu, "&File"); - SetMenuBar(menu_bar); - - // make a panel with some controls - wxPanel *pPanel = new wxPanel(this, -1, wxPoint(0, 0), - wxSize(400, 200), wxTAB_TRAVERSAL); - - // check list box - static const char* aszChoices[] = { "Hello", "world", "and", - "goodbye", "cruel", "world", - "-------", "owner-drawn", "listbox" }; - - wxString *astrChoices = new wxString[WXSIZEOF(aszChoices)]; - unsigned int ui; - for ( ui = 0; ui < WXSIZEOF(aszChoices); ui++ ) - astrChoices[ui] = aszChoices[ui]; - - m_pListBox = new wxCheckListBox - ( - pPanel, // parent - Control_Listbox, // control id - wxPoint(10, 10), // listbox poistion - wxSize(400, 200), // listbox size - WXSIZEOF(aszChoices), // number of strings - astrChoices // array of strings - ); - - delete [] astrChoices; - - // not implemented in wxGTK yet -#ifndef __WXGTK__ - for ( ui = 0; ui < WXSIZEOF(aszChoices); ui += 2 ) { - m_pListBox->GetItem(ui)->SetBackgroundColour(wxColor(200, 200, 200)); - } -#endif // wxGTK - - m_pListBox->Check(2); - - Show(TRUE); -} - -CheckListBoxFrame::~CheckListBoxFrame() -{ -} - -void CheckListBoxFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) -{ - Close(TRUE); -} - -void CheckListBoxFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) -{ - wxMessageDialog dialog(this, "Demo of wxCheckListBox control\n" - "About wxCheckListBox", wxYES_NO | wxCANCEL); - dialog.ShowModal(); -} - -void CheckListBoxFrame::OnListboxSelect(wxCommandEvent& event) -{ - wxString strSelection; - unsigned int nSel = event.GetSelection(); - strSelection.sprintf("item %d selected (%schecked)", nSel, - m_pListBox->IsChecked((int)nSel) ? "" : "not "); - SetStatusText(strSelection); -} - -void CheckListBoxFrame::OnListboxDblClick(wxCommandEvent& WXUNUSED(event)) -{ - wxString strSelection; - strSelection.sprintf("item %d double clicked", m_pListBox->GetSelection()); - wxMessageDialog dialog(this, strSelection); - dialog.ShowModal(); -} - -void CheckListBoxFrame::OnCheckboxToggle(wxCommandEvent& event) -{ - wxString strSelection; - unsigned int nItem = event.GetInt(); - - strSelection.sprintf("item %d was %schecked", nItem, - m_pListBox->IsChecked(nItem) ? "" : "un"); - SetStatusText(strSelection); -} diff --git a/samples/checklst/checklst.def b/samples/checklst/checklst.def deleted file mode 100644 index 57c46fbcb1..0000000000 --- a/samples/checklst/checklst.def +++ /dev/null @@ -1,8 +0,0 @@ -NAME CHECKLST -DESCRIPTION 'wxCheckListBox sample' -EXETYPE WINDOWS -STUB 'WINSTUB.EXE' -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE -HEAPSIZE 4048 -STACKSIZE 16000 diff --git a/samples/checklst/checklst.rc b/samples/checklst/checklst.rc deleted file mode 100644 index b86c4e2265..0000000000 --- a/samples/checklst/checklst.rc +++ /dev/null @@ -1 +0,0 @@ -#include "wx/msw/wx.rc" diff --git a/samples/checklst/makefile.b32 b/samples/checklst/makefile.b32 deleted file mode 100644 index a6a52a7bbc..0000000000 --- a/samples/checklst/makefile.b32 +++ /dev/null @@ -1,16 +0,0 @@ -# -# File: makefile.b32 -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: -# -# Makefile : Builds sample for 32-bit BC++ - -WXDIR = $(WXWIN) - -TARGET=checklst -OBJECTS = $(TARGET).obj - -!include $(WXDIR)\src\makeprog.b32 - diff --git a/samples/checklst/makefile.dos b/samples/checklst/makefile.dos deleted file mode 100644 index 78232aa571..0000000000 --- a/samples/checklst/makefile.dos +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.dos -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Makefile : Builds 16-bit sample, VC++ 1.5 -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -WXDIR = $(WXWIN) - -TARGET=checklst -OBJECTS=$(TARGET).obj - -!include $(WXDIR)\src\makeprog.msc - diff --git a/samples/checklst/makefile.g95 b/samples/checklst/makefile.g95 deleted file mode 100644 index 3fb8e70772..0000000000 --- a/samples/checklst/makefile.g95 +++ /dev/null @@ -1,37 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile for checklst example (UNIX). - -WXDIR = ../.. - -# All common UNIX compiler flags and options are now in -# this central makefile. -include $(WXDIR)/src/makeg95.env - -OBJECTS = $(OBJDIR)/checklst.$(OBJSUFF) $(OBJDIR)/checklst_resources.$(OBJSUFF) - -all: $(OBJDIR) checklst$(GUISUFFIX)$(EXESUFF) - -wx: - -$(OBJDIR): - mkdir $(OBJDIR) - -checklst$(GUISUFFIX)$(EXESUFF): $(OBJECTS) $(WXLIB) - $(CC) $(LDFLAGS) -o checklst$(GUISUFFIX)$(EXESUFF) $(OBJECTS) $(LDLIBS) - -$(OBJDIR)/checklst.$(OBJSUFF): checklst.$(SRCSUFF) - $(CC) -c $(CPPFLAGS) -o $@ checklst.$(SRCSUFF) - -$(OBJDIR)/checklst_resources.o: checklst.rc - $(RESCOMP) -i checklst.rc -o $(OBJDIR)/checklst_resources.o $(RESFLAGS) - -clean: - rm -f $(OBJECTS) checklst$(GUISUFFIX).exe core *.rsc *.res diff --git a/samples/checklst/makefile.vc b/samples/checklst/makefile.vc deleted file mode 100644 index 63fb5dce8d..0000000000 --- a/samples/checklst/makefile.vc +++ /dev/null @@ -1,18 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: (c) Julian Smart -# -# Makefile : Builds sample (VC++, WIN32) -# Use FINAL=1 argument to nmake to build final version with no debug info. - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -PROGRAM=checklst -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.vc - diff --git a/samples/checklst/makefile.wat b/samples/checklst/makefile.wat deleted file mode 100644 index 1e219417b0..0000000000 --- a/samples/checklst/makefile.wat +++ /dev/null @@ -1,15 +0,0 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 -# -# - -WXDIR = $(%WXWIN) - -PROGRAM = checklst -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - diff --git a/samples/checklst/mondrian.xpm b/samples/checklst/mondrian.xpm deleted file mode 100644 index 409f27a843..0000000000 --- a/samples/checklst/mondrian.xpm +++ /dev/null @@ -1,44 +0,0 @@ -/* XPM */ -static char *mondrian_xpm[] = { -/* columns rows colors chars-per-pixel */ -"32 32 6 1", -" c Black", -". c Blue", -"X c #00bf00", -"o c Red", -"O c Yellow", -"+ c Gray100", -/* pixels */ -" ", -" oooooo +++++++++++++++++++++++ ", -" oooooo +++++++++++++++++++++++ ", -" oooooo +++++++++++++++++++++++ ", -" oooooo +++++++++++++++++++++++ ", -" oooooo +++++++++++++++++++++++ ", -" oooooo +++++++++++++++++++++++ ", -" oooooo +++++++++++++++++++++++ ", -" ", -" ++++++ ++++++++++++++++++ .... ", -" ++++++ ++++++++++++++++++ .... ", -" ++++++ ++++++++++++++++++ .... ", -" ++++++ ++++++++++++++++++ .... ", -" ++++++ ++++++++++++++++++ .... ", -" ++++++ ++++++++++++++++++ ", -" ++++++ ++++++++++++++++++ ++++ ", -" ++++++ ++++++++++++++++++ ++++ ", -" ++++++ ++++++++++++++++++ ++++ ", -" ++++++ ++++++++++++++++++ ++++ ", -" ++++++ ++++++++++++++++++ ++++ ", -" ++++++ ++++++++++++++++++ ++++ ", -" ++++++ ++++++++++++++++++ ++++ ", -" ++++++ ++++++++++++++++++ ++++ ", -" ++++++ ++++++++++++++++++ ++++ ", -" ++++++ ++++ ", -" ++++++ OOOOOOOOOOOO XXXXX ++++ ", -" ++++++ OOOOOOOOOOOO XXXXX ++++ ", -" ++++++ OOOOOOOOOOOO XXXXX ++++ ", -" ++++++ OOOOOOOOOOOO XXXXX ++++ ", -" ++++++ OOOOOOOOOOOO XXXXX ++++ ", -" ++++++ OOOOOOOOOOOO XXXXX ++++ ", -" " -}; diff --git a/samples/config/.cvsignore b/samples/config/.cvsignore deleted file mode 100644 index 7957c41216..0000000000 --- a/samples/config/.cvsignore +++ /dev/null @@ -1,3 +0,0 @@ -Linux -linux-gnu -linux \ No newline at end of file diff --git a/samples/config/Makefile b/samples/config/Makefile deleted file mode 100644 index bccce53f76..0000000000 --- a/samples/config/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../../setup/general/makeapp diff --git a/samples/config/Makefile.in b/samples/config/Makefile.in deleted file mode 100644 index 95613d0b42..0000000000 --- a/samples/config/Makefile.in +++ /dev/null @@ -1,24 +0,0 @@ -# WXXT base directory -WXBASEDIR=@WXBASEDIR@ - -# set the OS type for compilation -OS=@OS@ -# compile a library only -RULE=bin - -# define library name -BIN_TARGET=conftest -# define library sources -BIN_SRC=conftest.cpp - -#define library objects -BIN_OBJ=conftest.o - -# additional things needed to link -BIN_LINK= - -# additional things needed to compile -ADD_COMPILE= - -# include the definitions now -include ../../../template.mak diff --git a/samples/config/conftest.cpp b/samples/config/conftest.cpp deleted file mode 100644 index 6c47dc4bd6..0000000000 --- a/samples/config/conftest.cpp +++ /dev/null @@ -1,234 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: conftest.cpp -// Purpose: demo of wxConfig and related classes -// Author: Vadim Zeitlin -// Modified by: -// Created: 03.08.98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows license -/////////////////////////////////////////////////////////////////////////////// - -// ============================================================================ -// declarations -// ============================================================================ - -// ---------------------------------------------------------------------------- -// headers -// ---------------------------------------------------------------------------- -#include "wx/wxprec.h" - -#ifndef WX_PRECOMP - #include "wx/wx.h" -#endif //precompiled headers - -#include "wx/log.h" -#include "wx/config.h" - -// ---------------------------------------------------------------------------- -// classes -// ---------------------------------------------------------------------------- -class MyApp: public wxApp -{ -public: - // implement base class virtuals - virtual bool OnInit(); - virtual int OnExit(); -}; - -class MyFrame: public wxFrame -{ -public: - MyFrame(); - virtual ~MyFrame(); - - // callbacks - void OnQuit(wxCommandEvent& event); - void OnAbout(wxCommandEvent& event); - void OnDelete(wxCommandEvent& event); - bool OnClose() { return TRUE; } - -private: - wxTextCtrl *m_text; - wxCheckBox *m_check; - - DECLARE_EVENT_TABLE() -}; - -enum -{ - Minimal_Quit, - Minimal_About, - Minimal_Delete -}; - -// ---------------------------------------------------------------------------- -// event tables -// ---------------------------------------------------------------------------- -BEGIN_EVENT_TABLE(MyFrame, wxFrame) - EVT_MENU(Minimal_Quit, MyFrame::OnQuit) - EVT_MENU(Minimal_About, MyFrame::OnAbout) - EVT_MENU(Minimal_Delete, MyFrame::OnDelete) -END_EVENT_TABLE() - -// ============================================================================ -// implementation -// ============================================================================ - -// ---------------------------------------------------------------------------- -// application -// ---------------------------------------------------------------------------- -IMPLEMENT_APP(MyApp) - -// `Main program' equivalent, creating windows and returning main app frame -bool MyApp::OnInit() -{ - // we're using wxConfig's "create-on-demand" feature: it will create the - // config object when it's used for the first time. It has a number of - // advantages compared with explicitly creating our wxConfig: - // 1) we don't pay for it if we don't use it - // 2) there is no danger to create it twice - - // application and vendor name are used by wxConfig to construct the name - // of the config file/registry key and must be set before the first call - // to Get() if you want to override the default values (the application - // name is the name of the executable and the vendor name is the same) - SetVendorName("wxWindows"); - SetAppName("conftest"); // not needed, it's the default value - - wxConfigBase *pConfig = wxConfigBase::Get(); - - // or you could also write something like this: - // wxFileConfig *pConfig = new wxFileConfig("conftest"); - // wxConfigBase::Set(pConfig); - // where you can also specify the file names explicitly if you wish. - // Of course, calling Set() is optional and you only must do it if - // you want to later retrieve this pointer with Get(). - - // create the main program window - MyFrame *frame = new MyFrame; - frame->Show(TRUE); - SetTopWindow(frame); - - // use our config object... - if ( pConfig->Read("/Controls/Check", 1l) != 0 ) { - wxMessageBox("You can disable this message box by unchecking\n" - "the checkbox in the main window (of course, a real\n" - "program would have a checkbox right here but we\n" - "keep it simple)", "Welcome to wxConfig demo", - wxICON_INFORMATION | wxOK); - } - - return TRUE; -} - -int MyApp::OnExit() -{ - // clean up: Set() returns the active config object as Get() does, but unlike - // Get() it doesn't try to create one if there is none (definitely not what - // we want here!) - delete wxConfigBase::Set((wxConfigBase *) NULL); - - return 0; -} - -// ---------------------------------------------------------------------------- -// frame -// ---------------------------------------------------------------------------- - -// main frame ctor -MyFrame::MyFrame() - : wxFrame((wxFrame *) NULL, -1, "wxConfig Demo") -{ - // menu - wxMenu *file_menu = new wxMenu; - - file_menu->Append(Minimal_Delete, "&Delete", "Delete config file"); - file_menu->AppendSeparator(); - file_menu->Append(Minimal_About, "&About", "About this sample"); - file_menu->AppendSeparator(); - file_menu->Append(Minimal_Quit, "E&xit", "Exit the program"); - wxMenuBar *menu_bar = new wxMenuBar; - menu_bar->Append(file_menu, "&File"); - SetMenuBar(menu_bar); - - CreateStatusBar(); - - // child controls - wxPanel *panel = new wxPanel(this); - (void)new wxStaticText(panel, -1, "These controls remember their values!", - wxPoint(10, 10), wxSize(300, 20)); - m_text = new wxTextCtrl(panel, -1, "", wxPoint(10, 40), wxSize(300, 20)); - m_check = new wxCheckBox(panel, -1, "show welcome message box at startup", - wxPoint(10, 70), wxSize(300, 20)); - - // restore the control's values from the config - - // NB: in this program, the config object is already created at this moment - // because we had called Get() from MyApp::OnInit(). However, if you later - // change the code and don't create it before this line, it won't break - // anything - unlike if you manually create wxConfig object with Create() - // or in any other way (then you must be sure to create it before using it!). - wxConfigBase *pConfig = wxConfigBase::Get(); - - // we could write Read("/Controls/Text") as well, it's just to show SetPath() - pConfig->SetPath("/Controls"); - - m_text->SetValue(pConfig->Read("Text", "")); - m_check->SetValue(pConfig->Read("Check", 1l) != 0); - - // SetPath() understands ".." - pConfig->SetPath("../MainFrame"); - - // restore frame position and size - int x = pConfig->Read("x", 50), - y = pConfig->Read("y", 50), - w = pConfig->Read("w", 350), - h = pConfig->Read("h", 200); - Move(x, y); - SetClientSize(w, h); -} - -void MyFrame::OnQuit(wxCommandEvent&) -{ - Close(TRUE); -} - -void MyFrame::OnAbout(wxCommandEvent&) -{ - wxMessageBox("wxConfig demo\n© Vadim Zeitlin 1998", "About", - wxICON_INFORMATION | wxOK); -} - -void MyFrame::OnDelete(wxCommandEvent&) -{ - if ( wxConfigBase::Get()->DeleteAll() ) { - wxLogMessage("Config file/registry key successfully deleted."); - - delete wxConfigBase::Set((wxConfigBase *) NULL); - wxConfigBase::DontCreateOnDemand(); - } - else - { - wxLogError("Deleting config file/registry key failed."); - } -} - -MyFrame::~MyFrame() -{ - // save the control's values to the config - wxConfigBase *pConfig = wxConfigBase::Get(); - if ( pConfig == NULL ) - return; - pConfig->Write("/Controls/Text", m_text->GetValue()); - pConfig->Write("/Controls/Check", m_check->GetValue()); - - // save the frame position - int x, y, w, h; - GetClientSize(&w, &h); - GetPosition(&x, &y); - pConfig->Write("/MainFrame/x", (long) x); - pConfig->Write("/MainFrame/y", (long) y); - pConfig->Write("/MainFrame/w", (long) w); - pConfig->Write("/MainFrame/h", (long) h); -} diff --git a/samples/config/conftest.rc b/samples/config/conftest.rc deleted file mode 100644 index 82bdf07561..0000000000 --- a/samples/config/conftest.rc +++ /dev/null @@ -1,2 +0,0 @@ -#include "wx/msw/wx.rc" - diff --git a/samples/config/makefile.b32 b/samples/config/makefile.b32 deleted file mode 100644 index b9da57631c..0000000000 --- a/samples/config/makefile.b32 +++ /dev/null @@ -1,16 +0,0 @@ -# -# File: makefile.b32 -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: -# -# Makefile : Builds sample for 32-bit BC++ - -WXDIR = $(WXWIN) - -TARGET=conftest -OBJECTS = $(TARGET).obj - -!include $(WXDIR)\src\makeprog.b32 - diff --git a/samples/config/makefile.bcc b/samples/config/makefile.bcc deleted file mode 100644 index 965ba0dd46..0000000000 --- a/samples/config/makefile.bcc +++ /dev/null @@ -1,19 +0,0 @@ -# -# File: makefile.bcc -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Builds a BC++ 16-bit sample - -!if "$(WXWIN)" == "" -!error You must define the WXWIN variable in autoexec.bat, e.g. WXWIN=c:\wx -!endif - -WXDIR = $(WXWIN) - -TARGET=conftest -OBJECTS=$(TARGET).obj - -!include $(WXDIR)\src\makeprog.bcc - diff --git a/samples/config/makefile.dos b/samples/config/makefile.dos deleted file mode 100644 index 0a87032b82..0000000000 --- a/samples/config/makefile.dos +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.dos -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Makefile : Builds 16-bit sample, VC++ 1.5 -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -WXDIR = $(WXWIN) - -TARGET=conftest -OBJECTS=$(TARGET).obj - -!include $(WXDIR)\src\makeprog.msc - diff --git a/samples/config/makefile.g95 b/samples/config/makefile.g95 deleted file mode 100644 index 3f40760ddf..0000000000 --- a/samples/config/makefile.g95 +++ /dev/null @@ -1,37 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile for conftest example (UNIX). - -WXDIR = ../.. - -# All common UNIX compiler flags and options are now in -# this central makefile. -include $(WXDIR)/src/makeg95.env - -OBJECTS = $(OBJDIR)/conftest.$(OBJSUFF) $(OBJDIR)/conftest_resources.$(OBJSUFF) - -all: $(OBJDIR) conftest$(GUISUFFIX)$(EXESUFF) - -wx: - -$(OBJDIR): - mkdir $(OBJDIR) - -conftest$(GUISUFFIX)$(EXESUFF): $(OBJECTS) $(WXLIB) - $(CC) $(LDFLAGS) -o conftest$(GUISUFFIX)$(EXESUFF) $(OBJECTS) $(LDLIBS) - -$(OBJDIR)/conftest.$(OBJSUFF): conftest.$(SRCSUFF) - $(CC) -c $(CPPFLAGS) -o $@ conftest.$(SRCSUFF) - -$(OBJDIR)/conftest_resources.o: conftest.rc - $(RESCOMP) -i conftest.rc -o $(OBJDIR)/conftest_resources.o $(RESFLAGS) - -clean: - rm -f $(OBJECTS) conftest$(GUISUFFIX).exe core *.rsc *.res diff --git a/samples/config/makefile.unx b/samples/config/makefile.unx deleted file mode 100644 index 892ffd1f30..0000000000 --- a/samples/config/makefile.unx +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1998 -# Updated: -# Copyright: (c) 1998 Julian Smart -# -# "%W% %G%" -# -# Makefile for config example (UNIX). - -PROGRAM=conftest - -OBJECTS=$(PROGRAM).o - -include ../../src/makeprog.env - diff --git a/samples/config/makefile.vc b/samples/config/makefile.vc deleted file mode 100644 index de60e4e620..0000000000 --- a/samples/config/makefile.vc +++ /dev/null @@ -1,18 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: (c) Julian Smart -# -# Makefile : Builds sample (VC++, WIN32) -# Use FINAL=1 argument to nmake to build final version with no debug info. - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -PROGRAM=conftest -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.vc - diff --git a/samples/config/makefile.wat b/samples/config/makefile.wat deleted file mode 100644 index 5d7f4c3530..0000000000 --- a/samples/config/makefile.wat +++ /dev/null @@ -1,15 +0,0 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 -# -# - -WXDIR = $(%WXWIN) - -PROGRAM = conftest -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - diff --git a/samples/controls/.cvsignore b/samples/controls/.cvsignore deleted file mode 100644 index 7957c41216..0000000000 --- a/samples/controls/.cvsignore +++ /dev/null @@ -1,3 +0,0 @@ -Linux -linux-gnu -linux \ No newline at end of file diff --git a/samples/controls/Makefile b/samples/controls/Makefile deleted file mode 100644 index bccce53f76..0000000000 --- a/samples/controls/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../../setup/general/makeapp diff --git a/samples/controls/Makefile.in b/samples/controls/Makefile.in deleted file mode 100644 index f011b493a7..0000000000 --- a/samples/controls/Makefile.in +++ /dev/null @@ -1,26 +0,0 @@ -# WXXT base directory -WXBASEDIR=@WXBASEDIR@ - -# set the OS type for compilation -OS=@OS@ -# compile a library only -RULE=bin - -# define library name -BIN_TARGET=controls -# define library sources -BIN_SRC=\ -controls.cpp - -#define library objects -BIN_OBJ=\ -controls.o - -# additional things needed to link -BIN_LINK= - -# additional things needed to compile -ADD_COMPILE= - -# include the definitions now -include ../../../template.mak diff --git a/samples/controls/controls.cpp b/samples/controls/controls.cpp deleted file mode 100644 index 9c9a7b35d7..0000000000 --- a/samples/controls/controls.cpp +++ /dev/null @@ -1,882 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: controls.cpp -// Purpose: Controls wxWindows sample -// Author: Robert Roebling -// Modified by: -// RCS-ID: $Id$ -// Copyright: (c) Robert Roebling, Julian Smart -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "controls.h" -#endif - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include "wx/spinbutt.h" -#include "wx/notebook.h" -#include "wx/imaglist.h" -#include "wx/spinbutt.h" -#include "wx/clipbrd.h" - -#ifdef __WXGTK__ -#include "wx/tooltip.h" -#endif - -#if defined(__WXGTK__) || defined(__WXMOTIF__) - #define USE_XPM -#endif - -#ifdef USE_XPM - #include "mondrian.xpm" - #include "icons/choice.xpm" - #include "icons/combo.xpm" - #include "icons/list.xpm" - #include "icons/radio.xpm" - #include "icons/text.xpm" - #include "icons/gauge.xpm" -#endif - -//---------------------------------------------------------------------- -// class definitions -//---------------------------------------------------------------------- - -class MyApp: public wxApp -{ - public: - bool OnInit(void); -}; - -// a text ctrl which allows to call different wxTextCtrl functions -// interactively by pressing function keys in it -class MyTextCtrl : public wxTextCtrl -{ -public: - MyTextCtrl(wxWindow *parent, wxWindowID id, const wxString &value, - const wxPoint &pos, const wxSize &size, int style = 0) - : wxTextCtrl(parent, id, value, pos, size, style) { } - - void OnChar(wxKeyEvent& event); - -private: - DECLARE_EVENT_TABLE() -}; - -class MyPanel: public wxPanel -{ - public: - - MyPanel(wxFrame *frame, int x, int y, int w, int h); - virtual ~MyPanel(); - - void OnSize( wxSizeEvent& event ); - void OnListBox( wxCommandEvent &event ); - void OnListBoxDoubleClick( wxCommandEvent &event ); - void OnListBoxButtons( wxCommandEvent &event ); - void OnChoice( wxCommandEvent &event ); - void OnChoiceButtons( wxCommandEvent &event ); - void OnCombo( wxCommandEvent &event ); - void OnComboButtons( wxCommandEvent &event ); - void OnRadio( wxCommandEvent &event ); - void OnRadioButtons( wxCommandEvent &event ); - void OnSetFont( wxCommandEvent &event ); - void OnPageChanged( wxNotebookEvent &event ); - void OnSliderUpdate( wxCommandEvent &event ); - void OnSpinUpdate( wxSpinEvent &event ); - void OnPasteFromClipboard( wxCommandEvent &event ); - void OnCopyToClipboard( wxCommandEvent &event ); - void OnMoveToEndOfText( wxCommandEvent &event ); - void OnMoveToEndOfEntry( wxCommandEvent &event ); - - wxListBox *m_listbox; - wxChoice *m_choice; - wxComboBox *m_combo; - wxRadioBox *m_radio; - wxGauge *m_gauge; - wxSlider *m_slider; - wxButton *m_fontButton; - wxSpinButton *m_spinbutton; - wxTextCtrl *m_spintext; - MyTextCtrl *m_multitext; - MyTextCtrl *m_textentry; - wxCheckBox *m_checkbox; - - wxTextCtrl *m_text; - wxNotebook *m_notebook; - - DECLARE_EVENT_TABLE() -}; - -class MyFrame: public wxFrame -{ - public: - - MyFrame(wxFrame *frame, char *title, int x, int y, int w, int h); - - public: - - void OnQuit(wxCommandEvent& event); - void OnAbout(wxCommandEvent& event); - bool OnClose(void) { return TRUE; } - - DECLARE_EVENT_TABLE() -}; - -//---------------------------------------------------------------------- -// main() -//---------------------------------------------------------------------- - -IMPLEMENT_APP(MyApp) - -//---------------------------------------------------------------------- -// MyApp -//---------------------------------------------------------------------- - -const int MINIMAL_QUIT = 100; -const int MINIMAL_TEXT = 101; -const int MINIMAL_ABOUT = 102; - -bool MyApp::OnInit(void) -{ - // Create the main frame window - MyFrame *frame = new MyFrame((wxFrame *) NULL, - "Controls wxWindows App", - 50, 50, 530, 420); - - // Give it an icon - // The wxICON() macros loads an icon from a resource under Windows - // and uses an #included XPM image under GTK+ and Motif - - frame->SetIcon( wxICON(mondrian) ); - - wxMenu *file_menu = new wxMenu; - - file_menu->Append(MINIMAL_ABOUT, "&About"); - file_menu->Append(MINIMAL_QUIT, "E&xit"); - wxMenuBar *menu_bar = new wxMenuBar; - menu_bar->Append(file_menu, "&File"); - frame->SetMenuBar(menu_bar); - - frame->Show(TRUE); - - SetTopWindow(frame); - - return TRUE; -} - -//---------------------------------------------------------------------- -// MyTextCtrl -//---------------------------------------------------------------------- - -BEGIN_EVENT_TABLE(MyTextCtrl, wxTextCtrl) - EVT_CHAR(MyTextCtrl::OnChar) -END_EVENT_TABLE() - -void MyTextCtrl::OnChar(wxKeyEvent& event) -{ - switch ( event.KeyCode() ) - { - case WXK_F1: - // show current position and text length - { - long line, column, pos = GetInsertionPoint(); - PositionToXY(pos, &column, &line); - - wxLogMessage("Current position: %ld\n" - "Current line, column: (%ld, %ld)\n" - "Number of lines: %ld\n" - "Current line length: %ld\n" - "Total text length: %ld", - pos, - line, column, - GetNumberOfLines(), - GetLineLength(line), - GetLastPosition()); - } - break; - - case WXK_F2: - // go to the end - SetInsertionPointEnd(); - break; - - case WXK_F3: - // go to position 10 - SetInsertionPoint(10); - break; - - default: - event.Skip(); - } -} - -//---------------------------------------------------------------------- -// MyPanel -//---------------------------------------------------------------------- - -const int ID_NOTEBOOK = 1000; - -const int ID_LISTBOX = 130; -const int ID_LISTBOX_SEL_NUM = 131; -const int ID_LISTBOX_SEL_STR = 132; -const int ID_LISTBOX_CLEAR = 133; -const int ID_LISTBOX_APPEND = 134; -const int ID_LISTBOX_DELETE = 135; -const int ID_LISTBOX_FONT = 136; -const int ID_LISTBOX_ENABLE = 137; - -const int ID_CHOICE = 120; -const int ID_CHOICE_SEL_NUM = 121; -const int ID_CHOICE_SEL_STR = 122; -const int ID_CHOICE_CLEAR = 123; -const int ID_CHOICE_APPEND = 124; -const int ID_CHOICE_DELETE = 125; -const int ID_CHOICE_FONT = 126; -const int ID_CHOICE_ENABLE = 127; - -const int ID_COMBO = 140; -const int ID_COMBO_SEL_NUM = 141; -const int ID_COMBO_SEL_STR = 142; -const int ID_COMBO_CLEAR = 143; -const int ID_COMBO_APPEND = 144; -const int ID_COMBO_DELETE = 145; -const int ID_COMBO_FONT = 146; -const int ID_COMBO_ENABLE = 147; - -const int ID_TEXT = 150; -const int ID_PASTE_TEXT = 151; -const int ID_COPY_TEXT = 152; -const int ID_MOVE_END_ENTRY = 153; -const int ID_MOVE_END_ZONE = 154; - -const int ID_RADIOBOX = 160; -const int ID_RADIOBOX_SEL_NUM = 161; -const int ID_RADIOBOX_SEL_STR = 162; -const int ID_RADIOBOX_FONT = 163; -const int ID_RADIOBOX_ENABLE = 164; - -const int ID_RADIOBUTTON_1 = 166; -const int ID_RADIOBUTTON_2 = 167; - -const int ID_SET_FONT = 170; - -const int ID_GAUGE = 180; -const int ID_SLIDER = 181; - -const int ID_SPIN = 182; - -BEGIN_EVENT_TABLE(MyPanel, wxPanel) - EVT_SIZE ( MyPanel::OnSize) - EVT_NOTEBOOK_PAGE_CHANGED(ID_NOTEBOOK, MyPanel::OnPageChanged) - EVT_LISTBOX (ID_LISTBOX, MyPanel::OnListBox) - EVT_LISTBOX_DCLICK(ID_LISTBOX, MyPanel::OnListBoxDoubleClick) - EVT_BUTTON (ID_LISTBOX_SEL_NUM, MyPanel::OnListBoxButtons) - EVT_BUTTON (ID_LISTBOX_SEL_STR, MyPanel::OnListBoxButtons) - EVT_BUTTON (ID_LISTBOX_CLEAR, MyPanel::OnListBoxButtons) - EVT_BUTTON (ID_LISTBOX_APPEND, MyPanel::OnListBoxButtons) - EVT_BUTTON (ID_LISTBOX_DELETE, MyPanel::OnListBoxButtons) - EVT_BUTTON (ID_LISTBOX_FONT, MyPanel::OnListBoxButtons) - EVT_CHECKBOX (ID_LISTBOX_ENABLE, MyPanel::OnListBoxButtons) - EVT_CHOICE (ID_CHOICE, MyPanel::OnChoice) - EVT_BUTTON (ID_CHOICE_SEL_NUM, MyPanel::OnChoiceButtons) - EVT_BUTTON (ID_CHOICE_SEL_STR, MyPanel::OnChoiceButtons) - EVT_BUTTON (ID_CHOICE_CLEAR, MyPanel::OnChoiceButtons) - EVT_BUTTON (ID_CHOICE_APPEND, MyPanel::OnChoiceButtons) - EVT_BUTTON (ID_CHOICE_DELETE, MyPanel::OnChoiceButtons) - EVT_BUTTON (ID_CHOICE_FONT, MyPanel::OnChoiceButtons) - EVT_CHECKBOX (ID_CHOICE_ENABLE, MyPanel::OnChoiceButtons) - EVT_COMBOBOX (ID_COMBO, MyPanel::OnCombo) - EVT_BUTTON (ID_COMBO_SEL_NUM, MyPanel::OnComboButtons) - EVT_BUTTON (ID_COMBO_SEL_STR, MyPanel::OnComboButtons) - EVT_BUTTON (ID_COMBO_CLEAR, MyPanel::OnComboButtons) - EVT_BUTTON (ID_COMBO_APPEND, MyPanel::OnComboButtons) - EVT_BUTTON (ID_COMBO_DELETE, MyPanel::OnComboButtons) - EVT_BUTTON (ID_COMBO_FONT, MyPanel::OnComboButtons) - EVT_CHECKBOX (ID_COMBO_ENABLE, MyPanel::OnComboButtons) - EVT_RADIOBOX (ID_RADIOBOX, MyPanel::OnRadio) - EVT_BUTTON (ID_RADIOBOX_SEL_NUM, MyPanel::OnRadioButtons) - EVT_BUTTON (ID_RADIOBOX_SEL_STR, MyPanel::OnRadioButtons) - EVT_BUTTON (ID_RADIOBOX_FONT, MyPanel::OnRadioButtons) - EVT_CHECKBOX (ID_RADIOBOX_ENABLE, MyPanel::OnRadioButtons) - EVT_BUTTON (ID_SET_FONT, MyPanel::OnSetFont) - EVT_SLIDER (ID_SLIDER, MyPanel::OnSliderUpdate) - EVT_SPIN (ID_SPIN, MyPanel::OnSpinUpdate) - EVT_BUTTON (ID_PASTE_TEXT, MyPanel::OnPasteFromClipboard) - EVT_BUTTON (ID_COPY_TEXT, MyPanel::OnCopyToClipboard) - EVT_BUTTON (ID_MOVE_END_ZONE, MyPanel::OnMoveToEndOfText) - EVT_BUTTON (ID_MOVE_END_ENTRY, MyPanel::OnMoveToEndOfEntry) -END_EVENT_TABLE() - -MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h ) : - wxPanel( frame, -1, wxPoint(x, y), wxSize(w, h) ) -{ -// SetBackgroundColour("cadet blue"); - - m_text = new wxTextCtrl( this, -1, "This is the log window.\n", wxPoint(0,50), wxSize(100,50), wxTE_MULTILINE ); -// m_text->SetBackgroundColour("wheat"); - - m_notebook = new wxNotebook( this, ID_NOTEBOOK, wxPoint(0,0), wxSize(200,150) ); - - wxString choices[] = - { - "This", - "is one of my", - "really", - "wonderful", - "examples." - }; - -#ifdef USE_XPM - // image ids - enum - { - Image_List, Image_Choice, Image_Combo, Image_Text, Image_Radio, Image_Gauge, Image_Max - }; - - // fill the image list - wxImageList *imagelist = new wxImageList(32, 32); - - imagelist-> Add( wxBitmap( list_xpm )); - imagelist-> Add( wxBitmap( choice_xpm )); - imagelist-> Add( wxBitmap( combo_xpm )); - imagelist-> Add( wxBitmap( text_xpm )); - imagelist-> Add( wxBitmap( radio_xpm )); - imagelist-> Add( wxBitmap( gauge_xpm )); - m_notebook->SetImageList(imagelist); -#elif defined(__WXMSW__) - // load images from resources - enum - { - Image_List, Image_Choice, Image_Combo, Image_Text, Image_Radio, Image_Gauge, Image_Max - }; - wxImageList *imagelist = new wxImageList(32, 32, FALSE, Image_Max); - - static const char *s_iconNames[Image_Max] = - { - "list", "choice", "combo", "text", "radio", "gauge" - }; - - for ( size_t n = 0; n < Image_Max; n++ ) - { - wxBitmap bmp(s_iconNames[n]); - if ( !bmp.Ok() || (imagelist->Add(bmp) == -1) ) - { - wxLogWarning("Couldn't load the image '%s' for the notebook page %d.", - s_iconNames[n], n); - } - } - - m_notebook->SetImageList(imagelist); -#else - -// No images for now -#define Image_List -1 -#define Image_Choice -1 -#define Image_Combo -1 -#define Image_Text -1 -#define Image_Radio -1 -#define Image_Gauge -1 -#define Image_Max -1 - -#endif - - wxButton *button = (wxButton*)NULL; - -// m_notebook->SetBackgroundColour("cadet blue"); - - wxPanel *panel = (wxPanel*) NULL; - - panel = new wxPanel(m_notebook); -// panel->SetBackgroundColour("cadet blue"); -// panel->SetForegroundColour("blue"); - m_listbox = new wxListBox( panel, ID_LISTBOX, wxPoint(10,10), wxSize(120,70), 5, choices ); -#ifdef __WXGTK__ - m_listbox->SetToolTip( "This is a list box" ); -#endif -// m_listbox->SetBackgroundColour("wheat"); - (void)new wxButton( panel, ID_LISTBOX_SEL_NUM, "Select #2", wxPoint(180,30), wxSize(140,30) ); - (void)new wxButton( panel, ID_LISTBOX_SEL_STR, "Select 'This'", wxPoint(340,30), wxSize(140,30) ); - (void)new wxButton( panel, ID_LISTBOX_CLEAR, "Clear", wxPoint(180,80), wxSize(140,30) ); - (void)new wxButton( panel, ID_LISTBOX_APPEND, "Append 'Hi!'", wxPoint(340,80), wxSize(140,30) ); - (void)new wxButton( panel, ID_LISTBOX_DELETE, "Delete selected item", wxPoint(180,130), wxSize(140,30) ); - button = new wxButton( panel, ID_LISTBOX_FONT, "Set Italic font", wxPoint(340,130), wxSize(140,30) ); -#ifdef __WXGTK__ - button->SetToolTip( "Press here to set italic font" ); -#endif - -// button->SetForegroundColour( "red" ); - m_checkbox = new wxCheckBox( panel, ID_LISTBOX_ENABLE, "Disable", wxPoint(20,130), wxSize(140,30) ); - m_checkbox->SetValue(FALSE); -#ifdef __WXGTK__ - m_checkbox->SetToolTip( "Click here to disable the listbox" ); -#endif - m_notebook->AddPage(panel, "wxList", TRUE, Image_List); - - panel = new wxPanel(m_notebook); -// panel->SetBackgroundColour("cadet blue"); -// panel->SetForegroundColour("blue"); - m_choice = new wxChoice( panel, ID_CHOICE, wxPoint(10,10), wxSize(120,-1), 5, choices ); -// m_choice->SetBackgroundColour("wheat"); - (void)new wxButton( panel, ID_CHOICE_SEL_NUM, "Select #2", wxPoint(180,30), wxSize(140,30) ); - (void)new wxButton( panel, ID_CHOICE_SEL_STR, "Select 'This'", wxPoint(340,30), wxSize(140,30) ); - (void)new wxButton( panel, ID_CHOICE_CLEAR, "Clear", wxPoint(180,80), wxSize(140,30) ); - (void)new wxButton( panel, ID_CHOICE_APPEND, "Append 'Hi!'", wxPoint(340,80), wxSize(140,30) ); - (void)new wxButton( panel, ID_CHOICE_DELETE, "Delete selected item", wxPoint(180,130), wxSize(140,30) ); - (void)new wxButton( panel, ID_CHOICE_FONT, "Set Italic font", wxPoint(340,130), wxSize(140,30) ); - (void)new wxCheckBox( panel, ID_CHOICE_ENABLE, "Disable", wxPoint(20,130), wxSize(140,30) ); - m_notebook->AddPage(panel, "wxChoice", FALSE, Image_Choice); - - panel = new wxPanel(m_notebook); -// panel->SetBackgroundColour("cadet blue"); -// panel->SetForegroundColour("blue"); - m_combo = new wxComboBox( panel, ID_COMBO, "This", wxPoint(10,10), wxSize(120,-1), 5, choices ); -// m_combo->SetBackgroundColour("wheat"); - (void)new wxButton( panel, ID_COMBO_SEL_NUM, "Select #2", wxPoint(180,30), wxSize(140,30) ); - (void)new wxButton( panel, ID_COMBO_SEL_STR, "Select 'This'", wxPoint(340,30), wxSize(140,30) ); - (void)new wxButton( panel, ID_COMBO_CLEAR, "Clear", wxPoint(180,80), wxSize(140,30) ); - (void)new wxButton( panel, ID_COMBO_APPEND, "Append 'Hi!'", wxPoint(340,80), wxSize(140,30) ); - (void)new wxButton( panel, ID_COMBO_DELETE, "Delete selected item", wxPoint(180,130), wxSize(140,30) ); - (void)new wxButton( panel, ID_COMBO_FONT, "Set Italic font", wxPoint(340,130), wxSize(140,30) ); - (void)new wxCheckBox( panel, ID_COMBO_ENABLE, "Disable", wxPoint(20,130), wxSize(140,30) ); - m_notebook->AddPage(panel, "wxComboBox", FALSE, Image_Combo); - - panel = new wxPanel(m_notebook); -// panel->SetBackgroundColour("cadet blue"); -// panel->SetForegroundColour("blue"); - m_textentry = new MyTextCtrl( panel, ID_TEXT, "Write text here.", wxPoint(10,10), wxSize(320,28)); - (*m_textentry) << " More text."; -// m_textentry->SetBackgroundColour("wheat"); - m_multitext = new MyTextCtrl( panel, ID_TEXT, "And here.", wxPoint(10,50), wxSize(320,160), wxTE_MULTILINE ); - (*m_multitext) << " More text." - << "\nPress Fn keys to test different wxTextCtrl functions"; -// m_multitext->SetBackgroundColour("wheat"); - (void)new wxStaticBox( panel, -1, "Move cursor to the end of:", - wxPoint(345, 0), wxSize(160, 100) ); - (void)new wxButton(panel, ID_MOVE_END_ENTRY, "Text entry", - wxPoint(370, 20), wxSize(110, 30)); - (void)new wxButton(panel, ID_MOVE_END_ZONE, "Text zone", - wxPoint(370, 60), wxSize(110, 30)); - (void)new wxStaticBox( panel, -1, "wxClipboard", wxPoint(345,120), wxSize(160,100) ); - (void)new wxButton( panel, ID_COPY_TEXT, "Copy line 1", wxPoint(370,140), wxSize(110,30) ); - (void)new wxButton( panel, ID_PASTE_TEXT, "Paste text", wxPoint(370,180), wxSize(110,30) ); - m_notebook->AddPage(panel, "wxTextCtrl" , FALSE, Image_Text); - - wxString choices2[] = - { - "Wonderful", - "examples.", - }; - - panel = new wxPanel(m_notebook); -// panel->SetBackgroundColour("cadet blue"); -// panel->SetForegroundColour("blue"); - m_radio = new wxRadioBox( panel, ID_RADIOBOX, "That", wxPoint(10,160), wxSize(-1,-1), 2, choices2, 1, wxRA_SPECIFY_ROWS ); -// m_radio->SetBackgroundColour("wheat"); - m_radio = new wxRadioBox( panel, ID_RADIOBOX, "This", wxPoint(10,10), wxSize(-1,-1), 5, choices, 2, wxRA_SPECIFY_COLS ); -// m_radio->SetBackgroundColour("wheat"); - (void)new wxButton( panel, ID_RADIOBOX_SEL_NUM, "Select #2", wxPoint(180,30), wxSize(140,30) ); - (void)new wxButton( panel, ID_RADIOBOX_SEL_STR, "Select 'This'", wxPoint(180,80), wxSize(140,30) ); - m_fontButton = new wxButton( panel, ID_SET_FONT, "Set more Italic font", wxPoint(340,30), wxSize(140,30) ); -// m_fontButton->SetForegroundColour("blue"); - (void)new wxButton( panel, ID_RADIOBOX_FONT, "Set Italic font", wxPoint(340,80), wxSize(140,30) ); - (void)new wxCheckBox( panel, ID_RADIOBOX_ENABLE, "Disable", wxPoint(340,130), wxSize(140,30) ); - wxRadioButton *rb = new wxRadioButton( panel, ID_RADIOBUTTON_1, "Radiobutton1", wxPoint(210,170), wxSize(110,30) ); - rb->SetValue( FALSE ); - (void)new wxRadioButton( panel, ID_RADIOBUTTON_2, "Radiobutton2", wxPoint(340,170), wxSize(110,30) ); - m_notebook->AddPage(panel, "wxRadioBox", FALSE, Image_Radio); - - panel = new wxPanel(m_notebook); -// panel->SetBackgroundColour("cadet blue"); -// panel->SetForegroundColour("blue"); - (void)new wxStaticBox( panel, -1, "wxGauge and wxSlider", wxPoint(10,10), wxSize(180,130) ); - m_gauge = new wxGauge( panel, -1, 200, wxPoint(18,50), wxSize(155, 30) ); -// m_gauge->SetBackgroundColour("wheat"); - m_slider = new wxSlider( panel, ID_SLIDER, 0, 0, 200, wxPoint(18,90), wxSize(155,-1) ); -// m_slider->SetBackgroundColour("wheat"); - (void)new wxStaticBox( panel, -1, "Explanation", wxPoint(200,10), wxSize(290,130) ); -#ifdef __WXMOTIF__ - // No wrapping text in wxStaticText yet :-( - (void)new wxStaticText( panel, -1, - "Drag the slider!", - wxPoint(208,30), - wxSize(210, -1) - ); -#else - (void)new wxStaticText( panel, -1, - "In order see the gauge (aka progress bar)\n" - "control do something you have to drag the\n" - "handle of the slider to the right.\n" - "\n" - "This is also supposed to demonstrate how\n" - "to use static controls.\n", - wxPoint(208,25), - wxSize(210, 110) - ); -#endif - m_spintext = new wxTextCtrl( panel, -1, "0", wxPoint(20,160), wxSize(80,-1) ); -// m_spintext->SetBackgroundColour("wheat"); - m_spinbutton = new wxSpinButton( panel, ID_SPIN, wxPoint(103,159), wxSize(-1,-1) ); -// m_spinbutton->SetBackgroundColour("wheat"); - m_spinbutton->SetRange(0,100); - - m_notebook->AddPage(panel, "wxGauge", FALSE, Image_Gauge); -} - -void MyPanel::OnPasteFromClipboard( wxCommandEvent &WXUNUSED(event) ) -{ -#ifdef __WXGTK__ - - if (!wxTheClipboard->Open()) - { - *m_text << "Error opening the clipboard." << "\n"; - - return; - } - else - { - *m_text << "Successfully opened the clipboard." << "\n"; - } - - wxTextDataObject data; - - if (wxTheClipboard->IsSupported( data )) - { - *m_text << "Clipboard supports requested format." << "\n"; - - if (wxTheClipboard->GetData( data )) - { - *m_text << "Successfully retrieved data from the clipboard." << "\n"; - *m_multitext << data.GetText() << "\n"; - } - else - { - *m_text << "Error getting data from the clipboard." << "\n"; - } - } - else - { - *m_text << "Clipboard doesn't support requested format." << "\n"; - } - - wxTheClipboard->Close(); - - *m_text << "Closed the clipboard." << "\n"; - -#endif -} - -void MyPanel::OnCopyToClipboard( wxCommandEvent &WXUNUSED(event) ) -{ -#ifdef __WXGTK__ - - wxString text( m_multitext->GetLineText(0) ); - - if (text.IsEmpty()) return; - - if (!wxTheClipboard->Open()) - { - *m_text << "Error opening the clipboard." << "\n"; - - return; - } - else - { - *m_text << "Successfully opened the clipboard." << "\n"; - } - - wxTextDataObject *data = new wxTextDataObject( text ); - - if (!wxTheClipboard->SetData( data )) - { - *m_text << "Error while copying to the clipboard." << "\n"; - } - else - { - *m_text << "Successfully copied data to the clipboard." << "\n"; - } - - wxTheClipboard->Close(); - - *m_text << "Closed the clipboard." << "\n"; - -#endif -} - -void MyPanel::OnMoveToEndOfText( wxCommandEvent &event ) -{ - m_multitext->SetInsertionPointEnd(); - m_multitext->SetFocus(); -} - -void MyPanel::OnMoveToEndOfEntry( wxCommandEvent &event ) -{ - m_textentry->SetInsertionPointEnd(); - m_textentry->SetFocus(); -} - -void MyPanel::OnSize( wxSizeEvent& WXUNUSED(event) ) -{ - int x = 0; - int y = 0; - GetClientSize( &x, &y ); - - if (m_notebook) m_notebook->SetSize( 2, 2, x-4, y*2/3-4 ); - if (m_text) m_text->SetSize( 2, y*2/3+2, x-4, y/3-4 ); -} - -void MyPanel::OnPageChanged( wxNotebookEvent &event ) -{ - *m_text << "Notebook selection is " << event.GetSelection() << "\n"; -} - -void MyPanel::OnListBox( wxCommandEvent &event ) -{ - m_text->WriteText( "ListBox selection string is: " ); - m_text->WriteText( event.GetString() ); - m_text->WriteText( "\n" ); -} - -void MyPanel::OnListBoxDoubleClick( wxCommandEvent &event ) -{ - m_text->WriteText( "ListBox double click string is: " ); - m_text->WriteText( event.GetString() ); - m_text->WriteText( "\n" ); -} - -void MyPanel::OnListBoxButtons( wxCommandEvent &event ) -{ - switch (event.GetId()) - { - case ID_LISTBOX_ENABLE: - { - m_text->WriteText("Checkbox clicked.\n"); - m_listbox->Enable( event.GetInt() == 0 ); - break; - } - case ID_LISTBOX_SEL_NUM: - { - m_listbox->SetSelection( 2 ); - break; - } - case ID_LISTBOX_SEL_STR: - { - m_listbox->SetStringSelection( "This" ); - break; - } - case ID_LISTBOX_CLEAR: - { - m_listbox->Clear(); - break; - } - case ID_LISTBOX_APPEND: - { - m_listbox->Append( "Hi!" ); - break; - } - case ID_LISTBOX_DELETE: - { - int idx = m_listbox->GetSelection(); - m_listbox->Delete( idx ); - break; - } - case ID_LISTBOX_FONT: - { - m_listbox->SetFont( *wxITALIC_FONT ); - m_checkbox->SetFont( *wxITALIC_FONT ); - break; - } - } -} - -void MyPanel::OnChoice( wxCommandEvent &event ) -{ - m_text->WriteText( "Choice selection string is: " ); - m_text->WriteText( event.GetString() ); - m_text->WriteText( "\n" ); -} - -void MyPanel::OnChoiceButtons( wxCommandEvent &event ) -{ - switch (event.GetId()) - { - case ID_CHOICE_ENABLE: - { - m_choice->Enable( event.GetInt() == 0 ); - break; - } - case ID_CHOICE_SEL_NUM: - { - m_choice->SetSelection( 2 ); - break; - } - case ID_CHOICE_SEL_STR: - { - m_choice->SetStringSelection( "This" ); - break; - } - case ID_CHOICE_CLEAR: - { - m_choice->Clear(); - break; - } - case ID_CHOICE_APPEND: - { - m_choice->Append( "Hi!" ); - break; - } - case ID_CHOICE_DELETE: - { - int idx = m_choice->GetSelection(); - m_choice->Delete( idx ); - break; - } - case ID_CHOICE_FONT: - { - m_choice->SetFont( *wxITALIC_FONT ); - break; - } - } -} - -void MyPanel::OnCombo( wxCommandEvent &event ) -{ - m_text->WriteText( "ComboBox selection string is: " ); - m_text->WriteText( event.GetString() ); - m_text->WriteText( "\n" ); -} - -void MyPanel::OnComboButtons( wxCommandEvent &event ) -{ - switch (event.GetId()) - { - case ID_COMBO_ENABLE: - { - m_combo->Enable( event.GetInt() == 0 ); - break; - } - case ID_COMBO_SEL_NUM: - { - m_combo->SetSelection( 2 ); - break; - } - case ID_COMBO_SEL_STR: - { - m_combo->SetStringSelection( "This" ); - break; - } - case ID_COMBO_CLEAR: - { - m_combo->Clear(); - break; - } - case ID_COMBO_APPEND: - { - m_combo->Append( "Hi!" ); - break; - } - case ID_COMBO_DELETE: - { - int idx = m_combo->GetSelection(); - m_combo->Delete( idx ); - break; - } - case ID_COMBO_FONT: - { - m_combo->SetFont( *wxITALIC_FONT ); - break; - } - } -} - -void MyPanel::OnRadio( wxCommandEvent &event ) -{ - m_text->WriteText( "RadioBox selection string is: " ); - m_text->WriteText( event.GetString() ); - m_text->WriteText( "\n" ); -} - -void MyPanel::OnRadioButtons( wxCommandEvent &event ) -{ - switch (event.GetId()) - { - case ID_RADIOBOX_ENABLE: - { - m_radio->Enable( event.GetInt() == 0 ); - break; - } - case ID_RADIOBOX_SEL_NUM: - { - m_radio->SetSelection( 2 ); - break; - } - case ID_RADIOBOX_SEL_STR: - { - m_radio->SetStringSelection( "This" ); - break; - } - case ID_RADIOBOX_FONT: - { - m_radio->SetFont( *wxITALIC_FONT ); - break; - } - } -} - -void MyPanel::OnSetFont( wxCommandEvent &WXUNUSED(event) ) -{ - m_fontButton->SetFont( *wxITALIC_FONT ); - m_text->SetFont( *wxITALIC_FONT ); -} - -void MyPanel::OnSliderUpdate( wxCommandEvent &WXUNUSED(event) ) -{ - m_gauge->SetValue( m_slider->GetValue() ); -} - -void MyPanel::OnSpinUpdate( wxSpinEvent &event ) -{ - wxString value; - value.sprintf( "%d", (int)event.GetPosition() ); - m_spintext->SetValue( value ); -} - -MyPanel::~MyPanel() -{ - delete m_notebook->GetImageList(); -} - -//---------------------------------------------------------------------- -// MyFrame -//---------------------------------------------------------------------- - -BEGIN_EVENT_TABLE(MyFrame, wxFrame) - EVT_MENU(MINIMAL_QUIT, MyFrame::OnQuit) - EVT_MENU(MINIMAL_ABOUT, MyFrame::OnAbout) -END_EVENT_TABLE() - -MyFrame::MyFrame(wxFrame *frame, char *title, int x, int y, int w, int h): - wxFrame(frame, -1, title, wxPoint(x, y), wxSize(w, h)) -{ - (void)new MyPanel( this, 10, 10, 300, 100 ); -} - -void MyFrame::OnQuit (wxCommandEvent& WXUNUSED(event) ) -{ - Close(TRUE); -} - -void MyFrame::OnAbout( wxCommandEvent& WXUNUSED(event) ) -{ - wxMessageDialog dialog(this, "This is a control sample", "About Controls", wxOK ); - dialog.ShowModal(); -} diff --git a/samples/controls/controls.def b/samples/controls/controls.def deleted file mode 100644 index a6c3f21cf7..0000000000 --- a/samples/controls/controls.def +++ /dev/null @@ -1,8 +0,0 @@ -NAME Controls -DESCRIPTION 'wxWindows controls sample' -EXETYPE WINDOWS -STUB 'WINSTUB.EXE' -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE -HEAPSIZE 4048 -STACKSIZE 16000 diff --git a/samples/controls/controls.rc b/samples/controls/controls.rc deleted file mode 100644 index 746abb4618..0000000000 --- a/samples/controls/controls.rc +++ /dev/null @@ -1,10 +0,0 @@ -mondrian ICON "mondrian.ico" - -choice BITMAP "icons/choice.bmp" -combo BITMAP "icons/combo.bmp" -gauge BITMAP "icons/gauge.bmp" -list BITMAP "icons/list.bmp" -radio BITMAP "icons/radio.bmp" -text BITMAP "icons/text.bmp" - -#include "wx/msw/wx.rc" diff --git a/samples/controls/icons/choice.bmp b/samples/controls/icons/choice.bmp deleted file mode 100644 index 4ee793ebaec4922a44c228bb415c92a00b8e6fdd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2102 zcmeH{K@Nl<3`I+w#U$=Lfy+682blfbinDPoq*l^M!N#y0eo`zvenlXDf7=@lZ7+aN z%GNU+oFI)aGY7Z?DU!VR5JG?$cno@8S9urWW%`?KC?)4CA7 ziuc^j(GJS^;|?QNAX`z4ky1*ObDlQOV7`GrdIR_ajJ83^dm=VS;b8F^*^9Th-&ALv zt@PZI1m)ZJZ5Jh_`qM?H=pBdXM<4 e9P4p=9{ zG!2Z9GypCDhA_cIF#r~WXn+|GK!%UXqXiEmJb0J~NBH1Qz7Y4}mj|gKAK*57XvhEn D{8;-* diff --git a/samples/controls/icons/gauge.xpm b/samples/controls/icons/gauge.xpm deleted file mode 100644 index 947bbdf024..0000000000 --- a/samples/controls/icons/gauge.xpm +++ /dev/null @@ -1,27 +0,0 @@ -/* XPM */ -static char * gauge_xpm[] = { -/* width height ncolors chars_per_pixel */ -"16 16 5 1", -/* colors */ -" s None c None", -". c #000000", -"+ c #000080", -"@ c #c0c0c0", -"# c #808080", -/* pixels */ -" ", -" ", -" ", -"################", -"#..............#", -"#.++++++++@@@@@#", -"#.++++++++@@@@@#", -"#.++++++++@@@@@#", -"#.++++++++@@@@@#", -"#.++++++++@@@@@#", -"#.++++++++@@@@@#", -"#.++++++++@@@@@#", -"################", -" ", -" ", -" "}; diff --git a/samples/controls/icons/list.bmp b/samples/controls/icons/list.bmp deleted file mode 100644 index 07277af7e6a8aff6d6656dcab74848ffb9d1f6f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2102 zcmeH{!3}^Q3`IZS!Ni*rcys~>@a|U3##%@%i5^O7>`{JFV|aesLc@M+BQ9+Nu$H%_ zhC>BqeV#br3Zy8CF(RdeoO6%92Ym*9Gy~2oz&Axd*Le`+J^9!#;Gl87+1h@Mb4zXi zlQ-M1^=n-2k6iEaTm4#n8n@=R`lb4w=c{o!zis|F=ezUcTBRrZC35#i-+b2z)m8y5 diff --git a/samples/controls/icons/list.xpm b/samples/controls/icons/list.xpm deleted file mode 100644 index a7da5be9c9..0000000000 --- a/samples/controls/icons/list.xpm +++ /dev/null @@ -1,27 +0,0 @@ -/* XPM */ -static char * list_xpm[] = { -/* width height ncolors chars_per_pixel */ -"16 16 5 1", -/* colors */ -" s None c None", -". c #000000", -"+ c #c0c0c0", -"@ c #808080", -"# c #ffffff", -/* pixels */ -"@@@@@@@@@@@@@@@@", -"@..............@", -"@.##########+++@", -"@.##########+.+@", -"@.++++++++++...@", -"@.##########+++@", -"@.##########+++@", -"@.+++++++++++++@", -"@.##########+++@", -"@.##########+++@", -"@.+++++++++++++@", -"@.##########+++@", -"@.##########...@", -"@.##########+.+@", -"@.+++++++++++++@", -"@@@@@@@@@@@@@@@@"}; diff --git a/samples/controls/icons/radio.bmp b/samples/controls/icons/radio.bmp deleted file mode 100644 index ca0a837dc02f64f80faa363ccbc787b5390ebd65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2102 zcmeH{!41P83`IXQhf2M5f*vzL2I#$8F&k@9|2PN{2@_S3awuPNFg$D^SiC>W9jlfJ zn8kZ-=CA=7e?HXU1kywy1jHDTQW`e?!Ki^hssVige*b#!3;{>DZ^+5}#P|jlaxT|{ zl-2h6Z4TU4mHpQ7M>ywL@jcEBSn(G3UaO#e{vI!p>ec7pQ{L=3_s1+0+g!=)=lp%n dnG|n0x9V#ai~@7d%80nsX2RB>I>V){&oNW diff --git a/samples/controls/icons/radio.xpm b/samples/controls/icons/radio.xpm deleted file mode 100644 index e4695e828f..0000000000 --- a/samples/controls/icons/radio.xpm +++ /dev/null @@ -1,27 +0,0 @@ -/* XPM */ -static char * radio_xpm[] = { -/* width height ncolors chars_per_pixel */ -"16 16 5 1", -/* colors */ -" s None c None", -". c #000000", -"+ c #c0c0c0", -"@ c #808080", -"# c #ffffff", -/* pixels */ -" . ", -" .. .. ", -"+++.+.++...++++.", -"+@.@...@@..@@@@.", -"+@.+++.+....++@.", -"+@++++++++++++@.", -"+@++++++++++++@.", -"+@++++...+++++@.", -"+@+++.###@++++@.", -"+@+++.#.#@++++@.", -"+@+++.###@++++@.", -"+@++++@@@+++++@.", -"+@++++++++++++@.", -"+@++++++++++++@.", -"+@@@@@@@@@@@@@@.", -"................"}; diff --git a/samples/controls/icons/stattext.xpm b/samples/controls/icons/stattext.xpm deleted file mode 100644 index 1ff8e94d4e..0000000000 --- a/samples/controls/icons/stattext.xpm +++ /dev/null @@ -1,24 +0,0 @@ -/* XPM */ -static char * stattext_xpm[] = { -/* width height ncolors chars_per_pixel */ -"16 16 2 1", -/* colors */ -" s None c None", -". c #000000", -/* pixels */ -" ", -" ", -" ", -" .. ", -" .. ", -" .... ", -" .... .... ", -" . . .. .. ", -" .. .. .... ", -" .. .. .. .. ", -" ...... .. .. ", -".. .. .. .. ", -".. .. ..... ", -" ", -" ", -" "}; diff --git a/samples/controls/icons/text.bmp b/samples/controls/icons/text.bmp deleted file mode 100644 index aedf05e5ca9052b4cc359422f9a21a1a047226c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2102 zcmZ?rHRE6a12Yx|1`Qxf0g4$Jpb|iFA#Mm}U<68nFc7q~v@jeyc8uZw|No=5 zzz9kMkP=|%l8h7s1_maa0Ax5}d1f4di3y?~hcq)n9uofO>WG(TW@cbO*UgM%KCR^` dcR!} -#endif //WX_PRECOMP - -#ifdef __WXGTK__ -#include "db.xpm" -#endif - -#include /* Included strictly for reading the text file with the database parameters */ - -#include /* Required in the file which will get the data source connection */ -#include /* Has the wxTable object from which all data objects will inherit their data table functionality */ - -extern DbList* WXDLLEXPORT PtrBegDbList; /* from db.cpp, used in getting back error results from db connections */ - -#include "dbtest.h" /* Header file for this demonstration program */ -#include "listdb.h" /* Code to support the "Lookup" button on the editor dialog */ - -IMPLEMENT_APP(DatabaseDemoApp) - -extern char ListDB_Selection[]; /* Used to return the first column value for the selected line from the listDB routines */ -extern char ListDB_Selection2[]; /* Used to return the second column value for the selected line from the listDB routines */ - -DatabaseDemoFrame *DemoFrame; /* Pointer to the main frame */ - -/* Pointer to the main database connection used in the program. This - * pointer would normally be used for doing things as database lookups - * for user login names and passwords, getting workstation settings, etc. - * ---> IMPORTANT <--- - * - * For each database object created which uses this wxDB pointer - * connection to the database, when a CommitTrans() or RollBackTrans() - * will commit or rollback EVERY object which uses this wxDB pointer. - * - * To allow each table object (those derived from wxTable) to be - * individually committed or rolled back, you MUST use a different - * instance of wxDB in the constructor of the table. Doing so creates - * more overhead, and will use more database connections (some DBs have - * connection limits...), so use connections sparringly. - * - * It is recommended that one "main" database connection be created for - * the entire program to use for READ-ONLY database accesses, but for each - * table object which will do a CommitTrans() or RollbackTrans() that a - * new wxDB object be created and used for it. - */ - -wxDB *READONLY_DB; - -/* - * This function will return the exact string(s) from the database engine - * indicating all error conditions which have just occured during the - * last call to the database engine. - * - * This demo uses the returned string by displaying it in a wxMessageBox. The - * formatting therefore is not the greatest, but this is just a demo, not a - * finished product. :-) gt - * - * NOTE: The value returned by this function is for temporary use only and - * should be copied for long term use - */ - -char *GetExtendedDBErrorMsg(char *ErrFile, int ErrLine) -{ - static wxString msg; - - wxString tStr; - - if (ErrFile || ErrLine) - { - msg += "File: "; - msg += ErrFile; - msg += " Line: "; - tStr.Printf("%d",ErrLine); - msg += tStr.GetData(); - msg += "\n"; - } - - msg.Append ("\nODBC errors:\n"); - msg += "\n"; - - /* Scan through each database connection displaying - * any ODBC errors that have occured. */ - for (DbList *pDbList = PtrBegDbList; pDbList; pDbList = pDbList->PtrNext) - { - // Skip over any free connections - if (pDbList->Free) - continue; - // Display errors for this connection - for (int i = 0; i < DB_MAX_ERROR_HISTORY; i++) - { - if (pDbList->PtrDb->errorList[i]) - { - msg.Append(pDbList->PtrDb->errorList[i]); - if (strcmp(pDbList->PtrDb->errorList[i],"") != 0) - msg.Append("\n"); - } - } - } - msg += "\n"; - - return (char*) (const char*) msg; -} // GetExtendedDBErrorMsg - - -bool DatabaseDemoApp::OnInit() -{ - // Create the main frame window - DemoFrame = new DatabaseDemoFrame(NULL, "wxWindows Database Demo", wxPoint(50, 50), wxSize(537, 480)); - - // Give it an icon - DemoFrame->SetIcon(wxICON(db)); - - // Make a menubar - wxMenu *file_menu = new wxMenu; - file_menu->Append(FILE_CREATE, "&Create contact table"); - file_menu->Append(FILE_EXIT, "E&xit"); - - wxMenu *edit_menu = new wxMenu; - edit_menu->Append(EDIT_PARAMETERS, "&Parameters..."); - - wxMenu *about_menu = new wxMenu; - about_menu->Append(ABOUT_DEMO, "&About"); - - wxMenuBar *menu_bar = new wxMenuBar; - menu_bar->Append(file_menu, "&File"); - menu_bar->Append(edit_menu, "&Edit"); - menu_bar->Append(about_menu, "&About"); - DemoFrame->SetMenuBar(menu_bar); - - // Initialize the ODBC Environment for Database Operations - if (SQLAllocEnv(&DbConnectInf.Henv) != SQL_SUCCESS) - { - wxMessageBox("A problem occured while trying to get a connection to the data source","DB CONNECTION ERROR",wxOK | wxICON_EXCLAMATION); - return NULL; - } - - FILE *paramFile; - if ((paramFile = fopen(paramFilename, "r")) == NULL) - { - wxString tStr; - tStr.Printf("Unable to open the parameter file '%s' for reading.\n\nYou must specify the data source, user name, and\npassword that will be used and save those settings.",paramFilename); - wxMessageBox(tStr,"File I/O Error...",wxOK | wxICON_EXCLAMATION); - DemoFrame->BuildParameterDialog(NULL); - if ((paramFile = fopen(paramFilename, "r")) == NULL) - return FALSE; - } - - char buffer[1000+1]; - fgets(buffer, sizeof(params.ODBCSource), paramFile); - buffer[strlen(buffer)-1] = '\0'; - strcpy(params.ODBCSource,buffer); - - fgets(buffer, sizeof(params.UserName), paramFile); - buffer[strlen(buffer)-1] = '\0'; - strcpy(params.UserName,buffer); - - fgets(buffer, sizeof(params.Password), paramFile); - buffer[strlen(buffer)-1] = '\0'; - strcpy(params.Password,buffer); - - fclose(paramFile); - - // Connect to datasource - strcpy(DbConnectInf.Dsn, params.ODBCSource); // ODBC data source name (created with ODBC Administrator under Win95/NT) - strcpy(DbConnectInf.Uid, params.UserName); // database username - must already exist in the data source - strcpy(DbConnectInf.AuthStr, params.Password); // password database username - READONLY_DB = GetDbConnection(&DbConnectInf); - if (READONLY_DB == 0) - { - wxMessageBox("Unable to connect to the data source.\n\nCheck the name of your data source to verify it has been correctly entered/spelled.\n\nWith some databases, the user name and password must\nbe created with full rights to the CONTACT table prior to making a connection\n(using tools provided by the database manufacturer)", "DB CONNECTION ERROR...",wxOK | wxICON_EXCLAMATION); - DemoFrame->BuildParameterDialog(NULL); - strcpy(DbConnectInf.Dsn, ""); - strcpy(DbConnectInf.Uid, ""); - strcpy(DbConnectInf.AuthStr, ""); - wxMessageBox("Now exiting program.\n\nRestart program to try any new settings.","Notice...",wxOK | wxICON_INFORMATION); - return(FALSE); - } - - DemoFrame->BuildEditorDialog(); - - // Show the frame - DemoFrame->Show(TRUE); - - return TRUE; -} // DatabaseDemoApp::OnInit() - -BEGIN_EVENT_TABLE(DatabaseDemoFrame, wxFrame) - EVT_MENU(FILE_CREATE, DatabaseDemoFrame::OnCreate) - EVT_MENU(FILE_EXIT, DatabaseDemoFrame::OnExit) - EVT_MENU(EDIT_PARAMETERS, DatabaseDemoFrame::OnEditParameters) - EVT_MENU(ABOUT_DEMO, DatabaseDemoFrame::OnAbout) - EVT_CLOSE(DatabaseDemoFrame::OnCloseWindow) -END_EVENT_TABLE() - -// DatabaseDemoFrame constructor -DatabaseDemoFrame::DatabaseDemoFrame(wxFrame *frame, const wxString& title, - const wxPoint& pos, const wxSize& size): - wxFrame(frame, -1, title, pos, size) -{ -// Put any code in necessary for initializing the main frame here -} - -void DatabaseDemoFrame::OnCreate(wxCommandEvent& event) -{ - CreateDataTable(); -} - -void DatabaseDemoFrame::OnExit(wxCommandEvent& event) -{ - this->Destroy(); -} - -void DatabaseDemoFrame::OnEditParameters(wxCommandEvent& event) -{ - if ((pEditorDlg->mode != mCreate) && (pEditorDlg->mode != mEdit)) - BuildParameterDialog(this); - else - wxMessageBox("Cannot change database parameters while creating or editing a record","Notice...",wxOK | wxICON_INFORMATION); -} - -void DatabaseDemoFrame::OnAbout(wxCommandEvent& event) -{ - wxMessageBox("wxWindows sample program for database classes\n\nContributed on 27 July 1998","About...",wxOK | wxICON_INFORMATION); -} - -void DatabaseDemoFrame::OnCloseWindow(wxCloseEvent& event) -{ - // Put any additional checking necessary to make certain it is alright - // to close the program here that is not done elsewhere - - this->Destroy(); -} // DatabaseDemoFrame::OnClose() - - -void DatabaseDemoFrame::CreateDataTable() -{ - bool Ok = (wxMessageBox("Any data currently residing in the table will be erased.\n\nAre you sure?","Confirm",wxYES_NO|wxICON_QUESTION) == wxYES); - - if (!Ok) - return; - - wxBeginBusyCursor(); - - bool success = TRUE; - - Ccontact *Contact = new Ccontact(); - if (!Contact) - { - wxEndBusyCursor(); - wxMessageBox("Error allocating memory for 'Ccontact'object.\n\nTable was not created.","Error...",wxOK | wxICON_EXCLAMATION); - return; - } - - if (!Contact->CreateTable()) - { - wxEndBusyCursor(); - wxString tStr; - tStr = "Error creating CONTACTS table.\nTable was not created.\n\n"; - tStr += GetExtendedDBErrorMsg(__FILE__,__LINE__); - wxMessageBox(tStr,"ODBC Error...",wxOK | wxICON_EXCLAMATION); - success = FALSE; - } - else - { - if (!Contact->CreateIndexes()) - { - wxEndBusyCursor(); - wxString tStr; - tStr = "Error creating CONTACTS indexes.\nIndexes will be unavailable.\n\n"; - tStr += GetExtendedDBErrorMsg(__FILE__,__LINE__); - wxMessageBox(tStr,"ODBC Error...",wxOK | wxICON_EXCLAMATION); - success = FALSE; - } - } - wxEndBusyCursor(); - - delete Contact; - - if (success) - wxMessageBox("Table and index(es) were successfully created.","Notice...",wxOK | wxICON_INFORMATION); -} // DatabaseDemoFrame::CreateDataTable() - - -void DatabaseDemoFrame::BuildEditorDialog() -{ - pEditorDlg = new CeditorDlg(this); - if (!pEditorDlg) - wxMessageBox("Unable to create the editor dialog for some reason","Error...",wxOK | wxICON_EXCLAMATION); -} // DatabaseDemoFrame::BuildEditorDialog() - - -void DatabaseDemoFrame::BuildParameterDialog(wxWindow *parent) -{ - pParamDlg = new CparameterDlg(parent); - - if (!pParamDlg) - wxMessageBox("Unable to create the parameter dialog for some reason","Error...",wxOK | wxICON_EXCLAMATION); -} // DatabaseDemoFrame::BuildParameterDialog() - - -/* - * Constructor note: If no wxDB object is passed in, a new connection to the database - * is created for this instance of Ccontact. This can be a slow process depending - * on the database engine being used, and some database engines have a limit on the - * number of connections (either hard limits, or license restricted) so care should - * be used to use as few connections as is necessary. - * IMPORTANT: Objects which share a wxDB pointer are ALL acted upon whenever a member - * function of pDb is called (i.e. CommitTrans() or RollbackTrans(), so if modifying - * or creating a table objects which use the same pDb, know that all the objects - * will be committed or rolled back when any of the objects has this function call made. - */ -Ccontact::Ccontact (wxDB *pwxDB) : wxTable(pwxDB ? pwxDB : GetDbConnection(&DbConnectInf),CONTACT_TABLE_NAME,CONTACT_NO_COLS) -{ - // This is used to represent whether the database connection should be released - // when this instance of the object is deleted. If using the same connection - // for multiple instance of database objects, then the connection should only be - // released when the last database instance using the connection is deleted - freeDbConn = !pwxDB; - - SetupColumns(); - -} // Ccontact Constructor - - -void Ccontact::Initialize() -{ - Name[0] = 0; - Addr1[0] = 0; - Addr2[0] = 0; - City[0] = 0; - State[0] = 0; - PostalCode[0] = 0; - Country[0] = 0; - JoinDate.year = 1980; - JoinDate.month = 1; - JoinDate.day = 1; - JoinDate.hour = 0; - JoinDate.minute = 0; - JoinDate.second = 0; - JoinDate.fraction = 0; - NativeLanguage = langENGLISH; - IsDeveloper = FALSE; - Contributions = 0; - LinesOfCode = 0L; -} // Ccontact::Initialize - - -Ccontact::~Ccontact() -{ - if (freeDbConn) - { - if (!FreeDbConnection(pDb)) - { - wxString tStr; - tStr = "Unable to Free the Ccontact data table handle\n\n"; - tStr += GetExtendedDBErrorMsg(__FILE__,__LINE__); - wxMessageBox(tStr,"ODBC Error...",wxOK | wxICON_EXCLAMATION); - } - } -} // Ccontract destructor - - -/* - * Handles setting up all the connections for the interface from the wxTable - * functions to interface to the data structure used to store records in - * memory, and for all the column definitions that define the table structure - */ -void Ccontact::SetupColumns() -{ - SetColDefs ( 0,"NAME", DB_DATA_TYPE_VARCHAR, Name, SQL_C_CHAR, sizeof(Name), TRUE, TRUE); // Primary index - SetColDefs ( 1,"ADDRESS1", DB_DATA_TYPE_VARCHAR, Addr1, SQL_C_CHAR, sizeof(Addr1), FALSE,TRUE); - SetColDefs ( 2,"ADDRESS2", DB_DATA_TYPE_VARCHAR, Addr2, SQL_C_CHAR, sizeof(Addr2), FALSE,TRUE); - SetColDefs ( 3,"CITY", DB_DATA_TYPE_VARCHAR, City, SQL_C_CHAR, sizeof(City), FALSE,TRUE); - SetColDefs ( 4,"STATE", DB_DATA_TYPE_VARCHAR, State, SQL_C_CHAR, sizeof(State), FALSE,TRUE); - SetColDefs ( 5,"POSTAL_CODE", DB_DATA_TYPE_VARCHAR, PostalCode, SQL_C_CHAR, sizeof(PostalCode), FALSE,TRUE); - SetColDefs ( 6,"COUNTRY", DB_DATA_TYPE_VARCHAR, Country, SQL_C_CHAR, sizeof(Country), FALSE,TRUE); - SetColDefs ( 7,"JOIN_DATE", DB_DATA_TYPE_DATE, &JoinDate, SQL_C_TIMESTAMP, sizeof(JoinDate), FALSE,TRUE); - SetColDefs ( 8,"NATIVE_LANGUAGE", DB_DATA_TYPE_INTEGER, &NativeLanguage, SQL_C_ENUM, sizeof(NativeLanguage), FALSE,TRUE); - SetColDefs ( 9,"IS_DEVELOPER", DB_DATA_TYPE_INTEGER, &IsDeveloper, SQL_C_BOOLEAN, sizeof(bool), FALSE,TRUE); - SetColDefs (10,"CONTRIBUTIONS", DB_DATA_TYPE_INTEGER, &Contributions, SQL_C_USHORT, sizeof(Contributions), FALSE,TRUE); - SetColDefs (11,"LINES_OF_CODE", DB_DATA_TYPE_INTEGER, &LinesOfCode, SQL_C_ULONG, sizeof(LinesOfCode), FALSE,TRUE); -} // Ccontact::SetupColumns - - -bool Ccontact::CreateIndexes(void) -{ - // This index could easily be accomplished with an "orderBy" clause, - // but is done to show how to construct a non-primary index. - wxString indexName; - CidxDef idxDef[2]; - - bool Ok = TRUE; - - strcpy(idxDef[0].ColName, "IS_DEVELOPER"); - idxDef[0].Ascending = TRUE; - - strcpy(idxDef[1].ColName, "NAME"); - idxDef[1].Ascending = TRUE; - - indexName = CONTACT_TABLE_NAME; - indexName += "_IDX1"; - Ok = CreateIndex((char*) (const char*) indexName, TRUE, 2, idxDef); - - return Ok; -} // Ccontact::CreateIndexes() - - -/* - * Having a function to do a query on the primary key (and possibly others) is - * very efficient and tighter coding so that it is available where ever the object - * is. Great for use with multiple tables when not using views or outer joins - */ -bool Ccontact::FetchByName(char *name) -{ - whereStr.Printf("NAME = '%s'",name); - where = (char*) (const char*) this->whereStr; - orderBy = 0; - - if (!Query()) - return(FALSE); - - // Fetch the record - return(GetNext()); - -} // Ccontact::FetchByName() - - -/* - * - * ************* DIALOGS *************** - * - */ - - -/* CeditorDlg constructor - * - * Creates the dialog used for creating/editing/deleting/copying a Ccontact object. - * This dialog actually is drawn in the main frame of the program - * - * An instance of Ccontact is created - "Contact" - which is used to hold the Ccontact - * object that is currently being worked with. - */ - -BEGIN_EVENT_TABLE(CeditorDlg, wxPanel) - EVT_BUTTON(-1, CeditorDlg::OnButton) -END_EVENT_TABLE() - -CeditorDlg::CeditorDlg(wxWindow *parent) : wxPanel (parent, 1, 1, 460, 455) -{ - // Since the ::OnCommand() function is overridden, this prevents the widget - // detection in ::OnCommand() until all widgets have been initialized to prevent - // uninitialized pointers from crashing the program - widgetPtrsSet = FALSE; - - // Create the data structure and a new database connection. - // (As there is not a pDb being passed in the constructor, a new database - // connection is created) - Contact = new Ccontact(); - - if (!Contact) - { - wxMessageBox("Unable to instantiate an instance of Ccontact","Error...",wxOK | wxICON_EXCLAMATION); - return; - } - - // Check if the table exists or not. If it doesn't, ask the user if they want to - // create the table. Continue trying to create the table until it exists, or user aborts - while (!Contact->pDb->TableExists((char *)CONTACT_TABLE_NAME)) - { - wxString tStr; - tStr.Printf("Unable to open the table '%s'.\n\nTable may need to be created...?\n\n",CONTACT_TABLE_NAME); - tStr += GetExtendedDBErrorMsg(__FILE__,__LINE__); - wxMessageBox(tStr,"ODBC Error...",wxOK | wxICON_EXCLAMATION); - - bool createTable = (wxMessageBox("Do you wish to try to create/clear the CONTACTS table?","Confirm",wxYES_NO|wxICON_QUESTION) == wxYES); - - if (!createTable) - { - delete Contact; - Close(); - DemoFrame->Close(); - return; - } - else - DemoFrame->CreateDataTable(); - } - - // Tables must be "opened" before anything other than creating/deleting table can be done - if (!Contact->Open()) - { - // Table does exist, there was some problem opening it. Currently this should - // never fail, except in the case of the table not exisiting. Open() basically - // only sets up variable/pointer values, other than checking for table existence. - if (Contact->pDb->TableExists((char *)CONTACT_TABLE_NAME)) - { - wxString tStr; - tStr.Printf("Unable to open the table '%s'.\n\n",CONTACT_TABLE_NAME); - tStr += GetExtendedDBErrorMsg(__FILE__,__LINE__); - wxMessageBox(tStr,"ODBC Error...",wxOK | wxICON_EXCLAMATION); - delete Contact; - Close(); - DemoFrame->Close(); - return; - } - } - - // Build the dialog - - (void)new wxStaticBox(this, EDITOR_DIALOG_FN_GROUP, "", wxPoint(15, 1), wxSize(497, 69), 0, "FunctionGrp"); - (void)new wxStaticBox(this, EDITOR_DIALOG_SEARCH_GROUP, "", wxPoint(417, 1), wxSize(95, 242), 0, "SearchGrp"); - - pCreateBtn = new wxButton(this, EDITOR_DIALOG_CREATE, "&Create", wxPoint(25, 21), wxSize(70, 35), 0, wxDefaultValidator, "CreateBtn"); - pEditBtn = new wxButton(this, EDITOR_DIALOG_EDIT, "&Edit", wxPoint(102, 21), wxSize(70, 35), 0, wxDefaultValidator, "EditBtn"); - pDeleteBtn = new wxButton(this, EDITOR_DIALOG_DELETE, "&Delete", wxPoint(179, 21), wxSize(70, 35), 0, wxDefaultValidator, "DeleteBtn"); - pCopyBtn = new wxButton(this, EDITOR_DIALOG_COPY, "Cop&y", wxPoint(256, 21), wxSize(70, 35), 0, wxDefaultValidator, "CopyBtn"); - pSaveBtn = new wxButton(this, EDITOR_DIALOG_SAVE, "&Save", wxPoint(333, 21), wxSize(70, 35), 0, wxDefaultValidator, "SaveBtn"); - pCancelBtn = new wxButton(this, EDITOR_DIALOG_CANCEL, "C&ancel", wxPoint(430, 21), wxSize(70, 35), 0, wxDefaultValidator, "CancelBtn"); - - pPrevBtn = new wxButton(this, EDITOR_DIALOG_PREV, "<< &Prev", wxPoint(430, 81), wxSize(70, 35), 0, wxDefaultValidator, "PrevBtn"); - pNextBtn = new wxButton(this, EDITOR_DIALOG_NEXT, "&Next >>", wxPoint(430, 121), wxSize(70, 35), 0, wxDefaultValidator, "NextBtn"); - pQueryBtn = new wxButton(this, EDITOR_DIALOG_QUERY, "&Query", wxPoint(430, 161), wxSize(70, 35), 0, wxDefaultValidator, "QueryBtn"); - pResetBtn = new wxButton(this, EDITOR_DIALOG_RESET, "&Reset", wxPoint(430, 200), wxSize(70, 35), 0, wxDefaultValidator, "ResetBtn"); - - pNameMsg = new wxStaticText(this, EDITOR_DIALOG_NAME_MSG, "Name:", wxPoint(17, 80), wxSize(-1, -1), 0, "NameMsg"); - pNameTxt = new wxTextCtrl(this, EDITOR_DIALOG_NAME_TEXT, "", wxPoint(17, 97), wxSize(308, 25), 0, wxDefaultValidator, "NameTxt"); - pNameListBtn = new wxButton(this, EDITOR_DIALOG_LOOKUP, "&Lookup", wxPoint(333, 99), wxSize(70, 24), 0, wxDefaultValidator, "LookupBtn"); - - pAddress1Msg = new wxStaticText(this, EDITOR_DIALOG_ADDRESS1_MSG, "Address:", wxPoint(17, 130), wxSize(-1, -1), 0, "Address1Msg"); - pAddress1Txt = new wxTextCtrl(this, EDITOR_DIALOG_ADDRESS2_TEXT, "", wxPoint(17, 147), wxSize(308, 25), 0, wxDefaultValidator, "Address1Txt"); - - pAddress2Msg = new wxStaticText(this, EDITOR_DIALOG_ADDRESS2_MSG, "Address:", wxPoint(17, 180), wxSize(-1, -1), 0, "Address2Msg"); - pAddress2Txt = new wxTextCtrl(this, EDITOR_DIALOG_ADDRESS2_TEXT, "", wxPoint(17, 197), wxSize(308, 25), 0, wxDefaultValidator, "Address2Txt"); - - pCityMsg = new wxStaticText(this, EDITOR_DIALOG_CITY_MSG, "City:", wxPoint(17, 230), wxSize(-1, -1), 0, "CityMsg"); - pCityTxt = new wxTextCtrl(this, EDITOR_DIALOG_CITY_TEXT, "", wxPoint(17, 247), wxSize(225, 25), 0, wxDefaultValidator, "CityTxt"); - - pStateMsg = new wxStaticText(this, EDITOR_DIALOG_STATE_MSG, "State:", wxPoint(250, 230), wxSize(-1, -1), 0, "StateMsg"); - pStateTxt = new wxTextCtrl(this, EDITOR_DIALOG_STATE_TEXT, "", wxPoint(250, 247), wxSize(153, 25), 0, wxDefaultValidator, "StateTxt"); - - pCountryMsg = new wxStaticText(this, EDITOR_DIALOG_COUNTRY_MSG, "Country:", wxPoint(17, 280), wxSize(-1, -1), 0, "CountryMsg"); - pCountryTxt = new wxTextCtrl(this, EDITOR_DIALOG_COUNTRY_TEXT, "", wxPoint(17, 297), wxSize(225, 25), 0, wxDefaultValidator, "CountryTxt"); - - pPostalCodeMsg = new wxStaticText(this, EDITOR_DIALOG_POSTAL_MSG, "Postal Code:", wxPoint(250, 280), wxSize(-1, -1), 0, "PostalCodeMsg"); - pPostalCodeTxt = new wxTextCtrl(this, EDITOR_DIALOG_POSTAL_TEXT, "", wxPoint(250, 297), wxSize(153, 25), 0, wxDefaultValidator, "PostalCodeTxt"); - - wxString choice_strings[5]; - choice_strings[0] = "English"; - choice_strings[1] = "French"; - choice_strings[2] = "German"; - choice_strings[3] = "Spanish"; - choice_strings[4] = "Other"; - pNativeLangChoice = new wxChoice(this, EDITOR_DIALOG_LANG_CHOICE, wxPoint(17, 346), wxSize(277, -1), 5, choice_strings); - pNativeLangMsg = new wxStaticText(this, EDITOR_DIALOG_LANG_MSG, "Native language:", wxPoint(17, 330), wxSize(-1, -1), 0, "NativeLangMsg"); - - wxString radio_strings[2]; - radio_strings[0] = "No"; - radio_strings[1] = "Yes"; - pDeveloperRadio = new wxRadioBox(this,EDITOR_DIALOG_DEVELOPER,"Developer:",wxPoint(303,330),wxSize(-1,-1),2,radio_strings,2,wxHORIZONTAL); - - pJoinDateMsg = new wxStaticText(this, EDITOR_DIALOG_JOIN_MSG, "Date joined:", wxPoint(17, 380), wxSize(-1, -1), 0, "JoinDateMsg"); - pJoinDateTxt = new wxTextCtrl(this, EDITOR_DIALOG_JOIN_TEXT, "", wxPoint(17, 397), wxSize(150, 25), 0, wxDefaultValidator, "JoinDateTxt"); - - pContribMsg = new wxStaticText(this, EDITOR_DIALOG_CONTRIB_MSG, "Contributions:", wxPoint(175, 380), wxSize(-1, -1), 0, "ContribMsg"); - pContribTxt = new wxTextCtrl(this, EDITOR_DIALOG_CONTRIB_TEXT, "", wxPoint(175, 397), wxSize(120, 25), 0, wxDefaultValidator, "ContribTxt"); - - pLinesMsg = new wxStaticText(this, EDITOR_DIALOG_LINES_MSG, "Lines of code:", wxPoint(303, 380), wxSize(-1, -1), 0, "LinesMsg"); - pLinesTxt = new wxTextCtrl(this, EDITOR_DIALOG_LINES_TEXT, "", wxPoint(303, 397), wxSize(100, 25), 0, wxDefaultValidator, "LinesTxt"); - - // Now that all the widgets on the panel are created, its safe to allow ::OnCommand() to - // handle all widget processing - widgetPtrsSet = TRUE; - - // Setup the orderBy and where clauses to return back a single record as the result set, - // as there will only be one record being shown on the dialog at a time, this optimizes - // network traffic by only returning a one row result - - Contact->orderBy = "NAME"; // field name to sort by - - // The wxString "whereStr" is not a member of the wxTable object, it is a member variable - // specifically in the Ccontact class. It is used here for simpler construction of a varying - // length string, and then after the string is built, the wxTable member variable "where" is - // assigned the pointer to the constructed string. - // - // The constructed where clause below has a sub-query within it "SELECT MIN(NAME) FROM %s" - // to achieve a single row (in this case the first name in alphabetical order). - - Contact->whereStr.Printf("NAME = (SELECT MIN(NAME) FROM %s)",Contact->tableName); - - // NOTE: (const char*) returns a pointer which may not be valid later, so this is short term use only - Contact->where = (char*) (const char*) Contact->whereStr; - - // Perform the Query to get the result set. - // NOTE: If there are no rows returned, that is a valid result, so Query() would return TRUE. - // Only if there is a database error will Query() come back as FALSE - if (!Contact->Query()) - { - wxString tStr; - tStr = "ODBC error during Query()\n\n"; - tStr += GetExtendedDBErrorMsg(__FILE__,__LINE__); - wxMessageBox(tStr,"ODBC Error...",wxOK | wxICON_EXCLAMATION); - GetParent()->Close(); - return; - } - - // Since Query succeeded, now get the row that was returned - if (!Contact->GetNext()) - // If the GetNext() failed at this point, then there are no rows to retrieve, - // so clear the values in the members of "Contact" so that PutData() blanks the - // widgets on the dialog - Contact->Initialize(); - - SetMode(mView); - PutData(); - - Show(TRUE); -} // CeditorDlg constructor - - -bool CeditorDlg::OnClose() -{ - // Clean up time - if ((mode != mCreate) && (mode != mEdit)) - { - if (Contact) - delete Contact; - return TRUE; - } - else - { - wxMessageBox("Must finish processing the current record being created/modified before exiting","Notice...",wxOK | wxICON_INFORMATION); - return FALSE; - } -} // CeditorDlg::OnClose() - - -void CeditorDlg::OnButton( wxCommandEvent &event ) -{ - wxWindow *win = (wxWindow*) event.GetEventObject(); - OnCommand( *win, event ); -} - -void CeditorDlg::OnCommand(wxWindow& win, wxCommandEvent& event) -{ - wxString widgetName; - - widgetName = win.GetName(); - - if (!widgetPtrsSet) - return; - - if (widgetName == pCreateBtn->GetName()) - { - Contact->Initialize(); - PutData(); - SetMode( mCreate ); - pNameTxt->SetValue(""); - pNameTxt->SetFocus(); - return; - } - - if (widgetName == pEditBtn->GetName()) - { - saveName = Contact->Name; - SetMode( mEdit ); - pNameTxt->SetFocus(); - return; - } - - if (widgetName == pCopyBtn->GetName()) - { - SetMode(mCreate); - pNameTxt->SetValue(""); - pNameTxt->SetFocus(); - return; - } - - if (widgetName == pDeleteBtn->GetName()) - { - bool Ok = (wxMessageBox("Are you sure?","Confirm",wxYES_NO|wxICON_QUESTION) == wxYES); - - if (!Ok) - return; - - if (Ok && Contact->Delete()) - { - // NOTE: Deletions are not finalized until a CommitTrans() is performed. - // If the commit were not performed, the program will continue to - // show the table contents as if they were deleted until this instance - // of Ccontact is deleted. If the Commit wasn't performed, the - // database will automatically Rollback the changes when the database - // connection is terminated - Contact->pDb->CommitTrans(); - - // Try to get the row that followed the just deleted row in the orderBy sequence - if (!GetNextRec()) - { - // There was now row (in sequence) after the just deleted row, so get the - // row which preceded the just deleted row - if (!GetPrevRec()) - { - // There are now no rows remaining, so clear the dialog widgets - Contact->Initialize(); - PutData(); - } - } - SetMode(mode); // force reset of button enable/disable - } - else - // Delete failed - Contact->pDb->RollbackTrans(); - - SetMode(mView); - return; - } - - if (widgetName == pSaveBtn->GetName()) - { - Save(); - return; - } - - if (widgetName == pCancelBtn->GetName()) - { - bool Ok = (wxMessageBox("Are you sure?","Confirm",wxYES_NO|wxICON_QUESTION) == wxYES); - - if (!Ok) - return; - - if (!strcmp((const char*) saveName,"")) - { - Contact->Initialize(); - PutData(); - SetMode(mView); - return; - } - else - { - // Requery previous record - if (Contact->FetchByName((char*) (const char*) saveName)) - { - PutData(); - SetMode(mView); - return; - } - } - - // Previous record not available, retrieve first record in table - Contact->whereStr = "NAME = (SELECT MIN(NAME) FROM "; - Contact->whereStr += Contact->tableName; - Contact->whereStr += ")"; - Contact->where = (char*) (const char*) Contact->whereStr; - if (!Contact->Query()) - { - wxString tStr; - tStr = "ODBC error during Query()\n\n"; - tStr += GetExtendedDBErrorMsg(__FILE__,__LINE__); - wxMessageBox(tStr,"ODBC Error...",wxOK | wxICON_EXCLAMATION); - SetMode(mView); - return; - } - if (Contact->GetNext()) // Successfully read first record - { - PutData(); - SetMode(mView); - return; - } - // No contacts are available, clear dialog - Contact->Initialize(); - PutData(); - SetMode(mView); - return; - } // Cancel Button - - if (widgetName == pPrevBtn->GetName()) - { - if (!GetPrevRec()) - wxBell(); - return; - } // Prev Button - - if (widgetName == pNextBtn->GetName()) - { - if (!GetNextRec()) - wxBell(); - return; - } // Next Button - - if (widgetName == pQueryBtn->GetName()) - { - // Display the query dialog box - char qryWhere[DB_MAX_WHERE_CLAUSE_LEN+1]; - strcpy(qryWhere, (const char*) Contact->qryWhereStr); - char *tblName[] = {(char *)CONTACT_TABLE_NAME, 0}; - new CqueryDlg(GetParent(), Contact->pDb, tblName, qryWhere); - - // Query the first record in the new record set and - // display it, if the query string has changed. - if (strcmp(qryWhere, (const char*) Contact->qryWhereStr)) - { - Contact->orderBy = "NAME"; - Contact->whereStr = "NAME = (SELECT MIN(NAME) FROM "; - Contact->whereStr += CONTACT_TABLE_NAME; - - // Append the query where string (if there is one) - Contact->qryWhereStr = qryWhere; - if (strlen(qryWhere)) - { - Contact->whereStr += " WHERE "; - Contact->whereStr += Contact->qryWhereStr; - } - // Close the expression with a right paren - Contact->whereStr += ")"; - // Requery the table - Contact->where = (char*) (const char*) Contact->whereStr; - if (!Contact->Query()) - { - wxString tStr; - tStr = "ODBC error during Query()\n\n"; - tStr += GetExtendedDBErrorMsg(__FILE__,__LINE__); - wxMessageBox(tStr,"ODBC Error...",wxOK | wxICON_EXCLAMATION); - return; - } - // Display the first record from the query set - if (!Contact->GetNext()) - Contact->Initialize(); - PutData(); - } - - // Enable/Disable the reset button - pResetBtn->Enable(!Contact->qryWhereStr.IsEmpty()); - - return; - } // Query button - - - if (widgetName == pResetBtn->GetName()) - { - // Clear the additional where criteria established by the query feature - Contact->qryWhereStr = ""; - - // Query the first record in the table - Contact->orderBy = "NAME"; - - Contact->whereStr = "NAME = (SELECT MIN(NAME) FROM "; - Contact->whereStr += CONTACT_TABLE_NAME; - Contact->whereStr += ")"; - - Contact->where = (char*) (const char*) Contact->whereStr; - if (!Contact->Query()) - { - wxString tStr; - tStr = "ODBC error during Query()\n\n"; - tStr += GetExtendedDBErrorMsg(__FILE__,__LINE__); - wxMessageBox(tStr,"ODBC Error...",wxOK | wxICON_EXCLAMATION); - return; - } - if (!Contact->GetNext()) - Contact->Initialize(); - PutData(); - pResetBtn->Enable(FALSE); - - return; - } // Reset button - - - if (widgetName == pNameListBtn->GetName()) - { - new ClookUpDlg(/* wxWindow *parent */ this, - /* char *windowTitle */ "Select contact name", - /* char *tableName */ (char *) CONTACT_TABLE_NAME, - /* char *dispCol1 */ "NAME", - /* char *dispCol2 */ "JOIN_DATE", - /* char *where */ "", - /* char *orderBy */ "NAME", - /* bool distinctValues */ TRUE); - - if (ListDB_Selection && strlen(ListDB_Selection)) - { - wxString w = "NAME = '"; - w += ListDB_Selection; - w += "'"; - GetRec((char*) (const char*) w); - } - - return; - } - -} // CeditorDlg::OnCommand() - - -void CeditorDlg::FieldsEditable() -{ - pNameTxt->Enable((mode == mCreate) || (mode == mEdit)); - pAddress1Txt->Enable((mode == mCreate) || (mode == mEdit)); - pAddress2Txt->Enable((mode == mCreate) || (mode == mEdit)); - pCityTxt->Enable((mode == mCreate) || (mode == mEdit)); - pStateTxt->Enable((mode == mCreate) || (mode == mEdit)); - pPostalCodeTxt->Enable((mode == mCreate) || (mode == mEdit)); - pCountryTxt->Enable((mode == mCreate) || (mode == mEdit)); - - pJoinDateTxt->Enable((mode == mCreate) || (mode == mEdit)); - pContribTxt->Enable((mode == mCreate) || (mode == mEdit)); - pLinesTxt->Enable((mode == mCreate) || (mode == mEdit)); - pNativeLangChoice->Enable((mode == mCreate) || (mode == mEdit)); - pDeveloperRadio->Enable((mode == mCreate) || (mode == mEdit)); - -} // CeditorDlg::FieldsEditable() - - -void CeditorDlg::SetMode(enum DialogModes m) -{ - bool edit = FALSE; - - mode = m; - switch (mode) - { - case mCreate: - case mEdit: - edit = TRUE; - break; - case mView: - case mSearch: - edit = FALSE; - break; - default: - break; - }; - - if (widgetPtrsSet) - { - pCreateBtn->Enable( !edit ); - pEditBtn->Enable( !edit && (strcmp(Contact->Name,"")!=0) ); - pDeleteBtn->Enable( !edit && (strcmp(Contact->Name,"")!=0) ); - pCopyBtn->Enable( !edit && (strcmp(Contact->Name,"")!=0) ); - pSaveBtn->Enable( edit ); - pCancelBtn->Enable( edit ); - pPrevBtn->Enable( !edit ); - pNextBtn->Enable( !edit ); - pQueryBtn->Enable( !edit ); - pResetBtn->Enable( !edit && !Contact->qryWhereStr.IsEmpty() ); - pNameListBtn->Enable( !edit ); - } - - FieldsEditable(); -} // CeditorDlg::SetMode() - - -bool CeditorDlg::PutData() -{ - wxString tStr; - - pNameTxt->SetValue(Contact->Name); - pAddress1Txt->SetValue(Contact->Addr1); - pAddress2Txt->SetValue(Contact->Addr2); - pCityTxt->SetValue(Contact->City); - pStateTxt->SetValue(Contact->State); - pCountryTxt->SetValue(Contact->Country); - pPostalCodeTxt->SetValue(Contact->PostalCode); - - tStr.Printf("%d/%d/%d",Contact->JoinDate.month,Contact->JoinDate.day,Contact->JoinDate.year); - pJoinDateTxt->SetValue(tStr); - - tStr.Printf("%d",Contact->Contributions); - pContribTxt->SetValue(tStr); - - tStr.Printf("%lu",Contact->LinesOfCode); - pLinesTxt->SetValue(tStr); - - pNativeLangChoice->SetSelection(Contact->NativeLanguage); - - pDeveloperRadio->SetSelection(Contact->IsDeveloper); - - return TRUE; -} // Ceditor::PutData() - - -/* - * Reads the data out of all the widgets on the dialog. Some data evaluation is done - * to ensure that there is a name entered and that the date field is valid. - * - * A return value of TRUE means that valid data was retrieved from the dialog, otherwise - * invalid data was found (and a message was displayed telling the user what to fix), and - * the data was not placed into the appropraite fields of Ccontact - */ -bool CeditorDlg::GetData() -{ - // Validate that the data currently entered into the widgets is valid data - - wxString tStr; - tStr = pNameTxt->GetValue(); - if (!strcmp((const char*) tStr,"")) - { - wxMessageBox("A name is required for entry into the contact table","Notice...",wxOK | wxICON_INFORMATION); - return FALSE; - } - - bool invalid = FALSE; - int mm,dd,yyyy; - int first, second; - - tStr = pJoinDateTxt->GetValue(); - if (tStr.Freq('/') != 2) - invalid = TRUE; - - // Find the month, day, and year tokens - if (!invalid) - { - first = tStr.First('/'); - second = tStr.Last('/'); - - mm = atoi(tStr.SubString(0,first)); - dd = atoi(tStr.SubString(first+1,second)); - yyyy = atoi(tStr.SubString(second+1,tStr.Length()-1)); - - invalid = !(mm && dd && yyyy); - } - - // Force Year 2000 compliance - if (!invalid && (yyyy < 1000)) - invalid = TRUE; - - // Check the token ranges for validity - if (!invalid) - { - if (yyyy > 9999) - invalid = TRUE; - else if ((mm < 1) || (mm > 12)) - invalid = TRUE; - else - { - if (dd < 1) - invalid = TRUE; - else - { - int days[12] = {31,28,31,30,31,30, - 31,31,30,31,30,31}; - if (dd > days[mm-1]) - { - invalid = TRUE; - if ((dd == 29) && (mm == 2)) - { - if (((yyyy % 4) == 0) && (((yyyy % 100) != 0) || ((yyyy % 400) == 0))) - invalid = FALSE; - } - } - } - } - } - - if (!invalid) - { - Contact->JoinDate.month = mm; - Contact->JoinDate.day = dd; - Contact->JoinDate.year = yyyy; - } - else - { - wxMessageBox("Improper date format. Please check the date\nspecified and try again.\n\nNOTE: Dates are in american format (MM/DD/YYYY)","Notice...",wxOK | wxICON_INFORMATION); - return FALSE; - } - - tStr = pNameTxt->GetValue(); - strcpy(Contact->Name,(const char*) tStr); - strcpy(Contact->Addr1,pAddress1Txt->GetValue()); - strcpy(Contact->Addr2,pAddress2Txt->GetValue()); - strcpy(Contact->City,pCityTxt->GetValue()); - strcpy(Contact->State,pStateTxt->GetValue()); - strcpy(Contact->Country,pCountryTxt->GetValue()); - strcpy(Contact->PostalCode,pPostalCodeTxt->GetValue()); - - Contact->Contributions = atoi(pContribTxt->GetValue()); - Contact->LinesOfCode = atol(pLinesTxt->GetValue()); - - Contact->NativeLanguage = (enum Language) pNativeLangChoice->GetSelection(); - Contact->IsDeveloper = (bool) pDeveloperRadio->GetSelection(); - - return TRUE; -} // CeditorDlg::GetData() - - -/* - * Retrieve data from the dialog, verify the validity of the data, and if it is valid, - * try to insert/update the data to the table based on the current 'mode' the dialog - * is set to. - * - * A return value of TRUE means the insert/update was completed successfully, a return - * value of FALSE means that Save() failed. If returning FALSE, then this function - * has displayed a detailed error message for the user. - */ -bool CeditorDlg::Save() -{ - bool failed = FALSE; - - // Read the data in the widgets of the dialog to get the user's data - if (!GetData()) - failed = TRUE; - - // Perform any other required validations necessary before saving - - - if (!failed) - { - wxBeginBusyCursor(); - - if (mode == mCreate) - { - RETCODE result = Contact->Insert(); - - failed = (result != DB_SUCCESS); - if (failed) - { - // Some errors may be expected, like a duplicate key, so handle those instances with - // specific error messages. - if (result == DB_ERR_INTEGRITY_CONSTRAINT_VIOL) - { - wxString tStr; - tStr = "A duplicate key value already exists in the table.\nUnable to save record\n\n"; - tStr += GetExtendedDBErrorMsg(__FILE__,__LINE__); - wxMessageBox(tStr,"ODBC Error...",wxOK | wxICON_EXCLAMATION); - } - else - { - // Some other unexpexted error occurred - wxString tStr; - tStr = "Database insert failed\n\n"; - tStr += GetExtendedDBErrorMsg(__FILE__,__LINE__); - wxMessageBox(tStr,"ODBC Error...",wxOK | wxICON_EXCLAMATION); - } - } - } - else // mode == mEdit - { - if (!Contact->Update()) - { - wxString tStr; - tStr = "Database update failed\n\n"; - tStr += GetExtendedDBErrorMsg(__FILE__,__LINE__); - wxMessageBox(tStr,"ODBC Error...",wxOK | wxICON_EXCLAMATION); - failed = TRUE; - } - } - - if (!failed) - { - Contact->pDb->CommitTrans(); - SetMode(mView); // Sets the dialog mode back to viewing after save is successful - } - else - Contact->pDb->RollbackTrans(); - - wxEndBusyCursor(); - } - - return !failed; -} // CeditorDlg::Save() - - -/* - * Where this program is only showing a single row at a time in the dialog, - * a special where clause must be built to find just the single row which, - * in sequence, would follow the currently displayed row. - */ -bool CeditorDlg::GetNextRec() -{ - wxString w; - - - w = "NAME = (SELECT MIN(NAME) FROM "; - w += Contact->tableName; - w += " WHERE NAME > '"; - w += Contact->Name; - w += "'"; - - // If a query where string is currently set, append that criteria - if (!Contact->qryWhereStr.IsEmpty()) - { - w += " AND ("; - w += Contact->qryWhereStr; - w += ")"; - } - - w += ")"; - return(GetRec((char*) (const char*) w)); - -} // CeditorDlg::GetNextRec() - - -/* - * Where this program is only showing a single row at a time in the dialog, - * a special where clause must be built to find just the single row which, - * in sequence, would precede the currently displayed row. - */ -bool CeditorDlg::GetPrevRec() -{ - wxString w; - - w = "NAME = (SELECT MAX(NAME) FROM "; - w += Contact->tableName; - w += " WHERE NAME < '"; - w += Contact->Name; - w += "'"; - - // If a query where string is currently set, append that criteria - if (!Contact->qryWhereStr.IsEmpty()) - { - w += " AND ("; - w += Contact->qryWhereStr; - w += ")"; - } - - w += ")"; - - return(GetRec((char*) (const char*)w)); - -} // CeditorDlg::GetPrevRec() - - -/* - * This function is here to avoid duplicating this same code in both the - * GetPrevRec() and GetNextRec() functions - */ -bool CeditorDlg::GetRec(char *whereStr) -{ - Contact->where = whereStr; - Contact->orderBy = "NAME"; - - if (!Contact->Query()) - { - wxString tStr; - tStr = "ODBC error during Query()\n\n"; - tStr += GetExtendedDBErrorMsg(__FILE__,__LINE__); - wxMessageBox(tStr,"ODBC Error...",wxOK | wxICON_EXCLAMATION); - - return(FALSE); - } - - if (Contact->GetNext()) - { - PutData(); - return(TRUE); - } - else - return(FALSE); -} // CeditorDlg::GetRec() - - - -/* - * CparameterDlg constructor - */ -CparameterDlg::CparameterDlg(wxWindow *parent) : wxDialog (parent, PARAMETER_DIALOG, "ODBC parameter settings", wxPoint(-1, -1), wxSize(400, 275)) -{ - // Since the ::OnCommand() function is overridden, this prevents the widget - // detection in ::OnCommand() until all widgets have been initialized to prevent - // uninitialized pointers from crashing the program - widgetPtrsSet = FALSE; - - pParamODBCSourceMsg = new wxStaticText(this, PARAMETER_DIALOG_SOURCE_MSG, "ODBC data sources:", wxPoint(10, 10), wxSize(-1, -1), 0, "ParamODBCSourceMsg"); - pParamODBCSourceList = new wxListBox(this, PARAMETER_DIALOG_SOURCE_LISTBOX, wxPoint(10, 29), wxSize(285, 150), 0, 0, wxLB_SINGLE|wxLB_ALWAYS_SB, wxDefaultValidator, "ParamODBCSourceList"); - - pParamUserNameMsg = new wxStaticText(this, PARAMETER_DIALOG_NAME_MSG, "Database user name:", wxPoint(10, 193), wxSize(-1, -1), 0, "ParamUserNameMsg"); - pParamUserNameTxt = new wxTextCtrl(this, PARAMETER_DIALOG_NAME_TEXT, "", wxPoint(10, 209), wxSize(140, 25), 0, wxDefaultValidator, "ParamUserNameTxt"); - - pParamPasswordMsg = new wxStaticText(this, PARAMETER_DIALOG_PASSWORD_MSG, "Password:", wxPoint(156, 193), wxSize(-1, -1), 0, "ParamPasswordMsg"); - pParamPasswordTxt = new wxTextCtrl(this, PARAMETER_DIALOG_PASSWORD_TEXT, "", wxPoint(156, 209), wxSize(140, 25), 0, wxDefaultValidator, "ParamPasswordTxt"); - - pParamSaveBtn = new wxButton(this, PARAMETER_DIALOG_SAVE, "&Save", wxPoint(310, 21), wxSize(70, 35), 0, wxDefaultValidator, "ParamSaveBtn"); - pParamCancelBtn = new wxButton(this, PARAMETER_DIALOG_CANCEL, "C&ancel", wxPoint(310, 66), wxSize(70, 35), 0, wxDefaultValidator, "ParamCancelBtn"); - - // Now that all the widgets on the panel are created, its safe to allow ::OnCommand() to - // handle all widget processing - widgetPtrsSet = TRUE; - - saved = FALSE; - savedParamSettings = wxGetApp().params; - - Centre(wxBOTH); - PutData(); - ShowModal(); -} // CparameterDlg constructor - - -bool CparameterDlg::OnClose() -{ - // Put any additional checking necessary to make certain it is alright - // to close the program here that is not done elsewhere - if (!saved) - { - bool Ok = (wxMessageBox("No changes have been saved.\n\nAre you sure you wish exit the parameter screen?","Confirm",wxYES_NO|wxICON_QUESTION) == wxYES); - - if (!Ok) - return FALSE; - - wxGetApp().params = savedParamSettings; - } - - if (GetParent() != NULL) - GetParent()->SetFocus(); - return TRUE; -} // Cparameter::OnClose() - - -void CparameterDlg::OnCommand(wxWindow& win, wxCommandEvent& event) -{ - wxString widgetName; - - widgetName = win.GetName(); - - if (!widgetPtrsSet) - return; - - if (widgetName == pParamSaveBtn->GetName()) - { - if (Save()) - { - wxString tStr; - tStr = "Database parameters have been saved."; - if (GetParent() != NULL) // The parameter dialog was not called during startup due to a missing cfg file - tStr += "\nNew parameters will take effect the next time the program is started."; - wxMessageBox(tStr,"Notice...",wxOK | wxICON_INFORMATION); - saved = TRUE; - Close(); - } - return; - } - - if (widgetName == pParamCancelBtn->GetName()) - { - Close(); - return; - } -} // CparameterDlg::OnCommand() - - -bool CparameterDlg::PutData() -{ - // Fill the data source list box - FillDataSourceList(); - - // Fill in the fields from the params object - pParamODBCSourceList->SetStringSelection(wxGetApp().params.ODBCSource); - pParamUserNameTxt->SetValue(wxGetApp().params.UserName); - pParamPasswordTxt->SetValue(wxGetApp().params.Password); - return TRUE; -} // CparameterDlg::PutData() - - -bool CparameterDlg::GetData() -{ - wxString tStr; - if (pParamODBCSourceList->GetStringSelection()) - { - tStr = pParamODBCSourceList->GetStringSelection(); - if (tStr.Length() > (sizeof(wxGetApp().params.ODBCSource)-1)) - { - wxString errmsg; - errmsg.Printf("ODBC Data source name is longer than the data structure to hold it.\n'Cparameter.ODBCSource' must have a larger character array\nto handle a data source with this long of a name\n\nThe data source currently selected is %d characters long.",tStr.Length()); - wxMessageBox(errmsg,"Internal program error...",wxOK | wxICON_EXCLAMATION); - return FALSE; - } - strcpy(wxGetApp().params.ODBCSource, tStr); - } - else - return FALSE; - - tStr = pParamUserNameTxt->GetValue(); - if (tStr.Length() > (sizeof(wxGetApp().params.UserName)-1)) - { - wxString errmsg; - errmsg.Printf("User name is longer than the data structure to hold it.\n'Cparameter.UserName' must have a larger character array\nto handle a data source with this long of a name\n\nThe user name currently specified is %d characters long.",tStr.Length()); - wxMessageBox(errmsg,"Internal program error...",wxOK | wxICON_EXCLAMATION); - return FALSE; - } - strcpy(wxGetApp().params.UserName, tStr); - - tStr = pParamPasswordTxt->GetValue(); - if (tStr.Length() > (sizeof(wxGetApp().params.Password)-1)) - { - wxString errmsg; - errmsg.Printf("Password is longer than the data structure to hold it.\n'Cparameter.Password' must have a larger character array\nto handle a data source with this long of a name\n\nThe password currently specified is %d characters long.",tStr.Length()); - wxMessageBox(errmsg,"Internal program error...",wxOK | wxICON_EXCLAMATION); - return FALSE; - } - strcpy(wxGetApp().params.Password,tStr); - return TRUE; -} // CparameterDlg::GetData() - - -bool CparameterDlg::Save() -{ - Cparameters saveParams = wxGetApp().params; - if (!GetData()) - { - wxGetApp().params = saveParams; - return FALSE; - } - - FILE *paramFile; - if ((paramFile = fopen(paramFilename, "wt")) == NULL) - { - wxString tStr; - tStr.Printf("Unable to write/overwrite '%s'.",paramFilename); - wxMessageBox(tStr,"File I/O Error...",wxOK | wxICON_EXCLAMATION); - return FALSE; - } - - fputs(wxGetApp().params.ODBCSource, paramFile); - fputc('\n', paramFile); - fputs(wxGetApp().params.UserName, paramFile); - fputc('\n', paramFile); - fputs(wxGetApp().params.Password, paramFile); - fputc('\n', paramFile); - fclose(paramFile); - - return TRUE; -} // CparameterDlg::Save() - - -void CparameterDlg::FillDataSourceList() -{ - char Dsn[SQL_MAX_DSN_LENGTH + 1]; - char DsDesc[255]; - wxStringList strList; - - while(GetDataSource(DbConnectInf.Henv, Dsn, SQL_MAX_DSN_LENGTH+1, DsDesc, 255)) - strList.Add(Dsn); - - strList.Sort(); - strList.Add(""); - char **p = strList.ListToArray(); - - for (int i = 0; strlen(p[i]); i++) - pParamODBCSourceList->Append(p[i]); -} // CparameterDlg::CparameterDlg::FillDataSourceList() - - -BEGIN_EVENT_TABLE(CqueryDlg, wxDialog) - EVT_BUTTON(-1, CqueryDlg::OnButton) -END_EVENT_TABLE() - -// CqueryDlg() constructor -CqueryDlg::CqueryDlg(wxWindow *parent, wxDB *pDb, char *tblName[], char *pWhereArg) : wxDialog (parent, QUERY_DIALOG, "Query", wxPoint(-1, -1), wxSize(480, 360)) -{ - wxBeginBusyCursor(); - - colInf = 0; - dbTable = 0; - masterTableName = tblName[0]; - widgetPtrsSet = FALSE; - pDB = pDb; - - // Initialize the WHERE clause from the string passed in - pWhere = pWhereArg; // Save a pointer to the output buffer - if (strlen(pWhere) > DB_MAX_WHERE_CLAUSE_LEN) // Check the length of the buffer passed in - { - wxString s; - s.Printf("Maximum where clause length exceeded.\nLength must be less than %d", DB_MAX_WHERE_CLAUSE_LEN+1); - wxMessageBox(s,"Error...",wxOK | wxICON_EXCLAMATION); - Close(); - return; - } - - pQueryCol1Msg = new wxStaticText(this, QUERY_DIALOG_COL_MSG, "Column 1:", wxPoint(10, 10), wxSize(69, 16), 0, "QueryCol1Msg"); - pQueryCol1Choice = new wxChoice(this, QUERY_DIALOG_COL_CHOICE, wxPoint(10, 27), wxSize(250, 27), 0, 0, 0, wxDefaultValidator, "QueryCol1Choice"); - - pQueryNotMsg = new wxStaticText(this, QUERY_DIALOG_NOT_MSG, "NOT", wxPoint(268, 10), wxSize(-1, -1), 0, "QueryNotMsg"); - pQueryNotCheck = new wxCheckBox(this, QUERY_DIALOG_NOT_CHECKBOX, "", wxPoint(275, 37), wxSize(20, 20), 0, wxDefaultValidator, "QueryNotCheck"); - - wxString choice_strings[9]; - choice_strings[0] = "="; - choice_strings[1] = "<"; - choice_strings[2] = ">"; - choice_strings[3] = "<="; - choice_strings[4] = ">="; - choice_strings[5] = "Begins"; - choice_strings[6] = "Contains"; - choice_strings[7] = "Like"; - choice_strings[8] = "Between"; - pQueryOperatorMsg = new wxStaticText(this, QUERY_DIALOG_OP_MSG, "Operator:", wxPoint(305, 10), wxSize(-1, -1), 0, "QueryOperatorMsg"); - pQueryOperatorChoice = new wxChoice(this, QUERY_DIALOG_OP_CHOICE, wxPoint(305, 27), wxSize(80, 27), 9, choice_strings, 0, wxDefaultValidator, "QueryOperatorChoice"); - - pQueryCol2Msg = new wxStaticText(this, QUERY_DIALOG_COL2_MSG, "Column 2:", wxPoint(10, 65), wxSize(69, 16), 0, "QueryCol2Msg"); - pQueryCol2Choice = new wxChoice(this, QUERY_DIALOG_COL2_CHOICE, wxPoint(10, 82), wxSize(250, 27), 0, 0, 0, wxDefaultValidator, "QueryCol2Choice"); - - pQuerySqlWhereMsg = new wxStaticText(this, QUERY_DIALOG_WHERE_MSG, "SQL where clause:", wxPoint(10, 141), wxSize(-1, -1), 0, "QuerySqlWhereMsg"); - pQuerySqlWhereMtxt = new wxTextCtrl(this, QUERY_DIALOG_WHERE_TEXT, "", wxPoint(10, 159), wxSize(377, 134), wxTE_MULTILINE, wxDefaultValidator, "QuerySqlWhereMtxt"); - - pQueryAddBtn = new wxButton(this, QUERY_DIALOG_ADD, "&Add", wxPoint(406, 24), wxSize(56, 26), 0, wxDefaultValidator, "QueryAddBtn"); - pQueryAndBtn = new wxButton(this, QUERY_DIALOG_AND, "A&nd", wxPoint(406, 58), wxSize(56, 26), 0, wxDefaultValidator, "QueryAndBtn"); - pQueryOrBtn = new wxButton(this, QUERY_DIALOG_OR, "&Or", wxPoint(406, 92), wxSize(56, 26), 0, wxDefaultValidator, "QueryOrBtn"); - - pQueryLParenBtn = new wxButton(this, QUERY_DIALOG_LPAREN, "(", wxPoint(406, 126), wxSize(26, 26), 0, wxDefaultValidator, "QueryLParenBtn"); - pQueryRParenBtn = new wxButton(this, QUERY_DIALOG_RPAREN, ")", wxPoint(436, 126), wxSize(26, 26), 0, wxDefaultValidator, "QueryRParenBtn"); - - pQueryDoneBtn = new wxButton(this, QUERY_DIALOG_DONE, "&Done", wxPoint(406, 185), wxSize(56, 26), 0, wxDefaultValidator, "QueryDoneBtn"); - pQueryClearBtn = new wxButton(this, QUERY_DIALOG_CLEAR, "C&lear", wxPoint(406, 218), wxSize(56, 26), 0, wxDefaultValidator, "QueryClearBtn"); - pQueryCountBtn = new wxButton(this, QUERY_DIALOG_COUNT, "&Count", wxPoint(406, 252), wxSize(56, 26), 0, wxDefaultValidator, "QueryCountBtn"); - - pQueryValue1Msg = new wxStaticText(this, QUERY_DIALOG_VALUE1_MSG, "Value:", wxPoint(277, 66), wxSize(-1, -1), 0, "QueryValue1Msg"); - pQueryValue1Txt = new wxTextCtrl(this, QUERY_DIALOG_VALUE1_TEXT, "", wxPoint(277, 83), wxSize(108, 25), 0, wxDefaultValidator, "QueryValue1Txt"); - - pQueryValue2Msg = new wxStaticText(this, QUERY_DIALOG_VALUE2_MSG, "AND", wxPoint(238, 126), wxSize(-1, -1), 0, "QueryValue2Msg"); - pQueryValue2Txt = new wxTextCtrl(this, QUERY_DIALOG_VALUE2_TEXT, "", wxPoint(277, 120), wxSize(108, 25), 0, wxDefaultValidator, "QueryValue2Txt"); - - pQueryHintGrp = new wxStaticBox(this, QUERY_DIALOG_HINT_GROUP, "", wxPoint(10, 291), wxSize(377, 40), 0, "QueryHintGrp"); - pQueryHintMsg = new wxStaticText(this, QUERY_DIALOG_HINT_MSG, "", wxPoint(16, 306), wxSize(-1, -1), 0, "QueryHintMsg"); - - widgetPtrsSet = TRUE; - // Initialize the dialog - wxString qualName; - pQueryCol2Choice->Append("VALUE -->"); - colInf = pDB->GetColumns(tblName); - for (int i = 0; colInf[i].colName && strlen(colInf[i].colName); i++) - { - // If there is more than one table being queried, qualify - // the column names with the table name prefix. - if (tblName[1] && strlen(tblName[1])) - { - qualName.Printf("%s.%s", colInf[i].tableName, colInf[i].colName); - pQueryCol1Choice->Append(qualName); - pQueryCol2Choice->Append(qualName); - } - else // Single table query, append just the column names - { - pQueryCol1Choice->Append(colInf[i].colName); - pQueryCol2Choice->Append(colInf[i].colName); - } - } - - pQueryCol1Choice->SetSelection(0); - pQueryCol2Choice->SetSelection(0); - pQueryOperatorChoice->SetSelection(0); - - pQueryValue2Msg->Show(FALSE); - pQueryValue2Txt->Show(FALSE); - - pQueryHintMsg->SetLabel(langQRY_EQ); - - pQuerySqlWhereMtxt->SetValue(pWhere); - - wxEndBusyCursor(); - - // Display the dialog window - Centre(wxBOTH); - ShowModal(); - -} // CqueryDlg() constructor - - -void CqueryDlg::OnButton( wxCommandEvent &event ) -{ - wxWindow *win = (wxWindow*) event.GetEventObject(); - OnCommand( *win, event ); -} - -void CqueryDlg::OnCommand(wxWindow& win, wxCommandEvent& event) -{ - // Widget pointers won't be set when the dialog is constructed. - // Control is passed through this function once for each widget on - // a dialog as the dialog is constructed. - if (!widgetPtrsSet) - return; - - wxString widgetName = win.GetName(); - - // Operator choice box - if (widgetName == pQueryOperatorChoice->GetName()) - { - // Set the help text - switch((qryOp) pQueryOperatorChoice->GetSelection()) - { - case qryOpEQ: - pQueryHintMsg->SetLabel(langQRY_EQ); - break; - case qryOpLT: - pQueryHintMsg->SetLabel(langQRY_LT); - break; - case qryOpGT: - pQueryHintMsg->SetLabel(langQRY_GT); - break; - case qryOpLE: - pQueryHintMsg->SetLabel(langQRY_LE); - break; - case qryOpGE: - pQueryHintMsg->SetLabel(langQRY_GE); - break; - case qryOpBEGINS: - pQueryHintMsg->SetLabel(langQRY_BEGINS); - break; - case qryOpCONTAINS: - pQueryHintMsg->SetLabel(langQRY_CONTAINS); - break; - case qryOpLIKE: - pQueryHintMsg->SetLabel(langQRY_LIKE); - break; - case qryOpBETWEEN: - pQueryHintMsg->SetLabel(langQRY_BETWEEN); - break; - } - - // Hide the value2 widget - pQueryValue2Msg->Show(FALSE); // BETWEEN will show this widget - pQueryValue2Txt->Show(FALSE); // BETWEEN will show this widget - - // Disable the NOT operator for <, <=, >, >= - switch((qryOp) pQueryOperatorChoice->GetSelection()) - { - case qryOpLT: - case qryOpGT: - case qryOpLE: - case qryOpGE: - pQueryNotCheck->SetValue(0); - pQueryNotCheck->Enable(FALSE); - break; - default: - pQueryNotCheck->Enable(TRUE); - break; - } - - // Manipulate the dialog to handle the selected operator - switch((qryOp) pQueryOperatorChoice->GetSelection()) - { - case qryOpEQ: - case qryOpLT: - case qryOpGT: - case qryOpLE: - case qryOpGE: - pQueryCol2Choice->Enable(TRUE); - if (pQueryCol2Choice->GetSelection()) // Column name is highlighted - { - pQueryValue1Msg->Show(FALSE); - pQueryValue1Txt->Show(FALSE); - } - else // "Value" is highlighted - { - pQueryValue1Msg->Show(TRUE); - pQueryValue1Txt->Show(TRUE); - pQueryValue1Txt->SetFocus(); - } - break; - case qryOpBEGINS: - case qryOpCONTAINS: - case qryOpLIKE: - pQueryCol2Choice->SetSelection(0); - pQueryCol2Choice->Enable(FALSE); - pQueryValue1Msg->Show(TRUE); - pQueryValue1Txt->Show(TRUE); - pQueryValue1Txt->SetFocus(); - break; - case qryOpBETWEEN: - pQueryCol2Choice->SetSelection(0); - pQueryCol2Choice->Enable(FALSE); - pQueryValue2Msg->Show(TRUE); - pQueryValue2Txt->Show(TRUE); - pQueryValue1Msg->Show(TRUE); - pQueryValue1Txt->Show(TRUE); - pQueryValue1Txt->SetFocus(); - break; - } - - return; - - } // Operator choice box - - // Column 2 choice - if (widgetName == pQueryCol2Choice->GetName()) - { - if (pQueryCol2Choice->GetSelection()) // Column name is highlighted - { - pQueryValue1Msg->Show(FALSE); - pQueryValue1Txt->Show(FALSE); - } - else // "Value" is highlighted - { - pQueryValue1Msg->Show(TRUE); - pQueryValue1Txt->Show(TRUE); - pQueryValue1Txt->SetFocus(); - } - return; - - } // Column 2 choice - - // Add button - if (widgetName == pQueryAddBtn->GetName()) - { - ProcessAddBtn(); - return; - - } // Add button - - // And button - if (widgetName == pQueryAndBtn->GetName()) - { - AppendToWhere(" AND\n"); - return; - - } // And button - - // Or button - if (widgetName == pQueryOrBtn->GetName()) - { - AppendToWhere(" OR\n"); - return; - - } // Or button - - // Left Paren button - if (widgetName == pQueryLParenBtn->GetName()) - { - AppendToWhere("("); - return; - - } // Left Paren button - - // Right paren button - if (widgetName == pQueryRParenBtn->GetName()) - { - AppendToWhere(")"); - return; - - } // Right Paren button - - // Done button - if (widgetName == pQueryDoneBtn->GetName()) - { - // Be sure the where clause will not overflow the output buffer - if (strlen(pQuerySqlWhereMtxt->GetValue()) > DB_MAX_WHERE_CLAUSE_LEN) - { - wxString s; - s.Printf("Maximum where clause length exceeded.\nLength must be less than %d", DB_MAX_WHERE_CLAUSE_LEN+1); - wxMessageBox(s,"Error...",wxOK | wxICON_EXCLAMATION); - return; - } - // Validate the where clause for things such as matching parens - if (!ValidateWhereClause()) - return; - // Copy the where clause to the output buffer and exit - strcpy(pWhere, pQuerySqlWhereMtxt->GetValue()); - Close(); - return; - - } // Done button - - // Clear button - if (widgetName == pQueryClearBtn->GetName()) - { - bool Ok = (wxMessageBox("Are you sure you wish to clear the Query?","Confirm",wxYES_NO|wxICON_QUESTION) == wxYES); - - if (Ok) - pQuerySqlWhereMtxt->SetValue(""); - return; - - } // Clear button - - // Count button - if (widgetName == pQueryCountBtn->GetName()) - { - wxBeginBusyCursor(); - ProcessCountBtn(); - wxEndBusyCursor(); - return; - - } // Count button - -} // CqueryDlg::OnCommand - - -bool CqueryDlg::OnClose() -{ - // Clean up - if (colInf) - { - delete [] colInf; - colInf = 0; - } - - if (dbTable) - { - delete dbTable; - dbTable = 0; - } - - GetParent()->SetFocus(); - wxEndBusyCursor(); - return TRUE; - -} // CqueryDlg::OnClose() - -/* -bool CqueryDlg::SetWidgetPtrs() -{ - bool abort = FALSE; - - abort = abort || !(pQueryCol1Choice = (wxChoice *)GetWidgetPtr("QueryCol1Choice",this)); - abort = abort || !(pQueryNotCheck = (wxCheckBox *)GetWidgetPtr("QueryNotCheck",this)); - abort = abort || !(pQueryOperatorChoice = (wxChoice *)GetWidgetPtr("QueryOperatorChoice",this)); - abort = abort || !(pQueryCol2Choice = (wxChoice *)GetWidgetPtr("QueryCol2Choice",this)); - abort = abort || !(pQueryValue1Txt = (wxTextCtrl *)GetWidgetPtr("QueryValue1Txt",this)); - abort = abort || !(pQueryValue2Txt = (wxTextCtrl *)GetWidgetPtr("QueryValue2Txt",this)); - abort = abort || !(pQuerySqlWhereMtxt = (wxMultiText *)GetWidgetPtr("QuerySqlWhereMtxt",this)); - abort = abort || !(pQueryAddBtn = (wxButton *)GetWidgetPtr("QueryAddBtn",this)); - abort = abort || !(pQueryAndBtn = (wxButton *)GetWidgetPtr("QueryAndBtn",this)); - abort = abort || !(pQueryOrBtn = (wxButton *)GetWidgetPtr("QueryOrBtn",this)); - abort = abort || !(pQueryLParenBtn = (wxButton *)GetWidgetPtr("QueryLParenBtn",this)); - abort = abort || !(pQueryRParenBtn = (wxButton *)GetWidgetPtr("QueryRParenBtn",this)); - abort = abort || !(pQueryDoneBtn = (wxButton *)GetWidgetPtr("QueryDoneBtn",this)); - abort = abort || !(pQueryClearBtn = (wxButton *)GetWidgetPtr("QueryClearBtn",this)); - abort = abort || !(pQueryCountBtn = (wxButton *)GetWidgetPtr("QueryCountBtn",this)); - abort = abort || !(pQueryHelpBtn = (wxButton *)GetWidgetPtr("QueryHelpBtn",this)); - abort = abort || !(pQueryHintMsg = (wxStaticText *)GetWidgetPtr("QueryHintMsg",this)); - - pFocusTxt = NULL; - - return(widgetPtrsSet = !abort); - -} // CqueryDlg::SetWidgetPtrs -*/ - -void CqueryDlg::AppendToWhere(char *s) -{ - wxString whereStr = pQuerySqlWhereMtxt->GetValue(); - whereStr += s; - pQuerySqlWhereMtxt->SetValue(whereStr); - -} // CqueryDlg::AppendToWhere() - - -void CqueryDlg::ProcessAddBtn() -{ - qryOp oper = (qryOp) pQueryOperatorChoice->GetSelection(); - - // Verify that eveything is filled in correctly - if (pQueryCol2Choice->GetSelection() == 0) // "Value" is selected - { - // Verify that value 1 is filled in - if (strlen(pQueryValue1Txt->GetValue()) == 0) - { - wxBell(); - pQueryValue1Txt->SetFocus(); - return; - } - // For the BETWEEN operator, value 2 must be filled in as well - if (oper == qryOpBETWEEN && - strlen(pQueryValue2Txt->GetValue()) == 0) - { - wxBell(); - pQueryValue2Txt->SetFocus(); - return; - } - } - - // Build the expression and append it to the where clause window - wxString s = pQueryCol1Choice->GetStringSelection(); - - if (pQueryNotCheck->GetValue() && (oper != qryOpEQ)) - s += " NOT"; - - switch(oper) - { - case qryOpEQ: - if (pQueryNotCheck->GetValue()) // NOT box is checked - s += " <>"; - else - s += " ="; - break; - case qryOpLT: - s += " <"; - break; - case qryOpGT: - s += " >"; - break; - case qryOpLE: - s += " <="; - break; - case qryOpGE: - s += " >="; - break; - case qryOpBEGINS: - case qryOpCONTAINS: - case qryOpLIKE: - s += " LIKE"; - break; - case qryOpBETWEEN: - s += " BETWEEN"; - break; - } - - s += " "; - - int col1Idx = pQueryCol1Choice->GetSelection(); - - bool quote = FALSE; - if (colInf[col1Idx].sqlDataType == SQL_VARCHAR || - oper == qryOpBEGINS || - oper == qryOpCONTAINS || - oper == qryOpLIKE) - quote = TRUE; - - if (pQueryCol2Choice->GetSelection()) // Column name - s += pQueryCol2Choice->GetStringSelection(); - else // Column 2 is a "value" - { - if (quote) - s += "'"; - if (oper == qryOpCONTAINS) - s += "%"; - s += pQueryValue1Txt->GetValue(); - if (oper == qryOpCONTAINS || oper == qryOpBEGINS) - s += "%"; - if (quote) - s += "'"; - } - - if (oper == qryOpBETWEEN) - { - s += " AND "; - if (quote) - s += "'"; - s += pQueryValue2Txt->GetValue(); - if (quote) - s += "'"; - } - - AppendToWhere((char*) (const char*) s); - -} // CqueryDlg::ProcessAddBtn() - - -void CqueryDlg::ProcessCountBtn() -{ - if (!ValidateWhereClause()) - return; - - if (dbTable == 0) // wxTable object needs to be created and opened - { - if (!(dbTable = new wxTable(pDB, masterTableName, 0))) - { - wxMessageBox("Memory allocation failed creating a wxTable object.","Error...",wxOK | wxICON_EXCLAMATION); - return; - } - if (!dbTable->Open()) - { - wxString tStr; - tStr = "ODBC error during Open()\n\n"; - tStr += GetExtendedDBErrorMsg(__FILE__,__LINE__); - wxMessageBox(tStr,"ODBC Error...",wxOK | wxICON_EXCLAMATION); - return; - } - } - - // Count() with WHERE clause - dbTable->where = (char*) (const char*) pQuerySqlWhereMtxt->GetValue(); - ULONG whereCnt = dbTable->Count(); - - // Count() of all records in the table - dbTable->where = 0; - ULONG totalCnt = dbTable->Count(); - - if (whereCnt > 0 || totalCnt == 0) - { - wxString tStr; - tStr.Printf("%lu of %lu records match the query criteria.",whereCnt,totalCnt); - wxMessageBox(tStr,"Notice...",wxOK | wxICON_INFORMATION); - } - else - { - wxString tStr; - tStr.Printf("%lu of %lu records match the query criteria.\n\nEither the criteria entered produced a result set\nwith no records, or there was a syntactical error\nin the clause you entered.\n\nPress the details button to see if any database errors were reported.",whereCnt,totalCnt); - wxMessageBox(tStr,"Notice...",wxOK | wxICON_INFORMATION); - } - - // After a wxMessageBox, the focus does not necessarily return to the - // window which was the focus when the message box popped up, so return - // focus to the Query dialog for certain - SetFocus(); - -} // CqueryDlg::ProcessCountBtn() - - -bool CqueryDlg::ValidateWhereClause() -{ - wxString where = pQuerySqlWhereMtxt->GetValue(); - - if (where.Freq('(') != where.Freq(')')) - { - wxMessageBox("There are mismatched parenthesis in the constructed where clause","Error...",wxOK | wxICON_EXCLAMATION); - return(FALSE); - } - // After a wxMessageBox, the focus does not necessarily return to the - // window which was the focus when the message box popped up, so return - // focus to the Query dialog for certain - SetFocus(); - - return(TRUE); - -} // CqueryDlg::ValidateWhereClause() diff --git a/samples/db/dbtest.def b/samples/db/dbtest.def deleted file mode 100644 index 013825e9e7..0000000000 --- a/samples/db/dbtest.def +++ /dev/null @@ -1,8 +0,0 @@ -NAME DBTEST -DESCRIPTION 'Database wxWindows application' -EXETYPE WINDOWS -STUB 'WINSTUB.EXE' -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE -HEAPSIZE 1024 -STACKSIZE 8192 diff --git a/samples/db/dbtest.h b/samples/db/dbtest.h deleted file mode 100644 index 516204e389..0000000000 --- a/samples/db/dbtest.h +++ /dev/null @@ -1,383 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: dbtest.h -// Purpose: wxWindows database demo app -// Author: George Tasker -// Modified by: -// Created: 1998 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Remstar International, Inc. -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma interface "dbtest.h" -#endif - -#include -#include - -enum DialogModes {mView,mCreate,mEdit,mSearch}; - -// ID for the menu quit command -#define FILE_CREATE 100 -#define FILE_EXIT 199 -#define EDIT_PARAMETERS 200 -#define ABOUT_DEMO 300 - - -// Name of the table to be created/opened -const char CONTACT_TABLE_NAME[] = "contacts"; - -// Nuber of columns in the above table -const int CONTACT_NO_COLS = 12; // 0-11 - -// Global structure for holding ODBC connection information -struct DbStuff DbConnectInf; - -enum Language {langENGLISH, langFRENCH, langGERMAN, langSPANISH, langOTHER}; - -// Forward class declarations -class CeditorDlg; -class CparameterDlg; - -#ifdef __WXGTK__ -const char paramFilename[] = "../database.cfg"; -#else -const char paramFilename[] = "database.cfg"; -#endif - - -/* - * This class contains the actual data members that are used for transferring - * data back and forth from the database to the program. - * - * NOTE: The object described in this class is just for example purposes, and has no - * real meaning other than to show each type of field being used by the database - */ -class CstructContact : public wxObject -{ - public: - char Name[ 50+1 ]; // Contact's name - char Addr1[ 50+1 ]; - char Addr2[ 50+1 ]; - char City[ 25+1 ]; - char State[ 25+1 ]; - char PostalCode[ 15+1 ]; - char Country[ 20+1 ]; - TIMESTAMP_STRUCT JoinDate; // Date on which this person joined the wxWindows project - Language NativeLanguage; // Enumerated type indicating person's native language - bool IsDeveloper; // Is this person a developer for wxWindows, or just a subscriber - int Contributions; // Something to show off an integer field - ULONG LinesOfCode; // Something to show off a 'long' field -}; // CstructContact - - -// -// NOTE: Ccontact inherits wxTable, which gives access to all the database functionality -// -class Ccontact : public wxTable, public CstructContact -{ - private: - bool freeDbConn; - void SetupColumns(); - - public: - wxString whereStr; - wxString qryWhereStr; // Where string returned from the query dialog - - Ccontact(wxDB *pwxDB=NULL); - ~Ccontact(); - - void Initialize(); - bool CreateIndexes(void); - bool FetchByName(char *name); - -}; // Ccontact class definition - - -typedef struct Cparameters -{ - // The length of these strings were arbitrarily picked, and are - // dependent on the OS and database engine you will be using. - char ODBCSource[100+1]; - char UserName[25+1]; - char Password[25+1]; -} Cparameters; - - -// Define a new application type -class DatabaseDemoApp: public wxApp -{ - public: - Cparameters params; - bool OnInit(); -}; // DatabaseDemoApp - -DECLARE_APP(DatabaseDemoApp) - -// Define a new frame type -class DatabaseDemoFrame: public wxFrame -{ - private: - CeditorDlg *pEditorDlg; - CparameterDlg *pParamDlg; - - public: - DatabaseDemoFrame(wxFrame *frame, const wxString& title, const wxPoint& pos, const wxSize& sz); - - void OnCloseWindow(wxCloseEvent& event); - void OnCreate(wxCommandEvent& event); - void OnExit(wxCommandEvent& event); - void OnEditParameters(wxCommandEvent& event); - void OnAbout(wxCommandEvent& event); - - void CreateDataTable(); - void BuildEditorDialog(); - void BuildParameterDialog(wxWindow *parent); - -DECLARE_EVENT_TABLE() -}; // DatabaseDemoFrame - - - -// *************************** CeditorDlg *************************** - -class CeditorDlg : public wxPanel -{ - private: - bool widgetPtrsSet; - wxString saveName; - - // Pointers to all widgets on the dialog - wxButton *pCreateBtn, *pEditBtn, *pDeleteBtn, *pCopyBtn, *pSaveBtn, *pCancelBtn; - wxButton *pPrevBtn, *pNextBtn, *pQueryBtn, *pResetBtn, *pDoneBtn, *pHelpBtn; - wxButton *pNameListBtn; - wxTextCtrl *pNameTxt, *pAddress1Txt, *pAddress2Txt,*pCityTxt, *pStateTxt, *pCountryTxt,*pPostalCodeTxt; - wxStaticText *pNameMsg, *pAddress1Msg, *pAddress2Msg,*pCityMsg, *pStateMsg, *pCountryMsg,*pPostalCodeMsg; - wxTextCtrl *pJoinDateTxt,*pContribTxt, *pLinesTxt; - wxStaticText *pJoinDateMsg,*pContribMsg, *pLinesMsg; - wxRadioBox *pDeveloperRadio; - wxChoice *pNativeLangChoice; - wxStaticText *pNativeLangMsg; - - public: - enum DialogModes mode; - Ccontact *Contact; // this is the table object that will be being manipulated - - CeditorDlg(wxWindow *parent); - bool OnClose(void); - void OnButton( wxCommandEvent &event ); - void OnCommand(wxWindow& win, wxCommandEvent& event); - void OnActivate(bool) {}; // necessary for hot keys - - void FieldsEditable(); - void SetMode(enum DialogModes m); - bool PutData(); - bool GetData(); - bool Save(); - bool GetNextRec(); - bool GetPrevRec(); - bool GetRec(char *whereStr); - -DECLARE_EVENT_TABLE() -}; // CeditorDlg - -#define EDITOR_DIALOG 199 - -// Editor dialog control ids -#define EDITOR_DIALOG_FN_GROUP 200 -#define EDITOR_DIALOG_SEARCH_GROUP 201 -#define EDITOR_DIALOG_CREATE 202 -#define EDITOR_DIALOG_EDIT 203 -#define EDITOR_DIALOG_DELETE 204 -#define EDITOR_DIALOG_COPY 205 -#define EDITOR_DIALOG_SAVE 206 -#define EDITOR_DIALOG_CANCEL 207 -#define EDITOR_DIALOG_PREV 208 -#define EDITOR_DIALOG_NEXT 209 -#define EDITOR_DIALOG_QUERY 211 -#define EDITOR_DIALOG_RESET 212 -#define EDITOR_DIALOG_NAME_MSG 213 -#define EDITOR_DIALOG_NAME_TEXT 214 -#define EDITOR_DIALOG_LOOKUP 215 -#define EDITOR_DIALOG_ADDRESS1_MSG 216 -#define EDITOR_DIALOG_ADDRESS1_TEXT 217 -#define EDITOR_DIALOG_ADDRESS2_MSG 218 -#define EDITOR_DIALOG_ADDRESS2_TEXT 219 -#define EDITOR_DIALOG_CITY_MSG 220 -#define EDITOR_DIALOG_CITY_TEXT 221 -#define EDITOR_DIALOG_COUNTRY_MSG 222 -#define EDITOR_DIALOG_COUNTRY_TEXT 223 -#define EDITOR_DIALOG_POSTAL_MSG 224 -#define EDITOR_DIALOG_POSTAL_TEXT 225 -#define EDITOR_DIALOG_LANG_MSG 226 -#define EDITOR_DIALOG_LANG_CHOICE 227 -#define EDITOR_DIALOG_DATE_MSG 228 -#define EDITOR_DIALOG_DATE_TEXT 229 -#define EDITOR_DIALOG_CONTRIB_MSG 230 -#define EDITOR_DIALOG_CONTRIB_TEXT 231 -#define EDITOR_DIALOG_LINES_MSG 232 -#define EDITOR_DIALOG_LINES_TEXT 233 -#define EDITOR_DIALOG_STATE_MSG 234 -#define EDITOR_DIALOG_STATE_TEXT 235 -#define EDITOR_DIALOG_DEVELOPER 236 -#define EDITOR_DIALOG_JOIN_MSG 237 -#define EDITOR_DIALOG_JOIN_TEXT 238 - -// *************************** CparameterDlg *************************** - -class CparameterDlg : public wxDialog -{ - private: - bool widgetPtrsSet; - enum DialogModes mode; - bool saved; - Cparameters savedParamSettings; - - // Pointers to all widgets on the dialog - wxStaticText *pParamODBCSourceMsg; - wxListBox *pParamODBCSourceList; - wxStaticText *pParamUserNameMsg, *pParamPasswordMsg; - wxTextCtrl *pParamUserNameTxt, *pParamPasswordTxt; - wxButton *pParamSaveBtn, *pParamCancelBtn; - - public: - CparameterDlg(wxWindow *parent); - bool OnClose(void); - void OnCommand(wxWindow& win, wxCommandEvent& event); - void OnActivate(bool) {}; // necessary for hot keys - - bool PutData(); - bool GetData(); - bool Save(); - void FillDataSourceList(); - -}; // CparameterDlg - -#define PARAMETER_DIALOG 400 - -// Parameter dialog control ids -#define PARAMETER_DIALOG_SOURCE_MSG 401 -#define PARAMETER_DIALOG_SOURCE_LISTBOX 402 -#define PARAMETER_DIALOG_NAME_MSG 403 -#define PARAMETER_DIALOG_NAME_TEXT 404 -#define PARAMETER_DIALOG_PASSWORD_MSG 405 -#define PARAMETER_DIALOG_PASSWORD_TEXT 406 -#define PARAMETER_DIALOG_SAVE 407 -#define PARAMETER_DIALOG_CANCEL 408 - -// *************************** CqueryDlg *************************** - - -// QUERY DIALOG -enum qryOp -{ - qryOpEQ, - qryOpLT, - qryOpGT, - qryOpLE, - qryOpGE, - qryOpBEGINS, - qryOpCONTAINS, - qryOpLIKE, - qryOpBETWEEN -}; - - -// Query strings -char * const langQRY_EQ = "column = column | value"; -char * const langQRY_LT = "column < column | value"; -char * const langQRY_GT = "column > column | value"; -char * const langQRY_LE = "column <= column | value"; -char * const langQRY_GE = "column >= column | value"; -char * const langQRY_BEGINS = "columns that BEGIN with the string entered"; -char * const langQRY_CONTAINS = "columns that CONTAIN the string entered"; -char * const langQRY_LIKE = "% matches 0 or more of any char; _ matches 1 char"; -char * const langQRY_BETWEEN = "column BETWEEN value AND value"; - - -class CqueryDlg : public wxDialog -{ - private: - CcolInf *colInf; // Column inf. returned by db->GetColumns() - wxTable *dbTable; - char *masterTableName; - char *pWhere; // A pointer to the storage for the resulting where clause - wxDB *pDB; - - public: - bool widgetPtrsSet; - - // Widget pointers - wxStaticText *pQueryCol1Msg; - wxChoice *pQueryCol1Choice; - wxStaticText *pQueryNotMsg; - wxCheckBox *pQueryNotCheck; - wxStaticText *pQueryOperatorMsg; - wxChoice *pQueryOperatorChoice; - wxStaticText *pQueryCol2Msg; - wxChoice *pQueryCol2Choice; - wxStaticText *pQueryValue1Msg; - wxTextCtrl *pQueryValue1Txt; - wxStaticText *pQueryValue2Msg; - wxTextCtrl *pQueryValue2Txt; - wxStaticText *pQuerySqlWhereMsg; - wxTextCtrl *pQuerySqlWhereMtxt; - wxButton *pQueryAddBtn; - wxButton *pQueryAndBtn; - wxButton *pQueryOrBtn; - wxButton *pQueryLParenBtn; - wxButton *pQueryRParenBtn; - wxButton *pQueryDoneBtn; - wxButton *pQueryClearBtn; - wxButton *pQueryCountBtn; - wxButton *pQueryHelpBtn; - wxStaticBox *pQueryHintGrp; - wxStaticText *pQueryHintMsg; - - wxTextCtrl *pFocusTxt; - - CqueryDlg(wxWindow *parent, wxDB *pDb, char *tblName[], char *pWhereArg); - - void OnButton( wxCommandEvent &event ); - void OnCommand(wxWindow& win, wxCommandEvent& event); - bool OnClose(); - void OnActivate(bool) {}; // necessary for hot keys - -// bool SetWidgetPtrs(); - void AppendToWhere(char *s); - void ProcessAddBtn(); - void ProcessCountBtn(); - bool ValidateWhereClause(); - -DECLARE_EVENT_TABLE() -}; // CqueryDlg - -#define QUERY_DIALOG 300 - -// Parameter dialog control ids -#define QUERY_DIALOG_COL_MSG 301 -#define QUERY_DIALOG_COL_CHOICE 302 -#define QUERY_DIALOG_NOT_MSG 303 -#define QUERY_DIALOG_NOT_CHECKBOX 304 -#define QUERY_DIALOG_OP_MSG 305 -#define QUERY_DIALOG_OP_CHOICE 306 -#define QUERY_DIALOG_COL2_MSG 307 -#define QUERY_DIALOG_COL2_CHOICE 308 -#define QUERY_DIALOG_WHERE_MSG 309 -#define QUERY_DIALOG_WHERE_TEXT 310 -#define QUERY_DIALOG_ADD 311 -#define QUERY_DIALOG_AND 312 -#define QUERY_DIALOG_OR 313 -#define QUERY_DIALOG_LPAREN 314 -#define QUERY_DIALOG_RPAREN 315 -#define QUERY_DIALOG_DONE 316 -#define QUERY_DIALOG_CLEAR 317 -#define QUERY_DIALOG_COUNT 318 -#define QUERY_DIALOG_VALUE1_MSG 319 -#define QUERY_DIALOG_VALUE1_TEXT 320 -#define QUERY_DIALOG_VALUE2_MSG 321 -#define QUERY_DIALOG_VALUE2_TEXT 322 -#define QUERY_DIALOG_HINT_GROUP 323 -#define QUERY_DIALOG_HINT_MSG 324 - diff --git a/samples/db/dbtest.ico b/samples/db/dbtest.ico deleted file mode 100644 index c4dbd3f7847a93a316ad9c909120b7c1d6934de0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmc&yF%H5o47>soBd{=cWJKx*coG{!2g*dH4*d#Z>ENM#KqbDxh*%gv3g?E>gd#C= zj^j8!CyrYnpoHNRit_-N(=MnXbwv#@;!H619SOjJB(a7wm#C_WRs*IPFh*BYif-xj z3#kVnH?9Etjf;NVW#_!Fkri{vgpmO_N_v5jX^ikPHnn)21Pc}+dBNb!1f!xt&rs??|Z?h*O1I1K`JvzDv2 k?|bb|`(LN_0Gw_&vo(*`F5rdhe*VV}{{eky@DJ6ypDptktN;K2 diff --git a/samples/db/dbtest.rc b/samples/db/dbtest.rc deleted file mode 100644 index 69fb4aa0a1..0000000000 --- a/samples/db/dbtest.rc +++ /dev/null @@ -1,3 +0,0 @@ -db_icon ICON "dbtest.ico" -#include "wx\msw\wx.rc" - diff --git a/samples/db/listdb.cpp b/samples/db/listdb.cpp deleted file mode 100644 index 574bab36be..0000000000 --- a/samples/db/listdb.cpp +++ /dev/null @@ -1,394 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: listdb.cpp -// Purpose: Data table lookup listbox code -// Author: George Tasker/Doug Card -// Modified by: -// Created: 1996 -// RCS-ID: $Id$ -// Copyright: (c) 1996 Remstar International, Inc. -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -/* -// SYNOPSIS START - - Member functions for the classes defined in LISTDB.H - - This class is used to present a generic ListBox lookup window for - use with any of the object creation/selection choice widgets. This - dialog window will present a (possibly) scrolling list of values - that come from a data table source. Based on the object type passed - in the constructor, a ListBox is built to present the user with a - single selection listbox. - - The string selected from the list box is stored in the Global variable - "ListDB_Seclection", and will remain set until another interation of this - routine is called. - - For each object (database) type that is to be used, an overridden - constructor should be written to appropriately link to the proper - data table/object for building the list. - - The data table record access is all handled through the routines - in this module, interfacing with the methods defined in wxTable. - - All objects which use data table access must be initialized and - have opened the table prior to passing them in the dialog - constructor, and the 'where' query should already have been set - and performed before creating this dialog instance. - -// SYNOPSIS STOP -*/ - -#ifdef __GNUG__ -#pragma implementation "listdb.h" -#endif - -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif //__BORLANDC__ - -#ifndef WX_PRECOMP -#include -#endif //WX_PRECOMP - -#include - -#include "listdb.h" - -// Global structure for holding ODBC connection information -extern DbStuff DbConnectInf; - -// Global database connection -extern wxDB *READONLY_DB; - - -// Used for passing the selected listbox selection back to the calling -// routine. This variable must be declared as 'extern' in the calling -// source module -char ListDB_Selection[LOOKUP_COL_LEN+1]; - -// If the listbox contains two columns of data, the second column is -// returned in this variable. -char ListDB_Selection2[LOOKUP_COL_LEN+1]; - -// Constants -const int LISTDB_NO_SPACES_BETWEEN_COLS = 3; - - -// Clookup constructor -Clookup::Clookup(char *tblName, char *colName) : wxTable(READONLY_DB, tblName, 1) -{ - - SetColDefs (0, colName, DB_DATA_TYPE_VARCHAR, lookupCol, SQL_C_CHAR, LOOKUP_COL_LEN+1, FALSE, FALSE); - -} // Clookup() - - -// Clookup2 constructor -Clookup2::Clookup2(char *tblName, char *colName1, char *colName2, wxDB *pDb) - : wxTable(pDb, tblName, (1 + (strlen(colName2) > 0))) -{ - int i = 0; - - SetColDefs (i, colName1, DB_DATA_TYPE_VARCHAR, lookupCol1, SQL_C_CHAR, LOOKUP_COL_LEN+1, FALSE, FALSE); - - if (strlen(colName2) > 0) - SetColDefs (++i, colName2, DB_DATA_TYPE_VARCHAR, lookupCol2, SQL_C_CHAR, LOOKUP_COL_LEN+1, FALSE, FALSE); - -} // Clookup2() - - -// This is a generic lookup constructor that will work with any table and any column -ClookUpDlg::ClookUpDlg(wxWindow *parent, char *windowTitle, char *tableName, char *colName, - char *where, char *orderBy) : wxDialog (parent, LOOKUP_DIALOG, "Select...", wxPoint(-1, -1), wxSize(400, 290)) -{ - wxBeginBusyCursor(); - - strcpy(ListDB_Selection,""); - widgetPtrsSet = FALSE; - lookup = 0; - lookup2 = 0; - noDisplayCols = 1; - col1Len = 0; - - pLookUpSelectList = new wxListBox(this, LOOKUP_DIALOG_SELECT, wxPoint(5, 15), wxSize(384, 195), 0, 0, wxLB_SINGLE|wxLB_ALWAYS_SB, wxDefaultValidator, "LookUpSelectList"); - pLookUpOkBtn = new wxButton(this, LOOKUP_DIALOG_OK, "&Ok", wxPoint(113, 222), wxSize(70, 35), 0, wxDefaultValidator, "LookUpOkBtn"); - pLookUpCancelBtn = new wxButton(this, LOOKUP_DIALOG_CANCEL, "C&ancel", wxPoint(212, 222), wxSize(70, 35), 0, wxDefaultValidator, "LookUpCancelBtn"); - - widgetPtrsSet = TRUE; - - // Query the lookup table and display the result set - if (!(lookup = new Clookup(tableName, colName))) - { - wxMessageBox("Error allocating memory for 'Clookup'object.","Error..."); - Close(); - return; - } - - if (!lookup->Open()) - { - wxString tStr; - tStr.Printf("Unable to open the table '%s'.",tableName); - wxMessageBox(tStr,"ODBC Error..."); - Close(); - return; - } - - lookup->orderBy = orderBy; - lookup->where = where; - if (!lookup->Query()) - { - wxMessageBox("ODBC error during Query()","ODBC Error..."); - Close(); - return; - } - - // Fill in the list box from the query result set - while (lookup->GetNext()) - pLookUpSelectList->Append(lookup->lookupCol); - - // Highlight the first list item - pLookUpSelectList->SetSelection(0); - - // Make the OK activate by pressing Enter - if (pLookUpSelectList->Number()) - pLookUpOkBtn->SetDefault(); - else - { - pLookUpCancelBtn->SetDefault(); - pLookUpOkBtn->Enable(FALSE); - } - - // Display the dialog window - SetTitle(windowTitle); - Centre(wxBOTH); - wxEndBusyCursor(); - ShowModal(); - -} // Generic lookup constructor - - -// -// This is a generic lookup constructor that will work with any table and any column. -// It extends the capabilites of the lookup dialog in the following ways: -// -// 1) 2 columns rather than one -// 2) The ability to select DISTINCT column values -// -// Only set distinctValues equal to true if necessary. In many cases, the constraints -// of the index(es) will enforce this uniqueness. Selecting DISTINCT does require -// overhead by the database to ensure that all values returned are distinct. Therefore, -// use this ONLY when you need it. -// -// For complicated queries, you can pass in the sql select statement. This would be -// necessary if joins are involved since by default both columns must come from the -// same table. -// -// If you do query by sql statement, you must pass in the maximum lenght of column1, -// since it cannot be derived when you query using your own sql statement. -// -// The optional database connection can be used if you'd like the lookup class -// to use a database pointer other than the global READONLY_DB. This is necessary if -// records are being saved, but not committed to the db, yet should be included -// in the lookup window. -// -ClookUpDlg::ClookUpDlg(wxWindow *parent, char *windowTitle, char *tableName, - char *dispCol1, char *dispCol2, char *where, char *orderBy, bool distinctValues, - char *selectStmt, int maxLenCol1, wxDB *pDb, bool allowOk) : wxDialog (parent, LOOKUP_DIALOG, "Select...", wxPoint(-1, -1), wxSize(400, 290)) -{ - wxBeginBusyCursor(); - - strcpy(ListDB_Selection,""); - strcpy(ListDB_Selection2,""); - widgetPtrsSet = FALSE; - lookup = 0; - lookup2 = 0; - noDisplayCols = (strlen(dispCol2) ? 2 : 1); - col1Len = 0; - - wxFont fixedFont(12,wxMODERN,wxNORMAL,wxNORMAL); - - // this is done with fixed font so that the second column (if any) will be left - // justified in the second column - pLookUpSelectList = new wxListBox(this, LOOKUP_DIALOG_SELECT, wxPoint(5, 15), wxSize(384, 195), 0, 0, wxLB_SINGLE|wxLB_ALWAYS_SB, wxDefaultValidator, "LookUpSelectList"); - - pLookUpSelectList->SetFont(fixedFont); - - pLookUpOkBtn = new wxButton(this, LOOKUP_DIALOG_OK, "&Ok", wxPoint(113, 222), wxSize(70, 35), 0, wxDefaultValidator, "LookUpOkBtn"); - pLookUpCancelBtn = new wxButton(this, LOOKUP_DIALOG_CANCEL, "C&ancel", wxPoint(212, 222), wxSize(70, 35), 0, wxDefaultValidator, "LookUpCancelBtn"); - - widgetPtrsSet = TRUE; - - // Query the lookup table and display the result set - if (!(lookup2 = new Clookup2(tableName, dispCol1, dispCol2, pDb))) - { - wxMessageBox("Error allocating memory for 'Clookup2'object.","Error..."); - Close(); - return; - } - - if (!lookup2->Open()) - { - wxString tStr; - tStr.Printf("Unable to open the table '%s'.",tableName); - wxMessageBox(tStr,"ODBC Error..."); - Close(); - return; - } - - // If displaying 2 columns, determine the maximum length of column1 - int maxColLen; - if (maxLenCol1) - maxColLen = col1Len = maxLenCol1; // user passed in max col length for column 1 - else - { - maxColLen = LOOKUP_COL_LEN; - if (strlen(dispCol2)) - { - wxString q = "SELECT MAX({fn LENGTH("; - q += dispCol1; - q += ")}), NULL"; - q += " FROM "; - q += tableName; - if (strlen(where)) - { - q += " WHERE "; - q += where; - } - if (!lookup2->QueryBySqlStmt((char*) (const char*) q)) - { - wxMessageBox("ODBC error during QueryBySqlStmt()","ODBC Error..."); - Close(); - return; - } - if (lookup2->GetNext()) - maxColLen = col1Len = atoi(lookup2->lookupCol1); - else - wxMessageBox("ODBC error during GetNext()","ODBC Error..."); - } - } - - // Query the actual record set - if (selectStmt && strlen(selectStmt)) // Query by sql stmt passed in - { - if (!lookup2->QueryBySqlStmt(selectStmt)) - { - wxMessageBox("ODBC error during QueryBySqlStmt()","ODBC Error..."); - Close(); - return; - } - } - else // Query using where and order by clauses - { - lookup2->orderBy = orderBy; - lookup2->where = where; - if (!lookup2->Query(FALSE, distinctValues)) - { - wxMessageBox("ODBC error during Query()","ODBC Error..."); - Close(); - return; - } - } - - // Fill in the list box from the query result set - wxString s; - while (lookup2->GetNext()) - { - s = lookup2->lookupCol1; - if (strlen(dispCol2)) // Append the optional column 2 - { - s.Append(' ', (maxColLen + LISTDB_NO_SPACES_BETWEEN_COLS - strlen(lookup2->lookupCol1))); - s.Append(lookup2->lookupCol2); - } - pLookUpSelectList->Append(s); - } - - // Highlight the first list item - pLookUpSelectList->SetSelection(0); - - // Make the OK activate by pressing Enter - if (pLookUpSelectList->Number()) - pLookUpOkBtn->SetDefault(); - else - { - pLookUpCancelBtn->SetDefault(); - pLookUpOkBtn->Enable(FALSE); - } - - pLookUpOkBtn->Enable(allowOk); - - // Display the dialog window - SetTitle(windowTitle); - Centre(wxBOTH); - wxEndBusyCursor(); - ShowModal(); - -} // Generic lookup constructor 2 - - -bool ClookUpDlg::OnClose(void) -{ - widgetPtrsSet = FALSE; - GetParent()->Enable(TRUE); - - if (lookup) - delete lookup; - if (lookup2) - delete lookup2; - - wxEndBusyCursor(); - return TRUE; - -} // ClookUpDlg::OnClose - - -void ClookUpDlg::OnCommand(wxWindow& win, wxCommandEvent& event) -{ - wxString widgetName = win.GetName(); - - if (widgetPtrsSet) - { - // OK Button - if (widgetName == pLookUpOkBtn->GetName()) - { - if (pLookUpSelectList->GetSelection() != -1) - { - if (noDisplayCols == 1) - strcpy (ListDB_Selection, pLookUpSelectList->GetStringSelection()); - else // 2 display columns - { - wxString s = pLookUpSelectList->GetStringSelection(); - // Column 1 - s = s.SubString(0, col1Len-1); - s = s.Strip(); - strcpy(ListDB_Selection, s); - // Column 2 - s = pLookUpSelectList->GetStringSelection(); - s = s.Mid(col1Len + LISTDB_NO_SPACES_BETWEEN_COLS); - s = s.Strip(); - strcpy(ListDB_Selection2, s); - } - } - else - { - strcpy(ListDB_Selection,""); - strcpy(ListDB_Selection2,""); - } - Close(); - } // OK Button - - // Cancel Button - if (widgetName == pLookUpCancelBtn->GetName()) - { - strcpy (ListDB_Selection,""); - strcpy (ListDB_Selection2,""); - Close(); - } // Cancel Button - } - -}; // ClookUpDlg::OnCommand - -// *********************************** listdb.cpp ********************************** diff --git a/samples/db/listdb.h b/samples/db/listdb.h deleted file mode 100644 index 440ad92f3b..0000000000 --- a/samples/db/listdb.h +++ /dev/null @@ -1,128 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: listdb.h -// Purpose: wxWindows database demo app -// Author: George Tasker -// Modified by: -// Created: 1996 -// RCS-ID: $Id$ -// Copyright: (c) 1996 Remstar International, Inc. -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma interface "listdb.h" -#endif - -/* - Contains dialog class for creating a data table lookup listbox -*/ - -#ifndef LISTDB_DOT_H -#define LISTDB_DOT_H - - -#include - -const int LOOKUP_COL_LEN = 250; - -// Global database connection -extern wxDB *READONLY_DB; - -// Clookup class -class Clookup : public wxTable -{ - public: - - char lookupCol[LOOKUP_COL_LEN+1]; - - Clookup(char *tblName, char *colName); - -}; // Clookup - -// Clookup2 class -class Clookup2 : public wxTable -{ - public: - - char lookupCol1[LOOKUP_COL_LEN+1]; - char lookupCol2[LOOKUP_COL_LEN+1]; - - Clookup2(char *tblName, char *colName1, char *colName2, wxDB *pDb); - -}; // Clookup2 - -class ClookUpDlg : public wxDialog -{ - private: - bool widgetPtrsSet; - int currentCursor; - Clookup *lookup; - Clookup2 *lookup2; - int noDisplayCols; - int col1Len; - - wxListBox *pLookUpSelectList; - wxButton *pLookUpOkBtn; - wxButton *pLookUpCancelBtn; - - public: - - // This is a generic lookup constructor that will work with any table and any column - ClookUpDlg(wxWindow *parent, - char *windowTitle, - char *tableName, - char *colName, - char *where, - char *orderBy); - - // - // This is a generic lookup constructor that will work with any table and any column. - // It extends the capabilites of the lookup dialog in the following ways: - // - // 1) 2 columns rather than one - // 2) The ability to select DISTINCT column values - // - // Only set distinctValues equal to true if necessary. In many cases, the constraints - // of the index(es) will enforce this uniqueness. Selecting DISTINCT does require - // overhead by the database to ensure that all values returned are distinct. Therefore, - // use this ONLY when you need it. - // - // For complicated queries, you can pass in the sql select statement. This would be - // necessary if joins are involved since by default both columns must come from the - // same table. - // - // If you do query by sql statement, you must pass in the maximum length of column1, - // since it cannot be derived when you query using your own sql statement. - // - // The optional database connection can be used if you'd like the lookup class - // to use a database pointer other than the global READONLY_DB. This is necessary if - // records are being saved, but not committed to the db, yet should be included - // in the lookup window. - // - ClookUpDlg(wxWindow *parent, - char *windowTitle, - char *tableName, - char *dispCol1, // Must have at least 1 display column - char *dispCol2, // Optional - char *where, - char *orderBy, - bool distinctValues, // e.g. SELECT DISTINCT ... - char *selectStmt = 0, // If you wish to query by SQLstmt (complicated lookups) - int maxLenCol1 = 0, // Mandatory if querying by SQLstmt - wxDB *pDb = READONLY_DB, // Database connection pointer - bool allowOk = TRUE); // is the OK button enabled - - void OnCommand(wxWindow& win, wxCommandEvent& event); - bool OnClose(); - void OnActivate(bool) {}; // necessary for hot keys -}; - -#define LOOKUP_DIALOG 500 - -#define LOOKUP_DIALOG_SELECT 501 -#define LOOKUP_DIALOG_OK 502 -#define LOOKUP_DIALOG_CANCEL 503 - -#endif // LISTDB_DOT_H - -// ************************************ listdb.h ********************************* diff --git a/samples/db/makefile.b32 b/samples/db/makefile.b32 deleted file mode 100644 index a9f52b40a7..0000000000 --- a/samples/db/makefile.b32 +++ /dev/null @@ -1,16 +0,0 @@ -# -# File: makefile.b32 -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: -# -# Makefile : Builds sample for 32-bit BC++ - -WXDIR = $(WXWIN) - -TARGET=dbtest -OBJECTS = $(TARGET).obj listdb.obj - -!include $(WXDIR)\src\makeprog.b32 - diff --git a/samples/db/makefile.dos b/samples/db/makefile.dos deleted file mode 100644 index 437ac4e46e..0000000000 --- a/samples/db/makefile.dos +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.dos -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Makefile : Builds 16-bit sample, VC++ 1.5 -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -WXDIR = $(WXWIN) - -TARGET=dbtest -OBJECTS=$(TARGET).obj - -!include $(WXDIR)\src\makeprog.msc - diff --git a/samples/db/makefile.unx b/samples/db/makefile.unx deleted file mode 100644 index 2c8bf754e9..0000000000 --- a/samples/db/makefile.unx +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1998 -# Updated: -# Copyright: (c) 1998 Julian Smart -# -# "%W% %G%" -# -# Makefile for dbtest example (UNIX). - -PROGRAM=dbtest - -OBJECTS=$(PROGRAM).o listdb.o - -include ../../src/makeprog.env - diff --git a/samples/db/makefile.vc b/samples/db/makefile.vc deleted file mode 100644 index e1243b6d30..0000000000 --- a/samples/db/makefile.vc +++ /dev/null @@ -1,18 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: (c) Julian Smart -# -# Makefile : Builds sample (VC++, WIN32) -# Use FINAL=1 argument to nmake to build final version with no debug info. - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -PROGRAM=dbtest -OBJECTS = $(PROGRAM).obj listdb.obj - -!include $(WXDIR)\src\makeprog.vc - diff --git a/samples/db/makefile.wat b/samples/db/makefile.wat deleted file mode 100644 index c3d0e8772d..0000000000 --- a/samples/db/makefile.wat +++ /dev/null @@ -1,15 +0,0 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 -# -# - -WXDIR = $(%WXWIN) - -PROGRAM = dbtest -OBJECTS = $(PROGRAM).obj listdb.obj - -!include $(WXDIR)\src\makeprog.wat - - diff --git a/samples/dde/Makefile b/samples/dde/Makefile deleted file mode 100644 index bccce53f76..0000000000 --- a/samples/dde/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../../setup/general/makeapp diff --git a/samples/dde/Makefile.in b/samples/dde/Makefile.in deleted file mode 100644 index 68ded4e305..0000000000 --- a/samples/dde/Makefile.in +++ /dev/null @@ -1,28 +0,0 @@ -# WXXT base directory -WXBASEDIR=@WXBASEDIR@ - -# set the OS type for compilation -OS=@OS@ -# compile a library only -RULE=bin2 - -# define library name -BIN_TARGET=client -BIN2_TARGET=server -# define library sources -BIN_SRC= client.cpp -BIN2_SRC= server.cpp - -#define library objects -BIN_OBJ= client.o -BIN2_OBJ= server.o - -# additional things needed to link -BIN_LINK= -BIN2_LINK= - -# additional things needed to compile -ADD_COMPILE= - -# include the definitions now -include ../../../template.mak diff --git a/samples/dde/client.cpp b/samples/dde/client.cpp deleted file mode 100644 index 01430071ab..0000000000 --- a/samples/dde/client.cpp +++ /dev/null @@ -1,211 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: client.cpp -// Purpose: DDE sample: client -// Author: Julian Smart -// Modified by: -// Created: 25/01/99 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -// Settings common to both executables: determines whether -// we're using TCP/IP or real DDE. - -#include "ddesetup.h" - -#if defined(__WXGTK__) || defined(__WXMOTIF__) -#include "mondrian.xpm" -#endif - -#include "client.h" - -MyFrame *frame = NULL; - -IMPLEMENT_APP(MyApp) - -char ipc_buffer[4000]; -wxListBox *the_list = NULL; - -MyConnection *the_connection = NULL; -MyClient *my_client ; - -// The `main program' equivalent, creating the windows and returning the -// main frame -bool MyApp::OnInit() -{ - // Create the main frame window - frame = new MyFrame(NULL, "Client", wxPoint(400, 0), wxSize(400, 300)); - - // Give it an icon - frame->SetIcon(wxICON(mondrian)); - - // Make a menubar - wxMenu *file_menu = new wxMenu; - - file_menu->Append(CLIENT_EXECUTE, "Execute"); - file_menu->Append(CLIENT_REQUEST, "Request"); - file_menu->Append(CLIENT_POKE, "Poke"); - file_menu->Append(CLIENT_QUIT, "Quit"); - - wxMenuBar *menu_bar = new wxMenuBar; - - menu_bar->Append(file_menu, "File"); - - // Associate the menu bar with the frame - frame->SetMenuBar(menu_bar); - - // Make a panel - frame->panel = new wxPanel(frame, -1, wxPoint(0, 0), wxSize(400, 250)); - the_list = new wxListBox(frame->panel, CLIENT_LISTBOX, wxPoint(5, 5), wxSize(150, 120)); - the_list->Append("Apple"); - the_list->Append("Pear"); - the_list->Append("Orange"); - the_list->Append("Banana"); - the_list->Append("Fruit"); - - frame->panel->Fit(); - frame->Fit(); - - wxString server = "4242"; - wxString hostName; - wxGetHostName(hostName); - - if (argc > 1) - server = argv[1]; - if (argc > 2) - hostName = argv[2]; - - // Create a new client - my_client = new MyClient; - the_connection = (MyConnection *)my_client->MakeConnection(hostName, server, "IPC TEST"); - - if (!the_connection) - { - wxMessageBox("Failed to make connection to server", "Client Demo Error"); -#ifdef __WXMSW__ -// extern void wxPrintDDEError(); -// wxPrintDDEError(); -#endif - return FALSE; - } - the_connection->StartAdvise("Item"); - - frame->Show(TRUE); - - return TRUE; -} - -int MyApp::OnExit() -{ - if (my_client) - delete my_client ; - - return 0; -} - -BEGIN_EVENT_TABLE(MyFrame, wxFrame) - EVT_MENU(CLIENT_QUIT, MyFrame::OnExit) - EVT_MENU(CLIENT_EXECUTE, MyFrame::OnExecute) - EVT_MENU(CLIENT_POKE, MyFrame::OnPoke) - EVT_MENU(CLIENT_REQUEST, MyFrame::OnRequest) - EVT_CLOSE(MyFrame::OnCloseWindow) -END_EVENT_TABLE() - -// Define my frame constructor -MyFrame::MyFrame(wxFrame *frame, const wxString& title, const wxPoint& pos, const wxSize& size): - wxFrame(frame, -1, title, pos, size) -{ - panel = NULL; -} - -void MyFrame::OnExecute(wxCommandEvent& event) -{ - if (the_connection) - the_connection->Execute("Hello from the client!"); -} - -void MyFrame::OnPoke(wxCommandEvent& event) -{ - if (the_connection) - the_connection->Poke("An item", "Some data to poke at the server!"); -} - -void MyFrame::OnRequest(wxCommandEvent& event) -{ - if (the_connection) - { - char *data = the_connection->Request("An item"); - if (data) - wxMessageBox(data, "Client: Request", wxOK); - } -} - -void MyFrame::OnExit(wxCommandEvent& event) -{ - if (the_connection) - the_connection->Disconnect(); - - this->Destroy(); -} - -// Define the behaviour for the frame closing -void MyFrame::OnCloseWindow(wxCloseEvent& event) -{ - if (the_connection) - { - the_connection->Disconnect(); - } - this->Destroy(); -} - -MyClient::MyClient(void) -{ -} - -wxConnectionBase *MyClient::OnMakeConnection(void) -{ - return new MyConnection; -} - -MyConnection::MyConnection(void):wxConnection(ipc_buffer, 3999) -{ -} - -MyConnection::~MyConnection(void) -{ - the_connection = NULL; -} - -bool MyConnection::OnAdvise(const wxString& topic, const wxString& item, char *data, int size, wxIPCFormat format) -{ - if (the_list) - { - int n = the_list->FindString(data); - if (n > -1) - the_list->SetSelection(n); - } - return TRUE; -} - -bool MyConnection::OnDisconnect() -{ - frame->Destroy(); - - the_connection = NULL; - delete this; - - return TRUE; -} - diff --git a/samples/dde/client.def b/samples/dde/client.def deleted file mode 100644 index 786b7d609a..0000000000 --- a/samples/dde/client.def +++ /dev/null @@ -1,8 +0,0 @@ -NAME Client -DESCRIPTION 'Client' -EXETYPE WINDOWS -STUB 'WINSTUB.EXE' -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE -HEAPSIZE 1024 -STACKSIZE 8192 diff --git a/samples/dde/client.h b/samples/dde/client.h deleted file mode 100644 index 8017a29def..0000000000 --- a/samples/dde/client.h +++ /dev/null @@ -1,55 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: client.h -// Purpose: DDE sample: client -// Author: Julian Smart -// Modified by: -// Created: 25/01/99 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -// Define a new application -class MyApp: public wxApp -{ - public: - bool OnInit(); - int OnExit(); -}; - -// Define a new frame -class MyFrame: public wxFrame -{ - public: - wxPanel *panel; - - MyFrame(wxFrame *frame, const wxString& title, const wxPoint& pos, const wxSize& size); - void OnCloseWindow(wxCloseEvent& event); - void OnExit(wxCommandEvent& event); - void OnExecute(wxCommandEvent& event); - void OnPoke(wxCommandEvent& event); - void OnRequest(wxCommandEvent& event); -DECLARE_EVENT_TABLE() -}; - -class MyConnection: public wxConnection -{ - public: - MyConnection(); - ~MyConnection(); - bool OnAdvise(const wxString& topic, const wxString& item, char *data, int size, wxIPCFormat format); - bool OnDisconnect(); -}; - -class MyClient: public wxClient -{ - public: - MyClient(); - wxConnectionBase *OnMakeConnection(); -}; - -#define CLIENT_QUIT wxID_EXIT -#define CLIENT_EXECUTE 2 -#define CLIENT_REQUEST 3 -#define CLIENT_POKE 4 -#define CLIENT_LISTBOX 200 diff --git a/samples/dde/client.rc b/samples/dde/client.rc deleted file mode 100644 index 74b8e3f417..0000000000 --- a/samples/dde/client.rc +++ /dev/null @@ -1,2 +0,0 @@ -mondrian ICON "mondrian.ico" -#include "wx/msw/wx.rc" diff --git a/samples/dde/client.vc b/samples/dde/client.vc deleted file mode 100644 index f52524060b..0000000000 --- a/samples/dde/client.vc +++ /dev/null @@ -1,20 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: (c) Julian Smart -# -# Makefile : Builds sample (VC++, WIN32) -# Use FINAL=1 argument to nmake to build final version with no debug info. - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -PROGRAM=client -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.vc - -client.obj: ddesetup.h - diff --git a/samples/dde/client.wat b/samples/dde/client.wat deleted file mode 100644 index 789db64157..0000000000 --- a/samples/dde/client.wat +++ /dev/null @@ -1,15 +0,0 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 -# -# - -WXDIR = $(%WXWIN) - -PROGRAM = client -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - diff --git a/samples/dde/ddesetup.h b/samples/dde/ddesetup.h deleted file mode 100644 index 00c6cc3b23..0000000000 --- a/samples/dde/ddesetup.h +++ /dev/null @@ -1,37 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: ddesetup.h -// Purpose: DDE sample settings -// Author: Julian Smart -// Modified by: -// Created: 25/01/99 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -/* - * Adjust this before compiling, to switch between real DDE and TCP/IP - * implementations. - */ - -// If 1, use real DDE. If 0, use TCP/IP -#define wxUSE_DDE_FOR_SAMPLE 0 - -#if wxUSE_DDE_FOR_SAMPLE - -#define wxConnection wxDDEConnection -#define wxServer wxDDEServer -#define wxClient wxDDEClient - -#include - -#else - -#define wxConnection wxTCPConnection -#define wxServer wxTCPServer -#define wxClient wxTCPClient - -#include - -#endif - diff --git a/samples/dde/makefile.b32 b/samples/dde/makefile.b32 deleted file mode 100644 index 94a0ed2b5b..0000000000 --- a/samples/dde/makefile.b32 +++ /dev/null @@ -1,82 +0,0 @@ -# -# File: makefile.b32 -# Author: Guilhem Lavaux -# Created: 1998 -# Updated: -# Copyright: (c) Guilhem Lavaux -# -# "%W% %G%" -# -# Makefile : Builds 32-bit wxSocket sample under BC++ - -WXDIR = $(WXWIN) - -ZLIB = $(WXDIR)\lib\zlib.lib - -!include $(WXDIR)\src\makeb32.env - -WXLIBDIR = $(WXDIR)\lib -WXINC = $(WXDIR)\include\msw -WXLIB = $(WXLIBDIR)\wx32.lib -LIBS=$(WXLIB) $(ZLIB) cw32 import32 ole2w32 - -!if "$(FINAL)" == "0" -LINKFLAGS=/v /Tpe /L$(WXLIBDIR);$(BCCDIR)\lib -OPT = -Od -DEBUG_FLAGS= -v -!else -LINKFLAGS=/Tpe /L$(WXLIBDIR);$(BCCDIR)\lib -OPT = -Od -DEBUG_FLAGS = -!endif -CPPFLAGS=$(DEBUG_FLAGS) $(OPT) @$(CFG) - -.$(SRCSUFF).obj: - bcc32 $(CPPFLAGS) -c {$< } - -.c.obj: - bcc32 $(CPPFLAGS) -P- -c {$< } - -CLIENT_TARGET=client -SERVER_TARGET=server -CLIENT_OBJECTS=client.obj -SERVER_OBJECTS=server.obj - -all: $(CLIENT_TARGET).exe $(SERVER_TARGET).exe - -$(CLIENT_TARGET).exe: $(CLIENT_OBJECTS) $(CLIENT_TARGET).res - tlink32 $(LINKFLAGS) @&&! - c0w32.obj $(CLIENT_OBJECTS) - $(CLIENT_TARGET) - nul - $(LIBS) - $(CLIENT_TARGET).def - $(CLIENT_TARGET).res -! - -client.obj: client.cpp - -$(CLIENT_TARGET).res : $(CLIENT_TARGET).rc $(WXDIR)\include\wx\msw\wx.rc - brc32 -r /i$(BCCDIR)\include /i$(WXDIR)\include $(CLIENT_TARGET) - -$(SERVER_TARGET).exe: $(SERVER_OBJECTS) $(SERVER_TARGET).res - tlink32 $(LINKFLAGS) @&&! - c0w32.obj $(SERVER_OBJECTS) - $(SERVER_TARGET) - nul - $(LIBS) - $(SERVER_TARGET).def - $(SERVER_TARGET).res -! - -server.obj: server.cpp - -$(SERVER_TARGET).res: $(SERVER_TARGET).rc $(WXDIR)\include\wx\msw\wx.rc - brc32 -r /i$(BCCDIR)\include /i$(WXDIR)\include $(SERVER_TARGET) - -clean: - -erase *.obj - -erase *.exe - -erase *.res - -erase *.map - -erase *.rws diff --git a/samples/dde/makefile.dos b/samples/dde/makefile.dos deleted file mode 100644 index 2a42833b60..0000000000 --- a/samples/dde/makefile.dos +++ /dev/null @@ -1,19 +0,0 @@ -# -# File: makefile.dos -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Makefile : Builds 16-bit sample, VC++ 1.5 -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -WXDIR = $(WXWIN) - -TARGET=client -OBJECTS = $(TARGET).obj - -# TODO: server - -!include $(WXDIR)\src\makeprog.msc - diff --git a/samples/dde/makefile.g95 b/samples/dde/makefile.g95 deleted file mode 100644 index 8139390064..0000000000 --- a/samples/dde/makefile.g95 +++ /dev/null @@ -1,46 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile for server/client example (UNIX). - -WXDIR = ../.. - -# All common UNIX compiler flags and options are now in -# this central makefile. -include $(WXDIR)/src/makeg95.env - -OBJECTS=$(OBJDIR)/server.$(OBJSUFF) $(OBJDIR)/server_resources.$(OBJSUFF)\ - $(OBJDIR)/client.$(OBJSUFF) $(OBJDIR)/client_resources.$(OBJSUFF) - -all: $(OBJDIR) server$(GUISUFFIX) client$(GUISUFFIX) - - -$(OBJDIR): - mkdir $(OBJDIR) - -server$(GUISUFFIX): $(OBJDIR)/server.$(OBJSUFF) $(OBJDIR)/server_resources.$(OBJSUFF) $(WXLIB) - $(CC) $(LDFLAGS) -o server$(GUISUFFIX)$(EXESUFF) $(OBJDIR)/server.$(OBJSUFF) $(OBJDIR)/server_resources.$(OBJSUFF) $(LDLIBS) - -$(OBJDIR)/server.$(OBJSUFF): server.$(SRCSUFF) server.h - $(CC) -c $(CPPFLAGS) -o $@ server.$(SRCSUFF) - -client$(GUISUFFIX): $(OBJDIR)/client.$(OBJSUFF) $(OBJDIR)/client_resources.$(OBJSUFF) $(WXLIB) - $(CC) $(LDFLAGS) -o client$(GUISUFFIX)$(EXESUFF) $(OBJDIR)/client.$(OBJSUFF) $(OBJDIR)/client_resources.$(OBJSUFF) $(LDLIBS) - -$(OBJDIR)/client.$(OBJSUFF): client.$(SRCSUFF) client.h - $(CC) -c $(CPPFLAGS) -o $@ client.$(SRCSUFF) - -$(OBJDIR)/server_resources.o: server.rc - $(RESCOMP) -i server.rc -o $(OBJDIR)/server_resources.o $(RESFLAGS) - -$(OBJDIR)/client_resources.o: client.rc - $(RESCOMP) -i client.rc -o $(OBJDIR)/client_resources.o $(RESFLAGS) - -clean: - rm -f $(OBJECTS) server$(GUISUFFIX).exe client$(GUISUFFIX).exe core *.rsc *.res diff --git a/samples/dde/makefile.vc b/samples/dde/makefile.vc deleted file mode 100644 index 3864d7dd9d..0000000000 --- a/samples/dde/makefile.vc +++ /dev/null @@ -1,20 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: (c) Julian Smart -# -# Makefile : Builds sample (VC++, WIN32) -# Use FINAL=1 argument to nmake to build final version with no debug info. - -!include $(WXWIN)/src/makevc.env - -all: - nmake -f server.vc FINAL=$(FINAL) - nmake -f client.vc FINAL=$(FINAL) - -clean: - nmake -f server.vc clean - nmake -f client.vc clean - diff --git a/samples/dde/mondrian.ico b/samples/dde/mondrian.ico deleted file mode 100644 index 2310c5d275a87af295d5ea8dc79ea417a5e74c53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmZQzU<5)11px*Sc)`TLAO@s0fLH;D9e|jTfdxnc0ZCreateStatusBar(); - - // Give it an icon - frame->SetIcon(wxICON(mondrian)); - - // Make a menubar - wxMenu *file_menu = new wxMenu; - - file_menu->Append(SERVER_QUIT, "&Exit"); - - wxMenuBar *menu_bar = new wxMenuBar; - - menu_bar->Append(file_menu, "&File"); - - // Associate the menu bar with the frame - frame->SetMenuBar(menu_bar); - - // Make a panel - frame->panel = new wxPanel(frame, 0, 0, 400, 250); - wxListBox *list = new wxListBox(frame->panel, SERVER_LISTBOX, - wxPoint(5, 5), wxSize(150, 120)); - list->Append("Apple"); - list->Append("Pear"); - list->Append("Orange"); - list->Append("Banana"); - list->Append("Fruit"); - - frame->panel->Fit(); - frame->Fit(); - - wxString server_name = "4242"; - if (argc > 1) - server_name = argv[1]; - - // Create a new server - my_server = new MyServer; - my_server->Create(server_name); - - frame->Show(TRUE); - - return TRUE; -} - -BEGIN_EVENT_TABLE(MyFrame, wxFrame) - EVT_MENU(SERVER_QUIT, MyFrame::OnExit) - EVT_CLOSE(MyFrame::OnCloseWindow) - EVT_LISTBOX(SERVER_LISTBOX, MyFrame::OnListBoxClick) -END_EVENT_TABLE() - -// Define my frame constructor -MyFrame::MyFrame(wxFrame *frame, const wxString& title, const wxPoint& pos, const wxSize& size): - wxFrame(frame, -1, title, pos, size) -{ - panel = NULL; -} - -void MyFrame::OnExit(wxCommandEvent& event) -{ - if (my_server) - delete my_server; - this->Destroy(); -} - -// Set the client process's listbox to this item -void MyFrame::OnListBoxClick(wxCommandEvent& event) -{ - wxListBox* listBox = (wxListBox*) panel->FindWindow(SERVER_LISTBOX); - if (listBox) - { - wxString value = listBox->GetStringSelection(); - if (the_connection) - { - the_connection->Advise("Item", (char*) (const char*) value); - } - } -} - -void MyFrame::OnCloseWindow(wxCloseEvent& event) -{ - if (my_server) - delete my_server; - this->Destroy(); -} - -BEGIN_EVENT_TABLE(IPCDialogBox, wxDialog) - EVT_BUTTON(SERVER_QUIT_BUTTON, IPCDialogBox::OnQuit) -END_EVENT_TABLE() - -IPCDialogBox::IPCDialogBox(wxFrame *parent, const wxString& title, - const wxPoint& pos, const wxSize& size, MyConnection *the_connection): - wxDialog(parent, -1, title, pos, size) -{ - connection = the_connection; - (void)new wxButton(this, SERVER_QUIT_BUTTON, "Quit this connection", wxPoint(5, 5)); - Fit(); -} - -void IPCDialogBox::OnQuit(wxCommandEvent& event) -{ - connection->Disconnect(); - delete connection; -} - -wxConnectionBase *MyServer::OnAcceptConnection(const wxString& topic) -{ - if (strcmp(topic, "STDIO") != 0 && strcmp(topic, "IPC TEST") == 0) - return new MyConnection(ipc_buffer, 4000); - else - return NULL; -} - -MyConnection::MyConnection(char *buf, int size):wxConnection(buf, size) -{ - dialog = new IPCDialogBox(frame, "Connection", wxPoint(100, 100), wxSize(500, 500), this); - dialog->Show(TRUE); - the_connection = this; -} - -MyConnection::~MyConnection(void) -{ - dialog->Destroy(); - the_connection = NULL; -} - -bool MyConnection::OnExecute(const wxString& topic, char *data, int size, wxIPCFormat format) -{ - char buf[300]; - sprintf(buf, "Execute command: %s", data); - frame->SetStatusText(buf); - return TRUE; -} - -bool MyConnection::OnPoke(const wxString& topic, const wxString& item, char *data, int size, wxIPCFormat format) -{ - char buf[300]; - sprintf(buf, "Poke command: %s", data); - frame->SetStatusText(buf); - return TRUE; -} - -char *MyConnection::OnRequest(const wxString& topic, const wxString& item, int *size, wxIPCFormat format) -{ - return "Here, have your data, client!"; -} - -bool MyConnection::OnStartAdvise(const wxString& topic, const wxString& item) -{ - return TRUE; -} - diff --git a/samples/dde/server.def b/samples/dde/server.def deleted file mode 100644 index 21027a5c01..0000000000 --- a/samples/dde/server.def +++ /dev/null @@ -1,8 +0,0 @@ -NAME Server -DESCRIPTION 'Server' -EXETYPE WINDOWS -STUB 'WINSTUB.EXE' -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE -HEAPSIZE 4096 -STACKSIZE 8192 diff --git a/samples/dde/server.h b/samples/dde/server.h deleted file mode 100644 index 81aa31697b..0000000000 --- a/samples/dde/server.h +++ /dev/null @@ -1,70 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: server.h -// Purpose: DDE sample: server -// Author: Julian Smart -// Modified by: -// Created: 25/01/99 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -// Define a new application -class MyApp: public wxApp -{ - public: - bool OnInit(); -}; - -DECLARE_APP(MyApp) - -// Define a new frame -class MyFrame: public wxFrame -{ - public: - wxPanel *panel; - - MyFrame(wxFrame *frame, const wxString& title, const wxPoint& pos, const wxSize& size); - - void OnCloseWindow(wxCloseEvent& event); - void OnExit(wxCommandEvent& event); - void OnListBoxClick(wxCommandEvent& event); -DECLARE_EVENT_TABLE() -}; - -class IPCDialogBox; -class MyConnection: public wxConnection -{ - public: - IPCDialogBox *dialog; - - MyConnection(char *buf, int size); - ~MyConnection(); - - bool OnExecute(const wxString& topic, char *data, int size, wxIPCFormat format); - char *OnRequest(const wxString& topic, const wxString& item, int *size, wxIPCFormat format); - bool OnPoke(const wxString& topic, const wxString& item, char *data, int size, wxIPCFormat format); - bool OnStartAdvise(const wxString& topic, const wxString& item); -}; - -class MyServer: public wxServer -{ -public: - wxConnectionBase *OnAcceptConnection(const wxString& topic); -}; - -class IPCDialogBox: public wxDialog -{ -public: - MyConnection *connection; - IPCDialogBox(wxFrame *parent, const wxString& title, - const wxPoint& pos, const wxSize& size, MyConnection *the_connection); - - void OnQuit(wxCommandEvent& event); - -DECLARE_EVENT_TABLE() -}; - -#define SERVER_QUIT wxID_EXIT -#define SERVER_LISTBOX 500 -#define SERVER_QUIT_BUTTON 501 diff --git a/samples/dde/server.rc b/samples/dde/server.rc deleted file mode 100644 index 7655c62a4c..0000000000 --- a/samples/dde/server.rc +++ /dev/null @@ -1,3 +0,0 @@ -mondrian ICON "mondrian.ico" -#include "wx/msw/wx.rc" - diff --git a/samples/dde/server.vc b/samples/dde/server.vc deleted file mode 100644 index 6167edfb7d..0000000000 --- a/samples/dde/server.vc +++ /dev/null @@ -1,20 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: (c) Julian Smart -# -# Makefile : Builds sample (VC++, WIN32) -# Use FINAL=1 argument to nmake to build final version with no debug info. - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -PROGRAM=server -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.vc - -server.obj: ddesetup.h - diff --git a/samples/dde/server.wat b/samples/dde/server.wat deleted file mode 100644 index 2acfdf1115..0000000000 --- a/samples/dde/server.wat +++ /dev/null @@ -1,15 +0,0 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 -# -# - -WXDIR = $(%WXWIN) - -PROGRAM = server -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - diff --git a/samples/dialogs/.cvsignore b/samples/dialogs/.cvsignore deleted file mode 100644 index 7957c41216..0000000000 --- a/samples/dialogs/.cvsignore +++ /dev/null @@ -1,3 +0,0 @@ -Linux -linux-gnu -linux \ No newline at end of file diff --git a/samples/dialogs/Makefile b/samples/dialogs/Makefile deleted file mode 100644 index bccce53f76..0000000000 --- a/samples/dialogs/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../../setup/general/makeapp diff --git a/samples/dialogs/Makefile.in b/samples/dialogs/Makefile.in deleted file mode 100644 index a4529f0a37..0000000000 --- a/samples/dialogs/Makefile.in +++ /dev/null @@ -1,26 +0,0 @@ -# WXXT base directory -WXBASEDIR=@WXBASEDIR@ - -# set the OS type for compilation -OS=@OS@ -# compile a library only -RULE=bin - -# define library name -BIN_TARGET=test -# define library sources -BIN_SRC=\ -dialogs.cpp - -#define library objects -BIN_OBJ=\ -dialogs.o - -# additional things needed to link -BIN_LINK= - -# additional things needed to compile -ADD_COMPILE= - -# include the definitions now -include ../../../template.mak diff --git a/samples/dialogs/dialogs.cpp b/samples/dialogs/dialogs.cpp deleted file mode 100644 index a555d86d66..0000000000 --- a/samples/dialogs/dialogs.cpp +++ /dev/null @@ -1,297 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dialogs.cpp -// Purpose: Common dialogs demo -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation -#pragma interface -#endif - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include -#include -#include -#include -#include - -#define wxTEST_GENERIC_DIALOGS_IN_MSW 0 - -#if defined(__WXMSW__) && wxTEST_GENERIC_DIALOGS_IN_MSW -#include -#include -#endif - -#include "dialogs.h" - -IMPLEMENT_APP(MyApp) - -MyCanvas *myCanvas = (MyCanvas *) NULL; - -// A macro needed for some compilers (AIX) that need 'main' to be defined -// in the application itself. -IMPLEMENT_WXWIN_MAIN - -// `Main program' equivalent, creating windows and returning main app frame -bool MyApp::OnInit(void) -{ - m_canvasTextColour = wxColour("BLACK"); - m_canvasFont = *wxNORMAL_FONT; - - // Create the main frame window - MyFrame *frame = new MyFrame((wxFrame *) NULL, (char *) "wxWindows dialogs example", wxPoint(50, 50), wxSize(400, 300)); - - // Make a menubar - wxMenu *file_menu = new wxMenu; - - file_menu->Append(DIALOGS_CHOOSE_COLOUR, "&Choose colour"); - -#if defined(__WXMSW__) && wxTEST_GENERIC_DIALOGS_IN_MSW - file_menu->Append(DIALOGS_CHOOSE_COLOUR_GENERIC, "Choose colour (&generic)"); -#endif - - file_menu->AppendSeparator(); - file_menu->Append(DIALOGS_CHOOSE_FONT, "Choose &font"); - -#if defined(__WXMSW__) && wxTEST_GENERIC_DIALOGS_IN_MSW - file_menu->Append(DIALOGS_CHOOSE_FONT_GENERIC, "Choose f&ont (generic)"); - -#endif - file_menu->AppendSeparator(); - file_menu->Append(DIALOGS_MESSAGE_BOX, "&Message box"); - file_menu->Append(DIALOGS_TEXT_ENTRY, "Text &entry"); - file_menu->Append(DIALOGS_SINGLE_CHOICE, "&Single choice"); - file_menu->AppendSeparator(); - file_menu->Append(DIALOGS_FILE_OPEN, "&Open file"); - file_menu->Append(DIALOGS_FILE_SAVE, "Sa&ve file"); - file_menu->Append(DIALOGS_DIR_CHOOSE, "&Choose a directory"); - file_menu->AppendSeparator(); - file_menu->Append(wxID_EXIT, "E&xit"); - wxMenuBar *menu_bar = new wxMenuBar; - menu_bar->Append(file_menu, "&File"); - frame->SetMenuBar(menu_bar); - - myCanvas = new MyCanvas(frame); - myCanvas->SetBackgroundColour(*wxWHITE); - - frame->Centre(wxBOTH); - - // Show the frame - frame->Show(TRUE); - - SetTopWindow(frame); - - return TRUE; -} - -// My frame constructor -MyFrame::MyFrame(wxWindow *parent, const wxString& title, const wxPoint& pos, const wxSize& size): - wxFrame(parent, -1, title, pos, size) -{} - -void MyFrame::ChooseColour(wxCommandEvent& WXUNUSED(event) ) -{ - 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 = new wxColourDialog(this, &data); - if (dialog->ShowModal() == wxID_OK) - { - wxColourData retData = dialog->GetColourData(); - wxColour col = retData.GetColour(); -// wxBrush *brush = wxTheBrushList->FindOrCreateBrush(&col, wxSOLID); - myCanvas->SetBackgroundColour(col); - myCanvas->Clear(); - myCanvas->Refresh(); - } - dialog->Close(); -} - -void MyFrame::ChooseFont(wxCommandEvent& WXUNUSED(event) ) -{ - wxFontData data; - data.SetInitialFont(wxGetApp().m_canvasFont); - data.SetColour(wxGetApp().m_canvasTextColour); - - wxFontDialog *dialog = new wxFontDialog(this, &data); - if (dialog->ShowModal() == wxID_OK) - { - wxFontData retData = dialog->GetFontData(); - wxGetApp().m_canvasFont = retData.GetChosenFont(); - wxGetApp().m_canvasTextColour = retData.GetColour(); - myCanvas->Refresh(); - } - dialog->Close(); -} - -#if defined(__WXMSW__) && wxTEST_GENERIC_DIALOGS_IN_MSW -void MyFrame::ChooseColourGeneric(wxCommandEvent& WXUNUSED(event)) -{ - wxColourData data; - data.SetChooseFull(TRUE); - for (int i = 0; i < 16; i++) - { - wxColour colour(i*16, i*16, i*16); - data.SetCustomColour(i, colour); - } - - wxGenericColourDialog *dialog = new wxGenericColourDialog(this, &data); - if (dialog->ShowModal() == wxID_OK) - { - wxColourData retData = dialog->GetColourData(); - wxColour col = retData.GetColour(); -// wxBrush *brush = wxTheBrushList->FindOrCreateBrush(&col, wxSOLID); - myCanvas->SetBackgroundColour(col); - myCanvas->Clear(); - myCanvas->Refresh(); - } - dialog->Close(); -} - -void MyFrame::ChooseFontGeneric(wxCommandEvent& WXUNUSED(event) ) -{ - wxFontData data; - data.SetInitialFont(wxGetApp().m_canvasFont); - data.SetColour(wxGetApp().m_canvasTextColour); - - wxGenericFontDialog *dialog = new wxGenericFontDialog(this, &data); - if (dialog->ShowModal() == wxID_OK) - { - wxFontData retData = dialog->GetFontData(); - wxGetApp().m_canvasFont = retData.GetChosenFont(); - wxGetApp().m_canvasTextColour = retData.GetColour(); - myCanvas->Refresh(); - } - dialog->Close(); -} -#endif - -void MyFrame::MessageBox(wxCommandEvent& WXUNUSED(event) ) -{ - wxMessageDialog dialog(this, "This is a message box\nA long, long string to test out the message box properly", - "Message box text", wxYES_NO|wxCANCEL); - - dialog.ShowModal(); -} - -void MyFrame::TextEntry(wxCommandEvent& WXUNUSED(event) ) -{ - wxTextEntryDialog dialog(this, "This is a small sample\nA long, long string to test out the text entrybox", - "Please enter a string", "Default value", wxOK|wxCANCEL); - - if (dialog.ShowModal() == wxID_OK) - { - wxMessageDialog dialog2(this, dialog.GetValue(), "Got string"); - dialog2.ShowModal(); - } -} - -void MyFrame::SingleChoice(wxCommandEvent& WXUNUSED(event) ) -{ - const wxString choices[] = { "One", "Two", "Three", "Four", "Five" } ; - int n = 5; - - wxSingleChoiceDialog dialog(this, "This is a small sample\nA single-choice convenience dialog", - "Please select a value", n, (const wxString *)choices); - - dialog.SetSelection(2); - - if (dialog.ShowModal() == wxID_OK) - { - wxMessageDialog dialog2(this, dialog.GetStringSelection(), "Got string"); - dialog2.ShowModal(); - } -} - -void MyFrame::FileOpen(wxCommandEvent& WXUNUSED(event) ) -{ - wxFileDialog dialog(this, "Testing open file dialog", "", "", "*.txt", 0); - - if (dialog.ShowModal() == wxID_OK) - { - wxMessageDialog dialog2(this, dialog.GetPath(), "Selected path"); - dialog2.ShowModal(); - } -} - -void MyFrame::FileSave(wxCommandEvent& WXUNUSED(event) ) -{ - wxFileDialog dialog(this, "Testing save file dialog", "", "", - "Text files (*.txt)|*.txt|Document files (*.doc)|*.doc", - wxSAVE|wxOVERWRITE_PROMPT); - - if (dialog.ShowModal() == wxID_OK) - { - char buf[400]; - sprintf(buf, "%s, filter %d", (const char *)dialog.GetPath(), dialog.GetFilterIndex()); - wxMessageDialog dialog2(this, wxString(buf), "Selected path"); - dialog2.ShowModal(); - } -} - -void MyFrame::DirChoose(wxCommandEvent& WXUNUSED(event) ) -{ - wxDirDialog dialog(this, "Testing directory picker", ""); - - if (dialog.ShowModal() == wxID_OK) - { - wxMessageDialog dialog2(this, dialog.GetPath(), "Selected path"); - dialog2.ShowModal(); - } -} - -void MyFrame::OnExit(wxCommandEvent& WXUNUSED(event) ) -{ - Close(TRUE); -} - -void MyCanvas::OnPaint(wxPaintEvent& WXUNUSED(event) ) -{ - wxPaintDC dc(this); - dc.SetFont(wxGetApp().m_canvasFont); - dc.SetTextForeground(wxGetApp().m_canvasTextColour); - dc.SetBackgroundMode(wxTRANSPARENT); - dc.DrawText("wxWindows common dialogs test application", 10, 10); -} - -BEGIN_EVENT_TABLE(MyCanvas, wxScrolledWindow) - EVT_PAINT(MyCanvas::OnPaint) -END_EVENT_TABLE() - -BEGIN_EVENT_TABLE(MyFrame, wxFrame) - EVT_MENU(DIALOGS_CHOOSE_COLOUR, MyFrame::ChooseColour) - EVT_MENU(DIALOGS_CHOOSE_FONT, MyFrame::ChooseFont) - EVT_MENU(DIALOGS_MESSAGE_BOX, MyFrame::MessageBox) - EVT_MENU(DIALOGS_TEXT_ENTRY, MyFrame::TextEntry) - EVT_MENU(DIALOGS_SINGLE_CHOICE, MyFrame::SingleChoice) - EVT_MENU(DIALOGS_FILE_OPEN, MyFrame::FileOpen) - EVT_MENU(DIALOGS_FILE_SAVE, MyFrame::FileSave) - EVT_MENU(DIALOGS_DIR_CHOOSE, MyFrame::DirChoose) -#if defined(__WXMSW__) && wxTEST_GENERIC_DIALOGS_IN_MSW - EVT_MENU(DIALOGS_CHOOSE_COLOUR_GENERIC, MyFrame::ChooseColourGeneric) - EVT_MENU(DIALOGS_CHOOSE_FONT_GENERIC, MyFrame::ChooseFontGeneric) -#endif - EVT_MENU(wxID_EXIT, MyFrame::OnExit) -END_EVENT_TABLE() - diff --git a/samples/dialogs/dialogs.def b/samples/dialogs/dialogs.def deleted file mode 100644 index cb06200c15..0000000000 --- a/samples/dialogs/dialogs.def +++ /dev/null @@ -1,8 +0,0 @@ -NAME Dialogs -DESCRIPTION 'wxWindows Dialogs example' -EXETYPE WINDOWS -STUB 'WINSTUB.EXE' -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE -HEAPSIZE 1024 -STACKSIZE 8192 diff --git a/samples/dialogs/dialogs.h b/samples/dialogs/dialogs.h deleted file mode 100644 index ed541cc7e1..0000000000 --- a/samples/dialogs/dialogs.h +++ /dev/null @@ -1,73 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dialogs.h -// Purpose: Common dialogs demo -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifndef __DIALOGSH__ -#define __DIALOGSH__ - -// Define a new application type -class MyApp: public wxApp -{ public: - bool OnInit(void); - - wxFont m_canvasFont; - wxColour m_canvasTextColour; -}; - -// Define a new frame type -class MyFrame: public wxFrame -{ public: - MyFrame(wxWindow *parent, const wxString& title, const wxPoint& pos, - const wxSize& size); - bool OnClose(void) { return TRUE; } - - void ChooseColour(wxCommandEvent& event); - void ChooseFont(wxCommandEvent& event); - void MessageBox(wxCommandEvent& event); - void SingleChoice(wxCommandEvent& event); - void TextEntry(wxCommandEvent& event); - void FileOpen(wxCommandEvent& event); - void FileSave(wxCommandEvent& event); - void DirChoose(wxCommandEvent& event); - -#if !defined(__WXMSW__) || wxTEST_GENERIC_DIALOGS_IN_MSW - void ChooseColourGeneric(wxCommandEvent& event); - void ChooseFontGeneric(wxCommandEvent& event); -#endif - void OnExit(wxCommandEvent& event); -DECLARE_EVENT_TABLE() -}; - -class MyCanvas: public wxScrolledWindow -{ - public: - MyCanvas(wxWindow *parent): - wxScrolledWindow(parent) - { - } - void OnPaint(wxPaintEvent& event); -DECLARE_EVENT_TABLE() -}; - - -// Menu IDs -#define DIALOGS_CHOOSE_COLOUR 1 -#define DIALOGS_CHOOSE_COLOUR_GENERIC 2 -#define DIALOGS_CHOOSE_FONT 3 -#define DIALOGS_CHOOSE_FONT_GENERIC 4 -#define DIALOGS_MESSAGE_BOX 5 -#define DIALOGS_SINGLE_CHOICE 6 -#define DIALOGS_TEXT_ENTRY 7 -#define DIALOGS_FILE_OPEN 8 -#define DIALOGS_FILE_SAVE 9 -#define DIALOGS_DIR_CHOOSE 10 - -#endif - diff --git a/samples/dialogs/dialogs.rc b/samples/dialogs/dialogs.rc deleted file mode 100644 index 82bdf07561..0000000000 --- a/samples/dialogs/dialogs.rc +++ /dev/null @@ -1,2 +0,0 @@ -#include "wx/msw/wx.rc" - diff --git a/samples/dialogs/makefile.b32 b/samples/dialogs/makefile.b32 deleted file mode 100644 index 3102e6b203..0000000000 --- a/samples/dialogs/makefile.b32 +++ /dev/null @@ -1,16 +0,0 @@ -# -# File: makefile.b32 -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: -# -# Makefile : Builds sample for 32-bit BC++ - -WXDIR = $(WXWIN) - -TARGET=dialogs -OBJECTS = $(TARGET).obj - -!include $(WXDIR)\src\makeprog.b32 - diff --git a/samples/dialogs/makefile.bcc b/samples/dialogs/makefile.bcc deleted file mode 100644 index 08e7d45590..0000000000 --- a/samples/dialogs/makefile.bcc +++ /dev/null @@ -1,19 +0,0 @@ -# -# File: makefile.bcc -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Builds a BC++ 16-bit sample - -!if "$(WXWIN)" == "" -!error You must define the WXWIN variable in autoexec.bat, e.g. WXWIN=c:\wx -!endif - -WXDIR = $(WXWIN) - -TARGET=dialogs -OBJECTS=$(TARGET).obj - -!include $(WXDIR)\src\makeprog.bcc - diff --git a/samples/dialogs/makefile.dos b/samples/dialogs/makefile.dos deleted file mode 100644 index 639f27668f..0000000000 --- a/samples/dialogs/makefile.dos +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.dos -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Makefile : Builds 16-bit sample, VC++ 1.5 -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -WXDIR = $(WXWIN) - -TARGET=dialogs -OBJECTS=$(TARGET).obj - -!include $(WXDIR)\src\makeprog.msc - diff --git a/samples/dialogs/makefile.g95 b/samples/dialogs/makefile.g95 deleted file mode 100644 index c579ce37e1..0000000000 --- a/samples/dialogs/makefile.g95 +++ /dev/null @@ -1,35 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile for dialogs example (UNIX). - -WXDIR = ../.. - -# All common UNIX compiler flags and options are now in -# this central makefile. -include $(WXDIR)/src/makeg95.env - -OBJECTS = $(OBJDIR)/dialogs.$(OBJSUFF) $(OBJDIR)/dialogs_resources.$(OBJSUFF) - -all: $(OBJDIR) dialogs$(GUISUFFIX) - -$(OBJDIR): - mkdir $(OBJDIR) - -dialogs$(GUISUFFIX): $(OBJECTS) $(WXLIB) - $(CC) $(LDFLAGS) -o dialogs$(GUISUFFIX)$(EXESUFF) $(OBJECTS) $(LDLIBS) - -$(OBJDIR)/dialogs.$(OBJSUFF): dialogs.$(SRCSUFF) - $(CC) -c $(CPPFLAGS) -o $@ dialogs.$(SRCSUFF) - -$(OBJDIR)/dialogs_resources.o: dialogs.rc - $(RESCOMP) -i dialogs.rc -o $(OBJDIR)/dialogs_resources.o $(RESFLAGS) - -clean: - rm -f $(OBJECTS) dialogs$(GUISUFFIX).exe core *.rsc *.res diff --git a/samples/dialogs/makefile.unx b/samples/dialogs/makefile.unx deleted file mode 100644 index b144f19701..0000000000 --- a/samples/dialogs/makefile.unx +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1998 -# Updated: -# Copyright: (c) 1998 Julian Smart -# -# "%W% %G%" -# -# Makefile for dialogs example (UNIX). - -PROGRAM=dialogs - -OBJECTS=$(PROGRAM).o - -include ../../src/makeprog.env - diff --git a/samples/dialogs/makefile.vc b/samples/dialogs/makefile.vc deleted file mode 100644 index ee79a94674..0000000000 --- a/samples/dialogs/makefile.vc +++ /dev/null @@ -1,18 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: (c) Julian Smart -# -# Makefile : Builds sample (VC++, WIN32) -# Use FINAL=1 argument to nmake to build final version with no debug info. - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -PROGRAM=dialogs -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.vc - diff --git a/samples/dialogs/makefile.wat b/samples/dialogs/makefile.wat deleted file mode 100644 index f0d3b21081..0000000000 --- a/samples/dialogs/makefile.wat +++ /dev/null @@ -1,15 +0,0 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 -# -# - -WXDIR = $(%WXWIN) - -PROGRAM = dialogs -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - diff --git a/samples/dnd/.cvsignore b/samples/dnd/.cvsignore deleted file mode 100644 index 7957c41216..0000000000 --- a/samples/dnd/.cvsignore +++ /dev/null @@ -1,3 +0,0 @@ -Linux -linux-gnu -linux \ No newline at end of file diff --git a/samples/dnd/Makefile b/samples/dnd/Makefile deleted file mode 100644 index bccce53f76..0000000000 --- a/samples/dnd/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../../setup/general/makeapp diff --git a/samples/dnd/Makefile.in b/samples/dnd/Makefile.in deleted file mode 100644 index d645ef43c1..0000000000 --- a/samples/dnd/Makefile.in +++ /dev/null @@ -1,26 +0,0 @@ -# WXXT base directory -WXBASEDIR=@WXBASEDIR@ - -# set the OS type for compilation -OS=@OS@ -# compile a library only -RULE=bin - -# define library name -BIN_TARGET=dnd -# define library sources -BIN_SRC=\ -dnd.cpp - -#define library objects -BIN_OBJ=\ -dnd.o - -# additional things needed to link -BIN_LINK= - -# additional things needed to compile -ADD_COMPILE= - -# include the definitions now -include ../../../template.mak diff --git a/samples/dnd/d_and_d.txt b/samples/dnd/d_and_d.txt deleted file mode 100644 index b85b7c1570..0000000000 --- a/samples/dnd/d_and_d.txt +++ /dev/null @@ -1,167 +0,0 @@ - Drag-and-Drop Support in wxWindows - ================================== - -1. Overview - -------- - - a) What is it? - - We're calling drag-and-drop (or d&d for short) the OLE mechanism of data -transfer. Please note that it's not the same thing as the file oriented d&d -of Windows 3.1 "File Manager" which is designed for and limited to the file -names only. - - OLE d&d allows application to transfer data of any type to the same or -another process. - - - b) How is it done? (user's point of view) - - To start a d&d operation the user presses the mouse button 1 (left) and -drags the selected object to another window (which must be at least partially -visible on the screen) or to an icon on the taskbar in which case the -corresponding window will be automatically restored. To finish the operation, -the user releases the button. Default d&d operation is "move", but several key -act as modifiers: keeping down the key at the moment of drop does -"copy", while or force the "move" (makes sense if default isn't -"move"). - - - c) How is it done? (programmer's point of view) - - There are several objects participating in a d&d operation. First of all, -there is the data object itself. Second, there is the drop source which is -responsible for creating the data object (if it doesn't exist yet) and starting -the d&d operation. Finally, the drop target recieves the notification when -the data is dropped onto the associated window (see below) and is responsible -for pasting the data and returning the result code (copy, move or failure). -There is one class for each one of these roles in wxWindows d&d implementation, -plese see their descriptions below for details. - - - -2. Drop Target - ----------- - - a) Being a drop target - - ... is as easy as deriving your window class from wxDropTarget and -associating it with a wxWindow object (or perhaps some wxWindow-derived class, -such as wxFrame). The pure virtual function wxDropTarget::OnDrop() must be -implemented in your application and will be called whenever the mouse button -is released over the window in question. Other virtual functions that will be -called in the process of the d&d operation are OnEnter and OnLeave. - -@@ should OnDragOver() be user overridable also? - - You should associate wxDropTarget and wxWindow calling SetDropTarget: - wxWindow *pWindow = GetTopWindow(); - pWindow->SetDropTarget(new MyDropTarget); - -The object created passed to SetDropTarget becomes the propriety of wxWindow -and will be deleted with the window (or when you call SetDropTarget next -time). You can always break the association by calling SetDropTarget(NULL). - - When some data is dragged over a window, the program must decide if it's -going to accept this data or not. The virtual function IsAcceptedData() is -called to do it. The default implementation takes care of OLE interface -pointer manipulations and only requires you to override GetCountFormats() -and GetFormat(n) functions to let it know what data formats you support. -If it's not flexible enough for your application (i.e. the set of supported -formats changes over time...), you should override IsAcceptedData(). In 99% -of cases the default implementation is ok and you only have to return count -of supported formats (CF_xxx constants or one of your custom formats which -must have been registered) and their values. - - b) OnDrop(long x, long y, const void *pData) - - (x, y) are drop point (client) coordinates, pData is the pointer to data - (whatever it is). - - If 'true' is returned from OnDrop, the operation is considered to be - successful and the corresponding code (MOVE or COPY depending on the - keyboard control keys) is returned. Otherwise, the operation is cancelled. - - Please remember that returning 'true' here may mean 'move' and so the - drop source will delete the corresponding data - which would lead to - data loss if you didn't paste it properly. - - c) OnEnter() - - called when the mouse enters the window: you might use this function to - give some additional visual feedback. - - d) OnLeave() - - called when the mouse leaves the window; might be a good place to clean -up things allocated in OnEnter. - - e) Simple wxDropTarget specializations - - Two (very simple) wxDropTarget-derived classes are provided for two most -common situations: d&d of text and file d&d. To use them you only need to -override one virtual function OnDropText in wxTextDropTarget's case and -OnDropFiles for wxFileDropTarget. - - The (x, y) are the same as for OnDrop() function. OnDropText's last -parameter points to a (always ANSI, not Unicode) text string, while -OnDropFiles() parameter is the array of file names just dropped (and the -count of them is passed in the 3rd parameter). - -3. Data Object - ----------- - - a) Drag and drop and clipboard - - The effect of a d&d operation is the same as using the clipboard to -cut/copy and paste data and it would be nice to use the same code to implement -these two data transfer mechanisms. The wxDataObject allows you to do exactly -this. It encapsulates the data which can be passed either through the clipboard -or d&d. - - - b) Data format - - There are several standard clipboard formats, such as text, bitmap or -metafile picture. All of them are defined in wxDataObject::StdFormats -enumeration. Of course, it's not always enough and you'll often need your -own format for data transfer. The simple helper class wxDataFormat may help -you: when you create an object of this class, it registers a new clipboard -data format identified by the string passed to it's ctor. - - After your new format is registered, you may use it as any other one. - -4. Drop Source - ----------- - - a) Starting the d&d operation - - In order to start the d&d operation you should call the DoDragDrop function -(typically in reply to a "mouse button press" message). NB: DoDragDrop() is a -blocking function which enters into it's own message loop and may return after -an arbitrarily long time interval. During it, the QueryContinueDrag() is called -whenever the mouse or keyboard state changes. The default behaviour is quite -reasonable for 99% of cases: the drag operation is cancelled if the key -is preessed and the drop is initiated if the mouse button is released. - - b) After the end of d&d - - The drop source behaviour depends on DoDragDrop() return code. If it -returns wxDropSource::None or wxDropSource::Copy there is normally nothing to -do, but you shouldn't forget to delete your data if it returns the -wxDropSource::Move code. - - c) DoDragDrop - - d) QueryContinueDrag - - -5. Remarks - ------- - - -@@@@ TODO: support tymed != TYMED_HGLOBAL; - better support of CF_BMP, CF_METAFILE - scrolling support!! (how?) - sample demonstrating use of user-defined formats - sample which really does something useful diff --git a/samples/dnd/dnd.cpp b/samples/dnd/dnd.cpp deleted file mode 100644 index 208f397e25..0000000000 --- a/samples/dnd/dnd.cpp +++ /dev/null @@ -1,373 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dnd.cpp -// Purpose: Drag and drop sample -// Author: Vadim Zeitlin -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include "wx/intl.h" -#include "wx/log.h" - -#include "wx/dnd.h" - -#ifdef __WXGTK__ -#include "mondrian.xpm" -#endif - -// ---------------------------------------------------------------------------- -// Derive two simple classes which just put in the listbox the strings (text or -// file names) we drop on them -// ---------------------------------------------------------------------------- - -class DnDText : public wxTextDropTarget -{ -public: - DnDText(wxListBox *pOwner) { m_pOwner = pOwner; } - - virtual bool OnDropText(long x, long y, const char *psz ); - -private: - wxListBox *m_pOwner; -}; - -class DnDFile : public wxFileDropTarget -{ -public: - DnDFile(wxListBox *pOwner) { m_pOwner = pOwner; } - - virtual bool OnDropFiles(long x, long y, - size_t nFiles, const char * const aszFiles[] ); - -private: - wxListBox *m_pOwner; -}; - -// ---------------------------------------------------------------------------- -// Define a new application type -// ---------------------------------------------------------------------------- - -class DnDApp : public wxApp -{ -public: - bool OnInit(); -}; - -IMPLEMENT_APP(DnDApp); - -// ---------------------------------------------------------------------------- -// Define a new frame type -// ---------------------------------------------------------------------------- -class DnDFrame : public wxFrame -{ -public: - DnDFrame(wxFrame *frame, char *title, int x, int y, int w, int h); - ~DnDFrame(); - - void OnPaint(wxPaintEvent& event); - void OnQuit (wxCommandEvent& event); - void OnAbout(wxCommandEvent& event); - void OnDrag (wxCommandEvent& event); - void OnHelp (wxCommandEvent& event); - void OnLogClear(wxCommandEvent& event); - - void OnLeftDown(wxMouseEvent& event); - void OnRightDown(wxMouseEvent& event); - - bool OnClose(); - - DECLARE_EVENT_TABLE() - -private: - wxListBox *m_ctrlFile, - *m_ctrlText; - wxTextCtrl *m_ctrlLog; - - wxLog *m_pLog, *m_pLogPrev; - - wxString m_strText; -}; - -// ---------------------------------------------------------------------------- -// IDs for the menu commands -// ---------------------------------------------------------------------------- - -enum -{ - Menu_Quit = 1, - Menu_Drag, - Menu_About = 101, - Menu_Help, - Menu_Clear, -}; - -BEGIN_EVENT_TABLE(DnDFrame, wxFrame) - EVT_MENU(Menu_Quit, DnDFrame::OnQuit) - EVT_MENU(Menu_About, DnDFrame::OnAbout) - EVT_MENU(Menu_Drag, DnDFrame::OnDrag) - EVT_MENU(Menu_Help, DnDFrame::OnHelp) - EVT_MENU(Menu_Clear, DnDFrame::OnLogClear) - EVT_LEFT_DOWN( DnDFrame::OnLeftDown) - EVT_RIGHT_DOWN( DnDFrame::OnRightDown) - EVT_PAINT( DnDFrame::OnPaint) -END_EVENT_TABLE() - -// `Main program' equivalent, creating windows and returning main app frame -bool DnDApp::OnInit() -{ - // create the main frame window - DnDFrame *frame = new DnDFrame((wxFrame *) NULL, "Drag & Drop wxWindows App", - 50, 50, 450, 340); - - // activate it - frame->Show(TRUE); - - SetTopWindow(frame); - - return TRUE; -} - -DnDFrame::DnDFrame(wxFrame *frame, char *title, int x, int y, int w, int h) - : wxFrame(frame, -1, title, wxPoint(x, y), wxSize(w, h)), - m_strText("wxWindows drag & drop works :-)") - -{ -// SetBackgroundColour(* wxWHITE); - - // frame icon and status bar - SetIcon(wxICON(mondrian)); - -// const int widths[] = { -1 }; - CreateStatusBar(); - - // construct menu - wxMenu *file_menu = new wxMenu; - file_menu->Append(Menu_Drag, "&Test drag..."); - file_menu->AppendSeparator(); - file_menu->Append(Menu_Quit, "E&xit"); - - wxMenu *log_menu = new wxMenu; - log_menu->Append(Menu_Clear, "Clear"); - - wxMenu *help_menu = new wxMenu; - help_menu->Append(Menu_Help, "&Help..."); - help_menu->AppendSeparator(); - help_menu->Append(Menu_About, "&About"); - - wxMenuBar *menu_bar = new wxMenuBar; - menu_bar->Append(file_menu, "&File"); - menu_bar->Append(log_menu, "&Log"); - menu_bar->Append(help_menu, "&Help"); - - SetMenuBar(menu_bar); - - // make a panel with 3 subwindows - wxPoint pos(0, 0); - wxSize size(400, 200); - - wxString strFile("Drop files here!"), strText("Drop text on me"); - - m_ctrlFile = new wxListBox(this, -1, pos, size, 1, &strFile, wxLB_HSCROLL); - m_ctrlText = new wxListBox(this, -1, pos, size, 1, &strText, wxLB_HSCROLL); - - m_ctrlLog = new wxTextCtrl(this, -1, "", pos, size, - wxTE_MULTILINE | wxTE_READONLY | - wxSUNKEN_BORDER ); - - // redirect log messages to the text window (don't forget to delete it!) - m_pLog = new wxLogTextCtrl(m_ctrlLog); - m_pLogPrev = wxLog::SetActiveTarget(m_pLog); - - // associate drop targets with 2 text controls - m_ctrlFile->SetDropTarget(new DnDFile(m_ctrlFile)); - m_ctrlText->SetDropTarget( new DnDText(m_ctrlText) ); - - wxLayoutConstraints *c; - - // Top-left listbox - c = new wxLayoutConstraints; - c->left.SameAs(this, wxLeft); - c->top.SameAs(this, wxTop); - c->right.PercentOf(this, wxRight, 50); - c->height.PercentOf(this, wxHeight, 40); - m_ctrlFile->SetConstraints(c); - - // Top-right listbox - c = new wxLayoutConstraints; - c->left.SameAs (m_ctrlFile, wxRight); - c->top.SameAs (this, wxTop); - c->right.SameAs (this, wxRight); - c->height.PercentOf(this, wxHeight, 40); - m_ctrlText->SetConstraints(c); - - // Lower text control - c = new wxLayoutConstraints; - c->left.SameAs (this, wxLeft); - c->right.SameAs (this, wxRight); - c->height.PercentOf(this, wxHeight, 40); - c->top.SameAs(m_ctrlText, wxBottom); - m_ctrlLog->SetConstraints(c); - - SetAutoLayout(TRUE); -} - -void DnDFrame::OnQuit(wxCommandEvent& /* event */) -{ - Close(TRUE); -} - -void DnDFrame::OnPaint(wxPaintEvent& /*event*/) -{ - int w = 0; - int h = 0; - GetClientSize( &w, &h ); - - wxPaintDC dc(this); - dc.SetFont( wxFont( 24, wxDECORATIVE, wxNORMAL, wxNORMAL, FALSE, "charter" ) ); - dc.DrawText( "Drag text from here!", 20, h-22 ); -} - -void DnDFrame::OnDrag(wxCommandEvent& /* event */) -{ - wxString strText = wxGetTextFromUser - ( - "After you enter text in this dialog, press any mouse\n" - "button in the bottom (empty) part of the frame and \n" - "drag it anywhere - you will be in fact dragging the\n" - "text object containing this text", - "Please enter some text", m_strText, this - ); - - m_strText = strText; -} - -void DnDFrame::OnAbout(wxCommandEvent& /* event */) -{ - wxMessageDialog dialog(this, - "Drag-&-Drop Demo\n" - "Please see \"Help|Help...\" for details\n" - "Copyright (c) 1998 Vadim Zeitlin", - "About wxDnD"); - - dialog.ShowModal(); -} - -void DnDFrame::OnHelp(wxCommandEvent& /* event */) -{ - wxMessageDialog dialog(this, -"This small program demonstrates drag & drop support in wxWindows. The program window\n" -"consists of 3 parts: the bottom pane is for debug messages, so that you can see what's\n" -"going on inside. The top part is split into 2 listboxes, the left one accepts files\n" -"and the right one accepts text.\n" -"\n" -"To test wxDropTarget: open wordpad (write.exe), select some text in it and drag it to\n" -"the right listbox (you'll notice the usual visual feedback, i.e. the cursor will change).\n" -"Also, try dragging some files (you can select several at once) from Windows Explorer (or \n" -"File Manager) to the left pane. Hold down Ctrl/Shift keys when you drop text (doesn't \n" -"work with files) and see what changes.\n" -"\n" -"To test wxDropSource: just press any mouse button on the empty zone of the window and drag\n" -"it to wordpad or any other droptarget accepting text (and of course you can just drag it\n" -"to the right pane). Due to a lot of trace messages, the cursor might take some time to \n" -"change, don't release the mouse button until it does. You can change the string being\n" -"dragged in in \"File|Test drag...\" dialog.\n" -"\n" -"\n" -"Please send all questions/bug reports/suggestions &c to \n" -"Vadim Zeitlin ", - "wxDnD Help"); - - dialog.ShowModal(); -} - -void DnDFrame::OnLogClear(wxCommandEvent& /* event */ ) -{ - m_ctrlLog->Clear(); -} - -bool DnDFrame::OnClose() -{ - return TRUE; -} - -void DnDFrame::OnLeftDown(wxMouseEvent &WXUNUSED(event) ) -{ - if ( !m_strText.IsEmpty() ) - { - // start drag operation -#ifdef __WXMSW__ - wxTextDataObject textData(m_strText); - wxDropSource dragSource( textData, this ); -#else - wxDropSource dragSource( new wxTextDataObject (m_strText), this ); -#endif - const char *pc; - - switch ( dragSource.DoDragDrop(TRUE) ) - { - case wxDragError: pc = "Error!"; break; - case wxDragNone: pc = "Nothing"; break; - case wxDragCopy: pc = "Copied"; break; - case wxDragMove: pc = "Moved"; break; - case wxDragCancel: pc = "Cancelled"; break; - default: pc = "Huh?"; break; - } - - SetStatusText(wxString("Drag result: ") + pc); - } -} - -void DnDFrame::OnRightDown(wxMouseEvent &event ) -{ - wxMenu *menu = new wxMenu; - - menu->Append(Menu_Drag, "&Test drag..."); - menu->Append(Menu_About, "&About"); - menu->Append(Menu_Quit, "E&xit"); - - PopupMenu( menu, event.GetX(), event.GetY() ); -} - -DnDFrame::~DnDFrame() -{ - if ( m_pLog != NULL ) { - if ( wxLog::SetActiveTarget(m_pLogPrev) == m_pLog ) - delete m_pLog; - } -} - -// ---------------------------------------------------------------------------- -// Notifications called by the base class -// ---------------------------------------------------------------------------- -bool DnDText::OnDropText(long, long, const char *psz) -{ - m_pOwner->Append(psz); - - return TRUE; -} - -bool DnDFile::OnDropFiles(long, long, size_t nFiles, - const char * const aszFiles[]) -{ - wxString str; - str.Printf("%d files dropped", nFiles); - m_pOwner->Append(str); - for ( size_t n = 0; n < nFiles; n++ ) { - m_pOwner->Append(aszFiles[n]); - } - - return TRUE; -} diff --git a/samples/dnd/dnd.def b/samples/dnd/dnd.def deleted file mode 100644 index 8a76b2d093..0000000000 --- a/samples/dnd/dnd.def +++ /dev/null @@ -1,8 +0,0 @@ -NAME DND -DESCRIPTION 'Drag and drop sample' -EXETYPE WINDOWS -STUB 'WINSTUB.EXE' -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE -HEAPSIZE 4048 -STACKSIZE 16000 diff --git a/samples/dnd/dnd.rc b/samples/dnd/dnd.rc deleted file mode 100644 index 7655c62a4c..0000000000 --- a/samples/dnd/dnd.rc +++ /dev/null @@ -1,3 +0,0 @@ -mondrian ICON "mondrian.ico" -#include "wx/msw/wx.rc" - diff --git a/samples/dnd/makefile.b32 b/samples/dnd/makefile.b32 deleted file mode 100644 index ede724b269..0000000000 --- a/samples/dnd/makefile.b32 +++ /dev/null @@ -1,16 +0,0 @@ -# -# File: makefile.b32 -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: -# -# Makefile : Builds sample for 32-bit BC++ - -WXDIR = $(WXWIN) - -TARGET=dnd -OBJECTS = $(TARGET).obj - -!include $(WXDIR)\src\makeprog.b32 - diff --git a/samples/dnd/makefile.dos b/samples/dnd/makefile.dos deleted file mode 100644 index dd90a7a9df..0000000000 --- a/samples/dnd/makefile.dos +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.dos -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Makefile : Builds 16-bit sample, VC++ 1.5 -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -WXDIR = $(WXWIN) - -TARGET=dnd -OBJECTS=$(TARGET).obj - -!include $(WXDIR)\src\makeprog.msc - diff --git a/samples/dnd/makefile.g95 b/samples/dnd/makefile.g95 deleted file mode 100644 index d62f860121..0000000000 --- a/samples/dnd/makefile.g95 +++ /dev/null @@ -1,37 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile for dnd example (UNIX). - -WXDIR = ../.. - -# All common UNIX compiler flags and options are now in -# this central makefile. -include $(WXDIR)/src/makeg95.env - -OBJECTS = $(OBJDIR)/dnd.$(OBJSUFF) $(OBJDIR)/dnd_resources.$(OBJSUFF) - -all: $(OBJDIR) dnd$(GUISUFFIX)$(EXESUFF) - -wx: - -$(OBJDIR): - mkdir $(OBJDIR) - -dnd$(GUISUFFIX)$(EXESUFF): $(OBJECTS) $(WXLIB) - $(CC) $(LDFLAGS) -o dnd$(GUISUFFIX)$(EXESUFF) $(OBJECTS) $(LDLIBS) - -$(OBJDIR)/dnd.$(OBJSUFF): dnd.$(SRCSUFF) - $(CC) -c $(CPPFLAGS) -o $@ dnd.$(SRCSUFF) - -$(OBJDIR)/dnd_resources.o: dnd.rc - $(RESCOMP) -i dnd.rc -o $(OBJDIR)/dnd_resources.o $(RESFLAGS) - -clean: - rm -f $(OBJECTS) dnd$(GUISUFFIX).exe core *.rsc *.res diff --git a/samples/dnd/makefile.vc b/samples/dnd/makefile.vc deleted file mode 100644 index bd49ea4d97..0000000000 --- a/samples/dnd/makefile.vc +++ /dev/null @@ -1,18 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: (c) Julian Smart -# -# Makefile : Builds sample (VC++, WIN32) -# Use FINAL=1 argument to nmake to build final version with no debug info. - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -PROGRAM=dnd -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.vc - diff --git a/samples/dnd/makefile.wat b/samples/dnd/makefile.wat deleted file mode 100644 index 1379a8bb3c..0000000000 --- a/samples/dnd/makefile.wat +++ /dev/null @@ -1,15 +0,0 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 -# -# - -WXDIR = $(%WXWIN) - -PROGRAM = dnd -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - diff --git a/samples/dnd/mondrian.ico b/samples/dnd/mondrian.ico deleted file mode 100644 index 2310c5d275a87af295d5ea8dc79ea417a5e74c53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmZQzU<5)11px*Sc)`TLAO@s0fLH;D9e|jTfdxnc0Z -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** NICHT BEARBEITEN ** - -# TARGTYPE "Win32 (x86) Application" 0x0101 - -CFG=test - Win32 Release -!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit\ - NMAKE -!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den\ - Befehl -!MESSAGE -!MESSAGE NMAKE /f "test.mak". -!MESSAGE -!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben -!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel: -!MESSAGE -!MESSAGE NMAKE /f "test.mak" CFG="test - Win32 Release" -!MESSAGE -!MESSAGE Für die Konfiguration stehen zur Auswahl: -!MESSAGE -!MESSAGE "test - Win32 Release" (basierend auf "Win32 (x86) Application") -!MESSAGE "test - Win32 Debug" (basierend auf "Win32 (x86) Application") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "test - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir ".\Release" -# PROP BASE Intermediate_Dir ".\Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir ".\Release" -# PROP Intermediate_Dir ".\Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c -# ADD CPP /nologo /w /W0 /GX /O2 /I "..\..\include" /D "__WXDEBUG__" /D "__WIN32__" /D "__WXMSW__" /D "__WIN95__" /D "STRICT" /D "__WINDOWS__" /YX /FD /D /c -# ADD BASE MTL /nologo /D "NDEBUG" /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x407 /d "NDEBUG" -# ADD RSC /l 0x407 /i "..\..\include" /d "WXDEBUG" /d "__WXMSW__" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib oldnames.lib comctl32.lib ctl3d32.lib odbc32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib ..\..\debug\wxwin.lib ctl3d32.lib /nologo /subsystem:windows /incremental:yes /pdb:".\Debug/santis.pdb" /debug /machine:I386 /out:".\Debug/santis.exe" -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "test - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir ".\Debug" -# PROP BASE Intermediate_Dir ".\Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir ".\Debug" -# PROP Intermediate_Dir ".\Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c -# ADD CPP /nologo /w /W0 /GX /Z7 /Od /I "..\..\include" /D "__WXDEBUG__" /D "__WIN32__" /D "__WXMSW__" /D "__WIN95__" /D "STRICT" /D "__WINDOWS__" /YX /FD /D /c -# ADD BASE MTL /nologo /D "_DEBUG" /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x407 /d "_DEBUG" -# ADD RSC /l 0x407 /i "..\..\include" /d "WXDEBUG" /d "__WXMSW__" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib oldnames.lib comctl32.lib ctl3d32.lib odbc32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib ..\..\debug\wxwin.lib ctl3d32.lib /nologo /subsystem:windows /debug /machine:I386 -# SUBTRACT LINK32 /pdb:none - -!ENDIF - -# Begin Target - -# Name "test - Win32 Release" -# Name "test - Win32 Debug" -# Begin Group "Quellcodedateien" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90" -# Begin Source File - -SOURCE=.\dnd.cpp -# End Source File -# End Group -# Begin Group "Header-Dateien" - -# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd" -# End Group -# Begin Group "Ressourcendateien" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe" -# Begin Source File - -SOURCE=.\dnd.rc - -!IF "$(CFG)" == "test - Win32 Release" - -!ELSEIF "$(CFG)" == "test - Win32 Debug" - -!ENDIF - -# End Source File -# End Group -# End Target -# End Project diff --git a/samples/dnd/test.dsw b/samples/dnd/test.dsw deleted file mode 100644 index 449f529bb9..0000000000 --- a/samples/dnd/test.dsw +++ /dev/null @@ -1,29 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 5.00 -# WARNUNG: DIESE ARBEITSBEREICHSDATEI DARF NICHT BEARBEITET ODER GELÖSCHT WERDEN! - -############################################################################### - -Project: "test"=.\test.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/samples/docview/.cvsignore b/samples/docview/.cvsignore deleted file mode 100644 index 7957c41216..0000000000 --- a/samples/docview/.cvsignore +++ /dev/null @@ -1,3 +0,0 @@ -Linux -linux-gnu -linux \ No newline at end of file diff --git a/samples/docview/Makefile b/samples/docview/Makefile deleted file mode 100644 index bccce53f76..0000000000 --- a/samples/docview/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../../setup/general/makeapp diff --git a/samples/docview/Makefile.in b/samples/docview/Makefile.in deleted file mode 100644 index 7f81acbf0f..0000000000 --- a/samples/docview/Makefile.in +++ /dev/null @@ -1,26 +0,0 @@ -# WXXT base directory -WXBASEDIR=@WXBASEDIR@ - -# set the OS type for compilation -OS=@OS@ -# compile a library only -RULE=bin - -# define library name -BIN_TARGET=test -# define library sources -BIN_SRC=\ -doc.cpp view.cpp docview.cpp - -#define library objects -BIN_OBJ=\ -doc.o view.o docview.o - -# additional things needed to link -BIN_LINK= - -# additional things needed to compile -ADD_COMPILE= - -# include the definitions now -include ../../../template.mak diff --git a/samples/docview/chart.ico b/samples/docview/chart.ico deleted file mode 100644 index d2bcfea7f6b553c99f3b904b5deb43d061d2916c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcma)4u?~VT5IxjH2a`IvN}SyM1wXB0x6Vxc6!-uVe!=$?nzrhpQAOg_h$ceBh&-)D#M=FYfwAK(fEMk@u943z>%&;>f z=!p!jQ1(F`;nH6b*Hp8L=}Yy==?UxKFw{4E#S*@E9qb%1@FoA3!Ig3>`OK~z z@un-8v!Fv^(aWyarIV9>RrS_!4*ko4OA?3t$%K}!rwqfamwPXT8Ywru6t38 f@y15=$>%IlxrN6sR{!aD diff --git a/samples/docview/doc.cpp b/samples/docview/doc.cpp deleted file mode 100644 index 04e328c621..0000000000 --- a/samples/docview/doc.cpp +++ /dev/null @@ -1,275 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: doc.cpp -// Purpose: Implements document functionality -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -// #pragma implementation -#endif - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#if !wxUSE_DOC_VIEW_ARCHITECTURE -#error You must set wxUSE_DOC_VIEW_ARCHITECTURE to 1 in wx_setup.h! -#endif - -#include "doc.h" -#include "view.h" - -IMPLEMENT_DYNAMIC_CLASS(DrawingDocument, wxDocument) - -DrawingDocument::DrawingDocument(void) -{ -} - -DrawingDocument::~DrawingDocument(void) -{ - doodleSegments.DeleteContents(TRUE); -} - -ostream& DrawingDocument::SaveObject(ostream& stream) -{ - wxDocument::SaveObject(stream); - - stream << doodleSegments.Number() << '\n'; - wxNode *node = doodleSegments.First(); - while (node) - { - DoodleSegment *segment = (DoodleSegment *)node->Data(); - segment->SaveObject(stream); - stream << '\n'; - - node = node->Next(); - } - return stream; -} - -istream& DrawingDocument::LoadObject(istream& stream) -{ - wxDocument::LoadObject(stream); - - int n = 0; - stream >> n; - - for (int i = 0; i < n; i++) - { - DoodleSegment *segment = new DoodleSegment; - segment->LoadObject(stream); - doodleSegments.Append(segment); - } - - return stream; -} - -DoodleSegment::DoodleSegment(void) -{ -} - -DoodleSegment::DoodleSegment(DoodleSegment& seg) -{ - wxNode *node = seg.lines.First(); - while (node) - { - DoodleLine *line = (DoodleLine *)node->Data(); - DoodleLine *newLine = new DoodleLine; - newLine->x1 = line->x1; - newLine->y1 = line->y1; - newLine->x2 = line->x2; - newLine->y2 = line->y2; - - lines.Append(newLine); - - node = node->Next(); - } -} - -DoodleSegment::~DoodleSegment(void) -{ - lines.DeleteContents(TRUE); -} - -ostream& DoodleSegment::SaveObject(ostream& stream) -{ - stream << lines.Number() << '\n'; - wxNode *node = lines.First(); - while (node) - { - DoodleLine *line = (DoodleLine *)node->Data(); - stream << line->x1 << " " << line->y1 << " " << line->x2 << " " << line->y2 << "\n"; - node = node->Next(); - } - return stream; -} - -istream& DoodleSegment::LoadObject(istream& stream) -{ - int n = 0; - stream >> n; - - for (int i = 0; i < n; i++) - { - DoodleLine *line = new DoodleLine; - stream >> line->x1 >> line->y1 >> line->x2 >> line->y2; - lines.Append(line); - } - return stream; -} - -void DoodleSegment::Draw(wxDC *dc) -{ - wxNode *node = lines.First(); - while (node) - { - DoodleLine *line = (DoodleLine *)node->Data(); - dc->DrawLine(line->x1, line->y1, line->x2, line->y2); - node = node->Next(); - } -} - -/* - * Implementation of drawing command - */ - -DrawingCommand::DrawingCommand(const wxString& name, int command, DrawingDocument *ddoc, DoodleSegment *seg): - wxCommand(TRUE, name) -{ - doc = ddoc; - segment = seg; - cmd = command; -} - -DrawingCommand::~DrawingCommand(void) -{ - if (segment) - delete segment; -} - -bool DrawingCommand::Do(void) -{ - switch (cmd) - { - case DOODLE_CUT: - { - // Cut the last segment - if (doc->GetDoodleSegments().Number() > 0) - { - wxNode *node = doc->GetDoodleSegments().Last(); - if (segment) - delete segment; - - segment = (DoodleSegment *)node->Data(); - delete node; - - doc->Modify(TRUE); - doc->UpdateAllViews(); - } - break; - } - case DOODLE_ADD: - { - doc->GetDoodleSegments().Append(new DoodleSegment(*segment)); - doc->Modify(TRUE); - doc->UpdateAllViews(); - break; - } - } - return TRUE; -} - -bool DrawingCommand::Undo(void) -{ - switch (cmd) - { - case DOODLE_CUT: - { - // Paste the segment - if (segment) - { - doc->GetDoodleSegments().Append(segment); - doc->Modify(TRUE); - doc->UpdateAllViews(); - segment = (DoodleSegment *) NULL; - } - doc->Modify(TRUE); - doc->UpdateAllViews(); - break; - } - case DOODLE_ADD: - { - // Cut the last segment - if (doc->GetDoodleSegments().Number() > 0) - { - wxNode *node = doc->GetDoodleSegments().Last(); - DoodleSegment *seg = (DoodleSegment *)node->Data(); - delete seg; - delete node; - - doc->Modify(TRUE); - doc->UpdateAllViews(); - } - } - } - return TRUE; -} - -IMPLEMENT_DYNAMIC_CLASS(TextEditDocument, wxDocument) - -// Since text windows have their own method for saving to/loading from files, -// we override OnSave/OpenDocument instead of Save/LoadObject -bool TextEditDocument::OnSaveDocument(const wxString& filename) -{ - TextEditView *view = (TextEditView *)GetFirstView(); - - if (!view->textsw->SaveFile(filename)) - return FALSE; - Modify(FALSE); - return TRUE; -} - -bool TextEditDocument::OnOpenDocument(const wxString& filename) -{ - TextEditView *view = (TextEditView *)GetFirstView(); - if (!view->textsw->LoadFile(filename)) - return FALSE; - - SetFilename(filename, TRUE); - Modify(FALSE); - UpdateAllViews(); - return TRUE; -} - -bool TextEditDocument::IsModified(void) const -{ - TextEditView *view = (TextEditView *)GetFirstView(); - if (view) - { - return (wxDocument::IsModified() || view->textsw->IsModified()); - } - else - return wxDocument::IsModified(); -} - -void TextEditDocument::Modify(bool mod) -{ - TextEditView *view = (TextEditView *)GetFirstView(); - - wxDocument::Modify(mod); - - if (!mod && view && view->textsw) - view->textsw->DiscardEdits(); -} diff --git a/samples/docview/doc.h b/samples/docview/doc.h deleted file mode 100644 index a83b45c877..0000000000 --- a/samples/docview/doc.h +++ /dev/null @@ -1,98 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: doc.h -// Purpose: Document classes -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -// #pragma interface -#endif - -#ifndef __DOCSAMPLEH__ -#define __DOCSAMPLEH__ - -#include "wx/docview.h" - -// Plots a line from one point to the other -class DoodleLine: public wxObject -{ - public: - long x1; - long y1; - long x2; - long y2; -}; - -// Contains a list of lines: represents a mouse-down doodle -class DoodleSegment: public wxObject -{ - public: - wxList lines; - - DoodleSegment(void); - DoodleSegment(DoodleSegment& seg); - ~DoodleSegment(void); - - void Draw(wxDC *dc); - ostream& SaveObject(ostream& stream); - istream& LoadObject(istream& stream); -}; - -class DrawingDocument: public wxDocument -{ - DECLARE_DYNAMIC_CLASS(DrawingDocument) - private: - public: - wxList doodleSegments; - - DrawingDocument(void); - ~DrawingDocument(void); - - ostream& SaveObject(ostream& stream); - istream& LoadObject(istream& stream); - - inline wxList& GetDoodleSegments(void) const { return (wxList&) doodleSegments; }; -}; - -#define DOODLE_CUT 1 -#define DOODLE_ADD 2 - -class DrawingCommand: public wxCommand -{ - protected: - DoodleSegment *segment; - DrawingDocument *doc; - int cmd; - public: - DrawingCommand(const wxString& name, int cmd, DrawingDocument *ddoc, DoodleSegment *seg); - ~DrawingCommand(void); - - bool Do(void); - bool Undo(void); -}; - -class TextEditDocument: public wxDocument -{ - DECLARE_DYNAMIC_CLASS(TextEditDocument) - private: - public: -/* - ostream& SaveObject(ostream& stream); - istream& LoadObject(istream& stream); -*/ - virtual bool OnSaveDocument(const wxString& filename); - virtual bool OnOpenDocument(const wxString& filename); - virtual bool IsModified(void) const; - virtual void Modify(bool mod); - - TextEditDocument(void) {} - ~TextEditDocument(void) {} -}; - - -#endif diff --git a/samples/docview/doc.ico b/samples/docview/doc.ico deleted file mode 100644 index 34b1d7bc936820eecbbf4acbb26617eaf0d7eb9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcma)(J#vFE6oemfW=N-0X-%11kV{Z=1$C5WCI^E9FykxGC1n~07ap&7^<#&Oi%6{W zR?_<w_Y*{$>xD00eY#3t4mZ6Q~Xno&v0^u`25yh$@ zHUBN{XS32_gyJt5fhF$0p#3E55wAb&n$LIxyz1H@S_i3uwcrZ}b(JNje; z0Pq`te84Aw!ykY=Hy2cZ(g}bzKzd=b@_+6p>DhEZWp#1%FbJvU&ML6<%`cgJZ-+N`{1J}oC06$K7q>)I2FK5 w^@a;MC$j_hm1@Q{`~6IfJZK+PGM07{#|p_(Q9N^=xsJR&xiw}x5FEC?0?FYnj{pDw diff --git a/samples/docview/docview.cpp b/samples/docview/docview.cpp deleted file mode 100644 index 681fa2ebc0..0000000000 --- a/samples/docview/docview.cpp +++ /dev/null @@ -1,270 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: docview.cpp -// Purpose: Document/view demo -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -// #pragma implementation "docview.h" -#endif - -/* - * Purpose: Document/view architecture demo for wxWindows class library - * Run with no arguments for multiple top-level windows, -single - * for a single window. - */ - - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#if !wxUSE_DOC_VIEW_ARCHITECTURE -#error You must set wxUSE_DOC_VIEW_ARCHITECTURE to 1 in wx_setup.h! -#endif - -#include "wx/docview.h" - -#include "docview.h" -#include "doc.h" -#include "view.h" - -MyFrame *frame = (MyFrame *) NULL; - -// In single window mode, don't have any child windows; use -// main window. -bool singleWindowMode = FALSE; - -IMPLEMENT_APP(MyApp) - -MyApp::MyApp(void) -{ - m_docManager = (wxDocManager *) NULL; -} - -bool MyApp::OnInit(void) -{ - //// Find out if we're: - //// SDI : multiple windows and documents but not MDI - //// MDI : multiple windows and documents with containing frame - MSW only) - /// single window : (one document at a time, only one frame, as in Windows Write) - if (argc > 1) - { - if (strcmp(argv[1], "-single") == 0) - { - singleWindowMode = TRUE; - } - } - - //// Create a document manager - m_docManager = new wxDocManager; - - //// Create a template relating drawing documents to their views - (void) new wxDocTemplate(m_docManager, "Drawing", "*.drw", "", "drw", "Drawing Doc", "Drawing View", - CLASSINFO(DrawingDocument), CLASSINFO(DrawingView)); - - if (singleWindowMode) - { - // If we've only got one window, we only get to edit - // one document at a time. Therefore no text editing, just - // doodling. - m_docManager->SetMaxDocsOpen(1); - } - else - //// Create a template relating text documents to their views - (void) new wxDocTemplate(m_docManager, "Text", "*.txt", "", "txt", "Text Doc", "Text View", - CLASSINFO(TextEditDocument), CLASSINFO(TextEditView)); - - //// Create the main frame window - frame = new MyFrame(m_docManager, (wxFrame *) NULL, -1, "DocView Demo", wxPoint(0, 0), wxSize(500, 400), wxDEFAULT_FRAME_STYLE); - - //// Give it an icon (this is ignored in MDI mode: uses resources) -#ifdef __WXMSW__ - frame->SetIcon(wxIcon("doc_icn")); -#endif - - //// Make a menubar - wxMenu *file_menu = new wxMenu; - wxMenu *edit_menu = (wxMenu *) NULL; - - file_menu->Append(wxID_NEW, "&New..."); - file_menu->Append(wxID_OPEN, "&Open..."); - - if (singleWindowMode) - { - file_menu->Append(wxID_CLOSE, "&Close"); - file_menu->Append(wxID_SAVE, "&Save"); - file_menu->Append(wxID_SAVEAS, "Save &As..."); - file_menu->AppendSeparator(); - file_menu->Append(wxID_PRINT, "&Print..."); - file_menu->Append(wxID_PRINT_SETUP, "Print &Setup..."); - file_menu->Append(wxID_PREVIEW, "Print Pre&view"); - - edit_menu = new wxMenu; - edit_menu->Append(wxID_UNDO, "&Undo"); - edit_menu->Append(wxID_REDO, "&Redo"); - edit_menu->AppendSeparator(); - edit_menu->Append(DOCVIEW_CUT, "&Cut last segment"); - - frame->editMenu = edit_menu; - } - - file_menu->AppendSeparator(); - file_menu->Append(wxID_EXIT, "E&xit"); - - // A nice touch: a history of files visited. Use this menu. - m_docManager->FileHistoryUseMenu(file_menu); - - wxMenu *help_menu = new wxMenu; - help_menu->Append(DOCVIEW_ABOUT, "&About"); - - wxMenuBar *menu_bar = new wxMenuBar; - - menu_bar->Append(file_menu, "&File"); - if (edit_menu) - menu_bar->Append(edit_menu, "&Edit"); - menu_bar->Append(help_menu, "&Help"); - - if (singleWindowMode) - frame->canvas = frame->CreateCanvas((wxView *) NULL, frame); - - //// Associate the menu bar with the frame - frame->SetMenuBar(menu_bar); - - frame->Centre(wxBOTH); - frame->Show(TRUE); - - SetTopWindow(frame); - return TRUE; -} - -int MyApp::OnExit(void) -{ - delete m_docManager; - return 0; -} - -/* - * Centralised code for creating a document frame. - * Called from view.cpp, when a view is created, but not used at all - * in 'single window' mode. - */ - -wxFrame *MyApp::CreateChildFrame(wxDocument *doc, wxView *view, bool isCanvas) -{ - //// Make a child frame - wxDocChildFrame *subframe = new wxDocChildFrame(doc, view, GetMainFrame(), -1, "Child Frame", - wxPoint(10, 10), wxSize(300, 300), wxDEFAULT_FRAME_STYLE); - -#ifdef __WXMSW__ - subframe->SetIcon(wxString(isCanvas ? "chrt_icn" : "notepad_icn")); -#endif - - //// Make a menubar - wxMenu *file_menu = new wxMenu; - - file_menu->Append(wxID_NEW, "&New..."); - file_menu->Append(wxID_OPEN, "&Open..."); - file_menu->Append(wxID_CLOSE, "&Close"); - file_menu->Append(wxID_SAVE, "&Save"); - file_menu->Append(wxID_SAVEAS, "Save &As..."); - - if (isCanvas) - { - file_menu->AppendSeparator(); - file_menu->Append(wxID_PRINT, "&Print..."); - file_menu->Append(wxID_PRINT_SETUP, "Print &Setup..."); - file_menu->Append(wxID_PREVIEW, "Print Pre&view"); - } - - wxMenu *edit_menu = (wxMenu *) NULL; - - if (isCanvas) - { - edit_menu = new wxMenu; - edit_menu->Append(wxID_UNDO, "&Undo"); - edit_menu->Append(wxID_REDO, "&Redo"); - edit_menu->AppendSeparator(); - edit_menu->Append(DOCVIEW_CUT, "&Cut last segment"); - - doc->GetCommandProcessor()->SetEditMenu(edit_menu); - } - - wxMenu *help_menu = new wxMenu; - help_menu->Append(DOCVIEW_ABOUT, "&About"); - - wxMenuBar *menu_bar = new wxMenuBar; - - menu_bar->Append(file_menu, "&File"); - if (isCanvas) - menu_bar->Append(edit_menu, "&Edit"); - menu_bar->Append(help_menu, "&Help"); - - //// Associate the menu bar with the frame - subframe->SetMenuBar(menu_bar); - - subframe->Centre(wxBOTH); - - return subframe; -} - -/* - * This is the top-level window of the application. - */ - -IMPLEMENT_CLASS(MyFrame, wxDocParentFrame) -BEGIN_EVENT_TABLE(MyFrame, wxDocParentFrame) - EVT_MENU(DOCVIEW_ABOUT, MyFrame::OnAbout) -END_EVENT_TABLE() - -MyFrame::MyFrame(wxDocManager *manager, wxFrame *frame, wxWindowID id, const wxString& title, - const wxPoint& pos, const wxSize& size, const long type): - wxDocParentFrame(manager, frame, id, title, pos, size, type) -{ - // This pointer only needed if in single window mode - canvas = (MyCanvas *) NULL; - editMenu = (wxMenu *) NULL; -} - -void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event) ) -{ - (void)wxMessageBox("DocView Demo\nAuthor: Julian Smart julian.smart@ukonline.co.uk\nUsage: docview.exe [-single]", "About DocView"); -} - -// Creates a canvas. Called either from view.cc when a new drawing -// view is created, or in OnInit as a child of the main window, -// if in 'single window' mode. -MyCanvas *MyFrame::CreateCanvas(wxView *view, wxFrame *parent) -{ - int width, height; - parent->GetClientSize(&width, &height); - - // Non-retained canvas - MyCanvas *canvas = new MyCanvas(view, parent, wxPoint(0, 0), wxSize(width, height), 0); - canvas->SetCursor(wxCursor(wxCURSOR_PENCIL)); - - // Give it scrollbars - canvas->SetScrollbars(20, 20, 50, 50); - canvas->SetBackgroundColour(*wxWHITE); - canvas->Clear(); - - return canvas; -} - -MyFrame *GetMainFrame(void) -{ - return frame; -} - diff --git a/samples/docview/docview.def b/samples/docview/docview.def deleted file mode 100644 index 78ac0eda3f..0000000000 --- a/samples/docview/docview.def +++ /dev/null @@ -1,8 +0,0 @@ -NAME DocView -DESCRIPTION 'Document architecture test' -EXETYPE WINDOWS -STUB 'WINSTUB.EXE' -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE -HEAPSIZE 1024 -STACKSIZE 8192 diff --git a/samples/docview/docview.h b/samples/docview/docview.h deleted file mode 100644 index fb9201406f..0000000000 --- a/samples/docview/docview.h +++ /dev/null @@ -1,66 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: docview.h -// Purpose: Document/view demo -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -// #pragma interface "docview.h" -#endif - -#ifndef __DOCVIEWSAMPLEH__ -#define __DOCVIEWSAMPLEH__ - -#include "wx/docview.h" - -class wxDocManager; - -// Define a new application -class MyApp: public wxApp -{ - public: - MyApp(void); - bool OnInit(void); - int OnExit(void); - - wxFrame *CreateChildFrame(wxDocument *doc, wxView *view, bool isCanvas); - - protected: - wxDocManager* m_docManager; -}; - -DECLARE_APP(MyApp) - -// Define a new frame -class MyCanvas; -class MyFrame: public wxDocParentFrame -{ - DECLARE_CLASS(MyFrame) - public: - wxMenu *editMenu; - - // This pointer only needed if in single window mode - MyCanvas *canvas; - - MyFrame(wxDocManager *manager, wxFrame *frame, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, - const long type); - - void OnAbout(wxCommandEvent& event); - MyCanvas *CreateCanvas(wxView *view, wxFrame *parent); - -DECLARE_EVENT_TABLE() -}; - -extern MyFrame *GetMainFrame(void); - -#define DOCVIEW_CUT 1 -#define DOCVIEW_ABOUT 2 - -extern bool singleWindowMode; - -#endif diff --git a/samples/docview/docview.rc b/samples/docview/docview.rc deleted file mode 100644 index 19c382a856..0000000000 --- a/samples/docview/docview.rc +++ /dev/null @@ -1,5 +0,0 @@ -doc_icn ICON "doc.ico" -chrt_icn ICON "chart.ico" -notepad_icn ICON "notepad.ico" -#include "wx/msw/wx.rc" - diff --git a/samples/docview/makefile.b32 b/samples/docview/makefile.b32 deleted file mode 100644 index 8f52125c0e..0000000000 --- a/samples/docview/makefile.b32 +++ /dev/null @@ -1,16 +0,0 @@ -# -# File: makefile.b32 -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: -# -# Makefile : Builds sample for 32-bit BC++ - -WXDIR = $(WXWIN) - -TARGET=docview -OBJECTS = $(TARGET).obj view.obj doc.obj - -!include $(WXDIR)\src\makeprog.b32 - diff --git a/samples/docview/makefile.bcc b/samples/docview/makefile.bcc deleted file mode 100644 index 6efb0aa0d2..0000000000 --- a/samples/docview/makefile.bcc +++ /dev/null @@ -1,19 +0,0 @@ -# -# File: makefile.bcc -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Builds a BC++ 16-bit sample - -!if "$(WXWIN)" == "" -!error You must define the WXWIN variable in autoexec.bat, e.g. WXWIN=c:\wx -!endif - -WXDIR = $(WXWIN) - -TARGET=docview -OBJECTS=$(TARGET).obj - -!include $(WXDIR)\src\makeprog.bcc - diff --git a/samples/docview/makefile.dos b/samples/docview/makefile.dos deleted file mode 100644 index 033f382e7d..0000000000 --- a/samples/docview/makefile.dos +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.dos -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Makefile : Builds 16-bit sample, VC++ 1.5 -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -WXDIR = $(WXWIN) - -TARGET=docview -OBJECTS=$(TARGET).obj view.obj doc.obj - -!include $(WXDIR)\src\makeprog.msc - diff --git a/samples/docview/makefile.g95 b/samples/docview/makefile.g95 deleted file mode 100644 index 5fe3bf52db..0000000000 --- a/samples/docview/makefile.g95 +++ /dev/null @@ -1,43 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile for docview example (UNIX). - -WXDIR = ../.. - -# All common UNIX compiler flags and options are now in -# this central makefile. -include $(WXDIR)/src/makeg95.env - -OBJECTS = $(OBJDIR)/docview.$(OBJSUFF) $(OBJDIR)/view.$(OBJSUFF) $(OBJDIR)/doc.$(OBJSUFF)\ - $(OBJDIR)/docview_resources.$(OBJSUFF) - - -all: $(OBJDIR) docview$(GUISUFFIX) - -$(OBJDIR): - mkdir $(OBJDIR) - -docview$(GUISUFFIX): $(OBJECTS) $(WXLIB) - $(CC) $(LDFLAGS) -o docview$(GUISUFFIX)$(EXESUFF) $(OBJECTS) $(XVIEW_LINK) $(LDLIBS) - -$(OBJDIR)/docview.$(OBJSUFF): docview.$(SRCSUFF) docview.h doc.h view.h - $(CC) -c $(CPPFLAGS) -o $@ docview.$(SRCSUFF) - -$(OBJDIR)/doc.$(OBJSUFF): doc.$(SRCSUFF) doc.h - $(CC) -c $(CPPFLAGS) -o $@ doc.$(SRCSUFF) - -$(OBJDIR)/view.$(OBJSUFF): view.$(SRCSUFF) view.h - $(CC) -c $(CPPFLAGS) -o $@ view.$(SRCSUFF) - -$(OBJDIR)/docview_resources.o: docview.rc - $(RESCOMP) -i docview.rc -o $(OBJDIR)/docview_resources.o $(RESFLAGS) - -clean: - rm -f $(OBJECTS) docview$(GUISUFFIX).exe core *.rsc *.res diff --git a/samples/docview/makefile.sc b/samples/docview/makefile.sc deleted file mode 100644 index 250054f91f..0000000000 --- a/samples/docview/makefile.sc +++ /dev/null @@ -1,38 +0,0 @@ -# Symantec C++ makefile for docview example -# NOTE that peripheral libraries are now dealt in main wxWindows makefile. - -WXDIR = $(WXWIN) -!include $(WXDIR)\src\makesc.env - -WXLIB = $(WXDIR)\lib\wx.lib -INCDIR = $(WXDIR)\include -MSWINC = $(INCDIR)\msw -BASEINC = $(INCDIR)\base - -CC=sc -RC=rc -CFLAGS = -o -ml -W -Dwx_msw -LDFLAGS = -ml -W - -INCLUDE=$(BASEINC);$(MSWINC) - -LIBS=$(WXLIB) libw.lib commdlg.lib shell.lib - -OBJECTS=docview.obj view.obj doc.obj - -.$(SRCSUFF).obj: - *$(CC) -c $(CFLAGS) -I$(INCLUDE) $< - -.rc.res: - *$(RC) -r -I$(INCLUDE) $< - -docview.exe: $(OBJECTS) docview.def docview.res - *$(CC) $(LDFLAGS) -o$@ $(OBJECTS) docview.def $(LIBS) - *$(RC) -k docview.res - -clean: - -del *.obj - -del *.exe - -del *.res - -del *.map - -del *.rws diff --git a/samples/docview/makefile.unx b/samples/docview/makefile.unx deleted file mode 100644 index e49d7b7335..0000000000 --- a/samples/docview/makefile.unx +++ /dev/null @@ -1,18 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1998 -# Updated: -# Copyright: (c) 1998 Julian Smart -# -# "%W% %G%" -# -# Makefile for docview example (UNIX). - -PROGRAM=docview - -OBJECTS=$(PROGRAM).o doc.o view.o - -include ../../src/makeprog.env - - diff --git a/samples/docview/makefile.vc b/samples/docview/makefile.vc deleted file mode 100644 index 9b20d64402..0000000000 --- a/samples/docview/makefile.vc +++ /dev/null @@ -1,18 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: (c) Julian Smart -# -# Makefile : Builds sample (VC++, WIN32) -# Use FINAL=1 argument to nmake to build final version with no debug info. - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -PROGRAM=docview -OBJECTS = $(PROGRAM).obj doc.obj view.obj - -!include $(WXDIR)\src\makeprog.vc - diff --git a/samples/docview/makefile.vms b/samples/docview/makefile.vms deleted file mode 100644 index 1a64fc7f30..0000000000 --- a/samples/docview/makefile.vms +++ /dev/null @@ -1,44 +0,0 @@ -#************************************************************************ -# Makefile for DOCVIEW under VMS -# by Stefan Hammes -# (incomplete) update history: -# 09.06.95 -#************************************************************************ - -#************************************************************************ -# Definition section -# (cave: definitions and includes must begin with ',') -#************************************************************************ - -APPOPTS = -APPDEFS = -APPINCS = - -#************************************************************************ -# Module section -#************************************************************************ - -# Name of main module -MAIN = docview - -# Object modules of the application. -OBJS = docview.obj view.obj doc.obj -OBJLIST =docview.obj,view.obj,doc.obj - -.include [--.src]makevms.env - -# main dependency -$(MAIN).exe : $(OBJS) - $(LINK) $(LINKFLAGS) /exec=$(MAIN).exe $(OBJLIST),$(WXLIB)/lib,$(OPTSFILE)/option - - purge *.exe - -#************************************************************************ -# Header file depedencies following -#************************************************************************ - -docview.$(OBJSUFF) : docview.$(SRCSUFF) docview.h doc.h view.h - -doc.$(OBJSUFF) : doc.$(SRCSUFF) doc.h - -view.$(OBJSUFF) : view.$(SRCSUFF) view.h - diff --git a/samples/docview/makefile.wat b/samples/docview/makefile.wat deleted file mode 100644 index c701e12cc8..0000000000 --- a/samples/docview/makefile.wat +++ /dev/null @@ -1,15 +0,0 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 -# -# - -WXDIR = $(%WXWIN) - -PROGRAM = docview -OBJECTS = $(PROGRAM).obj view.obj doc.obj - -!include $(WXDIR)\src\makeprog.wat - - diff --git a/samples/docview/mondrian.ico b/samples/docview/mondrian.ico deleted file mode 100644 index 2310c5d275a87af295d5ea8dc79ea417a5e74c53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmZQzU<5)11px*Sc)`TLAO@s0fLH;D9e|jTfdxnc0Zj7-RFR+mfB7od;Od^;vO}ZfBQ&LJ2V?-jCDLL~C#NZagM;I%j zcDqx>sM_S|{9If6_#*$<|E|8A!Y23~4O?_U-zu)WBy=!zs+|>dTJJ4Cpn>GLVSetTitle("DrawingView"); - - canvas = GetMainFrame()->CreateCanvas(this, frame); -#ifdef __X__ - // X seems to require a forced resize - int x, y; - frame->GetSize(&x, &y); - frame->SetSize(-1, -1, x, y); -#endif - frame->Show(TRUE); - } - else - { - // Single-window mode - frame = GetMainFrame(); - canvas = GetMainFrame()->canvas; - canvas->view = this; - - // Associate the appropriate frame with this view. - SetFrame(frame); - - // Make sure the document manager knows that this is the - // current view. - Activate(TRUE); - - // Initialize the edit menu Undo and Redo items - doc->GetCommandProcessor()->SetEditMenu(((MyFrame *)frame)->editMenu); - doc->GetCommandProcessor()->Initialize(); - } - - return TRUE; -} - -// Sneakily gets used for default print/preview -// as well as drawing on the screen. -void DrawingView::OnDraw(wxDC *dc) -{ - dc->SetFont(*wxNORMAL_FONT); - dc->SetPen(*wxBLACK_PEN); - - wxNode *node = ((DrawingDocument *)GetDocument())->GetDoodleSegments().First(); - while (node) - { - DoodleSegment *seg = (DoodleSegment *)node->Data(); - seg->Draw(dc); - node = node->Next(); - } -} - -void DrawingView::OnUpdate(wxView *WXUNUSED(sender), wxObject *WXUNUSED(hint)) -{ - if (canvas) - canvas->Refresh(); - -/* Is the following necessary? -#ifdef __WXMSW__ - if (canvas) - canvas->Refresh(); -#else - if (canvas) - { - wxClientDC dc(canvas); - dc.Clear(); - OnDraw(& dc); - } -#endif -*/ -} - -// Clean up windows used for displaying the view. -bool DrawingView::OnClose(bool deleteWindow) -{ - if (!GetDocument()->Close()) - return FALSE; - - // Clear the canvas in case we're in single-window mode, - // and the canvas stays. - canvas->Clear(); - canvas->view = (wxView *) NULL; - canvas = (MyCanvas *) NULL; - - wxString s(wxTheApp->GetAppName()); - if (frame) - frame->SetTitle(s); - - SetFrame((wxFrame *) NULL); - - Activate(FALSE); - - if (deleteWindow && !singleWindowMode) - { - delete frame; - return TRUE; - } - return TRUE; -} - -void DrawingView::OnCut(wxCommandEvent& WXUNUSED(event) ) -{ - DrawingDocument *doc = (DrawingDocument *)GetDocument(); - doc->GetCommandProcessor()->Submit(new DrawingCommand((char *) "Cut Last Segment", DOODLE_CUT, doc, (DoodleSegment *) NULL)); -} - -IMPLEMENT_DYNAMIC_CLASS(TextEditView, wxView) - -bool TextEditView::OnCreate(wxDocument *doc, long WXUNUSED(flags) ) -{ - frame = wxGetApp().CreateChildFrame(doc, this, FALSE); - - int width, height; - frame->GetClientSize(&width, &height); - textsw = new MyTextWindow(this, frame, wxPoint(0, 0), wxSize(width, height), wxTE_MULTILINE); - frame->SetTitle("TextEditView"); - -#ifdef __X__ - // X seems to require a forced resize - int x, y; - frame->GetSize(&x, &y); - frame->SetSize(-1, -1, x, y); -#endif - - frame->Show(TRUE); - Activate(TRUE); - - return TRUE; -} - -// Handled by wxTextWindow -void TextEditView::OnDraw(wxDC *WXUNUSED(dc) ) -{ -} - -void TextEditView::OnUpdate(wxView *WXUNUSED(sender), wxObject *WXUNUSED(hint) ) -{ -} - -bool TextEditView::OnClose(bool deleteWindow) -{ - if (!GetDocument()->Close()) - return FALSE; - - Activate(FALSE); - - if (deleteWindow) - { - delete frame; - return TRUE; - } - return TRUE; -} - -/* - * Window implementations - */ - -BEGIN_EVENT_TABLE(MyCanvas, wxScrolledWindow) - EVT_MOUSE_EVENTS(MyCanvas::OnMouseEvent) -END_EVENT_TABLE() - -// Define a constructor for my canvas -MyCanvas::MyCanvas(wxView *v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style): - wxScrolledWindow(frame, -1, pos, size, style) -{ - view = v; -} - -// Define the repainting behaviour -void MyCanvas::OnDraw(wxDC& dc) -{ - if (view) - view->OnDraw(& dc); -} - -// This implements a tiny doodling program. Drag the mouse using -// the left button. -void MyCanvas::OnMouseEvent(wxMouseEvent& event) -{ - if (!view) - return; - - static DoodleSegment *currentSegment = (DoodleSegment *) NULL; - - wxClientDC dc(this); - PrepareDC(dc); - - dc.SetPen(*wxBLACK_PEN); - - wxPoint pt(event.GetLogicalPosition(dc)); - - if (currentSegment && event.LeftUp()) - { - if (currentSegment->lines.Number() == 0) - { - delete currentSegment; - currentSegment = (DoodleSegment *) NULL; - } - else - { - // We've got a valid segment on mouse left up, so store it. - DrawingDocument *doc = (DrawingDocument *)view->GetDocument(); - - doc->GetCommandProcessor()->Submit(new DrawingCommand("Add Segment", DOODLE_ADD, doc, currentSegment)); - - view->GetDocument()->Modify(TRUE); - currentSegment = (DoodleSegment *) NULL; - } - } - - if (xpos > -1 && ypos > -1 && event.Dragging()) - { - if (!currentSegment) - currentSegment = new DoodleSegment; - - DoodleLine *newLine = new DoodleLine; - newLine->x1 = (long)xpos; - newLine->y1 = (long)ypos; - newLine->x2 = pt.x; - newLine->y2 = pt.y; - currentSegment->lines.Append(newLine); - - dc.DrawLine( (long)xpos, (long)ypos, pt.x, pt.y); - } - xpos = pt.x; - ypos = pt.y; -} - -// Define a constructor for my text subwindow -MyTextWindow::MyTextWindow(wxView *v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style): - wxTextCtrl(frame, -1, "", pos, size, style) -{ - view = v; -} - - diff --git a/samples/docview/view.h b/samples/docview/view.h deleted file mode 100644 index 2f068c7c04..0000000000 --- a/samples/docview/view.h +++ /dev/null @@ -1,79 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: view.h -// Purpose: View classes -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -// #pragma interface -#endif - -#ifndef __VIEWSAMPLEH__ -#define __VIEWSAMPLEH__ - -#include "wx/docview.h" - -class MyCanvas: public wxScrolledWindow -{ - public: - wxView *view; - - MyCanvas(wxView *v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style); - virtual void OnDraw(wxDC& dc); - void OnMouseEvent(wxMouseEvent& event); - -DECLARE_EVENT_TABLE() -}; - -class MyTextWindow: public wxTextCtrl -{ - public: - wxView *view; - - MyTextWindow(wxView *v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style); -}; - -class DrawingView: public wxView -{ - DECLARE_DYNAMIC_CLASS(DrawingView) - private: - public: - wxFrame *frame; - MyCanvas *canvas; - - DrawingView(void) { canvas = (MyCanvas *) NULL; frame = (wxFrame *) NULL; }; - ~DrawingView(void) {}; - - bool OnCreate(wxDocument *doc, long flags); - void OnDraw(wxDC *dc); - void OnUpdate(wxView *sender, wxObject *hint = (wxObject *) NULL); - bool OnClose(bool deleteWindow = TRUE); - - void OnCut(wxCommandEvent& event); - -DECLARE_EVENT_TABLE() -}; - -class TextEditView: public wxView -{ - DECLARE_DYNAMIC_CLASS(TextEditView) - private: - public: - wxFrame *frame; - MyTextWindow *textsw; - - TextEditView(wxDocument *doc = (wxDocument *) NULL): wxView(doc) { frame = (wxFrame *) NULL; textsw = (MyTextWindow *) NULL; } - ~TextEditView(void) {} - - bool OnCreate(wxDocument *doc, long flags); - void OnDraw(wxDC *dc); - void OnUpdate(wxView *sender, wxObject *hint = (wxObject *) NULL); - bool OnClose(bool deleteWindow = TRUE); -}; - -#endif diff --git a/samples/docvwmdi/.cvsignore b/samples/docvwmdi/.cvsignore deleted file mode 100644 index 7957c41216..0000000000 --- a/samples/docvwmdi/.cvsignore +++ /dev/null @@ -1,3 +0,0 @@ -Linux -linux-gnu -linux \ No newline at end of file diff --git a/samples/docvwmdi/Makefile b/samples/docvwmdi/Makefile deleted file mode 100644 index bccce53f76..0000000000 --- a/samples/docvwmdi/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../../setup/general/makeapp diff --git a/samples/docvwmdi/Makefile.in b/samples/docvwmdi/Makefile.in deleted file mode 100644 index 7f81acbf0f..0000000000 --- a/samples/docvwmdi/Makefile.in +++ /dev/null @@ -1,26 +0,0 @@ -# WXXT base directory -WXBASEDIR=@WXBASEDIR@ - -# set the OS type for compilation -OS=@OS@ -# compile a library only -RULE=bin - -# define library name -BIN_TARGET=test -# define library sources -BIN_SRC=\ -doc.cpp view.cpp docview.cpp - -#define library objects -BIN_OBJ=\ -doc.o view.o docview.o - -# additional things needed to link -BIN_LINK= - -# additional things needed to compile -ADD_COMPILE= - -# include the definitions now -include ../../../template.mak diff --git a/samples/docvwmdi/chart.ico b/samples/docvwmdi/chart.ico deleted file mode 100644 index d2bcfea7f6b553c99f3b904b5deb43d061d2916c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcma)4u?~VT5IxjH2a`IvN}SyM1wXB0x6Vxc6!-uVe!=$?nzrhpQAOg_h$ceBh&-)D#M=FYfwAK(fEMk@u943z>%&;>f z=!p!jQ1(F`;nH6b*Hp8L=}Yy==?UxKFw{4E#S*@E9qb%1@FoA3!Ig3>`OK~z z@un-8v!Fv^(aWyarIV9>RrS_!4*ko4OA?3t$%K}!rwqfamwPXT8Ywru6t38 f@y15=$>%IlxrN6sR{!aD diff --git a/samples/docvwmdi/doc.cpp b/samples/docvwmdi/doc.cpp deleted file mode 100644 index 04e328c621..0000000000 --- a/samples/docvwmdi/doc.cpp +++ /dev/null @@ -1,275 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: doc.cpp -// Purpose: Implements document functionality -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -// #pragma implementation -#endif - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#if !wxUSE_DOC_VIEW_ARCHITECTURE -#error You must set wxUSE_DOC_VIEW_ARCHITECTURE to 1 in wx_setup.h! -#endif - -#include "doc.h" -#include "view.h" - -IMPLEMENT_DYNAMIC_CLASS(DrawingDocument, wxDocument) - -DrawingDocument::DrawingDocument(void) -{ -} - -DrawingDocument::~DrawingDocument(void) -{ - doodleSegments.DeleteContents(TRUE); -} - -ostream& DrawingDocument::SaveObject(ostream& stream) -{ - wxDocument::SaveObject(stream); - - stream << doodleSegments.Number() << '\n'; - wxNode *node = doodleSegments.First(); - while (node) - { - DoodleSegment *segment = (DoodleSegment *)node->Data(); - segment->SaveObject(stream); - stream << '\n'; - - node = node->Next(); - } - return stream; -} - -istream& DrawingDocument::LoadObject(istream& stream) -{ - wxDocument::LoadObject(stream); - - int n = 0; - stream >> n; - - for (int i = 0; i < n; i++) - { - DoodleSegment *segment = new DoodleSegment; - segment->LoadObject(stream); - doodleSegments.Append(segment); - } - - return stream; -} - -DoodleSegment::DoodleSegment(void) -{ -} - -DoodleSegment::DoodleSegment(DoodleSegment& seg) -{ - wxNode *node = seg.lines.First(); - while (node) - { - DoodleLine *line = (DoodleLine *)node->Data(); - DoodleLine *newLine = new DoodleLine; - newLine->x1 = line->x1; - newLine->y1 = line->y1; - newLine->x2 = line->x2; - newLine->y2 = line->y2; - - lines.Append(newLine); - - node = node->Next(); - } -} - -DoodleSegment::~DoodleSegment(void) -{ - lines.DeleteContents(TRUE); -} - -ostream& DoodleSegment::SaveObject(ostream& stream) -{ - stream << lines.Number() << '\n'; - wxNode *node = lines.First(); - while (node) - { - DoodleLine *line = (DoodleLine *)node->Data(); - stream << line->x1 << " " << line->y1 << " " << line->x2 << " " << line->y2 << "\n"; - node = node->Next(); - } - return stream; -} - -istream& DoodleSegment::LoadObject(istream& stream) -{ - int n = 0; - stream >> n; - - for (int i = 0; i < n; i++) - { - DoodleLine *line = new DoodleLine; - stream >> line->x1 >> line->y1 >> line->x2 >> line->y2; - lines.Append(line); - } - return stream; -} - -void DoodleSegment::Draw(wxDC *dc) -{ - wxNode *node = lines.First(); - while (node) - { - DoodleLine *line = (DoodleLine *)node->Data(); - dc->DrawLine(line->x1, line->y1, line->x2, line->y2); - node = node->Next(); - } -} - -/* - * Implementation of drawing command - */ - -DrawingCommand::DrawingCommand(const wxString& name, int command, DrawingDocument *ddoc, DoodleSegment *seg): - wxCommand(TRUE, name) -{ - doc = ddoc; - segment = seg; - cmd = command; -} - -DrawingCommand::~DrawingCommand(void) -{ - if (segment) - delete segment; -} - -bool DrawingCommand::Do(void) -{ - switch (cmd) - { - case DOODLE_CUT: - { - // Cut the last segment - if (doc->GetDoodleSegments().Number() > 0) - { - wxNode *node = doc->GetDoodleSegments().Last(); - if (segment) - delete segment; - - segment = (DoodleSegment *)node->Data(); - delete node; - - doc->Modify(TRUE); - doc->UpdateAllViews(); - } - break; - } - case DOODLE_ADD: - { - doc->GetDoodleSegments().Append(new DoodleSegment(*segment)); - doc->Modify(TRUE); - doc->UpdateAllViews(); - break; - } - } - return TRUE; -} - -bool DrawingCommand::Undo(void) -{ - switch (cmd) - { - case DOODLE_CUT: - { - // Paste the segment - if (segment) - { - doc->GetDoodleSegments().Append(segment); - doc->Modify(TRUE); - doc->UpdateAllViews(); - segment = (DoodleSegment *) NULL; - } - doc->Modify(TRUE); - doc->UpdateAllViews(); - break; - } - case DOODLE_ADD: - { - // Cut the last segment - if (doc->GetDoodleSegments().Number() > 0) - { - wxNode *node = doc->GetDoodleSegments().Last(); - DoodleSegment *seg = (DoodleSegment *)node->Data(); - delete seg; - delete node; - - doc->Modify(TRUE); - doc->UpdateAllViews(); - } - } - } - return TRUE; -} - -IMPLEMENT_DYNAMIC_CLASS(TextEditDocument, wxDocument) - -// Since text windows have their own method for saving to/loading from files, -// we override OnSave/OpenDocument instead of Save/LoadObject -bool TextEditDocument::OnSaveDocument(const wxString& filename) -{ - TextEditView *view = (TextEditView *)GetFirstView(); - - if (!view->textsw->SaveFile(filename)) - return FALSE; - Modify(FALSE); - return TRUE; -} - -bool TextEditDocument::OnOpenDocument(const wxString& filename) -{ - TextEditView *view = (TextEditView *)GetFirstView(); - if (!view->textsw->LoadFile(filename)) - return FALSE; - - SetFilename(filename, TRUE); - Modify(FALSE); - UpdateAllViews(); - return TRUE; -} - -bool TextEditDocument::IsModified(void) const -{ - TextEditView *view = (TextEditView *)GetFirstView(); - if (view) - { - return (wxDocument::IsModified() || view->textsw->IsModified()); - } - else - return wxDocument::IsModified(); -} - -void TextEditDocument::Modify(bool mod) -{ - TextEditView *view = (TextEditView *)GetFirstView(); - - wxDocument::Modify(mod); - - if (!mod && view && view->textsw) - view->textsw->DiscardEdits(); -} diff --git a/samples/docvwmdi/doc.h b/samples/docvwmdi/doc.h deleted file mode 100644 index a83b45c877..0000000000 --- a/samples/docvwmdi/doc.h +++ /dev/null @@ -1,98 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: doc.h -// Purpose: Document classes -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -// #pragma interface -#endif - -#ifndef __DOCSAMPLEH__ -#define __DOCSAMPLEH__ - -#include "wx/docview.h" - -// Plots a line from one point to the other -class DoodleLine: public wxObject -{ - public: - long x1; - long y1; - long x2; - long y2; -}; - -// Contains a list of lines: represents a mouse-down doodle -class DoodleSegment: public wxObject -{ - public: - wxList lines; - - DoodleSegment(void); - DoodleSegment(DoodleSegment& seg); - ~DoodleSegment(void); - - void Draw(wxDC *dc); - ostream& SaveObject(ostream& stream); - istream& LoadObject(istream& stream); -}; - -class DrawingDocument: public wxDocument -{ - DECLARE_DYNAMIC_CLASS(DrawingDocument) - private: - public: - wxList doodleSegments; - - DrawingDocument(void); - ~DrawingDocument(void); - - ostream& SaveObject(ostream& stream); - istream& LoadObject(istream& stream); - - inline wxList& GetDoodleSegments(void) const { return (wxList&) doodleSegments; }; -}; - -#define DOODLE_CUT 1 -#define DOODLE_ADD 2 - -class DrawingCommand: public wxCommand -{ - protected: - DoodleSegment *segment; - DrawingDocument *doc; - int cmd; - public: - DrawingCommand(const wxString& name, int cmd, DrawingDocument *ddoc, DoodleSegment *seg); - ~DrawingCommand(void); - - bool Do(void); - bool Undo(void); -}; - -class TextEditDocument: public wxDocument -{ - DECLARE_DYNAMIC_CLASS(TextEditDocument) - private: - public: -/* - ostream& SaveObject(ostream& stream); - istream& LoadObject(istream& stream); -*/ - virtual bool OnSaveDocument(const wxString& filename); - virtual bool OnOpenDocument(const wxString& filename); - virtual bool IsModified(void) const; - virtual void Modify(bool mod); - - TextEditDocument(void) {} - ~TextEditDocument(void) {} -}; - - -#endif diff --git a/samples/docvwmdi/doc.ico b/samples/docvwmdi/doc.ico deleted file mode 100644 index 34b1d7bc936820eecbbf4acbb26617eaf0d7eb9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcma)(J#vFE6oemfW=N-0X-%11kV{Z=1$C5WCI^E9FykxGC1n~07ap&7^<#&Oi%6{W zR?_<w_Y*{$>xD00eY#3t4mZ6Q~Xno&v0^u`25yh$@ zHUBN{XS32_gyJt5fhF$0p#3E55wAb&n$LIxyz1H@S_i3uwcrZ}b(JNje; z0Pq`te84Aw!ykY=Hy2cZ(g}bzKzd=b@_+6p>DhEZWp#1%FbJvU&ML6<%`cgJZ-+N`{1J}oC06$K7q>)I2FK5 w^@a;MC$j_hm1@Q{`~6IfJZK+PGM07{#|p_(Q9N^=xsJR&xiw}x5FEC?0?FYnj{pDw diff --git a/samples/docvwmdi/docview.cpp b/samples/docvwmdi/docview.cpp deleted file mode 100644 index 00a2ea7340..0000000000 --- a/samples/docvwmdi/docview.cpp +++ /dev/null @@ -1,221 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: docview.cpp -// Purpose: Document/view demo -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -// #pragma implementation "docview.h" -#endif - -/* - * Purpose: Document/view architecture demo for wxWindows class library - MDI - */ - - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#if !wxUSE_DOC_VIEW_ARCHITECTURE -#error You must set wxUSE_DOC_VIEW_ARCHITECTURE to 1 in wx_setup.h! -#endif - -#include "docview.h" -#include "doc.h" -#include "view.h" - -MyFrame *frame = (MyFrame *) NULL; - -IMPLEMENT_APP(MyApp) - -MyApp::MyApp(void) -{ - m_docManager = (wxDocManager *) NULL; -} - -bool MyApp::OnInit(void) -{ - //// Create a document manager - m_docManager = new wxDocManager; - - //// Create a template relating drawing documents to their views - (void) new wxDocTemplate((wxDocManager *) m_docManager, "Drawing", "*.drw", "", "drw", "Drawing Doc", "Drawing View", - CLASSINFO(DrawingDocument), CLASSINFO(DrawingView)); - - //// Create a template relating text documents to their views - (void) new wxDocTemplate(m_docManager, "Text", "*.txt", "", "txt", "Text Doc", "Text View", - CLASSINFO(TextEditDocument), CLASSINFO(TextEditView)); - - //// Create the main frame window - frame = new MyFrame((wxDocManager *) m_docManager, (wxFrame *) NULL, (const wxString) "DocView Demo", wxPoint(0, 0), wxSize(500, 400), wxDEFAULT_FRAME_STYLE); - - //// Give it an icon (this is ignored in MDI mode: uses resources) -#ifdef __WXMSW__ - frame->SetIcon(wxIcon("doc")); -#endif -#ifdef __X__ - frame->SetIcon(wxIcon("doc.xbm")); -#endif - - //// Make a menubar - wxMenu *file_menu = new wxMenu; - wxMenu *edit_menu = (wxMenu *) NULL; - - file_menu->Append(wxID_NEW, "&New..."); - file_menu->Append(wxID_OPEN, "&Open..."); - - file_menu->AppendSeparator(); - file_menu->Append(wxID_EXIT, "E&xit"); - - // A nice touch: a history of files visited. Use this menu. - m_docManager->FileHistoryUseMenu(file_menu); - - wxMenu *help_menu = new wxMenu; - help_menu->Append(DOCVIEW_ABOUT, "&About"); - - wxMenuBar *menu_bar = new wxMenuBar; - - menu_bar->Append(file_menu, "&File"); - if (edit_menu) - menu_bar->Append(edit_menu, "&Edit"); - menu_bar->Append(help_menu, "&Help"); - - //// Associate the menu bar with the frame - frame->SetMenuBar(menu_bar); - - frame->Centre(wxBOTH); - frame->Show(TRUE); - - SetTopWindow(frame); - return TRUE; -} - -int MyApp::OnExit(void) -{ - delete m_docManager; - return 0; -} - -/* - * Centralised code for creating a document frame. - * Called from view.cpp, when a view is created. - */ - -wxMDIChildFrame *MyApp::CreateChildFrame(wxDocument *doc, wxView *view, bool isCanvas) -{ - //// Make a child frame - wxDocMDIChildFrame *subframe = new wxDocMDIChildFrame(doc, view, GetMainFrame(), -1, "Child Frame", - wxPoint(10, 10), wxSize(300, 300), wxDEFAULT_FRAME_STYLE); - -#ifdef __WXMSW__ - subframe->SetIcon(wxString(isCanvas ? "chart" : "notepad")); -#endif -#ifdef __X__ - subframe->SetIcon(wxIcon("doc.xbm")); -#endif - - //// Make a menubar - wxMenu *file_menu = new wxMenu; - - file_menu->Append(wxID_NEW, "&New..."); - file_menu->Append(wxID_OPEN, "&Open..."); - file_menu->Append(wxID_CLOSE, "&Close"); - file_menu->Append(wxID_SAVE, "&Save"); - file_menu->Append(wxID_SAVEAS, "Save &As..."); - - if (isCanvas) - { - file_menu->AppendSeparator(); - file_menu->Append(wxID_PRINT, "&Print..."); - file_menu->Append(wxID_PRINT_SETUP, "Print &Setup..."); - file_menu->Append(wxID_PREVIEW, "Print Pre&view"); - } - - file_menu->AppendSeparator(); - file_menu->Append(wxID_EXIT, "E&xit"); - - wxMenu *edit_menu = (wxMenu *) NULL; - - if (isCanvas) - { - edit_menu = new wxMenu; - edit_menu->Append(wxID_UNDO, "&Undo"); - edit_menu->Append(wxID_REDO, "&Redo"); - edit_menu->AppendSeparator(); - edit_menu->Append(DOCVIEW_CUT, "&Cut last segment"); - - doc->GetCommandProcessor()->SetEditMenu(edit_menu); - } - - wxMenu *help_menu = new wxMenu; - help_menu->Append(DOCVIEW_ABOUT, "&About"); - - wxMenuBar *menu_bar = new wxMenuBar; - - menu_bar->Append(file_menu, "&File"); - if (isCanvas) - menu_bar->Append(edit_menu, "&Edit"); - menu_bar->Append(help_menu, "&Help"); - - //// Associate the menu bar with the frame - subframe->SetMenuBar(menu_bar); - - return subframe; -} - -/* - * This is the top-level window of the application. - */ - -IMPLEMENT_CLASS(MyFrame, wxDocMDIParentFrame) -BEGIN_EVENT_TABLE(MyFrame, wxDocMDIParentFrame) - EVT_MENU(DOCVIEW_ABOUT, MyFrame::OnAbout) -END_EVENT_TABLE() - -MyFrame::MyFrame(wxDocManager *manager, wxFrame *frame, const wxString& title, - const wxPoint& pos, const wxSize& size, long type): - wxDocMDIParentFrame(manager, frame, -1, title, pos, size, type, "myFrame") -{ - editMenu = (wxMenu *) NULL; -} - -void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event) ) -{ - (void)wxMessageBox("DocView Demo\nAuthor: Julian Smart julian.smart@ukonline.co.uk\nUsage: docview.exe", "About DocView"); -} - -// Creates a canvas. Called from view.cpp when a new drawing -// view is created. -MyCanvas *MyFrame::CreateCanvas(wxView *view, wxFrame *parent) -{ - int width, height; - parent->GetClientSize(&width, &height); - - // Non-retained canvas - MyCanvas *canvas = new MyCanvas(view, parent, wxPoint(0, 0), wxSize(width, height), 0); - canvas->SetCursor(wxCursor(wxCURSOR_PENCIL)); - - // Give it scrollbars - canvas->SetScrollbars(20, 20, 50, 50); - - return canvas; -} - -MyFrame *GetMainFrame(void) -{ - return frame; -} - diff --git a/samples/docvwmdi/docview.def b/samples/docvwmdi/docview.def deleted file mode 100644 index 78ac0eda3f..0000000000 --- a/samples/docvwmdi/docview.def +++ /dev/null @@ -1,8 +0,0 @@ -NAME DocView -DESCRIPTION 'Document architecture test' -EXETYPE WINDOWS -STUB 'WINSTUB.EXE' -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE -HEAPSIZE 1024 -STACKSIZE 8192 diff --git a/samples/docvwmdi/docview.h b/samples/docvwmdi/docview.h deleted file mode 100644 index 9f9b695300..0000000000 --- a/samples/docvwmdi/docview.h +++ /dev/null @@ -1,63 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: docview.h -// Purpose: Document/view demo -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -// #pragma interface "docview.h" -#endif - -#ifndef __DOCVIEWSAMPLEH__ -#define __DOCVIEWSAMPLEH__ - -#include "wx/docmdi.h" - -class wxDocManager; - -// Define a new application -class MyApp: public wxApp -{ - public: - MyApp(void); - bool OnInit(void); - int OnExit(void); - - wxMDIChildFrame *CreateChildFrame(wxDocument *doc, wxView *view, bool isCanvas); - - protected: - wxDocManager* m_docManager; -}; - -DECLARE_APP(MyApp) - -// Define a new frame -class MyCanvas; -class MyFrame: public wxDocMDIParentFrame -{ - DECLARE_CLASS(MyFrame) - public: - wxMenu *editMenu; - - MyFrame(wxDocManager *manager, wxFrame *frame, const wxString& title, const wxPoint& pos, const wxSize& size, - const long type); - - void OnAbout(wxCommandEvent& event); - MyCanvas *CreateCanvas(wxView *view, wxFrame *parent); - -DECLARE_EVENT_TABLE() -}; - -extern MyFrame *GetMainFrame(void); - -#define DOCVIEW_CUT 1 -#define DOCVIEW_ABOUT 2 - -extern bool singleWindowMode; - -#endif diff --git a/samples/docvwmdi/docview.rc b/samples/docvwmdi/docview.rc deleted file mode 100644 index b9880e453b..0000000000 --- a/samples/docvwmdi/docview.rc +++ /dev/null @@ -1,6 +0,0 @@ -doc ICON "doc.ico" -chart ICON "chart.ico" -notepad ICON "notepad.ico" - -#include "wx/msw/wx.rc" - diff --git a/samples/docvwmdi/makefile.b32 b/samples/docvwmdi/makefile.b32 deleted file mode 100644 index 8f52125c0e..0000000000 --- a/samples/docvwmdi/makefile.b32 +++ /dev/null @@ -1,16 +0,0 @@ -# -# File: makefile.b32 -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: -# -# Makefile : Builds sample for 32-bit BC++ - -WXDIR = $(WXWIN) - -TARGET=docview -OBJECTS = $(TARGET).obj view.obj doc.obj - -!include $(WXDIR)\src\makeprog.b32 - diff --git a/samples/docvwmdi/makefile.bcc b/samples/docvwmdi/makefile.bcc deleted file mode 100644 index 6efb0aa0d2..0000000000 --- a/samples/docvwmdi/makefile.bcc +++ /dev/null @@ -1,19 +0,0 @@ -# -# File: makefile.bcc -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Builds a BC++ 16-bit sample - -!if "$(WXWIN)" == "" -!error You must define the WXWIN variable in autoexec.bat, e.g. WXWIN=c:\wx -!endif - -WXDIR = $(WXWIN) - -TARGET=docview -OBJECTS=$(TARGET).obj - -!include $(WXDIR)\src\makeprog.bcc - diff --git a/samples/docvwmdi/makefile.dos b/samples/docvwmdi/makefile.dos deleted file mode 100644 index 04760719b3..0000000000 --- a/samples/docvwmdi/makefile.dos +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.dos -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Makefile : Builds 16-bit sample, VC++ 1.5 -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -WXDIR = $(WXWIN) - -TARGET=docview -OBJECTS=$(TARGET).obj doc.obj view.obj - -!include $(WXDIR)\src\makeprog.msc - diff --git a/samples/docvwmdi/makefile.g95 b/samples/docvwmdi/makefile.g95 deleted file mode 100644 index 5fe3bf52db..0000000000 --- a/samples/docvwmdi/makefile.g95 +++ /dev/null @@ -1,43 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile for docview example (UNIX). - -WXDIR = ../.. - -# All common UNIX compiler flags and options are now in -# this central makefile. -include $(WXDIR)/src/makeg95.env - -OBJECTS = $(OBJDIR)/docview.$(OBJSUFF) $(OBJDIR)/view.$(OBJSUFF) $(OBJDIR)/doc.$(OBJSUFF)\ - $(OBJDIR)/docview_resources.$(OBJSUFF) - - -all: $(OBJDIR) docview$(GUISUFFIX) - -$(OBJDIR): - mkdir $(OBJDIR) - -docview$(GUISUFFIX): $(OBJECTS) $(WXLIB) - $(CC) $(LDFLAGS) -o docview$(GUISUFFIX)$(EXESUFF) $(OBJECTS) $(XVIEW_LINK) $(LDLIBS) - -$(OBJDIR)/docview.$(OBJSUFF): docview.$(SRCSUFF) docview.h doc.h view.h - $(CC) -c $(CPPFLAGS) -o $@ docview.$(SRCSUFF) - -$(OBJDIR)/doc.$(OBJSUFF): doc.$(SRCSUFF) doc.h - $(CC) -c $(CPPFLAGS) -o $@ doc.$(SRCSUFF) - -$(OBJDIR)/view.$(OBJSUFF): view.$(SRCSUFF) view.h - $(CC) -c $(CPPFLAGS) -o $@ view.$(SRCSUFF) - -$(OBJDIR)/docview_resources.o: docview.rc - $(RESCOMP) -i docview.rc -o $(OBJDIR)/docview_resources.o $(RESFLAGS) - -clean: - rm -f $(OBJECTS) docview$(GUISUFFIX).exe core *.rsc *.res diff --git a/samples/docvwmdi/makefile.unx b/samples/docvwmdi/makefile.unx deleted file mode 100644 index 7b3a448e48..0000000000 --- a/samples/docvwmdi/makefile.unx +++ /dev/null @@ -1,16 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1998 -# Updated: -# Copyright: (c) 1998 Julian Smart -# -# "%W% %G%" -# -# Makefile for docvwmdi example (UNIX). - -PROGRAM=docview - -OBJECTS=$(PROGRAM).o doc.o view.o - -include ../../src/makeprog.env diff --git a/samples/docvwmdi/makefile.vc b/samples/docvwmdi/makefile.vc deleted file mode 100644 index 9b20d64402..0000000000 --- a/samples/docvwmdi/makefile.vc +++ /dev/null @@ -1,18 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: (c) Julian Smart -# -# Makefile : Builds sample (VC++, WIN32) -# Use FINAL=1 argument to nmake to build final version with no debug info. - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -PROGRAM=docview -OBJECTS = $(PROGRAM).obj doc.obj view.obj - -!include $(WXDIR)\src\makeprog.vc - diff --git a/samples/docvwmdi/makefile.wat b/samples/docvwmdi/makefile.wat deleted file mode 100644 index c701e12cc8..0000000000 --- a/samples/docvwmdi/makefile.wat +++ /dev/null @@ -1,15 +0,0 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 -# -# - -WXDIR = $(%WXWIN) - -PROGRAM = docview -OBJECTS = $(PROGRAM).obj view.obj doc.obj - -!include $(WXDIR)\src\makeprog.wat - - diff --git a/samples/docvwmdi/notepad.ico b/samples/docvwmdi/notepad.ico deleted file mode 100644 index 5d07bf79a3816057ef95a18fb91f23871092fc31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmbVKF^j7-RFR+mfB7od;Od^;vO}ZfBQ&LJ2V?-jCDLL~C#NZagM;I%j zcDqx>sM_S|{9If6_#*$<|E|8A!Y23~4O?_U-zu)WBy=!zs+|>dTJJ4Cpn>GLVSetTitle("DrawingView"); - - canvas = GetMainFrame()->CreateCanvas(this, frame); -#ifdef __X__ - // X seems to require a forced resize - int x, y; - frame->GetSize(&x, &y); - frame->SetSize(-1, -1, x, y); -#endif - frame->Show(TRUE); - - return TRUE; -} - -// Sneakily gets used for default print/preview -// as well as drawing on the screen. -void DrawingView::OnDraw(wxDC *dc) -{ - dc->SetFont(*wxNORMAL_FONT); - dc->SetPen(*wxBLACK_PEN); - - wxNode *node = ((DrawingDocument *)GetDocument())->GetDoodleSegments().First(); - while (node) - { - DoodleSegment *seg = (DoodleSegment *)node->Data(); - seg->Draw(dc); - node = node->Next(); - } -} - -void DrawingView::OnUpdate(wxView *WXUNUSED(sender), wxObject *WXUNUSED(hint)) -{ - if (canvas) - canvas->Refresh(); - -/* Is the following necessary? -#ifdef __WXMSW__ - if (canvas) - canvas->Refresh(); -#else - if (canvas) - { - wxClientDC dc(canvas); - dc.Clear(); - OnDraw(& dc); - } -#endif -*/ -} - -// Clean up windows used for displaying the view. -bool DrawingView::OnClose(bool deleteWindow) -{ - if (!GetDocument()->Close()) - return FALSE; - - // Clear the canvas in case we're in single-window mode, - // and the canvas stays. - canvas->Clear(); - canvas->view = (wxView *) NULL; - canvas = (MyCanvas *) NULL; - - wxString s(wxTheApp->GetAppName()); - if (frame) - frame->SetTitle(s); - - SetFrame((wxFrame*)NULL); - - Activate(FALSE); - - if (deleteWindow) - { - delete frame; - return TRUE; - } - return TRUE; -} - -void DrawingView::OnCut(wxCommandEvent& WXUNUSED(event) ) -{ - DrawingDocument *doc = (DrawingDocument *)GetDocument(); - doc->GetCommandProcessor()->Submit(new DrawingCommand((const wxString) "Cut Last Segment", DOODLE_CUT, doc, (DoodleSegment *) NULL)); -} - -IMPLEMENT_DYNAMIC_CLASS(TextEditView, wxView) - -bool TextEditView::OnCreate(wxDocument *doc, long WXUNUSED(flags) ) -{ - frame = wxGetApp().CreateChildFrame(doc, this, FALSE); - - int width, height; - frame->GetClientSize(&width, &height); - textsw = new MyTextWindow(this, frame, wxPoint(0, 0), wxSize(width, height), wxTE_MULTILINE); - frame->SetTitle("TextEditView"); - -#ifdef __X__ - // X seems to require a forced resize - int x, y; - frame->GetSize(&x, &y); - frame->SetSize(-1, -1, x, y); -#endif - - frame->Show(TRUE); - Activate(TRUE); - - return TRUE; -} - -// Handled by wxTextWindow -void TextEditView::OnDraw(wxDC *WXUNUSED(dc) ) -{ -} - -void TextEditView::OnUpdate(wxView *WXUNUSED(sender), wxObject *WXUNUSED(hint) ) -{ -} - -bool TextEditView::OnClose(bool deleteWindow) -{ - if (!GetDocument()->Close()) - return FALSE; - - Activate(FALSE); - - if (deleteWindow) - { - delete frame; - return TRUE; - } - return TRUE; -} - -/* - * Window implementations - */ - -BEGIN_EVENT_TABLE(MyCanvas, wxScrolledWindow) - EVT_MOUSE_EVENTS(MyCanvas::OnMouseEvent) -END_EVENT_TABLE() - -// Define a constructor for my canvas -MyCanvas::MyCanvas(wxView *v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style): - wxScrolledWindow(frame, -1, pos, size, style) -{ - view = v; -} - -// Define the repainting behaviour -void MyCanvas::OnDraw(wxDC& dc) -{ - if (view) - view->OnDraw(& dc); -} - -// This implements a tiny doodling program. Drag the mouse using -// the left button. -void MyCanvas::OnMouseEvent(wxMouseEvent& event) -{ - if (!view) - return; - - static DoodleSegment *currentSegment = (DoodleSegment *) NULL; - - wxClientDC dc(this); - PrepareDC(dc); - - dc.SetPen(*wxBLACK_PEN); - - wxPoint pt(event.GetLogicalPosition(dc)); - - if (currentSegment && event.LeftUp()) - { - if (currentSegment->lines.Number() == 0) - { - delete currentSegment; - currentSegment = (DoodleSegment *) NULL; - } - else - { - // We've got a valid segment on mouse left up, so store it. - DrawingDocument *doc = (DrawingDocument *)view->GetDocument(); - - doc->GetCommandProcessor()->Submit(new DrawingCommand("Add Segment", DOODLE_ADD, doc, currentSegment)); - - view->GetDocument()->Modify(TRUE); - currentSegment = (DoodleSegment *) NULL; - } - } - - if (xpos > -1 && ypos > -1 && event.Dragging()) - { - if (!currentSegment) - currentSegment = new DoodleSegment; - - DoodleLine *newLine = new DoodleLine; - newLine->x1 = (long)xpos; - newLine->y1 = (long)ypos; - newLine->x2 = pt.x; - newLine->y2 = pt.y; - currentSegment->lines.Append(newLine); - - dc.DrawLine( (long)xpos, (long)ypos, pt.x, pt.y); - } - xpos = pt.x; - ypos = pt.y; -} - -// Define a constructor for my text subwindow -MyTextWindow::MyTextWindow(wxView *v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style): - wxTextCtrl(frame, -1, "", pos, size, style) -{ - view = v; -} - - diff --git a/samples/docvwmdi/view.h b/samples/docvwmdi/view.h deleted file mode 100644 index 2f068c7c04..0000000000 --- a/samples/docvwmdi/view.h +++ /dev/null @@ -1,79 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: view.h -// Purpose: View classes -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -// #pragma interface -#endif - -#ifndef __VIEWSAMPLEH__ -#define __VIEWSAMPLEH__ - -#include "wx/docview.h" - -class MyCanvas: public wxScrolledWindow -{ - public: - wxView *view; - - MyCanvas(wxView *v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style); - virtual void OnDraw(wxDC& dc); - void OnMouseEvent(wxMouseEvent& event); - -DECLARE_EVENT_TABLE() -}; - -class MyTextWindow: public wxTextCtrl -{ - public: - wxView *view; - - MyTextWindow(wxView *v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style); -}; - -class DrawingView: public wxView -{ - DECLARE_DYNAMIC_CLASS(DrawingView) - private: - public: - wxFrame *frame; - MyCanvas *canvas; - - DrawingView(void) { canvas = (MyCanvas *) NULL; frame = (wxFrame *) NULL; }; - ~DrawingView(void) {}; - - bool OnCreate(wxDocument *doc, long flags); - void OnDraw(wxDC *dc); - void OnUpdate(wxView *sender, wxObject *hint = (wxObject *) NULL); - bool OnClose(bool deleteWindow = TRUE); - - void OnCut(wxCommandEvent& event); - -DECLARE_EVENT_TABLE() -}; - -class TextEditView: public wxView -{ - DECLARE_DYNAMIC_CLASS(TextEditView) - private: - public: - wxFrame *frame; - MyTextWindow *textsw; - - TextEditView(wxDocument *doc = (wxDocument *) NULL): wxView(doc) { frame = (wxFrame *) NULL; textsw = (MyTextWindow *) NULL; } - ~TextEditView(void) {} - - bool OnCreate(wxDocument *doc, long flags); - void OnDraw(wxDC *dc); - void OnUpdate(wxView *sender, wxObject *hint = (wxObject *) NULL); - bool OnClose(bool deleteWindow = TRUE); -}; - -#endif diff --git a/samples/dynamic/.cvsignore b/samples/dynamic/.cvsignore deleted file mode 100644 index 7957c41216..0000000000 --- a/samples/dynamic/.cvsignore +++ /dev/null @@ -1,3 +0,0 @@ -Linux -linux-gnu -linux \ No newline at end of file diff --git a/samples/dynamic/Makefile b/samples/dynamic/Makefile deleted file mode 100644 index bccce53f76..0000000000 --- a/samples/dynamic/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../../setup/general/makeapp diff --git a/samples/dynamic/Makefile.in b/samples/dynamic/Makefile.in deleted file mode 100644 index bebee4cb44..0000000000 --- a/samples/dynamic/Makefile.in +++ /dev/null @@ -1,26 +0,0 @@ -# WXXT base directory -WXBASEDIR=@WXBASEDIR@ - -# set the OS type for compilation -OS=@OS@ -# compile a library only -RULE=bin - -# define library name -BIN_TARGET=dynamic -# define library sources -BIN_SRC=\ -dynamic.cpp - -#define library objects -BIN_OBJ=\ -dynamic.o - -# additional things needed to link -BIN_LINK= - -# additional things needed to compile -ADD_COMPILE= - -# include the definitions now -include ../../../template.mak diff --git a/samples/dynamic/dynamic.cpp b/samples/dynamic/dynamic.cpp deleted file mode 100644 index 44b4d0188c..0000000000 --- a/samples/dynamic/dynamic.cpp +++ /dev/null @@ -1,113 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dynamic.cpp -// Purpose: Dynamic events wxWindows sample -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dynamic.cpp" -#pragma interface "dynamic.cpp" -#endif - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#if defined(__WXGTK__) || defined(__WXMOTIF__) -#include "mondrian.xpm" -#endif - -// Define a new application type -class MyApp: public wxApp -{ public: - bool OnInit(void); -}; - -// Define a new frame type -class MyFrame: public wxFrame -{ public: - MyFrame(wxFrame *frame, char *title, int x, int y, int w, int h); - - public: - void OnQuit(wxCommandEvent& event); - void OnAbout(wxCommandEvent& event); - bool OnClose(void) { return TRUE; } -}; - -// ID for the menu commands -#define DYNAMIC_QUIT 1 -#define DYNAMIC_TEXT 101 -#define DYNAMIC_ABOUT 102 - -// Create a new application object -IMPLEMENT_APP (MyApp) - -// `Main program' equivalent, creating windows and returning main app frame -bool MyApp::OnInit(void) -{ - // Create the main frame window - MyFrame *frame = new MyFrame(NULL, "Dynamic wxWindows App", 50, 50, 450, 340); - - frame->Connect( DYNAMIC_QUIT, -1, wxEVT_COMMAND_MENU_SELECTED, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) MyFrame::OnQuit ); - frame->Connect( DYNAMIC_ABOUT, -1, wxEVT_COMMAND_MENU_SELECTED, (wxObjectEventFunction) (wxEventFunction) (wxCommandEventFunction) MyFrame::OnAbout ); - - // Give it an icon -#ifdef __WXMSW__ - frame->SetIcon(wxIcon("mondrian")); -#else - frame->SetIcon(wxIcon(mondrian_xpm)); -#endif - - // Make a menubar - wxMenu *file_menu = new wxMenu; - - file_menu->Append(DYNAMIC_ABOUT, "&About"); - file_menu->Append(DYNAMIC_QUIT, "E&xit"); - wxMenuBar *menu_bar = new wxMenuBar; - menu_bar->Append(file_menu, "&File"); - frame->SetMenuBar(menu_bar); - - // Make a panel with a message - wxPanel *panel = new wxPanel(frame, -1, wxPoint(0, 0), wxSize(400, 200), wxTAB_TRAVERSAL); - - (void)new wxStaticText(panel, 311, "Hello!", wxPoint(10, 10), wxSize(-1, -1), 0); - - // Show the frame - frame->Show(TRUE); - - SetTopWindow(frame); - - return TRUE; -} - -// My frame constructor -MyFrame::MyFrame(wxFrame *frame, char *title, int x, int y, int w, int h): - wxFrame(frame, -1, title, wxPoint(x, y), wxSize(w, h)) -{} - -void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event) ) -{ - Close(TRUE); -} - -void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event) ) -{ - wxMessageDialog dialog(this, "This demonstrates dynamic event handling", - "About Dynamic", wxYES_NO|wxCANCEL); - - dialog.ShowModal(); -} - - diff --git a/samples/dynamic/dynamic.def b/samples/dynamic/dynamic.def deleted file mode 100644 index 6d63d054d5..0000000000 --- a/samples/dynamic/dynamic.def +++ /dev/null @@ -1,8 +0,0 @@ -NAME Dynamic -DESCRIPTION 'Dynamic event handler test' -EXETYPE WINDOWS -STUB 'WINSTUB.EXE' -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE -HEAPSIZE 4048 -STACKSIZE 16000 diff --git a/samples/dynamic/dynamic.rc b/samples/dynamic/dynamic.rc deleted file mode 100644 index 7655c62a4c..0000000000 --- a/samples/dynamic/dynamic.rc +++ /dev/null @@ -1,3 +0,0 @@ -mondrian ICON "mondrian.ico" -#include "wx/msw/wx.rc" - diff --git a/samples/dynamic/makefile.b32 b/samples/dynamic/makefile.b32 deleted file mode 100644 index d48780825c..0000000000 --- a/samples/dynamic/makefile.b32 +++ /dev/null @@ -1,16 +0,0 @@ -# -# File: makefile.b32 -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: -# -# Makefile : Builds sample for 32-bit BC++ - -WXDIR = $(WXWIN) - -TARGET=dynamic -OBJECTS = $(TARGET).obj - -!include $(WXDIR)\src\makeprog.b32 - diff --git a/samples/dynamic/makefile.bcc b/samples/dynamic/makefile.bcc deleted file mode 100644 index 23a865ee63..0000000000 --- a/samples/dynamic/makefile.bcc +++ /dev/null @@ -1,19 +0,0 @@ -# -# File: makefile.bcc -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Builds a BC++ 16-bit sample - -!if "$(WXWIN)" == "" -!error You must define the WXWIN variable in autoexec.bat, e.g. WXWIN=c:\wx -!endif - -WXDIR = $(WXWIN) - -TARGET=dynamic -OBJECTS=$(TARGET).obj - -!include $(WXDIR)\src\makeprog.bcc - diff --git a/samples/dynamic/makefile.dos b/samples/dynamic/makefile.dos deleted file mode 100644 index d4109ed7dc..0000000000 --- a/samples/dynamic/makefile.dos +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.dos -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Makefile : Builds 16-bit sample, VC++ 1.5 -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -WXDIR = $(WXWIN) - -TARGET=dynamic -OBJECTS=$(TARGET).obj - -!include $(WXDIR)\src\makeprog.msc - diff --git a/samples/dynamic/makefile.g95 b/samples/dynamic/makefile.g95 deleted file mode 100644 index c5f0d229fc..0000000000 --- a/samples/dynamic/makefile.g95 +++ /dev/null @@ -1,37 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile for dynamic example (UNIX). - -WXDIR = ../.. - -# All common UNIX compiler flags and options are now in -# this central makefile. -include $(WXDIR)/src/makeg95.env - -OBJECTS = $(OBJDIR)/dynamic.$(OBJSUFF) $(OBJDIR)/dynamic_resources.$(OBJSUFF) - -all: $(OBJDIR) dynamic$(GUISUFFIX)$(EXESUFF) - -wx: - -$(OBJDIR): - mkdir $(OBJDIR) - -dynamic$(GUISUFFIX)$(EXESUFF): $(OBJECTS) $(WXLIB) - $(CC) $(LDFLAGS) -o dynamic$(GUISUFFIX)$(EXESUFF) $(OBJECTS) $(LDLIBS) - -$(OBJDIR)/dynamic.$(OBJSUFF): dynamic.$(SRCSUFF) - $(CC) -c $(CPPFLAGS) -o $@ dynamic.$(SRCSUFF) - -$(OBJDIR)/dynamic_resources.o: dynamic.rc - $(RESCOMP) -i dynamic.rc -o $(OBJDIR)/dynamic_resources.o $(RESFLAGS) - -clean: - rm -f $(OBJECTS) dynamic$(GUISUFFIX).exe core *.rsc *.res diff --git a/samples/dynamic/makefile.unx b/samples/dynamic/makefile.unx deleted file mode 100644 index c4c52d7f6e..0000000000 --- a/samples/dynamic/makefile.unx +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1998 -# Updated: -# Copyright: (c) 1998 Julian Smart -# -# "%W% %G%" -# -# Makefile for dynamic example (UNIX). - -PROGRAM=dynamic - -OBJECTS=$(PROGRAM).o - -include ../../src/makeprog.env - diff --git a/samples/dynamic/makefile.vc b/samples/dynamic/makefile.vc deleted file mode 100644 index 8b9485251a..0000000000 --- a/samples/dynamic/makefile.vc +++ /dev/null @@ -1,18 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: (c) Julian Smart -# -# Makefile : Builds sample (VC++, WIN32) -# Use FINAL=1 argument to nmake to build final version with no debug info. - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -PROGRAM=dynamic -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.vc - diff --git a/samples/dynamic/minimal.cpp b/samples/dynamic/minimal.cpp deleted file mode 100644 index 354d3aaec4..0000000000 --- a/samples/dynamic/minimal.cpp +++ /dev/null @@ -1,113 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: minimal.cpp -// Purpose: Dynamic events wxWindows sample -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "minimal.cpp" -#pragma interface "minimal.cpp" -#endif - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#ifdef __WXGTK__ -#include "mondrian.xpm" -#endif - -// Define a new application type -class MyApp: public wxApp -{ public: - bool OnInit(void); -}; - -// Define a new frame type -class MyFrame: public wxFrame -{ public: - MyFrame(wxFrame *frame, char *title, int x, int y, int w, int h); - - public: - void OnQuit(wxCommandEvent& event); - void OnAbout(wxCommandEvent& event); - bool OnClose(void) { return TRUE; } -}; - -// ID for the menu commands -#define MINIMAL_QUIT 1 -#define MINIMAL_TEXT 101 -#define MINIMAL_ABOUT 102 - -// Create a new application object -IMPLEMENT_APP (MyApp) - -// `Main program' equivalent, creating windows and returning main app frame -bool MyApp::OnInit(void) -{ - // Create the main frame window - MyFrame *frame = new MyFrame((wxFrame *) NULL, (char *) "Minimal wxWindows App", 50, 50, 450, 340); - - frame->Connect( MINIMAL_QUIT, -1, wxEVT_COMMAND_MENU_SELECTED, (wxObjectEventFunction)MyFrame::OnQuit ); - frame->Connect( MINIMAL_ABOUT, -1, wxEVT_COMMAND_MENU_SELECTED, (wxObjectEventFunction)MyFrame::OnAbout ); - - // Give it an icon -#ifdef __WXMSW__ - frame->SetIcon(wxIcon("mondrian")); -#else - frame->SetIcon(wxIcon(mondrian_xpm)); -#endif - - // Make a menubar - wxMenu *file_menu = new wxMenu; - - file_menu->Append(MINIMAL_ABOUT, "&About"); - file_menu->Append(MINIMAL_QUIT, "E&xit"); - wxMenuBar *menu_bar = new wxMenuBar; - menu_bar->Append(file_menu, "&File"); - frame->SetMenuBar(menu_bar); - - // Make a panel with a message - wxPanel *panel = new wxPanel(frame, -1, wxPoint(0, 0), wxSize(400, 200), wxTAB_TRAVERSAL); - - (void)new wxStaticText(panel, 311, "Hello!", wxPoint(10, 10), wxSize(-1, -1), 0); - - // Show the frame - frame->Show(TRUE); - - SetTopWindow(frame); - - return TRUE; -} - -// My frame constructor -MyFrame::MyFrame(wxFrame *frame, char *title, int x, int y, int w, int h): - wxFrame(frame, -1, title, wxPoint(x, y), wxSize(w, h)) -{} - -void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event) ) -{ - Close(TRUE); -} - -void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event) ) -{ - wxMessageDialog dialog(this, "This is a minimal sample\nA second line in the message box", - "About Minimal", wxYES_NO|wxCANCEL); - - dialog.ShowModal(); -} - - diff --git a/samples/dynamic/mondrian.ico b/samples/dynamic/mondrian.ico deleted file mode 100644 index 2310c5d275a87af295d5ea8dc79ea417a5e74c53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmZQzU<5)11px*Sc)`TLAO@s0fLH;D9e|jTfdxnc0ZFindOrCreateFont(12, wxROMAN, wxNORMAL, wxNORMAL); -#else - m_font = wxTheFontList->FindOrCreateFont(10, wxSWISS, wxNORMAL, wxNORMAL); -#endif - SetBackgroundColour(FortyApp::BackgroundColour()); - AllowDoubleClick(TRUE); - - m_handCursor = new wxCursor(wxCURSOR_HAND); - m_arrowCursor = new wxCursor(wxCURSOR_ARROW); - - wxString name = wxTheApp->GetAppName(); - if (name.Length() <= 0) name = "forty"; - m_scoreFile = new ScoreFile(name); - m_game = new Game(0, 0, 0); - m_game->Deal(); -} - - -FortyCanvas::~FortyCanvas() -{ - UpdateScores(); - delete m_game; - delete m_scoreFile; -} - - -/* -Write the current player's score back to the score file -*/ -void FortyCanvas::UpdateScores() -{ - if (m_player.Length() > 0 && m_scoreFile && m_game) - { - m_scoreFile->WritePlayersScore( - m_player, - m_game->GetNumWins(), - m_game->GetNumGames(), - m_game->GetScore() - ); - } -} - - -void FortyCanvas::OnDraw(wxDC& dc) -{ - dc.SetFont(* m_font); - m_game->Redraw(dc); - - // if player name not set (and selection dialog is not displayed) - // then ask the player for their name - if (m_player.Length() == 0 && !m_playerDialog) - { - m_playerDialog = new PlayerSelectionDialog(this, m_scoreFile); - m_playerDialog->ShowModal(); - m_player = m_playerDialog->GetPlayersName(); - if (m_player.Length() > 0) - { - // user entered a name - lookup their score - int wins, games, score; - m_scoreFile->ReadPlayersScore(m_player, wins, games, score); - m_game->NewPlayer(wins, games, score); - m_game->DisplayScore(dc); - delete m_playerDialog; - m_playerDialog = 0; - Refresh(); - } - else - { - // user cancelled the dialog - exit the app - ((wxFrame*)GetParent())->Close(TRUE); - } - } -} - -/* -Called when the main frame is closed -*/ -bool FortyCanvas::OnClose() -{ - if (m_game->InPlay() && - wxMessageBox("Are you sure you want to\nabandon the current game?", - "Warning", wxYES_NO | wxICON_QUESTION) == wxNO) - { - return FALSE; - } - return TRUE; -} - -void FortyCanvas::OnMouseEvent(wxMouseEvent& event) -{ - int mouseX = (int)event.GetX(); - int mouseY = (int)event.GetY(); - - wxClientDC dc(this); - PrepareDC(dc); - dc.SetFont(* m_font); - - if (event.LeftDClick()) - { - if (m_leftBtnDown) - { - m_leftBtnDown = FALSE; - ReleaseMouse(); - m_game->LButtonUp(dc, mouseX, mouseY); - } - m_game->LButtonDblClk(dc, mouseX, mouseY); - } - else if (event.LeftDown()) - { - if (!m_leftBtnDown) - { - m_leftBtnDown = TRUE; - CaptureMouse(); - m_game->LButtonDown(dc, mouseX, mouseY); - } - } - else if (event.LeftUp()) - { - if (m_leftBtnDown) - { - m_leftBtnDown = FALSE; - ReleaseMouse(); - m_game->LButtonUp(dc, mouseX, mouseY); - } - } - else if (event.RightDown() && !event.LeftIsDown()) - { - // only allow right button undo if m_rightBtnUndo is TRUE - if (m_rightBtnUndo) - { - if (event.ControlDown() || event.ShiftDown()) - { - m_game->Redo(dc); - } - else - { - m_game->Undo(dc); - } - } - } - else if (event.Dragging()) - { - m_game->MouseMove(dc, mouseX, mouseY); - } - - if (!event.LeftIsDown()) - { - SetCursorStyle(mouseX, mouseY); - } -} - -void FortyCanvas::SetCursorStyle(int x, int y) -{ - if (m_game->HaveYouWon()) - { - if (wxMessageBox("Do you wish to play again?", - "Well Done, You have won!", wxYES_NO | wxICON_QUESTION) == wxYES) - { - m_game->Deal(); - - wxClientDC dc(this); - PrepareDC(dc); - dc.SetFont(* m_font); - m_game->Redraw(dc); - } - else - { - // user cancelled the dialog - exit the app - ((wxFrame*)GetParent())->Close(TRUE); - } - } - - // Only set cursor to a hand if 'helping hand' is enabled and - // the card under the cursor can go somewhere - if (m_game->CanYouGo(x, y) && m_helpingHand) - { - SetCursor(* m_handCursor); - } - else - { - SetCursor(* m_arrowCursor); - } - -} - -void FortyCanvas::NewGame() -{ - m_game->Deal(); - Refresh(); -} - -void FortyCanvas::Undo() -{ - wxClientDC dc(this); - PrepareDC(dc); - dc.SetFont(* m_font); - m_game->Undo(dc); -} - -void FortyCanvas::Redo() -{ - wxClientDC dc(this); - PrepareDC(dc); - dc.SetFont(* m_font); - m_game->Redo(dc); -} diff --git a/samples/forty/canvas.h b/samples/forty/canvas.h deleted file mode 100644 index 368d6c6b61..0000000000 --- a/samples/forty/canvas.h +++ /dev/null @@ -1,56 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: canvas.h -// Purpose: Forty Thieves patience game -// Author: Chris Breeze -// Modified by: -// Created: 21/07/97 -// RCS-ID: $Id$ -// Copyright: (c) 1993-1998 Chris Breeze -// Licence: wxWindows licence -//--------------------------------------------------------------------------- -// Last modified: 22nd July 1998 - ported to wxWindows 2.0 -///////////////////////////////////////////////////////////////////////////// -#ifndef _CANVAS_H_ -#define _CANVAS_H_ - -class Card; -class Game; -class ScoreFile; -class PlayerSelectionDialog; - -class FortyCanvas: public wxScrolledWindow -{ -public: - FortyCanvas(wxWindow* parent, int x, int y, int w, int h); - virtual ~FortyCanvas(); - - virtual void OnDraw(wxDC& dc); - bool OnClose(); - void OnMouseEvent(wxMouseEvent& event); - void SetCursorStyle(int x, int y); - - void NewGame(); - void Undo(); - void Redo(); - - ScoreFile* GetScoreFile() const { return m_scoreFile; } - void UpdateScores(); - void EnableHelpingHand(bool enable) { m_helpingHand = enable; } - void EnableRightButtonUndo(bool enable) { m_rightBtnUndo = enable; } - - DECLARE_EVENT_TABLE() - -private: - wxFont* m_font; - Game* m_game; - ScoreFile* m_scoreFile; - wxCursor* m_arrowCursor; - wxCursor* m_handCursor; - bool m_helpingHand; - bool m_rightBtnUndo; - wxString m_player; - PlayerSelectionDialog* m_playerDialog; - bool m_leftBtnDown; -}; - -#endif diff --git a/samples/forty/card.cpp b/samples/forty/card.cpp deleted file mode 100644 index 691347254c..0000000000 --- a/samples/forty/card.cpp +++ /dev/null @@ -1,358 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: card.cpp -// Purpose: Forty Thieves patience game -// Author: Chris Breeze -// Modified by: -// Created: 21/07/97 -// RCS-ID: $Id$ -// Copyright: (c) 1993-1998 Chris Breeze -// Licence: wxWindows licence -//--------------------------------------------------------------------------- -// Last modified: 22nd July 1998 - ported to wxWindows 2.0 -///////////////////////////////////////////////////////////////////////////// -//+-------------------------------------------------------------+ -//| Description -//| A class for drawing playing cards. -//| Currently assumes that the card symbols have been -//| loaded into hbmap_symbols and the pictures for the -//| Jack, Queen and King have been loaded into -//| hbmap_pictures. -//+-------------------------------------------------------------+ - -#ifdef __GNUG__ -#pragma implementation -#pragma interface -#endif - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include -#include -#include -#include "forty.h" -#include "card.h" - -#ifdef __WXGTK__ -#include "pictures.xpm" -#include "symbols.xbm" -#endif - -wxBitmap* Card::m_pictureBmap = 0; -wxBitmap* Card::m_symbolBmap = 0; - - -//+-------------------------------------------------------------+ -//| Card::Card() | -//+-------------------------------------------------------------+ -//| Description: | -//| Constructor for a playing card. | -//| Checks that the value is in the range 1..52 and then | -//| initialises the suit, colour, pipValue and wayUp. | -//+-------------------------------------------------------------+ -Card::Card(int value, WayUp way_up) : - m_wayUp(way_up) -{ - if (!m_symbolBmap) - { -#ifdef __WXMSW__ - m_symbolBmap = new wxBitmap("CardSymbols", wxBITMAP_TYPE_BMP_RESOURCE); -#else - m_symbolBmap = new wxBitmap(Symbols_bits, Symbols_width, Symbols_height); -#endif - if (!m_symbolBmap->Ok()) - { - ::wxMessageBox("Failed to load bitmap CardSymbols", "Error"); - } - } - if (!m_pictureBmap) - { -#ifdef __WXMSW__ - m_pictureBmap = new wxBitmap("CardPictures", wxBITMAP_TYPE_BMP_RESOURCE); -#else - m_pictureBmap = new wxBitmap(Pictures); -#endif - if (!m_pictureBmap->Ok()) - { - ::wxMessageBox("Failed to load bitmap CardPictures", "Error"); - } - } - - if (value >= 1 && value <= PackSize) - { - switch ((value - 1) / 13) - { - case 0: - m_suit = clubs; - m_colour = black; - break; - case 1: - m_suit = diamonds; - m_colour = red; - break; - case 2: - m_suit = hearts; - m_colour = red; - break; - case 3: - m_suit = spades; - m_colour = black; - break; - } - m_pipValue = 1 + (value - 1) % 13; - m_status = TRUE; - } - else - { - m_status = FALSE; - } -} // Card::Card() - - -//+-------------------------------------------------------------+ -//| Card::~Card() | -//+-------------------------------------------------------------+ -//| Description: | -//| Destructor - nothing to do at present. | -//+-------------------------------------------------------------+ -Card::~Card() -{ -} - - -//+-------------------------------------------------------------+ -//| Card::Erase() | -//+-------------------------------------------------------------+ -//| Description: | -//| Erase the card at (x, y) by drawing a rectangle in the | -//| background colour. | -//+-------------------------------------------------------------+ -void Card::Erase(wxDC& dc, int x, int y) -{ - wxPen* pen = wxThePenList->FindOrCreatePen( - FortyApp::BackgroundColour(), - 1, - wxSOLID - ); - dc.SetPen(* pen); - dc.SetBrush(FortyApp::BackgroundBrush()); - dc.DrawRectangle(x, y, CardWidth, CardHeight); -} // Card::Erase() - - -//+-------------------------------------------------------------+ -//| Card::Draw() | -//+-------------------------------------------------------------+ -//| Description: | -//| Draw the card at (x, y). | -//| If the card is facedown draw the back of the card. | -//| If the card is faceup draw the front of the card. | -//| Cards are not held in bitmaps, instead they are drawn | -//| from their constituent parts when required. | -//| hbmap_symbols contains large and small suit symbols and | -//| pip values. These are copied to the appropriate part of | -//| the card. Picture cards use the pictures defined in | -//| hbmap_pictures. Note that only one picture is defined | -//| for the Jack, Queen and King, unlike a real pack where | -//| each suit is different. | -//| | -//| WARNING: | -//| The locations of these symbols is 'hard-wired' into the | -//| code. Editing the bitmaps or the numbers below will | -//| result in the wrong symbols being displayed. | -//+-------------------------------------------------------------+ -void Card::Draw(wxDC& dc, int x, int y) -{ - wxBrush* backgroundBrush = & dc.GetBackground(); - dc.SetBrush(* wxWHITE_BRUSH); - dc.SetPen(* wxBLACK_PEN); - dc.DrawRoundedRectangle(x, y, CardWidth, CardHeight, 4); - if (m_wayUp == facedown) - { - dc.SetBackground(* wxRED_BRUSH); - dc.SetBackgroundMode(wxSOLID); - wxBrush* brush = wxTheBrushList->FindOrCreateBrush( - "BLACK", wxCROSSDIAG_HATCH - ); - dc.SetBrush(* brush); - - dc.DrawRoundedRectangle( - x + 4, y + 4, - CardWidth - 8, CardHeight - 8, - 2 - ); - } - else - { - wxMemoryDC memoryDC; - memoryDC.SelectObject(* m_symbolBmap); - -// dc.SetBackgroundMode(wxTRANSPARENT); - - dc.SetTextBackground(*wxWHITE); - switch (m_suit) - { - case spades: - case clubs: - dc.SetTextForeground(*wxBLACK); - break; - case diamonds: - case hearts: - dc.SetTextForeground(*wxRED); - break; - } - // Draw the value - dc.Blit(x + 3, y + 3, 6, 7, - &memoryDC, 6 * (m_pipValue - 1), 36, wxCOPY); - dc.Blit(x + CardWidth - 9, y + CardHeight - 11, 6, 7, - &memoryDC, 6 * (m_pipValue - 1), 43, wxCOPY); - - // Draw the pips - dc.Blit(x + 11, y + 3, 7, 7, - &memoryDC, 7 * m_suit, 0, wxCOPY); - dc.Blit(x + CardWidth - 17, y + CardHeight - 11, 7, 7, - &memoryDC, 7 * m_suit, 7, wxCOPY); - - switch (m_pipValue) - { - case 1: - dc.Blit(x - 5 + CardWidth / 2, y - 5 + CardHeight / 2, 11, 11, - &memoryDC, 11 * m_suit, 14, wxCOPY); - break; - - case 3: - dc.Blit(x - 5 + CardWidth / 2, y - 5 + CardHeight / 2, 11, 11, - &memoryDC, 11 * m_suit, 14, wxCOPY); - case 2: - dc.Blit(x - 5 + CardWidth / 2, - y - 5 + CardHeight / 4, 11, 11, - &memoryDC, 11 * m_suit, 14, wxCOPY); - dc.Blit(x - 5 + CardWidth / 2, - y - 5 + 3 * CardHeight / 4, 11, 11, - &memoryDC, 11 * m_suit, 25, wxCOPY); - break; - - case 5: - dc.Blit(x - 5 + CardWidth / 2, y - 5 + CardHeight / 2, 11, 11, - &memoryDC, 11 * m_suit, 14, wxCOPY); - case 4: - dc.Blit(x - 5 + CardWidth / 4, - y - 5 + CardHeight / 4, 11, 11, - &memoryDC, 11 * m_suit, 14, wxCOPY); - dc.Blit(x - 5 + CardWidth / 4, - y - 5 + 3 * CardHeight / 4, 11, 11, - &memoryDC, 11 * m_suit, 25, wxCOPY); - dc.Blit(x - 5 + 3 * CardWidth / 4, - y - 5 + CardHeight / 4, 11, 11, - &memoryDC, 11 * m_suit, 14, wxCOPY); - dc.Blit(x - 5 + 3 * CardWidth / 4, - y - 5 + 3 * CardHeight / 4, 11, 11, - &memoryDC, 11 * m_suit, 25, wxCOPY); - break; - - case 8: - dc.Blit(x - 5 + 5 * CardWidth / 10, - y - 5 + 5 * CardHeight / 8, 11, 11, - &memoryDC, 11 * m_suit, 25, wxCOPY); - case 7: - dc.Blit(x - 5 + 5 * CardWidth / 10, - y - 5 + 3 * CardHeight / 8, 11, 11, - &memoryDC, 11 * m_suit, 14, wxCOPY); - case 6: - dc.Blit(x - 5 + CardWidth / 4, - y - 5 + CardHeight / 4, 11, 11, - &memoryDC, 11 * m_suit, 14, wxCOPY); - dc.Blit(x - 5 + CardWidth / 4, - y - 5 + CardHeight / 2, 11, 11, - &memoryDC, 11 * m_suit, 14, wxCOPY); - dc.Blit(x - 5 + CardWidth / 4, - y - 5 + 3 * CardHeight / 4, 11, 11, - &memoryDC, 11 * m_suit, 25, wxCOPY); - dc.Blit(x - 5 + 3 * CardWidth / 4, - y - 5 + CardHeight / 4, 11, 11, - &memoryDC, 11 * m_suit, 14, wxCOPY); - dc.Blit(x - 5 + 3 * CardWidth / 4, - y - 5 + CardHeight / 2, 11, 11, - &memoryDC, 11 * m_suit, 14, wxCOPY); - dc.Blit(x - 5 + 3 * CardWidth / 4, - y - 5 + 3 * CardHeight / 4, 11, 11, - &memoryDC, 11 * m_suit, 25, wxCOPY); - break; - - case 10: - dc.Blit(x - 5 + CardWidth / 2, - y - 5 + 2 * CardHeight / 3, 11, 11, - &memoryDC, 11 * m_suit, 25, wxCOPY); - case 9: - dc.Blit(x - 5 + CardWidth / 4, - y - 6 + CardHeight / 4, 11, 11, - &memoryDC, 11 * m_suit, 14, wxCOPY); - dc.Blit(x - 5 + CardWidth / 4, - y - 6 + 5 * CardHeight / 12, 11, 11, - &memoryDC, 11 * m_suit, 14, wxCOPY); - dc.Blit(x - 5 + CardWidth / 4, - y - 5 + 7 * CardHeight / 12, 11, 11, - &memoryDC, 11 * m_suit, 25, wxCOPY); - dc.Blit(x - 5 + CardWidth / 4, - y - 5 + 3 * CardHeight / 4, 11, 11, - &memoryDC, 11 * m_suit, 25, wxCOPY); - - dc.Blit(x - 5 + 3 * CardWidth / 4, - y - 6 + CardHeight / 4, 11, 11, - &memoryDC, 11 * m_suit, 14, wxCOPY); - dc.Blit(x - 5 + 3 * CardWidth / 4, - y - 6 + 5 * CardHeight / 12, 11, 11, - &memoryDC, 11 * m_suit, 14, wxCOPY); - dc.Blit(x - 5 + 3 * CardWidth / 4, - y - 5 + 7 * CardHeight / 12, 11, 11, - &memoryDC, 11 * m_suit, 25, wxCOPY); - dc.Blit(x - 5 + 3 * CardWidth / 4, - y - 5 + 3 * CardHeight / 4, 11, 11, - &memoryDC, 11 * m_suit, 25, wxCOPY); - dc.Blit(x - 5 + CardWidth / 2, - y - 5 + CardHeight / 3, 11, 11, - &memoryDC, 11 * m_suit, 14, wxCOPY); - break; - case 11: - case 12: - case 13: - memoryDC.SelectObject(* m_pictureBmap); - dc.Blit(x + 5, y - 5 + CardHeight / 4, 40, 45, - &memoryDC, 40 * (m_pipValue - 11), 0, wxCOPY); - memoryDC.SelectObject(* m_symbolBmap); - dc.Blit(x + 32, y - 3 + CardHeight / 4, 11, 11, - &memoryDC, 11 * m_suit, 14, wxCOPY); - dc.Blit(x + 7, y + 27 + CardHeight / 4, 11, 11, - &memoryDC, 11 * m_suit, 25, wxCOPY); - break; - } - - } - dc.SetBackground(* backgroundBrush); -} // Card:Draw() - - -//+-------------------------------------------------------------+ -//| Card::DrawNullCard() | -//+-------------------------------------------------------------+ -//| Description: | -//| Draws the outline of a card at (x, y). | -//| Used to draw place holders for empty piles of cards. | -//+-------------------------------------------------------------+ -void Card::DrawNullCard(wxDC& dc, int x, int y) -{ - wxPen* pen = wxThePenList->FindOrCreatePen(FortyApp::TextColour(), 1, wxSOLID); - dc.SetBrush(FortyApp::BackgroundBrush()); - dc.SetPen(*pen); - dc.DrawRoundedRectangle(x, y, CardWidth, CardHeight, 4); -} // Card::DrawNullCard() - - diff --git a/samples/forty/card.h b/samples/forty/card.h deleted file mode 100644 index b93ac93dd8..0000000000 --- a/samples/forty/card.h +++ /dev/null @@ -1,65 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: card.h -// Purpose: Forty Thieves patience game -// Author: Chris Breeze -// Modified by: -// Created: 21/07/97 -// RCS-ID: $Id$ -// Copyright: (c) 1993-1998 Chris Breeze -// Licence: wxWindows licence -//--------------------------------------------------------------------------- -// Last modified: 22nd July 1998 - ported to wxWindows 2.0 -///////////////////////////////////////////////////////////////////////////// -//+-------------------------------------------------------------+ -//| Description: | -//| A class for drawing playing cards. | -//| InitCards() must be called before using the Card class, | -//| otherwise the card bitmaps will not be loaded. | -//| CloseCards() must be called before terminating the | -//| program so that the bitmaps are deleted and the memory | -//| given back to Windows. | -//+-------------------------------------------------------------+ -#ifndef _CARD_H_ -#define _CARD_H_ - - // Constants -const int PackSize = 52; -const int CardWidth = 50; -const int CardHeight = 70; - - // Data types -enum Suit { clubs = 0, diamonds = 1, hearts = 2, spades = 3 }; -enum SuitColour { red = 0, black = 1 }; -enum WayUp { faceup, facedown }; - - -//--------------------------------// -// A class defining a single card // -//--------------------------------// -class Card { -public: - Card(int value, WayUp way_up = facedown); - virtual ~Card(); - - void Draw(wxDC& pDC, int x, int y); - static void DrawNullCard(wxDC& pDC, int x, int y); // Draw card place-holder - void Erase(wxDC& pDC, int x, int y); - - void TurnCard(WayUp way_up = faceup) { m_wayUp = way_up; } - WayUp GetWayUp() const { return m_wayUp; } - int GetPipValue() const { return m_pipValue; } - Suit GetSuit() const { return m_suit; } - SuitColour GetColour() const { return m_colour; } - -private: - Suit m_suit; - int m_pipValue; // in the range 1 (Ace) to 13 (King) - SuitColour m_colour; // red or black - bool m_status; - WayUp m_wayUp; - - static wxBitmap* m_symbolBmap; - static wxBitmap* m_pictureBmap; -}; - -#endif // _CARD_H_ diff --git a/samples/forty/cards.ico b/samples/forty/cards.ico deleted file mode 100644 index 35c8379526ed499ff4404fe13da8272e7b84a843..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmcgqJ9Yyh44jSqUfkiz^_DqCjz-B9sP-xx#idKNRAff5A17N!tbma;Xy7d{am@1_ zveyUj;QB?M>EHATSI$6W?%WE%52f^lGq?1D7$XzSKeVPDokJl_NJj&1N0>xDSV|)8 zc1vLg+?nG=F|tC(H48Vwj&okP3q}#DuQ{^-FhdX~WPvvoR+)FQvMBFK38GK diff --git a/samples/forty/forty.cpp b/samples/forty/forty.cpp deleted file mode 100644 index 6195e27f4b..0000000000 --- a/samples/forty/forty.cpp +++ /dev/null @@ -1,261 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: forty.cpp -// Purpose: Forty Thieves patience game -// Author: Chris Breeze -// Modified by: -// Created: 21/07/97 -// RCS-ID: $Id$ -// Copyright: (c) 1993-1998 Chris Breeze -// Licence: wxWindows licence -//--------------------------------------------------------------------------- -// Last modified: 22nd July 1998 - ported to wxWindows 2.0 -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation -#pragma interface -#endif - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include "canvas.h" -#include "forty.h" -#include "scoredg.h" -#ifdef wx_x -#include "cards.xbm" -#endif - -class FortyFrame: public wxFrame -{ -public: - FortyFrame(wxFrame* frame, char* title, int x, int y, int w, int h); - virtual ~FortyFrame(); - - bool OnClose(); - - // Menu callbacks - void NewGame(wxCommandEvent& event); - void Exit(wxCommandEvent& event); - void About(wxCommandEvent& event); - void Undo(wxCommandEvent& event); - void Redo(wxCommandEvent& event); - void Scores(wxCommandEvent& event); - void ToggleRightButtonUndo(wxCommandEvent& event); - void ToggleHelpingHand(wxCommandEvent& event); - - DECLARE_EVENT_TABLE() - -private: - enum MenuCommands { NEW_GAME = 10, SCORES, EXIT, - UNDO, REDO, - RIGHT_BUTTON_UNDO, HELPING_HAND, - ABOUT }; - - wxMenuBar* m_menuBar; - FortyCanvas* m_canvas; -}; - -BEGIN_EVENT_TABLE(FortyFrame, wxFrame) - EVT_MENU(NEW_GAME, FortyFrame::NewGame) - EVT_MENU(EXIT, FortyFrame::Exit) - EVT_MENU(ABOUT, FortyFrame::About) - EVT_MENU(UNDO, FortyFrame::Undo) - EVT_MENU(REDO, FortyFrame::Redo) - EVT_MENU(SCORES, FortyFrame::Scores) - EVT_MENU(RIGHT_BUTTON_UNDO, FortyFrame::ToggleRightButtonUndo) - EVT_MENU(HELPING_HAND, FortyFrame::ToggleHelpingHand) -END_EVENT_TABLE() - -// Create a new application object -IMPLEMENT_APP (FortyApp) - -wxColour* FortyApp::m_backgroundColour = 0; -wxColour* FortyApp::m_textColour = 0; -wxBrush* FortyApp::m_backgroundBrush = 0; - -bool FortyApp::OnInit() -{ - FortyFrame* frame = new FortyFrame( - 0, - "Forty Thieves", - -1, -1, 668, 510 - ); - - // Show the frame - frame->Show(TRUE); - - return TRUE; -} - -const wxColour& FortyApp::BackgroundColour() -{ - if (!m_backgroundColour) - { - m_backgroundColour = new wxColour(0, 128, 0); - } - - return *m_backgroundColour; -} - -const wxBrush& FortyApp::BackgroundBrush() -{ - if (!m_backgroundBrush) - { - m_backgroundBrush = new wxBrush(BackgroundColour(), wxSOLID); - } - - return *m_backgroundBrush; -} - -const wxColour& FortyApp::TextColour() -{ - if (!m_textColour) - { - m_textColour = new wxColour("BLACK"); - } - - return *m_textColour; -} - -// My frame constructor -FortyFrame::FortyFrame(wxFrame* frame, char* title, int x, int y, int w, int h): - wxFrame(frame, -1, title, wxPoint(x, y), wxSize(w, h)) -{ - // set the icon -#ifdef __WXMSW__ - SetIcon(wxIcon("CardsIcon")); -#else -#ifdef GTK_TBD - SetIcon(wxIcon(Cards_bits, Cards_width, Cards_height)); -#endif -#endif - - // Make a menu bar - wxMenu* gameMenu = new wxMenu; - gameMenu->Append(NEW_GAME, "&New", "Start a new game"); - gameMenu->Append(SCORES, "&Scores...", "Displays scores"); - gameMenu->Append(EXIT, "E&xit", "Exits Forty Thieves"); - - wxMenu* editMenu = new wxMenu; - editMenu->Append(UNDO, "&Undo", "Undo the last move"); - editMenu->Append(REDO, "&Redo", "Redo a move that has been undone"); - - wxMenu* optionsMenu = new wxMenu; - optionsMenu->Append(RIGHT_BUTTON_UNDO, - "&Right button undo", - "Enables/disables right mouse button undo and redo", - TRUE - ); - optionsMenu->Append(HELPING_HAND, - "&Helping hand", - "Enables/disables hand cursor when a card can be moved", - TRUE - ); - optionsMenu->Check(HELPING_HAND, TRUE); - optionsMenu->Check(RIGHT_BUTTON_UNDO, TRUE); - - wxMenu* helpMenu = new wxMenu; - helpMenu->Append(ABOUT, "&About", "Displays program version information"); - - m_menuBar = new wxMenuBar; - m_menuBar->Append(gameMenu, "&Game"); - m_menuBar->Append(editMenu, "&Edit"); - m_menuBar->Append(optionsMenu, "&Options"); - m_menuBar->Append(helpMenu, "&Help"); - - SetMenuBar(m_menuBar); - - m_canvas = new FortyCanvas(this, 0, 0, 400, 400); - wxLayoutConstraints* constr = new wxLayoutConstraints; - constr->left.SameAs(this, wxLeft); - constr->top.SameAs(this, wxTop); - constr->right.SameAs(this, wxRight); - constr->height.SameAs(this, wxHeight); - m_canvas->SetConstraints(constr); - - CreateStatusBar(); -} - -FortyFrame::~FortyFrame() -{ -} - -bool FortyFrame::OnClose() -{ - return m_canvas->OnClose(); -} - -void -FortyFrame::NewGame(wxCommandEvent&) -{ - m_canvas->NewGame(); -} - -void -FortyFrame::Exit(wxCommandEvent&) -{ -#ifdef __WXGTK__ - // wxGTK doesn't call OnClose() so we do it here - if (OnClose()) -#endif - Close(TRUE); -} - -void -FortyFrame::About(wxCommandEvent&) -{ - wxMessageBox( - "Forty Thieves\n\n" - "A freeware program using the wxWindows\n" - "portable C++ GUI toolkit.\n" - "http://web.ukonline.co.uk/julian.smart/wxwin\n" - "http://www.freiburg.linux.de/~wxxt\n\n" - "Author: Chris Breeze (c) 1992-1998\n" - "email: chris.breeze@iname.com", - "About Forty Thieves", - wxOK, this - ); -} - -void -FortyFrame::Undo(wxCommandEvent&) -{ - m_canvas->Undo(); -} - -void -FortyFrame::Redo(wxCommandEvent&) -{ - m_canvas->Redo(); -} - -void -FortyFrame::Scores(wxCommandEvent&) -{ - m_canvas->UpdateScores(); - ScoreDialog scores(this, m_canvas->GetScoreFile()); - scores.Display(); -} - -void -FortyFrame::ToggleRightButtonUndo(wxCommandEvent& event) -{ - bool checked = m_menuBar->IsChecked(event.GetId()); - m_canvas->EnableRightButtonUndo(checked); -} - -void -FortyFrame::ToggleHelpingHand(wxCommandEvent& event) -{ - bool checked = m_menuBar->IsChecked(event.GetId()); - m_canvas->EnableHelpingHand(checked); -} diff --git a/samples/forty/forty.def b/samples/forty/forty.def deleted file mode 100644 index a096488900..0000000000 --- a/samples/forty/forty.def +++ /dev/null @@ -1,8 +0,0 @@ -NAME Forty -DESCRIPTION 'Forty Thieves' -EXETYPE WINDOWS -STUB 'WINSTUB.EXE' -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE -HEAPSIZE 4048 -STACKSIZE 16000 diff --git a/samples/forty/forty.h b/samples/forty/forty.h deleted file mode 100644 index 1fbf6449f1..0000000000 --- a/samples/forty/forty.h +++ /dev/null @@ -1,31 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: forty.h -// Purpose: Forty Thieves patience game -// Author: Chris Breeze -// Modified by: -// Created: 21/07/97 -// RCS-ID: $Id$ -// Copyright: (c) 1993-1998 Chris Breeze -// Licence: wxWindows licence -//--------------------------------------------------------------------------- -// Last modified: 22nd July 1998 - ported to wxWindows 2.0 -///////////////////////////////////////////////////////////////////////////// -#ifndef _FORTY_H_ -#define _FORTY_H_ - -class FortyApp: public wxApp -{ -public: - bool OnInit(); - - static const wxColour& BackgroundColour(); - static const wxColour& TextColour(); - static const wxBrush& BackgroundBrush(); - -private: - static wxColour* m_backgroundColour; - static wxColour* m_textColour; - static wxBrush* m_backgroundBrush; -}; - -#endif diff --git a/samples/forty/forty.rc b/samples/forty/forty.rc deleted file mode 100644 index 911ea25bb9..0000000000 --- a/samples/forty/forty.rc +++ /dev/null @@ -1,6 +0,0 @@ -#include "wx/msw/wx.rc" - -CardsIcon ICON "cards.ico" -CardPictures BITMAP "pictures.bmp" -CardSymbols BITMAP "symbols.bmp" - diff --git a/samples/forty/game.cpp b/samples/forty/game.cpp deleted file mode 100644 index 4ac59941eb..0000000000 --- a/samples/forty/game.cpp +++ /dev/null @@ -1,944 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: game.cpp -// Purpose: Forty Thieves patience game -// Author: Chris Breeze -// Modified by: -// Created: 21/07/97 -// RCS-ID: $Id$ -// Copyright: (c) 1993-1998 Chris Breeze -// Licence: wxWindows licence -//--------------------------------------------------------------------------- -// Last modified: 22nd July 1998 - ported to wxWindows 2.0 -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation -#pragma interface -#endif - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include -#include -#include -#include -#include "forty.h" -#include "game.h" - -Game::Game(int wins, int games, int score) : - m_inPlay(FALSE), - m_moveIndex(0), - m_redoIndex(0), - m_bmap(0), - m_bmapCard(0) -{ - int i; - - m_pack = new Pack(2, 2 + 4 * (CardHeight + 2)); - srand(time(0)); - - for (i = 0; i < 5; i++) m_pack->Shuffle(); - - m_discard = new Discard(2, 2 + 5 * (CardHeight + 2)); - - for (i = 0; i < 8; i++) - { - m_foundations[i] = new Foundation(2 + (i / 4) * (CardWidth + 2), - 2 + (i % 4) * (CardHeight + 2)); - } - - for (i = 0; i < 10; i++) - { - m_bases[i] = new Base(8 + (i + 2) * (CardWidth + 2), 2); - } - Deal(); - m_srcPile = 0; - m_liftedCard = 0; - - // copy the input parameters for future reference - m_numWins = wins; - m_numGames = games; - m_totalScore = score; - m_currentScore = 0; -} - - -// Make sure we delete all objects created by the game object -Game::~Game() -{ - int i; - - delete m_pack; - delete m_discard; - for (i = 0; i < 8; i++) - { - delete m_foundations[i]; - } - for (i = 0; i < 10; i++) - { - delete m_bases[i]; - } - delete m_bmap; - delete m_bmapCard; -} - -/* -Set the score for a new player. -NB: call Deal() first if the new player is to start -a new game -*/ -void Game::NewPlayer(int wins, int games, int score) -{ - m_numWins = wins; - m_numGames = games; - m_totalScore = score; - m_currentScore = 0; -} - -// Undo the last move -void Game::Undo(wxDC& dc) -{ - if (m_moveIndex > 0) - { - m_moveIndex--; - Card* card = m_moves[m_moveIndex].dest->RemoveTopCard(dc); - m_moves[m_moveIndex].src->AddCard(dc, card); - DisplayScore(dc); - } -} - -// Redo the last move -void Game::Redo(wxDC& dc) -{ - if (m_moveIndex < m_redoIndex) - { - Card* card = m_moves[m_moveIndex].src->RemoveTopCard(dc); - if (m_moves[m_moveIndex].src == m_pack) - { - m_pack->Redraw(dc); - card->TurnCard(faceup); - } - m_moves[m_moveIndex].dest->AddCard(dc, card); - DisplayScore(dc); - m_moveIndex++; - } -} - -void Game::DoMove(wxDC& dc, Pile* src, Pile* dest) -{ - if (m_moveIndex < MaxMoves) - { - if (src == dest) - { - wxMessageBox("Game::DoMove() src == dest", "Debug message", - wxOK | wxICON_EXCLAMATION); - } - m_moves[m_moveIndex].src = src; - m_moves[m_moveIndex].dest = dest; - m_moveIndex++; - - // when we do a move any moves in redo buffer are discarded - m_redoIndex = m_moveIndex; - } - else - { - wxMessageBox("Game::DoMove() Undo buffer full", "Debug message", - wxOK | wxICON_EXCLAMATION); - } - - if (!m_inPlay) - { - m_inPlay = TRUE; - m_numGames++; - } - DisplayScore(dc); -} - - -void Game::DisplayScore(wxDC& dc) -{ - wxColour bgColour = FortyApp::BackgroundColour(); - wxPen* pen = wxThePenList->FindOrCreatePen(bgColour, 1, wxSOLID); - dc.SetTextBackground(bgColour); - dc.SetTextForeground(FortyApp::TextColour()); - dc.SetBrush(FortyApp::BackgroundBrush()); - dc.SetPen(* pen); - - // count the number of cards in foundations - m_currentScore = 0; - for (int i = 0; i < 8; i++) - { - m_currentScore += m_foundations[i]->GetNumCards(); - } - - int x, y; - m_pack->GetTopCardPos(x, y); - x += 12 * CardWidth - 105; - - int w, h; - { - long width, height; - dc.GetTextExtent("Average score:m_x", &width, &height); - w = width; - h = height; - } - dc.DrawRectangle(x + w, y, 20, 4 * h); - - char str[80]; - sprintf(str, "%d", m_currentScore); - dc.DrawText("Score:", x, y); - dc.DrawText(str, x + w, y); - y += h; - - sprintf(str, "%d", m_numGames); - dc.DrawText("Games played:", x, y); - dc.DrawText(str, x + w, y); - y += h; - - sprintf(str, "%d", m_numWins); - dc.DrawText("Games won:", x, y); - dc.DrawText(str, x + w, y); - y += h; - - int average = 0; - if (m_numGames > 0) - { - average = (2 * (m_currentScore + m_totalScore) + m_numGames ) / (2 * m_numGames); - } - sprintf(str, "%d", average); - dc.DrawText("Average score:", x, y); - dc.DrawText(str, x + w, y); -} - - -// Shuffle the m_pack and deal the cards -void Game::Deal() -{ - int i, j; - Card* card; - - // Reset all the piles, the undo buffer and shuffle the m_pack - m_moveIndex = 0; - m_pack->ResetPile(); - for (i = 0; i < 5; i++) - { - m_pack->Shuffle(); - } - m_discard->ResetPile(); - for (i = 0; i < 10; i++) - { - m_bases[i]->ResetPile(); - } - for (i = 0; i < 8; i++) - { - m_foundations[i]->ResetPile(); - } - - // Deal the initial 40 cards onto the bases - for (i = 0; i < 10; i++) - { - for (j = 1; j <= 4; j++) - { - card = m_pack->RemoveTopCard(); - card->TurnCard(faceup); - m_bases[i]->AddCard(card); - } - } - - if (m_inPlay) - { - // player has started the game and then redealt - // and so we must add the score for this game to the total score - m_totalScore += m_currentScore; - } - m_currentScore = 0; - m_inPlay = FALSE; -} - - -// Redraw the m_pack, discard pile, the bases and the foundations -void Game::Redraw(wxDC& dc) -{ - int i; - m_pack->Redraw(dc); - m_discard->Redraw(dc); - for (i = 0; i < 8; i++) - { - m_foundations[i]->Redraw(dc); - } - for (i = 0; i < 10; i++) - { - m_bases[i]->Redraw(dc); - } - DisplayScore(dc); - - if (m_bmap == 0) - { - m_bmap = new wxBitmap(CardWidth, CardHeight); - m_bmapCard = new wxBitmap(CardWidth, CardHeight); - - // Initialise the card bitmap to the background colour - wxMemoryDC memoryDC; - memoryDC.SelectObject(*m_bmapCard); - memoryDC.SetBrush(FortyApp::BackgroundBrush()); - memoryDC.DrawRectangle(0, 0, CardWidth, CardHeight); - memoryDC.SelectObject(*m_bmap); - memoryDC.DrawRectangle(0, 0, CardWidth, CardHeight); - memoryDC.SelectObject(wxNullBitmap); - } -} - - -// Test to see if the point (x, y) is over the top card of one of the piles -// Returns pointer to the pile, or 0 if (x, y) is not over a pile -// or the pile is empty -Pile* Game::WhichPile(int x, int y) -{ - if (m_pack->GetCard(x, y) && - m_pack->GetCard(x, y) == m_pack->GetTopCard()) - { - return m_pack; - } - - if (m_discard->GetCard(x, y) && - m_discard->GetCard(x, y) == m_discard->GetTopCard()) - { - return m_discard; - } - - int i; - for (i = 0; i < 8; i++) - { - if (m_foundations[i]->GetCard(x, y) && - m_foundations[i]->GetCard(x, y) == m_foundations[i]->GetTopCard()) - { - return m_foundations[i]; - } - } - - for (i = 0; i < 10; i++) - { - if (m_bases[i]->GetCard(x, y) && - m_bases[i]->GetCard(x, y) == m_bases[i]->GetTopCard()) - { - return m_bases[i]; - } - } - return 0; -} - - -// Left button is pressed - if cursor is over the m_pack then deal a card -// otherwise if it is over a card pick it up ready to be dragged - see MouseMove() -bool Game::LButtonDown(wxDC& dc, int x, int y) -{ - m_srcPile = WhichPile(x, y); - if (m_srcPile == m_pack) - { - Card* card = m_pack->RemoveTopCard(); - if (card) - { - m_pack->Redraw(dc); - card->TurnCard(faceup); - m_discard->AddCard(dc, card); - DoMove(dc, m_pack, m_discard); - } - m_srcPile = 0; - } - else if (m_srcPile) - { - m_srcPile->GetTopCardPos(m_xPos, m_yPos); - m_xOffset = m_xPos - x; - m_yOffset = m_yPos - y; - - // Copy the area under the card - // Initialise the card bitmap to the background colour - { - wxMemoryDC memoryDC; - memoryDC.SelectObject(*m_bmap); - m_liftedCard = m_srcPile->RemoveTopCard(memoryDC, m_xPos, m_yPos); - } - - // Draw the card in card bitmap ready for blitting onto - // the screen - { - wxMemoryDC memoryDC; - memoryDC.SelectObject(*m_bmapCard); - m_liftedCard->Draw(memoryDC, 0, 0); - } - } - return m_srcPile != 0; -} - -// Called when the left button is double clicked -// If a card is under the pointer and it can move elsewhere then move it. -// Move onto a foundation as first choice, a populated base as second and -// an empty base as third choice. -// NB Cards in the m_pack cannot be moved in this way - they aren't in play -// yet -void Game::LButtonDblClk(wxDC& dc, int x, int y) -{ - Pile* pile = WhichPile(x, y); - if (!pile) return; - - // Double click on m_pack is the same as left button down - if (pile == m_pack) - { - LButtonDown(dc, x, y); - } - else - { - Card* card = pile->GetTopCard(); - - if (card) - { - int i; - - // if the card is an ace then try to place it next - // to an ace of the same suit - if (card->GetPipValue() == 1) - { - for(i = 0; i < 4; i++) - { - Card* m_topCard; - if ((m_topCard = m_foundations[i]->GetTopCard())) - { - if (m_topCard->GetSuit() == card->GetSuit() && - m_foundations[i + 4] != pile && - m_foundations[i + 4]->GetTopCard() == 0) - { - pile->RemoveTopCard(dc); - m_foundations[i + 4]->AddCard(dc, card); - DoMove(dc, pile, m_foundations[i + 4]); - return; - } - } - } - } - - // try to place the card on a foundation - for(i = 0; i < 8; i++) - { - if (m_foundations[i]->AcceptCard(card) && m_foundations[i] != pile) - { - pile->RemoveTopCard(dc); - m_foundations[i]->AddCard(dc, card); - DoMove(dc, pile, m_foundations[i]); - return; - } - } - // try to place the card on a populated base - for(i = 0; i < 10; i++) - { - if (m_bases[i]->AcceptCard(card) && - m_bases[i] != pile && - m_bases[i]->GetTopCard()) - { - pile->RemoveTopCard(dc); - m_bases[i]->AddCard(dc, card); - DoMove(dc, pile, m_bases[i]); - return; - } - } - // try to place the card on any base - for(i = 0; i < 10; i++) - { - if (m_bases[i]->AcceptCard(card) && m_bases[i] != pile) - { - pile->RemoveTopCard(dc); - m_bases[i]->AddCard(dc, card); - DoMove(dc, pile, m_bases[i]); - return; - } - } - } - } -} - - -// Test to see whether the game has been won: -// i.e. m_pack, discard and bases are empty -bool Game::HaveYouWon() -{ - if (m_pack->GetTopCard()) return FALSE; - if (m_discard->GetTopCard()) return FALSE; - for(int i = 0; i < 10; i++) - { - if (m_bases[i]->GetTopCard()) return FALSE; - } - m_numWins++; - m_totalScore += m_currentScore; - m_currentScore = 0; - return TRUE; -} - - -// See whether the card under the cursor can be moved somewhere else -// Returns TRUE if it can be moved, FALSE otherwise -bool Game::CanYouGo(int x, int y) -{ - Pile* pile = WhichPile(x, y); - if (pile && pile != m_pack) - { - Card* card = pile->GetTopCard(); - - if (card) - { - int i; - for(i = 0; i < 8; i++) - { - if (m_foundations[i]->AcceptCard(card) && m_foundations[i] != pile) - { - return TRUE; - } - } - for(i = 0; i < 10; i++) - { - if (m_bases[i]->GetTopCard() && - m_bases[i]->AcceptCard(card) && - m_bases[i] != pile) - { - return TRUE; - } - } - } - } - return FALSE; -} - - -// Called when the left button is released after dragging a card -// Scan the piles to see if this card overlaps a pile and can be added -// to the pile. If the card overlaps more than one pile on which it can be placed -// then put it on the nearest pile. -void Game::LButtonUp(wxDC& dc, int x, int y) -{ - if (m_srcPile) - { - // work out the position of the dragged card - x += m_xOffset; - y += m_yOffset; - - Pile* nearestPile = 0; - int distance = (CardHeight + CardWidth) * (CardHeight + CardWidth); - - // find the nearest pile which will accept the card - int i; - for (i = 0; i < 8; i++) - { - if (DropCard(x, y, m_foundations[i], m_liftedCard)) - { - if (m_foundations[i]->CalcDistance(x, y) < distance) - { - nearestPile = m_foundations[i]; - distance = nearestPile->CalcDistance(x, y); - } - } - } - for (i = 0; i < 10; i++) - { - if (DropCard(x, y, m_bases[i], m_liftedCard)) - { - if (m_bases[i]->CalcDistance(x, y) < distance) - { - nearestPile = m_bases[i]; - distance = nearestPile->CalcDistance(x, y); - } - } - } - - // Restore the area under the card - wxMemoryDC memoryDC; - memoryDC.SelectObject(*m_bmap); - dc.Blit(m_xPos, m_yPos, CardWidth, CardHeight, - &memoryDC, 0, 0, wxCOPY); - - // Draw the card in its new position - if (nearestPile) - { - // Add to new pile - nearestPile->AddCard(dc, m_liftedCard); - if (nearestPile != m_srcPile) - { - DoMove(dc, m_srcPile, nearestPile); - } - } - else - { - // Return card to src pile - m_srcPile->AddCard(dc, m_liftedCard); - } - m_srcPile = 0; - m_liftedCard = 0; - } -} - - - - -bool Game::DropCard(int x, int y, Pile* pile, Card* card) -{ - bool retval = FALSE; - if (pile->Overlap(x, y)) - { - if (pile->AcceptCard(card)) - { - retval = TRUE; - } - } - return retval; -} - - -void Game::MouseMove(wxDC& dc, int mx, int my) -{ - if (m_liftedCard) - { - wxMemoryDC memoryDC; - memoryDC.SelectObject(*m_bmap); - - int dx = mx + m_xOffset - m_xPos; - int dy = my + m_yOffset - m_yPos; - - if (abs(dx) >= CardWidth || abs(dy) >= CardHeight) - { - // Restore the area under the card - dc.Blit(m_xPos, m_yPos, CardWidth, CardHeight, - &memoryDC, 0, 0, wxCOPY); - - // Copy the area under the card in the new position - memoryDC.Blit(0, 0, CardWidth, CardHeight, - &dc, m_xPos + dx, m_yPos + dy, wxCOPY); - } - else if (dx >= 0) - { - // dx >= 0 - dc.Blit(m_xPos, m_yPos, dx, CardHeight, &memoryDC, 0, 0, wxCOPY); - if (dy >= 0) - { - // dy >= 0 - dc.Blit(m_xPos + dx, m_yPos, CardWidth - dx, dy, &memoryDC, dx, 0, wxCOPY); - memoryDC.Blit(0, 0, CardWidth - dx, CardHeight - dy, - &memoryDC, dx, dy, wxCOPY); - memoryDC.Blit(0, CardHeight - dy, CardWidth - dx, dy, - &dc, m_xPos + dx, m_yPos + CardHeight, wxCOPY); - } - else - { - // dy < 0 - dc.Blit(m_xPos + dx, m_yPos + dy + CardHeight, CardWidth - dx, -dy, - &memoryDC, dx, CardHeight + dy, wxCOPY); - memoryDC.Blit(0, -dy, CardWidth - dx, CardHeight + dy, - &memoryDC, dx, 0, wxCOPY); - memoryDC.Blit(0, 0, CardWidth - dx, -dy, - &dc, m_xPos + dx, m_yPos + dy, wxCOPY); - } - memoryDC.Blit(CardWidth - dx, 0, dx, CardHeight, - &dc, m_xPos + CardWidth, m_yPos + dy, wxCOPY); - } - else - { - // dx < 0 - dc.Blit(m_xPos + CardWidth + dx, m_yPos, -dx, CardHeight, - &memoryDC, CardWidth + dx, 0, wxCOPY); - if (dy >= 0) - { - dc.Blit(m_xPos, m_yPos, CardWidth + dx, dy, &memoryDC, 0, 0, wxCOPY); - memoryDC.Blit(-dx, 0, CardWidth + dx, CardHeight - dy, - &memoryDC, 0, dy, wxCOPY); - memoryDC.Blit(-dx, CardHeight - dy, CardWidth + dx, dy, - &dc, m_xPos, m_yPos + CardHeight, wxCOPY); - } - else - { - // dy < 0 - dc.Blit(m_xPos, m_yPos + CardHeight + dy, CardWidth + dx, -dy, - &memoryDC, 0, CardHeight + dy, wxCOPY); - memoryDC.Blit(-dx, -dy, CardWidth + dx, CardHeight + dy, - &memoryDC, 0, 0, wxCOPY); - memoryDC.Blit(-dx, 0, CardWidth + dx, -dy, - &dc, m_xPos, m_yPos + dy, wxCOPY); - } - memoryDC.Blit(0, 0, -dx, CardHeight, - &dc, m_xPos + dx, m_yPos + dy, wxCOPY); - } - m_xPos += dx; - m_yPos += dy; - - // draw the card in its new position - memoryDC.SelectObject(*m_bmapCard); - dc.Blit(m_xPos, m_yPos, CardWidth, CardHeight, - &memoryDC, 0, 0, wxCOPY); - } -} - - - -//----------------------------------------------// -// The Pack class: holds the two decks of cards // -//----------------------------------------------// -Pack::Pack(int x, int y) : Pile(x, y, 0, 0) -{ - for (m_topCard = 0; m_topCard < NumCards; m_topCard++) - { - m_cards[m_topCard] = new Card(1 + m_topCard / 2, facedown); - } - m_topCard = NumCards - 1; -} - - -void Pack::Shuffle() -{ - Card* temp[NumCards]; - int i; - - // Don't try to shuffle an empty m_pack! - if (m_topCard < 0) return; - - // Copy the cards into a temporary array. Start by clearing - // the array and then copy the card into a random position. - // If the position is occupied then find the next lower position. - for (i = 0; i <= m_topCard; i++) - { - temp[i] = 0; - } - for (i = 0; i <= m_topCard; i++) - { - int pos = rand() % (m_topCard + 1); - while (temp[pos]) - { - pos--; - if (pos < 0) pos = m_topCard; - } - m_cards[i]->TurnCard(facedown); - temp[pos] = m_cards[i]; - m_cards[i] = 0; - } - - // Copy each card back into the m_pack in a random - // position. If position is occupied then find nearest - // unoccupied position after the random position. - for (i = 0; i <= m_topCard; i++) - { - int pos = rand() % (m_topCard + 1); - while (m_cards[pos]) - { - pos++; - if (pos > m_topCard) pos = 0; - } - m_cards[pos] = temp[i]; - } -} - -void Pack::Redraw(wxDC& dc) -{ - Pile::Redraw(dc); - - char str[10]; - sprintf(str, "%d ", m_topCard + 1); - - dc.SetTextBackground(FortyApp::BackgroundColour()); - dc.SetTextForeground(FortyApp::TextColour()); - dc.DrawText(str, m_x + CardWidth + 5, m_y + CardHeight / 2); - -} - -void Pack::AddCard(Card* card) -{ - if (card == m_cards[m_topCard + 1]) - { - m_topCard++; - } - else - { - wxMessageBox("Pack::AddCard() Undo error", "Forty Thieves: Warning", - wxOK | wxICON_EXCLAMATION); - } - card->TurnCard(facedown); -} - - -Pack::~Pack() -{ - for (m_topCard = 0; m_topCard < NumCards; m_topCard++) - { - delete m_cards[m_topCard]; - } -}; - - -//------------------------------------------------------// -// The Base class: holds the initial pile of four cards // -//------------------------------------------------------// -Base::Base(int x, int y) : Pile(x, y, 0, 12) -{ - m_topCard = -1; -} - - -bool Base::AcceptCard(Card* card) -{ - bool retval = FALSE; - - if (m_topCard >= 0) - { - if (m_cards[m_topCard]->GetSuit() == card->GetSuit() && - m_cards[m_topCard]->GetPipValue() - 1 == card->GetPipValue()) - { - retval = TRUE; - } - } - else - { - // pile is empty - ACCEPT - retval = TRUE; - } - return retval; -} - -Base::~Base() -{ -// nothing special at the moment -}; - - -//----------------------------------------------------------------// -// The Foundation class: holds the cards built up from the ace... // -//----------------------------------------------------------------// -Foundation::Foundation(int x, int y) : Pile(x, y, 0, 0) -{ - m_topCard = -1; -} - -bool Foundation::AcceptCard(Card* card) -{ - bool retval = FALSE; - - if (m_topCard >= 0) - { - if (m_cards[m_topCard]->GetSuit() == card->GetSuit() && - m_cards[m_topCard]->GetPipValue() + 1 == card->GetPipValue()) - { - retval = TRUE; - } - } - else if (card->GetPipValue() == 1) - { - // It's an ace and the pile is empty - ACCEPT - retval = TRUE; - } - return retval; -} - -Foundation::~Foundation() -{ -// nothing special at the moment -}; - - -//----------------------------------------------------// -// The Discard class: holds cards dealt from the m_pack // -//----------------------------------------------------// -Discard::Discard(int x, int y) : Pile(x, y, 19, 0) -{ - m_topCard = -1; -} - -void Discard::Redraw(wxDC& dc) -{ - if (m_topCard >= 0) - { - if (m_dx == 0 && m_dy == 0) - { - m_cards[m_topCard]->Draw(dc, m_x, m_y); - } - else - { - int x = m_x; - int y = m_y; - for (int i = 0; i <= m_topCard; i++) - { - m_cards[i]->Draw(dc, x, y); - x += m_dx; - y += m_dy; - if (i == 31) - { - x = m_x; - y = m_y + CardHeight / 3; - } - } - } - } - else - { - Card::DrawNullCard(dc, m_x, m_y); - } -} - - -void Discard::GetTopCardPos(int& x, int& y) -{ - if (m_topCard < 0) - { - x = m_x; - y = m_y; - } - else if (m_topCard > 31) - { - x = m_x + m_dx * (m_topCard - 32); - y = m_y + CardHeight / 3; - } - else - { - x = m_x + m_dx * m_topCard; - y = m_y; - } -} - - -Card* Discard::RemoveTopCard(wxDC& dc, int m_xOffset, int m_yOffset) -{ - Card* card; - - if (m_topCard <= 31) - { - card = Pile::RemoveTopCard(dc, m_xOffset, m_yOffset); - } - else - { - int topX, topY, x, y; - GetTopCardPos(topX, topY); - card = Pile::RemoveTopCard(); - card->Erase(dc, topX - m_xOffset, topY - m_yOffset); - GetTopCardPos(x, y); - dc.SetClippingRegion(topX - m_xOffset, topY - m_yOffset, - CardWidth, CardHeight); - - for (int i = m_topCard - 31; i <= m_topCard - 31 + CardWidth / m_dx; i++) - { - m_cards[i]->Draw(dc, m_x - m_xOffset + i * m_dx, m_y - m_yOffset); - } - if (m_topCard > 31) - { - m_cards[m_topCard]->Draw(dc, topX - m_xOffset - m_dx, topY - m_yOffset); - } - dc.DestroyClippingRegion(); - } - - return card; -} - - -Discard::~Discard() -{ -// nothing special at the moment -}; diff --git a/samples/forty/game.h b/samples/forty/game.h deleted file mode 100644 index 2360d15f49..0000000000 --- a/samples/forty/game.h +++ /dev/null @@ -1,135 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: game.h -// Purpose: Forty Thieves patience game -// Author: Chris Breeze -// Modified by: -// Created: 21/07/97 -// RCS-ID: $Id$ -// Copyright: (c) 1993-1998 Chris Breeze -// Licence: wxWindows licence -//--------------------------------------------------------------------------- -// Last modified: 22nd July 1998 - ported to wxWindows 2.0 -///////////////////////////////////////////////////////////////////////////// -#ifndef _GAME_H_ -#define _GAME_H_ -#include "card.h" -#include "pile.h" - -const int MaxMoves = 800; - - -//---------------------------------------// -// A class which holds the pack of cards // -//---------------------------------------// -class Pack : public Pile { -public: - Pack(int x, int y); - ~Pack(); - void Redraw(wxDC& dc); - void ResetPile() { m_topCard = NumCards - 1; } - void Shuffle(); - void AddCard(Card* card); // Add card - void AddCard(wxDC& dc, Card* card) { AddCard(card); Redraw(dc); } -}; - - -//----------------------------------------------------------// -// A class which holds a base i.e. the initial 10 x 4 cards // -//----------------------------------------------------------// -class Base : public Pile { -public: - Base(int x, int y); - ~Base(); - bool AcceptCard(Card* card); -}; - - -//----------------------------------------------------// -// A class which holds a foundation i.e. Ace, 2, 3... // -//----------------------------------------------------// -class Foundation : public Pile { -public: - Foundation(int x, int y); - ~Foundation(); - bool AcceptCard(Card* card); -}; - - -//--------------------------------------// -// A class which holds the discard pile // -//--------------------------------------// -class Discard : public Pile { -public: - Discard(int x, int y); - ~Discard(); - void Redraw(wxDC& dc); - void GetTopCardPos(int& x, int& y); - Card* RemoveTopCard(wxDC& dc, int m_xOffset, int m_yOffset); -}; - - -class Game { -public: - Game(int wins, int games, int score); - virtual ~Game(); - - void NewPlayer(int wins, int games, int score); - void Deal(); // Shuffle and deal a new game - bool CanYouGo(int x, int y); // can card under (x,y) go somewhere? - bool HaveYouWon(); // have you won the game? - - void Undo(wxDC& dc); // Undo the last go - void Redo(wxDC& dc); // Redo the last go - - void Redraw(wxDC& dc); - void DisplayScore(wxDC& dc); - bool LButtonDown(wxDC& dc, int mx, int my); // - void LButtonUp(wxDC& dc, int mx, int my); - void LButtonDblClk(wxDC& dc, int mx, int my); - void MouseMove(wxDC& dc, int mx, int my); - - int GetNumWins() const { return m_numWins; } - int GetNumGames() const { return m_numGames; } - int GetScore() const { return m_currentScore + m_totalScore; } - - bool InPlay() const { return m_inPlay; } - -private: - bool DropCard(int x, int y, Pile* pile, Card* card); - // can the card at (x, y) be dropped on the pile? - Pile* WhichPile(int x, int y); // which pile is (x, y) over? - void DoMove(wxDC& dc, Pile* src, Pile* dest); - - bool m_inPlay; // flag indicating that the game has started - - // undo buffer - struct { - Pile* src; - Pile* dest; - } m_moves[MaxMoves]; - int m_moveIndex; // current position in undo/redo buffer - int m_redoIndex; // max move index available for redo - - // the various piles of cards - Pack* m_pack; - Discard* m_discard; - Base* m_bases[10]; - Foundation* m_foundations[8]; - - // variables to do with dragging cards - Pile* m_srcPile; - Card* m_liftedCard; - int m_xPos, m_yPos; // current coords of card being dragged - int m_xOffset, m_yOffset; // card/mouse offset when dragging a card - - wxBitmap* m_bmap; - wxBitmap* m_bmapCard; - - // variables to do with scoring - int m_numGames; - int m_numWins; - int m_totalScore; - int m_currentScore; -}; - -#endif // _GAME_H_ diff --git a/samples/forty/makefile.bcc b/samples/forty/makefile.bcc deleted file mode 100644 index 53fdb7bf91..0000000000 --- a/samples/forty/makefile.bcc +++ /dev/null @@ -1,19 +0,0 @@ -# -# File: makefile.bcc -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Builds a BC++ 16-bit sample - -!if "$(WXWIN)" == "" -!error You must define the WXWIN variable in autoexec.bat, e.g. WXWIN=c:\wx -!endif - -WXDIR = $(WXWIN) - -TARGET=forty -OBJECTS=$(TARGET).obj canvas.obj card.obj game.obj pile.obj playerdg.obj scoredg.obj scorefil.obj - -!include $(WXDIR)\src\makeprog.bcc - diff --git a/samples/forty/makefile.dos b/samples/forty/makefile.dos deleted file mode 100644 index 150d0b9387..0000000000 --- a/samples/forty/makefile.dos +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.dos -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Makefile : Builds 16-bit sample, VC++ 1.5 -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -WXDIR = $(WXWIN) - -TARGET=forty -OBJECTS = $(TARGET).obj canvas.obj card.obj game.obj pile.obj playerdg.obj scoredg.obj scorefil.obj - -!include $(WXDIR)\src\makeprog.msc - diff --git a/samples/forty/makefile.g95 b/samples/forty/makefile.g95 deleted file mode 100644 index 4e61690c60..0000000000 --- a/samples/forty/makefile.g95 +++ /dev/null @@ -1,61 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile for Forty Thieves example (UNIX). - -WXDIR = ../.. - -# All common UNIX compiler flags and options are now in -# this central makefile. -include $(WXDIR)/src/makeg95.env - -OBJECTS = $(OBJDIR)/forty.$(OBJSUFF) $(OBJDIR)/canvas.$(OBJSUFF) $(OBJDIR)/card.$(OBJSUFF)\ - $(OBJDIR)/game.$(OBJSUFF) $(OBJDIR)/pile.$(OBJSUFF) $(OBJDIR)/playerdg.$(OBJSUFF)\ - $(OBJDIR)/scoredg.$(OBJSUFF) $(OBJDIR)/scorefil.$(OBJSUFF)\ - $(OBJDIR)/forty_resources.$(OBJSUFF) - -all: $(OBJDIR) forty$(GUISUFFIX)$(EXESUFF) - -wx: - -$(OBJDIR): - mkdir $(OBJDIR) - -forty$(GUISUFFIX)$(EXESUFF): $(OBJECTS) $(WXLIB) - $(CC) $(LDFLAGS) -o forty$(GUISUFFIX)$(EXESUFF) $(OBJECTS) $(LDLIBS) - -$(OBJDIR)/forty.$(OBJSUFF): forty.$(SRCSUFF) - $(CC) -c $(CPPFLAGS) -o $@ forty.$(SRCSUFF) - -$(OBJDIR)/canvas.$(OBJSUFF): canvas.$(SRCSUFF) - $(CC) -c $(CPPFLAGS) -o $@ canvas.$(SRCSUFF) - -$(OBJDIR)/card.$(OBJSUFF): card.$(SRCSUFF) - $(CC) -c $(CPPFLAGS) -o $@ card.$(SRCSUFF) - -$(OBJDIR)/playerdg.$(OBJSUFF): playerdg.$(SRCSUFF) - $(CC) -c $(CPPFLAGS) -o $@ playerdg.$(SRCSUFF) - -$(OBJDIR)/scoredg.$(OBJSUFF): scoredg.$(SRCSUFF) - $(CC) -c $(CPPFLAGS) -o $@ scoredg.$(SRCSUFF) - -$(OBJDIR)/scorefil.$(OBJSUFF): scorefil.$(SRCSUFF) - $(CC) -c $(CPPFLAGS) -o $@ scorefil.$(SRCSUFF) - -$(OBJDIR)/pile.$(OBJSUFF): pile.$(SRCSUFF) - $(CC) -c $(CPPFLAGS) -o $@ pile.$(SRCSUFF) - -$(OBJDIR)/game.$(OBJSUFF): game.$(SRCSUFF) - $(CC) -c $(CPPFLAGS) -o $@ game.$(SRCSUFF) - -$(OBJDIR)/forty_resources.o: forty.rc - $(RESCOMP) -i forty.rc -o $(OBJDIR)/forty_resources.o $(RESFLAGS) - -clean: - rm -f $(OBJECTS) forty$(GUISUFFIX).exe core *.rsc *.res diff --git a/samples/forty/makefile.vc b/samples/forty/makefile.vc deleted file mode 100644 index 7c809b7e74..0000000000 --- a/samples/forty/makefile.vc +++ /dev/null @@ -1,18 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: (c) Julian Smart -# -# Makefile : Builds sample (VC++, WIN32) -# Use FINAL=1 argument to nmake to build final version with no debug info. - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -PROGRAM=forty -OBJECTS = $(PROGRAM).obj card.obj canvas.obj game.obj pile.obj playerdg.obj scoredg.obj scorefil.obj - -!include $(WXDIR)\src\makeprog.vc - diff --git a/samples/forty/makefile.wat b/samples/forty/makefile.wat deleted file mode 100644 index 9db1dcaceb..0000000000 --- a/samples/forty/makefile.wat +++ /dev/null @@ -1,15 +0,0 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 -# -# - -WXDIR = $(%WXWIN) - -PROGRAM = forty -OBJECTS = $(PROGRAM).obj canvas.obj card.obj game.obj pile.obj playerdg.obj scoredg.obj scorefil.obj - -!include $(WXDIR)\src\makeprog.wat - - diff --git a/samples/forty/pictures.bmp b/samples/forty/pictures.bmp deleted file mode 100644 index d8c3345521fe4640eb1297930d4d98f955ec5054..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2818 zcmbuBO^)0)5QQs2fEk93=o;DN64~c2Ud37Va)L2nEkmdQUx7;t)Iv))M2xPG0}Ko< zV?Y4&6)CBEJnco08vT~)@jX@*+4Jjf-&-m6JJ+8%|KR+E^E>&0tH`?_%k9Qx6ycC@ ztT(Paa*lF59{G^VAvx<4Cx7bF%m1*30o06XooRVUIjz2Aecv|9fVcXR3!x9e@pg&J z$zd8`n;q+|Ym&ZQ;!GD@*DJ^U9#_>XLGL%LcoousHG5p4D762)+2Y`{O;(Bv)hbRK#3zK ztWNmCk)>6wFMQ?o7WVC%<^`{6R@GPIHQH6Tu%bD*JbD>DG z*HW6A<9zMoS?+1)Ypj-6DNw!DToM&gjTawMQo6r?z_atFZAB!KyJBzncGrbh?wr#=*5RW!Rm^4)&X8kq&1*F%#)^)kCQ0vlI4(d z98RZCk0#iU8!!7*@a&55fZ4!nYh8wTS(Pcg|`sf0JOEIuX(}Jnuq?caO@`kk)da{6eZRg zSCim8ubKIpP6llTsyHlPw4PwQk0iN?D2h3cLP6an&y;}r$})IIiqCC~l9}+b@^+6j zfL}s5&&!;sH0be6SM}7_N$=YxDJ^SdaP(J_VOW&EXtp8vW;!{=YDw(y`RqbZTRWqT zPPqTlHF1WR-i$WT3gi{dp4tUDoZU>Lmj-@%)^6_Icy3uGtohs^ndJj9y*W}LC8iU! z>u71?W?BQU0n=-)dfHmI1YI}K#*LVTnVP%zQfL_*yeV-k68WjNWE}Cprdy5fU4@?AEyAQ#WhAxXOH$_b7bZeU?J%o^*}X4YTgeE5(LQN4}^iwbUp!-MxK*O~@|+ z{Hj#bJnMi*oy(5h;;wnCkG-+}suYeLOJTP0ie`qqfrVq8+N!zmmP9JLY9=Y)z`oLq z7=EUTu?oEo!5I3ZvieG{_|&kbHs7k5`f;prHP2V&MN5K?DyQVUj*M-&D$Vf{TRNsj zX -#include -#include -#include -#include "card.h" -#include "pile.h" - -#include "wx/app.h" - -//+-------------------------------------------------------------+ -//| Pile::Pile() | -//+-------------------------------------------------------------+ -//| Description: | -//| Initialise the pile to be empty of cards. | -//+-------------------------------------------------------------+ -Pile::Pile(int x, int y, int dx, int dy) -{ - m_x = x; - m_y = y; - m_dx = dx; - m_dy = dy; - for (m_topCard = 0; m_topCard < NumCards; m_topCard++) - { - m_cards[m_topCard] = 0; - } - m_topCard = -1; // i.e. empty -} - - -//+-------------------------------------------------------------+ -//| Pile::Redraw() | -//+-------------------------------------------------------------+ -//| Description: | -//| Redraw the pile on the screen. If the pile is empty | -//| just draw a NULL card as a place holder for the pile. | -//| Otherwise draw the pile from the bottom up, starting | -//| at the origin of the pile, shifting each subsequent | -//| card by the pile's x and y offsets. | -//+-------------------------------------------------------------+ -void Pile::Redraw(wxDC& dc ) -{ - wxWindow *frame = wxTheApp->GetTopWindow(); - wxWindow *canvas = (wxWindow *) NULL; - if (frame) - { - wxNode *node = frame->GetChildren().First(); - if (node) canvas = (wxWindow*)node->Data(); - } - - if (m_topCard >= 0) - { - if (m_dx == 0 && m_dy == 0) - { - if ((canvas) && (canvas->IsExposed(m_x,m_y,60,200))) - m_cards[m_topCard]->Draw(dc, m_x, m_y); - } - else - { - int x = m_x; - int y = m_y; - for (int i = 0; i <= m_topCard; i++) - { - if ((canvas) && (canvas->IsExposed(x,y,60,200))) - m_cards[i]->Draw(dc, x, y); - x += m_dx; - y += m_dy; - } - } - } - else - { - if ((canvas) && (canvas->IsExposed(m_x,m_y,60,200))) - Card::DrawNullCard(dc, m_x, m_y); - } -} - - -//+-------------------------------------------------------------+ -//| Pile::GetTopCard() | -//+-------------------------------------------------------------+ -//| Description: | -//| Return a pointer to the top card in the pile or NULL | -//| if the pile is empty. | -//| NB: Gets a copy of the card without removing it from the | -//| pile. | -//+-------------------------------------------------------------+ -Card* Pile::GetTopCard() -{ - Card* card = 0; - - if (m_topCard >= 0) - { - card = m_cards[m_topCard]; - } - return card; -} - - -//+-------------------------------------------------------------+ -//| Pile::RemoveTopCard() | -//+-------------------------------------------------------------+ -//| Description: | -//| If the pile is not empty, remove the top card from the | -//| pile and return the pointer to the removed card. | -//| If the pile is empty return a NULL pointer. | -//+-------------------------------------------------------------+ -Card* Pile::RemoveTopCard() -{ - Card* card = 0; - - if (m_topCard >= 0) - { - card = m_cards[m_topCard--]; - } - return card; -} - - -//+-------------------------------------------------------------+ -//| Pile::RemoveTopCard() | -//+-------------------------------------------------------------+ -//| Description: | -//| As RemoveTopCard() but also redraw the top of the pile | -//| after the card has been removed. | -//| NB: the offset allows for the redrawn area to be in a | -//| bitmap ready for 'dragging' cards acrosss the screen. | -//+-------------------------------------------------------------+ -Card* Pile::RemoveTopCard(wxDC& dc, int xOffset, int yOffset) -{ - int topX, topY, x, y; - - GetTopCardPos(topX, topY); - Card* card = RemoveTopCard(); - - if (card) - { - card->Erase(dc, topX - xOffset, topY - yOffset); - GetTopCardPos(x, y); - if (m_topCard < 0) - { - Card::DrawNullCard(dc, x - xOffset, y - yOffset); - } - else - { - m_cards[m_topCard]->Draw(dc, x - xOffset, y - yOffset); - } - } - - return card; -} - - -void Pile::GetTopCardPos(int& x, int& y) -{ - if (m_topCard < 0) - { - x = m_x; - y = m_y; - } - else - { - x = m_x + m_dx * m_topCard; - y = m_y + m_dy * m_topCard; - } -} - -void Pile::AddCard(Card* card) -{ - if (m_topCard < -1) m_topCard = -1; - - m_cards[++m_topCard] = card; -} - -void Pile::AddCard(wxDC& dc, Card* card) -{ - AddCard(card); - int x, y; - GetTopCardPos(x, y); - card->Draw(dc, x, y); -} - -// Can the card leave this pile. -// If it is a member of the pile then the answer is yes. -// Derived classes may override this behaviour to incorporate -// the rules of the game -bool Pile::CanCardLeave(Card* card) -{ - for (int i = 0; i <= m_topCard; i++) - { - if (card == m_cards[i]) return TRUE; - } - return FALSE; -} - -// Calculate how far x, y is from top card in the pile -// Returns the square of the distance -int Pile::CalcDistance(int x, int y) -{ - int cx, cy; - GetTopCardPos(cx, cy); - return ((cx - x) * (cx - x) + (cy - y) * (cy - y)); -} - - -// Return the card at x, y. Check the top card first, then -// work down the pile. If a card is found then return a pointer -// to the card, otherwise return NULL -Card* Pile::GetCard(int x, int y) -{ - int cardX; - int cardY; - GetTopCardPos(cardX, cardY); - - for (int i = m_topCard; i >= 0; i--) - { - if (x >= cardX && x <= cardX + CardWidth && - y >= cardY && y <= cardY + CardHeight) - { - return m_cards[i]; - } - cardX -= m_dx; - cardY -= m_dy; - } - return 0; -} - - -// Return the position of the given card. If it is not a member of this pile -// return the origin of the pile. -void Pile::GetCardPos(Card* card, int& x, int& y) -{ - x = m_x; - y = m_y; - - for (int i = 0; i <= m_topCard; i++) - { - if (card == m_cards[i]) - { - return; - } - x += m_dx; - y += m_dy; - } - - // card not found in pile, return origin of pile - x = m_x; - y = m_y; -} - - -bool Pile::Overlap(int x, int y) -{ - int cardX; - int cardY; - GetTopCardPos(cardX, cardY); - - if (x >= cardX - CardWidth && x <= cardX + CardWidth && - y >= cardY - CardHeight && y <= cardY + CardHeight) - { - return TRUE; - } - return FALSE; -} - - -Pile::~Pile() -{ -// nothing special at the moment -} diff --git a/samples/forty/pile.h b/samples/forty/pile.h deleted file mode 100644 index 49eb8c9b54..0000000000 --- a/samples/forty/pile.h +++ /dev/null @@ -1,80 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: pile.h -// Purpose: Forty Thieves patience game -// Author: Chris Breeze -// Modified by: -// Created: 21/07/97 -// RCS-ID: $Id$ -// Copyright: (c) 1993-1998 Chris Breeze -// Licence: wxWindows licence -//--------------------------------------------------------------------------- -// Last modified: 22nd July 1998 - ported to wxWindows 2.0 -///////////////////////////////////////////////////////////////////////////// -//+-------------------------------------------------------------+ -//| Description: | -//| The base class for holding piles of playing cards. | -//| This is the basic building block for card games. A pile | -//| has a position on the screen and an offset for each | -//| card placed on it e.g. a pack has no offset, but the | -//| discard pile may be fanned out across the screen. | -//| | -//| The pile knows how to draw itself, though this may be | -//| overridden if the default layout needs to be changed. | -//| One or more cards can be removed from the top of a pile, | -//| and single cards can be added to the top of a pile. | -//| Functions are provided which redraw the screen when | -//| cards are added or removed. | -//| | -//| Cards know which way up they are and how to draw | -//| themselves. Piles are lists of cards. Piles know which | -//| cards they contain and where they are to be drawn. | -//+-------------------------------------------------------------+ -#ifndef _PILE_H_ -#define _PILE_H_ -#include "card.h" - -const int NumCards = 2 * PackSize; - - -//----------------------------------------------------------------// -// A class defining a pile of cards with a position on the screen // -//----------------------------------------------------------------// -class Pile { -public: - Pile(int x, int y, int dx = 0, int dy = 0); - virtual ~Pile(); - - // General functions - virtual void ResetPile() { m_topCard = -1; } - virtual void Redraw(wxDC& pDC); - - // Card query functions - virtual Card* GetCard(int x, int y); // Get pointer to card at x, y - Card* GetTopCard(); // Get pointer to top card - virtual void GetCardPos(Card* card, int& x, int& y); - // Get position of a card - virtual void GetTopCardPos(int& x, int& y); - // Get position of the top card - int GetNumCards() { return m_topCard + 1; } // Number of cards in pile - bool Overlap(int x, int y); // does card at x,y overlap the pile? - int CalcDistance(int x, int y); // calculates the square of the distance - // of a card at (x,y) from the top of the pile - - // Functions removing one or more cards from the top of a pile - virtual bool CanCardLeave(Card* card); - Card* RemoveTopCard(); - virtual Card* RemoveTopCard(wxDC& pDC, int xOffset = 0, int yOffset = 0); - - // Functions to add a card to the top of a pile - virtual bool AcceptCard(Card*) { return FALSE; } - virtual void AddCard(Card* card); // Add card to top of pile - virtual void AddCard(wxDC& pDC, Card* card); // Add card + redraw it - -protected: - int m_x, m_y; // Position of the pile on the screen - int m_dx, m_dy; // Offset when drawing the pile - Card* m_cards[NumCards]; // Array of cards in this pile - int m_topCard; // Array index of the top card -}; - -#endif // _PILE_H_ diff --git a/samples/forty/playerdg.cpp b/samples/forty/playerdg.cpp deleted file mode 100644 index e55cd0f93d..0000000000 --- a/samples/forty/playerdg.cpp +++ /dev/null @@ -1,192 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: playerdg.cpp -// Purpose: Forty Thieves patience game -// Author: Chris Breeze -// Modified by: -// Created: 21/07/97 -// RCS-ID: $Id$ -// Copyright: (c) 1993-1998 Chris Breeze -// Licence: wxWindows licence -//--------------------------------------------------------------------------- -// Last modified: 22nd July 1998 - ported to wxWindows 2.0 -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation -#pragma interface -#endif - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include "scorefil.h" -#include "playerdg.h" - -const int ID_LISTBOX = 101; - -BEGIN_EVENT_TABLE(PlayerSelectionDialog, wxDialog) - EVT_SIZE(PlayerSelectionDialog::OnSize) - EVT_BUTTON(wxID_OK, PlayerSelectionDialog::ButtonCallback) - EVT_BUTTON(wxID_CANCEL, PlayerSelectionDialog::ButtonCallback) - EVT_LISTBOX(ID_LISTBOX, PlayerSelectionDialog::SelectCallback) -END_EVENT_TABLE() - -PlayerSelectionDialog::PlayerSelectionDialog( - wxWindow* parent, - ScoreFile* file - ) : - wxDialog(parent, -1, "Player Selection", - wxDefaultPosition, wxSize(320, 200), - wxDIALOG_MODAL | wxDEFAULT_DIALOG_STYLE), - m_scoreFile(file) -{ - // enable constraints - SetAutoLayout (TRUE); - - wxStaticText* msg = new wxStaticText(this, -1, "Please select a name from the list"); - - wxListBox* list = new wxListBox( - this, ID_LISTBOX, - wxDefaultPosition, wxDefaultSize, - 0, 0, - wxLB_SINGLE - ); - - wxArrayString players; - m_scoreFile->GetPlayerList(players); - for (unsigned int i = 0; i < players.Count(); i++) - { - list->Append(players[i]); - } - - m_textField = new wxTextCtrl(this, -1, "", wxDefaultPosition, wxDefaultSize, 0); - - m_OK = new wxButton(this, wxID_OK, "OK"); - m_cancel = new wxButton(this, wxID_CANCEL, "Cancel"); - - wxLayoutConstraints* layout; - - // Constrain the msg at the top of the window - layout = new wxLayoutConstraints; - layout->left.SameAs (this, wxLeft, 10); - layout->top.SameAs (this, wxTop, 10); - layout->height.AsIs(); - layout->width.AsIs(); - msg->SetConstraints(layout); - - // Constrain the OK button - layout = new wxLayoutConstraints; - layout->left.SameAs (this, wxLeft, 10); - layout->bottom.SameAs (this, wxBottom, 10); - layout->height.AsIs(); - layout->width.AsIs(); - m_OK->SetConstraints(layout); - - // Constrain the OK button - layout = new wxLayoutConstraints; - layout->left.RightOf (m_OK, 10); - layout->bottom.SameAs (this, wxBottom, 10); - layout->height.AsIs(); - layout->width.AsIs(); - m_cancel->SetConstraints(layout); - - // Constrain the Name text entry field - layout = new wxLayoutConstraints; - layout->left.SameAs (this, wxLeft, 10); - layout->right.SameAs (this, wxRight, 10); - layout->bottom.SameAs (m_OK, wxTop, 10); - layout->height.AsIs(); - m_textField->SetConstraints(layout); - - // Constrain the list of players - layout = new wxLayoutConstraints; - layout->left.SameAs (this, wxLeft, 10); - layout->right.SameAs (this, wxRight, 10); - layout->top.Below (msg, 10); - layout->bottom.SameAs (m_textField, wxTop, 10); - list->SetConstraints(layout); - - wxString prevPlayer = m_scoreFile->GetPreviousPlayer(); - if (prevPlayer.Length() > 0) - { - list->SetStringSelection(prevPlayer); - m_textField->SetValue(prevPlayer); - } - - Layout(); -} - -PlayerSelectionDialog::~PlayerSelectionDialog() -{ -} - -void PlayerSelectionDialog::OnSize(wxSizeEvent& WXUNUSED(event)) -{ - Layout(); -} - -const wxString& PlayerSelectionDialog::GetPlayersName() -{ -/* - m_player = ""; - Show(TRUE); -*/ - return m_player; -} - -bool PlayerSelectionDialog::OnClose() -{ - // hide the dialog - // NB don't return TRUE otherwise delete is called - m_player = ""; - Show(FALSE); - return FALSE; -} - -void PlayerSelectionDialog::SelectCallback(wxCommandEvent& event) -{ - if (event.GetEventType() == wxEVT_COMMAND_LISTBOX_SELECTED) - { -#ifdef __WXGTK__ - if (event.IsSelection()) -#endif - m_textField->SetValue(event.GetString()); - } -} - -void PlayerSelectionDialog::ButtonCallback(wxCommandEvent& event) -{ - if (event.GetId() == wxID_OK) - { - wxString name = m_textField->GetValue(); - if (!name.IsNull() && name.Length() > 0) - { - if (name.Contains('@')) - { - wxMessageBox("Names should not contain the '@' character", "Forty Thieves"); - } - else - { - m_player = name; - Show(FALSE); - } - } - else - { - wxMessageBox("Please enter your name", "Forty Thieves"); - } - } - else - { - m_player = ""; - Show(FALSE); - } -} diff --git a/samples/forty/playerdg.h b/samples/forty/playerdg.h deleted file mode 100644 index 995ac57a80..0000000000 --- a/samples/forty/playerdg.h +++ /dev/null @@ -1,41 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: playerdg.h -// Purpose: Forty Thieves patience game -// Author: Chris Breeze -// Modified by: -// Created: 21/07/97 -// RCS-ID: $Id$ -// Copyright: (c) 1993-1998 Chris Breeze -// Licence: wxWindows licence -//--------------------------------------------------------------------------- -// Last modified: 22nd July 1998 - ported to wxWindows 2.0 -///////////////////////////////////////////////////////////////////////////// -#ifndef _PLAYERDG_H_ -#define _PLAYERDG_H_ - -class PlayerSelectionDialog : public wxDialog -{ -public: - PlayerSelectionDialog(wxWindow* parent, ScoreFile* file); - virtual ~PlayerSelectionDialog(); - - const wxString& GetPlayersName(); - void ButtonCallback(wxCommandEvent& event); - void SelectCallback(wxCommandEvent& event); - void OnSize(wxSizeEvent& event); - - DECLARE_EVENT_TABLE() - -protected: - friend void SelectCallback(wxListBox&, wxCommandEvent&); - bool OnClose(); - -private: - ScoreFile* m_scoreFile; - wxString m_player; - wxButton* m_OK; - wxButton* m_cancel; - wxTextCtrl* m_textField; -}; - -#endif diff --git a/samples/forty/scoredg.cpp b/samples/forty/scoredg.cpp deleted file mode 100644 index befb3725cd..0000000000 --- a/samples/forty/scoredg.cpp +++ /dev/null @@ -1,192 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: scoredg.cpp -// Purpose: Forty Thieves patience game -// Author: Chris Breeze -// Modified by: -// Created: 21/07/97 -// RCS-ID: $Id$ -// Copyright: (c) 1993-1998 Chris Breeze -// Licence: wxWindows licence -//--------------------------------------------------------------------------- -// Last modified: 22nd July 1998 - ported to wxWindows 2.0 -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation -#pragma interface -#endif - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#if wxUSE_IOSTREAMH -#if defined(__WXMSW__) && !defined(__GNUWIN32__) -#include -#else -#include -#endif -#else -#include -using namespace std; -#endif -#include "scorefil.h" -#include "scoredg.h" - -class ScoreCanvas : public wxScrolledWindow -{ -public: - ScoreCanvas(wxWindow* parent, ScoreFile* scoreFile); - virtual ~ScoreCanvas(); - - void OnDraw(wxDC& dc); - -private: - wxFont* m_font; - wxString m_text; -}; - - -ScoreCanvas::ScoreCanvas(wxWindow* parent, ScoreFile* scoreFile) : - wxScrolledWindow(parent) -{ -#ifdef __WXGTK__ - m_font = wxTheFontList->FindOrCreateFont(12, wxROMAN, wxNORMAL, wxNORMAL); -#else - m_font = wxTheFontList->FindOrCreateFont(10, wxSWISS, wxNORMAL, wxNORMAL); -#endif - - wxArrayString players; - scoreFile->GetPlayerList( players); - - ostrstream os; - - os << "Player\tWins\tGames\tScore\n"; - for (unsigned int i = 0; i < players.Count(); i++) - { - int wins, games, score; - scoreFile->ReadPlayersScore(players[i], wins, games, score); - int average = 0; - if (games > 0) - { - average = (2 * score + games) / (2 * games); - } - - os << players[i] << '\t' - << wins << '\t' - << games << '\t' - << average << '\n'; - } - os << '\0'; - char* str = os.str(); - m_text = str; - delete str; -} - -ScoreCanvas::~ScoreCanvas() -{ -} - -void ScoreCanvas::OnDraw(wxDC& dc) -{ - dc.SetFont(* m_font); - - const char* str = m_text; - unsigned int tab = 0; - unsigned int tabstops[] = { 5, 100, 150, 200 }; - - // get the line spacing for the current font - int lineSpacing; - { - long w, h; - dc.GetTextExtent("Testing", &w, &h); - lineSpacing = (int)h; - } - - int y = 0; - while (*str) - { - char text[256]; - char* dest = text; - - while (*str && *str >= ' ') *dest++ = *str++; - *dest = '\0'; - - dc.DrawText(text, tabstops[tab], y); - - if (*str == '\t') - { - if (tab < sizeof(tabstops) / sizeof(tabstops[0]) - 1) - { - tab++; - } - } - else if (*str == '\n') - { - tab = 0; - y += lineSpacing; - } - if (*str) str++; - } -} - - -ScoreDialog::ScoreDialog( - wxWindow* parent, - ScoreFile* file - ) : - wxDialog(parent, -1, "Scores", - wxDefaultPosition, wxSize(310, 200), - wxDIALOG_MODAL | wxDEFAULT_DIALOG_STYLE), - m_scoreFile(file) -{ - // enable constraints - SetAutoLayout (TRUE); - - ScoreCanvas* list = new ScoreCanvas(this, m_scoreFile); - m_OK = new wxButton(this, wxID_OK, "OK"); - - wxLayoutConstraints* layout; - - // Constrain the OK button - layout = new wxLayoutConstraints; - layout->left.SameAs (this, wxLeft, 10); - layout->bottom.SameAs (this, wxBottom, 10); - layout->height.AsIs(); - layout->width.AsIs(); - m_OK->SetConstraints(layout); - - // Constrain the list of players - layout = new wxLayoutConstraints; - layout->left.SameAs (this, wxLeft, 10); - layout->right.SameAs (this, wxRight, 10); - layout->top.SameAs (this, wxTop, 10); - layout->bottom.SameAs (m_OK, wxTop, 10); - list->SetConstraints(layout); - - Layout(); -} - -ScoreDialog::~ScoreDialog() -{ -} - -void ScoreDialog::Display() -{ - Show(TRUE); -} - -bool ScoreDialog::OnClose() -{ - // hide the dialog - // NB don't return TRUE otherwise delete is called - Show(FALSE); - return FALSE; -} diff --git a/samples/forty/scoredg.h b/samples/forty/scoredg.h deleted file mode 100644 index c63cf03547..0000000000 --- a/samples/forty/scoredg.h +++ /dev/null @@ -1,32 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: scoredg.h -// Purpose: Forty Thieves patience game -// Author: Chris Breeze -// Modified by: -// Created: 21/07/97 -// RCS-ID: $Id$ -// Copyright: (c) 1993-1998 Chris Breeze -// Licence: wxWindows licence -//--------------------------------------------------------------------------- -// Last modified: 22nd July 1998 - ported to wxWindows 2.0 -///////////////////////////////////////////////////////////////////////////// -#ifndef _SCOREDG_H_ -#define _SCOREDG_H_ - -class ScoreDialog : public wxDialog -{ -public: - ScoreDialog(wxWindow* parent, ScoreFile* file); - virtual ~ScoreDialog(); - - void Display(); - -protected: - bool OnClose(); - -private: - ScoreFile* m_scoreFile; - wxButton* m_OK; -}; - -#endif diff --git a/samples/forty/scorefil.cpp b/samples/forty/scorefil.cpp deleted file mode 100644 index 348be7cfe7..0000000000 --- a/samples/forty/scorefil.cpp +++ /dev/null @@ -1,183 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: scorefil.cpp -// Purpose: Forty Thieves patience game -// Author: Chris Breeze -// Modified by: -// Created: 21/07/97 -// RCS-ID: $Id$ -// Copyright: (c) 1993-1998 Chris Breeze -// Licence: wxWindows licence -//--------------------------------------------------------------------------- -// Last modified: 14th May 1998 - ported to wxWindows 2.0 -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation -#pragma interface -#endif - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#ifdef __WXGTK__ -#include -#include -#include -#endif -#include "wx/textfile.h" -#include "wx/config.h" -#include "wx/fileconf.h" - -#include "scorefil.h" - - -ScoreFile::ScoreFile(const char* appName) -{ -#if 0 - wxString filename; - m_configFilename << "/usr/local/share/" << appName << ".scores"; - if (access(m_configFilename, F_OK) == 0) - { - if (access(m_configFilename, R_OK | W_OK) != 0) - { - // file is not r/w - use local file instead - m_configFilename = wxFileConfig::GetLocalFileName(appName); - } - } - else - { - int fd = creat(m_configFilename, 0666); - - if (fd < 0) - { - // failed to create file - use local file instead - m_configFilename = wxFileConfig::GetLocalFileName(appName); - } - else - { - // ensure created file has rw-rw-rw permissions - close(fd); - } - } -#endif - - m_config = new wxConfig(appName, "wxWindows", appName, "", wxCONFIG_USE_LOCAL_FILE); // only local -} - -ScoreFile::~ScoreFile() -{ - delete m_config; -#ifdef __WXGTK__ - // ensure score file has rw-rw-rw permissions - // (wxFileConfig sets them to rw-------) - chmod(m_configFilename, 0666); -#endif -} - - -void ScoreFile::GetPlayerList( wxArrayString &list ) -{ - m_config->SetPath("/Players"); - int length = m_config->GetNumberOfGroups(); - - if (length <= 0) return; - - wxString player; - long index, i = 0; - if (m_config->GetFirstGroup(player, index)) - { - list.Add( player ); - i++; - while (m_config->GetNextGroup(player, index)) - { - list.Add( player ); - i++; - } - } -} - - -// Calculate an encrypted check number to prevent tampering with -// score file -long ScoreFile::CalcCheck(const char* name, int p1, int p2, int p3) -{ - long check = 0; - while (*name) - { - check = (check << 1) ^ (long)*name++; - check = ((check >> 23) ^ check) & 0xFFFFFF; - } - check = (check << 1) ^ (long)p1; - check = ((check >> 23) ^ check) & 0xFFFFFF; - check = (check << 1) ^ (long)p2; - check = ((check >> 23) ^ check) & 0xFFFFFF; - check = (check << 1) ^ (long)p3; - check = ((check >> 23) ^ check) & 0xFFFFFF; - return check; -} - -wxString ScoreFile::GetPreviousPlayer() const -{ - wxString result; - m_config->SetPath("/General"); - m_config->Read("LastPlayer", &result); - return result; -} - -void ScoreFile::ReadPlayersScore( - const char* player, - int& wins, - int& games, - int& score) -{ - long check; - long myWins, myGames, myScore; - - games = wins = score = 0; - - m_config->SetPath("/Players"); - m_config->SetPath(player); - if (m_config->Read("Score", &myScore, 0L) && - m_config->Read("Games", &myGames, 0L) && - m_config->Read("Wins", &myWins, 0L) && - m_config->Read("Check", &check, 0L)) - { - if (check != CalcCheck(player, myGames, myWins, myScore)) - { - wxMessageBox("Score file corrupted", "Warning", - wxOK | wxICON_EXCLAMATION); - } - else - { - games = myGames; - wins = myWins; - score = myScore; - } - } - WritePlayersScore(player, wins, games, score); -} - - -void ScoreFile::WritePlayersScore(const char* player, int wins, int games, int score) -{ - if (player) - { - m_config->SetPath("/General"); - m_config->Write("LastPlayer", player); - - m_config->SetPath("/Players"); - m_config->SetPath(player); - m_config->Write("Score", (long)score); - m_config->Write("Games", (long)games); - m_config->Write("Wins", (long)wins); - m_config->Write("Check", CalcCheck(player, games, wins, score)); - } -} diff --git a/samples/forty/scorefil.h b/samples/forty/scorefil.h deleted file mode 100644 index 1e89904eca..0000000000 --- a/samples/forty/scorefil.h +++ /dev/null @@ -1,37 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: scorefil.h -// Purpose: Forty Thieves patience game -// Author: Chris Breeze -// Modified by: -// Created: 21/07/97 -// RCS-ID: $Id$ -// Copyright: (c) 1993-1998 Chris Breeze -// Licence: wxWindows licence -//--------------------------------------------------------------------------- -// Last modified: 22nd July 1998 - ported to wxWindows 2.0 -///////////////////////////////////////////////////////////////////////////// -#ifndef _SCOREFILE_H_ -#define _SCOREFILE_H_ - -#include - -class wxConfig; - -class ScoreFile { -public: - ScoreFile(const char* appName); - virtual ~ScoreFile(); - - void GetPlayerList( wxArrayString &list ); - wxString GetPreviousPlayer() const; - - void ReadPlayersScore(const char* player, int& wins, int& games, int &score); - void WritePlayersScore(const char* player, int wins, int games, int score); - -private: - long CalcCheck(const char* name, int p1, int p2, int p3); - wxString m_configFilename; - wxConfig* m_config; -}; - -#endif diff --git a/samples/forty/symbols.bmp b/samples/forty/symbols.bmp deleted file mode 100644 index 59f466cd18b8d70ba7d4e1b9bf718c1d44e30fca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 662 zcmZvZKS;w+5XP@sI+Rd5W+=_-S{D^+Bkt1G(a}FNbyBQIgiuuDhe9_Og|eMV{N7D<$KpH#$FWF z({p=z+G5fs_9=0P$o<;D<53$m_I5$VTKQ_o*k^I8fwi^5Fm2ryr3++cAG=bsC}CbT z_cgbHjQS40gx>DYJ#UsPFMgw8*8wn`T=L_Wv#=uvdFv|$>tevw1rC;lfaA$1z)Zlv zC*Wwz@stp$jJcW<%a50V#&SeG?0+N6rXdD-%2Y#ZY0rtXhzIJ8dN!QDS?G*(cJnna wqZ|J}=qE8T%PV^*aQ4iGH55`4XH~;_u diff --git a/samples/forty/symbols.xbm b/samples/forty/symbols.xbm deleted file mode 100644 index 5dee698c60..0000000000 --- a/samples/forty/symbols.xbm +++ /dev/null @@ -1,37 +0,0 @@ -#define Symbols_width 79 -#define Symbols_height 50 -static char Symbols_bits[] = { - 0x08,0x84,0x0d,0x01,0x00,0x00,0x00,0x00,0x00,0x80,0x1c,0xce,0x9f,0x03,0x00, - 0x00,0x00,0x00,0x00,0x80,0x2a,0xdf,0xdf,0x07,0x00,0x00,0x00,0x00,0x00,0x80, - 0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x80,0x2a,0x9f,0xcf,0x07,0x00, - 0x00,0x00,0x00,0x00,0x80,0x08,0x0e,0x07,0x01,0x00,0x00,0x00,0x00,0x00,0x80, - 0x1c,0x04,0x82,0x03,0x00,0x00,0x00,0x00,0x00,0x80,0x1c,0x04,0x82,0x03,0x00, - 0x00,0x00,0x00,0x00,0x80,0x08,0x0e,0x07,0x01,0x00,0x00,0x00,0x00,0x00,0x80, - 0x2a,0x9f,0xcf,0x07,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x0f,0x00, - 0x00,0x00,0x00,0x00,0x80,0x2a,0xdf,0xdf,0x07,0x00,0x00,0x00,0x00,0x00,0x80, - 0x1c,0xce,0x9f,0x03,0x00,0x00,0x00,0x00,0x00,0x80,0x08,0x84,0x0d,0x01,0x00, - 0x00,0x00,0x00,0x00,0x80,0x70,0x00,0x01,0x63,0x40,0x00,0x00,0x00,0x00,0x80, - 0xf8,0x80,0x83,0xf7,0xe0,0x00,0x00,0x00,0x00,0x80,0xf8,0x80,0xc3,0xff,0xf1, - 0x01,0x00,0x00,0x00,0x80,0x70,0xc0,0xc7,0xff,0xf9,0x03,0x00,0x00,0x00,0x80, - 0x26,0xe3,0xcf,0xff,0xfd,0x07,0x00,0x00,0x00,0x80,0xaf,0xf7,0xdf,0xff,0xff, - 0x0f,0x00,0x00,0x00,0x80,0xff,0xe7,0x8f,0xff,0xfe,0x0f,0x00,0x00,0x00,0x80, - 0xaf,0xc7,0x07,0x7f,0x5e,0x0f,0x00,0x00,0x00,0x80,0x26,0x83,0x03,0x3e,0x4c, - 0x06,0x00,0x00,0x00,0x80,0x70,0x80,0x03,0x1c,0xe0,0x00,0x00,0x00,0x00,0x80, - 0xfc,0x01,0x01,0x08,0xf8,0x03,0x00,0x00,0x00,0x80,0xfc,0x01,0x01,0x08,0xf8, - 0x03,0x00,0x00,0x00,0x80,0x70,0x80,0x03,0x1c,0xe0,0x00,0x00,0x00,0x00,0x80, - 0x26,0x83,0x03,0x3e,0x4c,0x06,0x00,0x00,0x00,0x80,0xaf,0xc7,0x07,0x7f,0x5e, - 0x0f,0x00,0x00,0x00,0x80,0xff,0xe7,0x8f,0xff,0xfe,0x0f,0x00,0x00,0x00,0x80, - 0xaf,0xf7,0xdf,0xff,0xff,0x0f,0x00,0x00,0x00,0x80,0x26,0xe3,0xcf,0xff,0xfd, - 0x07,0x00,0x00,0x00,0x80,0x70,0xc0,0xc7,0xff,0xf9,0x03,0x00,0x00,0x00,0x80, - 0xf8,0x80,0xc3,0xff,0xf1,0x01,0x00,0x00,0x00,0x80,0xf8,0x80,0x83,0xf7,0xe0, - 0x00,0x00,0x00,0x00,0x80,0x70,0x00,0x01,0x63,0x40,0x00,0x00,0x00,0x00,0x80, - 0x0c,0xe7,0x43,0x3e,0xe7,0x73,0x5c,0xe6,0x73,0xa2,0x92,0x08,0x61,0x82,0x00, - 0x8a,0x62,0x09,0x89,0x92,0x21,0x88,0x50,0x9e,0x00,0x89,0x62,0x09,0x89,0x8a, - 0x21,0xc6,0x49,0xa0,0x87,0x70,0x7c,0x09,0x89,0x86,0x3f,0x01,0xfa,0xa0,0x88, - 0x88,0x60,0x09,0xa9,0x8a,0xa1,0x20,0x42,0xa2,0x88,0x88,0x50,0x29,0x49,0x92, - 0xa1,0xcf,0x41,0x1c,0x87,0x70,0x48,0xc6,0xb0,0xa2,0xa1,0xcf,0x11,0x1c,0x87, - 0x70,0x88,0x89,0x69,0xa2,0x21,0x28,0x12,0xa2,0x88,0x88,0x44,0x4a,0x92,0xa4, - 0x3f,0x24,0xf8,0x82,0x88,0x88,0x42,0x4a,0xa8,0xa8,0x21,0xc3,0x91,0x82,0x8f, - 0x70,0x5e,0x4a,0x88,0xb0,0xa1,0x80,0x50,0x3c,0x48,0x88,0x62,0x4a,0x88,0xa8, - 0x92,0x48,0x30,0x20,0x28,0x88,0x62,0x4a,0x88,0xa4,0x0c,0xe7,0x13,0x3e,0xe7, - 0x73,0x9c,0xe9,0x73,0xa2}; diff --git a/samples/forty/symbols.xpm b/samples/forty/symbols.xpm deleted file mode 100644 index e5a2b2590f..0000000000 --- a/samples/forty/symbols.xpm +++ /dev/null @@ -1,60 +0,0 @@ -/* XPM */ -static char *symbols[] = { -/* width height num_colors chars_per_pixel */ -" 79 50 3 1", -/* colors */ -". c #ffffff", -"* c #ff0000", -"# c #000000", -/* pixels */ -"...#......*....**.**....#......................................................", -"..###....***..*******..###.....................................................", -".#.#.#..*****.*******.#####....................................................", -"#######**************#######...................................................", -".#.#.#..*****..*****..#####....................................................", -"...#.....***....***.....#......................................................", -"..###.....*......*.....###.....................................................", -"..###.....*......*.....###.....................................................", -"...#.....***....***.....#......................................................", -".#.#.#..*****..*****..#####....................................................", -"#######**************#######...................................................", -".#.#.#..*****.*******.#####....................................................", -"..###....***..*******..###.....................................................", -"...#......*....**.**....#......................................................", -"....###.........*.......**...**.......#........................................", -"...#####.......***.....****.****.....###.......................................", -"...#####.......***....***********...#####......................................", -"....###.......*****...***********..#######.....................................", -".##..#..##...*******..***********.#########....................................", -"####.#.####.*********.***********###########...................................", -"###########..*******...*********.###########...................................", -"####.#.####...*****.....*******..####.#.####...................................", -".##..#..##.....***.......*****....##..#..##....................................", -"....###........***........***........###.......................................", -"..#######.......*..........*.......#######.....................................", -"..#######.......*..........*.......#######.....................................", -"....###........***........***........###.......................................", -".##..#..##.....***.......*****....##..#..##....................................", -"####.#.####...*****.....*******..####.#.####...................................", -"###########..*******...*********.###########...................................", -"####.#.####.*********.***********###########...................................", -".##..#..##...*******..***********.#########....................................", -"....###.......*****...***********..#######.....................................", -"...#####.......***....***********...#####......................................", -"...#####.......***.....****.****.....###.......................................", -"....###.........*.......**...**.......#........................................", -"..##....###..#####....#..#####..###..#####..###...###.#..##..#####..###..#...#.", -".#..#..#...#....#....##..#.....#.........#.#...#.#...##.#..#....#..#...#.#..#..", -"#....#.....#...#....#.#..####..#........#..#...#.#...##.#..#....#..#...#.#.#...", -"#....#...##...###..#..#......#.####....#....###...#####.#..#....#..#...#.##....", -"######..#........#.#####.....#.#...#...#...#...#.....##.#..#....#..#.#.#.#.#...", -"#....#.#.....#...#....#..#...#.#...#...#...#...#....#.#.#..#.#..#..#..#..#..#..", -"#....#.#####..###.....#...###...###....#....###....#..#..##...##....##.#.#...#.", -"#....#.#####..###...#.....###...###....#....###....#...##..#...##..#.##..#...#.", -"#....#.....#.#...#..#....#...#.#...#...#...#...#..#...#..#.#..#..#..#..#..#..#.", -"######....#..#.....#####.#.....#...#...#...#...#.#....#..#.#..#....#.#.#...#.#.", -"#....#..##....###...#..#.#.....#####...#....###..####.#..#.#..#....#...#....##.", -"#....#.#.......#....#.#...####.....#..#....#...#.#...##..#.#..#....#...#...#.#.", -".#..#..#...#..#.....##.......#.....#.#.....#...#.#...##..#.#..#....#...#..#..#.", -"..##....###..#####..#....#####..###..#####..###...###..##..#.#####..###..#...#." -}; diff --git a/samples/fractal/Makefile b/samples/fractal/Makefile deleted file mode 100644 index bccce53f76..0000000000 --- a/samples/fractal/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../../setup/general/makeapp diff --git a/samples/fractal/Makefile.in b/samples/fractal/Makefile.in deleted file mode 100644 index f7da59979c..0000000000 --- a/samples/fractal/Makefile.in +++ /dev/null @@ -1,26 +0,0 @@ -# WXXT base directory -WXBASEDIR=@WXBASEDIR@ - -# set the OS type for compilation -OS=@OS@ -# compile a library only -RULE=bin - -# define library name -BIN_TARGET=fractal -# define library sources -BIN_SRC=\ -fractal.cpp - -#define library objects -BIN_OBJ=\ -fractal.o - -# additional things needed to link -BIN_LINK= - -# additional things needed to compile -ADD_COMPILE= - -# include the definitions now -include ../../../template.mak diff --git a/samples/fractal/fractal.cpp b/samples/fractal/fractal.cpp deleted file mode 100644 index fe84a6a584..0000000000 --- a/samples/fractal/fractal.cpp +++ /dev/null @@ -1,251 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: fractal.cpp -// Purpose: demo of wxConfig and related classes -// Author: Andrew Davison -// Modified by: -// Created: 05.04.94 -// RCS-ID: $Id$ -// Copyright: (c) 1994 Andrew Davison -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - - -/* -Date: Tue, 5 Apr 1994 12:01:18 +1000 -From: Andrew Davison -To: wxwin-users@ed.aiai -Subject: Fractal mountains - -Hi, - -This is a quick port of a fractal mountain generator originally -done for MS-Windows. On a Sun the colours look a little washed -out and there is not as much snow or high mountains (maybe the -random number generators fault). The viewing plane is not -quite right as the original code used SetViewportOrg() which there -doesn't seem to be an equivalent of under wxWindows, and my quick -hack doesn't fix. -*/ - -#ifdef __GNUG__ -#pragma implementation -#pragma interface -#endif - -#include "wx/wxprec.h" - -#ifndef WX_PRECOMP - #include "wx/wx.h" -#endif //precompiled headers - -#include -#include -#include - -#define Random(x) (rand() % x) -#define Randomize() (srand((unsigned int)time(NULL))) - -static int detail = 9; // CHANGE THIS... 7,8,9 etc - -static bool running = FALSE; -static wxMenuBar *menuBar = NULL; - -// Define a new application type -class MyApp: public wxApp -{ public: - bool OnInit(); -}; - -IMPLEMENT_APP(MyApp) - -// Define a new frame type -class MyFrame: public wxFrame -{ -public: - MyFrame(wxFrame *frame, const wxString& title, const wxPoint& pos, const wxSize& size); - - void OnCloseWindow(wxCloseEvent& event); - void OnExit(wxCommandEvent& event); -DECLARE_EVENT_TABLE() -}; - -// Define a new canvas which can receive some events -class MyCanvas: public wxWindow -{ -public: - MyCanvas(wxFrame *frame); - void Draw(wxDC& dc); - -private: - void OnPaint(wxPaintEvent& event); - void Fractal(wxDC& dc, int X1, int Y1, int X2, int Y2, int Z1, int Z2, int Z3, int Z4, int Iteration, double Std, double Ratio); - wxPen SnowPen, MtnPen, GreenPen; - wxBrush WaterBrush; - int Sealevel; - -DECLARE_EVENT_TABLE() -}; - -// `Main program' equivalent, creating windows and returning main app frame -bool MyApp::OnInit() -{ - // Create the main frame window - MyFrame *frame = new MyFrame(NULL, "Fractal Mountains for wxWindows", wxPoint(-1, -1), wxSize(640, 480)); - - // Make a menubar - wxMenu *file_menu = new wxMenu; - file_menu->Append(wxID_EXIT, "E&xit"); - menuBar = new wxMenuBar; - menuBar->Append(file_menu, "&File"); - frame->SetMenuBar(menuBar); - - int width, height; - frame->GetClientSize(&width, &height); - - (void) new MyCanvas(frame); - - // Show the frame - frame->Show(TRUE); - - return TRUE; -} - -BEGIN_EVENT_TABLE(MyFrame, wxFrame) - EVT_CLOSE(MyFrame::OnCloseWindow) - EVT_MENU(wxID_EXIT, MyFrame::OnExit) -END_EVENT_TABLE() - -// My frame constructor -MyFrame::MyFrame(wxFrame *frame, const wxString& title, const wxPoint& pos, const wxSize& size): - wxFrame(frame, -1, title, pos, size) -{ -} - -// Intercept menu commands -void MyFrame::OnExit(wxCommandEvent& event) -{ - this->Destroy(); -} - -void MyFrame::OnCloseWindow(wxCloseEvent& event) -{ - static bool destroyed = FALSE; - if (destroyed) - return; - - this->Destroy(); - - destroyed = TRUE; -} - -BEGIN_EVENT_TABLE(MyCanvas, wxWindow) - EVT_PAINT(MyCanvas::OnPaint) -END_EVENT_TABLE() - -// Define a constructor for my canvas -MyCanvas::MyCanvas(wxFrame *frame): - wxWindow(frame, -1) -{ - wxColour wxCol1(255,255,255); - SnowPen = wxPen(wxCol1, 2, wxSOLID); - - wxColour wxCol2(128,0,0); - MtnPen = wxPen(wxCol2, 1, wxSOLID); - - wxColour wxCol3(0,128,0); - GreenPen = wxPen(wxCol3, 1, wxSOLID); - - wxColour wxCol4(0,0,128); - WaterBrush = wxBrush(wxCol4, wxSOLID); -} - -void MyCanvas::OnPaint(wxPaintEvent& event) -{ - wxPaintDC dc(this); - Draw(dc); -} - -void MyCanvas::Draw(wxDC& dc) -{ - if (running) return; - - running = TRUE; - menuBar->EnableTop(0, FALSE); - - Randomize(); - - int Left, Top, Right, Bottom; - GetClientSize(&Right, &Bottom); - - Right *= 3; Right /= 4; - Bottom *= 3; Bottom /= 4; - Left = 0; - Top = Bottom/8; - - wxPoint Water[4]; - Water[0].x = Left; Water[0].y = Top; - Water[1].x = Right; Water[1].y = Top; - Water[2].x = Right+Bottom/2; Water[2].y = Bottom; - Water[3].x = Bottom/2; Water[3].y = Bottom; - - dc.SetBrush(WaterBrush); - dc.DrawPolygon(4, Water); - - double H = 0.75; - double Scale = Bottom; - double Ratio = 1.0 / pow(2.0, H); - double Std = Scale * Ratio; - Sealevel = Random(18) - 8; - - Fractal(dc, Left, Top, Right, Bottom, 0, 0, 0, 0, detail, Std, Ratio); - - menuBar->EnableTop(0, TRUE); - running = FALSE; -} - -void MyCanvas::Fractal(wxDC& dc, int X1, int Y1, int X2, int Y2, int Z1, int Z2, int Z3, int Z4, int Iteration, double Std, double Ratio) -{ - int Xmid = (X1 + X2) / 2; - int Ymid = (Y1 + Y2) / 2; - int Z23 = (Z2 + Z3) / 2; - int Z41 = (Z4 + Z1) / 2; - int Newz = (int)((Z1 + Z2 + Z3 + Z4) / 4 + (double)(Random(17) - 8) / 8.0 * Std); - - if (--Iteration) - { - int Z12 = (Z1 + Z2) / 2; - int Z34 = (Z3 + Z4) / 2; - double Stdmid = Std * Ratio; - - Fractal(dc, Xmid, Y1, X2, Ymid, Z12, Z2, Z23, Newz, Iteration, Stdmid, Ratio); - Fractal(dc, X1, Y1, Xmid, Ymid, Z1, Z12, Newz, Z41, Iteration, Stdmid, Ratio); - Fractal(dc, Xmid, Ymid, X2, Y2, Newz, Z23, Z3, Z34, Iteration, Stdmid, Ratio); - Fractal(dc, X1, Ymid, Xmid, Y2, Z41, Newz, Z34, Z4, Iteration, Stdmid, Ratio); - } - else - { - if (Newz <= Sealevel) - { - wxPoint P[4]; - P[0].x = Y1 / 2 + X1; P[0].y = Y1 + Z1; - P[1].x = Y1 / 2 + X2; P[1].y = Y1 + Z2; - P[2].x = Y2 / 2 + X2; P[2].y = Y2 + Z3; - P[3].x = Y2 / 2 + X1; P[3].y = Y2 + Z4; - - dc.SetPen(* wxBLACK_PEN); - dc.SetBrush(* wxBLACK_BRUSH); - - dc.DrawPolygon(4, P); - - if (Z1 >= -(60+Random(25))) - dc.SetPen(GreenPen); - else if (Z1 >= -(100+Random(25))) - dc.SetPen(MtnPen); - else - dc.SetPen(SnowPen); - - dc.DrawLine(Ymid/2+X2, Ymid+Z23, Ymid/2+X1, Ymid+Z41); - } - } -} - diff --git a/samples/fractal/fractal.def b/samples/fractal/fractal.def deleted file mode 100644 index 822abf6379..0000000000 --- a/samples/fractal/fractal.def +++ /dev/null @@ -1,9 +0,0 @@ -NAME Fractal -DESCRIPTION 'Fractal' -EXETYPE WINDOWS -STUB 'WINSTUB.EXE' -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE -HEAPSIZE 1024 -STACKSIZE 16192 - diff --git a/samples/fractal/fractal.rc b/samples/fractal/fractal.rc deleted file mode 100644 index e3b11b0116..0000000000 --- a/samples/fractal/fractal.rc +++ /dev/null @@ -1,4 +0,0 @@ -wxSTD_FRAME ICON "mondrian.ico" - -#include "wx/msw/wx.rc" - diff --git a/samples/fractal/makefile.b32 b/samples/fractal/makefile.b32 deleted file mode 100644 index 6000f3994d..0000000000 --- a/samples/fractal/makefile.b32 +++ /dev/null @@ -1,16 +0,0 @@ -# -# File: makefile.b32 -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: -# -# Makefile : Builds sample for 32-bit BC++ - -WXDIR = $(WXWIN) - -TARGET=fractal -OBJECTS = $(TARGET).obj - -!include $(WXDIR)\src\makeprog.b32 - diff --git a/samples/fractal/makefile.bcc b/samples/fractal/makefile.bcc deleted file mode 100644 index 6b4aacde28..0000000000 --- a/samples/fractal/makefile.bcc +++ /dev/null @@ -1,19 +0,0 @@ -# -# File: makefile.bcc -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Builds a BC++ 16-bit sample - -!if "$(WXWIN)" == "" -!error You must define the WXWIN variable in autoexec.bat, e.g. WXWIN=c:\wx -!endif - -WXDIR = $(WXWIN) - -TARGET=fractal -OBJECTS=$(TARGET).obj - -!include $(WXDIR)\src\makeprog.bcc - diff --git a/samples/fractal/makefile.dos b/samples/fractal/makefile.dos deleted file mode 100644 index 9bb114e1fb..0000000000 --- a/samples/fractal/makefile.dos +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.dos -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Makefile : Builds 16-bit sample, VC++ 1.5 -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -WXDIR = $(WXWIN) - -TARGET=fractal -OBJECTS=$(TARGET).obj - -!include $(WXDIR)\src\makeprog.msc - diff --git a/samples/fractal/makefile.g95 b/samples/fractal/makefile.g95 deleted file mode 100644 index 041b2bad36..0000000000 --- a/samples/fractal/makefile.g95 +++ /dev/null @@ -1,37 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile for fractal example (UNIX). - -WXDIR = ../.. - -# All common UNIX compiler flags and options are now in -# this central makefile. -include $(WXDIR)/src/makeg95.env - -OBJECTS = $(OBJDIR)/fractal.$(OBJSUFF) $(OBJDIR)/fractal_resources.$(OBJSUFF) - -all: $(OBJDIR) fractal$(GUISUFFIX)$(EXESUFF) - -wx: - -$(OBJDIR): - mkdir $(OBJDIR) - -fractal$(GUISUFFIX)$(EXESUFF): $(OBJECTS) $(WXLIB) - $(CC) $(LDFLAGS) -o fractal$(GUISUFFIX)$(EXESUFF) $(OBJECTS) $(LDLIBS) - -$(OBJDIR)/fractal.$(OBJSUFF): fractal.$(SRCSUFF) - $(CC) -c $(CPPFLAGS) -o $@ fractal.$(SRCSUFF) - -$(OBJDIR)/fractal_resources.o: fractal.rc - $(RESCOMP) -i fractal.rc -o $(OBJDIR)/fractal_resources.o $(RESFLAGS) - -clean: - rm -f $(OBJECTS) fractal$(GUISUFFIX).exe core *.rsc *.res diff --git a/samples/fractal/makefile.unx b/samples/fractal/makefile.unx deleted file mode 100644 index ff708376ad..0000000000 --- a/samples/fractal/makefile.unx +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1998 -# Updated: -# Copyright: (c) 1998 Julian Smart -# -# "%W% %G%" -# -# Makefile for fractal example (UNIX). - -PROGRAM=fractal - -OBJECTS=$(PROGRAM).o - -include ../../src/makeprog.env - diff --git a/samples/fractal/makefile.vc b/samples/fractal/makefile.vc deleted file mode 100644 index 3023708cc5..0000000000 --- a/samples/fractal/makefile.vc +++ /dev/null @@ -1,18 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: (c) Julian Smart -# -# Makefile : Builds sample (VC++, WIN32) -# Use FINAL=1 argument to nmake to build final version with no debug info. - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -PROGRAM=fractal -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.vc - diff --git a/samples/fractal/makefile.wat b/samples/fractal/makefile.wat deleted file mode 100644 index d48fab6488..0000000000 --- a/samples/fractal/makefile.wat +++ /dev/null @@ -1,15 +0,0 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 -# -# - -WXDIR = $(%WXWIN) - -PROGRAM = fractal -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - diff --git a/samples/fractal/mondrian.ico b/samples/fractal/mondrian.ico deleted file mode 100644 index 2310c5d275a87af295d5ea8dc79ea417a5e74c53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmZQzU<5)11px*Sc)`TLAO@s0fLH;D9e|jTfdxnc0ZBkSv2S Jq1IE40stId_;>&S diff --git a/samples/grid/bitmap2.bmp b/samples/grid/bitmap2.bmp deleted file mode 100644 index ae825f1bedd3525153ffd6eebffa4e160cbfeec3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 238 zcmZ9FF%AMD6hy~_Xt4zz!((jBw%);tdMjhH4M(!u5>8~e!S{VgjPb+F{NWF9y}dQ+ zfn2~DL~u}mrDx|sK68vJ5?iGVfoWB1RnD1#^(`~+0Lzcu|5Q`#?wIbbEu|D2c~=X| g+_iP(URcPzh|SWpl8>i-$D2*t=HC82PksOU03ju0Qvd(} diff --git a/samples/grid/makefile.b32 b/samples/grid/makefile.b32 deleted file mode 100644 index 95ddc80d76..0000000000 --- a/samples/grid/makefile.b32 +++ /dev/null @@ -1,16 +0,0 @@ -# -# File: makefile.b32 -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: -# -# Makefile : Builds sample for 32-bit BC++ - -WXDIR = $(WXWIN) - -TARGET=test -OBJECTS = $(TARGET).obj - -!include $(WXDIR)\src\makeprog.b32 - diff --git a/samples/grid/makefile.bcc b/samples/grid/makefile.bcc deleted file mode 100644 index 669f01905a..0000000000 --- a/samples/grid/makefile.bcc +++ /dev/null @@ -1,19 +0,0 @@ -# -# File: makefile.bcc -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Builds a BC++ 16-bit sample - -!if "$(WXWIN)" == "" -!error You must define the WXWIN variable in autoexec.bat, e.g. WXWIN=c:\wx -!endif - -WXDIR = $(WXWIN) - -TARGET=test -OBJECTS=$(TARGET).obj - -!include $(WXDIR)\src\makeprog.bcc - diff --git a/samples/grid/makefile.dos b/samples/grid/makefile.dos deleted file mode 100644 index 13e3a4ce8e..0000000000 --- a/samples/grid/makefile.dos +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.dos -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Makefile : Builds 16-bit sample, VC++ 1.5 -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -WXDIR = $(WXWIN) - -TARGET=test -OBJECTS = $(TARGET).obj - -!include $(WXDIR)\src\makeprog.msc - diff --git a/samples/grid/makefile.g95 b/samples/grid/makefile.g95 deleted file mode 100644 index 32f8af5e2f..0000000000 --- a/samples/grid/makefile.g95 +++ /dev/null @@ -1,37 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile for grid example (UNIX). - -WXDIR = ../.. - -# All common UNIX compiler flags and options are now in -# this central makefile. -include $(WXDIR)/src/makeg95.env - -OBJECTS = $(OBJDIR)/test.$(OBJSUFF) $(OBJDIR)/test_resources.$(OBJSUFF) - -all: $(OBJDIR) test$(GUISUFFIX)$(EXESUFF) - -wx: - -$(OBJDIR): - mkdir $(OBJDIR) - -test$(GUISUFFIX)$(EXESUFF): $(OBJECTS) $(WXLIB) - $(CC) $(LDFLAGS) -o test$(GUISUFFIX)$(EXESUFF) $(OBJECTS) $(LDLIBS) - -$(OBJDIR)/test.$(OBJSUFF): test.$(SRCSUFF) - $(CC) -c $(CPPFLAGS) -o $@ test.$(SRCSUFF) - -$(OBJDIR)/test_resources.o: test.rc - $(RESCOMP) -i test.rc -o $(OBJDIR)/test_resources.o $(RESFLAGS) - -clean: - rm -f $(OBJECTS) test$(GUISUFFIX).exe core *.rsc *.res diff --git a/samples/grid/makefile.unx b/samples/grid/makefile.unx deleted file mode 100644 index 069b823b1a..0000000000 --- a/samples/grid/makefile.unx +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1998 -# Updated: -# Copyright: (c) 1998 Julian Smart -# -# "%W% %G%" -# -# Makefile for grid example (UNIX). - -PROGRAM=test - -OBJECTS=$(PROGRAM).o - -include ../../src/makeprog.env - diff --git a/samples/grid/makefile.vc b/samples/grid/makefile.vc deleted file mode 100644 index 4ada748eda..0000000000 --- a/samples/grid/makefile.vc +++ /dev/null @@ -1,18 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: (c) Julian Smart -# -# Makefile : Builds sample (VC++, WIN32) -# Use FINAL=1 argument to nmake to build final version with no debug info. - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -PROGRAM=test -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.vc - diff --git a/samples/grid/makefile.wat b/samples/grid/makefile.wat deleted file mode 100644 index 81a83e42a9..0000000000 --- a/samples/grid/makefile.wat +++ /dev/null @@ -1,15 +0,0 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 -# -# - -WXDIR = $(%WXWIN) - -PROGRAM = test -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - diff --git a/samples/grid/test.cpp b/samples/grid/test.cpp deleted file mode 100644 index ceb64fce1e..0000000000 --- a/samples/grid/test.cpp +++ /dev/null @@ -1,315 +0,0 @@ -/* - * File: test.cpp - * Purpose: wxGrid test - * Author: Julian Smart - * Created: 1995 - * Updated: - * Copyright: (c) 1995, AIAI, University of Edinburgh - */ - -static const char sccsid[] = "%W% %G%"; - -#ifdef __GNUG__ -#pragma implementation -#pragma interface -#endif - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include "wx/grid.h" -#include "wx/colordlg.h" - -// Define a new application type -class MyApp: public wxApp -{ public: - bool OnInit(void); -}; - -// Define a new frame type -class MyFrame: public wxFrame -{ public: - wxGrid *grid; - MyFrame(wxFrame *frame, const wxString& title, const wxPoint& pos, const wxSize& size); - - bool OnClose(void) { return TRUE; } - - void ToggleEditable(wxCommandEvent& event); - void ToggleRowLabel(wxCommandEvent& event); - void ToggleColLabel(wxCommandEvent& event); - void ToggleDividers(wxCommandEvent& event); - void LeftCell(wxCommandEvent& event); - void CentreCell(wxCommandEvent& event); - void RightCell(wxCommandEvent& event); - void ColourLabelBackground(wxCommandEvent& event); - void ColourLabelText(wxCommandEvent& event); - void NormalLabelColouring(wxCommandEvent& event); - void ColourCellBackground(wxCommandEvent& event); - void ColourCellText(wxCommandEvent& event); - void NormalCellColouring(wxCommandEvent& event); - void Quit(wxCommandEvent& event); - - void OnActivate(wxActivateEvent& event); - -DECLARE_EVENT_TABLE() -}; - -wxBitmap *cellBitmap1 = (wxBitmap *) NULL; -wxBitmap *cellBitmap2 = (wxBitmap *) NULL; - -// ID for the menu quit command -#define GRID_QUIT 1 -#define GRID_TOGGLE_EDITABLE 2 -#define GRID_LEFT_CELL 3 -#define GRID_CENTRE_CELL 4 -#define GRID_RIGHT_CELL 5 -#define GRID_TOGGLE_ROW_LABEL 6 -#define GRID_TOGGLE_COL_LABEL 7 -#define GRID_COLOUR_LABEL_BACKGROUND 8 -#define GRID_COLOUR_LABEL_TEXT 9 -#define GRID_NORMAL_LABEL_COLOURING 10 -#define GRID_COLOUR_CELL_BACKGROUND 11 -#define GRID_COLOUR_CELL_TEXT 12 -#define GRID_NORMAL_CELL_COLOURING 13 -#define GRID_TOGGLE_DIVIDERS 14 - -// Main proc - -IMPLEMENT_APP(MyApp) - -// `Main program' equivalent, creating windows and returning main app frame -bool MyApp::OnInit(void) -{ -#ifdef __WXMSW__ - cellBitmap1 = new wxBitmap("bitmap1"); - cellBitmap2 = new wxBitmap("bitmap2"); -#endif - - // Create the main frame window - MyFrame *frame = new MyFrame((wxFrame *) NULL, (char *) "wxGrid Sample", wxPoint(50, 50), wxSize(450, 300)); - - // Give it an icon -#ifdef __WXMSW__ - frame->SetIcon(wxIcon("mondrian")); -#endif - - // Make a menubar - wxMenu *file_menu = new wxMenu; - file_menu->Append(GRID_QUIT, "E&xit"); - - wxMenu *settings_menu = new wxMenu; - settings_menu->Append(GRID_TOGGLE_EDITABLE, "&Toggle editable"); - settings_menu->Append(GRID_TOGGLE_ROW_LABEL, "Toggle ro&w label"); - settings_menu->Append(GRID_TOGGLE_COL_LABEL, "Toggle co&l label"); - settings_menu->Append(GRID_TOGGLE_DIVIDERS, "Toggle ÷rs"); - settings_menu->AppendSeparator(); - settings_menu->Append(GRID_LEFT_CELL, "&Left cell alignment "); - settings_menu->Append(GRID_CENTRE_CELL, "&Centre cell alignment "); - settings_menu->Append(GRID_RIGHT_CELL, "&Right cell alignment "); - settings_menu->AppendSeparator(); - settings_menu->Append(GRID_COLOUR_LABEL_BACKGROUND, "Choose a label &background colour"); - settings_menu->Append(GRID_COLOUR_LABEL_TEXT, "Choose a label fore&ground colour"); - settings_menu->Append(GRID_NORMAL_LABEL_COLOURING, "&Normal label colouring"); - settings_menu->AppendSeparator(); - settings_menu->Append(GRID_COLOUR_CELL_BACKGROUND, "Choo&se a cell &background colour"); - settings_menu->Append(GRID_COLOUR_CELL_TEXT, "Choose &a cell foreground colour"); - settings_menu->Append(GRID_NORMAL_CELL_COLOURING, "N&ormal cell colouring"); - - wxMenuBar *menu_bar = new wxMenuBar; - menu_bar->Append(file_menu, "&File"); - menu_bar->Append(settings_menu, "&Settings"); - frame->SetMenuBar(menu_bar); - - // 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(10, wxROMAN, wxITALIC, wxNORMAL), 0, 0); - frame->grid->SetCellTextColour(*wxRED, 1, 1); - frame->grid->SetCellBackgroundColour(*wxCYAN, 2, 2); - if (cellBitmap1 && cellBitmap2) - { - frame->grid->SetCellAlignment(wxCENTRE, 5, 0); - frame->grid->SetCellAlignment(wxCENTRE, 6, 0); - frame->grid->SetCellBitmap(cellBitmap1, 5, 0); - frame->grid->SetCellBitmap(cellBitmap2, 6, 0); - } - - frame->grid->UpdateDimensions(); - - // Show the frame - frame->Show(TRUE); - - SetTopWindow(frame); - return TRUE; -} - -// My frame constructor -MyFrame::MyFrame(wxFrame *frame, const wxString& title, const wxPoint& pos, const wxSize& size): - wxFrame(frame, -1, title, pos, size) -{ - grid = (wxGenericGrid *) NULL; -} - -BEGIN_EVENT_TABLE(MyFrame, wxFrame) - EVT_MENU(GRID_TOGGLE_EDITABLE, MyFrame::ToggleEditable) - EVT_MENU(GRID_TOGGLE_ROW_LABEL, MyFrame::ToggleRowLabel) - EVT_MENU(GRID_TOGGLE_COL_LABEL, MyFrame::ToggleColLabel) - EVT_MENU(GRID_TOGGLE_DIVIDERS, MyFrame::ToggleDividers) - EVT_MENU(GRID_LEFT_CELL, MyFrame::LeftCell) - EVT_MENU(GRID_CENTRE_CELL, MyFrame::CentreCell) - EVT_MENU(GRID_RIGHT_CELL, MyFrame::RightCell) - EVT_MENU(GRID_COLOUR_LABEL_BACKGROUND, MyFrame::ColourLabelBackground) - EVT_MENU(GRID_COLOUR_LABEL_TEXT, MyFrame::ColourLabelText) - EVT_MENU(GRID_NORMAL_LABEL_COLOURING, MyFrame::NormalLabelColouring) - EVT_MENU(GRID_COLOUR_CELL_BACKGROUND, MyFrame::ColourCellBackground) - EVT_MENU(GRID_COLOUR_CELL_TEXT, MyFrame::ColourCellText) - EVT_MENU(GRID_NORMAL_CELL_COLOURING, MyFrame::NormalCellColouring) - EVT_MENU(GRID_QUIT, MyFrame::Quit) -END_EVENT_TABLE() - -void MyFrame::ToggleEditable(wxCommandEvent& WXUNUSED(event)) -{ - grid->SetEditable(!grid->GetEditable()); - grid->Refresh(); -} - -void MyFrame::ToggleRowLabel(wxCommandEvent& WXUNUSED(event)) -{ - if (grid->GetLabelSize(wxVERTICAL) > 0) - grid->SetLabelSize(wxVERTICAL, 0); - else - grid->SetLabelSize(wxVERTICAL, 40); - grid->Refresh(); -} - -void MyFrame::ToggleColLabel(wxCommandEvent& WXUNUSED(event)) -{ - if (grid->GetLabelSize(wxHORIZONTAL) > 0) - grid->SetLabelSize(wxHORIZONTAL, 0); - else - grid->SetLabelSize(wxHORIZONTAL, 20); - grid->Refresh(); -} - -void MyFrame::ToggleDividers(wxCommandEvent& WXUNUSED(event)) -{ - if (!grid->GetDividerPen().Ok()) - grid->SetDividerPen(* wxThePenList->FindOrCreatePen("LIGHT GREY", 1, wxSOLID)); - else - grid->SetDividerPen(wxNullPen); - grid->Refresh(); -} - -void MyFrame::LeftCell(wxCommandEvent& WXUNUSED(event)) -{ - grid->SetCellAlignment(wxLEFT); - grid->Refresh(); -} - -void MyFrame::CentreCell(wxCommandEvent& WXUNUSED(event)) -{ - grid->SetCellAlignment(wxCENTRE); - grid->Refresh(); -} - -void MyFrame::RightCell(wxCommandEvent& WXUNUSED(event)) -{ - grid->SetCellAlignment(wxRIGHT); - grid->Refresh(); -} - -void MyFrame::ColourLabelBackground(wxCommandEvent& WXUNUSED(event)) -{ - wxColourData data; - data.SetChooseFull(TRUE); - wxColourDialog dialog(this, &data); - if (dialog.ShowModal() != wxID_CANCEL) - { - wxColourData retData = dialog.GetColourData(); - wxColour col = retData.GetColour(); - grid->SetLabelBackgroundColour(col); - grid->Refresh(); - } -} - -void MyFrame::ColourLabelText(wxCommandEvent& WXUNUSED(event)) -{ - wxColourData data; - data.SetChooseFull(TRUE); - wxColourDialog dialog(this, &data); - if (dialog.ShowModal() != wxID_CANCEL) - { - wxColourData retData = dialog.GetColourData(); - wxColour col = retData.GetColour(); - grid->SetLabelTextColour(col); - grid->Refresh(); - } -} - -void MyFrame::NormalLabelColouring(wxCommandEvent& WXUNUSED(event)) -{ - grid->SetLabelBackgroundColour(*wxLIGHT_GREY); - grid->SetLabelTextColour(*wxBLACK); - grid->Refresh(); -} - -void MyFrame::ColourCellBackground(wxCommandEvent& WXUNUSED(event)) -{ - wxColourData data; - data.SetChooseFull(TRUE); - wxColourDialog dialog(this, &data); - if (dialog.ShowModal() != wxID_CANCEL) - { - wxColourData retData = dialog.GetColourData(); - wxColour col = retData.GetColour(); - grid->SetCellBackgroundColour(col); - grid->Refresh(); - } -} - -void MyFrame::ColourCellText(wxCommandEvent& WXUNUSED(event)) -{ - wxColourData data; - data.SetChooseFull(TRUE); - wxColourDialog dialog(this, &data); - if (dialog.ShowModal() != wxID_CANCEL) - { - wxColourData retData = dialog.GetColourData(); - wxColour col = retData.GetColour(); - grid->SetCellTextColour(col); - grid->Refresh(); - } -} - -void MyFrame::NormalCellColouring(wxCommandEvent& WXUNUSED(event)) -{ - grid->SetCellBackgroundColour(*wxWHITE); - grid->SetCellTextColour(*wxBLACK); - grid->Refresh(); -} - -void MyFrame::Quit(wxCommandEvent& WXUNUSED(event)) -{ - this->Close(TRUE); -} - -// Ensure that the grid's edit control always has the focus. -void MyFrame::OnActivate(wxActivateEvent& event) -{ - if (grid) grid->OnActivate(event.GetActive()); -} - diff --git a/samples/grid/test.def b/samples/grid/test.def deleted file mode 100644 index 3dd3b7a033..0000000000 --- a/samples/grid/test.def +++ /dev/null @@ -1,8 +0,0 @@ -NAME Test -DESCRIPTION 'wxTableWindow Test' -EXETYPE WINDOWS -STUB 'WINSTUB.EXE' -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE -HEAPSIZE 1024 -STACKSIZE 16192 diff --git a/samples/grid/test.rc b/samples/grid/test.rc deleted file mode 100644 index 571ada1f2a..0000000000 --- a/samples/grid/test.rc +++ /dev/null @@ -1,5 +0,0 @@ -#include "wx/msw/wx.rc" - -bitmap1 BITMAP "bitmap1.bmp" -bitmap2 BITMAP "bitmap2.bmp" - diff --git a/samples/help/.cvsignore b/samples/help/.cvsignore deleted file mode 100644 index 7957c41216..0000000000 --- a/samples/help/.cvsignore +++ /dev/null @@ -1,3 +0,0 @@ -Linux -linux-gnu -linux \ No newline at end of file diff --git a/samples/help/Makefile b/samples/help/Makefile deleted file mode 100644 index bccce53f76..0000000000 --- a/samples/help/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../../setup/general/makeapp diff --git a/samples/help/Makefile.in b/samples/help/Makefile.in deleted file mode 100644 index 76cebe4c89..0000000000 --- a/samples/help/Makefile.in +++ /dev/null @@ -1,26 +0,0 @@ -# WXXT base directory -WXBASEDIR=@WXBASEDIR@ - -# set the OS type for compilation -OS=@OS@ -# compile a library only -RULE=bin - -# define library name -BIN_TARGET=demo -# define library sources -BIN_SRC=\ -demo.cpp kbList.cpp wxexthlp.cpp - -#define library objects -BIN_OBJ=\ -demo.o - -# additional things needed to link -BIN_LINK= - -# additional things needed to compile -ADD_COMPILE= - -# include the definitions now -include ../../../template.mak diff --git a/samples/help/demo.cpp b/samples/help/demo.cpp deleted file mode 100644 index 01e9b6fbca..0000000000 --- a/samples/help/demo.cpp +++ /dev/null @@ -1,259 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: minimal.cpp -// Purpose: Minimal wxWindows sample -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -// ============================================================================ -// declarations -// ============================================================================ - -// ---------------------------------------------------------------------------- -// headers -// ---------------------------------------------------------------------------- -#ifdef __GNUG__ - #pragma implementation "minimal.cpp" - #pragma interface "minimal.cpp" -#endif - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ - #pragma hdrstop -#endif - -// for all others, include the necessary headers (this file is usually all you -// need because it includes almost all "standard" wxWindows headers -#ifndef WX_PRECOMP - #include "wx/wx.h" -#endif - -#include "wx/helpbase.h" -#include "wx/help.h" - -// ---------------------------------------------------------------------------- -// ressources -// ---------------------------------------------------------------------------- -// the application icon -#if defined(__WXGTK__) || defined(__WXMOTIF__) - #include "mondrian.xpm" -#endif - -// ---------------------------------------------------------------------------- -// private classes -// ---------------------------------------------------------------------------- - -// Define a new application type, each program should derive a class from wxApp -class MyApp : public wxApp -{ -public: - // override base class virtuals - // ---------------------------- - - // this one is called on application startup and is a good place for the app - // initialization (doing it here and not in the ctor allows to have an error - // return: if OnInit() returns false, the application terminates) - virtual bool OnInit(); -}; - -// Define a new frame type: this is going to be our main frame -class MyFrame : public wxFrame -{ -public: - // ctor(s) - MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size); - - // event handlers (these functions should _not_ be virtual) - void OnQuit(wxCommandEvent& event); - void OnHelp(wxCommandEvent& event); - -private: - wxHelpController help; - // any class wishing to process wxWindows events must use this macro - DECLARE_EVENT_TABLE() -}; - -// ---------------------------------------------------------------------------- -// constants -// ---------------------------------------------------------------------------- - -// IDs for the controls and the menu commands -enum -{ - // menu items - Minimal_Quit = 1, - Minimal_Help_Index, - Minimal_Help_Classes, - Minimal_Help_Functions, - Minimal_Help_Help, - Minimal_Help_KDE, - Minimal_Help_GNOME, - Minimal_Help_Netscape, - Minimal_Help_Search, - // controls start here (the numbers are, of course, arbitrary) - Minimal_Text = 1000, -}; - -// ---------------------------------------------------------------------------- -// event tables and other macros for wxWindows -// ---------------------------------------------------------------------------- - -// the event tables connect the wxWindows events with the functions (event -// handlers) which process them. It can be also done at run-time, but for the -// simple menu events like this the static method is much simpler. -BEGIN_EVENT_TABLE(MyFrame, wxFrame) - EVT_MENU(Minimal_Quit, MyFrame::OnQuit) - EVT_MENU(Minimal_Help_Index, MyFrame::OnHelp) - EVT_MENU(Minimal_Help_Classes, MyFrame::OnHelp) - EVT_MENU(Minimal_Help_Functions, MyFrame::OnHelp) - EVT_MENU(Minimal_Help_Help, MyFrame::OnHelp) - EVT_MENU(Minimal_Help_KDE, MyFrame::OnHelp) - EVT_MENU(Minimal_Help_GNOME, MyFrame::OnHelp) - EVT_MENU(Minimal_Help_Netscape, MyFrame::OnHelp) - EVT_MENU(Minimal_Help_Search, MyFrame::OnHelp) -END_EVENT_TABLE() - -// Create a new application object: this macro will allow wxWindows to create -// the application object during program execution (it's better than using a -// static object for many reasons) and also declares the accessor function -// wxGetApp() which will return the reference of the right type (i.e. MyApp and -// not wxApp) -IMPLEMENT_APP(MyApp) - -// ============================================================================ -// implementation -// ============================================================================ - -// ---------------------------------------------------------------------------- -// the application class -// ---------------------------------------------------------------------------- - -// `Main program' equivalent: the program execution "starts" here -bool MyApp::OnInit() -{ - // Create the main application window - MyFrame *frame = new MyFrame("Minimal wxWindows App", - wxPoint(50, 50), wxSize(450, 340)); - - // Show it and tell the application that it's our main window - // @@@ what does it do exactly, in fact? is it necessary here? - frame->Show(TRUE); - SetTopWindow(frame); - - // success: wxApp::OnRun() will be called which will enter the main message - // loop and the application will run. If we returned FALSE here, the - // application would exit immediately. - return TRUE; -} - -// ---------------------------------------------------------------------------- -// main frame -// ---------------------------------------------------------------------------- - -// frame constructor -MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) - : wxFrame((wxFrame *)NULL, -1, title, pos, size) -{ - // set the frame icon - SetIcon(wxICON(mondrian)); - - // create a menu bar - wxMenu *menuFile = new wxMenu; - - menuFile->Append(Minimal_Help_Index, "&Help Index..."); - menuFile->Append(Minimal_Help_Classes, "&Help on Classes..."); - menuFile->Append(Minimal_Help_Functions, "&Help on Functions..."); - menuFile->Append(Minimal_Help_Help, "&About wxExtHelpController..."); - menuFile->AppendSeparator(); - menuFile->Append(Minimal_Help_Search, "&Search help..."); - if(help.IsKindOf(CLASSINFO(wxExtHelpController))) - { - menuFile->AppendSeparator(); - menuFile->Append(Minimal_Help_KDE, "Use &KDE"); - menuFile->Append(Minimal_Help_GNOME, "Use &GNOME"); - menuFile->Append(Minimal_Help_Netscape, "Use &Netscape"); - } - menuFile->AppendSeparator(); - menuFile->Append(Minimal_Quit, "E&xit"); - - // now append the freshly created menu to the menu bar... - wxMenuBar *menuBar = new wxMenuBar; - menuBar->Append(menuFile, "&File"); - - // ... and attach this menu bar to the frame - SetMenuBar(menuBar); - - // create a status bar just for fun (by default with 1 pane only) - CreateStatusBar(); - SetStatusText("Welcome to wxWindows!"); - - // now create some controls - - // a panel first - if there were several controls, it would allow us to - // navigate between them from the keyboard - wxPanel *panel = new wxPanel(this, -1, wxPoint(0, 0), wxSize(400, 200)); - - // and a static control whose parent is the panel - (void)new wxStaticText(panel, -1, "Hello, world!", wxPoint(10, 10)); - - // initialise the help system - help.Initialize("doc"); - -} - - -// event handlers - -void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) -{ - // TRUE is to force the frame to close - Close(TRUE); -} - -void MyFrame::OnHelp(wxCommandEvent& event) -{ - switch(event.GetId()) - { - case Minimal_Help_Classes: - help.DisplaySection(1); - break; - case Minimal_Help_Functions: - help.DisplaySection(2); - break; - case Minimal_Help_Help: - help.DisplaySection(5); - break; - case Minimal_Help_KDE: - if(help.IsKindOf(CLASSINFO(wxExtHelpController))) - ((wxExtHelpController *)&help)->SetBrowser("kdehelp"); - break; - case Minimal_Help_GNOME: - if(help.IsKindOf(CLASSINFO(wxExtHelpController))) - ((wxExtHelpController *)&help)->SetBrowser("gnome-help-browser"); - break; - case Minimal_Help_Netscape: - if(help.IsKindOf(CLASSINFO(wxExtHelpController))) - ((wxExtHelpController *)&help)->SetBrowser("netscape",TRUE); - break; - case Minimal_Help_Search: - { - wxString key = wxGetTextFromUser("Search for?", - "Search help for keyword", - "", - this); - if(! key.IsEmpty()) - help.KeywordSearch(key); - } - break; - case Minimal_Help_Index: - default: - help.DisplayContents(); - break; - } -} diff --git a/samples/help/demo.def b/samples/help/demo.def deleted file mode 100644 index 060bfe3fce..0000000000 --- a/samples/help/demo.def +++ /dev/null @@ -1,8 +0,0 @@ -NAME Minimal -DESCRIPTION 'Minimal wxWindows application' -EXETYPE WINDOWS -STUB 'WINSTUB.EXE' -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE -HEAPSIZE 4048 -STACKSIZE 16000 diff --git a/samples/help/demo.rc b/samples/help/demo.rc deleted file mode 100644 index 3bf71d6da0..0000000000 --- a/samples/help/demo.rc +++ /dev/null @@ -1,6 +0,0 @@ -mondrian ICON "mondrian.ico" -#include "wx/msw/wx.rc" - -#define MINIMAL_QUIT 1 -#define MINIMAL_ABOUT 102 - diff --git a/samples/help/doc/ClassGraph.class b/samples/help/doc/ClassGraph.class deleted file mode 100644 index 3c6afea84468c9da332caf0b750afca416c20ed1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1146 zcma)5SyR+N5dOj*$%Yg{P!JLCV+qH4;Kd>qEQjcVl$2OJS;OwIM#CgEnFaJ;S?W@y zRsH~flx5Ez5K10=NOz~Fd;06Idw&1<@e3(TVBNxF3lA+kvXHlM-^5cBFHF2Lv0!4x z#Iy;|#H5XG4BN1ANsAF1S=`jtbsH8gXzPmhUCqJ7E9b#Ty(IC=MLtu;@|;p zI~d29gD1G-U>0{BEMnQgOUyecV^jyPX))zs3HJ=xrBK9*3AM?BIyW$qA1!}id#u2s zDB!9v*Hjdw_<<@K$ZqqUP*R}V3JaL16*iRgMU76+tg$`6##AWh>q>>ffR}Gyx33DN za5oAC7pmB)al&aJ#i~_;w0KbAk@5+cf&La43S0`p{WAL$))j?pgmqcrOMXB|296+8 z)PlduMNGMbrmtKISR5})7QJ6*f(PWg)y9*=-A0pi889n4mlK3kest47Z;h)HWDpm= zs8TluEGA{RU-hMd4BJthv>i#l!=>ca4ga&I>!^<-77V0);Zu6@Oep3HeL>rqoC4h* z={6{_6jtfdo^n`W!6uVF+YU6;tmJXCTyKXHK{I^wx~yk&Ova=JW1zd~>2R8hx$4*s zHM`Cv+vUw>h7&_tEv6gBMDm$aepCvByD>^AbPjgp5D?rZ+q@f=Y$u6>sm?HU%{yrjy4C!~C zn`zLld2X82s^=P{);zb1)O6Z&Q>4FQ(EAB{D|HCBfwN>=TVq4%@d>YiA^Of8qW?Pv oJntI@8t8r7HqJEA^My)i5cFi*h5JZrP#NzK=R3y*a&)2e7rP%R2><{9 diff --git a/samples/help/doc/ClassGraphPanel.class b/samples/help/doc/ClassGraphPanel.class deleted file mode 100644 index 4e3b5162cb2ae3b64c20d7b16d5e2918121d36df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4084 zcmbtWd2kz78UL-d(n_lx+fk}CqIL)=rjDH0Z3?E?O(1dF)Zip-+$6OFL2GGkE0HBv zTKOmiN*frUoCR7MppbHiqXiOdIn+J4$`Kgud!T>v2gCo&Fbw7Qy_KwWZ8`z$(R<(f z-gjSbFa7I@rxCzTJQv3A!?-()B?C_x z_@jZZ8Ymn1wSjjSc#DB24gA@_hYftuz+DE;8u+Gx83Ug-u@Og1Y{qF>3K1S}6(}7+ z0w?A8CLtLy@ek7zCa%JrLU&Luih?^V%Lx;kFfO;pBZ$G4V=97nWJFs@NXAUG;SS+_gIpXETuyGM zO0|3D${+S$BAp)D&y_my3@kk`;up4MOv7s|!7b8}X7 z=$XPSFG6F^c%jI%Icb*;61u%`+R2xA9?03Hk}_WWq1yEF>X z$+}h1bfKJg>(RTSZh()0>f<$c754DhDW<%C`zXz_GZ_sVeZf%Wp-Lt)&8)hfgXWOR z%8)%@D7%!mp<&cu-gPD<`L16_t#sCUcKH~4dOGL0J$uzAMdr-8{T_Rs_@hULl$pki zohv(s$C-tklb>)WHC(ffCH^X^nM^+#U9eIw%z2)gR6rS^P8Ft3Nyt^cFnN(UXyna3yOJ%%OKHG$qNQl)s%mVD{ywD4*)%PTDZ_|lM2CYIf7t~QZWZrFpQ zkFE8Vf^zh4Hk%RIn*3Pf+R63nVlBT!tEDl7xNK;fWuk4e1}$KZ$AVD;mEq6Qcy88~WK7-MRNGK4;BZng6cz0(H@8OpF! zWNL|L%qJZg3>373iLIq=^&n`x12sv_Lxr@RJ7yQN_E^r5dDFn+tJYmfeGxYOodlq zb8-RQ{2dTI*9&Txr)>&j`Y_ijOoW(=*i*#~hqb%hMDr3l`&uf{ zj|X~NNv_21B1!O3gmi^cas}nTP6czl8}!~-!irJ;%N|B3&>JH`hp1e}l_Lo=(UJ(p zTjR0#2I7<{-Afo8PL7a5Pc71VI{K=!&&QId zLl8P~9T(6aYf`rB=eydBOnWHP)?USK4^AogykdrYjlDQ~DAR7#*+Z#1TxaJ8-g@j- zLwm}no$zYy{BV46cG2#!bhU~0)$IIs^wl=_#o`Lk@Z>9tx^sIAO$CZ_M{xR~rTFV*K0V!ORLQf=RhM5mt0(16G4h z?ntj_Q|+}AX_FpFO3yTqH`S0e`C`m#DoxK&eL$%nZHQf^oAfG$b=&?cot37OR1i`M zj&`-xt+{LkVyq|>6KKD#P7FQN>Io`6lb5N-@1sw4y_kHcb=1vL9Y-hK znrg)4g=MVr#%bWUo;Y>>U&_~G++IxL5b99Sj=o?bxPY5w*_)D} e2-P-^>Wr?%bsjk-Kz}0PdE44P^*?$A&Cj>|U diff --git a/samples/help/doc/ClassLayout.class b/samples/help/doc/ClassLayout.class deleted file mode 100644 index 40eb67e0e98927ee4f295707fa8d0b1dc7888374..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2412 zcmaJ?X>;3T5Pnqauv|^fs;S$$9EH}g+lH$KoHjtxgFw;-0)YYrE4Jb&$dZxeq$xLq z8-^REP(GB&Oa?vylei4bFnoqzz@MS)zH%IA(jl35-(&aPefHVa>%ac}?GMCo7~jS5 zg@%F#Ps5akM>Tw;;WG_SXn01$oQ5S0-)g97cud0^8k_{WaHkFf`2-ReV{x}m;(-J@ za2KyeSo;zJfsA~f(c zKHxyKdXB{+D_%s&z&R8RT*Au|y5_8TYrwU<^1#{YIlCB2P>(sD6Anq}5jtxj92oJv z&~iLGkdT=4>p{^z<+!$loh^$oYtgTV8)0z?`yi-M8jbJlmw$}ha-Na>U*}w zz(T(&q0<#av=OG%s#cNGYG<=`DI!qNA3=?9k+(F5*c`lhO9UtVsDzGI_7lFtAUcbF z-P=G#bo8Z1n|VbUtUDo6UB75?4QLrS<=Id$y8-irQ?b38&@1WDQN|;?q6W&06Vxc0 zI3^gID399c|0s`_oLXpkf)uM%idv_QNxf*f#mSH=BtffE$Am6n%v`?^QDr%|7GA2F zv`B;cBt}gsVNZ*LEliVbM554)TOswUvfz|>?iK7h{=fudp!(Pr^%}yw2|8?v)QfZMPYTdiunVe=>gqbEmApv8G*{IM9KNzml301zQJyX%>g8;p; z3J4wjgI_k1;73r*^el>*-c6b{vZLpgzgo}8uc_%?9F&fgk>T9@ds%`BmdRCjNHA2WYf5!Bm>c=02w^sgkLt zu3Y;uL-7t#sQoljg(#-{I}+y(t>Ok6yUBBb=9_5jB}av;=>3Vn@*n+1G*g%-dNn$k zWAw*kLn}C+O%dQfVdUkc%$Sv=yoy~)QX#Y)rXZJia(~4@A*Zsk=Mqd)rNjNp*po3; zB6|fr;v}^UU7VzrVp3}Fm21oE41d+4v4;xA46B?{e}qv&c^#vaBAT~TZMsFuO`t^d z3JzvXf+)ZeJ_f5MRpO1Kip9{9ESWNe{U?@FR`7S$Br9Q0hHOuDp|li1-}mT9YSD5H zeMwcQSeOkQVe{^MoRd^aIo;GRLyhHh-sch=i%8g)jGJP;OE5Gm9F*3OUV)j6v(YY7 zk4i;{6o6`+Hlv7)AXQS_LIbz|f`eShtJuMCZ|;#AIKc4_H*iY>dzKW*R4AvT>r_5Y JHierarchy ClassDoc - -

    Hierarchy of classes

    - - alphabetic index


    - -

    this page has been generated automatically by doc++ -

    (c)opyright by Malte Zöckler, Roland Wunderling
    contact: doc++@zib.de \ No newline at end of file diff --git a/samples/help/doc/HIERjava.html b/samples/help/doc/HIERjava.html deleted file mode 100644 index ae1ed66918..0000000000 --- a/samples/help/doc/HIERjava.html +++ /dev/null @@ -1,15 +0,0 @@ -Hierarchy ClassDoc -

    Hierarchy of classes

    -
      - - - - - - - -
    - alphabetic index


    - -

    this page has been generated automatically by doc++ -

    (c)opyright by Malte Zöckler, Roland Wunderling
    contact: doc++@zib.de \ No newline at end of file diff --git a/samples/help/doc/NavigatorButton.class b/samples/help/doc/NavigatorButton.class deleted file mode 100644 index 9f447021d04f4e91483db54bf2d21718de3f4f43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1741 zcmZuyZC4vb6n>TjCT#W)2n4L9inb^$(A4*r*lI~>8;va%O9fvi%O+ji?5w+!0R9v8 z2l%C5>}kT$p5sS*jz7xdo!KOWLqBBh-1mE*dw25he}Dar6xQ%_247_GO$N6asthHD zm_aZcF@y}CGi)$?#^5u2%TQ+c%ETyE#*xFDCMNKf35E~V@wSpJnXs^?*bfxDtW4g| z!o=%}eQz9TyrFKdDTO_bEZ$Ydt0tLTR*HAjaYY?P3tQk8?%_uZALEXN`}o?zHV!O& zj~f>5;(-N;hB}D-QfaSZ*TN253l6@s5a1JKw{PK4h1$a{3)fYs7TU^f(?ShD8JOPZ zZC><5aWnD)xg{f)Hw~C&5yX-Qa+~`t*8p=wAl*Yrnm|NN?%yPy7*BHFa}p-MRMoNg zfh;OXX?fc~rY8KoM4why1GziA?KQX*(Rxct5f~`+9DN=%id2CYG_>!;AY57aBBFE~ zhmIRck7_e8d6G@5OQc`$;)Mzo8r8W&RgZB;8Ixj5v?9m7>G>oz2Vs-CCN-ZVKZ>PG z?Vn3b!q9hR@wz4iNCH6aB(LsLr3phfpw?1Ls^w87zG}dVABuw;!f7>Kh1HlB?CDF^ zi-&5=G$L_Ob?aoo8m>%AS{+8@Zf)On2+bt#5J>B-dfknv?_`ErGeC%{5iJUOzE|#Z zdLd6^*TDE~*KfPhbGU*00GqOCh9b}fPb47%!s7nDDtWO`?TSyproF(UBu0fMEk!ar z%G`>4($)0p6cX>#8%9CWWwA%om>X`jH~dOP;W$wh4)?ct{s7Hp$UrIm&t z>7zsqokFj_PeZ1OXn@{SFKoX*l{+`Up}(ZLvd`oAR>Z@Hmz9!Gi2LK3)z)VwV<4-Y zs{BZgVrJ>=3<-$!=OAzz@r0u-JF||Z-Q5H%^Q1glwU5+TuFPY#_>500kv(r8MLm!|Y;X}aE{^iFA> z-XTrtY18zYrYX8hL@-dN+wT}dhUjnh$}wKG3!@z@+G`zLvR6CE+l6!o=j_5*2N&%E z>)<8(3Fe<++I|XaCqI&&w2m>?!90m)PsF1=@hpiKe<9b$Sm@%#$GGqmZ08s+taMSx zr|9Tnri&>u%RfWbR#CbX{0T1pny~Z4{-KLE@B=n`MK9C;ib2u~ClT`oMYFqjxr1Vs8l`cdi;*)q&v4wGbQ;8QwB(EJ}eNUnAO diff --git a/samples/help/doc/USE_HELP.html b/samples/help/doc/USE_HELP.html deleted file mode 100644 index ec4dc5bc07..0000000000 --- a/samples/help/doc/USE_HELP.html +++ /dev/null @@ -1,38 +0,0 @@ -USE_HELP - -

    class wxExtHelpController ifdef USE_HELP : public wxHelpControllerBase

    - -This class implements help via an external browser -
    -
    -

    Inheritance:

    - - - - - - - - -
    -

    Documentation

    -
    - -This class implements help via an external browser. -It requires the name of a directory containing the documentation -and a file mapping numerical Section numbers to relative URLS.

    The map file contains two or three fields per line: -numeric_id relative_URL [; comment/documentation]

    The numeric_id is the id used to look up the entry in -DisplaySection()/DisplayBlock(). The relative_URL is a filename of -an html file, relative to the help directory. The optional -comment/documentation field (after a ';') is used for keyword -searches, so some meaningful text here does not hurt. - -

    -
    -
    -
    -
    This class has no child classes.
    -

    alphabetic index hierarchy of classes


    - -

    this page has been generated automatically by doc++ -

    (c)opyright by Malte Zöckler, Roland Wunderling
    contact: doc++@zib.de \ No newline at end of file diff --git a/samples/help/doc/aindex.html b/samples/help/doc/aindex.html deleted file mode 100644 index 7f7746ce2e..0000000000 --- a/samples/help/doc/aindex.html +++ /dev/null @@ -1,21 +0,0 @@ -Table of Contents - -

    Table of contents

    -

    Classes

    - -

    Macros

    - - hierarchy of classes


    - -

    this page has been generated automatically by doc++ -

    (c)opyright by Malte Zöckler, Roland Wunderling
    contact: doc++@zib.de \ No newline at end of file diff --git a/samples/help/doc/down.gif b/samples/help/doc/down.gif deleted file mode 100644 index fdf028aff360031c13d0aefc17067c8debd72185..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1939 zcmW-g4Nw&48OPt__*ghU7AkNcRSq$@e&8)sVWW~`Mbw2fxS}Cz${jYV=Heq3lnFQT^BOp_cktvEKF>$T6!JM(|% zKl9A<{QmE|a&>ii*~UUp2qplC#bOijibiA6Xfzy-ghG*EFk~1KgweRr^`NGisw#`3 zBnTqU8?p>JPKGe3D5fk+Jg-1#h@vJ4D#xiTt1t|rD2X6sf)H?A!f}XU5&$9q5C8!H z9smvi761kSM3FK@Y66dFN}@=Ca2QC^M5sYQ=2)I^gf!JuWL1Q+z)Ktp85+`*CW(mW z6ov{LdPvuTnyMj5h5{0JfuSXyLo97-swD7`V+|y#kT+CC6$Oc7c#6;@h(stsA#7+N zT{RRWatvhYSTqvU6jPNoBqD*6cvfJjiAXqPXtF4nnqsJO*icmzN5P3a8`NaTQgI)0 zblB8_x?*aw5w`^n@~p@+NMHn(2Hx;CWjF6!kK`p3CaSo;e6`4UC&N6_OStL>rl7c|+oSkJbT8&3R z2?ELU4vw`mx}?cG5*Y|-L7?Kn>6)a<0#aeTk-=iLq3AM1oSk8DngNul8Vp9!fRq@> z6D(_|DL_Qy&p|g4lu&$QlI86Thtni*NP?(9BnuLX_a`}lV0i~a140#LO;SXfhZM&X z42zL*S`(3|E~_d;iXcg>z!5Zq5gbOcfQW>`GB2|KyAmvL=tv2hL6H|U5g|_C$#{-B zf}+T9EU+U1h82wmc2iN+cnA(MtQ$d9V*##9NTXRE;AUJ1P~`=M;}wF^1*pe0%ORSP zNJ?@L$U%s>9pQEeFaW^(_=*37LIAKBuwZ$s@b;Mi`(X65lL3da5+3 zw4!!S*9$W$QY=5HEqD25EE9uEhq@n~Sp|xgCD;R9Ep)~1LEo{ut~0LXM*`{KfqV4E z{DP@J{wOChDK|0k{od4!!diU0->Wyzo^(S0NlUms_0}`qlXJHPujH&9-Dgc%^KrLE zS7(t8TGLl|zt}QNZpSY>drHhB>&lkDaow@9>+r}W`r^0m)aHcd&uAGu_x$}=Hr1D} z)!PS7d|2{I8kXUefQ+) z;|-r>tb6}f@9YiTYNE(qKbO?(A9~}&Q-a7p651xkv!?of$_nG7xHJ>;OOeU8p7hf|EWYYkdJ&6brex5gBZ-GR~{5eFvS(Uw`Rl#rj=4s;wi_ ziUz&EZ7S(p^y!GVX3j^w?2&@uE+?J#k2$fSYgwCGhHaI2TiNlwr*~!yI!}YKL)0v} zZa>Ir@+TdrnnQFgdgoG~ZNZh%f2A$>RbqbUbF+NymYLrTj~&RKOWE4XJBR7iqVA#l z-~Q(5Yt7zSw`*Jb7N@v5H0t{IvvjqUI{yj|mmW*;kjQoQh8&~9@aI@@mn<2Tx? z@E84~QJ1@I`5^+`$pFAo|6pL&iI+1@Ef{>5aARhND{!#F-Lu=woNjAL$}Vetb8xoY za(~qV>)qzg1pr+`qt`MNKs3Q65Bw6K2-T>mN*6 z1F)t*;^Wr3t!X)+%VJwBZCsbMY1hVWZSKI1xAEHZfvL+L%hu|ZiFbh2a<|7XWo@k0 zq-@IS_e|%`UU)s1|2nTfy|{ho=#sIXj%nbVt^O602WnVZroQBQeE;4%{LGSaTjo7pqI%7I;{$7!J83+9o;dysTV|Pb( zJ$CiOe~yBZw!X~2jd_Z;es*~4=F_>2!$}1_W46Z2bo%dFJw^6?SheqD!k(dyqNNtw rmcP^4!}mPJt=G_x0+#Rh25ywUcRJ<8faR%o$m75(6W*SLfhGS1eOy>- diff --git a/samples/help/doc/dxxgifs.tex b/samples/help/doc/dxxgifs.tex deleted file mode 100644 index eb32b296ef..0000000000 --- a/samples/help/doc/dxxgifs.tex +++ /dev/null @@ -1,4 +0,0 @@ -\documentclass{article} -\pagestyle{empty} -\begin{document} -\end{document} diff --git a/samples/help/doc/gifs.db b/samples/help/doc/gifs.db deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/samples/help/doc/icon1.gif b/samples/help/doc/icon1.gif deleted file mode 100644 index f78f30eb981225beb16035974453af044eaaed3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 326 zcmZ?wbhEHbSJz>XZiWhW+$CxX1K<{@Q;PzA3MW)Hil!>)yLQv z&I+YZWR4Dq0Qrf5 zE!m-=z(Yr>|42iEfdETiOVhyu2Ne$2qlXS;Sjcg9G-()EC{6Ng4B9Bb&hGxWX`zGB ztnbe@Mi#u2t#oD*5s{NGS5Q=P;Sv=Pl~k5hQB-wRQ&*Q#oU7r^r6eV#G~HwQ3KvHP FYXI`hOxged diff --git a/samples/help/doc/icon2.gif b/samples/help/doc/icon2.gif deleted file mode 100644 index 6cbe01a831d9c27158ef1ade66cc25446fac9018..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 326 zcmZ?wbhEHbvUV_sg0vVRlep zUT#ibUH$CLjP97|8hg8t^_%zaId~E%=;f7aZRKxk>swYjH7c^q#Kc`$*&sZ;+`~Ol zL*3NdE7jE{7APVst6^&DtgCA)C##W~TG-k;MN7*vC@7wR8bI+U3nR!J9S{NX69Zea zLqmawj#U4Vh6DovmcEvzg9Q#M9Ii(X9muedZ+!$E~PkE!<|b>N=j+E$MO{}jttfS DX0}r~ diff --git a/samples/help/doc/index.html b/samples/help/doc/index.html deleted file mode 100644 index 7f7746ce2e..0000000000 --- a/samples/help/doc/index.html +++ /dev/null @@ -1,21 +0,0 @@ -Table of Contents - -

    Table of contents

    -

    Classes

    - -

    Macros

    - - hierarchy of classes


    - -

    this page has been generated automatically by doc++ -

    (c)opyright by Malte Zöckler, Roland Wunderling
    contact: doc++@zib.de \ No newline at end of file diff --git a/samples/help/doc/logo.gif b/samples/help/doc/logo.gif deleted file mode 100644 index d92bbc60a166c8658465cca1b21293d5a03b50b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11338 zcmWky2|Uy9AO9LVuuHBv+oD{_=3Y`W_fRt>EoDqOMy9!nYM8l3jwuy2Ig+R;XXl(D z$(2;9Mde6Z>Co}Z-~aV`UeD`!KA-pJcs|ePdA&Z*$KBJ-o)|0w_`pv9SY2J6n3xzE z8tU!sy?5_kLqkJ#b#+-;nNTPc2n5N=$wVTNKp>#eXc!E(#$eLvGzx`6Ca+Pe1p+38 z!bGDvX!M#Y4#9+Ff}@$>l5uDOi^;(N$v7Ab1MpZ(7LCF&LDR`ZCUFge7P9EcCNM!V zCz*g|;Q$tem`uhc6JQ(@AelzwPzZDahHQf2kZ~*mj7LUuC?*^-hDAj4$gnlTLIH2h z2_g=bOonlY02&5xD41jlT9C|SQcQSsTrzEK3*(RhCXL9W!H6bkCY_SZBqq~wbTWoR z!>}l59v#i&(1-*ajf~^aO;|LXfMr4>!kA=0z#;OO7$FNSV8U2*LNe2Y$3&9}YYtNc z9Ft@wPRPLsSZEvu;H({tY$8Y|bC?7=1;e5NLLP-lLzgA5feFH7jDUj{CZmNsq9Az< zhD&B)cpOYJYt8i9fYB&xESO-8%fkr;=rSRC?Gl=s|9=S_4y&w8uoh@0lV)Oq<8bIg zA&W*MvRGuHkWM7x=yU>wf}zpS!ZNzBjKvesImr|jhb%1PlvQ(*c{C=AOlJ})YY`AK z%Nml)8rDc;8k0t*QF@1l1Z!HDOc)xyhNG_yRx$=>f-zac(@h9O9D$4>Pyig6KqR9v zH~>c>km+<5kI4~`X)GLplFVBZ=Mc#>435APl;KQ>7!wK_M+VRYfpE>dfJSFgXiO6V z8I7Z0a73Ph zU>Fz-2ZIp+00#hT8BBlyCNKbpL7ULl6w;Z%8snFO8~|W|&1-Am|8D|-tpWs?u7_CE zkq%Qe4eS$FbY-FqC}kdvmwR%Rp)h>dcRN zS{Hh?Ne|D+0w8ko{z`h3Z*KwT`;3muo@1M=gRb>{KYx4?(;5wf6)4b~u01P}hhx23 z>S}H@_LpAYY8xLZJ~&ht`Ld?rO7D#%bBKD|&v(F)2ZP%kJ}e%-*(FZN(`kLYf2wXs zmm_J1G$5LILSsASda%FFUQug69c ztX!s6p2;aRnQYhC9AL#N9cL%|=Y z%!|jyy`A%{XRwudz*20D3dn2Znc!r{?x)HpH&2{J*cn8Gjyi#K(O%|nuw#^Hw0|Pf zdxT^VYIeVDIgglGKDIw*zG_Uz;eHb+7l)e$ueTF7(Vh}s$353Ido4Epu>ZLz4cG-@ z+YI~GjMKaS?4GQw(q`*N3@dRqsv8vZ zqf>WUp2eCV@WhE`J~oYW6SqggLiG=)!@hZh53GOi|#jfp+->4t1|-@hfbvLw3G_vcRulT zo)`$dC7ZUl(7MTK%h_x@gQ$2=)s;utDECy=9m?BsJY1pd{JIVQHjVvwIc&((^N#s! zoM-;&o4?m^^FwFr?cYd&k4*267wvreIbmLqK;8R&(5j(3H}}TfK}(;i{O?CE5dt@j z&00VMLdt^Dpvd zj(>ROvE~pkXyCARP}3tSp)mW}?rxK?cOY$<2#P=WRw=k?M#sp@UG>@*7lr%I8UtW#Hd4_!X#4r2H=lfETARD9a&f)Z;ua5*h*$@s0#`kL3JU69l(8GkMq_}u++re&MK z!65=~9%Bh87}jt7P~b`5;NkS~Jz3*MLB>o?M{a_>IaA6AAsFxL=M&Pk{aw&$XN-CS zoYEuHpRWU#S9E;XXutz2zR9hV&*iN2QNLRUHL%-PcWJ!7YC>f_N~|h`M~g@K3R+zI zTHo63xa{K>cV7YH-1Fk~sJgBF7>7xxGn|61Q!bV61YSic`^Z-<)$t*9o6@%K2&(^Q z>nz;Sq}^q|!GjRl6dt^;3RK zyRc~AWgGX>_ijyvAOM!GDG_Iw1y&#vtDtgSfvR%r{A)RIQ?1DO!7tbCk!SYAoxe|Z zqwgn}c>fotSHj!9PcwZ0`UzIOP=yV)?z;(E1;Ty!#?+#KfG2nUWr;Rdc?yqKbj);Y z%vfX>IU3J%A<{|=G$q6)C-`)zF5{{^G0$%vTwiqYTT-!-k%RuMJ+k^~CUt(n!gQZ< z@fo$Wh-RN_-KC>@BgFpOO%QTr2^WrbZ}PnV_~XG}N?l1Mje1`_@Jmr&PNc>He+U}KBlKbQy=J3Rd$gV;*?y)Q zsz~*_q6Ir!mV#ln`oy!=c_`# z?{snZ9C5lxbv%WGpLA&r{w>aQtUqkyIm^@+YHaMk{$&eWREcSlxY_06BIv_py}1=v zTM!qBG(3AJovc>ib9-}S_Y3`-*lU>;z9X;kzqI!s#yHwHZJtna;FB%g{kI;qh#<+g z+&V$^Mv;MsNzP%N|E*XDHs)(27VAG>?e*_$_eLcb3~GO1pSR}YC`l5gzE8Ki%}wvz z{Q)zHZ%UQ#nO=AoVf@<(@alc=wxa*0sg~v){pU8<|2rK7e>rig#?v~$spv^tmB!*E zf#UNE9&N}2qKLgLQHSl&?aB-6(+*wdKPn{$LABcY{#ZvoyAZsYskJop)%>tZSL`(NQd!UQ4!mhn-=ti3)ztcvhOxlT(-Syq7#=Dz}EX2YmI!{Kl zqa|Zlz0W;_sZEB&)9HH2#ST+?V&vY?uLm5`Ap1_M{+$xJ(ZWT%@^}_qf!0lQ&&Q%Cf6-3dA4oAni<_E ze>9!Si9Sg{j4%At`zS)f6;kjD&UTd>ABvTaowak~AO>3D%V^ZHEJQ3uElUnaE{9G) zqwTs9nw$(VeL=otw_`?#J9xyqu#+$sWMq%_V*}L>5+y|8CRm0XAFF2Y#_Px>NLt5SDLDE3Bl>zh>obw!??nedF|Oh1>snH76S#EwtD zC}#%{#-y96E_WuI6HnlvjxMl<9r?FMO**&AR7XV z4q2bPi-qs%M&T8LHZzT=wDfhp2F(Dx6OSOw26dK3W(SzP^uxZ9<}AvTuh$yL-p4k? zYZN1`F2m#Y|sNK(oi1d=UM1~75U?G zV&uM@Be%S!BnTxD(3%J+h>%WWTTXnni6ojW*!xTrL{Ao=;^q-k!y8Aq1?;El8!Hf< z0DMpcPwz)MRASzfs9EO(hu)b*_9@j$5PBLWU3_?R$gXD6xikGJ+q0-$3D))DDS^Lo z$5;E6vhe4XxMV36#^<^;GmR15S&IQ~1y+a&?Ab{MYDq?ayC>H33?k89P3EgSE;((# z0hwEIVur1MovEjIPB3n$+{aadO7uZo=lUN}MPY_>Xw;+x{vv`S8!jIx2wf;W*8I%2 zAQNW#!c+?E<8vKOx$KZ?Ueca6Tf#=XIE-jmE1J^b%a{3f{TKLRQ}tzm8w7c)5Gj)) z7p0r}kCkUa)Iy8NL@T7Uz$T~|`3dd+je(E=mvQG&eoT= zRK0PTQo$bd6&zAxucH$$SmK7ki%|=*YMc^kP7FxIB_>+Vf4a7&^dU&8z~V2n%$sHB z+%L~LU3zgCwIWq&$M2+!=8Q8kKNs$oTn^TFhwQ|{2k|J$^V1pXB(BHRPIMJ34VY!u z-0;Qi_eA{Wl2#<}pgN>7L#djobozYJ9Z6l{bX{lS0Z;+ZHf9LVIi^#6X3h!mReWug zglw158$`I{t?o&M#V$mPSvEqGR=Xgn9~Z$pi4DR!IQRA@Fx$}WOvKDtoM|6kCPK=v zipBVwRbn8&hnIWKOW#C)>8I*TYEiBKp3*CcJEzTlubM^(tKhMt+wL`TyT0f{sM!8K zL(R+eh&%N>^+uO$PxVKd&UMa+IGsB!I$vcj-|%%sRK-&=XbD#FjSJ$~PeQ61Vym&? zY!pe#%e-*q{apvROX9zd%zSyQ4qg);#IlZQt5QFOaY(gJv<8~K4Gk#NV* zySBt@8u?Xvcz?^DTaAfY)5zDdOU!h@Z?~R}*CmUvwvrLSx(kA(;a2NT#HV3u`(c~A zv1@^L_*>c@=%x5h+P<;Yk$^+k6cheQQRb_xbkKmIqTh+TZ(AT|8QMoNc!@|d}H4C`+TI=>c zU?@qYsH^NVzk2R?cN#uT)K41I5$oJh;iDc5Bgi*vvEGO%?R|_9i+*F#&NPH?%LCVi z2gQoYFkkPK%p}O>&gYlS|4JovFGchsvNzM>%tquJ8R9>zv1h_ht&`;M zh`l_&| z6F9p}>ORHjK1Bt4lqFKO88?f8b*p%@F%f{>01V_t-ix(3@U7W#bE_S_RmMide7zq$ zsQe7rc#o~|k^#`=wE1kM@G=!BN%%{f6;qEKrxO0Lb`6s1V>1AmhV{3v%Ez}Mez8%V z^(Yr_MK^CnffV_sJ?n=HR#l9P`+ibhjM%-cpVCrwthi@36)~biX$F)(0Cz4VB7D+} z`T)5|2_zT~b|-f`ybTXrS!Jt4-oeFB>)fu3{<*F0NAj*cPoJy?dM}_4r4%8%Ny>9LRA&mR zdz)NupyB~Dcm}*Rv<*Nx%6V-?h)vNoZu|!l!%aCYAt345i} z1Hf}+h!<|~N5fk-O)4Cafy23wJ9C%ycY|gT zJo#8d@v6`B=f|IS7d&UrkC%MWd6a{EbelW(1>rB2zv}bS&IC{b+JDmaJ;0%wPxOa5 z!pB?>yl_+QmYHp8Q+|bpSVT`H=RG^|3Iah-%4QJ5j#}{Vhtv+EvXtNw39?D(M>ACR zNpA2^c>P`))6K;_6QTY9XJ>t$Kgwx(a?4Pe0WK1+b%j_<)UBWnC8FA`S?+7i&Ns1M zmsUTG&$%fp95mW34@o>R)&FXAD;B(TcVGwZ?P8zd5BB75*;(y>2BZcxx$!B*jn|gx zxFY_v>3vi;ym4R{x#jig&^nw01MDw`*bV^>62&s9YTH|*sp{&T80(!`cD82XN!gp{ zt2Bh8rjYVl-c2^@Cj*;1&i6cqy2zd=$@RC^rOp?;S8I7cv+!R3BK#)zZebqK_t5AQ z_H6k5>0iUhsMjC13@MLc<#rB3%*-M2RA{mkoWOu`rO;5kl}8A&qy!nApMt9|DQyjW zIgWQfnLoniQI06l(DPgJAp5w`M22D+S5ZM(g_vCs@NZu9S~4m=zM~U+Q`F^<0`!F$ ze@~eXsh=*JM816d!N~xgH-Zn07MeU&gmSzCE}FVc+Uw(SM{1 zj|1oP?f{Lsl23)wPi0so?0ThFHa{_SpU%;Lx%dp~A5sVw4K$C*Dh~&3C zmKKlzn`kvY@Ty_`ckz0{@-Q;X_s=4L`ggbMfw zUrBuT##i-m)nVb7WpYh|d7L+=rhR_>aoJUVX?V&nu<%((Zl0~)nbPT&sW^F1rW&k3 zsjUuT&p3ZQfoM{mP;kec_(AA&xM8lSg1`0S^{@EyAj;NR-KDP;FnmWZC#y6B-pxNB ze!We8yJ7Jl({n4fu*UF74l8@d>NW>=jpNebnv194p*1?NKn~h=*LL5IT3B?KkDYB0 zHx&x9uU9UKNNBuepTHxiTsl5J>N6{hN^WdaEzO)@MWp z=iwvyiZ`{Rq}dSA7TGX!x8skw>G8FRsi@*X`_?-hX_9|!`g#RKGomOWqkPLNU!y!N zQP$;L{6O5WYG?<(&Q|eR=vb$2Qh}4#oAX1sx4PqBzM9>ab~4bx8$1<&MfHY^Kaq(WONKnVx$eKFkESaMi_>w5b{Dv$TfF;j0} zZdbFtkh%_1Zfu>9eAOZcaqP&UyahU(P%zv9F_;wdRCkhz-G>w=8<&Hl-rOUG#Z)`- z!&*y!Wpvedn;2?v^4~l^;@s^=iI>~A7Fga+_>c8uvJm3m6kJzs zm9!G;JX2k|&^dD&C#U~hhf3mUE8I2$x^;PY>&hKmTg0dUsoL_=c7 zcczY0p_C6DC^K2U$x-FkvTeS1XEs{+9Gc`A+pDZ*drSo*k4e(njWdCWfX~5WD?LBj zX3djIEmFkX%s^y@Qus=zrdiq^LN~2|HCc&)MP&XJ1nd~Cm&e>l%D}g=GynaHVeKeQ zds!c@;8$fHZ5j*Rp=N_RG0ubsO-_C$Llk|ge3LGUQomemw%NjCBiVmC*VVFfA`}@q zZPW@1J;|!9gUTOq>LpHp)zONmRBsrrARcka!?k?Yo;2n=S{rOFG46l`|C{K@=Ts*?9`Rb{lGo>a95Ce8~JFm>+_mswx;72xQVJA~bC z)>~W=ie*lgMeTi>eK>eBG%vN~CUfA49TY?Ps)}aNRys1ta1# zoXd-KH*7okr74Ezg!CVu)X|l|3a7S&0?np*80I<}}GIw*6$t@$G`K^CpwOqj|nch>4FcXt#v2HyYuy;a^= zVwL|T_@j2qolG2r0G|$sk{albhIdgPIY5%WIA2O))a}1Aw=cBFm&qNT)cT4|V}%<4 z3LX;s-!I-=sOmr^uNtSP5_1>|@^TRQl}~%pl;2KYUi;J3;cf7PRVNwlquEN73J({jW0%Ce z_%p!>x++uaS8->#jctbg-?u1X8%TeEp`c*#7HWX)+GzV_5qWT2B_F8RCAkwZo@WF$5)ePYjeI=` z*VnFo&x1>o45SZ-aYV#P#6j#|?IwMQ#R@sUdb-2$Ds9jD!IKGuI2@{PCwu=Xyn+!Y zjuj>HQks%NJa?z6B%gNv%--p(GsRWP9;TKM|2tw+?4tbzgLW+XqnvUhOWVAMB3CsO z8ME6_?^f^aQ!PvR!QPd6zp9a$5MJ3Z)IuN_v%#Kg8>s{BlKZt6|(i$ zpIiJ@=}0^1mFY|t#CqD?q4$kN`=W8Y?bSxa*+_Y5{oyJLrPs(+s=>z=(DdFVr+hr7 zLRmLA^4A^7mqMrKr((D~#cM}%T;^~;6DA$CySdW!Wp^5)wvu=Ao>au*Gegmt85K3h zWfwVDawPBj&2xoD4mj z)Klb**bjbM0aktYe*Xd4{*o)dCZ}qD@xQS=qq)}ATS`G_=!H%d{#H_qCkY&PKPszm z53`wxHqyHcQTD!Y)Ecth`{V>#t>2i%IsvWgQ?8cx>2k!UH+<8Vd6FY)Gvvkja>iDQJaR;7 zXH%ier>=}bai)1nn$b!pe$nNEs7WTp17_wXjBR)da-*I-JQqQbGW$57%4sLX9&YsgNU$5y5?C!DtV#p^h^e zkS9TSQ>L+&&CpG!MHX5Q4U)&-T{Yk? z%Vi!#lg!N!x0}2^9M28Hb7SrKhhY$-D7VNys8k4D4aR2ePxVNk4!Y*>uWn1LqB@37 zYp3l48Nwd6+?3M^Pu0mvUB^vTo#U#BxGu)r-9l9mTVaQX=ZNmP>+@a7iv?fhpwD*a zP2N?!9S6MxKO4aX`wu@pY=4V=oX;7CO4SDWP3r$iz$IDySnhyp8f2Y4NZVe^i<9ag zOfwMe)I`gp3{<3mi{F~#iPiqBb}WMPVVvN~qKk%8IvmyWWb{IvD6 zfK@XfJQ&VDJO_6D!Vi=2kM==%u${-md=_c=Nhu^e2?Fu4S|>?WkpUqHjb=sy0?ni?HL%Cs{U#-mMX8QzTI&hR1XAgE@-+Myq+iG zr?3ix*!)-D_(1_{Vp|OyX`p8Q$oV4wz6@g@zJdtw@=Dv%76o3sR9u+#mHh4o`7|CeZC05j&n{($Qx_OS73U zNRY9yi8ntM4N1n2%Jo1tx>B=JXr9r-QD{J=M9H+$62#4T3xDeSejxwdz{xCrG@jc$ z`1Gd%*Bf|ztlLRL#09Oi2fCgO4X+BqXC9kdH!6azbdY1uWycz4COn4=sW53bKZRXC zY~`I$dX*Io_Ln)W-e!O!sgPJbzlL{|Q!>6NbnjUl*GHOeh?m27q{iHZteB2{uAZd{z7y4kFk%-ZBq?A>a^{@r3x5(Mw_5qs z3Z$ffTXW(??SGVpJv~?d+kbl!62v95(a?uXNaV17On+vOWM4v?igzT;oc5A_r(B4o zLtG(IX1@BQG&8EgJ$1h;uPB-UsYu!Wjspjz?AFd`H_o(D1S3$I5*Vwc)8C-7yE0IS zg&iCwt(w0eWk*wkL@yFJp!{QL##w0w#;;J3 zZv{oEG>$w!L!A(=ypopl{Yy=HzGZ;$2j!%xcG6N~GziB&XeD?(-*E6>4>wwJu-P~u zkS#o+=%JB~3_$BV89rdr0S?65dm6qt>;j3Nd^1NrXl)Pr<5+C9TkgM4LFgsd%I?<< z=M@iy2L>nUIvqo zmhzG@=44%G$w(}a$tu-8F5cBrJKbDR9-74uDK9Tw0WZa8?=#4XkWw?MCV#$n1+mjs zHv%EZ?amuo7zX#BffyN_NpQG~kJ7mUq*Tepf*Y@f1SAD^jfPyuT(~Zk;5BCa(W9&1 zGRE(^zq|nYW3HsO;$ilki;@9ol7fBy%nn_^-2oawy*2$u+)07Nt7MklRg7PmX~AEg z{$qVTODjSOw&Pg6$$*^8*&oW51cK9bYe$vWI(x%hr2S#9YOdaoce}O#71{5fduE1* zgPTkBIOxp%A%_|ZAuR=VHahR7)APP=&p)(DS6@8tj0K#B3!?WN zIQ-8!E_SqV!v(tJrOrqhr>(361c9z(1{55)PR(sh;Wz6g$g zP_FG*ECaklA)?|#j~pJTC{)*0(bLgVOh9MS11|4n+@<%G?8(XxDuo;v&hW>~{*#^N z-8mG2x5~YEJ$9I%pdZ)qc20W?%p+j1@r`lbR<=)n0-_=fjm(p+h9zg^5QF4a_9| zo)xo+BhgK6YA+86d4vrkBe=v`{B~7-kT@j3?`r5A|IO0rV9dJZ_Pg7DWDM;&vb$Y|;h3HWn3v`;;jkqN!NPL>V1YPJ+k;@x(Pk-u`r{pHyt zoX&rx(GlEDh;a$~--j4|MU#r&d!y59pEQ3G5J_aCA1Z;+knP3L9@mAcGnc|8;NLs5 z|J2B0^slNN*ZtV|x$XxaH1`f26eZUO*`5xKVn7ZJpH|b<3v8P&Ns7f>VTTTfXk1;0 z`)^L~(os2X#(K@6J04%oOlJ5em7d&p6!WB}@mQe02N!ke=&JRps|kJ3Brf#mvCr4| zec?%bf5|3%*jM$fnb86J^mcLHPgJfyrTAYsZOH!UdCT=mF>~s_lp=$nMN&uGvJ_;C1n!J -Functions - - -

    -Contents Up Previous Next

    - -

    Functions

    - -

    -The functions defined in wxWindows are described here.

    - -File functions
    - -String functions
    - -Dialog functions
    - -GDI functions
    - -System event functions
    - -Printer settings
    - -Clipboard functions
    - -Miscellaneous functions
    - -Macros
    - -wxWindows resource functions
    - - diff --git a/samples/help/doc/wx34.htm b/samples/help/doc/wx34.htm deleted file mode 100644 index 9c1fa6acde..0000000000 --- a/samples/help/doc/wx34.htm +++ /dev/null @@ -1,349 +0,0 @@ - -Alphabetical class reference - - -

    -Contents Up Previous Next

    - -

    Alphabetical class reference

    - - -wxActivateEvent
    - -wxApp
    - -wxButton
    - -wxBitmap
    - -wxBitmapHandler
    - -wxBitmapButton
    - -wxBrush
    - -wxBrushList
    - -wxCheckBox
    - -wxChoice
    - -wxClassInfo
    - -wxClientDC
    - -wxClipboard
    - -wxClipboardClient
    - -wxCloseEvent
    - -wxColour
    - -wxColourData
    - -wxColourDatabase
    - -wxColourDialog
    - -wxComboBox
    - -wxCommand
    - -wxCommandEvent
    - -wxCommandProcessor
    - -wxCondition
    - -wxControl
    - -wxCursor
    - -wxDatabase
    - -wxDate
    - -wxDC
    - -wxDDEClient
    - -wxDDEConnection
    - -wxDDEServer
    - -wxDebugContext
    - -wxDebugStreamBuf
    - -wxDialog
    - -wxDirDialog
    - -wxDocument
    - -wxDocChildFrame
    - -wxDocManager
    - -wxDocParentFrame
    - -wxDocTemplate
    - -wxDropFilesEvent
    - -wxEraseEvent
    - -wxEvent
    - -wxEvtHandler
    - -wxExpr
    - -wxExprDatabase
    - -wxFile
    - -wxFileDialog
    - -wxFileHistory
    - -wxFocusEvent
    - -wxFont
    - -wxFontData
    - -wxFontDialog
    - -wxFontList
    - -wxFrame
    - -wxGauge
    - -wxGDIObject
    - -wxGrid
    - -wxHashTable
    - -wxHelpControllerBase
    - -wxIdleEvent
    - -wxIcon
    - -wxImageList
    - -wxIndividualLayoutConstraint
    - -wxInitDialogEvent
    - -wxJoystick
    - -wxJoystickEvent
    - -wxKeyEvent
    - -wxLayoutConstraints
    - -wxList
    - -wxListBox
    - -wxListCtrl
    - -wxListEvent
    - -wxMask
    - -wxMDIChildFrame
    - -wxMDIClientWindow
    - -wxMDIParentFrame
    - -wxMenu
    - -wxMenuBar
    - -wxMenuItem
    - -wxMenuEvent
    - -wxMemoryDC
    - -wxMessageDialog
    - -wxMetaFile
    - -wxMetaFileDC
    - -wxMiniFrame
    - -wxModule
    - -wxMouseEvent
    - -wxMoveEvent
    - -wxMultipleChoiceDialog
    - -wxMutex
    - -wxNode
    - -wxObject
    - -wxObjectRefData
    - -wxPageSetupData
    - -wxPageSetupDialog
    - -wxPaintDC
    - -wxPaintEvent
    - -wxPalette
    - -wxPanel
    - -wxPanelTabView
    - -wxPathList
    - -wxPen
    - -wxPenList
    - -wxPoint
    - -wxPreviewCanvas
    - -wxPreviewControlBar
    - -wxPreviewFrame
    - -wxPrintData
    - -wxPrintDialog
    - -wxPrinter
    - -wxPrinterDC
    - -wxPrintout
    - -wxPrintPreview
    - -wxPostScriptDC
    - -wxQueryCol
    - -wxQueryField
    - -wxRadioBox
    - -wxRadioButton
    - -wxRealPoint
    - -wxRect
    - -wxRecordSet
    - -wxRegion
    - -wxScreenDC
    - -wxScrollBar
    - -wxScrollEvent
    - -wxScrolledWindow
    - -wxSingleChoiceDialog
    - -wxSize
    - -wxSizeEvent
    - -wxSlider
    - -wxSpinButton
    - -wxSplitterWindow
    - -wxStaticBitmap
    - -wxStaticBox
    - -wxStaticText
    - -wxStatusBar
    - -wxString
    - -wxStringList
    - -wxSysColourChangedEvent
    - -wxSystemSettings
    - -wxTabbedDialog
    - -wxTabbedPanel
    - -wxTabControl
    - -wxTabView
    - -wxTabCtrl
    - -wxTabEvent
    - -wxTaskBarIcon
    - -wxTextCtrl
    - -wxTextEntryDialog
    - -wxTextValidator
    - -wxThread
    - -wxTime
    - -wxTimer
    - -wxToolBarBase
    - -wxToolBar95
    - -wxToolBarMSW
    - -wxToolBarSimple
    - -wxTreeCtrl
    - -wxTreeEvent
    - -wxUpdateIterator
    - -wxUpdateUIEvent
    - -wxValidator
    - -wxView
    - -wxWave
    - -wxWindow
    - -wxWindowDC
    - -wxWinHelpController
    - - diff --git a/samples/help/doc/wxExtHelpController.html b/samples/help/doc/wxExtHelpController.html deleted file mode 100644 index 68d3ec7678..0000000000 --- a/samples/help/doc/wxExtHelpController.html +++ /dev/null @@ -1,180 +0,0 @@ -wxExtHelpController - -

    class wxExtHelpController

    - -This class implements help via an external browser -
    -
    - -
    -
    -

    Public Methods

    virtual bool DisplayBlock(long blockNo) -
    Display help for id sectionNo -- identical with DisplaySection() -
    virtual bool DisplayContents(void) -
    Display list of all help entries -
    virtual bool DisplaySection(int sectionNo) -
    Display help for id sectionNo -
    virtual bool Initialize(const wxString& file, int WXUNUSED(server)) -
    This must be called to tell the controller where to find the -documentation -
    virtual bool Initialize(const wxString& file) -
    This must be called to tell the controller where to find the -documentation -
    virtual bool KeywordSearch(const wxString& k) -
    Search comment/documentation fields in map file and present a -list to chose from -
    virtual bool LoadFile(const wxString& file = "") -
    If file is "", reloads file given in Initialize -
    virtual void OnQuit(void) -
    does nothing -
    virtual bool Quit(void) -
    does nothing -
    void SetBrowser(wxString const & browsername = WXEXTHELP_DEFAULTBROWSER, bool isNetscape = WXEXTHELP_DEFAULTBROWSER_IS_NETSCAPE) -
    Tell it which browser to use -
    -

    Private Fields

    bool m_BrowserIsNetscape -
    Is the viewer a variant of netscape? -
    wxString m_BrowserName -
    How to call the html viewer -
    wxString m_MapFile -
    Filename of currently active map file -
    wxExtHelpMapList* m_MapList -
    A list containing all id,url,documentation triples -
    int m_NumOfEntries -
    How many entries do we have in the map file? -
    -

    Private Methods

    bool CallBrowser(wxString const &) -
    Call the browser using a relative URL -
    - -
    -

    Documentation

    -
    - -This class implements help via an external browser. -It requires the name of a directory containing the documentation -and a file mapping numerical Section numbers to relative URLS.

    The map file contains two or three fields per line: -numeric_id relative_URL [; comment/documentation]

    The numeric_id is the id used to look up the entry in -DisplaySection()/DisplayBlock(). The relative_URL is a filename of -an html file, relative to the help directory. The optional -comment/documentation field (after a ';') is used for keyword -searches, so some meaningful text here does not hurt. -If the documentation itself contains a ';', only the part before -that will be displayed in the listbox, but all of it used for search.

    Lines starting with ';' will be ignored.

    This confuses DOC++, so I leave it out for now: -ifdef USE_HELP: public wxHelpControllerBase -{ -DECLARE_CLASS(wxExtHelpController) -else{ -endif - -

    -
    - - - -
    virtual bool Initialize(const wxString& file, int WXUNUSED(server)) -
    This must be called to tell the controller where to find the -documentation -
    Returns:
    true on success -
    Parameters:
    file - - NOT a filename, but a directory name. -

    - - -

    virtual bool Initialize(const wxString& file) -
    This must be called to tell the controller where to find the -documentation -
    Returns:
    true on success -
    Parameters:
    file - - NOT a filename, but a directory name. -

    - - -

    virtual bool LoadFile(const wxString& file = "") -
    If file is "", reloads file given in Initialize. -@file Name of help directory. - -
    Returns:
    true on success -

    - - -

    virtual bool DisplayContents(void) -
    Display list of all help entries -
    Returns:
    true on success -

    - - -

    virtual bool DisplaySection(int sectionNo) -
    Display help for id sectionNo -
    Returns:
    true on success -

    - - -

    virtual bool DisplayBlock(long blockNo) -
    Display help for id sectionNo -- identical with DisplaySection() -
    Returns:
    true on success -

    - - -

    virtual bool KeywordSearch(const wxString& k) -
    Search comment/documentation fields in map file and present a -list to chose from. -@key k string to search for, empty string will list all entries - -
    Returns:
    true on success -

    - - -

    virtual bool Quit(void) -
    does nothing -

    - - -

    virtual void OnQuit(void) -
    does nothing -

    - - -

    void SetBrowser(wxString const & browsername = WXEXTHELP_DEFAULTBROWSER, bool isNetscape = WXEXTHELP_DEFAULTBROWSER_IS_NETSCAPE) -
    Tell it which browser to use. -The Netscape support will check whether Netscape is already -running (by looking at the .netscape/lock file in the user's -home directory) and tell it to load the page into the existing -window. - -
    Parameters:
    browsername - The command to call a browser/html viewer. -
    isNetscape - Set this to TRUE if the browser is some variant of Netscape.

    - - -

    wxString m_MapFile -
    Filename of currently active map file -

    - - -

    int m_NumOfEntries -
    How many entries do we have in the map file? -

    - - -

    wxExtHelpMapList* m_MapList -
    A list containing all id,url,documentation triples -

    - - -

    wxString m_BrowserName -
    How to call the html viewer -

    - - -

    bool m_BrowserIsNetscape -
    Is the viewer a variant of netscape? -

    - - -

    bool CallBrowser(wxString const &) -
    Call the browser using a relative URL -

    -
    -
    This class has no child classes.
    -

    alphabetic index hierarchy of classes


    - -

    this page has been generated automatically by doc++ -

    (c)opyright by Malte Zöckler, Roland Wunderling
    contact: doc++@zib.de \ No newline at end of file diff --git a/samples/help/doc/wxhelp.map b/samples/help/doc/wxhelp.map deleted file mode 100644 index 3fdaa8f48d..0000000000 --- a/samples/help/doc/wxhelp.map +++ /dev/null @@ -1,15 +0,0 @@ -; -; This is a sample wxhelp.map file for a small help application. -; -; -; First, some wxWindows documentation files: -; -0 wx.html ;wxWindows: Help index; additional keywords like overview -1 wx34.htm#classref ; wxWindows Class References -2 wx204.htm#functions ; wxWindows Function References; methods -; -; Some doc++ generated files: -; -4 aindex.html ;wxExtHelpController: Table of contents -3 HIER.html ; Class hierarchy (very small) -5 wxExtHelpController.html ; The class documentation of wxExtHelpController.;brower viewer diff --git a/samples/help/makefile.bcc b/samples/help/makefile.bcc deleted file mode 100644 index 92098318df..0000000000 --- a/samples/help/makefile.bcc +++ /dev/null @@ -1,19 +0,0 @@ -# -# File: makefile.bcc -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Builds a BC++ 16-bit sample - -!if "$(WXWIN)" == "" -!error You must define the WXWIN variable in autoexec.bat, e.g. WXWIN=c:\wx -!endif - -WXDIR = $(WXWIN) - -TARGET=demo -OBJECTS=$(TARGET).obj - -!include $(WXDIR)\src\makeprog.bcc - diff --git a/samples/help/makefile.vc b/samples/help/makefile.vc deleted file mode 100644 index 3cbe3b33c2..0000000000 --- a/samples/help/makefile.vc +++ /dev/null @@ -1,18 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: (c) Julian Smart -# -# Makefile : Builds sample (VC++, WIN32) -# Use FINAL=1 argument to nmake to build final version with no debug info. - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -PROGRAM=demo -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.vc - diff --git a/samples/help/makefile.wat b/samples/help/makefile.wat deleted file mode 100644 index 370b2fcc20..0000000000 --- a/samples/help/makefile.wat +++ /dev/null @@ -1,15 +0,0 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 -# -# - -WXDIR = $(%WXWIN) - -PROGRAM = demo -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - diff --git a/samples/help/mondrian.ico b/samples/help/mondrian.ico deleted file mode 100644 index 2310c5d275a87af295d5ea8dc79ea417a5e74c53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmZQzU<5)11px*Sc)`TLAO@s0fLH;D9e|jTfdxnc0Z68*d;8~m{^xgda_+e~xhE(0yx-6BTF)C@9gW*GtTX@s;I`&dRRrn$>wj+`IRHSW zuSjh{y0~fmOhXmW^1qiOZ0r;16KeOT#$KfJ|37l9`6K`UE`X-0%1gf~tw!T&o*sW* zhw|;M`LErC?fw=C!DQ_Fg^~A9u>xyz$~HuH(gh=Q-pOY;o`4tNG#=Gx!1Q6$2ON# zQae4Y6Zo)+&DSKxE4UfW-Vn%RFd-@@JV=B6CY<+p`f`cI!u`YM45xU(J6em&^+Jb} zfEI5=*_&AFQf7si8?HuyZ;|968yC5zsaJ74Q{QE#g$yQ%(xQeRWG)}}OV&sR+>sGh zbud`bd~fu3V{6N~BUi!y&Iw`uFX*SPdsCB_Do`bRpDSiIa5rHr`yR7x`OeW#pT8bv zAN9AcPBijNo6X=l?A??UNuL)--7;FK^1byeO?=yMvo>-x-*@ z{#l=$!zTATt3Tk~$L9o;@g zJh5b_yeIhc*H_&yPWK{nimH_^C!Z_Xm=3IZ{RBUm(sA1Y08oE##q`!JWwWTEq&&@} zX-qKI11=MiiK30|I`wujaG<6B=f1wYfZ&a9nt!QcyjsmGWo&>yO9bxOjIPx=vO0%} zmy~5Ld)^N7@(s{8WG8D7k{(9_{LN=?pUHCu?;LXR6b+-QrIq8w2kPGES9N;V2;Jg~ zT-HjbG^rfV_8RckukA@?uS3^Ny)rIN>BZ;c19H=AYa6ONxb7b$uI@vFuP=|4&Nn0h z%4xRQ`z4MT5DpBXz=;4@A)Vh-ey5D>)f_9|i!!Jw|~gE*)iUmu(?(ase{A1I(iv8;36?SR)AnE@*W} z@HQ6?i~&Q)g&=>NM*SYcfFKx`6fWb?u7DBWyW)doPp{pbG1^@d4T*Zk{N6v;WXzwj zA>^>!V!orJW71m<8u_&O{9=BTB|>9+V~~%{nH|6c!B`F+a#UimpgS41qw}9eor)7R z`f94m<{|!c40X&VH^^Y5|1MPU zsb@liv-K0DMYVLrSCIAiCqs*DHrHKunLjk#h}L~q&K$48vK;VuhY@Hw?%wWWO-H-a3Aqh@2hUobHG? z&pF^q49E-Gi~O2$lgITOSg;+mYNCFlJb~;0RnITUG-RQ=U-kbUHqc|v45PH+ONP_^0`5N=GyK0pmq~O z_Nlny^NqCf$*fUH2UmUOOY;T-(bPic%c{S8x5o^e9p6)PTh$NSTQaJ~+D-ScfThA< zf2^^fGZI8@$suIo_$hMdGJlj)Dts<*=U;7J$ko4LMJ?dz7H9M7c@@Y-X5BvPL9F%Q zKAy;=t4qVCu7@6)&nB}>=F#RZop$7P9MTyr6bWpZJv@A<^07>U780~qxP6Lhz#9wO z)9dI2C7}%BbkLSOrj;v|Qt^nTMx*H|kEc_6rkqCsuHEeqof`@DAcW_KI@6Q9>y?l! zZMQhn`f1m}q%Bk$RnrrQ!DGedZwkc25gpMAp0<$f-LWyI67%|s0&)}$^wYb$U#3uH zy*`9OqoTOlF?aVr#4TO+=cS{oqPdNU_&;_Ek2!tsI=QBLK{u)&pLgx{pbWImB2<6T zSX=*YxchPMO6}%qM#}gM;8!yrTzo}>!iKd z&~#bN5-EG>>2p=m>L;JopEf>q7|_r91~jPzPUyCQ4)u?{6x=!5V7F;(L(^X;UGH;_ z8_VSNSla~I|7(<2)5B|Pf6Yno!t{);a;6^!NIfN%yh$Fg_P4Kuy~Vw0Yw`;6I%kIE zr+y~h4B0H2vl#UMo(7l8n&dO7h^@#-;ICr)owg_>Xf)=1M@cj-Vwg*Z9Hv=5#x3)z z`K?`q)o=e+)yvu?w(BoSB(>EW!-oRqVn)jl9BW4xjC0d;Et@UX+nfwOD_{3 zbm!w(*smz@_XxUkd5;A_Y8f|Ee0QZmX&Ebgrlta0uRrO|Cte7@=ll?dL6nx=)3v-d zUtK|spf({Gv&^bT=oD*9y}$gGA0@Nq<_)GKaA2Fv5;B04b_A$q+^Le<7Zf#)EEaZl z68)$*weBO2pc&k+ppzLzH!O-;v>~fdd2N1FR4M>~yIF$(O}9t9IH}tJ!s##|l^8MZ z6msP$g0I^jyNY>Jb2CC6a+q*}^Lh8EIrV0ic2tqT2-3t^b`@CQIzkCBdJ>8SK`ezk zW4RhlMH4yWOOn;5SZ8N{Zz;)WAwBdZD9j)!tGp9FW;SfR!Z;%!8CfLgi33&w2!RO| zfb>}IOl%(c(&sApUHu)+3u%;=D8c0+9L(qs>NuK;jeVJsc21 z^N#Wd7e&f2m|@_1OB3{P;%} zs=CE!HbLF76&hKSf^e?>$c<+~ysL_^UInXRqcv4x?(;Ltq9K)ZP8J{;U+RQ0xm>wTp>yS8;~K)KK4mUosqc?<)lBj>)l zz?&P+KbE`t5BQYiTYhwIZ69;IkKabkhFq($Q&i6dmBgF5IX%^r-+YE*-p9UMSU-}h zmc;YsuD;aQH^heheBR^!hs=Pbg0?8%saL?`;a^)xNavk+jUuve1I;k7&3W|ZN44Xl zKw=P6aaj6W9VJA`zr$(&T<6iCi}ul6C644n@SF6LE%9b1<62TNU} zU3NAMn9xR@40}`0KU)W%7FAS7P~kzkg5zRQZ_1^F$}Sc>*(o@RJwSZV?}xa`Or+nT z`5YmJ0srN^+KI->?whT~rQ74=!sdD&70x_OD{5d#F0{nG-5-^wmCt%uA&7pAMK?GX z{UfHkX%s2iK<|2f{e80|qR}az5?Rh|fes+ld`?Q#nawp*1~w4}F3-FFsIaiG_?YRk z&&vA;ZJ&^;aGO!Z))pT!Y%%#i=df|4X2kVL(zVP+jPJ-4L4I;l_A~sA$B<6Iq+GS2 z+`Z`%TCBtBz1c}ckC~77d#$en%P5?j4kztJ%i#uCaKe2qc&tKtbK3ic_eM^ORFyRq zC=^Ov{&g{NfByvx82*yR#NghSkDqOu?hdZj3RxHf6!1#&ivM-WDz$aaU0)rC94@bp z%6of3ss^$o{tNByy7`a^>NVkbI}09kx`*9vs_ohAI{lz00Sw?Sq!VjC z_lfO@zg^tjv>Xy8B0UISs5e6_uYb5IRM)BLo5bSt%hG7=sX=+_iwEY5eqs$+U(!-ubx9zc27ywR4KYO zDrY0JyF8I&woL@P1gV=h;^Mfcl_uILz^+sg^A2^%t6c*FBJ<- zPft&|VfBJcuFeVp)lg-W#$@6FfPqgK>=D2)(9~YpVVQ%|V|E3(^S#U{>r~;y=TV*L zOBwJcZLB8)zY6>LL+7WITS^mogXz&4-F<2+G8kRPD3ylk&v2D5&jdtbdp#5`=A${U z&f?PHj>UCY0N|UEQ0hqbEtr5!P;C$BCqNm%1v7Gfk;e3e!U&kJ27Cgnq%{5x71VQG z3i!TuXacl}_-AKUZ}J5GWPoiTb(>e+pRtrgzwgoB99??}v=Po7H0WD)5}z~5hgicr zFJ=R`TLKQ@Kowv+Sds)N;7}4mk{R3=eu4p^s(t#oxW)m_!V~}%+R%r%2X9g&vZcXI z$-CBdUheYu&~let-W*hI0f!^|%_UX{(#_jy<1n~l<;xCM;Gq-thpK-6djwapdb~Ka zcs$dqb<#y)a2hc#OdLbHRpT-?%dBY0et=-k`6&i)!Ef(i&x%qJ@WRGATlK4D5?VRf zAsCFbD&)<~{{9H?m=Jsv@K`wIPU0;?;+nOrxtkp>rg@@nQPm$zY@1e(e-Uctm56szwow>3h}7aQxq#V`;} zN8aWBYRl18z^tm(G;5vd(htPkrU{4dd#YAR+UBi+oh9eNkUl4RrJxg1!>y#8F(Lsz zX5ED+6x3lDT^j&IN)rit3XsA8U@pSSK!5|_4+sfhD#&=IA~rV84I`_uZBK7Fbie*6 zmGDx?iAv2}*xtWkTK2UUk||y;k@4*0AD=uCP7xOe548AyI3EAt|&TF|O=Z<_A0TO3LP(5*|c!&dcdlbI~zlaMJXNK@# zhLEf_ADPjMO+y+LP?Tu3+~y-bckBmrz_5$>=3#&bdtPpC6~0_bdrx7zq=PWuzBcUz zWqK?lV^nDXYy|6Jgo}sv=h4CEmzNy_ZRdnz2H{AgZ@@svMXl2Pr0(ozgZtEB0H<(j z3;+NOD`Lv8>dW9_yaA|)9EWMeI82+8p(QK)RuL<)6GY+CI^fsAQhSel1hRByJ)_yQvo>0a6VUogQV{!_v(e`{ z;i>8oT?*5LX=C9PgojOhN{!GnV8P2!OB%p}>4PfXRdC_3L*2wu(tX9VF415z2+sr= zz>=J!`%U4$rP)tTX(~_8A`(Yjz8l>t;8Y6s4h{~!zIp>H6p+MCI7oeKZ6y$7?-aIs zuq*l1?GxtC`F`S%clp0^s#h8aitZiHhFH7oUYx!F^mkia|0PM9@}SSj=kol=Xw$ii zrn##LkIIK51zRU5p%hb*)$vTOofKy94PY1+XXNqPYk0FbM~4j-A>Lo}vq*OUbJ~^=}FDf3eBd)a%@2s!f=Igyh`=e_Vy)BxS zTz5Aor>!|FyZdvk>Fh>)Vy4||fB&gi0h`G_kjj$3JeI~5C(`+3_SX_ zvK;hyTF8*%MZ22*SZ$9t+8$jyX{p5=*A+oU|9mcpS{T=9Tx~evk=;F*^r1}5=VnLi z_=CPj$J=v6`kU3}xioYXcz=W0rsE;6jxt6yb7$jYx#2|(4H4ILO2J+id-U67Q{cQm z9pslsjsTq^Ub1Yhu4r{Ik6>z!M)u6kqFzW>e4e_j`V*@ONrB7f%v$=r4m3ouLOUHM z<{x$g3+B$-<327+SHOOe=bNRQn&oJ`qZg8ym`e|*3bRUX3+?xtn|0FhPtSL{?(wPG|2rySB}t&F~)VaL3G&tO~!qoq3m_Xh;k>C)usa zVFZ_D$51WvNvm5J{QbYPbw2GE{K|jG#>)&?{q8Rp7LvB2_u|BD7~W`+N=o}K&{f}l zYF$eE^_)$GNUQ=728($%Lm-5W{Pr?CX;8XWsttnry?*V}{b6=a{ypMR#SCH2_;&^g zhV9HYZENAAbIebA_?717`~y55>&KpkEy^Tv>K324|H-i@qU^zHdW^hiv~(`ZgW}j& zK}Y@n%odzG-X#4@Tb1?olrE^cdqNHKt{rgv>rwJK!mykP5+eunM+F_NG(I4bu(|-e zrs7lCgT#^3S2>1V-g1}!ijq)n-IrHis{G!orW?9tS>Fx#)5Y`Vb*yGkIWxI(^R_k|CqJ?^7!Cw&(z{kc~W`oXHq;VQPo_e6=hhlTvjd$1~ z00rhfVp4#bnYebkoF#Uks1##TS@FwclMaSCj@BEA4gc}qed;^0uP1+Lr~Kvej&nKO z$l(|9$<(@0%pnxc6>zyM3mG^)%_>?X)F8KVHwwg%_G;!5`R*H~<+fH*JvAG9d!Ayf zTN|5ajxj+OMA66mbhd@$M)(9w3=KrRXn4L|yx3eHFWu0PgK9vrQa~tlH@AF$nZ?)&iXgwgZuYs`z0aHd-Ll(?!wH&~SG^ws?ZvH6GfRxgRAyzD?gqxIZ~c(%@Umn0(`T8xg%!(f7fb0rw&FCoN+BWQa~~ZW zCtZMQiHks#P9mp)KGswuV#uGwu84=3h^ap{R;h2bOGim)#htyz+?5OC!MDT5 z6arBo*P{&e4ZzOd>~4l1TDSD{E*9l9_LK$H8jDgD75o`LRuIXO(w21#7c;768O&|X zb6qblf7Ts|M&mJe=8h>0tDY&$iIPfj#ASqD(>dbhej|=K$-3QF3h+2O(g(vn_oCd6Q9;Q()IGK9af8=Z zXtCcl6;;j{&}VpY%9Bs}jh~6WO=ir-X}0m=gZr5!Rb{>48xV?LPL6i9AF$)M-aXn| zI&oLXGyW7h9H!B0Ejh)JW~<4;=zlfo8TD@Jm2Zo&0XDhwGvmkUO;b~A=<s2rVl&`X0c%Lxr5LmzdZ1TLyzTh1Irq4#IqH;`m3L?UQxKBWLV z-h$ZG7~WOvKsn}SDOGe=C^5R8daq<-h3fMiSz%Aj@FazDUKHcNnkXIx((D)GtNd7$ zAZAePSem+!tf682mHI1Z6q#X-GdNe`?ovW=P!*yg2d5 zbrZvZ7l$1%^vCF|#>q6OwwZ~|d!7$Er70j_0oJ#6(xpWm4z;1R$p-zDmBbl2gKnnC z!Fv}MBc_|m=^qE3?eu(IJb|zGmA~jt`1n7*?~%OBJ-DXeJ&cMJd!p}gRB{i6jU4+H zX@Pcm%%B>|%YG7c@JOKeI|Q{z2iMP-3OrkJ-Qu_S-Nxs+krV%y1weg#i8Cq^4mW}q zW9PH=;FXlX_rf!aMG>b#G+(qwe~|x;BI8zu)=n}O&6~4R`F}l7pn`!kTrrmVW3at7 z@1UR{Wr41tghc~JwT1@tIQh)x(YLoC2$ac2L3=u`%TqoXpbXU?6~l;Oej!7}!$2M) zTy-E={IKCU!&FaD)K@AgIfaSsgb{USV{;Z+HoBwzcnHP4QGbI#o#)PgufO&yQgKKk zx4mXIx$@Dm4hkj8689#By>zqwttVUGbnBr(q$Cam>m_NiSd$M!W=T02jxZ;)VM>o$aP$drhL*XX|OhCUea}?>t5*GGV!5HbIKNxZ;HPXB9L3(#2iLudp&-ByFhEFr%E(!u0B8*$!?;iP@Kc!F zBCF|@n))e5`}pMVW!}Y7-ba!;ghTdGCM~Ay^3mQXX2kp;SA#lb_U z4=NBPlOqHcB-8C1+c?_l_3-GRv0?IQ{W*kc*xuS2Ix3$2Q8T^}B3Vx^d4m7?T3PVR z?T1D05I>L=Ofw6TaA)C4HGSyEKm7dsw!=Ua$(-*n5`4voy~$<+_~T<1kXvgyP&@=I z5Tos0{O}i`!k;*@*%)*LtL$>Kj33BL;_I)yKZiL z`=<(TZZ0-aMz!}0Coea%-lk8$Rk1yAY$61gjxPQ_Xp{%5_xUUS+rG;lrLz8AxbF4Z zqtN>M)0;0{2M2{yLT>dTZD_wR2l-I7h8NR<)CC>u(tOPD5838~r#J7bij*wbU+?v7 z9{%wn7jAcH{8ZNKKzbHHy7QJxo^_LmX~*rW%jk0b#CLH5#UxpXO=NF#9i{zo`rp@^ zfhYmnrIUGjNj`%~T++{+oR%Ix zb0(aVo7}7n4_)}*qobp^^t{cjgc70&KXAcY#^Qhe%V*a30xS?l3*nnk0~(bx6k;r4 z;;PCI!rrO@VKINluV@-_*=^#ZK=&*eU=%Mb3nKYUSX#H~>7&}NF4EsUzgcwUtx(Fo|Q9judd?tdEMXhFgpO>J^eQ%%&ZUDIIfDmWwc&`V$t<)LbOY6awf9@w@GF7xsPJgL1Mf=b#i;&Y^4=9T* zH~;`ECQ0zJ|*j&GeaA z`ty~L)shs{;UCNT=G{vlWXU*<-LAd)d<(_C@mC;L3XB&`WlD4s$cd?Kx79+rm33sI*20w|hxs3s7l6*-qmFdlJaU9qIie1_?7}9Af zACuErDEVAhUv3)(+MUT4h#m8Mf$!hklsTAko6B9vvXJ;W?`k%z^_PtdTv7ym_eHC(1O$Z~NzP*FrSBU>gJcA<#_v^=~ioLVU4-Gr483AhY zJ%9i01nYYYFn!^fX3Q3}Tnnn7yvJde#i~M2e!RD5*Ye9lX*13 zk?{{nom&8tVO^N=6wxNoS6FuM?s%DyAT>>TU*tAbmQM**sEjkIwXXnQv)Rwx}YjV3o0%kNoDC^>D0-k1-oGtA<=1 zY+LsQY^lI{8}Jf5Ezq8n$37df%C(8pWBD+IQrr&NDIU$iji4SHLb97NH9hcF0mwN|0f9DUEVbl*~ zKRoa2@$*MFW$UZ}+18ceRs_c2zkhr#HzsSP-DW|stLq?3cDO?KZVJLUjk3T*I&%E% z-@i{~W#`A+ZjZ7yeP?O5P4>8pdB%~^e!zm^zpv`Qm8h&ELLQlEZ!>r3(P!)^U0Yn! zV`TbjT&>4%-n-4gqN0p(5hH8mL^l!MzsZ^|ujw_zQ~H_^kO1X7=sMv(i6m z{R-L$WtzwL<}^hDa<-gW#CpkD@BZmX`35ttk_x8Li?Jl z`ef+(!f#cL)IAY%EX}FQ@gqAMZ)nS{Po8{L!6c>5W)l!G+tnpo42Ipx=cTaH;=(v) zYL(!rqKh<=IP0d@E~$>0N4q>*LGd0q(`dV_1maL2KR@D`CwjC9a{Bq#CEM_C+UckyO50Tx}uOf7fcGkGHm!ULOsG28cOTyxcwLK+e zg5ly<9h?`5Fa4(qvVvGuy>kYoyMng!^U{-(T6dSOE;|Y*1k6e|EhPfka69W~Q$7)O z90Y<{Y2_FEre$~>_X}2;#CweCY9=U z081jS#DIlkPDLr-TR5%{@CxbZ3{6Pwl>c{ubW4ecn1p0v?Ov6fZR&d=tK9 zzJxX4+L^M2AobQ|`r}rUS}!Z<8F;k&<5MqH_+tx&n>2uGdP_2Ne9U*St41C`XQ0~wvy#W9|v3OG3W03glJi}KGKTRu)}eUp1SAS*ll|z_REBye z(lX?OsmPcL-^Jd(X%_FHpBmAgZ4`EotaY{Gn|-Z_mX} z(JR1!#Zs}{cpnlo0B>w=QRe<9bHhNe$M^-AGtfhv2P20A!1c;gfj!|rsEk+zv1zuc zWR|9Qk56n-Jiv=as4qGi*das5RR@o&_;uDoat8%yz~u}-5xu|Ysk=zw0jq@o?`Na{ zWZUQPaIPVmsMZkwU_CsR*vNSI4#@>kb@>yEa;rr(bg3mTJ6r03J8wIGiU?3C!>Y&p zwlCLV<^5Wnz|BYlxd^pZ%`7Qk3^cc_bj`Hu%c6?V8PDT^vxf_s3G5+8k&x`2-DLX+Nf<5 zs%k-C!@Hm2>SaitXLlUK{1t%&ti5 zJM=vK+x{9D_7@3^1bLdZef}=~>A?dWoWxh2LhnV9slVl7kF+u~07CGGK}s9+QM~}T zS@*73Auyt{ZdoRA(XyMjCAgdXwU?J{?kw^ZNAw-Ioa5A{H~YF@)#542EZz3QjaTuh zZ;foaJiqhA=xRm&!NFh-?4-r{VUQo;ajQ;zB#A(1X}@ZJ`b%!Q0s_!Bi!5M?EcmMc zG{p#A5ZkVZk!MXrB1!z%R3-y?2MroIGyd8~xEEuo3wM_OImopt%06B~#&_FPl4`Ki zuoJejUCkUlMQtCYERjc`{;sHJSw2Q?;8xB)i2mXORFRjL&)z?MC22Anr8gudnMV+~ zk(9WN9m!w#jV#BuXOO>2L4X$pVy8U5%v2QdY#cQ8Eyt1+>s$oQ4Hqd8%!?1|UV%k; z#22tF&VL#7!y5e#n$w8+qOPjP7-glGqNb+@hlGJ(1IC~Ll_eU;!Z+SX5rfo48APu@ zY-WjZrNQ(Qz;&0!MdXiCy(P*5K_}kS-HTuQu&RfJVlg+A_QW2leXW1WG^YMx%H!*H zAaH)jtIczPEUS`rj7#{Rck@p%E{gwto91nA@P(!C;Z7IuBw&|wJNiFopN?Jub>@fY z#rvn6Z3sNc&HG{r3XL#dbitE$z83X9wcz%+spDo4CpQlPsFnQX#cVedR4a< z^hf6$Sy0}mc{+AB(K0{8zk51uQdFt?UO0|tR(7gsHCkCB#l9=uB6sXzhg3$QVRy6! zz``z6?_w0 z_=9A*gVQxMnsQf#nd3^BwMTh0VbIE~3MZ$~pOZnADMRB=p$U9AYo(_O`0flO7Z=87 zRMlgMSbw8!Uh57l1q1IpwH}kwZeuU)hLr6EoNsMED_t%ViPLK>=h5eZ z(aF=N{bQM+1sRfVRWiMG*d!cYIA;AJy_y5>m7Pyi&*j8xQ3NZn({U_Ru{c9|U9EqD zHNqMOYOcP_u^kyq!rbq67p(g0G4|WlZaxYFIuw!W(|aDx_at&=8DHyi1CaL9vkK~A z*6qPgZ!;s6{gp;Ji-)28{ui*y2ocM`J;~QF<1LqCK#UQ8^dY`DMdfct+gW*A8KJF| zE)5Zt!fe|z0LRBU4J0OQLrGSn)qm?*<<7%m!b~c^09@DyS?{?(QSFvuJFoHXL!0r; zwd*SZ!Kc18+Nat31|y_J?%!HK_jSssKaj9=THD>!-Lkthev44pd;801mjcjc!S8mm z)shXcU<{0aMv@o|6Q%ixPBDV0aLc-S%!wKT0H~Rh0ykoH22Yfaj?nkY$pE?6Or(Jn zi2EZG&_?|<;fI^voo|VvW7pk(0ym$gee@45=}+WX=2m#A9^3odNl%}kNSNUeN&}08 zeFul$Ag2Is%d{M@z)aF3eP4RwGI?G^MACoN*;2s#rW`hxXwLR&>K@FLinIXl%VPCY5mX>%_ zJOhp@D(vTi_RZ#?_U)UO1gi!M;WTYYDl!M>Bm&u@x>(uG>;B*;z^<^%kS2P>?+Q(A zA5`TsrDz;D-0M*!AX$@(o3?Ya-)jB(^l+Y(#+>Xw)P9;Pwk}*xk(*;--r}bYJloH^ z>eq_Z<)*+RlZwWW&(Y`_AyHA$=+7bFEW8Gqs-8h1nDvr7g-h99I;;D&nzuW|NXnih zjthen1mwTbE2o0oRPSRf5K=QUT>K;WF!9Bptc4J>89t$?jLosKpH~2|F6wQr+2iWIC@Tr?%OMUBgO9(pV$ip32J1!3 zoI@^FiZz+Z5~MZqCAq!q>ZH?sZW(sEc1qY=&9J+{8y9ZZYgy;hsMbt1z)u;7=}#Wc zt%i7(j)}udqu2_o;gp3&D5WiR`=Oom1H+W}BMa^_TBAIeFXOO`JMQqTrt|H%Lca&8 zrNFz&v+a%0636ub+jyHlUIr362zXqVb=&h%DQ`j;f(}w4C`b1KIR8b-bKtp-PNPj5 z0X1FU6>{DX5_ok-(x6@S`INoBPZ`teZ=7^g@(IuY@uOK;3i9$;%JyQ(9cmSg&@0IIjAE@*X3$iUfF8 zz2f=BX1b`-xl4am2D@17bji(gMEDuFHWC_oV^&By!v8Z%~|3IE`=16YIP#X zkPzx4b;pX9me$sRetR3*i>9{oCZo%&+9Bh&-2WNH7d?{uMp1$NU;gMorZ4)Q4VY2{ z9y(#|A8U!M#*a$1gj@%=O{Nu_=Kju+%&w{U{-NJarmzuue7<=+7qYG2E6j#@OJxIh zY|XA5&;j#d5HG(BI~YgRS7PrG8}oa#M=|cr%?j1TfIu0#qB}K5IM(f{dI&pxhZrpf zU%u-zOxST%*(-PtvJF`Y7H&?;*3a5>)sKtYw+Fr>%}WqwXT(XPLO7?@8JVNU|BRae z0O6H#4|WoLba^z2%*z!{@3T#lnQuGIYCGLJj|OLYbaseSbi==M8POneL_`n&js4}q z>`z*c54;E$he;ZPMvms^pI`3u%_r4>?~{?1hpw4 z7XcK>h=HaI>u{(aJz%Gu&AEbl^keiQQ1LIOfZ|zu7J@sw#L-hEK4KPy?pyBlS6b6^ zZ>NATBJIU*?w``$&A#(7rLJF#?FHlBs?z!T-X2qU7pmxS@P#>}6on+MnbL-hROBmD z5b&$`%EE;cw$b~Ma;WU88YG@0LBEEvd@Nj|j!3h;o_oG+@f=w`)_< z8kM4bLN_5{*dZI@r1L`S_eU`t6c>Gd-dHuL^E^i~0djN(mg zXOl883mXT%B&h@~$MIjSz#mfvz8?k%KYM2dT4moQ1#IUBCU->JF7eCFsOd*>0iFi_ zAt8C9^0#(5&vQZ4ylYCJKe@c5Bobnr{87D?F7 z7(YAm?bSZhV!oxq72n|(nn4Z8EJ2JrNU|r2<9^6ivduSNdmn284IVyJiN9sa7@4AG z%$&Sl2EW=^twuLRh(FN+{2(bX3Z`fj23uDE8I&5+7EV~Hh^nF$;2e+?(vt8p4H;hYbmLQZok+j zuP}KdZZ4FkJ<6CZN-T4kd!&5>SKC8+9wKY_HXsUBBOiLzk=CDWPb0H9cjZBzQ+As6!UYi+Ss% z1N@2#7b6F7bs7)9M`ZsA72{F0v-g~!k1zEdKgpmYv?Ke#g0bOyG47w>pHq-RgD+&q zj|Z!mEv^={6&DE;Rsq}?hfKS+xw$z~qnztcFK?8)ygGMQ|Bj~Su`rAqbDE@YiazWY z+W^6k#6kh{mVnPG_o*HxJR;7>h+0$324Ym=A!Kbv2DUxrWz-NL1X^snCfWN0I%q|4 zRZfCWZr2wYZ%3pOA-vA6sFaoRfCbWAV29YNZxY3?D*KfS5D$uS{X-2!J}%$*l=2gN zckk0-59>e2ObMU&h~Ab0EsH2n{4gN2<~=|Ev(-O#`+pdP_Iqs} ze+mOk;*b*XOUw1~5zc79A1GdYas#QFK<6ZvVtemDfp772F2{kfkv>;vc7%lJQyAP> z9ngq+3bc0kZuxAW&R4o&du4yw#h{p?@?o6sBb}z;37xWTa4$mZ%(8N|j<-Vbb?{IB zVIPiFg<{4+q)57WV>Grf@tCeFUQS{4Muy&R;^RJJf(Bvp>Dos!xDVl)9Go zw{AfII};E4)FK4VrAcjzm6;A*nl{H~%9GxP+`>yzjz;#7T33H9}|#nm$B^#wMmCx9Ms@VGMr76T=7 z=CCn^R;J|gEx!i*^{{*%EVtV2F*4PeAz?rb(4tn3*^>v(gOkT`$n;$vAobIsKzgnd zhBXR^D&R+or8N7Ql`8405}kiu;jFka{$Sb9AY{7wd*@k!1J3~NF)Cjsp9k;p;=F5T zyZ){0M}9Tf2^ar9eFU|pFftyve}6o>2)7xRG>rd)veXtZ?9$J)5j0xyf;)9(T- z^u%+p%8u^mUHXs{GyR8oEhL!y11#@`Ck6rlB>5|fE0N*1J^$#Z$E_hGg<62dzFkZ} zBqL=^rmTv%r~fK?;t>tQ>IFtKpH_5*WQdBzC#5ZG8j|WUj<;>VSELA?#Bw9lOCh>n50aX~tF_v0fKQhMf;&Omn7~S|^-$D8G07o|H ze;~Ki@bb7xw~+HdZi?dN3f=)?Q&SU3MsN1pwQeE=T^{0n%7m7a zeJuVdV4IDFg-I#x=}l&pi!c7V@a0K3Ahb~=64P{fh-zz>>9>>QtQ%(qsMcVEJDtdW zJ&PdONFD>VdA&_*R7L>1?Hw5*#-G0<6l{Ne2<~fpFiMJP0D}+uIMWYyZ-8K+A9wx# zWp{wdGq|+C+!(QN3i85I?@PxQgHxC22Kw{!(c0w63PnYei>~V67W3+mT~02tUCCxROxc9XIaTiIZ;>QQ&ze{UXjpAztzjc zKY3qfnirCa?uPg&1C_Y}mcVv;Nks?+SouUohJ1lh1)hW>jTvzDdRhZLqTasH8s{l? z)i)%K=^Q1KX4}_E=xUvo+|w(N?LUXimHGK#c6~ExH9bmtbd!#tv^MVC-N#2SttMy8 z-u{{1kml`V)(U;wE|xgouh~9?VdM+OLLpmbFPBFq@$OoV>>4=C!!Qs$_hgN;`p^HP z>CD5SeBU-cG&GhnqzoyBEF)p;$~u-9TgEQ?SVH!_Y-vJFNMj#~3}w&0FJbH>314Ij zO?E=E<$ZpCypF@44vz6W*L`2-^*PV$%J&=|1;)r}YlYtf6?<&we{+iV{_fZFCh6%j zC|6BFQ842$T2Y!1X)0C>kf9E_=)jkOEk`}bSrbjTtgScO<# zUTP5A6{H_Dmk0C>fO~X2c)l&NVZJ@=$P%)+)O$!YLpY!nqJJG9-(7$3R^=S9F?q^n z&;IdsXM$^#Ad5VR=J>R^DQNgiou@xr`1~P%f7-!C6lW2Ew;L(wv1!blirp%*N%OS+ zC)Ivrk{NdQiDAME=+WW@Fr0uHI(`o0M}bf*4xcl~8SO004rov}2(G8daM8N1h`}f7 zN0>qqGNP&RtvEV*$Itip-%JwLo4PkW(_dWKxIG!%yPh<|F)}A>dV~921`5(#ULul- zd50TzWdi%|ynZd{YUMez6|6+%hVLvcH7_lO1O=I;t~e^#i9Mu7SNFbIq5JnEL0mcP zZ}QSMSQLfO;>dro!>T$WxN-6F;pqCxnKoqbo!vD@KuT)>sXm#`19h;gB?|d{THFoE z$36HAb6`eNilhdiY|$|O6t*}x2!iZ{@NbLe)wn&}9&>4BiLoWNySeIiPdV0#thon& zzt2Oc$}O*GO&Y0qYiF(a^l-L$Ci^-?z}0!ICR`<`_ocmZ;&J7+zm2xXth7En{v`G~ z$njnYz`|dUxK<^vbni<3cb;QdzgIA?3XX}jBZFa;V2@|z=YDU<3N$cHJ?K{@BW^XDIh`_}?!Qp(n*VPlyz53Dh7i}Y-5ZC?PcknQsJa~$+h zR^eM2o5_1r14H1;9G8r(=OHV>_1I0aJ1+)&yN+-cSoaM6RlXhTzVd*^4bZCnkc zs_zV12FD{#=1-rUa)B1C`>N{|4=I`CV|82WWMK}p`lB)bC=E{p>E*3 zOXc60%K4x65f^<+9c<^((N*WaV?{}4!)lOS_6y+v8wI&TYNy#R`j7Ej-!>^B2K zh|)wLlOuO?+qxD7efo1aduC>a00P6_D{gaMh+=gDOM&d;F2jkc9rCPHYQmscQfB?{^z6kYuBfW$bfEM+B(^u&m3jLm-(7nUQM~@O%o5I=Q%h# zuH$Jc^eis67X9ftW90!*aCwhlO-m52o26sG(j9YugNtjjdEuOXPA@BKMBQBmWNCoh}!N z(?}yZ;~XL7!Ww8+&@b!mxRnjAD8f}|!+X-+9o9vZXlax%iP?T<|JjCXuHs|c@a^Zp zvKsa|vphjo`kpfu@5#P6Xg92+xO`w*p{Vxqs6S;oh#r)W>(3X(eH(}Zt82$DIlu(T z-K(ps(jNhnv@da>ice$X@FG0E@a;CsJ?}GzNHFL#psct5J6^BwN6_D*jogpxFItAu zL(~Qq94*DK>Dx?>*jZc2ZLqK)L(!|NYu4ySmB-Ix=f0|(ug=bHrrFcbT<`6*Upf%QF3RGNW_WHebK}u-(8o-Y!s3CKb`V6FKGytgYX{0?4sv)m(g&Zf@t)M1<`rF(N_*N-mu9NaT_@Ss_ zF88~nq7BUZqM&wFIs7;zBI3BmJhwgc#J$!E&Q0LTF-PrGu^T>u1Dsw;y#!oZ;Fryi zz+*BD1u@#+rm+c7pr;2dr%;kUBjW%R?rs^~Rr3+C+X#x7*jm%nCd*g>qou^aa~2$% z$Ly{IH_Pmz4|~3~m>H=wHsb5R#Q4VX*zDo_{QlXm@UPQllg&$c=~Y}YzV-8=+pK`! zu<7H@`1tsuPv6})Fq@!dfU$fAWqqg~DN~|7W&Vbn3TL(3869?ZaH<@C*O} z6C=u%j5V_SJUj8m-$)bM1X5-wl=Sw~74udU~S?bdCwseQI&y--Qd{CwK;5TS{`f{J3w!hB9o zPgf{GK^%sJNr)blq+UK@V)OL5_|L z?e0-I21&95M^Iyn9I>|J6+^=j3My{!%@x7E0>PzkSTT?Um1rLi608tL178-?eJZEvoWFI_fp5pSv;MsfIX8Z>X3=NRoqeaWlmai(S zs3eVIX`yHwge>d~%?G{96d#bwZO2J}^GDqB_*p&a9m&`IW2wl4#~9~^c`uvj>l@*F zlwfztf~jjiKg;D9tUmeyzEU@Pv;AzVYpY@A@u4Onv{Qng;O`k8&FsJ(<}*hF)l@Sa zF~Hf+N1W73#`wRL;Q$o?Vrvw**$bi^4K@ZN3)unQSLn*K9t{D*W81dj z9b@uJYn4}`5SnB*X9r>vU{Zhb=XCk>^c#Jvqom*?{Az5DEOuVs8iZzQ&w-){i`CUv z;eUhMPjWCK7k1GIayRhY0-ciFe1v=Um5lD=5Q*ue_wh(fyfFx0NqFR=tWiCq@{T{g zpH>wFT9S`AT1f{k%STJVi2}H_gz^T*x}F*elamMYQ!oXD(m;jz|F(n2q`Q|%1md2< zMi|6%#)bJLMA7BKh=LH64KWWV={OC1MCEEKb)-L?OH1U`h z2fwrzda`bJetdemF*ZDjOWqrla!yTBLx%<*F4z#Yr>{narE=J29FC*f_EbmD5ZV_<4xk4X@QJgsIJt>zc2goXDEBaPoaJV*YNYd^X~ z{tNv0)Vt*>lSDW#E~CSGCIN{?jEtCPfb~@M3X{LVWU?nQ1A~M9>-&I6mRdJ=-;&V& zw@19Ld3e$;QYm)?_|5ln>m&bm@%Wj`vsCxBE{=`+HP7DV0AA9ld?=ok%y2q25<&lN z#OoeCSoIdWFNG+DLa~@ELMI7g; z%Azfe2GpW41Dj8R|J%ZRmQeG!LX6B84wF>9VRKr84Qo9a?RO--#l zwmsjr+OTUT9&Bw-;^PZ5w}T#%wJopiY|hk!J~ow~4@Mr9jHsN4RZlH9PfKW>w27~~ zhc;Px%aJpDxhpCva$XI-nJO_iM+YzYBv(n2_1{lesY6PNt;)=*rvPDa>rZx-XlN%W z4w9#Gx@h+zxx%*fb4GFh_xbYnljD2upV!~y-wJ1jGr~0la{R;RU2lOv$)BEE&r%YF zD@_03oe>hxx_puaRFtyYk2iYUYrAi~u*c#Zy&Mgp!K( ze|O2kxJNU0$^RXm0e<8(st_=8RNT1e5sehYdc)MeOAiCK`y$us1XrQnt+`k?KuGc~ z_uf{vkV}&}2{`#THhd4K^!aU7H%zhlkzGX4-G@Gu#kGJx1Z*9%^YbwaF%Cf417e@j`jM2rH7DCiXPd!s_m$@|T1WP&l<)^>9ybje zkCWazgV;bwQXCW~Y*E4+|6&=`J?s)Lzwyd+W^-$QzeTjfyY1*2oLwE(Yjm6Rioy?% zaoCx2eh3E`aW?q=>CxU~g=;Rs{>X}DkM0e$IZui_@ECZY-L;o~o80-~ zvZjt+0EfA2N%hL?Y|&JHjKsHBryB=MsHKD9;K3`6@~=(rT!HW?w>3AnyHSS=Vk+8? z#=@r9Zk{*yd;-n0KsIjb!4lhgodGl22fxI|ySqm7nw4<66SL$QXYa&P6?#}hN$&9k=i z-5CQ_U&)V@7~t|$G{QrFYcLji+&0K=J%7lOeKI(h(3V@5os*{-2Yne#=>1Uhr;1CdUlkslXvvKbr- z8U#kcuiB5+#FJvxl41*^K@i-R$m66)IBDZ@FSyj#CQj-)pTp1JN6d=>hwmg}h*v40 z*npcXzfJN+R)f*3`HI$8qU=c@Tmr9Redrg#BDPQvCmcJ!?&hAQ1sOdI_qy>Hilrr1 zO@-}R6l)eF=ZgxEYIyd8o^H0D|D8R*01}PQzg6%Kh)=uwA|d~8zqvRkhnR-tK=E7k zZhR>B#nC_;BX<1PH!J=9eygQ6q8#Yer93%7z4x6N2eb0b?+=lheU?V%n~&={GE$xI zF(02b8}h!;2_$wlv3aXRF1EU7H;(T7JcesBgShBlK&{2n36-<9BzAQO%z^yU|5^u* zAsrLn@|4f@p~jQxXE?+7)X{NUVSmyG0$6o0SgDGQI1;uK7p zvqJXpZ@tV}uXKfUz;M=$5J10VvGtH)<`?*8#kAh^&-nG<1}aQUI*0FgM$N?>SxfB{sM5#1O$%L-T~qu2+7c)#x_qX zCLVSs5d>(EmToTisZF4$iE^+3{Ow_|a!-%nN3ERm*`f*8m_uRpgdUVf>&zzF>}Jx_ zxQ?(nGt=kDhz2_*_?}Wjgg#_$v##rllA@v$Q|f4+=<#48LY=QlG|Y$hSpqP&8yBI= zO~}SCR0+f2V_$+}FYq^rk=TinZS$K)){JV%7*IE?)xQqN<)|Jz3Y##z z2%7ygBO>!n-&A|6^%Vk2tKd4gBB|k88nJu2Hts48-yf64Eg-rmnT2HoRUP1A>SoyJ zUDx>NEAgzf@MDLKS7Q@dQ>B)oRQzk`_uYoWIRkg=GBX58aZIrxx!wou%iY}a9YMzo zKV6AzNpUtZV}ldmEkl|=MFdDD=u8C#sCRon)`*NgyyfM!va7lSRCcl^Pv5s|LC3zrC(j``)evLVpQliZm5JMqqw+FO; zi#{PC|1D>_pyKighlecSF*gh*4M=%8iU6CMnx*O?Xft5%(>bV+XU)ws!+#tw{82Cc z(GWo}irxPlS(uC&YA^tvUlY@VFxkPC)gi&lU6r$5u?|rZNUeC3gciaPtzR8_FI!Fp zPo=><_#1hCcs{65KU*#?Hd3?Z<-L94B|+|qA~Fs3^oJ>%qXnR;TuAcX8^*5RmFCdo zjFzk+`C`|Rx2@rOetSNV-?zoY#hG-rc)Yy5E0TK8T3YYk3$L~0nQwg>i!2pkV1-7j zK^WAk*vF(5T+;_b$IPq@pN}KSg_*2F5KT`hSG^FPx|xe4W~?=uGrUqvc)c`ulms&l zVAarOeIXIL&7heK(xYLu&^BOTG>%lfS(`K!&jio8gfZ*Ia)d=g9XktkJe&br)o1&x zLdE<<%;Pdab|$#?{9)B2Y)5VzAl5o%jGe&3hUnKrHn0P1D0-#6b+%ejn&;>_cJI&|3Z1kX;+d z{7%HRK_WAS@=3SQ6p&y6Pyvs$nRH-YtKuwld+-K>WkiO=vE7P`1*lLDsh22PqGQzy zcIZXiy98(_>YB;NPxo#ne6I7nw@>F<*nCkNkr@ zX#I%#d$j#sxbScm-V z74?lLq{Oc!REd<1k&9u`EIR1L_X)}Z^bGG{Y_trYc@2m2>Ch4d?9oY-|Dr$fzGGlT zMI&_?HVlL#nC`Ere$E-DX61_t=r2yIKXxQ{(J-fg9i>r=;zPs_sK3R+;b&mS}% zIk7`O6C@$8^M%zR#B_>4Nue({O%x%o$Fa>ShvHK0##LHdRgM|Rf?VM*C=iZc-pBw& z3m+aDqiImu2wAcg)dpg49j;-NCT`c}gui4a^|Sg9Jl)yvu9CjG5j&My1SCJSG`8zP z87u)!${AzUudd`4qeGU&k0!HeL`@9PFSk>QM%cyHo^zI@_vR{09q6Gf23>qO@S(?s2OpW~XBWh#>a7Z5H% zUL&6&xQcFufZ+da%E57>@=qJuXSNSvS0Ma?FER1Zml7+yZ=`m+-pOzfC*Q0!d7bU3 zDljoP=}CB~oQqQiJq&PiD7jS=|7;`yH4FK#GqM5;nkdi+}mI1mL%mCx#s$g6UKeS|tN&i#r; zN;1Efy+R6*eMmp^4Ek!EFjjE3``^PWP(EO=EZXx$vfgU@3*a{enwq~1yq4t(O z3ool3+Ev&!I~ATM6E=r3rJo3(Sl5tr&hx4N0l|JDHZAwyuZZ9X)|cu%KRExJTUtwC zBg39O;=1abU%Cbc%tL%QhG^l?3fB0Hci;=44$Ft^RUdCt61KkFTgNAMb}l)@DI?8% z5)rzZ44nL6UDw6o;nvY6&+FvXFy-qpXP@Rl?3`G5kHgoDWC&k+k7J|gAU$7-BUfxc z7qwIfW?*$`Ndk|Z;90&vD$5}-uy%tTLaa$K7Xf>5it-h7a$DShv@ z7t4Iao^AY(jg0_UldmEh7l4emw(Ii_8JdX+M)jRKQE)qO{b}wKgFt@0WY(WK+fC(O zF2sbcPb2;oiM{V@uc2-w#6y1)lOzNPy!3EQ@~6Wf<=j-~MdHDn@c@22w(DIj7 z0gIWq3vrmKnR`m{g)5N1aS3V2=s&MkD}m9nw=5Hjz^s=i+}9o93~(6g0-K*$42bg$ zI@2v{x{k!`ExVq<-GBA4d>sT5xB^?!L6ileldpb10p~qW=DJ}Y59wI)C6XmBi+OCU zHBt1G@_d?~KCn__m&?APaWkJvAYrLITZdzhVAxpo;HP^#QzaaxQ)I~bCX1bU;6rvg z4!<@<{V2u9L1InS&@Uf(i}i&3hL)D0;iCwc zq^4?OFV-gg4HpoeW_}5-_i(%QVw?-!voQmqG{+M(s*sEV`l!sK4X0nPChk7(-JWlk zdwvO?>Wl=gq}|Q2{DnUbvdu9MWFj75HK3svSx#1u$1do#iEzBX%U6m^hTj5?on(Js z;0oxXTejg9Tsf_{n*pXl^|{wFA^>r%Hloq`E(h6Hbg-(pxGV1-H@C*S92rwn3_7Q} zQ3wK0!$1;|jzkXlt+FCtqLZaILKQ`cu~xR%qMxhv_?(&I_#^XZ@!?vVnFA~LJG2NTM)Z(?2z!lkCN)_R@M`Bhl48d zX?E+EQg;T=<>xZIbjLoCkeiNpVjx0OYt^rfm@CQ`7ii3eN{Y?nG0}S|DOm93jb(*g z^RO7{Z+B^0)k3uEW@Q~2mW{jx`g%o;11qc>`lQK9j03fkfugMC>{+chdAV-t7>^W` z3NHeEp1!47qt#U4eG(p81+8+s4ovW;pUN>`KuN4mX~#oup>#f3v$H3koX8Y@4vmwD ze#t;Vl&juV<#pUaXvBYFiKxFG)EhBjlF-xQb?uT~ZN|Olr4tZSFa!ES{n*)N%|n%d zoXg1kKI}WQuGyf|{%pTri4^FzQj{3Sclco}o`5kow!+?e44TPHkXH1p4T9o1*aiug|ZV1K1cedO}w7l&TUrduW6H z_|YBA3mLr}j{i{pbFQ&%Ov~F5ujUC6D|^OU#m*lcF!8g~RYc&?t7>Xk1LBH-PA z^nkKjps#e>m=VOA40+#^z`-%0u+0nym=38#=tk@Ck6^KcqNkS>BmXHDnN2hZDL3WF zR9h~!zAa>M@R8@P!n0s;$gPu`aK4a%yeQ#Ec;EU+`I||>hgZljwU+tqvf8TUxs$2K z^ze*wUl!a-#@;3G`@Em0;Gh8`@o-jSlup@(ei=y_BbLR4zU1;flo_oX7OqQN^Nd)Kl?NSb z)nf%Abt;rEN*-oRyZ>L(cH2pSZ(yeY9ioukX`B(Np@sz=**4J$%`RqO?1?6|-Oy*a z%du+Oi1>lfF<`6$*GiIjJR_;mK6_&#JDWR<8uWPn)r1xZ$`MjM$2x?#2-GgJkWyUGx)>reu%Qcnq=p z?J7e#Pa+|{uv{T;)IsSIIlp=4K!Ph-nAGCwijyEDkG6eub+)|djntYBA>BtjvP`R= ztk+aC#!=Qv6XzaZrYQ(A@;6|35381|uwzY>ZN5m27Uhg?)Mcwq{s3^GY{u7U0N78~ zJL3FA2a%fUhDV}$B=*DSnc!9vX4V)U%NCrA>{EnR1@vLlWdAiH*b9I?sgsedQSYD%5q=0oWVN z&zBii*FmZ?bwx$gna!qk7W@Fp#Pgnt%2Nsq5M<{zWyhp%K^b}!xUa`3>mKZ>mUk^K zv~r*n*X9Y5$Y@yQIAiFlbwlHv{s3${+Hmfk5%iEaQL6!MgaCNC>ttQMee55| zQ5zwhI+V~uS61u}96_)UI1MN^{P5LzotwMI>8I;|PL#+Wi%AnAxf~>un0?8P7hmFi zKYu7K0c4ktt3Q7pJA{t~UKF!{B>LZFRyQJWDhwmZ0FZ#S$%Bn_`s_TyKnO1EbE~Nw4K>1AGAl&3k1-4vp6EMa145rtP!saN;i(kSI zXP=hg30J9#WC>nm`ny~Zk{+*yf2K>3cO@3F z&$6NL3LJ>>@w(aaNee#LJ{k@=;0eJzK;%fqz;Fb#h}d8GB!%9lazaX@6FH++3jvr7 zdRGC_85p9BsH&*s-sEY&ibw5K*zwrfz9kX#jXB?!$)FJk!f2X&B$0{of<=sqiwZsr zo)DpALc?m^d*;v5BOk3l^q3gSK(kNOqu z8tpzPW+#wz-6JO#t8Mj=KAOo^ZdlroE+qx+?r_@%h;wj%?y zd{UPLGG|+G^bP%eBgd5zmVq9vvb_qZH&LgtjKM|sm zNd(j*%F68Ky}X_cK`5_+oY~CuemHB&6(_5yCbv6O=o_l_=})`!%x68NfNK4B^-LoC zdXYNCQrmL;NmkmJFL&%?{R_e*3CuLi-?W;58Mw*%ED(ca1^dd&FRqXMY70LJ3T)Lu zT$H{_S${j%EZ8^a$E#Ki^ai z&qggQ(X7_yrh$sgovshvQV?@q^}lx)5n89ay()@I6-~v%3iqgw#)Dz>YmJY5Hzf;4 z6m-e0hc!NX17xfT^z{U*ua5TMisR;9(CABzO*goL#(hO@4fg0%j3YA~=hZ4p{xY8s zH>Oy?&RLD|qo(!i7gkM7+{)@uNLI}+TYl2|Tbb=)_tRj-n?j=6 z5;ynGDL@=ZOP zUp2Hgm%Af}{qdh9k}=-`-xEM)H9scSid$txbhV z@3p#OQ5A2le5m7i`TT4oNZGtBL#P+$W<{!f(3H3A6CMt1U&*=)?BFRc39?M{<=T&n^{JvqSmlsk#Gu@;xvC4wM`EZVl}3gcDxcN{m(G1YS`2 zJ7`#vYF%l)tR44({mqDid7$R+hrLTinGLPB;eU4=BDr4+cY4d_5V(>rh!XuZ-kJKKIW*R|V|HgId!2U`u(Ku_s{EyAGE!Hq%#G!%qK4%=iob(!S=>UW$MeQlB#*9bKVPOb*?-6 z0#71zT;jj-^sKfxp&t@;84o0jbmgyvi}gs1_#;An|NY0qx+|(`g;IM@$f7D}{`vd& zhfQUj^1)L?Bb0ncr?{HH&3Bjj3JD|tqd&%a8x}3SBRq+Spa@LVu2_qZF2@?iED&cfB%`GQMYoqlQksVRKGG7SoA=OcY_{9AqZ z0iDlLbLuIpe5}^TBK`Ho79;{lfmeb|bJSDw>g}&__dwu9!O*9_Ff2sJquJKZG*yw?mgw)SY}aX}ix`(5!ZT>( zu~$!E^8YKXz&XMH78iqHu9DOS(TL{ON42Shl-jG*-;0YnU*nl=7M)nNBYS&(zoyr~ zh1o6KWP8r%jE*nW{gYSC%f_{NzeU+gksN@S5H_)N2#6-CqhI?|GKEPYJUK~meX0RA zljY66e)|uuV@u0=L%GOf?tub0i!@uvc;FpXUy3gc1`P(AVMLHen1L$r`)uN>+C=#L zJr49s{h6}K8>?2wm5@BNT7D?7kOTZk;3(kk%fn!~=)Hw-14R4fRk5uk6Ll`EA0^-t zt83h4LU+1Y%4-7qYV)smFR!X@$4=ZOX3$CS8fXMn}MyPhR&JmiW{8R1ia6 zcz*9deV&EA5y(_m6X}${g0V2>&mYaQdKC2-NRD;u!W&JvW2RmMKL7No3-{W&0aeew z^jfrWt%d1)6o2A`sisC?b7 z0CL%=8#-sLV|yLZZiXA+Er{DO===Vu6Uy`Ojj#8T{jsMXTo(s<~hBl`NM zNqSWj3jc4?O4mksc7PH(5D-@*mx+o6Qsk$LZ1C8GT1+FqL`DPgmO1gFVU#27}IMb(&0$|u(s-!;u?!QK1 zedD4H*!{IX3g*lq6xP>3PEn2i{b;BbfTap7u|4C^0AGFqckGXP@p>U|H2N9Tnl9Jx zGqJLgE$nNS6jVUnAj6SnSpn|Y`B|Hm1*E3Rtl(O(7!tqo!|+UN;-c7i+95Sg40)-` z={>!`lQy4c`eVy2Q41x3LNzHO_f+UPaI&O@!M(+QZH;YBuhBS(hsMU1HM3qVcJfl_ zX|F&gVcS23$ajEoNPx7nlr*xZ7--WxYhBjdb4P7GUMi0;{TOXC8QZnEyZZ?UpDoX| zd%HX(k^WYB+11JRZGYysiW~zW5yFSOysfNvGYJ_toJ$fyu91B1a>S1%SP!h+Y`L5=ng~j~ zN{4a2QcWp1>C21)Db;a!;P#RDN7kOuWyqimp%}zKhwTzd|=k^ zY+yQWz3GMRSX%s2^Yxc0qSAd(I;SmM31;jzg)HUaQJIN1Hyz7$0VuJlnVIXDQbX33 zLG;J+nSwZys!dso-P_!DrFKO^iu^^Y3q{RE6!ZYZlm`7QaC7?_;3zk>W_? z-!m%FAKzF`YtxJ9jA$2<=})1tI6hsuPp&Mk#oQGNpfIG2wl`Rf-EOy++*kaUIV@{R z-e>;m`PWQ&_xCN^AcXk(Fy0r_bOH2rH&m%x&Rx01nldXcg%S}UV9c@wsR91MGc{#N znOm8~b(7}Xj?4)Ui;K%ea{T=$z7!l3?FM&(sG(aMoPRwfTiR6ki4_@dhd&sAz}4fV zYjdfYzgY1M0BWd-wjDP^^ur{`E1DmYiiNm%j1tuKM>PBPe{+eA9@Z(f{bI8bofOxa zN`DSmgJgcCOp1@M3XEOt=w`e|Rxqb6p5`lT<8f>NE9+S@HU&qiGwfiBB+LvdmpC6ZeKn&jym!B6P{L^#Zt)kbAjA7sUwYnT_ zlNKsI$>$cp_chmv`L$D_pF!bQOuY5G;%R}QvybyzL9ty9Z>j4gCBRufC9!{Uri%#8 z5~N<+Zp9n}`2C(@(h?u;`{SS}KkkdbCaYFo3KPX&tZ1qKj##>0nT4ro-PhQz!H@Gr z?9-;Lmfkuey0+ygM$Tww;fu!AemYL)I5B$JxAJz zJUu-DJ~0w-Z;oREb+aEYE~k~&wzamJqB(B^E`s%}s#k})1FZ1WXxzX=?QqZ4eZ)vz zvHzdmvAH{)8CIo}>$)v1srZ67O}KFZp3z)*N9jgm3P&E%LD8R0hKO4g}$PQrs+EwsVrLA(u;~^>h4h_GbDU zG4|<7=EEAJoJ=Ndmc7MkW73;mzEu->EynQc)jqBD!XNWzNDA!I#=>Sj5SX(d5W@Oe z{st&Yv-<(zC;BCOp31QPWJ?RNTOLV|FjqOrp`^}{OmOkD;{MYtgWH7({wfZFm7eFnCNA`nL4`U*t7nVH!Ta9 z`^saSqtA6R6S!&TVuo^83Uya~UfVV(W>j44wKWx7ZCUs|)RtwC9x0x~1R|;SD{6LQ zBny`uni|_fgU=D4Dy;%%Y#^FJ^htYQ%Y@ImxVwI!@7sV4xCoJMLpE07 z)Nf^-XjDw0N@;$z7K?*WP3QuE{h6Rd0gkB8QOKdF7WTI^G&o1sT?6}0^>|*~@zz-I z_m1LfNGMm=;2^N0rcH(WGU$c-&%*K|H>^(Vpeqfc+DX9@-1y%esJMjJR= zr!SZI=1`5XjGck=Hzq!~Q$a2fFs0!?HF+7MW6wT1$=`^b40=V3A71??Rfruz`FMDE zthq6hIt<&_Ny;I&Jq#HBjVRBdY`j-W=HJfd-q>wF4|({y4e|CG}k-q5*&PZIZ9mj`}PS8DPZwaasOXPhVgRqCQ!TJ-9$CU5>rz~aPEqL#lN$J zJn2Zp7EpkcD%0c7N0xrcxVFA3#W0$dre9yE zgVr~eiFTJ;e@IC^%-nldD@p>Pt%PSwS6o_8Jdbk@r%qrfKIb4+Ei%d#YV@JdtE89_ zUSLvO4A?gIme;4H7_50;V=MTXpp# zjVR~U)YpF~H1hc^k8blXr{qB;!2v>ist!b&W#(uRq>)B{2X82kT3=zRzVYy0i2RLo zXJ92qgjgvg#+ng1GPqP%40Ocaw+x{v} zcjWJzcSpGqr?E-P*A+`zB4jx96sRfUkr_4-@|+qzVr6CRVG)0S_ufaWHCg%R;f$vB35 z66#Av8h9r`TX=;o#bBU2)+;W;u9o5S%;0x=uU85Z#mnm)vyu^eU3RA=+1~-v;&3zM zGOi=jWFP~`dHc5sSbGl!>rb}JgR}3IX*xHjSoT{pUJqLsdgHh9q%|l)ncL2+lZ zE@w{a?(uOJ6FjvnI}pFJ>n85TrFT^kdlWq);U$*(ZH4mWWJrV*EiS+zFaqJjZ2vYk zI+C5Y^THe}nB?$P(w0h4EF9vJ{hh4&XnDm2TskFryFLSJpb7}HDHt`mpX@_Pc5hQ( zlr*1s&Hg#Z64j*#hg3}hZ9p_fUcsK8o7N#u6rb?CV#Q=ca2qT70hv@%W-|IxBYVL1 z-9?``q)9FP!W$lps9wAUTDv3lrs4g(SHSKe1YLKEF7&sk-Q^C2e(eiBVw~E=LN60K zU>6snXctAD1yVsB)@;})3m7Loh?aMWNK+*BgF7mx-3m>kO3w{TOR-xt)(A3lAkzW> z)m2_yqvNf9xlIYLZVJ*Q)ri?3oa)vI}&gRMPFdMZ*lU5up zaB+WyA{0+CyNvyF|9SO$&CGtciKZp+f8eUfRON!(KB47w9#_-hac|R)Y~d4M~44BRw$};7x`F_%ONZZKK~75y4XSlQ~MOc4i{&u z^t!&hX}Apvu#p40{f5Ypzl8)5x^!o+tmCz{0nK_*TgIM@4C+eAMh=syDG+60%D4)} zh%8#bKtk6TQ&si_7{TyozGlG7LSpYXx<$&s6c{g^8cw^ByVpw!dtu_@=Z}S=NCc@s z29V@G9rb^O`@^^w+6bh8Q{UAYn@#BZhlOs6J-_@fBb?sXEXTXN#$~-4`$RxJ<4?^W zK7(N?Zdtv~nd0mpi>s{GhoYotI_zw1$q{J*c>(wrnz!d>=Vm2h;J^uj;}f9jjrK(KaYF20?0!BsQONyr9e#_q za~Q?gli8%+H6G`s|yYmyS zDeD#e6Ha|R9rLFbkK9xArKs;)l^i@d02sCM^~ByQd?s~sLFS&bN@3wyX(YFYJS{A0 zwh*^~6)Ae)|H_%;pP11frQ;@sv*%{@ZJud+8VszsjAh}OSU&)~-zxfha9sBr(8998 zvp)IW6eDf5;h~P$BJ@Hz;w!ZsCQ|1vi;w|Nz$QBy_%E8 z;}p!;_noWRD-+Y!W&r*PDlK;34yOzP1&3n%$_+p5RnceUomEKm7kg*gI#nu{t-p9{ zngxv*4V-;3(+8tkOF~iF6oty)#}WC-dXO(#xAZ7U*MMs2` z!#Q6{tr5u{EgmV@618`2y64e~WR?lqW_j^Na^HyXe=j6_W5VTMh!73a_A=C; z)wo|rbgzblko5Zk>qA$r%afyOhUKpWjwf%UDKDg0!-(k$e|`M@yBg)W6ML8XVNahv zzw-YqfMX)ER=<8|>l@DrR^?Uogcfksm2)my(EIwB2A-Y*mBRAg!j?YjlFQx# zEW|(@6wA__nWC%sRYj%9mHZmdY+W(B);+Xkne;VDBLzEJ@7M~CNYVHTA`%x8RQ5c; zZIE@a$Cin;5_Eyd1N_xom=mqV7O76(DI@}vjY&=dW^`+%gn=Dm3x2-*CM89U!6D*&>tAuR ztqTWMBo418=Jr+ySeAY*s)!I9AxQsqD%p$?*f%2^v)nRf#gkOzY?<~+v^uwFHAH^s z&Den11e!r*%C5EZ z?9quK&%fUs?NzBq+W>Q(G-g!dQk_>egY&671TB+V)QEOSK8)7_v50NHCYdS;#6W{1 z_d?AW?GbS#mCMBOX|DdOf&9e1uEk2L+Eh;nokf}enLEtt+N5-?SuJ~-8gu8Ru7pD% z!!jzx5e`pTFF7Sp=D|+5ZCP=F-B>=kN1T}BefiQCbEBe|NE1Ut|rV5 zZ%$bF%C`W$O?I|N6tPN$JJ-+P@UY&d{;QUW=^gOBn=EJsdwcvfl)VGW4*;h&v_HzH zBd)PU?;`a{TFBc**JCg_G|mCj|(-UGrZ+ z)yQ>`!Oz0*3`9y&*OPxs1w3fxJV*a=S&tv~9`$8VP|yg(Z6q)F4$CDde(OP;K4pHP z+7>vrKtf(1#lFvli_T}<{wU~r$(r0XW0HkUl-gVPI`7&7UFwEj5J@g|P)E6S`BX!-Neb`SRZRz*tcEvvBGebZ6 zLLQP+5mL##hH}q+Ul}2T%L@9fbJau3t~I(gKu(_3naVOlQf$%Z-^om3o#4~Qcyd&c zA*)N9$A724j`T-&UT5lwa#k+^f7O$}(JJgcfVX>frhRR0dmr#5B|WAIjNvKHhl@%#b{HPy7sW#0L@hfs5?Z!y@no z6e@p`R-SNray+k^T{R8ihySmuNA)l5{%caWZ^$;OQ&Kz8H%D0z%kF7Q;|Gm=sQqar zgV6lr))jZTPl@l_MugI#O+q^Kd<|P-L24F+`Y!X}J5~Suc*4m)uVLTtaJnuC5DlsI zm048}wVdOACf@D9@MRWh-9#L;E08b)@Kk5|3Zh)AdW*028rq=)9juXk54#U_EFpcZ zfzYMys5f~9Y+O&TL5(lPeP-OzQP=@WFp1Esz0=cnW=~!uGxuG2|Kg?^ndH{!K?%Jz~O|K*sGn34VI9o%61dC6-61ggySv+ML`F4hkNa z^|(W&&a!Ki{Ne99Xyb5tKSp`sU~i!T|wqnVNp{E}QW zeS5yf&>y+jcqhcg#U&(k$qu0u+$e@ec`Hx6M~m`2=dtHkt#g%%b>=%G8`#%&49{W( zC$?FYCf4iMh}UO}D+?xL&L%p-&)kLaQ9T_B(1U?(0mac>3qvXssc5Aaxfpa}6$K z1gD7(c;ELmm!C&b!ne*e@$x1iB+Qb~h{5kuVr*Ay4&VrQ{9c_~6g}a{XU_lYqbDd z>=QRqbS81(B%$l1 zhb{_e%$w=@$I8iH%R3RHjwOhw=(TD;=tjRy7n&mhO%2u(=^O&Nzk7Xr-j3CV#a)ML z+&3uCjNR+c7R$E=9N?Gx@4@4gvW^FoGH#EWWVEC_IL|h5#M+&6r4u^^Q2rP8;}UYs zdIdB}Mk4UX{|*ruAwWtEU{)vhP|q92RD80@zh#mDVaWl4)`J7cX2lmn>#fc14T}L7 znL7zb_bVYt7Kw8Md{1~VrjTmtq)&4@9)AS5iGgS3 z?e%DQQhY>(S4!+iqbWwFkIyq?bVV3)4WJs$2flpn7VhJEiJC%etDFAoeY%0ZUKnXl zj@SG;{#l^3M9>Q=A$|vvy~GZ>X>TpmooQ_dhY0pq=UM~*MIVrwLut&}&jczkG51$;8*c6y?5x)Z6o`o<)qttFtZ9hvf&3>jlPGlhh0bpllNFpf6v7YUn(w z?=TZvoyoq-w43STjk-;^*n_`ozMLuNBy7@&vv zg(E^z05E`FK;*oph;>9p^?absG#hAu#(lq?KsceE?z_EL^m;@JaCH@h;3PcpwfK6; z*~?z0TL2sP>WtfFn5^Xh>CE?ae|UEd`Jm`Z1^eKj9Y&&m%`I zmtGjjKD&2f1v&m7x*cee)Je;(zgt`*AsF-_jd_hRt+DOj4uE}JTKaw<%{NC0XsEBB z&3C~%V)s-p7&aXpk^39QlIkXFt{osbI_lv8%bHnvT$p8~X_jsEZ{t44QRwKjPcwIt zVBNB&NWQh09_567+Mgilsy)xIlp0bNfABqR20!_=U!V)nDd~s?1=j1u#zrFWhx7D! zfaW(?;!$WVn>UNEkJ;aHfgJ47_>-MUc7h{N9bMhygC+BBjGtY&(-_a`w%{YFIbqLX z#~H3%uF%s^ElWv=)mPnc3Er-4%fXa7<69A$dTEP>&h_=J#3^8(ysMajd=?K_07YYE z^HXO5T7vuv@c#DHIl$CR1+0B{dZaPVk#KnU!hWEu01(_Gry#NH{U^hV6b|!VQZxtZ z{l5Td&k~_OCRvj$dZ!oK&+Imb%YM?>>8jD=-pAb$jtHNJ;bymr{e+8KqxZL{T}Sg` zTU!kjLJSp64%GItuvnVhdHUk2RCQkZI2=oxjc~!so_{~lYKa*cnpEojRJcn?dm+fA zVe(U2Ub_Kxp`gvH(OzAu1XvNK{I&*MlE5m#8P=EP-R#g{SGUxd@c8k>tTB~kN$FZnV*k{oc`wcZuYOQ{?S)#$>h2?9{|#m5#UU_CYIV?-Ozq; z6iFIYs6OHK{G24FPw-_2upAk#tgTyG|256L%V-@{Se6>Zyyl|~y*{kl*G^Ee_~*Bi z7@Shu)M^bp0Y6KsuCCw#^IgVLnATnZnbGstlfv->fGYH+;%Mvn1O>qrk!45bCl zN0%aag&6=nAX`O2?+O}`C3t8Ox$8N69P#w&yT$W9eLx;pVR6+KG1Gbis-dtnKQCt} z!7v?FmIhczVMH?tAj}cUEdduuMcYiOsy01SGKJuXld3Sw@bK^*U|Mcy0U6z?lQN%w zyBQHDB#P_atC|t}@FEaYmQ*P5Gm16K8x&llM+;#99DHGxzf{`X{P+vj>0gu8VJ#OxQs z8|LD72Krg*bBfA{_o^~6b9t^$;JMK#)OP|}z7utOZG*aPlV)1K4dr*2y58;ohUw`O zr2!K*ZUh7(H+coRP)`ah17=uj8KE*sLol+$Yult>O#&(~b%{z8$|!084Ybm?LnQ>9 z1VR^wmLJIYZJ{>n!}U7eAFTOk-0KH!k^Oj_pd;v$MhPFd!@-1VF8jm&^jC9-U$yt30Iq%&n)eAxTBc3y z6O^i4un)Q4NI+?8$`ocYqCoDqV_&r5%jm=UMXyKA;|d|b-4 zadKkk_j`LT`zgwYEO`FV3UqrvG$8w=BeI)>omYOBP_27XC>#K2kt5e+H z1MXL{L(84lHg2#gUGPdD5b8>rG(q~JR z;a095s#muTkx%r_OGgb$oRuArjseQ#IK&?Cu1*X4xz`80?}x$!U(+Z51PlVWewhMi zO$obarM??UX6^PX6FcsApEvKGT}qTvGT`_?u9rF|W7Z34z3!Q>WZI_XkbEQ&Dukp?*j0vF3OFFlF`35IvXs1K}zRE!B0A4Q=(ebyhjWx--Bl#sVg14 zx%>{Nv|8oY7ed)m567n5C2vL(W+auRM&c8Aoj)pzCSDp}7s|P4wu(L{@#H{!>Yg^W z(=E@30#EeB*2_FC#HqDBSti_3Y7GDon4?7*RVZ(0sZ}NWBP?d2=%P34_h8KzYM<9t zO}!orysph`{V)?|J?JNdF6oLt2E6~NW%pH&j(2{4@MW)#dXet*)zMsrf8Y#ou#Pn& zvRWtK(oxoCZ^Ti#6%UAo~v#ml5JLusGz+ z-TI(dU1gMkJ98W=<&~G$L_Z4I5cC4v7qviT{)eIxf76%@dwD)<>05wCYi%cDO7UgE z#dd-HxP?}^XTgMYHxsa0StHM)<)o>*iL_2x8Nm4~=#SoMypeuJ_MYyguKevC){B|9z2g;8&O7$x=zchNNP+mUjno;YW zac-av(D)fiPqr*oi<82JfcfuHCnwa`I?)sY)yMvXu{%Jn^3ebx(uG-5 zuY4|Wa?64k_f9n7lC?C}^J=sbu(DJMz6xp|hp~E`GiQfh%d`G0;K>g9A~3oG&VS#U zYpt@n>gU?f_Tv;V9@{&L@)~Mt=<4c@dkR#T7%x?}@pDJwT>#>X0M0c?2JXcw_oQ+WT&}cJu*nc{A*u$*m^RPg3zMPa3+)N^u({xlK`M%jKy&T6qm4P7;v@<7gDHw69*aAWk>QRv$l$M<&|yH45ZgBkosD8A`+X!1Z<)`~s=M*?^N2 z=vzq=$=;fpZUr-GnpnFM=K?Mth}!!~RetB&1Mjd6K@pISAWq!^=NG(bY>K?rtOIQ$ zsS^&P<1q@AT)9wHp2Qlst2({C-p|17^Vv`LV%fh!CG%*4%`;#&x3_SoSdl`$=}p{CDpv8;`bN1%HKTNo-fuyj=p~9`t0d=v3wReyaTXMdz5K)tVyZm8@=2 z!7DQ?gNreNkB~$OJ8nybMuEvy7h#Kv;-#4Y|3$r;ujZxm-XaoiXojqoD~3) z8?*}5?JhICX!+j5Wey1sxO465?Xu!@j@l3fV}HXuQ&6^l>v`Q$+2q>+#Z}41>>UOy z{Edz1mt5AY%fdEnklrdkkePhC#pa!A9$%_ZT6%bG25XyYRp@BW<5|^_on@}(JQ%*# zD0rv|WK* zSY>jc_s7P(T>o&mV!RWVw)9 z19Ul#zXvZ0o2K0^d!lHk*!$RLL^;d)w{xPi92S@K+uLD{P$880r!)1tG0h4}ZK;eZ z!*4lWb}$PuFQhuK4xIcJI}MpS)nMWE+cNJhsTyZ9WSwl;jk_bt0;mh4${1&gbEkq` z)Kp_DVgANf8kf*xxtvu#efOp67KapvcX-Wij9#gsu+=~0cZA0QrD}Nixq-XLh*j+I z?zxcT<2ZQV#8F~M`8vj~ZuRfqzdxg$V6ai8*OB$9h_fLjpnHWIMiPp7EmM|ER z81@(aJWABmRpsWOkFAOM0D!WuEJXZK(xzI=uqdVu%i}+`gMw546X1EZW-li-{@BE? zB9HM&hSGx+gnRC7sTQJPhy-s>(o8?Fa*^uGW8-~bcycABs`8%M`0Q%kO{?J1@#``e z)0&k020^LEbOr#8N1Uy~j*@$TB=d)g=hDysc0ipEk*@OzX$LOXBn?= z82;M2h&Hl|iwiKD#M;TZ$3K27behmgc?1oV8@ROVaR&r8HPgDLQnw{XJ3Yn3KZMtj zVNg@BAXBPt`~FkOU~qo8tYsDNfIIX1?>*ZqaF_bzf19+RR~HRgC6vtJ?#*F7RuDz6 z0Eb>wN9-v@_$tib366c@@BVwZyJ+dIlozKcZOA8GK^m`7JNV)mRU207Nfvw*v2ZHkIsX0fGSKFp>S(Ad z$@`+2Mbm=QM6Mqga0pw6iKZ$YH=KTp^eHXr^V6}!duwj4_@&GBb_SGW=A=nD<~1FJ zy~Ruy%y*OgPFTmwIyzS)8;S1&^r>wJ*#bUCFRe$)za9rj&-5R z(pUQ)sxCy8wFNj)wN)gan4#?MseRD2WU?8Cw$*lrAV*{D)5Q~cxcLAz-@@tdlfw{l z>rde)RJ$9M`>7V0HQe{=W-oI!WlQvRLrKN=7YCehiGH9LVPN*a%U>q4`#v38>?9Lsa1ZcX_sP>$GYDMDrM!G3GoaBy)r;%Jkym- zk4zY`0yh}att(!|eXD=Z3&jEgY+0LHx12tb z)0z(dj4$uH()UBV+-%GM9A!|D0$|Rgj+G}I(@zJXBx0e+*|CjC86_5~X6jm;akpbk zpi_Y5I5&6LTmXc5;*l{OykLR{Xs?_&=<$=0fkK)^(d(kjyoE*lsI*Zj-Tl>n7!dTY&0v~VASB*}|g8fQR z?!%K~YX8w*yqm33YIjta1zDY^U7+YojRB27q!jPglUrTo`%+ErDl1y?d0LD@hqOlz z^Q<#&AGOq9*V1R_Q5N^KStr!*PnT_%>;K-_*^zjVHhyhK_@gTdjgX5fqk20S%w*WW zOmNzFl>P!qbU$13b1gXrj+ADUtK@tHYNLf4C`YaDhMJtoD?juzuf9b1RPGO@`B8T| zxbB&br@lWuI5>P;^t1V4+74d!3FKi6{lZAIU^PsU)*&GCQ@DK0#;l_5KFb@0|I-3+ zb#N3T{IHTd*X>xI-l{Od5*`8jZB1pm%v;ipY$xTiP*a5icg2t;fV6n z#iat0F}LPKzy2Vap9MucW*c~Sl_Na*@}0~j>31&MO@C(Xz(1{H{|jMr8cR-0T!wzg z5j6T$_5m)*#mGJG+N5sCd}sO5Br9y(RDeJwb{Uso%wl*N+k{(|K0<8 z9FACWLB<~|mw7wj1|PolOs;NJsH4c^S2toIRV)m$iRoR(Czrg0`*|vy3N|C~`&FaR zq|W-fFi&xq^yNo&t?9$xYQ>5D%wkAsW_qCxKC>iD+|&3SwtmNsDC89z7l#XJ-gj+j zBYr&HyasaKLRCo}s`lADG=hf~bUcb`NAdQLDMlU!ZNHjrn_zb=99|@XFL;uC2#+Bv zJ6;?WeFCM3guj1V1BSfuF8XxT&>lVE^lX|ggG0CgV>ET-ULn#kkg#6>r^~#axN#%r zUS;j;TA48FIfKGyMb1fzzrxau2O1Q|axpw#xO$9O?nDO}EEb~s1zt|4#5`p;SSu<_ zb?KeZJbAtO5t^{?RD_)nO9i+_)tbsZip)PBK5Q8IOu45SWk=3{zt<3)>sIHXvi6 zYhvKGs|1IqtGq&zxZIe9Ry9>SQF58syuFm8~ zwez7R^iR=RnUo_Seo@0*ko8fBw+mv_Av%uOblr*2^R8C^^d!>vn$j7%A>7k-6y&MV zGpLMz50Togzl?gUflBcaaY1=qE@$G2@-+CYnEYKeMdH~m0%*~Xg1`YTzSj*y>+jd4 zv4Sie9cFLqx`cr^gG`T7C~ZFKYv`8DSGfENo@I{8JF5~h+B99qIBD7=5G-7&K8 zd?swPaw6s|_5$k;-| zdt<%jaq4S~^A))VskXLSjOLLEK-jz2_H0!9e)j%Rwitk@kEhT{N-WF(2O;6~__BM~ zygZ$*4?yM0&qN%M=|R zQQnORcj>0}A=S-UV;Cv>FdE-z1SGG0Us;hdKATJ;_bPILe(B8y;?t#HNHc;PuYt+2 z_K8Mj`9+=k0}ijfpSXrLJ3L3EUT=gr5FOjlZD`KvyI^aOk(@aMLzHaO;trv>TZ(z9 zuHA)^=lmD)f5)YR-WOt;cIz2mi8D%DKH|Ik;;&}bc$)mQnnBpGG15=7S21G=(tDdZ zkTm_N3E+*22ajT=g`9OtQvug@-(gU~aSqAs?b-nMR52XuqWXDq{onRq^{OXvYkDs@ zk;9+nV(<&p{c>QzIp&B!0&6dft6tEgYUjsN3Wf4*{dlyTPN$;Q+w|j(vQH1PiL=@J z0M<&sz}sug<-v8#?y9F|soNa|UuuM89=gsYeUV2chW?5{k~4%=Vnb(-=#Q1+sAXfX z{UGm9@x~-&k;B{B=sJ6-#nb0X@rTlaoj*fA8*OpYd;T z<=T_bc<7(t>2c<+A?ww$bmSk&S5?p^ooz3#Rd*fX)ioX)iO_7l@tLnJdU;ikKKn{H zK9Thqd2qbsG5Fv)ABVedQ@T3Ox(}&mQO>umwZ=0bYRDXN`Qqn{ppXrM>I+csPG ztYhHMcjMvM>DjJW-OQJ87&Yd&bIvJ+9B}yic>6F!0Rt6%Rx$PWWM{TS8PA&vRFnv< zwzfZ~|D7J6oHS3(?u}87UZl1uSj6t@)%Y)d-~0E&kX0`{CBWhI@BZnSvJ+d6X4YgF z$AQ<e zag~~q2hFtTqp!5rz1sy)MG%{oVoCsD=YjjE5K-=^Zi{+2vYxsrl zyxjk&HeaW+uTTG93IeH)hcJ@`s% zv-bP6FoF8}-^vyC#TFI-NyS4Lw{D|F^?hZ9{ebpiF%tQRx<_8w972(HhPVtL#~f;n zk*P6wwT zBbWU*X>kq(dw@`2GEA?0%u5J;9&Am_-SPkRt$7)bE5DR3yJA^AiE3z&kTOQM4Rrv- zAyvzXindjB4D=4@K|#aWv%OjOAel0&vY6#?r;U8VKDQ=DHET(c9o$s^JnEn_kKOyd ziR9gl`9H}b+$vD;*(0=h3>_!O*};`A{d#Ibg#L3h%jnlYyL+k6=wXCQM&JNoc~9m- zlW%3vIw(|p6bCp-V%f@A9yO$yMQKJZHwo#ev=_pEQ=S`aiX;|)%lO3f3US7#ULu)< zvIoh?QNx``YA8O7Lf8%9p=-?Ba0dJ+J&FNNKsEa(Ym-6k;ch&DCp;lwOJ@Kofi-wT?Rl=Jk_)!u{jz$M)u=@DU8J zkA9XH>j2;uGu0+=S@ZX0ZcsU)T4GxW1hhs_R9~Vwej>SkodZe%1W`q-}{mGfDhT_~( zyJi#qr~f`YeT)1D=so_YQ@Ly>wzkteLf+7QND3$LbU6P77REIeloZo1|1CSefS>#R z6aBKbYFcL11cRsSe$NecZpoW?tOeP%9t5FieW$~&%dC+lsYG-P zc(WJZ<36!Anp@L`8{L&bFp&wfmO~AucVd9XUaQqHOq^y!VWkpoa=!?IOU;v#l{>Vs3nn`dE~G0o?j=hR`y;S@C!k-F|ZJwNbE) zEaPyWRAx74_ch7vXX-EqQn*8bGm$uWtmoEHj&U@pw8PZASTafR2Y44q?ejfQ4NIz| zZ3AtD^_Gl#o)ze3Z~^5~ZUJJ&Maj>QN|RPH*Lm zff75iMRsT}e!gHj_PeW9wSc4~L!#OMp@0}RbOH4BaPeuBMBD4Oi7nDhnG7f~ogBR> z;w2zb?byP5?qtKw?ZR5j>uapw0%!9A#~AwCK@em5M8$IlQFqD%r`0Iep<;bK`Gmi2 z|N9xEK5loTB)Gotpz0}_`zmsSb|F>@L2lK4p&l9~r2shRc-B#p*@x3}Xyb%CIYMdE zm8LV+4)eLX3Ou2D-1qzrBM1#cK9c^;H*gv50Fb|%om!ZK^kg@6XA)LPrs-b1M_W0V zF`Apr`hduqxt%uG7LKJTP*U=UT)7wSM^+BL6x6;Cu^!y&wjZxxUlm)=o<{fq?t!?qTzNaEQy6V z1Ab4!dplvPMemEX6kpyl;qD*KTB`W`-!R)=1U|sYZeW5Thk^U9qYa~~-eqZx|Hx`V zp34n`YZGbB zKP%wwUUiOeaW;t;k!S7^9br2iK6MImQ-C*H`;OkmG#|IPX9ndY*BZoX+97L>>Zqq} zMyPOlK2N~#zEt4K$-N9#iMd++8cGT{GJar~{h!ZfaVnRX;&F&zn#cQjsF7ea9ZngJ z`wu*sU4Dcd{*NUFJuI*JHQbHl z9OhI2;Nes;9vKEL0r0vBK3hoPx=o$bzW1ooqmW(PAIF{0@))`jN14DqvBVM4w}m0a zRa}g3Qn_k(X?uSU5B)yb8ee%I)H37U_$R$c?&==JBgNi6J$9ADn@$6}{}7$5=3#rO3H2nJ^ur4iA% zU4MzE^%v*U?lQ8!2ShEUQR_ zG4h+*sH4p-ElXeenfufpcF8^Rr1~SXCs)?V9_OQox@J_ ztUrb&PF^`kV+)RG$+Wko420)Pnk?m9MSlC+2+DKQ0YTWaSpHolphD4cYYUKfYK&lb zyRjZh0`*W-sS#te&?#)}Id4x~?jq-sLx5 z#+@z-P!zGaeOH`27hK~-Qw|okGUZ4#5RtZ=d?=2rr39kJ#_kL$6K_64?mVj6`24DN z=bztsnN*|gr7o_{02T&=x``6vY^JU0)P}D)MCyFba|uDo9&mwW)tJJhCWlg#3U8aM zzr$7=SuTiWeE6-A1p}xPzz{<)J5f!SPNLgqGEE^-Xa9g(^E`)FJOq;bB4VSC3VxUx zgT)DoN;Yg1r%WkELJQiw#s!!1+1P~-W*yv+slh#C7sh~#sp5)dm492yOe%32lJh-U z>{!{1C;RjJEL>K;9IjJVwdkxkH*KRBlI*CZqHRU|4Q@#bsuSk4qnFwufA8(71?}ub z6G+;x6;`hmf)XoXQImx+7gR~cDEUED}}+VX|$dq0tQ z%8lt~lE%D(vUfH+=hANWe0NO#un(^q_S9Rab$rvvUJ_X10?><^{7GVI9u^_&;|@>4 z+v6XRL%SB*0^ry}`;wj5yP|(cQzO!EswV-?RCYEexwWm+BWk8B^C_r_XK@%#w97s> zpu}WQ$9}@T!RI_PxMx?73K(&s&+hgZU$6vySoZnF9@C`$HAcT`89gbFh5TI91YMNo zHe{=Ocs>bOO6#sJV{xq`8VIyvyRHGlqu0G*A2_xKjh;6r#IJf-^sS1f0-IHAYdIIp z!Nj;&1}t8pDPE*0uFdZy;AMe_^X^L!EGB7w(R+clENxK)N?5y-IoR`M|Feh~$E1>`lxPuS= zcB{1Sax{}r^l8slw*a_c3BVf0ecTER5GW*goo+`*Y}jaJ_6$I~WOuU5Pl4FrHZlfx zOKMblmRl{^<^AEntI)KW3{udy7g*KHr30TkQav6=ML~zxB8BVnS_4?Zm|js}T3q8X z_(K8VG(a8raUsauPXyFa>o9->Rn*)|M82;sem-IcB$C`57!RN-I)JoV(gRd1a zbSIb1KKj?!)j%=?PX+`z4H~0Cwqan#ICnzyj@{`>lb!A>%+0~U2O~3NK*0Zw!-CTOMI#M|k5Y)njv)d1^#5Z6oX z(zAHFmGQ|~LVfFlfn}~J7ubUxfkOQLc#K$&!10!=>7~rhwsWM`0z0Xj$&{jbRgTn8 zBDYa@O_ zKJu^?#s*7NP1?feiE}ahPk^LeOBl8D95SgmgOyR{A!(G+XT&oSQ}?LE*N2=b;Z?5k zGE#zh&44m+Ccgs!yCPU~3LTDGo!&t9>Ty0WSrhaTx~e%_DfuqRn|$ff#+)eWg+s+Y z1wM0lMuQTv?v&26*+dm9_>S`TJi1pV>4 z@D|6HvZ}+_gjg1q>;RGiZW_*`cj}Y-tg9Ggu-FwDC&8?l(A@1)@KNnRTnEuVYyY0?5R0lg|>R5uv%7dY$7+*YUR!}C_C+E1vzk@#<^U*B=s z5w~m?dKR)g}=-nBi?+8hphdW%l* z5{a8_oxZeX(LmuSP}h9*{%NTVJpb(B{MN`lPbYC$4p9iAdD8~$UFk}m@ae zhUIh=dDGggG1H5?2G>F?fBDY8QLYWRz;;X;RY;CfGr`b{Bfgm;bnF z4iykMqQa)49RW(@Fk+R^G+B$&zl|4efL@*am?rR2J1o@I%?&?=2Cn_1lcff-qphE? zt2H|M7K=#rE=vD2208aPw7p=~6b2uX(y(6+X?`1t2$#hXivu)Aj7KT|6q$Xl%|`1F zJ`4#zTTcv^_~h~4e2RKVam1aw3fAn0wjCYY!5fLwf^2s~$JztQI9ylna-ULWe9LBW z&kxF=R$XbihW-T^TiCs89WlP5dzlXvhA4mhRZbcLA1uM_`BTPvGjdrTXP)2G zmL3to+1=4|ZJw9M363j%6|{hranh4!Iy)a?Z<^A2y@U~bQAXefV(9tiSJ9JotlB*f zp9dGedOK-9z!X*?gq9Aalz=5NimXO;hI9Xn4-ORn_4*rgGz~MAS%i*E9vuE6j-4A6 zU40T(TqSAkm_fIG75QcQY=mCQnhjgxNkrYIUFay3-RF^O4MFpUp;SBkxvv7|o&u?}1=g*OmWi{vQC~b+$GQH5yXXgL zBs#HrpmWvsz&>pp!+`>4u7OVvXq@0%%d6z=Z5vfUzvBp&I|9cDfaG)@Oa$t1fQh2r~T+W#Q)vQ6sZW3!?E34RK%TwKc2 zxqS4t)yQZq*i;S^+(!-4&SUKKrO!Z>Z;6#OaG!Hm_w)4;PF)i|$EZCQ`Rg_*KnbO~ z0~by;Fvhh-eOw@!RP+nPv10j*O~U?^8sp1*G%;s?UU;3!)u#juN8jvOt#vFDjVqXn zHD0&abxcw4Y(k9(ztlG^14<9VqJazpmsy>$p(gH7x*7@>UceFY!-y3$s-+T>VcD?! z*lg2XXNp!^$_97eG`BLQEHtnR8*aFWR67%C-ZQJ-0%x=ez3WsjCw5WI56Ss>IA#o_tk4Jls`{Dh)4Gmk_E2Y_Q;h?| zpHig9FLf`${>J@ZU#+t~yD$0fcwYlkb-;v9v^CqLZD>7inZA(8b)8^;T^RdGThv`r zvuO0JKKnac+!W!+3gEC_gQt_i!@;j%qyUOEu+qzxLy=b)?`Jssu-8g12qr$T@7~() z68b6{Dtu={-XE(5shYf%y%Sj&D)#-SK`VRnZHS2cT!Q99ylc`T{_1}f#GGf1= z^u+%5jD4Y0#&OXJn^R&FB6s}k3BJ^U7*y(Gt^Nk!I#IYr?On5>wax^b2bS%A7OjW3 znR~e8AWVsp4}3yde}zWtX4|AIrT;8DHr}uhppH*Ok78S$2dic?xs=8nJA=R`6V8sjPZlI9iWb1CH`sZPI@V`Pr;eO0lq(~ zsk5_F;GMftysyyNRtq7+_w4Wcg}B$TZ*9kkwYP75^+RvbT-|5b$FEYZ68D`e#oBhH z+sj^}kjzv}_?-;oXA9&6{@$lZs{3bOl3$G4^;+3l5h`bS*3xe`?23Dzpc3ilq9pIL zSEU0Stm!RXJ_*Y<5*Mleg{T%hDT0=CK|nw{*Ej8&rgeW!epX$CQSu}daCOPKld=f= zFJy1Bfwjh5b9G*lR^*6eVXC7PXdSk53200QafF;a4YEA2l|M~WJcIKeu z<&*Ch(!QC9MWi1bynK|hF5zoP*pL2aeT#FNUjlsjC64G%21zlO#ilDM;=Rd4ocvJ4 zhdD9h$4()9exH>t+}0@7@bG^4e_8o;p77&&mt^S;J=@2y)@I~0UZRf-ed4{_c~>@iy9G%Z+rd$_SA ztZWN_qcV2ucvc~G#}3KBgSbW z+#(J)CjU4d+(wOT5p;ctXNAY%8u76&cCu9>(N~THE}3#v=fA1c{@a}p&Y~_j>3bpS z=!TOSVsxgvY2jg9Dk8ABYBEYZ5Lgz8mFE{F937u;7E9GEwLv<=Kg#VmHqYDQKVB{K z-R8P^Wg)cvQ+VO%(l0QWrgN)ntkvAF_RpxLkYXQTon#v)6$iDM=e(|MBL{SuP1pY_ zYqro_GLRpRF*0rq-#_1UyA?a%dbMi!OrmMTvnk5AWns`#PQGls@QXK@P1(|(_qwxESSkeG5L1oW?#8tB z_--zbo6oX7y7fu4_k+o+r8xZymPu-0{oHUD%MzI>9=AXX7S;N~tT=d%2tI9L{1r8^-I@{G@I;IG( zHbz8Eej2)1M>l8PGG-NN-joPs-F$5J|bo0-BiXZxzb?3@89J@#8Q;qxBqye(v} zM}aUY8>@R!i}%Ozi*c%xb;K({u<-bVYOXkx@YyZv{t!@=M`7q8lWya}!%U9vB(9|F zK(e|)jhZ%xp69O+FQ#fY--B;TfvjONOKhxj;#UFWT3v&BAnUCNiK#bsN z;_QiNm7m!F(+k)SteSCP0F6NNGUpak+3RQb+P~A-ge-EpeycPZSs;XtnnP06PqVQZ zA{~!Lwlws)?D2>$ceehEGx|?v@hppCKOgi%S{g(zI@p=ao;zatkiedlg^1-X`vc83 zjpFqk6C2R`WMul(!g76P^Y}18%v|l4X+wXEqCpSug-85%_{{6E`LmBS?jrvmP3Ij? z_51$uV?`n(WM!Np$IJ}bs~lO!h+~s^I)v;Q*(-ZS#<33>=h)PT>`*7?;DjV3B#wQ^ z@BRJbckq{gJdXR^@B6;4*Y$kszQ#Fh$MI=VJSaJZFLL#~%& z;GtV~aEI~M|1>7mP~TN;M0IA6HsVx@(^IC2*Q0eyw4?$!SS%<7w1;;zzG9i3xOvT< zUKh1R_+TDvI41%R5w-XiYJJf*pHeHd@$9nuVKVIwPym_@t^G20 zfvx{_>UirpR!NfIX{^doqLe>(o}!UIYdw&A`|?l5Vr)FQBqYP_XR!LnLiWelRe-*y zv$n$S`wLWGw?8l4I`|;VEcXnv>`n4@ui4~vA)lOB5qfU0Xjp2$~c>Q9lbG*rJ>JlC+Di{s(>C5xB)JcyG`rKmn0Z+!RAtn0i=&_<)4bp{;E>!Q{ z=>0MbGb0-y$SblWqs_(0zS+mv7q=-BtDM2_=%U|Zmv9y)G%N+oJNa1AdeMb++$BTm zh4a;O713aCuV;5B^=2oq>u`KP|Dunu!lr6M)sp|MJHmNCc{7EXRC6q!M?I)r(0x6} zBHi_p)9ceQS#@J_o1*p_v(s1~CUq3212OtgT;nMWwqPbcLRnd$f-I6Cef|AKifb2< z1F<`tKjaKopUadNz_)rQF_xPra(e#QJNSjbvgSbUsSQ%UF|=`1N~#&`%wtxc=qN-> z@!pfWzqe&YX2|0j+xj(^bWja$jP(a!3-#!WClm*BT+Uil8SrfUPp1T zx`YJ!`|qD;W+mQD%N5*;Tr&l=<`O~XP+86y`x<;C+f$IoyYb8#&@btNC2dH>nvSI| zOYrx~EBRY5gH`WzZZd6UjYx-1Z9jycuQj|Se|Hu;y&$;|vA3k1z(S^tU2%yE)E{Y& zsvt84`?o)GXg&X2cVycE^FyNogrF5j>-DWeOGJPqvv0$Xh{v8PWz!!X?pD&-scqmF zS|b0Tl>bdf`*FIR zM%IFYg`jisWX!${k6~}vGz8^T(3?T`F!tMY4M3Ta@}xuO!rPGBxiIsd%&hg(Jd#(& zuX{u4!7LA3dYO!Q`He{=wzUG{+yFn<4yWJ+#gTgQpN*tlQhs`)*R4UR6P&cR%0Wcg zJT223yn6lpYe2MFtDRqWh4i5{>628C^uzzyJx896cORq0X(yJH^aO-&#!xw#j22_D zSUfXi_ybvy8gTC{iOHVbGW(?DqjVF@ydzk}N$d8+Zz7_&8rb)M)4k$Ncs5d^+AEb> z;YrJpy;Z`{(g@ODiBP64Iq}U1HxE?!Qi6Ug&Y{AWB9}Ip0?+pS{L*!lD`bc_tU8dU zJBiBan}QqpG0Pus_41dPW&U^mx?uOLR<;F?@A-+24DTNpxSYeHzVf2e<<2W@h`tjAv_$8bGf;iBaikJhiC&s z&zDw_=Q6+5exJG5PiDuxco)i|VZr=7%2+FGHlX)yBIUM7Y|E0@j!x<8{I1Sm+gIsx zjpqwk`o2VkXe057o#2M4n4(pIk1MJDK7>7WgHMB zvN!sLjLpr+m_`z9Pa>3!rH6ab$wfa-w>p|v|NcmrsI>M5JKmId1rnI>yB|HQfOfDS z7~-_pQoAupD`J)&5-YK$yz$uSgSTNS71-u;pSY`?SL)stVY#4CgjsXfl^9qQi@rb1 znPiJ_Zv5iXJO%pga+jXP#bb)fnb!Qy)tBZhp8R&jW=Vze^R&K9Eo>3}MR>0r=((}{ zu4y`NFV#eRph2n6EXhvA@7ITP<@B!~9RIBi@y^YWLL!>dN(TT)8b95VI)7ut&-0SQ zNTmy~vna#BYh>c1Oup%YWDtq(x5~~7fekuP*cNdi)J7_wYvy+Ml4Ie-n!lko&0olM z(Rb)BeEKLP4V6Pg{yQc8H~C@2vj|Yo8w2^)!s?{aHI?1xnYYDc*F#j-|0IShzX5hV zxzb7fo1ce&dh-TjnSp?Y)ZAp#0h=g$$O7sDcy0XMn4Efg^Mpr<$>f4ZEHt1{o5Fcng3;5~&(wXZ zGC`S)IRoJ#ssj;DKLDR3F~$`-)+NV~o@DsiowHiX;R_I7>W{qOb`h74IzJ|p$vx5l zn2jy1Vv!fzh;k3C{^_mQ$#SW#rWQ)HZboBV`x2Pv_BK_9hm2*z%x8hY>=0sjYUJ^Q zOuc8sC354WFms<6xb_G?-YxGYQ~g@x(EiN`XC|Fr>GJZmOxZ4<4azohrPw)t8R0f) zuB&C}*kC>Mk677=_;lv_BiM+NTG7zP)McX8wELOT^M6_Hml$y}N=EkQcZl}~|MiOv z!CC&Ab0wDDSo>8S6{A}P_wHBF3rhdFdxNE&-B#|#-o3}!CWyZweUXv<*H-Q^Y~*`# zW|5xu3tay5xtz#@n15frz&R&fT`YQ?QYV}Eh@mbgMgwc`t@tPU{Nx|$Vj}_R5J5g7 zD+;%L?OXI#k80w0?|d*q_aT1dXcr=s8BdMIz)3DwqbFx%H+q}U@+5?-8wVpq*JfKd z9TQciq0bhZJrD}A^K5-^slTx~Gsa=7dQgQ#ht z>xw$mI=@t89{dCCiwhb^22V>VZA6`~CM2~Eb22Id@*{V& zC#ztq6Bici$zX^m_EYF`J>6U72X-@z#ICjcr2m_Zki}GnZ0A%oL85v1yUWAv(Fe2| z6EJ*0nzT{P2gPml&Chxa2es2iHQ8LL^`cqI4~4ZIfEnkNaK11CaaPW~K2Z(-i_c}f zGFkl#PL|`a88s&TQhAPI_HU##XKc0{vQEIA}E}duW`j@Lag?1ZKi);Lt zul}Yd4<{%G`uF{*Bi?lex>1Aict8!4{(4(E_ZxE<+S=5aL8t@Y9W;2l7WWV6Ilrm) z8ji2R_)J2X?M(TdHnYOek!DL9%HYzT5<`0Mezbe zxmF3kKefQGYeB2??a9^Sw*A`vL}t%~9ySXKW?gnRjh9vw8dqnq2aH+o#u?%gceD%i zP|}5oiAlxnOM*TT{TsfvBe=hQY8RW!m;X&2$(WQAz7S9cOFo1{zpn6$BMvPuBtS9_ z>^Zcj5RW_Mboo0rv#{i9C-dM6&E_o%n@?Z~p|i?+0w%?pwTTLuur0~MD*{Wz8$<&; zHqi$bkL-R+r>QD-aA-1#0?A0(8?Br!Pz5QbNib#NQkTH3XJOG}yA=Y{H7i_)k=*EW zGyh|QfWzj+W&edxwVaW$6aJMX_s1(Y#SfxXV8&6Gm*h~KkW%Za?aakCOJ=4u&&(oQ z!k3Hk7OqbbmqA>`(w?;wZj~?V$0e|BUDHe%40q}wA3Wrk#o0tYp1BX;Ju5l0Z~vn@ zqoA?%?;yO>N`1!h-{!8NRW+*3=Q23$^Zo`zo{*a z-^v;~eNrwjcrv4Kfm^L9Qv;4dq^%AdnXHSrIGGzzi8@*;lNuqNDjQyn)_QK93mfj5 z2}pZXU+psnsh$QgF}x7p@9 zg>bFYvTgnH*4$Lovke)BYFn~AhKg0@*2Teq&Q=ye;*Oh4vHXrSbL3w>x;Lr!3>g=3N^ExcVO#Bac1G?1`XB~^4aK-YrOsim z22&fCJIV)6mvib?VD9)WMSF6;%UhxJF7ZT51R|BnWbj_vY5@Q>yiJXkzmcKsER zq~3ZaF(!&)Q%sxkpu}S|(79+YZmF?uosY`?io8eUKIzvm7K8gb4COQ?ge?y&ikQ%3 zTRQOx^1MOhSm)=CiMPvl+Ux(RY6UuQ>!$c6@YSKq$Sgx};@>cV-~1eH{0-t!oL6?~ zIYC+H&l_~AQxK@j*uayH-!Tk4bE~(gCviXy6F(<10R0tk^)s*Lk3y|4QGOfoPt^5u5HeoIRL9Ju~;4z8ge=@a6U1JyDexNzXc2e z`y6NAd9@At z)W>g!F70gMxJ`|5?Vry(Y9XLUkpBKi^4a0BCwH23Pk%(P3NPPLlbM0-Qo2w6N(^-O zC}Lna0V~0t8i1EyIDrKht===jl}sKvMS;pp#w_CelJq}xj%2GngDWU~ilFErXnw0? zf^WgUQ|&pqt?&OH~Wxddj7lkG^i!BQ4pR5L8ELG9EpN0rzpm`H{!RdN*^G&iDI zIa9c-Vr}a!lurU=XsGfE4TLLDls7cjSY6Dmx_*CW*GjwwBxmfbH7v*pZ;tT*_K#7l z#N}YehUUt8+D~L^%L6Ii$rAsur)faXV3)}*Cz5(=SyV`jZh z;hUq-i|heBg_3j=Qp3Srwy&;ti>Khb@fB>MD8Hn9gRBa4F+B)*vuNh(&%iEQ;~J7& zvSsv!XOc8we7G}mW1x)(s!s`)H3!QibBSIvwBEn<3iqnLoW3>1u5iDRMMDf^o8N!m zno|aM#ZCIQY*l;wl2r|%JEp1~zi{Gse=vhF9qjh;MUcnert6+2si4Qi&$riiU(-6q z5e>%~f?x`TutQ`L^|28=%YW$cA~+N+*`24OGfUZwrGq0 z!q&S_?(On{O$CRGl9;QTm)lKucXy|XVLw#td%pMS?s9MNR`4|g8TvYDFEjvjZHN%6 zxNy1)ddV5^72bza`V{j{3TK5t!kgc0odvp>jSJW8_B3s!e*SMwOSimbK@RNsbwN$# zXrfhoqCIKFZ%UdS#U@Y)hmF11%9PB$cRQIHZm?o=!%}^F0n2z5wDi4@Ja%p6!CWmf zh2|<#2h%hApIR(#!j2qiONL~PeH94G=NQ6S*(fjOl-1wdM_Bsx&~ndiN2l|$BIC)* zh{Lf88e{hKEc&ZY#Lt~)d;H5NGRx1%pWhas<*LXin6sbW#}KY2g5C0;vd}HVsndxq zqFfqD1^i?yr=!|4;&0@@a+0CSh741vDJsw0@84F`zY!mY$it-vcMEHO_0hbOW?TyT zubXQ)rGPhMH2^-$n3!MYFxjqaE&(0^CY{>~m~UNAfB|4s=POTcgs%%`P%aze{!9H( ziLn&J1%HPdh%2p?`1IQj7cnJbHDWq4Hpr*Z#Ek^6up%yeLBM9ZC-Ku&?ibUl`CqSq zv~25Qq^oBQU3c)AwN>W#DSms+Wh~nz{Of$3cO$&`1ly%~asS@t;^w!h1QF&a4~~J| z^4*YwptcGAn~lYBLr1q1aI&EHQ2Bgc-cP1sJ`pbb4tzn#<4$#t=%Q5>Nnic3+9GY_ zxk`o|PT*HaI$mV?__3VvM8P^KY zMsHi&rRaY$7=01;fy;l$Z2NfTBQk&o#lv|&$rMK2Q zd!g`pz;`Lic4^;HHN?`o?=c!L}@RZPaeXtF6QcZM$ zh4_7&H=i`ZsN611uCGwFN~wH~QdB)3w0!0=`pg0QCW|R{lomfj%lbogZNHy*_wj%I!{%f$ z?PlDoXnLPY4oZ*@ulWzkx38`PL#qm-VGGAVb@|~CkevjW6swyOHDQr+gcEQ6UYXeqe1Pcl_a0bQ zS5*au++D3BFJ`;nOFLw(xk@VC1z%x1(Cl4!DZ2QcChjf9@>PczYm^nmB2_(qBE#kD zs}eqgXe6PdoLUaAK2?1D3Af163a$v?W@)!K>#Wke5)I=3IhreN{3kjL5n}C(W81KWU~-CJS;xY|jqRSqH*-uE0M?`UW9;kp?k3>)5vH2V+q%^~xB|cz zl{R90`X2SuOW;%t4Qx3;t~%Hr>%zrmg!fpESLJxQErk_oX4m}9TQX|=DCkS9ow^*&8XmJeV(4Nj|!FGl~jW?Y5^UN+jJ2;Qfl8m+7u9j zZk!T5iFx0Swd4H(e2H)AZNa2YAN|kP5tjK`FjRP7X;)0gheG+PNEhzpSxYpKyocTr z&GkY<(CO@X7)$K(E&NgR$w_3>q1~MMpQCFa=61_GudL{+DD&mrphZ3nJ4x*^9qJDq zf$kk9Ub`3G%LbBnSfJD@5rW?p$qz2+T7RQ zA*E|?sXRbH>NNK(yk~CB^;<+&zZ#iaPHMLm0Z}m(vpe`Bg?nnoptib?2i)%&PBhCqW%m+)@*rRV$p;S3K&oZE zq=}II?rn`{Xv76T+*+-Siky!+JGd5ewq`u-5EXTChy%he4$DjFLd_p4poPpui;~}N zIC^}P^`TN|u#v)iLLk^OqZ^zdVp4yrGi+@3520~qOs?(>t`9Vh$vE^4@;em)Njfpb z3T9I-^XNodmrs+|Z9NvID89}pR+dnQ+T0xWZG3A!-Rob=rbr#jeRK`EG3AA}DA<0?tx5UN)0*{jYw$L?e+#a2%Z2wY z1thPe?Wb}Qt_{Bs(osb8e*EfF)R8yE{)*$vEN@=A*On|4G6Egw%Y)NXsi;%j#KaA4 zu6TpG6ouZXzZYulZ-hh>Cru0tadN6^YUk&q>4EcoGgQeJ8N>XyH+?ygHb?IZchPP-`8k zw+1V47f2S*y*S69#U&*`j!pv+0wdmh9`;CaG`Iqab9`wa5i)9q7UvmWTTf>gO&HV+ z_n|(VJ3Hj3ZaAj<#IGw8gyRtO>Y~o2L^8AVyg?8hQ|ry4*3L!#>9x^atankHf1d}3 zE0;`f02Ous0P4yM5H>GXaZUs*29A6Sa~44o|D45(0C4D{>M?TlF8MoA;nhgZzZKtQ zED{&*5P1q2=5^s~lCDvnCbd?TTw~F%KT-v%ao=4z60bkKdOI48hyQsPvQvSzkQpD{O zlfN*>T>H>$bH^o7OvBfHGfw2w)LemEMPA~1h!MnYN;^63D#fp0m41E)-N-7o1M(u^ zEum^mKQt)Gxq`?PG4vOWtNw`pPa0pdapZ7$7$s-;Q0Hf(&JJn--6*aydE5MMmc zo&RiiG$HpT=<4f&?ZBy5-_jcJTnH4b9wz##dYAAsj=|U8CYMUk>8@zpfs9da=DJ2)j7X^ z6HHA0R>8%z-`v%|^<+t&?s_MsX6n3h(S}HJWceXL!T(D?yBX~C`WBeQ0-f1aRRv1+ z0DHgA)%z;cN@-CCzxDVX98srY{$q_TY1C>Ki`EHh25r**_unF)NuzK|ZDYHh`5iHO z)VwG%HE>DMr*W3BSHU0$EEwhZWWu$!+pUHq(D#v+5+l;)d8AsI&{$R`FbdGLiy3w; z^h+APg4}lacbX3ymy^h!a4r2|Xl_KUlnWQ*ap!Y513FzK67KH*#=MHKy6CBzI*z=D zA*JrfPrqHvEJLWJpHN~LgE|GttaVz6F}fcjmoE=+#=`}kMN5*+u=h_Xz|d}3@-bi9 z_Yh|-mNos0&+I>X28*8+Sh}#*YCN`Of9up(2m4KN zMVH+F;ceo1aGcj`<@+1P-+;>?Un+s_Wi-bGjhHeB&oB? zTu1&M@L^*EdvF^!rd~Jv)qQj??Nt5WsyeU=vV3d|N^3F;QzU^YBE#Fj9BuwUnb9ts z7$Q1UhwN+nK#ot$7y*v*#}1cALL1_8^k_7EUg}jiDf}{1T~!L8t4n1VYo)g1?IrV9 zHx(sts+rG8j!I?CQ(gVLmXaY!K-u+$^5P2l9s0}1pTJDACd4foE(>O5HZK%{2o(t* zEX6TLGrEo&=nZ`*GILipV*JsEGS_Vm{BUyc2h`Nn-|wfe6>Yd)n_buq`^=u~thJBL zg&E>PSD&WIZj`_@pSnDo+M3dCbyv`zFZVH{6qVk{;;=HAwTZqdOC@tVEhOE{n>d3- zcLfOmgCW!jqH@qdw4ke-h)`~kmjy#Pa&TqliKvgy;NA%~Y+F!!rrfi8(Yt0w&X9C) zpu%A0#9M7u3lcTC@`7SLYwMmwSHF@^FJK`_SX@~lNe!r|t9L9;G!Og>RpE13*3;Pz zoVFt<@%$VyfH30xR2=-LFn+l9d=emK`(S-A&P`BUJ~JNZoy5r)8bEb9%`qlUUVm_s zPeN#JeD?0JG3{7PF9e3%QJrp*M;xMJ33}9_$ex@2L)Du(|78)D{^O2%@{gb_lp>7+ z-2Wk=~k_umn$q;PaO5Ltb zgC~`!zDT&}=bPt2iqg0RZ?~7IAx(IMjm+sROh=(qU~6ih$3(2LaYP%g(Z%DNy86YY z!{R_ROX)9Y}K2dD$hv zkvh%)pHt{^r(+rWHw*4uS8)w|RhDBW3SKSr5!L{6Evb=bdJG7|%Xgrh8xtYP(xw*B zN`>6SYZkTbSI9DNwJL{F`g2-`YW=5baHd+;?WE)1&jH%PF8P1v*Mz~BiA&2FBdgNG zwYiIpRBGI^(gI?_!nG}|_4V>zl_n2%#KADQv;M})IDJuxmM>*djn;%K=xsoL>bS__ z$!mYT>h{URU*hYc9T#4RPR&Pv9)6UwFf&))$b`%M>6=-&l!1{ai;n}ukvMJvYvA&d z%zV;7vDPOSD9!{+reXOgwL~6P0%VeV!E(hveq#q*HQ95Uh6QBxBXa}(?d{D3*x~9% zMn;+t^tsS^S`YH~zO=eWcf|;3X<=7GoqUqYCwCM?&TuN1(@*$Hx9yeB!JPijr}BVN zx!n=M#NizZ`U>Tn93fNl9yK{%77ijRF?O-BBWovtpBMP98{_3rGtX~PwBpt7j(1hJ zp9u+$?neuyJ@RCH8z&O_q}!u(goVb0hY|^M|Y}^)s9lJ z3aa=WbH5@(>u!74Jk|J#xcZ|h-L37|MbU>q|Kx?)GeX$Zu|i7u86Vqo{#?vQI_TH6 zzQ>yVeh9|c}jW=N3NSXw#nD)Rm208wr(SP8kRyPdo3R6^DDna-h zw1tC0eX5d5sHz*M_p-WG@o_l}CEu&%nLbW+AFfCIBOA3wdLfRzuZ9oD#t$ulq zGgkLR12C^+;4ls3oP5am%XM?4GqcXu1reIZCRd#&pIO@*n zJJXhMj;z1JBdWuRVEG=QDFZVhdN(B}*xy&q+*+fqnW`Okx{>cjvGm!?Rt;;vc7uAt zf?Xek-yet!xc!*`-zq|p-e@N*^V3+5J#a58iwr$II5MN+OT~&Xu?d_?1_rJZPR@3C!v}WDVt0$H z1uL*h9_&lY%Lc;K_lDo3yFkC}OF?pTvfd#?afmg92k(oA(J1N3SIHkK%iwX`r#`? zB60IYmVDW9zh{v#P|N7;&EW>FDNkAsUQ>x?()cATZDFu9vAlcmk2YoZP3(&9nF_PA zE8*AG?mg@!TJ{_%m$%~M2emIJr2e<6$JXhr{N9EXQio&T4^?4WmV(~ba~RGtn@S2v zws5pt@&kVJmR+Dm4mI2$tz8_dr28i)j*cAr7G9D7HXyeavtRl*8JU7no5w@P3Z2DQ zg<5pYQ9t3r8!^2!eub>2kVota+Q}ttduP?}1zD0r(0^iWcKdw2(A}>UJW@jk%Br68XVh$u=18HLRVNF?|cL< z+rP&+T^nUM*36y}@k-j}d5Tpk5JSU;e5(!D=aN>4gqLUiyW~TY2X6ymOZLm9o8=G0h%8|I{#WMt7d z?R!FC&eSTq0W1W_K!)~j@|&D9(i)NbtJ|{fbGtab1cB;(>2(-=Q{kp5VvO;rOX_3B zAxzGHhveDUX8k3VoKgBOzOOfiOJOacXuW(4v{qGCEW4u;WaR?ISSA>iThgb#OrBNp z?cXwk`r7+V2?<{@=YDA^o8eicgKRDWQ{)=3i2&|=}!!3Yb96HUN zyBbM!`$jrAouXz}6R#o6CP*W)&^XL+@nqAZK+L4%un3Ylnnv9w&$V;}82)z-MFjS| z`HZTvg*5>KqaP&=#cUw6wwbjOX}6=p0c~ z%fhOsrYIU`zBQddG_q*;e-|5H-k~pOPi_s{C(6Ug%fMe==?Bm}uYD2caY>vw3^Xdy+F*a1Yqr+>3hRTlZZD7W$b@;r zfGT2DAGz$3v|RPD%YGUdpAA>bhjlldI=Zx6&HlsnIqJ^NH^k7|5nD5Op3xX5R2^3f z%EHj+B8forcR|4;7A_W&HYsk&KP1%XM7eWGj=FpxBjw+Uug-zwuL45ufKuA|_j7NB zJX(j$ouN*LLK2WSk)vv&TOpL~&bnIzt=Ly z;EjzlqE06O(T9C^Q_tyiQ$MuUs?`kt>bWHN``w=^F?S> zl&c&6B#uCA~Bn++q=ExsATrRxvn%hTD zcN;L`1(?Q3?-Peb54{dJ=HEl*Jf?$?q&&x_2^lG0?h${Kb84&6ZlJN@D!>#P9E?4- z*Yy8x$LR&2mt)-PEGq+k0Ti4P*)Ou6e9yeo zYs_&Np2~)*M$-U8;>nEq!T;_r8#%4LOPxccQ(OA`hB$x>UsOB9$yg^*D|Ee8iO}S)w zdAXS&MuHAC*f!eTU4fJCahMk-fo{I1nIT6T67{1~6~<}TsQCCOS%!q%KkC?S{dm@Z z8REO?cBJ+dy4>Hl-h60(B$58_ScNF@aaZjfNpJA1)R6kEIw#E%$C7`YEC|59!`n^a zwCG01uSx_bPM9B*!WV*i^rIo#YlEcg_NCf0Pe=^K`Fl;7Ig^rY3;ez*$FI-cRfWxS z1t@6UMPS;KiqjvJI=NV~on^RL=;Zj{O6X#9<`CVb|5TN;fXzkw8ifEDvz3`7zF(WC ze>X{H9tQ!zQu5x09#bLqZiR{pDeHF2RO=Im$mEH83cB1oXV4$gyG$@rsWO{0Dy$S3+8DrPTI{f!W;wouH)_*pk82E zy4O{vm00{)nzOA^+Nu3+`|R!qzWZai5%m=n@!IQ4pU}xC5@TXvvUzqYeY+kP&Ct`Z zB3hm6f^uoJRh%w#KzDDTm-nf*is8gwaLGm|@$i@{h93XyZ?&DOE+O#`3>aZ~V}$oA zyx;LuU#W4)rcNMB{P_GlT#>iLf0s~c+XJ5uNr$*rhuiqiw#VC`3#}1(Q#HnA3)s4x zLK1l|=*N5*LUr`75<{#88$$W!OW61+c9Z$5->v3Bpnk~-8!wF4A8wfWHS&T%rwLiqWSMVZu%^EbbElGJ8mu+k3>*&m8t+$_XoyqZQWiYAVJwvI)H}KNMq0rT zcUZsml{G{;y@oVDKZAX+i)J!H^bzBj88o`C1Fkrh7SAGVTWzmqTy1W(u$4=R^p&~v z)mn^JRV}Xjyt+1Lv6dcz3y~G-^eO%mb*UNX+sxLTEwaSS_Y{QZMw9%mjtfam&cU)_ ze-9469={1V6Fx@kY?mzWoL&68H=T0tVTu3n+^k(oR(t#it|!_CRtSRvy97>7$sJo} zeWr5iBmI7t&HaU2~$wt?1S7NazZEr z+?@B_FPYI+m#e^*O`X4cj2s|d+khk9?8_JtCNPnwJ6n6fcVd8AJeGo;dCgpip$ndX zTzzv5PUFJHLXq_btulgP73(pqKHmBo=JPkq60h2`l5nHCpwO{RizaW~Aj{y54gs^I zbXWIzQT;*SBnD~oQV&qYlr<41Iwvx&blx6rY)(dJ!iGw}eW`(^zR`mV+B8P2o%#y`F=sLvs;ZH85B zL*7wRKF)1pOaYy*Hh@p|2qz4~9{(*z`cJ*J9A#%4&u-bv^HvayD_<`G-ml$(Em$5F z(KsuODlYc2&U5AVX_G~01MN&7a)WSARe*2M5O&GnUeJ=QUijxB>^0+rSa>RAe5_g8kv zSO5#$!<*xM&EJZL>;ge&Ufb8Ro<-D=hLEHi-wa`v?X3~Jy~pMj(5Dj85U_|V%6!_N zgUKD0<8iMfmbnP_TSZD*SpRV@?I8TYoPK;G?3Yy3KmLiVX!+-8B`!um5gmnU77T&3 z3YZ~r93TTWmZWm?anvyEW%*lCrIGP$86{40k4D`*@gKDc2UZ2wSZ`*-dW|10UB}aI z{#d-K4Z8AkR`*Hc2T?KM*l{lQ63>z#y?j`rZXhk4BgS{w%UnzP5KpP0?^zpASZy)u zn)s}YI3sX2av=Wxwzoo>#%mv_fYP_ z%c(mn-?q^$_>mGW&X)!B7K0WWMRl(QS$D$RuDEsEr<8JK`d_J31u+mpth3%NvKNhv z2;6+P?V$Ug6I$LIUG{~~Tkr78RXCpWG4Y5g!C2?eubM^3k<^W6Jnyi`j%A7xr+y!|LDe%J-i@$)f}u~(xXV+7t^c?Es6U9zKv8`VZ2OK)xl#YO0s`w4w;#lO|> zi@!cW19aE$%BX;t9*F57_fl_GHC{J>&fb3X^u=QRZ59eNY&`8nm1&ory2^neZj!YB z@1L5XSqYd0-89zn^E+{|sTpINAiKsIv-Qo0Xar%0&nWoB)EBJ^D`%IR+vnQG{je*9 zW#u`{uvwRvO+RrN66KW2|6nCVUkJBm_yB`qBz4@hzucdDg7}o$x+*uU=<|~{(YL$b zt{pD~H$x#8X(KuYDp;Wjgv> z0QM?+_T3~~z8{yKsV$4CUEAT%OWDN#f@76kJ2MU3x8PMZnnSQ`x#PsqxA@>|jL06q z2YwFp1id?MH~m-?XmCv%zmLXS!T6fBiC9YmkaJ(q-nXnwT`cAeJEZnvML^|1NRNwi zEu`SK4T9%uL#QTVHRc-fmlo7Bc~7NrD||l1to}=_C%VS7lS?~3Vp&x^Dog2L*Ps+v zF=Mr6Sy2XZhK?y0VmLM-Je69{6UA*FD`^9DiKU+Y-Hx9xJxdxDG#X85HnNkp2PbfC z*X$7y%5MPF%kr`@skhWXvp!W?NB`GNj3ugI)B~OB3%kVfSx>cmRT6%4?W2`*>T19{ zBU(g`ZW?^MhYb$QzLxJ4+3n^Fy_tTv0k4e3hm_u~z;e8lrUnZ9xiq6J#c8m%fF|Uk zViEH+d@B8Ou&K_im`%q>J>HL6PMgC zdN--wk6IM8)6a9dzUOo)s@^>AS@Z_PUcsy>FSMw2Dg8y{-j6@1;cqu#r8dtN18?xI zHlp|XJ&7QAl0pf)Z35}|uk%N47Q%MuTAvTMlt2ldn?1h>2LJHF+RrCz&+&Zx-vq+2 zb?V-X$~0k12_<7hW!hr-z`e)LC2>?K*B`8h=(Xt1F|T_}VgZD0tI>e4~A?EE(| zF)=u(jg$NG2#5r#$oqn|bYN0c)>mUg~km z^?5)Y5T0T-knte9-biObfCY6Y8pHBnMW>3bukV&iD*2)xv3O5>^UBkzVij!zm@bZF0Kr;t?yU zI!|AEyere~*+j@|W2b8abI+%UULS&Y*U)*zBVs{33BIcU1^fESHWdqda(TVIos_s0jV`;eD81(9ZW7-_E5o2bVkW3}N~r>@ zVTyw$r&~hTY}2Ie2v=*dS9$u5yPCKjd$b=fSrz+pNT>0#&7X})FW{Z`8=-|c*FJh6*nO@rXC!90TzzQ#HMmqNd;QNV`1KaTreV)jeHYh1O(xsqaRkM(F(@7j_Tbe}Oz znvMqa_0z|)t6rMIA^|`tYl9S0n0*{+?PuGH*Hz>D{9#OIG2o5A6XCuc!6R+;&Tqq+ zaU~ynHPv>z*N2H(W{5Y{r{QYGE(^Swe_~_vm3*EPRNrXIl&499Y`rL0S1{gMViCvp z7?c2KNF^1yKRZ!thtP0dd^@PJ%JK zopB;}SOs;l$stFL2f z@s#)z-jPAkt^m888w32;Z+QAmVYKL)wu%D$o=WbQTUyE2Vq^qGSD(ETmIRipVPf02 z;wfDO4`Qc#{L^Qv#oZu`C4weXi@E_LG!AX^=PY4L(;Q;%wG0IA!Cjt=^SaR348D_ zhR!GEMMw;4SiqSO5V4%%kYn|q6=KNN;G8IiQ_p+o1Rf=|yXKG8g4LTu>JhF#z)VBl1bM@2=CN&-%{?#X znMPlM%W7w#m19aHY#q1i&+k|l#KR>q-}@fIFQupja$a4_3+9@aUjB83S_AqLFVf}J zT5ua253d7*TeQ}4u7KU@8T1i@$xujiqoF+Y(9={m4$~Xu^|=)%9KD+w5-Fh2Vvzmb2)&X^R}+{KM7-Ly~`Gb@E|m zV`S3+wdNQrqPA88SXm_*DT6W#91aJ;)8zfy5~StdkZ-!*-?ZmBOQ*T&9d4JdJY=%x zk@;B`Qr_=m>S>zB7=1lnl~PVX7vg1_Ypq7*V!FfvmYy zy}D(Bs>T@88bkzER9D6ygQTFFrs?D-DWxc7j;FV_ZRNEDaN3|%R-VX>MR-quZW@0Z zNWH+e^E}Je0YMvMcDp77v0$8Qt+M`7C~x<=4GN7z(996yTuKSSHNieVKR-V0OJ-^K zYR#n-20{fP1R0FHx1uh|If|EyQsA6v8h^`KUQd{W?XEmRF2Ks5)*8JP|Kl>x<2?Uh zogaczDwI-WKHX+*xpubg-1=UHAP1|Il1nni>~?L}bqsl$rr|o(TD=#t6WmNeG&HTZ z*2>goot9Q~s|wP>e~3N02jZkkZ8c2(ip*{dmcf(^MyrSZ;raQw)_OUeSJj?gjU}XH zBBEI4-`J|MJ-8XR+)^IzBO##V6=?-yjM3hTUFtLqNqJX3Sy0~)#|cx&+jIpHB*gQR{L?u-=+F!tU=LIGs2etE5qI8a{2o8>o|_9 zTbI^S5v2!`j_00;d~ZPYAru1uYE1y@<|t7`Sc{0nDdjn)Xp9L>=e=ikrIZ-;ZMVHg zL{Sxw;}Dm!HTALyUU7e|#xyU>LJc5jA`oG1)2usVB9MTZtm>_2Sa-LGv6RBBv}Q!p zwr$_Zz+cDl8q=~Jtj!1s6&R&&xh#D1pC$%IRQ%mRZnaV(CI$lJdpjU`=B@M2xyFZ$ zF1GsTtTRUz9lZqX$Pz_dnMLjAoJDM{HFD53Y58=t@lDe>XT-E(J9eUi5xjlB->)`C z#+WS-RrK2M?X0+&iH(nRKcc(3SEmU8tF?f%u2e}9Tuo`)wr$(iC@lk^Y*wUh zZHt|aTOiMTt@V69%2+1j&JDTbRTYtA$`ODNTkBSgNoYAGll(&hLHz&YAF5JI9@QNH z00233MObuGZ)S9NVRB^vKqwzVRUtJWdLF^Hexb1Ib<<7IX7W5FkxXd zG-ER{IAb+AWiw=9WH(!*$KU_}04;PySad^gZEa<4bO0bANo{a%a&%>6AZBuJZ6HTd mK}11RNl#87X>DO=WjY{da$$K*M7o#&0000Ok()) dc.DrawBitmap( *my_square, 30, 30 ); - - dc.DrawText( "Drawn directly", 150, 10 ); - dc.SetBrush( wxBrush( "orange", wxSOLID ) ); - dc.SetPen( *wxWHITE_PEN ); - dc.DrawRectangle( 150, 30, 100, 100 ); - - if (my_horse->Ok()) dc.DrawBitmap( *my_horse, 30, 140 ); - - if (my_anti->Ok()) dc.DrawBitmap( *my_anti, 250, 140 ); -} - -void MyCanvas::CreateAntiAliasedBitmap() -{ - wxBitmap bitmap( 300, 300 ); - wxMemoryDC dc; - dc.SelectObject( bitmap ); - - dc.SetPen( *wxTRANSPARENT_PEN ); - - dc.Clear(); - - dc.SetFont( wxFont( 24, wxDECORATIVE, wxDEFAULT, wxDEFAULT ) ); - dc.SetTextForeground( "RED" ); - dc.DrawText( "This is anti-aliased Text.", 20, 20 ); - dc.DrawText( "And a Rectangle.", 20, 60 ); - - dc.SetBrush( *wxRED_BRUSH ); - dc.DrawRoundedRectangle( 20, 100, 200, 180, 20 ); - - wxImage original( bitmap ); - wxImage anti( 150, 150 ); - - /* This is quite slow, but safe. Use wxImage::GetData() for speed instead. */ - - for (int y = 1; y < 149; y++) - for (int x = 1; x < 149; x++) - { - int red = original.GetRed( x*2, y*2 ) + - original.GetRed( x*2-1, y*2 ) + - original.GetRed( x*2, y*2+1 ) + - original.GetRed( x*2+1, y*2+1 ); - red = red/4; - - int green = original.GetGreen( x*2, y*2 ) + - original.GetGreen( x*2-1, y*2 ) + - original.GetGreen( x*2, y*2+1 ) + - original.GetGreen( x*2+1, y*2+1 ); - green = green/4; - - int blue = original.GetBlue( x*2, y*2 ) + - original.GetBlue( x*2-1, y*2 ) + - original.GetBlue( x*2, y*2+1 ) + - original.GetBlue( x*2+1, y*2+1 ); - blue = blue/4; - anti.SetRGB( x, y, red, green, blue ); - } - my_anti = new wxBitmap( anti.ConvertToBitmap() ); -} - -// MyFrame - -const int ID_QUIT = 108; -const int ID_ABOUT = 109; - -IMPLEMENT_DYNAMIC_CLASS( MyFrame, wxFrame ) - -BEGIN_EVENT_TABLE(MyFrame,wxFrame) - EVT_MENU (ID_ABOUT, MyFrame::OnAbout) - EVT_MENU (ID_QUIT, MyFrame::OnQuit) -END_EVENT_TABLE() - -MyFrame::MyFrame() - : wxFrame( (wxFrame *)NULL, -1, "wxImage sample", - wxPoint(20,20), wxSize(470,360) ) -{ - wxMenu *file_menu = new wxMenu(); - file_menu->Append( ID_ABOUT, "About.."); - file_menu->Append( ID_QUIT, "Exit"); - - wxMenuBar *menu_bar = new wxMenuBar(); - menu_bar->Append(file_menu, "File"); - - SetMenuBar( menu_bar ); - - CreateStatusBar(2); - int widths[] = { -1, 100 }; - SetStatusWidths( 2, widths ); - - m_canvas = new MyCanvas( this, -1, wxPoint(0,0), wxSize(10,10) ); - m_canvas->SetScrollbars( 10, 10, 50, 50 ); -} - -void MyFrame::OnQuit( wxCommandEvent &WXUNUSED(event) ) -{ - Close( TRUE ); -} - -void MyFrame::OnAbout( wxCommandEvent &WXUNUSED(event) ) -{ - (void)wxMessageBox( "wxImage demo\n" - "Robert Roebling (c) 1998", - "About wxImage Demo", wxICON_INFORMATION | wxOK ); -} - -//----------------------------------------------------------------------------- -// MyApp -//----------------------------------------------------------------------------- - -bool MyApp::OnInit() -{ - wxImage::AddHandler( new wxPNGHandler ); - - wxFrame *frame = new MyFrame(); - frame->Show( TRUE ); - - return TRUE; -} - diff --git a/samples/image/image.rc b/samples/image/image.rc deleted file mode 100644 index 626b82f58a..0000000000 --- a/samples/image/image.rc +++ /dev/null @@ -1,3 +0,0 @@ -/* mondrian ICON "mondrian.ico" */ -#include "wx/msw/wx.rc" - diff --git a/samples/image/makefile.bcc b/samples/image/makefile.bcc deleted file mode 100644 index 22a8ab529d..0000000000 --- a/samples/image/makefile.bcc +++ /dev/null @@ -1,19 +0,0 @@ -# -# File: makefile.bcc -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Builds a BC++ 16-bit sample - -!if "$(WXWIN)" == "" -!error You must define the WXWIN variable in autoexec.bat, e.g. WXWIN=c:\wx -!endif - -WXDIR = $(WXWIN) - -TARGET=image -OBJECTS=$(TARGET).obj - -!include $(WXDIR)\src\makeprog.bcc - diff --git a/samples/image/makefile.dos b/samples/image/makefile.dos deleted file mode 100644 index 788ca91e16..0000000000 --- a/samples/image/makefile.dos +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.dos -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Makefile : Builds 16-bit sample, VC++ 1.5 -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -WXDIR = $(WXWIN) - -TARGET=image -OBJECTS = $(TARGET).obj - -!include $(WXDIR)\src\makeprog.msc - diff --git a/samples/image/makefile.unx b/samples/image/makefile.unx deleted file mode 100644 index 361235090f..0000000000 --- a/samples/image/makefile.unx +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1998 -# Updated: -# Copyright: (c) 1998 Julian Smart -# -# "%W% %G%" -# -# Makefile for image example (UNIX). - -PROGRAM=image - -OBJECTS=$(PROGRAM).o - -include ../../src/makeprog.env - diff --git a/samples/image/makefile.vc b/samples/image/makefile.vc deleted file mode 100644 index bea2786e6a..0000000000 --- a/samples/image/makefile.vc +++ /dev/null @@ -1,18 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: (c) Julian Smart -# -# Makefile : Builds sample (VC++, WIN32) -# Use FINAL=1 argument to nmake to build final version with no debug info. - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -PROGRAM=image -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.vc - diff --git a/samples/image/makefile.wat b/samples/image/makefile.wat deleted file mode 100644 index 3b6cb33829..0000000000 --- a/samples/image/makefile.wat +++ /dev/null @@ -1,15 +0,0 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 -# -# - -WXDIR = $(%WXWIN) - -PROGRAM = image -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - diff --git a/samples/internat/.cvsignore b/samples/internat/.cvsignore deleted file mode 100644 index 7957c41216..0000000000 --- a/samples/internat/.cvsignore +++ /dev/null @@ -1,3 +0,0 @@ -Linux -linux-gnu -linux \ No newline at end of file diff --git a/samples/internat/Makefile b/samples/internat/Makefile deleted file mode 100644 index bccce53f76..0000000000 --- a/samples/internat/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../../setup/general/makeapp diff --git a/samples/internat/Makefile.in b/samples/internat/Makefile.in deleted file mode 100644 index 551d016327..0000000000 --- a/samples/internat/Makefile.in +++ /dev/null @@ -1,26 +0,0 @@ -# WXXT base directory -WXBASEDIR=@WXBASEDIR@ - -# set the OS type for compilation -OS=@OS@ -# compile a library only -RULE=bin - -# define library name -BIN_TARGET=internat -# define library sources -BIN_SRC=\ -internat.cpp - -#define library objects -BIN_OBJ=\ -internat.o - -# additional things needed to link -BIN_LINK= - -# additional things needed to compile -ADD_COMPILE= - -# include the definitions now -include ../../../template.mak diff --git a/samples/internat/fr/internat.mo b/samples/internat/fr/internat.mo deleted file mode 100644 index 2632931826d88374f584ab7f253af1ab6f3c955f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1066 zcmaKqyKWOf6ov-~w-7E02#O$dEFnii$RZ8I=>l>@(hwjD0*PY0J6Vs|ompmQHgRRh9ez+p6mI~zw={$=CweaMP5d}LS9179TMUs zH~^1=4m<}A!8!0{oPPtJ!T2qB5quBc1V6|118^SW-{389{;&`W;0AaM+yS{>0bT=N zfPDW)@C5h?9sXgi$*pq){1tm>Cj!}6zPimKv5wxolrS&vQjIe*B)vwdVD#baAZQ!S8heDFD)CY zWKrg7_8l#CyUW-4w@ceH)df9K+UMGkG%0O_TuVa_3+cR=>VycH)9&z*HmTjMXtgZG z1676Gi!JE(ma?F#ii%Mz*%FT@ic4qvvY(Ggu_~3K25D2vT&Hm>+*>7VD{U36Oa@vx zxEX4v9R&k3EwOF!@|t#{?W%z7Y`q(^kH!{# LemfKYRY&{*aa|5| diff --git a/samples/internat/fr/internat.po b/samples/internat/fr/internat.po deleted file mode 100644 index 7ab0bd7048..0000000000 --- a/samples/internat/fr/internat.po +++ /dev/null @@ -1,77 +0,0 @@ -# Message catalog file template for the wxWindows i18n sample -# Copyright (C) 1999 wxWindows development team -# Vadim Zeitlin -# -#: internat.cpp:146 -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: wxWindows 2.0 i18n sample\n" -"POT-Creation-Date: 1999-01-13 18:19+0100\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Vadim Zeitlin \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: ENCODING\n" - -#: internat.cpp:98 -msgid "International wxWindows App" -msgstr "Application wxWindows internationale" - -#: internat.cpp:105 -msgid "&About..." -msgstr "&A propos..." - -#: internat.cpp:107 -msgid "E&xit" -msgstr "&Quitter" - -#: internat.cpp:110 -msgid "&Open bogus file" -msgstr "&Ouvrir un fichier" - -#: internat.cpp:111 -msgid "&Play a game" -msgstr "&Jouer" - -#: internat.cpp:114 -msgid "&File" -msgstr "&Fichier" - -#: internat.cpp:115 -msgid "&Test" -msgstr "&Test" - -#: internat.cpp:138 -msgid "I18n sample\n" -"© 1998, 1999 Vadim Zeitlin and Julian Smart" -msgstr "Exemple d'i18n\n" -"© 1998, 1999 Vadim Zeitlin et Julian Smart" - -#: internat.cpp:139 -msgid "About Internat" -msgstr "A propos d'Internat" - -#: internat.cpp:144 -msgid "Enter your number:" -msgstr "Entrez votre numéro:" - -#: internat.cpp:145 -msgid "Try to guess my number!" -msgstr "Essayez de déviner mon numéro!" - -#: internat.cpp:150 -msgid "You've probably entered an invalid number." -msgstr "Vous avez probablement entré un nombre invalide." - -#: internat.cpp:154 -msgid "Bad luck! try again..." -msgstr "Pas de chance! essayez encore..." - -#: internat.cpp:158 -msgid "Congratulations! you've won. Here is the magic phrase:" -msgstr "Félicitations! vouz avez gagné. Voilà la phrase magique:" - -#: internat.cpp:162 -msgid "Result" -msgstr "Resultat" diff --git a/samples/internat/fr/wxstd.mo b/samples/internat/fr/wxstd.mo deleted file mode 100644 index 89c03eaf60c2a04d6e91f40b88bc0ef505afd383..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1923 zcmbW1J8u**5XT(|uY_lKG`tMqvIL1kNFYR-C?Wv?5|1jP^zC~07Iy8!_68x*fhg&y zs1X(4fRZwll%O;Su0ebNg!qql_mVp$IfQk--+6aDGoJbTzD|t3W*A2>k6|uj9>;t( z!q|TB7kCC7*}~W)I0bG8Z-G0&`xPI6d$1NDK1}250BFEn;0y2s_zJuLzOU9_!1GxD z1`mPfwla1aoCP`90#AX@!2o;<9tA&vm%%RB08fsV@fN@)){7v$e+g2aA1ZzXcVfK^ z?gKxA2+h8Mhru7`#7b_2W!Ql3x2S@0b=34X7hkE1A8u)YdTgO9;^@C`_I zE8tCV6vRE2IV-0NoT1C^^C?u35Jvz((&h`v+c&D z9vsA^+S1@>r7_y@Mi$NRhMi_X!v;LHTxrJzUlLgw@myLf63Ij1M5dD_o3mCL$77LZ zGUBP?F@9h>7mjDC!q13Z6DpJ$o0qL3nc-}K!hqMw2lqj-x_g`5GdeLM=c1*JlTmYw zEefMjMVmsQ0>{HlTUmyPqzz5lag=dXy^d2A@l2}3wYiQA02h z5$|Z5x)h!^bEZ483PpvhGBQ#`JT^MtIEs(3nd2uWb&@;1z6;-n@>PslL^>Dfg6|zQ zF4l#Lnk>_yKwtc0l+yRKC2=~}WY!tfcwh^)a;-1&y~fEVyZWrWsAMsyDiuiUct==X zs9H;fFOXyChNGsKa^5&eAih2&CG=~6e+CoHR7)z5QreBm2^yiBP%$(8164?pv za5>1l=q2o5L0m{>n4eraXC%(|P!F{ZbPHLhK4?#~A@&Ic1r3iDATLAPS4-=)++Tn! z_4#y!aj->2>Z`SG9m2LyNm++pO8<~a7nd7hhFjuh)Rpf2Ee%MiQ&-O4jq(;W2igTK q;*X4Ew0cvT49Wk5qRQJ82(Q?#>y{zAt3oVqN@ZAw`!7#@oBjeZ%MDZj diff --git a/samples/internat/fr/wxstd.po b/samples/internat/fr/wxstd.po deleted file mode 100644 index a8ab562264..0000000000 --- a/samples/internat/fr/wxstd.po +++ /dev/null @@ -1,131 +0,0 @@ -# Message catalog file template for the wxWindows i18n sample -# Copyright (C) 1999 wxWindows development team -# Vadim Zeitlin -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: wxWindows 2.0 i18n sample\n" -"POT-Creation-Date: 1999-01-13 18:19+0100\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Vadim Zeitlin \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: ENCODING\n" - -#: file.cpp:182 hello.cpp:38 -#, fuzzy, c-format -msgid "can't create file '%s'" -msgstr "impossible de créer le fichier '%s'" - -#: file.cpp:213 -#, c-format -msgid "can't open file '%s'" -msgstr "impossible d'ouvrir le fichier '%s'" - -#: file.cpp:227 -#, c-format -msgid "can't close file descriptor %d" -msgstr "impossible de fermer le descripteur %d" - -#: file.cpp:244 -#, c-format -msgid "can't read from file descriptor %d" -msgstr "impossible de lire à partir de descripteur %d" - -#: file.cpp:258 -#, c-format -msgid "can't write to file descriptor %d" -msgstr "impossible d'écrire sur le descripteur %d" - -#: file.cpp:271 -#, c-format -msgid "can't flush file descriptor %d" -msgstr "impossible de mettre à jour le descripteur %d" - -#: file.cpp:308 -#, c-format -msgid "can't seek on file descriptor %d" -msgstr "impossible de changer la position sur le descripteur %d" - -#: file.cpp:322 -#, c-format -msgid "can't get seek position on file descriptor %d" -msgstr "impossible d'obtenir la position courante sur le descripteur %d" - -#: file.cpp:355 -#, c-format -msgid "can't find length of file on file descriptor %d" -msgstr "impossible de trouver la taille du fichier ouvert sur le descripteur %d" - -#: intl.cpp:139 -#, c-format -msgid "catalog file for domain '%s' not found." -msgstr "impossible de trouver le catalogue de messages pour le domaine '%s'." - -#: intl.cpp:177 -#, c-format -msgid "'%s' is not a valid message catalog." -msgstr "'%s' n'est pas un catalogue de messages valid." - -#: intl.cpp:330 intl.cpp:334 -#, c-format -msgid "locale '%s' can not be set." -msgstr "impossible de passer à locale '%s'." - -#: intl.cpp:431 intl.cpp:435 -#, c-format -msgid "string '%s' not found in domain '%s' for locale '%s'." -msgstr "chaîne '%s' n'a pas été trouvée dans le domaine '%s' pour le locale '%s'." - -#: intl.cpp:434 intl.cpp:438 -#, c-format -msgid "string '%s' not found in locale '%s'." -msgstr "chaîne '%s' n'a pas été trouvée dans le locale '%s'." - -#: log.cpp:104 -#, c-format -msgid " (error %ld: %s)" -msgstr " (erreur %ld: %s)" - -#: log.cpp:165 -msgid "Debug: " -msgstr "Debug: " - -#: log.cpp:171 -msgid "Fatal error: " -msgstr "Erreur fatale: " - -#: log.cpp:172 -msgid "Program aborted.\n" -msgstr "Programme abandonné.\n" - -#: log.cpp:177 -msgid "Error: " -msgstr "Erreur: " - -#: log.cpp:181 -msgid "Warning: " -msgstr "Attention: " - -#: log.cpp:268 -#, c-format -msgid "Assert failed in file %s at line %d" -msgstr "Assertion est fausse dans le fichier %s à la ligne %d" - -#: file.cpp:303 -msgid "unknown seek origin" -msgstr "" - -msgid "looking for catalog '%s' in path '%s'." -msgstr "" - -#: intl.cpp:378 -msgid "no message catalog list" -msgstr "" - -msgid "OK" -msgstr "OK" - -msgid "Cancel" -msgstr "Annuler" diff --git a/samples/internat/internat.cpp b/samples/internat/internat.cpp deleted file mode 100644 index 6f2826b1c2..0000000000 --- a/samples/internat/internat.cpp +++ /dev/null @@ -1,198 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: internat.cpp -// Purpose: Demonstrates internationalisation (i18n) support -// Author: Vadim Zeitlin/Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation -#pragma interface -#endif - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include "wx/intl.h" -#include "wx/file.h" -#include "wx/log.h" - -#if defined(__WXGTK__) || defined(__WXMOTIF__) -#include "mondrian.xpm" -#endif - -// Define a new application type -class MyApp: public wxApp -{ -public: - virtual bool OnInit(); - -protected: - wxLocale m_locale; // locale we'll be using -}; - -// Define a new frame type -class MyFrame: public wxFrame -{ -public: - MyFrame(wxFrame *frame, const char *title, int x, int y, int w, int h); - -public: - void OnQuit(wxCommandEvent& event); - void OnAbout(wxCommandEvent& event); - void OnPlay(wxCommandEvent& event); - void OnOpen(wxCommandEvent& event); - bool OnClose() { return TRUE; } - - DECLARE_EVENT_TABLE() -}; - -// ID for the menu commands -enum -{ - MINIMAL_QUIT, - MINIMAL_TEXT, - MINIMAL_ABOUT, - MINIMAL_TEST, - MINIMAL_OPEN -}; - -BEGIN_EVENT_TABLE(MyFrame, wxFrame) - EVT_MENU(MINIMAL_QUIT, MyFrame::OnQuit) - EVT_MENU(MINIMAL_ABOUT, MyFrame::OnAbout) - EVT_MENU(MINIMAL_TEST, MyFrame::OnPlay) - EVT_MENU(MINIMAL_OPEN, MyFrame::OnOpen) -END_EVENT_TABLE() - -IMPLEMENT_APP(MyApp) - - -// `Main program' equivalent, creating windows and returning main app frame -bool MyApp::OnInit() -{ - // set the language to use - const char *language = NULL; - const char *langid = NULL; - switch ( argc ) - { - default: - // ignore the other args, fall through - - case 3: - language = argv[1]; - langid = argv[2]; - break; - - case 2: - language = argv[1]; - break; - - case 1: - language = "french"; - langid = "fr"; - }; - - // there are very few systems right now which support locales other than "C" - m_locale.Init(language, langid, "C"); - - // Initialize the catalogs we'll be using - /* not needed any more, done in wxLocale ctor - m_locale.AddCatalog("wxstd"); // 1) for library messages - */ - m_locale.AddCatalog("internat"); // 2) our private one - /* this catalog is installed in standard location on Linux systems, - it might not be installed on yours - just ignore the errrors - or comment out this line then */ - m_locale.AddCatalog("fileutils"); // 3) and another just for testing - - // Create the main frame window - MyFrame *frame = new MyFrame((wxFrame *) NULL, _("International wxWindows App"), - 50, 50, 250, 40); - - // Give it an icon - frame->SetIcon(wxICON(mondrian)); - - // Make a menubar - wxMenu *file_menu = new wxMenu; - file_menu->Append(MINIMAL_ABOUT, _("&About...")); - file_menu->AppendSeparator(); - file_menu->Append(MINIMAL_QUIT, _("E&xit")); - - wxMenu *test_menu = new wxMenu; - test_menu->Append(MINIMAL_OPEN, _("&Open bogus file")); - test_menu->Append(MINIMAL_TEST, _("&Play a game")); - - wxMenuBar *menu_bar = new wxMenuBar; - menu_bar->Append(file_menu, _("&File")); - menu_bar->Append(test_menu, _("&Test")); - frame->SetMenuBar(menu_bar); - - // Show the frame - frame->Show(TRUE); - SetTopWindow(frame); - - return TRUE; -} - -// My frame constructor -MyFrame::MyFrame(wxFrame *frame, const char *title, int x, int y, int w, int h) - : wxFrame(frame, -1, title, wxPoint(x, y), wxSize(w, h)) -{ -} - -void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event) ) -{ - Close(TRUE); -} - -void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) -{ - wxMessageDialog(this, _("I18n sample\n" - "© 1998, 1999 Vadim Zeitlin and Julian Smart"), - _("About Internat"), wxOK | wxICON_INFORMATION).ShowModal(); -} - -void MyFrame::OnPlay(wxCommandEvent& WXUNUSED(event)) -{ - wxString str = wxGetTextFromUser(_("Enter your number:"), - _("Try to guess my number!"), - "", this); - if ( str.IsEmpty() ) - return; - - int num; - sscanf(str, "%d", &num); - if ( num == 0 ) - str = _("You've probably entered an invalid number."); - else if ( num == 9 ) // this message is not translated (not in catalog) - str = "You've found a bug in this program!"; - else if ( num != 17 ) // a more implicit way to write _() - str = wxGetTranslation("Bad luck! try again..."); - else { - str.Empty(); - // string must be split in two -- otherwise the translation won't be found - str << _("Congratulations! you've won. Here is the magic phrase:") - << _("cannot create fifo `%s'"); - } - - wxMessageBox(str, _("Result"), wxOK | wxICON_INFORMATION); -} - -void MyFrame::OnOpen(wxCommandEvent&) -{ - // open a bogus file -- the error message should be also translated if you've - // got wxstd.mo somewhere in the search path - wxFile file("NOTEXIST.ING"); -} diff --git a/samples/internat/internat.def b/samples/internat/internat.def deleted file mode 100644 index 060bfe3fce..0000000000 --- a/samples/internat/internat.def +++ /dev/null @@ -1,8 +0,0 @@ -NAME Minimal -DESCRIPTION 'Minimal wxWindows application' -EXETYPE WINDOWS -STUB 'WINSTUB.EXE' -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE -HEAPSIZE 4048 -STACKSIZE 16000 diff --git a/samples/internat/internat.rc b/samples/internat/internat.rc deleted file mode 100644 index 7655c62a4c..0000000000 --- a/samples/internat/internat.rc +++ /dev/null @@ -1,3 +0,0 @@ -mondrian ICON "mondrian.ico" -#include "wx/msw/wx.rc" - diff --git a/samples/internat/makefile.b32 b/samples/internat/makefile.b32 deleted file mode 100644 index b94db135dc..0000000000 --- a/samples/internat/makefile.b32 +++ /dev/null @@ -1,16 +0,0 @@ -# -# File: makefile.b32 -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: -# -# Makefile : Builds sample for 32-bit BC++ - -WXDIR = $(WXWIN) - -TARGET=internat -OBJECTS = $(TARGET).obj - -!include $(WXDIR)\src\makeprog.b32 - diff --git a/samples/internat/makefile.bcc b/samples/internat/makefile.bcc deleted file mode 100644 index 612d7cf5b0..0000000000 --- a/samples/internat/makefile.bcc +++ /dev/null @@ -1,19 +0,0 @@ -# -# File: makefile.bcc -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Builds a BC++ 16-bit sample - -!if "$(WXWIN)" == "" -!error You must define the WXWIN variable in autoexec.bat, e.g. WXWIN=c:\wx -!endif - -WXDIR = $(WXWIN) - -TARGET=internat -OBJECTS=$(TARGET).obj - -!include $(WXDIR)\src\makeprog.bcc - diff --git a/samples/internat/makefile.dos b/samples/internat/makefile.dos deleted file mode 100644 index 3bb51f5fe2..0000000000 --- a/samples/internat/makefile.dos +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.dos -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Makefile : Builds 16-bit sample, VC++ 1.5 -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -WXDIR = $(WXWIN) - -TARGET=internat -OBJECTS = $(TARGET).obj - -!include $(WXDIR)\src\makeprog.msc - diff --git a/samples/internat/makefile.g95 b/samples/internat/makefile.g95 deleted file mode 100644 index c877d3ca8c..0000000000 --- a/samples/internat/makefile.g95 +++ /dev/null @@ -1,36 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile for internat example (UNIX). - -WXDIR = ../.. - -# All common UNIX compiler flags and options are now in -# this central makefile. -include $(WXDIR)/src/makeg95.env - -OBJECTS = $(OBJDIR)/internat.$(OBJSUFF) - -all: $(OBJDIR) internat$(GUISUFFIX)$(EXESUFF) - -wx: - -$(OBJDIR): - mkdir $(OBJDIR) - -internat$(GUISUFFIX)$(EXESUFF): $(OBJDIR)/internat.$(OBJSUFF) internat.res internat.$(RSCSUFF) $(WXLIB) - $(CC) $(LDFLAGS) -o internat$(GUISUFFIX)$(EXESUFF) internat.$(RSCSUFF) $(OBJDIR)/internat.$(OBJSUFF) $(XVIEW_LINK) $(LDLIBS) - -$(OBJDIR)/internat.$(OBJSUFF): internat.$(SRCSUFF) - $(CC) -c $(CPPFLAGS) -o $@ internat.$(SRCSUFF) - -internat.res: internat.rc - -clean: - rm -f $(OBJECTS) internat$(GUISUFFIX).exe core *.rsc *.res diff --git a/samples/internat/makefile.sc b/samples/internat/makefile.sc deleted file mode 100644 index 8709d2ca0f..0000000000 --- a/samples/internat/makefile.sc +++ /dev/null @@ -1,35 +0,0 @@ -# Symantec C++ makefile for minimal example -# NOTE that peripheral libraries are now dealt in main wxWindows makefile. - -WXDIR = $(WXWIN) -!include $(WXDIR)\src\makesc.env - -WXLIB = $(WXDIR)\lib\wx.lib -INCDIR = $(WXDIR)\include -MSWINC = $(INCDIR)\msw -BASEINC = $(INCDIR)\base - -CC=sc -RC=rc -CFLAGS = -o -ml -W -Dwx_msw -LDFLAGS = -ml -W - -INCLUDE=$(BASEINC);$(MSWINC) - -LIBS=$(WXLIB) libw.lib commdlg.lib shell.lib - -.$(SRCSUFF).obj: - *$(CC) -c $(CFLAGS) -I$(INCLUDE) $< - -.rc.res: - *$(RC) -r -I$(INCLUDE) $< - -minimal.exe: minimal.obj minimal.def minimal.res - *$(CC) $(LDFLAGS) -o$@ $** $(LIBS) - -clean: - -del *.obj - -del *.exe - -del *.res - -del *.map - -del *.rws diff --git a/samples/internat/makefile.unx b/samples/internat/makefile.unx deleted file mode 100644 index f5db8b1f46..0000000000 --- a/samples/internat/makefile.unx +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1998 -# Updated: -# Copyright: (c) 1998 Julian Smart -# -# "%W% %G%" -# -# Makefile for internat example (UNIX). - -PROGRAM=internat - -OBJECTS=$(PROGRAM).o - -include ../../src/makeprog.env - diff --git a/samples/internat/makefile.vc b/samples/internat/makefile.vc deleted file mode 100644 index ea79cd92b1..0000000000 --- a/samples/internat/makefile.vc +++ /dev/null @@ -1,18 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: (c) Julian Smart -# -# Makefile : Builds sample (VC++, WIN32) -# Use FINAL=1 argument to nmake to build final version with no debug info. - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -PROGRAM=internat -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.vc - diff --git a/samples/internat/makefile.vms b/samples/internat/makefile.vms deleted file mode 100644 index 9b76b144f3..0000000000 --- a/samples/internat/makefile.vms +++ /dev/null @@ -1,38 +0,0 @@ -#************************************************************************ -# Makefile for MINIMAL under VMS -# by Stefan Hammes -# (incomplete) update history: -# 11.04.95 -#************************************************************************ - -#************************************************************************ -# Definition section -# (cave: definitions and includes must begin with ',') -#************************************************************************ - -APPOPTS = -APPDEFS = -APPINCS = - -#************************************************************************ -# Module section -#************************************************************************ - -# Name of main module -MAIN = minimal - -# Object modules of the application. -OBJS = minimal.obj -OBJLIST =minimal.obj - -.include [--.src]makevms.env - -# main dependency -$(MAIN).exe : $(OBJS) - $(LINK) $(LINKFLAGS) /exec=$(MAIN).exe $(OBJLIST),$(WXLIB)/lib,$(OPTSFILE)/option - - purge *.exe - -#************************************************************************ -# Header file depedencies following -#************************************************************************ - diff --git a/samples/internat/makefile.wat b/samples/internat/makefile.wat deleted file mode 100644 index 31181ee663..0000000000 --- a/samples/internat/makefile.wat +++ /dev/null @@ -1,15 +0,0 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 -# -# - -WXDIR = $(%WXWIN) - -PROGRAM = internat -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - diff --git a/samples/internat/mondrian.ico b/samples/internat/mondrian.ico deleted file mode 100644 index 2310c5d275a87af295d5ea8dc79ea417a5e74c53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmZQzU<5)11px*Sc)`TLAO@s0fLH;D9e|jTfdxnc0Z? -A. Please write them - see the next question. French is chosen by default - because it's the only translation which is currently available. To test - translations to the other languages please run the sample with 2 command line - arguments: the full language name and the name of the directory where the - message catalogs for this language are (will be taken as 2 first letters of - the language name if only 1 argument is given). - -Q. How to do translations to other language? -A. First of all, you will need the GNU gettext tools (see the next question). - After you've probably installed them, type the following (example is for Unix - and you should do exactly the same under Windows). - - # all translations forgiven language should be in a separate directory. - # Please use the standard abbreviation for the language names! - mkdir - cd - - # generate the .po file for the program itself - # see `xgettext --help' for options, "-C" is important! - xgettext -C -o internat.po ../internat.cpp - - # .po file for wxWindows might be generated in the same way, but for now just - # take this one... - cp ../wxstd.po . - - # now edit the files and do translate strings (this isn't done by gettext) - # you can use another editor if you wish :-) - vi internat.po wxstd.po - - # create the message catalog files - msgfmt -o internat.mo internat.po - msgfmt -o wxstd.mo wxstd.po - - # run the sample to test it - cd .. - ./$OSTYPE/internat - -Q. How to get the gettext tools? -A. For Unix, you should be able to get the source distribution of any GNU mirror - (see www.gnu.org for a start). gettext() version 0.10 is buggy, try to get at - least version strictly greater than 0.10. gettext RPMs can be downloaded from - the standard locations for Linux. For Windows, you can get the precompiled - binaries from wxWindows web page. - -Q. What's i18n? -A. Count the number of letters in the word "internationalization". - -Q. Where to send comments, - additional translations, - flames, - money? -A. To Vadim Zeitlin , - wxWindows list , - /dev/null (platform-dependent), - wxWindows dev team Swiss bank account. diff --git a/samples/internat/wxstd.po b/samples/internat/wxstd.po deleted file mode 100644 index d0cb7bcfc6..0000000000 --- a/samples/internat/wxstd.po +++ /dev/null @@ -1,136 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR Free Software Foundation, Inc. -# FIRST AUTHOR , YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 1997-12-19 17:46+0100\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: ENCODING\n" - -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR Free Software Foundation, Inc. -# FIRST AUTHOR , YEAR. -# -#: file.cpp:182 hello.cpp:38 -#, fuzzy, c-format -msgid "can't create file '%s'" -msgstr "" - -#: file.cpp:213 -#, c-format -msgid "can't open file '%s'" -msgstr "" - -#: file.cpp:227 -#, c-format -msgid "can't close file descriptor %d" -msgstr "" - -#: file.cpp:244 -#, c-format -msgid "can't read from file descriptor %d" -msgstr "" - -#: file.cpp:258 -#, c-format -msgid "can't write to file descriptor %d" -msgstr "" - -#: file.cpp:271 -#, c-format -msgid "can't flush file descriptor %d" -msgstr "" - -#: file.cpp:308 -#, c-format -msgid "can't seek on file descriptor %d" -msgstr "" - -#: file.cpp:322 -#, c-format -msgid "can't get seek position on file descriptor %d" -msgstr "" - -#: file.cpp:355 -#, c-format -msgid "can't find length of file on file descriptor %d" -msgstr "" - -#: intl.cpp:139 -#, c-format -msgid "catalog file for domain '%s' not found." -msgstr "" - -#: intl.cpp:177 -#, c-format -msgid "'%s' is not a valid message catalog." -msgstr "" - -#: intl.cpp:330 intl.cpp:334 -#, c-format -msgid "locale '%s' can not be set." -msgstr "" - -#: intl.cpp:431 intl.cpp:435 -#, c-format -msgid "string '%s' not found in domain '%s' for locale '%s'." -msgstr "" - -#: intl.cpp:434 intl.cpp:438 -#, c-format -msgid "string '%s' not found in locale '%s'." -msgstr "" - -#: log.cpp:104 -#, c-format -msgid " (error %ld: %s)" -msgstr "" - -#: log.cpp:165 -msgid "Debug: " -msgstr "" - -#: log.cpp:171 -msgid "Fatal error: " -msgstr "" - -#: log.cpp:172 -msgid "Program aborted.\n" -msgstr "" - -#: log.cpp:177 -msgid "Error: " -msgstr "" - -#: log.cpp:181 -msgid "Warning: " -msgstr "" - -#: log.cpp:268 -#, c-format -msgid "Assert failed in file %s at line %d" -msgstr "" - -#: file.cpp:303 -msgid "unknown seek origin" -msgstr "" - -msgid "looking for catalog '%s' in path '%s'." -msgstr "" - -#: intl.cpp:378 -msgid "no message catalog list" -msgstr "" - -msgid "OK" -msgstr "" - -msgid "Cancel" -msgstr "" diff --git a/samples/joytest/chart.ico b/samples/joytest/chart.ico deleted file mode 100644 index 16d4a585fd3246e7a8dc43c45e010c006e643dd6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmc&wF%H5o40I7AQkYn&nArFNzsi_=qf@@p2UOx4jHOFdsgk)%D>cxHj+|r1*R$Ou zA_c50k3u|mA}8!ucnQD53)v%zcxdbJ5TSTKZiq7qFu*Pe;O)q})Br9M@2fs2xG_OluNwM{ zcSECEB^`=VZ-!Clq`-NP$D|`q^P8EoNK<|GI(*Wt>lv#s7a1^aS#Q-v=NLJDsYfc- TMvJ?z=wHXdA%Ehd{14;}SbUVL diff --git a/samples/joytest/gun.wav b/samples/joytest/gun.wav deleted file mode 100644 index 8cb037d78d14fec09784deb03d1c225c5bf96f12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26838 zcmeHvS#xB^l^!R;4}SJ9aQJy%JYk0&o(YFE;v!OP_6{`mwW^$EcgdT1mhXJ$WP%UgfA`)0 zwf5FqlRuq!$87ih+kf-cTW|dp{`+?mZ^^&Edh1`~jCpCr`>*i5i#u1Byi5E}{{IFE zB;v7nJdsEwQ>kolEm-3mI z&zCA?V}9H82k+jUSzWW*?3?azX|PxFID*CAu;19qr4!!8dkcE3rCcsosJNJD zYCaW@1iUWirVa10m{(U6S5{U{X3N^z`o@OMZs$nMxNNel+cw?4P&An> zmTS!pra#<2JUTf&ySTV`ddaywd-3t-zxw*O-~8@3U%tFNIoRp8>Xl+1Q;GzA9@nPB zwy}nu7N_3-&wumIM~|l$%+6$^UynIAL-}eY<6pUd=gE4kbG+Zc=)%s0kA5++v}Sj@ zz5ZY%7U!fZt?up--*>v--)>T1*>nO@hnPK>i^E~JZLH2dc>kUEKAN0gS+ioi!Eh{* z%H|80dcD;rG{vSDy&^*U~@V~n({t*xyRY^GQ! z7FIyHtHk43{_yflag$Ay3Sd|v#6@Vp)mXCM-EiufQ#40_a*R7JkL42e>tms(nm)~`6iaZL3UGu^kDj5R zI9om|^JSmZkT?(ghm)5E39t#~t8o#WV1zJ_YPANB zZc7A$^x`3aBp?Ci>hbyUN{qu$G~OLg0Ixj&3|t311S0WdDjsmztahh2k}21>qE4GL zRM_rU!w!cxlCAZ2TE%>|x4T{0Y8^d$deALrQiXc67&On!nw-&0!t3_x-!`o0&$&^k`ynebXOJguUKyrZGG{ z-p<7{jef7ORY*r{bMvlZyPk_7F1pvA{QSK~EAISY*odyrJXtVVU5I7zL>g8A2P{|X zt^VQD>z6NIy}CLX0^aMjN-pB|Wy-nG#-ce~%tn2iR`bL=Kf5~vXt%qgwd2$B#_Xym zUGEKs=a)ylO5EuH;Ab1P=!QMBe|1=LEiO63Zu6QaoJgiitzILW-9A4b6vIxZKV94I zR1)ruO}F{+gXLhk?4F%5ZF+*q+TI|(?kOK0WGrTHX8Yp$IBzwF+GiI#<*3V@s#fy} zuW4>QUCu;&8>79c;obG%Ww0>A|6k)v~&H%i^D;u)vN(w3Q5=8 zgelqIZ>8Of6Hit)!}(I&Ro>R$4E*{{BMwhw~RZC1<0Y%=UL zSpw-KoM6+ju{!bgPab*l*`RZM?!*83lMkQFtynhfPER0=VV+)Jo$T-Rt5Nfe$&;w; zzj#)2TD*luDeMWRtAo8(I+kl4TwEOXo8?luTHDGdz+;l}h<|h49s=nBZ*tl#a}V#$ zx>GU7;*)7>A{Sg+wFZ*O2!mW41dRDS|b4IdT4F=Ke!QTGdjyQ`qSIZ@aBEV&ioGVLKC||`2 z#ss37%a^KZ^j(Y|LkBnLbusu(2PVR?!%Rx(AfFR%07M7u3EL$*0KhO>B3>e529sO$ za?-b9S+`o(Evrk53k&nJQ&Uq)P%?DdIGY@T?r zobj1wp3JST5yYH8P%;5BHiTK&v@koI0=*;SAyWth@Eb53A?zDD2gn#n0A)`$t|)IV z6Ay)==|ZIrSlit{y14%0m#;2PFP^=4@$|6Y+3xjsK*WWk(TLy;!;`1yK;&cq$Pg-qR`i9Bm@R5HlkQCn4%qw(M8Gm zysovGd-tB0J&|O-)+_{FzF4-fRc*ApdnYGw|AVWq|M2ZqtA6^`H=mykVAj>G>h{i{ zRVii}{=C7E-|MokFHPRNd-ucl?>w4bfZHP#@Jil>v@M%2w~wwrzUbzH-cYu+e{#^P z77?SOL2yFXrro+>v6xLO3$rtG3v)AQvuJbk3ybqpk0<7BA-u%tbO)kj_~fh&1SC3$ zcJO|GushuAZ?~JEr*OGex7XYf>PJ@rv#-{-lEeoqdDdp{ zefW4iUP@UfA1&JK<|Q+Lw}lj_h-51svMnx{9SH51Od?;~9`rlS8jKkc32ab^pfD1l zD2hgjX)A^$BnPq2-?jKPv#e3O`C3~eQkLj@?E!rHapy*Y$fk8tp^gpjTQ5T zotznzIglt+wsOcoYlURcHuc`$e>k;bb$Q`85%2oK%rAtg(U8xz>GY?n{a)T>GTHs<=Kf(TW?RP0Jxpf8@abfx(jRt<(SSdctnMD| zw#sBX5%4v)(`I_|!B2kr^ZQeCD(!cAe26`)CNSM4y(f9w-aWaxzC7A75=7PvLQKpd z1_#nPCU)>X)57GV$+^`Hp=HfV4qy?_H~KrhM!A?TRltf=oKb;>I1SW>XP&jQsAMo< zC|4ToPP^Ge1Q_fN+Le4ZgS^$xw;<77SzcOPTwIu+o1T39cw%aPWp)0+yKmn&1>zy6 zb#24pf+;RpHbFxHQbhzr$zhO-RFKvdw(1=KD;l^c!h<$x5?s9g-v&Ves|6m3_E5Y&sdyp$A;D6_63BH zBZ&kfFIB6E`?|~m#D(3s99Em#=YtU`{tV_F@H&u~nwM9to=6&xRI1JH&hYT`>hs@x z{pH8cpPru_47!8EP1pI%?=wE;?rh|ghn`@N2}#Yb=d$AAA{-o5*1 za(ZrY)nau;%V3v5%c>(@s+Lk=uifqmc&%W*n_duqABb@x5e@kRv3%>`bl5Cpi`8-g zD2FN(AZ}xQ&0<2OV`YUA6Hvd7ynEejUUvqftl^-70D05Fk1oIX_V>Sfe%Q)@`qW4~ zSb{+VG1=Z89KHDLc`Fh~SL$2oM5>#j_c)C!lm$G@J3;pfh@UWlvd!m)YPk#CFQD-X!9|@Ztd^Bb8 zWV^lC(hQyn$CBA{qfxE*5BF+`Smo%GPcL>mC~zPHOEU41`itGVHvfzN^dEk5Z_Z*z z7~Tvf^QGqAvrn&&cl%OgV-+l%EfrEhr`?+X{qx#Z7gshTarfe*#|!qv_T`JCW)4KU zU1vcqFVz?Lma3c}p$9&Bm{)~^2%qUJvKR1rQVS7~u0V)o6XDxcXu4i0fiD%SjXEeH z2!k5|W6f+{S%T}#&CPAGD0T++{?6f;sFRw|oKAcbTe&YFefpr|mC z1A(!^W$uD^(D6%Rw?(U&5rRf@(P8-A(ZYZ@KQcc!s zRgMjmBuq*PYGd7ET3KG4pPPjarlEl+PY7gBW)~M{r^qrNJ$!)n@X^DE55YJmpFl;k z^9w8=n#`yjqG+`V#_F=J%*}&h!}l_Ud^%I8wz@m}N9Rv3pI%zA)yUcY$GcEzIT#rfIk$q{Jh5G<2}2FnB_3{TGwwkrkHh-h-9e|pltH0gM~wy?Z)bNn#3gbNR5zs@jHr!(MG^%rFNInIqX<$W zYE~(w1VI8VRSFhHV2!XImd#*4NJdzr5#|Ily48?!sC-3LzF@mj^a2Zqaex5Z?cP`h zmG4cvD;UQK-{!{JhTR=d5fenTkV)WO$mL;zQj23%jU)<1HL`Mg!>EKPZWBXLjwFF| zx>BWmr zzWCyk=jTUtZeu1%qtXifK5%2ow_r{!)naU@Aa2E@Xh}fVC7*7l3pme<_s-Jg8YoRVo-F zW&;dSe}@%8@#GU=6bp-lMo?%1Bgpg|s5H(kFB=I8YSv&m${J863k7|fmKBqA)8zza z#`9Hxai>2#zPP-4c7Aenbo%t_>goCU#Z$D4i*q{O$?5sU>A~*K-r?EPi{nA7-stpp z5Q^HET`CCOuUl58@4f%dJMVq)(L=cYlc~8S(>hZ)1OS)Y8;oa)rCgGPf|_S07)ESI zxm1!i)~X3;W&U?t>lWIyCJ5;G(v~1#@-~pGhObI5Gi-(bF zf*MDYsYE=L-$FI1sgxM>GY3IBgo3&Va&h{})C~B-y3J}aZ@2=%fG-eDZ(&`eyWQJ8 zJiENQJcVtXz#7nwj}B3HBL*S!;+g@S67%7L0V)=o_KlUfsp+|8^SagHB+8|7`E)D< zQipIL^-5JIN8S!9waI(Hs&FiMJdV5`yJ>c2+2%%$wQl!D6S06BDO$0K0J*b&h`Jo= zCG|!n<#RB5K*@}5ro4(HGc`RsPpiSg4$K4D ztCgnVRtXR3wiqTbffN$rh5S(ht)ePOp{s`9Ab8T4;a7N%tP$Y$(L?GyM$_9rd;amO zXQ#tnvy?%d5*m*L+_rU4Ubhb{-0fI5gQ|ffkmYo+yw}t<8wMn462utfRPSmnqJVWl zR4K4NL1+Z1U`-7X95gAF&J{@uL*ZBo8Dzb)dwTWq<<-T}5Ri=&84(V(1fnPS5)nY0PB7z$o$edjEwUyaNAHMUmx8Hg1y`O*Z(WB|P znaM|wC$WIF8BC;OZqxL{2Yxj1(*H(-EIS1CzU`L zD3Eo==oKjMaOsJ5;8-)QIYTKt0>prh)iQ-pd#1&T?{l%Ki^W3Z@5nt`-Qn5Q^Jiy! zjRGhXNN8v0`0C~JvxDK``HRoL`sVlFesz5^#9HIo`32ikEYn?{A0xIIwVMW3=m6R! z)aKK1Kyok?OQ3k{vaOqhg3U}#PBPX@ut&VVfA_t=`L{OE;_u`dXRMSj-&$Ijvq zbR1+Sk1VN;be+YuToPGF0&xSe*vL|S5Ia^#O&|=wD;9{>z#vS^^D{H^%PWgBQ*%g_yjff0*s$@AOK{<3I%oIw-0Qk1wyUug<`QSSv~< zGud?5u{8O3ddUQ;!sS-_z7G@ z@d=o?vMNNC;nD#Bz{GuSn|TFX!yQT@hk%XLp!|cw{avirA0F&(H>%ZoyN88u(#4~b zvu7_q{rs~}KK}UC^)PQNJ{Xvf%mbgY`%*VLmv(lBjO!GiXJ^O5e!GDe)LSSl=4qNpHe@{yb^t@> zx}40=<5)L=*dWd`NL`nP|3XU1&Dk{lReR5Ad8 zaBPl1OhJNyG4^+M2fg0l5FUPUaxfeo93k!N5iLq6Z-648TE`@|#ELs?hm03#XdR0q z34{ueXx0RrD665?oX8eS&@6Jj9FU`lJYZ`}Xl;h9HW?2?;AZSY!S;w)x*+Kn)_h7C zuoBojiwC7DDm9c|zl+2H#IJ+|2CIx<6GG3^kPO!JuudlE;dHwlmW8Rul3O9=GFvwl zU+_3lreHoJxi)Hk(L|<5U6u362%dJJ)++lnum*_bk4CFmEig?%>CYG(7F;F36nGWj z39Ul{m>ssspvWQMP3T72BZ4%RDVPa$2g9S2qkU|iKq04;N5mi{hv-zf9~MhS?H&7UtRT%Ciq8C?dtsVz{Fx=Z=*&GZ8@str29Fsgp z_B@Coh(e{5EPj=uKO+F4#DR=I03%%me#|_1{P5o0kM5v-_={hBc;}53P#QMSCNfp;~~FZk`BX& zDvE%iN)LuqD`w!dENTpPu}X)Ce~!oZ4o)vFPWBPWku`#xgYi}c8%doEGKEblpv+BB z8Z0~nKu`09RKSj+7E5AW+Xi8GSl3M0_XGEuMM+CK-onxv1Ym&dX9TN>YF^>YlM$GAuGv zcr+>Eiy=z@QvMIScey@$fiJL zoaB250wn)Nvq;{|hiF?4;ly+%@L_JD0UmH4n(T5y5eX81@#5<8;_T!Q5CSDYn*(yN zS`*nkCPdN$u37=2GR5549qj}{-9@dFF@MT|W>3wq#*L zmRT};Y?oRBf@~aL`TvwIGK*i!s2X%C=&vIuIA7?p2!L8)k zur4WbBRd8^Vzv$Gn`kH|mRr#9Ex&kxvM{7hqoY&MD@dJSv9i7Zi~!nWn-mg1L~U+w zfRYiRxIN8*5)KG~1FIG+cgV&e74%7sSt>vTqS~Z_$BigdlbRRe2HHS17KvbEvLJ{O zm1s!tnl)VDD-F}M^6M8P-Lu4pl}KI0>1-UOE4>s@#WdP)M;QSEKLCM0zNFa ztOFHbX{&0L9|476PA2E~Y+5bLb5fR-1w9ff0LC&jYy(sitEE6{Fn9_8HVWp#Kt%tP z`Y4Jbz-~qgDL{tQz(fSB(utWei4flb=|W*n*XWK^neJep#XHtEnW4*KI=2FFL7pqx z&^bV!TP|Tjh;`@_9@{7-11>xEc!Df3SfPP~U~NhOgmq8sgXCnGFJpfLb*c(EOqN+d zPZW6DGJNjq{6z;%PKGJgoc9ZD_{|cgB0w! z5fB+DHy+8JR~%sLmtZINd7!D?bvB`}a6!-(*7_l4V54OfpuTE>rDBJ`3dydlvJ)#< z3*~@;+z4|?Wa)_g1Tpe%8Mb`WWn{I6(}G>X+Yp0bhg_Rw39~N|OyVb(-dNdhVuu|P zUUK&~6Nuq}3vnzJ0P-Xwp)-I4N7AUclMaBUU{3|y980&-s5J@B8l?u{ZE}t=5!+G> z2tpiyTo@*}FAU_JWS>sSM2FQLAU+Diuwj&>WkW0B9x_7=^P?O zP!v1lhA`PRD(h@&STreG6dVd{S!k2&dZPt%+W{m5*9Dbg9t{Q4$w}*3!smu9&>aB* zWFlM_M7?<8;r)B}9z2?yHL7Ra-m914klzEjWMc+U0I|ISLxR3g+LGcmf{cP^kTkFY z7B8{m7VCwel@-(x$*~DSEV;nx2+u$|R`+EM7)GYTDaOc*gMpSQ30{vAEakFviIKBH zL>33q1}`Bq4soqr9F`o8$q9A9n5>c+P8bC~1!#DbaBUQGxZO|5ie97vjt)*h!;BDE z3HCHRcq;@A_aQZ9(MwiWJw%oe3Oyy#AyQHejVR86<1qab4FgVnakWyg;tl!c0h)_6Jtr~q*E07h~N|*k>HNyb{OBS#zC_gN+J@abVtm9;hMNDjGO#G zHAKlS>+`TLBDm2+{3HP?y~ng5I57aaG(1XHTxIb{qBBSeAd_fG=tLEH5jAA+I26o< z2QawH?rwe~GJ(9w)_KeqK1EYVW>7o;0KVdJty>1q<%rLtzR~g-a+BjhW?h=rCad0lXJ{g$<`}n)nJ$ z2~F&WHi?G5iPU(AKq;}C)<-~8ex)oxVIk3&VU53lzesxN;gTCL)x@6%f#Av>Dlr4f zR-!Cv2Vw_qWtO8Ff`+U)k!1~n>F;Sv5;B5a0kj*yOee+C|?N3$dc(OY*aJS zWtD)!MucF&Mi>s2!Qy?OG1QsFe?l_-RyZOZhQ6gdM`#YLlV}R}gUN$H%5y>hs5Jgj znJQ+9kbJj7$wF8vb^Tgjixe)PX37O{Zvbnn@`l6O;;t z2%CgQjx|+u|LRR9h{XCHc4Go&VbT^ z3R!?tg=p++yjM)MIYr*YEjRO9+rOQqz{Ka@=Uq7l3V zoh4;pd}j@_C|ZxuwmOgBR1E_a)GSTzQ#We{F0Q8ijdY5tBkD4;5ROGc z_)s20I?3`K&005DxoR9D1C#P?zLrfGD1BT}e7b?^8{G@cGmZ$(69pKZ(Bvji7kRx# zdAhGw7PTPpUOPPAPxcCNvQcmZY{HddFT4$n!^D>{NY03~l~4d7LOz-y(6HI$i^AeG zB&v-N56UKql3U?LtA>&d8rADep%K@WFu*R#5 z8H=!$@M77$q>b3s~|4(WoZM`k8z*ht6}3Z;Sv#3yL;bOG(x7=g@C z@enGU8Xsv+X7`$cb?8<)5E~g8iHK2bbo8M>Nr_(UhXzD=CnHeCMO)MpP|&9A4EHI- z=5Uoa3kWIk@l#|ewx)QK7_|`x6oL`m)eJSbN>Zs9{}}BD218dW%1}`^tBQ;|g7BjU z;o)MGv;eYJYE9q*hk!BR5lo52#Y@-Ou}J$X$rJn)4RdEC zRYq<2yY5^^uaOn0p+hXvWN6C$DQHoWqZj7iiX2Bg9Q z<)sYRxKRyX+YvQwSh_e5{aHL)WX^|`;prRE7bjx)naJ39yNHDFqYy(>J0gD?AH=;> zjK+Y+QAdYJg$v{y3^FR8VJ+>oHooXY9qF8afmSs-mg1?(Vbu6VWMU995j|st{6OJ%ugtz1GB(Nfu`VW6TvacAJM zCwXci@4Gnx@* zqh&?Zk)~y#v@OFFAf!_mw;J-gZJT^h-GKviC6m-HCosu=k_=iGbB~*PvNeeyb zxrkF3-Q4~*=FeM{joo0butte}VyJwz(k|7eDIR%0LmSKiMgcvKnsNuiurON%?P766 zRTVeor5KQouzJQ43y7w?iA~VoFxC+!k99J_C3G}yzLcjSQH8ML`7#~eXEdcYe)5d+ zazmEtoAQ-roW>8WOFSW(GK5WPjwY-?O-%$RKo8B(SJeCDMd(C#z@dpT8V@UA6Y+?E zWM(&^R`?M>6@^i>3u90c-?Y>v@YFhBF!c>i3KZ+Yqz7XarS42x&6k(~Kt+Xo{0+ zA5&&JhC$lDl(nhQ!l%bNRk300gmI`Y7{O>XZ#6S=09qn}aU=jbu3^0jy+`h0a9S2h;2gNTT$!bsjN#Sl<#HqMLlZHJiVX8oLX#i^-_fb4RE>nRN|6E8 zGfkN>Xl?Gwly1aq0HlUAHF3O-!@CJ8Kp{>@O~;7v#L-bC)4J0psohG%CFUgZ8nG!w zugIv_7g1MYigqKzypp<_M-hrja!eBBbE_jq+$<@aI`JS+l>#NkS5uWN)MSe zjr`OYAapN$>bB_Q)f|A5qZ$l)Mow{J@9Ox4;s+RYEo1 zIqG)I#|1*g2gIH=7&0ADy61po+%ih-E!qkxZNbTrBSI1s$|yt|w3FCs^e4TI2Bx4+ zeEtT3ZpO#?yskWDW1`9%ryj>axnX3THvlV+q#a0^wsJ5%A~i#P%5eBz17~S3%DAOl z^&z>57C63?Yr*$b+O6mm*FxyyERYE`S5-c)R&l!t{xA%yxBJ}vEPp11|K9;tt@ytp z(_5h=xuSR#CTKZABM{)tczGlajTwpsX}v(^#1Pz#IYE$^j;`vd)N}+xHz|~cBk?1= z1S{eq1qzzJ!Wz1iyt&K!CTZiwW@GE5F7pEKWVsn|t3d$^y&82@*j8q#lma7Dz^MkP zh6jg)A1b$$Gg5R0YD%Ay{76-m+eLKUl=&=iLe;q`v{53=jELm`7R%InglJ!JQAu=J zfaRK|tYwb&aT)cRQD+KtbZtSfh#x8n%BK{3MsS7fOVyvD42^1|10999IMivrSuBL6NY7T`U(xml`oJFZj#hsg2qclj!L!-Y?Gn&z>$Cbe=XyjGJ z-Nfk)>=61P9?7?9o9E%JCWY450?Y^`C`kMOR_I3SR>ca++Q140h5R&NM#V=w1WAsy zk%bGVGW;Infn;vE-Hm13@Gx;AjYcv@{X$}!jKG*U{Y`XaRDG3oDru6NP?##Gq$reR zv`U~@QK;O3Yl?M9fDr6a9c$H7=il3;3*i&2F|(|swrY!)h(<-9GVhy!E5aL-)(Ehb zXGriIm#CqXaUqY+jT9!z)UKu63La;yJ?NOMU%(=i_?}!>;aZ1Hpwl=F5H*a)O~{-Q zq`8gZu5k!?X>z4h!K$>_wN6$cMD0dU4jO*zN70{_lGeO}BC1++t}uxvz$U+VUUY?9 z$AFj5^D#Ca^O9D*@<-Z&VGLtu%aRg%fH)C?Tk+axkhH^1#GJS&C#)bi)kQmOGjy}hQH##1Bis$5JNR@9e z1fssR9*y2clE+mgWjz@+ZuLV+;6@JWNQ+2yJCfH(V>f4v0mvEsg9B5|uqyr2xcN{1 z*6-n%zWd7YUPf1MZslcpuNs6Q6a$9k67Ly3`q}}nvFWkD;Y;1~eV_UPbxHbGqSZPu zzT~8OwJ{WUmJ(Yn+(a^`W}1m*7-m3A+5L-t&L?~~sh>koAEXI{GX z;@dx7>k(@G0nL7QtbfUw*Is@5=j~C-uiH1g=@&-yrb}bzzo+|u%BiuQ#t->sEs^ol zJpN%p{qZ~W^S1$XgrKkW{`$*re*aS@`5oAJ^TRhU__2>Lvmd+5f3f|&LB9X5$NK{g zKYI0R2KJZ!9QCUX-Z1e$=k#km|Cm4j(n){!dHMT?A9IL*BwGC`0)5kPzB~Fq*E1Po tzSG|H+JDCLGUFd#MgNR5`WN)-?-;=7#E(Bn{5ALwG+zAi-^m`|`oHdJTl4?` diff --git a/samples/joytest/joytest.cpp b/samples/joytest/joytest.cpp deleted file mode 100644 index 92add26604..0000000000 --- a/samples/joytest/joytest.cpp +++ /dev/null @@ -1,171 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: joytest.cpp -// Purpose: Joystick sample -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include -#include - -#include "joytest.h" - -MyFrame *frame = NULL; - -IMPLEMENT_APP(MyApp) - -// For drawing lines in a canvas -long xpos = -1; -long ypos = -1; - -int winNumber = 1; - -// Initialise this in OnInit, not statically -bool MyApp::OnInit(void) -{ - wxJoystick stick(wxJOYSTICK1); - if (!stick.IsOk()) - { - wxMessageBox("No joystick detected!"); - return FALSE; - } - m_fire.Create("gun.wav"); - - m_maxX = stick.GetXMax(); - m_maxY = stick.GetYMax(); - - // Create the main frame window - - frame = new MyFrame(NULL, "Joystick Demo", wxPoint(0, 0), wxSize(500, 400), - wxDEFAULT_FRAME_STYLE | wxHSCROLL | wxVSCROLL); - - // Give it an icon (this is ignored in MDI mode: uses resources) -#ifdef __WXMSW__ - frame->SetIcon(wxIcon("joyicon")); -#endif -#ifdef __X__ - frame->SetIcon(wxIcon("joyicon.xbm")); -#endif - - // Make a menubar - wxMenu *file_menu = new wxMenu; - - file_menu->Append(JOYTEST_QUIT, "&Exit"); - - wxMenu *help_menu = new wxMenu; - help_menu->Append(JOYTEST_ABOUT, "&About"); - - wxMenuBar *menu_bar = new wxMenuBar; - - menu_bar->Append(file_menu, "&File"); - menu_bar->Append(help_menu, "&Help"); - - // Associate the menu bar with the frame - frame->SetMenuBar(menu_bar); - - frame->CreateStatusBar(); - - frame->Show(TRUE); - - SetTopWindow(frame); - - return TRUE; -} - -BEGIN_EVENT_TABLE(MyCanvas, wxScrolledWindow) - EVT_JOYSTICK_EVENTS(MyCanvas::OnJoystickEvent) -END_EVENT_TABLE() - -// Define a constructor for my canvas -MyCanvas::MyCanvas(wxWindow *parent, const wxPoint& pos, const wxSize& size): - wxScrolledWindow(parent, -1, pos, size, wxSUNKEN_BORDER) -{ - wxJoystick joystick(wxJOYSTICK1); - joystick.SetCapture(this); -} - -MyCanvas::~MyCanvas(void) -{ - wxJoystick joystick(wxJOYSTICK1); - joystick.ReleaseCapture(); -} - -void MyCanvas::OnJoystickEvent(wxJoystickEvent& event) -{ - wxClientDC dc(this); - - wxPoint pt(event.GetPosition()); - - // Scale to canvas size - int cw, ch; - GetSize(&cw, &ch); - - pt.x = (long) (((double)pt.x/(double)wxGetApp().m_maxX) * cw); - pt.y = (long) (((double)pt.y/(double)wxGetApp().m_maxY) * ch); - - if (xpos > -1 && ypos > -1 && event.IsMove() && event.ButtonIsDown()) - { - dc.SetPen(*wxBLACK_PEN); - dc.DrawLine(xpos, ypos, pt.x, pt.y); - } - xpos = pt.x; - ypos = pt.y; - - char buf[100]; - if (event.ButtonDown()) - sprintf(buf, "Joystick (%ld, %ld) Fire!", pt.x, pt.y); - else - sprintf(buf, "Joystick (%ld, %ld)", pt.x, pt.y); - frame->SetStatusText(buf); - - if (event.ButtonDown() && wxGetApp().m_fire.IsOk()) - { - wxGetApp().m_fire.Play(); - } -} - -BEGIN_EVENT_TABLE(MyFrame, wxFrame) - EVT_MENU(JOYTEST_QUIT, MyFrame::OnQuit) -END_EVENT_TABLE() - -MyFrame::MyFrame(wxFrame *parent, const wxString& title, const wxPoint& pos, const wxSize& size, -const long style): - wxFrame(parent, -1, title, pos, size, style) -{ - canvas = new MyCanvas(this); -} - -MyFrame::~MyFrame(void) -{ -} - -void MyFrame::OnQuit(wxCommandEvent& event) -{ - Close(TRUE); -} - -void MyFrame::OnActivate(wxActivateEvent& event) -{ - if (event.GetActive() && canvas) - canvas->SetFocus(); -} - -bool MyFrame::OnClose(void) -{ - return TRUE; -} \ No newline at end of file diff --git a/samples/joytest/joytest.def b/samples/joytest/joytest.def deleted file mode 100644 index 501f2b229a..0000000000 --- a/samples/joytest/joytest.def +++ /dev/null @@ -1,8 +0,0 @@ -NAME Joytest -DESCRIPTION 'Joystick Test Program' -EXETYPE WINDOWS -STUB 'WINSTUB.EXE' -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE -HEAPSIZE 6000 -STACKSIZE 48000 diff --git a/samples/joytest/joytest.h b/samples/joytest/joytest.h deleted file mode 100644 index 68c4f68075..0000000000 --- a/samples/joytest/joytest.h +++ /dev/null @@ -1,51 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: joytest.cpp -// Purpose: Joystick sample -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -// Define a new application -class MyApp: public wxApp -{ - public: - bool OnInit(void); - - // Joystick max values - int m_maxX; - int m_maxY; - - wxWave m_fire; -}; - -DECLARE_APP(MyApp) - -class MyCanvas: public wxScrolledWindow -{ - public: - MyCanvas(wxWindow *parent, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize); - ~MyCanvas(void); - void OnJoystickEvent(wxJoystickEvent& event); - - DECLARE_EVENT_TABLE() -}; - -class MyFrame: public wxFrame -{ - public: - MyCanvas *canvas; - MyFrame(wxFrame *parent, const wxString& title, const wxPoint& pos, const wxSize& size, const long style); - ~MyFrame(void); - bool OnClose(void); - void OnActivate(wxActivateEvent& event); - void OnQuit(wxCommandEvent& event); - -DECLARE_EVENT_TABLE() -}; - -#define JOYTEST_QUIT 1 -#define JOYTEST_ABOUT 2 diff --git a/samples/joytest/joytest.ico b/samples/joytest/joytest.ico deleted file mode 100644 index 2dc1bde40cf921731fb2f7c6534054c6fb8d96d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmah{IgY|W5G*e%tq=i3o32BCvHXmAf>Zy(`6TlchZ{QF05Mc`&y2+((WbBJ>H`DN z@#*^mB!3^kH~o>?Q%}?mpR_<=?X?6JSqZ@%EkkNRN{NMRALOiv%14mQONo@Vuu~f2 zR1r@bqoxHgHqbgO7{>y8VLOh4a849H4Zzj{FAJP(g5{I-n)O_*F$%SIE3<<+Nj^dZ zMrsmnqFCH}{&VhK#xlN*^s!HQyVC2cT_ZcBoK?PWy+p6H9A{2%_%Scn3ie-MC5TR` zfM>p7Bv6> diff --git a/samples/joytest/joytest.rc b/samples/joytest/joytest.rc deleted file mode 100644 index 8138605789..0000000000 --- a/samples/joytest/joytest.rc +++ /dev/null @@ -1,5 +0,0 @@ -aaaa ICON "mondrian.ico" -joyicon ICON "mondrian.ico" - -#include "wx/msw/wx.rc" - diff --git a/samples/joytest/makefile.b32 b/samples/joytest/makefile.b32 deleted file mode 100644 index 1ab531405a..0000000000 --- a/samples/joytest/makefile.b32 +++ /dev/null @@ -1,16 +0,0 @@ -# -# File: makefile.b32 -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: -# -# Makefile : Builds sample for 32-bit BC++ - -WXDIR = $(WXWIN) - -TARGET=joytest -OBJECTS = $(TARGET).obj - -!include $(WXDIR)\src\makeprog.b32 - diff --git a/samples/joytest/makefile.bcc b/samples/joytest/makefile.bcc deleted file mode 100644 index d84ed49281..0000000000 --- a/samples/joytest/makefile.bcc +++ /dev/null @@ -1,19 +0,0 @@ -# -# File: makefile.bcc -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Builds a BC++ 16-bit sample - -!if "$(WXWIN)" == "" -!error You must define the WXWIN variable in autoexec.bat, e.g. WXWIN=c:\wx -!endif - -WXDIR = $(WXWIN) - -TARGET=joytest -OBJECTS=$(TARGET).obj - -!include $(WXDIR)\src\makeprog.bcc - diff --git a/samples/joytest/makefile.dos b/samples/joytest/makefile.dos deleted file mode 100644 index df94746c2e..0000000000 --- a/samples/joytest/makefile.dos +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.dos -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Makefile : Builds 16-bit sample, VC++ 1.5 -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -WXDIR = $(WXWIN) - -TARGET=joytest -OBJECTS = $(TARGET).obj - -!include $(WXDIR)\src\makeprog.msc - diff --git a/samples/joytest/makefile.g95 b/samples/joytest/makefile.g95 deleted file mode 100644 index 8eef77f7cf..0000000000 --- a/samples/joytest/makefile.g95 +++ /dev/null @@ -1,35 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile for joytest example (UNIX). - -WXDIR = ../.. - -# All common UNIX compiler flags and options are now in -# this central makefile. -include $(WXDIR)/src/makeg95.env - -OBJECTS = $(OBJDIR)/joytest.$(OBJSUFF) $(OBJDIR)/joytest_resources.$(OBJSUFF) - -all: $(OBJDIR) joytest$(GUISUFFIX) - -$(OBJDIR): - mkdir $(OBJDIR) - -joytest$(GUISUFFIX): $(OBJECTS) $(WXLIB) - $(CC) $(LDFLAGS) -o joytest$(GUISUFFIX)$(EXESUFF) $(OBJECTS) $(LDLIBS) - -$(OBJDIR)/joytest.$(OBJSUFF): joytest.$(SRCSUFF) joytest.h - $(CC) -c $(CPPFLAGS) -o $@ joytest.$(SRCSUFF) - -$(OBJDIR)/joytest_resources.o: joytest.rc - $(RESCOMP) -i joytest.rc -o $(OBJDIR)/joytest_resources.o $(RESFLAGS) - -clean: - rm -f $(OBJECTS) joytest$(GUISUFFIX).exe core *.res *.rsc diff --git a/samples/joytest/makefile.sc b/samples/joytest/makefile.sc deleted file mode 100644 index bcdcb11d54..0000000000 --- a/samples/joytest/makefile.sc +++ /dev/null @@ -1,37 +0,0 @@ -; Last change: JS 12 Apr 98 10:45 am -# Symantec C++ makefile for joytest example -# NOTE that peripheral libraries are now dealt in main wxWindows makefile. - -WXDIR = $(WXWIN) -!include $(WXDIR)\src\makesc.env - -WXLIB = $(WXDIR)\lib\wx.lib -INCDIR = $(WXDIR)\include -MSWINC = $(INCDIR)\msw -BASEINC = $(INCDIR)\base - -CC=sc -RC=rc -CFLAGS = -o -ml -W -Dwx_msw -LDFLAGS = -ml -W - -INCLUDE=$(BASEINC);$(MSWINC) - -LIBS=$(WXLIB) libw.lib commdlg.lib shell.lib - -.$(SRCSUFF).obj: - *$(CC) -c $(CFLAGS) -I$(INCLUDE) $< - -.rc.res: - *$(RC) -r -I$(INCLUDE) $< - -joytest.exe: joytest.obj joytest.def joytest.res - *$(CC) $(LDFLAGS) -o$@ joytest.obj joytest.def $(LIBS) - *$(RC) -k joytest.res - -clean: - -del *.obj - -del *.exe - -del *.res - -del *.map - -del *.rws diff --git a/samples/joytest/makefile.unx b/samples/joytest/makefile.unx deleted file mode 100644 index 7b60c08bea..0000000000 --- a/samples/joytest/makefile.unx +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1998 -# Updated: -# Copyright: (c) 1998 Julian Smart -# -# "%W% %G%" -# -# Makefile for joytest example (UNIX). - -PROGRAM=joytest - -OBJECTS=$(PROGRAM).o - -include ../../src/makeprog.env - diff --git a/samples/joytest/makefile.vc b/samples/joytest/makefile.vc deleted file mode 100644 index a4ef6737c2..0000000000 --- a/samples/joytest/makefile.vc +++ /dev/null @@ -1,18 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: (c) Julian Smart -# -# Makefile : Builds sample (VC++, WIN32) -# Use FINAL=1 argument to nmake to build final version with no debug info. - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -PROGRAM=joytest -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.vc - diff --git a/samples/joytest/makefile.wat b/samples/joytest/makefile.wat deleted file mode 100644 index 57467717d1..0000000000 --- a/samples/joytest/makefile.wat +++ /dev/null @@ -1,15 +0,0 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 -# -# - -WXDIR = $(%WXWIN) - -PROGRAM = joytest -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - diff --git a/samples/joytest/mondrian.ico b/samples/joytest/mondrian.ico deleted file mode 100644 index 2310c5d275a87af295d5ea8dc79ea417a5e74c53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmZQzU<5)11px*Sc)`TLAO@s0fLH;D9e|jTfdxnc0Zpanel, - - ( leftOf (frame->panel) = leftOf (frame), - topOf (frame->panel) = topOf (frame), - rightOf (frame->panel) = rightOf (frame), - heightOf (frame->panel) = 50 % heightOf (frame) - ) - ); - */ - -// Operator experiments -#define wxCONSTRAINT_OP_REL 1 -#define wxCONSTRAINT_OP_PERCENT 2 -#define wxCONSTRAINT_OP_EDGE 3 -#define wxCONSTRAINT_OP_ABS 4 -#define wxCONSTRAINT_OP_AND 5 - -class wxConstraintOp: public wxObject -{ - public: - int opType; - wxEdge edge; - wxRelationship relationship; - wxWindow *win; - int value; - int margin; - wxConstraintOp *lhs; - wxConstraintOp *rhs; - wxConstraintOp(int typ) - { - opType = typ; - edge = wxLeft; - win = NULL; - value = 0; - margin = 0; - relationship = wxSameAs; - lhs = 0; rhs = 0; - } - wxConstraintOp(const wxConstraintOp& op) - { - opType = op.opType; - edge = op.edge; - relationship = op.relationship; - win = op.win; - value = op.value; - margin = op.margin; - if (op.lhs) - lhs = new wxConstraintOp(*op.lhs); - else - lhs = NULL; - if (op.rhs) - rhs = new wxConstraintOp(*op.rhs); - else - rhs = NULL; - } - ~wxConstraintOp(void) - { - if (lhs) - delete lhs; - if (rhs) - delete rhs; - } - - wxConstraintOp operator = (const wxConstraintOp& arg2); - wxConstraintOp operator = (const int value); - - friend wxConstraintOp operator % (const int perCent, const wxConstraintOp& arg2); - friend wxConstraintOp operator + (wxConstraintOp& arg1, int margin); - friend wxConstraintOp operator - (wxConstraintOp& arg1, int margin); - friend wxConstraintOp operator , (const wxConstraintOp& arg1, const wxConstraintOp& arg2); -}; - -wxConstraintOp leftOf(wxWindow *win) -{ - wxConstraintOp thing(wxCONSTRAINT_OP_EDGE); - thing.win = win; - thing.edge = wxLeft; - return thing; -} - -wxConstraintOp topOf(wxWindow *win) -{ - wxConstraintOp thing(wxCONSTRAINT_OP_EDGE); - thing.win = win; - thing.edge = wxTop; - return thing; -} - -wxConstraintOp widthOf(wxWindow *win) -{ - wxConstraintOp thing(wxCONSTRAINT_OP_EDGE); - thing.win = win; - thing.edge = wxWidth; - return thing; -} - -wxConstraintOp wxConstraintOp::operator = (const wxConstraintOp& arg2) -{ - wxConstraintOp op3(wxCONSTRAINT_OP_REL); - op3.relationship = wxPercentOf; - op3.value = 100; - if ((op3.relationship == wxPercentOf) && (op3.value > 0)) - op3.value = this->value; - op3.lhs = new wxConstraintOp(*this); - op3.rhs = new wxConstraintOp(arg2); - - return op3; -} - -wxConstraintOp wxConstraintOp::operator = (const int value) -{ - wxConstraintOp op3(wxCONSTRAINT_OP_REL); - op3.relationship = wxAbsolute; - - op3.lhs = new wxConstraintOp(*this); - op3.rhs = new wxConstraintOp(wxCONSTRAINT_OP_ABS); - op3.value = value; - - return op3; -} - -wxConstraintOp operator % (const int perCent, const wxConstraintOp& arg2) -{ - wxConstraintOp op3(arg2); - op3.opType = wxCONSTRAINT_OP_EDGE; - op3.value = perCent; - if (op3.value > 0) - op3.value = arg2.value; - - return op3; -} - -wxConstraintOp operator + (wxConstraintOp& arg1, int margin) -{ - wxConstraintOp op3(arg1); - op3.margin = margin; - return op3; -} - -wxConstraintOp operator - (wxConstraintOp& arg1, int margin) -{ - wxConstraintOp op3(arg1); - op3.margin = - margin; - return op3; -} - -wxConstraintOp operator , (const wxConstraintOp& arg1, const wxConstraintOp& arg2) -{ - wxConstraintOp op3(wxCONSTRAINT_OP_AND); - op3.lhs = new wxConstraintOp(arg1); - op3.rhs = new wxConstraintOp(arg2); - - return op3; -} diff --git a/samples/layout/fload.xbm b/samples/layout/fload.xbm deleted file mode 100644 index 27af1f939b..0000000000 --- a/samples/layout/fload.xbm +++ /dev/null @@ -1,11 +0,0 @@ -#define fload_width 30 -#define fload_height 30 -static char fload_bits[] = { - 0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x0f,0xf8,0xff,0xfb,0x0f,0x08,0x00,0xf0, - 0x0f,0xc8,0xff,0xef,0x0f,0x48,0x00,0xf0,0x0f,0x48,0x00,0xf8,0x0f,0x48,0x00, - 0xfc,0x0e,0x48,0x00,0x7f,0x0c,0x48,0xc0,0xbf,0x00,0x48,0xf0,0x9f,0x04,0x48, - 0xfe,0x8f,0x04,0x48,0xff,0x87,0x04,0x48,0x00,0x80,0x04,0x48,0x00,0x80,0x04, - 0x48,0x00,0x80,0x04,0x48,0x00,0x80,0x04,0xc8,0xff,0xff,0x04,0x08,0x00,0x00, - 0x04,0x08,0x00,0x00,0x04,0x08,0xff,0x1f,0x04,0x08,0x01,0x10,0x04,0x08,0x1d, - 0x10,0x04,0x08,0x15,0x10,0x04,0x08,0x15,0x10,0x04,0x08,0x15,0x10,0x04,0x08, - 0x15,0x10,0x04,0x10,0x1d,0x10,0x04,0xe0,0xff,0xff,0x07,0x00,0x00,0x00,0x00}; diff --git a/samples/layout/layout.cpp b/samples/layout/layout.cpp deleted file mode 100644 index e33b97fad9..0000000000 --- a/samples/layout/layout.cpp +++ /dev/null @@ -1,355 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: layout.cpp -// Purpose: Layout sample -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#if !wxUSE_CONSTRAINTS -#error You must set wxUSE_CONSTRAINTS to 1 in wx_setup.h! -#endif - -#include -#include "layout.h" - -// Declare two frames -MyFrame *frame = (MyFrame *) NULL; -wxMenuBar *menu_bar = (wxMenuBar *) NULL; - -IMPLEMENT_APP(MyApp) - -MyApp::MyApp() -{ -} - -bool MyApp::OnInit(void) -{ - // Create the main frame window - frame = new MyFrame((MyFrame *) NULL, (char *) "wxWindows Layout Demo", 0, 0, 550, 500); - - frame->SetAutoLayout(TRUE); - - // Give it a status line - frame->CreateStatusBar(2); - - // Make a menubar - wxMenu *file_menu = new wxMenu; - - file_menu->Append(LAYOUT_LOAD_FILE, "&Load file", "Load a text file"); - file_menu->Append(LAYOUT_TEST, "&Test sizers", "Test sizer code"); - - file_menu->AppendSeparator(); - file_menu->Append(LAYOUT_QUIT, "E&xit", "Quit program"); - - wxMenu *help_menu = new wxMenu; - help_menu->Append(LAYOUT_ABOUT, "&About", "About layout demo"); - - menu_bar = new wxMenuBar; - - menu_bar->Append(file_menu, "&File"); - menu_bar->Append(help_menu, "&Help"); - - // Associate the menu bar with the frame - frame->SetMenuBar(menu_bar); - - // Make a panel - frame->panel = new wxPanel(frame, 0, 0, 1000, 500, wxTAB_TRAVERSAL); - frame->panel->SetBackgroundColour(wxColour(192, 192, 192)); -// frame->panel->SetAutoLayout(TRUE); - - // Create some panel items - wxButton *btn1 = new wxButton(frame->panel, -1, "A button (1)") ; - - 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, -1, - wxPoint(-1, -1), wxSize(200, 100)); - list->Append("Apple"); - list->Append("Pear"); - list->Append("Orange"); - list->Append("Banana"); - list->Append("Fruit"); - - 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); - - wxTextCtrl *mtext = new wxTextCtrl(frame->panel, -1, "Some text", - wxPoint(-1, -1), wxSize(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); - - frame->canvas = new MyWindow(frame, 0, 0, 400, 400, wxRETAINED); - - // Give it scrollbars: the virtual canvas is 20 * 50 = 1000 pixels in each direction -// canvas->SetScrollbars(20, 20, 50, 50, 4, 4); - - // Make a text window - frame->text_window = new MyTextWindow(frame, 0, 250, 400, 250); - - // 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); - - frame->Show(TRUE); - - frame->SetStatusText("wxWindows layout demo"); - - SetTopWindow(frame); - return TRUE; -} - -// Define my frame constructor -MyFrame::MyFrame(wxFrame *frame, char *title, int x, int y, int w, int h): - wxFrame(frame, -1, title, wxPoint(x, y), wxSize(w, h)) -{ - panel = (wxPanel *) NULL; - text_window = (MyTextWindow *) NULL; - canvas = (MyWindow *) NULL; -} - -BEGIN_EVENT_TABLE(MyFrame, wxFrame) - EVT_MENU(LAYOUT_LOAD_FILE, MyFrame::LoadFile) - EVT_MENU(LAYOUT_QUIT, MyFrame::Quit) - EVT_MENU(LAYOUT_TEST, MyFrame::TestSizers) - EVT_MENU(LAYOUT_ABOUT, MyFrame::About) - EVT_SIZE(MyFrame::OnSize) -END_EVENT_TABLE() - -void MyFrame::LoadFile(wxCommandEvent& WXUNUSED(event) ) -{ - wxString s = wxFileSelector("Load text file", (const char *) NULL, (const char *) NULL, (const char *) NULL, "*.txt"); - if (s != "") - { -#ifdef __WXMSW__ - frame->text_window->LoadFile(s); -#endif - } -} - -void MyFrame::Quit(wxCommandEvent& WXUNUSED(event) ) -{ - this->Close(TRUE); -} - -void MyFrame::TestSizers(wxCommandEvent& WXUNUSED(event) ) -{ - SizerFrame *newFrame = new SizerFrame((MyFrame *) NULL, (char *) "Sizer Test Frame", 50, 50, 500, 500); - newFrame->Show(TRUE); -} - -void MyFrame::About(wxCommandEvent& WXUNUSED(event) ) -{ - (void)wxMessageBox("wxWindows GUI library layout demo\n", - "About Layout Demo", wxOK|wxCENTRE); -} - -// Size the subwindows when the frame is resized -void MyFrame::OnSize(wxSizeEvent& WXUNUSED(event) ) -{ - Layout(); -} - -void MyFrame::Draw(wxDC& dc, bool WXUNUSED(draw_bitmaps) ) -{ - dc.SetPen(* wxGREEN_PEN); - dc.DrawLine(0, 0, 200, 200); - dc.DrawLine(200, 0, 0, 200); - - dc.SetBrush(* wxCYAN_BRUSH); - dc.SetPen(* wxRED_PEN); - - dc.DrawRectangle(100, 100, 100, 50); - dc.DrawRoundedRectangle(150, 150, 100, 50, 20); - - dc.DrawEllipse(250, 250, 100, 50); - dc.DrawSpline(50, 200, 50, 100, 200, 10); - dc.DrawLine(50, 230, 200, 230); - - dc.SetPen(* wxBLACK_PEN); - dc.DrawArc(50, 300, 100, 250, 100, 300 ); -} - -BEGIN_EVENT_TABLE(MyWindow, wxWindow) - EVT_PAINT(MyWindow::OnPaint) -END_EVENT_TABLE() - -// Define a constructor for my canvas -MyWindow::MyWindow(wxFrame *frame, int x, int y, int w, int h, long style): - wxWindow(frame, -1, wxPoint(x, y), wxSize(w, h), style) -{ -} - -MyWindow::~MyWindow(void) -{ -} - -// Define the repainting behaviour -void MyWindow::OnPaint(wxPaintEvent& WXUNUSED(event) ) -{ - wxPaintDC dc(this); - frame->Draw(dc,TRUE); -} - -// Define the behaviour for the frame closing -// - must delete all frames except for the main one. -bool MyFrame::OnClose(void) -{ - Show(FALSE); - - return TRUE; -} - -SizerFrame::SizerFrame(wxFrame *frame, char *title, int x, int y, int w, int h): - wxFrame(frame, -1, title, wxPoint(x, y), wxSize(w, h)) -{ - panel = new wxPanel(this, -1, wxPoint(0, 0), wxSize(-1, -1), wxTAB_TRAVERSAL); - panel->SetBackgroundColour(wxColour(192, 192, 192)); - - // A sizer to fit the whole panel, plus two sizers, one - // above the other. A button is centred on the lower - // sizer; a rowcol containing 3 buttons is centred on the upper - // sizer. - wxSizer *expandSizer = new wxSizer(panel, wxSizerExpand); - expandSizer->SetName("expandSizer"); - - wxLayoutConstraints *c; - - /////// TOP OF PANEL - /////// - wxSizer *topSizer = new wxSizer(expandSizer); - topSizer->SetName("topSizer"); - - // Specify constraints for the top sizer - c = new wxLayoutConstraints; - c->left.SameAs (expandSizer, wxLeft); - c->top.SameAs (expandSizer, wxTop); - c->right.SameAs (expandSizer, wxRight); - c->height.PercentOf (expandSizer, wxHeight, 50); - - topSizer->SetConstraints(c); - - /* - * Add a row-col sizer and some buttons - */ - - // Default is layout by rows, 20 columns per row, shrink to fit. - wxRowColSizer *rowCol = new wxRowColSizer(topSizer); - rowCol->SetName("rowCol"); - - wxButton *button = new wxButton(panel, -1, "Button 1"); - rowCol->AddSizerChild(button); - - button = new wxButton(panel, -1, "Button 2"); - rowCol->AddSizerChild(button); - - button = new wxButton(panel, -1, "Button 3"); - rowCol->AddSizerChild(button); - - // Centre the rowcol in the middle of the upper sizer - c = new wxLayoutConstraints; - c->centreX.SameAs (topSizer, wxCentreX); - c->centreY.SameAs (topSizer, wxCentreY); - c->width.AsIs(); - c->height.AsIs(); - rowCol->SetConstraints(c); - - /////// BOTTOM OF PANEL - /////// - wxSizer *bottomSizer = new wxSizer(expandSizer); - - // Specify constraints for the bottom sizer - c = new wxLayoutConstraints; - c->left.SameAs (expandSizer, wxLeft); - c->top.PercentOf (expandSizer, wxHeight, 50); - c->right.SameAs (expandSizer, wxRight); - c->height.PercentOf (expandSizer, wxHeight, 50); - - bottomSizer->SetConstraints(c); - - wxButton *button2 = new wxButton(panel, -1, "Test button"); - - // The button should be a child of the bottom sizer - bottomSizer->AddSizerChild(button2); - - // Centre the button on the sizer - c = new wxLayoutConstraints; - c->centreX.SameAs (bottomSizer, wxCentreX); - c->centreY.SameAs (bottomSizer, wxCentreY); - c->width.PercentOf (bottomSizer, wxWidth, 20); - c->height.PercentOf (bottomSizer, wxHeight, 20); - button2->SetConstraints(c); -} - -BEGIN_EVENT_TABLE(SizerFrame, wxFrame) - EVT_SIZE(SizerFrame::OnSize) -END_EVENT_TABLE() - - -// Size the subwindows when the frame is resized -void SizerFrame::OnSize(wxSizeEvent& event) -{ - wxFrame::OnSize(event); - panel->Layout(); -} - -bool SizerFrame::OnClose(void) -{ - Show(FALSE); - - return TRUE; -} - diff --git a/samples/layout/layout.def b/samples/layout/layout.def deleted file mode 100644 index 0a7e3cb840..0000000000 --- a/samples/layout/layout.def +++ /dev/null @@ -1,9 +0,0 @@ -NAME Layout -DESCRIPTION 'Layout' -EXETYPE WINDOWS -STUB 'WINSTUB.EXE' -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE -HEAPSIZE 1024 -STACKSIZE 16192 - diff --git a/samples/layout/layout.h b/samples/layout/layout.h deleted file mode 100644 index 83aca0d956..0000000000 --- a/samples/layout/layout.h +++ /dev/null @@ -1,79 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: layout.h -// Purpose: Layout sample -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -// Define a new application -class MyApp: public wxApp -{ - public: - MyApp(void) ; - bool OnInit(void); -}; - -// Define a new frame -class MyTextWindow; -class MyWindow; - -class MyFrame: public wxFrame -{ - public: - wxPanel *panel; - MyTextWindow *text_window; - MyWindow *canvas; - MyFrame(wxFrame *frame, char *title, int x, int y, int w, int h); - void OnSize(wxSizeEvent& event); - bool OnClose(void); - void Draw(wxDC& dc, bool draw_bitmaps = TRUE); - - void LoadFile(wxCommandEvent& event); - void Quit(wxCommandEvent& event); - void TestSizers(wxCommandEvent& event); - void About(wxCommandEvent& event); - - DECLARE_EVENT_TABLE() -}; - -// Define a new text subwindow that can respond to drag-and-drop -class MyTextWindow: public wxTextCtrl -{ - public: - MyTextWindow(wxFrame *frame, int x=-1, int y=-1, int width=-1, int height=-1, - long style=wxTE_MULTILINE): - wxTextCtrl(frame, -1, "", wxPoint(x, y), wxSize(width, height), style) - { - } -}; - -// Define a new canvas which can receive some events -class MyWindow: public wxWindow -{ - public: - MyWindow(wxFrame *frame, int x, int y, int w, int h, long style = wxRETAINED); - ~MyWindow(void) ; - void OnPaint(wxPaintEvent& event); - - DECLARE_EVENT_TABLE() -}; - -class SizerFrame: public wxFrame -{ - public: - wxPanel *panel; - SizerFrame(wxFrame *frame, char *title, int x, int y, int w, int h); - void OnSize(wxSizeEvent& event); - bool OnClose(void); - - DECLARE_EVENT_TABLE() -}; - -#define LAYOUT_QUIT 100 -#define LAYOUT_TEST 101 -#define LAYOUT_ABOUT 102 -#define LAYOUT_LOAD_FILE 103 diff --git a/samples/layout/layout.rc b/samples/layout/layout.rc deleted file mode 100644 index b86c4e2265..0000000000 --- a/samples/layout/layout.rc +++ /dev/null @@ -1 +0,0 @@ -#include "wx/msw/wx.rc" diff --git a/samples/layout/makefile.b32 b/samples/layout/makefile.b32 deleted file mode 100644 index efb6636e03..0000000000 --- a/samples/layout/makefile.b32 +++ /dev/null @@ -1,16 +0,0 @@ -# -# File: makefile.b32 -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: -# -# Makefile : Builds sample for 32-bit BC++ - -WXDIR = $(WXWIN) - -TARGET=layout -OBJECTS = $(TARGET).obj - -!include $(WXDIR)\src\makeprog.b32 - diff --git a/samples/layout/makefile.bcc b/samples/layout/makefile.bcc deleted file mode 100644 index 6d0313558a..0000000000 --- a/samples/layout/makefile.bcc +++ /dev/null @@ -1,19 +0,0 @@ -# -# File: makefile.bcc -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Builds a BC++ 16-bit sample - -!if "$(WXWIN)" == "" -!error You must define the WXWIN variable in autoexec.bat, e.g. WXWIN=c:\wx -!endif - -WXDIR = $(WXWIN) - -TARGET=layout -OBJECTS=$(TARGET).obj - -!include $(WXDIR)\src\makeprog.bcc - diff --git a/samples/layout/makefile.dos b/samples/layout/makefile.dos deleted file mode 100644 index e963c12e94..0000000000 --- a/samples/layout/makefile.dos +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.dos -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Makefile : Builds 16-bit sample, VC++ 1.5 -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -WXDIR = $(WXWIN) - -TARGET=layout -OBJECTS = $(TARGET).obj - -!include $(WXDIR)\src\makeprog.msc - diff --git a/samples/layout/makefile.g95 b/samples/layout/makefile.g95 deleted file mode 100644 index df9f97e246..0000000000 --- a/samples/layout/makefile.g95 +++ /dev/null @@ -1,35 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile for layout example (UNIX). - -WXDIR = ../.. - -# All common UNIX compiler flags and options are now in -# this central makefile. -include $(WXDIR)/src/makeg95.env - -OBJECTS=$(OBJDIR)/layout.$(OBJSUFF) $(OBJDIR)/layout_resources.o - -all: $(OBJDIR) layout.exe - -$(OBJDIR): - mkdir $(OBJDIR) - -layout.exe: $(OBJECTS) $(WXLIB) - $(CC) $(LDFLAGS) -o layout$(GUISUFFIX)$(EXESUFF) $(OBJECTS) $(LDLIBS) - -$(OBJDIR)/layout.$(OBJSUFF): layout.$(SRCSUFF) layout.h - $(CC) -c $(CPPFLAGS) -o $@ layout.$(SRCSUFF) - -$(OBJDIR)/layout_resources.o: layout.rc - $(RESCOMP) -i layout.rc -o $(OBJDIR)/layout_resources.o $(RESFLAGS) - -clean: - rm -f $(OBJECTS) layout$(GUISUFFIX).exe core *.res *.rsc diff --git a/samples/layout/makefile.sc b/samples/layout/makefile.sc deleted file mode 100644 index 0b28430453..0000000000 --- a/samples/layout/makefile.sc +++ /dev/null @@ -1,37 +0,0 @@ -# Symantec C++ makefile for layout example -# NOTE that peripheral libraries are now dealt in main wxWindows makefile. - -WXDIR = $(WXWIN) -!include $(WXDIR)\src\makesc.env - -WXLIB = $(WXDIR)\lib\wx.lib -INCDIR = $(WXDIR)\include -MSWINC = $(INCDIR)\msw -BASEINC = $(INCDIR)\base - -CC=sc -RC=rc -CFLAGS = -o -ml -W -Dwx_msw -LDFLAGS = -ml -W - -INCLUDE=$(BASEINC);$(MSWINC) - -LIBS=$(WXLIB) libw.lib commdlg.lib shell.lib - -.$(SRCSUFF).obj: - *$(CC) -c $(CFLAGS) -I$(INCLUDE) $< - -.rc.res: - *$(RC) -r -I$(INCLUDE) $< - -layout.exe: layout.obj layout.def layout.res - *$(CC) $(LDFLAGS) -o$@ layout.obj layout.def $(LIBS) - *$(RC) -k layout.res - -clean: - -del *.obj - -del *.exe - -del *.res - -del *.map - -del *.rws - diff --git a/samples/layout/makefile.unx b/samples/layout/makefile.unx deleted file mode 100644 index ff2edfa6ce..0000000000 --- a/samples/layout/makefile.unx +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1998 -# Updated: -# Copyright: (c) 1998 Julian Smart -# -# "%W% %G%" -# -# Makefile for layout example (UNIX). - -PROGRAM=layout - -OBJECTS=$(PROGRAM).o - -include ../../src/makeprog.env - diff --git a/samples/layout/makefile.vc b/samples/layout/makefile.vc deleted file mode 100644 index 95590f8f6f..0000000000 --- a/samples/layout/makefile.vc +++ /dev/null @@ -1,18 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: (c) Julian Smart -# -# Makefile : Builds sample (VC++, WIN32) -# Use FINAL=1 argument to nmake to build final version with no debug info. - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -PROGRAM=layout -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.vc - diff --git a/samples/layout/makefile.vms b/samples/layout/makefile.vms deleted file mode 100644 index f47d52031b..0000000000 --- a/samples/layout/makefile.vms +++ /dev/null @@ -1,41 +0,0 @@ -#************************************************************************ -# Makefile for LAYOUT under VMS -# by Stefan Hammes -# (incomplete) update history: -# 14.05.95 -#************************************************************************ - -#************************************************************************ -# Definition section -# (cave: definitions and includes must begin with ',') -#************************************************************************ - -APPOPTS = -APPDEFS = -APPINCS = - -#************************************************************************ -# Module section -#************************************************************************ - -# Name of main module -MAIN = layout - -# Object modules of the application. -OBJS = layout.obj -OBJLIST =layout.obj - -.include [--.src]makevms.env - -# main dependency -$(MAIN).exe : $(OBJS) - $(LINK) $(LINKFLAGS) /exec=$(MAIN).exe $(OBJLIST),$(WXLIB)/lib,$(OPTSFILE)/option - - purge *.exe - -#************************************************************************ -# Header file depedencies following -#************************************************************************ - -layout.obj : layout.cc layout.h - - diff --git a/samples/layout/makefile.wat b/samples/layout/makefile.wat deleted file mode 100644 index a4b3f2e8f9..0000000000 --- a/samples/layout/makefile.wat +++ /dev/null @@ -1,15 +0,0 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 -# -# - -WXDIR = $(%WXWIN) - -PROGRAM = layout -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - diff --git a/samples/listctrl/.cvsignore b/samples/listctrl/.cvsignore deleted file mode 100644 index 7957c41216..0000000000 --- a/samples/listctrl/.cvsignore +++ /dev/null @@ -1,3 +0,0 @@ -Linux -linux-gnu -linux \ No newline at end of file diff --git a/samples/listctrl/Makefile b/samples/listctrl/Makefile deleted file mode 100644 index bccce53f76..0000000000 --- a/samples/listctrl/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../../setup/general/makeapp diff --git a/samples/listctrl/Makefile.in b/samples/listctrl/Makefile.in deleted file mode 100644 index dc00e01888..0000000000 --- a/samples/listctrl/Makefile.in +++ /dev/null @@ -1,26 +0,0 @@ -# WXXT base directory -WXBASEDIR=@WXBASEDIR@ - -# set the OS type for compilation -OS=@OS@ -# compile a library only -RULE=bin - -# define library name -BIN_TARGET=listtest -# define library sources -BIN_SRC=\ -listtest.cpp - -#define library objects -BIN_OBJ=\ -listtest.o - -# additional things needed to link -BIN_LINK= - -# additional things needed to compile -ADD_COMPILE= - -# include the definitions now -include ../../../template.mak diff --git a/samples/listctrl/bitmaps/small1.ico b/samples/listctrl/bitmaps/small1.ico deleted file mode 100644 index 2d650d58c962a9a5113639d0dc078c1ea4c03d82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1078 zcmeH`F%H5o3`KtmGwBV;gnA5)mOC&pag`pR2Vv}53CTPsP*Kr^i2;7|{T4!cqpF2v^8Mt1|ir$7{^7}%g)qZ@;N8cK=G4dK> a`b|sMn@jkrjqLUsGxeE!@)y=UJ%u~E!}Ey% diff --git a/samples/listctrl/bitmaps/small1.xpm b/samples/listctrl/bitmaps/small1.xpm deleted file mode 100644 index 98b4bb20f6..0000000000 --- a/samples/listctrl/bitmaps/small1.xpm +++ /dev/null @@ -1,27 +0,0 @@ -/* XPM */ -static char * small1_xpm[] = { -/* width height ncolors chars_per_pixel */ -"16 16 5 1", -/* colors */ -" s None c None", -". c #000000", -"+ c #ff0000", -"@ c #0000ff", -"# c #ffffff", -/* pixels */ -" ", -" ", -" ########## ", -" #........# ", -" #........# ", -" #........# ", -" #..########### ", -" #..#+++++++++# ", -" ####++#####++# ", -" #+#@@@@@#+# ", -" #+#@@@@@#+# ", -" #+#@@@@@#+# ", -" #++#####++# ", -" #+++++++++# ", -" ########### ", -" "}; diff --git a/samples/listctrl/bitmaps/toolbrai.ico b/samples/listctrl/bitmaps/toolbrai.ico deleted file mode 100644 index 99069f7c67320fd7e1cf63f6ee9c0c2888e7069d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcma)4y-ve05WbK~*%Bt!WaKTH!3ztIMEnq4{3Hw@;s-$@Lk9*VvQepNj_-VqTdE>B z=R4oscR#ijq718Pu1Vzmis%OWEzkfhkkJYn0`9U{B79`6ZqP8vdyicR4j(a#1z<@? z)GuPp4`St9s{s?3mHZPJ9~9{Ez^()zK6ZN>s#Fp?9fe zQYs0?+^ZRMX`I`%$ACXEe`J0|%}@aO5hMJM hn)&UMx&LDB_Pkpkc&z7YsHS49r((CBkTj!Mgz}rHxAeBL12A1hx8wdNzED%9JWo7^Y`-NeVsyue8_f>~eJg z9k0GWK=StieA6GPJ@rKG@JUNy?X?7eH$ren%Md9gdKI$W$XOAUmmry!5-Dq8r!>Z? zBAzxzO$%UbpmkU$zHE6l(2OW(RYUe1r&$ z)Fj+QvAFmA=iIxDWqcdyW1sT2rPo)xMz%;3e5eO~rChb~`%^9A_*2Ywb{KLcM0*hm9^!K!#8l_#G{|IAsMso6S1XX#9x FeFHZg6}12W diff --git a/samples/listctrl/bitmaps/toolchar.xpm b/samples/listctrl/bitmaps/toolchar.xpm deleted file mode 100644 index 7943907597..0000000000 --- a/samples/listctrl/bitmaps/toolchar.xpm +++ /dev/null @@ -1,42 +0,0 @@ -/* XPM */ -static char * toolchar_xpm[] = { -/* width height ncolors chars_per_pixel */ -"32 32 4 1", -/* colors */ -" s None c None", -". c #000000", -"+ c #ff0000", -"@ c #ffff00", -/* pixels */ -" ........ ", -" ...@@@@@@@@... ", -" ..@@@@@@@@@@@@@@.. ", -" ..@@@@@@@@@@@@@@@@.. ", -" .@@@@@@@@@@@@@@@@@@@@. ", -" .@@@@@@@@@@@@@@@@@@@@@@. ", -" .@@@@@@@@@@@@@@@@@@@@@@@@. ", -" ..@@@@@@@@@@@@@@@@@@@@@@@@.. ", -" .@@@@@@@@..@@@@@@..@@@@@@@@. ", -" .@@@@@@@@....@@@@....@@@@@@@@. ", -" .@@@@@@@@....@@@@....@@@@@@@@. ", -" .@@@@@@@@....@@@@....@@@@@@@@. ", -".@@@@@@@@@....@@@@....@@@@@@@@@.", -".@@@@@@@@@....@@@@....@@@@@@@@@.", -".@@@@@@@@@@..@@@@@@..@@@@@@@@@@.", -".@@@@@@@.@@@@@@@@@@@@@@.@@@@@@@.", -".@@@@@@@.@@@@@@@@@@@@@@.@@@@@@@.", -".@@@@@@.@@@@@@@@@@@@@@@@.@@@@@@.", -".@@@....@@@@@@@@@@@@@@@@....@@@.", -".@@@@@@@.@@@@@@@@@@@@@@.@@@@@@@.", -" .@@@@@@@.@@@@@@@@@@@@.@@@@@@@. ", -" .@@@@@@@..@@@@@@@@@@..@@@@@@@. ", -" .@@@@@@@@...@@@@@@...@@@@@@@@. ", -" .@@@@@@@@.+......+.@@@@@@@@. ", -" ..@@@@@@@@.++++++.@@@@@@@@.. ", -" .@@@@@@@@@.++++.@@@@@@@@@. ", -" .@@@@@@@@@....@@@@@@@@@. ", -" .@@@@@@@@@@@@@@@@@@@@. ", -" ..@@@@@@@@@@@@@@@@.. ", -" ..@@@@@@@@@@@@@@.. ", -" ...@@@@@@@@... ", -" ........ "}; diff --git a/samples/listctrl/bitmaps/toolchec.ico b/samples/listctrl/bitmaps/toolchec.ico deleted file mode 100644 index d64e0105a221a5ef0d109485c3c1d7377678d263..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmeIwu?@mN429trL`gwKg_J9qf-o6(8)PJ|V+@dJ=m1d=M2Pbn5HxH6@9wj$SV|E^ zDmWpG<=GFU34Mlu1quzRgx&WfiK~>JjmoH;Gu;>VxH9tz9Dn5HpP&8$`~#od8Lv2E ri;NV_M$x)yW$nDOW?5QeC5!rHP2b^+6Z{1&x=3*=Y;eE@H@wpWy>5zR diff --git a/samples/listctrl/bitmaps/toolchec.xpm b/samples/listctrl/bitmaps/toolchec.xpm deleted file mode 100644 index 9f4a45d753..0000000000 --- a/samples/listctrl/bitmaps/toolchec.xpm +++ /dev/null @@ -1,40 +0,0 @@ -/* XPM */ -static char * toolchec_xpm[] = { -/* width height ncolors chars_per_pixel */ -"32 32 2 1", -/* colors */ -" s None c None", -". c #000000", -/* pixels */ -" ", -" ", -" ", -" . ", -" . ", -" . ", -" . ", -" . ", -" . ", -" .. ", -" .. ", -" .. ", -" ... ", -" .. ", -" ... ", -" ... ", -" ... ", -" ... ", -" ... ... ", -" .... .... ", -" .... ... ", -" .... .... ", -" .... ... ", -" ........ ", -" ...... ", -" ..... ", -" .... ", -" .. ", -" . ", -" ", -" ", -" "}; diff --git a/samples/listctrl/bitmaps/tooldata.ico b/samples/listctrl/bitmaps/tooldata.ico deleted file mode 100644 index 4cdd40a5d08f08fda9155fde61acea05b4eba67c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmah{F>ZuF3^ciuRusrrr440%ad}cY=ysowHoxHs>7x5Ul9CRJQ=FOg!Xb20471+x z%o>9bsc^OJNf=A_iKK~$UKr`=SwzGR0lDENj47%T6(jw7r*s~ZlPrTp#61IalcLvfxC zXFd@14bMX^9C_8erehh+DUNPA=Dl%P*?Mi@+{UGO;S2pY4-#yUgC(f|VWS9~fhRzL m033FxX8e{{c<$hQMK9tPeNCc$9it@z`-HzPRRE-KyvZN@WZ_2u diff --git a/samples/listctrl/bitmaps/tooldata.xpm b/samples/listctrl/bitmaps/tooldata.xpm deleted file mode 100644 index f24d5042d5..0000000000 --- a/samples/listctrl/bitmaps/tooldata.xpm +++ /dev/null @@ -1,45 +0,0 @@ -/* XPM */ -static char * tooldata_xpm[] = { -/* width height ncolors chars_per_pixel */ -"32 32 7 1", -/* colors */ -" s None c None", -". c #000000", -"+ c #c0c0c0", -"@ c #808080", -"# c #ff0000", -"$ c #ff00ff", -"% c #ffffff", -/* pixels */ -" .. ", -" ............. ", -" %%..%%%%%%%%%. ", -" %%..%%%%%%%%%%. ", -" %%..%%%%%%%..%%. ", -" ......%%%%%. .%. ", -" .. .%%%%. .%. ", -" ...%%..%. ", -" .....%%........ ", -" .%%%%%...%%%%%%%. ", -" .%%%%%%%%%%%%%%%. ", -" .%+++++++++%%%%%.... ", -" .%%%%%%%%%%%%%%%.%%%. ", -" .%+++++%%%%%%%%%..%%. ", -" .%%%%%%%%%%%%%%%.%.%. ", -" .%+++++++%+%%%%%.%.%. ", -" .%%%%%%%%%%%%%%%.%.%. ", -" ...............%%.%.%..... ", -" .%%%%%%%%%%%%%%%.%.%.%.#$#. ", -" .%%%%%%%+%%%%%%%...%.%.$#. ", -" .%%@+@+@+@+%%%%%.%%%.%.... ", -" .%%%%%+%%%%%%%%%.%%%.%.+.. ", -" .%%@+@+@+%%%%%%%.%%%....#. ", -" .%%%+%+%%%%%%%+%.%%%.+.#. ", -" .%%@+@+@+@+%%+%%......#. ", -" .%+%+%%%%%%%+%+%.$$+.#. ", -" .+%+@.%%%@.+%+%%.$+.#. ", -" .%%%.+%%%.+%%%%%.+.#. ", -" .....................#. ", -" .################.+.#. ", -" .#$#$#$#$#$#$#$#$.#. ", -" ................... "}; diff --git a/samples/listctrl/bitmaps/toolgame.ico b/samples/listctrl/bitmaps/toolgame.ico deleted file mode 100644 index 3174273bee5d3fcc4515b353756de0e14cc562b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmbtSF>-@25L`lL7+0i93uS)c{LCs{xb>!5Tlv`4qyYy)HNCVi}Wc4`T=hlt!&xy6+b~hKhse`hZt~RmZ!9~6SPxL zrX(II$tMVKYMadp79S75lg4LZBfJO>kLnfDevbg?LkQPFy{3pUYBYiQ18Fls%~IC= z5wW@vqEB&_5cM;I(KH#1vL6kZlA|H3=Z2%flcJ+RYeoCrXvperZZMVoWS}Syc?Z>u z@+>t7zN)Uj=@~q`V@g#lYMqzhe0Nm+Rn*Bke+SWUkZv>qOQ|WLS{bj=Y7vu{Kl8Hi zGJ^pyp>7*p0G9cRlqic-%KRNnZN7GyuTgqC;D-V2G__fIOaCd~ZFWbk8dAS}DOBHr zj4nTo3(yE#VJ-LpC{)DaJ;3dw-ekDh$mwl5Wi0*HY3+d5hUmz>wqKLOR!20XGCT>N Gg2fjcwd?5s diff --git a/samples/listctrl/bitmaps/toolnote.xpm b/samples/listctrl/bitmaps/toolnote.xpm deleted file mode 100644 index 16835eccbc..0000000000 --- a/samples/listctrl/bitmaps/toolnote.xpm +++ /dev/null @@ -1,46 +0,0 @@ -/* XPM */ -static char * toolnote_xpm[] = { -/* width height ncolors chars_per_pixel */ -"32 32 8 1", -/* colors */ -" s None c None", -". c #000000", -"+ c #800000", -"@ c #c0c0c0", -"# c #808080", -"$ c #ffff00", -"% c #0000ff", -"& c #ffffff", -/* pixels */ -" ", -" .. ", -" .$. ", -" .$. ", -" .$. ", -" .$. ", -" .$. ", -" .$.... ", -" ...$.&&. #.. ", -" .&&&.$.&&. ...&&# ", -" ..&&&&&.$.@&..$&..&. ", -" ....&&&&&&&@.$.@&.&&.&.. #.. ", -".%%.&&&&&&&&@..$.@.&#.##&...&&# ", -".%+.&&&&&&&&@. .$..&&&&&&&&..&. ", -".%%.&&&&&&&&&......##&&&&&&.&.. ", -".%%.@&&&&&&&&&&@@@..&##&&&#.##&.", -".%%..@@..&&&&&&....+.&&##&&&&&..", -".%.%... ......&&&#..&&&&##&&.&.", -" .%.%.. .$&@&&&&&$#.&&&&&$.&.%", -" .... .&&&&@@&&&&&&##&&&.&.% ", -" .&&&&&&$@@&&&&&$&&.&.% ", -" .&&&@@&&&&&@@&&&&&.&.% ", -" .&&&&$&@@&&&&$@@&&.&.% ", -" ...&&&&&&@@&&&&&&.&.% ", -" .&&..&&&&$&@@&&&.&.% ", -" %..&&..&&&&&&&&.&.% ", -" %..&&..&&&&$.&.% ", -" %..&&..&&.&.% ", -" %..&&..&.% ", -" %..&&.% ", -" %..% ", -" "}; diff --git a/samples/listctrl/bitmaps/tooltime.ico b/samples/listctrl/bitmaps/tooltime.ico deleted file mode 100644 index b769904f4d4cd334ab4753238c057338fefa6189..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmbV~J#vFE5QQJHXGrH%X-%11Bu7f8bf~2Bl{kvalys)ZWb>^-LS`~}#w$H(pWglm z4N}Eunisi!KS{6bZ=eAmpwgZdL;K&N#8iya#)_-H@7Z0j>y(*$fZ<2JJY-$h#jV7z zZT%3it^8H}z)g#WbqlvH7jW5Z%r|PCo-FZe__!q0W+9wNm}p287# c6I9tRzm4NZYQcMfHfcs&&Pg@awY?wq2bTB6kpKVy diff --git a/samples/listctrl/bitmaps/tooltime.xpm b/samples/listctrl/bitmaps/tooltime.xpm deleted file mode 100644 index 629f273955..0000000000 --- a/samples/listctrl/bitmaps/tooltime.xpm +++ /dev/null @@ -1,43 +0,0 @@ -/* XPM */ -static char * tooltime_xpm[] = { -/* width height ncolors chars_per_pixel */ -"32 32 5 1", -/* colors */ -" s None c None", -". c #000000", -"+ c #c0c0c0", -"@ c #808080", -"# c #ffffff", -/* pixels */ -" ", -" ....... ", -" .#+++++@. ", -" ......... ", -" .#+++++@. ", -" ......... ", -" .#++++++++. ", -" ........... ", -" ...+++++++... ", -" .+++#####+++. ", -" .++####.####++. ", -" .++#####.+####++. ", -" .+######.+#####+. ", -" .++######.+######@. ", -" .+#######.+######@.. ", -" .+###....@+######@.+ ", -" .+####++++@######@.. ", -" .++########@####@@. ", -" .+#########@###@. ", -" .++###########@@. ", -" .++#########@@. ", -" .++######@@@. ", -" ...@@@@@@@... ", -" ........... ", -" .#++++++++. ", -" ......... ", -" .+@@@@@@. ", -" ......... ", -" .@@@@@@@. ", -" ....... ", -" ", -" "}; diff --git a/samples/listctrl/bitmaps/tooltodo.ico b/samples/listctrl/bitmaps/tooltodo.ico deleted file mode 100644 index c6314c6baf7b058325e4cc51a94baeae43b4abe1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmbVKF>b>!3_LXfA|Qi1WsS!^qfg2Y$}Ivqt~pJJ^>rr7osL!35O*$h1|Rdzy*=sP;-l>X=shmyr613f}e$`dH zVZQ!)DS3da5c6dex$}1=kNxC`;&01`y@WSnORR_m;V#I}WyNL-!i_NM|M1qGzf=v~ Mx9U%&`ny&A1G3v5RsaA1 diff --git a/samples/listctrl/bitmaps/tooltodo.xpm b/samples/listctrl/bitmaps/tooltodo.xpm deleted file mode 100644 index 0bc6cc482a..0000000000 --- a/samples/listctrl/bitmaps/tooltodo.xpm +++ /dev/null @@ -1,44 +0,0 @@ -/* XPM */ -static char * tooltodo_xpm[] = { -/* width height ncolors chars_per_pixel */ -"32 32 6 1", -/* colors */ -" s None c None", -". c #000000", -"+ c #c0c0c0", -"@ c #808080", -"# c #ffff00", -"$ c #ffffff", -/* pixels */ -" @@@@ ", -" @+...@ ", -" @+. @ ", -" @. @. ", -" @. @. ", -".....@......................... ", -".#$#$@.#$#$#$#$#$#$#$#$#$#$#$#.@", -".$#$#@.$#$#$#$@$#$#$#$#$#$#$#$.@", -".#$#$@.#$#$#$#@.$#$#$#$#$#$#$#.@", -".$#$#@.$#$#$#$@.#$#$#$#$#$#$#$.@", -".#$#$@.#$#$#$#@.$#$#$#$#$#$#$#.@", -".$#$#@.$#$#$#$@.#$#$#$#$#$#$#$.@", -".#$#$@.#$#$#$#@.$#$#$#$#$#$#$#.@", -".$#$#@.$#$#$#$@.#$#$#$#$#$#$#$.@", -".#$#$@.#@@@@@@@.@@@@@@@@@@@@@@.@", -".$#$#@.$#$#$#$@.#$#$#$#$#$#$#$.@", -".#$#$@.#$#$#$#@.$#$#$#$#$#$#$#.@", -".$#$#@.$#$#$#$@.#$#$#$#$#$#$#..@", -".#$#$@.#$#$#$#@.$#$#$#$#$#$#$.@@", -".$#$#@.$#$#$#$@.#$#$#$#$#$#$#.@ ", -".#$#$@.#$#$#$#@.$#$#$#$#$#$#..@ ", -".$#$#@.$#$#$#$@.#$#$#$#$#$#..@@ ", -".#$#$@.#@@@@@@@.@@@@@@......@@ ", -".$#$#@.$#$#$#$@.#$#$#..@@@@@@ ", -".#$#$#@#$#$#$@+.$#$#$.@@ ", -".$#$#$#@#$#$@+.$#$#$..@ ", -".#$#$#$#@@@@+.$#$#$..@@ ", -".$#$#$#$#....$#$#$..@@ ", -".#$#$#$#$#$#$#$...@@@ ", -".$#$#$#...#$#$..@@@ ", -".......@@@....@@@ ", -" @@@@@@@ @@@@ "}; diff --git a/samples/listctrl/bitmaps/toolword.ico b/samples/listctrl/bitmaps/toolword.ico deleted file mode 100644 index a1a8838c276178deae7c6d9defd32b2909ace453..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmcIiI}XAy41KMTItCUN1~PJt9)+6_!NqbEM#hc|2=nY#QQRUVBzWnIf3fwN7HGI) zTtjhdfi3NUjATzXSaBy@k`Jo!tW9YrqwP^K<2^$3M0Uh9MxO$Wba diff --git a/samples/listctrl/bitmaps/toolword.xpm b/samples/listctrl/bitmaps/toolword.xpm deleted file mode 100644 index 7c615cdde0..0000000000 --- a/samples/listctrl/bitmaps/toolword.xpm +++ /dev/null @@ -1,41 +0,0 @@ -/* XPM */ -static char * toolword_xpm[] = { -/* width height ncolors chars_per_pixel */ -"32 32 3 1", -/* colors */ -" s None c None", -". c #000000", -"+ c #ffffff", -/* pixels */ -" ", -" ", -" ........ ........ ", -" .++++++. ...........++++++. ", -" .++++++. .++++++++..++++++. ", -" ........ .++++++++......... ", -" .++++++++. ", -" .......... ", -" ", -" ", -" ", -" ..... ", -"...... ......... .+++. .........", -".++++. .+++++++. .+++. .+++++++.", -".++++. .+++++++. .+++. .+++++++.", -".++++. .+++++++. ..... .+++++++.", -"...... ......... .........", -" ", -" ", -" ", -" ", -" .......... ", -" .. .++++++++. ", -" .++. .++++++++. ", -" .++++. .++++++++. ", -" .++++. .......... ", -" ...........+++. ", -" .++++++++. .+. ", -" .++++++++. . ", -" .......... ", -" ", -" "}; diff --git a/samples/listctrl/listtest.cpp b/samples/listctrl/listtest.cpp deleted file mode 100644 index 8f17b941d9..0000000000 --- a/samples/listctrl/listtest.cpp +++ /dev/null @@ -1,477 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: listctrl.cpp -// Purpose: wxListCtrl sample -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation -#pragma interface -#endif - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#ifndef __WXMSW__ -#include "mondrian.xpm" -#endif - -#include "wx/listctrl.h" -#include "listtest.h" - -BEGIN_EVENT_TABLE(MyFrame, wxFrame) - EVT_MENU(LIST_QUIT, MyFrame::OnQuit) - EVT_MENU(LIST_ABOUT, MyFrame::OnAbout) - EVT_MENU(LIST_LIST_VIEW, MyFrame::OnListView) - EVT_MENU(LIST_REPORT_VIEW, MyFrame::OnReportView) - EVT_MENU(LIST_ICON_VIEW, MyFrame::OnIconView) - EVT_MENU(LIST_ICON_TEXT_VIEW, MyFrame::OnIconTextView) - EVT_MENU(LIST_SMALL_ICON_VIEW, MyFrame::OnSmallIconView) - EVT_MENU(LIST_SMALL_ICON_TEXT_VIEW, MyFrame::OnSmallIconTextView) - EVT_MENU(LIST_DESELECT_ALL, MyFrame::OnDeselectAll) - EVT_MENU(LIST_SELECT_ALL, MyFrame::OnSelectAll) -END_EVENT_TABLE() - -BEGIN_EVENT_TABLE(MyListCtrl, wxListCtrl) - EVT_LIST_BEGIN_DRAG(LIST_CTRL, MyListCtrl::OnBeginDrag) - EVT_LIST_BEGIN_RDRAG(LIST_CTRL, MyListCtrl::OnBeginRDrag) - EVT_LIST_BEGIN_LABEL_EDIT(LIST_CTRL, MyListCtrl::OnBeginLabelEdit) - EVT_LIST_END_LABEL_EDIT(LIST_CTRL, MyListCtrl::OnEndLabelEdit) - EVT_LIST_DELETE_ITEM(LIST_CTRL, MyListCtrl::OnDeleteItem) - EVT_LIST_GET_INFO(LIST_CTRL, MyListCtrl::OnGetInfo) - EVT_LIST_SET_INFO(LIST_CTRL, MyListCtrl::OnSetInfo) - EVT_LIST_ITEM_SELECTED(LIST_CTRL, MyListCtrl::OnSelected) - EVT_LIST_ITEM_DESELECTED(LIST_CTRL, MyListCtrl::OnDeselected) - EVT_LIST_KEY_DOWN(LIST_CTRL, MyListCtrl::OnListKeyDown) - EVT_LIST_ITEM_ACTIVATED(LIST_CTRL, MyListCtrl::OnActivated) -END_EVENT_TABLE() - -IMPLEMENT_APP(MyApp) - -// `Main program' equivalent, creating windows and returning main app frame -bool MyApp::OnInit(void) -{ - // Create the main frame window - MyFrame *frame = new MyFrame((wxFrame *) NULL, (char *) "wxListCtrl Test", 50, 50, 450, 340); - - // This reduces flicker effects - even better would be to define OnEraseBackground - // to do nothing. When the list control's scrollbars are show or hidden, the - // frame is sent a background erase event. - frame->SetBackgroundColour( *wxWHITE ); - - // Give it an icon - frame->SetIcon( wxICON(mondrian) ); - - // Make an image list containing large icons - m_imageListNormal = new wxImageList(32, 32, TRUE); - m_imageListSmall = new wxImageList(16, 16, TRUE); - -#ifdef __WXMSW__ - m_imageListNormal->Add( wxIcon("icon1", wxBITMAP_TYPE_ICO_RESOURCE) ); - m_imageListNormal->Add( wxIcon("icon2", wxBITMAP_TYPE_ICO_RESOURCE) ); - m_imageListNormal->Add( wxIcon("icon3", wxBITMAP_TYPE_ICO_RESOURCE) ); - m_imageListNormal->Add( wxIcon("icon4", wxBITMAP_TYPE_ICO_RESOURCE) ); - m_imageListNormal->Add( wxIcon("icon5", wxBITMAP_TYPE_ICO_RESOURCE) ); - m_imageListNormal->Add( wxIcon("icon6", wxBITMAP_TYPE_ICO_RESOURCE) ); - m_imageListNormal->Add( wxIcon("icon7", wxBITMAP_TYPE_ICO_RESOURCE) ); - m_imageListNormal->Add( wxIcon("icon8", wxBITMAP_TYPE_ICO_RESOURCE) ); - m_imageListNormal->Add( wxIcon("icon9", wxBITMAP_TYPE_ICO_RESOURCE) ); - - m_imageListSmall->Add( wxIcon("iconsmall", wxBITMAP_TYPE_ICO_RESOURCE) ); - -#else - - #include "bitmaps/toolbrai.xpm" - m_imageListNormal->Add( wxIcon( toolbrai_xpm ) ); - #include "bitmaps/toolchar.xpm" - m_imageListNormal->Add( wxIcon( toolchar_xpm ) ); - #include "bitmaps/tooldata.xpm" - m_imageListNormal->Add( wxIcon( tooldata_xpm ) ); - #include "bitmaps/toolnote.xpm" - m_imageListNormal->Add( wxIcon( toolnote_xpm ) ); - #include "bitmaps/tooltodo.xpm" - m_imageListNormal->Add( wxIcon( tooltodo_xpm ) ); - #include "bitmaps/toolchec.xpm" - m_imageListNormal->Add( wxIcon( toolchec_xpm ) ); - #include "bitmaps/toolgame.xpm" - m_imageListNormal->Add( wxIcon( toolgame_xpm ) ); - #include "bitmaps/tooltime.xpm" - m_imageListNormal->Add( wxIcon( tooltime_xpm ) ); - #include "bitmaps/toolword.xpm" - m_imageListNormal->Add( wxIcon( toolword_xpm ) ); - - #include "bitmaps/small1.xpm" - m_imageListSmall->Add( wxIcon( small1_xpm) ); - -#endif - - // Make a menubar - wxMenu *file_menu = new wxMenu; - - file_menu->Append(LIST_LIST_VIEW, "&List view"); - file_menu->Append(LIST_REPORT_VIEW, "&Report view"); - file_menu->Append(LIST_ICON_VIEW, "&Icon view"); - file_menu->Append(LIST_ICON_TEXT_VIEW, "Icon view with &text"); - file_menu->Append(LIST_SMALL_ICON_VIEW, "&Small icon view"); - file_menu->Append(LIST_SMALL_ICON_TEXT_VIEW, "Small icon &view with text"); - file_menu->Append(LIST_DESELECT_ALL, "&Deselect All"); - file_menu->Append(LIST_SELECT_ALL, "S&elect All"); - file_menu->AppendSeparator(); - file_menu->Append(LIST_ABOUT, "&About"); - file_menu->Append(LIST_QUIT, "E&xit"); - wxMenuBar *menu_bar = new wxMenuBar; - menu_bar->Append(file_menu, "&File"); - frame->SetMenuBar(menu_bar); - - // Make a panel with a message - frame->m_listCtrl = new MyListCtrl(frame, LIST_CTRL, wxPoint(0, 0), wxSize(400, 200), - wxLC_LIST|wxSUNKEN_BORDER); -// wxLC_LIST|wxLC_USER_TEXT|wxSUNKEN_BORDER); // wxLC_USER_TEXT requires app to supply all text on demand - frame->m_logWindow = new wxTextCtrl(frame, -1, "", wxPoint(0, 0), wxSize(400, 200), wxTE_MULTILINE|wxSUNKEN_BORDER); - - wxLayoutConstraints *c = new wxLayoutConstraints; - c->top.SameAs (frame, wxTop); - c->left.SameAs (frame, wxLeft); - c->right.SameAs (frame, wxRight); - c->height.PercentOf (frame, wxHeight, 66); - frame->m_listCtrl->SetConstraints(c); - - c = new wxLayoutConstraints; - c->top.Below (frame->m_listCtrl); - c->left.SameAs (frame, wxLeft); - c->right.SameAs (frame, wxRight); - c->bottom.SameAs (frame, wxBottom); - frame->m_logWindow->SetConstraints(c); - frame->SetAutoLayout(TRUE); - - for ( int i=0; i < 30; i++) - { - char buf[20]; - sprintf(buf, "Item %d", i); - frame->m_listCtrl->InsertItem(i, buf); - } - - frame->CreateStatusBar(3); - frame->SetStatusText("", 0); - - // Show the frame - frame->Show(TRUE); - - SetTopWindow(frame); - - return TRUE; -} - -// My frame constructor -MyFrame::MyFrame(wxFrame *frame, char *title, int x, int y, int w, int h): - wxFrame(frame, -1, title, wxPoint(x, y), wxSize(w, h)) -{ - m_listCtrl = (MyListCtrl *) NULL; - m_logWindow = (wxTextCtrl *) NULL; -} - -MyFrame::~MyFrame(void) -{ - delete wxGetApp().m_imageListNormal; - delete wxGetApp().m_imageListSmall; -} - -void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) -{ - Close(TRUE); -} - -void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) -{ - wxMessageDialog dialog(this, "List test sample\nJulian Smart (c) 1997", - "About list test", wxOK|wxCANCEL); - - dialog.ShowModal(); -} - -void MyFrame::OnDeselectAll(wxCommandEvent& WXUNUSED(event)) -{ - int n = m_listCtrl->GetItemCount(); - int i; - for(i = 0; i < n; i++) - m_listCtrl->SetItemState(i,0,wxLIST_STATE_SELECTED); -} - -void MyFrame::OnSelectAll(wxCommandEvent& WXUNUSED(event)) -{ - int n = m_listCtrl->GetItemCount(); - int i; - for(i = 0; i < n; i++) - m_listCtrl->SetItemState(i,wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED); -} - -void MyFrame::OnListView(wxCommandEvent& WXUNUSED(event)) -{ - m_logWindow->Clear(); - m_listCtrl->DeleteAllItems(); - m_listCtrl->SetSingleStyle(wxLC_LIST); - m_listCtrl->SetImageList((wxImageList *) NULL, wxIMAGE_LIST_NORMAL); - m_listCtrl->SetImageList((wxImageList *) NULL, wxIMAGE_LIST_SMALL); - - for ( int i=0; i < 30; i++) - { - char buf[20]; - sprintf(buf, "Item %d", i); - m_listCtrl->InsertItem(i, buf); - } -} - -void MyFrame::OnReportView(wxCommandEvent& WXUNUSED(event)) -{ - m_logWindow->Clear(); - m_listCtrl->DeleteAllItems(); - m_listCtrl->SetSingleStyle(wxLC_REPORT); - m_listCtrl->SetImageList((wxImageList *) NULL, wxIMAGE_LIST_NORMAL); - m_listCtrl->SetImageList(wxGetApp().m_imageListSmall, wxIMAGE_LIST_SMALL); - - m_listCtrl->InsertColumn(0, "Column 1", wxLIST_FORMAT_LEFT, 140); - m_listCtrl->InsertColumn(1, "Column 2", wxLIST_FORMAT_LEFT, 140); - - for ( int i=0; i < 30; i++) - { - char buf[20]; - sprintf(buf, "Item %d, col 1", i); - long tmp = m_listCtrl->InsertItem(i, buf, 0); - - sprintf(buf, "Item %d, col 2", i); - tmp = m_listCtrl->SetItem(i, 1, buf); - } -} - -void MyFrame::OnIconView(wxCommandEvent& WXUNUSED(event)) -{ - m_logWindow->Clear(); - m_listCtrl->DeleteAllItems(); - m_listCtrl->SetSingleStyle(wxLC_ICON); - m_listCtrl->SetImageList(wxGetApp().m_imageListNormal, wxIMAGE_LIST_NORMAL); - m_listCtrl->SetImageList(wxGetApp().m_imageListSmall, wxIMAGE_LIST_SMALL); - - for ( int i=0; i < 9; i++) - { - m_listCtrl->InsertItem(i, i); - } -} - -void MyFrame::OnIconTextView(wxCommandEvent& WXUNUSED(event)) -{ - m_logWindow->Clear(); - m_listCtrl->DeleteAllItems(); - m_listCtrl->SetSingleStyle(wxLC_ICON); - m_listCtrl->SetImageList(wxGetApp().m_imageListNormal, wxIMAGE_LIST_NORMAL); - m_listCtrl->SetImageList(wxGetApp().m_imageListSmall, wxIMAGE_LIST_SMALL); - - for ( int i=0; i < 9; i++) - { - char buf[20]; - sprintf(buf, "Label %d", i); - m_listCtrl->InsertItem(i, buf, i); - } -} - -void MyFrame::OnSmallIconView(wxCommandEvent& WXUNUSED(event)) -{ - m_logWindow->Clear(); - m_listCtrl->DeleteAllItems(); - m_listCtrl->SetSingleStyle(wxLC_SMALL_ICON); - m_listCtrl->SetImageList(wxGetApp().m_imageListNormal, wxIMAGE_LIST_NORMAL); - m_listCtrl->SetImageList(wxGetApp().m_imageListSmall, wxIMAGE_LIST_SMALL); - - for ( int i=0; i < 9; i++) - { - m_listCtrl->InsertItem(i, 0); - } -} - -void MyFrame::OnSmallIconTextView(wxCommandEvent& WXUNUSED(event)) -{ - m_logWindow->Clear(); - m_listCtrl->DeleteAllItems(); - m_listCtrl->SetSingleStyle(wxLC_SMALL_ICON); - m_listCtrl->SetImageList(wxGetApp().m_imageListNormal, wxIMAGE_LIST_NORMAL); - m_listCtrl->SetImageList(wxGetApp().m_imageListSmall, wxIMAGE_LIST_SMALL); - - for ( int i=0; i < 9; i++) - { - m_listCtrl->InsertItem(i, "Label", 0); - } -} - -// MyListCtrl - -void MyListCtrl::OnBeginDrag(wxListEvent& WXUNUSED(event)) -{ - if ( !wxGetApp().GetTopWindow() ) - return; - - wxTextCtrl *text = ((MyFrame *)wxGetApp().GetTopWindow())->m_logWindow; - if ( !text ) - return; - - text->WriteText("OnBeginDrag\n"); -} - -void MyListCtrl::OnBeginRDrag(wxListEvent& WXUNUSED(event)) -{ - if ( !wxGetApp().GetTopWindow() ) - return; - - wxTextCtrl *text = ((MyFrame *)wxGetApp().GetTopWindow())->m_logWindow; - if ( !text ) - return; - text->WriteText("OnBeginRDrag\n"); -} - -void MyListCtrl::OnBeginLabelEdit(wxListEvent& WXUNUSED(event)) -{ - if ( !wxGetApp().GetTopWindow() ) - return; - - wxTextCtrl *text = ((MyFrame *)wxGetApp().GetTopWindow())->m_logWindow; - if ( !text ) - return; - - text->WriteText("OnBeginLabelEdit\n"); -} - -void MyListCtrl::OnEndLabelEdit(wxListEvent& WXUNUSED(event)) -{ - if ( !wxGetApp().GetTopWindow() ) - return; - - wxTextCtrl *text = ((MyFrame *)wxGetApp().GetTopWindow())->m_logWindow; - if ( !text ) - return; - - text->WriteText("OnEndLabelEdit\n"); -} - -void MyListCtrl::OnDeleteItem(wxListEvent& WXUNUSED(event)) -{ - if ( !wxGetApp().GetTopWindow() ) - return; - - wxTextCtrl *text = ((MyFrame *)wxGetApp().GetTopWindow())->m_logWindow; - if ( !text ) - return; - - text->WriteText("OnDeleteItem\n"); -} - -void MyListCtrl::OnGetInfo(wxListEvent& /*event*/) -{ - if ( !wxGetApp().GetTopWindow() ) - return; - - wxTextCtrl *text = ((MyFrame *)wxGetApp().GetTopWindow())->m_logWindow; - if ( !text ) - return; - - text->WriteText("OnGetInfo\n"); - -/* - ostream str(text); - - str << "OnGetInfo (" << event.m_item.m_itemId << ", " << event.m_item.m_col << ")"; - if ( event.m_item.m_mask & wxLIST_MASK_STATE ) - str << " wxLIST_MASK_STATE"; - if ( event.m_item.m_mask & wxLIST_MASK_TEXT ) - str << " wxLIST_MASK_TEXT"; - if ( event.m_item.m_mask & wxLIST_MASK_IMAGE ) - str << " wxLIST_MASK_IMAGE"; - if ( event.m_item.m_mask & wxLIST_MASK_DATA ) - str << " wxLIST_MASK_DATA"; - if ( event.m_item.m_mask & wxLIST_SET_ITEM ) - str << " wxLIST_SET_ITEM"; - if ( event.m_item.m_mask & wxLIST_MASK_WIDTH ) - str << " wxLIST_MASK_WIDTH"; - if ( event.m_item.m_mask & wxLIST_MASK_FORMAT ) - str << " wxLIST_MASK_WIDTH"; - - if ( event.m_item.m_mask & wxLIST_MASK_TEXT ) - { - event.m_item.m_text = "My callback text"; - } - str << "\n"; - str.flush(); -*/ -} - -void MyListCtrl::OnSetInfo(wxListEvent& WXUNUSED(event)) -{ - if ( !wxGetApp().GetTopWindow() ) - return; - - wxTextCtrl *text = ((MyFrame *)wxGetApp().GetTopWindow())->m_logWindow; - if ( !text ) - return; - - text->WriteText("OnSetInfo\n"); -} - -void MyListCtrl::OnSelected(wxListEvent& WXUNUSED(event)) -{ - if ( !wxGetApp().GetTopWindow() ) - return; - - wxTextCtrl *text = ((MyFrame *)wxGetApp().GetTopWindow())->m_logWindow; - if ( !text ) - return; - - text->WriteText("OnSelected\n"); -} - -void MyListCtrl::OnDeselected(wxListEvent& WXUNUSED(event)) -{ - if ( !wxGetApp().GetTopWindow() ) - return; - - wxTextCtrl *text = ((MyFrame *)wxGetApp().GetTopWindow())->m_logWindow; - if ( !text ) - return; - - text->WriteText("OnDeselected\n"); -} - -void MyListCtrl::OnActivated(wxListEvent& WXUNUSED(event)) -{ - if ( !wxGetApp().GetTopWindow() ) - return; - - wxTextCtrl *text = ((MyFrame *)wxGetApp().GetTopWindow())->m_logWindow; - if ( !text ) - return; - - text->WriteText("OnActivated\n"); -} - -void MyListCtrl::OnListKeyDown(wxListEvent& WXUNUSED(event)) -{ - if ( !wxGetApp().GetTopWindow() ) - return; - - wxTextCtrl *text = ((MyFrame *)wxGetApp().GetTopWindow())->m_logWindow; - if ( !text ) - return; - - text->WriteText("OnListKeyDown\n"); -} - - diff --git a/samples/listctrl/listtest.def b/samples/listctrl/listtest.def deleted file mode 100644 index 2559d6f1bc..0000000000 --- a/samples/listctrl/listtest.def +++ /dev/null @@ -1,8 +0,0 @@ -NAME ListCtrl -DESCRIPTION 'ListCtrl wxWindows application' -EXETYPE WINDOWS -STUB 'WINSTUB.EXE' -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE -HEAPSIZE 1024 -STACKSIZE 8192 diff --git a/samples/listctrl/listtest.h b/samples/listctrl/listtest.h deleted file mode 100644 index c9bbb749bd..0000000000 --- a/samples/listctrl/listtest.h +++ /dev/null @@ -1,85 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: listctrl.h -// Purpose: wxListCtrl sample -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -// Define a new application type -class MyApp: public wxApp -{ public: - bool OnInit(void); - - wxImageList *m_imageListNormal; - wxImageList *m_imageListSmall; -}; - -class MyListCtrl: public wxListCtrl -{ -public: - MyListCtrl(wxWindow *parent, const wxWindowID id, const wxPoint& pos, - const wxSize& size, long style): - wxListCtrl(parent, id, pos, size, style) - { - } - - void OnBeginDrag(wxListEvent& event); - void OnBeginRDrag(wxListEvent& event); - void OnBeginLabelEdit(wxListEvent& event); - void OnEndLabelEdit(wxListEvent& event); - void OnDeleteItem(wxListEvent& event); - void OnGetInfo(wxListEvent& event); - void OnSetInfo(wxListEvent& event); - void OnSelected(wxListEvent& event); - void OnDeselected(wxListEvent& event); - void OnListKeyDown(wxListEvent& event); - void OnActivated(wxListEvent& event); - - DECLARE_EVENT_TABLE() -}; - -// Define a new frame type -class MyFrame: public wxFrame -{ public: - MyListCtrl *m_listCtrl; - wxTextCtrl *m_logWindow; - - MyFrame(wxFrame *frame, char *title, int x, int y, int w, int h); - ~MyFrame(void); - - public: - void OnQuit(wxCommandEvent& event); - void OnAbout(wxCommandEvent& event); - void OnListView(wxCommandEvent& event); - void OnReportView(wxCommandEvent& event); - void OnIconView(wxCommandEvent& event); - void OnIconTextView(wxCommandEvent& event); - void OnSmallIconView(wxCommandEvent& event); - void OnSmallIconTextView(wxCommandEvent& event); - bool OnClose(void) { return TRUE; } - void OnDeselectAll(wxCommandEvent& event); - void OnSelectAll(wxCommandEvent& event); - - DECLARE_EVENT_TABLE() -}; - - -// ID for the menu quit command -#define LIST_QUIT 1 -#define LIST_LIST_VIEW 2 -#define LIST_ICON_VIEW 3 -#define LIST_ICON_TEXT_VIEW 4 -#define LIST_SMALL_ICON_VIEW 5 -#define LIST_SMALL_ICON_TEXT_VIEW 6 -#define LIST_REPORT_VIEW 7 -#define LIST_DESELECT_ALL 8 -#define LIST_SELECT_ALL 9 -#define LIST_ABOUT 102 - -#define LIST_CTRL 1000 - - diff --git a/samples/listctrl/listtest.rc b/samples/listctrl/listtest.rc deleted file mode 100644 index d40633cba9..0000000000 --- a/samples/listctrl/listtest.rc +++ /dev/null @@ -1,16 +0,0 @@ -aaaa ICON "mondrian.ico" -mondrian ICON "mondrian.ico" -#include "wx/msw/wx.rc" - -icon1 ICON "bitmaps\\toolbrai.ico" -icon2 ICON "bitmaps\\toolchar.ico" -icon3 ICON "bitmaps\\toolchec.ico" -icon4 ICON "bitmaps\\tooldata.ico" -icon5 ICON "bitmaps\\toolgame.ico" -icon6 ICON "bitmaps\\toolnote.ico" -icon7 ICON "bitmaps\\tooltime.ico" -icon8 ICON "bitmaps\\tooltodo.ico" -icon9 ICON "bitmaps\\toolword.ico" - -iconsmall ICON "bitmaps\\small1.ico" - diff --git a/samples/listctrl/makefile.b32 b/samples/listctrl/makefile.b32 deleted file mode 100644 index f2460bdb6c..0000000000 --- a/samples/listctrl/makefile.b32 +++ /dev/null @@ -1,16 +0,0 @@ -# -# File: makefile.b32 -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: -# -# Makefile : Builds sample for 32-bit BC++ - -WXDIR = $(WXWIN) - -TARGET=listtest -OBJECTS = $(TARGET).obj - -!include $(WXDIR)\src\makeprog.b32 - diff --git a/samples/listctrl/makefile.bcc b/samples/listctrl/makefile.bcc deleted file mode 100644 index 85fa0c0573..0000000000 --- a/samples/listctrl/makefile.bcc +++ /dev/null @@ -1,19 +0,0 @@ -# -# File: makefile.bcc -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Builds a BC++ 16-bit sample - -!if "$(WXWIN)" == "" -!error You must define the WXWIN variable in autoexec.bat, e.g. WXWIN=c:\wx -!endif - -WXDIR = $(WXWIN) - -TARGET=listtest -OBJECTS=$(TARGET).obj - -!include $(WXDIR)\src\makeprog.bcc - diff --git a/samples/listctrl/makefile.dos b/samples/listctrl/makefile.dos deleted file mode 100644 index ed9ccc0bed..0000000000 --- a/samples/listctrl/makefile.dos +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.dos -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Makefile : Builds 16-bit sample, VC++ 1.5 -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -WXDIR = $(WXWIN) - -TARGET=listtest -OBJECTS = $(TARGET).obj - -!include $(WXDIR)\src\makeprog.msc - diff --git a/samples/listctrl/makefile.g95 b/samples/listctrl/makefile.g95 deleted file mode 100644 index 92ff4c4c09..0000000000 --- a/samples/listctrl/makefile.g95 +++ /dev/null @@ -1,37 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile for listtest example (UNIX). - -WXDIR = ../.. - -# All common UNIX compiler flags and options are now in -# this central makefile. -include $(WXDIR)/src/makeg95.env - -OBJECTS = $(OBJDIR)/listtest.$(OBJSUFF) $(OBJDIR)/listtest_resources.$(OBJSUFF) - -all: $(OBJDIR) listtest$(GUISUFFIX)$(EXESUFF) - -wx: - -$(OBJDIR): - mkdir $(OBJDIR) - -listtest$(GUISUFFIX)$(EXESUFF): $(OBJECTS) $(WXLIB) - $(CC) $(LDFLAGS) -o listtest$(GUISUFFIX)$(EXESUFF) $(OBJECTS) $(LDLIBS) - -$(OBJDIR)/listtest.$(OBJSUFF): listtest.$(SRCSUFF) - $(CC) -c $(CPPFLAGS) -o $@ listtest.$(SRCSUFF) - -$(OBJDIR)/listtest_resources.o: listtest.rc - $(RESCOMP) -i listtest.rc -o $(OBJDIR)/listtest_resources.o $(RESFLAGS) - -clean: - rm -f $(OBJECTS) listtest$(GUISUFFIX).exe core *.rsc *.res diff --git a/samples/listctrl/makefile.unx b/samples/listctrl/makefile.unx deleted file mode 100644 index a94e6cb31d..0000000000 --- a/samples/listctrl/makefile.unx +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1998 -# Updated: -# Copyright: (c) 1998 Julian Smart -# -# "%W% %G%" -# -# Makefile for listctrl example (UNIX). - -PROGRAM=listtest - -OBJECTS=$(PROGRAM).o - -include ../../src/makeprog.env - diff --git a/samples/listctrl/makefile.vc b/samples/listctrl/makefile.vc deleted file mode 100644 index ae556a5be7..0000000000 --- a/samples/listctrl/makefile.vc +++ /dev/null @@ -1,18 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: (c) Julian Smart -# -# Makefile : Builds sample (VC++, WIN32) -# Use FINAL=1 argument to nmake to build final version with no debug info. - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -PROGRAM=listtest -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.vc - diff --git a/samples/listctrl/makefile.wat b/samples/listctrl/makefile.wat deleted file mode 100644 index 8edb3a5682..0000000000 --- a/samples/listctrl/makefile.wat +++ /dev/null @@ -1,15 +0,0 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 -# -# - -WXDIR = $(%WXWIN) - -PROGRAM = listtest -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - diff --git a/samples/listctrl/mondrian.ico b/samples/listctrl/mondrian.ico deleted file mode 100644 index 2310c5d275a87af295d5ea8dc79ea417a5e74c53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmZQzU<5)11px*Sc)`TLAO@s0fLH;D9e|jTfdxnc0Z -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** NICHT BEARBEITEN ** - -# TARGTYPE "Win32 (x86) Application" 0x0101 - -CFG=test - Win32 Release -!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit\ - NMAKE -!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den\ - Befehl -!MESSAGE -!MESSAGE NMAKE /f "test.mak". -!MESSAGE -!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben -!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel: -!MESSAGE -!MESSAGE NMAKE /f "test.mak" CFG="test - Win32 Release" -!MESSAGE -!MESSAGE Für die Konfiguration stehen zur Auswahl: -!MESSAGE -!MESSAGE "test - Win32 Release" (basierend auf "Win32 (x86) Application") -!MESSAGE "test - Win32 Debug" (basierend auf "Win32 (x86) Application") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "test - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir ".\Release" -# PROP BASE Intermediate_Dir ".\Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir ".\Release" -# PROP Intermediate_Dir ".\Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c -# ADD CPP /nologo /W3 /GX /O2 /I "..\..\include" /I "funcs" /I "santis2" /I "funcdefs" /I "tnt" /D "__WIN32__" /D "__WXMSW__" /D "__WIN95__" /D "STRICT" /D "__WINDOWS__" /YX /FD /D /c -# ADD BASE MTL /nologo /D "NDEBUG" /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x407 /d "NDEBUG" -# ADD RSC /l 0x407 /i "..\..\include" /d "__WXMSW__" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib oldnames.lib comctl32.lib ctl3d32.lib odbc32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib ..\..\release\wxwin.lib ctl3d32.lib /nologo /subsystem:windows /machine:I386 -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "test - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir ".\Debug" -# PROP BASE Intermediate_Dir ".\Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir ".\Debug" -# PROP Intermediate_Dir ".\Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c -# ADD CPP /nologo /W3 /GX /Z7 /Od /I "..\..\include" /I "funcs" /I "santis2" /I "funcdefs" /I "tnt" /D "__WIN32__" /D "__WXMSW__" /D "__WIN95__" /D DEBUG=2 /D "STRICT" /D "__WINDOWS__" /YX /FD /D /c -# ADD BASE MTL /nologo /D "_DEBUG" /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x407 /d "_DEBUG" -# ADD RSC /l 0x407 /i "..\..\include" /d "__WXMSW__" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib oldnames.lib comctl32.lib ctl3d32.lib odbc32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib ..\..\debug\wxwin.lib ctl3d32.lib /nologo /subsystem:windows /debug /machine:I386 -# SUBTRACT LINK32 /pdb:none - -!ENDIF - -# Begin Target - -# Name "test - Win32 Release" -# Name "test - Win32 Debug" -# Begin Group "Quellcodedateien" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90" -# Begin Source File - -SOURCE=.\listtest.cpp -# End Source File -# End Group -# Begin Group "Header-Dateien" - -# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd" -# Begin Source File - -SOURCE=.\listtest.h -# End Source File -# End Group -# Begin Group "Ressourcendateien" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe" -# Begin Source File - -SOURCE=.\listtest.rc -# End Source File -# End Group -# End Target -# End Project diff --git a/samples/listctrl/test.dsw b/samples/listctrl/test.dsw deleted file mode 100644 index 1fe8c87bde..0000000000 --- a/samples/listctrl/test.dsw +++ /dev/null @@ -1,29 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 5.00 -# WARNUNG: DIESE ARBEITSBEREICHSDATEI DARF NICHT BEARBEITET ODER GELÖSCHT WERDEN! - -############################################################################### - -Project: "test"=.\santis.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/samples/makefile.g95 b/samples/makefile.g95 deleted file mode 100644 index 8b5be576cb..0000000000 --- a/samples/makefile.g95 +++ /dev/null @@ -1,78 +0,0 @@ -# -# File: makefile.g95 -# Author: Julian Smart -# Created: 1997 -# Updated: -# Copyright: -# -# "%W% %G%" -# -# Makefile : Builds samples for Win95, GnuWin32 -# info - -# Set WXDIR for your system -SHELL=cmd.exe -WXDIR = .. - -THISDIR=$(WXDIR)/samples - -all: - $(MAKE) -C $(WXDIR)/samples/bombs -f makefile.g95 - $(MAKE) -C $(WXDIR)/samples/fractal -f makefile.g95 - $(MAKE) -C $(WXDIR)/samples/splitter -f makefile.g95 - $(MAKE) -C $(WXDIR)/samples/resource -f makefile.g95 - $(MAKE) -C $(WXDIR)/samples/controls -f makefile.g95 - $(MAKE) -C $(WXDIR)/samples/listctrl -f makefile.g95 - $(MAKE) -C $(WXDIR)/samples/treectrl -f makefile.g95 - $(MAKE) -C $(WXDIR)/samples/validate -f makefile.g95 - $(MAKE) -C $(WXDIR)/samples/mdi -f makefile.g95 - $(MAKE) -C $(WXDIR)/samples/minimal -f makefile.g95 - $(MAKE) -C $(WXDIR)/samples/layout -f makefile.g95 - $(MAKE) -C $(WXDIR)/samples/printing -f makefile.g95 - $(MAKE) -C $(WXDIR)/samples/proplist -f makefile.g95 - $(MAKE) -C $(WXDIR)/samples/toolbar -f makefile.g95 - $(MAKE) -C $(WXDIR)/samples/dialogs -f makefile.g95 - $(MAKE) -C $(WXDIR)/samples/docview -f makefile.g95 - $(MAKE) -C $(WXDIR)/samples/docvwmdi -f makefile.g95 - $(MAKE) -C $(WXDIR)/samples/sashtest -f makefile.g95 - $(MAKE) -C $(WXDIR)/samples/controls -f makefile.g95 - $(MAKE) -C $(WXDIR)/samples/nativdlg -f makefile.g95 - $(MAKE) -C $(WXDIR)/samples/grid -f makefile.g95 - $(MAKE) -C $(WXDIR)/samples/internat -f makefile.g95 - $(MAKE) -C $(WXDIR)/samples/checklst -f makefile.g95 - $(MAKE) -C $(WXDIR)/samples/dnd -f makefile.g95 - $(MAKE) -C $(WXDIR)/samples/ownerdrw -f makefile.g95 - $(MAKE) -C $(WXDIR)/samples/joytest -f makefile.g95 - $(MAKE) -C $(WXDIR)/samples/memcheck -f makefile.g95 -# $(MAKE) -C $(WXDIR)/samples/regtest -f makefile.g95 - -clean: - $(MAKE) -C $(WXDIR)/samples/bombs -f makefile.g95 clean - $(MAKE) -C $(WXDIR)/samples/fractal -f makefile.g95 clean - $(MAKE) -C $(WXDIR)/samples/splitter -f makefile.g95 clean - $(MAKE) -C $(WXDIR)/samples/mdi -f makefile.g95 clean - $(MAKE) -C $(WXDIR)/samples/minimal -f makefile.g95 clean - $(MAKE) -C $(WXDIR)/samples/layout -f makefile.g95 clean - $(MAKE) -C $(WXDIR)/samples/printing -f makefile.g95 clean - $(MAKE) -C $(WXDIR)/samples/proplist -f makefile.g95 clean - $(MAKE) -C $(WXDIR)/samples/toolbar -f makefile.g95 clean - $(MAKE) -C $(WXDIR)/samples/dialogs -f makefile.g95 clean - $(MAKE) -C $(WXDIR)/samples/resource -f makefile.g95 clean - $(MAKE) -C $(WXDIR)/samples/listctrl -f makefile.g95 clean - $(MAKE) -C $(WXDIR)/samples/treectrl -f makefile.g95 clean - $(MAKE) -C $(WXDIR)/samples/validate -f makefile.g95 clean - $(MAKE) -C $(WXDIR)/samples/docview -f makefile.g95 clean - $(MAKE) -C $(WXDIR)/samples/docvwmdi -f makefile.g95 clean - $(MAKE) -C $(WXDIR)/samples/sashtest -f makefile.g95 clean - $(MAKE) -C $(WXDIR)/samples/controls -f makefile.g95 clean - $(MAKE) -C $(WXDIR)/samples/nativdlg -f makefile.g95 clean - $(MAKE) -C $(WXDIR)/samples/grid -f makefile.g95 clean - $(MAKE) -C $(WXDIR)/samples/internat -f makefile.g95 clean - $(MAKE) -C $(WXDIR)/samples/checklst -f makefile.g95 clean - $(MAKE) -C $(WXDIR)/samples/dnd -f makefile.g95 clean - $(MAKE) -C $(WXDIR)/samples/ownerdrw -f makefile.g95 clean - $(MAKE) -C $(WXDIR)/samples/regtest -f makefile.g95 clean - $(MAKE) -C $(WXDIR)/samples/joytest -f makefile.g95 clean - $(MAKE) -C $(WXDIR)/samples/memcheck -f makefile.g95 clean - - diff --git a/samples/makefile.unx b/samples/makefile.unx deleted file mode 100644 index 95ac7b592b..0000000000 --- a/samples/makefile.unx +++ /dev/null @@ -1,84 +0,0 @@ -# -# Makefile : Builds wxWindows utils for Unix. - -# Replace this with your own path if necessary -WXDIR = .. - -# All common UNIX compiler flags and options are now in -# this central makefile. -include $(WXDIR)/src/make.env - -TARGET=motif - -# Change these if needed. - -THISDIR = $(WXDIR)/samples - -all: - cd bombs; $(MAKE) -f makefile.unx $(TARGET) - cd config; $(MAKE) -f makefile.unx $(TARGET) - cd controls; $(MAKE) -f makefile.unx $(TARGET) - cd dialogs; $(MAKE) -f makefile.unx $(TARGET) - cd dnd; $(MAKE) -f makefile.unx $(TARGET) - cd docview; $(MAKE) -f makefile.unx $(TARGET) - cd docvwmdi; $(MAKE) -f makefile.unx $(TARGET) - cd dynamic; $(MAKE) -f makefile.unx $(TARGET) - cd fractal; $(MAKE) -f makefile.unx $(TARGET) - cd grid; $(MAKE) -f makefile.unx $(TARGET) - cd help; $(MAKE) -f makefile.unx $(TARGET) - cd image; $(MAKE) -f makefile.unx $(TARGET) - cd internat; $(MAKE) -f makefile.unx $(TARGET) - cd layout; $(MAKE) -f makefile.unx $(TARGET) - cd memcheck; $(MAKE) -f makefile.unx $(TARGET) - cd minifram; $(MAKE) -f makefile.unx $(TARGET) - cd minimal; $(MAKE) -f makefile.unx $(TARGET) - cd nativdlg; $(MAKE) -f makefile.unx $(TARGET) - cd notebook; $(MAKE) -f makefile.unx $(TARGET) - cd printing; $(MAKE) -f makefile.unx $(TARGET) - cd proplist; $(MAKE) -f makefile.unx $(TARGET) - cd resource; $(MAKE) -f makefile.unx $(TARGET) - cd sashtest; $(MAKE) -f makefile.unx $(TARGET) - cd splitter; $(MAKE) -f makefile.unx $(TARGET) - cd tab; $(MAKE) -f makefile.unx $(TARGET) - cd thread; $(MAKE) -f makefile.unx $(TARGET) - cd toolbar; $(MAKE) -f makefile.unx $(TARGET) - cd typetest; $(MAKE) -f makefile.unx $(TARGET) - cd validate; $(MAKE) -f makefile.unx $(TARGET) - cd treectrl; $(MAKE) -f makefile.unx $(TARGET) - cd wxpoem; $(MAKE) -f makefile.unx $(TARGET) - -clean: - cd bombs; $(MAKE) -f makefile.unx clean$(TARGET) - cd config; $(MAKE) -f makefile.unx clean$(TARGET) - cd controls; $(MAKE) -f makefile.unx clean$(TARGET) - cd dialogs; $(MAKE) -f makefile.unx clean$(TARGET) - cd dnd; $(MAKE) -f makefile.unx clean$(TARGET) - cd docview; $(MAKE) -f makefile.unx clean$(TARGET) - cd docvwmdi; $(MAKE) -f makefile.unx clean$(TARGET) - cd dynamic; $(MAKE) -f makefile.unx clean$(TARGET) - cd fractal; $(MAKE) -f makefile.unx clean$(TARGET) - cd grid; $(MAKE) -f makefile.unx clean$(TARGET) - cd help; $(MAKE) -f makefile.unx clean$(TARGET) - cd image; $(MAKE) -f makefile.unx clean$(TARGET) - cd internat; $(MAKE) -f makefile.unx clean$(TARGET) - cd layout; $(MAKE) -f makefile.unx clean$(TARGET) - cd memcheck; $(MAKE) -f makefile.unx clean$(TARGET) - cd minifram; $(MAKE) -f makefile.unx clean$(TARGET) - cd minimal; $(MAKE) -f makefile.unx clean$(TARGET) - cd nativdlg; $(MAKE) -f makefile.unx clean$(TARGET) - cd notebook; $(MAKE) -f makefile.unx clean$(TARGET) - cd printing; $(MAKE) -f makefile.unx clean$(TARGET) - cd proplist; $(MAKE) -f makefile.unx clean$(TARGET) - cd resource; $(MAKE) -f makefile.unx clean$(TARGET) - cd sashtest; $(MAKE) -f makefile.unx clean$(TARGET) - cd splitter; $(MAKE) -f makefile.unx clean$(TARGET) - cd tab; $(MAKE) -f makefile.unx clean$(TARGET) - cd thread; $(MAKE) -f makefile.unx clean$(TARGET) - cd toolbar; $(MAKE) -f makefile.unx clean$(TARGET) - cd typetest; $(MAKE) -f makefile.unx clean$(TARGET) - cd validate; $(MAKE) -f makefile.unx clean$(TARGET) - cd treectrl; $(MAKE) -f makefile.unx clean$(TARGET) - cd wxpoem; $(MAKE) -f makefile.unx clean$(TARGET) - -cleanmotif: clean -motif: all diff --git a/samples/makefile.vc b/samples/makefile.vc deleted file mode 100644 index e016ae83ef..0000000000 --- a/samples/makefile.vc +++ /dev/null @@ -1,159 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile : Builds samples for Win95, MSVC++ 4.0 -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -THISDIR=$(WXDIR)\samples - -!include $(WXDIR)\src\makevc.env - -DEBUG_FLAGS="/Zi /FR" -LINK_DEBUG_FLAGS="/RELEASE" - -all: - cd $(WXDIR)\samples\splitter - nmake -f makefile.vc FINAL=$(FINAL) - cd $(WXDIR)\samples\resource - nmake -f makefile.vc FINAL=$(FINAL) - cd $(WXDIR)\samples\controls - nmake -f makefile.vc FINAL=$(FINAL) - cd $(WXDIR)\samples\listctrl - nmake -f makefile.vc FINAL=$(FINAL) - cd $(WXDIR)\samples\treectrl - nmake -f makefile.vc FINAL=$(FINAL) - cd $(WXDIR)\samples\validate - nmake -f makefile.vc FINAL=$(FINAL) - cd $(WXDIR)\samples\mdi - nmake -f makefile.vc FINAL=$(FINAL) - cd $(WXDIR)\samples\minimal - nmake -f makefile.vc FINAL=$(FINAL) - cd $(WXDIR)\samples\layout - nmake -f makefile.vc FINAL=$(FINAL) - cd $(WXDIR)\samples\printing - nmake -f makefile.vc FINAL=$(FINAL) - cd $(WXDIR)\samples\toolbar - nmake -f makefile.vc FINAL=$(FINAL) - cd $(WXDIR)\samples\dialogs - nmake -f makefile.vc FINAL=$(FINAL) - cd $(WXDIR)\samples\docview - nmake -f makefile.vc FINAL=$(FINAL) - cd $(WXDIR)\samples\docvwmdi - nmake -f makefile.vc FINAL=$(FINAL) - cd $(WXDIR)\samples\controls - nmake -f makefile.vc FINAL=$(FINAL) - cd $(WXDIR)\samples\nativdlg - nmake -f makefile.vc FINAL=$(FINAL) - cd $(WXDIR)\samples\grid - nmake -f makefile.vc FINAL=$(FINAL) - cd $(WXDIR)\samples\internat - nmake -f makefile.vc FINAL=$(FINAL) - cd $(WXDIR)\samples\dnd - nmake -f makefile.vc FINAL=$(FINAL) - cd $(WXDIR)\samples\joytest - nmake -f makefile.vc FINAL=$(FINAL) - cd $(WXDIR)\samples\taskbar - nmake -f makefile.vc FINAL=$(FINAL) - cd $(WXDIR)\samples\sashtest - nmake -f makefile.vc FINAL=$(FINAL) -!if "$(FINAL)" == "0" - cd $(WXDIR)\samples\memcheck -!endif - nmake -f makefile.vc FINAL=$(FINAL) - cd $(WXDIR)\samples\ownerdrw - nmake -f makefile.vc FINAL=$(FINAL) - cd $(WXDIR)\samples\checklst - nmake -f makefile.vc FINAL=$(FINAL) - cd $(WXDIR)\samples\minifram - nmake -f makefile.vc FINAL=$(FINAL) - cd $(WXDIR)\samples\bombs - nmake -f makefile.vc FINAL=$(FINAL) - cd $(WXDIR)\samples\fractal - nmake -f makefile.vc FINAL=$(FINAL) - cd $(WXDIR)\samples\wxpoem - nmake -f makefile.vc FINAL=$(FINAL) - cd $(WXDIR)\samples\typetest - nmake -f makefile.vc FINAL=$(FINAL) - cd $(WXDIR)\samples\proplist - nmake -f makefile.vc FINAL=$(FINAL) - cd $(WXDIR)\samples\image - nmake -f makefile.vc FINAL=$(FINAL) -# cd $(WXDIR)\samples\regtest -# nmake -f makefile.vc FINAL=$(FINAL) - -clean: - cd $(WXDIR)\samples\splitter - nmake -f makefile.vc clean - cd $(WXDIR)\samples\mdi - nmake -f makefile.vc clean - cd $(WXDIR)\samples\minimal - nmake -f makefile.vc clean - cd $(WXDIR)\samples\layout - nmake -f makefile.vc clean - cd $(WXDIR)\samples\printing - nmake -f makefile.vc clean - cd $(WXDIR)\samples\toolbar - nmake -f makefile.vc clean - cd $(WXDIR)\samples\dialogs - nmake -f makefile.vc clean - cd $(WXDIR)\samples\resource - nmake -f makefile.vc clean - cd $(WXDIR)\samples\listctrl - nmake -f makefile.vc clean - cd $(WXDIR)\samples\treectrl - nmake -f makefile.vc clean - cd $(WXDIR)\samples\validate - nmake -f makefile.vc clean - cd $(WXDIR)\samples\docview - nmake -f makefile.vc clean - cd $(WXDIR)\samples\docvwmdi - nmake -f makefile.vc clean - cd $(WXDIR)\samples\controls - nmake -f makefile.vc clean - cd $(WXDIR)\samples\nativdlg - nmake -f makefile.vc clean - cd $(WXDIR)\samples\grid - nmake -f makefile.vc clean - cd $(WXDIR)\samples\internat - nmake -f makefile.vc clean - cd $(WXDIR)\samples\checklst - nmake -f makefile.vc clean - cd $(WXDIR)\samples\ownerdrw - nmake -f makefile.vc clean - cd $(WXDIR)\samples\dnd - nmake -f makefile.vc clean - cd $(WXDIR)\samples\joytest - nmake -f makefile.vc clean - cd $(WXDIR)\samples\regtest - nmake -f makefile.vc clean - cd $(WXDIR)\samples\taskbar - nmake -f makefile.vc clean - cd $(WXDIR)\samples\sashtest - nmake -f makefile.vc clean - cd $(WXDIR)\samples\memcheck - nmake -f makefile.vc clean - cd $(WXDIR)\samples\minifram - nmake -f makefile.vc clean - cd $(WXDIR)\samples\bombs - nmake -f makefile.vc clean - cd $(WXDIR)\samples\fractal - nmake -f makefile.vc clean - cd $(WXDIR)\samples\wxpoem - nmake -f makefile.vc clean - cd $(WXDIR)\samples\typetest - nmake -f makefile.vc clean - cd $(WXDIR)\samples\proplist - nmake -f makefile.vc clean - cd $(WXDIR)\samples\image - nmake -f makefile.vc clean - diff --git a/samples/mdi/.cvsignore b/samples/mdi/.cvsignore deleted file mode 100644 index 7957c41216..0000000000 --- a/samples/mdi/.cvsignore +++ /dev/null @@ -1,3 +0,0 @@ -Linux -linux-gnu -linux \ No newline at end of file diff --git a/samples/mdi/Makefile b/samples/mdi/Makefile deleted file mode 100644 index bccce53f76..0000000000 --- a/samples/mdi/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../../setup/general/makeapp diff --git a/samples/mdi/Makefile.in b/samples/mdi/Makefile.in deleted file mode 100644 index c5b3853e3b..0000000000 --- a/samples/mdi/Makefile.in +++ /dev/null @@ -1,26 +0,0 @@ -# WXXT base directory -WXBASEDIR=@WXBASEDIR@ - -# set the OS type for compilation -OS=@OS@ -# compile a library only -RULE=bin - -# define library name -BIN_TARGET=mdi -# define library sources -BIN_SRC=\ -mdi.cpp - -#define library objects -BIN_OBJ=\ -mdi.o - -# additional things needed to link -BIN_LINK= - -# additional things needed to compile -ADD_COMPILE= - -# include the definitions now -include ../../../template.mak diff --git a/samples/mdi/bitmaps/bitmap1.bmp b/samples/mdi/bitmaps/bitmap1.bmp deleted file mode 100644 index 13e2170b7369879a97bdd01c57b42af6f4126264..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 238 zcmZup$qj%o3^Ni^o-hV;@Mo922+wZTPQ(hutwBPF)JM*)+X=-^TgaK5$N?i2IJ*8x z1_Y+Pr$L8wG(}1gYeu+p9^X1)J~P=@jSHSMY)3;sNkY2 zEPWRLqal$RV;7jK=A7!i)5w*|^bK%qLGNEQTGkCeTtf<*)|jz0bZVCKqs&^|_qZ0` QxOhk{d)WGeIhJR90ll(R-T(jq diff --git a/samples/mdi/bitmaps/calc.bmp b/samples/mdi/bitmaps/calc.bmp deleted file mode 100644 index 6eee9cce8c1cd915f888258cbe729ead1bd19154..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 702 zcmb_au?~YE5Irx%5Yt3s8t0Dvj!s?rJGCQQ+5Dr%Phu+@eTOJ&J65>kc*i{+$mRB8 zir*dn3_B$&NRgzjDUXnvWD*mZ*vS})U}yrtjpGO;#7-ed1Va-D?qsnKj9o{pONo4E z=SW$8Ry{v3rW_(y(GKz2ve{!yz;yK6de4prWZZYnKX}+;&!|X|N~(EKex+yNkTX!S zC{hM1mzs$OSe-HOyvrWSe{huaqdx5G;~96=hail3mzCD(23HE&t@imYryJdJIIh98 l_{`r1+)_Gc{@aa(hUFE=46BTeZz9d~YGx{Aj)6VK;sXibpM3xT diff --git a/samples/mdi/bitmaps/copy.bmp b/samples/mdi/bitmaps/copy.bmp deleted file mode 100644 index 4551a06bfa79e0a42c1ffb7cdbb90fd4f699dce2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 238 zcmZvVK?*`K3`9pLxU9$U91{2|@hV+>tjiv)Cz3AyzP{vxy7<$~OeTT!c7JQf6T89- z%?kmn<${;(P#uFN<0A#FuUo(qgT{&F@ekspii W=d@ZzPG(Cb=QBs}_=7thzxV(viB<;y diff --git a/samples/mdi/bitmaps/copy.xpm b/samples/mdi/bitmaps/copy.xpm deleted file mode 100644 index 47565c1cae..0000000000 --- a/samples/mdi/bitmaps/copy.xpm +++ /dev/null @@ -1,25 +0,0 @@ -/* XPM */ -static char *copy_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 4 1", -" c None", -". c Black", -"X c Gray100", -"o c #000080", -/* pixels */ -" ", -" ...... ", -" .XXXX.. ", -" .XXXX.X. ", -" .X..X.oooooo ", -" .XXXXXoXXXXoo ", -" .X....oXXXXoXo ", -" .XXXXXoX..Xoooo", -" .X....oXXXXXXXo", -" .XXXXXoX.....Xo", -" ......oXXXXXXXo", -" oX.....Xo", -" oXXXXXXXo", -" ooooooooo", -" " -}; diff --git a/samples/mdi/bitmaps/cut.bmp b/samples/mdi/bitmaps/cut.bmp deleted file mode 100644 index 15554338a01bc4d8f0a501c32237e84200e64583..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 238 zcmZvU!3}^Q5Cqr6gr}Ba8OD(CvKJo2^+{<|WDB@(K8*2TclNjo+kV075Ef~cCTYMZ z2hQ$)mH}PlY>+FWlp?l4?H9GSBqTFi~p=nI%+}YJ={H-mN0|?29BK#fUL#erbtT(lh^R?4vYy(d-6AGn1|j$rr}v KbDqI%Xjd+{i$y;G diff --git a/samples/mdi/bitmaps/help.xpm b/samples/mdi/bitmaps/help.xpm deleted file mode 100644 index 50fdb4157e..0000000000 --- a/samples/mdi/bitmaps/help.xpm +++ /dev/null @@ -1,25 +0,0 @@ -/* XPM */ -static char *help_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 4 1", -" c None", -". c Black", -"X c Blue", -"o c #000080", -/* pixels */ -" ", -" ...... ", -" .XXXXX.. ", -" .XX...oX.. ", -" .X.. .X.. ", -" .X.. .XX.. ", -" .. .XX.. ", -" .XX.. ", -" .X.. ", -" .X.. ", -" .o.. ", -" .. ", -" .XX.. ", -" .XX.. ", -" ... " -}; diff --git a/samples/mdi/bitmaps/helpcs.bmp b/samples/mdi/bitmaps/helpcs.bmp deleted file mode 100644 index 88373816814a283aa9ecca7899faf81ce7a15b4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 238 zcmZvV!3{z&3`32Clp~D69NgKZC&ICtwG;gn%5(a;k=Ax%E6VeAXxAHgfIGN>i>|Qr zDgH-8;%kg8Fsb(=J`dZ5!;MsyQTV&Nwu@o7(Ri`byve-X0yz0?`b73&zHji5? LZQ&!hb;b0l4tjP;1(ew=nJ8j|<6WY3bU0`GK9aK^RUId`!4(ELX-1{H u>6c`QQqJ8_T9s0iQsQ8(Wab^@`3kuPA_p->w)Xt4Pkz>06 diff --git a/samples/mdi/bitmaps/new.xpm b/samples/mdi/bitmaps/new.xpm deleted file mode 100644 index 754d2d20a2..0000000000 --- a/samples/mdi/bitmaps/new.xpm +++ /dev/null @@ -1,24 +0,0 @@ -/* XPM */ -static char *new_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 3 1", -" c None", -". c Black", -"X c Gray100", -/* pixels */ -" ", -" ........ ", -" .XXXXXX.. ", -" .XXXXXX.X. ", -" .XXXXXX.... ", -" .XXXXXXXXX. ", -" .XXXXXXXXX. ", -" .XXXXXXXXX. ", -" .XXXXXXXXX. ", -" .XXXXXXXXX. ", -" .XXXXXXXXX. ", -" .XXXXXXXXX. ", -" .XXXXXXXXX. ", -" ........... ", -" " -}; diff --git a/samples/mdi/bitmaps/open.bmp b/samples/mdi/bitmaps/open.bmp deleted file mode 100644 index bbf93fe03364e63f3e18a3507a0e85ab8ea2f87d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 238 zcmXv{u@M3>3=;=;U&0ua+_3>YyQsonW~6N3OvKTr2(k@|B{{YeKb~(CUb3rr5zpcQ zCn>O}mP9XDa6kd~GO1FGG0<95V`X5i$V8neN$dxz4&8XX3!AZr-;ApY^eS-9oTLj~ Y^Hcc9z2|$wrXTtLH=Rc2n(WoWFRhqJ00000 diff --git a/samples/mdi/bitmaps/open.xpm b/samples/mdi/bitmaps/open.xpm deleted file mode 100644 index 54748e910d..0000000000 --- a/samples/mdi/bitmaps/open.xpm +++ /dev/null @@ -1,26 +0,0 @@ -/* XPM */ -static char *open_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 5 1", -" c None", -". c Black", -"X c Yellow", -"o c Gray100", -"O c #bfbf00", -/* pixels */ -" ", -" ... ", -" . . .", -" ..", -" ... ...", -" .XoX....... ", -" .oXoXoXoXo. ", -" .XoXoXoXoX. ", -" .oXoX..........", -" .XoX.OOOOOOOOO.", -" .oo.OOOOOOOOO. ", -" .X.OOOOOOOOO. ", -" ..OOOOOOOOO. ", -" ........... ", -" " -}; diff --git a/samples/mdi/bitmaps/paste.bmp b/samples/mdi/bitmaps/paste.bmp deleted file mode 100644 index 564f514e0df7225f0a7adbe8457b41af537813bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 238 zcmZvVF%Ci@5Jbns$83OZ*I;# co}I%%@f6>ra3+S=gC69}eM%GII+SAI4J;x>B>(^b diff --git a/samples/mdi/bitmaps/paste.xpm b/samples/mdi/bitmaps/paste.xpm deleted file mode 100644 index 69177e9b19..0000000000 --- a/samples/mdi/bitmaps/paste.xpm +++ /dev/null @@ -1,27 +0,0 @@ -/* XPM */ -static char *paste_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 6 1", -" c None", -". c Black", -"X c Yellow", -"o c #808080", -"O c #000080", -"+ c Gray100", -/* pixels */ -" ", -" .... ", -" .....XX..... ", -".ooo.X..X.ooo. ", -".oo. .oo. ", -".oo........oo. ", -".oooooooooooo. ", -".oooooOOOOOOO. ", -".oooooO+++++OO ", -".oooooO+++++O+O ", -".oooooO+OOO+OOO ", -".oooooO+++++++O ", -".oooooO+OOOOO+O ", -" .....O+++++++O ", -" OOOOOOOOO " -}; diff --git a/samples/mdi/bitmaps/preview.bmp b/samples/mdi/bitmaps/preview.bmp deleted file mode 100644 index da1f4dbc4be6c2dd8fb9d7cb71cc48a4a7c139ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 238 zcmZvVu?@p83pv2yNo4mlT?N_pr2ISnd1NHDM5O^cFcMc59&^> z)PfrwsOeYM05)2ipmU4fJIss+o(=cdQCu+!%TlZiKDH!a!aP2;C|UGpLD9M;zmsLJ XIp;lzIUm!ckI6HO{IjaYcZ_-fA4^nl diff --git a/samples/mdi/bitmaps/preview.xpm b/samples/mdi/bitmaps/preview.xpm deleted file mode 100644 index 0dfdca46e1..0000000000 --- a/samples/mdi/bitmaps/preview.xpm +++ /dev/null @@ -1,26 +0,0 @@ -/* XPM */ -static char *preview_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 5 1", -" c Black", -". c None", -"X c Gray100", -"o c #808080", -"O c Cyan", -/* pixels */ -" .......", -" XXXXXXX ......", -" XXXXXXX . .....", -" XXXXXXX ....", -" XXXXXXXXXX ....", -" XXXXXXX ....", -" XXXXXX o..o ...", -" XXXXX oOO.oo ..", -" XXXXX .O..o. ..", -" XXXXX ....o. ..", -" XXXXX o..Ooo ..", -" XXXXXX o..o o..", -" XXXXXXX o .", -" XXXXXXXXXX . ", -" .. " -}; diff --git a/samples/mdi/bitmaps/print.bmp b/samples/mdi/bitmaps/print.bmp deleted file mode 100644 index 00319b55bb23c3c69cc051144d80e5275747c53e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 238 zcmZur!3_d23^Ni^o@EUFY`~vgA|YX<`*bfpod|VizM>j+f}Fx~Q7! zgtHKM7yg3|DAD^Sp<0YF#C}+nSj(MC$5#Ss27*aN<{l9dYV3`7rsq)3!X>4ws(){6V0MX5FKAjcylGXqN-n#XsS=YhW0WogZT{L^_i_GT%*k@+ph E1NJ~MtpET3 diff --git a/samples/mdi/bitmaps/save.xpm b/samples/mdi/bitmaps/save.xpm deleted file mode 100644 index 01b18f9340..0000000000 --- a/samples/mdi/bitmaps/save.xpm +++ /dev/null @@ -1,25 +0,0 @@ -/* XPM */ -static char *save_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 4 1", -" c None", -". c Black", -"X c #808000", -"o c #808080", -/* pixels */ -" ", -" .............. ", -" .X. . . ", -" .X. ... ", -" .X. .X. ", -" .X. .X. ", -" .X. .X. ", -" .X. .X. ", -" .XX........oX. ", -" .XXXXXXXXXXXX. ", -" .XX.........X. ", -" .XX...... .X. ", -" .XX...... .X. ", -" .XX...... .X. ", -" ............. " -}; diff --git a/samples/mdi/bitmaps/tick.bmp b/samples/mdi/bitmaps/tick.bmp deleted file mode 100644 index c0d66c94601657fee33b923de9b1791844d7a331..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 220 zcmXv`!4bnS2vd9<&b6P6(K-6>8h!H$UytTNvWqL(DMm;L@cVON#YuV*&l?*Ih5AeU z{bqVO)bKZHuqJq2P$o+ Qrwbl?Kzn<_G@1WzKlk4xlmGw# diff --git a/samples/mdi/bitmaps/write.xbm b/samples/mdi/bitmaps/write.xbm deleted file mode 100644 index 1409e98f1b..0000000000 --- a/samples/mdi/bitmaps/write.xbm +++ /dev/null @@ -1,14 +0,0 @@ -#define write_width 32 -#define write_height 32 -static char write_bits[] = { - 0x00, 0x80, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x20, 0x02, 0x00, - 0x00, 0x10, 0x04, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x04, 0x10, 0x00, - 0x00, 0x92, 0x20, 0x00, 0x00, 0x49, 0x40, 0x00, 0x80, 0x04, 0x81, 0x00, - 0x40, 0x90, 0x04, 0x01, 0x20, 0x09, 0x02, 0x02, 0x90, 0x20, 0x01, 0x04, - 0x08, 0x92, 0x00, 0x08, 0x24, 0x49, 0x00, 0x10, 0x92, 0x00, 0xfc, 0x20, - 0x49, 0x12, 0x02, 0x41, 0x22, 0x09, 0x01, 0x82, 0x84, 0x84, 0x0c, 0x44, - 0x48, 0x82, 0x13, 0x28, 0x10, 0x79, 0xfe, 0xf1, 0x20, 0x44, 0x0c, 0xe0, - 0x40, 0x82, 0x00, 0xe0, 0x80, 0x00, 0x01, 0xe0, 0x00, 0x01, 0x06, 0xe0, - 0x00, 0x02, 0xf8, 0xe7, 0x00, 0x04, 0x40, 0xf8, 0x00, 0x08, 0x20, 0xe0, - 0x00, 0x10, 0x10, 0x00, 0x00, 0x20, 0x08, 0x00, 0x00, 0x40, 0x04, 0x00, - 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00}; diff --git a/samples/mdi/chart.ico b/samples/mdi/chart.ico deleted file mode 100644 index 16d4a585fd3246e7a8dc43c45e010c006e643dd6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmc&wF%H5o40I7AQkYn&nArFNzsi_=qf@@p2UOx4jHOFdsgk)%D>cxHj+|r1*R$Ou zA_c50k3u|mA}8!ucnQD53)v%zcxdbJ5TSTKZiq7qFu*Pe;O)q})Br9M@2fs2xG_OluNwM{ zcSECEB^`=VZ-!Clq`-NP$D|`q^P8EoNK<|GI(*Wt>lv#s7a1^aS#Q-v=NLJDsYfc- TMvJ?z=wHXdA%Ehd{14;}SbUVL diff --git a/samples/mdi/makefile.b32 b/samples/mdi/makefile.b32 deleted file mode 100644 index 145ea61054..0000000000 --- a/samples/mdi/makefile.b32 +++ /dev/null @@ -1,16 +0,0 @@ -# -# File: makefile.b32 -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: -# -# Makefile : Builds sample for 32-bit BC++ - -WXDIR = $(WXWIN) - -TARGET=mdi -OBJECTS = $(TARGET).obj - -!include $(WXDIR)\src\makeprog.b32 - diff --git a/samples/mdi/makefile.bcc b/samples/mdi/makefile.bcc deleted file mode 100644 index 12e9f59eb6..0000000000 --- a/samples/mdi/makefile.bcc +++ /dev/null @@ -1,19 +0,0 @@ -# -# File: makefile.bcc -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Builds a BC++ 16-bit sample - -!if "$(WXWIN)" == "" -!error You must define the WXWIN variable in autoexec.bat, e.g. WXWIN=c:\wx -!endif - -WXDIR = $(WXWIN) - -TARGET=mdi -OBJECTS=$(TARGET).obj - -!include $(WXDIR)\src\makeprog.bcc - diff --git a/samples/mdi/makefile.dos b/samples/mdi/makefile.dos deleted file mode 100644 index 54c483503e..0000000000 --- a/samples/mdi/makefile.dos +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.dos -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Makefile : Builds 16-bit sample, VC++ 1.5 -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -WXDIR = $(WXWIN) - -TARGET=mdi -OBJECTS = $(TARGET).obj - -!include $(WXDIR)\src\makeprog.msc - diff --git a/samples/mdi/makefile.g95 b/samples/mdi/makefile.g95 deleted file mode 100644 index 045751ea89..0000000000 --- a/samples/mdi/makefile.g95 +++ /dev/null @@ -1,35 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile for mdi example (UNIX). - -WXDIR = ../.. - -# All common UNIX compiler flags and options are now in -# this central makefile. -include $(WXDIR)/src/makeg95.env - -OBJECTS = $(OBJDIR)/mdi.$(OBJSUFF) $(OBJDIR)/mdi_resources.$(OBJSUFF) - -all: $(OBJDIR) mdi.exe - -$(OBJDIR): - mkdir $(OBJDIR) - -mdi.exe: $(OBJECTS) $(WXLIB) - $(CC) $(LDFLAGS) -o mdi.exe $(OBJECTS) $(LDLIBS) - -$(OBJDIR)/mdi.$(OBJSUFF): mdi.$(SRCSUFF) mdi.h - $(CC) -c $(CPPFLAGS) -o $@ mdi.$(SRCSUFF) - -$(OBJDIR)/mdi_resources.o: mdi.rc - $(RESCOMP) -i mdi.rc -o $(OBJDIR)/mdi_resources.o $(RESFLAGS) - -clean: - rm -f $(OBJECTS) mdi$(GUISUFFIX).exe core *.res *.rsc diff --git a/samples/mdi/makefile.sc b/samples/mdi/makefile.sc deleted file mode 100644 index a90487946a..0000000000 --- a/samples/mdi/makefile.sc +++ /dev/null @@ -1,36 +0,0 @@ -# Symantec C++ makefile for mdi example -# NOTE that peripheral libraries are now dealt in main wxWindows makefile. - -WXDIR = $(WXWIN) -!include $(WXDIR)\src\makesc.env - -WXLIB = $(WXDIR)\lib\wx.lib -INCDIR = $(WXDIR)\include -MSWINC = $(INCDIR)\msw -BASEINC = $(INCDIR)\base - -CC=sc -RC=rc -CFLAGS = -o -ml -W -Dwx_msw -LDFLAGS = -ml -W - -INCLUDE=$(BASEINC);$(MSWINC) - -LIBS=$(WXLIB) libw.lib commdlg.lib shell.lib - -.$(SRCSUFF).obj: - *$(CC) -c $(CFLAGS) -I$(INCLUDE) $< - -.rc.res: - *$(RC) -r -I$(INCLUDE) $< - -mdi.exe: mdi.obj mdi.def mdi.res - *$(CC) $(LDFLAGS) -o$@ mdi.obj mdi.def $(LIBS) - *$(RC) -k mdi.res - -clean: - -del *.obj - -del *.exe - -del *.res - -del *.map - -del *.rws diff --git a/samples/mdi/makefile.twn b/samples/mdi/makefile.twn deleted file mode 100644 index dac98e5804..0000000000 --- a/samples/mdi/makefile.twn +++ /dev/null @@ -1,37 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1999 -# Updated: -# -# Makefile for mdi example (UNIX, TWIN32) - -WXDIR = ../.. - -# All common UNIX compiler flags and options are now in -# this central makefile. -include $(WXDIR)/src/maketwin.env - -OBJECTS = $(OBJDIR)/mdi.$(OBJSUFF) $(OBJDIR)/mdi_resources.$(OBJSUFF) - -all: $(OBJDIR) mdi$(GUISUFFIX)$(EXESUFF) - -wx: - -$(OBJDIR): - mkdir $(OBJDIR) - -mdi$(GUISUFFIX)$(EXESUFF): $(OBJECTS) $(WXLIB) - $(CC) $(LDFLAGS) -o mdi$(GUISUFFIX)$(EXESUFF) $(OBJECTS) $(LDLIBS) - -$(OBJDIR)/mdi.$(OBJSUFF): mdi.$(SRCSUFF) - $(CC) -c $(CPPFLAGS) -o $@ mdi.$(SRCSUFF) - -mdi_resources.c: mdi.rc - $(RESCOMP) $(RCINPUTSWITCH) mdi.rc $(RCOUTPUTSWITCH) mdi_resources.c $(RESFLAGS) - -$(OBJDIR)/mdi_resources.$(OBJSUFF): mdi_resources.c - $(CC) -c $(CPPFLAGS) -o $@ mdi_resources.c - -clean: - rm -f $(OBJECTS) mdi.exe core *.rsc *.res diff --git a/samples/mdi/makefile.unx b/samples/mdi/makefile.unx deleted file mode 100644 index 4c904e4c6f..0000000000 --- a/samples/mdi/makefile.unx +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1998 -# Updated: -# Copyright: (c) 1998 Julian Smart -# -# "%W% %G%" -# -# Makefile for mdi example (UNIX). - -PROGRAM=mdi - -OBJECTS=$(PROGRAM).o - -include ../../src/makeprog.env - diff --git a/samples/mdi/makefile.vc b/samples/mdi/makefile.vc deleted file mode 100644 index 058942ba05..0000000000 --- a/samples/mdi/makefile.vc +++ /dev/null @@ -1,18 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: (c) Julian Smart -# -# Makefile : Builds sample (VC++, WIN32) -# Use FINAL=1 argument to nmake to build final version with no debug info. - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -PROGRAM=mdi -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.vc - diff --git a/samples/mdi/makefile.vms b/samples/mdi/makefile.vms deleted file mode 100644 index 41d193c077..0000000000 --- a/samples/mdi/makefile.vms +++ /dev/null @@ -1,38 +0,0 @@ -#************************************************************************ -# Makefile for MDI under VMS -# by Stefan Hammes -# (incomplete) update history: -# 11.04.95 -#************************************************************************ - -#************************************************************************ -# Definition section -# (cave: definitions and includes must begin with ',') -#************************************************************************ - -APPOPTS = -APPDEFS = -APPINCS = - -#************************************************************************ -# Module section -#************************************************************************ - -# Name of main module -MAIN = mdi - -# Object modules of the application. -OBJS = mdi.obj -OBJLIST =mdi.obj - -.include [--.src]makevms.env - -# main dependency -$(MAIN).exe : $(OBJS) - $(LINK) $(LINKFLAGS) /exec=$(MAIN).exe $(OBJLIST),$(WXLIB)/lib,$(OPTSFILE)/option - - purge *.exe - -#************************************************************************ -# Header file depedencies following -#************************************************************************ - diff --git a/samples/mdi/makefile.wat b/samples/mdi/makefile.wat deleted file mode 100644 index 8df592246e..0000000000 --- a/samples/mdi/makefile.wat +++ /dev/null @@ -1,15 +0,0 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 -# -# - -WXDIR = $(%WXWIN) - -PROGRAM = mdi -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - diff --git a/samples/mdi/mdi.cpp b/samples/mdi/mdi.cpp deleted file mode 100644 index 10deb7665c..0000000000 --- a/samples/mdi/mdi.cpp +++ /dev/null @@ -1,359 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: mdi.cpp -// Purpose: MDI sample -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#include "wx/mdi.h" -#endif - -#include - -#if defined(__WXGTK__) || defined(__WXMOTIF__) -#include "mondrian.xpm" -#include "bitmaps/new.xpm" -#include "bitmaps/open.xpm" -#include "bitmaps/save.xpm" -#include "bitmaps/copy.xpm" -#include "bitmaps/cut.xpm" -#include "bitmaps/paste.xpm" -#include "bitmaps/print.xpm" -#include "bitmaps/help.xpm" -#endif - - -#include "mdi.h" - -MyFrame *frame = (MyFrame *) NULL; -wxList my_children; - -IMPLEMENT_APP(MyApp) - -// For drawing lines in a canvas -long xpos = -1; -long ypos = -1; - -int winNumber = 1; - -// Initialise this in OnInit, not statically -bool MyApp::OnInit(void) -{ - // Create the main frame window - - frame = new MyFrame((wxFrame *) NULL, -1, (char *) "MDI Demo", wxPoint(-1, -1), wxSize(500, 400), - wxDEFAULT_FRAME_STYLE | wxHSCROLL | wxVSCROLL); - - // Give it an icon -#ifdef __WXMSW__ - frame->SetIcon(wxIcon("mdi_icn")); -#else - frame->SetIcon(wxIcon( mondrian_xpm )); -#endif - - // Make a menubar - wxMenu *file_menu = new wxMenu; - - file_menu->Append(MDI_NEW_WINDOW, "&New window"); - file_menu->Append(MDI_QUIT, "&Exit"); - - wxMenu *help_menu = new wxMenu; - help_menu->Append(MDI_ABOUT, "&About"); - - wxMenuBar *menu_bar = new wxMenuBar; - - menu_bar->Append(file_menu, "&File"); - menu_bar->Append(help_menu, "&Help"); - - // Associate the menu bar with the frame - frame->SetMenuBar(menu_bar); - - frame->CreateStatusBar(); - - frame->Show(TRUE); - - SetTopWindow(frame); - - return TRUE; -} - -BEGIN_EVENT_TABLE(MyFrame, wxMDIParentFrame) - EVT_MENU(MDI_ABOUT, MyFrame::OnAbout) - EVT_MENU(MDI_NEW_WINDOW, MyFrame::OnNewWindow) - EVT_SIZE(MyFrame::OnSize) - EVT_MENU(MDI_QUIT, MyFrame::OnQuit) -END_EVENT_TABLE() - -// Define my frame constructor -MyFrame::MyFrame(wxWindow *parent, const wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, - const long style): - wxMDIParentFrame(parent, id, title, pos, size, style) -{ - textWindow = new wxTextCtrl(this, -1, "", wxDefaultPosition, wxDefaultSize, - wxTE_MULTILINE|wxSUNKEN_BORDER); - textWindow->SetValue("A help window"); - - CreateToolBar(wxNO_BORDER|wxTB_FLAT|wxTB_HORIZONTAL); - InitToolBar(GetToolBar()); - - // Accelerators - wxAcceleratorEntry entries[3]; - entries[0].Set(wxACCEL_CTRL, (int) 'N', MDI_NEW_WINDOW); - entries[1].Set(wxACCEL_CTRL, (int) 'X', MDI_QUIT); - entries[2].Set(wxACCEL_CTRL, (int) 'A', MDI_ABOUT); - wxAcceleratorTable accel(3, entries); - SetAcceleratorTable(accel); -} - -void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event) ) -{ - Close(TRUE); -} - -void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event) ) -{ - (void)wxMessageBox("wxWindows 2.0 MDI Demo\nAuthor: Julian Smart (c) 1997\nUsage: mdi.exe", "About MDI Demo"); -} - -void MyFrame::OnNewWindow(wxCommandEvent& WXUNUSED(event) ) -{ - // Make another frame, containing a canvas - MyChild *subframe = new MyChild(frame, "Canvas Frame", wxPoint(-1, -1), wxSize(-1, -1), - wxDEFAULT_FRAME_STYLE); - - wxString title; - title.Printf("Canvas Frame %d", winNumber); - subframe->SetTitle(title); - winNumber ++; - - // Give it an icon -#ifdef __WXMSW__ - subframe->SetIcon(wxIcon("chrt_icn")); -#else - subframe->SetIcon(wxIcon( mondrian_xpm )); -#endif - - // Make a menubar - wxMenu *file_menu = new wxMenu; - - file_menu->Append(MDI_NEW_WINDOW, "&New window"); - file_menu->Append(MDI_CHILD_QUIT, "&Close child"); - file_menu->Append(MDI_QUIT, "&Exit"); - - wxMenu *option_menu = new wxMenu; - - // Dummy option - option_menu->Append(MDI_REFRESH, "&Refresh picture"); - - wxMenu *help_menu = new wxMenu; - help_menu->Append(MDI_ABOUT, "&About"); - - wxMenuBar *menu_bar = new wxMenuBar; - - menu_bar->Append(file_menu, "&File"); - menu_bar->Append(option_menu, "&Options"); - menu_bar->Append(help_menu, "&Help"); - - // Associate the menu bar with the frame - subframe->SetMenuBar(menu_bar); - - int width, height; - subframe->GetClientSize(&width, &height); - MyCanvas *canvas = new MyCanvas(subframe, wxPoint(0, 0), wxSize(width, height)); - canvas->SetCursor(wxCursor(wxCURSOR_PENCIL)); - subframe->canvas = canvas; - - // Give it scrollbars - canvas->SetScrollbars(20, 20, 50, 50); - - subframe->Show(TRUE); -} - -BEGIN_EVENT_TABLE(MyCanvas, wxScrolledWindow) - EVT_MOUSE_EVENTS(MyCanvas::OnEvent) -END_EVENT_TABLE() - -// Define a constructor for my canvas -MyCanvas::MyCanvas(wxWindow *parent, const wxPoint& pos, const wxSize& size): - wxScrolledWindow(parent, -1, pos, size, wxSUNKEN_BORDER|wxVSCROLL|wxHSCROLL) -{ - SetBackgroundColour(wxColour("WHITE")); -} - -// Define the repainting behaviour -void MyCanvas::OnDraw(wxDC& dc) -{ - dc.SetFont(*wxSWISS_FONT); - dc.SetPen(*wxGREEN_PEN); - dc.DrawLine(0, 0, 200, 200); - dc.DrawLine(200, 0, 0, 200); - - dc.SetBrush(*wxCYAN_BRUSH); - dc.SetPen(*wxRED_PEN); - dc.DrawRectangle(100, 100, 100, 50); - dc.DrawRoundedRectangle(150, 150, 100, 50, 20); - - dc.DrawEllipse(250, 250, 100, 50); - dc.DrawSpline(50, 200, 50, 100, 200, 10); - dc.DrawLine(50, 230, 200, 230); - dc.DrawText("This is a test string", 50, 230); - - wxPoint points[3]; - points[0].x = 200; points[0].y = 300; - points[1].x = 100; points[1].y = 400; - points[2].x = 300; points[2].y = 400; - - dc.DrawPolygon(3, points); -} - -// This implements a tiny doodling program! Drag the mouse using -// the left button. -void MyCanvas::OnEvent(wxMouseEvent& event) -{ - wxClientDC dc(this); - PrepareDC(dc); - - wxPoint pt(event.GetLogicalPosition(dc)); - - if (xpos > -1 && ypos > -1 && event.Dragging()) - { - dc.SetPen(*wxBLACK_PEN); - dc.DrawLine(xpos, ypos, pt.x, pt.y); - } - xpos = pt.x; - ypos = pt.y; -} - -// Define the behaviour for the frame closing -// - must delete all frames except for the main one. -bool MyFrame::OnClose(void) -{ - // Must delete children - wxNode *node = my_children.First(); - while (node) - { - MyChild *child = (MyChild *)node->Data(); - wxNode *next = node->Next(); - child->OnClose(); - delete child; - node = next; - } - return TRUE; -} - -void MyFrame::OnSize(wxSizeEvent& WXUNUSED(event) ) -{ - int w, h; - GetClientSize(&w, &h); - - textWindow->SetSize(0, 0, 200, h); - GetClientWindow()->SetSize(200, 0, w - 200, h); -} - -// Note that MDI_NEW_WINDOW and MDI_ABOUT commands get passed -// to the parent window for processing, so no need to -// duplicate event handlers here. - -BEGIN_EVENT_TABLE(MyChild, wxMDIChildFrame) - EVT_MENU(MDI_CHILD_QUIT, MyChild::OnQuit) -END_EVENT_TABLE() - -MyChild::MyChild(wxMDIParentFrame *parent, const wxString& title, const wxPoint& pos, const wxSize& size, -const long style): - wxMDIChildFrame(parent, -1, title, pos, size, style) -{ - canvas = (MyCanvas *) NULL; - my_children.Append(this); -} - -MyChild::~MyChild(void) -{ - my_children.DeleteObject(this); -} - -void MyChild::OnQuit(wxCommandEvent& WXUNUSED(event)) -{ - Close(TRUE); -} - -void MyChild::OnActivate(wxActivateEvent& event) -{ - if (event.GetActive() && canvas) - canvas->SetFocus(); -} - -bool MyChild::OnClose(void) -{ - return TRUE; -} - -void MyFrame::InitToolBar(wxToolBar* toolBar) -{ - wxBitmap* bitmaps[8]; - -#ifdef __WXMSW__ - bitmaps[0] = new wxBitmap("icon1", wxBITMAP_TYPE_RESOURCE); - bitmaps[1] = new wxBitmap("icon2", wxBITMAP_TYPE_RESOURCE); - bitmaps[2] = new wxBitmap("icon3", wxBITMAP_TYPE_RESOURCE); - bitmaps[3] = new wxBitmap("icon4", wxBITMAP_TYPE_RESOURCE); - bitmaps[4] = new wxBitmap("icon5", wxBITMAP_TYPE_RESOURCE); - bitmaps[5] = new wxBitmap("icon6", wxBITMAP_TYPE_RESOURCE); - bitmaps[6] = new wxBitmap("icon7", wxBITMAP_TYPE_RESOURCE); - bitmaps[7] = new wxBitmap("icon8", wxBITMAP_TYPE_RESOURCE); -#else - bitmaps[0] = new wxBitmap( new_xpm ); - bitmaps[1] = new wxBitmap( open_xpm ); - bitmaps[2] = new wxBitmap( save_xpm ); - bitmaps[3] = new wxBitmap( copy_xpm ); - bitmaps[4] = new wxBitmap( cut_xpm ); - bitmaps[5] = new wxBitmap( paste_xpm ); - bitmaps[6] = new wxBitmap( print_xpm ); - bitmaps[7] = new wxBitmap( help_xpm ); -#endif - -#ifdef __WXMSW__ - int width = 24; -#else - int width = 16; -#endif - int currentX = 5; - - toolBar->AddTool( MDI_NEW_WINDOW, *(bitmaps[0]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "New file"); - currentX += width + 5; - toolBar->AddTool(1, *bitmaps[1], wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Open file"); - currentX += width + 5; - toolBar->AddTool(2, *bitmaps[2], wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Save file"); - currentX += width + 5; - toolBar->AddSeparator(); - toolBar->AddTool(3, *bitmaps[3], wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Copy"); - currentX += width + 5; - toolBar->AddTool(4, *bitmaps[4], wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Cut"); - currentX += width + 5; - toolBar->AddTool(5, *bitmaps[5], wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Paste"); - currentX += width + 5; - toolBar->AddSeparator(); - toolBar->AddTool(6, *bitmaps[6], wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Print"); - currentX += width + 5; - toolBar->AddSeparator(); - toolBar->AddTool(7, *bitmaps[7], wxNullBitmap, TRUE, currentX, -1, (wxObject *) NULL, "Help"); - - toolBar->Realize(); - - int i; - for (i = 0; i < 8; i++) - delete bitmaps[i]; -} - diff --git a/samples/mdi/mdi.def b/samples/mdi/mdi.def deleted file mode 100644 index 1d2353702e..0000000000 --- a/samples/mdi/mdi.def +++ /dev/null @@ -1,8 +0,0 @@ -NAME Mdi -DESCRIPTION 'MDI/SDI Test Program' -EXETYPE WINDOWS -STUB 'WINSTUB.EXE' -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE -HEAPSIZE 6000 -STACKSIZE 48000 diff --git a/samples/mdi/mdi.h b/samples/mdi/mdi.h deleted file mode 100644 index 7415c60585..0000000000 --- a/samples/mdi/mdi.h +++ /dev/null @@ -1,67 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: mdi.cpp -// Purpose: MDI sample -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#include - -// Define a new application -class MyApp: public wxApp -{ - public: - bool OnInit(void); -}; - -class MyCanvas: public wxScrolledWindow -{ - public: - MyCanvas(wxWindow *parent, const wxPoint& pos, const wxSize& size); - virtual void OnDraw(wxDC& dc); - void OnEvent(wxMouseEvent& event); - - DECLARE_EVENT_TABLE() -}; - -// Define a new frame -class MyFrame: public wxMDIParentFrame -{ - public: - wxTextCtrl *textWindow; - - MyFrame(wxWindow *parent, const wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, const long style); - - void InitToolBar(wxToolBar* toolBar); - - bool OnClose(void); - void OnSize(wxSizeEvent& event); - void OnAbout(wxCommandEvent& event); - void OnNewWindow(wxCommandEvent& event); - void OnQuit(wxCommandEvent& event); - -DECLARE_EVENT_TABLE() -}; - -class MyChild: public wxMDIChildFrame -{ - public: - MyCanvas *canvas; - MyChild(wxMDIParentFrame *parent, const wxString& title, const wxPoint& pos, const wxSize& size, const long style); - ~MyChild(void); - bool OnClose(void); - void OnActivate(wxActivateEvent& event); - void OnQuit(wxCommandEvent& event); - -DECLARE_EVENT_TABLE() -}; - -#define MDI_QUIT 1 -#define MDI_NEW_WINDOW 2 -#define MDI_REFRESH 3 -#define MDI_CHILD_QUIT 4 -#define MDI_ABOUT 5 diff --git a/samples/mdi/mdi.ico b/samples/mdi/mdi.ico deleted file mode 100644 index 2dc1bde40cf921731fb2f7c6534054c6fb8d96d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmah{IgY|W5G*e%tq=i3o32BCvHXmAf>Zy(`6TlchZ{QF05Mc`&y2+((WbBJ>H`DN z@#*^mB!3^kH~o>?Q%}?mpR_<=?X?6JSqZ@%EkkNRN{NMRALOiv%14mQONo@Vuu~f2 zR1r@bqoxHgHqbgO7{>y8VLOh4a849H4Zzj{FAJP(g5{I-n)O_*F$%SIE3<<+Nj^dZ zMrsmnqFCH}{&VhK#xlN*^s!HQyVC2cT_ZcBoK?PWy+p6H9A{2%_%Scn3ie-MC5TR` zfM>p7Bv6> diff --git a/samples/mdi/mdi.rc b/samples/mdi/mdi.rc deleted file mode 100644 index 173542b99b..0000000000 --- a/samples/mdi/mdi.rc +++ /dev/null @@ -1,24 +0,0 @@ -aaaa ICON "mondrian.ico" - -/* Useful if PROVIDE_DEFAULT_ICONS is set in wx_setup.h */ -#define IHaveMDIParentIcon -#define IHaveMDIChildIcon - -wxSTD_MDIPARENTFRAME ICON "mondrian.ico" -wxSTD_MDICHILDFRAME ICON "chart.ico" - -mdi_icn ICON "mondrian.ico" -chrt_icn ICON "chart.ico" - -icon1 BITMAP "bitmaps/new.bmp" -icon2 BITMAP "bitmaps/open.bmp" -icon3 BITMAP "bitmaps/save.bmp" -icon4 BITMAP "bitmaps/copy.bmp" -icon5 BITMAP "bitmaps/cut.bmp" -icon6 BITMAP "bitmaps/paste.bmp" -icon7 BITMAP "bitmaps/print.bmp" - -icon8 BITMAP "bitmaps/help.bmp" - -#include "wx/msw/wx.rc" - diff --git a/samples/mdi/mondrian.ico b/samples/mdi/mondrian.ico deleted file mode 100644 index 2310c5d275a87af295d5ea8dc79ea417a5e74c53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmZQzU<5)11px*Sc)`TLAO@s0fLH;D9e|jTfdxnc0ZSetIcon(wxICON(mondrian)); - - // Make a menubar - wxMenu *file_menu = new wxMenu; - - file_menu->Append(wxID_EXIT, "E&xit"); - wxMenuBar *menu_bar = new wxMenuBar; - menu_bar->Append(file_menu, "File"); - frame->SetMenuBar(menu_bar); - - // Make a panel with a message - wxPanel *panel = new wxPanel(frame); - - (void)new wxStaticText(panel, -1, "Hello, this is a minimal debugging wxWindows program!", wxPoint(10, 10)); - - // Show the frame - frame->Show(TRUE); - - wxDebugContext::SetCheckpoint(); - - wxString *thing = new wxString; - wxDate* date = new wxDate; - - // non-object allocation - char *ordinaryNonObject = new char[1000]; - - const char *data = (const char*) thing ; - - wxDebugContext::PrintClasses(); - wxDebugContext::Dump(); - wxDebugContext::PrintStatistics(); - - // Don't delete these objects, to force wxApp to flag a memory leak. -// delete thing; -// delete date; -// delete[] ordinaryNonObject; - - return TRUE; -} - -BEGIN_EVENT_TABLE(MyFrame, wxFrame) - EVT_MENU(wxID_EXIT, MyFrame::OnQuit) -END_EVENT_TABLE() - -// My frame constructor -MyFrame::MyFrame(wxFrame *parent): - wxFrame(parent, -1, "MemCheck wxWindows Sample", wxPoint(-1, -1), wxSize(400, 200)) -{} - -// Intercept menu commands -void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) -{ - Close(TRUE); -} - diff --git a/samples/memcheck/memcheck.def b/samples/memcheck/memcheck.def deleted file mode 100644 index 4986704cdd..0000000000 --- a/samples/memcheck/memcheck.def +++ /dev/null @@ -1,8 +0,0 @@ -NAME Memcheck -DESCRIPTION 'Memcheck wxWindows application' -EXETYPE WINDOWS -STUB 'WINSTUB.EXE' -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE -HEAPSIZE 1024 -STACKSIZE 8192 diff --git a/samples/memcheck/memcheck.rc b/samples/memcheck/memcheck.rc deleted file mode 100644 index 7655c62a4c..0000000000 --- a/samples/memcheck/memcheck.rc +++ /dev/null @@ -1,3 +0,0 @@ -mondrian ICON "mondrian.ico" -#include "wx/msw/wx.rc" - diff --git a/samples/memcheck/mondrian.ico b/samples/memcheck/mondrian.ico deleted file mode 100644 index 2310c5d275a87af295d5ea8dc79ea417a5e74c53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmZQzU<5)11px*Sc)`TLAO@s0fLH;D9e|jTfdxnc0ZShowWindow( m_nCmdShow ); - m_pMainWnd->UpdateWindow(); -*/ - - if (wxTheApp && wxTheApp->GetTopWindow()) - { - m_pMainWnd = new CDummyWindow((HWND) wxTheApp->GetTopWindow()->GetHWND()); - } - - return TRUE; -} - -int CTheApp::ExitInstance() -{ - wxApp::CleanUp(); - - return CWinApp::ExitInstance(); -} - -// Override this to provide wxWindows message loop -// compatibility - -BOOL CTheApp::PreTranslateMessage(MSG *msg) -{ - if (wxTheApp && wxTheApp->ProcessMessage((WXMSG*) msg)) - return TRUE; - else - return CWinApp::PreTranslateMessage(msg); -} - -BOOL CTheApp::OnIdle(LONG lCount) -{ - if (wxTheApp) - return wxTheApp->ProcessIdle(); - else - return FALSE; -} - -/********************************************************************* - * wxWindows elements - ********************************************************************/ - -bool MyApp::OnInit(void) -{ - // Don't exit app when the top level frame is deleted -// SetExitOnFrameDelete(FALSE); - - // Create a red pen - red_pen = new wxPen("RED", 3, wxSOLID); - - // Create a small font - small_font = new wxFont(10, wxSWISS, wxNORMAL, wxNORMAL); - - wxFrame* frame = CreateFrame(); - return TRUE; -} - -wxFrame *MyApp::CreateFrame(void) -{ - MyChild *subframe = new MyChild(NULL, "Canvas Frame", wxPoint(10, 10), wxSize(300, 300), - wxDEFAULT_FRAME); - - subframe->SetTitle("wxWindows canvas frame"); - - // Give it a status line - subframe->CreateStatusBar(); - - // Make a menubar - wxMenu *file_menu = new wxMenu; - - file_menu->Append(HELLO_NEW, "&New MFC Window"); - file_menu->Append(HELLO_QUIT, "&Close"); - - wxMenuBar *menu_bar = new wxMenuBar; - - menu_bar->Append(file_menu, "&File"); - - // Associate the menu bar with the frame - subframe->SetMenuBar(menu_bar); - - int width, height; - subframe->GetClientSize(&width, &height); - - MyCanvas *canvas = new MyCanvas(subframe, wxPoint(0, 0), wxSize(width, height)); - wxCursor *cursor = new wxCursor(wxCURSOR_PENCIL); - canvas->SetCursor(cursor); - subframe->canvas = canvas; - - // Give it scrollbars -// canvas->SetScrollbars(20, 20, 50, 50, 4, 4); - - subframe->Show(TRUE); - // Return the main frame window - return subframe; -} - -BEGIN_EVENT_TABLE(MyCanvas, wxScrolledWindow) - EVT_PAINT(MyCanvas::OnPaint) - EVT_MOUSE_EVENTS(MyCanvas::OnMouseEvent) -END_EVENT_TABLE() - -// Define a constructor for my canvas -MyCanvas::MyCanvas(wxWindow *parent, const wxPoint& pos, const wxSize& size): - wxScrolledWindow(parent, -1, pos, size) -{ -} - -// Define the repainting behaviour -void MyCanvas::OnPaint(wxPaintEvent& event) -{ - wxPaintDC dc(this); - - dc.SetFont(small_font); - dc.SetPen(wxGREEN_PEN); - dc.DrawLine(0, 0, 200, 200); - dc.DrawLine(200, 0, 0, 200); - - dc.SetBrush(wxCYAN_BRUSH); - dc.SetPen(wxRED_PEN); - dc.DrawRectangle(100, 100, 100, 50); - dc.DrawRoundedRectangle(150, 150, 100, 50, 20); - - dc.DrawEllipse(250, 250, 100, 50); - dc.DrawSpline(50, 200, 50, 100, 200, 10); - dc.DrawLine(50, 230, 200, 230); - dc.DrawText("This is a test string", 50, 230); -} - -// This implements a tiny doodling program! Drag the mouse using -// the left button. -void MyCanvas::OnMouseEvent(wxMouseEvent& event) -{ - wxClientDC dc(this); - dc.SetPen(wxBLACK_PEN); - long x, y; - event.Position(&x, &y); - if (xpos > -1 && ypos > -1 && event.Dragging()) - { - dc.DrawLine(xpos, ypos, x, y); - } - xpos = x; - ypos = y; -} - -BEGIN_EVENT_TABLE(MyChild, wxFrame) - EVT_MENU(HELLO_QUIT, MyChild::OnQuit) - EVT_MENU(HELLO_NEW, MyChild::OnNew) - EVT_ACTIVATE(MyChild::OnActivate) -END_EVENT_TABLE() - -MyChild::MyChild(wxFrame *frame, const wxString& title, const wxPoint& pos, const wxSize& size, const long style): - wxFrame(frame, -1, title, pos, size, style) -{ - canvas = NULL; -} - -MyChild::~MyChild(void) -{ -} - -void MyChild::OnQuit(wxCommandEvent& event) -{ - Close(TRUE); -} - -void MyChild::OnNew(wxCommandEvent& event) -{ - CMainWindow *mainWin = new CMainWindow(); - mainWin->ShowWindow( TRUE ); - mainWin->UpdateWindow(); -} - -void MyChild::OnActivate(wxActivateEvent& event) -{ - if (event.GetActive() && canvas) - canvas->SetFocus(); -} - -Bool MyChild::OnClose(void) -{ - return TRUE; -} - - -// Dummy MFC window for specifying a valid main window to MFC, using -// a wxWindows HWND. -CDummyWindow::CDummyWindow(HWND hWnd):CWnd() -{ - Attach(hWnd); -} - -// Don't let the CWnd destructor delete the HWND -CDummyWindow::~CDummyWindow(void) -{ - Detach(); -} - diff --git a/samples/mfc/mfctest.def b/samples/mfc/mfctest.def deleted file mode 100644 index 7c741d1059..0000000000 --- a/samples/mfc/mfctest.def +++ /dev/null @@ -1,21 +0,0 @@ -; hello.def : Declares the module parameters for the application. -; -; This is a part of the Microsoft Foundation Classes C++ library. -; Copyright (C) 1992 Microsoft Corporation -; All rights reserved. -; -; This source code is only intended as a supplement to the -; Microsoft Foundation Classes Reference and Microsoft -; WinHelp documentation provided with the library. -; See these sources for detailed information regarding the -; Microsoft Foundation Classes product. - -NAME Hello -DESCRIPTION 'Hello Microsoft Foundation Classes Windows Application' - -EXETYPE WINDOWS - -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE - -HEAPSIZE 1024 diff --git a/samples/mfc/mfctest.h b/samples/mfc/mfctest.h deleted file mode 100644 index 038a08cad2..0000000000 --- a/samples/mfc/mfctest.h +++ /dev/null @@ -1,66 +0,0 @@ -// hello.h : Declares the class interfaces for the application. -// Hello is a simple program which consists of a main window -// and an "About" dialog which can be invoked by a menu choice. -// It is intended to serve as a starting-point for new -// applications. -// -// This is a part of the Microsoft Foundation Classes C++ library. -// Copyright (C) 1992 Microsoft Corporation -// All rights reserved. -// -// This source code is only intended as a supplement to the -// Microsoft Foundation Classes Reference and Microsoft -// WinHelp documentation provided with the library. -// See these sources for detailed information regarding the -// Microsoft Foundation Classes product. - -#ifndef __MFCTEST_H__ -#define __MFCTEST_H__ - -///////////////////////////////////////////////////////////////////////////// - -// CMainWindow: -// See hello.cpp for the code to the member functions and the message map. -// -class CMainWindow : public CFrameWnd -{ -public: - CMainWindow(); - - //{{AFX_MSG( CMainWindow ) - afx_msg void OnPaint(); - afx_msg void OnAbout(); - afx_msg void OnTest(); - //}}AFX_MSG - - DECLARE_MESSAGE_MAP() -}; - -// A dummy CWnd pointing to a wxWindow's HWND -class CDummyWindow: public CWnd -{ - public: - CDummyWindow(HWND hWnd); - ~CDummyWindow(void); -}; - -///////////////////////////////////////////////////////////////////////////// - -// CTheApp: -// See hello.cpp for the code to the InitInstance member function. -// -class CTheApp : public CWinApp -{ -public: - BOOL InitInstance(); - int ExitInstance(); - - // Override this to provide wxWindows message loop - // compatibility - BOOL PreTranslateMessage(MSG *msg); - BOOL OnIdle(LONG lCount); -}; - -///////////////////////////////////////////////////////////////////////////// - -#endif // __MFCTEST_H__ diff --git a/samples/mfc/mfctest.ico b/samples/mfc/mfctest.ico deleted file mode 100644 index 331b675b63ea5c7aebc8502a2b459568cedd7564..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmc(cF%H5o3`KttW2G`NcjOoxEl0}@dJV=Npi+6?4xs}hQk~jy`s~C`q=7NdH(6d6 z>CXH>XY`2$s)6q)1hh-NvO=qy5Co z`COXnu|8>Zg}pwwJLvWQpL4=z|CL)s`uVx+ykXyP)c3_vA9z%I33Im=o8yxL-kcGw dBql_1DBSqSBlEx`(MPoWeAkv98#(wac>^wsLdgIC diff --git a/samples/mfc/mfctest.rc b/samples/mfc/mfctest.rc deleted file mode 100644 index 7c5da8b070..0000000000 --- a/samples/mfc/mfctest.rc +++ /dev/null @@ -1,108 +0,0 @@ -//Microsoft App Studio generated resource script. -// -#include "wx/msw/wx.rc" -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "afxres.h" - - -///////////////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - - -////////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -AFX_IDI_STD_FRAME ICON DISCARDABLE "MFCTEST.ICO" - -////////////////////////////////////////////////////////////////////////////// -// -// Menu -// - -MAINMENU MENU DISCARDABLE -BEGIN - POPUP "&File" - BEGIN - MENUITEM "&Test wxWindows", IDM_TEST - END - POPUP "&Help" - BEGIN - MENUITEM "&About Hello...\tF1", IDM_ABOUT - END -END - - -////////////////////////////////////////////////////////////////////////////// -// -// Accelerator -// - -MAINACCELTABLE ACCELERATORS MOVEABLE PURE -BEGIN - VK_F1, IDM_ABOUT, VIRTKEY -END - - -////////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -ABOUTBOX DIALOG DISCARDABLE 34, 22, 144, 75 -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "About Hello" -FONT 8, "Helv" -BEGIN - CTEXT "Microsoft Windows",IDC_STATIC,0,5,144,8 - CTEXT "Microsoft Foundation Classes",IDC_STATIC,0,14,144,8 - CTEXT "Hello, Windows!",IDC_STATIC,0,23,144,8 - CTEXT "Version 2.0",IDC_STATIC,0,36,144,8 - DEFPUSHBUTTON "OK",IDOK,56,53,32,14,WS_GROUP -END - -#ifdef APSTUDIO_INVOKED -////////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE DISCARDABLE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE DISCARDABLE -BEGIN - "#include ""afxres.h""\r\n" - "\r\n" - "\0" -END - -3 TEXTINCLUDE DISCARDABLE -BEGIN - "\r\n" - "\0" -END - -///////////////////////////////////////////////////////////////////////////////////// -#endif // APSTUDIO_INVOKED - - -#ifndef APSTUDIO_INVOKED -//////////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/samples/mfc/resource.h b/samples/mfc/resource.h deleted file mode 100644 index e20ad76cbb..0000000000 --- a/samples/mfc/resource.h +++ /dev/null @@ -1,18 +0,0 @@ -//{{NO_DEPENDENCIES}} -// App Studio generated include file. -// Used by HELLO.RC -// -#define IDM_ABOUT 100 -#define IDM_TEST 101 - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS - -#define _APS_NEXT_RESOURCE_VALUE 110 -#define _APS_NEXT_COMMAND_VALUE 32768 -#define _APS_NEXT_CONTROL_VALUE 1000 -#define _APS_NEXT_SYMED_VALUE 112 -#endif -#endif diff --git a/samples/mfc/stdafx.h b/samples/mfc/stdafx.h deleted file mode 100644 index 5b9f153634..0000000000 --- a/samples/mfc/stdafx.h +++ /dev/null @@ -1,12 +0,0 @@ -// This is a part of the Microsoft Foundation Classes C++ library. -// Copyright (C) 1992 Microsoft Corporation -// All rights reserved. -// -// This source code is only intended as a supplement to the -// Microsoft Foundation Classes Reference and Microsoft -// WinHelp documentation provided with the library. -// See these sources for detailed information regarding the -// Microsoft Foundation Classes product. - - -#include diff --git a/samples/minifram/.cvsignore b/samples/minifram/.cvsignore deleted file mode 100644 index 7957c41216..0000000000 --- a/samples/minifram/.cvsignore +++ /dev/null @@ -1,3 +0,0 @@ -Linux -linux-gnu -linux \ No newline at end of file diff --git a/samples/minifram/Makefile b/samples/minifram/Makefile deleted file mode 100644 index bccce53f76..0000000000 --- a/samples/minifram/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../../setup/general/makeapp diff --git a/samples/minifram/Makefile.in b/samples/minifram/Makefile.in deleted file mode 100644 index 975b6b1702..0000000000 --- a/samples/minifram/Makefile.in +++ /dev/null @@ -1,26 +0,0 @@ -# WXXT base directory -WXBASEDIR=@WXBASEDIR@ - -# set the OS type for compilation -OS=@OS@ -# compile a library only -RULE=bin - -# define library name -BIN_TARGET=minifram -# define library sources -BIN_SRC=\ -test.cpp - -#define library objects -BIN_OBJ=\ -test.o - -# additional things needed to link -BIN_LINK= - -# additional things needed to compile -ADD_COMPILE= - -# include the definitions now -include ../../../template.mak diff --git a/samples/minifram/bitmaps/copy.bmp b/samples/minifram/bitmaps/copy.bmp deleted file mode 100644 index 4551a06bfa79e0a42c1ffb7cdbb90fd4f699dce2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 238 zcmZvVK?*`K3`9pLxU9$U91{2|@hV+>tjiv)Cz3AyzP{vxy7<$~OeTT!c7JQf6T89- z%?kmn<${;(P#uFN<0A#FuUo(qgT{&F@ekspii W=d@ZzPG(Cb=QBs}_=7thzxV(viB<;y diff --git a/samples/minifram/bitmaps/copy.xpm b/samples/minifram/bitmaps/copy.xpm deleted file mode 100644 index 47565c1cae..0000000000 --- a/samples/minifram/bitmaps/copy.xpm +++ /dev/null @@ -1,25 +0,0 @@ -/* XPM */ -static char *copy_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 4 1", -" c None", -". c Black", -"X c Gray100", -"o c #000080", -/* pixels */ -" ", -" ...... ", -" .XXXX.. ", -" .XXXX.X. ", -" .X..X.oooooo ", -" .XXXXXoXXXXoo ", -" .X....oXXXXoXo ", -" .XXXXXoX..Xoooo", -" .X....oXXXXXXXo", -" .XXXXXoX.....Xo", -" ......oXXXXXXXo", -" oX.....Xo", -" oXXXXXXXo", -" ooooooooo", -" " -}; diff --git a/samples/minifram/bitmaps/cut.bmp b/samples/minifram/bitmaps/cut.bmp deleted file mode 100644 index 15554338a01bc4d8f0a501c32237e84200e64583..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 238 zcmZvU!3}^Q5Cqr6gr}Ba8OD(CvKJo2^+{<|WDB@(K8*2TclNjo+kV075Ef~cCTYMZ z2hQ$)mH}PlY>+FWlp?l4?H9GSBqTFi~p=nI%+}YJ={H-mN0|?29BK#fUL#erbtT(lh^R?4vYy(d-6AGn1|j$rr}v KbDqI%Xjd+{i$y;G diff --git a/samples/minifram/bitmaps/help.xpm b/samples/minifram/bitmaps/help.xpm deleted file mode 100644 index 50fdb4157e..0000000000 --- a/samples/minifram/bitmaps/help.xpm +++ /dev/null @@ -1,25 +0,0 @@ -/* XPM */ -static char *help_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 4 1", -" c None", -". c Black", -"X c Blue", -"o c #000080", -/* pixels */ -" ", -" ...... ", -" .XXXXX.. ", -" .XX...oX.. ", -" .X.. .X.. ", -" .X.. .XX.. ", -" .. .XX.. ", -" .XX.. ", -" .X.. ", -" .X.. ", -" .o.. ", -" .. ", -" .XX.. ", -" .XX.. ", -" ... " -}; diff --git a/samples/minifram/bitmaps/new.bmp b/samples/minifram/bitmaps/new.bmp deleted file mode 100644 index d66feb2384ad4c626a078c995c1a3e49af78ec3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 238 zcmbu2yA6Oa5JQcGL>b0l4tjP;1(ew=nJ8j|<6WY3bU0`GK9aK^RUId`!4(ELX-1{H u>6c`QQqJ8_T9s0iQsQ8(Wab^@`3kuPA_p->w)Xt4Pkz>06 diff --git a/samples/minifram/bitmaps/new.xpm b/samples/minifram/bitmaps/new.xpm deleted file mode 100644 index 754d2d20a2..0000000000 --- a/samples/minifram/bitmaps/new.xpm +++ /dev/null @@ -1,24 +0,0 @@ -/* XPM */ -static char *new_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 3 1", -" c None", -". c Black", -"X c Gray100", -/* pixels */ -" ", -" ........ ", -" .XXXXXX.. ", -" .XXXXXX.X. ", -" .XXXXXX.... ", -" .XXXXXXXXX. ", -" .XXXXXXXXX. ", -" .XXXXXXXXX. ", -" .XXXXXXXXX. ", -" .XXXXXXXXX. ", -" .XXXXXXXXX. ", -" .XXXXXXXXX. ", -" .XXXXXXXXX. ", -" ........... ", -" " -}; diff --git a/samples/minifram/bitmaps/open.bmp b/samples/minifram/bitmaps/open.bmp deleted file mode 100644 index bbf93fe03364e63f3e18a3507a0e85ab8ea2f87d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 238 zcmXv{u@M3>3=;=;U&0ua+_3>YyQsonW~6N3OvKTr2(k@|B{{YeKb~(CUb3rr5zpcQ zCn>O}mP9XDa6kd~GO1FGG0<95V`X5i$V8neN$dxz4&8XX3!AZr-;ApY^eS-9oTLj~ Y^Hcc9z2|$wrXTtLH=Rc2n(WoWFRhqJ00000 diff --git a/samples/minifram/bitmaps/open.xpm b/samples/minifram/bitmaps/open.xpm deleted file mode 100644 index 54748e910d..0000000000 --- a/samples/minifram/bitmaps/open.xpm +++ /dev/null @@ -1,26 +0,0 @@ -/* XPM */ -static char *open_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 5 1", -" c None", -". c Black", -"X c Yellow", -"o c Gray100", -"O c #bfbf00", -/* pixels */ -" ", -" ... ", -" . . .", -" ..", -" ... ...", -" .XoX....... ", -" .oXoXoXoXo. ", -" .XoXoXoXoX. ", -" .oXoX..........", -" .XoX.OOOOOOOOO.", -" .oo.OOOOOOOOO. ", -" .X.OOOOOOOOO. ", -" ..OOOOOOOOO. ", -" ........... ", -" " -}; diff --git a/samples/minifram/bitmaps/page.bmp b/samples/minifram/bitmaps/page.bmp deleted file mode 100644 index 3dbd4b05b4c2d1a4f046141d450caf34c1a3d470..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 714 zcmaJk)fu{chJ-2TT-iZmtVS?uc5roS;-EuD8k*^vaH9hj_d6X ziQgC358^U$kRpEdIqzx8X~Jz0i&xCtBKWwA%eHOw^mwIrw+KG&;&N&1L*Q{1Xmx8p zxBo0O*pac2@{B`!>-fgLdSDP(C2}M>_DcBv60g*0UKyHhy!Oc8UYD-XBeIyOWTry_ zTA4Yuua#Ixm?vFMcI3@F*>XSp02Lyo AJ^%m! diff --git a/samples/minifram/bitmaps/paste.bmp b/samples/minifram/bitmaps/paste.bmp deleted file mode 100644 index 564f514e0df7225f0a7adbe8457b41af537813bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 238 zcmZvVF%Ci@5Jbns$83OZ*I;# co}I%%@f6>ra3+S=gC69}eM%GII+SAI4J;x>B>(^b diff --git a/samples/minifram/bitmaps/preview.bmp b/samples/minifram/bitmaps/preview.bmp deleted file mode 100644 index da1f4dbc4be6c2dd8fb9d7cb71cc48a4a7c139ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 238 zcmZvVu?@p83pv2yNo4mlT?N_pr2ISnd1NHDM5O^cFcMc59&^> z)PfrwsOeYM05)2ipmU4fJIss+o(=cdQCu+!%TlZiKDH!a!aP2;C|UGpLD9M;zmsLJ XIp;lzIUm!ckI6HO{IjaYcZ_-fA4^nl diff --git a/samples/minifram/bitmaps/preview.xpm b/samples/minifram/bitmaps/preview.xpm deleted file mode 100644 index 0dfdca46e1..0000000000 --- a/samples/minifram/bitmaps/preview.xpm +++ /dev/null @@ -1,26 +0,0 @@ -/* XPM */ -static char *preview_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 5 1", -" c Black", -". c None", -"X c Gray100", -"o c #808080", -"O c Cyan", -/* pixels */ -" .......", -" XXXXXXX ......", -" XXXXXXX . .....", -" XXXXXXX ....", -" XXXXXXXXXX ....", -" XXXXXXX ....", -" XXXXXX o..o ...", -" XXXXX oOO.oo ..", -" XXXXX .O..o. ..", -" XXXXX ....o. ..", -" XXXXX o..Ooo ..", -" XXXXXX o..o o..", -" XXXXXXX o .", -" XXXXXXXXXX . ", -" .. " -}; diff --git a/samples/minifram/bitmaps/print.bmp b/samples/minifram/bitmaps/print.bmp deleted file mode 100644 index 00319b55bb23c3c69cc051144d80e5275747c53e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 238 zcmZur!3_d23^Ni^o@EUFY`~vgA|YX<`*bfpod|VizM>j+f}Fx~Q7! zgtHKM7yg3|DAD^Sp<0YF#C}+nSj(MC$5#Ss27*aN<{l9dYV3`7rsq)3!X>4ws(){6V0MX5FKAjcylGXqN-n#XsS=YhW0WogZT{L^_i_GT%*k@+ph E1NJ~MtpET3 diff --git a/samples/minifram/bitmaps/save.xpm b/samples/minifram/bitmaps/save.xpm deleted file mode 100644 index 01b18f9340..0000000000 --- a/samples/minifram/bitmaps/save.xpm +++ /dev/null @@ -1,25 +0,0 @@ -/* XPM */ -static char *save_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 4 1", -" c None", -". c Black", -"X c #808000", -"o c #808080", -/* pixels */ -" ", -" .............. ", -" .X. . . ", -" .X. ... ", -" .X. .X. ", -" .X. .X. ", -" .X. .X. ", -" .X. .X. ", -" .XX........oX. ", -" .XXXXXXXXXXXX. ", -" .XX.........X. ", -" .XX...... .X. ", -" .XX...... .X. ", -" .XX...... .X. ", -" ............. " -}; diff --git a/samples/minifram/makefile.b32 b/samples/minifram/makefile.b32 deleted file mode 100644 index 95ddc80d76..0000000000 --- a/samples/minifram/makefile.b32 +++ /dev/null @@ -1,16 +0,0 @@ -# -# File: makefile.b32 -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: -# -# Makefile : Builds sample for 32-bit BC++ - -WXDIR = $(WXWIN) - -TARGET=test -OBJECTS = $(TARGET).obj - -!include $(WXDIR)\src\makeprog.b32 - diff --git a/samples/minifram/makefile.bcc b/samples/minifram/makefile.bcc deleted file mode 100644 index 669f01905a..0000000000 --- a/samples/minifram/makefile.bcc +++ /dev/null @@ -1,19 +0,0 @@ -# -# File: makefile.bcc -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Builds a BC++ 16-bit sample - -!if "$(WXWIN)" == "" -!error You must define the WXWIN variable in autoexec.bat, e.g. WXWIN=c:\wx -!endif - -WXDIR = $(WXWIN) - -TARGET=test -OBJECTS=$(TARGET).obj - -!include $(WXDIR)\src\makeprog.bcc - diff --git a/samples/minifram/makefile.dos b/samples/minifram/makefile.dos deleted file mode 100644 index 13e3a4ce8e..0000000000 --- a/samples/minifram/makefile.dos +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.dos -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Makefile : Builds 16-bit sample, VC++ 1.5 -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -WXDIR = $(WXWIN) - -TARGET=test -OBJECTS = $(TARGET).obj - -!include $(WXDIR)\src\makeprog.msc - diff --git a/samples/minifram/makefile.g95 b/samples/minifram/makefile.g95 deleted file mode 100644 index a16ac0faec..0000000000 --- a/samples/minifram/makefile.g95 +++ /dev/null @@ -1,40 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile for Buttonbar example (UNIX). -# Change the WXDIR directory, and CPPFLAGS and LDFLAGS, for your system. - -WXDIR = ../.. - -# All common UNIX compiler flags and options are now in -# this central makefile. -include $(WXDIR)/src/makeg95.env - -TESTOBJECTS = $(OBJDIR)/test.$(OBJSUFF) $(OBJDIR)/test_resources.$(OBJSUFF) -TESTPROGRAM = test$(GUISUFFIX) - -all: $(OBJDIR) $(TESTPROGRAM) - -demo: $(TESTPROGRAM) - -$(OBJDIR): - mkdir $(OBJDIR) - -$(OBJDIR)/test.$(OBJSUFF): test.h test.$(SRCSUFF) - $(CC) -c $(CPPFLAGS) -o $@ test.$(SRCSUFF) - -$(TESTPROGRAM): $(TESTOBJECTS) $(WXLIB) - $(CC) $(LDFLAGS) -o test$(GUISUFFIX)$(EXESUFF) $(TESTOBJECTS) $(LDLIBS) - -$(OBJDIR)/test_resources.o: test.rc - $(RESCOMP) -i test.rc -o $(OBJDIR)/test_resources.o $(RESFLAGS) - -clean: - rm -f $(OBJECTS) test$(GUISUFFIX).exe $(TESTOBJECTS) core *.res *.rsc - diff --git a/samples/minifram/makefile.unx b/samples/minifram/makefile.unx deleted file mode 100644 index 0b249d4c88..0000000000 --- a/samples/minifram/makefile.unx +++ /dev/null @@ -1,18 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1998 -# Updated: -# Copyright: (c) 1998 Julian Smart -# -# "%W% %G%" -# -# Makefile for toolbar example (UNIX). - -PROGRAM=test - -OBJECTS=$(PROGRAM).o - -include ../../src/makeprog.env - - diff --git a/samples/minifram/makefile.vc b/samples/minifram/makefile.vc deleted file mode 100644 index 4ada748eda..0000000000 --- a/samples/minifram/makefile.vc +++ /dev/null @@ -1,18 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: (c) Julian Smart -# -# Makefile : Builds sample (VC++, WIN32) -# Use FINAL=1 argument to nmake to build final version with no debug info. - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -PROGRAM=test -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.vc - diff --git a/samples/minifram/makefile.wat b/samples/minifram/makefile.wat deleted file mode 100644 index 81a83e42a9..0000000000 --- a/samples/minifram/makefile.wat +++ /dev/null @@ -1,15 +0,0 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 -# -# - -WXDIR = $(%WXWIN) - -PROGRAM = test -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - diff --git a/samples/minifram/mondrian.ico b/samples/minifram/mondrian.ico deleted file mode 100644 index 2310c5d275a87af295d5ea8dc79ea417a5e74c53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmZQzU<5)11px*Sc)`TLAO@s0fLH;D9e|jTfdxnc0ZSetIcon(wxIcon("mondrian")); -#else - frame->SetIcon( wxIcon(mondrian_xpm) ); -#endif - - // Create the toolbar - frame->CreateToolBar(wxNO_BORDER|wxHORIZONTAL|wxTB_FLAT, ID_TOOLBAR); - - InitToolbar(frame->GetToolBar()); - - frame->Show(TRUE); - SetTopWindow(frame); - - return TRUE; -} - -bool MyApp::InitToolbar(wxToolBar* toolBar) -{ - toolBar->SetMargins(5, 5); - - // Set up toolbar - wxBitmap* toolBarBitmaps[8]; - -#ifdef __WXMSW__ - toolBarBitmaps[0] = new wxBitmap("icon1"); - toolBarBitmaps[1] = new wxBitmap("icon2"); - toolBarBitmaps[2] = new wxBitmap("icon3"); - toolBarBitmaps[3] = new wxBitmap("icon4"); - toolBarBitmaps[4] = new wxBitmap("icon5"); - toolBarBitmaps[5] = new wxBitmap("icon6"); - toolBarBitmaps[6] = new wxBitmap("icon7"); - toolBarBitmaps[7] = new wxBitmap("icon8"); -#else - toolBarBitmaps[0] = new wxBitmap( new_xpm ); - toolBarBitmaps[1] = new wxBitmap( open_xpm ); - toolBarBitmaps[2] = new wxBitmap( save_xpm ); - toolBarBitmaps[3] = new wxBitmap( copy_xpm ); - toolBarBitmaps[4] = new wxBitmap( cut_xpm ); -// toolBarBitmaps[5] = new wxBitmap( paste_xpm ); - toolBarBitmaps[5] = new wxBitmap( preview_xpm ); - toolBarBitmaps[6] = new wxBitmap( print_xpm ); - toolBarBitmaps[7] = new wxBitmap( help_xpm ); -#endif - -#ifdef __WXMSW__ - int width = 24; -#else - int width = 16; -#endif - int currentX = 5; - - toolBar->AddTool(wxID_NEW, *(toolBarBitmaps[0]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "New file"); - currentX += width + 5; - toolBar->AddTool(wxID_OPEN, *(toolBarBitmaps[1]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Open file"); - currentX += width + 5; - toolBar->AddTool(wxID_SAVE, *(toolBarBitmaps[2]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Save file"); - currentX += width + 5; - toolBar->AddSeparator(); - toolBar->AddTool(wxID_COPY, *(toolBarBitmaps[3]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Copy"); - currentX += width + 5; - toolBar->AddTool(wxID_CUT, *(toolBarBitmaps[4]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Cut"); - currentX += width + 5; - toolBar->AddTool(wxID_PASTE, *(toolBarBitmaps[5]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Paste"); - currentX += width + 5; - toolBar->AddSeparator(); - toolBar->AddTool(wxID_PRINT, *(toolBarBitmaps[6]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Print"); - currentX += width + 5; - toolBar->AddSeparator(); - toolBar->AddTool(wxID_HELP, *(toolBarBitmaps[7]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Help"); - - toolBar->Realize(); - - toolBar->EnableTool( wxID_HELP, FALSE ); - - // Can delete the bitmaps since they're reference counted - int i; - for (i = 0; i < 8; i++) - delete toolBarBitmaps[i]; - - return TRUE; -} - -BEGIN_EVENT_TABLE(MyFrame, wxMiniFrame) - EVT_CLOSE(MyFrame::OnCloseWindow) -END_EVENT_TABLE() - -// Define my frame constructor -MyFrame::MyFrame(wxFrame* parent, wxWindowID id, const wxString& title, const wxPoint& pos, - const wxSize& size ) : - wxMiniFrame(parent, id, title, pos, size ) -{ -} - -// - must delete all frames except for the main one. -void MyFrame::OnCloseWindow(wxCloseEvent& WXUNUSED(event)) -{ - Destroy(); -} - diff --git a/samples/minifram/test.def b/samples/minifram/test.def deleted file mode 100644 index 897b9dacbb..0000000000 --- a/samples/minifram/test.def +++ /dev/null @@ -1,8 +0,0 @@ -NAME ToolTest -DESCRIPTION 'wxToolBar Sample' -EXETYPE WINDOWS -STUB 'WINSTUB.EXE' -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE -HEAPSIZE 1024 -STACKSIZE 8192 diff --git a/samples/minifram/test.h b/samples/minifram/test.h deleted file mode 100644 index db0f7dc5da..0000000000 --- a/samples/minifram/test.h +++ /dev/null @@ -1,35 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: test.h -// Purpose: wxToolBar sample -// Author: Julian Smart -// Modified by: -// Created: 23/07/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#include "wx/minifram.h" - -// Define a new application -class MyApp: public wxApp -{ - public: - bool OnInit(void); - bool InitToolbar(wxToolBar* toolBar); -}; - -// Define a new frame -class MyFrame: public wxMiniFrame -{ -public: - MyFrame(wxFrame *parent, wxWindowID id = -1, const wxString& title = "wxToolBar Sample", - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize ); - - void OnCloseWindow(wxCloseEvent& event); - -DECLARE_EVENT_TABLE() -}; - -#define ID_TOOLBAR 500 - diff --git a/samples/minifram/test.rc b/samples/minifram/test.rc deleted file mode 100644 index 6c9086d0c6..0000000000 --- a/samples/minifram/test.rc +++ /dev/null @@ -1,13 +0,0 @@ -mondrian ICON "mondrian.ico" -#include "wx/msw/wx.rc" - -icon1 BITMAP "bitmaps/new.bmp" -icon2 BITMAP "bitmaps/open.bmp" -icon3 BITMAP "bitmaps/save.bmp" -icon4 BITMAP "bitmaps/copy.bmp" -icon5 BITMAP "bitmaps/cut.bmp" -icon6 BITMAP "bitmaps/paste.bmp" -icon7 BITMAP "bitmaps/print.bmp" - -icon8 BITMAP "bitmaps/help.bmp" - diff --git a/samples/minimal/.cvsignore b/samples/minimal/.cvsignore deleted file mode 100644 index 7957c41216..0000000000 --- a/samples/minimal/.cvsignore +++ /dev/null @@ -1,3 +0,0 @@ -Linux -linux-gnu -linux \ No newline at end of file diff --git a/samples/minimal/Makefile b/samples/minimal/Makefile deleted file mode 100644 index bccce53f76..0000000000 --- a/samples/minimal/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../../setup/general/makeapp diff --git a/samples/minimal/Makefile.in b/samples/minimal/Makefile.in deleted file mode 100644 index b2ab5ad739..0000000000 --- a/samples/minimal/Makefile.in +++ /dev/null @@ -1,26 +0,0 @@ -# WXXT base directory -WXBASEDIR=@WXBASEDIR@ - -# set the OS type for compilation -OS=@OS@ -# compile a library only -RULE=bin - -# define library name -BIN_TARGET=minimal -# define library sources -BIN_SRC=\ -minimal.cpp - -#define library objects -BIN_OBJ=\ -minimal.o - -# additional things needed to link -BIN_LINK= - -# additional things needed to compile -ADD_COMPILE= - -# include the definitions now -include ../../../template.mak diff --git a/samples/minimal/make_cw.mcp b/samples/minimal/make_cw.mcp deleted file mode 100644 index 3450e5aa43d419576670b3294ab07be5d062c95c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 131407 zcmeHQ31D1R)qZc1wCTQu?#py9T_#YrGAWQWN!zqZGc+v;i!{?@+NRCsOhOAN1jG$d z5czQf1w>>MK?PAk7Eu%h1!WOYK~X_g7Zexh|DAi!yk+KX(}tF0?oG}+XU;wEynD|* z_q_eQmaeXLP16cAO<$zxua435*N)M&@sq*3PY>xpvQ&1pCK}_(WLsA<97}fXOtkc* ztMUZv<6xulfC+#Sz#)KB55OCMe**pmcoXn%z<(fn3h;jc{{y@QcpI=6d>|bQJp>^C zDFoxsz(s%|fT4h5z%amY)O`_f72s;XHGnSxJ_ooGa4q1=fa?IC1$+T;1>h@y>j5_a zZUo!}xEb(Oz%78U0d57{2KYMQ8-Q;DZU@`}_!i(!z~=$q27CwbUBF#{y8+)r+u-l| z3c#^|D4-0m9B>q1CEz%~@qoht?*SYQI1+FIpd3&ESOusAQ~|01s{yA2)&SN5Y5?m1 z>jAZZI=}`%Js<`+0&pT=BcK7W39uP(6599!zz+cr0)7PeG2mXn_W=(9eggO@;2y{~ z0zUw_AMh~X5x~y?KL;aqsI1g|>-~)gQ03QT=2=HORM*trMTnP9W;3B}s0iOU|47ddFNx-FmUcjdS zmjV6{a5>=9fX@IL0Gj}t0Ve?(0q_M4L0RE$E3fTe)NfTI9M1C9Z#02~X50?Gg@0mlK32b=&X2UGx70V)AifNH>Mz@dOO zfVF@cz&gNsKrLVafJz8J?J5S01rp&}3`!2RGZ2jfMco#$>;702&(_FB%^j&(VNMfDwQ& zfc$O)fNV?SKz=nDFahC8B2(=cvaNHzc0Od)Y}`f2yzo z#ZzjX(;Sp~r}FyK7*FT*X7KioVg3r%do2HsGA`rxt>pF|$8zg={o~W4a_(MgM%EIo zkR6~}F5*bXF7blY@*Z z$^r+?0xi3@bhLH0b;R4FmA$E+u8#2f#F@LhlC3GtQdQB?l1Qb(v3So88-G(A`^%ni zL!zgrt#iArYIR$CB3u{m?#`@O)!WwI8m`{clZ@L|s7h?@-M&4M3`?cf%^$sDeV8ue zuSs-fva8xsbgbC1wLOu{tXtFGwKd)zuJ7(?>u5VGyS}!qb5}MueUHG>{mRnHB}>qP zj&5|ywi#K2+Y6nU-K<<)hh|%ww0ctv7VJ#4TbXpYOPV|4ovmRsD3MiJ8}HoS8{eK? zQ5SEiZ*a7|P>Q3NZXC#1x*^yO-6MWgSBr6X#IlOqhCD3FYI`i6YJq*7?7~$}hKa>0 zod%QGZi7j6UV};X*@H>kSoLbF1q6%l0aO{6b>{)TN zQ|E|Xy{9DsPweWXd6eM=RPWV6s?Y8qanr-eI4q`JZClDZ@LSM7kJ&A%U1qqbbD!m+ z+HIzbN|)I#>fC3%sCJ(9MwN@R81)|ZG-R@DYSg6dYI=#Na*YI*S_h|>wV4q?aGj!p zsPKvmrhr3qFe_angej60CCn-p6SzkUv8q?Z5CZN|!&>cTM4G|by8^i;s=S0Jy!RUT2sSl!PEj?ufd^{B=!W5b%p{c0rdoXBYB}cXm<7xMvsfF{O7LG*tP;LqpIzE@q0k z#79#M!|5C*Y$8FNlsqG-laj2rlafSs9JMvd$MDeL7FP{59`V(X@r<*ElzY6jiTK1_ zn`}^Hy2fFfHWzD&VCEN%rI1%FmJ&XZSPFT@VJYGjg{6d8I-UiJ*dv8JBCsjo<=Uo{ z-&mNE&Tehidyj)>+?7haqb|!h##~wF8gXT{Z@jgLxkX!xh1=<{AgBLT<6pD&r9ktzs@Q zF;m3Nbu;C>MkP}=+l4bF{6@z$PFfYY$4Z-2R=l*t<^fM?vy5_F24SwimdGfOl( zhGvQQn9?JbT2*<*Q>&myOmz@*imNs;=h&Jl62wXUVr-^PZzpw#wV4Wh4DS|mt!muj zu2sf8_FAP};%}yiR}9XS4LakUV{xW72Wydy{jaTttzvHR*ec@@kF8>^@z^Tl7LTnm z9`V>J<`R!HMciCHQ_gF2GG((}JyXJObX?=HRgrrs!dm1jJ*3VOt22QjC3Y!h>i$C)BQoRroH>ZBy=?W81OzqV?N z3!*yf?suk$)3sHbj9WY=_323E9*?b3F7Y^1#48?W$_6#2b3D$}=HjOE!hy%pG3k*) zUa?q8_(WnUb=>%AQ7ci=n0pw-{3`TVKv@ZL)q4Pzi>GP?Vz zl2Wd%GHu|c$ds}xI%tp755x_p-}|9=bkZ-L(VO)2;usZr^Pb)jrLrB6e#i7&(DbG< zmCpg>d$}^JiF^lGX7ivon5n!1pf}@DDD#SVJB?_1hlt*6MxhKP>8u-+X@uVa*7Ro3 z{Km813z{-1py-!kLGRk2=r>_O@8_WC4`D&?Y@z7SVL|U@q3Hj{g5JGC2@#LpuR;k? zMg)3?3MEvF1-&PQ5~BXnyHF@0dW)ahiV~v!lD$wu-@$@20)&1Jn%+%93H<>JdjAL| z^dBtf9V3(iYGarv(2KE{El91P3V06FrvlGq`fT8NOn)ADKGU}WFJSsdzzdmv8h8=Y z)L+W7fKo{PrtP5=lAZC2F_pp-u~;fdt*`@l8PgX5N0|N!a4FLd0w2coOTc71lp^wr z<$~0T!oZx3q3C$fv^|s}%EoY%Ahn_-FukRSQuHw_C}RXl(al(_5TsW0W8h<%ei=9_ z=^;ab%a|rRtz>!?FlClN8Pb9UZ5w6C`BLk-17#%nQJWyOk<|8` zOrHt7i|H$X+nK%>nC1Y=NYdFUNNv<`;4Y?VesnWUws|kpG%n=RD5JiD1+^Px)I(VG z2vQsM8gQ?qM~?$OgK3%vyO}1PdzhxVPi;jReH9jG5e1t1PIV}w|BS`^1gVW7o$qJ* zaNu*8CcikBY1(EV(`3){n7#w}e5M}<{s7be1HM4gV`l+VKT*b#kAFyz+E}vjhnc3i z{1K*a1^y`0PXb@aH0dNclyS4MAYVZlN51rNL2Bb@3_rp2rN9?6{dM3=nEn~?Cz*a7 znB-8#kH><18f84ip34NOjVHhUKc>m9moxn(;7>FCFz{!Xeg*imlAbUcnCyizfo%JE zL246D1STIsnLy)wr69Elw4E<7eLL_MnSKiRDyIJhe6^%YrU75WbR{sg38f^C#kGRe zO8S7m%rwbf$Mgfh9i~qK{w~urj(0Ilwxl?VGU>-y&^Aye{TYjU1gT9P0(>vi z%Yg4=n#S>druP7UpJ^ITvM6VtNZOwF70!d03Dg zQKry%{zQ=46yp7qY4Tz6Ka{EDZ;uF4n_3D?zK$}r35%Z#QkzP1{ZXcA%pYT#bpL{B z8n0hUdfG(b$C*9>_z9-B0n_|Mnf7rko)V-sjmDYA24x!Yo))A?2qUts;pg-PSUki0 zYT(~6O@2kbh%%k#_wNL$O(&htGELimj_H2`|6bBF<^%tMX&RU3nN9)!k?G5U|HL$n zIgK&O4AMtqgEF%iix&l{&7`sZ3)7_YC8lYtUuK%-^ear$_`k|D*^mHb);KI^oKR*R ziN#+9sm&sv{2SAKz<+1@3&8(intbpLrm2nplyrC$FvS9t@Cq#66r>hD6`1UT5@zAkBDP* z{G5%p=!KF$XFBL2rprMOVR{?rp-g`iG}#?x4(2*#QWP}CMPyXOkGTb)Y0eP60Q5+v z*MlZopv>(6O>=eV3AQ%B2{i0NW&YWq$?imBj_Wg-{sHJ& zOv6w0u%s8D-}-E(j{rS~Y0^2D>Gy-4$25FNr@4W$-~rIEouJ{T`a(%Bgw6CtOfLa_ zDATo|7c<=n8g*0_UIKb4)87QWjA`Pq=E(g7W={V?Pnf@^7DAS~~jOj-~uVngfppTRE zVvH?iz@)Mm>**&jeG=$$rh7qGFntB+RZQOl8h%4%G3F^{$fU9azD$`i1x>bH&2$X( z8m4!HUduG;gpH^yxexR@rV-~Tt0tADm@AZBQ_!#sRwM`h{P zL7&L2HDFB58AJzF(`YZcC;pm%#RpL}!l{jYqoh z`g(2K)^JTncUQ6}jH~KeU98devoS2MN>d%KY-zYpW37+Y)oiG#tEi1sH&ttOX<=M( zqaWgmphn9?idV93j-=|h?o6wrpOD4XG|L6M%-a{XI~AEXCG7VfY_}SW>sxXiO?Jw7 z!93&2d&Z?qYESxx8PQo6D2bVMEz;5pBGXqGIT=KxrMp{8)5#Wkhko~--EEzb?v@?M zOSXGYq`hscRrm|_p(UIDkRq{tHmj2nXyCvDvF2pM9>yQiSh~+|TO;rt3>#H|z zsIKK7n;WV(G70g@O=*6^+UnXgU0++Bmfl=bCA4h@A@ved}~Csn)^U6 z4{1@;+32Umwdkke9`vKBvVOJUNyM-?mJk-X7eJ-&9GW*bh?yP^qHUMiiIFuF7BxiD zy+(ogQ4QO*?Yf5Aa7A}FU+9gX4_ZxUPa?T3-jbjnR9_jv>Y_^gTC&9Wy?YNCLJUeB za(U1SE$zuv3nm_!3%Lop+7ppfPw&hebA1c3MXk|%Pm;68W)pkvo;@> z{w6$LIJx{SyGyylu{64Gjw`a0+GzOT?4vGL&=%{;$pyXBVp-j^eERJ?Xp(8_#zbLz~9M1F};1Nup2aGc$Q7*=E z6w_Y-9?kSufyXfYJ>aoSKLR|C>0bknXZj^zJ~I?&)+LfJ&SVc^8fOmaJ451ZYZCM6 zEM_v(bap_tKoLjgQ<-iBp2qZ>{M-VgM$rrHHGd#Fh1;MqEA>qiA8;SF>m^ zNs=zySYOZ2*2{_^t7~ej=|M!s6V`0p%n$2p1)<&4+9ImL$|Wo^k1#H-h6$s!llb>6 z%c`OAbdEvqCi00Zc0EuvoJ67O5W?8%Z2mowf6w9HLM7_w(r;{PI^!9PCo`U6*`z+q z2xiz)F-bs!kOZE>zo#;u##m@Zz0eFillj)p6c&kenb2BDwP=qp1+dTtEY<>^U74ac z87AXGAKtVGt&vxGjyzVo{XZ`c7Z-&?xcnT_hHU7nb+#Yw!t2E0tsAb+PI- zk)7S!_gl}-x)I z=-C-RBkr+Lyvk0F=pn&+I`+%VLceH_qgR-lr_2m~rM0W2*H6Z;z8M1I{c=A+pL)_m zB@*{;QjmEe^t80cQxuV1N|5oQRr_O}3Ozf!6J8TFaKFxK>vrjqVEgq;%u|s`fih;h zgw1L1wuo6*SG&rq*Hniyz;xmeN=@Qe>SDFnZF!eKdip8S)vsC?_HGTLsy+XTqj;>g zYpY{L4$NlA_G{#A@!q(R{KIv$IAXToj=Dz)uE)DU!S#4fKr^X{Z@-Z5#iImnPhyX! z9*<2JRdP>h{B$Jz+Cz~==s~_3M+MCE)6-|s<2CYu_4LD@QuHh38Nj`|Y}CEm_PD7X z?Y?otl7`3CqbYrj(McB~h#p!s0wcMo2*i%DRD@1cJW7zbN~=e3!P&QS9@}Z=I+=#Y zL(r#+^vJIoP#PVVJ@=FWzUM~QoXwEqp4(kdKkc~>%AV4-S2^w}ef4-xKqK<{>haz& z<)Ft?QD8j>dQa(MpPcuUE_(VfRnmLhKzm9*J^iq!q%3aEGuY&2WqLEK3~GSyDP1g$ z?Bu!aDP8rDp$^oZGRSy|_PmSsl=4z3-7$9AQ;rrh$2-uO$MR5QxMl_+^?1!cx-!N| zGkx`VHz>Fs&w!ajdjg)L`1PwbvEP@ygq=OlEd1@9bL4gDS08*Jr^xH42MHRz3dS7{ z?R`~Lv?nR(2dky*S9(Yr0*Y7&q)xQ5H}Z zP!`B*3m9>5*t%6+y`8PN;q7b>@p>N}OyT8BdIVta-o}~@Rh_-<`*W++c~gq3EHLma zKo3RfMxxz;*M8OFezHK->e@|XEU!EHJ|yC>UGcSn&O{GBGtu4Nm2`d}$YDLj8dMet z4XWO#&g5=^5T1+`&&ATJbqzJuxvNlX3?>Wg=;`T>mX^}9iIG%qXQZX8qqIBO)!N(A zlPcZWx~uf?$l;~9m69rrcej-erk-A#je25^OghEq^C`?=B17-1t z(UfY@_j&AmFpBD9-de!&AqzaIYJBoHf9#>IG33u!d-c?ozrssU)eUM3AnmeWQf|Ng z8(CKd?x&TJX2f3TxJi}$vw-@X$Nt$*t*tC@04e!4ULd1!H;rN z&UV0QtOU79kgE(Jha|_^ssM6RAXgDUZYt!e0?18=+-g(KXgb(tK|f~T*BVpKwZAhV zx7I~Yq~9j3&^HUH)|9hd#5EcLxiI8THsxHmOU|~`lrvO-Eyk2EZMR?Lu$A#pTk5x6 z$c=+s#7~aesEV?{L9>8*!@)3p-oN26RDAN4>|q8|lQQhY1ivYU_^bm;0Fwbz08;_e z0W$zI0kZ&Mz-)wLmAOCDj{LhBSY_^aF%H;dpMK3)q%!xr8vEUr9g!NUGWR>bm|xDL z7*Uz~*%Fz^k_FB+!*q`Mf8F);Q~qC-xqr!$u&b4G%t!32rzO*6Y`=}Hn7(>k(iyR~ z9Q1f93asZq=OcEp4<&L+XS1{!Hsgn1zxphCyz-$2*3%F9h(*6t=6;uv&p98ls~&Qd z1C@_hW$q_yJC$ZI`|B%ZIev4;@#-_RF~>c(yPkg9bNA~xiuaDm%(Lv;s~q=~zIwbH zWJF$HJ)S$b9Qx&!L6AJdlCRmXJqLPE>C&E@_mnPr`q20E9yidQ(oau6>?u{|e)_O@ z*u~O0?G#Gu9CiN@ebMw;tZNQzgGGpfc>{_xSf?@9{8_DtT>zLd%mC z`)Y`gW_xsQU)At>@W~N%H5+Q`DrzIuP0ksA%Sl#j6br_i^-J_&p|e>Fp#n`imogz{ zFDY|op?J1rNV&?KNhZqsLXQ=x%$a%b1~vnz%$YWG9A|$}nN$a}r&#rT4E{gjq zTqBUx_*TB6gInO>=a#{stAPwYU`jHdEufOx=JV*QzAFnT3s^0HM`~1&77zzfI7S|` z4j-egY>%f>iBx1~JnO}zQ)*)2y2evtVl8p(HLNa?+@1*6_x9|YEsYd+bhKVrRlBCC zWmj8kEZMcQu_0Dz=)_o28{IO=83%!o3zSI?a)C0$K`u~+ILHOc5C=K03~|K`u~+ILL)z=Xx`<8aQULwr@7rDwCXP8$~G#ymJ;%xxHL%+l(5O+soBF8ri2` z-hW$+@b-AV?rvr*@oi7Qj3s`04s^y6m-dXs zaHlhkc#XWDo%<|$0%a_5X^){N>%xG&bsH0B*%=PMM88ySFBePaoUz1J51IZzWh_y- zy&N1}u$r+{xxL)1^A6-6_TDj>dlZjMKRN9wef4-Z$cW&+dIIh#{q=Y%3f!Ipy{B~P zSI&D%7d?G&(exfS(4NvyPe1G_RchTPiIrJ;wIf`F?y_>uw}fqb%TS0eUb-N1g^%^4tO{S6-ewK>u}L z<;v?nTMkT3>Wk|GbKKssR_FZ}*GJ1&$;4ZO+VIV>nn-stv8`>7v&H544Lt&Fi>2a| z%)~X$e{k?7j^Hwwn)<-Ivtb7hcW{2-U47En@X);fq_HjZ8D_B(IezrmvT8mj^Bn>^ z6qO@)Fzra97NaOK|13a95-OQ*{*Aj=k5w{XFYDx2T{=FLJ16taFJq|QiZf4+4~4;! zx2j~mgV}8?@gZO`Uy1=85ZB0Zqk5tf<5IRG8FxzvW_s!xD0po*8?mW=P z+^hW-e~`(Y#av#7hlj!qz1{TaWt6k6sr`hP9S2LD#UF-<o*OQe)X43<%M z?}x=7hPwDeIz9+b2{%-&SJ$lE?K#kEEdEfeA;YO0blP3GJQhCCJFMETEZ|`QOY-+d zydR;GzkAq9RSjYbs1!x6gWHT6m7>ViJQ~@jUlV1h6h*GaRw;_&uC_^6s1!wMOXP~1 zvBE)0bl{o-qb^pv+OHp$*XG>yG*(vm>G7*?hCuzQbzwibAgMHBwOw2N^!U{`L!e(H zulL)w=4-O9R_2%MTD)Gr*K*L~-5}%jU*GlweErv7kEf!*?K#ki7hL+4bK(UTJ$>-Q zoDwhi>FI~W3!*(LMUji8Rf;0GtZQlJn*K<V{uH1H-x+5lto z>SM)*Df*94A1m%ZTPjV;0`IT|)W?e7VFN4m$^yy)1I7Xc1E!_#cth#f+03t{@(aJ? z23H#x%odROg>(P-x5`L7n7txU-&988KxR@x{uc00CFie0NepBQsEot|dGy|awD zVw~s<6L+q|^}Rj&X5bT0#0_pb$}6m@UDMREtF1Mb?AqDb5UbQw&f|SEt5&>^>kanR za3iZI9_jLOSHmSWy$|Q{0Igipn(hUDXNyi-=1tJyMhJhwipqIx*h%F)Hca707&(u{ zg(@j!Av0F9)ZiSPe$5O?9v;lFR9Y^1L2d%%W(AO&47vFM)d_kXsl)ZW`nk z1(2H#xkCfU&4AqE0CF=SwMCj@)lJooHYq1AVt`mM-mG7u4-1`5 zOtX{|=__c26>~*J<(UQgVf+}+lRWwNCQ%WbVmEW6IY($MLoMDg;&0_qqeKgL=0QdvM*Kv}@S0_qsU z!6=H=e-=>382x8UrAb*pSwLA}fLTBtV+^nX8)(f{#~1@`#8i8g1(XGp1^Ueb@8~gx zHVMh&57RnQJsF8I*ML8^5Bzp}NAyK_2$uMrc7EdzH9R*g^%T5d*2SCgR0!*_@`qec zkH<89;ko)#I6?P`7CQ!+RUe+==%9X+W`dFa>1LcYx|Kl)DmUeVFh z-eu<(lb%Ir59F=wDgF$elUdr)oyy=Ro<)CKJ9@TbyEgflsRxu%#?ixyBRk^l8TK4; z5%|w^#6^D%X-&KA3uK>IZK_ApPpd%1LRmSU^rZWX2YAxuRoKO_n}t7W6(rJjv-0l; zKW!fiKYk?mOW8ga{>V4MPjA!w`IE~Upw~#%XTgNaq}$Owea7#-LhQ^f8-AE zr*#WkWAtNRKe&SO?w9OwASJSp&U44j@Kk`s89ujPAdHq-5{ao^I{~h$iB!B*u;5{n&qaFih{gEQj^c&^dr5G2MKZfl53&GazITw1y zOFg3!;Qdna$JPUHmHg$yK|e0}qhAMJA^6d^P6z#jd_GJILaV+SkiK}Vj$R-a-{Z9`8{cGZC+WUH7pUIMc z8Ey9&!PeeS^ZI(p|LFHX|3>o1-Ub|z{MRuS+HWQQ{!hZ+*iTN}3?A%DWh~)2QvPQ0 zpJxFm<0uBQAMTh6`Z?l)|27tKzC=IvZ_vLdF6PP#EVy51eFF3!h^uMmP`@sf`k$aN zf1bFS)=Yl1PV%oA1Nx7|)wK9TELi`y?gjlP0LlaKfsx%({(+Oh__JVZk0N(idOp6j z1-us|{|&S^Js+`->9w$@oR87x?f~yElK%xlDjTg*m#cs^FrgWn{Fat_&<=i}|? zf&MFTHSOG$SV%o(8_5oTBQD%%A@uNk{7fepe-~`+8QqwV(aR~u{6q482megZ$8*Sc z-jMv~%b8n6;K9)^Kj7+~x@bYfZaz2)A zfS>3gDgVmFz&sz%$K2F;AM@%l;PZU^4f>?h*rWVCWz5Iu&9{JGB>9(-t>kodw4#UC5{4P1oQ6(=J|N_S>TUk{*!RSJ~1E5PM-@tjT6vneJOVoGRxEiwUi}p?CNZDp zH_yi@i@=}EeE4a4KHmQm(1Eawi8-auVSXbp&&P(R!G}+v=xwc7@_by<2gW>NgO4#vkJt2a zFy<2*{PVHo@%s0t!C1ijPXP0LJoPp35${m+olRKq{_&59@pS$`{9WBx%K2Ef34PIF z3*xua`0#vu`8qHbGk>)?AMf4_{u0UWBs=hYoVyPErOfXE=6-4LWqld*KLX728-+u~08%{w=_AK9-&GRqzj!{H}7~b#i_!Jr(@J1z#&ByQPnlIhKH#Hy zL$?3CkAjbFpy=1r_Bjree;bTrnSUHG+yAMbf*)mm4KT-n*U?|SjQNeAdB42!1<)%c z|AzMf%Q#TB5^a+xG(+7+=P&WQd@XICt zmfOuZaK^>pS4jRhFn`l=U?VrR3i^16am^vMo=7U&Z`-BMwAw zLmPD3j{<$~i$)xXK6oh@m=DCi5BoTd1JM_DgRw^P@2B|6`{mSS;IC!=dSE_IzUvqv6SN#y#w3SX?>DE14}txWu36CUdw!n4;%+peGL3M$^Sm; z({W(WDWEq<{sXPRykCBu<~90{qW@qdmNE{Mm3$YB81vy5>Eq=0-UR-MlK&vtL&kyV z>)!#N;sVfvJFt}fie5pC24aK%J}l*YDLV}NVjVs$_?KhJet6aU!AF~j|5J(&ykC9@ zZP8DX{D*1Y$T$#v1UA;;mnizf*aw9Q$*;8G)mMT+_67PG+B~FL@{?%0ezN30F~XGp z68RErMDkCKG35(O!8ld&e~U3n>p%QO@K2NcXH%y9b?C7E9?AdHFD&xE0{?W$e*wOi NZqG?c@V5~E{{hr`1|t9f diff --git a/samples/minimal/makefile.b32 b/samples/minimal/makefile.b32 deleted file mode 100644 index d1cbad638b..0000000000 --- a/samples/minimal/makefile.b32 +++ /dev/null @@ -1,16 +0,0 @@ -# -# File: makefile.b32 -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: -# -# Makefile : Builds sample for 32-bit BC++ - -WXDIR = $(WXWIN) - -TARGET=minimal -OBJECTS = $(TARGET).obj - -!include $(WXDIR)\src\makeprog.b32 - diff --git a/samples/minimal/makefile.bcc b/samples/minimal/makefile.bcc deleted file mode 100644 index 705fc065bc..0000000000 --- a/samples/minimal/makefile.bcc +++ /dev/null @@ -1,19 +0,0 @@ -# -# File: makefile.bcc -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Builds a BC++ 16-bit sample - -!if "$(WXWIN)" == "" -!error You must define the WXWIN variable in autoexec.bat, e.g. WXWIN=c:\wx -!endif - -WXDIR = $(WXWIN) - -TARGET=minimal -OBJECTS=$(TARGET).obj - -!include $(WXDIR)\src\makeprog.bcc - diff --git a/samples/minimal/makefile.dos b/samples/minimal/makefile.dos deleted file mode 100644 index 6319446109..0000000000 --- a/samples/minimal/makefile.dos +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.dos -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Makefile : Builds 16-bit sample, VC++ 1.5 -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -WXDIR = $(WXWIN) - -TARGET=minimal -OBJECTS=$(TARGET).obj - -!include $(WXDIR)\src\makeprog.msc - diff --git a/samples/minimal/makefile.g95 b/samples/minimal/makefile.g95 deleted file mode 100644 index baa1edd9c5..0000000000 --- a/samples/minimal/makefile.g95 +++ /dev/null @@ -1,37 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile for minimal example (UNIX). - -WXDIR = ../.. - -# All common UNIX compiler flags and options are now in -# this central makefile. -include $(WXDIR)/src/makeg95.env - -OBJECTS = $(OBJDIR)/minimal.$(OBJSUFF) $(OBJDIR)/minimal_resources.$(OBJSUFF) - -all: $(OBJDIR) minimal$(GUISUFFIX)$(EXESUFF) - -wx: - -$(OBJDIR): - mkdir $(OBJDIR) - -minimal$(GUISUFFIX)$(EXESUFF): $(OBJECTS) $(WXLIB) - $(CC) $(LDFLAGS) -o minimal$(GUISUFFIX)$(EXESUFF) $(OBJECTS) $(LDLIBS) - -$(OBJDIR)/minimal.$(OBJSUFF): minimal.$(SRCSUFF) - $(CC) -c $(CPPFLAGS) -o $@ minimal.$(SRCSUFF) - -$(OBJDIR)/minimal_resources.o: minimal.rc - $(RESCOMP) $(RCINPUTSWITCH) minimal.rc $(RCOUTPUTSWITCH) $(OBJDIR)/minimal_resources.o $(RESFLAGS) - -clean: - rm -f $(OBJECTS) minimal$(GUISUFFIX).exe core *.rsc *.res diff --git a/samples/minimal/makefile.twn b/samples/minimal/makefile.twn deleted file mode 100644 index 70cf377fe5..0000000000 --- a/samples/minimal/makefile.twn +++ /dev/null @@ -1,43 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile for minimal example (UNIX). - -WXDIR = ../.. - -# All common UNIX compiler flags and options are now in -# this central makefile. -include $(WXDIR)/src/maketwin.env - -OBJECTS = $(OBJDIR)/minimal.$(OBJSUFF) $(OBJDIR)/minimal_resources.$(OBJSUFF) - -all: $(OBJDIR) minimal$(GUISUFFIX)$(EXESUFF) - -wx: - -$(OBJDIR): - mkdir $(OBJDIR) - -minimal$(GUISUFFIX)$(EXESUFF): $(OBJECTS) $(WXLIB) - $(CC) $(LDFLAGS) -o minimal$(GUISUFFIX)$(EXESUFF) $(OBJECTS) $(LDLIBS) - -$(OBJDIR)/minimal.$(OBJSUFF): minimal.$(SRCSUFF) - $(CC) -c $(CPPFLAGS) -o $@ minimal.$(SRCSUFF) - -minimal_resources.c: minimal.rc - $(RESCOMP) $(RCINPUTSWITCH) minimal.rc $(RCOUTPUTSWITCH) minimal_resources.c $(RESFLAGS) - -$(OBJDIR)/minimal_resources.$(OBJSUFF): minimal_resources.c - $(CC) -c $(CPPFLAGS) -o $@ minimal_resources.c - -#$(OBJDIR)/minimal_resources.o: minimal.rc -# $(RESCOMP) $(RCINPUTSWITCH) minimal.rc $(RCOUTPUTSWITCH) $(OBJDIR)/minimal_resources.o $(RESFLAGS) - -clean: - rm -f $(OBJECTS) minimal$(GUISUFFIX).exe core *.rsc *.res diff --git a/samples/minimal/makefile.unx b/samples/minimal/makefile.unx deleted file mode 100644 index 6e0b9cac43..0000000000 --- a/samples/minimal/makefile.unx +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1998 -# Updated: -# Copyright: (c) 1998 Julian Smart -# -# "%W% %G%" -# -# Makefile for minimal example (UNIX). - -PROGRAM=minimal - -OBJECTS=$(PROGRAM).o - -include ../../src/makeprog.env - diff --git a/samples/minimal/makefile.vc b/samples/minimal/makefile.vc deleted file mode 100644 index 35aefc474c..0000000000 --- a/samples/minimal/makefile.vc +++ /dev/null @@ -1,18 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: (c) Julian Smart -# -# Makefile : Builds sample (VC++, WIN32) -# Use FINAL=1 argument to nmake to build final version with no debug info. - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -PROGRAM=minimal -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.vc - diff --git a/samples/minimal/minimal.cpp b/samples/minimal/minimal.cpp deleted file mode 100644 index 05b2456444..0000000000 --- a/samples/minimal/minimal.cpp +++ /dev/null @@ -1,194 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: minimal.cpp -// Purpose: Minimal wxWindows sample -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -// ============================================================================ -// declarations -// ============================================================================ - -// ---------------------------------------------------------------------------- -// headers -// ---------------------------------------------------------------------------- -#ifdef __GNUG__ - #pragma implementation "minimal.cpp" - #pragma interface "minimal.cpp" -#endif - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ - #pragma hdrstop -#endif - -// for all others, include the necessary headers (this file is usually all you -// need because it includes almost all "standard" wxWindows headers -#ifndef WX_PRECOMP - #include "wx/wx.h" -#endif - -// ---------------------------------------------------------------------------- -// ressources -// ---------------------------------------------------------------------------- -// the application icon -#if defined(__WXGTK__) || defined(__WXMOTIF__) - #include "mondrian.xpm" -#endif - -// ---------------------------------------------------------------------------- -// private classes -// ---------------------------------------------------------------------------- - -// Define a new application type, each program should derive a class from wxApp -class MyApp : public wxApp -{ -public: - // override base class virtuals - // ---------------------------- - - // this one is called on application startup and is a good place for the app - // initialization (doing it here and not in the ctor allows to have an error - // return: if OnInit() returns false, the application terminates) - virtual bool OnInit(); -}; - -// Define a new frame type: this is going to be our main frame -class MyFrame : public wxFrame -{ -public: - // ctor(s) - MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size); - - // event handlers (these functions should _not_ be virtual) - void OnQuit(wxCommandEvent& event); - void OnAbout(wxCommandEvent& event); - -private: - // any class wishing to process wxWindows events must use this macro - DECLARE_EVENT_TABLE() -}; - -// ---------------------------------------------------------------------------- -// constants -// ---------------------------------------------------------------------------- - -// IDs for the controls and the menu commands -enum -{ - // menu items - Minimal_Quit = 1, - Minimal_About, - Minimal_Test1, - Minimal_Test2, - - // controls start here (the numbers are, of course, arbitrary) - Minimal_Text = 1000, -}; - -// ---------------------------------------------------------------------------- -// event tables and other macros for wxWindows -// ---------------------------------------------------------------------------- - -// the event tables connect the wxWindows events with the functions (event -// handlers) which process them. It can be also done at run-time, but for the -// simple menu events like this the static method is much simpler. -BEGIN_EVENT_TABLE(MyFrame, wxFrame) - EVT_MENU(Minimal_Quit, MyFrame::OnQuit) - EVT_MENU(Minimal_About, MyFrame::OnAbout) -END_EVENT_TABLE() - -// Create a new application object: this macro will allow wxWindows to create -// the application object during program execution (it's better than using a -// static object for many reasons) and also declares the accessor function -// wxGetApp() which will return the reference of the right type (i.e. MyApp and -// not wxApp) -IMPLEMENT_APP(MyApp) - -// ============================================================================ -// implementation -// ============================================================================ - -// ---------------------------------------------------------------------------- -// the application class -// ---------------------------------------------------------------------------- - -// `Main program' equivalent: the program execution "starts" here -bool MyApp::OnInit() -{ - // Create the main application window - MyFrame *frame = new MyFrame("Minimal wxWindows App", - wxPoint(50, 50), wxSize(450, 340)); - - // Show it and tell the application that it's our main window - // @@@ what does it do exactly, in fact? is it necessary here? - frame->Show(TRUE); - SetTopWindow(frame); - - // success: wxApp::OnRun() will be called which will enter the main message - // loop and the application will run. If we returned FALSE here, the - // application would exit immediately. - return TRUE; -} - -// ---------------------------------------------------------------------------- -// main frame -// ---------------------------------------------------------------------------- - -// frame constructor -MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) - : wxFrame((wxFrame *)NULL, -1, title, pos, size) -{ - // set the frame icon - SetIcon(wxICON(mondrian)); - - // create a menu bar - wxMenu *menuFile = new wxMenu; - - menuFile->Append(Minimal_About, "&About..."); - menuFile->AppendSeparator(); - menuFile->Append(Minimal_Quit, "E&xit"); - - // now append the freshly created menu to the menu bar... - wxMenuBar *menuBar = new wxMenuBar; - menuBar->Append(menuFile, "&File"); - - // ... and attach this menu bar to the frame - SetMenuBar(menuBar); - - // create a status bar just for fun (by default with 1 pane only) - CreateStatusBar(2); - SetStatusText("Welcome to wxWindows!"); -} - - -// event handlers - -void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) -{ - // TRUE is to force the frame to close - Close(TRUE); -} - -void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) -{ - wxString msg; - msg.Printf("This is the about dialog of minimal sample.\n" - "Welcome to %s" -#ifdef wxBETA_NUMBER - " (beta %d)!" -#endif // wxBETA_NUMBER - , wxVERSION_STRING -#ifdef wxBETA_NUMBER - , wxBETA_NUMBER -#endif // wxBETA_NUMBER - ); - - wxMessageBox(msg, "About Minimal", wxOK | wxICON_INFORMATION, this); -} diff --git a/samples/minimal/minimal.def b/samples/minimal/minimal.def deleted file mode 100644 index 59f0db711d..0000000000 --- a/samples/minimal/minimal.def +++ /dev/null @@ -1,7 +0,0 @@ -NAME Minimal -DESCRIPTION 'Minimal wxWindows application' -EXETYPE WINDOWS -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE -HEAPSIZE 4048 -STACKSIZE 16000 diff --git a/samples/minimal/minimal.rc b/samples/minimal/minimal.rc deleted file mode 100644 index 3bf71d6da0..0000000000 --- a/samples/minimal/minimal.rc +++ /dev/null @@ -1,6 +0,0 @@ -mondrian ICON "mondrian.ico" -#include "wx/msw/wx.rc" - -#define MINIMAL_QUIT 1 -#define MINIMAL_ABOUT 102 - diff --git a/samples/minimal/mondrian.ico b/samples/minimal/mondrian.ico deleted file mode 100644 index 2310c5d275a87af295d5ea8dc79ea417a5e74c53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmZQzU<5)11px*Sc)`TLAO@s0fLH;D9e|jTfdxnc0Z */ -#else -#include -/* #include */ -#endif - -#include "resource.h" - -#ifndef __MINGW32__ -#include -#endif - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -// #include "afxres.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (U.K.) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENG) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_UK -#pragma code_page(1252) -#endif //_WIN32 - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -dialog1 DIALOG DISCARDABLE 0, 0, 271, 172 -STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Test Dialog" -FONT 8, "MS Sans Serif" -BEGIN - DEFPUSHBUTTON "OK",wxID_OK,214,7,50,14 - PUSHBUTTON "Cancel",wxID_CANCEL,214,24,50,14 - GROUPBOX "wxStaticBox",IDC_STATIC,7,7,198,158 - EDITTEXT IDC_EDIT1,64,23,125,14,ES_AUTOHSCROLL - LTEXT "wxStaticText",IDC_STATIC,13,25,42,8 - CONTROL "wxCheckBox",IDC_CHECK1,"Button",BS_AUTOCHECKBOX | - WS_TABSTOP,14,47,57,10 - COMBOBOX IDC_COMBO1,83,46,48,30,CBS_DROPDOWN | CBS_SORT | - WS_VSCROLL | WS_TABSTOP - CONTROL "wxRadioButton",IDC_RADIO1,"Button",BS_AUTORADIOBUTTON, - 141,47,64,10 - LISTBOX IDC_LIST1,14,69,86,40,LBS_SORT | LBS_NOINTEGRALHEIGHT | - WS_VSCROLL | WS_TABSTOP - SCROLLBAR IDC_SCROLLBAR1,111,71,76,11 - CONTROL "Slider1",IDC_SLIDER1,"msctls_trackbar32",TBS_BOTH | - TBS_NOTICKS | WS_TABSTOP,10,116,100,15 - CONTROL "Spin1",IDC_SPIN1,"msctls_updown32",UDS_ARROWKEYS,111,90, - 10,14 -END - - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO DISCARDABLE -BEGIN - dialog1, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 264 - TOPMARGIN, 7 - BOTTOMMARGIN, 165 - END -END -#endif // APSTUDIO_INVOKED - - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE DISCARDABLE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE DISCARDABLE -BEGIN - "#include ""afxres.h""\r\n" - "\0" -END - -3 TEXTINCLUDE DISCARDABLE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - -#endif // English (U.K.) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/samples/nativdlg/makefile.b32 b/samples/nativdlg/makefile.b32 deleted file mode 100644 index d84ffd3a49..0000000000 --- a/samples/nativdlg/makefile.b32 +++ /dev/null @@ -1,16 +0,0 @@ -# -# File: makefile.b32 -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: -# -# Makefile : Builds sample for 32-bit BC++ - -WXDIR = $(WXWIN) - -TARGET=nativdlg -OBJECTS = $(TARGET).obj - -!include $(WXDIR)\src\makeprog.b32 - diff --git a/samples/nativdlg/makefile.bcc b/samples/nativdlg/makefile.bcc deleted file mode 100644 index 94226015db..0000000000 --- a/samples/nativdlg/makefile.bcc +++ /dev/null @@ -1,19 +0,0 @@ -# -# File: makefile.bcc -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Builds a BC++ 16-bit sample - -!if "$(WXWIN)" == "" -!error You must define the WXWIN variable in autoexec.bat, e.g. WXWIN=c:\wx -!endif - -WXDIR = $(WXWIN) - -TARGET=nativdlg -OBJECTS=$(TARGET).obj - -!include $(WXDIR)\src\makeprog.bcc - diff --git a/samples/nativdlg/makefile.dos b/samples/nativdlg/makefile.dos deleted file mode 100644 index 32d5aa720b..0000000000 --- a/samples/nativdlg/makefile.dos +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.dos -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Makefile : Builds 16-bit sample, VC++ 1.5 -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -WXDIR = $(WXWIN) - -TARGET=nativdlg -OBJECTS = $(TARGET).obj - -!include $(WXDIR)\src\makeprog.msc - diff --git a/samples/nativdlg/makefile.g95 b/samples/nativdlg/makefile.g95 deleted file mode 100644 index 018f915f18..0000000000 --- a/samples/nativdlg/makefile.g95 +++ /dev/null @@ -1,36 +0,0 @@ -# -# File: makefile.g95 -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile for nativdlg example (UNIX). - -WXDIR = ../.. - -# All common UNIX compiler flags and options are now in -# this central makefile. -include $(WXDIR)/src/makeg95.env - -OBJECTS=$(OBJDIR)/nativdlg.$(OBJSUFF) $(OBJDIR)/nativdlg_resources.$(OBJSUFF) - -all: $(OBJDIR) nativdlg$(GUISUFFIX) - -$(OBJDIR): - mkdir $(OBJDIR) - -$(OBJDIR)/nativdlg.$(OBJSUFF): nativdlg.$(SRCSUFF) nativdlg.h - $(CC) -c $(CPPFLAGS) -o $@ nativdlg.$(SRCSUFF) - -nativdlg$(GUISUFFIX): $(OBJECTS) $(WXLIB) - $(CC) $(LDFLAGS) -o nativdlg$(GUISUFFIX)$(EXESUFF) $(OBJECTS) $(LDLIBS) - -$(OBJDIR)/nativdlg_resources.o: nativdlg.rc - $(RESCOMP) -i nativdlg.rc -o $(OBJDIR)/nativdlg_resources.o $(RESFLAGS) - -clean: - rm -f $(OBJECTS) nativdlg$(GUISUFFIX).exe core *.rsc *.res - diff --git a/samples/nativdlg/makefile.sc b/samples/nativdlg/makefile.sc deleted file mode 100644 index 235c8f8bc1..0000000000 --- a/samples/nativdlg/makefile.sc +++ /dev/null @@ -1,35 +0,0 @@ -# Symantec C++ makefile for hello example -# NOTE that peripheral libraries are now dealt in main wxWindows makefile. - -WXDIR = $(WXWIN) -WXLIB = $(WXDIR)\lib\wx.lib -INCDIR = $(WXDIR)\include -MSWINC = $(INCDIR)\msw -BASEINC = $(INCDIR)\base - -CC=sc -RC=rc -CFLAGS = -o -ml -W -Dwx_msw -LDFLAGS = -ml -W - -INCLUDE=$(BASEINC);$(MSWINC) - -LIBS=$(WXLIB) libw.lib commdlg.lib shell.lib - -.cc.obj: - *$(CC) -c $(CFLAGS) -I$(INCLUDE) $< - -.rc.res: - *$(RC) -r -I$(INCLUDE) $< - -hello.exe: hello.obj hello.def hello.res - *$(CC) $(LDFLAGS) -o$@ hello.obj hello.def $(LIBS) - *$(RC) -k hello.res - -clean: - -del *.obj - -del *.exe - -del *.res - -del *.map - -del *.rws - diff --git a/samples/nativdlg/makefile.unx b/samples/nativdlg/makefile.unx deleted file mode 100644 index 464c4b45d6..0000000000 --- a/samples/nativdlg/makefile.unx +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1998 -# Updated: -# Copyright: (c) 1998 Julian Smart -# -# "%W% %G%" -# -# Makefile for nativdlg example (UNIX). -# Actually, this is a Windows-specific example... - -PROGRAM=nativdlg - -OBJECTS=$(PROGRAM).o - -include ../../src/makeprog.env diff --git a/samples/nativdlg/makefile.vc b/samples/nativdlg/makefile.vc deleted file mode 100644 index 542c1f04dd..0000000000 --- a/samples/nativdlg/makefile.vc +++ /dev/null @@ -1,18 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: (c) Julian Smart -# -# Makefile : Builds sample (VC++, WIN32) -# Use FINAL=1 argument to nmake to build final version with no debug info. - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -PROGRAM=nativdlg -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.vc - diff --git a/samples/nativdlg/makefile.vms b/samples/nativdlg/makefile.vms deleted file mode 100644 index 1ef109fbeb..0000000000 --- a/samples/nativdlg/makefile.vms +++ /dev/null @@ -1,38 +0,0 @@ -#************************************************************************ -# Makefile for HELLO under VMS -# by Stefan Hammes -# (incomplete) update history: -# 11.04.95 -#************************************************************************ - -#************************************************************************ -# Definition section -# (cave: definitions and includes must begin with ',') -#************************************************************************ - -APPOPTS = -APPDEFS = -APPINCS = - -#************************************************************************ -# Module section -#************************************************************************ - -# Name of main module -MAIN = hello - -# Object modules of the application. -OBJS = hello.obj - -.include [--.src]makevms.env - -# main dependency -$(MAIN).exe : $(MAIN).$(OBJ) - $(LINK) $(LINKFLAGS) /exec=$(MAIN).exe $(MAIN).$(OBJ),$(WXLIB)/lib,$(OPTSFILE)/option - - purge *.exe - -#************************************************************************ -# Header file depedencies following -#************************************************************************ -hello.obj : hello.cc hello.h - diff --git a/samples/nativdlg/makefile.wat b/samples/nativdlg/makefile.wat deleted file mode 100644 index 4cbb79e714..0000000000 --- a/samples/nativdlg/makefile.wat +++ /dev/null @@ -1,15 +0,0 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 -# -# - -WXDIR = $(%WXWIN) - -PROGRAM = nativdlg -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - diff --git a/samples/nativdlg/nativdlg.cpp b/samples/nativdlg/nativdlg.cpp deleted file mode 100644 index 17b37c668d..0000000000 --- a/samples/nativdlg/nativdlg.cpp +++ /dev/null @@ -1,130 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: nativdlg.cpp -// Purpose: Native Windows dialog sample -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation -#endif - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include "wx/resource.h" - -#include -#include "nativdlg.h" -#include "resource.h" - -// Declare two frames -MyFrame *frame = NULL; - -IMPLEMENT_APP(MyApp) - -// Testing of ressources -MyApp::MyApp() -{ -} - -bool MyApp::OnInit(void) -{ - // Create the main frame window - frame = new MyFrame(NULL, -1, "wxWindows Native Dialog Sample", wxPoint(0, 0), wxSize(300, 250)); - - // Give it a status line - frame->CreateStatusBar(2); - - // Make a menubar - wxMenu *file_menu = new wxMenu; - - file_menu->Append(RESOURCE_TEST1, "&Dialog box test", "Test dialog box resource"); - file_menu->Append(RESOURCE_QUIT, "E&xit", "Quit program"); - - wxMenuBar *menu_bar = new wxMenuBar; - - menu_bar->Append(file_menu, "&File"); - - // Associate the menu bar with the frame - frame->SetMenuBar(menu_bar); - - // Make a panel - frame->panel = new wxWindow(frame, -1, wxPoint(0, 0), wxSize(400, 400), 0, "MyMainFrame"); - frame->Show(TRUE); - - // Return the main frame window - SetTopWindow(frame); - - return TRUE; -} - -BEGIN_EVENT_TABLE(MyFrame, wxFrame) - EVT_MENU(RESOURCE_QUIT, MyFrame::OnQuit) - EVT_MENU(RESOURCE_TEST1, MyFrame::OnTest1) -END_EVENT_TABLE() - -// Define my frame constructor -MyFrame::MyFrame(wxWindow *parent, const wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size): - wxFrame(parent, id, title, pos, size) -{ - panel = NULL; -} - -void MyFrame::OnQuit(wxCommandEvent& event) -{ - Close(TRUE); -} - -void MyFrame::OnTest1(wxCommandEvent& event) -{ - MyDialog *dialog = new MyDialog; - if (dialog->LoadNativeDialog(this, "dialog1")) - { -/* - wxTextCtrl *text = (wxTextCtrl *)wxFindWindowByName("multitext3", dialog); - if (text) - text->SetValue("wxWindows resource demo"); -*/ - dialog->SetModal(TRUE); - dialog->ShowModal(); - } - dialog->Close(TRUE); -} - -bool MyFrame::OnClose(void) -{ - Show(FALSE); - - return TRUE; -} - -BEGIN_EVENT_TABLE(MyDialog, wxDialog) - EVT_BUTTON(wxID_OK, MyDialog::OnOk) - EVT_BUTTON(wxID_CANCEL, MyDialog::OnCancel) -END_EVENT_TABLE() - - -void MyDialog::OnOk(wxCommandEvent& event) -{ - EndModal(wxID_OK); -} - -void MyDialog::OnCancel(wxCommandEvent& event) -{ - EndModal(wxID_CANCEL); -} - - diff --git a/samples/nativdlg/nativdlg.def b/samples/nativdlg/nativdlg.def deleted file mode 100644 index 49791b5e6c..0000000000 --- a/samples/nativdlg/nativdlg.def +++ /dev/null @@ -1,9 +0,0 @@ -NAME Resource -DESCRIPTION 'Resource' -EXETYPE WINDOWS -STUB 'WINSTUB.EXE' -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE -HEAPSIZE 1024 -STACKSIZE 16192 - diff --git a/samples/nativdlg/nativdlg.h b/samples/nativdlg/nativdlg.h deleted file mode 100644 index 25688ea5fc..0000000000 --- a/samples/nativdlg/nativdlg.h +++ /dev/null @@ -1,47 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: nativdlg.h -// Purpose: Native Windows dialog sample -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma interface -#endif - -// Define a new application -class MyApp: public wxApp -{ - public: - MyApp(void) ; - bool OnInit(void); -}; - -class MyFrame: public wxFrame -{ - public: - wxWindow *panel; - MyFrame(wxWindow *parent, const wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size); - bool OnClose(void); - void OnQuit(wxCommandEvent& event); - void OnTest1(wxCommandEvent& event); - - DECLARE_EVENT_TABLE() -}; - -class MyDialog : public wxDialog -{ - public: - void OnOk(wxCommandEvent& event); - void OnCancel(wxCommandEvent& event); - - DECLARE_EVENT_TABLE() -}; - -#define RESOURCE_QUIT 4 -#define RESOURCE_TEST1 2 - diff --git a/samples/nativdlg/nativdlg.rc b/samples/nativdlg/nativdlg.rc deleted file mode 100644 index db18d163f2..0000000000 --- a/samples/nativdlg/nativdlg.rc +++ /dev/null @@ -1,4 +0,0 @@ -#include "wx/msw/wx.rc" - -#include "dialog1.rc" - diff --git a/samples/nativdlg/resource.h b/samples/nativdlg/resource.h deleted file mode 100644 index 21b2464030..0000000000 --- a/samples/nativdlg/resource.h +++ /dev/null @@ -1,25 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Developer Studio generated include file. -// Used by dialog1.rc -// -// #define dialog1 101 -#define IDC_EDIT1 1000 -#define IDC_CHECK1 1001 -#define IDC_COMBO1 1003 -#define IDC_RADIO1 1005 -#define IDC_LIST1 1006 -#define IDC_SCROLLBAR1 1007 -#define IDC_SLIDER1 1008 -#define IDC_SPIN1 1009 -#define IDC_STATIC -1 - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 102 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1010 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif diff --git a/samples/notebook/.cvsignore b/samples/notebook/.cvsignore deleted file mode 100644 index 7957c41216..0000000000 --- a/samples/notebook/.cvsignore +++ /dev/null @@ -1,3 +0,0 @@ -Linux -linux-gnu -linux \ No newline at end of file diff --git a/samples/notebook/Makefile b/samples/notebook/Makefile deleted file mode 100644 index bccce53f76..0000000000 --- a/samples/notebook/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../../setup/general/makeapp diff --git a/samples/notebook/Makefile.in b/samples/notebook/Makefile.in deleted file mode 100644 index 3684cd27fa..0000000000 --- a/samples/notebook/Makefile.in +++ /dev/null @@ -1,26 +0,0 @@ -# WXXT base directory -WXBASEDIR=@WXBASEDIR@ - -# set the OS type for compilation -OS=@OS@ -# compile a library only -RULE=bin - -# define library name -BIN_TARGET=tab -# define library sources -BIN_SRC=\ -test.cpp - -#define library objects -BIN_OBJ=\ -test.o - -# additional things needed to link -BIN_LINK= - -# additional things needed to compile -ADD_COMPILE= - -# include the definitions now -include ../../../template.mak diff --git a/samples/notebook/makefile.b32 b/samples/notebook/makefile.b32 deleted file mode 100644 index 95ddc80d76..0000000000 --- a/samples/notebook/makefile.b32 +++ /dev/null @@ -1,16 +0,0 @@ -# -# File: makefile.b32 -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: -# -# Makefile : Builds sample for 32-bit BC++ - -WXDIR = $(WXWIN) - -TARGET=test -OBJECTS = $(TARGET).obj - -!include $(WXDIR)\src\makeprog.b32 - diff --git a/samples/notebook/makefile.bcc b/samples/notebook/makefile.bcc deleted file mode 100644 index 669f01905a..0000000000 --- a/samples/notebook/makefile.bcc +++ /dev/null @@ -1,19 +0,0 @@ -# -# File: makefile.bcc -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Builds a BC++ 16-bit sample - -!if "$(WXWIN)" == "" -!error You must define the WXWIN variable in autoexec.bat, e.g. WXWIN=c:\wx -!endif - -WXDIR = $(WXWIN) - -TARGET=test -OBJECTS=$(TARGET).obj - -!include $(WXDIR)\src\makeprog.bcc - diff --git a/samples/notebook/makefile.dos b/samples/notebook/makefile.dos deleted file mode 100644 index 13e3a4ce8e..0000000000 --- a/samples/notebook/makefile.dos +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.dos -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Makefile : Builds 16-bit sample, VC++ 1.5 -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -WXDIR = $(WXWIN) - -TARGET=test -OBJECTS = $(TARGET).obj - -!include $(WXDIR)\src\makeprog.msc - diff --git a/samples/notebook/makefile.g95 b/samples/notebook/makefile.g95 deleted file mode 100644 index 6cae0fbe1d..0000000000 --- a/samples/notebook/makefile.g95 +++ /dev/null @@ -1,37 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile for notebook example - -WXDIR = ../.. - -# All common UNIX compiler flags and options are now in -# this central makefile. -include $(WXDIR)/src/makeg95.env - -OBJECTS = $(OBJDIR)/test.$(OBJSUFF) $(OBJDIR)/test_resources.$(OBJSUFF) - -all: $(OBJDIR) test$(GUISUFFIX)$(EXESUFF) - -wx: - -$(OBJDIR): - mkdir $(OBJDIR) - -test$(GUISUFFIX)$(EXESUFF): $(OBJECTS) $(WXLIB) - $(CC) $(LDFLAGS) -o test$(GUISUFFIX)$(EXESUFF) $(OBJECTS) $(LDLIBS) - -$(OBJDIR)/test.$(OBJSUFF): test.$(SRCSUFF) - $(CC) -c $(CPPFLAGS) -o $@ test.$(SRCSUFF) - -$(OBJDIR)/test_resources.o: test.rc - $(RESCOMP) -i test.rc -o $(OBJDIR)/test_resources.o $(RESFLAGS) - -clean: - rm -f $(OBJECTS) test$(GUISUFFIX).exe core *.rsc *.res diff --git a/samples/notebook/makefile.unx b/samples/notebook/makefile.unx deleted file mode 100644 index a3f76189b2..0000000000 --- a/samples/notebook/makefile.unx +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1998 -# Updated: -# Copyright: (c) 1998 Julian Smart -# -# "%W% %G%" -# -# Makefile for notebook example (UNIX). - -PROGRAM=test - -OBJECTS=$(PROGRAM).o - -include ../../src/makeprog.env - diff --git a/samples/notebook/makefile.vc b/samples/notebook/makefile.vc deleted file mode 100644 index 4ada748eda..0000000000 --- a/samples/notebook/makefile.vc +++ /dev/null @@ -1,18 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: (c) Julian Smart -# -# Makefile : Builds sample (VC++, WIN32) -# Use FINAL=1 argument to nmake to build final version with no debug info. - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -PROGRAM=test -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.vc - diff --git a/samples/notebook/makefile.wat b/samples/notebook/makefile.wat deleted file mode 100644 index 81a83e42a9..0000000000 --- a/samples/notebook/makefile.wat +++ /dev/null @@ -1,15 +0,0 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 -# -# - -WXDIR = $(%WXWIN) - -PROGRAM = test -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - diff --git a/samples/notebook/mondrian.ico b/samples/notebook/mondrian.ico deleted file mode 100644 index 2310c5d275a87af295d5ea8dc79ea417a5e74c53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmZQzU<5)11px*Sc)`TLAO@s0fLH;D9e|jTfdxnc0ZShowModal(); - - // Quit immediately the dialog has been dismissed - return FALSE; -#else - frame = new MyFrame((wxFrame*) NULL, -1, (char *) "Notebook", wxPoint(-1, -1), wxSize(365, 390), wxDEFAULT_FRAME_STYLE); - - // Problem with generic wxNotebook implementation whereby it doesn't size properly unless - // you set the size again -#if defined(__WIN16__) - int width, height; - frame->GetSize(& width, & height); - frame->SetSize(-1, -1, width, height); -#endif - - return TRUE; -#endif -} - -void MyApp::InitTabView(wxNotebook* notebook, wxWindow* window) -{ - m_okButton = new wxButton(window, wxID_OK, "Close", wxPoint(-1, -1), wxSize(80, 25)); - m_cancelButton = new wxButton(window, wxID_CANCEL, "Cancel", wxPoint(-1, -1), wxSize(80, 25)); - m_helpButton = new wxButton(window, wxID_HELP, "Help", wxPoint(-1, -1), wxSize(80, 25)); - m_okButton->SetDefault(); - - wxLayoutConstraints* c = new wxLayoutConstraints; - c->right.SameAs(window, wxRight, 4); - c->bottom.SameAs(window, wxBottom, 4); - c->height.AsIs(); - c->width.AsIs(); - m_helpButton->SetConstraints(c); - - c = new wxLayoutConstraints; - c->right.SameAs(m_helpButton, wxLeft, 4); - c->bottom.SameAs(window, wxBottom, 4); - c->height.AsIs(); - c->width.AsIs(); - m_cancelButton->SetConstraints(c); - - c = new wxLayoutConstraints; - c->right.SameAs(m_cancelButton, wxLeft, 4); - c->bottom.SameAs(window, wxBottom, 4); - c->height.AsIs(); - c->width.AsIs(); - m_okButton->SetConstraints(c); - - // Add some panels - wxPanel *panel1 = new wxPanel(notebook, -1); - // panel1->SetBackgroundColour(wxColour("RED")); - (void)new wxButton(panel1, -1, "Press me", wxPoint(10, 10)); - (void)new wxTextCtrl(panel1, -1, "1234", wxPoint(10, 40), wxSize(120, 150)); - - notebook->AddPage(panel1, "Cat", TRUE); - - wxPanel *panel2 = new wxPanel(notebook, -1); - panel2->SetBackgroundColour(wxColour("BLUE")); - - 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); - - notebook->AddPage(panel2, "Dog"); - - wxPanel *panel3 = new wxPanel(notebook, -1); - panel3->SetBackgroundColour(wxColour("WHITE")); - notebook->AddPage(panel3, "Goat"); - - wxPanel *panel4 = new wxPanel(notebook, -1); - panel4->SetBackgroundColour(wxColour("YELLOW")); - notebook->AddPage(panel4, "Sheep"); -} - -BEGIN_EVENT_TABLE(MyDialog, wxDialog) - EVT_BUTTON(wxID_OK, MyDialog::OnOK) - EVT_BUTTON(wxID_CANCEL, MyDialog::OnOK) -END_EVENT_TABLE() - -MyDialog::MyDialog(wxWindow* parent, const wxWindowID id, const wxString& title, - const wxPoint& pos, const wxSize& size, const long windowStyle): - wxDialog(parent, id, title, pos, size, windowStyle) -{ - Init(); -} - -void MyDialog::OnOK(wxCommandEvent& WXUNUSED(event) ) -{ - EndModal(wxID_OK); -} - -void MyDialog::OnCloseWindow(wxCloseEvent& WXUNUSED(event) ) -{ - EndModal(wxID_CANCEL); -} - -void MyDialog::Init(void) -{ - m_notebook = new wxNotebook(this, ID_NOTEBOOK); - - wxLayoutConstraints* c = new wxLayoutConstraints; - c->left.SameAs(this, wxLeft, 4); - c->right.SameAs(this, wxRight, 4); - c->top.SameAs(this, wxTop, 4); - c->bottom.SameAs(this, wxBottom, 40); - - m_notebook->SetConstraints(c); - - wxGetApp().InitTabView(m_notebook, this); - - SetAutoLayout(TRUE); - Layout(); - - this->Centre(wxBOTH); -} - -BEGIN_EVENT_TABLE(MyFrame, wxFrame) - EVT_BUTTON(wxID_OK, MyFrame::OnOK) - EVT_BUTTON(wxID_CANCEL, MyFrame::OnOK) - EVT_SIZE(MyFrame::OnSize) -END_EVENT_TABLE() - -MyFrame::MyFrame(wxFrame* parent, const wxWindowID id, const wxString& title, - const wxPoint& pos, const wxSize& size, const long windowStyle): - wxFrame(parent, id, title, pos, size, windowStyle) -{ - m_panel = (wxPanel*) NULL; - m_notebook = (wxNotebook*) NULL; - Init(); -} - -void MyFrame::OnOK(wxCommandEvent& WXUNUSED(event) ) -{ - this->Destroy(); -} - -void MyFrame::OnCloseWindow(wxCloseEvent& WXUNUSED(event) ) -{ - this->Destroy(); -} - -void MyFrame::Init(void) -{ - m_panel = new wxPanel(this, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL|wxCLIP_CHILDREN); - - // Note, omit the wxTAB_STYLE_COLOUR_INTERIOR, so we will guarantee a match - // with the panel background, and save a bit of time. - m_notebook = new wxNotebook(m_panel, ID_NOTEBOOK); - - wxLayoutConstraints* c = new wxLayoutConstraints; - c->left.SameAs(m_panel, wxLeft, 4); - c->right.SameAs(m_panel, wxRight, 4); - c->top.SameAs(m_panel, wxTop, 4); - c->bottom.SameAs(m_panel, wxBottom, 40); - - m_notebook->SetConstraints(c); - - wxGetApp().InitTabView(m_notebook, m_panel); - - m_panel->SetAutoLayout(TRUE); - - m_panel->Layout(); - - this->Centre(wxBOTH); - - Show(TRUE); -} - -void MyFrame::OnSize(wxSizeEvent& event) -{ - wxFrame::OnSize(event); - m_panel->Layout(); -} - diff --git a/samples/notebook/test.def b/samples/notebook/test.def deleted file mode 100644 index 43b2ed3907..0000000000 --- a/samples/notebook/test.def +++ /dev/null @@ -1,8 +0,0 @@ -NAME Test -DESCRIPTION 'Notebook test' -EXETYPE WINDOWS -STUB 'WINSTUB.EXE' -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE -HEAPSIZE 1024 -STACKSIZE 16192 diff --git a/samples/notebook/test.h b/samples/notebook/test.h deleted file mode 100644 index 719948f708..0000000000 --- a/samples/notebook/test.h +++ /dev/null @@ -1,79 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: test.h -// Purpose: wxNotebook demo -// Author: Julian Smart -// Modified by: -// Created: 25/10/98 -// RCS-ID: $Id$ -// Copyright: (c) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#include - -// Define a new application -class MyApp: public wxApp -{ -public: - bool OnInit(void); - void InitTabView(wxNotebook* notebook, wxWindow* window); - - wxButton* m_okButton; - wxButton* m_cancelButton; - wxButton* m_helpButton; -}; - -DECLARE_APP(MyApp) - -class MyDialog: public wxDialog -{ -public: - MyDialog(wxWindow* parent, const wxWindowID id, const wxString& title, - const wxPoint& pos, const wxSize& size, const long windowStyle = wxDEFAULT_DIALOG_STYLE); - - void OnOK(wxCommandEvent& event); - void OnCloseWindow(wxCloseEvent& event); - void Init(void); - -protected: - wxNotebook* m_notebook; - -DECLARE_EVENT_TABLE() -}; - -class MyFrame: public wxFrame -{ -public: - MyFrame(wxFrame* parent, const wxWindowID id, const wxString& title, - const wxPoint& pos, const wxSize& size, const long windowStyle = wxDEFAULT_FRAME_STYLE); - - void OnOK(wxCommandEvent& event); - void OnCloseWindow(wxCloseEvent& event); - void OnSize(wxSizeEvent& event); - void Init(void); -protected: - wxNotebook* m_notebook; - wxPanel* m_panel; // Panel containing notebook and OK/Cancel/Help - -DECLARE_EVENT_TABLE() -}; - -// File ids -#define TEST_ABOUT 2 - -// Tab ids -#define TEST_TAB_DOG 1 -#define TEST_TAB_CAT 2 -#define TEST_TAB_GOAT 3 -#define TEST_TAB_GUINEAPIG 4 -#define TEST_TAB_ANTEATER 5 -#define TEST_TAB_HUMMINGBIRD 6 -#define TEST_TAB_SHEEP 7 -#define TEST_TAB_COW 8 -#define TEST_TAB_HORSE 9 -#define TEST_TAB_PIG 10 -#define TEST_TAB_OSTRICH 11 -#define TEST_TAB_AARDVARK 12 - -#define ID_NOTEBOOK 1000 - diff --git a/samples/notebook/test.rc b/samples/notebook/test.rc deleted file mode 100644 index a05f21065a..0000000000 --- a/samples/notebook/test.rc +++ /dev/null @@ -1,3 +0,0 @@ -mondrian_icon ICON "mondrian.ico" -#include "wx/msw/wx.rc" - diff --git a/samples/oleauto/makefile.b32 b/samples/oleauto/makefile.b32 deleted file mode 100644 index 46f1832e2f..0000000000 --- a/samples/oleauto/makefile.b32 +++ /dev/null @@ -1,16 +0,0 @@ -# -# File: makefile.b32 -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: -# -# Makefile : Builds sample for 32-bit BC++ - -WXDIR = $(WXWIN) - -TARGET=oleauto -OBJECTS = $(TARGET).obj - -!include $(WXDIR)\src\makeprog.b32 - diff --git a/samples/oleauto/makefile.g95 b/samples/oleauto/makefile.g95 deleted file mode 100644 index 9df465495c..0000000000 --- a/samples/oleauto/makefile.g95 +++ /dev/null @@ -1,37 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile for oleauto example (UNIX). - -WXDIR = ../.. - -# All common UNIX compiler flags and options are now in -# this central makefile. -include $(WXDIR)/src/makeg95.env - -OBJECTS = $(OBJDIR)/oleauto.$(OBJSUFF) $(OBJDIR)/oleauto_resources.$(OBJSUFF) - -all: $(OBJDIR) oleauto$(GUISUFFIX)$(EXESUFF) - -wx: - -$(OBJDIR): - mkdir $(OBJDIR) - -oleauto$(GUISUFFIX)$(EXESUFF): $(OBJECTS) $(WXLIB) - $(CC) $(LDFLAGS) -o oleauto$(GUISUFFIX)$(EXESUFF) $(OBJECTS) $(LDLIBS) - -$(OBJDIR)/oleauto.$(OBJSUFF): oleauto.$(SRCSUFF) - $(CC) -c $(CPPFLAGS) -o $@ oleauto.$(SRCSUFF) - -$(OBJDIR)/oleauto_resources.o: oleauto.rc - $(RESCOMP) -i oleauto.rc -o $(OBJDIR)/oleauto_resources.o $(RESFLAGS) - -clean: - rm -f $(OBJECTS) oleauto$(GUISUFFIX).exe core *.rsc *.res diff --git a/samples/oleauto/makefile.vc b/samples/oleauto/makefile.vc deleted file mode 100644 index 2e1852f568..0000000000 --- a/samples/oleauto/makefile.vc +++ /dev/null @@ -1,18 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: (c) Julian Smart -# -# Makefile : Builds sample (VC++, WIN32) -# Use FINAL=1 argument to nmake to build final version with no debug info. - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -PROGRAM=oleauto -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.vc - diff --git a/samples/oleauto/makefile.wat b/samples/oleauto/makefile.wat deleted file mode 100644 index 994a25ce15..0000000000 --- a/samples/oleauto/makefile.wat +++ /dev/null @@ -1,15 +0,0 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 -# -# - -WXDIR = $(%WXWIN) - -PROGRAM = oleauto -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - diff --git a/samples/oleauto/mondrian.ico b/samples/oleauto/mondrian.ico deleted file mode 100644 index 2310c5d275a87af295d5ea8dc79ea417a5e74c53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmZQzU<5)11px*Sc)`TLAO@s0fLH;D9e|jTfdxnc0Z - -#ifndef __WXMSW__ -#error "Sorry, this sample works under Windows only." -#endif - -// ---------------------------------------------------------------------------- -// ressources -// ---------------------------------------------------------------------------- -// the application icon -#if defined(__WXGTK__) || defined(__WXMOTIF__) - #include "mondrian.xpm" -#endif - -// ---------------------------------------------------------------------------- -// private classes -// ---------------------------------------------------------------------------- - -// Define a new application type, each program should derive a class from wxApp -class MyApp : public wxApp -{ -public: - // override base class virtuals - // ---------------------------- - - // this one is called on application startup and is a good place for the app - // initialization (doing it here and not in the ctor allows to have an error - // return: if OnInit() returns false, the application terminates) - virtual bool OnInit(); -}; - -// Define a new frame type: this is going to be our main frame -class MyFrame : public wxFrame -{ -public: - // ctor(s) - MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size); - - // event handlers (these functions should _not_ be virtual) - void OnQuit(wxCommandEvent& event); - void OnAbout(wxCommandEvent& event); - void OnTest(wxCommandEvent& event); - -private: - // any class wishing to process wxWindows events must use this macro - DECLARE_EVENT_TABLE() -}; - -// ---------------------------------------------------------------------------- -// constants -// ---------------------------------------------------------------------------- - -// IDs for the controls and the menu commands -enum -{ - // menu items - OleAuto_Quit = 1, - OleAuto_About, - OleAuto_Test, - - // controls start here (the numbers are, of course, arbitrary) - OleAuto_Text = 1000, -}; - -// ---------------------------------------------------------------------------- -// event tables and other macros for wxWindows -// ---------------------------------------------------------------------------- - -// the event tables connect the wxWindows events with the functions (event -// handlers) which process them. It can be also done at run-time, but for the -// simple menu events like this the static method is much simpler. -BEGIN_EVENT_TABLE(MyFrame, wxFrame) - EVT_MENU(OleAuto_Quit, MyFrame::OnQuit) - EVT_MENU(OleAuto_About, MyFrame::OnAbout) - EVT_MENU(OleAuto_Test, MyFrame::OnTest) -END_EVENT_TABLE() - -// Create a new application object: this macro will allow wxWindows to create -// the application object during program execution (it's better than using a -// static object for many reasons) and also declares the accessor function -// wxGetApp() which will return the reference of the right type (i.e. MyApp and -// not wxApp) -IMPLEMENT_APP(MyApp) - -// ============================================================================ -// implementation -// ============================================================================ - -// ---------------------------------------------------------------------------- -// the application class -// ---------------------------------------------------------------------------- - -// `Main program' equivalent: the program execution "starts" here -bool MyApp::OnInit() -{ - // Create the main application window - MyFrame *frame = new MyFrame("OleAuto wxWindows App", - wxPoint(50, 50), wxSize(450, 340)); - - // Show it and tell the application that it's our main window - // @@@ what does it do exactly, in fact? is it necessary here? - frame->Show(TRUE); - SetTopWindow(frame); - - // success: wxApp::OnRun() will be called which will enter the main message - // loop and the application will run. If we returned FALSE here, the - // application would exit immediately. - return TRUE; -} - -// ---------------------------------------------------------------------------- -// main frame -// ---------------------------------------------------------------------------- - -// frame constructor -MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) - : wxFrame((wxFrame *)NULL, -1, title, pos, size) -{ - // set the frame icon - SetIcon(wxICON(mondrian)); - - // create a menu bar - wxMenu *menuFile = new wxMenu; - - menuFile->Append(OleAuto_Test, "&Test Excel Automation..."); - menuFile->Append(OleAuto_About, "&About..."); - menuFile->AppendSeparator(); - menuFile->Append(OleAuto_Quit, "E&xit"); - - // now append the freshly created menu to the menu bar... - wxMenuBar *menuBar = new wxMenuBar; - menuBar->Append(menuFile, "&File"); - - // ... and attach this menu bar to the frame - SetMenuBar(menuBar); - - // create a status bar just for fun (by default with 1 pane only) - CreateStatusBar(2); - SetStatusText("Welcome to wxWindows!"); -} - - -// event handlers - -void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) -{ - // TRUE is to force the frame to close - Close(TRUE); -} - -void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) -{ - wxMessageBox("This is an OLE Automation sample", - "About OleAuto", wxOK | wxICON_INFORMATION, this); -} - -/* Tests OLE automation by making the active Excel cell bold, - * and changing the text. - */ -void MyFrame::OnTest(wxCommandEvent& WXUNUSED(event)) -{ - wxMessageBox("Please ensure Excel is running, then press OK.\nThe active cell should then say 'wxWindows automation test!' in bold."); - - wxAutomationObject excelObject, rangeObject; - if (!excelObject.GetInstance("Excel.Application")) - { - if (!excelObject.CreateInstance("Excel.Application")) - { - wxMessageBox("Could not create Excel object."); - return; - } - } - if (!excelObject.PutProperty("ActiveCell.Value", "wxWindows automation test!")) - { - wxMessageBox("Could not set active cell value."); - return; - } - if (!excelObject.PutProperty("ActiveCell.Font.Bold", (bool) TRUE)) - { - wxMessageBox("Could not put Bold property to active cell."); - return; - } -} - diff --git a/samples/oleauto/oleauto.def b/samples/oleauto/oleauto.def deleted file mode 100644 index c722a64e9a..0000000000 --- a/samples/oleauto/oleauto.def +++ /dev/null @@ -1,8 +0,0 @@ -NAME OleAuto -DESCRIPTION 'OLE Automation wxWindows Sample' -EXETYPE WINDOWS -STUB 'WINSTUB.EXE' -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE -HEAPSIZE 4048 -STACKSIZE 16000 diff --git a/samples/oleauto/oleauto.rc b/samples/oleauto/oleauto.rc deleted file mode 100644 index 7655c62a4c..0000000000 --- a/samples/oleauto/oleauto.rc +++ /dev/null @@ -1,3 +0,0 @@ -mondrian ICON "mondrian.ico" -#include "wx/msw/wx.rc" - diff --git a/samples/ownerdrw/bell.bmp b/samples/ownerdrw/bell.bmp deleted file mode 100644 index 279b827162f2b745c005fc802938a84f0ce5890a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 370 zcmb7*HZ}&$B zw=fcw0f;p=!k7u@ps`;V%cT)}F?J!_0&p#!2&% vld<$VEqU&p<3Ns5`Nf_+KG?%$w#sLQx8`|ei8_4vBY&s8ZsYZro@o37zjK0f diff --git a/samples/ownerdrw/makefile.b32 b/samples/ownerdrw/makefile.b32 deleted file mode 100644 index 2b6dc5de6a..0000000000 --- a/samples/ownerdrw/makefile.b32 +++ /dev/null @@ -1,16 +0,0 @@ -# -# File: makefile.b32 -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: -# -# Makefile : Builds sample for 32-bit BC++ - -WXDIR = $(WXWIN) - -TARGET=ownerdrw -OBJECTS = $(TARGET).obj - -!include $(WXDIR)\src\makeprog.b32 - diff --git a/samples/ownerdrw/makefile.bcc b/samples/ownerdrw/makefile.bcc deleted file mode 100644 index 8073c232d5..0000000000 --- a/samples/ownerdrw/makefile.bcc +++ /dev/null @@ -1,19 +0,0 @@ -# -# File: makefile.bcc -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Builds a BC++ 16-bit sample - -!if "$(WXWIN)" == "" -!error You must define the WXWIN variable in autoexec.bat, e.g. WXWIN=c:\wx -!endif - -WXDIR = $(WXWIN) - -TARGET=ownerdrw -OBJECTS=$(TARGET).obj - -!include $(WXDIR)\src\makeprog.bcc - diff --git a/samples/ownerdrw/makefile.dos b/samples/ownerdrw/makefile.dos deleted file mode 100644 index 8dc0bc9445..0000000000 --- a/samples/ownerdrw/makefile.dos +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.dos -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Makefile : Builds 16-bit sample, VC++ 1.5 -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -WXDIR = $(WXWIN) - -TARGET=ownerdrw -OBJECTS = $(TARGET).obj - -!include $(WXDIR)\src\makeprog.msc - diff --git a/samples/ownerdrw/makefile.g95 b/samples/ownerdrw/makefile.g95 deleted file mode 100644 index c821885cc3..0000000000 --- a/samples/ownerdrw/makefile.g95 +++ /dev/null @@ -1,37 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile for ownerdrw example (UNIX). - -WXDIR = ../.. - -# All common UNIX compiler flags and options are now in -# this central makefile. -include $(WXDIR)/src/makeg95.env - -OBJECTS = $(OBJDIR)/ownerdrw.$(OBJSUFF) $(OBJDIR)/ownerdrw_resources.$(OBJSUFF) - -all: $(OBJDIR) ownerdrw$(GUISUFFIX)$(EXESUFF) - -wx: - -$(OBJDIR): - mkdir $(OBJDIR) - -ownerdrw$(GUISUFFIX)$(EXESUFF): $(OBJECTS) $(WXLIB) - $(CC) $(LDFLAGS) -o ownerdrw$(GUISUFFIX)$(EXESUFF) $(OBJECTS) $(LDLIBS) - -$(OBJDIR)/ownerdrw.$(OBJSUFF): ownerdrw.$(SRCSUFF) - $(CC) -c $(CPPFLAGS) -o $@ ownerdrw.$(SRCSUFF) - -$(OBJDIR)/ownerdrw_resources.o: ownerdrw.rc - $(RESCOMP) -i ownerdrw.rc -o $(OBJDIR)/ownerdrw_resources.o $(RESFLAGS) - -clean: - rm -f $(OBJECTS) ownerdrw$(GUISUFFIX).exe core *.rsc *.res diff --git a/samples/ownerdrw/makefile.vc b/samples/ownerdrw/makefile.vc deleted file mode 100644 index eaafee8621..0000000000 --- a/samples/ownerdrw/makefile.vc +++ /dev/null @@ -1,18 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: (c) Julian Smart -# -# Makefile : Builds sample (VC++, WIN32) -# Use FINAL=1 argument to nmake to build final version with no debug info. - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -PROGRAM=ownerdrw -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.vc - diff --git a/samples/ownerdrw/makefile.wat b/samples/ownerdrw/makefile.wat deleted file mode 100644 index 4e6a3d8867..0000000000 --- a/samples/ownerdrw/makefile.wat +++ /dev/null @@ -1,15 +0,0 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 -# -# - -WXDIR = $(%WXWIN) - -PROGRAM = ownerdrw -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - diff --git a/samples/ownerdrw/mondrian.ico b/samples/ownerdrw/mondrian.ico deleted file mode 100644 index 2310c5d275a87af295d5ea8dc79ea417a5e74c53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmZQzU<5)11px*Sc)`TLAO@s0fLH;D9e|jTfdxnc0Zq|zPkz&Y5tOT>ViEgNe#Und7c3jaG4fmA29pB?wt*V}zU*n{yx zKhe+h2?s{t6>%>VfET5V#7IPIjad&pE_xTydDLRCui=mL)_3-O6xqmmjX@V%1&+p1 z@j_)yir0!H1u@@~GXa#7@&T5DG I*kKgF8+G_}MF0Q* diff --git a/samples/ownerdrw/ownerdrw.cpp b/samples/ownerdrw/ownerdrw.cpp deleted file mode 100644 index 27815e5424..0000000000 --- a/samples/ownerdrw/ownerdrw.cpp +++ /dev/null @@ -1,295 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: ownerdrw.cpp -// Purpose: Owner-draw sample, for Windows -// Author: Vadim Zeitlin -// Modified by: -// Created: 13.11.97 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows license -/////////////////////////////////////////////////////////////////////////////// - -// ============================================================================ -// headers & declarations -// ============================================================================ - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ - #pragma hdrstop -#endif - -#ifndef WX_PRECOMP - #include "wx/wx.h" -#endif - -#include "wx/ownerdrw.h" -#include "wx/menuitem.h" -#include "wx/msw/checklst.h" - -// Define a new application type -class OwnerDrawnApp: public wxApp -{ -public: - bool OnInit(); -}; - -// Define a new frame type -class OwnerDrawnFrame : public wxFrame -{ -public: - // ctor & dtor - OwnerDrawnFrame(wxFrame *frame, char *title, int x, int y, int w, int h); - ~OwnerDrawnFrame(); - - // notifications - void OnQuit (wxCommandEvent& event); - void OnAbout (wxCommandEvent& event); - void OnListboxSelect (wxCommandEvent& event); - void OnCheckboxToggle (wxCommandEvent& event); - void OnListboxDblClick (wxCommandEvent& event); - bool OnClose () { return TRUE; } - - DECLARE_EVENT_TABLE() - -private: - void InitMenu(); - - wxCheckListBox *m_pListBox; -}; - -enum -{ - Menu_Quit = 1, - Menu_First = 100, - Menu_Test1, Menu_Test2, Menu_Test3, - Menu_Bitmap, Menu_Bitmap2, - Menu_Submenu, Menu_Sub1, Menu_Sub2, Menu_Sub3, - Control_First = 1000, - Control_Listbox, Control_Listbox2, -}; - -BEGIN_EVENT_TABLE(OwnerDrawnFrame, wxFrame) - EVT_MENU(Menu_Quit, OwnerDrawnFrame::OnQuit) - EVT_LISTBOX(Control_Listbox, OwnerDrawnFrame::OnListboxSelect) - EVT_CHECKLISTBOX(Control_Listbox, OwnerDrawnFrame::OnCheckboxToggle) - EVT_COMMAND(Control_Listbox, wxEVT_COMMAND_LISTBOX_DOUBLECLICKED, - OwnerDrawnFrame::OnListboxDblClick) -END_EVENT_TABLE() - -IMPLEMENT_APP(OwnerDrawnApp); - -// init our app: create windows -bool OwnerDrawnApp::OnInit(void) -{ - OwnerDrawnFrame *pFrame = new OwnerDrawnFrame(NULL, "wxWindows Ownerdraw Sample", - 50, 50, 450, 340); - SetTopWindow(pFrame); - - return TRUE; -} - -// create the menu bar for the main frame -void OwnerDrawnFrame::InitMenu() -{ - // Make a menubar - wxMenu *file_menu = new wxMenu, - *sub_menu = new wxMenu; - - // vars used for menu construction - wxMenuItem *pItem; - wxFont fontLarge(18, wxROMAN, wxNORMAL, wxBOLD, FALSE), - fontUlined(12, wxDEFAULT, wxNORMAL, wxNORMAL, TRUE), - fontItalic(12, wxMODERN, wxITALIC, wxBOLD, FALSE), - // should be at least of the size of bitmaps - fontBmp(14, wxDEFAULT, wxNORMAL, wxNORMAL, FALSE); - - // sorry for my artistic skills... - wxBitmap bmpBell("bell"), bmpSound("sound"), bmpNoSound("nosound"); - - // construct submenu - pItem = new wxMenuItem(sub_menu, Menu_Sub1, "Submenu &first", "large", TRUE); - pItem->SetFont(fontLarge); - sub_menu->Append(pItem); - - pItem = new wxMenuItem(sub_menu, Menu_Sub2, "Submenu &second", "italic", TRUE); - pItem->SetFont(fontItalic); - sub_menu->Append(pItem); - - pItem = new wxMenuItem(sub_menu, Menu_Sub3, "Submenu &third", "underlined", TRUE); - pItem->SetFont(fontUlined); - sub_menu->Append(pItem); - - // construct menu - pItem = new wxMenuItem(file_menu, Menu_Test1, "&Uncheckable", "red item"); - pItem->SetFont(*wxITALIC_FONT); - pItem->SetTextColour(wxColor(255, 0, 0)); - pItem->SetMarginWidth(23); - file_menu->Append(pItem); - - pItem = new wxMenuItem(file_menu, Menu_Test2, "&Checkable", "checkable item", TRUE); - pItem->SetFont(*wxSMALL_FONT); - file_menu->Append(pItem); - file_menu->Check(Menu_Test2, TRUE); - - pItem = new wxMenuItem(file_menu, Menu_Test3, "&Disabled", "disabled item"); - pItem->SetFont(*wxNORMAL_FONT); - file_menu->Append(pItem); - file_menu->Enable(Menu_Test3, FALSE); - - file_menu->AppendSeparator(); - - pItem = new wxMenuItem(file_menu, Menu_Bitmap, "&Bell", "check/uncheck me!", TRUE); - pItem->SetFont(fontBmp); - pItem->SetBitmaps(bmpBell); - file_menu->Append(pItem); - - pItem = new wxMenuItem(file_menu, Menu_Bitmap2, "So&und", "icon changes!", TRUE); - pItem->SetFont(fontBmp); - pItem->SetBitmaps(bmpSound, bmpNoSound); - file_menu->Append(pItem); - - file_menu->AppendSeparator(); - - pItem = new wxMenuItem(file_menu, Menu_Submenu, "&Sub menu", "", TRUE, sub_menu); - pItem->SetFont(*wxSWISS_FONT); - file_menu->Append(pItem); - - file_menu->AppendSeparator(); - file_menu->Append(Menu_Quit, "&Quit", "Normal item"); - - wxMenuBar *menu_bar = new wxMenuBar; - - menu_bar->Append(file_menu, "&File"); - SetMenuBar(menu_bar); -} - -// main frame constructor -OwnerDrawnFrame::OwnerDrawnFrame(wxFrame *frame, char *title, int x, int y, int w, int h) - : wxFrame(frame, -1, title, wxPoint(x, y), wxSize(w, h)) -{ - // set the icon - SetIcon(wxIcon("mondrian")); - - // create the menu - InitMenu(); - - // make a panel with some controls - wxPanel *pPanel = new wxPanel(this, -1, wxPoint(0, 0), - wxSize(400, 200), wxTAB_TRAVERSAL); - - // check list box - static const char* aszChoices[] = { "Hello", "world", "and", - "goodbye", "cruel", "world", - "-------", "owner-drawn", "listbox" }; - - wxString *astrChoices = new wxString[WXSIZEOF(aszChoices)]; - unsigned int ui; - for ( ui = 0; ui < WXSIZEOF(aszChoices); ui++ ) - astrChoices[ui] = aszChoices[ui]; - - m_pListBox = new wxCheckListBox - ( - pPanel, // parent - Control_Listbox, // control id - wxPoint(10, 10), // listbox poistion - wxSize(200, 200), // listbox size - WXSIZEOF(aszChoices), // number of strings - astrChoices // array of strings - ); - - delete [] astrChoices; - - for ( ui = 0; ui < WXSIZEOF(aszChoices); ui += 2 ) { - m_pListBox->GetItem(ui)->SetBackgroundColour(wxColor(200, 200, 200)); - } - - m_pListBox->Check(2); - - // normal (but owner-drawn) listbox - static const char* aszColors[] = { "Red", "Blue", "Pink", - "Green", "Yellow", - "Black", "Violet" }; - struct { unsigned int r, g, b; } aColors[] = { {255,0,0}, {0,0,255}, {255,128,192}, - {0,255,0}, {255,255,128}, - {0,0,0}, {128,0,255} }; - astrChoices = new wxString[WXSIZEOF(aszColors)]; - for ( ui = 0; ui < WXSIZEOF(aszColors); ui++ ) - astrChoices[ui] = aszColors[ui]; - - wxListBox *pListBox = new wxListBox - ( - pPanel, // parent - Control_Listbox2, // control id - wxPoint(220, 10), // listbox poistion - wxDefaultSize, // listbox size - WXSIZEOF(aszColors), // number of strings - astrChoices, // array of strings - wxLB_OWNERDRAW, // owner-drawn - wxDefaultValidator, // - wxListBoxNameStr - ); - - for ( ui = 0; ui < WXSIZEOF(aszColors); ui++ ) { - pListBox->GetItem(ui)->SetTextColour(wxColor(aColors[ui].r, - aColors[ui].g, - aColors[ui].b)); - // yellow on white is horrible... - if ( ui == 4 ) - pListBox->GetItem(ui)->SetBackgroundColour(wxColor(0, 0, 0)); - - } - - delete[] astrChoices; - - // create the status line - const int widths[] = { -1, 60 }; - CreateStatusBar(2); - SetStatusWidths(2, widths); - SetStatusText("no selection", 0); - - Show(TRUE); -} - -OwnerDrawnFrame::~OwnerDrawnFrame() -{ -} - -void OwnerDrawnFrame::OnQuit(wxCommandEvent& event) -{ - Close(TRUE); -} - -void OwnerDrawnFrame::OnAbout(wxCommandEvent& event) -{ - wxMessageDialog dialog(this, "Demo of owner-drawn controls\n" - "About wxOwnerDrawn", wxYES_NO | wxCANCEL); - dialog.ShowModal(); -} - -void OwnerDrawnFrame::OnListboxSelect(wxCommandEvent& event) -{ - wxString strSelection; - unsigned int nSel = event.GetSelection(); - strSelection.sprintf("item %d selected (%schecked)", nSel, - m_pListBox->IsChecked(nSel) ? "" : "not "); - SetStatusText(strSelection); -} - -void OwnerDrawnFrame::OnListboxDblClick(wxCommandEvent& event) -{ - wxString strSelection; - strSelection.sprintf("item %d double clicked", m_pListBox->GetSelection()); - wxMessageDialog dialog(this, strSelection); - dialog.ShowModal(); -} - -void OwnerDrawnFrame::OnCheckboxToggle(wxCommandEvent& event) -{ - wxString strSelection; - unsigned int nItem = event.GetInt(); - strSelection.sprintf("item %d was %schecked", nItem, - m_pListBox->IsChecked(nItem) ? "" : "un"); - SetStatusText(strSelection); -} \ No newline at end of file diff --git a/samples/ownerdrw/ownerdrw.def b/samples/ownerdrw/ownerdrw.def deleted file mode 100644 index 6f2236cfe5..0000000000 --- a/samples/ownerdrw/ownerdrw.def +++ /dev/null @@ -1,8 +0,0 @@ -NAME OWNERDRW -DESCRIPTION 'Owner-draw sample' -EXETYPE WINDOWS -STUB 'WINSTUB.EXE' -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE -HEAPSIZE 4048 -STACKSIZE 16000 diff --git a/samples/ownerdrw/ownerdrw.rc b/samples/ownerdrw/ownerdrw.rc deleted file mode 100644 index bbc00bdf4b..0000000000 --- a/samples/ownerdrw/ownerdrw.rc +++ /dev/null @@ -1,6 +0,0 @@ -mondrian ICON "mondrian.ico" -bell BITMAP "bell.bmp" -sound BITMAP "sound.bmp" -nosound BITMAP "nosound.bmp" -#include "wx/msw/wx.rc" - diff --git a/samples/ownerdrw/sound.bmp b/samples/ownerdrw/sound.bmp deleted file mode 100644 index 26f5f1883e29c465f0243ccff4ba2766b980229e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 370 zcma)#K@I{T5CogVWPO1C!FTN4zYq`Vk(=M*VVkfu;|Q8;vI5gn44r1a-jaOX(F=8= z&Q#I?l@`}6DH2Deyc-It)=IaB=0~j=QEVF_kG}LLKf`E^u%iV8dx9~Z{F&2#nOj6; Xd)eh_c=Y<>_}B8WjGS#|+C9N5tAudn diff --git a/samples/png/.cvsignore b/samples/png/.cvsignore deleted file mode 100644 index 7957c41216..0000000000 --- a/samples/png/.cvsignore +++ /dev/null @@ -1,3 +0,0 @@ -Linux -linux-gnu -linux \ No newline at end of file diff --git a/samples/png/Makefile b/samples/png/Makefile deleted file mode 100644 index bccce53f76..0000000000 --- a/samples/png/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../../setup/general/makeapp diff --git a/samples/png/Makefile.in b/samples/png/Makefile.in deleted file mode 100644 index c05f687869..0000000000 --- a/samples/png/Makefile.in +++ /dev/null @@ -1,26 +0,0 @@ -# WXXT base directory -WXBASEDIR=@WXBASEDIR@ - -# set the OS type for compilation -OS=@OS@ -# compile a library only -RULE=bin - -# define library name -BIN_TARGET=pngdemo -# define library sources -BIN_SRC=\ -pngdemo.cpp - -#define library objects -BIN_OBJ=\ -pngdemo.o - -# additional things needed to link -BIN_LINK= - -# additional things needed to compile -ADD_COMPILE= - -# include the definitions now -include ../../../template.mak diff --git a/samples/png/julian.png b/samples/png/julian.png deleted file mode 100644 index 9e875e0a1fa2a4584b3cf7e9ad98648880029852..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5439 zcmX9?c{o(<{~k;BWfEEQB5M>S%vdtE3|U6Rgc!ZWSYjlcP!3+1Bu?2zwy|Y|43R-H zs7%?*7P8COx2SmKH}CIzuIrrh$8&#{`@TQtdd~Gc#MoI1@=5W*U@$=|wE1P$+lO@r z@Nlr6D6BgV48{S&*f?46@bHjGBr=&yrBdm1I)lNOnwnxVnHw7$hlhs{kw}6dGKoZ` zQ0O!oiAdaFGO0M6DjY7siiE-7Fc<}oqX7gW8pR-jbRx)rhzt_cMz`n1ZWUQClM(GESUuWa11g;!l7v(9*@#uKmZko0#K?HEP{kq1+?H~h)5wpR5FQ9 zrH}wTM8MI>5Sf6b065Zr`7s~{!61PoECQ{W;4m_PgIE9}fd&B}7DXq4 zRDeYvK?8Ap6o^j5Ls$fh9t8raBqD(&2pPhnv@i%&Du^RtweScD3IR>VqewUe5u-{1 zaAXiqBY_w#36vZUghS9+{jl^wXpxBoRXGV7nW!qk1LuKBz+rIse`fH&VIa#dGMPf9 z5=ku4$&9|fzL60k%Un8rWNM1#C;*WFA_PLLRSJnhrO@b9Is;E60W69DNMs3vCqN`J ziA=#@ajZlXDve5`6F`VYX8=SJjsSuXna=1Vk|?TL2n>!uqR?;vge4F$cn}XjS|}_4 zLUDI-E)Ia`u;1y)+u2Zy-zjaO~kfdL|Y{lP6Vt z-)mJ6#VQS}EFOiFesfnSzveoFIAwj$K8JGLk?%+eS=HK#ZEQYN;=@7$YSK#mxwN(8 z=6d|>>+4kGLR{kKAy@FPlFQOj{_5%0q*yO^g`?xz38vRw`HzTkO-yIHQceBurKhDz zGsDO!D{llb4KkDtY)P4KJ4h*?jiyb<$n-C|~Cy7KdE!JSX#YM3bEqWWKi zb~Y^(yE#o|7G%6(H_7FOwulZ9fI6tq_f9;ardRZbx!r4v_%baIwd+(z{+715#-YOo zzLI{czwPv`BvSW+ouyD_H zVz^}jtMCDZ(|T|D?L<1&$y`r4IBZKIB*><)&2d*hb=2iSFEYipygS5|a_8!WQA11r zE1P%UzbN-_B~uDsc;7PH;;Y1jkl(dB!d$a;s^SrSx83Su1 z!_6V6@9Op~=jGlzQN5U;sz4s5#6Re~LwRoF8Qa_A`X!Hh+h011eqthjZv6|diaUrN zYWk5Xi_Pi&@Y|yQ14sLdoVl~IhM#mkvdx0mK*wGih~xYEbVNh|^)M#S!);V`?{T3j zzg_?HSARIOj?et%7x7w6s1()8Jv{e>n=kQY=BtuhSKahi>kB%Sy$Nb6bH!R&$IOLn zT>Ko##f8dZK@Z~6o%n`a-_cK&m}Uo-btp@jOXjthbUpMaP3!LyxK+A%|LKSLJDSgH zO~g2b%<}^cmv5z|nx7W*%S_j7J3jLC^yyD_@*0SnCSiNUvj>VrKD*~EzKCe!taB;uiD;C(h)Wi2YV#)!4(-w;R)hy7X zF>_sP-hNAr>c1W1;?@svgo@rG%W!TB^h!dQ`ka~I?OIhn+1Jqw+4p}5eVz)uaefNW zu-r>-H4QTes|eydUz0R7thS@e@2##|QCd78AKES^T24c0qpXg?Iri#}s%%bhSXg>+ zf39wQ`_{44up+CcB%M3A3Y;(FLM|1)*jSK@FT{0qpYuM>N6)cLiN!7PYzY^F6=iSB z967TKubG9OlrwsA5xE^IO_siMwq#hXJ61-4>u$&=?IV&AoM&#F=VZ4~mBQ-hB^*}8 zUbika*MRtY|;%nd$V9-iXVBj3kE@y}!3_Jnk9!)J5snP$YUiuOO0xEh%UIE@%-KPl-?t^=e%x80ox9BB}d4?(mN(SaJd8l-H>>0%} zVW`T!SvGQ2=TV#&UUgcdsM2j({No4YQjp8i)lVOpJ{+;&(Td}6duVJqd zMm-@e!23CVVIzk>@1eBWn#1C=DKf+Nw3jbi#uu)816lkA+WX!=&FnV@F3F62U0Yd{ zG@a%7S0~Bx#~#z#KlP7;%Cd~bKazC+xN6t~xaG|>Xg_hX(yZh`?4;PzaYm;Df>YI{DbM)v|2WNk9K;5TXuW<+C(SmO8LF4 zv)WGpr@2I}hQ{m}>~zxO^olQ9-C9j4JJNb-svdSetIK1JtK~`QtvQ2HxJei zBfS(7PHt+*cp^g`bE4P=G3$`S)NG+=M}o7H`p58Q?f~6Njm~u~wLmaK;3evEod{k} zDr6nc8Fztu;eKdH&J9`pv&tREuJb6n*+n7mHr!mGSp9euJBb!TV0)e@q)0RG>REg- zd1!OA@Uh_cgJZV02QC?nzB!YWQ1eu=vk+|Zu&Yf4xKB$9OQ`T(KW~8gLThaRwW0Sm zi5ooUj&-H(c_Xb_CsW1$NpgF7`z00r!RvN=+=(-#RUO7wK(erH&!}%r+={n^;4(}| zr{h_~`D$ISfmm@<{#JYsyh#d^K%dak1q?^kw%-X{ zI^XTEFHn=iucER!#jUk%4f2l4BafMVh_Rcg3>clL>W5cwJ(qJz_`&Y9BGIbb%PZa9 z;Ew2cqKLE_^Rl_oxUZD|Y9KZ14!~nOdI7ht$kS~ixX_$~${MbE?zo^!bln zVFrySl4I_VFXZi>9?_u(qs{Ozg^8g%A{j2VjGv* zGhVE*-B)bl+6{*~>SVc1;JLYZ#4(P9w1?!58vf+bg|rYmAFh<}G0DiEbX2&W+Q{=# z@f91NuC0s*^5UO8jFMDVt&We%3Irc(w{JJhIvF1ltDV{!63ERSYVUV|**J$5(%+|6 z^p4E82Y)}!f1WQki`?xK-u@7UBN!%_5R z3#!10yDy%Vwgjs2+u{F+fasd&)`g#vN%vcVYx5O7FA#8|TWOqdeJUyIA!EO3;oXta zDS=BJR-Z2*BgTDdPcTZ zU|?*_;0~rUN{!F8+TP%g!8lZq8oKJ_*^ zkkN-!J}1o^`;0klben?VL0ptDQ&I~!j|i6Gw&{3#us^C3f+3)KegSe42b;1;zbcJL zi~6%FH|64UF2Wv%CB+WzNeZ4#IK_6`?#|{$7Awg=E_O{8F==gCgyA2xY@#L=)2)H* z$(3qp1+)E30^eo2qpbdu98TbTfIOi0X*ebmW=Pc=5L4fgqpDT9D}&Tag2s zu5Q(fKR}AiPSiC>V{R!#%`YN}qj}B8F3UDF3He-DRP#bOYdN%S^~mf;q#D}3aM&X& zu-T(m%lr862Z_(Rsz($KJ64ZH&cFNSK{JizPZlJY60~YB26>};t}9wwh<9t3{?NWO zHa6HEImcM?FyPS{8>x#XNIr^f6eWB-dsTI zw5Zp%fdWcxpX{pUEUF=rbBrSWZYUr8yIZ+kZ@2O!b>q1g@si3MFkv* zPuBOioT}R%T7V>c zoUa}kW1~c@zvn`B4u`LGd5$#%*S~r7l(<0OM2VO@lu2>y-=x1Q{Bs_`J&@GQOY*yU ztEjQ@O63)kqlmIma^AiHc|Lm#SKqCfra?eCD5SwvL6{QmnWU^_b$b#6Dg>cb*p#lj!Ti>IcW%0&IXnADd6zp;hJ0xj+k^m#3fg-RYv>RrGF#oI?7}R&p=StUyuk{24uDJ)sUxo|6Z^lFx&h`^O z-p~~m?znidCyz}4Tlw1gtA{7I|F_YRU&Uds_FA-3W}|k$iQnuC;bxbb3&@b4ajiqb zOkPLKiguk){xZ|G;X9Rs)ZhKHD@E13hROh5lw4EY2)*Tm8XUZ1+h%W9(V3&=KII`&x7G_3Pd%!!Co5Z-YO&5BR|b zFo}y|T<2#3sjn4c%(HDe+dJD&mbM0VYJPJqzv3^QzO!ntd95OsyJuD}>ax4%!J3}l zC-Jbg488R$;y-{3eoY(L(BVAH8OZkMl{OQ{?h^3U{JPEQHSt*Ur=>&ifPFzRzq z;CRcurX=>4Q40}P{CRAh4zsXC&Mvvd4Z_sBbWJ_KI(4@NXHAc<6Rwq&M#1%^1G&8| zduw}-Co`*VO*A+CZmU1Nb{D1uDJc5h1pwsUzs;Wpr4)P8E9*j9Mkihj3^Yws20f!g zx4#4h2K;&Z=I#Nzh-hW%44jv3d+YX8N#w8}RW7K<)3Cm|?x40ZuV4Jn#_t{f{E3F@ ztM@mztZ(NgrUpV`&)yl}6`XSX4Ge`$2E+;b)B?ci3*cC^a^ zXHf#G@1eS;M+3FmVT^`p{?!!nm$85L#l79`!(a0|_MVM9+bxG1?VI_RjUUSv7HPiu zwOAFsvy*Or-{tqt(5|r#)v_qR{!PTR@!|Itq0@&<%STUyjiY`F=ih7I?CkxslRq52 ze>E;8Xes1HbmZPf_H(`N=zsTSBL^ovUg&Q39dczywq1O)c7D4w$Dqi;^4oy3 z_VfS!vgR|6sY>c)O>Gdoq543(KxBgT?gNnq;oJvjIlgIHD{}OVtULdwm5Pf#UW%$= zJ2biRv(dcONuL6Pj~ohaE1L1eBgSRDSd6RrxydWkD#Q-??q4$d@q!%L2UUL*tnR5UD diff --git a/samples/png/paint16.png b/samples/png/paint16.png deleted file mode 100644 index c977483485cf039be2c1721050da100f5dd72747..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 236 zcmeAS@N?(olHy`uVBq!ia0vp^5EaktaVzwKAz!nBfXl^~X6&1%yuQ%8JHX|Z zZQiaaDYj-C7#qKQF%@EaQmZ(hmvve>BbU{iw&eXE6b|`WT)h8Qvt-|a4Bvvf1TTq) zv)^+*pSWAV?L_RFMFM8#T-L2Jy&EowioH;t6Y${AoH_ghiCZt3r`do~4f R(m*FLc)I$ztaD0e0suKsS~LIv diff --git a/samples/png/pngdemo.cpp b/samples/png/pngdemo.cpp deleted file mode 100644 index be10ff0534..0000000000 --- a/samples/png/pngdemo.cpp +++ /dev/null @@ -1,218 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: pngdemo.cpp -// Purpose: Demos PNG reading -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "pngdemo.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifdef __WXMSW__ -#include -// #include -#endif - -#include "pngdemo.h" - -MyFrame *frame = (MyFrame *) NULL; -wxBitmap *g_TestBitmap = (wxBitmap *) NULL; - -IMPLEMENT_APP(MyApp) - -MyApp::MyApp() -{ -} - -bool MyApp::OnInit(void) -{ -#ifdef __WXMSW__ - wxBitmap::AddHandler(new wxPNGFileHandler); -// wxBitmap::AddHandler(new wxXPMFileHandler); -// wxBitmap::AddHandler(new wxXPMDataHandler); -#endif - - // Create the main frame window - frame = new MyFrame((wxFrame *) NULL, "wxPNGBitmap Demo", wxPoint(0, 0), wxSize(300, 300)); - - // Give it a status line - frame->CreateStatusBar(2); - - // Make a menubar - wxMenu *file_menu = new wxMenu; - wxMenu *help_menu = new wxMenu; - - file_menu->Append(PNGDEMO_LOAD_FILE, "&Load file", "Load file"); - file_menu->Append(PNGDEMO_SAVE_FILE, "&Save file", "Save file"); - file_menu->Append(PNGDEMO_QUIT, "E&xit", "Quit program"); - help_menu->Append(PNGDEMO_ABOUT, "&About", "About PNG demo"); - - wxMenuBar *menu_bar = new wxMenuBar; - - menu_bar->Append(file_menu, "&File"); - menu_bar->Append(help_menu, "&Help"); - - // Associate the menu bar with the frame - frame->SetMenuBar(menu_bar); - - MyCanvas *canvas = new MyCanvas(frame, wxPoint(0, 0), wxSize(100, 100)); - - // Give it scrollbars: the virtual canvas is 20 * 50 = 1000 pixels in each direction -// canvas->SetScrollbars(20, 20, 50, 50, 4, 4); - frame->canvas = canvas; - - frame->Show(TRUE); - - frame->SetStatusText("Hello, wxWindows"); - - return TRUE; -} - -BEGIN_EVENT_TABLE(MyFrame, wxFrame) - EVT_MENU(PNGDEMO_QUIT, MyFrame::OnQuit) - EVT_MENU(PNGDEMO_ABOUT, MyFrame::OnAbout) - EVT_MENU(PNGDEMO_LOAD_FILE, MyFrame::OnLoadFile) - EVT_MENU(PNGDEMO_SAVE_FILE, MyFrame::OnSaveFile) -END_EVENT_TABLE() - -// Define my frame constructor -MyFrame::MyFrame(wxFrame *frame, const wxString& title, const wxPoint& pos, const wxSize& size): - wxFrame(frame, -1, title, pos, size) -{ - canvas = (MyCanvas *) NULL; -} - -void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) -{ - Close(TRUE); -} - -void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) -{ - (void)wxMessageBox("PNG demo\nJulian Smart (c) 1998", - "About PNG Demo", wxOK); -} - -void MyFrame::OnSaveFile(wxCommandEvent& WXUNUSED(event)) -{ - wxString f = wxFileSelector( "Save Image", (const char *)NULL, (const char *)NULL, - "png", "PNG files (*.png)|*.png" ); - - if (f == "") return; - - wxBitmap *backstore = new wxBitmap( 150, 150 ); - - wxMemoryDC memDC; - memDC.SelectObject( *backstore ); - memDC.Clear(); - memDC.SetBrush( *wxBLACK_BRUSH ); - memDC.SetPen( *wxWHITE_PEN ); - memDC.DrawRectangle( 0, 0, 150, 150 ); - memDC.SetPen( *wxBLACK_PEN ); - memDC.DrawLine( 0, 0, 0, 10 ); - memDC.SetTextForeground( *wxWHITE ); - memDC.DrawText( "This is a memory dc.", 10, 10 ); - - memDC.SelectObject( wxNullBitmap ); - - backstore->SaveFile( f, wxBITMAP_TYPE_PNG, (wxPalette*)NULL ); - - delete backstore; -} - -void MyFrame::OnLoadFile(wxCommandEvent& WXUNUSED(event)) -{ - // Show file selector. - wxString f = wxFileSelector("Open Image", (const char *) NULL, (const char *) NULL,"png", - "PNG files (*.png)|*.png"); - - if (f == "") - return; - - if ( g_TestBitmap ) - delete g_TestBitmap; - g_TestBitmap = new wxBitmap(f, wxBITMAP_TYPE_PNG); - if (!g_TestBitmap->Ok()) - { - delete g_TestBitmap; - g_TestBitmap = (wxBitmap *) NULL; - } - - canvas->Refresh(); -} - -BEGIN_EVENT_TABLE(MyCanvas, wxScrolledWindow) - EVT_PAINT(MyCanvas::OnPaint) -END_EVENT_TABLE() - -// Define a constructor for my canvas -MyCanvas::MyCanvas(wxWindow *parent, const wxPoint& pos, const wxSize& size): - wxScrolledWindow(parent, -1, pos, size) -{ -} - -MyCanvas::~MyCanvas(void) -{ -} - -// Define the repainting behaviour -void MyCanvas::OnPaint(wxPaintEvent& WXUNUSED(event)) -{ - wxPaintDC dc(this); - dc.SetPen(* wxRED_PEN); - - int i; - for ( i = 0; i < 500; i += 10) - { - dc.DrawLine(0, i, 800, i); - } - if ( g_TestBitmap && g_TestBitmap->Ok() ) - { - wxMemoryDC memDC; - if ( g_TestBitmap->GetPalette() ) - { - memDC.SetPalette(* g_TestBitmap->GetPalette()); - dc.SetPalette(* g_TestBitmap->GetPalette()); - } - memDC.SelectObject(* g_TestBitmap); - - // Normal, non-transparent blitting - dc.Blit(20, 20, g_TestBitmap->GetWidth(), g_TestBitmap->GetHeight(), & memDC, 0, 0, wxCOPY, FALSE); - - memDC.SelectObject(wxNullBitmap); - } - - if ( g_TestBitmap && g_TestBitmap->Ok() ) - { - wxMemoryDC memDC; - memDC.SelectObject(* g_TestBitmap); - - // Transparent blitting if there's a mask in the bitmap - dc.Blit(20 + g_TestBitmap->GetWidth() + 20, 20, g_TestBitmap->GetWidth(), g_TestBitmap->GetHeight(), & memDC, - 0, 0, wxCOPY, TRUE); - - memDC.SelectObject(wxNullBitmap); - } -} - -// Define the behaviour for the frame closing -// - must delete all frames except for the main one. -bool MyFrame::OnClose(void) -{ - Show(FALSE); - - return TRUE; -} - diff --git a/samples/png/pngdemo.h b/samples/png/pngdemo.h deleted file mode 100644 index eef3432f11..0000000000 --- a/samples/png/pngdemo.h +++ /dev/null @@ -1,59 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: bitmap.h -// Purpose: wxBitmap class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/wx.h" - -// Define a new application -class MyApp: public wxApp -{ - public: - MyApp(void) ; - bool OnInit(void); -}; - -// Define a new frame -class MyCanvas; - -class MyFrame: public wxFrame -{ - public: - MyCanvas *canvas; - MyFrame(wxFrame *parent, const wxString& title, const wxPoint& pos, const wxSize& size); - - bool OnClose(void); - void OnActivate(bool) {} - void OnLoadFile(wxCommandEvent& event); - void OnSaveFile(wxCommandEvent& event); - void OnQuit(wxCommandEvent& event); - void OnAbout(wxCommandEvent& event); -DECLARE_EVENT_TABLE() -}; - -// Define a new canvas which can receive some events -class MyCanvas: public wxScrolledWindow -{ - public: - MyCanvas(wxWindow *parent, const wxPoint& pos, const wxSize& size); - ~MyCanvas(void) ; - - void OnPaint(wxPaintEvent& event); -DECLARE_EVENT_TABLE() -}; - -#define PNGDEMO_QUIT 100 -#define PNGDEMO_ABOUT 101 -#define PNGDEMO_LOAD_FILE 102 -#define PNGDEMO_SAVE_FILE 103 - diff --git a/samples/png/pngdemo.rc b/samples/png/pngdemo.rc deleted file mode 100644 index 82bdf07561..0000000000 --- a/samples/png/pngdemo.rc +++ /dev/null @@ -1,2 +0,0 @@ -#include "wx/msw/wx.rc" - diff --git a/samples/printing/.cvsignore b/samples/printing/.cvsignore deleted file mode 100644 index 7957c41216..0000000000 --- a/samples/printing/.cvsignore +++ /dev/null @@ -1,3 +0,0 @@ -Linux -linux-gnu -linux \ No newline at end of file diff --git a/samples/printing/Makefile b/samples/printing/Makefile deleted file mode 100644 index bccce53f76..0000000000 --- a/samples/printing/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../../setup/general/makeapp diff --git a/samples/printing/Makefile.in b/samples/printing/Makefile.in deleted file mode 100644 index 253013ac47..0000000000 --- a/samples/printing/Makefile.in +++ /dev/null @@ -1,26 +0,0 @@ -# WXXT base directory -WXBASEDIR=@WXBASEDIR@ - -# set the OS type for compilation -OS=@OS@ -# compile a library only -RULE=bin - -# define library name -BIN_TARGET=printing -# define library sources -BIN_SRC=\ -printing.cpp - -#define library objects -BIN_OBJ=\ -printing.o - -# additional things needed to link -BIN_LINK= - -# additional things needed to compile -ADD_COMPILE= - -# include the definitions now -include ../../../template.mak diff --git a/samples/printing/fload.xbm b/samples/printing/fload.xbm deleted file mode 100644 index 27af1f939b..0000000000 --- a/samples/printing/fload.xbm +++ /dev/null @@ -1,11 +0,0 @@ -#define fload_width 30 -#define fload_height 30 -static char fload_bits[] = { - 0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x0f,0xf8,0xff,0xfb,0x0f,0x08,0x00,0xf0, - 0x0f,0xc8,0xff,0xef,0x0f,0x48,0x00,0xf0,0x0f,0x48,0x00,0xf8,0x0f,0x48,0x00, - 0xfc,0x0e,0x48,0x00,0x7f,0x0c,0x48,0xc0,0xbf,0x00,0x48,0xf0,0x9f,0x04,0x48, - 0xfe,0x8f,0x04,0x48,0xff,0x87,0x04,0x48,0x00,0x80,0x04,0x48,0x00,0x80,0x04, - 0x48,0x00,0x80,0x04,0x48,0x00,0x80,0x04,0xc8,0xff,0xff,0x04,0x08,0x00,0x00, - 0x04,0x08,0x00,0x00,0x04,0x08,0xff,0x1f,0x04,0x08,0x01,0x10,0x04,0x08,0x1d, - 0x10,0x04,0x08,0x15,0x10,0x04,0x08,0x15,0x10,0x04,0x08,0x15,0x10,0x04,0x08, - 0x15,0x10,0x04,0x10,0x1d,0x10,0x04,0xe0,0xff,0xff,0x07,0x00,0x00,0x00,0x00}; diff --git a/samples/printing/folder.xpm b/samples/printing/folder.xpm deleted file mode 100644 index 7a36fa27f1..0000000000 --- a/samples/printing/folder.xpm +++ /dev/null @@ -1,48 +0,0 @@ -/* XPM */ -static char * folder_xpm[] = { -"33 33 12 1", -" c None", -". c #D75CA69979E7", -"X c #208120812081", -"o c #FFFFFFFFFFFF", -"O c #B6DA79E74924", -"+ c #596559655965", -"@ c #410341034103", -"# c #514451445144", -"$ c #000000000820", -"% c #8E38596530C2", -"& c #8E3886178617", -"* c #492479E769A6", -" ", -" .. XXX ", -" .o.. X.XXX ", -" .ooo..OOOXXX ", -" .ooooo..OOOXXX ++ ", -"XXX .ooooooo..OOOXXX @#++@ ", -"XOX@X.ooooooooo...OOO@XX+X#+++ ", -"X...@@$.oooooooooo...OOXXX@X@+ ", -"O.....@XXOooooooooooo..OOOX@@X ", -"XO......@%X.ooooooooooo..%%OX@ ", -".O........@XX.oooooooooo.X%XX ", -" %O.........@@$.oooooooo.XX%X ", -" %O...........@@$.oooooo.X%X# ", -" %O.............@@X.oooo.XX%& ", -" .@...............@XX.oo.@XX ", -" %.................@X.o.XXX ", -" OO................O%X..XX@ ", -" +OO.......O..OOOOOOO@..@X& ", -" .%O....OOOOOOOOOOOOOX.+XX ", -" XOOOOOOOOOOOOOOOOOOX+*XX ", -" @OOOOO.OOOOOOOOOOOOX*+XX ", -" .%OOOOOOOOOOOOOOO%OXX#XX ", -" XOOOOOOOOOOO%O%O%%OX++& ", -" @O%O%OO%O%%O%%%%%%%XXX ", -" XXXO%%%%%%%%%%%%%%XXX ", -" OXXX%%%%%%%%%%%%@XX# ", -" OX@X%%%%%%%%%%%XXX ", -" OXXX%%%O%%%%%XXX ", -" OXXX%%%%%%%XX* ", -" OX@X%%%%X%X& ", -" OXXX%%%XX ", -" OXXX%%@ ", -" OXXX "}; diff --git a/samples/printing/makefile.b32 b/samples/printing/makefile.b32 deleted file mode 100644 index 6e1400dbdf..0000000000 --- a/samples/printing/makefile.b32 +++ /dev/null @@ -1,16 +0,0 @@ -# -# File: makefile.b32 -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: -# -# Makefile : Builds sample for 32-bit BC++ - -WXDIR = $(WXWIN) - -TARGET=printing -OBJECTS = $(TARGET).obj - -!include $(WXDIR)\src\makeprog.b32 - diff --git a/samples/printing/makefile.bcc b/samples/printing/makefile.bcc deleted file mode 100644 index d2037e9b35..0000000000 --- a/samples/printing/makefile.bcc +++ /dev/null @@ -1,19 +0,0 @@ -# -# File: makefile.bcc -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Builds a BC++ 16-bit sample - -!if "$(WXWIN)" == "" -!error You must define the WXWIN variable in autoexec.bat, e.g. WXWIN=c:\wx -!endif - -WXDIR = $(WXWIN) - -TARGET=printing -OBJECTS=$(TARGET).obj - -!include $(WXDIR)\src\makeprog.bcc - diff --git a/samples/printing/makefile.dos b/samples/printing/makefile.dos deleted file mode 100644 index 7269a32242..0000000000 --- a/samples/printing/makefile.dos +++ /dev/null @@ -1,88 +0,0 @@ -# -# File: makefile.dos -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile : Builds printing example (DOS). -# Use FINAL=1 argument to nmake to build final version with no debugging -# info. - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -!include $(WXDIR)\src\makemsc.env - -THISDIR = $(WXDIR)\samples\printing -WXLIB = $(WXDIR)\lib\wx.lib -LIBS=$(WXLIB) oldnames libw llibcew commdlg ddeml shell mmsystem -INC=-I$(WXDIR)\include\base -I$(WXDIR)\include\msw -DUMMY=$(WXDIR)\src\msw\dummy.obj - -# Set this to nothing if using MS C++ 7 -ZOPTION=/Z7 - -!ifndef FINAL -FINAL=0 -!endif - -DEBUGFLAG=#/DDEBUG=1 - -!if "$(FINAL)" == "0" -CPPFLAGS=/AL /W3 /Zi $(ZOPTION) /G2sw /Od $(INC) $(DEBUGFLAG) /YuWX_PREC.H /Dwx_msw /Fp$(WXDIR)\src\msw\wx.pch -LINKFLAGS=/NOD /NOE /CO /ONERROR:NOEXE /SEG:256 -!else -CPPFLAGS=/AL /W3 /G2sw $(INC) /Ox /YuWX_PREC.H /Dwx_msw /Fp$(WXDIR)\src\msw\wx.pch -LINKFLAGS=/NOD /ONERROR:NOEXE /SEG:256 -!endif - -HEADERS = printing.h -SOURCES = printing.$(SRCSUFF) -OBJECTS = printing.obj - -printing: printing.exe - -all: wx printing.exe - -wx: - cd $(WXDIR)\src\msw - nmake -f makefile.dos FINAL=$(FINAL) - cd $(THISDIR) - -wxclean: - cd $(WXDIR)\src\msw - nmake -f makefile.dos clean - cd $(THISDIR) - - -printing.exe: $(DUMMY) $(WXLIB) printing.obj printing.def printing.res - link $(LINKFLAGS) @<< -$(DUMMY) printing.obj, -printing, -NUL, -$(LIBS), -printing.def -; -<< - rc -31 -K printing.res - -printing.obj: printing.h printing.$(SRCSUFF) $(DUMMY) $(WXDIR)\include\base\wx_print.h - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -printing.res : printing.rc $(WXDIR)\include\msw\wx.rc - rc -r /i$(WXDIR)\include\msw /i$(WXDIR)\contrib\fafa printing - -clean: - -erase *.obj - -erase *.exe - -erase *.res - -erase *.map - -erase *.sbr - -erase *.pdb - - diff --git a/samples/printing/makefile.g95 b/samples/printing/makefile.g95 deleted file mode 100644 index 4746b7aabe..0000000000 --- a/samples/printing/makefile.g95 +++ /dev/null @@ -1,37 +0,0 @@ -# -# File: makefile.g95 -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile for printing example (UNIX). PRINTING NOT SUPPORTED -# UNDER UNIX YET: THIS IS A PLACEHOLDER. - -WXDIR = ../.. - -# All common UNIX compiler flags and options are now in -# this central makefile. -include $(WXDIR)/src/makeg95.env - -OBJECTS=$(OBJDIR)/printing.$(OBJSUFF) $(OBJDIR)/printing_resources.$(OBJSUFF) - -all: $(OBJDIR) printing$(GUISUFFIX) - -$(OBJDIR): - mkdir $(OBJDIR) - -printing.exe: $(OBJECTS) $(WXLIB) - $(CC) $(LDFLAGS) -o printing$(GUISUFFIX)$(EXESUFF) $(OBJECTS) $(LDLIBS) - -$(OBJDIR)/printing.$(OBJSUFF): printing.$(SRCSUFF) printing.h - $(CC) -c $(CPPFLAGS) -o $@ printing.$(SRCSUFF) - -$(OBJDIR)/printing_resources.o: printing.rc - $(RESCOMP) -i printing.rc -o $(OBJDIR)/printing_resources.o $(RESFLAGS) - -clean: - rm -f $(OBJECTS) printing$(GUISUFFIX).exe core *.res *.rsc - diff --git a/samples/printing/makefile.unx b/samples/printing/makefile.unx deleted file mode 100644 index 319cf1c827..0000000000 --- a/samples/printing/makefile.unx +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1998 -# Updated: -# Copyright: (c) 1998 Julian Smart -# -# "%W% %G%" -# -# Makefile for printing example (UNIX). - -PROGRAM=printing - -OBJECTS=$(PROGRAM).o - -include ../../src/makeprog.env - diff --git a/samples/printing/makefile.vc b/samples/printing/makefile.vc deleted file mode 100644 index d3430e9401..0000000000 --- a/samples/printing/makefile.vc +++ /dev/null @@ -1,18 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: (c) Julian Smart -# -# Makefile : Builds sample (VC++, WIN32) -# Use FINAL=1 argument to nmake to build final version with no debug info. - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -PROGRAM=printing -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.vc - diff --git a/samples/printing/makefile.wat b/samples/printing/makefile.wat deleted file mode 100644 index ebd7bff092..0000000000 --- a/samples/printing/makefile.wat +++ /dev/null @@ -1,15 +0,0 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 -# -# - -WXDIR = $(%WXWIN) - -PROGRAM = printing -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - diff --git a/samples/printing/mondrian.ico b/samples/printing/mondrian.ico deleted file mode 100644 index 2310c5d275a87af295d5ea8dc79ea417a5e74c53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmZQzU<5)11px*Sc)`TLAO@s0fLH;D9e|jTfdxnc0Z -#include "wx/metafile.h" -#include "wx/print.h" -#include "wx/printdlg.h" - -#include "wx/accel.h" - -#if wxTEST_POSTSCRIPT_IN_MSW -#include "wx/generic/printps.h" -#include "wx/generic/prntdlgg.h" -#endif - -#include "printing.h" - -#ifndef __WXMSW__ -#include "mondrian.xpm" -#endif - -// Declare a frame -MyFrame *frame = (MyFrame *) NULL; -int orientation = wxPORTRAIT; - -// Main proc -IMPLEMENT_APP(MyApp) - -// Writes a header on a page. Margin units are in millimetres. -bool WritePageHeader(wxPrintout *printout, wxDC *dc, char *text, float mmToLogical); - -MyApp::MyApp() -{ -} - -// The `main program' equivalent, creating the windows and returning the -// main frame -bool MyApp::OnInit(void) -{ - m_testFont = new wxFont(10, wxSWISS, wxNORMAL, wxNORMAL); - - // Create the main frame window - frame = new MyFrame((wxFrame *) NULL, (char *) "wxWindows Printing Demo", wxPoint(0, 0), wxSize(400, 400)); - - // Give it a status line - frame->CreateStatusBar(2); - - // Load icon and bitmap - frame->SetIcon( wxICON( mondrian) ); - - // Make a menubar - wxMenu *file_menu = new wxMenu; - - file_menu->Append(WXPRINT_PRINT, "&Print...", "Print"); - file_menu->Append(WXPRINT_PRINT_SETUP, "Print &Setup...", "Setup printer properties"); - file_menu->Append(WXPRINT_PAGE_SETUP, "Page Set&up...", "Page setup"); - file_menu->Append(WXPRINT_PREVIEW, "Print Pre&view", "Preview"); - - // Accelerators - wxAcceleratorEntry entries[1]; - entries[0].Set(wxACCEL_CTRL, (int) 'V', WXPRINT_PREVIEW); - wxAcceleratorTable accel(1, entries); - frame->SetAcceleratorTable(accel); - -#if defined(__WXMSW__) && wxTEST_POSTSCRIPT_IN_MSW - file_menu->AppendSeparator(); - file_menu->Append(WXPRINT_PRINT_PS, "Print PostScript...", "Print (PostScript)"); - file_menu->Append(WXPRINT_PRINT_SETUP_PS, "Print Setup PostScript...", "Setup printer properties (PostScript)"); - file_menu->Append(WXPRINT_PAGE_SETUP_PS, "Page Setup PostScript...", "Page setup (PostScript)"); - file_menu->Append(WXPRINT_PREVIEW_PS, "Print Preview PostScript", "Preview (PostScript)"); -#endif - file_menu->AppendSeparator(); - file_menu->Append(WXPRINT_QUIT, "E&xit", "Exit program"); - - wxMenu *help_menu = new wxMenu; - help_menu->Append(WXPRINT_ABOUT, "&About", "About this demo"); - - wxMenuBar *menu_bar = new wxMenuBar; - - menu_bar->Append(file_menu, "&File"); - menu_bar->Append(help_menu, "&Help"); - - // Associate the menu bar with the frame - frame->SetMenuBar(menu_bar); - - MyCanvas *canvas = new MyCanvas(frame, wxPoint(0, 0), wxSize(100, 100), wxRETAINED|wxHSCROLL|wxVSCROLL); - - // Give it scrollbars: the virtual canvas is 20 * 50 = 1000 pixels in each direction - canvas->SetScrollbars(20, 20, 50, 50); - - frame->canvas = canvas; - - frame->Centre(wxBOTH); - frame->Show(TRUE); - - frame->SetStatusText("Printing demo"); - - SetTopWindow(frame); - - return TRUE; -} - -BEGIN_EVENT_TABLE(MyFrame, wxFrame) - EVT_MENU(WXPRINT_QUIT, MyFrame::OnExit) - EVT_MENU(WXPRINT_PRINT, MyFrame::OnPrint) - EVT_MENU(WXPRINT_PREVIEW, MyFrame::OnPrintPreview) - EVT_MENU(WXPRINT_PRINT_SETUP, MyFrame::OnPrintSetup) - EVT_MENU(WXPRINT_PAGE_SETUP, MyFrame::OnPageSetup) - EVT_MENU(WXPRINT_ABOUT, MyFrame::OnPrintAbout) -#if defined(__WXMSW__) && wxTEST_POSTSCRIPT_IN_MSW - EVT_MENU(WXPRINT_PRINT_PS, MyFrame::OnPrintPS) - EVT_MENU(WXPRINT_PREVIEW_PS, MyFrame::OnPrintPreviewPS) - EVT_MENU(WXPRINT_PRINT_SETUP_PS, MyFrame::OnPrintSetupPS) - EVT_MENU(WXPRINT_PAGE_SETUP_PS, MyFrame::OnPageSetupPS) -#endif -END_EVENT_TABLE() - -// Define my frame constructor -MyFrame::MyFrame(wxFrame *frame, const wxString& title, const wxPoint& pos, const wxSize& size): - wxFrame(frame, -1, title, pos, size) -{ - canvas = (MyCanvas *) NULL; -} - -void MyFrame::OnExit(wxCommandEvent& WXUNUSED(event)) -{ - Close(TRUE); -} - -void MyFrame::OnPrint(wxCommandEvent& WXUNUSED(event)) -{ - wxPrinter printer; - MyPrintout printout("My printout"); - if (!printer.Print(this, &printout, TRUE)) - wxMessageBox("There was a problem printing.\nPerhaps your current printer is not set correctly?", "Printing", wxOK); -} - -void MyFrame::OnPrintPreview(wxCommandEvent& WXUNUSED(event)) -{ - wxPrintData printData; - printData.SetOrientation(orientation); - - // Pass two printout objects: for preview, and possible printing. - wxPrintPreview *preview = new wxPrintPreview(new MyPrintout, new MyPrintout, & printData); - if (!preview->Ok()) - { - delete preview; - wxMessageBox("There was a problem previewing.\nPerhaps your current printer is not set correctly?", "Previewing", wxOK); - return; - } - - wxPreviewFrame *frame = new wxPreviewFrame(preview, this, "Demo Print Preview", wxPoint(100, 100), wxSize(600, 650)); - frame->Centre(wxBOTH); - frame->Initialize(); - frame->Show(TRUE); -} - -void MyFrame::OnPrintSetup(wxCommandEvent& WXUNUSED(event)) -{ - wxPrintData data; - data.SetOrientation(orientation); - - wxPrintDialog printerDialog(this, & data); - - printerDialog.GetPrintData().SetSetupDialog(TRUE); - printerDialog.ShowModal(); - - orientation = printerDialog.GetPrintData().GetOrientation(); -} - -void MyFrame::OnPageSetup(wxCommandEvent& WXUNUSED(event)) -{ - wxPageSetupData data; - data.SetOrientation(orientation); - - wxPageSetupDialog pageSetupDialog(this, & data); - pageSetupDialog.ShowModal(); - - data = pageSetupDialog.GetPageSetupData(); - orientation = data.GetOrientation(); -} - -#if defined(__WXMSW__) && wxTEST_POSTSCRIPT_IN_MSW -void MyFrame::OnPrintPS(wxCommandEvent& WXUNUSED(event)) -{ - wxPostScriptPrinter printer; - MyPrintout printout("My printout"); - printer.Print(this, &printout, TRUE); -} - -void MyFrame::OnPrintPreviewPS(wxCommandEvent& WXUNUSED(event)) -{ - wxPrintData printData; - printData.SetOrientation(orientation); - - // Pass two printout objects: for preview, and possible printing. - wxPrintPreview *preview = new wxPrintPreview(new MyPrintout, new MyPrintout, & printData); - wxPreviewFrame *frame = new wxPreviewFrame(preview, this, "Demo Print Preview", wxPoint(100, 100), wxSize(600, 650)); - frame->Centre(wxBOTH); - frame->Initialize(); - frame->Show(TRUE); -} - -void MyFrame::OnPrintSetupPS(wxCommandEvent& WXUNUSED(event)) -{ - wxPrintData data; - data.SetOrientation(orientation); - - wxGenericPrintDialog printerDialog(this, & data); - printerDialog.GetPrintData().SetSetupDialog(TRUE); - printerDialog.ShowModal(); - - orientation = printerDialog.GetPrintData().GetOrientation(); -} - -void MyFrame::OnPageSetupPS(wxCommandEvent& WXUNUSED(event)) -{ - wxPageSetupData data; - data.SetOrientation(orientation); - - wxGenericPageSetupDialog pageSetupDialog(this, & data); - pageSetupDialog.ShowModal(); - - orientation = pageSetupDialog.GetPageSetupData().GetOrientation(); -} -#endif - - -void MyFrame::OnPrintAbout(wxCommandEvent& WXUNUSED(event)) -{ - (void)wxMessageBox("wxWindows printing demo\nAuthor: Julian Smart julian.smart@ukonline.co.uk", - "About wxWindows printing demo", wxOK|wxCENTRE); -} - -void MyFrame::Draw(wxDC& dc) -{ - dc.SetFont(* wxGetApp().m_testFont); - - dc.SetBackgroundMode(wxTRANSPARENT); - - dc.SetBrush(* wxCYAN_BRUSH); - dc.SetPen(* wxRED_PEN); - - dc.DrawRectangle(0, 30, 200, 100); - dc.DrawText("Rectangle 200 by 100", 40, 40); - - dc.DrawEllipse(50, 140, 100, 50); - - dc.DrawText("Test message: this is in 10 point text", 10, 180); - - dc.SetPen(* wxBLACK_PEN); - dc.DrawLine(0, 0, 200, 200); - dc.DrawLine(200, 0, 0, 200); - - wxIcon my_icon = wxICON(mondrian) ; - - dc.DrawIcon( my_icon, 100, 100); -} - -void MyFrame::OnSize(wxSizeEvent& event ) -{ - wxFrame::OnSize(event); -} - -BEGIN_EVENT_TABLE(MyCanvas, wxScrolledWindow) - EVT_MOUSE_EVENTS(MyCanvas::OnEvent) -END_EVENT_TABLE() - -// Define a constructor for my canvas -MyCanvas::MyCanvas(wxFrame *frame, const wxPoint& pos, const wxSize& size, long style): - wxScrolledWindow(frame, -1, pos, size, style) -{ -} - -MyCanvas::~MyCanvas(void) -{ -} - -// Define the repainting behaviour -void MyCanvas::OnDraw(wxDC& dc) -{ - frame->Draw(dc); -} - -void MyCanvas::OnEvent(wxMouseEvent& WXUNUSED(event)) -{ -} - -bool MyFrame::OnClose(void) -{ - Show(FALSE); - delete wxGetApp().m_testFont; - - return TRUE; -} - -bool MyPrintout::OnPrintPage(int page) -{ - wxDC *dc = GetDC(); - if (dc) - { - if (page == 1) - DrawPageOne(dc); - else if (page == 2) - DrawPageTwo(dc); - - dc->SetDeviceOrigin(0, 0); - dc->SetUserScale(1.0, 1.0); - - char buf[200]; - sprintf(buf, "PAGE %d", page); - dc->DrawText(buf, 10, 10); - - return TRUE; - } - else - return FALSE; -} - -bool MyPrintout::OnBeginDocument(int startPage, int endPage) -{ - if (!wxPrintout::OnBeginDocument(startPage, endPage)) - return FALSE; - - return TRUE; -} - -void MyPrintout::GetPageInfo(int *minPage, int *maxPage, int *selPageFrom, int *selPageTo) -{ - *minPage = 1; - *maxPage = 2; - *selPageFrom = 1; - *selPageTo = 2; -} - -bool MyPrintout::HasPage(int pageNum) -{ - return (pageNum == 1 || pageNum == 2); -} - -void MyPrintout::DrawPageOne(wxDC *dc) -{ -/* You might use THIS code if you were scaling - * graphics of known size to fit on the page. - */ - int w, h; - - // We know the graphic is 200x200. If we didn't know this, - // we'd need to calculate it. - float maxX = 200; - float maxY = 200; - - // Let's have at least 50 device units margin - float marginX = 50; - float marginY = 50; - - // Add the margin to the graphic size - maxX += (2*marginX); - maxY += (2*marginY); - - // Get the size of the DC in pixels - dc->GetSize(&w, &h); - - // Calculate a suitable scaling factor - float scaleX=(float)(w/maxX); - float scaleY=(float)(h/maxY); - - // Use x or y scaling factor, whichever fits on the DC - float actualScale = wxMin(scaleX,scaleY); - - // Calculate the position on the DC for centring the graphic - float posX = (float)((w - (200*actualScale))/2.0); - float posY = (float)((h - (200*actualScale))/2.0); - - // Set the scale and origin - dc->SetUserScale(actualScale, actualScale); - dc->SetDeviceOrigin( (long)posX, (long)posY ); - - frame->Draw(*dc); -} - -void MyPrintout::DrawPageTwo(wxDC *dc) -{ -/* You might use THIS code to set the printer DC to ROUGHLY reflect - * the screen text size. This page also draws lines of actual length 5cm - * on the page. - */ - // Get the logical pixels per inch of screen and printer - int ppiScreenX, ppiScreenY; - GetPPIScreen(&ppiScreenX, &ppiScreenY); - int ppiPrinterX, ppiPrinterY; - GetPPIPrinter(&ppiPrinterX, &ppiPrinterY); - - // This scales the DC so that the printout roughly represents the - // the screen scaling. The text point size _should_ be the right size - // but in fact is too small for some reason. This is a detail that will - // need to be addressed at some point but can be fudged for the - // moment. - float scale = (float)((float)ppiPrinterX/(float)ppiScreenX); - - // Now we have to check in case our real page size is reduced - // (e.g. because we're drawing to a print preview memory DC) - int pageWidth, pageHeight; - int w, h; - dc->GetSize(&w, &h); - GetPageSizePixels(&pageWidth, &pageHeight); - - // If printer pageWidth == current DC width, then this doesn't - // change. But w might be the preview bitmap width, so scale down. - float overallScale = scale * (float)(w/(float)pageWidth); - dc->SetUserScale(overallScale, overallScale); - - // Calculate conversion factor for converting millimetres into - // logical units. - // There are approx. 25.1 mm to the inch. There are ppi - // device units to the inch. Therefore 1 mm corresponds to - // ppi/25.1 device units. We also divide by the - // screen-to-printer scaling factor, because we need to - // unscale to pass logical units to DrawLine. - - // Draw 50 mm by 50 mm L shape - float logUnitsFactor = (float)(ppiPrinterX/(scale*25.1)); - float logUnits = (float)(50*logUnitsFactor); - dc->SetPen(* wxBLACK_PEN); - dc->DrawLine(50, 250, (long)(50.0 + logUnits), 250); - dc->DrawLine(50, 250, 50, (long)(250.0 + logUnits)); - - dc->SetFont(* wxGetApp().m_testFont); - dc->SetBackgroundMode(wxTRANSPARENT); - - dc->DrawText("Some test text", 200, 200 ); - - // TESTING - - int leftMargin = 20; - int rightMargin = 20; - int topMargin = 20; - int bottomMargin = 20; - - int pageWidthMM, pageHeightMM; - GetPageSizeMM(&pageWidthMM, &pageHeightMM); - - float leftMarginLogical = (float)(logUnitsFactor*leftMargin); - float topMarginLogical = (float)(logUnitsFactor*topMargin); - float bottomMarginLogical = (float)(logUnitsFactor*(pageHeightMM - bottomMargin)); - float rightMarginLogical = (float)(logUnitsFactor*(pageWidthMM - rightMargin)); - - dc->SetPen(* wxRED_PEN); - dc->DrawLine( (long)leftMarginLogical, (long)topMarginLogical, - (long)rightMarginLogical, (long)topMarginLogical); - dc->DrawLine( (long)leftMarginLogical, (long)bottomMarginLogical, - (long)rightMarginLogical, (long)bottomMarginLogical); - - WritePageHeader(this, dc, "A header", logUnitsFactor); -} - -// Writes a header on a page. Margin units are in millimetres. -bool WritePageHeader(wxPrintout *printout, wxDC *dc, char *text, float mmToLogical) -{ -/* - static wxFont *headerFont = (wxFont *) NULL; - if (!headerFont) - { - headerFont = wxTheFontList->FindOrCreateFont(16, wxSWISS, wxNORMAL, wxBOLD); - } - dc->SetFont(headerFont); -*/ - - int pageWidthMM, pageHeightMM; - - printout->GetPageSizeMM(&pageWidthMM, &pageHeightMM); - - int leftMargin = 10; - int topMargin = 10; - int rightMargin = 10; - - float leftMarginLogical = (float)(mmToLogical*leftMargin); - float topMarginLogical = (float)(mmToLogical*topMargin); - float rightMarginLogical = (float)(mmToLogical*(pageWidthMM - rightMargin)); - - long xExtent, yExtent; - dc->GetTextExtent(text, &xExtent, &yExtent); - float xPos = (float)(((((pageWidthMM - leftMargin - rightMargin)/2.0)+leftMargin)*mmToLogical) - (xExtent/2.0)); - dc->DrawText(text, (long)xPos, (long)topMarginLogical); - - dc->SetPen(* wxBLACK_PEN); - dc->DrawLine( (long)leftMarginLogical, (long)(topMarginLogical+yExtent), - (long)rightMarginLogical, (long)topMarginLogical+yExtent ); - - return TRUE; -} diff --git a/samples/printing/printing.def b/samples/printing/printing.def deleted file mode 100644 index e880656894..0000000000 --- a/samples/printing/printing.def +++ /dev/null @@ -1,9 +0,0 @@ -NAME Printing -DESCRIPTION 'Printing' -EXETYPE WINDOWS -STUB 'WINSTUB.EXE' -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE -HEAPSIZE 1024 -STACKSIZE 16192 - diff --git a/samples/printing/printing.h b/samples/printing/printing.h deleted file mode 100644 index 1b56be4d70..0000000000 --- a/samples/printing/printing.h +++ /dev/null @@ -1,96 +0,0 @@ -/* - * File: printing.h - * Purpose: Printing demo for wxWindows class library - * Author: Julian Smart - * Created: 1995 - * Updated: - * Copyright: (c) 1995, AIAI, University of Edinburgh - */ - -/* sccsid[] = "%W% %G%" */ - -#ifdef __GNUG__ -#pragma interface -#endif - -// Define a new application -class MyApp: public wxApp -{ - public: - MyApp(void) ; - bool OnInit(void); - - wxFont* m_testFont; -}; - -DECLARE_APP(MyApp) - -class MyCanvas; - -// Define a new canvas and frame -class MyFrame: public wxFrame -{ - public: - MyCanvas *canvas; - MyFrame(wxFrame *frame, const wxString& title, const wxPoint& pos, const wxSize& size); - - bool OnClose(void); - - void Draw(wxDC& dc); - - void OnSize(wxSizeEvent& event); - void OnPrint(wxCommandEvent& event); - void OnPrintPreview(wxCommandEvent& event); - void OnPrintSetup(wxCommandEvent& event); - void OnPageSetup(wxCommandEvent& event); -#if defined(__WXMSW__) && wxTEST_POSTSCRIPT_IN_MSW - void OnPrintPS(wxCommandEvent& event); - void OnPrintPreviewPS(wxCommandEvent& event); - void OnPrintSetupPS(wxCommandEvent& event); - void OnPageSetupPS(wxCommandEvent& event); -#endif - - void OnExit(wxCommandEvent& event); - void OnPrintAbout(wxCommandEvent& event); -DECLARE_EVENT_TABLE() -}; - -// Define a new canvas which can receive some events -class MyCanvas: public wxScrolledWindow -{ - public: - MyCanvas(wxFrame *frame, const wxPoint& pos, const wxSize& size, long style = wxRETAINED); - ~MyCanvas(void) ; - - virtual void OnDraw(wxDC& dc); - void OnEvent(wxMouseEvent& event); - -DECLARE_EVENT_TABLE() -}; - -class MyPrintout: public wxPrintout -{ - public: - MyPrintout(char *title = "My printout"):wxPrintout(title) {} - bool OnPrintPage(int page); - bool HasPage(int page); - bool OnBeginDocument(int startPage, int endPage); - void GetPageInfo(int *minPage, int *maxPage, int *selPageFrom, int *selPageTo); - - void DrawPageOne(wxDC *dc); - void DrawPageTwo(wxDC *dc); -}; - -#define WXPRINT_QUIT 100 -#define WXPRINT_PRINT 101 -#define WXPRINT_PRINT_SETUP 102 -#define WXPRINT_PAGE_SETUP 103 -#define WXPRINT_PREVIEW 104 - -#define WXPRINT_PRINT_PS 105 -#define WXPRINT_PRINT_SETUP_PS 106 -#define WXPRINT_PAGE_SETUP_PS 107 -#define WXPRINT_PREVIEW_PS 108 - -#define WXPRINT_ABOUT 109 - diff --git a/samples/printing/printing.rc b/samples/printing/printing.rc deleted file mode 100644 index 7655c62a4c..0000000000 --- a/samples/printing/printing.rc +++ /dev/null @@ -1,3 +0,0 @@ -mondrian ICON "mondrian.ico" -#include "wx/msw/wx.rc" - diff --git a/samples/printing/test.dsp b/samples/printing/test.dsp deleted file mode 100644 index c6e9c37f7a..0000000000 --- a/samples/printing/test.dsp +++ /dev/null @@ -1,118 +0,0 @@ -# Microsoft Developer Studio Project File - Name="test" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 5.00 -# ** NICHT BEARBEITEN ** - -# TARGTYPE "Win32 (x86) Application" 0x0101 - -CFG=test - Win32 Release -!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit\ - NMAKE -!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den\ - Befehl -!MESSAGE -!MESSAGE NMAKE /f "test.mak". -!MESSAGE -!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben -!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel: -!MESSAGE -!MESSAGE NMAKE /f "test.mak" CFG="test - Win32 Release" -!MESSAGE -!MESSAGE Für die Konfiguration stehen zur Auswahl: -!MESSAGE -!MESSAGE "test - Win32 Release" (basierend auf "Win32 (x86) Application") -!MESSAGE "test - Win32 Debug" (basierend auf "Win32 (x86) Application") -!MESSAGE - -# Begin Project -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "test - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir ".\Release" -# PROP BASE Intermediate_Dir ".\Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir ".\Release" -# PROP Intermediate_Dir ".\Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c -# ADD CPP /nologo /w /W0 /GX /O2 /I "..\..\include" /D "__WXDEBUG__" /D "__WIN32__" /D "__WXMSW__" /D "__WIN95__" /D "STRICT" /D "__WINDOWS__" /YX /FD /D /c -# ADD BASE MTL /nologo /D "NDEBUG" /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x407 /d "NDEBUG" -# ADD RSC /l 0x407 /i "..\..\include" /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib oldnames.lib comctl32.lib ctl3d32.lib odbc32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib ..\..\debug\wxwin.lib ctl3d32.lib /nologo /subsystem:windows /incremental:yes /pdb:".\Debug/santis.pdb" /debug /machine:I386 /out:".\Debug/santis.exe" -# SUBTRACT LINK32 /pdb:none - -!ELSEIF "$(CFG)" == "test - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir ".\Debug" -# PROP BASE Intermediate_Dir ".\Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir ".\Debug" -# PROP Intermediate_Dir ".\Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c -# ADD CPP /nologo /w /W0 /GX /Z7 /Od /I "..\..\include" /D "__WXDEBUG__" /D "__WIN32__" /D "__WXMSW__" /D "__WIN95__" /D "STRICT" /D "__WINDOWS__" /YX /FD /D /c -# ADD BASE MTL /nologo /D "_DEBUG" /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x407 /d "_DEBUG" -# ADD RSC /l 0x407 /i "..\..\include" /d "WXDEBUG" /d "__WXMSW__" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib oldnames.lib comctl32.lib ctl3d32.lib odbc32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib ..\..\debug\wxwin.lib ctl3d32.lib /nologo /subsystem:windows /debug /machine:I386 -# SUBTRACT LINK32 /pdb:none - -!ENDIF - -# Begin Target - -# Name "test - Win32 Release" -# Name "test - Win32 Debug" -# Begin Group "Quellcodedateien" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90" -# Begin Source File - -SOURCE=.\printing.cpp -# End Source File -# End Group -# Begin Group "Header-Dateien" - -# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd" -# Begin Source File - -SOURCE=.\printing.h -# End Source File -# End Group -# Begin Group "Ressourcendateien" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe" -# Begin Source File - -SOURCE=.\printing.rc -# End Source File -# End Group -# End Target -# End Project diff --git a/samples/printing/test.dsw b/samples/printing/test.dsw deleted file mode 100644 index 449f529bb9..0000000000 --- a/samples/printing/test.dsw +++ /dev/null @@ -1,29 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 5.00 -# WARNUNG: DIESE ARBEITSBEREICHSDATEI DARF NICHT BEARBEITET ODER GELÖSCHT WERDEN! - -############################################################################### - -Project: "test"=.\test.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/samples/proplist/.cvsignore b/samples/proplist/.cvsignore deleted file mode 100644 index 7957c41216..0000000000 --- a/samples/proplist/.cvsignore +++ /dev/null @@ -1,3 +0,0 @@ -Linux -linux-gnu -linux \ No newline at end of file diff --git a/samples/proplist/Makefile b/samples/proplist/Makefile deleted file mode 100644 index bccce53f76..0000000000 --- a/samples/proplist/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../../setup/general/makeapp diff --git a/samples/proplist/Makefile.in b/samples/proplist/Makefile.in deleted file mode 100644 index fd1b9963fa..0000000000 --- a/samples/proplist/Makefile.in +++ /dev/null @@ -1,26 +0,0 @@ -# WXXT base directory -WXBASEDIR=@WXBASEDIR@ - -# set the OS type for compilation -OS=@OS@ -# compile a library only -RULE=bin - -# define library name -BIN_TARGET=test -# define library sources -BIN_SRC=\ -test.cpp - -#define library objects -BIN_OBJ=\ -test.o - -# additional things needed to link -BIN_LINK= - -# additional things needed to compile -ADD_COMPILE= - -# include the definitions now -include ../../../template.mak diff --git a/samples/proplist/cross.bmp b/samples/proplist/cross.bmp deleted file mode 100644 index 079cb0dd58010154f6a791eead3a4cc19c02cf31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 198 zcmZup$qm3D40EMQNS&l}^k1o?@M^wn1~1l1?Et?*e8`4ecgHv{Y0+9kDTRf{z+H~uRU|SqMnJMG$uK0U!a!ytzjWs7-TIffM+-jaAS7o1 diff --git a/samples/proplist/makefile.b32 b/samples/proplist/makefile.b32 deleted file mode 100644 index 95ddc80d76..0000000000 --- a/samples/proplist/makefile.b32 +++ /dev/null @@ -1,16 +0,0 @@ -# -# File: makefile.b32 -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: -# -# Makefile : Builds sample for 32-bit BC++ - -WXDIR = $(WXWIN) - -TARGET=test -OBJECTS = $(TARGET).obj - -!include $(WXDIR)\src\makeprog.b32 - diff --git a/samples/proplist/makefile.bcc b/samples/proplist/makefile.bcc deleted file mode 100644 index 669f01905a..0000000000 --- a/samples/proplist/makefile.bcc +++ /dev/null @@ -1,19 +0,0 @@ -# -# File: makefile.bcc -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Builds a BC++ 16-bit sample - -!if "$(WXWIN)" == "" -!error You must define the WXWIN variable in autoexec.bat, e.g. WXWIN=c:\wx -!endif - -WXDIR = $(WXWIN) - -TARGET=test -OBJECTS=$(TARGET).obj - -!include $(WXDIR)\src\makeprog.bcc - diff --git a/samples/proplist/makefile.dos b/samples/proplist/makefile.dos deleted file mode 100644 index 983ef2da8b..0000000000 --- a/samples/proplist/makefile.dos +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.dos -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Makefile : Builds 16-bit sample, VC++ 1.5 -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -WXDIR = $(WXWIN) - -TARGET=test -OBJECTS=$(TARGET).obj - -!include $(WXDIR)\src\makeprog.msc - diff --git a/samples/proplist/makefile.g95 b/samples/proplist/makefile.g95 deleted file mode 100644 index fa8c6fbd2f..0000000000 --- a/samples/proplist/makefile.g95 +++ /dev/null @@ -1,37 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile for test example (UNIX). - -WXDIR = ../.. - -# All common UNIX compiler flags and options are now in -# this central makefile. -include $(WXDIR)/src/makeg95.env - -OBJECTS = $(OBJDIR)/test.$(OBJSUFF) $(OBJDIR)/test_resources.$(OBJSUFF) - -all: $(OBJDIR) test$(GUISUFFIX)$(EXESUFF) - -wx: - -$(OBJDIR): - mkdir $(OBJDIR) - -test$(GUISUFFIX)$(EXESUFF): $(OBJECTS) $(WXLIB) - $(CC) $(LDFLAGS) -o test$(GUISUFFIX)$(EXESUFF) $(OBJECTS) $(LDLIBS) - -$(OBJDIR)/test.$(OBJSUFF): test.$(SRCSUFF) - $(CC) -c $(CPPFLAGS) -o $@ test.$(SRCSUFF) - -$(OBJDIR)/test_resources.o: test.rc - $(RESCOMP) -i test.rc -o $(OBJDIR)/test_resources.o $(RESFLAGS) - -clean: - rm -f $(OBJECTS) test$(GUISUFFIX).exe core *.rsc *.res diff --git a/samples/proplist/makefile.unx b/samples/proplist/makefile.unx deleted file mode 100644 index f874755623..0000000000 --- a/samples/proplist/makefile.unx +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1998 -# Updated: -# Copyright: (c) 1998 Julian Smart -# -# "%W% %G%" -# -# Makefile for proplist example (UNIX). - -PROGRAM=test - -OBJECTS=$(PROGRAM).o - -include ../../src/makeprog.env - diff --git a/samples/proplist/makefile.vc b/samples/proplist/makefile.vc deleted file mode 100644 index 4ada748eda..0000000000 --- a/samples/proplist/makefile.vc +++ /dev/null @@ -1,18 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: (c) Julian Smart -# -# Makefile : Builds sample (VC++, WIN32) -# Use FINAL=1 argument to nmake to build final version with no debug info. - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -PROGRAM=test -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.vc - diff --git a/samples/proplist/makefile.wat b/samples/proplist/makefile.wat deleted file mode 100644 index 81a83e42a9..0000000000 --- a/samples/proplist/makefile.wat +++ /dev/null @@ -1,15 +0,0 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 -# -# - -WXDIR = $(%WXWIN) - -PROGRAM = test -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - diff --git a/samples/proplist/test.cpp b/samples/proplist/test.cpp deleted file mode 100644 index 484b59e22e..0000000000 --- a/samples/proplist/test.cpp +++ /dev/null @@ -1,321 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: test.cpp -// Purpose: Property sheet test implementation -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "test.h" -#endif - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include "test.h" - -// A macro needed for some compilers (AIX) that need 'main' to be defined -// in the application itself. -IMPLEMENT_WXWIN_MAIN - -IMPLEMENT_APP(MyApp) - -wxPropertyValidatorRegistry myListValidatorRegistry; -wxPropertyValidatorRegistry myFormValidatorRegistry; - -MyApp::MyApp(void) -{ - m_childWindow = NULL; - m_mainFrame = NULL; -} - -bool MyApp::OnInit(void) -{ - RegisterValidators(); - - // Create the main frame window - m_mainFrame = new MyFrame(NULL, "wxPropertySheet Demo", wxPoint(0, 0), wxSize(300, 400), wxDEFAULT_FRAME_STYLE); - - // Make a menubar - wxMenu *file_menu = new wxMenu; - file_menu->Append(PROPERTY_TEST_DIALOG_LIST, "Test property list &dialog..."); - file_menu->Append(PROPERTY_TEST_FRAME_LIST, "Test property list &frame..."); - file_menu->AppendSeparator(); - file_menu->Append(PROPERTY_TEST_DIALOG_FORM, "Test property form d&ialog..."); - file_menu->Append(PROPERTY_TEST_FRAME_FORM, "Test property form f&rame..."); - file_menu->AppendSeparator(); - file_menu->Append(PROPERTY_QUIT, "E&xit"); - - wxMenu *help_menu = new wxMenu; - help_menu->Append(PROPERTY_ABOUT, "&About"); - - wxMenuBar *menu_bar = new wxMenuBar; - - menu_bar->Append(file_menu, "&File"); - menu_bar->Append(help_menu, "&Help"); - - // Associate the menu bar with the frame - m_mainFrame->SetMenuBar(menu_bar); - - m_mainFrame->Centre(wxBOTH); - m_mainFrame->Show(TRUE); - - SetTopWindow(m_mainFrame); - - return TRUE; -} - -BEGIN_EVENT_TABLE(MyFrame, wxFrame) - EVT_CLOSE(MyFrame::OnCloseWindow) - EVT_MENU(PROPERTY_QUIT, MyFrame::OnQuit) - EVT_MENU(PROPERTY_ABOUT, MyFrame::OnAbout) - EVT_MENU(PROPERTY_TEST_DIALOG_LIST, MyFrame::OnDialogList) - EVT_MENU(PROPERTY_TEST_FRAME_LIST, MyFrame::OnFrameList) - EVT_MENU(PROPERTY_TEST_DIALOG_FORM, MyFrame::OnDialogForm) - EVT_MENU(PROPERTY_TEST_FRAME_FORM, MyFrame::OnFrameForm) -END_EVENT_TABLE() - -// Define my frame constructor -MyFrame::MyFrame(wxFrame *frame, const wxString& title, const wxPoint& pos, const wxSize& size, long type): - wxFrame(frame, -1, title, pos, size, type) -{ -} - -// Define the behaviour for the frame closing -// - must delete all frames except for the main one. -void MyFrame::OnCloseWindow(wxCloseEvent& event) -{ - if (wxGetApp().m_childWindow) - { - wxGetApp().m_childWindow->Close(TRUE); - } - - Destroy(); -} - -void MyFrame::OnQuit(wxCommandEvent& event) -{ - Close(TRUE); -} - -void MyFrame::OnDialogList(wxCommandEvent& event) -{ - wxGetApp().PropertyListTest(TRUE); -} - -void MyFrame::OnFrameList(wxCommandEvent& event) -{ - wxGetApp().PropertyListTest(FALSE); -} - -void MyFrame::OnDialogForm(wxCommandEvent& event) -{ - wxGetApp().PropertyFormTest(TRUE); -} - -void MyFrame::OnFrameForm(wxCommandEvent& event) -{ - wxGetApp().PropertyFormTest(FALSE); -} - -void MyFrame::OnAbout(wxCommandEvent& event) -{ - (void)wxMessageBox("Property Classes Demo\nAuthor: Julian Smart", "About Property Classes Test"); -} - -void MyApp::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); - myListValidatorRegistry.RegisterValidator((wxString)"stringlist", new wxListOfStringsListValidator); - - 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 MyApp::PropertyListTest(bool useDialog) -{ - if (m_childWindow) - return; - - 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))); - - wxStringList *strings2 = new wxStringList("earth", "fire", "wind", "water", NULL); - sheet->AddProperty(new wxProperty("string list", strings2, "stringlist")); - - wxPropertyListView *view = - new wxPropertyListView(NULL, - wxPROP_BUTTON_CHECK_CROSS|wxPROP_DYNAMIC_VALUE_FIELD|wxPROP_PULLDOWN|wxPROP_SHOWVALUES); - - wxDialog *propDialog = NULL; - wxPropertyListFrame *propFrame = NULL; - if (useDialog) - { - propDialog = new PropListDialog(view, NULL, "Property Sheet Test", - wxPoint(-1, -1), wxSize(400, 500), wxDEFAULT_DIALOG_STYLE|wxDIALOG_MODELESS); - m_childWindow = propDialog; - } - else - { - propFrame = new PropListFrame(view, NULL, "Property Sheet Test", wxPoint(-1, -1), wxSize(400, 500)); - m_childWindow = propFrame; - } - - 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); - } -} - -void MyApp::PropertyFormTest(bool useDialog) -{ - if (m_childWindow) - return; - -#if 0 - 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 PropFormDialog(view, NULL, "Property Form Test", wxPoint(-1, -1), wxSize(380, 250), - wxDEFAULT_DIALOG_STYLE|wxDIALOG_MODAL); - m_childWindow = propDialog; - } - else - { - propFrame = new PropFormFrame(view, NULL, "Property Form Test", wxPoint(-1, -1), wxSize(280, 250)); - propFrame->Initialize(); - m_childWindow = propFrame; - } - - wxPanel *panel = propDialog ? propDialog : propFrame->GetPropertyPanel(); - panel->SetLabelPosition(wxVERTICAL); - - // Add items to the panel - - (void) new wxButton(panel, -1, "OK", -1, -1, -1, -1, 0, "ok"); - (void) new wxButton(panel, -1, "Cancel", -1, -1, 80, -1, 0, "cancel"); - (void) new wxButton(panel, -1, "Update", -1, -1, 80, -1, 0, "update"); - (void) new wxButton(panel, -1, "Revert", -1, -1, -1, -1, 0, "revert"); - panel->NewLine(); - - // The name of this text item matches the "fred" property - (void) new wxText(panel, -1, "Fred", "", -1, -1, 90, -1, 0, "fred"); - (void) new wxCheckBox(panel, -1, "Yes or no", -1, -1, -1, -1, 0, "tough choice"); - (void) new wxSlider(panel, -1, "Scale", 0, -50, 50, 150, -1, -1, wxHORIZONTAL, "ian"); - panel->NewLine(); - (void) new wxListBox(panel, -1, "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); - } -#endif -} - -BEGIN_EVENT_TABLE(PropListFrame, wxPropertyListFrame) - EVT_CLOSE(PropListFrame::OnCloseWindow) -END_EVENT_TABLE() - -void PropListFrame::OnCloseWindow(wxCloseEvent& event) -{ - wxGetApp().m_childWindow = NULL; - - wxPropertyListFrame::OnCloseWindow(event); -} - -BEGIN_EVENT_TABLE(PropListDialog, wxPropertyListDialog) - EVT_CLOSE(PropListDialog::OnCloseWindow) -END_EVENT_TABLE() - -void PropListDialog::OnCloseWindow(wxCloseEvent& event) -{ - wxGetApp().m_childWindow = NULL; - - wxPropertyListDialog::OnCloseWindow(event); -} - -BEGIN_EVENT_TABLE(PropFormFrame, wxPropertyFormFrame) - EVT_CLOSE(PropFormFrame::OnCloseWindow) -END_EVENT_TABLE() - -void PropFormFrame::OnCloseWindow(wxCloseEvent& event) -{ - wxGetApp().m_childWindow = NULL; - - wxPropertyFormFrame::OnCloseWindow(event); -} - -BEGIN_EVENT_TABLE(PropFormDialog, wxPropertyFormDialog) - EVT_CLOSE(PropFormDialog::OnCloseWindow) -END_EVENT_TABLE() - -void PropFormDialog::OnCloseWindow(wxCloseEvent& event) -{ - wxGetApp().m_childWindow = NULL; - - wxPropertyFormDialog::OnCloseWindow(event); -} - diff --git a/samples/proplist/test.def b/samples/proplist/test.def deleted file mode 100644 index d94e329083..0000000000 --- a/samples/proplist/test.def +++ /dev/null @@ -1,8 +0,0 @@ -NAME TEST -DESCRIPTION 'wxProperty test' -EXETYPE WINDOWS -STUB 'WINSTUB.EXE' -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE -HEAPSIZE 1024 -STACKSIZE 8192 diff --git a/samples/proplist/test.h b/samples/proplist/test.h deleted file mode 100644 index 232a6bf60c..0000000000 --- a/samples/proplist/test.h +++ /dev/null @@ -1,127 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: test.h -// Purpose: Property sheet sample -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma interface "test.h" -#endif - -#ifndef _PROPTEST_H_ -#define _PROPTEST_H_ - -#include "wx/proplist.h" -#include "wx/propform.h" - -class MyChild; - -// Define a new application -class MyFrame; -class MyApp: public wxApp -{ -public: - MyApp(void); - bool OnInit(void); - - void RegisterValidators(void); - void PropertyListTest(bool useDialog); - void PropertyFormTest(bool useDialog); - - MyFrame* m_mainFrame; - wxWindow* m_childWindow; -}; - -DECLARE_APP(MyApp) - -// Define a new frame -class MyFrame: public wxFrame -{ - public: - MyFrame(wxFrame *frame, const wxString& title, const wxPoint& pos, const wxSize& size, long type); - - void OnCloseWindow(wxCloseEvent& event); - void OnQuit(wxCommandEvent& event); - void OnDialogList(wxCommandEvent& event); - void OnFrameList(wxCommandEvent& event); - void OnDialogForm(wxCommandEvent& event); - void OnFrameForm(wxCommandEvent& event); - void OnAbout(wxCommandEvent& event); - -DECLARE_EVENT_TABLE() -}; - -class PropListFrame: public wxPropertyListFrame -{ -public: - PropListFrame(wxPropertyListView *v, wxFrame *parent, const wxString& title, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE, const wxString& name = "frame"): - wxPropertyListFrame(v, parent, title, pos, size, style, name) - { - } - - void OnCloseWindow(wxCloseEvent& event); - - DECLARE_EVENT_TABLE() -}; - -class PropListDialog: public wxPropertyListDialog -{ -public: - PropListDialog(wxPropertyListView *v, wxWindow *parent, const wxString& title, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_DIALOG_STYLE, const wxString& name = "dialogBox"): - wxPropertyListDialog(v, parent, title, pos, size, style, name) - { - } - - void OnCloseWindow(wxCloseEvent& event); - - DECLARE_EVENT_TABLE() -}; - -class PropFormFrame: public wxPropertyFormFrame -{ -public: - PropFormFrame(wxPropertyFormView *v, wxFrame *parent, const wxString& title, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE, const wxString& name = "frame"): - wxPropertyFormFrame(v, parent, title, pos, size, style, name) - { - } - - void OnCloseWindow(wxCloseEvent& event); - - DECLARE_EVENT_TABLE() -}; - -class PropFormDialog: public wxPropertyFormDialog -{ -public: - PropFormDialog(wxPropertyFormView *v, wxWindow *parent, const wxString& title, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_DIALOG_STYLE, const wxString& name = "dialogBox"): - wxPropertyFormDialog(v, parent, title, pos, size, style, name) - { - } - - void OnCloseWindow(wxCloseEvent& event); - - DECLARE_EVENT_TABLE() -}; - -#define PROPERTY_QUIT 1 -#define PROPERTY_ABOUT 2 -#define PROPERTY_TEST_DIALOG_LIST 3 -#define PROPERTY_TEST_FRAME_LIST 4 -#define PROPERTY_TEST_DIALOG_FORM 5 -#define PROPERTY_TEST_FRAME_FORM 6 - -#endif - diff --git a/samples/proplist/test.rc b/samples/proplist/test.rc deleted file mode 100644 index 8dd6951bae..0000000000 --- a/samples/proplist/test.rc +++ /dev/null @@ -1,5 +0,0 @@ -tick_bmp BITMAP "tick.bmp" -cross_bmp BITMAP "cross.bmp" - -#include "wx/msw/wx.rc" - diff --git a/samples/proplist/tick.bmp b/samples/proplist/tick.bmp deleted file mode 100644 index 3673eda5de62c1fc3db392cba62bc2e74ad51d90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 198 zcmZvT!3}^g3_|a<9syhMs~1$ShPC0%zsoR vTD4Ar8P!@-DTScB)%%zLZ&*;|h`)_13`n2n6qX97wi7#vQmJ8dT_@wx zNGCgVa)yoes1#NI360B$)ljCI=NWgA^;4#2km1O(K_SfSxvMv%QV}XQFa!lB3dO`a xM!bvzrs;59{rGjMt$F6t?hEd?Mqsb-6QYGX-pju~NX_L(vSq^;>o@y-_5&Q8M8W_7 diff --git a/samples/regtest/key2.ico b/samples/regtest/key2.ico deleted file mode 100644 index 082ff472913fcc457f7325b084398f0f24b65d0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 318 zcma)%I}*bn3`CcSir>%&<7zcW1I(35UP>FQ>q*3$VM Th7P2&H;exE3xAQlcm2`{Aev48 diff --git a/samples/regtest/key3.ico b/samples/regtest/key3.ico deleted file mode 100644 index 0cbb4c3360d74049def5417d7bf4a34ebf862c11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 318 zcmaJ-yAHxI5OX9XGG=0C_u0uV!}!G9|%Z6ZcbJqdhhaX#85;y5+yF#{6ZZ7+9EuWKa+50emf_d(&<^)AOqRzi2|is+&s`-YP0 zv@i;E?9Z7$pTnW$kw_zV()R~Z`*tVt8Gkq|{Gk!K--$es>%kY$$Ol%8y|*oh@Rbl2 z$4V%d%LT7Osb48YBfv*fy8LC&IpsX$w56vw$LQm1*Tkl8{I|X)Mu&AJ*_Bt_#%R|> zt#=%@@~S)IoGb;4Zrpaj=xiy@`0WDdW=JM)I`tG@8=_n1Y|hv7t@E{E(hd_>b6Fd9 zQL`;q^ASF0DoLyjheQ^t8+@D%ZK|vrFl~4as;?V3rZSfEY8$`$a1AwT*Ar`Ox!clF zDP5#pZ=|&4fxOpSPrrBd?EOyXpnI!Laf=q;BL87wV>$#U@Cc5e1ADOh2joQcBRFzQ zcfr5GX>s~N-A{nMl=Avi%G8u%q~u)#o&fnh@&sOs&bdy054JfE#J4Rl<0#B@b*zN{ zHRscu{mc>1DGoa1{F{C@Jo`CY!IQTRKU!~f-^7w?-Z<6Uc%KYjMxRU=Nu1B29V{6c mWl{%g)h|pFO6t?XcVK@TVaIRb{eSCuH$REwkN6|_D)I}O#V85@ diff --git a/samples/regtest/regtest.cpp b/samples/regtest/regtest.cpp deleted file mode 100644 index 5b390269a1..0000000000 --- a/samples/regtest/regtest.cpp +++ /dev/null @@ -1,840 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: registry.cpp -// Purpose: wxRegKey class demo -// Author: Vadim Zeitlin -// Modified by: -// Created: 03.04.98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows license -/////////////////////////////////////////////////////////////////////////////// - -// ============================================================================ -// declarations -// ============================================================================ - -// ---------------------------------------------------------------------------- -// headers -// ---------------------------------------------------------------------------- -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ - #pragma hdrstop -#endif - -#ifndef WX_PRECOMP - #include "wx/wx.h" -#endif - -#include "wx/log.h" -#include "wx/treectrl.h" -#include "wx/msw/registry.h" -#include "wx/msw/imaglist.h" - -// ---------------------------------------------------------------------------- -// application type -// ---------------------------------------------------------------------------- -class RegApp : public wxApp -{ -public: - bool OnInit(void); -}; - -// ---------------------------------------------------------------------------- -// image list with registry icons -// ---------------------------------------------------------------------------- -class RegImageList : public wxImageList -{ -public: - enum Icon - { - Root, - ClosedKey, - OpenedKey, - TextValue, - BinaryValue, - }; - - RegImageList(); -}; - -// array of children of the node -//class TreeNode; - -// ---------------------------------------------------------------------------- -// our control -// ---------------------------------------------------------------------------- -class RegTreeCtrl : public wxTreeCtrl -{ -public: - // ctor & dtor - RegTreeCtrl(wxWindow *parent, wxWindowID id); - virtual ~RegTreeCtrl(); - - // notifications - void OnDeleteItem (wxTreeEvent& event); - void OnItemExpanding(wxTreeEvent& event); - void OnSelChanged (wxTreeEvent& event); - - void OnRightClick (wxMouseEvent& event); - void OnChar (wxKeyEvent& event); - - // forwarded notifications (by the frame) - void OnMenuTest(); - - // operations - void DeleteSelected(); - void CreateNewKey(const wxString& strName); - void CreateNewTextValue(const wxString& strName); - void CreateNewBinaryValue(const wxString& strName); - - // information - bool IsKeySelected() const; - - DECLARE_EVENT_TABLE(); - -private: - - // structure describing a registry key/value - class TreeNode : public wxTreeItemData - { -WX_DEFINE_ARRAY(TreeNode *, TreeChildren); - public: - RegTreeCtrl *m_pTree; // must be !NULL - TreeNode *m_pParent; // NULL only for the root node - long m_id; // the id of the tree control item - wxString m_strName; // name of the key/value - TreeChildren m_aChildren; // array of subkeys/values - bool m_bKey; // key or value? - wxRegKey *m_pKey; // only may be !NULL if m_bKey == true - long m_lDummy; // dummy subkey (to make expansion possible) - - // ctor - TreeNode() { m_lDummy = 0; } - - // trivial accessors - long Id() const { return m_id; } - bool IsRoot() const { return m_pParent == NULL; } - bool IsKey() const { return m_bKey; } - TreeNode *Parent() const { return m_pParent; } - - // notifications - bool OnExpand(); - void OnCollapse(); - - // operations - void Refresh() { OnCollapse(); OnExpand(); } - void AddDummy(); - void DestroyChildren(); - const char *FullName() const; - - // get the associated key: make sure the pointer is !NULL - wxRegKey& Key() { if ( !m_pKey ) OnExpand(); return *m_pKey; } - - // dtor deletes all children - ~TreeNode(); - }; - - wxMenu *m_pMenuPopup; - TreeNode *m_pRoot; - wxImageList *m_imageList; - - TreeNode *GetNode(const wxTreeEvent& event) - { return (TreeNode *)GetItemData((WXHTREEITEM)event.GetItem()); } - -public: - // create a new node and insert it to the tree - TreeNode *InsertNewTreeNode(TreeNode *pParent, - const wxString& strName, - int idImage = RegImageList::ClosedKey, - const wxString *pstrValue = NULL); - // add standard registry keys - void AddStdKeys(); -}; - -// ---------------------------------------------------------------------------- -// the main window of our application -// ---------------------------------------------------------------------------- -class RegFrame : public wxFrame -{ -public: - // ctor & dtor - RegFrame(wxFrame *parent, char *title, int x, int y, int w, int h); - virtual ~RegFrame(void); - - // callbacks - void OnQuit (wxCommandEvent& event); - void OnAbout(wxCommandEvent& event); - void OnTest (wxCommandEvent& event); - - void OnExpand (wxCommandEvent& event); - void OnCollapse(wxCommandEvent& event); - void OnToggle (wxCommandEvent& event); - - void OnDelete (wxCommandEvent& event); - void OnNewKey (wxCommandEvent& event); - void OnNewText (wxCommandEvent& event); - void OnNewBinary(wxCommandEvent& event); - - bool OnClose () { return TRUE; } - - DECLARE_EVENT_TABLE(); - -private: - RegTreeCtrl *m_treeCtrl; -}; - -// ---------------------------------------------------------------------------- -// various ids -// ---------------------------------------------------------------------------- - -enum -{ - Menu_Quit = 100, - Menu_About, - Menu_Test, - Menu_Expand, - Menu_Collapse, - Menu_Toggle, - Menu_New, - Menu_NewKey, - Menu_NewText, - Menu_NewBinary, - Menu_Delete, - - Ctrl_RegTree = 200, -}; - -// ---------------------------------------------------------------------------- -// event tables -// ---------------------------------------------------------------------------- - -BEGIN_EVENT_TABLE(RegFrame, wxFrame) - EVT_MENU(Menu_Test, RegFrame::OnTest) - EVT_MENU(Menu_About, RegFrame::OnAbout) - EVT_MENU(Menu_Quit, RegFrame::OnQuit) - EVT_MENU(Menu_Expand, RegFrame::OnExpand) - EVT_MENU(Menu_Collapse, RegFrame::OnCollapse) - EVT_MENU(Menu_Toggle, RegFrame::OnToggle) - EVT_MENU(Menu_Delete, RegFrame::OnDelete) - EVT_MENU(Menu_NewKey, RegFrame::OnNewKey) - EVT_MENU(Menu_NewText, RegFrame::OnNewText) - EVT_MENU(Menu_NewBinary,RegFrame::OnNewBinary) -END_EVENT_TABLE() - -BEGIN_EVENT_TABLE(RegTreeCtrl, wxTreeCtrl) - EVT_TREE_DELETE_ITEM (Ctrl_RegTree, RegTreeCtrl::OnDeleteItem) - EVT_TREE_ITEM_EXPANDING(Ctrl_RegTree, RegTreeCtrl::OnItemExpanding) - EVT_TREE_SEL_CHANGED (Ctrl_RegTree, RegTreeCtrl::OnSelChanged) - - EVT_CHAR (RegTreeCtrl::OnChar) - EVT_RIGHT_DOWN(RegTreeCtrl::OnRightClick) -END_EVENT_TABLE() - -// ============================================================================ -// implementation -// ============================================================================ - -// ---------------------------------------------------------------------------- -// global functions -// ---------------------------------------------------------------------------- - -// create the "registry operations" menu -wxMenu *CreateRegistryMenu() -{ - wxMenu *pMenuNew = new wxMenu; - pMenuNew->Append(Menu_NewKey, "&Key", "Create a new key"); - pMenuNew->AppendSeparator(); - pMenuNew->Append(Menu_NewText, "&Text value", "Create a new text value"); - pMenuNew->Append(Menu_NewBinary, "&Binary value", "Create a new binary value"); - - wxMenu *pMenuReg = new wxMenu; - pMenuReg->Append(Menu_New, "&New", pMenuNew); - pMenuReg->Append(Menu_Delete, "&Delete...", "Delete selected key/value"); - pMenuReg->AppendSeparator(); - pMenuReg->Append(Menu_Expand, "&Expand", "Expand current key"); - pMenuReg->Append(Menu_Collapse, "&Collapse", "Collapse current key"); - pMenuReg->Append(Menu_Toggle, "&Toggle", "Toggle current key"); - - return pMenuReg; -} - -// ---------------------------------------------------------------------------- -// application class -// ---------------------------------------------------------------------------- -IMPLEMENT_APP(RegApp) - -// `Main program' equivalent, creating windows and returning main app frame -bool RegApp::OnInit() -{ - // create the main frame window and show it - RegFrame *frame = new RegFrame(NULL, "wxRegKey Test", 50, 50, 600, 350); - frame->Show(true); - - SetTopWindow(frame); - - return true; -} - -// ---------------------------------------------------------------------------- -// RegFrame -// ---------------------------------------------------------------------------- - -RegFrame::RegFrame(wxFrame *parent, char *title, int x, int y, int w, int h) - : wxFrame(parent, -1, title, wxPoint(x, y), wxSize(w, h)) -{ - // this reduces flicker effects - SetBackgroundColour(wxColour(255, 255, 255)); - - // set the icon - // ------------ - SetIcon(wxIcon("app_icon")); - - // create menu - // ----------- - wxMenu *pMenuFile = new wxMenu; - pMenuFile->Append(Menu_Test, "Te&st", "Test key creation"); - pMenuFile->AppendSeparator(); - pMenuFile->Append(Menu_About, "&About...", "Show an extraordinarly beautiful dialog"); - pMenuFile->AppendSeparator(); - pMenuFile->Append(Menu_Quit, "E&xit", "Quit this program"); - - wxMenuBar *pMenu = new wxMenuBar; - pMenu->Append(pMenuFile, "&File"); - pMenu->Append(CreateRegistryMenu(), "&Registry"); - SetMenuBar(pMenu); - - // create child controls - // --------------------- - m_treeCtrl = new RegTreeCtrl(this, Ctrl_RegTree); - - // create the status line - // ---------------------- - int aWidths[2]; - aWidths[0] = 200; - aWidths[1] = -1; - CreateStatusBar(2); - SetStatusWidths(2, aWidths); -} - -RegFrame::~RegFrame(void) -{ -} - -void RegFrame::OnQuit(wxCommandEvent& event) -{ - Close(TRUE); -} - -void RegFrame::OnAbout(wxCommandEvent& event) -{ - wxMessageDialog dialog(this, "wxRegistry sample\n(c) 1998 Vadim Zeitlin", - "About wxRegistry", wxOK); - - dialog.ShowModal(); -} - -void RegFrame::OnTest(wxCommandEvent& event) -{ - m_treeCtrl->OnMenuTest(); -} - -void RegFrame::OnExpand(wxCommandEvent& event) -{ - m_treeCtrl->ExpandItem(m_treeCtrl->GetSelection(), wxTREE_EXPAND_EXPAND); -} - -void RegFrame::OnCollapse(wxCommandEvent& event) -{ - m_treeCtrl->ExpandItem(m_treeCtrl->GetSelection(), wxTREE_EXPAND_COLLAPSE); -} - -void RegFrame::OnToggle(wxCommandEvent& event) -{ - m_treeCtrl->ExpandItem(m_treeCtrl->GetSelection(), wxTREE_EXPAND_TOGGLE); -} - -void RegFrame::OnDelete(wxCommandEvent& event) -{ - m_treeCtrl->DeleteSelected(); -} - -void RegFrame::OnNewKey(wxCommandEvent& event) -{ - if ( m_treeCtrl->IsKeySelected() ) { - m_treeCtrl->CreateNewKey( - wxGetTextFromUser("Enter the name of the new key")); - } -} - -void RegFrame::OnNewText(wxCommandEvent& event) -{ - if ( m_treeCtrl->IsKeySelected() ) { - m_treeCtrl->CreateNewTextValue( - wxGetTextFromUser("Enter the name for the new text value")); - } -} - -void RegFrame::OnNewBinary(wxCommandEvent& event) -{ - if ( m_treeCtrl->IsKeySelected() ) { - m_treeCtrl->CreateNewBinaryValue( - wxGetTextFromUser("Enter the name for the new binary value")); - } -} - -// ---------------------------------------------------------------------------- -// RegImageList -// ---------------------------------------------------------------------------- -RegImageList::RegImageList() : wxImageList(16, 16, TRUE) -{ - // should be in sync with enum RegImageList::RegIcon - static const char *aszIcons[] = { "key1","key2","key3","value1","value2" }; - wxString str = "icon_"; - for ( unsigned int n = 0; n < WXSIZEOF(aszIcons); n++ ) { - Add(wxIcon(str + aszIcons[n], wxBITMAP_TYPE_ICO_RESOURCE)); - } -} - -// ---------------------------------------------------------------------------- -// RegTreeCtrl -// ---------------------------------------------------------------------------- - -// create a new tree item and insert it into the tree -RegTreeCtrl::TreeNode *RegTreeCtrl::InsertNewTreeNode(TreeNode *pParent, - const wxString& strName, - int idImage, - const wxString *pstrValue) -{ - // create new item & insert it - TreeNode *pNewNode = new TreeNode; - pNewNode->m_pTree = this; - pNewNode->m_pParent = pParent; - pNewNode->m_strName = strName; - pNewNode->m_bKey = pstrValue == NULL; - pNewNode->m_pKey = NULL; - pNewNode->m_id = InsertItem(pParent ? pParent->m_id : 0, - pNewNode->IsKey() ? strName : *pstrValue, - idImage); - - wxASSERT_MSG( pNewNode->m_id, "can't create tree control item!"); - - // save the pointer in the item - SetItemData(pNewNode->m_id, pNewNode); - - // add it to the list of parent's children - if ( pParent != NULL ) { - pParent->m_aChildren.Add(pNewNode); - } - - // force the [+] button (@@@ not very elegant...) - if ( pNewNode->IsKey() ) - pNewNode->AddDummy(); - - return pNewNode; -} - -RegTreeCtrl::RegTreeCtrl(wxWindow *parent, wxWindowID id) - : wxTreeCtrl(parent, id, wxDefaultPosition, wxDefaultSize, - wxTR_HAS_BUTTONS | wxSUNKEN_BORDER) -{ - // create the image list - // --------------------- - m_imageList = new RegImageList; - SetImageList(m_imageList, wxIMAGE_LIST_NORMAL); - - // create root keys - // ---------------- - m_pRoot = InsertNewTreeNode(NULL, "Registry Root", RegImageList::Root); - - // create popup menu - // ----------------- - m_pMenuPopup = CreateRegistryMenu(); -} - -RegTreeCtrl::~RegTreeCtrl() -{ - delete m_pMenuPopup; - delete m_pRoot; - delete m_imageList; -} - -void RegTreeCtrl::AddStdKeys() -{ - for ( unsigned int ui = 0; ui < wxRegKey::nStdKeys; ui++ ) { - InsertNewTreeNode(m_pRoot, wxRegKey::GetStdKeyName(ui)); - } -} - -// ---------------------------------------------------------------------------- -// notifications -// ---------------------------------------------------------------------------- - -void RegTreeCtrl::OnRightClick(wxMouseEvent& event) -{ - int iFlags; - long lId = HitTest(wxPoint(event.GetX(), event.GetY()), iFlags); - if ( iFlags & wxTREE_HITTEST_ONITEMLABEL ) { - // popup menu only if an item was clicked - wxASSERT( lId != 0 ); - SelectItem(lId); - PopupMenu(m_pMenuPopup, event.GetX(), event.GetY()); - } -} - - -void RegTreeCtrl::OnDeleteItem(wxTreeEvent& event) -{ -} - -// test the key creation functions -void RegTreeCtrl::OnMenuTest() -{ - long lId = GetSelection(); - TreeNode *pNode = (TreeNode *)GetItemData(lId); - - wxCHECK_RET( pNode != NULL, "tree item without data?" ); - - if ( pNode->IsRoot() ) { - wxLogError("Can't create a subkey under the root key."); - return; - } - if ( !pNode->IsKey() ) { - wxLogError("Can't create a subkey under a value!"); - return; - } - - wxRegKey key1(pNode->Key(), "key1"); - if ( key1.Create() ) { - wxRegKey key2a(key1, "key2a"), key2b(key1, "key2b"); - if ( key2a.Create() && key2b.Create() ) { - // put some values under the newly created keys - key1.SetValue("first_term", "10"); - key1.SetValue("second_term", "7"); - key2a = "this is the unnamed value"; - key2b.SetValue("sum", 17); - - // refresh tree - pNode->Refresh(); - wxLogStatus("Test keys successfully added."); - return; - } - } - - wxLogError("Creation of test keys failed."); -} - -void RegTreeCtrl::OnChar(wxKeyEvent& event) -{ - if ( event.KeyCode() == WXK_DELETE ) - DeleteSelected(); - else - wxTreeCtrl::OnChar(event); -} - -void RegTreeCtrl::OnSelChanged(wxTreeEvent& event) -{ - wxFrame *pFrame = (wxFrame *)(wxWindow::GetParent()); - pFrame->SetStatusText(GetNode(event)->FullName(), 1); -} - -void RegTreeCtrl::OnItemExpanding(wxTreeEvent& event) -{ - TreeNode *pNode = GetNode(event); - bool bExpanding = event.GetCode() == wxTREE_EXPAND_EXPAND; - - // expansion might take some time - wxSetCursor(*wxHOURGLASS_CURSOR); - wxLogStatus("Working..."); - wxYield(); // to give the status line a chance to refresh itself - - if ( pNode->IsKey() ) { - if ( bExpanding ) { - // expanding: add subkeys/values - if ( !pNode->OnExpand() ) - return; - } - else { - // collapsing: clean up - pNode->OnCollapse(); - } - - // change icon for non root key - if ( !pNode->IsRoot() ) { - int idIcon = bExpanding ? RegImageList::OpenedKey - : RegImageList::ClosedKey; - SetItemImage(pNode->Id(), idIcon); - } - } - - wxLogStatus("Ok"); - wxSetCursor(*wxSTANDARD_CURSOR); -} - -// ---------------------------------------------------------------------------- -// TreeNode implementation -// ---------------------------------------------------------------------------- -bool RegTreeCtrl::TreeNode::OnExpand() -{ - // remove dummy item - if ( m_lDummy != 0 ) { - m_pTree->Delete(m_lDummy); - m_lDummy = 0; - } - else { - // we've been already expanded - return TRUE; - } - - if ( IsRoot() ) { - // we're the root key - m_pTree->AddStdKeys(); - return true; - } - - if ( Parent()->IsRoot() ) { - // we're a standard key - m_pKey = new wxRegKey(m_strName); - } - else { - // we're a normal key - m_pKey = new wxRegKey(*(Parent()->m_pKey), m_strName); - } - - if ( !m_pKey->Open() ) { - wxLogError("The key '%s' can't be opened.", FullName()); - return false; - } - - // enumeration variables - long l; - wxString str; - bool bCont; - - // enumerate all subkeys - bCont = m_pKey->GetFirstKey(str, l); - while ( bCont ) { - m_pTree->InsertNewTreeNode(this, str, RegImageList::ClosedKey); - bCont = m_pKey->GetNextKey(str, l); - } - - // enumerate all values - bCont = m_pKey->GetFirstValue(str, l); - while ( bCont ) { - wxString strItem; - if (str.IsEmpty()) - strItem = ""; - else - strItem = str; - strItem += " = "; - - // determine the appropriate icon - RegImageList::Icon icon; - switch ( m_pKey->GetValueType(str) ) { - case wxRegKey::Type_String: - case wxRegKey::Type_Expand_String: - case wxRegKey::Type_Multi_String: - { - wxString strValue; - icon = RegImageList::TextValue; - m_pKey->QueryValue(str, strValue); - strItem += strValue; - } - break; - - case wxRegKey::Type_None: - // @@ handle the error... - icon = RegImageList::BinaryValue; - break; - - case wxRegKey::Type_Dword: - { - char szBuf[128]; - long l; - m_pKey->QueryValue(str, &l); - sprintf(szBuf, "%lx", l); - strItem += szBuf; - } - - // fall through - - default: - icon = RegImageList::BinaryValue; - } - - m_pTree->InsertNewTreeNode(this, str, icon, &strItem); - bCont = m_pKey->GetNextValue(str, l); - } - - return true; -} - -void RegTreeCtrl::TreeNode::OnCollapse() -{ - bool bHasChildren = !m_aChildren.IsEmpty(); - DestroyChildren(); - if ( bHasChildren ) - AddDummy(); - else - m_lDummy = 0; - - delete m_pKey; - m_pKey = NULL; -} - -void RegTreeCtrl::TreeNode::AddDummy() -{ - // insert dummy item forcing appearance of [+] button - m_lDummy = m_pTree->InsertItem(Id(), ""); -} - -void RegTreeCtrl::TreeNode::DestroyChildren() -{ - // destroy all children - unsigned int nCount = m_aChildren.Count(); - for ( unsigned int n = 0; n < nCount; n++ ) { - long lId = m_aChildren[n]->Id(); - delete m_aChildren[n]; - m_pTree->Delete(lId); - } - - m_aChildren.Empty(); -} - -RegTreeCtrl::TreeNode::~TreeNode() -{ - DestroyChildren(); - - delete m_pKey; -} - -const char *RegTreeCtrl::TreeNode::FullName() const -{ - static wxString s_strName; - - if ( IsRoot() ) { - return "Registry Root"; - } - else { - // our own registry key might not (yet) exist or we might be a value, - // so just use the parent's and concatenate - s_strName = Parent()->FullName(); - s_strName << '\\' << m_strName; - - return s_strName; - } -} - -// ---------------------------------------------------------------------------- -// operations on RegTreeCtrl -// ---------------------------------------------------------------------------- - -void RegTreeCtrl::DeleteSelected() -{ - long lCurrent = GetSelection(), - lParent = GetParent(lCurrent); - - if ( lParent == 0 ) { - wxLogError("Can't delete root key."); - return; - } - - TreeNode *pCurrent = (TreeNode *)GetItemData(lCurrent), - *pParent = (TreeNode *)GetItemData(lParent); - - wxCHECK_RET( pCurrent && pParent, "either node or parent without data?" ); - - if ( pParent->IsRoot() ) { - wxLogError("Can't delete standard key."); - return; - } - - if ( pCurrent->IsKey() ) { - if ( wxMessageBox("Do you really want to delete this key?", - "Confirmation", - wxICON_QUESTION | wxYES_NO | wxCANCEL, this) != wxYES ) { - return; - } - - // must close key before deleting it - pCurrent->OnCollapse(); - - if ( pParent->Key().DeleteKey(pCurrent->m_strName) ) - pParent->Refresh(); - } - else { - if ( wxMessageBox("Do you really want to delete this value?", - "Confirmation", - wxICON_QUESTION | wxYES_NO | wxCANCEL, this) != wxYES ) { - return; - } - - if ( pParent->Key().DeleteValue(pCurrent->m_strName) ) - pParent->Refresh(); - } -} - -void RegTreeCtrl::CreateNewKey(const wxString& strName) -{ - long lCurrent = GetSelection(); - TreeNode *pCurrent = (TreeNode *)GetItemData(lCurrent); - - wxCHECK_RET( pCurrent != NULL, "node without data?" ); - - wxASSERT( pCurrent->IsKey() ); // check must have been done before - - if ( pCurrent->IsRoot() ) { - wxLogError("Can't create a new key under the root key."); - return; - } - - wxRegKey key(pCurrent->Key(), strName); - if ( key.Create() ) - pCurrent->Refresh(); -} - -void RegTreeCtrl::CreateNewTextValue(const wxString& strName) -{ - long lCurrent = GetSelection(); - TreeNode *pCurrent = (TreeNode *)GetItemData(lCurrent); - - wxCHECK_RET( pCurrent != NULL, "node without data?" ); - - wxASSERT( pCurrent->IsKey() ); // check must have been done before - - if ( pCurrent->IsRoot() ) { - wxLogError("Can't create a new value under the root key."); - return; - } - - if ( pCurrent->Key().SetValue(strName, "") ) - pCurrent->Refresh(); -} - -void RegTreeCtrl::CreateNewBinaryValue(const wxString& strName) -{ - long lCurrent = GetSelection(); - TreeNode *pCurrent = (TreeNode *)GetItemData(lCurrent); - - wxCHECK_RET( pCurrent != NULL, "node without data?" ); - - wxASSERT( pCurrent->IsKey() ); // check must have been done before - - if ( pCurrent->IsRoot() ) { - wxLogError("Can't create a new value under the root key."); - return; - } - - if ( pCurrent->Key().SetValue(strName, 0) ) - pCurrent->Refresh(); -} - -bool RegTreeCtrl::IsKeySelected() const -{ - long lCurrent = GetSelection(); - TreeNode *pCurrent = (TreeNode *)GetItemData(lCurrent); - - wxCHECK( pCurrent != NULL, false ); - - return pCurrent->IsKey(); -} \ No newline at end of file diff --git a/samples/regtest/regtest.rc b/samples/regtest/regtest.rc deleted file mode 100644 index 8d688bba6f..0000000000 --- a/samples/regtest/regtest.rc +++ /dev/null @@ -1,9 +0,0 @@ -#include "wx/msw/wx.rc" - -app_icon ICON "registry.ico" -icon_key1 ICON "key1.ico" -icon_key2 ICON "key2.ico" -icon_key3 ICON "key3.ico" -icon_value1 ICON "value1.ico" -icon_value2 ICON "value2.ico" - diff --git a/samples/regtest/value1.ico b/samples/regtest/value1.ico deleted file mode 100644 index d03a5d07629452d96cc127801a9e84007d98649b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 318 zcma)2F%kkH3|z*WxhqL?t(HEI4m;C%9be)pK0!LWxB*Wa3pZpp$xavsATVN#aGV3M zx-xxoVg^iPKs)~;I&P{CA+toSmFkA|12eCf3?Dh|SiD%0&iMkAbfcNGr9vgX+Js;) p?Z}f#lcDzMuifX8y!XTukI~ z@kqeUmF3Bum2f2k5`0FS_)w$^nHH@zst+tK%-pefJaQVC-ONR%`UJGRIIPu*uE%z) oU1_5q8aelfqHIR~qmc_V)>OJKSONn30Q-A9;!out;li4LFUas}=l}o! diff --git a/samples/resource/.cvsignore b/samples/resource/.cvsignore deleted file mode 100644 index 7957c41216..0000000000 --- a/samples/resource/.cvsignore +++ /dev/null @@ -1,3 +0,0 @@ -Linux -linux-gnu -linux \ No newline at end of file diff --git a/samples/resource/Makefile b/samples/resource/Makefile deleted file mode 100644 index bccce53f76..0000000000 --- a/samples/resource/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../../setup/general/makeapp diff --git a/samples/resource/Makefile.in b/samples/resource/Makefile.in deleted file mode 100644 index c0251fd193..0000000000 --- a/samples/resource/Makefile.in +++ /dev/null @@ -1,26 +0,0 @@ -# WXXT base directory -WXBASEDIR=@WXBASEDIR@ - -# set the OS type for compilation -OS=@OS@ -# compile a library only -RULE=bin - -# define library name -BIN_TARGET=resource -# define library sources -BIN_SRC=\ -resource.cpp - -#define library objects -BIN_OBJ=\ -resource.o - -# additional things needed to link -BIN_LINK= - -# additional things needed to compile -ADD_COMPILE= - -# include the definitions now -include ../../../template.mak diff --git a/samples/resource/dialog1.h b/samples/resource/dialog1.h deleted file mode 100644 index 99f31f9b1b..0000000000 --- a/samples/resource/dialog1.h +++ /dev/null @@ -1,14 +0,0 @@ -/* - * dialog1.h - * Window identifiers file written by Dialog Editor - */ - -#define ID_TEXTCTRL104 104 -#define ID_STATICBOX101 101 -#define ID_DIALOG100 100 -#define ID_STATIC107 107 -#define ID_BUTTON108 108 -#define ID_BUTTON109 109 -#define ID_LISTBOX105 105 -#define ID_CHECKBOX106 106 -#define ID_RADIOBOX102 102 diff --git a/samples/resource/dialog1.wxr b/samples/resource/dialog1.wxr deleted file mode 100644 index 690edaa08c..0000000000 --- a/samples/resource/dialog1.wxr +++ /dev/null @@ -1,26 +0,0 @@ -static char *dialog1 = "dialog(name = 'dialog1',\ - style = 'wxRAISED_BORDER | wxCAPTION | wxTHICK_FRAME | wxSYSTEM_MENU',\ - title = 'Test dialog box',\ - id = 100,\ - x = 10, y = 10, width = 198, height = 147,\ - background_colour = 'D6D6D6',\ - use_dialog_units = 1,\ - use_system_defaults = 1,\ - font = [12, 'wxSWISS', 'wxNORMAL', 'wxNORMAL', 0, 'Swiss'],\ - control = [101, wxStaticBox, 'wxStaticBox', '0', 'group6', 5, 7, 184, 103,\ - [12, 'wxSWISS', 'wxNORMAL', 'wxNORMAL', 0, 'Swiss']],\ - control = [102, wxRadioBox, 'Radiobox', 'wxRA_HORIZONTAL', 'radiobox2', 15, 24, 36, 58, ['One', 'Two', 'Three', 'Four'], 1,\ - [12, 'wxSWISS', 'wxNORMAL', 'wxNORMAL', 0, 'Swiss']],\ - control = [104, wxTextCtrl, '', 'wxTE_MULTILINE', 'multitext3', 62, 24, 67, 33, 'wxWindows rules!',\ - [12, 'wxSWISS', 'wxNORMAL', 'wxNORMAL', 0, 'Swiss']],\ - control = [105, wxListBox, '', '0', 'listbox4', 62, 66, 67, 33, ['Apples', 'Bananas', 'Pears', 'Kiwis'],\ - [12, 'wxSWISS', 'wxNORMAL', 'wxNORMAL', 0, 'Swiss']],\ - control = [106, wxCheckBox, 'Checkbox', '0', 'checkbox9', 141, 26, 36, 14, 0,\ - [12, 'wxSWISS', 'wxNORMAL', 'wxNORMAL', 0, 'Swiss']],\ - control = [107, wxStaticText, 'My Message', '0', 'message10', 143, 57, 39, 12, '',\ - [12, 'wxSWISS', 'wxNORMAL', 'wxNORMAL', 0, 'Swiss']],\ - control = [108, wxButton, 'Press me', '0', 'button7', 141, 81, 36, 13, '',\ - [12, 'wxSWISS', 'wxNORMAL', 'wxNORMAL', 0, 'Swiss']],\ - control = [109, wxButton, 'Cancel', '0', 'button8', 62, 119, 55, 17, '',\ - [12, 'wxSWISS', 'wxNORMAL', 'wxNORMAL', 0, 'Swiss']])."; - diff --git a/samples/resource/makefile.b32 b/samples/resource/makefile.b32 deleted file mode 100644 index dc944a8272..0000000000 --- a/samples/resource/makefile.b32 +++ /dev/null @@ -1,16 +0,0 @@ -# -# File: makefile.b32 -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: -# -# Makefile : Builds sample for 32-bit BC++ - -WXDIR = $(WXWIN) - -TARGET=resource -OBJECTS = $(TARGET).obj - -!include $(WXDIR)\src\makeprog.b32 - diff --git a/samples/resource/makefile.bcc b/samples/resource/makefile.bcc deleted file mode 100644 index c69508d16d..0000000000 --- a/samples/resource/makefile.bcc +++ /dev/null @@ -1,19 +0,0 @@ -# -# File: makefile.bcc -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Builds a BC++ 16-bit sample - -!if "$(WXWIN)" == "" -!error You must define the WXWIN variable in autoexec.bat, e.g. WXWIN=c:\wx -!endif - -WXDIR = $(WXWIN) - -TARGET=resource -OBJECTS=$(TARGET).obj - -!include $(WXDIR)\src\makeprog.bcc - diff --git a/samples/resource/makefile.dos b/samples/resource/makefile.dos deleted file mode 100644 index 6096ca810c..0000000000 --- a/samples/resource/makefile.dos +++ /dev/null @@ -1,86 +0,0 @@ -# -# File: makefile.dos -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile : Builds resource example (DOS). -# Use FINAL=1 argument to nmake to build final version with no debugging -# info. - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -!include $(WXDIR)\src\makemsc.env - -THISDIR = $(WXDIR)\samples\resource -WXLIB = $(WXDIR)\lib\wx.lib -LIBS=$(WXLIB) oldnames libw llibcew commdlg ddeml shell mmsystem -INC=-I$(WXDIR)\include\base -I$(WXDIR)\include\msw -DUMMY=$(WXDIR)\src\msw\dummy.obj - -# Set this to nothing if using MS C++ 7 -ZOPTION=/Z7 - -!ifndef FINAL -FINAL=0 -!endif - -PRECOMP = /YuWX_PREC.H /Fp$(WXDIR)\src\msw\wx.pch - -!if "$(FINAL)" == "0" -CPPFLAGS=/AL /W3 /Zi $(ZOPTION) /G2sw /Od $(INC) $(PRECOMP) /Dwx_msw -LINKFLAGS=/NOD /CO /ONERROR:NOEXE /SEG:256 -!else -CPPFLAGS=/AL /W3 /G2sw $(INC) /Ox $(PRECOMP) /Dwx_msw -LINKFLAGS=/NOD /ONERROR:NOEXE /SEG:256 -!endif - -HEADERS = resource.h -SOURCES = resource.$(SRCSUFF) -OBJECTS = resource.obj - -resource: resource.exe - -all: wx resource.exe - -wx: - cd $(WXDIR)\src\msw - nmake -f makefile.dos FINAL=$(FINAL) - cd $(THISDIR) - -wxclean: - cd $(WXDIR)\src\msw - nmake -f makefile.dos clean - cd $(THISDIR) - - -resource.exe: $(DUMMY) $(WXLIB) resource.obj resource.def resource.res - link $(LINKFLAGS) @<< -$(DUMMY) resource.obj, -resource, -NUL, -$(LIBS), -resource.def -; -<< - rc -31 -K resource.res - -resource.obj: resource.h resource.$(SRCSUFF) dialog1.wxr $(DUMMY) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -resource.res : resource.rc $(WXDIR)\include\msw\wx.rc - rc -r /i$(WXDIR)\include\msw /i$(WXDIR)\contrib\fafa resource - -clean: - -erase *.obj - -erase *.exe - -erase *.res - -erase *.map - -erase *.sbr - -erase *.pdb diff --git a/samples/resource/makefile.g95 b/samples/resource/makefile.g95 deleted file mode 100644 index d9ad8d610a..0000000000 --- a/samples/resource/makefile.g95 +++ /dev/null @@ -1,36 +0,0 @@ -# -# File: makefile.g95 -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile for resource example (UNIX). - -WXDIR = ../.. - -# All common UNIX compiler flags and options are now in -# this central makefile. -include $(WXDIR)/src/makeg95.env - -OBJECTS=$(OBJDIR)/resource.$(OBJSUFF) $(OBJDIR)/resource_resources.$(OBJSUFF) - -all: $(OBJDIR) resource.exe - -$(OBJDIR): - mkdir $(OBJDIR) - -$(OBJDIR)/resource.$(OBJSUFF): resource.$(SRCSUFF) resource.h - $(CC) -c $(CPPFLAGS) -o $@ resource.$(SRCSUFF) - -resource.exe: $(OBJECTS) $(WXLIB) - $(CC) $(LDFLAGS) -o resource$(GUISUFFIX)$(EXESUFF) $(OBJECTS) $(LDLIBS) - -$(OBJDIR)/resource_resources.o: resource.rc - $(RESCOMP) -i resource.rc -o $(OBJDIR)/resource_resources.o $(RESFLAGS) - -clean: - rm -f $(OBJECTS) resource$(GUISUFFIX).exe core *.rsc *.res - diff --git a/samples/resource/makefile.sc b/samples/resource/makefile.sc deleted file mode 100644 index 235c8f8bc1..0000000000 --- a/samples/resource/makefile.sc +++ /dev/null @@ -1,35 +0,0 @@ -# Symantec C++ makefile for hello example -# NOTE that peripheral libraries are now dealt in main wxWindows makefile. - -WXDIR = $(WXWIN) -WXLIB = $(WXDIR)\lib\wx.lib -INCDIR = $(WXDIR)\include -MSWINC = $(INCDIR)\msw -BASEINC = $(INCDIR)\base - -CC=sc -RC=rc -CFLAGS = -o -ml -W -Dwx_msw -LDFLAGS = -ml -W - -INCLUDE=$(BASEINC);$(MSWINC) - -LIBS=$(WXLIB) libw.lib commdlg.lib shell.lib - -.cc.obj: - *$(CC) -c $(CFLAGS) -I$(INCLUDE) $< - -.rc.res: - *$(RC) -r -I$(INCLUDE) $< - -hello.exe: hello.obj hello.def hello.res - *$(CC) $(LDFLAGS) -o$@ hello.obj hello.def $(LIBS) - *$(RC) -k hello.res - -clean: - -del *.obj - -del *.exe - -del *.res - -del *.map - -del *.rws - diff --git a/samples/resource/makefile.unx b/samples/resource/makefile.unx deleted file mode 100644 index 2076a000a7..0000000000 --- a/samples/resource/makefile.unx +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1998 -# Updated: -# Copyright: (c) 1998 Julian Smart -# -# "%W% %G%" -# -# Makefile for resource example (UNIX). - -PROGRAM=resource - -OBJECTS=$(PROGRAM).o - -include ../../src/makeprog.env - diff --git a/samples/resource/makefile.vc b/samples/resource/makefile.vc deleted file mode 100644 index 103fa7f6bd..0000000000 --- a/samples/resource/makefile.vc +++ /dev/null @@ -1,18 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: (c) Julian Smart -# -# Makefile : Builds sample (VC++, WIN32) -# Use FINAL=1 argument to nmake to build final version with no debug info. - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -PROGRAM=resource -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.vc - diff --git a/samples/resource/makefile.vms b/samples/resource/makefile.vms deleted file mode 100644 index 1ef109fbeb..0000000000 --- a/samples/resource/makefile.vms +++ /dev/null @@ -1,38 +0,0 @@ -#************************************************************************ -# Makefile for HELLO under VMS -# by Stefan Hammes -# (incomplete) update history: -# 11.04.95 -#************************************************************************ - -#************************************************************************ -# Definition section -# (cave: definitions and includes must begin with ',') -#************************************************************************ - -APPOPTS = -APPDEFS = -APPINCS = - -#************************************************************************ -# Module section -#************************************************************************ - -# Name of main module -MAIN = hello - -# Object modules of the application. -OBJS = hello.obj - -.include [--.src]makevms.env - -# main dependency -$(MAIN).exe : $(MAIN).$(OBJ) - $(LINK) $(LINKFLAGS) /exec=$(MAIN).exe $(MAIN).$(OBJ),$(WXLIB)/lib,$(OPTSFILE)/option - - purge *.exe - -#************************************************************************ -# Header file depedencies following -#************************************************************************ -hello.obj : hello.cc hello.h - diff --git a/samples/resource/makefile.wat b/samples/resource/makefile.wat deleted file mode 100644 index a2041fd638..0000000000 --- a/samples/resource/makefile.wat +++ /dev/null @@ -1,15 +0,0 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 -# -# - -WXDIR = $(%WXWIN) - -PROGRAM = resource -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - diff --git a/samples/resource/menu1.wxr b/samples/resource/menu1.wxr deleted file mode 100644 index 3536bb5a6c..0000000000 --- a/samples/resource/menu1.wxr +++ /dev/null @@ -1,13 +0,0 @@ - -static char *menu1 = "menu(name = 'menu1',\ - menu = \ - [\ - ['&File', 1, '', \ - ['&Dialog box test', 2, ''],\ - [],\ - ['&Exit', 4, '']\ - ],\ - ['&Help', 5, '', \ - ['&About', 6, '']\ - ]\ - ])."; diff --git a/samples/resource/resource.cpp b/samples/resource/resource.cpp deleted file mode 100644 index 836cf563a4..0000000000 --- a/samples/resource/resource.cpp +++ /dev/null @@ -1,199 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: resource.cpp -// Purpose: Dialog resource sample -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -// #pragma implementation -#endif - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include "wx/resource.h" - -#include -#include "resource.h" - -// If we wanted to demonstrate total platform independence, -// then we'd use the dynamic file loading form for all platforms. -// But this shows how to embed the wxWindows resources -// in the program code/executable for UNIX and Windows -// platforms. - -// In order to get the ID of the controls defined in the -// dialog, we include the header automatically generated -// by DialogEd - -#include "dialog1.h" - -// If you have a Windows compiler that can cope with long strings, -// then you can always use the #include form for simplicity. - -// NOTE: Borland's brc32.exe resource compiler doesn't recognize -// the TEXT resource, for some reason, so either run-time file loading -// or file inclusion should be used. - -#if defined(__WXMSW__) -// Under Windows, some compilers can't include -// a whole .wxr file. So we use a .rc user-defined resource -// instead. dialog1 will point to the whole .wxr 'file'. -static char *dialog1 = NULL; -static char *menu1 = NULL; -#else -// Other platforms should have sensible compilers that -// cope with long strings. -#include "dialog1.wxr" -#include "menu1.wxr" -#endif - -// Declare two frames -MyFrame *frame = (MyFrame *) NULL; - -IMPLEMENT_APP(MyApp) - -// Testing of ressources -MyApp::MyApp() -{ -} - -// The `main program' equivalent, creating the windows and returning the -// main frame -bool MyApp::OnInit(void) -{ -#if defined(__WXMSW__) - // Load the .wxr 'file' from a .rc resource, under Windows. - dialog1 = wxLoadUserResource("dialog1", "WXRDATA"); - menu1 = wxLoadUserResource("menu1", "WXRDATA"); - // All resources in the file (only one in this case) get parsed - // by this call. - wxResourceParseString(dialog1); - wxResourceParseString(menu1); -#else - // Simply parse the data pointed to by the variable dialog1. - // If there were several resources, there would be several - // variables, and this would need to be called several times. - wxResourceParseData(dialog1); - wxResourceParseData(menu1); -#endif - - // Create the main frame window - frame = new MyFrame((wxFrame *) NULL, -1, (char *) "wxWindows Resource Sample", wxPoint(-1, -1), wxSize(300, 250)); - - // Give it a status line - frame->CreateStatusBar(2); - - wxMenuBar *menu_bar = wxResourceCreateMenuBar("menu1"); - - // Associate the menu bar with the frame - frame->SetMenuBar(menu_bar); - - // Make a panel - frame->panel = new MyPanel(frame, -1, wxPoint(0, 0), wxSize(400, 400), 0, "MyMainFrame"); - frame->Show(TRUE); - - SetTopWindow(frame); - - return TRUE; -} - -MyApp::~MyApp() -{ - delete dialog1; - delete menu1; -} - -BEGIN_EVENT_TABLE(MyPanel, wxPanel) - EVT_LEFT_DOWN( MyPanel::OnClick) -END_EVENT_TABLE() - -MyPanel::MyPanel( wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, - int style, const wxString &name ) : - wxPanel( parent, id, pos, size, style, name ) -{ -} - -void MyPanel::OnClick( wxMouseEvent &WXUNUSED(event2) ) -{ - MyFrame *frame = (MyFrame*)(wxTheApp->GetTopWindow()); - wxCommandEvent event; - frame->OnTestDialog( event ); -} - - -BEGIN_EVENT_TABLE(MyFrame, wxFrame) - EVT_MENU(RESOURCE_ABOUT, MyFrame::OnAbout) - EVT_MENU(RESOURCE_QUIT, MyFrame::OnQuit) - EVT_MENU(RESOURCE_TESTDIALOG, MyFrame::OnTestDialog) -END_EVENT_TABLE() - -// Define my frame constructor -MyFrame::MyFrame(wxWindow *parent, const wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size): - wxFrame(parent, id, title, pos, size) -{ - panel = (wxWindow *) NULL; -} - -void MyFrame::OnAbout( wxCommandEvent& WXUNUSED(event) ) -{ - wxMessageBox("wxWindows resource sample.\n" - "(c) Julian Smart", "About wxWindows sample", - wxICON_INFORMATION | wxOK); -} - -void MyFrame::OnQuit( wxCommandEvent& WXUNUSED(event) ) -{ - Close(TRUE); -} - -void MyFrame::OnTestDialog(wxCommandEvent& WXUNUSED(event) ) -{ - MyDialog *dialog = new MyDialog; - if (dialog->LoadFromResource(this, "dialog1")) - { - wxTextCtrl *text = (wxTextCtrl *)wxFindWindowByName("multitext3", dialog); - if (text) - text->SetValue("wxWindows resource demo"); - dialog->ShowModal(); - } - dialog->Close(TRUE); -} - -bool MyFrame::OnClose(void) -{ - Show(FALSE); - - return TRUE; -} - -BEGIN_EVENT_TABLE(MyDialog, wxDialog) - // EVT_BUTTON(RESOURCE_OK, MyDialog::OnOk) - EVT_BUTTON(ID_BUTTON109, MyDialog::OnCancel) -END_EVENT_TABLE() - - -void MyDialog::OnOk(wxCommandEvent& WXUNUSED(event) ) -{ - // EndModal(RESOURCE_OK); -} - -void MyDialog::OnCancel(wxCommandEvent& WXUNUSED(event) ) -{ - EndModal(ID_BUTTON109); -} - - diff --git a/samples/resource/resource.def b/samples/resource/resource.def deleted file mode 100644 index 49791b5e6c..0000000000 --- a/samples/resource/resource.def +++ /dev/null @@ -1,9 +0,0 @@ -NAME Resource -DESCRIPTION 'Resource' -EXETYPE WINDOWS -STUB 'WINSTUB.EXE' -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE -HEAPSIZE 1024 -STACKSIZE 16192 - diff --git a/samples/resource/resource.h b/samples/resource/resource.h deleted file mode 100644 index 714d982ffd..0000000000 --- a/samples/resource/resource.h +++ /dev/null @@ -1,70 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: resource.h -// Purpose: Dialog resource sample -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -// #pragma interface -#endif - -// Define a new application -class MyApp: public wxApp -{ -public: - MyApp(); - - virtual bool OnInit(); - - virtual ~MyApp(); -}; - -class MyPanel: public wxPanel -{ -public: - MyPanel(wxWindow *parent, wxWindowID id, const wxPoint& pos, - const wxSize& size, int style, const wxString &name); - void OnClick(wxMouseEvent &event); - -private: - DECLARE_EVENT_TABLE() -}; - -class MyFrame: public wxFrame -{ -public: - MyFrame(wxWindow *parent, const wxWindowID id, const wxString& title, - const wxPoint& pos, const wxSize& size); - bool OnClose(); - void OnQuit(wxCommandEvent& event); - void OnAbout(wxCommandEvent& event); - void OnTestDialog(wxCommandEvent& event); - - wxWindow *panel; - -private: - DECLARE_EVENT_TABLE() -}; - -class MyDialog : public wxDialog -{ -public: - void OnOk(wxCommandEvent& event); - void OnCancel(wxCommandEvent& event); - -private: - DECLARE_EVENT_TABLE() -}; - -// the values should be the same as in menu.wxr file! -enum -{ - RESOURCE_TESTDIALOG = 2, - RESOURCE_QUIT = 4, - RESOURCE_ABOUT = 6 -}; diff --git a/samples/resource/resource.rc b/samples/resource/resource.rc deleted file mode 100644 index 55ff494812..0000000000 --- a/samples/resource/resource.rc +++ /dev/null @@ -1,10 +0,0 @@ -#include "wx/msw/wx.rc" - -/* Comment out these lines for Borland C++ or GNU-WIN32 */ -/* -dialog1 TEXT "dialog1.wxr" -menu1 TEXT "menu1.wxr" -*/ -dialog1 WXRDATA "dialog1.wxr" -menu1 WXRDATA "menu1.wxr" - diff --git a/samples/sashtest/.cvsignore b/samples/sashtest/.cvsignore deleted file mode 100644 index 7957c41216..0000000000 --- a/samples/sashtest/.cvsignore +++ /dev/null @@ -1,3 +0,0 @@ -Linux -linux-gnu -linux \ No newline at end of file diff --git a/samples/sashtest/Makefile b/samples/sashtest/Makefile deleted file mode 100644 index bccce53f76..0000000000 --- a/samples/sashtest/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../../setup/general/makeapp diff --git a/samples/sashtest/Makefile.in b/samples/sashtest/Makefile.in deleted file mode 100644 index 8199d27501..0000000000 --- a/samples/sashtest/Makefile.in +++ /dev/null @@ -1,26 +0,0 @@ -# WXXT base directory -WXBASEDIR=@WXBASEDIR@ - -# set the OS type for compilation -OS=@OS@ -# compile a library only -RULE=bin - -# define library name -BIN_TARGET=sashtest -# define library sources -BIN_SRC=\ -sashtest.cpp - -#define library objects -BIN_OBJ=\ -sashtest.o - -# additional things needed to link -BIN_LINK= - -# additional things needed to compile -ADD_COMPILE= - -# include the definitions now -include ../../../template.mak diff --git a/samples/sashtest/makefile.b32 b/samples/sashtest/makefile.b32 deleted file mode 100644 index ce219415a6..0000000000 --- a/samples/sashtest/makefile.b32 +++ /dev/null @@ -1,16 +0,0 @@ -# -# File: makefile.b32 -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: -# -# Makefile : Builds sample for 32-bit BC++ - -WXDIR = $(WXWIN) - -TARGET=sashtest -OBJECTS = $(TARGET).obj - -!include $(WXDIR)\src\makeprog.b32 - diff --git a/samples/sashtest/makefile.bcc b/samples/sashtest/makefile.bcc deleted file mode 100644 index cb03e4dede..0000000000 --- a/samples/sashtest/makefile.bcc +++ /dev/null @@ -1,19 +0,0 @@ -# -# File: makefile.bcc -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Builds a BC++ 16-bit sample - -!if "$(WXWIN)" == "" -!error You must define the WXWIN variable in autoexec.bat, e.g. WXWIN=c:\wx -!endif - -WXDIR = $(WXWIN) - -TARGET=sashtest -OBJECTS=$(TARGET).obj - -!include $(WXDIR)\src\makeprog.bcc - diff --git a/samples/sashtest/makefile.g95 b/samples/sashtest/makefile.g95 deleted file mode 100644 index 7d5feb51e8..0000000000 --- a/samples/sashtest/makefile.g95 +++ /dev/null @@ -1,37 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile for sashtest example (UNIX). - -WXDIR = ../.. - -# All common UNIX compiler flags and options are now in -# this central makefile. -include $(WXDIR)/src/makeg95.env - -OBJECTS = $(OBJDIR)/sashtest.$(OBJSUFF) $(OBJDIR)/sashtest_resources.$(OBJSUFF) - -all: $(OBJDIR) sashtest$(GUISUFFIX)$(EXESUFF) - -wx: - -$(OBJDIR): - mkdir $(OBJDIR) - -sashtest$(GUISUFFIX)$(EXESUFF): $(OBJECTS) $(WXLIB) - $(CC) $(LDFLAGS) -o sashtest$(GUISUFFIX)$(EXESUFF) $(OBJECTS) $(LDLIBS) - -$(OBJDIR)/sashtest.$(OBJSUFF): sashtest.$(SRCSUFF) - $(CC) -c $(CPPFLAGS) -o $@ sashtest.$(SRCSUFF) - -$(OBJDIR)/sashtest_resources.o: sashtest.rc - $(RESCOMP) -i sashtest.rc -o $(OBJDIR)/sashtest_resources.o $(RESFLAGS) - -clean: - rm -f $(OBJECTS) sashtest$(GUISUFFIX).exe core *.rsc *.res diff --git a/samples/sashtest/makefile.unx b/samples/sashtest/makefile.unx deleted file mode 100644 index 1b3cff37d5..0000000000 --- a/samples/sashtest/makefile.unx +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1998 -# Updated: -# Copyright: (c) 1998 Julian Smart -# -# "%W% %G%" -# -# Makefile for sashtest example (UNIX). - -PROGRAM=sashtest - -OBJECTS=$(PROGRAM).o - -include ../../src/makeprog.env - diff --git a/samples/sashtest/makefile.vc b/samples/sashtest/makefile.vc deleted file mode 100644 index 878493df48..0000000000 --- a/samples/sashtest/makefile.vc +++ /dev/null @@ -1,18 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: (c) Julian Smart -# -# Makefile : Builds sample (VC++, WIN32) -# Use FINAL=1 argument to nmake to build final version with no debug info. - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -PROGRAM=sashtest -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.vc - diff --git a/samples/sashtest/makefile.wat b/samples/sashtest/makefile.wat deleted file mode 100644 index 8c4081d4a0..0000000000 --- a/samples/sashtest/makefile.wat +++ /dev/null @@ -1,15 +0,0 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 -# -# - -WXDIR = $(%WXWIN) - -PROGRAM = sashtest -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - diff --git a/samples/sashtest/sashtest.cpp b/samples/sashtest/sashtest.cpp deleted file mode 100644 index 3917a31ab2..0000000000 --- a/samples/sashtest/sashtest.cpp +++ /dev/null @@ -1,375 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: sashtest.cpp -// Purpose: Layout/sash sample -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#include "wx/mdi.h" -#endif - -#include -#include - -#include "sashtest.h" - -MyFrame *frame = NULL; -wxList my_children; - -IMPLEMENT_APP(MyApp) - -// For drawing lines in a canvas -long xpos = -1; -long ypos = -1; - -int winNumber = 1; - -// Initialise this in OnInit, not statically -bool MyApp::OnInit(void) -{ - // Create the main frame window - - frame = new MyFrame(NULL, -1, "Sash Demo", wxPoint(0, 0), wxSize(500, 400), - wxDEFAULT_FRAME_STYLE | wxHSCROLL | wxVSCROLL); - - // Give it an icon (this is ignored in MDI mode: uses resources) -#ifdef __WXMSW__ - frame->SetIcon(wxIcon("sashtest_icn")); -#endif -#ifdef __X__ - frame->SetIcon(wxIcon("sashtest.xbm")); -#endif - - // Make a menubar - wxMenu *file_menu = new wxMenu; - - file_menu->Append(SASHTEST_NEW_WINDOW, "&New window"); - file_menu->Append(SASHTEST_TOGGLE_WINDOW, "&Toggle window"); - file_menu->Append(SASHTEST_QUIT, "&Exit"); - - wxMenu *help_menu = new wxMenu; - help_menu->Append(SASHTEST_ABOUT, "&About"); - - wxMenuBar *menu_bar = new wxMenuBar; - - menu_bar->Append(file_menu, "&File"); - menu_bar->Append(help_menu, "&Help"); - - // Associate the menu bar with the frame - frame->SetMenuBar(menu_bar); - - frame->CreateStatusBar(); - - frame->Show(TRUE); - - SetTopWindow(frame); - - return TRUE; -} - -BEGIN_EVENT_TABLE(MyFrame, wxMDIParentFrame) - EVT_MENU(SASHTEST_ABOUT, MyFrame::OnAbout) - EVT_MENU(SASHTEST_NEW_WINDOW, MyFrame::OnNewWindow) - EVT_SIZE(MyFrame::OnSize) - EVT_MENU(SASHTEST_QUIT, MyFrame::OnQuit) - EVT_MENU(SASHTEST_TOGGLE_WINDOW, MyFrame::OnToggleWindow) - EVT_SASH_DRAGGED_RANGE(ID_WINDOW_TOP, ID_WINDOW_BOTTOM, MyFrame::OnSashDrag) -END_EVENT_TABLE() - - -// Define my frame constructor -MyFrame::MyFrame(wxWindow *parent, const wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, - const long style): - wxMDIParentFrame(parent, id, title, pos, size, style) -{ - // Create some dummy layout windows - - // A window like a toolbar - wxSashLayoutWindow* win = new wxSashLayoutWindow(this, ID_WINDOW_TOP, wxDefaultPosition, wxSize(200, 30), wxNO_BORDER|wxSW_3D); - win->SetDefaultSize(wxSize(1000, 30)); - win->SetOrientation(wxLAYOUT_HORIZONTAL); - win->SetAlignment(wxLAYOUT_TOP); - win->SetBackgroundColour(wxColour(255, 0, 0)); - win->SetSashVisible(wxSASH_BOTTOM, TRUE); - - m_topWindow = win; - - // A window like a statusbar - win = new wxSashLayoutWindow(this, ID_WINDOW_BOTTOM, wxDefaultPosition, wxSize(200, 30), wxNO_BORDER|wxSW_3D); - win->SetDefaultSize(wxSize(1000, 30)); - win->SetOrientation(wxLAYOUT_HORIZONTAL); - win->SetAlignment(wxLAYOUT_BOTTOM); - win->SetBackgroundColour(wxColour(0, 0, 255)); - win->SetSashVisible(wxSASH_TOP, TRUE); - - m_bottomWindow = win; - - // A window to the left of the client window - win = new wxSashLayoutWindow(this, ID_WINDOW_LEFT1, wxDefaultPosition, wxSize(200, 30), wxNO_BORDER|wxSW_3D); - win->SetDefaultSize(wxSize(120, 1000)); - win->SetOrientation(wxLAYOUT_VERTICAL); - win->SetAlignment(wxLAYOUT_LEFT); - win->SetBackgroundColour(wxColour(0, 255, 0)); - win->SetSashVisible(wxSASH_RIGHT, TRUE); - win->SetExtraBorderSize(10); - - wxTextCtrl* textWindow = new wxTextCtrl(win, -1, "", wxDefaultPosition, wxDefaultSize, - wxTE_MULTILINE|wxSUNKEN_BORDER); -// wxTE_MULTILINE|wxNO_BORDER); - textWindow->SetValue("A help window"); - - m_leftWindow1 = win; - - // Another window to the left of the client window - win = new wxSashLayoutWindow(this, ID_WINDOW_LEFT2, wxDefaultPosition, wxSize(200, 30), wxNO_BORDER|wxSW_3D); - win->SetDefaultSize(wxSize(120, 1000)); - win->SetOrientation(wxLAYOUT_VERTICAL); - win->SetAlignment(wxLAYOUT_LEFT); - win->SetBackgroundColour(wxColour(0, 255, 255)); - win->SetSashVisible(wxSASH_RIGHT, TRUE); - - m_leftWindow2 = win; -} - -void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) -{ - Close(TRUE); -} - -void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) -{ - (void)wxMessageBox("wxWindows 2.0 Sash Demo\nAuthor: Julian Smart (c) 1998", "About Sash Demo"); -} - -void MyFrame::OnToggleWindow(wxCommandEvent& WXUNUSED(event)) -{ - if (m_leftWindow1->IsShown()) - { - m_leftWindow1->Show(FALSE); - } - else - { - m_leftWindow1->Show(TRUE); - } - wxLayoutAlgorithm layout; - layout.LayoutMDIFrame(this); -} - -void MyFrame::OnSashDrag(wxSashEvent& event) -{ - if (event.GetDragStatus() == wxSASH_STATUS_OUT_OF_RANGE) - return; - - switch (event.GetId()) - { - case ID_WINDOW_TOP: - { - m_topWindow->SetDefaultSize(wxSize(1000, event.GetDragRect().height)); - break; - } - case ID_WINDOW_LEFT1: - { - m_leftWindow1->SetDefaultSize(wxSize(event.GetDragRect().width, 1000)); - break; - } - case ID_WINDOW_LEFT2: - { - m_leftWindow2->SetDefaultSize(wxSize(event.GetDragRect().width, 1000)); - break; - } - case ID_WINDOW_BOTTOM: - { - m_bottomWindow->SetDefaultSize(wxSize(1000, event.GetDragRect().height)); - break; - } - } - wxLayoutAlgorithm layout; - layout.LayoutMDIFrame(this); - - // Leaves bits of itself behind sometimes - GetClientWindow()->Refresh(); -} - -void MyFrame::OnNewWindow(wxCommandEvent& WXUNUSED(event)) -{ - // Make another frame, containing a canvas - MyChild *subframe = new MyChild(frame, "Canvas Frame", wxPoint(10, 10), wxSize(300, 300), - wxDEFAULT_FRAME_STYLE); - - char titleBuf[100]; - sprintf(titleBuf, "Canvas Frame %d", winNumber); - subframe->SetTitle(titleBuf); - winNumber ++; - - // Give it an icon (this is ignored in MDI mode: uses resources) -#ifdef __WXMSW__ - subframe->SetIcon(wxIcon("sashtest_icn")); -#endif - - // Give it a status line - subframe->CreateStatusBar(); - - // Make a menubar - wxMenu *file_menu = new wxMenu; - - file_menu->Append(SASHTEST_NEW_WINDOW, "&New window"); - file_menu->Append(SASHTEST_CHILD_QUIT, "&Close child"); - file_menu->Append(SASHTEST_QUIT, "&Exit"); - - wxMenu *option_menu = new wxMenu; - - // Dummy option - option_menu->Append(SASHTEST_REFRESH, "&Refresh picture"); - - wxMenu *help_menu = new wxMenu; - help_menu->Append(SASHTEST_ABOUT, "&About"); - - wxMenuBar *menu_bar = new wxMenuBar; - - menu_bar->Append(file_menu, "&File"); - menu_bar->Append(option_menu, "&Options"); - menu_bar->Append(help_menu, "&Help"); - - // Associate the menu bar with the frame - subframe->SetMenuBar(menu_bar); - - int width, height; - subframe->GetClientSize(&width, &height); - MyCanvas *canvas = new MyCanvas(subframe, wxPoint(0, 0), wxSize(width, height)); - canvas->SetCursor(wxCursor(wxCURSOR_PENCIL)); - subframe->canvas = canvas; - - // Give it scrollbars - canvas->SetScrollbars(20, 20, 50, 50); - - subframe->Show(TRUE); -} - -BEGIN_EVENT_TABLE(MyCanvas, wxScrolledWindow) - EVT_MOUSE_EVENTS(MyCanvas::OnEvent) -END_EVENT_TABLE() - -// Define a constructor for my canvas -MyCanvas::MyCanvas(wxWindow *parent, const wxPoint& pos, const wxSize& size): - wxScrolledWindow(parent, -1, pos, size, wxSUNKEN_BORDER) -{ -} - -// Define the repainting behaviour -void MyCanvas::OnDraw(wxDC& dc) -{ - dc.SetFont(*wxSWISS_FONT); - dc.SetPen(*wxGREEN_PEN); - dc.DrawLine(0, 0, 200, 200); - dc.DrawLine(200, 0, 0, 200); - - dc.SetBrush(*wxCYAN_BRUSH); - dc.SetPen(*wxRED_PEN); - dc.DrawRectangle(100, 100, 100, 50); - dc.DrawRoundedRectangle(150, 150, 100, 50, 20); - - dc.DrawEllipse(250, 250, 100, 50); - dc.DrawSpline(50, 200, 50, 100, 200, 10); - dc.DrawLine(50, 230, 200, 230); - dc.DrawText("This is a test string", 50, 230); - - wxPoint points[3]; - points[0].x = 200; points[0].y = 300; - points[1].x = 100; points[1].y = 400; - points[2].x = 300; points[2].y = 400; - - dc.DrawPolygon(3, points); -} - -// This implements a tiny doodling program! Drag the mouse using -// the left button. -void MyCanvas::OnEvent(wxMouseEvent& event) -{ - wxClientDC dc(this); - PrepareDC(dc); - - wxPoint pt(event.GetLogicalPosition(dc)); - - if (xpos > -1 && ypos > -1 && event.Dragging()) - { - dc.SetPen(*wxBLACK_PEN); - dc.DrawLine(xpos, ypos, pt.x, pt.y); - } - xpos = pt.x; - ypos = pt.y; -} - -// Define the behaviour for the frame closing -// - must delete all frames except for the main one. -bool MyFrame::OnClose(void) -{ - // Must delete children - wxNode *node = my_children.First(); - while (node) - { - MyChild *child = (MyChild *)node->Data(); - wxNode *next = node->Next(); - child->OnClose(); - delete child; - node = next; - } - return TRUE; -} - -void MyFrame::OnSize(wxSizeEvent& WXUNUSED(event)) -{ - wxLayoutAlgorithm layout; - layout.LayoutMDIFrame(this); -} - -// Note that SASHTEST_NEW_WINDOW and SASHTEST_ABOUT commands get passed -// to the parent window for processing, so no need to -// duplicate event handlers here. - -BEGIN_EVENT_TABLE(MyChild, wxMDIChildFrame) - EVT_MENU(SASHTEST_CHILD_QUIT, MyChild::OnQuit) -END_EVENT_TABLE() - -MyChild::MyChild(wxMDIParentFrame *parent, const wxString& title, const wxPoint& pos, const wxSize& size, -const long style): - wxMDIChildFrame(parent, -1, title, pos, size, style) -{ - canvas = NULL; - my_children.Append(this); -} - -MyChild::~MyChild(void) -{ - my_children.DeleteObject(this); -} - -void MyChild::OnQuit(wxCommandEvent& WXUNUSED(event)) -{ - Close(TRUE); -} - -void MyChild::OnActivate(wxActivateEvent& event) -{ - if (event.GetActive() && canvas) - canvas->SetFocus(); -} - -bool MyChild::OnClose(void) -{ - return TRUE; -} - - diff --git a/samples/sashtest/sashtest.h b/samples/sashtest/sashtest.h deleted file mode 100644 index ed5fa54197..0000000000 --- a/samples/sashtest/sashtest.h +++ /dev/null @@ -1,79 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: sashtest.h -// Purpose: Layout window/sash sample -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#include - -// Define a new application -class MyApp: public wxApp -{ - public: - bool OnInit(void); -}; - -class MyCanvas: public wxScrolledWindow -{ - public: - MyCanvas(wxWindow *parent, const wxPoint& pos, const wxSize& size); - virtual void OnDraw(wxDC& dc); - void OnEvent(wxMouseEvent& event); - - DECLARE_EVENT_TABLE() -}; - -// Define a new frame -class MyFrame: public wxMDIParentFrame -{ - public: - - MyFrame(wxWindow *parent, const wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, const long style); - - bool OnClose(void); - void OnSize(wxSizeEvent& event); - void OnAbout(wxCommandEvent& event); - void OnNewWindow(wxCommandEvent& event); - void OnQuit(wxCommandEvent& event); - void OnToggleWindow(wxCommandEvent& event); - void OnSashDrag(wxSashEvent& event); - -protected: - wxSashLayoutWindow* m_topWindow; - wxSashLayoutWindow* m_leftWindow1; - wxSashLayoutWindow* m_leftWindow2; - wxSashLayoutWindow* m_bottomWindow; - -DECLARE_EVENT_TABLE() -}; - -class MyChild: public wxMDIChildFrame -{ - public: - MyCanvas *canvas; - MyChild(wxMDIParentFrame *parent, const wxString& title, const wxPoint& pos, const wxSize& size, const long style); - ~MyChild(void); - bool OnClose(void); - void OnActivate(wxActivateEvent& event); - void OnQuit(wxCommandEvent& event); - -DECLARE_EVENT_TABLE() -}; - -#define SASHTEST_QUIT 1 -#define SASHTEST_NEW_WINDOW 2 -#define SASHTEST_REFRESH 3 -#define SASHTEST_CHILD_QUIT 4 -#define SASHTEST_ABOUT 5 -#define SASHTEST_TOGGLE_WINDOW 6 - -#define ID_WINDOW_TOP 100 -#define ID_WINDOW_LEFT1 101 -#define ID_WINDOW_LEFT2 102 -#define ID_WINDOW_BOTTOM 103 - diff --git a/samples/sashtest/sashtest.ico b/samples/sashtest/sashtest.ico deleted file mode 100644 index 2dc1bde40cf921731fb2f7c6534054c6fb8d96d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmah{IgY|W5G*e%tq=i3o32BCvHXmAf>Zy(`6TlchZ{QF05Mc`&y2+((WbBJ>H`DN z@#*^mB!3^kH~o>?Q%}?mpR_<=?X?6JSqZ@%EkkNRN{NMRALOiv%14mQONo@Vuu~f2 zR1r@bqoxHgHqbgO7{>y8VLOh4a849H4Zzj{FAJP(g5{I-n)O_*F$%SIE3<<+Nj^dZ zMrsmnqFCH}{&VhK#xlN*^s!HQyVC2cT_ZcBoK?PWy+p6H9A{2%_%Scn3ie-MC5TR` zfM>p7Bv6> diff --git a/samples/sashtest/sashtest.rc b/samples/sashtest/sashtest.rc deleted file mode 100644 index 3719f5af81..0000000000 --- a/samples/sashtest/sashtest.rc +++ /dev/null @@ -1,9 +0,0 @@ -aaaa ICON "sashtest.ico" - -wxSTD_MDIPARENTFRAME ICON "sashtest.ico" -wxSTD_MDICHILDFRAME ICON "sashtest.ico" - -sashtest_icn ICON "sashtest.ico" - -#include "wx/msw/wx.rc" - diff --git a/samples/splitter/.cvsignore b/samples/splitter/.cvsignore deleted file mode 100644 index 7957c41216..0000000000 --- a/samples/splitter/.cvsignore +++ /dev/null @@ -1,3 +0,0 @@ -Linux -linux-gnu -linux \ No newline at end of file diff --git a/samples/splitter/Makefile b/samples/splitter/Makefile deleted file mode 100644 index bccce53f76..0000000000 --- a/samples/splitter/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../../setup/general/makeapp diff --git a/samples/splitter/Makefile.in b/samples/splitter/Makefile.in deleted file mode 100644 index 522773e6cb..0000000000 --- a/samples/splitter/Makefile.in +++ /dev/null @@ -1,26 +0,0 @@ -# WXXT base directory -WXBASEDIR=@WXBASEDIR@ - -# set the OS type for compilation -OS=@OS@ -# compile a library only -RULE=bin - -# define library name -BIN_TARGET=splitter -# define library sources -BIN_SRC=\ -test.cpp - -#define library objects -BIN_OBJ=\ -test.o - -# additional things needed to link -BIN_LINK= - -# additional things needed to compile -ADD_COMPILE= - -# include the definitions now -include ../../../template.mak diff --git a/samples/splitter/makefile.b32 b/samples/splitter/makefile.b32 deleted file mode 100644 index 95ddc80d76..0000000000 --- a/samples/splitter/makefile.b32 +++ /dev/null @@ -1,16 +0,0 @@ -# -# File: makefile.b32 -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: -# -# Makefile : Builds sample for 32-bit BC++ - -WXDIR = $(WXWIN) - -TARGET=test -OBJECTS = $(TARGET).obj - -!include $(WXDIR)\src\makeprog.b32 - diff --git a/samples/splitter/makefile.bcc b/samples/splitter/makefile.bcc deleted file mode 100644 index 669f01905a..0000000000 --- a/samples/splitter/makefile.bcc +++ /dev/null @@ -1,19 +0,0 @@ -# -# File: makefile.bcc -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Builds a BC++ 16-bit sample - -!if "$(WXWIN)" == "" -!error You must define the WXWIN variable in autoexec.bat, e.g. WXWIN=c:\wx -!endif - -WXDIR = $(WXWIN) - -TARGET=test -OBJECTS=$(TARGET).obj - -!include $(WXDIR)\src\makeprog.bcc - diff --git a/samples/splitter/makefile.g95 b/samples/splitter/makefile.g95 deleted file mode 100644 index 597f7d9a40..0000000000 --- a/samples/splitter/makefile.g95 +++ /dev/null @@ -1,39 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile for splitter example (UNIX). - -WXDIR = ../.. - -# All common UNIX compiler flags and options are now in -# this central makefile. -include $(WXDIR)/src/makeg95.env - -OBJECTS = $(OBJDIR)/test.$(OBJSUFF) $(OBJDIR)/test_resources.$(OBJSUFF) - -all: $(OBJDIR) test$(GUISUFFIX)$(EXESUFF) - -wx: - -$(OBJDIR): - mkdir $(OBJDIR) - -test$(GUISUFFIX)$(EXESUFF): $(OBJECTS) $(WXLIB) - $(CC) $(LDFLAGS) -o test$(GUISUFFIX)$(EXESUFF) $(OBJECTS) $(LDLIBS) - -$(OBJDIR)/test.$(OBJSUFF): test.$(SRCSUFF) - $(CC) -c $(CPPFLAGS) -o $@ test.$(SRCSUFF) - -$(OBJDIR)/test_resources.o: test.rc - $(RESCOMP) -i test.rc -o $(OBJDIR)/test_resources.o $(RESFLAGS) - -clean: - rm -f $(OBJECTS) test$(GUISUFFIX).exe core *.rsc *.res - - diff --git a/samples/splitter/makefile.unx b/samples/splitter/makefile.unx deleted file mode 100644 index 49afaf4cdd..0000000000 --- a/samples/splitter/makefile.unx +++ /dev/null @@ -1,18 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1998 -# Updated: -# Copyright: (c) 1998 Julian Smart -# -# "%W% %G%" -# -# Makefile for splitter example (UNIX). - -PROGRAM=test - -OBJECTS=$(PROGRAM).o - -include ../../src/makeprog.env - - diff --git a/samples/splitter/makefile.vc b/samples/splitter/makefile.vc deleted file mode 100644 index 4ada748eda..0000000000 --- a/samples/splitter/makefile.vc +++ /dev/null @@ -1,18 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: (c) Julian Smart -# -# Makefile : Builds sample (VC++, WIN32) -# Use FINAL=1 argument to nmake to build final version with no debug info. - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -PROGRAM=test -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.vc - diff --git a/samples/splitter/makefile.wat b/samples/splitter/makefile.wat deleted file mode 100644 index 81a83e42a9..0000000000 --- a/samples/splitter/makefile.wat +++ /dev/null @@ -1,15 +0,0 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 -# -# - -WXDIR = $(%WXWIN) - -PROGRAM = test -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - diff --git a/samples/splitter/mondrian.ico b/samples/splitter/mondrian.ico deleted file mode 100644 index 2310c5d275a87af295d5ea8dc79ea417a5e74c53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmZQzU<5)11px*Sc)`TLAO@s0fLH;D9e|jTfdxnc0ZSetStatusText(str); - - return TRUE; - } - -private: - wxFrame *m_frame; -}; - -class MyFrame: public wxFrame -{ -public: - MyFrame(wxFrame* frame, const wxString& title, const wxPoint& pos, const wxSize& size); - virtual ~MyFrame(); - - bool OnClose(); - - // Menu commands - void SplitHorizontal(wxCommandEvent& event); - void SplitVertical(wxCommandEvent& event); - void Unsplit(wxCommandEvent& event); - void SetMinSize(wxCommandEvent& event); - void Quit(wxCommandEvent& event); - - // Menu command update functions - void UpdateUIHorizontal(wxUpdateUIEvent& event); - void UpdateUIVertical(wxUpdateUIEvent& event); - void UpdateUIUnsplit(wxUpdateUIEvent& event); - -private: - void UpdatePosition(); - - wxMenu* fileMenu; - wxMenuBar* menuBar; - MyCanvas* m_leftCanvas; - MyCanvas* m_rightCanvas; - MySplitterWindow* m_splitter; - -DECLARE_EVENT_TABLE() -}; - -class MyCanvas: public wxScrolledWindow -{ -public: - MyCanvas(wxWindow* parent, wxWindowID id, int x, int y, int w, int h); - virtual ~MyCanvas(); - - virtual void OnDraw(wxDC& dc); - -DECLARE_EVENT_TABLE() -}; - -BEGIN_EVENT_TABLE(MyCanvas, wxScrolledWindow) -END_EVENT_TABLE() - -// ID for the menu commands -enum -{ - SPLIT_QUIT, - SPLIT_HORIZONTAL, - SPLIT_VERTICAL, - SPLIT_UNSPLIT, - SPLIT_SETMINSIZE -}; - -// Window ids -#define SPLITTER_WINDOW 100 -#define SPLITTER_FRAME 101 -#define CANVAS1 102 -#define CANVAS2 103 - -IMPLEMENT_APP(MyApp) - -bool MyApp::OnInit(void) -{ - MyFrame* frame = new MyFrame((wxFrame *) NULL, "wxSplitterWindow Example", - wxPoint(50, 50), wxSize(420, 300)); - - // Show the frame - frame->Show(TRUE); - - SetTopWindow(frame); - - return TRUE; -} - -BEGIN_EVENT_TABLE(MyFrame, wxFrame) - EVT_MENU(SPLIT_VERTICAL, MyFrame::SplitVertical) - EVT_MENU(SPLIT_HORIZONTAL, MyFrame::SplitHorizontal) - EVT_MENU(SPLIT_UNSPLIT, MyFrame::Unsplit) - EVT_MENU(SPLIT_QUIT, MyFrame::Quit) - EVT_MENU(SPLIT_SETMINSIZE, MyFrame::SetMinSize) - - EVT_UPDATE_UI(SPLIT_VERTICAL, MyFrame::UpdateUIVertical) - EVT_UPDATE_UI(SPLIT_HORIZONTAL, MyFrame::UpdateUIHorizontal) - EVT_UPDATE_UI(SPLIT_UNSPLIT, MyFrame::UpdateUIUnsplit) -END_EVENT_TABLE() - -// My frame constructor -MyFrame::MyFrame(wxFrame* frame, const wxString& title, const wxPoint& pos, const wxSize& size): - wxFrame(frame, SPLITTER_FRAME, title, pos, size) -{ - CreateStatusBar(2); - - // Make a menubar - fileMenu = new wxMenu; - fileMenu->Append(SPLIT_VERTICAL, "Split &Vertically", "Split vertically"); - fileMenu->Append(SPLIT_HORIZONTAL, "Split &Horizontally", "Split horizontally"); - fileMenu->Append(SPLIT_UNSPLIT, "&Unsplit", "Unsplit"); - fileMenu->AppendSeparator(); - fileMenu->Append(SPLIT_SETMINSIZE, "Set &min size", "Set minimum pane size"); - fileMenu->AppendSeparator(); - fileMenu->Append(SPLIT_QUIT, "E&xit", "Exit"); - - menuBar = new wxMenuBar; - menuBar->Append(fileMenu, "&File"); - - SetMenuBar(menuBar); - - m_splitter = new MySplitterWindow(this, SPLITTER_WINDOW); - - m_leftCanvas = new MyCanvas(m_splitter, CANVAS1, 0, 0, 400, 400); - m_leftCanvas->SetBackgroundColour(*wxRED); - m_leftCanvas->SetScrollbars(20, 20, 50, 50); - - m_rightCanvas = new MyCanvas(m_splitter, CANVAS2, 0, 0, 400, 400); - m_rightCanvas->SetBackgroundColour(*wxCYAN); - m_rightCanvas->SetScrollbars(20, 20, 50, 50); - m_rightCanvas->Show(FALSE); - - m_splitter->Initialize(m_leftCanvas); - SetStatusText("Min pane size = 0", 1); -} - -MyFrame::~MyFrame() -{ -} - -bool MyFrame::OnClose() -{ - return TRUE; -} - -void MyFrame::Quit(wxCommandEvent& WXUNUSED(event) ) -{ - Close(TRUE); -} - -void MyFrame::SplitHorizontal(wxCommandEvent& WXUNUSED(event) ) -{ - if ( m_splitter->IsSplit() ) - m_splitter->Unsplit(); - m_leftCanvas->Show(TRUE); - m_rightCanvas->Show(TRUE); - m_splitter->SplitHorizontally( m_leftCanvas, m_rightCanvas ); - UpdatePosition(); -} - -void MyFrame::SplitVertical(wxCommandEvent& WXUNUSED(event) ) -{ - if ( m_splitter->IsSplit() ) - m_splitter->Unsplit(); - m_leftCanvas->Show(TRUE); - m_rightCanvas->Show(TRUE); - m_splitter->SplitVertically( m_leftCanvas, m_rightCanvas ); - UpdatePosition(); -} - -void MyFrame::Unsplit(wxCommandEvent& WXUNUSED(event) ) -{ - if ( m_splitter->IsSplit() ) - m_splitter->Unsplit(); - SetStatusText("No splitter"); -} - -void MyFrame::SetMinSize(wxCommandEvent& WXUNUSED(event) ) -{ - wxString str; - str.Printf("%d", m_splitter->GetMinimumPaneSize()); - str = wxGetTextFromUser("Enter minimal size for panes:", "", str, this); - if ( str.IsEmpty() ) - return; - - int minsize = atoi(str); - m_splitter->SetMinimumPaneSize(minsize); - str.Printf("Min pane size = %d", minsize); - SetStatusText(str, 1); -} - -void MyFrame::UpdateUIHorizontal(wxUpdateUIEvent& event) -{ - event.Enable( ( (!m_splitter->IsSplit()) || (m_splitter->GetSplitMode() != wxSPLIT_HORIZONTAL) ) ); -} - -void MyFrame::UpdateUIVertical(wxUpdateUIEvent& event) -{ - event.Enable( ( (!m_splitter->IsSplit()) || (m_splitter->GetSplitMode() != wxSPLIT_VERTICAL) ) ); -} - -void MyFrame::UpdateUIUnsplit(wxUpdateUIEvent& event) -{ - event.Enable( m_splitter->IsSplit() ); -} - -void MyFrame::UpdatePosition() -{ - wxString str; - str.Printf("Sash position = %d", m_splitter->GetSashPosition()); - SetStatusText(str); -} - -MyCanvas::MyCanvas(wxWindow* parent, wxWindowID id, int x, int y, int w, int h) : - wxScrolledWindow(parent, id, wxPoint(x, y), wxSize(w, h)) -{ -} - -MyCanvas::~MyCanvas() -{ -} - -void MyCanvas::OnDraw(wxDC& dc) -{ - dc.SetPen(*wxBLACK_PEN); - dc.DrawLine(0, 0, 100, 100); - - dc.SetBackgroundMode(wxTRANSPARENT); - dc.DrawText("Testing", 50, 50); - - dc.SetPen(*wxRED_PEN); - dc.SetBrush(*wxGREEN_BRUSH); - dc.DrawRectangle(120, 120, 100, 80); -} diff --git a/samples/splitter/test.def b/samples/splitter/test.def deleted file mode 100644 index 3dd3b7a033..0000000000 --- a/samples/splitter/test.def +++ /dev/null @@ -1,8 +0,0 @@ -NAME Test -DESCRIPTION 'wxTableWindow Test' -EXETYPE WINDOWS -STUB 'WINSTUB.EXE' -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE -HEAPSIZE 1024 -STACKSIZE 16192 diff --git a/samples/splitter/test.rc b/samples/splitter/test.rc deleted file mode 100644 index dde0d5ae7f..0000000000 --- a/samples/splitter/test.rc +++ /dev/null @@ -1,4 +0,0 @@ -mondrian ICON "mondrian.ico" - -#include "wx/msw/wx.rc" - diff --git a/samples/tab/.cvsignore b/samples/tab/.cvsignore deleted file mode 100644 index 7957c41216..0000000000 --- a/samples/tab/.cvsignore +++ /dev/null @@ -1,3 +0,0 @@ -Linux -linux-gnu -linux \ No newline at end of file diff --git a/samples/tab/Makefile b/samples/tab/Makefile deleted file mode 100644 index bccce53f76..0000000000 --- a/samples/tab/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../../setup/general/makeapp diff --git a/samples/tab/Makefile.in b/samples/tab/Makefile.in deleted file mode 100644 index 3684cd27fa..0000000000 --- a/samples/tab/Makefile.in +++ /dev/null @@ -1,26 +0,0 @@ -# WXXT base directory -WXBASEDIR=@WXBASEDIR@ - -# set the OS type for compilation -OS=@OS@ -# compile a library only -RULE=bin - -# define library name -BIN_TARGET=tab -# define library sources -BIN_SRC=\ -test.cpp - -#define library objects -BIN_OBJ=\ -test.o - -# additional things needed to link -BIN_LINK= - -# additional things needed to compile -ADD_COMPILE= - -# include the definitions now -include ../../../template.mak diff --git a/samples/tab/makefile.b32 b/samples/tab/makefile.b32 deleted file mode 100644 index 95ddc80d76..0000000000 --- a/samples/tab/makefile.b32 +++ /dev/null @@ -1,16 +0,0 @@ -# -# File: makefile.b32 -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: -# -# Makefile : Builds sample for 32-bit BC++ - -WXDIR = $(WXWIN) - -TARGET=test -OBJECTS = $(TARGET).obj - -!include $(WXDIR)\src\makeprog.b32 - diff --git a/samples/tab/makefile.bcc b/samples/tab/makefile.bcc deleted file mode 100644 index 669f01905a..0000000000 --- a/samples/tab/makefile.bcc +++ /dev/null @@ -1,19 +0,0 @@ -# -# File: makefile.bcc -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Builds a BC++ 16-bit sample - -!if "$(WXWIN)" == "" -!error You must define the WXWIN variable in autoexec.bat, e.g. WXWIN=c:\wx -!endif - -WXDIR = $(WXWIN) - -TARGET=test -OBJECTS=$(TARGET).obj - -!include $(WXDIR)\src\makeprog.bcc - diff --git a/samples/tab/makefile.dos b/samples/tab/makefile.dos deleted file mode 100644 index 13e3a4ce8e..0000000000 --- a/samples/tab/makefile.dos +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.dos -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Makefile : Builds 16-bit sample, VC++ 1.5 -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -WXDIR = $(WXWIN) - -TARGET=test -OBJECTS = $(TARGET).obj - -!include $(WXDIR)\src\makeprog.msc - diff --git a/samples/tab/makefile.g95 b/samples/tab/makefile.g95 deleted file mode 100644 index 75576c053a..0000000000 --- a/samples/tab/makefile.g95 +++ /dev/null @@ -1,37 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile for tab example - -WXDIR = ../.. - -# All common UNIX compiler flags and options are now in -# this central makefile. -include $(WXDIR)/src/makeg95.env - -OBJECTS = $(OBJDIR)/test.$(OBJSUFF) $(OBJDIR)/test_resources.$(OBJSUFF) - -all: $(OBJDIR) test$(GUISUFFIX)$(EXESUFF) - -wx: - -$(OBJDIR): - mkdir $(OBJDIR) - -test$(GUISUFFIX)$(EXESUFF): $(OBJECTS) $(WXLIB) - $(CC) $(LDFLAGS) -o test$(GUISUFFIX)$(EXESUFF) $(OBJECTS) $(LDLIBS) - -$(OBJDIR)/test.$(OBJSUFF): test.$(SRCSUFF) - $(CC) -c $(CPPFLAGS) -o $@ test.$(SRCSUFF) - -$(OBJDIR)/test_resources.o: test.rc - $(RESCOMP) -i test.rc -o $(OBJDIR)/test_resources.o $(RESFLAGS) - -clean: - rm -f $(OBJECTS) test$(GUISUFFIX).exe core *.rsc *.res diff --git a/samples/tab/makefile.unx b/samples/tab/makefile.unx deleted file mode 100644 index 1c66f71f22..0000000000 --- a/samples/tab/makefile.unx +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1998 -# Updated: -# Copyright: (c) 1998 Julian Smart -# -# "%W% %G%" -# -# Makefile for tab example (UNIX). - -PROGRAM=test - -OBJECTS=$(PROGRAM).o - -include ../../src/makeprog.env - diff --git a/samples/tab/makefile.vc b/samples/tab/makefile.vc deleted file mode 100644 index 4ada748eda..0000000000 --- a/samples/tab/makefile.vc +++ /dev/null @@ -1,18 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: (c) Julian Smart -# -# Makefile : Builds sample (VC++, WIN32) -# Use FINAL=1 argument to nmake to build final version with no debug info. - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -PROGRAM=test -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.vc - diff --git a/samples/tab/makefile.wat b/samples/tab/makefile.wat deleted file mode 100644 index 81a83e42a9..0000000000 --- a/samples/tab/makefile.wat +++ /dev/null @@ -1,15 +0,0 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 -# -# - -WXDIR = $(%WXWIN) - -PROGRAM = test -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - diff --git a/samples/tab/mondrian.ico b/samples/tab/mondrian.ico deleted file mode 100644 index 2310c5d275a87af295d5ea8dc79ea417a5e74c53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmZQzU<5)11px*Sc)`TLAO@s0fLH;D9e|jTfdxnc0ZShowModal(); - - // Quit immediately the dialog has been dismissed - return FALSE; -#else - frame = new MyFrame((wxFrame*) NULL, -1, (char *) "Tabbed Panel", wxPoint(-1, -1), wxSize(365, 390), wxDEFAULT_FRAME_STYLE); - - return TRUE; -#endif -} - -void MyApp::InitTabView(wxPanelTabView* view, wxWindow* window) -{ - m_okButton = new wxButton(window, wxID_OK, "Close", wxPoint(-1, -1), wxSize(80, 25)); - m_cancelButton = new wxButton(window, wxID_CANCEL, "Cancel", wxPoint(-1, -1), wxSize(80, 25)); - m_helpButton = new wxButton(window, wxID_HELP, "Help", wxPoint(-1, -1), wxSize(80, 25)); - m_okButton->SetDefault(); - - wxLayoutConstraints* c = new wxLayoutConstraints; - c->right.SameAs(window, wxRight, 4); - c->bottom.SameAs(window, wxBottom, 4); - c->height.AsIs(); - c->width.AsIs(); - m_helpButton->SetConstraints(c); - - c = new wxLayoutConstraints; - c->right.SameAs(m_helpButton, wxLeft, 4); - c->bottom.SameAs(window, wxBottom, 4); - c->height.AsIs(); - c->width.AsIs(); - m_cancelButton->SetConstraints(c); - - c = new wxLayoutConstraints; - c->right.SameAs(m_cancelButton, wxLeft, 4); - c->bottom.SameAs(window, wxBottom, 4); - c->height.AsIs(); - c->width.AsIs(); - m_okButton->SetConstraints(c); - - wxRect 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(window, -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(window, -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); - view->SetTabSelection(TEST_TAB_CAT); -} - -BEGIN_EVENT_TABLE(MyDialog, wxTabbedDialog) - EVT_BUTTON(wxID_OK, MyDialog::OnOK) - EVT_BUTTON(wxID_CANCEL, MyDialog::OnOK) -END_EVENT_TABLE() - -MyDialog::MyDialog(wxWindow* parent, const wxWindowID id, const wxString& title, - const wxPoint& pos, const wxSize& size, const long windowStyle): - wxTabbedDialog(parent, id, title, pos, size, windowStyle) -{ - Init(); -} - -void MyDialog::OnOK(wxCommandEvent& WXUNUSED(event) ) -{ - EndModal(wxID_OK); -} - -void MyDialog::OnCloseWindow(wxCloseEvent& WXUNUSED(event) ) -{ - EndModal(wxID_CANCEL); -} - -void MyDialog::Init(void) -{ - int dialogWidth = 365; - int dialogHeight = 390; - - // 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); - - wxGetApp().InitTabView(view, this); - - // Don't know why this is necessary under Motif... -#ifndef __WXMSW__ - this->SetSize(dialogWidth, dialogHeight-20); -#endif - - Layout(); - - this->Centre(wxBOTH); -} - -BEGIN_EVENT_TABLE(MyFrame, wxFrame) - EVT_BUTTON(wxID_OK, MyFrame::OnOK) - EVT_BUTTON(wxID_CANCEL, MyFrame::OnOK) - EVT_SIZE(MyFrame::OnSize) -END_EVENT_TABLE() - -MyFrame::MyFrame(wxFrame* parent, const wxWindowID id, const wxString& title, - const wxPoint& pos, const wxSize& size, const long windowStyle): - wxFrame(parent, id, title, pos, size, windowStyle) -{ - m_panel = (wxTabbedPanel*) NULL; - m_view = (wxPanelTabView*) NULL; - Init(); -} - -void MyFrame::OnOK(wxCommandEvent& WXUNUSED(event) ) -{ - this->Destroy(); -} - -void MyFrame::OnCloseWindow(wxCloseEvent& WXUNUSED(event) ) -{ - this->Destroy(); -} - -void MyFrame::Init(void) -{ - m_panel = new wxTabbedPanel(this, -1); - - // Note, omit the wxTAB_STYLE_COLOUR_INTERIOR, so we will guarantee a match - // with the panel background, and save a bit of time. - m_view = new wxPanelTabView(m_panel, wxTAB_STYLE_DRAW_BOX); - - wxGetApp().InitTabView(m_view, m_panel); - - this->Centre(wxBOTH); - - Show(TRUE); -} - -void MyFrame::OnSize(wxSizeEvent& event) -{ - wxFrame::OnSize(event); - - int cw, ch; - GetClientSize(& cw, & ch); - - if (m_view && m_panel) - { - m_panel->Layout(); - - int tabHeight = m_view->GetTotalTabHeight(); - wxRect rect; - rect.x = 4; - rect.y = tabHeight + 4; - rect.width = cw - 8; - rect.height = ch - 4 - rect.y - 30; // 30 for buttons - - m_view->SetViewRect(rect); - - m_view->Layout(); - - // Need to do it a 2nd time to get the tab height with - // the new view width - tabHeight = m_view->GetTotalTabHeight(); - rect.x = 4; - rect.y = tabHeight + 4; - rect.width = cw - 8; - rect.height = ch - 4 - rect.y - 30; // 30 for buttons - - m_view->SetViewRect(rect); - - m_view->Layout(); - - // Move all the panels to the new view position and size - wxNode* node = m_view->GetWindows().First(); - while (node) - { - wxWindow* win = (wxWindow*) node->Data(); - win->SetSize(rect.x+2, rect.y+2, rect.width-4, rect.height-4); - - node = node->Next(); - } - - m_panel->Refresh(); - } -} - diff --git a/samples/tab/test.def b/samples/tab/test.def deleted file mode 100644 index bacb3d4dda..0000000000 --- a/samples/tab/test.def +++ /dev/null @@ -1,8 +0,0 @@ -NAME Test -DESCRIPTION 'Tab test' -EXETYPE WINDOWS -STUB 'WINSTUB.EXE' -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE -HEAPSIZE 1024 -STACKSIZE 16192 diff --git a/samples/tab/test.h b/samples/tab/test.h deleted file mode 100644 index adb13a16fc..0000000000 --- a/samples/tab/test.h +++ /dev/null @@ -1,87 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: test.h -// Purpose: Tab demo -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -// Define a new application -class MyApp: public wxApp -{ -public: - bool OnInit(void); - void InitTabView(wxPanelTabView* view, wxWindow* window); - - wxButton* m_okButton; - wxButton* m_cancelButton; - wxButton* m_helpButton; -}; - -DECLARE_APP(MyApp) - -class MyDialog: public wxTabbedDialog -{ -public: - MyDialog(wxWindow* parent, const wxWindowID id, const wxString& title, - const wxPoint& pos, const wxSize& size, const long windowStyle = wxDEFAULT_DIALOG_STYLE); - - void OnOK(wxCommandEvent& event); - void OnCloseWindow(wxCloseEvent& event); - void Init(void); - -DECLARE_EVENT_TABLE() -}; - -class MyFrame: public wxFrame -{ -public: - MyFrame(wxFrame* parent, const wxWindowID id, const wxString& title, - const wxPoint& pos, const wxSize& size, const long windowStyle = wxDEFAULT_FRAME_STYLE); - - void OnOK(wxCommandEvent& event); - void OnCloseWindow(wxCloseEvent& event); - void OnSize(wxSizeEvent& event); - void Init(void); -protected: - wxTabbedPanel* m_panel; - wxPanelTabView* m_view; - -DECLARE_EVENT_TABLE() -}; - - -class MyTabbedPanel: public wxTabbedPanel -{ -public: - MyTabbedPanel(wxWindow* parent, const wxWindowID id, - const wxPoint& pos, const wxSize& size, const long windowStyle = 0); - - void OnOK(wxCommandEvent& event); - void OnCloseWindow(wxCloseEvent& event); -// void OnAbout(wxCommandEvent& event); - void Init(void); - -DECLARE_EVENT_TABLE() -}; - -// File ids -#define TEST_ABOUT 2 - -// Tab ids -#define TEST_TAB_DOG 1 -#define TEST_TAB_CAT 2 -#define TEST_TAB_GOAT 3 -#define TEST_TAB_GUINEAPIG 4 -#define TEST_TAB_ANTEATER 5 -#define TEST_TAB_HUMMINGBIRD 6 -#define TEST_TAB_SHEEP 7 -#define TEST_TAB_COW 8 -#define TEST_TAB_HORSE 9 -#define TEST_TAB_PIG 10 -#define TEST_TAB_OSTRICH 11 -#define TEST_TAB_AARDVARK 12 - diff --git a/samples/tab/test.rc b/samples/tab/test.rc deleted file mode 100644 index a05f21065a..0000000000 --- a/samples/tab/test.rc +++ /dev/null @@ -1,3 +0,0 @@ -mondrian_icon ICON "mondrian.ico" -#include "wx/msw/wx.rc" - diff --git a/samples/taskbar/makefile.b32 b/samples/taskbar/makefile.b32 deleted file mode 100644 index 65462aab63..0000000000 --- a/samples/taskbar/makefile.b32 +++ /dev/null @@ -1,16 +0,0 @@ -# -# File: makefile.b32 -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: -# -# Makefile : Builds sample for 32-bit BC++ - -WXDIR = $(WXWIN) - -TARGET=tbtest -OBJECTS = $(TARGET).obj - -!include $(WXDIR)\src\makeprog.b32 - diff --git a/samples/taskbar/makefile.dos b/samples/taskbar/makefile.dos deleted file mode 100644 index 1872f14856..0000000000 --- a/samples/taskbar/makefile.dos +++ /dev/null @@ -1,65 +0,0 @@ -# -# File: makefile.dos -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile : Builds taskbar example (DOS). -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -WXDIR = $(WXWIN) - -!include $(WXDIR)\src\makemsc.env - -THISDIR = $(WXDIR)\samples\taskbar - -!ifndef FINAL -FINAL=0 -!endif - -HEADERS = -SOURCES = tbtest.$(SRCSUFF) -OBJECTS = tbtest.obj - -all: tbtest.exe - -wx: - cd $(WXDIR)\src\msw - nmake -f makefile.dos FINAL=$(FINAL) - cd $(THISDIR) - -wxclean: - cd $(WXDIR)\src\msw - nmake -f makefile.dos clean - cd $(THISDIR) - -tbtest.exe: $(WXDIR)\src\msw\dummy.obj $(WXLIB) tbtest.obj tbtest.def tbtest.res - link $(LINKFLAGS) @<< -tbtest.obj $(WXDIR)\src\msw\dummy.obj, -tbtest, -NUL, -$(LIBS), -tbtest.def -; -<< - rc -K tbtest.res - -tbtest.obj: tbtest.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -tbtest.res : tbtest.rc $(WXDIR)\include\wx\msw\wx.rc - rc -r /i$(WXDIR)\include tbtest - -clean: - -erase *.obj - -erase *.exe - -erase *.res - -erase *.map - -erase *.sbr - -erase *.pdb diff --git a/samples/taskbar/makefile.g95 b/samples/taskbar/makefile.g95 deleted file mode 100644 index a26fef6cd7..0000000000 --- a/samples/taskbar/makefile.g95 +++ /dev/null @@ -1,37 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile for taskbar example - -WXDIR = ../.. - -# All common UNIX compiler flags and options are now in -# this central makefile. -include $(WXDIR)/src/makeg95.env - -OBJECTS = $(OBJDIR)/tbtest.$(OBJSUFF) $(OBJDIR)/tbtest_resources.$(OBJSUFF) - -all: $(OBJDIR) tbtest$(GUISUFFIX)$(EXESUFF) - -wx: - -$(OBJDIR): - mkdir $(OBJDIR) - -tbtest$(GUISUFFIX)$(EXESUFF): $(OBJECTS) $(WXLIB) - $(CC) $(LDFLAGS) -o tbtest$(GUISUFFIX)$(EXESUFF) $(OBJECTS) $(LDLIBS) - -$(OBJDIR)/tbtest.$(OBJSUFF): tbtest.$(SRCSUFF) - $(CC) -c $(CPPFLAGS) -o $@ tbtest.$(SRCSUFF) - -$(OBJDIR)/tbtest_resources.o: tbtest.rc - $(RESCOMP) -i tbtest.rc -o $(OBJDIR)/tbtest_resources.o $(RESFLAGS) - -clean: - rm -f $(OBJECTS) tbtest$(GUISUFFIX).exe core *.rsc *.res diff --git a/samples/taskbar/makefile.vc b/samples/taskbar/makefile.vc deleted file mode 100644 index 80b7c1a4c7..0000000000 --- a/samples/taskbar/makefile.vc +++ /dev/null @@ -1,18 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: (c) Julian Smart -# -# Makefile : Builds sample (VC++, WIN32) -# Use FINAL=1 argument to nmake to build final version with no debug info. - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -PROGRAM=tbtest -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.vc - diff --git a/samples/taskbar/makefile.wat b/samples/taskbar/makefile.wat deleted file mode 100644 index 9c96500280..0000000000 --- a/samples/taskbar/makefile.wat +++ /dev/null @@ -1,15 +0,0 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 -# -# - -WXDIR = $(%WXWIN) - -PROGRAM = tbtest -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - diff --git a/samples/taskbar/mondrian.ico b/samples/taskbar/mondrian.ico deleted file mode 100644 index 2310c5d275a87af295d5ea8dc79ea417a5e74c53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmZQzU<5)11px*Sc)`TLAO@s0fLH;D9e|jTfdxnc0ZShow(TRUE); - - return TRUE; -} - - -BEGIN_EVENT_TABLE(MyDialog, wxDialog) - EVT_BUTTON(wxID_OK, MyDialog::OnOK) - EVT_BUTTON(wxID_EXIT, MyDialog::OnExit) -END_EVENT_TABLE() - - - -MyDialog::MyDialog(wxWindow* parent, const wxWindowID id, const wxString& title, - const wxPoint& pos, const wxSize& size, const long windowStyle): - wxDialog(parent, id, title, pos, size, windowStyle) -{ - Init(); -} - -void MyDialog::OnOK(wxCommandEvent& event) -{ - Show(FALSE); -} - -void MyDialog::OnExit(wxCommandEvent& event) -{ - Close(TRUE); -} - -void MyDialog::OnCloseWindow(wxCloseEvent& event) -{ - Destroy(); -} - -void MyDialog::Init(void) -{ - int dialogWidth = 365; - int dialogHeight = 290; - - wxStaticText* stat = new wxStaticText(this, -1, "Press OK to hide me, Exit to quit.", - wxPoint(10, 20)); - - wxStaticText* stat2 = new wxStaticText(this, -1, "Double-click on the taskbar icon to show me again.", - wxPoint(10, 40)); - - wxButton *okButton = new wxButton(this, wxID_OK, "OK", wxPoint(100, 230), wxSize(80, 25)); - wxButton *exitButton = new wxButton(this, wxID_EXIT, "Exit", wxPoint(185, 230), wxSize(80, 25)); - okButton->SetDefault(); - this->Centre(wxBOTH); -} - - -enum { - PU_RESTORE = 10001, - PU_EXIT, -}; - - -BEGIN_EVENT_TABLE(MyTaskBarIcon, wxTaskBarIcon) - EVT_MENU(PU_RESTORE, MyTaskBarIcon::OnMenuRestore) - EVT_MENU(PU_EXIT, MyTaskBarIcon::OnMenuExit) -END_EVENT_TABLE() - -void MyTaskBarIcon::OnMenuRestore(wxEvent& ) -{ - dialog->Show(TRUE); -} - -void MyTaskBarIcon::OnMenuExit(wxEvent& ) -{ - dialog->Close(TRUE); -} - - -// Overridables -void MyTaskBarIcon::OnMouseMove(wxEvent&) -{ -} - -void MyTaskBarIcon::OnLButtonDown(wxEvent&) -{ -} - -void MyTaskBarIcon::OnLButtonUp(wxEvent&) -{ -} - -void MyTaskBarIcon::OnRButtonDown(wxEvent&) -{ -} - -void MyTaskBarIcon::OnRButtonUp(wxEvent&) -{ - wxMenu menu; - - menu.Append(PU_RESTORE, "&Restore TBTest"); - menu.Append(PU_EXIT, "E&xit"); - - PopupMenu(&menu); -} - -void MyTaskBarIcon::OnLButtonDClick(wxEvent&) -{ - dialog->Show(TRUE); -} - -void MyTaskBarIcon::OnRButtonDClick(wxEvent&) -{ -} - - - - diff --git a/samples/taskbar/tbtest.def b/samples/taskbar/tbtest.def deleted file mode 100644 index db80cc854b..0000000000 --- a/samples/taskbar/tbtest.def +++ /dev/null @@ -1,8 +0,0 @@ -NAME TBTest -DESCRIPTION 'wxTaskBarIcon test' -EXETYPE WINDOWS -STUB 'WINSTUB.EXE' -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE -HEAPSIZE 1024 -STACKSIZE 16192 diff --git a/samples/taskbar/tbtest.h b/samples/taskbar/tbtest.h deleted file mode 100644 index 142ce5d237..0000000000 --- a/samples/taskbar/tbtest.h +++ /dev/null @@ -1,55 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: tbtest.h -// Purpose: wxTaskBarIcon sample -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -class MyTaskBarIcon: public wxTaskBarIcon -{ -public: - MyTaskBarIcon() {}; - - virtual void OnMouseMove(wxEvent&); - virtual void OnLButtonDown(wxEvent&); - virtual void OnLButtonUp(wxEvent&); - virtual void OnRButtonDown(wxEvent&); - virtual void OnRButtonUp(wxEvent&); - virtual void OnLButtonDClick(wxEvent&); - virtual void OnRButtonDClick(wxEvent&); - - void OnMenuRestore(wxEvent&); - void OnMenuExit(wxEvent&); - -DECLARE_EVENT_TABLE() -}; - - -// Define a new application -class MyApp: public wxApp -{ -public: - bool OnInit(void); -protected: - MyTaskBarIcon m_taskBarIcon; -}; - -class MyDialog: public wxDialog -{ -public: - MyDialog(wxWindow* parent, const wxWindowID id, const wxString& title, - const wxPoint& pos, const wxSize& size, const long windowStyle = wxDEFAULT_DIALOG_STYLE); - - void OnOK(wxCommandEvent& event); - void OnExit(wxCommandEvent& event); - void OnCloseWindow(wxCloseEvent& event); - void Init(void); - -DECLARE_EVENT_TABLE() -}; - - diff --git a/samples/taskbar/tbtest.rc b/samples/taskbar/tbtest.rc deleted file mode 100644 index a05f21065a..0000000000 --- a/samples/taskbar/tbtest.rc +++ /dev/null @@ -1,3 +0,0 @@ -mondrian_icon ICON "mondrian.ico" -#include "wx/msw/wx.rc" - diff --git a/samples/thread/.cvsignore b/samples/thread/.cvsignore deleted file mode 100644 index 7957c41216..0000000000 --- a/samples/thread/.cvsignore +++ /dev/null @@ -1,3 +0,0 @@ -Linux -linux-gnu -linux \ No newline at end of file diff --git a/samples/thread/Makefile b/samples/thread/Makefile deleted file mode 100644 index bccce53f76..0000000000 --- a/samples/thread/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../../setup/general/makeapp diff --git a/samples/thread/Makefile.in b/samples/thread/Makefile.in deleted file mode 100644 index 27d040a4f6..0000000000 --- a/samples/thread/Makefile.in +++ /dev/null @@ -1,26 +0,0 @@ -# WXXT base directory -WXBASEDIR=@WXBASEDIR@ - -# set the OS type for compilation -OS=@OS@ -# compile a library only -RULE=bin - -# define library name -BIN_TARGET=thread -# define library sources -BIN_SRC=\ -test.cpp - -#define library objects -BIN_OBJ=\ -test.o - -# additional things needed to link -BIN_LINK= - -# additional things needed to compile -ADD_COMPILE= - -# include the definitions now -include ../../../template.mak diff --git a/samples/thread/makefile.b32 b/samples/thread/makefile.b32 deleted file mode 100644 index 95ddc80d76..0000000000 --- a/samples/thread/makefile.b32 +++ /dev/null @@ -1,16 +0,0 @@ -# -# File: makefile.b32 -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: -# -# Makefile : Builds sample for 32-bit BC++ - -WXDIR = $(WXWIN) - -TARGET=test -OBJECTS = $(TARGET).obj - -!include $(WXDIR)\src\makeprog.b32 - diff --git a/samples/thread/makefile.dos b/samples/thread/makefile.dos deleted file mode 100644 index 86a90c91f7..0000000000 --- a/samples/thread/makefile.dos +++ /dev/null @@ -1,65 +0,0 @@ -# -# File: makefile.dos -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile : Builds thread example (DOS). -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -WXDIR = $(WXWIN) - -!include $(WXDIR)\src\makemsc.env - -THISDIR = $(WXDIR)\samples\test - -!ifndef FINAL -FINAL=0 -!endif - -HEADERS = -SOURCES = test.$(SRCSUFF) -OBJECTS = test.obj - -all: test.exe - -wx: - cd $(WXDIR)\src\msw - nmake -f makefile.dos FINAL=$(FINAL) - cd $(THISDIR) - -wxclean: - cd $(WXDIR)\src\msw - nmake -f makefile.dos clean - cd $(THISDIR) - -test.exe: $(WXDIR)\src\msw\dummy.obj $(WXLIB) test.obj test.def test.res - link $(LINKFLAGS) @<< -test.obj $(WXDIR)\src\msw\dummy.obj, -test, -NUL, -$(LIBS), -test.def -; -<< - rc -K test.res - -test.obj: test.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -test.res : test.rc $(WXDIR)\include\wx\msw\wx.rc - rc -r /i$(WXDIR)\include test - -clean: - -erase *.obj - -erase *.exe - -erase *.res - -erase *.map - -erase *.sbr - -erase *.pdb diff --git a/samples/thread/makefile.g95 b/samples/thread/makefile.g95 deleted file mode 100644 index 859b723d26..0000000000 --- a/samples/thread/makefile.g95 +++ /dev/null @@ -1,37 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile for thread example (UNIX). - -WXDIR = ../.. - -# All common UNIX compiler flags and options are now in -# this central makefile. -include $(WXDIR)/src/makeg95.env - -OBJECTS = $(OBJDIR)/test.$(OBJSUFF) $(OBJDIR)/test_resources.$(OBJSUFF) - -all: $(OBJDIR) test$(GUISUFFIX)$(EXESUFF) - -wx: - -$(OBJDIR): - mkdir $(OBJDIR) - -test$(GUISUFFIX)$(EXESUFF): $(OBJECTS) $(WXLIB) - $(CC) $(LDFLAGS) -o test$(GUISUFFIX)$(EXESUFF) $(OBJECTS) $(LDLIBS) - -$(OBJDIR)/test.$(OBJSUFF): test.$(SRCSUFF) - $(CC) -c $(CPPFLAGS) -o $@ test.$(SRCSUFF) - -$(OBJDIR)/test_resources.o: test.rc - $(RESCOMP) -i test.rc -o $(OBJDIR)/test_resources.o $(RESFLAGS) - -clean: - rm -f $(OBJECTS) test$(GUISUFFIX).exe core *.rsc *.res diff --git a/samples/thread/makefile.unx b/samples/thread/makefile.unx deleted file mode 100644 index 14a225e23c..0000000000 --- a/samples/thread/makefile.unx +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1998 -# Updated: -# Copyright: (c) 1998 Julian Smart -# -# "%W% %G%" -# -# Makefile for thread example (UNIX). - -PROGRAM=test - -OBJECTS=$(PROGRAM).o - -include ../../src/makeprog.env - diff --git a/samples/thread/makefile.vc b/samples/thread/makefile.vc deleted file mode 100644 index 4ada748eda..0000000000 --- a/samples/thread/makefile.vc +++ /dev/null @@ -1,18 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: (c) Julian Smart -# -# Makefile : Builds sample (VC++, WIN32) -# Use FINAL=1 argument to nmake to build final version with no debug info. - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -PROGRAM=test -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.vc - diff --git a/samples/thread/makefile.wat b/samples/thread/makefile.wat deleted file mode 100644 index 81a83e42a9..0000000000 --- a/samples/thread/makefile.wat +++ /dev/null @@ -1,15 +0,0 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 -# -# - -WXDIR = $(%WXWIN) - -PROGRAM = test -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - diff --git a/samples/thread/test.cpp b/samples/thread/test.cpp deleted file mode 100644 index dce914e8e6..0000000000 --- a/samples/thread/test.cpp +++ /dev/null @@ -1,462 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: test.cpp -// Purpose: wxWindows thread sample -// Author: Julian Smart(minimal)/Guilhem Lavaux(thread test) -// Modified by: -// Created: 06/16/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart, Markus Holzem, Guilhem Lavaux -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -/* - TODO: - - 1. show how SetPriority() works. - 2. use worker threads to update progress controls instead of writing - messages - it will be more visual - */ - -#ifdef __GNUG__ - #pragma implementation "test.cpp" - #pragma interface "test.cpp" -#endif - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ - #pragma hdrstop -#endif - -#ifndef WX_PRECOMP - #include "wx/wx.h" -#endif - -#if !wxUSE_THREADS - #error "This sample requires thread support!" -#endif // wxUSE_THREADS - -#include "wx/thread.h" -#include "wx/dynarray.h" -#include "wx/time.h" - -// Define a new application type -class MyApp : public wxApp -{ -public: - bool OnInit(); -}; - -class MyThread; -WX_DEFINE_ARRAY(wxThread *, wxArrayThread); - -// Define a new frame type -class MyFrame: public wxFrame -{ -public: - // ctor - MyFrame(wxFrame *frame, const wxString& title, int x, int y, int w, int h); - - // operations - void WriteText(const wxString& text) { m_txtctrl->WriteText(text); } - - // callbacks - void OnQuit(wxCommandEvent& event); - void OnAbout(wxCommandEvent& event); - void OnClear(wxCommandEvent& event); - - void OnStartThread(wxCommandEvent& event); - void OnStartThreads(wxCommandEvent& event); - void OnStopThread(wxCommandEvent& event); - void OnPauseThread(wxCommandEvent& event); - void OnResumeThread(wxCommandEvent& event); - - void OnIdle(wxIdleEvent &event); - bool OnClose() { return TRUE; } - - // called by dying thread _in_that_thread_context_ - void OnThreadExit(wxThread *thread); - -private: - // helper function - creates a new thread (but doesn't run it) - MyThread *CreateThread(); - - // crit section protects access to all of the arrays below - wxCriticalSection m_critsect; - - // all the threads currently alive - as soon as the thread terminates, it's - // removed from the array - wxArrayThread m_threads; - - // both of these arrays are only valid between 2 iterations of OnIdle(), - // they're cleared each time it is excuted. - - // the array of threads which finished (either because they did their work - // or because they were explicitly stopped) - wxArrayThread m_terminated; - - // the array of threads which were stopped by the user and not terminated - // by themselves - these threads shouldn't be Delete()d second time from - // OnIdle() - wxArrayThread m_stopped; - - // just some place to put our messages in - wxTextCtrl *m_txtctrl; - - // remember the number of running threads and total number of threads - size_t m_nRunning, m_nCount; - - DECLARE_EVENT_TABLE() -}; - -class MyThread : public wxThread -{ -public: - MyThread(MyFrame *frame); - - // thread execution starts here - virtual void *Entry(); - - // called when the thread exits - whether it terminates normally or is - // stopped with Delete() (but not when it is Kill()ed!) - virtual void OnExit(); - - // write something to the text control - void WriteText(const wxString& text); - -public: - size_t m_count; - MyFrame *m_frame; -}; - -MyThread::MyThread(MyFrame *frame) - : wxThread() -{ - m_count = 0; - m_frame = frame; -} - -void MyThread::WriteText(const wxString& text) -{ - wxString msg; - msg << wxTime().FormatTime() << ": " << text; - - // before doing any GUI calls we must ensure that this thread is the only - // one doing it! - wxMutexGuiLocker guiLocker; - - m_frame->WriteText(msg); -} - -void MyThread::OnExit() -{ - m_frame->OnThreadExit(this); -} - -void *MyThread::Entry() -{ - wxString text; - - text.Printf("Thread 0x%x started.\n", GetID()); - WriteText(text); - - for ( m_count = 0; m_count < 10; m_count++ ) - { - // check if we were asked to exit - if ( TestDestroy() ) - break; - - text.Printf("[%u] Thread 0x%x here.\n", m_count, GetID()); - WriteText(text); - - // wxSleep() can't be called from non-GUI thread! - wxThread::Sleep(1000); - } - - text.Printf("Thread 0x%x finished.\n", GetID()); - WriteText(text); - - return NULL; -} - -// ID for the menu commands -enum -{ - TEST_QUIT = 1, - TEST_TEXT = 101, - TEST_ABOUT, - TEST_CLEAR, - TEST_START_THREAD = 201, - TEST_START_THREADS, - TEST_STOP_THREAD, - TEST_PAUSE_THREAD, - TEST_RESUME_THREAD -}; - -BEGIN_EVENT_TABLE(MyFrame, wxFrame) - EVT_MENU(TEST_QUIT, MyFrame::OnQuit) - EVT_MENU(TEST_ABOUT, MyFrame::OnAbout) - EVT_MENU(TEST_CLEAR, MyFrame::OnClear) - EVT_MENU(TEST_START_THREAD, MyFrame::OnStartThread) - EVT_MENU(TEST_START_THREADS, MyFrame::OnStartThreads) - EVT_MENU(TEST_STOP_THREAD, MyFrame::OnStopThread) - EVT_MENU(TEST_PAUSE_THREAD, MyFrame::OnPauseThread) - EVT_MENU(TEST_RESUME_THREAD, MyFrame::OnResumeThread) - - EVT_IDLE(MyFrame::OnIdle) -END_EVENT_TABLE() - -// Create a new application object -IMPLEMENT_APP (MyApp) - -// `Main program' equivalent, creating windows and returning main app frame -bool MyApp::OnInit() -{ - // Create the main frame window - MyFrame *frame = new MyFrame((wxFrame *)NULL, "wxWindows threads sample", - 50, 50, 450, 340); - - // Make a menubar - wxMenu *file_menu = new wxMenu; - - file_menu->Append(TEST_CLEAR, "&Clear log"); - file_menu->AppendSeparator(); - file_menu->Append(TEST_ABOUT, "&About"); - file_menu->AppendSeparator(); - file_menu->Append(TEST_QUIT, "E&xit"); - wxMenuBar *menu_bar = new wxMenuBar; - menu_bar->Append(file_menu, "&File"); - - wxMenu *thread_menu = new wxMenu; - thread_menu->Append(TEST_START_THREAD, "&Start a new thread"); - thread_menu->Append(TEST_START_THREADS, "Start &many threads at once"); - thread_menu->Append(TEST_STOP_THREAD, "S&top a running thread"); - thread_menu->AppendSeparator(); - thread_menu->Append(TEST_PAUSE_THREAD, "&Pause a running thread"); - thread_menu->Append(TEST_RESUME_THREAD, "&Resume suspended thread"); - menu_bar->Append(thread_menu, "&Thread"); - frame->SetMenuBar(menu_bar); - - // Show the frame - frame->Show(TRUE); - - SetTopWindow(frame); - - return TRUE; -} - -// My frame constructor -MyFrame::MyFrame(wxFrame *frame, const wxString& title, - int x, int y, int w, int h) - : wxFrame(frame, -1, title, wxPoint(x, y), wxSize(w, h)) -{ - m_nRunning = m_nCount = 0; - - CreateStatusBar(2); - - m_txtctrl = new wxTextCtrl(this, -1, "", wxPoint(0, 0), wxSize(0, 0), - wxTE_MULTILINE | wxTE_READONLY); - -} - -MyThread *MyFrame::CreateThread() -{ - MyThread *thread = new MyThread(this); - - if ( thread->Create() != wxTHREAD_NO_ERROR ) - { - wxLogError("Can't create thread!"); - } - - wxCriticalSectionLocker enter(m_critsect); - m_threads.Add(thread); - - return thread; -} - -void MyFrame::OnStartThreads(wxCommandEvent& WXUNUSED(event) ) -{ - static wxString s_str; - s_str = wxGetTextFromUser("How many threads to start: ", - "wxThread sample", - s_str, this); - if ( s_str.IsEmpty() ) - return; - - size_t count, n; - sscanf(s_str, "%u", &count); - if ( count == 0 ) - return; - - wxArrayThread threads; - - // first create them all... - for ( n = 0; n < count; n++ ) - { - threads.Add(CreateThread()); - } - - wxString msg; - msg.Printf("%d new threads created.", count); - SetStatusText(msg, 1); - - // ...and then start them - for ( n = 0; n < count; n++ ) - { - threads[n]->Run(); - } -} - -void MyFrame::OnStartThread(wxCommandEvent& WXUNUSED(event) ) -{ - MyThread *thread = CreateThread(); - - if ( thread->Run() != wxTHREAD_NO_ERROR ) - { - wxLogError("Can't start thread!"); - } - - SetStatusText("New thread started.", 1); -} - -void MyFrame::OnStopThread(wxCommandEvent& WXUNUSED(event) ) -{ - // stop the last thread - if ( m_threads.IsEmpty() ) - { - wxLogError("No thread to stop!"); - } - else - { - m_critsect.Enter(); - - wxThread *thread = m_threads.Last(); - m_stopped.Add(thread); - - // it's important to leave critical section before calling Delete() - // because delete will (implicitly) call OnThreadExit() which also tries - // to enter the same crit section - would dead lock. - m_critsect.Leave(); - - thread->Delete(); - - SetStatusText("Thread stopped.", 1); - } -} - -void MyFrame::OnResumeThread(wxCommandEvent& WXUNUSED(event) ) -{ - wxCriticalSectionLocker enter(m_critsect); - - // resume first suspended thread - size_t n = 0, count = m_threads.Count(); - while ( n < count && !m_threads[n]->IsPaused() ) - n++; - - if ( n == count ) - { - wxLogError("No thread to resume!"); - } - else - { - m_threads[n]->Resume(); - - SetStatusText("Thread resumed.", 1); - } -} - -void MyFrame::OnPauseThread(wxCommandEvent& WXUNUSED(event) ) -{ - wxCriticalSectionLocker enter(m_critsect); - - // pause last running thread - int n = m_threads.Count() - 1; - while ( n >= 0 && !m_threads[n]->IsRunning() ) - n--; - - if ( n < 0 ) - { - wxLogError("No thread to pause!"); - } - else - { - m_threads[n]->Pause(); - - SetStatusText("Thread paused.", 1); - } -} - -// set the frame title indicating the current number of threads -void MyFrame::OnIdle(wxIdleEvent &event) -{ - // first wait for all the threads which dies since the last call - { - wxCriticalSectionLocker enter(m_critsect); - - size_t nCount = m_terminated.GetCount(); - for ( size_t n = 0; n < nCount; n++ ) - { - // don't delete the threads which were stopped - they were already - // deleted in OnStopThread() - wxThread *thread = m_terminated[n]; - if ( m_stopped.Index(thread) == wxNOT_FOUND ) - thread->Delete(); - } - - m_stopped.Empty(); - m_terminated.Empty(); - } - - size_t nRunning = 0, - nCount = m_threads.Count(); - for ( size_t n = 0; n < nCount; n++ ) - { - if ( m_threads[n]->IsRunning() ) - nRunning++; - } - - if ( nCount != m_nCount || nRunning != m_nRunning ) - { - m_nRunning = nRunning; - m_nCount = nCount; - - wxLogStatus(this, "%u threads total, %u running.", nCount, nRunning); - } - //else: avoid flicker - don't print anything -} - -void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event) ) -{ - size_t count = m_threads.Count(); - for ( size_t i = 0; i < count; i++ ) - { - m_threads[i]->Delete(); - } - - Close(TRUE); -} - -void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event) ) -{ - wxMessageDialog dialog(this, "wxWindows multithreaded application sample\n" - "(c) 1998 Julian Smart, Guilhem Lavaux\n" - "(c) 1999 Vadim Zeitlin", - "About wxThread sample", - wxOK | wxICON_INFORMATION); - - dialog.ShowModal(); -} - -void MyFrame::OnClear(wxCommandEvent& WXUNUSED(event)) -{ - m_txtctrl->Clear(); -} - -void MyFrame::OnThreadExit(wxThread *thread) -{ - wxCriticalSectionLocker enter(m_critsect); - - m_threads.Remove(thread); - m_terminated.Add(thread); -} diff --git a/samples/thread/test.def b/samples/thread/test.def deleted file mode 100644 index 060bfe3fce..0000000000 --- a/samples/thread/test.def +++ /dev/null @@ -1,8 +0,0 @@ -NAME Minimal -DESCRIPTION 'Minimal wxWindows application' -EXETYPE WINDOWS -STUB 'WINSTUB.EXE' -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE -HEAPSIZE 4048 -STACKSIZE 16000 diff --git a/samples/thread/test.rc b/samples/thread/test.rc deleted file mode 100644 index 82bdf07561..0000000000 --- a/samples/thread/test.rc +++ /dev/null @@ -1,2 +0,0 @@ -#include "wx/msw/wx.rc" - diff --git a/samples/toolbar/.cvsignore b/samples/toolbar/.cvsignore deleted file mode 100644 index 7957c41216..0000000000 --- a/samples/toolbar/.cvsignore +++ /dev/null @@ -1,3 +0,0 @@ -Linux -linux-gnu -linux \ No newline at end of file diff --git a/samples/toolbar/Makefile b/samples/toolbar/Makefile deleted file mode 100644 index bccce53f76..0000000000 --- a/samples/toolbar/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../../setup/general/makeapp diff --git a/samples/toolbar/Makefile.in b/samples/toolbar/Makefile.in deleted file mode 100644 index 9e9b1b68eb..0000000000 --- a/samples/toolbar/Makefile.in +++ /dev/null @@ -1,26 +0,0 @@ -# WXXT base directory -WXBASEDIR=@WXBASEDIR@ - -# set the OS type for compilation -OS=@OS@ -# compile a library only -RULE=bin - -# define library name -BIN_TARGET=toolbar -# define library sources -BIN_SRC=\ -test.cpp - -#define library objects -BIN_OBJ=\ -test.o - -# additional things needed to link -BIN_LINK= - -# additional things needed to compile -ADD_COMPILE= - -# include the definitions now -include ../../../template.mak diff --git a/samples/toolbar/bitmaps/copy.bmp b/samples/toolbar/bitmaps/copy.bmp deleted file mode 100644 index 4551a06bfa79e0a42c1ffb7cdbb90fd4f699dce2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 238 zcmZvVK?*`K3`9pLxU9$U91{2|@hV+>tjiv)Cz3AyzP{vxy7<$~OeTT!c7JQf6T89- z%?kmn<${;(P#uFN<0A#FuUo(qgT{&F@ekspii W=d@ZzPG(Cb=QBs}_=7thzxV(viB<;y diff --git a/samples/toolbar/bitmaps/copy.xpm b/samples/toolbar/bitmaps/copy.xpm deleted file mode 100644 index 47565c1cae..0000000000 --- a/samples/toolbar/bitmaps/copy.xpm +++ /dev/null @@ -1,25 +0,0 @@ -/* XPM */ -static char *copy_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 4 1", -" c None", -". c Black", -"X c Gray100", -"o c #000080", -/* pixels */ -" ", -" ...... ", -" .XXXX.. ", -" .XXXX.X. ", -" .X..X.oooooo ", -" .XXXXXoXXXXoo ", -" .X....oXXXXoXo ", -" .XXXXXoX..Xoooo", -" .X....oXXXXXXXo", -" .XXXXXoX.....Xo", -" ......oXXXXXXXo", -" oX.....Xo", -" oXXXXXXXo", -" ooooooooo", -" " -}; diff --git a/samples/toolbar/bitmaps/cut.bmp b/samples/toolbar/bitmaps/cut.bmp deleted file mode 100644 index 15554338a01bc4d8f0a501c32237e84200e64583..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 238 zcmZvU!3}^Q5Cqr6gr}Ba8OD(CvKJo2^+{<|WDB@(K8*2TclNjo+kV075Ef~cCTYMZ z2hQ$)mH}PlY>+FWlp?l4?H9GSBqTFi~p=nI%+}YJ={H-mN0|?29BK#fUL#erbtT(lh^R?4vYy(d-6AGn1|j$rr}v KbDqI%Xjd+{i$y;G diff --git a/samples/toolbar/bitmaps/help.xpm b/samples/toolbar/bitmaps/help.xpm deleted file mode 100644 index 50fdb4157e..0000000000 --- a/samples/toolbar/bitmaps/help.xpm +++ /dev/null @@ -1,25 +0,0 @@ -/* XPM */ -static char *help_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 4 1", -" c None", -". c Black", -"X c Blue", -"o c #000080", -/* pixels */ -" ", -" ...... ", -" .XXXXX.. ", -" .XX...oX.. ", -" .X.. .X.. ", -" .X.. .XX.. ", -" .. .XX.. ", -" .XX.. ", -" .X.. ", -" .X.. ", -" .o.. ", -" .. ", -" .XX.. ", -" .XX.. ", -" ... " -}; diff --git a/samples/toolbar/bitmaps/new.bmp b/samples/toolbar/bitmaps/new.bmp deleted file mode 100644 index d66feb2384ad4c626a078c995c1a3e49af78ec3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 238 zcmbu2yA6Oa5JQcGL>b0l4tjP;1(ew=nJ8j|<6WY3bU0`GK9aK^RUId`!4(ELX-1{H u>6c`QQqJ8_T9s0iQsQ8(Wab^@`3kuPA_p->w)Xt4Pkz>06 diff --git a/samples/toolbar/bitmaps/new.xpm b/samples/toolbar/bitmaps/new.xpm deleted file mode 100644 index 754d2d20a2..0000000000 --- a/samples/toolbar/bitmaps/new.xpm +++ /dev/null @@ -1,24 +0,0 @@ -/* XPM */ -static char *new_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 3 1", -" c None", -". c Black", -"X c Gray100", -/* pixels */ -" ", -" ........ ", -" .XXXXXX.. ", -" .XXXXXX.X. ", -" .XXXXXX.... ", -" .XXXXXXXXX. ", -" .XXXXXXXXX. ", -" .XXXXXXXXX. ", -" .XXXXXXXXX. ", -" .XXXXXXXXX. ", -" .XXXXXXXXX. ", -" .XXXXXXXXX. ", -" .XXXXXXXXX. ", -" ........... ", -" " -}; diff --git a/samples/toolbar/bitmaps/open.bmp b/samples/toolbar/bitmaps/open.bmp deleted file mode 100644 index bbf93fe03364e63f3e18a3507a0e85ab8ea2f87d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 238 zcmXv{u@M3>3=;=;U&0ua+_3>YyQsonW~6N3OvKTr2(k@|B{{YeKb~(CUb3rr5zpcQ zCn>O}mP9XDa6kd~GO1FGG0<95V`X5i$V8neN$dxz4&8XX3!AZr-;ApY^eS-9oTLj~ Y^Hcc9z2|$wrXTtLH=Rc2n(WoWFRhqJ00000 diff --git a/samples/toolbar/bitmaps/open.xpm b/samples/toolbar/bitmaps/open.xpm deleted file mode 100644 index 54748e910d..0000000000 --- a/samples/toolbar/bitmaps/open.xpm +++ /dev/null @@ -1,26 +0,0 @@ -/* XPM */ -static char *open_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 5 1", -" c None", -". c Black", -"X c Yellow", -"o c Gray100", -"O c #bfbf00", -/* pixels */ -" ", -" ... ", -" . . .", -" ..", -" ... ...", -" .XoX....... ", -" .oXoXoXoXo. ", -" .XoXoXoXoX. ", -" .oXoX..........", -" .XoX.OOOOOOOOO.", -" .oo.OOOOOOOOO. ", -" .X.OOOOOOOOO. ", -" ..OOOOOOOOO. ", -" ........... ", -" " -}; diff --git a/samples/toolbar/bitmaps/page.bmp b/samples/toolbar/bitmaps/page.bmp deleted file mode 100644 index 3dbd4b05b4c2d1a4f046141d450caf34c1a3d470..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 714 zcmaJk)fu{chJ-2TT-iZmtVS?uc5roS;-EuD8k*^vaH9hj_d6X ziQgC358^U$kRpEdIqzx8X~Jz0i&xCtBKWwA%eHOw^mwIrw+KG&;&N&1L*Q{1Xmx8p zxBo0O*pac2@{B`!>-fgLdSDP(C2}M>_DcBv60g*0UKyHhy!Oc8UYD-XBeIyOWTry_ zTA4Yuua#Ixm?vFMcI3@F*>XSp02Lyo AJ^%m! diff --git a/samples/toolbar/bitmaps/paste.bmp b/samples/toolbar/bitmaps/paste.bmp deleted file mode 100644 index 564f514e0df7225f0a7adbe8457b41af537813bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 238 zcmZvVF%Ci@5Jbns$83OZ*I;# co}I%%@f6>ra3+S=gC69}eM%GII+SAI4J;x>B>(^b diff --git a/samples/toolbar/bitmaps/preview.bmp b/samples/toolbar/bitmaps/preview.bmp deleted file mode 100644 index da1f4dbc4be6c2dd8fb9d7cb71cc48a4a7c139ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 238 zcmZvVu?@p83pv2yNo4mlT?N_pr2ISnd1NHDM5O^cFcMc59&^> z)PfrwsOeYM05)2ipmU4fJIss+o(=cdQCu+!%TlZiKDH!a!aP2;C|UGpLD9M;zmsLJ XIp;lzIUm!ckI6HO{IjaYcZ_-fA4^nl diff --git a/samples/toolbar/bitmaps/preview.xpm b/samples/toolbar/bitmaps/preview.xpm deleted file mode 100644 index 0dfdca46e1..0000000000 --- a/samples/toolbar/bitmaps/preview.xpm +++ /dev/null @@ -1,26 +0,0 @@ -/* XPM */ -static char *preview_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 5 1", -" c Black", -". c None", -"X c Gray100", -"o c #808080", -"O c Cyan", -/* pixels */ -" .......", -" XXXXXXX ......", -" XXXXXXX . .....", -" XXXXXXX ....", -" XXXXXXXXXX ....", -" XXXXXXX ....", -" XXXXXX o..o ...", -" XXXXX oOO.oo ..", -" XXXXX .O..o. ..", -" XXXXX ....o. ..", -" XXXXX o..Ooo ..", -" XXXXXX o..o o..", -" XXXXXXX o .", -" XXXXXXXXXX . ", -" .. " -}; diff --git a/samples/toolbar/bitmaps/print.bmp b/samples/toolbar/bitmaps/print.bmp deleted file mode 100644 index 00319b55bb23c3c69cc051144d80e5275747c53e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 238 zcmZur!3_d23^Ni^o@EUFY`~vgA|YX<`*bfpod|VizM>j+f}Fx~Q7! zgtHKM7yg3|DAD^Sp<0YF#C}+nSj(MC$5#Ss27*aN<{l9dYV3`7rsq)3!X>4ws(){6V0MX5FKAjcylGXqN-n#XsS=YhW0WogZT{L^_i_GT%*k@+ph E1NJ~MtpET3 diff --git a/samples/toolbar/bitmaps/save.xpm b/samples/toolbar/bitmaps/save.xpm deleted file mode 100644 index 01b18f9340..0000000000 --- a/samples/toolbar/bitmaps/save.xpm +++ /dev/null @@ -1,25 +0,0 @@ -/* XPM */ -static char *save_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 4 1", -" c None", -". c Black", -"X c #808000", -"o c #808080", -/* pixels */ -" ", -" .............. ", -" .X. . . ", -" .X. ... ", -" .X. .X. ", -" .X. .X. ", -" .X. .X. ", -" .X. .X. ", -" .XX........oX. ", -" .XXXXXXXXXXXX. ", -" .XX.........X. ", -" .XX...... .X. ", -" .XX...... .X. ", -" .XX...... .X. ", -" ............. " -}; diff --git a/samples/toolbar/makefile.b32 b/samples/toolbar/makefile.b32 deleted file mode 100644 index 95ddc80d76..0000000000 --- a/samples/toolbar/makefile.b32 +++ /dev/null @@ -1,16 +0,0 @@ -# -# File: makefile.b32 -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: -# -# Makefile : Builds sample for 32-bit BC++ - -WXDIR = $(WXWIN) - -TARGET=test -OBJECTS = $(TARGET).obj - -!include $(WXDIR)\src\makeprog.b32 - diff --git a/samples/toolbar/makefile.bcc b/samples/toolbar/makefile.bcc deleted file mode 100644 index 669f01905a..0000000000 --- a/samples/toolbar/makefile.bcc +++ /dev/null @@ -1,19 +0,0 @@ -# -# File: makefile.bcc -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Builds a BC++ 16-bit sample - -!if "$(WXWIN)" == "" -!error You must define the WXWIN variable in autoexec.bat, e.g. WXWIN=c:\wx -!endif - -WXDIR = $(WXWIN) - -TARGET=test -OBJECTS=$(TARGET).obj - -!include $(WXDIR)\src\makeprog.bcc - diff --git a/samples/toolbar/makefile.dos b/samples/toolbar/makefile.dos deleted file mode 100644 index 13e3a4ce8e..0000000000 --- a/samples/toolbar/makefile.dos +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.dos -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Makefile : Builds 16-bit sample, VC++ 1.5 -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -WXDIR = $(WXWIN) - -TARGET=test -OBJECTS = $(TARGET).obj - -!include $(WXDIR)\src\makeprog.msc - diff --git a/samples/toolbar/makefile.g95 b/samples/toolbar/makefile.g95 deleted file mode 100644 index a16ac0faec..0000000000 --- a/samples/toolbar/makefile.g95 +++ /dev/null @@ -1,40 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile for Buttonbar example (UNIX). -# Change the WXDIR directory, and CPPFLAGS and LDFLAGS, for your system. - -WXDIR = ../.. - -# All common UNIX compiler flags and options are now in -# this central makefile. -include $(WXDIR)/src/makeg95.env - -TESTOBJECTS = $(OBJDIR)/test.$(OBJSUFF) $(OBJDIR)/test_resources.$(OBJSUFF) -TESTPROGRAM = test$(GUISUFFIX) - -all: $(OBJDIR) $(TESTPROGRAM) - -demo: $(TESTPROGRAM) - -$(OBJDIR): - mkdir $(OBJDIR) - -$(OBJDIR)/test.$(OBJSUFF): test.h test.$(SRCSUFF) - $(CC) -c $(CPPFLAGS) -o $@ test.$(SRCSUFF) - -$(TESTPROGRAM): $(TESTOBJECTS) $(WXLIB) - $(CC) $(LDFLAGS) -o test$(GUISUFFIX)$(EXESUFF) $(TESTOBJECTS) $(LDLIBS) - -$(OBJDIR)/test_resources.o: test.rc - $(RESCOMP) -i test.rc -o $(OBJDIR)/test_resources.o $(RESFLAGS) - -clean: - rm -f $(OBJECTS) test$(GUISUFFIX).exe $(TESTOBJECTS) core *.res *.rsc - diff --git a/samples/toolbar/makefile.unx b/samples/toolbar/makefile.unx deleted file mode 100644 index 0b249d4c88..0000000000 --- a/samples/toolbar/makefile.unx +++ /dev/null @@ -1,18 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1998 -# Updated: -# Copyright: (c) 1998 Julian Smart -# -# "%W% %G%" -# -# Makefile for toolbar example (UNIX). - -PROGRAM=test - -OBJECTS=$(PROGRAM).o - -include ../../src/makeprog.env - - diff --git a/samples/toolbar/makefile.vc b/samples/toolbar/makefile.vc deleted file mode 100644 index 4ada748eda..0000000000 --- a/samples/toolbar/makefile.vc +++ /dev/null @@ -1,18 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: (c) Julian Smart -# -# Makefile : Builds sample (VC++, WIN32) -# Use FINAL=1 argument to nmake to build final version with no debug info. - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -PROGRAM=test -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.vc - diff --git a/samples/toolbar/makefile.wat b/samples/toolbar/makefile.wat deleted file mode 100644 index 81a83e42a9..0000000000 --- a/samples/toolbar/makefile.wat +++ /dev/null @@ -1,15 +0,0 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 -# -# - -WXDIR = $(%WXWIN) - -PROGRAM = test -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - diff --git a/samples/toolbar/mondrian.ico b/samples/toolbar/mondrian.ico deleted file mode 100644 index 2310c5d275a87af295d5ea8dc79ea417a5e74c53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmZQzU<5)11px*Sc)`TLAO@s0fLH;D9e|jTfdxnc0Z - -#include "test.h" - -#if defined(__WXGTK__) || defined(__WXMOTIF__) -#include "mondrian.xpm" -#include "bitmaps/new.xpm" -#include "bitmaps/open.xpm" -#include "bitmaps/save.xpm" -#include "bitmaps/copy.xpm" -#include "bitmaps/cut.xpm" -// #include "bitmaps/paste.xpm" -#include "bitmaps/print.xpm" -#include "bitmaps/preview.xpm" -#include "bitmaps/help.xpm" -#endif - -IMPLEMENT_APP(MyApp) - -// The `main program' equivalent, creating the windows and returning the -// main frame -bool MyApp::OnInit(void) -{ - // Create the main frame window - MyFrame* frame = new MyFrame((wxFrame *) NULL, -1, (const wxString) "wxToolBar Sample", - wxPoint(100, 100), wxSize(450, 300)); - - // Give it a status line - frame->CreateStatusBar(); - - // Give it an icon - frame->SetIcon(wxICON(mondrian)); - - // Make a menubar - wxMenu *fileMenu = new wxMenu; - fileMenu->Append(wxID_EXIT, "E&xit"); - - wxMenu *helpMenu = new wxMenu; - helpMenu->Append(wxID_HELP, "&About"); - - wxMenuBar* menuBar = new wxMenuBar; - - menuBar->Append(fileMenu, "&File"); - menuBar->Append(helpMenu, "&Help"); - - // Associate the menu bar with the frame - frame->SetMenuBar(menuBar); - - // Create the toolbar - frame->CreateToolBar(wxNO_BORDER|wxHORIZONTAL|wxTB_FLAT, ID_TOOLBAR); - - frame->GetToolBar()->SetMargins( 2, 2 ); - - InitToolbar(frame->GetToolBar()); - - // Force a resize. This should probably be replaced by a call to a wxFrame - // function that lays out default decorations and the remaining content window. - wxSizeEvent event(wxSize(-1, -1), frame->GetId()); - frame->OnSize(event); - frame->Show(TRUE); - - frame->SetStatusText("Hello, wxWindows"); - - SetTopWindow(frame); - - return TRUE; -} - -bool MyApp::InitToolbar(wxToolBar* toolBar) -{ - // Set up toolbar - wxBitmap* toolBarBitmaps[8]; - -#ifdef __WXMSW__ - toolBarBitmaps[0] = new wxBitmap("icon1"); - toolBarBitmaps[1] = new wxBitmap("icon2"); - toolBarBitmaps[2] = new wxBitmap("icon3"); - toolBarBitmaps[3] = new wxBitmap("icon4"); - toolBarBitmaps[4] = new wxBitmap("icon5"); - toolBarBitmaps[5] = new wxBitmap("icon6"); - toolBarBitmaps[6] = new wxBitmap("icon7"); - toolBarBitmaps[7] = new wxBitmap("icon8"); -#else - toolBarBitmaps[0] = new wxBitmap( new_xpm ); - toolBarBitmaps[1] = new wxBitmap( open_xpm ); - toolBarBitmaps[2] = new wxBitmap( save_xpm ); - toolBarBitmaps[3] = new wxBitmap( copy_xpm ); - toolBarBitmaps[4] = new wxBitmap( cut_xpm ); -// toolBarBitmaps[5] = new wxBitmap( paste_xpm ); - toolBarBitmaps[5] = new wxBitmap( preview_xpm ); - toolBarBitmaps[6] = new wxBitmap( print_xpm ); - toolBarBitmaps[7] = new wxBitmap( help_xpm ); -#endif - -#ifdef __WXMSW__ - int width = 24; -#else - int width = 16; -#endif - int currentX = 5; - - toolBar->AddTool(wxID_NEW, *(toolBarBitmaps[0]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "New file"); - currentX += width + 5; - toolBar->AddTool(wxID_OPEN, *(toolBarBitmaps[1]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Open file"); - currentX += width + 5; - toolBar->AddTool(wxID_SAVE, *(toolBarBitmaps[2]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Save file"); - currentX += width + 5; - toolBar->AddSeparator(); - toolBar->AddTool(wxID_COPY, *(toolBarBitmaps[3]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Copy"); - currentX += width + 5; - toolBar->AddTool(wxID_CUT, *(toolBarBitmaps[4]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Cut"); - currentX += width + 5; - toolBar->AddTool(wxID_PASTE, *(toolBarBitmaps[5]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Paste"); - currentX += width + 5; - toolBar->AddSeparator(); - toolBar->AddTool(wxID_PRINT, *(toolBarBitmaps[6]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Print"); - currentX += width + 5; - toolBar->AddSeparator(); - toolBar->AddTool(wxID_HELP, *(toolBarBitmaps[7]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Help"); - - toolBar->Realize(); - - // Can delete the bitmaps since they're reference counted - int i; - for (i = 0; i < 8; i++) - delete toolBarBitmaps[i]; - - return TRUE; -} - -// wxID_HELP will be processed for the 'About' menu and the toolbar help button. - -BEGIN_EVENT_TABLE(MyFrame, wxFrame) - EVT_MENU(wxID_EXIT, MyFrame::OnQuit) - EVT_MENU(wxID_HELP, MyFrame::OnAbout) - EVT_CLOSE(MyFrame::OnCloseWindow) - EVT_TOOL_RANGE(wxID_OPEN, wxID_PASTE, MyFrame::OnToolLeftClick) - EVT_TOOL_ENTER(wxID_OPEN, MyFrame::OnToolEnter) -END_EVENT_TABLE() - -// Define my frame constructor -MyFrame::MyFrame(wxFrame* parent, wxWindowID id, const wxString& title, const wxPoint& pos, - const wxSize& size, long style): - wxFrame(parent, id, title, pos, size, style) -{ - m_textWindow = new wxTextCtrl(this, -1, "", wxPoint(0, 0), wxSize(-1, -1), wxTE_MULTILINE); -} - -void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) -{ - Close(TRUE); -} - -void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) -{ - (void)wxMessageBox("wxWindows toolbar sample", "About wxToolBar"); -} - -// Define the behaviour for the frame closing -// - must delete all frames except for the main one. -void MyFrame::OnCloseWindow(wxCloseEvent& WXUNUSED(event)) -{ - Destroy(); -} - -void MyFrame::OnToolLeftClick(wxCommandEvent& event) -{ - wxString str; - str.Printf("Clicked on tool %d", event.GetId()); - SetStatusText(str); -} - -void MyFrame::OnToolEnter(wxCommandEvent& event) -{ - if (event.GetSelection() > -1) - { - wxString str; - str.Printf("This is tool number %d", event.GetSelection()); - SetStatusText(str); - } - else - SetStatusText(""); -} - diff --git a/samples/toolbar/test.def b/samples/toolbar/test.def deleted file mode 100644 index 897b9dacbb..0000000000 --- a/samples/toolbar/test.def +++ /dev/null @@ -1,8 +0,0 @@ -NAME ToolTest -DESCRIPTION 'wxToolBar Sample' -EXETYPE WINDOWS -STUB 'WINSTUB.EXE' -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE -HEAPSIZE 1024 -STACKSIZE 8192 diff --git a/samples/toolbar/test.h b/samples/toolbar/test.h deleted file mode 100644 index 63da855c34..0000000000 --- a/samples/toolbar/test.h +++ /dev/null @@ -1,52 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: test.h -// Purpose: wxToolBar sample -// Author: Julian Smart -// Modified by: -// Created: 23/07/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -// Define a new application -class MyApp: public wxApp -{ - public: - bool OnInit(void); - bool InitToolbar(wxToolBar* toolBar); -}; - -class MyTimer : public wxTimer -{ -public: - MyTimer(wxFrame *frame) { m_frame = frame; } - - virtual void Notify() { wxLogStatus(m_frame, "Timer arrived!"); } - -private: - wxFrame *m_frame; -}; - -// Define a new frame -class MyFrame: public wxFrame -{ -public: - MyFrame(wxFrame *parent, wxWindowID id = -1, const wxString& title = "wxToolBar Sample", - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE); - - void OnCloseWindow(wxCloseEvent& event); - void OnQuit(wxCommandEvent& event); - void OnAbout(wxCommandEvent& event); - void OnToolLeftClick(wxCommandEvent& event); - void OnToolEnter(wxCommandEvent& event); - -private: - wxTextCtrl* m_textWindow; - - DECLARE_EVENT_TABLE() -}; - -#define ID_TOOLBAR 500 - diff --git a/samples/toolbar/test.rc b/samples/toolbar/test.rc deleted file mode 100644 index 6c9086d0c6..0000000000 --- a/samples/toolbar/test.rc +++ /dev/null @@ -1,13 +0,0 @@ -mondrian ICON "mondrian.ico" -#include "wx/msw/wx.rc" - -icon1 BITMAP "bitmaps/new.bmp" -icon2 BITMAP "bitmaps/open.bmp" -icon3 BITMAP "bitmaps/save.bmp" -icon4 BITMAP "bitmaps/copy.bmp" -icon5 BITMAP "bitmaps/cut.bmp" -icon6 BITMAP "bitmaps/paste.bmp" -icon7 BITMAP "bitmaps/print.bmp" - -icon8 BITMAP "bitmaps/help.bmp" - diff --git a/samples/treectrl/.cvsignore b/samples/treectrl/.cvsignore deleted file mode 100644 index 7957c41216..0000000000 --- a/samples/treectrl/.cvsignore +++ /dev/null @@ -1,3 +0,0 @@ -Linux -linux-gnu -linux \ No newline at end of file diff --git a/samples/treectrl/Makefile b/samples/treectrl/Makefile deleted file mode 100644 index bccce53f76..0000000000 --- a/samples/treectrl/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../../setup/general/makeapp diff --git a/samples/treectrl/Makefile.in b/samples/treectrl/Makefile.in deleted file mode 100644 index 8f091052bc..0000000000 --- a/samples/treectrl/Makefile.in +++ /dev/null @@ -1,26 +0,0 @@ -# WXXT base directory -WXBASEDIR=@WXBASEDIR@ - -# set the OS type for compilation -OS=@OS@ -# compile a library only -RULE=bin - -# define library name -BIN_TARGET=treetest -# define library sources -BIN_SRC=\ -treetest.cpp - -#define library objects -BIN_OBJ=\ -treetest.o - -# additional things needed to link -BIN_LINK= - -# additional things needed to compile -ADD_COMPILE= - -# include the definitions now -include ../../../template.mak diff --git a/samples/treectrl/bitmaps/file1.bmp b/samples/treectrl/bitmaps/file1.bmp deleted file mode 100644 index 9a0544b232721e18b22e955fb09d0aecf303084e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 246 zcmb76u@Qhk2#a_2IEHiByN)%Z{YX@{F~Hl{nTJ5geU9@+pG+w28v8D8A}#Qhy;IFj7@ygx{{^%n>1}SM$DOtv2 zlCJoiN4_NKe2^Au1>RxO5exWt8zC_iF&vgqwN|_*S|4i75#)2p=8vDg0W|PcSm#!L zfiIm0@iqdDGlQnP!xDa`^V!E|&DpTupO3!QR@&UZI-tMjuDxNrH}-nkN%m4N@aA_a FJpqxL*3JL` diff --git a/samples/treectrl/bitmaps/folder1.bmp b/samples/treectrl/bitmaps/folder1.bmp deleted file mode 100644 index dada286b64daeafc29cbe1abb95401624b3db837..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 246 zcmZ?r{l)+RWk5;;hy|dSk%0v)(EuhP1WXRX1IhpqLqh|E0+K)`!+`?_fHX+rKNvCm z{|{mTF%W`;Kzwunlm~$y9bnM#<99U(H2nC!9R!HyL(FaX0o1gkqoe?vfUP&SZtvm{`_HB2qB-9 zf(GTBYc(nu}C6AaoD0pBjeB)ZJH5J^>QMSWswUDMPn`8aB-=0Ml-AgfD*@PpCja_E+ T_r_T%*c$R5s2Azc-l_Bfjgso2 diff --git a/samples/treectrl/icon1.xpm b/samples/treectrl/icon1.xpm deleted file mode 100644 index f420ec9d5d..0000000000 --- a/samples/treectrl/icon1.xpm +++ /dev/null @@ -1,25 +0,0 @@ -/* XPM */ -static char * icon1_xpm[] = { -/* width height ncolors chars_per_pixel */ -"16 16 3 1", -/* colors */ -" s None c None", -". c #000000", -"+ c #ffffff", -/* pixels */ -" ", -" ........ ", -" .++++++.. ", -" .+.+.++.+. ", -" .++++++.... ", -" .+.+.+++++. ", -" .+++++++++. ", -" .+.+.+.+.+. ", -" .+++++++++. ", -" .+.+.+.+.+. ", -" .+++++++++. ", -" .+.+.+.+.+. ", -" .+++++++++. ", -" ........... ", -" ", -" "}; diff --git a/samples/treectrl/icon2.xpm b/samples/treectrl/icon2.xpm deleted file mode 100644 index 5718cbce7c..0000000000 --- a/samples/treectrl/icon2.xpm +++ /dev/null @@ -1,28 +0,0 @@ -/* XPM */ -static char * icon2_xpm[] = { -/* width height ncolors chars_per_pixel */ -"16 16 6 1", -/* colors */ -" s None c None", -". c #000000", -"+ c #c0c0c0", -"@ c #808080", -"# c #ffff00", -"$ c #ffffff", -/* pixels */ -" ", -" @@@@@ ", -" @#+#+#@ ", -" @#+#+#+#@@@@@@ ", -" @$$$$$$$$$$$$@.", -" @$#+#+#+#+#+#@.", -" @$+#+#+#+#+#+@.", -" @$#+#+#+#+#+#@.", -" @$+#+#+#+#+#+@.", -" @$#+#+#+#+#+#@.", -" @$+#+#+#+#+#+@.", -" @$#+#+#+#+#+#@.", -" @@@@@@@@@@@@@@.", -" ..............", -" ", -" "}; diff --git a/samples/treectrl/makefile.b32 b/samples/treectrl/makefile.b32 deleted file mode 100644 index ebd42c200d..0000000000 --- a/samples/treectrl/makefile.b32 +++ /dev/null @@ -1,16 +0,0 @@ -# -# File: makefile.b32 -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: -# -# Makefile : Builds sample for 32-bit BC++ - -WXDIR = $(WXWIN) - -TARGET=treetest -OBJECTS = $(TARGET).obj - -!include $(WXDIR)\src\makeprog.b32 - diff --git a/samples/treectrl/makefile.bcc b/samples/treectrl/makefile.bcc deleted file mode 100644 index 6956ffe0d3..0000000000 --- a/samples/treectrl/makefile.bcc +++ /dev/null @@ -1,19 +0,0 @@ -# -# File: makefile.bcc -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Builds a BC++ 16-bit sample - -!if "$(WXWIN)" == "" -!error You must define the WXWIN variable in autoexec.bat, e.g. WXWIN=c:\wx -!endif - -WXDIR = $(WXWIN) - -TARGET=treetest -OBJECTS=$(TARGET).obj - -!include $(WXDIR)\src\makeprog.bcc - diff --git a/samples/treectrl/makefile.dos b/samples/treectrl/makefile.dos deleted file mode 100644 index c1d52b22bf..0000000000 --- a/samples/treectrl/makefile.dos +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.dos -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Makefile : Builds 16-bit sample, VC++ 1.5 -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -WXDIR = $(WXWIN) - -TARGET=treetest -OBJECTS = $(TARGET).obj - -!include $(WXDIR)\src\makeprog.msc - diff --git a/samples/treectrl/makefile.g95 b/samples/treectrl/makefile.g95 deleted file mode 100644 index a4123a8ad4..0000000000 --- a/samples/treectrl/makefile.g95 +++ /dev/null @@ -1,38 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile for treetest example (UNIX). - -WXDIR = ../.. - -# All common UNIX compiler flags and options are now in -# this central makefile. -include $(WXDIR)/src/makeg95.env - -OBJECTS = $(OBJDIR)/treetest.$(OBJSUFF) $(OBJDIR)/treetest_resources.$(OBJSUFF) - -all: $(OBJDIR) treetest$(GUISUFFIX)$(EXESUFF) - -wx: - -$(OBJDIR): - mkdir $(OBJDIR) - -treetest$(GUISUFFIX)$(EXESUFF): $(OBJECTS) $(WXLIB) - $(CC) $(LDFLAGS) -o treetest$(GUISUFFIX)$(EXESUFF) $(OBJECTS) $(LDLIBS) - -$(OBJDIR)/treetest.$(OBJSUFF): treetest.$(SRCSUFF) - $(CC) -c $(CPPFLAGS) -o $@ treetest.$(SRCSUFF) - -$(OBJDIR)/treetest_resources.o: treetest.rc - $(RESCOMP) -i treetest.rc -o $(OBJDIR)/treetest_resources.o $(RESFLAGS) - - -clean: - rm -f $(OBJECTS) treetest$(GUISUFFIX).exe core *.rsc *.res diff --git a/samples/treectrl/makefile.unx b/samples/treectrl/makefile.unx deleted file mode 100644 index aa0c92a4ad..0000000000 --- a/samples/treectrl/makefile.unx +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1998 -# Updated: -# Copyright: (c) 1998 Julian Smart -# -# "%W% %G%" -# -# Makefile for treectrl example (UNIX). - -PROGRAM=treetest - -OBJECTS=$(PROGRAM).o - -include ../../src/makeprog.env - diff --git a/samples/treectrl/makefile.vc b/samples/treectrl/makefile.vc deleted file mode 100644 index e784412750..0000000000 --- a/samples/treectrl/makefile.vc +++ /dev/null @@ -1,18 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: (c) Julian Smart -# -# Makefile : Builds sample (VC++, WIN32) -# Use FINAL=1 argument to nmake to build final version with no debug info. - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -PROGRAM=treetest -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.vc - diff --git a/samples/treectrl/makefile.wat b/samples/treectrl/makefile.wat deleted file mode 100644 index 1e789d7fc5..0000000000 --- a/samples/treectrl/makefile.wat +++ /dev/null @@ -1,15 +0,0 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 -# -# - -WXDIR = $(%WXWIN) - -PROGRAM = treetest -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - diff --git a/samples/treectrl/mondrian.ico b/samples/treectrl/mondrian.ico deleted file mode 100644 index 2310c5d275a87af295d5ea8dc79ea417a5e74c53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmZQzU<5)11px*Sc)`TLAO@s0fLH;D9e|jTfdxnc0ZShow(TRUE); - SetTopWindow(frame); - - return TRUE; -} - - -// My frame constructor -MyFrame::MyFrame(const wxString& title, int x, int y, int w, int h) - : wxFrame((wxFrame *)NULL, -1, title, wxPoint(x, y), wxSize(w, h)) -{ - // This reduces flicker effects - even better would be to define - // OnEraseBackground to do nothing. When the tree control's scrollbars are - // show or hidden, the frame is sent a background erase event. - SetBackgroundColour(wxColour(255, 255, 255)); - - // Give it an icon - SetIcon(wxICON(mondrian)); - - // Make a menubar - wxMenu *file_menu = new wxMenu, - *tree_menu = new wxMenu; - - file_menu->Append(TreeTest_About, "&About..."); - file_menu->AppendSeparator(); - file_menu->Append(TreeTest_Quit, "E&xit"); - - tree_menu->Append(TreeTest_Dump, "D&ump tree items"); - tree_menu->Append(TreeTest_Recreate, "&Recreate the tree"); - tree_menu->AppendSeparator(); - tree_menu->Append(TreeTest_Delete, "&Delete this item"); - tree_menu->Append(TreeTest_DeleteChildren, "Delete &children"); - tree_menu->Append(TreeTest_DeleteAll, "Delete &all items"); - tree_menu->AppendSeparator(); - tree_menu->Append(TreeTest_Sort, "Sort children of current item"); - tree_menu->Append(TreeTest_SortRev, "Sort in reversed order"); - tree_menu->Append(TreeTest_Rename, "Rename item..."); - tree_menu->AppendSeparator(); - tree_menu->Append(TreeTest_Bold, "Make item &bold"); - tree_menu->Append(TreeTest_UnBold, "Make item ¬ bold"); - - wxMenuBar *menu_bar = new wxMenuBar; - menu_bar->Append(file_menu, "&File"); - menu_bar->Append(tree_menu, "&Tree"); - SetMenuBar(menu_bar); - - // Make a panel with a message - m_treeCtrl = new MyTreeCtrl(this, TreeTest_Ctrl, - wxDefaultPosition, wxDefaultSize, - wxTR_HAS_BUTTONS | wxSUNKEN_BORDER); - wxTextCtrl *textCtrl = new wxTextCtrl(this, -1, "", - wxDefaultPosition, wxDefaultSize, - wxTE_MULTILINE | wxSUNKEN_BORDER); - - wxLayoutConstraints *c = new wxLayoutConstraints; - c->top.SameAs(this, wxTop); - c->left.SameAs(this, wxLeft); - c->right.SameAs(this, wxRight); - c->height.PercentOf(this, wxHeight, 66); - m_treeCtrl->SetConstraints(c); - - c = new wxLayoutConstraints; - c->top.Below(m_treeCtrl); - c->left.SameAs(this, wxLeft); - c->right.SameAs(this, wxRight); - c->bottom.SameAs(this, wxBottom); - textCtrl->SetConstraints(c); - SetAutoLayout(TRUE); - - // create a status bar with 3 panes - CreateStatusBar(3); - SetStatusText("", 0); - -#ifdef __WXMOTIF__ - // For some reason, we get a memcpy crash in wxLogStream::DoLogStream - // on gcc/wxMotif, if we use wxLogTextCtl. Maybe it's just gcc? - delete wxLog::SetActiveTarget(new wxLogStderr); -#else - // set our text control as the log target - wxLogTextCtrl *logWindow = new wxLogTextCtrl(textCtrl); - delete wxLog::SetActiveTarget(logWindow); -#endif -} - -MyFrame::~MyFrame() -{ - delete wxLog::SetActiveTarget(NULL); -} - -void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) -{ - Close(TRUE); -} - -void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) -{ - wxMessageBox("Tree test sample\n" - "Julian Smart (c) 1997,\n" - "Vadim Zeitlin (c) 1998", - "About tree test", - wxOK | wxICON_INFORMATION, this); -} - -void MyFrame::OnRename(wxCommandEvent& WXUNUSED(event)) -{ - wxTreeItemId item = m_treeCtrl->GetSelection(); - - CHECK_ITEM( item ); - - static wxString s_text; - s_text = wxGetTextFromUser("New name: ", "Tree sample question", - s_text, this); - if ( !s_text.IsEmpty() ) - { - m_treeCtrl->SetItemText(item, s_text); - } -} - -void MyFrame::DoSort(bool reverse) -{ - wxTreeItemId item = m_treeCtrl->GetSelection(); - - CHECK_ITEM( item ); - - m_treeCtrl->DoSortChildren(item, reverse); -} - -void MyFrame::OnDump(wxCommandEvent& WXUNUSED(event)) -{ - wxTreeItemId root = m_treeCtrl->GetSelection(); - - CHECK_ITEM( root ); - - m_treeCtrl->GetItemsRecursively(root, -1); -} - -void MyFrame::DoSetBold(bool bold) -{ - wxTreeItemId item = m_treeCtrl->GetSelection(); - - CHECK_ITEM( item ); - - m_treeCtrl->SetItemBold(item, bold); -} - -void MyFrame::OnDelete(wxCommandEvent& WXUNUSED(event)) -{ - wxTreeItemId item = m_treeCtrl->GetSelection(); - - CHECK_ITEM( item ); - - m_treeCtrl->Delete(item); -} - -void MyFrame::OnDeleteChildren(wxCommandEvent& WXUNUSED(event)) -{ - wxTreeItemId item = m_treeCtrl->GetSelection(); - - CHECK_ITEM( item ); - - m_treeCtrl->DeleteChildren(item); -} - -void MyFrame::OnDeleteAll(wxCommandEvent& WXUNUSED(event)) -{ - m_treeCtrl->DeleteAllItems(); -} - -void MyFrame::OnRecreate(wxCommandEvent& event) -{ - OnDeleteAll(event); - m_treeCtrl->AddTestItemsToTree(3, 2); -} - -// MyTreeCtrl implementation -IMPLEMENT_DYNAMIC_CLASS(MyTreeCtrl, wxTreeCtrl) - -MyTreeCtrl::MyTreeCtrl(wxWindow *parent, const wxWindowID id, - const wxPoint& pos, const wxSize& size, - long style) - : wxTreeCtrl(parent, id, pos, size, style) -{ - m_reverseSort = FALSE; - - // Make an image list containing small icons - m_imageListNormal = new wxImageList(16, 16, TRUE); - - // should correspond to TreeCtrlIcon_xxx enum -#if defined(__WXMSW__) && defined(__WIN16__) - // This is required in 16-bit Windows mode only because we can't load a specific (16x16) - // icon image, so it comes out blank (using the empty 32x32 icon). - m_imageListNormal->Add(wxBitmap("bitmap1", wxBITMAP_TYPE_BMP_RESOURCE)); - m_imageListNormal->Add(wxBitmap("bitmap2", wxBITMAP_TYPE_BMP_RESOURCE)); -#else - m_imageListNormal->Add(wxICON(icon1)); - m_imageListNormal->Add(wxICON(icon2)); -#endif - - SetImageList(m_imageListNormal); - - // Add some items to the tree - AddTestItemsToTree(3, 2); -} - -MyTreeCtrl::~MyTreeCtrl() -{ - delete m_imageListNormal; -} - -int MyTreeCtrl::OnCompareItems(const wxTreeItemId& item1, - const wxTreeItemId& item2) -{ - if ( m_reverseSort ) - { - // just exchange 1st and 2nd items - return wxTreeCtrl::OnCompareItems(item2, item1); - } - else - { - return wxTreeCtrl::OnCompareItems(item1, item2); - } -} - -void MyTreeCtrl::AddItemsRecursively(const wxTreeItemId& idParent, - size_t numChildren, - size_t depth, - size_t folder) -{ - if ( depth > 0 ) - { - wxString str; - for ( size_t n = 0; n < numChildren; n++ ) - { - // at depth 1 elements won't have any more children - if (depth == 1) - str.Printf("%s child %d.%d", "File", folder, n + 1); - else - str.Printf("%s child %d","Folder", n + 1); - - int image = depth == 1 ? TreeCtrlIcon_File : TreeCtrlIcon_Folder; - wxTreeItemId id = AppendItem(idParent, str, image, image, - new MyTreeItemData(str)); - AddItemsRecursively(id, numChildren, depth - 1, n + 1); - } - } - //else: done! -} - -void MyTreeCtrl::AddTestItemsToTree(size_t numChildren, - size_t depth) -{ - wxTreeItemId rootId = AddRoot("Root", - TreeCtrlIcon_Folder, TreeCtrlIcon_Folder, - new MyTreeItemData("Root item")); - - AddItemsRecursively(rootId, numChildren, depth, 0); -} - -void MyTreeCtrl::GetItemsRecursively(const wxTreeItemId& idParent, long cookie) -{ - wxTreeItemId id; - - if( cookie == -1 ) - id = GetFirstChild(idParent, cookie); - else - id = GetNextChild(idParent, cookie); - - if(id <= 0) - return; - - wxString text=GetItemText(id); - wxLogMessage(text); - - if (ItemHasChildren(id)) - GetItemsRecursively(id,-1); - - GetItemsRecursively(idParent, cookie); -} - - -// avoid repetition -#define TREE_EVENT_HANDLER(name) \ - void MyTreeCtrl::name(wxTreeEvent& WXUNUSED(event)) \ - { \ - wxLogMessage(#name); \ - } - -TREE_EVENT_HANDLER(OnBeginDrag) -TREE_EVENT_HANDLER(OnBeginRDrag) -TREE_EVENT_HANDLER(OnBeginLabelEdit) -TREE_EVENT_HANDLER(OnEndLabelEdit) -TREE_EVENT_HANDLER(OnDeleteItem) -TREE_EVENT_HANDLER(OnGetInfo) -TREE_EVENT_HANDLER(OnSetInfo) -TREE_EVENT_HANDLER(OnItemExpanded) -TREE_EVENT_HANDLER(OnItemExpanding) -TREE_EVENT_HANDLER(OnItemCollapsed) -TREE_EVENT_HANDLER(OnSelChanged) -TREE_EVENT_HANDLER(OnSelChanging) - -#undef TREE_EVENT_HANDLER - -void MyTreeCtrl::OnItemCollapsing(wxTreeEvent& event) -{ - wxLogMessage("OnItemCollapsing"); - - // for testing, prevent the user from collapsing the root item - wxTreeItemId itemId = event.GetItem(); - if ( !GetParent(itemId).IsOk() ) - { - wxMessageBox("You can't collapse the root item."); - - event.Veto(); - } -} - -void MyTreeCtrl::OnTreeKeyDown(wxTreeEvent&WXUNUSED(event)) -{ - wxLogMessage("OnTreeKeyDown"); -} - -void MyTreeCtrl::OnItemActivated(wxTreeEvent&WXUNUSED(event)) -{ - // show some info about this item - wxTreeItemId itemId = GetSelection(); - MyTreeItemData *item = (MyTreeItemData *)GetItemData(itemId); - - if ( item != NULL ) - { - item->ShowInfo(this); - } - - wxLogMessage("OnItemActivated"); -} - -static inline const char *Bool2String(bool b) -{ - return b ? "" : "not "; -} - -void MyTreeItemData::ShowInfo(wxTreeCtrl *tree) -{ - wxLogMessage("Item '%s': %sselected, %sexpanded, %sbold,\n" - "%u children (%u immediately under this item).", - m_desc.c_str(), - Bool2String(tree->IsSelected(GetId())), - Bool2String(tree->IsExpanded(GetId())), - Bool2String(tree->IsBold(GetId())), - tree->GetChildrenCount(GetId()), - tree->GetChildrenCount(GetId(), FALSE)); -} diff --git a/samples/treectrl/treetest.def b/samples/treectrl/treetest.def deleted file mode 100644 index 714586eb59..0000000000 --- a/samples/treectrl/treetest.def +++ /dev/null @@ -1,8 +0,0 @@ -NAME TreeCtrl -DESCRIPTION 'TreeCtrl wxWindows application' -EXETYPE WINDOWS -STUB 'WINSTUB.EXE' -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE -HEAPSIZE 1024 -STACKSIZE 8192 diff --git a/samples/treectrl/treetest.h b/samples/treectrl/treetest.h deleted file mode 100644 index e0299c0045..0000000000 --- a/samples/treectrl/treetest.h +++ /dev/null @@ -1,140 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: treetest.h -// Purpose: wxTreeCtrl sample -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -// Define a new application type -class MyApp : public wxApp -{ -public: - bool OnInit(); -}; - -class MyTreeItemData : public wxTreeItemData -{ -public: - MyTreeItemData(const wxString& desc) : m_desc(desc) { } - - void ShowInfo(wxTreeCtrl *tree); - -private: - wxString m_desc; -}; - -class MyTreeCtrl : public wxTreeCtrl -{ -public: - enum - { - TreeCtrlIcon_File, - TreeCtrlIcon_Folder - }; - - MyTreeCtrl() { } - MyTreeCtrl(wxWindow *parent, const wxWindowID id, - const wxPoint& pos, const wxSize& size, - long style); - virtual ~MyTreeCtrl(); - - void OnBeginDrag(wxTreeEvent& event); - void OnBeginRDrag(wxTreeEvent& event); - void OnBeginLabelEdit(wxTreeEvent& event); - void OnEndLabelEdit(wxTreeEvent& event); - void OnDeleteItem(wxTreeEvent& event); - void OnGetInfo(wxTreeEvent& event); - void OnSetInfo(wxTreeEvent& event); - void OnItemExpanded(wxTreeEvent& event); - void OnItemExpanding(wxTreeEvent& event); - void OnItemCollapsed(wxTreeEvent& event); - void OnItemCollapsing(wxTreeEvent& event); - void OnSelChanged(wxTreeEvent& event); - void OnSelChanging(wxTreeEvent& event); - void OnTreeKeyDown(wxTreeEvent& event); - void OnItemActivated(wxTreeEvent& event); - - void GetItemsRecursively(const wxTreeItemId& idParent, long cookie); - - void AddTestItemsToTree(size_t numChildren, - size_t depth); - - void DoSortChildren(const wxTreeItemId& item, bool reverse = FALSE) - { m_reverseSort = reverse; wxTreeCtrl::SortChildren(item); } - -protected: - virtual int OnCompareItems(const wxTreeItemId& item1, - const wxTreeItemId& item2); - -private: - void AddItemsRecursively(const wxTreeItemId& idParent, - size_t nChildren, - size_t depth, - size_t folder); - - wxImageList *m_imageListNormal; - bool m_reverseSort; // flag for OnCompareItems - - // NB: due to an ugly wxMSW hack you _must_ use DECLARE_DYNAMIC_CLASS() - // if you want your overloaded OnCompareItems() to be called. - // OTOH, if you don't want it you may omit the next line - this will - // make default (alphabetical) sorting much faster under wxMSW. - DECLARE_DYNAMIC_CLASS(MyTreeCtrl) - DECLARE_EVENT_TABLE() -}; - -// Define a new frame type -class MyFrame: public wxFrame -{ -public: - // ctor and dtor - MyFrame(const wxString& title, int x, int y, int w, int h); - virtual ~MyFrame(); - - // menu callbacks - void OnQuit(wxCommandEvent& event); - void OnAbout(wxCommandEvent& event); - void OnDump(wxCommandEvent& event); - void OnDelete(wxCommandEvent& event); - void OnDeleteChildren(wxCommandEvent& event); - void OnDeleteAll(wxCommandEvent& event); - void OnRecreate(wxCommandEvent& event); - - void OnSetBold(wxCommandEvent& WXUNUSED(event)) { DoSetBold(TRUE); } - void OnClearBold(wxCommandEvent& WXUNUSED(event)) { DoSetBold(FALSE); } - - void OnRename(wxCommandEvent& event); - void OnSort(wxCommandEvent& event) { DoSort(); } - void OnSortRev(wxCommandEvent& event) { DoSort(TRUE); } - -private: - void DoSort(bool reverse = FALSE); - - MyTreeCtrl *m_treeCtrl; - - void DoSetBold(bool bold = TRUE); - - DECLARE_EVENT_TABLE() -}; - -// menu and control ids -enum -{ - TreeTest_Quit, - TreeTest_About, - TreeTest_Dump, - TreeTest_Sort, - TreeTest_SortRev, - TreeTest_Bold, - TreeTest_UnBold, - TreeTest_Rename, - TreeTest_Delete, - TreeTest_DeleteChildren, - TreeTest_DeleteAll, - TreeTest_Recreate, - TreeTest_Ctrl = 100 -}; \ No newline at end of file diff --git a/samples/treectrl/treetest.rc b/samples/treectrl/treetest.rc deleted file mode 100644 index 550dc2f135..0000000000 --- a/samples/treectrl/treetest.rc +++ /dev/null @@ -1,10 +0,0 @@ -mondrian ICON "mondrian.ico" -aaaa ICON "mondrian.ico" -#include "wx/msw/wx.rc" - -icon1 ICON "bitmaps\\file1.ico" -icon2 ICON "bitmaps\\folder1.ico" - -bitmap1 BITMAP "bitmaps\\file1.bmp" -bitmap2 BITMAP "bitmaps\\folder1.bmp" - diff --git a/samples/typetest/.cvsignore b/samples/typetest/.cvsignore deleted file mode 100644 index 7957c41216..0000000000 --- a/samples/typetest/.cvsignore +++ /dev/null @@ -1,3 +0,0 @@ -Linux -linux-gnu -linux \ No newline at end of file diff --git a/samples/typetest/Makefile b/samples/typetest/Makefile deleted file mode 100644 index bccce53f76..0000000000 --- a/samples/typetest/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../../setup/general/makeapp diff --git a/samples/typetest/Makefile.in b/samples/typetest/Makefile.in deleted file mode 100644 index 6514d719b4..0000000000 --- a/samples/typetest/Makefile.in +++ /dev/null @@ -1,26 +0,0 @@ -# WXXT base directory -WXBASEDIR=@WXBASEDIR@ - -# set the OS type for compilation -OS=@OS@ -# compile a library only -RULE=bin - -# define library name -BIN_TARGET=typetest -# define library sources -BIN_SRC=\ -typetest.cpp - -#define library objects -BIN_OBJ=\ -typetest.o - -# additional things needed to link -BIN_LINK= - -# additional things needed to compile -ADD_COMPILE= - -# include the definitions now -include ../../../template.mak diff --git a/samples/typetest/makefile.b32 b/samples/typetest/makefile.b32 deleted file mode 100644 index 7c366bcdde..0000000000 --- a/samples/typetest/makefile.b32 +++ /dev/null @@ -1,16 +0,0 @@ -# -# File: makefile.b32 -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: -# -# Makefile : Builds sample for 32-bit BC++ - -WXDIR = $(WXWIN) - -TARGET=typetest -OBJECTS = $(TARGET).obj - -!include $(WXDIR)\src\makeprog.b32 - diff --git a/samples/typetest/makefile.bcc b/samples/typetest/makefile.bcc deleted file mode 100644 index 0d0fee1bbc..0000000000 --- a/samples/typetest/makefile.bcc +++ /dev/null @@ -1,19 +0,0 @@ -# -# File: makefile.bcc -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Builds a BC++ 16-bit sample - -!if "$(WXWIN)" == "" -!error You must define the WXWIN variable in autoexec.bat, e.g. WXWIN=c:\wx -!endif - -WXDIR = $(WXWIN) - -TARGET=typetest -OBJECTS=$(TARGET).obj - -!include $(WXDIR)\src\makeprog.bcc - diff --git a/samples/typetest/makefile.dos b/samples/typetest/makefile.dos deleted file mode 100644 index 837e509b02..0000000000 --- a/samples/typetest/makefile.dos +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.dos -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Makefile : Builds 16-bit sample, VC++ 1.5 -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -WXDIR = $(WXWIN) - -TARGET=typetest -OBJECTS = $(TARGET).obj - -!include $(WXDIR)\src\makeprog.msc - diff --git a/samples/typetest/makefile.g95 b/samples/typetest/makefile.g95 deleted file mode 100644 index 692a5095ad..0000000000 --- a/samples/typetest/makefile.g95 +++ /dev/null @@ -1,37 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile for typetest example (UNIX). - -WXDIR = ../.. - -# All common UNIX compiler flags and options are now in -# this central makefile. -include $(WXDIR)/src/makeg95.env - -OBJECTS = $(OBJDIR)/typetest.$(OBJSUFF) $(OBJDIR)/typetest_resources.$(OBJSUFF) - -all: $(OBJDIR) typetest$(GUISUFFIX)$(EXESUFF) - -wx: - -$(OBJDIR): - mkdir $(OBJDIR) - -typetest$(GUISUFFIX)$(EXESUFF): $(OBJECTS) $(WXLIB) - $(CC) $(LDFLAGS) -o typetest$(GUISUFFIX)$(EXESUFF) $(OBJECTS) $(LDLIBS) - -$(OBJDIR)/typetest.$(OBJSUFF): typetest.$(SRCSUFF) - $(CC) -c $(CPPFLAGS) -o $@ typetest.$(SRCSUFF) - -$(OBJDIR)/typetest_resources.o: typetest.rc - $(RESCOMP) -i typetest.rc -o $(OBJDIR)/typetest_resources.o $(RESFLAGS) - -clean: - rm -f $(OBJECTS) typetest$(GUISUFFIX).exe core *.rsc *.res diff --git a/samples/typetest/makefile.unx b/samples/typetest/makefile.unx deleted file mode 100644 index 44f21e1899..0000000000 --- a/samples/typetest/makefile.unx +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1998 -# Updated: -# Copyright: (c) 1998 Julian Smart -# -# "%W% %G%" -# -# Makefile for typetest example (UNIX). - -PROGRAM=typetest - -OBJECTS=$(PROGRAM).o - -include ../../src/makeprog.env - diff --git a/samples/typetest/makefile.vc b/samples/typetest/makefile.vc deleted file mode 100644 index f6b3d288bc..0000000000 --- a/samples/typetest/makefile.vc +++ /dev/null @@ -1,18 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: (c) Julian Smart -# -# Makefile : Builds sample (VC++, WIN32) -# Use FINAL=1 argument to nmake to build final version with no debug info. - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -PROGRAM=typetest -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.vc - diff --git a/samples/typetest/makefile.wat b/samples/typetest/makefile.wat deleted file mode 100644 index a96f825f07..0000000000 --- a/samples/typetest/makefile.wat +++ /dev/null @@ -1,15 +0,0 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 -# -# - -WXDIR = $(%WXWIN) - -PROGRAM = typetest -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - diff --git a/samples/typetest/mondrian.ico b/samples/typetest/mondrian.ico deleted file mode 100644 index 2310c5d275a87af295d5ea8dc79ea417a5e74c53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmZQzU<5)11px*Sc)`TLAO@s0fLH;D9e|jTfdxnc0ZSetIcon(wxICON(mondrian)); - - // Make a menubar - wxMenu *file_menu = new wxMenu; - - file_menu->Append(TYPES_ABOUT, "&About"); - file_menu->AppendSeparator(); - file_menu->Append(TYPES_DATE, "&Date test"); - file_menu->Append(TYPES_TIME, "&Time test"); - file_menu->Append(TYPES_VARIANT, "&Variant test"); - file_menu->AppendSeparator(); - file_menu->Append(TYPES_QUIT, "E&xit"); - wxMenuBar *menu_bar = new wxMenuBar; - menu_bar->Append(file_menu, "&File"); - frame->SetMenuBar(menu_bar); - - m_textCtrl = new wxTextCtrl(frame, -1, "", wxPoint(0, 0), wxDefaultSize, wxTE_MULTILINE); - - // Show the frame - frame->Show(TRUE); - - SetTopWindow(frame); - - return TRUE; -} - -void MyApp::DoTimeDemo(wxCommandEvent& WXUNUSED(event)) -{ - wxTextCtrl& textCtrl = * GetTextCtrl(); - - textCtrl.Clear(); - cout << "\nTest class wxTime" << endl; - wxTime now; - textCtrl << "It is now " << (wxString) now << "\n"; -} - -void MyApp::DoDateDemo(wxCommandEvent& WXUNUSED(event)) -{ - wxTextCtrl& textCtrl = * GetTextCtrl(); - - textCtrl.Clear(); - textCtrl << "\nTest class wxDate" << "\n"; - - // Various versions of the constructors - // and various output - - wxDate x(10,20,1962); - - textCtrl << x.FormatDate(wxFULL) << " (full)\n"; - - // constuctor with a string, just printing the day of the week - wxDate y("8/8/1988"); - - textCtrl << y.FormatDate(wxDAY) << " (just day)\n"; - - // constructor with a julian - wxDate z( 2450000L ); - textCtrl << z.FormatDate(wxFULL) << " (full)\n"; - - // using date addition and subtraction - wxDate a = x + 10; - textCtrl << a.FormatDate(wxFULL) << " (full)\n"; - a = a - 25; - textCtrl << a.FormatDate(wxEUROPEAN) << " (European)\n"; - - - // Using subtraction of two date objects - wxDate a1 = wxString("7/13/1991"); - wxDate a2 = a1 + 14; - textCtrl << (a1-a2) << "\n"; - textCtrl << (a2+=10) << "\n"; - - a1++; - textCtrl << "Tomorrow= " << a1.FormatDate(wxFULL) << "\n"; - - wxDate tmpDate1("08/01/1991"); - wxDate tmpDate2("07/14/1991"); - textCtrl << "a1 (7-14-91) < 8-01-91 ? ==> " << ((a1 < tmpDate1) ? "TRUE" : "FALSE") << "\n"; - textCtrl << "a1 (7-14-91) > 8-01-91 ? ==> " << ((a1 > tmpDate1) ? "TRUE" : "FALSE") << "\n"; - textCtrl << "a1 (7-14-91)== 7-14-91 ? ==> " << ((a1==tmpDate2) ? "TRUE" : "FALSE") << "\n"; - - wxDate a3 = a1; - textCtrl << "a1 (7-14-91)== a3 (7-14-91) ? ==> " << ((a1==a3) ? "TRUE" : "FALSE") << "\n"; - wxDate a4 = a1; - textCtrl << "a1 (7-14-91)== a4 (7-15-91) ? ==> " << ((a1==++a4) ? "TRUE" : "FALSE") << "\n"; - - wxDate a5 = wxString("today"); - textCtrl << "Today is: " << a5 << "\n"; - a4 = "TODAY"; - textCtrl << "Today (a4) is: " << a4 << "\n"; - - textCtrl << "Today + 4 is: " << (a4+=4) << "\n"; - a4 = "TODAY"; - textCtrl << "Today - 4 is: " << (a4-=4) << "\n"; - - textCtrl << "=========== Leap Year Test ===========\n"; - a1 = "1/15/1992"; - textCtrl << a1.FormatDate(wxFULL) << " " << ((a1.IsLeapYear()) ? "Leap" : "non-Leap"); - textCtrl << " " << "day of year: " << a1.GetDayOfYear() << "\n"; - - a1 = "2/16/1993"; - textCtrl << a1.FormatDate(wxFULL) << " " << ((a1.IsLeapYear()) ? "Leap" : "non-Leap"); - textCtrl << " " << "day of year: " << a1.GetDayOfYear() << "\n"; - - textCtrl << "================== string assignment test ====================\n"; - wxString date_string=a1; - textCtrl << "a1 as a string (s/b 2/16/1993) ==> " << date_string << "\n"; - - textCtrl << "================== SetFormat test ============================\n"; - a1.SetFormat(wxFULL); - textCtrl << "a1 (s/b FULL format) ==> " << a1 << "\n"; - a1.SetFormat(wxEUROPEAN); - textCtrl << "a1 (s/b EUROPEAN format) ==> " << a1 << "\n"; - - textCtrl << "================== SetOption test ============================\n"; - textCtrl << "Date abbreviation ON\n"; - - a1.SetOption(wxDATE_ABBR); - a1.SetFormat(wxMONTH); - textCtrl << "a1 (s/b MONTH format) ==> " << a1 << "\n"; - a1.SetFormat(wxDAY); - textCtrl << "a1 (s/b DAY format) ==> " << a1 << "\n"; - a1.SetFormat(wxFULL); - textCtrl << "a1 (s/b FULL format) ==> " << a1 << "\n"; - a1.SetFormat(wxEUROPEAN); - textCtrl << "a1 (s/b EUROPEAN format) ==> " << a1 << "\n"; - textCtrl << "Century suppression ON\n"; - a1.SetOption(wxNO_CENTURY); - a1.SetFormat(wxMDY); - textCtrl << "a1 (s/b MDY format) ==> " << a1 << "\n"; - textCtrl << "Century suppression OFF\n"; - a1.SetOption(wxNO_CENTURY,FALSE); - textCtrl << "a1 (s/b MDY format) ==> " << a1 << "\n"; - textCtrl << "Century suppression ON\n"; - a1.SetOption(wxNO_CENTURY); - textCtrl << "a1 (s/b MDY format) ==> " << a1 << "\n"; - a1.SetFormat(wxFULL); - textCtrl << "a1 (s/b FULL format) ==> " << a1 << "\n"; - - textCtrl << "\n=============== Version 4.0 Enhancement Test =================\n"; - - wxDate v4("11/26/1966"); - textCtrl << "\n---------- Set Stuff -----------\n"; - textCtrl << "First, 'Set' to today..." << "\n"; - textCtrl << "Before 'Set' => " << v4 << "\n"; - textCtrl << "After 'Set' => " << v4.Set() << "\n\n"; - - textCtrl << "Set to 11/26/66 => " << v4.Set(11,26,1966) << "\n"; - textCtrl << "Current Julian => " << v4.GetJulianDate() << "\n"; - textCtrl << "Set to Julian 2450000L => " << v4.Set(2450000L) << "\n"; - textCtrl << "See! => " << v4.GetJulianDate() << "\n"; - - textCtrl << "---------- Add Stuff -----------\n"; - textCtrl << "Start => " << v4 << "\n"; - textCtrl << "Add 4 Weeks => " << v4.AddWeeks(4) << "\n"; - textCtrl << "Sub 1 Month => " << v4.AddMonths(-1) << "\n"; - textCtrl << "Add 2 Years => " << v4.AddYears(2) << "\n"; - - textCtrl << "---------- Misc Stuff -----------\n"; - textCtrl << "The date aboves' day of the month is => " << v4.GetDay() << "\n"; - textCtrl << "There are " << v4.GetDaysInMonth() << " days in this month.\n"; - textCtrl << "The first day of this month lands on " << v4.GetFirstDayOfMonth() << "\n"; - textCtrl << "This day happens to be " << v4.GetDayOfWeekName() << "\n"; - textCtrl << "the " << v4.GetDayOfWeek() << " day of the week," << "\n"; - textCtrl << "on the " << v4.GetWeekOfYear() << " week of the year," << "\n"; - textCtrl << "on the " << v4.GetWeekOfMonth() << " week of the month, " << "\n"; - textCtrl << "(which is " << v4.GetMonthName() << ")\n"; - textCtrl << "the "<< v4.GetMonth() << "th month in the year.\n"; - textCtrl << "The year alone is " << v4.GetYear() << "\n"; - - textCtrl << "---------- First and Last Stuff -----------\n"; - v4.Set(); - textCtrl << "The first date of this month is " << v4.GetMonthStart() << "\n"; - textCtrl << "The last date of this month is " << v4.GetMonthEnd() << "\n"; - textCtrl << "The first date of this year is " << v4.GetYearStart() << "\n"; - textCtrl << "The last date of this year is " << v4.GetYearEnd() << "\n"; -} - -void MyApp::DoVariantDemo(wxCommandEvent& WXUNUSED(event) ) -{ - wxTextCtrl& textCtrl = * GetTextCtrl(); - - wxVariant var1 = "String value"; - textCtrl << "var1 = " << var1.MakeString() << "\n"; - - // Conversion - wxString str = var1.MakeString(); - - var1 = 123.456; - textCtrl << "var1 = " << var1.GetReal() << "\n"; - - // Implicit conversion - double v = var1; - - var1 = 9876L; - textCtrl << "var1 = " << var1.GetLong() << "\n"; - - // Implicit conversion - long l = var1; - - wxStringList stringList; - stringList.Add("one"); stringList.Add("two"); stringList.Add("three"); - var1 = stringList; - textCtrl << "var1 = " << var1.MakeString() << "\n"; - - var1.ClearList(); - var1.Append(wxVariant(1.2345)); - var1.Append(wxVariant("hello")); - var1.Append(wxVariant(54321L)); - - textCtrl << "var1 = " << var1.MakeString() << "\n"; - - size_t n = var1.GetCount(); - size_t i; - for (i = (size_t) 0; i < n; i++) - { - textCtrl << "var1[" << (int) i << "] (type " << var1[i].GetType() << ") = " << var1[i].MakeString() << "\n"; - } -} - -BEGIN_EVENT_TABLE(MyFrame, wxFrame) - EVT_MENU(TYPES_QUIT, MyFrame::OnQuit) - EVT_MENU(TYPES_ABOUT, MyFrame::OnAbout) -END_EVENT_TABLE() - -// My frame constructor -MyFrame::MyFrame(wxFrame *parent, const wxString& title, - const wxPoint& pos, const wxSize& size): - wxFrame(parent, -1, title, pos, size) -{} - -void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event) ) -{ - Close(TRUE); -} - -void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event) ) -{ - wxMessageDialog dialog(this, "Tests various wxWindows types", - "About Types", wxYES_NO|wxCANCEL); - - dialog.ShowModal(); -} - - diff --git a/samples/typetest/typetest.def b/samples/typetest/typetest.def deleted file mode 100644 index 7df8973dbe..0000000000 --- a/samples/typetest/typetest.def +++ /dev/null @@ -1,8 +0,0 @@ -NAME Typetest -DESCRIPTION 'Typetest wxWindows application' -EXETYPE WINDOWS -STUB 'WINSTUB.EXE' -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE -HEAPSIZE 4048 -STACKSIZE 16000 diff --git a/samples/typetest/typetest.h b/samples/typetest/typetest.h deleted file mode 100644 index 8cd87eac03..0000000000 --- a/samples/typetest/typetest.h +++ /dev/null @@ -1,67 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: typetest.h -// Purpose: Types wxWindows sample -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma interface "typetest.h" -#endif - -#ifndef _WX_TYPETEST_H_ -#define _WX_TYPETEST_H_ - -// Define a new application type -class MyApp: public wxApp -{ -public: - bool OnInit(void); - - void DoDateDemo(wxCommandEvent& event); - void DoTimeDemo(wxCommandEvent& event); - void DoVariantDemo(wxCommandEvent& event); - - wxTextCtrl* GetTextCtrl() const { return m_textCtrl; } - -private: - wxTextCtrl* m_textCtrl; - -DECLARE_DYNAMIC_CLASS(MyApp) -DECLARE_EVENT_TABLE() -}; - -DECLARE_APP(MyApp) - -// Define a new frame type -class MyFrame: public wxFrame -{ -public: - MyFrame(wxFrame *parent, const wxString& title, - const wxPoint& pos, const wxSize& size); - -public: - void OnQuit(wxCommandEvent& event); - void OnAbout(wxCommandEvent& event); - bool OnClose(void) { return TRUE; } - - DECLARE_EVENT_TABLE() - -}; - -// ID for the menu commands -#define TYPES_QUIT wxID_EXIT -#define TYPES_TEXT 101 -#define TYPES_ABOUT 102 - -#define TYPES_DATE 103 -#define TYPES_TIME 104 -#define TYPES_VARIANT 105 - -#endif - // _WX_TYPETEST_H_ - diff --git a/samples/typetest/typetest.rc b/samples/typetest/typetest.rc deleted file mode 100644 index 7655c62a4c..0000000000 --- a/samples/typetest/typetest.rc +++ /dev/null @@ -1,3 +0,0 @@ -mondrian ICON "mondrian.ico" -#include "wx/msw/wx.rc" - diff --git a/samples/validate/.cvsignore b/samples/validate/.cvsignore deleted file mode 100644 index 7957c41216..0000000000 --- a/samples/validate/.cvsignore +++ /dev/null @@ -1,3 +0,0 @@ -Linux -linux-gnu -linux \ No newline at end of file diff --git a/samples/validate/Makefile b/samples/validate/Makefile deleted file mode 100644 index bccce53f76..0000000000 --- a/samples/validate/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../../setup/general/makeapp diff --git a/samples/validate/Makefile.in b/samples/validate/Makefile.in deleted file mode 100644 index 7db2e4e583..0000000000 --- a/samples/validate/Makefile.in +++ /dev/null @@ -1,26 +0,0 @@ -# WXXT base directory -WXBASEDIR=@WXBASEDIR@ - -# set the OS type for compilation -OS=@OS@ -# compile a library only -RULE=bin - -# define library name -BIN_TARGET=validate -# define library sources -BIN_SRC=\ -validate.cpp - -#define library objects -BIN_OBJ=\ -validate.o - -# additional things needed to link -BIN_LINK= - -# additional things needed to compile -ADD_COMPILE= - -# include the definitions now -include ../../../template.mak diff --git a/samples/validate/makefile.b32 b/samples/validate/makefile.b32 deleted file mode 100644 index bdad7c2d91..0000000000 --- a/samples/validate/makefile.b32 +++ /dev/null @@ -1,16 +0,0 @@ -# -# File: makefile.b32 -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: -# -# Makefile : Builds sample for 32-bit BC++ - -WXDIR = $(WXWIN) - -TARGET=validate -OBJECTS = $(TARGET).obj - -!include $(WXDIR)\src\makeprog.b32 - diff --git a/samples/validate/makefile.bcc b/samples/validate/makefile.bcc deleted file mode 100644 index 781d93b453..0000000000 --- a/samples/validate/makefile.bcc +++ /dev/null @@ -1,19 +0,0 @@ -# -# File: makefile.bcc -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Builds a BC++ 16-bit sample - -!if "$(WXWIN)" == "" -!error You must define the WXWIN variable in autoexec.bat, e.g. WXWIN=c:\wx -!endif - -WXDIR = $(WXWIN) - -TARGET=validate -OBJECTS=$(TARGET).obj - -!include $(WXDIR)\src\makeprog.bcc - diff --git a/samples/validate/makefile.dos b/samples/validate/makefile.dos deleted file mode 100644 index b8a1ba2104..0000000000 --- a/samples/validate/makefile.dos +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.dos -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Makefile : Builds 16-bit sample, VC++ 1.5 -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -WXDIR = $(WXWIN) - -TARGET=validate -OBJECTS = $(TARGET).obj - -!include $(WXDIR)\src\makeprog.msc - diff --git a/samples/validate/makefile.g95 b/samples/validate/makefile.g95 deleted file mode 100644 index eba871379b..0000000000 --- a/samples/validate/makefile.g95 +++ /dev/null @@ -1,37 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile for validate example (UNIX). - -WXDIR = ../.. - -# All common UNIX compiler flags and options are now in -# this central makefile. -include $(WXDIR)/src/makeg95.env - -OBJECTS = $(OBJDIR)/validate.$(OBJSUFF) $(OBJDIR)/validate_resources.$(OBJSUFF) - -all: $(OBJDIR) validate$(GUISUFFIX)$(EXESUFF) - -wx: - -$(OBJDIR): - mkdir $(OBJDIR) - -validate$(GUISUFFIX)$(EXESUFF): $(OBJECTS) $(WXLIB) - $(CC) $(LDFLAGS) -o validate$(GUISUFFIX)$(EXESUFF) $(OBJECTS) $(LDLIBS) - -$(OBJDIR)/validate.$(OBJSUFF): validate.$(SRCSUFF) - $(CC) -c $(CPPFLAGS) -o $@ validate.$(SRCSUFF) - -$(OBJDIR)/validate_resources.o: validate.rc - $(RESCOMP) -i validate.rc -o $(OBJDIR)/validate_resources.o $(RESFLAGS) - -clean: - rm -f $(OBJECTS) validate$(GUISUFFIX).exe core *.rsc *.res diff --git a/samples/validate/makefile.vc b/samples/validate/makefile.vc deleted file mode 100644 index 0db26a276c..0000000000 --- a/samples/validate/makefile.vc +++ /dev/null @@ -1,18 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: (c) Julian Smart -# -# Makefile : Builds sample (VC++, WIN32) -# Use FINAL=1 argument to nmake to build final version with no debug info. - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -PROGRAM=validate -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.vc - diff --git a/samples/validate/makefile.wat b/samples/validate/makefile.wat deleted file mode 100644 index 2d8327bf01..0000000000 --- a/samples/validate/makefile.wat +++ /dev/null @@ -1,15 +0,0 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 -# -# - -WXDIR = $(%WXWIN) - -PROGRAM = validate -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - diff --git a/samples/validate/mondrian.ico b/samples/validate/mondrian.ico deleted file mode 100644 index 2310c5d275a87af295d5ea8dc79ea417a5e74c53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmZQzU<5)11px*Sc)`TLAO@s0fLH;D9e|jTfdxnc0ZSetIcon(wxIcon("mondrian")); -#endif -#ifdef __X__ - frame->SetIcon(wxIcon("aiai.xbm")); -#endif - - // Make a menubar - wxMenu *file_menu = new wxMenu; - - file_menu->Append(VALIDATE_TEST_DIALOG, "&Test dialog"); - file_menu->Append(wxID_EXIT, "E&xit"); - wxMenuBar *menu_bar = new wxMenuBar; - menu_bar->Append(file_menu, "File"); - frame->SetMenuBar(menu_bar); - - frame->CreateStatusBar(1); - - // Show the frame - frame->Show(TRUE); - - SetTopWindow(frame); - - return TRUE; -} - -// My frame constructor -MyFrame::MyFrame(wxFrame *frame, char *title, int x, int y, int w, int h): - wxFrame(frame, -1, title, wxPoint(x, y), wxSize(w, h)) -{} - -void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) -{ - Close(TRUE); -} - -void MyFrame::OnTestDialog(wxCommandEvent& WXUNUSED(event)) -{ - MyDialog dialog(this, "Validation test dialog", wxPoint(100, 100), wxSize(340, 170)); - - dialog.ShowModal(); -} - -MyDialog::MyDialog( wxWindow *parent, const wxString& title, - const wxPoint& pos, const wxSize& size, const long WXUNUSED(style) ) : - wxDialog(parent, VALIDATE_DIALOG_ID, title, pos, size, wxDEFAULT_DIALOG_STYLE|wxDIALOG_MODAL) -{ - wxButton *but1 = new wxButton(this, wxID_OK, "OK", wxPoint(250, 10), wxSize(80, 30)); - (void)new wxButton(this, wxID_CANCEL, "Cancel", wxPoint(250, 60), wxSize(80, 30)); - - (void)new wxTextCtrl(this, VALIDATE_TEXT, "", - wxPoint(10, 10), wxSize(120, -1), 0, wxTextValidator(wxFILTER_ALPHA, &g_data.m_string)); - - SetBackgroundColour(wxColour(0,0,255)); - - but1->SetFocus(); - but1->SetDefault(); -} - diff --git a/samples/validate/validate.def b/samples/validate/validate.def deleted file mode 100644 index f49fa9473e..0000000000 --- a/samples/validate/validate.def +++ /dev/null @@ -1,9 +0,0 @@ - * Last change: JS 13 Mar 97 5:02 pm -NAME Events -DESCRIPTION 'Event tester' -EXETYPE WINDOWS -STUB 'WINSTUB.EXE' -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE -HEAPSIZE 1024 -STACKSIZE 8192 diff --git a/samples/validate/validate.h b/samples/validate/validate.h deleted file mode 100644 index b4b9046561..0000000000 --- a/samples/validate/validate.h +++ /dev/null @@ -1,55 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: validate.h -// Purpose: wxWindows validation sample -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -// #pragma interface -#endif - -// Define a new application type -class MyApp: public wxApp -{ public: - bool OnInit(void); -}; - -// Define a new frame type -class MyFrame: public wxFrame -{ public: - MyFrame(wxFrame *frame, char *title, int x, int y, int w, int h); - - public: - void OnQuit(wxCommandEvent& event); - void OnTestDialog(wxCommandEvent& event); - bool OnClose(void) { return TRUE; } - - DECLARE_EVENT_TABLE() - -}; - -class MyDialog: public wxDialog -{ -public: - MyDialog(wxWindow *parent, const wxString& title, const wxPoint& pos, const wxSize& size, - const long style = wxDEFAULT_DIALOG_STYLE); -}; - -class MyData -{ - public: - wxString m_string; - - MyData() { m_string = "My string"; } -}; - -#define VALIDATE_DIALOG_ID 200 - -#define VALIDATE_TEST_DIALOG 2 -#define VALIDATE_TEXT 101 - diff --git a/samples/validate/validate.rc b/samples/validate/validate.rc deleted file mode 100644 index 7655c62a4c..0000000000 --- a/samples/validate/validate.rc +++ /dev/null @@ -1,3 +0,0 @@ -mondrian ICON "mondrian.ico" -#include "wx/msw/wx.rc" - diff --git a/samples/wxpoem/.cvsignore b/samples/wxpoem/.cvsignore deleted file mode 100644 index dfa809fa04..0000000000 --- a/samples/wxpoem/.cvsignore +++ /dev/null @@ -1,4 +0,0 @@ -Linux -linux-gnu -linux -wxpoem.idx \ No newline at end of file diff --git a/samples/wxpoem/Makefile b/samples/wxpoem/Makefile deleted file mode 100644 index bccce53f76..0000000000 --- a/samples/wxpoem/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../../setup/general/makeapp diff --git a/samples/wxpoem/Makefile.in b/samples/wxpoem/Makefile.in deleted file mode 100644 index 1385e5590e..0000000000 --- a/samples/wxpoem/Makefile.in +++ /dev/null @@ -1,26 +0,0 @@ -# WXXT base directory -WXBASEDIR=@WXBASEDIR@ - -# set the OS type for compilation -OS=@OS@ -# compile a library only -RULE=bin - -# define library name -BIN_TARGET=wxpoem -# define library sources -BIN_SRC=\ -wxpoem.cpp - -#define library objects -BIN_OBJ=\ -wxpoem.o - -# additional things needed to link -BIN_LINK= - -# additional things needed to compile -ADD_COMPILE= - -# include the definitions now -include ../../../template.mak diff --git a/samples/wxpoem/corner1.ico b/samples/wxpoem/corner1.ico deleted file mode 100644 index 35de002ce591c39141efd29ac8f01a81dde502bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmb7?JyOIl422bz8M|AmZAr;3;7IOV;x0Z`jVqe)@UZjoHGp zt}mwb^<;Kqf5TSn16%AFZ`R=cUJVkawb<|+v1a?eLmd9vap;8c=t}NkrCMvTR0olJ z=OXuQT=dSd_^l#12)m!SRs*X_@E*RMIKnA9;;9_rxp}<0QB$`~^+z}L>|jq1dSC)6 zF1q8lAx=TQTXIkW_;{q4ZUgrr0mHm@QoE z`fRd~C$ks)8(6_RSnR@S=G4y3DN=Dy$4O{o47>_Q{OmXs0WMKGPOVidt#PKctvhM& z9(hCsviHmtWiA1os>C^S1YX1{r=l<#$gfngK`OgOt3t7EY6?LNh+MM~Xn+^$Q(%ug zZ|+5PgdvCqDV3+d8uQ~Z#OoP1@+9zTcFW~bP#XJALXD<;5=>x#_MZd-FID>|Awj9R zucp(zd7b;+Z&&Aj+5-XaH`mdkjeW>}iB0!son%ndlKbTghA@3WDZ(o2{I%n@zaGO1 i|Agh6qVP5GiQmBhK7spZ4kL`|6`z?y3Ipum27UnS1KHsK diff --git a/samples/wxpoem/corner2.xpm b/samples/wxpoem/corner2.xpm deleted file mode 100644 index ba1b1206a6..0000000000 --- a/samples/wxpoem/corner2.xpm +++ /dev/null @@ -1,42 +0,0 @@ -/* XPM */ -static char * corner2_xpm[] = { -/* width height ncolors chars_per_pixel */ -"32 32 4 1", -/* colors */ -" s None c None", -". c #000000", -"+ c #c0c0c0", -"@ c #808080", -/* pixels */ -" ............................", -" ....++++++++++++++++++..++...", -" ...+++++++++++@@@@@@@...++..+.", -" ..++++++++@@@@@@@@@@...+++..+@.", -" .+++++@@@@@@@@@@@@...+++@..++@.", -"..+++@@@@@@@@@@@@...++++@..++@..", -".+++@@@@@@@@@@@...++++@@..++@@..", -".++@@@@@@@@@@...++++@@@..++@@.+.", -".+@@@@@@@@@...++++@@@@..+++@@.+.", -"..@@@@@@...+++++@@@@@..+++@@.++.", -" ..@@@...+++++@@@@@@..+++@@..++.", -" ......+++++@@@@@@@..+++@@@.++@.", -" ...+++++@@@@@@@@..+++@@@..++@.", -" ..+++++@@@@@@@@@..++++@@@.+++@.", -" .+++++@@@@@@@@@..++++@@@..++@@.", -"..+++@@@@@@@@@@..++++@@@@.+++@@.", -".+++@@@@@@@@@@..++++@@@@..++@@@.", -".++@@@@@@@@@@..++++@@@@@.+++@@@.", -".+@@@@@@@@@@..++++@@@@@..++@@@@.", -".+@@@@@@@@@..+++++@@@@..+++@@@@.", -" .@@@@@@@@..+++++@@@@@.++++@@@@.", -" .@@@@@@@..+++++@@@@@..+++@@@@@.", -" .@@@@@..+++++@@@@@@.++++@@@@@.", -" ..@@..+++++@@@@@@..+++@@@@@@.", -" ...++++++@@@@@@.++++@@@@@@.", -" .++++++@@@@@@..+++@@@@@@@.", -" .+++++@@@@@@..++++@@@@@@@.", -" .+++@@@@@@@.++++@@@@@@@@.", -" .++++@@@@@..++++@@@@@@@..", -" ..+++@@@@.++++++@@@@@.. ", -" ..+++....++++++++.. ", -" .... ........ "}; diff --git a/samples/wxpoem/corner3.ico b/samples/wxpoem/corner3.ico deleted file mode 100644 index 201fb9895275a3ce7bb8df50038a6ecb35fc3906..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmb7?JyOIl422bz8M|95T2gWgIFdV;>&`k>jzY;1=*%a{-W?Vil*qE4o__2^WaHWQ zCo%ba5P8PFqC5JIZt}<~(un;njUbWM!mzTH<2bMu82-u_wnKRgvgKYXtISnWsvXO2#RMexaIdn0&d3fu@3vUw?G)2Nys3DLrRPY8k?e9g~R z-KQg2Mqqy1S}hKk8}pk_0emjY{U|_!-9Pc!{N_gjWlV_2aUwq&`WZdU7xeFxf<3Vx j=8Tun6S_^s{E`*>56|kppl?$z*h}Nr`;gQ4O6Tzn6{N=6 diff --git a/samples/wxpoem/corner3.xpm b/samples/wxpoem/corner3.xpm deleted file mode 100644 index 14c04468dd..0000000000 --- a/samples/wxpoem/corner3.xpm +++ /dev/null @@ -1,42 +0,0 @@ -/* XPM */ -static char * corner3_xpm[] = { -/* width height ncolors chars_per_pixel */ -"32 32 4 1", -/* colors */ -" s None c None", -". c #000000", -"+ c #c0c0c0", -"@ c #808080", -/* pixels */ -" ........ .... ", -" ..++++++++....+++.. ", -" ..@@@@@++++++.@@@@+++.. ", -"..@@@@@@@++++..@@@@@++++. ", -".@@@@@@@@++++.@@@@@@@+++. ", -".@@@@@@@++++..@@@@@@+++++. ", -".@@@@@@@+++..@@@@@@++++++. ", -".@@@@@@++++.@@@@@@++++++... ", -".@@@@@@+++..@@@@@@+++++..@@.. ", -".@@@@@++++.@@@@@@+++++..@@@@@. ", -".@@@@@+++..@@@@@+++++..@@@@@@@. ", -".@@@@++++.@@@@@+++++..@@@@@@@@. ", -".@@@@+++..@@@@+++++..@@@@@@@@@+.", -".@@@@++..@@@@@++++..@@@@@@@@@@+.", -".@@@+++.@@@@@++++..@@@@@@@@@@++.", -".@@@++..@@@@++++..@@@@@@@@@@+++.", -".@@+++.@@@@++++..@@@@@@@@@@+++..", -".@@++..@@@++++..@@@@@@@@@+++++. ", -".@+++.@@@++++..@@@@@@@@@+++++.. ", -".@++..@@@+++..@@@@@@@@+++++... ", -".@++.@@@+++..@@@@@@@+++++...... ", -".++..@@+++..@@@@@@+++++...@@@.. ", -".++.@@+++..@@@@@+++++...@@@@@@..", -".+.@@+++..@@@@++++...@@@@@@@@@+.", -".+.@@++..@@@++++...@@@@@@@@@@++.", -"..@@++..@@++++...@@@@@@@@@@@+++.", -"..@++..@++++...@@@@@@@@@@@@+++..", -".@++..@+++...@@@@@@@@@@@@+++++. ", -".@+..+++...@@@@@@@@@@++++++++.. ", -".+..++...@@@@@@@+++++++++++... ", -"...++..++++++++++++++++++.... ", -"............................ "}; diff --git a/samples/wxpoem/corner4.ico b/samples/wxpoem/corner4.ico deleted file mode 100644 index 4af67536e9f6371c1453fcd2f4962d6c439196f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmZvaJ95J?3`C)fXXr9j+NjJiawK(BiIT_SQB=BgnIaSAEeNKF4S5MI7oVMx%@&?@ zeKp1H#q5pz0aow{7Q1koIok7ZL=^XtIC-_+J6XaRKRZvo0UllHc#Kjrwz8oP+FEm~ zwguf`qFdpp!9;hfIwgu$FFWObv{`LdW^ZlCzLi -#include -#include -#include - -#define buf_size 10000 -#define DEFAULT_POETRY_DAT "wxpoem" -#define DEFAULT_POETRY_IND "wxpoem" -#define DEFAULT_CHAR_HEIGHT 18 -#define DEFAULT_FONT "Swiss" -#define DEFAULT_X_POS 0 -#define DEFAULT_Y_POS 0 -#define BORDER_SIZE 30 -#define THIN_LINE_BORDER 10 -#define THICK_LINE_BORDER 16 -#define THICK_LINE_WIDTH 2 -#define SHADOW_OFFSET 1 -#define X_SIZE 30 -#define Y_SIZE 20 - -static char *poem_buffer; // Storage for each poem -static char line[150]; // Storage for a line -static char title[150]; // Remember the title -static char *search_string = NULL; // The search string -static int pages[30]; // For multipage poems - - // store the start of each page -static long last_poem_start = 0; // Start of last found poem -static long last_find = -1; // Point in file of last found - // search string -static bool search_ok = FALSE; // Search was successful -static bool same_search = FALSE; // Searching on same string - -static long poem_index[600]; // Index of poem starts -static long nitems = 0; // Number of poems -static int desired_char_height = DEFAULT_CHAR_HEIGHT; // Desired height -static char DesiredFont[64]; // Chosen font -static int char_height = DEFAULT_CHAR_HEIGHT; // Actual height -static int index_ptr = -1; // Pointer into index -static int poem_height, poem_width; // Size of poem -static int XPos; // Startup X position -static int YPos; // Startup Y position -static int pointSize = 12; // Font size - -static char *index_filename = NULL; // Index filename -static char *data_filename = NULL; // Data filename -static char error_buf[300]; // Error message buffer -static bool loaded_ok = FALSE; // Poem loaded ok -static bool index_ok = FALSE; // Index loaded ok - -static bool paging = FALSE; // Are we paging? -static int current_page = 0; // Currently viewed page - -wxIcon *Corner1 = NULL; -wxIcon *Corner2 = NULL; -wxIcon *Corner3 = NULL; -wxIcon *Corner4 = NULL; - -// Fonts -wxFont *NormalFont = NULL; -wxFont *BoldFont = NULL; -wxFont *ItalicFont = NULL; - -// Pens -wxPen *GreyPen = NULL; -wxPen *DarkGreyPen = NULL; -wxPen *WhitePen = NULL; - -// Backing bitmap -wxBitmap *backingBitmap = NULL; - -void PoetryError(char *, char *caption="wxPoem Error"); -void PoetryNotify(char *Msg, char *caption="wxPoem"); -void TryLoadIndex(); -bool LoadPoem(char *, long); -int GetIndex(); -int LoadIndex(char *); -bool Compile(void); -void WritePreferences(); -void ReadPreferences(); -void FindMax(int *max_thing, int thing); -void CreateFonts(); -#ifdef __WXMSW__ -void CopyToClipboard(HWND, char *); -#endif - -wxMenu *popupMenu = NULL; -void PopupFunction(wxMenu& menu, wxCommandEvent& event); - -wxHelpController *HelpController = NULL; - -// A macro needed for some compilers (AIX) that need 'main' to be defined -// in the application itself. -IMPLEMENT_WXWIN_MAIN - -IMPLEMENT_APP(MyApp) - -MainWindow *TheMainWindow = NULL; - -// Create the fonts -void CreateFonts() -{ - NormalFont = wxTheFontList->FindOrCreateFont(pointSize, wxSWISS, wxNORMAL, wxNORMAL); - BoldFont = wxTheFontList->FindOrCreateFont(pointSize, wxSWISS, wxNORMAL, wxBOLD); - ItalicFont = wxTheFontList->FindOrCreateFont(pointSize, wxSWISS, wxITALIC, wxNORMAL); -} - -BEGIN_EVENT_TABLE(MainWindow, wxFrame) - EVT_CLOSE(MainWindow::OnCloseWindow) - EVT_CHAR(MainWindow::OnChar) -END_EVENT_TABLE() - -MainWindow::MainWindow(wxFrame *frame, wxWindowID id, const wxString& title, - const wxPoint& pos, const wxSize& size, long style): - wxFrame(frame, id, title, pos, size, style) -{ -} - -MainWindow::~MainWindow() -{ - // Note: this must be done before the main window/canvas are destroyed - // or we get an error (no parent window for menu item button) - delete popupMenu; - popupMenu = NULL; -} - -// Read the poetry buffer, either for finding the size -// or for writing to a bitmap (not to the window directly, -// since that displays messily) -// If DrawIt is true, we draw, otherwise we just determine the -// size the window should be. -void MainWindow::ScanBuffer(wxDC *dc, bool DrawIt, int *max_x, int *max_y) -{ - int i = pages[current_page]; - int ch = -1; - int x = 10; - int y = 0; - int j; - char *line_ptr; - int curr_width = 0; - bool page_break = FALSE; - - int width = 0; - int height = 0; - - if (DrawIt) - { - y = (*max_y - poem_height)/2; - width = *max_x; - height = *max_y; - } - - if (DrawIt && wxColourDisplay()) - { - dc->SetBrush(*wxLIGHT_GREY_BRUSH); - dc->SetPen(*GreyPen); - dc->DrawRectangle(0, 0, width, height); - dc->SetBackgroundMode(wxTRANSPARENT); - } - - // See what ACTUAL char height is - dc->SetFont(* NormalFont); - long xx; - long yy; - dc->GetTextExtent("X", &xx, &yy); - char_height = (int)yy; - - if (current_page == 0) - title[0] = 0; - else if (title[0] != 0) - { - dc->SetFont(* BoldFont); - dc->GetTextExtent(title, &xx, &yy); - FindMax(&curr_width, (int)xx); - - if (DrawIt) - { - x = (width - xx)/2; - dc->SetFont(* BoldFont); - - // Change text to BLACK! - dc->SetTextForeground(* wxBLACK); - dc->DrawText(title, x, y); - // Change text to WHITE! - dc->SetTextForeground(* wxWHITE); - dc->DrawText(title, x-SHADOW_OFFSET, y-SHADOW_OFFSET); - } - y += char_height; - y += char_height; - } - - while (ch != 0 && !page_break) - { - j = 0; -#ifdef __WXMSW__ - while (((ch = poem_buffer[i]) != 13) && (ch != 0)) -#else - while (((ch = poem_buffer[i]) != 10) && (ch != 0)) -#endif - { - line[j] = ch; - j ++; - i ++; - } - -#ifdef __WXMSW__ - if (ch == 13) -#else - if (ch == 10) -#endif - { - ch = -1; - i ++; -#ifdef __WXMSW__ - // Add another to skip the linefeed - i ++; -#endif - // If a single newline on its own, put a space in - if (j == 0) - { - line[j] = ' '; - j ++; - line[j] = 0; - } - } - - if (j > 0) - { - line[j] = 0; - if (line[0] == '@') - { - switch (line[1]) - { - case 'P': - paging = TRUE; - page_break = TRUE; - break; - - case 'T': - dc->SetFont(* BoldFont); - line_ptr = line+3; - - strcpy(title, line_ptr); - strcat(title, " (cont'd)"); - - dc->GetTextExtent(line_ptr, &xx, &yy); - FindMax(&curr_width, (int)xx); - - if (DrawIt) - { - x = (width - xx)/2; - dc->SetFont(* BoldFont); - - // Change text to BLACK! - dc->SetTextForeground(* wxBLACK); - dc->DrawText(line_ptr, x, y); - - // Change text to WHITE! - dc->SetTextForeground(* wxWHITE); - dc->DrawText(line_ptr, x-SHADOW_OFFSET, y-SHADOW_OFFSET); - dc->SetTextForeground(* wxWHITE); - } - break; - - case 'A': - line_ptr = line+3; - dc->SetFont(* ItalicFont); - - dc->GetTextExtent(line_ptr, &xx, &yy); - FindMax(&curr_width, (int)xx); - - if (DrawIt) - { - x = (width - xx)/2; - dc->SetTextForeground(* wxBLACK); - dc->DrawText(line_ptr, x, y); - } - break; - - // Default: just ignore this line - default: - y -= char_height; - } - } - else - { - dc->SetFont(* NormalFont); - - dc->GetTextExtent(line, &xx, &yy); - FindMax(&curr_width, (int)xx); - - if (DrawIt) - { - int x = (int)((width - xx)/2.0); - dc->SetFont(* NormalFont); - dc->SetTextForeground(* wxBLACK); - dc->DrawText(line, x, y); - } - } - } - y += char_height; - } - - // Write (cont'd) - if (page_break) - { - char *cont = "(cont'd)"; - - dc->SetFont(* NormalFont); - - dc->GetTextExtent(cont, &xx, &yy); - FindMax(&curr_width, (int)xx); - if (DrawIt) - { - int x = (int)((width - xx)/2.0); - dc->SetFont(* NormalFont); - dc->SetTextForeground(* wxBLACK); - dc->DrawText(cont, x, y); - } - y += 2*char_height; - } - - *max_x = (int)curr_width; - *max_y = (int)(y-char_height); - - if (page_break) - pages[current_page+1] = i; - else - paging = FALSE; - - if (DrawIt) - { - // Draw dark grey thick border - if (wxColourDisplay()) - { - dc->SetBrush(*wxGREY_BRUSH); - dc->SetPen(*wxGREY_PEN); - - // Left side - dc->DrawRectangle(0, 0, THIN_LINE_BORDER, height); - // Top side - dc->DrawRectangle(THIN_LINE_BORDER, 0, width-THIN_LINE_BORDER, THIN_LINE_BORDER); - // Right side - dc->DrawRectangle(width-THIN_LINE_BORDER, THIN_LINE_BORDER, width, height-THIN_LINE_BORDER); - // Bottom side - dc->DrawRectangle(THIN_LINE_BORDER, height-THIN_LINE_BORDER, width-THIN_LINE_BORDER, height); - } - // Draw border - // Have grey background, plus 3-d border - - // One black rectangle. - // Inside this, left and top sides - dark grey. Bottom and right - - // white. - - // Change pen to black - dc->SetPen(*wxBLACK_PEN); - dc->DrawLine(THIN_LINE_BORDER, THIN_LINE_BORDER, width-THIN_LINE_BORDER, THIN_LINE_BORDER); - dc->DrawLine(width-THIN_LINE_BORDER, THIN_LINE_BORDER, width-THIN_LINE_BORDER, height-THIN_LINE_BORDER); - dc->DrawLine(width-THIN_LINE_BORDER, height-THIN_LINE_BORDER, THIN_LINE_BORDER, height-THIN_LINE_BORDER); - dc->DrawLine(THIN_LINE_BORDER, height-THIN_LINE_BORDER, THIN_LINE_BORDER, THIN_LINE_BORDER); - - // Right and bottom white lines - 'grey' (black!) if - // we're running on a mono display. - if (wxColourDisplay()) - dc->SetPen(*WhitePen); - else - dc->SetPen(*DarkGreyPen); - - dc->DrawLine(width-THICK_LINE_BORDER, THICK_LINE_BORDER, - width-THICK_LINE_BORDER, height-THICK_LINE_BORDER); - dc->DrawLine(width-THICK_LINE_BORDER, height-THICK_LINE_BORDER, - THICK_LINE_BORDER, height-THICK_LINE_BORDER); - - // Left and top grey lines - dc->SetPen(*DarkGreyPen); - dc->DrawLine(THICK_LINE_BORDER, height-THICK_LINE_BORDER, - THICK_LINE_BORDER, THICK_LINE_BORDER); - dc->DrawLine(THICK_LINE_BORDER, THICK_LINE_BORDER, - width-THICK_LINE_BORDER, THICK_LINE_BORDER); - -//#ifdef __WXMSW__ - // Draw icons - dc->DrawIcon(* Corner1, 0, 0); - dc->DrawIcon(* Corner2, int(width-32), 0); - - int y2 = height - 32; - int x2 = (width-32); - dc->DrawIcon(* Corner3, 0, y2); - dc->DrawIcon(* Corner4, x2, y2); -//#endif - } -} - -// Get an index (randomly generated) and load the poem -void MainWindow::GetIndexLoadPoem(void) -{ - if (index_ok) - index_ptr = GetIndex(); - - if (index_ptr > -1) - loaded_ok = LoadPoem(data_filename, -1); -} - -// Find the size of the poem and resize the window accordingly -void MainWindow::Resize(void) -{ - wxClientDC dc(canvas); - - // Get the poem size - ScanBuffer(& dc, FALSE, &poem_width, &poem_height); - int x = poem_width + (2*BORDER_SIZE); - int y = poem_height + (2*BORDER_SIZE); - - SetClientSize(x, y); - - // In case client size isn't what we set it to... - int xx, yy; - GetClientSize(&xx, &yy); - - wxMemoryDC memDC; - if (backingBitmap) delete backingBitmap; - backingBitmap = new wxBitmap(x, yy); - memDC.SelectObject(* backingBitmap); - - memDC.Clear(); - TheMainWindow->ScanBuffer(&memDC, TRUE, &xx, &yy); -} - -// Which is more? -void FindMax(int *max_thing, int thing) -{ - if (thing > *max_thing) - *max_thing = thing; -} - -// Next page/poem -void MainWindow::NextPage(void) -{ - if (paging) - current_page ++; - else - { - current_page = 0; - GetIndexLoadPoem(); - } - Resize(); -} - -// Previous page -void MainWindow::PreviousPage(void) -{ - if (current_page > 0) - { - current_page --; - Resize(); - } -} - -// Search for a string -void MainWindow::Search(bool ask) -{ - long position; - - if (ask || !search_string) - { - wxString s = wxGetTextFromUser("Enter search string", "Search", (const char*) search_string); - if (s != "") - { - if (search_string) delete[] search_string; - search_string = copystring(s); - search_ok = TRUE; - } else search_ok = FALSE; - } - else - { - same_search = TRUE; - search_ok = TRUE; - } - - if (search_string && search_ok) - { - position = DoSearch(); - if (position > -1) - { - loaded_ok = LoadPoem(data_filename, position); - Resize(); - } - else - { - last_poem_start = 0; - PoetryNotify("Search string not found."); - } - } -} - -// Copy a string to the clipboard -#ifdef __WXMSW__ -void CopyToClipboard(HWND handle, char *s) -{ - int length = strlen(s); - HANDLE hGlobalMemory = GlobalAlloc(GHND, (DWORD) length + 1); - if (hGlobalMemory) - { -#ifdef __WINDOWS_386__ - LPSTR lpGlobalMemory = MK_FP32(GlobalLock(hGlobalMemory)); -#else - LPSTR lpGlobalMemory = (LPSTR)GlobalLock(hGlobalMemory); -#endif - int i, j = 0; - for (i = 0; i < length; i ++) - { - if (s[i] == '@') - { - i++; - switch (s[i]) - { - case 'P': - break; - case 'T': - case 'A': - default: - i ++; - break; - } - } - else - { - lpGlobalMemory[j] = s[i]; - j ++; - } - } - - GlobalUnlock(hGlobalMemory); - OpenClipboard(handle); - EmptyClipboard(); - SetClipboardData(CF_TEXT, hGlobalMemory); - CloseClipboard(); - } -} -#endif - -bool MyApp::OnInit() -{ - poem_buffer = new char[buf_size]; - - GreyPen = new wxPen("LIGHT GREY", THICK_LINE_WIDTH, wxSOLID); - DarkGreyPen = new wxPen("GREY", THICK_LINE_WIDTH, wxSOLID); - WhitePen = new wxPen("WHITE", THICK_LINE_WIDTH, wxSOLID); - - HelpController = new wxHelpController(); - HelpController->Initialize("wxpoem"); - - CreateFonts(); - - ReadPreferences(); - - // Seed the random number generator - time_t current_time; - - (void)time(¤t_time); - srand((unsigned int)current_time); - -// randomize(); - pages[0] = 0; - - TheMainWindow = new MainWindow(NULL, -1, "wxPoem", wxPoint(XPos, YPos), wxSize(100, 100), wxCAPTION|wxMINIMIZE_BOX|wxSYSTEM_MENU); - -#ifdef wx_x - TheMainWindow->SetIcon(Icon("wxpoem")); -#endif - - TheMainWindow->canvas = new MyCanvas(TheMainWindow, -1, wxDefaultPosition, wxDefaultSize); - - popupMenu = new wxMenu("", (wxFunction)PopupFunction); - popupMenu->Append(POEM_NEXT, "Next poem/page"); - popupMenu->Append(POEM_PREVIOUS, "Previous page"); - popupMenu->AppendSeparator(); - popupMenu->Append(POEM_SEARCH, "Search"); - popupMenu->Append(POEM_NEXT_MATCH, "Next match"); - popupMenu->Append(POEM_COPY, "Copy to clipboard"); - popupMenu->Append(POEM_MINIMIZE, "Minimize"); - popupMenu->AppendSeparator(); - popupMenu->Append(POEM_BIGGER_TEXT, "Bigger text"); - popupMenu->Append(POEM_SMALLER_TEXT, "Smaller text"); - popupMenu->AppendSeparator(); - popupMenu->Append(POEM_ABOUT, "About wxPoem"); - popupMenu->AppendSeparator(); - popupMenu->Append(POEM_EXIT, "Exit"); - - if (argc > 1) - { - index_filename = copystring(argv[1]); - data_filename = copystring(argv[1]); - } - else - { - index_filename = DEFAULT_POETRY_IND; - data_filename = DEFAULT_POETRY_DAT; - } - TryLoadIndex(); - -#ifdef __WXMSW__ - Corner1 = new wxIcon("icon_1"); - Corner2 = new wxIcon("icon_2"); - Corner3 = new wxIcon("icon_3"); - Corner4 = new wxIcon("icon_4"); -#endif -#if defined(__WXGTK__) || defined(__WXMOTIF__) - Corner1 = new wxIcon( corner1_xpm ); - Corner2 = new wxIcon( corner2_xpm ); - Corner3 = new wxIcon( corner3_xpm ); - Corner4 = new wxIcon( corner4_xpm ); -#endif - - TheMainWindow->GetIndexLoadPoem(); - TheMainWindow->Resize(); - TheMainWindow->Show(TRUE); - - return TRUE; -} - -int MyApp::OnExit() -{ - if (backingBitmap) - delete backingBitmap; - delete HelpController; - delete GreyPen; - delete DarkGreyPen; - delete WhitePen; - - delete Corner1; - delete Corner2; - delete Corner3; - delete Corner4; - - delete NormalFont; - delete BoldFont; - delete ItalicFont; - delete poem_buffer; - - return 0; -} - -void MainWindow::OnCloseWindow(wxCloseEvent& WXUNUSED(event)) -{ - WritePreferences(); - this->Destroy(); -} - -void MainWindow::OnChar(wxKeyEvent& event) -{ - canvas->OnChar(event); -} - -BEGIN_EVENT_TABLE(MyCanvas, wxPanel) - EVT_MOUSE_EVENTS(MyCanvas::OnMouseEvent) - EVT_CHAR(MyCanvas::OnChar) - EVT_PAINT(MyCanvas::OnPaint) -END_EVENT_TABLE() - -// Define a constructor for my canvas -MyCanvas::MyCanvas(wxFrame *frame, wxWindowID id, const wxPoint& pos, const wxSize& size): - wxPanel(frame, id, pos, size) -{ -} - -// Define the repainting behaviour -void MyCanvas::OnPaint(wxPaintEvent& WXUNUSED(event)) -{ - wxPaintDC dc(this); - - if (backingBitmap) - { - int xx, yy; - TheMainWindow->GetClientSize(&xx, &yy); - - wxMemoryDC memDC; - memDC.SelectObject(* backingBitmap); - dc.Blit(0, 0, backingBitmap->GetWidth(), backingBitmap->GetHeight(), &memDC, 0, 0); - } -} - -void MyCanvas::OnMouseEvent(wxMouseEvent& event) -{ - float x, y; - event.Position(&x, &y); - static int startPosX, startPosY, startFrameX, startFrameY; - - event.Position(&x, &y); - - if (event.RightDown()) - { - // Versions from wxWin 1.67 are probably OK -#if 0 // wx_motif - FakePopupMenu(popupMenu, x, y); -#else - PopupMenu(popupMenu, (int)x, (int)y ); -#endif - } - else if (event.LeftDown()) - { - this->CaptureMouse(); - int x1 = (int)x; - int y1 = (int)y; - ClientToScreen(&x1, &y1); - startPosX = x1; - startPosY = y1; - GetParent()->GetPosition(&startFrameX, &startFrameY); - } - else if (event.LeftUp()) - this->ReleaseMouse(); - else if (event.Dragging() && event.LeftIsDown()) - { - int x1 = (int)x; - int y1 = (int)y; - ClientToScreen(&x1, &y1); - - int dX = x1 - startPosX; - int dY = y1 - startPosY; - GetParent()->Move(startFrameX + dX, startFrameY + dY); - } -} - -// Process characters -void MyCanvas::OnChar(wxKeyEvent& event) -{ - switch (event.KeyCode()) - { - case 'n': - case 'N': - // Next match - TheMainWindow->Search(FALSE); - break; - case 's': - case 'S': - // New search - TheMainWindow->Search(TRUE); - break; - case WXK_SPACE: - // Another poem - TheMainWindow->NextPage(); - break; - case 27: - TheMainWindow->Close(TRUE); - default: - break; - } - } - -// Load index file -int LoadIndex(char *file_name) -{ - long data; - FILE *index_file; - - int i = 0; - char buf[100]; - - if (file_name) - sprintf(buf, "%s.idx", file_name); - if (! (file_name && (index_file = fopen(buf, "r")))) - return 0; - else - { - fscanf(index_file, "%ld", &nitems); - - for (i = 0; i < nitems; i++) - { - fscanf(index_file, "%ld", &data); - poem_index[i] = data; - } - fclose(index_file); - - return 1; - } -} - -// Get index -int GetIndex() -{ - int indexn = 0; - - indexn = (int)(rand() % nitems); - - if ((indexn < 0) || (indexn > nitems)) - { PoetryError("No such poem!"); - return -1; - } - else - return indexn; -} - -// Read preferences -void ReadPreferences() -{ - wxGetResource("wxPoem", "FontSize", &pointSize); - wxGetResource("wxPoem", "X", &XPos); - wxGetResource("wxPoem", "Y", &YPos); -} - -// Write preferences to disk -void WritePreferences() -{ -#ifdef __WXMSW__ - TheMainWindow->GetPosition(&XPos, &YPos); - wxWriteResource("wxPoem", "FontSize", pointSize); - wxWriteResource("wxPoem", "X", XPos); - wxWriteResource("wxPoem", "Y", YPos); -#endif -} - -// Load a poem from given file, at given point in file. -// If position is > -1, use this for the position in the -// file, otherwise use index[index_ptr] to find the correct position. -bool LoadPoem(char *file_name, long position) -{ - int ch = 0; - int i = 0; -// int j = 0; -// int indexn = 0; - char buf[100]; - long data; - FILE *data_file; - - paging = FALSE; - current_page = 0; - - if (file_name) - sprintf(buf, "%s.dat", file_name); - - if (! (file_name && (data_file = fopen(buf, "r")))) - { - sprintf(error_buf, "Data file %s not found.", buf); - PoetryError(error_buf); - return FALSE; - } - else - { - if (position > -1) - data = position; - else - data = poem_index[index_ptr]; - - fseek(data_file, data, SEEK_SET); - - ch = 0; - i = 0; - while ((ch != EOF) && (ch != '#')) - { - ch = getc(data_file); - // Add a linefeed so it will copy to the clipboard ok - if (ch == 10) - { - poem_buffer[i] = 13; - i++; - } - - poem_buffer[i] = ch; - i ++; - - if (i == buf_size) - { - sprintf(error_buf, "%s", "Poetry buffer exceeded."); - PoetryError(error_buf); - return FALSE; - } - } - fclose(data_file); - poem_buffer[i-1] = 0; - return TRUE; - } -} - -// Do the search -long MainWindow::DoSearch(void) -{ - if (!search_string) - return FALSE; - - FILE *file; - long i = 0; - int ch = 0; - char buf[100]; - long find_start; - long previous_poem_start; - - bool found = FALSE; - int search_length = strlen(search_string); - - if (same_search) - { - find_start = last_find + 1; - previous_poem_start = last_poem_start; - } - else - { - find_start = 0; - last_poem_start = 0; - previous_poem_start = -1; - } - - if (data_filename) - sprintf(buf, "%s.dat", data_filename); - - if (! (data_filename && (file = fopen(buf, "r")))) - { - sprintf(error_buf, "Poetry data file %s not found\n", buf); - PoetryError(error_buf); - return FALSE; - } - - fseek(file, find_start, SEEK_SET); - - while ((ch != EOF) && !found) - { - ch = getc(file); - ch |= 0x0020; // Make lower case - - // Only match if we're looking at a different poem - // (no point in displaying the same poem again) - if ((ch == search_string[i]) && (last_poem_start != previous_poem_start)) - { - if (i == 0) - last_find = ftell(file); - if (i == search_length-1) - found = TRUE; - i ++; - } - else - i = 0; - - if (ch == '#') - { - ch = getc(file); - last_poem_start = ftell(file); - } - } - fclose(file); - if (ch == EOF) - last_find = -1; - - if (found) - { - return last_poem_start; - } - else - return -1; -} - -// Set up poetry filenames, preferences, load the index -// Load index (or compile it if none found) -void TryLoadIndex() -{ - index_ok = LoadIndex(index_filename); - if (!index_ok || (nitems == 0)) - { - PoetryError("Index file not found; will compile new one", "wxPoem"); - index_ok = Compile(); - } -} - -// Error message -void PoetryError(char *msg, char *caption) -{ - wxMessageBox(msg, caption, wxOK|wxICON_EXCLAMATION); -} - -// Notification (change icon to something appropriate!) -void PoetryNotify(char *Msg, char *caption) -{ - wxMessageBox(Msg, caption, wxOK | wxICON_INFORMATION); -} - -// Build up and save an index into the poetry data file, for -// rapid random access -bool Compile(void) -{ - FILE *file; - long i = 0; - int j; - int ch = 0; - char buf[100]; - - if (data_filename) - sprintf(buf, "%s.dat", data_filename); - - if (! (data_filename && (file = fopen(buf, "r")))) - { - sprintf(error_buf, "Poetry data file %s not found\n", buf); - PoetryError(error_buf); - return FALSE; - } - - nitems = 0; - - // Do first one (?) - poem_index[nitems] = 0; - nitems ++; - - // Do rest - while (ch != EOF) - { - ch = getc(file); - i ++; - if (ch == '#') - { - ch = getc(file); - long data; - data = ftell(file); - poem_index[nitems] = data; - nitems ++; - } - } - fclose(file); - - if (index_filename) - sprintf(buf, "%s.idx", index_filename); - if (! (data_filename && (file = fopen(buf, "w")))) - { - sprintf(error_buf, "Poetry index file %s cannot be created\n", buf); - PoetryError(error_buf); - return FALSE; - } - - fprintf(file, "%ld\n\n", nitems); - for (j = 0; j < nitems; j++) - fprintf(file, "%ld\n", poem_index[j]); - - fclose(file); - PoetryNotify("Poetry index compiled."); - return TRUE; -} - -void PopupFunction(wxMenu& /*menu*/, wxCommandEvent& event) -{ - switch (event.GetId()) - { - case POEM_NEXT: - // Another poem/page - TheMainWindow->NextPage(); - break; - case POEM_PREVIOUS: - // Previous page - TheMainWindow->PreviousPage(); - break; - case POEM_SEARCH: - // Search - with dialog - TheMainWindow->Search(TRUE); - break; - case POEM_NEXT_MATCH: - // Search - without dialog (next match) - TheMainWindow->Search(FALSE); - break; - case POEM_MINIMIZE: - TheMainWindow->Iconize(TRUE); - break; -#ifdef __WXMSW__ - case POEM_COPY: - // Copy current poem to the clipboard - CopyToClipboard((HWND) TheMainWindow->GetHWND(), poem_buffer); - break; -#endif - case POEM_COMPILE: - // Compile index - Compile(); - break; - case POEM_BIGGER_TEXT: - { - pointSize ++; - CreateFonts(); - TheMainWindow->Resize(); - break; - } - case POEM_SMALLER_TEXT: - { - if (pointSize > 2) - { - pointSize --; - CreateFonts(); - TheMainWindow->Resize(); - } - break; - } - case POEM_HELP_CONTENTS: - { - HelpController->LoadFile("wxpoem"); - HelpController->DisplayContents(); - break; - } - case POEM_ABOUT: - { - (void)wxMessageBox("wxPoem Version 1.1\nJulian Smart (c) 1995", - "About wxPoem", wxOK, TheMainWindow); - break; - } - case POEM_EXIT: - // Exit - TheMainWindow->Close(TRUE); - break; - default: - break; - } -} diff --git a/samples/wxpoem/wxpoem.dat b/samples/wxpoem/wxpoem.dat deleted file mode 100644 index c03e49465d..0000000000 --- a/samples/wxpoem/wxpoem.dat +++ /dev/null @@ -1,2532 +0,0 @@ -@T A Thunderstorm in Town - -She wore a new "terra-cotta" dress, -And we stayed, because of the pelting storm, -Within the hansom's dry recess, -Though the horse had stopped; yea, motionless -We sat on, snug and warm. - -Then the downpour ceased, to my sharp sad pain -And the glass that had screened our forms before -Flew up, and out she sprang to her door: -I should have kissed her if the rain -Had lasted a minute more. - -@A Thomas Hardy -# -They say my verse is sad: no wonder; -Its narrow measure spans -Tears of eternity, and sorrow, -Not mine, but man's. - -This is for all ill-treated fellows -Unborn and unbegot, -For them to read when they're in trouble -And I am not. - -@A A. E. Housman -# -@T On a Day's Stint - -And long ere dinner-time I have -Full eight close pages wrote. -What, Duty, hast thou now to crave? -Well done, Sir Walter Scott! - -@A Sir Walter Scott -# -@T The Choir Boy - -And when he sang in choruses -His voice o'ertopped the rest, -Which is very inartistic, -But the public like that best. - -@A Anonymous -# -@T For Johnny - -Do not despair -For Johnny-head-air; -He sleeps as sound -As Johnny underground. - -Fetch out no shroud -For Johnny-in-the-cloud; -And keep your tears -For him in after years. - -Better by far -For Johnny-the-bright-star, -To keep your head, -And see his children fed. - -@A John Pudney -# -@T Cock-Crow - -Out of the wood of thoughts that grows by night -To be cut down by the sharp axe of light, - -Out of the night, two cocks together crow, -Cleaving the darkness with a silver blow: -And bright before my eyes twin trumpeters stand, -Heralds of splendour, one at either hand, -Each facing each as in a coat of arms: -The milkers lace their boots up at the farms. - -@A Edward Thomas -# -@T After Long Silence - -Speech after long silence; it is right, -All other lovers being estranged or dead, -Unfriendly lamplight hid under its shade, -The curtains drawn upon unfriendly night, -That we descant and yet again descant -Upon the supreme theme of Art and Song: -Bodily decrepitude is wisdom; young -We loved each other and were ignorant. - -@A W. B. Yeats -# -@T Clouds - -Down the blue night the unending columns press -In noiseless tumult, break and wave and flow, -Now tread the far South, or lift rounds of snow -Up to the white moon's hidden loveliness. -Some pause in their grave wandering comradeless, -And turn with profound gesture vague and slow, -As who would pray good for the world, but know -Their benediction empty as they bless. - -They say that the Dead die not, but remain -Near to the rich heirs of their grief and mirth. -I think they ride the calm mid-heaven, as these, -In wise majestic melancholy train, -And watch the moon, and the still-raging seas, -And men coming and going on the earth. - -@A Rupert Brooke -# -@T If I should ever by Chance - -If I should ever by chance grow rich -I'll buy Codham, Cockridden, and Childerditch, -Roses, Pyrgo, and Lapwater, -And let them all to my elder daughter. -The rent I shall ask of her will be only -Each year's violets, white and lonely, -The first primroses and orchises - -She must find them before I do, that is. -But if she finds a blossom on furze -Without rent they shall all for ever be hers, -Codham, Cockridden, and Childerditch, -Roses, Pyrgo, and Lapwater, - -I shall give them all to my elder daughter. - -@A Edward Thomas -# -@T Adlestrop - -Yes, I remember Adlestrop - -The name, because one afternoon -Of heat the express-train drew up there -Unwontedly. It was late June. - -The steam hissed. Someone cleared his throat. -No one left and no one came -On the bare platform. What I saw -Was Adlestrop - only the name - -And willows, willow-herb, and grass, -And meadowsweet, and haycocks dry, -No whit less still and lonely fair -Than the high cloudlets in the sky. - -And for that minute a blackbird sang -Close by, and round him, mistier, -Farther and farther, all the birds -Of Oxfordshire and Gloucestershire. - -@A Edward Thomas -# -@T Tall Nettles - -Tall nettles cover up, as they have done -These many springs, the rusty harrow, the plough -Long worn out, and the roller made of stone: -Only the elm butt tops the nettles now. - -This corner of the farmyard I like most: -As well as any bloom upon a flower -I like the dust on the nettles, never lost -Except to prove the sweetness of a shower. - -@A Edward Thomas -# -@T The Cherry Trees - -The cherry trees bend over and are shedding -On the old road where all that passed are dead, -Their petals, strewing the grass as for a wedding -This early May morn when there is none to wed. - -@A Edward Thomas -# -@T What will they do? - -What will they do when I am gone? It is plain -That they will do without me as the rain -Can do without the flowers and the grass -That profit by it and must perish without. -I have but seen them in the loud street pass; -And I was naught to them. I turned about -To see them disappearing carelessly. -But what if I in them as they in me -Nourished what has great value and no price? -Almost I thought that rain thirsts for a draught -Which only in the blossom's chalice lies, -Until that one turned back and lightly laughed. - -@A Edward Thomas -# -@T The Lane - -Some day, I think, there will be people enough -In Froxfield to pick all the blackberries -Out of the hedges of Green Lane, the straight -Broad lane where now September hides herself -In bracken and blackberry, harebell and dwarf gorse. -Today, where yesterday a hundred sheep -Were nibbling, halcyon bells shake to the sway -Of waters that no vessel ever sailed... -It is a kind of spring: the chaffinch tries -His song. For heat it is like summer too. -This might be winter's quiet. While the glint -Of hollies dark in the swollen hedges lasts - -One mile - and those bells ring, little I know -Or heed if time be still the same, until -The lane ends and once more all is the same. - -@A Edward Thomas -# -@T In Memoriam (Easter, 1915) - -The flowers left thick at nightfall in the wood -This Eastertide call into mind the men, -Now far from home, who, with their sweethearts, should -Have gathered them and will do never again. - -@A Edward Thomas -# -@T Failure - -Because God put His adamantine fate -Between my sullen heart and its desire, -I swore that I would burst the Iron Gate, -Rise up, and curse Him on His throne of fire. -Earth shuddered at my crown of blasphemy, -But Love was as a flame about my feet; -Proud up the Golden Stair I strode; and beat -Thrice on the Gate, and entered with a cry - - -All the great courts were quiet in the sun, -And full of vacant echoes: moss had grown -Over the glassy pavement, and begun -To creep within the dusty council-halls. -An idle wind blew round an empty throne -And stirred the heavy curtains on the walls. - -@A Rupert Brooke -# -@T Sonnet - -I said I splendidly loved you; it's not true. -Such long swift tides stir not a land-locked sea. -On gods or fools the high risk falls - on you - -The clean clear bitter-sweet that's not for me. -Love soars from earth to ecstasies unwist. -Love is flung Lucifer-like from Heaven to Hell. -But - there are wanderers in the middle mist, -Who cry for shadows, clutch, and cannot tell -Whether they love at all, or, loving, whom: -An old song's lady, a fool in fancy dress, -Or phantoms, or their own face on the gloom; -For love of Love, or from heart's loneliness. -Pleasure's not theirs, nor pain. They doubt, and sigh, -And do not love at all. Of these am I. - -@A Rupert Brooke -# -@T The Hill - -Breathless, we flung us on the windy hill, -Laughed in the sun, and kissed the lovely grass. -You said, `Through glory and ecstasy we pass; -Wind, sun, and earth remain, the birds sing still, -When we are old, are old...' `And when we die -All's over that is ours; and life burns on -Through other lovers, other lips,' said I, -`Heart of my heart, our heaven is now, is won!' - -`We are Earth's best, that learnt her lesson here. -Life is our cry. We have kept the faith!' we said; -`We shall go down with unreluctant tread -Rose-crowned into the darkness!' ...Proud we were, -And laughed, that had such brave true things to say, -- And then you suddenly cried, and turned away. - -@A Rupert Brooke -# -@T Song - -All suddenly the wind comes soft, -And Spring is here again; -And the hawthorn quickens with buds of green, -And my heart with buds of pain. - -My heart all Winter lay so numb, -The earth so dead and frore, -That I never thought the Spring would come, -Or my heart wake any more. - -But Winter's broken and earth has woken. -And the small birds cry again; -And the hawthorn hedge puts forth its buds, -And my heart puts forth its pain. - -@A Rupert Brooke -# -@T The Way that Lovers Use - -The way that lovers use is this: -They bow, catch hands, with never a word, -And their lips meet, and they do kiss, -- So I have heard. - -They queerly find some healing so, -And strange attainment in the touch; -There is a secret lovers know, -- I have read as much. - -And theirs is no longer joy nor smart, -Changing or ending, night or day; -But mouth to mouth, and heart on heart, -- So lovers say. - -@A Rupert Brooke -# -@T Song - -The way of love was thus. -He was born one winter's morn -With hands delicious, -And it was well with us. - -Love came our quiet way, -Lit pride in us, and died in us, -All in a winter's day. -There is no more to say. - -@A Rupert Brooke -# -@T Sonnet Reversed - -Hand trembling towards hand; the amazing lights -Of heart and eye. They stood on supreme heights. - -Ah, the delirious weeks of honeymoon! -Soon they returned, and after strange adventures, -Settled at Balham by the end of June. -Their money was in Can. Pasc. B. Debentures, -And in Antofagastas. Still he went -Cityward daily; still she did abide -At home. And both were really quite content -With work and social pleasures. Then they died. -They left three children (besides George, who drank): -The eldest Jane, who married Mr Bell, -William, the head-clerk in the County Bank, -And Henry, a stock-broker, doing well. - -@A Rupert Brooke -# -@T A White Rose - -The red rose whispers of passion, -And the white rose breathes of love; -O, the red rose is a falcon, -And the white rose is a dove. - -But I send you a cream-white rosebud -With a flush on its petal tips; -For the love that is purest and sweetest -Has a kiss of desire on the lips. - -@A John Boyle O'Reilly -# -@T Urceus Exit - -I intended an Ode, -And it turn'd to a Sonnet. -It began 'a la mode', -I intended an Ode; -But Rose cross'd the road -In her latest new bonnet; -I intended an Ode; -And it turn'd to a Sonnet. - -@A Austin Dobson -# -@T Pippa's Song - -The year's at the spring, -And day's at the morn; -Morning's at seven; -The hill-side's dew-pearl'd; -The lark's on the wing; -The snail's on the thorn; -God's in His heaven - -All's right with the world! - -@A Robert Browning -# -@T Song - -She is not fair to outward view -As many maidens be, -Her loveliness I never knew -Until she smiled on me; -O, then I saw her eye was bright, -A well of love, a spring of light! - -But now her looks are coy and cold, -To mine they ne'er reply, -And yet I cease not to behold -The love-light in her eye: -Her very frowns are fairer far -Than smiles of other maidens are. - -@A Hartley Coleridge -# -@T Rondeau - -Jenny kiss'd me when we met, -Jumping from the chair she sat in; -Time, you thief, who love to get -Sweets into your list, put that in! -Say I'm weary, say I'm sad, -Say that health and wealth have miss'd me, -Say I'm growing old, but add, -Jenny kiss'd me. - -@A J. H. Leigh Hunt -# -@T A Drinking Song - -Bacchus must now his power resign - -I am the only God of Wine! -It is not fit the wretch should be -In competition set with me, -Who can drink ten times more than he. - -Make a new world, ye powers divine! -Stock'd with nothing else but Wine: -Let Wine its only product be, -Let Wine be earth, and air, and sea - -And let that Wine be all for me! - -@A Henry Carey -# -I never had a piece of toast -Particularly long and wide, -But fell upon the sanded floor -And always on the buttered side. - -@A James Payn -# -@T Summer Evening - -The frog, half fearful, jumps across the path, -And little mouse that leaves its hole at eve -Nimbles with timid dread beneath the swath; -My rustling steps awhile their joys deceive, -Till past - and then the cricket sings more strong, -And grasshoppers in merry mood still wear -The short night weary with their fretting song. -Up from behind the mole-hill jumps the hare, -Cheat of his chosen bed, and from the bank -The yellowhammer flutters in short fears -From off its nest hid in the grasses rank, -And drops again when no more noise it hears. -Thus nature's human link and endless thrall, -Proud man, still seems the enemy of all. - -@A John Clare -# -@T Diamond Cut Diamond - -Two cats -One up a tree -One under the tree -The cat up a tree is he -The cat under the tree is she -The tree is witch elm, just incidentally. -He takes no notice of she, she takes no notice of he. -He stares at the woolly clouds passing, she stares at the tree. -There's been a lot written about cats, by Old Possum, Yeats and -Company -But not Alfred de Musset or Lord Tennyson or Poe or anybody -Wrote about one cat under, and one cat up, a tree. -God knows why this should be left for me -Except I like cats as cats be -Especially one cat up -And one cat under -A witch elm -Tree. - -@A Ewart Milne -# -@T Time and Love - -When I have seen by Time's fell hand defaced -The rich proud cost of out-worn buried age; -When sometime lofty towers I see down-razed, -And brass eternal slave to mortal rage; - -When I have seen the hungry ocean gain -Advantage on the kingdom of the shore, -And the firm soil win of the watery main, -Increasing store with loss, and loss with store; - -When I have seen such interchange of state, -Or state itself confounded to decay, -Ruin hath taught me thus to ruminate - -That Time will come and take my Love away: - -- This thought is as a death, which cannot choose -But weep to have that which it fears to lose. - -@A William Shakespeare -# -Under the greenwood tree -Who loves to lie with me, -And turn his merry note -Unto the sweet bird's throat - -Come hither, come hither, come hither ! -Here shall he see -No enemy -But winter and rough weather. - -Who doth ambition shun -And loves to live i' the sun, -Seeking the food he eats -And pleased with what he gets - -Come hither, come hither, come hither! -Here shall he see -No enemy -But winter and rough weather. - -@A William Shakespeare -# -@T Absence - -Being your slave, what should I do but tend -Upon the hours and times of your desire? -I have no precious time at all to spend -Nor services to do, till you require: - -Nor dare I chide the world-without-end hour -Whilst I, my sovereign, watch the clock for you, -Nor think the bitterness of absence sour -When you have bid your servant once adieu: - -Nor dare I question with my jealous thought -Where you may be, or your affairs suppose, -But like a sad slave, stay and think of nought -Save, where you are, how happy you make those;- - -So true a fool is love, that in your will, -Though you do anything, he thinks no ill. - -@A William Shakespeare -# -To me, fair Friend, you never can be old, -For as you were when first your eye I eyed -Such seems your beauty still. Three winters cold -Have from the forests shook three summers' pride; -Three beauteous springs to yellow autumn turn'd -In process of the seasons have I seen, -Three April perfumes in three hot Junes burn'd, -Since first I saw you fresh, which yet are green. - -Ah! yet doth beauty, like a dial-hand, -Steal from his figure, and no pace perceived; -So your sweet hue, which methinks still doth stand, -Hath motion, and mine eye may be deceived: - -For fear of which, hear this, thou age unbred,- -Ere you were born, was beauty's summer dead. - -@A William Shakespeare -# -@T To His Love - -Shall I compare thee to a summer's day? -Thou art more lovely and more temperate: -Rough winds do shake the darling buds of May, -And summer's lease hath all too short a date: - -Sometime too hot the eye of heaven shines, -And often is his gold complexion dimm'd: -And every fair from fair sometime declines, -By chance, or nature's changing course, untrimm'd. - -But thy eternal summer shall not fade -Nor lose possession of that fair thou owest; -Nor shall death brag thou wanderest in his shade, -When in eternal lines to time thou growest: - -So long as men can breathe, or eyes can see, -So long lives this, and this gives life to thee. - -@A William Shakespeare -# -@T Carpe Diem - -O Mistress, where are you roaming? -O stay and hear! your true-love's coming -That can sing both high and low; -Trip no further, pretty sweeting, -Journey's end in lovers' meeting - -Every wise man's son doth know. - -What is love? 'tis not hereafter; -Present mirth hath present laughter; -What's to come is still unsure; -In delay there lies no plenty,- -Then come kiss me, Sweet-and-twenty, -Youth's a stuff will not endure. - -@A William Shakespeare -# -@T A Sea Dirge - -Full fathom five thy father lies: -Of his bones are coral made; -Those are peals that were his eyes; -Nothing of him that doth fade -But doth suffer a sea-change -Into something rich and strange. -Sea-nymphs hourly ring his knell; -Hark! now I hear them,- -Ding, dong, bell. - -@A William Shakespeare -# -@T On the Tombs in Westminster Abbey - -Mortality, behold and fear, -What a change of flesh is here! -Think how many royal bones -Sleep within these heaps of stones; -Here they lie, had realms and lands, -Who now want strength to stir their hands, -Where from their pulpits seal'd with dust -They preach, `In greatness is no trust.' -Here's an acre sown indeed -With the richest royallest seed -That the earth did e'er suck in -Since the first man died for sin: -Here the bones of birth have cried -`Though gods they were, as men they died!' -Here are sands, ignoble things, -Dropt from the ruin'd sides of kings: -Here's a world of pomp and state -Buried in dust, once dead by fate. - -@A F. Beaumont -# -@T The Terror of Death - -When I have fears that I may cease to be -Before my pen has glean'd my teeming brain, -Before high-piled books, in charact'ry -Hold like rich garners the full-ripen'd grain; - -When I behold, upon the night's starr'd face, -Huge cloudy symbols of a high romance, -And think that I may never live to trace -Their shadows, with the magic hand of chance; - -And when I feel, fair creature of an hour! -That I shall never look upon thee more, -Never have relish in the fairy power -Of unreflecting love - then on the shore - -Of the wide world I stand alone, and think -Till love and fame to nothingness do sink. - -@A J. Keats -# -@T Young and Old - -When all the world is young, lad, -And all the trees are green; -And every goose a swan, lad, -And every lass a queen; -Then hey for boot and horse, lad, -And round the world away; -Young blood must have its course, lad, -And every dog his day. - -When all the world is old, lad, -And all the trees are brown; -And all the sport is stale, lad, -And all the wheels run down; -Creep home, and take your place there, -The spent and maimed among: -God grant you find one face there, -You loved when all was young. - -@A C. Kingsley -# -@T Pied Beauty - -Glory be to God for dappled things- -For skies of couple-colour as a brindled cow; -For rose-moles all in stipple upon trout that swim; -Fresh-firecoal chestnut-falls; finches' wings; -Landscape plotted and pieced - fold, fallow, and plough; -And all trades, their gear and tackle and trim. - -All things counter, original, spare, strange; -Whatever is fickle, freckled (who knows how?) -With swift, slow; sweet, sour; adazzle, dim; -He fathers-forth whose beauty is past change: -Praise Him. - -@A Gerard Manley-Hopkins -# -@T The Lake Isle of Innisfree - -I will arise, and go to Innisfree, -And a small cabin build there, of clay and wattles made; -Nine bean rows will I have there, a hive for the hiney bee, -And live alone in the bee-loud glade. - -And I shall have some peace there, for peace comes dropping slow, -Dropping from the veils of the morning to where the cricket sings; -There midnight's all a-glimmer, and noon a purple glow, -And evening full of the linnet's wings. - -I will arise and go now, for always night and day -I hear lake water lapping with low sounds by the shores; -While I stand on the roadway, or on the pavements gray, -I hear it in the deep heart's core. - -@A W.B. Yeats -# -@T The Soldier - -If I should die, think only this of me: -That there's some corner of a foreign field -That is for ever England. There shall be -In that rich earth a richer dust concealed; -A dust whom England bore, shaped, made aware, -Gave, once, her flowers to love, her ways to roam, -Washed by the rivers, blest by suns of home. - -And think, this heart, all evil shed away, -A pulse in the eternal mind, no less -Gives somewhere back the thoughts by England given; -Her sights and sounds; dreams happy as her day; -And laughter, learnt of friends; and gentleness, -In hearts at peace, under an English heaven. - -@A Rupert Brooke -# -@T Towers - -Protected from the gales, we, -By the line of trees along the bank -From storms that batter Fife -And life here through the changing seasons - -Unchanging, a lonely beauty, -No reason to look to the rush -Beyond the rustle of the bushes. -But through the curtain of our trees, -The distant towers like castle turrets -Gleam by day and shine by night, -Holding, choking -Invisible souls within the shearing concrete height. - -@A Julian Smart -# -@T Break of Day - -Tis true, 'tis day; what though it be? -O wilt thou therefore rise from me? -Why should we rise, because 'tis light? -Did we lie down, because 'twas night? -Love which in spite of darkness brought us hither, -Should in despite of light keep us together. - -Light hath no tongue, but is all eye; -If it could speak as well as spy, -This were the worst, that it could say, -That being well, I fain would stay, -And that I loved my heart and honour so, -That I would not from him, that had them, go. - -Must business thee from hence remove? -Oh, that's the worst disease of love, -The poor, the foul, the false, love can -Admit. but not the busied man. -He which hath business, and makes love, doth do -Such wrong, as when a married man doth woo. - -@A John Donne -# -@T The Computation - -For the first twenty years, since yesterday, -I scarce believed, thou could'st be gone away, -For forty more, I fed on favours past, -And forty on hopes, that thou would'st, they might last. -Tears drowned one hundred, and sighs blew out two, -A thousand, I did neither think, nor do, -Or not divide, all being one thought of you; -Or in a thousand more, forget that too. -Yet call not this long life; but think that I -Am, by being dead, immortal; can ghosts die? - -@A John Dunne -# -@T A Red, Red Rose - -O, my love's like a red, red rose, -That's newly sprung in June. -O, my love's like the melodie, -That's sweetly play'd in tune. - -As fair art thou, my bonnie lass, -So deep in love am I, -And I will love thee still, my Dear, -Till a' the seas gang dry. - -Till a' the seas gang dry, my Dear, -And the rocks melt wi' the sun! -O, I will love thee still, my Dear, -While the sands o' life shall run. - -And fare thee weel, my only Love, -And fare thee weel a while! -And I will come again, my Love, -Tho' it were ten thousand mile! - -@A Robert Burns -# -@T On Charles II - -Here lies our sovereign Lord the King, -Whose word no man relies on, -Who never said a foolish thing -Nor ever did a wise one. - -@A Earl of Rochester -# -@T The Four Georges - -George the First was always reckoned -Vile - but viler George the Second; -And what mortal ever heard -Any good of George the Third? -When from earth the Fourth descended, -God be praised, the Georges ended! - -@A W.S. Landor -# -@T Frederick, Prince of Wales - -Here lies Fred, -Who was alive, and is dead, -Had it been his father, -I had much rather. -Had it been his brother, -Still better than another. -Had it been his sister, -No one would have missed her. -Had it been the whole generation, -Still better for the nation. -But since 'tis only Fred, -Who was alive, and is dead, -There's no more to be said. - -@A W.M. Thackeray -# -@T On an Old Woman - -Mycilla dyes her locks, 'tis said, -But 'tis a foul aspersion; -She buys them black, they therefore need -No subsequent immersion. - -@A W. Cowper -# -@T An Epitaph on Sir John Vanbrugh (Architect) - -Under this stone, reader, survey -Dead Sir John Vanbrugh's house of clay. -Lie heavy on him, earth! for he -Laid many heavy loads on thee. - -@A A. Evans -# -@T True Joy in Possession - -To have a thing is little, -If you're not allowed to show it, -And to know a thing is nothing -Unless others know you know it. - -@A Lord Neaves -# -@T To His Mistress Going To Bed - -Come, Madam, come, all rest my powers defy, -Until I labour, I in labour lie. -The foe oft-times having the foe in sight, -Is tired with standing though he never fight. -Off with that girdle, like heaven's zone glistering, -But a far fairer world encompassing. -Unpin that spangled breastplate which you wear, -That th'eyes of busy fools may be stopt there. -Unlace yourself, for that harmonious chime -Tells me from you, that now it is bed time. -Off with that happy busk, which I envy, -That still can be, and still can stand so nigh. -Your gown going off, such beauteous state reveals, -As when from flowry meads the hill's shadow steals. -@P -Off with that wiry coronet and show -The hairy diadem which on you doth grow: -Now off with those shoes, and then safely tread -In this love's hallowed temple, this soft bed. -In such white robes, heaven's angels used to be -Received by men; thou angel bring'st with thee -A heaven like Mahomet's Paradise; and though -Ill spirits walk in white, we easily know, -By this these angels from an evil sprite, -Those set our hairs, but these our flesh upright. - -Licence my roving hands, and let them go, -Before, behind, between, above, below. -O my America! my new-found-land, -My kingdom, safeliest when with one man manned, -My mine of precious stones, My empery, -How blest am I in this discovering thee! -To enter in these bonds, is to be free; -Then where my hand is set, my seal shall be. -@P -Full nakedness! All joys are due to thee, -As souls unbodied, bodies unclothed must be, -To taste whole joys. Gems which you women use -Are like Atlanta's balls, cast in men's views, -That when a fool's eye lighteth on a gem, -His earthly soul may covet theirs, not them. -Like pictures, or like books' gay coverings made -For lay-men, are all women this arrayed; -Themselves are mystic books, which only we -(Whom their imputed grace will dignify) -Must see revealed. Then since that I may know, -As liberally, as to a midwife, show -Thyself: cast all, yea, this white linen hence, -There is no penance due to innocence. - -To teach thee, I am naked first; why then -What needst thou have more covering than a man. - -@A John Donne -# -@T Cheltenham Waters - -Here lie I and my four daughters, -Killed by drinking Cheltenham waters. -Had we but stuck to Epsom salts, -We wouldn't have been in these here vaults. - -@A Anonymous -# -@T Hypocrisy - -Hypocrisy will serve as well -To propagate a church as zeal; -As persecution and promotion -Do equally advance devotion: -So round white stones will serve, they say, -As well as eggs to make hens lay. - -@A Samuel Butler -# -@T The Microbe - -The Microbe is so very small -You cannot make him out at all, -But many sanguine people hope -To see him through a microscope. -His jointed tongue that lies beneath -A hundred curious rows of teeth; -His seven tufted tails with lots -Of lovely pink and purple spots, -On each of which a pattern stands, -Composed of forty separate bands; -His eyebrows of a tender green; -All of these have never yet been seen - -But Scientists, who ought to know, -Assures us that they must be so... -Oh! let us never, never doubt -What nobody is sure about! - -@A Hilaire Belloc -# -@T Slug - -Slugs, soft upon damp carpets of rich food, -Make sullen love with bubbles and with sighs, -Silvery flaccid. They consider lewd -The use of eyes. - -@A John Pudney -# -@T The Doctor Prescribes - -A lady lately, that was fully sped -Of all the pleasures of the marriage-bed -Ask'd a physician, whether were more fit -For Venus' sports, the morning or the night? -The good old man made answer, as 'twas meet, -The morn more wholesome, but the night more sweet. -Nay then, i'faith, quoth she, since we have leisure, -We'll to't each morn for health, each night for pleasure. - -@A Anonymous -# -@T On Mary Ann - -Mary Ann has gone to rest, -Safe at last on Abraham's breast, -Which may be nuts for Mary Ann, -But is certainly rough on Abraham. - -@A Anonymous -# -@T Misfortunes never come Singly - -Making toast at the fireside, -Nurse fell in the grate and died; -And what makes it ten times worse, -All the toast was burnt with nurse. - -@A Harry Graham -# -@T Tender Heartedness - -Billy, in one of his nice new sashes, -Fell in the fire and was burnt to ashes; -Now, although the room grows chilly, -I haven't the heart to poke poor Billy. - -@A Harry Graham -# -@T Miss Twye - -Miss Twye was soaping her breasts in her bath -When she heard behind her a meaning laugh -And to her amazement she discovered -A wicked man in the bathroom cupboard. - -@A Gavin Ewart -# -@T The Old Loony of Lyme - -There was an old loony of Lyme, -Whose candour was simply sublime; -When they asked, 'Are you there?' -'Yes,' he said, 'but take care, -For I'm never "all there" at a time.' - -@A Anonymous -# -@T The Young Lady from Wantage - -There was a young lady from Wantage -Of whom the town clerk took advantage. -Said the borough surveyor: -'Indeed you must pay `er. -You've totally altered her frontage.' - -@A Anonymous -# -@T The Modern Hiawatha - -When he killed the Mudjokivis -Of the skin he made him mittens, -Made them with the fur side inside, -Made them with the skin side outside, -He, to get the warm side inside, -Put the inside skin side outside; -He, to get the cold side outside, -Put the warm side fur side inside. -That's why he put fur side inside, -Why he put the skin side outside, -Why he turned them inside outside. - -@A Anonymous -# -@T Is it a Month - -Is it a month since I and you -In the starlight of Glen Dubh -Stretched beneath a hazel bough -Kissed from ear and throat to brow, -Since your fingers, neck, and chin -Made the bars that fence me in, -Till Paradise seemed but a wreck -Near your bosom, brow and neck -And stars grew wilder, growing wise, -In the splendour of your eyes! -Since the weasel wandered near -Whilst we kissed from ear to ear -And the wet and withered leaves -Blew about your cap and sleeves, -Till the moon sank tired through the ledge -Of the wet and windy hedge? -And we took the starry lane -Back to Dublin town again. - -@A J. M. Synge -@A (1871-1909) -# -@T The Lark in the Clear Air - -Dear thoughts are in my mind, -And my soul soars enchanted, -As I hear the sweet lark sing -In the clear air of the day. -For a tender beaming smile -To my hope has been granted, -And tomorrow she shall hear -All my fond heart would say. - -I shall tell her all my love, -All my soul's adoration; -And I think she will hear me -And will not say me nay. -It is this that fills my soul -With its joyous elation, -As I hear the sweet lark sing -In the clear air of the day. - -@A Samuel Ferguson -@A (1810-1886) -# -@T The Self-Unseeing - -Here is the ancient floor, -Footworn and hollowed and thin, -Here was the former door -Where the dead feet walked in. - -She sat here in her chair, -Smiling into the fire; -He who played stood there, -Bowing it higher and higher. - -Childlike, I danced in a dream; -Blessings emblazoned that day; -Everything glowed with a gleam; -Yet we were looking away! - -@A Thomas Hardy -# -@T Cean Dubh Deelish (Darling Black Head) - -Put your head, darling, darling, darling, -Your darling black head my heart above; -O mouth of honey, with thyme for fragrance, -Who, with heart in breast, could deny you love? - -O many and many a young girl for me is pining, -Letting her locks of gold to the cold wind free, -For me, the foremost of our gay young fellows; -But I'd leave a hundred, pure love, for thee! - -Put your head, darling, darling, darling, -Your darling black head my heart above; -O mouth of honey, with thyme for fragrance, -Who, with heart in breast, could deny you love? - -@A Samuel Ferguson -@A (1810-1886) -# -@T From 'The Amores' - -Ring of mine, made to encircle my pretty mistress's finger, -Valuable only in terms of the giver's love, -Go, and good welcome! May she receive you with pleasure, -Slip you over her knuckle there and then. -May you fit her as well as she fits me, rub snugly -Around her finger, precisely the right size! -Lucky ring to be handled by my mistress! I'm developing -A miserable jealousy of my own gift. -But suppose I could be the ring, transformed in an instant -By some famous magician's art - -Then, when I felt like running my hand down Corinna's -Dress, and exploring her breasts, I'd work -Myself off her finger (tight squeeze or not) and by crafty -Cunning drop into her cleavage. Let's say -She was writing a private letter - I'd have to seal it, -@P -And a dry stone sticks on wax: -She's moisten me with her tongue. Pure bliss - provided -I didn't have to endorse any hostile remarks -Against myself. If she wanted to put me away in her -Jewel-box, I'd cling tighter, refuse to budge. -(Don't worry, my sweet, I'd never cause you discomfort, -or burden -Your slender finger with an unwelcome weight.) -Wear me whenever you take a hot shower, don't worry -If water runs under your gem - -Though I fancy the sight of you naked would arise my -passions, leave me -A ring of visibly virile parts... -Pure wishful thinking! On your way, then, little present, -And show her you come with all my love. - -@A Ovid -@A (BC 43-AD 17) -# -@T After an Interval - -After an interval, reading, here in the midnight, -With the great stars looking on -- all the starts of Orion looking, -And the silent Pleiades -- and the duo looking of Saturn and ruddy Mars; -Pondering, reading my own songs, after a long interval, -(sorrow and death familiar now) -Ere Closing the book, what pride! what joy! to find them -Standing so well the test of death and night, -And the duo of Saturn and Mars! - -@A Walt Whitman -# -@T A Last Poem - -A last poem, and a last, and yet another -- -O, when can I give over? -Must I drive the pen until the blood bursts from my nails -And my breath fails and I shake with fever? -Shall I never hear her whisper softly, -"But this is one written by you only, -And for me only; therefore, love, have done"? - -@A Robert Graves -# -I have no pain, dear Mother, now, -But, oh, I am so dry; -So connect me to a brewery, -And leave me there to die. - -@A Anonymous -# -@T Found Poem (from the Hound of the Baskervilles) - -I stooped, panting, and pressed my pistol -To the dreaful, shimmering head, -But it was useless to press the trigger, -The giant hound was dead. - -@A A. Conan Doyle -# -@T Passing through the Carron Iron Works - -We cam na here to view your warks, -In hopes to be mair wise, -But only, lest we gang to Hell, -It may be nae surprise. - -@A Robert Burns -# -@T Imitation of Pope: A Compliment to the Ladies - -Wondrous the Gods, more wondrous are the Men, -More Wondrous Wondrous still the Cock & Hen, -More Wondrous still the Table, Stool & Chair; -But Ah! More wondrous still the Charming Fair. - -@A William Blake -# -@T Upon the Nipples of Julia's Breast - -Have ye beheld (with much delight) -A red rose peeping through a white? -Or else a cherry (double grac'd) -Within a lily? Centre plac'd? -Or ever mark'd the pretty beam, -A strawberry shows half drown'd in cream? -Or seen rich rubies blushing through -A pure smooth pearl, and orient too? -So like to this, nay all the rest, -Is each neat niplet of her breast. - -@A Robert Herrick -# -@T Life - -When I consider life, 'tis all a cheat; -Yet, fooled with hope, men favour the deceit; -Trust on, and think tomorrow will repay: -Tomorrow's falser than the former day; -Lies worse; and while it says, we shall be blessed -With some new joys, cut off what we possessed. -Strange cozenage! None would live past years again, -Yet all hope pleasure in what yet remain; -And from the dregs of life think to receive -What the first sprightly running could not give. - -@A John Dryden -# -@T To a Yellow Hammer - -Poor yellow-breasted little thing, -I would thou had'st been on the wing, -'Ere 'twas my fate on thee to bring -Thy death so soon; -Thou'lt never more be heard to sing -In joyful tune. - -Too late I saw thee 'mongst the dust, -Gambling so gay in simple trust, -I knew that with my wheel I must -Thy life destroy; -How cruel quick my rubber crushed -Thee in thy joy. - -@A Anonymous -# -@T Wrecked - -A girl, a wheel, -A shock, a squeal, -A header, a thump, -A girl in a lump, -A bloomer all torn, -A maiden forlorn. - -@A Annymous -# -@T Gather ye Rosebuds - -Gather ye rosebuds while ye may, -Old Time is still a-flying; -And this same flower that smiles today -Tomorrow will be dying. - -The glorious lamp of heaven, the Sun, -The higher he's a-getting, -The sooner will his race be run, -And nearer he's to setting. - -That age is best, which is the first, -When youth and blood are warmer -But being spent, the worse, and worst -Times still succeed the former. - -Then be not coy, but use your time, -And while you may, go marry; -For having lost but once your prime, -You may for ever tarry. - -@A Robert Herrick -# -@T My Love's a Match - -My love's a match in beauty -For every flower that blows, -Her little ear's a lily, -Her velvet cheek a rose; -Her locks like gilly gowans -Hang golden to her knww. -If I were King of Ireland, -My Queen she'd surely be. - -Her eyes are fond forget-me-nots, -And no such snow is seen -Upon the heaving hawthorn bush -As crests her bodice green. -The thrushes when she's talking -Sit listening on the tree. -If I were King of Ireland, -My Queen she'd surely be. - -@A Alfred P. Graves -# -@T In a Gondola - -The moth's kiss, first! -Kiss me as if you made believe -You were not sure, this eve, -How my face, your flower, had pursed -Its petals up; so, here and there -You brush it, till I grow aware -Who wants me, and wide ope I burst. - -The bee's kiss, now! -Kiss me as if you enter'd gay -My heart at some noonday, -A bud that dares not disallow -The claim, so all is render'd up, -And passively its shatter'd cup -Over your head to sleep I bow. - -@A Robert Browning -# -@T To his Coy Mistress - -Had we but worlds enough, and time, -This coyness, Lady, were no crime. -We would sit down and think which way -To walk and pass our long love's day. -Thou by the Indian Ganges' side -Shouldst rubies find: I by the tide -Of Humber would complain. I would -Love you ten years before the Flood, -And you should, if you please, refuse -Till the conversion of the Jews. -My vegetable love should grow -Vaster than empires, and more slow; -An hundred years should go to praise -Thine eyes and on thy forehead gaze; -Two hundred to adore each breast, -But thirty thousand to the rest; -An age at least to every part, -And the last age should show your heart. -For, Lady, you deserve this state, -Nor would I love at a lower rate. -@P -But at my back I always hear -Time's winged chariot hurrying near; -And yonder all before us lie -Deserts of vast eternity. -Thy beauty shall no more be found, -Nor, in thy marble vault, shall sound -My echoing song: then worms shall try -That long preserved virginity, -And your quaint honour turn to dust, -And into ashes all my lust: -The grave's a fine and private place, -But none, I think, do there embrace. -@P -Now therefore, while the youthful hue -Sits on thy skin like morning dew, -And while thy willing soul transpires -At every port with instant fires, -Now let us sport us while we may, -And now, like amorous birds of prey, -Rather at once our time devour -Than languish in his slow-chapt power. -Let us roll all our strength and all -Our sweetness up into one ball, -And tear our pleasures with rough strife -Through the iron gates of life: -Thus, though we cannot make our sun -Stand still, yet we will make him run. - -@A Andrew Marvell -# -@T Destiny - -Somewhere there waiteth in this world of ours -For one lone soul another lonely soul, -Each choosing each through all the weary hours -And meeting strangely at one sudden goal. -Then blend they, like green leaves with golden flowers, -Into one beautiful and perfect whole; -And life's long night is ended, and the way -Lies open onward to eternal day. - -@A Edwin Arnold -# -@T A Stolen Kiss - -Now gentle sleep hath closed up those eyes -Which, waking, kept my boldest thoughts in awe; -And free access unto that sweet lip lies, -From whence I long the rosy breath to draw. - -Methinks no wrong it were, if I should steal -From those two melting rubies one poor kiss; -None sees the theft that would the theft reveal, -Nor rob I her of aught that she can miss; - -Nay, should I twenty kisses take away, -There would be little sign I would do so; -Why then should I this robbery delay? -O, she may wake, and therewith angry grow! - -Well, if she do, I'll back restore that one, -And twenty hundred thousand more for loan. - -@A George Wither -# -@T How do I love thee? - -How do I love thee? Let me count the ways. -I love thee to the depth and breadth and height -My soul can reach, when feeling out of sight -For the ends of Being and ideal Grace. -I love thee to the level of every day's -Most quiet need, by sun and candlelight. -I love thee freely, as men strive for Right; -I love thee purely, as they turn from Praise. -I love thee with the passion put to use -In my old griefs, and with my childhood's faith. -I love thee with a love I seemed to lose -With my lost saints, -- I love thee with the breath, -Smiles, tears, of all my life! -- and, if God choose, -I shall but love thee better after death. - -@A Elizabeth Barrett Browning -# -@T Old Man - -Old Man, or Lad's-love, -- in the name there's nothing -To one that knows not Lad's-love, or Old Man, -The hoar-green feathery herb, almost a tree, -Growing with rosemary and lavendar. -Even to one that knows it well, the names -Hald decorate, half perplex, the thing it is: -At least, what that is clings not to the names -In spite of time. And yet I like the names. - -The herb itself I like not, but for certain -I love it, as some day the child will love it -Who plucks a feather from the door-side bush -Whenever she goes in or out of the house. -Often she waits there, snipping the tips and shrivelling -The shreds at last on to the path, perhaps -@P -Thinking, perhaps of nothing, till she sniffs -Her finger and runs off. The bush is still -But half as tall as she, though it is as old; -So well she clips it. Not a word she says; -And I can only wonder hwo much hereafter -She will remember, with that bitter scent, -Of garden rows, and ancient damson-trees -Topping a hedge, a bent path to a door, -A low thick bush beside the door, and me -Forbidding her to pick. - -As for myself, -Where first I met the bitter scent is lost. -I, too, often shrivel the grey shreds, -Sniff them and think and sniff again and try -Once more to think what it is I am remembering, -Always in vain. I cannot like the scent, -Yet I would rather give up others more sweet, -With no meaning, that this bitter one. -@P -I have mislaid the key. I sniff the spray -And think of nothing; I see and I hear nothing; -Yet seem, too, to be listening, lying in wait -For what I should, yet never can, remember: -No garden appears, no path, no hoar-green bush -Of Lad's-love, or Old Man, no child beside, -Neither father nor mother, nor any playmate; -Only an avenue, dark and nameless, without end. - -@A Edward Thomas -# -@T The Manor Farm - -The rock-like mud unfroze a little and rills -Ran and sparkled down each side of the road -Under the catkins wagging in the hedge. -But earth would have her sleep out, spite of the sun; -Nor did I value that thin gilding beam -More than a pretty February thing -Till I came down to the old Manor Farm, -And church and yet-tree opposite, in age -Its equal and in size. Small church, great yew, -And farmhouse slept in a Sunday silentness. -The air raised not a straw. The steep farm roof, -With tiles duskily glowing, entertained -The midday sun; and up and down the roof -White pigeons nestled. There was no sound but one. -Three cart-horses were looking over a gate -Drowsily through their forelocks, swiching their tails -Against a fly, a solitary fly. -@P -The Winter's cheek flushed as if he had drained -Spring, Summer, and Autumn at a draught -And smiled quietly. But 'twas not Winter -- -Rather a season of bliss unchangeable -Awakened from farm and church where it had lain -Safe under tile and thatch for ages since -This England, Old already, was called Merry. - -@A Edward Thomas -# -@T The Unknown Bird - -Three lovely notes he whistled, too soft to be heard -If others sang; but others never sang -In the great beech-wood all that May and June. -No one saw him: I alone could hear him -Though many listened. Was it but four years -Ago? or five? He never came again. -Oftenest when I heard him I was alone, -Nor could I ever make another hear. -La-la-la! he called, seeming far-off -- -As if a cock crowed past the edge of the world, -As if the bird or I were in a dream. -Yet that he travelled through the trees and soometimes -Neared me, was plain, though somehow distant still -He sounded. All the proof is -- I told men -What I had heard. -@P -I never knew a voice, -Man, beast, or bird, better than this. I told -The naturalists; but neither had they heard -Anything like the notes that did so haunt me -I had them clear by heart and have them still. -Four years, or five, have made no difference. Then -As now that La-la-la! was bodiless sweet: -Sad more than joyful it was, if I must say -'Twas sad only with joy too, too far off -For me to taste it. But I cannot tell -If truly never anything but fair -The days were when he sang, as now they seem. -This surely I know, that I who listened then, -Happy sometimes, sometimes suffering -A heavy body and a heavy heart, -Now straightaway, if I think of it, become -Light as that bird wandering beyond my shore. - -@A Edward Thomas -# -@T First known when lost - -I never had noticed it until -'Twas gone, -- the narrow copse -Where now the woodman lops -The last of the willows with his bill. - -It was not more than a hedge o'ergrown. -One meadow's breadth away -I passed it day by day. -Now the soil is bare as a bone, - -And black betwixt two meadows green, -Though fresh-cut faggot ends -Of hazel make some amends -With a gleam as if flowers they had been. - -Strange it could have hidden so near! -And now I see as I look -That the small winding brook, -A tributary's tributary rises there. - -@A Edward Thomas -# -@T The Owl - -Downhill I came, hungry, and yet not starved; -Cold, yet had heat within me that was proof -Against the North wind: tired, yet so that rest -Had seemed the sweetest thing under a roof. - -Then at the inn I had food, fire, and rest, -Knowing how hungry, cold and tired was I. -All of the night was quite barred out except -An owl's cry, a most melancholy cry - -Shaken out long and clear upon the hill, -No merry note, nor cause of merriment, -But one telling me plain what I escaped -And others could not, that night, as in I went. - -And salted was my food, and my repose, -Salted and sobered, too, by the bird's voice -Speaking for all who lay under the stars, -Soldiers and poor, unable to rejoice. - -@A Edward Thomas -# -@T But these things also - -But these things also are Spring's -- -On banks by the roadside the grass -Long-dead that is greyer now -Than all the Winter it was; - -The shell of a little snail bleached -In the grass; chip of flint, and mite -Of chalk; and the small bird's dung -In splashes of purest white: - -All the white things a man mistakes -For earliest violets -Who seeks through Winter's ruins -Something to pay Winter's debts, - -While the North blows, and starling flocks -By chattering on and on -Keeep their spirits up in the mist, -And Spring's here, Winter's not gone. - -@A Edward Thomas -# -@T The New House - -Now first, as I shut the door, -I was alone -In the new house; and the wind -Began to moan. - -Old at once was the house, -And I was old; -My ears were teased with the dread -Of what was foretold, - -Nights of storm, days of mist, without end; -Sad days when the sun -Shone in vain: old griefs, and griefs -Not yet begun. - -All was foretold me; naught -Could I foresee; -But I learnt how the wind would sound -After these things should be. - -@A Edward Thomas -# -@T Lovers - -The two men in the road were taken aback. -The lovers came out shading their eyes from the sun, -And never was white so white, or black so black, -As her cheeks and hair. 'There are more things than one -A man might turn into a wood for, Jack,' -Said George; Jack whispered: 'He has not got a gun. -It's a bit too much of a good thing, I say. -They are going the other road, look. And see her run.' -- -She ran -- 'What a thing it is, this picking may.' - -@A Edward Thomas -# -@T Melancholy - -The rain and wind, the rain and wind, raved endlessly. -On me the Summer storm, and fever, and melancholy -Wrought magic, so that if I feared the solitude -Far more I feared all company: too sharp, too rude, -Had been the wisest or the dearest human voice. -What I desired I knew not, but whate'er my choice -Vain it must be, I knew. Yet naught did my despair -But sweeten the strange sweetness, while through the wild air -All day long I heard a distant cuckoo calling -And, soft as dulcimers, sounds of near water falling, -And, softer, and remote as if in history, -Rumours of what had touched my friends, my foes, or me. - -@A Edward Thomas -# -@T The Glory - -The glory of the beauty of the morning, -- -The cuckoo crying over the untouched dew; -The blackbird that has found it, and the dove -That tempts me on to something sweeter than love; -White clouds ranged even and fair as new-mown hay; -The heat, the stir, the sublime vancancy -Of sky meadow and forest and my own heart: -- -The glory invites me, yet it leaves me scorning -All I can ever do, all I can be, -Beside the lovely of motion, shape, and hue, -The happiness I fancy fit to dwell -In beauty's presence. Shall I now this day -@P -Begin to seek as far as heaven, as hell, -Wisdom or strength to match this beauty, start -And tread the pale dust pitted with small dark drops, -In hope to find whatever it is I seek, -Hearkening to short-lived happy-seeming things -That we know naught of, in the hazel copse? -Or must I be content with discontent -As larks and swallows are perhaps with wings? -And shall I ask at the day's end once more -What beauty is, and what I can have meant -By happiness? And shall I let all go, -Glad, weary, or both? Or shall I perhaps know -That I was happy oft and oft before, -Awhile forgetting how I am fast pent, -How dreary-swift, with naught to travel to, -Is Time? I cannot bite the day to the core. - -@A Edward Thomas -# -@T The Brook - -Seated by a brook, watching a child -Chiefly that paddled, I was this beguiled. -Mellow the blackbird sang and sharp the thrush -Not far off in the oak and hazel brush, -Unseen. There was a scent like honeycomb -From mugwort dull. And down upon the dome -Of the stone the card-horse kicks against so oft -A butterfly alighted. From aloft -He took the heat of the sun, and from below, -On the hot stone he perched contented so, -As if never a cart would pass again -That way; as if I were the last of men -And he the first of insects to have earth -And sun together and to know their worth. -@P -I was divided between him and the gleam, -The motion, and the voices, of the stream, -The waters running frizzled over gravel, -Thaat never vanish and for ever travel. -A grey flycatcher silent on a fence -And I sat as if we had been there since -The horseman and the horse lying beneath -The fir-tree-covered barrow on the heath, -The horseman and the horse with silver shoes, -Galloped the downs last. All that I could lose -I lost. And then the child's voice raised the dead. -'No one's been here before' was what she said -And what I felt, yet never should have found -A word for, while I gathered sight and sound. - -@A Edward Thomas -# -@T This is no case of petty right or wrong - -This is no case of petty right or wrong -That politicians or philosphers -Can judge. I hate not Germans, nor grow hot -With love of Englishmen, to please newspapers. -Beside my hate for one fat patriot -My hatred of the Kaiser is love true :-- -A kind of god he is, banging a gong. -But I have not to choose between the two, -Or between justice and injustice. Dinned -With war and argument I read no more -Than in the storm smoking along the wind -Athwart the wood. Two witches' cauldrons roar. -@P -From one the weather shall rise clear and gay; -Out of the other an England beautiful -And like her mother that died yesterday. -Little I know or care if, being dull, -I shall miss something that historians -Can rake out of the ashes when perchance -The phoenix broods serene above their ken. -But with the best and meanest Englishmen -I am one in crying, God save England, lest -We lose what never slaves and cattle blessed. -The ages made here that made us from the dust: -She is all we know and live by, and we trust -She is good and must endure, loving her so: -And as we love ourselves we hate her foe. - -@A Edward Thomas -# -@T Helen - -And you, Helen, what should I give you? -So many things I would give you -Had I an infinite great store -Offered me and I stood before -To choose. I would give you youth, -All kinds of lovelines and truth, -A clear eye as good as mine, -Lands, waters, flowers, wine, -As many children as your heart -Might wish for, a far better art -Than mine can be, all you have lost -Upon the travelling waters tossed, -Or given to me. If I could choose -Freely in that great treasure-house -Anything from any shelf, -I would give you back yourself, -And power to discriminate -What you want and want it not too late, -Many fair days free from care -And heart to enjoy both foul and fair, -And myself, too, if I could find -Where it lay hidden and it proved kind. - -@A Edward Thomas -# -@T Bob's Lane - -Women he liked, did shovel-bearded Bob, -Old Farmer Hayward of the Heath, but he -Loved horses. He himself was like a cob, -And leather-coloured. Also he loved a tree. - -For the life in them he loved most living things, -But a tree chiefly. All along the lane -He planted elms where now the stormcock sings -That travellers hear from the slow-climbing train. - -Till then the track had never had a name -For all its thicket and the nightingales -That should have earned it. No one was to blame. -To name a thing beloved man sometimes fails. - -Many years since, Bob Hayward died, and now -None passes there because the mist and the rain -Out of the elms have turned the lane to slough -And gloom, the name alone survives, Bob's Lane. - -@A Edward Thomas -# -@T The Poetry of Dress - -A sweet disorder in the dress -Kindles in clothes a wantonness :-- -A lawn about the shoulders thrown -Into a fine distraction, -- -An erring lace, which here and there -Enthrals the crimson stomacher -- -A cuff neglectful, and thereby -Ribbands to flow confusedly, -- -A winning wave, deserving note, -In the tempestuous petticoat, -- -A careless shoe-string, in whose tie -I see a wild civility, -- -Do more bewitch me, than when art -Is too precise in evry part. - -@A R. Herrick -# -@T The Poetry of Dress - -When as in silks my Julia goes -Then, then (methinks) how sweetly flows -That liquefaction of her clothes. - -Next, when I cast mine eyes and see -That brave vibration each way free; -O how that glittering taketh me! - -@A R. Herrick -# -My Love in her attire doth show her wit, -It doth so well become her: -For every season she hath dressings fit, -For Winter, Spring and Summer. -No beauty she doth miss -When all her robes are on: -But Beauty's self she is -When all her robes are gone. - -@A Anonymous -# -@T On a Girdle - -That which her slender waist confined -Shall now my joyful temples bind: -No monarch but would give his crown -His arms might do what this has done. - -It was my Heaven's extremest sphere, -The pale which held that lovely deer: -My joy, my grief, my hope, my love -Did all within this circle move. - -A narrow compass! and yet there -Dwelt all that's good, and all that's fair: -Give me but what this ribband bound, -Take all the rest the Sun goes round. - -@A E. Waller -# -@T The Lost Love - -She dwelt among the untrodden ways -Beside the springs of Dove; -A maid whom there were none to praise, -And very few to love: - -A violet by a mossy stone -Half hidden from the eye! --- Fair as a star, when only one -Is shining in the sky. - -She lived unknown, and few could know -When Lucy ceased to be; -But she is in her grave, and oh, -The difference to me! - -@A W. Wordsworth -# -I strove with none, for none was worth my strife; -Nature I loved, and next to Nature, Art; -I warmed both hands before the fire of life -It sinks, and I am ready to depart. - -@A W. S. Landor -# -@T The Miller's Daughter - -It is the miller's daughter, -And she is grown so dear, so dear, -That I would be the jewel -That trembles in her ear: -For his in ringlets day and night, -I'd touch her neck so warm and white. - -And I would be the girdle -About her dainty waist, -And her heart would beat against me -In sorrow and in rest: -And I should know if it beat right, -I'd clasp it round so close and tight. - -And I would be the necklace, -And all day long to fall and rise -Upon her balmy bosom, -With her laughter or her sighs, -And I would lie so light, so light, -I scarce should be unclasp'd at night. - -@A Lord Tennyson -# -@T Sea-fever - -I must down to the seas again, to the lonely sea and the sky, -And all I ask is a tall ship and a star to steer her by, -And the wheel's kick and the wind's song and the white sail's shaking, -And a grey mist on the sea's face and a grey dawn breaking. - -I must down to the seas again, for the call of the running tide -Is a wild call and a clear call that may not be denied; -And all I ask is a windy day with the white clouds flying, -And the flung spray and the blown spume, and the sea-gulls crying. - -I must down to the seas again, to the vagrant gypsy life, -To the gull's way and the whale's way where the wind's like a whetted knife; -And all I ask is a merry yarn from a laughing fellow-rover, -And a quiet sleep and a sweet dream when the long trick's over. - -@A John Masefield -# -@T The Drum - -I hate that drum's discordant sound, -Parading round, and round, and round: -To thoughtless youth it pleasure yields, -And lures from cities and from fields, -To sell their liberty for charms -Of tawdry lace, and glittering arms; -And when Ambition's voice commands, -To march, and fight, and fall, in foreign lands. - -I hate that drum's discordant sound, -Parading round, and round, and round: -To me it talks of ravag'd plains, -And burning towns, and ruin'd swains, -And mangled limbs, and dying groans, -And widows' tears, and orphans' moans; -And all that Misery's hand bestows, -To fill the catalogue of human woes. - -@A John Scott -@A (1730-83) -# -@T Everlasting Mercy - -Near Bullen Bank, on Gloucester road -Thy everlasting mercy showed -The ploughman patient on the hill, forever there, -Forever still -Ploughing the hill with steady yoke, -The pine trees lightning-struck and broke. - -I've marked the May Hill ploughman stay -There on his hill day after day -Driving his team against the sky -While men and women live and die -And now and then he seems to stoop -To clear the coulter with the scoop -Or touch an ox, to haw or gee, -While Severn's stream goes out to sea. -@P -Near Bullen Bank, on Gloucester road -Thy everlasting mercy showed -The ploughman patient on the hill, forever there, -Forever still -The sea with all her ships and sails, -And that great smokey port in Wales, -And Gloucester tower bright in the sun, -All know that patient wandering one. - -@A John Masefield - -Johnny Coppin's haunting arrangement of this available from -Red Sky Records, 'English Morning' RSKC 107 -# -@T Dawn -(From the train between Bologna and Milan, Second Class) - -Opposite me two Germans snore and sweat. -Through sullen swirling gloom we jolt and roar. -We have been here for ever: even yet -A dim watch tells two hours, two aeons, more. -The windows are tight-shut and slimy-wet -With a night's foetor. There are two hours more; -Two hours to dawn and Milan; two hours yet. -Opposite me two Germans sweat and snore... - -One of them wakes, and spits, and sleeps again. -The darkness shivers. A wan light through the rain -Strikes on our faces, drawn and white. Somewhere -A new day sprawls; and, inside, the foul air -Is chill, and damp, and fouler than before... -Opposite me two Germans sweat and snore. - -@A Rupert Brooke -# -@T The Voice - -Safe in the magic of my woods -I lay, and watched the dying light. -Faint in the pale high solitudes, -And washed with rain and veiled by night, - -Silver and blue and green were showing. -And the dark woods grew darker still; -And birds were hushed; and peace was growing; -And quietness crept up the hill; - -And no wind was blowing... - -And I knew -That this was the hour of knowing, -And the night and the woods and you -Were one together, and I should find -Soon in the silence the hidden key -Of all that had hurt and puzzled me -- -Why you were you, and the night was kind, -And the woods were part of the heart of me. -@P -And there I waited breathlessly, -Alone; and slowly the holy three, -The three that I loved, together grew -One, in the hour of knowing, -Night, and the woods, and you -- - -And suddenly -There was an uproar in my woods, -The noise of a fool in mock distress, -Crashing and laughing and blindly going, -Of ignorant feet and a swishing dress, -And a Voice profaning the solitudes. -@P -The spell was broken, the key denied me, -And at length your flat clear voice beside me -Mouthed cheerful clear flat platitudes. - -You came and quacked beside me in the wood. -You said, 'The view from here is very good!' -You said, 'It's nice to be alone a bit!' -And, 'How the days are drawing out!' you said. -You said, 'The sunset's pretty, isn't it?' - -* * * - -By God! I wish -- I wish that you were dead! - -@A Rupert Brooke -# -@T On a Tired Housewife - -Here lies a poor woman who was always tired, -She lived in a house where help wasn't hired; -Her last words on earth were: 'Dear friends, I am going -To where there's no cooking, or washing, or sewing, -For everything there is exact to my wishes, -For where they don't eat there's no washing of dishes. -I'll be where loud anthems will always be ringing, -But having no voice I'll be quit of the singing. -Don't mourn for me now, don't mourn for me never, -I am going to do nothing for ever and ever.' - -@A Anonymous -# -@T On Johnny Cole - -Here lies Johnny Cole -Who died, on my soul, -After eating a plentiful dinner; -While chewing his crust, -He was turned into dust, -With his crimes undigested - poor sinner. - -@A Anonymous -# -@T On a Wag in Mauchline - -Lament him, Mauchline husbands a', -He often did assist ye; -For had ye staid whole weeks awa', -Your wives they ne'er had missed ye. - -Ye Mauchline bairns, as on ye pass, -To schools in bands thegither, -Oh, tread ye lightly on his grass, -Perhaps he was your father. - -@A Robert Burns -# -@T Willie's Epitaph - -Little Willie from his mirror -Licked the mercury right off, -Thinking, in his childish error, -It would cure the whooping cough. -At the funeral his mother -Smartly turned to Mrs Brown: -''Twas a chilly day for Willie -When the mercury went down.' - -@A Anonymous -# -@T On Mary Ann Lowder - -Here lies the body of Mary Ann Lowder, -She burst while drinking a seidlitz powder. -Called from this world to her heavenly rest, -She should have waited till it effervesced. - -@A Anonymous -# -@T On Miss Arabella Young - -Here lies, returned to clay, -Miss Arabella Young, -Who on the first day of May -Began to hold her tongue. - -@A Anonymous -# -@T From The Westminster Drollery, 1671 - -I saw a peacock with a fiery tail -I saw a blazing comet drop down hail -I saw a cloud wrapped with ivy round -I saw an oak creep upon the ground -I saw a pismire swallow up a whale -I saw the sea brimful of ale -I saw a Venice glass full fifteen feet deep -I saw a well full of men's tears that weep -I saw red eyes all of a flaming fire -I saw a house bigger than the moon and higher -I saw the sun at twelve o'clock at night -I saw the man that saw this wondrous sight. - -@A Anonymous -# -@T Epigram - -Engraved on the collar which I gave to his -Royal Highness Frederick Prince of Wales: - -I am his Highness' dog at Kew -Pray tell me, sir, whose dog are you? - -@A Alexander Pope -# -@T A Man of Words - -A man of words and not of deeds, -Is like a garden full of weeds; -And when the weeds begin to grow, -It's like a garden full of snow; -And when the snow begins to fall, -It's like a bird upon the wall; -And when the bird away does fly, -It's like an eagle in the sky; -And when the skye begins to roar, -It's like a lion at the door; -And when the door begins to crack, -It's like a stick across your back; -And when your back begins to smart, -It's like a penknife in your heart; -And when your heart begins to bleed, -You're dead, and dead, and dead indeed. - -@A Anonymous -# -@T The Voice of the Lobster - -''Tis the voice of the Lobster; I heard him declare, -"You have baked me too brown, I must sugar my hair." -As a duck with its eyelids, so he with his nose -Trims his belt and his buttons, and turns out his toes. -When the sands are all dry, he is gay as a lark, -And will talk in contemptuous tones of the Shark: -But, when the tide rises and sharks are around, -His voice has a timid and tremuous sound. - -'I passed by his garden, and marked, with one eye, -How the Owl and the Panther were sharing a pie: -The Panther took pie-crust, and gravy, and meat, -While the Owl had the dish as its share of the treat. -When the pie was all finished, the Owl, as a boon, -Was kindly permitted to pocket the spoon: -While the Panther received knife and fork with a growl, -And concluded the banquet by --' - -@A Lewis Carroll -# -@T Lines by a Humanitarian - -Be lenient with lobsters, and ever kind to crabs, -And be not disrespectful to cuttle-fish or dabs; -Chase not the Cochin-China, chaff not the ox obese, -And babble not of feather-beds in company with geese. -Be tender with the tadpole, and let the limpet thrive, -Be merciful to mussels, don't skin your eels alive; -When talking to a turtle don't mention calipee -- -Be always kind to animals wherever you may be. - -@A Anonymous -# -@T The Common Cormorant - -The common cormorant or shag -Lays eggs inside a paper bag. -The reason you will see no doubt -It is to keep the lightning out. -But what these unobservant birds -Have never noticed is that herds -Of wandering bears may come with buns -And steal the bags to hold the crumbs. - -@A Anonymous -# -@T Imitation of Chaucer - -Women ben full of Ragerie, -Yet swinken not sans secresie -Thilke Moral shall ye understand, -From Schoole-boy's Tale of fayre Irelond: -Which to the Fennes hath him betake, -To filch the gray Ducke fro the Lake. -Right then, there passen by the Way -His Aunt, and eke her Daughters tway. -Ducke in his Trowses hath he hent, -Not to be spied of Ladies gent. -'But ho! our Nephew,' (crieth one) -'Ho,' quoth another, 'Cozen John'; -And stoppen, and laugh, and callen out, -- -This sely Clerk full low doth lout: -@P -They asken that, and talken this, -'Lo here is Coz, and here is Miss.' -But, as he glozeth with Speeches soote, -The Ducke sore tickleth his Erse-root: -Fore-piece and buttons all-to-brest, -Forth thrust a white neck, and red crest. -'Te-he,' cry'd Ladies; Clerke nought spake: -Miss star'd; and gray Ducke crieth Quake. -'O Moder, Moder' (quoth the daughter) -'Be thilke same thing Maids longen a'ter? -'Better is to pyne on coals and chalke, -'Then trust on Mon, whose yerde can talke.' - -@A Alexander Pope -# -@T Sonnet - -Live with me, and be my love, -And we will all the pleasures prove -That hills and valleys, dales and fields, -And all the craggy mountains yields. - -There will we sit upon the rocks, -And see the shepherds feed their flocks, -By shallow rivers, by whose falls -Melodious birds sing madrigals. - -There will I make thee a bed of roses, -With a thousand fragrant posies, -A cap of flowers, and a kirtle -Embroider'd all with leaves of myrtle. -@P -A belt of straw and ivy buds, -With coral clasps and amber studs; -And if these pleasures may thee move, -Then live with me and be my love. - -LOVE'S ANSWER - -If that the world and love were young, -And truth in every shepherd's tongue, -These pretty pleasures might me move -To live with thee and be thy love. - -@A William Shakespeare -# -@T O No, John! - -On yonder hill there stands a creature; -Who she is I do not know. -I'll go and court her for her beauty, -She must answer yes or no. -O no, John! No, John! No, John! No! - -On her bosom are bunches of posies, -On her breast where flowers grow; -If I should chance to touch that posy, -She must answer yes or no. -O no, John! No, John! No, John! No! - -Madam I am come for to court you, -If your favour I can gain; -If you will but entertain me, -Perhaps then I might come again. -O no, John! No, John! No, John! No! - -My husband was a Spanish captain, -Went to sea a month ago; -The very last time we kissed and parted, -Bid me always answer no. -O no, John! No, John! No, John! No! -@P -Madam in your face is beauty, -In your bosom flowers grow; -In your bedroom there is pleasure, -Shall I view it, yes or no? -O no, John! No, John! No, John! No! - -Madam shall I tie your garter, -Tie it a little above your knee; -If my hands should slip a little farther, -Would you think it amiss of me? -O no, John! No, John! No, John! No! - -My love and I went to bed together, -There we lay till cocks did crow; -Unclose your arms my dearest jewel, -Unclose your arms and let me go. -O no, John! No, John! No, John! No! - -@A Old English Folk Song -# -@T Unfortunate - -Heart, you are as restless as a paper scrap -That's tossed down dusty pavements by the wind; -Saying, 'She is most wise, patient and kind. -Between the small hands folded in her lap -Surely a shamed head may bow down at length, -And find forgiveness where the shadows stir -About her lips, and wisdom in her strength, -Peace in her peace. Come to her, come to her!' . . . - -She will not care. She'll smile to see me come, -So that I think all Heaven in flower to fold me. -She'll give me all I ask, kiss me and hold me, -And open wide upon that holy air -The gates of peace, and take my tiredness home, -Kinder than God. But, heart, she will not care. - -@A Rupert Brooke -# -@T The Busy Heart - -Now that we've done our best and worst, and parted, -I would fill my mind with thoughts that will not rend. -(O heart, I do not dare go empty-hearted) -I'll think of Love in books, Love without end; -Women with child, content; and old men sleeping; -And wet strong ploughlands, scarred for certain grain; -And babes that weep, and so forget their weeping; -And the young heavens, forgetful after rain; -And evening hush, broken by homing wings; -And Song's nobility, and Wisdom holy, -That live, we dead. I would think of a thousand things, -Lovely and durable, and taste them slowly, -One after one, like tasting a sweet food. -I have need to busy my heart with quietude. - -@A Rupert Brooke -# -@T Love - -Love is a breach in the walls, a broken gate, -Where that comes in that shall not go again; -Love sells the proud heart's citadel to Fate. -They have known shame, who love unloved. Even then -When two mouths, thirsty each for each, find slaking, -And agony's forgot, and hushed the crying -Of credulous hearts, in heaven -- such are but taking -Their own poor dreams within their arms, and lying -Each in his lonely night, each with a ghost. -Some share that night. But they know, love grows colder, -Grows false and dull, that was sweet lies at most. -Astonishment is no more in hand or shoulder, -But darkens, and dies out from kiss to kiss. -All this love; and all love is but this. - -@A Rupert Brooke -# -@T One Day - -Today I have been happy. All the day -I held the memory of you, and wove -Its laughter with the dancing light o' the spray, -And sowed the sky with tiny clouds of love, -And sent you following the white waves of sea, -And crowned your head with fancies, nothing worth, -Stray buds from that old dust of misery, -Being glad with a new foolish quiet mirth. - -So lightly I played with those dark memories, -Just as a child, beneath the summer skies, -Plays hour by hour with a strange shining stone, -For which (he knows not) towns were fire of old, -And love has been betrayed, and murder done, -And great kings turned to a little bitter mould. - -@A Rupert Brooke -# -@T Doubts - -When she sleeps, her soul, I know, -Goes a wanderer on the air, -Wings where I may never go, -Leaves her lying, still and fair, -Waiting, empty, laid aside, -Like a dress upon a chair... -This I know, and yet I know -Doubts that will not be denied. - -For if the soul be not in place, -What has laid trouble in her face? -And, sits there nothing ware and wise -Behind the curtains of her eyes, -What is it, in the self's eclipse, -Shadows, soft and passingly, -About the corners of her lips, -The smile that is essential she? - -And if the spirit be not there, -Why is fragrance in the hair? - -@A Rupert Brooke diff --git a/samples/wxpoem/wxpoem.def b/samples/wxpoem/wxpoem.def deleted file mode 100644 index 4cdca34c68..0000000000 --- a/samples/wxpoem/wxpoem.def +++ /dev/null @@ -1,9 +0,0 @@ -NAME WXPOEM -DESCRIPTION 'WXPOEM' -EXETYPE WINDOWS -STUB 'WINSTUB.EXE' -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE -HEAPSIZE 1024 -STACKSIZE 8192 - diff --git a/samples/wxpoem/wxpoem.h b/samples/wxpoem/wxpoem.h deleted file mode 100644 index d61fba8b18..0000000000 --- a/samples/wxpoem/wxpoem.h +++ /dev/null @@ -1,91 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: wxpoem.h -// Purpose: A small C++ program which displays a random poem on -// execution. It also allows search for poems containing a -// string. -// It requires winpoem.dat and creates winpoem.idx. -// Original version (WinPoem) written in 1994. -// This has not been rewritten in a long time so -// beware, inelegant code! -// Author: Julian Smart -// Created: 12/12/98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma interface "wxpoem.h" -#endif - -// Define a new application -class MyApp: public wxApp -{ - public: - bool OnInit(); - int OnExit(); -}; - -DECLARE_APP(MyApp) - -// Define a new canvas which can receive some events -class MyCanvas: public wxPanel -{ - public: - MyCanvas(wxFrame *frame, wxWindowID id, const wxPoint& pos, const wxSize& size); - - void OnPaint(wxPaintEvent& event); - void OnMouseEvent(wxMouseEvent& event); - void OnChar(wxKeyEvent& event); - - DECLARE_EVENT_TABLE() -}; - -// Define a new frame -class MainWindow: public wxFrame -{ - public: - MyCanvas *canvas; - MainWindow(wxFrame *frame, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style); - ~MainWindow(); - - void OnCloseWindow(wxCloseEvent& event); - void OnChar(wxKeyEvent& event); - - // Display next page or poem - void NextPage(void); - - // Display previous page - void PreviousPage(void); - - // User search - void Search(bool); - - // Look in file for string - long DoSearch(void); - - // Do the actual drawing of text (or just calculate size needed) - void ScanBuffer(wxDC *dc, bool DrawIt, int *max_x, int *max_y); - - // Load the poem - void GetIndexLoadPoem(void); - void Resize(void); - -DECLARE_EVENT_TABLE() -}; - -// Menu items -#define POEM_NEXT 100 -#define POEM_PREVIOUS 101 -#define POEM_COPY 102 -#define POEM_SEARCH 103 -#define POEM_NEXT_MATCH 104 -#define POEM_ABOUT 105 -#define POEM_EXIT 106 -#define POEM_COMPILE 107 -#define POEM_HELP_CONTENTS 108 -#define POEM_BIGGER_TEXT 109 -#define POEM_SMALLER_TEXT 110 -#define POEM_MINIMIZE 111 - - diff --git a/samples/wxpoem/wxpoem.ico b/samples/wxpoem/wxpoem.ico deleted file mode 100644 index f3b425d1fbaa01645c3855bac839e1112a339de3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmchVu};G<5QeY7$Uqh(re;JDZ;%W;7gJuLqa_B^(c}rR2Q#6jC-EALj0{NT|LwXl zQU@l^y|X|6cb6u%$O@xvuY~q-CUTAW7T&_|;VZd76d9qNwhJv`MUVu8BYJgLau6?=Jh9(>fTYRz`~#l%XVJERvjkMp#(cZH4FSnWC# zidEH!JfoXGxrj^!F$IX zEK)v})ELNaV80$A>C4mq_J7Lf=8S%Ix#B!jmlFx;_>hrnG&43YvA0KYZ7fcA;0^cS TJ&2tDldr!;*71wi?=$`YuaI52 diff --git a/samples/wxpoem/wxpoem.rc b/samples/wxpoem/wxpoem.rc deleted file mode 100644 index 8fdb7de3ee..0000000000 --- a/samples/wxpoem/wxpoem.rc +++ /dev/null @@ -1,11 +0,0 @@ -aaaa ICON "wxpoem.ico" -wxpoem ICON "wxpoem.ico" -wxSTD_FRAME ICON "wxpoem.ico" - -icon_1 ICON "corner1.ico" -icon_2 ICON "corner2.ico" -icon_3 ICON "corner3.ico" -icon_4 ICON "corner4.ico" - -#include "wx/msw/wx.rc" - diff --git a/samples/wxpoem/wxpoem.txt b/samples/wxpoem/wxpoem.txt deleted file mode 100644 index 4f17b5d15b..0000000000 --- a/samples/wxpoem/wxpoem.txt +++ /dev/null @@ -1,121 +0,0 @@ -wxPoem 1.0 ----------- - -by Julian Smart ---------------- - -Fancy a little intellectual stimulation after long hours spent staring -at spreadsheets or reports? Does your brain long for something a little -more fulfilling than Tetris or fiddling with the WIN.INI file? Then you -could go out and buy a poetry book... or alternatively, if you just -can't drag yourself away from the screen, click on the wxPoem icon. - -wxPoem is a simple Windows application which picks poems from a file at -random, or finds poems according to a string criterion, and formats them -nicely in a window. A displayed poem can be copied to the Windows clipboard -ready for inclusion in that more imaginative report... - -It's small, it's free and it's totally harmless, so far as I know. -No responsibility accepted, though, for any problems it might cause with -your setup. - -wxPoem was converted to use the wxWindows toolkit, from the original -WinPoem which received a favourable review from Windows Shareware 500. - -Since it now uses wxWindows, wxPoem may be compiled on a variety -of platforms such as X (XView or Motif), Windows and NT. - -Files ------ - -The main data file is winpoem.dat, and an index file winpoem.idx is -supplied or can be (re)built by deleting winpoem.idx and rerunning -wxPoem. Source code is also provided in source.zip, but wxWindows is -required to build it. The original WinPoem is much leaner (40K -instead of 400K!) and can be compiled under Windows without wxWindows. - -Installation ------------- - - Windows - ======= - - Copy ctl3dv2.dll to windows\system, and delete the original - ctl3dv2.dll or wxPoem will not run. - - wxPoem can be put in the Startup folder in the Program Manager, so that - a random poem will pop up every time Windows is run. - - UNIX - ==== - - wxPoem comes in Open Look and Motif versions for the Sun, and a - Linux Open Look version. For other platforms, you will need to - recompile the source. - - -Use ---- - -Simply run the program, and a random poem will be displayed. -You can optionally give a filename on the command line, without a suffix -(e.g. winpoem). - -The simplest way of operating wxPoem is to keep pressing the space bar -for new poems (or pages for multi-page poems). - -Clicking the right mouse button (or selecting the wxPoem Options menu -item from the system menu) gives a choice of the following facilities: -Next poem/page (Page down) Display next poem (or next page) -Previous page (Page up) Display previous page (multi-line poems only) -Search (S) Allows user to enter a search string -Next match (N) Gives next search match -Copy to clipboard Allows poems to be pasted into other applications -Bigger text Increases text size -Smaller text Decreases text size -About wxPoem About wxPoem -Exit (Esc) Quit wxPoem - -When wxPoem is closed, the font, text height and window position are -remembered (stored in WIN.INI) for next time. Under X, the values -are not written (since they are stored in .Xdefaults), so you may -want to edit the following resources by hand: - -wxPoem.X ; X position -wxPoem.Y ; Y position -wxPoem.FontSize ; Font size in points (default 12) - -The data file -------------- - -The winpoem.dat file contains poems separated by a #, with optional -@ codes denoting title (@T) author (@A) and page break (@P). Any -unrecognized codes will cause the rest of the line to be ignored, so -the user can add lines (e.g. @S for subject) which will be searched on but -not displayed. - -The data file contains a mixture of 20th century and earlier poetry, -subject to copyright constraints. Apologies if any copyrights have -inadvertently been infringed, though I have tried to avoid it. - -Implementation --------------- - -The original WinPoem program was my `Windows learning application', i.e. -a vehicle for getting stuck into Windows programming, whilst (possibly) -affording others a modicum of amusement. Therefore the code is pretty -ugly. So don't look if you're squeamish! - -License -------- - -Copyright Julian Smart, released into the public domain, October 1994. - -Julian Smart -Artificial Intelligence Applications Institute -University of Edinburgh -80 South Bridge -Einburgh -EH1 1HN - -J.Smart@ed.ac.uk diff --git a/samples/wxpoem/wxpoem.xpm b/samples/wxpoem/wxpoem.xpm deleted file mode 100644 index 73ca05b791..0000000000 --- a/samples/wxpoem/wxpoem.xpm +++ /dev/null @@ -1,47 +0,0 @@ -/* XPM */ -static char * wxpoem_xpm[] = { -/* width height ncolors chars_per_pixel */ -"32 32 9 1", -/* colors */ -" s None c None", -". c #800000", -"+ c #008000", -"@ c #808000", -"# c #c0c0c0", -"$ c #ff0000", -"% c #00ff00", -"& c #ffff00", -"* c #0000ff", -/* pixels */ -" **** ", -" ********&&* ", -" ******&&&&&&&&&&&&*** ", -" *****&&&&&&&&&&&&&&&&&&&* ", -" **************************** ", -" *&&&&&&&&&&&&&&&&&&&&&&&&&&* ", -" *&************************&* ", -" *&************************&* ", -" *&************************&* ", -" *&*&&&@*@&@*@&&*@&@&@*@&@*&* ", -" *&*&**&*&*&*&***&*&*&*&***&* ", -" *&*&&&@*&*&*&&**&*&*&*&&@*&* ", -" *&*&****&*&*&***&*&*&***&*&* ", -" *&*&****&*&*&***&***&***&*&* ", -" *&*&****@&@*@&&*&***&*@&@*&* ", -" *&************************&* ", -" *&************************&* ", -" *&************************&* ", -" *&*****$$$****************&* ", -" *&***...$$$$**************&* ", -" *&***$$....$**************&* ", -" *&****$$$$..******%++*****&* ", -" *&****$$$$$.%%**+%+%%*****&* ", -" *&******$$$**%%*%+%%+*****&* ", -" *&*************%+%%%******&* ", -" *&**************%%%*******&* ", -" *&****************%%%*****&* ", -" *&******************%%****&* ", -" *&&&&&&&&&&&&&&&&&&&&%%&&&&* ", -" ***********************%%*** ", -" %% ", -" #%% "}; diff --git a/samples/wxsocket/.cvsignore b/samples/wxsocket/.cvsignore deleted file mode 100644 index 7957c41216..0000000000 --- a/samples/wxsocket/.cvsignore +++ /dev/null @@ -1,3 +0,0 @@ -Linux -linux-gnu -linux \ No newline at end of file diff --git a/samples/wxsocket/Makefile b/samples/wxsocket/Makefile deleted file mode 100644 index bccce53f76..0000000000 --- a/samples/wxsocket/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../../setup/general/makeapp diff --git a/samples/wxsocket/Makefile.in b/samples/wxsocket/Makefile.in deleted file mode 100644 index 68ded4e305..0000000000 --- a/samples/wxsocket/Makefile.in +++ /dev/null @@ -1,28 +0,0 @@ -# WXXT base directory -WXBASEDIR=@WXBASEDIR@ - -# set the OS type for compilation -OS=@OS@ -# compile a library only -RULE=bin2 - -# define library name -BIN_TARGET=client -BIN2_TARGET=server -# define library sources -BIN_SRC= client.cpp -BIN2_SRC= server.cpp - -#define library objects -BIN_OBJ= client.o -BIN2_OBJ= server.o - -# additional things needed to link -BIN_LINK= -BIN2_LINK= - -# additional things needed to compile -ADD_COMPILE= - -# include the definitions now -include ../../../template.mak diff --git a/samples/wxsocket/client.cpp b/samples/wxsocket/client.cpp deleted file mode 100644 index e4a57fba5e..0000000000 --- a/samples/wxsocket/client.cpp +++ /dev/null @@ -1,282 +0,0 @@ -/* - * File: client.cpp - * Purpose: wxSocket: client demo - * Author: LAVAUX Guilhem - * Created: June 1997 - * Updated: - * Copyright: (c) 1997, LAVAUX Guilhem - */ - -#ifdef __GNUG__ -#pragma implementation -#pragma interface -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include "wx/socket.h" -#include "wx/url.h" -#include "wx/protocol/http.h" - -#if defined(__WXMOTIF__) || defined(__WXGTK__) -#include "mondrian.xpm" -#endif - -// Define a new application type -class MyApp: public wxApp -{ public: - virtual bool OnInit(void); -}; - -class MyClient; - -// Define a new frame type -class MyFrame: public wxFrame -{ - DECLARE_CLASS(MyFrame) -public: - MyClient *sock; - - MyFrame(void); - virtual ~MyFrame(); - void OnCloseTest(wxCommandEvent& evt); - void OnExecTest1(wxCommandEvent& evt); - void OnExecUrlTest(wxCommandEvent& evt); - void OnQuitApp(wxCommandEvent& evt); - void OnExecOpenConnection(wxCommandEvent& evt); - void OnExecCloseConnection(wxCommandEvent& evt); - void UpdateStatus(); - - DECLARE_EVENT_TABLE() -}; - - -IMPLEMENT_CLASS(MyFrame, wxFrame) - -/* - * Define a new derived SocketClient - */ -class MyClient: public wxSocketClient -{ -public: - MyFrame *frame; - - void OnNotify(wxRequestNotify WXUNUSED(flags)) { frame->UpdateStatus(); } -}; - -// ID for the menu quit command -const int SKDEMO_QUIT = 101; -const int SKDEMO_CONNECT = 102; -const int SKDEMO_TEST1 = 103; -const int SKDEMO_TEST2 = 104; -const int SKDEMO_CLOSE = 105; -const int SKDEMO_TEST3 = 106; -const int ID_TEST_CLOSE = 107; - -IMPLEMENT_APP(MyApp) - -/* - * `Main program' equivalent, creating windows and returning main app frame - */ -bool MyApp::OnInit(void) -{ - // Create the main frame window - MyFrame *frame = new MyFrame(); - - // Give it an icon - frame->SetIcon(wxICON(mondrian)); - - // Make a menubar - wxMenu *file_menu = new wxMenu(); - - file_menu->Append(SKDEMO_QUIT, "Exit"); - wxMenuBar *menu_bar = new wxMenuBar; - menu_bar->Append(file_menu, "File"); - - wxMenu *socket_menu = new wxMenu(); - socket_menu->Append(SKDEMO_CONNECT, "Open session"); - socket_menu->AppendSeparator(); - socket_menu->Append(SKDEMO_TEST1, "Start test 1"); - socket_menu->AppendSeparator(); - socket_menu->Append(SKDEMO_CLOSE, "Close session"); - socket_menu->AppendSeparator(); - socket_menu->Append(SKDEMO_TEST3, "Start URL test"); - - menu_bar->Append(socket_menu, "Socket"); - - frame->SetMenuBar(menu_bar); - - // Make a panel with a message - (void)new wxPanel(frame, -1, wxPoint(0, 0), wxSize(300, 100)); - - // Show the frame - frame->Show(TRUE); - - // Return the main frame window - return TRUE; -} - -/* - * MyFrame Constructor - */ -MyFrame::MyFrame(): - wxFrame(NULL, -1, "wxSocket client demo", - wxDefaultPosition, wxSize(300, 200), wxDEFAULT_FRAME_STYLE) -{ - // Init all - wxSocketHandler::Master(); - - sock = new MyClient(); - sock->SetFlags(wxSocketBase::WAITALL); - wxSocketHandler::Master().Register(sock); - sock->frame = this; - sock->SetNotify(wxSocketBase::REQ_LOST); - CreateStatusBar(2); - UpdateStatus(); -} - -MyFrame::~MyFrame() -{ - delete sock; -} - -void MyFrame::OnQuitApp(wxCommandEvent& WXUNUSED(evt)) -{ - Close(TRUE); -} - -void MyFrame::OnExecOpenConnection(wxCommandEvent& WXUNUSED(evt)) -{ - wxIPV4address addr; - - if (sock->IsConnected()) - sock->Close(); - - wxString hname = wxGetTextFromUser("Enter the address of the wxSocket Sample Server", - "Connect ...", "localhost"); - addr.Hostname(hname); - addr.Service(3000); - sock->SetNotify(0); - sock->Connect(addr, TRUE); - if (!sock->IsConnected()) - wxMessageBox("Can't connect to the specified host", "Alert !"); - - UpdateStatus(); -} - -void MyFrame::OnExecCloseConnection(wxCommandEvent& WXUNUSED(evt)) -{ - if (sock) - sock->Close(); - UpdateStatus(); -} - -BEGIN_EVENT_TABLE(MyFrame, wxFrame) - EVT_BUTTON(ID_TEST_CLOSE, MyFrame::OnCloseTest) - EVT_MENU(SKDEMO_TEST1, MyFrame::OnExecTest1) - EVT_MENU(SKDEMO_TEST3, MyFrame::OnExecUrlTest) - EVT_MENU(SKDEMO_QUIT, MyFrame::OnQuitApp) - EVT_MENU(SKDEMO_CONNECT, MyFrame::OnExecOpenConnection) - EVT_MENU(SKDEMO_CLOSE, MyFrame::OnExecCloseConnection) -END_EVENT_TABLE() - -void MyFrame::OnCloseTest(wxCommandEvent& evt) -{ - wxButton *button = (wxButton *)evt.GetEventObject(); - wxDialog *dlg = (wxDialog *)button->GetParent(); - - dlg->EndModal(0); -} - -void MyFrame::UpdateStatus() -{ - if (!sock->IsConnected()) { - SetStatusText("Not connected", 0); - SetStatusText("", 1); - } else { - wxIPV4address addr; - char s[100]; - - sock->GetPeer(addr); - sprintf(s, "Connected to %s", (const char *)addr.Hostname()); - SetStatusText(s, 0); - sprintf(s, "Service: %d", addr.Service()); - SetStatusText(s, 1); - } -} - -void MyFrame::OnExecTest1(wxCommandEvent& WXUNUSED(evt)) -{ - if (!sock->IsConnected()) - return; - - wxDialog *dlgbox = new wxDialog(this, -1, "Test 1", wxDefaultPosition, wxSize(414, 250)); - wxTextCtrl *text_win = new wxTextCtrl(dlgbox, -1, "", - wxPoint(0, 0), wxSize(400, 200), - wxTE_MULTILINE); - (void)new wxButton(dlgbox, ID_TEST_CLOSE, "Close", - wxPoint(100, 210), wxSize(100, -1)); - char *buf, *buf2; - - dlgbox->Layout(); - dlgbox->Show(TRUE); - - text_win->WriteText("Initializing test 1 ...\n"); - - wxYield(); - - /* Init */ - buf = copystring("Salut ! Salut ! Salut ! Salut Toto\n"); - buf2 = new char[strlen(buf)+1]; - char c = 0xbe; - sock->WriteMsg(&c, 1); - - /* No 1 */ - text_win->WriteText("Sending some byte to the server ..."); - sock->Write(buf, strlen(buf)+1); - text_win->WriteText("done\n"); - text_win->WriteText("Receiving some byte from the server ..."); - sock->Read(buf2, strlen(buf)+1); - text_win->WriteText("done\n"); - - text_win->WriteText("Comparing the two buffers ..."); - if (memcmp(buf, buf2, strlen(buf)+1) != 0) { - text_win->WriteText("Fail\n"); - sock->Close(); - UpdateStatus(); - } else - text_win->WriteText("done\nTest 1 passed !\n"); - - dlgbox->Layout(); - dlgbox->ShowModal(); - - delete [] buf; - delete [] buf2; - delete text_win; - delete dlgbox; -} - -void MyFrame::OnExecUrlTest(wxCommandEvent& WXUNUSED(evt)) -{ - wxString urlname = wxGetTextFromUser("Enter an URL to get", - "URL:", "http://localhost"); - - wxURL url(urlname); - wxInputStream *datas = url.GetInputStream(); - - if (!datas) - wxMessageBox("Error in getting data from the URL.", "Alert !"); - else { - wxMessageBox("Success !! Click on OK to see the text.", "OK"); - delete datas; - } -} diff --git a/samples/wxsocket/client.def b/samples/wxsocket/client.def deleted file mode 100644 index 786b7d609a..0000000000 --- a/samples/wxsocket/client.def +++ /dev/null @@ -1,8 +0,0 @@ -NAME Client -DESCRIPTION 'Client' -EXETYPE WINDOWS -STUB 'WINSTUB.EXE' -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE -HEAPSIZE 1024 -STACKSIZE 8192 diff --git a/samples/wxsocket/client.rc b/samples/wxsocket/client.rc deleted file mode 100644 index f1579f657d..0000000000 --- a/samples/wxsocket/client.rc +++ /dev/null @@ -1,3 +0,0 @@ -mondrian ICON mondrian.ico -conn_icn ICON connect.ico -#include "wx/msw/wx.rc" diff --git a/samples/wxsocket/client.vc b/samples/wxsocket/client.vc deleted file mode 100644 index 9cfde2648f..0000000000 --- a/samples/wxsocket/client.vc +++ /dev/null @@ -1,18 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: (c) Julian Smart -# -# Makefile : Builds sample (VC++, WIN32) -# Use FINAL=1 argument to nmake to build final version with no debug info. - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -PROGRAM=client -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.vc - diff --git a/samples/wxsocket/client.wat b/samples/wxsocket/client.wat deleted file mode 100644 index 789db64157..0000000000 --- a/samples/wxsocket/client.wat +++ /dev/null @@ -1,15 +0,0 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 -# -# - -WXDIR = $(%WXWIN) - -PROGRAM = client -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - diff --git a/samples/wxsocket/connect.ico b/samples/wxsocket/connect.ico deleted file mode 100644 index 74f006f82a3440425c3074f976c52a3405cf9427..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmc&wF%E+;3^Y}xveBtCW1rC{v32#>FCZcD6&`@pZ*(fGND=AT7eK8#b*Y0LU(Rvx ziDX!1c@(q9PUM9B3@_mqcqV&95e4_%6eJi`ZiqV zYUUL2&Fruiuzthi2hWC8s-GhHrQg(!iVivHsjll$hau)g==(kr&&_?ot<{I&>Gj}S z^jq&6j;X)(Bj)?|>j_)x_8aEBTmMZT_RH7#iCJ&@5O4aV_r0Jh!W%C@;9USetIcon(wxICON(mondrian)); - - // Make a menubar - wxMenu *file_menu = new wxMenu; - - file_menu->Append(SKDEMO_QUIT, "E&xit"); - wxMenuBar *menu_bar = new wxMenuBar; - menu_bar->Append(file_menu, "File"); - frame->SetMenuBar(menu_bar); - - // Make a panel with a message - (void)new wxPanel(frame, 0, 0, 300, 100); - - // Show the frame - frame->Show(TRUE); - - // Return the main frame window - return TRUE; -} - -void MySock::OldOnNotify(wxRequestEvent flags) -{ - extern wxList WXDLLEXPORT wxPendingDelete; - - switch (flags) { - case EVT_READ: - unsigned char c; - - ReadMsg((char *)&c, 1); - if (c == 0xbe) - frame->ExecTest1(this); - - break; - case EVT_LOST: - frame->UpdateStatus(-1); - wxPendingDelete.Append(this); - break; - } -} - -void MyServer::OldOnNotify(wxRequestEvent WXUNUSED(flags)) -{ - MySock *sock2 = new MySock(); - - if (!AcceptWith(*sock2)) - return; - - m_handler->Register(sock2); - - sock2->SetFlags(NONE); - sock2->frame = frame; - sock2->SetNotify(REQ_READ | REQ_LOST); - sock2->Notify(TRUE); - frame->UpdateStatus(1); -} - -// My frame Constructor -MyFrame::MyFrame(wxFrame *frame): - wxFrame(frame, -1, "wxSocket sample (server)", wxDefaultPosition, - wxSize(300, 200)) -{ - wxIPV4address addr; - addr.Service(3000); - - // Init all - wxSocketHandler::Master(); - - sock = new MyServer(addr); - wxSocketHandler::Master().Register(sock); - sock->frame = this; - sock->SetNotify(wxSocketBase::REQ_ACCEPT); - sock->Notify(TRUE); - nb_clients = 0; - - CreateStatusBar(1); - UpdateStatus(0); -} - -MyFrame::~MyFrame() -{ - delete sock; -} - -// Intercept menu commands -void MyFrame::Menu_Exit(wxCommandEvent& WXUNUSED(event)) -{ - Close(TRUE); -} - -void MyFrame::ExecTest1(wxSocketBase *sock_o) -{ - char *buf = new char[50]; - size_t l; - - l = sock_o->Read(buf, 50).LastCount(); - sock_o->Write(buf, l); -} - -void MyFrame::UpdateStatus(int incr) -{ - char s[30]; - nb_clients += incr; - sprintf(s, "%d clients connected", nb_clients); - SetStatusText(s); -} diff --git a/samples/wxsocket/server.def b/samples/wxsocket/server.def deleted file mode 100644 index 21027a5c01..0000000000 --- a/samples/wxsocket/server.def +++ /dev/null @@ -1,8 +0,0 @@ -NAME Server -DESCRIPTION 'Server' -EXETYPE WINDOWS -STUB 'WINSTUB.EXE' -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE -HEAPSIZE 4096 -STACKSIZE 8192 diff --git a/samples/wxsocket/server.rc b/samples/wxsocket/server.rc deleted file mode 100644 index b289ec6ad9..0000000000 --- a/samples/wxsocket/server.rc +++ /dev/null @@ -1,4 +0,0 @@ -mondrian ICON "mondrian.ico" -conn_icn ICON "connect.ico" -#include "wx/msw/wx.rc" - diff --git a/samples/wxsocket/server.vc b/samples/wxsocket/server.vc deleted file mode 100644 index fdb3bce078..0000000000 --- a/samples/wxsocket/server.vc +++ /dev/null @@ -1,18 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: (c) Julian Smart -# -# Makefile : Builds sample (VC++, WIN32) -# Use FINAL=1 argument to nmake to build final version with no debug info. - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -PROGRAM=server -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.vc - diff --git a/samples/wxsocket/server.wat b/samples/wxsocket/server.wat deleted file mode 100644 index 2acfdf1115..0000000000 --- a/samples/wxsocket/server.wat +++ /dev/null @@ -1,15 +0,0 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 -# -# - -WXDIR = $(%WXWIN) - -PROGRAM = server -OBJECTS = $(PROGRAM).obj - -!include $(WXDIR)\src\makeprog.wat - - diff --git a/setup/.cvsignore b/setup/.cvsignore deleted file mode 100644 index 5349543a1b..0000000000 --- a/setup/.cvsignore +++ /dev/null @@ -1,5 +0,0 @@ -Makefile -Linux -linux-gnu -setup.h -linux diff --git a/setup/general/createall b/setup/general/createall deleted file mode 100755 index 121010d020..0000000000 --- a/setup/general/createall +++ /dev/null @@ -1,106 +0,0 @@ -#! /bin/sh - -# Just grab dirbase/dir(s) -readbase () -{ - DIRBASE=$1 - DIRCONTENTS=$2 - for each in $DIRBASE/* - do - if test -d $each - then - DIRCONTENTS="$DIRCONTENTS $each" - fi - done - echo $DIRCONTENTS -} - -# Prefer subdir/src over subdir, use whichever available -readbase2 () -{ - DIRBASE=$1 - DIRCONTENTS=$2 - for each in $DIRBASE/* - do - if test -d $each - then - if test -d $each/src - then - DIRCONTENTS="$DIRCONTENTS $each/src" - else - DIRCONTENTS="$DIRCONTENTS $each" - fi - fi - done - echo $DIRCONTENTS -} - -OS=$OSTYPE - -if test "x$OS" = x; then - echo "please set the environment variable OSTYPE " - echo "to a value appropriate for your system." - echo "to do so type: setenv OSTYPE `uname` for the csh, tcsh" - echo " export OSTYPE=`uname` for other shells" - exit 1 -fi - -SRC_DIR=`readbase src src` -SAMPLES_DIR=`readbase2 samples` -UTILS_DIR=`readbase2 utils` -USER_DIR=`readbase2 user` - -ALL_DIR="$SRC_DIR $SAMPLES_DIR $UTILS_DIR $USER_DIR" - -echo Creating for: $OS - -# create defaults -if test ! -d setup/$OS; then - mkdir setup/$OS -fi - -SUBSTFILE=setup/$OS/substit - -# the substit file first -if test -f setup/substit ; then - cat setup/substit | sed "s/*/@/g" > $SUBSTFILE; - rm -f setup/substit -fi -# now the template file -cat setup/maketmpl.in | sed -f $SUBSTFILE > setup/$OS/maketmpl - -# now the config header file -#if test -f setup/wx_setup.h ; then -# cat setup/wx_setup.h > setup/$OS/wx_setup.h; -# rm -f setup/wx_setup.h -#fi - -# create lib and bin directory -if test ! -d lib; then - mkdir lib -fi -if test ! -d lib/$OS; then - mkdir lib/$OS -fi -if test ! -d bin; then - mkdir bin -fi -if test ! -d bin/$OS; then - mkdir bin/$OS -fi - -# create makefiles -for each in $ALL_DIR; do - DIR=$each/$OS - # create Makefile in directory - if test -r $each/Makefile.in ; then - # create directory - if test ! -d $DIR; then - echo "Creating Directory: $DIR..." - mkdir $DIR - fi - echo "Creating: $DIR/Makefile..." - cat $each/Makefile.in | sed -f $SUBSTFILE > $DIR/Makefile - (cd $DIR; make subdirs > /dev/null;) - fi -done diff --git a/setup/general/jointar b/setup/general/jointar deleted file mode 100755 index 29949e1cf3..0000000000 --- a/setup/general/jointar +++ /dev/null @@ -1,67 +0,0 @@ -#! /bin/sh -# -# Written by Martin Sperl -# (sperl@dsn.ast.univie.ac.at) -# - - -if test $# -lt 3 ; then - cat < - copies all files from the source-tar-files to the common - destination-tar-file with basedir as a common base directory. -EOF - exit 0 -fi - -BaseDir="$1" -shift - -Sourcefiles="$1" - -while test "$#" != 2 ; do - shift - Sourcefiles="$Sourcefiles $1" -done - -shift -Final=$1 - -Destination=/tmp/join$$.tar - -touch $Destination - -curdir=`pwd` - -mkdir tmp$$ -mkdir tmp$$/$BaseDir - -#uncompress all files -cd tmp$$/$BaseDir -for each in $Sourcefiles ; do - ( \ - if test `basename $each gz` != `basename $each` ; then \ - gzip -dc ../../$each;\ - else \ - cat ../../$each;\ - fi; \ - ) | tar xf - -done -cd .. -#now tar everything -tar -cf $Destination * - -cd .. - -rm -fr tmp$$ - -# goto old directory -cd $curdir - -if test `basename $Final gz` != `basename $Final` ; then - gzip -c $Destination > $Final -else - cat $Destination > $Final -fi - -rm -f $Destination diff --git a/setup/general/makeapp b/setup/general/makeapp deleted file mode 100644 index a413749e5f..0000000000 --- a/setup/general/makeapp +++ /dev/null @@ -1,73 +0,0 @@ -SHELL=/bin/sh - -OS=$(OSTYPE) - -all:: - -@if test "x$(OS)" = x; then \ - echo "please set the environment variable OSTYPE ";\ - echo "to a value appropriate for your system.";\ - echo "to do so type: setenv OSTYPE `uname` for the csh, tcsh";\ - echo " export OSTYPE=`uname` for other shells";\ - else \ - if test -f Makefile.in ; then \ - if test -f $(OS)/Makefile ; then \ - NEEDED=`(cd $(OS); ${MAKE} checkneeds;) | grep "needed to compile" `;\ - if test "x$$NEEDED" = x; then \ - (cd $(OS); ${MAKE} $@); \ - else \ - (cd $(OS); ${MAKE} checkneeds); \ - fi ; \ - else \ - echo "Did you configure your system?";\ - fi; \ - fi; \ - fi; - -distrib:: - @if test ! -d ../../distrib ; then mkdir ../../distrib; fi; - @if test ! -f ../../system.list ; then \ - echo "dummy" > ../../system.list;\ - fi - @(curr=`pwd`; direc=`basename $$curr`;\ - basedir=`dirname $$curr`;\ - basedirname=`basename $$basedir`;\ - if test ! -d ../../distrib/$$basedirname ; then \ - mkdir ../../distrib/$$basedirname;\ - fi;\ - if test -d doc; then (cd doc; make clean;); fi;\ - (cd ..; \ - echo creating $$direc.tar from the current directory;\ - files="`\ - find $$direc -type f \ - | fgrep -vf ../system.list \ - | grep -v "~" \ - | grep -v "#" \ - ` $(DISTRIBUTE_ADDITIONAL)";\ - tar -cf /tmp/$$direc.tar $$files;\ - echo compressing $$direc.tar to $$direc.tgz;\ - gzip -c /tmp/$$direc.tar > ../distrib/$$basedirname/$$direc.tgz;\ - rm /tmp/$$direc.tar;\ - )\ - ) - -.DEFAULT: - -@if test "x$(OS)" = x; then \ - echo "please set the environment variable OSTYPE ";\ - echo "to a value appropriate for your system.";\ - echo "to do so type: setenv OSTYPE `uname` for the csh, tcsh";\ - echo " export OSTYPE=`uname` for other shells";\ - else \ - if test -f Makefile.in ; then \ - if test -f $(OS)/Makefile ; then \ - NEEDED=`(cd $(OS); ${MAKE} checkneeds) | grep "needed to compile" `;\ - if test "x$$NEEDED" = x; then \ - (cd $(OS); ${MAKE} $@); \ - else \ - (cd $(OS); ${MAKE} checkneeds); \ - fi ; \ - else \ - echo "Did you configure your system?";\ - fi \ - fi \ - fi - diff --git a/setup/general/makedirs b/setup/general/makedirs deleted file mode 100644 index 0e770242f1..0000000000 --- a/setup/general/makedirs +++ /dev/null @@ -1,19 +0,0 @@ -SHELL=/bin/sh - -DIRS=`find . -print | sed "s|\./||g" | grep -v "/" | grep -v "\." ` - -all: - @for i in $(DIRS) xxx; do \ - if test -r $$i/Makefile ; then \ - echo "entering directory $$i building $@";\ - (cd $$i ; ${MAKE} $@); \ - fi; \ - done - -.DEFAULT: - @for i in $(DIRS) xxx; do \ - if test -r $$i/Makefile ; then \ - echo "entering directory $$i building $@";\ - (cd $$i ; ${MAKE} $@); \ - fi; \ - done diff --git a/setup/general/makedoc b/setup/general/makedoc deleted file mode 100644 index ca0ef855e5..0000000000 --- a/setup/general/makedoc +++ /dev/null @@ -1,102 +0,0 @@ -SHELL=/bin/sh - -FILE_BASE=$(TEX_BASE:.tex=) - -BMP_FILES=$(XPM_FILES:.xpm=.bmp) -EPS_FILES=$(XPM_FILES:.xpm=.eps) -GIF_FILES=$(XPM_FILES:.xpm=.gif) - -HTML_BUTTONS=back.gif forward.gif contents.gif up.gif - -all:: doc - -clean:: - @ for each in $(DIRS) . ; do \ - ( cd $$each; \ - rm -f *.bmp *.eps *.gif *.aux *.dvi *.log \ - *.ps *.toc *~ *.idx *.hlp *.html \ - *.rtf *.ref *.xlp *.con *.win *.fts \ - *.hpj *.HLP; \ - ); done - -doc:: doc_ps doc_html doc_xlp doc_winhelp doc_rtf - -############################################# - -doc_ps:: $(FILE_BASE).ps - -$(FILE_BASE).ps: $(FILE_BASE).dvi - dvips $(FILE_BASE).dvi -o$@ - -############################################# - -doc_dvi:: $(FILE_BASE).dvi - -$(FILE_BASE).dvi: $(FILE_BASE).tex $(TEX_ADDITIONAL) $(EPS_FILES) - latex $(FILE_BASE).tex - latex $(FILE_BASE).tex - -############################################# - -doc_xlp:: $(FILE_BASE).xlp - -$(FILE_BASE).xlp: $(FILE_BASE).tex $(TEX_ADDITIONAL) - ../../../bin/$(OSTYPE)/tex2rtf $(FILE_BASE).tex $(FILE_BASE).xlp -twice -xlp - -############################################# - -doc_html:: $(FILE_BASE)_contents.html $(FILE_BASE).html - -$(FILE_BASE).html: - @ln -s $(FILE_BASE)_contents.html $@ - -$(FILE_BASE)_contents.html: $(FILE_BASE).tex $(TEX_ADDITIONAL) $(GIF_FILES) $(HTML_BUTTONS) - ../../../bin/$(OSTYPE)/tex2rtf $(FILE_BASE).tex $(FILE_BASE) -twice -html - -############################################# - -doc_rtf:: $(FILE_BASE).rtf - -$(FILE_BASE).rtf: $(FILE_BASE).tex $(TEX_ADDITIONAL) $(BMP_FILES) - ../../../bin/$(OSTYPE)/tex2rtf $(FILE_BASE).tex $(FILE_BASE).rtf -twice -rtf - -############################################# - -doc_winhelp:: $(FILE_BASE).win - -$(FILE_BASE).win: $(FILE_BASE).tex $(TEX_ADDITIONAL) $(BMP_FILES) - ../../../bin/$(OSTYPE)/tex2rtf $(FILE_BASE).tex $(FILE_BASE).win -twice -winhelp - @echo final conversion still needs to be done by MSWin - -############################################# - -subst:: - @if test "x$(OLD)" = x; then \ - echo "OLD not defined!"; exit -1; \ - fi - @if test "x$(NEW)" = x; then \ - echo "NEW not defined!"; exit -1; \ - fi - @for each in $(TEX_BASE) $(TEX_ADITIONAL) ; do \ - cat $$each | sed "s/$(OLD)/$(NEW)/g" > /tmp/subst; \ - rm $$each; cp /tmp/subst $$each; rm /tmp/subst; \ - done - -############################################# - -.SUFFIXES: -.SUFFIXES: .eps .xpm -.SUFFIXES: .bmp .xpm -.SUFFIXES: .gif .xpm - -.xpm.eps : - @$(RM) -f $@ - xpmtoppm $< | ppmtogif | giftopnm | pnmtops -rle -center -noturn -scale 0.5 - > $@ - -.xpm.bmp : - @$(RM) -f $@ - xpmtoppm $< | ppmtobmp -windows - > $@ - -.xpm.gif : - @$(RM) -f $@ - xpmtoppm $< | ppmtogif -interlace - > $@ diff --git a/setup/general/mygrep b/setup/general/mygrep deleted file mode 100755 index fcf54dcad9..0000000000 --- a/setup/general/mygrep +++ /dev/null @@ -1,3 +0,0 @@ -#! /bin/sh -grep $@ -exit 0 diff --git a/setup/general/needed b/setup/general/needed deleted file mode 100755 index 286931a793..0000000000 --- a/setup/general/needed +++ /dev/null @@ -1,10 +0,0 @@ -#! /bin/sh - -for each in $@ ; do - LINE=`grep " $each " ../$OSTYPE/wx_setup.h | grep "#define" | grep 1` - if test "x$LINE" = x ; then - echo "$each needed to compile"; - exit 1; - fi -done - diff --git a/setup/maketmpl.in b/setup/maketmpl.in deleted file mode 100644 index de91877e83..0000000000 --- a/setup/maketmpl.in +++ /dev/null @@ -1,118 +0,0 @@ -# Makefile for Autoconf. -# Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program 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 General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. - -#### Start of system configuration section. #### - -GLOBAL_LIB_DIR = $(WXBASEDIR)/lib/$(OS) -GLOBAL_BIN_DIR = $(WXBASEDIR)/bin/$(OS) - -# define toolkit to use -TOOLKIT_DEF = -D@TOOLKIT_DEF@ - -# general compiler stuff -OPTIMISE = @OPTIMISE@ -PROFILE = @PROFILE@ -DEBUG = @WXDEBUG@ @WXDEBUG_DEFINE@ - -# c-compiler stuff -CC = @CC@ -CPP = @CPP@ -CPPFLAGS=@CPPFLAGS@ -CFLAGS = @CFLAGS@ $(CPPFLAGS) $(OPTIMISE) $(PROFILE) $(DEBUG) - -# c++-compiler stuff -CXX = @CXX@ -CXXFLAGS = @CXXFLAGS@ $(CPPFLAGS) $(OPTIMISE) $(PROFILE) $(DEBUG) -CXXCPP = @CXXCPP@ - -# shared compile stuff -PICFLAGS = @PICFLAGS@ -CREATE_SHARED = @CREATE_SHARED@ - -# other stuff -RM = rm -f -LEX = @LEX@ -LEXLIB = @LEXLIB@ -YACC = @YACC@ -RANLIB = @RANLIB@ -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ -AWK = @AWK@ -LN_S = @LN_S@ -CJPEG_PROG = -CONVERT_PATH = /usr/bin/X11 -CONVERT_PROG = /usr/bin/X11/convert -DJPEG_PROG = -GIFTOPNM_PROG = -NETPBM_PATH = - -# Base directories for installation -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -# Directory in which to install headers -includedir = @includedir@ - -# Directory in which to install library files -libdir = @libdir@ - -# Directory in which to install executable files -bindir = @bindir@ - -X_CFLAGS = @X_CFLAGS@ -X_LIBS = @X_LIBS@ -X_EXTRA_LIBS = @X_EXTRA_LIBS@ -X_PRE_LIBS = @X_PRE_LIBS@ - -GUI_TK_INCLUDE = @GUI_TK_INCLUDE@ -GUI_TK_LIBRARY = @GUI_TK_LIBRARY@ -GUI_TK_LINK = @GUI_TK_LINK@ - -WX_LINK = @WX_LINK@ - -THREADS_LINK = @THREADS_LINK@ -EXTRA_LINK = @EXTRA_LINK@ - -# INCLUDES -WX_INCLUDES = \ -$(TOOLKIT_DEF) \ --I$(WXBASEDIR)/include \ --I. \ -$(GUI_TK_INCLUDE) \ --I$(WXBASEDIR)/src/zlib \ --I$(WXBASEDIR)/src/iodbc \ -$(X_CFLAGS) - -WX_LIBS = -L$(GLOBAL_LIB_DIR) $(WX_LINK) - -GUI_TK_LIBS = $(GUI_TK_LIBRARY) $(GUI_TK_LINK) @DL_LIBRARY@ - -LINK = $(CXX) -o $@ -LINK_LIBS= \ - $(WX_LIBS) \ - $(GUI_TK_LIBS) \ - $(X_EXTRA_LIBS) \ - $(X_PRE_LIBS) \ - $(THREADS_LINK) \ - $(EXTRA_LINK) - -# Don't include $(OPENGL_LIBS) in LINK_LIBS; they -# can be conveniently added to BIN_LINK in Makefile.in. - -#### End of system configuration section. #### diff --git a/setup/rules/bin b/setup/rules/bin deleted file mode 100644 index c179a1bbc3..0000000000 --- a/setup/rules/bin +++ /dev/null @@ -1,13 +0,0 @@ -# all that is to do -all:: checkneeds binary -clean:: clean_binary clean_obj - -# now include definite rules -BIN_BASE_DIR=. - -# include rules to create library -include $(RULES_GENERIC)/bin1 -# include rules to create objects -include $(RULES_GENERIC)/obj -# include rule to check for defines needed -include $(RULES_GENERIC)/needed diff --git a/setup/rules/bin2 b/setup/rules/bin2 deleted file mode 100644 index 87c0ad8691..0000000000 --- a/setup/rules/bin2 +++ /dev/null @@ -1,14 +0,0 @@ -# all that is to do -all:: checkneeds binary -clean:: clean_binary clean_obj - -# now include definite rules -BIN_BASE_DIR=. - -# include rules to create library -include $(RULES_GENERIC)/bin2 -# include rules to create objects -include $(RULES_GENERIC)/obj -# include rule to check for defines needed -include $(RULES_GENERIC)/needed - diff --git a/setup/rules/doc b/setup/rules/doc deleted file mode 100644 index 78f0f204f9..0000000000 --- a/setup/rules/doc +++ /dev/null @@ -1,90 +0,0 @@ -SHELL=/bin/sh - -FILE_BASE=$(TEX_BASE:.tex=) - -BMP_FILES=$(XPM_FILES:.xpm=.bmp) -EPS_FILES=$(XPM_FILES:.xpm=.eps) -GIF_FILES=$(XPM_FILES:.xpm=.gif) - -TEX2RTF=$(WXBASEDIR)/bin/$(OSTYPE)/tex2rtf - -HTML_BUTTONS=back.gif forward.gif contents.gif up.gif - -all:: doc - -clean:: - @ for each in $(DIRS) . ; do \ - ( cd $$each; \ - rm -f *.bmp *.eps *.gif *.aux *.dvi *.log \ - *.ps *.toc *~ *.idx *.hlp *.html \ - *.rtf *.ref *.xlp *.con *.win *.fts \ - *.hpj *.HLP; \ - ); done - -doc:: doc_ps doc_html doc_xlp doc_winhelp doc_rtf - -############################################# - -doc_ps:: $(FILE_BASE).ps - -$(FILE_BASE).ps: $(FILE_BASE).dvi - dvips $(FILE_BASE).dvi -o$@ - -############################################# - -doc_dvi:: $(FILE_BASE).dvi - -$(FILE_BASE).dvi: $(FILE_BASE).tex $(TEX_ADDITIONAL) $(EPS_FILES) - latex $(FILE_BASE).tex - latex $(FILE_BASE).tex - -############################################# - -doc_xlp:: $(FILE_BASE).xlp - -$(FILE_BASE).xlp: $(FILE_BASE).tex $(TEX_ADDITIONAL) - $(TEX2RTF) $(FILE_BASE).tex $(FILE_BASE).xlp -twice -xlp - -############################################# - -doc_html:: $(FILE_BASE)_contents.html $(FILE_BASE).html - -$(FILE_BASE).html: - @ln -s $(FILE_BASE)_contents.html $@ - -$(FILE_BASE)_contents.html: $(FILE_BASE).tex $(TEX_ADDITIONAL) $(GIF_FILES) $(HTML_BUTTONS) - $(TEX2RTF) $(FILE_BASE).tex $(FILE_BASE) -twice -html - -############################################# - -doc_rtf:: $(FILE_BASE).rtf - -$(FILE_BASE).rtf: $(FILE_BASE).tex $(TEX_ADDITIONAL) $(BMP_FILES) - $(TEX2RTF) $(FILE_BASE).tex $(FILE_BASE).rtf -twice -rtf - -############################################# - -doc_winhelp:: $(FILE_BASE).win - -$(FILE_BASE).win: $(FILE_BASE).tex $(TEX_ADDITIONAL) $(BMP_FILES) - ../../../bin/$(OSTYPE)/tex2rtf $(FILE_BASE).tex $(FILE_BASE).win -twice -winhelp - @echo final conversion still needs to be done by MSWin - -############################################# - -.SUFFIXES: -.SUFFIXES: .eps .xpm -.SUFFIXES: .bmp .xpm -.SUFFIXES: .gif .xpm - -.xpm.eps : - @$(RM) -f $@ - xpmtoppm $< | ppmtogif | giftopnm | pnmtops -rle -center -noturn -scale 0.5 - > $@ - -.xpm.bmp : - @$(RM) -f $@ - xpmtoppm $< | ppmtobmp -windows - > $@ - -.xpm.gif : - @$(RM) -f $@ - xpmtoppm $< | ppmtogif -interlace - > $@ diff --git a/setup/rules/gbin b/setup/rules/gbin deleted file mode 100644 index 1caea844d5..0000000000 --- a/setup/rules/gbin +++ /dev/null @@ -1,14 +0,0 @@ -# all that is to do -all:: checkneeds binary -clean:: clean_binary clean_obj - -# now include definite rules -BIN_BASE_DIR=$(GLOBAL_BIN_DIR) - -# include rules to create library -include $(RULES_GENERIC)/bin1 -# include rules to create objects -include $(RULES_GENERIC)/obj -# include rule to check for defines needed -include $(RULES_GENERIC)/needed - diff --git a/setup/rules/gbin2 b/setup/rules/gbin2 deleted file mode 100644 index 2d12986436..0000000000 --- a/setup/rules/gbin2 +++ /dev/null @@ -1,14 +0,0 @@ -# all that is to do -all:: checkneeds binary -clean:: clean_binary clean_obj - -# now include definite rules -BIN_BASE_DIR=$(GLOBAL_BIN_DIR) - -# include rules to create library -include $(RULES_GENERIC)/bin2 -# include rules to create objects -include $(RULES_GENERIC)/mkobj -# include rule to check for defines needed -include $(RULES_GENERIC)/needed - diff --git a/setup/rules/generic/bin1 b/setup/rules/generic/bin1 deleted file mode 100644 index d4c0bcdc64..0000000000 --- a/setup/rules/generic/bin1 +++ /dev/null @@ -1,8 +0,0 @@ -binary:: binary1 - -depend_binary:: depend_binary1 - -clean_binary:: clean_binary1 - -include $(RULES_GENERIC)/bin1gen - diff --git a/setup/rules/generic/bin1gen b/setup/rules/generic/bin1gen deleted file mode 100644 index c11c5a3634..0000000000 --- a/setup/rules/generic/bin1gen +++ /dev/null @@ -1,16 +0,0 @@ -# create binary - -binary1:: $(BIN_BASE_DIR)/$(BIN_TARGET) - -$(BIN_BASE_DIR)/$(BIN_TARGET): $(BIN_OBJ) - @$(RM) -f $@ - $(LINK) $(BIN_OBJ) -L. $(BIN_LINK) $(LINK_LIBS) - -# defining dependencies - -depend_binary1:: - -# cleaning all files - -clean_binary1:: - @$(RM) -f $(BIN_BASE_DIR)/$(BIN_TARGET) diff --git a/setup/rules/generic/bin2 b/setup/rules/generic/bin2 deleted file mode 100644 index 1394b8d050..0000000000 --- a/setup/rules/generic/bin2 +++ /dev/null @@ -1,9 +0,0 @@ -binary:: binary1 binary2 - -depend_binary:: depend_binary1 depend_binary2 - -clean_binary:: clean_binary1 clean_binary2 - -include $(RULES_GENERIC)/bin1gen -include $(RULES_GENERIC)/bin2gen - diff --git a/setup/rules/generic/bin2gen b/setup/rules/generic/bin2gen deleted file mode 100644 index b1ab3c4260..0000000000 --- a/setup/rules/generic/bin2gen +++ /dev/null @@ -1,16 +0,0 @@ -# create binary - -binary2:: $(BIN_BASE_DIR)/$(BIN2_TARGET) - -$(BIN_BASE_DIR)/$(BIN2_TARGET): $(BIN2_OBJ) - @$(RM) -f $@ - $(LINK) $(BIN2_OBJ) -L. $(BIN2_LINK) $(LINK_LIBS) - -# defining dependencies - -depend_binary2:: - -# cleaning all files - -clean_binary2:: - @$(RM) -f $(BIN_BASE_DIR)/$(BIN2_TARGET) diff --git a/setup/rules/generic/depend b/setup/rules/generic/depend deleted file mode 100644 index ff9386dec6..0000000000 --- a/setup/rules/generic/depend +++ /dev/null @@ -1,18 +0,0 @@ -depend:: - @echo "$(CXX) -MM \ - $(WX_INCLUDES) \ - $(ADD_COMPILE) \ - $(LIB_SRC) $(LIB_C_SRC) $(LIB_CPP_SRC) $(BIN_SRC) $(BIN2_SRC)" - @(cd .. ;\ - $(CXX) -MM \ - $(WX_INCLUDES) \ - $(ADD_COMPILE) \ - $(LIB_SRC) $(LIB_C_SRC) $(LIB_CPP_SRC) $(BIN_SRC) $(BIN2_SRC)\ - ) > .depend - @cp Makefile Makefile.bak - @cat Makefile.bak | sed -e '/^# DO NOT DELETE/q' > Makefile1 - @echo "# DO NOT DELETE" >> Makefile1 - @cat .depend | sed 's/^\(.\+\.o\ *:\ *\)\([^\ ]\+\/\)/\2\1\2/g' >> Makefile1 - @mv Makefile1 Makefile - @rm .depend - diff --git a/setup/rules/generic/globals b/setup/rules/generic/globals deleted file mode 100644 index 3b6413a923..0000000000 --- a/setup/rules/generic/globals +++ /dev/null @@ -1,15 +0,0 @@ -# creates subdirectories for object-files in case they are needed... - -subdirs:: - @if test "x$(SRC_DIR)" != x ; then \ - echo -n "Creating necessary subdirs: "; \ - for each in $(SRC_DIR) xxx; do \ - if test "x$$each" != xxxx; then \ - echo -n "$$each "; \ - if test ! -d $$each ; then \ - mkdir $$each ; \ - fi; \ - fi; \ - done; \ - echo "";\ - fi diff --git a/setup/rules/generic/lib b/setup/rules/generic/lib deleted file mode 100644 index 589acc5822..0000000000 --- a/setup/rules/generic/lib +++ /dev/null @@ -1,17 +0,0 @@ -# create library - -library:: $(LIB_BASE_DIR)/lib$(LIB_TARGET).a - -$(LIB_BASE_DIR)/lib$(LIB_TARGET).a: $(LIB_OBJ) - @$(RM) -f $@ - $(AR) rv $@ $(LIB_OBJ) - -# defining dependencies - -depend_library:: - -# cleaning all files - -clean_library:: - @$(RM) -f $(LIB_BASE_DIR)/lib$(LIB_TARGET).a - diff --git a/setup/rules/generic/needed b/setup/rules/generic/needed deleted file mode 100644 index 5cd5975729..0000000000 --- a/setup/rules/generic/needed +++ /dev/null @@ -1,24 +0,0 @@ -#SHELL=/bin/sh -MYGREP=$(WXBASEDIR)/setup/general/mygrep -checkneeds:: - @if test "x$(NEEDED_DEFINES)" != x ; then \ - RESULT=0 ; \ - for each in $(NEEDED_DEFINES) xxx; do \ - if test "$$each" != xxx ; then \ - LINE=`cat $(SETUP_DIR)/wx_setup.h \ - | sed "s/ /,/g" \ - | $(MYGREP) ",$$each," \ - | $(MYGREP) "#define" \ - | $(MYGREP) "1" ` ; \ - if test "x$$LINE" = x ; then \ - (TMPVAR=`pwd`;\ - TMPVAR=`dirname $$TMPVAR`;\ - echo "$$each needed to compile "`basename $$TMPVAR`"...";\ - );\ - RESULT=1 ; \ - fi; \ - fi; \ - done ;\ - exit $$RESULT; \ - fi - diff --git a/setup/rules/generic/obj b/setup/rules/generic/obj deleted file mode 100644 index 92beab8180..0000000000 --- a/setup/rules/generic/obj +++ /dev/null @@ -1,30 +0,0 @@ -.SUFFIXES: -.SUFFIXES: .o .c -.SUFFIXES: .o .cc -.SUFFIXES: .o .cpp - -VPATH= .. - -.c.o : - @$(RM) -f $@ - $(CC) -c -o $@ $(CFLAGS) -I.. $(WX_INCLUDES) $(ADD_COMPILE) $(WX_DEFINES) $< - -.cc.o : - @$(RM) -f $@ - $(CXX) -c -o $@ $(CXXFLAGS) -I.. $(WX_INCLUDES) $(ADD_COMPILE) $(WX_DEFINES) $< - -.cpp.o : - @$(RM) -f $@ - $(CXX) -c -o $@ $(CXXFLAGS) -I.. $(WX_INCLUDES) $(ADD_COMPILE) $(WX_DEFINES) $< - -clean_obj:: - @$(RM) *.o *.osh - @if test "x$(SRC_DIR)" != x ; then \ - for each in $(SRC_DIR) xxx; do \ - if test -d $$each ; then \ - $(RM) $$each/*.o $$each/*.osh ; \ - fi; \ - done; \ - fi; - -include $(RULES_GENERIC)/depend diff --git a/setup/rules/generic/slib b/setup/rules/generic/slib deleted file mode 100644 index 87b331d322..0000000000 --- a/setup/rules/generic/slib +++ /dev/null @@ -1,21 +0,0 @@ -# create library - -library:: $(LIB_BASE_DIR)/lib$(LIB_TARGET).a - -$(LIB_BASE_DIR)/lib$(LIB_TARGET).a: $(LIB_OBJ) - @$(RM) -f $@ $(LIB_BASE_DIR)/lib$(LIB_TARGET).so $(LIB_BASE_DIR)/lib$(LIB_TARGET).so.* - @if test "x$(CREATE_SHARED)" != x; then\ - echo "$(SHARE_DIR)/$(CREATE_SHARED) $(CC) $(LIB_BASE_DIR)/lib$(LIB_TARGET).so $(LIB_MAJOR) $(LIB_MINOR) $(LIB_OBJ)"; \ - $(SHARE_DIR)/$(CREATE_SHARED) $(CC) $(LIB_BASE_DIR)/lib$(LIB_TARGET).so $(LIB_MAJOR) $(LIB_MINOR) $(LIB_OBJ); \ - fi - $(AR) rv $@ $(LIB_OBJ) - -# defining dependencies - -depend_library:: - -# cleaning all files - -clean_library:: - @$(RM) -f $(LIB_BASE_DIR)/lib$(LIB_TARGET).a $(LIB_BASE_DIR)/lib$(LIB_TARGET).so.* $(LIB_BASE_DIR)/lib$(LIB_TARGET).so - diff --git a/setup/rules/generic/sobj b/setup/rules/generic/sobj deleted file mode 100644 index b2d7c6aaba..0000000000 --- a/setup/rules/generic/sobj +++ /dev/null @@ -1,42 +0,0 @@ -.SUFFIXES: -.SUFFIXES: .o .c -.SUFFIXES: .o .cc -.SUFFIXES: .o .cpp - -VPATH= .. - -.c.o : - @$(RM) -f $@ $@sh - @if test "x$(PICFLAGS)" != x; then \ - echo "$(CC) -c -o $@sh $(PICFLAGS) $(CFLAGS) -I.. $(WX_INCLUDES) $(ADD_COMPILE) $(WX_DEFINES) $<";\ - $(CC) -c -o $@sh $(PICFLAGS) $(CFLAGS) -I.. $(WX_INCLUDES) $(ADD_COMPILE) $(WX_DEFINES) $<;\ - fi - $(CC) -c -o $@ $(CFLAGS) -I.. $(WX_INCLUDES) $(ADD_COMPILE) $(WX_DEFINES) $< - -.cc.o : - @$(RM) -f $@ $@sh - @if test "x$(PICFLAGS)" != x; then \ - echo "$(CXX) -c -o $@sh $(PICFLAGS) $(CXXFLAGS) -I.. $(WX_INCLUDES) $(ADD_COMPILE) $(WX_DEFINES) $<";\ - $(CXX) -c -o $@sh $(PICFLAGS) $(CXXFLAGS) -I.. $(WX_INCLUDES) $(ADD_COMPILE) $(WX_DEFINES) $<;\ - fi - $(CXX) -c -o $@ $(CXXFLAGS) -I.. $(WX_INCLUDES) $(ADD_COMPILE) $(WX_DEFINES) $< - -.cpp.o : - @$(RM) -f $@ $@sh - @if test "x$(PICFLAGS)" != x; then \ - echo "$(CXX) -c -o $@sh $(PICFLAGS) $(CXXFLAGS) -I.. $(WX_INCLUDES) $(ADD_COMPILE) $(WX_DEFINES) $<";\ - $(CXX) -c -o $@sh $(PICFLAGS) $(CXXFLAGS) -I.. $(WX_INCLUDES) $(ADD_COMPILE) $(WX_DEFINES) $<;\ - fi - $(CXX) -c -o $@ $(CXXFLAGS) -I.. $(WX_INCLUDES) $(ADD_COMPILE) $(WX_DEFINES) $< - -clean_obj:: - @$(RM) *.o *.osh - @if test "x$(SRC_DIR)" != x ; then \ - for each in $(SRC_DIR) xxx; do \ - if test -d $$each ; then \ - $(RM) $$each/*.o $$each/*.osh ; \ - fi; \ - done; \ - fi; - -include $(RULES_GENERIC)/depend diff --git a/setup/rules/glib b/setup/rules/glib deleted file mode 100644 index b0e244789c..0000000000 --- a/setup/rules/glib +++ /dev/null @@ -1,15 +0,0 @@ -# all that is to do -all:: checkneeds library -clean:: clean_library clean_obj - -# now include definite rules -LIB_BASE_DIR=$(GLOBAL_LIB_DIR) - -# include rules to create library -include $(RULES_GENERIC)/lib -# include rules to create objects -include $(RULES_GENERIC)/obj -# include rule to check for defines needed -include $(RULES_GENERIC)/needed - - diff --git a/setup/rules/glibbin b/setup/rules/glibbin deleted file mode 100644 index edb0510517..0000000000 --- a/setup/rules/glibbin +++ /dev/null @@ -1,17 +0,0 @@ -# all that is to do -all:: checkneeds library binary -clean:: clean_library clean_obj clean_binary - -# now include definite rules -LIB_BASE_DIR=$(GLOBAL_LIB_DIR) -BIN_BASE_DIR=. - -# include rules to create library -include $(RULES_GENERIC)/lib -# include rules to create binary -include $(RULES_GENERIC)/bin1 -# include rules to create objects -include $(RULES_GENERIC)/obj -# include rule to check for defines needed -include $(RULES_GENERIC)/needed - diff --git a/setup/rules/glibgbin b/setup/rules/glibgbin deleted file mode 100644 index ee7a4023e3..0000000000 --- a/setup/rules/glibgbin +++ /dev/null @@ -1,18 +0,0 @@ -# all that is to do -all:: checkneeds library binary -depend:: depend_library depend_binary -clean:: clean_library clean_obj clean_binary - -# now include definite rules -LIB_BASE_DIR=$(GLOBAL_LIB_DIR) -BIN_BASE_DIR=$(GLOBAL_BIN_DIR) - -# include rules to create library -include $(RULES_GENERIC)/lib -# include rules to create binary -include $(RULES_GENERIC)/mkbin1 -# include rules to create objects -include $(RULES_GENERIC)/obj -# include rule to check for defines needed -include $(RULES_GENERIC)/needed - diff --git a/setup/rules/gslib b/setup/rules/gslib deleted file mode 100644 index 794a2b0d23..0000000000 --- a/setup/rules/gslib +++ /dev/null @@ -1,15 +0,0 @@ -# all that is to do -all:: checkneeds library -clean:: clean_library clean_obj - -# now include definite rules -LIB_BASE_DIR=$(GLOBAL_LIB_DIR) - -# include rules to create shared library -include $(RULES_GENERIC)/slib -# include rules to create shared objects -include $(RULES_GENERIC)/sobj -# include rule to check for defines needed -include $(RULES_GENERIC)/needed - - diff --git a/setup/rules/lib b/setup/rules/lib deleted file mode 100644 index 7831e41a4a..0000000000 --- a/setup/rules/lib +++ /dev/null @@ -1,14 +0,0 @@ -# all that is to do -all:: checkneeds library -clean:: clean_library clean_obj - -# now include definite rules -LIB_BASE_DIR=. - -# include rules to create library -include $(RULES_GENERIC)/lib -# include rules to create objects -include $(RULES_GENERIC)/obj -# include rule to check for defines needed -include $(RULES_GENERIC)/needed - diff --git a/setup/rules/libbin b/setup/rules/libbin deleted file mode 100644 index 97456c45f2..0000000000 --- a/setup/rules/libbin +++ /dev/null @@ -1,17 +0,0 @@ -# all that is to do -all:: checkneeds library binary -clean:: clean_library clean_obj clean_binary - -# now include definite rules -LIB_BASE_DIR=. -BIN_BASE_DIR=. - -# include rules to create library -include $(RULES_GENERIC)/lib -# include rules to create binary -include $(RULES_GENERIC)/bin1 -# include rules to create objects -include $(RULES_GENERIC)/obj -# include rule to check for defines needed -include $(RULES_GENERIC)/needed - diff --git a/setup/rules/libgbin b/setup/rules/libgbin deleted file mode 100644 index dc2ab616a9..0000000000 --- a/setup/rules/libgbin +++ /dev/null @@ -1,17 +0,0 @@ -# all that is to do -all:: checkneeds library binary -clean:: clean_library clean_obj clean_binary - -# now include definite rules -LIB_BASE_DIR=. -BIN_BASE_DIR=$(GLOBAL_BIN_DIR) - -# include rules to create library -include $(RULES_GENERIC)/lib -# include rules to create binary -include $(RULES_GENERIC)/mkbin1 -# include rules to create objects -include $(RULES_GENERIC)/obj -# include rule to check for defines needed -include $(RULES_GENERIC)/needed - diff --git a/setup/setup.hin b/setup/setup.hin deleted file mode 100644 index eed96dd6e1..0000000000 --- a/setup/setup.hin +++ /dev/null @@ -1,550 +0,0 @@ -/* setup.h - - Do not edit this file. It is autogenerated by configure. - - Leave the following blank line there!! Autoheader needs it. */ - - -// ------------------------------------------------------------------------ -// Features as requested by configure -// ------------------------------------------------------------------------ - -#ifndef __GTKSETUPH__ -#define __GTKSETUPH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -/* define the system to compile */ -#undef __UNIX__ -#undef __LINUX__ -#undef __SGI__ -#undef __HPUX__ -#undef __SYSV__ -#undef __SVR4__ -#undef __AIX__ -#undef __SUN__ -#undef __SOLARIS__ -#undef __SUNOS__ -#undef __ALPHA__ -#undef __OSF__ -#undef __BSD__ -#undef __FREEBSD__ -#undef __VMS__ -#undef __ULTRIX__ -#undef __DATA_GENERAL__ - -//------------------------------------------------------------------------ -// library options -//------------------------------------------------------------------------ - -/* - * Use zlib - */ -#define wxUSE_ZLIB 0 -/* - * Use libpng - */ -#define wxUSE_LIBPNG 0 -/* - * Use iODBC - */ -#define wxUSE_ODBC 0 -/* - * Use Threads - */ -#define wxUSE_THREADS 0 -/* - * Have glibc2 - */ -#define wxHAVE_GLIBC2 0 - -//------------------------------------------------------------------------ -// GUI control options (always enabled in wxGTK) -//------------------------------------------------------------------------ - -/* - * Use gauge item - */ -#define wxUSE_GAUGE 1 -/* - * Use combobox item - */ -#define wxUSE_COMBOBOX 1 -/* - * Use scrollbar item - */ -#define wxUSE_SCROLLBAR 1 -/* - * Use scrollbar item - */ -#define wxUSE_RADIOBUTTON 1 - -//------------------------------------------------------------------------ -// non-GUI options -//------------------------------------------------------------------------ - -/* - * Use time and date classes - */ -#define wxUSE_TIMEDATE 0 -/* - * Use config system - */ -#define wxUSE_CONFIG 0 -/* - * Use intl system - */ -#define wxUSE_INTL 0 -/* - * Use streams - */ -#define wxUSE_STREAMS 0 -/* - * Use class serialization - */ -#define wxUSE_SERIAL 0 -/* - * Use standard C++ streams if 1. If 0, use wxWin - * streams implementation. - */ -#define wxUSE_STD_IOSTREAM 1 -/* - * Use constraints mechanism - */ -#define wxUSE_CONSTRAINTS 1 - -//------------------------------------------------------------------------ -// PS options -//------------------------------------------------------------------------ - -/* - * Use font metric files in GetTextExtent for wxPostScriptDC - * Use consistent PostScript fonts for AFM and printing (!) - */ -#define wxUSE_AFM_FOR_POSTSCRIPT 0 -#define WX_NORMALIZED_PS_FONTS 0 -/* - * Use PostScript device context - */ -#define wxUSE_POSTSCRIPT 0 - -//------------------------------------------------------------------------ -// wxString options -//------------------------------------------------------------------------ - -/* - * Compile wxString with wide character (Unicode) support? - */ -#define wxUSE_UNICODE 0 - -/* - * Work around a bug in GNU libc 5.x wcstombs() implementation. - * - * Note that you must link your programs with libc.a if you enable this and you - * have libc 5 (you should enable this for libc6 where wcsrtombs() is - * thread-safe version of wcstombs()). - */ -#define wxUSE_WCSRTOMBS 0 - -//------------------------------------------------------------------------ -// misc options -//------------------------------------------------------------------------ - -/* - * Use Interprocess communication - */ -#define wxUSE_IPC 0 -/* - * Use wxGetResource & wxWriteResource (change .Xdefaults) - */ -#define wxUSE_RESOURCES 0 -/* - * Use clipboard - */ -#define wxUSE_CLIPBOARD 0 -/* - * Use dnd - */ -#define wxUSE_DRAG_AND_DROP 0 - -//------------------------------------------------------------------------ -// architecture options -//------------------------------------------------------------------------ - -/* - * Use the mdi architecture - */ -#define wxUSE_MDI_ARCHITECTURE 0 -/* - * Use the document/view architecture - */ -#define wxUSE_DOC_VIEW_ARCHITECTURE 0 -/* - * Use the print/preview architecture - */ -#define wxUSE_PRINTING_ARCHITECTURE 0 - -//------------------------------------------------------------------------ -// Prolog and wxWindows' resource system options -//------------------------------------------------------------------------ - -/* - * Use Prolog IO - */ -#define wxUSE_PROLOGIO 0 -/* - * Use Remote Procedure Call (Needs wxUSE_IPC and wxUSE_PROLOGIO) - */ -#define wxUSE_RPC 0 -/* - * Use wxWindows resource loading (.wxr-files) (Needs wxUSE_PROLOGIO 1) - */ -#define wxUSE_WX_RESOURCES 0 - -//------------------------------------------------------------------------ -// the rest -//------------------------------------------------------------------------ - -/* - * Use wxWindows help facility (needs wxUSE_IPC 1) - */ -#define wxUSE_HELP 0 -/* - * Use iostream.h rather than iostream - */ -#define wxUSE_IOSTREAMH 0 -/* - * Use Apple Ieee-double converter - */ -#define wxUSE_APPLE_IEEE 0 -/* Compatibility with 1.66 API. - Level 0: no backward compatibility, all new features - Level 1: wxDC, OnSize (etc.) compatibility, but - some new features such as event tables */ -#define WXWIN_COMPATIBILITY 1 -/* - * Enables debugging: memory tracing, assert, etc., contains debug level - */ -#define WXDEBUG 0 -/* - * Enables debugging version of wxObject::new and wxObject::delete (IF WXDEBUG) - * WARNING: this code may not work with all architectures, especially - * if alignment is an issue. - */ -#define wxUSE_MEMORY_TRACING 0 -/* - * Enable debugging version of global memory operators new and delete - * Disable it, If this causes problems (e.g. link errors) - */ -#define wxUSE_DEBUG_NEW_ALWAYS 1 -/* - * In debug mode, causes new to be defined to - * be WXDEBUG_NEW (see object.h). If this causes - * problems (e.g. link errors), set this to 0. - */ -#define wxUSE_GLOBAL_MEMORY_OPERATORS 0 -/* - * Matthews garbage collection (used for MrEd?) - */ -#define WXGARBAGE_COLLECTION_ON 0 -/* - * Use splines - */ -#define wxUSE_SPLINES 1 -/* - * wxUSE_DYNAMIC_CLASSES is TRUE for the Xt port - */ -#define wxUSE_DYNAMIC_CLASSES 1 -/* - * Disable this if your compiler can't cope - * with omission of prototype parameters. - */ -#define REMOVE_UNUSED_ARG 1 -/* - * The const keyword is being introduced more in wxWindows. - * You can use this setting to maintain backward compatibility. - * If 0: will use const wherever possible. - * If 1: will use const only where necessary - * for precompiled headers to work. - * If 2: will be totally backward compatible, but precompiled - * headers may not work and program size will be larger. - */ -#define CONST_COMPATIBILITY 0 - -// ------------------------------------------------------------------------ -// System-specific stuff -// ------------------------------------------------------------------------ - -/* acconfig.h - This file is in the public domain. - - Descriptive text for the C preprocessor macros that - the distributed Autoconf macros can define. - No software package will use all of them; autoheader copies the ones - your configure.in uses into your configuration header file templates. - - The entries are in sort -df order: alphabetical, case insensitive, - ignoring punctuation (such as underscores). Although this order - can split up related entries, it makes it easier to check whether - a given entry is in the file. */ - -/* Define if on AIX 3. - System headers sometimes define this. - We just want to avoid a redefinition error message. */ -#ifndef _ALL_SOURCE -#undef _ALL_SOURCE -#endif - -/* Define if using alloca.c. */ -#undef C_ALLOCA - -/* Define if type char is unsigned and you are not using gcc. */ -#ifndef __CHAR_UNSIGNED__ -#undef __CHAR_UNSIGNED__ -#endif - -/* Define if the closedir function returns void instead of int. */ -#undef CLOSEDIR_VOID - -/* Define to empty if the keyword does not work. */ -#undef const - -/* Define to one of _getb67, GETB67, getb67 for Cray-2 and Cray-YMP systems. - This function is required for alloca.c support on those systems. */ -#undef CRAY_STACKSEG_END - -/* Define for DGUX with . */ -#undef DGUX - -/* Define if you have . */ -#undef DIRENT - -/* Define to the type of elements in the array set by `getgroups'. - Usually this is either `int' or `gid_t'. */ -#undef GETGROUPS_T - -/* Define if the `getloadavg' function needs to be run setuid or setgid. */ -#undef GETLOADAVG_PRIVILEGED - -/* Define if the `getpgrp' function takes no argument. */ -#undef GETPGRP_VOID - -/* Define to `int' if doesn't define. */ -#undef gid_t - -/* Define if you have alloca, as a function or macro. */ -#undef HAVE_ALLOCA - -/* Define if you have and it should be used (not on Ultrix). */ -#undef HAVE_ALLOCA_H - -/* Define if you don't have vprintf but do have _doprnt. */ -#undef HAVE_DOPRNT - -/* Define if you have vprintf() */ -#undef HAVE_VPRINTF - -/* Define if you have vsnprintf() */ -#undef HAVE_VSNPRINTF - -/* Define if your system has its own `getloadavg' function. */ -#undef HAVE_GETLOADAVG - -/* Define if you have the getmntent function. */ -#undef HAVE_GETMNTENT - -/* Define if the `long double' type works. */ -#undef HAVE_LONG_DOUBLE - -/* Define if you support file names longer than 14 characters. */ -#undef HAVE_LONG_FILE_NAMES - -/* Define if you have a working `mmap' system call. */ -#undef HAVE_MMAP - -/* Define if system calls automatically restart after interruption - by a signal. */ -#undef HAVE_RESTARTABLE_SYSCALLS - -/* Define if your struct stat has st_blksize. */ -#undef HAVE_ST_BLKSIZE - -/* Define if your struct stat has st_blocks. */ -#undef HAVE_ST_BLOCKS - -/* Define if you have the strcoll function and it is properly defined. */ -#undef HAVE_STRCOLL - -/* Define if your struct stat has st_rdev. */ -#undef HAVE_ST_RDEV - -/* Define if you have the strftime function. */ -#undef HAVE_STRFTIME - -/* Define if you have that is POSIX.1 compatible. */ -#undef HAVE_SYS_WAIT_H - -/* Define if your struct tm has tm_zone. */ -#undef HAVE_TM_ZONE - -/* Define if you don't have tm_zone but do have the external array - tzname. */ -#undef HAVE_TZNAME - -/* Define if you have . */ -#undef HAVE_UNISTD_H - -/* Define if you have . */ -#undef HAVE_FNMATCH_H - -/* Define if utime(file, NULL) sets file's timestamp to the present. */ -#undef HAVE_UTIME_NULL - -/* Define if you have . */ -#undef HAVE_VFORK_H - -/* Define if you have the vprintf function. */ -#undef HAVE_VPRINTF - -/* Define if you have the wait3 system call. */ -#undef HAVE_WAIT3 - -/* Define as __inline if that's what the C compiler calls it. */ -#ifndef __cplusplus -#undef inline -#endif - -/* Define if major, minor, and makedev are declared in . */ -#undef MAJOR_IN_MKDEV - -/* Define if major, minor, and makedev are declared in . */ -#undef MAJOR_IN_SYSMACROS - -/* Define if on MINIX. */ -#undef _MINIX - -/* Define to `int' if doesn't define. */ -#undef mode_t - -/* Define if you don't have , but have . */ -#undef NDIR - -/* Define if you have , and doesn't declare the - mem* functions. */ -#undef NEED_MEMORY_H - -/* Define if your struct nlist has an n_un member. */ -#undef NLIST_NAME_UNION - -/* Define if you have . */ -#undef NLIST_STRUCT - -/* Define if your C compiler doesn't accept -c and -o together. */ -#undef NO_MINUS_C_MINUS_O - -/* Define to `long' if doesn't define. */ -#undef off_t - -/* Define to `int' if doesn't define. */ -#undef pid_t - -/* Define if the system does not provide POSIX.1 features except - with this defined. */ -#undef _POSIX_1_SOURCE - -/* Define if you need to in order for stat and other things to work. */ -#undef _POSIX_SOURCE - -/* Define as the return type of signal handlers (int or void). */ -#undef RETSIGTYPE - -/* Define if the setvbuf function takes the buffering type as its second - argument and the buffer pointer as the third, as on System V - before release 3. */ -#undef SETVBUF_REVERSED - -/* Define SIZESOF for some Objects */ -#undef SIZEOF_INT -#undef SIZEOF_INT_P -#undef SIZEOF_LONG - -/* Define to `unsigned' if doesn't define. */ -#undef size_t - -/* If using the C implementation of alloca, define if you know the - direction of stack growth for your system; otherwise it will be - automatically deduced at run-time. - STACK_DIRECTION > 0 => grows toward higher addresses - STACK_DIRECTION < 0 => grows toward lower addresses - STACK_DIRECTION = 0 => direction of growth unknown - */ -#undef STACK_DIRECTION - -/* Define if the `S_IS*' macros in do not work properly. */ -#undef STAT_MACROS_BROKEN - -/* Define if you have the ANSI C header files. */ -#undef STDC_HEADERS - -/* Define on System V Release 4. */ -#undef SVR4 - -/* Define on BSD */ -#undef BSD - -/* Define on System V */ -#undef SYSV - -/* Define if you don't have , but have . */ -#undef SYSDIR - -/* Define if you don't have , but have . */ -#undef SYSNDIR - -/* Define if `sys_siglist' is declared by . */ -#undef SYS_SIGLIST_DECLARED - -/* Define if you can safely include both and . */ -#undef TIME_WITH_SYS_TIME - -/* Define if your declares struct tm. */ -#undef TM_IN_SYS_TIME - -/* Define to `int' if doesn't define. */ -#undef uid_t - -/* Define for Encore UMAX. */ -#undef UMAX - -/* Define for Encore UMAX 4.3 that has - instead of . */ -#undef UMAX4_3 - -/* Define if you do not have , index, bzero, etc.. */ -#undef USG - -/* Define if the system is System V Release 4 */ -#undef SVR4 - -/* Define vfork as fork if vfork does not work. */ -#undef vfork - -/* Define if the closedir function returns void instead of int. */ -#undef VOID_CLOSEDIR - -/* Define if your processor stores words with the most significant - byte first (like Motorola and SPARC, unlike Intel and VAX). */ -#undef WORDS_BIGENDIAN - -/* Define if lex declares yytext as a char * by default, not a char[]. */ -#undef YYTEXT_POINTER - -#endif /* __GTKSETUPH__ */ - - -/* Leave that blank line there!! Autoheader needs it. - If you're adding to this file, keep in mind: - The entries are in sort -df order: alphabetical, case insensitive, - ignoring punctuation (such as underscores). */ diff --git a/setup/shared/sharedAIX b/setup/shared/sharedAIX deleted file mode 100755 index cc9b6e164e..0000000000 --- a/setup/shared/sharedAIX +++ /dev/null @@ -1,26 +0,0 @@ -#! /bin/sh - -COMPILER=$1 -LIBRARY_BASE=$2 -LIBRARY_MAJOR=$3 -LIBRARY_MINOR=$4 -shift 3 -LIBRARY_OBJS= -while (test $# -ne 1) do - shift; - LIBRARY_OBJS="$LIBRARY_OBJS $1sh"; -done - -LIBRARY_BASE=`echo $LIBRARY_BASE | sed 's/.so/.sa/'` -LIBRARY_NAME=`basename $LIBRARY_BASE` -LIBRARY_FILE=$LIBRARY_BASE - -echo "Creating shared library: $LIBRARY_FILE" - -ar cr $LIBRARY_FILE~ $LIBRARY_OBJS -nm $LIBRARY_OBJS | awk '/ [BD] /{print $$3}' | sort | uniq > ${LIBRARY_FILE}.syms -ld -o shr.o $LIBRARY_FILE~ -lX11 -lXt -lc -lm -H512 -T512 -bE:${LIBRARY_FILE}.syms -bM:SRE -rm -f $LIBRARY_FILE~ -ar ruv $LIBRARY_FILE shr.o -chmod a+x $LIBRARY_FILE - diff --git a/setup/shared/sharedBsd b/setup/shared/sharedBsd deleted file mode 100755 index 4e6db1ccc7..0000000000 --- a/setup/shared/sharedBsd +++ /dev/null @@ -1,33 +0,0 @@ -#! /bin/sh - -#LIBRARY_BASE=`echo $1 | sed 's/.a/.so/'` -COMPILER=$1 -LIBRARY_BASE=$2 -LIBRARY_MAJOR=$3 -LIBRARY_MINOR=$4 -shift 3 -LIBRARY_OBJS= -while (test $# -ne 1) do - shift; - LIBRARY_OBJS="$LIBRARY_OBJS $1sh"; -done - -LIBRARY_NAME=`basename $LIBRARY_BASE` -LIBRARY_FILE=$LIBRARY_BASE.$LIBRARY_MAJOR.$LIBRARY_MINOR - -echo "Creating shared library: $LIBRARY_FILE" - -if test "x$COMPILER" = xgcc ; then - gcc -shared -o $LIBRARY_FILE $LIBRARY_OBJS -else - CC -Bshareable -Bforcearchive -o $LIBRARY_FILE $LIBRARY_OBJS -fi -chmod a+x $LIBRARY_FILE -rm -f $LIBRARY_BASE.$LIBRARY_MAJOR -ln -s $LIBRARY_NAME.$LIBRARY_MAJOR.$LIBRARY_MINOR $LIBRARY_BASE.$LIBRARY_MAJOR -rm -f $LIBRARY_BASE -ln -s $LIBRARY_NAME.$LIBRARY_MAJOR $LIBRARY_BASE - - - - diff --git a/setup/shared/sharedDgux b/setup/shared/sharedDgux deleted file mode 100755 index d2bfc2a1a2..0000000000 --- a/setup/shared/sharedDgux +++ /dev/null @@ -1,29 +0,0 @@ -#! /bin/sh - -COMPILER=$1 -LIBRARY_BASE=$2 -LIBRARY_MAJOR=$3 -LIBRARY_MINOR=$4 -shift 3 -LIBRARY_OBJS= -while (test $# -ne 1) do - shift; - LIBRARY_OBJS="$LIBRARY_OBJS $1sh"; -done - -LIBRARY_BASE=`echo $LIBRARY_BASE | sed 's/.so/.sl/'` -LIBRARY_NAME=`basename $LIBRARY_BASE` -LIBRARY_FILE=$LIBRARY_BASE - -echo "Creating shared library: $LIBRARY_FILE" - -if test "x$COMPILER" = xgcc ; then - gcc -shared -h $LIBRARY_NAME -o $LIBRARY_FILE $LIBRARY_OBJS -else - CC -G -h $LIBRARY_NAME -o $LIBRARY_FILE $LIBRARY_OBJS -fi -chmod a+x $LIBRARY_FILE - - - - diff --git a/setup/shared/sharedHpux b/setup/shared/sharedHpux deleted file mode 100755 index 60c198d862..0000000000 --- a/setup/shared/sharedHpux +++ /dev/null @@ -1,29 +0,0 @@ -#! /bin/sh - -COMPILER=$1 -LIBRARY_BASE=$2 -LIBRARY_MAJOR=$3 -LIBRARY_MINOR=$4 -shift 3 -LIBRARY_OBJS= -while (test $# -ne 1) do - shift; - LIBRARY_OBJS="$LIBRARY_OBJS $1sh"; -done - -LIBRARY_BASE=`echo $LIBRARY_BASE | sed 's/.so/.sl/'` -LIBRARY_NAME=`basename $LIBRARY_BASE` -LIBRARY_FILE=$LIBRARY_BASE - -echo "Creating shared library: $LIBRARY_FILE" - -if test "x$COMPILER" = xgcc ; then - gcc -shared -o $LIBRARY_FILE $LIBRARY_OBJS -else - CC -Wl,+s -o $LIBRARY_FILE $LIBRARY_OBJS -fi -chmod a+x $LIBRARY_FILE - - - - diff --git a/setup/shared/sharedIrix b/setup/shared/sharedIrix deleted file mode 100755 index d2b5393c3d..0000000000 --- a/setup/shared/sharedIrix +++ /dev/null @@ -1,45 +0,0 @@ -#! /bin/sh -# on Irix, position independent code is the default - -#LIBRARY_BASE=`echo $1 | sed 's/.a/.so/'` -COMPILER=$1 -LIBRARY_BASE=$2 -LIBRARY_MAJOR=$3 -LIBRARY_MINOR=$4 -shift 3 -LIBRARY_OBJS= -while (test $# -ne 1) do - shift; - LIBRARY_OBJS="$LIBRARY_OBJS $1"; -done - -LIBRARY_NAME=`basename $LIBRARY_BASE` -LIBRARY_FILE=$LIBRARY_BASE.$LIBRARY_MAJOR.$LIBRARY_MINOR - -echo "Creating shared library: $LIBRARY_FILE" - -if test ! -f /tmp/so_locations; then - if test -f /usr/lib/so_locations; then - cp /usr/lib/so_locations /tmp - else - touch /tmp/so_locations - fi -fi -chmod u+w /tmp/so_locations - -if test "x$COMPILER" = xgcc ; then - gcc -shared -Wl,-update_registry,/tmp/so_locations \ - -Wl,-soname,$LIBRARY_NAME.$LIBRARY_MAJOR -o $LIBRARY_FILE $LIBRARY_OBJS -else - CC -shared -update_registry /tmp/so_locations \ - -soname $LIBRARY_NAME.$LIBRARY_MAJOR -o $LIBRARY_FILE $LIBRARY_OBJS -fi -chmod a+x $LIBRARY_FILE -rm -f $LIBRARY_BASE.$LIBRARY_MAJOR -ln -s $LIBRARY_NAME.$LIBRARY_MAJOR.$LIBRARY_MINOR $LIBRARY_BASE.$LIBRARY_MAJOR -rm -f $LIBRARY_BASE -ln -s $LIBRARY_NAME.$LIBRARY_MAJOR $LIBRARY_BASE - - - - diff --git a/setup/shared/sharedLinux b/setup/shared/sharedLinux deleted file mode 100755 index c274903db1..0000000000 --- a/setup/shared/sharedLinux +++ /dev/null @@ -1,34 +0,0 @@ -#! /bin/sh - -#LIBRARY_BASE=`echo $1 | sed 's/.a/.so/'` -COMPILER=$1 -LIBRARY_BASE=$2 -LIBRARY_MAJOR=$3 -LIBRARY_MINOR=$4 -shift 3 -LIBRARY_OBJS= -while (test $# -ne 1) do - shift; - LIBRARY_OBJS="$LIBRARY_OBJS $1sh"; -done - -LIBRARY_NAME=`basename $LIBRARY_BASE` -LIBRARY_FILE=$LIBRARY_BASE.$LIBRARY_MAJOR.$LIBRARY_MINOR - -echo "Creating shared library: $LIBRARY_FILE" - -case $COMPILER in gcc*|*gcc) - $COMPILER -shared -Wl,-soname,$LIBRARY_NAME.$LIBRARY_MAJOR -o $LIBRARY_FILE $LIBRARY_OBJS - ;; -*) - $COMPILER -shared -soname $LIBRARY_NAME.$LIBRARY_MAJOR -o $LIBRARY_FILE $LIBRARY_OBJS -esac -chmod a+x $LIBRARY_FILE -rm -f $LIBRARY_BASE.$LIBRARY_MAJOR -ln -s $LIBRARY_NAME.$LIBRARY_MAJOR.$LIBRARY_MINOR $LIBRARY_BASE.$LIBRARY_MAJOR -rm -f $LIBRARY_BASE -ln -s $LIBRARY_NAME.$LIBRARY_MAJOR $LIBRARY_BASE - - - - diff --git a/setup/shared/sharedOSF b/setup/shared/sharedOSF deleted file mode 100755 index 03ba07eca1..0000000000 --- a/setup/shared/sharedOSF +++ /dev/null @@ -1,33 +0,0 @@ -#! /bin/sh - -#LIBRARY_BASE=`echo $1 | sed 's/.a/.so/'` -COMPILER=$1 -LIBRARY_BASE=$2 -LIBRARY_MAJOR=$3 -LIBRARY_MINOR=$4 -shift 3 -LIBRARY_OBJS= -while (test $# -ne 1) do - shift; - LIBRARY_OBJS="$LIBRARY_OBJS $1sh"; -done - -LIBRARY_NAME=`basename $LIBRARY_BASE` -LIBRARY_FILE=$LIBRARY_BASE.$LIBRARY_MAJOR.$LIBRARY_MINOR - -echo "Creating shared library: $LIBRARY_FILE" - -if test "x$COMPILER" = xgcc ; then - gcc -shared -Wl,-soname,$LIBRARY_NAME -o $LIBRARY_FILE $LIBRARY_OBJS -else - $COMPILER -shared -soname $LIBRARY_NAME -o $LIBRARY_FILE $LIBRARY_OBJS -fi -chmod a+x $LIBRARY_FILE -rm -f $LIBRARY_BASE.$LIBRARY_MAJOR -ln -s $LIBRARY_NAME.$LIBRARY_MAJOR.$LIBRARY_MINOR $LIBRARY_BASE.$LIBRARY_MAJOR -rm -f $LIBRARY_BASE -ln -s $LIBRARY_NAME.$LIBRARY_MAJOR $LIBRARY_BASE - - - - diff --git a/setup/shared/sharedSolaris2 b/setup/shared/sharedSolaris2 deleted file mode 100755 index 52c9086ee2..0000000000 --- a/setup/shared/sharedSolaris2 +++ /dev/null @@ -1,33 +0,0 @@ -#! /bin/sh - -#LIBRARY_BASE=`echo $1 | sed 's/.a/.so/'` -COMPILER=$1 -LIBRARY_BASE=$2 -LIBRARY_MAJOR=$3 -LIBRARY_MINOR=$4 -shift 3 -LIBRARY_OBJS= -while (test $# -ne 1) do - shift; - LIBRARY_OBJS="$LIBRARY_OBJS $1sh"; -done - -LIBRARY_NAME=`basename $LIBRARY_BASE` -LIBRARY_FILE=$LIBRARY_BASE.$LIBRARY_MAJOR.$LIBRARY_MINOR - -echo "Creating shared library: $LIBRARY_FILE" - -if test "x$COMPILER" = xgcc ; then - gcc -shared -h $LIBRARY_NAME -o $LIBRARY_FILE $LIBRARY_OBJS -else - CC -G -h $LIBRARY_NAME -o $LIBRARY_FILE $LIBRARY_OBJS -fi -chmod a+x $LIBRARY_FILE -rm -f $LIBRARY_BASE.$LIBRARY_MAJOR -ln -s $LIBRARY_NAME.$LIBRARY_MAJOR.$LIBRARY_MINOR $LIBRARY_BASE.$LIBRARY_MAJOR -rm -f $LIBRARY_BASE -ln -s $LIBRARY_NAME.$LIBRARY_MAJOR $LIBRARY_BASE - - - - diff --git a/setup/shared/sharedSunos4 b/setup/shared/sharedSunos4 deleted file mode 100755 index 7544a00584..0000000000 --- a/setup/shared/sharedSunos4 +++ /dev/null @@ -1,33 +0,0 @@ -#! /bin/sh - -#LIBRARY_BASE=`echo $1 | sed 's/.a/.so/'` -COMPILER=$1 -LIBRARY_BASE=$2 -LIBRARY_MAJOR=$3 -LIBRARY_MINOR=$4 -shift 3 -LIBRARY_OBJS= -while (test $# -ne 1) do - shift; - LIBRARY_OBJS="$LIBRARY_OBJS $1sh"; -done - -LIBRARY_NAME=`basename $LIBRARY_BASE` -LIBRARY_FILE=$LIBRARY_BASE.$LIBRARY_MAJOR.$LIBRARY_MINOR - -echo "Creating shared library: $LIBRARY_FILE" - -if test "x$COMPILER" = xgcc ; then - gcc -shared -o $LIBRARY_FILE $LIBRARY_OBJS -else - CC -assert pure-text -o $LIBRARY_FILE $LIBRARY_OBJS -fi -chmod a+x $LIBRARY_FILE -rm -f $LIBRARY_BASE.$LIBRARY_MAJOR -ln -s $LIBRARY_NAME.$LIBRARY_MAJOR.$LIBRARY_MINOR $LIBRARY_BASE.$LIBRARY_MAJOR -rm -f $LIBRARY_BASE -ln -s $LIBRARY_NAME.$LIBRARY_MAJOR $LIBRARY_BASE - - - - diff --git a/setup/shared/sharedSysV b/setup/shared/sharedSysV deleted file mode 100755 index d2bfc2a1a2..0000000000 --- a/setup/shared/sharedSysV +++ /dev/null @@ -1,29 +0,0 @@ -#! /bin/sh - -COMPILER=$1 -LIBRARY_BASE=$2 -LIBRARY_MAJOR=$3 -LIBRARY_MINOR=$4 -shift 3 -LIBRARY_OBJS= -while (test $# -ne 1) do - shift; - LIBRARY_OBJS="$LIBRARY_OBJS $1sh"; -done - -LIBRARY_BASE=`echo $LIBRARY_BASE | sed 's/.so/.sl/'` -LIBRARY_NAME=`basename $LIBRARY_BASE` -LIBRARY_FILE=$LIBRARY_BASE - -echo "Creating shared library: $LIBRARY_FILE" - -if test "x$COMPILER" = xgcc ; then - gcc -shared -h $LIBRARY_NAME -o $LIBRARY_FILE $LIBRARY_OBJS -else - CC -G -h $LIBRARY_NAME -o $LIBRARY_FILE $LIBRARY_OBJS -fi -chmod a+x $LIBRARY_FILE - - - - diff --git a/setup/substit.in b/setup/substit.in deleted file mode 100644 index 0cfdc97fb0..0000000000 --- a/setup/substit.in +++ /dev/null @@ -1,50 +0,0 @@ -s|*OS*|@OS@|g -s|*MAKEINCLUDE*|@MAKEINCLUDE@|g -s|*WXBASEDIR*|@WXBASEDIR@|g -s|*PROFILE*|@PROFILE@|g -s|*WXDEBUG*|@WXDEBUG@|g -s|*WXDEBUG_DEFINE*|@WXDEBUG_DEFINE@|g -s|*__WXDEBUG__*|@WXDEBUG@|g -s|*OPTIMISE*|@OPTIMISE@|g -s|*CC*|@CC@|g -s|*CFLAGS*|@CFLAGS@|g -s|*CPP*|@CPP@|g -s|*CPPFLAGS*|@CPPFLAGS@|g -s|*CXX*|@CXX@|g -s|*CXXFLAGS*|@CXXFLAGS@|g -s|*CXXCPP*|@CXXCPP@|g -s|*PICFLAGS*|@PICFLAGS@|g -s|*CREATE_SHARED*|@CREATE_SHARED@|g -s|*LEX*|@LEX@|g -s|*LEXLIB*|@LEXLIB@|g -s|*YACC*|@YACC@|g -s|*RANLIB*|@RANLIB@|g -s|*INSTALL*|@INSTALL@|g -s|*INSTALL_PROGRAM*|@INSTALL_PROGRAM@|g -s|*INSTALL_DATA*|@INSTALL_DATA@|g -s|*AWK*|@AWK@|g -s|*LN_S*|@LN_S@|g -s|*prefix*|@prefix@|g -s|*exec_prefix*|@exec_prefix@|g -s|*libdir*|@libdir@|g -s|*bindir*|@bindir@|g -s|*includedir*|@includedir@|g -s|*X_CFLAGS*|@X_CFLAGS@|g -s|*X_LIBS*|@X_LIBS@|g -s|*X_EXTRA_LIBS*|@X_EXTRA_LIBS@|g -s|*X_PRE_LIBS*|@X_PRE_LIBS@|g -s|*GUI_TK_INCLUDE*|@GUI_TK_INCLUDE@|g -s|*GUI_TK_LIBRARY*|@GUI_TK_LIBRARY@|g -s|*GUI_TK_LINK*|@GUI_TK_LINK@|g -s|*WX_LINK*|@WX_LINK@|g -s|*DL_LIBRARY*|@DL_LIBRARY@|g -s|*TOOLKIT*|@TOOLKIT@|g -s|*TOOLKIT_DEF*|@TOOLKIT_DEF@|g -s|*THREADS*|@THREADS@|g -s|*THREADS_LINK*|@THREADS_LINK@|g -s|*EXTRA_LINK*|@EXTRA_LINK@|g -s|*GTK_JOYSTICK*|@GTK_JOYSTICK@|g -s|*UNIX_THREAD*|@UNIX_THREAD@|g -s|*IODBC_C_SRC*|@IODBC_C_SRC@|g -s|*PNG_C_SRC*|@PNG_C_SRC@|g -s|*Z_C_SRC*|@Z_C_SRC@|g diff --git a/src/.cvsignore b/src/.cvsignore deleted file mode 100644 index 3140ad1cec..0000000000 --- a/src/.cvsignore +++ /dev/null @@ -1,3 +0,0 @@ -Linux -linux -linux-gnu diff --git a/src/Makefile b/src/Makefile deleted file mode 100644 index 93407a0b44..0000000000 --- a/src/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../setup/general/makeapp diff --git a/src/Makefile.in b/src/Makefile.in deleted file mode 100644 index 4d34f7e9c2..0000000000 --- a/src/Makefile.in +++ /dev/null @@ -1,234 +0,0 @@ -# -# wxWindows/Unix main source makefile -# -# Copyright 1998, Markus Holzhem and Robert Roebling -# - -# wxWindows base directory -WXBASEDIR=@WXBASEDIR@ - -# set the OS type for compilation -OS=@OS@ - -# compile a library only -RULE=gslib - -# define source file for odbc -IODBC_C_SRC=\ - iodbc/catalog.c \ - iodbc/connect.c \ - iodbc/dlf.c \ - iodbc/dlproc.c \ - iodbc/execute.c \ - iodbc/fetch.c \ - iodbc/hdbc.c \ - iodbc/henv.c \ - iodbc/herr.c \ - iodbc/hstmt.c \ - iodbc/info.c \ - iodbc/itrace.c \ - iodbc/misc.c \ - iodbc/prepare.c \ - iodbc/result.c - -# define source file for png -PNG_C_SRC=\ - png/png.c \ - png/pngset.c \ - png/pngget.c \ - png/pngrutil.c \ - png/pngtrans.c \ - png/pngwutil.c \ - png/pngread.c \ - png/pngrio.c \ - png/pngwio.c \ - png/pngwrite.c \ - png/pngrtran.c \ - png/pngwtran.c \ - png/pngmem.c \ - png/pngerror.c \ - png/pngpread.c - -# define source file for zlib -Z_C_SRC=\ - zlib/adler32.c \ - zlib/compress.c \ - zlib/crc32.c \ - zlib/gzio.c \ - zlib/uncompr.c \ - zlib/deflate.c \ - zlib/trees.c \ - zlib/zutil.c \ - zlib/inflate.c \ - zlib/infblock.c \ - zlib/inftrees.c \ - zlib/infcodes.c \ - zlib/infutil.c \ - zlib/inffast.c - -# include gtk.inc, qt.inc or motif.inc here -include @MAKEINCLUDE@ - -# determine library names -STATIC_LIBRARY=lib$(LIB_TARGET).a -SHARED_LIBRARY=lib$(LIB_TARGET).so.$(LIB_MAJOR).$(LIB_MINOR) - -LIB_CPP_ALL_SRC=$(LIB_CPP_SRC) @UNIX_THREAD@ -# @GTK_JOYSTICK@ - -LIB_C_ALL_SRC=$(LIB_C_SRC) @IODBC_C_SRC@ @PNG_C_SRC@ @Z_C_SRC@ parser.c - -#define library objects -LIB_OBJ=\ - $(LIB_CPP_ALL_SRC:.cpp=.o) \ - $(LIB_C_ALL_SRC:.c=.o) - -all:: - @if test ! -d gtk; then mkdir gtk; fi - @if test ! -d qt; then mkdir qt; fi - @if test ! -d motif; then mkdir motif; fi - @if test ! -d motif/xmcombo; then mkdir motif/xmcombo; fi - @if test ! -d common; then mkdir common; fi - @if test ! -d generic; then mkdir generic; fi - @if test ! -d png; then mkdir png; fi - @if test ! -d zlib; then mkdir zlib; fi - @if test ! -d iodbc; then mkdir iodbc; fi - -install:: - @echo " " - @echo "Installing library files and headers.." - @echo " " - @echo " Creating directories.." - @$(WXBASEDIR)/mkinstalldirs \ - $(includedir)/wx \ - $(includedir)/wx/gtk \ - $(includedir)/wx/motif \ - $(includedir)/wx/common \ - $(includedir)/wx/generic \ - $(includedir)/wx/protocol \ - $(libdir)/wx/include/wx/gtk \ - $(libdir) \ - $(bindir) - @echo " Copying headers from /include/wx" - @cd $(WXBASEDIR)/include/wx ; \ - $(INSTALL) -d $(includedir)/wx ; \ - for f in *.h ; do \ - rm -f $(includedir)/wx/$$f ; \ - $(INSTALL_DATA) $$f $(includedir)/wx/$$f ; \ - done ; \ - for f in *.cpp ; do \ - rm -f $(includedir)/wx/$$f ; \ - $(INSTALL_DATA) $$f $(includedir)/wx/$$f ; \ - done - @if test "@TOOLKIT@" = "GTK" ; then \ - echo " Copying headers from /include/wx/gtk" ; \ - cd $(WXBASEDIR)/include/wx/gtk ; \ - $(INSTALL) -d $(includedir)/wx/gtk ; \ - for f in *.h ; do \ - rm -f $(includedir)/wx/gtk/$$f ; \ - $(INSTALL_DATA) $$f $(includedir)/wx/gtk/$$f ; \ - done ; \ - fi - @if test "@TOOLKIT@" = "MOTIF" ; then \ - echo " Copying headers from /include/wx/motif" ; \ - cd $(WXBASEDIR)/include/wx/motif ; \ - $(INSTALL) -d $(includedir)/wx/motif ; \ - for f in *.h ; do \ - rm -f $(includedir)/wx/motif/$$f ; \ - $(INSTALL_DATA) $$f $(includedir)/wx/motif/$$f ; \ - done ; \ - fi - @echo " Copying headers from /include/wx/generic" - @cd $(WXBASEDIR)/include/wx/generic ; \ - $(INSTALL) -d $(includedir)/wx/generic ; \ - for f in *.h ; do \ - rm -f $(includedir)/wx/generic/$$f ; \ - $(INSTALL_DATA) $$f $(includedir)/wx/generic/$$f ; \ - done - @echo " Copying headers from /include/wx/protocol" - @cd $(WXBASEDIR)/include/wx/protocol ; \ - for f in *.h ; do \ - rm -f $(includedir)/wx/protocol/$$f ; \ - $(INSTALL_DATA) $$f $(includedir)/wx/protocol/$$f ; \ - done - @echo " Moving setup.h to library path" - @if test "@TOOLKIT@" = "GTK" ; then \ - cd $(WXBASEDIR)/src ; \ - $(INSTALL) -d $(libdir)/wx/include/wx/gtk ; \ - mv $(includedir)/wx/gtk/setup.h $(libdir)/wx/include/wx/gtk/setup.h ; \ - fi - @if test "@TOOLKIT@" = "MOTIF" ; then \ - cd $(WXBASEDIR)/src ; \ - $(INSTALL) -d $(libdir)/wx/include/wx/motif ; \ - mv $(includedir)/wx/motif/setup.h $(libdir)/wx/include/wx/motif/setup.h ; \ - fi - @echo " Copying wx-config" - @cd $(WXBASEDIR)/src ; \ - $(INSTALL) -d $(bindir) ; \ - rm -f $(bindir)/wx-config ; \ - $(INSTALL_PROGRAM) $(WXBASEDIR)/wx-config $(bindir)/wx-config - @echo " Copying static library" - @cd $(WXBASEDIR)/src ; \ - rm -f $(libdir)/$(STATIC_LIBRARY) ; \ - $(INSTALL_DATA) $(WXBASEDIR)/lib/$(OS)/$(STATIC_LIBRARY) $(libdir)/$(STATIC_LIBRARY) - @if test -f $(WXBASEDIR)/lib/$(OS)/$(SHARED_LIBRARY) ; then \ - echo " Copying shared library" ; \ - rm -f $(libdir)/lib$(LIB_TARGET).so* ; \ - $(INSTALL_PROGRAM) $(WXBASEDIR)/lib/$(OS)/$(SHARED_LIBRARY) $(libdir)/$(SHARED_LIBRARY) ; \ - $(LN_S) $(SHARED_LIBRARY) $(libdir)/lib$(LIB_TARGET).so.$(LIB_MAJOR) ; \ - $(LN_S) $(SHARED_LIBRARY) $(libdir)/lib$(LIB_TARGET).so ; \ - echo " " ; \ - echo " You may have to run ldconfig!" ; \ - echo " " ; \ - fi - @echo " " - @echo "Installation complete." - @echo " " - -clean:: - $(RM) -rf gtk - $(RM) -rf qt - $(RM) -rf motif - $(RM) -rf common - $(RM) -rf generic - $(RM) -rf png - $(RM) -rf zlib - $(RM) -rf iodbc - @$(RM) lexer.c parser.c - -#additional things needed for compile -ADD_COMPILE= - -# include the definitions now -include ../../template.mak - -# things for the prolog stuff - -parser.c: ../common/parser.y lexer.c - @if test ! -f parser.y; then \ - cp -f ../common/parser.y . ; \ - fi - @$(YACC) parser.y - @sed -e "s/y.tab.c/parser.y/g" < y.tab.c | \ - sed -e "s/BUFSIZ/5000/g" | \ - sed -e "s/YYLMAX 200/YYLMAX 5000/g" | \ - sed -e "s/yy/PROIO_yy/g" | \ - sed -e "s/input/PROIO_input/g" | \ - sed -e "s/unput/PROIO_unput/g" > parser.c - @$(RM) y.tab.c - @$(RM) parser.y - -lexer.c: ../common/lexer.l - @if test ! -f lexer.l; then \ - cp -f ../common/lexer.l . ;\ - fi - @$(LEX) lexer.l - @sed -e "s/lex.yy.c/lexer.l/g" < lex.yy.c | \ - sed -e "s/yy/PROIO_yy/g" | \ - sed -e "s/input/PROIO_input/g" | \ - sed -e "s/unput/PROIO_unput/g" > lexer.c - @$(RM) lex.yy.c - @$(RM) lexer.l - -clean:: - diff --git a/src/common/cmndata.cpp b/src/common/cmndata.cpp deleted file mode 100644 index 07fd3cd826..0000000000 --- a/src/common/cmndata.cpp +++ /dev/null @@ -1,477 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: cmndata.cpp -// Purpose: Common GDI data -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "cmndata.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include -#include "wx/string.h" -#include "wx/utils.h" -#include "wx/app.h" -#endif - -#include "wx/gdicmn.h" -#include "wx/cmndata.h" - -#ifdef __WXMSW__ -#include - -#if !defined(__WIN32__) -#include -#include -#endif - -#if defined(__WATCOMC__) || defined(__SC__) || defined(__SALFORDC__) -#include -#include -#endif - -#endif - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxPrintData, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxPageSetupData, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxFontData, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxColourData, wxObject) -#endif - -/* - * wxColourData - */ - -wxColourData::wxColourData() -{ - int i; - for (i = 0; i < 16; i++) - custColours[i].Set(255, 255, 255); - - chooseFull = FALSE; - dataColour.Set(0,0,0); -} - -wxColourData::~wxColourData() -{ -} - -void wxColourData::SetCustomColour(int i, wxColour& colour) -{ - if (i > 15 || i < 0) - return; - - custColours[i] = colour; -} - -wxColour wxColourData::GetCustomColour(int i) -{ - if (i > 15 || i < 0) - return wxColour(0,0,0); - - return custColours[i]; -} - -void wxColourData::operator=(const wxColourData& data) -{ - int i; - for (i = 0; i < 16; i++) - custColours[i] = data.custColours[i]; - - dataColour = (wxColour&)data.dataColour; - chooseFull = data.chooseFull; -} - -/* - * Font data - */ - -wxFontData::wxFontData() -{ - // Intialize colour to black. - fontColour.Set(0, 0, 0); - - showHelp = FALSE; - allowSymbols = TRUE; - enableEffects = TRUE; - minSize = 0; - maxSize = 0; -} - -wxFontData::~wxFontData() -{ -} - -void wxFontData::operator=(const wxFontData& data) -{ - fontColour = data.fontColour; - showHelp = data.showHelp; - allowSymbols = data.allowSymbols; - enableEffects = data.enableEffects; - initialFont = data.initialFont; - chosenFont = data.chosenFont; - minSize = data.minSize; - maxSize = data.maxSize; -} - -/* - * Print data - */ - -wxPrintData::wxPrintData() -{ -#ifdef __WXMSW__ - printData = NULL; -#endif - printOrientation = wxPORTRAIT; - printFromPage = 0; - printToPage = 0; - printMinPage = 0; - printMaxPage = 0; - printNoCopies = 1; - printAllPages = FALSE; - printCollate = FALSE; - printToFile = FALSE; - printEnableSelection = FALSE; - printEnablePageNumbers = TRUE; - printEnablePrintToFile = TRUE; - printEnableHelp = FALSE; - printSetupDialog = FALSE; -} - -wxPrintData::~wxPrintData() -{ -#ifdef __WXMSW__ - PRINTDLG *pd = (PRINTDLG *)printData; - if ( pd && pd->hDevMode ) - GlobalFree(pd->hDevMode); - if ( pd ) - delete pd; -#endif -} - -#ifdef __WXMSW__ -void wxPrintData::ConvertToNative() -{ - PRINTDLG *pd = (PRINTDLG*) printData; - if ( pd == NULL ) - { - pd = new PRINTDLG; - printData = (void*) pd; - - // GNU-WIN32 has the wrong size PRINTDLG - can't work out why. -// pd->lStructSize = sizeof(PRINTDLG); - pd->lStructSize = 66 ; - pd->hwndOwner = (HWND)NULL; - pd->hDevMode = NULL; // Will be created by PrintDlg - pd->hDevNames = NULL; // Ditto - - pd->Flags = PD_RETURNDEFAULT; - pd->nCopies = 1; - - // Fill out the DEVMODE structure - // so we can use it as input in the 'real' PrintDlg - if (!PrintDlg(pd)) - { - if ( pd->hDevMode ) - GlobalFree(pd->hDevMode); - if ( pd->hDevNames ) - GlobalFree(pd->hDevNames); - pd->hDevMode = NULL; - pd->hDevNames = NULL; - } - else - { - if ( pd->hDevNames ) - GlobalFree(pd->hDevNames); - pd->hDevNames = NULL; - } - } - - if ( pd->hDevMode ) - { - DEVMODE *devMode = (DEVMODE*) GlobalLock(pd->hDevMode); - devMode->dmOrientation = printOrientation; - devMode->dmFields = DM_ORIENTATION; - GlobalUnlock(pd->hDevMode); - } - pd->hDC = (HDC) NULL; - pd->nFromPage = (UINT)printFromPage; - pd->nToPage = (UINT)printToPage; - pd->nMinPage = (UINT)printMinPage; - pd->nMaxPage = (UINT)printMaxPage; - pd->nCopies = (UINT)printNoCopies; - - pd->Flags = PD_RETURNDC ; -// pd->lStructSize = sizeof( PRINTDLG ); - pd->lStructSize = 66 ; - pd->hwndOwner=(HWND)NULL; - pd->hDevNames=(HANDLE)NULL; - pd->hInstance=(HINSTANCE)NULL; - pd->lCustData = (LPARAM) NULL; - pd->lpfnPrintHook = NULL; - pd->lpfnSetupHook = NULL; - pd->lpPrintTemplateName = NULL; - pd->lpSetupTemplateName = NULL; - pd->hPrintTemplate = (HGLOBAL) NULL; - pd->hSetupTemplate = (HGLOBAL) NULL; - - if ( printAllPages ) - pd->Flags |= PD_ALLPAGES; - if ( printCollate ) - pd->Flags |= PD_COLLATE; - if ( printToFile ) - pd->Flags |= PD_PRINTTOFILE; - if ( !printEnablePrintToFile ) - pd->Flags |= PD_DISABLEPRINTTOFILE; - if ( !printEnableSelection ) - pd->Flags |= PD_NOSELECTION; - if ( !printEnablePageNumbers ) - pd->Flags |= PD_NOPAGENUMS; - if ( printEnableHelp ) - pd->Flags |= PD_SHOWHELP; - if ( printSetupDialog ) - pd->Flags |= PD_PRINTSETUP; -} - -void wxPrintData::ConvertFromNative() -{ - PRINTDLG *pd = (PRINTDLG*) printData; - if ( pd == NULL ) - return; - - if ( pd->hDevMode ) - { - DEVMODE *devMode = (DEVMODE*) GlobalLock(pd->hDevMode); - printOrientation = devMode->dmOrientation; - GlobalUnlock(pd->hDevMode); - } - printFromPage = pd->nFromPage ; - printToPage = pd->nToPage ; - printMinPage = pd->nMinPage ; - printMaxPage = pd->nMaxPage ; - printNoCopies = pd->nCopies ; - - printAllPages = ((pd->Flags & PD_ALLPAGES) == PD_ALLPAGES); - printCollate = ((pd->Flags & PD_COLLATE) == PD_COLLATE); - printToFile = ((pd->Flags & PD_PRINTTOFILE) == PD_PRINTTOFILE); - printEnablePrintToFile = ((pd->Flags & PD_DISABLEPRINTTOFILE) != PD_DISABLEPRINTTOFILE); - printEnableSelection = ((pd->Flags & PD_NOSELECTION) != PD_NOSELECTION); - printEnablePageNumbers = ((pd->Flags & PD_NOPAGENUMS) != PD_NOPAGENUMS); - printEnableHelp = ((pd->Flags & PD_SHOWHELP) == PD_SHOWHELP); - printSetupDialog = ((pd->Flags & PD_PRINTSETUP) == PD_PRINTSETUP); -} - -void wxPrintData::SetOwnerWindow(wxWindow* win) -{ - if ( printData == NULL ) - ConvertToNative(); - - if ( printData != NULL && win != NULL) - { - PRINTDLG *pd = (PRINTDLG *) printData ; - pd->hwndOwner=(HWND) win->GetHWND(); - } -} -#endif - -void wxPrintData::operator=(const wxPrintData& data) -{ - printFromPage = data.printFromPage; - printToPage = data.printToPage; - printMinPage = data.printMinPage; - printMaxPage = data.printMaxPage; - printNoCopies = data.printNoCopies; - printAllPages = data.printAllPages; - printCollate = data.printCollate; - printToFile = data.printToFile; - printEnableSelection = data.printEnableSelection; - printEnablePageNumbers = data.printEnablePageNumbers; - printEnableHelp = data.printEnableHelp; - printEnablePrintToFile = data.printEnablePrintToFile; - printSetupDialog = data.printSetupDialog; - printOrientation = data.printOrientation; -} - -/* - * wxPageSetupData - */ - -wxPageSetupData::wxPageSetupData() -{ -#if defined(__WIN95__) - m_pageSetupData = NULL; -#endif - m_paperSize = wxPoint(0, 0); - m_minMarginTopLeft = wxPoint(0, 0); - m_minMarginBottomRight = wxPoint(0, 0); - m_marginTopLeft = wxPoint(0, 0); - m_marginBottomRight = wxPoint(0, 0); - m_orientation = wxPORTRAIT; - - // Flags - m_defaultMinMargins = FALSE; - m_enableMargins = TRUE; - m_enableOrientation = TRUE; - m_enablePaper = TRUE; - m_enablePrinter = TRUE; - m_enableHelp = FALSE; - m_getDefaultInfo = FALSE; -} - -wxPageSetupData::~wxPageSetupData() -{ -#if defined(__WIN95__) && defined(__WXMSW__) - PAGESETUPDLG *pd = (PAGESETUPDLG *)m_pageSetupData; - if ( pd && pd->hDevMode ) - GlobalFree(pd->hDevMode); - if ( pd ) - delete pd; -#endif -} - -void wxPageSetupData::operator=(const wxPageSetupData& data) -{ - m_paperSize = data.m_paperSize; - m_minMarginTopLeft = data.m_minMarginTopLeft; - m_minMarginBottomRight = data.m_minMarginBottomRight; - m_marginTopLeft = data.m_marginTopLeft; - m_marginBottomRight = data.m_marginBottomRight; - m_orientation = data.m_orientation; - - m_defaultMinMargins = data.m_defaultMinMargins; - m_enableMargins = data.m_enableMargins; - m_enableOrientation = data.m_enableOrientation; - m_enablePaper = data.m_enablePaper; - m_enablePrinter = data.m_enablePrinter; - m_getDefaultInfo = data.m_getDefaultInfo;; - m_enableHelp = data.m_enableHelp; -} - -#if defined(__WXMSW__) && defined(__WIN95__) -void wxPageSetupData::ConvertToNative() -{ - PAGESETUPDLG *pd = (PAGESETUPDLG*) m_pageSetupData; - if ( m_pageSetupData == NULL ) - { - pd = new PAGESETUPDLG; - pd->hDevMode = GlobalAlloc(GMEM_MOVEABLE, sizeof(DEVMODE)); - m_pageSetupData = (void *)pd; - } - - pd->Flags = PSD_MARGINS|PSD_MINMARGINS; - - if ( m_defaultMinMargins ) - pd->Flags |= PSD_DEFAULTMINMARGINS; - if ( !m_enableMargins ) - pd->Flags |= PSD_DISABLEMARGINS; - if ( !m_enableOrientation ) - pd->Flags |= PSD_DISABLEORIENTATION; - if ( !m_enablePaper ) - pd->Flags |= PSD_DISABLEPAPER; - if ( !m_enablePrinter ) - pd->Flags |= PSD_DISABLEPRINTER; - if ( m_getDefaultInfo ) - pd->Flags |= PSD_RETURNDEFAULT; - if ( m_enableHelp ) - pd->Flags |= PSD_SHOWHELP; - - pd->lStructSize = sizeof( PAGESETUPDLG ); - pd->hwndOwner=(HWND)NULL; - pd->hDevNames=(HWND)NULL; - pd->hInstance=(HINSTANCE)NULL; - - pd->ptPaperSize.x = m_paperSize.x; - pd->ptPaperSize.y = m_paperSize.y; - - pd->rtMinMargin.left = m_minMarginTopLeft.x; - pd->rtMinMargin.top = m_minMarginTopLeft.y; - pd->rtMinMargin.right = m_minMarginBottomRight.x; - pd->rtMinMargin.bottom = m_minMarginBottomRight.y; - - pd->rtMargin.left = m_marginTopLeft.x; - pd->rtMargin.top = m_marginTopLeft.y; - pd->rtMargin.right = m_marginBottomRight.x; - pd->rtMargin.bottom = m_marginBottomRight.y; - - pd->lCustData = 0; - pd->lpfnPageSetupHook = NULL; - pd->lpfnPagePaintHook = NULL; - pd->hPageSetupTemplate = NULL; - pd->lpPageSetupTemplateName = NULL; - - if ( pd->hDevMode ) - { - DEVMODE *devMode = (DEVMODE*) GlobalLock(pd->hDevMode); - memset(devMode, 0, sizeof(DEVMODE)); - devMode->dmSize = sizeof(DEVMODE); - devMode->dmOrientation = m_orientation; - devMode->dmFields = DM_ORIENTATION; - GlobalUnlock(pd->hDevMode); - } -} - -void wxPageSetupData::ConvertFromNative() -{ - PAGESETUPDLG *pd = (PAGESETUPDLG *) m_pageSetupData ; - if ( !pd ) - return; - - pd->Flags = PSD_MARGINS|PSD_MINMARGINS; - - m_defaultMinMargins = ((pd->Flags & PSD_DEFAULTMINMARGINS) == PSD_DEFAULTMINMARGINS); - m_enableMargins = ((pd->Flags & PSD_DISABLEMARGINS) != PSD_DISABLEMARGINS); - m_enableOrientation = ((pd->Flags & PSD_DISABLEORIENTATION) != PSD_DISABLEORIENTATION); - m_enablePaper = ((pd->Flags & PSD_DISABLEPAPER) != PSD_DISABLEPAPER); - m_enablePrinter = ((pd->Flags & PSD_DISABLEPRINTER) != PSD_DISABLEPRINTER); - m_getDefaultInfo = ((pd->Flags & PSD_RETURNDEFAULT) == PSD_RETURNDEFAULT); - m_enableHelp = ((pd->Flags & PSD_SHOWHELP) == PSD_SHOWHELP); - - m_paperSize.x = pd->ptPaperSize.x ; - m_paperSize.y = pd->ptPaperSize.y ; - - m_minMarginTopLeft.x = pd->rtMinMargin.left ; - m_minMarginTopLeft.y = pd->rtMinMargin.top ; - m_minMarginBottomRight.x = pd->rtMinMargin.right ; - m_minMarginBottomRight.y = pd->rtMinMargin.bottom ; - - m_marginTopLeft.x = pd->rtMargin.left ; - m_marginTopLeft.y = pd->rtMargin.top ; - m_marginBottomRight.x = pd->rtMargin.right ; - m_marginBottomRight.y = pd->rtMargin.bottom ; - - if ( pd->hDevMode ) - { - DEVMODE *devMode = (DEVMODE*) GlobalLock(pd->hDevMode); - m_orientation = devMode->dmOrientation ; - GlobalUnlock(pd->hDevMode); - } -} - -void wxPageSetupData::SetOwnerWindow(wxWindow* win) -{ - if ( m_pageSetupData == NULL ) - ConvertToNative(); - - if ( m_pageSetupData != NULL && win != NULL) - { - PAGESETUPDLG *pd = (PAGESETUPDLG *) m_pageSetupData ; - pd->hwndOwner=(HWND) win->GetHWND(); - } -} -#endif - diff --git a/src/common/config.cpp b/src/common/config.cpp deleted file mode 100644 index 66e8d2017f..0000000000 --- a/src/common/config.cpp +++ /dev/null @@ -1,419 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: config.cpp -// Purpose: implementation of wxConfigBase class -// Author: Vadim Zeitlin -// Modified by: -// Created: 07.04.98 -// RCS-ID: $Id$ -// Copyright: (c) 1997 Karsten Ballüder Ballueder@usa.net -// Vadim Zeitlin -// Licence: wxWindows license -/////////////////////////////////////////////////////////////////////////////// - -// ---------------------------------------------------------------------------- -// headers -// ---------------------------------------------------------------------------- -#ifdef __GNUG__ - #pragma implementation "confbase.h" -#endif - -#include "wx/wxprec.h" - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include - -#if wxUSE_CONFIG - -#ifdef __BORLANDC__ - #pragma hdrstop -#endif //__BORLANDC__ - -#include -#include -#include -#include -#include - -// we must include (one of) these files for wxConfigBase::Create -#if defined(__WXMSW__) && defined(wxCONFIG_WIN32_NATIVE) - #ifdef __WIN32__ - #include - #else //WIN16 - #include - #endif -#else // either we're under Unix or wish to use files even under Windows - #include -#endif - -#include -#include -#include // for isalnum() - -// ---------------------------------------------------------------------------- -// global and class static variables -// ---------------------------------------------------------------------------- - -wxConfigBase *wxConfigBase::ms_pConfig = NULL; -bool wxConfigBase::ms_bAutoCreate = TRUE; - -// ============================================================================ -// implementation -// ============================================================================ - -// ---------------------------------------------------------------------------- -// wxConfigBase -// ---------------------------------------------------------------------------- - -// Not all args will always be used by derived classes, but -// including them all in each class ensures compatibility. -wxConfigBase::wxConfigBase(const wxString& appName, const wxString& vendorName, - const wxString& WXUNUSED(localFilename), const wxString& WXUNUSED(globalFilename), long style): - m_appName(appName), m_vendorName(vendorName), m_style(style) -{ - m_bExpandEnvVars = TRUE; m_bRecordDefaults = FALSE; -} - -wxConfigBase *wxConfigBase::Set(wxConfigBase *pConfig) -{ - wxConfigBase *pOld = ms_pConfig; - ms_pConfig = pConfig; - return pOld; -} - -wxConfigBase *wxConfigBase::Create() -{ - if ( ms_bAutoCreate && ms_pConfig == NULL ) { - ms_pConfig = - #if defined(__WXMSW__) && defined(wxCONFIG_WIN32_NATIVE) - #ifdef __WIN32__ - new wxRegConfig(wxTheApp->GetAppName(), wxTheApp->GetVendorName()); - #else //WIN16 - new wxIniConfig(wxTheApp->GetAppName(), wxTheApp->GetVendorName()); - #endif - #else // either we're under Unix or wish to use files even under Windows - new wxFileConfig(wxTheApp->GetAppName()); - #endif - } - - return ms_pConfig; -} - -wxString wxConfigBase::Read(const wxString& key, const wxString& defVal) const -{ - wxString s; - Read(key, &s, defVal); - return s; -} - -bool wxConfigBase::Read(const wxString& key, wxString *str, const wxString& defVal) const -{ - if (!Read(key, str)) - { - *str = ExpandEnvVars(defVal); - return FALSE; - } - else - return TRUE; -} - -bool wxConfigBase::Read(const wxString& key, long *pl, long defVal) const -{ - if (!Read(key, pl)) - { - *pl = defVal; - return FALSE; - } - else - return TRUE; -} - -bool wxConfigBase::Read(const wxString& key, double* val) const -{ - wxString str; - if (Read(key, & str)) - { - *val = atof(str); - return TRUE; - } - else - return FALSE; -} - -bool wxConfigBase::Read(const wxString& key, double* val, double defVal) const -{ - if (!Read(key, val)) - { - *val = defVal; - return FALSE; - } - else - return TRUE; -} - -bool wxConfigBase::Read(const wxString& key, bool* val) const -{ - long l; - if (Read(key, & l)) - { - *val = (l != 0); - return TRUE; - } - else - return FALSE; -} - -bool wxConfigBase::Read(const wxString& key, bool* val, bool defVal) const -{ - if (!Read(key, val)) - { - *val = defVal; - return FALSE; - } - else - return TRUE; -} - -// Convenience functions - -bool wxConfigBase::Read(const wxString& key, int *pi) const -{ - long l; - bool ret = Read(key, &l); - if (ret) - *pi = (int) l; - return ret; -} - -bool wxConfigBase::Read(const wxString& key, int *pi, int defVal) const -{ - long l; - bool ret = Read(key, &l, (long) defVal); - *pi = (int) l; - return ret; -} - -bool wxConfigBase::Write(const wxString& key, double val) -{ - wxString str; - str.Printf("%f", val); - return Write(key, str); -} - -bool wxConfigBase::Write(const wxString& key, bool value) -{ - long l = (value ? 1 : 0); - return Write(key, l); -} - -wxString wxConfigBase::ExpandEnvVars(const wxString& str) const -{ - wxString tmp; // Required for BC++ - if (IsExpandingEnvVars()) - tmp = wxExpandEnvVars(str); - else - tmp = str; - return tmp; -} - -// ---------------------------------------------------------------------------- -// wxConfigPathChanger -// ---------------------------------------------------------------------------- - -wxConfigPathChanger::wxConfigPathChanger(const wxConfigBase *pContainer, - const wxString& strEntry) -{ - m_pContainer = (wxConfigBase *)pContainer; - - // the path is everything which precedes the last slash - wxString strPath = strEntry.BeforeLast(wxCONFIG_PATH_SEPARATOR); - - // except in the special case of "/keyname" when there is nothing before "/" - if ( strPath.IsEmpty() && - ((!strEntry.IsEmpty()) && strEntry[0] == wxCONFIG_PATH_SEPARATOR) ) - { - strPath = wxCONFIG_PATH_SEPARATOR; - } - - if ( !strPath.IsEmpty() ) { - // do change the path - m_bChanged = TRUE; - m_strName = strEntry.AfterLast(wxCONFIG_PATH_SEPARATOR); - m_strOldPath = m_pContainer->GetPath(); - m_strOldPath += wxCONFIG_PATH_SEPARATOR; - m_pContainer->SetPath(strPath); - } - else { - // it's a name only, without path - nothing to do - m_bChanged = FALSE; - m_strName = strEntry; - } -} - -wxConfigPathChanger::~wxConfigPathChanger() -{ - // only restore path if it was changed - if ( m_bChanged ) { - m_pContainer->SetPath(m_strOldPath); - } -} - -// ---------------------------------------------------------------------------- -// static & global functions -// ---------------------------------------------------------------------------- - -// understands both Unix and Windows (but only under Windows) environment -// variables expansion: i.e. $var, $(var) and ${var} are always understood -// and in addition under Windows %var% is also. -wxString wxExpandEnvVars(const wxString& str) -{ - wxString strResult; - strResult.Alloc(str.Len()); - - // don't change the values the enum elements: they must be equal - // to the matching [closing] delimiter. - enum Bracket - { - Bracket_None, - Bracket_Normal = ')', - Bracket_Curly = '}' -#ifdef __WXMSW__ - ,Bracket_Windows = '%' // yeah, Windows people are a bit strange ;-) -#endif - }; - - size_t m; - for ( size_t n = 0; n < str.Len(); n++ ) { - switch ( str[n] ) { -#ifdef __WXMSW__ - case '%': -#endif //WINDOWS - case '$': - { - Bracket bracket; - #ifdef __WXMSW__ - if ( str[n] == '%' ) - bracket = Bracket_Windows; - else - #endif //WINDOWS - if ( n == str.Len() - 1 ) { - bracket = Bracket_None; - } - else { - switch ( str[n + 1] ) { - case '(': - bracket = Bracket_Normal; - n++; // skip the bracket - break; - - case '{': - bracket = Bracket_Curly; - n++; // skip the bracket - break; - - default: - bracket = Bracket_None; - } - } - - m = n + 1; - - while ( m < str.Len() && (isalnum(str[m]) || str[m] == '_') ) - m++; - - wxString strVarName(str.c_str() + n + 1, m - n - 1); - - const char *pszValue = getenv(strVarName); - if ( pszValue != NULL ) { - strResult += pszValue; - } - else { - // variable doesn't exist => don't change anything - #ifdef __WXMSW__ - if ( bracket != Bracket_Windows ) - #endif - if ( bracket != Bracket_None ) - strResult << str[n - 1]; - strResult << str[n] << strVarName; - } - - // check the closing bracket - if ( bracket != Bracket_None ) { - if ( m == str.Len() || str[m] != (char)bracket ) { - wxLogWarning(_("Environment variables expansion failed: " - "missing '%c' at position %d in '%s'."), - (char)bracket, m + 1, str.c_str()); - } - else { - // skip closing bracket unless the variables wasn't expanded - if ( pszValue == NULL ) - strResult << (char)bracket; - m++; - } - } - - n = m - 1; // skip variable name - } - break; - - case '\\': - // backslash can be used to suppress special meaning of % and $ - if ( n != str.Len() && (str[n + 1] == '%' || str[n + 1] == '$') ) { - strResult += str[++n]; - - break; - } - //else: fall through - - default: - strResult += str[n]; - } - } - - return strResult; -} - -// this function is used to properly interpret '..' in path -void wxSplitPath(wxArrayString& aParts, const char *sz) -{ - aParts.Empty(); - - wxString strCurrent; - const char *pc = sz; - for ( ;; ) { - if ( *pc == '\0' || *pc == wxCONFIG_PATH_SEPARATOR ) { - if ( strCurrent == "." ) { - // ignore - } - else if ( strCurrent == ".." ) { - // go up one level - if ( aParts.IsEmpty() ) - wxLogWarning(_("'%s' has extra '..', ignored."), sz); - else - aParts.Remove(aParts.Count() - 1); - - strCurrent.Empty(); - } - else if ( !strCurrent.IsEmpty() ) { - aParts.Add(strCurrent); - strCurrent.Empty(); - } - //else: - // could log an error here, but we prefer to ignore extra '/' - - if ( *pc == '\0' ) - return; - } - else - strCurrent += *pc; - - pc++; - } -} - -#endif - - // wxUSE_CONFIG - diff --git a/src/common/cwlex_yy.c b/src/common/cwlex_yy.c deleted file mode 100644 index 67e789afba..0000000000 --- a/src/common/cwlex_yy.c +++ /dev/null @@ -1,1214 +0,0 @@ -/* A lexical scanner generated by flex */ - -/* scanner skeleton version: - * $Header$ - Last change: JS 13 Jul 97 6:17 pm - */ - -#define FLEX_SCANNER - -#include - - -/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */ -#ifdef c_plusplus -#ifndef __cplusplus -#define __cplusplus -#endif -#endif - - -#ifdef __cplusplus - -#include -#include - -/* use prototypes in function declarations */ -#define YY_USE_PROTOS - -/* the "const" storage-class-modifier is valid */ -#define YY_USE_CONST - -#else /* ! __cplusplus */ - -#ifdef __STDC__ - -#ifdef __GNUC__ -#include -#else -#include -#endif /* __GNUC__ */ - -#define YY_USE_PROTOS -#define YY_USE_CONST - -#endif /* __STDC__ */ -#endif /* ! __cplusplus */ - - -#ifdef __TURBOC__ -#define YY_USE_CONST -#endif - - -#ifndef YY_USE_CONST -#define const -#endif - - -#ifdef YY_USE_PROTOS -#define YY_PROTO(proto) proto -#else -#define YY_PROTO(proto) () -/* we can't get here if it's an ANSI C compiler, or a C++ compiler, - * so it's got to be a K&R compiler, and therefore there's no standard - * place from which to include these definitions - */ -/* -char *malloc(); -int free(); -*/ - -int read(); -#endif - - -/* amount of stuff to slurp up with each read */ -#ifndef YY_READ_BUF_SIZE -#define YY_READ_BUF_SIZE 8192 -#endif - -/* returned upon end-of-file */ -#define YY_END_TOK 0 - -/* copy whatever the last rule matched to the standard output */ - -/* cast to (char *) is because for 8-bit chars, yytext is (unsigned char *) */ -/* this used to be an fputs(), but since the string might contain NUL's, - * we now use fwrite() - */ -#define ECHO (void) fwrite( (char *) yytext, yyleng, 1, yyout ) - -/* gets input and stuffs it into "buf". number of characters read, or YY_NULL, - * is returned in "result". - */ -#define YY_INPUT(buf,result,max_size) \ - if ( (result = read( fileno(yyin), (char *) buf, max_size )) < 0 ) \ - YY_FATAL_ERROR( "read() in flex scanner failed" ); -#define YY_NULL 0 - -/* no semi-colon after return; correct usage is to write "yyterminate();" - - * we don't want an extra ';' after the "return" because that will cause - * some compilers to complain about unreachable statements. - */ -#define yyterminate() return ( YY_NULL ) - -/* report a fatal error */ - -/* The funky do-while is used to turn this macro definition into - * a single C statement (which needs a semi-colon terminator). - * This avoids problems with code like: - * - * if ( something_happens ) - * YY_FATAL_ERROR( "oops, the something happened" ); - * else - * everything_okay(); - * - * Prior to using the do-while the compiler would get upset at the - * "else" because it interpreted the "if" statement as being all - * done when it reached the ';' after the YY_FATAL_ERROR() call. - */ - -#define YY_FATAL_ERROR(msg) \ - do \ - { \ - (void) fputs( msg, stderr ); \ - (void) putc( '\n', stderr ); \ - exit( 1 ); \ - } \ - while ( 0 ) - -/* default yywrap function - always treat EOF as an EOF */ -int yywrap(void) { return 1; } - - -/* enter a start condition. This macro really ought to take a parameter, - * but we do it the disgusting crufty way forced on us by the ()-less - * definition of BEGIN - */ -#define BEGIN yy_start = 1 + 2 * - -/* action number for EOF rule of a given start state */ -#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) - -/* special action meaning "start processing a new file" */ -#define YY_NEW_FILE \ - do \ - { \ - yy_init_buffer( yy_current_buffer, yyin ); \ - yy_load_buffer_state(); \ - } \ - while ( 0 ) - -/* default declaration of generated scanner - a define so the user can - * easily add parameters - */ -#define YY_DECL int yylex YY_PROTO(( void )) - -/* code executed at the end of each rule */ -#define YY_BREAK break; - -#define YY_END_OF_BUFFER_CHAR 0 - -#ifndef YY_BUF_SIZE -#define YY_BUF_SIZE (YY_READ_BUF_SIZE * 2) /* size of default input buffer */ -#endif - -typedef struct yy_buffer_state *YY_BUFFER_STATE; - -#define YY_CHAR unsigned char -# line 1 "lexer.l" -#define INITIAL 0 -# line 9 "lexer.l" -/* - * File: lexer.l - * Description: Lexical analyser for PROLOGIO; can be used with - * either lex and flex. - */ -#include - -/* +++steve162e: added, otherwise, PROIO_input will be undefined (at least under LINUX) - please check, if this is also TRUE under other UNIXes. - */ - -#if defined(FLEX_SCANNER) && defined(_LINUX) -#define PROIO_input my_input -#endif -/* ---steve162e */ - -#include "wx/expr.h" -#ifdef wx_x -extern char *malloc(); -#endif -#define Return(x) return x; - -#if defined(VMS) && !defined(strdup) -#define strdup(s) (strcpy((char *)malloc(strlen(s)+1), s)); -#endif - -static size_t lex_buffer_length = 0; -static const char *lex_buffer = NULL; -static size_t lex_string_ptr = 0; -static int lex_read_from_string = 0; - -static int my_input(void); -static int my_unput(char); - -#ifdef FLEX_SCANNER -#undef YY_INPUT -# define YY_INPUT(buf,result,max_size) \ - if (lex_read_from_string) \ - { int c = my_input(); result = (c == 0) ? YY_NULL : ((buf)[0]=(c), 1); } \ - else \ - if ( (result = read( fileno(yyin), (char *) buf, max_size )) < 0 ) \ - YY_FATAL_ERROR( "read() in flex scanner failed" ); -#else -# undef unput -# define unput(_c) my_unput(_c) -#endif - -# line 58 "lexer.l" - -/* done after the current pattern has been matched and before the - * corresponding action - sets up yytext - */ -#define YY_DO_BEFORE_ACTION \ - yytext = yy_bp; \ - yyleng = yy_cp - yy_bp; \ - yy_hold_char = *yy_cp; \ - *yy_cp = '\0'; \ - yy_c_buf_p = yy_cp; - -#define EOB_ACT_CONTINUE_SCAN 0 -#define EOB_ACT_END_OF_FILE 1 -#define EOB_ACT_LAST_MATCH 2 - -/* return all but the first 'n' matched characters back to the input stream */ -#define yyless(n) \ - do \ - { \ - /* undo effects of setting up yytext */ \ - *yy_cp = yy_hold_char; \ - yy_c_buf_p = yy_cp = yy_bp + n; \ - YY_DO_BEFORE_ACTION; /* set up yytext again */ \ - } \ - while ( 0 ) - -#undef unput -#define unput(c) yyunput( c, yytext ) - - -struct yy_buffer_state - { - FILE *yy_input_file; - - YY_CHAR *yy_ch_buf; /* input buffer */ - YY_CHAR *yy_buf_pos; /* current position in input buffer */ - - /* size of input buffer in bytes, not including room for EOB characters*/ - int yy_buf_size; - - /* number of characters read into yy_ch_buf, not including EOB characters */ - int yy_n_chars; - - int yy_eof_status; /* whether we've seen an EOF on this buffer */ -#define EOF_NOT_SEEN 0 - /* "pending" happens when the EOF has been seen but there's still - * some text process - */ -#define EOF_PENDING 1 -#define EOF_DONE 2 - }; - -static YY_BUFFER_STATE yy_current_buffer; - -/* we provide macros for accessing buffer states in case in the - * future we want to put the buffer states in a more general - * "scanner state" - */ -#define YY_CURRENT_BUFFER yy_current_buffer - - -/* yy_hold_char holds the character lost when yytext is formed */ -static YY_CHAR yy_hold_char; - -static int yy_n_chars; /* number of characters read into yy_ch_buf */ - - - -#ifndef YY_USER_ACTION -#define YY_USER_ACTION -#endif - -#ifndef YY_USER_INIT -#define YY_USER_INIT -#endif - -extern YY_CHAR *yytext; -extern int yyleng; -extern FILE *yyin, *yyout; - -YY_CHAR *yytext; -int yyleng; - -FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; - -#define YY_END_OF_BUFFER 18 -typedef int yy_state_type; -static const short int yy_accept[34] = - { 0, - 0, 0, 18, 16, 13, 14, 16, 16, 6, 7, - 16, 8, 12, 16, 1, 11, 3, 9, 10, 2, - 0, 5, 0, 0, 0, 4, 1, 15, 3, 5, - 0, 0, 0 - } ; - -static const YY_CHAR yy_ec[256] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 1, 4, 1, 1, 1, 1, 5, 6, - 7, 8, 9, 10, 9, 11, 12, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 1, 1, 1, - 14, 1, 1, 1, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 16, 17, 18, 1, 15, 1, 15, 15, 15, 15, - - 19, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 1, 20, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1 - } ; - -static const YY_CHAR yy_meta[21] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 1, 2, 1, 3, 1, 2, 1 - } ; - -static const short int yy_base[37] = - { 0, - 0, 0, 48, 55, 55, 55, 17, 42, 55, 55, - 19, 55, 55, 23, 17, 55, 0, 55, 55, 0, - 18, 55, 19, 23, 21, 55, 12, 55, 0, 24, - 25, 29, 55, 49, 52, 22 - } ; - -static const short int yy_def[37] = - { 0, - 33, 1, 33, 33, 33, 33, 34, 35, 33, 33, - 33, 33, 33, 33, 33, 33, 36, 33, 33, 36, - 34, 33, 34, 34, 35, 33, 33, 33, 36, 34, - 34, 34, 0, 33, 33, 33 - } ; - -static const short int yy_nxt[76] = - { 0, - 4, 5, 6, 7, 8, 9, 10, 4, 11, 12, - 13, 14, 15, 16, 17, 18, 4, 19, 20, 4, - 22, 22, 30, 29, 27, 26, 22, 22, 30, 27, - 28, 27, 30, 23, 23, 23, 24, 24, 24, 31, - 23, 32, 24, 24, 24, 23, 26, 33, 24, 21, - 21, 21, 25, 25, 3, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33 - } ; - -static const short int yy_chk[76] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 7, 21, 23, 36, 27, 25, 24, 30, 31, 15, - 14, 11, 32, 7, 21, 23, 7, 21, 23, 24, - 30, 31, 24, 30, 31, 32, 8, 3, 32, 34, - 34, 34, 35, 35, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33 - } ; - -static yy_state_type yy_last_accepting_state; -static YY_CHAR *yy_last_accepting_cpos; - -/* the intent behind this definition is that it'll catch - * any uses of REJECT which flex missed - */ -#define REJECT reject_used_but_not_detected -#define yymore() yymore_used_but_not_detected -#define YY_MORE_ADJ 0 - -/* these variables are all declared out here so that section 3 code can - * manipulate them - */ -/* points to current character in buffer */ -static YY_CHAR *yy_c_buf_p = (YY_CHAR *) 0; -static int yy_init = 1; /* whether we need to initialize */ -static int yy_start = 0; /* start state number */ - -/* flag which is used to allow yywrap()'s to do buffer switches - * instead of setting up a fresh yyin. A bit of a hack ... - */ -static int yy_did_buffer_switch_on_eof; - -static yy_state_type yy_get_previous_state YY_PROTO(( void )); -static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state )); -static int yy_get_next_buffer YY_PROTO(( void )); -static void yyunput YY_PROTO(( YY_CHAR c, YY_CHAR *buf_ptr )); -void yyrestart YY_PROTO(( FILE *input_file )); -void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer )); -void yy_load_buffer_state YY_PROTO(( void )); -YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size )); -void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b )); -void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file )); - -#define yy_new_buffer yy_create_buffer - -#ifdef __cplusplus -static int yyinput YY_PROTO(( void )); -#else -static int input YY_PROTO(( void )); -#endif - -YY_DECL - { - register yy_state_type yy_current_state; - register YY_CHAR *yy_cp, *yy_bp; - register int yy_act; - - - - - if ( yy_init ) - { - YY_USER_INIT; - - if ( ! yy_start ) - yy_start = 1; /* first start state */ - - if ( ! yyin ) - yyin = stdin; - - if ( ! yyout ) - yyout = stdout; - - if ( yy_current_buffer ) - yy_init_buffer( yy_current_buffer, yyin ); - else - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); - - yy_load_buffer_state(); - - yy_init = 0; - } - - while ( 1 ) /* loops until end-of-file is reached */ - { - yy_cp = yy_c_buf_p; - - /* support of yytext */ - *yy_cp = yy_hold_char; - - /* yy_bp points to the position in yy_ch_buf of the start of the - * current run. - */ - yy_bp = yy_cp; - - yy_current_state = yy_start; -yy_match: - do - { - register YY_CHAR yy_c = yy_ec[*yy_cp]; - if ( yy_accept[yy_current_state] ) - { - yy_last_accepting_state = yy_current_state; - yy_last_accepting_cpos = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = yy_def[yy_current_state]; - if ( yy_current_state >= 34 ) - yy_c = yy_meta[yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - ++yy_cp; - } - while ( yy_current_state != 33 ); - yy_cp = yy_last_accepting_cpos; - yy_current_state = yy_last_accepting_state; - -yy_find_action: - yy_act = yy_accept[yy_current_state]; - - YY_DO_BEFORE_ACTION; - YY_USER_ACTION; - -do_action: /* this label is used only to access EOF actions */ - - - switch ( yy_act ) - { - case 0: /* must backtrack */ - /* undo the effects of YY_DO_BEFORE_ACTION */ - *yy_cp = yy_hold_char; - yy_cp = yy_last_accepting_cpos; - yy_current_state = yy_last_accepting_state; - goto yy_find_action; - -case 1: -# line 60 "lexer.l" -{yylval.s = strdup(yytext); Return(INTEGER);} - YY_BREAK -case 2: -# line 62 "lexer.l" -Return(EXP); - YY_BREAK -case 3: -# line 64 "lexer.l" -{yylval.s = strdup(yytext); Return(WORD);} - YY_BREAK -case 4: -# line 66 "lexer.l" -{int len = strlen(yytext); - yytext[len-1] = 0; - yylval.s = strdup(yytext+1); - Return(WORD);} - YY_BREAK -case 5: -# line 71 "lexer.l" -{yylval.s = strdup(yytext); Return(STRING);} - YY_BREAK -case 6: -# line 73 "lexer.l" -Return(OPEN); - YY_BREAK -case 7: -# line 75 "lexer.l" -Return(CLOSE); - YY_BREAK -case 8: -# line 77 "lexer.l" -Return(COMMA); - YY_BREAK -case 9: -# line 79 "lexer.l" -Return(OPEN_SQUARE); - YY_BREAK -case 10: -# line 81 "lexer.l" -Return(CLOSE_SQUARE); - YY_BREAK -case 11: -# line 83 "lexer.l" -Return(EQUALS); - YY_BREAK -case 12: -# line 85 "lexer.l" -Return(PERIOD); - YY_BREAK -case 13: -# line 87 "lexer.l" -; - YY_BREAK -case 14: -# line 89 "lexer.l" -; - YY_BREAK -case 15: -# line 91 "lexer.l" -{ loop: -#ifdef __cplusplus - while (yyinput() != '*'); - switch (yyinput()) -#else - while (input() != '*'); - switch (input()) -#endif - { - case '/': break; - case '*': unput('*'); - default: goto loop; - } - } - YY_BREAK -case 16: -# line 106 "lexer.l" -Return(ERROR); - YY_BREAK -case 17: -# line 108 "lexer.l" -ECHO; - YY_BREAK -case YY_STATE_EOF(INITIAL): - yyterminate(); - - case YY_END_OF_BUFFER: - { - /* amount of text matched not including the EOB char */ - int yy_amount_of_matched_text = yy_cp - yytext - 1; - - /* undo the effects of YY_DO_BEFORE_ACTION */ - *yy_cp = yy_hold_char; - - /* note that here we test for yy_c_buf_p "<=" to the position - * of the first EOB in the buffer, since yy_c_buf_p will - * already have been incremented past the NUL character - * (since all states make transitions on EOB to the end- - * of-buffer state). Contrast this with the test in yyinput(). - */ - if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] ) - /* this was really a NUL */ - { - yy_state_type yy_next_state; - - yy_c_buf_p = yytext + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state(); - - /* okay, we're now positioned to make the - * NUL transition. We couldn't have - * yy_get_previous_state() go ahead and do it - * for us because it doesn't know how to deal - * with the possibility of jamming (and we - * don't want to build jamming into it because - * then it will run more slowly) - */ - - yy_next_state = yy_try_NUL_trans( yy_current_state ); - - yy_bp = yytext + YY_MORE_ADJ; - - if ( yy_next_state ) - { - /* consume the NUL */ - yy_cp = ++yy_c_buf_p; - yy_current_state = yy_next_state; - goto yy_match; - } - - else - { - yy_cp = yy_last_accepting_cpos; - yy_current_state = yy_last_accepting_state; - goto yy_find_action; - } - } - - else switch ( yy_get_next_buffer() ) - { - case EOB_ACT_END_OF_FILE: - { - yy_did_buffer_switch_on_eof = 0; - - if ( yywrap() ) - { - /* note: because we've taken care in - * yy_get_next_buffer() to have set up yytext, - * we can now set up yy_c_buf_p so that if some - * total hoser (like flex itself) wants - * to call the scanner after we return the - * YY_NULL, it'll still work - another YY_NULL - * will get returned. - */ - yy_c_buf_p = yytext + YY_MORE_ADJ; - - yy_act = YY_STATE_EOF((yy_start - 1) / 2); - goto do_action; - } - - else - { - if ( ! yy_did_buffer_switch_on_eof ) - YY_NEW_FILE; - } - } - break; - - case EOB_ACT_CONTINUE_SCAN: - yy_c_buf_p = yytext + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state(); - - yy_cp = yy_c_buf_p; - yy_bp = yytext + YY_MORE_ADJ; - goto yy_match; - - case EOB_ACT_LAST_MATCH: - yy_c_buf_p = - &yy_current_buffer->yy_ch_buf[yy_n_chars]; - - yy_current_state = yy_get_previous_state(); - - yy_cp = yy_c_buf_p; - yy_bp = yytext + YY_MORE_ADJ; - goto yy_find_action; - } - break; - } - - default: -#ifdef FLEX_DEBUG - printf( "action # %d\n", yy_act ); -#endif - YY_FATAL_ERROR( - "fatal flex scanner internal error--no action found" ); - } - } - } - - -/* yy_get_next_buffer - try to read in a new buffer - * - * synopsis - * int yy_get_next_buffer(); - * - * returns a code representing an action - * EOB_ACT_LAST_MATCH - - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position - * EOB_ACT_END_OF_FILE - end of file - */ - -static int yy_get_next_buffer() - - { - register YY_CHAR *dest = yy_current_buffer->yy_ch_buf; - register YY_CHAR *source = yytext - 1; /* copy prev. char, too */ - register int number_to_move, i; - int ret_val; - - if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] ) - YY_FATAL_ERROR( - "fatal flex scanner internal error--end of buffer missed" ); - - /* try to read more data */ - - /* first move last chars to start of buffer */ - number_to_move = yy_c_buf_p - yytext; - - for ( i = 0; i < number_to_move; ++i ) - *(dest++) = *(source++); - - if ( yy_current_buffer->yy_eof_status != EOF_NOT_SEEN ) - /* don't do the read, it's not guaranteed to return an EOF, - * just force an EOF - */ - yy_n_chars = 0; - - else - { - int num_to_read = yy_current_buffer->yy_buf_size - number_to_move - 1; - - if ( num_to_read > YY_READ_BUF_SIZE ) - num_to_read = YY_READ_BUF_SIZE; - - else if ( num_to_read <= 0 ) - YY_FATAL_ERROR( "fatal error - scanner input buffer overflow" ); - - /* read in more data */ - YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]), - yy_n_chars, num_to_read ); - } - - if ( yy_n_chars == 0 ) - { - if ( number_to_move == 1 ) - { - ret_val = EOB_ACT_END_OF_FILE; - yy_current_buffer->yy_eof_status = EOF_DONE; - } - - else - { - ret_val = EOB_ACT_LAST_MATCH; - yy_current_buffer->yy_eof_status = EOF_PENDING; - } - } - - else - ret_val = EOB_ACT_CONTINUE_SCAN; - - yy_n_chars += number_to_move; - yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR; - yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; - - /* yytext begins at the second character in yy_ch_buf; the first - * character is the one which preceded it before reading in the latest - * buffer; it needs to be kept around in case it's a newline, so - * yy_get_previous_state() will have with '^' rules active - */ - - yytext = &yy_current_buffer->yy_ch_buf[1]; - - return ( ret_val ); - } - - -/* yy_get_previous_state - get the state just before the EOB char was reached - * - * synopsis - * yy_state_type yy_get_previous_state(); - */ - -static yy_state_type yy_get_previous_state() - - { - register yy_state_type yy_current_state; - register YY_CHAR *yy_cp; - - yy_current_state = yy_start; - - for ( yy_cp = yytext + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp ) - { - register YY_CHAR yy_c = (*yy_cp ? yy_ec[*yy_cp] : 1); - if ( yy_accept[yy_current_state] ) - { - yy_last_accepting_state = yy_current_state; - yy_last_accepting_cpos = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = yy_def[yy_current_state]; - if ( yy_current_state >= 34 ) - yy_c = yy_meta[yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - } - - return ( yy_current_state ); - } - - -/* yy_try_NUL_trans - try to make a transition on the NUL character - * - * synopsis - * next_state = yy_try_NUL_trans( current_state ); - */ - -#ifdef YY_USE_PROTOS -static yy_state_type yy_try_NUL_trans( register yy_state_type yy_current_state ) -#else -static yy_state_type yy_try_NUL_trans( yy_current_state ) -register yy_state_type yy_current_state; -#endif - - { - register int yy_is_jam; - register YY_CHAR *yy_cp = yy_c_buf_p; - - register YY_CHAR yy_c = 1; - if ( yy_accept[yy_current_state] ) - { - yy_last_accepting_state = yy_current_state; - yy_last_accepting_cpos = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = yy_def[yy_current_state]; - if ( yy_current_state >= 34 ) - yy_c = yy_meta[yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 33); - - return ( yy_is_jam ? 0 : yy_current_state ); - } - - -#ifdef YY_USE_PROTOS -static void yyunput( YY_CHAR c, register YY_CHAR *yy_bp ) -#else -static void yyunput( c, yy_bp ) -YY_CHAR c; -register YY_CHAR *yy_bp; -#endif - - { - register YY_CHAR *yy_cp = yy_c_buf_p; - - /* undo effects of setting up yytext */ - *yy_cp = yy_hold_char; - - if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 ) - { /* need to shift things up to make room */ - register int number_to_move = yy_n_chars + 2; /* +2 for EOB chars */ - register YY_CHAR *dest = - &yy_current_buffer->yy_ch_buf[yy_current_buffer->yy_buf_size + 2]; - register YY_CHAR *source = - &yy_current_buffer->yy_ch_buf[number_to_move]; - - while ( source > yy_current_buffer->yy_ch_buf ) - *--dest = *--source; - - yy_cp += dest - source; - yy_bp += dest - source; - yy_n_chars = yy_current_buffer->yy_buf_size; - - if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 ) - YY_FATAL_ERROR( "flex scanner push-back overflow" ); - } - - if ( yy_cp > yy_bp && yy_cp[-1] == '\n' ) - yy_cp[-2] = '\n'; - - *--yy_cp = c; - - /* note: the formal parameter *must* be called "yy_bp" for this - * macro to now work correctly - */ - YY_DO_BEFORE_ACTION; /* set up yytext again */ - } - - -#ifdef __cplusplus -static int yyinput() -#else -static int input() -#endif - - { - int c; - YY_CHAR *yy_cp = yy_c_buf_p; - - *yy_cp = yy_hold_char; - - if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR ) - { - /* yy_c_buf_p now points to the character we want to return. - * If this occurs *before* the EOB characters, then it's a - * valid NUL; if not, then we've hit the end of the buffer. - */ - if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] ) - /* this was really a NUL */ - *yy_c_buf_p = '\0'; - - else - { /* need more input */ - yytext = yy_c_buf_p; - ++yy_c_buf_p; - - switch ( yy_get_next_buffer() ) - { - case EOB_ACT_END_OF_FILE: - { - if ( yywrap() ) - { - yy_c_buf_p = yytext + YY_MORE_ADJ; - return ( EOF ); - } - - YY_NEW_FILE; - -#ifdef __cplusplus - return ( yyinput() ); -#else - return ( input() ); -#endif - } - break; - - case EOB_ACT_CONTINUE_SCAN: - yy_c_buf_p = yytext + YY_MORE_ADJ; - break; - - case EOB_ACT_LAST_MATCH: -#ifdef __cplusplus - YY_FATAL_ERROR( "unexpected last match in yyinput()" ); -#else - YY_FATAL_ERROR( "unexpected last match in input()" ); -#endif - } - } - } - - c = *yy_c_buf_p; - yy_hold_char = *++yy_c_buf_p; - - return ( c ); - } - - -#ifdef YY_USE_PROTOS -void yyrestart( FILE *input_file ) -#else -void yyrestart( input_file ) -FILE *input_file; -#endif - - { - yy_init_buffer( yy_current_buffer, input_file ); - yy_load_buffer_state(); - } - - -#ifdef YY_USE_PROTOS -void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer ) -#else -void yy_switch_to_buffer( new_buffer ) -YY_BUFFER_STATE new_buffer; -#endif - - { - if ( yy_current_buffer == new_buffer ) - return; - - if ( yy_current_buffer ) - { - /* flush out information for old buffer */ - *yy_c_buf_p = yy_hold_char; - yy_current_buffer->yy_buf_pos = yy_c_buf_p; - yy_current_buffer->yy_n_chars = yy_n_chars; - } - - yy_current_buffer = new_buffer; - yy_load_buffer_state(); - - /* we don't actually know whether we did this switch during - * EOF (yywrap()) processing, but the only time this flag - * is looked at is after yywrap() is called, so it's safe - * to go ahead and always set it. - */ - yy_did_buffer_switch_on_eof = 1; - } - - -#ifdef YY_USE_PROTOS -void yy_load_buffer_state( void ) -#else -void yy_load_buffer_state() -#endif - - { - yy_n_chars = yy_current_buffer->yy_n_chars; - yytext = yy_c_buf_p = yy_current_buffer->yy_buf_pos; - yyin = yy_current_buffer->yy_input_file; - yy_hold_char = *yy_c_buf_p; - } - - -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_create_buffer( FILE *file, int size ) -#else -YY_BUFFER_STATE yy_create_buffer( file, size ) -FILE *file; -int size; -#endif - - { - YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) malloc( sizeof( struct yy_buffer_state ) ); - - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_buf_size = size; - - /* yy_ch_buf has to be 2 characters longer than the size given because - * we need to put in 2 end-of-buffer characters. - */ - b->yy_ch_buf = (YY_CHAR *) malloc( (unsigned) (b->yy_buf_size + 2) ); - - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - yy_init_buffer( b, file ); - - return ( b ); - } - - -#ifdef YY_USE_PROTOS -void yy_delete_buffer( YY_BUFFER_STATE b ) -#else -void yy_delete_buffer( b ) -YY_BUFFER_STATE b; -#endif - - { - if ( b == yy_current_buffer ) - yy_current_buffer = (YY_BUFFER_STATE) 0; - - free( (char *) b->yy_ch_buf ); - free( (char *) b ); - } - - -#ifdef YY_USE_PROTOS -void yy_init_buffer( YY_BUFFER_STATE b, FILE *file ) -#else -void yy_init_buffer( b, file ) -YY_BUFFER_STATE b; -FILE *file; -#endif - - { - b->yy_input_file = file; - - /* we put in the '\n' and start reading from [1] so that an - * initial match-at-newline will be true. - */ - - b->yy_ch_buf[0] = '\n'; - b->yy_n_chars = 1; - - /* we always need two end-of-buffer characters. The first causes - * a transition to the end-of-buffer state. The second causes - * a jam in that state. - */ - b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; - b->yy_ch_buf[2] = YY_END_OF_BUFFER_CHAR; - - b->yy_buf_pos = &b->yy_ch_buf[1]; - - b->yy_eof_status = EOF_NOT_SEEN; - } -# line 108 "lexer.l" - - - -#ifdef FLEX_SCANNER -static int lex_input() { - return input(); -} -#else /* BSD/AT&T lex */ -#ifndef input -# error "Sorry, but need either flex or AT&T lex" -#endif -static int lex_input() { - return input(); -} -/* # undef unput -# define unput(_c) my_unput(_c) -*/ - -# undef input -# define input() my_input() -static int my_unput(char c) -{ - if (lex_read_from_string) { - /* Make sure we have something */ - if (lex_string_ptr) { - if (c == '\n') yylineno--; - lex_string_ptr--; - } - } else { - yytchar= (c);if(yytchar=='\n')yylineno--;*yysptr++=yytchar; -/* unput(c); Causes infinite recursion! */ - } - return c; -} - -#endif - -/* Public */ -void LexFromFile(FILE *fd) -{ - lex_read_from_string = 0; - yyin = fd; - /* Don't know why this is necessary, but otherwise - * lex only works _once_! - */ -#ifdef FLEX_SCANNER - yy_init = 1; -#endif -} - -void LexFromString(char *buffer) -{ - lex_read_from_string = 1; - lex_buffer = buffer; - lex_buffer_length = strlen(buffer); - lex_string_ptr = 0; - /* Don't know why this is necessary, but otherwise - * lex only works _once_! - */ -#ifdef FLEX_SCANNER - yy_init = 1; -#endif -} - -static int my_input( void ) -{ - if (lex_read_from_string) { - if (lex_string_ptr == lex_buffer_length) - return 0; - else { - char c = lex_buffer[lex_string_ptr++]; -#ifndef FLEX_SCANNER - if (c == '\n') yylineno++; -#endif - return c; - } - } else { - return lex_input(); - } -} - -void wxExprCleanUp() -{ - if (yy_current_buffer) - yy_delete_buffer(yy_current_buffer); -} diff --git a/src/common/cwy_tab.c b/src/common/cwy_tab.c deleted file mode 100644 index 050f96167f..0000000000 --- a/src/common/cwy_tab.c +++ /dev/null @@ -1,528 +0,0 @@ -#ifndef lint -static char yysccsid[] = "@(#)yaccpar 1.7 (Berkeley) 09/09/90"; -#endif -#define YYBYACC 1 -#line 2 "parser.y" -#include "string.h" -#ifdef _MSC_VER -#include -#endif -#include "wx/expr.h" - -#ifndef __EXTERN_C__ -#define __EXTERN_C__ 1 -#endif - -#if defined(__cplusplus) || defined(__STDC__) -#if defined(__cplusplus) && defined(__EXTERN_C__) -extern "C" { -#endif -#endif -int yylex(void); -int yylook(void); -int yywrap(void); -int yyback(int *, int); - -/* You may need to put /DLEX_SCANNER in your makefile - * if you're using LEX! - Last change: JS 13 Jul 97 6:12 pm - */ -#ifdef LEX_SCANNER -/* int yyoutput(int); */ -void yyoutput(int); -#else -void yyoutput(int); -#endif - -#if defined(__cplusplus) || defined(__STDC__) -#if defined(__cplusplus) && defined(__EXTERN_C__) -} -#endif -#endif -#line 36 "parser.y" -typedef union { - char *s; -/* struct pexpr *expr; */ -} YYSTYPE; -#line 44 "y_tab.c" -#define INTEGER 1 -#define WORD 2 -#define STRING 3 -#define PERIOD 13 -#define OPEN 4 -#define CLOSE 5 -#define COMMA 6 -#define NEWLINE 7 -#define ERROR 8 -#define OPEN_SQUARE 9 -#define CLOSE_SQUARE 10 -#define EQUALS 11 -#define EXP 14 -#define YYERRCODE 256 -short yylhs[] = { -1, - 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, - 3, 4, 4, 5, 5, 5, 5, 5, 5, 5, -}; -short yylen[] = { 2, - 0, 2, 2, 2, 2, 4, 2, 3, 0, 1, - 3, 3, 1, 1, 1, 1, 3, 3, 5, 1, -}; -short yydefred[] = { 1, - 0, 0, 0, 0, 2, 0, 5, 3, 0, 0, - 0, 15, 7, 20, 0, 0, 13, 4, 0, 0, - 0, 0, 8, 0, 6, 0, 18, 0, 12, 11, - 0, 19, -}; -short yydgoto[] = { 1, - 5, 14, 15, 16, 17, -}; -short yysindex[] = { 0, - -2, 9, 2, 1, 0, 10, 0, 0, 11, -5, - 17, 0, 0, 0, 14, -1, 0, 0, 33, 38, - 41, 16, 0, 11, 0, 29, 0, 40, 0, 0, - 44, 0, -}; -short yyrindex[] = { 0, - 0, 0, 0, 0, 0, 0, 0, 0, 42, 21, - 24, 0, 0, 0, 0, 30, 0, 0, 0, 0, - 0, 0, 0, 31, 0, 27, 0, 24, 0, 0, - 0, 0, -}; -short yygindex[] = { 0, - 0, 45, -8, 0, 26, -}; -#define YYTABLESIZE 254 -short yytable[] = { 3, - 19, 10, 11, 12, 24, 9, 4, 20, 21, 4, - 13, 10, 11, 12, 8, 30, 10, 28, 12, 4, - 9, 7, 18, 23, 4, 16, 16, 22, 14, 14, - 16, 17, 17, 14, 10, 9, 17, 25, 26, 10, - 9, 27, 31, 9, 32, 6, 9, 29, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2, -}; -short yycheck[] = { 2, - 9, 1, 2, 3, 6, 4, 9, 13, 14, 9, - 10, 1, 2, 3, 13, 24, 1, 2, 3, 9, - 4, 13, 13, 10, 9, 5, 6, 11, 5, 6, - 10, 5, 6, 10, 5, 5, 10, 5, 1, 10, - 10, 1, 14, 4, 1, 1, 5, 22, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 256, -}; -#define YYFINAL 1 -#ifndef YYDEBUG -#define YYDEBUG 0 -#endif -#define YYMAXTOKEN 14 -#if YYDEBUG -char *yyname[] = { -"end-of-file","INTEGER","WORD","STRING","OPEN","CLOSE","COMMA","NEWLINE", -"ERROR","OPEN_SQUARE","CLOSE_SQUARE","EQUALS",0,"PERIOD","EXP", -}; -char *yyrule[] = { -"$accept : commands", -"commands :", -"commands : commands command", -"command : WORD PERIOD", -"command : expr PERIOD", -"command : error PERIOD", -"expr : WORD OPEN arglist CLOSE", -"expr : OPEN_SQUARE CLOSE_SQUARE", -"expr : OPEN_SQUARE arglist CLOSE_SQUARE", -"arglist :", -"arglist : arg", -"arglist : arg COMMA arglist", -"arg : WORD EQUALS arg1", -"arg : arg1", -"arg1 : WORD", -"arg1 : STRING", -"arg1 : INTEGER", -"arg1 : INTEGER PERIOD INTEGER", -"arg1 : INTEGER EXP INTEGER", -"arg1 : INTEGER PERIOD INTEGER EXP INTEGER", -"arg1 : expr", -}; -#endif -#define yyclearin (yychar=(-1)) -#define yyerrok (yyerrflag=0) -#ifdef YYSTACKSIZE -#ifndef YYMAXDEPTH -#define YYMAXDEPTH YYSTACKSIZE -#endif -#else -#ifdef YYMAXDEPTH -#define YYSTACKSIZE YYMAXDEPTH -#else -#define YYSTACKSIZE 600 -#define YYMAXDEPTH 600 -#endif -#endif -int yydebug; -int yynerrs; -int yyerrflag; -int yychar; -short *yyssp; -YYSTYPE *yyvsp; -YYSTYPE yyval; -YYSTYPE yylval; -short yyss[YYSTACKSIZE]; -YYSTYPE yyvs[YYSTACKSIZE]; -#define yystacksize YYSTACKSIZE -#line 118 "parser.y" - -#ifdef IDE_INVOKED -#include "../common/doslex.c" -#else -#if (defined(__MWERKS__)) -#include "../common/cwlex_yy.c" -#else -#include "../common/lex_yy.c" -#endif -#endif - -/* -void yyerror(s) -char *s; -{ - syntax_error(s); -} -*/ - -/* Ansi prototype. If this doesn't work for you... uncomment - the above instead. - */ - -void yyerror(char *s) -{ - syntax_error(s); -} - -/* - * Unfortunately, my DOS version of FLEX - * requires yywrap to be #def'ed, whereas - * the UNIX flex expects a proper function. - */ - -/* Not sure if __SC__ is the appropriate thing - * to test - */ - -#ifndef __SC__ -#ifdef USE_DEFINE -#ifndef yywrap -#define yywrap() 1 -#endif -#else -int yywrap() { return 1; } -#endif -#endif -#line 247 "y_tab.c" -#define YYABORT goto yyabort -#define YYACCEPT goto yyaccept -#define YYERROR goto yyerrlab -int -yyparse() -{ - register int yym, yyn, yystate; -#if YYDEBUG - register char *yys; - extern char *getenv(); - - if (yys = getenv("YYDEBUG")) - { - yyn = *yys; - if (yyn >= '0' && yyn <= '9') - yydebug = yyn - '0'; - } -#endif - - yynerrs = 0; - yyerrflag = 0; - yychar = (-1); - - yyssp = yyss; - yyvsp = yyvs; - *yyssp = yystate = 0; - -yyloop: - if (yyn = yydefred[yystate]) goto yyreduce; - if (yychar < 0) - { - if ((yychar = yylex()) < 0) yychar = 0; -#if YYDEBUG - if (yydebug) - { - yys = 0; - if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; - if (!yys) yys = "illegal-symbol"; - printf("yydebug: state %d, reading %d (%s)\n", yystate, - yychar, yys); - } -#endif - } - if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) - { -#if YYDEBUG - if (yydebug) - printf("yydebug: state %d, shifting to state %d\n", - yystate, yytable[yyn]); -#endif - if (yyssp >= yyss + yystacksize - 1) - { - goto yyoverflow; - } - *++yyssp = yystate = yytable[yyn]; - *++yyvsp = yylval; - yychar = (-1); - if (yyerrflag > 0) --yyerrflag; - goto yyloop; - } - if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) - { - yyn = yytable[yyn]; - goto yyreduce; - } - if (yyerrflag) goto yyinrecovery; -#ifdef lint - goto yynewerror; -#endif -yynewerror: - yyerror("syntax error"); -#ifdef lint - goto yyerrlab; -#endif -yyerrlab: - ++yynerrs; -yyinrecovery: - if (yyerrflag < 3) - { - yyerrflag = 3; - for (;;) - { - if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) - { -#if YYDEBUG - if (yydebug) - printf("yydebug: state %d, error recovery shifting\ - to state %d\n", *yyssp, yytable[yyn]); -#endif - if (yyssp >= yyss + yystacksize - 1) - { - goto yyoverflow; - } - *++yyssp = yystate = yytable[yyn]; - *++yyvsp = yylval; - goto yyloop; - } - else - { -#if YYDEBUG - if (yydebug) - printf("yydebug: error recovery discarding state %d\n", - *yyssp); -#endif - if (yyssp <= yyss) goto yyabort; - --yyssp; - --yyvsp; - } - } - } - else - { - if (yychar == 0) goto yyabort; -#if YYDEBUG - if (yydebug) - { - yys = 0; - if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; - if (!yys) yys = "illegal-symbol"; - printf("yydebug: state %d, error recovery discards token %d (%s)\n", - yystate, yychar, yys); - } -#endif - yychar = (-1); - goto yyloop; - } -yyreduce: -#if YYDEBUG - if (yydebug) - printf("yydebug: state %d, reducing by rule %d (%s)\n", - yystate, yyn, yyrule[yyn]); -#endif - yym = yylen[yyn]; - yyval = yyvsp[1-yym]; - switch (yyn) - { -case 3: -#line 68 "parser.y" -{process_command(proio_cons(wxmake_word(yyvsp[-1].s), NULL)); free(yyvsp[-1].s);} -break; -case 4: -#line 70 "parser.y" -{process_command(yyvsp[-1].s);} -break; -case 5: -#line 72 "parser.y" -{syntax_error("Unrecognized command.");} -break; -case 6: -#line 76 "parser.y" -{yyval.s = proio_cons(wxmake_word(yyvsp[-3].s), yyvsp[-1].s); free(yyvsp[-3].s);} -break; -case 7: -#line 78 "parser.y" -{yyval.s = proio_cons(NULL, NULL);} -break; -case 8: -#line 80 "parser.y" -{yyval.s = yyvsp[-1].s; } -break; -case 9: -#line 84 "parser.y" -{yyval.s = NULL;} -break; -case 10: -#line 86 "parser.y" -{yyval.s = proio_cons(yyvsp[0].s, NULL);} -break; -case 11: -#line 89 "parser.y" -{yyval.s = proio_cons(yyvsp[-2].s, yyvsp[0].s);} -break; -case 12: -#line 93 "parser.y" -{yyval.s = proio_cons(wxmake_word("="), proio_cons(wxmake_word(yyvsp[-2].s), proio_cons(yyvsp[0].s, NULL))); - free(yyvsp[-2].s); } -break; -case 13: -#line 96 "parser.y" -{yyval.s = yyvsp[0].s; } -break; -case 14: -#line 99 "parser.y" -{yyval.s = wxmake_word(yyvsp[0].s); free(yyvsp[0].s);} -break; -case 15: -#line 101 "parser.y" -{yyval.s = wxmake_string(yyvsp[0].s); free(yyvsp[0].s);} -break; -case 16: -#line 103 "parser.y" -{yyval.s = wxmake_integer(yyvsp[0].s); free(yyvsp[0].s);} -break; -case 17: -#line 105 "parser.y" -{yyval.s = wxmake_real(yyvsp[-2].s, yyvsp[0].s); free(yyvsp[-2].s); free(yyvsp[0].s); } -break; -case 18: -#line 107 "parser.y" -{yyval.s = wxmake_exp(yyvsp[-2].s, yyvsp[0].s); free(yyvsp[-2].s); free(yyvsp[0].s); } -break; -case 19: -#line 110 "parser.y" -{yyval.s = wxmake_exp2(yyvsp[-4].s, yyvsp[-2].s, yyvsp[0].s); free(yyvsp[-4].s); free(yyvsp[-2].s); - free(yyvsp[0].s); } -break; -case 20: -#line 114 "parser.y" -{yyval.s = yyvsp[0].s;} -break; -#line 461 "y_tab.c" - } - yyssp -= yym; - yystate = *yyssp; - yyvsp -= yym; - yym = yylhs[yyn]; - if (yystate == 0 && yym == 0) - { -#if YYDEBUG - if (yydebug) - printf("yydebug: after reduction, shifting from state 0 to\ - state %d\n", YYFINAL); -#endif - yystate = YYFINAL; - *++yyssp = YYFINAL; - *++yyvsp = yyval; - if (yychar < 0) - { - if ((yychar = yylex()) < 0) yychar = 0; -#if YYDEBUG - if (yydebug) - { - yys = 0; - if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; - if (!yys) yys = "illegal-symbol"; - printf("yydebug: state %d, reading %d (%s)\n", - YYFINAL, yychar, yys); - } -#endif - } - if (yychar == 0) goto yyaccept; - goto yyloop; - } - if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yystate) - yystate = yytable[yyn]; - else - yystate = yydgoto[yym]; -#if YYDEBUG - if (yydebug) - printf("yydebug: after reduction, shifting from state %d \ -to state %d\n", *yyssp, yystate); -#endif - if (yyssp >= yyss + yystacksize - 1) - { - goto yyoverflow; - } - *++yyssp = yystate; - *++yyvsp = yyval; - goto yyloop; -yyoverflow: - yyerror("yacc stack overflow"); -yyabort: - return (1); -yyaccept: - return (0); -} diff --git a/src/common/date.cpp b/src/common/date.cpp deleted file mode 100644 index 2b248eab65..0000000000 --- a/src/common/date.cpp +++ /dev/null @@ -1,656 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: date.cpp -// Purpose: wxDate class -// Author: -// Originally inspired by Steve Marcus (CIS 72007,1233) 6/16/91 -// Enhanced by Eric Simon (CIS 70540,1522) 6/29/91 -// Further Enhanced by Chris Hill (CIS 72030,2606) 7/11/91 -// Still Further Enhanced by Hill & Simon v3.10 8/05/91 -// Version 4 by Charles D. Price 6/27/92 -// Integrated into wxWindows by Julian Smart 9th July 1995 -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "date.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#include "wx/setup.h" - -#if wxUSE_TIMEDATE - -#include "wx/date.h" -#include - -#include -#include -#include - -#if wxUSE_IOSTREAMH -#include -#else -#include -#endif - -#include -#include - -#define ABBR_LENGTH 3 - -static const char *dayname[] = { - "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" -}; - -static const char *mname[] = { - "January", "February", "March", "April", "May", "June", "July", "August", - "September", "October", "November", "December" -}; - -static int GauDays[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxDate, wxObject) -#endif - -//////////////////////////////////////////////////////////// -// Constructors -//////////////////////////////////////////////////////////// - -wxDate::wxDate() -{ - DisplayFormat=wxMDY; - DisplayOptions='\0'; - month = day = year = day_of_week = 0; - julian = 0; -} - -wxDate::wxDate (long j) : julian(j) -{ - DisplayFormat=wxMDY; - DisplayOptions='\0'; - julian_to_mdy (); -} - -wxDate::wxDate (int m, int d, int y) : month(m), day(d), year(y) -{ - DisplayFormat=wxMDY; - DisplayOptions='\0'; - mdy_to_julian (); -} - -wxDate::wxDate (const wxString& dat) -{ - DisplayFormat=wxMDY; - DisplayOptions='\0'; - if (strcmp(dat, "TODAY") == 0 || strcmp(dat, "today") == 0) - { - // Sets the current date - Set(); - } - else - { - char buf[100]; - strcpy(buf, (char *) (const char *)dat); - - char *token = strtok(buf,"/-"); - month = atoi(token); - day = atoi(strtok((char *) NULL,"/-")); - year = atoi(strtok((char *) NULL," ")); - } - - mdy_to_julian (); -} - -wxDate::wxDate (const wxDate &dt) -{ - DisplayFormat=dt.DisplayFormat; - DisplayOptions=dt.DisplayOptions; - month = dt.month; - day = dt.day; - year = dt.year; - mdy_to_julian (); -} - -void wxDate::operator = (const wxDate &dt) -{ - DisplayFormat=dt.DisplayFormat; - DisplayOptions=dt.DisplayOptions; - month = dt.month; - day = dt.day; - year = dt.year; - mdy_to_julian (); -} - -void wxDate::operator = (const wxString& dat) -{ - DisplayFormat=wxMDY; - DisplayOptions='\0'; - if (strcmp(dat, "TODAY") == 0 || strcmp(dat, "today") == 0) - { - // Sets the current date - Set(); - } - else - { - char buf[100]; - strcpy(buf, (char *)(const char *)dat); - - char *token = strtok(buf,"/-"); - month = atoi(token); - day = atoi(strtok((char *) NULL,"/-")); - year = atoi(strtok((char *) NULL," ")); - } - - mdy_to_julian (); -} - -////////////////////////////////////////////////////////////// -// Conversion operations -////////////////////////////////////////////////////////////// - -#ifndef __SALFORDC__ -wxDate::operator wxString( void ) -{ - return FormatDate(); -} -#endif - -////////////////////////////////////////////////////////////// -// Date Arithmetic -////////////////////////////////////////////////////////////// - -wxDate wxDate::operator + (long i) -{ - wxDate dp(julian + i); - return dp; -} - -wxDate wxDate::operator + (int i) -{ - wxDate dp(julian + (long)i); - return dp; -} - -wxDate wxDate::operator - (long i) -{ - wxDate dp(julian - i); - return dp; -} - -wxDate wxDate::operator - (int i) -{ - wxDate dp(julian - (long)i); - return dp; -} - -long wxDate::operator - (const wxDate &dt) -{ - return ( julian - dt.julian ); -} - -wxDate &wxDate::operator += (long i) -{ - julian += i; - julian_to_mdy(); - return *this; -} - -wxDate &wxDate::operator -= (long i) -{ - julian -= i; - julian_to_mdy(); - return *this; -} - -wxDate &wxDate::operator ++() -{ - julian++; - julian_to_mdy(); - return *this; -} - -wxDate &wxDate::operator ++(int) -{ - julian++; - julian_to_mdy(); - return *this; -} - -wxDate &wxDate::operator --() -{ - julian--; - julian_to_mdy(); - return *this; -} - -wxDate &wxDate::operator --(int) -{ - julian--; - julian_to_mdy(); - return *this; -} - -////////////////////////////////////////////////////////////// -// Date comparison -////////////////////////////////////////////////////////////// - -bool WXDLLEXPORT operator < (const wxDate &dt1, const wxDate &dt2) -{ - return ( dt1.julian < dt2.julian ); -} - -bool WXDLLEXPORT operator <= (const wxDate &dt1, const wxDate &dt2) -{ - return ( (dt1.julian == dt2.julian) || (dt1.julian < dt2.julian) ); -} - -bool WXDLLEXPORT operator > (const wxDate &dt1, const wxDate &dt2) -{ - return ( dt1.julian > dt2.julian ); -} - -bool WXDLLEXPORT operator >= (const wxDate &dt1, const wxDate &dt2) -{ - return ( (dt1.julian == dt2.julian) || (dt1.julian > dt2.julian) ); -} - -bool WXDLLEXPORT operator == (const wxDate &dt1, const wxDate &dt2) -{ - return ( dt1.julian == dt2.julian ); -} - -bool WXDLLEXPORT operator != (const wxDate &dt1, const wxDate &dt2) -{ - return ( dt1.julian != dt2.julian ); -} - -//////////////////////////////////////////////////////////////// -// Ostream operations -//////////////////////////////////////////////////////////////// - -ostream WXDLLEXPORT & operator << (ostream &os, const wxDate &dt) -{ - return os << (const char *) dt.FormatDate(); -} - -////////////////////////////////////////////////////////////// -// Conversion routines -////////////////////////////////////////////////////////////// - -void wxDate::julian_to_wday (void) -{ - day_of_week = (int) ((julian + 2) % 7 + 1); -} - -void wxDate::julian_to_mdy () -{ - long a,b,c,d,e,z,alpha; - z = julian+1; - // dealing with Gregorian calendar reform - if (z < 2299161L) - a = z; - else { - alpha = (long) ((z-1867216.25) / 36524.25); - a = z + 1 + alpha - alpha/4; - } - b = ( a > 1721423 ? a + 1524 : a + 1158 ); - c = (long) ((b - 122.1) / 365.25); - d = (long) (365.25 * c); - e = (long) ((b - d) / 30.6001); - day = (int)(b - d - (long)(30.6001 * e)); - month = (int)((e < 13.5) ? e - 1 : e - 13); - year = (int)((month > 2.5 ) ? (c - 4716) : c - 4715); - julian_to_wday (); -} - -void wxDate::mdy_to_julian (void) -{ - int a,b=0; - int work_month=month, work_day=day, work_year=year; - // correct for negative year - if (work_year < 0) - work_year++; - if (work_month <= 2) - { work_year--; work_month +=12; } - - // deal with Gregorian calendar - if (work_year*10000. + work_month*100. + work_day >= 15821015.) - { - a = (int)(work_year/100.); - b = 2 - a + a/4; - } - julian = (long) (365.25*work_year) + - (long) (30.6001 * (work_month+1)) + work_day + 1720994L + b; - julian_to_wday (); -} - -//////////////////////////////////////////////////////////////// -// Format routine -//////////////////////////////////////////////////////////////// - -wxString wxDate::FormatDate (int type) const -{ - int actualType = type; - if (actualType == -1) - actualType = DisplayFormat; - - char buf[40]; - - memset( buf, '\0', sizeof(buf) ); - switch ( actualType ) - { - case wxDAY: - if ( (day_of_week < 1) || (day_of_week > 7) ) - strcpy(buf, _("invalid day")); - else - strncpy( buf, _(dayname[day_of_week-1]), - (DisplayOptions & wxDATE_ABBR) ? ABBR_LENGTH : 9); - return wxString(buf); - - case wxMONTH: - if ( (month < 1) || (month > 12) ) - strcpy(buf, _("invalid month")); - else - strncpy( buf, _(mname[month-1]), - (DisplayOptions & wxDATE_ABBR) ? ABBR_LENGTH : 9); - return wxString(buf); - - case wxFULL: - if ( (month < 1) || (month > 12) || (day_of_week < 0) || - (day_of_week > 7) ) - { - strcpy(buf, _("invalid date")); - return wxString(buf); - } - strncpy( buf, _(dayname[day_of_week-1]), - (DisplayOptions & wxDATE_ABBR) ? ABBR_LENGTH : 9); - strcat( buf, ", "); - strncat( buf, _(mname[month-1]), - (DisplayOptions & wxDATE_ABBR) ? ABBR_LENGTH : 9); - strcat( buf, " "); - sprintf( buf+strlen(buf), "%d, %d", day, abs(year) ); - if (year < 0) - strcat(buf,_(" B.C.")); - return wxString(buf); - - case wxEUROPEAN: - if ( (month < 1) || (month > 12) || (day_of_week < 0) || - (day_of_week > 7) ) - { - strcpy(buf, _("invalid date")); - return wxString(buf); - } - sprintf(buf,"%d ", day); - strncat(buf, _(mname[month-1]), - (DisplayOptions & wxDATE_ABBR) ? ABBR_LENGTH : 9); - sprintf( buf+strlen(buf), " %d", abs(year) ); - if (year < 0) - strcat(buf, _(" B.C.")); - return wxString(buf); - - case wxMDY: - default: - if (day==0 || month==0 || year==0) - strcpy(buf, _("invalid date")); - else - sprintf( buf+strlen(buf), "%1d/%1d/%02d", month, day, - (DisplayOptions & wxNO_CENTURY) && (abs(year) > 1899) - ? (abs(year) - (abs(year) / 100 * 100)) - : (abs(year)) ); - return wxString(buf); - } - return wxString(""); -} - -void wxDate::SetFormat( int format ) -{ - DisplayFormat = format; -} - -int wxDate::SetOption( int option, bool action ) -{ - switch ( option ) - { - case wxNO_CENTURY: - if ( action ) - DisplayOptions |= wxNO_CENTURY; - else - { - DisplayOptions &= (~wxNO_CENTURY); - } - return 1; - case wxDATE_ABBR: - if ( action ) - DisplayOptions |= wxDATE_ABBR; - else - { - DisplayOptions &= (~wxDATE_ABBR); - } - return 1; - default: - return 0; - } - return 0; -} - -/////////////////////////////////////////////////////////////// -// Miscellaneous Routines -/////////////////////////////////////////////////////////////// - -long wxDate::GetJulianDate( void ) const -{ - return julian; -} - -int wxDate::GetDayOfYear( void ) const -{ - wxDate temp( 1, 1, year ); - - return (int) (julian - temp.julian + 1); -} - - -bool wxDate::IsLeapYear( void ) const -{ - return ( (year >= 1582) ? - (year % 4 == 0 && year % 100 != 0 || year % 400 == 0 ): - (year % 4 == 0) ); -} - -// Version 4.0 Extension to Public Interface - CDP - -wxDate& wxDate::Set() -{ -//#ifdef __WXMSW__ -#if 0 - struct _dosdate_t sDate; - _dos_getdate(&sDate); - - month = sDate.month; - day = sDate.day; - year = sDate.year; - - mdy_to_julian(); -#else - time_t now = time((time_t *) NULL); - struct tm *localTime = localtime(&now); - - month = localTime->tm_mon + 1; - day = localTime->tm_mday; - year = localTime->tm_year + 1900; - - mdy_to_julian (); -#endif - return *this; -} - -wxDate& wxDate::Set( - int nMonth, - int nDay, - int nYear) -{ - month = nMonth; - year = nYear < 0 ? 9999 : nYear; - year = nYear > 9999 ? 0 : nYear; - day = nDay < GetDaysInMonth() ? nDay : GetDaysInMonth(); - - mdy_to_julian(); - return *this; -} - -wxDate & -wxDate::Set(long j) -{ - julian = j; - - julian_to_mdy(); - return *this; -} - - -int wxDate::GetDaysInMonth() -{ - return GauDays[month-1] + (month==2 && IsLeapYear()); -} - -int wxDate::GetFirstDayOfMonth() const -{ - return wxDate(month, 1, year).GetDayOfWeek(); -} - -int wxDate::GetDay() const -{ - return day; -} - -int wxDate::GetDayOfWeek() const -{ - return day_of_week; -} - -int wxDate::GetYear() const -{ - return year; -} - -int wxDate::GetMonth() const -{ - return month; -} - -wxDate& wxDate::AddWeeks(int nCount) -{ - Set(julian + (long)nCount*7); - return *this; -} - -wxDate& wxDate::AddMonths(int nCount) -{ - month += nCount; - - if (month < 1) { - month = 12; - year--; - } - - if (month > 12) { - month = 1; - year++; - } - mdy_to_julian(); - return *this; -} - -wxDate& wxDate::AddYears(int nCount) -{ - year += nCount; - mdy_to_julian(); - return *this; -} - -int wxDate::GetWeekOfMonth() -{ - // Abs day includes the days from previous month that fills up - // the begin. of the week. - int nAbsDay = day + GetFirstDayOfMonth()-1; - return (nAbsDay-GetDayOfWeek())/7 + 1; -} - -int wxDate::GetWeekOfYear() -{ - wxDate doTemp(1, 1, year); - return (int)(((julian - doTemp.julian+1)/7) + 1); -} - -wxDate wxDate::GetMonthStart() -{ - return(wxDate(month, 1, year)); -} - -wxDate wxDate::GetMonthEnd() -{ - return(wxDate(month+1, 1, year)-1); -} - -wxDate wxDate::GetYearStart() -{ - return(wxDate(1, 1, year)); -} - -wxDate wxDate::GetYearEnd() -{ - return(wxDate(1, 1, year+1)-1); -} - -wxString wxDate::GetMonthName() -{ - return(FormatDate(wxMONTH)); -} - -wxString wxDate::GetDayOfWeekName() -{ - return(FormatDate(wxDAY)); -} - -bool wxDate::IsBetween(const wxDate& first, const wxDate& second) const -{ - return (julian >= first.julian && julian <= second.julian); -} - -// This function is from NIHCL -wxDate wxDate::Previous(int dayOfWeek) const -{ - int this_day_Of_Week, desired_day_Of_Week; - long j; - -// Set the desired and current day of week to start at 0 (Monday) -// and end at 6 (Sunday). - - desired_day_Of_Week = dayOfWeek - 1; // These functions return a value - this_day_Of_Week = GetDayOfWeek() - 1; // from 1-7. Subtract 1 for 0-6. - j = julian; - -// Have to determine how many days difference from current day back to -// desired, if any. Special calculation under the 'if' statement to -// effect the wraparound counting from Monday (0) back to Sunday (6). - - if (desired_day_Of_Week > this_day_Of_Week) - this_day_Of_Week += 7 - desired_day_Of_Week; - else - this_day_Of_Week -= desired_day_Of_Week; - j -= this_day_Of_Week; // Adjust j to set it at the desired day of week. - return wxDate(j); -} - -#endif diff --git a/src/common/datstrm.cpp b/src/common/datstrm.cpp deleted file mode 100644 index d455a6dc4e..0000000000 --- a/src/common/datstrm.cpp +++ /dev/null @@ -1,202 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: datstrm.cpp -// Purpose: Data stream classes -// Author: Guilhem Lavaux -// Modified by: -// Created: 28/06/98 -// RCS-ID: $Id$ -// Copyright: (c) Guilhem Lavaux -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "datstrm.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/defs.h" -#endif - -#include "wx/datstrm.h" - -// --------------------------------------------------------------------------- -// wxDataInputStream -// --------------------------------------------------------------------------- - -wxDataInputStream::wxDataInputStream(wxInputStream& s) - : wxFilterInputStream(s) -{ -} - -wxDataInputStream::~wxDataInputStream() -{ -} - -unsigned long wxDataInputStream::Read32() -{ - char buf[4]; - - Read(buf, 4); - - return (unsigned long)buf[0] | - ((unsigned long)buf[1] << 8) | - ((unsigned long)buf[2] << 16) | - ((unsigned long)buf[3] << 24); -} - -unsigned short wxDataInputStream::Read16() -{ - char buf[2]; - - Read(buf, 2); - - return (unsigned short)buf[0] | - ((unsigned short)buf[1] << 8); -} - -unsigned char wxDataInputStream::Read8() -{ - char buf; - - Read(&buf, 1); - return (unsigned char)buf; -} - -// Must be at global scope for VC++ 5 -extern "C" double ConvertFromIeeeExtended(const unsigned char *bytes); - -double wxDataInputStream::ReadDouble() -{ -#if wxUSE_APPLE_IEEE - char buf[10]; - - Read(buf, 10); - return ConvertFromIeeeExtended((unsigned char *)buf); -#else - return 0.0; -#endif -} - -wxString wxDataInputStream::ReadLine() -{ - char c, last_endl = 0; - bool end_line = FALSE; - wxString line; - - while (!end_line) { - c = GetC(); - switch (c) { - case '\n': - end_line = TRUE; - break; - case '\r': - last_endl = '\r'; - break; - default: - if (last_endl == '\r') { - end_line = TRUE; - InputStreamBuffer()->WriteBack(c); - break; - } - line += c; - break; - } - } - return line; -} - -wxString wxDataInputStream::ReadString() -{ - wxString wx_string; - char *string; - unsigned long len; - - len = Read32(); - string = new char[len+1]; - - Read(string, len); - - string[len] = 0; - wx_string = string; - delete string; - - return wx_string; -} - -// --------------------------------------------------------------------------- -// wxDataOutputStream -// --------------------------------------------------------------------------- - -wxDataOutputStream::wxDataOutputStream(wxOutputStream& s) - : wxFilterOutputStream(s) -{ -} - -wxDataOutputStream::~wxDataOutputStream() -{ -} - -void wxDataOutputStream::Write32(unsigned long i) -{ - char buf[4]; - - buf[0] = i & 0xff; - buf[1] = (i >> 8) & 0xff; - buf[2] = (i >> 16) & 0xff; - buf[3] = (i >> 24) & 0xff; - Write(buf, 4); -} - -void wxDataOutputStream::Write16(unsigned short i) -{ - char buf[2]; - - buf[0] = i & 0xff; - buf[1] = (i >> 8) & 0xff; - Write(buf, 2); -} - -void wxDataOutputStream::Write8(unsigned char i) -{ - Write(&i, 1); -} - -void wxDataOutputStream::WriteLine(const wxString& line) -{ -#ifdef __WXMSW__ - wxString tmp_string = line + "\r\n"; -#else - wxString tmp_string = line + '\n'; -#endif - - Write((const char *) tmp_string, tmp_string.Length()); -} - -void wxDataOutputStream::WriteString(const wxString& string) -{ - Write32(string.Length()); - Write((const char *) string, string.Length()); -} - -// Must be at global scope for VC++ 5 -extern "C" void ConvertToIeeeExtended(double num, unsigned char *bytes); - -void wxDataOutputStream::WriteDouble(double d) -{ - char buf[10]; - -#if wxUSE_APPLE_IEEE - ConvertToIeeeExtended(d, (unsigned char *)buf); -#else -# pragma warning "wxDataStream::WriteDouble() not using IeeeExtended - will not work!" - buf[0] = '\0'; -#endif - Write(buf, 10); -} diff --git a/src/common/db.cpp b/src/common/db.cpp deleted file mode 100644 index 0096ce8eb3..0000000000 --- a/src/common/db.cpp +++ /dev/null @@ -1,1485 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: db.cpp -// Purpose: Implementation of the wxDB class. The wxDB class represents a connection -// to an ODBC data source. The wxDB class allows operations on the data -// source such as opening and closing the data source. -// Author: Doug Card -// Modified by: -// Mods: Dec, 1998: Added support for SQL statement logging and database -// cataloging -// Created: 9.96 -// RCS-ID: $Id$ -// Copyright: (c) 1996 Remstar International, Inc. -// Licence: wxWindows licence, plus: -// Notice: This class library and its intellectual design are free of charge for use, -// modification, enhancement, debugging under the following conditions: -// 1) These classes may only be used as part of the implementation of a -// wxWindows-based application -// 2) All enhancements and bug fixes are to be submitted back to the wxWindows -// user groups free of all charges for use with the wxWindows library. -// 3) These classes may not be distributed as part of any other class library, -// DLL, text (written or electronic), other than a complete distribution of -// the wxWindows GUI development toolkit. -/////////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "db.h" -#endif - -/* -// SYNOPSIS START -// SYNOPSIS STOP -*/ - -/* -#ifdef DBDEBUG_CONSOLE - #include -#endif -*/ - -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ - #pragma hdrstop -#endif //__BORLANDC__ - -#ifndef WX_PRECOMP - #include -#endif //WX_PRECOMP - -#if wxUSE_ODBC - -#include -#include -#include -#include -#include -#include "wx/db.h" - -DbList* WXDLLEXPORT PtrBegDbList = 0; - -/********** wxDB Constructor **********/ -wxDB::wxDB(HENV &aHenv) -{ - int i; - - fpSqlLog = 0; // Sql Log file pointer - sqlLogState = sqlLogOFF; // By default, logging is turned off - - strcpy(sqlState,""); - strcpy(errorMsg,""); - nativeError = cbErrorMsg = 0; - for (i = 0; i < DB_MAX_ERROR_HISTORY; i++) - strcpy(errorList[i], ""); - - // Init typeInf structures - strcpy(typeInfVarchar.TypeName,""); - typeInfVarchar.FsqlType = 0; - typeInfVarchar.Precision = 0; - typeInfVarchar.CaseSensitive = 0; - typeInfVarchar.MaximumScale = 0; - - strcpy(typeInfInteger.TypeName,""); - typeInfInteger.FsqlType = 0; - typeInfInteger.Precision = 0; - typeInfInteger.CaseSensitive = 0; - typeInfInteger.MaximumScale = 0; - - strcpy(typeInfFloat.TypeName,""); - typeInfFloat.FsqlType = 0; - typeInfFloat.Precision = 0; - typeInfFloat.CaseSensitive = 0; - typeInfFloat.MaximumScale = 0; - - strcpy(typeInfDate.TypeName,""); - typeInfDate.FsqlType = 0; - typeInfDate.Precision = 0; - typeInfDate.CaseSensitive = 0; - typeInfDate.MaximumScale = 0; - - // Error reporting is turned OFF by default - silent = TRUE; - - // Copy the HENV into the db class - henv = aHenv; - - // Allocate a data source connection handle - if (SQLAllocConnect(henv, &hdbc) != SQL_SUCCESS) - DispAllErrors(henv); - - // Initialize the db status flag - DB_STATUS = 0; - - // Mark database as not open as of yet - dbIsOpen = FALSE; - -} // wxDB::wxDB() - -/********** wxDB::Open() **********/ -bool wxDB::Open(char *Dsn, char *Uid, char *AuthStr) -{ - assert(Dsn && strlen(Dsn)); - dsn = Dsn; - uid = Uid; - authStr = AuthStr; - -#ifndef FWD_ONLY_CURSORS - - RETCODE retcode; - - // Specify that the ODBC cursor library be used, if needed. This must be - // specified before the connection is made. - retcode = SQLSetConnectOption(hdbc, SQL_ODBC_CURSORS, SQL_CUR_USE_IF_NEEDED); - - #ifdef DBDEBUG_CONSOLE - if (retcode == SQL_SUCCESS) - cout << "SQLSetConnectOption(CURSOR_LIB) successful" << endl; - else - cout << "SQLSetConnectOption(CURSOR_LIB) failed" << endl; - #endif - -#endif - - // Connect to the data source - if (SQLConnect(hdbc, (UCHAR FAR *) Dsn, SQL_NTS, - (UCHAR FAR *) Uid, SQL_NTS, - (UCHAR FAR *) AuthStr, SQL_NTS) != SQL_SUCCESS) - return(DispAllErrors(henv, hdbc)); - - // Mark database as open - dbIsOpen = TRUE; - - // Allocate a statement handle for the database connection - if (SQLAllocStmt(hdbc, &hstmt) != SQL_SUCCESS) - return(DispAllErrors(henv, hdbc)); - - // Set Connection Options - if (! setConnectionOptions()) - return(FALSE); - - // Query the data source for inf. about itself - if (! getDbInfo()) - return(FALSE); - - // Query the data source regarding data type information - - // - // The way I determined which SQL data types to use was by calling SQLGetInfo - // for all of the possible SQL data types to see which ones were supported. If - // a type is not supported, the SQLFetch() that's called from getDataTypeInfo() - // fails with SQL_NO_DATA_FOUND. This is ugly because I'm sure the three SQL data - // types I've selected below will not alway's be what we want. These are just - // what happened to work against an Oracle 7/Intersolv combination. The following is - // a complete list of the results I got back against the Oracle 7 database: - // - // SQL_BIGINT SQL_NO_DATA_FOUND - // SQL_BINARY SQL_NO_DATA_FOUND - // SQL_BIT SQL_NO_DATA_FOUND - // SQL_CHAR type name = 'CHAR', Precision = 255 - // SQL_DATE SQL_NO_DATA_FOUND - // SQL_DECIMAL type name = 'NUMBER', Precision = 38 - // SQL_DOUBLE type name = 'NUMBER', Precision = 15 - // SQL_FLOAT SQL_NO_DATA_FOUND - // SQL_INTEGER SQL_NO_DATA_FOUND - // SQL_LONGVARBINARY type name = 'LONG RAW', Precision = 2 billion - // SQL_LONGVARCHAR type name = 'LONG', Precision = 2 billion - // SQL_NUMERIC SQL_NO_DATA_FOUND - // SQL_REAL SQL_NO_DATA_FOUND - // SQL_SMALLINT SQL_NO_DATA_FOUND - // SQL_TIME SQL_NO_DATA_FOUND - // SQL_TIMESTAMP type name = 'DATE', Precision = 19 - // SQL_VARBINARY type name = 'RAW', Precision = 255 - // SQL_VARCHAR type name = 'VARCHAR2', Precision = 2000 - // ===================================================================== - // Results from a Microsoft Access 7.0 db, using a driver from Microsoft - // - // SQL_VARCHAR type name = 'TEXT', Precision = 255 - // SQL_TIMESTAMP type name = 'DATETIME' - // SQL_DECIMAL SQL_NO_DATA_FOUND - // SQL_NUMERIC type name = 'CURRENCY', Precision = 19 - // SQL_FLOAT SQL_NO_DATA_FOUND - // SQL_REAL type name = 'SINGLE', Precision = 7 - // SQL_DOUBLE type name = 'DOUBLE', Precision = 15 - // SQL_INTEGER type name = 'LONG', Precision = 10 - - // VARCHAR = Variable length character string - if (! getDataTypeInfo(SQL_VARCHAR, typeInfVarchar)) - if (! getDataTypeInfo(SQL_CHAR, typeInfVarchar)) - return(FALSE); - else - typeInfVarchar.FsqlType = SQL_CHAR; - else - typeInfVarchar.FsqlType = SQL_VARCHAR; - - // Float - if (! getDataTypeInfo(SQL_DOUBLE, typeInfFloat)) - if (! getDataTypeInfo(SQL_REAL, typeInfFloat)) - if (! getDataTypeInfo(SQL_FLOAT, typeInfFloat)) - if (! getDataTypeInfo(SQL_DECIMAL, typeInfFloat)) - if (! getDataTypeInfo(SQL_NUMERIC, typeInfFloat)) - return(FALSE); - else - typeInfFloat.FsqlType = SQL_NUMERIC; - else - typeInfFloat.FsqlType = SQL_DECIMAL; - else - typeInfFloat.FsqlType = SQL_FLOAT; - else - typeInfFloat.FsqlType = SQL_REAL; - else - typeInfFloat.FsqlType = SQL_DOUBLE; - - // Integer - if (! getDataTypeInfo(SQL_INTEGER, typeInfInteger)) - // If SQL_INTEGER is not supported, use the floating point - // data type to store integers as well as floats - if (! getDataTypeInfo(typeInfFloat.FsqlType, typeInfInteger)) - return(FALSE); - else - typeInfInteger.FsqlType = typeInfFloat.FsqlType; - else - typeInfInteger.FsqlType = SQL_INTEGER; - - // Date/Time - if (! getDataTypeInfo(SQL_TIMESTAMP, typeInfDate)) - return(FALSE); - else - typeInfDate.FsqlType = SQL_TIMESTAMP; - -#ifdef DBDEBUG_CONSOLE - cout << "VARCHAR DATA TYPE: " << typeInfVarchar.TypeName << endl; - cout << "INTEGER DATA TYPE: " << typeInfInteger.TypeName << endl; - cout << "FLOAT DATA TYPE: " << typeInfFloat.TypeName << endl; - cout << "DATE DATA TYPE: " << typeInfDate.TypeName << endl; - cout << endl; -#endif - - // Completed Successfully - return(TRUE); - -} // wxDB::Open() - -// The Intersolv/Oracle 7 driver was "Not Capable" of setting the login timeout. - -/********** wxDB::setConnectionOptions() **********/ -bool wxDB::setConnectionOptions(void) -{ - SQLSetConnectOption(hdbc, SQL_AUTOCOMMIT, SQL_AUTOCOMMIT_OFF); - SQLSetConnectOption(hdbc, SQL_OPT_TRACE, SQL_OPT_TRACE_OFF); - - // Display the connection options to verify them -#ifdef DBDEBUG_CONSOLE - long l; - cout << ">>>>> CONNECTION OPTIONS <<<<<<" << endl; - - if (SQLGetConnectOption(hdbc, SQL_AUTOCOMMIT, &l) != SQL_SUCCESS) - return(DispAllErrors(henv, hdbc)); - cout << "AUTOCOMMIT: " << (l == SQL_AUTOCOMMIT_OFF ? "OFF" : "ON") << endl; - - if (SQLGetConnectOption(hdbc, SQL_ODBC_CURSORS, &l) != SQL_SUCCESS) - return(DispAllErrors(henv, hdbc)); - cout << "ODBC CURSORS: "; - switch(l) - { - case(SQL_CUR_USE_IF_NEEDED): - cout << "SQL_CUR_USE_IF_NEEDED"; - break; - case(SQL_CUR_USE_ODBC): - cout << "SQL_CUR_USE_ODBC"; - break; - case(SQL_CUR_USE_DRIVER): - cout << "SQL_CUR_USE_DRIVER"; - break; - } - cout << endl; - - if (SQLGetConnectOption(hdbc, SQL_OPT_TRACE, &l) != SQL_SUCCESS) - return(DispAllErrors(henv, hdbc)); - cout << "TRACING: " << (l == SQL_OPT_TRACE_OFF ? "OFF" : "ON") << endl; - - cout << endl; -#endif - - // Completed Successfully - return(TRUE); - -} // wxDB::setConnectionOptions() - -/********** wxDB::getDbInfo() **********/ -bool wxDB::getDbInfo(void) -{ - SWORD cb; - - if (SQLGetInfo(hdbc, SQL_SERVER_NAME, (UCHAR*) dbInf.serverName, 40, &cb) != SQL_SUCCESS) - return(DispAllErrors(henv, hdbc)); - - if (SQLGetInfo(hdbc, SQL_DATABASE_NAME, (UCHAR*) dbInf.databaseName, 128, &cb) != SQL_SUCCESS) - return(DispAllErrors(henv, hdbc)); - - if (SQLGetInfo(hdbc, SQL_DBMS_NAME, (UCHAR*) dbInf.dbmsName, 40, &cb) != SQL_SUCCESS) - return(DispAllErrors(henv, hdbc)); - - if (SQLGetInfo(hdbc, SQL_DBMS_VER, (UCHAR*) dbInf.dbmsVer, 40, &cb) != SQL_SUCCESS) - return(DispAllErrors(henv, hdbc)); - - if (SQLGetInfo(hdbc, SQL_ACTIVE_CONNECTIONS, (UCHAR*) &dbInf.maxConnections, sizeof(dbInf.maxConnections), &cb) != SQL_SUCCESS) - return(DispAllErrors(henv, hdbc)); - - if (SQLGetInfo(hdbc, SQL_ACTIVE_STATEMENTS, (UCHAR*) &dbInf.maxStmts, sizeof(dbInf.maxStmts), &cb) != SQL_SUCCESS) - return(DispAllErrors(henv, hdbc)); - - if (SQLGetInfo(hdbc, SQL_DRIVER_NAME, (UCHAR*) dbInf.driverName, 40, &cb) != SQL_SUCCESS) - return(DispAllErrors(henv, hdbc)); - - if (SQLGetInfo(hdbc, SQL_DRIVER_ODBC_VER, (UCHAR*) dbInf.odbcVer, 60, &cb) == SQL_ERROR) - return(DispAllErrors(henv, hdbc)); - - if (SQLGetInfo(hdbc, SQL_ODBC_VER, (UCHAR*) dbInf.drvMgrOdbcVer, 60, &cb) == SQL_ERROR) - return(DispAllErrors(henv, hdbc)); - - if (SQLGetInfo(hdbc, SQL_DRIVER_VER, (UCHAR*) dbInf.driverVer, 60, &cb) == SQL_ERROR) - return(DispAllErrors(henv, hdbc)); - - if (SQLGetInfo(hdbc, SQL_ODBC_API_CONFORMANCE, (UCHAR*) &dbInf.apiConfLvl, sizeof(dbInf.apiConfLvl), &cb) != SQL_SUCCESS) - return(DispAllErrors(henv, hdbc)); - - if (SQLGetInfo(hdbc, SQL_ODBC_SAG_CLI_CONFORMANCE, (UCHAR*) &dbInf.cliConfLvl, sizeof(dbInf.cliConfLvl), &cb) != SQL_SUCCESS) - return(DispAllErrors(henv, hdbc)); - - if (SQLGetInfo(hdbc, SQL_ODBC_SQL_CONFORMANCE, (UCHAR*) &dbInf.sqlConfLvl, sizeof(dbInf.sqlConfLvl), &cb) != SQL_SUCCESS) - return(DispAllErrors(henv, hdbc)); - - if (SQLGetInfo(hdbc, SQL_OUTER_JOINS, (UCHAR*) dbInf.outerJoins, 2, &cb) != SQL_SUCCESS) - return(DispAllErrors(henv, hdbc)); - - if (SQLGetInfo(hdbc, SQL_PROCEDURES, (UCHAR*) dbInf.procedureSupport, 2, &cb) != SQL_SUCCESS) - return(DispAllErrors(henv, hdbc)); - - if (SQLGetInfo(hdbc, SQL_CURSOR_COMMIT_BEHAVIOR, (UCHAR*) &dbInf.cursorCommitBehavior, sizeof(dbInf.cursorCommitBehavior), &cb) != SQL_SUCCESS) - return(DispAllErrors(henv, hdbc)); - - if (SQLGetInfo(hdbc, SQL_CURSOR_ROLLBACK_BEHAVIOR, (UCHAR*) &dbInf.cursorRollbackBehavior, sizeof(dbInf.cursorRollbackBehavior), &cb) != SQL_SUCCESS) - return(DispAllErrors(henv, hdbc)); - - if (SQLGetInfo(hdbc, SQL_NON_NULLABLE_COLUMNS, (UCHAR*) &dbInf.supportNotNullClause, sizeof(dbInf.supportNotNullClause), &cb) != SQL_SUCCESS) - return(DispAllErrors(henv, hdbc)); - - if (SQLGetInfo(hdbc, SQL_ODBC_SQL_OPT_IEF, (UCHAR*) dbInf.supportIEF, 2, &cb) != SQL_SUCCESS) - return(DispAllErrors(henv, hdbc)); - - if (SQLGetInfo(hdbc, SQL_DEFAULT_TXN_ISOLATION, (UCHAR*) &dbInf.txnIsolation, sizeof(dbInf.txnIsolation), &cb) != SQL_SUCCESS) - return(DispAllErrors(henv, hdbc)); - - if (SQLGetInfo(hdbc, SQL_TXN_ISOLATION_OPTION, (UCHAR*) &dbInf.txnIsolationOptions, sizeof(dbInf.txnIsolationOptions), &cb) != SQL_SUCCESS) - return(DispAllErrors(henv, hdbc)); - - if (SQLGetInfo(hdbc, SQL_FETCH_DIRECTION, (UCHAR*) &dbInf.fetchDirections, sizeof(dbInf.fetchDirections), &cb) != SQL_SUCCESS) - return(DispAllErrors(henv, hdbc)); - - if (SQLGetInfo(hdbc, SQL_LOCK_TYPES, (UCHAR*) &dbInf.lockTypes, sizeof(dbInf.lockTypes), &cb) != SQL_SUCCESS) - return(DispAllErrors(henv, hdbc)); - - if (SQLGetInfo(hdbc, SQL_POS_OPERATIONS, (UCHAR*) &dbInf.posOperations, sizeof(dbInf.posOperations), &cb) != SQL_SUCCESS) - return(DispAllErrors(henv, hdbc)); - - if (SQLGetInfo(hdbc, SQL_POSITIONED_STATEMENTS, (UCHAR*) &dbInf.posStmts, sizeof(dbInf.posStmts), &cb) != SQL_SUCCESS) - return(DispAllErrors(henv, hdbc)); - - if (SQLGetInfo(hdbc, SQL_SCROLL_CONCURRENCY, (UCHAR*) &dbInf.scrollConcurrency, sizeof(dbInf.scrollConcurrency), &cb) != SQL_SUCCESS) - return(DispAllErrors(henv, hdbc)); - - if (SQLGetInfo(hdbc, SQL_SCROLL_OPTIONS, (UCHAR*) &dbInf.scrollOptions, sizeof(dbInf.scrollOptions), &cb) != SQL_SUCCESS) - return(DispAllErrors(henv, hdbc)); - - if (SQLGetInfo(hdbc, SQL_STATIC_SENSITIVITY, (UCHAR*) &dbInf.staticSensitivity, sizeof(dbInf.staticSensitivity), &cb) != SQL_SUCCESS) - return(DispAllErrors(henv, hdbc)); - - if (SQLGetInfo(hdbc, SQL_TXN_CAPABLE, (UCHAR*) &dbInf.txnCapable, sizeof(dbInf.txnCapable), &cb) != SQL_SUCCESS) - return(DispAllErrors(henv, hdbc)); - - if (SQLGetInfo(hdbc, SQL_LOGIN_TIMEOUT, (UCHAR*) &dbInf.loginTimeout, sizeof(dbInf.loginTimeout), &cb) != SQL_SUCCESS) - return(DispAllErrors(henv, hdbc)); - -#ifdef DBDEBUG_CONSOLE - cout << ">>>>> DATA SOURCE INFORMATION <<<<<" << endl; - cout << "SERVER Name: " << dbInf.serverName << endl; - cout << "DBMS Name: " << dbInf.dbmsName << "; DBMS Version: " << dbInf.dbmsVer << endl; - cout << "ODBC Version: " << dbInf.odbcVer << "; Driver Version: " << dbInf.driverVer << endl; - - cout << "API Conf. Level: "; - switch(dbInf.apiConfLvl) - { - case SQL_OAC_NONE: cout << "None"; break; - case SQL_OAC_LEVEL1: cout << "Level 1"; break; - case SQL_OAC_LEVEL2: cout << "Level 2"; break; - } - cout << endl; - - cout << "SAG CLI Conf. Level: "; - switch(dbInf.cliConfLvl) - { - case SQL_OSCC_NOT_COMPLIANT: cout << "Not Compliant"; break; - case SQL_OSCC_COMPLIANT: cout << "Compliant"; break; - } - cout << endl; - - cout << "SQL Conf. Level: "; - switch(dbInf.sqlConfLvl) - { - case SQL_OSC_MINIMUM: cout << "Minimum Grammer"; break; - case SQL_OSC_CORE: cout << "Core Grammer"; break; - case SQL_OSC_EXTENDED: cout << "Extended Grammer"; break; - } - cout << endl; - - cout << "Max. Connections: " << dbInf.maxConnections << endl; - cout << "Outer Joins: " << dbInf.outerJoins << endl; - cout << "Support for Procedures: " << dbInf.procedureSupport << endl; - - cout << "Cursor COMMIT Behavior: "; - switch(dbInf.cursorCommitBehavior) - { - case SQL_CB_DELETE: cout << "Delete cursors"; break; - case SQL_CB_CLOSE: cout << "Close cursors"; break; - case SQL_CB_PRESERVE: cout << "Preserve cursors"; break; - } - cout << endl; - - cout << "Cursor ROLLBACK Behavior: "; - switch(dbInf.cursorRollbackBehavior) - { - case SQL_CB_DELETE: cout << "Delete cursors"; break; - case SQL_CB_CLOSE: cout << "Close cursors"; break; - case SQL_CB_PRESERVE: cout << "Preserve cursors"; break; - } - cout << endl; - - cout << "Support NOT NULL clause: "; - switch(dbInf.supportNotNullClause) - { - case SQL_NNC_NULL: cout << "No"; break; - case SQL_NNC_NON_NULL: cout << "Yes"; break; - } - cout << endl; - - cout << "Support IEF (Ref. Integrity): " << dbInf.supportIEF << endl; - cout << "Login Timeout: " << dbInf.loginTimeout << endl; - - cout << endl << endl << "more ..." << endl; - getchar(); - - cout << "Default Transaction Isolation: "; - switch(dbInf.txnIsolation) - { - case SQL_TXN_READ_UNCOMMITTED: cout << "Read Uncommitted"; break; - case SQL_TXN_READ_COMMITTED: cout << "Read Committed"; break; - case SQL_TXN_REPEATABLE_READ: cout << "Repeatable Read"; break; - case SQL_TXN_SERIALIZABLE: cout << "Serializable"; break; -#ifdef ODBC_V20 - case SQL_TXN_VERSIONING: cout << "Versioning"; break; -#endif - } - cout << endl; - - cout << "Transaction Isolation Options: "; - if (dbInf.txnIsolationOptions & SQL_TXN_READ_UNCOMMITTED) - cout << "Read Uncommitted, "; - if (dbInf.txnIsolationOptions & SQL_TXN_READ_COMMITTED) - cout << "Read Committed, "; - if (dbInf.txnIsolationOptions & SQL_TXN_REPEATABLE_READ) - cout << "Repeatable Read, "; - if (dbInf.txnIsolationOptions & SQL_TXN_SERIALIZABLE) - cout << "Serializable, "; -#ifdef ODBC_V20 - if (dbInf.txnIsolationOptions & SQL_TXN_VERSIONING) - cout << "Versioning"; -#endif - cout << endl; - - cout << "Fetch Directions Supported:" << endl << " "; - if (dbInf.fetchDirections & SQL_FD_FETCH_NEXT) - cout << "Next, "; - if (dbInf.fetchDirections & SQL_FD_FETCH_PRIOR) - cout << "Prev, "; - if (dbInf.fetchDirections & SQL_FD_FETCH_FIRST) - cout << "First, "; - if (dbInf.fetchDirections & SQL_FD_FETCH_LAST) - cout << "Last, "; - if (dbInf.fetchDirections & SQL_FD_FETCH_ABSOLUTE) - cout << "Absolute, "; - if (dbInf.fetchDirections & SQL_FD_FETCH_RELATIVE) - cout << "Relative, "; -#ifdef ODBC_V20 - if (dbInf.fetchDirections & SQL_FD_FETCH_RESUME) - cout << "Resume, "; -#endif - if (dbInf.fetchDirections & SQL_FD_FETCH_BOOKMARK) - cout << "Bookmark"; - cout << endl; - - cout << "Lock Types Supported (SQLSetPos): "; - if (dbInf.lockTypes & SQL_LCK_NO_CHANGE) - cout << "No Change, "; - if (dbInf.lockTypes & SQL_LCK_EXCLUSIVE) - cout << "Exclusive, "; - if (dbInf.lockTypes & SQL_LCK_UNLOCK) - cout << "UnLock"; - cout << endl; - - cout << "Position Operations Supported (SQLSetPos): "; - if (dbInf.posOperations & SQL_POS_POSITION) - cout << "Position, "; - if (dbInf.posOperations & SQL_POS_REFRESH) - cout << "Refresh, "; - if (dbInf.posOperations & SQL_POS_UPDATE) - cout << "Upd, "; - if (dbInf.posOperations & SQL_POS_DELETE) - cout << "Del, "; - if (dbInf.posOperations & SQL_POS_ADD) - cout << "Add"; - cout << endl; - - cout << "Positioned Statements Supported: "; - if (dbInf.posStmts & SQL_PS_POSITIONED_DELETE) - cout << "Pos delete, "; - if (dbInf.posStmts & SQL_PS_POSITIONED_UPDATE) - cout << "Pos update, "; - if (dbInf.posStmts & SQL_PS_SELECT_FOR_UPDATE) - cout << "Select for update"; - cout << endl; - - cout << "Scroll Concurrency: "; - if (dbInf.scrollConcurrency & SQL_SCCO_READ_ONLY) - cout << "Read Only, "; - if (dbInf.scrollConcurrency & SQL_SCCO_LOCK) - cout << "Lock, "; - if (dbInf.scrollConcurrency & SQL_SCCO_OPT_ROWVER) - cout << "Opt. Rowver, "; - if (dbInf.scrollConcurrency & SQL_SCCO_OPT_VALUES) - cout << "Opt. Values"; - cout << endl; - - cout << "Scroll Options: "; - if (dbInf.scrollOptions & SQL_SO_FORWARD_ONLY) - cout << "Fwd Only, "; - if (dbInf.scrollOptions & SQL_SO_STATIC) - cout << "Static, "; - if (dbInf.scrollOptions & SQL_SO_KEYSET_DRIVEN) - cout << "Keyset Driven, "; - if (dbInf.scrollOptions & SQL_SO_DYNAMIC) - cout << "Dynamic, "; - if (dbInf.scrollOptions & SQL_SO_MIXED) - cout << "Mixed"; - cout << endl; - - cout << "Static Sensitivity: "; - if (dbInf.staticSensitivity & SQL_SS_ADDITIONS) - cout << "Additions, "; - if (dbInf.staticSensitivity & SQL_SS_DELETIONS) - cout << "Deletions, "; - if (dbInf.staticSensitivity & SQL_SS_UPDATES) - cout << "Updates"; - cout << endl; - - cout << "Transaction Capable?: "; - switch(dbInf.txnCapable) - { - case SQL_TC_NONE: cout << "No"; break; - case SQL_TC_DML: cout << "DML Only"; break; - case SQL_TC_DDL_COMMIT: cout << "DDL Commit"; break; - case SQL_TC_DDL_IGNORE: cout << "DDL Ignore"; break; - case SQL_TC_ALL: cout << "DDL & DML"; break; - } - cout << endl; - - cout << endl; - -#endif - - // Completed Successfully - return(TRUE); - -} // wxDB::getDbInfo() - -/********** wxDB::getDataTypeInfo() **********/ -bool wxDB::getDataTypeInfo(SWORD fSqlType, SqlTypeInfo &structSQLTypeInfo) -{ - // fSqlType will be something like SQL_VARCHAR. This parameter determines - // the data type inf. is gathered for. - // - // SqlTypeInfo is a structure that is filled in with data type information, - - RETCODE retcode; - SDWORD cbRet; - - // Get information about the data type specified - if (SQLGetTypeInfo(hstmt, fSqlType) != SQL_SUCCESS) - return(DispAllErrors(henv, hdbc, hstmt)); - // Fetch the record - if ((retcode = SQLFetch(hstmt)) != SQL_SUCCESS) - { -#ifdef DBDEBUG_CONSOLE - if (retcode == SQL_NO_DATA_FOUND) - cout << "SQL_NO_DATA_FOUND fetching inf. about data type." << endl; -#endif - DispAllErrors(henv, hdbc, hstmt); - SQLFreeStmt(hstmt, SQL_CLOSE); - return(FALSE); - } - // Obtain columns from the record - if (SQLGetData(hstmt, 1, SQL_C_CHAR, (UCHAR*) structSQLTypeInfo.TypeName, DB_TYPE_NAME_LEN, &cbRet) != SQL_SUCCESS) - return(DispAllErrors(henv, hdbc, hstmt)); - if (SQLGetData(hstmt, 3, SQL_C_LONG, (UCHAR*) &structSQLTypeInfo.Precision, 0, &cbRet) != SQL_SUCCESS) - return(DispAllErrors(henv, hdbc, hstmt)); - if (SQLGetData(hstmt, 8, SQL_C_SHORT, (UCHAR*) &structSQLTypeInfo.CaseSensitive, 0, &cbRet) != SQL_SUCCESS) - return(DispAllErrors(henv, hdbc, hstmt)); -// if (SQLGetData(hstmt, 14, SQL_C_SHORT, (UCHAR*) &structSQLTypeInfo.MinimumScale, 0, &cbRet) != SQL_SUCCESS) -// return(DispAllErrors(henv, hdbc, hstmt)); - if (SQLGetData(hstmt, 15, SQL_C_SHORT, (UCHAR*) &structSQLTypeInfo.MaximumScale, 0, &cbRet) != SQL_SUCCESS) - return(DispAllErrors(henv, hdbc, hstmt)); - - if (structSQLTypeInfo.MaximumScale < 0) - structSQLTypeInfo.MaximumScale = 0; - - // Close the statement handle which closes open cursors - if (SQLFreeStmt(hstmt, SQL_CLOSE) != SQL_SUCCESS) - return(DispAllErrors(henv, hdbc, hstmt)); - - // Completed Successfully - return(TRUE); - -} // wxDB::getDataTypeInfo() - -/********** wxDB::Close() **********/ -void wxDB::Close(void) -{ - // Close the Sql Log file - if (fpSqlLog) - { - fclose(fpSqlLog); - fpSqlLog = 0; //glt - } - - // Free statement handle - if (dbIsOpen) - { - if (SQLFreeStmt(hstmt, SQL_DROP) != SQL_SUCCESS) - DispAllErrors(henv, hdbc); - } - - // Disconnect from the datasource - if (SQLDisconnect(hdbc) != SQL_SUCCESS) - DispAllErrors(henv, hdbc); - - // Free the connection to the datasource - if (SQLFreeConnect(hdbc) != SQL_SUCCESS) - DispAllErrors(henv, hdbc); - -} // wxDB::Close() - -/********** wxDB::CommitTrans() **********/ -bool wxDB::CommitTrans(void) -{ - // Commit the transaction - if (SQLTransact(henv, hdbc, SQL_COMMIT) != SQL_SUCCESS) - return(DispAllErrors(henv, hdbc)); - - // Completed successfully - return(TRUE); - -} // wxDB::CommitTrans() - -/********** wxDB::RollbackTrans() **********/ -bool wxDB::RollbackTrans(void) -{ - // Rollback the transaction - if (SQLTransact(henv, hdbc, SQL_ROLLBACK) != SQL_SUCCESS) - return(DispAllErrors(henv, hdbc)); - - // Completed successfully - return(TRUE); - -} // wxDB::RollbackTrans() - -/********** wxDB::DispAllErrors() **********/ -bool wxDB::DispAllErrors(HENV aHenv, HDBC aHdbc, HSTMT aHstmt) -{ - char odbcErrMsg[DB_MAX_ERROR_MSG_LEN]; - - while (SQLError(aHenv, aHdbc, aHstmt, (UCHAR FAR *) sqlState, &nativeError, (UCHAR FAR *) errorMsg, SQL_MAX_MESSAGE_LENGTH - 1, &cbErrorMsg) == SQL_SUCCESS) - { - sprintf(odbcErrMsg, "SQL State = %s\nNative Error Code = %li\nError Message = %s\n", sqlState, nativeError, errorMsg); - logError(odbcErrMsg, sqlState); - if (!silent) - { -#ifdef DBDEBUG_CONSOLE - // When run in console mode, use standard out to display errors. - cout << odbcErrMsg << endl; - cout << "Press any key to continue..." << endl; - getchar(); -#endif - } - } - - return(FALSE); // This function alway's returns false. - -} // wxDB::DispAllErrors() - -/********** wxDB::GetNextError() **********/ -bool wxDB::GetNextError(HENV aHenv, HDBC aHdbc, HSTMT aHstmt) -{ - if (SQLError(aHenv, aHdbc, aHstmt, (UCHAR FAR *) sqlState, &nativeError, (UCHAR FAR *) errorMsg, SQL_MAX_MESSAGE_LENGTH - 1, &cbErrorMsg) == SQL_SUCCESS) - return(TRUE); - else - return(FALSE); - -} // wxDB::GetNextError() - -/********** wxDB::DispNextError() **********/ -void wxDB::DispNextError(void) -{ - char odbcErrMsg[DB_MAX_ERROR_MSG_LEN]; - - sprintf(odbcErrMsg, "SQL State = %s\nNative Error Code = %li\nError Message = %s\n", sqlState, nativeError, errorMsg); - logError(odbcErrMsg, sqlState); - - if (silent) - return; - -#ifdef DBDEBUG_CONSOLE - // When run in console mode, use standard out to display errors. - cout << odbcErrMsg << endl; - cout << "Press any key to continue..." << endl; - getchar(); -#endif - -} // wxDB::DispNextError() - -/********** wxDB::logError() **********/ -void wxDB::logError(char *errMsg, char *SQLState) -{ - assert(errMsg && strlen(errMsg)); - - static int pLast = -1; - int dbStatus; - - if (++pLast == DB_MAX_ERROR_HISTORY) - { - for (int i = 0; i < DB_MAX_ERROR_HISTORY; i++) - strcpy(errorList[i], errorList[i+1]); - pLast--; - } - - strcpy(errorList[pLast], errMsg); - - if (SQLState && strlen(SQLState)) - if ((dbStatus = TranslateSqlState(SQLState)) != DB_ERR_FUNCTION_SEQUENCE_ERROR) - DB_STATUS = dbStatus; - -} // wxDB::logError() - -/**********wxDB::TranslateSqlState() **********/ -int wxDB::TranslateSqlState(char *SQLState) -{ - if (!strcmp(SQLState, "01000")) - return(DB_ERR_GENERAL_WARNING); - if (!strcmp(SQLState, "01002")) - return(DB_ERR_DISCONNECT_ERROR); - if (!strcmp(SQLState, "01004")) - return(DB_ERR_DATA_TRUNCATED); - if (!strcmp(SQLState, "01006")) - return(DB_ERR_PRIV_NOT_REVOKED); - if (!strcmp(SQLState, "01S00")) - return(DB_ERR_INVALID_CONN_STR_ATTR); - if (!strcmp(SQLState, "01S01")) - return(DB_ERR_ERROR_IN_ROW); - if (!strcmp(SQLState, "01S02")) - return(DB_ERR_OPTION_VALUE_CHANGED); - if (!strcmp(SQLState, "01S03")) - return(DB_ERR_NO_ROWS_UPD_OR_DEL); - if (!strcmp(SQLState, "01S04")) - return(DB_ERR_MULTI_ROWS_UPD_OR_DEL); - if (!strcmp(SQLState, "07001")) - return(DB_ERR_WRONG_NO_OF_PARAMS); - if (!strcmp(SQLState, "07006")) - return(DB_ERR_DATA_TYPE_ATTR_VIOL); - if (!strcmp(SQLState, "08001")) - return(DB_ERR_UNABLE_TO_CONNECT); - if (!strcmp(SQLState, "08002")) - return(DB_ERR_CONNECTION_IN_USE); - if (!strcmp(SQLState, "08003")) - return(DB_ERR_CONNECTION_NOT_OPEN); - if (!strcmp(SQLState, "08004")) - return(DB_ERR_REJECTED_CONNECTION); - if (!strcmp(SQLState, "08007")) - return(DB_ERR_CONN_FAIL_IN_TRANS); - if (!strcmp(SQLState, "08S01")) - return(DB_ERR_COMM_LINK_FAILURE); - if (!strcmp(SQLState, "21S01")) - return(DB_ERR_INSERT_VALUE_LIST_MISMATCH); - if (!strcmp(SQLState, "21S02")) - return(DB_ERR_DERIVED_TABLE_MISMATCH); - if (!strcmp(SQLState, "22001")) - return(DB_ERR_STRING_RIGHT_TRUNC); - if (!strcmp(SQLState, "22003")) - return(DB_ERR_NUMERIC_VALUE_OUT_OF_RNG); - if (!strcmp(SQLState, "22005")) - return(DB_ERR_ERROR_IN_ASSIGNMENT); - if (!strcmp(SQLState, "22008")) - return(DB_ERR_DATETIME_FLD_OVERFLOW); - if (!strcmp(SQLState, "22012")) - return(DB_ERR_DIVIDE_BY_ZERO); - if (!strcmp(SQLState, "22026")) - return(DB_ERR_STR_DATA_LENGTH_MISMATCH); - if (!strcmp(SQLState, "23000")) - return(DB_ERR_INTEGRITY_CONSTRAINT_VIOL); - if (!strcmp(SQLState, "24000")) - return(DB_ERR_INVALID_CURSOR_STATE); - if (!strcmp(SQLState, "25000")) - return(DB_ERR_INVALID_TRANS_STATE); - if (!strcmp(SQLState, "28000")) - return(DB_ERR_INVALID_AUTH_SPEC); - if (!strcmp(SQLState, "34000")) - return(DB_ERR_INVALID_CURSOR_NAME); - if (!strcmp(SQLState, "37000")) - return(DB_ERR_SYNTAX_ERROR_OR_ACCESS_VIOL); - if (!strcmp(SQLState, "3C000")) - return(DB_ERR_DUPLICATE_CURSOR_NAME); - if (!strcmp(SQLState, "40001")) - return(DB_ERR_SERIALIZATION_FAILURE); - if (!strcmp(SQLState, "42000")) - return(DB_ERR_SYNTAX_ERROR_OR_ACCESS_VIOL2); - if (!strcmp(SQLState, "70100")) - return(DB_ERR_OPERATION_ABORTED); - if (!strcmp(SQLState, "IM001")) - return(DB_ERR_UNSUPPORTED_FUNCTION); - if (!strcmp(SQLState, "IM002")) - return(DB_ERR_NO_DATA_SOURCE); - if (!strcmp(SQLState, "IM003")) - return(DB_ERR_DRIVER_LOAD_ERROR); - if (!strcmp(SQLState, "IM004")) - return(DB_ERR_SQLALLOCENV_FAILED); - if (!strcmp(SQLState, "IM005")) - return(DB_ERR_SQLALLOCCONNECT_FAILED); - if (!strcmp(SQLState, "IM006")) - return(DB_ERR_SQLSETCONNECTOPTION_FAILED); - if (!strcmp(SQLState, "IM007")) - return(DB_ERR_NO_DATA_SOURCE_DLG_PROHIB); - if (!strcmp(SQLState, "IM008")) - return(DB_ERR_DIALOG_FAILED); - if (!strcmp(SQLState, "IM009")) - return(DB_ERR_UNABLE_TO_LOAD_TRANSLATION_DLL); - if (!strcmp(SQLState, "IM010")) - return(DB_ERR_DATA_SOURCE_NAME_TOO_LONG); - if (!strcmp(SQLState, "IM011")) - return(DB_ERR_DRIVER_NAME_TOO_LONG); - if (!strcmp(SQLState, "IM012")) - return(DB_ERR_DRIVER_KEYWORD_SYNTAX_ERROR); - if (!strcmp(SQLState, "IM013")) - return(DB_ERR_TRACE_FILE_ERROR); - if (!strcmp(SQLState, "S0001")) - return(DB_ERR_TABLE_OR_VIEW_ALREADY_EXISTS); - if (!strcmp(SQLState, "S0002")) - return(DB_ERR_TABLE_NOT_FOUND); - if (!strcmp(SQLState, "S0011")) - return(DB_ERR_INDEX_ALREADY_EXISTS); - if (!strcmp(SQLState, "S0012")) - return(DB_ERR_INDEX_NOT_FOUND); - if (!strcmp(SQLState, "S0021")) - return(DB_ERR_COLUMN_ALREADY_EXISTS); - if (!strcmp(SQLState, "S0022")) - return(DB_ERR_COLUMN_NOT_FOUND); - if (!strcmp(SQLState, "S0023")) - return(DB_ERR_NO_DEFAULT_FOR_COLUMN); - if (!strcmp(SQLState, "S1000")) - return(DB_ERR_GENERAL_ERROR); - if (!strcmp(SQLState, "S1001")) - return(DB_ERR_MEMORY_ALLOCATION_FAILURE); - if (!strcmp(SQLState, "S1002")) - return(DB_ERR_INVALID_COLUMN_NUMBER); - if (!strcmp(SQLState, "S1003")) - return(DB_ERR_PROGRAM_TYPE_OUT_OF_RANGE); - if (!strcmp(SQLState, "S1004")) - return(DB_ERR_SQL_DATA_TYPE_OUT_OF_RANGE); - if (!strcmp(SQLState, "S1008")) - return(DB_ERR_OPERATION_CANCELLED); - if (!strcmp(SQLState, "S1009")) - return(DB_ERR_INVALID_ARGUMENT_VALUE); - if (!strcmp(SQLState, "S1010")) - return(DB_ERR_FUNCTION_SEQUENCE_ERROR); - if (!strcmp(SQLState, "S1011")) - return(DB_ERR_OPERATION_INVALID_AT_THIS_TIME); - if (!strcmp(SQLState, "S1012")) - return(DB_ERR_INVALID_TRANS_OPERATION_CODE); - if (!strcmp(SQLState, "S1015")) - return(DB_ERR_NO_CURSOR_NAME_AVAIL); - if (!strcmp(SQLState, "S1090")) - return(DB_ERR_INVALID_STR_OR_BUF_LEN); - if (!strcmp(SQLState, "S1091")) - return(DB_ERR_DESCRIPTOR_TYPE_OUT_OF_RANGE); - if (!strcmp(SQLState, "S1092")) - return(DB_ERR_OPTION_TYPE_OUT_OF_RANGE); - if (!strcmp(SQLState, "S1093")) - return(DB_ERR_INVALID_PARAM_NO); - if (!strcmp(SQLState, "S1094")) - return(DB_ERR_INVALID_SCALE_VALUE); - if (!strcmp(SQLState, "S1095")) - return(DB_ERR_FUNCTION_TYPE_OUT_OF_RANGE); - if (!strcmp(SQLState, "S1096")) - return(DB_ERR_INF_TYPE_OUT_OF_RANGE); - if (!strcmp(SQLState, "S1097")) - return(DB_ERR_COLUMN_TYPE_OUT_OF_RANGE); - if (!strcmp(SQLState, "S1098")) - return(DB_ERR_SCOPE_TYPE_OUT_OF_RANGE); - if (!strcmp(SQLState, "S1099")) - return(DB_ERR_NULLABLE_TYPE_OUT_OF_RANGE); - if (!strcmp(SQLState, "S1100")) - return(DB_ERR_UNIQUENESS_OPTION_TYPE_OUT_OF_RANGE); - if (!strcmp(SQLState, "S1101")) - return(DB_ERR_ACCURACY_OPTION_TYPE_OUT_OF_RANGE); - if (!strcmp(SQLState, "S1103")) - return(DB_ERR_DIRECTION_OPTION_OUT_OF_RANGE); - if (!strcmp(SQLState, "S1104")) - return(DB_ERR_INVALID_PRECISION_VALUE); - if (!strcmp(SQLState, "S1105")) - return(DB_ERR_INVALID_PARAM_TYPE); - if (!strcmp(SQLState, "S1106")) - return(DB_ERR_FETCH_TYPE_OUT_OF_RANGE); - if (!strcmp(SQLState, "S1107")) - return(DB_ERR_ROW_VALUE_OUT_OF_RANGE); - if (!strcmp(SQLState, "S1108")) - return(DB_ERR_CONCURRENCY_OPTION_OUT_OF_RANGE); - if (!strcmp(SQLState, "S1109")) - return(DB_ERR_INVALID_CURSOR_POSITION); - if (!strcmp(SQLState, "S1110")) - return(DB_ERR_INVALID_DRIVER_COMPLETION); - if (!strcmp(SQLState, "S1111")) - return(DB_ERR_INVALID_BOOKMARK_VALUE); - if (!strcmp(SQLState, "S1C00")) - return(DB_ERR_DRIVER_NOT_CAPABLE); - if (!strcmp(SQLState, "S1T00")) - return(DB_ERR_TIMEOUT_EXPIRED); - - // No match - return(0); - -} // wxDB::TranslateSqlState() - -/********** wxDB::Grant() **********/ -bool wxDB::Grant(int privileges, char *tableName, char *userList) -{ - char sqlStmt[DB_MAX_STATEMENT_LEN]; - - // Build the grant statement - strcpy(sqlStmt, "GRANT "); - if (privileges == DB_GRANT_ALL) - strcat(sqlStmt, "ALL"); - else - { - int c = 0; - if (privileges & DB_GRANT_SELECT) - { - strcat(sqlStmt, "SELECT"); - c++; - } - if (privileges & DB_GRANT_INSERT) - { - if (c++) - strcat(sqlStmt, ", "); - strcat(sqlStmt, "INSERT"); - } - if (privileges & DB_GRANT_UPDATE) - { - if (c++) - strcat(sqlStmt, ", "); - strcat(sqlStmt, "UPDATE"); - } - if (privileges & DB_GRANT_DELETE) - { - if (c++) - strcat(sqlStmt, ", "); - strcat(sqlStmt, "DELETE"); - } - } - - strcat(sqlStmt, " ON "); - strcat(sqlStmt, tableName); - strcat(sqlStmt, " TO "); - strcat(sqlStmt, userList); - -#ifdef DBDEBUG_CONSOLE - cout << endl << sqlStmt << endl; -#endif - - WriteSqlLog(sqlStmt); - - return(ExecSql(sqlStmt)); - -} // wxDB::Grant() - -/********** wxDB::CreateView() **********/ -bool wxDB::CreateView(char *viewName, char *colList, char *pSqlStmt) -{ - char sqlStmt[DB_MAX_STATEMENT_LEN]; - - // Drop the view first - sprintf(sqlStmt, "DROP VIEW %s", viewName); - if (SQLExecDirect(hstmt, (UCHAR FAR *) sqlStmt, SQL_NTS) != SQL_SUCCESS) - { - // Check for sqlState = S0002, "Table or view not found". - // Ignore this error, bomb out on any other error. - // SQL Sybase Anwhere v5.5 returns an access violation error here - // (sqlstate = 42000) rather than an S0002. - GetNextError(henv, hdbc, hstmt); - if (strcmp(sqlState, "S0002") && strcmp(sqlState, "42000")) - { - DispNextError(); - DispAllErrors(henv, hdbc, hstmt); - RollbackTrans(); - return(FALSE); - } - } - - WriteSqlLog(sqlStmt); - -#ifdef DBDEBUG_CONSOLE - cout << endl << sqlStmt << endl; -#endif - - // Build the create view statement - strcpy(sqlStmt, "CREATE VIEW "); - strcat(sqlStmt, viewName); - - if (strlen(colList)) - { - strcat(sqlStmt, " ("); - strcat(sqlStmt, colList); - strcat(sqlStmt, ")"); - } - - strcat(sqlStmt, " AS "); - strcat(sqlStmt, pSqlStmt); - - WriteSqlLog(sqlStmt); - -#ifdef DBDEBUG_CONSOLE - cout << sqlStmt << endl; -#endif - - return(ExecSql(sqlStmt)); - -} // wxDB::CreateView() - -/********** wxDB::ExecSql() **********/ -bool wxDB::ExecSql(char *pSqlStmt) -{ - if (SQLExecDirect(hstmt, (UCHAR FAR *) pSqlStmt, SQL_NTS) == SQL_SUCCESS) - return(TRUE); - else - { - DispAllErrors(henv, hdbc, hstmt); - return(FALSE); - } - -} // wxDB::ExecSql() - -/********** wxDB::GetColumns() **********/ -/* - * 1) The last array element of the tableName[] argument must be zero (null). - * This is how the end of the array is detected. - * 2) This function returns an array of CcolInf structures. If no columns - * were found, or an error occured, this pointer will be zero (null). THE - * CALLING FUNCTION IS RESPONSIBLE FOR DELETING THE MEMORY RETURNED WHEN IT - * IS FINISHED WITH IT. i.e. - * - * CcolInf *colInf = pDb->GetColumns(tableList); - * if (colInf) - * { - * // Use the column inf - * ....... - * // Destroy the memory - * delete [] colInf; - * } - */ -CcolInf *wxDB::GetColumns(char *tableName[]) -{ - UINT noCols = 0; - UINT colNo = 0; - CcolInf *colInf = 0; - RETCODE retcode; - SDWORD cb; - char tblName[DB_MAX_TABLE_NAME_LEN+1]; - char colName[DB_MAX_COLUMN_NAME_LEN+1]; - SWORD sqlDataType; - - // Pass 1 - Determine how many columns there are. - // Pass 2 - Allocate the CcolInf array and fill in - // the array with the column information. - for (int pass = 1; pass <= 2; pass++) - { - if (pass == 2) - { - if (noCols == 0) // Probably a bogus table name(s) - break; - // Allocate n CcolInf objects to hold the column information - colInf = new CcolInf[noCols+1]; - if (!colInf) - break; - // Mark the end of the array - strcpy(colInf[noCols].tableName, ""); - strcpy(colInf[noCols].colName, ""); - colInf[noCols].sqlDataType = 0; - } - // Loop through each table name - for (int tbl = 0; tableName[tbl]; tbl++) - { - SQLFreeStmt(hstmt, SQL_CLOSE); - retcode = SQLColumns(hstmt, - NULL, 0, // All qualifiers - NULL, 0, // All owners - (UCHAR *) tableName[tbl], SQL_NTS, - NULL, 0); // All columns - if (retcode != SQL_SUCCESS) - { // Error occured, abort - DispAllErrors(henv, hdbc, hstmt); - if (colInf) - delete [] colInf; - return(0); - } - SQLBindCol(hstmt, 3, SQL_C_CHAR, (UCHAR*) tblName, DB_MAX_TABLE_NAME_LEN+1, &cb); - SQLBindCol(hstmt, 4, SQL_C_CHAR, (UCHAR*) colName, DB_MAX_COLUMN_NAME_LEN+1, &cb); - SQLBindCol(hstmt, 5, SQL_C_SSHORT, (UCHAR*) &sqlDataType, 0, &cb); - while ((retcode = SQLFetch(hstmt)) == SQL_SUCCESS) - { - if (pass == 1) // First pass, just add up the number of columns - noCols++; - else // Pass 2; Fill in the array of structures - { - if (colNo < noCols) // Some extra error checking to prevent memory overwrites - { - strcpy(colInf[colNo].tableName, tblName); - strcpy(colInf[colNo].colName, colName); - colInf[colNo].sqlDataType = sqlDataType; - colNo++; - } - } - } - if (retcode != SQL_NO_DATA_FOUND) - { // Error occured, abort - DispAllErrors(henv, hdbc, hstmt); - if (colInf) - delete [] colInf; - return(0); - } - } - } - - SQLFreeStmt(hstmt, SQL_CLOSE); - return colInf; - -} // wxDB::GetColumns() - - -/********** wxDB::Catalog() **********/ -bool wxDB::Catalog(char *userID, char *fileName) -{ - assert(userID && strlen(userID)); - assert(fileName && strlen(fileName)); - - RETCODE retcode; - SDWORD cb; - char tblName[DB_MAX_TABLE_NAME_LEN+1]; - char tblNameSave[DB_MAX_TABLE_NAME_LEN+1]; - char colName[DB_MAX_COLUMN_NAME_LEN+1]; - SWORD sqlDataType; - char typeName[16]; - SWORD precision, length; - - FILE *fp = fopen(fileName,"wt"); - if (fp == NULL) - return(FALSE); - - SQLFreeStmt(hstmt, SQL_CLOSE); - - int i = 0; - char userIdUC[81]; - for (char *p = userID; *p; p++) - userIdUC[i++] = toupper(*p); - userIdUC[i] = 0; - - retcode = SQLColumns(hstmt, - NULL, 0, // All qualifiers - (UCHAR *) userIdUC, SQL_NTS, // User specified - NULL, 0, // All tables - NULL, 0); // All columns - if (retcode != SQL_SUCCESS) - { - DispAllErrors(henv, hdbc, hstmt); - fclose(fp); - return(FALSE); - } - - SQLBindCol(hstmt, 3, SQL_C_CHAR, (UCHAR*) tblName, DB_MAX_TABLE_NAME_LEN+1, &cb); - SQLBindCol(hstmt, 4, SQL_C_CHAR, (UCHAR*) colName, DB_MAX_COLUMN_NAME_LEN+1, &cb); - SQLBindCol(hstmt, 5, SQL_C_SSHORT, (UCHAR*) &sqlDataType, 0, &cb); - SQLBindCol(hstmt, 6, SQL_C_CHAR, (UCHAR*) typeName, 16, &cb); - SQLBindCol(hstmt, 7, SQL_C_SSHORT, (UCHAR*) &precision, 0, &cb); - SQLBindCol(hstmt, 8, SQL_C_SSHORT, (UCHAR*) &length, 0, &cb); - - char outStr[256]; - strcpy(tblNameSave,""); - int cnt = 0; - - while ((retcode = SQLFetch(hstmt)) == SQL_SUCCESS) - { - if (strcmp(tblName,tblNameSave)) - { - if (cnt) - fputs("\n", fp); - fputs("================================ ", fp); - fputs("================================ ", fp); - fputs("===================== ", fp); - fputs("========= ", fp); - fputs("=========\n", fp); - sprintf(outStr, "%-32s %-32s %-21s %9s %9s\n", - "TABLE NAME", "COLUMN NAME", "DATA TYPE", "PRECISION", "LENGTH"); - fputs(outStr, fp); - fputs("================================ ", fp); - fputs("================================ ", fp); - fputs("===================== ", fp); - fputs("========= ", fp); - fputs("=========\n", fp); - strcpy(tblNameSave,tblName); - } - sprintf(outStr, "%-32s %-32s (%04d)%-15s %9d %9d\n", - tblName, colName, sqlDataType, typeName, precision, length); - if (fputs(outStr, fp) == EOF) - { - fclose(fp); - return(FALSE); - } - cnt++; - } - - if (retcode != SQL_NO_DATA_FOUND) - { - DispAllErrors(henv, hdbc, hstmt); - fclose(fp); - return(FALSE); - } - - SQLFreeStmt(hstmt, SQL_CLOSE); - fclose(fp); - return(TRUE); - -} // wxDB::Catalog() - - -// Table name can refer to a table, view, alias or synonym. Returns true -// if the object exists in the database. This function does not indicate -// whether or not the user has privleges to query or perform other functions -// on the table. -bool wxDB::TableExists(char *tableName) -{ - assert(tableName && strlen(tableName)); - - SQLFreeStmt(hstmt, SQL_CLOSE); - RETCODE retcode = SQLTables(hstmt, - NULL, 0, // All qualifiers - NULL, 0, // All owners - (UCHAR FAR *)tableName, SQL_NTS, - NULL, 0); // All table types - if (retcode != SQL_SUCCESS) - return(DispAllErrors(henv, hdbc, hstmt)); - - if (SQLFetch(hstmt) != SQL_SUCCESS) - { - SQLFreeStmt(hstmt, SQL_CLOSE); - return(DispAllErrors(henv, hdbc, hstmt)); - } - - SQLFreeStmt(hstmt, SQL_CLOSE); - return(TRUE); - -} // wxDB::TableExists() - - -/********** wxDB::SqlLog() **********/ -bool wxDB::SqlLog(enum sqlLog state, char *filename, bool append) -{ - assert(state == sqlLogON || state == sqlLogOFF); - assert(state == sqlLogOFF || filename); - - if (state == sqlLogON) - { - if (fpSqlLog == 0) - { - fpSqlLog = fopen(filename, (append ? "at" : "wt")); - if (fpSqlLog == NULL) - return(FALSE); - } - } - else // sqlLogOFF - { - if (fpSqlLog) - { - if (fclose(fpSqlLog)) - return(FALSE); - fpSqlLog = 0; - } - } - - sqlLogState = state; - return(TRUE); - -} // wxDB::SqlLog() - - -/********** wxDB::WriteSqlLog() **********/ -bool wxDB::WriteSqlLog(char *logMsg) -{ - assert(logMsg); - - if (fpSqlLog == 0 || sqlLogState == sqlLogOFF) - return(FALSE); - - if (fputs("\n", fpSqlLog) == EOF) return(FALSE); - if (fputs(logMsg, fpSqlLog) == EOF) return(FALSE); - if (fputs("\n", fpSqlLog) == EOF) return(FALSE); - - return(TRUE); - -} // wxDB::WriteSqlLog() - - -/********** GetDbConnection() **********/ -wxDB* WXDLLEXPORT GetDbConnection(DbStuff *pDbStuff) -{ - DbList *pList; - - // Scan the linked list searching for an available database connection - // that's already been opened but is currently not in use. - for (pList = PtrBegDbList; pList; pList = pList->PtrNext) - { - // The database connection must be for the same datasource - // name and must currently not be in use. - if (pList->Free && (! strcmp(pDbStuff->Dsn, pList->Dsn))) // Found a free connection - { - pList->Free = FALSE; - return(pList->PtrDb); - } - } - - // No available connections. A new connection must be made and - // appended to the end of the linked list. - if (PtrBegDbList) - { - // Find the end of the list - for (pList = PtrBegDbList; pList->PtrNext; pList = pList->PtrNext); - // Append a new list item - pList->PtrNext = new DbList; - pList->PtrNext->PtrPrev = pList; - pList = pList->PtrNext; - } - else // Empty list - { - // Create the first node on the list - pList = PtrBegDbList = new DbList; - pList->PtrPrev = 0; - } - - // Initialize new node in the linked list - pList->PtrNext = 0; - pList->Free = FALSE; - strcpy(pList->Dsn, pDbStuff->Dsn); - pList->PtrDb = new wxDB(pDbStuff->Henv); - - // Connect to the datasource - if (pList->PtrDb->Open(pDbStuff->Dsn, pDbStuff->Uid, pDbStuff->AuthStr)) - return(pList->PtrDb); - else // Unable to connect, destroy list item - { - if (pList->PtrPrev) - pList->PtrPrev->PtrNext = 0; - else - PtrBegDbList = 0; // Empty list again - pList->PtrDb->CommitTrans(); // Commit any open transactions on wxDB object - pList->PtrDb->Close(); // Close the wxDB object - delete pList->PtrDb; // Deletes the wxDB object - delete pList; // Deletes the linked list object - return(0); - } - -} // GetDbConnection() - -/********** FreeDbConnection() **********/ -bool WXDLLEXPORT FreeDbConnection(wxDB *pDb) -{ - DbList *pList; - - // Scan the linked list searching for the database connection - for (pList = PtrBegDbList; pList; pList = pList->PtrNext) - { - if (pList->PtrDb == pDb) // Found it!!! - return(pList->Free = TRUE); - } - - // Never found the database object, return failure - return(FALSE); - -} // FreeDbConnection() - -/********** CloseDbConnections() **********/ -void WXDLLEXPORT CloseDbConnections(void) -{ - DbList *pList, *pNext; - - // Traverse the linked list closing database connections and freeing memory as I go. - for (pList = PtrBegDbList; pList; pList = pNext) - { - pNext = pList->PtrNext; // Save the pointer to next - pList->PtrDb->CommitTrans(); // Commit any open transactions on wxDB object - pList->PtrDb->Close(); // Close the wxDB object - delete pList->PtrDb; // Deletes the wxDB object - delete pList; // Deletes the linked list object - } - - // Mark the list as empty - PtrBegDbList = 0; - -} // CloseDbConnections() - -/********** NumberDbConnectionsInUse() **********/ -int WXDLLEXPORT NumberDbConnectionsInUse(void) -{ - DbList *pList; - int cnt = 0; - - // Scan the linked list counting db connections that are currently in use - for (pList = PtrBegDbList; pList; pList = pList->PtrNext) - { - if (pList->Free == FALSE) - cnt++; - } - - return(cnt); - -} // NumberDbConnectionsInUse() - -/********** GetDataSource() **********/ -bool GetDataSource(HENV henv, char *Dsn, SWORD DsnMax, char *DsDesc, SWORD DsDescMax, - UWORD direction) -{ - SWORD cb; - - if (SQLDataSources(henv, direction, (UCHAR FAR *) Dsn, DsnMax, &cb, - (UCHAR FAR *) DsDesc, DsDescMax, &cb) == SQL_SUCCESS) - return(TRUE); - else - return(FALSE); - -} // GetDataSource() - -#endif - // wxUSE_ODBC - diff --git a/src/common/dbtable.cpp b/src/common/dbtable.cpp deleted file mode 100644 index d1166229c4..0000000000 --- a/src/common/dbtable.cpp +++ /dev/null @@ -1,1553 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: dbtable.cpp -// Purpose: Implementation of the wxTable class. -// Author: Doug Card -// Modified by: -// Created: 9.96 -// RCS-ID: $Id$ -// Copyright: (c) 1996 Remstar International, Inc. -// Licence: wxWindows licence, plus: -// Notice: This class library and its intellectual design are free of charge for use, -// modification, enhancement, debugging under the following conditions: -// 1) These classes may only be used as part of the implementation of a -// wxWindows-based application -// 2) All enhancements and bug fixes are to be submitted back to the wxWindows -// user groups free of all charges for use with the wxWindows library. -// 3) These classes may not be distributed as part of any other class library, -// DLL, text (written or electronic), other than a complete distribution of -// the wxWindows GUI development toolkit. -/////////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dbtable.h" -#endif - -/* -// SYNOPSIS START -// SYNOPSIS STOP -*/ - -/* -#ifdef _CONSOLE - #include -#endif -*/ - -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ - #pragma hdrstop -#endif //__BORLANDC__ - -#ifndef WX_PRECOMP - #include -#endif //WX_PRECOMP - -#if wxUSE_ODBC - -#include - -#include -#include -#include -#include - -#ifdef __UNIX__ -// The HPUX preprocessor lines below were commented out on 8/20/97 -// because macros.h currently redefines DEBUG and is unneeded. -// # ifdef HPUX -// # include -// # endif -# ifdef LINUX -# include -# endif -#endif - -/********** wxTable::wxTable() **********/ -wxTable::wxTable(wxDB *pwxDB, const char *tblName, const int nCols, const char *qryTblName) -{ - // Assign member variables - pDb = pwxDB; // Pointer to the wxDB object - - strcpy(tableName, tblName); // Table Name - if (qryTblName) // Name of the table/view to query - strcpy(queryTableName, qryTblName); - else - strcpy(queryTableName, tblName); - - assert(pDb); // Assert is placed after table name is assigned for error reporting reasons - if (!pDb) - return; - - noCols = nCols; // No. of cols in the table - where = 0; // Where clause - orderBy = 0; // Order By clause - from = 0; // From clause - selectForUpdate = FALSE; // SELECT ... FOR UPDATE; Indicates whether to include the FOR UPDATE phrase - - // Grab the HENV and HDBC from the wxDB object - henv = pDb->henv; - hdbc = pDb->hdbc; - - // Allocate space for column definitions - if (noCols) - colDefs = new CcolDef[noCols]; // Points to the first column defintion - else - colDefs = 0; - - // Allocate statement handles for the table - if (SQLAllocStmt(hdbc, &c0) != SQL_SUCCESS) - pDb->DispAllErrors(henv, hdbc); - if (SQLAllocStmt(hdbc, &c1) != SQL_SUCCESS) - pDb->DispAllErrors(henv, hdbc); - if (SQLAllocStmt(hdbc, &c2) != SQL_SUCCESS) - pDb->DispAllErrors(henv, hdbc); -// if (SQLAllocStmt(hdbc, &c3) != SQL_SUCCESS) -// pDb->DispAllErrors(henv, hdbc); -// if (SQLAllocStmt(hdbc, &c4) != SQL_SUCCESS) -// pDb->DispAllErrors(henv, hdbc); -// if (SQLAllocStmt(hdbc, &c5) != SQL_SUCCESS) -// pDb->DispAllErrors(henv, hdbc); - // Allocate a separate statement handle for performing inserts - if (SQLAllocStmt(hdbc, &hstmtInsert) != SQL_SUCCESS) - pDb->DispAllErrors(henv, hdbc); - // Allocate a separate statement handle for performing deletes - if (SQLAllocStmt(hdbc, &hstmtDelete) != SQL_SUCCESS) - pDb->DispAllErrors(henv, hdbc); - // Allocate a separate statement handle for performing updates - if (SQLAllocStmt(hdbc, &hstmtUpdate) != SQL_SUCCESS) - pDb->DispAllErrors(henv, hdbc); - // Allocate a separate statement handle for performing count(*) function - if (SQLAllocStmt(hdbc, &hstmtCount) != SQL_SUCCESS) - pDb->DispAllErrors(henv, hdbc); - - // Set the cursor type for the statement handles - UDWORD cursorType = SQL_CURSOR_STATIC; - if (SQLSetStmtOption(c1, SQL_CURSOR_TYPE, cursorType) != SQL_SUCCESS) - { - // Check to see if cursor type is supported - pDb->GetNextError(henv, hdbc, c1); - if (! strcmp(pDb->sqlState, "01S02")) // Option Value Changed - { - // Datasource does not support static cursors. Driver - // will substitute a cursor type. Call SQLGetStmtOption() - // to determine which cursor type was selected. - if (SQLGetStmtOption(c1, SQL_CURSOR_TYPE, (UCHAR*) &cursorType) != SQL_SUCCESS) - pDb->DispAllErrors(henv, hdbc, c1); -#ifdef _CONSOLE - cout << "Static cursor changed to: "; - switch(cursorType) - { - case SQL_CURSOR_FORWARD_ONLY: - cout << "Forward Only"; break; - case SQL_CURSOR_STATIC: - cout << "Static"; break; - case SQL_CURSOR_KEYSET_DRIVEN: - cout << "Keyset Driven"; break; - case SQL_CURSOR_DYNAMIC: - cout << "Dynamic"; break; - } - cout << endl << endl; -#endif - } - else - { - pDb->DispNextError(); - pDb->DispAllErrors(henv, hdbc, c1); - } - } -#ifdef _CONSOLE - else - cout << "Cursor Type set to STATIC" << endl << endl; -#endif - - if (SQLSetStmtOption(c0, SQL_CURSOR_TYPE, cursorType) != SQL_SUCCESS) - pDb->DispAllErrors(henv, hdbc, c0); - if (SQLSetStmtOption(c2, SQL_CURSOR_TYPE, cursorType) != SQL_SUCCESS) - pDb->DispAllErrors(henv, hdbc, c2); -// if (SQLSetStmtOption(c3, SQL_CURSOR_TYPE, cursorType) != SQL_SUCCESS) -// pDb->DispAllErrors(henv, hdbc, c3); -// if (SQLSetStmtOption(c4, SQL_CURSOR_TYPE, cursorType) != SQL_SUCCESS) -// pDb->DispAllErrors(henv, hdbc, c4); -// if (SQLSetStmtOption(c5, SQL_CURSOR_TYPE, cursorType) != SQL_SUCCESS) -// pDb->DispAllErrors(henv, hdbc, c5); - - // Set the cursor type for the INSERT statement handle - if (SQLSetStmtOption(hstmtInsert, SQL_CURSOR_TYPE, SQL_CURSOR_FORWARD_ONLY) != SQL_SUCCESS) - pDb->DispAllErrors(henv, hdbc, hstmtInsert); - // Set the cursor type for the DELETE statement handle - if (SQLSetStmtOption(hstmtDelete, SQL_CURSOR_TYPE, SQL_CURSOR_FORWARD_ONLY) != SQL_SUCCESS) - pDb->DispAllErrors(henv, hdbc, hstmtDelete); - // Set the cursor type for the UPDATE statement handle - if (SQLSetStmtOption(hstmtUpdate, SQL_CURSOR_TYPE, SQL_CURSOR_FORWARD_ONLY) != SQL_SUCCESS) - pDb->DispAllErrors(henv, hdbc, hstmtUpdate); - // Set the cursor type for the COUNT(*) statement handle - if (SQLSetStmtOption(hstmtCount, SQL_CURSOR_TYPE, SQL_CURSOR_FORWARD_ONLY) != SQL_SUCCESS) - pDb->DispAllErrors(henv, hdbc, hstmtCount); - - // Copy cursor 1 to the default cursor - hstmt = c1; - currCursorNo = DB_CURSOR1; - -} // wxTable::wxTable() - -/********** wxTable::~wxTable() **********/ -wxTable::~wxTable() -{ - // Delete memory allocated for column definitions - if (colDefs) - delete [] colDefs; - - // Free statement handles - if (SQLFreeStmt(c0, SQL_DROP) != SQL_SUCCESS) - pDb->DispAllErrors(henv, hdbc); - if (SQLFreeStmt(c1, SQL_DROP) != SQL_SUCCESS) - pDb->DispAllErrors(henv, hdbc); - if (SQLFreeStmt(c2, SQL_DROP) != SQL_SUCCESS) - pDb->DispAllErrors(henv, hdbc); -// if (SQLFreeStmt(c3, SQL_DROP) != SQL_SUCCESS) -// pDb->DispAllErrors(henv, hdbc); -// if (SQLFreeStmt(c4, SQL_DROP) != SQL_SUCCESS) -// pDb->DispAllErrors(henv, hdbc); -// if (SQLFreeStmt(c5, SQL_DROP) != SQL_SUCCESS) -// pDb->DispAllErrors(henv, hdbc); - if (SQLFreeStmt(hstmtInsert, SQL_DROP) != SQL_SUCCESS) - pDb->DispAllErrors(henv, hdbc); - if (SQLFreeStmt(hstmtDelete, SQL_DROP) != SQL_SUCCESS) - pDb->DispAllErrors(henv, hdbc); - if (SQLFreeStmt(hstmtUpdate, SQL_DROP) != SQL_SUCCESS) - pDb->DispAllErrors(henv, hdbc); - if (SQLFreeStmt(hstmtCount, SQL_DROP) != SQL_SUCCESS) - pDb->DispAllErrors(henv, hdbc); - -} // wxTable::~wxTable() - -/********** wxTable::Open() **********/ -bool wxTable::Open(void) -{ - if (!pDb) - return FALSE; - - int i; - char sqlStmt[DB_MAX_STATEMENT_LEN]; - - // Verify that the table exists in the database - if (!pDb->TableExists(tableName)) - { - char s[128]; - sprintf(s, "Error opening '%s', table/view does not exist in the database.", tableName); - pDb->LogError(s); - return(FALSE); - } - - // Bind the member variables for field exchange between - // the wxTable object and the ODBC record. - if(! bindInsertParams()) // Inserts - return(FALSE); - if(! bindUpdateParams()) // Updates - return(FALSE); - if(! bindCols(c0)) // Selects - return(FALSE); - if(! bindCols(c1)) - return(FALSE); - if(! bindCols(c2)) - return(FALSE); -// if(! bindCols(c3)) -// return(FALSE); -// if(! bindCols(c4)) -// return(FALSE); -// if(! bindCols(c5)) -// return(FALSE); - - // Build an insert statement using parameter markers - if (noCols > 0) - { - bool needComma = FALSE; - sprintf(sqlStmt, "INSERT INTO %s (", tableName); - for (i = 0; i < noCols; i++) - { - if (! colDefs[i].InsertAllowed) - continue; - if (needComma) - strcat(sqlStmt, ","); - strcat(sqlStmt, colDefs[i].ColName); - needComma = TRUE; - } - needComma = FALSE; - strcat(sqlStmt, ") VALUES ("); - for (i = 0; i < noCols; i++) - { - if (! colDefs[i].InsertAllowed) - continue; - if (needComma) - strcat(sqlStmt, ","); - strcat(sqlStmt, "?"); - needComma = TRUE; - } - strcat(sqlStmt, ")"); - - pDb->WriteSqlLog(sqlStmt); - - // Prepare the insert statement for execution - if (SQLPrepare(hstmtInsert, (UCHAR FAR *) sqlStmt, SQL_NTS) != SQL_SUCCESS) - return(pDb->DispAllErrors(henv, hdbc, hstmtInsert)); - } - - // Completed successfully - return(TRUE); - -} // wxTable::Open() - -/********** wxTable::Query() **********/ -bool wxTable::Query(bool forUpdate, bool distinct) -{ - - return(query(DB_SELECT_WHERE, forUpdate, distinct)); - -} // wxTable::Query() - -/********** wxTable::QueryBySqlStmt() **********/ -bool wxTable::QueryBySqlStmt(char *pSqlStmt) -{ - pDb->WriteSqlLog(pSqlStmt); - - return(query(DB_SELECT_STATEMENT, FALSE, FALSE, pSqlStmt)); - -} // wxTable::QueryBySqlStmt() - -/********** wxTable::QueryMatching() **********/ -bool wxTable::QueryMatching(bool forUpdate, bool distinct) -{ - - return(query(DB_SELECT_MATCHING, forUpdate, distinct)); - -} // wxTable::QueryMatching() - -/********** wxTable::QueryOnKeyFields() **********/ -bool wxTable::QueryOnKeyFields(bool forUpdate, bool distinct) -{ - - return(query(DB_SELECT_KEYFIELDS, forUpdate, distinct)); - -} // wxTable::QueryOnKeyFields() - -/********** wxTable::query() **********/ -bool wxTable::query(int queryType, bool forUpdate, bool distinct, char *pSqlStmt) -{ - char sqlStmt[DB_MAX_STATEMENT_LEN]; - - // Set the selectForUpdate member variable - if (forUpdate) - // The user may wish to select for update, but the DBMS may not be capable - selectForUpdate = CanSelectForUpdate(); - else - selectForUpdate = FALSE; - - // Set the SQL SELECT string - if (queryType != DB_SELECT_STATEMENT) // A select statement was not passed in, - { // so generate a select statement. - GetSelectStmt(sqlStmt, queryType, distinct); - pDb->WriteSqlLog(sqlStmt); - } - - // Make sure the cursor is closed first - if (! CloseCursor(hstmt)) - return(FALSE); - - // Execute the SQL SELECT statement - if (SQLExecDirect(hstmt, (UCHAR FAR *) (queryType == DB_SELECT_STATEMENT ? pSqlStmt : sqlStmt), - SQL_NTS) != SQL_SUCCESS) - return(pDb->DispAllErrors(henv, hdbc, hstmt)); - - // Completed successfully - return(TRUE); - -} // wxTable::query() - -/********** wxTable::GetSelectStmt() **********/ -void wxTable::GetSelectStmt(char *pSqlStmt, int typeOfSelect, bool distinct) -{ - char whereClause[DB_MAX_WHERE_CLAUSE_LEN]; - - whereClause[0] = 0; - - // Build a select statement to query the database - strcpy(pSqlStmt, "SELECT "); - - // SELECT DISTINCT values only? - if (distinct) - strcat(pSqlStmt, "DISTINCT "); - - // Was a FROM clause specified to join tables to the base table? - // Available for ::Query() only!!! - bool appendFromClause = FALSE; - if (typeOfSelect == DB_SELECT_WHERE && from && strlen(from)) - appendFromClause = TRUE; - - // Add the column list - for (int i = 0; i < noCols; i++) - { - // If joining tables, the base table column names must be qualified to avoid ambiguity - if (appendFromClause) - { - strcat(pSqlStmt, queryTableName); - strcat(pSqlStmt, "."); - } - strcat(pSqlStmt, colDefs[i].ColName); - if (i + 1 < noCols) - strcat(pSqlStmt, ","); - } - - // If the datasource supports ROWID, get this column as well. Exception: Don't retrieve - // the ROWID if querying distinct records. The rowid will always be unique. - if (!distinct && CanUpdByROWID()) - { - // If joining tables, the base table column names must be qualified to avoid ambiguity - if (appendFromClause) - { - strcat(pSqlStmt, ","); - strcat(pSqlStmt, queryTableName); - strcat(pSqlStmt, ".ROWID"); - } - else - strcat(pSqlStmt, ",ROWID"); - } - - // Append the FROM tablename portion - strcat(pSqlStmt, " FROM "); - strcat(pSqlStmt, queryTableName); - if (appendFromClause) - strcat(pSqlStmt, from); - - // Append the WHERE clause. Either append the where clause for the class - // or build a where clause. The typeOfSelect determines this. - switch(typeOfSelect) - { - case DB_SELECT_WHERE: - if (where && strlen(where)) // May not want a where clause!!! - { - strcat(pSqlStmt, " WHERE "); - strcat(pSqlStmt, where); - } - break; - case DB_SELECT_KEYFIELDS: - GetWhereClause(whereClause, DB_WHERE_KEYFIELDS); - if (strlen(whereClause)) - { - strcat(pSqlStmt, " WHERE "); - strcat(pSqlStmt, whereClause); - } - break; - case DB_SELECT_MATCHING: - GetWhereClause(whereClause, DB_WHERE_MATCHING); - if (strlen(whereClause)) - { - strcat(pSqlStmt, " WHERE "); - strcat(pSqlStmt, whereClause); - } - break; - } - - // Append the ORDER BY clause - if (orderBy && strlen(orderBy)) - { - strcat(pSqlStmt, " ORDER BY "); - strcat(pSqlStmt, orderBy); - } - - // SELECT FOR UPDATE if told to do so and the datasource is capable - if (selectForUpdate && CanSelectForUpdate()) - strcat(pSqlStmt, " FOR UPDATE"); - -} // wxTable::GetSelectStmt() - -/********** wxTable::getRec() **********/ -bool wxTable::getRec(UWORD fetchType) -{ - RETCODE retcode; - -#ifndef FWD_ONLY_CURSORS - // Fetch the NEXT, PREV, FIRST or LAST record, depending on fetchType - UDWORD cRowsFetched; - UWORD rowStatus; - if ((retcode = SQLExtendedFetch(hstmt, fetchType, 0, &cRowsFetched, &rowStatus)) != SQL_SUCCESS) - if (retcode == SQL_NO_DATA_FOUND) - return(FALSE); - else - return(pDb->DispAllErrors(henv, hdbc, hstmt)); -#else - // Fetch the next record from the record set - if ((retcode = SQLFetch(hstmt)) != SQL_SUCCESS) - if (retcode == SQL_NO_DATA_FOUND) - return(FALSE); - else - return(pDb->DispAllErrors(henv, hdbc, hstmt)); -#endif - - // Completed successfully - return(TRUE); - -} // wxTable::getRec() - -/********** wxTable::GetRowNum() **********/ -UWORD wxTable::GetRowNum(void) -{ - UDWORD rowNum; - - if (SQLGetStmtOption(hstmt, SQL_ROW_NUMBER, (UCHAR*) &rowNum) != SQL_SUCCESS) - { - pDb->DispAllErrors(henv, hdbc, hstmt); - return(0); - } - - // Completed successfully - return((UWORD) rowNum); - -} // wxTable::GetRowNum() - -/********** wxTable::bindInsertParams() **********/ -bool wxTable::bindInsertParams(void) -{ - SWORD fSqlType = 0; - UDWORD precision = 0; - SWORD scale = 0; - - // Bind each column (that can be inserted) of the table to a parameter marker - for (int i = 0; i < noCols; i++) - { - if (! colDefs[i].InsertAllowed) - continue; - switch(colDefs[i].DbDataType) - { - case DB_DATA_TYPE_VARCHAR: - fSqlType = pDb->typeInfVarchar.FsqlType; - precision = colDefs[i].SzDataObj; - scale = 0; - colDefs[i].CbValue = SQL_NTS; - break; - case DB_DATA_TYPE_INTEGER: - fSqlType = pDb->typeInfInteger.FsqlType; - precision = pDb->typeInfInteger.Precision; - scale = 0; - colDefs[i].CbValue = 0; - break; - case DB_DATA_TYPE_FLOAT: - fSqlType = pDb->typeInfFloat.FsqlType; - precision = pDb->typeInfFloat.Precision; - scale = pDb->typeInfFloat.MaximumScale; - // SQL Sybase Anywhere v5.5 returned a negative number for the - // MaxScale. This caused ODBC to kick out an error on ibscale. - // I check for this here and set the scale = precision. - //if (scale < 0) - // scale = (short) precision; - colDefs[i].CbValue = 0; - break; - case DB_DATA_TYPE_DATE: - fSqlType = pDb->typeInfDate.FsqlType; - precision = pDb->typeInfDate.Precision; - scale = 0; - colDefs[i].CbValue = 0; - break; - } - if (SQLBindParameter(hstmtInsert, i+1, SQL_PARAM_INPUT, colDefs[i].SqlCtype, - fSqlType, precision, scale, (UCHAR*) colDefs[i].PtrDataObj, - precision+1,&colDefs[i].CbValue) != SQL_SUCCESS) - return(pDb->DispAllErrors(henv, hdbc, hstmtInsert)); - } - - // Completed successfully - return(TRUE); - -} // wxTable::bindInsertParams() - -/********** wxTable::bindUpdateParams() **********/ -bool wxTable::bindUpdateParams(void) -{ - SWORD fSqlType = 0; - UDWORD precision = 0; - SWORD scale = 0; - - // Bind each UPDATEABLE column of the table to a parameter marker - for (int i = 0, colNo = 1; i < noCols; i++) - { - if (! colDefs[i].Updateable) - continue; - switch(colDefs[i].DbDataType) - { - case DB_DATA_TYPE_VARCHAR: - fSqlType = pDb->typeInfVarchar.FsqlType; - precision = colDefs[i].SzDataObj; - scale = 0; - colDefs[i].CbValue = SQL_NTS; - break; - case DB_DATA_TYPE_INTEGER: - fSqlType = pDb->typeInfInteger.FsqlType; - precision = pDb->typeInfInteger.Precision; - scale = 0; - colDefs[i].CbValue = 0; - break; - case DB_DATA_TYPE_FLOAT: - fSqlType = pDb->typeInfFloat.FsqlType; - precision = pDb->typeInfFloat.Precision; - scale = pDb->typeInfFloat.MaximumScale; - // SQL Sybase Anywhere v5.5 returned a negative number for the - // MaxScale. This caused ODBC to kick out an error on ibscale. - // I check for this here and set the scale = precision. - //if (scale < 0) - // scale = (short) precision; - colDefs[i].CbValue = 0; - break; - case DB_DATA_TYPE_DATE: - fSqlType = pDb->typeInfDate.FsqlType; - precision = pDb->typeInfDate.Precision; - scale = 0; - colDefs[i].CbValue = 0; - break; - } - if (SQLBindParameter(hstmtUpdate, colNo++, SQL_PARAM_INPUT, colDefs[i].SqlCtype, - fSqlType, precision, scale, (UCHAR*) colDefs[i].PtrDataObj, - precision+1, &colDefs[i].CbValue) != SQL_SUCCESS) - return(pDb->DispAllErrors(henv, hdbc, hstmtUpdate)); - } - - // Completed successfully - return(TRUE); - -} // wxTable::bindUpdateParams() - -/********** wxTable::bindCols() **********/ -bool wxTable::bindCols(HSTMT cursor) -{ - static SDWORD cb; - - // Bind each column of the table to a memory address for fetching data - for (int i = 0; i < noCols; i++) - { - if (SQLBindCol(cursor, i+1, colDefs[i].SqlCtype, (UCHAR*) colDefs[i].PtrDataObj, - colDefs[i].SzDataObj, &cb) != SQL_SUCCESS) - return(pDb->DispAllErrors(henv, hdbc, cursor)); - } - - // Completed successfully - return(TRUE); - -} // wxTable::bindCols() - -/********** wxTable::CloseCursor() **********/ -bool wxTable::CloseCursor(HSTMT cursor) -{ - if (SQLFreeStmt(cursor, SQL_CLOSE) != SQL_SUCCESS) - return(pDb->DispAllErrors(henv, hdbc, cursor)); - - // Completed successfully - return(TRUE); - -} // wxTable::CloseCursor() - -/********** wxTable::CreateTable() **********/ -bool wxTable::CreateTable(void) -{ - if (!pDb) - return FALSE; - - int i, j; - char sqlStmt[DB_MAX_STATEMENT_LEN]; - -#ifdef _CONSOLE - cout << "Creating Table " << tableName << "..." << endl; -#endif - - // Drop the table first - sprintf(sqlStmt, "DROP TABLE %s", tableName); - if (SQLExecDirect(hstmt, (UCHAR FAR *) sqlStmt, SQL_NTS) != SQL_SUCCESS) - { - /* Check for sqlState = S0002, "Table or view not found". - * Ignore this error, bomb out on any other error. - * SQL Sybase Anwhere v5.5 returns an access violation error here - * (sqlstate = 42000) rather than an S0002. */ - - /* PostgreSQL 6.4.0 returns "08S01" or in written form - "ERROR: Relation ... Does Not Exist", Robert Roebling */ - - /* MySQL 3.23.33b returns "S1000" or in written form - "ERROR: Unknown table ...", Robert Roebling */ - - /* This routine is bullshit, Robert Roebling */ - - pDb->GetNextError(henv, hdbc, hstmt); - if (strcmp(pDb->sqlState, "S0002") && - strcmp(pDb->sqlState, "S1000") && - strcmp(pDb->sqlState, "42000") && - strcmp(pDb->sqlState, "08S01")) - { - pDb->DispNextError(); - pDb->DispAllErrors(henv, hdbc, hstmt); - pDb->RollbackTrans(); - CloseCursor(hstmt); - return(FALSE); - } - } - - pDb->WriteSqlLog(sqlStmt); - - // Commit the transaction and close the cursor - if (! pDb->CommitTrans()) - return(FALSE); - if (! CloseCursor(hstmt)) - return(FALSE); - - // Create the table -#ifdef _CONSOLE - for (i = 0; i < noCols; i++) - { - // Exclude derived columns since they are NOT part of the base table - if (colDefs[i].DerivedCol) - continue; - cout << i + 1 << ": " << colDefs[i].ColName << "; "; - switch(colDefs[i].DbDataType) - { - case DB_DATA_TYPE_VARCHAR: - cout << pDb->typeInfVarchar.TypeName << "(" << colDefs[i].SzDataObj << ")"; - break; - case DB_DATA_TYPE_INTEGER: - cout << pDb->typeInfInteger.TypeName; - break; - case DB_DATA_TYPE_FLOAT: - cout << pDb->typeInfFloat.TypeName; - break; - case DB_DATA_TYPE_DATE: - cout << pDb->typeInfDate.TypeName; - break; - } - cout << endl; - } -#endif - - // Build a CREATE TABLE string from the colDefs structure. - bool needComma = FALSE; - sprintf(sqlStmt, "CREATE TABLE %s (", tableName); - for (i = 0; i < noCols; i++) - { - // Exclude derived columns since they are NOT part of the base table - if (colDefs[i].DerivedCol) - continue; - // Comma Delimiter - if (needComma) - strcat(sqlStmt, ","); - // Column Name - strcat(sqlStmt, colDefs[i].ColName); - strcat(sqlStmt, " "); - // Column Type - switch(colDefs[i].DbDataType) - { - case DB_DATA_TYPE_VARCHAR: - strcat(sqlStmt, pDb->typeInfVarchar.TypeName); break; - case DB_DATA_TYPE_INTEGER: - strcat(sqlStmt, pDb->typeInfInteger.TypeName); break; - case DB_DATA_TYPE_FLOAT: - strcat(sqlStmt, pDb->typeInfFloat.TypeName); break; - case DB_DATA_TYPE_DATE: - strcat(sqlStmt, pDb->typeInfDate.TypeName); break; - } - // For varchars, append the size of the string - if (colDefs[i].DbDataType == DB_DATA_TYPE_VARCHAR) - { - char s[10]; - // strcat(sqlStmt, "("); - // strcat(sqlStmt, itoa(colDefs[i].SzDataObj, s, 10)); - // strcat(sqlStmt, ")"); - sprintf(s, "(%d)", colDefs[i].SzDataObj); - strcat(sqlStmt, s); - } - -#ifdef __WXGTK__ - if (colDefs[i].KeyField) - { - strcat(sqlStmt, " NOT NULL"); - } -#endif - - needComma = TRUE; - } - // If there is a primary key defined, include it in the create statement - for (i = j = 0; i < noCols; i++) - { - if (colDefs[i].KeyField) - { - j++; - break; - } - } - if (j) // Found a keyfield - { -#ifndef __WXGTK__ - /* MySQL goes out on this one. We also declare the relevant key NON NULL above */ - strcat(sqlStmt, ",CONSTRAINT "); - strcat(sqlStmt, tableName); - strcat(sqlStmt, "_PIDX PRIMARY KEY ("); -#else - strcat(sqlStmt, ", PRIMARY KEY ("); -#endif - - // List column name(s) of column(s) comprising the primary key - for (i = j = 0; i < noCols; i++) - { - if (colDefs[i].KeyField) - { - if (j++) // Multi part key, comma separate names - strcat(sqlStmt, ","); - strcat(sqlStmt, colDefs[i].ColName); - } - } - strcat(sqlStmt, ")"); - } - // Append the closing parentheses for the create table statement - strcat(sqlStmt, ")"); - - pDb->WriteSqlLog(sqlStmt); - -#ifdef _CONSOLE - cout << endl << sqlStmt << endl; -#endif - - // Execute the CREATE TABLE statement - if (SQLExecDirect(hstmt, (UCHAR FAR *) sqlStmt, SQL_NTS) != SQL_SUCCESS) - { - pDb->DispAllErrors(henv, hdbc, hstmt); - pDb->RollbackTrans(); - CloseCursor(hstmt); - return(FALSE); - } - - // Commit the transaction and close the cursor - if (! pDb->CommitTrans()) - return(FALSE); - if (! CloseCursor(hstmt)) - return(FALSE); - - // Database table created successfully - return(TRUE); - -} // wxTable::CreateTable() - -/********** wxTable::CreateIndex() **********/ -bool wxTable::CreateIndex(char * idxName, bool unique, int noIdxCols, CidxDef *pIdxDefs) -{ - char sqlStmt[DB_MAX_STATEMENT_LEN]; - - // Build a CREATE INDEX statement - strcpy(sqlStmt, "CREATE "); - if (unique) - strcat(sqlStmt, "UNIQUE "); - - strcat(sqlStmt, "INDEX "); - strcat(sqlStmt, idxName); - strcat(sqlStmt, " ON "); - strcat(sqlStmt, tableName); - strcat(sqlStmt, " ("); - - // Append list of columns making up index - for (int i = 0; i < noIdxCols; i++) - { - strcat(sqlStmt, pIdxDefs[i].ColName); - - /* Postgres doesnt cope with ASC */ -#ifndef __WXGTK__ - if (pIdxDefs[i].Ascending) - strcat(sqlStmt, " ASC"); - else - strcat(sqlStmt, " DESC"); -#endif - - if ((i + 1) < noIdxCols) - strcat(sqlStmt, ", "); - } - - // Append closing parentheses - strcat(sqlStmt, ")"); - - pDb->WriteSqlLog(sqlStmt); - -#ifdef _CONSOLE - cout << endl << sqlStmt << endl << endl; -#endif - - // Execute the CREATE INDEX statement - if (SQLExecDirect(hstmt, (UCHAR FAR *) sqlStmt, SQL_NTS) != SQL_SUCCESS) - { - pDb->DispAllErrors(henv, hdbc, hstmt); - pDb->RollbackTrans(); - CloseCursor(hstmt); - return(FALSE); - } - - // Commit the transaction and close the cursor - if (! pDb->CommitTrans()) - return(FALSE); - if (! CloseCursor(hstmt)) - return(FALSE); - - // Index Created Successfully - return(TRUE); - -} // wxTable::CreateIndex() - -/********** wxTable::Insert() **********/ -int wxTable::Insert(void) -{ - // Insert the record by executing the already prepared insert statement - if (SQLExecute(hstmtInsert) != SQL_SUCCESS) - { - // Check to see if integrity constraint was violated - pDb->GetNextError(henv, hdbc, hstmtInsert); - if (! strcmp(pDb->sqlState, "23000")) // Integrity constraint violated - return(DB_ERR_INTEGRITY_CONSTRAINT_VIOL); - else - { - pDb->DispNextError(); - pDb->DispAllErrors(henv, hdbc, hstmtInsert); - return(DB_FAILURE); - } - } - - // Record inserted into the datasource successfully - return(DB_SUCCESS); - -} // wxTable::Insert() - -/********** wxTable::Update(pSqlStmt) **********/ -bool wxTable::Update(char *pSqlStmt) -{ - pDb->WriteSqlLog(pSqlStmt); - - return(execUpdate(pSqlStmt)); - -} // wxTable::Update(pSqlStmt) - -/********** wxTable::Update() **********/ -bool wxTable::Update(void) -{ - char sqlStmt[DB_MAX_STATEMENT_LEN]; - - // Build the SQL UPDATE statement - GetUpdateStmt(sqlStmt, DB_UPD_KEYFIELDS); - - pDb->WriteSqlLog(sqlStmt); - -#ifdef _CONSOLE - cout << endl << sqlStmt << endl << endl; -#endif - - // Execute the SQL UPDATE statement - return(execUpdate(sqlStmt)); - -} // wxTable::Update() - -/********** wxTable::UpdateWhere() **********/ -bool wxTable::UpdateWhere(char *pWhereClause) -{ - char sqlStmt[DB_MAX_STATEMENT_LEN]; - - // Build the SQL UPDATE statement - GetUpdateStmt(sqlStmt, DB_UPD_WHERE, pWhereClause); - - pDb->WriteSqlLog(sqlStmt); - -#ifdef _CONSOLE - cout << endl << sqlStmt << endl << endl; -#endif - - // Execute the SQL UPDATE statement - return(execUpdate(sqlStmt)); - -} // wxTable::UpdateWhere() - -/********** wxTable::Delete() **********/ -bool wxTable::Delete(void) -{ - char sqlStmt[DB_MAX_STATEMENT_LEN]; - - // Build the SQL DELETE statement - GetDeleteStmt(sqlStmt, DB_DEL_KEYFIELDS); - - pDb->WriteSqlLog(sqlStmt); - - // Execute the SQL DELETE statement - return(execDelete(sqlStmt)); - -} // wxTable::Delete() - -/********** wxTable::DeleteWhere() **********/ -bool wxTable::DeleteWhere(char *pWhereClause) -{ - char sqlStmt[DB_MAX_STATEMENT_LEN]; - - // Build the SQL DELETE statement - GetDeleteStmt(sqlStmt, DB_DEL_WHERE, pWhereClause); - - pDb->WriteSqlLog(sqlStmt); - - // Execute the SQL DELETE statement - return(execDelete(sqlStmt)); - -} // wxTable::DeleteWhere() - -/********** wxTable::DeleteMatching() **********/ -bool wxTable::DeleteMatching(void) -{ - char sqlStmt[DB_MAX_STATEMENT_LEN]; - - // Build the SQL DELETE statement - GetDeleteStmt(sqlStmt, DB_DEL_MATCHING); - - pDb->WriteSqlLog(sqlStmt); - - // Execute the SQL DELETE statement - return(execDelete(sqlStmt)); - -} // wxTable::DeleteMatching() - -/********** wxTable::execDelete() **********/ -bool wxTable::execDelete(char *pSqlStmt) -{ - // Execute the DELETE statement - if (SQLExecDirect(hstmtDelete, (UCHAR FAR *) pSqlStmt, SQL_NTS) != SQL_SUCCESS) - return(pDb->DispAllErrors(henv, hdbc, hstmtDelete)); - - // Record deleted successfully - return(TRUE); - -} // wxTable::execDelete() - -/********** wxTable::execUpdate() **********/ -bool wxTable::execUpdate(char *pSqlStmt) -{ - // Execute the UPDATE statement - if (SQLExecDirect(hstmtUpdate, (UCHAR FAR *) pSqlStmt, SQL_NTS) != SQL_SUCCESS) - return(pDb->DispAllErrors(henv, hdbc, hstmtUpdate)); - - // Record deleted successfully - return(TRUE); - -} // wxTable::execUpdate() - -/********** wxTable::GetUpdateStmt() **********/ -void wxTable::GetUpdateStmt(char *pSqlStmt, int typeOfUpd, char *pWhereClause) -{ - char whereClause[DB_MAX_WHERE_CLAUSE_LEN]; - bool firstColumn = TRUE; - - whereClause[0] = 0; - sprintf(pSqlStmt, "UPDATE %s SET ", tableName); - - // Append a list of columns to be updated - for (int i = 0; i < noCols; i++) - { - // Only append Updateable columns - if (colDefs[i].Updateable) - { - if (! firstColumn) - strcat(pSqlStmt, ","); - else - firstColumn = FALSE; - strcat(pSqlStmt, colDefs[i].ColName); - strcat(pSqlStmt, " = ?"); - } - } - - // Append the WHERE clause to the SQL UPDATE statement - strcat(pSqlStmt, " WHERE "); - switch(typeOfUpd) - { - case DB_UPD_KEYFIELDS: - // If the datasource supports the ROWID column, build - // the where on ROWID for efficiency purposes. - // e.g. UPDATE PARTS SET C1 = ?, C2 = ? WHERE ROWID = '111.222.333' - if (CanUpdByROWID()) - { - SDWORD cb; - char rowid[ROWID_LEN]; - - // Get the ROWID value. If not successful retreiving the ROWID, - // simply fall down through the code and build the WHERE clause - // based on the key fields. - if (SQLGetData(hstmt, noCols+1, SQL_C_CHAR, (UCHAR*) rowid, ROWID_LEN, &cb) == SQL_SUCCESS) - { - strcat(pSqlStmt, "ROWID = '"); - strcat(pSqlStmt, rowid); - strcat(pSqlStmt, "'"); - break; - } - } - // Unable to delete by ROWID, so build a WHERE - // clause based on the keyfields. - GetWhereClause(whereClause, DB_WHERE_KEYFIELDS); - strcat(pSqlStmt, whereClause); - break; - case DB_UPD_WHERE: - strcat(pSqlStmt, pWhereClause); - break; - } - -} // GetUpdateStmt() - -/********** wxTable::GetDeleteStmt() **********/ -void wxTable::GetDeleteStmt(char *pSqlStmt, int typeOfDel, char *pWhereClause) -{ - char whereClause[DB_MAX_WHERE_CLAUSE_LEN]; - - whereClause[0] = 0; - - // Handle the case of DeleteWhere() and the where clause is blank. It should - // delete all records from the database in this case. - if (typeOfDel == DB_DEL_WHERE && (pWhereClause == 0 || strlen(pWhereClause) == 0)) - { - sprintf(pSqlStmt, "DELETE FROM %s", tableName); - return; - } - - sprintf(pSqlStmt, "DELETE FROM %s WHERE ", tableName); - - // Append the WHERE clause to the SQL DELETE statement - switch(typeOfDel) - { - case DB_DEL_KEYFIELDS: - // If the datasource supports the ROWID column, build - // the where on ROWID for efficiency purposes. - // e.g. DELETE FROM PARTS WHERE ROWID = '111.222.333' - if (CanUpdByROWID()) - { - SDWORD cb; - char rowid[ROWID_LEN]; - - // Get the ROWID value. If not successful retreiving the ROWID, - // simply fall down through the code and build the WHERE clause - // based on the key fields. - if (SQLGetData(hstmt, noCols+1, SQL_C_CHAR, (UCHAR*) rowid, ROWID_LEN, &cb) == SQL_SUCCESS) - { - strcat(pSqlStmt, "ROWID = '"); - strcat(pSqlStmt, rowid); - strcat(pSqlStmt, "'"); - break; - } - } - // Unable to delete by ROWID, so build a WHERE - // clause based on the keyfields. - GetWhereClause(whereClause, DB_WHERE_KEYFIELDS); - strcat(pSqlStmt, whereClause); - break; - case DB_DEL_WHERE: - strcat(pSqlStmt, pWhereClause); - break; - case DB_DEL_MATCHING: - GetWhereClause(whereClause, DB_WHERE_MATCHING); - strcat(pSqlStmt, whereClause); - break; - } - -} // GetDeleteStmt() - -/********** wxTable::GetWhereClause() **********/ -/* - * Note: GetWhereClause() currently ignores timestamp columns. - * They are not included as part of the where clause. - */ - -void wxTable::GetWhereClause(char *pWhereClause, int typeOfWhere, char *qualTableName) -{ - bool moreThanOneColumn = FALSE; - char colValue[255]; - - // Loop through the columns building a where clause as you go - for (int i = 0; i < noCols; i++) - { - // Determine if this column should be included in the WHERE clause - if ((typeOfWhere == DB_WHERE_KEYFIELDS && colDefs[i].KeyField) || - (typeOfWhere == DB_WHERE_MATCHING && (! IsColNull(i)))) - { - // Skip over timestamp columns - if (colDefs[i].SqlCtype == SQL_C_TIMESTAMP) - continue; - // If there is more than 1 column, join them with the keyword "AND" - if (moreThanOneColumn) - strcat(pWhereClause, " AND "); - else - moreThanOneColumn = TRUE; - // Concatenate where phrase for the column - if (qualTableName && strlen(qualTableName)) - { - strcat(pWhereClause, qualTableName); - strcat(pWhereClause, "."); - } - strcat(pWhereClause, colDefs[i].ColName); - strcat(pWhereClause, " = "); - switch(colDefs[i].SqlCtype) - { - case SQL_C_CHAR: - sprintf(colValue, "'%s'", (UCHAR FAR *) colDefs[i].PtrDataObj); - break; - case SQL_C_SSHORT: - sprintf(colValue, "%hi", *((SWORD *) colDefs[i].PtrDataObj)); - break; - case SQL_C_USHORT: - sprintf(colValue, "%hu", *((UWORD *) colDefs[i].PtrDataObj)); - break; - case SQL_C_SLONG: - sprintf(colValue, "%li", *((SDWORD *) colDefs[i].PtrDataObj)); - break; - case SQL_C_ULONG: - sprintf(colValue, "%lu", *((UDWORD *) colDefs[i].PtrDataObj)); - break; - case SQL_C_FLOAT: - sprintf(colValue, "%.6f", *((SFLOAT *) colDefs[i].PtrDataObj)); - break; - case SQL_C_DOUBLE: - sprintf(colValue, "%.6f", *((SDOUBLE *) colDefs[i].PtrDataObj)); - break; - } - strcat(pWhereClause, colValue); - } - } - -} // wxTable::GetWhereClause() - -/********** wxTable::IsColNull() **********/ -bool wxTable::IsColNull(int colNo) -{ - switch(colDefs[colNo].SqlCtype) - { - case SQL_C_CHAR: - return(((UCHAR FAR *) colDefs[colNo].PtrDataObj)[0] == 0); - case SQL_C_SSHORT: - return(( *((SWORD *) colDefs[colNo].PtrDataObj)) == 0); - case SQL_C_USHORT: - return(( *((UWORD*) colDefs[colNo].PtrDataObj)) == 0); - case SQL_C_SLONG: - return(( *((SDWORD *) colDefs[colNo].PtrDataObj)) == 0); - case SQL_C_ULONG: - return(( *((UDWORD *) colDefs[colNo].PtrDataObj)) == 0); - case SQL_C_FLOAT: - return(( *((SFLOAT *) colDefs[colNo].PtrDataObj)) == 0); - case SQL_C_DOUBLE: - return((*((SDOUBLE *) colDefs[colNo].PtrDataObj)) == 0); - case SQL_C_TIMESTAMP: - TIMESTAMP_STRUCT *pDt; - pDt = (TIMESTAMP_STRUCT *) colDefs[colNo].PtrDataObj; - if (pDt->year == 0 && pDt->month == 0 && pDt->day == 0) - return(TRUE); - else - return(FALSE); - default: - return(TRUE); - } - -} // wxTable::IsColNull() - -/********** wxTable::CanSelectForUpdate() **********/ - -bool wxTable::CanSelectForUpdate(void) -{ -#ifndef __WXGTK__ - if (pDb->dbInf.posStmts & SQL_PS_SELECT_FOR_UPDATE) - return(TRUE); - else -#endif - return(FALSE); - -} // wxTable::CanSelectForUpdate() - -/********** wxTable::CanUpdByROWID() **********/ -bool wxTable::CanUpdByROWID(void) -{ - -//NOTE: Returning FALSE for now until this can be debugged, -// as the ROWID is not getting updated correctly - return FALSE; - - if ((! strcmp(pDb->dbInf.dbmsName, "Oracle")) || (! strcmp(pDb->dbInf.dbmsName, "ORACLE"))) - return(TRUE); - else - return(FALSE); - -} // wxTable::CanUpdByROWID() - -/********** wxTable::IsCursorClosedOnCommit() **********/ -bool wxTable::IsCursorClosedOnCommit(void) -{ - if (pDb->dbInf.cursorCommitBehavior == SQL_CB_PRESERVE) - return(FALSE); - else - return(TRUE); - -} // wxTable::IsCursorClosedOnCommit() - -/********** wxTable::ClearMemberVars() **********/ -void wxTable::ClearMemberVars(void) -{ - // Loop through the columns setting each member variable to zero - for (int i = 0; i < noCols; i++) - { - switch(colDefs[i].SqlCtype) - { - case SQL_C_CHAR: - ((UCHAR FAR *) colDefs[i].PtrDataObj)[0] = 0; - break; - case SQL_C_SSHORT: - *((SWORD *) colDefs[i].PtrDataObj) = 0; - break; - case SQL_C_USHORT: - *((UWORD*) colDefs[i].PtrDataObj) = 0; - break; - case SQL_C_SLONG: - *((SDWORD *) colDefs[i].PtrDataObj) = 0; - break; - case SQL_C_ULONG: - *((UDWORD *) colDefs[i].PtrDataObj) = 0; - break; - case SQL_C_FLOAT: - *((SFLOAT *) colDefs[i].PtrDataObj) = 0.0f; - break; - case SQL_C_DOUBLE: - *((SDOUBLE *) colDefs[i].PtrDataObj) = 0.0f; - break; - case SQL_C_TIMESTAMP: - TIMESTAMP_STRUCT *pDt; - pDt = (TIMESTAMP_STRUCT *) colDefs[i].PtrDataObj; - pDt->year = 0; - pDt->month = 0; - pDt->day = 0; - pDt->hour = 0; - pDt->minute = 0; - pDt->second = 0; - pDt->fraction = 0; - break; - } - } - -} // wxTable::ClearMemberVars() - -/********** wxTable::SetQueryTimeout() **********/ -bool wxTable::SetQueryTimeout(UDWORD nSeconds) -{ - if (SQLSetStmtOption(c0, SQL_QUERY_TIMEOUT, nSeconds) != SQL_SUCCESS) - return(pDb->DispAllErrors(henv, hdbc, c0)); - if (SQLSetStmtOption(c1, SQL_QUERY_TIMEOUT, nSeconds) != SQL_SUCCESS) - return(pDb->DispAllErrors(henv, hdbc, c1)); - if (SQLSetStmtOption(c2, SQL_QUERY_TIMEOUT, nSeconds) != SQL_SUCCESS) - return(pDb->DispAllErrors(henv, hdbc, c2)); -// if (SQLSetStmtOption(c3, SQL_QUERY_TIMEOUT, nSeconds) != SQL_SUCCESS) -// return(pDb->DispAllErrors(henv, hdbc, c3)); -// if (SQLSetStmtOption(c4, SQL_QUERY_TIMEOUT, nSeconds) != SQL_SUCCESS) -// return(pDb->DispAllErrors(henv, hdbc, c4)); -// if (SQLSetStmtOption(c5, SQL_QUERY_TIMEOUT, nSeconds) != SQL_SUCCESS) -// return(pDb->DispAllErrors(henv, hdbc, c5)); - if (SQLSetStmtOption(hstmtInsert, SQL_QUERY_TIMEOUT, nSeconds) != SQL_SUCCESS) - return(pDb->DispAllErrors(henv, hdbc, hstmtInsert)); - if (SQLSetStmtOption(hstmtUpdate, SQL_QUERY_TIMEOUT, nSeconds) != SQL_SUCCESS) - return(pDb->DispAllErrors(henv, hdbc, hstmtUpdate)); - if (SQLSetStmtOption(hstmtDelete, SQL_QUERY_TIMEOUT, nSeconds) != SQL_SUCCESS) - return(pDb->DispAllErrors(henv, hdbc, hstmtDelete)); - if (SQLSetStmtOption(hstmtCount, SQL_QUERY_TIMEOUT, nSeconds) != SQL_SUCCESS) - return(pDb->DispAllErrors(henv, hdbc, hstmtCount)); - - // Completed Successfully - return(TRUE); - -} // wxTable::SetQueryTimeout() - -/********** wxTable::SetColDefs() **********/ -void wxTable::SetColDefs (int index, char *fieldName, int dataType, void *pData, - int cType, int size, bool keyField, bool upd, - bool insAllow, bool derivedCol) -{ - // Please, no uint, it doesn't exist for VC++ - if (strlen(fieldName) > (unsigned int) DB_MAX_COLUMN_NAME_LEN) // glt 4/21/97 - { - strncpy (colDefs[index].ColName, fieldName, DB_MAX_COLUMN_NAME_LEN); - colDefs[index].ColName[DB_MAX_COLUMN_NAME_LEN] = 0; // glt 10/23/97 - } - else - strcpy(colDefs[index].ColName, fieldName); - - colDefs[index].DbDataType = dataType; - colDefs[index].PtrDataObj = pData; - colDefs[index].SqlCtype = cType; - colDefs[index].SzDataObj = size; - colDefs[index].KeyField = keyField; - colDefs[index].DerivedCol = derivedCol; - // Derived columns by definition would NOT be "Insertable" or "Updateable" - if (derivedCol) - { - colDefs[index].Updateable = FALSE; - colDefs[index].InsertAllowed = FALSE; - } - else - { - colDefs[index].Updateable = upd; - colDefs[index].InsertAllowed = insAllow; - } - -} // wxTable::SetColDefs() - -/********** wxTable::SetCursor() **********/ -bool wxTable::SetCursor(int cursorNo) -{ - switch(cursorNo) - { - case DB_CURSOR0: - hstmt = c0; - // currCursorNo doesn't change since Cursor0 is a temp cursor - break; - case DB_CURSOR1: - hstmt = c1; - currCursorNo = DB_CURSOR1; - break; - case DB_CURSOR2: - hstmt = c2; - currCursorNo = DB_CURSOR2; - break; -// case DB_CURSOR3: -// hstmt = c3; -// currCursorNo = DB_CURSOR3; -// break; -// case DB_CURSOR4: -// hstmt = c4; -// currCursorNo = DB_CURSOR4; -// break; -// case DB_CURSOR5: -// hstmt = c5; -// currCursorNo = DB_CURSOR5; -// break; - default: - return(FALSE); - } - - // Refresh the current record -#ifndef FWD_ONLY_CURSORS - UDWORD cRowsFetched; - UWORD rowStatus; - SQLExtendedFetch(hstmt, SQL_FETCH_NEXT, 0, &cRowsFetched, &rowStatus); - SQLExtendedFetch(hstmt, SQL_FETCH_PRIOR, 0, &cRowsFetched, &rowStatus); -#endif - - // Completed successfully - return(TRUE); - -} // wxTable::SetCursor() - -/********** wxTable::Count() **********/ -ULONG wxTable::Count(void) -{ - ULONG l; - char sqlStmt[DB_MAX_STATEMENT_LEN]; - SDWORD cb; - - // Build a "SELECT COUNT(*) FROM queryTableName [WHERE whereClause]" SQL Statement - strcpy(sqlStmt, "SELECT COUNT(*) FROM "); - strcat(sqlStmt, queryTableName); - - if (from && strlen(from)) - strcat(sqlStmt, from); - - // Add the where clause if one is provided - if (where && strlen(where)) - { - strcat(sqlStmt, " WHERE "); - strcat(sqlStmt, where); - } - - pDb->WriteSqlLog(sqlStmt); - - // Execute the SQL statement - if (SQLExecDirect(hstmtCount, (UCHAR FAR *) sqlStmt, SQL_NTS) != SQL_SUCCESS) - { - pDb->DispAllErrors(henv, hdbc, hstmtCount); - return(0); - } - - // Fetch the record - if (SQLFetch(hstmtCount) != SQL_SUCCESS) - { - pDb->DispAllErrors(henv, hdbc, hstmtCount); - return(0); - } - - // Obtain the result - if (SQLGetData(hstmtCount, 1, SQL_C_ULONG, (UCHAR*) &l, sizeof(l), &cb) != SQL_SUCCESS) - { - pDb->DispAllErrors(henv, hdbc, hstmtCount); - return(0); - } - - // Free the cursor - if (SQLFreeStmt(hstmtCount, SQL_CLOSE) != SQL_SUCCESS) - pDb->DispAllErrors(henv, hdbc, hstmtCount); - - // Return the record count - return(l); - -} // wxTable::Count() - -/********** wxTable::Refresh() **********/ -bool wxTable::Refresh(void) -{ - bool result = TRUE; - - // Switch to cursor 0 - int cursorNo = GetCursor(); - if (!SetCursor()) - return(FALSE); - - // Save the where and order by clauses - char *saveWhere = where; - char *saveOrderBy = orderBy; - - // Build a where clause to refetch the record with. Try and use the - // ROWID if it's available, ow use the key fields. - char whereClause[DB_MAX_WHERE_CLAUSE_LEN+1]; - strcpy(whereClause, ""); - if (CanUpdByROWID()) - { - SDWORD cb; - char rowid[ROWID_LEN+1]; - - // Get the ROWID value. If not successful retreiving the ROWID, - // simply fall down through the code and build the WHERE clause - // based on the key fields. - if (SQLGetData(hstmt, noCols+1, SQL_C_CHAR, (UCHAR*) rowid, ROWID_LEN, &cb) == SQL_SUCCESS) - { - strcat(whereClause, queryTableName); - strcat(whereClause, ".ROWID = '"); - strcat(whereClause, rowid); - strcat(whereClause, "'"); - } - } - - // If unable to use the ROWID, build a where clause from the keyfields - if (strlen(whereClause) == 0) - GetWhereClause(whereClause, DB_WHERE_KEYFIELDS, queryTableName); - - // Requery the record - where = whereClause; - orderBy = 0; - if (!Query()) - result = FALSE; - - if (result && !GetNext()) - result = FALSE; - - // Switch back to original cursor - if (!SetCursor(cursorNo)) - result = FALSE; - - // Restore the original where and order by clauses - where = saveWhere; - orderBy = saveOrderBy; - - return(result); - -} // wxTable::Refresh() - -#endif - // wxUSE_ODBC - diff --git a/src/common/docmdi.cpp b/src/common/docmdi.cpp deleted file mode 100644 index 0379f04ff8..0000000000 --- a/src/common/docmdi.cpp +++ /dev/null @@ -1,166 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: docmdi.cpp -// Purpose: Frame classes for MDI document/view applications -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "docmdi.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/defs.h" -#endif - -#if wxUSE_DOC_VIEW_ARCHITECTURE - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include "wx/docmdi.h" - -/* - * Docview MDI parent frame - */ - -IMPLEMENT_CLASS(wxDocMDIParentFrame, wxMDIParentFrame) - -BEGIN_EVENT_TABLE(wxDocMDIParentFrame, wxMDIParentFrame) - EVT_MENU(wxID_EXIT, wxDocMDIParentFrame::OnExit) - EVT_MENU_RANGE(wxID_FILE1, wxID_FILE9, wxDocMDIParentFrame::OnMRUFile) - EVT_CLOSE(wxDocMDIParentFrame::OnCloseWindow) -END_EVENT_TABLE() - -wxDocMDIParentFrame::wxDocMDIParentFrame(wxDocManager *manager, wxFrame *frame, wxWindowID id, const wxString& title, - const wxPoint& pos, const wxSize& size, long style, const wxString& name): - wxMDIParentFrame(frame, id, title, pos, size, style, name) -{ - m_docManager = manager; -} - -void wxDocMDIParentFrame::OnExit(wxCommandEvent& WXUNUSED(event)) -{ - Close(); -} - -void wxDocMDIParentFrame::OnMRUFile(wxCommandEvent& event) -{ - wxString f(m_docManager->GetHistoryFile(event.GetSelection() - wxID_FILE1)); - if (f != "") - (void)m_docManager->CreateDocument(f, wxDOC_SILENT); -} - -// Extend event processing to search the view's event table -bool wxDocMDIParentFrame::ProcessEvent(wxEvent& event) -{ - // Try the document manager, then do default processing - if (!m_docManager || !m_docManager->ProcessEvent(event)) - return wxEvtHandler::ProcessEvent(event); - else - return TRUE; -} - -void wxDocMDIParentFrame::OnCloseWindow(wxCloseEvent& event) -{ - if (m_docManager->Clear(!event.CanVeto())) - { - this->Destroy(); - } - else - event.Veto(); -} - - -/* - * Default document child frame for MDI children - */ - -IMPLEMENT_CLASS(wxDocMDIChildFrame, wxMDIChildFrame) - -BEGIN_EVENT_TABLE(wxDocMDIChildFrame, wxMDIChildFrame) - EVT_ACTIVATE(wxDocMDIChildFrame::OnActivate) - EVT_CLOSE(wxDocMDIChildFrame::OnCloseWindow) -END_EVENT_TABLE() - -wxDocMDIChildFrame::wxDocMDIChildFrame(wxDocument *doc, wxView *view, wxMDIParentFrame *frame, wxWindowID id, - const wxString& title, const wxPoint& pos, const wxSize& size, long style, const wxString& name): - wxMDIChildFrame(frame, id, title, pos, size, style, name) -{ - m_childDocument = doc; - m_childView = view; - if (view) - view->SetFrame(this); -} - -wxDocMDIChildFrame::~wxDocMDIChildFrame(void) -{ - m_childView = (wxView *) NULL; -} - -// Extend event processing to search the view's event table -bool wxDocMDIChildFrame::ProcessEvent(wxEvent& event) -{ - if ( !m_childView || ! m_childView->ProcessEvent(event) ) - { - // Only hand up to the parent if it's a menu command - if (!event.IsKindOf(CLASSINFO(wxCommandEvent)) || !GetParent() || !GetParent()->ProcessEvent(event)) - return wxEvtHandler::ProcessEvent(event); - else - return TRUE; - } - else - return TRUE; -} - -void wxDocMDIChildFrame::OnActivate(wxActivateEvent& event) -{ - wxMDIChildFrame::OnActivate(event); - - if (event.GetActive() && m_childView) - m_childView->Activate(event.GetActive()); -} - -void wxDocMDIChildFrame::OnCloseWindow(wxCloseEvent& event) -{ - // Close view but don't delete the frame while doing so! - // ...since it will be deleted by wxWindows if we return TRUE. - if (m_childView) - { - bool ans = FALSE; - if (!event.CanVeto()) - ans = TRUE; // Must delete. - else - ans = m_childView->Close(FALSE); // FALSE means don't delete associated window - - if (ans) - { - m_childView->Activate(FALSE); - delete m_childView; - m_childView = (wxView *) NULL; - m_childDocument = (wxDocument *) NULL; - - this->Destroy(); - } - else - event.Veto(); - } - else - event.Veto(); -} - -#endif - // wxUSE_DOC_VIEW_ARCHITECTURE - diff --git a/src/common/docview.cpp b/src/common/docview.cpp deleted file mode 100644 index ae846c0c8f..0000000000 --- a/src/common/docview.cpp +++ /dev/null @@ -1,1952 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: docview.cpp -// Purpose: Document/view classes -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "docview.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/defs.h" -#endif - -#if wxUSE_DOC_VIEW_ARCHITECTURE - -#ifndef WX_PRECOMP -#include "wx/string.h" -#include "wx/utils.h" -#include "wx/app.h" -#include "wx/dc.h" -#include "wx/dialog.h" -#include "wx/menu.h" -#include "wx/list.h" -#include "wx/filedlg.h" -#include -#endif - -#ifdef __WXGTK__ -#include "wx/mdi.h" -#endif - -#include "wx/msgdlg.h" -#include "wx/choicdlg.h" -#include "wx/docview.h" -#include "wx/printdlg.h" -#include "wx/confbase.h" - -#include -#include - -#if wxUSE_IOSTREAMH -#include -#include -#else -#include -#include -# ifdef _MSC_VER - using namespace std; -# endif -#endif - -#if !USE_SHARED_LIBRARY -IMPLEMENT_ABSTRACT_CLASS(wxDocument, wxEvtHandler) -IMPLEMENT_ABSTRACT_CLASS(wxView, wxEvtHandler) -IMPLEMENT_ABSTRACT_CLASS(wxDocTemplate, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxDocManager, wxEvtHandler) -IMPLEMENT_CLASS(wxDocChildFrame, wxFrame) -IMPLEMENT_CLASS(wxDocParentFrame, wxFrame) -#if wxUSE_PRINTING_ARCHITECTURE -IMPLEMENT_DYNAMIC_CLASS(wxDocPrintout, wxPrintout) -#endif -IMPLEMENT_CLASS(wxCommand, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxCommandProcessor, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxFileHistory, wxObject) -// IMPLEMENT_DYNAMIC_CLASS(wxPrintInfo, wxObject) -#endif - -/* - * Definition of wxDocument - */ - -wxDocument::wxDocument(wxDocument *parent) -{ - m_documentModified=FALSE; - m_documentFile=""; - m_documentTitle=""; - m_documentParent=parent; - m_documentTemplate = (wxDocTemplate *) NULL; - m_documentTypeName = ""; - m_savedYet = FALSE; -} - -bool wxDocument::DeleteContents(void) -{ - return TRUE; -} - -wxDocument::~wxDocument(void) -{ - DeleteContents(); - - if (m_commandProcessor) - delete m_commandProcessor; - - GetDocumentManager()->RemoveDocument(this); - - // Not safe to do here, since it'll - // invoke virtual view functions expecting to see - // valid derived objects: and by the time we get - // here, we've called destructors higher up. -// DeleteAllViews(); -} - -bool wxDocument::Close(void) -{ - if (OnSaveModified()) - return OnCloseDocument(); - else - return FALSE; -} - -bool wxDocument::OnCloseDocument(void) -{ - DeleteContents(); - Modify(FALSE); - return TRUE; -} - -// Note that this implicitly deletes the document when -// the last view is deleted. -bool wxDocument::DeleteAllViews(void) -{ - wxNode *node = m_documentViews.First(); - while (node) - { - wxView *view = (wxView *)node->Data(); - if (!view->Close()) - return FALSE; - - wxNode *next = node->Next(); - - delete view; // Deletes node implicitly - node = next; - } - return TRUE; -} - -wxView *wxDocument::GetFirstView(void) const -{ - if (m_documentViews.Number() == 0) - return (wxView *) NULL; - return (wxView *)m_documentViews.First()->Data(); -} - -wxDocManager *wxDocument::GetDocumentManager(void) const -{ - return m_documentTemplate->GetDocumentManager(); -} - -bool wxDocument::OnNewDocument(void) -{ - if (!OnSaveModified()) - return FALSE; - - if (OnCloseDocument()==FALSE) return FALSE; - DeleteContents(); - Modify(FALSE); - SetDocumentSaved(FALSE); - - wxString name; - GetDocumentManager()->MakeDefaultName(name); - SetTitle(name); - SetFilename(name, TRUE); - - return TRUE; -} - -bool wxDocument::Save(void) -{ - bool ret = FALSE; - - if (!IsModified()) return TRUE; - if (m_documentFile == "" || !m_savedYet) - ret = SaveAs(); - else - ret = OnSaveDocument(m_documentFile); - if ( ret ) - SetDocumentSaved(TRUE); - return ret; -} - -bool wxDocument::SaveAs(void) -{ - wxDocTemplate *docTemplate = GetDocumentTemplate(); - if (!docTemplate) - return FALSE; - - wxString tmp = wxFileSelector(_("Save as"), - docTemplate->GetDirectory(), - GetFilename(), - docTemplate->GetDefaultExtension(), - docTemplate->GetFileFilter(), - wxSAVE | wxOVERWRITE_PROMPT, - GetDocumentWindow()); - - if (tmp.IsEmpty()) - return FALSE; - - wxString fileName(tmp); - wxString path(""); - wxString name(""); - wxString ext(""); - wxSplitPath(fileName, & path, & name, & ext); - - if (ext.IsEmpty() || ext == "") - { - fileName += "."; - fileName += docTemplate->GetDefaultExtension(); - } - - SetFilename(fileName); - SetTitle(wxFileNameFromPath(fileName)); - - GetDocumentManager()->AddFileToHistory(fileName); - - // Notify the views that the filename has changed - wxNode *node = m_documentViews.First(); - while (node) - { - wxView *view = (wxView *)node->Data(); - view->OnChangeFilename(); - node = node->Next(); - } - - return OnSaveDocument(m_documentFile); -} - -bool wxDocument::OnSaveDocument(const wxString& file) -{ - if (file == "") - return FALSE; - - wxString msgTitle; - if (wxTheApp->GetAppName() != "") - msgTitle = wxTheApp->GetAppName(); - else - msgTitle = wxString(_("File error")); - - ofstream store(file); - if (store.fail() || store.bad()) - { - (void)wxMessageBox(_("Sorry, could not open this file for saving."), msgTitle, wxOK | wxICON_EXCLAMATION, - GetDocumentWindow()); - // Saving error - return FALSE; - } - if (SaveObject(store)==FALSE) - { - (void)wxMessageBox(_("Sorry, could not save this file."), msgTitle, wxOK | wxICON_EXCLAMATION, - GetDocumentWindow()); - // Saving error - return FALSE; - } - Modify(FALSE); - SetFilename(file); - return TRUE; -} - -bool wxDocument::OnOpenDocument(const wxString& file) -{ - if (!OnSaveModified()) - return FALSE; - - wxString msgTitle; - if (wxTheApp->GetAppName() != "") - msgTitle = wxTheApp->GetAppName(); - else - msgTitle = wxString(_("File error")); - - ifstream store(file); - if (store.fail() || store.bad()) - { - (void)wxMessageBox(_("Sorry, could not open this file."), msgTitle, wxOK|wxICON_EXCLAMATION, - GetDocumentWindow()); - return FALSE; - } - if (LoadObject(store)==FALSE) - { - (void)wxMessageBox(_("Sorry, could not open this file."), msgTitle, wxOK|wxICON_EXCLAMATION, - GetDocumentWindow()); - return FALSE; - } - SetFilename(file, TRUE); - Modify(FALSE); - m_savedYet = TRUE; - - UpdateAllViews(); - - return TRUE; -} - -istream& wxDocument::LoadObject(istream& stream) -{ -// wxObject::LoadObject(stream); - - return stream; -} - -ostream& wxDocument::SaveObject(ostream& stream) -{ -// wxObject::SaveObject(stream); - - return stream; -} - -bool wxDocument::Revert(void) -{ - return FALSE; -} - - -// Get title, or filename if no title, else unnamed -bool wxDocument::GetPrintableName(wxString& buf) const -{ - if (m_documentTitle != "") - { - buf = m_documentTitle; - return TRUE; - } - else if (m_documentFile != "") - { - buf = wxFileNameFromPath(m_documentFile); - return TRUE; - } - else - { - buf = _("unnamed"); - return TRUE; - } -} - -wxWindow *wxDocument::GetDocumentWindow(void) const -{ - wxView *view = GetFirstView(); - if (view) - return view->GetFrame(); - else - return wxTheApp->GetTopWindow(); -} - -wxCommandProcessor *wxDocument::OnCreateCommandProcessor(void) -{ - return new wxCommandProcessor; -} - -// TRUE if safe to close -bool wxDocument::OnSaveModified(void) -{ - if (IsModified()) - { - wxString title; - GetPrintableName(title); - - wxString msgTitle; - if (wxTheApp->GetAppName() != "") - msgTitle = wxTheApp->GetAppName(); - else - msgTitle = wxString(_("Warning")); - - wxString prompt; - prompt.Printf(_("Do you want to save changes to document %s?"), - (const char *)title); - int res = wxMessageBox(prompt, msgTitle, - wxYES_NO|wxCANCEL|wxICON_QUESTION, - GetDocumentWindow()); - if (res == wxNO) - { - Modify(FALSE); - return TRUE; - } - else if (res == wxYES) - return Save(); - else if (res == wxCANCEL) - return FALSE; - } - return TRUE; -} - -bool wxDocument::Draw(wxDC& WXUNUSED(context)) -{ - return TRUE; -} - -bool wxDocument::AddView(wxView *view) -{ - if (!m_documentViews.Member(view)) - { - m_documentViews.Append(view); - OnChangedViewList(); - } - return TRUE; -} - -bool wxDocument::RemoveView(wxView *view) -{ - (void)m_documentViews.DeleteObject(view); - OnChangedViewList(); - return TRUE; -} - -bool wxDocument::OnCreate(const wxString& WXUNUSED(path), long flags) -{ - if (GetDocumentTemplate()->CreateView(this, flags)) - return TRUE; - else - return FALSE; -} - -// Called after a view is added or removed. -// The default implementation deletes the document if -// there are no more views. -void wxDocument::OnChangedViewList(void) -{ - if (m_documentViews.Number() == 0) - { - if (OnSaveModified()) - { - delete this; - } - } -} - -void wxDocument::UpdateAllViews(wxView *sender, wxObject *hint) -{ - wxNode *node = m_documentViews.First(); - while (node) - { - wxView *view = (wxView *)node->Data(); - view->OnUpdate(sender, hint); - node = node->Next(); - } -} - -void wxDocument::SetFilename(const wxString& filename, bool notifyViews) -{ - m_documentFile = filename; - if ( notifyViews ) - { - // Notify the views that the filename has changed - wxNode *node = m_documentViews.First(); - while (node) - { - wxView *view = (wxView *)node->Data(); - view->OnChangeFilename(); - node = node->Next(); - } - } -} - - -/* - * Document view - */ - -wxView::wxView(wxDocument *doc) -{ - SetDocument(doc); - - m_viewTypeName = ""; - m_viewFrame = (wxFrame *) NULL; -} - -wxView::~wxView(void) -{ - GetDocumentManager()->ActivateView(this, FALSE, TRUE); - m_viewDocument->RemoveView(this); -} - -// Extend event processing to search the document's event table -bool wxView::ProcessEvent(wxEvent& event) -{ - if ( !GetDocument() || !GetDocument()->ProcessEvent(event) ) - return wxEvtHandler::ProcessEvent(event); - else - return TRUE; -} - -void wxView::OnActivateView(bool WXUNUSED(activate), wxView *WXUNUSED(activeView), wxView *WXUNUSED(deactiveView)) -{ -} - -void wxView::OnPrint(wxDC *dc, wxObject *WXUNUSED(info)) -{ - OnDraw(dc); -} - -void wxView::OnUpdate(wxView *WXUNUSED(sender), wxObject *WXUNUSED(hint)) -{ -} - -void wxView::OnChangeFilename(void) -{ - if (GetFrame() && GetDocument()) - { - wxString name; - GetDocument()->GetPrintableName(name); - - GetFrame()->SetTitle(name); - } -} - -void wxView::SetDocument(wxDocument *doc) -{ - m_viewDocument = doc; - if (doc) - doc->AddView(this); -} - -bool wxView::Close(bool deleteWindow) -{ - if (OnClose(deleteWindow)) - return TRUE; - else - return FALSE; -} - -void wxView::Activate(bool activate) -{ - if (GetDocumentManager()) - { - OnActivateView(activate, this, GetDocumentManager()->GetCurrentView()); - GetDocumentManager()->ActivateView(this, activate); - } -} - -bool wxView::OnClose(bool WXUNUSED(deleteWindow)) -{ - return GetDocument() ? GetDocument()->Close() : TRUE; -} - -#if wxUSE_PRINTING_ARCHITECTURE -wxPrintout *wxView::OnCreatePrintout(void) -{ - return new wxDocPrintout(this); -} -#endif - - -/* - * wxDocTemplate - */ - -wxDocTemplate::wxDocTemplate(wxDocManager *manager, const wxString& descr, - const wxString& filter, const wxString& dir, const wxString& ext, - const wxString& docTypeName, const wxString& viewTypeName, - wxClassInfo *docClassInfo, wxClassInfo *viewClassInfo, long flags) -{ - m_documentManager = manager; - m_flags = flags; - m_description = descr; - m_directory = dir; - m_defaultExt = ext; - m_fileFilter = filter; - m_flags = flags; - m_docTypeName = docTypeName; - m_viewTypeName = viewTypeName; - m_documentManager->AssociateTemplate(this); - - m_docClassInfo = docClassInfo; - m_viewClassInfo = viewClassInfo; -} - -wxDocTemplate::~wxDocTemplate(void) -{ - m_documentManager->DisassociateTemplate(this); -} - -// Tries to dynamically construct an object of the right -// class. -wxDocument *wxDocTemplate::CreateDocument(const wxString& path, long flags) -{ - if (!m_docClassInfo) - return (wxDocument *) NULL; - wxDocument *doc = (wxDocument *)m_docClassInfo->CreateObject(); - doc->SetFilename(path); - doc->SetDocumentTemplate(this); - GetDocumentManager()->AddDocument(doc); - doc->SetCommandProcessor(doc->OnCreateCommandProcessor()); - - if (doc->OnCreate(path, flags)) - return doc; - else - { - delete doc; - return (wxDocument *) NULL; - } -} - -wxView *wxDocTemplate::CreateView(wxDocument *doc, long flags) -{ - if (!m_viewClassInfo) - return (wxView *) NULL; - wxView *view = (wxView *)m_viewClassInfo->CreateObject(); - view->SetDocument(doc); - if (view->OnCreate(doc, flags)) - { - return view; - } - else - { - delete view; - return (wxView *) NULL; - } -} - -BEGIN_EVENT_TABLE(wxDocManager, wxEvtHandler) - EVT_MENU(wxID_OPEN, wxDocManager::OnFileOpen) - EVT_MENU(wxID_CLOSE, wxDocManager::OnFileClose) - EVT_MENU(wxID_REVERT, wxDocManager::OnFileRevert) - EVT_MENU(wxID_NEW, wxDocManager::OnFileNew) - EVT_MENU(wxID_SAVE, wxDocManager::OnFileSave) - EVT_MENU(wxID_SAVEAS, wxDocManager::OnFileSaveAs) - EVT_MENU(wxID_UNDO, wxDocManager::OnUndo) - EVT_MENU(wxID_REDO, wxDocManager::OnRedo) - EVT_MENU(wxID_PRINT, wxDocManager::OnPrint) - EVT_MENU(wxID_PRINT_SETUP, wxDocManager::OnPrintSetup) - EVT_MENU(wxID_PREVIEW, wxDocManager::OnPreview) -END_EVENT_TABLE() - -wxDocManager::wxDocManager(long flags, bool initialize) -{ - m_defaultDocumentNameCounter = 1; - m_flags = flags; - m_currentView = (wxView *) NULL; - m_maxDocsOpen = 10000; - m_fileHistory = (wxFileHistory *) NULL; - if (initialize) - Initialize(); -} - -wxDocManager::~wxDocManager(void) -{ - Clear(); - if (m_fileHistory) - delete m_fileHistory; -} - -bool wxDocManager::Clear(bool force) -{ - wxNode *node = m_docs.First(); - while (node) - { - wxDocument *doc = (wxDocument *)node->Data(); - wxNode *next = node->Next(); - - if (!doc->Close() && !force) - return FALSE; - - // Implicitly deletes the document when the last - // view is removed (deleted) - doc->DeleteAllViews(); - - // Check document is deleted - if (m_docs.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; - } - node = m_templates.First(); - while (node) - { - wxDocTemplate *templ = (wxDocTemplate*) node->Data(); - wxNode* next = node->Next(); - delete templ; - node = next; - } - return TRUE; -} - -bool wxDocManager::Initialize(void) -{ - m_fileHistory = OnCreateFileHistory(); - return TRUE; -} - -wxFileHistory *wxDocManager::OnCreateFileHistory(void) -{ - return new wxFileHistory; -} - -void wxDocManager::OnFileClose(wxCommandEvent& WXUNUSED(event)) -{ - wxDocument *doc = GetCurrentDocument(); - if (!doc) - return; - if (doc->Close()) - { - doc->DeleteAllViews(); - if (m_docs.Member(doc)) - delete doc; - } -} - -void wxDocManager::OnFileNew(wxCommandEvent& WXUNUSED(event)) -{ - CreateDocument(wxString(""), wxDOC_NEW); -} - -void wxDocManager::OnFileOpen(wxCommandEvent& WXUNUSED(event)) -{ - CreateDocument(wxString(""), 0); -} - -void wxDocManager::OnFileRevert(wxCommandEvent& WXUNUSED(event)) -{ - wxDocument *doc = GetCurrentDocument(); - if (!doc) - return; - doc->Revert(); -} - -void wxDocManager::OnFileSave(wxCommandEvent& WXUNUSED(event)) -{ - wxDocument *doc = GetCurrentDocument(); - if (!doc) - return; - doc->Save(); -} - -void wxDocManager::OnFileSaveAs(wxCommandEvent& WXUNUSED(event)) -{ - wxDocument *doc = GetCurrentDocument(); - if (!doc) - return; - doc->SaveAs(); -} - -void wxDocManager::OnPrint(wxCommandEvent& WXUNUSED(event)) -{ - wxView *view = GetCurrentView(); - if (!view) - return; - - wxPrintout *printout = view->OnCreatePrintout(); - if (printout) - { - wxPrinter printer; - printer.Print(view->GetFrame(), printout, TRUE); - - delete printout; - } -} - -void wxDocManager::OnPrintSetup(wxCommandEvent& WXUNUSED(event)) -{ - wxWindow *parentWin = wxTheApp->GetTopWindow(); - wxView *view = GetCurrentView(); - if (view) - parentWin = view->GetFrame(); - - wxPrintData data; - - wxPrintDialog printerDialog(parentWin, & data); - printerDialog.GetPrintData().SetSetupDialog(TRUE); - printerDialog.ShowModal(); -} - -void wxDocManager::OnPreview(wxCommandEvent& WXUNUSED(event)) -{ - wxView *view = GetCurrentView(); - if (!view) - return; - - wxPrintout *printout = view->OnCreatePrintout(); - if (printout) - { - // Pass two printout objects: for preview, and possible printing. - wxPrintPreviewBase *preview = (wxPrintPreviewBase *) NULL; - preview = new wxPrintPreview(printout, view->OnCreatePrintout()); - - wxPreviewFrame *frame = new wxPreviewFrame(preview, (wxFrame *)wxTheApp->GetTopWindow(), _("Print Preview"), - wxPoint(100, 100), wxSize(600, 650)); - frame->Centre(wxBOTH); - frame->Initialize(); - frame->Show(TRUE); - } -} - -void wxDocManager::OnUndo(wxCommandEvent& WXUNUSED(event)) -{ - wxDocument *doc = GetCurrentDocument(); - if (!doc) - return; - if (doc->GetCommandProcessor()) - doc->GetCommandProcessor()->Undo(); -} - -void wxDocManager::OnRedo(wxCommandEvent& WXUNUSED(event)) -{ - wxDocument *doc = GetCurrentDocument(); - if (!doc) - return; - if (doc->GetCommandProcessor()) - doc->GetCommandProcessor()->Redo(); -} - -wxView *wxDocManager::GetCurrentView(void) const -{ - if (m_currentView) - return m_currentView; - if (m_docs.Number() == 1) - { - wxDocument* doc = (wxDocument*) m_docs.First()->Data(); - return doc->GetFirstView(); - } - return (wxView *) NULL; -} - -// Extend event processing to search the view's event table -bool wxDocManager::ProcessEvent(wxEvent& event) -{ - wxView* view = GetCurrentView(); - if (view) - { - if (view->ProcessEvent(event)) - return TRUE; - } - return wxEvtHandler::ProcessEvent(event); -} - -wxDocument *wxDocManager::CreateDocument(const wxString& path, long flags) -{ - wxDocTemplate **templates = new wxDocTemplate *[m_templates.Number()]; - int i; - int n = 0; - for (i = 0; i < m_templates.Number(); i++) - { - wxDocTemplate *temp = (wxDocTemplate *)(m_templates.Nth(i)->Data()); - if (temp->IsVisible()) - { - templates[n] = temp; - n ++; - } - } - if (n == 0) - { - delete[] templates; - return (wxDocument *) NULL; - } - - // If we've reached the max number of docs, close the - // first one. - if (GetDocuments().Number() >= m_maxDocsOpen) - { - wxDocument *doc = (wxDocument *)GetDocuments().First()->Data(); - if (doc->Close()) - { - // Implicitly deletes the document when - // the last view is deleted - doc->DeleteAllViews(); - - // Check we're really deleted - if (m_docs.Member(doc)) - delete doc; - } - else - return (wxDocument *) NULL; - } - - // New document: user chooses a template, unless there's only one. - if (flags & wxDOC_NEW) - { - if (n == 1) - { - wxDocTemplate *temp = templates[0]; - delete[] templates; - wxDocument *newDoc = temp->CreateDocument(path, flags); - if (newDoc) - { - newDoc->SetDocumentName(temp->GetDocumentName()); - newDoc->SetDocumentTemplate(temp); - newDoc->OnNewDocument(); - } - return newDoc; - } - - wxDocTemplate *temp = SelectDocumentType(templates, n); - delete[] templates; - if (temp) - { - wxDocument *newDoc = temp->CreateDocument(path, flags); - if (newDoc) - { - newDoc->SetDocumentName(temp->GetDocumentName()); - newDoc->SetDocumentTemplate(temp); - newDoc->OnNewDocument(); - } - return newDoc; - } - else - return (wxDocument *) NULL; - } - - // Existing document - wxDocTemplate *temp = (wxDocTemplate *) NULL; - - wxString path2(""); - if (path != "") - path2 = path; - - if (flags & wxDOC_SILENT) - temp = FindTemplateForPath(path2); - else - temp = SelectDocumentPath(templates, n, path2, flags); - - delete[] templates; - - if (temp) - { - wxDocument *newDoc = temp->CreateDocument(path2, flags); - if (newDoc) - { - newDoc->SetDocumentName(temp->GetDocumentName()); - newDoc->SetDocumentTemplate(temp); - if (!newDoc->OnOpenDocument(path2)) - { - delete newDoc; - return (wxDocument *) NULL; - } - AddFileToHistory(path2); - } - return newDoc; - } - else - return (wxDocument *) NULL; -} - -wxView *wxDocManager::CreateView(wxDocument *doc, long flags) -{ - wxDocTemplate **templates = new wxDocTemplate *[m_templates.Number()]; - int n =0; - int i; - for (i = 0; i < m_templates.Number(); i++) - { - wxDocTemplate *temp = (wxDocTemplate *)(m_templates.Nth(i)->Data()); - if (temp->IsVisible()) - { - if (temp->GetDocumentName() == doc->GetDocumentName()) - { - templates[n] = temp; - n ++; - } - } - } - if (n == 0) - { - delete[] templates; - return (wxView *) NULL; - } - if (n == 1) - { - wxDocTemplate *temp = templates[0]; - delete[] templates; - wxView *view = temp->CreateView(doc, flags); - if (view) - view->SetViewName(temp->GetViewName()); - return view; - } - - wxDocTemplate *temp = SelectViewType(templates, n); - delete[] templates; - if (temp) - { - wxView *view = temp->CreateView(doc, flags); - if (view) - view->SetViewName(temp->GetViewName()); - return view; - } - else - return (wxView *) NULL; -} - -// Not yet implemented -void wxDocManager::DeleteTemplate(wxDocTemplate *WXUNUSED(temp), long WXUNUSED(flags)) -{ -} - -// Not yet implemented -bool wxDocManager::FlushDoc(wxDocument *WXUNUSED(doc)) -{ - return FALSE; -} - -wxDocument *wxDocManager::GetCurrentDocument(void) const -{ - if (m_currentView) - return m_currentView->GetDocument(); - else - return (wxDocument *) NULL; -} - -// Make a default document name -bool wxDocManager::MakeDefaultName(wxString& name) -{ - name.Printf(_("unnamed%d"), m_defaultDocumentNameCounter); - m_defaultDocumentNameCounter++; - - return TRUE; -} - -// Not yet implemented -wxDocTemplate *wxDocManager::MatchTemplate(const wxString& WXUNUSED(path)) -{ - return (wxDocTemplate *) NULL; -} - -// File history management -void wxDocManager::AddFileToHistory(const wxString& file) -{ - if (m_fileHistory) - m_fileHistory->AddFileToHistory(file); -} - -wxString wxDocManager::GetHistoryFile(int i) const -{ - if (m_fileHistory) - return wxString(m_fileHistory->GetHistoryFile(i)); - else - return wxString(""); -} - -void wxDocManager::FileHistoryUseMenu(wxMenu *menu) -{ - if (m_fileHistory) - m_fileHistory->UseMenu(menu); -} - -void wxDocManager::FileHistoryRemoveMenu(wxMenu *menu) -{ - if (m_fileHistory) - m_fileHistory->RemoveMenu(menu); -} - -#if wxUSE_CONFIG -void wxDocManager::FileHistoryLoad(wxConfigBase& config) -{ - if (m_fileHistory) - m_fileHistory->Load(config); -} - -void wxDocManager::FileHistorySave(wxConfigBase& config) -{ - if (m_fileHistory) - m_fileHistory->Save(config); -} -#endif - -void wxDocManager::FileHistoryAddFilesToMenu(wxMenu* menu) -{ - if (m_fileHistory) - m_fileHistory->AddFilesToMenu(menu); -} - -void wxDocManager::FileHistoryAddFilesToMenu() -{ - if (m_fileHistory) - m_fileHistory->AddFilesToMenu(); -} - -int wxDocManager::GetNoHistoryFiles(void) const -{ - if (m_fileHistory) - return m_fileHistory->GetNoHistoryFiles(); - else - return 0; -} - -static char *FindExtension(char *path) -{ - static char ext[10]; - int len = strlen(path); - if (path) - { - int i = 0; - for (i = (len-1); i > 0; i --) - if (path[i] == '.') - break; - if (path[i] == '.') - { - int j; - for (j = i+1; j < len; j++) - ext[(int)(j-(i+1))] = (char)wxToLower(path[j]); // NOTE Should not use tolower under UNIX - ext[j-(i+1)] = 0; - return ext; - } - else - return (char *) NULL; - } - else return (char *) NULL; -} - - -// Given a path, try to find a matching template. Won't -// always work, of course. -wxDocTemplate *wxDocManager::FindTemplateForPath(const wxString& path) -{ - char *theExt = FindExtension((char *)(const char *)path); - if (!theExt) - return (wxDocTemplate *) NULL; - wxDocTemplate *theTemplate = (wxDocTemplate *) NULL; - - if (m_templates.Number() == 1) - return (wxDocTemplate *)m_templates.First()->Data(); - - // Find the template which this extension corresponds to - int i; - for (i = 0; i < m_templates.Number(); i++) - { - wxDocTemplate *temp = (wxDocTemplate *)m_templates.Nth(i)->Data(); - if (strcmp(temp->GetDefaultExtension(), theExt) == 0) - { - theTemplate = temp; - break; - } - } - return theTemplate; -} - -// Prompts user to open a file, using file specs in templates. -// How to implement in wxWindows? Must extend the file selector -// dialog or implement own; OR match the extension to the -// template extension. - -#ifdef __WXMSW__ -wxDocTemplate *wxDocManager::SelectDocumentPath(wxDocTemplate **templates, - int noTemplates, wxString& path, long WXUNUSED(flags), bool WXUNUSED(save)) -#else -wxDocTemplate *wxDocManager::SelectDocumentPath(wxDocTemplate **WXUNUSED(templates), - int WXUNUSED(noTemplates), wxString& path, long WXUNUSED(flags), bool WXUNUSED(save)) -#endif -{ - // We can only have multiple filters in Windows -#ifdef __WXMSW__ - wxString descrBuf; - - int i; - for (i = 0; i < noTemplates; i++) - { - if (templates[i]->IsVisible()) - { - // add a '|' to separate this filter from the previous one - if ( !descrBuf.IsEmpty() ) - descrBuf << '|'; - - descrBuf << templates[i]->GetDescription() - << " (" << templates[i]->GetFileFilter() << ") |" - << templates[i]->GetFileFilter(); - } - } -#else - wxString descrBuf = "*.*"; -#endif - - wxString pathTmp = wxFileSelector(_("Select a file"), "", "", "", - descrBuf, 0, wxTheApp->GetTopWindow()); - - if (!pathTmp.IsEmpty()) - { - path = pathTmp; - char *theExt = FindExtension((char *)(const char *)path); - if (!theExt) - return (wxDocTemplate *) NULL; - - // This is dodgy in that we're selecting the template on the - // basis of the file extension, which may not be a standard - // one. We really want to know exactly which template was - // chosen by using a more advanced file selector. - wxDocTemplate *theTemplate = FindTemplateForPath(path); - return theTemplate; - } - else - { - path = ""; - return (wxDocTemplate *) NULL; - } -#if 0 - // In all other windowing systems, until we have more advanced - // file selectors, we must select the document type (template) first, and - // _then_ pop up the file selector. - wxDocTemplate *temp = SelectDocumentType(templates, noTemplates); - if (!temp) - return (wxDocTemplate *) NULL; - - char *pathTmp = wxFileSelector(_("Select a file"), "", "", - temp->GetDefaultExtension(), - temp->GetFileFilter(), - 0, wxTheApp->GetTopWindow()); - - if (pathTmp) - { - path = pathTmp; - return temp; - } - else - return (wxDocTemplate *) NULL; -#endif -} - -wxDocTemplate *wxDocManager::SelectDocumentType(wxDocTemplate **templates, - int noTemplates) -{ - char **strings = new char *[noTemplates]; - char **data = new char *[noTemplates]; - int i; - int n = 0; - for (i = 0; i < noTemplates; i++) - { - if (templates[i]->IsVisible()) - { - strings[n] = WXSTRINGCAST templates[i]->m_description; - data[n] = (char *)templates[i]; - n ++; - } - } - if (n == 0) - { - delete[] strings; - delete[] data; - return (wxDocTemplate *) NULL; - } - else if (n == 1) - { - wxDocTemplate *temp = (wxDocTemplate *)data[0]; - delete[] strings; - delete[] data; - return temp; - } - - wxDocTemplate *theTemplate = (wxDocTemplate *)wxGetSingleChoiceData(_("Select a document template"), _("Templates"), n, - strings, data); - delete[] strings; - delete[] data; - return theTemplate; -} - -wxDocTemplate *wxDocManager::SelectViewType(wxDocTemplate **templates, - int noTemplates) -{ - char **strings = new char *[noTemplates]; - char **data = new char *[noTemplates]; - int i; - int n = 0; - for (i = 0; i < noTemplates; i++) - { - if (templates[i]->IsVisible() && (templates[i]->GetViewName() != "")) - { - strings[n] = WXSTRINGCAST templates[i]->m_viewTypeName; - data[n] = (char *)templates[i]; - n ++; - } - } - wxDocTemplate *theTemplate = (wxDocTemplate *)wxGetSingleChoiceData(_("Select a document view"), _("Views"), n, - strings, data); - delete[] strings; - delete[] data; - return theTemplate; -} - -void wxDocManager::AssociateTemplate(wxDocTemplate *temp) -{ - if (!m_templates.Member(temp)) - m_templates.Append(temp); -} - -void wxDocManager::DisassociateTemplate(wxDocTemplate *temp) -{ - m_templates.DeleteObject(temp); -} - -// Add and remove a document from the manager's list -void wxDocManager::AddDocument(wxDocument *doc) -{ - if (!m_docs.Member(doc)) - m_docs.Append(doc); -} - -void wxDocManager::RemoveDocument(wxDocument *doc) -{ - m_docs.DeleteObject(doc); -} - -// Views or windows should inform the document manager -// when a view is going in or out of focus -void wxDocManager::ActivateView(wxView *view, bool activate, bool WXUNUSED(deleting)) -{ - // If we're deactiving, and if we're not actually deleting the view, then - // don't reset the current view because we may be going to - // a window without a view. - // WHAT DID I MEAN BY THAT EXACTLY? -/* - if (deleting) - { - if (m_currentView == view) - m_currentView = NULL; - } - else -*/ - { - if (activate) - m_currentView = view; - else - m_currentView = (wxView *) NULL; - } -} - -/* - * Default document child frame - */ - -BEGIN_EVENT_TABLE(wxDocChildFrame, wxFrame) - EVT_ACTIVATE(wxDocChildFrame::OnActivate) - EVT_CLOSE(wxDocChildFrame::OnCloseWindow) -END_EVENT_TABLE() - -wxDocChildFrame::wxDocChildFrame(wxDocument *doc, wxView *view, wxFrame *frame, wxWindowID id, const wxString& title, - const wxPoint& pos, const wxSize& size, long style, const wxString& name): - wxFrame(frame, id, title, pos, size, style, name) -{ - m_childDocument = doc; - m_childView = view; - if (view) - view->SetFrame(this); -} - -wxDocChildFrame::~wxDocChildFrame(void) -{ -} - -// Extend event processing to search the view's event table -bool wxDocChildFrame::ProcessEvent(wxEvent& event) -{ - if (m_childView) - m_childView->Activate(TRUE); - - if ( !m_childView || ! m_childView->ProcessEvent(event) ) - { - // Only hand up to the parent if it's a menu command - if (!event.IsKindOf(CLASSINFO(wxCommandEvent)) || !GetParent() || !GetParent()->ProcessEvent(event)) - return wxEvtHandler::ProcessEvent(event); - else - return TRUE; - } - else - return TRUE; -} - -void wxDocChildFrame::OnActivate(wxActivateEvent& event) -{ - wxFrame::OnActivate(event); - - if (m_childView) - m_childView->Activate(event.GetActive()); -} - -void wxDocChildFrame::OnCloseWindow(wxCloseEvent& event) -{ - if (m_childView) - { - bool ans = FALSE; - if (!event.CanVeto()) - ans = TRUE; // Must delete. - else - ans = m_childView->Close(FALSE); // FALSE means don't delete associated window - - if (ans) - { - m_childView->Activate(FALSE); - delete m_childView; - m_childView = (wxView *) NULL; - m_childDocument = (wxDocument *) NULL; - - this->Destroy(); - } - else - event.Veto(); - } - else - event.Veto(); -} - -/* - * Default parent frame - */ - -BEGIN_EVENT_TABLE(wxDocParentFrame, wxFrame) - EVT_MENU(wxID_EXIT, wxDocParentFrame::OnExit) - EVT_MENU_RANGE(wxID_FILE1, wxID_FILE9, wxDocParentFrame::OnMRUFile) - EVT_CLOSE(wxDocParentFrame::OnCloseWindow) -END_EVENT_TABLE() - -wxDocParentFrame::wxDocParentFrame(wxDocManager *manager, wxFrame *frame, wxWindowID id, const wxString& title, - const wxPoint& pos, const wxSize& size, long style, const wxString& name): - wxFrame(frame, id, title, pos, size, style, name) -{ - m_docManager = manager; -} - -void wxDocParentFrame::OnExit(wxCommandEvent& WXUNUSED(event)) -{ - Close(); -} - -void wxDocParentFrame::OnMRUFile(wxCommandEvent& event) -{ - wxString f(m_docManager->GetHistoryFile(event.GetSelection() - wxID_FILE1)); - if (f != "") - (void)m_docManager->CreateDocument(f, wxDOC_SILENT); -} - -// Extend event processing to search the view's event table -bool wxDocParentFrame::ProcessEvent(wxEvent& event) -{ - // Try the document manager, then do default processing - if (!m_docManager || !m_docManager->ProcessEvent(event)) - return wxEvtHandler::ProcessEvent(event); - else - return TRUE; -} - -// Define the behaviour for the frame closing -// - must delete all frames except for the main one. -void wxDocParentFrame::OnCloseWindow(wxCloseEvent& event) -{ - if (m_docManager->Clear(!event.CanVeto())) - { - this->Destroy(); - } - else - event.Veto(); -} - -#if wxUSE_PRINTING_ARCHITECTURE - -wxDocPrintout::wxDocPrintout(wxView *view, const wxString& title): - wxPrintout(WXSTRINGCAST title) -{ - m_printoutView = view; -} - -bool wxDocPrintout::OnPrintPage(int WXUNUSED(page)) -{ - wxDC *dc = GetDC(); - - // Get the logical pixels per inch of screen and printer - int ppiScreenX, ppiScreenY; - GetPPIScreen(&ppiScreenX, &ppiScreenY); - int ppiPrinterX, ppiPrinterY; - GetPPIPrinter(&ppiPrinterX, &ppiPrinterY); - - // This scales the DC so that the printout roughly represents the - // the screen scaling. The text point size _should_ be the right size - // but in fact is too small for some reason. This is a detail that will - // need to be addressed at some point but can be fudged for the - // moment. - float scale = (float)((float)ppiPrinterX/(float)ppiScreenX); - - // Now we have to check in case our real page size is reduced - // (e.g. because we're drawing to a print preview memory DC) - int pageWidth, pageHeight; - int w, h; - dc->GetSize(&w, &h); - GetPageSizePixels(&pageWidth, &pageHeight); - - // If printer pageWidth == current DC width, then this doesn't - // change. But w might be the preview bitmap width, so scale down. - float overallScale = scale * (float)(w/(float)pageWidth); - dc->SetUserScale(overallScale, overallScale); - - if (m_printoutView) - { - m_printoutView->OnDraw(dc); - } - return TRUE; -} - -bool wxDocPrintout::HasPage(int pageNum) -{ - return (pageNum == 1); -} - -bool wxDocPrintout::OnBeginDocument(int startPage, int endPage) -{ - if (!wxPrintout::OnBeginDocument(startPage, endPage)) - return FALSE; - - return TRUE; -} - -void wxDocPrintout::GetPageInfo(int *minPage, int *maxPage, int *selPageFrom, int *selPageTo) -{ - *minPage = 1; - *maxPage = 1; - *selPageFrom = 1; - *selPageTo = 1; -} - -#endif - -/* - * Command processing framework - */ - -wxCommand::wxCommand(bool canUndoIt, const wxString& name) -{ - m_canUndo = canUndoIt; - m_commandName = name; -} - -wxCommand::~wxCommand(void) -{ -} - -// Command processor -wxCommandProcessor::wxCommandProcessor(int maxCommands) -{ - m_maxNoCommands = maxCommands; - m_currentCommand = (wxNode *) NULL; - m_commandEditMenu = (wxMenu *) NULL; -} - -wxCommandProcessor::~wxCommandProcessor(void) -{ - ClearCommands(); -} - -// Pass a command to the processor. The processor calls Do(); -// if successful, is appended to the command history unless -// storeIt is FALSE. -bool wxCommandProcessor::Submit(wxCommand *command, bool storeIt) -{ - bool success = command->Do(); - if (success && storeIt) - { - if (m_commands.Number() == m_maxNoCommands) - { - wxNode *firstNode = m_commands.First(); - wxCommand *firstCommand = (wxCommand *)firstNode->Data(); - delete firstCommand; - delete firstNode; - } - - // Correct a bug: we must chop off the current 'branch' - // so that we're at the end of the command list. - if (!m_currentCommand) - ClearCommands(); - else - { - wxNode *node = m_currentCommand->Next(); - while (node) - { - wxNode *next = node->Next(); - delete (wxCommand *)node->Data(); - delete node; - node = next; - } - } - - m_commands.Append(command); - m_currentCommand = m_commands.Last(); - SetMenuStrings(); - } - return success; -} - -bool wxCommandProcessor::Undo(void) -{ - if (m_currentCommand) - { - wxCommand *command = (wxCommand *)m_currentCommand->Data(); - if (command->CanUndo()) - { - bool success = command->Undo(); - if (success) - { - m_currentCommand = m_currentCommand->Previous(); - SetMenuStrings(); - return TRUE; - } - } - } - return FALSE; -} - -bool wxCommandProcessor::Redo(void) -{ - wxCommand *redoCommand = (wxCommand *) NULL; - wxNode *redoNode = (wxNode *) NULL; - if (m_currentCommand && m_currentCommand->Next()) - { - redoCommand = (wxCommand *)m_currentCommand->Next()->Data(); - redoNode = m_currentCommand->Next(); - } - else - { - if (m_commands.Number() > 0) - { - redoCommand = (wxCommand *)m_commands.First()->Data(); - redoNode = m_commands.First(); - } - } - - if (redoCommand) - { - bool success = redoCommand->Do(); - if (success) - { - m_currentCommand = redoNode; - SetMenuStrings(); - return TRUE; - } - } - return FALSE; -} - -bool wxCommandProcessor::CanUndo(void) const -{ - if (m_currentCommand) - return ((wxCommand *)m_currentCommand->Data())->CanUndo(); - return FALSE; -} - -bool wxCommandProcessor::CanRedo(void) const -{ - if ((m_currentCommand != (wxNode*) NULL) && (m_currentCommand->Next() == (wxNode*) NULL)) - return FALSE; - - if ((m_currentCommand != (wxNode*) NULL) && (m_currentCommand->Next() != (wxNode*) NULL)) - return TRUE; - - if ((m_currentCommand == (wxNode*) NULL) && (m_commands.Number() > 0)) - return TRUE; - - return FALSE; -} - -void wxCommandProcessor::Initialize(void) -{ - m_currentCommand = m_commands.Last(); - SetMenuStrings(); -} - -void wxCommandProcessor::SetMenuStrings(void) -{ - if (m_commandEditMenu) - { - wxString buf; - if (m_currentCommand) - { - wxCommand *command = (wxCommand *)m_currentCommand->Data(); - wxString commandName(command->GetName()); - if (commandName == "") commandName = _("Unnamed command"); - bool canUndo = command->CanUndo(); - if (canUndo) - buf = wxString(_("&Undo ")) + commandName; - else - buf = wxString(_("Can't &Undo ")) + commandName; - - m_commandEditMenu->SetLabel(wxID_UNDO, buf); - m_commandEditMenu->Enable(wxID_UNDO, canUndo); - - // We can redo, if we're not at the end of the history. - if (m_currentCommand->Next()) - { - wxCommand *redoCommand = (wxCommand *)m_currentCommand->Next()->Data(); - wxString redoCommandName(redoCommand->GetName()); - if (redoCommandName == "") redoCommandName = _("Unnamed command"); - buf = wxString(_("&Redo ")) + redoCommandName; - m_commandEditMenu->SetLabel(wxID_REDO, buf); - m_commandEditMenu->Enable(wxID_REDO, TRUE); - } - else - { - m_commandEditMenu->SetLabel(wxID_REDO, _("&Redo")); - m_commandEditMenu->Enable(wxID_REDO, FALSE); - } - } - else - { - m_commandEditMenu->SetLabel(wxID_UNDO, _("&Undo")); - m_commandEditMenu->Enable(wxID_UNDO, FALSE); - - if (m_commands.Number() == 0) - { - m_commandEditMenu->SetLabel(wxID_REDO, _("&Redo")); - m_commandEditMenu->Enable(wxID_REDO, FALSE); - } - else - { - // currentCommand is NULL but there are commands: this means that - // we've undone to the start of the list, but can redo the first. - wxCommand *redoCommand = (wxCommand *)m_commands.First()->Data(); - wxString redoCommandName(redoCommand->GetName()); - if (redoCommandName == "") redoCommandName = _("Unnamed command"); - buf = wxString(_("&Redo ")) + redoCommandName; - m_commandEditMenu->SetLabel(wxID_REDO, buf); - m_commandEditMenu->Enable(wxID_REDO, TRUE); - } - } - } -} - -void wxCommandProcessor::ClearCommands(void) -{ - wxNode *node = m_commands.First(); - while (node) - { - wxCommand *command = (wxCommand *)node->Data(); - delete command; - delete node; - node = m_commands.First(); - } - m_currentCommand = (wxNode *) NULL; -} - - -/* - * File history processor - */ - -wxFileHistory::wxFileHistory(int maxFiles) -{ - m_fileMaxFiles = maxFiles; - m_fileHistoryN = 0; - m_fileHistory = new char *[m_fileMaxFiles]; -} - -wxFileHistory::~wxFileHistory(void) -{ - int i; - for (i = 0; i < m_fileHistoryN; i++) - delete[] m_fileHistory[i]; - delete[] m_fileHistory; -} - -// File history management -void wxFileHistory::AddFileToHistory(const wxString& file) -{ - int i; - // Check we don't already have this file - for (i = 0; i < m_fileHistoryN; i++) - { - if (m_fileHistory[i] && wxString(m_fileHistory[i]) == file) - return; - } - - // Add to the project file history: - // Move existing files (if any) down so we can insert file at beginning. - - // First delete filename that has popped off the end of the array (if any) - if (m_fileHistoryN == m_fileMaxFiles) - { - delete[] m_fileHistory[m_fileMaxFiles-1]; - m_fileHistory[m_fileMaxFiles-1] = (char *) NULL; - } - if (m_fileHistoryN < m_fileMaxFiles) - { - wxNode* node = m_fileMenus.First(); - while (node) - { - wxMenu* menu = (wxMenu*) node->Data(); - if (m_fileHistoryN == 0) - menu->AppendSeparator(); - menu->Append(wxID_FILE1+m_fileHistoryN, _("[EMPTY]")); - node = node->Next(); - } - m_fileHistoryN ++; - } - // Shuffle filenames down - for (i = (m_fileHistoryN-1); i > 0; i--) - { - m_fileHistory[i] = m_fileHistory[i-1]; - } - m_fileHistory[0] = copystring(file); - - for (i = 0; i < m_fileHistoryN; i++) - if (m_fileHistory[i]) - { - wxString buf; - buf.Printf("&%d %s", i+1, m_fileHistory[i]); - wxNode* node = m_fileMenus.First(); - while (node) - { - wxMenu* menu = (wxMenu*) node->Data(); - menu->SetLabel(wxID_FILE1+i, buf); - node = node->Next(); - } - } -} - -wxString wxFileHistory::GetHistoryFile(int i) const -{ - if (i < m_fileHistoryN) - return wxString(m_fileHistory[i]); - else - return wxString(""); -} - -void wxFileHistory::UseMenu(wxMenu *menu) -{ - if (!m_fileMenus.Member(menu)) - m_fileMenus.Append(menu); -} - -void wxFileHistory::RemoveMenu(wxMenu *menu) -{ - m_fileMenus.DeleteObject(menu); -} - -#if wxUSE_CONFIG -void wxFileHistory::Load(wxConfigBase& config) -{ - m_fileHistoryN = 0; - wxString buf; - buf.Printf("file%d", m_fileHistoryN+1); - wxString historyFile; - while ((m_fileHistoryN <= m_fileMaxFiles) && config.Read(buf, &historyFile) && (historyFile != "")) - { - m_fileHistory[m_fileHistoryN] = copystring((const char*) historyFile); - m_fileHistoryN ++; - buf.Printf("file%d", m_fileHistoryN+1); - historyFile = ""; - } - AddFilesToMenu(); -} - -void wxFileHistory::Save(wxConfigBase& config) -{ - int i; - for (i = 0; i < m_fileHistoryN; i++) - { - wxString buf; - buf.Printf("file%d", i+1); - config.Write(buf, wxString(m_fileHistory[i])); - } -} -#endif - -void wxFileHistory::AddFilesToMenu() -{ - if (m_fileHistoryN > 0) - { - wxNode* node = m_fileMenus.First(); - while (node) - { - wxMenu* menu = (wxMenu*) node->Data(); - menu->AppendSeparator(); - int i; - for (i = 0; i < m_fileHistoryN; i++) - { - if (m_fileHistory[i]) - { - wxString buf; - buf.Printf("&%d %s", i+1, m_fileHistory[i]); - menu->Append(wxID_FILE1+i, buf); - } - } - node = node->Next(); - } - } -} - -void wxFileHistory::AddFilesToMenu(wxMenu* menu) -{ - if (m_fileHistoryN > 0) - { - menu->AppendSeparator(); - int i; - for (i = 0; i < m_fileHistoryN; i++) - { - if (m_fileHistory[i]) - { - wxString buf; - buf.Printf("&%d %s", i+1, m_fileHistory[i]); - menu->Append(wxID_FILE1+i, buf); - } - } - } -} - -#if 0 -/* - * wxPrintInfo - */ - -wxPrintInfo::wxPrintInfo(void) -{ - pageNumber = 1; -} - -wxPrintInfo::~wxPrintInfo(void) -{ -} -#endif - -/* - * Permits compatibility with existing file formats and functions - * that manipulate files directly - */ - -bool wxTransferFileToStream(const wxString& filename, ostream& stream) -{ - FILE *fd1; - int ch; - - if ((fd1 = fopen (WXSTRINGCAST filename, "rb")) == NULL) - return FALSE; - - while ((ch = getc (fd1)) != EOF) - stream << (unsigned char)ch; - - fclose (fd1); - return TRUE; -} - -bool wxTransferStreamToFile(istream& stream, const wxString& filename) -{ - FILE *fd1; - int ch; - - if ((fd1 = fopen (WXSTRINGCAST filename, "wb")) == NULL) - { - return FALSE; - } - - while (!stream.eof()) - { - ch = stream.get(); - if (!stream.eof()) - putc (ch, fd1); - } - fclose (fd1); - return TRUE; -} - -#endif - // End wxUSE_DOC_VIEW_ARCHITECTURE diff --git a/src/common/doslex.c b/src/common/doslex.c deleted file mode 100644 index 08572e333c..0000000000 --- a/src/common/doslex.c +++ /dev/null @@ -1,1226 +0,0 @@ -/* A lexical scanner generated by flex */ - -/* scanner skeleton version: - * $Header$ - Last change: JS 13 Jul 97 6:17 pm - */ - -#define FLEX_SCANNER - -#include - - -/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */ -#ifdef c_plusplus -#ifndef __cplusplus -#define __cplusplus -#endif -#endif - - -#ifdef __cplusplus - -#include - -#ifdef __SALFORDC__ -#include -#include -#else -#include -#endif - -#ifdef __cplusplus -static int yyinput() -#else -static int input() -#endif - -/* use prototypes in function declarations */ -#define YY_USE_PROTOS - -/* the "const" storage-class-modifier is valid */ -#define YY_USE_CONST - -#else /* ! __cplusplus */ - -#ifdef __STDC__ - -#ifdef __GNUC__ -#include -#else -#include -#endif /* __GNUC__ */ - -#define YY_USE_PROTOS -#define YY_USE_CONST - -#endif /* __STDC__ */ -#endif /* ! __cplusplus */ - - -#ifdef __TURBOC__ -#define YY_USE_CONST -#endif - - -#ifndef YY_USE_CONST -#define const -#endif - - -#ifdef YY_USE_PROTOS -#define YY_PROTO(proto) proto -#else -#define YY_PROTO(proto) () -/* we can't get here if it's an ANSI C compiler, or a C++ compiler, - * so it's got to be a K&R compiler, and therefore there's no standard - * place from which to include these definitions - */ -/* -char *malloc(); -int free(); -*/ - -int read(); -#endif - - -/* amount of stuff to slurp up with each read */ -#ifndef YY_READ_BUF_SIZE -#define YY_READ_BUF_SIZE 8192 -#endif - -/* returned upon end-of-file */ -#define YY_END_TOK 0 - -/* copy whatever the last rule matched to the standard output */ - -/* cast to (char *) is because for 8-bit chars, yytext is (unsigned char *) */ -/* this used to be an fputs(), but since the string might contain NUL's, - * we now use fwrite() - */ -#define ECHO (void) fwrite( (char *) yytext, yyleng, 1, yyout ) - -/* gets input and stuffs it into "buf". number of characters read, or YY_NULL, - * is returned in "result". - */ -#define YY_INPUT(buf,result,max_size) \ - if ( (result = read( fileno(yyin), (char *) buf, max_size )) < 0 ) \ - YY_FATAL_ERROR( "read() in flex scanner failed" ); -#define YY_NULL 0 - -/* no semi-colon after return; correct usage is to write "yyterminate();" - - * we don't want an extra ';' after the "return" because that will cause - * some compilers to complain about unreachable statements. - */ -#define yyterminate() return ( YY_NULL ) - -/* report a fatal error */ - -/* The funky do-while is used to turn this macro definition into - * a single C statement (which needs a semi-colon terminator). - * This avoids problems with code like: - * - * if ( something_happens ) - * YY_FATAL_ERROR( "oops, the something happened" ); - * else - * everything_okay(); - * - * Prior to using the do-while the compiler would get upset at the - * "else" because it interpreted the "if" statement as being all - * done when it reached the ';' after the YY_FATAL_ERROR() call. - */ - -#define YY_FATAL_ERROR(msg) \ - do \ - { \ - (void) fputs( msg, stderr ); \ - (void) putc( '\n', stderr ); \ - exit( 1 ); \ - } \ - while ( 0 ) - -/* default yywrap function - always treat EOF as an EOF */ -int yywrap(void) { return 1; } - - -/* enter a start condition. This macro really ought to take a parameter, - * but we do it the disgusting crufty way forced on us by the ()-less - * definition of BEGIN - */ -#define BEGIN yy_start = 1 + 2 * - -/* action number for EOF rule of a given start state */ -#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) - -/* special action meaning "start processing a new file" */ -#define YY_NEW_FILE \ - do \ - { \ - yy_init_buffer( yy_current_buffer, yyin ); \ - yy_load_buffer_state(); \ - } \ - while ( 0 ) - -/* default declaration of generated scanner - a define so the user can - * easily add parameters - */ -#define YY_DECL int yylex YY_PROTO(( void )) - -/* code executed at the end of each rule */ -#define YY_BREAK break; - -#define YY_END_OF_BUFFER_CHAR 0 - -#ifndef YY_BUF_SIZE -#define YY_BUF_SIZE (YY_READ_BUF_SIZE * 2) /* size of default input buffer */ -#endif - -typedef struct yy_buffer_state *YY_BUFFER_STATE; - -#define YY_CHAR unsigned char -# line 1 "lexer.l" -#define INITIAL 0 -# line 9 "lexer.l" -/* - * File: lexer.l - * Description: Lexical analyser for PROLOGIO; can be used with - * either lex and flex. - */ -#include - -/* +++steve162e: added, otherwise, PROIO_input will be undefined (at least under LINUX) - please check, if this is also TRUE under other UNIXes. - */ - -#if defined(FLEX_SCANNER) && defined(_LINUX) -#define PROIO_input my_input -#endif -/* ---steve162e */ - -#include "wx/expr.h" -#ifdef wx_x -extern char *malloc(); -#endif -#define Return(x) return x; - -#if defined(VMS) && !defined(strdup) -#define strdup(s) (strcpy((char *)malloc(strlen(s)+1), s)); -#endif - -static size_t lex_buffer_length = 0; -static const char *lex_buffer = NULL; -static size_t lex_string_ptr = 0; -static int lex_read_from_string = 0; - -static int my_input(void); -static int my_unput(char); - -#ifdef FLEX_SCANNER -#undef YY_INPUT -# define YY_INPUT(buf,result,max_size) \ - if (lex_read_from_string) \ - { int c = my_input(); result = (c == 0) ? YY_NULL : ((buf)[0]=(c), 1); } \ - else \ - if ( (result = read( fileno(yyin), (char *) buf, max_size )) < 0 ) \ - YY_FATAL_ERROR( "read() in flex scanner failed" ); -#else -# undef unput -# define unput(_c) my_unput(_c) -#endif - -# line 58 "lexer.l" - -/* done after the current pattern has been matched and before the - * corresponding action - sets up yytext - */ -#define YY_DO_BEFORE_ACTION \ - yytext = yy_bp; \ - yyleng = yy_cp - yy_bp; \ - yy_hold_char = *yy_cp; \ - *yy_cp = '\0'; \ - yy_c_buf_p = yy_cp; - -#define EOB_ACT_CONTINUE_SCAN 0 -#define EOB_ACT_END_OF_FILE 1 -#define EOB_ACT_LAST_MATCH 2 - -/* return all but the first 'n' matched characters back to the input stream */ -#define yyless(n) \ - do \ - { \ - /* undo effects of setting up yytext */ \ - *yy_cp = yy_hold_char; \ - yy_c_buf_p = yy_cp = yy_bp + n; \ - YY_DO_BEFORE_ACTION; /* set up yytext again */ \ - } \ - while ( 0 ) - -#undef unput -#define unput(c) yyunput( c, yytext ) - - -struct yy_buffer_state - { - FILE *yy_input_file; - - YY_CHAR *yy_ch_buf; /* input buffer */ - YY_CHAR *yy_buf_pos; /* current position in input buffer */ - - /* size of input buffer in bytes, not including room for EOB characters*/ - int yy_buf_size; - - /* number of characters read into yy_ch_buf, not including EOB characters */ - int yy_n_chars; - - int yy_eof_status; /* whether we've seen an EOF on this buffer */ -#define EOF_NOT_SEEN 0 - /* "pending" happens when the EOF has been seen but there's still - * some text process - */ -#define EOF_PENDING 1 -#define EOF_DONE 2 - }; - -static YY_BUFFER_STATE yy_current_buffer; - -/* we provide macros for accessing buffer states in case in the - * future we want to put the buffer states in a more general - * "scanner state" - */ -#define YY_CURRENT_BUFFER yy_current_buffer - - -/* yy_hold_char holds the character lost when yytext is formed */ -static YY_CHAR yy_hold_char; - -static int yy_n_chars; /* number of characters read into yy_ch_buf */ - - - -#ifndef YY_USER_ACTION -#define YY_USER_ACTION -#endif - -#ifndef YY_USER_INIT -#define YY_USER_INIT -#endif - -extern YY_CHAR *yytext; -extern int yyleng; -extern FILE *yyin, *yyout; - -YY_CHAR *yytext; -int yyleng; - -FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; - -#define YY_END_OF_BUFFER 18 -typedef int yy_state_type; -static const short int yy_accept[34] = - { 0, - 0, 0, 18, 16, 13, 14, 16, 16, 6, 7, - 16, 8, 12, 16, 1, 11, 3, 9, 10, 2, - 0, 5, 0, 0, 0, 4, 1, 15, 3, 5, - 0, 0, 0 - } ; - -static const YY_CHAR yy_ec[256] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 1, 4, 1, 1, 1, 1, 5, 6, - 7, 8, 9, 10, 9, 11, 12, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 1, 1, 1, - 14, 1, 1, 1, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 16, 17, 18, 1, 15, 1, 15, 15, 15, 15, - - 19, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 1, 20, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1 - } ; - -static const YY_CHAR yy_meta[21] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 1, 2, 1, 3, 1, 2, 1 - } ; - -static const short int yy_base[37] = - { 0, - 0, 0, 48, 55, 55, 55, 17, 42, 55, 55, - 19, 55, 55, 23, 17, 55, 0, 55, 55, 0, - 18, 55, 19, 23, 21, 55, 12, 55, 0, 24, - 25, 29, 55, 49, 52, 22 - } ; - -static const short int yy_def[37] = - { 0, - 33, 1, 33, 33, 33, 33, 34, 35, 33, 33, - 33, 33, 33, 33, 33, 33, 36, 33, 33, 36, - 34, 33, 34, 34, 35, 33, 33, 33, 36, 34, - 34, 34, 0, 33, 33, 33 - } ; - -static const short int yy_nxt[76] = - { 0, - 4, 5, 6, 7, 8, 9, 10, 4, 11, 12, - 13, 14, 15, 16, 17, 18, 4, 19, 20, 4, - 22, 22, 30, 29, 27, 26, 22, 22, 30, 27, - 28, 27, 30, 23, 23, 23, 24, 24, 24, 31, - 23, 32, 24, 24, 24, 23, 26, 33, 24, 21, - 21, 21, 25, 25, 3, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33 - } ; - -static const short int yy_chk[76] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 7, 21, 23, 36, 27, 25, 24, 30, 31, 15, - 14, 11, 32, 7, 21, 23, 7, 21, 23, 24, - 30, 31, 24, 30, 31, 32, 8, 3, 32, 34, - 34, 34, 35, 35, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33 - } ; - -static yy_state_type yy_last_accepting_state; -static YY_CHAR *yy_last_accepting_cpos; - -/* the intent behind this definition is that it'll catch - * any uses of REJECT which flex missed - */ -#define REJECT reject_used_but_not_detected -#define yymore() yymore_used_but_not_detected -#define YY_MORE_ADJ 0 - -/* these variables are all declared out here so that section 3 code can - * manipulate them - */ -/* points to current character in buffer */ -static YY_CHAR *yy_c_buf_p = (YY_CHAR *) 0; -static int yy_init = 1; /* whether we need to initialize */ -static int yy_start = 0; /* start state number */ - -/* flag which is used to allow yywrap()'s to do buffer switches - * instead of setting up a fresh yyin. A bit of a hack ... - */ -static int yy_did_buffer_switch_on_eof; - -static yy_state_type yy_get_previous_state YY_PROTO(( void )); -static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state )); -static int yy_get_next_buffer YY_PROTO(( void )); -static void yyunput YY_PROTO(( YY_CHAR c, YY_CHAR *buf_ptr )); -void yyrestart YY_PROTO(( FILE *input_file )); -void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer )); -void yy_load_buffer_state YY_PROTO(( void )); -YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size )); -void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b )); -void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file )); - -#define yy_new_buffer yy_create_buffer - -#ifdef __cplusplus -static int yyinput YY_PROTO(( void )); -#else -static int input YY_PROTO(( void )); -#endif - -YY_DECL - { - register yy_state_type yy_current_state; - register YY_CHAR *yy_cp, *yy_bp; - register int yy_act; - - - - - if ( yy_init ) - { - YY_USER_INIT; - - if ( ! yy_start ) - yy_start = 1; /* first start state */ - - if ( ! yyin ) - yyin = stdin; - - if ( ! yyout ) - yyout = stdout; - - if ( yy_current_buffer ) - yy_init_buffer( yy_current_buffer, yyin ); - else - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); - - yy_load_buffer_state(); - - yy_init = 0; - } - - while ( 1 ) /* loops until end-of-file is reached */ - { - yy_cp = yy_c_buf_p; - - /* support of yytext */ - *yy_cp = yy_hold_char; - - /* yy_bp points to the position in yy_ch_buf of the start of the - * current run. - */ - yy_bp = yy_cp; - - yy_current_state = yy_start; -yy_match: - do - { - register YY_CHAR yy_c = yy_ec[*yy_cp]; - if ( yy_accept[yy_current_state] ) - { - yy_last_accepting_state = yy_current_state; - yy_last_accepting_cpos = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = yy_def[yy_current_state]; - if ( yy_current_state >= 34 ) - yy_c = yy_meta[yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - ++yy_cp; - } - while ( yy_current_state != 33 ); - yy_cp = yy_last_accepting_cpos; - yy_current_state = yy_last_accepting_state; - -yy_find_action: - yy_act = yy_accept[yy_current_state]; - - YY_DO_BEFORE_ACTION; - YY_USER_ACTION; - -do_action: /* this label is used only to access EOF actions */ - - - switch ( yy_act ) - { - case 0: /* must backtrack */ - /* undo the effects of YY_DO_BEFORE_ACTION */ - *yy_cp = yy_hold_char; - yy_cp = yy_last_accepting_cpos; - yy_current_state = yy_last_accepting_state; - goto yy_find_action; - -case 1: -# line 60 "lexer.l" -{yylval.s = strdup((const char*) yytext); Return(INTEGER);} - YY_BREAK -case 2: -# line 62 "lexer.l" -Return(EXP); - YY_BREAK -case 3: -# line 64 "lexer.l" -{yylval.s = strdup((const char*) yytext); Return(WORD);} - YY_BREAK -case 4: -# line 66 "lexer.l" -{int len = strlen((const char*) yytext); - yytext[len-1] = 0; - yylval.s = strdup((const char*) (yytext+1)); - Return(WORD);} - YY_BREAK -case 5: -# line 71 "lexer.l" -{yylval.s = strdup((const char*) yytext); Return(STRING);} - YY_BREAK -case 6: -# line 73 "lexer.l" -Return(OPEN); - YY_BREAK -case 7: -# line 75 "lexer.l" -Return(CLOSE); - YY_BREAK -case 8: -# line 77 "lexer.l" -Return(COMMA); - YY_BREAK -case 9: -# line 79 "lexer.l" -Return(OPEN_SQUARE); - YY_BREAK -case 10: -# line 81 "lexer.l" -Return(CLOSE_SQUARE); - YY_BREAK -case 11: -# line 83 "lexer.l" -Return(EQUALS); - YY_BREAK -case 12: -# line 85 "lexer.l" -Return(PERIOD); - YY_BREAK -case 13: -# line 87 "lexer.l" -; - YY_BREAK -case 14: -# line 89 "lexer.l" -; - YY_BREAK -case 15: -# line 91 "lexer.l" -{ loop: -#ifdef __cplusplus - while (yyinput() != '*'); - switch (yyinput()) -#else - while (input() != '*'); - switch (input()) -#endif - { - case '/': break; - case '*': unput('*'); - default: goto loop; - } - } - YY_BREAK -case 16: -# line 106 "lexer.l" -Return(ERROR); - YY_BREAK -case 17: -# line 108 "lexer.l" -ECHO; - YY_BREAK -case YY_STATE_EOF(INITIAL): - yyterminate(); - - case YY_END_OF_BUFFER: - { - /* amount of text matched not including the EOB char */ - int yy_amount_of_matched_text = yy_cp - yytext - 1; - - /* undo the effects of YY_DO_BEFORE_ACTION */ - *yy_cp = yy_hold_char; - - /* note that here we test for yy_c_buf_p "<=" to the position - * of the first EOB in the buffer, since yy_c_buf_p will - * already have been incremented past the NUL character - * (since all states make transitions on EOB to the end- - * of-buffer state). Contrast this with the test in yyinput(). - */ - if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] ) - /* this was really a NUL */ - { - yy_state_type yy_next_state; - - yy_c_buf_p = yytext + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state(); - - /* okay, we're now positioned to make the - * NUL transition. We couldn't have - * yy_get_previous_state() go ahead and do it - * for us because it doesn't know how to deal - * with the possibility of jamming (and we - * don't want to build jamming into it because - * then it will run more slowly) - */ - - yy_next_state = yy_try_NUL_trans( yy_current_state ); - - yy_bp = yytext + YY_MORE_ADJ; - - if ( yy_next_state ) - { - /* consume the NUL */ - yy_cp = ++yy_c_buf_p; - yy_current_state = yy_next_state; - goto yy_match; - } - - else - { - yy_cp = yy_last_accepting_cpos; - yy_current_state = yy_last_accepting_state; - goto yy_find_action; - } - } - - else switch ( yy_get_next_buffer() ) - { - case EOB_ACT_END_OF_FILE: - { - yy_did_buffer_switch_on_eof = 0; - - if ( yywrap() ) - { - /* note: because we've taken care in - * yy_get_next_buffer() to have set up yytext, - * we can now set up yy_c_buf_p so that if some - * total hoser (like flex itself) wants - * to call the scanner after we return the - * YY_NULL, it'll still work - another YY_NULL - * will get returned. - */ - yy_c_buf_p = yytext + YY_MORE_ADJ; - - yy_act = YY_STATE_EOF((yy_start - 1) / 2); - goto do_action; - } - - else - { - if ( ! yy_did_buffer_switch_on_eof ) - YY_NEW_FILE; - } - } - break; - - case EOB_ACT_CONTINUE_SCAN: - yy_c_buf_p = yytext + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state(); - - yy_cp = yy_c_buf_p; - yy_bp = yytext + YY_MORE_ADJ; - goto yy_match; - - case EOB_ACT_LAST_MATCH: - yy_c_buf_p = - &yy_current_buffer->yy_ch_buf[yy_n_chars]; - - yy_current_state = yy_get_previous_state(); - - yy_cp = yy_c_buf_p; - yy_bp = yytext + YY_MORE_ADJ; - goto yy_find_action; - } - break; - } - - default: -#ifdef FLEX_DEBUG - printf( "action # %d\n", yy_act ); -#endif - YY_FATAL_ERROR( - "fatal flex scanner internal error--no action found" ); - } - } - } - - -/* yy_get_next_buffer - try to read in a new buffer - * - * synopsis - * int yy_get_next_buffer(); - * - * returns a code representing an action - * EOB_ACT_LAST_MATCH - - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position - * EOB_ACT_END_OF_FILE - end of file - */ - -static int yy_get_next_buffer() - - { - register YY_CHAR *dest = yy_current_buffer->yy_ch_buf; - register YY_CHAR *source = yytext - 1; /* copy prev. char, too */ - register int number_to_move, i; - int ret_val; - - if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] ) - YY_FATAL_ERROR( - "fatal flex scanner internal error--end of buffer missed" ); - - /* try to read more data */ - - /* first move last chars to start of buffer */ - number_to_move = yy_c_buf_p - yytext; - - for ( i = 0; i < number_to_move; ++i ) - *(dest++) = *(source++); - - if ( yy_current_buffer->yy_eof_status != EOF_NOT_SEEN ) - /* don't do the read, it's not guaranteed to return an EOF, - * just force an EOF - */ - yy_n_chars = 0; - - else - { - int num_to_read = yy_current_buffer->yy_buf_size - number_to_move - 1; - - if ( num_to_read > YY_READ_BUF_SIZE ) - num_to_read = YY_READ_BUF_SIZE; - - else if ( num_to_read <= 0 ) - YY_FATAL_ERROR( "fatal error - scanner input buffer overflow" ); - - /* read in more data */ - YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]), - yy_n_chars, num_to_read ); - } - - if ( yy_n_chars == 0 ) - { - if ( number_to_move == 1 ) - { - ret_val = EOB_ACT_END_OF_FILE; - yy_current_buffer->yy_eof_status = EOF_DONE; - } - - else - { - ret_val = EOB_ACT_LAST_MATCH; - yy_current_buffer->yy_eof_status = EOF_PENDING; - } - } - - else - ret_val = EOB_ACT_CONTINUE_SCAN; - - yy_n_chars += number_to_move; - yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR; - yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; - - /* yytext begins at the second character in yy_ch_buf; the first - * character is the one which preceded it before reading in the latest - * buffer; it needs to be kept around in case it's a newline, so - * yy_get_previous_state() will have with '^' rules active - */ - - yytext = &yy_current_buffer->yy_ch_buf[1]; - - return ( ret_val ); - } - - -/* yy_get_previous_state - get the state just before the EOB char was reached - * - * synopsis - * yy_state_type yy_get_previous_state(); - */ - -static yy_state_type yy_get_previous_state() - - { - register yy_state_type yy_current_state; - register YY_CHAR *yy_cp; - - yy_current_state = yy_start; - - for ( yy_cp = yytext + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp ) - { - register YY_CHAR yy_c = (*yy_cp ? yy_ec[*yy_cp] : 1); - if ( yy_accept[yy_current_state] ) - { - yy_last_accepting_state = yy_current_state; - yy_last_accepting_cpos = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = yy_def[yy_current_state]; - if ( yy_current_state >= 34 ) - yy_c = yy_meta[yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - } - - return ( yy_current_state ); - } - - -/* yy_try_NUL_trans - try to make a transition on the NUL character - * - * synopsis - * next_state = yy_try_NUL_trans( current_state ); - */ - -#ifdef YY_USE_PROTOS -static yy_state_type yy_try_NUL_trans( register yy_state_type yy_current_state ) -#else -static yy_state_type yy_try_NUL_trans( yy_current_state ) -register yy_state_type yy_current_state; -#endif - - { - register int yy_is_jam; - register YY_CHAR *yy_cp = yy_c_buf_p; - - register YY_CHAR yy_c = 1; - if ( yy_accept[yy_current_state] ) - { - yy_last_accepting_state = yy_current_state; - yy_last_accepting_cpos = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = yy_def[yy_current_state]; - if ( yy_current_state >= 34 ) - yy_c = yy_meta[yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 33); - - return ( yy_is_jam ? 0 : yy_current_state ); - } - - -#ifdef YY_USE_PROTOS -static void yyunput( YY_CHAR c, register YY_CHAR *yy_bp ) -#else -static void yyunput( c, yy_bp ) -YY_CHAR c; -register YY_CHAR *yy_bp; -#endif - - { - register YY_CHAR *yy_cp = yy_c_buf_p; - - /* undo effects of setting up yytext */ - *yy_cp = yy_hold_char; - - if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 ) - { /* need to shift things up to make room */ - register int number_to_move = yy_n_chars + 2; /* +2 for EOB chars */ - register YY_CHAR *dest = - &yy_current_buffer->yy_ch_buf[yy_current_buffer->yy_buf_size + 2]; - register YY_CHAR *source = - &yy_current_buffer->yy_ch_buf[number_to_move]; - - while ( source > yy_current_buffer->yy_ch_buf ) - *--dest = *--source; - - yy_cp += dest - source; - yy_bp += dest - source; - yy_n_chars = yy_current_buffer->yy_buf_size; - - if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 ) - YY_FATAL_ERROR( "flex scanner push-back overflow" ); - } - - if ( yy_cp > yy_bp && yy_cp[-1] == '\n' ) - yy_cp[-2] = '\n'; - - *--yy_cp = c; - - /* note: the formal parameter *must* be called "yy_bp" for this - * macro to now work correctly - */ - YY_DO_BEFORE_ACTION; /* set up yytext again */ - } - - -#ifdef __cplusplus -static int yyinput() -#else -static int input() -#endif - - { - int c; - YY_CHAR *yy_cp = yy_c_buf_p; - - *yy_cp = yy_hold_char; - - if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR ) - { - /* yy_c_buf_p now points to the character we want to return. - * If this occurs *before* the EOB characters, then it's a - * valid NUL; if not, then we've hit the end of the buffer. - */ - if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] ) - /* this was really a NUL */ - *yy_c_buf_p = '\0'; - - else - { /* need more input */ - yytext = yy_c_buf_p; - ++yy_c_buf_p; - - switch ( yy_get_next_buffer() ) - { - case EOB_ACT_END_OF_FILE: - { - if ( yywrap() ) - { - yy_c_buf_p = yytext + YY_MORE_ADJ; - return ( EOF ); - } - - YY_NEW_FILE; - -#ifdef __cplusplus - return ( yyinput() ); -#else - return ( input() ); -#endif - } - break; - - case EOB_ACT_CONTINUE_SCAN: - yy_c_buf_p = yytext + YY_MORE_ADJ; - break; - - case EOB_ACT_LAST_MATCH: -#ifdef __cplusplus - YY_FATAL_ERROR( "unexpected last match in yyinput()" ); -#else - YY_FATAL_ERROR( "unexpected last match in input()" ); -#endif - } - } - } - - c = *yy_c_buf_p; - yy_hold_char = *++yy_c_buf_p; - - return ( c ); - } - - -#ifdef YY_USE_PROTOS -void yyrestart( FILE *input_file ) -#else -void yyrestart( input_file ) -FILE *input_file; -#endif - - { - yy_init_buffer( yy_current_buffer, input_file ); - yy_load_buffer_state(); - } - - -#ifdef YY_USE_PROTOS -void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer ) -#else -void yy_switch_to_buffer( new_buffer ) -YY_BUFFER_STATE new_buffer; -#endif - - { - if ( yy_current_buffer == new_buffer ) - return; - - if ( yy_current_buffer ) - { - /* flush out information for old buffer */ - *yy_c_buf_p = yy_hold_char; - yy_current_buffer->yy_buf_pos = yy_c_buf_p; - yy_current_buffer->yy_n_chars = yy_n_chars; - } - - yy_current_buffer = new_buffer; - yy_load_buffer_state(); - - /* we don't actually know whether we did this switch during - * EOF (yywrap()) processing, but the only time this flag - * is looked at is after yywrap() is called, so it's safe - * to go ahead and always set it. - */ - yy_did_buffer_switch_on_eof = 1; - } - - -#ifdef YY_USE_PROTOS -void yy_load_buffer_state( void ) -#else -void yy_load_buffer_state() -#endif - - { - yy_n_chars = yy_current_buffer->yy_n_chars; - yytext = yy_c_buf_p = yy_current_buffer->yy_buf_pos; - yyin = yy_current_buffer->yy_input_file; - yy_hold_char = *yy_c_buf_p; - } - - -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_create_buffer( FILE *file, int size ) -#else -YY_BUFFER_STATE yy_create_buffer( file, size ) -FILE *file; -int size; -#endif - - { - YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) malloc( sizeof( struct yy_buffer_state ) ); - - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_buf_size = size; - - /* yy_ch_buf has to be 2 characters longer than the size given because - * we need to put in 2 end-of-buffer characters. - */ - b->yy_ch_buf = (YY_CHAR *) malloc( (unsigned) (b->yy_buf_size + 2) ); - - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - yy_init_buffer( b, file ); - - return ( b ); - } - - -#ifdef YY_USE_PROTOS -void yy_delete_buffer( YY_BUFFER_STATE b ) -#else -void yy_delete_buffer( b ) -YY_BUFFER_STATE b; -#endif - - { - if ( b == yy_current_buffer ) - yy_current_buffer = (YY_BUFFER_STATE) 0; - - free( (char *) b->yy_ch_buf ); - free( (char *) b ); - } - - -#ifdef YY_USE_PROTOS -void yy_init_buffer( YY_BUFFER_STATE b, FILE *file ) -#else -void yy_init_buffer( b, file ) -YY_BUFFER_STATE b; -FILE *file; -#endif - - { - b->yy_input_file = file; - - /* we put in the '\n' and start reading from [1] so that an - * initial match-at-newline will be true. - */ - - b->yy_ch_buf[0] = '\n'; - b->yy_n_chars = 1; - - /* we always need two end-of-buffer characters. The first causes - * a transition to the end-of-buffer state. The second causes - * a jam in that state. - */ - b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; - b->yy_ch_buf[2] = YY_END_OF_BUFFER_CHAR; - - b->yy_buf_pos = &b->yy_ch_buf[1]; - - b->yy_eof_status = EOF_NOT_SEEN; - } -# line 108 "lexer.l" - - - -#ifdef FLEX_SCANNER -static int lex_input() { - return input(); -} -#else /* BSD/AT&T lex */ -#ifndef input -# error "Sorry, but need either flex or AT&T lex" -#endif -static int lex_input() { - return input(); -} -/* # undef unput -# define unput(_c) my_unput(_c) -*/ - -# undef input -# define input() my_input() -static int my_unput(char c) -{ - if (lex_read_from_string) { - /* Make sure we have something */ - if (lex_string_ptr) { - if (c == '\n') yylineno--; - lex_string_ptr--; - } - } else { - yytchar= (c);if(yytchar=='\n')yylineno--;*yysptr++=yytchar; -/* unput(c); Causes infinite recursion! */ - } - return c; -} - -#endif - -/* Public */ -void LexFromFile(FILE *fd) -{ - lex_read_from_string = 0; - yyin = fd; - /* Don't know why this is necessary, but otherwise - * lex only works _once_! - */ -#ifdef FLEX_SCANNER - yy_init = 1; -#endif -} - -void LexFromString(char *buffer) -{ - lex_read_from_string = 1; - lex_buffer = buffer; - lex_buffer_length = strlen((const char*) buffer); - lex_string_ptr = 0; - /* Don't know why this is necessary, but otherwise - * lex only works _once_! - */ -#ifdef FLEX_SCANNER - yy_init = 1; -#endif -} - -static int my_input( void ) -{ - if (lex_read_from_string) { - if (lex_string_ptr == lex_buffer_length) - return 0; - else { - char c = lex_buffer[lex_string_ptr++]; -#ifndef FLEX_SCANNER - if (c == '\n') yylineno++; -#endif - return c; - } - } else { - return lex_input(); - } -} - -void wxExprCleanUp() -{ - if (yy_current_buffer) - yy_delete_buffer(yy_current_buffer); -} diff --git a/src/common/dosyacc.c b/src/common/dosyacc.c deleted file mode 100644 index 3220c8dd7b..0000000000 --- a/src/common/dosyacc.c +++ /dev/null @@ -1,523 +0,0 @@ -#ifndef lint -static char yysccsid[] = "@(#)yaccpar 1.7 (Berkeley) 09/09/90"; -#endif -#define YYBYACC 1 -#line 2 "parser.y" -#include "string.h" -#ifdef _MSC_VER -#include -#endif -#include "wx/expr.h" - -#ifndef __EXTERN_C__ -#define __EXTERN_C__ 1 -#endif - -#if defined(__cplusplus) || defined(__STDC__) -#if defined(__cplusplus) && defined(__EXTERN_C__) -extern "C" { -#endif -#endif -int yylex(void); -int yylook(void); -int yywrap(void); -int yyback(int *, int); - -/* You may need to put /DLEX_SCANNER in your makefile - * if you're using LEX! - */ -#ifdef LEX_SCANNER -/* int yyoutput(int); */ -void yyoutput(int); -#else -void yyoutput(int); -#endif - -#if defined(__cplusplus) || defined(__STDC__) -#if defined(__cplusplus) && defined(__EXTERN_C__) -} -#endif -#endif -#line 36 "parser.y" -typedef union { - char *s; -/* struct pexpr *expr; */ -} YYSTYPE; -#line 44 "y_tab.c" -#define INTEGER 1 -#define WORD 2 -#define STRING 3 -#define PERIOD 13 -#define OPEN 4 -#define CLOSE 5 -#define COMMA 6 -#define NEWLINE 7 -#define ERROR 8 -#define OPEN_SQUARE 9 -#define CLOSE_SQUARE 10 -#define EQUALS 11 -#define EXP 14 -#define YYERRCODE 256 -short yylhs[] = { -1, - 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, - 3, 4, 4, 5, 5, 5, 5, 5, 5, 5, -}; -short yylen[] = { 2, - 0, 2, 2, 2, 2, 4, 2, 3, 0, 1, - 3, 3, 1, 1, 1, 1, 3, 3, 5, 1, -}; -short yydefred[] = { 1, - 0, 0, 0, 0, 2, 0, 5, 3, 0, 0, - 0, 15, 7, 20, 0, 0, 13, 4, 0, 0, - 0, 0, 8, 0, 6, 0, 18, 0, 12, 11, - 0, 19, -}; -short yydgoto[] = { 1, - 5, 14, 15, 16, 17, -}; -short yysindex[] = { 0, - -2, 9, 2, 1, 0, 10, 0, 0, 11, -5, - 17, 0, 0, 0, 14, -1, 0, 0, 33, 38, - 41, 16, 0, 11, 0, 29, 0, 40, 0, 0, - 44, 0, -}; -short yyrindex[] = { 0, - 0, 0, 0, 0, 0, 0, 0, 0, 42, 21, - 24, 0, 0, 0, 0, 30, 0, 0, 0, 0, - 0, 0, 0, 31, 0, 27, 0, 24, 0, 0, - 0, 0, -}; -short yygindex[] = { 0, - 0, 45, -8, 0, 26, -}; -#define YYTABLESIZE 254 -short yytable[] = { 3, - 19, 10, 11, 12, 24, 9, 4, 20, 21, 4, - 13, 10, 11, 12, 8, 30, 10, 28, 12, 4, - 9, 7, 18, 23, 4, 16, 16, 22, 14, 14, - 16, 17, 17, 14, 10, 9, 17, 25, 26, 10, - 9, 27, 31, 9, 32, 6, 9, 29, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2, -}; -short yycheck[] = { 2, - 9, 1, 2, 3, 6, 4, 9, 13, 14, 9, - 10, 1, 2, 3, 13, 24, 1, 2, 3, 9, - 4, 13, 13, 10, 9, 5, 6, 11, 5, 6, - 10, 5, 6, 10, 5, 5, 10, 5, 1, 10, - 10, 1, 14, 4, 1, 1, 5, 22, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 256, -}; -#define YYFINAL 1 -#ifndef YYDEBUG -#define YYDEBUG 0 -#endif -#define YYMAXTOKEN 14 -#if YYDEBUG -char *yyname[] = { -"end-of-file","INTEGER","WORD","STRING","OPEN","CLOSE","COMMA","NEWLINE", -"ERROR","OPEN_SQUARE","CLOSE_SQUARE","EQUALS",0,"PERIOD","EXP", -}; -char *yyrule[] = { -"$accept : commands", -"commands :", -"commands : commands command", -"command : WORD PERIOD", -"command : expr PERIOD", -"command : error PERIOD", -"expr : WORD OPEN arglist CLOSE", -"expr : OPEN_SQUARE CLOSE_SQUARE", -"expr : OPEN_SQUARE arglist CLOSE_SQUARE", -"arglist :", -"arglist : arg", -"arglist : arg COMMA arglist", -"arg : WORD EQUALS arg1", -"arg : arg1", -"arg1 : WORD", -"arg1 : STRING", -"arg1 : INTEGER", -"arg1 : INTEGER PERIOD INTEGER", -"arg1 : INTEGER EXP INTEGER", -"arg1 : INTEGER PERIOD INTEGER EXP INTEGER", -"arg1 : expr", -}; -#endif -#define yyclearin (yychar=(-1)) -#define yyerrok (yyerrflag=0) -#ifdef YYSTACKSIZE -#ifndef YYMAXDEPTH -#define YYMAXDEPTH YYSTACKSIZE -#endif -#else -#ifdef YYMAXDEPTH -#define YYSTACKSIZE YYMAXDEPTH -#else -#define YYSTACKSIZE 600 -#define YYMAXDEPTH 600 -#endif -#endif -int yydebug; -int yynerrs; -int yyerrflag; -int yychar; -short *yyssp; -YYSTYPE *yyvsp; -YYSTYPE yyval; -YYSTYPE yylval; -short yyss[YYSTACKSIZE]; -YYSTYPE yyvs[YYSTACKSIZE]; -#define yystacksize YYSTACKSIZE -#line 118 "parser.y" - -#ifdef IDE_INVOKED -#include "../common/doslex.c" -#else -#include "../common/lex_yy.c" -#endif - -/* -void yyerror(s) -char *s; -{ - syntax_error(s); -} -*/ - -/* Ansi prototype. If this doesn't work for you... uncomment - the above instead. - */ - -void yyerror(char *s) -{ - syntax_error(s); -} - -/* - * Unfortunately, my DOS version of FLEX - * requires yywrap to be #def'ed, whereas - * the UNIX flex expects a proper function. - */ - -/* Not sure if __SC__ is the appropriate thing - * to test - */ - -#ifndef __SC__ -#ifdef USE_DEFINE -#ifndef yywrap -#define yywrap() 1 -#endif -#else -int yywrap() { return 1; } -#endif -#endif -#line 247 "y_tab.c" -#define YYABORT goto yyabort -#define YYACCEPT goto yyaccept -#define YYERROR goto yyerrlab -int -yyparse() -{ - register int yym, yyn, yystate; -#if YYDEBUG - register char *yys; - extern char *getenv(); - - if (yys = getenv("YYDEBUG")) - { - yyn = *yys; - if (yyn >= '0' && yyn <= '9') - yydebug = yyn - '0'; - } -#endif - - yynerrs = 0; - yyerrflag = 0; - yychar = (-1); - - yyssp = yyss; - yyvsp = yyvs; - *yyssp = yystate = 0; - -yyloop: - if (yyn = yydefred[yystate]) goto yyreduce; - if (yychar < 0) - { - if ((yychar = yylex()) < 0) yychar = 0; -#if YYDEBUG - if (yydebug) - { - yys = 0; - if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; - if (!yys) yys = "illegal-symbol"; - printf("yydebug: state %d, reading %d (%s)\n", yystate, - yychar, yys); - } -#endif - } - if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) - { -#if YYDEBUG - if (yydebug) - printf("yydebug: state %d, shifting to state %d\n", - yystate, yytable[yyn]); -#endif - if (yyssp >= yyss + yystacksize - 1) - { - goto yyoverflow; - } - *++yyssp = yystate = yytable[yyn]; - *++yyvsp = yylval; - yychar = (-1); - if (yyerrflag > 0) --yyerrflag; - goto yyloop; - } - if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) - { - yyn = yytable[yyn]; - goto yyreduce; - } - if (yyerrflag) goto yyinrecovery; -#ifdef lint - goto yynewerror; -#endif -yynewerror: - yyerror("syntax error"); -#ifdef lint - goto yyerrlab; -#endif -yyerrlab: - ++yynerrs; -yyinrecovery: - if (yyerrflag < 3) - { - yyerrflag = 3; - for (;;) - { - if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) - { -#if YYDEBUG - if (yydebug) - printf("yydebug: state %d, error recovery shifting\ - to state %d\n", *yyssp, yytable[yyn]); -#endif - if (yyssp >= yyss + yystacksize - 1) - { - goto yyoverflow; - } - *++yyssp = yystate = yytable[yyn]; - *++yyvsp = yylval; - goto yyloop; - } - else - { -#if YYDEBUG - if (yydebug) - printf("yydebug: error recovery discarding state %d\n", - *yyssp); -#endif - if (yyssp <= yyss) goto yyabort; - --yyssp; - --yyvsp; - } - } - } - else - { - if (yychar == 0) goto yyabort; -#if YYDEBUG - if (yydebug) - { - yys = 0; - if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; - if (!yys) yys = "illegal-symbol"; - printf("yydebug: state %d, error recovery discards token %d (%s)\n", - yystate, yychar, yys); - } -#endif - yychar = (-1); - goto yyloop; - } -yyreduce: -#if YYDEBUG - if (yydebug) - printf("yydebug: state %d, reducing by rule %d (%s)\n", - yystate, yyn, yyrule[yyn]); -#endif - yym = yylen[yyn]; - yyval = yyvsp[1-yym]; - switch (yyn) - { -case 3: -#line 68 "parser.y" -{process_command(proio_cons(wxmake_word(yyvsp[-1].s), NULL)); free(yyvsp[-1].s);} -break; -case 4: -#line 70 "parser.y" -{process_command(yyvsp[-1].s);} -break; -case 5: -#line 72 "parser.y" -{syntax_error("Unrecognized command.");} -break; -case 6: -#line 76 "parser.y" -{yyval.s = proio_cons(wxmake_word(yyvsp[-3].s), yyvsp[-1].s); free(yyvsp[-3].s);} -break; -case 7: -#line 78 "parser.y" -{yyval.s = proio_cons(NULL, NULL);} -break; -case 8: -#line 80 "parser.y" -{yyval.s = yyvsp[-1].s; } -break; -case 9: -#line 84 "parser.y" -{yyval.s = NULL;} -break; -case 10: -#line 86 "parser.y" -{yyval.s = proio_cons(yyvsp[0].s, NULL);} -break; -case 11: -#line 89 "parser.y" -{yyval.s = proio_cons(yyvsp[-2].s, yyvsp[0].s);} -break; -case 12: -#line 93 "parser.y" -{yyval.s = proio_cons(wxmake_word("="), proio_cons(wxmake_word(yyvsp[-2].s), proio_cons(yyvsp[0].s, NULL))); - free(yyvsp[-2].s); } -break; -case 13: -#line 96 "parser.y" -{yyval.s = yyvsp[0].s; } -break; -case 14: -#line 99 "parser.y" -{yyval.s = wxmake_word(yyvsp[0].s); free(yyvsp[0].s);} -break; -case 15: -#line 101 "parser.y" -{yyval.s = wxmake_string(yyvsp[0].s); free(yyvsp[0].s);} -break; -case 16: -#line 103 "parser.y" -{yyval.s = wxmake_integer(yyvsp[0].s); free(yyvsp[0].s);} -break; -case 17: -#line 105 "parser.y" -{yyval.s = wxmake_real(yyvsp[-2].s, yyvsp[0].s); free(yyvsp[-2].s); free(yyvsp[0].s); } -break; -case 18: -#line 107 "parser.y" -{yyval.s = wxmake_exp(yyvsp[-2].s, yyvsp[0].s); free(yyvsp[-2].s); free(yyvsp[0].s); } -break; -case 19: -#line 110 "parser.y" -{yyval.s = wxmake_exp2(yyvsp[-4].s, yyvsp[-2].s, yyvsp[0].s); free(yyvsp[-4].s); free(yyvsp[-2].s); - free(yyvsp[0].s); } -break; -case 20: -#line 114 "parser.y" -{yyval.s = yyvsp[0].s;} -break; -#line 461 "y_tab.c" - } - yyssp -= yym; - yystate = *yyssp; - yyvsp -= yym; - yym = yylhs[yyn]; - if (yystate == 0 && yym == 0) - { -#if YYDEBUG - if (yydebug) - printf("yydebug: after reduction, shifting from state 0 to\ - state %d\n", YYFINAL); -#endif - yystate = YYFINAL; - *++yyssp = YYFINAL; - *++yyvsp = yyval; - if (yychar < 0) - { - if ((yychar = yylex()) < 0) yychar = 0; -#if YYDEBUG - if (yydebug) - { - yys = 0; - if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; - if (!yys) yys = "illegal-symbol"; - printf("yydebug: state %d, reading %d (%s)\n", - YYFINAL, yychar, yys); - } -#endif - } - if (yychar == 0) goto yyaccept; - goto yyloop; - } - if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yystate) - yystate = yytable[yyn]; - else - yystate = yydgoto[yym]; -#if YYDEBUG - if (yydebug) - printf("yydebug: after reduction, shifting from state %d \ -to state %d\n", *yyssp, yystate); -#endif - if (yyssp >= yyss + yystacksize - 1) - { - goto yyoverflow; - } - *++yyssp = yystate; - *++yyvsp = yyval; - goto yyloop; -yyoverflow: - yyerror("yacc stack overflow"); -yyabort: - return (1); -yyaccept: - return (0); -} diff --git a/src/common/dynarray.cpp b/src/common/dynarray.cpp deleted file mode 100644 index 80f7006759..0000000000 --- a/src/common/dynarray.cpp +++ /dev/null @@ -1,288 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: dynarray.cpp -// Purpose: implementation of wxBaseArray class -// Author: Vadim Zeitlin -// Modified by: -// Created: 12.09.97 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows license -/////////////////////////////////////////////////////////////////////////////// - -// ============================================================================ -// headers -// ============================================================================ - -#ifdef __GNUG__ -#pragma implementation "dynarray.h" -#endif - -#include - -#ifdef __BORLANDC__ - #pragma hdrstop -#endif - -#include "wx/dynarray.h" -#include - -#include -#include // for memmove - -#ifndef max - #define max(a, b) (((a) > (b)) ? (a) : (b)) -#endif - -// ============================================================================ -// constants -// ============================================================================ - -// size increment = max(50% of current size, ARRAY_MAXSIZE_INCREMENT) -#define ARRAY_MAXSIZE_INCREMENT 4096 - -// ============================================================================ -// implementation -// ============================================================================ - -// ---------------------------------------------------------------------------- -// wxBaseArray - dynamice array of 'long's -// ---------------------------------------------------------------------------- - -// ctor -wxBaseArray::wxBaseArray() -{ - m_nSize = - m_nCount = 0; - m_pItems = (long *) NULL; -} - -// copy ctor -wxBaseArray::wxBaseArray(const wxBaseArray& src) -{ - m_nSize = // not src.m_nSize to save memory - m_nCount = src.m_nCount; - - if ( m_nSize != 0 ) { - m_pItems = new long[m_nSize]; - memcpy(m_pItems, src.m_pItems, m_nCount*sizeof(long)); - } - else - m_pItems = (long *) NULL; -} - -// assignment operator -wxBaseArray& wxBaseArray::operator=(const wxBaseArray& src) -{ -#if 0 - wxDELETEA(m_pItems); -#else - if ( (m_pItems)) { - delete (m_pItems); - (m_pItems) = 0; - } -#endif - - m_nSize = // not src.m_nSize to save memory - m_nCount = src.m_nCount; - - if ( m_nSize != 0 ) { - m_pItems = new long[m_nSize]; - memcpy(m_pItems, src.m_pItems, m_nCount*sizeof(long)); - } - else - m_pItems = (long *) NULL; - - return *this; -} - -// grow the array -void wxBaseArray::Grow() -{ - // only do it if no more place - if( m_nCount == m_nSize ) { - if( m_nSize == 0 ) { - // was empty, alloc some memory - m_nSize = WX_ARRAY_DEFAULT_INITIAL_SIZE; - m_pItems = new long[m_nSize]; - } - else - { - // add 50% but not too much - size_t nIncrement = m_nSize < WX_ARRAY_DEFAULT_INITIAL_SIZE - ? WX_ARRAY_DEFAULT_INITIAL_SIZE : m_nSize >> 1; - if ( nIncrement > ARRAY_MAXSIZE_INCREMENT ) - nIncrement = ARRAY_MAXSIZE_INCREMENT; - m_nSize += nIncrement; - long *pNew = new long[m_nSize]; - - // copy data to new location - memcpy(pNew, m_pItems, m_nCount*sizeof(long)); - delete [] m_pItems; - m_pItems = pNew; - } - } -} - -// dtor -wxBaseArray::~wxBaseArray() -{ - wxDELETEA(m_pItems); -} - -// clears the list -void wxBaseArray::Clear() -{ - m_nSize = - m_nCount = 0; - - wxDELETEA(m_pItems); -} - -// pre-allocates memory (frees the previous data!) -void wxBaseArray::Alloc(size_t nSize) -{ - wxASSERT( nSize > 0 ); - - // only if old buffer was not big enough - if ( nSize > m_nSize ) { - wxDELETEA(m_pItems); - m_pItems = new long[nSize]; - m_nSize = nSize; - } - - m_nCount = 0; -} - -// minimizes the memory usage by freeing unused memory -void wxBaseArray::Shrink() -{ - // only do it if we have some memory to free - if( m_nCount < m_nSize ) { - // allocates exactly as much memory as we need - long *pNew = new long[m_nCount]; - - // copy data to new location - memcpy(pNew, m_pItems, m_nCount*sizeof(long)); - delete [] m_pItems; - m_pItems = pNew; - } -} - -// searches the array for an item (forward or backwards) -int wxBaseArray::Index(long lItem, bool bFromEnd) const -{ - if ( bFromEnd ) { - if ( m_nCount > 0 ) { - size_t n = m_nCount; - do { - if ( m_pItems[--n] == lItem ) - return n; - } - while ( n != 0 ); - } - } - else { - for( size_t n = 0; n < m_nCount; n++ ) { - if( m_pItems[n] == lItem ) - return n; - } - } - - return wxNOT_FOUND; -} - -// search for an item in a sorted array (binary search) -int wxBaseArray::Index(long lItem, CMPFUNC fnCompare) const -{ - size_t i, - lo = 0, - hi = m_nCount; - int res; - - while ( lo < hi ) { - i = (lo + hi)/2; - - res = (*fnCompare)((const void *)lItem, (const void *)m_pItems[i]); - if ( res < 0 ) - hi = i; - else if ( res > 0 ) - lo = i + 1; - else - return i; - } - - return wxNOT_FOUND; -} -// add item at the end -void wxBaseArray::Add(long lItem) -{ - Grow(); - m_pItems[m_nCount++] = lItem; -} - -// add item assuming the array is sorted with fnCompare function -void wxBaseArray::Add(long lItem, CMPFUNC fnCompare) -{ - size_t i, - lo = 0, - hi = m_nCount; - int res; - - while ( lo < hi ) { - i = (lo + hi)/2; - - res = (*fnCompare)((const void *)lItem, (const void *)m_pItems[i]); - if ( res < 0 ) - hi = i; - else if ( res > 0 ) - lo = i + 1; - else { - lo = hi = i; - break; - } - } - - wxASSERT( lo == hi ); // I hope I got binary search right :-) - - Insert(lItem, lo); -} - -// add item at the given position -void wxBaseArray::Insert(long lItem, size_t nIndex) -{ - wxCHECK_RET( nIndex <= m_nCount, "bad index in wxArray::Insert" ); - - Grow(); - - memmove(&m_pItems[nIndex + 1], &m_pItems[nIndex], - (m_nCount - nIndex)*sizeof(long)); - m_pItems[nIndex] = lItem; - m_nCount++; -} - -// removes item from array (by index) -void wxBaseArray::Remove(size_t nIndex) -{ - wxCHECK_RET( nIndex <= m_nCount, "bad index in wxArray::Remove" ); - - memmove(&m_pItems[nIndex], &m_pItems[nIndex + 1], - (m_nCount - nIndex - 1)*sizeof(long)); - m_nCount--; -} - -// removes item from array (by value) -void wxBaseArray::Remove(long lItem) -{ - int iIndex = Index(lItem); - - wxCHECK_RET( iIndex != wxNOT_FOUND, - "removing inexistent item in wxArray::Remove" ); - - Remove((size_t)iIndex); -} - -// sort array elements using passed comparaison function -void wxBaseArray::Sort(CMPFUNC fCmp) -{ - qsort(m_pItems, m_nCount, sizeof(long), fCmp); -} diff --git a/src/common/dynlib.cpp b/src/common/dynlib.cpp deleted file mode 100644 index 6b8bf78e38..0000000000 --- a/src/common/dynlib.cpp +++ /dev/null @@ -1,237 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dynlib.cpp -// Purpose: Dynamic library management -// Author: Guilhem Lavaux -// Modified by: -// Created: 20/07/98 -// RCS-ID: $Id$ -// Copyright: (c) Guilhem Lavaux -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dynlib.h" -#endif - -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ - #pragma hdrstop -#endif //__BORLANDC__ - -#ifndef WX_PRECOMP -#endif //WX_PRECOMP - -#include -#include -#include -#include - -// --------------------------------------------------------------------------- -// System dependent include -// --------------------------------------------------------------------------- - -#if defined(__UNIX__) -#include -#endif - -#ifdef __WINDOWS__ -#include -#endif - -#ifdef LoadLibrary -#undef LoadLibrary -#endif - -// --------------------------------------------------------------------------- -// Global variables -// --------------------------------------------------------------------------- - -wxLibraries wxTheLibraries; - -// --------------------------------------------------------------------------- -// wxLibrary (one instance per dynamic library -// --------------------------------------------------------------------------- - -wxLibrary::wxLibrary(void *handle) -{ - typedef wxClassInfo *(*t_get_first)(void); - t_get_first get_first; - - m_handle = handle; - m_destroy = TRUE; - - // Some system may use a local heap for library. - get_first = (t_get_first)GetSymbol("wxGetClassFirst"); - // It is a wxWindows DLL. - if (get_first) - PrepareClasses(get_first()); -} - -wxLibrary::~wxLibrary() -{ - if (m_handle && m_destroy) { -#if defined(__UNIX__) - dlclose(m_handle); -#endif -#ifdef __WINDOWS__ - FreeLibrary((HMODULE)m_handle); -#endif - } -} - -wxObject *wxLibrary::CreateObject(const wxString& name) -{ - wxClassInfo *info = (wxClassInfo *)classTable.Get(name); - - if (!info) - return NULL; - - return info->CreateObject(); -} - -void wxLibrary::PrepareClasses(wxClassInfo *first) -{ - // Index all class infos by their class name - wxClassInfo *info = first; - while (info) - { - if (info->m_className) - classTable.Put(info->m_className, (wxObject *)info); - info = info->GetNext(); - } - - // Set base pointers for each wxClassInfo - info = first; - while (info) - { - if (info->GetBaseClassName1()) - info->m_baseInfo1 = (wxClassInfo *)classTable.Get(info->GetBaseClassName1()); - if (info->GetBaseClassName2()) - info->m_baseInfo2 = (wxClassInfo *)classTable.Get(info->GetBaseClassName2()); - info = info->m_next; - } -} - -void *wxLibrary::GetSymbol(const wxString& symbname) -{ -#if defined(__UNIX__) - return dlsym(m_handle, WXSTRINGCAST symbname); -#elif defined( __WINDOWS__ ) - return GetProcAddress((HINSTANCE) m_handle, WXSTRINGCAST symbname); -#elif defined( __WXMAC__ ) - Ptr symAddress ; - CFragSymbolClass symClass ; - Str255 symName ; - - strcpy( (char*) symName , symbname ) ; - c2pstr( (char*) symName ) ; - - if ( FindSymbol( (CFragConnectionID) m_handle , symName , &symAddress , &symClass ) == noErr ) - { - return symAddress ; - } -#endif - return NULL; -} - -// --------------------------------------------------------------------------- -// wxLibraries (only one instance should normally exist) -// --------------------------------------------------------------------------- - -wxLibraries::wxLibraries() -{ -} - -wxLibraries::~wxLibraries() -{ - wxNode *node = m_loaded.First(); - - while (node) { - wxLibrary *lib = (wxLibrary *)node->Data(); - delete lib; - - node = node->Next(); - } -} - -wxLibrary *wxLibraries::LoadLibrary(const wxString& name) -{ - wxString lib_name = name; - wxNode *node; - wxLibrary *lib; - wxClassInfo *old_sm_first; - - if ( (node = m_loaded.Find(name.GetData())) ) - return ((wxLibrary *)node->Data()); - - // If DLL shares data, this is necessary. - old_sm_first = wxClassInfo::sm_first; - wxClassInfo::sm_first = NULL; - -#if defined(__UNIX__) - lib_name.Prepend("./lib"); - lib_name += ".so"; - - printf("lib_name = %s\n", WXSTRINGCAST lib_name); - - void *handle = dlopen(WXSTRINGCAST lib_name, RTLD_LAZY); - - printf("error = %s\n", dlerror()); - - if (!handle) - return NULL; -#elif defined(__WINDOWS__) - lib_name += ".dll"; - -#ifdef UNICODE - HMODULE handle = LoadLibraryW(lib_name); -#else -#ifdef __WIN16__ - HMODULE handle = ::LoadLibrary(lib_name); -#else - HMODULE handle = LoadLibraryA(lib_name); -#endif -#endif - if (!handle) - return NULL; -#elif defined(__WXMAC__) - FSSpec myFSSpec ; - CFragConnectionID handle ; - Ptr myMainAddr ; - Str255 myErrName ; - - wxMacPathToFSSpec( lib_name , &myFSSpec ) ; - if (GetDiskFragment( &myFSSpec , 0 , kCFragGoesToEOF , "\p" , kPrivateCFragCopy , &handle , &myMainAddr , - myErrName ) != noErr ) - { - p2cstr( myErrName ) ; - wxASSERT_MSG( 1 , (char*)myErrName ) ; - return NULL ; - } -#else - return NULL; -#endif - - lib = new wxLibrary((void *)handle); - - wxClassInfo::sm_first = old_sm_first; - - m_loaded.Append(name.GetData(), lib); - return lib; -} - -wxObject *wxLibraries::CreateObject(const wxString& path) -{ - wxNode *node = m_loaded.First(); - wxObject *obj; - - while (node) { - obj = ((wxLibrary *)node->Data())->CreateObject(path); - if (obj) - return obj; - - node = node->Next(); - } - return NULL; -} diff --git a/src/common/event.cpp b/src/common/event.cpp deleted file mode 100644 index 79580ae5c1..0000000000 --- a/src/common/event.cpp +++ /dev/null @@ -1,485 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: event.cpp -// Purpose: Event classes -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ - #pragma implementation "event.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ - #pragma hdrstop -#endif - -#ifndef WX_PRECOMP - #include "wx/defs.h" - #include "wx/control.h" - #include "wx/utils.h" - #include "wx/app.h" - #include "wx/dc.h" -#endif - -#include "wx/event.h" -#include "wx/validate.h" - -#if !USE_SHARED_LIBRARY - IMPLEMENT_DYNAMIC_CLASS(wxEvtHandler, wxObject) - IMPLEMENT_ABSTRACT_CLASS(wxEvent, wxObject) - IMPLEMENT_DYNAMIC_CLASS(wxCommandEvent, wxEvent) - IMPLEMENT_DYNAMIC_CLASS(wxNotifyEvent, wxCommandEvent) - IMPLEMENT_DYNAMIC_CLASS(wxScrollEvent, wxCommandEvent) - IMPLEMENT_DYNAMIC_CLASS(wxMouseEvent, wxEvent) - IMPLEMENT_DYNAMIC_CLASS(wxKeyEvent, wxEvent) - IMPLEMENT_DYNAMIC_CLASS(wxSizeEvent, wxEvent) - IMPLEMENT_DYNAMIC_CLASS(wxPaintEvent, wxEvent) - IMPLEMENT_DYNAMIC_CLASS(wxEraseEvent, wxEvent) - IMPLEMENT_DYNAMIC_CLASS(wxMoveEvent, wxEvent) - IMPLEMENT_DYNAMIC_CLASS(wxFocusEvent, wxEvent) - IMPLEMENT_DYNAMIC_CLASS(wxCloseEvent, wxEvent) - IMPLEMENT_DYNAMIC_CLASS(wxShowEvent, wxEvent) - IMPLEMENT_DYNAMIC_CLASS(wxMaximizeEvent, wxEvent) - IMPLEMENT_DYNAMIC_CLASS(wxIconizeEvent, wxEvent) - IMPLEMENT_DYNAMIC_CLASS(wxMenuEvent, wxEvent) - IMPLEMENT_DYNAMIC_CLASS(wxJoystickEvent, wxEvent) - IMPLEMENT_DYNAMIC_CLASS(wxDropFilesEvent, wxEvent) - IMPLEMENT_DYNAMIC_CLASS(wxActivateEvent, wxEvent) - IMPLEMENT_DYNAMIC_CLASS(wxInitDialogEvent, wxEvent) - IMPLEMENT_DYNAMIC_CLASS(wxSysColourChangedEvent, wxEvent) - IMPLEMENT_DYNAMIC_CLASS(wxIdleEvent, wxEvent) - IMPLEMENT_DYNAMIC_CLASS(wxUpdateUIEvent, wxCommandEvent) - IMPLEMENT_DYNAMIC_CLASS(wxNavigationKeyEvent, wxCommandEvent) - IMPLEMENT_DYNAMIC_CLASS(wxPaletteChangedEvent, wxEvent) - IMPLEMENT_DYNAMIC_CLASS(wxQueryNewPaletteEvent, wxEvent) - - const wxEventTable *wxEvtHandler::GetEventTable() const - { return &wxEvtHandler::sm_eventTable; } - - const wxEventTable wxEvtHandler::sm_eventTable = - { (const wxEventTable *)NULL, &wxEvtHandler::sm_eventTableEntries[0] }; - - const wxEventTableEntry wxEvtHandler::sm_eventTableEntries[] = - { { 0, 0, 0, - #ifdef __SGI_CC__ - // stupid SGI compiler --- offer aug 98 - 0L } - #else // !SGI CC - NULL } - #endif // SGI/!SGI - }; - -#endif // !USE_SHARED_LIBRARY - -/* - * General wxWindows events, covering - * all interesting things that might happen (button clicking, resizing, - * setting text in widgets, etc.). - * - * For each completely new event type, derive a new event class. - * - */ - -wxEvent::wxEvent(int theId) -{ - m_eventType = wxEVT_NULL; - m_eventObject = (wxObject *) NULL; - m_eventHandle = (char *) NULL; - m_timeStamp = 0; - m_id = theId; - m_skipped = FALSE; - m_callbackUserData = (wxObject *) NULL; -} - -/* - * Command events - * - */ - -wxCommandEvent::wxCommandEvent(wxEventType commandType, int theId) -{ - m_eventType = commandType; - m_clientData = (char *) NULL; - m_clientObject = (wxClientData *) NULL; - m_extraLong = 0; - m_commandInt = 0; - m_id = theId; - m_commandString = (char *) NULL; -} - -/* - * Scroll events - */ - -wxScrollEvent::wxScrollEvent(wxEventType commandType, - int id, - int pos, - int orient) - : wxCommandEvent(commandType, id) -{ - m_extraLong = orient; - m_commandInt = pos; -} - - -/* - * Mouse events - * - */ - -wxMouseEvent::wxMouseEvent(wxEventType commandType) -{ - m_eventType = commandType; - m_metaDown = FALSE; - m_altDown = FALSE; - m_controlDown = FALSE; - m_shiftDown = FALSE; - m_leftDown = FALSE; - m_rightDown = FALSE; - m_middleDown = FALSE; - m_x = 0; - m_y = 0; -} - -// True if was a button dclick event (1 = left, 2 = middle, 3 = right) -// or any button dclick event (but = -1) -bool wxMouseEvent::ButtonDClick(int but) const -{ - switch (but) - { - case -1: - return (LeftDClick() || MiddleDClick() || RightDClick()); - case 1: - return LeftDClick(); - case 2: - return MiddleDClick(); - case 3: - return RightDClick(); - default: - wxFAIL_MSG("invalid parameter in wxMouseEvent::ButtonDClick"); - } - - return FALSE; -} - -// True if was a button down event (1 = left, 2 = middle, 3 = right) -// or any button down event (but = -1) -bool wxMouseEvent::ButtonDown(int but) const -{ - switch (but) - { - case -1: - return (LeftDown() || MiddleDown() || RightDown()); - case 1: - return LeftDown(); - case 2: - return MiddleDown(); - case 3: - return RightDown(); - default: - wxFAIL_MSG("invalid parameter in wxMouseEvent::ButtonDown"); - } - - return FALSE; -} - -// True if was a button up event (1 = left, 2 = middle, 3 = right) -// or any button up event (but = -1) -bool wxMouseEvent::ButtonUp(int but) const -{ - switch (but) { - case -1: - return (LeftUp() || MiddleUp() || RightUp()); - case 1: - return LeftUp(); - case 2: - return MiddleUp(); - case 3: - return RightUp(); - default: - wxFAIL_MSG("invalid parameter in wxMouseEvent::ButtonUp"); - } - - return FALSE; -} - -// True if the given button is currently changing state -bool wxMouseEvent::Button(int but) const -{ - switch (but) { - case -1: - return (ButtonUp(-1) || ButtonDown(-1) || ButtonDClick(-1)) ; - case 1: - return (LeftDown() || LeftUp() || LeftDClick()); - case 2: - return (MiddleDown() || MiddleUp() || MiddleDClick()); - case 3: - return (RightDown() || RightUp() || RightDClick()); - default: - wxFAIL_MSG("invalid parameter in wxMouseEvent::Button"); - } - - return FALSE; -} - -bool wxMouseEvent::ButtonIsDown(int but) const -{ - switch (but) { - case -1: - return (LeftIsDown() || MiddleIsDown() || RightIsDown()); - case 1: - return LeftIsDown(); - case 2: - return MiddleIsDown(); - case 3: - return RightIsDown(); - default: - wxFAIL_MSG("invalid parameter in wxMouseEvent::ButtonIsDown"); - } - - return FALSE; -} - -// Find the logical position of the event given the DC -wxPoint wxMouseEvent::GetLogicalPosition(const wxDC& dc) const -{ - wxPoint pt(dc.DeviceToLogicalX(m_x), dc.DeviceToLogicalY(m_y)); - return pt; -} - - -/* - * Keyboard events - * - */ - -wxKeyEvent::wxKeyEvent(wxEventType type) -{ - m_eventType = type; - m_shiftDown = FALSE; - m_controlDown = FALSE; - m_metaDown = FALSE; - m_altDown = FALSE; - m_keyCode = 0; -} - -/* - * Event handler - */ - -wxEvtHandler::wxEvtHandler() -{ - m_nextHandler = (wxEvtHandler *) NULL; - m_previousHandler = (wxEvtHandler *) NULL; - m_enabled = TRUE; - m_dynamicEvents = (wxList *) NULL; -} - -wxEvtHandler::~wxEvtHandler() -{ - // Takes itself out of the list of handlers - if (m_previousHandler) - m_previousHandler->m_nextHandler = m_nextHandler; - - if (m_nextHandler) - m_nextHandler->m_previousHandler = m_previousHandler; - - if (m_dynamicEvents) - { - wxNode *node = m_dynamicEvents->First(); - while (node) - { - wxEventTableEntry *entry = (wxEventTableEntry*)node->Data(); - if (entry->m_callbackUserData) delete entry->m_callbackUserData; - delete entry; - node = node->Next(); - } - delete m_dynamicEvents; - }; -} - -/* - * Event table stuff - */ - -bool wxEvtHandler::ProcessEvent(wxEvent& event) -{ - bool isWindow = IsKindOf(CLASSINFO(wxWindow)); - - // An event handler can be enabled or disabled - if ( GetEvtHandlerEnabled() ) - { - // Handle per-instance dynamic event tables first - - if (SearchDynamicEventTable( event )) - return TRUE; - - // Then static per-class event tables - - const wxEventTable *table = GetEventTable(); - - // Try the associated validator first, if this is a window. - // Problem: if the event handler of the window has been replaced, - // this wxEvtHandler may no longer be a window. - // Therefore validators won't be processed if the handler - // has been replaced with SetEventHandler. - // THIS CAN BE CURED if PushEventHandler is used instead of - // SetEventHandler, and then processing will be passed down the - // chain of event handlers. - if ( isWindow ) - { - wxWindow *win = (wxWindow *)this; - - // Can only use the validator of the window which - // is receiving the event - if ( (win == event.GetEventObject()) && - win->GetValidator() && - win->GetValidator()->ProcessEvent(event)) - { - return TRUE; - } - } - - // Search upwards through the inheritance hierarchy - while (table) - { - if (SearchEventTable((wxEventTable&)*table, event)) - return TRUE; - table = table->baseTable; - } - } - - // Try going down the event handler chain - if ( GetNextHandler() ) - { - if ( GetNextHandler()->ProcessEvent(event) ) - return TRUE; - } - - // Carry on up the parent-child hierarchy, - // but only if event is a command event: it wouldn't - // make sense for a parent to receive a child's size event, for example - if ( isWindow && event.IsKindOf(CLASSINFO(wxCommandEvent)) ) - { - wxWindow *win = (wxWindow *)this; - wxWindow *parent = win->GetParent(); - if (parent && !parent->IsBeingDeleted()) - return win->GetParent()->GetEventHandler()->ProcessEvent(event); - } - - // Last try - application object. - // Special case: don't pass wxEVT_IDLE to wxApp, since it'll always swallow - // it. wxEVT_IDLE is sent explicitly to wxApp so it will be processed - // appropriately via SearchEventTable. - if ( wxTheApp && (this != wxTheApp) && (event.GetEventType() != wxEVT_IDLE) - ) - { - if ( wxTheApp->ProcessEvent(event) ) - return TRUE; - } - - return FALSE; -} - -bool wxEvtHandler::SearchEventTable(wxEventTable& table, wxEvent& event) -{ - int i = 0; - int commandId = event.GetId(); - - // BC++ doesn't like while (table.entries[i].m_fn) - -#ifdef __SC__ - while (table.entries[i].m_fn != 0) -#else - while (table.entries[i].m_fn != 0L) -#endif - { - if ((event.GetEventType() == table.entries[i].m_eventType) && - (table.entries[i].m_id == -1 || // Match, if event spec says any id will do (id == -1) - (table.entries[i].m_lastId == -1 && commandId == table.entries[i].m_id) || - (table.entries[i].m_lastId != -1 && - (commandId >= table.entries[i].m_id && commandId <= table.entries[i].m_lastId)))) - { - event.Skip(FALSE); - event.m_callbackUserData = table.entries[i].m_callbackUserData; - - (this->*((wxEventFunction) (table.entries[i].m_fn)))(event); - - if ( event.GetSkipped() ) - return FALSE; - else - return TRUE; - } - i++; - } - return FALSE; -} - -void wxEvtHandler::Connect( int id, int lastId, - wxEventType eventType, - wxObjectEventFunction func, - wxObject *userData ) -{ - wxEventTableEntry *entry = new wxEventTableEntry; - entry->m_id = id; - entry->m_lastId = lastId; - entry->m_eventType = eventType; - entry->m_fn = func; - entry->m_callbackUserData = userData; - - if (!m_dynamicEvents) - m_dynamicEvents = new wxList; - - m_dynamicEvents->Append( (wxObject*) entry ); -} - -bool wxEvtHandler::SearchDynamicEventTable( wxEvent& event ) -{ - if (!m_dynamicEvents) return FALSE; - - int commandId = event.GetId(); - - wxNode *node = m_dynamicEvents->First(); - while (node) - { - wxEventTableEntry *entry = (wxEventTableEntry*)node->Data(); - - if (entry->m_fn) - { - // Match, if event spec says any id will do (id == -1) - if ( (event.GetEventType() == entry->m_eventType) && - (entry->m_id == -1 || - (entry->m_lastId == -1 && commandId == entry->m_id) || - (entry->m_lastId != -1 && - (commandId >= entry->m_id && commandId <= entry->m_lastId))) ) - { - event.Skip(FALSE); - event.m_callbackUserData = entry->m_callbackUserData; - - (this->*((wxEventFunction) (entry->m_fn)))(event); - - if (event.GetSkipped()) - return FALSE; - else - return TRUE; - } - } - node = node->Next(); - } - return FALSE; -}; - -bool wxEvtHandler::OnClose() -{ - if (GetNextHandler()) - return GetNextHandler()->OnClose(); - else - return FALSE; -} diff --git a/src/common/extended.c b/src/common/extended.c deleted file mode 100644 index 3bba986f4b..0000000000 --- a/src/common/extended.c +++ /dev/null @@ -1,188 +0,0 @@ -#include "wx/setup.h" -#include - -#if wxUSE_APPLE_IEEE - -/* - * C O N V E R T T O I E E E E X T E N D E D - */ - -/* Copyright (C) 1988-1991 Apple Computer, Inc. - * All rights reserved. - * - * Machine-independent I/O routines for IEEE floating-point numbers. - * - * NaN's and infinities are converted to HUGE_VAL or HUGE, which - * happens to be infinity on IEEE machines. Unfortunately, it is - * impossible to preserve NaN's in a machine-independent way. - * Infinities are, however, preserved on IEEE machines. - * - * These routines have been tested on the following machines: - * Apple Macintosh, MPW 3.1 C compiler - * Apple Macintosh, THINK C compiler - * Silicon Graphics IRIS, MIPS compiler - * Cray X/MP and Y/MP - * Digital Equipment VAX - * - * - * Implemented by Malcolm Slaney and Ken Turkowski. - * - * Malcolm Slaney contributions during 1988-1990 include big- and little- - * endian file I/O, conversion to and from Motorola's extended 80-bit - * floating-point format, and conversions to and from IEEE single- - * precision floating-point format. - * - * In 1991, Ken Turkowski implemented the conversions to and from - * IEEE double-precision format, added more precision to the extended - * conversions, and accommodated conversions involving +/- infinity, - * NaN's, and denormalized numbers. - */ - -#ifndef HUGE_VAL -#define HUGE_VAL HUGE -#endif /*HUGE_VAL*/ - -#define FloatToUnsigned(f) ((unsigned long) (((long) (f - 2147483648.0)) + 2147483647L) + 1) - -void ConvertToIeeeExtended(double num, unsigned char *bytes) -{ - int sign; - int expon; - double fMant, fsMant; - unsigned long hiMant, loMant; - - if (num < 0) { - sign = 0x8000; - num *= -1; - } else { - sign = 0; - } - - if (num == 0) { - expon = 0; hiMant = 0; loMant = 0; - } - else { - fMant = frexp(num, &expon); - if ((expon > 16384) || !(fMant < 1)) { /* Infinity or NaN */ - expon = sign|0x7FFF; hiMant = 0; loMant = 0; /* infinity */ - } - else { /* Finite */ - expon += 16382; - if (expon < 0) { /* denormalized */ - fMant = ldexp(fMant, expon); - expon = 0; - } - expon |= sign; - fMant = ldexp(fMant, 32); - fsMant = floor(fMant); - hiMant = FloatToUnsigned(fsMant); - fMant = ldexp(fMant - fsMant, 32); - fsMant = floor(fMant); - loMant = FloatToUnsigned(fsMant); - } - } - - // disable the warning about 'possible loss of data' - #ifdef _MSC_VER - #pragma warning(disable: 4244) - #endif // Visual C++ - - bytes[0] = expon >> 8; - bytes[1] = expon; - bytes[2] = (unsigned char) hiMant >> 24; - bytes[3] = (unsigned char) hiMant >> 16; - bytes[4] = (unsigned char) hiMant >> 8; - bytes[5] = (unsigned char) hiMant; - bytes[6] = (unsigned char) loMant >> 24; - bytes[7] = (unsigned char) loMant >> 16; - bytes[8] = (unsigned char) loMant >> 8; - bytes[9] = (unsigned char) loMant; - - #ifdef _MSC_VER - #pragma warning(default: 4244) - #endif // Visual C++ -} - -/* - * C O N V E R T F R O M I E E E E X T E N D E D - */ - -/* - * Copyright (C) 1988-1991 Apple Computer, Inc. - * All rights reserved. - * - * Machine-independent I/O routines for IEEE floating-point numbers. - * - * NaN's and infinities are converted to HUGE_VAL or HUGE, which - * happens to be infinity on IEEE machines. Unfortunately, it is - * impossible to preserve NaN's in a machine-independent way. - * Infinities are, however, preserved on IEEE machines. - * - * These routines have been tested on the following machines: - * Apple Macintosh, MPW 3.1 C compiler - * Apple Macintosh, THINK C compiler - * Silicon Graphics IRIS, MIPS compiler - * Cray X/MP and Y/MP - * Digital Equipment VAX - * - * - * Implemented by Malcolm Slaney and Ken Turkowski. - * - * Malcolm Slaney contributions during 1988-1990 include big- and little- - * endian file I/O, conversion to and from Motorola's extended 80-bit - * floating-point format, and conversions to and from IEEE single- - * precision floating-point format. - * - * In 1991, Ken Turkowski implemented the conversions to and from - * IEEE double-precision format, added more precision to the extended - * conversions, and accommodated conversions involving +/- infinity, - * NaN's, and denormalized numbers. - */ - -#ifndef HUGE_VAL -# define HUGE_VAL HUGE -#endif /*HUGE_VAL*/ - -# define UnsignedToFloat(u) (((double) ((long) (u - 2147483647L - 1))) + 2147483648.0) - -/**************************************************************** - * Extended precision IEEE floating-point conversion routine. - ****************************************************************/ - -double ConvertFromIeeeExtended(const unsigned char *bytes) -{ - double f; - int expon; - unsigned long hiMant, loMant; - - expon = ((bytes[0] & 0x7F) << 8) | (bytes[1] & 0xFF); - hiMant = ((unsigned long)(bytes[2] & 0xFF) << 24) - | ((unsigned long) (bytes[3] & 0xFF) << 16) - | ((unsigned long) (bytes[4] & 0xFF) << 8) - | ((unsigned long) (bytes[5] & 0xFF)); - loMant = ((unsigned long) (bytes[6] & 0xFF) << 24) - | ((unsigned long) (bytes[7] & 0xFF) << 16) - | ((unsigned long) (bytes[8] & 0xFF) << 8) - | ((unsigned long) (bytes[9] & 0xFF)); - - if (expon == 0 && hiMant == 0 && loMant == 0) { - f = 0; - } - else { - if (expon == 0x7FFF) { /* Infinity or NaN */ - f = HUGE_VAL; - } - else { - expon -= 16383; - f = ldexp(UnsignedToFloat(hiMant), expon-=31); - f += ldexp(UnsignedToFloat(loMant), expon-=32); - } - } - - if (bytes[0] & 0x80) - return -f; - else - return f; -} - -#endif /* wxUSE_APPLE_IEEE */ diff --git a/src/common/file.cpp b/src/common/file.cpp deleted file mode 100644 index 2d3f2c1329..0000000000 --- a/src/common/file.cpp +++ /dev/null @@ -1,536 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: file.cpp -// Purpose: wxFile - encapsulates low-level "file descriptor" -// wxTempFile -// Author: Vadim Zeitlin -// Modified by: -// Created: 29/01/98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -// ---------------------------------------------------------------------------- -// headers -// ---------------------------------------------------------------------------- - -#ifdef __GNUG__ -#pragma implementation "file.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" -#include "wx/defs.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -// standard -#if defined(__WXMSW__) && !defined(__GNUWIN32__) - #include - -#ifndef __SALFORDC__ - #define WIN32_LEAN_AND_MEAN - #define NOSERVICE - #define NOIME - #define NOATOM - #define NOGDI - #define NOGDICAPMASKS - #define NOMETAFILE - #define NOMINMAX - #define NOMSG - #define NOOPENFILE - #define NORASTEROPS - #define NOSCROLL - #define NOSOUND - #define NOSYSMETRICS - #define NOTEXTMETRIC - #define NOWH - #define NOCOMM - #define NOKANJI - #define NOCRYPT - #define NOMCX -#endif - - #include // for GetTempFileName -#elif (defined(__UNIX__) || defined(__GNUWIN32__)) - #include -#ifdef __GNUWIN32__ - #include -#endif -#elif (defined(__WXSTUBS__)) - // Have to ifdef this for different environments - #include -#elif (defined(__WXMAC__)) - int access( const char *path, int mode ) { return 0 ; } - char* mktemp( char * path ) { return path ;} - #include - #include - #define W_OK 2 - #define R_OK 4 -#else - #error "Please specify the header with file functions declarations." -#endif //Win/UNIX - -#include // SEEK_xxx constants -#include // O_RDONLY &c - -#ifndef __MWERKS__ -#include // needed for stat -#include // stat -#endif - -// Microsoft compiler loves underscores, feed them to it -#ifdef _MSC_VER - - #ifndef __MWERKS__ - - // functions - #define open _open - #define close _close - #define read _read - #define write _write - #define lseek _lseek - #define fsync _commit - #define access _access - #define eof _eof - - // types - #define stat _stat - - // constants - - #define O_RDONLY _O_RDONLY - #define O_WRONLY _O_WRONLY - #define O_RDWR _O_RDWR - #define O_EXCL _O_EXCL - #define O_CREAT _O_CREAT - #define O_BINARY _O_BINARY - - #define S_IFDIR _S_IFDIR - #define S_IFREG _S_IFREG - - #endif - - #define W_OK 2 - #define R_OK 4 -#else - #define tell(fd) lseek(fd, 0, SEEK_CUR) -#endif //_MSC_VER - -#ifdef __BORLANDC__ - #define W_OK 2 - #define R_OK 4 -#endif - -// there is no distinction between text and binary files under Unix -#ifdef __UNIX__ - #define O_BINARY (0) -#endif //__UNIX__ - - -#ifdef __SALFORDC__ -#include -#endif - -// wxWindows -#include -#include -#include -#include - -#ifndef MAX_PATH -#define MAX_PATH 512 -#endif - -// ============================================================================ -// implementation of wxFile -// ============================================================================ - -// ---------------------------------------------------------------------------- -// static functions -// ---------------------------------------------------------------------------- -bool wxFile::Exists(const char *name) -{ -#ifdef __SALFORDC__ - struct _stat st; -#else - struct stat st; -#endif - - return !access(name, 0) && !stat((char*) name, &st) && (st.st_mode & S_IFREG); -} - -bool wxFile::Access(const char *name, OpenMode mode) -{ - int how = 0; - - switch ( mode ) { - case read: - how = R_OK; - break; - - case write: - how = W_OK; - break; - - default: - wxFAIL_MSG("bad wxFile::Access mode parameter."); - } - - return access(name, how) == 0; -} - -// ---------------------------------------------------------------------------- -// opening/closing -// ---------------------------------------------------------------------------- - -// ctors -wxFile::wxFile(const char *szFileName, OpenMode mode) -{ - m_fd = fd_invalid; - m_error = FALSE; - - Open(szFileName, mode); -} - -// dtor -wxFile::~wxFile() -{ - Close(); -} - -// create the file, fail if it already exists and bOverwrite -bool wxFile::Create(const char *szFileName, bool bOverwrite, int accessMode) -{ - // if bOverwrite we create a new file or truncate the existing one, - // otherwise we only create the new file and fail if it already exists -#ifdef __SALFORDC__ - int fd = open(szFileName, O_WRONLY | O_CREAT | - (bOverwrite ? O_TRUNC : O_EXCL)); -#else - int fd = open(szFileName, O_WRONLY | O_CREAT | - (bOverwrite ? O_TRUNC : O_EXCL), accessMode); -#endif - - if ( fd == -1 ) { - wxLogSysError(_("can't create file '%s'"), szFileName); - return FALSE; - } - else { - Attach(fd); - return TRUE; - } -} - -// open the file -bool wxFile::Open(const char *szFileName, OpenMode mode, int accessMode) -{ - int flags = O_BINARY; - - switch ( mode ) { - case read: - flags |= O_RDONLY; - break; - - case write: - flags |= O_WRONLY | O_CREAT | O_TRUNC; - break; - - case write_append: - flags |= O_WRONLY | O_APPEND; - break; - - case read_write: - flags |= O_RDWR; - break; - } - -#ifdef __SALFORDC__ - int fd = open(szFileName, flags); -#else - int fd = open(szFileName, flags, accessMode); -#endif - - if ( fd == -1 ) { - wxLogSysError(_("can't open file '%s'"), szFileName); - return FALSE; - } - else { - Attach(fd); - return TRUE; - } -} - -// close -bool wxFile::Close() -{ - if ( IsOpened() ) { - if ( close(m_fd) == -1 ) { - wxLogSysError(_("can't close file descriptor %d"), m_fd); - m_fd = fd_invalid; - return FALSE; - } - else - m_fd = fd_invalid; - } - - return TRUE; -} - -// ---------------------------------------------------------------------------- -// read/write -// ---------------------------------------------------------------------------- - -// read -off_t wxFile::Read(void *pBuf, off_t nCount) -{ - wxCHECK( (pBuf != NULL) && IsOpened(), 0 ); - -#ifdef __MWERKS__ - int iRc = ::read(m_fd, (char*) pBuf, nCount); -#else - int iRc = ::read(m_fd, pBuf, nCount); -#endif - if ( iRc == -1 ) { - wxLogSysError(_("can't read from file descriptor %d"), m_fd); - return wxInvalidOffset; - } - else - return (size_t)iRc; -} - -// write -size_t wxFile::Write(const void *pBuf, size_t nCount) -{ - wxCHECK( (pBuf != NULL) && IsOpened(), 0 ); - -#ifdef __MWERKS__ - int iRc = ::write(m_fd, (const char*) pBuf, nCount); -#else - int iRc = ::write(m_fd, pBuf, nCount); -#endif - if ( iRc == -1 ) { - wxLogSysError(_("can't write to file descriptor %d"), m_fd); - m_error = TRUE; - return 0; - } - else - return iRc; -} - -// flush -bool wxFile::Flush() -{ - if ( IsOpened() ) { - #if defined(_MSC_VER) || wxHAVE_FSYNC - if ( fsync(m_fd) == -1 ) - { - wxLogSysError(_("can't flush file descriptor %d"), m_fd); - return FALSE; - } - #else // no fsync - // just do nothing - #endif // fsync - } - - return TRUE; -} - -// ---------------------------------------------------------------------------- -// seek -// ---------------------------------------------------------------------------- - -// seek -off_t wxFile::Seek(off_t ofs, wxSeekMode mode) -{ - wxASSERT( IsOpened() ); - - int flag = -1; - switch ( mode ) { - case wxFromStart: - flag = SEEK_SET; - break; - - case wxFromCurrent: - flag = SEEK_CUR; - break; - - case wxFromEnd: - flag = SEEK_END; - break; - - default: - wxFAIL_MSG(_("unknown seek origin")); - } - - int iRc = lseek(m_fd, ofs, flag); - if ( iRc == -1 ) { - wxLogSysError(_("can't seek on file descriptor %d"), m_fd); - return wxInvalidOffset; - } - else - return (off_t)iRc; -} - -// get current off_t -off_t wxFile::Tell() const -{ - wxASSERT( IsOpened() ); - - int iRc = tell(m_fd); - if ( iRc == -1 ) { - wxLogSysError(_("can't get seek position on file descriptor %d"), m_fd); - return wxInvalidOffset; - } - else - return (off_t)iRc; -} - -// get current file length -off_t wxFile::Length() const -{ - wxASSERT( IsOpened() ); - - #if defined( _MSC_VER ) && !defined( __MWERKS__ ) - int iRc = _filelength(m_fd); - #else - int iRc = tell(m_fd); - if ( iRc != -1 ) { - // @ have to use const_cast :-( - int iLen = ((wxFile *)this)->SeekEnd(); - if ( iLen != -1 ) { - // restore old position - if ( ((wxFile *)this)->Seek(iRc) == -1 ) { - // error - iLen = -1; - } - } - - iRc = iLen; - } - - #endif //_MSC_VER - - if ( iRc == -1 ) { - wxLogSysError(_("can't find length of file on file descriptor %d"), m_fd); - return wxInvalidOffset; - } - else - return (off_t)iRc; -} - -// is end of file reached? -bool wxFile::Eof() const -{ - wxASSERT( IsOpened() ); - - int iRc; - - #if defined(__UNIX__) || defined(__GNUWIN32__) || defined( __MWERKS__ ) || defined(__SALFORDC__) - // @@ this doesn't work, of course, on unseekable file descriptors - off_t ofsCur = Tell(), - ofsMax = Length(); - if ( ofsCur == wxInvalidOffset || ofsMax == wxInvalidOffset ) - iRc = -1; - else - iRc = ofsCur == ofsMax; - #else // Windows and "native" compiler - iRc = eof(m_fd); - #endif // Windows/Unix - - switch ( iRc ) { - case 1: - break; - - case 0: - return FALSE; - - case -1: - wxLogSysError(_("can't determine if the end of file is reached on \ -descriptor %d"), m_fd); - break; - - default: - wxFAIL_MSG(_("invalid eof() return value.")); - } - - return TRUE; -} - -// ============================================================================ -// implementation of wxTempFile -// ============================================================================ - -// ---------------------------------------------------------------------------- -// construction -// ---------------------------------------------------------------------------- -wxTempFile::wxTempFile(const wxString& strName) -{ - Open(strName); -} - -bool wxTempFile::Open(const wxString& strName) -{ - m_strName = strName; - - // we want to create the file in the same directory as strName because - // otherwise rename() in Commit() might not work (if the files are on - // different partitions for example). Unfortunately, the only standard - // (POSIX) temp file creation function tmpnam() can't do it. - #if defined(__UNIX__) || defined(__WXSTUBS__)|| defined( __WXMAC__ ) - static const char *szMktempSuffix = "XXXXXX"; - m_strTemp << strName << szMktempSuffix; - mktemp((char *)m_strTemp.c_str()); // will do because length doesn't change - #else // Windows - wxString strPath; - wxSplitPath(strName, &strPath, NULL, NULL); - if ( strPath.IsEmpty() ) - strPath = '.'; // GetTempFileName will fail if we give it empty string -#ifdef __WIN32__ - if ( !GetTempFileName(strPath, "wx_",0, m_strTemp.GetWriteBuf(MAX_PATH)) ) -#else - // Not sure why MSVC++ 1.5 header defines first param as BYTE - bug? - if ( !GetTempFileName((BYTE) (const char*) strPath, "wx_",0, m_strTemp.GetWriteBuf(MAX_PATH)) ) -#endif - wxLogLastError("GetTempFileName"); - m_strTemp.UngetWriteBuf(); - #endif // Windows/Unix - - return m_file.Open(m_strTemp, wxFile::write); -} - -// ---------------------------------------------------------------------------- -// destruction -// ---------------------------------------------------------------------------- - -wxTempFile::~wxTempFile() -{ - if ( IsOpened() ) - Discard(); -} - -bool wxTempFile::Commit() -{ - m_file.Close(); - - if ( wxFile::Exists(m_strName) && remove(m_strName) != 0 ) { - wxLogSysError(_("can't remove file '%s'"), m_strName.c_str()); - return FALSE; - } - - if ( rename(m_strTemp, m_strName) != 0 ) { - wxLogSysError(_("can't commit changes to file '%s'"), m_strName.c_str()); - return FALSE; - } - - return TRUE; -} - -void wxTempFile::Discard() -{ - m_file.Close(); - if ( remove(m_strTemp) != 0 ) - wxLogSysError(_("can't remove temporary file '%s'"), m_strTemp.c_str()); -} diff --git a/src/common/fileconf.cpp b/src/common/fileconf.cpp deleted file mode 100644 index dd99938e9a..0000000000 --- a/src/common/fileconf.cpp +++ /dev/null @@ -1,1441 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: fileconf.cpp -// Purpose: implementation of wxFileConfig derivation of wxConfig -// Author: Vadim Zeitlin -// Modified by: -// Created: 07.04.98 (adapted from appconf.cpp) -// RCS-ID: $Id$ -// Copyright: (c) 1997 Karsten Ballüder & Vadim Zeitlin -// Ballueder@usa.net -// Licence: wxWindows license -/////////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "fileconf.h" -#endif - -// ============================================================================ -// declarations -// ============================================================================ - -// ---------------------------------------------------------------------------- -// headers -// ---------------------------------------------------------------------------- -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ - #pragma hdrstop -#endif //__BORLANDC__ - -#ifndef WX_PRECOMP - #include "wx/string.h" - #include "wx/intl.h" -#endif //WX_PRECOMP - -#include "wx/app.h" -#include "wx/dynarray.h" -#include "wx/file.h" -#include "wx/log.h" -#include "wx/textfile.h" -#include "wx/config.h" -#include "wx/fileconf.h" - -#include "wx/utils.h" // for wxGetHomeDir - -// _WINDOWS_ is defined when windows.h is included, -// __WXMSW__ is defined for MS Windows compilation -#if defined(__WXMSW__) && !defined(_WINDOWS_) - #include -#endif //windows.h - -#include -#include - -// ---------------------------------------------------------------------------- -// macros -// ---------------------------------------------------------------------------- -#define CONST_CAST ((wxFileConfig *)this)-> - -// ---------------------------------------------------------------------------- -// constants -// ---------------------------------------------------------------------------- -#ifndef MAX_PATH - #define MAX_PATH 512 -#endif - -// ---------------------------------------------------------------------------- -// global functions declarations -// ---------------------------------------------------------------------------- - -// is 'c' a valid character in group name? -// NB: wxCONFIG_IMMUTABLE_PREFIX and wxCONFIG_PATH_SEPARATOR must be valid chars, -// but _not_ ']' (group name delimiter) -inline bool IsValid(char c) { return isalnum(c) || strchr("@_/-!.*%", c); } - -// compare functions for sorting the arrays -static int CompareEntries(ConfigEntry *p1, ConfigEntry *p2); -static int CompareGroups(ConfigGroup *p1, ConfigGroup *p2); - -// filter strings -static wxString FilterIn(const wxString& str); -static wxString FilterOut(const wxString& str); - -// ============================================================================ -// implementation -// ============================================================================ - -// ---------------------------------------------------------------------------- -// static functions -// ---------------------------------------------------------------------------- -wxString wxFileConfig::GetGlobalDir() -{ - wxString strDir; - - #ifdef __UNIX__ - strDir = "/etc/"; - #elif defined(__WXSTUBS__) - wxASSERT_MSG( FALSE, "TODO" ) ; - #else // Windows - char szWinDir[MAX_PATH]; - ::GetWindowsDirectory(szWinDir, MAX_PATH); - - strDir = szWinDir; - strDir << '\\'; - #endif // Unix/Windows - - return strDir; -} - -wxString wxFileConfig::GetLocalDir() -{ - wxString strDir; - - wxGetHomeDir(&strDir); - -#ifdef __UNIX__ - if (strDir.Last() != '/') strDir << '/'; -#else - if (strDir.Last() != '\\') strDir << '\\'; -#endif - - return strDir; -} - -wxString wxFileConfig::GetGlobalFileName(const char *szFile) -{ - wxString str = GetGlobalDir(); - str << szFile; - - if ( strchr(szFile, '.') == NULL ) - #ifdef __UNIX__ - str << ".conf"; - #else // Windows - str << ".ini"; - #endif // UNIX/Win - - return str; -} - -wxString wxFileConfig::GetLocalFileName(const char *szFile) -{ - wxString str = GetLocalDir(); - - #ifdef __UNIX__ - str << '.'; - #endif - - str << szFile; - - #ifdef __WXMSW__ - if ( strchr(szFile, '.') == NULL ) - str << ".ini"; - #endif - - return str; -} - -// ---------------------------------------------------------------------------- -// ctor -// ---------------------------------------------------------------------------- - -void wxFileConfig::Init() -{ - m_pCurrentGroup = - m_pRootGroup = new ConfigGroup(NULL, "", this); - - m_linesHead = - m_linesTail = NULL; - - // it's not an error if (one of the) file(s) doesn't exist - - // parse the global file - if ( !m_strGlobalFile.IsEmpty() && wxFile::Exists(m_strGlobalFile) ) { - wxTextFile fileGlobal(m_strGlobalFile); - - if ( fileGlobal.Open() ) { - Parse(fileGlobal, FALSE /* global */); - SetRootPath(); - } - else - wxLogWarning(_("can't open global configuration file '%s'."), - m_strGlobalFile.c_str()); - } - - // parse the local file - if ( !m_strLocalFile.IsEmpty() && wxFile::Exists(m_strLocalFile) ) { - wxTextFile fileLocal(m_strLocalFile); - if ( fileLocal.Open() ) { - Parse(fileLocal, TRUE /* local */); - SetRootPath(); - } - else - wxLogWarning(_("can't open user configuration file '%s'."), - m_strLocalFile.c_str()); - } -} - -// constructor supports creation of wxFileConfig objects of any type -wxFileConfig::wxFileConfig(const wxString& appName, const wxString& vendorName, - const wxString& strLocal, const wxString& strGlobal, - long style) - : wxConfigBase(appName, vendorName, strLocal, strGlobal, style), - m_strLocalFile(strLocal), m_strGlobalFile(strGlobal) -{ - // Make up an application name if not supplied - if (appName.IsEmpty() && wxTheApp) - { - SetAppName(wxTheApp->GetAppName()); - } - - // Make up names for files if empty - if ( m_strLocalFile.IsEmpty() && (style & wxCONFIG_USE_LOCAL_FILE) ) - { - m_strLocalFile = GetLocalFileName(GetAppName()); - } - - if ( m_strGlobalFile.IsEmpty() && (style & wxCONFIG_USE_GLOBAL_FILE) ) - { - m_strGlobalFile = GetGlobalFileName(GetAppName()); - } - - // Check if styles are not supplied, but filenames are, in which case - // add the correct styles. - if ( !m_strLocalFile.IsEmpty() ) - SetStyle(GetStyle() | wxCONFIG_USE_LOCAL_FILE); - - if ( !m_strGlobalFile.IsEmpty() ) - SetStyle(GetStyle() | wxCONFIG_USE_GLOBAL_FILE); - - // if the path is not absolute, prepend the standard directory to it - if ( !m_strLocalFile.IsEmpty() && !wxIsAbsolutePath(m_strLocalFile) ) - { - wxString strLocal = m_strLocalFile; - m_strLocalFile = GetLocalDir(); - m_strLocalFile << strLocal; - } - - if ( !m_strGlobalFile.IsEmpty() && !wxIsAbsolutePath(m_strGlobalFile) ) - { - wxString strGlobal = m_strGlobalFile; - m_strGlobalFile = GetGlobalDir(); - m_strGlobalFile << strGlobal; - } - - Init(); -} - -void wxFileConfig::CleanUp() -{ - delete m_pRootGroup; - - LineList *pCur = m_linesHead; - while ( pCur != NULL ) { - LineList *pNext = pCur->Next(); - delete pCur; - pCur = pNext; - } -} - -wxFileConfig::~wxFileConfig() -{ - Flush(); - - CleanUp(); -} - -// ---------------------------------------------------------------------------- -// parse a config file -// ---------------------------------------------------------------------------- - -void wxFileConfig::Parse(wxTextFile& file, bool bLocal) -{ - const char *pStart; - const char *pEnd; - wxString strLine; - - size_t nLineCount = file.GetLineCount(); - for ( size_t n = 0; n < nLineCount; n++ ) { - strLine = file[n]; - - // add the line to linked list - if ( bLocal ) - LineListAppend(strLine); - - // skip leading spaces - for ( pStart = strLine; isspace(*pStart); pStart++ ) - ; - - // skip blank/comment lines - if ( *pStart == '\0'|| *pStart == ';' || *pStart == '#' ) - continue; - - if ( *pStart == '[' ) { // a new group - pEnd = pStart; - - while ( *++pEnd != ']' ) { - if ( !IsValid(*pEnd) && *pEnd != ' ' ) // allow spaces in group names - break; - } - - if ( *pEnd != ']' ) { - wxLogError(_("file '%s': unexpected character %c at line %d."), - file.GetName(), *pEnd, n + 1); - continue; // skip this line - } - - // group name here is always considered as abs path - wxString strGroup; - pStart++; - strGroup << wxCONFIG_PATH_SEPARATOR << wxString(pStart, pEnd - pStart); - - // will create it if doesn't yet exist - SetPath(strGroup); - - if ( bLocal ) - m_pCurrentGroup->SetLine(m_linesTail); - - // check that there is nothing except comments left on this line - bool bCont = TRUE; - while ( *++pEnd != '\0' && bCont ) { - switch ( *pEnd ) { - case '#': - case ';': - bCont = FALSE; - break; - - case ' ': - case '\t': - // ignore whitespace ('\n' impossible here) - break; - - default: - wxLogWarning(_("file '%s', line %d: '%s' " - "ignored after group header."), - file.GetName(), n + 1, pEnd); - bCont = FALSE; - } - } - } - else { // a key - const char *pEnd = pStart; - while ( IsValid(*pEnd) ) - pEnd++; - - wxString strKey(pStart, pEnd); - - // skip whitespace - while ( isspace(*pEnd) ) - pEnd++; - - if ( *pEnd++ != '=' ) { - wxLogError(_("file '%s', line %d: '=' expected."), - file.GetName(), n + 1); - } - else { - ConfigEntry *pEntry = m_pCurrentGroup->FindEntry(strKey); - - if ( pEntry == NULL ) { - // new entry - pEntry = m_pCurrentGroup->AddEntry(strKey, n); - - if ( bLocal ) - pEntry->SetLine(m_linesTail); - } - else { - if ( bLocal && pEntry->IsImmutable() ) { - // immutable keys can't be changed by user - wxLogWarning(_("file '%s', line %d: value for " - "immutable key '%s' ignored."), - file.GetName(), n + 1, strKey.c_str()); - continue; - } - // the condition below catches the cases (a) and (b) but not (c): - // (a) global key found second time in global file - // (b) key found second (or more) time in local file - // (c) key from global file now found in local one - // which is exactly what we want. - else if ( !bLocal || pEntry->IsLocal() ) { - wxLogWarning(_("file '%s', line %d: key '%s' was first " - "found at line %d."), - file.GetName(), n + 1, strKey.c_str(), pEntry->Line()); - - if ( bLocal ) - pEntry->SetLine(m_linesTail); - } - } - - // skip whitespace - while ( isspace(*pEnd) ) - pEnd++; - - pEntry->SetValue(FilterIn(pEnd), FALSE /* read from file */); - } - } - } -} - -// ---------------------------------------------------------------------------- -// set/retrieve path -// ---------------------------------------------------------------------------- - -void wxFileConfig::SetRootPath() -{ - m_strPath.Empty(); - m_pCurrentGroup = m_pRootGroup; -} - -void wxFileConfig::SetPath(const wxString& strPath) -{ - wxArrayString aParts; - - if ( strPath.IsEmpty() ) { - SetRootPath(); - return; - } - - if ( strPath[0] == wxCONFIG_PATH_SEPARATOR ) { - // absolute path - wxSplitPath(aParts, strPath); - } - else { - // relative path, combine with current one - wxString strFullPath = m_strPath; - strFullPath << wxCONFIG_PATH_SEPARATOR << strPath; - wxSplitPath(aParts, strFullPath); - } - - // change current group - size_t n; - m_pCurrentGroup = m_pRootGroup; - for ( n = 0; n < aParts.Count(); n++ ) { - ConfigGroup *pNextGroup = m_pCurrentGroup->FindSubgroup(aParts[n]); - if ( pNextGroup == NULL ) - pNextGroup = m_pCurrentGroup->AddSubgroup(aParts[n]); - m_pCurrentGroup = pNextGroup; - } - - // recombine path parts in one variable - m_strPath.Empty(); - for ( n = 0; n < aParts.Count(); n++ ) { - m_strPath << wxCONFIG_PATH_SEPARATOR << aParts[n]; - } -} - -// ---------------------------------------------------------------------------- -// enumeration -// ---------------------------------------------------------------------------- - -bool wxFileConfig::GetFirstGroup(wxString& str, long& lIndex) const -{ - lIndex = 0; - return GetNextGroup(str, lIndex); -} - -bool wxFileConfig::GetNextGroup (wxString& str, long& lIndex) const -{ - if ( size_t(lIndex) < m_pCurrentGroup->Groups().Count() ) { - str = m_pCurrentGroup->Groups()[lIndex++]->Name(); - return TRUE; - } - else - return FALSE; -} - -bool wxFileConfig::GetFirstEntry(wxString& str, long& lIndex) const -{ - lIndex = 0; - return GetNextEntry(str, lIndex); -} - -bool wxFileConfig::GetNextEntry (wxString& str, long& lIndex) const -{ - if ( size_t(lIndex) < m_pCurrentGroup->Entries().Count() ) { - str = m_pCurrentGroup->Entries()[lIndex++]->Name(); - return TRUE; - } - else - return FALSE; -} - -size_t wxFileConfig::GetNumberOfEntries(bool bRecursive) const -{ - size_t n = m_pCurrentGroup->Entries().Count(); - if ( bRecursive ) { - ConfigGroup *pOldCurrentGroup = m_pCurrentGroup; - size_t nSubgroups = m_pCurrentGroup->Groups().Count(); - for ( size_t nGroup = 0; nGroup < nSubgroups; nGroup++ ) { - CONST_CAST m_pCurrentGroup = m_pCurrentGroup->Groups()[nGroup]; - n += GetNumberOfEntries(TRUE); - CONST_CAST m_pCurrentGroup = pOldCurrentGroup; - } - } - - return n; -} - -size_t wxFileConfig::GetNumberOfGroups(bool bRecursive) const -{ - size_t n = m_pCurrentGroup->Groups().Count(); - if ( bRecursive ) { - ConfigGroup *pOldCurrentGroup = m_pCurrentGroup; - size_t nSubgroups = m_pCurrentGroup->Groups().Count(); - for ( size_t nGroup = 0; nGroup < nSubgroups; nGroup++ ) { - CONST_CAST m_pCurrentGroup = m_pCurrentGroup->Groups()[nGroup]; - n += GetNumberOfGroups(TRUE); - CONST_CAST m_pCurrentGroup = pOldCurrentGroup; - } - } - - return n; -} - -// ---------------------------------------------------------------------------- -// tests for existence -// ---------------------------------------------------------------------------- - -bool wxFileConfig::HasGroup(const wxString& strName) const -{ - wxConfigPathChanger path(this, strName); - - ConfigGroup *pGroup = m_pCurrentGroup->FindSubgroup(path.Name()); - return pGroup != NULL; -} - -bool wxFileConfig::HasEntry(const wxString& strName) const -{ - wxConfigPathChanger path(this, strName); - - ConfigEntry *pEntry = m_pCurrentGroup->FindEntry(path.Name()); - return pEntry != NULL; -} - -// ---------------------------------------------------------------------------- -// read/write values -// ---------------------------------------------------------------------------- - -bool wxFileConfig::Read(const wxString& key, - wxString* pStr) const -{ - wxConfigPathChanger path(this, key); - - ConfigEntry *pEntry = m_pCurrentGroup->FindEntry(path.Name()); - if (pEntry == NULL) { - return FALSE; - } - else { - *pStr = ExpandEnvVars(pEntry->Value()); - return TRUE; - } -} - -bool wxFileConfig::Read(const wxString& key, - wxString* pStr, const wxString& defVal) const -{ - wxConfigPathChanger path(this, key); - - ConfigEntry *pEntry = m_pCurrentGroup->FindEntry(path.Name()); - if (pEntry == NULL) { - if( IsRecordingDefaults() ) - ((wxFileConfig *)this)->Write(key,defVal); - *pStr = ExpandEnvVars(defVal); - return FALSE; - } - else { - *pStr = ExpandEnvVars(pEntry->Value()); - return TRUE; - } -} - -bool wxFileConfig::Read(const wxString& key, long *pl) const -{ - wxString str; - if ( Read(key, & str) ) { - *pl = atol(str); - return TRUE; - } - else { - return FALSE; - } -} - -bool wxFileConfig::Write(const wxString& key, const wxString& szValue) -{ - wxConfigPathChanger path(this, key); - - wxString strName = path.Name(); - if ( strName.IsEmpty() ) { - // setting the value of a group is an error - wxASSERT_MSG( IsEmpty(szValue), _("can't set value of a group!") ); - - // ... except if it's empty in which case it's a way to force it's creation - m_pCurrentGroup->SetDirty(); - - // this will add a line for this group if it didn't have it before - (void)m_pCurrentGroup->GetGroupLine(); - } - else { - // writing an entry - - // check that the name is reasonable - if ( strName[0u] == wxCONFIG_IMMUTABLE_PREFIX ) { - wxLogError(_("Entry name can't start with '%c'."), - wxCONFIG_IMMUTABLE_PREFIX); - return FALSE; - } - - for ( const char *pc = strName; *pc != '\0'; pc++ ) { - if ( !IsValid(*pc) ) { - wxLogError(_("Character '%c' is invalid in a config entry name."), - *pc); - return FALSE; - } - } - - ConfigEntry *pEntry = m_pCurrentGroup->FindEntry(strName); - if ( pEntry == NULL ) - pEntry = m_pCurrentGroup->AddEntry(strName); - - pEntry->SetValue(szValue); - } - - return TRUE; -} - -bool wxFileConfig::Write(const wxString& key, long lValue) -{ - // ltoa() is not ANSI :-( - wxString buf; - buf.Printf("%ld", lValue); - return Write(key, buf); -} - -bool wxFileConfig::Flush(bool /* bCurrentOnly */) -{ - if ( LineListIsEmpty() || !m_pRootGroup->IsDirty() ) - return TRUE; - - wxTempFile file(m_strLocalFile); - - if ( !file.IsOpened() ) { - wxLogError(_("can't open user configuration file.")); - return FALSE; - } - - // write all strings to file - for ( LineList *p = m_linesHead; p != NULL; p = p->Next() ) { - if ( !file.Write(p->Text() + wxTextFile::GetEOL()) ) { - wxLogError(_("can't write user configuration file.")); - return FALSE; - } - } - - return file.Commit(); -} - -// ---------------------------------------------------------------------------- -// renaming groups/entries -// ---------------------------------------------------------------------------- - -bool wxFileConfig::RenameEntry(const wxString& oldName, - const wxString& newName) -{ - // check that the entry exists - ConfigEntry *oldEntry = m_pCurrentGroup->FindEntry(oldName); - if ( !oldEntry ) - return FALSE; - - // check that the new entry doesn't already exist - if ( m_pCurrentGroup->FindEntry(newName) ) - return FALSE; - - // delete the old entry, create the new one - wxString value = oldEntry->Value(); - if ( !m_pCurrentGroup->DeleteEntry(oldName) ) - return FALSE; - - ConfigEntry *newEntry = m_pCurrentGroup->AddEntry(newName); - newEntry->SetValue(value); - - return TRUE; -} - -bool wxFileConfig::RenameGroup(const wxString& oldName, - const wxString& newName) -{ - // check that the group exists - ConfigGroup *group = m_pCurrentGroup->FindSubgroup(oldName); - if ( !group ) - return FALSE; - - // check that the new group doesn't already exist - if ( m_pCurrentGroup->FindSubgroup(newName) ) - return FALSE; - - group->Rename(newName); - - return TRUE; -} - -// ---------------------------------------------------------------------------- -// delete groups/entries -// ---------------------------------------------------------------------------- - -bool wxFileConfig::DeleteEntry(const wxString& key, bool bGroupIfEmptyAlso) -{ - wxConfigPathChanger path(this, key); - - if ( !m_pCurrentGroup->DeleteEntry(path.Name()) ) - return FALSE; - - if ( bGroupIfEmptyAlso && m_pCurrentGroup->IsEmpty() ) { - if ( m_pCurrentGroup != m_pRootGroup ) { - ConfigGroup *pGroup = m_pCurrentGroup; - SetPath(".."); // changes m_pCurrentGroup! - m_pCurrentGroup->DeleteSubgroupByName(pGroup->Name()); - } - //else: never delete the root group - } - - return TRUE; -} - -bool wxFileConfig::DeleteGroup(const wxString& key) -{ - wxConfigPathChanger path(this, key); - - return m_pCurrentGroup->DeleteSubgroupByName(path.Name()); -} - -bool wxFileConfig::DeleteAll() -{ - CleanUp(); - - const char *szFile = m_strLocalFile; - - if ( remove(szFile) == -1 ) - wxLogSysError(_("can't delete user configuration file '%s'"), szFile); - - m_strLocalFile = m_strGlobalFile = ""; - Init(); - - return TRUE; -} - -// ---------------------------------------------------------------------------- -// linked list functions -// ---------------------------------------------------------------------------- - -// append a new line to the end of the list -LineList *wxFileConfig::LineListAppend(const wxString& str) -{ - LineList *pLine = new LineList(str); - - if ( m_linesTail == NULL ) { - // list is empty - m_linesHead = pLine; - } - else { - // adjust pointers - m_linesTail->SetNext(pLine); - pLine->SetPrev(m_linesTail); - } - - m_linesTail = pLine; - return m_linesTail; -} - -// insert a new line after the given one or in the very beginning if !pLine -LineList *wxFileConfig::LineListInsert(const wxString& str, - LineList *pLine) -{ - if ( pLine == m_linesTail ) - return LineListAppend(str); - - LineList *pNewLine = new LineList(str); - if ( pLine == NULL ) { - // prepend to the list - pNewLine->SetNext(m_linesHead); - m_linesHead->SetPrev(pNewLine); - m_linesHead = pNewLine; - } - else { - // insert before pLine - LineList *pNext = pLine->Next(); - pNewLine->SetNext(pNext); - pNewLine->SetPrev(pLine); - pNext->SetPrev(pNewLine); - pLine->SetNext(pNewLine); - } - - return pNewLine; -} - -void wxFileConfig::LineListRemove(LineList *pLine) -{ - LineList *pPrev = pLine->Prev(), - *pNext = pLine->Next(); - - // first entry? - if ( pPrev == NULL ) - m_linesHead = pNext; - else - pPrev->SetNext(pNext); - - // last entry? - if ( pNext == NULL ) - m_linesTail = pPrev; - else - pNext->SetPrev(pPrev); - - delete pLine; -} - -bool wxFileConfig::LineListIsEmpty() -{ - return m_linesHead == NULL; -} - -// ============================================================================ -// wxFileConfig::ConfigGroup -// ============================================================================ - -// ---------------------------------------------------------------------------- -// ctor/dtor -// ---------------------------------------------------------------------------- - -// ctor -ConfigGroup::ConfigGroup(ConfigGroup *pParent, - const wxString& strName, - wxFileConfig *pConfig) - : m_aEntries(CompareEntries), - m_aSubgroups(CompareGroups), - m_strName(strName) -{ - m_pConfig = pConfig; - m_pParent = pParent; - m_bDirty = FALSE; - m_pLine = NULL; - - m_pLastEntry = NULL; - m_pLastGroup = NULL; -} - -// dtor deletes all children -ConfigGroup::~ConfigGroup() -{ - // entries - size_t n, nCount = m_aEntries.Count(); - for ( n = 0; n < nCount; n++ ) - delete m_aEntries[n]; - - // subgroups - nCount = m_aSubgroups.Count(); - for ( n = 0; n < nCount; n++ ) - delete m_aSubgroups[n]; -} - -// ---------------------------------------------------------------------------- -// line -// ---------------------------------------------------------------------------- - -void ConfigGroup::SetLine(LineList *pLine) -{ - wxASSERT( m_pLine == NULL ); // shouldn't be called twice - - m_pLine = pLine; -} - -/* - This is a bit complicated, so let me explain it in details. All lines that - were read from the local file (the only one we will ever modify) are stored - in a (doubly) linked list. Our problem is to know at which position in this - list should we insert the new entries/subgroups. To solve it we keep three - variables for each group: m_pLine, m_pLastEntry and m_pLastGroup. - - m_pLine points to the line containing "[group_name]" - m_pLastEntry points to the last entry of this group in the local file. - m_pLastGroup subgroup - - Initially, they're NULL all three. When the group (an entry/subgroup) is read - from the local file, the corresponding variable is set. However, if the group - was read from the global file and then modified or created by the application - these variables are still NULL and we need to create the corresponding lines. - See the following functions (and comments preceding them) for the details of - how we do it. - - Also, when our last entry/group are deleted we need to find the new last - element - the code in DeleteEntry/Subgroup does this by backtracking the list - of lines until it either founds an entry/subgroup (and this is the new last - element) or the m_pLine of the group, in which case there are no more entries - (or subgroups) left and m_pLast becomes NULL. - - NB: This last problem could be avoided for entries if we added new entries - immediately after m_pLine, but in this case the entries would appear - backwards in the config file (OTOH, it's not that important) and as we - would still need to do it for the subgroups the code wouldn't have been - significantly less complicated. -*/ - -// Return the line which contains "[our name]". If we're still not in the list, -// add our line to it immediately after the last line of our parent group if we -// have it or in the very beginning if we're the root group. -LineList *ConfigGroup::GetGroupLine() -{ - if ( m_pLine == NULL ) { - ConfigGroup *pParent = Parent(); - - // this group wasn't present in local config file, add it now - if ( pParent != NULL ) { - wxString strFullName; - strFullName << "[" << (GetFullName().c_str() + 1) << "]"; // +1: no '/' - m_pLine = m_pConfig->LineListInsert(strFullName, - pParent->GetLastGroupLine()); - pParent->SetLastGroup(this); // we're surely after all the others - } - else { - // we return NULL, so that LineListInsert() will insert us in the - // very beginning - } - } - - return m_pLine; -} - -// Return the last line belonging to the subgroups of this group (after which -// we can add a new subgroup), if we don't have any subgroups or entries our -// last line is the group line (m_pLine) itself. -LineList *ConfigGroup::GetLastGroupLine() -{ - // if we have any subgroups, our last line is the last line of the last - // subgroup - if ( m_pLastGroup != NULL ) { - LineList *pLine = m_pLastGroup->GetLastGroupLine(); - - wxASSERT( pLine != NULL ); // last group must have !NULL associated line - return pLine; - } - - // no subgroups, so the last line is the line of thelast entry (if any) - return GetLastEntryLine(); -} - -// return the last line belonging to the entries of this group (after which -// we can add a new entry), if we don't have any entries we will add the new -// one immediately after the group line itself. -LineList *ConfigGroup::GetLastEntryLine() -{ - if ( m_pLastEntry != NULL ) { - LineList *pLine = m_pLastEntry->GetLine(); - - wxASSERT( pLine != NULL ); // last entry must have !NULL associated line - return pLine; - } - - // no entries: insert after the group header - return GetGroupLine(); -} - -// ---------------------------------------------------------------------------- -// group name -// ---------------------------------------------------------------------------- - -void ConfigGroup::Rename(const wxString& newName) -{ - m_strName = newName; - - LineList *line = GetGroupLine(); - wxString strFullName; - strFullName << "[" << (GetFullName().c_str() + 1) << "]"; // +1: no '/' - line->SetText(strFullName); - - SetDirty(); -} - -wxString ConfigGroup::GetFullName() const -{ - if ( Parent() ) - return Parent()->GetFullName() + wxCONFIG_PATH_SEPARATOR + Name(); - else - return ""; -} - -// ---------------------------------------------------------------------------- -// find an item -// ---------------------------------------------------------------------------- - -// use binary search because the array is sorted -ConfigEntry * -ConfigGroup::FindEntry(const char *szName) const -{ - size_t i, - lo = 0, - hi = m_aEntries.Count(); - int res; - ConfigEntry *pEntry; - - while ( lo < hi ) { - i = (lo + hi)/2; - pEntry = m_aEntries[i]; - - #if wxCONFIG_CASE_SENSITIVE - res = strcmp(pEntry->Name(), szName); - #else - res = Stricmp(pEntry->Name(), szName); - #endif - - if ( res > 0 ) - hi = i; - else if ( res < 0 ) - lo = i + 1; - else - return pEntry; - } - - return NULL; -} - -ConfigGroup * -ConfigGroup::FindSubgroup(const char *szName) const -{ - size_t i, - lo = 0, - hi = m_aSubgroups.Count(); - int res; - ConfigGroup *pGroup; - - while ( lo < hi ) { - i = (lo + hi)/2; - pGroup = m_aSubgroups[i]; - - #if wxCONFIG_CASE_SENSITIVE - res = strcmp(pGroup->Name(), szName); - #else - res = Stricmp(pGroup->Name(), szName); - #endif - - if ( res > 0 ) - hi = i; - else if ( res < 0 ) - lo = i + 1; - else - return pGroup; - } - - return NULL; -} - -// ---------------------------------------------------------------------------- -// create a new item -// ---------------------------------------------------------------------------- - -// create a new entry and add it to the current group -ConfigEntry * -ConfigGroup::AddEntry(const wxString& strName, int nLine) -{ - wxASSERT( FindEntry(strName) == NULL ); - - ConfigEntry *pEntry = new ConfigEntry(this, strName, nLine); - m_aEntries.Add(pEntry); - - return pEntry; -} - -// create a new group and add it to the current group -ConfigGroup * -ConfigGroup::AddSubgroup(const wxString& strName) -{ - wxASSERT( FindSubgroup(strName) == NULL ); - - ConfigGroup *pGroup = new ConfigGroup(this, strName, m_pConfig); - m_aSubgroups.Add(pGroup); - - return pGroup; -} - -// ---------------------------------------------------------------------------- -// delete an item -// ---------------------------------------------------------------------------- - -/* - The delete operations are _very_ slow if we delete the last item of this - group (see comments before GetXXXLineXXX functions for more details), - so it's much better to start with the first entry/group if we want to - delete several of them. - */ - -bool ConfigGroup::DeleteSubgroupByName(const char *szName) -{ - return DeleteSubgroup(FindSubgroup(szName)); -} - -// doesn't delete the subgroup itself, but does remove references to it from -// all other data structures (and normally the returned pointer should be -// deleted a.s.a.p. because there is nothing much to be done with it anyhow) -bool ConfigGroup::DeleteSubgroup(ConfigGroup *pGroup) -{ - wxCHECK( pGroup != NULL, FALSE ); // deleting non existing group? - - // delete all entries - size_t nCount = pGroup->m_aEntries.Count(); - for ( size_t nEntry = 0; nEntry < nCount; nEntry++ ) { - LineList *pLine = pGroup->m_aEntries[nEntry]->GetLine(); - if ( pLine != NULL ) - m_pConfig->LineListRemove(pLine); - } - - // and subgroups of this sungroup - nCount = pGroup->m_aSubgroups.Count(); - for ( size_t nGroup = 0; nGroup < nCount; nGroup++ ) { - pGroup->DeleteSubgroup(pGroup->m_aSubgroups[nGroup]); - } - - LineList *pLine = pGroup->m_pLine; - if ( pLine != NULL ) { - // notice that we may do this test inside the previous "if" because the - // last entry's line is surely !NULL - if ( pGroup == m_pLastGroup ) { - // our last entry is being deleted - find the last one which stays - wxASSERT( m_pLine != NULL ); // we have a subgroup with !NULL pLine... - - // go back until we find a subgroup or reach the group's line - ConfigGroup *pNewLast = NULL; - size_t n, nSubgroups = m_aSubgroups.Count(); - LineList *pl; - for ( pl = pLine->Prev(); pl != m_pLine; pl = pl->Prev() ) { - // is it our subgroup? - for ( n = 0; (pNewLast == NULL) && (n < nSubgroups); n++ ) { - // do _not_ call GetGroupLine! we don't want to add it to the local - // file if it's not already there - if ( m_aSubgroups[n]->m_pLine == m_pLine ) - pNewLast = m_aSubgroups[n]; - } - - if ( pNewLast != NULL ) // found? - break; - } - - if ( pl == m_pLine ) { - wxASSERT( !pNewLast ); // how comes it has the same line as we? - - // we've reached the group line without finding any subgroups - m_pLastGroup = NULL; - } - else - m_pLastGroup = pNewLast; - } - - m_pConfig->LineListRemove(pLine); - } - - SetDirty(); - - m_aSubgroups.Remove(pGroup); - delete pGroup; - - return TRUE; -} - -bool ConfigGroup::DeleteEntry(const char *szName) -{ - ConfigEntry *pEntry = FindEntry(szName); - wxCHECK( pEntry != NULL, FALSE ); // deleting non existing item? - - LineList *pLine = pEntry->GetLine(); - if ( pLine != NULL ) { - // notice that we may do this test inside the previous "if" because the - // last entry's line is surely !NULL - if ( pEntry == m_pLastEntry ) { - // our last entry is being deleted - find the last one which stays - wxASSERT( m_pLine != NULL ); // if we have an entry with !NULL pLine... - - // go back until we find another entry or reach the group's line - ConfigEntry *pNewLast = NULL; - size_t n, nEntries = m_aEntries.Count(); - LineList *pl; - for ( pl = pLine->Prev(); pl != m_pLine; pl = pl->Prev() ) { - // is it our subgroup? - for ( n = 0; (pNewLast == NULL) && (n < nEntries); n++ ) { - if ( m_aEntries[n]->GetLine() == m_pLine ) - pNewLast = m_aEntries[n]; - } - - if ( pNewLast != NULL ) // found? - break; - } - - if ( pl == m_pLine ) { - wxASSERT( !pNewLast ); // how comes it has the same line as we? - - // we've reached the group line without finding any subgroups - m_pLastEntry = NULL; - } - else - m_pLastEntry = pNewLast; - } - - m_pConfig->LineListRemove(pLine); - } - - // we must be written back for the changes to be saved - SetDirty(); - - m_aEntries.Remove(pEntry); - delete pEntry; - - return TRUE; -} - -// ---------------------------------------------------------------------------- -// -// ---------------------------------------------------------------------------- -void ConfigGroup::SetDirty() -{ - m_bDirty = TRUE; - if ( Parent() != NULL ) // propagate upwards - Parent()->SetDirty(); -} - -// ============================================================================ -// wxFileConfig::ConfigEntry -// ============================================================================ - -// ---------------------------------------------------------------------------- -// ctor -// ---------------------------------------------------------------------------- -ConfigEntry::ConfigEntry(ConfigGroup *pParent, - const wxString& strName, - int nLine) - : m_strName(strName) -{ - wxASSERT( !strName.IsEmpty() ); - - m_pParent = pParent; - m_nLine = nLine; - m_pLine = NULL; - - m_bDirty = FALSE; - - m_bImmutable = strName[0] == wxCONFIG_IMMUTABLE_PREFIX; - if ( m_bImmutable ) - m_strName.erase(0, 1); // remove first character -} - -// ---------------------------------------------------------------------------- -// set value -// ---------------------------------------------------------------------------- - -void ConfigEntry::SetLine(LineList *pLine) -{ - if ( m_pLine != NULL ) { - wxLogWarning(_("entry '%s' appears more than once in group '%s'"), - Name().c_str(), m_pParent->GetFullName().c_str()); - } - - m_pLine = pLine; - Group()->SetLastEntry(this); -} - -// second parameter is FALSE if we read the value from file and prevents the -// entry from being marked as 'dirty' -void ConfigEntry::SetValue(const wxString& strValue, bool bUser) -{ - if ( bUser && IsImmutable() ) { - wxLogWarning(_("attempt to change immutable key '%s' ignored."), - Name().c_str()); - return; - } - - // do nothing if it's the same value - if ( strValue == m_strValue ) - return; - - m_strValue = strValue; - - if ( bUser ) { - wxString strVal = FilterOut(strValue); - wxString strLine; - strLine << m_strName << " = " << strVal; - - if ( m_pLine != NULL ) { - // entry was read from the local config file, just modify the line - m_pLine->SetText(strLine); - } - else { - // add a new line to the file - wxASSERT( m_nLine == wxNOT_FOUND ); // consistency check - - m_pLine = Group()->Config()->LineListInsert(strLine, - Group()->GetLastEntryLine()); - Group()->SetLastEntry(this); - } - - SetDirty(); - } -} - -void ConfigEntry::SetDirty() -{ - m_bDirty = TRUE; - Group()->SetDirty(); -} - -// ============================================================================ -// global functions -// ============================================================================ - -// ---------------------------------------------------------------------------- -// compare functions for array sorting -// ---------------------------------------------------------------------------- - -int CompareEntries(ConfigEntry *p1, - ConfigEntry *p2) -{ - #if wxCONFIG_CASE_SENSITIVE - return strcmp(p1->Name(), p2->Name()); - #else - return Stricmp(p1->Name(), p2->Name()); - #endif -} - -int CompareGroups(ConfigGroup *p1, - ConfigGroup *p2) -{ - #if wxCONFIG_CASE_SENSITIVE - return strcmp(p1->Name(), p2->Name()); - #else - return Stricmp(p1->Name(), p2->Name()); - #endif -} - -// ---------------------------------------------------------------------------- -// filter functions -// ---------------------------------------------------------------------------- - -// undo FilterOut -wxString FilterIn(const wxString& str) -{ - wxString strResult; - strResult.Alloc(str.Len()); - - bool bQuoted = !str.IsEmpty() && str[0] == '"'; - - for ( size_t n = bQuoted ? 1 : 0; n < str.Len(); n++ ) { - if ( str[n] == '\\' ) { - switch ( str[++n] ) { - case 'n': - strResult += '\n'; - break; - - case 'r': - strResult += '\r'; - break; - - case 't': - strResult += '\t'; - break; - - case '\\': - strResult += '\\'; - break; - - case '"': - strResult += '"'; - break; - } - } - else { - if ( str[n] != '"' || !bQuoted ) - strResult += str[n]; - else if ( n != str.Len() - 1 ) { - wxLogWarning(_("unexpected \" at position %d in '%s'."), - n, str.c_str()); - } - //else: it's the last quote of a quoted string, ok - } - } - - return strResult; -} - -// quote the string before writing it to file -wxString FilterOut(const wxString& str) -{ - if(str.IsEmpty()) - return str; - - wxString strResult; - strResult.Alloc(str.Len()); - - // quoting is necessary to preserve spaces in the beginning of the string - bool bQuote = isspace(str[0]) || str[0] == '"'; - - if ( bQuote ) - strResult += '"'; - - char c; - for ( size_t n = 0; n < str.Len(); n++ ) { - switch ( str[n] ) { - case '\n': - c = 'n'; - break; - - case '\r': - c = 'r'; - break; - - case '\t': - c = 't'; - break; - - case '\\': - c = '\\'; - break; - - case '"': - if ( bQuote ) { - c = '"'; - break; - } - //else: fall through - - default: - strResult += str[n]; - continue; // nothing special to do - } - - // we get here only for special characters - strResult << '\\' << c; - } - - if ( bQuote ) - strResult += '"'; - - return strResult; -} - - - - - - - diff --git a/src/common/filefn.cpp b/src/common/filefn.cpp deleted file mode 100644 index e828319ae0..0000000000 --- a/src/common/filefn.cpp +++ /dev/null @@ -1,1705 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: filefn.cpp -// Purpose: File- and directory-related functions -// Author: Julian Smart -// Modified by: -// Created: 29/01/98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Julian Smart -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "filefn.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" -#include "wx/defs.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/defs.h" -#endif - -#include "wx/utils.h" -#include - -// there are just too many of those... -#ifdef _MSC_VER - #pragma warning(disable:4706) // assignment within conditional expression -#endif // VC++ - -#include -#include -#include -#include -#if !defined(__WATCOMC__) -#if !(defined(_MSC_VER) && (_MSC_VER > 800)) -#include -#endif -#endif -#include -#ifndef __MWERKS__ -#include -#include -#else -#include -#include -#endif - -#ifdef __UNIX__ -#include -#include -#endif - -#ifdef __WINDOWS__ -#if !defined( __GNUWIN32__ ) && !defined( __MWERKS__ ) && !defined(__SALFORDC__) -#include -#include -#endif -#endif - -#ifdef __GNUWIN32__ -#ifndef __TWIN32__ -#include -#endif - -#define stricmp strcasecmp -#endif - -#ifdef __BORLANDC__ // Please someone tell me which version of Borland needs - // this (3.1 I believe) and how to test for it. - // If this works for Borland 4.0 as well, then no worries. -#include -#endif - -#ifdef __SALFORDC__ -#include -#include -#endif - -#include "wx/setup.h" -#include "wx/log.h" - -// No, Cygwin doesn't appear to have fnmatch.h after all. -#if defined(HAVE_FNMATCH_H) -#include "fnmatch.h" -#endif - -#ifdef __WINDOWS__ -#include "windows.h" -#endif - -#define _MAXPATHLEN 500 - -extern char *wxBuffer; -#ifdef __WXMAC__ -extern char gwxMacFileName[] ; -extern char gwxMacFileName2[] ; -extern char gwxMacFileName3[] ; -#endif - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxPathList, wxStringList) -#endif - -void wxPathList::Add (const wxString& path) -{ - wxStringList::Add ((char *)(const char *)path); -} - -// Add paths e.g. from the PATH environment variable -void wxPathList::AddEnvList (const wxString& envVariable) -{ - static const char PATH_TOKS[] = -#ifdef __WINDOWS__ - " ;"; // Don't seperate with colon in DOS (used for drive) -#else - " :;"; -#endif - - char *val = getenv (WXSTRINGCAST envVariable); - if (val && *val) - { - char *s = copystring (val); - char *token = strtok (s, PATH_TOKS); - - if (token) - { - Add (copystring (token)); - while (token) - { - if ((token = strtok ((char *) NULL, PATH_TOKS)) != NULL) - Add (wxString(token)); - } - } - delete[]s; - } -} - -// Given a full filename (with path), ensure that that file can -// be accessed again USING FILENAME ONLY by adding the path -// to the list if not already there. -void wxPathList::EnsureFileAccessible (const wxString& path) -{ - wxString path1(path); - char *path_only = wxPathOnly (WXSTRINGCAST path1); - if (path_only) - { - if (!Member (wxString(path_only))) - Add (wxString(path_only)); - } -} - -bool wxPathList::Member (const wxString& path) -{ - for (wxNode * node = First (); node != NULL; node = node->Next ()) - { - wxString path2((char *) node->Data ()); - if ( -#if defined(__WINDOWS__) || defined(__VMS__) || defined (__WXMAC__) - // Case INDEPENDENT - path.CompareTo (path2, wxString::ignoreCase) == 0 -#else - // Case sensitive File System - path.CompareTo (path2) == 0 -#endif - ) - return TRUE; - } - return FALSE; -} - -wxString wxPathList::FindValidPath (const wxString& file) -{ - if (wxFileExists (wxExpandPath(wxBuffer, file))) - return wxString(wxBuffer); - - char buf[_MAXPATHLEN]; - strcpy(buf, wxBuffer); - - char *filename = (char*) NULL; /* shut up buggy egcs warning */ - filename = IsAbsolutePath (buf) ? wxFileNameFromPath (buf) : (char *)buf; - - for (wxNode * node = First (); node; node = node->Next ()) - { - char *path = (char *) node->Data (); - strcpy (wxBuffer, path); - char ch = wxBuffer[strlen(wxBuffer)-1]; - if (ch != '\\' && ch != '/') - strcat (wxBuffer, "/"); - strcat (wxBuffer, filename); -#ifdef __WINDOWS__ - Unix2DosFilename (wxBuffer); -#endif - if (wxFileExists (wxBuffer)) - { - return wxString(wxBuffer); // Found! - } - } // for() - - return wxString(""); // Not found -} - -wxString wxPathList::FindAbsoluteValidPath (const wxString& file) -{ - wxString f = FindValidPath(file); - if (wxIsAbsolutePath(f)) - return f; - else - { - char buf[500]; - wxGetWorkingDirectory(buf, 499); - int len = (int)strlen(buf); - char lastCh = 0; - if (len > 0) - lastCh = buf[len-1]; - if (lastCh != '/' && lastCh != '\\') - { -#ifdef __WINDOWS__ - strcat(buf, "\\"); -#else - strcat(buf, "/"); -#endif - } - strcat(buf, (const char *)f); - strcpy(wxBuffer, buf); - return wxString(wxBuffer); - } -} - -bool -wxFileExists (const wxString& filename) -{ -#ifdef __GNUWIN32__ // (fix a B20 bug) - if (GetFileAttributes(filename) == 0xFFFFFFFF) - return FALSE; - else - return TRUE; -#elif defined(__WXMAC__) - struct stat stbuf; - strcpy( gwxMacFileName , filename ) ; - wxUnix2MacFilename( gwxMacFileName ) ; - if (gwxMacFileName && stat ((char *)(const char *)gwxMacFileName, &stbuf) == 0) - return TRUE; - return FALSE ; -#else - -#ifdef __SALFORDC__ - struct _stat stbuf; -#else - struct stat stbuf; -#endif - - if ((filename != "") && stat ((char *)(const char *)filename, &stbuf) == 0) - return TRUE; - return FALSE; -#endif -} - -/* Vadim's alternative implementation - -// does the file exist? -bool wxFileExists(const char *pszFileName) -{ - struct stat st; - return !access(pszFileName, 0) && - !stat(pszFileName, &st) && - (st.st_mode & S_IFREG); -} -*/ - -bool -wxIsAbsolutePath (const wxString& filename) -{ - if (filename != "") - { - if (filename[0] == '/' -#ifdef __VMS__ - || (filename[0] == '[' && filename[1] != '.') -#endif -#ifdef __WINDOWS__ - /* MSDOS */ - || filename[0] == '\\' || (isalpha (filename[0]) && filename[1] == ':') -#endif - ) - return TRUE; - } - return FALSE; -} - -/* - * Strip off any extension (dot something) from end of file, - * IF one exists. Inserts zero into buffer. - * - */ - -void wxStripExtension(char *buffer) -{ - int len = strlen(buffer); - int i = len-1; - while (i > 0) - { - if (buffer[i] == '.') - { - buffer[i] = 0; - break; - } - i --; - } -} - -void wxStripExtension(wxString& buffer) -{ - size_t len = buffer.Length(); - size_t i = len-1; - while (i > 0) - { - if (buffer.GetChar(i) == '.') - { - buffer = buffer.Left(i); - break; - } - i --; - } -} - -// Destructive removal of /./ and /../ stuff -char *wxRealPath (char *path) -{ -#ifdef __WXMSW__ - static const char SEP = '\\'; - Unix2DosFilename(path); -#else - static const char SEP = '/'; -#endif - if (path[0] && path[1]) { - /* MATTHEW: special case "/./x" */ - char *p; - if (path[2] == SEP && path[1] == '.') - p = &path[0]; - else - p = &path[2]; - for (; *p; p++) - { - if (*p == SEP) - { - if (p[1] == '.' && p[2] == '.' && (p[3] == SEP || p[3] == '\0')) - { - char *q; - for (q = p - 1; q >= path && *q != SEP; q--); - if (q[0] == SEP && (q[1] != '.' || q[2] != '.' || q[3] != SEP) - && (q - 1 <= path || q[-1] != SEP)) - { - strcpy (q, p + 3); - if (path[0] == '\0') - { - path[0] = SEP; - path[1] = '\0'; - } -#ifdef __WXMSW__ - /* Check that path[2] is NULL! */ - else if (path[1] == ':' && !path[2]) - { - path[2] = SEP; - path[3] = '\0'; - } -#endif - p = q - 1; - } - } - else if (p[1] == '.' && (p[2] == SEP || p[2] == '\0')) - strcpy (p, p + 2); - } - } - } - return path; -} - -// Must be destroyed -char *wxCopyAbsolutePath(const wxString& filename) -{ - if (filename == "") - return (char *) NULL; - - if (! IsAbsolutePath(wxExpandPath(wxBuffer, filename))) { - char buf[_MAXPATHLEN]; - buf[0] = '\0'; - wxGetWorkingDirectory(buf, sizeof(buf)/sizeof(char)); - char ch = buf[strlen(buf) - 1]; -#ifdef __WXMSW__ - if (ch != '\\' && ch != '/') - strcat(buf, "\\"); -#else - if (ch != '/') - strcat(buf, "/"); -#endif - strcat(buf, wxBuffer); - return copystring( wxRealPath(buf) ); - } - return copystring( wxBuffer ); -} - -/*- - Handles: - ~/ => home dir - ~user/ => user's home dir - If the environment variable a = "foo" and b = "bar" then: - Unix: - $a => foo - $a$b => foobar - $a.c => foo.c - xxx$a => xxxfoo - ${a}! => foo! - $(b)! => bar! - \$a => \$a - MSDOS: - $a ==> $a - $(a) ==> foo - $(a)$b ==> foo$b - $(a)$(b)==> foobar - test.$$ ==> test.$$ - */ - -/* input name in name, pathname output to buf. */ - -char *wxExpandPath(char *buf, const char *name) -{ - register char *d, *s, *nm; - char lnm[_MAXPATHLEN]; - int q; - - // Some compilers don't like this line. -// const char trimchars[] = "\n \t"; - - char trimchars[4]; - trimchars[0] = '\n'; - trimchars[1] = ' '; - trimchars[2] = '\t'; - trimchars[3] = 0; - -#ifdef __WXMSW__ - const char SEP = '\\'; -#else - const char SEP = '/'; -#endif - buf[0] = '\0'; - if (name == NULL || *name == '\0') - return buf; - nm = copystring(name); // Make a scratch copy - char *nm_tmp = nm; - - /* Skip leading whitespace and cr */ - while (strchr((char *)trimchars, *nm) != NULL) - nm++; - /* And strip off trailing whitespace and cr */ - s = nm + (q = strlen(nm)) - 1; - while (q-- && strchr((char *)trimchars, *s) != NULL) - *s = '\0'; - - s = nm; - d = lnm; -#ifdef __WXMSW__ - q = FALSE; -#else - q = nm[0] == '\\' && nm[1] == '~'; -#endif - - /* Expand inline environment variables */ - while ((*d++ = *s)) { -#ifndef __WXMSW__ - if (*s == '\\') { - if ((*(d - 1) = *++s)) { - s++; - continue; - } else - break; - } else -#endif -#ifdef __WXMSW__ - if (*s++ == '$' && (*s == '{' || *s == ')')) -#else - if (*s++ == '$') -#endif - { - register char *start = d; - register int braces = (*s == '{' || *s == '('); - register char *value; - while ((*d++ = *s)) - if (braces ? (*s == '}' || *s == ')') : !(isalnum(*s) || *s == '_') ) - break; - else - s++; - *--d = 0; - value = getenv(braces ? start + 1 : start); - if (value) { - for ((d = start - 1); (*d++ = *value++);); - d--; - if (braces && *s) - s++; - } - } - } - - /* Expand ~ and ~user */ - nm = lnm; - s = ""; - if (nm[0] == '~' && !q) - { - /* prefix ~ */ - if (nm[1] == SEP || nm[1] == 0) - { /* ~/filename */ - if ((s = wxGetUserHome("")) != NULL) { - if (*++nm) - nm++; - } - } else - { /* ~user/filename */ - register char *nnm; - register char *home; - for (s = nm; *s && *s != SEP; s++); - int was_sep; /* MATTHEW: Was there a separator, or NULL? */ - was_sep = (*s == SEP); - nnm = *s ? s + 1 : s; - *s = 0; - if ((home = wxGetUserHome(wxString(nm + 1))) == NULL) { - if (was_sep) /* replace only if it was there: */ - *s = SEP; - s = ""; - } else { - nm = nnm; - s = home; - } - } - } - - d = buf; - if (s && *s) { /* MATTHEW: s could be NULL if user '~' didn't exist */ - /* Copy home dir */ - while ('\0' != (*d++ = *s++)) - /* loop */; - // Handle root home - if (d - 1 > buf && *(d - 2) != SEP) - *(d - 1) = SEP; - } - s = nm; - while ((*d++ = *s++)); - - delete[] nm_tmp; // clean up alloc - /* Now clean up the buffer */ - return wxRealPath(buf); -} - - -/* Contract Paths to be build upon an environment variable - component: - - example: "/usr/openwin/lib", OPENWINHOME --> ${OPENWINHOME}/lib - - The call wxExpandPath can convert these back! - */ -char * -wxContractPath (const wxString& filename, const wxString& envname, const wxString& user) -{ - static char dest[_MAXPATHLEN]; - - if (filename == "") - return (char *) NULL; - - strcpy (dest, WXSTRINGCAST filename); -#ifdef __WXMSW__ - Unix2DosFilename(dest); -#endif - - // Handle environment - char *val = (char *) NULL; - char *tcp = (char *) NULL; - if (envname != WXSTRINGCAST NULL && (val = getenv (WXSTRINGCAST envname)) != NULL && - (tcp = strstr (dest, val)) != NULL) - { - strcpy (wxBuffer, tcp + strlen (val)); - *tcp++ = '$'; - *tcp++ = '{'; - strcpy (tcp, WXSTRINGCAST envname); - strcat (tcp, "}"); - strcat (tcp, wxBuffer); - } - - // Handle User's home (ignore root homes!) - size_t len = 0; - if ((val = wxGetUserHome (user)) != NULL && - (len = strlen(val)) > 2 && - strncmp(dest, val, len) == 0) - { - strcpy(wxBuffer, "~"); - if (user != "") - strcat(wxBuffer, (const char*) user); -#ifdef __WXMSW__ -// strcat(wxBuffer, "\\"); -#else -// strcat(wxBuffer, "/"); -#endif - strcat(wxBuffer, dest + len); - strcpy (dest, wxBuffer); - } - - return dest; -} - -// Return just the filename, not the path -// (basename) -char *wxFileNameFromPath (char *path) -{ - if (path) - { - register char *tcp; - - tcp = path + strlen (path); - while (--tcp >= path) - { - if (*tcp == '/' || *tcp == '\\' -#ifdef __VMS__ - || *tcp == ':' || *tcp == ']') -#else - ) -#endif - return tcp + 1; - } /* while */ -#ifdef __WXMSW__ - if (isalpha (*path) && *(path + 1) == ':') - return path + 2; -#endif - } - return path; -} - -wxString wxFileNameFromPath (const wxString& path1) -{ - if (path1 != "") - { - - char *path = WXSTRINGCAST path1 ; - register char *tcp; - - tcp = path + strlen (path); - while (--tcp >= path) - { - if (*tcp == '/' || *tcp == '\\' -#ifdef __VMS__ - || *tcp == ':' || *tcp == ']') -#else - ) -#endif - return wxString(tcp + 1); - } /* while */ -#ifdef __WXMSW__ - if (isalpha (*path) && *(path + 1) == ':') - return wxString(path + 2); -#endif - } - // Yes, this should return the path, not an empty string, otherwise - // we get "thing.txt" -> "". - return path1; -} - -// Return just the directory, or NULL if no directory -char * -wxPathOnly (char *path) -{ - if (path && *path) - { - static char buf[_MAXPATHLEN]; - - // Local copy - strcpy (buf, path); - - int l = strlen(path); - bool done = FALSE; - - int i = l - 1; - - // Search backward for a backward or forward slash - while (!done && i > -1) - { - // ] is for VMS - if (path[i] == '/' || path[i] == '\\' || path[i] == ']') - { - done = TRUE; -#ifdef __VMS__ - buf[i+1] = 0; -#else - buf[i] = 0; -#endif - - return buf; - } - else i --; - } - -#ifdef __WXMSW__ - // Try Drive specifier - if (isalpha (buf[0]) && buf[1] == ':') - { - // A:junk --> A:. (since A:.\junk Not A:\junk) - buf[2] = '.'; - buf[3] = '\0'; - return buf; - } -#endif - } - - return (char *) NULL; -} - -// Return just the directory, or NULL if no directory -wxString wxPathOnly (const wxString& path) -{ - if (path != "") - { - char buf[_MAXPATHLEN]; - - // Local copy - strcpy (buf, WXSTRINGCAST path); - - int l = path.Length(); - bool done = FALSE; - - int i = l - 1; - - // Search backward for a backward or forward slash - while (!done && i > -1) - { - // ] is for VMS - if (path[i] == '/' || path[i] == '\\' || path[i] == ']') - { - done = TRUE; -#ifdef __VMS__ - buf[i+1] = 0; -#else - buf[i] = 0; -#endif - - return wxString(buf); - } - else i --; - } - -#ifdef __WXMSW__ - // Try Drive specifier - if (isalpha (buf[0]) && buf[1] == ':') - { - // A:junk --> A:. (since A:.\junk Not A:\junk) - buf[2] = '.'; - buf[3] = '\0'; - return wxString(buf); - } -#endif - } - - return wxString(""); -} - -// Utility for converting delimiters in DOS filenames to UNIX style -// and back again - or we get nasty problems with delimiters. -// Also, convert to lower case, since case is significant in UNIX. - -#ifdef __WXMAC__ -void -wxMac2UnixFilename (char *s) -{ - if (s) - { - memmove( s+1 , s ,strlen( s ) + 1) ; - if ( *s == ':' ) - *s = '.' ; - else - *s = '/' ; - - while (*s) - { - if (*s == ':') - *s = '/'; - else - *s = wxToLower (*s); // Case INDEPENDENT - s++; - } - } -} - -void -wxUnix2MacFilename (char *s) -{ - if (s) - { - if ( *s == '.' ) - { - // relative path , since it goes on with slash which is translated to a : - memmove( s , s+1 ,strlen( s ) ) ; - } - else if ( *s == '/' ) - { - // absolute path -> on mac just start with the drive name - memmove( s , s+1 ,strlen( s ) ) ; - } - else - { - wxASSERT_MSG( 1 , "unkown path beginning" ) ; - } - while (*s) - { - if (*s == '/' || *s == '\\') - *s = ':'; - - s++ ; - } - } -} -#endif -void -wxDos2UnixFilename (char *s) -{ - if (s) - while (*s) - { - if (*s == '\\') - *s = '/'; -#ifdef __WXMSW__ - else - *s = wxToLower (*s); // Case INDEPENDENT -#endif - s++; - } -} - -void -#ifdef __WXMSW__ -wxUnix2DosFilename (char *s) -#else -wxUnix2DosFilename (char *WXUNUSED(s)) -#endif -{ -// Yes, I really mean this to happen under DOS only! JACS -#ifdef __WXMSW__ - if (s) - while (*s) - { - if (*s == '/') - *s = '\\'; - s++; - } -#endif -} - -// Concatenate two files to form third -bool -wxConcatFiles (const wxString& file1, const wxString& file2, const wxString& file3) -{ - char *outfile = wxGetTempFileName("cat"); - - FILE *fp1 = (FILE *) NULL; - FILE *fp2 = (FILE *) NULL; - FILE *fp3 = (FILE *) NULL; - // Open the inputs and outputs -#ifdef __WXMAC__ - strcpy( gwxMacFileName , file1 ) ; - wxUnix2MacFilename( gwxMacFileName ) ; - strcpy( gwxMacFileName2 , file2) ; - wxUnix2MacFilename( gwxMacFileName2 ) ; - strcpy( gwxMacFileName3 , outfile) ; - wxUnix2MacFilename( gwxMacFileName3 ) ; - - if ((fp1 = fopen (gwxMacFileName, "rb")) == NULL || - (fp2 = fopen (gwxMacFileName2, "rb")) == NULL || - (fp3 = fopen (gwxMacFileName3, "wb")) == NULL) -#else - if ((fp1 = fopen (WXSTRINGCAST file1, "rb")) == NULL || - (fp2 = fopen (WXSTRINGCAST file2, "rb")) == NULL || - (fp3 = fopen (outfile, "wb")) == NULL) -#endif - { - if (fp1) - fclose (fp1); - if (fp2) - fclose (fp2); - if (fp3) - fclose (fp3); - return FALSE; - } - - int ch; - while ((ch = getc (fp1)) != EOF) - (void) putc (ch, fp3); - fclose (fp1); - - while ((ch = getc (fp2)) != EOF) - (void) putc (ch, fp3); - fclose (fp2); - - fclose (fp3); - bool result = wxRenameFile(outfile, file3); - delete[] outfile; - return result; -} - -// Copy files -bool -wxCopyFile (const wxString& file1, const wxString& file2) -{ - FILE *fd1; - FILE *fd2; - int ch; - -#ifdef __WXMAC__ - strcpy( gwxMacFileName , file1 ) ; - wxUnix2MacFilename( gwxMacFileName ) ; - strcpy( gwxMacFileName2 , file2) ; - wxUnix2MacFilename( gwxMacFileName2 ) ; - - if ((fd1 = fopen (gwxMacFileName, "rb")) == NULL) - return FALSE; - if ((fd2 = fopen (gwxMacFileName2, "wb")) == NULL) -#else - if ((fd1 = fopen (WXSTRINGCAST file1, "rb")) == NULL) - return FALSE; - if ((fd2 = fopen (WXSTRINGCAST file2, "wb")) == NULL) -#endif - { - fclose (fd1); - return FALSE; - } - - while ((ch = getc (fd1)) != EOF) - (void) putc (ch, fd2); - - fclose (fd1); - fclose (fd2); - return TRUE; -} - -bool -wxRenameFile (const wxString& file1, const wxString& file2) -{ -#ifdef __WXMAC__ - strcpy( gwxMacFileName , file1 ) ; - wxUnix2MacFilename( gwxMacFileName ) ; - strcpy( gwxMacFileName2 , file2) ; - wxUnix2MacFilename( gwxMacFileName2 ) ; - - if (0 == rename (gwxMacFileName, gwxMacFileName2)) - return TRUE; -#else - // Normal system call - if (0 == rename (WXSTRINGCAST file1, WXSTRINGCAST file2)) - return TRUE; -#endif - // Try to copy - if (wxCopyFile(file1, file2)) { - wxRemoveFile(file1); - return TRUE; - } - // Give up - return FALSE; -} - -bool wxRemoveFile(const wxString& file) -{ -#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__WATCOMC__) - int flag = remove(WXSTRINGCAST file); -#elif defined( __WXMAC__ ) - strcpy( gwxMacFileName , file ) ; - wxUnix2MacFilename( gwxMacFileName ) ; - int flag = unlink(gwxMacFileName); -#else - int flag = unlink(WXSTRINGCAST file); -#endif - return (flag == 0) ; -} - -bool wxMkdir(const wxString& dir) -{ -#if defined(__WXSTUBS__) - return FALSE; -#elif defined(__VMS__) - return FALSE; -#elif defined( __WXMAC__ ) - strcpy( gwxMacFileName , dir ) ; - wxUnix2MacFilename( gwxMacFileName ) ; - return (mkdir(gwxMacFileName , 0 ) == 0); -#elif (defined(__GNUWIN32__) && !defined(__MINGW32__)) || !defined(__WXMSW__) - return (mkdir (WXSTRINGCAST dir, S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH) == 0); -#else - return (mkdir(WXSTRINGCAST dir) == 0); -#endif -} - -bool wxRmdir(const wxString& dir, int WXUNUSED(flags)) -{ -#ifdef __VMS__ - return FALSE; -#elif defined( __WXMAC__ ) - strcpy( gwxMacFileName , dir ) ; - wxUnix2MacFilename( gwxMacFileName ) ; - return (rmdir(WXSTRINGCAST gwxMacFileName) == 0); -#else - -#ifdef __SALFORDC__ - return FALSE; // What to do? -#else - return (rmdir(WXSTRINGCAST dir) == 0); -#endif - -#endif -} - -#if 0 -bool wxDirExists(const wxString& dir) -{ -#ifdef __VMS__ - return FALSE; -#elif !defined(__WXMSW__) - struct stat sbuf; - return (stat(dir, &sbuf) != -1) && S_ISDIR(sbuf.st_mode) ? TRUE : FALSE; -#else - - /* MATTHEW: [6] Always use same code for Win32, call FindClose */ -#if defined(__WIN32__) - WIN32_FIND_DATA fileInfo; -#else -#ifdef __BORLANDC__ - struct ffblk fileInfo; -#else - struct find_t fileInfo; -#endif -#endif - -#if defined(__WIN32__) - HANDLE h = FindFirstFile((LPTSTR) WXSTRINGCAST dir,(LPWIN32_FIND_DATA)&fileInfo); - - if (h==INVALID_HANDLE_VALUE) - return FALSE; - else { - FindClose(h); - return ((fileInfo.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY); - } -#else - // In Borland findfirst has a different argument - // ordering from _dos_findfirst. But _dos_findfirst - // _should_ be ok in both MS and Borland... why not? -#ifdef __BORLANDC__ - return ((findfirst(WXSTRINGCAST dir, &fileInfo, _A_SUBDIR) == 0 && (fileInfo.ff_attrib & _A_SUBDIR) != 0)); -#else - return (((_dos_findfirst(WXSTRINGCAST dir, _A_SUBDIR, &fileInfo) == 0) && (fileInfo.attrib & _A_SUBDIR)) != 0); -#endif -#endif - -#endif -} - -#endif - -// does the path exists? (may have or not '/' or '\\' at the end) -bool wxPathExists(const char *pszPathName) -{ - // Windows API returns -1 from stat for "c:\dir\" if "c:\dir" exists - // OTOH, we should change "d:" to "d:\" and leave "\" as is. - wxString strPath(pszPathName); - if ( wxEndsWithPathSeparator(pszPathName) && pszPathName[1] != '\0' ) - strPath.Last() = '\0'; - -#ifdef __SALFORDC__ - struct _stat st; -#else - struct stat st; -#endif - - return stat((char*) (const char*) strPath, &st) == 0 && (st.st_mode & S_IFDIR); -} - -// Get a temporary filename, opening and closing the file. -char *wxGetTempFileName(const wxString& prefix, char *buf) -{ -#ifdef __WINDOWS__ - -#ifndef __WIN32__ - char tmp[144]; - ::GetTempFileName(0, WXSTRINGCAST prefix, 0, tmp); -#else - char tmp[MAX_PATH]; - char tmpPath[MAX_PATH]; - ::GetTempPath(MAX_PATH, tmpPath); - ::GetTempFileName(tmpPath, WXSTRINGCAST prefix, 0, tmp); -#endif - if (buf) strcpy(buf, tmp); - else buf = copystring(tmp); - return buf; - -#else - static short last_temp = 0; // cache last to speed things a bit - // At most 1000 temp files to a process! We use a ring count. - char tmp[100]; // FIXME static buffer - - for (short suffix = last_temp + 1; suffix != last_temp; ++suffix %= 1000) - { - sprintf (tmp, "/tmp/%s%d.%03x", WXSTRINGCAST prefix, (int) getpid (), (int) suffix); - if (!wxFileExists( tmp )) - { - // Touch the file to create it (reserve name) - FILE *fd = fopen (tmp, "w"); - if (fd) - fclose (fd); - last_temp = suffix; - if (buf) - strcpy( buf, tmp); - else - buf = copystring( tmp ); - return buf; - } - } - wxLogError( _("wxWindows: error finding temporary file name.\n") ); - if (buf) buf[0] = 0; - return (char *) NULL; -#endif -} - -// Get first file name matching given wild card. - -#ifdef __UNIX__ - -// Get first file name matching given wild card. -// Flags are reserved for future use. - -#ifndef __VMS__ -static DIR *wxDirStream = (DIR *) NULL; -static char *wxFileSpec = (char *) NULL; -static int wxFindFileFlags = 0; -#endif - -char *wxFindFirstFile(const char *spec, int flags) -{ -#ifndef __VMS__ - if (wxDirStream) - closedir(wxDirStream); // edz 941103: better housekeping - - wxFindFileFlags = flags; - - if (wxFileSpec) - delete[] wxFileSpec; - wxFileSpec = copystring(spec); - - // Find path only so we can concatenate - // found file onto path - char *p = wxPathOnly(wxFileSpec); - - /* MATTHEW: special case: path is really "/" */ - if (p && !*p && *wxFileSpec == '/') - p = "/"; - /* MATTHEW: p is NULL => Local directory */ - if (!p) - p = "."; - - if ((wxDirStream=opendir(p))==NULL) - return (char *) NULL; - - /* MATTHEW: [5] wxFindNextFile can do the rest of the work */ - return wxFindNextFile(); -#endif - // ifndef __VMS__ - return (char *) NULL; -} - -char *wxFindNextFile(void) -{ -#ifndef __VMS__ - static char buf[400]; // FIXME static buffer - - /* MATTHEW: [2] Don't crash if we read too many times */ - if (!wxDirStream) - return (char *) NULL; - - // Find path only so we can concatenate - // found file onto path - char *p = wxPathOnly(wxFileSpec); - char *n = wxFileNameFromPath(wxFileSpec); - - /* MATTHEW: special case: path is really "/" */ - if (p && !*p && *wxFileSpec == '/') - p = "/"; - - // Do the reading - struct dirent *nextDir; - for (nextDir = readdir(wxDirStream); nextDir != NULL; nextDir = readdir(wxDirStream)) - { - - /* MATTHEW: [5] Only return "." and ".." when they match, and only return - directories when flags & wxDIR */ - if (wxMatchWild(n, nextDir->d_name)) { - bool isdir; - - buf[0] = 0; - if (p && *p) { - strcpy(buf, p); - if (strcmp(p, "/") != 0) - strcat(buf, "/"); - } - strcat(buf, nextDir->d_name); - - if ((strcmp(nextDir->d_name, ".") == 0) || - (strcmp(nextDir->d_name, "..") == 0)) { - if (wxFindFileFlags && !(wxFindFileFlags & wxDIR)) - continue; - isdir = TRUE; - } else - isdir = wxDirExists(buf); - - if (!wxFindFileFlags - || ((wxFindFileFlags & wxDIR) && isdir) - || ((wxFindFileFlags & wxFILE) && !isdir)) - return buf; - } - } - closedir(wxDirStream); - wxDirStream = (DIR *) NULL; -#endif - // ifndef __VMS__ - - return (char *) NULL; -} - -#elif defined(__WXMSW__) - -#ifdef __WIN32__ -HANDLE wxFileStrucHandle = INVALID_HANDLE_VALUE; -WIN32_FIND_DATA wxFileStruc; -#else -#ifdef __BORLANDC__ -static struct ffblk wxFileStruc; -#else -static struct _find_t wxFileStruc; -#endif -#endif -static wxString wxFileSpec = ""; -static int wxFindFileFlags; - -char *wxFindFirstFile(const char *spec, int flags) -{ - wxFileSpec = spec; - wxFindFileFlags = flags; /* MATTHEW: [5] Remember flags */ - - // Find path only so we can concatenate - // found file onto path - wxString path1(wxFileSpec); - char *p = wxPathOnly(WXSTRINGCAST path1); - if (p && (strlen(p) > 0)) - strcpy(wxBuffer, p); - else - wxBuffer[0] = 0; - -#ifdef __WIN32__ - if (wxFileStrucHandle != INVALID_HANDLE_VALUE) - FindClose(wxFileStrucHandle); - - wxFileStrucHandle = ::FindFirstFile(WXSTRINGCAST spec, &wxFileStruc); - - if (wxFileStrucHandle == INVALID_HANDLE_VALUE) - return NULL; - - bool isdir = !!(wxFileStruc.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY); - - if (isdir && !(flags & wxDIR)) - return wxFindNextFile(); - else if (!isdir && flags && !(flags & wxFILE)) - return wxFindNextFile(); - - if (wxBuffer[0] != 0) - strcat(wxBuffer, "\\"); - strcat(wxBuffer, wxFileStruc.cFileName); - return wxBuffer; -#else - - int flag = _A_NORMAL; - if (flags & wxDIR) /* MATTHEW: [5] Use & */ - flag = _A_SUBDIR; - -#ifdef __BORLANDC__ - if (findfirst(WXSTRINGCAST spec, &wxFileStruc, flag) == 0) -#else - if (_dos_findfirst(WXSTRINGCAST spec, flag, &wxFileStruc) == 0) -#endif - { - /* MATTHEW: [5] Check directory flag */ - char attrib; - -#ifdef __BORLANDC__ - attrib = wxFileStruc.ff_attrib; -#else - attrib = wxFileStruc.attrib; -#endif - - if (attrib & _A_SUBDIR) { - if (!(wxFindFileFlags & wxDIR)) - return wxFindNextFile(); - } else if (wxFindFileFlags && !(wxFindFileFlags & wxFILE)) - return wxFindNextFile(); - - if (wxBuffer[0] != 0) - strcat(wxBuffer, "\\"); - -#ifdef __BORLANDC__ - strcat(wxBuffer, wxFileStruc.ff_name); -#else - strcat(wxBuffer, wxFileStruc.name); -#endif - return wxBuffer; - } - else - return NULL; -#endif // __WIN32__ -} - -char *wxFindNextFile(void) -{ - // Find path only so we can concatenate - // found file onto path - wxString p2(wxFileSpec); - char *p = wxPathOnly(WXSTRINGCAST p2); - if (p && (strlen(p) > 0)) - strcpy(wxBuffer, p); - else - wxBuffer[0] = 0; - - try_again: - -#ifdef __WIN32__ - if (wxFileStrucHandle == INVALID_HANDLE_VALUE) - return NULL; - - bool success = (FindNextFile(wxFileStrucHandle, &wxFileStruc) != 0); - if (!success) { - FindClose(wxFileStrucHandle); - wxFileStrucHandle = INVALID_HANDLE_VALUE; - return NULL; - } - - bool isdir = !!(wxFileStruc.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY); - - if (isdir && !(wxFindFileFlags & wxDIR)) - goto try_again; - else if (!isdir && wxFindFileFlags && !(wxFindFileFlags & wxFILE)) - goto try_again; - - if (wxBuffer[0] != 0) - strcat(wxBuffer, "\\"); - strcat(wxBuffer, wxFileStruc.cFileName); - return wxBuffer; -#else - -#ifdef __BORLANDC__ - if (findnext(&wxFileStruc) == 0) -#else - if (_dos_findnext(&wxFileStruc) == 0) -#endif - { - /* MATTHEW: [5] Check directory flag */ - char attrib; - -#ifdef __BORLANDC__ - attrib = wxFileStruc.ff_attrib; -#else - attrib = wxFileStruc.attrib; -#endif - - if (attrib & _A_SUBDIR) { - if (!(wxFindFileFlags & wxDIR)) - goto try_again; - } else if (wxFindFileFlags && !(wxFindFileFlags & wxFILE)) - goto try_again; - - - if (wxBuffer[0] != 0) - strcat(wxBuffer, "\\"); -#ifdef __BORLANDC__ - strcat(wxBuffer, wxFileStruc.ff_name); -#else - strcat(wxBuffer, wxFileStruc.name); -#endif - return wxBuffer; - } - else - return NULL; -#endif -} - -#endif - // __WXMSW__ - -// Get current working directory. -// If buf is NULL, allocates space using new, else -// copies into buf. -char *wxGetWorkingDirectory(char *buf, int sz) -{ - if (!buf) - buf = new char[sz+1]; -#ifdef _MSC_VER - if (_getcwd(buf, sz) == NULL) { -#else - if (getcwd(buf, sz) == NULL) { -#endif - buf[0] = '.'; - buf[1] = '\0'; - } - return buf; -} - -bool wxSetWorkingDirectory(const wxString& d) -{ -#if defined( __UNIX__ ) || defined( __WXMAC__ ) - return (chdir(d) == 0); -#elif defined(__WINDOWS__) - -#ifdef __WIN32__ - return (bool)(SetCurrentDirectory(d) != 0); -#else - // Must change drive, too. - bool isDriveSpec = ((strlen(d) > 1) && (d[1] == ':')); - if (isDriveSpec) - { - char firstChar = d[0]; - - // To upper case - if (firstChar > 90) - firstChar = firstChar - 32; - - // To a drive number - unsigned int driveNo = firstChar - 64; - if (driveNo > 0) - { - unsigned int noDrives; - _dos_setdrive(driveNo, &noDrives); - } - } - bool success = (chdir(WXSTRINGCAST d) == 0); - - return success; -#endif - -#endif -} - -bool wxEndsWithPathSeparator(const char *pszFileName) -{ - size_t len = Strlen(pszFileName); - if ( len == 0 ) - return FALSE; - else - return wxIsPathSeparator(pszFileName[len - 1]); -} - -// find a file in a list of directories, returns false if not found -bool wxFindFileInPath(wxString *pStr, const char *pszPath, const char *pszFile) -{ - // we assume that it's not empty - wxCHECK_MSG( !IsEmpty(pszFile), FALSE, - _("empty file name in wxFindFileInPath")); - - // skip path separator in the beginning of the file name if present - if ( wxIsPathSeparator(*pszFile) ) - pszFile++; - - // copy the path (strtok will modify it) - char *szPath = new char[strlen(pszPath) + 1]; - strcpy(szPath, pszPath); - - wxString strFile; - char *pc; - for ( pc = strtok(szPath, PATH_SEP); pc; pc = strtok((char *) NULL, PATH_SEP) ) { - // search for the file in this directory - strFile = pc; - if ( !wxEndsWithPathSeparator(pc) ) - strFile += FILE_SEP_PATH; - strFile += pszFile; - - if ( FileExists(strFile) ) { - *pStr = strFile; - break; - } - } - - delete [] szPath; - - return pc != NULL; // if true => we breaked from the loop -} - -void WXDLLEXPORT wxSplitPath(const char *pszFileName, - wxString *pstrPath, - wxString *pstrName, - wxString *pstrExt) -{ - wxCHECK_RET( pszFileName, _("NULL file name in wxSplitPath") ); - - const char *pDot = strrchr(pszFileName, FILE_SEP_EXT); - const char *pSepUnix = strrchr(pszFileName, FILE_SEP_PATH_UNIX); - const char *pSepDos = strrchr(pszFileName, FILE_SEP_PATH_DOS); - - // take the last of the two - size_t nPosUnix = pSepUnix ? pSepUnix - pszFileName : 0; - size_t nPosDos = pSepDos ? pSepDos - pszFileName : 0; - if ( nPosDos > nPosUnix ) - nPosUnix = nPosDos; -// size_t nLen = Strlen(pszFileName); - - if ( pstrPath ) - *pstrPath = wxString(pszFileName, nPosUnix); - if ( pDot ) { - size_t nPosDot = pDot - pszFileName; - if ( pstrName ) - *pstrName = wxString(pszFileName + nPosUnix + 1, nPosDot - nPosUnix); - if ( pstrExt ) - *pstrExt = wxString(pszFileName + nPosDot + 1); - } - else { - if ( pstrName ) - *pstrName = wxString(pszFileName + nPosUnix + 1); - if ( pstrExt ) - pstrExt->Empty(); - } -} - -//------------------------------------------------------------------------ -// wild character routines -//------------------------------------------------------------------------ - -bool wxIsWild( const wxString& pattern ) -{ - wxString tmp = pattern; - char *pat = WXSTRINGCAST(tmp); - while (*pat) { - switch (*pat++) { - case '?': case '*': case '[': case '{': - return TRUE; - case '\\': - if (!*pat++) - return FALSE; - } - } - return FALSE; -}; - -bool wxMatchWild( const wxString& pat, const wxString& text, bool dot_special ) - -#if defined(HAVE_FNMATCH_H) -{ - if(dot_special) - return fnmatch(pat.c_str(), text.c_str(), FNM_PERIOD) == 0; - else - return fnmatch(pat.c_str(), text.c_str(), 0) == 0; -} -#else - -// #pragma error Broken implementation of wxMatchWild() -- needs fixing! - - /* - * WARNING: this code is broken! - */ -{ - wxString tmp1 = pat; - char *pattern = WXSTRINGCAST(tmp1); - wxString tmp2 = text; - char *str = WXSTRINGCAST(tmp2); - char c; - char *cp; - bool done = FALSE, ret_code, ok; - // Below is for vi fans - const char OB = '{', CB = '}'; - - // dot_special means '.' only matches '.' - if (dot_special && *str == '.' && *pattern != *str) - return FALSE; - - while ((*pattern != '\0') && (!done) - && (((*str=='\0')&&((*pattern==OB)||(*pattern=='*')))||(*str!='\0'))) { - switch (*pattern) { - case '\\': - pattern++; - if (*pattern != '\0') - pattern++; - break; - case '*': - pattern++; - ret_code = FALSE; - while ((*str!='\0') - && (!(ret_code=wxMatchWild(pattern, str++, FALSE)))) - /*loop*/; - if (ret_code) { - while (*str != '\0') - str++; - while (*pattern != '\0') - pattern++; - } - break; - case '[': - pattern++; - repeat: - if ((*pattern == '\0') || (*pattern == ']')) { - done = TRUE; - break; - } - if (*pattern == '\\') { - pattern++; - if (*pattern == '\0') { - done = TRUE; - break; - } - } - if (*(pattern + 1) == '-') { - c = *pattern; - pattern += 2; - if (*pattern == ']') { - done = TRUE; - break; - } - if (*pattern == '\\') { - pattern++; - if (*pattern == '\0') { - done = TRUE; - break; - } - } - if ((*str < c) || (*str > *pattern)) { - pattern++; - goto repeat; - } - } else if (*pattern != *str) { - pattern++; - goto repeat; - } - pattern++; - while ((*pattern != ']') && (*pattern != '\0')) { - if ((*pattern == '\\') && (*(pattern + 1) != '\0')) - pattern++; - pattern++; - } - if (*pattern != '\0') { - pattern++, str++; - } - break; - case '?': - pattern++; - str++; - break; - case OB: - pattern++; - while ((*pattern != CB) && (*pattern != '\0')) { - cp = str; - ok = TRUE; - while (ok && (*cp != '\0') && (*pattern != '\0') - && (*pattern != ',') && (*pattern != CB)) { - if (*pattern == '\\') - pattern++; - ok = (*pattern++ == *cp++); - } - if (*pattern == '\0') { - ok = FALSE; - done = TRUE; - break; - } else if (ok) { - str = cp; - while ((*pattern != CB) && (*pattern != '\0')) { - if (*++pattern == '\\') { - if (*++pattern == CB) - pattern++; - } - } - } else { - while (*pattern!=CB && *pattern!=',' && *pattern!='\0') { - if (*++pattern == '\\') { - if (*++pattern == CB || *pattern == ',') - pattern++; - } - } - } - if (*pattern != '\0') - pattern++; - } - break; - default: - if (*str == *pattern) { - str++, pattern++; - } else { - done = TRUE; - } - } - } - while (*pattern == '*') - pattern++; - return ((*str == '\0') && (*pattern == '\0')); -}; - -#endif - -#ifdef _MSC_VER - #pragma warning(default:4706) // assignment within conditional expression -#endif // VC++ diff --git a/src/common/framecmn.cpp b/src/common/framecmn.cpp deleted file mode 100644 index aa326ecdf8..0000000000 --- a/src/common/framecmn.cpp +++ /dev/null @@ -1,68 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: framecmn.cpp -// Purpose: common (for all platforms) wxFrame functions -// Author: Julian Smart, Vadim Zeitlin -// Created: 01/02/97 -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling, Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#include "wx/frame.h" -#include "wx/menu.h" -#include "wx/menuitem.h" - -#ifndef __WXGTK__ -void wxFrame::OnIdle(wxIdleEvent& WXUNUSED(event) ) -{ - DoMenuUpdates(); -} -#endif - -// update all menus -void wxFrame::DoMenuUpdates() -{ - wxMenuBar* bar = GetMenuBar(); - if ( bar != NULL ) { - int nCount = bar->GetMenuCount(); - for (int n = 0; n < nCount; n++) - DoMenuUpdates(bar->GetMenu(n)); - } -} - -// update a menu and all submenus recursively -void wxFrame::DoMenuUpdates(wxMenu* menu) -{ - wxNode* node = menu->GetItems().First(); - while (node) - { - wxMenuItem* item = (wxMenuItem*) node->Data(); - if ( !item->IsSeparator() ) - { - wxWindowID id = item->GetId(); - wxUpdateUIEvent event(id); - event.SetEventObject( this ); - - if (GetEventHandler()->ProcessEvent(event)) - { - if (event.GetSetText()) - menu->SetLabel(id, event.GetText()); - if (event.GetSetChecked()) - menu->Check(id, event.GetChecked()); - if (event.GetSetEnabled()) - menu->Enable(id, event.GetEnabled()); - } - - if (item->GetSubMenu()) - DoMenuUpdates(item->GetSubMenu()); - } - node = node->Next(); - } -} diff --git a/src/common/ftp.cpp b/src/common/ftp.cpp deleted file mode 100644 index 28aad19f7f..0000000000 --- a/src/common/ftp.cpp +++ /dev/null @@ -1,392 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: ftp.cpp -// Purpose: FTP protocol -// Author: Guilhem Lavaux -// Modified by: -// Created: 07/07/1997 -// RCS-ID: $Id$ -// Copyright: (c) 1997, 1998 Guilhem Lavaux -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "ftp.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef __MWERKS__ -#include -#endif -#if defined(__WXMAC__) -#include "/wx/mac/macsock.h" -#endif - -#include -#include "wx/string.h" -#include "wx/utils.h" -// #include "wx/data.h" -#define WXSOCK_INTERNAL -#include "wx/sckaddr.h" -#undef WXSOCK_INTERNAL -#include "wx/socket.h" -#include "wx/url.h" -#include "wx/sckstrm.h" -#include "wx/protocol/protocol.h" -#include "wx/protocol/ftp.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#define FTP_BSIZE 1024 - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxFTP, wxProtocol) -IMPLEMENT_PROTOCOL(wxFTP, "ftp", "ftp", TRUE) -#endif - -//////////////////////////////////////////////////////////////// -////// wxFTP constructor and destructor //////////////////////// -//////////////////////////////////////////////////////////////// - -wxFTP::wxFTP() - : wxProtocol() -{ - char tmp[256]; - - m_lastError = wxPROTO_NOERR; - m_streaming = FALSE; - - m_user = "anonymous"; - wxGetUserName(tmp, 256); - m_passwd.sprintf("%s@",tmp); - wxGetHostName(tmp, 256); - m_passwd += tmp; - - SetNotify(0); -} - -wxFTP::~wxFTP() -{ - SendCommand("QUIT", '2'); -} - -//////////////////////////////////////////////////////////////// -////// wxFTP connect and login methods ///////////////////////// -//////////////////////////////////////////////////////////////// -bool wxFTP::Connect(wxSockAddress& addr, bool WXUNUSED(wait)) -{ - if (!m_handler) { - m_lastError = wxPROTO_NOHNDLR; - return FALSE; - } - - if (!wxProtocol::Connect(addr)) { - m_lastError = wxPROTO_NETERR; - return FALSE; - } - - if (!m_user || !m_passwd) { - m_lastError = wxPROTO_CONNERR; - return FALSE; - } - - wxString command; - - if (!GetResult('2')) { - Close(); - return FALSE; - } - - command.sprintf("USER %s", (const char *)m_user); - if (!SendCommand(command, '3')) { - Close(); - return FALSE; - } - - command.sprintf("PASS %s", (const char *)m_passwd); - if (!SendCommand(command, '2')) { - Close(); - return FALSE; - } - - return TRUE; -} - -bool wxFTP::Connect(const wxString& host) -{ - wxIPV4address addr; - wxString my_host = host; - - addr.Hostname(my_host); - addr.Service("ftp"); - - return Connect(addr); -} - -bool wxFTP::Close() -{ - if (m_streaming) { - m_lastError = wxPROTO_STREAMING; - return FALSE; - } - if (m_connected) - SendCommand(wxString("QUIT"), '2'); - return wxSocketClient::Close(); -} - -//////////////////////////////////////////////////////////////// -////// wxFTP low-level methods ///////////////////////////////// -//////////////////////////////////////////////////////////////// -bool wxFTP::SendCommand(const wxString& command, char exp_ret) -{ - wxString tmp_str; - - if (m_streaming) { - m_lastError = wxPROTO_STREAMING; - return FALSE; - } - tmp_str = command + "\r\n"; - if (Write((char *)tmp_str.GetData(), tmp_str.Length()).Error()) { - m_lastError = wxPROTO_NETERR; - return FALSE; - } - return GetResult(exp_ret); -} - -bool wxFTP::GetResult(char exp) -{ - if ((m_lastError = GetLine(this, m_lastResult))) - return FALSE; - if (m_lastResult.GetChar(0) != exp) { - m_lastError = wxPROTO_PROTERR; - return FALSE; - } - - if (m_lastResult.GetChar(3) == '-') { - wxString key = m_lastResult.Left((size_t)3); - - key += ' '; - - while (m_lastResult.Index(key) != 0) { - if ((m_lastError = GetLine(this, m_lastResult))) - return FALSE; - } - } - return TRUE; -} - -//////////////////////////////////////////////////////////////// -////// wxFTP low-level methods ///////////////////////////////// -//////////////////////////////////////////////////////////////// -bool wxFTP::ChDir(const wxString& dir) -{ - wxString str = dir; - - str.Prepend("CWD "); - return SendCommand(str, '2'); -} - -bool wxFTP::MkDir(const wxString& dir) -{ - wxString str = dir; - str.Prepend("MKD "); - return SendCommand(str, '2'); -} - -bool wxFTP::RmDir(const wxString& dir) -{ - wxString str = dir; - - str.Prepend("PWD "); - return SendCommand(str, '2'); -} - -wxString wxFTP::Pwd() -{ - int beg, end; - - if (!SendCommand("PWD", '2')) - return wxString((char *)NULL); - - beg = m_lastResult.Find('\"',FALSE); - end = m_lastResult.Find('\"',TRUE); - - return wxString(beg+1, end); -} - -bool wxFTP::Rename(const wxString& src, const wxString& dst) -{ - wxString str; - - str = "RNFR " + src; - if (!SendCommand(str, '3')) - return FALSE; - - str = "RNTO " + dst; - return SendCommand(str, '2'); -} - -bool wxFTP::RmFile(const wxString& path) -{ - wxString str; - - str = "DELE "; - str += path; - return SendCommand(str, '2'); -} - -//////////////////////////////////////////////////////////////// -////// wxFTP download*upload /////////////////////////////////// -//////////////////////////////////////////////////////////////// - -class wxInputFTPStream : public wxSocketInputStream { -public: - wxFTP *m_ftp; - - wxInputFTPStream(wxFTP *ftp_clt, wxSocketBase *sock) - : wxSocketInputStream(*sock), m_ftp(ftp_clt) {} - virtual ~wxInputFTPStream(void) - { - if (LastError() != wxStream_NOERROR) - m_ftp->GetResult('2'); - else - m_ftp->Abort(); - delete m_i_socket; - } -}; - -class wxOutputFTPStream : public wxSocketOutputStream { -public: - wxFTP *m_ftp; - - wxOutputFTPStream(wxFTP *ftp_clt, wxSocketBase *sock) - : wxSocketOutputStream(*sock), m_ftp(ftp_clt) {} - virtual ~wxOutputFTPStream(void) - { - if (LastError() != wxStream_NOERROR) - m_ftp->GetResult('2'); - else - m_ftp->Abort(); - delete m_o_socket; - } -}; - -wxSocketClient *wxFTP::GetPort() -{ - wxIPV4address addr; - wxSocketClient *client; - struct sockaddr sin; - int a[6]; - wxString straddr; - int addr_pos; - - if (!SendCommand("PASV", '2')) - return NULL; - - sin.sa_family = AF_INET; - addr_pos = m_lastResult.Find('('); - if (addr_pos == -1) { - m_lastError = wxPROTO_PROTERR; - return NULL; - } - straddr = m_lastResult(addr_pos+1, m_lastResult.Length()); - sscanf((const char *)straddr,"%d,%d,%d,%d,%d,%d",&a[2],&a[3],&a[4],&a[5],&a[0],&a[1]); - sin.sa_data[2] = (char)a[2]; - sin.sa_data[3] = (char)a[3]; - sin.sa_data[4] = (char)a[4]; - sin.sa_data[5] = (char)a[5]; - sin.sa_data[0] = (char)a[0]; - sin.sa_data[1] = (char)a[1]; - - addr.Disassemble(&sin, sizeof(sin)); - - client = m_handler->CreateClient(); - if (!client->Connect(addr)) { - delete client; - return NULL; - } - client->Notify(FALSE); - - return client; -} - -bool wxFTP::Abort(void) -{ - m_streaming = FALSE; - if (!SendCommand("ABOR", '4')) - return FALSE; - return GetResult('2'); -} - -wxInputStream *wxFTP::GetInputStream(const wxString& path) -{ - wxString tmp_str; - - if (!SendCommand("TYPE I", '2')) - return NULL; - - wxSocketClient *sock = GetPort(); - - if (!sock) { - m_lastError = wxPROTO_NETERR; - return NULL; - } - - tmp_str = "RETR " + path; - if (!SendCommand(tmp_str, '1')) - return NULL; - - return new wxInputFTPStream(this, sock); -} - -wxOutputStream *wxFTP::GetOutputStream(const wxString& path) -{ - wxString tmp_str; - - if (!SendCommand("TYPE I", '2')) - return NULL; - - wxSocketClient *sock = GetPort(); - - tmp_str = "STOR " + path; - if (!SendCommand(tmp_str, '1')) - return FALSE; - - return new wxOutputFTPStream(this, sock); -} - -wxList *wxFTP::GetList(const wxString& wildcard) -{ - wxList *file_list = new wxList; - wxSocketBase *sock = GetPort(); - wxString tmp_str = "NLST"; - - if (!wildcard.IsNull()) - tmp_str += wildcard; - - if (!SendCommand(tmp_str, '1')) { - delete sock; - delete file_list; - return NULL; - } - - while (GetLine(sock, tmp_str) == wxPROTO_NOERR) { - file_list->Append((wxObject *)(new wxString(tmp_str))); - } - - if (!GetResult('2')) { - delete sock; - file_list->DeleteContents(TRUE); - delete file_list; - return NULL; - } - - return file_list; -} diff --git a/src/common/gdicmn.cpp b/src/common/gdicmn.cpp deleted file mode 100644 index 30f08f8560..0000000000 --- a/src/common/gdicmn.cpp +++ /dev/null @@ -1,656 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: gdicmn.cpp -// Purpose: Common GDI classes -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "gdicmn.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#include "wx/event.h" -#include "wx/gdicmn.h" -#include "wx/brush.h" -#include "wx/pen.h" -#include "wx/bitmap.h" -#include "wx/icon.h" -#include "wx/cursor.h" -#include "wx/font.h" -#include "wx/palette.h" -#include "wx/app.h" - -#include "wx/log.h" -#include - -#ifdef __WXMSW__ -#include -#endif - -#ifdef __WXMOTIF__ -#include -#endif - -#if !USE_SHARED_LIBRARY -IMPLEMENT_CLASS(wxColourDatabase, wxList) -IMPLEMENT_DYNAMIC_CLASS(wxFontList, wxList) -IMPLEMENT_DYNAMIC_CLASS(wxPenList, wxList) -IMPLEMENT_DYNAMIC_CLASS(wxBrushList, wxList) -IMPLEMENT_DYNAMIC_CLASS(wxBitmapList, wxList) -IMPLEMENT_DYNAMIC_CLASS(wxResourceCache, wxList) -/* -IMPLEMENT_DYNAMIC_CLASS(wxRect, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxPoint, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxRealPoint, wxObject) -*/ -#endif - -wxRect::wxRect() -{ - x = 0; y = 0; width = 0; height = 0; -} - -wxRect::wxRect(long xx, long yy, long w, long h) -{ - x = xx; y = yy; width = w; height = h; -} - -wxRect::wxRect(const wxPoint& topLeft, const wxPoint& bottomRight) -{ - x = topLeft.x; - y = topLeft.y; - width = bottomRight.x - topLeft.x; - height = bottomRight.y - topLeft.y; - - if (width < 0) - { - width = -width; - x -= width; - } - - if (height < 0) - { - height = -height; - x -= height; - } -} - -wxRect::wxRect(const wxPoint& point, const wxSize& size) -{ - x = point.x; y = point.y; - width = size.x; height = size.y; -} - -wxRect::wxRect(const wxRect& rect) -{ - x = rect.x; - y = rect.y; - width = rect.width; - height = rect.height; -} - -wxRect& wxRect::operator = (const wxRect& rect) -{ - x = rect.x; y = rect.y; width = rect.width; height = rect.height; - return *this; -} - -bool wxRect::operator == (const wxRect& rect) -{ - return ((x == rect.x) && - (y == rect.y) && - (width == rect.width) && - (height == rect.height)); -} - -bool wxRect::operator != (const wxRect& rect) -{ - return ((x != rect.x) || - (y != rect.y) || - (width != rect.width) || - (height != rect.height)); -} - -wxColourDatabase::wxColourDatabase (int type): -wxList (type) -{ -} - -wxColourDatabase::~wxColourDatabase () -{ - // Cleanup Colour allocated in Initialize() - wxNode *node = First (); - while (node) - { - wxColour *col = (wxColour *) node->Data (); - wxNode *next = node->Next (); - delete col; - node = next; - } -} - -// Colour database stuff -void wxColourDatabase::Initialize () -{ - // Don't initialize for X: colours are found - // in FindColour below. - // Added: Not all - - struct cdef { - char *name; - int r,g,b; - }; - cdef cc; - static cdef table[]={ - -// #ifdef __WXMSW__ - {"AQUAMARINE",112, 219, 147}, - {"BLACK",0, 0, 0}, - {"BLUE", 0, 0, 255}, - {"BLUE VIOLET", 159, 95, 159}, - {"BROWN", 165, 42, 42}, - {"CADET BLUE", 95, 159, 159}, - {"CORAL", 255, 127, 0}, - {"CORNFLOWER BLUE", 66, 66, 111}, - {"CYAN", 0, 255, 255}, - {"DARK GREY", 47, 47, 47}, // ? - - {"DARK GREEN", 47, 79, 47}, - {"DARK OLIVE GREEN", 79, 79, 47}, - {"DARK ORCHID", 153, 50, 204}, - {"DARK SLATE BLUE", 107, 35, 142}, - {"DARK SLATE GREY", 47, 79, 79}, - {"DARK TURQUOISE", 112, 147, 219}, - {"DIM GREY", 84, 84, 84}, - {"FIREBRICK", 142, 35, 35}, - {"FOREST GREEN", 35, 142, 35}, - {"GOLD", 204, 127, 50}, - {"GOLDENROD", 219, 219, 112}, - {"GREY", 128, 128, 128}, - {"GREEN", 0, 255, 0}, - {"GREEN YELLOW", 147, 219, 112}, - {"INDIAN RED", 79, 47, 47}, - {"KHAKI", 159, 159, 95}, - {"LIGHT BLUE", 191, 216, 216}, - {"LIGHT GREY", 192, 192, 192}, - {"LIGHT STEEL BLUE", 143, 143, 188}, - {"LIME GREEN", 50, 204, 50}, - {"LIGHT MAGENTA", 255, 0, 255}, - {"MAGENTA", 255, 0, 255}, - {"MAROON", 142, 35, 107}, - {"MEDIUM AQUAMARINE", 50, 204, 153}, - {"MEDIUM GREY", 100, 100, 100}, - {"MEDIUM BLUE", 50, 50, 204}, - {"MEDIUM FOREST GREEN", 107, 142, 35}, - {"MEDIUM GOLDENROD", 234, 234, 173}, - {"MEDIUM ORCHID", 147, 112, 219}, - {"MEDIUM SEA GREEN", 66, 111, 66}, - {"MEDIUM SLATE BLUE", 127, 0, 255}, - {"MEDIUM SPRING GREEN", 127, 255, 0}, - {"MEDIUM TURQUOISE", 112, 219, 219}, - {"MEDIUM VIOLET RED", 219, 112, 147}, - {"MIDNIGHT BLUE", 47, 47, 79}, - {"NAVY", 35, 35, 142}, - {"ORANGE", 204, 50, 50}, - {"ORANGE RED", 255, 0, 127}, - {"ORCHID", 219, 112, 219}, - {"PALE GREEN", 143, 188, 143}, - {"PINK", 188, 143, 234}, - {"PLUM", 234, 173, 234}, - {"PURPLE", 176, 0, 255}, - {"RED", 255, 0, 0}, - {"SALMON", 111, 66, 66}, - {"SEA GREEN", 35, 142, 107}, - {"SIENNA", 142, 107, 35}, - {"SKY BLUE", 50, 153, 204}, - {"SLATE BLUE", 0, 127, 255}, - {"SPRING GREEN", 0, 255, 127}, - {"STEEL BLUE", 35, 107, 142}, - {"TAN", 219, 147, 112}, - {"THISTLE", 216, 191, 216}, - {"TURQUOISE", 173, 234, 234}, - {"VIOLET", 79, 47, 79}, - {"VIOLET RED", 204, 50, 153}, - {"WHEAT", 216, 216, 191}, - {"WHITE", 255, 255, 255}, - {"YELLOW", 255, 255, 0}, - {"YELLOW GREEN", 153, 204, 50}, -// #endif - -#if defined(__WXGTK__) || defined(__X__) - {"MEDIUM GOLDENROD", 234, 234, 173}, - {"MEDIUM FOREST GREEN", 107, 142, 35}, - {"LIGHT MAGENTA", 255, 0, 255}, - {"MEDIUM GREY", 100, 100, 100}, -#endif - - {0,0,0,0} - }; - int i; - for (i=0;cc=table[i],cc.name!=0;i++) - { - Append(cc.name,new wxColour(cc.r,cc.g,cc.b)); - } - -} - -/* - * Changed by Ian Brown, July 1994. - * - * When running under X, the Colour Database starts off empty. The X server - * is queried for the colour first time after which it is entered into the - * database. This allows our client to use the server colour database which - * is hopefully gamma corrected for the display being used. - */ - -wxColour *wxColourDatabase::FindColour(const wxString& colour) -{ - // VZ: make the comparaison case insensitive - wxString str = colour; - str.MakeUpper(); - - wxNode *node = Find(str); - if (node) - return (wxColour *)node->Data(); - -#ifdef __WXMSW__ - else return NULL; -#endif - -// TODO for other implementations. This should really go into -// platform-specific directories. -#ifdef __WXSTUBS__ - else return NULL; -#endif - -#ifdef __WXGTK__ - else { - wxColour *col = new wxColour( colour ); - - if (!(col->Ok())) { - delete col; - return (wxColour *) NULL; - } - Append( colour, col ); - return col; - } -#endif - -#ifdef __X__ - else { - XColor xcolour; - -#ifdef __WXMOTIF__ - Display *display = XtDisplay((Widget) wxTheApp->GetTopLevelWidget()) ; -#endif -#ifdef __XVIEW__ - Xv_Screen screen = xv_get(xview_server, SERVER_NTH_SCREEN, 0); - Xv_opaque root_window = xv_get(screen, XV_ROOT); - Display *display = (Display *)xv_get(root_window, XV_DISPLAY); -#endif - - /* MATTHEW: [4] Use wxGetMainColormap */ - if (!XParseColor(display, (Colormap) wxTheApp->GetMainColormap((WXDisplay*) display), colour,&xcolour)) - return NULL; - - unsigned char r = (unsigned char)(xcolour.red >> 8); - unsigned char g = (unsigned char)(xcolour.green >> 8); - unsigned char b = (unsigned char)(xcolour.blue >> 8); - - wxColour *col = new wxColour(r, g, b); - Append(colour, col); - - return col; - } -#endif -} - -wxString wxColourDatabase::FindName (const wxColour& colour) const -{ - unsigned char red = colour.Red (); - unsigned char green = colour.Green (); - unsigned char blue = colour.Blue (); - - for (wxNode * node = First (); node; node = node->Next ()) - { - wxColour *col = (wxColour *) node->Data (); - - if (col->Red () == red && col->Green () == green && col->Blue () == blue) - { - const char *found = node->GetKeyString(); - if (found) - return wxString(found); - } - } - return wxString(""); // Not Found - -} - -void wxInitializeStockLists () { - wxTheBrushList = new wxBrushList; - wxThePenList = new wxPenList; - wxTheFontList = new wxFontList; - wxTheBitmapList = new wxBitmapList; -} - -void wxInitializeStockObjects () -{ -#ifdef __WXMOTIF__ -#endif -#ifdef __X__ - // TODO - // wxFontPool = new XFontPool; -#endif - - wxNORMAL_FONT = new wxFont (12, wxMODERN, wxNORMAL, wxNORMAL); - wxSMALL_FONT = new wxFont (10, wxSWISS, wxNORMAL, wxNORMAL); - wxITALIC_FONT = new wxFont (12, wxROMAN, wxITALIC, wxNORMAL); - wxSWISS_FONT = new wxFont (12, wxSWISS, wxNORMAL, wxNORMAL); - - wxRED_PEN = new wxPen ("RED", 1, wxSOLID); - wxCYAN_PEN = new wxPen ("CYAN", 1, wxSOLID); - wxGREEN_PEN = new wxPen ("GREEN", 1, wxSOLID); - wxBLACK_PEN = new wxPen ("BLACK", 1, wxSOLID); - wxWHITE_PEN = new wxPen ("WHITE", 1, wxSOLID); - wxTRANSPARENT_PEN = new wxPen ("BLACK", 1, wxTRANSPARENT); - wxBLACK_DASHED_PEN = new wxPen ("BLACK", 1, wxSHORT_DASH); - wxGREY_PEN = new wxPen ("GREY", 1, wxSOLID); - wxMEDIUM_GREY_PEN = new wxPen ("MEDIUM GREY", 1, wxSOLID); - wxLIGHT_GREY_PEN = new wxPen ("LIGHT GREY", 1, wxSOLID); - - wxBLUE_BRUSH = new wxBrush ("BLUE", wxSOLID); - wxGREEN_BRUSH = new wxBrush ("GREEN", wxSOLID); - wxWHITE_BRUSH = new wxBrush ("WHITE", wxSOLID); - wxBLACK_BRUSH = new wxBrush ("BLACK", wxSOLID); - wxTRANSPARENT_BRUSH = new wxBrush ("BLACK", wxTRANSPARENT); - wxCYAN_BRUSH = new wxBrush ("CYAN", wxSOLID); - wxRED_BRUSH = new wxBrush ("RED", wxSOLID); - wxGREY_BRUSH = new wxBrush ("GREY", wxSOLID); - wxMEDIUM_GREY_BRUSH = new wxBrush ("MEDIUM GREY", wxSOLID); - wxLIGHT_GREY_BRUSH = new wxBrush ("LIGHT GREY", wxSOLID); - - wxBLACK = new wxColour ("BLACK"); - wxWHITE = new wxColour ("WHITE"); - wxRED = new wxColour ("RED"); - wxBLUE = new wxColour ("BLUE"); - wxGREEN = new wxColour ("GREEN"); - wxCYAN = new wxColour ("CYAN"); - wxLIGHT_GREY = new wxColour ("LIGHT GREY"); - - wxSTANDARD_CURSOR = new wxCursor (wxCURSOR_ARROW); - wxHOURGLASS_CURSOR = new wxCursor (wxCURSOR_WAIT); - wxCROSS_CURSOR = new wxCursor (wxCURSOR_CROSS); -} - -void wxDeleteStockObjects () -{ - wxDELETE(wxNORMAL_FONT); - wxDELETE(wxSMALL_FONT); - wxDELETE(wxITALIC_FONT); - wxDELETE(wxSWISS_FONT); - - wxDELETE(wxRED_PEN); - wxDELETE(wxCYAN_PEN); - wxDELETE(wxGREEN_PEN); - wxDELETE(wxBLACK_PEN); - wxDELETE(wxWHITE_PEN); - wxDELETE(wxTRANSPARENT_PEN); - wxDELETE(wxBLACK_DASHED_PEN); - wxDELETE(wxGREY_PEN); - wxDELETE(wxMEDIUM_GREY_PEN); - wxDELETE(wxLIGHT_GREY_PEN); - - wxDELETE(wxBLUE_BRUSH); - wxDELETE(wxGREEN_BRUSH); - wxDELETE(wxWHITE_BRUSH); - wxDELETE(wxBLACK_BRUSH); - wxDELETE(wxTRANSPARENT_BRUSH); - wxDELETE(wxCYAN_BRUSH); - wxDELETE(wxRED_BRUSH); - wxDELETE(wxGREY_BRUSH); - wxDELETE(wxMEDIUM_GREY_BRUSH); - wxDELETE(wxLIGHT_GREY_BRUSH); - - wxDELETE(wxBLACK); - wxDELETE(wxWHITE); - wxDELETE(wxRED); - wxDELETE(wxBLUE); - wxDELETE(wxGREEN); - wxDELETE(wxCYAN); - wxDELETE(wxLIGHT_GREY); - - wxDELETE(wxSTANDARD_CURSOR); - wxDELETE(wxHOURGLASS_CURSOR); - wxDELETE(wxCROSS_CURSOR); -} - -void wxDeleteStockLists() { - wxDELETE(wxTheBrushList); - wxDELETE(wxThePenList); - wxDELETE(wxTheFontList); - wxDELETE(wxTheBitmapList); -} - -wxBitmapList::wxBitmapList () -{ -} - -wxBitmapList::~wxBitmapList () -{ -#if defined(__WXMSW__) || defined(__WXMOTIF__) - wxNode *node = First (); - while (node) - { - wxBitmap *bitmap = (wxBitmap *) node->Data (); - wxNode *next = node->Next (); - if (bitmap->GetVisible()) - delete bitmap; - node = next; - } -#endif -} - -// Pen and Brush lists -wxPenList::~wxPenList () -{ -#if defined(__WXMSW__) || defined(__WXMOTIF__) - wxNode *node = First (); - while (node) - { - wxPen *pen = (wxPen *) node->Data (); - wxNode *next = node->Next (); - if (pen->GetVisible()) - delete pen; - node = next; - } -#endif -} - -void wxPenList::AddPen (wxPen * pen) -{ - Append (pen); -} - -void wxPenList::RemovePen (wxPen * pen) -{ - DeleteObject (pen); -} - -wxPen *wxPenList::FindOrCreatePen (const wxColour& colour, int width, int style) -{ - for (wxNode * node = First (); node; node = node->Next ()) - { - wxPen *each_pen = (wxPen *) node->Data (); - if (each_pen && each_pen->GetVisible() && - each_pen->GetWidth () == width && - each_pen->GetStyle () == style && - each_pen->GetColour ().Red () == colour.Red () && - each_pen->GetColour ().Green () == colour.Green () && - each_pen->GetColour ().Blue () == colour.Blue ()) - return each_pen; - } - wxPen *pen = new wxPen (colour, width, style); - - // Yes, we can return a pointer to this in a later FindOrCreatePen call, - // because we created it within FindOrCreatePen. Safeguards against - // returning a pointer to an automatic variable and hanging on to it - // (dangling pointer). - pen->SetVisible(TRUE); - return pen; -} - -wxBrushList::~wxBrushList () -{ -#if defined(__WXMSW__) || defined(__WXMOTIF__) - wxNode *node = First (); - while (node) - { - wxBrush *brush = (wxBrush *) node->Data (); - wxNode *next = node->Next (); - if (brush->GetVisible()) - delete brush; - node = next; - } -#endif -} - -void wxBrushList::AddBrush (wxBrush * brush) -{ - Append (brush); -} - -wxBrush *wxBrushList::FindOrCreateBrush (const wxColour& colour, int style) -{ - for (wxNode * node = First (); node; node = node->Next ()) - { - wxBrush *each_brush = (wxBrush *) node->Data (); - if (each_brush && each_brush->GetVisible() && - each_brush->GetStyle () == style && - each_brush->GetColour ().Red () == colour.Red () && - each_brush->GetColour ().Green () == colour.Green () && - each_brush->GetColour ().Blue () == colour.Blue ()) - return each_brush; - } - // Yes, we can return a pointer to this in a later FindOrCreateBrush call, - // because we created it within FindOrCreateBrush. Safeguards against - // returning a pointer to an automatic variable and hanging on to it - // (dangling pointer). - wxBrush *brush = new wxBrush (colour, style); - brush->SetVisible(TRUE); - return brush; -} - -void wxBrushList::RemoveBrush (wxBrush * brush) -{ - DeleteObject (brush); -} - -wxFontList::~wxFontList () -{ - wxNode *node = First (); - while (node) - { - // Only delete objects that are 'visible', i.e. - // that have been created using FindOrCreate..., - // where the pointers are expected to be shared - // (and therefore not deleted by any one part of an app). - wxFont *font = (wxFont *) node->Data (); - wxNode *next = node->Next (); - if (font->GetVisible()) - delete font; - node = next; -} -} - -void wxFontList::AddFont (wxFont * font) -{ - Append (font); -} - -void wxFontList::RemoveFont (wxFont * font) -{ - DeleteObject (font); -} - -wxFont *wxFontList:: - FindOrCreateFont (int PointSize, int FamilyOrFontId, int Style, int Weight, bool underline, const wxString& Face) -{ - for (wxNode * node = First (); node; node = node->Next ()) - { - wxFont *each_font = (wxFont *) node->Data (); - if (each_font && each_font->GetVisible() && each_font->Ok() && - each_font->GetPointSize () == PointSize && - each_font->GetStyle () == Style && - each_font->GetWeight () == Weight && - each_font->GetUnderlined () == underline && - //#if defined(__X__) - // each_font->GetFontId () == FamilyOrFontId) /* New font system */ - //#else - each_font->GetFamily () == FamilyOrFontId && - ((each_font->GetFaceName() == "") || each_font->GetFaceName() == Face)) - //#endif - return each_font; - } - wxFont *font = new wxFont (PointSize, FamilyOrFontId, Style, Weight, underline, Face); - font->SetVisible(TRUE); - return font; -} - -void wxBitmapList::AddBitmap(wxBitmap *bitmap) -{ - Append(bitmap); -} - -void wxBitmapList::RemoveBitmap(wxBitmap *bitmap) -{ - DeleteObject(bitmap); -} - -wxSize wxGetDisplaySize() -{ - int x, y; - wxDisplaySize(& x, & y); - return wxSize(x, y); -} - -wxResourceCache::~wxResourceCache () -{ - wxNode *node = First (); - while (node) { - wxGDIObject *item = (wxGDIObject *)node->Data(); - if (item->IsKindOf(CLASSINFO(wxBrush))) { - wxBrush *brush = (wxBrush *)item; - delete brush; - } - - if (item->IsKindOf(CLASSINFO(wxFont))) { - wxFont *font = (wxFont *)item; - delete font; - } - - if (item->IsKindOf(CLASSINFO(wxBitmap))) { - wxBitmap *bitmap = (wxBitmap *)item; - delete bitmap; - } - - if (item->IsKindOf(CLASSINFO(wxColour))) { - wxColour *colour = (wxColour *)item; - delete colour; - } - - wxNode *next = node->Next (); - node = next; - } -} - diff --git a/src/common/glob.inc b/src/common/glob.inc deleted file mode 100644 index c8a821d32e..0000000000 --- a/src/common/glob.inc +++ /dev/null @@ -1,361 +0,0 @@ -/* - * File and other globbing (included by wb_utils.cc) - */ - -// This file includes: -// wxIsWild(const char *pattern) -// wxMatchWild(const char *pattern, const char *str, bool dot_special) -// - - -//--------------------------------------------------------------------------------- -#ifndef UNIX_GLOB -# ifdef wx_x -# define UNIX_GLOB 1 -# else -# define UNIX_GLOB 0 -# endif -#endif - -#if UNIX_GLOB -# ifdef wx_msw -# error "Can't use Unix file globbing under Windows!" -# endif -#endif - -/************************************************************************* - * - * wxIsWild checks whether the pattern contains wildcards, and - * returns TRUE if it does, and FALSE if it does not (or if the - * pattern is NULL -- i.e. no string). - * - * The argument is: - * - * 1) pattern - a character string - */ -bool -wxIsWild (const char *pattern) -{ - while (*pattern) - { - switch (*pattern++) - { - case '?': - case '*': -#if UNIX_GLOB - case '[': - case '{': /* } */ -#endif - return TRUE; -#if UNIX_GLOB - case '\\': - if (!*pattern++) - return FALSE; -#endif - } /* switch() */ - } /* while() */ - return FALSE; -} - - - -#if UNIX_GLOB - -// Unix Glob() -// -// Pattern Function -// ----------------------------------------------------- -// '*' = match 0 or more occurances of anything -// "[abc]" = match anyof "abc" (ranges supported) -// "{xx,yy,zz}" = match anyof "xx", "yy", or "zz" -// '?' = match any character -// -// '\' is used to "escape" special characters -// Recursive - -bool -wxMatchWild (const char *pattern, const char *str, bool dot_special) -{ - char c; - const char *cp; - bool done = FALSE, ret_code, ok; - // Below is for vi fans - const char OB = '{', CB = '}'; - -#if 0 - if (strcmp(pattern, "*.*") == 0) - pattern = "*"; // Hack for MS-DOS compat. -#endif - - // dot_special means '.' only matches '.' - if (dot_special && *str == '.' && *pattern != *str) - return FALSE; - - while ((*pattern != '\0') && (!done) && (((*str == '\0') && - ((*pattern == OB) || (*pattern == '*'))) || (*str != '\0'))) - { - switch (*pattern) - { - case '\\': - pattern++; - if (*pattern != '\0') - pattern++; - break; - case '*': - pattern++; - ret_code = FALSE; - while ((*str != '\0') && (!(ret_code = wxMatchWild (pattern, str++, FALSE)))); - if (ret_code) - { - while (*str != '\0') - str++; - while (*pattern != '\0') - pattern++; - } - break; - case '[': - pattern++; - repeat: - if ((*pattern == '\0') || (*pattern == ']')) - { - done = TRUE; - break; - } - if (*pattern == '\\') - { - pattern++; - if (*pattern == '\0') - { - done = TRUE; - break; - } - } - if (*(pattern + 1) == '-') - { - c = *pattern; - pattern += 2; - if (*pattern == ']') - { - done = TRUE; - break; - } - if (*pattern == '\\') - { - pattern++; - if (*pattern == '\0') - { - done = TRUE; - break; - } - } - if ((*str < c) || (*str > *pattern)) - { - pattern++; - goto repeat; - } - } - else if (*pattern != *str) - { - pattern++; - goto repeat; - } - pattern++; - while ((*pattern != ']') && (*pattern != '\0')) - { - if ((*pattern == '\\') && (*(pattern + 1) != '\0')) - pattern++; - pattern++; - } // while() - if (*pattern != '\0') - { - pattern++, str++; - } - break; - case '?': - pattern++; - str++; - break; - case OB: - pattern++; - while ((*pattern != CB) && (*pattern != '\0')) - { - cp = str; - ok = TRUE; - while (ok && (*cp != '\0') && (*pattern != '\0') && - (*pattern != ',') && (*pattern != CB)) - { - if (*pattern == '\\') - pattern++; - ok = (*pattern++ == *cp++); - } // while() - if (*pattern == '\0') - { - ok = FALSE; - done = TRUE; - break; - } - else if (ok) - { - str = cp; - while ((*pattern != CB) && (*pattern != '\0')) - { - if (*++pattern == '\\') - { - if (*++pattern == CB) - pattern++; - } - } // while() - } - else - { - while (*pattern != CB && *pattern != ',' && *pattern != '\0') - { - if (*++pattern == '\\') - { - if (*++pattern == CB || *pattern == ',') - pattern++; - } - } // while() - } - if (*pattern != '\0') - pattern++; - } // while() - break; - default: - if (*str == *pattern) - { - str++, pattern++; - } - else - { - done = TRUE; - } - } // switch() - } // while() - while (*pattern == '*') - pattern++; - return ((*str == '\0') && (*pattern == '\0')); -} - -#else /* MS-DOS/Windows glob() */ -/************************************************************************* - * - * wxMatchWild matches the given pattern string against - * a text string, and returns TRUE if it matches, FALSE otherwise. - * - * A match means that the entire text string is used up in the matching. - * The pattern can contain the following wildcards. - * - * * -- matches any sequence of characters - * ? -- matches one character - * - * If one or other or both of the string arguments to wxMatchWild function is - * NULL (i.e. there isn't a string), then the function returns FALSE. - * - */ -static bool wxPatternMatch (const char *pattern, const char *text, size_t i, size_t j); - -// @@@@ dotSpecial is ignored by MS-DOS -bool -wxMatchWild (const char *pattern, const char *text, bool /* dotSpecial */ ) -{ - if (pattern == NULL || text == NULL || *pattern == '\0' || *text == '\0') - return FALSE; - return wxPatternMatch (pattern, text, 0, 0); -} - -/************************************************************************* - * - * wxPatternMatch does the work for wxMatchWild. wxPatternMatch matches - * the given pattern string against a text string, and returns TRUE if - * it matches, FALSE otherwise. It is assumed that the string arguments - * to wxPatternMatch exist. - * - * A match means that the entire text string is used up in the matching. - * The pattern can contain the following wildcards. - * - * * -- matches any sequence of characters - * ? -- matches one character - * - * wxPatternMatch works by going down the pattern trying to match the - * the same index character in the pattern and string arrays, and stops - * when the end of the pattern or text string is reached. However, if a - * '*' wildcard is met, the algorithm checks to see whether the remaining - * pattern (after the wildcard) matches the rest of the text (i.e. the - * wxPatternMatch function is called recursively). - */ -// Recursive -static bool -wxPatternMatch (const char *pattern, const char *text, size_t i, size_t j) -{ - size_t pattern_length = strlen (pattern); - size_t text_length = strlen (text); - bool match = FALSE; - -#ifdef wx_msw -// MS-DOS file system is case INDEPENDENT -# define EQU(x,y) (wxToLower(x) == wxToLower(y)) -#else -# define EQU(x,y) ((x) == (y)) -#endif - - while (j < pattern_length && i < text_length) - { - if (EQU(text[i], pattern[j]) || pattern[j] == '?') - { - match = TRUE; - i++, j++; - } - else if (pattern[j] == '*') - { - // If pattern ends in '*' - if (++j == pattern_length) - { - match = TRUE; - i = text_length; - } - else - { - match = FALSE; -// after wildcard check to see whether rest of pattern matches - // up with rest of text - while (i < text_length && match != TRUE) - { - match = wxPatternMatch (pattern, text, i, j); - i++; - } -// text index is decremented so that it points to where - // the text string starts to match the rest of the pattern - i--; - } - } - else if (! EQU(text[i], pattern[j])) - { - j = pattern_length; - match = FALSE; - } - } - if (j == pattern_length && i == text_length && match == TRUE) - { - return TRUE; - } - else -// special case where pattern and text are the same except that pattern - // also only has '*' wildcards on the end - if (i == text_length && pattern[j] == '*' && match == TRUE) - { - for (; j < pattern_length; j++) - { - if (pattern[j] != '*') - return FALSE; - } - return TRUE; - } - else - { - return FALSE; - } -} - -#endif /* UNIX_GLOB */ -//----------------------------------------------------------------------------- diff --git a/src/common/hash.cpp b/src/common/hash.cpp deleted file mode 100644 index 69b17fd56e..0000000000 --- a/src/common/hash.cpp +++ /dev/null @@ -1,357 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: hash.cpp -// Purpose: wxHashTable implementation -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "hash.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/list.h" -#endif - -#include "wx/hash.h" - -#include -#include - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxHashTable, wxObject) -#endif - -wxHashTable::wxHashTable (int the_key_type, int size) -{ - n = size; - current_position = -1; - current_node = (wxNode *) NULL; - - key_type = the_key_type; - hash_table = new wxList *[size]; - int i; - for (i = 0; i < size; i++) - hash_table[i] = (wxList *) NULL; -} - -wxHashTable::~wxHashTable (void) -{ - Destroy(); -} - -void wxHashTable::Destroy(void) -{ - if (!hash_table) return; - int i; - for (i = 0; i < n; i++) - if (hash_table[i]) - delete hash_table[i]; - delete[] hash_table; - hash_table = NULL; -} - -bool wxHashTable::Create(int the_key_type, int size) -{ - n = size; - current_position = -1; - current_node = (wxNode *) NULL; - - key_type = the_key_type; - if (hash_table) - delete[] hash_table; - hash_table = new wxList *[size]; - int i; - for (i = 0; i < size; i++) - hash_table[i] = (wxList *) NULL; - return TRUE; -} - -void wxHashTable::Put (long key, long value, wxObject * object) -{ - // Should NEVER be - long k = (long) key; - if (k < 0) - k = -k; - - int position = (int) (k % n); - if (!hash_table[position]) - hash_table[position] = new wxList (wxKEY_INTEGER); - - hash_table[position]->Append (value, object); -} - -void wxHashTable::Put (long key, const char *value, wxObject * object) -{ - // Should NEVER be - long k = (long) key; - if (k < 0) - k = -k; - - int position = (int) (k % n); - if (!hash_table[position]) - hash_table[position] = new wxList (wxKEY_INTEGER); - - hash_table[position]->Append (value, object); -} - -void wxHashTable::Put (long key, wxObject * object) -{ - // Should NEVER be - long k = (long) key; - if (k < 0) - k = -k; - - int position = (int) (k % n); - if (!hash_table[position]) - hash_table[position] = new wxList (wxKEY_INTEGER); - - hash_table[position]->Append (k, object); -} - -void wxHashTable::Put (const char *key, wxObject * object) -{ - int position = (int) (MakeKey (key) % n); - - if (!hash_table[position]) - hash_table[position] = new wxList (wxKEY_STRING); - - hash_table[position]->Append (key, object); -} - -wxObject *wxHashTable::Get (long key, long value) const -{ - // Should NEVER be - long k = (long) key; - if (k < 0) - k = -k; - - int position = (int) (k % n); - if (!hash_table[position]) - return (wxObject *) NULL; - else - { - wxNode *node = hash_table[position]->Find (value); - if (node) - return node->Data (); - else - return (wxObject *) NULL; - } -} - -wxObject *wxHashTable::Get (long key, const char *value) const -{ - // Should NEVER be - long k = (long) key; - if (k < 0) - k = -k; - - int position = (int) (k % n); - if (!hash_table[position]) - return (wxObject *) NULL; - else - { - wxNode *node = hash_table[position]->Find (value); - if (node) - return node->Data (); - else - return (wxObject *) NULL; - } -} - -wxObject *wxHashTable::Get (long key) const -{ - // Should NEVER be - long k = (long) key; - if (k < 0) - k = -k; - - int position = (int) (k % n); - if (!hash_table[position]) - return (wxObject *) NULL; - else - { - wxNode *node = hash_table[position]->Find (k); - return node ? node->Data () : (wxObject*)NULL; - } -} - -wxObject *wxHashTable::Get (const char *key) const -{ - int position = (int) (MakeKey (key) % n); - - if (!hash_table[position]) - return (wxObject *) NULL; - else - { - wxNode *node = hash_table[position]->Find (key); - return node ? node->Data () : (wxObject*)NULL; - } -} - -wxObject *wxHashTable::Delete (long key) -{ - // Should NEVER be - long k = (long) key; - if (k < 0) - k = -k; - - int position = (int) (k % n); - if (!hash_table[position]) - return (wxObject *) NULL; - else - { - wxNode *node = hash_table[position]->Find (k); - if (node) - { - wxObject *data = node->Data (); - delete node; - return data; - } - else - return (wxObject *) NULL; - } -} - -wxObject *wxHashTable::Delete (const char *key) -{ - int position = (int) (MakeKey (key) % n); - if (!hash_table[position]) - return (wxObject *) NULL; - else - { - wxNode *node = hash_table[position]->Find (key); - if (node) - { - wxObject *data = node->Data (); - delete node; - return data; - } - else - return (wxObject *) NULL; - } -} - -wxObject *wxHashTable::Delete (long key, int value) -{ - // Should NEVER be - long k = (long) key; - if (k < 0) - k = -k; - - int position = (int) (k % n); - if (!hash_table[position]) - return (wxObject *) NULL; - else - { - wxNode *node = hash_table[position]->Find (value); - if (node) - { - wxObject *data = node->Data (); - delete node; - return data; - } - else - return (wxObject *) NULL; - } -} - -wxObject *wxHashTable::Delete (long key, const char *value) -{ - int position = (int) (key % n); - if (!hash_table[position]) - return (wxObject *) NULL; - else - { - wxNode *node = hash_table[position]->Find (value); - if (node) - { - wxObject *data = node->Data (); - delete node; - return data; - } - else - return (wxObject *) NULL; - } -} - -long wxHashTable::MakeKey (const char *string) const -{ - long int_key = 0; - - while (*string) - int_key += (unsigned char) *string++; - - return int_key; -} - -void wxHashTable::BeginFind (void) -{ - current_position = -1; - current_node = (wxNode *) NULL; -} - -wxNode *wxHashTable::Next (void) -{ - wxNode *found = (wxNode *) NULL; - bool end = FALSE; - while (!end && !found) - { - if (!current_node) - { - current_position++; - if (current_position >= n) - { - current_position = -1; - current_node = (wxNode *) NULL; - end = TRUE; - } - else - { - if (hash_table[current_position]) - { - current_node = hash_table[current_position]->First (); - found = current_node; - } - } - } - else - { - current_node = current_node->Next (); - found = current_node; - } - } - return found; -} - -void wxHashTable::DeleteContents (bool flag) -{ - int i; - for (i = 0; i < n; i++) - { - if (hash_table[i]) - hash_table[i]->DeleteContents (flag); - } -} - -void wxHashTable::Clear (void) -{ - int i; - for (i = 0; i < n; i++) - { - if (hash_table[i]) - hash_table[i]->Clear (); - } -} - diff --git a/src/common/helpbase.cpp b/src/common/helpbase.cpp deleted file mode 100644 index da1d222c58..0000000000 --- a/src/common/helpbase.cpp +++ /dev/null @@ -1,35 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: helpbase.cpp -// Purpose: Help system base classes -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "helpbase.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/defs.h" -#endif - -#include "wx/helpbase.h" - -#if wxUSE_HELP - -#if !USE_SHARED_LIBRARY -IMPLEMENT_CLASS(wxHelpControllerBase, wxObject) -#endif - -#endif // wxUSE_HELP diff --git a/src/common/http.cpp b/src/common/http.cpp deleted file mode 100644 index 80c8bf09e8..0000000000 --- a/src/common/http.cpp +++ /dev/null @@ -1,259 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: http.cpp -// Purpose: HTTP protocol -// Author: Guilhem Lavaux -// Modified by: -// Created: August 1997 -// RCS-ID: $Id$ -// Copyright: (c) 1997, 1998 Guilhem Lavaux -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "http.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#endif - -#include -#include -#include "wx/string.h" -#include "wx/tokenzr.h" -#include "wx/socket.h" -#include "wx/protocol/protocol.h" -#include "wx/protocol/http.h" -#include "wx/sckstrm.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxHTTP, wxProtocol) -IMPLEMENT_PROTOCOL(wxHTTP, "http", "80", TRUE) -#endif - -#define HTTP_BSIZE 2048 - -wxHTTP::wxHTTP() - : wxProtocol(), - m_headers(wxKEY_STRING) -{ - m_addr = NULL; - m_read = FALSE; - - SetNotify(REQ_LOST); -} - -wxHTTP::~wxHTTP() -{ - // wxString isn't a wxObject - wxNode *node = m_headers.First(); - wxString *string; - - while (node) { - string = (wxString *)node->Data(); - delete string; - node = node->Next(); - } -} - -wxString wxHTTP::GetContentType() -{ - return GetHeader("Content-Type"); -} - -void wxHTTP::SetHeader(const wxString& header, const wxString& h_data) -{ - if (m_read) { - m_headers.Clear(); - m_read = FALSE; - } - - wxNode *node = m_headers.Find(header); - - if (!node) - m_headers.Append(header, (wxObject *)(new wxString(h_data))); - else { - wxString *str = (wxString *)node->Data(); - (*str) = h_data; - } -} - -wxString wxHTTP::GetHeader(const wxString& header) -{ - wxNode *node = m_headers.Find(header); - if (!node) - return wxEmptyString; - - return *((wxString *)node->Data()); -} - -void wxHTTP::SendHeaders() -{ - wxNode *head = m_headers.First(); - - while (head) - { - wxString *str = (wxString *)head->Data(); - - wxString buf; - buf.Printf("%s: %s\n\r", head->GetKeyString(), str->GetData()); - - Write(buf, buf.Len()); - - head = head->Next(); - } -} - -bool wxHTTP::ParseHeaders() -{ - wxString line; - - m_headers.Clear(); - m_read = TRUE; - - while (1) { - m_error = GetLine(this, line); - if (m_error != wxPROTO_NOERR) - return FALSE; - - if (line.Length() == 0) - break; - - int pos = line.Find(':'); - if (pos == -1) - return FALSE; - - wxString left_str = line(0, pos); - wxString right_str = line(pos+1, line.Length()); - - right_str = right_str.Strip(wxString::leading); - - wxString *str = new wxString(right_str); - - m_headers.Append(left_str, (wxObject *) str); - } - return TRUE; -} - -bool wxHTTP::Connect(const wxString& host) -{ - wxIPV4address *addr; - - if (m_connected) { - delete m_addr; - m_addr = NULL; - Close(); - } - - m_addr = addr = new wxIPV4address(); - - if (!addr->Hostname(host)) { - delete m_addr; - m_addr = NULL; - m_error = wxPROTO_NETERR; - return FALSE; - } - - if (!addr->Service("http")) - addr->Service(80); - - return TRUE; -} - -bool wxHTTP::Connect(wxSockAddress& addr, bool WXUNUSED(wait)) -{ - struct sockaddr *raw_addr; - size_t len; - - m_addr = (wxSockAddress *)(addr.GetClassInfo()->CreateObject()); - - addr.Build(raw_addr, len); - m_addr->Disassemble(raw_addr, len); - - return TRUE; -} - -bool wxHTTP::BuildRequest(const wxString& path, wxHTTP_Req req) -{ - char *tmp_buf; - char buf[HTTP_BSIZE]; - - switch (req) { - case wxHTTP_GET: - tmp_buf = "GET"; - break; - default: - return FALSE; - } - - sprintf(buf, "%s %s HTTP/1.0\n\r", tmp_buf, (const char *)path); - Write(buf, strlen(buf)); - SendHeaders(); - sprintf(buf, "\n\r"); - Write(buf, strlen(buf)); - - wxString tmp_str; - - m_error = GetLine(this, tmp_str); - if (m_error != wxPROTO_NOERR) - return FALSE; - - if (!tmp_str.Contains("HTTP/")) { - // TODO: support HTTP v0.9 which can have no header. - SetHeader("Content-Length", "-1"); - SetHeader("Content-Type", "none/none"); - return TRUE; - } - - wxStringTokenizer token(tmp_str,' '); - wxString tmp_str2; - - token.NextToken(); - tmp_str2 = token.NextToken(); - - switch (atoi(tmp_str2)) { - case 200: - break; - default: - m_error = wxPROTO_NOFILE; - return FALSE; - } - - return ParseHeaders(); -} - -class wxHTTPStream : public wxSocketInputStream { -public: - wxHTTP *m_http; - wxHTTPStream(wxHTTP *http) : wxSocketInputStream(*http), m_http(http) {} - virtual ~wxHTTPStream(void) { m_http->Abort(); } -}; - -bool wxHTTP::Abort(void) -{ - return wxSocketClient::Close(); -} - -wxInputStream *wxHTTP::GetInputStream(const wxString& path) -{ - wxHTTPStream *inp_stream = new wxHTTPStream(this); - - if (!m_addr || m_connected) { - m_error = wxPROTO_CONNERR; - return NULL; - } - - if (!wxProtocol::Connect(*m_addr)) - return NULL; - - if (!BuildRequest(path, wxHTTP_GET)) - return NULL; - - return inp_stream; -} diff --git a/src/common/image.cpp b/src/common/image.cpp deleted file mode 100644 index 2338740986..0000000000 --- a/src/common/image.cpp +++ /dev/null @@ -1,2279 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: image.cpp -// Purpose: wxImage -// Author: Robert Roebling -// RCS-ID: $Id$ -// Copyright: (c) Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "image.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#include "wx/image.h" -#include "wx/bitmap.h" -#include "wx/debug.h" -#include "wx/log.h" -#include "wx/app.h" -#if wxUSE_LIBPNG -#include "../png/png.h" -#endif -#if wxUSE_LIBJPEG -extern "C" { -#include -} -#endif -#include "wx/filefn.h" -#include "wx/wfstream.h" -#include "wx/intl.h" - -#ifdef __SALFORDC__ -#ifdef FAR -#undef FAR -#endif -#endif - -#ifdef __WXMSW__ -#include -#endif - -//----------------------------------------------------------------------------- -// wxImage -//----------------------------------------------------------------------------- - -class wxImageRefData: public wxObjectRefData -{ - -public: - wxImageRefData(void); - ~wxImageRefData(void); - - int m_width; - int m_height; - unsigned char *m_data; - bool m_hasMask; - unsigned char m_maskRed,m_maskGreen,m_maskBlue; - bool m_ok; -}; - -wxImageRefData::wxImageRefData(void) -{ - m_width = 0; - m_height = 0; - m_data = (unsigned char*) NULL; - m_ok = FALSE; - m_maskRed = 0; - m_maskGreen = 0; - m_maskBlue = 0; - m_hasMask = FALSE; -} - -wxImageRefData::~wxImageRefData(void) -{ - if (m_data) free( m_data ); -} - -wxList wxImage::sm_handlers; - -//----------------------------------------------------------------------------- - -#define M_IMGDATA ((wxImageRefData *)m_refData) - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxImage, wxObject) -#endif - -wxImage::wxImage() -{ -} - -wxImage::wxImage( int width, int height ) -{ - Create( width, height ); -} - -wxImage::wxImage( const wxString& name, long type ) -{ - LoadFile( name, type ); -} - -#if wxUSE_STREAMS -wxImage::wxImage( wxInputStream& stream, long type ) -{ - LoadFile( stream, type ); -} -#endif // wxUSE_STREAMS - -wxImage::wxImage( const wxImage& image ) -{ - Ref(image); -} - -wxImage::wxImage( const wxImage* image ) -{ - if (image) Ref(*image); -} - -void wxImage::Create( int width, int height ) -{ - m_refData = new wxImageRefData(); - - M_IMGDATA->m_data = (unsigned char *) malloc( width*height*3 ); - if (M_IMGDATA->m_data) - { - for (int l = 0; l < width*height*3; l++) M_IMGDATA->m_data[l] = 0; - - M_IMGDATA->m_width = width; - M_IMGDATA->m_height = height; - M_IMGDATA->m_ok = TRUE; - } - else - { - UnRef(); - } -} - -void wxImage::Destroy() -{ - UnRef(); -} - -wxImage wxImage::Scale( int width, int height ) -{ - wxImage image; - - wxCHECK_MSG( Ok(), image, "invlaid image" ); - - wxCHECK_MSG( (width > 0) && (height > 0), image, "invalid image size" ); - - image.Create( width, height ); - - char unsigned *data = image.GetData(); - - wxCHECK_MSG( data, image, "unable to create image" ); - - if (M_IMGDATA->m_hasMask) - image.SetMaskColour( M_IMGDATA->m_maskRed, M_IMGDATA->m_maskGreen, M_IMGDATA->m_maskBlue ); - - double xscale = (double)width / (double)M_IMGDATA->m_width; - double yscale = (double)height / (double)M_IMGDATA->m_height; - - for (int j = 0; j < height; j++) - { - for (int i = 0; i < width; i++) - { - int new_pos = 3*(j*width + i); - int old_pos = 3*((long)(j/yscale)*M_IMGDATA->m_width + (long)(i/xscale)); - data[ new_pos ] = M_IMGDATA->m_data[ old_pos ]; - data[ new_pos+1 ] = M_IMGDATA->m_data[ old_pos+1 ]; - data[ new_pos+2 ] = M_IMGDATA->m_data[ old_pos+2 ]; - } - } - - return image; -} - -void wxImage::SetRGB( int x, int y, unsigned char r, unsigned char g, unsigned char b ) -{ - wxCHECK_RET( Ok(), "invalid image" ); - - int w = M_IMGDATA->m_width; - int h = M_IMGDATA->m_height; - - wxCHECK_RET( (x>=0) && (y>=0) && (xm_data[ pos ] = r; - M_IMGDATA->m_data[ pos+1 ] = g; - M_IMGDATA->m_data[ pos+2 ] = b; -} - -unsigned char wxImage::GetRed( int x, int y ) -{ - wxCHECK_MSG( Ok(), 0, "invalid image" ); - - int w = M_IMGDATA->m_width; - int h = M_IMGDATA->m_height; - - wxCHECK_MSG( (x>=0) && (y>=0) && (xm_data[pos]; -} - -unsigned char wxImage::GetGreen( int x, int y ) -{ - wxCHECK_MSG( Ok(), 0, "invalid image" ); - - int w = M_IMGDATA->m_width; - int h = M_IMGDATA->m_height; - - wxCHECK_MSG( (x>=0) && (y>=0) && (xm_data[pos+1]; -} - -unsigned char wxImage::GetBlue( int x, int y ) -{ - wxCHECK_MSG( Ok(), 0, "invalid image" ); - - int w = M_IMGDATA->m_width; - int h = M_IMGDATA->m_height; - - wxCHECK_MSG( (x>=0) && (y>=0) && (xm_data[pos+2]; -} - -bool wxImage::Ok() const -{ - return (M_IMGDATA && M_IMGDATA->m_ok); -} - -char unsigned *wxImage::GetData() const -{ - wxCHECK_MSG( Ok(), (char unsigned *)NULL, "invalid image" ); - - return M_IMGDATA->m_data; -} - -void wxImage::SetData( char unsigned *WXUNUSED(data) ) -{ - wxCHECK_RET( Ok(), "invalid image" ); -} - -void wxImage::SetMaskColour( unsigned char r, unsigned char g, unsigned char b ) -{ - wxCHECK_RET( Ok(), "invalid image" ); - - M_IMGDATA->m_maskRed = r; - M_IMGDATA->m_maskGreen = g; - M_IMGDATA->m_maskBlue = b; - M_IMGDATA->m_hasMask = TRUE; -} - -unsigned char wxImage::GetMaskRed() const -{ - wxCHECK_MSG( Ok(), 0, "invalid image" ); - - return M_IMGDATA->m_maskRed; -} - -unsigned char wxImage::GetMaskGreen() const -{ - wxCHECK_MSG( Ok(), 0, "invalid image" ); - - return M_IMGDATA->m_maskGreen; -} - -unsigned char wxImage::GetMaskBlue() const -{ - wxCHECK_MSG( Ok(), 0, "invalid image" ); - - return M_IMGDATA->m_maskBlue; -} - -void wxImage::SetMask( bool mask ) -{ - wxCHECK_RET( Ok(), "invalid image" ); - - M_IMGDATA->m_hasMask = mask; -} - -bool wxImage::HasMask() const -{ - wxCHECK_MSG( Ok(), FALSE, "invalid image" ); - - return M_IMGDATA->m_hasMask; -} - -int wxImage::GetWidth() const -{ - wxCHECK_MSG( Ok(), 0, "invalid image" ); - - return M_IMGDATA->m_width; -} - -int wxImage::GetHeight() const -{ - wxCHECK_MSG( Ok(), 0, "invalid image" ); - - return M_IMGDATA->m_height; -} - -bool wxImage::LoadFile( const wxString& filename, long type ) -{ -#if wxUSE_STREAMS - if (wxFileExists(filename)) - { - wxFileInputStream stream(filename); - return LoadFile(stream, type); - } - - else { - wxLogError( "Can't load image from file '%s': file does not exist.", filename.c_str() ); - - return FALSE; - } -#else // !wxUSE_STREAMS - return FALSE; -#endif // wxUSE_STREAMS -} - -bool wxImage::SaveFile( const wxString& filename, int type ) -{ -#if wxUSE_STREAMS - wxFileOutputStream stream(filename); - - if ( stream.LastError() == wxStream_NOERROR ) - return SaveFile(stream, type); - else -#endif // wxUSE_STREAMS - return FALSE; -} - -#if wxUSE_STREAMS -bool wxImage::LoadFile( wxInputStream& stream, long type ) -{ - UnRef(); - - m_refData = new wxImageRefData; - - wxImageHandler *handler = FindHandler(type); - - if (handler == NULL) - { - wxLogWarning( "No image handler for type %d defined.", type ); - - return FALSE; - } - - return handler->LoadFile( this, stream ); -} - -bool wxImage::SaveFile( wxOutputStream& stream, int type ) -{ - wxCHECK_MSG( Ok(), FALSE, "invalid image" ); - - wxImageHandler *handler = FindHandler(type); - - if (handler == NULL) - { - wxLogWarning( "No image handler for type %d defined.", type ); - - return FALSE; - } - - return handler->SaveFile( this, stream ); -} -#endif // wxUSE_STREAMS - -void wxImage::AddHandler( wxImageHandler *handler ) -{ - // make sure that the memory will be freed at the program end - sm_handlers.DeleteContents(TRUE); - - sm_handlers.Append( handler ); -} - -void wxImage::InsertHandler( wxImageHandler *handler ) -{ - // make sure that the memory will be freed at the program end - sm_handlers.DeleteContents(TRUE); - - sm_handlers.Insert( handler ); -} - -bool wxImage::RemoveHandler( const wxString& name ) -{ - wxImageHandler *handler = FindHandler(name); - if (handler) - { - sm_handlers.DeleteObject(handler); - return TRUE; - } - else - return FALSE; -} - -wxImageHandler *wxImage::FindHandler( const wxString& name ) -{ - wxNode *node = sm_handlers.First(); - while (node) - { - wxImageHandler *handler = (wxImageHandler*)node->Data(); - if (handler->GetName().Cmp(name) == 0) return handler; - - node = node->Next(); - } - return (wxImageHandler *)NULL; -} - -wxImageHandler *wxImage::FindHandler( const wxString& extension, long bitmapType ) -{ - wxNode *node = sm_handlers.First(); - while (node) - { - wxImageHandler *handler = (wxImageHandler*)node->Data(); - if ( (handler->GetExtension().Cmp(extension) == 0) && - (bitmapType == -1 || handler->GetType() == bitmapType) ) - return handler; - node = node->Next(); - } - return (wxImageHandler*)NULL; -} - -wxImageHandler *wxImage::FindHandler( long bitmapType ) -{ - wxNode *node = sm_handlers.First(); - while (node) - { - wxImageHandler *handler = (wxImageHandler *)node->Data(); - if (handler->GetType() == bitmapType) return handler; - node = node->Next(); - } - return NULL; -} - -void wxImage::InitStandardHandlers() -{ - AddHandler( new wxBMPHandler ); -#if wxUSE_LIBPNG - AddHandler( new wxPNGHandler ); -#endif -#if wxUSE_LIBJPEG - AddHandler( new wxJPEGHandler ); -#endif -} - -void wxImage::CleanUpHandlers() -{ - wxNode *node = sm_handlers.First(); - while (node) - { - wxImageHandler *handler = (wxImageHandler *)node->Data(); - wxNode *next = node->Next(); - delete handler; - delete node; - node = next; - } -} - -//----------------------------------------------------------------------------- -// wxImageHandler -//----------------------------------------------------------------------------- - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxImageHandler,wxObject) -#endif - -#if wxUSE_STREAMS -bool wxImageHandler::LoadFile( wxImage *WXUNUSED(image), wxInputStream& WXUNUSED(stream) ) -{ - return FALSE; -} - -bool wxImageHandler::SaveFile( wxImage *WXUNUSED(image), wxOutputStream& WXUNUSED(stream) ) -{ - return FALSE; -} -#endif // wxUSE_STREAMS - -//----------------------------------------------------------------------------- -// wxPNGHandler -//----------------------------------------------------------------------------- - -#if wxUSE_LIBPNG - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxPNGHandler,wxImageHandler) -#endif - - -#if wxUSE_STREAMS -static void _PNG_stream_reader( png_structp png_ptr, png_bytep data, png_size_t length ) -{ - ((wxInputStream*) png_get_io_ptr( png_ptr )) -> Read(data, length); -} - -static void _PNG_stream_writer( png_structp png_ptr, png_bytep data, png_size_t length ) -{ - ((wxOutputStream*) png_get_io_ptr( png_ptr )) -> Write(data, length); -} - -bool wxPNGHandler::LoadFile( wxImage *image, wxInputStream& stream ) -{ - // VZ: as this function uses setjmp() the only fool proof error handling - // method is to use goto (setjmp is not really C++ dtors friendly...) - - unsigned char **lines = (unsigned char **) NULL; - unsigned int i; - png_infop info_ptr = (png_infop) NULL; - - image->Destroy(); - - png_structp png_ptr = png_create_read_struct( PNG_LIBPNG_VER_STRING, - (voidp) NULL, - (png_error_ptr) NULL, - (png_error_ptr) NULL ); - if (!png_ptr) - goto error; - - info_ptr = png_create_info_struct( png_ptr ); - if (!info_ptr) - goto error; - - if (setjmp(png_ptr->jmpbuf)) - goto error; - - if (info_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA) - goto error; - - png_set_read_fn( png_ptr, &stream, _PNG_stream_reader); - - png_uint_32 width,height; - int bit_depth,color_type,interlace_type; - - png_read_info( png_ptr, info_ptr ); - png_get_IHDR( png_ptr, info_ptr, &width, &height, &bit_depth, &color_type, &interlace_type, (int*) NULL, (int*) NULL ); - - if (color_type == PNG_COLOR_TYPE_PALETTE) - png_set_expand( png_ptr ); - - png_set_strip_16( png_ptr ); - png_set_packing( png_ptr ); - if (png_get_valid( png_ptr, info_ptr, PNG_INFO_tRNS)) - png_set_expand( png_ptr ); - png_set_filler( png_ptr, 0xff, PNG_FILLER_AFTER ); - - image->Create( width, height ); - - if (!image->Ok()) - goto error; - - lines = (unsigned char **)malloc( height * sizeof(unsigned char *) ); - if (lines == NULL) - goto error; - - for (i = 0; i < height; i++) - { - if ((lines[i] = (unsigned char *)malloc(width * (sizeof(unsigned char) * 4))) == NULL) - { - for ( unsigned int n = 0; n < i; n++ ) - free( lines[n] ); - goto error; - } - } - - // loaded successfully! - { - int transp = 0; - png_read_image( png_ptr, lines ); - png_destroy_read_struct( &png_ptr, &info_ptr, (png_infopp) NULL ); - unsigned char *ptr = image->GetData(); - if ((color_type == PNG_COLOR_TYPE_GRAY) || - (color_type == PNG_COLOR_TYPE_GRAY_ALPHA)) - { - for (unsigned int y = 0; y < height; y++) - { - unsigned char *ptr2 = lines[y]; - for (unsigned int x = 0; x < width; x++) - { - unsigned char r = *ptr2++; - unsigned char a = *ptr2++; - if (a < 128) - { - *ptr++ = 255; - *ptr++ = 0; - *ptr++ = 255; - transp = 1; - } - else - { - *ptr++ = r; - *ptr++ = r; - *ptr++ = r; - } - } - } - } - else - { - for (unsigned int y = 0; y < height; y++) - { - unsigned char *ptr2 = lines[y]; - for (unsigned int x = 0; x < width; x++) - { - unsigned char r = *ptr2++; - unsigned char g = *ptr2++; - unsigned char b = *ptr2++; - unsigned char a = *ptr2++; - if (a < 128) - { - *ptr++ = 255; - *ptr++ = 0; - *ptr++ = 255; - transp = 1; - } - else - { - if ((r == 255) && (g == 0) && (b == 255)) r = 254; - *ptr++ = r; - *ptr++ = g; - *ptr++ = b; - } - } - } - } - - for ( unsigned int j = 0; j < height; j++ ) - free( lines[j] ); - free( lines ); - - if (transp) - { - image->SetMaskColour( 255, 0, 255 ); - } - else - { - image->SetMask( FALSE ); - } - } - - return TRUE; - -error: - wxLogError(_("Couldn't load a PNG image - probably file is corrupted.")); - - if ( image->Ok() ) - { - image->Destroy(); - } - - if ( lines ) - { - free( lines ); - } - - if ( png_ptr ) - { - if ( info_ptr ) - { - png_destroy_read_struct( &png_ptr, &info_ptr, (png_infopp) NULL ); - free(info_ptr); - } - else - png_destroy_read_struct( &png_ptr, (png_infopp) NULL, (png_infopp) NULL ); - } - return FALSE; -} - - -bool wxPNGHandler::SaveFile( wxImage *image, wxOutputStream& stream ) -{ - { - png_structp png_ptr = png_create_write_struct( PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); - if (!png_ptr) - { - return FALSE; - } - - png_infop info_ptr = png_create_info_struct(png_ptr); - if (info_ptr == NULL) - { - png_destroy_write_struct( &png_ptr, (png_infopp)NULL ); - return FALSE; - } - - if (setjmp(png_ptr->jmpbuf)) - { - png_destroy_write_struct( &png_ptr, (png_infopp)NULL ); - return FALSE; - } - - png_set_write_fn( png_ptr, &stream, _PNG_stream_writer, NULL); - - png_set_IHDR( png_ptr, info_ptr, image->GetWidth(), image->GetHeight(), 8, - PNG_COLOR_TYPE_RGB_ALPHA, PNG_INTERLACE_NONE, - PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE); - - png_color_8 sig_bit; - sig_bit.red = 8; - sig_bit.green = 8; - sig_bit.blue = 8; - sig_bit.alpha = 8; - png_set_sBIT( png_ptr, info_ptr, &sig_bit ); - png_write_info( png_ptr, info_ptr ); - png_set_shift( png_ptr, &sig_bit ); - png_set_packing( png_ptr ); - - unsigned char *data = (unsigned char *)malloc( image->GetWidth()*4 ); - if (!data) - { - png_destroy_write_struct( &png_ptr, (png_infopp)NULL ); - return FALSE; - } - - for (int y = 0; y < image->GetHeight(); y++) - { - unsigned char *ptr = image->GetData() + (y * image->GetWidth() * 3); - for (int x = 0; x < image->GetWidth(); x++) - { - data[(x << 2) + 0] = *ptr++; - data[(x << 2) + 1] = *ptr++; - data[(x << 2) + 2] = *ptr++; - if ((data[(x << 2) + 0] == image->GetMaskRed()) && - (data[(x << 2) + 1] == image->GetMaskGreen()) && - (data[(x << 2) + 2] == image->GetMaskBlue())) - { - data[(x << 2) + 3] = 0; - } - else - { - data[(x << 2) + 3] = 255; - } - } - png_bytep row_ptr = data; - png_write_rows( png_ptr, &row_ptr, 1 ); - } - - free(data); - png_write_end( png_ptr, info_ptr ); - png_destroy_write_struct( &png_ptr, (png_infopp)&info_ptr ); - } - return TRUE; -} -#endif // wxUSE_STREAMS - -#endif - - // wxUSE_LIBPNG - - -//----------------------------------------------------------------------------- -// wxJPEGHandler -//----------------------------------------------------------------------------- - -#if wxUSE_LIBJPEG - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxJPEGHandler,wxImageHandler) -#endif - -#if wxUSE_STREAMS - - -//------------- JPEG Data Source Manager - -typedef struct { - struct jpeg_source_mgr pub; /* public fields */ - - JOCTET* buffer; /* start of buffer */ -} my_source_mgr; - -typedef my_source_mgr * my_src_ptr; - -METHODDEF(void) my_init_source ( j_decompress_ptr cinfo ) -{ -} - -METHODDEF(boolean) my_fill_input_buffer ( j_decompress_ptr cinfo ) -{ - return TRUE; -} - -METHODDEF(void) my_skip_input_data ( j_decompress_ptr cinfo, long num_bytes ) -{ - my_src_ptr src = (my_src_ptr) cinfo->src; - - src->pub.next_input_byte += (size_t) num_bytes; - src->pub.bytes_in_buffer -= (size_t) num_bytes; -} - -METHODDEF(void) my_term_source ( j_decompress_ptr cinfo ) -{ - my_src_ptr src = (my_src_ptr) cinfo->src; - - free (src->buffer); -} - -void jpeg_wxio_src( j_decompress_ptr cinfo, wxInputStream& infile ) -{ - my_src_ptr src; - - if (cinfo->src == NULL) { /* first time for this JPEG object? */ - cinfo->src = (struct jpeg_source_mgr *) - (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT, - sizeof(my_source_mgr)); - src = (my_src_ptr) cinfo->src; - } - src = (my_src_ptr) cinfo->src; - src->pub.bytes_in_buffer = infile.StreamSize(); /* forces fill_input_buffer on first read */ - src->buffer = (JOCTET *) malloc (infile.StreamSize()); - src->pub.next_input_byte = src->buffer; /* until buffer loaded */ - infile.Read(src->buffer, infile.StreamSize()); - - src->pub.init_source = my_init_source; - src->pub.fill_input_buffer = my_fill_input_buffer; - src->pub.skip_input_data = my_skip_input_data; - src->pub.resync_to_restart = jpeg_resync_to_restart; /* use default method */ - src->pub.term_source = my_term_source; -} - - - -bool wxJPEGHandler::LoadFile( wxImage *image, wxInputStream& stream ) -{ - struct jpeg_decompress_struct cinfo; - struct jpeg_error_mgr jerr; - JSAMPARRAY tempbuf; - unsigned char *ptr; - unsigned stride; - - image->Destroy(); - cinfo.err = jpeg_std_error( &jerr ); - jpeg_create_decompress( &cinfo ); - jpeg_wxio_src( &cinfo, stream ); - jpeg_read_header( &cinfo, TRUE ); - cinfo.out_color_space = JCS_RGB; - jpeg_start_decompress( &cinfo ); - - image->Create( cinfo.image_width, cinfo.image_height ); - if (!image->Ok()) { - jpeg_finish_decompress( &cinfo ); - jpeg_destroy_decompress( &cinfo ); - return FALSE; - } - image->SetMask( FALSE ); - ptr = image->GetData(); - stride = cinfo.output_width * 3; - tempbuf = (*cinfo.mem->alloc_sarray) - ((j_common_ptr) &cinfo, JPOOL_IMAGE, stride, 1 ); - - while ( cinfo.output_scanline < cinfo.output_height ) { - jpeg_read_scanlines( &cinfo, tempbuf, 1 ); - memcpy( ptr, tempbuf[0], stride ); - ptr += stride; - } - jpeg_finish_decompress( &cinfo ); - jpeg_destroy_decompress( &cinfo ); - return TRUE; -} - - - - - -typedef struct { - struct jpeg_destination_mgr pub; - - wxOutputStream *stream; - JOCTET * buffer; -} my_destination_mgr; - -typedef my_destination_mgr * my_dest_ptr; - -#define OUTPUT_BUF_SIZE 4096 /* choose an efficiently fwrite'able size */ - -METHODDEF(void) init_destination (j_compress_ptr cinfo) -{ - my_dest_ptr dest = (my_dest_ptr) cinfo->dest; - - /* Allocate the output buffer --- it will be released when done with image */ - dest->buffer = (JOCTET *) - (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE, - OUTPUT_BUF_SIZE * sizeof(JOCTET)); - dest->pub.next_output_byte = dest->buffer; - dest->pub.free_in_buffer = OUTPUT_BUF_SIZE; -} - -METHODDEF(boolean) empty_output_buffer (j_compress_ptr cinfo) -{ - my_dest_ptr dest = (my_dest_ptr) cinfo->dest; - - dest->stream->Write(dest->buffer, OUTPUT_BUF_SIZE); - dest->pub.next_output_byte = dest->buffer; - dest->pub.free_in_buffer = OUTPUT_BUF_SIZE; - return TRUE; -} - -METHODDEF(void) term_destination (j_compress_ptr cinfo) -{ - my_dest_ptr dest = (my_dest_ptr) cinfo->dest; - size_t datacount = OUTPUT_BUF_SIZE - dest->pub.free_in_buffer; - /* Write any data remaining in the buffer */ - if (datacount > 0) - dest->stream->Write(dest->buffer, datacount); -} - -GLOBAL(void) jpeg_wxio_dest (j_compress_ptr cinfo, wxOutputStream& outfile) -{ - my_dest_ptr dest; - - if (cinfo->dest == NULL) { /* first time for this JPEG object? */ - cinfo->dest = (struct jpeg_destination_mgr *) - (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT, - sizeof(my_destination_mgr)); - } - - dest = (my_dest_ptr) cinfo->dest; - dest->pub.init_destination = init_destination; - dest->pub.empty_output_buffer = empty_output_buffer; - dest->pub.term_destination = term_destination; - dest->stream = &outfile; -} - - - -bool wxJPEGHandler::SaveFile( wxImage *image, wxOutputStream& stream ) -{ - struct jpeg_compress_struct cinfo; - struct jpeg_error_mgr jerr; - JSAMPROW row_pointer[1]; /* pointer to JSAMPLE row[s] */ - JSAMPLE *image_buffer; - int stride; /* physical row width in image buffer */ - - cinfo.err = jpeg_std_error(&jerr); - jpeg_create_compress(&cinfo); - jpeg_wxio_dest(&cinfo, stream); - - cinfo.image_width = image->GetWidth(); - cinfo.image_height = image->GetHeight(); - cinfo.input_components = 3; - cinfo.in_color_space = JCS_RGB; - jpeg_set_defaults(&cinfo); - jpeg_start_compress(&cinfo, TRUE); - - stride = cinfo.image_width * 3; /* JSAMPLEs per row in image_buffer */ - image_buffer = image->GetData(); - while (cinfo.next_scanline < cinfo.image_height) { - row_pointer[0] = &image_buffer[cinfo.next_scanline * stride]; - jpeg_write_scanlines( &cinfo, row_pointer, 1 ); - } - jpeg_finish_compress(&cinfo); - jpeg_destroy_compress(&cinfo); - - return TRUE; -} -#endif // wxUSE_STREAMS - -#endif - - // wxUSE_LIBJPEG - - - -//----------------------------------------------------------------------------- -// wxBMPHandler -//----------------------------------------------------------------------------- - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxBMPHandler,wxImageHandler) -#endif - -#if wxUSE_STREAMS -bool wxBMPHandler::LoadFile( wxImage *image, wxInputStream& stream ) -{ - unsigned char *data, *ptr; - int done, i, bpp, planes, comp, ncolors, line, column, - linesize, linepos, rshift = 0, gshift = 0, bshift = 0; - unsigned char aByte; - short int word; - long int dbuf[4], dword, rmask = 0, gmask = 0, bmask = 0, offset, - size; - off_t start_offset = stream.TellI(); - signed char bbuf[4]; - struct _cmap - { - unsigned char r, g, b; - } - *cmap = NULL; -#ifndef BI_RGB -#define BI_RGB 0 -#define BI_RLE8 1 -#define BI_RLE4 2 -#endif - -#ifndef BI_BITFIELDS -#define BI_BITFIELDS 3 -#endif - - image->Destroy(); - - done = 0; - /* - * Reading the bmp header - */ - - stream.Read(&bbuf, 2); - - stream.Read(dbuf, 4 * 4); - - size = dbuf[0]; - offset = dbuf[2]; - - stream.Read(dbuf, 4 * 2); - int width = (int)dbuf[0]; - int height = (int)dbuf[1]; - if (width > 32767) - { - wxLogError( "Image width > 32767 pixels for file\n" ); - return FALSE; - } - if (height > 32767) - { - wxLogError( "Image height > 32767 pixels for file\n" ); - return FALSE; - } - stream.Read(&word, 2); - planes = (int)word; - stream.Read(&word, 2); - bpp = (int)word; - if (bpp != 1 && bpp != 4 && bpp != 8 && bpp && 16 && bpp != 24 && bpp != 32) - { - wxLogError( "unknown bitdepth in file\n" ); - return FALSE; - } - stream.Read(dbuf, 4 * 4); - comp = (int)dbuf[0]; - if (comp != BI_RGB && comp != BI_RLE4 && comp != BI_RLE8 && comp != BI_BITFIELDS) - { - wxLogError( "unknown encoding in Windows BMP file\n" ); - return FALSE; - } - stream.Read(dbuf, 4 * 2); - ncolors = (int)dbuf[0]; - if (ncolors == 0) - ncolors = 1 << bpp; - /* some more sanity checks */ - if (((comp == BI_RLE4) && (bpp != 4)) || ((comp == BI_RLE8) && (bpp != 8)) || ((comp == BI_BITFIELDS) && (bpp != 16 && bpp != 32))) - { - wxLogError( "encoding of BMP doesn't match bitdepth\n" ); - return FALSE; - } - if (bpp < 16) - { - cmap = (struct _cmap *)malloc(sizeof(struct _cmap) * ncolors); - - if (!cmap) - { - wxLogError( "Cannot allocate RAM for color map in BMP file\n" ); - return FALSE; - } - } - else - cmap = NULL; - - image->Create( width, height ); - ptr = image->GetData(); - if (!ptr) - { - wxLogError( "Cannot allocate RAM for RGB data in file\n" ); - if (cmap) - free(cmap); - return FALSE; - } - - /* - * Reading the palette, if it exists. - */ - if (bpp < 16 && ncolors != 0) - { - for (i = 0; i < ncolors; i++) - { - stream.Read(bbuf, 4); - cmap[i].b = bbuf[0]; - cmap[i].g = bbuf[1]; - cmap[i].r = bbuf[2]; - } - } - else if (bpp == 16 || bpp == 32) - { - if (comp == BI_BITFIELDS) - { - int bit = 0; - - stream.Read(dbuf, 4 * 3); - bmask = dbuf[0]; - gmask = dbuf[1]; - rmask = dbuf[2]; - /* find shift amount.. ugly, but i can't think of a better way */ - for (bit = 0; bit < bpp; bit++) - { - if (bmask & (1 << bit)) - bshift = bit; - if (gmask & (1 << bit)) - gshift = bit; - if (rmask & (1 << bit)) - rshift = bit; - } - } - else if (bpp == 16) - { - rmask = 0x7C00; - gmask = 0x03E0; - bmask = 0x001F; - rshift = 10; - gshift = 5; - bshift = 0; - } - else if (bpp == 32) - { - rmask = 0x00FF0000; - gmask = 0x0000FF00; - bmask = 0x000000FF; - rshift = 16; - gshift = 8; - bshift = 0; - } - } - - /* - * Reading the image data - */ - stream.SeekI(start_offset + offset); - data = ptr; - - /* set the whole image to the background color */ - if (bpp < 16 && (comp == BI_RLE4 || comp == BI_RLE8)) - { - for (i = 0; i < width * height; i++) - { - *ptr++ = cmap[0].r; - *ptr++ = cmap[0].g; - *ptr++ = cmap[0].b; - } - ptr = data; - } - line = 0; - column = 0; -#define poffset (line * width * 3 + column * 3) - - /* - * BMPs are stored upside down... hmmmmmmmmmm.... - */ - - linesize = ((width * bpp + 31) / 32) * 4; - for (line = (height - 1); line >= 0; line--) - { - linepos = 0; - for (column = 0; column < width;) - { - if (bpp < 16) - { - int index; - - linepos++; - aByte = stream.GetC(); - if (bpp == 1) - { - int bit = 0; - - for (bit = 0; bit < 8; bit++) - { - index = ((aByte & (0x80 >> bit)) ? 1 : 0); - ptr[poffset] = cmap[index].r; - ptr[poffset + 1] = cmap[index].g; - ptr[poffset + 2] = cmap[index].b; - column++; - } - } - else if (bpp == 4) - { - if (comp == BI_RLE4) - { - wxLogError( "can't deal with 4bit encoded yet.\n"); - image->Destroy(); - free(cmap); - return FALSE; - } - else - { - int nibble = 0; - - for (nibble = 0; nibble < 2; nibble++) - { - index = ((aByte & (0xF0 >> nibble * 4)) >> (!nibble * 4)); - if (index >= 16) - index = 15; - ptr[poffset] = cmap[index].r; - ptr[poffset + 1] = cmap[index].g; - ptr[poffset + 2] = cmap[index].b; - column++; - } - } - } - else if (bpp == 8) - { - if (comp == BI_RLE8) - { - unsigned char first; - - first = aByte; - aByte = stream.GetC(); - if (first == 0) - { - if (aByte == 0) - { -/* column = width; */ - } - else if (aByte == 1) - { - column = width; - line = -1; - } - else if (aByte == 2) - { - aByte = stream.GetC(); - column += aByte; - linepos = column * bpp / 8; - aByte = stream.GetC(); - line += aByte; - } - else - { - int absolute = aByte; - - for (i = 0; i < absolute; i++) - { - linepos++; - aByte = stream.GetC(); - ptr[poffset] = cmap[aByte].r; - ptr[poffset + 1] = cmap[aByte].g; - ptr[poffset + 2] = cmap[aByte].b; - column++; - } - if (absolute & 0x01) - aByte = stream.GetC(); - } - } - else - { - for (i = 0; i < first; i++) - { - ptr[poffset] = cmap[aByte].r; - ptr[poffset + 1] = cmap[aByte].g; - ptr[poffset + 2] = cmap[aByte].b; - column++; - linepos++; - } - } - } - else - { - ptr[poffset] = cmap[aByte].r; - ptr[poffset + 1] = cmap[aByte].g; - ptr[poffset + 2] = cmap[aByte].b; - column++; - linepos += size; - } - } - } - else if (bpp == 24) - { - stream.Read(&bbuf, 3); - linepos += 3; - ptr[poffset] = (unsigned char)bbuf[2]; - ptr[poffset + 1] = (unsigned char)bbuf[1]; - ptr[poffset + 2] = (unsigned char)bbuf[0]; - column++; - } - else if (bpp == 16) - { - unsigned char temp; - - stream.Read(&word, 2); - linepos += 2; - temp = (word & rmask) >> rshift; - ptr[poffset] = temp; - temp = (word & gmask) >> gshift; - ptr[poffset + 1] = temp; - temp = (word & bmask) >> gshift; - ptr[poffset + 2] = temp; - column++; - } - else - { - unsigned char temp; - - stream.Read(&dword, 4); - linepos += 4; - temp = (dword & rmask) >> rshift; - ptr[poffset] = temp; - temp = (dword & gmask) >> gshift; - ptr[poffset + 1] = temp; - temp = (dword & bmask) >> bshift; - ptr[poffset + 2] = temp; - column++; - } - } - while ((linepos < linesize) && (comp != 1) && (comp != 2)) - { - stream.Read(&aByte, 1); - linepos += 1; - if (stream.LastError() != wxStream_NOERROR) - break; - } - } - if (cmap) free(cmap); - - image->SetMask( FALSE ); - - return TRUE; -} -#endif // wxUSE_STREAMS - -#ifdef __WXMSW__ - -wxBitmap wxImage::ConvertToBitmap() const -{ -// sizeLimit is the MS upper limit for the DIB size - int sizeLimit = 1024*768*3; - -// width and height of the device-dependent bitmap - int width = GetWidth(); - int bmpHeight = GetHeight(); - -// calc the number of bytes per scanline and padding - int bytePerLine = width*3; - int sizeDWORD = sizeof( DWORD ); - div_t lineBoundary = div( bytePerLine, sizeDWORD ); - int padding = 0; - if( lineBoundary.rem > 0 ) - { - padding = sizeDWORD - lineBoundary.rem; - bytePerLine += padding; - } -// calc the number of DIBs and heights of DIBs - int numDIB = 1; - int hRemain = 0; - int height = sizeLimit/bytePerLine; - if( height >= bmpHeight ) - height = bmpHeight; - else - { - div_t result = div( bmpHeight, height ); - numDIB = result.quot; - hRemain = result.rem; - if( hRemain >0 ) numDIB++; - } - -// set bitmap parameters - wxBitmap bitmap; - wxCHECK_MSG( Ok(), bitmap, "invalid image" ); - bitmap.SetWidth( width ); - bitmap.SetHeight( bmpHeight ); - bitmap.SetDepth( wxDisplayDepth() ); - -// create a DIB header - int headersize = sizeof(BITMAPINFOHEADER); - LPBITMAPINFO lpDIBh = (BITMAPINFO *) malloc( headersize ); - wxCHECK_MSG( lpDIBh, bitmap, "could not allocate memory for DIB header" ); -// Fill in the DIB header - lpDIBh->bmiHeader.biSize = headersize; - lpDIBh->bmiHeader.biWidth = (DWORD)width; - lpDIBh->bmiHeader.biHeight = (DWORD)(-height); - lpDIBh->bmiHeader.biSizeImage = bytePerLine*height; -// the general formula for biSizeImage: -// ( ( ( ((DWORD)width*24) +31 ) & ~31 ) >> 3 ) * height; - lpDIBh->bmiHeader.biPlanes = 1; - lpDIBh->bmiHeader.biBitCount = 24; - lpDIBh->bmiHeader.biCompression = BI_RGB; - lpDIBh->bmiHeader.biClrUsed = 0; -// These seem not really needed for our purpose here. - lpDIBh->bmiHeader.biClrImportant = 0; - lpDIBh->bmiHeader.biXPelsPerMeter = 0; - lpDIBh->bmiHeader.biYPelsPerMeter = 0; -// memory for DIB data - unsigned char *lpBits; - lpBits = (unsigned char *)malloc( lpDIBh->bmiHeader.biSizeImage ); - if( !lpBits ) - { - wxFAIL_MSG( "could not allocate memory for DIB" ); - free( lpDIBh ); - return bitmap; - } - -// create and set the device-dependent bitmap - HDC hdc = ::GetDC(NULL); - HDC memdc = ::CreateCompatibleDC( hdc ); - HBITMAP hbitmap; - hbitmap = ::CreateCompatibleBitmap( hdc, width, bmpHeight ); - ::SelectObject( memdc, hbitmap); - -// copy image data into DIB data and then into DDB (in a loop) - unsigned char *data = GetData(); - int i, j, n; - int origin = 0; - unsigned char *ptdata = data; - unsigned char *ptbits; - - for( n=0; n 1 && n == numDIB-1 && hRemain > 0 ) - { - // redefine height and size of the (possibly) last smaller DIB - // memory is not reallocated - height = hRemain; - lpDIBh->bmiHeader.biHeight = (DWORD)(-height); - lpDIBh->bmiHeader.biSizeImage = bytePerLine*height; - } - ptbits = lpBits; - - for( j=0; jbmiHeader), CBM_INIT, lpBits, lpDIBh, DIB_RGB_COLORS ); -// The above line is equivalent to the following two lines. -// hbitmap = ::CreateCompatibleBitmap( hdc, width, height ); -// ::SetDIBits( hdc, hbitmap, 0, height, lpBits, lpDIBh, DIB_RGB_COLORS); -// or the following lines -// hbitmap = ::CreateCompatibleBitmap( hdc, width, height ); -// HDC memdc = ::CreateCompatibleDC( hdc ); -// ::SelectObject( memdc, hbitmap); -// ::SetDIBitsToDevice( memdc, 0, 0, width, height, -// 0, 0, 0, height, (void *)lpBits, lpDIBh, DIB_RGB_COLORS); -// ::SelectObject( memdc, 0 ); -// ::DeleteDC( memdc ); - } - bitmap.SetHBITMAP( (WXHBITMAP) hbitmap ); - -// similarly, created an mono-bitmap for the possible mask - if( HasMask() ) - { - hbitmap = ::CreateBitmap( (WORD)width, (WORD)bmpHeight, 1, 1, NULL ); - ::SelectObject( memdc, hbitmap); - if( numDIB == 1 ) height = bmpHeight; - else height = sizeLimit/bytePerLine; - lpDIBh->bmiHeader.biHeight = (DWORD)(-height); - lpDIBh->bmiHeader.biSizeImage = bytePerLine*height; - origin = 0; - unsigned char r = GetMaskRed(); - unsigned char g = GetMaskGreen(); - unsigned char b = GetMaskBlue(); - unsigned char zero = 0, one = 255; - ptdata = data; - for( n=0; n 1 && n == numDIB - 1 && hRemain > 0 ) - { - // redefine height and size of the (possibly) last smaller DIB - // memory is not reallocated - height = hRemain; - lpDIBh->bmiHeader.biHeight = (DWORD)(-height); - lpDIBh->bmiHeader.biSizeImage = bytePerLine*height; - } - ptbits = lpBits; - for( int j=0; jSetMaskBitmap( (WXHBITMAP) hbitmap ); - bitmap.SetMask( mask ); -// It will be deleted when the wxBitmap object is deleted (as of 01/1999) -/* The following can also be used but is slow to run - wxColour colour( GetMaskRed(), GetMaskGreen(), GetMaskBlue()); - wxMask *mask = new wxMask( bitmap, colour ); - bitmap.SetMask( mask ); -*/ - } - -// free allocated resources - ::SelectObject( memdc, 0 ); - ::DeleteDC( memdc ); - ::ReleaseDC(NULL, hdc); - free(lpDIBh); - free(lpBits); - -// check the wxBitmap object - if( bitmap.GetHBITMAP() ) - bitmap.SetOk( TRUE ); - else - bitmap.SetOk( FALSE ); - - return bitmap; -} - -wxImage::wxImage( const wxBitmap &bitmap ) -{ -// check the bitmap - if( !bitmap.Ok() ) - { - wxFAIL_MSG( "invalid bitmap" ); - return; - } - -// create an wxImage object - int width = bitmap.GetWidth(); - int height = bitmap.GetHeight(); - Create( width, height ); - unsigned char *data = GetData(); - if( !data ) - { - wxFAIL_MSG( "could not allocate data for image" ); - return; - } - -// calc the number of bytes per scanline and padding in the DIB - int bytePerLine = width*3; - int sizeDWORD = sizeof( DWORD ); - div_t lineBoundary = div( bytePerLine, sizeDWORD ); - int padding = 0; - if( lineBoundary.rem > 0 ) - { - padding = sizeDWORD - lineBoundary.rem; - bytePerLine += padding; - } - -// create a DIB header - int headersize = sizeof(BITMAPINFOHEADER); - LPBITMAPINFO lpDIBh = (BITMAPINFO *) malloc( headersize ); - if( !lpDIBh ) - { - wxFAIL_MSG( "could not allocate data for DIB header" ); - free( data ); - return; - } -// Fill in the DIB header - lpDIBh->bmiHeader.biSize = headersize; - lpDIBh->bmiHeader.biWidth = width; - lpDIBh->bmiHeader.biHeight = -height; - lpDIBh->bmiHeader.biSizeImage = bytePerLine * height; - lpDIBh->bmiHeader.biPlanes = 1; - lpDIBh->bmiHeader.biBitCount = 24; - lpDIBh->bmiHeader.biCompression = BI_RGB; - lpDIBh->bmiHeader.biClrUsed = 0; -// These seem not really needed for our purpose here. - lpDIBh->bmiHeader.biClrImportant = 0; - lpDIBh->bmiHeader.biXPelsPerMeter = 0; - lpDIBh->bmiHeader.biYPelsPerMeter = 0; -// memory for DIB data - unsigned char *lpBits; - lpBits = (unsigned char *) malloc( lpDIBh->bmiHeader.biSizeImage ); - if( !lpBits ) - { - wxFAIL_MSG( "could not allocate data for DIB" ); - free( data ); - free( lpDIBh ); - return; - } - -// copy data from the device-dependent bitmap to the DIB - HDC hdc = ::GetDC(NULL); - HBITMAP hbitmap; - hbitmap = (HBITMAP) bitmap.GetHBITMAP(); - ::GetDIBits( hdc, hbitmap, 0, height, lpBits, lpDIBh, DIB_RGB_COLORS ); - -// copy DIB data into the wxImage object - int i, j; - unsigned char *ptdata = data; - unsigned char *ptbits = lpBits; - for( i=0; iGetMaskBitmap() ) - { - hbitmap = (HBITMAP) bitmap.GetMask()->GetMaskBitmap(); - // memory DC created, color set, data copied, and memory DC deleted - HDC memdc = ::CreateCompatibleDC( hdc ); - ::SetTextColor( memdc, RGB( 0, 0, 0 ) ); - ::SetBkColor( memdc, RGB( 255, 255, 255 ) ); - ::GetDIBits( memdc, hbitmap, 0, height, lpBits, lpDIBh, DIB_RGB_COLORS ); - ::DeleteDC( memdc ); -// background color set to RGB(16,16,16) in consistent with wxGTK - unsigned char r=16, g=16, b=16; - ptdata = data; - ptbits = lpBits; - for( i=0; i> 3)+8) * height ); - - mask_image = gdk_image_new_bitmap( gdk_visual_get_system(), mask_data, width, height ); - - wxMask *mask = new wxMask(); - mask->m_bitmap = gdk_pixmap_new( (GdkWindow*)&gdk_root_parent, width, height, 1 ); - - bitmap.SetMask( mask ); - } - - // Retrieve depth - - GdkVisual *visual = gdk_window_get_visual( bitmap.GetPixmap() ); - if (visual == NULL) visual = gdk_window_get_visual( (GdkWindow*) &gdk_root_parent ); - int bpp = visual->depth; - - bitmap.SetDepth( bpp ); - - if ((bpp == 16) && (visual->red_mask != 0xf800)) bpp = 15; - if (bpp < 8) bpp = 8; - - // Render - - enum byte_order { RGB, RBG, BRG, BGR, GRB, GBR }; - byte_order b_o = RGB; - - if (bpp >= 24) - { - GdkVisual *visual = gdk_visual_get_system(); - if ((visual->red_mask > visual->green_mask) && (visual->green_mask > visual->blue_mask)) b_o = RGB; - else if ((visual->red_mask > visual->blue_mask) && (visual->blue_mask > visual->green_mask)) b_o = RGB; - else if ((visual->blue_mask > visual->red_mask) && (visual->red_mask > visual->green_mask)) b_o = BRG; - else if ((visual->blue_mask > visual->green_mask) && (visual->green_mask > visual->red_mask)) b_o = BGR; - else if ((visual->green_mask > visual->red_mask) && (visual->red_mask > visual->blue_mask)) b_o = GRB; - else if ((visual->green_mask > visual->blue_mask) && (visual->blue_mask > visual->red_mask)) b_o = GBR; - } - - int r_mask = GetMaskRed(); - int g_mask = GetMaskGreen(); - int b_mask = GetMaskBlue(); - - unsigned char* data = GetData(); - - int index = 0; - for (int y = 0; y < height; y++) - { - for (int x = 0; x < width; x++) - { - int r = data[index]; - index++; - int g = data[index]; - index++; - int b = data[index]; - index++; - - if (HasMask()) - { - if ((r == r_mask) && (b == b_mask) && (g == g_mask)) - gdk_image_put_pixel( mask_image, x, y, 1 ); - else - gdk_image_put_pixel( mask_image, x, y, 0 ); - } - - if (HasMask()) - { - if ((r == r_mask) && (b == b_mask) && (g == g_mask)) - gdk_image_put_pixel( mask_image, x, y, 1 ); - else - gdk_image_put_pixel( mask_image, x, y, 0 ); - } - - switch (bpp) - { - case 8: - { - int pixel = -1; - if (wxTheApp->m_colorCube) - { - pixel = wxTheApp->m_colorCube[ ((r & 0xf8) << 7) + ((g & 0xf8) << 2) + ((b & 0xf8) >> 3) ]; - } - else - { - GdkColormap *cmap = gtk_widget_get_default_colormap(); - GdkColor *colors = cmap->colors; - int max = 3 * (65536); - - for (int i = 0; i < cmap->size; i++) - { - int rdiff = (r << 8) - colors[i].red; - int gdiff = (g << 8) - colors[i].green; - int bdiff = (b << 8) - colors[i].blue; - int sum = ABS (rdiff) + ABS (gdiff) + ABS (bdiff); - if (sum < max) { pixel = i; max = sum; } - } - } - - gdk_image_put_pixel( data_image, x, y, pixel ); - - break; - } - case 15: - { - guint32 pixel = ((r & 0xf8) << 7) | ((g & 0xf8) << 2) | ((b & 0xf8) >> 3); - gdk_image_put_pixel( data_image, x, y, pixel ); - break; - } - case 16: - { - guint32 pixel = ((r & 0xf8) << 8) | ((g & 0xfc) << 3) | ((b & 0xf8) >> 3); - gdk_image_put_pixel( data_image, x, y, pixel ); - break; - } - case 32: - case 24: - { - guint32 pixel = 0; - switch (b_o) - { - case RGB: pixel = (r << 16) | (g << 8) | b; break; - case RBG: pixel = (r << 16) | (b << 8) | g; break; - case BRG: pixel = (b << 16) | (r << 8) | g; break; - case BGR: pixel = (b << 16) | (g << 8) | r; break; - case GRB: pixel = (g << 16) | (r << 8) | b; break; - case GBR: pixel = (g << 16) | (b << 8) | r; break; - } - gdk_image_put_pixel( data_image, x, y, pixel ); - } - default: break; - } - } // for - } // for - - // Blit picture - - GdkGC *data_gc = gdk_gc_new( bitmap.GetPixmap() ); - - gdk_draw_image( bitmap.GetPixmap(), data_gc, data_image, 0, 0, 0, 0, width, height ); - - gdk_image_destroy( data_image ); - gdk_gc_unref( data_gc ); - - // Blit mask - - if (HasMask()) - { - GdkGC *mask_gc = gdk_gc_new( bitmap.GetMask()->GetBitmap() ); - - gdk_draw_image( bitmap.GetMask()->GetBitmap(), mask_gc, mask_image, 0, 0, 0, 0, width, height ); - - gdk_image_destroy( mask_image ); - gdk_gc_unref( mask_gc ); - } - - return bitmap; -} - -wxImage::wxImage( const wxBitmap &bitmap ) -{ - wxCHECK_RET( bitmap.Ok(), "invalid bitmap" ); - - GdkImage *gdk_image = gdk_image_get( bitmap.GetPixmap(), - 0, 0, - bitmap.GetWidth(), bitmap.GetHeight() ); - - wxCHECK_RET( gdk_image, "couldn't create image" ); - - Create( bitmap.GetWidth(), bitmap.GetHeight() ); - char unsigned *data = GetData(); - - if (!data) - { - gdk_image_destroy( gdk_image ); - wxFAIL_MSG( "couldn't create image" ); - return; - } - - GdkImage *gdk_image_mask = (GdkImage*) NULL; - if (bitmap.GetMask()) - { - gdk_image_mask = gdk_image_get( bitmap.GetMask()->GetBitmap(), - 0, 0, - bitmap.GetWidth(), bitmap.GetHeight() ); - - SetMaskColour( 16, 16, 16 ); // anything unlikely and dividable - } - - GdkVisual *visual = gdk_window_get_visual( bitmap.GetPixmap() ); - if (visual == NULL) visual = gdk_window_get_visual( (GdkWindow*) &gdk_root_parent ); - int bpp = visual->depth; - if ((bpp == 16) && (visual->red_mask != 0xf800)) bpp = 15; - - GdkColormap *cmap = gtk_widget_get_default_colormap(); - - long pos = 0; - for (int j = 0; j < bitmap.GetHeight(); j++) - { - for (int i = 0; i < bitmap.GetWidth(); i++) - { - int pixel = gdk_image_get_pixel( gdk_image, i, j ); - if (bpp <= 8) - { - data[pos] = cmap->colors[pixel].red >> 8; - data[pos+1] = cmap->colors[pixel].green >> 8; - data[pos+2] = cmap->colors[pixel].blue >> 8; - } else if (bpp == 15) - { - data[pos] = (pixel >> 7) & 0xf8; - data[pos+1] = (pixel >> 2) & 0xf8; - data[pos+2] = (pixel << 3) & 0xf8; - } else if (bpp == 16) - { - data[pos] = (pixel >> 8) & 0xf8; - data[pos+1] = (pixel >> 3) & 0xfc; - data[pos+2] = (pixel << 3) & 0xf8; - } else - { - data[pos] = (pixel >> 16) & 0xff; - data[pos+1] = (pixel >> 8) & 0xff; - data[pos+2] = pixel & 0xff; - } - - if (gdk_image_mask) - { - int mask_pixel = gdk_image_get_pixel( gdk_image_mask, i, j ); - if (mask_pixel == 0) - { - data[pos] = 16; - data[pos+1] = 16; - data[pos+2] = 16; - } - } - - pos += 3; - } - } - - gdk_image_destroy( gdk_image ); - if (gdk_image_mask) gdk_image_destroy( gdk_image_mask ); -} - -#endif - -#ifdef __WXMOTIF__ - -#include -#include "wx/utils.h" -#include - -wxBitmap wxImage::ConvertToBitmap() const -{ - wxBitmap bitmap; - - wxCHECK_MSG( Ok(), bitmap, "invalid image" ); - - int width = GetWidth(); - int height = GetHeight(); - - bitmap.SetHeight( height ); - bitmap.SetWidth( width ); - - Display *dpy = (Display*) wxGetDisplay(); - Visual* vis = DefaultVisual( dpy, DefaultScreen( dpy ) ); - int bpp = DefaultDepth( dpy, DefaultScreen( dpy ) ); - - // Create image - - XImage *data_image = XCreateImage( dpy, vis, bpp, ZPixmap, 0, 0, width, height, 32, 0 ); - data_image->data = new char[ data_image->bytes_per_line * data_image->height ]; - - bitmap.Create( width, height, bpp ); - -/* - // Create mask - - GdkImage *mask_image = (GdkImage*) NULL; - - if (HasMask()) - { - unsigned char *mask_data = (unsigned char*)malloc( ((width >> 3)+8) * height ); - - mask_image = gdk_image_new_bitmap( gdk_visual_get_system(), mask_data, width, height ); - - wxMask *mask = new wxMask(); - mask->m_bitmap = gdk_pixmap_new( (GdkWindow*)&gdk_root_parent, width, height, 1 ); - - bitmap.SetMask( mask ); - } -*/ - - // Retrieve depth info - - XVisualInfo vinfo_template; - XVisualInfo *vi; - - vinfo_template.visual = vis; - vinfo_template.visualid = XVisualIDFromVisual( vis ); - vinfo_template.depth = bpp; - int nitem = 0; - - vi = XGetVisualInfo( dpy, VisualIDMask|VisualDepthMask, &vinfo_template, &nitem ); - - if (!vi) - { - printf("no visual.\n" ); - return wxNullBitmap; - } - - XFree( vi ); - - if ((bpp == 16) && (vi->red_mask != 0xf800)) bpp = 15; - if (bpp < 8) bpp = 8; - - // Render - - enum byte_order { RGB, RBG, BRG, BGR, GRB, GBR }; - byte_order b_o = RGB; - - if (bpp >= 24) - { - if ((vi->red_mask > vi->green_mask) && (vi->green_mask > vi->blue_mask)) b_o = RGB; - else if ((vi->red_mask > vi->blue_mask) && (vi->blue_mask > vi->green_mask)) b_o = RGB; - else if ((vi->blue_mask > vi->red_mask) && (vi->red_mask > vi->green_mask)) b_o = BRG; - else if ((vi->blue_mask > vi->green_mask) && (vi->green_mask > vi->red_mask)) b_o = BGR; - else if ((vi->green_mask > vi->red_mask) && (vi->red_mask > vi->blue_mask)) b_o = GRB; - else if ((vi->green_mask > vi->blue_mask) && (vi->blue_mask > vi->red_mask)) b_o = GBR; - } - -/* - int r_mask = GetMaskRed(); - int g_mask = GetMaskGreen(); - int b_mask = GetMaskBlue(); -*/ - - XColor colors[256]; - if (bpp == 8) - { - Colormap cmap = (Colormap) wxTheApp->GetMainColormap( dpy ); - - for (int i = 0; i < 256; i++) colors[i].pixel = i; - XQueryColors( dpy, cmap, colors, 256 ); - } - - unsigned char* data = GetData(); - - int index = 0; - for (int y = 0; y < height; y++) - { - for (int x = 0; x < width; x++) - { - int r = data[index]; - index++; - int g = data[index]; - index++; - int b = data[index]; - index++; - -/* - if (HasMask()) - { - if ((r == r_mask) && (b == b_mask) && (g == g_mask)) - gdk_image_put_pixel( mask_image, x, y, 1 ); - else - gdk_image_put_pixel( mask_image, x, y, 0 ); - } -*/ - - switch (bpp) - { - case 8: - { - int pixel = -1; -/* - if (wxTheApp->m_colorCube) - { - pixel = wxTheApp->m_colorCube - [ ((r & 0xf8) << 7) + ((g & 0xf8) << 2) + ((b & 0xf8) >> 3) ]; - } - else - { -*/ - int max = 3 * (65536); - for (int i = 0; i < 256; i++) - { - int rdiff = (r << 8) - colors[i].red; - int gdiff = (g << 8) - colors[i].green; - int bdiff = (b << 8) - colors[i].blue; - int sum = abs (rdiff) + abs (gdiff) + abs (bdiff); - if (sum < max) { pixel = i; max = sum; } - } -/* - } -*/ - XPutPixel( data_image, x, y, pixel ); - break; - } - case 15: - { - int pixel = ((r & 0xf8) << 7) | ((g & 0xf8) << 2) | ((b & 0xf8) >> 3); - XPutPixel( data_image, x, y, pixel ); - break; - } - case 16: - { - int pixel = ((r & 0xf8) << 8) | ((g & 0xfc) << 3) | ((b & 0xf8) >> 3); - XPutPixel( data_image, x, y, pixel ); - break; - } - case 32: - case 24: - { - int pixel = 0; - switch (b_o) - { - case RGB: pixel = (r << 16) | (g << 8) | b; break; - case RBG: pixel = (r << 16) | (b << 8) | g; break; - case BRG: pixel = (b << 16) | (r << 8) | g; break; - case BGR: pixel = (b << 16) | (g << 8) | r; break; - case GRB: pixel = (g << 16) | (r << 8) | b; break; - case GBR: pixel = (g << 16) | (b << 8) | r; break; - } - XPutPixel( data_image, x, y, pixel ); - } - default: break; - } - } // for - } // for - - // Blit picture - - XGCValues gcvalues; - gcvalues.foreground = BlackPixel( dpy, DefaultScreen( dpy ) ); - GC gc = XCreateGC( dpy, RootWindow ( dpy, DefaultScreen(dpy) ), GCForeground, &gcvalues ); - XPutImage( dpy, (Drawable)bitmap.GetPixmap(), gc, data_image, 0, 0, 0, 0, width, height ); - - XDestroyImage( data_image ); - XFreeGC( dpy, gc ); - -/* - // Blit mask - - if (HasMask()) - { - GdkGC *mask_gc = gdk_gc_new( bitmap.GetMask()->GetBitmap() ); - - gdk_draw_image( bitmap.GetMask()->GetBitmap(), mask_gc, mask_image, 0, 0, 0, 0, width, height ); - - gdk_image_destroy( mask_image ); - gdk_gc_unref( mask_gc ); - } -*/ - - return bitmap; -} - -wxImage::wxImage( const wxBitmap &bitmap ) -{ - wxCHECK_RET( bitmap.Ok(), "invalid bitmap" ); - - Display *dpy = (Display*) wxGetDisplay(); - Visual* vis = DefaultVisual( dpy, DefaultScreen( dpy ) ); - int bpp = DefaultDepth( dpy, DefaultScreen( dpy ) ); - - XImage *ximage = XGetImage( dpy, - (Drawable)bitmap.GetPixmap(), - 0, 0, - bitmap.GetWidth(), bitmap.GetHeight(), - AllPlanes, ZPixmap ); - - wxCHECK_RET( ximage, "couldn't create image" ); - - Create( bitmap.GetWidth(), bitmap.GetHeight() ); - char unsigned *data = GetData(); - - if (!data) - { - XDestroyImage( ximage ); - wxFAIL_MSG( "couldn't create image" ); - return; - } - -/* - GdkImage *gdk_image_mask = (GdkImage*) NULL; - if (bitmap.GetMask()) - { - gdk_image_mask = gdk_image_get( bitmap.GetMask()->GetBitmap(), - 0, 0, - bitmap.GetWidth(), bitmap.GetHeight() ); - - SetMaskColour( 16, 16, 16 ); // anything unlikely and dividable - } -*/ - - // Retrieve depth info - - XVisualInfo vinfo_template; - XVisualInfo *vi; - - vinfo_template.visual = vis; - vinfo_template.visualid = XVisualIDFromVisual( vis ); - vinfo_template.depth = bpp; - int nitem = 0; - - vi = XGetVisualInfo( dpy, VisualIDMask|VisualDepthMask, &vinfo_template, &nitem ); - - if (!vi) - { - printf("no visual.\n" ); - return; - } - - if ((bpp == 16) && (vi->red_mask != 0xf800)) bpp = 15; - - XFree( vi ); - - XColor colors[256]; - if (bpp == 8) - { - Colormap cmap = (Colormap)wxTheApp->GetMainColormap( dpy ); - - for (int i = 0; i < 256; i++) colors[i].pixel = i; - XQueryColors( dpy, cmap, colors, 256 ); - } - - long pos = 0; - for (int j = 0; j < bitmap.GetHeight(); j++) - { - for (int i = 0; i < bitmap.GetWidth(); i++) - { - int pixel = XGetPixel( ximage, i, j ); - if (bpp <= 8) - { - data[pos] = colors[pixel].red >> 8; - data[pos+1] = colors[pixel].green >> 8; - data[pos+2] = colors[pixel].blue >> 8; - } else if (bpp == 15) - { - data[pos] = (pixel >> 7) & 0xf8; - data[pos+1] = (pixel >> 2) & 0xf8; - data[pos+2] = (pixel << 3) & 0xf8; - } else if (bpp == 16) - { - data[pos] = (pixel >> 8) & 0xf8; - data[pos+1] = (pixel >> 3) & 0xfc; - data[pos+2] = (pixel << 3) & 0xf8; - } else - { - data[pos] = (pixel >> 16) & 0xff; - data[pos+1] = (pixel >> 8) & 0xff; - data[pos+2] = pixel & 0xff; - } - -/* - if (gdk_image_mask) - { - int mask_pixel = gdk_image_get_pixel( gdk_image_mask, i, j ); - if (mask_pixel == 0) - { - data[pos] = 16; - data[pos+1] = 16; - data[pos+2] = 16; - } - } -*/ - - pos += 3; - } - } - - XDestroyImage( ximage ); -/* - if (gdk_image_mask) gdk_image_destroy( gdk_image_mask ); -*/ -} -#endif diff --git a/src/common/intl.cpp b/src/common/intl.cpp deleted file mode 100644 index 3d3ca71c45..0000000000 --- a/src/common/intl.cpp +++ /dev/null @@ -1,607 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: intl.cpp -// Purpose: Internationalization and localisation for wxWindows -// Author: Vadim Zeitlin -// Modified by: -// Created: 29/01/98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -// ============================================================================ -// declaration -// ============================================================================ - -// ---------------------------------------------------------------------------- -// headers -// ---------------------------------------------------------------------------- - -#ifdef __GNUG__ -#pragma implementation "intl.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -// standard headers -#include - -// wxWindows -#include "wx/defs.h" -#include "wx/string.h" -#include "wx/intl.h" -#include "wx/file.h" -#include "wx/log.h" -#include "wx/utils.h" - -#include - -// ---------------------------------------------------------------------------- -// constants -// ---------------------------------------------------------------------------- - -// magic number identifying the .mo format file -const size_t32 MSGCATALOG_MAGIC = 0x950412de; -const size_t32 MSGCATALOG_MAGIC_SW = 0xde120495; - -// extension of ".mo" files -#define MSGCATALOG_EXTENSION ".mo" - -// ---------------------------------------------------------------------------- -// global functions -// ---------------------------------------------------------------------------- - -// suppress further error messages about missing translations -// (if you don't have one catalog file, you wouldn't like to see the -// error message for each string in it, so normally it's given only -// once) -void wxSuppressTransErrors(); - -// restore the logging -void wxRestoreTransErrors(); - -// get the current state -bool wxIsLoggingTransErrors(); - -// get the current locale object (## may be NULL!) -extern wxLocale *wxSetLocale(wxLocale *pLocale); - -// ---------------------------------------------------------------------------- -// wxMsgCatalog corresponds to one disk-file message catalog. -// -// This is a "low-level" class and is used only by wxLocale (that's why -// it's designed to be stored in a linked list) -// ---------------------------------------------------------------------------- - -class wxMsgCatalog -{ -public: - // ctor & dtor - wxMsgCatalog(); - ~wxMsgCatalog(); - - // load the catalog from disk (szDirPrefix corresponds to language) - bool Load(const char *szDirPrefix, const char *szName); - bool IsLoaded() const { return m_pData != NULL; } - - // get name of the catalog - const char *GetName() const { return m_pszName; } - - // get the translated string: returns NULL if not found - const char *GetString(const char *sz) const; - - // public variable pointing to the next element in a linked list (or NULL) - wxMsgCatalog *m_pNext; - -private: - // this implementation is binary compatible with GNU gettext() version 0.10 - - // an entry in the string table - struct wxMsgTableEntry - { - size_t32 nLen; // length of the string - size_t32 ofsString; // pointer to the string - }; - - // header of a .mo file - struct wxMsgCatalogHeader - { - size_t32 magic, // offset +00: magic id - revision, // +04: revision - numStrings; // +08: number of strings in the file - size_t32 ofsOrigTable, // +0C: start of original string table - ofsTransTable; // +10: start of translated string table - size_t32 nHashSize, // +14: hash table size - ofsHashTable; // +18: offset of hash table start - }; - - // all data is stored here, NULL if no data loaded - size_t8 *m_pData; - - // data description - size_t32 m_numStrings, // number of strings in this domain - m_nHashSize; // number of entries in hash table - size_t32 *m_pHashTable; // pointer to hash table - wxMsgTableEntry *m_pOrigTable, // pointer to original strings - *m_pTransTable; // translated - - const char *StringAtOfs(wxMsgTableEntry *pTable, size_t32 index) const - { return (const char *)(m_pData + Swap(pTable[index].ofsString)); } - - // utility functions - // calculate the hash value of given string - static inline size_t32 GetHash(const char *sz); - // big<->little endian - inline size_t32 Swap(size_t32 ui) const; - - // internal state - bool HasHashTable() const // true if hash table is present - { return m_nHashSize > 2 && m_pHashTable != NULL; } - - bool m_bSwapped; // wrong endianness? - - char *m_pszName; // name of the domain -}; - -// ---------------------------------------------------------------------------- -// global variables -// ---------------------------------------------------------------------------- - -// the list of the directories to search for message catalog files -static wxArrayString s_searchPrefixes; - -// ============================================================================ -// implementation -// ============================================================================ - -// ---------------------------------------------------------------------------- -// wxMsgCatalog class -// ---------------------------------------------------------------------------- - -// calculate hash value using the so called hashpjw function by P.J. Weinberger -// [see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools] -size_t32 wxMsgCatalog::GetHash(const char *sz) -{ - #define HASHWORDBITS 32 // the length of size_t32 - - size_t32 hval = 0; - size_t32 g; - while ( *sz != '\0' ) { - hval <<= 4; - hval += (size_t32)*sz++; - g = hval & ((size_t32)0xf << (HASHWORDBITS - 4)); - if ( g != 0 ) { - hval ^= g >> (HASHWORDBITS - 8); - hval ^= g; - } - } - - return hval; -} - -// swap the 2 halves of 32 bit integer if needed -size_t32 wxMsgCatalog::Swap(size_t32 ui) const -{ - return m_bSwapped ? (ui << 24) | ((ui & 0xff00) << 8) | - ((ui >> 8) & 0xff00) | (ui >> 24) - : ui; -} - -wxMsgCatalog::wxMsgCatalog() -{ - m_pData = NULL; - m_pszName = NULL; -} - -wxMsgCatalog::~wxMsgCatalog() -{ - wxDELETEA(m_pData); - wxDELETEA(m_pszName); -} - -// small class to suppress the translation erros until exit from current scope -class NoTransErr -{ -public: - NoTransErr() { wxSuppressTransErrors(); } - ~NoTransErr() { wxRestoreTransErrors(); } -}; - -// return all directories to search for given prefix -static wxString GetAllMsgCatalogSubdirs(const char *prefix, - const char *lang) -{ - wxString searchPath; - - // search first in prefix/fr/LC_MESSAGES, then in prefix/fr and finally in - // prefix (assuming the language is 'fr') - searchPath << prefix << FILE_SEP_PATH << lang << FILE_SEP_PATH - << "LC_MESSAGES" << PATH_SEP - << prefix << FILE_SEP_PATH << lang << PATH_SEP - << prefix << PATH_SEP; - - return searchPath; -} - -// construct the search path for the given language -static wxString GetFullSearchPath(const char *lang) -{ - wxString searchPath; - - // first take the entries explicitly added by the program - size_t count = s_searchPrefixes.Count(); - for ( size_t n = 0; n < count; n++ ) - { - searchPath << GetAllMsgCatalogSubdirs(s_searchPrefixes[n], lang) - << PATH_SEP; - } - - // then take the current directory - // FIXME it should be the directory of the executable - searchPath << GetAllMsgCatalogSubdirs(".", lang) << PATH_SEP; - - // and finally add some standard ones - searchPath - << GetAllMsgCatalogSubdirs("/usr/share/locale", lang) << PATH_SEP - << GetAllMsgCatalogSubdirs("/usr/lib/locale", lang) << PATH_SEP - << GetAllMsgCatalogSubdirs("/usr/local/share/locale", lang); - - return searchPath; -} - -// open disk file and read in it's contents -bool wxMsgCatalog::Load(const char *szDirPrefix, const char *szName) -{ - // FIXME VZ: I forgot the exact meaning of LC_PATH - anyone to remind me? -#if 0 - const char *pszLcPath = getenv("LC_PATH"); - if ( pszLcPath != NULL ) - strPath += pszLcPath + wxString(szDirPrefix) + MSG_PATH; -#endif // 0 - - wxString searchPath = GetFullSearchPath(szDirPrefix); - const char *sublocale = strchr(szDirPrefix, '_'); - if ( sublocale ) - { - // also add just base locale name: for things like "fr_BE" (belgium - // french) we should use "fr" if no belgium specific message catalogs - // exist - searchPath << GetFullSearchPath(wxString(szDirPrefix). - Left((size_t)(sublocale - szDirPrefix))) - << PATH_SEP; - } - - wxString strFile = szName; - strFile += MSGCATALOG_EXTENSION; - - // don't give translation errors here because the wxstd catalog might - // not yet be loaded (and it's normal) - // - // (we're using an object because we have several return paths) - NoTransErr noTransErr; - - wxLogVerbose(_("looking for catalog '%s' in path '%s'."), - szName, searchPath.c_str()); - - wxString strFullName; - if ( !wxFindFileInPath(&strFullName, searchPath, strFile) ) { - wxLogWarning(_("catalog file for domain '%s' not found."), szName); - return FALSE; - } - - // open file - wxLogVerbose(_("using catalog '%s' from '%s'."), - szName, strFullName.c_str()); - - wxFile fileMsg(strFullName); - if ( !fileMsg.IsOpened() ) - return FALSE; - - // get the file size - off_t nSize = fileMsg.Length(); - if ( nSize == wxInvalidOffset ) - return FALSE; - - // read the whole file in memory - m_pData = new size_t8[nSize]; - if ( fileMsg.Read(m_pData, nSize) != nSize ) { - wxDELETEA(m_pData); - return FALSE; - } - - // examine header - bool bValid = (size_t)nSize > sizeof(wxMsgCatalogHeader); - - wxMsgCatalogHeader *pHeader = (wxMsgCatalogHeader *)m_pData; - if ( bValid ) { - // we'll have to swap all the integers if it's true - m_bSwapped = pHeader->magic == MSGCATALOG_MAGIC_SW; - - // check the magic number - bValid = m_bSwapped || pHeader->magic == MSGCATALOG_MAGIC; - } - - if ( !bValid ) { - // it's either too short or has incorrect magic number - wxLogWarning(_("'%s' is not a valid message catalog."), strFullName.c_str()); - - wxDELETEA(m_pData); - return FALSE; - } - - // initialize - m_numStrings = Swap(pHeader->numStrings); - m_pOrigTable = (wxMsgTableEntry *)(m_pData + - Swap(pHeader->ofsOrigTable)); - m_pTransTable = (wxMsgTableEntry *)(m_pData + - Swap(pHeader->ofsTransTable)); - - m_nHashSize = Swap(pHeader->nHashSize); - m_pHashTable = (size_t32 *)(m_pData + Swap(pHeader->ofsHashTable)); - - m_pszName = new char[strlen(szName) + 1]; - strcpy(m_pszName, szName); - - // everything is fine - return TRUE; -} - -// search for a string -const char *wxMsgCatalog::GetString(const char *szOrig) const -{ - if ( szOrig == NULL ) - return NULL; - - if ( HasHashTable() ) { // use hash table for lookup if possible - size_t32 nHashVal = GetHash(szOrig); - size_t32 nIndex = nHashVal % m_nHashSize; - - size_t32 nIncr = 1 + (nHashVal % (m_nHashSize - 2)); - - while ( TRUE ) { - size_t32 nStr = Swap(m_pHashTable[nIndex]); - if ( nStr == 0 ) - return NULL; - - if ( strcmp(szOrig, StringAtOfs(m_pOrigTable, nStr - 1)) == 0 ) - return StringAtOfs(m_pTransTable, nStr - 1); - - if ( nIndex >= m_nHashSize - nIncr) - nIndex -= m_nHashSize - nIncr; - else - nIndex += nIncr; - } - } - else { // no hash table: use default binary search - size_t32 bottom = 0, - top = m_numStrings, - current; - while ( bottom < top ) { - current = (bottom + top) / 2; - int res = strcmp(szOrig, StringAtOfs(m_pOrigTable, current)); - if ( res < 0 ) - top = current; - else if ( res > 0 ) - bottom = current + 1; - else // found! - return StringAtOfs(m_pTransTable, current); - } - } - - // not found - return NULL; -} - -// ---------------------------------------------------------------------------- -// wxLocale -// ---------------------------------------------------------------------------- - -wxLocale::wxLocale() -{ - m_pszOldLocale = NULL; - m_pMsgCat = NULL; -} - -// NB: this function has (desired) side effect of changing current locale -bool wxLocale::Init(const char *szName, - const char *szShort, - const char *szLocale, - bool bLoadDefault) -{ - m_strLocale = szName; - m_strShort = szShort; - - // change current locale (default: same as long name) - if ( szLocale == NULL ) - szLocale = szName; - m_pszOldLocale = setlocale(LC_ALL, szLocale); - if ( m_pszOldLocale == NULL ) - wxLogError(_("locale '%s' can not be set."), szLocale); - - // the short name will be used to look for catalog files as well, - // so we need something here - if ( m_strShort.IsEmpty() ) { - // FIXME I don't know how these 2 letter abbreviations are formed, - // this wild guess is surely wrong - m_strShort = wxToLower(szLocale[0]) + wxToLower(szLocale[1]); - } - - // save the old locale to be able to restore it later - m_pOldLocale = wxSetLocale(this); - - // load the default catalog with wxWindows standard messages - m_pMsgCat = NULL; - bool bOk = TRUE; - if ( bLoadDefault ) - bOk = AddCatalog("wxstd"); - - return bOk; -} - -void wxLocale::AddCatalogLookupPathPrefix(const wxString& prefix) -{ - if ( s_searchPrefixes.Index(prefix) == wxNOT_FOUND ) - { - s_searchPrefixes.Add(prefix); - } - //else: already have it -} - -// clean up -wxLocale::~wxLocale() -{ - // free memory - wxMsgCatalog *pTmpCat; - while ( m_pMsgCat != NULL ) { - pTmpCat = m_pMsgCat; - m_pMsgCat = m_pMsgCat->m_pNext; - delete pTmpCat; - } - - // restore old locale - wxSetLocale(m_pOldLocale); - setlocale(LC_ALL, m_pszOldLocale); -} - -// get the translation of given string in current locale -const char *wxLocale::GetString(const char *szOrigString, - const char *szDomain) const -{ - wxASSERT( szOrigString != NULL ); // would be pretty silly - - const char *pszTrans = NULL; - - wxMsgCatalog *pMsgCat; - if ( szDomain != NULL ) { - pMsgCat = FindCatalog(szDomain); - - // does the catalog exist? - if ( pMsgCat != NULL ) - pszTrans = pMsgCat->GetString(szOrigString); - } - else { - // search in all domains - for ( pMsgCat = m_pMsgCat; pMsgCat != NULL; pMsgCat = pMsgCat->m_pNext ) { - pszTrans = pMsgCat->GetString(szOrigString); - if ( pszTrans != NULL ) // take the first found - break; - } - } - - if ( pszTrans == NULL ) { - if ( wxIsLoggingTransErrors() ) { - // suppress further error messages if we're not debugging: this avoids - // flooding the user with messages about each and every missing string if, - // for example, a whole catalog file is missing. - - // do it before calling LogWarning to prevent infinite recursion! -#ifdef __WXDEBUG__ - NoTransErr noTransErr; -#else // !debug - wxSuppressTransErrors(); -#endif // debug/!debug - - if ( szDomain != NULL ) - { - wxLogWarning(_("string '%s' not found in domain '%s' for locale '%s'."), - szOrigString, szDomain, m_strLocale.c_str()); - } - else - { - wxLogWarning(_("string '%s' not found in locale '%s'."), - szOrigString, m_strLocale.c_str()); - } - } - - return szOrigString; - } - else - return pszTrans; -} - -// find catalog by name in a linked list, return NULL if !found -wxMsgCatalog *wxLocale::FindCatalog(const char *szDomain) const -{ -// linear search in the linked list - wxMsgCatalog *pMsgCat; - for ( pMsgCat = m_pMsgCat; pMsgCat != NULL; pMsgCat = pMsgCat->m_pNext ) { - if ( Stricmp(pMsgCat->GetName(), szDomain) == 0 ) - return pMsgCat; - } - - return NULL; -} - -// check if the given catalog is loaded -bool wxLocale::IsLoaded(const char *szDomain) const -{ - return FindCatalog(szDomain) != NULL; -} - -// add a catalog to our linked list -bool wxLocale::AddCatalog(const char *szDomain) -{ - wxMsgCatalog *pMsgCat = new wxMsgCatalog; - - if ( pMsgCat->Load(m_strShort, szDomain) ) { - // add it to the head of the list so that in GetString it will - // be searched before the catalogs added earlier - pMsgCat->m_pNext = m_pMsgCat; - m_pMsgCat = pMsgCat; - - return TRUE; - } - else { - // don't add it because it couldn't be loaded anyway - delete pMsgCat; - - return FALSE; - } -} - -// ---------------------------------------------------------------------------- -// global functions and variables -// ---------------------------------------------------------------------------- - -// translation errors logging -// -------------------------- - -static bool gs_bGiveTransErrors = TRUE; - -void wxSuppressTransErrors() -{ - gs_bGiveTransErrors = FALSE; -} - -void wxRestoreTransErrors() -{ - gs_bGiveTransErrors = TRUE; -} - -bool wxIsLoggingTransErrors() -{ - return gs_bGiveTransErrors; -} - -// retrieve/change current locale -// ------------------------------ - -// the current locale object -wxLocale *g_pLocale = NULL; - -wxLocale *wxGetLocale() -{ - return g_pLocale; -} - -wxLocale *wxSetLocale(wxLocale *pLocale) -{ - wxLocale *pOld = g_pLocale; - g_pLocale = pLocale; - return pOld; -} diff --git a/src/common/ipcbase.cpp b/src/common/ipcbase.cpp deleted file mode 100644 index 717eb20c60..0000000000 --- a/src/common/ipcbase.cpp +++ /dev/null @@ -1,35 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: ipcbase.cpp -// Purpose: IPC base classes -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "ipcbase.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/defs.h" -#endif - -#include "wx/ipcbase.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_CLASS(wxServerBase, wxObject) -IMPLEMENT_CLASS(wxClientBase, wxObject) -IMPLEMENT_CLASS(wxConnectionBase, wxObject) -#endif - - diff --git a/src/common/layout.cpp b/src/common/layout.cpp deleted file mode 100644 index b98de42ee5..0000000000 --- a/src/common/layout.cpp +++ /dev/null @@ -1,1727 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: layout.cpp -// Purpose: Constraint layout system classes -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "layout.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#include "wx/defs.h" - -#ifndef WX_PRECOMP -#include "wx/window.h" -#include "wx/utils.h" -#include "wx/dialog.h" -#include "wx/msgdlg.h" -#include -#endif - -#include "wx/layout.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxIndividualLayoutConstraint, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxLayoutConstraints, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxSizer, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxRowColSizer, wxSizer) -IMPLEMENT_DYNAMIC_CLASS(wxSpacingSizer, wxSizer) -#endif - -/* -TODO: - - Non shrink-to-fit row-col behaviour. - - Give justification styles, so can e.g. centre - the rows & cols, distribute the available space... - - Shrink-to-fit: should resize outer window (e.g. dialog box) - if directly associated with this kind of window. - - How to deal with a rowcol that stretches in one direction - but shrinks-to-fit in other. E.g. a horizontal toolbar: the width - stretches to fit the frame, but the height is constant - or wraps around contents. The algorithm currently assumes - both dimensions have the same behaviour. Could assume a constant - height (absolute value). - - rowcol where each row or column is aligned (length of - largest element determines spacing) - - Groupbox sizer - - Analyze aesthetic dialog boxes and implement using sizers. - - What reuseable components can we provide? E.g. Ok/Cancel/Help - group of buttons. - - use wxStaticItems for aesthetic dialogs. - -*/ - -// Find margin sizes if a sizer, or zero otherwise -int wxSizerMarginX(wxWindow *win) -{ - if ( win->IsKindOf(CLASSINFO(wxSizer)) ) - { - wxSizer *sizer = (wxSizer *)win; - return sizer->GetBorderX(); - } - else - return 0; -} - -int wxSizerMarginY(wxWindow *win) -{ - if ( win->IsKindOf(CLASSINFO(wxSizer)) ) - { - wxSizer *sizer = (wxSizer *)win; - return sizer->GetBorderY(); - } - else - return 0; -} - - -wxIndividualLayoutConstraint::wxIndividualLayoutConstraint() -{ - myEdge = wxTop; relationship = wxUnconstrained; margin = 0; value = 0; percent = 0; otherEdge = wxTop; - done = FALSE; otherWin = (wxWindow *) NULL; -} - -wxIndividualLayoutConstraint::~wxIndividualLayoutConstraint() -{ -} - -void wxIndividualLayoutConstraint::Set(wxRelationship rel, wxWindow *otherW, wxEdge otherE, int val, int marg) -{ - relationship = rel; otherWin = otherW; otherEdge = otherE; value = val; margin = marg; -} - -void wxIndividualLayoutConstraint::LeftOf(wxWindow *sibling, int marg) -{ Set(wxLeftOf, sibling, wxLeft, 0, marg); } - -void wxIndividualLayoutConstraint::RightOf(wxWindow *sibling, int marg) -{ Set(wxRightOf, sibling, wxRight, 0, marg); } - -void wxIndividualLayoutConstraint::Above(wxWindow *sibling, int marg) -{ Set(wxAbove, sibling, wxTop, 0, marg); } - -void wxIndividualLayoutConstraint::Below(wxWindow *sibling, int marg) -{ Set(wxBelow, sibling, wxBottom, 0, marg); } - -// -// 'Same edge' alignment -// -void wxIndividualLayoutConstraint::SameAs(wxWindow *otherW, wxEdge edge, int marg) -{ Set(wxPercentOf, otherW, edge, 0, marg); percent = 100; } - -// The edge is a percentage of the other window's edge -void wxIndividualLayoutConstraint::PercentOf(wxWindow *otherW, wxEdge wh, int per) -{ otherWin = otherW; relationship = wxPercentOf; percent = per; - otherEdge = wh; -} - -// -// Edge has absolute value -// -void wxIndividualLayoutConstraint::Absolute(int val) -{ value = val; relationship = wxAbsolute; } - -// Reset constraint if it mentions otherWin -bool wxIndividualLayoutConstraint::ResetIfWin(wxWindow *otherW) -{ - if (otherW == otherWin) - { - myEdge = wxTop; relationship = wxAsIs; margin = 0; value = 0; percent = 0; otherEdge = wxTop; - otherWin = (wxWindow *) NULL; - return TRUE; - } - else - return FALSE; -} - -// Try to satisfy constraint -bool wxIndividualLayoutConstraint::SatisfyConstraint(wxLayoutConstraints *constraints, wxWindow *win) -{ - if (relationship == wxAbsolute) - { - done = TRUE; - return TRUE; - } - - switch (myEdge) - { - case wxLeft: - { - switch (relationship) - { - case wxLeftOf: - { - // We can know this edge if: otherWin is win's parent, - // or otherWin has a satisfied constraint, or - // otherWin has no constraint. - int edgePos = GetEdge(otherEdge, win, otherWin); - if (edgePos != -1) - { - value = edgePos - margin; - done = TRUE; - return TRUE; - } - else - return FALSE; - } - case wxRightOf: - { - int edgePos = GetEdge(otherEdge, win, otherWin); - if (edgePos != -1) - { - value = edgePos + margin; - done = TRUE; - return TRUE; - } - else - return FALSE; - } - case wxPercentOf: - { - int edgePos = GetEdge(otherEdge, win, otherWin); - if (edgePos != -1) - { - value = (int)(edgePos*(((float)percent)*0.01) + margin); - done = TRUE; - return TRUE; - } - else - return FALSE; - } - case wxUnconstrained: - { - // We know the left-hand edge position if we know - // the right-hand edge and we know the width; OR if we know the centre and the width. - if (constraints->right.GetDone() && constraints->width.GetDone()) - { - value = (constraints->right.GetValue() - constraints->width.GetValue() + margin); - done = TRUE; - return TRUE; - } - else if (constraints->centreX.GetDone() && constraints->width.GetDone()) - { - value = (int)(constraints->centreX.GetValue() - (constraints->width.GetValue()/2) + margin); - done = TRUE; - return TRUE; - } - else - return FALSE; - } - case wxAsIs: - { - int y; - win->GetPosition(&value, &y); - done = TRUE; - return TRUE; - } - default: - break; - } - break; - } - case wxRight: - { - switch (relationship) - { - case wxLeftOf: - { - // We can know this edge if: otherWin is win's parent, - // or otherWin has a satisfied constraint, or - // otherWin has no constraint. - int edgePos = GetEdge(otherEdge, win, otherWin); - if (edgePos != -1) - { - value = edgePos - margin; - done = TRUE; - return TRUE; - } - else - return FALSE; - } - case wxRightOf: - { - int edgePos = GetEdge(otherEdge, win, otherWin); - if (edgePos != -1) - { - value = edgePos + margin; - done = TRUE; - return TRUE; - } - else - return FALSE; - } - case wxPercentOf: - { - int edgePos = GetEdge(otherEdge, win, otherWin); - if (edgePos != -1) - { - value = (int)(edgePos*(((float)percent)*0.01) - margin); - done = TRUE; - return TRUE; - } - else - return FALSE; - } - case wxUnconstrained: - { - // We know the right-hand edge position if we know - // the left-hand edge and we know the width, OR if we know the - // centre edge and the width. - if (constraints->left.GetDone() && constraints->width.GetDone()) - { - value = (constraints->left.GetValue() + constraints->width.GetValue() - margin); - done = TRUE; - return TRUE; - } - else if (constraints->centreX.GetDone() && constraints->width.GetDone()) - { - value = (int)(constraints->centreX.GetValue() + (constraints->width.GetValue()/2) - margin); - done = TRUE; - return TRUE; - } - else - return FALSE; - } - case wxAsIs: - { - int x, y; - int w, h; - win->GetSize(&w, &h); - win->GetPosition(&x, &y); - value = x + w; - done = TRUE; - return TRUE; - } - default: - break; - } - break; - } - case wxTop: - { - switch (relationship) - { - case wxAbove: - { - // We can know this edge if: otherWin is win's parent, - // or otherWin has a satisfied constraint, or - // otherWin has no constraint. - int edgePos = GetEdge(otherEdge, win, otherWin); - if (edgePos != -1) - { - value = edgePos - margin; - done = TRUE; - return TRUE; - } - else - return FALSE; - } - case wxBelow: - { - int edgePos = GetEdge(otherEdge, win, otherWin); - if (edgePos != -1) - { - value = edgePos + margin; - done = TRUE; - return TRUE; - } - else - return FALSE; - } - case wxPercentOf: - { - int edgePos = GetEdge(otherEdge, win, otherWin); - if (edgePos != -1) - { - value = (int)(edgePos*(((float)percent)*0.01) + margin); - done = TRUE; - return TRUE; - } - else - return FALSE; - } - case wxUnconstrained: - { - // We know the top edge position if we know - // the bottom edge and we know the height; OR if we know the centre - // edge and the height. - if (constraints->bottom.GetDone() && constraints->height.GetDone()) - { - value = (constraints->bottom.GetValue() - constraints->height.GetValue() + margin); - done = TRUE; - return TRUE; - } - else if (constraints->centreY.GetDone() && constraints->height.GetDone()) - { - value = (constraints->centreY.GetValue() - (constraints->height.GetValue()/2) + margin); - done = TRUE; - return TRUE; - } - else - return FALSE; - } - case wxAsIs: - { - int x; - win->GetPosition(&x, &value); - done = TRUE; - return TRUE; - } - default: - break; - } - break; - } - case wxBottom: - { - switch (relationship) - { - case wxAbove: - { - // We can know this edge if: otherWin is win's parent, - // or otherWin has a satisfied constraint, or - // otherWin has no constraint. - int edgePos = GetEdge(otherEdge, win, otherWin); - if (edgePos != -1) - { - value = edgePos + margin; - done = TRUE; - return TRUE; - } - else - return FALSE; - } - case wxBelow: - { - int edgePos = GetEdge(otherEdge, win, otherWin); - if (edgePos != -1) - { - value = edgePos - margin; - done = TRUE; - return TRUE; - } - else - return FALSE; - } - case wxPercentOf: - { - int edgePos = GetEdge(otherEdge, win, otherWin); - if (edgePos != -1) - { - value = (int)(edgePos*(((float)percent)*0.01) - margin); - done = TRUE; - return TRUE; - } - else - return FALSE; - } - case wxUnconstrained: - { - // We know the bottom edge position if we know - // the top edge and we know the height; OR if we know the - // centre edge and the height. - if (constraints->top.GetDone() && constraints->height.GetDone()) - { - value = (constraints->top.GetValue() + constraints->height.GetValue() - margin); - done = TRUE; - return TRUE; - } - else if (constraints->centreY.GetDone() && constraints->height.GetDone()) - { - value = (constraints->centreY.GetValue() + (constraints->height.GetValue()/2) - margin); - done = TRUE; - return TRUE; - } - else - return FALSE; - } - case wxAsIs: - { - int x, y; - int w, h; - win->GetSize(&w, &h); - win->GetPosition(&x, &y); - value = h + y; - done = TRUE; - return TRUE; - } - default: - break; - } - break; - } - case wxCentreX: - { - switch (relationship) - { - case wxLeftOf: - { - // We can know this edge if: otherWin is win's parent, - // or otherWin has a satisfied constraint, or - // otherWin has no constraint. - int edgePos = GetEdge(otherEdge, win, otherWin); - if (edgePos != -1) - { - value = edgePos - margin; - done = TRUE; - return TRUE; - } - else - return FALSE; - } - case wxRightOf: - { - int edgePos = GetEdge(otherEdge, win, otherWin); - if (edgePos != -1) - { - value = edgePos + margin; - done = TRUE; - return TRUE; - } - else - return FALSE; - } - case wxPercentOf: - { - int edgePos = GetEdge(otherEdge, win, otherWin); - if (edgePos != -1) - { - value = (int)(edgePos*(((float)percent)*0.01) + margin); - done = TRUE; - return TRUE; - } - else - return FALSE; - } - case wxUnconstrained: - { - // We know the centre position if we know - // the left-hand edge and we know the width, OR - // the right-hand edge and the width - if (constraints->left.GetDone() && constraints->width.GetDone()) - { - value = (int)(constraints->left.GetValue() + (constraints->width.GetValue()/2) + margin); - done = TRUE; - return TRUE; - } - else if (constraints->right.GetDone() && constraints->width.GetDone()) - { - value = (int)(constraints->left.GetValue() - (constraints->width.GetValue()/2) + margin); - done = TRUE; - return TRUE; - } - else - return FALSE; - } - default: - break; - } - break; - } - case wxCentreY: - { - switch (relationship) - { - case wxAbove: - { - // We can know this edge if: otherWin is win's parent, - // or otherWin has a satisfied constraint, or - // otherWin has no constraint. - int edgePos = GetEdge(otherEdge, win, otherWin); - if (edgePos != -1) - { - value = edgePos - margin; - done = TRUE; - return TRUE; - } - else - return FALSE; - } - case wxBelow: - { - int edgePos = GetEdge(otherEdge, win, otherWin); - if (edgePos != -1) - { - value = edgePos + margin; - done = TRUE; - return TRUE; - } - else - return FALSE; - } - case wxPercentOf: - { - int edgePos = GetEdge(otherEdge, win, otherWin); - if (edgePos != -1) - { - value = (int)(edgePos*(((float)percent)*0.01) + margin); - done = TRUE; - return TRUE; - } - else - return FALSE; - } - case wxUnconstrained: - { - // We know the centre position if we know - // the top edge and we know the height, OR - // the bottom edge and the height. - if (constraints->bottom.GetDone() && constraints->height.GetDone()) - { - value = (int)(constraints->bottom.GetValue() - (constraints->height.GetValue()/2) + margin); - done = TRUE; - return TRUE; - } - else if (constraints->top.GetDone() && constraints->height.GetDone()) - { - value = (int)(constraints->top.GetValue() + (constraints->height.GetValue()/2) + margin); - done = TRUE; - return TRUE; - } - else - return FALSE; - } - default: - break; - } - break; - } - case wxWidth: - { - switch (relationship) - { - case wxPercentOf: - { - int edgePos = GetEdge(otherEdge, win, otherWin); - if (edgePos != -1) - { - value = (int)(edgePos*(((float)percent)*0.01)); - done = TRUE; - return TRUE; - } - else - return FALSE; - } - case wxAsIs: - { - if (win) - { - int h; - win->GetSize(&value, &h); - done = TRUE; - return TRUE; - } - else return FALSE; - } - case wxUnconstrained: - { - // We know the width if we know the left edge and the right edge, OR - // if we know the left edge and the centre, OR - // if we know the right edge and the centre - if (constraints->left.GetDone() && constraints->right.GetDone()) - { - value = constraints->right.GetValue() - constraints->left.GetValue(); - done = TRUE; - return TRUE; - } - else if (constraints->centreX.GetDone() && constraints->left.GetDone()) - { - value = (int)(2*(constraints->centreX.GetValue() - constraints->left.GetValue())); - done = TRUE; - return TRUE; - } - else if (constraints->centreX.GetDone() && constraints->right.GetDone()) - { - value = (int)(2*(constraints->right.GetValue() - constraints->centreX.GetValue())); - done = TRUE; - return TRUE; - } - else - return FALSE; - } - default: - break; - } - break; - } - case wxHeight: - { - switch (relationship) - { - case wxPercentOf: - { - int edgePos = GetEdge(otherEdge, win, otherWin); - if (edgePos != -1) - { - value = (int)(edgePos*(((float)percent)*0.01)); - done = TRUE; - return TRUE; - } - else - return FALSE; - } - case wxAsIs: - { - if (win) - { - int w; - win->GetSize(&w, &value); - done = TRUE; - return TRUE; - } - else return FALSE; - } - case wxUnconstrained: - { - // We know the height if we know the top edge and the bottom edge, OR - // if we know the top edge and the centre, OR - // if we know the bottom edge and the centre - if (constraints->top.GetDone() && constraints->bottom.GetDone()) - { - value = constraints->bottom.GetValue() - constraints->top.GetValue(); - done = TRUE; - return TRUE; - } - else if (constraints->top.GetDone() && constraints->centreY.GetDone()) - { - value = (int)(2*(constraints->centreY.GetValue() - constraints->top.GetValue())); - done = TRUE; - return TRUE; - } - else if (constraints->bottom.GetDone() && constraints->centreY.GetDone()) - { - value = (int)(2*(constraints->bottom.GetValue() - constraints->centreY.GetValue())); - done = TRUE; - return TRUE; - } - else - return FALSE; - } - default: - break; - } - break; - } - default: - break; - } - return FALSE; -} - -// Get the value of this edge or dimension, or if this -// is not determinable, -1. -int wxIndividualLayoutConstraint::GetEdge(wxEdge which, - wxWindow *thisWin, - wxWindow *other) const -{ - // If the edge or dimension belongs to the parent, then we - // know the dimension is obtainable immediately. - // E.g. a wxExpandSizer may contain a button (but the button's - // true parent is a panel, not the sizer) - if (other->GetChildren().Member(thisWin)) - { - switch (which) - { - case wxLeft: - { - return wxSizerMarginX(other); - } - case wxTop: - { - return wxSizerMarginY(other); - } - case wxRight: - { - int w, h; - other->GetClientSizeConstraint(&w, &h); - return w - wxSizerMarginX(other); - } - case wxBottom: - { - int w, h; - other->GetClientSizeConstraint(&w, &h); - return h - wxSizerMarginY(other); - } - case wxWidth: - { - int w, h; - other->GetClientSizeConstraint(&w, &h); - return w - 2*wxSizerMarginX(other); - } - case wxHeight: - { - int w, h; - other->GetClientSizeConstraint(&w, &h); - return h - 2*wxSizerMarginY(other); - } - case wxCentreX: - case wxCentreY: - { - int w, h; - other->GetClientSizeConstraint(&w, &h); - if (which == wxCentreX) - return (int)(w/2); - else - return (int)(h/2); - } - default: - return -1; - } - } - switch (which) - { - case wxLeft: - { - wxLayoutConstraints *constr = other->GetConstraints(); - // If no constraints, it means the window is not dependent - // on anything, and therefore we know its value immediately - if (constr) - { - if (constr->left.GetDone()) - return constr->left.GetValue(); - else - return -1; - } - else - { - int x, y; - other->GetPosition(&x, &y); - return x; - } - } - case wxTop: - { - wxLayoutConstraints *constr = other->GetConstraints(); - // If no constraints, it means the window is not dependent - // on anything, and therefore we know its value immediately - if (constr) - { - if (constr->top.GetDone()) - return constr->top.GetValue(); - else - return -1; - } - else - { - int x, y; - other->GetPosition(&x, &y); - return y; - } - } - case wxRight: - { - wxLayoutConstraints *constr = other->GetConstraints(); - // If no constraints, it means the window is not dependent - // on anything, and therefore we know its value immediately - if (constr) - { - if (constr->right.GetDone()) - return constr->right.GetValue(); - else - return -1; - } - else - { - int x, y, w, h; - other->GetPosition(&x, &y); - other->GetSize(&w, &h); - return (int)(x + w); - } - } - case wxBottom: - { - wxLayoutConstraints *constr = other->GetConstraints(); - // If no constraints, it means the window is not dependent - // on anything, and therefore we know its value immediately - if (constr) - { - if (constr->bottom.GetDone()) - return constr->bottom.GetValue(); - else - return -1; - } - else - { - int x, y, w, h; - other->GetPosition(&x, &y); - other->GetSize(&w, &h); - return (int)(y + h); - } - } - case wxWidth: - { - wxLayoutConstraints *constr = other->GetConstraints(); - // If no constraints, it means the window is not dependent - // on anything, and therefore we know its value immediately - if (constr) - { - if (constr->width.GetDone()) - return constr->width.GetValue(); - else - return -1; - } - else - { - int w, h; - other->GetSize(&w, &h); - return w; - } - } - case wxHeight: - { - wxLayoutConstraints *constr = other->GetConstraints(); - // If no constraints, it means the window is not dependent - // on anything, and therefore we know its value immediately - if (constr) - { - if (constr->height.GetDone()) - return constr->height.GetValue(); - else - return -1; - } - else - { - int w, h; - other->GetSize(&w, &h); - return h; - } - } - case wxCentreX: - { - wxLayoutConstraints *constr = other->GetConstraints(); - // If no constraints, it means the window is not dependent - // on anything, and therefore we know its value immediately - if (constr) - { - if (constr->centreX.GetDone()) - return constr->centreX.GetValue(); - else - return -1; - } - else - { - int x, y, w, h; - other->GetPosition(&x, &y); - other->GetSize(&w, &h); - return (int)(x + (w/2)); - } - } - case wxCentreY: - { - wxLayoutConstraints *constr = other->GetConstraints(); - // If no constraints, it means the window is not dependent - // on anything, and therefore we know its value immediately - if (constr) - { - if (constr->centreY.GetDone()) - return constr->centreY.GetValue(); - else - return -1; - } - else - { - int x, y, w, h; - other->GetPosition(&x, &y); - other->GetSize(&w, &h); - return (int)(y + (h/2)); - } - } - default: - break; - } - return -1; -} - -wxLayoutConstraints::wxLayoutConstraints() -{ - left.SetEdge(wxLeft); - top.SetEdge(wxTop); - right.SetEdge(wxRight); - bottom.SetEdge(wxBottom); - centreX.SetEdge(wxCentreX); - centreY.SetEdge(wxCentreY); - width.SetEdge(wxWidth); - height.SetEdge(wxHeight); -} - -wxLayoutConstraints::~wxLayoutConstraints() -{ -} - -bool wxLayoutConstraints::SatisfyConstraints(wxWindow *win, int *nChanges) -{ - int noChanges = 0; - - bool done = width.GetDone(); - bool newDone = (done ? TRUE : width.SatisfyConstraint(this, win)); - if (newDone != done) - noChanges ++; - - done = height.GetDone(); - newDone = (done ? TRUE : height.SatisfyConstraint(this, win)); - if (newDone != done) - noChanges ++; - - done = left.GetDone(); - newDone = (done ? TRUE : left.SatisfyConstraint(this, win)); - if (newDone != done) - noChanges ++; - - done = top.GetDone(); - newDone = (done ? TRUE : top.SatisfyConstraint(this, win)); - if (newDone != done) - noChanges ++; - - done = right.GetDone(); - newDone = (done ? TRUE : right.SatisfyConstraint(this, win)); - if (newDone != done) - noChanges ++; - - done = bottom.GetDone(); - newDone = (done ? TRUE : bottom.SatisfyConstraint(this, win)); - if (newDone != done) - noChanges ++; - - done = centreX.GetDone(); - newDone = (done ? TRUE : centreX.SatisfyConstraint(this, win)); - if (newDone != done) - noChanges ++; - - done = centreY.GetDone(); - newDone = (done ? TRUE : centreY.SatisfyConstraint(this, win)); - if (newDone != done) - noChanges ++; - - *nChanges = noChanges; - - return AreSatisfied(); -} - -/* - * Main constrained layout algorithm. Look at all the child - * windows, and their constraints (if any). - * The idea is to keep iterating through the constraints - * until all left, right, bottom and top edges, and widths and heights, - * are known (or no change occurs and we've failed to resolve all - * constraints). - * - * If the user has not specified a dimension or edge, it will be - * be calculated from the other known values. E.g. If we know - * the right hand edge and the left hand edge, we now know the width. - * The snag here is that this means we must specify absolute dimensions - * twice (in constructor and in constraint), if we wish to use the - * constraint notation to just set the position, for example. - * Otherwise, if we only set ONE edge and no dimension, it would never - * find the other edge. - * - * Algorithm: - - Mark all constraints as not done. - - iterations = 0; - until no change or iterations >= max iterations - For each child: - { - Calculate all constraints - } - iterations ++; - - For each child - Set each calculated position and size - - */ - -bool wxOldDoLayout(wxWindow *win) -{ - // Make sure this isn't called recursively from below - static wxList doneSoFar; - - if (doneSoFar.Member(win)) - return TRUE; - - doneSoFar.Append(win); - - wxNode *node = win->GetChildren().First(); - while (node) - { - wxWindow *child = (wxWindow *)node->Data(); - wxLayoutConstraints *constr = child->GetConstraints(); - if (constr) - { - constr->left.SetDone(FALSE); - constr->top.SetDone(FALSE); - constr->right.SetDone(FALSE); - constr->bottom.SetDone(FALSE); - constr->width.SetDone(FALSE); - constr->height.SetDone(FALSE); - constr->centreX.SetDone(FALSE); - constr->centreY.SetDone(FALSE); - } - node = node->Next(); - } - int noIterations = 0; - int maxIterations = 500; - int noChanges = 1; - - while ((noChanges > 0) && (noIterations < maxIterations)) - { - noChanges = 0; - wxNode *node = win->GetChildren().First(); - while (node) - { - wxWindow *child = (wxWindow *)node->Data(); - wxLayoutConstraints *constr = child->GetConstraints(); - if (constr) - { - int tempNoChanges = 0; - (void)constr->SatisfyConstraints(child, &tempNoChanges); - noChanges += tempNoChanges; - } - node = node->Next(); - } - noIterations ++; - } -/* - // Would be nice to have a test here to see _which_ constraint(s) - // failed, so we can print a specific diagnostic message. - if (noFailures > 0) - { - wxDebugMsg(_("wxWindow::Layout() failed.\n")); - } -*/ - // Now set the sizes and positions of the children, and - // recursively call Layout(). - node = win->GetChildren().First(); - while (node) - { - wxWindow *child = (wxWindow *)node->Data(); - wxLayoutConstraints *constr = child->GetConstraints(); - if (constr && constr->left.GetDone() && constr->right.GetDone() && - constr->width.GetDone() && constr->height.GetDone()) - { - int x = constr->left.GetValue(); - int y = constr->top.GetValue(); - int w = constr->width.GetValue(); - int h = constr->height.GetValue(); - - // If we don't want to resize this window, just move it... - if ((constr->width.GetRelationship() != wxAsIs) || - (constr->height.GetRelationship() != wxAsIs)) - { - // _Should_ call Layout() recursively. - child->SetSize(x, y, w, h); - } - else - { - child->Move(x, y); - } - } - else - child->Layout(); - node = node->Next(); - } - doneSoFar.DeleteObject(win); - - return TRUE; -} - -wxSizer::wxSizer() -{ - sizerBehaviour = wxSizerNone; - borderX = 2; - borderY = 2; - sizerX = 0; - sizerY = 0; - sizerWidth = 0; - sizerHeight = 0; -} - -wxSizer::wxSizer(wxWindow *parent, wxSizerBehaviour behav) -{ - Create(parent, behav); -} - -bool wxSizer::Create(wxWindow *parent, wxSizerBehaviour behav) -{ - sizerBehaviour = behav; - borderX = 2; - borderY = 2; - m_sizerParent = parent; - sizerX = 0; - sizerY = 0; - sizerWidth = 0; - sizerHeight = 0; - - // A normal window can have just one top-level sizer - // associated with it. - if (!parent->IsKindOf(CLASSINFO(wxSizer))) - { - parent->SetSizer(this); - } - else - ((wxSizer *)parent)->AddSizerChild(this); - - switch (sizerBehaviour) - { - case wxSizerExpand: - { - // Defines a set of constraints - // to expand the sizer to fit the parent window - wxLayoutConstraints *c = new wxLayoutConstraints; - - c->left.SameAs(parent, wxLeft, 0); - c->top.SameAs(parent, wxTop, 0); - c->right.SameAs(parent, wxRight, 0); - c->bottom.SameAs(parent, wxBottom, 0); - - SetConstraints(c); - break; - } - case wxSizerShrink: - case wxSizerNone: - default: - { - } - } - return TRUE; -} - -wxSizer::~wxSizer() -{ - // Remove all children without deleting them, - // or ~wxbWindow will delete proper windows _twice_ - wxNode *node = GetChildren().First(); - while (node) - { - wxNode *next = node->Next(); - wxWindow *win = (wxWindow *)node->Data(); - if (!win->IsKindOf(CLASSINFO(wxSizer))) - { - delete node; - win->SetSizerParent((wxWindow *) NULL); - } - else - { - RemoveSizerChild(win); - delete win; - } - node = next; - } - - if (m_sizerParent) // && !m_sizerParent->IsKindOf(CLASSINFO(wxSizer))) - { - m_sizerParent->SetSizer((wxSizer *) NULL); - m_sizerParent = (wxWindow *) NULL; - } - -} - -void wxSizer::SetBorder(int x, int y) -{ - borderX = x; - borderY = y; -/* No: the margin is for inside, not outside (expansion) - - if ( GetConstraints() ) - { - GetConstraints()->left.SetMargin(x); - GetConstraints()->right.SetMargin(x); - GetConstraints()->top.SetMargin(y); - GetConstraints()->bottom.SetMargin(y); - } -*/ - -} - -void wxSizer::AddSizerChild(wxWindow *child) -{ - child->SetSizerParent(this); - GetChildren().Append(child); - - // Add some constraints for the purpose of storing - // the relative position of the window/sizer - // during layout calculations. - if (!child->GetConstraints()) - { - wxLayoutConstraints *c = new wxLayoutConstraints; - c->left.AsIs(); - c->top.AsIs(); - c->width.AsIs(); - c->height.AsIs(); - int w, h; - child->GetSize(&w, &h); - c->width.SetValue(w); - c->height.SetValue(h); - - child->SetConstraints(c); - } -} - -void wxSizer::RemoveSizerChild(wxWindow *child) -{ - GetChildren().DeleteObject(child); -} - -void wxSizer::SetSize(int x, int y, int w, int h, int WXUNUSED(flags)) -{ - wxLayoutConstraints *constr = GetConstraints(); - if (x != -1) - { - sizerX = x; - if (constr) - constr->left.SetValue(x); - } - if (y != -1) - { - sizerY = y; - if (constr) - constr->top.SetValue(y); - } - if (w != -1) - { - sizerWidth = w; - if (constr) - constr->width.SetValue(w); - } - if (h != -1) - { - sizerHeight = h; - if (constr) - constr->height.SetValue(h); - } -} - -void wxSizer::GetSize(int *w, int *h) const -{ - *w = sizerWidth; - *h = sizerHeight; -} - -void wxSizer::GetPosition(int *x, int *y) const -{ - *x = sizerX; - *y = sizerY; -} - -bool wxSizer::LayoutPhase1(int *noChanges) -{ - *noChanges = 0; - switch (sizerBehaviour) - { - case wxSizerExpand: - { - if (!m_sizerParent) - { - wxMessageBox(_("wxExpandSizer has no parent!"), _("Sizer error"), wxOK); - return TRUE; - } - - // Set the size to fill the parent client area - int pw, ph; - m_sizerParent->GetClientSize(&pw, &ph); - SetSize(GetBorderX(), GetBorderY(), pw - 2*GetBorderX(), ph - 2*GetBorderY()); - wxLayoutConstraints *constr = GetConstraints(); - - // Fill in the constraints - if (constr) - { - constr->left.SetValue(0); constr->left.SetDone(TRUE); - constr->top.SetValue(0); constr->right.SetDone(TRUE); - constr->width.SetValue(pw); constr->width.SetDone(TRUE); - constr->height.SetValue(ph); constr->height.SetDone(TRUE); - } - - return TRUE; - break; - } - case wxSizerShrink: - { - wxLayoutConstraints *constr = GetConstraints(); - - if (constr) - { - // Force the constraint to have as-is width and height - // if we're in shrink-to-fit mode, because if left unconstrained, - // SatisfyConstraints will fail. The shrink-to-fit option - // essentially specifies the width and height as 'whatever I calculate'. - constr->width.AsIs(); - constr->height.AsIs(); - } - DoPhase(1); - DoPhase(2); - // Find the bounding box and set own size - int maxX = 0; - int maxY = 0; - wxNode *node = GetChildren().First(); - while (node) - { - int x, y, width, height; - wxWindow *win = (wxWindow *)node->Data(); - win->GetSizeConstraint(&width, &height); - win->GetPositionConstraint(&x, &y); - if ((x+width) > maxX) - maxX = (x + width); - if ((y+height) > maxY) - maxY = (y + height); - node = node->Next(); - } - SetSize(GetBorderX(), GetBorderY(), maxX, maxY); - - // If this is the only sizer for the parent, size the parent to this sizer. - if ( m_sizerParent && (m_sizerParent->GetSizer() == this) ) - m_sizerParent->SetClientSize(maxX + 2*GetBorderX(), maxY + 2*GetBorderY()); - - return TRUE; - break; - } - case wxSizerNone: - { - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - bool success = constr->SatisfyConstraints(this, noChanges); - if (success) - { - int x = constr->left.GetValue(); - int y = constr->top.GetValue(); - int w = constr->width.GetValue(); - int h = constr->height.GetValue(); - SetSize(x, y, w, h); - } - return success; - } - else - return TRUE; - break; - } - } - return TRUE; - -} - -bool wxSizer::LayoutPhase2(int *noChanges) -{ - *noChanges = 0; - - switch (sizerBehaviour) - { - case wxSizerExpand: - { - // Layout children - DoPhase(1); - DoPhase(2); - return TRUE; - } - case wxSizerShrink: - { - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - bool success = constr->SatisfyConstraints(this, noChanges); - if (success) - { - int x = constr->left.GetValue(); - int y = constr->top.GetValue(); - Move(x, y); - } - return success; - } - break; - } - case wxSizerNone: - { - // Layout children - DoPhase(1); - DoPhase(2); - - // Is this a dumb fix for lack of constraint evaluation? - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - bool success = constr->SatisfyConstraints(this, noChanges); - if (success) - { - int x = constr->left.GetValue(); - int y = constr->top.GetValue(); - int w = constr->width.GetValue(); - int h = constr->height.GetValue(); - SetSize(x, y, w, h); - } - return success; - } - else - return TRUE; - } - } - return TRUE; -} - -/* - * wxRowColSizer - */ - -wxRowColSizer::wxRowColSizer() -{ - rowOrCol = TRUE; - rowOrColSize = 20; - xSpacing = 2; - ySpacing = 2; -} - -wxRowColSizer::wxRowColSizer(wxWindow *parent, bool rc, int n, wxSizerBehaviour behav) -{ - Create(parent, rc, n, behav); -} - -bool wxRowColSizer::Create(wxWindow *parent, bool rc, int n, wxSizerBehaviour behav) -{ - wxSizer::Create(parent, behav); - - rowOrCol = rc; - rowOrColSize = n; - xSpacing = 2; - ySpacing = 2; - - return TRUE; -} - -wxRowColSizer::~wxRowColSizer() -{ -} - -void wxRowColSizer::SetSize(int x, int y, int w, int h, int flags) -{ - wxSizer::SetSize(x, y, w, h, flags); -} - -bool wxRowColSizer::LayoutPhase1(int *noChanges) -{ - *noChanges = 0; - wxLayoutConstraints *constr = GetConstraints(); - - if (constr) - { - // Force the constraint to have as-is width and height - // if we're in shrink-to-fit mode, because if left unconstrained, - // SatisfyConstraints will fail. The shrink-to-fit option - // essentially specifies the width and height as 'whatever I calculate'. - if (sizerBehaviour == wxSizerShrink) - { - constr->width.AsIs(); - constr->height.AsIs(); - } - - // Only evaluate the constraints FIRST if we're NOT - // in shrink-to-fit mode, i.e. we want to size the rowcol - // first, then lay the children out in the space we've calculated. - if (sizerBehaviour != wxSizerShrink) - { - bool success = constr->SatisfyConstraints(this, noChanges); - if (success) - { - int x = constr->left.GetValue(); - int y = constr->top.GetValue(); - int w = constr->width.GetValue(); - int h = constr->height.GetValue(); - SetSize(x, y, w, h); - } - else - return FALSE; - - // Continue to do the rest of the phase when the constraints have been - // satisfied, i.e. we're on the last iteration of phase 1 and - // can now do the actual rowcol laying out. - } - } - - // If we ARE in shrink-to-fit mode, we must now - // calculate the child sizes BEFORE laying out in rows or columns. - if (sizerBehaviour == wxSizerShrink) - { - DoPhase(1); - DoPhase(2); - - // WILL THE WINDOW BE SIZED CORRECTLY AT THIS POINT? - // CHECK CONSTRAINTS IF ANY... - int noRows = 0; - int noCols = 0; - int currentX = borderX; - int currentY = borderY; - int maxX = currentX; - int maxY = currentY; - - wxNode *node = GetChildren().First(); - while (node) - { - wxWindow *win = (wxWindow *)node->Data(); - int childWidth, childHeight; - if (win->GetConstraints() && - win->GetConstraints()->width.GetDone() && - win->GetConstraints()->height.GetDone()) - { - childWidth = win->GetConstraints()->width.GetValue(); - childHeight = win->GetConstraints()->height.GetValue(); - } - else - win->GetSize(&childWidth, &childHeight); - - win->MoveConstraint(currentX, currentY); - - if ((currentX + childWidth) > maxX) - maxX = (currentX + childWidth); - if ((currentY + childHeight) > maxY) - maxY = (currentY + childHeight); - - if (rowOrCol) - { - currentX += childWidth + xSpacing; - noCols ++; - - // Reset to start of row - if (noCols == rowOrColSize) - { - currentX = borderX; - currentY += childHeight + ySpacing; - noCols = 0; - } - } - else - { - currentY += childHeight + ySpacing; - noRows ++; - - // Reset to start of col - if (noRows == rowOrColSize) - { - currentY = borderY; - currentX += childWidth + xSpacing; - noRows = 0; - } - } - - node = node->Next(); - } - maxX += borderX; - maxY += borderY; - - SetSize(-1, -1, maxX, maxY); - } - return TRUE; -} - -bool wxRowColSizer::LayoutPhase2(int *noChanges) -{ - *noChanges = 0; - - // If shrink-to-fit, it's only at Phase 2 that we know the size of - // the wxRowColSizer, and now we can evaluate the - // constraints and pass result back up to parent. - // This implements a depth-first strategy - if (sizerBehaviour == wxSizerShrink) - { - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - bool success = constr->SatisfyConstraints(this, noChanges); - if (success) - { - int x = constr->left.GetValue(); - int y = constr->top.GetValue(); - Move(x, y); - } - return success; - } - else return TRUE; - } - else - { - // Lay out the children: breadth-first strategy. - DoPhase(1); - DoPhase(2); - - // Space them - } - return TRUE; -} - - -/* - * wxSpacingSizer - */ - -wxSpacingSizer::wxSpacingSizer() -{ -} - -wxSpacingSizer::wxSpacingSizer(wxWindow *parent) -{ - Create(parent); -} - -wxSpacingSizer::wxSpacingSizer(wxWindow *parent, wxRelationship rel, wxWindow *other, int spacing) -{ - Create(parent, rel, other, spacing); -} - -bool wxSpacingSizer::Create(wxWindow *parent) -{ - wxSizer::Create(parent); - return TRUE; -} - -bool wxSpacingSizer::Create(wxWindow *parent, wxRelationship rel, wxWindow *other, int spacing) -{ - wxLayoutConstraints *c = new wxLayoutConstraints; - - wxSizer::Create(parent); - - switch ( rel ) - { - case wxLeftOf : - c->width.Absolute (spacing); - c->top.SameAs (other, wxTop); - c->bottom.SameAs (other, wxBottom); - c->right.LeftOf (other); - break; - case wxRightOf : - c->width.Absolute (spacing); - c->top.SameAs (other, wxTop); - c->bottom.SameAs (other, wxBottom); - c->left.RightOf (other); - break; - case wxBelow : - c->height.Absolute (spacing); - c->left.SameAs (other, wxLeft); - c->right.SameAs (other, wxRight); - c->top.Below (other); - break; - case wxAbove : - c->height.Absolute (spacing); - c->left.SameAs (other, wxLeft); - c->right.SameAs (other, wxRight); - c->bottom.Above (other); - break; - - default : - break; - } - SetConstraints(c); - - return TRUE; -} - -wxSpacingSizer::~wxSpacingSizer() -{ -} - diff --git a/src/common/lexer.l b/src/common/lexer.l deleted file mode 100644 index bb25277e79..0000000000 --- a/src/common/lexer.l +++ /dev/null @@ -1,196 +0,0 @@ -SIGN [+-] -DIGIT [0-9] -ALPHA [a-zA-Z_] -ALPHADIGIT [a-zA-Z_0-9] -STRINGCHAR [^"\\] -WORDCHAR [^'\\] - -%{ -/* - * File: lexer.l - * Description: Lexical analyser for PROLOGIO; can be used with - * either lex and flex. - */ -#include -#include - -/* +++steve162e: added, otherwise, PROIO_input will be undefined (at least under LINUX) - please check, if this is also TRUE under other UNIXes. - */ - -#if defined(FLEX_SCANNER) && defined(_LINUX) -#define PROIO_input my_input -#endif -/* ---steve162e */ - -#include "wx/expr.h" - -#ifdef wx_x -extern char *malloc(); -#endif -#define Return(x) return x; - -#if defined(VMS) && !defined(strdup) -#define strdup(s) (strcpy((char *)malloc(strlen(s)+1), s)); -#endif - -static size_t lex_buffer_length = 0; -static const char *lex_buffer = NULL; -static size_t lex_string_ptr = 0; -static int lex_read_from_string = 0; - -static int my_input(void); -static int my_unput(char); - -#ifdef FLEX_SCANNER -#undef YY_INPUT -# define YY_INPUT(buf,result,max_size) \ - if (lex_read_from_string) \ - { int c = my_input(); result = (c == 0) ? YY_NULL : ((buf)[0]=(c), 1); } \ - else \ - if ( (result = read( fileno(yyin), (char *) buf, max_size )) < 0 ) \ - YY_FATAL_ERROR( "read() in flex scanner failed" ); -#else -# undef unput -# define unput(_c) my_unput(_c) -#endif - -%} - -%% - -{SIGN}?{DIGIT}+ {yylval.s = strdup(yytext); Return(INTEGER);} - -"e" Return(EXP); - -{ALPHA}{ALPHADIGIT}* {yylval.s = strdup(yytext); Return(WORD);} - -"'"{WORDCHAR}*"'" {int len = strlen(yytext); - yytext[len-1] = 0; - yylval.s = strdup(yytext+1); - Return(WORD);} - -\"({STRINGCHAR}|\\\"|\|\\\\|\\)*\" {yylval.s = strdup(yytext); Return(STRING);} - -"(" Return(OPEN); - -")" Return(CLOSE); - -"," Return(COMMA); - -"[" Return(OPEN_SQUARE); - -"]" Return(CLOSE_SQUARE); - -"=" Return(EQUALS); - -"." Return(PERIOD); - -[ \t] ; - -\n ; - -"/*" { loop: -#ifdef __cplusplus - while (yyinput() != '*'); - switch (yyinput()) -#else - while (input() != '*'); - switch (input()) -#endif - { - case '/': break; - case '*': unput('*'); - default: goto loop; - } - } - -. Return(ERROR); - -%% - - -#ifdef FLEX_SCANNER -static int lex_input() { - return input(); -} -#else /* BSD/AT&T lex */ -#ifndef input -# error "Sorry, but need either flex or AT&T lex" -#endif -static int lex_input() { - return input(); -} -/* # undef unput -# define unput(_c) my_unput(_c) -*/ - -# undef input -# define input() my_input() -static int my_unput(char c) -{ - if (lex_read_from_string) { - /* Make sure we have something */ - if (lex_string_ptr) { - if (c == '\n') yylineno--; - lex_string_ptr--; - } - } else { - yytchar= (c);if(yytchar=='\n')yylineno--;*yysptr++=yytchar; -/* unput(c); Causes infinite recursion! */ - } - return c; -} - -#endif - -/* Public */ -void LexFromFile(FILE *fd) -{ - lex_read_from_string = 0; - yyin = fd; - /* Don't know why this is necessary, but otherwise - * lex only works _once_! - */ -#ifdef FLEX_SCANNER - yyrestart(fd); - yy_init = 1; -#endif -} - -void LexFromString(char *buffer) -{ - lex_read_from_string = 1; - lex_buffer = buffer; - lex_buffer_length = strlen(buffer); - lex_string_ptr = 0; - /* Don't know why this is necessary, but otherwise - * lex only works _once_! - */ -#ifdef FLEX_SCANNER - yy_init = 1; -#endif -} - -static int my_input( void ) -{ - if (lex_read_from_string) { - if (lex_string_ptr == lex_buffer_length) - return 0; - else { - char c = lex_buffer[lex_string_ptr++]; -#ifndef FLEX_SCANNER - if (c == '\n') yylineno++; -#endif - return c; - } - } else { - return lex_input(); - } -} - -void wxExprCleanUp() -{ - if (yy_current_buffer) - yy_delete_buffer(yy_current_buffer); -} diff --git a/src/common/list.cpp b/src/common/list.cpp deleted file mode 100644 index 85448991d2..0000000000 --- a/src/common/list.cpp +++ /dev/null @@ -1,637 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// Name: list.cpp -// Purpose: wxList implementation -// Author: Julian Smart -// Modified by: VZ at 16/11/98: WX_DECLARE_LIST() and typesafe lists added -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -//////////////////////////////////////////////////////////////////////////////// - -// ============================================================================= -// declarations -// ============================================================================= - -// ----------------------------------------------------------------------------- -// headers -// ----------------------------------------------------------------------------- -#ifdef __GNUG__ -#pragma implementation "list.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ - #pragma hdrstop -#endif - -#include -#include -#include - -#ifndef WX_PRECOMP - #include "wx/defs.h" - #include "wx/list.h" - #include "wx/utils.h" // for copystring() (beurk...) -#endif - -// ============================================================================= -// implementation -// ============================================================================= - -// ----------------------------------------------------------------------------- -// wxListKey -// ----------------------------------------------------------------------------- - -wxListKey wxDefaultListKey; - -bool wxListKey::operator==(wxListKeyValue value) const -{ - switch ( m_keyType ) - { - default: - wxFAIL_MSG("bad key type."); - // let compiler optimize the line above away in release build - // by not putting return here... - - case wxKEY_STRING: - return strcmp(m_key.string, value.string) == 0; - - case wxKEY_INTEGER: - return m_key.integer == value.integer; - } -} - -// ----------------------------------------------------------------------------- -// wxNodeBase -// ----------------------------------------------------------------------------- - -wxNodeBase::wxNodeBase(wxListBase *list, - wxNodeBase *previous, wxNodeBase *next, - void *data, const wxListKey& key) -{ - m_list = list; - m_data = data; - m_previous = previous; - m_next = next; - - switch ( key.GetKeyType() ) - { - case wxKEY_NONE: - break; - - case wxKEY_INTEGER: - m_key.integer = key.GetNumber(); - break; - - case wxKEY_STRING: - // to be free()d later - m_key.string = strdup(key.GetString()); - break; - - default: - wxFAIL_MSG("invalid key type"); - } - - if ( previous ) - previous->m_next = this; - - if ( next ) - next->m_previous = this; -} - -wxNodeBase::~wxNodeBase() -{ - // handle the case when we're being deleted from the list by the user (i.e. - // not by the list itself from DeleteNode) - we must do it for - // compatibility with old code - if ( m_list != NULL ) - { - if ( m_list->m_keyType == wxKEY_STRING ) - { - free(m_key.string); - } - - m_list->DetachNode(this); - } -} - -int wxNodeBase::IndexOf() const -{ - wxCHECK_MSG( m_list, wxNOT_FOUND, "node doesn't belong to a list in IndexOf"); - - // It would be more efficient to implement IndexOf() completely inside - // wxListBase (only traverse the list once), but this is probably a more - // reusable way of doing it. Can always be optimized at a later date (since - // IndexOf() resides in wxListBase as well) if efficiency is a problem. - int i; - wxNodeBase *prev = m_previous; - - for( i = 0; prev; i++ ) - { - prev = prev->m_previous; - } - - return i; -} - -// ----------------------------------------------------------------------------- -// wxListBase -// ----------------------------------------------------------------------------- - -void wxListBase::Init(wxKeyType keyType) -{ - m_nodeFirst = - m_nodeLast = (wxNodeBase *) NULL; - m_count = 0; - m_destroy = FALSE; - m_keyType = keyType; -} - -wxListBase::wxListBase(size_t count, void *elements[]) -{ - Init(); - - for ( size_t n = 0; n < count; n++ ) - { - Append(elements[n]); - } -} - -void wxListBase::DoCopy(const wxListBase& list) -{ - wxASSERT_MSG( !list.m_destroy, - "copying list which owns it's elements is a bad idea" ); - - m_count = list.m_count; - m_destroy = list.m_destroy; - m_keyType = list.m_keyType; - m_nodeFirst = - m_nodeLast = (wxNodeBase *) NULL; - - for ( wxNodeBase *node = list.GetFirst(); node; node = node->GetNext() ) - { - Append(node); - } -} - -wxListBase::~wxListBase() -{ - wxNodeBase *each = m_nodeFirst; - while ( each != NULL ) - { - wxNodeBase *next = each->GetNext(); - DoDeleteNode(each); - each = next; - } -} - -wxNodeBase *wxListBase::AppendCommon(wxNodeBase *node) -{ - if ( !m_nodeFirst ) - { - m_nodeFirst = node; - m_nodeLast = m_nodeFirst; - } - else - { - m_nodeLast->m_next = node; - m_nodeLast = node; - } - - m_count++; - - return node; -} - -wxNodeBase *wxListBase::Append(void *object) -{ - // all objects in a keyed list should have a key - wxCHECK_MSG( m_keyType == wxKEY_NONE, (wxNodeBase *)NULL, - "need a key for the object to append" ); - - wxNodeBase *node = CreateNode(m_nodeLast, (wxNodeBase *)NULL, object); - - return AppendCommon(node); -} - -wxNodeBase *wxListBase::Append(long key, void *object) -{ - wxCHECK_MSG( (m_keyType == wxKEY_INTEGER) || - (m_keyType == wxKEY_NONE && m_count == 0), - (wxNodeBase *)NULL, - "can't append object with numeric key to this list" ); - - wxNodeBase *node = CreateNode(m_nodeLast, (wxNodeBase *)NULL, object, key); - return AppendCommon(node); -} - -wxNodeBase *wxListBase::Append (const char *key, void *object) -{ - wxCHECK_MSG( (m_keyType == wxKEY_STRING) || - (m_keyType == wxKEY_NONE && m_count == 0), - (wxNodeBase *)NULL, - "can't append object with string key to this list" ); - - wxNodeBase *node = CreateNode(m_nodeLast, (wxNodeBase *)NULL, object, key); - return AppendCommon(node); -} - -wxNodeBase *wxListBase::Insert(wxNodeBase *position, void *object) -{ - // all objects in a keyed list should have a key - wxCHECK_MSG( m_keyType == wxKEY_NONE, (wxNodeBase *)NULL, - "need a key for the object to insert" ); - - wxCHECK_MSG( !position || position->m_list == this, (wxNodeBase *)NULL, - "can't insert before a node from another list" ); - - // previous and next node for the node being inserted - wxNodeBase *prev, *next; - if ( position ) - { - prev = position->GetPrevious(); - next = position; - } - else - { - // inserting in the beginning of the list - prev = (wxNodeBase *)NULL; - next = m_nodeFirst; - } - - wxNodeBase *node = CreateNode(prev, next, object); - if ( !m_nodeFirst ) - { - m_nodeLast = node; - } - - if ( prev == NULL ) - { - m_nodeFirst = node; - } - - m_count++; - - return node; -} - -wxNodeBase *wxListBase::Item(size_t n) const -{ - for ( wxNodeBase *current = GetFirst(); current; current = current->GetNext() ) - { - if ( n-- == 0 ) - { - return current; - } - } - - wxFAIL_MSG( "invalid index in wxListBase::Item" ); - - return (wxNodeBase *)NULL; -} - -wxNodeBase *wxListBase::Find(const wxListKey& key) const -{ - wxASSERT_MSG( m_keyType == key.GetKeyType(), - "this list is not keyed on the type of this key" ); - - for ( wxNodeBase *current = GetFirst(); current; current = current->GetNext() ) - { - if ( key == current->m_key ) - { - return current; - } - } - - // not found - return (wxNodeBase *)NULL; -} - -wxNodeBase *wxListBase::Find(void *object) const -{ - for ( wxNodeBase *current = GetFirst(); current; current = current->GetNext() ) - { - if ( current->GetData() == object ) - return current; - } - - // not found - return (wxNodeBase *)NULL; -} - -int wxListBase::IndexOf(void *object) const -{ - wxNodeBase *node = Find( object ); - - return node ? node->IndexOf() : wxNOT_FOUND; -} - -void wxListBase::DoDeleteNode(wxNodeBase *node) -{ - // free node's data - if ( m_keyType == wxKEY_STRING ) - { - free(node->m_key.string); - } - - if ( m_destroy ) - { - node->DeleteData(); - } - - // so that the node knows that it's being deleted by the list - node->m_list = NULL; - delete node; -} - -wxNodeBase *wxListBase::DetachNode(wxNodeBase *node) -{ - wxCHECK_MSG( node, NULL, "detaching NULL wxNodeBase" ); - wxCHECK_MSG( node->m_list == this, NULL, - "detaching node which is not from this list" ); - - // update the list - wxNodeBase **prevNext = node->GetPrevious() ? &node->GetPrevious()->m_next - : &m_nodeFirst; - wxNodeBase **nextPrev = node->GetNext() ? &node->GetNext()->m_previous - : &m_nodeLast; - - *prevNext = node->GetNext(); - *nextPrev = node->GetPrevious(); - - m_count--; - - // mark the node as not belonging to this list any more - node->m_list = NULL; - - return node; -} - -bool wxListBase::DeleteNode(wxNodeBase *node) -{ - if ( !DetachNode(node) ) - return FALSE; - - DoDeleteNode(node); - - return TRUE; -} - -bool wxListBase::DeleteObject(void *object) -{ - for ( wxNodeBase *current = GetFirst(); current; current = current->GetNext() ) - { - if ( current->GetData() == object ) - { - DeleteNode(current); - return TRUE; - } - } - - // not found - return FALSE; -} - -void wxListBase::Clear() -{ - wxNodeBase *current = m_nodeFirst; - while ( current ) - { - wxNodeBase *next = current->GetNext(); - DoDeleteNode(current); - current = next; - } - - m_nodeFirst = - m_nodeLast = (wxNodeBase *)NULL; - - m_count = 0; -} - -void wxListBase::ForEach(wxListIterateFunction F) -{ - for ( wxNodeBase *current = GetFirst(); current; current = current->GetNext() ) - { - (*F)(current->GetData()); - } -} - -void *wxListBase::FirstThat(wxListIterateFunction F) -{ - for ( wxNodeBase *current = GetFirst(); current; current = current->GetNext() ) - { - if ( (*F)(current->GetData()) ) - return current->GetData(); - } - - return (wxNodeBase *)NULL; -} - -void *wxListBase::LastThat(wxListIterateFunction F) -{ - for ( wxNodeBase *current = GetLast(); current; current = current->GetPrevious() ) - { - if ( (*F)(current->GetData()) ) - return current->GetData(); - } - - return (wxNodeBase *)NULL; -} - -// (stefan.hammes@urz.uni-heidelberg.de) -// -// function for sorting lists. the concept is borrowed from 'qsort'. -// by giving a sort function, arbitrary lists can be sorted. -// method: -// - put wxObject pointers into an array -// - sort the array with qsort -// - put back the sorted wxObject pointers into the list -// -// CAVE: the sort function receives pointers to wxObject pointers (wxObject **), -// so dereference right! -// EXAMPLE: -// int listcompare(const void *arg1, const void *arg2) -// { -// return(compare(**(wxString **)arg1, -// **(wxString **)arg2)); -// } -// -// void main() -// { -// wxListBase list; -// -// list.Append(new wxString("DEF")); -// list.Append(new wxString("GHI")); -// list.Append(new wxString("ABC")); -// list.Sort(listcompare); -// } - -void wxListBase::Sort(const wxSortCompareFunction compfunc) -{ - // allocate an array for the wxObject pointers of the list - const size_t num = GetCount(); - void **objArray = new void *[num]; - void **objPtr = objArray; - - // go through the list and put the pointers into the array - wxNodeBase *node; - for ( node = GetFirst(); node; node = node->Next() ) - { - *objPtr++ = node->Data(); - } - - // sort the array - qsort((void *)objArray,num,sizeof(wxObject *),compfunc); - - // put the sorted pointers back into the list - objPtr = objArray; - for ( node = GetFirst(); node; node = node->Next() ) - { - node->SetData(*objPtr++); - } - - // free the array - delete[] objArray; -} - -// ----------------------------------------------------------------------------- -// wxList (a.k.a. wxObjectList) -// ----------------------------------------------------------------------------- - -void wxObjectListNode::DeleteData() -{ - delete (wxObject *)GetData(); -} - -// ----------------------------------------------------------------------------- -// wxStringList -// ----------------------------------------------------------------------------- - -// instead of WX_DEFINE_LIST(wxStringListBase) we define this function -// ourselves -void wxStringListNode::DeleteData() -{ - delete [] (char *)GetData(); -} - -bool wxStringList::Delete(const char *s) -{ - wxStringListNode *current; - - for ( current = GetFirst(); current; current = current->GetNext() ) - { - if ( strcmp(current->GetData(), s) == 0 ) - { - DeleteNode(current); - return TRUE; - } - } - - // not found - return FALSE; -} - -void wxStringList::DoCopy(const wxStringList& other) -{ - wxASSERT( GetCount() == 0 ); // this list must be empty before copying! - - size_t count = other.GetCount(); - for ( size_t n = 0; n < count; n++ ) - { - Add(other.Item(n)->GetData()); - } -} - -// Variable argument list, terminated by a zero -// Makes new storage for the strings -wxStringList::wxStringList (const char *first, ...) -{ - if ( !first ) - return; - - va_list ap; - va_start(ap, first); - - const char *s = first; - for (;;) - { - Add(s); - - s = va_arg(ap, const char *); - // if (s == NULL) -#ifdef __WXMSW__ - if ((int) s == 0) -#else - if ((long) s == 0) -#endif - break; - } - - va_end(ap); -} - -// Only makes new strings if arg is TRUE -char **wxStringList::ListToArray(bool new_copies) const -{ - char **string_array = new char *[GetCount()]; - wxStringListNode *node = GetFirst(); - for (size_t i = 0; i < GetCount(); i++) - { - char *s = node->GetData(); - if ( new_copies ) - string_array[i] = copystring(s); - else - string_array[i] = s; - node = node->GetNext(); - } - - return string_array; -} - -// Checks whether s is a member of the list -bool wxStringList::Member(const char *s) const -{ - for ( wxStringListNode *node = GetFirst(); node; node = node->GetNext() ) - { - const char *s1 = node->GetData(); - if (s == s1 || strcmp (s, s1) == 0) - return TRUE; - } - - return FALSE; -} - -static int -wx_comparestrings(const void *arg1, const void *arg2) -{ - char **s1 = (char **) arg1; - char **s2 = (char **) arg2; - - return strcmp (*s1, *s2); -} - -// Sort a list of strings - deallocates old nodes, allocates new -void wxStringList::Sort() -{ - size_t N = GetCount(); - char **array = new char *[N]; - wxStringListNode *node; - - size_t i = 0; - for ( node = GetFirst(); node; node = node->GetNext() ) - { - array[i++] = node->GetData(); - } - - qsort (array, N, sizeof (char *), wx_comparestrings); - - i = 0; - for ( node = GetFirst(); node; node = node->GetNext() ) - node->SetData( array[i++] ); - - delete [] array; -} - diff --git a/src/common/log.cpp b/src/common/log.cpp deleted file mode 100644 index 7063dc6548..0000000000 --- a/src/common/log.cpp +++ /dev/null @@ -1,1025 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: log.cpp -// Purpose: Assorted wxLogXXX functions, and wxLog (sink for logs) -// Author: Vadim Zeitlin -// Modified by: -// Created: 29/01/98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -// ============================================================================ -// declarations -// ============================================================================ - -// ---------------------------------------------------------------------------- -// headers -// ---------------------------------------------------------------------------- -#ifdef __GNUG__ - #pragma implementation "log.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ - #pragma hdrstop -#endif - -// wxWindows -#ifndef WX_PRECOMP - #include - #include - #include - #include - #include - #include - #include - #include - #include -#endif //WX_PRECOMP - -#include -#include -#include -#include - -// other standard headers -#include -#include -#include - -#ifdef __WXMSW__ - #include - // Redefines OutputDebugString if necessary - #include "wx/msw/private.h" -#else //Unix - #include -#endif //Win/Unix - -// ---------------------------------------------------------------------------- -// non member functions -// ---------------------------------------------------------------------------- - -// define this to enable wrapping of log messages -//#define LOG_PRETTY_WRAP - -#ifdef LOG_PRETTY_WRAP - static void wxLogWrap(FILE *f, const char *pszPrefix, const char *psz); -#endif - -// ---------------------------------------------------------------------------- -// global variables -// ---------------------------------------------------------------------------- - -// we use a global variable to store the frame pointer for wxLogStatus - bad, -// but it's he easiest way -static wxFrame *gs_pFrame; - -// ============================================================================ -// implementation -// ============================================================================ - -// ---------------------------------------------------------------------------- -// implementation of Log functions -// -// NB: unfortunately we need all these distinct functions, we can't make them -// macros and not all compilers inline vararg functions. -// ---------------------------------------------------------------------------- - -// log functions can't allocate memory (LogError("out of memory...") should -// work!), so we use a static buffer for all log messages -#define LOG_BUFFER_SIZE (4096) - -// static buffer for error messages (@@@ MT-unsafe) -static char s_szBuf[LOG_BUFFER_SIZE]; - -// generic log function -void wxLogGeneric(wxLogLevel level, const char *szFormat, ...) -{ - if ( wxLog::GetActiveTarget() != NULL ) { - va_list argptr; - va_start(argptr, szFormat); - vsprintf(s_szBuf, szFormat, argptr); - va_end(argptr); - - wxLog::OnLog(level, s_szBuf); - } -} - -#define IMPLEMENT_LOG_FUNCTION(level) \ - void wxLog##level(const char *szFormat, ...) \ - { \ - if ( wxLog::GetActiveTarget() != NULL ) { \ - va_list argptr; \ - va_start(argptr, szFormat); \ - vsprintf(s_szBuf, szFormat, argptr); \ - va_end(argptr); \ - \ - wxLog::OnLog(wxLOG_##level, s_szBuf); \ - } \ - } - -IMPLEMENT_LOG_FUNCTION(FatalError) -IMPLEMENT_LOG_FUNCTION(Error) -IMPLEMENT_LOG_FUNCTION(Warning) -IMPLEMENT_LOG_FUNCTION(Message) -IMPLEMENT_LOG_FUNCTION(Info) -IMPLEMENT_LOG_FUNCTION(Status) - -// accepts an additional argument which tells to which frame the output should -// be directed -void wxLogStatus(wxFrame *pFrame, const char *szFormat, ...) -{ - wxLog *pLog = wxLog::GetActiveTarget(); - if ( pLog != NULL ) { - va_list argptr; - va_start(argptr, szFormat); - vsprintf(s_szBuf, szFormat, argptr); - va_end(argptr); - - wxASSERT( gs_pFrame == NULL ); // should be reset! - gs_pFrame = pFrame; - wxLog::OnLog(wxLOG_Status, s_szBuf); - gs_pFrame = (wxFrame *) NULL; - } -} - -// same as info, but only if 'verbose' mode is on -void wxLogVerbose(const char *szFormat, ...) -{ - wxLog *pLog = wxLog::GetActiveTarget(); - if ( pLog != NULL && pLog->GetVerbose() ) { - va_list argptr; - va_start(argptr, szFormat); - vsprintf(s_szBuf, szFormat, argptr); - va_end(argptr); - - wxLog::OnLog(wxLOG_Info, s_szBuf); - } -} - -// debug functions -#ifdef __WXDEBUG__ -#define IMPLEMENT_LOG_DEBUG_FUNCTION(level) \ - void wxLog##level(const char *szFormat, ...) \ - { \ - if ( wxLog::GetActiveTarget() != NULL ) { \ - va_list argptr; \ - va_start(argptr, szFormat); \ - vsprintf(s_szBuf, szFormat, argptr); \ - va_end(argptr); \ - \ - wxLog::OnLog(wxLOG_##level, s_szBuf); \ - } \ - } - - void wxLogTrace(wxTraceMask mask, const char *szFormat, ...) - { - wxLog *pLog = wxLog::GetActiveTarget(); - - // we check that all of mask bits are set in the current mask, so - // that wxLogTrace(wxTraceRefCount | wxTraceOle) will only do something - // if both bits are set. - if ( pLog != NULL && ((pLog->GetTraceMask() & mask) == mask) ) { - va_list argptr; - va_start(argptr, szFormat); - vsprintf(s_szBuf, szFormat, argptr); - va_end(argptr); - - wxLog::OnLog(wxLOG_Trace, s_szBuf); - } - } - -#else // release - #define IMPLEMENT_LOG_DEBUG_FUNCTION(level) -#endif - -IMPLEMENT_LOG_DEBUG_FUNCTION(Debug) -IMPLEMENT_LOG_DEBUG_FUNCTION(Trace) - -// wxLogSysError: one uses the last error code, for other you must give it -// explicitly - -// common part of both wxLogSysError -void wxLogSysErrorHelper(long lErrCode) -{ - char szErrMsg[LOG_BUFFER_SIZE / 2]; - sprintf(szErrMsg, _(" (error %ld: %s)"), lErrCode, wxSysErrorMsg(lErrCode)); - strncat(s_szBuf, szErrMsg, WXSIZEOF(s_szBuf) - strlen(s_szBuf)); - - wxLog::OnLog(wxLOG_Error, s_szBuf); -} - -void WXDLLEXPORT wxLogSysError(const char *szFormat, ...) -{ - va_list argptr; - va_start(argptr, szFormat); - vsprintf(s_szBuf, szFormat, argptr); - va_end(argptr); - - wxLogSysErrorHelper(wxSysErrorCode()); -} - -void WXDLLEXPORT wxLogSysError(long lErrCode, const char *szFormat, ...) -{ - va_list argptr; - va_start(argptr, szFormat); - vsprintf(s_szBuf, szFormat, argptr); - va_end(argptr); - - wxLogSysErrorHelper(lErrCode); -} - -// ---------------------------------------------------------------------------- -// wxLog class implementation -// ---------------------------------------------------------------------------- - -wxLog::wxLog() -{ - m_bHasMessages = FALSE; - m_bVerbose = FALSE; - m_szTimeFormat = "[%d/%b/%y %H:%M:%S] "; -} - -wxLog *wxLog::GetActiveTarget() -{ - if ( ms_bAutoCreate && ms_pLogger == NULL ) { - // prevent infinite recursion if someone calls wxLogXXX() from - // wxApp::CreateLogTarget() - static bool s_bInGetActiveTarget = FALSE; - if ( !s_bInGetActiveTarget ) { - s_bInGetActiveTarget = TRUE; - - #ifdef wxUSE_NOGUI - ms_pLogger = new wxLogStderr; - #else - // ask the application to create a log target for us - if ( wxTheApp != NULL ) - ms_pLogger = wxTheApp->CreateLogTarget(); - else - ms_pLogger = new wxLogStderr; - #endif - - s_bInGetActiveTarget = FALSE; - - // do nothing if it fails - what can we do? - } - } - - return ms_pLogger; -} - -wxLog *wxLog::SetActiveTarget(wxLog *pLogger) -{ - if ( ms_pLogger != NULL ) { - // flush the old messages before changing because otherwise they might - // get lost later if this target is not restored - ms_pLogger->Flush(); - } - - wxLog *pOldLogger = ms_pLogger; - ms_pLogger = pLogger; - - return pOldLogger; -} - -wxString wxLog::TimeStamp() const -{ - wxString str; - -/* Let's disable TimeStamp and see if anyone complains. - * If not, we'll remove it, since it's probably unlikely - * to ever be used. -- JACS 22/11/98 - if ( !IsEmpty(m_szTimeFormat) ) { - char szBuf[128]; - time_t timeNow; - struct tm *ptmNow; - - time(&timeNow); - ptmNow = localtime(&timeNow); - - strftime(szBuf, WXSIZEOF(szBuf), m_szTimeFormat, ptmNow); - str = szBuf; - } -*/ - - return str; -} - -void wxLog::DoLog(wxLogLevel level, const char *szString) -{ - // prepend a timestamp if not disabled - wxString str = TimeStamp(); - - switch ( level ) { - case wxLOG_FatalError: - DoLogString(str << _("Fatal error: ") << szString); - DoLogString(_("Program aborted.")); - Flush(); - abort(); - break; - - case wxLOG_Error: - DoLogString(str << _("Error: ") << szString); - break; - - case wxLOG_Warning: - DoLogString(str << _("Warning: ") << szString); - break; - - case wxLOG_Info: - case wxLOG_Message: - if ( GetVerbose() ) - DoLogString(str + szString); - // fall through - - case wxLOG_Status: - // nothing to do - break; - - case wxLOG_Trace: - case wxLOG_Debug: - #ifdef __WXDEBUG__ - // DoLogString(str << (level == wxLOG_Trace ? _("Trace") : _("Debug")) - // << ": " << szString); - // JACS: we don't really want to prefix with 'Debug'. It's just extra - // verbiage. - DoLogString(szString); - #endif - - break; - - default: - wxFAIL_MSG(_("unknown log level in wxLog::DoLog")); - } -} - -void wxLog::DoLogString(const char *WXUNUSED(szString)) -{ - wxFAIL_MSG(_("DoLogString must be overrided if it's called.")); -} - -void wxLog::Flush() -{ - // do nothing -} - -// ---------------------------------------------------------------------------- -// wxLogStderr class implementation -// ---------------------------------------------------------------------------- - -wxLogStderr::wxLogStderr(FILE *fp) -{ - if ( fp == NULL ) - m_fp = stderr; - else - m_fp = fp; -} - -void wxLogStderr::DoLogString(const char *szString) -{ - fputs(szString, m_fp); - fputc('\n', m_fp); - fflush(m_fp); -} - -// ---------------------------------------------------------------------------- -// wxLogStream implementation -// ---------------------------------------------------------------------------- - -#if wxUSE_STD_IOSTREAM -wxLogStream::wxLogStream(ostream *ostr) -{ - if ( ostr == NULL ) - m_ostr = &cerr; - else - m_ostr = ostr; -} - -void wxLogStream::DoLogString(const char *szString) -{ - (*m_ostr) << szString << endl << flush; -} -#endif - -#ifndef wxUSE_NOGUI - -// ---------------------------------------------------------------------------- -// wxLogTextCtrl implementation -// ---------------------------------------------------------------------------- - -#if wxUSE_STD_IOSTREAM -wxLogTextCtrl::wxLogTextCtrl(wxTextCtrl *pTextCtrl) -// DLL mode in wxMSW, can't use it. -#if defined(NO_TEXT_WINDOW_STREAM) -#else - : wxLogStream(new ostream(pTextCtrl)) -#endif -{ -} - -wxLogTextCtrl::~wxLogTextCtrl() -{ - delete m_ostr; -} -#endif - -// ---------------------------------------------------------------------------- -// wxLogGui implementation -// ---------------------------------------------------------------------------- - -wxLogGui::wxLogGui() -{ - m_bErrors = FALSE; -} - -void wxLogGui::Flush() -{ - if ( !m_bHasMessages ) - return; - - // do it right now to block any new calls to Flush() while we're here - m_bHasMessages = FALSE; - - // @@@ ugly... - - // concatenate all strings (but not too many to not overfill the msg box) - wxString str; - size_t nLines = 0, - nMsgCount = m_aMessages.Count(); - - // start from the most recent message - for ( size_t n = nMsgCount; n > 0; n-- ) { - // for Windows strings longer than this value are wrapped (NT 4.0) - const size_t nMsgLineWidth = 156; - - nLines += (m_aMessages[n - 1].Len() + nMsgLineWidth - 1) / nMsgLineWidth; - - if ( nLines > 25 ) // don't put too many lines in message box - break; - - str << m_aMessages[n - 1] << "\n"; - } - - if ( m_bErrors ) { - wxMessageBox(str, _("Error"), wxOK | wxICON_EXCLAMATION); - } - else { - wxMessageBox(str, _("Information"), wxOK | wxICON_INFORMATION); - } - - // no undisplayed messages whatsoever - m_bErrors = FALSE; - m_aMessages.Empty(); -} - -// the default behaviour is to discard all informational messages if there -// are any errors/warnings. -void wxLogGui::DoLog(wxLogLevel level, const char *szString) -{ - switch ( level ) { - case wxLOG_Info: - if ( GetVerbose() ) - case wxLOG_Message: - if ( !m_bErrors ) { - m_aMessages.Add(szString); - m_bHasMessages = TRUE; - } - break; - - case wxLOG_Status: - { - // find the top window and set it's status text if it has any - wxFrame *pFrame = gs_pFrame; - if ( pFrame == NULL ) { - wxWindow *pWin = wxTheApp->GetTopWindow(); - if ( pWin != NULL && pWin->IsKindOf(CLASSINFO(wxFrame)) ) { - pFrame = (wxFrame *)pWin; - } - } - - if ( pFrame != NULL ) - pFrame->SetStatusText(szString); - } - break; - - case wxLOG_Trace: - case wxLOG_Debug: - #ifdef __WXDEBUG__ - { - wxString strTime = TimeStamp(); - - #ifdef __WXMSW__ - // don't prepend debug/trace here: it goes to the debug window - // anyhow, but do put a timestamp - OutputDebugString(strTime + szString + "\n\r"); - #else - // send them to stderr - /* - fprintf(stderr, "%s %s: %s\n", - strTime.c_str(), - level == wxLOG_Trace ? _("Trace") : _("Debug"), - szString); - */ - fprintf(stderr, "%s\n", - szString); - fflush(stderr); - #endif - } - #endif - break; - - case wxLOG_FatalError: - // show this one immediately - wxMessageBox(szString, _("Fatal error"), wxICON_HAND); - break; - - case wxLOG_Error: - case wxLOG_Warning: - // discard earlier informational messages if this is the 1st error - if ( !m_bErrors ) { - m_aMessages.Empty(); - m_bHasMessages = TRUE; - m_bErrors = TRUE; - } - - m_aMessages.Add(szString); - break; - - default: - wxFAIL_MSG(_("unknown log level in wxLogGui::DoLog")); - } -} - -// ---------------------------------------------------------------------------- -// wxLogWindow and wxLogFrame implementation -// ---------------------------------------------------------------------------- - -// log frame class -// --------------- -class wxLogFrame : public wxFrame -{ -public: - // ctor & dtor - wxLogFrame(wxFrame *pParent, wxLogWindow *log, const char *szTitle); - virtual ~wxLogFrame(); - - // menu callbacks - void OnClose(wxCommandEvent& event); - void OnCloseWindow(wxCloseEvent& event); - void OnSave (wxCommandEvent& event); - void OnClear(wxCommandEvent& event); - - void OnIdle(wxIdleEvent&); - - // accessors - wxTextCtrl *TextCtrl() const { return m_pTextCtrl; } - -private: - enum - { - Menu_Close = 100, - Menu_Save, - Menu_Clear - }; - - // instead of closing just hide the window to be able to Show() it later - void DoClose() { Show(FALSE); } - - wxTextCtrl *m_pTextCtrl; - wxLogWindow *m_log; - - DECLARE_EVENT_TABLE() -}; - -BEGIN_EVENT_TABLE(wxLogFrame, wxFrame) - // wxLogWindow menu events - EVT_MENU(Menu_Close, wxLogFrame::OnClose) - EVT_MENU(Menu_Save, wxLogFrame::OnSave) - EVT_MENU(Menu_Clear, wxLogFrame::OnClear) - - EVT_CLOSE(wxLogFrame::OnCloseWindow) -END_EVENT_TABLE() - -wxLogFrame::wxLogFrame(wxFrame *pParent, wxLogWindow *log, const char *szTitle) - : wxFrame(pParent, -1, szTitle) -{ - m_log = log; - - // @@ kludge: wxSIMPLE_BORDER is simply to prevent wxWindows from creating - // a rich edit control instead of a normal one we want in wxMSW - m_pTextCtrl = new wxTextCtrl(this, -1, wxEmptyString, wxDefaultPosition, - wxDefaultSize, - //wxSIMPLE_BORDER | - wxTE_MULTILINE | - wxHSCROLL | - wxTE_READONLY); - - // create menu - wxMenuBar *pMenuBar = new wxMenuBar; - wxMenu *pMenu = new wxMenu; - pMenu->Append(Menu_Save, _("&Save..."), _("Save log contents to file")); - pMenu->Append(Menu_Clear, _("C&lear"), _("Clear the log contents")); - pMenu->AppendSeparator(); - pMenu->Append(Menu_Close, _("&Close"), _("Close this window")); - pMenuBar->Append(pMenu, _("&Log")); - SetMenuBar(pMenuBar); - - // status bar for menu prompts - CreateStatusBar(); - - m_log->OnFrameCreate(this); -} - -void wxLogFrame::OnClose(wxCommandEvent& WXUNUSED(event)) -{ - DoClose(); -} - -void wxLogFrame::OnCloseWindow(wxCloseEvent& WXUNUSED(event)) -{ - DoClose(); -} - -void wxLogFrame::OnSave(wxCommandEvent& WXUNUSED(event)) -{ - // get the file name - // ----------------- - const char *szFileName = wxSaveFileSelector("log", "txt", "log.txt"); - if ( szFileName == NULL ) { - // cancelled - return; - } - - // open file - // --------- - wxFile file; - bool bOk = FALSE; - if ( wxFile::Exists(szFileName) ) { - bool bAppend = FALSE; - wxString strMsg; - strMsg.Printf(_("Append log to file '%s' " - "(choosing [No] will overwrite it)?"), szFileName); - switch ( wxMessageBox(strMsg, _("Question"), wxYES_NO | wxCANCEL) ) { - case wxYES: - bAppend = TRUE; - break; - - case wxNO: - bAppend = FALSE; - break; - - case wxCANCEL: - return; - - default: - wxFAIL_MSG(_("invalid message box return value")); - } - - if ( bAppend ) { - bOk = file.Open(szFileName, wxFile::write_append); - } - else { - bOk = file.Create(szFileName, TRUE /* overwrite */); - } - } - else { - bOk = file.Create(szFileName); - } - - // retrieve text and save it - // ------------------------- - int nLines = m_pTextCtrl->GetNumberOfLines(); - for ( int nLine = 0; bOk && nLine < nLines; nLine++ ) { - bOk = file.Write(m_pTextCtrl->GetLineText(nLine) + -// we're not going to pull in the whole wxTextFile if all we need is this... -#if wxUSE_TEXTFILE - wxTextFile::GetEOL() -#else // !wxUSE_TEXTFILE - '\n' -#endif // wxUSE_TEXTFILE - ); - } - - if ( bOk ) - bOk = file.Close(); - - if ( !bOk ) { - wxLogError(_("Can't save log contents to file.")); - } - else { - wxLogStatus(this, _("Log saved to the file '%s'."), szFileName); - } -} - -void wxLogFrame::OnClear(wxCommandEvent& WXUNUSED(event)) -{ - m_pTextCtrl->Clear(); -} - -wxLogFrame::~wxLogFrame() -{ - m_log->OnFrameDelete(this); -} - -// wxLogWindow -// ----------- -wxLogWindow::wxLogWindow(wxFrame *pParent, - const char *szTitle, - bool bShow, - bool bDoPass) -{ - m_bPassMessages = bDoPass; - - m_pLogFrame = new wxLogFrame(pParent, this, szTitle); - m_pOldLog = wxLog::SetActiveTarget(this); - - if ( bShow ) - m_pLogFrame->Show(TRUE); -} - -void wxLogWindow::Show(bool bShow) -{ - m_pLogFrame->Show(bShow); -} - -void wxLogWindow::Flush() -{ - if ( m_pOldLog != NULL ) - m_pOldLog->Flush(); - - m_bHasMessages = FALSE; -} - -void wxLogWindow::DoLog(wxLogLevel level, const char *szString) -{ - // first let the previous logger show it - if ( m_pOldLog != NULL && m_bPassMessages ) { - // @@@ why can't we access protected wxLog method from here (we derive - // from wxLog)? gcc gives "DoLog is protected in this context", what - // does this mean? Anyhow, the cast is harmless and let's us do what - // we want. - ((wxLogWindow *)m_pOldLog)->DoLog(level, szString); - } - - if ( m_pLogFrame ) { - switch ( level ) { - case wxLOG_Status: - // by default, these messages are ignored by wxLog, so process - // them ourselves - { - wxString str = TimeStamp(); - str << _("Status: ") << szString; - DoLogString(str); - } - break; - - // don't put trace messages in the text window for 2 reasons: - // 1) there are too many of them - // 2) they may provoke other trace messages thus sending a program - // into an infinite loop - case wxLOG_Trace: - break; - - default: - // and this will format it nicely and call our DoLogString() - wxLog::DoLog(level, szString); - } - } - - m_bHasMessages = TRUE; -} - -void wxLogWindow::DoLogString(const char *szString) -{ - // put the text into our window - wxTextCtrl *pText = m_pLogFrame->TextCtrl(); - - // remove selection (WriteText is in fact ReplaceSelection) - #ifdef __WXMSW__ - long nLen = pText->GetLastPosition(); - pText->SetSelection(nLen, nLen); - #endif // Windows - - pText->WriteText(szString); - pText->WriteText("\n"); // "\n" ok here (_not_ "\r\n") - - // TODO ensure that the line can be seen -} - -wxFrame *wxLogWindow::GetFrame() const -{ - return m_pLogFrame; -} - -void wxLogWindow::OnFrameCreate(wxFrame * WXUNUSED(frame)) -{ -} - -void wxLogWindow::OnFrameDelete(wxFrame * WXUNUSED(frame)) -{ - m_pLogFrame = (wxLogFrame *)NULL; -} - -wxLogWindow::~wxLogWindow() -{ - delete m_pOldLog; - - // may be NULL if log frame already auto destroyed itself - delete m_pLogFrame; -} - -#endif //wxUSE_NOGUI - -// ============================================================================ -// Global functions/variables -// ============================================================================ - -// ---------------------------------------------------------------------------- -// static variables -// ---------------------------------------------------------------------------- -wxLog *wxLog::ms_pLogger = (wxLog *) NULL; -bool wxLog::ms_doLog = TRUE; -bool wxLog::ms_bAutoCreate = TRUE; -wxTraceMask wxLog::ms_ulTraceMask = (wxTraceMask)0; - -// ---------------------------------------------------------------------------- -// stdout error logging helper -// ---------------------------------------------------------------------------- - -// helper function: wraps the message and justifies it under given position -// (looks more pretty on the terminal). Also adds newline at the end. -// -// @@ this is now disabled until I find a portable way of determining the -// terminal window size (ok, I found it but does anybody really cares?) -#ifdef LOG_PRETTY_WRAP -static void wxLogWrap(FILE *f, const char *pszPrefix, const char *psz) -{ - size_t nMax = 80; // @@@@ - size_t nStart = strlen(pszPrefix); - fputs(pszPrefix, f); - - size_t n; - while ( *psz != '\0' ) { - for ( n = nStart; (n < nMax) && (*psz != '\0'); n++ ) - putc(*psz++, f); - - // wrapped? - if ( *psz != '\0' ) { - /*putc('\n', f);*/ - for ( n = 0; n < nStart; n++ ) - putc(' ', f); - - // as we wrapped, squeeze all white space - while ( isspace(*psz) ) - psz++; - } - } - - putc('\n', f); -} -#endif //LOG_PRETTY_WRAP - -// ---------------------------------------------------------------------------- -// error code/error message retrieval functions -// ---------------------------------------------------------------------------- - -// get error code from syste -unsigned long wxSysErrorCode() -{ - #ifdef __WXMSW__ - #ifdef __WIN32__ - return ::GetLastError(); - #else //WIN16 - // @@@@ what to do on Windows 3.1? - return 0; - #endif //WIN16/32 - #else //Unix - return errno; - #endif //Win/Unix -} - -// get error message from system -const char *wxSysErrorMsg(unsigned long nErrCode) -{ - if ( nErrCode == 0 ) - nErrCode = wxSysErrorCode(); - - #ifdef __WXMSW__ - #ifdef __WIN32__ - static char s_szBuf[LOG_BUFFER_SIZE / 2]; - - // get error message from system - LPVOID lpMsgBuf; - FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, - NULL, nErrCode, - MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), - (LPTSTR)&lpMsgBuf, - 0, NULL); - - // copy it to our buffer and free memory - strncpy(s_szBuf, (const char *)lpMsgBuf, WXSIZEOF(s_szBuf) - 1); - s_szBuf[WXSIZEOF(s_szBuf) - 1] = '\0'; - LocalFree(lpMsgBuf); - - // returned string is capitalized and ended with '\r\n' - bad - s_szBuf[0] = (char)wxToLower(s_szBuf[0]); - size_t len = strlen(s_szBuf); - if ( len > 0 ) { - // truncate string - if ( s_szBuf[len - 2] == '\r' ) - s_szBuf[len - 2] = '\0'; - } - - return s_szBuf; - #else //Win16 - // TODO @@@@ - return NULL; - #endif // Win16/32 - #else // Unix - return strerror(nErrCode); - #endif // Win/Unix -} - -// ---------------------------------------------------------------------------- -// debug helper -// ---------------------------------------------------------------------------- - -#ifdef __WXDEBUG__ - -void Trap() -{ - #ifdef __WXMSW__ - DebugBreak(); - #elif defined(__WXSTUBS__) - // TODO - #elif defined(__WXMAC__) - #if __powerc - Debugger(); - #else - SysBreak(); - #endif - #else // Unix - raise(SIGTRAP); - #endif // Win/Unix -} - -// this function is called when an assert fails -void wxOnAssert(const char *szFile, int nLine, const char *szMsg) -{ - // this variable can be set to true to suppress "assert failure" messages - static bool s_bNoAsserts = FALSE; - static bool s_bInAssert = FALSE; - - if ( s_bInAssert ) { - // He-e-e-e-elp!! we're trapped in endless loop - Trap(); - - return; - } - - s_bInAssert = TRUE; - - char szBuf[LOG_BUFFER_SIZE]; - sprintf(szBuf, _("Assert failed in file %s at line %d"), szFile, nLine); - if ( szMsg != NULL ) { - strcat(szBuf, ": "); - strcat(szBuf, szMsg); - } - else { - strcat(szBuf, "."); - } - - if ( !s_bNoAsserts ) { - // send it to the normal log destination - wxLogDebug(szBuf); - - #if wxUSE_NOGUI - Trap(); - #else - strcat(szBuf, _("\nDo you want to stop the program?" - "\nYou can also choose [Cancel] to suppress " - "further warnings.")); - - switch ( wxMessageBox(szBuf, _("Debug"), - wxYES_NO | wxCANCEL | wxICON_STOP ) ) { - case wxYES: - Trap(); - break; - - case wxCANCEL: - s_bNoAsserts = TRUE; - break; - - //case wxNO: nothing to do - } - #endif // USE_NOGUI - } - - s_bInAssert = FALSE; -} - -#endif //WXDEBUG - diff --git a/src/common/matrix.cpp b/src/common/matrix.cpp deleted file mode 100644 index 84beee3b61..0000000000 --- a/src/common/matrix.cpp +++ /dev/null @@ -1,267 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: matrix.cpp -// Purpose: wxTransformMatrix class -// Author: Chris Breeze, Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "matrix.h" -#endif - -// Note: this is intended to be used in wxDC at some point to replace -// the current system of scaling/translation. It is not yet used. - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/defs.h" -#endif - -#include "wx/matrix.h" -#include - -const double pi = 3.1415926535; - -wxTransformMatrix::wxTransformMatrix(void) -{ - m_isIdentity = FALSE; - - Identity(); -} - -wxTransformMatrix::wxTransformMatrix(const wxTransformMatrix& mat) -{ - (*this) = mat; -} - -double wxTransformMatrix::GetValue(int row, int col) const -{ - if (row < 0 || row > 2 || col < 0 || col > 2) - return 0.0; - - return m_matrix[row][col]; -} - -void wxTransformMatrix::SetValue(int row, int col, double value) -{ - if (row < 0 || row > 2 || col < 0 || col > 2) - return; - - m_matrix[row][col] = value; -} - -void wxTransformMatrix::operator = (const wxTransformMatrix& mat) -{ - int i, j; - for (i = 0; i < 3; i++) - { - for (j = 0; j < 3; j++) - { - m_matrix[i][j] = mat.m_matrix[i][j]; - } - } - m_isIdentity = mat.m_isIdentity; -} - -bool wxTransformMatrix::operator == (const wxTransformMatrix& mat) -{ - int i, j; - for (i = 0; i < 3; i++) - { - for (j = 0; j < 3; j++) - { - if (m_matrix[i][j] != mat.m_matrix[i][j]) - return FALSE; - } - } - return TRUE; -} - -bool wxTransformMatrix::operator != (const wxTransformMatrix& mat) -{ - return (! ((*this) == mat)); -} - -double& wxTransformMatrix::operator()(int row, int col) -{ - if (row < 0 || row > 2 || col < 0 || col > 2) - return m_matrix[0][0]; - - return m_matrix[row][col]; -} - -double wxTransformMatrix::operator()(int row, int col) const -{ - if (row < 0 || row > 2 || col < 0 || col > 2) - return 0.0; - - return m_matrix[row][col]; -} - -// Invert matrix -bool wxTransformMatrix::Invert(void) -{ - double inverseMatrix[3][3]; - - // calculate the adjoint - inverseMatrix[0][0] = wxCalculateDet(m_matrix[1][1],m_matrix[2][1],m_matrix[1][2],m_matrix[2][2]); - inverseMatrix[0][1] = -wxCalculateDet(m_matrix[0][1],m_matrix[2][1],m_matrix[0][2],m_matrix[2][2]); - inverseMatrix[0][2] = wxCalculateDet(m_matrix[0][1],m_matrix[1][1],m_matrix[0][2],m_matrix[1][2]); - - inverseMatrix[1][0] = -wxCalculateDet(m_matrix[1][0],m_matrix[2][0],m_matrix[1][2],m_matrix[2][2]); - inverseMatrix[1][1] = wxCalculateDet(m_matrix[0][0],m_matrix[2][0],m_matrix[0][2],m_matrix[2][2]); - inverseMatrix[1][2] = -wxCalculateDet(m_matrix[0][0],m_matrix[1][0],m_matrix[0][2],m_matrix[1][2]); - - inverseMatrix[2][0] = wxCalculateDet(m_matrix[1][0],m_matrix[2][0],m_matrix[1][1],m_matrix[2][1]); - inverseMatrix[2][1] = -wxCalculateDet(m_matrix[0][0],m_matrix[2][0],m_matrix[0][1],m_matrix[2][1]); - inverseMatrix[2][2] = wxCalculateDet(m_matrix[0][0],m_matrix[1][0],m_matrix[0][1],m_matrix[1][1]); - - // now divide by the determinant - double det = m_matrix[0][0] * inverseMatrix[0][0] + m_matrix[0][1] * inverseMatrix[1][0] + m_matrix[0][2] * inverseMatrix[2][0]; - if (det != 0.0) - { - inverseMatrix[0][0] /= det; inverseMatrix[1][0] /= det; inverseMatrix[2][0] /= det; - inverseMatrix[0][1] /= det; inverseMatrix[1][1] /= det; inverseMatrix[2][1] /= det; - inverseMatrix[0][2] /= det; inverseMatrix[1][2] /= det; inverseMatrix[2][2] /= det; - - int i, j; - for (i = 0; i < 3; i++) - { - for (j = 0; j < 3; j++) - { - m_matrix[i][j] = inverseMatrix[i][j]; - } - } - m_isIdentity = IsIdentity1(); - return TRUE; - } - else - { - return FALSE; - } -} - -// Make into identity matrix -bool wxTransformMatrix::Identity(void) -{ - m_matrix[0][0] = m_matrix[1][1] = m_matrix[2][2] = 1.0; - m_matrix[1][0] = m_matrix[2][0] = m_matrix[0][1] = m_matrix[2][1] = m_matrix[0][2] = m_matrix[1][2] = 0.0; - m_isIdentity = TRUE; - - return TRUE; -} - -// Scale by scale (isotropic scaling i.e. the same in x and y): -// | scale 0 0 | -// matrix' = | 0 scale 0 | x matrix -// | 0 0 scale | -// -bool wxTransformMatrix::Scale(double scale) -{ - int i, j; - for (i = 0; i < 3; i++) - { - for (j = 0; j < 3; j++) - { - m_matrix[i][j] *= scale; - } - } - m_isIdentity = IsIdentity1(); - - return TRUE; -} - -// Translate by dx, dy: -// | 1 0 dx | -// matrix' = | 0 1 dy | x matrix -// | 0 0 1 | -// -bool wxTransformMatrix::Translate(double dx, double dy) -{ - int i; - for (i = 0; i < 3; i++) - m_matrix[i][0] += dx * m_matrix[i][2]; - for (i = 0; i < 3; i++) - m_matrix[i][1] += dy * m_matrix[i][2]; - - m_isIdentity = IsIdentity1(); - - return TRUE; -} - -// Rotate by the given number of degrees: -// | cos sin 0 | -// matrix' = | -sin cos 0 | x matrix -// | 0 0 1 | -// -bool wxTransformMatrix::Rotate(double degrees) -{ - double angle = degrees * pi / 180.0; - double s = sin(angle); - double c = cos(angle); - - m_matrix[0][0] = c * m_matrix[0][0] + s * m_matrix[0][1]; - m_matrix[1][0] = c * m_matrix[1][0] + s * m_matrix[1][1]; - m_matrix[2][0] = c * m_matrix[2][0] + s * m_matrix[2][1]; - m_matrix[0][2] = c * m_matrix[0][1] - s * m_matrix[0][0]; - m_matrix[1][2] = c * m_matrix[1][1] - s * m_matrix[1][0]; - m_matrix[2][2] = c * m_matrix[2][1] - s * m_matrix[2][0]; - - m_isIdentity = IsIdentity1(); - - return TRUE; -} - -// Transform a point from logical to device coordinates -bool wxTransformMatrix::TransformPoint(double x, double y, double& tx, double& ty) const -{ - if (IsIdentity()) - { - tx = x; ty = y; return TRUE; - } - - tx = x * m_matrix[0][0] + y * m_matrix[1][0] + m_matrix[2][0]; - ty = x * m_matrix[0][1] + y * m_matrix[1][1] + m_matrix[2][1]; - - return TRUE; -} - -// Transform a point from device to logical coordinates. - -// Example of use: -// wxTransformMatrix mat = dc.GetTransformation(); -// mat.Invert(); -// mat.InverseTransformPoint(x, y, x1, y1); -// OR (shorthand:) -// dc.LogicalToDevice(x, y, x1, y1); -// The latter is slightly less efficient if we're doing several -// conversions, since the matrix is inverted several times. - -bool wxTransformMatrix::InverseTransformPoint(double x, double y, double& tx, double& ty) const -{ - if (IsIdentity()) - { - tx = x; ty = y; return TRUE; - } - - double z = (1.0 - m_matrix[0][2] * x - m_matrix[1][2] * y) / m_matrix[2][2]; - if (z == 0.0) - { -// z = 0.0000001; - return FALSE; - } - tx = x * m_matrix[0][0] + y * m_matrix[1][0] + z * m_matrix[2][0]; - ty = x * m_matrix[0][1] + y * m_matrix[1][1] + z * m_matrix[2][1]; - return TRUE; -} - diff --git a/src/common/memory.cpp b/src/common/memory.cpp deleted file mode 100644 index 81245b504f..0000000000 --- a/src/common/memory.cpp +++ /dev/null @@ -1,1199 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: memory.cpp -// Purpose: Memory checking implementation -// Author: Arthur Seaton, Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "memory.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/defs.h" -#endif - -#if (defined(__WXDEBUG__) && wxUSE_MEMORY_TRACING) || wxUSE_DEBUG_CONTEXT - -#ifdef __GNUG__ -// #pragma implementation -#endif - -#ifndef WX_PRECOMP -#include "wx/utils.h" -#include "wx/app.h" -#endif - -#include -#include - -#if wxUSE_IOSTREAMH -#include -#include -#else -#include -#include -# ifdef _MSC_VER - using namespace std; -# endif -#endif - -#if !defined(__WATCOMC__) && !defined(__VMS__) && !defined( __MWERKS__ ) && !defined(__SALFORDC__) -#include -#endif - -#include -#include - -#ifdef __WXMSW__ -#include - -#ifdef GetClassInfo -#undef GetClassInfo -#endif - -#ifdef GetClassName -#undef GetClassName -#endif - -#endif - -#include "wx/memory.h" - -#ifdef new -#undef new -#endif - -// wxDebugContext wxTheDebugContext; -/* - Redefine new and delete so that we can pick up situations where: - - we overwrite or underwrite areas of malloc'd memory. - - we use uninitialise variables - Only do this in debug mode. - - We change new to get enough memory to allocate a struct, followed - by the caller's requested memory, followed by a tag. The struct - is used to create a doubly linked list of these areas and also - contains another tag. The tags are used to determine when the area - has been over/under written. -*/ - - -/* - Values which are used to set the markers which will be tested for - under/over write. There are 3 of these, one in the struct, one - immediately after the struct but before the caller requested memory and - one immediately after the requested memory. -*/ -#define MemStartCheck 0x23A8 -#define MemMidCheck 0xA328 -#define MemEndCheck 0x8A32 -#define MemFillChar 0xAF -#define MemStructId 0x666D - -/* - External interface for the wxMemStruct class. Others are - defined inline within the class def. Here we only need to be able - to add and delete nodes from the list and handle errors in some way. -*/ - -/* - Used for internal "this shouldn't happen" type of errors. -*/ -void wxMemStruct::ErrorMsg (const char * mesg) -{ - wxLogDebug("wxWindows memory checking error: %s", mesg); - PrintNode (); - -// << m_fileName << ' ' << m_lineNum << endl; -} - -/* - Used when we find an overwrite or an underwrite error. -*/ -void wxMemStruct::ErrorMsg () -{ - wxLogDebug("wxWindows over/underwrite memory error:"); - PrintNode (); - -// cerr << m_fileName << ' ' << m_lineNum << endl; -} - - -/* - We want to find out if pointers have been overwritten as soon as is - possible, so test everything before we dereference it. Of course it's still - quite possible that, if things have been overwritten, this function will - fall over, but the only way of dealing with that would cost too much in terms - of time. -*/ -int wxMemStruct::AssertList () -{ - if (wxDebugContext::GetHead () != 0 && ! (wxDebugContext::GetHead ())->AssertIt () || - wxDebugContext::GetTail () != 0 && ! wxDebugContext::GetTail ()->AssertIt ()) { - ErrorMsg ("Head or tail pointers trashed"); - return 0; - } - return 1; -} - - -/* - Check that the thing we're pointing to has the correct id for a wxMemStruct - object and also that it's previous and next pointers are pointing at objects - which have valid ids. - This is definitely not perfect since we could fall over just trying to access - any of the slots which we use here, but I think it's about the best that I - can do without doing something like taking all new wxMemStruct pointers and - comparing them against all known pointer within the list and then only - doing this sort of check _after_ you've found the pointer in the list. That - would be safer, but also much more time consuming. -*/ -int wxMemStruct::AssertIt () -{ - return (m_id == MemStructId && - (m_prev == 0 || m_prev->m_id == MemStructId) && - (m_next == 0 || m_next->m_id == MemStructId)); -} - - -/* - Additions are always at the tail of the list. - Returns 0 on error, non-zero on success. -*/ -int wxMemStruct::Append () -{ - if (! AssertList ()) - return 0; - - if (wxDebugContext::GetHead () == 0) { - if (wxDebugContext::GetTail () != 0) { - ErrorMsg ("Null list should have a null tail pointer"); - return 0; - } - (void) wxDebugContext::SetHead (this); - (void) wxDebugContext::SetTail (this); - } else { - wxDebugContext::GetTail ()->m_next = this; - this->m_prev = wxDebugContext::GetTail (); - (void) wxDebugContext::SetTail (this); - } - return 1; -} - - -/* - Don't actually free up anything here as the space which is used - by the node will be free'd up when the whole block is free'd. - Returns 0 on error, non-zero on success. -*/ -int wxMemStruct::Unlink () -{ - if (! AssertList ()) - return 0; - - if (wxDebugContext::GetHead () == 0 || wxDebugContext::GetTail () == 0) { - ErrorMsg ("Trying to remove node from empty list"); - return 0; - } - - // Handle the part of the list before this node. - if (m_prev == 0) { - if (this != wxDebugContext::GetHead ()) { - ErrorMsg ("No previous node for non-head node"); - return 0; - } - (void) wxDebugContext::SetHead (m_next); - } else { - if (! m_prev->AssertIt ()) { - ErrorMsg ("Trashed previous pointer"); - return 0; - } - - if (m_prev->m_next != this) { - ErrorMsg ("List is inconsistent"); - return 0; - } - m_prev->m_next = m_next; - } - - // Handle the part of the list after this node. - if (m_next == 0) { - if (this != wxDebugContext::GetTail ()) { - ErrorMsg ("No next node for non-tail node"); - return 0; - } - (void) wxDebugContext::SetTail (m_prev); - } else { - if (! m_next->AssertIt ()) { - ErrorMsg ("Trashed next pointer"); - return 0; - } - - if (m_next->m_prev != this) { - ErrorMsg ("List is inconsistent"); - return 0; - } - m_next->m_prev = m_prev; - } - - return 1; -} - - - -/* - Checks a node and block of memory to see that the markers are still - intact. -*/ -int wxMemStruct::CheckBlock () -{ - int nFailures = 0; - - if (m_firstMarker != MemStartCheck) { - nFailures++; - ErrorMsg (); - } - - char * pointer = wxDebugContext::MidMarkerPos ((char *) this); - if (* (wxMarkerType *) pointer != MemMidCheck) { - nFailures++; - ErrorMsg (); - } - - pointer = wxDebugContext::EndMarkerPos ((char *) this, RequestSize ()); - if (* (wxMarkerType *) pointer != MemEndCheck) { - nFailures++; - ErrorMsg (); - } - - return nFailures; -} - - -/* - Check the list of nodes to see if they are all ok. -*/ -int wxMemStruct::CheckAllPrevious () -{ - int nFailures = 0; - - for (wxMemStruct * st = this->m_prev; st != 0; st = st->m_prev) { - if (st->AssertIt ()) - nFailures += st->CheckBlock (); - else - return -1; - } - - return nFailures; -} - - -/* - When we delete a node we set the id slot to a specific value and then test - against this to see if a nodes have been deleted previously. I don't - just set the entire memory to the fillChar because then I'd be overwriting - useful stuff like the vtbl which may be needed to output the error message - including the file name and line numbers. Without this info the whole point - of this class is lost! -*/ -void wxMemStruct::SetDeleted () -{ - m_id = MemFillChar; -} - -int wxMemStruct::IsDeleted () -{ - return (m_id == MemFillChar); -} - - -/* - Print out a single node. There are many far better ways of doing this - but this will suffice for now. -*/ -void wxMemStruct::PrintNode () -{ - if (m_isObject) - { - wxObject *obj = (wxObject *)m_actualData; - wxClassInfo *info = obj->GetClassInfo(); - - // Let's put this in standard form so IDEs can load the file at the appropriate - // line - wxString msg(""); - - if (m_fileName) - msg.Printf("%s(%d): ", m_fileName, (int)m_lineNum); - - if (info && info->GetClassName()) - msg += info->GetClassName(); - else - msg += "object"; - - wxString msg2; - msg2.Printf(" at $%lX, size %d", (long)GetActualData(), (int)RequestSize()); - msg += msg2; - - wxLogDebug(msg); - } - else - { - wxString msg(""); - - if (m_fileName) - msg.Printf("%s(%d): ", m_fileName, (int)m_lineNum); - msg += ("non-object data"); - wxString msg2; - msg2.Printf(" at $%lX, size %d\n", (long)GetActualData(), (int)RequestSize()); - msg += msg2; - - wxLogDebug(msg); - } -} - -void wxMemStruct::Dump () -{ - if (!ValidateNode()) return; - - if (m_isObject) - { - wxObject *obj = (wxObject *)m_actualData; - - wxString msg(""); - if (m_fileName) - msg.Printf("%s(%d): ", m_fileName, (int)m_lineNum); - - - /* TODO: We no longer have a stream (using wxLogDebug) so we can't dump it. - * Instead, do what wxObject::Dump does. - * What should we do long-term, eliminate Dumping? Or specify - * that MyClass::Dump should use wxLogDebug? Ugh. - obj->Dump(wxDebugContext::GetStream()); - */ - - if (obj->GetClassInfo() && obj->GetClassInfo()->GetClassName()) - msg += obj->GetClassInfo()->GetClassName(); - else - msg += "unknown object class"; - - wxString msg2(""); - msg2.Printf(" at $%lX, size %d", (long)GetActualData(), (int)RequestSize()); - msg += msg2; - - wxLogDebug(msg); - } - else - { - wxString msg(""); - if (m_fileName) - msg.Printf("%s(%d): ", m_fileName, (int)m_lineNum); - - wxString msg2(""); - msg2.Printf("non-object data at $%lX, size %d", (long)GetActualData(), (int)RequestSize() ); - msg += msg2; - wxLogDebug(msg); - } -} - - -/* - Validate a node. Check to see that the node is "clean" in the sense - that nothing has over/underwritten it etc. -*/ -int wxMemStruct::ValidateNode () -{ - char * startPointer = (char *) this; - if (!AssertIt ()) { - if (IsDeleted ()) - ErrorMsg ("Object already deleted"); - else { - // Can't use the error routines as we have no recognisable object. -#ifndef __WXGTK__ - wxLogDebug("Can't verify memory struct - all bets are off!"); -#endif - } - return 0; - } - -/* - int i; - for (i = 0; i < wxDebugContext::TotSize (requestSize ()); i++) - cout << startPointer [i]; - cout << endl; -*/ - if (Marker () != MemStartCheck) - ErrorMsg (); - if (* (wxMarkerType *) wxDebugContext::MidMarkerPos (startPointer) != MemMidCheck) - ErrorMsg (); - if (* (wxMarkerType *) wxDebugContext::EndMarkerPos (startPointer, - RequestSize ()) != - MemEndCheck) - ErrorMsg (); - - // Back to before the extra buffer and check that - // we can still read what we originally wrote. - if (Marker () != MemStartCheck || - * (wxMarkerType *) wxDebugContext::MidMarkerPos (startPointer) - != MemMidCheck || - * (wxMarkerType *) wxDebugContext::EndMarkerPos (startPointer, - RequestSize ()) != MemEndCheck) - { - ErrorMsg (); - return 0; - } - - return 1; -} - -/* - The wxDebugContext class. -*/ - -wxMemStruct *wxDebugContext::m_head = NULL; -wxMemStruct *wxDebugContext::m_tail = NULL; -// ostream *wxDebugContext::m_debugStream = NULL; -// streambuf *wxDebugContext::m_streamBuf = NULL; - -// Must initialise these in wxEntry, and then delete them just before wxEntry exits -streambuf *wxDebugContext::m_streamBuf = NULL; -ostream *wxDebugContext::m_debugStream = NULL; - -bool wxDebugContext::m_checkPrevious = FALSE; -int wxDebugContext::debugLevel = 1; -bool wxDebugContext::debugOn = TRUE; -wxMemStruct *wxDebugContext::checkPoint = NULL; - -wxDebugContext::wxDebugContext(void) -{ -// m_streamBuf = new wxDebugStreamBuf; -// m_debugStream = new ostream(m_streamBuf); -} - -wxDebugContext::~wxDebugContext(void) -{ - SetStream(NULL, NULL); -} - -/* - * It's bizarre, but with BC++ 4.5, the value of str changes - * between SetFile and SetStream. - */ - -void wxDebugContext::SetStream(ostream *str, streambuf *buf) -{ - if (m_debugStream) - { - m_debugStream->flush(); - delete m_debugStream; - } - m_debugStream = NULL; - - // Not allowed in Watcom (~streambuf is protected). - // Is this trying to say something significant to us?? -#ifndef __WATCOMC__ - if (m_streamBuf) - { - streambuf* oldBuf = m_streamBuf; - m_streamBuf = NULL; - delete oldBuf; - } -#endif - m_streamBuf = buf; - m_debugStream = str; -} - -bool wxDebugContext::SetFile(const wxString& file) -{ - ofstream *str = new ofstream((char *) (const char *)file); - - if (str->bad()) - { - delete str; - return FALSE; - } - else - { - SetStream(str); - return TRUE; - } -} - -bool wxDebugContext::SetStandardError(void) -{ - // Obsolete -#if 0 -#if !defined(_WINDLL) - wxDebugStreamBuf *buf = new wxDebugStreamBuf; - ostream *stream = new ostream(m_streamBuf); - SetStream(stream, buf); - return TRUE; -#else - return FALSE; -#endif -#endif - return FALSE; -} - - -/* - Work out the positions of the markers by creating an array of 2 markers - and comparing the addresses of the 2 elements. Use this number as the - alignment for markers. -*/ -size_t wxDebugContext::CalcAlignment () -{ - wxMarkerType ar[2]; - return (char *) &ar[1] - (char *) &ar[0]; -} - - -char * wxDebugContext::StructPos (const char * buf) -{ - return (char *) buf; -} - -char * wxDebugContext::MidMarkerPos (const char * buf) -{ - return StructPos (buf) + PaddedSize (sizeof (wxMemStruct)); -} - -char * wxDebugContext::CallerMemPos (const char * buf) -{ - return MidMarkerPos (buf) + PaddedSize (sizeof(wxMarkerType)); -} - - -char * wxDebugContext::EndMarkerPos (const char * buf, const size_t size) -{ - return CallerMemPos (buf) + PaddedSize (size); -} - - -/* - Slightly different as this takes a pointer to the start of the caller - requested region and returns a pointer to the start of the buffer. - */ -char * wxDebugContext::StartPos (const char * caller) -{ - return ((char *) (caller - wxDebugContext::PaddedSize (sizeof(wxMarkerType)) - - wxDebugContext::PaddedSize (sizeof (wxMemStruct)))); -} - -/* - We may need padding between various parts of the allocated memory. - Given a size of memory, this returns the amount of memory which should - be allocated in order to allow for alignment of the following object. - - I don't know how portable this stuff is, but it seems to work for me at - the moment. It would be real nice if I knew more about this! -*/ -size_t wxDebugContext::GetPadding (const size_t size) -{ - size_t pad = size % CalcAlignment (); - return (pad) ? sizeof(wxMarkerType) - pad : 0; -} - - - -size_t wxDebugContext::PaddedSize (const size_t size) -{ - return size + GetPadding (size); -} - -/* - Returns the total amount of memory which we need to get from the system - in order to satisfy a caller request. This includes space for the struct - plus markers and the caller's memory as well. -*/ -size_t wxDebugContext::TotSize (const size_t reqSize) -{ - return (PaddedSize (sizeof (wxMemStruct)) + PaddedSize (reqSize) + - 2 * sizeof(wxMarkerType)); -} - - -/* - Traverse the list of nodes executing the given function on each node. -*/ -void wxDebugContext::TraverseList (PmSFV func, wxMemStruct *from) -{ - if (!from) - from = wxDebugContext::GetHead (); - - for (wxMemStruct * st = from; st != 0; st = st->m_next) - { - void* data = st->GetActualData(); -// if ((data != (void*)m_debugStream) && (data != (void*) m_streamBuf)) - if (data != (void*) wxLog::GetActiveTarget()) - { - (st->*func) (); - } - } -} - - -/* - Print out the list. - */ -bool wxDebugContext::PrintList (void) -{ -#ifdef __WXDEBUG__ -// if (!HasStream()) -// return FALSE; - - TraverseList ((PmSFV)&wxMemStruct::PrintNode, (checkPoint ? checkPoint->m_next : (wxMemStruct*)NULL)); - - return TRUE; -#else - return FALSE; -#endif -} - -bool wxDebugContext::Dump(void) -{ -#ifdef __WXDEBUG__ -// if (!HasStream()) -// return FALSE; - - if (TRUE) - { - char* appName = "application"; - wxString appNameStr(""); - if (wxTheApp) - { - appNameStr = wxTheApp->GetAppName(); - appName = (char*) (const char*) appNameStr; - wxLogDebug("----- Memory dump of %s at %s -----", appName, WXSTRINGCAST wxNow() ); - } - else - { - wxLogDebug( "----- Memory dump -----" ); - } - } - TraverseList ((PmSFV)&wxMemStruct::Dump, (checkPoint ? checkPoint->m_next : (wxMemStruct*)NULL)); - - wxLogDebug( "" ); - wxLogDebug( "" ); - - return TRUE; -#else - return FALSE; -#endif -} - -struct wxDebugStatsStruct -{ - long instanceCount; - long totalSize; - char *instanceClass; - wxDebugStatsStruct *next; -}; - -static wxDebugStatsStruct *FindStatsStruct(wxDebugStatsStruct *st, char *name) -{ - while (st) - { - if (strcmp(st->instanceClass, name) == 0) - return st; - st = st->next; - } - return NULL; -} - -static wxDebugStatsStruct *InsertStatsStruct(wxDebugStatsStruct *head, wxDebugStatsStruct *st) -{ - st->next = head; - return st; -} - -bool wxDebugContext::PrintStatistics(bool detailed) -{ -#ifdef __WXDEBUG__ -// if (!HasStream()) -// return FALSE; - - if (TRUE) - { - char* appName = "application"; - wxString appNameStr(""); - if (wxTheApp) - { - appNameStr = wxTheApp->GetAppName(); - appName = (char*) (const char*) appNameStr; - wxLogDebug("----- Memory statistics of %s at %s -----", appName, WXSTRINGCAST wxNow() ); - } - else - { - wxLogDebug( "----- Memory statistics -----" ); - } - } - - bool currentMode = GetDebugMode(); - SetDebugMode(FALSE); - - long noNonObjectNodes = 0; - long noObjectNodes = 0; - long totalSize = 0; - - wxDebugStatsStruct *list = NULL; - - wxMemStruct *from = (checkPoint ? checkPoint->m_next : (wxMemStruct*)NULL ); - if (!from) - from = wxDebugContext::GetHead (); - - wxMemStruct *st; - for (st = from; st != 0; st = st->m_next) - { - void* data = st->GetActualData(); -// if (detailed && (data != (void*)m_debugStream) && (data != (void*) m_streamBuf)) - if (detailed && (data != (void*) wxLog::GetActiveTarget())) - { - char *className = "nonobject"; - if (st->m_isObject && st->GetActualData()) - { - wxObject *obj = (wxObject *)st->GetActualData(); - if (obj->GetClassInfo()->GetClassName()) - className = obj->GetClassInfo()->GetClassName(); - } - wxDebugStatsStruct *stats = FindStatsStruct(list, className); - if (!stats) - { - stats = (wxDebugStatsStruct *)malloc(sizeof(wxDebugStatsStruct)); - stats->instanceClass = className; - stats->instanceCount = 0; - stats->totalSize = 0; - list = InsertStatsStruct(list, stats); - } - stats->instanceCount ++; - stats->totalSize += st->RequestSize(); - } - -// if ((data != (void*)m_debugStream) && (data != (void*) m_streamBuf)) - if (data != (void*) wxLog::GetActiveTarget()) - { - totalSize += st->RequestSize(); - if (st->m_isObject) - noObjectNodes ++; - else - noNonObjectNodes ++; - } - } - - if (detailed) - { - while (list) - { - wxLogDebug("%ld objects of class %s, total size %ld", - list->instanceCount, list->instanceClass, list->totalSize); - wxDebugStatsStruct *old = list; - list = old->next; - free((char *)old); - } - wxLogDebug(""); - } - - SetDebugMode(currentMode); - - wxLogDebug("Number of object items: %ld", noObjectNodes); - wxLogDebug("Number of non-object items: %ld", noNonObjectNodes); - wxLogDebug("Total allocated size: %ld", totalSize); - wxLogDebug(""); - wxLogDebug(""); - - return TRUE; -#else - return FALSE; -#endif -} - -bool wxDebugContext::PrintClasses(void) -{ -// if (!HasStream()) -// return FALSE; - - if (TRUE) - { - char* appName = "application"; - wxString appNameStr(""); - if (wxTheApp) - { - appNameStr = wxTheApp->GetAppName(); - appName = (char*) (const char*) appNameStr; - wxLogDebug("----- Classes in %s -----", appName); - } - } - - int n = 0; - wxNode *node; - wxClassInfo *info; - - wxClassInfo::sm_classTable->BeginFind(); - node = wxClassInfo::sm_classTable->Next(); - while (node) - { - info = (wxClassInfo *)node->Data(); - if (info->GetClassName()) - { - wxString msg(info->GetClassName()); - msg += " "; - - if (info->GetBaseClassName1() && !info->GetBaseClassName2()) - { - msg += "is a "; - msg += info->GetBaseClassName1(); - } - else if (info->GetBaseClassName1() && info->GetBaseClassName2()) - { - msg += "is a "; - msg += info->GetBaseClassName1() ; - msg += ", "; - msg += info->GetBaseClassName2() ; - } - if (info->GetConstructor()) - msg += ": dynamic"; - - wxLogDebug(msg); - } - node = wxClassInfo::sm_classTable->Next(); - n ++; - } - wxLogDebug(""); - wxLogDebug("There are %d classes derived from wxObject.", n); - wxLogDebug(""); - wxLogDebug(""); - return TRUE; -} - -void wxDebugContext::SetCheckpoint(bool all) -{ - if (all) - checkPoint = NULL; - else - checkPoint = m_tail; -} - -// Checks all nodes since checkpoint, or since start. -int wxDebugContext::Check(bool checkAll) -{ - int nFailures = 0; - - wxMemStruct *from = (checkPoint ? checkPoint->m_next : (wxMemStruct*)NULL ); - if (!from || checkAll) - from = wxDebugContext::GetHead (); - - for (wxMemStruct * st = from; st != 0; st = st->m_next) - { - if (st->AssertIt ()) - nFailures += st->CheckBlock (); - else - return -1; - } - - return nFailures; -} - -// Count the number of non-wxDebugContext-related objects -// that are outstanding -int wxDebugContext::CountObjectsLeft(bool sinceCheckpoint) -{ - int n = 0; - - wxMemStruct *from = NULL; - if (sinceCheckpoint && checkPoint) - from = checkPoint->m_next; - else - from = wxDebugContext::GetHead () ; - - for (wxMemStruct * st = from; st != 0; st = st->m_next) - { - void* data = st->GetActualData(); -// if ((data != (void*)m_debugStream) && (data != (void*) m_streamBuf)) - if (data != (void*) wxLog::GetActiveTarget()) - n ++; - } - - return n ; -} - -/* - The global operator new used for everything apart from getting - dynamic storage within this function itself. -*/ - -// We'll only do malloc and free for the moment: leave the interesting -// stuff for the wxObject versions. - -#if defined(__WXDEBUG__) && wxUSE_GLOBAL_MEMORY_OPERATORS - -#ifdef new -#undef new -#endif - -// Seems OK all of a sudden. Maybe to do with linking with multithreaded library? -#if 0 // def _MSC_VER -#define NO_DEBUG_ALLOCATION -#endif - -// Unfortunately ~wxDebugStreamBuf doesn't work (VC++ 5) when we enable the debugging -// code. I have no idea why. In BC++ 4.5, we have a similar problem the debug -// stream myseriously changing pointer address between being passed from SetFile to SetStream. -// See docs/msw/issues.txt. -void * operator new (size_t size, char * fileName, int lineNum) -{ -#ifdef NO_DEBUG_ALLOCATION - return malloc(size); -#else - return wxDebugAlloc(size, fileName, lineNum, FALSE, FALSE); -#endif -} - -// Added JACS 25/11/98 -void * operator new (size_t size) -{ -#ifdef NO_DEBUG_ALLOCATION - return malloc(size); -#else - return wxDebugAlloc(size, NULL, 0, FALSE); -#endif -} - -#if wxUSE_ARRAY_MEMORY_OPERATORS -void * operator new[] (size_t size) -{ -#ifdef NO_DEBUG_ALLOCATION - return malloc(size); -#else - return wxDebugAlloc(size, NULL, 0, FALSE, TRUE); -#endif -} -#endif - -#if wxUSE_ARRAY_MEMORY_OPERATORS -void * operator new[] (size_t size, char * fileName, int lineNum) -{ -#ifdef NO_DEBUG_ALLOCATION - return malloc(size); -#else - return wxDebugAlloc(size, fileName, lineNum, FALSE, TRUE); -#endif -} -#endif - -void operator delete (void * buf) -{ -#ifdef NO_DEBUG_ALLOCATION - free((char*) buf); -#else - wxDebugFree(buf); -#endif -} - -// VC++ 6.0 -#if _MSC_VER >= 1200 -void operator delete(void* pData, char* /* fileName */, int /* lineNum */) -{ -// ::operator delete(pData); - // JACS 21/11/1998: surely we need to call wxDebugFree? - wxDebugFree(pData, FALSE); -} -// New operator 21/11/1998 -void operator delete[](void* pData, char* /* fileName */, int /* lineNum */) -{ - wxDebugFree(pData, TRUE); -} -#endif - -#if wxUSE_ARRAY_MEMORY_OPERATORS - -void operator delete[] (void * buf) -{ -#ifdef NO_DEBUG_ALLOCATION - free((char*) buf); -#else - wxDebugFree(buf, TRUE); -#endif -} -#endif - -#endif - -// TODO: store whether this is a vector or not. -void * wxDebugAlloc(size_t size, char * fileName, int lineNum, bool isObject, bool WXUNUSED(isVect) ) -{ - // If not in debugging allocation mode, do the normal thing - // so we don't leave any trace of ourselves in the node list. - - if (!wxDebugContext::GetDebugMode()) - { - return (void *)malloc(size); - } - - int totSize = wxDebugContext::TotSize (size); - char * buf = (char *) malloc(totSize); - if (!buf) { - wxLogDebug("Call to malloc (%ld) failed.", (long)size); - return 0; - } - wxMemStruct * st = (wxMemStruct *)buf; - st->m_firstMarker = MemStartCheck; - st->m_reqSize = size; - st->m_fileName = fileName; - st->m_lineNum = lineNum; - st->m_id = MemStructId; - st->m_prev = 0; - st->m_next = 0; - st->m_isObject = isObject; - - // Errors from Append() shouldn't really happen - but just in case! - if (st->Append () == 0) { - st->ErrorMsg ("Trying to append new node"); - } - - if (wxDebugContext::GetCheckPrevious ()) { - if (st->CheckAllPrevious () < 0) { - st->ErrorMsg ("Checking previous nodes"); - } - } - - // Set up the extra markers at the middle and end. - char * ptr = wxDebugContext::MidMarkerPos (buf); - * (wxMarkerType *) ptr = MemMidCheck; - ptr = wxDebugContext::EndMarkerPos (buf, size); - * (wxMarkerType *) ptr = MemEndCheck; - - // pointer returned points to the start of the caller's - // usable area. - void *m_actualData = (void *) wxDebugContext::CallerMemPos (buf); - st->m_actualData = m_actualData; - - return m_actualData; -} - -// TODO: check whether was allocated as a vector -void wxDebugFree(void * buf, bool WXUNUSED(isVect) ) -{ - if (!buf) - return; - - // If not in debugging allocation mode, do the normal thing - // so we don't leave any trace of ourselves in the node list. - if (!wxDebugContext::GetDebugMode()) - { - free((char *)buf); - return; - } - - // Points to the start of the entire allocated area. - char * startPointer = wxDebugContext::StartPos ((char *) buf); - // Find the struct and make sure that it's identifiable. - wxMemStruct * st = (wxMemStruct *) wxDebugContext::StructPos (startPointer); - - if (! st->ValidateNode ()) - return; - - // If this is the current checkpoint, we need to - // move the checkpoint back so it points to a valid - // node. - if (st == wxDebugContext::checkPoint) - wxDebugContext::checkPoint = wxDebugContext::checkPoint->m_prev; - - if (! st->Unlink ()) - { - st->ErrorMsg ("Unlinking deleted node"); - } - - // Now put in the fill char into the id slot and the caller requested - // memory locations. - st->SetDeleted (); - (void) memset (wxDebugContext::CallerMemPos (startPointer), MemFillChar, - st->RequestSize ()); - - // Don't allow delayed freeing of memory in this version -// if (!wxDebugContext::GetDelayFree()) -// free((void *)st); - free((char *)st); -} - -// Trace: send output to the current debugging stream -void wxTrace(const char *fmt ...) -{ - va_list ap; - static char buffer[512]; - - va_start(ap, fmt); - -#ifdef __WXMSW__ - wvsprintf(buffer,fmt,ap) ; -#else - vsprintf(buffer,fmt,ap) ; -#endif - - va_end(ap); - - if (wxDebugContext::HasStream()) - { - wxDebugContext::GetStream() << buffer; - wxDebugContext::GetStream().flush(); - } - else -#ifdef __WXMSW__ - OutputDebugString((LPCSTR)buffer) ; -#else - fprintf(stderr, buffer); -#endif -} - -// Trace with level -void wxTraceLevel(int level, const char *fmt ...) -{ - if (wxDebugContext::GetLevel() < level) - return; - - va_list ap; - static char buffer[512]; - - va_start(ap, fmt); - -#ifdef __WXMSW__ - wvsprintf(buffer,fmt,ap) ; -#else - vsprintf(buffer,fmt,ap) ; -#endif - - va_end(ap); - - if (wxDebugContext::HasStream()) - { - wxDebugContext::GetStream() << buffer; - wxDebugContext::GetStream().flush(); - } - else -#ifdef __WXMSW__ - OutputDebugString((LPCSTR)buffer) ; -#else - fprintf(stderr, buffer); -#endif -} - -#else // wxUSE_MEMORY_TRACING && defined(__WXDEBUG__) -void wxTrace(const char *WXUNUSED(fmt) ...) -{ -} - -void wxTraceLevel(int WXUNUSED(level), const char *WXUNUSED(fmt) ...) -{ -} -#endif - diff --git a/src/common/mimetype.cpp b/src/common/mimetype.cpp deleted file mode 100644 index 513c35b3fc..0000000000 --- a/src/common/mimetype.cpp +++ /dev/null @@ -1,1234 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: common/mimetype.cpp -// Purpose: classes and functions to manage MIME types -// Author: Vadim Zeitlin -// Modified by: -// Created: 23.09.98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows license (part of wxExtra library) -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ - #pragma implementation "mimetype.h" -#endif - -// ============================================================================ -// declarations -// ============================================================================ - -// ---------------------------------------------------------------------------- -// headers -// ---------------------------------------------------------------------------- - -// for compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ - #pragma hdrstop -#endif - -// wxWindows -#ifndef WX_PRECOMP - #include "wx/string.h" - #include "wx/icon.h" -#endif //WX_PRECOMP - -// Doesn't compile in WIN16 mode -#ifndef __WIN16__ - -#include "wx/log.h" -#include "wx/intl.h" -#include "wx/dynarray.h" -#include "wx/confbase.h" - -#ifdef __WXMSW__ - #include "wx/msw/registry.h" - #include "windows.h" -#else // Unix - #include "wx/textfile.h" -#endif // OS - -#include "wx/mimetype.h" - -// other standard headers -#include - -// ---------------------------------------------------------------------------- -// private classes -// ---------------------------------------------------------------------------- - -// implementation classes, platform dependent -#ifdef __WXMSW__ - -// These classes use Windows registry to retrieve the required information. -// -// Keys used (not all of them are documented, so it might actually stop working -// in futur versions of Windows...): -// 1. "HKCR\MIME\Database\Content Type" contains subkeys for all known MIME -// types, each key has a string value "Extension" which gives (dot preceded) -// extension for the files of this MIME type. -// -// 2. "HKCR\.ext" contains -// a) unnamed value containing the "filetype" -// b) value "Content Type" containing the MIME type -// -// 3. "HKCR\filetype" contains -// a) unnamed value containing the description -// b) subkey "DefaultIcon" with single unnamed value giving the icon index in -// an icon file -// c) shell\open\command and shell\open\print subkeys containing the commands -// to open/print the file (the positional parameters are introduced by %1, -// %2, ... in these strings, we change them to %s ourselves) - -class wxFileTypeImpl -{ -public: - // ctor - wxFileTypeImpl() { } - - // initialize us with our file type name - void SetFileType(const wxString& strFileType) - { m_strFileType = strFileType; } - void SetExt(const wxString& ext) - { m_ext = ext; } - - // implement accessor functions - bool GetExtensions(wxArrayString& extensions); - bool GetMimeType(wxString *mimeType) const; - bool GetIcon(wxIcon *icon) const; - bool GetDescription(wxString *desc) const; - bool GetOpenCommand(wxString *openCmd, - const wxFileType::MessageParameters&) const - { return GetCommand(openCmd, "open"); } - bool GetPrintCommand(wxString *printCmd, - const wxFileType::MessageParameters&) const - { return GetCommand(printCmd, "print"); } - -private: - // helper function - bool GetCommand(wxString *command, const char *verb) const; - - wxString m_strFileType, m_ext; -}; - -class wxMimeTypesManagerImpl -{ -public: - // nothing to do here, we don't load any data but just go and fetch it from - // the registry when asked for - wxMimeTypesManagerImpl() { } - - // implement containing class functions - wxFileType *GetFileTypeFromExtension(const wxString& ext); - wxFileType *GetFileTypeFromMimeType(const wxString& mimeType); - - // this are NOPs under Windows - void ReadMailcap(const wxString& filename) { } - void ReadMimeTypes(const wxString& filename) { } -}; - -#else // Unix - -// this class uses both mailcap and mime.types to gather information about file -// types. -// -// The information about mailcap file was extracted from metamail(1) sources and -// documentation. -// -// Format of mailcap file: spaces are ignored, each line is either a comment -// (starts with '#') or a line of the form ;;...;. -// A backslash can be used to quote semicolons and newlines (and, in fact, -// anything else including itself). -// -// The first field is always the MIME type in the form of type/subtype (see RFC -// 822) where subtype may be '*' meaning "any". Following metamail, we accept -// "type" which means the same as "type/*", although I'm not sure whether this -// is standard. -// -// The second field is always the command to run. It is subject to -// parameter/filename expansion described below. -// -// All the following fields are optional and may not be present at all. If -// they're present they may appear in any order, although each of them should -// appear only once. The optional fields are the following: -// * notes=xxx is an uninterpreted string which is silently ignored -// * test=xxx is the command to be used to determine whether this mailcap line -// applies to our data or not. The RHS of this field goes through the -// parameter/filename expansion (as the 2nd field) and the resulting string -// is executed. The line applies only if the command succeeds, i.e. returns 0 -// exit code. -// * print=xxx is the command to be used to print (and not view) the data of -// this type (parameter/filename expansion is done here too) -// * edit=xxx is the command to open/edit the data of this type -// * needsterminal means that a new console must be created for the viewer -// * copiousoutput means that the viewer doesn't interact with the user but -// produces (possibly) a lof of lines of output on stdout (i.e. "cat" is a -// good example), thus it might be a good idea to use some kind of paging -// mechanism. -// * textualnewlines means not to perform CR/LF translation (not honored) -// * compose and composetyped fields are used to determine the program to be -// called to create a new message pert in the specified format (unused). -// -// Parameter/filename xpansion: -// * %s is replaced with the (full) file name -// * %t is replaced with MIME type/subtype of the entry -// * for multipart type only %n is replaced with the nnumber of parts and %F is -// replaced by an array of (content-type, temporary file name) pairs for all -// message parts (TODO) -// * %{parameter} is replaced with the value of parameter taken from -// Content-type header line of the message. -// -// FIXME any docs with real descriptions of these files?? -// -// There are 2 possible formats for mime.types file, one entry per line (used -// for global mime.types) and "expanded" format where an entry takes multiple -// lines (used for users mime.types). -// -// For both formats spaces are ignored and lines starting with a '#' are -// comments. Each record has one of two following forms: -// a) for "brief" format: -// -// b) for "expanded" format: -// type= \ desc="" \ exts="ext" -// -// We try to autodetect the format of mime.types: if a non-comment line starts -// with "type=" we assume the second format, otherwise the first one. - -// there may be more than one entry for one and the same mime type, to -// choose the right one we have to run the command specified in the test -// field on our data. -class MailCapEntry -{ -public: - // ctor - MailCapEntry(const wxString& openCmd, - const wxString& printCmd, - const wxString& testCmd) - : m_openCmd(openCmd), m_printCmd(printCmd), m_testCmd(testCmd) - { - m_next = NULL; - } - - // accessors - const wxString& GetOpenCmd() const { return m_openCmd; } - const wxString& GetPrintCmd() const { return m_printCmd; } - const wxString& GetTestCmd() const { return m_testCmd; } - - MailCapEntry *GetNext() const { return m_next; } - - // operations - // prepend this element to the list - void Prepend(MailCapEntry *next) { m_next = next; } - // append to the list - void Append(MailCapEntry *next) - { - // FIXME slooow... - MailCapEntry *cur; - for ( cur = next; cur->m_next != NULL; cur = cur->m_next ) - ; - - cur->m_next = this; - - // we initialize it in the ctor and there is no reason to both Prepend() - // and Append() one and the same entry - wxASSERT( m_next == NULL ); - } - -private: - wxString m_openCmd, // command to use to open/view the file - m_printCmd, // print - m_testCmd; // only apply this entry if test yields - // true (i.e. the command returns 0) - - MailCapEntry *m_next; // in the linked list -}; - -WX_DEFINE_ARRAY(MailCapEntry *, ArrayTypeEntries); - -class wxMimeTypesManagerImpl -{ -friend class wxFileTypeImpl; // give it access to m_aXXX variables - -public: - // ctor loads all info into memory for quicker access later on - // @@ it would be nice to load them all, but parse on demand only... - wxMimeTypesManagerImpl(); - - // implement containing class functions - wxFileType *GetFileTypeFromExtension(const wxString& ext); - wxFileType *GetFileTypeFromMimeType(const wxString& mimeType); - - void ReadMailcap(const wxString& filename); - void ReadMimeTypes(const wxString& filename); - - // accessors - // get the string containing space separated extensions for the given - // file type - wxString GetExtension(size_t index) { return m_aExtensions[index]; } - -private: - wxArrayString m_aTypes, // MIME types - m_aDescriptions, // descriptions (just some text) - m_aExtensions; // space separated list of extensions - ArrayTypeEntries m_aEntries; // commands and tests for this file type -}; - -class wxFileTypeImpl -{ -public: - // initialization functions - void Init(wxMimeTypesManagerImpl *manager, size_t index) - { m_manager = manager; m_index = index; } - - // accessors - bool GetExtensions(wxArrayString& extensions); - bool GetMimeType(wxString *mimeType) const - { *mimeType = m_manager->m_aTypes[m_index]; return TRUE; } - bool GetIcon(wxIcon *icon) const - { return FALSE; } // @@ maybe with Gnome/KDE integration... - bool GetDescription(wxString *desc) const - { *desc = m_manager->m_aDescriptions[m_index]; return TRUE; } - - bool GetOpenCommand(wxString *openCmd, - const wxFileType::MessageParameters& params) const - { - return GetExpandedCommand(openCmd, params, TRUE); - } - - bool GetPrintCommand(wxString *printCmd, - const wxFileType::MessageParameters& params) const - { - return GetExpandedCommand(printCmd, params, FALSE); - } - -private: - // get the entry which passes the test (may return NULL) - MailCapEntry *GetEntry(const wxFileType::MessageParameters& params) const; - - // choose the correct entry to use and expand the command - bool GetExpandedCommand(wxString *expandedCmd, - const wxFileType::MessageParameters& params, - bool open) const; - - wxMimeTypesManagerImpl *m_manager; - size_t m_index; // in the wxMimeTypesManagerImpl arrays -}; - -#endif // OS type - -// ============================================================================ -// implementation of the wrapper classes -// ============================================================================ - -// ---------------------------------------------------------------------------- -// wxFileType -// ---------------------------------------------------------------------------- - -wxString wxFileType::ExpandCommand(const wxString& command, - const wxFileType::MessageParameters& params) -{ - bool hasFilename = FALSE; - - wxString str; - for ( const char *pc = command.c_str(); *pc != '\0'; pc++ ) { - if ( *pc == '%' ) { - switch ( *++pc ) { - case 's': - // '%s' expands into file name (quoted because it might - // contain spaces) - except if there are already quotes - // there because otherwise some programs may get confused by - // double double quotes -#if 0 - if ( *(pc - 2) == '"' ) - str << params.GetFileName(); - else - str << '"' << params.GetFileName() << '"'; -#endif - str << params.GetFileName(); - hasFilename = TRUE; - break; - - case 't': - // '%t' expands into MIME type (quote it too just to be - // consistent) - str << '\'' << params.GetMimeType() << '\''; - break; - - case '{': - { - const char *pEnd = strchr(pc, '}'); - if ( pEnd == NULL ) { - wxString mimetype; - wxLogWarning(_("Unmatched '{' in an entry for " - "mime type %s."), - params.GetMimeType().c_str()); - str << "%{"; - } - else { - wxString param(pc + 1, pEnd - pc - 1); - str << '\'' << params.GetParamValue(param) << '\''; - pc = pEnd; - } - } - break; - - case 'n': - case 'F': - // TODO %n is the number of parts, %F is an array containing - // the names of temp files these parts were written to - // and their mime types. - break; - - default: - wxLogDebug("Unknown field %%%c in command '%s'.", - *pc, command.c_str()); - str << *pc; - } - } - else { - str << *pc; - } - } - - // metamail(1) man page states that if the mailcap entry doesn't have '%s' - // the program will accept the data on stdin: so give it to it! - if ( !hasFilename && !str.IsEmpty() ) { - str << " < '" << params.GetFileName() << '\''; - } - - return str; -} - -wxFileType::wxFileType() -{ - m_impl = new wxFileTypeImpl; -} - -wxFileType::~wxFileType() -{ - delete m_impl; -} - -bool wxFileType::GetExtensions(wxArrayString& extensions) -{ - return m_impl->GetExtensions(extensions); -} - -bool wxFileType::GetMimeType(wxString *mimeType) const -{ - return m_impl->GetMimeType(mimeType); -} - -bool wxFileType::GetIcon(wxIcon *icon) const -{ - return m_impl->GetIcon(icon); -} - -bool wxFileType::GetDescription(wxString *desc) const -{ - return m_impl->GetDescription(desc); -} - -bool -wxFileType::GetOpenCommand(wxString *openCmd, - const wxFileType::MessageParameters& params) const -{ - return m_impl->GetOpenCommand(openCmd, params); -} - -bool -wxFileType::GetPrintCommand(wxString *printCmd, - const wxFileType::MessageParameters& params) const -{ - return m_impl->GetPrintCommand(printCmd, params); -} - -// ---------------------------------------------------------------------------- -// wxMimeTypesManager -// ---------------------------------------------------------------------------- - -wxMimeTypesManager::wxMimeTypesManager() -{ - m_impl = new wxMimeTypesManagerImpl; -} - -wxMimeTypesManager::~wxMimeTypesManager() -{ - delete m_impl; -} - -wxFileType * -wxMimeTypesManager::GetFileTypeFromExtension(const wxString& ext) -{ - return m_impl->GetFileTypeFromExtension(ext); -} - -wxFileType * -wxMimeTypesManager::GetFileTypeFromMimeType(const wxString& mimeType) -{ - return m_impl->GetFileTypeFromMimeType(mimeType); -} - -// ============================================================================ -// real (OS specific) implementation -// ============================================================================ - -#ifdef __WXMSW__ - -bool wxFileTypeImpl::GetCommand(wxString *command, const char *verb) const -{ - // suppress possible error messages - wxLogNull nolog; - wxString strKey; - strKey << m_strFileType << "\\shell\\" << verb << "\\command"; - wxRegKey key(wxRegKey::HKCR, strKey); - - if ( key.Open() ) { - // it's the default value of the key - if ( key.QueryValue("", *command) ) { - // transform it from '%1' to '%s' style format string - // @@ we don't make any attempt to verify that the string is valid, - // i.e. doesn't contain %2, or second %1 or .... But we do make - // sure that we return a string with _exactly_ one '%s'! - size_t len = command->Len(); - for ( size_t n = 0; n < len; n++ ) { - if ( command->GetChar(n) == '%' && - (n + 1 < len) && command->GetChar(n + 1) == '1' ) { - // replace it with '%s' - command->SetChar(n + 1, 's'); - - return TRUE; - } - } - - // we didn't find any '%1'! - // @@@ hack: append the filename at the end, hope that it will do - *command << " %s"; - - return TRUE; - } - } - - // no such file type or no value - return FALSE; -} - -// @@ this function is half implemented -bool wxFileTypeImpl::GetExtensions(wxArrayString& extensions) -{ - if ( m_ext.IsEmpty() ) { - // the only way to get the list of extensions from the file type is to - // scan through all extensions in the registry - too slow... - return FALSE; - } - else { - extensions.Empty(); - extensions.Add(m_ext); - - // it's a lie too, we don't return _all_ extensions... - return TRUE; - } -} - -bool wxFileTypeImpl::GetMimeType(wxString *mimeType) const -{ - // suppress possible error messages - wxLogNull nolog; - wxRegKey key(wxRegKey::HKCR, m_strFileType); - if ( key.Open() && key.QueryValue("Content Type", *mimeType) ) { - return TRUE; - } - else { - return FALSE; - } -} - -bool wxFileTypeImpl::GetIcon(wxIcon *icon) const -{ - wxString strIconKey; - strIconKey << m_strFileType << "\\DefaultIcon"; - - // suppress possible error messages - wxLogNull nolog; - wxRegKey key(wxRegKey::HKCR, strIconKey); - - if ( key.Open() ) { - wxString strIcon; - // it's the default value of the key - if ( key.QueryValue("", strIcon) ) { - // the format is the following: , - // NB: icon index may be negative as well as positive and the full - // path may contain the environment variables inside '%' - wxString strFullPath = strIcon.BeforeLast(','), - strIndex = strIcon.AfterLast(','); - - // index may be omitted, in which case BeforeLast(',') is empty and - // AfterLast(',') is the whole string - if ( strFullPath.IsEmpty() ) { - strFullPath = strIndex; - strIndex = "0"; - } - - wxString strExpPath = wxExpandEnvVars(strFullPath); - int nIndex = atoi(strIndex); - - HICON hIcon = ExtractIcon(GetModuleHandle(NULL), strExpPath, nIndex); - switch ( (int)hIcon ) { - case 0: // means no icons were found - case 1: // means no such file or it wasn't a DLL/EXE/OCX/ICO/... - wxLogDebug("incorrect registry entry '%s': no such icon.", - key.GetName().c_str()); - break; - - default: - icon->SetHICON((WXHICON)hIcon); - return TRUE; - } - } - } - - // no such file type or no value or incorrect icon entry - return FALSE; -} - -bool wxFileTypeImpl::GetDescription(wxString *desc) const -{ - // suppress possible error messages - wxLogNull nolog; - wxRegKey key(wxRegKey::HKCR, m_strFileType); - - if ( key.Open() ) { - // it's the default value of the key - if ( key.QueryValue("", *desc) ) { - return TRUE; - } - } - - return FALSE; -} - -// extension -> file type -wxFileType * -wxMimeTypesManagerImpl::GetFileTypeFromExtension(const wxString& ext) -{ - // add the leading point if necessary - wxString str; - if ( ext[0u] != '.' ) { - str = '.'; - } - str << ext; - - // suppress possible error messages - wxLogNull nolog; - - wxString strFileType; - wxRegKey key(wxRegKey::HKCR, str); - if ( key.Open() ) { - // it's the default value of the key - if ( key.QueryValue("", strFileType) ) { - // create the new wxFileType object - wxFileType *fileType = new wxFileType; - fileType->m_impl->SetFileType(strFileType); - fileType->m_impl->SetExt(ext); - - return fileType; - } - } - - // unknown extension - return NULL; -} - -// MIME type -> extension -> file type -wxFileType * -wxMimeTypesManagerImpl::GetFileTypeFromMimeType(const wxString& mimeType) -{ - // @@@ I don't know of any official documentation which mentions this - // location, but as a matter of fact IE uses it, so why not we? - static const char *szMimeDbase = "MIME\\Database\\Content Type\\"; - - wxString strKey = szMimeDbase; - strKey << mimeType; - - // suppress possible error messages - wxLogNull nolog; - - wxString ext; - wxRegKey key(wxRegKey::HKCR, strKey); - if ( key.Open() ) { - if ( key.QueryValue("Extension", ext) ) { - return GetFileTypeFromExtension(ext); - } - } - - // unknown MIME type - return NULL; -} - -#else // Unix - -MailCapEntry * -wxFileTypeImpl::GetEntry(const wxFileType::MessageParameters& params) const -{ - wxString command; - MailCapEntry *entry = m_manager->m_aEntries[m_index]; - while ( entry != NULL ) { - // notice that an empty command would always succeed (@@ is it ok?) - command = wxFileType::ExpandCommand(entry->GetTestCmd(), params); - - if ( command.IsEmpty() || (system(command) == 0) ) { - // ok, passed - wxLogTrace("Test '%s' for mime type '%s' succeeded.", - command.c_str(), params.GetMimeType().c_str()); - break; - } - else { - wxLogTrace("Test '%s' for mime type '%s' failed.", - command.c_str(), params.GetMimeType().c_str()); - } - - entry = entry->GetNext(); - } - - return entry; -} - -bool -wxFileTypeImpl::GetExpandedCommand(wxString *expandedCmd, - const wxFileType::MessageParameters& params, - bool open) const -{ - MailCapEntry *entry = GetEntry(params); - if ( entry == NULL ) { - // all tests failed... - return FALSE; - } - - wxString cmd = open ? entry->GetOpenCmd() : entry->GetPrintCmd(); - if ( cmd.IsEmpty() ) { - // may happen, especially for "print" - return FALSE; - } - - *expandedCmd = wxFileType::ExpandCommand(cmd, params); - return TRUE; -} - -bool wxFileTypeImpl::GetExtensions(wxArrayString& extensions) -{ - wxString strExtensions = m_manager->GetExtension(m_index); - extensions.Empty(); - - // one extension in the space or comma delimitid list - wxString strExt; - for ( const char *p = strExtensions; ; p++ ) { - if ( *p == ' ' || *p == ',' || *p == '\0' ) { - if ( !strExt.IsEmpty() ) { - extensions.Add(strExt); - strExt.Empty(); - } - //else: repeated spaces (shouldn't happen, but it's not that - // important if it does happen) - - if ( *p == '\0' ) - break; - } - else if ( *p == '.' ) { - // remove the dot from extension (but only if it's the first char) - if ( !strExt.IsEmpty() ) { - strExt += '.'; - } - //else: no, don't append it - } - else { - strExt += *p; - } - } - - return TRUE; -} - -// read system and user mailcaps (TODO implement mime.types support) -wxMimeTypesManagerImpl::wxMimeTypesManagerImpl() -{ - // directories where we look for mailcap and mime.types by default - // (taken from metamail(1) sources) - static const char *aStandardLocations[] = - { - "/etc", - "/usr/etc", - "/usr/local/etc", - "/etc/mail", - "/usr/public/lib" - }; - - // first read the system wide file(s) - for ( size_t n = 0; n < WXSIZEOF(aStandardLocations); n++ ) { - wxString dir = aStandardLocations[n]; - - wxString file = dir + "/mailcap"; - if ( wxFile::Exists(file) ) { - ReadMailcap(file); - } - - file = dir + "/mime.types"; - if ( wxFile::Exists(file) ) { - ReadMimeTypes(file); - } - } - - wxString strHome = getenv("HOME"); - - // and now the users mailcap - wxString strUserMailcap = strHome + "/.mailcap"; - if ( wxFile::Exists(strUserMailcap) ) { - ReadMailcap(strUserMailcap); - } - - // read the users mime.types - wxString strUserMimeTypes = strHome + "/.mime.types"; - if ( wxFile::Exists(strUserMimeTypes) ) { - ReadMimeTypes(strUserMimeTypes); - } -} - -wxFileType * -wxMimeTypesManagerImpl::GetFileTypeFromExtension(const wxString& ext) -{ - size_t count = m_aExtensions.GetCount(); - for ( size_t n = 0; n < count; n++ ) { - wxString extensions = m_aExtensions[n]; - while ( !extensions.IsEmpty() ) { - wxString field = extensions.BeforeFirst(' '); - extensions = extensions.AfterFirst(' '); - - // consider extensions as not being case-sensitive - if ( field.IsSameAs(ext, FALSE /* no case */) ) { - // found - wxFileType *fileType = new wxFileType; - fileType->m_impl->Init(this, n); - - return fileType; - } - } - } - - // not found - return NULL; -} - -wxFileType * -wxMimeTypesManagerImpl::GetFileTypeFromMimeType(const wxString& mimeType) -{ - // mime types are not case-sensitive - wxString mimetype(mimeType); - mimetype.MakeLower(); - - // first look for an exact match - int index = m_aTypes.Index(mimetype); - if ( index == wxNOT_FOUND ) { - // then try to find "text/*" as match for "text/plain" (for example) - // NB: if mimeType doesn't contain '/' at all, BeforeFirst() will return - // the whole string - ok. - wxString strCategory = mimetype.BeforeFirst('/'); - - size_t nCount = m_aTypes.Count(); - for ( size_t n = 0; n < nCount; n++ ) { - if ( (m_aTypes[n].BeforeFirst('/') == strCategory ) && - m_aTypes[n].AfterFirst('/') == "*" ) { - index = n; - break; - } - } - } - - if ( index != wxNOT_FOUND ) { - wxFileType *fileType = new wxFileType; - fileType->m_impl->Init(this, index); - - return fileType; - } - else { - // not found... - return NULL; - } -} - -void wxMimeTypesManagerImpl::ReadMimeTypes(const wxString& strFileName) -{ - wxLogTrace("--- Parsing mime.types file '%s' ---", strFileName.c_str()); - - wxTextFile file(strFileName); - if ( !file.Open() ) - return; - - // the information we extract - wxString strMimeType, strDesc, strExtensions; - - size_t nLineCount = file.GetLineCount(); - for ( size_t nLine = 0; nLine < nLineCount; nLine++ ) { - // now we're at the start of the line - const char *pc = file[nLine].c_str(); - - // skip whitespace - while ( isspace(*pc) ) - pc++; - - // comment? - if ( *pc == '#' ) - continue; - - // detect file format - const char *pEqualSign = strchr(pc, '='); - if ( pEqualSign == NULL ) { - // brief format - // ------------ - - // first field is mime type - for ( strMimeType.Empty(); !isspace(*pc) && *pc != '\0'; pc++ ) { - strMimeType += *pc; - } - - // skip whitespace - while ( isspace(*pc) ) - pc++; - - // take all the rest of the string - strExtensions = pc; - - // no description... - strDesc.Empty(); - } - else { - // expanded format - // --------------- - - // the string on the left of '=' is the field name - wxString strLHS(pc, pEqualSign - pc); - - // eat whitespace - for ( pc = pEqualSign + 1; isspace(*pc); pc++ ) - ; - - const char *pEnd; - if ( *pc == '"' ) { - // the string is quoted and ends at the matching quote - pEnd = strchr(++pc, '"'); - if ( pEnd == NULL ) { - wxLogWarning(_("Mime.types file %s, line %d: unterminated " - "quoted string."), - strFileName.c_str(), nLine + 1); - } - } - else { - // unquoted stringends at the first space - for ( pEnd = pc; !isspace(*pEnd); pEnd++ ) - ; - } - - // now we have the RHS (field value) - wxString strRHS(pc, pEnd - pc); - - // check that it's more or less what we're waiting for, i.e. that - // only '\' is left on the line - if ( *pEnd == '"' ) { - // skip this quote - pEnd++; - } - - for ( pc = pEnd; isspace(*pc); pc++ ) - ; - - // only '\\' may be left on the line normally - bool entryEnded = *pc == '\0'; - if ( !entryEnded && ((*pc != '\\') || (*++pc != '\0')) ) { - wxLogWarning(_("Mime.types file %s, line %d: extra characters " - "after the field value ignored."), - strFileName.c_str(), nLine + 1); - } - // if there is a trailing backslash entryEnded = FALSE - - // now see what we got - if ( strLHS == "type" ) { - strMimeType = strRHS; - } - else if ( strLHS == "desc" ) { - strDesc = strRHS; - } - else if ( strLHS == "exts" ) { - strExtensions = strRHS; - } - else { - wxLogWarning(_("Unknown field in file %s, line %d: '%s'."), - strFileName.c_str(), nLine + 1, strLHS.c_str()); - } - - if ( !entryEnded ) { - // as we don't reset strMimeType, the next line in this entry - // will be interpreted correctly. - continue; - } - } - - int index = m_aTypes.Index(strMimeType); - if ( index == wxNOT_FOUND ) { - // add a new entry - m_aTypes.Add(strMimeType); - m_aEntries.Add(NULL); - m_aExtensions.Add(strExtensions); - m_aDescriptions.Add(strDesc); - } - else { - // modify an existing one - if ( !strDesc.IsEmpty() ) { - m_aDescriptions[index] = strDesc; // replace old value - } - m_aExtensions[index] += strExtensions; - } - } - - // check our data integriry - wxASSERT( m_aTypes.Count() == m_aEntries.Count() && - m_aTypes.Count() == m_aExtensions.Count() && - m_aTypes.Count() == m_aDescriptions.Count() ); -} - -void wxMimeTypesManagerImpl::ReadMailcap(const wxString& strFileName) -{ - wxLogTrace("--- Parsing mailcap file '%s' ---", strFileName.c_str()); - - wxTextFile file(strFileName); - if ( !file.Open() ) - return; - - // see the comments near the end of function for the reason we need this - wxArrayInt aEntryIndices; - - size_t nLineCount = file.GetLineCount(); - for ( size_t nLine = 0; nLine < nLineCount; nLine++ ) { - // now we're at the start of the line - const char *pc = file[nLine].c_str(); - - // skip whitespace - while ( isspace(*pc) ) - pc++; - - // comment or empty string? - if ( *pc == '#' || *pc == '\0' ) - continue; - - // no, do parse - - // what field are we currently in? The first 2 are fixed and there may - // be an arbitrary number of other fields -- currently, we are not - // interested in any of them, but we should parse them as well... - enum - { - Field_Type, - Field_OpenCmd, - Field_Other - } currentToken = Field_Type; - - // the flags and field values on the current line - bool needsterminal = false, - copiousoutput = false; - wxString strType, - strOpenCmd, - strPrintCmd, - strTest, - strDesc, - curField; // accumulator - for ( bool cont = TRUE; cont; pc++ ) { - switch ( *pc ) { - case '\\': - // interpret the next character literally (notice that - // backslash can be used for line continuation) - if ( *++pc == '\0' ) { - // fetch the next line. - - // pc currently points to nowhere, but after the next - // pc++ in the for line it will point to the beginning - // of the next line in the file - pc = file[++nLine].c_str() - 1; - } - else { - // just a normal character - curField += *pc; - } - break; - - case '\0': - cont = FALSE; // end of line reached, exit the loop - - // fall through - - case ';': - // store this field and start looking for the next one - - // trim whitespaces from both sides - curField.Trim(TRUE).Trim(FALSE); - - switch ( currentToken ) { - case Field_Type: - strType = curField; - if ( strType.Find('/') == wxNOT_FOUND ) { - // we interpret "type" as "type/*" - strType += "/*"; - } - - currentToken = Field_OpenCmd; - break; - - case Field_OpenCmd: - strOpenCmd = curField; - - currentToken = Field_Other; - break; - - case Field_Other: - { - // "good" mailcap entry? - bool ok = TRUE; - - // is this something of the form foo=bar? - const char *pEq = strchr(curField, '='); - if ( pEq != NULL ) { - wxString lhs = curField.Before('='), - rhs = curField.After('='); - - lhs.Trim(TRUE); // from right - rhs.Trim(FALSE); // from left - - if ( lhs == "print" ) - strPrintCmd = rhs; - else if ( lhs == "test" ) - strTest = rhs; - else if ( lhs == "description" ) { - // it might be quoted - if ( rhs[0u] == '"' && - rhs.Last() == '"' ) { - strDesc = wxString(rhs.c_str() + 1, - rhs.Len() - 2); - } - else { - strDesc = rhs; - } - } - else if ( lhs == "compose" || - lhs == "composetyped" || - lhs == "notes" || - lhs == "edit" ) - ; // ignore - else - ok = FALSE; - - } - else { - // no, it's a simple flag - // TODO support the flags: - // 1. create an xterm for 'needsterminal' - // 2. append "| $PAGER" for 'copiousoutput' - if ( curField == "needsterminal" ) - needsterminal = TRUE; - else if ( curField == "copiousoutput" ) - copiousoutput = TRUE; - else if ( curField == "textualnewlines" ) - ; // ignore - else - ok = FALSE; - } - - if ( !ok ) - { - // don't flood the user with error messages - // if we don't understand something in his - // mailcap - wxLogDebug - ( - _("Mailcap file %s, line %d: unknown " - "field '%s' for the MIME type " - "'%s' ignored."), - strFileName.c_str(), - nLine + 1, - curField.c_str(), - strType.c_str() - ); - } - } - - // it already has this value - //currentToken = Field_Other; - break; - - default: - wxFAIL_MSG("unknown field type in mailcap"); - } - - // next token starts immediately after ';' - curField.Empty(); - break; - - default: - curField += *pc; - } - } - - // check that we really read something reasonable - if ( currentToken == Field_Type || currentToken == Field_OpenCmd ) { - wxLogWarning(_("Mailcap file %s, line %d: incomplete entry " - "ignored."), - strFileName.c_str(), nLine + 1); - } - else { - MailCapEntry *entry = new MailCapEntry(strOpenCmd, - strPrintCmd, - strTest); - - strType.MakeLower(); - int nIndex = m_aTypes.Index(strType); - if ( nIndex == wxNOT_FOUND ) { - // new file type - m_aTypes.Add(strType); - - m_aEntries.Add(entry); - m_aExtensions.Add(""); - m_aDescriptions.Add(strDesc); - } - else { - // modify the existing entry: the entry in one and the same file - // are read in top-to-bottom order, i.e. the entries read first - // should be tried before the entries below. However, the files - // read later should override the settings in the files read - // before, thus we Append() the new entry to the list if it has - // already occured in _this_ file, but Prepend() it if it - // occured in some of the previous ones. - if ( aEntryIndices.Index(nIndex) == wxNOT_FOUND ) { - // first time in this file - aEntryIndices.Add(nIndex); - entry->Prepend(m_aEntries[nIndex]); - m_aEntries[nIndex] = entry; - } - else { - // not the first time in _this_ file - entry->Append(m_aEntries[nIndex]); - } - - if ( !strDesc.IsEmpty() ) { - // @@ replace the old one - what else can we do?? - m_aDescriptions[nIndex] = strDesc; - } - } - } - - // check our data integriry - wxASSERT( m_aTypes.Count() == m_aEntries.Count() && - m_aTypes.Count() == m_aExtensions.Count() && - m_aTypes.Count() == m_aDescriptions.Count() ); - } -} - -#endif // OS type - -#endif - // __WIN16__ diff --git a/src/common/module.cpp b/src/common/module.cpp deleted file mode 100644 index f1d0bebed7..0000000000 --- a/src/common/module.cpp +++ /dev/null @@ -1,101 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: module.cpp -// Purpose: Modules initialization/destruction -// Author: Wolfram Gloger/adapted by Guilhem Lavaux -// Modified by: -// Created: 04/11/98 -// RCS-ID: $Id$ -// Copyright: (c) Wolfram Gloger and Guilhem Lavaux -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "module.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#include "wx/module.h" -#include "wx/hash.h" -#include "wx/listimpl.cpp" - -#ifdef __SALFORDC__ -void wxwxModuleListNode::DeleteData() -{ - delete (_WX_LIST_ITEM_TYPE_wxModuleList *)GetData(); -} -#else -WX_DEFINE_LIST(wxModuleList); -#endif - -IMPLEMENT_CLASS(wxModule, wxObject) - -wxModuleList wxModule::m_modules; - -void wxModule::RegisterModule(wxModule* module) -{ - m_modules.Append(module); -} - -// Collect up all module-derived classes, create an instance of each, -// and register them. -void wxModule::RegisterModules() -{ - wxNode *node; - wxClassInfo* classInfo; - - wxClassInfo::sm_classTable->BeginFind(); - node = wxClassInfo::sm_classTable->Next(); - while (node) - { - classInfo = (wxClassInfo *)node->Data(); - if ( classInfo->IsKindOf(CLASSINFO(wxModule)) && - (classInfo != (& (wxModule::sm_classwxModule))) ) - { - wxModule* module = (wxModule *)classInfo->CreateObject(); - RegisterModule(module); - } - node = wxClassInfo::sm_classTable->Next(); - } -} - -bool wxModule::InitializeModules() -{ - // Initialize user-defined modules - wxModuleList::Node *node; - for ( node = m_modules.GetFirst(); node; node = node->GetNext() ) - { - if ( !node->GetData()->Init() ) - { - // clean up already initialized modules - process in reverse order - wxModuleList::Node *n; - for ( n = node->GetPrevious(); n; n = n->GetPrevious() ) - { - n->GetData()->OnExit(); - } - - return FALSE; - } - } - - return TRUE; -} - -void wxModule::CleanUpModules() -{ - // Cleanup user-defined modules - wxModuleList::Node *node; - for ( node = m_modules.GetFirst(); node; node = node->GetNext() ) - { - node->GetData()->Exit(); - } - - m_modules.DeleteContents(TRUE); - m_modules.Clear(); -} - diff --git a/src/common/mstream.cpp b/src/common/mstream.cpp deleted file mode 100644 index 35e384bade..0000000000 --- a/src/common/mstream.cpp +++ /dev/null @@ -1,60 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: mstream.cpp -// Purpose: "Memory stream" classes -// Author: Guilhem Lavaux -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Guilhem Lavaux -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "mstream.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" -#include -#include -#include - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -// ---------------------------------------------------------------------------- -// wxMemoryInputStream -// ---------------------------------------------------------------------------- - -wxMemoryInputStream::wxMemoryInputStream(const char *data, size_t len) - : wxInputStream() -{ - m_i_streambuf->SetBufferIO((char*) data, (char*) (data+len)); - m_i_streambuf->Fixed(TRUE); -} - -wxMemoryInputStream::~wxMemoryInputStream() -{ -} - -char wxMemoryInputStream::Peek() -{ - return m_i_streambuf->GetBufferStart()[m_i_streambuf->GetIntPosition()]; -} - -// ---------------------------------------------------------------------------- -// wxMemoryOutputStream -// ---------------------------------------------------------------------------- - -wxMemoryOutputStream::wxMemoryOutputStream(char *data, size_t len) - : wxOutputStream() -{ - if (data) - m_o_streambuf->SetBufferIO(data, data+len); - m_o_streambuf->Fixed(TRUE); -} - -wxMemoryOutputStream::~wxMemoryOutputStream() -{ -} diff --git a/src/common/object.cpp b/src/common/object.cpp deleted file mode 100644 index 4ac78acc23..0000000000 --- a/src/common/object.cpp +++ /dev/null @@ -1,373 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: object.cpp -// Purpose: wxObject implementation -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "object.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP - #include "wx/hash.h" - #if wxUSE_SERIAL - #include "wx/objstrm.h" - #include "wx/serbase.h" - - // for error messages - #include "wx/log.h" - #include "wx/intl.h" - #endif // wxUSE_SERIAL -#endif // WX_PRECOMP - -#include -#include - -#if (defined(__WXDEBUG__) && wxUSE_MEMORY_TRACING) || wxUSE_DEBUG_CONTEXT -#include "wx/memory.h" -#endif - -#if defined(__WXDEBUG__) || wxUSE_DEBUG_CONTEXT - // for wxObject::Dump -#if wxUSE_IOSTREAMH -# include -#else -# include -# ifdef _MSC_VER - using namespace std; -# endif -#endif -#endif - -#if !USE_SHARED_LIBRARY -wxClassInfo wxObject::sm_classwxObject((char *) "wxObject", (char *) NULL, (char *) NULL, (int ) sizeof(wxObject), (wxObjectConstructorFn) NULL); -wxClassInfo* wxClassInfo::sm_first = (wxClassInfo *) NULL; -wxHashTable* wxClassInfo::sm_classTable = (wxHashTable*) NULL; -#endif - -/* - * wxWindows root object. - */ - -wxObject::wxObject(void) -{ - m_refData = (wxObjectRefData *) NULL; -#if wxUSE_SERIAL - m_serialObj = (wxObject_Serialize *)NULL; -#endif -} - -wxObject::~wxObject(void) -{ - UnRef(); -#if wxUSE_SERIAL - if (m_serialObj) - delete m_serialObj; -#endif -} - -/* - * Is this object a kind of (a subclass of) 'info'? - * E.g. is wxWindow a kind of wxObject? - * Go from this class to superclass, taking into account - * two possible base classes. - */ - -bool wxObject::IsKindOf(wxClassInfo *info) const -{ - wxClassInfo *thisInfo = GetClassInfo(); - if (thisInfo) - return thisInfo->IsKindOf(info); - else - return FALSE; -} - -#if defined(__WXDEBUG__) || wxUSE_DEBUG_CONTEXT -void wxObject::Dump(ostream& str) -{ - if (GetClassInfo() && GetClassInfo()->GetClassName()) - str << GetClassInfo()->GetClassName(); - else - str << "unknown object class"; -} -#endif - -#if defined(__WXDEBUG__) && wxUSE_MEMORY_TRACING - -#ifdef new -#undef new -#endif - -void * wxObject::operator new (size_t size, char * fileName, int lineNum) -{ - return wxDebugAlloc(size, fileName, lineNum, TRUE); -} - -void wxObject::operator delete (void * buf) -{ - wxDebugFree(buf); -} - -// VC++ 6.0 -#if _MSC_VER >= 1200 -void wxObject::operator delete(void* pData, char* /* fileName */, int /* lineNum */) -{ - ::operator delete(pData); -} -#endif - -// Cause problems for VC++ - crashes -#if !defined(_MSC_VER) && wxUSE_ARRAY_MEMORY_OPERATORS -void * wxObject::operator new[] (size_t size, char * fileName, int lineNum) -{ - return wxDebugAlloc(size, fileName, lineNum, TRUE, TRUE); -} - -void wxObject::operator delete[] (void * buf) -{ - wxDebugFree(buf, TRUE); -} -#endif - -#endif - -/* - * Class info: provides run-time class type information. - */ - -wxClassInfo::wxClassInfo(char *cName, char *baseName1, char *baseName2, int sz, wxObjectConstructorFn constr) -{ - m_className = cName; - m_baseClassName1 = baseName1; - m_baseClassName2 = baseName2; - - m_objectSize = sz; - m_objectConstructor = constr; - - m_next = sm_first; - sm_first = this; - - m_baseInfo1 = (wxClassInfo *) NULL; - m_baseInfo2 = (wxClassInfo *) NULL; -} - -wxObject *wxClassInfo::CreateObject(void) -{ - if (m_objectConstructor) - return (wxObject *)(*m_objectConstructor)(); - else - return (wxObject *) NULL; -} - -wxClassInfo *wxClassInfo::FindClass(char *c) -{ - wxClassInfo *p = sm_first; - while (p) - { - if (p && p->GetClassName() && strcmp(p->GetClassName(), c) == 0) - return p; - p = p->m_next; - } - return (wxClassInfo *) NULL; -} - -// Climb upwards through inheritance hierarchy. -// Dual inheritance is catered for. -bool wxClassInfo::IsKindOf(wxClassInfo *info) const -{ - if (info == NULL) - return FALSE; - - // For some reason, when making/using a DLL, static data has to be included - // in both the DLL and the application. This can lead to duplicate - // wxClassInfo objects, so we have to test the name instead of the pointers. - // PROBABLY NO LONGER TRUE now I've done DLL creation right. -/* -#if WXMAKINGDLL - if (GetClassName() && info->GetClassName() && (strcmp(GetClassName(), info->GetClassName()) == 0)) - return TRUE; -#else -*/ - if (this == info) - return TRUE; - - if (m_baseInfo1) - if (m_baseInfo1->IsKindOf(info)) - return TRUE; - - if (m_baseInfo2) - return m_baseInfo2->IsKindOf(info); - - return FALSE; -} - -// Set pointers to base class(es) to speed up IsKindOf -void wxClassInfo::InitializeClasses(void) -{ - wxClassInfo::sm_classTable = new wxHashTable(wxKEY_STRING); - - // Index all class infos by their class name - wxClassInfo *info = sm_first; - while (info) - { - if (info->m_className) - sm_classTable->Put(info->m_className, (wxObject *)info); - info = info->m_next; - } - - // Set base pointers for each wxClassInfo - info = sm_first; - while (info) - { - if (info->GetBaseClassName1()) - info->m_baseInfo1 = (wxClassInfo *)sm_classTable->Get(info->GetBaseClassName1()); - if (info->GetBaseClassName2()) - info->m_baseInfo2 = (wxClassInfo *)sm_classTable->Get(info->GetBaseClassName2()); - info = info->m_next; - } -} - -void wxClassInfo::CleanUpClasses(void) -{ - delete wxClassInfo::sm_classTable; - wxClassInfo::sm_classTable = NULL; -} - -wxObject *wxCreateDynamicObject(const char *name) -{ - if (wxClassInfo::sm_classTable) - { - wxClassInfo *info = (wxClassInfo *)wxClassInfo::sm_classTable->Get(name); - if (!info) - return (wxObject *)NULL; - - return info->CreateObject(); - } - else - { - wxClassInfo *info = wxClassInfo::sm_first; - while (info) - { - if (info->m_className && strcmp(info->m_className, name) == 0) - return info->CreateObject(); - info = info->m_next; - } - return (wxObject*) NULL; - } - return (wxObject*) NULL; -} - -#if wxUSE_SERIAL - -#include "wx/serbase.h" -#include "wx/dynlib.h" -#include "wx/msgdlg.h" - -wxObject* wxCreateStoredObject( wxInputStream &stream ) -{ - wxObjectInputStream obj_s(stream); - return obj_s.LoadObject(); -}; - -void wxObject::StoreObject( wxObjectOutputStream& stream ) -{ - wxString obj_name = wxString(GetClassInfo()->GetClassName()) + "_Serialize"; - wxLibrary *lib = wxTheLibraries.LoadLibrary("wxserial"); - - if (!lib) { - wxLogError(_("Can't load wxSerial dynamic library.")); - return; - } - if (!m_serialObj) { - m_serialObj = (WXSERIAL(wxObject) *)lib->CreateObject( obj_name ); - - if (!m_serialObj) { - wxLogError(_("Can't find the serialization object '%s' " - "for the object '%s'."), - obj_name.c_str(), - GetClassInfo()->GetClassName()); - return; - } - m_serialObj->SetObject(this); - } - - m_serialObj->StoreObject(stream); -} - -void wxObject::LoadObject( wxObjectInputStream& stream ) -{ - wxString obj_name = wxString(GetClassInfo()->GetClassName()) + "_Serialize"; - wxLibrary *lib = wxTheLibraries.LoadLibrary("wxserial"); - - if (!m_serialObj) { - m_serialObj = (WXSERIAL(wxObject) *)lib->CreateObject( obj_name ); - - if (!m_serialObj) { - wxLogError(_("Can't find the serialization object '%s' " - "for the object '%s'."), - obj_name.c_str(), - GetClassInfo()->GetClassName()); - return; - } - m_serialObj->SetObject(this); - } - - m_serialObj->LoadObject(stream); -} - -#endif - -/* - * wxObject: cloning of objects - */ - -void wxObject::Ref(const wxObject& clone) -{ - // delete reference to old data - UnRef(); - // reference new data - if (clone.m_refData) { - m_refData = clone.m_refData; - ++(m_refData->m_count); - } -} - -void wxObject::UnRef(void) -{ - if (m_refData) { - assert(m_refData->m_count > 0); - --(m_refData->m_count); - if (m_refData->m_count == 0) - delete m_refData; - } - m_refData = (wxObjectRefData *) NULL; -} - -/* - * wxObjectData - */ - -wxObjectRefData::wxObjectRefData(void) : m_count(1) -{ -} - -wxObjectRefData::~wxObjectRefData(void) -{ -} - -// These are here so we can avoid 'always true/false' warnings -// by referring to these instead of TRUE/FALSE -const bool wxTrue = TRUE; -const bool wxFalse = FALSE; diff --git a/src/common/objstrm.cpp b/src/common/objstrm.cpp deleted file mode 100644 index 2d916d629f..0000000000 --- a/src/common/objstrm.cpp +++ /dev/null @@ -1,330 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: objstrm.cpp -// Purpose: wxObjectStream classes -// Author: Guilhem Lavaux -// Modified by: -// Created: 16/07/98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Guilhem Lavaux -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation "objstrm.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/defs.h" -#include "wx/setup.h" -#endif - -#if wxUSE_SERIAL - -#include "wx/object.h" -#include "wx/objstrm.h" -#include "wx/datstrm.h" - -#define WXOBJ_BEGIN "OBEGIN" -#define WXOBJ_BEG_LEN 6 - -#define TAG_EMPTY_OBJECT "NULL" -#define TAG_DUPLICATE_OBJECT "DUPLIC" - -// ---------------------------------------------------------------------------- -// wxObjectOutputStream -// ---------------------------------------------------------------------------- - -wxObjectOutputStream::wxObjectOutputStream(wxOutputStream& s) - : wxFilterOutputStream(s) -{ - m_saving = FALSE; -} - -wxString wxObjectOutputStream::GetObjectName(wxObject *obj) -{ - wxString name; - - name.Printf("%x", (unsigned long)obj); - return name; -} - -void wxObjectOutputStream::WriteObjectDef(wxObjectStreamInfo& info) -{ - wxDataOutputStream data_s(*this); - - Write(WXOBJ_BEGIN, WXOBJ_BEG_LEN); - - if (info.duplicate) { - data_s.WriteString(TAG_DUPLICATE_OBJECT); - data_s.WriteString(GetObjectName(info.object)); - printf("info.object (dup %s)\n", info.object->GetClassInfo()->GetClassName()); - return; - } - - if (info.object) { - data_s.WriteString(info.object->GetClassInfo()->GetClassName()); - printf("info.object (%s)\n", info.object->GetClassInfo()->GetClassName()); - } else { - data_s.WriteString(TAG_EMPTY_OBJECT); - printf("info.object (NULL)\n"); - return; - } - - data_s.WriteString(GetObjectName(info.object)); - - // I assume an object will not have millions of children - // Hmmm ... it could have (for example wxGrid) - data_s.Write32(info.children.Number()); -} - -void wxObjectOutputStream::AddChild(wxObject *obj) -{ - wxObjectStreamInfo *info; - - if (!FirstStage()) - return; - - info = new wxObjectStreamInfo; - - if (m_saved_objs.Member(obj) != NULL) { - info->duplicate = TRUE; - } else { - info->duplicate = FALSE; - m_saved_objs.Append(obj); - } - if (!obj) - info->duplicate = FALSE; - - info->n_children = 0; - info->object = obj; - info->parent = m_current_info; // Not useful here. - m_current_info->n_children++; - m_current_info->children.Append(info); -} - -void wxObjectOutputStream::ProcessObjectDef(wxObjectStreamInfo *info) -{ - wxNode *node; - - m_current_info = info; - // First stage: get children of obj - if (info->object && !info->duplicate) - info->object->StoreObject(*this); - - // Prepare and write the sub-entry about the child obj. - WriteObjectDef(*info); - - node = info->children.First(); - - while (node) { - ProcessObjectDef((wxObjectStreamInfo *)node->Data()); - node = node->Next(); - } -} - -void wxObjectOutputStream::ProcessObjectData(wxObjectStreamInfo *info) -{ - wxNode *node = info->children.First(); - - m_current_info = info; - - if (info->object && !info->duplicate) - info->object->StoreObject(*this); - - while (node) { - ProcessObjectData((wxObjectStreamInfo *)node->Data()); - node = node->Next(); - } -} - -bool wxObjectOutputStream::SaveObject(wxObject& obj) -{ - wxObjectStreamInfo info; - - if (m_saving) - return FALSE; - - m_saving = TRUE; - - // First stage - m_stage = 0; - info.object = &obj; - info.n_children = 0; - info.duplicate = FALSE; - ProcessObjectDef(&info); - - m_stage = 1; - ProcessObjectData(&info); - - info.children.Clear(); - m_saved_objs.Clear(); - - m_saving = FALSE; - - return TRUE; -} - -// ---------------------------------------------------------------------------- -// wxObjectInputStream -// ---------------------------------------------------------------------------- - -wxObjectInputStream::wxObjectInputStream(wxInputStream& s) - : wxFilterInputStream(s) -{ - m_secondcall = FALSE; -} - -wxObject *wxObjectInputStream::SolveName(const wxString& name) const -{ - wxNode *node = m_solver.First(); - wxObjectStreamInfo *info; - - while (node) { - info = (wxObjectStreamInfo *)node->Data(); - if (info->object_name == name) - return info->object; - - node = node->Next(); - } - return (wxObject *) NULL; -} - -wxObject *wxObjectInputStream::GetParent() const -{ - if (!m_current_info->parent) - return (wxObject *) NULL; - - return m_current_info->parent->object; -} - -wxObject *wxObjectInputStream::GetChild() -{ - wxObject *obj = GetChild(0); - - m_current_info->children_removed++; - - return obj; -} - -wxObject *wxObjectInputStream::GetChild(int no) const -{ - wxNode *node; - wxObjectStreamInfo *info; - - if (m_current_info->children_removed >= m_current_info->n_children) - return (wxObject *) NULL; - - node = m_current_info->children.Nth(m_current_info->children_removed+no); - - if (!node) - return (wxObject *) NULL; - - info = (wxObjectStreamInfo *)node->Data(); - - return info->object; -} - -void wxObjectInputStream::RemoveChildren(int nb) -{ - m_current_info->children_removed += nb; -} - -bool wxObjectInputStream::ReadObjectDef(wxObjectStreamInfo *info) -{ - wxDataInputStream data_s(*this); - char sig[WXOBJ_BEG_LEN+1]; - wxString class_name; - - Read(sig, WXOBJ_BEG_LEN); - sig[WXOBJ_BEG_LEN] = 0; - if (wxString(sig) != WXOBJ_BEGIN) - return FALSE; - - class_name = data_s.ReadString(); - info->children_removed = 0; - info->n_children = 0; - - if (class_name == TAG_EMPTY_OBJECT) - info->object = (wxObject *) NULL; - else if (class_name == TAG_DUPLICATE_OBJECT) { - info->object_name = data_s.ReadString(); - info->object = SolveName(info->object_name); - } else { - info->object_name = data_s.ReadString(); - info->object = wxCreateDynamicObject( WXSTRINGCAST class_name); - info->n_children = data_s.Read32(); - } - return TRUE; -} - -wxObjectStreamInfo *wxObjectInputStream::ProcessObjectDef(wxObjectStreamInfo *parent) -{ - wxObjectStreamInfo *info, *c_info; - int c; - - info = new wxObjectStreamInfo; - info->parent = parent; - info->children.DeleteContents(TRUE); - - m_solver.Append(info); - - if (!ReadObjectDef(info)) - return (wxObjectStreamInfo *) NULL; - - for (c=0;cn_children;c++) { - c_info = ProcessObjectDef(info); - if (!c_info) - return (wxObjectStreamInfo *) NULL; - info->children.Append(c_info); - } - - return info; -} - -void wxObjectInputStream::ProcessObjectData(wxObjectStreamInfo *info) -{ - wxNode *node = info->children.First(); - - m_current_info = info; - - if (info->object) - info->object->LoadObject(*this); - while (node) { - ProcessObjectData((wxObjectStreamInfo *)node->Data()); - node = node->Next(); - } - - m_current_info = info; - - if (info->recall) { - m_secondcall = TRUE; - info->object->LoadObject(*this); - m_secondcall = FALSE; - } -} - -wxObject *wxObjectInputStream::LoadObject() -{ - wxObjectStreamInfo *info; - wxObject *object; - - info = ProcessObjectDef((wxObjectStreamInfo *) NULL); - if (!info) - return (wxObject *) NULL; - ProcessObjectData(info); - - object = info->object; - - delete info; // It's magic ! The whole tree is destroyed. - - return object; -} - -#endif - diff --git a/src/common/odbc.cpp b/src/common/odbc.cpp deleted file mode 100644 index 576ee3a487..0000000000 --- a/src/common/odbc.cpp +++ /dev/null @@ -1,1838 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: odbc.cpp -// Purpose: ODBC implementation -// Author: Julian Smart, Olaf Klein (oklein@smallo.ruhr.de), -// Patrick Halke (patrick@zaphod.ruhr.de) -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "odbc.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#include "wx/defs.h" - -#if wxUSE_ODBC - -#ifdef _MSC_VER - #pragma warning(disable:4706) // assignment within conditional expression -#endif // VC++ - -#ifndef WX_PRECOMP -#include "wx/utils.h" -#include "wx/dialog.h" -#endif - -#include "wx/string.h" -#include "wx/odbc.h" - -#include -#include - -#if defined(__WXMSW__) && !defined(__WIN32__) -#include -#endif - -HENV wxDatabase::hEnv = 0; -int wxDatabase::refCount = 0; - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxDatabase, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxQueryCol, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxQueryField, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxRecordSet, wxObject) -#endif - -wxDatabase::wxDatabase(void) -{ - hDBC = 0; - username = NULL; - password = NULL; - datasource = NULL; - dbname = NULL; - connectstring = NULL; - isOpen = FALSE; - refCount ++; - retcode = 0; - username = NULL; - password = NULL; - err_occured = FALSE; - - memset(sqlstate, 0, sizeof sqlstate); - memset(errmsg, 0, sizeof errmsg); - - if (hEnv == 0) - { - retcode = SQLAllocEnv(&hEnv); - - if (retcode != SQL_SUCCESS) - hEnv = 0; - } -} - -wxDatabase::~wxDatabase(void) -{ - Close(); - DeleteRecordSets(); // Added JACS - - if (connectstring) - delete[] connectstring; - if (datasource) - delete[] datasource; - if (username) - delete[] username; - if (password) - delete[] password; - if (dbname) - delete[] dbname; - - refCount --; - if (!refCount && hEnv) - { - retcode = SQLFreeEnv(hEnv); - hEnv = 0; // JACS 17/6 - } -} - -void wxDatabase::ErrorSnapshot(HSTMT hstmt) -{ - SWORD len = 0; // JACS: sometimes doesn't get filled in by SQLError. - - err_occured = TRUE; - SQLError(hEnv, hDBC, hstmt, (unsigned char *)sqlstate, &nat_err, (unsigned char *)errmsg, SQL_MAX_MESSAGE_LENGTH-1, &len); - errmsg[len] = '\0'; -} - -bool wxDatabase::ErrorOccured(void) -{ - return err_occured; -} - -char* wxDatabase::GetErrorMessage(void) -{ - return errmsg; -} - -long wxDatabase::GetErrorNumber(void) -{ - return nat_err; -} - -char* wxDatabase::GetErrorClass(void) { - return sqlstate; -} - -bool wxDatabase::Open(char *thedatasource, bool WXUNUSED(exclusive), - bool WXUNUSED(readOnly), char *username, char *password) -{ - err_occured = FALSE; - - if (isOpen) - return FALSE; - - SetUsername(username); - SetPassword(password); - SetDataSource(thedatasource); - - if (!hEnv) - return FALSE; - - retcode = SQLAllocConnect(hEnv, &hDBC); - if (retcode != SQL_SUCCESS) { - hDBC = 0; - return FALSE; - } - - retcode = SQLConnect(hDBC, (UCHAR FAR*)thedatasource, strlen(thedatasource), (UCHAR FAR*)username, strlen(username), - (UCHAR FAR*)password, strlen(password)); - - if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO) { - ErrorSnapshot(); - return FALSE; - } - - isOpen = TRUE; - - return TRUE; -} - -bool wxDatabase::Close(void) -{ - // JACS: make sure the record set statements are all released. - ResetRecordSets(); - - err_occured = FALSE; - if (hDBC != 0) - { - retcode = SQLDisconnect(hDBC); - - if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO) { - ErrorSnapshot(); - return FALSE; - } - - retcode = SQLFreeConnect(hDBC); - - hDBC = 0; - isOpen = FALSE; - - return TRUE; - } - - return FALSE; -} - -// Database attributes -char *wxDatabase::GetDatabaseName(void) -{ - err_occured = FALSE; - if (hDBC == 0) - return NULL; - - char nameBuf[400]; - int nameSize = 0; - - retcode = SQLGetInfo(hDBC, SQL_DATABASE_NAME, (unsigned char*)nameBuf, sizeof(nameBuf), (short *)&nameSize); - - if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO) - return NULL; - - delete[] dbname; - dbname = NULL; - - if (nameSize > 0) - { - dbname = copystring(nameBuf); - return dbname; - } - else - return NULL; -} - -bool wxDatabase::CanUpdate(void) -{ - return FALSE; -} - -bool wxDatabase::CanTransact(void) -{ - return FALSE; -} - -bool wxDatabase::InWaitForDataSource(void) -{ - return FALSE; -} - -void wxDatabase::SetLoginTimeout(long WXUNUSED(seconds)) -{ -} - -void wxDatabase::SetQueryTimeout(long WXUNUSED(seconds)) -{ -} - -void wxDatabase::SetSynchronousMode(bool WXUNUSED(synchronous)) -{ -} - -// Database operations -bool wxDatabase::BeginTrans(void) -{ - return FALSE; -} - -bool wxDatabase::CommitTrans(void) -{ - return FALSE; -} - -bool wxDatabase::RollbackTrans(void) -{ - return FALSE; -} - -void wxDatabase::Cancel(void) -{ -} - -// Overridables -void wxDatabase::OnSetOptions(wxRecordSet *WXUNUSED(recordSet)) -{ -} - -void wxDatabase::OnWaitForDataSource(bool WXUNUSED(stillExecuting)) -{ -} - -void wxDatabase::SetPassword(char *s) -{ - if (password) - delete[] password; - if (s) - { - password = copystring(s); - } - else - password = NULL; -} - -void wxDatabase::SetUsername(char *s) -{ - delete[] username; - - if (s) - username = copystring(s); - else - username = NULL; -} - -void wxDatabase::SetDataSource(char *s) -{ - delete[] datasource; - - if (s) - datasource = copystring(s); - else - datasource = NULL; -} - -/* - * Added by JACS - */ - -void wxDatabase::DeleteRecordSets(void) -{ - wxNode *node = recordSets.First(); - while (node) - { - wxNode *next = node->Next(); - wxRecordSet *rec = (wxRecordSet *)node->Data(); - delete rec; - // The node is implicitly deleted by ~wxRecordSet - node = next; - } -} - -void wxDatabase::ResetRecordSets(void) -{ - wxNode *node = recordSets.First(); - while (node) - { - wxRecordSet *rec = (wxRecordSet *)node->Data(); - rec->ReleaseHandle(); - - node = node->Next(); - } -} - -bool wxDatabase::GetInfo(long infoType, long *buf) -{ - short sz = 0; - retcode = SQLGetInfo(hDBC, (UWORD)infoType, (unsigned char*)buf, sizeof(buf), &sz); - - if (retcode != SQL_ERROR) - return TRUE; - else - return FALSE; -} - -bool wxDatabase::GetInfo(long infoType, char *buf, int bufSize) -{ - if (bufSize == -1) - bufSize = sizeof(buf); - - short sz = 0; - retcode = SQLGetInfo(hDBC, (UWORD)infoType, (unsigned char*)buf, bufSize, &sz); - - if (retcode != SQL_ERROR) - return TRUE; - else - return FALSE; -} - -wxString wxDatabase::GetODBCVersionString(bool implementation) -{ - char buf[50]; - if (!implementation) - { -#ifdef SQL_SPEC_MAJOR - sprintf(buf, "%d%d.%d", (int)(SQL_SPEC_MAJOR/10), (int)(SQL_SPEC_MAJOR - (((int)(SQL_SPEC_MAJOR/10))*10)), - SQL_SPEC_MINOR); - return wxString(buf); -#else - return wxString("00.00"); -#endif - } - - bool noDBC = FALSE; - if (hDBC == 0) - { - noDBC = TRUE; - retcode = SQLAllocConnect(hEnv, &hDBC); - if (retcode != SQL_SUCCESS) - { - hDBC = 0; - return wxString("00.00"); - } - } - - int bufSize = sizeof(buf); - - short sz = 0; - retcode = SQLGetInfo(hDBC, (UWORD)SQL_ODBC_VER, (unsigned char*)buf, bufSize, &sz); - - if (hDBC != 0 && noDBC) - { - retcode = SQLFreeConnect(hDBC); - hDBC = 0; - } - - if (retcode == SQL_ERROR) - return wxString(""); - else - return wxString(buf); -} - -float wxDatabase::GetODBCVersionFloat(bool implementation) -{ - if (!implementation) - { -#ifdef SQL_SPEC_MAJOR - return (float)(SQL_SPEC_MAJOR + (SQL_SPEC_MINOR/100.0)); -#else - return 0.0; -#endif - } - - bool noDBC = FALSE; - if (hDBC == 0) - { - noDBC = TRUE; - retcode = SQLAllocConnect(hEnv, &hDBC); - if (retcode != SQL_SUCCESS) - { - hDBC = 0; - return (float)0.0; - } - } - - char buf[50]; - int bufSize = sizeof(buf); - - short sz = 0; - retcode = SQLGetInfo(hDBC, (UWORD)SQL_ODBC_VER, (unsigned char*)buf, bufSize, &sz); - - if (hDBC != 0 && noDBC) - { - retcode = SQLFreeConnect(hDBC); - hDBC = 0; - } - - if (retcode == SQL_ERROR) - return 0.0; - else - return atof(buf); -} - -/* - * wxRecordSet - */ - -wxRecordSet::wxRecordSet(wxDatabase *db, int typ, int opt): - cols(wxKEY_STRING) -{ - parentdb = db; - hStmt = 0; - nFields = 0; - nParams = 0; - recordFilter = NULL; - sortString = NULL; - retcode = 0; - cursor = 0; - tablename = NULL; - nCols = 0; - nRecords = 0; - - type = typ; - options = opt; - - // Added JACS - if (parentdb) - parentdb->GetRecordSets().Append(this); -} - -wxRecordSet::~wxRecordSet(void) -{ - ReleaseHandle(); - - // JACS - if (parentdb) - parentdb->GetRecordSets().DeleteObject(this); - - if (recordFilter) - delete[] recordFilter; - if (sortString) - delete[] sortString; - if (tablename) - delete[] tablename; -} - -// If SQL is non-NULL, table and columns can be NULL. -bool wxRecordSet::BeginQuery(int WXUNUSED(openType), char *WXUNUSED(sql), int WXUNUSED(options)) -{ - // Needs to construct an appropriate SQL statement. By default - // (i.e. if table and columns are provided) then - // SELECT FROM - // will be used. - if (!parentdb) - return FALSE; - if (!parentdb->GetHDBC()) - return FALSE; - - if (hStmt) - { - retcode = SQLFreeStmt(hStmt, SQL_DROP); - if (retcode == SQL_ERROR) - { - parentdb->ErrorSnapshot(hStmt); - return FALSE; - } - hStmt = 0; - } - - retcode = SQLAllocStmt(parentdb->GetHDBC(), &hStmt); - if (retcode != SQL_SUCCESS) - return FALSE; - - return TRUE; -} - -bool wxRecordSet::Query(char *columns, char *table, char *filter) -{ - // Needs to construct an appropriate SQL statement. By default - // (i.e. if table and columns are provided) then - // SELECT FROM
    - // will be used. - - char* thetable = table ? table : tablename; - - if (!thetable) - return FALSE; - if (!columns) - return FALSE; - - wxString query; - - query += "SELECT "; - query += columns; - query += " FROM "; - query += thetable; - - if (filter) { - query += " WHERE "; - query += filter; - } - retcode = SQLPrepare(hStmt, (UCHAR FAR *)query.GetData(), strlen(query.GetData())); - if (retcode != SQL_SUCCESS) { - parentdb->ErrorSnapshot(hStmt); - return FALSE; - } - - retcode = SQLExecute(hStmt); - - if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO) { - parentdb->ErrorSnapshot(hStmt); - return FALSE; - } - - return TRUE; -} - -bool wxRecordSet::EndQuery(void) -{ - return TRUE; -} - -void wxRecordSet::FillVars(int recnum) { - wxNode* node = cols.First(); - - do { - ((wxQueryCol*)node->Data())->FillVar(recnum); - } while ((node = node->Next())); -} - -bool wxRecordSet::GetResultSet(void) -{ -// long trash = SQL_NULL_DATA; // value added by JACS - long trash; - // contains the number of bytes transferred by SQLFetch() - // who needs this ? - wxNode *currow, *fetch, *curcol; - - retcode = SQLNumResultCols(hStmt, &nCols); - - if (!nCols) - return TRUE; - - // delete old data first - cols.DeleteContents(TRUE); - cols.Clear(); - fetchbuf.DeleteContents(TRUE); - fetchbuf.Clear(); - - nRecords = 0; - cursor = 0; - - int i; - for (i=0; iErrorSnapshot(hStmt); - return FALSE; - } - - wxQueryCol *col1 = new wxQueryCol; - curcol = cols.Append(name, col1); - col1->SetName(name); - col1->SetType(type); - col1->SetNullable((nullable != 0)); - - wxQueryField *field1 = new wxQueryField; - fetch = fetchbuf.Append(field1); - field1->SetType(type); - field1->SetSize(len); - - SQLBindCol(hStmt, i+1, SQL_C_BINARY, (unsigned char*)field1->GetData(), field1->GetSize(), &trash); - } - - switch (type) { - case wxOPEN_TYPE_SNAPSHOT: - // get it all ! - // After we've done an SQLFetch, copy the data in the fetch buffer into - // new fields, for each column. - while (SQL_SUCCESS == (retcode = SQLFetch(hStmt)) || SQL_SUCCESS_WITH_INFO == retcode) { - nRecords++; - - curcol = cols.First(); - fetch = fetchbuf.First(); - for (i=0; iData(); - wxQueryCol *col = (wxQueryCol *)curcol->Data(); - wxQueryField *field = new wxQueryField; - - currow = col->fields.Append(field); - - field->SetType(fetchField->GetType()); - field->SetData(fetchField->GetData(), fetchField->GetSize()); - curcol = curcol->Next(); - fetchField->ClearData(); // Runs ok if this commented out and SetData commented out - fetch = fetch->Next(); - } - } - // while loop should only be left, when no more data was found; - // otherwise it seems, that there was an error - if (SQL_NO_DATA_FOUND != retcode) { - parentdb->ErrorSnapshot(hStmt); - return FALSE; - } - break; - case wxOPEN_TYPE_DYNASET: - // get first record only - if (SQL_SUCCESS == (retcode = SQLFetch(hStmt)) || retcode == SQL_SUCCESS_WITH_INFO) { - nRecords = 1; // TO DO! # of records in the ODBC result set should be set here. - - curcol = cols.First(); - fetch = fetchbuf.First(); - for (i=0; iData())->fields.Append(new wxQueryField); - - ((wxQueryField*)currow->Data())->SetType(((wxQueryField*)fetch->Data())->GetType()); - ((wxQueryField*)currow->Data())->SetData(((wxQueryField*)fetch->Data())->GetData(), ((wxQueryField*)fetch->Data())->GetSize()); - curcol = curcol->Next(); - ((wxQueryField*)fetch->Data())->ClearData(); - fetch = fetch->Next(); - } - } - if (SQL_NO_DATA_FOUND != retcode) { - parentdb->ErrorSnapshot(hStmt); - return FALSE; - } - break; - default: - return FALSE; - } - - FillVars(0); - - return TRUE; -} - -bool wxRecordSet::ExecuteSQL(char *sql) -{ - if (hStmt) - { - retcode = SQLFreeStmt(hStmt, SQL_DROP); - if (retcode == SQL_ERROR) - { - parentdb->ErrorSnapshot(hStmt); - return FALSE; - } - hStmt = NULL; - } - - retcode = SQLAllocStmt(parentdb->GetHDBC(), &hStmt); - - if (SQL_SUCCESS != retcode) { - parentdb->ErrorSnapshot(hStmt); - return FALSE; - } - - retcode = SQLExecDirect(hStmt, (UCHAR FAR*)sql, SQL_NTS); - - if (SQL_SUCCESS != retcode && SQL_SUCCESS_WITH_INFO != retcode) { - parentdb->ErrorSnapshot(hStmt); - return FALSE; - } - - return GetResultSet(); -} - -bool wxRecordSet::GetDataSources(void) { - - char *dsname = "Name", *dsdesc = "Description"; - char namebuf[64]; - char descbuf[512]; - short namelen, desclen; - - cursor = 0; - - // delete old data first - cols.DeleteContents(TRUE); - cols.Clear(); - nRecords = 0; - - // JACS This is a snapshot, not a dynaset. - type = wxOPEN_TYPE_SNAPSHOT; - - wxNode *namecol, *desccol; - - namecol = cols.Append(dsname, new wxQueryCol); - ((wxQueryCol*)namecol->Data())->SetName(dsname); - ((wxQueryCol*)namecol->Data())->SetType(SQL_CHAR); - desccol = cols.Append(dsdesc, new wxQueryCol); - ((wxQueryCol*)desccol->Data())->SetName(dsdesc); - ((wxQueryCol*)desccol->Data())->SetType(SQL_CHAR); - - retcode = SQLDataSources(parentdb->GetHENV(), SQL_FETCH_FIRST, (unsigned char *)namebuf, 63, &namelen, (unsigned char *)descbuf, 511, &desclen); - while (SQL_SUCCESS == retcode || SQL_SUCCESS_WITH_INFO == retcode) { - nRecords++; - ((wxQueryCol*)namecol->Data())->AppendField(namebuf, namelen); - ((wxQueryCol*)desccol->Data())->AppendField(descbuf, desclen); - retcode = SQLDataSources(parentdb->GetHENV(), SQL_FETCH_NEXT, (unsigned char *)namebuf, 63, &namelen, (unsigned char *)descbuf, 511, &desclen); - } - - if (SQL_SUCCESS != retcode && SQL_SUCCESS_WITH_INFO != retcode && SQL_NO_DATA_FOUND != retcode) { - parentdb->ErrorSnapshot(); - return FALSE; - } - - cursor = 0; - - return TRUE; -} - -// Attributes -void wxRecordSet::SetTableName(char* name) { - delete[] tablename; - tablename = NULL; - - if (name) - tablename = copystring(name); -} - -bool wxRecordSet::GetTables(void) -{ - if (hStmt) - { - retcode = SQLFreeStmt(hStmt, SQL_DROP); - if (retcode == SQL_ERROR) - { - parentdb->ErrorSnapshot(hStmt); - return FALSE; - } - - hStmt = NULL; - } - - retcode = SQLAllocStmt(parentdb->GetHDBC(), &hStmt); - - if (SQL_SUCCESS != retcode) { - parentdb->ErrorSnapshot(); - return FALSE; - } - - retcode = SQLTables(hStmt, NULL, 0, NULL, 0, NULL, 0, NULL, 0); - - if (SQL_SUCCESS != retcode && SQL_SUCCESS_WITH_INFO != retcode) { - parentdb->ErrorSnapshot(hStmt); - return FALSE; - } - - return GetResultSet(); -} - -bool wxRecordSet::GetColumns(char* table) -{ - char* name=NULL; -// char* wildcard = "%"; - - name = table ? table : tablename; - - if (!name) - return FALSE; - - if (hStmt) - { - retcode = SQLFreeStmt(hStmt, SQL_DROP); - if (retcode == SQL_ERROR) - { - parentdb->ErrorSnapshot(hStmt); - return FALSE; - } - hStmt = NULL; - } - - retcode = SQLAllocStmt(parentdb->GetHDBC(), &hStmt); - - if (SQL_SUCCESS != retcode) { - parentdb->ErrorSnapshot(); - return FALSE; - } - - //retcode = SQLColumns(hstmt, (unsigned char*)parentdb->GetDataSource(), strlen(parentdb->GetDataSource()), wildcard, 1, name, strlen(name), wildcard, 1); - retcode = SQLColumns(hStmt, NULL, 0, NULL, 0, (unsigned char *)name, strlen(name), NULL, 0); - - if (SQL_SUCCESS != retcode && SQL_SUCCESS_WITH_INFO != retcode) { - parentdb->ErrorSnapshot(hStmt); - return FALSE; - } - - return GetResultSet(); -} - -// It is derived from previous GetColumns -bool wxRecordSet::GetPrimaryKeys(char* table) -{ - char* name=NULL; -// char* wildcard = "%"; - - name = table ? table : tablename; - - if (!name) - return FALSE; - - if (hStmt) - { - retcode = SQLFreeStmt(hStmt, SQL_DROP); - if (retcode == SQL_ERROR) - { - parentdb->ErrorSnapshot(hStmt); - return FALSE; - } - hStmt = NULL; - } - - retcode = SQLAllocStmt(parentdb->GetHDBC(), &hStmt); - - if (SQL_SUCCESS != retcode) { - parentdb->ErrorSnapshot(); - return FALSE; - } - - retcode = SQLPrimaryKeys(hStmt, NULL, 0, NULL, 0, (unsigned char *)name, SQL_NTS); - - if (SQL_SUCCESS != retcode && SQL_SUCCESS_WITH_INFO != retcode) { - parentdb->ErrorSnapshot(hStmt); - return FALSE; - } - - return GetResultSet(); -} - -bool wxRecordSet::GetForeignKeys(char* PkTableName, char * FkTableName) -{ - char* Pkname=NULL; - char* Fkname=NULL; -// char* wildcard = "%"; - -// Try to disable situation: both PkTableName and FkTableName are NULL -// set Pkname from tablename - if( !PkTableName && !FkTableName ) { - Pkname = PkTableName ? PkTableName : tablename; - Fkname = FkTableName ; - if (!Pkname ) - return FALSE; - } else { - Pkname = PkTableName ; - Fkname = FkTableName ; - } - - if (hStmt) - { - retcode = SQLFreeStmt(hStmt, SQL_DROP); - if (retcode == SQL_ERROR) - { - parentdb->ErrorSnapshot(hStmt); - return FALSE; - } - hStmt = NULL; - } - - retcode = SQLAllocStmt(parentdb->GetHDBC(), &hStmt); - - if (SQL_SUCCESS != retcode) { - parentdb->ErrorSnapshot(); - return FALSE; - } - - retcode = SQLForeignKeys(hStmt, NULL, 0, NULL, 0, (unsigned char *)Pkname, - (Pkname ? SQL_NTS : 0), NULL, 0, NULL, 0, (unsigned char *)Fkname ,(Fkname ?SQL_NTS : 0) ); - - if (SQL_SUCCESS != retcode && SQL_SUCCESS_WITH_INFO != retcode) { - parentdb->ErrorSnapshot(hStmt); - return FALSE; - } - - return GetResultSet(); -} - -long wxRecordSet::GetNumberRecords(void) -{ - return nRecords; -} - -long wxRecordSet::GetNumberCols(void) -{ - return nCols; -} - -char* wxRecordSet::GetColName(int col) -{ - wxNode* node = cols.Nth(col); - - if (!node) - return NULL; - - return ((wxQueryCol*)node->Data())->GetName(); -} - -short wxRecordSet::GetColType(int col) -{ - wxNode* node = cols.Nth(col); - - if (!node) - return SQL_TYPE_NULL; - - return ((wxQueryCol*)node->Data())->GetType(); -} - -short wxRecordSet::GetColType(const char *col) -{ - wxNode* node = cols.Find(col); - - if (!node) - return SQL_TYPE_NULL; - - return ((wxQueryCol*)node->Data())->GetType(); -} - -bool wxRecordSet::GetFieldData(int col, int type, void* data) -{ - wxNode* node = cols.Nth(col); - - if (!node) - return FALSE; - - if (((wxQueryCol*)node->Data())->GetType() != type) - return FALSE; - - void* src = ((wxQueryCol*)node->Data())->GetData(cursor); - - if (!src) - return FALSE; - - memcpy(data, src, ((wxQueryCol*)node->Data())->GetSize(cursor)); - - return TRUE; -} - -bool wxRecordSet::GetFieldData(const char* name, int type, void *data) -{ - wxNode* node = cols.Find(name); - - if (!node) - return FALSE; - - if (((wxQueryCol*)node->Data())->GetType() != type) - return FALSE; - - void* src = ((wxQueryCol*)node->Data())->GetData(cursor); - - if (!src) - return FALSE; - - memcpy(data, src, ((wxQueryCol*)node->Data())->GetSize(cursor)); - - return TRUE; -} - -void* wxRecordSet::GetFieldDataPtr(int col, int type) -{ - wxNode* node = cols.Nth(col); - - if (!node) - return NULL; - - if (((wxQueryCol*)node->Data())->GetType() != type) - return NULL; - - return ((wxQueryCol*)node->Data())->GetData(cursor); -} - -void* wxRecordSet::GetFieldDataPtr(const char* name, int type) -{ - wxNode* node = cols.Find(name); - - if (!node) - return NULL; - - if (((wxQueryCol*)node->Data())->GetType() != type) - return NULL; - - return ((wxQueryCol*)node->Data())->GetData(cursor); -} - -void* wxRecordSet::BindVar(int col, void* var, long size) { - wxNode* node = cols.Nth(col); - - if (!node) - return NULL; - - return ((wxQueryCol*)node->Data())->BindVar(var, size); -} - -void* wxRecordSet::BindVar(const char* name, void* var, long size) { - wxNode* node = cols.Find(name); - - if (!node) - return NULL; - - return ((wxQueryCol*)node->Data())->BindVar(var, size); -} - -void wxRecordSet::SetType(int typ) { - type = typ; -} - -int wxRecordSet::GetType(void) { - return type; -} - -void wxRecordSet::SetOptions(int opts) { - options = opts; -} - -int wxRecordSet::GetOptions(void) { - return options; -} - -bool wxRecordSet::CanAppend(void) -{ - return FALSE; -} - -bool wxRecordSet::CanRestart(void) -{ - return FALSE; -} - -bool wxRecordSet::CanScroll(void) -{ - return FALSE; -} - -bool wxRecordSet::CanTransact(void) -{ - return FALSE; -} - -bool wxRecordSet::CanUpdate(void) -{ - return FALSE; -} - -long wxRecordSet::GetCurrentRecord(void) -{ - return -1L; -} - -bool wxRecordSet::RecordCountFinal(void) -{ - return FALSE; -} - -char* wxRecordSet::GetTableName(void) -{ - return tablename; -} - -char *wxRecordSet::GetSQL(void) -{ - return NULL; -} - -bool wxRecordSet::IsOpen(void) -{ - return parentdb->IsOpen(); -} - -bool wxRecordSet::IsBOF(void) -{ - return cursor < 0; -} - -bool wxRecordSet::IsEOF(void) -{ - return cursor >= nRecords; -} - -bool wxRecordSet::IsDeleted(void) -{ - return FALSE; -} - -// Update operations -void wxRecordSet::AddNew(void) -{ -} - -bool wxRecordSet::Delete(void) -{ - return FALSE; -} - -void wxRecordSet::Edit(void) -{ -} - -bool wxRecordSet::Update(void) -{ - return FALSE; -} - -// Record navigation -bool wxRecordSet::Move(long rows) -{ - if (!nRecords) { - cursor = -1; - return FALSE; - } - - switch (type) { - case wxOPEN_TYPE_SNAPSHOT: - cursor += (int)rows; - if (cursor < 0) { - cursor = -1; - return FALSE; - } - if (cursor > nRecords-1) { - cursor = nRecords; - return FALSE; - } - return TRUE; - - case wxOPEN_TYPE_DYNASET: - return FALSE; - default: - return FALSE; - } -} - -bool wxRecordSet::GoTo(long row) -{ - if (!nRecords) { - cursor = -1; - return FALSE; - } - - switch (type) { - case wxOPEN_TYPE_SNAPSHOT: - cursor = (int)row; - if (cursor < 0) { - cursor = -1; - return FALSE; - } - if (cursor > nRecords-1) { - cursor = nRecords; - return FALSE; - } - return TRUE; - - case wxOPEN_TYPE_DYNASET: - return FALSE; - default: - return FALSE; - } -} - -bool wxRecordSet::MoveFirst(void) -{ - if (!nRecords) { - cursor = -1; - return FALSE; - } - - switch (type) { - case wxOPEN_TYPE_SNAPSHOT: - cursor = 0; - return TRUE; - - case wxOPEN_TYPE_DYNASET: - return FALSE; - default: - return FALSE; - } -} - -bool wxRecordSet::MoveLast(void) -{ - if (!nRecords) { - cursor = -1; - return FALSE; - } - - switch (type) { - case wxOPEN_TYPE_SNAPSHOT: - cursor = nRecords-1; - return TRUE; - - case wxOPEN_TYPE_DYNASET: - return FALSE; - default: - return FALSE; - } -} - -bool wxRecordSet::MoveNext(void) -{ - if (!nRecords) { - cursor = -1; - return FALSE; - } - - switch (type) { - case wxOPEN_TYPE_SNAPSHOT: - cursor++; - if (cursor >= nRecords) { - cursor = nRecords; - return FALSE; - } - return TRUE; - - case wxOPEN_TYPE_DYNASET: - return FALSE; - default: - return FALSE; - } -} - -bool wxRecordSet::MovePrev(void) -{ - if (!nRecords) { - cursor = -1; - return FALSE; - } - - switch (type) { - case wxOPEN_TYPE_SNAPSHOT: - cursor--; - if (cursor < 0) { - cursor = 0; - return FALSE; - } - return TRUE; - - case wxOPEN_TYPE_DYNASET: - return FALSE; - default: - return FALSE; - } -} - -// Others -void wxRecordSet::Cancel(void) -{ -} - -bool wxRecordSet::IsFieldDirty(int col) -{ - wxNode* node = cols.Nth(col); - - if (!node) - return FALSE; - - return ((wxQueryCol*)node->Data())->IsFieldDirty(cursor); -} - -bool wxRecordSet::IsFieldDirty(const char* name) -{ - wxNode* node = cols.Find(name); - - if (!node) - return FALSE; - - return ((wxQueryCol*)node->Data())->IsFieldDirty(cursor); -} - -bool wxRecordSet::IsFieldNull(int col) -{ - wxNode* node = cols.Nth(col); - - if (!node) - return TRUE; - - return NULL != ((wxQueryCol*)node->Data())->GetData(cursor); -} - -bool wxRecordSet::IsFieldNull(const char* name) -{ - wxNode* node = cols.Find(name); - - if (!node) - return TRUE; - - return NULL != ((wxQueryCol*)node->Data())->GetData(cursor); -} - -bool wxRecordSet::IsColNullable(int col) -{ - wxNode* node = cols.Nth(col); - - if (!node) - return FALSE; - - return ((wxQueryCol*)node->Data())->IsNullable(); -} - -bool wxRecordSet::IsColNullable(const char* name) -{ - wxNode* node = cols.Find(name); - - if (!node) - return FALSE; - - return ((wxQueryCol*)node->Data())->IsNullable(); -} - -bool wxRecordSet::Requery(void) -{ - return FALSE; -} - -void wxRecordSet::SetFieldDirty(int col, bool dirty) -{ - wxNode* node = cols.Nth(col); - - if (!node) - return; - - ((wxQueryCol*)node->Data())->SetFieldDirty(cursor, dirty); -} - -void wxRecordSet::SetFieldDirty(const char* name, bool dirty) -{ - wxNode* node = cols.Find(name); - - if (!node) - return; - - ((wxQueryCol*)node->Data())->SetFieldDirty(cursor, dirty); -} - -void wxRecordSet::SetFieldNull(void *WXUNUSED(p), bool WXUNUSED(isNull)) -{ -} - -// Overridables -char *wxRecordSet::GetDefaultConnect(void) -{ - return NULL; -} - -char *wxRecordSet::GetDefaultSQL(void) -{ - return NULL; -} - -void wxRecordSet::SetDefaultSQL(char *s) -{ - delete[] defaultSQL; - - if (s) - defaultSQL = copystring(s); - else - defaultSQL = NULL; -} - -// Build SQL query from column specification -bool wxRecordSet::ConstructDefaultSQL(void) -{ -// if (queryCols.Number() == 0) - return FALSE; -} - -bool wxRecordSet::ReleaseHandle(void) -{ - if (hStmt) - { - retcode = SQLFreeStmt(hStmt, SQL_DROP); - if (retcode == SQL_ERROR) - { - if (parentdb) - parentdb->ErrorSnapshot(hStmt); - return FALSE; - } - hStmt = 0; - } - return TRUE; -} - -wxQueryCol::wxQueryCol(void) { -// __type = wxTYPE_QUERYCOL; - name = NULL; - type = SQL_TYPE_NULL; - nullable = FALSE; - var = NULL; - varsize = 0; -} - -wxQueryCol::~wxQueryCol(void) { - // delete all data - fields.DeleteContents(TRUE); - fields.Clear(); - - if (name) - delete[] name; -} - -void wxQueryCol::SetName(char* n) { - name = new char[strlen(n)+1]; - strcpy(name, n); -} - -bool wxQueryCol::SetData(int row, void* buf, long len) { - wxNode* node = fields.Nth(row); - - if (!node) - return FALSE; - - return ((wxQueryField*)node->Data())->SetData(buf, len); -} - -void wxQueryCol::SetFieldDirty(int row, bool dirty) { - wxNode* node = fields.Nth(row); - - if (!node) - return; - - ((wxQueryField*)node->Data())->SetDirty(dirty); -} - -void wxQueryCol::AppendField(void* buf, long len) { - wxNode* node = fields.Append(new wxQueryField); - ((wxQueryField*)node->Data())->SetType(type); - ((wxQueryField*)node->Data())->SetData(buf, len); -} - -void wxQueryCol::SetType(short t) { - type = t; -} - -void* wxQueryCol::BindVar(void* v, long s) { - void* oldvar = var; - - var = v; - varsize = s; - - return oldvar; -} - -void wxQueryCol::FillVar(int recnum) { - if (!var) - return; - - wxNode* node = fields.Nth(recnum); - - if (!node) - return; - - long actsize = ((wxQueryField*)node->Data())->GetSize(); - if (actsize > varsize) - actsize = varsize; - - memcpy(var, ((wxQueryField*)node->Data())->GetData(), actsize); -} - -void wxQueryCol::SetNullable(bool n) { - nullable = n; -} - -char* wxQueryCol::GetName(void) { - return name; -} - -short wxQueryCol::GetType(void) { - return type; -} - -bool wxQueryCol::IsNullable(void) { - return nullable; -} - - -bool wxQueryCol::IsFieldDirty(int row) { - wxNode* node = fields.Nth(row); - - if (!node) - return FALSE; - - return ((wxQueryField*)node->Data())->IsDirty(); -} - -void* wxQueryCol::GetData(int row) { - wxNode* node = fields.Nth(row); - - if (!node) - return NULL; - - return ((wxQueryField*)node->Data())->GetData(); -} - -long wxQueryCol::GetSize(int row) { - wxNode* node = fields.Nth(row); - - if (!node) - return 0; - - return ((wxQueryField*)node->Data())->GetSize(); -} - -wxQueryField::wxQueryField(void) { -// __type = wxTYPE_QUERYROW; - data = NULL; - type = SQL_TYPE_NULL; - size = 0; - dirty = FALSE; -} - -wxQueryField::~wxQueryField(void) { - switch (type) - { - case SQL_NUMERIC: - case SQL_DECIMAL: - case SQL_CHAR: - case SQL_VARCHAR: - if (data) // JACS - delete[] (char*)data; - break; - case SQL_INTEGER: - if (data) // JACS - delete (long*)data; - break; - case SQL_SMALLINT: - if (data) - delete (short*)data; - break; - case SQL_FLOAT: - case SQL_DOUBLE: - if (data) - delete (double*)data; - break; - case SQL_REAL: - if (data) - delete (float*)data; - break; - case SQL_TIME: - if (data) - delete (TIME_STRUCT *)data; - break; - case SQL_DATE: - if (data) - delete (DATE_STRUCT *)data; - break; - case SQL_TIMESTAMP: - if (data) - delete (TIMESTAMP_STRUCT *)data; - break; - } -} - -bool wxQueryField::AllocData(void) { - switch (type) - { - case SQL_NUMERIC: - case SQL_DECIMAL: - case SQL_CHAR: - case SQL_VARCHAR: - { - if (data) // JACS - delete[] (char*)data; - if ((data = new char[size+1])) - { - char *str = (char *)data; - int i; - for (i = 0; i < size; i++) - str[i] = 0; -// memset(data, 0, size+1); - } - break; - } - case SQL_INTEGER: - { - if (data) // JACS - delete (long*)data; - if ((data = new long)) - *(long*)data = 0L; - break; - } - case SQL_SMALLINT: - { - if (data) - delete (short*)data; - if ((data = new short)) - *(short*)data = 0; - break; - } - case SQL_FLOAT: - case SQL_DOUBLE: - { - if (data) - delete (double*)data; - if ((data = new double)) - *(double*)data = 0; - break; - } - case SQL_REAL: - { - if (data) - delete (float*)data; - if ((data = new float)) - *(float*)data = (float)0; - break; - } - case SQL_TIME: - { - if (data) - delete (TIME_STRUCT *)data; - data = new TIME_STRUCT; - memset(data, 0, sizeof(TIME_STRUCT)); - break; - } - case SQL_DATE: - { - if (data) - delete (DATE_STRUCT *)data; - data = new DATE_STRUCT; - memset(data, 0, sizeof(DATE_STRUCT)); - break; - } - case SQL_TIMESTAMP: - { - if (data) - delete (TIMESTAMP_STRUCT *)data; - data = new TIMESTAMP_STRUCT; - memset(data, 0, sizeof(TIMESTAMP_STRUCT)); - break; - } - default: - return FALSE; - } - - return TRUE; -} - -bool wxQueryField::SetData(void* d, long s) { - size = s; - if (AllocData() && d) - { -// memcpy(data, d, s); - switch (type) - { - case SQL_NUMERIC: - case SQL_DECIMAL: - case SQL_CHAR: - case SQL_VARCHAR: - { - char *str = (char *)data; - int i; - for (i = 0; i < size; i++) - str[i] = 0; - - strncpy(str, (char *)d, (int)size); - str[size] = 0; - break; - } - case SQL_INTEGER: - { - *(long*)data = *((long *)d); - break; - } - case SQL_SMALLINT: - { - *(short*)data = *((short*)d); - break; - } - case SQL_FLOAT: - case SQL_DOUBLE: - { - *(double*)data = *((double*)d); - break; - } - case SQL_REAL: - { - *(float*)data = *((float*)d); - break; - } - case SQL_TIME: - { - *(TIME_STRUCT *)data = *((TIME_STRUCT*)d); - break; - } - case SQL_TIMESTAMP: - { - *(TIMESTAMP_STRUCT *)data = *((TIMESTAMP_STRUCT*)d); - break; - } - case SQL_DATE: - { - *(DATE_STRUCT *)data = *((DATE_STRUCT*)d); - break; - } - default: - return FALSE; - } - return TRUE; - } - return FALSE; -} - -void wxQueryField::ClearData(void) { - if (data) - { - // memset(data, 0, size); - switch (type) - { - case SQL_NUMERIC: - case SQL_DECIMAL: - case SQL_CHAR: - case SQL_VARCHAR: - { - char *str = (char *)data; - int i; - for (i = 0; i < size; i++) - str[i] = 0; - break; - } - case SQL_INTEGER: - { - *(long*)data = 0L; - break; - } - case SQL_SMALLINT: - { - *(short*)data = 0; - break; - } - case SQL_FLOAT: - case SQL_DOUBLE: - { - *(double*)data = (double)0.0; - break; - } - case SQL_REAL: - { - *(float*)data = (float)0.0; - break; - } - case SQL_TIME: - { - memset(data, 0, sizeof(TIME_STRUCT)); - break; - } - case SQL_DATE: - { - memset(data, 0, sizeof(DATE_STRUCT)); - break; - } - case SQL_TIMESTAMP: - { - memset(data, 0, sizeof(TIMESTAMP_STRUCT)); - break; - } - default: - return; - } - } -} - -void wxQueryField::SetDirty(bool d) { - dirty = d; -} - -void wxQueryField::SetType(short t) { - type = t; -} - -void wxQueryField::SetSize(long s) { - size = s; - AllocData(); -} - -void* wxQueryField::GetData(void) { - return data; -} - -short wxQueryField::GetType(void) { - return type; -} - -long wxQueryField::GetSize(void) { - return size; -} - -bool wxQueryField::IsDirty(void) { - return dirty; -} - -#ifdef _MSC_VER - #pragma warning(default:4706) // assignment within conditional expression -#endif // VC++ - -#endif // wxUSE_ODBC diff --git a/src/common/parser.y b/src/common/parser.y deleted file mode 100644 index d9ae9b194b..0000000000 --- a/src/common/parser.y +++ /dev/null @@ -1,172 +0,0 @@ - %{ -#include -#ifdef _MSC_VER -#include -#endif -#if defined(__GNUWIN32__) && !defined(__TWIN32__) -#include -#endif - -#include "wx/expr.h" - -#ifndef __EXTERN_C__ -#define __EXTERN_C__ 1 -#endif - -#if defined(__cplusplus) || defined(__STDC__) -#if defined(__cplusplus) && defined(__EXTERN_C__) -extern "C" { -#endif -#endif -int yylex(void); -int yylook(void); -int yywrap(void); -int yyback(int *, int); -void yyerror(char *); - -/* You may need to put /DLEX_SCANNER in your makefile - * if you're using LEX! - */ -#ifdef LEX_SCANNER -/* int yyoutput(int); */ -void yyoutput(int); -#else -void yyoutput(int); -#endif - -#if defined(__cplusplus) || defined(__STDC__) -#if defined(__cplusplus) && defined(__EXTERN_C__) -} -#endif -#endif -%} - -%union { - char *s; -/* struct pexpr *expr; */ -} - - -%start commands - -%token INTEGER 1 -%token WORD 2 -%token STRING 3 -%token PERIOD 13 -%token OPEN 4 -%token CLOSE 5 -%token COMMA 6 -%token NEWLINE 7 -%token ERROR 8 -%token OPEN_SQUARE 9 -%token CLOSE_SQUARE 10 -%token EQUALS 11 -%token EXP 14 - -/* %type command expr arglist arg arg1 */ -%type command expr arglist arg arg1 - -%% - -commands : /* empty */ - | commands command - ; - -command : WORD PERIOD - {process_command(proio_cons(wxmake_word($1), NULL)); free($1);} - | expr PERIOD - {process_command($1);} - | error PERIOD - {syntax_error("Unrecognized command.");} - ; - -expr : WORD OPEN arglist CLOSE - {$$ = proio_cons(wxmake_word($1), $3); free($1);} - | OPEN_SQUARE CLOSE_SQUARE - {$$ = proio_cons(NULL, NULL);} - | OPEN_SQUARE arglist CLOSE_SQUARE - {$$ = $2; } - ; - -arglist : - {$$ = NULL;} - | arg - {$$ = proio_cons($1, NULL);} - | - arg COMMA arglist - {$$ = proio_cons($1, $3);} - ; - -arg : WORD EQUALS arg1 - {$$ = proio_cons(wxmake_word("="), proio_cons(wxmake_word($1), proio_cons($3, NULL))); - free($1); } - | arg1 - {$$ = $1; } - -arg1 : WORD - {$$ = wxmake_word($1); free($1);} - | STRING - {$$ = wxmake_string($1); free($1);} - | INTEGER - {$$ = wxmake_integer($1); free($1);} - | INTEGER PERIOD INTEGER - {$$ = wxmake_real($1, $3); free($1); free($3); } - | INTEGER EXP INTEGER - {$$ = wxmake_exp($1, $3); free($1); free($3); } - | - INTEGER PERIOD INTEGER EXP INTEGER - {$$ = wxmake_exp2($1, $3, $5); free($1); free($3); - free($5); } - - | expr - {$$ = $1;} - ; - -%% - -#if (defined(__WXGTK__) || defined(__WXMOTIF__)) && !defined(NO_CONFIGURE) -#include "lexer.c" -#else -#if (defined(__MWERKS__)) -#include "../common/cwlex_yy.c" -#else -#include "../common/lex_yy.c" -#endif -#endif - -/* -void yyerror(s) -char *s; -{ - syntax_error(s); -} -*/ - -/* Ansi prototype. If this doesn't work for you... uncomment - the above instead. - */ - -void yyerror(char *s) -{ - syntax_error(s); -} - -/* - * Unfortunately, my DOS version of FLEX - * requires yywrap to be #def'ed, whereas - * the UNIX flex expects a proper function. - */ - -/* Not sure if __SC__ is the appropriate thing - * to test - */ - -#ifndef __SC__ -#ifdef USE_DEFINE -#ifndef yywrap -#define yywrap() 1 -#endif -#else if !defined(__alpha___) && !defined(__ultrix) -int yywrap() { return 1; } -#endif -#endif diff --git a/src/common/prntbase.cpp b/src/common/prntbase.cpp deleted file mode 100644 index c8cba869c4..0000000000 --- a/src/common/prntbase.cpp +++ /dev/null @@ -1,755 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: prntbase.cpp -// Purpose: Printing framework base class implementation -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "prntbase.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#include "wx/defs.h" - -#ifndef WX_PRECOMP -#include "wx/utils.h" -#include "wx/dc.h" -#include "wx/app.h" -#include "wx/msgdlg.h" -#include "wx/layout.h" -#include "wx/choice.h" -#include "wx/button.h" -#include "wx/settings.h" -#include "wx/dcmemory.h" -#include "wx/stattext.h" -#include "wx/intl.h" -#endif - -#include "wx/prntbase.h" -#include "wx/dcprint.h" -#include "wx/printdlg.h" - -#include -#include - -#ifdef __WXMSW__ -#include -#include - -// Clash with Windows header files -#ifdef StartDoc -#undef StartDoc -#endif - -#ifndef __WIN32__ -#include -#endif - -#endif - // End __WXMSW__ - -#if !USE_SHARED_LIBRARY -IMPLEMENT_CLASS(wxPrinterBase, wxObject) -IMPLEMENT_ABSTRACT_CLASS(wxPrintout, wxObject) -IMPLEMENT_CLASS(wxPreviewCanvas, wxWindow) -IMPLEMENT_CLASS(wxPreviewControlBar, wxWindow) -IMPLEMENT_CLASS(wxPreviewFrame, wxFrame) -IMPLEMENT_CLASS(wxPrintPreviewBase, wxObject) - -BEGIN_EVENT_TABLE(wxPrintAbortDialog, wxDialog) - EVT_BUTTON(wxID_CANCEL, wxPrintAbortDialog::OnCancel) -END_EVENT_TABLE() - -BEGIN_EVENT_TABLE(wxPreviewCanvas, wxScrolledWindow) - EVT_PAINT(wxPreviewCanvas::OnPaint) - EVT_SYS_COLOUR_CHANGED(wxPreviewCanvas::OnSysColourChanged) -END_EVENT_TABLE() -#endif - -/* - * Printer - */ - -wxPrinterBase::wxPrinterBase(wxPrintData *data) -{ - m_currentPrintout = (wxPrintout *) NULL; - sm_abortWindow = (wxWindow *) NULL; - sm_abortIt = FALSE; - if (data) - m_printData = (*data); -} - -wxWindow *wxPrinterBase::sm_abortWindow = (wxWindow *) NULL; -bool wxPrinterBase::sm_abortIt = FALSE; - -wxPrinterBase::~wxPrinterBase() -{ -} - -void wxPrintAbortDialog::OnCancel(wxCommandEvent& WXUNUSED(event)) -{ - wxPrinterBase::sm_abortIt = TRUE; - wxPrinterBase::sm_abortWindow->Show(FALSE); - wxPrinterBase::sm_abortWindow->Close(TRUE); - wxPrinterBase::sm_abortWindow = (wxWindow *) NULL; -} - -wxWindow *wxPrinterBase::CreateAbortWindow(wxWindow *parent, wxPrintout *WXUNUSED(printout)) -{ - wxPrintAbortDialog *dialog = new wxPrintAbortDialog(parent, _("Printing"), wxPoint(0, 0), wxSize(400, 400), wxDEFAULT_DIALOG_STYLE); - (void) new wxStaticText(dialog, -1, _("Please wait..."), wxPoint(5, 5)); - - wxButton *button = new wxButton(dialog, wxID_CANCEL, _("Cancel"), wxPoint(5, 30)); - - dialog->Fit(); - button->Centre(wxHORIZONTAL); - - dialog->Centre(); - return dialog; -} - -void wxPrinterBase::ReportError(wxWindow *parent, wxPrintout *WXUNUSED(printout), char *message) -{ - wxMessageBox(message, _("Printing Error"), wxOK, parent); -} - -/* - * Printout class - */ - -wxPrintout::wxPrintout(const wxString& title) -{ - m_printoutTitle = title ; - m_printoutDC = (wxDC *) NULL; - m_pageWidthMM = 0; - m_pageHeightMM = 0; - m_pageWidthPixels = 0; - m_pageHeightPixels = 0; - m_PPIScreenX = 0; - m_PPIScreenY = 0; - m_PPIPrinterX = 0; - m_PPIPrinterY = 0; - m_isPreview = FALSE; -} - -wxPrintout::~wxPrintout() -{ -} - -bool wxPrintout::OnBeginDocument(int WXUNUSED(startPage), int WXUNUSED(endPage)) -{ - return GetDC()->StartDoc(_("Printing")); -} - -void wxPrintout::OnEndDocument() -{ - GetDC()->EndDoc(); -} - -void wxPrintout::OnBeginPrinting() -{ -} - -void wxPrintout::OnEndPrinting() -{ -} - -bool wxPrintout::HasPage(int page) -{ - return (page == 1); -} - -void wxPrintout::GetPageInfo(int *minPage, int *maxPage, int *fromPage, int *toPage) -{ - *minPage = 1; - *maxPage = 32000; - *fromPage = 1; - *toPage = 1; -} - -/* - * Preview canvas - */ - -wxPreviewCanvas::wxPreviewCanvas(wxPrintPreviewBase *preview, wxWindow *parent, - const wxPoint& pos, const wxSize& size, long style, const wxString& name): - wxScrolledWindow(parent, -1, pos, size, style, name) -{ - m_printPreview = preview; - SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE)); - - SetScrollbars(15, 18, 100, 100); -} - -wxPreviewCanvas::~wxPreviewCanvas() -{ -} - -void wxPreviewCanvas::OnPaint(wxPaintEvent& WXUNUSED(event)) -{ - wxPaintDC dc(this); - PrepareDC( dc ); - - if (m_printPreview) - { - m_printPreview->PaintPage(this, dc); - } -} - -// Responds to colour changes, and passes event on to children. -void wxPreviewCanvas::OnSysColourChanged(wxSysColourChangedEvent& event) -{ - SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE)); - Refresh(); - - // Propagate the event to the non-top-level children - wxWindow::OnSysColourChanged(event); -} - -/* - * Preview control bar - */ - -BEGIN_EVENT_TABLE(wxPreviewControlBar, wxPanel) - EVT_BUTTON(wxID_PREVIEW_CLOSE, wxPreviewControlBar::OnWindowClose) - EVT_BUTTON(wxID_PREVIEW_PRINT, wxPreviewControlBar::OnPrint) - EVT_BUTTON(wxID_PREVIEW_PREVIOUS, wxPreviewControlBar::OnPrevious) - EVT_BUTTON(wxID_PREVIEW_NEXT, wxPreviewControlBar::OnNext) - EVT_CHOICE(wxID_PREVIEW_ZOOM, wxPreviewControlBar::OnZoom) - EVT_PAINT(wxPreviewControlBar::OnPaint) -END_EVENT_TABLE() - -wxPreviewControlBar::wxPreviewControlBar(wxPrintPreviewBase *preview, long buttons, - wxWindow *parent, const wxPoint& pos, const wxSize& size, - long style, const wxString& name): - wxPanel(parent, -1, pos, size, style, name) -{ - m_printPreview = preview; - m_closeButton = (wxButton *) NULL; - m_nextPageButton = (wxButton *) NULL; - m_previousPageButton = (wxButton *) NULL; - m_printButton = (wxButton *) NULL; - m_zoomControl = (wxChoice *) NULL; - m_buttonFlags = buttons; -} - -wxPreviewControlBar::~wxPreviewControlBar() -{ -} - -void wxPreviewControlBar::OnPaint(wxPaintEvent& WXUNUSED(event)) -{ - wxPaintDC dc(this); - - int w, h; - GetSize(&w, &h); - dc.SetPen(*wxBLACK_PEN); - dc.SetBrush(*wxTRANSPARENT_BRUSH); - dc.DrawLine( 0, h-1, w, h-1 ); -} - -void wxPreviewControlBar::OnWindowClose(wxCommandEvent& WXUNUSED(event)) -{ - wxPreviewFrame *frame = (wxPreviewFrame *)GetParent(); - frame->Close(TRUE); -} - -void wxPreviewControlBar::OnPrint(wxCommandEvent& WXUNUSED(event)) -{ - wxPrintPreviewBase *preview = GetPrintPreview(); - preview->Print(TRUE); -} - -void wxPreviewControlBar::OnNext(wxCommandEvent& WXUNUSED(event)) -{ - wxPrintPreviewBase *preview = GetPrintPreview(); - if (preview) - { - int currentPage = preview->GetCurrentPage(); - if ((preview->GetMaxPage() > 0) && - (currentPage < preview->GetMaxPage()) && - preview->GetPrintout()->HasPage(currentPage + 1)) - { - preview->SetCurrentPage(currentPage + 1); - } - } -} - -void wxPreviewControlBar::OnPrevious(wxCommandEvent& WXUNUSED(event)) -{ - wxPrintPreviewBase *preview = GetPrintPreview(); - if (preview) - { - int currentPage = preview->GetCurrentPage(); - if ((preview->GetMinPage() > 0) && - (currentPage > preview->GetMinPage()) && - preview->GetPrintout()->HasPage(currentPage - 1)) - { - preview->SetCurrentPage(currentPage - 1); - } - } -} - -void wxPreviewControlBar::OnZoom(wxCommandEvent& WXUNUSED(event)) -{ - int zoom = GetZoomControl(); - if (GetPrintPreview()) - GetPrintPreview()->SetZoom(zoom); -} - -void wxPreviewControlBar::CreateButtons() -{ - SetSize(0, 0, 400, 40); - - /* -#ifdef __WXMSW__ - int fontSize = 9; -#else - int fontSize = 10; -#endif - - wxFont buttonFont(fontSize, wxSWISS, wxNORMAL, wxBOLD); - SetFont(buttonFont); - */ - - int buttonWidth = 65; -#ifdef __WXGTK__ - int buttonHeight = -1; -#else - int buttonHeight = 24; -#endif - - int x = 5; - int y = 5; - -#ifdef __WXMOTIF__ - int gap = 15; -#else - int gap = 5; -#endif - - m_closeButton = new wxButton(this, wxID_PREVIEW_CLOSE, _("Close"), - wxPoint(x, y), wxSize(buttonWidth, buttonHeight)); - - x += gap + buttonWidth; - - if (m_buttonFlags & wxPREVIEW_PRINT) - { - m_printButton = new wxButton(this, wxID_PREVIEW_PRINT, _("Print..."), wxPoint(x, y), - wxSize(buttonWidth, buttonHeight)); - x += gap + buttonWidth; - } - - if (m_buttonFlags & wxPREVIEW_PREVIOUS) - { - m_previousPageButton = new wxButton(this, wxID_PREVIEW_PREVIOUS, "<<", wxPoint(x, y), - wxSize(buttonWidth, buttonHeight)); - x += gap + buttonWidth; - } - - if (m_buttonFlags & wxPREVIEW_NEXT) - { - m_nextPageButton = new wxButton(this, wxID_PREVIEW_NEXT, ">>", - wxPoint(x, y), wxSize(buttonWidth, buttonHeight)); - x += gap + buttonWidth; - } - - // Yes, this look stupid, but this is because gcc gives up otherwise. - wxString *choices = new wxString[23]; - choices[0] = "10%"; - choices[1] = "15%"; - choices[2] = "20%"; - choices[3] = "25%"; - choices[4] = "30%"; - choices[5] = "35%"; - choices[6] = "40%"; - choices[7] = "45%"; - choices[8] = "50%"; - choices[9] = "55%"; - choices[10] = "60%"; - choices[11] = "65%"; - choices[12] = "70%"; - choices[13] = "75%"; - choices[14] = "80%"; - choices[15] = "85%"; - choices[16] = "90%"; - choices[17] = "95%"; - choices[18] = "100%"; - choices[19] = "110%"; - choices[20] = "120%"; - choices[21] = "150%"; - choices[22] = "200%"; - - int n = 23; - if (m_buttonFlags & wxPREVIEW_ZOOM) - { - m_zoomControl = new wxChoice(this, wxID_PREVIEW_ZOOM, wxPoint(x, y), - wxSize(100, -1), n, (wxString *)choices); - SetZoomControl(m_printPreview->GetZoom()); - } - - delete[] choices; - - // m_closeButton->SetDefault(); -} - -void wxPreviewControlBar::SetZoomControl(int zoom) -{ - char buf[20]; - sprintf(buf, "%d%%", zoom); - if (m_zoomControl) - m_zoomControl->SetStringSelection(buf); -} - -int wxPreviewControlBar::GetZoomControl() -{ - char buf[20]; - if (m_zoomControl && (m_zoomControl->GetStringSelection() != "")) - { - strcpy(buf, m_zoomControl->GetStringSelection()); - buf[strlen(buf) - 1] = 0; - return (int)atoi(buf); - } - else return 0; -} - - -/* - * Preview frame - */ - -wxPreviewFrame::wxPreviewFrame(wxPrintPreviewBase *preview, wxFrame *parent, const wxString& title, - const wxPoint& pos, const wxSize& size, long style, const wxString& name): - wxFrame(parent, -1, title, pos, size, style, name) -{ - m_printPreview = preview; - m_controlBar = NULL; - m_previewCanvas = NULL; -} - -wxPreviewFrame::~wxPreviewFrame() -{ -} - -bool wxPreviewFrame::OnClose() -{ - MakeModal(FALSE); - - // Need to delete the printout and the print preview - wxPrintout *printout = m_printPreview->GetPrintout(); - if (printout) - { - delete printout; - m_printPreview->SetPrintout(NULL); - m_printPreview->SetCanvas(NULL); - m_printPreview->SetFrame(NULL); - } - delete m_printPreview; - return TRUE; -} - -void wxPreviewFrame::Initialize() -{ - CreateStatusBar(); - - CreateCanvas(); - CreateControlBar(); - - m_printPreview->SetCanvas(m_previewCanvas); - m_printPreview->SetFrame(this); - - // Set layout constraints here - - // Control bar constraints - wxLayoutConstraints *c1 = new wxLayoutConstraints; -// int w, h; -// m_controlBar->GetSize(&w, &h); - int h; -#if (defined(__WXMSW__) || defined(__WXGTK__)) - h = 40; -#else - h = 60; -#endif - - c1->left.SameAs (this, wxLeft); - c1->top.SameAs (this, wxTop); - c1->right.SameAs (this, wxRight); - c1->height.Absolute (h); - - m_controlBar->SetConstraints(c1); - - // Canvas constraints - wxLayoutConstraints *c2 = new wxLayoutConstraints; - - c2->left.SameAs (this, wxLeft); - c2->top.Below (m_controlBar); - c2->right.SameAs (this, wxRight); - c2->bottom.SameAs (this, wxBottom); - - m_previewCanvas->SetConstraints(c2); - - SetAutoLayout(TRUE); - - MakeModal(TRUE); - - Layout(); -} - -void wxPreviewFrame::CreateCanvas() -{ - m_previewCanvas = new wxPreviewCanvas(m_printPreview, this); -} - -void wxPreviewFrame::CreateControlBar() -{ - long buttons = wxPREVIEW_DEFAULT; - if (m_printPreview->GetPrintoutForPrinting()) - buttons |= wxPREVIEW_PRINT; - - m_controlBar = new wxPreviewControlBar(m_printPreview, buttons, this, wxPoint(0, 0), wxSize(400, 40)); - m_controlBar->CreateButtons(); -} - -/* - * Print preview - */ - -wxPrintPreviewBase::wxPrintPreviewBase(wxPrintout *printout, wxPrintout *printoutForPrinting, wxPrintData *data) -{ - m_isOk = TRUE; - m_previewPrintout = printout; - if (m_previewPrintout) - m_previewPrintout->SetIsPreview(TRUE); - - m_printPrintout = printoutForPrinting; - if (data) - m_printData = (*data); - - m_previewCanvas = NULL; - m_previewFrame = NULL; - m_previewBitmap = NULL; - m_currentPage = 1; - m_currentZoom = 30; - m_topMargin = 40; - m_leftMargin = 40; - m_pageWidth = 0; - m_pageHeight = 0; - - printout->OnPreparePrinting(); - - // Get some parameters from the printout, if defined - int selFrom, selTo; - printout->GetPageInfo(&m_minPage, &m_maxPage, &selFrom, &selTo); -} - -wxPrintPreviewBase::~wxPrintPreviewBase() -{ - if (m_previewPrintout) - delete m_previewPrintout; - if (m_previewBitmap) - delete m_previewBitmap; - if (m_printPrintout) - delete m_printPrintout; -} - -bool wxPrintPreviewBase::SetCurrentPage(int pageNum) -{ - if (m_currentPage == pageNum) - return TRUE; - - m_currentPage = pageNum; - if (m_previewBitmap) - { - delete m_previewBitmap; - m_previewBitmap = NULL; - } - - if (m_previewCanvas) - { - RenderPage(pageNum); - m_previewCanvas->Refresh(); - } - return TRUE; -} - -bool wxPrintPreviewBase::PaintPage(wxWindow *canvas, wxDC& dc) -{ - DrawBlankPage(canvas, dc); - - if (!m_previewBitmap) - RenderPage(m_currentPage); - - if (!m_previewBitmap) - return FALSE; - - if (!canvas) - return FALSE; - - int canvasWidth, canvasHeight; - canvas->GetSize(&canvasWidth, &canvasHeight); - - double zoomScale = ((float)m_currentZoom/(float)100); - double actualWidth = (zoomScale*m_pageWidth*m_previewScale); -// float actualHeight = (float)(zoomScale*m_pageHeight*m_previewScale); - - int x = (int) ((canvasWidth - actualWidth)/2.0); - if (x < m_leftMargin) - x = m_leftMargin; - int y = m_topMargin; - - wxMemoryDC temp_dc; - temp_dc.SelectObject(*m_previewBitmap); - - dc.Blit(x, y, m_previewBitmap->GetWidth(), m_previewBitmap->GetHeight(), &temp_dc, 0, 0); - - temp_dc.SelectObject(wxNullBitmap); - - return TRUE; -} - -bool wxPrintPreviewBase::RenderPage(int pageNum) -{ - int canvasWidth, canvasHeight; - - if (!m_previewCanvas) - { - wxMessageBox(_("wxPrintPreviewBase::RenderPage: must use wxPrintPreviewBase::SetCanvas to let me know about the canvas!"), - _("Print Preview Failure"), wxOK); - return FALSE; - } - m_previewCanvas->GetSize(&canvasWidth, &canvasHeight); - - double zoomScale = (m_currentZoom/100.0); - int actualWidth = (int)(zoomScale*m_pageWidth*m_previewScale); - int actualHeight = (int)(zoomScale*m_pageHeight*m_previewScale); - - int x = (int)((canvasWidth - actualWidth)/2.0); - if (x < m_leftMargin) - x = m_leftMargin; -// int y = m_topMargin; - - - if (!m_previewBitmap) - { - m_previewBitmap = new wxBitmap((int)actualWidth, (int)actualHeight); - if (!m_previewBitmap || !m_previewBitmap->Ok()) - { - if (m_previewBitmap) - delete m_previewBitmap; - wxMessageBox(_("Sorry, not enough memory to create a preview."), _("Print Preview Failure"), wxOK); - return FALSE; - } - } - - wxMemoryDC memoryDC; - memoryDC.SelectObject(*m_previewBitmap); - - memoryDC.Clear(); - - m_previewPrintout->SetDC(&memoryDC); - m_previewPrintout->SetPageSizePixels(m_pageWidth, m_pageHeight); - - m_previewPrintout->OnBeginPrinting(); - - - if (!m_previewPrintout->OnBeginDocument(m_printData.GetFromPage(), m_printData.GetToPage())) - { - wxMessageBox(_("Could not start document preview."), _("Print Preview Failure"), wxOK); - - memoryDC.SelectObject(wxNullBitmap); - - delete m_previewBitmap; - return FALSE; - } - - m_previewPrintout->OnPrintPage(pageNum); - m_previewPrintout->OnEndDocument(); - m_previewPrintout->OnEndPrinting(); - - m_previewPrintout->SetDC(NULL); - - memoryDC.SelectObject(wxNullBitmap); - - char buf[200]; - if (m_maxPage != 0) - sprintf(buf, _("Page %d of %d"), pageNum, m_maxPage); - else - sprintf(buf, _("Page %d"), pageNum); - - if (m_previewFrame) - m_previewFrame->SetStatusText(buf); - - return TRUE; -} - - -bool wxPrintPreviewBase::DrawBlankPage(wxWindow *canvas, wxDC& dc) -{ - int canvasWidth, canvasHeight; - canvas->GetSize(&canvasWidth, &canvasHeight); - - float zoomScale = (float)((float)m_currentZoom/(float)100); - float actualWidth = zoomScale*m_pageWidth*m_previewScale; - float actualHeight = zoomScale*m_pageHeight*m_previewScale; - - float x = (float)((canvasWidth - actualWidth)/2.0); - if (x < m_leftMargin) - x = (float)m_leftMargin; - float y = (float)m_topMargin; - - // Draw shadow, allowing for 1-pixel border AROUND the actual page - int shadowOffset = 4; - dc.SetPen(*wxBLACK_PEN); - dc.SetBrush(*wxBLACK_BRUSH); -/* - dc.DrawRectangle((int)(x-1 + shadowOffset), (int)(y-1 + shadowOffset), (int)(actualWidth+2), (int)(actualHeight+2)); -*/ - dc.DrawRectangle((int)(x + shadowOffset), (int)(y + actualHeight+1), (int)(actualWidth), shadowOffset); - dc.DrawRectangle((int)(x + actualWidth), (int)(y + shadowOffset), shadowOffset, (int)(actualHeight)); - - // Draw blank page allowing for 1-pixel border AROUND the actual page - dc.SetPen(*wxBLACK_PEN); - dc.SetBrush(*wxWHITE_BRUSH); - -/* - wxRegion update_region = canvas->GetUpdateRegion(); - wxRect r = update_region.GetBox(); - - printf( "x: %d y: %d w: %d h: %d.\n", (int)r.x, (int)r.y, (int)r.width, (int)r.height ); -*/ - - dc.DrawRectangle((int)(x-2), (int)(y-1), (int)(actualWidth+3), (int)(actualHeight+2)); - - return TRUE; -} - -void wxPrintPreviewBase::SetZoom(int percent) -{ - if (m_currentZoom == percent) - return; - - m_currentZoom = percent; - if (m_previewBitmap) - { - delete m_previewBitmap; - m_previewBitmap = NULL; - } - RenderPage(m_currentPage); - - if (m_previewCanvas) - { - m_previewCanvas->Clear(); - m_previewCanvas->Refresh(); - } -} diff --git a/src/common/process.cpp b/src/common/process.cpp deleted file mode 100644 index d1c255ac95..0000000000 --- a/src/common/process.cpp +++ /dev/null @@ -1,57 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: process.cpp -// Purpose: Process termination classes -// Author: Guilhem Lavaux -// Modified by: -// Created: 24/06/98 -// RCS-ID: $Id$ -// Copyright: (c) Guilhem Lavaux -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "process.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/defs.h" -#endif - -#include "wx/process.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxProcess, wxEvtHandler) -IMPLEMENT_DYNAMIC_CLASS(wxProcessEvent, wxEvent) -#endif - -wxProcess::wxProcess(wxEvtHandler *parent, int id) -{ - if (parent) - SetPreviousHandler(parent); - - m_id = id; -} - -wxProcess::~wxProcess() -{ -} - -void wxProcess::OnTerminate(int pid) -{ - wxProcessEvent event(m_id, pid); - - ProcessEvent(event); -} - -wxProcessEvent::wxProcessEvent(int id, int pid): - wxEvent(id), m_pid(pid) -{ -} - diff --git a/src/common/protocol.cpp b/src/common/protocol.cpp deleted file mode 100644 index d0da8f2426..0000000000 --- a/src/common/protocol.cpp +++ /dev/null @@ -1,139 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: protocol.cpp -// Purpose: Implement protocol base class -// Author: Guilhem Lavaux -// Modified by: -// Created: 07/07/1997 -// RCS-ID: $Id$ -// Copyright: (c) 1997, 1998 Guilhem Lavaux -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "protocol.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include -#endif - -#include "wx/protocol/protocol.h" -#include "wx/url.h" -#include "wx/module.h" - -///////////////////////////////////////////////////////////////// -// wxProtoInfo -///////////////////////////////////////////////////////////////// - -/* - * -------------------------------------------------------------- - * --------- wxProtoInfo CONSTRUCTOR ---------------------------- - * -------------------------------------------------------------- - */ - -wxProtoInfo::wxProtoInfo(const char *name, const char *serv, - const bool need_host1, wxClassInfo *info) -{ - m_protoname = name; - m_servname = serv; - m_cinfo = info; - m_needhost = need_host1; - next = wxURL::g_protocols; - wxURL::g_protocols = this; -} - -///////////////////////////////////////////////////////////////// -// wxProtocol /////////////////////////////////////////////////// -///////////////////////////////////////////////////////////////// - -IMPLEMENT_ABSTRACT_CLASS(wxProtocol, wxSocketClient) - -wxProtocol::wxProtocol() - : wxSocketClient() -{ -} - -bool wxProtocol::Reconnect() -{ - wxIPV4address addr; - - if (!GetPeer(addr)) { - Close(); - return FALSE; - } - if (!Close()) - return FALSE; - if (!Connect(addr)) - return FALSE; - return TRUE; -} - -wxProtocolError GetLine(wxSocketBase *sock, wxString& result) { -#define PROTO_BSIZE 2048 - size_t avail, size; - char tmp_buf[PROTO_BSIZE], tmp_str[PROTO_BSIZE]; - char *ret; - bool found; - - avail = sock->Read(tmp_buf, PROTO_BSIZE).LastCount(); - if (sock->LastError() != 0 || avail == 0) - return wxPROTO_NETERR; - - memcpy(tmp_str, tmp_buf, avail); - -// Not implemented on all systems -// ret = (char *)memccpy(tmp_str, tmp_buf, '\n', avail); - found = FALSE; - for (ret=tmp_str;ret < (tmp_str+avail); ret++) - if (*ret == '\n') { - found = TRUE; - break; - } - - if (!found) - return wxPROTO_PROTERR; - *ret = 0; - - result = tmp_str; - result = result.Left(result.Length()-1); - - size = ret-tmp_str+1; - sock->CreatePushbackBefore(&tmp_buf[size], avail-size); - return wxPROTO_NOERR; -#undef PROTO_BSIZE -} - -// ---------------------------------------------------------------------- -// Module -// ---------------------------------------------------------------------- - -class wxProtocolModule: public wxModule { - DECLARE_DYNAMIC_CLASS(wxProtocolModule) -public: - wxProtocolModule() {} - bool OnInit(); - void OnExit(); -}; - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxProtocolModule, wxModule) -#endif - -bool wxProtocolModule::OnInit() -{ - wxURL::g_proxy = new wxHTTP(); - return TRUE; -} - -void wxProtocolModule::OnExit() -{ - delete wxURL::g_proxy; - wxURL::g_proxy = NULL; -} diff --git a/src/common/resourc2.cpp b/src/common/resourc2.cpp deleted file mode 100644 index 4bee887ddb..0000000000 --- a/src/common/resourc2.cpp +++ /dev/null @@ -1,1577 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: resourc2.cpp -// Purpose: Resource system (2nd file). Only required for 16-bit BC++. -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "resource.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#if wxUSE_WX_RESOURCES - -#ifdef _MSC_VER - #pragma warning(disable:4706) // assignment within conditional expression -#endif // VC++ - -#ifndef WX_PRECOMP -#include "wx/defs.h" -#include "wx/setup.h" -#include "wx/list.h" -#include "wx/hash.h" -#include "wx/gdicmn.h" -#include "wx/utils.h" -#include "wx/types.h" -#include "wx/menu.h" -#include "wx/stattext.h" -#include "wx/button.h" -#include "wx/bmpbuttn.h" -#include "wx/radiobox.h" -#include "wx/listbox.h" -#include "wx/choice.h" -#include "wx/checkbox.h" -#include "wx/settings.h" -#include "wx/slider.h" -#include "wx/statbox.h" -#if wxUSE_GAUGE -#include "wx/gauge.h" -#endif -#include "wx/textctrl.h" -#include "wx/msgdlg.h" -#include "wx/intl.h" -#endif - -#if wxUSE_SCROLLBAR -#include "wx/scrolbar.h" -#endif - -#if wxUSE_COMBOBOX -#include "wx/combobox.h" -#endif - -#include "wx/validate.h" - -#include "wx/log.h" - -#include -#include -#include -#include - -#include "wx/resource.h" -#include "wx/string.h" -#include "wx/wxexpr.h" - -#include "wx/settings.h" - -#if ((defined(__BORLANDC__) || defined(__SC__)) && defined(__WIN16__)) - -// Forward (private) declarations -bool wxResourceInterpretResources(wxResourceTable& table, wxExprDatabase& db); -wxItemResource *wxResourceInterpretDialog(wxResourceTable& table, wxExpr *expr, bool isPanel = FALSE); -wxItemResource *wxResourceInterpretControl(wxResourceTable& table, wxExpr *expr); -wxItemResource *wxResourceInterpretMenu(wxResourceTable& table, wxExpr *expr); -wxItemResource *wxResourceInterpretMenuBar(wxResourceTable& table, wxExpr *expr); -wxItemResource *wxResourceInterpretString(wxResourceTable& table, wxExpr *expr); -wxItemResource *wxResourceInterpretBitmap(wxResourceTable& table, wxExpr *expr); -wxItemResource *wxResourceInterpretIcon(wxResourceTable& table, wxExpr *expr); -// Interpret list expression -wxFont wxResourceInterpretFontSpec(wxExpr *expr); - -bool wxResourceReadOneResource(FILE *fd, wxExprDatabase& db, bool *eof, wxResourceTable *table = (wxResourceTable *) NULL); -bool wxResourceParseIncludeFile(const wxString& f, wxResourceTable *table = (wxResourceTable *) NULL); - -extern wxResourceTable *wxDefaultResourceTable; - -extern char *wxResourceBuffer; -extern long wxResourceBufferSize; -extern long wxResourceBufferCount; -extern int wxResourceStringPtr; - -/* - * (Re)allocate buffer for reading in from resource file - */ - -bool wxReallocateResourceBuffer() -{ - if (!wxResourceBuffer) - { - wxResourceBufferSize = 1000; - wxResourceBuffer = new char[wxResourceBufferSize]; - return TRUE; - } - if (wxResourceBuffer) - { - long newSize = wxResourceBufferSize + 1000; - char *tmp = new char[(int)newSize]; - strncpy(tmp, wxResourceBuffer, (int)wxResourceBufferCount); - delete[] wxResourceBuffer; - wxResourceBuffer = tmp; - wxResourceBufferSize = newSize; - } - return TRUE; -} - -static bool wxEatWhiteSpace(FILE *fd) -{ - int ch = getc(fd); - if ((ch != ' ') && (ch != '/') && (ch != ' ') && (ch != 10) && (ch != 13) && (ch != 9)) - { - ungetc(ch, fd); - return TRUE; - } - - // Eat whitespace - while (ch == ' ' || ch == 10 || ch == 13 || ch == 9) - ch = getc(fd); - // Check for comment - if (ch == '/') - { - ch = getc(fd); - if (ch == '*') - { - bool finished = FALSE; - while (!finished) - { - ch = getc(fd); - if (ch == EOF) - return FALSE; - if (ch == '*') - { - int newCh = getc(fd); - if (newCh == '/') - finished = TRUE; - else - { - ungetc(newCh, fd); - } - } - } - } - else // False alarm - return FALSE; - } - else - ungetc(ch, fd); - return wxEatWhiteSpace(fd); -} - -bool wxGetResourceToken(FILE *fd) -{ - if (!wxResourceBuffer) - wxReallocateResourceBuffer(); - wxResourceBuffer[0] = 0; - wxEatWhiteSpace(fd); - - int ch = getc(fd); - if (ch == '"') - { - // Get string - wxResourceBufferCount = 0; - ch = getc(fd); - while (ch != '"') - { - int actualCh = ch; - if (ch == EOF) - { - wxResourceBuffer[wxResourceBufferCount] = 0; - return FALSE; - } - // Escaped characters - else if (ch == '\\') - { - int newCh = getc(fd); - if (newCh == '"') - actualCh = '"'; - else if (newCh == 10) - actualCh = 10; - else - { - ungetc(newCh, fd); - } - } - - if (wxResourceBufferCount >= wxResourceBufferSize-1) - wxReallocateResourceBuffer(); - wxResourceBuffer[wxResourceBufferCount] = (char)actualCh; - wxResourceBufferCount ++; - ch = getc(fd); - } - wxResourceBuffer[wxResourceBufferCount] = 0; - } - else - { - wxResourceBufferCount = 0; - // Any other token - while (ch != ' ' && ch != EOF && ch != ' ' && ch != 13 && ch != 9 && ch != 10) - { - if (wxResourceBufferCount >= wxResourceBufferSize-1) - wxReallocateResourceBuffer(); - wxResourceBuffer[wxResourceBufferCount] = (char)ch; - wxResourceBufferCount ++; - - ch = getc(fd); - } - wxResourceBuffer[wxResourceBufferCount] = 0; - if (ch == EOF) - return FALSE; - } - return TRUE; -} - -/* - * Files are in form: - static char *name = "...."; - with possible comments. - */ - -bool wxResourceReadOneResource(FILE *fd, wxExprDatabase& db, bool *eof, wxResourceTable *table) -{ - if (!table) - table = wxDefaultResourceTable; - - // static or #define - if (!wxGetResourceToken(fd)) - { - *eof = TRUE; - return FALSE; - } - - if (strcmp(wxResourceBuffer, "#define") == 0) - { - wxGetResourceToken(fd); - char *name = copystring(wxResourceBuffer); - wxGetResourceToken(fd); - char *value = copystring(wxResourceBuffer); - if (isalpha(value[0])) - { - int val = (int)atol(value); - wxResourceAddIdentifier(name, val, table); - } - else - { - wxLogWarning(_("#define %s must be an integer."), name); - delete[] name; - delete[] value; - return FALSE; - } - delete[] name; - delete[] value; - - return TRUE; - } - else if (strcmp(wxResourceBuffer, "#include") == 0) - { - wxGetResourceToken(fd); - char *name = copystring(wxResourceBuffer); - char *actualName = name; - if (name[0] == '"') - actualName = name + 1; - int len = strlen(name); - if ((len > 0) && (name[len-1] == '"')) - name[len-1] = 0; - if (!wxResourceParseIncludeFile(actualName, table)) - { - wxLogWarning(_("Could not find resource include file %s."), actualName); - } - delete[] name; - return TRUE; - } - else if (strcmp(wxResourceBuffer, "static") != 0) - { - char buf[300]; - strcpy(buf, _("Found ")); - strncat(buf, wxResourceBuffer, 30); - strcat(buf, _(", expected static, #include or #define\nwhilst parsing resource.")); - wxLogWarning(buf); - return FALSE; - } - - // char - if (!wxGetResourceToken(fd)) - { - wxLogWarning(_("Unexpected end of file whilst parsing resource.")); - *eof = TRUE; - return FALSE; - } - - if (strcmp(wxResourceBuffer, "char") != 0) - { - wxLogWarning(_("Expected 'char' whilst parsing resource.")); - return FALSE; - } - - // *name - if (!wxGetResourceToken(fd)) - { - wxLogWarning(_("Unexpected end of file whilst parsing resource.")); - *eof = TRUE; - return FALSE; - } - - if (wxResourceBuffer[0] != '*') - { - wxLogWarning(_("Expected '*' whilst parsing resource.")); - return FALSE; - } - char nameBuf[100]; - strncpy(nameBuf, wxResourceBuffer+1, 99); - - // = - if (!wxGetResourceToken(fd)) - { - wxLogWarning(_("Unexpected end of file whilst parsing resource.")); - *eof = TRUE; - return FALSE; - } - - if (strcmp(wxResourceBuffer, "=") != 0) - { - wxLogWarning(_("Expected '=' whilst parsing resource.")); - return FALSE; - } - - // String - if (!wxGetResourceToken(fd)) - { - wxLogWarning(_("Unexpected end of file whilst parsing resource.")); - *eof = TRUE; - return FALSE; - } - else - { - if (!db.ReadPrologFromString(wxResourceBuffer)) - { - wxLogWarning(_("%s: ill-formed resource file syntax."), nameBuf); - return FALSE; - } - } - // Semicolon - if (!wxGetResourceToken(fd)) - { - *eof = TRUE; - } - return TRUE; -} - -/* - * Parses string window style into integer window style - */ - -/* - * Style flag parsing, e.g. - * "wxSYSTEM_MENU | wxBORDER" -> integer - */ - -char* wxResourceParseWord(char*s, int *i) -{ - if (!s) - return (char*) NULL; - - static char buf[150]; - int len = strlen(s); - int j = 0; - int ii = *i; - while ((ii < len) && (isalpha(s[ii]) || (s[ii] == '_'))) - { - buf[j] = s[ii]; - j ++; - ii ++; - } - buf[j] = 0; - - // Eat whitespace and conjunction characters - while ((ii < len) && - ((s[ii] == ' ') || (s[ii] == '|') || (s[ii] == ','))) - { - ii ++; - } - *i = ii; - if (j == 0) - return (char*) NULL; - else - return buf; -} - -struct wxResourceBitListStruct -{ - char *word; - long bits; -}; - -static wxResourceBitListStruct wxResourceBitListTable[] = -{ - /* wxListBox */ - { "wxSINGLE", wxLB_SINGLE }, - { "wxMULTIPLE", wxLB_MULTIPLE }, - { "wxEXTENDED", wxLB_EXTENDED }, - { "wxLB_SINGLE", wxLB_SINGLE }, - { "wxLB_MULTIPLE", wxLB_MULTIPLE }, - { "wxLB_EXTENDED", wxLB_EXTENDED }, - { "wxLB_NEEDED_SB", wxLB_NEEDED_SB }, - { "wxLB_ALWAYS_SB", wxLB_ALWAYS_SB }, - { "wxLB_SORT", wxLB_SORT }, - { "wxLB_OWNERDRAW", wxLB_OWNERDRAW }, - { "wxLB_HSCROLL", wxLB_HSCROLL }, - - /* wxComboxBox */ - { "wxCB_SIMPLE", wxCB_SIMPLE }, - { "wxCB_DROPDOWN", wxCB_DROPDOWN }, - { "wxCB_READONLY", wxCB_READONLY }, - { "wxCB_SORT", wxCB_SORT }, - - /* wxGauge */ - { "wxGA_PROGRESSBAR", wxGA_PROGRESSBAR }, - { "wxGA_HORIZONTAL", wxGA_HORIZONTAL }, - { "wxGA_VERTICAL", wxGA_VERTICAL }, - - /* wxTextCtrl */ - { "wxPASSWORD", wxPASSWORD}, - { "wxPROCESS_ENTER", wxPROCESS_ENTER}, - { "wxTE_PASSWORD", wxTE_PASSWORD}, - { "wxTE_READONLY", wxTE_READONLY}, - { "wxTE_PROCESS_ENTER", wxTE_PROCESS_ENTER}, - { "wxTE_MULTILINE", wxTE_MULTILINE}, - - /* wxRadioBox/wxRadioButton */ - { "wxRB_GROUP", wxRB_GROUP }, - { "wxRA_SPECIFY_COLS", wxRA_SPECIFY_COLS }, - { "wxRA_SPECIFY_ROWS", wxRA_SPECIFY_ROWS }, - { "wxRA_HORIZONTAL", wxRA_HORIZONTAL }, - { "wxRA_VERTICAL", wxRA_VERTICAL }, - - /* wxSlider */ - { "wxSL_HORIZONTAL", wxSL_HORIZONTAL }, - { "wxSL_VERTICAL", wxSL_VERTICAL }, - { "wxSL_AUTOTICKS", wxSL_AUTOTICKS }, - { "wxSL_LABELS", wxSL_LABELS }, - { "wxSL_LEFT", wxSL_LEFT }, - { "wxSL_TOP", wxSL_TOP }, - { "wxSL_RIGHT", wxSL_RIGHT }, - { "wxSL_BOTTOM", wxSL_BOTTOM }, - { "wxSL_BOTH", wxSL_BOTH }, - { "wxSL_SELRANGE", wxSL_SELRANGE }, - - /* wxScrollBar */ - { "wxSB_HORIZONTAL", wxSB_HORIZONTAL }, - { "wxSB_VERTICAL", wxSB_VERTICAL }, - - /* wxButton */ - { "wxBU_AUTODRAW", wxBU_AUTODRAW }, - { "wxBU_NOAUTODRAW", wxBU_NOAUTODRAW }, - - /* wxTreeCtrl */ - { "wxTR_HAS_BUTTONS", wxTR_HAS_BUTTONS }, - { "wxTR_EDIT_LABELS", wxTR_EDIT_LABELS }, - { "wxTR_LINES_AT_ROOT", wxTR_LINES_AT_ROOT }, - - /* wxListCtrl */ - { "wxLC_ICON", wxLC_ICON }, - { "wxLC_SMALL_ICON", wxLC_SMALL_ICON }, - { "wxLC_LIST", wxLC_LIST }, - { "wxLC_REPORT", wxLC_REPORT }, - { "wxLC_ALIGN_TOP", wxLC_ALIGN_TOP }, - { "wxLC_ALIGN_LEFT", wxLC_ALIGN_LEFT }, - { "wxLC_AUTOARRANGE", wxLC_AUTOARRANGE }, - { "wxLC_USER_TEXT", wxLC_USER_TEXT }, - { "wxLC_EDIT_LABELS", wxLC_EDIT_LABELS }, - { "wxLC_NO_HEADER", wxLC_NO_HEADER }, - { "wxLC_NO_SORT_HEADER", wxLC_NO_SORT_HEADER }, - { "wxLC_SINGLE_SEL", wxLC_SINGLE_SEL }, - { "wxLC_SORT_ASCENDING", wxLC_SORT_ASCENDING }, - { "wxLC_SORT_DESCENDING", wxLC_SORT_DESCENDING }, - - /* wxSpinButton */ - { "wxSP_VERTICAL", wxSP_VERTICAL}, - { "wxSP_HORIZONTAL", wxSP_HORIZONTAL}, - { "wxSP_ARROW_KEYS", wxSP_ARROW_KEYS}, - { "wxSP_WRAP", wxSP_WRAP}, - - /* wxSplitterWnd */ - { "wxSP_NOBORDER", wxSP_NOBORDER}, - { "wxSP_3D", wxSP_3D}, - { "wxSP_BORDER", wxSP_BORDER}, - - /* wxTabCtrl */ - { "wxTC_MULTILINE", wxTC_MULTILINE}, - { "wxTC_RIGHTJUSTIFY", wxTC_RIGHTJUSTIFY}, - { "wxTC_FIXEDWIDTH", wxTC_FIXEDWIDTH}, - { "wxTC_OWNERDRAW", wxTC_OWNERDRAW}, - - /* wxStatusBar95 */ - { "wxST_SIZEGRIP", wxST_SIZEGRIP}, - - /* wxControl */ - { "wxFIXED_LENGTH", wxFIXED_LENGTH}, - { "wxALIGN_LEFT", wxALIGN_LEFT}, - { "wxALIGN_CENTER", wxALIGN_CENTER}, - { "wxALIGN_CENTRE", wxALIGN_CENTRE}, - { "wxALIGN_RIGHT", wxALIGN_RIGHT}, - { "wxCOLOURED", wxCOLOURED}, - - /* wxToolBar */ - { "wxTB_3DBUTTONS", wxTB_3DBUTTONS}, - { "wxTB_HORIZONTAL", wxTB_HORIZONTAL}, - { "wxTB_VERTICAL", wxTB_VERTICAL}, - { "wxTB_FLAT", wxTB_FLAT}, - - /* Generic */ - { "wxVSCROLL", wxVSCROLL }, - { "wxHSCROLL", wxHSCROLL }, - { "wxCAPTION", wxCAPTION }, - { "wxSTAY_ON_TOP", wxSTAY_ON_TOP}, - { "wxICONIZE", wxICONIZE}, - { "wxMINIMIZE", wxICONIZE}, - { "wxMAXIMIZE", wxMAXIMIZE}, - { "wxSDI", 0}, - { "wxMDI_PARENT", 0}, - { "wxMDI_CHILD", 0}, - { "wxTHICK_FRAME", wxTHICK_FRAME}, - { "wxRESIZE_BORDER", wxRESIZE_BORDER}, - { "wxSYSTEM_MENU", wxSYSTEM_MENU}, - { "wxMINIMIZE_BOX", wxMINIMIZE_BOX}, - { "wxMAXIMIZE_BOX", wxMAXIMIZE_BOX}, - { "wxRESIZE_BOX", wxRESIZE_BOX}, - { "wxDEFAULT_FRAME_STYLE", wxDEFAULT_FRAME_STYLE}, - { "wxDEFAULT_FRAME", wxDEFAULT_FRAME_STYLE}, - { "wxDEFAULT_DIALOG_STYLE", wxDEFAULT_DIALOG_STYLE}, - { "wxBORDER", wxBORDER}, - { "wxRETAINED", wxRETAINED}, - { "wxNATIVE_IMPL", 0}, - { "wxEXTENDED_IMPL", 0}, - { "wxBACKINGSTORE", wxBACKINGSTORE}, -// { "wxFLAT", wxFLAT}, -// { "wxMOTIF_RESIZE", wxMOTIF_RESIZE}, - { "wxFIXED_LENGTH", 0}, - { "wxDOUBLE_BORDER", wxDOUBLE_BORDER}, - { "wxSUNKEN_BORDER", wxSUNKEN_BORDER}, - { "wxRAISED_BORDER", wxRAISED_BORDER}, - { "wxSIMPLE_BORDER", wxSIMPLE_BORDER}, - { "wxSTATIC_BORDER", wxSTATIC_BORDER}, - { "wxTRANSPARENT_WINDOW", wxTRANSPARENT_WINDOW}, - { "wxNO_BORDER", wxNO_BORDER}, - { "wxCLIP_CHILDREN", wxCLIP_CHILDREN}, - - { "wxTINY_CAPTION_HORIZ", wxTINY_CAPTION_HORIZ}, - { "wxTINY_CAPTION_VERT", wxTINY_CAPTION_VERT}, - - // Text font families - { "wxDEFAULT", wxDEFAULT}, - { "wxDECORATIVE", wxDECORATIVE}, - { "wxROMAN", wxROMAN}, - { "wxSCRIPT", wxSCRIPT}, - { "wxSWISS", wxSWISS}, - { "wxMODERN", wxMODERN}, - { "wxTELETYPE", wxTELETYPE}, - { "wxVARIABLE", wxVARIABLE}, - { "wxFIXED", wxFIXED}, - { "wxNORMAL", wxNORMAL}, - { "wxLIGHT", wxLIGHT}, - { "wxBOLD", wxBOLD}, - { "wxITALIC", wxITALIC}, - { "wxSLANT", wxSLANT}, - { "wxSOLID", wxSOLID}, - { "wxDOT", wxDOT}, - { "wxLONG_DASH", wxLONG_DASH}, - { "wxSHORT_DASH", wxSHORT_DASH}, - { "wxDOT_DASH", wxDOT_DASH}, - { "wxUSER_DASH", wxUSER_DASH}, - { "wxTRANSPARENT", wxTRANSPARENT}, - { "wxSTIPPLE", wxSTIPPLE}, - { "wxBDIAGONAL_HATCH", wxBDIAGONAL_HATCH}, - { "wxCROSSDIAG_HATCH", wxCROSSDIAG_HATCH}, - { "wxFDIAGONAL_HATCH", wxFDIAGONAL_HATCH}, - { "wxCROSS_HATCH", wxCROSS_HATCH}, - { "wxHORIZONTAL_HATCH", wxHORIZONTAL_HATCH}, - { "wxVERTICAL_HATCH", wxVERTICAL_HATCH}, - { "wxJOIN_BEVEL", wxJOIN_BEVEL}, - { "wxJOIN_MITER", wxJOIN_MITER}, - { "wxJOIN_ROUND", wxJOIN_ROUND}, - { "wxCAP_ROUND", wxCAP_ROUND}, - { "wxCAP_PROJECTING", wxCAP_PROJECTING}, - { "wxCAP_BUTT", wxCAP_BUTT}, - - // Logical ops - { "wxCLEAR", wxCLEAR}, - { "wxXOR", wxXOR}, - { "wxINVERT", wxINVERT}, - { "wxOR_REVERSE", wxOR_REVERSE}, - { "wxAND_REVERSE", wxAND_REVERSE}, - { "wxCOPY", wxCOPY}, - { "wxAND", wxAND}, - { "wxAND_INVERT", wxAND_INVERT}, - { "wxNO_OP", wxNO_OP}, - { "wxNOR", wxNOR}, - { "wxEQUIV", wxEQUIV}, - { "wxSRC_INVERT", wxSRC_INVERT}, - { "wxOR_INVERT", wxOR_INVERT}, - { "wxNAND", wxNAND}, - { "wxOR", wxOR}, - { "wxSET", wxSET}, - - { "wxFLOOD_SURFACE", wxFLOOD_SURFACE}, - { "wxFLOOD_BORDER", wxFLOOD_BORDER}, - { "wxODDEVEN_RULE", wxODDEVEN_RULE}, - { "wxWINDING_RULE", wxWINDING_RULE}, - { "wxHORIZONTAL", wxHORIZONTAL}, - { "wxVERTICAL", wxVERTICAL}, - { "wxBOTH", wxBOTH}, - { "wxCENTER_FRAME", wxCENTER_FRAME}, - { "wxOK", wxOK}, - { "wxYES_NO", wxYES_NO}, - { "wxCANCEL", wxCANCEL}, - { "wxYES", wxYES}, - { "wxNO", wxNO}, - { "wxICON_EXCLAMATION", wxICON_EXCLAMATION}, - { "wxICON_HAND", wxICON_HAND}, - { "wxICON_QUESTION", wxICON_QUESTION}, - { "wxICON_INFORMATION", wxICON_INFORMATION}, - { "wxICON_STOP", wxICON_STOP}, - { "wxICON_ASTERISK", wxICON_ASTERISK}, - { "wxICON_MASK", wxICON_MASK}, - { "wxCENTRE", wxCENTRE}, - { "wxCENTER", wxCENTRE}, - { "wxUSER_COLOURS", wxUSER_COLOURS}, - { "wxVERTICAL_LABEL", 0}, - { "wxHORIZONTAL_LABEL", 0}, - - // Bitmap types (not strictly styles) - { "wxBITMAP_TYPE_XPM", wxBITMAP_TYPE_XPM}, - { "wxBITMAP_TYPE_XBM", wxBITMAP_TYPE_XBM}, - { "wxBITMAP_TYPE_BMP", wxBITMAP_TYPE_BMP}, - { "wxBITMAP_TYPE_RESOURCE", wxBITMAP_TYPE_BMP_RESOURCE}, - { "wxBITMAP_TYPE_BMP_RESOURCE", wxBITMAP_TYPE_BMP_RESOURCE}, - { "wxBITMAP_TYPE_GIF", wxBITMAP_TYPE_GIF}, - { "wxBITMAP_TYPE_TIF", wxBITMAP_TYPE_TIF}, - { "wxBITMAP_TYPE_ICO", wxBITMAP_TYPE_ICO}, - { "wxBITMAP_TYPE_ICO_RESOURCE", wxBITMAP_TYPE_ICO_RESOURCE}, - { "wxBITMAP_TYPE_CUR", wxBITMAP_TYPE_CUR}, - { "wxBITMAP_TYPE_CUR_RESOURCE", wxBITMAP_TYPE_CUR_RESOURCE}, - { "wxBITMAP_TYPE_XBM_DATA", wxBITMAP_TYPE_XBM_DATA}, - { "wxBITMAP_TYPE_XPM_DATA", wxBITMAP_TYPE_XPM_DATA}, - { "wxBITMAP_TYPE_ANY", wxBITMAP_TYPE_ANY} -}; - -static int wxResourceBitListCount = (sizeof(wxResourceBitListTable)/sizeof(wxResourceBitListStruct)); - -long wxParseWindowStyle(const wxString& bitListString) -{ - int i = 0; - char *word; - long bitList = 0; - while ((word = wxResourceParseWord((char*) (const char*) bitListString, &i))) - { - bool found = FALSE; - int j; - for (j = 0; j < wxResourceBitListCount; j++) - if (strcmp(wxResourceBitListTable[j].word, word) == 0) - { - bitList |= wxResourceBitListTable[j].bits; - found = TRUE; - break; - } - if (!found) - { - wxLogWarning(_("Unrecognized style %s whilst parsing resource."), word); - return 0; - } - } - return bitList; -} - -/* - * Load a bitmap from a wxWindows resource, choosing an optimum - * depth and appropriate type. - */ - -wxBitmap wxResourceCreateBitmap(const wxString& resource, wxResourceTable *table) -{ - if (!table) - table = wxDefaultResourceTable; - - wxItemResource *item = table->FindResource(resource); - if (item) - { - if ((item->GetType() == "") || (item->GetType() != "wxBitmap")) - { - wxLogWarning(_("%s not a bitmap resource specification."), (const char*) resource); - return wxNullBitmap; - } - int thisDepth = wxDisplayDepth(); - long thisNoColours = (long)pow(2.0, (double)thisDepth); - - wxItemResource *optResource = (wxItemResource *) NULL; - - // Try to find optimum bitmap for this platform/colour depth - wxNode *node = item->GetChildren().First(); - while (node) - { - wxItemResource *child = (wxItemResource *)node->Data(); - int platform = (int)child->GetValue2(); - int noColours = (int)child->GetValue3(); -/* - char *name = child->GetName(); - int bitmapType = (int)child->GetValue1(); - int xRes = child->GetWidth(); - int yRes = child->GetHeight(); -*/ - - switch (platform) - { - case RESOURCE_PLATFORM_ANY: - { - if (!optResource && ((noColours == 0) || (noColours <= thisNoColours))) - optResource = child; - else - { - // Maximise the number of colours. - // If noColours is zero (unspecified), then assume this - // is the right one. - if ((noColours == 0) || ((noColours <= thisNoColours) && (noColours > optResource->GetValue3()))) - optResource = child; - } - break; - } -#ifdef __WXMSW__ - case RESOURCE_PLATFORM_WINDOWS: - { - if (!optResource && ((noColours == 0) || (noColours <= thisNoColours))) - optResource = child; - else - { - // Maximise the number of colours - if ((noColours > 0) || ((noColours <= thisNoColours) && (noColours > optResource->GetValue3()))) - optResource = child; - } - break; - } -#endif -#ifdef __WXGTK__ - case RESOURCE_PLATFORM_X: - { - if (!optResource && ((noColours == 0) || (noColours <= thisNoColours))) - optResource = child; - else - { - // Maximise the number of colours - if ((noColours == 0) || ((noColours <= thisNoColours) && (noColours > optResource->GetValue3()))) - optResource = child; - } - break; - } -#endif -#ifdef wx_max - case RESOURCE_PLATFORM_MAC: - { - if (!optResource && ((noColours == 0) || (noColours <= thisNoColours))) - optResource = child; - else - { - // Maximise the number of colours - if ((noColours == 0) || ((noColours <= thisNoColours) && (noColours > optResource->GetValue3()))) - optResource = child; - } - break; - } -#endif - default: - break; - } - node = node->Next(); - } - // If no matching resource, fail. - if (!optResource) - return wxNullBitmap; - - wxString name = optResource->GetName(); - int bitmapType = (int)optResource->GetValue1(); - switch (bitmapType) - { - case wxBITMAP_TYPE_XBM_DATA: - { -#ifdef __WXGTK__ - wxItemResource *item = table->FindResource(name); - if (!item) - { - wxLogWarning(_("Failed to find XBM resource %s.\n" - "Forgot to use wxResourceLoadBitmapData?"), (const char*) name); - return wxNullBitmap; - } - return wxBitmap(item->GetValue1(), (int)item->GetValue2(), (int)item->GetValue3()) ; -#else - wxLogWarning(_("No XBM facility available!")); -#endif - break; - } - case wxBITMAP_TYPE_XPM_DATA: - { -#if (defined(__WXGTK__)) || (defined(__WXMSW__) && wxUSE_XPM_IN_MSW) - wxItemResource *item = table->FindResource(name); - if (!item) - { - wxLogWarning(_("Failed to find XPM resource %s.\n" - "Forgot to use wxResourceLoadBitmapData?"), (const char*) name); - return wxNullBitmap; - } - return wxBitmap(item->GetValue1()); -#else - wxLogWarning(_("No XPM facility available!")); -#endif - break; - } - default: - { - return wxBitmap(name, bitmapType); - break; - } - } - return wxNullBitmap; - } - else - { - wxLogWarning(_("Bitmap resource specification %s not found."), (const char*) resource); - return wxNullBitmap; - } -} - -/* - * Load an icon from a wxWindows resource, choosing an optimum - * depth and appropriate type. - */ - -wxIcon wxResourceCreateIcon(const wxString& resource, wxResourceTable *table) -{ - if (!table) - table = wxDefaultResourceTable; - - wxItemResource *item = table->FindResource(resource); - if (item) - { - if ((item->GetType() == "") || (item->GetType() != "wxIcon")) - { - wxLogWarning(_("%s not an icon resource specification."), (const char*) resource); - return wxNullIcon; - } - int thisDepth = wxDisplayDepth(); - long thisNoColours = (long)pow(2.0, (double)thisDepth); - - wxItemResource *optResource = (wxItemResource *) NULL; - - // Try to find optimum icon for this platform/colour depth - wxNode *node = item->GetChildren().First(); - while (node) - { - wxItemResource *child = (wxItemResource *)node->Data(); - int platform = (int)child->GetValue2(); - int noColours = (int)child->GetValue3(); -/* - char *name = child->GetName(); - int bitmapType = (int)child->GetValue1(); - int xRes = child->GetWidth(); - int yRes = child->GetHeight(); -*/ - - switch (platform) - { - case RESOURCE_PLATFORM_ANY: - { - if (!optResource && ((noColours == 0) || (noColours <= thisNoColours))) - optResource = child; - else - { - // Maximise the number of colours. - // If noColours is zero (unspecified), then assume this - // is the right one. - if ((noColours == 0) || ((noColours <= thisNoColours) && (noColours > optResource->GetValue3()))) - optResource = child; - } - break; - } -#ifdef __WXMSW__ - case RESOURCE_PLATFORM_WINDOWS: - { - if (!optResource && ((noColours == 0) || (noColours <= thisNoColours))) - optResource = child; - else - { - // Maximise the number of colours - if ((noColours > 0) || ((noColours <= thisNoColours) && (noColours > optResource->GetValue3()))) - optResource = child; - } - break; - } -#endif -#ifdef __WXGTK__ - case RESOURCE_PLATFORM_X: - { - if (!optResource && ((noColours == 0) || (noColours <= thisNoColours))) - optResource = child; - else - { - // Maximise the number of colours - if ((noColours == 0) || ((noColours <= thisNoColours) && (noColours > optResource->GetValue3()))) - optResource = child; - } - break; - } -#endif -#ifdef wx_max - case RESOURCE_PLATFORM_MAC: - { - if (!optResource && ((noColours == 0) || (noColours <= thisNoColours))) - optResource = child; - else - { - // Maximise the number of colours - if ((noColours == 0) || ((noColours <= thisNoColours) && (noColours > optResource->GetValue3()))) - optResource = child; - } - break; - } -#endif - default: - break; - } - node = node->Next(); - } - // If no matching resource, fail. - if (!optResource) - return wxNullIcon; - - wxString name = optResource->GetName(); - int bitmapType = (int)optResource->GetValue1(); - switch (bitmapType) - { - case wxBITMAP_TYPE_XBM_DATA: - { -#ifdef __WXGTK__ - wxItemResource *item = table->FindResource(name); - if (!item) - { - wxLogWarning(_("Failed to find XBM resource %s.\n" - "Forgot to use wxResourceLoadIconData?"), (const char*) name); - return wxNullIcon; - } - return wxIcon((const char **)item->GetValue1(), (int)item->GetValue2(), (int)item->GetValue3()); -#else - wxLogWarning(_("No XBM facility available!")); -#endif - break; - } - case wxBITMAP_TYPE_XPM_DATA: - { - // *** XPM ICON NOT YET IMPLEMENTED IN WXWINDOWS *** -/* -#if (defined(__WXGTK__)) || (defined(__WXMSW__) && wxUSE_XPM_IN_MSW) - wxItemResource *item = table->FindResource(name); - if (!item) - { - char buf[400]; - sprintf(buf, _("Failed to find XPM resource %s.\nForgot to use wxResourceLoadIconData?"), name); - wxLogWarning(buf); - return NULL; - } - return wxIcon((char **)item->GetValue1()); -#else - wxLogWarning(_("No XPM facility available!")); -#endif -*/ - wxLogWarning(_("No XPM icon facility available!")); - break; - } - default: - { -#ifdef __WXGTK__ - wxLogWarning(_("Icon resource specification %s not found."), (const char*) resource); -#else - return wxIcon(name, bitmapType); -#endif - break; - } - } - return wxNullIcon; - } - else - { - wxLogWarning(_("Icon resource specification %s not found."), (const char*) resource); - return wxNullIcon; - } -} - -wxMenu *wxResourceCreateMenu(wxItemResource *item) -{ - wxMenu *menu = new wxMenu; - wxNode *node = item->GetChildren().First(); - while (node) - { - wxItemResource *child = (wxItemResource *)node->Data(); - if ((child->GetType() != "") && (child->GetType() == "wxMenuSeparator")) - menu->AppendSeparator(); - else if (child->GetChildren().Number() > 0) - { - wxMenu *subMenu = wxResourceCreateMenu(child); - if (subMenu) - menu->Append((int)child->GetValue1(), child->GetTitle(), subMenu, child->GetValue4()); - } - else - { - menu->Append((int)child->GetValue1(), child->GetTitle(), child->GetValue4(), (child->GetValue2() != 0)); - } - node = node->Next(); - } - return menu; -} - -wxMenuBar *wxResourceCreateMenuBar(const wxString& resource, wxResourceTable *table, wxMenuBar *menuBar) -{ - if (!table) - table = wxDefaultResourceTable; - - wxItemResource *menuResource = table->FindResource(resource); - if (menuResource && (menuResource->GetType() != "") && (menuResource->GetType() == "wxMenu")) - { - if (!menuBar) - menuBar = new wxMenuBar; - wxNode *node = menuResource->GetChildren().First(); - while (node) - { - wxItemResource *child = (wxItemResource *)node->Data(); - wxMenu *menu = wxResourceCreateMenu(child); - if (menu) - menuBar->Append(menu, child->GetTitle()); - node = node->Next(); - } - return menuBar; - } - return (wxMenuBar *) NULL; -} - -wxMenu *wxResourceCreateMenu(const wxString& resource, wxResourceTable *table) -{ - if (!table) - table = wxDefaultResourceTable; - - wxItemResource *menuResource = table->FindResource(resource); - if (menuResource && (menuResource->GetType() != "") && (menuResource->GetType() == "wxMenu")) -// if (menuResource && (menuResource->GetType() == wxTYPE_MENU)) - return wxResourceCreateMenu(menuResource); - return (wxMenu *) NULL; -} - -// Global equivalents (so don't have to refer to default table explicitly) -bool wxResourceParseData(const wxString& resource, wxResourceTable *table) -{ - if (!table) - table = wxDefaultResourceTable; - - return table->ParseResourceData(resource); -} - -bool wxResourceParseFile(const wxString& filename, wxResourceTable *table) -{ - if (!table) - table = wxDefaultResourceTable; - - return table->ParseResourceFile(filename); -} - -// Register XBM/XPM data -bool wxResourceRegisterBitmapData(const wxString& name, char bits[], int width, int height, wxResourceTable *table) -{ - if (!table) - table = wxDefaultResourceTable; - - return table->RegisterResourceBitmapData(name, bits, width, height); -} - -bool wxResourceRegisterBitmapData(const wxString& name, char **data, wxResourceTable *table) -{ - if (!table) - table = wxDefaultResourceTable; - - return table->RegisterResourceBitmapData(name, data); -} - -void wxResourceClear(wxResourceTable *table) -{ - if (!table) - table = wxDefaultResourceTable; - - table->ClearTable(); -} - -/* - * Identifiers - */ - -bool wxResourceAddIdentifier(const wxString& name, int value, wxResourceTable *table) -{ - if (!table) - table = wxDefaultResourceTable; - - table->identifiers.Put(name, (wxObject *)value); - return TRUE; -} - -int wxResourceGetIdentifier(const wxString& name, wxResourceTable *table) -{ - if (!table) - table = wxDefaultResourceTable; - - return (int)table->identifiers.Get(name); -} - -/* - * Parse #include file for #defines (only) - */ - -bool wxResourceParseIncludeFile(const wxString& f, wxResourceTable *table) -{ - if (!table) - table = wxDefaultResourceTable; - - FILE *fd = fopen(f, "r"); - if (!fd) - { - return FALSE; - } - while (wxGetResourceToken(fd)) - { - if (strcmp(wxResourceBuffer, "#define") == 0) - { - wxGetResourceToken(fd); - char *name = copystring(wxResourceBuffer); - wxGetResourceToken(fd); - char *value = copystring(wxResourceBuffer); - if (isdigit(value[0])) - { - int val = (int)atol(value); - wxResourceAddIdentifier(name, val, table); - } - delete[] name; - delete[] value; - } - } - fclose(fd); - return TRUE; -} - -/* - * Reading strings as if they were .wxr files - */ - -static int getc_string(char *s) -{ - int ch = s[wxResourceStringPtr]; - if (ch == 0) - return EOF; - else - { - wxResourceStringPtr ++; - return ch; - } -} - -static int ungetc_string() -{ - wxResourceStringPtr --; - return 0; -} - -bool wxEatWhiteSpaceString(char *s) -{ - int ch = getc_string(s); - if (ch == EOF) - return TRUE; - - if ((ch != ' ') && (ch != '/') && (ch != ' ') && (ch != 10) && (ch != 13) && (ch != 9)) - { - ungetc_string(); - return TRUE; - } - - // Eat whitespace - while (ch == ' ' || ch == 10 || ch == 13 || ch == 9) - ch = getc_string(s); - // Check for comment - if (ch == '/') - { - ch = getc_string(s); - if (ch == '*') - { - bool finished = FALSE; - while (!finished) - { - ch = getc_string(s); - if (ch == EOF) - return FALSE; - if (ch == '*') - { - int newCh = getc_string(s); - if (newCh == '/') - finished = TRUE; - else - { - ungetc_string(); - } - } - } - } - else // False alarm - return FALSE; - } - else if (ch != EOF) - ungetc_string(); - return wxEatWhiteSpaceString(s); -} - -bool wxGetResourceTokenString(char *s) -{ - if (!wxResourceBuffer) - wxReallocateResourceBuffer(); - wxResourceBuffer[0] = 0; - wxEatWhiteSpaceString(s); - - int ch = getc_string(s); - if (ch == '"') - { - // Get string - wxResourceBufferCount = 0; - ch = getc_string(s); - while (ch != '"') - { - int actualCh = ch; - if (ch == EOF) - { - wxResourceBuffer[wxResourceBufferCount] = 0; - return FALSE; - } - // Escaped characters - else if (ch == '\\') - { - int newCh = getc_string(s); - if (newCh == '"') - actualCh = '"'; - else if (newCh == 10) - actualCh = 10; - else - { - ungetc_string(); - } - } - - if (wxResourceBufferCount >= wxResourceBufferSize-1) - wxReallocateResourceBuffer(); - wxResourceBuffer[wxResourceBufferCount] = (char)actualCh; - wxResourceBufferCount ++; - ch = getc_string(s); - } - wxResourceBuffer[wxResourceBufferCount] = 0; - } - else - { - wxResourceBufferCount = 0; - // Any other token - while (ch != ' ' && ch != EOF && ch != ' ' && ch != 13 && ch != 9 && ch != 10) - { - if (wxResourceBufferCount >= wxResourceBufferSize-1) - wxReallocateResourceBuffer(); - wxResourceBuffer[wxResourceBufferCount] = (char)ch; - wxResourceBufferCount ++; - - ch = getc_string(s); - } - wxResourceBuffer[wxResourceBufferCount] = 0; - if (ch == EOF) - return FALSE; - } - return TRUE; -} - -/* - * Files are in form: - static char *name = "...."; - with possible comments. - */ - -bool wxResourceReadOneResourceString(char *s, wxExprDatabase& db, bool *eof, wxResourceTable *table) -{ - if (!table) - table = wxDefaultResourceTable; - - // static or #define - if (!wxGetResourceTokenString(s)) - { - *eof = TRUE; - return FALSE; - } - - if (strcmp(wxResourceBuffer, "#define") == 0) - { - wxGetResourceTokenString(s); - char *name = copystring(wxResourceBuffer); - wxGetResourceTokenString(s); - char *value = copystring(wxResourceBuffer); - if (isalpha(value[0])) - { - int val = (int)atol(value); - wxResourceAddIdentifier(name, val, table); - } - else - { - wxLogWarning(_("#define %s must be an integer."), name); - delete[] name; - delete[] value; - return FALSE; - } - delete[] name; - delete[] value; - - return TRUE; - } -/* - else if (strcmp(wxResourceBuffer, "#include") == 0) - { - wxGetResourceTokenString(s); - char *name = copystring(wxResourceBuffer); - char *actualName = name; - if (name[0] == '"') - actualName = name + 1; - int len = strlen(name); - if ((len > 0) && (name[len-1] == '"')) - name[len-1] = 0; - if (!wxResourceParseIncludeFile(actualName, table)) - { - char buf[400]; - sprintf(buf, _("Could not find resource include file %s."), actualName); - wxLogWarning(buf); - } - delete[] name; - return TRUE; - } -*/ - else if (strcmp(wxResourceBuffer, "static") != 0) - { - char buf[300]; - strcpy(buf, _("Found ")); - strncat(buf, wxResourceBuffer, 30); - strcat(buf, _(", expected static, #include or #define\nwhilst parsing resource.")); - wxLogWarning(buf); - return FALSE; - } - - // char - if (!wxGetResourceTokenString(s)) - { - wxLogWarning(_("Unexpected end of file whilst parsing resource.")); - *eof = TRUE; - return FALSE; - } - - if (strcmp(wxResourceBuffer, "char") != 0) - { - wxLogWarning(_("Expected 'char' whilst parsing resource.")); - return FALSE; - } - - // *name - if (!wxGetResourceTokenString(s)) - { - wxLogWarning(_("Unexpected end of file whilst parsing resource.")); - *eof = TRUE; - return FALSE; - } - - if (wxResourceBuffer[0] != '*') - { - wxLogWarning(_("Expected '*' whilst parsing resource.")); - return FALSE; - } - char nameBuf[100]; - strncpy(nameBuf, wxResourceBuffer+1, 99); - - // = - if (!wxGetResourceTokenString(s)) - { - wxLogWarning(_("Unexpected end of file whilst parsing resource.")); - *eof = TRUE; - return FALSE; - } - - if (strcmp(wxResourceBuffer, "=") != 0) - { - wxLogWarning(_("Expected '=' whilst parsing resource.")); - return FALSE; - } - - // String - if (!wxGetResourceTokenString(s)) - { - wxLogWarning(_("Unexpected end of file whilst parsing resource.")); - *eof = TRUE; - return FALSE; - } - else - { - if (!db.ReadPrologFromString(wxResourceBuffer)) - { - wxLogWarning(_("%s: ill-formed resource file syntax."), nameBuf); - return FALSE; - } - } - // Semicolon - if (!wxGetResourceTokenString(s)) - { - *eof = TRUE; - } - return TRUE; -} - -bool wxResourceParseString(char *s, wxResourceTable *table) -{ - if (!table) - table = wxDefaultResourceTable; - - if (!s) - return FALSE; - - // Turn backslashes into spaces - if (s) - { - int len = strlen(s); - int i; - for (i = 0; i < len; i++) - if (s[i] == 92 && s[i+1] == 13) - { - s[i] = ' '; - s[i+1] = ' '; - } - } - - wxExprDatabase db; - wxResourceStringPtr = 0; - - bool eof = FALSE; - while (wxResourceReadOneResourceString(s, db, &eof, table) && !eof) - { - // Loop - } - return wxResourceInterpretResources(*table, db); -} - -/* - * resource loading facility - */ - -bool wxWindow::LoadFromResource(wxWindow *parent, const wxString& resourceName, const wxResourceTable *table) -{ - if (!table) - table = wxDefaultResourceTable; - - wxItemResource *resource = table->FindResource((const char *)resourceName); -// if (!resource || (resource->GetType() != wxTYPE_DIALOG_BOX)) - if (!resource || (resource->GetType() == "") || - ! ((strcmp(resource->GetType(), "wxDialog") == 0) || (strcmp(resource->GetType(), "wxPanel") == 0))) - return FALSE; - - wxString title(resource->GetTitle()); - long theWindowStyle = resource->GetStyle(); - bool isModal = (resource->GetValue1() != 0); - int x = resource->GetX(); - int y = resource->GetY(); - int width = resource->GetWidth(); - int height = resource->GetHeight(); - wxString name = resource->GetName(); - - if (IsKindOf(CLASSINFO(wxDialog))) - { - wxDialog *dialogBox = (wxDialog *)this; - long modalStyle = isModal ? wxDIALOG_MODAL : 0; - if (!dialogBox->Create(parent, -1, title, wxPoint(x, y), wxSize(width, height), theWindowStyle|modalStyle, name)) - return FALSE; - - // Only reset the client size if we know we're not going to do it again below. - if ((resource->GetResourceStyle() & wxRESOURCE_DIALOG_UNITS) == 0) - dialogBox->SetClientSize(width, height); - } - else if (IsKindOf(CLASSINFO(wxPanel))) - { - wxPanel* panel = (wxPanel *)this; - if (!panel->Create(parent, -1, wxPoint(x, y), wxSize(width, height), theWindowStyle, name)) - return FALSE; - } - else - { - if (!this->Create(parent, -1, wxPoint(x, y), wxSize(width, height), theWindowStyle, name)) - return FALSE; - } - - if ((resource->GetResourceStyle() & wxRESOURCE_USE_DEFAULTS) != 0) - { - // No need to do this since it's done in wxPanel or wxDialog constructor. - // SetFont(wxSystemSettings::GetSystemFont(wxSYS_DEFAULT_GUI_FONT)); - } - else - { - if (resource->GetFont().Ok()) - SetFont(resource->GetFont()); - if (resource->GetBackgroundColour().Ok()) - SetBackgroundColour(resource->GetBackgroundColour()); - } - - // Should have some kind of font at this point - if (!GetFont().Ok()) - SetFont(wxSystemSettings::GetSystemFont(wxSYS_DEFAULT_GUI_FONT)); - if (!GetBackgroundColour().Ok()) - SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE)); - - // Only when we've created the window and set the font can we set the correct size, - // if based on dialog units. - if ((resource->GetResourceStyle() & wxRESOURCE_DIALOG_UNITS) != 0) - { - wxSize sz = ConvertDialogToPixels(wxSize(width, height)); - SetClientSize(sz.x, sz.y); - - wxPoint pt = ConvertDialogToPixels(wxPoint(x, y)); - Move(pt.x, pt.y); - } - - // Now create children - wxNode *node = resource->GetChildren().First(); - while (node) - { - wxItemResource *childResource = (wxItemResource *)node->Data(); - - (void) CreateItem(childResource, resource, table); - - node = node->Next(); - } - return TRUE; -} - -wxControl *wxWindow::CreateItem(const wxItemResource *resource, const wxItemResource* parentResource, const wxResourceTable *table) -{ - if (!table) - table = wxDefaultResourceTable; - return table->CreateItem((wxWindow *)this, resource, parentResource); -} - -#ifdef _MSC_VER - #pragma warning(default:4706) // assignment within conditional expression -#endif // VC++ - -#endif - // BC++/Win16 only -#endif // wxUSE_WX_RESOURCES diff --git a/src/common/resource.cpp b/src/common/resource.cpp deleted file mode 100644 index 031a211c74..0000000000 --- a/src/common/resource.cpp +++ /dev/null @@ -1,2926 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: resource.cpp -// Purpose: Resource system -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "resource.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#if wxUSE_WX_RESOURCES - -#ifdef _MSC_VER - #pragma warning(disable:4706) // assignment within conditional expression -#endif // VC++ - -#ifndef WX_PRECOMP -#include "wx/defs.h" -#include "wx/setup.h" -#include "wx/list.h" -#include "wx/hash.h" -#include "wx/gdicmn.h" -#include "wx/utils.h" -#include "wx/types.h" -#include "wx/menu.h" -#include "wx/stattext.h" -#include "wx/button.h" -#include "wx/bmpbuttn.h" -#include "wx/radiobox.h" -#include "wx/radiobut.h" -#include "wx/listbox.h" -#include "wx/choice.h" -#include "wx/checkbox.h" -#include "wx/settings.h" -#include "wx/slider.h" -#include "wx/statbox.h" -#include "wx/statbmp.h" -#if wxUSE_GAUGE -#include "wx/gauge.h" -#endif -#include "wx/textctrl.h" -#include "wx/msgdlg.h" -#include "wx/intl.h" -#endif - -#if wxUSE_RADIOBUTTON -#include "wx/radiobut.h" -#endif - -#if wxUSE_SCROLLBAR -#include "wx/scrolbar.h" -#endif - -#if wxUSE_COMBOBOX -#include "wx/combobox.h" -#endif - -#include "wx/validate.h" - -#include "wx/log.h" - -#include -#include -#include -#include - -#include "wx/resource.h" -#include "wx/string.h" -#include "wx/wxexpr.h" - -#include "wx/settings.h" - -// Forward (private) declarations -bool wxResourceInterpretResources(wxResourceTable& table, wxExprDatabase& db); -wxItemResource *wxResourceInterpretDialog(wxResourceTable& table, wxExpr *expr, bool isPanel = FALSE); -wxItemResource *wxResourceInterpretControl(wxResourceTable& table, wxExpr *expr); -wxItemResource *wxResourceInterpretMenu(wxResourceTable& table, wxExpr *expr); -wxItemResource *wxResourceInterpretMenuBar(wxResourceTable& table, wxExpr *expr); -wxItemResource *wxResourceInterpretString(wxResourceTable& table, wxExpr *expr); -wxItemResource *wxResourceInterpretBitmap(wxResourceTable& table, wxExpr *expr); -wxItemResource *wxResourceInterpretIcon(wxResourceTable& table, wxExpr *expr); -// Interpret list expression -wxFont wxResourceInterpretFontSpec(wxExpr *expr); - -bool wxResourceReadOneResource(FILE *fd, wxExprDatabase& db, bool *eof, wxResourceTable *table = (wxResourceTable *) NULL); -bool wxResourceParseIncludeFile(const wxString& f, wxResourceTable *table = (wxResourceTable *) NULL); - -wxResourceTable *wxDefaultResourceTable = (wxResourceTable *) NULL; - -char *wxResourceBuffer = (char *) NULL; -long wxResourceBufferSize = 0; -long wxResourceBufferCount = 0; -int wxResourceStringPtr = 0; - -void wxInitializeResourceSystem() -{ - wxDefaultResourceTable = new wxResourceTable; -} - -void wxCleanUpResourceSystem() -{ - delete wxDefaultResourceTable; - if (wxResourceBuffer) - delete[] wxResourceBuffer; -} - -void wxLogWarning(char *msg) -{ - wxMessageBox(msg, _("Warning"), wxOK); -} - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxItemResource, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxResourceTable, wxHashTable) -#endif - -wxItemResource::wxItemResource() -{ - m_itemType = ""; - m_title = ""; - m_name = ""; - m_windowStyle = 0; - m_x = m_y = m_width = m_height = 0; - m_value1 = m_value2 = m_value3 = m_value5 = 0; - m_value4 = ""; - m_windowId = 0; - m_exStyle = 0; -} - -wxItemResource::~wxItemResource() -{ - wxNode *node = m_children.First(); - while (node) - { - wxItemResource *item = (wxItemResource *)node->Data(); - delete item; - delete node; - node = m_children.First(); - } -} - -/* - * Resource table - */ - -wxResourceTable::wxResourceTable():wxHashTable(wxKEY_STRING), identifiers(wxKEY_STRING) -{ -} - -wxResourceTable::~wxResourceTable() -{ - ClearTable(); -} - -wxItemResource *wxResourceTable::FindResource(const wxString& name) const -{ - wxItemResource *item = (wxItemResource *)Get((char *)(const char *)name); - return item; -} - -void wxResourceTable::AddResource(wxItemResource *item) -{ - wxString name = item->GetName(); - if (name == "") - name = item->GetTitle(); - if (name == "") - name = "no name"; - - // Delete existing resource, if any. - Delete(name); - - Put(name, item); -} - -bool wxResourceTable::DeleteResource(const wxString& name) -{ - wxItemResource *item = (wxItemResource *)Delete((char *)(const char *)name); - if (item) - { - // See if any resource has this as its child; if so, delete from - // parent's child list. - BeginFind(); - wxNode *node = (wxNode *) NULL; - while ((node = Next())) - { - wxItemResource *parent = (wxItemResource *)node->Data(); - if (parent->GetChildren().Member(item)) - { - parent->GetChildren().DeleteObject(item); - break; - } - } - - delete item; - return TRUE; - } - else - return FALSE; -} - -bool wxResourceTable::ParseResourceFile(const wxString& filename) -{ - wxExprDatabase db; - - FILE *fd = fopen((const char*) filename, "r"); - if (!fd) - return FALSE; - bool eof = FALSE; - while (wxResourceReadOneResource(fd, db, &eof, this) && !eof) - { - // Loop - } - fclose(fd); - return wxResourceInterpretResources(*this, db); -} - -bool wxResourceTable::ParseResourceData(const wxString& data) -{ - wxExprDatabase db; - if (!db.ReadFromString(data)) - { - wxLogWarning(_("Ill-formed resource file syntax.")); - return FALSE; - } - - return wxResourceInterpretResources(*this, db); -} - -bool wxResourceTable::RegisterResourceBitmapData(const wxString& name, char bits[], int width, int height) -{ - // Register pre-loaded bitmap data - wxItemResource *item = new wxItemResource; -// item->SetType(wxRESOURCE_TYPE_XBM_DATA); - item->SetType("wxXBMData"); - item->SetName(name); - item->SetValue1((long)bits); - item->SetValue2((long)width); - item->SetValue3((long)height); - AddResource(item); - return TRUE; -} - -bool wxResourceTable::RegisterResourceBitmapData(const wxString& name, char **data) -{ - // Register pre-loaded bitmap data - wxItemResource *item = new wxItemResource; -// item->SetType(wxRESOURCE_TYPE_XPM_DATA); - item->SetType("wxXPMData"); - item->SetName(name); - item->SetValue1((long)data); - AddResource(item); - return TRUE; -} - -bool wxResourceTable::SaveResource(const wxString& WXUNUSED(filename)) -{ - return FALSE; -} - -void wxResourceTable::ClearTable() -{ - BeginFind(); - wxNode *node = Next(); - while (node) - { - wxNode *next = Next(); - wxItemResource *item = (wxItemResource *)node->Data(); - delete item; - delete node; - node = next; - } -} - -wxControl *wxResourceTable::CreateItem(wxWindow *parent, const wxItemResource* childResource, const wxItemResource* parentResource) const -{ - int id = childResource->GetId(); - if ( id == 0 ) - id = -1; - - bool dlgUnits = ((parentResource->GetResourceStyle() & wxRESOURCE_DIALOG_UNITS) != 0); - - wxControl *control = (wxControl *) NULL; - wxString itemType(childResource->GetType()); - - wxPoint pos; - wxSize size; - if (dlgUnits) - { - pos = parent->ConvertDialogToPixels(wxPoint(childResource->GetX(), childResource->GetY())); - size = parent->ConvertDialogToPixels(wxSize(childResource->GetWidth(), childResource->GetHeight())); - } - else - { - pos = wxPoint(childResource->GetX(), childResource->GetY()); - size = wxSize(childResource->GetWidth(), childResource->GetHeight()); - } - - if (itemType == wxString("wxButton") || itemType == wxString("wxBitmapButton")) - { - if (childResource->GetValue4() != "") - { - // Bitmap button - wxBitmap bitmap = childResource->GetBitmap(); - if (!bitmap.Ok()) - { - bitmap = wxResourceCreateBitmap(childResource->GetValue4(), (wxResourceTable *)this); - ((wxItemResource*) childResource)->SetBitmap(bitmap); - } - if (bitmap.Ok()) - control = new wxBitmapButton(parent, id, bitmap, pos, size, - childResource->GetStyle(), wxDefaultValidator, childResource->GetName()); - } - else - // Normal, text button - control = new wxButton(parent, id, childResource->GetTitle(), pos, size, - childResource->GetStyle(), wxDefaultValidator, childResource->GetName()); - } - else if (itemType == wxString("wxMessage") || itemType == wxString("wxStaticText") || - itemType == wxString("wxStaticBitmap")) - { - if (childResource->GetValue4() != "") - { - // Bitmap message - wxBitmap bitmap = childResource->GetBitmap(); - if (!bitmap.Ok()) - { - bitmap = wxResourceCreateBitmap(childResource->GetValue4(), (wxResourceTable *)this); - ((wxItemResource*) childResource)->SetBitmap(bitmap); - } -#if wxUSE_BITMAP_MESSAGE - if (bitmap.Ok()) - control = new wxStaticBitmap(parent, id, bitmap, pos, size, - childResource->GetStyle(), childResource->GetName()); -#endif - } - else - { - control = new wxStaticText(parent, id, childResource->GetTitle(), pos, size, - childResource->GetStyle(), childResource->GetName()); - } - } - else if (itemType == wxString("wxText") || itemType == wxString("wxTextCtrl") || itemType == wxString("wxMultiText")) - { - control = new wxTextCtrl(parent, id, childResource->GetValue4(), pos, size, - childResource->GetStyle(), wxDefaultValidator, childResource->GetName()); - } - else if (itemType == wxString("wxCheckBox")) - { - control = new wxCheckBox(parent, id, childResource->GetTitle(), pos, size, - childResource->GetStyle(), wxDefaultValidator, childResource->GetName()); - - ((wxCheckBox *)control)->SetValue((childResource->GetValue1() != 0)); - } -#if wxUSE_GAUGE - else if (itemType == wxString("wxGauge")) - { - control = new wxGauge(parent, id, (int)childResource->GetValue2(), pos, size, - childResource->GetStyle(), wxDefaultValidator, childResource->GetName()); - - ((wxGauge *)control)->SetValue((int)childResource->GetValue1()); - } -#endif -#if wxUSE_RADIOBUTTON - else if (itemType == wxString("wxRadioButton")) - { - control = new wxRadioButton(parent, id, childResource->GetTitle(), // (int)childResource->GetValue1(), - pos, size, - childResource->GetStyle(), wxDefaultValidator, childResource->GetName()); - } -#endif -#if wxUSE_SCROLLBAR - else if (itemType == wxString("wxScrollBar")) - { - control = new wxScrollBar(parent, id, pos, size, - childResource->GetStyle(), wxDefaultValidator, childResource->GetName()); -/* - ((wxScrollBar *)control)->SetValue((int)childResource->GetValue1()); - ((wxScrollBar *)control)->SetPageSize((int)childResource->GetValue2()); - ((wxScrollBar *)control)->SetObjectLength((int)childResource->GetValue3()); - ((wxScrollBar *)control)->SetViewLength((int)(long)childResource->GetValue5()); -*/ - ((wxScrollBar *)control)->SetScrollbar((int)childResource->GetValue1(),(int)childResource->GetValue2(), - (int)childResource->GetValue3(),(int)(long)childResource->GetValue5(),FALSE); - - } -#endif - else if (itemType == wxString("wxSlider")) - { - control = new wxSlider(parent, id, (int)childResource->GetValue1(), - (int)childResource->GetValue2(), (int)childResource->GetValue3(), pos, size, - childResource->GetStyle(), wxDefaultValidator, childResource->GetName()); - } - else if (itemType == wxString("wxGroupBox") || itemType == wxString("wxStaticBox")) - { - control = new wxStaticBox(parent, id, childResource->GetTitle(), pos, size, - childResource->GetStyle(), childResource->GetName()); - } - else if (itemType == wxString("wxListBox")) - { - wxStringList& stringList = childResource->GetStringValues(); - wxString *strings = (wxString *) NULL; - int noStrings = 0; - if (stringList.Number() > 0) - { - noStrings = stringList.Number(); - strings = new wxString[noStrings]; - wxNode *node = stringList.First(); - int i = 0; - while (node) - { - strings[i] = (char *)node->Data(); - i ++; - node = node->Next(); - } - } - control = new wxListBox(parent, id, pos, size, - noStrings, strings, childResource->GetStyle(), wxDefaultValidator, childResource->GetName()); - - if (strings) - delete[] strings; - } - else if (itemType == wxString("wxChoice")) - { - wxStringList& stringList = childResource->GetStringValues(); - wxString *strings = (wxString *) NULL; - int noStrings = 0; - if (stringList.Number() > 0) - { - noStrings = stringList.Number(); - strings = new wxString[noStrings]; - wxNode *node = stringList.First(); - int i = 0; - while (node) - { - strings[i] = (char *)node->Data(); - i ++; - node = node->Next(); - } - } - control = new wxChoice(parent, id, pos, size, - noStrings, strings, childResource->GetStyle(), wxDefaultValidator, childResource->GetName()); - - if (strings) - delete[] strings; - } -#if wxUSE_COMBOBOX - else if (itemType == wxString("wxComboBox")) - { - wxStringList& stringList = childResource->GetStringValues(); - wxString *strings = (wxString *) NULL; - int noStrings = 0; - if (stringList.Number() > 0) - { - noStrings = stringList.Number(); - strings = new wxString[noStrings]; - wxNode *node = stringList.First(); - int i = 0; - while (node) - { - strings[i] = (char *)node->Data(); - i ++; - node = node->Next(); - } - } - control = new wxComboBox(parent, id, childResource->GetValue4(), pos, size, - noStrings, strings, childResource->GetStyle(), wxDefaultValidator, childResource->GetName()); - - if (strings) - delete[] strings; - } -#endif - else if (itemType == wxString("wxRadioBox")) - { - wxStringList& stringList = childResource->GetStringValues(); - wxString *strings = (wxString *) NULL; - int noStrings = 0; - if (stringList.Number() > 0) - { - noStrings = stringList.Number(); - strings = new wxString[noStrings]; - wxNode *node = stringList.First(); - int i = 0; - while (node) - { - strings[i] = (char *)node->Data(); - i ++; - node = node->Next(); - } - } - control = new wxRadioBox(parent, (wxWindowID) id, wxString(childResource->GetTitle()), pos, size, - noStrings, strings, (int)childResource->GetValue1(), childResource->GetStyle(), wxDefaultValidator, - childResource->GetName()); - - if (strings) - delete[] strings; - } - - if ((parentResource->GetResourceStyle() & wxRESOURCE_USE_DEFAULTS) != 0) - { - // Don't set font; will be inherited from parent. - } - else - { - if (control && childResource->GetFont().Ok()) - control->SetFont(childResource->GetFont()); - } - return control; -} - -/* - * Interpret database as a series of resources - */ - -bool wxResourceInterpretResources(wxResourceTable& table, wxExprDatabase& db) -{ - wxNode *node = db.First(); - while (node) - { - wxExpr *clause = (wxExpr *)node->Data(); - wxString functor(clause->Functor()); - - wxItemResource *item = (wxItemResource *) NULL; - if (functor == "dialog") - item = wxResourceInterpretDialog(table, clause); - else if (functor == "panel") - item = wxResourceInterpretDialog(table, clause, TRUE); - else if (functor == "menubar") - item = wxResourceInterpretMenuBar(table, clause); - else if (functor == "menu") - item = wxResourceInterpretMenu(table, clause); - else if (functor == "string") - item = wxResourceInterpretString(table, clause); - else if (functor == "bitmap") - item = wxResourceInterpretBitmap(table, clause); - else if (functor == "icon") - item = wxResourceInterpretIcon(table, clause); - - if (item) - { - // Remove any existing resource of same name - if (item->GetName() != "") - table.DeleteResource(item->GetName()); - table.AddResource(item); - } - node = node->Next(); - } - return TRUE; -} - -static const char *g_ValidControlClasses[] = -{ - "wxButton", - "wxBitmapButton", - "wxMessage", - "wxStaticText", - "wxStaticBitmap", - "wxText", - "wxTextCtrl", - "wxMultiText", - "wxListBox", - "wxRadioBox", - "wxRadioButton", - "wxCheckBox", - "wxBitmapCheckBox", - "wxGroupBox", - "wxStaticBox", - "wxSlider", - "wxGauge", - "wxScrollBar", - "wxChoice", - "wxComboBox" -}; - -static bool wxIsValidControlClass(const wxString& c) -{ - for ( size_t i = 0; i < WXSIZEOF(g_ValidControlClasses); i++ ) - { - if ( c == g_ValidControlClasses[i] ) - return TRUE; - } - return FALSE; -} - -wxItemResource *wxResourceInterpretDialog(wxResourceTable& table, wxExpr *expr, bool isPanel) -{ - wxItemResource *dialogItem = new wxItemResource; - if (isPanel) - dialogItem->SetType("wxPanel"); - else - dialogItem->SetType("wxDialog"); - wxString style = ""; - wxString title = ""; - wxString name = ""; - wxString backColourHex = ""; - wxString labelColourHex = ""; - wxString buttonColourHex = ""; - - long windowStyle = wxDEFAULT_DIALOG_STYLE; - if (isPanel) - windowStyle = 0; - - int x = 0; int y = 0; int width = -1; int height = -1; - int isModal = 0; - wxExpr *labelFontExpr = (wxExpr *) NULL; - wxExpr *buttonFontExpr = (wxExpr *) NULL; - wxExpr *fontExpr = (wxExpr *) NULL; - expr->GetAttributeValue("style", style); - expr->GetAttributeValue("name", name); - expr->GetAttributeValue("title", title); - expr->GetAttributeValue("x", x); - expr->GetAttributeValue("y", y); - expr->GetAttributeValue("width", width); - expr->GetAttributeValue("height", height); - expr->GetAttributeValue("modal", isModal); - expr->GetAttributeValue("label_font", &labelFontExpr); - expr->GetAttributeValue("button_font", &buttonFontExpr); - expr->GetAttributeValue("font", &fontExpr); - expr->GetAttributeValue("background_colour", backColourHex); - expr->GetAttributeValue("label_colour", labelColourHex); - expr->GetAttributeValue("button_colour", buttonColourHex); - - int useDialogUnits = 0; - expr->GetAttributeValue("use_dialog_units", useDialogUnits); - if (useDialogUnits != 0) - dialogItem->SetResourceStyle(dialogItem->GetResourceStyle() | wxRESOURCE_DIALOG_UNITS); - - int useDefaults = 0; - expr->GetAttributeValue("use_system_defaults", useDefaults); - if (useDefaults != 0) - dialogItem->SetResourceStyle(dialogItem->GetResourceStyle() | wxRESOURCE_USE_DEFAULTS); - - long id = 0; - expr->GetAttributeValue("id", id); - dialogItem->SetId(id); - - if (style != "") - { - windowStyle = wxParseWindowStyle(style); - } - dialogItem->SetStyle(windowStyle); - dialogItem->SetValue1(isModal); - dialogItem->SetName(name); - dialogItem->SetTitle(title); - dialogItem->SetSize(x, y, width, height); - - if (backColourHex != "") - { - int r = 0; - int g = 0; - int b = 0; - r = wxHexToDec(backColourHex.Mid(0, 2)); - g = wxHexToDec(backColourHex.Mid(2, 2)); - b = wxHexToDec(backColourHex.Mid(4, 2)); - dialogItem->SetBackgroundColour(wxColour((unsigned char)r,(unsigned char)g,(unsigned char)b)); - } - if (labelColourHex != "") - { - int r = 0; - int g = 0; - int b = 0; - r = wxHexToDec(labelColourHex.Mid(0, 2)); - g = wxHexToDec(labelColourHex.Mid(2, 2)); - b = wxHexToDec(labelColourHex.Mid(4, 2)); - dialogItem->SetLabelColour(wxColour((unsigned char)r,(unsigned char)g,(unsigned char)b)); - } - if (buttonColourHex != "") - { - int r = 0; - int g = 0; - int b = 0; - r = wxHexToDec(buttonColourHex.Mid(0, 2)); - g = wxHexToDec(buttonColourHex.Mid(2, 2)); - b = wxHexToDec(buttonColourHex.Mid(4, 2)); - dialogItem->SetButtonColour(wxColour((unsigned char)r,(unsigned char)g,(unsigned char)b)); - } - - if (fontExpr) - dialogItem->SetFont(wxResourceInterpretFontSpec(fontExpr)); - else if (buttonFontExpr) - dialogItem->SetFont(wxResourceInterpretFontSpec(buttonFontExpr)); - else if (labelFontExpr) - dialogItem->SetFont(wxResourceInterpretFontSpec(labelFontExpr)); - - // Now parse all controls - wxExpr *controlExpr = expr->GetFirst(); - while (controlExpr) - { - if (controlExpr->Number() == 3) - { - wxString controlKeyword(controlExpr->Nth(1)->StringValue()); - if (controlKeyword != "" && controlKeyword == "control") - { - // The value part: always a list. - wxExpr *listExpr = controlExpr->Nth(2); - if (listExpr->Type() == PrologList) - { - wxItemResource *controlItem = wxResourceInterpretControl(table, listExpr); - if (controlItem) - { - dialogItem->GetChildren().Append(controlItem); - } - } - } - } - controlExpr = controlExpr->GetNext(); - } - return dialogItem; -} - -wxItemResource *wxResourceInterpretControl(wxResourceTable& table, wxExpr *expr) -{ - wxItemResource *controlItem = new wxItemResource; - - // First, find the standard features of a control definition: - // [optional integer/string id], control name, title, style, name, x, y, width, height - - wxString controlType; - wxString style; - wxString title; - wxString name; - int id = 0; - long windowStyle = 0; - int x = 0; int y = 0; int width = -1; int height = -1; - int count = 0; - - wxExpr *expr1 = expr->Nth(0); - - if ( expr1->Type() == PrologString || expr1->Type() == PrologWord ) - { - if ( wxIsValidControlClass(expr1->StringValue()) ) - { - count = 1; - controlType = expr1->StringValue(); - } - else - { - wxString str(expr1->StringValue()); - id = wxResourceGetIdentifier(str, &table); - if (id == 0) - { - wxLogWarning(_("Could not resolve control class or id '%s'. " - "Use (non-zero) integer instead\n or provide #define " - "(see manual for caveats)"), - (const char*) expr1->StringValue()); - delete controlItem; - return (wxItemResource *) NULL; - } - else - { - // Success - we have an id, so the 2nd element must be the control class. - controlType = expr->Nth(1)->StringValue(); - count = 2; - } - } - } - else if (expr1->Type() == PrologInteger) - { - id = (int)expr1->IntegerValue(); - // Success - we have an id, so the 2nd element must be the control class. - controlType = expr->Nth(1)->StringValue(); - count = 2; - } - - expr1 = expr->Nth(count); - count ++; - if ( expr1 ) - title = expr1->StringValue(); - - expr1 = expr->Nth(count); - count ++; - if (expr1) - { - style = expr1->StringValue(); - windowStyle = wxParseWindowStyle(style); - } - - expr1 = expr->Nth(count); - count ++; - if (expr1) - name = expr1->StringValue(); - - expr1 = expr->Nth(count); - count ++; - if (expr1) - x = (int)expr1->IntegerValue(); - - expr1 = expr->Nth(count); - count ++; - if (expr1) - y = (int)expr1->IntegerValue(); - - expr1 = expr->Nth(count); - count ++; - if (expr1) - width = (int)expr1->IntegerValue(); - - expr1 = expr->Nth(count); - count ++; - if (expr1) - height = (int)expr1->IntegerValue(); - - controlItem->SetStyle(windowStyle); - controlItem->SetName(name); - controlItem->SetTitle(title); - controlItem->SetSize(x, y, width, height); - controlItem->SetType(controlType); - controlItem->SetId(id); - - if (controlType == "wxButton") - { - // Check for bitmap resource name (in case loading old-style resource file) - if (expr->Nth(count) && ((expr->Nth(count)->Type() == PrologString) || (expr->Nth(count)->Type() == PrologWord))) - { - wxString str(expr->Nth(count)->StringValue()); - controlItem->SetValue4(str); - count ++; - controlItem->SetType("wxBitmapButton"); - } - if (expr->Nth(count) && expr->Nth(count)->Type() == PrologList) - controlItem->SetFont(wxResourceInterpretFontSpec(expr->Nth(count))); - } - else if (controlType == "wxBitmapButton") - { - // Check for bitmap resource name - if (expr->Nth(count) && ((expr->Nth(count)->Type() == PrologString) || (expr->Nth(count)->Type() == PrologWord))) - { - wxString str(expr->Nth(count)->StringValue()); - controlItem->SetValue4(str); - count ++; - if (expr->Nth(count) && expr->Nth(count)->Type() == PrologList) - controlItem->SetFont(wxResourceInterpretFontSpec(expr->Nth(count))); - } - } - else if (controlType == "wxCheckBox") - { - // Check for default value - if (expr->Nth(count) && (expr->Nth(count)->Type() == PrologInteger)) - { - controlItem->SetValue1(expr->Nth(count)->IntegerValue()); - count ++; - if (expr->Nth(count) && expr->Nth(count)->Type() == PrologList) - controlItem->SetFont(wxResourceInterpretFontSpec(expr->Nth(count))); - } - } -#if wxUSE_RADIOBUTTON - else if (controlType == "wxRadioButton") - { - // Check for default value - if (expr->Nth(count) && (expr->Nth(count)->Type() == PrologInteger)) - { - controlItem->SetValue1(expr->Nth(count)->IntegerValue()); - count ++; - if (expr->Nth(count) && expr->Nth(count)->Type() == PrologList) - controlItem->SetFont(wxResourceInterpretFontSpec(expr->Nth(count))); - } - } -#endif - else if (controlType == "wxText" || controlType == "wxTextCtrl" || controlType == "wxMultiText") - { - // Check for default value - if (expr->Nth(count) && ((expr->Nth(count)->Type() == PrologString) || (expr->Nth(count)->Type() == PrologWord))) - { - wxString str(expr->Nth(count)->StringValue()); - controlItem->SetValue4(str); - count ++; - - if (expr->Nth(count) && expr->Nth(count)->Type() == PrologList) - { - // controlItem->SetLabelFont(wxResourceInterpretFontSpec(expr->Nth(count))); - // Do nothing - no label font any more - count ++; - if (expr->Nth(count) && expr->Nth(count)->Type() == PrologList) - controlItem->SetFont(wxResourceInterpretFontSpec(expr->Nth(count))); - } - } - } - else if (controlType == "wxMessage" || controlType == "wxStaticText") - { - // Check for bitmap resource name (in case it's an old-style .wxr file) - if (expr->Nth(count) && ((expr->Nth(count)->Type() == PrologString) || (expr->Nth(count)->Type() == PrologWord))) - { - wxString str(expr->Nth(count)->StringValue()); - controlItem->SetValue4(str); - count ++; - controlItem->SetType("wxStaticText"); - } - if (expr->Nth(count) && expr->Nth(count)->Type() == PrologList) - controlItem->SetFont(wxResourceInterpretFontSpec(expr->Nth(count))); - } - else if (controlType == "wxStaticBitmap") - { - // Check for bitmap resource name - if (expr->Nth(count) && ((expr->Nth(count)->Type() == PrologString) || (expr->Nth(count)->Type() == PrologWord))) - { - wxString str(expr->Nth(count)->StringValue()); - controlItem->SetValue4(str); - count ++; - } - if (expr->Nth(count) && expr->Nth(count)->Type() == PrologList) - controlItem->SetFont(wxResourceInterpretFontSpec(expr->Nth(count))); - } - else if (controlType == "wxGroupBox" || controlType == "wxStaticBox") - { - if (expr->Nth(count) && expr->Nth(count)->Type() == PrologList) - controlItem->SetFont(wxResourceInterpretFontSpec(expr->Nth(count))); - } - else if (controlType == "wxGauge") - { - // Check for default value - if (expr->Nth(count) && (expr->Nth(count)->Type() == PrologInteger)) - { - controlItem->SetValue1(expr->Nth(count)->IntegerValue()); - count ++; - - // Check for range - if (expr->Nth(count) && (expr->Nth(count)->Type() == PrologInteger)) - { - controlItem->SetValue2(expr->Nth(count)->IntegerValue()); - count ++; - - if (expr->Nth(count) && expr->Nth(count)->Type() == PrologList) - { - // controlItem->SetLabelFont(wxResourceInterpretFontSpec(expr->Nth(count))); - // Do nothing - count ++; - - if (expr->Nth(count) && expr->Nth(count)->Type() == PrologList) - controlItem->SetFont(wxResourceInterpretFontSpec(expr->Nth(count))); - } - } - } - } - else if (controlType == "wxSlider") - { - // Check for default value - if (expr->Nth(count) && (expr->Nth(count)->Type() == PrologInteger)) - { - controlItem->SetValue1(expr->Nth(count)->IntegerValue()); - count ++; - - // Check for min - if (expr->Nth(count) && (expr->Nth(count)->Type() == PrologInteger)) - { - controlItem->SetValue2(expr->Nth(count)->IntegerValue()); - count ++; - - // Check for max - if (expr->Nth(count) && (expr->Nth(count)->Type() == PrologInteger)) - { - controlItem->SetValue3(expr->Nth(count)->IntegerValue()); - count ++; - - if (expr->Nth(count) && expr->Nth(count)->Type() == PrologList) - { - // controlItem->SetLabelFont(wxResourceInterpretFontSpec(expr->Nth(count))); - // do nothing - count ++; - - if (expr->Nth(count) && expr->Nth(count)->Type() == PrologList) - controlItem->SetFont(wxResourceInterpretFontSpec(expr->Nth(count))); - } - } - } - } - } - else if (controlType == "wxScrollBar") - { - // DEFAULT VALUE - if (expr->Nth(count) && (expr->Nth(count)->Type() == PrologInteger)) - { - controlItem->SetValue1(expr->Nth(count)->IntegerValue()); - count ++; - - // PAGE LENGTH - if (expr->Nth(count) && (expr->Nth(count)->Type() == PrologInteger)) - { - controlItem->SetValue2(expr->Nth(count)->IntegerValue()); - count ++; - - // OBJECT LENGTH - if (expr->Nth(count) && (expr->Nth(count)->Type() == PrologInteger)) - { - controlItem->SetValue3(expr->Nth(count)->IntegerValue()); - count ++; - - // VIEW LENGTH - if (expr->Nth(count) && (expr->Nth(count)->Type() == PrologInteger)) - controlItem->SetValue5(expr->Nth(count)->IntegerValue()); - } - } - } - } - else if (controlType == "wxListBox") - { - wxExpr *valueList = (wxExpr *) NULL; - - if ((valueList = expr->Nth(count)) && (valueList->Type() == PrologList)) - { - wxStringList stringList; - wxExpr *stringExpr = valueList->GetFirst(); - while (stringExpr) - { - stringList.Add(stringExpr->StringValue()); - stringExpr = stringExpr->GetNext(); - } - controlItem->SetStringValues(stringList); - count ++; -// This is now obsolete: it's in the window style. - // Check for wxSINGLE/wxMULTIPLE - wxExpr *mult = (wxExpr *) NULL; -/* - controlItem->SetValue1(wxLB_SINGLE); -*/ - if ((mult = expr->Nth(count)) && ((mult->Type() == PrologString)||(mult->Type() == PrologWord))) - { -/* - wxString m(mult->StringValue()); - if (m == "wxLB_MULTIPLE") - controlItem->SetValue1(wxLB_MULTIPLE); - else if (m == "wxLB_EXTENDED") - controlItem->SetValue1(wxLB_EXTENDED); -*/ - // Ignore the value - count ++; - } - if (expr->Nth(count) && expr->Nth(count)->Type() == PrologList) - { - // controlItem->SetLabelFont(wxResourceInterpretFontSpec(expr->Nth(count))); - count ++; - if (expr->Nth(count) && expr->Nth(count)->Type() == PrologList) - controlItem->SetFont(wxResourceInterpretFontSpec(expr->Nth(count))); - } - } - } - else if (controlType == "wxChoice") - { - wxExpr *valueList = (wxExpr *) NULL; - // Check for default value list - if ((valueList = expr->Nth(count)) && (valueList->Type() == PrologList)) - { - wxStringList stringList; - wxExpr *stringExpr = valueList->GetFirst(); - while (stringExpr) - { - stringList.Add(stringExpr->StringValue()); - stringExpr = stringExpr->GetNext(); - } - controlItem->SetStringValues(stringList); - - count ++; - - if (expr->Nth(count) && expr->Nth(count)->Type() == PrologList) - { - // controlItem->SetLabelFont(wxResourceInterpretFontSpec(expr->Nth(count))); - count ++; - - if (expr->Nth(count) && expr->Nth(count)->Type() == PrologList) - controlItem->SetFont(wxResourceInterpretFontSpec(expr->Nth(count))); - } - } - } -#if wxUSE_COMBOBOX - else if (controlType == "wxComboBox") - { - wxExpr *textValue = expr->Nth(count); - if (textValue && (textValue->Type() == PrologString || textValue->Type() == PrologWord)) - { - wxString str(textValue->StringValue()); - controlItem->SetValue4(str); - - count ++; - - wxExpr *valueList = (wxExpr *) NULL; - // Check for default value list - if ((valueList = expr->Nth(count)) && (valueList->Type() == PrologList)) - { - wxStringList stringList; - wxExpr *stringExpr = valueList->GetFirst(); - while (stringExpr) - { - stringList.Add(stringExpr->StringValue()); - stringExpr = stringExpr->GetNext(); - } - controlItem->SetStringValues(stringList); - - count ++; - - if (expr->Nth(count) && expr->Nth(count)->Type() == PrologList) - { - // controlItem->SetLabelFont(wxResourceInterpretFontSpec(expr->Nth(count))); - count ++; - - if (expr->Nth(count) && expr->Nth(count)->Type() == PrologList) - controlItem->SetFont(wxResourceInterpretFontSpec(expr->Nth(count))); - } - } - } - } -#endif -#if 1 - else if (controlType == "wxRadioBox") - { - wxExpr *valueList = (wxExpr *) NULL; - // Check for default value list - if ((valueList = expr->Nth(count)) && (valueList->Type() == PrologList)) - { - wxStringList stringList; - wxExpr *stringExpr = valueList->GetFirst(); - while (stringExpr) - { - stringList.Add(stringExpr->StringValue()); - stringExpr = stringExpr->GetNext(); - } - controlItem->SetStringValues(stringList); - count ++; - - // majorDim (number of rows or cols) - if (expr->Nth(count) && (expr->Nth(count)->Type() == PrologInteger)) - { - controlItem->SetValue1(expr->Nth(count)->IntegerValue()); - count ++; - } - else - controlItem->SetValue1(0); - - if (expr->Nth(count) && expr->Nth(count)->Type() == PrologList) - { - // controlItem->SetLabelFont(wxResourceInterpretFontSpec(expr->Nth(count))); - count ++; - - if (expr->Nth(count) && expr->Nth(count)->Type() == PrologList) - controlItem->SetFont(wxResourceInterpretFontSpec(expr->Nth(count))); - } - } - } -#endif - else - { - delete controlItem; - return (wxItemResource *) NULL; - } - return controlItem; -} - -// Forward declaration -wxItemResource *wxResourceInterpretMenu1(wxResourceTable& table, wxExpr *expr); - -/* - * Interpet a menu item - */ - -wxItemResource *wxResourceInterpretMenuItem(wxResourceTable& table, wxExpr *expr) -{ - wxItemResource *item = new wxItemResource; - - wxExpr *labelExpr = expr->Nth(0); - wxExpr *idExpr = expr->Nth(1); - wxExpr *helpExpr = expr->Nth(2); - wxExpr *checkableExpr = expr->Nth(3); - - // Further keywords/attributes to follow sometime... - if (expr->Number() == 0) - { -// item->SetType(wxRESOURCE_TYPE_SEPARATOR); - item->SetType("wxMenuSeparator"); - return item; - } - else - { -// item->SetType(wxTYPE_MENU); // Well, menu item, but doesn't matter. - item->SetType("wxMenu"); // Well, menu item, but doesn't matter. - if (labelExpr) - { - wxString str(labelExpr->StringValue()); - item->SetTitle(str); - } - if (idExpr) - { - int id = 0; - // If a string or word, must look up in identifier table. - if ((idExpr->Type() == PrologString) || (idExpr->Type() == PrologWord)) - { - wxString str(idExpr->StringValue()); - id = wxResourceGetIdentifier(str, &table); - if (id == 0) - { - wxLogWarning(_("Could not resolve menu id '%s'. " - "Use (non-zero) integer instead\n" - "or provide #define (see manual for caveats)"), - (const char*) idExpr->StringValue()); - } - } - else if (idExpr->Type() == PrologInteger) - id = (int)idExpr->IntegerValue(); - item->SetValue1(id); - } - if (helpExpr) - { - wxString str(helpExpr->StringValue()); - item->SetValue4(str); - } - if (checkableExpr) - item->SetValue2(checkableExpr->IntegerValue()); - - // Find the first expression that's a list, for submenu - wxExpr *subMenuExpr = expr->GetFirst(); - while (subMenuExpr && (subMenuExpr->Type() != PrologList)) - subMenuExpr = subMenuExpr->GetNext(); - - while (subMenuExpr) - { - wxItemResource *child = wxResourceInterpretMenuItem(table, subMenuExpr); - item->GetChildren().Append(child); - subMenuExpr = subMenuExpr->GetNext(); - } - } - return item; -} - -/* - * Interpret a nested list as a menu - */ -/* -wxItemResource *wxResourceInterpretMenu1(wxResourceTable& table, wxExpr *expr) -{ - wxItemResource *menu = new wxItemResource; -// menu->SetType(wxTYPE_MENU); - menu->SetType("wxMenu"); - wxExpr *element = expr->GetFirst(); - while (element) - { - wxItemResource *item = wxResourceInterpretMenuItem(table, element); - if (item) - menu->GetChildren().Append(item); - element = element->GetNext(); - } - return menu; -} -*/ - -wxItemResource *wxResourceInterpretMenu(wxResourceTable& table, wxExpr *expr) -{ - wxExpr *listExpr = (wxExpr *) NULL; - expr->GetAttributeValue("menu", &listExpr); - if (!listExpr) - return (wxItemResource *) NULL; - - wxItemResource *menuResource = wxResourceInterpretMenuItem(table, listExpr); - - if (!menuResource) - return (wxItemResource *) NULL; - - wxString name; - if (expr->GetAttributeValue("name", name)) - { - menuResource->SetName(name); - } - - return menuResource; -} - -wxItemResource *wxResourceInterpretMenuBar(wxResourceTable& table, wxExpr *expr) -{ - wxExpr *listExpr = (wxExpr *) NULL; - expr->GetAttributeValue("menu", &listExpr); - if (!listExpr) - return (wxItemResource *) NULL; - - wxItemResource *resource = new wxItemResource; - resource->SetType("wxMenu"); -// resource->SetType(wxTYPE_MENU); - - wxExpr *element = listExpr->GetFirst(); - while (element) - { - wxItemResource *menuResource = wxResourceInterpretMenuItem(table, listExpr); - resource->GetChildren().Append(menuResource); - element = element->GetNext(); - } - - wxString name; - if (expr->GetAttributeValue("name", name)) - { - resource->SetName(name); - } - - return resource; -} - -wxItemResource *wxResourceInterpretString(wxResourceTable& WXUNUSED(table), wxExpr *WXUNUSED(expr)) -{ - return (wxItemResource *) NULL; -} - -wxItemResource *wxResourceInterpretBitmap(wxResourceTable& WXUNUSED(table), wxExpr *expr) -{ - wxItemResource *bitmapItem = new wxItemResource; -// bitmapItem->SetType(wxTYPE_BITMAP); - bitmapItem->SetType("wxBitmap"); - wxString name; - if (expr->GetAttributeValue("name", name)) - { - bitmapItem->SetName(name); - } - // Now parse all bitmap specifications - wxExpr *bitmapExpr = expr->GetFirst(); - while (bitmapExpr) - { - if (bitmapExpr->Number() == 3) - { - wxString bitmapKeyword(bitmapExpr->Nth(1)->StringValue()); - if (bitmapKeyword == "bitmap" || bitmapKeyword == "icon") - { - // The value part: always a list. - wxExpr *listExpr = bitmapExpr->Nth(2); - if (listExpr->Type() == PrologList) - { - wxItemResource *bitmapSpec = new wxItemResource; -// bitmapSpec->SetType(wxTYPE_BITMAP); - bitmapSpec->SetType("wxBitmap"); - - // List is of form: [filename, bitmaptype, platform, colours, xresolution, yresolution] - // where everything after 'filename' is optional. - wxExpr *nameExpr = listExpr->Nth(0); - wxExpr *typeExpr = listExpr->Nth(1); - wxExpr *platformExpr = listExpr->Nth(2); - wxExpr *coloursExpr = listExpr->Nth(3); - wxExpr *xresExpr = listExpr->Nth(4); - wxExpr *yresExpr = listExpr->Nth(5); - if (nameExpr && nameExpr->StringValue() != "") - { - bitmapSpec->SetName(nameExpr->StringValue()); - } - if (typeExpr && typeExpr->StringValue() != "") - { - bitmapSpec->SetValue1(wxParseWindowStyle(typeExpr->StringValue())); - } - else - bitmapSpec->SetValue1(0); - - if (platformExpr && platformExpr->StringValue() != "") - { - wxString plat(platformExpr->StringValue()); - if (plat == "windows" || plat == "WINDOWS") - bitmapSpec->SetValue2(RESOURCE_PLATFORM_WINDOWS); - else if (plat == "x" || plat == "X") - bitmapSpec->SetValue2(RESOURCE_PLATFORM_X); - else if (plat == "mac" || plat == "MAC") - bitmapSpec->SetValue2(RESOURCE_PLATFORM_MAC); - else - bitmapSpec->SetValue2(RESOURCE_PLATFORM_ANY); - } - else - bitmapSpec->SetValue2(RESOURCE_PLATFORM_ANY); - - if (coloursExpr) - bitmapSpec->SetValue3(coloursExpr->IntegerValue()); - int xres = 0; - int yres = 0; - if (xresExpr) - xres = (int)xresExpr->IntegerValue(); - if (yresExpr) - yres = (int)yresExpr->IntegerValue(); - bitmapSpec->SetSize(0, 0, xres, yres); - - bitmapItem->GetChildren().Append(bitmapSpec); - } - } - } - bitmapExpr = bitmapExpr->GetNext(); - } - - return bitmapItem; -} - -wxItemResource *wxResourceInterpretIcon(wxResourceTable& table, wxExpr *expr) -{ - wxItemResource *item = wxResourceInterpretBitmap(table, expr); - if (item) - { -// item->SetType(wxTYPE_ICON); - item->SetType("wxIcon"); - return item; - } - else - return (wxItemResource *) NULL; -} - -// Interpret list expression as a font -wxFont wxResourceInterpretFontSpec(wxExpr *expr) -{ - if (expr->Type() != PrologList) - return wxNullFont; - - int point = 10; - int family = wxSWISS; - int style = wxNORMAL; - int weight = wxNORMAL; - int underline = 0; - wxString faceName(""); - - wxExpr *pointExpr = expr->Nth(0); - wxExpr *familyExpr = expr->Nth(1); - wxExpr *styleExpr = expr->Nth(2); - wxExpr *weightExpr = expr->Nth(3); - wxExpr *underlineExpr = expr->Nth(4); - wxExpr *faceNameExpr = expr->Nth(5); - if (pointExpr) - point = (int)pointExpr->IntegerValue(); - - wxString str; - if (familyExpr) - { - str = familyExpr->StringValue(); - family = (int)wxParseWindowStyle(str); - } - if (styleExpr) - { - str = styleExpr->StringValue(); - style = (int)wxParseWindowStyle(str); - } - if (weightExpr) - { - str = weightExpr->StringValue(); - weight = (int)wxParseWindowStyle(str); - } - if (underlineExpr) - underline = (int)underlineExpr->IntegerValue(); - if (faceNameExpr) - faceName = faceNameExpr->StringValue(); - - wxFont font(point, family, style, weight, (underline != 0), faceName); - return font; -} - -// Separate file for the remainder of this, for BC++/Win16 - -#if !((defined(__BORLANDC__) || defined(__SC__)) && defined(__WIN16__)) -/* - * (Re)allocate buffer for reading in from resource file - */ - -bool wxReallocateResourceBuffer() -{ - if (!wxResourceBuffer) - { - wxResourceBufferSize = 1000; - wxResourceBuffer = new char[wxResourceBufferSize]; - return TRUE; - } - if (wxResourceBuffer) - { - long newSize = wxResourceBufferSize + 1000; - char *tmp = new char[(int)newSize]; - strncpy(tmp, wxResourceBuffer, (int)wxResourceBufferCount); - delete[] wxResourceBuffer; - wxResourceBuffer = tmp; - wxResourceBufferSize = newSize; - } - return TRUE; -} - -static bool wxEatWhiteSpace(FILE *fd) -{ - int ch = getc(fd); - if ((ch != ' ') && (ch != '/') && (ch != ' ') && (ch != 10) && (ch != 13) && (ch != 9)) - { - ungetc(ch, fd); - return TRUE; - } - - // Eat whitespace - while (ch == ' ' || ch == 10 || ch == 13 || ch == 9) - ch = getc(fd); - // Check for comment - if (ch == '/') - { - ch = getc(fd); - if (ch == '*') - { - bool finished = FALSE; - while (!finished) - { - ch = getc(fd); - if (ch == EOF) - return FALSE; - if (ch == '*') - { - int newCh = getc(fd); - if (newCh == '/') - finished = TRUE; - else - { - ungetc(newCh, fd); - } - } - } - } - else // False alarm - return FALSE; - } - else - ungetc(ch, fd); - return wxEatWhiteSpace(fd); -} - -bool wxGetResourceToken(FILE *fd) -{ - if (!wxResourceBuffer) - wxReallocateResourceBuffer(); - wxResourceBuffer[0] = 0; - wxEatWhiteSpace(fd); - - int ch = getc(fd); - if (ch == '"') - { - // Get string - wxResourceBufferCount = 0; - ch = getc(fd); - while (ch != '"') - { - int actualCh = ch; - if (ch == EOF) - { - wxResourceBuffer[wxResourceBufferCount] = 0; - return FALSE; - } - // Escaped characters - else if (ch == '\\') - { - int newCh = getc(fd); - if (newCh == '"') - actualCh = '"'; - else if (newCh == 10) - actualCh = 10; - else - { - ungetc(newCh, fd); - } - } - - if (wxResourceBufferCount >= wxResourceBufferSize-1) - wxReallocateResourceBuffer(); - wxResourceBuffer[wxResourceBufferCount] = (char)actualCh; - wxResourceBufferCount ++; - ch = getc(fd); - } - wxResourceBuffer[wxResourceBufferCount] = 0; - } - else - { - wxResourceBufferCount = 0; - // Any other token - while (ch != ' ' && ch != EOF && ch != ' ' && ch != 13 && ch != 9 && ch != 10) - { - if (wxResourceBufferCount >= wxResourceBufferSize-1) - wxReallocateResourceBuffer(); - wxResourceBuffer[wxResourceBufferCount] = (char)ch; - wxResourceBufferCount ++; - - ch = getc(fd); - } - wxResourceBuffer[wxResourceBufferCount] = 0; - if (ch == EOF) - return FALSE; - } - return TRUE; -} - -/* - * Files are in form: - static char *name = "...."; - with possible comments. - */ - -bool wxResourceReadOneResource(FILE *fd, wxExprDatabase& db, bool *eof, wxResourceTable *table) -{ - if (!table) - table = wxDefaultResourceTable; - - // static or #define - if (!wxGetResourceToken(fd)) - { - *eof = TRUE; - return FALSE; - } - - if (strcmp(wxResourceBuffer, "#define") == 0) - { - wxGetResourceToken(fd); - char *name = copystring(wxResourceBuffer); - wxGetResourceToken(fd); - char *value = copystring(wxResourceBuffer); - if (isalpha(value[0])) - { - int val = (int)atol(value); - wxResourceAddIdentifier(name, val, table); - } - else - { - wxLogWarning(_("#define %s must be an integer."), name); - delete[] name; - delete[] value; - return FALSE; - } - delete[] name; - delete[] value; - - return TRUE; - } - else if (strcmp(wxResourceBuffer, "#include") == 0) - { - wxGetResourceToken(fd); - char *name = copystring(wxResourceBuffer); - char *actualName = name; - if (name[0] == '"') - actualName = name + 1; - int len = strlen(name); - if ((len > 0) && (name[len-1] == '"')) - name[len-1] = 0; - if (!wxResourceParseIncludeFile(actualName, table)) - { - wxLogWarning(_("Could not find resource include file %s."), actualName); - } - delete[] name; - return TRUE; - } - else if (strcmp(wxResourceBuffer, "static") != 0) - { - char buf[300]; - strcpy(buf, _("Found ")); - strncat(buf, wxResourceBuffer, 30); - strcat(buf, _(", expected static, #include or #define\nwhilst parsing resource.")); - wxLogWarning(buf); - return FALSE; - } - - // char - if (!wxGetResourceToken(fd)) - { - wxLogWarning(_("Unexpected end of file whilst parsing resource.")); - *eof = TRUE; - return FALSE; - } - - if (strcmp(wxResourceBuffer, "char") != 0) - { - wxLogWarning(_("Expected 'char' whilst parsing resource.")); - return FALSE; - } - - // *name - if (!wxGetResourceToken(fd)) - { - wxLogWarning(_("Unexpected end of file whilst parsing resource.")); - *eof = TRUE; - return FALSE; - } - - if (wxResourceBuffer[0] != '*') - { - wxLogWarning(_("Expected '*' whilst parsing resource.")); - return FALSE; - } - char nameBuf[100]; - strncpy(nameBuf, wxResourceBuffer+1, 99); - - // = - if (!wxGetResourceToken(fd)) - { - wxLogWarning(_("Unexpected end of file whilst parsing resource.")); - *eof = TRUE; - return FALSE; - } - - if (strcmp(wxResourceBuffer, "=") != 0) - { - wxLogWarning(_("Expected '=' whilst parsing resource.")); - return FALSE; - } - - // String - if (!wxGetResourceToken(fd)) - { - wxLogWarning(_("Unexpected end of file whilst parsing resource.")); - *eof = TRUE; - return FALSE; - } - else - { - if (!db.ReadPrologFromString(wxResourceBuffer)) - { - wxLogWarning(_("%s: ill-formed resource file syntax."), nameBuf); - return FALSE; - } - } - // Semicolon - if (!wxGetResourceToken(fd)) - { - *eof = TRUE; - } - return TRUE; -} - -/* - * Parses string window style into integer window style - */ - -/* - * Style flag parsing, e.g. - * "wxSYSTEM_MENU | wxBORDER" -> integer - */ - -char* wxResourceParseWord(char*s, int *i) -{ - if (!s) - return (char*) NULL; - - static char buf[150]; - int len = strlen(s); - int j = 0; - int ii = *i; - while ((ii < len) && (isalpha(s[ii]) || (s[ii] == '_'))) - { - buf[j] = s[ii]; - j ++; - ii ++; - } - buf[j] = 0; - - // Eat whitespace and conjunction characters - while ((ii < len) && - ((s[ii] == ' ') || (s[ii] == '|') || (s[ii] == ','))) - { - ii ++; - } - *i = ii; - if (j == 0) - return (char*) NULL; - else - return buf; -} - -struct wxResourceBitListStruct -{ - char *word; - long bits; -}; - -static wxResourceBitListStruct wxResourceBitListTable[] = -{ - /* wxListBox */ - { "wxSINGLE", wxLB_SINGLE }, - { "wxMULTIPLE", wxLB_MULTIPLE }, - { "wxEXTENDED", wxLB_EXTENDED }, - { "wxLB_SINGLE", wxLB_SINGLE }, - { "wxLB_MULTIPLE", wxLB_MULTIPLE }, - { "wxLB_EXTENDED", wxLB_EXTENDED }, - { "wxLB_NEEDED_SB", wxLB_NEEDED_SB }, - { "wxLB_ALWAYS_SB", wxLB_ALWAYS_SB }, - { "wxLB_SORT", wxLB_SORT }, - { "wxLB_OWNERDRAW", wxLB_OWNERDRAW }, - { "wxLB_HSCROLL", wxLB_HSCROLL }, - - /* wxComboxBox */ - { "wxCB_SIMPLE", wxCB_SIMPLE }, - { "wxCB_DROPDOWN", wxCB_DROPDOWN }, - { "wxCB_READONLY", wxCB_READONLY }, - { "wxCB_SORT", wxCB_SORT }, - - /* wxGauge */ - { "wxGA_PROGRESSBAR", wxGA_PROGRESSBAR }, - { "wxGA_HORIZONTAL", wxGA_HORIZONTAL }, - { "wxGA_VERTICAL", wxGA_VERTICAL }, - - /* wxTextCtrl */ - { "wxPASSWORD", wxPASSWORD}, - { "wxPROCESS_ENTER", wxPROCESS_ENTER}, - { "wxTE_PASSWORD", wxTE_PASSWORD}, - { "wxTE_READONLY", wxTE_READONLY}, - { "wxTE_PROCESS_ENTER", wxTE_PROCESS_ENTER}, - { "wxTE_MULTILINE", wxTE_MULTILINE}, - - /* wxRadioBox/wxRadioButton */ - { "wxRB_GROUP", wxRB_GROUP }, - { "wxRA_SPECIFY_COLS", wxRA_SPECIFY_COLS }, - { "wxRA_SPECIFY_ROWS", wxRA_SPECIFY_ROWS }, - { "wxRA_HORIZONTAL", wxRA_HORIZONTAL }, - { "wxRA_VERTICAL", wxRA_VERTICAL }, - - /* wxSlider */ - { "wxSL_HORIZONTAL", wxSL_HORIZONTAL }, - { "wxSL_VERTICAL", wxSL_VERTICAL }, - { "wxSL_AUTOTICKS", wxSL_AUTOTICKS }, - { "wxSL_LABELS", wxSL_LABELS }, - { "wxSL_LEFT", wxSL_LEFT }, - { "wxSL_TOP", wxSL_TOP }, - { "wxSL_RIGHT", wxSL_RIGHT }, - { "wxSL_BOTTOM", wxSL_BOTTOM }, - { "wxSL_BOTH", wxSL_BOTH }, - { "wxSL_SELRANGE", wxSL_SELRANGE }, - - /* wxScrollBar */ - { "wxSB_HORIZONTAL", wxSB_HORIZONTAL }, - { "wxSB_VERTICAL", wxSB_VERTICAL }, - - /* wxButton */ - { "wxBU_AUTODRAW", wxBU_AUTODRAW }, - { "wxBU_NOAUTODRAW", wxBU_NOAUTODRAW }, - - /* wxTreeCtrl */ - { "wxTR_HAS_BUTTONS", wxTR_HAS_BUTTONS }, - { "wxTR_EDIT_LABELS", wxTR_EDIT_LABELS }, - { "wxTR_LINES_AT_ROOT", wxTR_LINES_AT_ROOT }, - - /* wxListCtrl */ - { "wxLC_ICON", wxLC_ICON }, - { "wxLC_SMALL_ICON", wxLC_SMALL_ICON }, - { "wxLC_LIST", wxLC_LIST }, - { "wxLC_REPORT", wxLC_REPORT }, - { "wxLC_ALIGN_TOP", wxLC_ALIGN_TOP }, - { "wxLC_ALIGN_LEFT", wxLC_ALIGN_LEFT }, - { "wxLC_AUTOARRANGE", wxLC_AUTOARRANGE }, - { "wxLC_USER_TEXT", wxLC_USER_TEXT }, - { "wxLC_EDIT_LABELS", wxLC_EDIT_LABELS }, - { "wxLC_NO_HEADER", wxLC_NO_HEADER }, - { "wxLC_NO_SORT_HEADER", wxLC_NO_SORT_HEADER }, - { "wxLC_SINGLE_SEL", wxLC_SINGLE_SEL }, - { "wxLC_SORT_ASCENDING", wxLC_SORT_ASCENDING }, - { "wxLC_SORT_DESCENDING", wxLC_SORT_DESCENDING }, - - /* wxSpinButton */ - { "wxSP_VERTICAL", wxSP_VERTICAL}, - { "wxSP_HORIZONTAL", wxSP_HORIZONTAL}, - { "wxSP_ARROW_KEYS", wxSP_ARROW_KEYS}, - { "wxSP_WRAP", wxSP_WRAP}, - - /* wxSplitterWnd */ - { "wxSP_NOBORDER", wxSP_NOBORDER}, - { "wxSP_3D", wxSP_3D}, - { "wxSP_BORDER", wxSP_BORDER}, - - /* wxTabCtrl */ - { "wxTC_MULTILINE", wxTC_MULTILINE}, - { "wxTC_RIGHTJUSTIFY", wxTC_RIGHTJUSTIFY}, - { "wxTC_FIXEDWIDTH", wxTC_FIXEDWIDTH}, - { "wxTC_OWNERDRAW", wxTC_OWNERDRAW}, - - /* wxStatusBar95 */ - { "wxST_SIZEGRIP", wxST_SIZEGRIP}, - - /* wxControl */ - { "wxFIXED_LENGTH", wxFIXED_LENGTH}, - { "wxALIGN_LEFT", wxALIGN_LEFT}, - { "wxALIGN_CENTER", wxALIGN_CENTER}, - { "wxALIGN_CENTRE", wxALIGN_CENTRE}, - { "wxALIGN_RIGHT", wxALIGN_RIGHT}, - { "wxCOLOURED", wxCOLOURED}, - - /* wxToolBar */ - { "wxTB_3DBUTTONS", wxTB_3DBUTTONS}, - { "wxTB_HORIZONTAL", wxTB_HORIZONTAL}, - { "wxTB_VERTICAL", wxTB_VERTICAL}, - { "wxTB_FLAT", wxTB_FLAT}, - - /* Generic */ - { "wxVSCROLL", wxVSCROLL }, - { "wxHSCROLL", wxHSCROLL }, - { "wxCAPTION", wxCAPTION }, - { "wxSTAY_ON_TOP", wxSTAY_ON_TOP}, - { "wxICONIZE", wxICONIZE}, - { "wxMINIMIZE", wxICONIZE}, - { "wxMAXIMIZE", wxMAXIMIZE}, - { "wxSDI", 0}, - { "wxMDI_PARENT", 0}, - { "wxMDI_CHILD", 0}, - { "wxTHICK_FRAME", wxTHICK_FRAME}, - { "wxRESIZE_BORDER", wxRESIZE_BORDER}, - { "wxSYSTEM_MENU", wxSYSTEM_MENU}, - { "wxMINIMIZE_BOX", wxMINIMIZE_BOX}, - { "wxMAXIMIZE_BOX", wxMAXIMIZE_BOX}, - { "wxRESIZE_BOX", wxRESIZE_BOX}, - { "wxDEFAULT_FRAME_STYLE", wxDEFAULT_FRAME_STYLE}, - { "wxDEFAULT_FRAME", wxDEFAULT_FRAME_STYLE}, - { "wxDEFAULT_DIALOG_STYLE", wxDEFAULT_DIALOG_STYLE}, - { "wxBORDER", wxBORDER}, - { "wxRETAINED", wxRETAINED}, - { "wxNATIVE_IMPL", 0}, - { "wxEXTENDED_IMPL", 0}, - { "wxBACKINGSTORE", wxBACKINGSTORE}, -// { "wxFLAT", wxFLAT}, -// { "wxMOTIF_RESIZE", wxMOTIF_RESIZE}, - { "wxFIXED_LENGTH", 0}, - { "wxDOUBLE_BORDER", wxDOUBLE_BORDER}, - { "wxSUNKEN_BORDER", wxSUNKEN_BORDER}, - { "wxRAISED_BORDER", wxRAISED_BORDER}, - { "wxSIMPLE_BORDER", wxSIMPLE_BORDER}, - { "wxSTATIC_BORDER", wxSTATIC_BORDER}, - { "wxTRANSPARENT_WINDOW", wxTRANSPARENT_WINDOW}, - { "wxNO_BORDER", wxNO_BORDER}, - { "wxCLIP_CHILDREN", wxCLIP_CHILDREN}, - - { "wxTINY_CAPTION_HORIZ", wxTINY_CAPTION_HORIZ}, - { "wxTINY_CAPTION_VERT", wxTINY_CAPTION_VERT}, - - // Text font families - { "wxDEFAULT", wxDEFAULT}, - { "wxDECORATIVE", wxDECORATIVE}, - { "wxROMAN", wxROMAN}, - { "wxSCRIPT", wxSCRIPT}, - { "wxSWISS", wxSWISS}, - { "wxMODERN", wxMODERN}, - { "wxTELETYPE", wxTELETYPE}, - { "wxVARIABLE", wxVARIABLE}, - { "wxFIXED", wxFIXED}, - { "wxNORMAL", wxNORMAL}, - { "wxLIGHT", wxLIGHT}, - { "wxBOLD", wxBOLD}, - { "wxITALIC", wxITALIC}, - { "wxSLANT", wxSLANT}, - { "wxSOLID", wxSOLID}, - { "wxDOT", wxDOT}, - { "wxLONG_DASH", wxLONG_DASH}, - { "wxSHORT_DASH", wxSHORT_DASH}, - { "wxDOT_DASH", wxDOT_DASH}, - { "wxUSER_DASH", wxUSER_DASH}, - { "wxTRANSPARENT", wxTRANSPARENT}, - { "wxSTIPPLE", wxSTIPPLE}, - { "wxBDIAGONAL_HATCH", wxBDIAGONAL_HATCH}, - { "wxCROSSDIAG_HATCH", wxCROSSDIAG_HATCH}, - { "wxFDIAGONAL_HATCH", wxFDIAGONAL_HATCH}, - { "wxCROSS_HATCH", wxCROSS_HATCH}, - { "wxHORIZONTAL_HATCH", wxHORIZONTAL_HATCH}, - { "wxVERTICAL_HATCH", wxVERTICAL_HATCH}, - { "wxJOIN_BEVEL", wxJOIN_BEVEL}, - { "wxJOIN_MITER", wxJOIN_MITER}, - { "wxJOIN_ROUND", wxJOIN_ROUND}, - { "wxCAP_ROUND", wxCAP_ROUND}, - { "wxCAP_PROJECTING", wxCAP_PROJECTING}, - { "wxCAP_BUTT", wxCAP_BUTT}, - - // Logical ops - { "wxCLEAR", wxCLEAR}, - { "wxXOR", wxXOR}, - { "wxINVERT", wxINVERT}, - { "wxOR_REVERSE", wxOR_REVERSE}, - { "wxAND_REVERSE", wxAND_REVERSE}, - { "wxCOPY", wxCOPY}, - { "wxAND", wxAND}, - { "wxAND_INVERT", wxAND_INVERT}, - { "wxNO_OP", wxNO_OP}, - { "wxNOR", wxNOR}, - { "wxEQUIV", wxEQUIV}, - { "wxSRC_INVERT", wxSRC_INVERT}, - { "wxOR_INVERT", wxOR_INVERT}, - { "wxNAND", wxNAND}, - { "wxOR", wxOR}, - { "wxSET", wxSET}, - - { "wxFLOOD_SURFACE", wxFLOOD_SURFACE}, - { "wxFLOOD_BORDER", wxFLOOD_BORDER}, - { "wxODDEVEN_RULE", wxODDEVEN_RULE}, - { "wxWINDING_RULE", wxWINDING_RULE}, - { "wxHORIZONTAL", wxHORIZONTAL}, - { "wxVERTICAL", wxVERTICAL}, - { "wxBOTH", wxBOTH}, - { "wxCENTER_FRAME", wxCENTER_FRAME}, - { "wxOK", wxOK}, - { "wxYES_NO", wxYES_NO}, - { "wxCANCEL", wxCANCEL}, - { "wxYES", wxYES}, - { "wxNO", wxNO}, - { "wxICON_EXCLAMATION", wxICON_EXCLAMATION}, - { "wxICON_HAND", wxICON_HAND}, - { "wxICON_QUESTION", wxICON_QUESTION}, - { "wxICON_INFORMATION", wxICON_INFORMATION}, - { "wxICON_STOP", wxICON_STOP}, - { "wxICON_ASTERISK", wxICON_ASTERISK}, - { "wxICON_MASK", wxICON_MASK}, - { "wxCENTRE", wxCENTRE}, - { "wxCENTER", wxCENTRE}, - { "wxUSER_COLOURS", wxUSER_COLOURS}, - { "wxVERTICAL_LABEL", 0}, - { "wxHORIZONTAL_LABEL", 0}, - - // Bitmap types (not strictly styles) - { "wxBITMAP_TYPE_XPM", wxBITMAP_TYPE_XPM}, - { "wxBITMAP_TYPE_XBM", wxBITMAP_TYPE_XBM}, - { "wxBITMAP_TYPE_BMP", wxBITMAP_TYPE_BMP}, - { "wxBITMAP_TYPE_RESOURCE", wxBITMAP_TYPE_BMP_RESOURCE}, - { "wxBITMAP_TYPE_BMP_RESOURCE", wxBITMAP_TYPE_BMP_RESOURCE}, - { "wxBITMAP_TYPE_GIF", wxBITMAP_TYPE_GIF}, - { "wxBITMAP_TYPE_TIF", wxBITMAP_TYPE_TIF}, - { "wxBITMAP_TYPE_ICO", wxBITMAP_TYPE_ICO}, - { "wxBITMAP_TYPE_ICO_RESOURCE", wxBITMAP_TYPE_ICO_RESOURCE}, - { "wxBITMAP_TYPE_CUR", wxBITMAP_TYPE_CUR}, - { "wxBITMAP_TYPE_CUR_RESOURCE", wxBITMAP_TYPE_CUR_RESOURCE}, - { "wxBITMAP_TYPE_XBM_DATA", wxBITMAP_TYPE_XBM_DATA}, - { "wxBITMAP_TYPE_XPM_DATA", wxBITMAP_TYPE_XPM_DATA}, - { "wxBITMAP_TYPE_ANY", wxBITMAP_TYPE_ANY} -}; - -static int wxResourceBitListCount = (sizeof(wxResourceBitListTable)/sizeof(wxResourceBitListStruct)); - -long wxParseWindowStyle(const wxString& bitListString) -{ - int i = 0; - char *word; - long bitList = 0; - while ((word = wxResourceParseWord((char*) (const char*) bitListString, &i))) - { - bool found = FALSE; - int j; - for (j = 0; j < wxResourceBitListCount; j++) - if (strcmp(wxResourceBitListTable[j].word, word) == 0) - { - bitList |= wxResourceBitListTable[j].bits; - found = TRUE; - break; - } - if (!found) - { - wxLogWarning(_("Unrecognized style %s whilst parsing resource."), word); - return 0; - } - } - return bitList; -} - -/* - * Load a bitmap from a wxWindows resource, choosing an optimum - * depth and appropriate type. - */ - -wxBitmap wxResourceCreateBitmap(const wxString& resource, wxResourceTable *table) -{ - if (!table) - table = wxDefaultResourceTable; - - wxItemResource *item = table->FindResource(resource); - if (item) - { - if ((item->GetType() == "") || (item->GetType() != "wxBitmap")) - { - wxLogWarning(_("%s not a bitmap resource specification."), (const char*) resource); - return wxNullBitmap; - } - int thisDepth = wxDisplayDepth(); - long thisNoColours = (long)pow(2.0, (double)thisDepth); - - wxItemResource *optResource = (wxItemResource *) NULL; - - // Try to find optimum bitmap for this platform/colour depth - wxNode *node = item->GetChildren().First(); - while (node) - { - wxItemResource *child = (wxItemResource *)node->Data(); - int platform = (int)child->GetValue2(); - int noColours = (int)child->GetValue3(); -/* - char *name = child->GetName(); - int bitmapType = (int)child->GetValue1(); - int xRes = child->GetWidth(); - int yRes = child->GetHeight(); -*/ - - switch (platform) - { - case RESOURCE_PLATFORM_ANY: - { - if (!optResource && ((noColours == 0) || (noColours <= thisNoColours))) - optResource = child; - else - { - // Maximise the number of colours. - // If noColours is zero (unspecified), then assume this - // is the right one. - if ((noColours == 0) || ((noColours <= thisNoColours) && (noColours > optResource->GetValue3()))) - optResource = child; - } - break; - } -#ifdef __WXMSW__ - case RESOURCE_PLATFORM_WINDOWS: - { - if (!optResource && ((noColours == 0) || (noColours <= thisNoColours))) - optResource = child; - else - { - // Maximise the number of colours - if ((noColours > 0) || ((noColours <= thisNoColours) && (noColours > optResource->GetValue3()))) - optResource = child; - } - break; - } -#endif -#ifdef __WXGTK__ - case RESOURCE_PLATFORM_X: - { - if (!optResource && ((noColours == 0) || (noColours <= thisNoColours))) - optResource = child; - else - { - // Maximise the number of colours - if ((noColours == 0) || ((noColours <= thisNoColours) && (noColours > optResource->GetValue3()))) - optResource = child; - } - break; - } -#endif -#ifdef wx_max - case RESOURCE_PLATFORM_MAC: - { - if (!optResource && ((noColours == 0) || (noColours <= thisNoColours))) - optResource = child; - else - { - // Maximise the number of colours - if ((noColours == 0) || ((noColours <= thisNoColours) && (noColours > optResource->GetValue3()))) - optResource = child; - } - break; - } -#endif - default: - break; - } - node = node->Next(); - } - // If no matching resource, fail. - if (!optResource) - return wxNullBitmap; - - wxString name = optResource->GetName(); - int bitmapType = (int)optResource->GetValue1(); - switch (bitmapType) - { - case wxBITMAP_TYPE_XBM_DATA: - { -#ifdef __WXGTK__ - wxItemResource *item = table->FindResource(name); - if (!item) - { - wxLogWarning(_("Failed to find XBM resource %s.\n" - "Forgot to use wxResourceLoadBitmapData?"), (const char*) name); - return wxNullBitmap; - } - return wxBitmap(item->GetValue1(), (int)item->GetValue2(), (int)item->GetValue3()) ; -#else - wxLogWarning(_("No XBM facility available!")); -#endif - break; - } - case wxBITMAP_TYPE_XPM_DATA: - { -#if (defined(__WXGTK__)) || (defined(__WXMSW__) && wxUSE_XPM_IN_MSW) - wxItemResource *item = table->FindResource(name); - if (!item) - { - wxLogWarning(_("Failed to find XPM resource %s.\n" - "Forgot to use wxResourceLoadBitmapData?"), (const char*) name); - return wxNullBitmap; - } - return wxBitmap(item->GetValue1()); -#else - wxLogWarning(_("No XPM facility available!")); -#endif - break; - } - default: - { - return wxBitmap(name, bitmapType); - break; - } - } - return wxNullBitmap; - } - else - { - wxLogWarning(_("Bitmap resource specification %s not found."), (const char*) resource); - return wxNullBitmap; - } -} - -/* - * Load an icon from a wxWindows resource, choosing an optimum - * depth and appropriate type. - */ - -wxIcon wxResourceCreateIcon(const wxString& resource, wxResourceTable *table) -{ - if (!table) - table = wxDefaultResourceTable; - - wxItemResource *item = table->FindResource(resource); - if (item) - { - if ((item->GetType() == "") || strcmp(item->GetType(), "wxIcon") != 0) - { - wxLogWarning(_("%s not an icon resource specification."), (const char*) resource); - return wxNullIcon; - } - int thisDepth = wxDisplayDepth(); - long thisNoColours = (long)pow(2.0, (double)thisDepth); - - wxItemResource *optResource = (wxItemResource *) NULL; - - // Try to find optimum icon for this platform/colour depth - wxNode *node = item->GetChildren().First(); - while (node) - { - wxItemResource *child = (wxItemResource *)node->Data(); - int platform = (int)child->GetValue2(); - int noColours = (int)child->GetValue3(); -/* - char *name = child->GetName(); - int bitmapType = (int)child->GetValue1(); - int xRes = child->GetWidth(); - int yRes = child->GetHeight(); -*/ - - switch (platform) - { - case RESOURCE_PLATFORM_ANY: - { - if (!optResource && ((noColours == 0) || (noColours <= thisNoColours))) - optResource = child; - else - { - // Maximise the number of colours. - // If noColours is zero (unspecified), then assume this - // is the right one. - if ((noColours == 0) || ((noColours <= thisNoColours) && (noColours > optResource->GetValue3()))) - optResource = child; - } - break; - } -#ifdef __WXMSW__ - case RESOURCE_PLATFORM_WINDOWS: - { - if (!optResource && ((noColours == 0) || (noColours <= thisNoColours))) - optResource = child; - else - { - // Maximise the number of colours - if ((noColours > 0) || ((noColours <= thisNoColours) && (noColours > optResource->GetValue3()))) - optResource = child; - } - break; - } -#endif -#ifdef __WXGTK__ - case RESOURCE_PLATFORM_X: - { - if (!optResource && ((noColours == 0) || (noColours <= thisNoColours))) - optResource = child; - else - { - // Maximise the number of colours - if ((noColours == 0) || ((noColours <= thisNoColours) && (noColours > optResource->GetValue3()))) - optResource = child; - } - break; - } -#endif -#ifdef wx_max - case RESOURCE_PLATFORM_MAC: - { - if (!optResource && ((noColours == 0) || (noColours <= thisNoColours))) - optResource = child; - else - { - // Maximise the number of colours - if ((noColours == 0) || ((noColours <= thisNoColours) && (noColours > optResource->GetValue3()))) - optResource = child; - } - break; - } -#endif - default: - break; - } - node = node->Next(); - } - // If no matching resource, fail. - if (!optResource) - return wxNullIcon; - - wxString name = optResource->GetName(); - int bitmapType = (int)optResource->GetValue1(); - switch (bitmapType) - { - case wxBITMAP_TYPE_XBM_DATA: - { -#ifdef __WXGTK__ - wxItemResource *item = table->FindResource(name); - if (!item) - { - wxLogWarning(_("Failed to find XBM resource %s.\n" - "Forgot to use wxResourceLoadIconData?"), (const char*) name); - return wxNullIcon; - } - return wxIcon((const char **)item->GetValue1(), (int)item->GetValue2(), (int)item->GetValue3()); -#else - wxLogWarning(_("No XBM facility available!")); -#endif - break; - } - case wxBITMAP_TYPE_XPM_DATA: - { - // *** XPM ICON NOT YET IMPLEMENTED IN WXWINDOWS *** -/* -#if (defined(__WXGTK__)) || (defined(__WXMSW__) && wxUSE_XPM_IN_MSW) - wxItemResource *item = table->FindResource(name); - if (!item) - { - char buf[400]; - sprintf(buf, _("Failed to find XPM resource %s.\nForgot to use wxResourceLoadIconData?"), name); - wxLogWarning(buf); - return NULL; - } - return wxIcon((char **)item->GetValue1()); -#else - wxLogWarning(_("No XPM facility available!")); -#endif -*/ - wxLogWarning(_("No XPM icon facility available!")); - break; - } - default: - { -#ifdef __WXGTK__ - wxLogWarning(_("Icon resource specification %s not found."), (const char*) resource); -#else - return wxIcon(name, bitmapType); -#endif - break; - } - } - return wxNullIcon; - } - else - { - wxLogWarning(_("Icon resource specification %s not found."), (const char*) resource); - return wxNullIcon; - } -} - -wxMenu *wxResourceCreateMenu(wxItemResource *item) -{ - wxMenu *menu = new wxMenu; - wxNode *node = item->GetChildren().First(); - while (node) - { - wxItemResource *child = (wxItemResource *)node->Data(); - if ((child->GetType() != "") && (child->GetType() == "wxMenuSeparator")) - menu->AppendSeparator(); - else if (child->GetChildren().Number() > 0) - { - wxMenu *subMenu = wxResourceCreateMenu(child); - if (subMenu) - menu->Append((int)child->GetValue1(), child->GetTitle(), subMenu, child->GetValue4()); - } - else - { - menu->Append((int)child->GetValue1(), child->GetTitle(), child->GetValue4(), (child->GetValue2() != 0)); - } - node = node->Next(); - } - return menu; -} - -wxMenuBar *wxResourceCreateMenuBar(const wxString& resource, wxResourceTable *table, wxMenuBar *menuBar) -{ - if (!table) - table = wxDefaultResourceTable; - - wxItemResource *menuResource = table->FindResource(resource); - if (menuResource && (menuResource->GetType() != "") && (menuResource->GetType() == "wxMenu")) - { - if (!menuBar) - menuBar = new wxMenuBar; - wxNode *node = menuResource->GetChildren().First(); - while (node) - { - wxItemResource *child = (wxItemResource *)node->Data(); - wxMenu *menu = wxResourceCreateMenu(child); - if (menu) - menuBar->Append(menu, child->GetTitle()); - node = node->Next(); - } - return menuBar; - } - return (wxMenuBar *) NULL; -} - -wxMenu *wxResourceCreateMenu(const wxString& resource, wxResourceTable *table) -{ - if (!table) - table = wxDefaultResourceTable; - - wxItemResource *menuResource = table->FindResource(resource); - if (menuResource && (menuResource->GetType() != "") && (menuResource->GetType() == "wxMenu")) -// if (menuResource && (menuResource->GetType() == wxTYPE_MENU)) - return wxResourceCreateMenu(menuResource); - return (wxMenu *) NULL; -} - -// Global equivalents (so don't have to refer to default table explicitly) -bool wxResourceParseData(const wxString& resource, wxResourceTable *table) -{ - if (!table) - table = wxDefaultResourceTable; - - return table->ParseResourceData(resource); -} - -bool wxResourceParseFile(const wxString& filename, wxResourceTable *table) -{ - if (!table) - table = wxDefaultResourceTable; - - return table->ParseResourceFile(filename); -} - -// Register XBM/XPM data -bool wxResourceRegisterBitmapData(const wxString& name, char bits[], int width, int height, wxResourceTable *table) -{ - if (!table) - table = wxDefaultResourceTable; - - return table->RegisterResourceBitmapData(name, bits, width, height); -} - -bool wxResourceRegisterBitmapData(const wxString& name, char **data, wxResourceTable *table) -{ - if (!table) - table = wxDefaultResourceTable; - - return table->RegisterResourceBitmapData(name, data); -} - -void wxResourceClear(wxResourceTable *table) -{ - if (!table) - table = wxDefaultResourceTable; - - table->ClearTable(); -} - -/* - * Identifiers - */ - -bool wxResourceAddIdentifier(const wxString& name, int value, wxResourceTable *table) -{ - if (!table) - table = wxDefaultResourceTable; - - table->identifiers.Put(name, (wxObject *)value); - return TRUE; -} - -int wxResourceGetIdentifier(const wxString& name, wxResourceTable *table) -{ - if (!table) - table = wxDefaultResourceTable; - - return (int)table->identifiers.Get(name); -} - -/* - * Parse #include file for #defines (only) - */ - -bool wxResourceParseIncludeFile(const wxString& f, wxResourceTable *table) -{ - if (!table) - table = wxDefaultResourceTable; - - FILE *fd = fopen(f, "r"); - if (!fd) - { - return FALSE; - } - while (wxGetResourceToken(fd)) - { - if (strcmp(wxResourceBuffer, "#define") == 0) - { - wxGetResourceToken(fd); - char *name = copystring(wxResourceBuffer); - wxGetResourceToken(fd); - char *value = copystring(wxResourceBuffer); - if (isdigit(value[0])) - { - int val = (int)atol(value); - wxResourceAddIdentifier(name, val, table); - } - delete[] name; - delete[] value; - } - } - fclose(fd); - return TRUE; -} - -/* - * Reading strings as if they were .wxr files - */ - -static int getc_string(char *s) -{ - int ch = s[wxResourceStringPtr]; - if (ch == 0) - return EOF; - else - { - wxResourceStringPtr ++; - return ch; - } -} - -static int ungetc_string() -{ - wxResourceStringPtr --; - return 0; -} - -bool wxEatWhiteSpaceString(char *s) -{ - int ch = getc_string(s); - if (ch == EOF) - return TRUE; - - if ((ch != ' ') && (ch != '/') && (ch != ' ') && (ch != 10) && (ch != 13) && (ch != 9)) - { - ungetc_string(); - return TRUE; - } - - // Eat whitespace - while (ch == ' ' || ch == 10 || ch == 13 || ch == 9) - ch = getc_string(s); - // Check for comment - if (ch == '/') - { - ch = getc_string(s); - if (ch == '*') - { - bool finished = FALSE; - while (!finished) - { - ch = getc_string(s); - if (ch == EOF) - return FALSE; - if (ch == '*') - { - int newCh = getc_string(s); - if (newCh == '/') - finished = TRUE; - else - { - ungetc_string(); - } - } - } - } - else // False alarm - return FALSE; - } - else if (ch != EOF) - ungetc_string(); - return wxEatWhiteSpaceString(s); -} - -bool wxGetResourceTokenString(char *s) -{ - if (!wxResourceBuffer) - wxReallocateResourceBuffer(); - wxResourceBuffer[0] = 0; - wxEatWhiteSpaceString(s); - - int ch = getc_string(s); - if (ch == '"') - { - // Get string - wxResourceBufferCount = 0; - ch = getc_string(s); - while (ch != '"') - { - int actualCh = ch; - if (ch == EOF) - { - wxResourceBuffer[wxResourceBufferCount] = 0; - return FALSE; - } - // Escaped characters - else if (ch == '\\') - { - int newCh = getc_string(s); - if (newCh == '"') - actualCh = '"'; - else if (newCh == 10) - actualCh = 10; - else - { - ungetc_string(); - } - } - - if (wxResourceBufferCount >= wxResourceBufferSize-1) - wxReallocateResourceBuffer(); - wxResourceBuffer[wxResourceBufferCount] = (char)actualCh; - wxResourceBufferCount ++; - ch = getc_string(s); - } - wxResourceBuffer[wxResourceBufferCount] = 0; - } - else - { - wxResourceBufferCount = 0; - // Any other token - while (ch != ' ' && ch != EOF && ch != ' ' && ch != 13 && ch != 9 && ch != 10) - { - if (wxResourceBufferCount >= wxResourceBufferSize-1) - wxReallocateResourceBuffer(); - wxResourceBuffer[wxResourceBufferCount] = (char)ch; - wxResourceBufferCount ++; - - ch = getc_string(s); - } - wxResourceBuffer[wxResourceBufferCount] = 0; - if (ch == EOF) - return FALSE; - } - return TRUE; -} - -/* - * Files are in form: - static char *name = "...."; - with possible comments. - */ - -bool wxResourceReadOneResourceString(char *s, wxExprDatabase& db, bool *eof, wxResourceTable *table) -{ - if (!table) - table = wxDefaultResourceTable; - - // static or #define - if (!wxGetResourceTokenString(s)) - { - *eof = TRUE; - return FALSE; - } - - if (strcmp(wxResourceBuffer, "#define") == 0) - { - wxGetResourceTokenString(s); - char *name = copystring(wxResourceBuffer); - wxGetResourceTokenString(s); - char *value = copystring(wxResourceBuffer); - if (isalpha(value[0])) - { - int val = (int)atol(value); - wxResourceAddIdentifier(name, val, table); - } - else - { - wxLogWarning(_("#define %s must be an integer."), name); - delete[] name; - delete[] value; - return FALSE; - } - delete[] name; - delete[] value; - - return TRUE; - } -/* - else if (strcmp(wxResourceBuffer, "#include") == 0) - { - wxGetResourceTokenString(s); - char *name = copystring(wxResourceBuffer); - char *actualName = name; - if (name[0] == '"') - actualName = name + 1; - int len = strlen(name); - if ((len > 0) && (name[len-1] == '"')) - name[len-1] = 0; - if (!wxResourceParseIncludeFile(actualName, table)) - { - char buf[400]; - sprintf(buf, _("Could not find resource include file %s."), actualName); - wxLogWarning(buf); - } - delete[] name; - return TRUE; - } -*/ - else if (strcmp(wxResourceBuffer, "static") != 0) - { - char buf[300]; - strcpy(buf, _("Found ")); - strncat(buf, wxResourceBuffer, 30); - strcat(buf, _(", expected static, #include or #define\nwhilst parsing resource.")); - wxLogWarning(buf); - return FALSE; - } - - // char - if (!wxGetResourceTokenString(s)) - { - wxLogWarning(_("Unexpected end of file whilst parsing resource.")); - *eof = TRUE; - return FALSE; - } - - if (strcmp(wxResourceBuffer, "char") != 0) - { - wxLogWarning(_("Expected 'char' whilst parsing resource.")); - return FALSE; - } - - // *name - if (!wxGetResourceTokenString(s)) - { - wxLogWarning(_("Unexpected end of file whilst parsing resource.")); - *eof = TRUE; - return FALSE; - } - - if (wxResourceBuffer[0] != '*') - { - wxLogWarning(_("Expected '*' whilst parsing resource.")); - return FALSE; - } - char nameBuf[100]; - strncpy(nameBuf, wxResourceBuffer+1, 99); - - // = - if (!wxGetResourceTokenString(s)) - { - wxLogWarning(_("Unexpected end of file whilst parsing resource.")); - *eof = TRUE; - return FALSE; - } - - if (strcmp(wxResourceBuffer, "=") != 0) - { - wxLogWarning(_("Expected '=' whilst parsing resource.")); - return FALSE; - } - - // String - if (!wxGetResourceTokenString(s)) - { - wxLogWarning(_("Unexpected end of file whilst parsing resource.")); - *eof = TRUE; - return FALSE; - } - else - { - if (!db.ReadPrologFromString(wxResourceBuffer)) - { - wxLogWarning(_("%s: ill-formed resource file syntax."), nameBuf); - return FALSE; - } - } - // Semicolon - if (!wxGetResourceTokenString(s)) - { - *eof = TRUE; - } - return TRUE; -} - -bool wxResourceParseString(char *s, wxResourceTable *table) -{ - if (!table) - table = wxDefaultResourceTable; - - if (!s) - return FALSE; - - // Turn backslashes into spaces - if (s) - { - int len = strlen(s); - int i; - for (i = 0; i < len; i++) - if (s[i] == 92 && s[i+1] == 13) - { - s[i] = ' '; - s[i+1] = ' '; - } - } - - wxExprDatabase db; - wxResourceStringPtr = 0; - - bool eof = FALSE; - while (wxResourceReadOneResourceString(s, db, &eof, table) && !eof) - { - // Loop - } - return wxResourceInterpretResources(*table, db); -} - -/* - * resource loading facility - */ - -bool wxWindow::LoadFromResource(wxWindow *parent, const wxString& resourceName, const wxResourceTable *table) -{ - if (!table) - table = wxDefaultResourceTable; - - wxItemResource *resource = table->FindResource((const char *)resourceName); -// if (!resource || (resource->GetType() != wxTYPE_DIALOG_BOX)) - if (!resource || (resource->GetType() == "") || - ! ((resource->GetType() == "wxDialog") || (resource->GetType() == "wxPanel"))) - return FALSE; - - wxString title(resource->GetTitle()); - long theWindowStyle = resource->GetStyle(); - bool isModal = (resource->GetValue1() != 0); - int x = resource->GetX(); - int y = resource->GetY(); - int width = resource->GetWidth(); - int height = resource->GetHeight(); - wxString name = resource->GetName(); - - if (IsKindOf(CLASSINFO(wxDialog))) - { - wxDialog *dialogBox = (wxDialog *)this; - long modalStyle = isModal ? wxDIALOG_MODAL : 0; - if (!dialogBox->Create(parent, -1, title, wxPoint(x, y), wxSize(width, height), theWindowStyle|modalStyle, name)) - return FALSE; - - // Only reset the client size if we know we're not going to do it again below. - if ((resource->GetResourceStyle() & wxRESOURCE_DIALOG_UNITS) == 0) - dialogBox->SetClientSize(width, height); - } - else if (IsKindOf(CLASSINFO(wxPanel))) - { - wxPanel* panel = (wxPanel *)this; - if (!panel->Create(parent, -1, wxPoint(x, y), wxSize(width, height), theWindowStyle, name)) - return FALSE; - } - else - { - if (!this->Create(parent, -1, wxPoint(x, y), wxSize(width, height), theWindowStyle, name)) - return FALSE; - } - - if ((resource->GetResourceStyle() & wxRESOURCE_USE_DEFAULTS) != 0) - { - // No need to do this since it's done in wxPanel or wxDialog constructor. - // SetFont(wxSystemSettings::GetSystemFont(wxSYS_DEFAULT_GUI_FONT)); - } - else - { - if (resource->GetFont().Ok()) - SetFont(resource->GetFont()); - if (resource->GetBackgroundColour().Ok()) - SetBackgroundColour(resource->GetBackgroundColour()); - } - - // Should have some kind of font at this point - if (!GetFont().Ok()) - SetFont(wxSystemSettings::GetSystemFont(wxSYS_DEFAULT_GUI_FONT)); - if (!GetBackgroundColour().Ok()) - SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE)); - - // Only when we've created the window and set the font can we set the correct size, - // if based on dialog units. - if ((resource->GetResourceStyle() & wxRESOURCE_DIALOG_UNITS) != 0) - { - wxSize sz = ConvertDialogToPixels(wxSize(width, height)); - SetClientSize(sz.x, sz.y); - - wxPoint pt = ConvertDialogToPixels(wxPoint(x, y)); - Move(pt.x, pt.y); - } - - // Now create children - wxNode *node = resource->GetChildren().First(); - while (node) - { - wxItemResource *childResource = (wxItemResource *)node->Data(); - - (void) CreateItem(childResource, resource, table); - - node = node->Next(); - } - return TRUE; -} - -wxControl *wxWindow::CreateItem(const wxItemResource *resource, const wxItemResource* parentResource, const wxResourceTable *table) -{ - if (!table) - table = wxDefaultResourceTable; - return table->CreateItem((wxWindow *)this, resource, parentResource); -} - -#ifdef _MSC_VER - #pragma warning(default:4706) // assignment within conditional expression -#endif // VC++ - -#endif - // BC++/Win16 - -#endif // wxUSE_WX_RESOURCES diff --git a/src/common/sckaddr.cpp b/src/common/sckaddr.cpp deleted file mode 100644 index e83aa78b2f..0000000000 --- a/src/common/sckaddr.cpp +++ /dev/null @@ -1,419 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: sckaddr.cpp -// Purpose: Network address manager -// Author: Guilhem Lavaux -// Modified by: -// Created: 26/04/97 -// RCS-ID: $Id$ -// Copyright: (c) 1997, 1998 Guilhem Lavaux -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "sckaddr.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#endif - -#include -#include -#include - -#if !defined(__MWERKS__) && !defined(__SALFORDC__) -#include -#endif - -#include "wx/defs.h" -#include "wx/object.h" - -#if defined(__WXMAC__) -#include "/wx/mac/macsock.h" -#endif - -#if defined(__WINDOWS__) -#include -#endif // __WINDOWS__ - -#if defined(__UNIX__) -#ifdef VMS -#include -#include -#else -#include -#include -#include -#include -#endif -#include -#include - -#ifdef __SUN__ -extern "C" -{ - struct hostent *gethostbyname(const char *name); -}; -#endif - -#endif // __UNIX__ - -#include "wx/sckaddr.h" - -#define CHECK_ADDRTYPE(var, type) - -#if !USE_SHARED_LIBRARY -IMPLEMENT_ABSTRACT_CLASS(wxSockAddress, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxIPV4address, wxSockAddress) -#ifdef ENABLE_IPV6 -IMPLEMENT_DYNAMIC_CLASS(wxIPV6address, wxSockAddress) -#endif -#ifdef __UNIX__ -IMPLEMENT_DYNAMIC_CLASS(wxUNIXaddress, wxSockAddress) -#endif -#endif - -wxIPV4address::wxIPV4address() -{ - m_addr = new sockaddr_in; - Clear(); -} - -wxIPV4address::~wxIPV4address() -{ -} - -int wxIPV4address::SockAddrLen() -{ - return sizeof(*m_addr); -} - -int wxIPV4address::GetFamily() -{ - return AF_INET; -} - -void wxIPV4address::Clear() -{ - memset(m_addr, 0, sizeof(*m_addr)); - m_addr->sin_family = AF_INET; - m_addr->sin_addr.s_addr = INADDR_ANY; -} - -/* -const wxSockAddress& wxIPV4address::operator =(const wxSockAddress& addr) -{ - wxIPV4address *ip_addr = (wxIPV4address *)&addr; - CHECK_ADDRTYPE(addr, wxIPV4address); - m_addr = ip_addr->m_addr; - return *this; -} -*/ - -bool wxIPV4address::Hostname(const wxString& name) -{ - struct hostent *theHostent; - struct in_addr *addr; - - if (name.IsNull()) - return FALSE; - - if (!name.IsNumber()) { - if ((theHostent = gethostbyname(name.GetData())) == 0) { - return FALSE; - } - } else { -#ifdef __WXMAC__ - long len_addr = inet_addr(name.GetData()).s_addr ; -#else - long len_addr = inet_addr(name.GetData()); -#endif - if (len_addr == -1) - return FALSE; - m_addr->sin_addr.s_addr = len_addr; - return TRUE; - } - - addr = (struct in_addr *) *(theHostent->h_addr_list); - - m_addr->sin_addr.s_addr = addr[0].s_addr; - return TRUE; -} - -bool wxIPV4address::Hostname(unsigned long addr) -{ - m_addr->sin_addr.s_addr = htonl(addr); - return TRUE; -} - -bool wxIPV4address::Service(const wxString& name) -{ - struct servent *theServent; - - if (name.IsNull()) - return FALSE; - - if (!name.IsNumber()) { - if ((theServent = getservbyname(name, "tcp")) == 0) - return FALSE; - } else { - if ((theServent = getservbyport(atoi(name), "tcp")) == 0) { - m_addr->sin_port = htons(atoi(name)); - return TRUE; - } - } - - m_addr->sin_port = theServent->s_port; - return TRUE; -} - -bool wxIPV4address::Service(unsigned short port) -{ - m_addr->sin_port = htons(port); - return TRUE; -} - -bool wxIPV4address::LocalHost() -{ - static char buf[256]; - - if (gethostname(buf, sizeof(buf)) < 0) - return Hostname("localhost"); - else - return Hostname(buf); -} - -wxString wxIPV4address::Hostname() -{ - struct hostent *h_ent; - - h_ent = gethostbyaddr((char *)&(m_addr->sin_addr), sizeof(m_addr->sin_addr), - GetFamily()); - - if (!h_ent) - return wxString(""); - else - return wxString(h_ent->h_name); -} - -unsigned short wxIPV4address::Service() -{ - return ntohs(m_addr->sin_port); -} - -void wxIPV4address::Build(struct sockaddr *&addr, size_t& len) -{ - addr = (struct sockaddr *)m_addr; - len = sizeof(*m_addr); -} - -void wxIPV4address::Disassemble(struct sockaddr *addr, size_t len) -{ - if (len != sizeof(*m_addr)) - return; - *m_addr = *(struct sockaddr_in *)addr; -} - -#ifdef IPV6_ENABLE - -wxIPV6address::wxIPV6address() -{ - m_addr = new sockaddr_in6; - Clear(); -} - -wxIPV6address::~wxIPV6address() -{ -} - -int wxIPV6address::SockAddrLen() -{ - return sizeof(*m_addr); -} - -int wxIPV6address::GetFamily() -{ - return AF_INET6; -} - -void wxIPV6address::Clear() -{ - memset(m_addr, 0, sizeof(*m_addr)); - m_addr->sin6_family = AF_INET6; - m_addr->sin6_addr.s_addr = INADDR_ANY; -} - -/* -const wxSockAddress& wxIPV6address::operator =(const wxSockAddress& addr) -{ - wxIPV6address *ip_addr = (wxIPV6address *)&addr; - - CHECK_ADDRTYPE(addr, wxIPV6address); - m_addr = ip_addr->m_addr; - return *this; -} -*/ - -bool wxIPV6address::Hostname(const wxString& name) -{ - struct hostent *theHostent; - struct in_addr *addr; - - if (name.IsNull()) - return FALSE; - - if (!name.IsNumber()) { - hostent = gethostbyname2((char*) name, AF_INET6); - if (!theHostent) - return FALSE; - } else { - // Don't how to do - return FALSE; - } - - addr = (struct in6_addr *) *(theHostent->h_addr_list); - - m_addr->sin6_addr.s6_addr = addr[0].s6_addr; - return TRUE; -} - -bool wxIPV6address::Hostname(unsigned char addr[16]) -{ - m_addr->sin6_addr.s6_addr = addr; - return TRUE; -} - -bool wxIPV6address::Service(const char *name) -{ - struct servent *theServent; - - if (!name || !strlen(name)) - return FALSE; - - if (!isdigit(*name)) { - if ((theServent = getservbyname((char*) name, "tcp")) == 0) - return FALSE; - } else { - if ((theServent = getservbyport(atoi(name), "tcp")) == 0) { - m_addr->sin_port = htons(atoi(name)); - return TRUE; - } - } - - m_addr->sin_port = theServent->s_port; - return TRUE; -} - -bool wxIPV6address::Service(unsigned short port) -{ - m_addr->sin_port = htons(port); - return TRUE; -} - -bool wxIPV6address::LocalHost() -{ - static char buf[256]; - - if (gethostname(buf, sizeof(buf)) < 0) - return Hostname("localhost"); - else - return Hostname(buf); -} - -const wxString& wxIPV6address::Hostname() -{ - struct hostent *h_ent; - - h_ent = gethostbyaddr((char *)&(m_addr->sin_addr), sizeof(m_addr->sin_addr), - GetFamily()); - return wxString(h_ent->h_name); -} - -unsigned short wxIPV6address::Service() -{ - return ntohs(m_addr->sin_port); -} - -void wxIPV6address::Build(struct sockaddr& *addr, size_t& len) -{ - len = sizeof(*m_addr); - addr = m_addr; -} - -void wxIPV6address::Disassemble(struct sockaddr& *addr, size_t len) -{ - if (len != sizeof(*m_addr)) - return; - *m_addr = *(struct sockaddr_in6 *)addr; -} - -#endif - -#ifdef __UNIX__ -#include - -wxUNIXaddress::wxUNIXaddress() -{ - m_addr = new sockaddr_un; - Clear(); -} - -wxUNIXaddress::~wxUNIXaddress() -{ -} - -int wxUNIXaddress::SockAddrLen() -{ - return sizeof(*m_addr); -} - -int wxUNIXaddress::GetFamily() -{ - return AF_UNIX; -} - -void wxUNIXaddress::Clear() -{ - memset(m_addr, 0, sizeof(m_addr)); - m_addr->sun_family = AF_UNIX; -} - -/* -const wxSockAddress& wxUNIXaddress::operator =(const wxSockAddress& addr) -{ - wxUNIXaddress *unx_addr = (wxUNIXaddress *)&addr; - CHECK_ADDRTYPE(addr, wxUNIXaddress); - m_addr = unx_addr->m_addr; - return *this; -} -*/ - -void wxUNIXaddress::Filename(const wxString& fname) -{ - sprintf(m_addr->sun_path, "%s", WXSTRINGCAST fname); -} - -wxString wxUNIXaddress::Filename() -{ - return wxString(m_addr->sun_path); -} - -void wxUNIXaddress::Build(struct sockaddr*& addr, size_t& len) -{ - addr = (struct sockaddr *)m_addr; - len = sizeof(*m_addr); -} - -void wxUNIXaddress::Disassemble(struct sockaddr *addr, size_t len) -{ - if (len != sizeof(*m_addr)) - return; - *m_addr = *(struct sockaddr_un *)addr; -} -#endif diff --git a/src/common/sckfile.cpp b/src/common/sckfile.cpp deleted file mode 100644 index 81fe891009..0000000000 --- a/src/common/sckfile.cpp +++ /dev/null @@ -1,46 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: sckfile.cpp -// Purpose: File protocol -// Author: Guilhem Lavaux -// Modified by: -// Created: 20/07/97 -// RCS-ID: $Id$ -// Copyright: (c) 1997, 1998 Guilhem Lavaux -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation "sckfile.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#endif - -#include -#include -#include - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxFileProto, wxProtocol) -IMPLEMENT_PROTOCOL(wxFileProto, "file", NULL, FALSE) -#endif - -wxFileProto::wxFileProto() - : wxProtocol() -{ -} - -wxFileProto::~wxFileProto() -{ -} - -wxInputStream *wxFileProto::GetInputStream(const wxString& path) -{ - return new wxFileInputStream(path); -} diff --git a/src/common/sckipc.cpp b/src/common/sckipc.cpp deleted file mode 100644 index 59511a065b..0000000000 --- a/src/common/sckipc.cpp +++ /dev/null @@ -1,518 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: sckipc.cpp -// Purpose: Interprocess communication implementation (wxSocket version) -// Author: Julian Smart, Guilhem Lavaux -// Modified by: Guilhem Lavaux (big rewrite) May 1997, 1998 -// Created: 1993 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart 1993, Guilhem Lavaux 1997, 1998 -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "sckipc.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#endif - -#include -#include - -#include "wx/socket.h" -#include "wx/sckipc.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxTCPServer, wxServerBase) -IMPLEMENT_DYNAMIC_CLASS(wxTCPClient, wxClientBase) -IMPLEMENT_DYNAMIC_CLASS(wxTCPConnection, wxConnectionBase) -#endif - -// It seems to be already defined somewhere in the Xt includes. -#ifndef __XT__ -// Message codes -enum { - IPC_EXECUTE = 1, - IPC_REQUEST, - IPC_POKE, - IPC_ADVISE_START, - IPC_ADVISE_REQUEST, - IPC_ADVISE, - IPC_ADVISE_STOP, - IPC_REQUEST_REPLY, - IPC_FAIL, - IPC_CONNECT, - IPC_DISCONNECT -}; -#endif - -void Server_OnRequest(wxSocketServer& server, - wxSocketBase::wxRequestEvent evt, - char *cdata); -void Client_OnRequest(wxSocketBase& sock, - wxSocketBase::wxRequestEvent evt, - char *cdata); - -// --------------------------------------------------------------------------- -// wxTCPClient -// --------------------------------------------------------------------------- - -wxTCPClient::wxTCPClient (void) - : wxClientBase() -{ -} - -wxTCPClient::~wxTCPClient (void) -{ -} - -bool wxTCPClient::ValidHost(const wxString& host) -{ - wxIPV4address addr; - - return addr.Hostname(host); -} - -wxConnectionBase *wxTCPClient::MakeConnection (const wxString& host, - const wxString& server_name, - const wxString& topic) -{ - wxIPV4address addr; - wxSocketHandler *hsock = &wxSocketHandler::Master(); - wxSocketClient *client = hsock->CreateClient(); - wxSocketStream *stream = new wxSocketStream(*client); - wxDataInputStream data_is(*stream); - wxDataOutputStream data_os(*stream); - - client->SetNotify(wxSocketBase::REQ_READ | wxSocketBase::REQ_LOST); - addr.Service(server_name); - addr.Hostname(host); - - if (!client->Connect(addr)) { - delete client; - return NULL; - } - client->Notify(FALSE); - - // Send topic name, and enquire whether this has succeeded - unsigned char msg; - - data_os.Write8(IPC_CONNECT); - data_os.WriteString(topic); - - msg = data_is.Read8(); - - // OK! Confirmation. - if (msg == IPC_CONNECT) { - wxTCPConnection *connection = (wxTCPConnection *)OnMakeConnection (); - if (connection) { - if (!connection->IsKindOf(CLASSINFO(wxTCPConnection))) { - delete connection; - return NULL; - } - connection->m_topic = topic; - client->Callback(Client_OnRequest); - client->CallbackData((char *)connection); - client->Notify(TRUE); - return connection; - } else { - delete client; - return NULL; - } - } else { - delete client; - return NULL; - } - return NULL; -} - -wxConnectionBase *wxTCPClient::OnMakeConnection() -{ - return new wxTCPConnection; -} - -// --------------------------------------------------------------------------- -// wxTCPServer -// --------------------------------------------------------------------------- - -wxTCPServer::wxTCPServer (void) - : wxServerBase() -{ -} - -bool wxTCPServer::Create(const wxString& server_name) -{ - wxIPV4address addr; - wxSocketHandler *hsock = &wxSocketHandler::Master(); - wxSocketServer *server; - - addr.Service(server_name); - - // Create a socket listening on specified port - server = hsock->CreateServer(addr); - server->Callback((wxSocketBase::wxSockCbk)Server_OnRequest); - server->SetNotify(wxSocketBase::REQ_ACCEPT); - - server->CallbackData((char *)this); - - return TRUE; -} - -wxTCPServer::~wxTCPServer(void) -{ -} - -wxConnectionBase *wxTCPServer::OnAcceptConnection( const wxString& WXUNUSED(topic) ) -{ - return new wxTCPConnection(); -} - -// --------------------------------------------------------------------------- -// wxTCPConnection -// --------------------------------------------------------------------------- - -wxTCPConnection::wxTCPConnection (void) - : wxConnectionBase(), - m_sock(NULL), m_sockstrm(NULL), m_codeci(NULL), m_codeco(NULL) -{ -} - -wxTCPConnection::wxTCPConnection(char *buffer, int size) -{ -} - -wxTCPConnection::~wxTCPConnection (void) -{ - wxDELETE(m_sock); - wxDELETE(m_codeci); - wxDELETE(m_codeco); - wxDELETE(m_sockstrm); -} - -void wxTCPConnection::Compress(bool WXUNUSED(on)) -{ - // Use wxLZWStream -} - -// Calls that CLIENT can make. -bool wxTCPConnection::Disconnect (void) -{ - // Send the the disconnect message to the peer. - m_codeco->Write8(IPC_DISCONNECT); - m_sock->Close(); - - return TRUE; -} - -bool wxTCPConnection::Execute (char *data, int size, wxIPCFormat format) -{ - if (!m_sock->IsConnected()) - return FALSE; - - // Prepare EXECUTE message - m_codeco->Write8(IPC_EXECUTE); - m_codeco->Write8(format); - if (size < 0) - m_codeco->WriteString(data); - else { - m_codeco->Write32(size); - m_codeco->Write(data, size); - } - - return TRUE; -} - -char *wxTCPConnection::Request (const wxString& item, int *size, wxIPCFormat format) -{ - if (!m_sock->IsConnected()) - return NULL; - - m_codeco->Write8(IPC_REQUEST); - m_codeco->WriteString(item); - m_codeco->Write8(format); - - // If Unpack doesn't initialize it. - int ret; - - ret = m_codeci->Read8(); - if (ret == IPC_FAIL) - return NULL; - else { - size_t s; - char *data = NULL; - - s = m_codeci->Read32(); - data = new char[s]; - m_codeci->Read(data, s); - - if (size) - *size = s; - return data; - } -} - -bool wxTCPConnection::Poke (const wxString& item, char *data, int size, wxIPCFormat format) -{ - if (!m_sock->IsConnected()) - return FALSE; - - m_codeco->Write8(IPC_POKE); - m_codeco->WriteString(item); - m_codeco->Write8(format); - if (size < 0) - m_codeco->WriteString(data); - else { - m_codeco->Write32(size); - m_codeco->Write(data, size); - } - - return TRUE; -} - -bool wxTCPConnection::StartAdvise (const wxString& item) -{ - int ret; - - if (!m_sock->IsConnected()) - return FALSE; - - m_codeco->Write8(IPC_ADVISE_START); - m_codeco->WriteString(item); - - ret = m_codeci->Read8(); - - if (ret != IPC_FAIL) - return TRUE; - else - return FALSE; -} - -bool wxTCPConnection::StopAdvise (const wxString& item) -{ - int msg; - - if (!m_sock->IsConnected()) - return FALSE; - - m_codeco->Write8(IPC_ADVISE_STOP); - m_codeco->WriteString(item); - - msg = m_codeci->Read8(); - - if (msg != IPC_FAIL) - return TRUE; - else - return FALSE; -} - -// Calls that SERVER can make -bool wxTCPConnection::Advise (const wxString& item, - char *data, int size, wxIPCFormat format) -{ - if (!m_sock->IsConnected()) - return FALSE; - - m_codeco->Write8(IPC_ADVISE); - m_codeco->WriteString(item); - m_codeco->Write8(format); - if (size < 0) - m_codeco->WriteString(data); - else { - m_codeco->Write32(size); - m_codeco->Write(data, size); - } - - return TRUE; -} - -void Client_OnRequest(wxSocketBase& sock, wxSocketBase::wxRequestEvent evt, - char *cdata) -{ - int msg = 0; - wxTCPConnection *connection = (wxTCPConnection *)cdata; - wxDataInputStream *codeci; - wxDataOutputStream *codeco; - wxString topic_name = connection->m_topic; - wxString item; - - // The socket handler signals us that we lost the connection: destroy all. - if (evt == wxSocketBase::EVT_LOST) { - sock.Close(); - connection->OnDisconnect(); - return; - } - - // Receive message number. - codeci = connection->m_codeci; - codeco = connection->m_codeco; - msg = codeci->Read8(); - - switch (msg) { - case IPC_EXECUTE: { - char *data; - size_t size; - wxIPCFormat format; - - format = (wxIPCFormat)codeci->Read8(); - size = codeci->Read32(); - data = new char[size]; - codeci->Read(data, size); - - connection->OnExecute (topic_name, data, size, format); - - delete [] data; - break; - } - case IPC_ADVISE: { - char *data; - size_t size; - wxIPCFormat format; - - item = codeci->ReadString(); - format = (wxIPCFormat)codeci->Read8(); - size = codeci->Read32(); - data = new char[size]; - codeci->Read(data, size); - - connection->OnAdvise (topic_name, item, data, size, format); - - delete [] data; - break; - } - case IPC_ADVISE_START: { - item = codeci->ReadString(); - - bool ok = connection->OnStartAdvise (topic_name, item); - if (ok) - codeco->Write8(IPC_ADVISE_START); - else - codeco->Write8(IPC_FAIL); - - break; - } - case IPC_ADVISE_STOP: { - item = codeci->ReadString(); - - bool ok = connection->OnStopAdvise (topic_name, item); - if (ok) - codeco->Write8(IPC_ADVISE_STOP); - else - codeco->Write8(IPC_FAIL); - - break; - } - case IPC_POKE: { - wxIPCFormat format; - size_t size; - char *data; - - item = codeci->ReadString(); - format = (wxIPCFormat)codeci->Read8(); - size = codeci->Read32(); - data = new char[size]; - codeci->Read(data, size); - - connection->OnPoke (topic_name, item, data, size, format); - - delete [] data; - - break; - } - case IPC_REQUEST: { - wxIPCFormat format; - - item = codeci->ReadString(); - format = (wxIPCFormat)codeci->Read8(); - - int user_size = -1; - char *user_data = connection->OnRequest (topic_name, item, &user_size, format); - - if (user_data) { - codeco->Write8(IPC_REQUEST_REPLY); - if (user_size != -1) { - codeco->Write32(user_size); - codeco->Write(user_data, user_size); - } else - codeco->WriteString(user_data); - } else - codeco->Write8(IPC_FAIL); - - break; - } - case IPC_DISCONNECT: { - sock.Close(); - connection->OnDisconnect(); - break; - } - default: - codeco->Write8(IPC_FAIL); - break; - } -} - -void Server_OnRequest(wxSocketServer& server, - wxSocketBase::wxRequestEvent evt, char *cdata) -{ - wxTCPServer *ipcserv = (wxTCPServer *)cdata; - wxSocketStream *stream; - wxDataInputStream *codeci; - wxDataOutputStream *codeco; - - if (evt != wxSocketBase::EVT_ACCEPT) - return; - - /* Accept the connection, getting a new socket */ - wxSocketBase *sock = server.Accept(); - sock->Notify(FALSE); - sock->SetNotify(wxSocketBase::REQ_READ | wxSocketBase::REQ_LOST); - - stream = new wxSocketStream(*sock); - codeci = new wxDataInputStream(*stream); - codeco = new wxDataOutputStream(*stream); - - if (!sock->Ok()) - return; - - int msg; - msg = codeci->Read8(); - - if (msg == IPC_CONNECT) { - wxString topic_name; - topic_name = codeci->ReadString(); - - /* Register new socket with the notifier */ - wxTCPConnection *new_connection = - (wxTCPConnection *)ipcserv->OnAcceptConnection (topic_name); - if (new_connection) { - if (!new_connection->IsKindOf(CLASSINFO(wxTCPConnection))) { - delete new_connection; - codeco->Write8(IPC_FAIL); - return; - } - // Acknowledge success - codeco->Write8(IPC_CONNECT); - - new_connection->m_topic = topic_name; - new_connection->m_sockstrm = stream; - new_connection->m_codeci = codeci; - new_connection->m_codeco = codeco; - sock->Callback(Client_OnRequest); - sock->CallbackData((char *)new_connection); - sock->Notify(TRUE); - } else { - // Send failure message - codeco->Write8(IPC_FAIL); - } - } -} diff --git a/src/common/sckstrm.cpp b/src/common/sckstrm.cpp deleted file mode 100644 index 85562ae51c..0000000000 --- a/src/common/sckstrm.cpp +++ /dev/null @@ -1,78 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: sckstrm.h -// Purpose: wxSocket*Stream -// Author: Guilhem Lavaux -// Modified by: -// Created: 17/07/97 -// RCS-ID: $Id$ -// Copyright: (c) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation "sckstrm.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#endif - -#include "wx/stream.h" -#include "wx/socket.h" -#include "wx/sckstrm.h" - -// --------------------------------------------------------------------------- -// wxSocketOutputStream -// --------------------------------------------------------------------------- - -wxSocketOutputStream::wxSocketOutputStream(wxSocketBase& s) - : m_o_socket(&s) -{ -} - -wxSocketOutputStream::~wxSocketOutputStream() -{ -} - -wxOutputStream& wxSocketOutputStream::Write(const void *buffer, size_t size) -{ - m_lastcount = m_o_socket->Write((const char *)buffer, size).LastCount(); - return *this; -} - -// --------------------------------------------------------------------------- -// wxSocketInputStream -// --------------------------------------------------------------------------- - -wxSocketInputStream::wxSocketInputStream(wxSocketBase& s) - : m_i_socket(&s) -{ -} - -wxSocketInputStream::~wxSocketInputStream() -{ -} - -wxInputStream& wxSocketInputStream::Read(void *buffer, size_t size) -{ - m_lastcount = m_i_socket->Read((char *)buffer, size).LastCount(); - return *this; -} - -// --------------------------------------------------------------------------- -// wxSocketStream -// --------------------------------------------------------------------------- - -wxSocketStream::wxSocketStream(wxSocketBase& s) - : wxSocketInputStream(s), wxSocketOutputStream(s) -{ -} - -wxSocketStream::~wxSocketStream() -{ -} diff --git a/src/common/serbase.cpp b/src/common/serbase.cpp deleted file mode 100644 index cf00ab21d5..0000000000 --- a/src/common/serbase.cpp +++ /dev/null @@ -1,124 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: serbase.cpp -// Purpose: wxStream base classes -// Author: Robert Roebling -// Modified by: -// Created: 11/07/98 -// RCS-ID: $Id$ -// Copyright: (c) Robert Roebling -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "serbase.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#include "wx/serbase.h" -#include "wx/datstrm.h" -#include "wx/objstrm.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#if wxUSE_SERIAL - -// ---------------------------------------------------------------------------- -// wxObject_Serialize -// ---------------------------------------------------------------------------- - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxObject_Serialize,wxObject) -IMPLEMENT_SERIAL_CLASS(wxList, wxObject) -IMPLEMENT_SERIAL_CLASS(wxHashTable, wxObject) -#endif - -void WXSERIAL(wxList)::StoreObject(wxObjectOutputStream& s) -{ - wxList *lst_object = (wxList *)Object(); - wxNode *node = lst_object->First(); - - if (s.FirstStage()) { - while (node) { - s.AddChild(node->Data()); - node = node->Next(); - } - return; - } - - wxDataOutputStream data_s(s); - - data_s.Write8(lst_object->GetDeleteContents()); - data_s.Write8(lst_object->GetKeyType()); - data_s.Write32( lst_object->Number() ); - - if (lst_object->GetKeyType() == wxKEY_INTEGER) { - while (node) { - data_s.Write32(node->GetKeyInteger()); - node = node->Next(); - } - } else { - while (node) { - data_s.WriteString(node->GetKeyString()); - node = node->Next(); - } - } -} - -void WXSERIAL(wxList)::LoadObject(wxObjectInputStream& s) -{ - wxDataInputStream data_s(s); - wxList *list = (wxList *)Object(); - int number, i; - - list->DeleteContents( data_s.Read8() ); - list->SetKeyType( (wxKeyType) data_s.Read8() ); - number = data_s.Read32(); - - if (list->GetKeyType() == wxKEY_INTEGER) { - for (i=0;iAppend( data_s.Read32(), s.GetChild() ); - } else { - for (i=0;iAppend( data_s.ReadString(), s.GetChild() ); - } -} - -// ---------------------------------------------------------------------------- - -void WXSERIAL(wxHashTable)::StoreObject(wxObjectOutputStream& s) -{ - wxHashTable *table = (wxHashTable *)Object(); - int i; - - if (s.FirstStage()) { - for (i=0;in;i++) - s.AddChild(table->hash_table[i]); - return; - } - - wxDataOutputStream data_s(s); - - data_s.Write8(table->key_type); - data_s.Write32(table->n); -} - -void WXSERIAL(wxHashTable)::LoadObject(wxObjectInputStream& s) -{ - wxHashTable *table = (wxHashTable *)Object(); - wxDataInputStream data_s(s); - int i, key, n; - - key = data_s.Read8(); - n = data_s.Read32(); - - table->Create(key, n); - - for (i=0;ihash_table[i] = (wxList *)s.GetChild(); -} - -#endif // wxUSE_SERIAL diff --git a/src/common/socket.cpp b/src/common/socket.cpp deleted file mode 100644 index e4d22c8e4a..0000000000 --- a/src/common/socket.cpp +++ /dev/null @@ -1,1887 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// Name: socket.cpp -// Purpose: Socket handler classes -// Authors: Guilhem Lavaux (completely rewritten from a basic API of Andrew -// Davidson(1995) in wxWeb) -// Created: April 1997 -// Updated: March 1998 -// Copyright: (C) 1998, 1997, Guilhem Lavaux -// RCS_ID: $Id$ -// License: see wxWindows license -//////////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation "socket.h" -// #pragma interface -// #pragma implementation "socket.cpp" -#endif - -#ifdef __MWERKS__ -typedef int socklen_t ; -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -///////////////////////////////////////////////////////////////////////////// -// wxWindows headers -///////////////////////////////////////////////////////////////////////////// -#include -#include -#include -#include -#include - -// Not enough OS behaviour defined for wxStubs -#ifndef __WXSTUBS__ - -#include -#include -#include - -///////////////////////////////////////////////////////////////////////////// -// System specific headers -///////////////////////////////////////////////////////////////////////////// -#ifdef __WXMAC__ -// in order to avoid problems with our c library and double definitions -#define close closesocket -#define ioctl ioctlsocket - -#include -extern GUSISpinFn GUSISpin; -#define PROCESS_EVENTS() wxMacProcessEvents() -const short kwxMacNetEventsMax = 1000 ; -short wxMacNetEventsTop = 0 ; -short wxMacNetEventsBottom = 0 ; -short wxMacNetEventsEvents[kwxMacNetEventsMax] ; -void *wxMacNetEventsReferences[kwxMacNetEventsMax] ; - -#define FD_READ 1 -#define FD_WRITE 2 -#define FD_CLOSE 4 -#define FD_ACCEPT 8 -#define FD_CONNECT 16 -#define FD_READY 32 - -extern "C" void wxMacSocketHandlerProc( void *refcon , short event ) ; // adds events -extern "C" void wxMacSocketOnRequestProc( void *refcon , short event ) ; // consumes them -extern "C" void GUSISetReference( short sock , short eventmask , void * data ) ; -void wxMacProcessEvents() ; -#endif - -#if defined(__WINDOWS__) -#include -#endif // __WINDOWS__ - -#if defined(__UNIX__) - -#ifdef VMS -#include -#else -#include -#endif -#include - -#include -#include - -#ifdef sun -#include -#endif - -#endif // __UNIX__ - -#include -#include - -#ifdef _MSC_VER -#include -#endif - -#if defined(__WXMOTIF__) || defined(__WXXT__) -#include - -///////////////////////////// -// Needs internal variables -///////////////////////////// -#ifdef __WXXT__ -#define Uses_XtIntrinsic -#endif - -#endif - -#if defined(__WXGTK__) -#include -#endif - -///////////////////////////////////////////////////////////////////////////// -// wxSocket headers -///////////////////////////////////////////////////////////////////////////// -#include "wx/module.h" -#define WXSOCK_INTERNAL -#include "wx/sckaddr.h" -#include "wx/socket.h" - -///////////////////////////////////////////////////////////////////////////// -// Some patch ///// BEGIN -///////////////////////////////////////////////////////////////////////////// -#ifdef __WINDOWS__ -#define close closesocket -#define ioctl ioctlsocket -#ifdef errno -#undef errno -#endif -#define errno WSAGetLastError() -#ifdef EWOULDBLOCK -#undef EWOULDBLOCK -#endif -#define EWOULDBLOCK WSAEWOULDBLOCK -#define ETIMEDOUT WSAETIMEDOUT -#undef EINTR -#define EINTR WSAEINTR -#endif - -#ifndef __WINDOWS__ -#define INVALID_SOCKET -1 -#endif - -#ifdef __WXMOTIF__ -#define wxAPP_CONTEXT ((XtAppContext)wxTheApp->GetAppContext()) -#endif - -#ifdef __WINDOWS__ -// This is an MS TCP/IP routine and is not needed here. Some WinSock -// implementations (such as PC-NFS) will require you to include this -// or a similar routine (see appendix in WinSock doc or help file). - -#if defined( NEED_WSAFDIsSet ) || defined( _MSC_VER ) -int PASCAL FAR __WSAFDIsSet(SOCKET fd, fd_set FAR *set) -{ - int i = set->fd_count; - - while (i--) - { - if (set->fd_array[i] == fd) - return 1; - } - - return 0; -} -#endif -#endif - -#if defined(__WINDOWS__) -#define PROCESS_EVENTS() wxYield() -#elif defined(__WXXT__) || defined(__WXMOTIF__) -#define PROCESS_EVENTS() XtAppProcessEvent(wxAPP_CONTEXT, XtIMAll) -#elif defined(__WXGTK__) -#define PROCESS_EVENTS() gtk_main_iteration() -#endif - -///////////////////////////////////////////////////////////////////////////// -// Some patch ///// END -///////////////////////////////////////////////////////////////////////////// - -#ifdef GetClassInfo -#undef GetClassInfo -#endif - -// -------------------------------------------------------------- -// Module -// -------------------------------------------------------------- -class wxSocketModule: public wxModule -{ - DECLARE_DYNAMIC_CLASS(wxSocketModule) -public: - wxSocketModule() {} - bool OnInit(); - void OnExit(); -}; - -// -------------------------------------------------------------- -// ClassInfos -// -------------------------------------------------------------- -#if !USE_SHARED_LIBRARY -IMPLEMENT_CLASS(wxSocketBase, wxObject) -IMPLEMENT_CLASS(wxSocketServer, wxSocketBase) -IMPLEMENT_CLASS(wxSocketClient, wxSocketBase) -IMPLEMENT_CLASS(wxSocketHandler, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxSocketEvent, wxEvent) -IMPLEMENT_DYNAMIC_CLASS(wxSocketModule, wxModule) -#endif - -class wxSockWakeUp : public wxTimer -{ -public: - int *my_id; - int n_val; - wxSocketBase *sock; - - wxSockWakeUp(wxSocketBase *_sock, int *id, int new_val) - { - my_id = id; n_val = new_val; - sock = _sock; - } - virtual void Notify() - { - *my_id = n_val; - if (sock) sock->Notify(FALSE); - } -}; - -/// Socket request -class SockRequest : public wxObject -{ -public: - char *buffer; - size_t size, nbytes; - bool done; - int error; - wxSockWakeUp *auto_wakeup; - wxSocketBase::wxRequestNotify type; -}; - - -///////////////////////////////////////////////////////////////////////////// -// Some internal define -///////////////////////////////////////////////////////////////////////////// - -// -------------------------------------------------------------- -// --------- wxSocketBase CONSTRUCTOR --------------------------- -// -------------------------------------------------------------- -wxSocketBase::wxSocketBase(wxSocketBase::wxSockFlags _flags, - wxSocketBase::wxSockType _type) : - wxEvtHandler(), - m_flags(_flags), m_type(_type), m_connected(FALSE), m_connecting(FALSE), - m_fd(INVALID_SOCKET), m_waitflags(0), m_cbk(0), m_cdata(0), m_id(-1), - m_handler(0), - m_neededreq((wxRequestNotify)(REQ_READ | REQ_LOST)), - m_cbkon(FALSE), - m_unread(NULL), m_unrd_size(0), - m_processing(FALSE), - m_timeout(3600), m_wantbuf(0) -{ - m_internal = new wxSockInternal; -#if defined(__WXXT__) || defined(__WXMOTIF__) || defined(__WXGTK__) - m_internal->sock_inputid = 0; - m_internal->sock_outputid = 0; - m_internal->sock_exceptid = 0; -#endif -#ifdef __WINDOWS__ - m_internal->my_msg = 0; -#endif -} - -wxSocketBase::wxSocketBase() : - wxEvtHandler(), - m_flags(WAITALL), m_type(SOCK_UNINIT), m_connected(FALSE), - m_connecting(FALSE), m_fd(INVALID_SOCKET), m_waitflags(0), - m_cbk(0), m_cdata(0), - m_id(-1), m_handler(0), - m_neededreq((wxRequestNotify)(REQ_READ | REQ_LOST)), - m_cbkon(FALSE), - m_unread(NULL), m_unrd_size(0), - m_processing(FALSE), - m_timeout(3600), m_wantbuf(0) -{ - m_internal = new wxSockInternal; -#if defined(__WXXT__) || defined(__WXMOTIF__) || defined(__WXGTK__) - m_internal->sock_inputid = 0; - m_internal->sock_outputid = 0; - m_internal->sock_exceptid = 0; -#endif -#ifdef __WINDOWS__ - m_internal->my_msg = 0; -#endif -} - -// -------------------------------------------------------------- -// wxSocketBase -// -------------------------------------------------------------- - -wxSocketBase::~wxSocketBase() -{ - DestroyCallbacks(); - Close(); - - if (m_unread) - free(m_unread); - if (m_handler) - { -#ifdef __WINDOWS__ - if (m_internal->my_msg) - m_handler->DestroyMessage(m_internal->my_msg); -#endif - m_handler->UnRegister(this); - } - m_states.DeleteContents(TRUE); - - delete m_internal; -} - -bool wxSocketBase::Close() -{ - if (m_fd != INVALID_SOCKET) - { - for (int i=0;i<3;i++) - { - wxNode *n, *node = req_list[i].First(); - - while (node) - { - SockRequest *req = (SockRequest *)node->Data(); - req->done = TRUE; - - n = node->Next(); - delete node; - node = n; - } - } - - DestroyCallbacks(); - shutdown(m_fd, 2); - close(m_fd); - m_fd = INVALID_SOCKET; - m_connected = FALSE; - } - - return TRUE; -} - -// -------------------------------------------------------------- -// wxSocketBase base IO function -// -------------------------------------------------------------- - -wxSocketBase& wxSocketBase::Read(char* buffer, size_t nbytes) -{ - m_lcount = GetPushback(buffer, nbytes, FALSE); - - // If we have got the whole needed buffer or if we don't want to - // wait then it returns immediately. - if (!nbytes || (m_lcount && !(m_flags & WAITALL)) ) - return *this; - - WantBuffer(buffer, nbytes, EVT_READ); - - return *this; -} - -wxSocketBase& wxSocketBase::Peek(char* buffer, size_t nbytes) -{ - size_t nbytes_old = nbytes; - - nbytes -= GetPushback(buffer, nbytes, TRUE); - if (!nbytes) - { - m_lcount = nbytes_old; - return *this; - } - - WantBuffer(buffer, nbytes, EVT_PEEK); - - return *this; -} - -wxSocketBase& wxSocketBase::Write(const char *buffer, size_t nbytes) -{ - WantBuffer((char *)buffer, nbytes, EVT_WRITE); - return *this; -} - -wxSocketBase& wxSocketBase::ReadMsg(char* buffer, size_t nbytes) -{ - SockMsg msg; - size_t len, len2, sig; - - Read((char *)&msg, sizeof(msg)); - if (m_lcount != sizeof(msg)) - return *this; - - sig = msg.sig[0] & 0xff; - sig |= (size_t)(msg.sig[1] & 0xff) << 8; - sig |= (size_t)(msg.sig[2] & 0xff) << 16; - sig |= (size_t)(msg.sig[3] & 0xff) << 24; - - if (sig != 0xfeeddead) - return *this; - len = msg.len[0] & 0xff; - len |= (size_t)(msg.len[1] & 0xff) << 8; - len |= (size_t)(msg.len[2] & 0xff) << 16; - len |= (size_t)(msg.len[3] & 0xff) << 24; - len2 = len; - if (len > nbytes) - len = nbytes; - else - len2 = 0; - - if (Read(buffer, len).LastCount() != len) - return *this; - if (len2 && (Read(NULL, len2).LastCount() != len2)) - return *this; - if (Read((char *)&msg, sizeof(msg)).LastCount() != sizeof(msg)) - return *this; - - sig = msg.sig[0] & 0xff; - sig |= (size_t)(msg.sig[1] & 0xff) << 8; - sig |= (size_t)(msg.sig[2] & 0xff) << 16; - sig |= (size_t)(msg.sig[3] & 0xff) << 24; -// ERROR - if (sig != 0xdeadfeed) - return *this; - - return *this; -} - -wxSocketBase& wxSocketBase::WriteMsg(const char *buffer, size_t nbytes) -{ - SockMsg msg; - - // warning about 'cast truncates constant value' -#ifdef _MSC_VER - #pragma warning(disable: 4310) -#endif // _MSC_VER - - msg.sig[0] = (char) 0xad; - msg.sig[1] = (char) 0xde; - msg.sig[2] = (char) 0xed; - msg.sig[3] = (char) 0xfe; - - msg.len[0] = (char) nbytes & 0xff; - msg.len[1] = (char) (nbytes >> 8) & 0xff; - msg.len[2] = (char) (nbytes >> 16) & 0xff; - msg.len[3] = (char) (nbytes >> 24) & 0xff; - - if (Write((char *)&msg, sizeof(msg)).LastCount() < sizeof(msg)) - return *this; - if (Write(buffer, nbytes).LastCount() < nbytes) - return *this; - - msg.sig[0] = (char) 0xed; - msg.sig[1] = (char) 0xfe; - msg.sig[2] = (char) 0xad; - msg.sig[3] = (char) 0xde; - msg.len[0] = msg.len[1] = msg.len[2] = msg.len[3] = (char) 0; - Write((char *)&msg, sizeof(msg)); - - return *this; - -#ifdef _MSC_VER - #pragma warning(default: 4310) -#endif // _MSC_VER -} - -wxSocketBase& wxSocketBase::Unread(const char *buffer, size_t nbytes) -{ - CreatePushbackAfter(buffer, nbytes); - return *this; -} - -bool wxSocketBase::IsData() const -{ - struct timeval tv; - fd_set sock_set; - - if (m_fd < 0) - return FALSE; - if (m_unrd_size > 0) - return TRUE; - - tv.tv_sec = 0; - tv.tv_usec = 0; - FD_ZERO(&sock_set); - FD_SET(m_fd, &sock_set); - select(FD_SETSIZE, &sock_set, NULL, NULL, &tv); - return (FD_ISSET(m_fd, &sock_set) != 0); -} - -// --------------------------------------------------------------------- -// --------- wxSocketBase Discard(): deletes all byte in the input queue -// --------------------------------------------------------------------- -void wxSocketBase::Discard() -{ -#define MAX_BUFSIZE (10*1024) - char *my_data = new char[MAX_BUFSIZE]; - size_t recv_size = MAX_BUFSIZE; - - SaveState(); - SetFlags((wxSockFlags)(NOWAIT | SPEED)); - - while (recv_size == MAX_BUFSIZE) - { - recv_size = Read(my_data, MAX_BUFSIZE).LastCount(); - } - - RestoreState(); - delete [] my_data; - -#undef MAX_BUFSIZE -} - -// If what? Who seems to need unsigned int? -// BTW uint isn't even defined on wxMSW for VC++ for some reason. Even if it -// were, getpeername/getsockname don't take unsigned int*, they take int*. -// -// Under glibc 2.0.7, socketbits.h declares socklen_t to be unsigned int -// and it uses *socklen_t as the 3rd parameter. Robert. - -// JACS - How can we detect this? -// Meanwhile, if your compiler complains about socklen_t, -// switch lines below. - -#if wxHAVE_GLIBC2 -# define wxSOCKET_INT socklen_t -#else -# define wxSOCKET_INT int -#endif - -// -------------------------------------------------------------- -// wxSocketBase socket info functions -// -------------------------------------------------------------- - -bool wxSocketBase::GetPeer(wxSockAddress& addr_man) const -{ - struct sockaddr my_addr; - wxSOCKET_INT len_addr = sizeof(my_addr); - - if (m_fd < 0) - return FALSE; - - if (getpeername(m_fd, (struct sockaddr *)&my_addr, &len_addr) < 0) - return FALSE; - - addr_man.Disassemble(&my_addr, len_addr); - return TRUE; -} - -bool wxSocketBase::GetLocal(wxSockAddress& addr_man) const -{ - struct sockaddr my_addr; - wxSOCKET_INT len_addr = sizeof(my_addr); - - if (m_fd < 0) - return FALSE; - - if (getsockname(m_fd, (struct sockaddr *)&my_addr, &len_addr) < 0) - - return FALSE; - - addr_man.Disassemble(&my_addr, len_addr); - return TRUE; -} - -// -------------------------------------------------------------- -// wxSocketBase wait functions -// -------------------------------------------------------------- - -void wxSocketBase::SaveState() -{ - wxSockState *state = new wxSockState; - - state->cbk_on = m_cbkon; - state->cbk_set= m_neededreq; - state->cbk = m_cbk; - state->cdata = m_cdata; - state->flags = m_flags; - state->notif = m_notifyme; - - m_states.Append(state); -} - -void wxSocketBase::RestoreState() -{ - wxNode *node; - - node = m_states.Last(); - if (!node) - return; - - wxSockState *state = (wxSockState *)node->Data(); - - SetFlags(state->flags); - m_neededreq = state->cbk_set; - m_cbk = state->cbk; - m_cdata = state->cdata; - m_notifyme = state->notif; - if (state->cbk_on) - SetupCallbacks(); - else - DestroyCallbacks(); - - delete node; - delete state; -} - -// -------------------------------------------------------------- -// --------- wxSocketBase wait functions ------------------------ -// -------------------------------------------------------------- - -bool wxSocketBase::_Wait(long seconds, long microseconds, int type) -{ - if ((!m_connected && !m_connecting) || m_fd < 0) - return FALSE; - - wxSockWakeUp wakeup(this, &m_waitflags, 0); - - SaveState(); - SetNotify((wxRequestNotify)type); - SetupCallbacks(); - - if (seconds != -1) - wakeup.Start((int)(seconds*1000 + (microseconds / 1000)), TRUE); - - m_waitflags = 0x80 | type; - while (m_waitflags & 0x80) - PROCESS_EVENTS(); - - RestoreState(); - - if (m_waitflags & 0x40) - { - m_waitflags = 0; - return TRUE; - } - m_waitflags = 0; - - return FALSE; -} - -bool wxSocketBase::Wait(long seconds, long microseconds) -{ - return _Wait(seconds, microseconds, REQ_ACCEPT | REQ_CONNECT | - REQ_READ | REQ_WRITE | REQ_LOST); -} - -bool wxSocketBase::WaitForRead(long seconds, long microseconds) -{ - return _Wait(seconds, microseconds, REQ_READ | REQ_LOST); -} - -bool wxSocketBase::WaitForWrite(long seconds, long microseconds) -{ - return _Wait(seconds, microseconds, REQ_WRITE); -} - -bool wxSocketBase::WaitForLost(long seconds, long microseconds) -{ - return _Wait(seconds, microseconds, REQ_LOST); -} - -// -------------------------------------------------------------- -// --------- wxSocketBase callback management ------------------- -// -------------------------------------------------------------- - -#if defined(__WXMOTIF__) || defined(__WXXT__) || defined(__WXGTK__) -#if defined(__WXMOTIF__) || defined(__WXXT__) -static void wx_socket_read(XtPointer client, int *fid, - XtInputId *WXUNUSED(id)) -#define fd *fid -#else -static void wx_socket_read(gpointer client, gint fd, - GdkInputCondition WXUNUSED(cond)) -#define fd fd -#endif -{ - wxSocketBase *sock = (wxSocketBase *)client; - char c; - int i; - - i = recv(fd, &c, 1, MSG_PEEK); - - if (i == -1 && (sock->NeededReq() & wxSocketBase::REQ_ACCEPT)) - { - sock->OnRequest(wxSocketBase::EVT_ACCEPT); - return; - } - - if (i != 0) - { - if (!(sock->NeededReq() & wxSocketBase::REQ_READ)) - { - return; - } - - sock->OnRequest(wxSocketBase::EVT_READ); - } - else - { - if (!(sock->NeededReq() & wxSocketBase::REQ_LOST)) - { - sock->Close(); - return; - } - - sock->OnRequest(wxSocketBase::EVT_LOST); - } -} -#undef fd - -#if defined(__WXMOTIF__) || defined(__WXXT__) -static void wx_socket_write(XtPointer client, int *WXUNUSED(fid), - XtInputId *WXUNUSED(id)) -#else -static void wx_socket_write(gpointer client, gint WXUNUSED(fd), - GdkInputCondition WXUNUSED(cond)) -#endif -{ - wxSocketBase *sock = (wxSocketBase *)client; - - if (!sock->IsConnected()) - sock->OnRequest(wxSocketBase::EVT_CONNECT); - else - sock->OnRequest(wxSocketBase::EVT_WRITE); -} -#endif - -#ifdef wx_xview -Notify_value wx_sock_read_xview (Notify_client client, int fd) -{ - wxSocketBase *sock = (wxSocketBase *)client; - char c; - int i; - - i = recv(fd, &c, 1, MSG_PEEK); - - if (i == -1 && (sock->NeededReq() & wxSocketBase::REQ_ACCEPT)) - { - sock->OnRequest(wxSocketBase::EVT_ACCEPT); - return; - } - - /* Bytes arrived */ - if (i != 0) - { - if (!(sock->NeededReq() & wxSocketBase::REQ_READ)) - return (Notify_value) FALSE; - - sock->OnRequest(wxSocketBase::EVT_READ); - } - else - { - if (!(sock->NeededReq() & wxSocketBase::REQ_LOST)) - return; - - sock->OnRequest(wxSocketBase::EVT_LOST); - } - - return (Notify_value) FALSE; -} - -Notify_value wx_sock_write_xview (Notify_client client, int fd) -{ - wxSocketBase *sock = (wxSocketBase *)client; - - if (!sock->IsConnected()) - sock->OnRequest(wxSocketBase::EVT_CONNECT); - else - sock->OnRequest(wxSocketBase::EVT_WRITE); - - return (Notify_value) TRUE; -} -#endif - -wxSocketBase::wxRequestNotify wxSocketBase::EventToNotify(wxRequestEvent evt) -{ - switch (evt) - { - case EVT_READ: - return REQ_READ; - case EVT_PEEK: - return REQ_PEEK; - case EVT_WRITE: - return REQ_WRITE; - case EVT_LOST: - return REQ_LOST; - case EVT_ACCEPT: - return REQ_ACCEPT; - case EVT_CONNECT: - return REQ_CONNECT; - } - return 0; -} - -void wxSocketBase::SetFlags(wxSockFlags _flags) -{ - m_flags = _flags; - if (_flags & SPEED) - { - unsigned long flag = 0; - ioctl(m_fd, FIONBIO, &flag); - - // SPEED and WAITALL are antagonists. - m_flags = (wxSockFlags)(m_flags & ~WAITALL); - - Notify(FALSE); - } - else - { - unsigned long flag = 1; - ioctl(m_fd, FIONBIO, &flag); - } -} - -void wxSocketBase::SetNotify(wxRequestNotify flags) -{ - wxRequestNotify old_needed_req = m_neededreq; - if (flags & REQ_ACCEPT) - { - /* Check if server */ - if (!(GetClassInfo()->IsKindOf(CLASSINFO(wxSocketServer)))) - flags &= ~REQ_ACCEPT; - } - m_neededreq = flags; - -/* - if (m_cbkon && old_needed_req != flags) seems to be wrong, Robert Roebling - SetupCallbacks(); -*/ - - if (old_needed_req != flags) - SetupCallbacks(); -} - -void wxSocketBase::SetupCallbacks() -{ - if (m_fd == INVALID_SOCKET || !m_handler || (m_flags & SPEED)) - return; - -#if defined(__WXMOTIF__) || defined(__WXXT__) - if (m_neededreq & (REQ_ACCEPT | REQ_READ | REQ_LOST)) - { - if (m_internal->sock_inputid <= 0) - { - m_internal->sock_inputid = XtAppAddInput (wxAPP_CONTEXT, m_fd, - (XtPointer *) XtInputReadMask, - (XtInputCallbackProc) wx_socket_read, - (XtPointer) this); - } - } - else - { - if (m_internal->sock_inputid > 0) - { - XtRemoveInput(m_internal->sock_inputid); - m_internal->sock_inputid = 0; - } - } - - if (m_neededreq & (REQ_CONNECT | REQ_WRITE)) - { - if (m_internal->sock_outputid <= 0) - { - m_internal->sock_outputid = XtAppAddInput (wxAPP_CONTEXT, m_fd, - (XtPointer *) XtInputWriteMask, - (XtInputCallbackProc) wx_socket_write, - (XtPointer) this); - } - } - else - { - if (m_internal->sock_outputid > 0) - { - XtRemoveInput(m_internal->sock_outputid); - m_internal->sock_outputid = 0; - } - } -#endif - - -#ifdef __WXGTK__ - if (m_neededreq & (REQ_ACCEPT | REQ_READ | REQ_LOST)) - { - if (m_internal->sock_inputid <= 0) - { - m_internal->sock_inputid = gdk_input_add(m_fd, GDK_INPUT_READ, - wx_socket_read, (gpointer)this); - } - } - else - { - if (m_internal->sock_inputid > 0) - { -/* - gdk_input_remove(m_internal->sock_inputid); - m_internal->sock_inputid = 0; -*/ - } - } - - if (m_neededreq & (REQ_CONNECT | REQ_WRITE)) - { - if (m_internal->sock_outputid <= 0) - { - m_internal->sock_outputid = gdk_input_add(m_fd, GDK_INPUT_WRITE, - wx_socket_write, (gpointer)this); - } - } - else - { - if (m_internal->sock_outputid > 0) - { -/* - gdk_input_remove(m_internal->sock_outputid); - m_internal->sock_outputid = 0; -*/ - } - } -#endif - - -#ifdef __WXMSW__ - WORD mask = 0; - - if (m_neededreq & REQ_READ) - mask |= FD_READ; - if (m_neededreq & REQ_WRITE) - mask |= FD_WRITE; - if (m_neededreq & REQ_LOST) - mask |= FD_CLOSE; - if (m_neededreq & REQ_ACCEPT) - mask |= FD_ACCEPT; - if (m_neededreq & REQ_CONNECT) - mask |= FD_CONNECT; - - if (!m_internal->my_msg) - m_internal->my_msg = m_handler->NewMessage(this); - WSAAsyncSelect(m_fd, m_handler->GetHWND(), m_internal->my_msg, mask); -#endif -#ifdef __WXMAC__ - short mask = 0; - - if (m_neededreq & REQ_READ) - mask |= FD_READ; - if (m_neededreq & REQ_WRITE) - mask |= FD_WRITE; - if (m_neededreq & REQ_LOST) - mask |= FD_CLOSE; - if (m_neededreq & REQ_ACCEPT) - mask |= FD_ACCEPT; - if (m_neededreq & REQ_CONNECT) - mask |= FD_CONNECT; - - GUSISetReference( m_fd ,mask, this ) ; - unsigned long flag = 1; - ioctl(m_fd, FIONBIO, &flag); -#endif - m_cbkon = TRUE; - m_processing = FALSE; -} - -void wxSocketBase::DestroyCallbacks() -{ - if (!m_cbkon || !m_handler) - return; - - m_cbkon = FALSE; - m_processing = FALSE; -#if defined(__WXMOTIF__) || defined(__WXXT__) - if (m_internal->sock_inputid > 0) - XtRemoveInput(m_internal->sock_inputid); - m_internal->sock_inputid = 0; - if (m_internal->sock_outputid > 0) - XtRemoveInput(m_internal->sock_outputid); - m_internal->sock_outputid = 0; -#endif -#ifdef __WXGTK__ - if (m_internal->sock_inputid > 0) - gdk_input_remove(m_internal->sock_inputid); - m_internal->sock_inputid = 0; - if (m_internal->sock_outputid > 0) - gdk_input_remove(m_internal->sock_outputid); - m_internal->sock_outputid = 0; -#endif -#ifdef __WINDOWS__ - WSAAsyncSelect(m_fd, m_handler->GetHWND(), 0, 0); -#endif -#ifdef __WXMAC__ - GUSISetReference( m_fd , 0 , 0 ) ; - int bottom = wxMacNetEventsBottom ; - while ( wxMacNetEventsTop != bottom ) - { - // set all events that reference this socket to nil - if ( wxMacNetEventsReferences[bottom] == (void*) this ) - wxMacNetEventsReferences[bottom] = NULL ; - bottom++ ; - if ( bottom == kwxMacNetEventsMax ) - bottom = 0 ; - } - SetFlags( m_flags ) ; -#endif -} - -void wxSocketBase::Notify(bool notify) -{ - if (m_notifyme == notify) - return; - if (notify) - SetupCallbacks(); - else - DestroyCallbacks(); - m_notifyme = notify; -} - -void wxSocketBase::OnRequest(wxRequestEvent req_evt) -{ - wxRequestNotify req_notif = EventToNotify(req_evt); - - // Mask the current event - SetNotify(m_neededreq & ~req_notif); - - if (req_evt <= EVT_WRITE && DoRequests(req_evt)) - return; - - if (m_waitflags & 0xF0) - { - // Wake up - if ((m_waitflags & 0x0F) == req_evt) - { - m_waitflags = 0x80; -#ifndef __WXGTK__ - DestroyCallbacks(); -#endif - } - return; - } - - if (req_evt == EVT_LOST) - { - m_connected = FALSE; - Close(); - } - if (m_notifyme) - OldOnNotify(req_evt); - - // Unmask - SetNotify(m_neededreq | req_notif); -} - -wxSocketEvent::wxSocketEvent(int id) - : wxEvent(id) -{ - wxEventType type = (wxEventType)wxEVT_SOCKET; - - SetEventType(type); -} - -void wxSocketBase::OldOnNotify(wxRequestEvent evt) -{ - wxSocketEvent event(m_id); - - event.SetEventObject(this); - event.m_skevt = evt; - ProcessEvent(event); - - if (m_cbk) - m_cbk(*this, evt, m_cdata); -} - -// -------------------------------------------------------------- -// --------- wxSocketBase functions [Callback, CallbackData] ---- -// -------------------------------------------------------------- - -wxSocketBase::wxSockCbk wxSocketBase::Callback(wxSocketBase::wxSockCbk _cbk) -{ - wxSockCbk old_cbk = m_cbk; - - m_cbk = _cbk; - return old_cbk; -} - -char *wxSocketBase::CallbackData(char *cdata_) -{ - char *old_cdata = m_cdata; - - m_cdata = cdata_; - return old_cdata; -} - -void wxSocketBase::SetEventHandler(wxEvtHandler& h_evt, int id) -{ - SetNextHandler(&h_evt); - m_id = id; -} - -// -------------------------------------------------------------- -// --------- wxSocketBase pushback library ---------------------- -// -------------------------------------------------------------- - -void wxSocketBase::CreatePushbackAfter(const char *buffer, size_t size) -{ - char *curr_pos; - - m_unread = (char *) realloc(m_unread, m_unrd_size+size); - curr_pos = m_unread + m_unrd_size; - - memcpy(curr_pos, buffer, size); - m_unrd_size += size; -} - -void wxSocketBase::CreatePushbackBefore(const char *buffer, size_t size) -{ - char *curr_pos, *new_buf; - - new_buf = (char *) malloc(m_unrd_size+size); - curr_pos = new_buf + size; - - memcpy(new_buf, buffer, size); - memcpy(curr_pos, m_unread, m_unrd_size); - - free(m_unread); - m_unread = new_buf; - m_unrd_size += size; -} - -size_t wxSocketBase::GetPushback(char *buffer, size_t size, bool peek) -{ - if (!m_unrd_size) - return 0; - - if (size > m_unrd_size) - size = m_unrd_size; - memcpy(buffer, m_unread, size); - - if (!peek) { - m_unrd_size -= size; - if (!m_unrd_size) { - free(m_unread); - m_unread = NULL; - } - } - - return size; -} - -// -------------------------------------------------------------- -// --------- wxSocketBase "multi-thread" core ------------------- -// -------------------------------------------------------------- - -bool wxSocketBase::DoRequests(wxRequestEvent req_flag) -{ - wxNode *node = req_list[req_flag].First(); - size_t len; - int ret; - - if (!node) - return FALSE; - - SockRequest *req = (SockRequest *)node->Data(); - - delete node; - - switch (req->type) - { - case EVT_READ: - case EVT_PEEK: - ret = recv(m_fd, req->buffer, req->size, - (req->type == EVT_PEEK) ? MSG_PEEK : 0); - if (ret < 0) - { - req->error = errno; - req->done = TRUE; - break; - } - len = ret; - if ((len < req->size) && (m_flags & WAITALL)) - { - req->size -= len; - req->nbytes += len; - req->buffer += len; - req->auto_wakeup->Start(m_timeout*1000, TRUE); - req_list[req_flag].Insert(req); - break; - } - req->done = TRUE; - req->nbytes += len; -#ifndef __WXGTK__ - DestroyCallbacks(); -#endif - break; - case EVT_WRITE: - ret = send(m_fd, req->buffer, req->size, 0); - if (ret < 0) - { - req->error = errno; - req->done = TRUE; - break; - } - len = ret; - if ((len < req->size) && (m_flags & WAITALL)) - { - req->size -= len; - req->nbytes += len; - req->buffer += len; - req->auto_wakeup->Start(m_timeout*1000, TRUE); - req_list[req_flag].Insert(req); - break; - } - req->done = TRUE; - req->nbytes += len; -#ifndef __WXGTK__ - DestroyCallbacks(); -#endif - break; - default: - return FALSE; - } - return TRUE; -} - -void wxSocketBase::WantSpeedBuffer(char *buffer, size_t nbytes, - wxRequestEvent evt) -{ - int ret = 0; - - switch (evt) - { - case EVT_PEEK: - case EVT_READ: - ret = recv(m_fd, buffer, nbytes, - (evt == EVT_PEEK) ? MSG_PEEK : 0); - break; - case EVT_WRITE: - ret = send(m_fd, buffer, nbytes, 0); - break; - } - if (ret < 0) - { - m_lcount = 0; - m_error = errno; - } - else - { - m_lcount = ret; - m_error = 0; - } -} - -void wxSocketBase::WantBuffer(char *buffer, size_t nbytes, - wxRequestEvent evt) -{ - bool buf_timed_out; - - if (m_fd == INVALID_SOCKET || !m_handler || !m_connected) - return; - - if (m_flags & SPEED) - { - WantSpeedBuffer(buffer, nbytes, evt); - return; - } - - SockRequest *buf = new SockRequest; - wxSockWakeUp s_wake(NULL, (int *)&buf_timed_out, (int)TRUE); - - m_wantbuf++; - req_list[evt].Append(buf); - - SaveState(); - SetNotify(REQ_LOST | EventToNotify(evt)); - SetupCallbacks(); - buf->buffer = buffer; - buf->size = nbytes; - buf->done = FALSE; - buf->type = evt; - buf->nbytes = 0; - buf->auto_wakeup = &s_wake; - buf->error = 0; - buf_timed_out = FALSE; - - s_wake.Start(m_timeout*1000, TRUE); - if (m_flags & NOWAIT) - { - DoRequests(evt); - } - else - { - while (!buf->done && !buf_timed_out) - PROCESS_EVENTS(); - } - m_wantbuf--; - m_lcount = buf->nbytes; - if (buf_timed_out) - m_error = ETIMEDOUT; - else - m_error = buf->error; - - delete buf; - RestoreState(); -} - -// -------------------------------------------------------------- -// wxSocketServer -// -------------------------------------------------------------- - -wxSocketServer::wxSocketServer(wxSockAddress& addr_man, - wxSockFlags flags) : - wxSocketBase(flags, SOCK_SERVER) -{ - m_fd = socket(addr_man.GetFamily(), SOCK_STREAM, 0); - - if (m_fd == INVALID_SOCKET) - return; - - int flag = 1; - setsockopt(m_fd, SOL_SOCKET, SO_REUSEADDR, (char*)&flag, sizeof(int)); - - struct sockaddr *myaddr; - size_t len; - - addr_man.Build(myaddr, len); - if (bind(m_fd, myaddr, addr_man.SockAddrLen()) < 0) - return; - - if (listen(m_fd, 5) < 0) { - m_fd = INVALID_SOCKET; - return; - } -} - -// -------------------------------------------------------------- -// wxSocketServer Accept -// -------------------------------------------------------------- - -bool wxSocketServer::AcceptWith(wxSocketBase& sock) -{ - int fd2; - - if ((fd2 = accept(m_fd, 0, 0)) < 0) - return FALSE; - - struct linger linger; - linger.l_onoff = 0; - linger.l_linger = 1; - - setsockopt(fd2, SOL_SOCKET, SO_LINGER, (char*)&linger, sizeof(linger)); - - int flag = 0; - setsockopt(fd2, SOL_SOCKET, SO_KEEPALIVE, (char*)&flag, sizeof(int)); - - if (!(sock.m_flags & SPEED)) - { - unsigned long flag2 = 1; - ioctl(fd2, FIONBIO, &flag2); - } - - sock.m_type = SOCK_INTERNAL; - sock.m_fd = fd2; - sock.m_connected = TRUE; - - return TRUE; -} - -wxSocketBase *wxSocketServer::Accept() -{ - wxSocketBase* sock = new wxSocketBase(); - - sock->SetFlags((wxSockFlags)m_flags); - - if (!AcceptWith(*sock)) - return NULL; - - if (m_handler) - m_handler->Register(sock); - - return sock; -} - -// -------------------------------------------------------------- -// wxSocketServer callbacks -// -------------------------------------------------------------- - -void wxSocketServer::OnRequest(wxRequestEvent evt) -{ - if (evt == EVT_ACCEPT) - { - OldOnNotify(EVT_ACCEPT); - } -} - -// -------------------------------------------------------------- -// wxSocketClient -// -------------------------------------------------------------- - -// --------- wxSocketClient CONSTRUCTOR ------------------------- -// -------------------------------------------------------------- -wxSocketClient::wxSocketClient(wxSockFlags _flags) : - wxSocketBase(_flags, SOCK_CLIENT) -{ -} - -// -------------------------------------------------------------- -// --------- wxSocketClient DESTRUCTOR -------------------------- -// -------------------------------------------------------------- -wxSocketClient::~wxSocketClient() -{ -} - -// -------------------------------------------------------------- -// --------- wxSocketClient Connect functions ------------------- -// -------------------------------------------------------------- -bool wxSocketClient::Connect(wxSockAddress& addr_man, bool WXUNUSED(wait) ) -{ - struct linger linger; - - if (IsConnected()) - Close(); - - m_fd = socket(addr_man.GetFamily(), SOCK_STREAM, 0); - - if (m_fd < 0) - return FALSE; - - m_connected = FALSE; - - linger.l_onoff = 1; - linger.l_linger = 5; - setsockopt(m_fd, SOL_SOCKET, SO_LINGER, (char*)&linger, sizeof(linger)); - - // Stay in touch with the state of things... - - unsigned long flag = 1; - setsockopt(m_fd, SOL_SOCKET, SO_KEEPALIVE, (char*)&flag, sizeof(int)); - - // Disable the nagle algorithm, which delays sends till the - // buffer is full (or a certain time period has passed?)... - -#if defined(__WINDOWS__) || (defined(IPPROTO_TCP) && defined(TCP_NODELAY)) - flag = 1; - setsockopt(m_fd, IPPROTO_TCP, TCP_NODELAY, (char*)&flag, sizeof(int)); -#endif - - struct sockaddr *remote; - size_t len; - - addr_man.Build(remote, len); - - if (connect(m_fd, remote, len) != 0) - return FALSE; - - if (!(m_flags & SPEED)) - { - flag = 1; - ioctl(m_fd, FIONBIO, &flag); - } - - Notify(TRUE); - - m_connected = TRUE; - return TRUE; -} - -bool wxSocketClient::WaitOnConnect(long seconds, long microseconds) -{ - int ret = _Wait(seconds, microseconds, REQ_CONNECT | REQ_LOST); - - if (ret) - m_connected = TRUE; - - return m_connected; -} - -void wxSocketClient::OnRequest(wxRequestEvent evt) -{ - if (evt == EVT_CONNECT) - { - if (m_connected) - { -#ifndef __WXGTK__ - SetNotify(m_neededreq & ~REQ_CONNECT); -#endif - return; - } - m_waitflags = 0x40; - m_connected = TRUE; - OldOnNotify(EVT_CONNECT); -#ifndef __WXGTK__ - DestroyCallbacks(); -#endif - return; - } - wxSocketBase::OnRequest(evt); -} - -///////////////////////////////////////////////////////////////// -// wxSocketHandler /////////////////////////////////////////////// -///////////////////////////////////////////////////////////////// - -wxSocketHandler *wxSocketHandler::master = NULL; -#if defined(__WINDOWS__) -static int win_initialized = 0; -#endif - -// -------------------------------------------------------------- -// --------- wxSocketHandler CONSTRUCTOR ------------------------ -// -------------------------------------------------------------- -#ifdef __WXMAC__ - -extern "C" int updatestatus(int s) ; - -void wxMacSocketOnRequestProc( void *refcon , short event ) -{ - if ( refcon ) - { - wxSocketBase *sock = (wxSocketBase *) refcon ; - - wxSocketBase::wxRequestEvent sk_req; - - int canRead ; - int canWrite ; - int exception ; - - switch (event) { - case FD_READ: - sk_req = wxSocketBase::EVT_READ; - sock->OnRequest(sk_req); - break; - case FD_WRITE: - sk_req = wxSocketBase::EVT_WRITE; - sock->OnRequest(sk_req); - break; - case FD_CLOSE: - sk_req = wxSocketBase::EVT_LOST; - sock->OnRequest(sk_req); - break; - case FD_ACCEPT: - sk_req = wxSocketBase::EVT_ACCEPT; - sock->OnRequest(sk_req); - break; - case FD_CONNECT: - sk_req = wxSocketBase::EVT_CONNECT; - sock->OnRequest(sk_req); - break; - case FD_READY : - break ; - } - updatestatus ( sock->m_fd ) ; - } -} - -void wxMacSocketHandlerProc( void *refcon , short event ) -{ - wxMacNetEventsReferences[wxMacNetEventsTop] = refcon ; - wxMacNetEventsEvents[wxMacNetEventsTop] = event ; - - // clumsy construct in order to never have a incorrect wxMacNetEventsTop (above limits) - - if ( wxMacNetEventsTop + 1 == kwxMacNetEventsMax ) - wxMacNetEventsTop = 0 ; - else - wxMacNetEventsTop++ ; -} - -#endif -#ifdef __WINDOWS__ - -extern char wxPanelClassName[]; - -LRESULT APIENTRY _EXPORT wxSocketHandlerWndProc(HWND hWnd, UINT message, - WPARAM wParam, LPARAM lParam) -{ - if(message==WM_DESTROY) - { - ::SetWindowLong(hWnd, GWL_WNDPROC, (LONG) DefWindowProc); - return DefWindowProc(hWnd, message, wParam, lParam); - } - wxSocketHandler *h_sock = (wxSocketHandler *)GetWindowLong(hWnd, GWL_USERDATA); - wxNode *node = h_sock->smsg_list->Find(message); - wxSocketBase *sock; - wxSocketBase::wxRequestEvent sk_req; - UINT event = WSAGETSELECTEVENT(lParam); - - if (!node) - return DefWindowProc(hWnd, message, wParam, lParam); - - sock = (wxSocketBase *)node->Data(); - - switch (event) { - case FD_READ: - sk_req = wxSocketBase::EVT_READ; - break; - case FD_WRITE: - sk_req = wxSocketBase::EVT_WRITE; - break; - case FD_CLOSE: - sk_req = wxSocketBase::EVT_LOST; - break; - case FD_ACCEPT: - sk_req = wxSocketBase::EVT_ACCEPT; - break; - case FD_CONNECT: - sk_req = wxSocketBase::EVT_CONNECT; - break; - - default: - wxFAIL_MSG("invalid socket event"); - return (LRESULT)0; - } - - sock->OnRequest(sk_req); - - return (LRESULT)0; -} - -FARPROC wxSocketSubClassProc = NULL; - -#endif - -wxSocketHandler::wxSocketHandler() -{ -#if defined(__WINDOWS__) - if (!win_initialized) - { - WSADATA wsaData; - - WSAStartup((1 << 8) | 1, &wsaData); - win_initialized = 1; - } - internal = new wxSockHandlerInternal; - internal->sockWin = ::CreateWindow(wxPanelClassName, NULL, 0, - 0, 0, 0, 0, NULL, (HMENU) NULL, - wxhInstance, 0); - - // Subclass the window - if (!wxSocketSubClassProc) - wxSocketSubClassProc = MakeProcInstance((FARPROC) wxSocketHandlerWndProc, wxhInstance); - ::SetWindowLong(internal->sockWin, GWL_WNDPROC, (LONG) wxSocketSubClassProc); - ::SetWindowLong(internal->sockWin, GWL_USERDATA, (LONG) this); - - internal->firstAvailableMsg = 5000; - smsg_list = new wxList(wxKEY_INTEGER); -#endif - - socks = new wxList; - -#ifndef __WINDOWS__ - signal(SIGPIPE, SIG_IGN); -#endif -} - -// -------------------------------------------------------------- -// --------- wxSocketHandler DESTRUCTOR ------------------------- -// -------------------------------------------------------------- -wxSocketHandler::~wxSocketHandler() -{ - wxNode *next_node, *node = socks->First(); - - while (node) - { - wxSocketBase* sock = (wxSocketBase*)node->Data(); - - delete sock; - next_node = node->Next(); - delete node; - node = next_node; - } - - delete socks; - -#ifdef __WINDOWS__ - delete smsg_list; - - ::DestroyWindow(internal->sockWin); - WSACleanup(); - win_initialized = 0; - - delete internal; -#endif -} - -// -------------------------------------------------------------- -// --------- wxSocketHandler registering functions -------------- -// -------------------------------------------------------------- - -void wxSocketHandler::Register(wxSocketBase* sock) -{ - wxNode *node; - - for (node = socks->First(); node != NULL; node = node->Next()) - { - wxSocketBase* s = (wxSocketBase*)node->Data(); - - if (s == sock) - return; - } - - if (sock) - { - socks->Append(sock); - sock->SetHandler(this); - sock->SetupCallbacks(); - } -} - -void wxSocketHandler::UnRegister(wxSocketBase* sock) -{ - wxNode *node; - - for (node = socks->First(); node; node = node->Next()) - { - wxSocketBase* s = (wxSocketBase*)node->Data(); - - if (s == sock) - { - delete node; - sock->DestroyCallbacks(); - sock->SetHandler(NULL); - return; - } - } -} - -unsigned long wxSocketHandler::Count() const -{ - return socks->Number(); -} - -// -------------------------------------------------------------- -// --------- wxSocketHandler "big" wait functions --------------- -// -------------------------------------------------------------- -void handler_cbk(wxSocketBase& sock, - wxSocketBase::wxRequestEvent WXUNUSED(flags), - char *cdata) -{ - int *a_wait = (int *)cdata; - - (*a_wait)++; - sock.Notify(FALSE); -} - -int wxSocketHandler::Wait(long seconds, long microseconds) -{ - int i; - int on_wait; - wxSockWakeUp s_wake(NULL, &on_wait, -2); - wxNode *node; - - for (node = socks->First(), i=0; node; node = node->Next(), i++) - { - wxSocketBase *sock = (wxSocketBase *)node->Data(); - - sock->SaveState(); - - sock->SetupCallbacks(); - - sock->Callback(handler_cbk); - sock->CallbackData((char *)&on_wait); - } - on_wait = 0; - if (seconds != -1) - s_wake.Start((seconds*1000) + (microseconds/1000), TRUE); - - while (!on_wait) - PROCESS_EVENTS(); - - for (node = socks->First(), i=0; node; node = node->Next(), i++) - { - wxSocketBase *sock = (wxSocketBase *)node->Data(); - - sock->RestoreState(); - } - - if (on_wait == -2) - return 0; - - return on_wait; -} - -void wxSocketHandler::YieldSock() -{ - wxNode *node; - - for (node = socks->First(); node; node = node->Next() ) - { - wxSocketBase *sock = (wxSocketBase *)node->Data(); - - sock->SaveState(); - - sock->SetFlags(wxSocketBase::SPEED); - if (sock->IsData()) - sock->DoRequests(wxSocketBase::EVT_READ); - sock->DoRequests(wxSocketBase::EVT_WRITE); - - sock->RestoreState(); - } -} - -// -------------------------------------------------------------- -// --------- wxSocketHandler: create and register the socket ---- -// -------------------------------------------------------------- -wxSocketServer *wxSocketHandler::CreateServer(wxSockAddress& addr, - wxSocketBase::wxSockFlags flags) -{ - wxSocketServer *serv = new wxSocketServer(addr, flags); - - Register(serv); - return serv; -} - -wxSocketClient *wxSocketHandler::CreateClient(wxSocketBase::wxSockFlags flags) -{ - wxSocketClient *client = new wxSocketClient(flags); - - Register(client); - return client; -} - -#ifdef __WINDOWS__ -// -------------------------------------------------------------- -// --------- wxSocketHandler: Windows specific methods ---------- -// -------------------------------------------------------------- - -UINT wxSocketHandler::NewMessage(wxSocketBase *sock) -{ - internal->firstAvailableMsg++; - smsg_list->Append(internal->firstAvailableMsg, sock); - return internal->firstAvailableMsg; -} - -void wxSocketHandler::DestroyMessage(UINT msg) -{ - wxNode *node = smsg_list->Find(msg); - delete node; -} - -HWND wxSocketHandler::GetHWND() const -{ - return internal->sockWin; -} - -#endif - -bool wxSocketModule::OnInit() -{ - wxSocketHandler::master = new wxSocketHandler(); - return TRUE; -} - -void wxSocketModule::OnExit() -{ - delete wxSocketHandler::master; - wxSocketHandler::master = NULL; -} - -#ifdef __WXMAC__ -void wxMacProcessSocketEvents() ; -void wxMacProcessEvents() -{ - wxMacProcessSocketEvents() ; - (*GUSISpin)(SP_MISC, 0) ; -} - -void wxMacProcessSocketEvents() -{ - while ( wxMacNetEventsTop != wxMacNetEventsBottom ) - { - // consume event at wxMacNetEventsBottom - wxMacSocketOnRequestProc(wxMacNetEventsReferences[wxMacNetEventsBottom] , wxMacNetEventsEvents[wxMacNetEventsBottom] ) ; - wxMacNetEventsBottom++ ; - if ( wxMacNetEventsBottom == kwxMacNetEventsMax ) - wxMacNetEventsBottom = 0 ; - } -} -#endif - -#endif - // __WXSTUBS__ diff --git a/src/common/stream.cpp b/src/common/stream.cpp deleted file mode 100644 index 728d50b5cf..0000000000 --- a/src/common/stream.cpp +++ /dev/null @@ -1,836 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: stream.cpp -// Purpose: wxStream base classes -// Author: Guilhem Lavaux -// Modified by: -// Created: 11/07/98 -// RCS-ID: $Id$ -// Copyright: (c) Guilhem Lavaux -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "stream.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" -#include -#include -#include -#include - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#define BUF_TEMP_SIZE 10000 - -// ---------------------------------------------------------------------------- -// wxStreamBuffer -// ---------------------------------------------------------------------------- - -#define CHECK_ERROR(err) \ - if (m_stream->m_lasterror == wxStream_NOERROR) \ - m_stream->m_lasterror = err - -wxStreamBuffer::wxStreamBuffer(wxStreamBase& stream, BufMode mode) - : m_buffer_start(NULL), m_buffer_end(NULL), m_buffer_pos(NULL), - m_buffer_size(0), m_wback(NULL), m_wbacksize(0), m_wbackcur(0), - m_fixed(TRUE), m_flushable(TRUE), m_stream(&stream), - m_mode(mode), m_destroybuf(FALSE), m_destroystream(FALSE) -{ -} - -wxStreamBuffer::wxStreamBuffer(BufMode mode) - : m_buffer_start(NULL), m_buffer_end(NULL), m_buffer_pos(NULL), - m_buffer_size(0), m_wback(NULL), m_wbacksize(0), m_wbackcur(0), - m_fixed(TRUE), m_flushable(FALSE), m_stream(NULL), - m_mode(mode), m_destroybuf(FALSE), m_destroystream(TRUE) -{ - m_stream = new wxStreamBase(); -} - -wxStreamBuffer::wxStreamBuffer(const wxStreamBuffer& buffer) -{ - m_buffer_start = buffer.m_buffer_start; - m_buffer_end = buffer.m_buffer_end; - m_buffer_pos = buffer.m_buffer_pos; - m_buffer_size = buffer.m_buffer_size; - m_fixed = buffer.m_fixed; - m_flushable = buffer.m_flushable; - m_stream = buffer.m_stream; - m_mode = buffer.m_mode; - m_destroybuf = FALSE; - m_destroystream = FALSE; - m_wback = NULL; - m_wbacksize = 0; - m_wbackcur = 0; -} - -wxStreamBuffer::~wxStreamBuffer() -{ - if (m_wback) - free(m_wback); - if (m_destroybuf) - wxDELETEA(m_buffer_start); - if (m_destroystream) - delete m_stream; -} - -size_t wxStreamBuffer::WriteBack(const char *buf, size_t bufsize) -{ - char *ptrback; - - ptrback = AllocSpaceWBack(bufsize); - if (!ptrback) - return 0; - - memcpy(ptrback, buf, bufsize); - return bufsize; -} - -bool wxStreamBuffer::WriteBack(char c) -{ - char *ptrback; - - ptrback = AllocSpaceWBack(1); - if (!ptrback) - return FALSE; - - *ptrback = c; - return TRUE; -} - -void wxStreamBuffer::SetBufferIO(char *buffer_start, char *buffer_end) -{ - if (m_destroybuf) - wxDELETEA(m_buffer_start); - m_buffer_start = buffer_start; - m_buffer_end = buffer_end; - - m_buffer_size = m_buffer_end-m_buffer_start; - m_destroybuf = FALSE; - ResetBuffer(); -} - -void wxStreamBuffer::SetBufferIO(size_t bufsize) -{ - char *b_start; - - if (m_destroybuf) - wxDELETEA(m_buffer_start); - - if (!bufsize) { - m_buffer_start = NULL; - m_buffer_end = NULL; - m_buffer_pos = NULL; - m_buffer_size = 0; - return; - } - - b_start = new char[bufsize]; - SetBufferIO(b_start, b_start + bufsize); - m_destroybuf = TRUE; -} - -void wxStreamBuffer::ResetBuffer() -{ - m_stream->m_lasterror = wxStream_NOERROR; - if (m_mode == read) - m_buffer_pos = m_buffer_end; - else - m_buffer_pos = m_buffer_start; -} - -char *wxStreamBuffer::AllocSpaceWBack(size_t needed_size) -{ - char *temp_b; - - m_wbacksize += needed_size; - - if (!m_wback) - temp_b = (char *)malloc(m_wbacksize); - else - temp_b = (char *)realloc(m_wback, m_wbacksize); - - if (!temp_b) - return NULL; - m_wback = temp_b; - - return (char *)(m_wback+(m_wbacksize-needed_size)); -} - -size_t wxStreamBuffer::GetWBack(char *buf, size_t bsize) -{ - size_t s_toget = m_wbacksize-m_wbackcur; - - if (bsize < s_toget) - s_toget = bsize; - - memcpy(buf, (m_wback+m_wbackcur), s_toget); - - m_wbackcur += s_toget; - if (m_wbackcur == m_wbacksize) { - free(m_wback); - m_wback = (char *)NULL; - m_wbacksize = 0; - m_wbackcur = 0; - } - - return s_toget; -} - -bool wxStreamBuffer::FillBuffer() -{ - size_t count; - - count = m_stream->OnSysRead(m_buffer_start, m_buffer_size); - m_buffer_end = m_buffer_start+count; - m_buffer_pos = m_buffer_start; - - if (count == 0) - return FALSE; - return TRUE; -} - -bool wxStreamBuffer::FlushBuffer() -{ - size_t count, current; - - if (m_buffer_pos == m_buffer_start || !m_flushable) - return FALSE; - - current = m_buffer_pos-m_buffer_start; - count = m_stream->OnSysWrite(m_buffer_start, current); - if (count != current) - return FALSE; - m_buffer_pos = m_buffer_start; - - return TRUE; -} - -void wxStreamBuffer::GetFromBuffer(void *buffer, size_t size) -{ - size_t s_toget = m_buffer_end-m_buffer_pos; - - if (size < s_toget) - s_toget = size; - - memcpy(buffer, m_buffer_pos, s_toget); - m_buffer_pos += s_toget; -} - -void wxStreamBuffer::PutToBuffer(const void *buffer, size_t size) -{ - size_t s_toput = m_buffer_end-m_buffer_pos; - - if (s_toput < size && !m_fixed) { - m_buffer_start = (char *)realloc(m_buffer_start, m_buffer_size+size); - // I round a bit - m_buffer_size += size; - m_buffer_end = m_buffer_start+m_buffer_size; - s_toput = size; - } - if (s_toput > size) - s_toput = size; - memcpy(m_buffer_pos, buffer, s_toput); - m_buffer_pos += s_toput; -} - -void wxStreamBuffer::PutChar(char c) -{ - wxASSERT(m_stream != NULL); - - if (!m_buffer_size) { - m_stream->OnSysWrite(&c, 1); - return; - } - - if (!GetDataLeft() && !FlushBuffer()) { - CHECK_ERROR(wxStream_READ_ERR); - return; - } - - PutToBuffer(&c, 1); - m_stream->m_lastcount = 1; -} - -char wxStreamBuffer::GetChar() -{ - char c; - - wxASSERT(m_stream != NULL); - - if (!m_buffer_size) { - m_stream->OnSysRead(&c, 1); - return c; - } - - if (!GetDataLeft()) { - CHECK_ERROR(wxStream_READ_ERR); - return 0; - } - - GetFromBuffer(&c, 1); - m_stream->m_lastcount = 1; - return c; -} - -size_t wxStreamBuffer::Read(void *buffer, size_t size) -{ - wxASSERT(m_stream != NULL); - - // ------------------ - // Buffering disabled - // ------------------ - - m_stream->m_lasterror = wxStream_NOERROR; - m_stream->m_lastcount = GetWBack((char *)buffer, size); - size -= m_stream->m_lastcount; - if (size == 0) - return m_stream->m_lastcount; - - buffer = (void *)((char *)buffer+m_stream->m_lastcount); - - if (!m_buffer_size) - return (m_stream->m_lastcount += m_stream->OnSysRead(buffer, size)); - - // ----------------- - // Buffering enabled - // ----------------- - size_t buf_left, orig_size = size; - - while (size > 0) { - buf_left = GetDataLeft(); - - // First case: the requested buffer is larger than the stream buffer, - // we split it. - if (size > buf_left) { - GetFromBuffer(buffer, buf_left); - size -= buf_left; - buffer = (char *)buffer + buf_left; // ANSI C++ violation. - - if (!FillBuffer()) { - CHECK_ERROR(wxStream_READ_ERR); - return (m_stream->m_lastcount = orig_size-size); - } - } else { - - // Second case: we just copy from the stream buffer. - GetFromBuffer(buffer, size); - break; - } - } - return (m_stream->m_lastcount += orig_size); -} - -size_t wxStreamBuffer::Read(wxStreamBuffer *s_buf) -{ - char buf[BUF_TEMP_SIZE]; - size_t s = 0, bytes_read = BUF_TEMP_SIZE; - - while (bytes_read == BUF_TEMP_SIZE) { - bytes_read = Read(buf, bytes_read); - bytes_read = s_buf->Write(buf, bytes_read); - s += bytes_read; - } - return s; -} - -size_t wxStreamBuffer::Write(const void *buffer, size_t size) -{ - wxASSERT(m_stream != NULL); - - // ------------------ - // Buffering disabled - // ------------------ - - m_stream->m_lasterror = wxStream_NOERROR; - if (!m_buffer_size) - return (m_stream->m_lastcount = m_stream->OnSysWrite(buffer, size)); - - // ------------------ - // Buffering enabled - // ------------------ - - size_t buf_left, orig_size = size; - - while (size > 0) { - buf_left = m_buffer_end - m_buffer_pos; - - // First case: the buffer to write is larger than the stream buffer, - // we split it - if (size > buf_left) { - PutToBuffer(buffer, buf_left); - size -= buf_left; - buffer = (char *)buffer + buf_left; // ANSI C++ violation. - - if (!FlushBuffer()) { - CHECK_ERROR(wxStream_WRITE_ERR); - return (m_stream->m_lastcount = orig_size-size); - } - - m_buffer_pos = m_buffer_start; - - } else { - - // Second case: just copy it in the stream buffer. - PutToBuffer(buffer, size); - break; - } - } - return (m_stream->m_lastcount = orig_size); -} - -size_t wxStreamBuffer::Write(wxStreamBuffer *sbuf) -{ - char buf[BUF_TEMP_SIZE]; - size_t s = 0, bytes_count = BUF_TEMP_SIZE, b_count2; - - while (bytes_count == BUF_TEMP_SIZE) { - b_count2 = sbuf->Read(buf, bytes_count); - bytes_count = Write(buf, b_count2); - if (b_count2 > bytes_count) - sbuf->WriteBack(buf+bytes_count, b_count2-bytes_count); - s += bytes_count; - } - return s; -} - -off_t wxStreamBuffer::Seek(off_t pos, wxSeekMode mode) -{ - off_t ret_off, diff, last_access; - - last_access = GetLastAccess(); - - if (!m_flushable) { - diff = pos + GetIntPosition(); - if (diff < 0 || diff > last_access) - return wxInvalidOffset; - SetIntPosition(diff); - return diff; - } - - switch (mode) { - case wxFromStart: { - // We'll try to compute an internal position later ... - ret_off = m_stream->OnSysSeek(pos, wxFromStart); - ResetBuffer(); - return ret_off; - } - case wxFromCurrent: { - diff = pos + GetIntPosition(); - - if ( (diff > last_access) || (diff < 0) ) { - ret_off = m_stream->OnSysSeek(pos, wxFromCurrent); - ResetBuffer(); - return ret_off; - } else { - SetIntPosition(diff); - return pos; - } - } - case wxFromEnd: - // Hard to compute: always seek to the requested position. - ret_off = m_stream->OnSysSeek(pos, wxFromEnd); - ResetBuffer(); - return ret_off; - } - return wxInvalidOffset; -} - -off_t wxStreamBuffer::Tell() const -{ - off_t pos; - - if (m_flushable) { - pos = m_stream->OnSysTell(); - if (pos == wxInvalidOffset) - return wxInvalidOffset; - return pos - GetLastAccess() + GetIntPosition(); - } else - return GetIntPosition(); -} - -size_t wxStreamBuffer::GetDataLeft() -{ - if (m_buffer_end == m_buffer_pos && m_flushable) - FillBuffer(); - return m_buffer_end-m_buffer_pos; -} - -// ---------------------------------------------------------------------------- -// wxStreamBase -// ---------------------------------------------------------------------------- - -wxStreamBase::wxStreamBase() -{ - m_lasterror = wxStream_NOERROR; - m_lastcount = 0; -} - -wxStreamBase::~wxStreamBase() -{ -} - -size_t wxStreamBase::OnSysRead(void *WXUNUSED(buffer), size_t WXUNUSED(size)) -{ - return 0; -} - -size_t wxStreamBase::OnSysWrite(const void *WXUNUSED(buffer), size_t WXUNUSED(bufsize)) -{ - return 0; -} - -off_t wxStreamBase::OnSysSeek(off_t WXUNUSED(seek), wxSeekMode WXUNUSED(mode)) -{ - return wxInvalidOffset; -} - -off_t wxStreamBase::OnSysTell() const -{ - return wxInvalidOffset; -} - -// ---------------------------------------------------------------------------- -// wxInputStream -// ---------------------------------------------------------------------------- - -wxInputStream::wxInputStream() - : wxStreamBase() -{ - m_i_destroybuf = TRUE; - m_i_streambuf = new wxStreamBuffer(*this, wxStreamBuffer::read); -} - -wxInputStream::wxInputStream(wxStreamBuffer *buffer) - : wxStreamBase() -{ - m_i_destroybuf = FALSE; - m_i_streambuf = buffer; -} - -wxInputStream::~wxInputStream() -{ - if (m_i_destroybuf) - delete m_i_streambuf; -} - -char wxInputStream::GetC() -{ - char c; - m_i_streambuf->Read(&c, 1); - return c; -} - -wxInputStream& wxInputStream::Read(void *buffer, size_t size) -{ - m_i_streambuf->Read(buffer, size); - // wxStreamBuffer sets all variables for us - return *this; -} - -char wxInputStream::Peek() -{ - m_i_streambuf->GetDataLeft(); - - return *(m_i_streambuf->GetBufferPos()); -} - - -wxInputStream& wxInputStream::Read(wxOutputStream& stream_out) -{ - char buf[BUF_TEMP_SIZE]; - size_t bytes_read = BUF_TEMP_SIZE; - - while (bytes_read == BUF_TEMP_SIZE) { - bytes_read = Read(buf, bytes_read).LastRead(); - bytes_read = stream_out.Write(buf, bytes_read).LastWrite(); - } - return *this; -} - -off_t wxInputStream::SeekI(off_t pos, wxSeekMode mode) -{ - return m_i_streambuf->Seek(pos, mode); -} - -off_t wxInputStream::TellI() const -{ - return m_i_streambuf->Tell(); -} - -// -------------------- -// Overloaded operators -// -------------------- - -wxInputStream& wxInputStream::operator>>(wxString& line) -{ - wxDataInputStream s(*this); - - line = s.ReadLine(); - return *this; -} - -wxInputStream& wxInputStream::operator>>(char& c) -{ - c = GetC(); - return *this; -} - -wxInputStream& wxInputStream::operator>>(short& i) -{ - long l; - - *this >> l; - i = (short)l; - return *this; -} - -wxInputStream& wxInputStream::operator>>(int& i) -{ - long l; - - *this >> l; - i = (short)l; - return *this; -} - -wxInputStream& wxInputStream::operator>>(long& i) -{ - /* I only implemented a simple integer parser */ - int c, sign; - - while (isspace( c = GetC() ) ) - /* Do nothing */ ; - - i = 0; - if (! (c == '-' || isdigit(c)) ) { - InputStreamBuffer()->WriteBack(c); - return *this; - } - - if (c == '-') { - sign = -1; - c = GetC(); - } else - sign = 1; - - while (isdigit(c)) { - i = i*10 + c; - c = GetC(); - } - - i *= sign; - - return *this; -} - -wxInputStream& wxInputStream::operator>>(double& f) -{ - /* I only implemented a simple float parser */ - int c, sign; - - while (isspace( c = GetC() ) ) - /* Do nothing */ ; - - f = 0.0; - if (! (c == '-' || isdigit(c)) ) { - InputStreamBuffer()->WriteBack(c); - return *this; - } - - if (c == '-') { - sign = -1; - c = GetC(); - } else - sign = 1; - - while (isdigit(c)) { - f = f*10 + (c - '0'); - c = GetC(); - } - - if (c == '.') { - double f_multiplicator = (double) 0.1; - c = GetC(); - - while (isdigit(c)) { - f += (c-'0')*f_multiplicator; - f_multiplicator /= 10; - c = GetC(); - } - } - - f *= sign; - - return *this; -} - -#if wxUSE_SERIAL -wxInputStream& wxInputStream::operator>>(wxObject *& obj) -{ - wxObjectInputStream obj_s(*this); - obj = obj_s.LoadObject(); - return *this; -} -#endif - - -// ---------------------------------------------------------------------------- -// wxOutputStream -// ---------------------------------------------------------------------------- -wxOutputStream::wxOutputStream() - : wxStreamBase() -{ - m_o_destroybuf = TRUE; - m_o_streambuf = new wxStreamBuffer(*this, wxStreamBuffer::write); -} - -wxOutputStream::wxOutputStream(wxStreamBuffer *buffer) - : wxStreamBase() -{ - m_o_destroybuf = FALSE; - m_o_streambuf = buffer; -} - -wxOutputStream::~wxOutputStream() -{ - if (m_o_destroybuf) - delete m_o_streambuf; -} - -wxOutputStream& wxOutputStream::Write(const void *buffer, size_t size) -{ - m_o_streambuf->Write(buffer, size); - return *this; -} - -wxOutputStream& wxOutputStream::Write(wxInputStream& stream_in) -{ - stream_in.Read(*this); - return *this; -} - -off_t wxOutputStream::TellO() const -{ - return m_o_streambuf->Tell(); -} - -off_t wxOutputStream::SeekO(off_t pos, wxSeekMode mode) -{ - return m_o_streambuf->Seek(pos, mode); -} - -void wxOutputStream::Sync() -{ - m_o_streambuf->FlushBuffer(); -} - -wxOutputStream& wxOutputStream::operator<<(const char *string) -{ - return Write(string, strlen(string)); -} - -wxOutputStream& wxOutputStream::operator<<(wxString& string) -{ - return Write(string, string.Len()); -} - -wxOutputStream& wxOutputStream::operator<<(char c) -{ - return Write(&c, 1); -} - -wxOutputStream& wxOutputStream::operator<<(short i) -{ - wxString strint; - - strint.Printf("%i", i); - return Write(strint, strint.Len()); -} - -wxOutputStream& wxOutputStream::operator<<(int i) -{ - wxString strint; - - strint.Printf("%i", i); - return Write(strint, strint.Len()); -} - -wxOutputStream& wxOutputStream::operator<<(long i) -{ - wxString strlong; - - strlong.Printf("%i", i); - return Write((const char *)strlong, strlong.Len()); -} - -wxOutputStream& wxOutputStream::operator<<(double f) -{ - wxString strfloat; - - strfloat.Printf("%f", f); - return Write(strfloat, strfloat.Len()); -} - -#if wxUSE_SERIAL -wxOutputStream& wxOutputStream::operator<<(wxObject& obj) -{ - wxObjectOutputStream obj_s(*this); - obj_s.SaveObject(obj); - return *this; -} -#endif - -// ---------------------------------------------------------------------------- -// wxFilterInputStream -// ---------------------------------------------------------------------------- -wxFilterInputStream::wxFilterInputStream() - : wxInputStream(NULL) -{ - // WARNING streambuf set to NULL ! -} - -wxFilterInputStream::wxFilterInputStream(wxInputStream& stream) - : wxInputStream(stream.InputStreamBuffer()) -{ - m_parent_i_stream = &stream; -} - -wxFilterInputStream::~wxFilterInputStream() -{ -} - -// ---------------------------------------------------------------------------- -// wxFilterOutputStream -// ---------------------------------------------------------------------------- -wxFilterOutputStream::wxFilterOutputStream() - : wxOutputStream(NULL) -{ -} - -wxFilterOutputStream::wxFilterOutputStream(wxOutputStream& stream) - : wxOutputStream(stream.OutputStreamBuffer()) -{ - m_parent_o_stream = &stream; -} - -wxFilterOutputStream::~wxFilterOutputStream() -{ -} - -// ---------------------------------------------------------------------------- -// Some IOManip function -// ---------------------------------------------------------------------------- - -wxOutputStream& wxEndL(wxOutputStream& stream) -{ -#ifdef __MSW__ - return stream.Write("\r\n", 2); -#else - return stream.Write("\n", 1); -#endif -} diff --git a/src/common/string.cpp b/src/common/string.cpp deleted file mode 100644 index 5329f085e2..0000000000 --- a/src/common/string.cpp +++ /dev/null @@ -1,1455 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: string.cpp -// Purpose: wxString class -// Author: Vadim Zeitlin -// Modified by: -// Created: 29/01/98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "string.h" -#endif - -/* - * About ref counting: - * 1) all empty strings use g_strEmpty, nRefs = -1 (set in Init()) - * 2) AllocBuffer() sets nRefs to 1, Lock() increments it by one - * 3) Unlock() decrements nRefs and frees memory if it goes to 0 - */ - -// =========================================================================== -// headers, declarations, constants -// =========================================================================== - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP - #include "wx/defs.h" - #include "wx/string.h" - #include "wx/intl.h" -#endif - -#include -#include -#include - -#ifdef __SALFORDC__ -#include -#endif - -#if wxUSE_WCSRTOMBS - #include // for wcsrtombs(), see comments where it's used -#endif // GNU - -#ifdef WXSTRING_IS_WXOBJECT - IMPLEMENT_DYNAMIC_CLASS(wxString, wxObject) -#endif //WXSTRING_IS_WXOBJECT - -// allocating extra space for each string consumes more memory but speeds up -// the concatenation operations (nLen is the current string's length) -// NB: EXTRA_ALLOC must be >= 0! -#define EXTRA_ALLOC (19 - nLen % 16) - -// --------------------------------------------------------------------------- -// static class variables definition -// --------------------------------------------------------------------------- - -#ifdef wxSTD_STRING_COMPATIBILITY - const size_t wxString::npos = STRING_MAXLEN; -#endif // wxSTD_STRING_COMPATIBILITY - -// ---------------------------------------------------------------------------- -// static data -// ---------------------------------------------------------------------------- - -// for an empty string, GetStringData() will return this address: this -// structure has the same layout as wxStringData and it's data() method will -// return the empty string (dummy pointer) -static const struct -{ - wxStringData data; - char dummy; -} g_strEmpty = { {-1, 0, 0}, '\0' }; - -// empty C style string: points to 'string data' byte of g_strEmpty -extern const char WXDLLEXPORT *g_szNul = &g_strEmpty.dummy; - -// ---------------------------------------------------------------------------- -// conditional compilation -// ---------------------------------------------------------------------------- - -// we want to find out if the current platform supports vsnprintf()-like -// function: for Unix this is done with configure, for Windows we test the -// compiler explicitly. -#ifdef __WXMSW__ - #ifdef _MSC_VER - #define wxVsprintf _vsnprintf - #endif -#else // !Windows - #ifdef HAVE_VSNPRINTF - #define wxVsprintf vsnprintf - #endif -#endif // Windows/!Windows - -#ifndef wxVsprintf - // in this case we'll use vsprintf() (which is ANSI and thus should be - // always available), but it's unsafe because it doesn't check for buffer - // size - so give a warning - #define wxVsprintf(buffer,len,format,argptr) vsprintf(buffer,format, argptr) -#ifndef __SC__ - #pragma message("Using sprintf() because no snprintf()-like function defined") -#endif -#endif - -// ---------------------------------------------------------------------------- -// global functions -// ---------------------------------------------------------------------------- - -#ifdef wxSTD_STRING_COMPATIBILITY - -// MS Visual C++ version 5.0 provides the new STL headers as well as the old -// iostream ones. -// -// ATTN: you can _not_ use both of these in the same program! -#if wxUSE_IOSTREAMH -#include -#define NAMESPACE -#else -#include -# ifdef _MSC_VER - using namespace std; -# endif -// for msvc (bcc50+ also) you don't need these NAMESPACE defines, -// using namespace std; takes care of that. -#define NAMESPACE std:: -#endif - -#ifdef __WXMSW__ - #ifdef _MSC_VER - #define wxVsprintf _vsnprintf - #endif -#else - #if defined ( HAVE_VSNPRINTF ) - #define wxVsprintf vsnprintf - #endif -#endif - -#ifndef wxVsprintf - // vsprintf() is ANSI so we can always use it, but it's unsafe! - #define wxVsprintf(buffer,len,format,argptr) vsprintf(buffer,format, argptr) - #pragma message("Using sprintf() because no snprintf()-like function defined") -#endif - -NAMESPACE istream& operator>>(NAMESPACE istream& is, wxString& WXUNUSED(str)) -{ -#if 0 - int w = is.width(0); - if ( is.ipfx(0) ) { - NAMESPACE streambuf *sb = is.rdbuf(); - str.erase(); - while ( true ) { - int ch = sb->sbumpc (); - if ( ch == EOF ) { - is.setstate(NAMESPACE ios::eofbit); - break; - } - else if ( isspace(ch) ) { - sb->sungetc(); - break; - } - - str += ch; - if ( --w == 1 ) - break; - } - } - - is.isfx(); - if ( str.length() == 0 ) - is.setstate(NAMESPACE ios::failbit); -#endif - return is; -} - -#endif //std::string compatibility - -// ---------------------------------------------------------------------------- -// private classes -// ---------------------------------------------------------------------------- - -// this small class is used to gather statistics for performance tuning -//#define WXSTRING_STATISTICS -#ifdef WXSTRING_STATISTICS - class Averager - { - public: - Averager(const char *sz) { m_sz = sz; m_nTotal = m_nCount = 0; } - ~Averager() - { printf("wxString: average %s = %f\n", m_sz, ((float)m_nTotal)/m_nCount); } - - void Add(size_t n) { m_nTotal += n; m_nCount++; } - - private: - size_t m_nCount, m_nTotal; - const char *m_sz; - } g_averageLength("allocation size"), - g_averageSummandLength("summand length"), - g_averageConcatHit("hit probability in concat"), - g_averageInitialLength("initial string length"); - - #define STATISTICS_ADD(av, val) g_average##av.Add(val) -#else - #define STATISTICS_ADD(av, val) -#endif // WXSTRING_STATISTICS - -// =========================================================================== -// wxString class core -// =========================================================================== - -// --------------------------------------------------------------------------- -// construction -// --------------------------------------------------------------------------- - -// constructs string of copies of character -wxString::wxString(char ch, size_t nLength) -{ - Init(); - - if ( nLength > 0 ) { - AllocBuffer(nLength); - - wxASSERT( sizeof(char) == 1 ); // can't use memset if not - - memset(m_pchData, ch, nLength); - } -} - -// takes nLength elements of psz starting at nPos -void wxString::InitWith(const char *psz, size_t nPos, size_t nLength) -{ - Init(); - - wxASSERT( nPos <= Strlen(psz) ); - - if ( nLength == STRING_MAXLEN ) - nLength = Strlen(psz + nPos); - - STATISTICS_ADD(InitialLength, nLength); - - if ( nLength > 0 ) { - // trailing '\0' is written in AllocBuffer() - AllocBuffer(nLength); - memcpy(m_pchData, psz + nPos, nLength*sizeof(char)); - } -} - -// the same as previous constructor, but for compilers using unsigned char -wxString::wxString(const unsigned char* psz, size_t nLength) -{ - InitWith((const char *)psz, 0, nLength); -} - -#ifdef wxSTD_STRING_COMPATIBILITY - -// poor man's iterators are "void *" pointers -wxString::wxString(const void *pStart, const void *pEnd) -{ - InitWith((const char *)pStart, 0, - (const char *)pEnd - (const char *)pStart); -} - -#endif //std::string compatibility - -// from wide string -wxString::wxString(const wchar_t *pwz) -{ - // first get necessary size - - // NB: GNU libc5 wcstombs() is completely broken, don't use it (it doesn't - // honor the 3rd parameter, thus it will happily crash here). -#if wxUSE_WCSRTOMBS - // don't know if it's really needed (or if we can pass NULL), but better safe - // than quick - mbstate_t mbstate; - size_t nLen = wcsrtombs((char *) NULL, &pwz, 0, &mbstate); -#else // !GNU libc - size_t nLen = wcstombs((char *) NULL, pwz, 0); -#endif // GNU - - // empty? - if ( nLen != 0 ) { - AllocBuffer(nLen); - wcstombs(m_pchData, pwz, nLen); - } - else { - Init(); - } -} - -// --------------------------------------------------------------------------- -// memory allocation -// --------------------------------------------------------------------------- - -// allocates memory needed to store a C string of length nLen -void wxString::AllocBuffer(size_t nLen) -{ - wxASSERT( nLen > 0 ); // - wxASSERT( nLen <= INT_MAX-1 ); // max size (enough room for 1 extra) - - STATISTICS_ADD(Length, nLen); - - // allocate memory: - // 1) one extra character for '\0' termination - // 2) sizeof(wxStringData) for housekeeping info - wxStringData* pData = (wxStringData*) - malloc(sizeof(wxStringData) + (nLen + EXTRA_ALLOC + 1)*sizeof(char)); - pData->nRefs = 1; - pData->nDataLength = nLen; - pData->nAllocLength = nLen + EXTRA_ALLOC; - m_pchData = pData->data(); // data starts after wxStringData - m_pchData[nLen] = '\0'; -} - -// must be called before changing this string -void wxString::CopyBeforeWrite() -{ - wxStringData* pData = GetStringData(); - - if ( pData->IsShared() ) { - pData->Unlock(); // memory not freed because shared - size_t nLen = pData->nDataLength; - AllocBuffer(nLen); - memcpy(m_pchData, pData->data(), nLen*sizeof(char)); - } - - wxASSERT( !GetStringData()->IsShared() ); // we must be the only owner -} - -// must be called before replacing contents of this string -void wxString::AllocBeforeWrite(size_t nLen) -{ - wxASSERT( nLen != 0 ); // doesn't make any sense - - // must not share string and must have enough space - wxStringData* pData = GetStringData(); - if ( pData->IsShared() || (nLen > pData->nAllocLength) ) { - // can't work with old buffer, get new one - pData->Unlock(); - AllocBuffer(nLen); - } - else { - // update the string length - pData->nDataLength = nLen; - } - - wxASSERT( !GetStringData()->IsShared() ); // we must be the only owner -} - -// allocate enough memory for nLen characters -void wxString::Alloc(size_t nLen) -{ - wxStringData *pData = GetStringData(); - if ( pData->nAllocLength <= nLen ) { - if ( pData->IsEmpty() ) { - nLen += EXTRA_ALLOC; - - wxStringData* pData = (wxStringData*) - malloc(sizeof(wxStringData) + (nLen + 1)*sizeof(char)); - pData->nRefs = 1; - pData->nDataLength = 0; - pData->nAllocLength = nLen; - m_pchData = pData->data(); // data starts after wxStringData - m_pchData[0u] = '\0'; - } - else if ( pData->IsShared() ) { - pData->Unlock(); // memory not freed because shared - size_t nOldLen = pData->nDataLength; - AllocBuffer(nLen); - memcpy(m_pchData, pData->data(), nOldLen*sizeof(char)); - } - else { - nLen += EXTRA_ALLOC; - - wxStringData *p = (wxStringData *) - realloc(pData, sizeof(wxStringData) + (nLen + 1)*sizeof(char)); - - if ( p == NULL ) { - // @@@ what to do on memory error? - return; - } - - // it's not important if the pointer changed or not (the check for this - // is not faster than assigning to m_pchData in all cases) - p->nAllocLength = nLen; - m_pchData = p->data(); - } - } - //else: we've already got enough -} - -// shrink to minimal size (releasing extra memory) -void wxString::Shrink() -{ - wxStringData *pData = GetStringData(); - - // this variable is unused in release build, so avoid the compiler warning by - // just not declaring it -#ifdef __WXDEBUG__ - void *p = -#endif - realloc(pData, sizeof(wxStringData) + (pData->nDataLength + 1)*sizeof(char)); - - wxASSERT( p != NULL ); // can't free memory? - wxASSERT( p == pData ); // we're decrementing the size - block shouldn't move! -} - -// get the pointer to writable buffer of (at least) nLen bytes -char *wxString::GetWriteBuf(size_t nLen) -{ - AllocBeforeWrite(nLen); - - wxASSERT( GetStringData()->nRefs == 1 ); - GetStringData()->Validate(FALSE); - - return m_pchData; -} - -// put string back in a reasonable state after GetWriteBuf -void wxString::UngetWriteBuf() -{ - GetStringData()->nDataLength = strlen(m_pchData); - GetStringData()->Validate(TRUE); -} - -// --------------------------------------------------------------------------- -// data access -// --------------------------------------------------------------------------- - -// all functions are inline in string.h - -// --------------------------------------------------------------------------- -// assignment operators -// --------------------------------------------------------------------------- - -// helper function: does real copy -void wxString::AssignCopy(size_t nSrcLen, const char *pszSrcData) -{ - if ( nSrcLen == 0 ) { - Reinit(); - } - else { - AllocBeforeWrite(nSrcLen); - memcpy(m_pchData, pszSrcData, nSrcLen*sizeof(char)); - GetStringData()->nDataLength = nSrcLen; - m_pchData[nSrcLen] = '\0'; - } -} - -// assigns one string to another -wxString& wxString::operator=(const wxString& stringSrc) -{ - wxASSERT( stringSrc.GetStringData()->IsValid() ); - - // don't copy string over itself - if ( m_pchData != stringSrc.m_pchData ) { - if ( stringSrc.GetStringData()->IsEmpty() ) { - Reinit(); - } - else { - // adjust references - GetStringData()->Unlock(); - m_pchData = stringSrc.m_pchData; - GetStringData()->Lock(); - } - } - - return *this; -} - -// assigns a single character -wxString& wxString::operator=(char ch) -{ - AssignCopy(1, &ch); - return *this; -} - -// assigns C string -wxString& wxString::operator=(const char *psz) -{ - AssignCopy(Strlen(psz), psz); - return *this; -} - -// same as 'signed char' variant -wxString& wxString::operator=(const unsigned char* psz) -{ - *this = (const char *)psz; - return *this; -} - -wxString& wxString::operator=(const wchar_t *pwz) -{ - wxString str(pwz); - *this = str; - return *this; -} - -// --------------------------------------------------------------------------- -// string concatenation -// --------------------------------------------------------------------------- - -// add something to this string -void wxString::ConcatSelf(int nSrcLen, const char *pszSrcData) -{ - STATISTICS_ADD(SummandLength, nSrcLen); - - // concatenating an empty string is a NOP - if ( nSrcLen > 0 ) { - wxStringData *pData = GetStringData(); - size_t nLen = pData->nDataLength; - size_t nNewLen = nLen + nSrcLen; - - // alloc new buffer if current is too small - if ( pData->IsShared() ) { - STATISTICS_ADD(ConcatHit, 0); - - // we have to allocate another buffer - wxStringData* pOldData = GetStringData(); - AllocBuffer(nNewLen); - memcpy(m_pchData, pOldData->data(), nLen*sizeof(char)); - pOldData->Unlock(); - } - else if ( nNewLen > pData->nAllocLength ) { - STATISTICS_ADD(ConcatHit, 0); - - // we have to grow the buffer - Alloc(nNewLen); - } - else { - STATISTICS_ADD(ConcatHit, 1); - - // the buffer is already big enough - } - - // should be enough space - wxASSERT( nNewLen <= GetStringData()->nAllocLength ); - - // fast concatenation - all is done in our buffer - memcpy(m_pchData + nLen, pszSrcData, nSrcLen*sizeof(char)); - - m_pchData[nNewLen] = '\0'; // put terminating '\0' - GetStringData()->nDataLength = nNewLen; // and fix the length - } - //else: the string to append was empty -} - -/* - * concatenation functions come in 5 flavours: - * string + string - * char + string and string + char - * C str + string and string + C str - */ - -wxString operator+(const wxString& string1, const wxString& string2) -{ - wxASSERT( string1.GetStringData()->IsValid() ); - wxASSERT( string2.GetStringData()->IsValid() ); - - wxString s = string1; - s += string2; - - return s; -} - -wxString operator+(const wxString& string, char ch) -{ - wxASSERT( string.GetStringData()->IsValid() ); - - wxString s = string; - s += ch; - - return s; -} - -wxString operator+(char ch, const wxString& string) -{ - wxASSERT( string.GetStringData()->IsValid() ); - - wxString s = ch; - s += string; - - return s; -} - -wxString operator+(const wxString& string, const char *psz) -{ - wxASSERT( string.GetStringData()->IsValid() ); - - wxString s; - s.Alloc(Strlen(psz) + string.Len()); - s = string; - s += psz; - - return s; -} - -wxString operator+(const char *psz, const wxString& string) -{ - wxASSERT( string.GetStringData()->IsValid() ); - - wxString s; - s.Alloc(Strlen(psz) + string.Len()); - s = psz; - s += string; - - return s; -} - -// =========================================================================== -// other common string functions -// =========================================================================== - -// --------------------------------------------------------------------------- -// simple sub-string extraction -// --------------------------------------------------------------------------- - -// helper function: clone the data attached to this string -void wxString::AllocCopy(wxString& dest, int nCopyLen, int nCopyIndex) const -{ - if ( nCopyLen == 0 ) { - dest.Init(); - } - else { - dest.AllocBuffer(nCopyLen); - memcpy(dest.m_pchData, m_pchData + nCopyIndex, nCopyLen*sizeof(char)); - } -} - -// extract string of length nCount starting at nFirst -wxString wxString::Mid(size_t nFirst, size_t nCount) const -{ - wxStringData *pData = GetStringData(); - size_t nLen = pData->nDataLength; - - // default value of nCount is STRING_MAXLEN and means "till the end" - if ( nCount == STRING_MAXLEN ) - { - nCount = nLen - nFirst; - } - - // out-of-bounds requests return sensible things - if ( nFirst + nCount > nLen ) - { - nCount = nLen - nFirst; - } - - if ( nFirst > nLen ) - { - // AllocCopy() will return empty string - nCount = 0; - } - - wxString dest; - AllocCopy(dest, nCount, nFirst); - - return dest; -} - -// extract nCount last (rightmost) characters -wxString wxString::Right(size_t nCount) const -{ - if ( nCount > (size_t)GetStringData()->nDataLength ) - nCount = GetStringData()->nDataLength; - - wxString dest; - AllocCopy(dest, nCount, GetStringData()->nDataLength - nCount); - return dest; -} - -// get all characters after the last occurence of ch -// (returns the whole string if ch not found) -wxString wxString::AfterLast(char ch) const -{ - wxString str; - int iPos = Find(ch, TRUE); - if ( iPos == wxNOT_FOUND ) - str = *this; - else - str = c_str() + iPos + 1; - - return str; -} - -// extract nCount first (leftmost) characters -wxString wxString::Left(size_t nCount) const -{ - if ( nCount > (size_t)GetStringData()->nDataLength ) - nCount = GetStringData()->nDataLength; - - wxString dest; - AllocCopy(dest, nCount, 0); - return dest; -} - -// get all characters before the first occurence of ch -// (returns the whole string if ch not found) -wxString wxString::BeforeFirst(char ch) const -{ - wxString str; - for ( const char *pc = m_pchData; *pc != '\0' && *pc != ch; pc++ ) - str += *pc; - - return str; -} - -/// get all characters before the last occurence of ch -/// (returns empty string if ch not found) -wxString wxString::BeforeLast(char ch) const -{ - wxString str; - int iPos = Find(ch, TRUE); - if ( iPos != wxNOT_FOUND && iPos != 0 ) - str = wxString(c_str(), iPos); - - return str; -} - -/// get all characters after the first occurence of ch -/// (returns empty string if ch not found) -wxString wxString::AfterFirst(char ch) const -{ - wxString str; - int iPos = Find(ch); - if ( iPos != wxNOT_FOUND ) - str = c_str() + iPos + 1; - - return str; -} - -// replace first (or all) occurences of some substring with another one -size_t wxString::Replace(const char *szOld, const char *szNew, bool bReplaceAll) -{ - size_t uiCount = 0; // count of replacements made - - size_t uiOldLen = Strlen(szOld); - - wxString strTemp; - const char *pCurrent = m_pchData; - const char *pSubstr; - while ( *pCurrent != '\0' ) { - pSubstr = strstr(pCurrent, szOld); - if ( pSubstr == NULL ) { - // strTemp is unused if no replacements were made, so avoid the copy - if ( uiCount == 0 ) - return 0; - - strTemp += pCurrent; // copy the rest - break; // exit the loop - } - else { - // take chars before match - strTemp.ConcatSelf(pSubstr - pCurrent, pCurrent); - strTemp += szNew; - pCurrent = pSubstr + uiOldLen; // restart after match - - uiCount++; - - // stop now? - if ( !bReplaceAll ) { - strTemp += pCurrent; // copy the rest - break; // exit the loop - } - } - } - - // only done if there were replacements, otherwise would have returned above - *this = strTemp; - - return uiCount; -} - -bool wxString::IsAscii() const -{ - const char *s = (const char*) *this; - while(*s){ - if(!isascii(*s)) return(FALSE); - s++; - } - return(TRUE); -} - -bool wxString::IsWord() const -{ - const char *s = (const char*) *this; - while(*s){ - if(!isalpha(*s)) return(FALSE); - s++; - } - return(TRUE); -} - -bool wxString::IsNumber() const -{ - const char *s = (const char*) *this; - while(*s){ - if(!isdigit(*s)) return(FALSE); - s++; - } - return(TRUE); -} - -wxString wxString::Strip(stripType w) const -{ - wxString s = *this; - if ( w & leading ) s.Trim(FALSE); - if ( w & trailing ) s.Trim(TRUE); - return s; -} - -// --------------------------------------------------------------------------- -// case conversion -// --------------------------------------------------------------------------- - -wxString& wxString::MakeUpper() -{ - CopyBeforeWrite(); - - for ( char *p = m_pchData; *p; p++ ) - *p = (char)toupper(*p); - - return *this; -} - -wxString& wxString::MakeLower() -{ - CopyBeforeWrite(); - - for ( char *p = m_pchData; *p; p++ ) - *p = (char)tolower(*p); - - return *this; -} - -// --------------------------------------------------------------------------- -// trimming and padding -// --------------------------------------------------------------------------- - -// trims spaces (in the sense of isspace) from left or right side -wxString& wxString::Trim(bool bFromRight) -{ - // first check if we're going to modify the string at all - if ( !IsEmpty() && - ( - (bFromRight && isspace(GetChar(Len() - 1))) || - (!bFromRight && isspace(GetChar(0u))) - ) - ) - { - // ok, there is at least one space to trim - CopyBeforeWrite(); - - if ( bFromRight ) - { - // find last non-space character - char *psz = m_pchData + GetStringData()->nDataLength - 1; - while ( isspace(*psz) && (psz >= m_pchData) ) - psz--; - - // truncate at trailing space start - *++psz = '\0'; - GetStringData()->nDataLength = psz - m_pchData; - } - else - { - // find first non-space character - const char *psz = m_pchData; - while ( isspace(*psz) ) - psz++; - - // fix up data and length - int nDataLength = GetStringData()->nDataLength - (psz - (const char*) m_pchData); - memmove(m_pchData, psz, (nDataLength + 1)*sizeof(char)); - GetStringData()->nDataLength = nDataLength; - } - } - - return *this; -} - -// adds nCount characters chPad to the string from either side -wxString& wxString::Pad(size_t nCount, char chPad, bool bFromRight) -{ - wxString s(chPad, nCount); - - if ( bFromRight ) - *this += s; - else - { - s += *this; - *this = s; - } - - return *this; -} - -// truncate the string -wxString& wxString::Truncate(size_t uiLen) -{ - if ( uiLen < Len() ) { - CopyBeforeWrite(); - - *(m_pchData + uiLen) = '\0'; - GetStringData()->nDataLength = uiLen; - } - //else: nothing to do, string is already short enough - - return *this; -} - -// --------------------------------------------------------------------------- -// finding (return wxNOT_FOUND if not found and index otherwise) -// --------------------------------------------------------------------------- - -// find a character -int wxString::Find(char ch, bool bFromEnd) const -{ - const char *psz = bFromEnd ? strrchr(m_pchData, ch) : strchr(m_pchData, ch); - - return (psz == NULL) ? wxNOT_FOUND : psz - (const char*) m_pchData; -} - -// find a sub-string (like strstr) -int wxString::Find(const char *pszSub) const -{ - const char *psz = strstr(m_pchData, pszSub); - - return (psz == NULL) ? wxNOT_FOUND : psz - (const char*) m_pchData; -} - -// --------------------------------------------------------------------------- -// stream-like operators -// --------------------------------------------------------------------------- -wxString& wxString::operator<<(int i) -{ - wxString res; - res.Printf("%d", i); - - return (*this) << res; -} - -wxString& wxString::operator<<(float f) -{ - wxString res; - res.Printf("%f", f); - - return (*this) << res; -} - -wxString& wxString::operator<<(double d) -{ - wxString res; - res.Printf("%g", d); - - return (*this) << res; -} - -// --------------------------------------------------------------------------- -// formatted output -// --------------------------------------------------------------------------- -int wxString::Printf(const char *pszFormat, ...) -{ - va_list argptr; - va_start(argptr, pszFormat); - - int iLen = PrintfV(pszFormat, argptr); - - va_end(argptr); - - return iLen; -} - -int wxString::PrintfV(const char* pszFormat, va_list argptr) -{ - // static buffer to avoid dynamic memory allocation each time - static char s_szScratch[1024]; - - // NB: wxVsprintf() may return either less than the buffer size or -1 if there - // is not enough place depending on implementation - int iLen = wxVsprintf(s_szScratch, WXSIZEOF(s_szScratch), pszFormat, argptr); - char *buffer; - if ( iLen < (int)WXSIZEOF(s_szScratch) ) { - buffer = s_szScratch; - } - else { - int size = WXSIZEOF(s_szScratch) * 2; - buffer = (char *)malloc(size); - while ( buffer != NULL ) { - iLen = wxVsprintf(buffer, WXSIZEOF(s_szScratch), pszFormat, argptr); - if ( iLen < size ) { - // ok, there was enough space - break; - } - - // still not enough, double it again - buffer = (char *)realloc(buffer, size *= 2); - } - - if ( !buffer ) { - // out of memory - return -1; - } - } - - AllocBeforeWrite(iLen); - strcpy(m_pchData, buffer); - - if ( buffer != s_szScratch ) - free(buffer); - - return iLen; -} - -// ---------------------------------------------------------------------------- -// misc other operations -// ---------------------------------------------------------------------------- -bool wxString::Matches(const char *pszMask) const -{ - // check char by char - const char *pszTxt; - for ( pszTxt = c_str(); *pszMask != '\0'; pszMask++, pszTxt++ ) { - switch ( *pszMask ) { - case '?': - if ( *pszTxt == '\0' ) - return FALSE; - - pszTxt++; - pszMask++; - break; - - case '*': - { - // ignore special chars immediately following this one - while ( *pszMask == '*' || *pszMask == '?' ) - pszMask++; - - // if there is nothing more, match - if ( *pszMask == '\0' ) - return TRUE; - - // are there any other metacharacters in the mask? - size_t uiLenMask; - const char *pEndMask = strpbrk(pszMask, "*?"); - - if ( pEndMask != NULL ) { - // we have to match the string between two metachars - uiLenMask = pEndMask - pszMask; - } - else { - // we have to match the remainder of the string - uiLenMask = strlen(pszMask); - } - - wxString strToMatch(pszMask, uiLenMask); - const char* pMatch = strstr(pszTxt, strToMatch); - if ( pMatch == NULL ) - return FALSE; - - // -1 to compensate "++" in the loop - pszTxt = pMatch + uiLenMask - 1; - pszMask += uiLenMask - 1; - } - break; - - default: - if ( *pszMask != *pszTxt ) - return FALSE; - break; - } - } - - // match only if nothing left - return *pszTxt == '\0'; -} - -// Count the number of chars -int wxString::Freq(char ch) const -{ - int count = 0; - int len = Len(); - for (int i = 0; i < len; i++) - { - if (GetChar(i) == ch) - count ++; - } - return count; -} - -// --------------------------------------------------------------------------- -// standard C++ library string functions -// --------------------------------------------------------------------------- -#ifdef wxSTD_STRING_COMPATIBILITY - -wxString& wxString::insert(size_t nPos, const wxString& str) -{ - wxASSERT( str.GetStringData()->IsValid() ); - wxASSERT( nPos <= Len() ); - - if ( !str.IsEmpty() ) { - wxString strTmp; - char *pc = strTmp.GetWriteBuf(Len() + str.Len()); - strncpy(pc, c_str(), nPos); - strcpy(pc + nPos, str); - strcpy(pc + nPos + str.Len(), c_str() + nPos); - strTmp.UngetWriteBuf(); - *this = strTmp; - } - - return *this; -} - -size_t wxString::find(const wxString& str, size_t nStart) const -{ - wxASSERT( str.GetStringData()->IsValid() ); - wxASSERT( nStart <= Len() ); - - const char *p = strstr(c_str() + nStart, str); - - return p == NULL ? npos : p - c_str(); -} - -// VC++ 1.5 can't cope with the default argument in the header. -#if ! (defined(_MSC_VER) && !defined(__WIN32__)) -size_t wxString::find(const char* sz, size_t nStart, size_t n) const -{ - return find(wxString(sz, n == npos ? 0 : n), nStart); -} -#endif - -// Gives a duplicate symbol (presumably a case-insensitivity problem) -#if !defined(__BORLANDC__) -size_t wxString::find(char ch, size_t nStart) const -{ - wxASSERT( nStart <= Len() ); - - const char *p = strchr(c_str() + nStart, ch); - - return p == NULL ? npos : p - c_str(); -} -#endif - -size_t wxString::rfind(const wxString& str, size_t nStart) const -{ - wxASSERT( str.GetStringData()->IsValid() ); - wxASSERT( nStart <= Len() ); - - // # could be quicker than that - const char *p = c_str() + (nStart == npos ? Len() : nStart); - while ( p >= c_str() + str.Len() ) { - if ( strncmp(p - str.Len(), str, str.Len()) == 0 ) - return p - str.Len() - c_str(); - p--; - } - - return npos; -} - -// VC++ 1.5 can't cope with the default argument in the header. -#if ! (defined(_MSC_VER) && !defined(__WIN32__)) -size_t wxString::rfind(const char* sz, size_t nStart, size_t n) const -{ - return rfind(wxString(sz, n == npos ? 0 : n), nStart); -} - -size_t wxString::rfind(char ch, size_t nStart) const -{ - wxASSERT( nStart <= Len() ); - - const char *p = strrchr(c_str() + nStart, ch); - - return p == NULL ? npos : p - c_str(); -} -#endif - -wxString wxString::substr(size_t nStart, size_t nLen) const -{ - // npos means 'take all' - if ( nLen == npos ) - nLen = 0; - - wxASSERT( nStart + nLen <= Len() ); - - return wxString(c_str() + nStart, nLen == npos ? 0 : nLen); -} - -wxString& wxString::erase(size_t nStart, size_t nLen) -{ - wxString strTmp(c_str(), nStart); - if ( nLen != npos ) { - wxASSERT( nStart + nLen <= Len() ); - - strTmp.append(c_str() + nStart + nLen); - } - - *this = strTmp; - return *this; -} - -wxString& wxString::replace(size_t nStart, size_t nLen, const char *sz) -{ - wxASSERT( nStart + nLen <= Strlen(sz) ); - - wxString strTmp; - if ( nStart != 0 ) - strTmp.append(c_str(), nStart); - strTmp += sz; - strTmp.append(c_str() + nStart + nLen); - - *this = strTmp; - return *this; -} - -wxString& wxString::replace(size_t nStart, size_t nLen, size_t nCount, char ch) -{ - return replace(nStart, nLen, wxString(ch, nCount)); -} - -wxString& wxString::replace(size_t nStart, size_t nLen, - const wxString& str, size_t nStart2, size_t nLen2) -{ - return replace(nStart, nLen, str.substr(nStart2, nLen2)); -} - -wxString& wxString::replace(size_t nStart, size_t nLen, - const char* sz, size_t nCount) -{ - return replace(nStart, nLen, wxString(sz, nCount)); -} - -#endif //std::string compatibility - -// ============================================================================ -// ArrayString -// ============================================================================ - -// size increment = max(50% of current size, ARRAY_MAXSIZE_INCREMENT) -#define ARRAY_MAXSIZE_INCREMENT 4096 -#ifndef ARRAY_DEFAULT_INITIAL_SIZE // also defined in dynarray.h - #define ARRAY_DEFAULT_INITIAL_SIZE (16) -#endif - -#define STRING(p) ((wxString *)(&(p))) - -// ctor -wxArrayString::wxArrayString() -{ - m_nSize = - m_nCount = 0; - m_pItems = (char **) NULL; -} - -// copy ctor -wxArrayString::wxArrayString(const wxArrayString& src) -{ - m_nSize = - m_nCount = 0; - m_pItems = (char **) NULL; - - *this = src; -} - -// assignment operator -wxArrayString& wxArrayString::operator=(const wxArrayString& src) -{ - if ( m_nSize > 0 ) - Clear(); - - if ( src.m_nCount > ARRAY_DEFAULT_INITIAL_SIZE ) - Alloc(src.m_nCount); - - // we can't just copy the pointers here because otherwise we would share - // the strings with another array - for ( size_t n = 0; n < src.m_nCount; n++ ) - Add(src[n]); - - if ( m_nCount != 0 ) - memcpy(m_pItems, src.m_pItems, m_nCount*sizeof(char *)); - - return *this; -} - -// grow the array -void wxArrayString::Grow() -{ - // only do it if no more place - if( m_nCount == m_nSize ) { - if( m_nSize == 0 ) { - // was empty, alloc some memory - m_nSize = ARRAY_DEFAULT_INITIAL_SIZE; - m_pItems = new char *[m_nSize]; - } - else { - // otherwise when it's called for the first time, nIncrement would be 0 - // and the array would never be expanded - wxASSERT( ARRAY_DEFAULT_INITIAL_SIZE != 0 ); - - // add 50% but not too much - size_t nIncrement = m_nSize < ARRAY_DEFAULT_INITIAL_SIZE - ? ARRAY_DEFAULT_INITIAL_SIZE : m_nSize >> 1; - if ( nIncrement > ARRAY_MAXSIZE_INCREMENT ) - nIncrement = ARRAY_MAXSIZE_INCREMENT; - m_nSize += nIncrement; - char **pNew = new char *[m_nSize]; - - // copy data to new location - memcpy(pNew, m_pItems, m_nCount*sizeof(char *)); - - // delete old memory (but do not release the strings!) - wxDELETEA(m_pItems); - - m_pItems = pNew; - } - } -} - -void wxArrayString::Free() -{ - for ( size_t n = 0; n < m_nCount; n++ ) { - STRING(m_pItems[n])->GetStringData()->Unlock(); - } -} - -// deletes all the strings from the list -void wxArrayString::Empty() -{ - Free(); - - m_nCount = 0; -} - -// as Empty, but also frees memory -void wxArrayString::Clear() -{ - Free(); - - m_nSize = - m_nCount = 0; - - wxDELETEA(m_pItems); -} - -// dtor -wxArrayString::~wxArrayString() -{ - Free(); - - wxDELETEA(m_pItems); -} - -// pre-allocates memory (frees the previous data!) -void wxArrayString::Alloc(size_t nSize) -{ - wxASSERT( nSize > 0 ); - - // only if old buffer was not big enough - if ( nSize > m_nSize ) { - Free(); - wxDELETEA(m_pItems); - m_pItems = new char *[nSize]; - m_nSize = nSize; - } - - m_nCount = 0; -} - -// searches the array for an item (forward or backwards) -int wxArrayString::Index(const char *sz, bool bCase, bool bFromEnd) const -{ - if ( bFromEnd ) { - if ( m_nCount > 0 ) { - size_t ui = m_nCount; - do { - if ( STRING(m_pItems[--ui])->IsSameAs(sz, bCase) ) - return ui; - } - while ( ui != 0 ); - } - } - else { - for( size_t ui = 0; ui < m_nCount; ui++ ) { - if( STRING(m_pItems[ui])->IsSameAs(sz, bCase) ) - return ui; - } - } - - return wxNOT_FOUND; -} - -// add item at the end -void wxArrayString::Add(const wxString& str) -{ - wxASSERT( str.GetStringData()->IsValid() ); - - Grow(); - - // the string data must not be deleted! - str.GetStringData()->Lock(); - m_pItems[m_nCount++] = (char *)str.c_str(); -} - -// add item at the given position -void wxArrayString::Insert(const wxString& str, size_t nIndex) -{ - wxASSERT( str.GetStringData()->IsValid() ); - - wxCHECK_RET( nIndex <= m_nCount, ("bad index in wxArrayString::Insert") ); - - Grow(); - - memmove(&m_pItems[nIndex + 1], &m_pItems[nIndex], - (m_nCount - nIndex)*sizeof(char *)); - - str.GetStringData()->Lock(); - m_pItems[nIndex] = (char *)str.c_str(); - - m_nCount++; -} - -// removes item from array (by index) -void wxArrayString::Remove(size_t nIndex) -{ - wxCHECK_RET( nIndex <= m_nCount, _("bad index in wxArrayString::Remove") ); - - // release our lock - Item(nIndex).GetStringData()->Unlock(); - - memmove(&m_pItems[nIndex], &m_pItems[nIndex + 1], - (m_nCount - nIndex - 1)*sizeof(char *)); - m_nCount--; -} - -// removes item from array (by value) -void wxArrayString::Remove(const char *sz) -{ - int iIndex = Index(sz); - - wxCHECK_RET( iIndex != wxNOT_FOUND, - _("removing inexistent element in wxArrayString::Remove") ); - - Remove(iIndex); -} - -// sort array elements using passed comparaison function - -void wxArrayString::Sort(bool WXUNUSED(bCase), bool WXUNUSED(bReverse) ) -{ - //@@@@ TO DO - //qsort(m_pItems, m_nCount, sizeof(char *), fCmp); -} diff --git a/src/common/tbarbase.cpp b/src/common/tbarbase.cpp deleted file mode 100644 index d50620d33f..0000000000 --- a/src/common/tbarbase.cpp +++ /dev/null @@ -1,741 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: tbarbase.cpp -// Purpose: Toolbar base classes -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "tbarbase.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -// For ::UpdateWindow -#ifdef __WXMSW__ -#include -#endif - -#if wxUSE_TOOLBAR - -#include "wx/tbarbase.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_ABSTRACT_CLASS(wxToolBarBase, wxControl) -IMPLEMENT_DYNAMIC_CLASS(wxToolBarTool, wxObject) - -BEGIN_EVENT_TABLE(wxToolBarBase, wxControl) - EVT_SCROLL(wxToolBarBase::OnScroll) - EVT_SIZE(wxToolBarBase::OnSize) - EVT_IDLE(wxToolBarBase::OnIdle) -END_EVENT_TABLE() -#endif - -// Keep a list of all toolbars created, so you can tell whether a toolbar -// is still valid: a tool may have quit the toolbar. -static wxList gs_ToolBars; - -wxToolBarTool::wxToolBarTool(int theIndex, - const wxBitmap& theBitmap1, const wxBitmap& theBitmap2, bool toggle, - long xPos, long yPos, const wxString& helpS1, const wxString& helpS2) -{ - m_toolStyle = wxTOOL_STYLE_BUTTON; - m_clientData = NULL; - m_index = theIndex; - m_isToggle = toggle; - m_toggleState = FALSE; - m_enabled = TRUE; - m_bitmap1 = theBitmap1; - m_bitmap2 = theBitmap2; - m_x = xPos; - m_y = yPos; - m_width = m_height = 0; - m_deleteSecondBitmap = FALSE; - if (m_bitmap1.Ok()) - { - m_width = m_bitmap1.GetWidth()+2; - m_height = m_bitmap1.GetHeight()+2; - } - m_shortHelpString = helpS1; - m_longHelpString = helpS2; -} - -wxToolBarTool::~wxToolBarTool(void) -{ -/* - if (m_deleteSecondBitmap && m_bitmap2) - delete m_bitmap2; -*/ -} - - -// class wxToolBar - -wxToolBarBase::wxToolBarBase(void) : m_tools(wxKEY_INTEGER) -{ - gs_ToolBars.Append(this); - - m_maxRows = 1; - m_maxCols = 32000; - m_maxWidth = 0; - m_maxHeight = 0; - m_defaultWidth = 16; - m_defaultHeight = 15; - m_xMargin = 0; - m_yMargin = 0; - m_toolPacking = 1; - m_toolSeparation = 5; - m_currentTool = -1; - - m_xScrollPixelsPerLine = 0; - m_yScrollPixelsPerLine = 0; - m_xScrollingEnabled = TRUE; - m_yScrollingEnabled = TRUE; - m_xScrollPosition = 0; - m_yScrollPosition = 0; - m_calcScrolledOffset = TRUE; - m_xScrollLines = 0; - m_yScrollLines = 0; - m_xScrollLinesPerPage = 0; - m_yScrollLinesPerPage = 0; -} - -wxToolBarBase::~wxToolBarBase () -{ - gs_ToolBars.DeleteObject(this); - - for ( wxNode *node = m_tools.First(); node; node = node->Next() ) - { - wxToolBarTool *tool = (wxToolBarTool *)node->Data(); - delete tool; - } -} - -// Only allow toggle if returns TRUE -bool wxToolBarBase::OnLeftClick(int toolIndex, bool toggleDown) -{ - wxCommandEvent event(wxEVT_COMMAND_TOOL_CLICKED, toolIndex); - event.SetEventObject(this); - event.SetExtraLong((long) toggleDown); - - GetEventHandler()->ProcessEvent(event); - - return TRUE; -} - -// Call when right button down. -void wxToolBarBase::OnRightClick(int toolIndex, long x, long y) -{ - wxCommandEvent event(wxEVT_COMMAND_TOOL_RCLICKED, toolIndex); - event.SetEventObject(this); - event.SetInt(toolIndex); - - GetEventHandler()->ProcessEvent(event); -} - -// Called when the mouse cursor enters a tool bitmap (no button pressed). -// Argument is -1 if mouse is exiting the toolbar. -// Note that for this event, the id of the window is used, -// and the integer parameter of wxCommandEvent is used to retrieve -// the tool id. -void wxToolBarBase::OnMouseEnter ( int toolIndex ) -{ - wxCommandEvent event(wxEVT_COMMAND_TOOL_ENTER, GetId()); - event.SetEventObject(this); - event.SetInt(toolIndex); - - GetEventHandler()->ProcessEvent(event); -} - -// If pushedBitmap is NULL, a reversed version of bitmap is -// created and used as the pushed/toggled image. -// If toggle is TRUE, the button toggles between the two states. -wxToolBarTool *wxToolBarBase::AddTool(int index, const wxBitmap& bitmap, const wxBitmap& pushedBitmap, - bool toggle, long xPos, long yPos, wxObject *clientData, - const wxString& helpString1, const wxString& helpString2) -{ - wxToolBarTool *tool = new wxToolBarTool(index, bitmap, pushedBitmap, toggle, xPos, yPos, helpString1, helpString2); - tool->m_clientData = clientData; - - if (xPos > -1) - tool->m_x = xPos; - else - tool->m_x = m_xMargin; - - if (yPos > -1) - tool->m_y = yPos; - else - tool->m_y = m_yMargin; - - // Calculate reasonable max size in case Layout() not called - if ((tool->m_x + bitmap.GetWidth() + m_xMargin) > m_maxWidth) - m_maxWidth = (tool->m_x + bitmap.GetWidth() + m_xMargin); - - if ((tool->m_y + bitmap.GetHeight() + m_yMargin) > m_maxHeight) - m_maxHeight = (tool->m_y + bitmap.GetHeight() + m_yMargin); - - m_tools.Append((long)index, tool); - return tool; -} - -void wxToolBarBase::AddSeparator () -{ - wxToolBarTool *tool = new wxToolBarTool; - tool->m_toolStyle = wxTOOL_STYLE_SEPARATOR; - m_tools.Append(-1, tool); -} - -void wxToolBarBase::ClearTools(void) -{ - m_pressedTool = m_currentTool = -1; - wxNode *node = m_tools.First(); - while (node) - { - wxToolBarTool *tool = (wxToolBarTool *)node->Data(); - wxNode *nextNode = node->Next(); - delete tool; - delete node; - node = nextNode; - } -} - -void wxToolBarBase::EnableTool(int index, bool enable) -{ - wxNode *node = m_tools.Find((long)index); - if (node) - { - wxToolBarTool *tool = (wxToolBarTool *)node->Data(); - if (tool) - tool->m_enabled = enable; - } -} - -void wxToolBarBase::ToggleTool(int index, bool toggle) -{ -} - -void wxToolBarBase::SetToggle(int index, bool value) -{ - wxNode *node=m_tools.Find((long)index); - if (node){ - wxToolBarTool *tool = (wxToolBarTool *)node->Data(); - tool->m_isToggle = value; - } -} - -bool wxToolBarBase::GetToolState(int index) const -{ - wxNode *node = m_tools.Find((long)index); - if (node) - { - wxToolBarTool *tool = (wxToolBarTool *)node->Data(); - if (tool) - { - return tool->m_toggleState; - } - else return FALSE; - } - else return FALSE; -} - -bool wxToolBarBase::GetToolEnabled(int index) const -{ - wxNode *node = m_tools.Find((long)index); - if (node) - { - wxToolBarTool *tool = (wxToolBarTool *)node->Data(); - if (tool) - { - return tool->m_enabled; - } - else return FALSE; - } - else return FALSE; -} - -wxObject *wxToolBarBase::GetToolClientData(int index) const -{ - wxNode *node = m_tools.Find((long)index); - if (node) - { - wxToolBarTool *tool = (wxToolBarTool *)node->Data(); - if (tool) - { - return tool->m_clientData; - } - else return NULL; - } - else return NULL; -} - -void wxToolBarBase::SetToolShortHelp(int index, const wxString& helpString) -{ - wxNode *node=m_tools.Find((long)index); - if (node) - { - wxToolBarTool *tool = (wxToolBarTool *)node->Data(); - tool->m_shortHelpString = helpString; - } -} - -wxString wxToolBarBase::GetToolShortHelp(int index) const -{ - wxNode *node=m_tools.Find((long)index); - if (node) - { - wxToolBarTool *tool = (wxToolBarTool *)node->Data(); - return tool->m_shortHelpString; - } - else - return wxString(""); -} - -void wxToolBarBase::SetToolLongHelp(int index, const wxString& helpString) -{ - wxNode *node=m_tools.Find((long)index); - if (node) - { - wxToolBarTool *tool = (wxToolBarTool *)node->Data(); - tool->m_longHelpString = helpString; - } -} - -wxString wxToolBarBase::GetToolLongHelp(int index) const -{ - wxNode *node=m_tools.Find((long)index); - if (node) - { - wxToolBarTool *tool = (wxToolBarTool *)node->Data(); - return tool->m_longHelpString; - } - else - return wxString(""); -} - -wxToolBarTool *wxToolBarBase::FindToolForPosition(long x, long y) const -{ - wxNode *node = m_tools.First(); - while (node) - { - wxToolBarTool *tool = (wxToolBarTool *)node->Data(); - if ((x >= tool->m_x) && (y >= tool->m_y) && - (x <= (tool->m_x + tool->GetWidth())) && - (y <= (tool->m_y + tool->GetHeight()))) - return tool; - - node = node->Next(); - } - return NULL; -} - -wxSize wxToolBarBase::GetMaxSize ( void ) const -{ - return wxSize(m_maxWidth, m_maxHeight); -} - -// Okay, so we've left the tool we're in ... we must check if -// the tool we're leaving was a 'sprung push button' and if so, -// spring it back to the up state. -// -void wxToolBarBase::SetMargins(int x, int y) -{ - m_xMargin = x; - m_yMargin = y; -} - -void wxToolBarBase::SetToolPacking(int packing) -{ - m_toolPacking = packing; -} - -void wxToolBarBase::SetToolSeparation(int separation) -{ - m_toolSeparation = separation; -} - -void wxToolBarBase::Command(wxCommandEvent& event) -{ -} - -void wxToolBarBase::Layout(void) -{ -} - - -// SCROLLING IMPLEMENTATION - -/* - * pixelsPerUnitX/pixelsPerUnitY: number of pixels per unit (e.g. pixels per text line) - * noUnitsX/noUnitsY: : no. units per scrollbar - */ -void wxToolBarBase::SetScrollbars (int pixelsPerUnitX, int pixelsPerUnitY, - int noUnitsX, int noUnitsY, - int xPos, int yPos) -{ - m_xScrollPixelsPerLine = pixelsPerUnitX; - m_yScrollPixelsPerLine = pixelsPerUnitY; - m_xScrollLines = noUnitsX; - m_yScrollLines = noUnitsY; - - int w, h; - GetSize(&w, &h); - - // Recalculate scroll bar range and position - if (m_xScrollLines > 0) - { - m_xScrollPosition = xPos; - SetScrollPos (wxHORIZONTAL, m_xScrollPosition, TRUE); - } - else - { - SetScrollbar(wxHORIZONTAL, 0, 0, 0, FALSE); - m_xScrollPosition = 0; - } - - if (m_yScrollLines > 0) - { - m_yScrollPosition = yPos; - SetScrollPos (wxVERTICAL, m_yScrollPosition, TRUE); - } - else - { - SetScrollbar(wxVERTICAL, 0, 0, 0, FALSE); - m_yScrollPosition = 0; - } - AdjustScrollbars(); - Refresh(); -#ifdef __WXMSW__ - ::UpdateWindow ((HWND) GetHWND()); -#endif -} - - -void wxToolBarBase::OnScroll(wxScrollEvent& event) -{ - int orient = event.GetOrientation(); - - int nScrollInc = CalcScrollInc(event); - if (nScrollInc == 0) - return; - - if (orient == wxHORIZONTAL) - { - int newPos = m_xScrollPosition + nScrollInc; - SetScrollPos(wxHORIZONTAL, newPos, TRUE ); - } - else - { - int newPos = m_yScrollPosition + nScrollInc; - SetScrollPos(wxVERTICAL, newPos, TRUE ); - } - - if (orient == wxHORIZONTAL) - { - if (m_xScrollingEnabled) - ScrollWindow(-m_xScrollPixelsPerLine * nScrollInc, 0, NULL); - else - Refresh(); - } - else - { - if (m_yScrollingEnabled) - ScrollWindow(0, -m_yScrollPixelsPerLine * nScrollInc, NULL); - else - Refresh(); - } - - if (orient == wxHORIZONTAL) - { - m_xScrollPosition += nScrollInc; - } - else - { - m_yScrollPosition += nScrollInc; - } - -} - -int wxToolBarBase::CalcScrollInc(wxScrollEvent& event) -{ - int pos = event.GetPosition(); - int orient = event.GetOrientation(); - - int nScrollInc = 0; - switch (event.GetEventType()) - { - case wxEVT_SCROLL_TOP: - { - if (orient == wxHORIZONTAL) - nScrollInc = - m_xScrollPosition; - else - nScrollInc = - m_yScrollPosition; - break; - } - case wxEVT_SCROLL_BOTTOM: - { - if (orient == wxHORIZONTAL) - nScrollInc = m_xScrollLines - m_xScrollPosition; - else - nScrollInc = m_yScrollLines - m_yScrollPosition; - break; - } - case wxEVT_SCROLL_LINEUP: - { - nScrollInc = -1; - break; - } - case wxEVT_SCROLL_LINEDOWN: - { - nScrollInc = 1; - break; - } - case wxEVT_SCROLL_PAGEUP: - { - if (orient == wxHORIZONTAL) - nScrollInc = -GetScrollPageSize(wxHORIZONTAL); - else - nScrollInc = -GetScrollPageSize(wxVERTICAL); - break; - } - case wxEVT_SCROLL_PAGEDOWN: - { - if (orient == wxHORIZONTAL) - nScrollInc = GetScrollPageSize(wxHORIZONTAL); - else - nScrollInc = GetScrollPageSize(wxVERTICAL); - break; - } - case wxEVT_SCROLL_THUMBTRACK: - { - if (orient == wxHORIZONTAL) - nScrollInc = pos - m_xScrollPosition; - else - nScrollInc = pos - m_yScrollPosition; - break; - } - default: - { - break; - } - } - if (orient == wxHORIZONTAL) - { - int w, h; - GetClientSize(&w, &h); - - int nMaxWidth = m_xScrollLines*m_xScrollPixelsPerLine; - int noPositions = (int) ( ((nMaxWidth - w)/(float)m_xScrollPixelsPerLine) + 0.5 ); - if (noPositions < 0) - noPositions = 0; - - if ( (m_xScrollPosition + nScrollInc) < 0 ) - nScrollInc = -m_xScrollPosition; // As -ve as we can go - else if ( (m_xScrollPosition + nScrollInc) > noPositions ) - nScrollInc = noPositions - m_xScrollPosition; // As +ve as we can go - - return nScrollInc; - } - else - { - int w, h; - GetClientSize(&w, &h); - - int nMaxHeight = m_yScrollLines*m_yScrollPixelsPerLine; - int noPositions = (int) ( ((nMaxHeight - h)/(float)m_yScrollPixelsPerLine) + 0.5 ); - if (noPositions < 0) - noPositions = 0; - - if ( (m_yScrollPosition + nScrollInc) < 0 ) - nScrollInc = -m_yScrollPosition; // As -ve as we can go - else if ( (m_yScrollPosition + nScrollInc) > noPositions ) - nScrollInc = noPositions - m_yScrollPosition; // As +ve as we can go - - return nScrollInc; - } -} - -// Adjust the scrollbars - new version. -void wxToolBarBase::AdjustScrollbars(void) -{ - int w, h; - GetClientSize(&w, &h); - - // Recalculate scroll bar range and position - if (m_xScrollLines > 0) - { - int nMaxWidth = m_xScrollLines*m_xScrollPixelsPerLine; - int newRange = (int) ( ((nMaxWidth)/(float)m_xScrollPixelsPerLine) + 0.5 ); - if (newRange < 0) - newRange = 0; - - m_xScrollPosition = wxMin(newRange, m_xScrollPosition); - - // Calculate page size i.e. number of scroll units you get on the - // current client window - int noPagePositions = (int) ( (w/(float)m_xScrollPixelsPerLine) + 0.5 ); - if (noPagePositions < 1) - noPagePositions = 1; - - SetScrollbar(wxHORIZONTAL, m_xScrollPosition, noPagePositions, newRange); - SetScrollPageSize(wxHORIZONTAL, noPagePositions); - } - if (m_yScrollLines > 0) - { - int nMaxHeight = m_yScrollLines*m_yScrollPixelsPerLine; - int newRange = (int) ( ((nMaxHeight)/(float)m_yScrollPixelsPerLine) + 0.5 ); - if (newRange < 0) - newRange = 0; - - m_yScrollPosition = wxMin(newRange, m_yScrollPosition); - - // Calculate page size i.e. number of scroll units you get on the - // current client window - int noPagePositions = (int) ( (h/(float)m_yScrollPixelsPerLine) + 0.5 ); - if (noPagePositions < 1) - noPagePositions = 1; - - SetScrollbar(wxVERTICAL, m_yScrollPosition, noPagePositions, newRange); - SetScrollPageSize(wxVERTICAL, noPagePositions); - } -} - -// Default OnSize resets scrollbars, if any -void wxToolBarBase::OnSize(wxSizeEvent& event) -{ -#if wxUSE_CONSTRAINTS - if (GetAutoLayout()) - Layout(); -#endif - - AdjustScrollbars(); -} - -// Prepare the DC by translating it according to the current scroll position -void wxToolBarBase::PrepareDC(wxDC& dc) -{ - dc.SetDeviceOrigin(- m_xScrollPosition * m_xScrollPixelsPerLine, - m_yScrollPosition * m_yScrollPixelsPerLine); -} - -void wxToolBarBase::GetScrollPixelsPerUnit (int *x_unit, int *y_unit) const -{ - *x_unit = m_xScrollPixelsPerLine; - *y_unit = m_yScrollPixelsPerLine; -} - -int wxToolBarBase::GetScrollPageSize(int orient) const -{ - if ( orient == wxHORIZONTAL ) - return m_xScrollLinesPerPage; - else - return m_yScrollLinesPerPage; -} - -void wxToolBarBase::SetScrollPageSize(int orient, int pageSize) -{ - if ( orient == wxHORIZONTAL ) - m_xScrollLinesPerPage = pageSize; - else - m_yScrollLinesPerPage = pageSize; -} - -/* - * Scroll to given position (scroll position, not pixel position) - */ -void wxToolBarBase::Scroll (int x_pos, int y_pos) -{ - int old_x, old_y; - ViewStart (&old_x, &old_y); - if (((x_pos == -1) || (x_pos == old_x)) && ((y_pos == -1) || (y_pos == old_y))) - return; - - if (x_pos > -1) - { - m_xScrollPosition = x_pos; - SetScrollPos (wxHORIZONTAL, x_pos, TRUE); - } - if (y_pos > -1) - { - m_yScrollPosition = y_pos; - SetScrollPos (wxVERTICAL, y_pos, TRUE); - } - Refresh(); -#ifdef __WXMSW__ - UpdateWindow ((HWND) GetHWND()); -#endif -} - -void wxToolBarBase::EnableScrolling (bool x_scroll, bool y_scroll) -{ - m_xScrollingEnabled = x_scroll; - m_yScrollingEnabled = y_scroll; -} - -void wxToolBarBase::GetVirtualSize (int *x, int *y) const -{ - *x = m_xScrollPixelsPerLine * m_xScrollLines; - *y = m_yScrollPixelsPerLine * m_yScrollLines; -} - -// Where the current view starts from -void wxToolBarBase::ViewStart (int *x, int *y) const -{ - *x = m_xScrollPosition; - *y = m_yScrollPosition; -} - -void wxToolBarBase::OnIdle(wxIdleEvent& event) -{ - wxWindow::OnIdle(event); - - DoToolbarUpdates(); -} - -// Do the toolbar button updates (check for EVT_UPDATE_UI handlers) -void wxToolBarBase::DoToolbarUpdates(void) -{ - wxNode* node = GetTools().First(); - while (node) - { - wxToolBarTool* tool = (wxToolBarTool* ) node->Data(); - - wxUpdateUIEvent event(tool->m_index); - event.SetEventObject(this); - - if (GetEventHandler()->ProcessEvent(event)) - { - if (event.GetSetEnabled()) - EnableTool(tool->m_index, event.GetEnabled()); - if (event.GetSetChecked()) - ToggleTool(tool->m_index, event.GetChecked()); -/* - if (event.GetSetText()) - // Set tooltip? -*/ - } - - node = node->Next(); - } -} - -#ifdef __WXMSW__ -// Circumvent wxControl::MSWOnMouseMove which doesn't set the cursor. -void wxToolBarBase::MSWOnMouseMove(int x, int y, WXUINT flags) -{ - wxWindow::MSWOnMouseMove(x, y, flags); -} -#endif - -#endif diff --git a/src/common/tbarsmpl.cpp b/src/common/tbarsmpl.cpp deleted file mode 100644 index 0e1a739d29..0000000000 --- a/src/common/tbarsmpl.cpp +++ /dev/null @@ -1,453 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: tbarsmpl.cpp -// Purpose: wxToolBarSimple -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "tbarsmpl.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#if wxUSE_TOOLBAR - -#include "wx/tbarsmpl.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxToolBarSimple, wxToolBarBase) - -BEGIN_EVENT_TABLE(wxToolBarSimple, wxToolBarBase) - EVT_SIZE(wxToolBarSimple::OnSize) - EVT_PAINT(wxToolBarSimple::OnPaint) - EVT_KILL_FOCUS(wxToolBarSimple::OnKillFocus) - EVT_MOUSE_EVENTS(wxToolBarSimple::OnMouseEvent) -END_EVENT_TABLE() -#endif - -wxToolBarSimple::wxToolBarSimple(void) -{ - m_currentRowsOrColumns = 0; - m_lastX = 0; - m_lastY = 0; -} - -bool wxToolBarSimple::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, - const wxString& name ) -{ - if ( ! wxWindow::Create(parent, id, pos, size, style, name) ) - return FALSE; - - // Set it to grey (or other 3D face colour) - wxSystemSettings settings; - SetBackgroundColour(settings.GetSystemColour(wxSYS_COLOUR_3DFACE)); - - if ( GetWindowStyleFlag() & wxTB_VERTICAL ) - { m_lastX = 7; m_lastY = 3; } - else - { m_lastX = 3; m_lastY = 7; } - m_maxWidth = m_maxHeight = 0; - m_pressedTool = m_currentTool = -1; - m_xMargin = 0; - m_yMargin = 0; - m_toolPacking = 1; - m_toolSeparation = 5; - - return TRUE; -} - -wxToolBarSimple::~wxToolBarSimple () -{ -} - -void wxToolBarSimple::OnPaint (wxPaintEvent& event) -{ - wxPaintDC dc(this); - PrepareDC(dc); - - static int count = 0; - // Prevent reentry of OnPaint which would cause wxMemoryDC errors. - if ( count > 0 ) - return; - count++; - - wxMemoryDC mem_dc; - - for ( wxNode *node = m_tools.First(); node; node = node->Next() ) - { - wxToolBarTool *tool = (wxToolBarTool *)node->Data(); - if (tool->m_toolStyle == wxTOOL_STYLE_BUTTON) - DrawTool(dc, mem_dc, tool); - } - - count--; -} - -void wxToolBarSimple::OnSize ( wxSizeEvent& event ) -{ - wxToolBarBase::OnSize(event); -} - -void wxToolBarSimple::OnKillFocus (wxFocusEvent& event) -{ - OnMouseEnter(m_pressedTool = m_currentTool = -1); -} - -void wxToolBarSimple::OnMouseEvent ( wxMouseEvent & event ) -{ - long x, y; - event.Position(&x, &y); - wxToolBarTool *tool = FindToolForPosition(x, y); - - if (event.LeftDown()) - { - CaptureMouse(); - } - if (event.LeftUp()) - { - ReleaseMouse(); - } - - if (!tool) - { - if (m_currentTool > -1) - { - if (event.LeftIsDown()) - SpringUpButton(m_currentTool); - m_currentTool = -1; - OnMouseEnter(-1); - } - return; - } - - if (!event.IsButton()) - { - if (tool->m_index != m_currentTool) - { - // If the left button is kept down and moved over buttons, - // press those buttons. - if (event.LeftIsDown() && tool->m_enabled) - { - SpringUpButton(m_currentTool); - tool->m_toggleState = !tool->m_toggleState; - wxMemoryDC *dc2 = new wxMemoryDC; - wxClientDC dc(this); - DrawTool(dc, *dc2, tool); - delete dc2; - } - m_currentTool = tool->m_index; - OnMouseEnter(tool->m_index); - } - return; - } - - // Left button pressed. - if (event.LeftDown() && tool->m_enabled) - { - if (tool->m_isToggle) - { - tool->m_toggleState = !tool->m_toggleState; - } - - wxMemoryDC *dc2 = new wxMemoryDC; - wxClientDC dc(this); - DrawTool(dc, *dc2, tool); - delete dc2; - - } - else if (event.RightDown()) - { - OnRightClick(tool->m_index, x, y); - } - - // Left Button Released. Only this action confirms selection. - // If the button is enabled and it is not a toggle tool and it is - // in the pressed state, then raise the button and call OnLeftClick. - // - if (event.LeftUp() && tool->m_enabled && - (tool->m_toggleState || tool->m_isToggle)) - { - if (!tool->m_isToggle) - tool->m_toggleState = FALSE; - - // Pass the OnLeftClick event to tool - if (!OnLeftClick(tool->m_index, tool->m_toggleState) && tool->m_isToggle) - { - // If it was a toggle, and OnLeftClick says No Toggle allowed, - // then change it back - tool->m_toggleState = !tool->m_toggleState; - } - - wxClientDC dc(this); - wxMemoryDC *dc2 = new wxMemoryDC; - DrawTool(dc, *dc2, tool); - delete dc2; - } -} - -void wxToolBarSimple::DrawTool(wxDC& dc, wxMemoryDC& memDC, wxToolBarTool *tool) -{ - PrepareDC(dc); - - wxPen dark_grey_pen(wxColour( 85,85,85 ), 1, wxSOLID); - wxPen white_pen("WHITE", 1, wxSOLID); - wxPen black_pen("BLACK", 1, wxSOLID); - - wxBitmap *bitmap = tool->m_toggleState ? (& tool->m_bitmap2) : (& tool->m_bitmap1); - - if (bitmap && bitmap->Ok()) - { - if (bitmap->GetPalette()) - memDC.SetPalette(*bitmap->GetPalette()); - - int ax = (int)tool->m_x, - ay = (int)tool->m_y, - bx = (int)(tool->m_x+tool->GetWidth()), - by = (int)(tool->m_y+tool->GetHeight()); - - memDC.SelectObject(*bitmap); - if (m_windowStyle & wxTB_3DBUTTONS) - { - dc.SetClippingRegion(ax, ay, (bx-ax+1), (by-ay+1)); - dc.Blit((ax+1), (ay+1), (bx-ax-2), (by-ay-2), &memDC, 0, 0); - wxPen * old_pen = & dc.GetPen(); - dc.SetPen( white_pen ); - dc.DrawLine(ax,(by-1),ax,ay); - dc.DrawLine(ax,ay,(bx-1),ay); - dc.SetPen( dark_grey_pen ); - dc.DrawLine((bx-1),(ay+1),(bx-1),(by-1)); - dc.DrawLine((bx-1),(by-1),(ax+1),(by-1)); - dc.SetPen( black_pen ); - dc.DrawLine(bx,ay,bx,by); - dc.DrawLine(bx,by,ax,by); - dc.SetPen( *old_pen ); - dc.DestroyClippingRegion(); - // Select bitmap out of the DC - } - else - { - dc.Blit(tool->m_x, tool->m_y, - bitmap->GetWidth(), bitmap->GetHeight(), - &memDC, 0, 0); - } - memDC.SelectObject(wxNullBitmap); - memDC.SetPalette(wxNullPalette); - } - // No second bitmap, so draw a thick line around bitmap, or invert if mono - else if (tool->m_toggleState) - { - bool drawBorder = FALSE; - #ifdef __X__ // X doesn't invert properly on colour - drawBorder = wxColourDisplay(); - #else // Inversion works fine under Windows - drawBorder = FALSE; - #endif - - if (!drawBorder) - { - memDC.SelectObject(tool->m_bitmap1); - dc.Blit(tool->m_x, tool->m_y, tool->GetWidth(), tool->GetHeight(), - &memDC, 0, 0, wxSRC_INVERT); - memDC.SelectObject(wxNullBitmap); - } - else - { - if (m_windowStyle & wxTB_3DBUTTONS) - { - int ax = (int)tool->m_x, - ay = (int)tool->m_y, - bx = (int)(tool->m_x+tool->GetWidth()), - by = (int)(tool->m_y+tool->GetHeight()); - - memDC.SelectObject(tool->m_bitmap1); - dc.SetClippingRegion(ax, ay, (bx-ax+1), (by-ay+1)); - dc.Blit((ax+2), (ay+2), (bx-ax-2), (by-ay-2), &memDC, 0, 0); - wxPen * old_pen = & dc.GetPen(); - dc.SetPen( black_pen ); - dc.DrawLine(ax,(by-1),ax,ay); - dc.DrawLine(ax,ay,(bx-1),ay); - dc.SetPen( dark_grey_pen ); - dc.DrawLine((ax+1),(by-2),(ax+1),(ay+1)); - dc.DrawLine((ax+1),(ay+1),(bx-2),(ay+1)); - dc.SetPen( white_pen ); - dc.DrawLine(bx,ay,bx,by); - dc.DrawLine(bx,by,ax,by); - dc.SetPen( *old_pen ); - dc.DestroyClippingRegion(); - memDC.SelectObject(wxNullBitmap); - } - else - { - long x = tool->m_x; - long y = tool->m_y; - long w = tool->m_bitmap1.GetWidth(); - long h = tool->m_bitmap1.GetHeight(); - wxPen thick_black_pen("BLACK", 3, wxSOLID); - - memDC.SelectObject(tool->m_bitmap1); - dc.SetClippingRegion(tool->m_x, tool->m_y, w, h); - dc.Blit(tool->m_x, tool->m_y, w, h, - &memDC, 0, 0); - dc.SetPen(thick_black_pen); - dc.SetBrush(*wxTRANSPARENT_BRUSH); - dc.DrawRectangle(x, y, w-1, h-1); - dc.DestroyClippingRegion(); - memDC.SelectObject(wxNullBitmap); - } - } - } -} - -void wxToolBarSimple::ToggleTool(int index, bool toggle) -{ - wxNode *node = m_tools.Find((long)index); - if (node) - { - wxToolBarTool *tool = (wxToolBarTool *)node->Data(); - if (tool && tool->m_isToggle) - { - bool oldState = tool->m_toggleState; - tool->m_toggleState = toggle; - - if (oldState != toggle) - { - wxMemoryDC memDC; - wxClientDC dc(this); - DrawTool(dc, memDC, tool); - } - } - } -} - -// Okay, so we've left the tool we're in ... we must check if -// the tool we're leaving was a 'sprung push button' and if so, -// spring it back to the up state. -// -void wxToolBarSimple::SpringUpButton(int index) -{ - wxNode *node=m_tools.Find((long)index); - if (node) { - wxToolBarTool *tool = (wxToolBarTool *)node->Data(); - if (tool && !tool->m_isToggle && tool->m_toggleState){ - tool->m_toggleState = FALSE; - wxMemoryDC memDC; - wxClientDC dc(this); - DrawTool(dc, memDC, tool); - } - else if (tool && tool->m_isToggle){ - tool->m_toggleState = !tool->m_toggleState; - wxMemoryDC memDC; - wxClientDC dc(this); - DrawTool(dc, memDC, tool); - } - } -} - -void wxToolBarSimple::Layout(void) -{ - m_currentRowsOrColumns = 0; - m_lastX = m_xMargin; - m_lastY = m_yMargin; - int maxToolWidth = 0; - int maxToolHeight = 0; - m_maxWidth = 0; - m_maxHeight = 0; - - // Find the maximum tool width and height - wxNode *node = m_tools.First(); - while (node) - { - wxToolBarTool *tool = (wxToolBarTool *)node->Data(); - if (tool->GetWidth() > maxToolWidth) - maxToolWidth = (int)tool->GetWidth(); - if (tool->GetHeight() > maxToolHeight) - maxToolHeight = (int)tool->GetHeight(); - node = node->Next(); - } - - int separatorSize = m_toolSeparation; - - node = m_tools.First(); - while (node) - { - wxToolBarTool *tool = (wxToolBarTool *)node->Data(); - if (tool->m_toolStyle == wxTOOL_STYLE_SEPARATOR) - { - if ( GetWindowStyleFlag() & wxTB_HORIZONTAL ) - { - if (m_currentRowsOrColumns >= m_maxCols) - m_lastY += separatorSize; - else - m_lastX += separatorSize; - } - else - { - if (m_currentRowsOrColumns >= m_maxRows) - m_lastX += separatorSize; - else - m_lastY += separatorSize; - } - } - else if (tool->m_toolStyle == wxTOOL_STYLE_BUTTON) - { - if ( GetWindowStyleFlag() & wxTB_HORIZONTAL ) - { - if (m_currentRowsOrColumns >= m_maxCols) - { - m_currentRowsOrColumns = 0; - m_lastX = m_xMargin; - m_lastY += maxToolHeight + m_toolPacking; - } - tool->m_x = (long) (m_lastX + (maxToolWidth - tool->GetWidth())/2.0); - tool->m_y = (long) (m_lastY + (maxToolHeight - tool->GetHeight())/2.0); - - m_lastX += maxToolWidth + m_toolPacking; - } - else - { - if (m_currentRowsOrColumns >= m_maxRows) - { - m_currentRowsOrColumns = 0; - m_lastX += (maxToolWidth + m_toolPacking); - m_lastY = m_yMargin; - } - tool->m_x = (long) (m_lastX + (maxToolWidth - tool->GetWidth())/2.0); - tool->m_y = (long) (m_lastY + (maxToolHeight - tool->GetHeight())/2.0); - - m_lastY += maxToolHeight + m_toolPacking; - } - m_currentRowsOrColumns ++; - } - - if (m_lastX > m_maxWidth) - m_maxWidth = m_lastX; - if (m_lastY > m_maxHeight) - m_maxHeight = m_lastY; - - node = node->Next(); - } - if ( GetWindowStyleFlag() & wxTB_HORIZONTAL ) - m_maxWidth += maxToolWidth; - else - m_maxHeight += maxToolHeight; - - m_maxWidth += m_xMargin; - m_maxHeight += m_yMargin; -} - - -#endif diff --git a/src/common/textfile.cpp b/src/common/textfile.cpp deleted file mode 100644 index 2e6ad8bdd9..0000000000 --- a/src/common/textfile.cpp +++ /dev/null @@ -1,257 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: textfile.cpp -// Purpose: implementation of wxTextFile class -// Author: Vadim Zeitlin -// Modified by: -// Created: 03.04.98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows license -/////////////////////////////////////////////////////////////////////////////// - -// ============================================================================ -// headers -// ============================================================================ - -#ifdef __GNUG__ -#pragma implementation "textfile.h" -#endif - -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ - #pragma hdrstop -#endif //__BORLANDC__ - -#include -#include -#include -#include -#include - -// ============================================================================ -// wxTextFile class implementation -// ============================================================================ - -// ---------------------------------------------------------------------------- -// static variables -// ---------------------------------------------------------------------------- - -// default type is the native one -const wxTextFileType wxTextFile::typeDefault = -#if defined(__WINDOWS__) - wxTextFileType_Dos; -#elif defined(__UNIX__) - wxTextFileType_Unix; -#elif defined(__WXMAC__) - wxTextFileType_Mac; -#else - wxTextFileType_None; - #error "wxTextFile: unsupported platform." -#endif - - -// ---------------------------------------------------------------------------- -// ctors & dtor -// ---------------------------------------------------------------------------- - -wxTextFile::wxTextFile(const wxString& strFile) : m_strFile(strFile) -{ -} - -wxTextFile::~wxTextFile() -{ - // m_file dtor called automatically -} - -// ---------------------------------------------------------------------------- -// file operations -// ---------------------------------------------------------------------------- - -bool wxTextFile::Open(const wxString& strFile) -{ - m_strFile = strFile; - return Open(); -} - -bool wxTextFile::Open() -{ - // file name must be either given in ctor or in Open(const wxString&) - wxASSERT( !m_strFile.IsEmpty() ); - - // open file in read-only mode - if ( !m_file.Open(m_strFile) ) - return FALSE; - - // read file into memory - bool bRet = Read(); - - m_file.Close(); - - return bRet; -} - -// analyse some lines of the file trying to guess it's type. -// if it fails, it assumes the native type for our platform. -wxTextFileType wxTextFile::GuessType() const -{ - // file should be opened and we must be in it's beginning - wxASSERT( m_file.IsOpened() && m_file.Tell() == 0 ); - - // scan the file lines - size_t nUnix = 0, // number of '\n's alone - nDos = 0, // number of '\r\n' - nMac = 0; // number of '\r's - - // we take MAX_LINES_SCAN in the beginning, middle and the end of file - #define MAX_LINES_SCAN (10) - size_t nCount = m_aLines.Count() / 3, - nScan = nCount > 3*MAX_LINES_SCAN ? MAX_LINES_SCAN : nCount / 3; - - #define AnalyseLine(n) \ - switch ( m_aTypes[n] ) { \ - case wxTextFileType_Unix: nUnix++; break; \ - case wxTextFileType_Dos: nDos++; break; \ - case wxTextFileType_Mac: nMac++; break; \ - default: wxFAIL_MSG(_("unknown line terminator")); \ - } - - size_t n; - for ( n = 0; n < nScan; n++ ) // the beginning - AnalyseLine(n); - for ( n = (nCount - nScan)/2; n < (nCount + nScan)/2; n++ ) - AnalyseLine(n); - for ( n = nCount - nScan; n < nCount; n++ ) - AnalyseLine(n); - - #undef AnalyseLine - - // interpret the results (@@ far from being even 50% fool proof) - if ( nDos + nUnix + nMac == 0 ) { - // no newlines at all - wxLogWarning(_("'%s' is probably a binary file."), m_strFile.c_str()); - } - else { - #define GREATER_OF(t1, t2) n##t1 == n##t2 ? typeDefault \ - : n##t1 > n##t2 \ - ? wxTextFileType_##t1 \ - : wxTextFileType_##t2 - -// Watcom C++ doesn't seem to be able to handle the macro -#if defined(__WATCOMC__) - return typeDefault; -#else - if ( nDos > nUnix ) - return GREATER_OF(Dos, Mac); - else if ( nDos < nUnix ) - return GREATER_OF(Unix, Mac); - else { - // nDos == nUnix - return nMac > nDos ? wxTextFileType_Mac : typeDefault; - } -#endif - - #undef GREATER_OF - } - - return typeDefault; -} - -bool wxTextFile::Read() -{ - // file should be opened and we must be in it's beginning - wxASSERT( m_file.IsOpened() && m_file.Tell() == 0 ); - - wxString str; - char ch, chLast = '\0'; - char buf[1024]; - int n, nRead; - while ( !m_file.Eof() ) { - nRead = m_file.Read(buf, WXSIZEOF(buf)); - if ( nRead == wxInvalidOffset ) { - // read error (error message already given in wxFile::Read) - m_file.Close(); - return FALSE; - } - - for ( n = 0; n < nRead; n++ ) { - ch = buf[n]; - switch ( ch ) { - case '\n': - // Dos/Unix line termination - m_aLines.Add(str); - m_aTypes.Add(chLast == '\r' ? wxTextFileType_Dos - : wxTextFileType_Unix); - str.Empty(); - chLast = '\n'; - break; - - case '\r': - if ( chLast == '\r' ) { - // Mac empty line - m_aLines.Add(""); - m_aTypes.Add(wxTextFileType_Mac); - } - else - chLast = '\r'; - break; - - default: - if ( chLast == '\r' ) { - // Mac line termination - m_aLines.Add(str); - m_aTypes.Add(wxTextFileType_Mac); - chLast = ch; - str = ch; - } - else { - // add to the current line - str += ch; - } - } - } - } - - // anything in the last line? - if ( !str.IsEmpty() ) { - m_aTypes.Add(wxTextFileType_None); // no line terminator - m_aLines.Add(str); - } - - return TRUE; -} - -bool wxTextFile::Write(wxTextFileType typeNew) -{ - wxTempFile fileTmp(m_strFile); - - if ( !fileTmp.IsOpened() ) { - wxLogError(_("can't write file '%s' to disk."), m_strFile.c_str()); - return FALSE; - } - - size_t nCount = m_aLines.Count(); - for ( size_t n = 0; n < nCount; n++ ) { - fileTmp.Write(m_aLines[n] + - GetEOL(typeNew == wxTextFileType_None ? m_aTypes[n] - : typeNew)); - } - - // replace the old file with this one - return fileTmp.Commit(); -} - -const char *wxTextFile::GetEOL(wxTextFileType type) - { - switch ( type ) { - case wxTextFileType_None: return ""; - case wxTextFileType_Unix: return "\n"; - case wxTextFileType_Dos: return "\r\n"; - case wxTextFileType_Mac: return "\r"; - - default: - wxFAIL_MSG("bad file type in wxTextFile::GetEOL."); - return (const char *) NULL; - } - } - diff --git a/src/common/time.cpp b/src/common/time.cpp deleted file mode 100644 index d709f8b212..0000000000 --- a/src/common/time.cpp +++ /dev/null @@ -1,428 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: time.cpp -// Purpose: wxTime class, from NIHCL -// Author: Julian Smart, after K. E. Gorlen -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "time.h" -#endif - -/* -Provides an object that represents a Time, stored as the number of -seconds since January 1, 1901, GMT. -*/ - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#include "wx/setup.h" - -#if wxUSE_TIMEDATE - -#include "wx/time.h" -#include "wx/date.h" -#include "wx/utils.h" -#include - -#if wxUSE_IOSTREAMH -#include -#include -#else -#include -#include -# ifdef _MSC_VER - using namespace std; -# endif -#endif - -#include - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxTime, wxObject) -#endif - - -extern bool wxGetLocalTime(long *timeZone, int *dstObserved); -extern long wxGetCurrentTime(void); - -static long TIME_ZONE; /* seconds west of GMT */ -static int DST_OBSERVED; /* flags U.S. daylight saving time observed */ - -static bool wxTimeInitialized = FALSE; - -wxTime::tFormat wxTime::Format = wxTime::wx12h; -wxTime::tPrecision wxTime::Precision = wxTime::wxStdMinSec; - -static const unsigned long seconds_in_day = 24*60*60L; -static const wxDate refDate(1,1,1901); -// static const wxDate maxDate(49709L); /* ((2**32)-1)/seconds_in_day -1 */ - -wxTime wxTime::GetLocalTime(const wxDate& date, hourTy h, minuteTy m, secondTy s) -/* - Return a local wxTime for the specified Standard Time date, hour, minute, - and second. -*/ -{ - if (!wxTimeInitialized) - { - wxGetLocalTime(&TIME_ZONE, &DST_OBSERVED); - wxTimeInitialized = TRUE; - } -/* - if (!date.IsBetween(refDate,maxDate)) - setError(NIHCL_DATERANGE,DEFAULT, - date.dayOfMonth(),date.nameOfMonth(),date.year()); -*/ - // The following line causes an error in GCC 2.1 -// long daysBetween = date-refDate; - // ... but this seems to get round it. - wxDate tmp1(date); - wxDate tmp2(refDate); - long daysBetween = tmp1 - tmp2; - - return wxTime(seconds_in_day*daysBetween + 60*60L*h + 60*m + s); -} - -wxTime::wxTime() -/* - Construct a wxTime for this instant. -*/ -{ - if (!wxTimeInitialized) - { - wxGetLocalTime(&TIME_ZONE, &DST_OBSERVED); - wxTimeInitialized = TRUE; - } - sec = wxGetCurrentTime(); -#ifdef __SALFORDC__ - sec += (unsigned long) 2177452800; /* seconds from 1/1/01 to 1/1/70 */ -#else - sec += 2177452800UL; /* seconds from 1/1/01 to 1/1/70 */ -#endif -} - -wxTime::wxTime(hourTy h, minuteTy m, secondTy s, bool dst) -/* - Construct a wxTime for today at the specified (local) hour, minute, and - second. -*/ -{ - if (!wxTimeInitialized) - { - wxGetLocalTime(&TIME_ZONE, &DST_OBSERVED); - wxTimeInitialized = TRUE; - } - - sec = wxTime(wxDate(),h,m,s,dst).sec; -} - - -wxTime::wxTime(const wxDate& date, hourTy h, minuteTy m, secondTy s, bool dst) -/* - Construct a wxTime for the specified (local) Date, hour, minute, and - second. -*/ -{ - if (!wxTimeInitialized) - { - wxGetLocalTime(&TIME_ZONE, &DST_OBSERVED); - wxTimeInitialized = TRUE; - } - sec = GetLocalTime(date,h,m,s).sec-3600; - if (IsDST()) - { - sec += 3600; - if (IsDST() || dst) sec -= 3600; - } - else - { - sec += 3600; -/* - if (IsDST()) setError(NIHCL_BADTIME,DEFAULT, - date.dayOfMonth(),date.nameOfMonth(),date.year(), - h,m,s,(dst?_("DST"):"")); -*/ - } - sec += TIME_ZONE; // adjust to GMT -} - -#ifndef __SALFORDC__ -wxTime::operator wxDate() const -/* - Convert a wxTime to a local wxDate -*/ -{ -// return wxDate((int)(GetLocalTime().sec/seconds_in_day)); 4.2 cc bug - long daycount = (long)(GetLocalTime().sec/seconds_in_day); - - wxDate date(1,1,1901); - date += daycount; - return date; -} -#endif - -bool wxTime::IsBetween(const wxTime& a, const wxTime& b) const -{ - return *this >= a && *this <= b; -} - -hourTy wxTime::GetHour() const -/* - Return the hour of this wxTime in local time; i.e., adjust for - time zone and Daylight Savings Time. -*/ -{ - return GetLocalTime().GetHourGMT(); -} - -hourTy wxTime::GetHourGMT() const -/* - Return the hour of this Time in GMT. -*/ -{ - return (hourTy)((sec % 86400) / 3600); -} - -wxTime wxTime::GetBeginDST(unsigned year) -/* - Return the local Standard Time at which Daylight Savings Time - begins in the specified year. -*/ -{ - // Previous Sunday - wxTime DSTtime(GetLocalTime(wxDate(3,31,year).Previous(1)+7,2)); - if (year<=1986) { - // Previous Sunday - DSTtime = GetLocalTime(wxDate(4,30,year).Previous(1),2); - if (year==1974) DSTtime = GetLocalTime(wxDate(1,6,1974),2); - if (year==1975) DSTtime = GetLocalTime(wxDate(2,23,1975),2); - } - return DSTtime; -} - -wxTime wxTime::GetEndDST(unsigned year) -/* - Return the local Standard Time at which Daylight Savings Time - ends in the specified year. -*/ -{ - wxTime STDtime(GetLocalTime(wxDate(10,31,year).Previous(1),2-1)); - return STDtime; -} - -bool wxTime::IsDST() const -/* - Return TRUE if this local Standard Time should be adjusted - for Daylight Savings Time. -*/ -{ - long daycount = (long)(sec/seconds_in_day); - - // At this point, daycount is the number of days from 1/1/1901. - // Need to convert to julian date (which starts at 1/1/4713 B.C.) - wxDate date(1,1,1901); - date += daycount; - - unsigned year = date.GetYear(); - if (DST_OBSERVED) - { - if (*this >= GetBeginDST(year)) - if (*this < GetEndDST(year)) return TRUE; - } - return FALSE; -} - -wxTime wxTime::GetLocalTime() const -/* - Adjusts this GM Time for local time zone and Daylight Savings Time. -*/ -{ - wxTime local_time(sec-TIME_ZONE); - if (local_time.IsDST()) local_time.sec += 3600; - return local_time; -} - -minuteTy wxTime::GetMinute() const -/* - Return the minute of this wxTime in local time; i.e., adjust - for time zone and Daylight Savings Time. -*/ -{ - return GetLocalTime().GetMinuteGMT(); -} - -minuteTy wxTime::GetMinuteGMT() const -/* - Return the minute of this wxTime in GMT. -*/ -{ - return (minuteTy)(((sec % 86400) % 3600) / 60); -} - -secondTy wxTime::GetSecond() const -/* - Return the second of this wxTime. -*/ -{ - return (secondTy)(((sec % 86400) % 3600) % 60); -} - -secondTy wxTime::GetSecondGMT() const -/* - Return the minute of this wxTime in GMT. -*/ -{ - return (secondTy)(((sec % 86400) % 3600) % 60); -} - -int wxTime::GetDay() const -{ - wxDate da((wxDate) *this); - return da.GetDay(); -} - -int wxTime::GetDayOfWeek() const -{ - wxDate da((wxDate) *this); - return da.GetDayOfWeek(); -} - -int wxTime::GetMonth() const -{ - wxDate da((wxDate) *this); - return da.GetMonth(); -} - -int wxTime::GetYear() const -{ - wxDate da((wxDate) *this); - return da.GetYear(); -} - -wxTime wxTime::Max(const wxTime& t) const -{ - if (t < *this) return *this; - return t; -} - -wxTime wxTime::Min(const wxTime& t) const -{ - if (t > *this) return *this; - return t; -} - -#ifndef __SALFORDC__ -wxTime::operator char *(void) -{ - return FormatTime(); -} -#endif - -void wxTime::SetFormat(const wxTime::tFormat lFormat, - const wxTime::tPrecision lPrecision) { - - wxTime::Format = lFormat; - wxTime::Precision = lPrecision; -} - -char *wxTime::FormatTime() const { - static char timeBuf[30]; - unsigned hh(GetHour()); - - switch (Format) { - case wx12h: - hh -= 12; - break; - case wx24h: - break; - } - - switch (Precision) { - case wxStdMinSec: - sprintf(timeBuf,"%2d:%02d:%02d",hh,GetMinute(),GetSecond()); - break; - case wxStdMin: - sprintf(timeBuf,"%2d:%02d",hh,GetMinute()); - break; - } - - if (Format == wx12h) - if (GetHour() <= 12) - strcat(timeBuf,_("am")); - else - strcat(timeBuf,_("pm")); - - return timeBuf; -} - -/* -int wxTime::compare(const Object& ob) const -{ - assertArgSpecies(ob,classDesc,"compare"); - register clockTy t = castdown(ob).sec; - if (sec < t) return -1; - if (sec > t) return 1; - return 0; -} - -void wxTime::deepenShallowCopy() {} - -unsigned wxTime::hash() const { return sec; } - -bool wxTime::isEqual(const Object& ob) const -{ - return ob.isSpecies(classDesc) && *this==castdown(ob); -} - -const Class* wxTime::species() const { return &classDesc; } - -void wxTime::printOn(ostream& strm) const -{ - register unsigned hh = GetHour(); - wxDate(*this).printOn(strm); - strm << ' ' << ((hh <= 12) ? hh : hh-12) << ':' - << setfill('0') << setw(2) << GetMinute() << ':' - << setfill('0') << setw(2) << GetSecond() << ' '; - if (hh < 12) strm << _("am"); - else strm << _("pm"); -} - -wxTime::wxTime(OIOin& strm) - : BASE(strm) -{ - unsigned long usec; - strm >> sec >> usec; -} - -void wxTime::storer(OIOout& strm) const -{ - BASE::storer(strm); - strm << sec << 0l; -} - - -wxTime::wxTime(OIOifd& fd) - : BASE(fd) -{ - unsigned long usec; - fd >> sec >> usec; -} - -void wxTime::storer(OIOofd& fd) const -{ - BASE::storer(fd); - fd << sec << 0l; -} -*/ - -#endif diff --git a/src/common/timercmn.cpp b/src/common/timercmn.cpp deleted file mode 100644 index 369b3b73d2..0000000000 --- a/src/common/timercmn.cpp +++ /dev/null @@ -1,224 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: timercmn.cpp -// Purpose: Common timer implementation -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -//#pragma implementation "timercmn.h" -#pragma implementation -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/defs.h" -#include "wx/list.h" -#endif - -#include "wx/timer.h" - -#ifdef __SVR4__ -#define __SYSV__ -#endif - -#include - -#ifndef __WXMAC__ -#include -#endif - -#if (!defined(__SC__) && !defined(__SGI__) && !defined(__GNUWIN32__) && !defined(__MWERKS__)) || defined(__MINGW32__) -#include -#endif - -#if defined(__linux__) || defined(__SVR4__) || defined(__SYSV__) || defined(__SGI__) || \ - defined(__ALPHA__) || defined(__GNUWIN32__) || defined(__FreeBSD__) || defined(__NetBSD__) || \ - defined(__SALFORDC__) -#include -#endif - -#ifdef __MINGW32__ -#include "windows.h" -#endif - -#if defined(__SUN__) || defined(__OSF__) -// At least on Sun, ftime is undeclared. -// Need to be verified on other platforms. -extern "C" int ftime(struct timeb *tp); -// extern "C" time_t time(time_t); -// #include -#if defined(__SVR4__) && !defined(__ALPHA__) -// ditto for gettimeofday on Solaris 2.x. -extern "C" int gettimeofday(struct timeval *tp, void *); -#endif -#endif - -/* - * Timer functions - * - */ - -long wxStartTime = 0; -void wxStartTimer(void) -{ -#if defined(__xlC__) || defined(__AIX__) || defined(__SVR4__) || defined(__SYSV__) || (defined(__GNUWIN32__) && !defined(__MINGW32__)) // || defined(__AIXV3__) - struct timeval tp; -#if defined(__SYSV__) || (defined (__GNUWIN32__) && !defined (__MINGW32__)) - gettimeofday(&tp, (struct timezone *)NULL); -#else - gettimeofday(&tp); -#endif - wxStartTime = 1000*tp.tv_sec + tp.tv_usec/1000; -#elif (defined(__SC__) || defined(__SGI__) || defined(___BSDI__) || defined(__ALPHA__) || defined(__MINGW32__) || defined(__MWERKS__)) - time_t t0; - struct tm *tp; - time(&t0); - tp = localtime(&t0); - wxStartTime = 1000*(60*(60*tp->tm_hour+tp->tm_min)+tp->tm_sec); -#else - struct timeb tp; - ftime(&tp); - wxStartTime = 1000*tp.time + tp.millitm; -#endif -} - -// Returns elapsed time in milliseconds -long wxGetElapsedTime(bool resetTimer) -{ -#if defined(__xlC__) || defined(__AIX__) || defined(__SVR4__) || defined(__SYSV__) || (defined(__GNUWIN32__) && !defined(__MINGW32__)) // || defined(__AIXV3__) - struct timeval tp; -#if defined(__SYSV__) || (defined (__GNUWIN32__) && !defined (__MINGW32__)) - gettimeofday(&tp, (struct timezone *)NULL); -#else - gettimeofday(&tp); -#endif - long oldTime = wxStartTime; - long newTime = 1000*tp.tv_sec + tp.tv_usec / 1000; - if (resetTimer) - wxStartTime = newTime; -#elif (defined(__SC__) || defined(__SGI__) || defined(___BSDI__) || defined(__ALPHA__) || defined(__MINGW32__)|| defined(__MWERKS__)) - time_t t0; - struct tm *tp; - time(&t0); - tp = localtime(&t0); - long oldTime = wxStartTime; - long newTime = 1000*(60*(60*tp->tm_hour+tp->tm_min)+tp->tm_sec); - if (resetTimer) - wxStartTime = newTime; -#else - struct timeb tp; - ftime(&tp); - long oldTime = wxStartTime; - long newTime = 1000*tp.time + tp.millitm; - if (resetTimer) - wxStartTime = newTime; -#endif - return newTime - oldTime; -} - -// EXPERIMENTAL: comment this out if it doesn't compile. -#ifndef __VMS__ -bool wxGetLocalTime(long *timeZone, int *dstObserved) -{ -#if defined(__MINGW32__) && defined(__EGCS__) - time_t t0; - struct tm *tp; - time(&t0); - tp = localtime(&t0); - *timeZone = timezone; // tp->tm_gmtoff; // ??? - *dstObserved = tp->tm_isdst; -#elif defined(__MINGW32__) - time_t t0; - struct tm *tp; - time(&t0); - tp = localtime(&t0); - timeb tz; - ftime(& tz); - *timeZone = tz._timezone; - *dstObserved = tp->tm_isdst; -#else - -#if (((defined(__SYSV__) && !defined(__HPUX__)) || defined(__MSDOS__) || defined(__WXMSW__))\ - && !defined(__GNUWIN32__) && !defined(__MWERKS__) ) -#if defined(__BORLANDC__) - /* Borland uses underscores */ - *timeZone = _timezone; - *dstObserved = _daylight; -#elif defined(__SALFORDC__) - *timeZone = _timezone; - *dstObserved = daylight; -#else - *timeZone = timezone; - *dstObserved = daylight; -#endif -#elif defined(__xlC__) || defined(__AIX__) || defined(__SVR4__) || defined(__SYSV__) || defined(__MWERKS__) || (defined(__GNUWIN32__) && !defined(__MINGW32__)) // || defined(__AIXV3__) -#ifndef __MWERKS__ // shouldn't this be one scope below ? - struct timeval tp; -#endif -#if defined(__SYSV__) || (defined(__GNUWIN32__) && !defined(__MINGW32)) - struct timezone tz; - gettimeofday(&tp, &tz); - *timeZone = 60*(tz.tz_minuteswest); - *dstObserved = tz.tz_dsttime; -#else - time_t t0; - struct tm *tp; - time(&t0); - tp = localtime(&t0); -#ifndef __MWERKS__ - *timeZone = tp->tm_gmtoff; // ??? -#else - *timeZone = 0 ; -#endif - *dstObserved = tp->tm_isdst; -#endif -#elif defined(__WXSTUBS__) - return FALSE; -#else -// #error wxGetLocalTime not implemented. - struct timeval tp; - struct timezone tz; - gettimeofday(&tp, &tz); - *timeZone = 60*(tz.tz_minuteswest); - *dstObserved = tz.tz_dsttime; -#endif -#endif - // __MINGW32__ - return TRUE; -} -#endif - -// Get number of seconds since 00:00:00 GMT, Jan 1st 1970. -long wxGetCurrentTime(void) -{ -#if defined(__xlC__) || defined(__AIX__) || defined(__SVR4__) || defined(__SYSV__) // || defined(__AIXV3__) - struct timeval tp; -#if defined(__SYSV__) || (defined (__GNUWIN32__) && !defined (__MINGW32__)) - gettimeofday(&tp, (struct timezone *)NULL); -#else - gettimeofday(&tp); -#endif - return tp.tv_sec; -#else // (defined(__SC__) || defined(__SGI__) || defined(___BSDI__) || defined(__ALPHA__)) - return time(0); -#endif -/* -#else - struct timeb tp; - ftime(&tp); - return tp.time; -#endif -*/ -} - diff --git a/src/common/tokenzr.cpp b/src/common/tokenzr.cpp deleted file mode 100644 index 34079c0f66..0000000000 --- a/src/common/tokenzr.cpp +++ /dev/null @@ -1,114 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: tokenzr.cpp -// Purpose: String tokenizer -// Author: Guilhem Lavaux -// Modified by: -// Created: 04/22/98 -// RCS-ID: $Id$ -// Copyright: (c) Guilhem Lavaux -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "tokenzr.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#endif - -#include "wx/object.h" -#include "wx/string.h" -#include "wx/tokenzr.h" - -wxStringTokenizer::wxStringTokenizer(const wxString& to_tokenize, - const wxString& delims, - bool ret_delims) - : wxObject() -{ - m_string = to_tokenize; - m_delims = delims; - m_retdelims = ret_delims; -} - -wxStringTokenizer::~wxStringTokenizer() -{ -} - -off_t wxStringTokenizer::FindDelims(const wxString& str, const wxString& delims) -{ - int i, j; - register int s_len = str.Length(), - len = delims.Length(); - - for (i=0;i -#include - -// wxWindows headers -#include -#include -#include - -// wxSocket header -#include "wx/url.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_CLASS(wxProtoInfo, wxObject) -IMPLEMENT_CLASS(wxURL, wxObject) -#endif - -// Protocols list -wxProtoInfo *wxURL::g_protocols = NULL; -wxHTTP *wxURL::g_proxy; - -///////////////////////////////////////////////////////////////// -// wxURL //////////////////////////////////////////////////////// -///////////////////////////////////////////////////////////////// - -/* - * -------------------------------------------------------------- - * --------- wxURL CONSTRUCTOR DESTRUCTOR ----------------------- - * -------------------------------------------------------------- - */ - -wxURL::wxURL(const wxString& url) -{ - m_protocol = NULL; - if (g_proxy->IsConnected()) { - m_protocol = g_proxy; - m_protoname = "proxy"; - m_path = url; - return; - } - m_url = url; - m_error = wxURL_NOERR; -} - -bool wxURL::ParseURL() -{ - wxString last_url = m_url; - - // Clean up - CleanData(); - - // Extract protocol name - if (!PrepProto(last_url)) { - m_error = wxURL_SNTXERR; - return FALSE; - } - - // Find and create the protocol object - if (!FetchProtocol()) { - m_error = wxURL_NOPROTO; - return FALSE; - } - - // Do we need a host name ? - if (m_protoinfo->m_needhost) { - // Extract it - if (!PrepHost(last_url)) { - m_error = wxURL_SNTXERR; - return FALSE; - } - } - - // Extract full path - if (!PrepPath(last_url)) { - m_error = wxURL_NOPATH; - return FALSE; - } - - m_error = wxURL_NOERR; - return TRUE; -} - -void wxURL::CleanData() -{ - if (m_protoname != "proxy") - delete m_protocol; -} - -wxURL::~wxURL() -{ - CleanData(); -} - -/* - * -------------------------------------------------------------- - * --------- wxURL urls decoders -------------------------------- - * -------------------------------------------------------------- - */ -bool wxURL::PrepProto(wxString& url) -{ - int pos; - - // Find end - pos = url.Find(':'); - if (pos == -1) - return FALSE; - - m_protoname = url(0, pos); - - url = url(pos+1, url.Length()); - - return TRUE; -} - -bool wxURL::PrepHost(wxString& url) -{ - wxString temp_url; - int pos, pos2; - - if ((url.GetChar(0) != '/') || (url.GetChar(1) != '/')) - return FALSE; - - url = url(2, url.Length()); - - pos = url.Find('/'); - if (pos == -1) - pos = url.Length(); - - if (pos == 0) - return FALSE; - - temp_url = url(0, pos); - url = url(url.Find('/'), url.Length()); - - // Retrieve service number - pos2 = temp_url.Find(':', TRUE); - if (pos2 != -1 && pos2 < pos) { - m_servname = url(pos2, pos); - if (!m_servname.IsNumber()) - return FALSE; - pos2 = pos; - temp_url = temp_url(0, pos2); - } - - // Retrieve user and password. - pos2 = temp_url.Find('@'); - // Even if pos2 equals -1, this code is right. - m_hostname = temp_url(pos2+1, temp_url.Length()); - - m_user = ""; - m_password = ""; - - if (pos2 == -1) - return TRUE; - - temp_url = temp_url(0, pos2); - pos2 = temp_url.Find(':'); - - if (pos2 == -1) - return FALSE; - - m_user = temp_url(0, pos2); - m_password = temp_url(pos2+1, url.Length()); - - return TRUE; -} - -bool wxURL::PrepPath(wxString& url) -{ - if (url.Length() != 0) - m_path = url; - else - m_path = "/"; - return TRUE; -} - -bool wxURL::FetchProtocol() -{ - wxProtoInfo *info = g_protocols; - - while (info) { - if (m_protoname == info->m_protoname) { - if (m_servname.IsNull()) - m_servname = info->m_servname; - - m_protoinfo = info; - m_protocol = (wxProtocol *)m_protoinfo->m_cinfo->CreateObject(); - wxSocketHandler::Master().Register(m_protocol); - return TRUE; - } - info = info->next; - } - return FALSE; -} - -/* - * -------------------------------------------------------------- - * --------- wxURL get ------------------------------------------ - * -------------------------------------------------------------- - */ -wxInputStream *wxURL::GetInputStream(void) -{ - wxIPV4address addr; - wxInputStream *the_i_stream = NULL; - - if (!m_protocol) - if (!ParseURL()) - return NULL; - - if (!m_protocol) { - m_error = wxURL_NOPROTO; - return NULL; - } - - m_error = wxURL_NOERR; - if (m_user != "") { - m_protocol->SetUser(m_user); - m_protocol->SetPassword(m_password); - } - - if (m_protoinfo->m_needhost) { - if (!addr.Hostname(m_hostname)) { - m_error = wxURL_NOHOST; - return NULL; - } - - addr.Service(m_servname); - - if (!m_protocol->Connect(addr, TRUE)) // Watcom needs the 2nd arg for some reason - { - m_error = wxURL_CONNERR; - return NULL; - } - } - - the_i_stream = m_protocol->GetInputStream(m_path); - if (!the_i_stream) { - m_error = wxURL_PROTOERR; - return NULL; - } - - return the_i_stream; -} - -void wxURL::SetDefaultProxy(const wxString& url_proxy) -{ - g_proxy->Close(); - - if (url_proxy.IsNull()) - return; - - wxString tmp_str = url_proxy; - int pos = tmp_str.Find(':'); - wxString hostname = tmp_str(0, pos), - port = tmp_str(pos, tmp_str.Length()-pos); - wxIPV4address addr; - - addr.Hostname(hostname); - addr.Service(port); - - g_proxy->Connect(addr, TRUE); // Watcom needs the 2nd arg for some reason -} - -void wxURL::SetProxy(const wxString& url_proxy) -{ - if (url_proxy.IsNull()) { - m_proxy.Close(); - return; - } - - CleanData(); - - wxString tmp_str; - wxString hostname, port; - int pos; - wxIPV4address addr; - - tmp_str = url_proxy; - pos = tmp_str.Find(':'); - hostname = tmp_str(0, pos); - port = tmp_str(pos, tmp_str.Length()-pos); - - addr.Hostname(hostname); - addr.Service(port); - - m_proxy.Connect(addr, TRUE); // Watcom needs the 2nd arg for some reason - - m_protocol = &m_proxy; - m_protoname = "proxy"; - m_path = url_proxy; -} diff --git a/src/common/utilscmn.cpp b/src/common/utilscmn.cpp deleted file mode 100644 index 1488ca866c..0000000000 --- a/src/common/utilscmn.cpp +++ /dev/null @@ -1,851 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: utilscmn.cpp -// Purpose: Miscellaneous utility functions and classes -// Author: Julian Smart -// Modified by: -// Created: 29/01/98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Julian Smart -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "utils.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/defs.h" -#include "wx/utils.h" -#include "wx/window.h" -#include "wx/menu.h" -#include "wx/frame.h" -#include "wx/msgdlg.h" -#include "wx/textdlg.h" -#endif - -#if wxUSE_IOSTREAMH -#include -#include -#else -#include -#include -# ifdef _MSC_VER - using namespace std; -# endif -#endif - -#include -#include -#include -#include -#if !defined(__WATCOMC__) -#if !(defined(_MSC_VER) && (_MSC_VER > 800)) -#include -#endif -#endif -#include -#ifndef __MWERKS__ -#include -#include -#endif - -#ifdef __SALFORDC__ -#include -#endif - -// Pattern matching code. -// Yes, this path is deliberate (for Borland compilation) -#ifdef wx_mac /* MATTHEW: [5] Mac doesn't like paths with "/" */ -#include "glob.inc" -#else -#include "../common/glob.inc" -#endif - -#ifdef __WXMSW__ -#include "windows.h" -#endif - -#define _MAXPATHLEN 500 - -extern char *wxBuffer; - -#ifdef __WXMAC__ -int strcasecmp(const char *str_1, const char *str_2) -{ - register char c1, c2; - do { - c1 = tolower(*str_1++); - c2 = tolower(*str_2++); - } while ( c1 && (c1 == c2) ); - - return c1 - c2; -} - -int strncasecmp(const char *str_1, const char *str_2, size_t maxchar) -{ - - register char c1, c2; - while( maxchar--) - { - c1 = tolower(*str_1++); - c2 = tolower(*str_2++); - - if ( !c1 || c1!=c2 ) - return c1 - c2; - - } ; - - return 0 ; - -} -#endif -#ifdef __VMS__ -// we have no strI functions under VMS, therefore I have implemented -// an inefficient but portable version: convert copies of strings to lowercase -// and then use the normal comparison -static void myLowerString(char *s) -{ - while(*s){ - if(isalpha(*s)) *s = (char)tolower(*s); - s++; - } -} - -int strcasecmp(const char *str_1, const char *str_2) -{ - char *temp1 = new char[strlen(str_1)+1]; - char *temp2 = new char[strlen(str_2)+1]; - strcpy(temp1,str_1); - strcpy(temp2,str_2); - myLowerString(temp1); - myLowerString(temp2); - - int result = strcmp(temp1,temp2); - delete[] temp1; - delete[] temp2; - - return(result); -} - -int strncasecmp(const char *str_1, const char *str_2, size_t maxchar) -{ - char *temp1 = new char[strlen(str_1)+1]; - char *temp2 = new char[strlen(str_2)+1]; - strcpy(temp1,str_1); - strcpy(temp2,str_2); - myLowerString(temp1); - myLowerString(temp2); - - int result = strncmp(temp1,temp2,maxchar); - delete[] temp1; - delete[] temp2; - - return(result); -} -#endif - -#ifdef __WINDOWS__ - -#ifndef __GNUWIN32__ -#ifndef __MWERKS__ -#define strcasecmp stricmp -#define strncasecmp strnicmp -#else -#define strcasecmp _stricmp -#define strncasecmp _strnicmp -#endif -#endif - -#ifdef _MSC_VER -#pragma warning (disable : 4245) -#endif - -#ifdef _MSC_VER -#pragma warning (default : 4245) -#endif - -#else -// This declaration is missing in SunOS! -// (Yes, I know it is NOT ANSI-C but its in BSD libc) -#if defined(__xlC) || defined(__AIX__) || defined(__GNUG__) -extern "C" -{ - int strcasecmp (const char *, const char *); - int strncasecmp (const char *, const char *, size_t); -} -#endif -#endif /* __WXMSW__ */ - - -char * -copystring (const char *s) -{ - if (s == NULL) s = ""; - size_t len = strlen (s) + 1; - - char *news = new char[len]; - memcpy (news, s, len); // Should be the fastest - - return news; -} - -// Id generation -static long wxCurrentId = 100; - -long -wxNewId (void) -{ - return wxCurrentId++; -} - -long -wxGetCurrentId(void) { return wxCurrentId; } - -void -wxRegisterId (long id) -{ - if (id >= wxCurrentId) - wxCurrentId = id + 1; -} - -void -StringToFloat (char *s, float *number) -{ - if (s && *s && number) - *number = (float) strtod (s, (char **) NULL); -} - -void -StringToDouble (char *s, double *number) -{ - if (s && *s && number) - *number = strtod (s, (char **) NULL); -} - -char * -FloatToString (float number, const char *fmt) -{ - static char buf[256]; - -// sprintf (buf, "%.2f", number); - sprintf (buf, fmt, number); - return buf; -} - -char * -DoubleToString (double number, const char *fmt) -{ - static char buf[256]; - - sprintf (buf, fmt, number); - return buf; -} - -void -StringToInt (char *s, int *number) -{ - if (s && *s && number) - *number = (int) strtol (s, (char **) NULL, 10); -} - -void -StringToLong (char *s, long *number) -{ - if (s && *s && number) - *number = strtol (s, (char **) NULL, 10); -} - -char * -IntToString (int number) -{ - static char buf[20]; - - sprintf (buf, "%d", number); - return buf; -} - -char * -LongToString (long number) -{ - static char buf[20]; - - sprintf (buf, "%ld", number); - return buf; -} - -// Array used in DecToHex conversion routine. -static char hexArray[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', - 'C', 'D', 'E', 'F' }; - -// Convert 2-digit hex number to decimal -int wxHexToDec(const wxString& buf) -{ - int firstDigit, secondDigit; - - if (buf.GetChar(0) >= 'A') - firstDigit = buf.GetChar(0) - 'A' + 10; - else - firstDigit = buf.GetChar(0) - '0'; - - if (buf.GetChar(1) >= 'A') - secondDigit = buf.GetChar(1) - 'A' + 10; - else - secondDigit = buf.GetChar(1) - '0'; - - return firstDigit * 16 + secondDigit; -} - -// Convert decimal integer to 2-character hex string -void wxDecToHex(int dec, char *buf) -{ - int firstDigit = (int)(dec/16.0); - int secondDigit = (int)(dec - (firstDigit*16.0)); - buf[0] = hexArray[firstDigit]; - buf[1] = hexArray[secondDigit]; - buf[2] = 0; -} - -// Convert decimal integer to 2-character hex string -wxString wxDecToHex(int dec) -{ - char buf[3]; - wxDecToHex(dec, buf); - return wxString(buf); -} - -// Match a string INDEPENDENT OF CASE -bool -StringMatch (char *str1, char *str2, bool subString, bool exact) -{ - if (str1 == NULL || str2 == NULL) - return FALSE; - if (str1 == str2) - return TRUE; - - if (subString) - { - int len1 = strlen (str1); - int len2 = strlen (str2); - int i; - - // Search for str1 in str2 - // Slow .... but acceptable for short strings - for (i = 0; i <= len2 - len1; i++) - { - if (strncasecmp (str1, str2 + i, len1) == 0) - return TRUE; - } - } - else if (exact) - { - if (strcasecmp (str1, str2) == 0) - return TRUE; - } - else - { - int len1 = strlen (str1); - int len2 = strlen (str2); - - if (strncasecmp (str1, str2, wxMin (len1, len2)) == 0) - return TRUE; - } - - return FALSE; -} - -// Return the current date/time -// [volatile] -wxString wxNow( void ) -{ - time_t now = time((time_t *) NULL); - char *date = ctime(&now); - date[24] = '\0'; - return wxString(date); -} - -/* Get Full RFC822 style email address */ -bool -wxGetEmailAddress (char *address, int maxSize) -{ - char host[65]; - char user[65]; - - if (wxGetHostName(host, 64) == FALSE) - return FALSE; - if (wxGetUserId(user, 64) == FALSE) - return FALSE; - - char tmp[130]; - strcpy(tmp, user); - strcat(tmp, "@"); - strcat(tmp, host); - - strncpy(address, tmp, maxSize - 1); - address[maxSize-1] = '\0'; - return TRUE; -} - -/* - * Strip out any menu codes - */ - -char *wxStripMenuCodes (char *in, char *out) -{ - if (!in) - return (char *) NULL; - - if (!out) - out = copystring(in); - - char *tmpOut = out; - - while (*in) - { - if (*in == '&') - { - // Check && -> &, &x -> x - if (*++in == '&') - *out++ = *in++; - } - else if (*in == '\t') - { - // Remove all stuff after \t in X mode, and let the stuff as is - // in Windows mode. - // Accelerators are handled in wx_item.cc for Motif, and are not - // YET supported in XView - break; - } - else - *out++ = *in++; - } // while - - *out = '\0'; - - return tmpOut; -} - -wxString wxStripMenuCodes(const wxString& str) -{ - char *buf = new char[str.Length() + 1]; - wxStripMenuCodes((char*) (const char*) str, buf); - wxString str1(buf); - delete[] buf; - return str1; -} - -/* - * Window search functions - * - */ - -/* - * If parent is non-NULL, look through children for a label or title - * matching the specified string. If NULL, look through all top-level windows. - * - */ - -static wxWindow *wxFindWindowByLabel1 (const wxString& title, wxWindow * parent); - -wxWindow * -wxFindWindowByLabel (const wxString& title, wxWindow * parent) -{ - if (parent) - { - return wxFindWindowByLabel1 (title, parent); - } - else - { - for (wxNode * node = wxTopLevelWindows.First (); node; node = node->Next ()) - { - wxWindow *win = (wxWindow *) node->Data (); - wxWindow *retwin = wxFindWindowByLabel1 (title, win); - if (retwin) - return retwin; - } // for() - - } - return (wxWindow *) NULL; -} - -// Recursive -static wxWindow * -wxFindWindowByLabel1 (const wxString& title, wxWindow * parent) -{ - if (parent) - { - if (parent->GetLabel() == title) - return parent; - } - - if (parent) - { - for (wxNode * node = parent->GetChildren().First (); node; node = node->Next ()) - { - wxWindow *win = (wxWindow *) node->Data (); - wxWindow *retwin = wxFindWindowByLabel1 (title, win); - if (retwin) - return retwin; - } // for() - - } - - return (wxWindow *) NULL; // Not found - -} - -/* - * If parent is non-NULL, look through children for a name - * matching the specified string. If NULL, look through all top-level windows. - * - */ - -static wxWindow *wxFindWindowByName1 (const wxString& title, wxWindow * parent); - -wxWindow * -wxFindWindowByName (const wxString& title, wxWindow * parent) -{ - if (parent) - { - return wxFindWindowByName1 (title, parent); - } - else - { - for (wxNode * node = wxTopLevelWindows.First (); node; node = node->Next ()) - { - wxWindow *win = (wxWindow *) node->Data (); - wxWindow *retwin = wxFindWindowByName1 (title, win); - if (retwin) - return retwin; - } // for() - - } - // Failed? Try by label instead. - return wxFindWindowByLabel(title, parent); -} - -// Recursive -static wxWindow * -wxFindWindowByName1 (const wxString& title, wxWindow * parent) -{ - if (parent) - { - if ( parent->GetName() == title ) - return parent; - } - - if (parent) - { - for (wxNode * node = parent->GetChildren().First (); node; node = node->Next ()) - { - wxWindow *win = (wxWindow *) node->Data (); - wxWindow *retwin = wxFindWindowByName1 (title, win); - if (retwin) - return retwin; - } // for() - - } - - return (wxWindow *) NULL; // Not found - -} - -// Returns menu item id or -1 if none. -int -wxFindMenuItemId (wxFrame * frame, const wxString& menuString, const wxString& itemString) -{ - wxMenuBar *menuBar = frame->GetMenuBar (); - if (!menuBar) - return -1; - return menuBar->FindMenuItem (menuString, itemString); -} - -/* -On Fri, 21 Jul 1995, Paul Craven wrote: - -> Is there a way to find the path of running program's executable? I can get -> my home directory, and the current directory, but I don't know how to get the -> executable directory. -> - -The code below (warty as it is), does what you want on most Unix, -DOS, and Mac platforms (it's from the ALS Prolog main). - -|| Ken Bowen Applied Logic Systems, Inc. PO Box 180, -||==== Voice: +1 (617)965-9191 Newton Centre, -|| FAX: +1 (617)965-1636 MA 02159 USA - Email: ken@als.com WWW: http://www.als.com ------------------------------------------------------------------------- -*/ - -// This code is commented out but it may be integrated with wxWin at -// a later date, after testing. Thanks Ken! -#if 0 - -/*--------------------------------------------------------------------* - | whereami is given a filename f in the form: whereami(argv[0]) - | It returns the directory in which the executable file (containing - | this code [main.c] ) may be found. A dot will be returned to indicate - | the current directory. - *--------------------------------------------------------------------*/ - -static void -whereami(name) - char *name; -{ - register char *cutoff = NULL; /* stifle -Wall */ - register char *s; - register char *t; - int cc; - char ebuf[4096]; - - /* - * See if the file is accessible either through the current directory - * or through an absolute path. - */ - - if (access(name, R_OK) == 0) { - - /*-------------------------------------------------------------* - * The file was accessible without any other work. But the current - * working directory might change on us, so if it was accessible - * through the cwd, then we should get it for later accesses. - *-------------------------------------------------------------*/ - - t = imagedir; - if (!absolute_pathname(name)) { -#if defined(DOS) || defined(__WIN32__) - int drive; - char *newrbuf; - - newrbuf = imagedir; -#ifndef __DJGPP__ - if (*(name + 1) == ':') { - if (*name >= 'a' && *name <= 'z') - drive = (int) (*name - 'a' + 1); - else - drive = (int) (*name - 'A' + 1); - *newrbuf++ = *name; - *newrbuf++ = *(name + 1); - *newrbuf++ = DIR_SEPARATOR; - } - else { - drive = 0; - *newrbuf++ = DIR_SEPARATOR; - } - if (getcwd(newrbuf, drive) == 0) { /* } */ -#else - if (getcwd(newrbuf, 1024) == 0) { /* } */ -#endif -#else /* DOS */ -#ifdef HAVE_GETWD - if (getwd(imagedir) == 0) { /* } */ -#else /* !HAVE_GETWD */ - if (getcwd(imagedir, 1024) == 0) { -#endif /* !HAVE_GETWD */ -#endif /* DOS */ - fatal_error(FE_GETCWD, 0); - } - for (; *t; t++) /* Set t to end of buffer */ - ; - if (*(t - 1) == DIR_SEPARATOR) /* leave slash if already - * last char - */ - cutoff = t - 1; - else { - cutoff = t; /* otherwise put one in */ - *t++ = DIR_SEPARATOR; - } - } -#if (!defined(__MAC__) && !defined(__DJGPP__) && !defined(__GO32__) && !defined(__WIN32__)) - else - (*t++ = DIR_SEPARATOR); -#endif - - /*-------------------------------------------------------------* - * Copy the rest of the string and set the cutoff if it was not - * already set. If the first character of name is a slash, cutoff - * is not presently set but will be on the first iteration of the - * loop below. - *-------------------------------------------------------------*/ - - for ((*name == DIR_SEPARATOR ? (s = name+1) : (s = name));;) { - if (*s == DIR_SEPARATOR) - cutoff = t; - if (!(*t++ = *s++)) - break; - } - - } - else { - - /*-------------------------------------------------------------* - * Get the path list from the environment. If the path list is - * inaccessible for any reason, leave with fatal error. - *-------------------------------------------------------------*/ - -#ifdef __MAC__ - if ((s = getenv("Commands")) == (char *) 0) -#else - if ((s = getenv("PATH")) == (char *) 0) -#endif - fatal_error(FE_PATH, 0); - - /* - * Copy path list into ebuf and set the source pointer to the - * beginning of this buffer. - */ - - strcpy(ebuf, s); - s = ebuf; - - for (;;) { - t = imagedir; - while (*s && *s != PATH_SEPARATOR) - *t++ = *s++; - if (t > imagedir && *(t - 1) == DIR_SEPARATOR) - ; /* do nothing -- slash already is in place */ - else - *t++ = DIR_SEPARATOR; /* put in the slash */ - cutoff = t - 1; /* set cutoff */ - strcpy(t, name); - if (access(imagedir, R_OK) == 0) - break; - - if (*s) - s++; /* advance source pointer */ - else - fatal_error(FE_INFND, 0); - } - - } - - /*-------------------------------------------------------------* - | At this point the full pathname should exist in imagedir and - | cutoff should be set to the final slash. We must now determine - | whether the file name is a symbolic link or not and chase it down - | if it is. Note that we reuse ebuf for getting the link. - *-------------------------------------------------------------*/ - -#ifdef HAVE_SYMLINK - while ((cc = readlink(imagedir, ebuf, 512)) != -1) { - ebuf[cc] = 0; - s = ebuf; - if (*s == DIR_SEPARATOR) { - t = imagedir; - } - else { - t = cutoff + 1; - } - for (;;) { - if (*s == DIR_SEPARATOR) - cutoff = t; /* mark the last slash seen */ - if (!(*t++ = *s++)) /* copy the character */ - break; - } - } - -#endif /* HAVE_SYMLINK */ - - strcpy(imagename, cutoff + 1); /* keep the image name */ - *(cutoff + 1) = 0; /* chop off the filename part */ -} - -#endif - -/* - * N.B. these convenience functions must be separate from msgdlgg.cpp, textdlgg.cpp - * since otherwise the generic code may be pulled in unnecessarily. - */ - -int wxMessageBox(const wxString& message, const wxString& caption, long style, - wxWindow *parent, int WXUNUSED(x), int WXUNUSED(y) ) -{ - wxMessageDialog dialog(parent, message, caption, style); - - int ans = dialog.ShowModal(); - switch ( ans ) - { - case wxID_OK: - return wxOK; - break; - case wxID_YES: - return wxYES; - break; - case wxID_NO: - return wxNO; - break; - default: - case wxID_CANCEL: - return wxCANCEL; - break; - } - return ans; -} - -wxString wxGetTextFromUser(const wxString& message, const wxString& caption, - const wxString& defaultValue, wxWindow *parent, - int x, int y, bool WXUNUSED(centre) ) -{ - wxTextEntryDialog dialog(parent, message, caption, defaultValue, wxOK|wxCANCEL, wxPoint(x, y)); - if (dialog.ShowModal() == wxID_OK) - return dialog.GetValue(); - else - return wxString(""); -} - -#ifdef __MWERKS__ -char *strdup(const char *s) -{ - return strcpy( (char*) malloc( strlen( s ) + 1 ) , s ) ; -} - -int isascii( int c ) -{ - return ( c >= 0 && c < 128 ) ; -} -#endif - -// Overloaded functions, taking a wxString -bool wxGetHostName(wxString& name) -{ - bool success = wxGetHostName(wxBuffer, 500); - if (success) - { - name = wxBuffer; - return TRUE; - } - else - return FALSE; -} - -bool wxGetUserId(wxString& buf) -{ - bool success = wxGetUserId(wxBuffer, 500); - if (success) - { - buf = wxBuffer; - return TRUE; - } - else - return FALSE; -} - -bool wxGetUserName(wxString& buf) -{ - bool success = wxGetUserName(wxBuffer, 500); - if (success) - { - buf = wxBuffer; - return TRUE; - } - else - return FALSE; -} - diff --git a/src/common/validate.cpp b/src/common/validate.cpp deleted file mode 100644 index fe0ec85316..0000000000 --- a/src/common/validate.cpp +++ /dev/null @@ -1,44 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: validate.cpp -// Purpose: wxValidator -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "validate.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include "wx/validate.h" - -const wxValidator wxDefaultValidator; - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxValidator, wxEvtHandler) -#endif - -wxValidator::wxValidator(void) -{ - m_validatorWindow = (wxWindow *) NULL; -} - -wxValidator::~wxValidator() -{ -} - - diff --git a/src/common/valtext.cpp b/src/common/valtext.cpp deleted file mode 100644 index c3139ccfb6..0000000000 --- a/src/common/valtext.cpp +++ /dev/null @@ -1,321 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: valtext.cpp -// Purpose: wxTextValidator -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "valtext.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include -#include "wx/textctrl.h" -#include "wx/utils.h" -#include "wx/msgdlg.h" -#include "wx/intl.h" -#endif - -#include "wx/valtext.h" - -#include -#include -#include - -#ifdef __SALFORDC__ -#include -#endif - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxTextValidator, wxValidator) - -BEGIN_EVENT_TABLE(wxTextValidator, wxValidator) - EVT_CHAR(wxTextValidator::OnChar) -END_EVENT_TABLE() -#endif - -static bool wxIsNumeric(const wxString& val); - -wxTextValidator::wxTextValidator(long style, wxString *val) -{ - m_validatorStyle = style ; - m_stringValue = val ; -/* - m_refData = new wxVTextRefData; - - M_VTEXTDATA->m_validatorStyle = style ; - M_VTEXTDATA->m_stringValue = val ; -*/ -} - -wxTextValidator::wxTextValidator(const wxTextValidator& val) -{ - Copy(val); -} - -bool wxTextValidator::Copy(const wxTextValidator& val) -{ - wxValidator::Copy(val); - - m_validatorStyle = val.m_validatorStyle ; - m_stringValue = val.m_stringValue ; - - wxNode *node = val.m_includeList.First() ; - while ( node ) - { - char *s = (char *)node->Data(); - m_includeList.Add(s); - node = node->Next(); - } - node = val.m_excludeList.First() ; - while ( node ) - { - char *s = (char *)node->Data(); - m_excludeList.Add(s); - node = node->Next(); - } - return TRUE; -} - -wxTextValidator::~wxTextValidator() -{ -} - -static bool wxIsAlpha(const wxString& val) -{ - int i; - for ( i = 0; i < (int)val.Length(); i++) - { - if (!isalpha(val[i])) - return FALSE; - } - return TRUE; -} - -static bool wxIsAlphaNumeric(const wxString& val) -{ - int i; - for ( i = 0; i < (int)val.Length(); i++) - { - if (!isalnum(val[i])) - return FALSE; - } - return TRUE; -} - -// Called when the value in the window must be validated. -// This function can pop up an error message. -bool wxTextValidator::Validate(wxWindow *parent) -{ - if ( !m_validatorWindow ) - return FALSE; - if ( !m_validatorWindow->IsKindOf(CLASSINFO(wxTextCtrl)) ) - return FALSE; - if ( !m_stringValue ) - return FALSE; - - wxTextCtrl *control = (wxTextCtrl *) m_validatorWindow ; - - // If window is disabled, don't validate - if ( !control->Enabled() ) - return FALSE; - - wxString val(control->GetValue()); - - if ( m_validatorStyle & wxFILTER_INCLUDE_LIST ) - { - if ( !m_includeList.Member(val) ) - { - m_validatorWindow->SetFocus(); - char buf[512]; - sprintf(buf, _("%s is invalid."), (const char *)val); - wxMessageBox(buf, _("Validation conflict"), wxOK | wxICON_EXCLAMATION, parent); - return FALSE; - } - } - if ( m_validatorStyle & wxFILTER_EXCLUDE_LIST ) - { - if ( m_excludeList.Member(val) ) - { - m_validatorWindow->SetFocus(); - char buf[512]; - sprintf(buf, _("%s is invalid."), (const char *)val); - wxMessageBox(buf, _("Validation conflict"), wxOK | wxICON_EXCLAMATION, parent); - return FALSE; - } - } - if ( (m_validatorStyle & wxFILTER_ASCII) && !val.IsAscii() ) - { - m_validatorWindow->SetFocus(); - char buf[512]; - sprintf(buf, _("%s should only contain ASCII characters."), (const char *)val); - wxMessageBox(buf, _("Validation conflict"), wxOK | wxICON_EXCLAMATION, parent); - return FALSE; - } - if ( (m_validatorStyle & wxFILTER_ALPHA) && !wxIsAlpha(val) ) - { - m_validatorWindow->SetFocus(); - char buf[512]; - sprintf(buf, _("%s should only contain alphabetic characters."), (const char *)val); - wxMessageBox(buf, _("Validation conflict"), wxOK | wxICON_EXCLAMATION, parent); - return FALSE; - } - if ( (m_validatorStyle & wxFILTER_ALPHANUMERIC) && !wxIsAlphaNumeric(val)) - { - m_validatorWindow->SetFocus(); - char buf[512]; - sprintf(buf, _("%s should only contain alphabetic or numeric characters."), (const char *)val); - wxMessageBox(buf,_("Validation conflict"), wxOK | wxICON_EXCLAMATION, parent); - return FALSE; - } - if ( (m_validatorStyle & wxFILTER_NUMERIC) && !wxIsNumeric(val)) - - { - m_validatorWindow->SetFocus(); - char buf[512]; - sprintf(buf, _("%s should be numeric."), (const char *)val); - wxMessageBox(buf, _("Validation conflict"), wxOK | wxICON_EXCLAMATION, parent); - return FALSE; - } - - return TRUE ; -} - -// Called to transfer data to the window -bool wxTextValidator::TransferToWindow(void) -{ - if ( !m_validatorWindow ) - return FALSE; - if ( !m_validatorWindow->IsKindOf(CLASSINFO(wxTextCtrl)) ) - return FALSE; - if ( !m_stringValue ) - return FALSE; - - wxTextCtrl *control = (wxTextCtrl *) m_validatorWindow ; - control->SetValue(* m_stringValue) ; - - return TRUE; -} - -// Called to transfer data to the window -bool wxTextValidator::TransferFromWindow(void) -{ - if ( !m_validatorWindow ) - return FALSE; - if ( !m_validatorWindow->IsKindOf(CLASSINFO(wxTextCtrl)) ) - return FALSE; - if ( !m_stringValue ) - return FALSE; - - wxTextCtrl *control = (wxTextCtrl *) m_validatorWindow ; - * m_stringValue = control->GetValue() ; - - return TRUE; -} - -void wxTextValidator::SetIncludeList(const wxStringList& list) -{ -/* - if ( !M_VTEXTDATA ) - return; -*/ - - m_includeList.Clear(); - // TODO: replace with = - wxNode *node = list.First() ; - while ( node ) - { - char *s = (char *)node->Data(); - m_includeList.Add(s); - node = node->Next(); - } -} - -void wxTextValidator::SetExcludeList(const wxStringList& list) -{ -/* - if ( !M_VTEXTDATA ) - return; -*/ - - m_excludeList.Clear(); - // TODO: replace with = - wxNode *node = list.First() ; - while ( node ) - { - char *s = (char *)node->Data(); - m_excludeList.Add(s); - node = node->Next(); - } -} - -void wxTextValidator::OnChar(wxKeyEvent& event) -{ -/* - if ( !M_VTEXTDATA ) - return; -*/ - - if ( !m_validatorWindow ) - return; - - wxTextCtrl *textCtrl = (wxTextCtrl *)m_validatorWindow; - - int keyCode = event.KeyCode(); - if (keyCode == WXK_DELETE || keyCode == WXK_RETURN || keyCode == WXK_BACK || - keyCode == WXK_HOME || keyCode == WXK_LEFT || keyCode == WXK_UP || - keyCode == WXK_RIGHT || keyCode == WXK_DOWN || keyCode == WXK_PRIOR || - keyCode == WXK_NEXT || keyCode == WXK_END || keyCode == WXK_HOME) - { - textCtrl->wxTextCtrl::OnChar(event); - return ; - } - - if ( (m_validatorStyle & wxFILTER_ASCII) && !isascii(keyCode) ) - { - wxBell(); - return; - } - if ( (m_validatorStyle & wxFILTER_ALPHA) && !isalpha(keyCode) ) - { - wxBell(); - return; - } - if ( (m_validatorStyle & wxFILTER_ALPHANUMERIC) && !isalnum(keyCode) ) - { - wxBell(); - return; - } - if ( (m_validatorStyle & wxFILTER_NUMERIC) && !isdigit(keyCode) && keyCode != '.' && keyCode != '-') - { - wxBell(); - return; - } - - textCtrl->wxTextCtrl::OnChar(event); -} - -static bool wxIsNumeric(const wxString& val) -{ - int i; - for ( i = 0; i < (int)val.Length(); i++) - { - if ((!isdigit(val[i])) && (val[i] != '.')) - if(!((i == 0) && (val[i] == '-'))) - return FALSE; - } - return TRUE; -} - diff --git a/src/common/variant.cpp b/src/common/variant.cpp deleted file mode 100644 index 2612f8db24..0000000000 --- a/src/common/variant.cpp +++ /dev/null @@ -1,1785 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: variant.cpp -// Purpose: wxVariant class, container for any type -// Author: Julian Smart -// Modified by: -// Created: 10/09/98 -// RCS-ID: $Id$ -// Copyright: (c) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "variant.h" -#endif - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#if wxUSE_IOSTREAMH -# include -#else -# include -# ifdef _MSC_VER - using namespace std; -# endif -#endif - -#include "wx/stream.h" -#include "wx/string.h" -#include "wx/variant.h" - -IMPLEMENT_ABSTRACT_CLASS(wxVariantData, wxObject) - -wxVariant WXDLLEXPORT wxNullVariant; - -/* - * wxVariantDataList - */ - -class WXDLLEXPORT wxVariantDataList: public wxVariantData -{ -DECLARE_DYNAMIC_CLASS(wxVariantDataList) -public: - wxVariantDataList() {} - wxVariantDataList(const wxList& list); - ~wxVariantDataList(); - - wxList& GetValue() const { return (wxList&) m_value; } - void SetValue(const wxList& value) ; - - virtual void Copy(wxVariantData& data); - virtual bool Eq(wxVariantData& data) const; - virtual bool Write(ostream& str) const; - virtual bool Write(wxString& str) const; - virtual bool Read(istream& str); - virtual bool Read(wxString& str); - virtual wxString GetType() const { return "list"; }; - - void Clear(); - -protected: - wxList m_value; -}; - -IMPLEMENT_DYNAMIC_CLASS(wxVariantDataList, wxVariantData) - -wxVariantDataList::wxVariantDataList(const wxList& list) -{ - SetValue(list); -} - -wxVariantDataList::~wxVariantDataList() -{ - Clear(); -} - -void wxVariantDataList::SetValue(const wxList& value) -{ - Clear(); - wxNode* node = value.First(); - while (node) - { - wxVariant* var = (wxVariant*) node->Data(); - m_value.Append(new wxVariant(*var)); - node = node->Next(); - } -} - -void wxVariantDataList::Clear() -{ - wxNode* node = m_value.First(); - while (node) - { - wxVariant* var = (wxVariant*) node->Data(); - delete var; - node = node->Next(); - } - m_value.Clear(); -} - -void wxVariantDataList::Copy(wxVariantData& data) -{ - wxASSERT_MSG( (data.GetType() == "list"), "wxVariantDataList::Copy: Can't copy to this type of data" ); - - wxVariantDataList& listData = (wxVariantDataList&) data; - - listData.Clear(); - wxNode* node = m_value.First(); - while (node) - { - wxVariant* var = (wxVariant*) node->Data(); - listData.m_value.Append(new wxVariant(*var)); - node = node->Next(); - } -} - -bool wxVariantDataList::Eq(wxVariantData& data) const -{ - wxASSERT_MSG( (data.GetType() == "list"), "wxVariantDataList::Eq: argument mismatch" ); - - wxVariantDataList& listData = (wxVariantDataList&) data; - wxNode* node1 = m_value.First(); - wxNode* node2 = listData.GetValue().First(); - while (node1 && node2) - { - wxVariant* var1 = (wxVariant*) node1->Data(); - wxVariant* var2 = (wxVariant*) node2->Data(); - if ((*var1) != (*var2)) - return FALSE; - node1 = node1->Next(); - node2 = node2->Next(); - } - if (node1 || node2) return FALSE; - return TRUE; -} - -bool wxVariantDataList::Write(ostream& str) const -{ - wxString s; - Write(s); - str << (const char*) s; - return TRUE; -} - -bool wxVariantDataList::Write(wxString& str) const -{ - str = ""; - wxNode* node = m_value.First(); - while (node) - { - wxVariant* var = (wxVariant*) node->Data(); - if (node != m_value.First()) - str += " "; - wxString str1; - str += var->MakeString(); - node = node->Next(); - } - - return TRUE; -} - -bool wxVariantDataList::Read(istream& WXUNUSED(str)) -{ - wxFAIL_MSG("Unimplemented"); - // TODO - return FALSE; -} - -bool wxVariantDataList::Read(wxString& WXUNUSED(str)) -{ - wxFAIL_MSG("Unimplemented"); - // TODO - return FALSE; -} - -/* - * wxVariantDataStringList - */ - -class WXDLLEXPORT wxVariantDataStringList: public wxVariantData -{ -DECLARE_DYNAMIC_CLASS(wxVariantDataStringList) -public: - wxVariantDataStringList() {} - wxVariantDataStringList(const wxStringList& list) { m_value = list; } - - wxStringList& GetValue() const { return (wxStringList&) m_value; } - void SetValue(const wxStringList& value); - - virtual void Copy(wxVariantData& data); - virtual bool Eq(wxVariantData& data) const; - virtual bool Write(ostream& str) const; - virtual bool Write(wxString& str) const; - virtual bool Read(istream& str); - virtual bool Read(wxString& str); - virtual wxString GetType() const { return "stringlist"; }; - -protected: - wxStringList m_value; -}; - -IMPLEMENT_DYNAMIC_CLASS(wxVariantDataStringList, wxVariantData) - -void wxVariantDataStringList::SetValue(const wxStringList& value) -{ - m_value = value; -} - -void wxVariantDataStringList::Copy(wxVariantData& data) -{ - wxASSERT_MSG( (data.GetType() == "stringlist"), "wxVariantDataStringList::Copy: Can't copy to this type of data" ); - - wxVariantDataStringList& listData = (wxVariantDataStringList&) data; - - listData.m_value = m_value ; -} - -bool wxVariantDataStringList::Eq(wxVariantData& data) const -{ - wxASSERT_MSG( (data.GetType() == "stringlist"), "wxVariantDataStringList::Eq: argument mismatch" ); - - wxVariantDataStringList& listData = (wxVariantDataStringList&) data; - wxNode* node1 = m_value.First(); - wxNode* node2 = listData.GetValue().First(); - while (node1 && node2) - { - wxString str1 ((char*) node1->Data()); - wxString str2 ((char*) node2->Data()); - if (str1 != str2) - return FALSE; - node1 = node1->Next(); - node2 = node2->Next(); - } - if (node1 || node2) return FALSE; - return TRUE; -} - -bool wxVariantDataStringList::Write(ostream& str) const -{ - wxString s; - Write(s); - str << (const char*) s; - return TRUE; -} - -bool wxVariantDataStringList::Write(wxString& str) const -{ - str = ""; - wxNode* node = m_value.First(); - while (node) - { - char* s = (char*) node->Data(); - if (node != m_value.First()) - str += " "; - str += s; - node = node->Next(); - } - - return TRUE; -} - -bool wxVariantDataStringList::Read(istream& WXUNUSED(str)) -{ - wxFAIL_MSG("Unimplemented"); - // TODO - return FALSE; -} - -bool wxVariantDataStringList::Read(wxString& WXUNUSED(str)) -{ - wxFAIL_MSG("Unimplemented"); - // TODO - return FALSE; -} - -/* - * wxVariantDataLong - */ - -class WXDLLEXPORT wxVariantDataLong: public wxVariantData -{ -DECLARE_DYNAMIC_CLASS(wxVariantDataLong) -public: - wxVariantDataLong() { m_value = 0; } - wxVariantDataLong(long value) { m_value = value; } - - inline long GetValue() const { return m_value; } - inline void SetValue(long value) { m_value = value; } - - virtual void Copy(wxVariantData& data); - virtual bool Eq(wxVariantData& data) const; - - virtual bool Read(wxString& str); - virtual bool Write(wxString& str) const; - virtual bool Read(istream& str); - virtual bool Write(ostream& str) const; - -#if wxUSE_STREAMS - virtual bool Read(wxInputStream& str); - virtual bool Write(wxOutputStream &str) const; -#endif // wxUSE_STREAMS - - virtual wxString GetType() const { return "long"; }; - -protected: - long m_value; -}; - -IMPLEMENT_DYNAMIC_CLASS(wxVariantDataLong, wxVariantData) - -void wxVariantDataLong::Copy(wxVariantData& data) -{ - wxASSERT_MSG( (data.GetType() == "long"), "wxVariantDataLong::Copy: Can't copy to this type of data" ); - - wxVariantDataLong& otherData = (wxVariantDataLong&) data; - - otherData.m_value = m_value; -} - -bool wxVariantDataLong::Eq(wxVariantData& data) const -{ - wxASSERT_MSG( (data.GetType() == "long"), "wxVariantDataLong::Eq: argument mismatch" ); - - wxVariantDataLong& otherData = (wxVariantDataLong&) data; - - return (otherData.m_value == m_value); -} - -bool wxVariantDataLong::Write(ostream& str) const -{ - wxString s; - Write(s); - str << (const char*) s; - return TRUE; -} - -bool wxVariantDataLong::Write(wxString& str) const -{ - str.Printf("%ld", m_value); - return TRUE; -} - -bool wxVariantDataLong::Read(istream& str) -{ - str >> m_value; - return TRUE; -} - -#if wxUSE_STREAMS -bool wxVariantDataLong::Write(wxOutputStream& str) const -{ - str << m_value; - return TRUE; -} - -bool wxVariantDataLong::Read(wxInputStream& str) -{ - str >> m_value; - return TRUE; -} -#endif // wxUSE_STREAMS - -bool wxVariantDataLong::Read(wxString& str) -{ - m_value = atol((const char*) str); - return TRUE; -} - -/* - * wxVariantDataReal - */ - -class WXDLLEXPORT wxVariantDataReal: public wxVariantData -{ -DECLARE_DYNAMIC_CLASS(wxVariantDataReal) -public: - wxVariantDataReal() { m_value = 0.0; } - wxVariantDataReal(double value) { m_value = value; } - - inline double GetValue() const { return m_value; } - inline void SetValue(double value) { m_value = value; } - - virtual void Copy(wxVariantData& data); - virtual bool Eq(wxVariantData& data) const; - virtual bool Read(wxString& str); - virtual bool Write(ostream& str) const; - virtual bool Write(wxString& str) const; - virtual bool Read(istream& str); -#if wxUSE_STREAMS - virtual bool Read(wxInputStream& str); - virtual bool Write(wxOutputStream &str) const; -#endif // wxUSE_STREAMS - virtual wxString GetType() const { return "double"; }; - -protected: - double m_value; -}; - -IMPLEMENT_DYNAMIC_CLASS(wxVariantDataReal, wxVariantData) - -void wxVariantDataReal::Copy(wxVariantData& data) -{ - wxASSERT_MSG( (data.GetType() == "double"), "wxVariantDataReal::Copy: Can't copy to this type of data" ); - - wxVariantDataReal& otherData = (wxVariantDataReal&) data; - - otherData.m_value = m_value; -} - -bool wxVariantDataReal::Eq(wxVariantData& data) const -{ - wxASSERT_MSG( (data.GetType() == "double"), "wxVariantDataReal::Eq: argument mismatch" ); - - wxVariantDataReal& otherData = (wxVariantDataReal&) data; - - return (otherData.m_value == m_value); -} - -bool wxVariantDataReal::Write(ostream& str) const -{ - wxString s; - Write(s); - str << (const char*) s; - return TRUE; -} - -bool wxVariantDataReal::Write(wxString& str) const -{ - str.Printf("%.4f", m_value); - return TRUE; -} - -bool wxVariantDataReal::Read(istream& str) -{ - str >> m_value; - return TRUE; -} - -#if wxUSE_STREAMS -bool wxVariantDataReal::Write(wxOutputStream& str) const -{ - str << m_value; - return TRUE; -} - -bool wxVariantDataReal::Read(wxInputStream& str) -{ - str >> (float&)m_value; - return TRUE; -} -#endif // wxUSE_STREAMS - -bool wxVariantDataReal::Read(wxString& str) -{ - m_value = atof((const char*) str); - return TRUE; -} - -/* - * wxVariantDataBool - */ - -class WXDLLEXPORT wxVariantDataBool: public wxVariantData -{ -DECLARE_DYNAMIC_CLASS(wxVariantDataBool) -public: - wxVariantDataBool() { m_value = 0; } - wxVariantDataBool(bool value) { m_value = value; } - - inline bool GetValue() const { return m_value; } - inline void SetValue(bool value) { m_value = value; } - - virtual void Copy(wxVariantData& data); - virtual bool Eq(wxVariantData& data) const; - virtual bool Write(ostream& str) const; - virtual bool Write(wxString& str) const; - virtual bool Read(wxString& str); - virtual bool Read(istream& str); -#if wxUSE_STREAMS - virtual bool Read(wxInputStream& str); - virtual bool Write(wxOutputStream& str) const; -#endif // wxUSE_STREAMS - virtual wxString GetType() const { return "bool"; }; - -protected: - bool m_value; -}; - -IMPLEMENT_DYNAMIC_CLASS(wxVariantDataBool, wxVariantData) - -void wxVariantDataBool::Copy(wxVariantData& data) -{ - wxASSERT_MSG( (data.GetType() == "bool"), "wxVariantDataBool::Copy: Can't copy to this type of data" ); - - wxVariantDataBool& otherData = (wxVariantDataBool&) data; - - otherData.m_value = m_value; -} - -bool wxVariantDataBool::Eq(wxVariantData& data) const -{ - wxASSERT_MSG( (data.GetType() == "bool"), "wxVariantDataBool::Eq: argument mismatch" ); - - wxVariantDataBool& otherData = (wxVariantDataBool&) data; - - return (otherData.m_value == m_value); -} - -bool wxVariantDataBool::Write(ostream& str) const -{ - wxString s; - Write(s); - str << (const char*) s; - return TRUE; -} - -bool wxVariantDataBool::Write(wxString& str) const -{ - str.Printf("%d", (int) m_value); - return TRUE; -} - -bool wxVariantDataBool::Read(istream& WXUNUSED(str)) -{ - wxFAIL_MSG("Unimplemented"); -// str >> (long) m_value; - return FALSE; -} - -#if wxUSE_STREAMS -bool wxVariantDataBool::Write(wxOutputStream& str) const -{ - str << (char)m_value; - return TRUE; -} - -bool wxVariantDataBool::Read(wxInputStream& str) -{ - str >> (char&)m_value; - return TRUE; -} -#endif // wxUSE_STREAMS - -bool wxVariantDataBool::Read(wxString& str) -{ - m_value = (atol((const char*) str) != 0); - return TRUE; -} - -/* - * wxVariantDataChar - */ - -class WXDLLEXPORT wxVariantDataChar: public wxVariantData -{ -DECLARE_DYNAMIC_CLASS(wxVariantDataChar) -public: - wxVariantDataChar() { m_value = 0; } - wxVariantDataChar(char value) { m_value = value; } - - inline char GetValue() const { return m_value; } - inline void SetValue(char value) { m_value = value; } - - virtual void Copy(wxVariantData& data); - virtual bool Eq(wxVariantData& data) const; - virtual bool Read(istream& str); - virtual bool Write(ostream& str) const; - virtual bool Read(wxString& str); - virtual bool Write(wxString& str) const; -#if wxUSE_STREAMS - virtual bool Read(wxInputStream& str); - virtual bool Write(wxOutputStream& str) const; -#endif // wxUSE_STREAMS - virtual wxString GetType() const { return "char"; }; - -protected: - char m_value; -}; - -IMPLEMENT_DYNAMIC_CLASS(wxVariantDataChar, wxVariantData) - -void wxVariantDataChar::Copy(wxVariantData& data) -{ - wxASSERT_MSG( (data.GetType() == "char"), "wxVariantDataChar::Copy: Can't copy to this type of data" ); - - wxVariantDataChar& otherData = (wxVariantDataChar&) data; - - otherData.m_value = m_value; -} - -bool wxVariantDataChar::Eq(wxVariantData& data) const -{ - wxASSERT_MSG( (data.GetType() == "char"), "wxVariantDataChar::Eq: argument mismatch" ); - - wxVariantDataChar& otherData = (wxVariantDataChar&) data; - - return (otherData.m_value == m_value); -} - -bool wxVariantDataChar::Write(ostream& str) const -{ - wxString s; - Write(s); - str << (const char*) s; - return TRUE; -} - -bool wxVariantDataChar::Write(wxString& str) const -{ - str.Printf("%c", m_value); - return TRUE; -} - -bool wxVariantDataChar::Read(istream& WXUNUSED(str)) -{ - wxFAIL_MSG("Unimplemented"); -// str >> m_value; - return FALSE; -} - -#if wxUSE_STREAMS -bool wxVariantDataChar::Write(wxOutputStream& str) const -{ - str << m_value; - return TRUE; -} - -bool wxVariantDataChar::Read(wxInputStream& str) -{ - str >> m_value; - return TRUE; -} -#endif // wxUSE_STREAMS - -bool wxVariantDataChar::Read(wxString& str) -{ - m_value = str[(size_t)0]; - return TRUE; -} - -/* - * wxVariantDataString - */ - -#if defined(__BORLANDC__) && defined(__WIN16__) -// Change name because of truncation -#define wxVariantDataString wxVariantStringData -#endif - -class WXDLLEXPORT wxVariantDataString: public wxVariantData -{ -#if defined(__BORLANDC__) && defined(__WIN16__) -DECLARE_DYNAMIC_CLASS(wxVariantStringData) -#else -DECLARE_DYNAMIC_CLASS(wxVariantDataString) -#endif -public: - wxVariantDataString() { } - wxVariantDataString(const wxString& value) { m_value = value; } - - inline wxString GetValue() const { return m_value; } - inline void SetValue(const wxString& value) { m_value = value; } - - virtual void Copy(wxVariantData& data); - virtual bool Eq(wxVariantData& data) const; - virtual bool Write(ostream& str) const; - virtual bool Read(wxString& str); - virtual bool Write(wxString& str) const; - virtual bool Read(istream& str); -#if wxUSE_STREAMS - virtual bool Read(wxInputStream& str); - virtual bool Write(wxOutputStream& str) const; -#endif // wxUSE_STREAMS - virtual wxString GetType() const { return "string"; }; - -protected: - wxString m_value; -}; - -void wxVariantDataString::Copy(wxVariantData& data) -{ - wxASSERT_MSG( (data.GetType() == "string"), "wxVariantDataString::Copy: Can't copy to this type of data" ); - - wxVariantDataString& otherData = (wxVariantDataString&) data; - - otherData.m_value = m_value; -} - -bool wxVariantDataString::Eq(wxVariantData& data) const -{ - wxASSERT_MSG( (data.GetType() == "string"), "wxVariantDataString::Eq: argument mismatch" ); - - wxVariantDataString& otherData = (wxVariantDataString&) data; - - return (otherData.m_value == m_value); -} - -bool wxVariantDataString::Write(ostream& str) const -{ - str << (const char*) m_value; - return TRUE; -} - -bool wxVariantDataString::Write(wxString& str) const -{ - str = m_value; - return TRUE; -} - -bool wxVariantDataString::Read(istream& str) -{ - str >> m_value; - return TRUE; -} - -#if wxUSE_STREAMS -bool wxVariantDataString::Write(wxOutputStream& str) const -{ - str << (const char*) m_value; - return TRUE; -} - -bool wxVariantDataString::Read(wxInputStream& str) -{ - str >> m_value; - return TRUE; -} -#endif // wxUSE_STREAMS - -bool wxVariantDataString::Read(wxString& str) -{ - m_value = str; - return TRUE; -} - -#if defined(__BORLANDC__) && defined(__WIN16__) -IMPLEMENT_DYNAMIC_CLASS(wxVariantStringData, wxVariantData) -#else -IMPLEMENT_DYNAMIC_CLASS(wxVariantDataString, wxVariantData) -#endif - -/* - * wxVariantDataTime - */ - -#if wxUSE_TIMEDATE - -class wxVariantDataTime: public wxVariantData -{ - DECLARE_DYNAMIC_CLASS(wxVariantDataTime) -public: - wxVariantDataTime() { } - wxVariantDataTime(const wxTime& value) { m_value = value; } - - inline wxTime GetValue() const { return m_value; } - inline void SetValue(const wxTime& value) { m_value = value; } - - virtual void Copy(wxVariantData& data); - virtual bool Eq(wxVariantData& data) const; - virtual bool Write(ostream& str) const; - virtual bool Write(wxString& str) const; - virtual bool Read(istream& str); - virtual bool Read(wxString& str); - virtual wxString GetType() const { return "time"; }; - virtual wxVariantData* Clone() { return new wxVariantDataTime; } - -protected: - wxTime m_value; -}; - -IMPLEMENT_DYNAMIC_CLASS(wxVariantDataTime, wxVariantData) - -void wxVariantDataTime::Copy(wxVariantData& data) -{ - wxASSERT_MSG( (data.GetType() == "time"), "wxVariantDataTime::Copy: Can't copy to this type of data" ); - - wxVariantDataTime& otherData = (wxVariantDataTime&) data; - - otherData.m_value = m_value; -} - -bool wxVariantDataTime::Eq(wxVariantData& data) const -{ - wxASSERT_MSG( (data.GetType() == "time"), "wxVariantDataTime::Eq: argument mismatch" ); - - wxVariantDataTime& otherData = (wxVariantDataTime&) data; - - return (otherData.m_value == m_value); -} - -bool wxVariantDataTime::Write(ostream& str) const -{ - wxString s; - Write(s); - str << (const char*) s; - return TRUE; -} - -bool wxVariantDataTime::Write(wxString& str) const -{ - char*s = m_value.FormatTime(); - str = s; - return TRUE; -} - -bool wxVariantDataTime::Read(istream& WXUNUSED(str)) -{ - // Not implemented - return FALSE; -} - -bool wxVariantDataTime::Read(wxString& WXUNUSED(str)) -{ - // Not implemented - return FALSE; -} - -/* - * wxVariantDataDate - */ - -class wxVariantDataDate: public wxVariantData -{ - DECLARE_DYNAMIC_CLASS(wxVariantDataDate) -public: - wxVariantDataDate() { } - wxVariantDataDate(const wxDate& value) { m_value = value; } - - inline wxDate GetValue() const { return m_value; } - inline void SetValue(const wxDate& value) { m_value = value; } - - virtual void Copy(wxVariantData& data); - virtual bool Eq(wxVariantData& data) const; - virtual bool Write(ostream& str) const; - virtual bool Write(wxString& str) const; - virtual bool Read(istream& str); - virtual bool Read(wxString& str); - virtual wxString GetType() const { return "date"; }; - virtual wxVariantData* Clone() { return new wxVariantDataDate; } - -protected: - wxDate m_value; -}; - -IMPLEMENT_DYNAMIC_CLASS(wxVariantDataDate, wxVariantData) - -void wxVariantDataDate::Copy(wxVariantData& data) -{ - wxASSERT_MSG( (data.GetType() == "date"), "wxVariantDataDate::Copy: Can't copy to this type of data" ); - - wxVariantDataDate& otherData = (wxVariantDataDate&) data; - - otherData.m_value = m_value; -} - -bool wxVariantDataDate::Eq(wxVariantData& data) const -{ - wxASSERT_MSG( (data.GetType() == "date"), "wxVariantDataDate::Eq: argument mismatch" ); - - wxVariantDataDate& otherData = (wxVariantDataDate&) data; - - return (otherData.m_value == m_value); -} - -bool wxVariantDataDate::Write(ostream& str) const -{ - wxString s; - Write(s); - str << (const char*) s; - return TRUE; -} - -bool wxVariantDataDate::Write(wxString& str) const -{ - str = m_value.FormatDate(); - return TRUE; -} - -bool wxVariantDataDate::Read(istream& WXUNUSED(str)) -{ - // Not implemented - return FALSE; -} - -bool wxVariantDataDate::Read(wxString& WXUNUSED(str)) -{ - // Not implemented - return FALSE; -} -#endif - // wxUSE_TIMEDATE - -/* - * wxVariantDataVoidPtr - */ - -class wxVariantDataVoidPtr: public wxVariantData -{ -DECLARE_DYNAMIC_CLASS(wxVariantDataVoidPtr) -public: - wxVariantDataVoidPtr() { } - wxVariantDataVoidPtr(void* value) { m_value = value; } - - inline void* GetValue() const { return m_value; } - inline void SetValue(void* value) { m_value = value; } - - virtual void Copy(wxVariantData& data); - virtual bool Eq(wxVariantData& data) const; - virtual bool Write(ostream& str) const; - virtual bool Write(wxString& str) const; - virtual bool Read(istream& str); - virtual bool Read(wxString& str); - virtual wxString GetType() const { return "void*"; }; - virtual wxVariantData* Clone() { return new wxVariantDataVoidPtr; } - -protected: - void* m_value; -}; - -IMPLEMENT_DYNAMIC_CLASS(wxVariantDataVoidPtr, wxVariantData) - -void wxVariantDataVoidPtr::Copy(wxVariantData& data) -{ - wxASSERT_MSG( (data.GetType() == "void*"), "wxVariantDataVoidPtr::Copy: Can't copy to this type of data" ); - - wxVariantDataVoidPtr& otherData = (wxVariantDataVoidPtr&) data; - - otherData.m_value = m_value; -} - -bool wxVariantDataVoidPtr::Eq(wxVariantData& data) const -{ - wxASSERT_MSG( (data.GetType() == "void*"), "wxVariantDataVoidPtr::Eq: argument mismatch" ); - - wxVariantDataVoidPtr& otherData = (wxVariantDataVoidPtr&) data; - - return (otherData.m_value == m_value); -} - -bool wxVariantDataVoidPtr::Write(ostream& str) const -{ - wxString s; - Write(s); - str << (const char*) s; - return TRUE; -} - -bool wxVariantDataVoidPtr::Write(wxString& str) const -{ - char buf[80]; - sprintf(buf, "%ld", (long) m_value); - str = buf; - return TRUE; -} - -bool wxVariantDataVoidPtr::Read(istream& WXUNUSED(str)) -{ - // Not implemented - return FALSE; -} - -bool wxVariantDataVoidPtr::Read(wxString& WXUNUSED(str)) -{ - // Not implemented - return FALSE; -} - - -/* - * wxVariant - */ - -IMPLEMENT_DYNAMIC_CLASS(wxVariant, wxObject) - -// Construction & destruction -wxVariant::wxVariant() -{ - m_data = (wxVariantData*) NULL; -} - -wxVariant::wxVariant(double val, const wxString& name) -{ - m_data = new wxVariantDataReal(val); - m_name = name; -} - -wxVariant::wxVariant(long val, const wxString& name) -{ - m_data = new wxVariantDataLong(val); - m_name = name; -} - -wxVariant::wxVariant(bool val, const wxString& name) -{ - m_data = new wxVariantDataBool(val); - m_name = name; -} - -wxVariant::wxVariant(char val, const wxString& name) -{ - m_data = new wxVariantDataChar(val); - m_name = name; -} - -wxVariant::wxVariant(const wxString& val, const wxString& name) -{ - m_data = new wxVariantDataString(val); - m_name = name; -} - -wxVariant::wxVariant(const char* val, const wxString& name) -{ - m_data = new wxVariantDataString(wxString(val)); - m_name = name; -} - -wxVariant::wxVariant(const wxStringList& val, const wxString& name) -{ - m_data = new wxVariantDataStringList(val); - m_name = name; -} - -wxVariant::wxVariant(const wxList& val, const wxString& name) // List of variants -{ - m_data = new wxVariantDataList(val); - m_name = name; -} - -#if wxUSE_TIMEDATE -wxVariant::wxVariant(const wxTime& val, const wxString& name) // Time -{ - m_data = new wxVariantDataTime(val); - m_name = name; -} - -wxVariant::wxVariant(const wxDate& val, const wxString& name) // Date -{ - m_data = new wxVariantDataDate(val); - m_name = name; -} -#endif - -wxVariant::wxVariant(void* val, const wxString& name) // Void ptr -{ - m_data = new wxVariantDataVoidPtr(val); - m_name = name; -} - -wxVariant::wxVariant(const wxVariant& variant) -{ - if (!variant.IsNull()) - { - m_data = (wxVariantData*) variant.GetData()->GetClassInfo()->CreateObject(); - variant.m_data->Copy(*m_data); - } - else - m_data = (wxVariantData*) NULL; - m_name = variant.m_name; -} - -wxVariant::wxVariant(wxVariantData* data, const wxString& name) // User-defined data -{ - m_data = data; - m_name = name; -} - -wxVariant::~wxVariant() -{ - delete m_data; -} - - -// Make NULL (i.e. delete the data) -void wxVariant::MakeNull() -{ - delete m_data; - m_data = NULL; -} - -// Generic operators -// Assignment -void wxVariant::operator= (const wxVariant& variant) -{ - if (variant.IsNull()) - { - MakeNull(); - return; - } - - if (IsNull() || (GetType() != variant.GetType())) - { - if (m_data) - delete m_data; - m_data = (wxVariantData*) variant.GetData()->GetClassInfo()->CreateObject(); - } -// GetData()->Copy(* variant.GetData()); - variant.GetData()->Copy(* GetData()); -} - -// Assignment using data, e.g. -// myVariant = new wxStringVariantData("hello") -void wxVariant::operator= (wxVariantData* variantData) -{ - MakeNull(); - m_data = variantData; -} - -bool wxVariant::operator== (const wxVariant& variant) const -{ - if (IsNull() || variant.IsNull()) - return (IsNull() == variant.IsNull()); - - return (GetData()->Eq(* variant.GetData())); -} - -bool wxVariant::operator!= (const wxVariant& variant) const -{ - return (!(*this == variant)); -} - - -// Specific operators -bool wxVariant::operator== (double value) const -{ - double thisValue; - if (!Convert(&thisValue)) - return FALSE; - else - return (value == thisValue); -} - -bool wxVariant::operator!= (double value) const -{ - return (!((*this) == value)); -} - -void wxVariant::operator= (double value) -{ - if (GetType() == "double") - { - ((wxVariantDataReal*)GetData())->SetValue(value); - } - else - { - if (m_data) - delete m_data; - m_data = new wxVariantDataReal(value); - } -} - -bool wxVariant::operator== (long value) const -{ - long thisValue; - if (!Convert(&thisValue)) - return FALSE; - else - return (value == thisValue); -} - -bool wxVariant::operator!= (long value) const -{ - return (!((*this) == value)); -} - -void wxVariant::operator= (long value) -{ - if (GetType() == "long") - { - ((wxVariantDataLong*)GetData())->SetValue(value); - } - else - { - if (m_data) - delete m_data; - m_data = new wxVariantDataLong(value); - } -} - -bool wxVariant::operator== (char value) const -{ - char thisValue; - if (!Convert(&thisValue)) - return FALSE; - else - return (value == thisValue); -} - -bool wxVariant::operator!= (char value) const -{ - return (!((*this) == value)); -} - -void wxVariant::operator= (char value) -{ - if (GetType() == "char") - { - ((wxVariantDataChar*)GetData())->SetValue(value); - } - else - { - if (m_data) - delete m_data; - m_data = new wxVariantDataChar(value); - } -} - -bool wxVariant::operator== (bool value) const -{ - bool thisValue; - if (!Convert(&thisValue)) - return FALSE; - else - return (value == thisValue); -} - -bool wxVariant::operator!= (bool value) const -{ - return (!((*this) == value)); -} - -void wxVariant::operator= (bool value) -{ - if (GetType() == "bool") - { - ((wxVariantDataBool*)GetData())->SetValue(value); - } - else - { - if (m_data) - delete m_data; - m_data = new wxVariantDataBool(value); - } -} - -bool wxVariant::operator== (const wxString& value) const -{ - wxString thisValue; - if (!Convert(&thisValue)) - return FALSE; - else - return (value == thisValue); -} - -bool wxVariant::operator!= (const wxString& value) const -{ - return (!((*this) == value)); -} - -void wxVariant::operator= (const wxString& value) -{ - if (GetType() == "string") - { - ((wxVariantDataString*)GetData())->SetValue(value); - } - else - { - if (m_data) - delete m_data; - m_data = new wxVariantDataString(value); - } -} - -void wxVariant::operator= (const char* value) -{ - if (GetType() == "string") - { - ((wxVariantDataString*)GetData())->SetValue(wxString(value)); - } - else - { - if (m_data) - delete m_data; - m_data = new wxVariantDataString(wxString(value)); - } -} - -bool wxVariant::operator== (const wxStringList& value) const -{ - wxASSERT_MSG( (GetType() == "stringlist"), "Invalid type for == operator" ); - - wxVariantDataStringList other(value); - return (m_data->Eq(other)); -} - -bool wxVariant::operator!= (const wxStringList& value) const -{ - return (!((*this) == value)); -} - -void wxVariant::operator= (const wxStringList& value) -{ - if (GetType() == "stringlist") - { - ((wxVariantDataStringList*)GetData())->SetValue(value); - } - else - { - if (m_data) - delete m_data; - m_data = new wxVariantDataStringList(value); - } -} - -bool wxVariant::operator== (const wxList& value) const -{ - wxASSERT_MSG( (GetType() == "list"), "Invalid type for == operator" ); - - wxVariantDataList other(value); - return (m_data->Eq(other)); -} - -bool wxVariant::operator!= (const wxList& value) const -{ - return (!((*this) == value)); -} - -void wxVariant::operator= (const wxList& value) -{ - if (GetType() == "list") - { - ((wxVariantDataList*)GetData())->SetValue(value); - } - else - { - if (m_data) - delete m_data; - m_data = new wxVariantDataList(value); - } -} - -#if wxUSE_TIMEDATE -bool wxVariant::operator== (const wxTime& value) const -{ - wxTime thisValue; - if (!Convert(&thisValue)) - return FALSE; - else - return (value == thisValue); -} - -bool wxVariant::operator!= (const wxTime& value) const -{ - return (!((*this) == value)); -} - -void wxVariant::operator= (const wxTime& value) -{ - if (GetType() == "time") - { - ((wxVariantDataTime*)GetData())->SetValue(value); - } - else - { - if (m_data) - delete m_data; - m_data = new wxVariantDataTime(value); - } -} - -bool wxVariant::operator== (const wxDate& value) const -{ - wxDate thisValue; - if (!Convert(&thisValue)) - return FALSE; - else - return (value == thisValue); -} - -bool wxVariant::operator!= (const wxDate& value) const -{ - return (!((*this) == value)); -} - -void wxVariant::operator= (const wxDate& value) -{ - if (GetType() == "date") - { - ((wxVariantDataTime*)GetData())->SetValue(value); - } - else - { - if (m_data) - delete m_data; - m_data = new wxVariantDataDate(value); - } -} -#endif - -bool wxVariant::operator== (void* value) const -{ - return (value == ((wxVariantDataVoidPtr*)GetData())->GetValue()); -} - -bool wxVariant::operator!= (void* value) const -{ - return (!((*this) == value)); -} - -void wxVariant::operator= (void* value) -{ - if (GetType() == "void*") - { - ((wxVariantDataVoidPtr*)GetData())->SetValue(value); - } - else - { - if (m_data) - delete m_data; - m_data = new wxVariantDataVoidPtr(value); - } -} - -// Treat a list variant as an array -wxVariant wxVariant::operator[] (size_t idx) const -{ - wxASSERT_MSG( (GetType() == "list" || GetType() == "stringlist"), "Invalid type for array operator" ); - - if (GetType() == "list") - { - wxVariantDataList* data = (wxVariantDataList*) m_data; - wxASSERT_MSG( (idx < (size_t) data->GetValue().Number()), "Invalid index for array" ); - return * (wxVariant*) (data->GetValue().Nth(idx)->Data()); - } - else if (GetType() == "stringlist") - { - wxVariantDataStringList* data = (wxVariantDataStringList*) m_data; - wxASSERT_MSG( (idx < (size_t) data->GetValue().Number()), "Invalid index for array" ); - - wxVariant variant( wxString( (char*) (data->GetValue().Nth(idx)->Data()) )); - return variant; - } - return wxNullVariant; -} - -wxVariant& wxVariant::operator[] (size_t idx) -{ - // We can't return a reference to a variant for a string list, since the string - // is actually stored as a char*, not a variant. - - wxASSERT_MSG( (GetType() == "list"), "Invalid type for array operator" ); - - wxVariantDataList* data = (wxVariantDataList*) m_data; - wxASSERT_MSG( (idx < (size_t) data->GetValue().Number()), "Invalid index for array" ); - - return * (wxVariant*) (data->GetValue().Nth(idx)->Data()); -} - -// Return the number of elements in a list -int wxVariant::GetCount() const -{ - wxASSERT_MSG( (GetType() == "list" || GetType() == "stringlist"), "Invalid type for GetCount()" ); - - if (GetType() == "list") - { - wxVariantDataList* data = (wxVariantDataList*) m_data; - return data->GetValue().Number(); - } - else if (GetType() == "stringlist") - { - wxVariantDataStringList* data = (wxVariantDataStringList*) m_data; - return data->GetValue().Number(); - } - return 0; -} - -wxString wxVariant::MakeString() const -{ - if (!IsNull()) - { - wxString str; - if (GetData()->Write(str)) - return str; - } - return wxString(""); -} - -// Accessors - -void wxVariant::SetData(wxVariantData* data) -{ - if (m_data) delete m_data; - m_data = data; -} - - -// Returns a string representing the type of the variant, -// e.g. "string", "bool", "stringlist", "list", "double", "long" -wxString wxVariant::GetType() const -{ - if (IsNull()) - return wxString("null"); - else - return m_data->GetType(); -} - - -bool wxVariant::IsType(const wxString& type) const -{ - return (GetType() == type); -} - - -// Value accessors -double wxVariant::GetReal() const -{ - double value; - if (Convert(& value)) - return value; - else - { - wxFAIL_MSG("Could not convert to a real number"); - return 0.0; - } -} - -long wxVariant::GetInteger() const -{ - long value; - if (Convert(& value)) - return value; - else - { - wxFAIL_MSG("Could not convert to an integer"); - return 0; - } -} - -char wxVariant::GetChar() const -{ - char value; - if (Convert(& value)) - return value; - else - { - wxFAIL_MSG("Could not convert to a char"); - return 0; - } -} - -bool wxVariant::GetBool() const -{ - bool value; - if (Convert(& value)) - return value; - else - { - wxFAIL_MSG("Could not convert to a bool"); - return 0; - } -} - -wxString wxVariant::GetString() const -{ - wxString value; - if (Convert(& value)) - return value; - else - { - wxFAIL_MSG("Could not convert to a string"); - return wxString(""); - } -} - -#if wxUSE_TIMEDATE -wxTime wxVariant::GetTime() const -{ - wxTime value; - if (Convert(& value)) - return value; - else - { - wxFAIL_MSG("Could not convert to a time"); - return wxTime(); - } -} - -wxDate wxVariant::GetDate() const -{ - wxDate value; - if (Convert(& value)) - return value; - else - { - wxFAIL_MSG("Could not convert to a date"); - return wxDate(); - } -} -#endif - -void* wxVariant::GetVoidPtr() const -{ - wxASSERT( (GetType() == "void*") ); - - return (void*) ((wxVariantDataVoidPtr*) m_data)->GetValue(); -} - -wxList& wxVariant::GetList() const -{ - wxASSERT( (GetType() == "list") ); - - return (wxList&) ((wxVariantDataList*) m_data)->GetValue(); -} - -wxStringList& wxVariant::GetStringList() const -{ - wxASSERT( (GetType() == "stringlist") ); - - return (wxStringList&) ((wxVariantDataStringList*) m_data)->GetValue(); -} - -// Append to list -void wxVariant::Append(const wxVariant& value) -{ - wxList& list = GetList(); - - list.Append(new wxVariant(value)); -} - -// Insert at front of list -void wxVariant::Insert(const wxVariant& value) -{ - wxList& list = GetList(); - - list.Insert(new wxVariant(value)); -} - -// Returns TRUE if the variant is a member of the list -bool wxVariant::Member(const wxVariant& value) const -{ - wxList& list = GetList(); - - wxNode* node = list.First(); - while (node) - { - wxVariant* other = (wxVariant*) node->Data(); - if (value == *other) - return TRUE; - node = node->Next(); - } - return FALSE; -} - -// Deletes the nth element of the list -bool wxVariant::Delete(int item) -{ - wxList& list = GetList(); - - wxASSERT_MSG( (item < list.Number()), "Invalid index to Delete" ); - wxNode* node = list.Nth(item); - wxVariant* variant = (wxVariant*) node->Data(); - delete variant; - delete node; - return TRUE; -} - -// Clear list -void wxVariant::ClearList() -{ - if (!IsNull() && (GetType() == "list")) - { - ((wxVariantDataList*) m_data)->Clear(); - } - else - { - if (GetType() != "list") - { - delete m_data; - m_data = NULL; - } - m_data = new wxVariantDataList; - } -} - -// Type conversion -bool wxVariant::Convert(long* value) const -{ - wxString type(GetType()); - if (type == "double") - *value = (long) (((wxVariantDataReal*)GetData())->GetValue()); - else if (type == "long") - *value = ((wxVariantDataLong*)GetData())->GetValue(); - else if (type == "bool") - *value = (long) (((wxVariantDataBool*)GetData())->GetValue()); - else if (type == "string") - *value = atol((const char*) ((wxVariantDataString*)GetData())->GetValue()); - else - return FALSE; - - return TRUE; -} - -bool wxVariant::Convert(bool* value) const -{ - wxString type(GetType()); - if (type == "double") - *value = ((int) (((wxVariantDataReal*)GetData())->GetValue()) != 0); - else if (type == "long") - *value = (((wxVariantDataLong*)GetData())->GetValue() != 0); - else if (type == "bool") - *value = ((wxVariantDataBool*)GetData())->GetValue(); - else if (type == "string") - { - wxString val(((wxVariantDataString*)GetData())->GetValue()); - val.MakeLower(); - if (val == "true" || val == "yes") - *value = TRUE; - else if (val == "false" || val == "no") - *value = FALSE; - else - return FALSE; - } - else - return FALSE; - - return TRUE; -} - -bool wxVariant::Convert(double* value) const -{ - wxString type(GetType()); - if (type == "double") - *value = ((wxVariantDataReal*)GetData())->GetValue(); - else if (type == "long") - *value = (double) (((wxVariantDataLong*)GetData())->GetValue()); - else if (type == "bool") - *value = (double) (((wxVariantDataBool*)GetData())->GetValue()); - else if (type == "string") - *value = (double) atof((const char*) ((wxVariantDataString*)GetData())->GetValue()); - else - return FALSE; - - return TRUE; -} - -bool wxVariant::Convert(char* value) const -{ - wxString type(GetType()); - if (type == "char") - *value = ((wxVariantDataChar*)GetData())->GetValue(); - else if (type == "long") - *value = (char) (((wxVariantDataLong*)GetData())->GetValue()); - else if (type == "bool") - *value = (char) (((wxVariantDataBool*)GetData())->GetValue()); - else - return FALSE; - - return TRUE; -} - -bool wxVariant::Convert(wxString* value) const -{ - *value = MakeString(); - return TRUE; -} - -#if wxUSE_TIMEDATE -bool wxVariant::Convert(wxTime* value) const -{ - wxString type(GetType()); - if (type == "time") - *value = ((wxVariantDataTime*)GetData())->GetValue(); - else if (type == "date") - *value = wxTime(((wxVariantDataDate*)GetData())->GetValue()); - else - return FALSE; - - return TRUE; -} - -bool wxVariant::Convert(wxDate* value) const -{ - wxString type(GetType()); - if (type == "date") - *value = ((wxVariantDataDate*)GetData())->GetValue(); - else - return FALSE; - - return TRUE; -} -#endif - // wxUSE_TIMEDATE diff --git a/src/common/wfstream.cpp b/src/common/wfstream.cpp deleted file mode 100644 index 4d798f3c79..0000000000 --- a/src/common/wfstream.cpp +++ /dev/null @@ -1,144 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: fstream.cpp -// Purpose: "File stream" classes -// Author: Julian Smart -// Modified by: -// Created: 11/07/98 -// RCS-ID: $Id$ -// Copyright: (c) Guilhem Lavaux -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "wfstream.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" -#include -#include -#include - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -// ---------------------------------------------------------------------------- -// wxFileInputStream -// ---------------------------------------------------------------------------- - -wxFileInputStream::wxFileInputStream(const wxString& fileName) - : wxInputStream() -{ - m_file = new wxFile(fileName, wxFile::read); - m_file_destroy = TRUE; - m_i_streambuf->SetBufferIO(1024); -} - -wxFileInputStream::wxFileInputStream() - : wxInputStream() -{ - m_file_destroy = FALSE; - m_file = NULL; -} - -wxFileInputStream::~wxFileInputStream() -{ - if (m_file_destroy) - delete m_file; -} - -char wxFileInputStream::Peek() -{ - return 0; -} - -size_t wxFileInputStream::StreamSize() const -{ - return m_file->Length(); -} - -size_t wxFileInputStream::OnSysRead(void *buffer, size_t size) -{ - return m_file->Read(buffer, size); -} - -off_t wxFileInputStream::OnSysSeek(off_t pos, wxSeekMode mode) -{ - return m_file->Seek(pos, mode); -} - -off_t wxFileInputStream::OnSysTell() const -{ - return m_file->Tell(); -} - -// ---------------------------------------------------------------------------- -// wxFileOutputStream -// ---------------------------------------------------------------------------- - -wxFileOutputStream::wxFileOutputStream(const wxString& fileName) -{ - m_file = new wxFile(fileName, wxFile::write); - m_file_destroy = TRUE; - m_o_streambuf->SetBufferIO(1024); -} - -wxFileOutputStream::wxFileOutputStream(wxFile& file) -{ - m_file = &file; - m_file_destroy = FALSE; - m_o_streambuf->SetBufferIO(1024); -} - -wxFileOutputStream::wxFileOutputStream() - : wxOutputStream() -{ - m_o_streambuf->SetBufferIO(1024); - m_file_destroy = FALSE; - m_file = NULL; -} - -wxFileOutputStream::~wxFileOutputStream() -{ - if (m_file_destroy) { - Sync(); - delete m_file; - } -} - -size_t wxFileOutputStream::OnSysWrite(const void *buffer, size_t size) -{ - size_t ret = m_file->Write(buffer, size); - m_lasterror = wxStream_EOF; // TODO - return ret; -} - -off_t wxFileOutputStream::OnSysTell() const -{ - return m_file->Tell(); -} - -off_t wxFileOutputStream::OnSysSeek(off_t pos, wxSeekMode mode) -{ - return m_file->Seek(pos, mode); -} - -void wxFileOutputStream::Sync() -{ - wxOutputStream::Sync(); - m_file->Flush(); -} - -size_t wxFileOutputStream::StreamSize() const -{ - return m_file->Length(); -} - -// ---------------------------------------------------------------------------- -// wxFileStream -// ---------------------------------------------------------------------------- -wxFileStream::wxFileStream(const wxString& fileName) - : wxFileInputStream(fileName), wxFileOutputStream(*wxFileInputStream::m_file) -{ -} diff --git a/src/common/wincmn.cpp b/src/common/wincmn.cpp deleted file mode 100644 index 4aebe4007e..0000000000 --- a/src/common/wincmn.cpp +++ /dev/null @@ -1,90 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: windows.cpp -// Purpose: common (to all ports) wxWindow functions -// Author: Julian Smart, Vadim Zeitlin -// Modified by: -// Created: 13/07/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#include "wx/frame.h" -#include "wx/defs.h" -#include "wx/window.h" - -// Do Update UI processing for child controls - -// TODO: should this be implemented for the child window rather -// than the parent? Then you can override it e.g. for wxCheckBox -// to do the Right Thing rather than having to assume a fixed number -// of control classes. -#include "wx/checkbox.h" -#include "wx/radiobut.h" - -void wxWindow::UpdateWindowUI() -{ - wxWindowID id = GetId(); - if (id > 0) - { - wxUpdateUIEvent event(id); - event.m_eventObject = this; - - if (this->GetEventHandler()->ProcessEvent(event)) - { - if (event.GetSetEnabled()) - this->Enable(event.GetEnabled()); - - if (event.GetSetText() && this->IsKindOf(CLASSINFO(wxControl))) - ((wxControl*)this)->SetLabel(event.GetText()); - - if (this->IsKindOf(CLASSINFO(wxCheckBox))) - { - if (event.GetSetChecked()) - ((wxCheckBox *) this)->SetValue(event.GetChecked()); - } - // @@@ No radio buttons in wxGTK yet -#ifndef __WXGTK__ - else if (this->IsKindOf(CLASSINFO(wxRadioButton))) - { - if (event.GetSetChecked()) - ((wxRadioButton *) this)->SetValue(event.GetChecked()); - } -#endif - } - } -} - -// Dialog units translations. Implemented in wincmn.cpp. -wxPoint wxWindow::ConvertPixelsToDialog(const wxPoint& pt) -{ - int charWidth = GetCharWidth(); - int charHeight = GetCharHeight(); - wxPoint pt2; - pt2.x = (int) ((pt.x * 4) / charWidth) ; - pt2.y = (int) ((pt.y * 8) / charHeight) ; - - return pt2; -} - -wxPoint wxWindow::ConvertDialogToPixels(const wxPoint& pt) -{ - int charWidth = GetCharWidth(); - int charHeight = GetCharHeight(); - wxPoint pt2; - pt2.x = (int) ((pt.x * charWidth) / 4) ; - pt2.y = (int) ((pt.y * charHeight) / 8) ; - - return pt2; -} - diff --git a/src/common/wxexpr.cpp b/src/common/wxexpr.cpp deleted file mode 100644 index 5a3ace2c14..0000000000 --- a/src/common/wxexpr.cpp +++ /dev/null @@ -1,1266 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: wxexpr.cpp -// Purpose: wxExpr -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "wxexpr.h" -#endif - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#if wxUSE_IOSTREAMH -#include -#else -#include -# ifdef _MSC_VER - using namespace std; -# endif -#endif - -#include -#include -#include - -#include "wx/utils.h" - -#include "wx/expr.h" -#include "wx/wxexpr.h" - -extern "C" void add_expr(char *); -extern "C" void LexFromFile(FILE *fd); -extern "C" void LexFromString(char *buf); - - -wxExprDatabase *thewxExprDatabase = NULL; -wxExprErrorHandler currentwxExprErrorHandler; - -wxExpr::wxExpr(const wxString& functor) -{ - type = wxExprList; - next = NULL; - last = NULL; - value.first = NULL; - - wxExpr *pfunctor = new wxExpr(wxExprWord, functor); - Append(pfunctor); - client_data = NULL; -} - -wxExpr::wxExpr(wxExprType the_type, const wxString& word_or_string) -{ - type = the_type; - - switch (the_type) - { - case wxExprWord: - value.word = copystring((const char *)word_or_string); - break; - case wxExprString: - value.string = copystring((const char *)word_or_string); - break; - case wxExprList: - last = NULL; - value.first = NULL; - break; - case wxExprReal: - case wxExprInteger: - case wxExprNull: - break; - } - client_data = NULL; - next = NULL; -} - -wxExpr::wxExpr(wxExprType the_type, char *word_or_string, bool allocate) -{ - type = the_type; - - switch (the_type) - { - case wxExprWord: - value.word = allocate ? copystring(word_or_string) : word_or_string; - break; - case wxExprString: - value.string = allocate ? copystring(word_or_string) : word_or_string; - break; - case wxExprList: - last = NULL; - value.first = NULL; - break; - case wxExprReal: - case wxExprInteger: - case wxExprNull: - break; - } - client_data = NULL; - next = NULL; -} - -wxExpr::wxExpr(long the_integer) -{ - type = wxExprInteger; - value.integer = the_integer; - client_data = NULL; - next = NULL; -} - -wxExpr::wxExpr(double the_real) -{ - type = wxExprReal; - value.real = the_real; - client_data = NULL; - next = NULL; -} - -wxExpr::wxExpr(wxList *the_list) -{ - type = wxExprList; - client_data = NULL; - last = NULL; - value.first = NULL; - - wxExpr *listExpr = new wxExpr(wxExprList); - - wxNode *node = the_list->First(); - while (node) - { - wxExpr *expr = (wxExpr *)node->Data(); - listExpr->Append(expr); - node = node->Next(); - } - Append(listExpr); - - delete the_list; -} - -wxExpr::~wxExpr(void) -{ - switch (type) - { - case wxExprInteger: - case wxExprReal: - { - break; - } - case wxExprString: - { - delete[] value.string; - break; - } - case wxExprWord: - { - delete[] value.word; - break; - } - case wxExprList: - { - wxExpr *expr = value.first; - while (expr) - { - wxExpr *expr1 = expr->next; - - delete expr; - expr = expr1; - } - break; - } - case wxExprNull: break; - } -} - -void wxExpr::Append(wxExpr *expr) -{ - if (!value.first) - value.first = expr; - - if (last) - last->next = expr; - last = expr; -} - -void wxExpr::Insert(wxExpr *expr) -{ - expr->next = value.first; - value.first = expr; - - if (!last) - last = expr; -} - -wxExpr *wxExpr::Copy(void) const -{ - // This seems to get round an optimizer bug when - // using Watcom C++ 10a in WIN32 compilation mode. - // If these lines not present, the type seems to be - // interpreted wrongly as an integer. - // I don't want to turn optimization off since it's needed - // for reading in files quickly. -#if defined(__WATCOMC__) - char buf[2]; - sprintf(buf, ""); -#endif - - switch (type) - { - case wxExprInteger: - return new wxExpr(value.integer); - case wxExprReal: - return new wxExpr(value.real); - case wxExprString: - return new wxExpr(wxExprString, wxString(value.string)); - case wxExprWord: - return new wxExpr(wxExprWord, wxString(value.word)); - case wxExprList: - { - wxExpr *expr = value.first; - wxExpr *new_list = new wxExpr(wxExprList); - while (expr) - { - wxExpr *expr2 = expr->Copy(); - new_list->Append(expr2); - expr = expr->next; - } - return new_list; - } - case wxExprNull: - break; - } - return NULL; -} - - -// Get the wxExpr (containing (= wxExpr Value) form) for the given word -// or string, assuming that we have Attribute=Value, ... -wxExpr *wxExpr::GetAttributeValueNode(const wxString& word) const // Use only for a clause or list -{ - if (type != wxExprList) - return NULL; - - wxExpr *expr = value.first; - while (expr) - { - if (expr->type == wxExprList) - { - wxExpr *firstNode = expr->value.first; - if ((firstNode->type == wxExprWord) && (firstNode->value.word[0] == '=')) - { - wxExpr *secondNode = firstNode->next; - if ((secondNode->type == wxExprWord) && - (strcmp((const char *)word, secondNode->value.word) == 0)) - { - return expr; - } - } - } - expr = expr->next; - } - return NULL; -} - -// Get the value (in wxExpr form) for the given word or string, assuming -// that we have Attribute=Value, ... -wxExpr *wxExpr::AttributeValue(const wxString& word) const // Use only for a clause or list -{ - if (type != wxExprList) - return NULL; - - wxExpr *attExpr = GetAttributeValueNode(word); - if (attExpr && attExpr->value.first && attExpr->value.first->next) - return attExpr->value.first->next->next; - else return NULL; -} - -wxString wxExpr::Functor(void) const // Use only for a clause -{ - if ((type != wxExprList) || !value.first) - return wxString(""); - - if (value.first->type == wxExprWord) - return wxString(value.first->value.word); - else - return wxString(""); -} - -bool wxExpr::IsFunctor(const wxString& f) const // Use only for a clause -{ - if ((type != wxExprList) || !value.first) - return FALSE; - - return (value.first->type == wxExprWord && - (strcmp((const char *)f, value.first->value.word) == 0)); -} - -// Return nth argument of a clause (starting from 1) -wxExpr *wxExpr::Arg(wxExprType theType, int arg) const -{ - wxExpr *expr = value.first; - int i; - for (i = 1; i < arg; i++) - if (expr) - expr = expr->next; - - if (expr && (expr->type == theType)) - return expr; - else - return NULL; -} - -// Return nth argument of a list expression (starting from zero) -wxExpr *wxExpr::Nth(int arg) const -{ - if (type != wxExprList) - return NULL; - - wxExpr *expr = value.first; - int i; - for (i = 0; i < arg; i++) - if (expr) - expr = expr->next; - else return NULL; - - if (expr) - return expr; - else - return NULL; -} - - // Returns the number of elements in a list expression -int wxExpr::Number(void) const -{ - if (type != wxExprList) - return 0; - - int i = 0; - wxExpr *expr = value.first; - while (expr) - { - expr = expr->next; - i ++; - } - return i; -} - -void wxExpr::DeleteAttributeValue(const wxString& attribute) -{ - if (type != wxExprList) - return; - - wxExpr *expr = value.first; - wxExpr *lastExpr = this; - while (expr) - { - if (expr->type == wxExprList) - { - wxExpr *firstNode = expr->value.first; - if ((firstNode->type == wxExprWord) && (firstNode->value.word[0] == '=')) - { - wxExpr *secondNode = firstNode->next; - if ((secondNode->type == wxExprWord) && - (strcmp((const char *)attribute, secondNode->value.word) == 0)) - { - wxExpr *nextExpr = expr->next; - delete expr; - - lastExpr->next = nextExpr; - - if (last == expr) - last = lastExpr; - - return; - } - } - } - lastExpr = expr; - expr = expr->next; - } - return; -} - -void wxExpr::AddAttributeValue(const wxString& attribute, wxExpr *val) -{ - if (type != wxExprList) - { -// cout << "Error! tried to add an attribute-value pair to a nonlist wxExpr expression\n"; - return; - } - // Warning - existing code may assume that any existing value - // is deleted first. For efficiency, we leave this to the application. -// DeleteAttributeValue(attribute); - - wxExpr *patt = new wxExpr(wxExprWord, attribute); - wxExpr *pequals = new wxExpr(wxExprWord, "="); - - wxExpr *listExpr = new wxExpr(wxExprList); - - listExpr->Append(pequals); - listExpr->Append(patt); - listExpr->Append(val); - - Append(listExpr); -} - -void wxExpr::AddAttributeValue(const wxString& attribute, long val) -{ - if (type != wxExprList) - { -// cout << "Error! tried to add an attribute-value pair to a nonlist wxExpr expression\n"; - return; - } - // Warning - existing code may assume that any existing value - // is deleted first. For efficiency, we leave this to the application. -// DeleteAttributeValue(attribute); - - wxExpr *patt = new wxExpr(wxExprWord, attribute); - wxExpr *pval = new wxExpr(val); - wxExpr *pequals = new wxExpr(wxExprWord, "="); - - wxExpr *listExpr = new wxExpr(wxExprList); - - listExpr->Append(pequals); - listExpr->Append(patt); - listExpr->Append(pval); - - Append(listExpr); -} - -void wxExpr::AddAttributeValue(const wxString& attribute, double val) -{ - if (type != wxExprList) - { -// cout << "Error! tried to add an attribute-value pair to a nonlist wxExpr expression\n"; - return; - } - -// DeleteAttributeValue(attribute); - wxExpr *patt = new wxExpr(wxExprWord, attribute); - wxExpr *pval = new wxExpr(val); - wxExpr *pequals = new wxExpr(wxExprWord, "="); - - wxExpr *listExpr = new wxExpr(wxExprList); - - listExpr->Append(pequals); - listExpr->Append(patt); - listExpr->Append(pval); - - Append(listExpr); -} - -void wxExpr::AddAttributeValueString(const wxString& attribute, const wxString& val) -{ - if (type != wxExprList) - { -// cout << "Error! tried to add an attribute-value pair to a nonlist wxExpr expression\n"; - return; - } - -// DeleteAttributeValue(attribute); - - wxExpr *patt = new wxExpr(wxExprWord, attribute); - wxExpr *pval = new wxExpr(wxExprString, val); - wxExpr *pequals = new wxExpr(wxExprWord, "="); - - wxExpr *listExpr = new wxExpr(wxExprList); - - listExpr->Append(pequals); - listExpr->Append(patt); - listExpr->Append(pval); - - Append(listExpr); -} - -void wxExpr::AddAttributeValueWord(const wxString& attribute, const wxString& val) -{ - if (type != wxExprList) - { -// cout << "Error! tried to add an attribute-value pair to a nonlist wxExpr expression\n"; - return; - } - -// DeleteAttributeValue(attribute); - - wxExpr *patt = new wxExpr(wxExprWord, attribute); - wxExpr *pval = new wxExpr(wxExprWord, val); - wxExpr *pequals = new wxExpr(wxExprWord, "="); - - wxExpr *listExpr = new wxExpr(wxExprList); - - listExpr->Append(pequals); - listExpr->Append(patt); - listExpr->Append(pval); - - Append(listExpr); -} - -void wxExpr::AddAttributeValue(const wxString& attribute, wxList *val) -{ - if (type != wxExprList) - { -// cout << "Error! tried to add an attribute-value pair to a nonlist wxExpr expression\n"; - return; - } - if (!val) - return; - -// DeleteAttributeValue(attribute); - - wxExpr *patt = new wxExpr(wxExprWord, attribute); - wxExpr *pval = new wxExpr(val); - wxExpr *pequals = new wxExpr(wxExprWord, "="); - - wxExpr *listExpr = new wxExpr(wxExprList); - - listExpr->Append(pequals); - listExpr->Append(patt); - listExpr->Append(pval); - - Append(listExpr); -} - -void wxExpr::AddAttributeValueStringList(const wxString& attribute, wxList *string_list) -{ - if (type != wxExprList) - { -// cout << "Error! tried to add an attribute-value pair to a nonlist wxExpr expression\n"; - return; - } - if (!string_list) - return; - -// DeleteAttributeValue(attribute); - - // First make a list of wxExpr strings - wxExpr *listExpr = new wxExpr(wxExprList); - wxNode *node = string_list->First(); - while (node) - { - char *string = (char *)node->Data(); - wxExpr *expr = new wxExpr(wxExprString, wxString(string)); - listExpr->Append(expr); - node = node->Next(); - } - - // Now make an (=, Att, Value) triple - wxExpr *patt = new wxExpr(wxExprWord, attribute); - wxExpr *pequals = new wxExpr(wxExprWord, "="); - - wxExpr *listExpr2 = new wxExpr(wxExprList); - - listExpr2->Append(pequals); - listExpr2->Append(patt); - listExpr2->Append(listExpr); - - Append(listExpr2); -} - -bool wxExpr::GetAttributeValue(const wxString& att, int& var) const -{ - wxExpr *expr = AttributeValue(att); - - if (expr && (expr->Type() == wxExprInteger || expr->Type() == wxExprReal)) - { - var = (int)(expr->IntegerValue()); - return TRUE; - } - else - return FALSE; -} - -bool wxExpr::GetAttributeValue(const wxString& att, long& var) const -{ - wxExpr *expr = AttributeValue(att); - - if (expr && (expr->Type() == wxExprInteger || expr->Type() == wxExprReal)) - { - var = expr->IntegerValue(); - return TRUE; - } - else - return FALSE; -} - -bool wxExpr::GetAttributeValue(const wxString& att, float& var) const -{ - wxExpr *expr = AttributeValue(att); - if (expr && (expr->Type() == wxExprInteger || expr->Type() == wxExprReal)) - { - var = (float) expr->RealValue(); - return TRUE; - } - else - return FALSE; -} - -bool wxExpr::GetAttributeValue(const wxString& att, double& var) const -{ - wxExpr *expr = AttributeValue(att); - if (expr && (expr->Type() == wxExprInteger || expr->Type() == wxExprReal)) - { - var = expr->RealValue(); - return TRUE; - } - else - return FALSE; -} - -bool wxExpr::GetAttributeValue(const wxString& att, wxString& var) const // Word OR string -> string -{ - wxExpr *expr = AttributeValue(att); - if (expr && expr->Type() == wxExprWord) - { - var = expr->WordValue(); - return TRUE; - } - else if (expr && expr->Type() == wxExprString) - { - var = expr->StringValue(); - return TRUE; - } - else - return FALSE; -} - -bool wxExpr::GetAttributeValue(const wxString& att, wxExpr **var) const -{ - wxExpr *expr = AttributeValue(att); - if (expr) - { - *var = expr; - return TRUE; - } - else - return FALSE; -} - -bool wxExpr::GetAttributeValueStringList(const wxString& att, wxList *var) const -{ - wxExpr *expr = AttributeValue(att); - if (expr && expr->Type() == wxExprList) - { - wxExpr *string_expr = expr->value.first; - while (string_expr) - { - if (string_expr->Type() == wxExprString) - var->Append((wxObject *)copystring(string_expr->StringValue())); - - string_expr = string_expr->next; - } - return TRUE; - } - else - return FALSE; -} - -// Compatibility -void wxExpr::AssignAttributeValue(char *att, char **var) const -{ - wxString str; - if (GetAttributeValue(att, str)) - { - if (*var) - delete[] *var; - *var = copystring((const char *) str); - } -} - -void wxExpr::WriteClause(ostream& stream) // Write this expression as a top-level clause -{ - if (type != wxExprList) - return; - - wxExpr *node = value.first; - if (node) - { - node->WriteExpr(stream); - stream << "("; - node = node->next; - bool first = TRUE; - while (node) - { - if (!first) - stream << " "; - node->WriteExpr(stream); - node = node->next; - if (node) stream << ",\n"; - first = FALSE; - } - stream << ").\n\n"; - } -} - -void wxExpr::WriteExpr(ostream& stream) // Write as any other subexpression -{ - // This seems to get round an optimizer bug when - // using Watcom C++ 10a in WIN32 compilation mode. - // If these lines not present, the type seems to be - // interpreted wrongly as an integer. - // I don't want to turn optimization off since it's needed - // for reading in files quickly. -#if defined(__WATCOMC__) - char buf[2]; - sprintf(buf, ""); -#endif - - switch (type) - { - case wxExprInteger: - { - stream << value.integer; - break; - } - case wxExprReal: - { - double f = value.real; -/* Now the parser can cope with this. - // Prevent printing in 'e' notation. Any better way? - if (fabs(f) < 0.00001) - f = 0.0; -*/ - char buf[40]; - sprintf(buf, "%.6g", f); - stream << buf; - break; - } - case wxExprString: - { - stream << "\""; - int i; - int len = strlen(value.string); - for (i = 0; i < len; i++) - { - char ch = value.string[i]; - if (ch == '"' || ch == '\\') - stream << "\\"; - stream << ch; - } - - stream << "\""; - break; - } - case wxExprWord: - { - bool quote_it = FALSE; - int len = strlen(value.word); - if ((len == 0) || (len > 0 && (value.word[0] > 64 && value.word[0] < 91))) - quote_it = TRUE; - else - { - int i; - for (i = 0; i < len; i++) - if ((!isalpha(value.word[i])) && (!isdigit(value.word[i])) && - (value.word[i] != '_')) - { quote_it = TRUE; i = len; } - } - - if (quote_it) - stream << "'"; - - stream << value.word; - - if (quote_it) - stream << "'"; - - break; - } - case wxExprList: - { - if (!value.first) - stream << "[]"; - else - { - wxExpr *expr = value.first; - - if ((expr->Type() == wxExprWord) && (strcmp(expr->WordValue(), "=") == 0)) - { - wxExpr *arg1 = expr->next; - wxExpr *arg2 = arg1->next; - arg1->WriteExpr(stream); - stream << " = "; - arg2->WriteExpr(stream); - } - else - { - stream << "["; - while (expr) - { - expr->WriteExpr(stream); - expr = expr->next; - if (expr) stream << ", "; - } - stream << "]"; - } - } - break; - } - case wxExprNull: break; - } -} - -void wxExpr::WriteLispExpr(ostream& stream) -{ - switch (type) - { - case wxExprInteger: - { - stream << value.integer; - break; - } - case wxExprReal: - { - stream << value.real; - break; - } - case wxExprString: - { - stream << "\"" << value.string << "\""; - break; - } - case wxExprWord: - { - stream << value.word; - break; - } - case wxExprList: - { - wxExpr *expr = value.first; - - stream << "("; - while (expr) - { - expr->WriteLispExpr(stream); - expr = expr->next; - if (expr) stream << " "; - } - - stream << ")"; - break; - } - case wxExprNull: break; - } -} - -/* - * wxExpr 'database' (list of expressions) - */ - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxExprDatabase, wxList) -#endif - -wxExprDatabase::wxExprDatabase(wxExprErrorHandler handler) -{ - position = NULL; - hash_table = NULL; - currentwxExprErrorHandler = handler; - noErrors = 0; -} - -wxExprDatabase::wxExprDatabase(wxExprType type, const wxString& attribute, int size, - wxExprErrorHandler handler) -{ - position = NULL; - attribute_to_hash = attribute; - if (type == wxExprString) - hash_table = new wxHashTable(wxKEY_STRING, size); - else if (type == wxExprInteger) - hash_table = new wxHashTable(wxKEY_INTEGER, size); - else hash_table = NULL; - - currentwxExprErrorHandler = handler; - noErrors = 0; -} - -wxExprDatabase::~wxExprDatabase(void) -{ - ClearDatabase(); - if (hash_table) - delete hash_table; -} - -void wxExprDatabase::BeginFind(void) // Initialise a search -{ - position = First(); -} - -wxExpr *wxExprDatabase::FindClause(long id) // Find a term based on an integer id attribute - // e.g. node(id=23, type=rectangle, ....). -{ - wxExpr *found = NULL; - while (position && !found) - { - wxExpr *term = (wxExpr *)position->Data(); - - if (term->Type() == wxExprList) - { - wxExpr *value = term->AttributeValue("id"); - if (value->Type() == wxExprInteger && value->IntegerValue() == id) - found = term; - } - position = position->Next(); - } - return found; -} - -// Find on basis of attribute/value pairs, e.g. type=rectangle -wxExpr *wxExprDatabase::FindClause(const wxString& word, const wxString& val) -{ - wxExpr *found = NULL; - while (position && !found) - { - wxExpr *term = (wxExpr *)position->Data(); - - if (term->Type() == wxExprList) - { - wxExpr *value = term->AttributeValue(word); - if ((value->Type() == wxExprWord && value->WordValue() == val) || - (value->Type() == wxExprString && value->StringValue() == val)) - found = term; - } - position = position->Next(); - } - return found; -} - -wxExpr *wxExprDatabase::FindClause(const wxString& word, long val) -{ - wxExpr *found = NULL; - while (position && !found) - { - wxExpr *term = (wxExpr *)position->Data(); - - if (term->Type() == wxExprList) - { - wxExpr *value = term->AttributeValue(word); - if ((value->Type() == wxExprInteger) && (value->IntegerValue() == val)) - found = term; - } - position = position->Next(); - } - return found; -} - -wxExpr *wxExprDatabase::FindClause(const wxString& word, double val) -{ - wxExpr *found = NULL; - while (position && !found) - { - wxExpr *term = (wxExpr *)position->Data(); - - if (term->Type() == wxExprList) - { - wxExpr *value = term->AttributeValue(word); - if ((value->Type() == wxExprReal) && (value->RealValue() == val)) - found = term; - } - position = position->Next(); - } - return found; -} - -wxExpr *wxExprDatabase::FindClauseByFunctor(const wxString& functor) -{ - wxExpr *found = NULL; - while (position && !found) - { - wxExpr *term = (wxExpr *)position->Data(); - - if (term->Type() == wxExprList) - { - if (term->Functor() == functor) - found = term; - } - position = position->Next(); - } - return found; -} - -// If hashing is on, must store in hash table too -void wxExprDatabase::Append(wxExpr *clause) -{ - wxList::Append((wxObject *)clause); - if (hash_table) - { - wxString functor(clause->Functor()); - wxExpr *expr = clause->AttributeValue(attribute_to_hash); - if (expr) - { - long functor_key = hash_table->MakeKey((char *)(const char *)functor); - long value_key = 0; - if (expr && expr->Type() == wxExprString) - { - value_key = hash_table->MakeKey((char *)(const char *)expr->StringValue()); - hash_table->Put(functor_key + value_key, (char *)(const char *)expr->StringValue(), (wxObject *)clause); - } - else if (expr && expr->Type() == wxExprInteger) - { - value_key = expr->IntegerValue(); - hash_table->Put(functor_key + value_key, expr->IntegerValue(), (wxObject *)clause); - } - - } - } -} - -wxExpr *wxExprDatabase::HashFind(const wxString& functor, long value) const -{ - long key = hash_table->MakeKey((char *)(const char *)functor) + value; - - // The key alone isn't guaranteed to be unique: - // must supply value too. Let's assume the value of the - // id is going to be reasonably unique. - return (wxExpr *)hash_table->Get(key, value); -} - -wxExpr *wxExprDatabase::HashFind(const wxString& functor, const wxString& value) const -{ - long key = hash_table->MakeKey((char *)(const char *)functor) + hash_table->MakeKey((char *)(const char *)value); - return (wxExpr *)hash_table->Get(key, (char *)(const char *)value); -} - -void wxExprDatabase::ClearDatabase(void) -{ - noErrors = 0; - wxNode *node = First(); - while (node) - { - wxExpr *expr = (wxExpr *)node->Data(); - delete expr; - delete node; - node = First(); - } - - if (hash_table) - hash_table->Clear(); -} - -bool wxExprDatabase::Read(const wxString& filename) -{ - noErrors = 0; - - FILE *f = fopen((const char *)filename, "r"); - if (f) - { - thewxExprDatabase = this; - - LexFromFile(f); - yyparse(); - fclose(f); - - wxExprCleanUp(); - return (noErrors == 0); - } - else - { - return FALSE; - } -} - -bool wxExprDatabase::ReadFromString(const wxString& buffer) -{ - noErrors = 0; - thewxExprDatabase = this; - - LexFromString((char *)(const char *)buffer); - yyparse(); - wxExprCleanUp(); - return (noErrors == 0); -} - -bool wxExprDatabase::Write(const wxString& fileName) -{ - ofstream str((char *)(const char *)fileName); - if (str.bad()) - return FALSE; - return Write(str); -} - -bool wxExprDatabase::Write(ostream& stream) -{ - noErrors = 0; - wxNode *node = First(); - while (node) - { - wxExpr *expr = (wxExpr *)node->Data(); - expr->WriteClause(stream); - node = node->Next(); - } - return (noErrors == 0); -} - -void wxExprDatabase::WriteLisp(ostream& stream) -{ - noErrors = 0; - wxNode *node = First(); - while (node) - { - wxExpr *expr = (wxExpr *)node->Data(); - expr->WriteLispExpr(stream); - stream << "\n\n"; - node = node->Next(); - } -} - -void add_expr(wxExpr * expr) -{ - thewxExprDatabase->Append(expr); -} - -// Checks functor -bool wxExprIsFunctor(wxExpr *expr, const wxString& functor) -{ - if (expr && (expr->Type() == wxExprList)) - { - wxExpr *first_expr = expr->value.first; - - if (first_expr && (first_expr->Type() == wxExprWord) && - (first_expr->WordValue() == functor)) - return TRUE; - else - return FALSE; - } - else - return FALSE; -} - -/* - * Called from parser - * - */ - -char *wxmake_integer(char *str) -{ - wxExpr *x = new wxExpr(atol(str)); - - return (char *)x; -} - -char *wxmake_real(char *str1, char *str2) -{ - char buf[50]; - - sprintf(buf, "%s.%s", str1, str2); - double f = (double)atof(buf); - wxExpr *x = new wxExpr(f); - - return (char *)x; -} - -// extern "C" double exp10(double); - -char *wxmake_exp(char *str1, char *str2) -{ - double mantissa = (double)atoi(str1); - double exponent = (double)atoi(str2); - - double d = mantissa * pow(10.0, exponent); - - wxExpr *x = new wxExpr(d); - - return (char *)x; -} - -char *wxmake_exp2(char *str1, char *str2, char *str3) -{ - char buf[50]; - - sprintf(buf, "%s.%s", str1, str2); - double mantissa = (double)atof(buf); - double exponent = (double)atoi(str3); - - double d = mantissa * pow(10.0, exponent); - - wxExpr *x = new wxExpr(d); - - return (char *)x; -} - -char *wxmake_word(char *str) -{ - wxExpr *x = new wxExpr(wxExprWord, str); - return (char *)x; -} - -char *wxmake_string(char *str) -{ - char *s, *t; - int len, i; - - str++; /* skip leading quote */ - len = strlen(str) - 1; /* ignore trailing quote */ - - s = new char[len + 1]; - - t = s; - for(i=0; iInsert(car); - return (char *)cdr; -} - -void process_command(char * cexpr) -{ - wxExpr *expr = (wxExpr *)cexpr; - add_expr(expr); -} - -void syntax_error(char *WXUNUSED(s)) -{ - if (currentwxExprErrorHandler) - (void)(*(currentwxExprErrorHandler))(WXEXPR_ERROR_SYNTAX, "syntax error"); - if (thewxExprDatabase) thewxExprDatabase->noErrors += 1; -} - -#if 0 -#ifdef _WINDLL -// char *__cdecl strdup(const char *s) -WXDLLEXPORT char *strdup(const char *s) -{ - int len = strlen(s); - char *new_s = (char *)malloc(sizeof(char)*(len+1)); - strcpy(new_s, s); - return new_s; -} -#endif -#endif - diff --git a/src/common/zstream.cpp b/src/common/zstream.cpp deleted file mode 100644 index 4e896e2fd8..0000000000 --- a/src/common/zstream.cpp +++ /dev/null @@ -1,191 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: zstream.cpp -// Purpose: Compressed stream classes -// Author: Guilhem Lavaux -// Modified by: -// Created: 11/07/98 -// RCS-ID: $Id$ -// Copyright: (c) Guilhem Lavaux -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation "zstream.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#include "wx/zstream.h" - -#if wxUSE_ZLIB - -#include "wx/utils.h" -#include "wx/intl.h" -#include "wx/log.h" -#include "../zlib/zlib.h" // don't change this, Robert - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#define ZSTREAM_BUFFER_SIZE 1024 - -////////////////////// -// wxZlibInputStream -////////////////////// - -wxZlibInputStream::wxZlibInputStream(wxInputStream& stream) - : wxFilterInputStream(stream) -{ - int err; - - // I need a private stream buffer. - m_i_streambuf = new wxStreamBuffer(*this, wxStreamBuffer::read); - m_i_destroybuf = TRUE; - m_inflate = new z_stream_s; - - m_inflate->zalloc = (alloc_func)0; - m_inflate->zfree = (free_func)0; - m_inflate->opaque = (voidpf)0; - - err = inflateInit(m_inflate); - if (err != Z_OK) { - inflateEnd(m_inflate); - delete m_inflate; - return; - } - - m_z_buffer = new unsigned char[ZSTREAM_BUFFER_SIZE]; - m_z_size = ZSTREAM_BUFFER_SIZE; - - m_inflate->avail_in = 0; - m_inflate->next_in = NULL; -} - -wxZlibInputStream::~wxZlibInputStream() -{ - inflateEnd(m_inflate); - delete m_inflate; -} - -size_t wxZlibInputStream::OnSysRead(void *buffer, size_t size) -{ - int err; - - m_inflate->next_out = (unsigned char *)buffer; - m_inflate->avail_out = size; - - while (m_inflate->avail_out > 0) { - if (m_inflate->avail_in == 0) { - - m_parent_i_stream->Read(m_z_buffer, m_z_size); - m_inflate->next_in = m_z_buffer; - m_inflate->avail_in = m_parent_i_stream->LastRead(); - - if (m_parent_i_stream->LastError() != wxStream_NOERROR) - return (size - m_inflate->avail_in); - } - err = inflate(m_inflate, Z_FINISH); - if (err == Z_STREAM_END) - return (size - m_inflate->avail_in); - } - - return size-m_inflate->avail_in; -} - -////////////////////// -// wxZlibOutputStream -////////////////////// - -wxZlibOutputStream::wxZlibOutputStream(wxOutputStream& stream) - : wxFilterOutputStream(stream) -{ - int err; - - m_o_streambuf = new wxStreamBuffer(*this, wxStreamBuffer::write); - m_o_destroybuf = TRUE; - m_deflate = new z_stream_s; - - m_deflate->zalloc = (alloc_func)0; - m_deflate->zfree = (free_func)0; - m_deflate->opaque = (voidpf)0; - - err = deflateInit(m_deflate, Z_DEFAULT_COMPRESSION); - if (err != Z_OK) { - deflateEnd(m_deflate); - return; - } - - m_z_buffer = new unsigned char[ZSTREAM_BUFFER_SIZE]; - m_z_size = ZSTREAM_BUFFER_SIZE; - - m_deflate->avail_in = 0; - m_deflate->next_out = m_z_buffer; - m_deflate->avail_out = m_z_size; -} - -wxZlibOutputStream::~wxZlibOutputStream() -{ - int err; - - Sync(); - - err = deflate(m_deflate, Z_FINISH); - if (err != Z_STREAM_END) - { - wxLogDebug( "wxZlibOutputStream: an error occured while closing the stream.\n" ); - return; - } - - deflateEnd(m_deflate); - - delete[] m_z_buffer; -} - -void wxZlibOutputStream::Sync() -{ - int err; - - m_parent_o_stream->Write(m_z_buffer, m_z_size-m_deflate->avail_out); - m_deflate->next_out = m_z_buffer; - m_deflate->avail_out = m_z_size; - - err = deflate(m_deflate, Z_FULL_FLUSH); - if (err != Z_OK) { - return; - } - - m_parent_o_stream->Write(m_z_buffer, m_z_size-m_deflate->avail_out); - m_deflate->next_out = m_z_buffer; - m_deflate->avail_out = m_z_size; -} - -size_t wxZlibOutputStream::OnSysWrite(const void *buffer, size_t size) -{ - int err; - - m_deflate->next_in = (unsigned char *)buffer; - m_deflate->avail_in = size; - - while (m_deflate->avail_in > 0) { - - if (m_deflate->avail_out == 0) { - m_parent_o_stream->Write(m_z_buffer, m_z_size); - if (m_parent_o_stream->LastError() != wxStream_NOERROR) - return (size - m_deflate->avail_in); - - m_deflate->next_out = m_z_buffer; - m_deflate->avail_out = m_z_size; - } - - err = deflate(m_deflate, Z_NO_FLUSH); - if (err != Z_OK) - return (size - m_deflate->avail_in); - } - return size; -} - -#endif - - // wxUSE_ZLIB - diff --git a/src/cygnus.bat b/src/cygnus.bat deleted file mode 100644 index d641197665..0000000000 --- a/src/cygnus.bat +++ /dev/null @@ -1,10 +0,0 @@ -@ECHO OFF -SET MAKE_MODE=UNIX -rem SET PATH=g:\GNUWIN32\B20\CYGWIN~1\H-I586~1\BIN;%PATH% -PATH C:\WINDOWS;C:\WINDOWS\command;g:\GNUWIN32\B20\CYGWIN~1\H-I586~1\BIN;d:\wx\utils\tex2rtf\bin;g:\ast\astex;g:\ast\emtex\bin;g:\cvs;c:\bin -set BISON_SIMPLE=g:\gnuwin32\b20\cygwin-b20\share\bison.simple -set BISON_HAIRY=g:\gnuwin32\b20\cygwin-b20\share\bison.hairy -rem bash -rem 4DOS users only... -unalias make -alias makegnu make -f makefile.g95 diff --git a/src/generic/choicdgg.cpp b/src/generic/choicdgg.cpp deleted file mode 100644 index e9f54e59f9..0000000000 --- a/src/generic/choicdgg.cpp +++ /dev/null @@ -1,360 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: choicdgg.cpp -// Purpose: Choice dialogs -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "choicdgg.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include -#include "wx/utils.h" -#include "wx/dialog.h" -#include "wx/listbox.h" -#include "wx/button.h" -#include "wx/stattext.h" -#include "wx/layout.h" -#include "wx/intl.h" -#endif - -#include "wx/generic/choicdgg.h" - -// Split message, using constraints to position controls -static void wxSplitMessage2(const char *message, wxList *messageList, wxWindow *parent, wxRowColSizer *sizer) -{ - char *copyMessage = copystring(message); - size_t i = 0; - size_t len = strlen(copyMessage); - char *currentMessage = copyMessage; - -// wxWindow *lastWindow = parent; - - while (i < len) { - while ((i < len) && (copyMessage[i] != '\n')) i++; - if (i < len) copyMessage[i] = 0; - wxStaticText *mess = new wxStaticText(parent, -1, currentMessage); - -/* - wxLayoutConstraints *c = new wxLayoutConstraints; - c->left.SameAs (parent, wxLeft, 10); - c->top.SameAs (lastWindow, wxBottom, 5); - c->right.AsIs (); - c->height.AsIs (); - - mess->SetConstraints(c); -*/ - sizer->AddSizerChild(mess); - - messageList->Append(mess); - - currentMessage = copyMessage + i + 1; - } - delete[] copyMessage; -} - -wxString wxGetSingleChoice( const wxString& message, const wxString& caption, int n, - const wxString *choices, wxWindow *parent, - int WXUNUSED(x), int WXUNUSED(y), bool WXUNUSED(centre), - int WXUNUSED(width), int WXUNUSED(height) ) -{ - wxSingleChoiceDialog dialog(parent, message, caption, n, choices); - if ( dialog.ShowModal() == wxID_OK ) - { - return dialog.GetStringSelection(); - } - else - return ""; -} - -// Overloaded for backward compatibility -wxString wxGetSingleChoice( const wxString& message, const wxString& caption, int n, - char *choices[], wxWindow *parent, - int x, int y, bool centre, - int width, int height ) -{ - wxString *strings = new wxString[n]; - int i; - for ( i = 0; i < n; i++) - { - strings[i] = choices[i]; - } - wxString ans(wxGetSingleChoice(message, caption, n, (const wxString *)strings, parent, - x, y, centre, width, height)); - delete[] strings; - return ans; -} - -int wxGetSingleChoiceIndex( const wxString& message, const wxString& caption, int n, - const wxString *choices, wxWindow *parent, - int WXUNUSED(x), int WXUNUSED(y), bool WXUNUSED(centre), - int WXUNUSED(width), int WXUNUSED(height) ) -{ - wxSingleChoiceDialog dialog(parent, message, caption, n, choices); - if ( dialog.ShowModal() == wxID_OK ) - { - return dialog.GetSelection(); - } - else - return -1; -} - -// Overloaded for backward compatibility -int wxGetSingleChoiceIndex( const wxString& message, const wxString& caption, int n, - char *choices[], wxWindow *parent, - int x, int y, bool centre, - int width, int height ) -{ - wxString *strings = new wxString[n]; - int i; - for ( i = 0; i < n; i++) - { - strings[i] = choices[i]; - } - int ans = wxGetSingleChoiceIndex(message, caption, n, (const wxString *)strings, parent, - x, y, centre, width, height); - delete[] strings; - return ans; -} - -char *wxGetSingleChoiceData( const wxString& message, const wxString& caption, int n, - const wxString *choices, char **client_data, wxWindow *parent, - int WXUNUSED(x), int WXUNUSED(y), bool WXUNUSED(centre), - int WXUNUSED(width), int WXUNUSED(height) ) -{ - wxSingleChoiceDialog dialog(parent, message, caption, n, choices, client_data); - if ( dialog.ShowModal() == wxID_OK ) - { - return dialog.GetSelectionClientData(); - } - else - return NULL; -} - -// Overloaded for backward compatibility -char *wxGetSingleChoiceData( const wxString& message, const wxString& caption, int n, - char *choices[], char **client_data, wxWindow *parent, - int x, int y, bool centre, - int width, int height ) -{ - wxString *strings = new wxString[n]; - int i; - for ( i = 0; i < n; i++) - { - strings[i] = choices[i]; - } - char *data = wxGetSingleChoiceData(message, caption, n, (const wxString *)strings, client_data, parent, - x, y, centre, width, height); - delete[] strings; - return data; -} - - -/* Multiple choice dialog contributed by Robert Cowell - * - -The new data passed are in the "int nsel" and "int * selection" - -The idea is to make a multiple selection from list of strings. -The returned value is the total number selected. initialily there -are nsel selected, with indices stored in -selection[0],...,selection[nsel-1] which appear highlighted to -begin with. On exit with value i -selection[0..i-1] contains the indices of the selected items. -(Some prior selectecions might be deselected.) -Thus selection must be as big as choices, in case all items are -selected. - -*/ -/* -int wxGetMultipleChoice(const wxString& message, const wxString& caption, - int n, const wxString *choices, - int nsel, int * selection, - wxWindow *parent , int x , int y, bool centre, - int width, int height) -{ - return -1; -} -*/ - -// wxSingleChoiceDialog - -#if !USE_SHARED_LIBRARY -BEGIN_EVENT_TABLE(wxSingleChoiceDialog, wxDialog) - EVT_BUTTON(wxID_OK, wxSingleChoiceDialog::OnOK) - EVT_LISTBOX_DCLICK(wxID_LISTBOX, wxSingleChoiceDialog::OnListBoxDClick) -END_EVENT_TABLE() - -IMPLEMENT_CLASS(wxSingleChoiceDialog, wxDialog) -#endif - -wxSingleChoiceDialog::wxSingleChoiceDialog(wxWindow *parent, const wxString& message, const wxString& caption, - int n, const wxString *choices, char **clientData, long style, const wxPoint& pos): - wxDialog(parent, -1, caption, pos, wxDefaultSize, wxDEFAULT_DIALOG_STYLE|wxDIALOG_MODAL) -{ - Create(parent, message, caption, n, choices, clientData, style); -} - -wxSingleChoiceDialog::wxSingleChoiceDialog(wxWindow *parent, const wxString& message, const wxString& caption, - const wxStringList& choices, char **clientData, long style, const wxPoint& pos): - wxDialog(parent, -1, caption, pos, wxDefaultSize, wxDEFAULT_DIALOG_STYLE|wxDIALOG_MODAL) -{ - Create(parent, message, caption, choices, clientData, style); -} - -bool wxSingleChoiceDialog::Create(wxWindow *parent, const wxString& message, const wxString& caption, - const wxStringList& choices, char **clientData, long style, const wxPoint& pos) -{ - wxString *strings = new wxString[choices.Number()]; - int i; - for ( i = 0; i < choices.Number(); i++) - { - strings[i] = (char *)choices.Nth(i)->Data(); - } - bool ans = Create(parent, message, caption, choices.Number(), strings, clientData, style, pos); - delete[] strings; - return ans; -} - -bool wxSingleChoiceDialog::Create( wxWindow *WXUNUSED(parent), const wxString& message, - const wxString& WXUNUSED(caption), int n, - const wxString *choices, char **clientData, long style, - const wxPoint& WXUNUSED(pos) ) -{ - m_dialogStyle = style; - m_selection = 0; - m_stringSelection = ""; - m_clientData = NULL; - - wxBeginBusyCursor(); - - wxSizer *topSizer = new wxSizer(this, wxSizerShrink); - topSizer->SetBorder(10, 10); - - wxRowColSizer *messageSizer = new wxRowColSizer(topSizer, wxSIZER_COLS, 100); - messageSizer->SetName("messageSizer"); - -// bool centre = ((style & wxCENTRE) == wxCENTRE); - - wxList messageList; - wxSplitMessage2(message, &messageList, this, messageSizer); - - // Insert a spacer - wxSpacingSizer *spacingSizer = new wxSpacingSizer(topSizer, wxBelow, messageSizer, 10); - - wxListBox *listBox = new wxListBox(this, wxID_LISTBOX, wxPoint(-1, -1), wxSize(240, 160), - n, choices); - listBox->SetSelection(m_selection); - if ( clientData ) - { - int i; - for ( i = 0; i < n; i++) - { - listBox->SetClientData(i, clientData[i]); - } - } - - wxRowColSizer *listBoxSizer = new wxRowColSizer(topSizer, wxSIZER_ROWS); - listBoxSizer->AddSizerChild(listBox); - listBoxSizer->SetName("listBoxSizer"); - - // Create constraints for the text sizer - wxLayoutConstraints *textC = new wxLayoutConstraints; - textC->left.SameAs (messageSizer, wxLeft); - textC->top.Below (spacingSizer); - listBoxSizer->SetConstraints(textC); - - // Insert another spacer - wxSpacingSizer *spacingSizer2 = new wxSpacingSizer(topSizer, wxBelow, listBoxSizer, 10); - spacingSizer->SetName("spacingSizer2"); - - // Insert a sizer for the buttons - wxRowColSizer *buttonSizer = new wxRowColSizer(topSizer, wxSIZER_ROWS); - buttonSizer->SetName("buttonSizer"); - - // Specify constraints for the button sizer - wxLayoutConstraints *c = new wxLayoutConstraints; - c->width.AsIs (); - c->height.AsIs (); - c->top.Below (spacingSizer2); - c->centreX.SameAs (listBoxSizer, wxCentreX); - buttonSizer->SetConstraints(c); - - wxButton *ok = NULL; - wxButton *cancel = NULL; - - if (style & wxOK) { - ok = new wxButton(this, wxID_OK, _("OK")); - buttonSizer->AddSizerChild(ok); - } - - if (style & wxCANCEL) { - cancel = new wxButton(this, wxID_CANCEL, _("Cancel")); - buttonSizer->AddSizerChild(cancel); - } - - if (ok) - { - ok->SetDefault(); - ok->SetFocus(); - } - - Layout(); - Centre(wxBOTH); - - wxEndBusyCursor(); - - return TRUE; -} - -// Set the selection -void wxSingleChoiceDialog::SetSelection(int sel) -{ - wxListBox *listBox = (wxListBox *)FindWindow(wxID_LISTBOX); - if (listBox) - { - listBox->SetSelection(sel); - } - m_selection = sel; -} - -void wxSingleChoiceDialog::OnOK(wxCommandEvent& WXUNUSED(event)) -{ - wxListBox *listBox = (wxListBox *)FindWindow(wxID_LISTBOX); - if ( listBox ) - { - m_selection = listBox->GetSelection(); - m_stringSelection = listBox->GetStringSelection(); - m_clientData = (char*)listBox->GetClientData(m_selection); - } - - EndModal(wxID_OK); -} - -void wxSingleChoiceDialog::OnListBoxDClick(wxCommandEvent& WXUNUSED(event)) -{ - wxListBox *listBox = (wxListBox *)FindWindow(wxID_LISTBOX); - if ( listBox ) - { - m_selection = listBox->GetSelection(); - m_stringSelection = listBox->GetStringSelection(); - m_clientData = (char*)listBox->GetClientData(m_selection); - } - - EndModal(wxID_OK); -} - - diff --git a/src/generic/colrdlgg.cpp b/src/generic/colrdlgg.cpp deleted file mode 100644 index daec7a16fb..0000000000 --- a/src/generic/colrdlgg.cpp +++ /dev/null @@ -1,487 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: colrdlgg.cpp -// Purpose: Choice dialogs -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "colrdlgg.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include -#include -#include "wx/utils.h" -#include "wx/intl.h" -#include "wx/dialog.h" -#include "wx/listbox.h" -#include "wx/button.h" -#include "wx/stattext.h" -#include "wx/layout.h" -#include "wx/dcclient.h" -#include "wx/slider.h" -#endif - -#include "wx/generic/colrdlgg.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxGenericColourDialog, wxDialog) - -BEGIN_EVENT_TABLE(wxGenericColourDialog, wxDialog) - EVT_BUTTON(wxID_ADD_CUSTOM, wxGenericColourDialog::OnAddCustom) - EVT_SLIDER(wxID_RED_SLIDER, wxGenericColourDialog::OnRedSlider) - EVT_SLIDER(wxID_GREEN_SLIDER, wxGenericColourDialog::OnGreenSlider) - EVT_SLIDER(wxID_BLUE_SLIDER, wxGenericColourDialog::OnBlueSlider) - EVT_PAINT(wxGenericColourDialog::OnPaint) - EVT_MOUSE_EVENTS(wxGenericColourDialog::OnMouseEvent) -END_EVENT_TABLE() - -#endif - -/* - * Generic wxColourDialog - */ - -#define NUM_COLS 48 -static wxString wxColourDialogNames[NUM_COLS]={"ORANGE", - "GOLDENROD", - "WHEAT", - "SPRING GREEN", - "SKY BLUE", - "SLATE BLUE", - "MEDIUM VIOLET RED", - "PURPLE", - - "RED", - "YELLOW", - "MEDIUM SPRING GREEN", - "PALE GREEN", - "CYAN", - "LIGHT STEEL BLUE", - "ORCHID", - "LIGHT MAGENTA", - - "BROWN", - "YELLOW", - "GREEN", - "CADET BLUE", - "MEDIUM BLUE", - "MAGENTA", - "MAROON", - "ORANGE RED", - - "FIREBRICK", - "CORAL", - "FOREST GREEN", - "AQUAMARINE", - "BLUE", - "NAVY", - "THISTLE", - "MEDIUM VIOLET RED", - - "INDIAN RED", - "GOLD", - "MEDIUM SEA GREEN", - "MEDIUM BLUE", - "MIDNIGHT BLUE", - "GREY", - "PURPLE", - "KHAKI", - - "BLACK", - "MEDIUM FOREST GREEN", - "KHAKI", - "DARK GREY", - "SEA GREEN", - "LIGHT GREY", - "MEDIUM SLATE BLUE", - "WHITE" - }; - -wxGenericColourDialog::wxGenericColourDialog(void) -{ - dialogParent = NULL; - whichKind = 1; - colourSelection = 0; -} - -wxGenericColourDialog::wxGenericColourDialog(wxWindow *parent, wxColourData *data): - wxDialog(parent, -1, "Colour", wxPoint(0, 0), wxSize(900, 900), wxDEFAULT_DIALOG_STYLE|wxDIALOG_MODAL) -{ - whichKind = 1; - colourSelection = 0; - Create(parent, data); -} - -wxGenericColourDialog::~wxGenericColourDialog(void) -{ -} - -bool wxGenericColourDialog::OnClose(void) -{ - Show(FALSE); - return FALSE; -} - -bool wxGenericColourDialog::Create(wxWindow *parent, wxColourData *data) -{ - dialogParent = parent; - - if (data) - colourData = *data; - - InitializeColours(); - CalculateMeasurements(); - CreateWidgets(); - - return TRUE; -} - -int wxGenericColourDialog::ShowModal(void) -{ - return wxDialog::ShowModal(); -} - - -// Internal functions -void wxGenericColourDialog::OnMouseEvent(wxMouseEvent& event) -{ - if (event.ButtonDown(1)) - { - int x = (int)event.GetX(); - int y = (int)event.GetY(); - - if ((x >= standardColoursRect.x && x <= (standardColoursRect.x + standardColoursRect.width)) && - (y >= standardColoursRect.y && y <= (standardColoursRect.y + standardColoursRect.height))) - { - int selX = (int)(x - standardColoursRect.x)/(smallRectangleSize.x + gridSpacing); - int selY = (int)(y - standardColoursRect.y)/(smallRectangleSize.y + gridSpacing); - int ptr = (int)(selX + selY*8); - OnBasicColourClick(ptr); - } - else if ((x >= customColoursRect.x && x <= (customColoursRect.x + customColoursRect.width)) && - (y >= customColoursRect.y && y <= (customColoursRect.y + customColoursRect.height))) - { - int selX = (int)(x - customColoursRect.x)/(smallRectangleSize.x + gridSpacing); - int selY = (int)(y - customColoursRect.y)/(smallRectangleSize.y + gridSpacing); - int ptr = (int)(selX + selY*8); - OnCustomColourClick(ptr); - } - } -} - -void wxGenericColourDialog::OnPaint(wxPaintEvent& event) -{ - wxDialog::OnPaint(event); - - wxPaintDC dc(this); - - PaintBasicColours(dc); - PaintCustomColours(dc); - PaintCustomColour(dc); - PaintHighlight(dc, TRUE); -} - -void wxGenericColourDialog::CalculateMeasurements(void) -{ - smallRectangleSize.x = 18; - smallRectangleSize.y = 14; - customRectangleSize.x = 40; - customRectangleSize.y = 40; - - gridSpacing = 6; - sectionSpacing = 15; - - standardColoursRect.x = 10; - standardColoursRect.y = 15; - standardColoursRect.width = (8*smallRectangleSize.x) + (7*gridSpacing); - standardColoursRect.height = (6*smallRectangleSize.y) + (5*gridSpacing); - - customColoursRect.x = standardColoursRect.x; - customColoursRect.y = standardColoursRect.y + standardColoursRect.height + 20; - customColoursRect.width = (8*smallRectangleSize.x) + (7*gridSpacing); - customColoursRect.height = (2*smallRectangleSize.y) + (1*gridSpacing); - - singleCustomColourRect.x = customColoursRect.width + customColoursRect.x + sectionSpacing; - singleCustomColourRect.y = 80; - singleCustomColourRect.width = customRectangleSize.x; - singleCustomColourRect.height = customRectangleSize.y; - - okButtonX = 10; - customButtonX = singleCustomColourRect.x ; - buttonY = customColoursRect.y + customColoursRect.height + 10; -} - -void wxGenericColourDialog::CreateWidgets(void) -{ - wxBeginBusyCursor(); - - wxButton *okButton = new wxButton(this, wxID_OK, _("OK"), wxPoint(okButtonX, buttonY)); - int bw, bh; - okButton->GetSize(&bw, &bh); - - (void) new wxButton(this, wxID_CANCEL, _("Cancel"), wxPoint(okButtonX + bw + 20, buttonY)); - (void) new wxButton(this, wxID_ADD_CUSTOM, _("Add to custom colours"), - wxPoint(customButtonX, buttonY)); - - int sliderX = singleCustomColourRect.x + singleCustomColourRect.width + sectionSpacing; -#ifdef __X__ - int sliderSpacing = 75; - int sliderHeight = 160; -#else - int sliderSpacing = 45; - int sliderHeight = 160; -#endif - - redSlider = new wxSlider(this, wxID_RED_SLIDER, 0, 0, 255, - wxPoint(sliderX, 10), wxSize(-1, sliderHeight), wxVERTICAL|wxSL_LABELS); - greenSlider = new wxSlider(this, wxID_GREEN_SLIDER, 0, 0, 255, - wxPoint(sliderX + sliderSpacing, 10), wxSize(-1, sliderHeight), wxVERTICAL|wxSL_LABELS); - blueSlider = new wxSlider(this, wxID_BLUE_SLIDER, 0, 0, 255, - wxPoint(sliderX + 2*sliderSpacing, 10), wxSize(-1, sliderHeight), wxVERTICAL|wxSL_LABELS); - - SetClientSize(sliderX + 3*sliderSpacing, buttonY + 40); - okButton->SetDefault(); - - Centre(wxBOTH); - - wxEndBusyCursor(); -} - -void wxGenericColourDialog::InitializeColours(void) -{ - int i; - for (i = 0; i < 48; i++) - { - wxColour *col = wxTheColourDatabase->FindColour(wxColourDialogNames[i]); - if (col) - standardColours[i].Set(col->Red(), col->Green(), col->Blue()); - else - standardColours[i].Set(0, 0, 0); - } - - for (i = 0; i < 16; i++) - customColours[i] = -/* -#ifndef __VMS__ - (wxColour&) -#endif -*/ - colourData.GetCustomColour(i); - - singleCustomColour.Set(0, 0, 0); -} - -void wxGenericColourDialog::PaintBasicColours(wxDC& dc) -{ - dc.BeginDrawing(); - - int i; - for (i = 0; i < 6; i++) - { - int j; - for (j = 0; j < 8; j++) - { - int ptr = i*8 + j; - - int x = (j*(smallRectangleSize.x+gridSpacing) + standardColoursRect.x); - int y = (i*(smallRectangleSize.y+gridSpacing) + standardColoursRect.y); - - dc.SetPen(*wxBLACK_PEN); - wxBrush brush(standardColours[ptr], wxSOLID); - dc.SetBrush(brush); - - dc.DrawRectangle( x, y, smallRectangleSize.x, smallRectangleSize.y); - } - } - dc.EndDrawing(); -} - -void wxGenericColourDialog::PaintCustomColours(wxDC& dc) -{ - dc.BeginDrawing(); - - int i; - for (i = 0; i < 2; i++) - { - int j; - for (j = 0; j < 8; j++) - { - int ptr = i*8 + j; - - int x = (j*(smallRectangleSize.x+gridSpacing)) + customColoursRect.x; - int y = (i*(smallRectangleSize.y+gridSpacing)) + customColoursRect.y; - - dc.SetPen(*wxBLACK_PEN); - - wxBrush brush(customColours[ptr], wxSOLID); - dc.SetBrush(brush); - - dc.DrawRectangle( x, y, smallRectangleSize.x, smallRectangleSize.y); - } - } - dc.EndDrawing(); -} - -void wxGenericColourDialog::PaintHighlight(wxDC& dc, bool draw) -{ - dc.BeginDrawing(); - - // Number of pixels bigger than the standard rectangle size - // for drawing a highlight - int deltaX = 2; - int deltaY = 2; - - if (whichKind == 1) - { - // Standard colours - int y = (int)(colourSelection / 8); - int x = (int)(colourSelection - (y*8)); - - x = (x*(smallRectangleSize.x + gridSpacing) + standardColoursRect.x) - deltaX; - y = (y*(smallRectangleSize.y + gridSpacing) + standardColoursRect.y) - deltaY; - - if (draw) - dc.SetPen(*wxBLACK_PEN); - else - dc.SetPen(*wxLIGHT_GREY_PEN); - - dc.SetBrush(*wxTRANSPARENT_BRUSH); - dc.DrawRectangle( x, y, (smallRectangleSize.x + (2*deltaX)), (smallRectangleSize.y + (2*deltaY))); - } - else - { - // User-defined colours - int y = (int)(colourSelection / 8); - int x = (int)(colourSelection - (y*8)); - - x = (x*(smallRectangleSize.x + gridSpacing) + customColoursRect.x) - deltaX; - y = (y*(smallRectangleSize.y + gridSpacing) + customColoursRect.y) - deltaY; - - if (draw) - dc.SetPen(*wxBLACK_PEN); - else - dc.SetPen(*wxLIGHT_GREY_PEN); - - dc.SetBrush(*wxTRANSPARENT_BRUSH); - dc.DrawRectangle( x, y, (smallRectangleSize.x + (2*deltaX)), (smallRectangleSize.y + (2*deltaY))); - } - - dc.EndDrawing(); -} - -void wxGenericColourDialog::PaintCustomColour(wxDC& dc) -{ - dc.BeginDrawing(); - - dc.SetPen(*wxBLACK_PEN); - - wxBrush *brush = new wxBrush(singleCustomColour, wxSOLID); - dc.SetBrush(*brush); - - dc.DrawRectangle( singleCustomColourRect.x, singleCustomColourRect.y, - customRectangleSize.x, customRectangleSize.y); - - dc.SetBrush(wxNullBrush); - delete brush; - - dc.EndDrawing(); -} - -void wxGenericColourDialog::OnBasicColourClick(int which) -{ - wxClientDC dc(this); - - PaintHighlight(dc, FALSE); - whichKind = 1; - colourSelection = which; - colourData.SetColour(standardColours[colourSelection]); - - PaintHighlight(dc, TRUE); -} - -void wxGenericColourDialog::OnCustomColourClick(int which) -{ - wxClientDC dc(this); - PaintHighlight(dc, FALSE); - whichKind = 2; - colourSelection = which; - colourData.SetColour(customColours[colourSelection]); - - PaintHighlight(dc, TRUE); -} - -/* -void wxGenericColourDialog::OnOk(void) -{ - Show(FALSE); -} - -void wxGenericColourDialog::OnCancel(void) -{ - colourDialogCancelled = TRUE; - Show(FALSE); -} -*/ - -void wxGenericColourDialog::OnAddCustom(wxCommandEvent& WXUNUSED(event)) -{ - wxClientDC dc(this); - if (whichKind != 2) - { - PaintHighlight(dc, FALSE); - whichKind = 2; - colourSelection = 0; - PaintHighlight(dc, TRUE); - } - - customColours[colourSelection].Set(singleCustomColour.Red(), singleCustomColour.Green(), singleCustomColour.Blue()); - colourData.SetColour(customColours[colourSelection]); - colourData.SetCustomColour(colourSelection, customColours[colourSelection]); - - PaintCustomColours(dc); -} - -void wxGenericColourDialog::OnRedSlider(wxCommandEvent& WXUNUSED(event)) -{ - if (!redSlider) - return; - - wxClientDC dc(this); - singleCustomColour.Set(redSlider->GetValue(), singleCustomColour.Green(), singleCustomColour.Blue()); - PaintCustomColour(dc); -} - -void wxGenericColourDialog::OnGreenSlider(wxCommandEvent& WXUNUSED(event)) -{ - if (!greenSlider) - return; - - wxClientDC dc(this); - singleCustomColour.Set(singleCustomColour.Red(), greenSlider->GetValue(), singleCustomColour.Blue()); - PaintCustomColour(dc); -} - -void wxGenericColourDialog::OnBlueSlider(wxCommandEvent& WXUNUSED(event)) -{ - if (!blueSlider) - return; - - wxClientDC dc(this); - singleCustomColour.Set(singleCustomColour.Red(), singleCustomColour.Green(), blueSlider->GetValue()); - PaintCustomColour(dc); -} - - diff --git a/src/generic/dcpsg.cpp b/src/generic/dcpsg.cpp deleted file mode 100644 index 55ba6d7768..0000000000 --- a/src/generic/dcpsg.cpp +++ /dev/null @@ -1,2431 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcpsg.cpp -// Purpose: Generic wxPostScriptDC implementation -// Author: Julian Smart, Robert Roebling, Markus Holzhem -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation -#pragma interface -#endif - -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ - #pragma hdrstop -#endif - -#ifndef WX_PRECOMP - #include "wx/setup.h" - #include "wx/defs.h" -#endif // WX_PRECOMP - -#if wxUSE_POSTSCRIPT - -#include "wx/dcmemory.h" -#include "wx/utils.h" -#include "wx/intl.h" -#include "wx/filedlg.h" -#include "wx/app.h" -#include "wx/msgdlg.h" -#include "wx/image.h" -#include "wx/log.h" -#include "wx/generic/dcpsg.h" -#include "wx/generic/prntdlgg.h" -#include "wx/button.h" -#include "wx/stattext.h" -#include "wx/radiobox.h" -#include "wx/textctrl.h" - -#include - -#ifdef __WXMSW__ - -#ifdef DrawText -#undef DrawText -#endif - -#ifdef StartDoc -#undef StartDoc -#endif - -#ifdef GetCharWidth -#undef GetCharWidth -#endif - -#ifdef FindWindow -#undef FindWindow -#endif - -#endif - -//----------------------------------------------------------------------------- -// start and end of document/page -//----------------------------------------------------------------------------- - -static const char *wxPostScriptHeaderEllipse = "\ -/ellipsedict 8 dict def\n\ -ellipsedict /mtrx matrix put\n\ -/ellipse {\n\ - ellipsedict begin\n\ - /endangle exch def\n\ - /startangle exch def\n\ - /yrad exch def\n\ - /xrad exch def\n\ - /y exch def\n\ - /x exch def\n\ - /savematrix mtrx currentmatrix def\n\ - x y translate\n\ - xrad yrad scale\n\ - 0 0 1 startangle endangle arc\n\ - savematrix setmatrix\n\ - end\n\ - } def\n\ -"; - -static const char *wxPostScriptHeaderEllipticArc= "\ -/ellipticarcdict 8 dict def\n\ -ellipticarcdict /mtrx matrix put\n\ -/ellipticarc\n\ -{ ellipticarcdict begin\n\ - /do_fill exch def\n\ - /endangle exch def\n\ - /startangle exch def\n\ - /yrad exch def\n\ - /xrad exch def \n\ - /y exch def\n\ - /x exch def\n\ - /savematrix mtrx currentmatrix def\n\ - x y translate\n\ - xrad yrad scale\n\ - do_fill { 0 0 moveto } if\n\ - 0 0 1 startangle endangle arc\n\ - savematrix setmatrix\n\ - do_fill { fill }{ stroke } ifelse\n\ - end\n\ -} def\n"; - -static const char *wxPostScriptHeaderSpline = "\ -/DrawSplineSection {\n\ - /y3 exch def\n\ - /x3 exch def\n\ - /y2 exch def\n\ - /x2 exch def\n\ - /y1 exch def\n\ - /x1 exch def\n\ - /xa x1 x2 x1 sub 0.666667 mul add def\n\ - /ya y1 y2 y1 sub 0.666667 mul add def\n\ - /xb x3 x2 x3 sub 0.666667 mul add def\n\ - /yb y3 y2 y3 sub 0.666667 mul add def\n\ - x1 y1 lineto\n\ - xa ya xb yb x3 y3 curveto\n\ - } def\n\ -"; - -static const char *wxPostScriptHeaderColourImage = "\ -% define 'colorimage' if it isn't defined\n\ -% ('colortogray' and 'mergeprocs' come from xwd2ps\n\ -% via xgrab)\n\ -/colorimage where % do we know about 'colorimage'?\n\ - { pop } % yes: pop off the 'dict' returned\n\ - { % no: define one\n\ - /colortogray { % define an RGB->I function\n\ - /rgbdata exch store % call input 'rgbdata'\n\ - rgbdata length 3 idiv\n\ - /npixls exch store\n\ - /rgbindx 0 store\n\ - 0 1 npixls 1 sub {\n\ - grays exch\n\ - rgbdata rgbindx get 20 mul % Red\n\ - rgbdata rgbindx 1 add get 32 mul % Green\n\ - rgbdata rgbindx 2 add get 12 mul % Blue\n\ - add add 64 idiv % I = .5G + .31R + .18B\n\ - put\n\ - /rgbindx rgbindx 3 add store\n\ - } for\n\ - grays 0 npixls getinterval\n\ - } bind def\n\ -\n\ - % Utility procedure for colorimage operator.\n\ - % This procedure takes two procedures off the\n\ - % stack and merges them into a single procedure.\n\ -\n\ - /mergeprocs { % def\n\ - dup length\n\ - 3 -1 roll\n\ - dup\n\ - length\n\ - dup\n\ - 5 1 roll\n\ - 3 -1 roll\n\ - add\n\ - array cvx\n\ - dup\n\ - 3 -1 roll\n\ - 0 exch\n\ - putinterval\n\ - dup\n\ - 4 2 roll\n\ - putinterval\n\ - } bind def\n\ -\n\ - /colorimage { % def\n\ - pop pop % remove 'false 3' operands\n\ - {colortogray} mergeprocs\n\ - image\n\ - } bind def\n\ - } ifelse % end of 'false' case\n\ -"; - -static char wxPostScriptHeaderReencodeISO1[] = - "\n/reencodeISO {\n" -"dup dup findfont dup length dict begin\n" -"{ 1 index /FID ne { def }{ pop pop } ifelse } forall\n" -"/Encoding ISOLatin1Encoding def\n" -"currentdict end definefont\n" -"} def\n" -"/ISOLatin1Encoding [\n" -"/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n" -"/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n" -"/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n" -"/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n" -"/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright\n" -"/parenleft/parenright/asterisk/plus/comma/minus/period/slash\n" -"/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon\n" -"/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N\n" -"/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright\n" -"/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m\n" -"/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde\n" -"/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n" -"/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef\n" -"/.notdef/dotlessi/grave/acute/circumflex/tilde/macron/breve\n" -"/dotaccent/dieresis/.notdef/ring/cedilla/.notdef/hungarumlaut\n"; - -static char wxPostScriptHeaderReencodeISO2[] = -"/ogonek/caron/space/exclamdown/cent/sterling/currency/yen/brokenbar\n" -"/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot\n" -"/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior\n" -"/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine\n" -"/guillemotright/onequarter/onehalf/threequarters/questiondown\n" -"/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla\n" -"/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex\n" -"/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis\n" -"/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute\n" -"/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis\n" -"/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave\n" -"/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex\n" -"/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis\n" -"/yacute/thorn/ydieresis\n" - "] def\n\n"; - -//------------------------------------------------------------------------------- -// wxPostScriptDC -//------------------------------------------------------------------------------- - -wxPostScriptDC::wxPostScriptDC () -{ - m_pstream = (ofstream*) NULL; - - m_currentRed = 0; - m_currentGreen = 0; - m_currentBlue = 0; - - m_pageNumber = 0; - - m_clipping = FALSE; - - m_underlinePosition = 0.0; - m_underlineThickness = 0.0; - - m_signX = 1; // default x-axis left to right - m_signY = -1; // default y-axis bottom up -> top down -} - -wxPostScriptDC::wxPostScriptDC (const wxString& file, bool interactive, wxWindow *parent) -{ - m_pstream = (ofstream*) NULL; - - m_currentRed = 0; - m_currentGreen = 0; - m_currentBlue = 0; - - m_pageNumber = 0; - - m_clipping = FALSE; - - m_underlinePosition = 0.0; - m_underlineThickness = 0.0; - - m_signX = 1; // default x-axis left to right - m_signY = -1; // default y-axis bottom up -> top down - - Create(file, interactive, parent); -} - -bool wxPostScriptDC::Create(const wxString& file, bool interactive, wxWindow *parent) -{ - m_isInteractive = interactive; - - m_title = ""; - m_filename = file; - -#ifdef __WXMSW__ - // Can only send to file in Windows - wxThePrintSetupData->SetPrinterMode(PS_FILE); -#endif - - if (m_isInteractive) - { - if ((m_ok = PrinterDialog (parent) ) == FALSE) return FALSE; - } - else - { - m_ok = TRUE; - } - - return m_ok; -} - -wxPostScriptDC::~wxPostScriptDC () -{ - if (m_pstream) delete m_pstream; -} - -bool wxPostScriptDC::Ok() const -{ - return m_ok; -} - -bool wxPostScriptDC::PrinterDialog(wxWindow *parent) -{ - wxPostScriptPrintDialog dialog( parent, _("Printer Settings"), wxPoint(150, 150), wxSize(400, 400), - wxDEFAULT_DIALOG_STYLE | wxDIALOG_MODAL ); - m_ok = (dialog.ShowModal () == wxID_OK); - - if (!m_ok) return FALSE; - - if ((m_filename == "") && - (wxThePrintSetupData->GetPrinterMode() == PS_PREVIEW || - wxThePrintSetupData->GetPrinterMode() == PS_PRINTER)) - { -// steve, 05.09.94 -#ifdef __VMS__ - wxThePrintSetupData->SetPrinterFile("preview"); -#else - // For PS_PRINTER action this depends on a Unix-style print spooler - // since the wx_printer_file can be destroyed during a session - // @@@ TODO: a Windows-style answer for non-Unix - char userId[256]; - wxGetUserId (userId, sizeof (userId) / sizeof (char)); - char tmp[256]; - strcpy (tmp, "/tmp/preview_"); - strcat (tmp, userId); - wxThePrintSetupData->SetPrinterFile(tmp); -#endif - char tmp2[256]; - strcpy(tmp2, wxThePrintSetupData->GetPrinterFile()); - strcat (tmp2, ".ps"); - wxThePrintSetupData->SetPrinterFile(tmp2); - m_filename = tmp2; - } - else if ((m_filename == "") && (wxThePrintSetupData->GetPrinterMode() == PS_FILE)) - { - wxString file = wxSaveFileSelector (_("PostScript"), "ps"); - if ( file.IsEmpty() ) - { - m_ok = FALSE; - return FALSE; - } - - wxThePrintSetupData->SetPrinterFile(file); - m_filename = file; - m_ok = TRUE; - } - - return m_ok; -} - -void wxPostScriptDC::SetClippingRegion (long x, long y, long w, long h) -{ - wxCHECK_RET( m_ok && m_pstream, "invalid postscript dc" ); - - if (m_clipping) return; - - wxDC::SetClippingRegion( x, y, w, h ); - - m_clipping = TRUE; - *m_pstream << "gsave\n" - << "newpath\n" - << XLOG2DEV(x) << " " << YLOG2DEV(y) << " moveto\n" - << XLOG2DEV(x+w) << " " << YLOG2DEV(y) << " lineto\n" - << XLOG2DEV(x+w) << " " << YLOG2DEV(y+h) << " lineto\n" - << XLOG2DEV(x) << " " << YLOG2DEV(y+h) << " lineto\n" - << "closepath clip newpath\n"; -} - -void wxPostScriptDC::SetClippingRegion( const wxRegion &WXUNUSED(region) ) -{ -} - -void wxPostScriptDC::DestroyClippingRegion() -{ - wxCHECK_RET( m_ok && m_pstream, "invalid postscript dc" ); - - wxDC::DestroyClippingRegion(); - - if (m_clipping) - { - m_clipping = FALSE; - *m_pstream << "grestore\n"; - } -} - -void wxPostScriptDC::Clear() -{ - wxFAIL_MSG( "wxPostScriptDC::Clear not implemented." ); -} - -void wxPostScriptDC::FloodFill (long WXUNUSED(x), long WXUNUSED(y), const wxColour &WXUNUSED(col), int WXUNUSED(style)) -{ - wxFAIL_MSG( "wxPostScriptDC::FloodFill not implemented." ); -} - -bool wxPostScriptDC::GetPixel (long WXUNUSED(x), long WXUNUSED(y), wxColour * WXUNUSED(col)) const -{ - wxFAIL_MSG( "wxPostScriptDC::GetPixel not implemented." ); - return FALSE; -} - -void wxPostScriptDC::CrossHair (long WXUNUSED(x), long WXUNUSED(y)) -{ - wxFAIL_MSG( "wxPostScriptDC::CrossHair not implemented." ); -} - -void wxPostScriptDC::DrawLine (long x1, long y1, long x2, long y2) -{ - wxCHECK_RET( m_ok && m_pstream, "invalid postscript dc" ); - - if (m_pen.GetStyle() == wxTRANSPARENT) return; - - SetPen( m_pen ); - - *m_pstream << "newpath\n" - << XLOG2DEV(x1) << " " << YLOG2DEV (y1) << " moveto\n" - << XLOG2DEV(x2) << " " << YLOG2DEV (y2) << " lineto\n" - << "stroke\n"; - - CalcBoundingBox( x1, y1 ); - CalcBoundingBox( x2, y2 ); -} - -#define RAD2DEG 57.29577951308 - -void wxPostScriptDC::DrawArc (long x1, long y1, long x2, long y2, long xc, long yc) -{ - wxCHECK_RET( m_ok && m_pstream, "invalid postscript dc" ); - - long dx = x1 - xc; - long dy = y1 - yc; - long radius = (long) sqrt(dx*dx+dy*dy); - double alpha1, alpha2; - - if (x1 == x2 && y1 == y2) - { - alpha1 = 0.0; - alpha2 = 360.0; - } else if (radius == 0.0) - { - alpha1 = alpha2 = 0.0; - } else - { - alpha1 = (x1 - xc == 0) ? - (y1 - yc < 0) ? 90.0 : -90.0 : - -atan2(double(y1-yc), double(x1-xc)) * RAD2DEG; - alpha2 = (x2 - xc == 0) ? - (y2 - yc < 0) ? 90.0 : -90.0 : - -atan2(double(y2-yc), double(x2-xc)) * RAD2DEG; - } - while (alpha1 <= 0) alpha1 += 360; - while (alpha2 <= 0) alpha2 += 360; // adjust angles to be between - while (alpha1 > 360) alpha1 -= 360; // 0 and 360 degree - while (alpha2 > 360) alpha2 -= 360; - - if (m_brush.GetStyle() != wxTRANSPARENT) - { - SetBrush( m_brush ); - *m_pstream << "newpath\n" - << XLOG2DEV(xc) << " " - << YLOG2DEV(yc) << " " - << XLOG2DEVREL(radius) << " " - << YLOG2DEVREL(radius) << " " - << alpha1 << " " - << alpha2 << " ellipse\n" - << XLOG2DEV(xc) << " " - << YLOG2DEV(yc) << " lineto\n" - << "closepath\n" - << "fill\n"; - } - - if (m_pen.GetStyle() != wxTRANSPARENT) - { - SetPen( m_pen ); - *m_pstream << "newpath\n" - << XLOG2DEV(xc) << " " - << YLOG2DEV(yc) << " " - << XLOG2DEVREL(radius) << " " - << YLOG2DEVREL(radius) << " " - << alpha1 << " " - << alpha2 << " ellipse\n" - << "stroke\n"; - } - - CalcBoundingBox( xc-radius, yc-radius ); - CalcBoundingBox( xc+radius, yc+radius ); -} - -void wxPostScriptDC::DrawEllipticArc(long x,long y,long w,long h,double sa,double ea) -{ - wxCHECK_RET( m_ok && m_pstream, "invalid postscript dc" ); - - if (sa>=360 || sa<=-360) sa=sa-int(sa/360)*360; - if (ea>=360 || ea<=-360) ea=ea-int(ea/360)*360; - if (sa<0) sa+=360; - if (ea<0) ea+=360; - - if (sa==ea) - { - DrawEllipse(x,y,w,h); - return; - } - - if (m_brush.GetStyle () != wxTRANSPARENT) - { - SetBrush( m_brush ); - - *m_pstream << "newpath\n" - << XLOG2DEV(x+w/2) << " " << YLOG2DEV(y+h/2) << " " - << XLOG2DEVREL(w/2) << " " << YLOG2DEVREL(h/2) << " " - << int(sa) <<" "<< int(ea) << " true ellipticarc\n"; - - CalcBoundingBox( x ,y ); - CalcBoundingBox( x+w, y+h ); - } - - if (m_pen.GetStyle () != wxTRANSPARENT) - { - SetPen( m_pen ); - - *m_pstream << "newpath\n" - << XLOG2DEV(x+w/2) << " " << YLOG2DEV(y+h/2) << " " - << XLOG2DEVREL(w/2) << " " << XLOG2DEVREL(h/2) << " " - << int(sa) <<" "<< int(ea) << " false ellipticarc\n"; - - CalcBoundingBox( x, y ); - CalcBoundingBox( x+w, y+h ); - } -} - -void wxPostScriptDC::DrawPoint (long x, long y) -{ - wxCHECK_RET( m_ok && m_pstream, "invalid postscript dc" ); - - if (m_pen.GetStyle() == wxTRANSPARENT) return; - - SetPen (m_pen); - - *m_pstream << "newpath\n" - << XLOG2DEV(x) << " " << YLOG2DEV (y) << " moveto\n" - << XLOG2DEV(x+1) << " " << YLOG2DEV (y) << " lineto\n" - << "stroke\n"; - - CalcBoundingBox( x, y ); -} - -void wxPostScriptDC::DrawPolygon (int n, wxPoint points[], long xoffset, long yoffset, int WXUNUSED(fillStyle)) -{ - wxCHECK_RET( m_ok && m_pstream, "invalid postscript dc" ); - - if (n <= 0) return; - - if (m_brush.GetStyle () != wxTRANSPARENT) - { - SetBrush( m_brush ); - - *m_pstream << "newpath\n"; - - long xx = XLOG2DEV(points[0].x + xoffset); - long yy = YLOG2DEV(points[0].y + yoffset); - *m_pstream << xx << " " << yy << " moveto\n"; - CalcBoundingBox( points[0].x + xoffset, points[0].y + yoffset ); - - for (int i = 1; i < n; i++) - { - xx = XLOG2DEV(points[i].x + xoffset); - yy = YLOG2DEV(points[i].y + yoffset); - *m_pstream << xx << " " << yy << " lineto\n"; - CalcBoundingBox( points[i].x + xoffset, points[i].y + yoffset); - } - *m_pstream << "fill\n"; - } - - if (m_pen.GetStyle () != wxTRANSPARENT) - { - SetPen( m_pen ); - - *m_pstream << "newpath\n"; - - long xx = XLOG2DEV(points[0].x + xoffset); - long yy = YLOG2DEV(points[0].y + yoffset); - *m_pstream << xx << " " << yy << " moveto\n"; - CalcBoundingBox( points[0].x + xoffset, points[0].y + yoffset ); - - for (int i = 1; i < n; i++) - { - xx = XLOG2DEV(points[i].x + xoffset); - yy = YLOG2DEV(points[i].y + yoffset); - *m_pstream << xx << " " << yy << " lineto\n"; - CalcBoundingBox( points[i].x + xoffset, points[i].y + yoffset); - } - - *m_pstream << "stroke\n"; - } -} - -void wxPostScriptDC::DrawLines (int n, wxPoint points[], long xoffset, long yoffset) -{ - wxCHECK_RET( m_ok && m_pstream, "invalid postscript dc" ); - - if (m_pen.GetStyle() == wxTRANSPARENT) - return; - if (n <= 0) - return; - - SetPen (m_pen); - - int i; - for ( i =0; i= 128 ) - { - // Cope with character codes > 127 - char tmp[5]; - sprintf(tmp, "\\%o", c); - *m_pstream << tmp; - } - else - *m_pstream << (char) c; - } - - *m_pstream << ")" << " show\n"; - - if (m_font.GetUnderlined()) - { - long uy = (long)(y + size - m_underlinePosition); - long w, h; - GetTextExtent(text, &w, &h); - - *m_pstream << "gsave " << XLOG2DEV(x) << " " << YLOG2DEV(uy) - << " moveto\n" - << (long)m_underlineThickness << " setlinewidth " - << XLOG2DEV(x + w) << " " << YLOG2DEV(uy) - << " lineto stroke grestore\n"; - } - - CalcBoundingBox( x, y ); - CalcBoundingBox( x + size * text.Length() * 2/3 , y ); -} - - -void wxPostScriptDC::SetBackground (const wxBrush& brush) -{ - m_backgroundBrush = brush; -} - -void wxPostScriptDC::SetLogicalFunction (int WXUNUSED(function)) -{ - wxFAIL_MSG( "wxPostScriptDC::SetLogicalFunction not implemented." ); -} - -void wxPostScriptDC::DrawSpline( wxList *points ) -{ - wxCHECK_RET( m_ok && m_pstream, "invalid postscript dc" ); - - SetPen( m_pen ); - - double a, b, c, d, x1, y1, x2, y2, x3, y3; - wxPoint *p, *q; - - wxNode *node = points->First(); - p = (wxPoint *)node->Data(); - x1 = p->x; - y1 = p->y; - - node = node->Next(); - p = (wxPoint *)node->Data(); - c = p->x; - d = p->y; - x3 = a = (double)(x1 + c) / 2; - y3 = b = (double)(y1 + d) / 2; - - *m_pstream << "newpath " - << XLOG2DEV((long)x1) << " " << YLOG2DEV((long)y1) << " moveto " - << XLOG2DEV((long)x3) << " " << YLOG2DEV((long)y3) << " lineto\n"; - - CalcBoundingBox( (long)x1, (long)y1 ); - CalcBoundingBox( (long)x3, (long)y3 ); - - while ((node = node->Next()) != NULL) - { - q = (wxPoint *)node->Data(); - - x1 = x3; - y1 = y3; - x2 = c; - y2 = d; - c = q->x; - d = q->y; - x3 = (double)(x2 + c) / 2; - y3 = (double)(y2 + d) / 2; - *m_pstream << XLOG2DEV((long)x1) << " " << YLOG2DEV((long)y1) << " " - << XLOG2DEV((long)x2) << " " << YLOG2DEV((long)y2) << " " - << XLOG2DEV((long)x3) << " " << YLOG2DEV((long)y3) << " DrawSplineSection\n"; - - CalcBoundingBox( (long)x1, (long)y1 ); - CalcBoundingBox( (long)x3, (long)y3 ); - } - -/* - At this point, (x2,y2) and (c,d) are the position of the - next-to-last and last point respectively, in the point list -*/ - - *m_pstream << XLOG2DEV((long)c) << " " << YLOG2DEV((long)d) << " lineto stroke\n"; -} - -long wxPostScriptDC::GetCharWidth () -{ - // Chris Breeze: reasonable approximation using wxMODERN/Courier - return (long) (GetCharHeight() * 72.0 / 120.0); -} - - -void wxPostScriptDC::SetAxisOrientation( bool xLeftRight, bool yBottomUp ) -{ - wxCHECK_RET( m_ok && m_pstream, "invalid postscript dc" ); - - m_signX = (xLeftRight ? 1 : -1); - m_signY = (yBottomUp ? 1 : -1); - - // FIXME there is no such function in MSW -#ifndef __WXMSW__ - ComputeScaleAndOrigin(); -#endif -} - -void wxPostScriptDC::SetDeviceOrigin( long x, long y ) -{ - wxCHECK_RET( m_ok && m_pstream, "invalid postscript dc" ); - - int h = 0; - int w = 0; - GetSize( &w, &h ); - - wxDC::SetDeviceOrigin( x, h-y ); -} - -void wxPostScriptDC::GetSize(int* width, int* height) const -{ - const char *paperType = wxThePrintSetupData->GetPaperName(); - - if (!paperType) paperType = _("A4 210 x 297 mm"); - - wxPrintPaperType *paper = wxThePrintPaperDatabase->FindPaperType(paperType); - - if (!paper) paper = wxThePrintPaperDatabase->FindPaperType(_("A4 210 x 297 mm")); - - if (paper) - { - if (width) *width = paper->widthPixels; - if (height) *height = paper->heightPixels; - } - else - { - if (width) *width = 595; - if (height) *height = 842; - } -} - -bool wxPostScriptDC::StartDoc (const wxString& message) -{ - wxCHECK_MSG( m_ok, FALSE, "invalid postscript dc" ); - - if (m_filename == "") - { - m_filename = wxGetTempFileName("ps"); - wxThePrintSetupData->SetPrinterFile((char *)(const char *)m_filename); - m_ok = TRUE; - } - else - { - wxThePrintSetupData->SetPrinterFile((char *)(const char *)m_filename); - } - - m_pstream = new ofstream (wxThePrintSetupData->GetPrinterFile()); - - if (!m_pstream || !m_pstream->good()) - { - wxMessageBox (_("Cannot open file!"), _("Error"), wxOK); - m_ok = FALSE; - return FALSE; - } - - m_ok = TRUE; - - SetBrush( *wxBLACK_BRUSH ); - SetPen( *wxBLACK_PEN ); - SetBackground( *wxWHITE_BRUSH ); - SetTextForeground( *wxBLACK ); - - // set origin according to paper size - SetDeviceOrigin( 0,0 ); - - wxPageNumber = 1; - m_pageNumber = 1; - m_title = message; - return TRUE; -} - -void wxPostScriptDC::EndDoc () -{ - wxCHECK_RET( m_ok && m_pstream, "invalid postscript dc" ); - - if (m_clipping) - { - m_clipping = FALSE; - *m_pstream << "grestore\n"; - } - - if (m_pstream) - { - delete m_pstream; - m_pstream = (ofstream *) NULL; - } - - char *header_file = wxGetTempFileName("ps"); - - m_pstream = new ofstream( header_file ); - - *m_pstream << "%!PS-Adobe-2.0\n"; /* PostScript magic strings */ - *m_pstream << "%%Title: " << (const char *) m_title << "\n"; - *m_pstream << "%%Creator: " << wxTheApp->argv[0] << "\n"; - *m_pstream << "%%CreationDate: " << wxNow() << "\n"; - - char userID[256]; - if ( wxGetEmailAddress(userID, sizeof(userID)) ) - { - *m_pstream << "%%For: " << (char *)userID; - char userName[245]; - if (wxGetUserName(userName, sizeof(userName))) - *m_pstream << " (" << (char *)userName << ")"; - *m_pstream << "\n"; - } - else if ( wxGetUserName(userID, sizeof(userID)) ) - { - *m_pstream << "%%For: " << (char *)userID << "\n"; - } - - // THE FOLLOWING HAS BEEN CONTRIBUTED BY Andy Fyfe - - long wx_printer_translate_x, wx_printer_translate_y; - double wx_printer_scale_x, wx_printer_scale_y; - wxThePrintSetupData->GetPrinterTranslation(&wx_printer_translate_x, &wx_printer_translate_y); - wxThePrintSetupData->GetPrinterScaling(&wx_printer_scale_x, &wx_printer_scale_y); - - if (wxThePrintSetupData->GetPrinterOrientation() == PS_LANDSCAPE) - { - *m_pstream << "%%Orientation: Landscape\n"; - } - else - { - *m_pstream << "%%Orientation: Portrait\n"; - } - - // Compute the bounding box. Note that it is in the default user - // coordinate system, thus we have to convert the values. - long llx = (long) ((XLOG2DEV(m_minX)+wx_printer_translate_x)*wx_printer_scale_x); - long lly = (long) ((YLOG2DEV(m_minY)+wx_printer_translate_y)*wx_printer_scale_y); - long urx = (long) ((XLOG2DEV(m_maxX)+wx_printer_translate_x)*wx_printer_scale_x); - long ury = (long) ((YLOG2DEV(m_maxY)+wx_printer_translate_y)*wx_printer_scale_y); - - // If we're landscape, our sense of "x" and "y" is reversed. - if (wxThePrintSetupData->GetPrinterOrientation() == PS_LANDSCAPE) - { - long tmp; - tmp = llx; llx = lly; lly = tmp; - tmp = urx; urx = ury; ury = tmp; - - // We need either the two lines that follow, or we need to subtract - // min_x from real_translate_y, which is commented out below. - llx = llx - (long)(m_minX*wx_printer_scale_y); - urx = urx - (long)(m_minX*wx_printer_scale_y); - } - - // The Adobe specifications call for integers; we round as to make - // the bounding larger. - *m_pstream << "%%BoundingBox: " - << floor((double)llx) << " " << floor((double)lly) << " " - << ceil((double)urx) << " " << ceil((double)ury) << "\n"; - *m_pstream << "%%Pages: " << (wxPageNumber - 1) << "\n"; - *m_pstream << "%%EndComments\n\n"; - - // To check the correctness of the bounding box, postscript commands - // to draw a box corresponding to the bounding box are generated below. - // But since we typically don't want to print such a box, the postscript - // commands are generated within comments. These lines appear before any - // adjustment of scale, rotation, or translation, and hence are in the - // default user coordinates. - *m_pstream << "% newpath\n"; - *m_pstream << "% " << llx << " " << lly << " moveto\n"; - *m_pstream << "% " << urx << " " << lly << " lineto\n"; - *m_pstream << "% " << urx << " " << ury << " lineto\n"; - *m_pstream << "% " << llx << " " << ury << " lineto closepath stroke\n"; - - *m_pstream << "%%BeginProlog\n"; - *m_pstream << wxPostScriptHeaderEllipse; - *m_pstream << wxPostScriptHeaderEllipticArc; - *m_pstream << wxPostScriptHeaderColourImage; - *m_pstream << wxPostScriptHeaderReencodeISO1; - *m_pstream << wxPostScriptHeaderReencodeISO2; - - if (wxPostScriptHeaderSpline) - *m_pstream << wxPostScriptHeaderSpline; - *m_pstream << "%%EndProlog\n"; - - delete m_pstream; - m_pstream = (ofstream *) NULL; - - char *tmp_file = wxGetTempFileName("ps"); - - // Paste header Before wx_printer_file - wxConcatFiles (header_file, wxThePrintSetupData->GetPrinterFile(), tmp_file); - wxRemoveFile (header_file); - wxRemoveFile (wxThePrintSetupData->GetPrinterFile()); - wxRenameFile(tmp_file, wxThePrintSetupData->GetPrinterFile()); - -#if defined(__X__) || defined(__WXGTK__) - if (m_ok) - { - switch (wxThePrintSetupData->GetPrinterMode()) { - case PS_PREVIEW: - { - char *argv[3]; - argv[0] = wxThePrintSetupData->GetPrintPreviewCommand(); - argv[1] = wxThePrintSetupData->GetPrinterFile(); - argv[2] = (char *) NULL; - wxExecute (argv, TRUE); - wxRemoveFile(wxThePrintSetupData->GetPrinterFile()); - } - break; - - case PS_PRINTER: - { - char *argv[4]; - int argc = 0; - argv[argc++] = wxThePrintSetupData->GetPrinterCommand(); - - // !SM! If we simply assign to argv[1] here, if printer options - // are blank, we get an annoying and confusing message from lpr. - char * opts = wxThePrintSetupData->GetPrinterOptions(); - if (opts && *opts) - argv[argc++] = opts; - - argv[argc++] = wxThePrintSetupData->GetPrinterFile(); - argv[argc++] = (char *) NULL; - wxExecute (argv, TRUE); - wxRemoveFile(wxThePrintSetupData->GetPrinterFile()); - } - break; - - case PS_FILE: - break; - } - } -#endif -} - -void wxPostScriptDC::StartPage () -{ - wxCHECK_RET( m_ok && m_pstream, "invalid postscript dc" ); - - *m_pstream << "%%Page: " << (wxPageNumber++) << "\n"; - -// *m_pstream << "matrix currentmatrix\n"; - - // Added by Chris Breeze - - // Each page starts with an "initgraphics" which resets the - // transformation and so we need to reset the origin - // (and rotate the page for landscape printing) - -/* - m_scaleFactor = 1.0; - m_logicalOriginX = 0; - m_logicalOriginY = 0; -*/ - // Output scaling - long translate_x, translate_y; - double scale_x, scale_y; - wxThePrintSetupData->GetPrinterTranslation(&translate_x, &translate_y); - wxThePrintSetupData->GetPrinterScaling(&scale_x, &scale_y); - - if (wxThePrintSetupData->GetPrinterOrientation() == PS_LANDSCAPE) - { - translate_y -= m_maxY; - *m_pstream << "90 rotate\n"; - } - - *m_pstream << scale_x << " " << scale_y << " scale\n"; - *m_pstream << translate_x << " " << translate_y << " translate\n"; -} - -void wxPostScriptDC::EndPage () -{ - wxCHECK_RET( m_ok && m_pstream, "invalid postscript dc" ); - - *m_pstream << "showpage\n"; -} - -bool wxPostScriptDC::Blit( long WXUNUSED(xdest), long WXUNUSED(ydest), - long WXUNUSED(fwidth), long WXUNUSED(fheight), - wxDC *WXUNUSED(source), - long WXUNUSED(xsrc), long WXUNUSED(ysrc), - int WXUNUSED(rop), bool WXUNUSED(useMask) ) -{ - wxCHECK_MSG( m_ok && m_pstream, FALSE, "invalid postscript dc" ); - - wxFAIL_MSG( "wxPostScriptDC::Blit no yet implemented." ); - - return TRUE; -} - -long wxPostScriptDC::GetCharHeight () -{ - if (m_font.Ok()) - return m_font.GetPointSize(); - else - return 12; -} - -void wxPostScriptDC::GetTextExtent (const wxString& string, long *x, long *y, - long *descent, long *externalLeading, wxFont *theFont, - bool WXUNUSED(use16)) -{ - wxFont *fontToUse = theFont; - - if (!fontToUse) fontToUse = (wxFont*) &m_font; - - wxCHECK_RET( fontToUse, "GetTextExtent: no font defined" ); - wxCHECK_RET( x, "GetTextExtent: x == NULL" ); - wxCHECK_RET( y, "GetTextExtent: y == NULL" ); - -#if !USE_AFM_FOR_POSTSCRIPT - /* Provide a VERY rough estimate (avoid using it). - * Produces accurate results for mono-spaced font - * such as Courier (aka wxMODERN) */ - - int height = 12; - if (fontToUse) - { - height = fontToUse->GetPointSize(); - } - *x = strlen (string) * height * 72 / 120; - *y = (long) (height * 1.32); /* allow for descender */ - if (descent) *descent = 0; - if (externalLeading) *externalLeading = 0; -#else - - /* method for calculating string widths in postscript: - / read in the AFM (adobe font metrics) file for the - / actual font, parse it and extract the character widths - / and also the descender. this may be improved, but for now - / it works well. the AFM file is only read in if the - / font is changed. this may be chached in the future. - / calls to GetTextExtent with the font unchanged are rather - / efficient!!! - / - / for each font and style used there is an AFM file necessary. - / currently i have only files for the roman font family. - / I try to get files for the other ones! - / - / CAVE: the size of the string is currently always calculated - / in 'points' (1/72 of an inch). this should later on be - / changed to depend on the mapping mode. - / CAVE: the path to the AFM files must be set before calling this - / function. this is usually done by a call like the following: - / wxSetAFMPath("d:\\wxw161\\afm\\"); - / - / example: - / - / wxPostScriptDC dc(NULL, TRUE); - / if (dc.Ok()){ - / wxSetAFMPath("d:\\wxw161\\afm\\"); - / dc.StartDoc("Test"); - / dc.StartPage(); - / long w,h; - / dc.SetFont(new wxFont(10, wxROMAN, wxNORMAL, wxNORMAL)); - / dc.GetTextExtent("Hallo",&w,&h); - / dc.EndPage(); - / dc.EndDoc(); - / } - / - / by steve (stefan.hammes@urz.uni-heidelberg.de) - / created: 10.09.94 - / updated: 14.05.95 */ - - /* these static vars are for storing the state between calls */ - static int lastFamily= INT_MIN; - static int lastSize= INT_MIN; - static int lastStyle= INT_MIN; - static int lastWeight= INT_MIN; - static int lastDescender = INT_MIN; - static int lastWidths[256]; /* widths of the characters */ - - /* get actual parameters */ - const int Family = fontToUse->GetFamily(); - const int Size = fontToUse->GetPointSize(); - const int Style = fontToUse->GetStyle(); - const int Weight = fontToUse->GetWeight(); - - /* if we have another font, read the font-metrics */ - if (Family!=lastFamily || Size!=lastSize || Style!=lastStyle || Weight!=lastWeight) - { - /* store actual values */ - lastFamily = Family; - lastSize = Size; - lastStyle = Style; - lastWeight = Weight; - - char *name = (char*) NULL; - - switch (Family) - { - case wxMODERN: - { - if ((Style == wxITALIC) && (Weight == wxBOLD)) name = "CourBoO"; - else if ((Style != wxITALIC) && (Weight == wxBOLD)) name = "CourBo"; - else if ((Style == wxITALIC) && (Weight != wxBOLD)) name = "Cour0"; - else name = "Cour"; - } - break; - case wxROMAN: - { - if ((Style == wxITALIC) && (Weight == wxBOLD)) name = "TimesBoO"; - else if ((Style != wxITALIC) && (Weight == wxBOLD)) name = "TimesBo"; - else if ((Style == wxITALIC) && (Weight != wxBOLD)) name = "TimesO"; - else if name = "TimesRo"; /* no typo */ - } - break; - default: - { - if ((Style == wxITALIC) && (Weight == wxBOLD)) name = "HelvBoO"; - else if ((Style != wxITALIC) && (Weight == wxBOLD)) name = "HelvBo"; - else if ((Style == wxITALIC) && (Weight != wxBOLD)) name = "Helv0"; - else if ((Style != wxITALIC) && (Weight != wxBOLD)) name = "Helv"; - } - break; - } - - /* get the directory of the AFM files */ - char afmName[256]; - afmName[0] = 0; - if (wxGetAFMPath()) strcpy( afmName, wxGetAFMPath() ); - - /* 2. open and process the file - / a short explanation of the AFM format: - / we have for each character a line, which gives its size - / e.g.: - / - / C 63 ; WX 444 ; N question ; B 49 -14 395 676 ; - / - / that means, we have a character with ascii code 63, and width - / (444/1000 * fontSize) points. - / the other data is ignored for now! - / - / when the font has changed, we read in the right AFM file and store the - / character widths in an array, which is processed below (see point 3.). */ - - /* new elements JC Sun Aug 25 23:21:44 MET DST 1996 */ - - strcat(afmName,name); - strcat(afmName,".afm"); - FILE *afmFile = fopen(afmName,"r"); - if ( afmFile==NULL ) - { - wxLogDebug( "GetTextExtent: can't open AFM file '%s'\n", afmName ); - wxLogDebug( " using approximate values\n"); - for (int i=0; i<256; i++) lastWidths[i] = 500; /* an approximate value */ - lastDescender = -150; /* dito. */ - } - else - { - /* init the widths array */ - for(int i=0; i<256; i++) lastWidths[i] = INT_MIN; - /* some variables for holding parts of a line */ - char cString[10],semiString[10],WXString[10],descString[20]; - char upString[30], utString[30], encString[50]; - char line[256]; - int ascii,cWidth; - /* read in the file and parse it */ - while(fgets(line,sizeof(line),afmFile)!=NULL) - { - /* A.) check for descender definition */ - if (strncmp(line,"Descender",9)==0) - { - if ((sscanf(line,"%s%d",descString,&lastDescender)!=2) || - (strcmp(descString,"Descender")!=0)) - { - wxLogDebug( "AFM-file '%s': line '%s' has error (bad descender)\n", afmName,line ); - } - } - /* JC 1.) check for UnderlinePosition */ - else if(strncmp(line,"UnderlinePosition",17)==0) - { - if ((sscanf(line,"%s%lf",upString,&UnderlinePosition)!=2) || - (strcmp(upString,"UnderlinePosition")!=0)) - { - wxLogDebug( "AFM-file '%s': line '%s' has error (bad UnderlinePosition)\n", afmName, line ); - } - } - /* JC 2.) check for UnderlineThickness */ - else if(strncmp(line,"UnderlineThickness",18)==0) - { - if ((sscanf(line,"%s%lf",utString,&UnderlineThickness)!=2) || - (strcmp(utString,"UnderlineThickness")!=0)) - { - wxLogDebug( "AFM-file '%s': line '%s' has error (bad UnderlineThickness)\n", afmName, line ); - } - } - /* JC 3.) check for EncodingScheme */ - else if(strncmp(line,"EncodingScheme",14)==0) - { - if ((sscanf(line,"%s%s",utString,encString)!=2) || - (strcmp(utString,"EncodingScheme")!=0)) - { - wxLogDebug("AFM-file '%s': line '%s' has error (bad EncodingScheme)\n", afmName, line ); - } - else if (strncmp(encString, "AdobeStandardEncoding", 21)) - { - wxLogDebug( "AFM-file '%s': line '%s' has error (unsupported EncodingScheme %s)\n", - afmName,line, encString); - } - } - /* B.) check for char-width */ - else if(strncmp(line,"C ",2)==0) - { - if (sscanf(line,"%s%d%s%s%d",cString,&ascii,semiString,WXString,&cWidth)!=5) - { - wxLogDebug("AFM-file '%s': line '%s' has an error (bad character width)\n",afmName,line); - } - if(strcmp(cString,"C")!=0 || strcmp(semiString,";")!=0 || strcmp(WXString,"WX")!=0) - { - wxLogDebug("AFM-file '%s': line '%s' has a format error\n",afmName,line); - } - /* printf(" char '%c'=%d has width '%d'\n",ascii,ascii,cWidth); */ - if (ascii>=0 && ascii<256) - { - lastWidths[ascii] = cWidth; /* store width */ - } - else - { - /* MATTHEW: this happens a lot; don't print an error */ - /* wxLogDebug("AFM-file '%s': ASCII value %d out of range\n",afmName,ascii); */ - } - } - /* C.) ignore other entries. */ - } - fclose(afmFile); - } - /* hack to compute correct values for german 'Umlaute' - / the correct way would be to map the character names - / like 'adieresis' to corresp. positions of ISOEnc and read - / these values from AFM files, too. Maybe later ... */ - lastWidths[196] = lastWidths['A']; // Ä - lastWidths[228] = lastWidths['a']; // ä - lastWidths[214] = lastWidths['O']; // Ö - lastWidths[246] = lastWidths['o']; // ö - lastWidths[220] = lastWidths['U']; // Ü - lastWidths[252] = lastWidths['u']; // ü - lastWidths[223] = lastWidths[251]; // ß - } - - /* JC: calculate UnderlineThickness/UnderlinePosition */ - m_underlinePosition = m_underlinePosition * fontToUse->GetPointSize() / 1000.0f; - m_underlineThickness = m_underlineThickness * fontToUse->GetPointSize() / 1000.0f * m_scaleFactor; - - /* 3. now the font metrics are read in, calc size this - / is done by adding the widths of the characters in the - / string. they are given in 1/1000 of the size! */ - - long widthSum=0; - long height=Size; /* by default */ - unsigned char *p; - for(p=(unsigned char *)(const char *)string; *p; p++) - { - if(lastWidths[*p]== INT_MIN) - { - wxLogDebug("GetTextExtent: undefined width for character '%c' (%d)\n", *p,*p); - widthSum += (long)(lastWidths[' ']/1000.0F * Size); /* assume space */ - } - else - { - widthSum += (long)((lastWidths[*p]/1000.0F)*Size); - } - } - - /* add descender to height (it is usually a negative value) */ - if (lastDescender!=INT_MIN) - { - height += (long)(((-lastDescender)/1000.0F) * Size); /* MATTHEW: forgot scale */ - } - - /* return size values */ - *x = widthSum; - *y = height; - - /* return other parameters */ - if (descent) - { - if(lastDescender!=INT_MIN) - { - *descent = (long)(((-lastDescender)/1000.0F) * Size); /* MATTHEW: forgot scale */ - } - else - { - *descent = 0; - } - } - - /* currently no idea how to calculate this! */ - if (externalLeading) *externalLeading = 0; - -#endif -} - -void wxPostScriptDC::GetSizeMM(long *width, long *height) const -{ - const char *paperType = wxThePrintSetupData->GetPaperName(); - - if (!paperType) paperType = _("A4 210 x 297 mm"); - - wxPrintPaperType *paper = wxThePrintPaperDatabase->FindPaperType(paperType); - - if (!paper) paper = wxThePrintPaperDatabase->FindPaperType(_("A4 210 x 297 mm")); - - if (paper) - { - if (width) *width = paper->widthMM; - if (height) *height = paper->heightMM; - } - else - { - if (width) *width = 210; - if (height) *height = 297; - } -} - -// Determine the Default Postscript Previewer -// available on the platform -#if defined(__SUN__) && defined(__XVIEW__) -// OpenWindow/NeWS's Postscript Previewer -# define PS_VIEWER_PROG "pageview" -#elif defined(__VMS__) -#define PS_VIEWER_PROG "view/format=ps/select=x_display" -#elif defined(__SGI__) -// SGI's Display Postscript Previewer -//# define PS_VIEWER_PROG "dps" -# define PS_VIEWER_PROG "xpsview" -#elif defined(__X__) || defined(__WXGTK__) -// Front-end to ghostscript -# define PS_VIEWER_PROG "ghostview" -#else -// Windows ghostscript/ghostview -# define PS_VIEWER_PROG NULL -#endif - -wxPrintSetupData *wxThePrintSetupData = (wxPrintSetupData *) NULL; - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxPostScriptModule, wxModule) -IMPLEMENT_DYNAMIC_CLASS(wxPostScriptDC, wxDC) -IMPLEMENT_DYNAMIC_CLASS(wxPrintSetupData, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxPrintPaperType, wxObject) -#endif - -// Redundant now I think -#if 1 -IMPLEMENT_CLASS(wxPostScriptPrintDialog, wxDialog) - -wxPostScriptPrintDialog::wxPostScriptPrintDialog (wxWindow *parent, const wxString& title, - const wxPoint& pos, const wxSize& size, long style): - wxDialog(parent, -1, title, pos, size, style) -{ - wxBeginBusyCursor(); - - char buf[100]; - int yPos = 40; - wxString - *orientation = new wxString[2], - *print_modes = new wxString[3]; - int features; - long wx_printer_translate_x, wx_printer_translate_y; - double wx_printer_scale_x, wx_printer_scale_y; - - orientation[0] = _("Portrait"); - orientation[1] = _("Landscape"); - - print_modes[0] = _("Send to Printer"); - print_modes[1] = _("Print to File"); - print_modes[2] = _("Preview Only"); - - - - wxButton *okBut = new wxButton (this, wxID_OK, _("OK"), wxPoint(5, 5)); - (void) new wxButton (this, wxID_CANCEL, _("Cancel"), wxPoint(40, 5)); - okBut->SetDefault(); - - -#if defined(__WXGTK__) || defined (__WXMOTIF__) - (void) new wxStaticText( this, -1, _("Printer Command: "), - wxPoint(5, yPos) ); - (void) new wxTextCtrl( this, wxID_PRINTER_COMMAND, wxThePrintSetupData->GetPrinterCommand(), - wxPoint(100, yPos), wxSize(100, -1) ); - - (void) new wxStaticText( this, -1, _("Printer Options: "), - wxPoint(210, yPos) ); - (void) new wxTextCtrl( this, wxID_PRINTER_OPTIONS, wxThePrintSetupData->GetPrinterOptions(), - wxPoint(305, yPos), wxSize(150, -1) ); - - yPos += 40; -#endif - - - wxRadioBox *radio0 = new wxRadioBox(this, wxID_PRINTER_ORIENTATION, "Orientation: ", wxPoint(5, yPos), wxSize(-1,-1), - 2,orientation,2,wxRA_SPECIFY_ROWS); - radio0->SetSelection((int)wxThePrintSetupData->GetPrinterOrientation() - 1); - - // @@@ Configuration hook - if (wxThePrintSetupData->GetPrintPreviewCommand() == NULL) - wxThePrintSetupData->SetPrintPreviewCommand(PS_VIEWER_PROG); - - wxGetResource ("wxWindows", "PSView", &wxThePrintSetupData->previewCommand); - - features = (wxThePrintSetupData->GetPrintPreviewCommand() && - *wxThePrintSetupData->GetPrintPreviewCommand()) ? 3 : 2; - - wxRadioBox *radio1 = new wxRadioBox(this, wxID_PRINTER_MODES, _("PostScript:"), - wxPoint(150, yPos), - wxSize(-1,-1), features, - print_modes, features, wxRA_SPECIFY_ROWS); - -#ifdef __WXMSW__ - radio1->Enable(0, FALSE); - if (wxThePrintSetupData->GetPrintPreviewCommand() && *wxThePrintSetupData->GetPrintPreviewCommand()) - radio1->Enable(2, FALSE); -#endif - - radio1->SetSelection((int)wxThePrintSetupData->GetPrinterMode()); - wxThePrintSetupData->GetPrinterTranslation(&wx_printer_translate_x, &wx_printer_translate_y); - wxThePrintSetupData->GetPrinterScaling(&wx_printer_scale_x, &wx_printer_scale_y); - - sprintf (buf, "%.2f", wx_printer_scale_x); - - yPos += 90; - (void) new wxStaticText(this, -1, _("X Scaling"), wxPoint(5, yPos)); - /* wxTextCtrl *text1 = */ (void) new wxTextCtrl(this, wxID_PRINTER_X_SCALE, buf, wxPoint(100, yPos), wxSize(100, -1)); - - sprintf (buf, "%.2f", wx_printer_scale_y); - (void) new wxStaticText(this, -1, _("Y Scaling"), wxPoint(220, yPos)); - /* wxTextCtrl *text2 = */ (void) new wxTextCtrl(this, wxID_PRINTER_Y_SCALE, buf, wxPoint(320, yPos), wxSize(100, -1)); - - yPos += 25; - - (void) new wxStaticText(this, -1, _("X Translation"), wxPoint(5, yPos)); - sprintf (buf, "%.2ld", wx_printer_translate_x); - /* wxTextCtrl *text3 = */ (void) new wxTextCtrl(this, wxID_PRINTER_X_TRANS, buf, wxPoint(100, yPos), wxSize(100, -1)); - - (void) new wxStaticText(this, -1, _("Y Translation"), wxPoint(220, yPos)); - sprintf (buf, "%.2ld", wx_printer_translate_y); - /* wxTextCtrl *text4 = */ (void) new wxTextCtrl(this, wxID_PRINTER_Y_TRANS, buf, wxPoint(320, yPos), wxSize(100, -1)); - - Fit (); - - delete[] orientation; - delete[] print_modes; - - wxEndBusyCursor(); -} - -int wxPostScriptPrintDialog::ShowModal () -{ - if ( wxDialog::ShowModal() == wxID_OK ) - { -// wxTextCtrl *text0 = (wxTextCtrl *)FindWindow(wxID_PRINTER_OPTIONS); - wxTextCtrl *text1 = (wxTextCtrl *)FindWindow(wxID_PRINTER_X_SCALE); - wxTextCtrl *text2 = (wxTextCtrl *)FindWindow(wxID_PRINTER_Y_SCALE); - wxTextCtrl *text3 = (wxTextCtrl *)FindWindow(wxID_PRINTER_X_TRANS); - wxTextCtrl *text4 = (wxTextCtrl *)FindWindow(wxID_PRINTER_Y_TRANS); -// wxTextCtrl *text_prt = (wxTextCtrl *)FindWindow(wxID_PRINTER_COMMAND); - wxRadioBox *radio0 = (wxRadioBox *)FindWindow(wxID_PRINTER_ORIENTATION); - wxRadioBox *radio1 = (wxRadioBox *)FindWindow(wxID_PRINTER_MODES); - - StringToDouble (WXSTRINGCAST text1->GetValue (), &wxThePrintSetupData->printerScaleX); - StringToDouble (WXSTRINGCAST text2->GetValue (), &wxThePrintSetupData->printerScaleY); - StringToLong (WXSTRINGCAST text3->GetValue (), &wxThePrintSetupData->printerTranslateX); - StringToLong (WXSTRINGCAST text4->GetValue (), &wxThePrintSetupData->printerTranslateY); - -#ifdef __X__ - // wxThePrintSetupData->SetPrinterOptions(WXSTRINGCAST text0->GetValue ()); - // wxThePrintSetupData->SetPrinterCommand(WXSTRINGCAST text_prt->GetValue ()); -#endif - - wxThePrintSetupData->SetPrinterOrientation((radio0->GetSelection() == 1 ? PS_LANDSCAPE : PS_PORTRAIT)); - - // C++ wants this - switch ( radio1->GetSelection() ) { - case 0: wxThePrintSetupData->SetPrinterMode(PS_PRINTER); break; - case 1: wxThePrintSetupData->SetPrinterMode(PS_FILE); break; - case 2: wxThePrintSetupData->SetPrinterMode(PS_PREVIEW); break; - } - return wxID_OK; - } - return wxID_CANCEL; -} -#endif - // 0 (redundant) - -// PostScript printer settings -// RETAINED FOR BACKWARD COMPATIBILITY -void wxSetPrinterCommand(const char *cmd) -{ - wxThePrintSetupData->SetPrinterCommand(cmd); -} - -void wxSetPrintPreviewCommand(const char *cmd) -{ - wxThePrintSetupData->SetPrintPreviewCommand(cmd); -} - -void wxSetPrinterOptions(const char *flags) -{ - wxThePrintSetupData->SetPrinterOptions(flags); -} - -void wxSetPrinterFile(const char *f) -{ - wxThePrintSetupData->SetPrinterFile(f); -} - -void wxSetPrinterOrientation(int orient) -{ - wxThePrintSetupData->SetPrinterOrientation(orient); -} - -void wxSetPrinterScaling(double x, double y) -{ - wxThePrintSetupData->SetPrinterScaling(x, y); -} - -void wxSetPrinterTranslation(long x, long y) -{ - wxThePrintSetupData->SetPrinterTranslation(x, y); -} - -// 1 = Preview, 2 = print to file, 3 = send to printer -void wxSetPrinterMode(int mode) -{ - wxThePrintSetupData->SetPrinterMode(mode); -} - -void wxSetAFMPath(const char *f) -{ - wxThePrintSetupData->SetAFMPath(f); -} - -// Get current values -char *wxGetPrinterCommand() -{ - return wxThePrintSetupData->GetPrinterCommand(); -} - -char *wxGetPrintPreviewCommand() -{ - return wxThePrintSetupData->GetPrintPreviewCommand(); -} - -char *wxGetPrinterOptions() -{ - return wxThePrintSetupData->GetPrinterOptions(); -} - -char *wxGetPrinterFile() -{ - return wxThePrintSetupData->GetPrinterFile(); -} - -int wxGetPrinterOrientation() -{ - return wxThePrintSetupData->GetPrinterOrientation(); -} - -void wxGetPrinterScaling(double* x, double* y) -{ - wxThePrintSetupData->GetPrinterScaling(x, y); -} - -void wxGetPrinterTranslation(long *x, long *y) -{ - wxThePrintSetupData->GetPrinterTranslation(x, y); -} - -int wxGetPrinterMode() -{ - return wxThePrintSetupData->GetPrinterMode(); -} - -char *wxGetAFMPath() -{ - return wxThePrintSetupData->GetAFMPath(); -} - -/* - * Print setup data - */ - -wxPrintSetupData::wxPrintSetupData() -{ - printerCommand = (char *) NULL; - previewCommand = (char *) NULL; - printerFlags = (char *) NULL; - printerOrient = PS_PORTRAIT; - printerScaleX = (double)1.0; - printerScaleY = (double)1.0; - printerTranslateX = 0; - printerTranslateY = 0; - // 1 = Preview, 2 = print to file, 3 = send to printer - printerMode = 3; - afmPath = (char *) NULL; - paperName = (char *) NULL; - printColour = TRUE; - printerFile = (char *) NULL; -} - -wxPrintSetupData::~wxPrintSetupData() -{ - if (printerCommand) - delete[] printerCommand; - if (previewCommand) - delete[] previewCommand; - if (printerFlags) - delete[] printerFlags; - if (afmPath) - delete[] afmPath; - if (paperName) - delete[] paperName; - if (printerFile) - delete[] printerFile; -} - -void wxPrintSetupData::SetPrinterCommand(const char *cmd) -{ - if (cmd == printerCommand) - return; - - if (printerCommand) - delete[] printerCommand; - if (cmd) - printerCommand = copystring(cmd); - else - printerCommand = (char *) NULL; -} - -void wxPrintSetupData::SetPrintPreviewCommand(const char *cmd) -{ - if (cmd == previewCommand) - return; - - if (previewCommand) - delete[] previewCommand; - if (cmd) - previewCommand = copystring(cmd); - else - previewCommand = (char *) NULL; -} - -void wxPrintSetupData::SetPaperName(const char *name) -{ - if (name == paperName) - return; - - if (paperName) - delete[] paperName; - if (name) - paperName = copystring(name); - else - paperName = (char *) NULL; -} - -void wxPrintSetupData::SetPrinterOptions(const char *flags) -{ - if (printerFlags == flags) - return; - - if (printerFlags) - delete[] printerFlags; - if (flags) - printerFlags = copystring(flags); - else - printerFlags = (char *) NULL; -} - -void wxPrintSetupData::SetPrinterFile(const char *f) -{ - if (f == printerFile) - return; - - if (printerFile) - delete[] printerFile; - if (f) - printerFile = copystring(f); - else - printerFile = (char *) NULL; -} - -void wxPrintSetupData::SetPrinterOrientation(int orient) -{ - printerOrient = orient; -} - -void wxPrintSetupData::SetPrinterScaling(double x, double y) -{ - printerScaleX = x; - printerScaleY = y; -} - -void wxPrintSetupData::SetPrinterTranslation(long x, long y) -{ - printerTranslateX = x; - printerTranslateY = y; -} - -// 1 = Preview, 2 = print to file, 3 = send to printer -void wxPrintSetupData::SetPrinterMode(int mode) -{ - printerMode = mode; -} - -void wxPrintSetupData::SetAFMPath(const char *f) -{ - if (f == afmPath) - return; - - if (afmPath) - delete[] afmPath; - if (f) - afmPath = copystring(f); - else - afmPath = (char *) NULL; -} - -void wxPrintSetupData::SetColour(bool col) -{ - printColour = col; -} - -// Get current values -char *wxPrintSetupData::GetPrinterCommand() -{ - return printerCommand; -} - -char *wxPrintSetupData::GetPrintPreviewCommand() -{ - return previewCommand; -} - -char *wxPrintSetupData::GetPrinterOptions() -{ - return printerFlags; -} - -char *wxPrintSetupData::GetPrinterFile() -{ - return printerFile; -} - -char *wxPrintSetupData::GetPaperName() -{ - return paperName; -} - -int wxPrintSetupData::GetPrinterOrientation() -{ - return printerOrient; -} - -void wxPrintSetupData::GetPrinterScaling(double *x, double *y) -{ - *x = printerScaleX; - *y = printerScaleY; -} - -void wxPrintSetupData::GetPrinterTranslation(long *x, long *y) -{ - *x = printerTranslateX; - *y = printerTranslateY; -} - -int wxPrintSetupData::GetPrinterMode() -{ - return printerMode; -} - -char *wxPrintSetupData::GetAFMPath() -{ - return afmPath; -} - -bool wxPrintSetupData::GetColour() -{ - return printColour; -} - -void wxPrintSetupData::operator=(wxPrintSetupData& data) -{ - SetPrinterCommand(data.GetPrinterCommand()); - SetPrintPreviewCommand(data.GetPrintPreviewCommand()); - SetPrinterOptions(data.GetPrinterOptions()); - long x, y; - data.GetPrinterTranslation(&x, &y); - SetPrinterTranslation(x, y); - - double x1, y1; - data.GetPrinterScaling(&x1, &y1); - SetPrinterScaling(x1, y1); - - SetPrinterOrientation(data.GetPrinterOrientation()); - SetPrinterMode(data.GetPrinterMode()); - SetAFMPath(data.GetAFMPath()); - SetPaperName(data.GetPaperName()); - SetColour(data.GetColour()); -} - -void wxInitializePrintSetupData(bool init) -{ - if (init) - { - wxThePrintSetupData = new wxPrintSetupData; - - wxThePrintSetupData->SetPrintPreviewCommand(PS_VIEWER_PROG); - wxThePrintSetupData->SetPrinterOrientation(PS_PORTRAIT); - wxThePrintSetupData->SetPrinterMode(PS_PREVIEW); - wxThePrintSetupData->SetPaperName(_("A4 210 x 297 mm")); - - // Could have a .ini file to read in some defaults - // - and/or use environment variables, e.g. WXWIN -#ifdef __VMS__ - wxThePrintSetupData->SetPrinterCommand("print"); - wxThePrintSetupData->SetPrinterOptions("/nonotify/queue=psqueue"); - wxThePrintSetupData->SetAFMPath("sys$ps_font_metrics:"); -#endif -#ifdef __WXMSW__ - wxThePrintSetupData->SetPrinterCommand("print"); - wxThePrintSetupData->SetAFMPath("c:\\windows\\system\\"); - wxThePrintSetupData->SetPrinterOptions(NULL); -#endif -#if !defined(__VMS__) && !defined(__WXMSW__) - wxThePrintSetupData->SetPrinterCommand("lpr"); - wxThePrintSetupData->SetPrinterOptions((char *) NULL); - wxThePrintSetupData->SetAFMPath((char *) NULL); -#endif - } - else - { - if (wxThePrintSetupData) - delete wxThePrintSetupData; - wxThePrintSetupData = (wxPrintSetupData *) NULL; - } -} - -/* - * Paper size database for PostScript - */ - -wxPrintPaperType::wxPrintPaperType(const char *name, int wmm, int hmm, int wp, int hp) -{ - widthMM = wmm; - heightMM = hmm; - widthPixels = wp; - heightPixels = hp; - pageName = copystring(name); -} - -wxPrintPaperType::~wxPrintPaperType() -{ - delete[] pageName; -} - -/* - * Print paper database for PostScript - */ - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxPrintPaperDatabase, wxList) -#endif - -wxPrintPaperDatabase::wxPrintPaperDatabase():wxList(wxKEY_STRING) -{ - DeleteContents(TRUE); -} - -wxPrintPaperDatabase::~wxPrintPaperDatabase() -{ -} - -void wxPrintPaperDatabase::CreateDatabase() -{ - // Need correct values for page size in pixels. - // Each unit is one 'point' = 1/72 of an inch. - // NOTE: WE NEED ALSO TO MAKE ADJUSTMENTS WHEN TRANSLATING - // in wxPostScriptDC code, so we can start from top left. - // So access this database and translate by appropriate number - // of points for this paper size. OR IS IT OK ALREADY? - // Can't remember where the PostScript origin is by default. - // Heck, someone will know how to make it hunky-dory... - // JACS 25/5/95 - - AddPaperType(_("A4 210 x 297 mm"), 210, 297, 595, 842); - AddPaperType(_("A3 297 x 420 mm"), 297, 420, 842, 1191); - AddPaperType(_("Letter 8 1/2 x 11 in"), 216, 279, 612, 791); - AddPaperType(_("Legal 8 1/2 x 14 in"), 216, 356, 612, 1009); - -/* - This is for 100 ppi - - AddPaperType(_("A4 210 x 297 mm"), 210, 297, 210*4, 297*4 ); - AddPaperType(_("A3 297 x 420 mm"), 297, 420, 297*4, 420*4 ); - AddPaperType(_("Letter 8 1/2 x 11 in"), 216, 279, 216*4, 279*4 ); - AddPaperType(_("Legal 8 1/2 x 14 in"), 216, 356, 216*4, 356*4 ); -*/ -} - -void wxPrintPaperDatabase::ClearDatabase() -{ - Clear(); -} - -void wxPrintPaperDatabase::AddPaperType(const char *name, int wmm, int hmm, int wp, int hp) -{ - Append(name, new wxPrintPaperType(name, wmm, hmm, wp, hp)); -} - -wxPrintPaperType *wxPrintPaperDatabase::FindPaperType(const char *name) -{ - wxNode *node = Find(name); - if (node) - return (wxPrintPaperType *)node->Data(); - else - return (wxPrintPaperType *) NULL; -} - -/* - * Initialization/cleanup module - */ - -bool wxPostScriptModule::OnInit() -{ - wxInitializePrintSetupData(); - wxThePrintPaperDatabase = new wxPrintPaperDatabase; - wxThePrintPaperDatabase->CreateDatabase(); - - return TRUE; -} - -void wxPostScriptModule::OnExit() -{ - wxInitializePrintSetupData(FALSE); - delete wxThePrintPaperDatabase; - wxThePrintPaperDatabase = NULL; -} - -#endif - // wxUSE_POSTSCRIPT diff --git a/src/generic/dirdlgg.cpp b/src/generic/dirdlgg.cpp deleted file mode 100644 index da985fa3af..0000000000 --- a/src/generic/dirdlgg.cpp +++ /dev/null @@ -1,502 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dirdlg.cpp -// Purpose: wxDirDialog -// Author: Harm van der Heijden and Robert Roebling -// Modified by: -// Created: 12/12/98 -// Copyright: (c) Harm van der Heijden and Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dirdlgg.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#include "wx/defs.h" -#include "wx/utils.h" -#include "wx/dialog.h" -#include "wx/button.h" -#include "wx/layout.h" -#include "wx/msgdlg.h" -#include "wx/textdlg.h" -#include "wx/filefn.h" -#include "wx/cmndata.h" -#include "wx/gdicmn.h" -#include "wx/intl.h" -#include "wx/imaglist.h" - -#include "wx/generic/dirdlgg.h" - -// If compiled under Windows, this macro can cause problems -#ifdef GetFirstChild -#undef GetFirstChild -#endif - -/* XPM */ -static char * icon1_xpm[] = { -/* width height ncolors chars_per_pixel */ -"16 16 6 1", -/* colors */ -" s None c None", -". c #000000", -"+ c #c0c0c0", -"@ c #808080", -"# c #ffff00", -"$ c #ffffff", -/* pixels */ -" ", -" @@@@@ ", -" @#+#+#@ ", -" @#+#+#+#@@@@@@ ", -" @$$$$$$$$$$$$@.", -" @$#+#+#+#+#+#@.", -" @$+#+#+#+#+#+@.", -" @$#+#+#+#+#+#@.", -" @$+#+#+#+#+#+@.", -" @$#+#+#+#+#+#@.", -" @$+#+#+#+#+#+@.", -" @$#+#+#+#+#+#@.", -" @@@@@@@@@@@@@@.", -" ..............", -" ", -" "}; - -/* XPM */ -static char * icon2_xpm[] = { -/* width height ncolors chars_per_pixel */ -"16 16 6 1", -/* colors */ -" s None c None", -". c #000000", -"+ c #c0c0c0", -"@ c #808080", -"# c #ffff00", -"$ c #ffffff", -/* pixels */ -" ", -" @@@@@ ", -" @$$$$$@ ", -" @$#+#+#$@@@@@@ ", -" @$+#+#+$$$$$$@.", -" @$#+#+#+#+#+#@.", -"@@@@@@@@@@@@@#@.", -"@$$$$$$$$$$@@+@.", -"@$#+#+#+#+##.@@.", -" @$#+#+#+#+#+.@.", -" @$+#+#+#+#+#.@.", -" @$+#+#+#+##@..", -" @@@@@@@@@@@@@.", -" .............", -" ", -" "}; - -static const int ID_DIRCTRL = 1000; -static const int ID_TEXTCTRL = 1001; -static const int ID_OK = 1002; -static const int ID_CANCEL = 1003; -static const int ID_NEW = 1004; -//static const int ID_CHECK = 1005; - -//----------------------------------------------------------------------------- -// wxDirItemData -//----------------------------------------------------------------------------- - -class wxDirItemData : public wxTreeItemData -{ -public: - wxDirItemData(wxString& path, wxString& name); - ~wxDirItemData(); - bool HasSubDirs(); - wxString *m_path, *m_name; - bool m_isHidden; - bool m_hasSubDirs; -}; - -//----------------------------------------------------------------------------- -// wxDirCtrl -//----------------------------------------------------------------------------- - -class wxDirCtrl: public wxTreeCtrl -{ - DECLARE_DYNAMIC_CLASS(wxDirCtrl) - - public: - bool m_showHidden; - wxTreeItemId m_rootId; - - wxDirCtrl(void); - wxDirCtrl(wxWindow *parent, const wxWindowID id = -1, - const wxString &dir = "/", - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - const long style = wxTR_HAS_BUTTONS, - const wxString& name = "wxTreeCtrl" ); - void OnExpandItem(wxTreeEvent &event ); - void OnCollapseItem(wxTreeEvent &event ); - void ShowHidden( const bool yesno ); - DECLARE_EVENT_TABLE() - protected: - void CreateItems(const wxTreeItemId &parent); - void SetupSections(void); - wxArrayString m_paths, m_names; -}; - -//----------------------------------------------------------------------------- -// wxDirItemData -//----------------------------------------------------------------------------- - -wxDirItemData::wxDirItemData(wxString& path, wxString& name) -{ - m_path = new wxString(path); - m_name = new wxString(name); - /* Insert logic to detect hidden files here - * In UnixLand we just check whether the first char is a dot - * For FileNameFromPath read LastDirNameInThisPath ;-) */ - // m_isHidden = (bool)(wxFileNameFromPath(*m_path)[0] == '.'); - m_isHidden = FALSE; - m_hasSubDirs = HasSubDirs(); -} - -wxDirItemData:: ~wxDirItemData() -{ - delete m_path; - delete m_name; -} - -bool wxDirItemData::HasSubDirs() -{ - wxString search = *m_path + "/*"; - wxString path = wxFindFirstFile( search, wxDIR ); - return (bool)(!path.IsNull()); -} - -//----------------------------------------------------------------------------- -// wxDirCtrl -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxDirCtrl,wxTreeCtrl) - -BEGIN_EVENT_TABLE(wxDirCtrl,wxTreeCtrl) - EVT_TREE_ITEM_EXPANDING (-1, wxDirCtrl::OnExpandItem) - EVT_TREE_ITEM_COLLAPSED (-1, wxDirCtrl::OnCollapseItem) -END_EVENT_TABLE() - -wxDirCtrl::wxDirCtrl(void) -{ - m_showHidden = FALSE; -}; - -wxDirCtrl::wxDirCtrl(wxWindow *parent, const wxWindowID id, const wxString &WXUNUSED(dir), - const wxPoint& pos, const wxSize& size, - const long style, const wxString& name ) - : - wxTreeCtrl( parent, id, pos, size, style, wxDefaultValidator, name ) -{ - m_imageListNormal = new wxImageList(16, 16, TRUE); - m_imageListNormal->Add(wxICON(icon1)); - m_imageListNormal->Add(wxICON(icon2)); - SetImageList(m_imageListNormal); - - m_showHidden = FALSE; - m_rootId = AddRoot("Sections"); - SetItemHasChildren(m_rootId); - Expand(m_rootId); // automatically expand first level -}; - -/* Quick macro. Don't worry, I'll #undef it later */ -#define ADD_SECTION(a,b) \ - if (wxPathExists((a))) { m_paths.Add( (a) ); m_names.Add( (b) ); }; - -void wxDirCtrl::SetupSections() -{ - wxString home; - - m_paths.Clear(); - m_names.Clear(); - ADD_SECTION("/", _("The Computer") ) - wxGetHomeDir(&home); - ADD_SECTION(home, _("My Home") ) - ADD_SECTION("/mnt", _("Mounted Devices") ) - ADD_SECTION("/usr", _("User") ) - ADD_SECTION("/usr/local", _("User Local") ) - ADD_SECTION("/var", _("Variables") ) - ADD_SECTION("/etc", _("Etcetera") ) - ADD_SECTION("/tmp", _("Temporary") ) -} -#undef ADD_SECTION - -void wxDirCtrl::CreateItems(const wxTreeItemId &parent) -{ - wxTreeItemId id; - wxDirItemData *dir_item; - -// wxASSERT(m_paths.Count() == m_names.Count()); ? - - for (unsigned int i=0; im_hasSubDirs) SetItemHasChildren(id); - } -} - -void wxDirCtrl::OnExpandItem(wxTreeEvent &event ) -{ - if (event.GetItem() == m_rootId) - { - SetupSections(); - CreateItems(m_rootId); - return; - }; - - // This may take a longish time. Go to busy cursor - wxBeginBusyCursor(); - - wxDirItemData *data = (wxDirItemData *)GetItemData(event.GetItem()); - wxASSERT(data); - - wxString search,path,filename; - - m_paths.Clear(); - m_names.Clear(); - search = *(data->m_path) + "/*"; - for (path = wxFindFirstFile( search, wxDIR ); !path.IsNull(); - path=wxFindNextFile() ) { - filename = wxFileNameFromPath( path ); - /* Don't add "." and ".." to the tree. I think wxFindNextFile - * also checks this, but I don't quite understand what happens - * there. Also wxFindNextFile seems to swallow hidden dirs */ - if ((filename != ".") && (filename != "..")) { - m_paths.Add(path); - m_names.Add(filename); - } - } - CreateItems(event.GetItem()); - wxEndBusyCursor(); - - SortChildren( event.GetItem() ); -}; - - -void wxDirCtrl::OnCollapseItem(wxTreeEvent &event ) -{ - wxTreeItemId child, parent = event.GetItem(); - long cookie; - /* Workaround because DeleteChildren has disapeared (why?) and - * CollapseAndReset doesn't work as advertised (deletes parent too) */ - child = GetFirstChild(parent, cookie); - while (child.IsOk()) { - Delete(child); - /* Not GetNextChild below, because the cookie mechanism can't - * handle disappearing children! */ - child = GetFirstChild(parent, cookie); - } -}; - -//----------------------------------------------------------------------------- -// wxDirDialog -//----------------------------------------------------------------------------- - - -#if !USE_SHARED_LIBRARY -IMPLEMENT_CLASS(wxDirDialog, wxDialog) -#else -IMPLEMENT_DYNAMIC_CLASS( wxDirDialog, wxDialog ) -#endif - -BEGIN_EVENT_TABLE( wxDirDialog, wxDialog ) - EVT_TREE_KEY_DOWN (ID_DIRCTRL, wxDirDialog::OnTreeKeyDown) - EVT_TREE_SEL_CHANGED (ID_DIRCTRL, wxDirDialog::OnTreeSelected) - EVT_SIZE ( wxDirDialog::OnSize) - EVT_BUTTON (ID_OK, wxDirDialog::OnOK) - EVT_BUTTON (ID_CANCEL, wxDirDialog::OnCancel) - EVT_BUTTON (ID_NEW, wxDirDialog::OnNew) - EVT_TEXT_ENTER (ID_TEXTCTRL, wxDirDialog::OnOK) - // EVT_CHECKBOX (ID_CHECK, wxDirDialog::OnCheck) -END_EVENT_TABLE() - -wxDirDialog::wxDirDialog(wxWindow *parent, const wxString& message, - const wxString& defaultPath, long style, - const wxPoint& pos) : - wxDialog(parent, -1, message, pos, wxSize(300,300), - wxDEFAULT_DIALOG_STYLE|wxDIALOG_MODAL) -{ - m_message = message; - m_dialogStyle = style; - m_parent = parent; - - m_path = defaultPath; - - m_dir = new wxDirCtrl( this, ID_DIRCTRL, "/", wxDefaultPosition, wxDefaultSize, wxTR_HAS_BUTTONS | wxSUNKEN_BORDER ); - m_input = new wxTextCtrl( this, ID_TEXTCTRL, m_path, wxDefaultPosition ); - // m_check = new wxCheckBox( this, ID_CHECK, _("Show hidden") ); - m_ok = new wxButton( this, ID_OK, _("OK") ); - m_cancel = new wxButton( this, ID_CANCEL, _("Cancel") ); - m_new = new wxButton( this, ID_NEW, _("New...") ); - - // m_check->SetValue(TRUE); - m_ok->SetDefault(); - m_dir->SetFocus(); - - doSize(); -} - -void wxDirDialog::OnSize(wxSizeEvent& WXUNUSED(event)) -{ - doSize(); -} - -void wxDirDialog::doSize() -{ - /* Figure out height of DirCtrl, which is what is left over by - * the textctrl and the buttons. Manually, because I can't seem - * to get the constraints stuff to do this */ - int w,h,h2; - - GetClientSize(&w, &h); - m_input->GetSize(&w,&h2); h -= h2; - m_ok->GetSize(&w, &h2); h -= h2; - //m_check->GetSize(&w, &h2); h -= h2; - h -= 20; - - wxLayoutConstraints *c = new wxLayoutConstraints; - c->left.SameAs (this, wxLeft,5); - c->right.SameAs (this, wxRight,5); - c->height.Absolute (h); - c->top.SameAs (this, wxTop,5); - m_dir->SetConstraints(c); - - c = new wxLayoutConstraints; - c->left.SameAs (this, wxLeft,5); - c->right.SameAs (this, wxRight,5); - c->height.AsIs (); - c->top.Below (m_dir,5); - m_input->SetConstraints(c); - - /* c = new wxLayoutConstraints; - c->left.SameAs (this, wxLeft,5); - c->right.SameAs (this, wxRight,5); - c->height.AsIs (); - c->top.Below (m_input,5); - m_check->SetConstraints(c); */ - - c = new wxLayoutConstraints; - c->width.SameAs (m_cancel, wxWidth); - c->height.AsIs (); - c->top.Below (m_input,5); - c->centreX.PercentOf (this, wxWidth, 25); - m_ok->SetConstraints(c); - - c = new wxLayoutConstraints; - c->width.SameAs (m_cancel, wxWidth); - c->height.AsIs (); - c->top.Below (m_input,5); - c->bottom.SameAs (this, wxBottom, 5); - c->centreX.PercentOf (this, wxWidth, 50); - m_new->SetConstraints(c); - - c = new wxLayoutConstraints; - c->width.AsIs (); - c->height.AsIs (); - c->top.Below (m_input,5); - c->centreX.PercentOf (this, wxWidth, 75); - m_cancel->SetConstraints(c); - - Layout(); -} - -int wxDirDialog::ShowModal() -{ - m_input->SetValue( m_path ); - return wxDialog::ShowModal(); -} - -void wxDirDialog::OnTreeSelected( wxTreeEvent &event ) -{ - wxDirItemData *data = - (wxDirItemData*)m_dir->GetItemData(event.GetItem()); - if (data) - m_input->SetValue( *(data->m_path) ); -}; - -void wxDirDialog::OnTreeKeyDown( wxTreeEvent &WXUNUSED(event) ) -{ - wxDirItemData *data = - (wxDirItemData*)m_dir->GetItemData(m_dir->GetSelection()); - if (data) - m_input->SetValue( *(data->m_path) ); -}; - -void wxDirDialog::OnOK( wxCommandEvent& WXUNUSED(event) ) -{ - m_path = m_input->GetValue(); - // Does the path exist? (User may have typed anything in m_input) - if (wxPathExists(m_path)) { - // OK, path exists, we're done. - EndModal(wxID_OK); - return; - } - // Interact with user, find out if the dir is a typo or to be created - wxString msg( _("The directory ") ); - msg = msg + m_path; - msg = msg + _("\ndoes not exist\nCreate it now?") ; - wxMessageDialog dialog(this, msg, _("Directory does not exist"), wxYES_NO); - if ( dialog.ShowModal() == wxID_YES ) { - // Okay, let's make it - if (wxMkdir(m_path)) { - // The new dir was created okay. - EndModal(wxID_OK); - return; - } - else { - // Trouble... - msg = _("Failed to create directory ")+m_path+ - _("\n(Do you have the required permissions?)"); - wxMessageDialog errmsg(this, msg, _("Error creating directory"), wxOK); - errmsg.ShowModal(); - // We still don't have a valid dir. Back to the main dialog. - } - } - // User has answered NO to create dir. -} - -void wxDirDialog::OnCancel( wxCommandEvent& WXUNUSED(event) ) -{ - EndModal(wxID_CANCEL); -} - -void wxDirDialog::OnNew( wxCommandEvent& WXUNUSED(event) ) -{ - wxTextEntryDialog dialog(this, _("Enter the name of the directory to create"), - _("Create New Directory"), m_input->GetValue(), wxOK|wxCANCEL); - - while (dialog.ShowModal() == wxID_OK) - { - // Okay, let's make it - if (wxMkdir(dialog.GetValue())) { - // The new dir was created okay. - m_path = dialog.GetValue(); - return; - } - wxString msg = _("Failed to create directory ")+dialog.GetValue()+ - _("\n(Do you have the required permissions?)") ; - wxMessageDialog errmsg(this, msg, _("Error creating directory"), wxOK); - errmsg.ShowModal(); - // Show the create dialog again, until user clicks cancel or enters - // a valid dir. - } -} - -/* -void wxDirDialog::OnCheck( wxCommandEvent& WXUNUSED(event) ) -{ - printf("Checkbox clicked: %s\n", ( m_check->GetValue() ? "on" : "off" ) ); -} -*/ diff --git a/src/generic/fontdlgg.cpp b/src/generic/fontdlgg.cpp deleted file mode 100644 index 8e02bee12b..0000000000 --- a/src/generic/fontdlgg.cpp +++ /dev/null @@ -1,456 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: fontdlgg.cpp -// Purpose: Generic font dialog -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "fontdlgg.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include -#include "wx/utils.h" -#include "wx/dialog.h" -#include "wx/listbox.h" -#include "wx/button.h" -#include "wx/stattext.h" -#include "wx/layout.h" -#include "wx/dcclient.h" -#include "wx/choice.h" -#include "wx/checkbox.h" -#include -#endif - -#include -#include - -#include "wx/cmndata.h" -#include "wx/generic/fontdlgg.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxGenericFontDialog, wxDialog) - -BEGIN_EVENT_TABLE(wxGenericFontDialog, wxDialog) - EVT_CHECKBOX(wxID_FONT_UNDERLINE, wxGenericFontDialog::OnChangeFont) - EVT_CHOICE(wxID_FONT_STYLE, wxGenericFontDialog::OnChangeFont) - EVT_CHOICE(wxID_FONT_WEIGHT, wxGenericFontDialog::OnChangeFont) - EVT_CHOICE(wxID_FONT_FAMILY, wxGenericFontDialog::OnChangeFont) - EVT_CHOICE(wxID_FONT_COLOUR, wxGenericFontDialog::OnChangeFont) - EVT_CHOICE(wxID_FONT_SIZE, wxGenericFontDialog::OnChangeFont) - EVT_PAINT(wxGenericFontDialog::OnPaint) -END_EVENT_TABLE() - -#endif - -#define NUM_COLS 48 -static wxString wxColourDialogNames[NUM_COLS]={"ORANGE", - "GOLDENROD", - "WHEAT", - "SPRING GREEN", - "SKY BLUE", - "SLATE BLUE", - "MEDIUM VIOLET RED", - "PURPLE", - - "RED", - "YELLOW", - "MEDIUM SPRING GREEN", - "PALE GREEN", - "CYAN", - "LIGHT STEEL BLUE", - "ORCHID", - "LIGHT MAGENTA", - - "BROWN", - "YELLOW", - "GREEN", - "CADET BLUE", - "MEDIUM BLUE", - "MAGENTA", - "MAROON", - "ORANGE RED", - - "FIREBRICK", - "CORAL", - "FOREST GREEN", - "AQUARAMINE", - "BLUE", - "NAVY", - "THISTLE", - "MEDIUM VIOLET RED", - - "INDIAN RED", - "GOLD", - "MEDIUM SEA GREEN", - "MEDIUM BLUE", - "MIDNIGHT BLUE", - "GREY", - "PURPLE", - "KHAKI", - - "BLACK", - "MEDIUM FOREST GREEN", - "KHAKI", - "DARK GREY", - "SEA GREEN", - "LIGHT GREY", - "MEDIUM SLATE BLUE", - "WHITE" - }; - -/* - * Generic wxFontDialog - */ - -wxGenericFontDialog::wxGenericFontDialog(void) -{ - m_useEvents = FALSE; - dialogParent = NULL; -} - -wxGenericFontDialog::wxGenericFontDialog(wxWindow *parent, wxFontData *data): - wxDialog(parent, -1, _("Font"), wxPoint(0, 0), wxSize(600, 600), wxDEFAULT_DIALOG_STYLE|wxDIALOG_MODAL) -{ - m_useEvents = FALSE; - Create(parent, data); -} - -wxGenericFontDialog::~wxGenericFontDialog(void) -{ -} - -bool wxGenericFontDialog::OnClose(void) -{ - Show(FALSE); - return FALSE; -} - -bool wxGenericFontDialog::Create(wxWindow *parent, wxFontData *data) -{ - dialogParent = parent; - - if (data) - fontData = *data; - - InitializeFont(); - CreateWidgets(); - - return TRUE; -} - -int wxGenericFontDialog::ShowModal(void) -{ - int ret = wxDialog::ShowModal(); - - if (ret != wxID_CANCEL) - { - fontData.chosenFont = dialogFont; - } - - return ret; -} - - -void wxGenericFontDialog::OnPaint(wxPaintEvent& event) -{ - wxDialog::OnPaint(event); - - wxPaintDC dc(this); - PaintFontBackground(dc); - PaintFont(dc); -} - -/* -static void wxGenericChangeFontText(wxTextCtrl& text, wxCommandEvent& event) -{ - if (event.GetEventType() == wxEVENT_TYPE_TEXT_ENTER_COMMAND) - { - wxGenericFontDialog *dialog = (wxGenericFontDialog *)text.GetParent(); - dialog->OnChangeFont(); - } -} -*/ - -void wxGenericFontDialog::CreateWidgets(void) -{ - wxBeginBusyCursor(); - - fontRect.x = 10; -#ifdef __X__ - fontRect.y = 125; -#else - fontRect.y = 115; -#endif - fontRect.width = 430; - fontRect.height = 100; - - /* - static char *families[] = { "Roman", "Decorative", "Modern", "Script", "Swiss" }; - static char *styles[] = { "Normal", "Italic", "Slant" }; - static char *weights[] = { "Normal", "Light", "Bold" }; - */ - - wxString - *families = new wxString[6], - *styles = new wxString[3], - *weights = new wxString[3]; - families[0] = _("Roman"); - families[1] = _("Decorative"); - families[2] = _("Modern"); - families[3] = _("Script"); - families[4] = _("Swiss" ); - families[5] = _("Teletype" ); - styles[0] = _("Normal"); - styles[1] = _("Italic"); - styles[2] = _("Slant"); - weights[0] = _("Normal"); - weights[1] = _("Light"); - weights[2] = _("Bold"); - - int x=-1; - int y=40; - familyChoice = new wxChoice(this, wxID_FONT_FAMILY, wxPoint(10, 10), wxSize(120, -1), 5, families); - styleChoice = new wxChoice(this, wxID_FONT_STYLE, wxPoint(160, 10), wxSize(120, -1), 3, styles); - weightChoice = new wxChoice(this, wxID_FONT_WEIGHT, wxPoint(310, 10), wxSize(120, -1), 3, weights); - - colourChoice = new wxChoice(this, wxID_FONT_COLOUR, wxPoint(10, 40), wxSize(190, -1), NUM_COLS, wxColourDialogNames); -#if 0 // def __WXMOTIF__ // TODO: This necessary now? - // We want the pointSizeText to line up on the y axis with the colourChoice - colourChoice->GetPosition(&fontRect.x, &y); //NL mod - y+=3; //NL mod -#endif - - wxString *pointSizes = new wxString[40]; - int i; - for ( i = 0; i < 40; i++) - { - char buf[5]; - sprintf(buf, "%d", i + 1); - pointSizes[i] = buf; - } - - pointSizeChoice = new wxChoice(this, wxID_FONT_SIZE, wxPoint(230, y), wxSize(50, -1), 40, pointSizes); - underLineCheckBox = new wxCheckBox(this, wxID_FONT_UNDERLINE, _("Underline"), wxPoint(320, y)); - - int rectY; - pointSizeChoice->GetPosition(&x, &rectY); //NL mod - fontRect.y = rectY; - pointSizeChoice->GetSize(&x, &y); //NL mod - - // Calculate the position of the bottom of the pointSizeChoice, and place - // the fontRect there (+5 for a nice gap) - - fontRect.y+=y+5; //NL mod - - int by = (fontRect.y + fontRect.height + 10); - - wxButton *okButton = new wxButton(this, wxID_OK, _("OK"), wxPoint(220, by), wxSize(100,-1)); - (void) new wxButton(this, wxID_OK, _("Cancel"), wxPoint(340, by), wxSize(100,-1)); - - familyChoice->SetStringSelection( wxFontFamilyIntToString(dialogFont.GetFamily()) ); - styleChoice->SetStringSelection(wxFontStyleIntToString(dialogFont.GetStyle())); - weightChoice->SetStringSelection(wxFontWeightIntToString(dialogFont.GetWeight())); - wxString name(wxTheColourDatabase->FindName(fontData.fontColour)); - colourChoice->SetStringSelection(name); - - underLineCheckBox->SetValue(dialogFont.GetUnderlined()); - pointSizeChoice->SetSelection(dialogFont.GetPointSize()-1); - - okButton->SetDefault(); - - SetClientSize(450, by + 40); - - Centre(wxBOTH); - - wxEndBusyCursor(); - - delete[] families; - delete[] styles; - delete[] weights; - delete[] pointSizes; - m_useEvents = TRUE; -} - -void wxGenericFontDialog::InitializeFont(void) -{ - int fontFamily = wxSWISS; - int fontWeight = wxNORMAL; - int fontStyle = wxNORMAL; - int fontSize = 12; - int fontUnderline = FALSE; - if (fontData.initialFont.Ok()) - { - fontFamily = fontData.initialFont.GetFamily(); - fontWeight = fontData.initialFont.GetWeight(); - fontStyle = fontData.initialFont.GetStyle(); - fontSize = fontData.initialFont.GetPointSize(); - fontUnderline = fontData.initialFont.GetUnderlined(); - } - dialogFont = wxFont(fontSize, fontFamily, fontStyle, fontWeight, (fontUnderline != 0)); -} - -void wxGenericFontDialog::PaintFontBackground(wxDC& dc) -{ - dc.BeginDrawing(); - - dc.SetPen(*wxBLACK_PEN); - dc.SetBrush(*wxWHITE_BRUSH); - dc.DrawRectangle( fontRect.x, fontRect.y, fontRect.width, fontRect.height); - dc.EndDrawing(); -} - -void wxGenericFontDialog::PaintFont(wxDC& dc) -{ - dc.BeginDrawing(); - if (dialogFont.Ok()) - { - dc.SetFont(dialogFont); - // Calculate vertical centre - long w, h; - dc.GetTextExtent("X", &w, &h); - float cx = (float)(fontRect.x + 10); - float cy = (float)(fontRect.y + (fontRect.height/2.0) - (h/2.0)); - dc.SetTextForeground(fontData.fontColour); - dc.SetClippingRegion( fontRect.x, fontRect.y, (long)(fontRect.width-2.0), (long)(fontRect.height-2.0)); - dc.DrawText(_("ABCDEFGabcdefg12345"), (long)cx, (long)cy); - dc.DestroyClippingRegion(); - dc.SetFont(wxNullFont); - } - dc.EndDrawing(); -} - -void wxGenericFontDialog::OnChangeFont(wxCommandEvent& WXUNUSED(event)) -{ - if (!m_useEvents) return; - - int fontFamily = 0; /* shut up buggy egcs warnings */ - fontFamily = wxFontFamilyStringToInt(WXSTRINGCAST familyChoice->GetStringSelection()); - int fontWeight = 0; - fontWeight = wxFontWeightStringToInt(WXSTRINGCAST weightChoice->GetStringSelection()); - int fontStyle = 0; - fontStyle = wxFontStyleStringToInt(WXSTRINGCAST styleChoice->GetStringSelection()); - int fontSize = atoi(pointSizeChoice->GetStringSelection()); - int fontUnderline = underLineCheckBox->GetValue(); - - dialogFont = wxFont(fontSize, fontFamily, fontStyle, fontWeight, (fontUnderline != 0)); - if (colourChoice->GetStringSelection() != "") - { - wxColour *col = (wxColour*) NULL; - col = wxTheColourDatabase->FindColour(colourChoice->GetStringSelection()); - if (col) - { - fontData.fontColour = *col; - } - } - wxClientDC dc(this); - PaintFontBackground(dc); - PaintFont(dc); -} - -char *wxFontWeightIntToString(int weight) -{ - switch (weight) - { - case wxLIGHT: - return "Light"; - case wxBOLD: - return "Bold"; - case wxNORMAL: - default: - return "Normal"; - } - return "Normal"; -} - -char *wxFontStyleIntToString(int style) -{ - switch (style) - { - case wxITALIC: - return "Italic"; - case wxSLANT: - return "Slant"; - case wxNORMAL: - default: - return "Normal"; - } - return "Normal"; -} - -char *wxFontFamilyIntToString(int family) -{ - switch (family) - { - case wxROMAN: - return "Roman"; - case wxDECORATIVE: - return "Decorative"; - case wxMODERN: - return "Modern"; - case wxSCRIPT: - return "Script"; - case wxTELETYPE: - return "Teletype"; - case wxSWISS: - default: - return "Swiss"; - } - return "Swiss"; -} - -int wxFontFamilyStringToInt(char *family) -{ - if (!family) - return wxSWISS; - - if (strcmp(family, "Roman") == 0) - return wxROMAN; - else if (strcmp(family, "Decorative") == 0) - return wxDECORATIVE; - else if (strcmp(family, "Modern") == 0) - return wxMODERN; - else if (strcmp(family, "Script") == 0) - return wxSCRIPT; - else if (strcmp(family, "Teletype") == 0) - return wxTELETYPE; - else return wxSWISS; -} - -int wxFontStyleStringToInt(char *style) -{ - if (!style) - return wxNORMAL; - if (strcmp(style, "Italic") == 0) - return wxITALIC; - else if (strcmp(style, "Slant") == 0) - return wxSLANT; - else - return wxNORMAL; -} - -int wxFontWeightStringToInt(char *weight) -{ - if (!weight) - return wxNORMAL; - if (strcmp(weight, "Bold") == 0) - return wxBOLD; - else if (strcmp(weight, "Light") == 0) - return wxLIGHT; - else - return wxNORMAL; -} - - diff --git a/src/generic/gridg.cpp b/src/generic/gridg.cpp deleted file mode 100644 index 34da5b84a3..0000000000 --- a/src/generic/gridg.cpp +++ /dev/null @@ -1,2564 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: gridg.cpp -// Purpose: wxGenericGrid -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "gridg.h" -#pragma interface -#endif - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include - -#include "wx/string.h" -#include "wx/generic/gridg.h" -#include "wx/settings.h" - -// Set to zero to use no double-buffering -#ifdef __WXMSW__ -#define wxUSE_DOUBLE_BUFFERING 1 -#else -#define wxUSE_DOUBLE_BUFFERING 0 -#endif - -#define wxGRID_DRAG_NONE 0 -#define wxGRID_DRAG_LEFT_RIGHT 1 -#define wxGRID_DRAG_UP_DOWN 2 - -IMPLEMENT_DYNAMIC_CLASS(wxGenericGrid, wxPanel) -IMPLEMENT_DYNAMIC_CLASS(wxGridEvent, wxEvent) - -BEGIN_EVENT_TABLE(wxGenericGrid, wxPanel) - EVT_SIZE(wxGenericGrid::OnSize) - EVT_PAINT(wxGenericGrid::OnPaint) - EVT_ERASE_BACKGROUND(wxGenericGrid::OnEraseBackground) - EVT_MOUSE_EVENTS(wxGenericGrid::OnMouseEvent) - EVT_TEXT(wxGRID_TEXT_CTRL, wxGenericGrid::OnText) - EVT_COMMAND_SCROLL(wxGRID_HSCROLL, wxGenericGrid::OnGridScroll) - EVT_COMMAND_SCROLL(wxGRID_VSCROLL, wxGenericGrid::OnGridScroll) - - // default wxGridEvent handlers - EVT_GRID_SELECT_CELL(wxGenericGrid::_OnSelectCell) - EVT_GRID_CREATE_CELL(wxGenericGrid::_OnCreateCell) - EVT_GRID_CHANGE_LABELS(wxGenericGrid::_OnChangeLabels) - EVT_GRID_CHANGE_SEL_LABEL(wxGenericGrid::_OnChangeSelectionLabel) - EVT_GRID_CELL_CHANGE(wxGenericGrid::_OnCellChange) - EVT_GRID_CELL_LCLICK(wxGenericGrid::_OnCellLeftClick) - EVT_GRID_CELL_RCLICK(wxGenericGrid::_OnCellRightClick) - EVT_GRID_LABEL_LCLICK(wxGenericGrid::_OnLabelLeftClick) - EVT_GRID_LABEL_RCLICK(wxGenericGrid::_OnLabelRightClick) - -END_EVENT_TABLE() - - - - -wxGenericGrid::wxGenericGrid(void) -{ - m_batchCount = 0; - m_hScrollBar = (wxScrollBar *) NULL; - m_vScrollBar = (wxScrollBar *) NULL; - m_cellTextColour = *wxBLACK; - m_cellBackgroundColour = *wxWHITE; - m_labelTextColour = *wxBLACK; -// m_labelBackgroundColour = *wxLIGHT_GREY; - m_labelBackgroundColour = wxSystemSettings::GetSystemColour( wxSYS_COLOUR_BTNFACE ); - m_labelBackgroundBrush = wxNullBrush; - m_labelTextFont = wxNullFont; - m_cellTextFont = wxNullFont; - m_textItem = (wxTextCtrl *) NULL; - m_currentRectVisible = FALSE; - m_editable = TRUE; -#if defined(__WIN95__) - m_scrollWidth = wxSystemSettings::GetSystemMetric(wxSYS_VSCROLL_X); -#elif defined(__WXGTK__) - m_scrollWidth = wxSystemSettings::GetSystemMetric(wxSYS_VSCROLL_X); -#else - m_scrollWidth = 16; -#endif - m_dragStatus = wxGRID_DRAG_NONE; - m_dragRowOrCol = 0; - m_dragStartPosition = 0; - m_dragLastPosition = 0; - m_divisionPen = wxNullPen; - m_leftOfSheet = wxGRID_DEFAULT_SHEET_LEFT; - m_topOfSheet = wxGRID_DEFAULT_SHEET_TOP; - m_cellHeight = wxGRID_DEFAULT_CELL_HEIGHT; - m_totalGridWidth = 0; - m_totalGridHeight = 0; - m_colWidths = (short *) NULL; - m_rowHeights = (short *) NULL; - m_verticalLabelWidth = wxGRID_DEFAULT_VERTICAL_LABEL_WIDTH; - m_horizontalLabelHeight = wxGRID_DEFAULT_HORIZONAL_LABEL_HEIGHT; - m_verticalLabelAlignment = wxCENTRE; - m_horizontalLabelAlignment = wxCENTRE; - m_editControlPosition.x = wxGRID_DEFAULT_EDIT_X; - m_editControlPosition.y = wxGRID_DEFAULT_EDIT_Y; - m_editControlPosition.width = wxGRID_DEFAULT_EDIT_WIDTH; - m_editControlPosition.height = wxGRID_DEFAULT_EDIT_HEIGHT; - m_wCursorRow = 0; - m_wCursorColumn = 0; - m_scrollPosX = 0; - m_scrollPosY = 0; - m_editCreated = FALSE; - m_totalRows = 0; - m_totalCols = 0; - m_gridCells = (wxGridCell ***) NULL; - m_rowLabelCells = (wxGridCell **) NULL; - m_colLabelCells = (wxGridCell **) NULL; - m_textItem = (wxTextCtrl *) NULL; -} - -bool wxGenericGrid::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, - long style, const wxString& name) -{ - m_batchCount = 0; - m_editingPanel = (wxPanel *) NULL; - m_hScrollBar = (wxScrollBar *) NULL; - m_vScrollBar = (wxScrollBar *) NULL; - m_cellTextColour = *wxBLACK; - m_cellBackgroundColour = *wxWHITE; - m_labelTextColour = *wxBLACK; -// m_labelBackgroundColour = *wxLIGHT_GREY; - m_labelBackgroundColour = wxSystemSettings::GetSystemColour( wxSYS_COLOUR_BTNFACE ); - m_labelBackgroundBrush = wxNullBrush; - m_labelTextFont = * wxTheFontList->FindOrCreateFont(10, wxSWISS, wxNORMAL, wxBOLD); - m_cellTextFont = * wxTheFontList->FindOrCreateFont(10, wxSWISS, wxNORMAL, wxNORMAL); - m_textItem = (wxTextCtrl *) NULL; - m_currentRectVisible = FALSE; - m_editable = TRUE; -#if defined(__WIN95__) - m_scrollWidth = wxSystemSettings::GetSystemMetric(wxSYS_VSCROLL_X); -#elif defined(__WXGTK__) - m_scrollWidth = wxSystemSettings::GetSystemMetric(wxSYS_VSCROLL_X); -#else - m_scrollWidth = 16; -#endif - m_dragStatus = wxGRID_DRAG_NONE; - m_dragRowOrCol = 0; - m_dragStartPosition = 0; - m_dragLastPosition = 0; - m_divisionPen = * wxThePenList->FindOrCreatePen("LIGHT GREY", 1, wxSOLID); - m_doubleBufferingBitmap = (wxBitmap *) NULL; - - if (!m_horizontalSashCursor.Ok()) - { - m_horizontalSashCursor = wxCursor(wxCURSOR_SIZEWE); - m_verticalSashCursor = wxCursor(wxCURSOR_SIZENS); - } - - SetLabelBackgroundColour(m_labelBackgroundColour); - - m_leftOfSheet = wxGRID_DEFAULT_SHEET_LEFT; - m_topOfSheet = wxGRID_DEFAULT_SHEET_TOP; - m_cellHeight = wxGRID_DEFAULT_CELL_HEIGHT; - m_totalGridWidth = 0; - m_totalGridHeight = 0; - m_colWidths = (short *) NULL; - m_rowHeights = (short *) NULL; - - m_verticalLabelWidth = wxGRID_DEFAULT_VERTICAL_LABEL_WIDTH; - m_horizontalLabelHeight = wxGRID_DEFAULT_HORIZONAL_LABEL_HEIGHT; - m_verticalLabelAlignment = wxCENTRE; - m_horizontalLabelAlignment = wxCENTRE; - m_editControlPosition.x = wxGRID_DEFAULT_EDIT_X; - m_editControlPosition.y = wxGRID_DEFAULT_EDIT_Y; - m_editControlPosition.width = wxGRID_DEFAULT_EDIT_WIDTH; - m_editControlPosition.height = wxGRID_DEFAULT_EDIT_HEIGHT; - - m_wCursorRow = 0; - m_wCursorColumn = 0; - - m_scrollPosX = 0; - m_scrollPosY = 0; - - /* Store the rect. coordinates for the current cell */ - SetCurrentRect(m_wCursorRow, m_wCursorColumn); - - m_editCreated = FALSE; - - m_totalRows = 0; - m_totalCols = 0; - m_gridCells = (wxGridCell ***) NULL; - m_rowLabelCells = (wxGridCell **) NULL; - m_colLabelCells = (wxGridCell **) NULL; - m_textItem = (wxTextCtrl *) NULL; - - wxPanel::Create(parent, id, pos, size, style, name); - - m_editingPanel = new wxPanel(this); - - m_textItem = new wxTextCtrl(m_editingPanel, wxGRID_TEXT_CTRL, "", - wxPoint(m_editControlPosition.x, m_editControlPosition.y), wxSize(m_editControlPosition.width, -1), - 0); - m_textItem->Show(TRUE); - m_textItem->SetFocus(); - int controlW, controlH; - - m_textItem->GetSize(&controlW, &controlH); - m_editControlPosition.height = controlH; - - m_topOfSheet = m_editControlPosition.y + controlH + 2; - - m_editCreated = TRUE; - - m_hScrollBar = new wxScrollBar(this, wxGRID_HSCROLL, wxPoint(0, 0), wxSize(20, 100), wxHORIZONTAL); - m_vScrollBar = new wxScrollBar(this, wxGRID_VSCROLL, wxPoint(0, 0), wxSize(100, 20), wxVERTICAL); - - SetSize(-1, -1, size.x, size.y); - - return TRUE; -} - -wxGenericGrid::~wxGenericGrid(void) -{ - ClearGrid(); -} - -void wxGenericGrid::ClearGrid(void) -{ - int i,j; - if (m_gridCells) - { - for (i = 0; i < m_totalRows; i++) - { - for (j = 0; j < m_totalCols; j++) - if (m_gridCells[i][j]) - delete m_gridCells[i][j]; - delete[] m_gridCells[i]; - } - delete[] m_gridCells; - m_gridCells = (wxGridCell ***) NULL; - } - if (m_colWidths) - delete[] m_colWidths; - m_colWidths = (short *) NULL; - if (m_rowHeights) - delete[] m_rowHeights; - m_rowHeights = (short *) NULL; - - if (m_rowLabelCells) - { - for (i = 0; i < m_totalRows; i++) - delete m_rowLabelCells[i]; - delete[] m_rowLabelCells; - m_rowLabelCells = (wxGridCell **) NULL; - } - if (m_colLabelCells) - { - for (i = 0; i < m_totalCols; i++) - delete m_colLabelCells[i]; - delete[] m_colLabelCells; - m_colLabelCells = (wxGridCell **) NULL; - } - if (m_doubleBufferingBitmap) - { - delete m_doubleBufferingBitmap; - m_doubleBufferingBitmap = (wxBitmap *) NULL; - } -} - -bool wxGenericGrid::CreateGrid(int nRows, int nCols, wxString **cellValues, short *widths, - short defaultWidth, short defaultHeight) -{ - m_totalRows = nRows; - m_totalCols = nCols; - - int i,j; - m_colWidths = new short[nCols]; - m_rowHeights = new short[nRows]; - for (i = 0; i < nCols; i++) - if (widths) - m_colWidths[i] = widths[i]; - else - m_colWidths[i] = defaultWidth; - for (i = 0; i < nRows; i++) - m_rowHeights[i] = defaultHeight; - - m_gridCells = new wxGridCell **[nRows]; - - for (i = 0; i < nRows; i++) - m_gridCells[i] = new wxGridCell *[nCols]; - - for (i = 0; i < nRows; i++) - for (j = 0; j < nCols; j++) - if (cellValues) - { - //m_gridCells[i][j] = OnCreateCell(); - wxGridEvent g_evt(GetId(), wxEVT_GRID_CREATE_CELL, this, i, j); - GetEventHandler()->ProcessEvent(g_evt); - m_gridCells[i][j] = g_evt.m_cell; - m_gridCells[i][j]->SetTextValue(cellValues[i][j]); - } - else - m_gridCells[i][j] = (wxGridCell *) NULL; - - m_rowLabelCells = new wxGridCell *[nRows]; - for (i = 0; i < nRows; i++) - m_rowLabelCells[i] = new wxGridCell(this); - m_colLabelCells = new wxGridCell *[nCols]; - for (i = 0; i < nCols; i++) - m_colLabelCells[i] = new wxGridCell(this); - - m_wCursorRow = m_wCursorColumn = 0; - SetCurrentRect(0, 0); - - // Need to determine various dimensions - UpdateDimensions(); - - // Number of 'lines' - int objectSizeX = m_totalCols; - int pageSizeX = 1; - int viewLengthX = m_totalCols; - -/* - m_hScrollBar->SetViewLength(viewLengthX); - m_hScrollBar->SetObjectLength(objectSizeX); - m_hScrollBar->SetPageSize(pageSizeX); -*/ - m_hScrollBar->SetScrollbar(m_hScrollBar->GetThumbPosition(), pageSizeX, objectSizeX, viewLengthX); - - int objectSizeY = m_totalRows; - int pageSizeY = 1; - int viewLengthY = m_totalRows; - -/* - m_vScrollBar->SetViewLength(viewLengthY); - m_vScrollBar->SetObjectLength(objectSizeY); - m_vScrollBar->SetPageSize(pageSizeY); -*/ - - m_vScrollBar->SetScrollbar(m_vScrollBar->GetThumbPosition(), pageSizeY, objectSizeY, viewLengthY); - - AdjustScrollbars(); - - //OnChangeLabels(); - wxGridEvent g_evt(GetId(), wxEVT_GRID_CHANGE_LABELS, this); - GetEventHandler()->ProcessEvent(g_evt); - - //OnChangeSelectionLabel(); - wxGridEvent g_evt2(GetId(), wxEVT_GRID_CHANGE_SEL_LABEL, this); - GetEventHandler()->ProcessEvent(g_evt2); - - return TRUE; -} - -// Need to determine various dimensions -void wxGenericGrid::UpdateDimensions(void) -{ - int canvasWidth, canvasHeight; - GetSize(&canvasWidth, &canvasHeight); - - if (m_editCreated && m_editable) - { - int controlW, controlH; - GetTextItem()->GetSize(&controlW, &controlH); - m_topOfSheet = m_editControlPosition.y + controlH + 2; - } - else - m_topOfSheet = 0; - m_rightOfSheet = m_leftOfSheet + m_verticalLabelWidth; - int i; - for (i = m_scrollPosX; i < m_totalCols; i++) - { - if (m_rightOfSheet > canvasWidth) - break; - else - m_rightOfSheet += m_colWidths[i]; - } - m_bottomOfSheet = m_topOfSheet + m_horizontalLabelHeight; - for (i = m_scrollPosY; i < m_totalRows; i++) - { - if (m_bottomOfSheet > canvasHeight) - break; - else - m_bottomOfSheet += m_rowHeights[i]; - } - - m_totalGridWidth = m_leftOfSheet + m_verticalLabelWidth; - for (i = 0; i < m_totalCols; i++) - { - m_totalGridWidth += m_colWidths[i]; - } - m_totalGridHeight = m_topOfSheet + m_horizontalLabelHeight; - for (i = 0; i < m_totalRows; i++) - { - m_totalGridHeight += m_rowHeights[i]; - } -} - -wxGridCell *wxGenericGrid::GetCell(int row, int col) const -{ - if (!m_gridCells) - return (wxGridCell *) NULL; - - if ((row >= m_totalRows) || (col >= m_totalCols)) - return (wxGridCell *) NULL; - - wxGridCell *cell = m_gridCells[row][col]; - if (!cell) - { - // m_gridCells[row][col] = OnCreateCell(); - wxGridEvent g_evt(GetId(), wxEVT_GRID_CREATE_CELL, (wxGenericGrid*) this, row, col); - GetEventHandler()->ProcessEvent(g_evt); - m_gridCells[row][col] = g_evt.m_cell; - return m_gridCells[row][col]; - } - else - return cell; -} - -void wxGenericGrid::SetGridClippingRegion(wxDC *dc) -{ - int m_scrollWidthHoriz = 0; - int m_scrollWidthVert = 0; - int cw, ch; - GetClientSize(&cw, &ch); - - if (m_hScrollBar && m_hScrollBar->IsShown()) - m_scrollWidthHoriz = m_scrollWidth; - if (m_vScrollBar && m_vScrollBar->IsShown()) - m_scrollWidthVert = m_scrollWidth; - - // Don't paint over the scrollbars - dc->SetClippingRegion(m_leftOfSheet, m_topOfSheet, - cw - m_scrollWidthVert - m_leftOfSheet, ch - m_scrollWidthHoriz - m_topOfSheet); -} - -void wxGenericGrid::OnPaint(wxPaintEvent& WXUNUSED(event)) -{ - int w, h; - GetClientSize(&w, &h); - - bool useDoubleBuffering = (bool) wxUSE_DOUBLE_BUFFERING; - if (useDoubleBuffering) - { - // Reuse the old bitmap if possible - - if (!m_doubleBufferingBitmap || - (m_doubleBufferingBitmap->GetWidth() < w || m_doubleBufferingBitmap->GetHeight() < h)) - { - if (m_doubleBufferingBitmap) - delete m_doubleBufferingBitmap; - m_doubleBufferingBitmap = new wxBitmap(w, h); - } - if (!m_doubleBufferingBitmap || !m_doubleBufferingBitmap->Ok()) - { - // If we couldn't create a new bitmap, perhaps because resources were low, - // then don't complain, just don't double-buffer - if (m_doubleBufferingBitmap) - delete m_doubleBufferingBitmap; - m_doubleBufferingBitmap = (wxBitmap *) NULL; - useDoubleBuffering = FALSE; - } - } - - if (useDoubleBuffering) - { - wxPaintDC paintDC(this); - wxMemoryDC dc(& paintDC); - dc.SelectObject(* m_doubleBufferingBitmap); - - PaintGrid(dc); - - int vertScrollBarWidth = m_scrollWidth; - int horizScrollBarHeight = m_scrollWidth; - if (m_vScrollBar && !m_vScrollBar->IsShown()) - vertScrollBarWidth = 0; - if (m_hScrollBar && !m_hScrollBar->IsShown()) - horizScrollBarHeight = 0; - - paintDC.Blit(m_leftOfSheet, m_topOfSheet, w - vertScrollBarWidth - m_leftOfSheet, h - horizScrollBarHeight - m_topOfSheet, - &dc, m_leftOfSheet, m_topOfSheet, wxCOPY); - - dc.SelectObject(wxNullBitmap); - } - else - { - wxPaintDC dc(this); - PaintGrid(dc); - } -} - -void wxGenericGrid::PaintGrid(wxDC& dc) -{ - dc.BeginDrawing(); - dc.SetOptimization(FALSE); - - SetGridClippingRegion(& dc); - - DrawLabelAreas(& dc); - - DrawEditableArea(& dc); - DrawColumnLabels(& dc); - DrawRowLabels(& dc); - DrawCells(& dc); - DrawGridLines(& dc); - - /* Hilight present cell */ - SetCurrentRect(m_wCursorRow, m_wCursorColumn); - if (m_currentRectVisible) - HighlightCell(& dc); - - dc.DestroyClippingRegion(); - dc.SetOptimization(TRUE); - dc.EndDrawing(); -} - -// Erase (some of) the background. -// Currently, a Windows-only optimisation. -void wxGenericGrid::OnEraseBackground(wxEraseEvent& WXUNUSED(event) ) -{ - wxClientDC dc(this); - dc.BeginDrawing(); - dc.SetOptimization(FALSE); - - int w, h; - GetClientSize(& w, & h); - dc.SetBrush(*wxLIGHT_GREY_BRUSH); - dc.SetPen(*wxLIGHT_GREY_PEN); - - if (m_hScrollBar && m_hScrollBar->IsShown() && m_vScrollBar && m_vScrollBar->IsShown()) - { - dc.DrawRectangle(w - m_scrollWidth, h - m_scrollWidth, m_scrollWidth, m_scrollWidth); - } - - dc.SetOptimization(TRUE); - dc.EndDrawing(); -} - - -void wxGenericGrid::DrawLabelAreas(wxDC *dc) -{ - int cw, ch; - GetClientSize(&cw, &ch); - - dc->SetPen(*wxTRANSPARENT_PEN); -// dc->SetBrush(*dc->GetBackground()); - - // Should blank out any area which isn't going to be painted over. -// dc->DrawRectangle(m_leftOfSheet, m_bottomOfSheet, cw - m_leftOfSheet, ch - m_bottomOfSheet); -// dc->DrawRectangle(m_rightOfSheet, m_topOfSheet, cw - m_rightOfSheet, ch - m_topOfSheet); - - // Paint the label areas - dc->SetBrush(m_labelBackgroundBrush); -// dc->DrawRectangle(m_leftOfSheet, m_topOfSheet, m_rightOfSheet - m_leftOfSheet + 1, m_horizontalLabelHeight + 1); - dc->DrawRectangle(m_leftOfSheet, m_topOfSheet, cw-m_leftOfSheet, m_horizontalLabelHeight + 1); -// dc->DrawRectangle(m_leftOfSheet, m_topOfSheet, m_verticalLabelWidth + 1, m_bottomOfSheet - m_topOfSheet + 1); - dc->DrawRectangle(m_leftOfSheet, m_topOfSheet, m_verticalLabelWidth + 1, ch-m_topOfSheet); -} - -void wxGenericGrid::DrawEditableArea(wxDC *dc) -{ - int cw, ch; - GetClientSize(&cw, &ch); - - dc->SetPen(*wxTRANSPARENT_PEN); - dc->SetBrush(*wxTheBrushList->FindOrCreateBrush(m_cellBackgroundColour, wxSOLID)); -// dc->DrawRectangle(m_leftOfSheet+m_verticalLabelWidth, m_topOfSheet+m_horizontalLabelHeight, -// m_rightOfSheet-(m_leftOfSheet+m_verticalLabelWidth) + 1, m_bottomOfSheet - (m_topOfSheet+m_horizontalLabelHeight) + 1); - dc->DrawRectangle(m_leftOfSheet+m_verticalLabelWidth, m_topOfSheet+m_horizontalLabelHeight, - cw-(m_leftOfSheet+m_verticalLabelWidth), ch - (m_topOfSheet+m_horizontalLabelHeight)); -} - -void wxGenericGrid::DrawGridLines(wxDC *dc) -{ - int cw, ch; - GetClientSize(&cw, &ch); - - int i; - - if (m_divisionPen.Ok()) - { - dc->SetPen(m_divisionPen); - - int heightCount = m_topOfSheet + m_horizontalLabelHeight; - - // Draw horizontal grey lines for cells - for (i = m_scrollPosY; i < (m_totalRows+1); i++) - { - if (heightCount > ch) - break; - else - { - dc->DrawLine(m_leftOfSheet, heightCount, - cw, heightCount); - if (i < m_totalRows) - heightCount += m_rowHeights[i]; - } - } - } - - if (m_verticalLabelWidth > 0) - { - dc->SetPen(*wxBLACK_PEN); - - // Draw horizontal black lines for row labels - int heightCount = m_topOfSheet + m_horizontalLabelHeight; - for (i = m_scrollPosY; i < (m_totalRows+1); i++) - { - if (heightCount > ch) - break; - else - { - dc->DrawLine(m_leftOfSheet, heightCount, - m_verticalLabelWidth, heightCount); - if (i < m_totalRows) - heightCount += m_rowHeights[i]; - } - } - // Draw a black vertical line for row number cells - dc->DrawLine(m_leftOfSheet + m_verticalLabelWidth, m_topOfSheet, - m_leftOfSheet + m_verticalLabelWidth, ch); - // First vertical line - dc->DrawLine(m_leftOfSheet, m_topOfSheet, m_leftOfSheet, ch); - - dc->SetPen(*wxWHITE_PEN); - - // Draw highlights on row labels - heightCount = m_topOfSheet + m_horizontalLabelHeight; - for (i = m_scrollPosY; i < m_totalRows; i++) - { - if (heightCount > ch) - break; - else - { - dc->DrawLine(m_leftOfSheet+1, heightCount+1, - m_verticalLabelWidth, heightCount+1); - dc->DrawLine(m_leftOfSheet+1, heightCount+1, - m_leftOfSheet+1, heightCount + m_rowHeights[i] - 1); - heightCount += m_rowHeights[i]; - } - } - // Last one - down to the floor. - dc->DrawLine(m_leftOfSheet+1, heightCount+1, - m_verticalLabelWidth, heightCount+1); - dc->DrawLine(m_leftOfSheet+1, heightCount+1, - m_leftOfSheet+1, ch); - - } - - if (m_divisionPen.Ok()) - { - dc->SetPen(m_divisionPen); - - // Draw vertical grey lines for cells - int widthCount = m_leftOfSheet + m_verticalLabelWidth; - for (i = m_scrollPosX; i < m_totalCols; i++) - { - if (widthCount > cw) - break; - else - { - // Skip the first one - if (i != m_scrollPosX) - { - dc->DrawLine(widthCount, m_topOfSheet + m_horizontalLabelHeight, - widthCount, m_bottomOfSheet); - } - widthCount += m_colWidths[i]; - } - } - // Last one - dc->DrawLine(widthCount, m_topOfSheet + m_horizontalLabelHeight, - widthCount, m_bottomOfSheet); - } - - dc->SetPen(*wxBLACK_PEN); - - // Draw two black horizontal lines for column number cells - dc->DrawLine( - m_leftOfSheet, m_topOfSheet, - cw, m_topOfSheet); - dc->DrawLine(m_leftOfSheet, m_topOfSheet + m_horizontalLabelHeight, - cw, m_topOfSheet + m_horizontalLabelHeight); - - if (m_horizontalLabelHeight > 0) - { - int widthCount = m_leftOfSheet + m_verticalLabelWidth; - - // Draw black vertical lines for column number cells - for (i = m_scrollPosX; i < m_totalCols; i++) - { - if (widthCount > cw) - break; - else - { - dc->DrawLine(widthCount, m_topOfSheet, - widthCount, m_topOfSheet + m_horizontalLabelHeight); - widthCount += m_colWidths[i]; - } - } - - // Last one - dc->DrawLine(widthCount, m_topOfSheet, - widthCount, m_topOfSheet + m_horizontalLabelHeight); - - // Draw highlights - dc->SetPen(*wxWHITE_PEN); - widthCount = m_leftOfSheet + m_verticalLabelWidth; - - for (i = m_scrollPosX; i < m_totalCols; i++) - { - if (widthCount > cw) - break; - else - { - dc->DrawLine(widthCount+1, m_topOfSheet+1, - widthCount+m_colWidths[i], m_topOfSheet+1); - dc->DrawLine(widthCount+1, m_topOfSheet+1, - widthCount+1, m_topOfSheet+m_horizontalLabelHeight); - widthCount += m_colWidths[i]; - } - } - // Last one - to the right side of the canvas. - dc->DrawLine(widthCount+1, m_topOfSheet+1, - cw, m_topOfSheet+1); - dc->DrawLine(widthCount+1, m_topOfSheet+1, - widthCount+1, m_topOfSheet+m_horizontalLabelHeight); - - } -} - -void wxGenericGrid::DrawColumnLabels(wxDC *dc) -{ - int cw, ch; - GetClientSize(&cw, &ch); - - if (m_horizontalLabelHeight == 0) - return; - - int i; - wxRect rect; - - // Draw letters for columns - rect.y = m_topOfSheet + 1; - rect.height = m_horizontalLabelHeight - 1; - - dc->SetTextBackground(m_labelBackgroundColour); - dc->SetBackgroundMode(wxTRANSPARENT); -// dc->SetTextForeground(m_labelTextColour); - - int widthCount = m_leftOfSheet + m_verticalLabelWidth; - for (i = m_scrollPosX; i < m_totalCols; i++) - { - if (widthCount > cw) - break; - else - { - rect.x = 1 + widthCount; - rect.width = m_colWidths[i]; - DrawColumnLabel(dc, &rect, i); - - widthCount += m_colWidths[i]; - } - } -} - -void wxGenericGrid::DrawColumnLabel(wxDC *dc, wxRect *rect, int col) -{ - wxGridCell *cell = GetLabelCell(wxHORIZONTAL, col); - if (cell) - { - wxRect rect2; - rect2 = *rect; - rect2.x += 3; - rect2.y += 2; - rect2.width -= 5; - rect2.height -= 4; - dc->SetTextForeground(GetLabelTextColour()); - dc->SetFont(GetLabelTextFont()); - if ( !cell->GetTextValue().IsNull() ) - DrawTextRect(dc, cell->GetTextValue(), &rect2, GetLabelAlignment(wxHORIZONTAL)); - } -} - -void wxGenericGrid::DrawRowLabels(wxDC *dc) -{ - int cw, ch; - GetClientSize(&cw, &ch); - - if (m_verticalLabelWidth == 0) - return; - - int i; - wxRect rect; - - // Draw numbers for rows - rect.x = m_leftOfSheet; - rect.width = m_verticalLabelWidth; - - int heightCount = m_topOfSheet + m_horizontalLabelHeight; - - dc->SetTextBackground(m_labelBackgroundColour); - dc->SetBackgroundMode(wxTRANSPARENT); - - for (i = m_scrollPosY; i < m_totalRows; i++) - { - if (heightCount > ch) - break; - else - { - rect.y = 1 + heightCount; - rect.height = m_rowHeights[i]; - DrawRowLabel(dc, &rect, i); - - heightCount += m_rowHeights[i]; - } - } -} - -void wxGenericGrid::DrawRowLabel(wxDC *dc, wxRect *rect, int row) -{ - wxGridCell *cell = GetLabelCell(wxVERTICAL, row); - if (cell) - { - wxRect rect2; - rect2 = *rect; - rect2.x += 3; - rect2.y += 2; - rect2.width -= 5; - rect2.height -= 4; - dc->SetTextForeground(GetLabelTextColour()); - dc->SetFont(GetLabelTextFont()); - if ( !cell->GetTextValue().IsNull() ) - DrawTextRect(dc, cell->GetTextValue(), &rect2, GetLabelAlignment(wxVERTICAL)); - } -} - -void wxGenericGrid::DrawCells(wxDC *dc) -{ - int cw, ch; - GetClientSize(&cw, &ch); - - int i,j; - - // Draw value corresponding to each cell - for (i = m_scrollPosY; i < m_totalRows; i++) - { - for (j = m_scrollPosX; j < m_totalCols; j++) - { - SetCurrentRect(i, j, cw, ch); - if (m_currentRectVisible) - { - DrawCellBackground(dc, &m_currentRect, i, j); - DrawCellValue(dc, &m_currentRect, i, j); - } - if (m_currentRect.x > cw) - break; - } - if (m_currentRect.y > ch) - break; - } - dc->SetBackgroundMode(wxSOLID); - dc->SetPen(*wxBLACK_PEN); -} - -void wxGenericGrid::DrawCellBackground(wxDC *dc, wxRect *rect, int row, int col) -{ - wxGridCell *cell = GetCell(row, col); - if (cell) - { - dc->SetBrush(cell->GetBackgroundBrush()); - dc->SetPen(*wxTRANSPARENT_PEN); - -#if 0 // In wxWin 2.0 the dc code is exact. RR. -#ifdef __WXMOTIF__ - dc->DrawRectangle(rect->x+1, rect->y+1, rect->width-1, rect->height-1); -#else - dc->DrawRectangle(rect->x+1, rect->y+1, rect->width, rect->height); -#endif -#endif - - dc->DrawRectangle(rect->x+1, rect->y+1, rect->width-1, rect->height-1); - - dc->SetPen(*wxBLACK_PEN); - } -} - -void wxGenericGrid::DrawCellValue(wxDC *dc, wxRect *rect, int row, int col) -{ - wxGridCell *cell = GetCell(row, col); - if (cell) - { - wxBitmap *bitmap = cell->GetCellBitmap(); - wxRect rect2; - rect2 = *rect; - rect2.x += 3; - rect2.y += 2; - rect2.width -= 5; - rect2.height -= 4; - - if (bitmap) - { - DrawBitmapRect(dc, bitmap, &rect2, cell->GetAlignment()); - } - else - { - dc->SetBackgroundMode(wxTRANSPARENT); - dc->SetTextForeground(cell->GetTextColour()); - dc->SetFont(cell->GetFont()); - - if ( !cell->GetTextValue().IsNull() ) - DrawTextRect(dc, cell->GetTextValue(), &rect2, cell->GetAlignment()); - } - } -} - -void wxGenericGrid::AdjustScrollbars(void) -{ - int cw, ch; - GetClientSize(&cw, &ch); - - // We find the view size by seeing how many rows/cols fit on - // the current view. - // BUT... this means that the scrollbar should be adjusted every time - // it's scrolled, as well as when sized, because with variable size rows/cols, - // the number of rows/col visible on the view differs according to what bit - // you're looking at. The object length is always the same, but the - // view length differs. - - // Since this may not be known until the end of this function, we should probably call AdjustScrollbars - // twice. - int vertScrollBarWidth = m_scrollWidth; - int horizScrollBarHeight = m_scrollWidth; - if (m_vScrollBar && !m_vScrollBar->IsShown()) - vertScrollBarWidth = 0; - if (m_hScrollBar && !m_hScrollBar->IsShown()) - horizScrollBarHeight = 0; - - int noHorizSteps = 0; - int noVertSteps = 0; - - if (m_totalGridWidth + vertScrollBarWidth <= cw) - noHorizSteps = 0; - else - { - noHorizSteps = 0; - int widthCount = 0; - - int i; - int nx = 0; - for (i = m_scrollPosX ; i < m_totalCols; i++) - { - widthCount += m_colWidths[i]; - // A partial bit doesn't count, we still have to scroll to see the - // rest of it - if (widthCount + m_leftOfSheet + m_verticalLabelWidth > (cw-vertScrollBarWidth)) - break; - else - nx ++; - - } - - noHorizSteps += nx; - } - if (m_totalGridHeight + horizScrollBarHeight <= ch) - noVertSteps = 0; - else - { - noVertSteps = 0; - int heightCount = 0; - - int i; - int ny = 0; - for (i = m_scrollPosY ; i < m_totalRows; i++) - { - heightCount += m_rowHeights[i]; - // A partial bit doesn't count, we still have to scroll to see the - // rest of it - if (heightCount + m_topOfSheet + m_horizontalLabelHeight > (ch-horizScrollBarHeight)) - break; - else - ny ++; - } - - noVertSteps += ny; - } - - if (m_totalGridWidth + vertScrollBarWidth <= cw) - { - if ( m_hScrollBar ) - m_hScrollBar->Show(FALSE); - SetScrollPosX(0); - } - else - { - if ( m_hScrollBar ) - m_hScrollBar->Show(TRUE); - } - - if (m_totalGridHeight + horizScrollBarHeight <= ch) - { - if ( m_vScrollBar ) - m_vScrollBar->Show(FALSE); - SetScrollPosY(0); - } - else - { - if ( m_vScrollBar ) - m_vScrollBar->Show(TRUE); - } - - UpdateDimensions(); // Necessary in case m_scrollPosX/Y changed - - vertScrollBarWidth = m_scrollWidth; - horizScrollBarHeight = m_scrollWidth; - if (m_vScrollBar && !m_vScrollBar->IsShown()) - vertScrollBarWidth = 0; - if (m_hScrollBar && !m_hScrollBar->IsShown()) - horizScrollBarHeight = 0; - - if (m_hScrollBar && m_hScrollBar->IsShown()) - { - int nCols = GetCols(); - m_hScrollBar->SetScrollbar(m_hScrollBar->GetThumbPosition(), wxMax(noHorizSteps, 1), (noHorizSteps == 0) ? 1 : nCols, wxMax(noHorizSteps, 1)); - -/* - m_hScrollBar->SetSize(m_leftOfSheet, ch - m_scrollWidth -2, // why -2 ? Robert. - cw - vertScrollBarWidth - m_leftOfSheet, m_scrollWidth); -*/ - m_hScrollBar->SetSize(m_leftOfSheet, ch - m_scrollWidth, - cw - vertScrollBarWidth - m_leftOfSheet, m_scrollWidth); - - } - - if (m_vScrollBar && m_vScrollBar->IsShown()) - { - int nRows = GetRows(); - - m_vScrollBar->SetScrollbar(m_vScrollBar->GetThumbPosition(), wxMax(noVertSteps, 1), (noVertSteps == 0) ? 1 : nRows, wxMax(noVertSteps, 1)); - m_vScrollBar->SetSize(cw - m_scrollWidth, m_topOfSheet, - m_scrollWidth, ch - m_topOfSheet - horizScrollBarHeight); - } -} - -void wxGenericGrid::OnSize(wxSizeEvent& WXUNUSED(event) ) -{ - if (!m_vScrollBar || !m_hScrollBar) - return; - - AdjustScrollbars(); - - int cw, ch; - GetClientSize(&cw, &ch); - - if (m_editCreated && m_editingPanel && GetTextItem() && GetTextItem()->IsShown()) - { - m_editingPanel->SetSize(0, 0, cw, m_editControlPosition.height + m_editControlPosition.y + 2); - GetTextItem()->SetSize(m_editControlPosition.x, m_editControlPosition.y, - cw - 2*m_editControlPosition.x, m_editControlPosition.height); - } -} - -bool wxGenericGrid::CellHitTest(int x, int y, int *row, int *col) -{ - // Find the selected cell and call OnSelectCell - if (x >= (m_leftOfSheet + m_verticalLabelWidth) && y >= (m_topOfSheet + m_horizontalLabelHeight) && - x <= m_rightOfSheet && y <= m_bottomOfSheet) - { - // Calculate the cell number from x and y - x -= (m_verticalLabelWidth + m_leftOfSheet); - y -= (m_topOfSheet + m_horizontalLabelHeight); - - int i; - - // Now we need to do a hit test for which row we're on - int currentHeight = 0; - for (i = m_scrollPosY; i < m_totalRows; i++) - { - if (y >= currentHeight && y <= (currentHeight + m_rowHeights[i])) - { - *row = i; - break; - } - currentHeight += m_rowHeights[i]; - } - - // Now we need to do a hit test for which column we're on - int currentWidth = 0; - for (i = m_scrollPosX; i < m_totalCols; i++) - { - if (x >= currentWidth && x <= (currentWidth + m_colWidths[i])) - { - *col = i; - break; - } - currentWidth += m_colWidths[i]; - } - return TRUE; - } - return FALSE; -} - -bool wxGenericGrid::LabelSashHitTest(int x, int y, int *orientation, int *rowOrCol, int *startPos) -{ - int i; - int tolerance = 3; - - if (x >= (m_leftOfSheet + m_verticalLabelWidth) && y >= m_topOfSheet && - x <= m_rightOfSheet && y <= (m_topOfSheet + m_horizontalLabelHeight)) - { - // We may be on a column label sash. - int currentWidth = m_leftOfSheet + m_verticalLabelWidth; - for (i = m_scrollPosX; i < m_totalCols; i++) - { - if (x >= (currentWidth + m_colWidths[i] - tolerance) && x <= (currentWidth + m_colWidths[i] + tolerance)) - { - *orientation = wxHORIZONTAL; - *rowOrCol = i; - *startPos = currentWidth; - return TRUE; - } - currentWidth += m_colWidths[i]; - } - return FALSE; - } - else if (x >= m_leftOfSheet && y >= (m_topOfSheet + m_horizontalLabelHeight) && - x <= (m_leftOfSheet + m_verticalLabelWidth) && y <= m_bottomOfSheet) - { - // We may be on a row label sash. - int currentHeight = m_topOfSheet + m_horizontalLabelHeight; - for (i = m_scrollPosY; i < m_totalRows; i++) - { - if (y >= (currentHeight + m_rowHeights[i] - tolerance) && y <= (currentHeight + m_rowHeights[i] + tolerance)) - { - *orientation = wxVERTICAL; - *rowOrCol = i; - *startPos = currentHeight; - return TRUE; - } - currentHeight += m_rowHeights[i]; - } - return FALSE; - } - return FALSE; -} - -bool wxGenericGrid::LabelHitTest(int x, int y, int *row, int *col) -{ - // Find the selected label - if (x >= m_leftOfSheet && y >= m_topOfSheet && - x <= m_rightOfSheet && y <= m_bottomOfSheet) - { - // Calculate the cell number from x and y - x -= m_leftOfSheet; - y -= m_topOfSheet; - - int i; - - // Now we need to do a hit test for which row we're on - int currentHeight = m_horizontalLabelHeight; - for (i = m_scrollPosY; i < m_totalRows; i++) - { - if (y >= currentHeight && y <= (currentHeight + m_rowHeights[i])) - { - *row = i; - break; - } - currentHeight += m_rowHeights[i]; - } - if (y >= 0 && y <= m_horizontalLabelHeight) - { - *row = -1; - } - - // Now we need to do a hit test for which column we're on - int currentWidth = m_verticalLabelWidth; - for (i = m_scrollPosX; i < m_totalCols; i++) - { - if (x >= currentWidth && x <= (currentWidth + m_colWidths[i])) - { - *col = i; - break; - } - currentWidth += m_colWidths[i]; - } - if (x >= 0 && x <= m_verticalLabelWidth) - { - *col = -1; - } - - if ((*col == -1) || (*row == -1)) - { - return TRUE; - } - } - return FALSE; -} - -void wxGenericGrid::OnMouseEvent(wxMouseEvent& ev) -{ - if (ev.LeftDown()) - { - wxClientDC dc(this); - dc.BeginDrawing(); - - int row, col; - if (CellHitTest((int)ev.GetX(), (int)ev.GetY(), &row, &col)) - { - OnSelectCellImplementation(& dc, row, col); - - //OnCellLeftClick(row, col, (int)ev.GetX(), (int)ev.GetY(), ev.ControlDown(), ev.ShiftDown()); - wxGridEvent g_evt(GetId(), wxEVT_GRID_CELL_LCLICK, this, - row, col, (int)ev.GetX(), (int)ev.GetY(), - ev.ControlDown(), ev.ShiftDown()); - GetEventHandler()->ProcessEvent(g_evt); - - } - if (LabelHitTest((int)ev.GetX(), (int)ev.GetY(), &row, &col)) - { - //OnLabelLeftClick(row, col, (int)ev.GetX(), (int)ev.GetY(), ev.ControlDown(), ev.ShiftDown()); - wxGridEvent g_evt(GetId(), wxEVT_GRID_LABEL_LCLICK, this, - row, col, (int)ev.GetX(), (int)ev.GetY(), - ev.ControlDown(), ev.ShiftDown()); - GetEventHandler()->ProcessEvent(g_evt); - - } - dc.EndDrawing(); - } - else if (ev.Dragging() && ev.LeftIsDown()) - { - switch (m_dragStatus) - { - case wxGRID_DRAG_NONE: - { - int orientation; - if (LabelSashHitTest((int)ev.GetX(), (int)ev.GetY(), &orientation, &m_dragRowOrCol, &m_dragStartPosition)) - { - if (orientation == wxHORIZONTAL) - { - m_dragStatus = wxGRID_DRAG_LEFT_RIGHT; - SetCursor(m_horizontalSashCursor); - m_dragLastPosition = (int)ev.GetX(); - } - else - { - m_dragStatus = wxGRID_DRAG_UP_DOWN; - SetCursor(m_verticalSashCursor); - m_dragLastPosition = (int)ev.GetY(); - } - wxClientDC dc(this); - dc.BeginDrawing(); - dc.SetLogicalFunction(wxINVERT); - if (orientation == wxHORIZONTAL) - dc.DrawLine((int)ev.GetX(), m_topOfSheet, (int)ev.GetX(), m_bottomOfSheet); - else - dc.DrawLine(m_leftOfSheet, (int)ev.GetY(), m_rightOfSheet, (int)ev.GetY()); - dc.EndDrawing(); - - CaptureMouse(); - } - break; - } - case wxGRID_DRAG_LEFT_RIGHT: - { - wxClientDC dc(this); - dc.BeginDrawing(); - dc.SetLogicalFunction(wxINVERT); - dc.DrawLine(m_dragLastPosition, m_topOfSheet, m_dragLastPosition, m_bottomOfSheet); - - dc.DrawLine((int)ev.GetX(), m_topOfSheet, (int)ev.GetX(), m_bottomOfSheet); - dc.EndDrawing(); - - m_dragLastPosition = (int)ev.GetX(); - SetCursor(m_horizontalSashCursor); - break; - } - case wxGRID_DRAG_UP_DOWN: - { - wxClientDC dc(this); - dc.BeginDrawing(); - dc.SetLogicalFunction(wxINVERT); - dc.DrawLine(m_leftOfSheet, m_dragLastPosition, m_rightOfSheet, m_dragLastPosition); - - dc.DrawLine(m_leftOfSheet, (int)ev.GetY(), m_rightOfSheet, (int)ev.GetY()); - dc.EndDrawing(); - - m_dragLastPosition = (int)ev.GetY(); - SetCursor(m_verticalSashCursor); - break; - } - } - } - else if (ev.Moving()) - { - int rowOrCol, orientation, startPos; - if (LabelSashHitTest((int)ev.GetX(), (int)ev.GetY(), &orientation, &rowOrCol, &startPos)) - { - if (orientation == wxHORIZONTAL) - SetCursor(m_horizontalSashCursor); - else - SetCursor(m_verticalSashCursor); - } - else - SetCursor(*wxSTANDARD_CURSOR); - } - else if (ev.LeftUp()) - { - switch (m_dragStatus) - { - case wxGRID_DRAG_LEFT_RIGHT: - { - wxClientDC dc(this); - dc.BeginDrawing(); - dc.SetLogicalFunction(wxINVERT); - dc.DrawLine(m_dragLastPosition, m_topOfSheet, m_dragLastPosition, m_bottomOfSheet); - dc.SetLogicalFunction(wxCOPY); - dc.EndDrawing(); - - ReleaseMouse(); - if (ev.GetX() > m_dragStartPosition) - { - m_colWidths[m_dragRowOrCol] = (short)(ev.GetX() - m_dragStartPosition); - UpdateDimensions(); - AdjustScrollbars(); - Refresh(); - } - SetCursor(*wxSTANDARD_CURSOR); - int cw, ch; - GetClientSize(&cw, &ch); - wxSizeEvent evt; - OnSize(evt); - break; - } - case wxGRID_DRAG_UP_DOWN: - { - wxClientDC dc(this); - dc.BeginDrawing(); - dc.SetLogicalFunction(wxINVERT); - dc.DrawLine(m_leftOfSheet, m_dragLastPosition, m_rightOfSheet, m_dragLastPosition); - dc.SetLogicalFunction(wxCOPY); - dc.EndDrawing(); - - ReleaseMouse(); - if (ev.GetY() > m_dragStartPosition) - { - m_rowHeights[m_dragRowOrCol] = (short)(ev.GetY() - m_dragStartPosition); - UpdateDimensions(); - AdjustScrollbars(); - Refresh(); - } - SetCursor(*wxSTANDARD_CURSOR); - break; - } - } - m_dragStatus = wxGRID_DRAG_NONE; - } - else if (ev.RightDown()) - { - int row, col; - if (CellHitTest((int)ev.GetX(), (int)ev.GetY(), &row, &col)) - { - //OnCellRightClick(row, col, (int)ev.GetX(), (int)ev.GetY(), ev.ControlDown(), ev.ShiftDown()); - wxGridEvent g_evt(GetId(), wxEVT_GRID_CELL_RCLICK, this, - row, col, (int)ev.GetX(), (int)ev.GetY(), - ev.ControlDown(), ev.ShiftDown()); - GetEventHandler()->ProcessEvent(g_evt); - - } - if (LabelHitTest((int)ev.GetX(), (int)ev.GetY(), &row, &col)) - { - //OnLabelRightClick(row, col, (int)ev.GetX(), (int)ev.GetY(), ev.ControlDown(), ev.ShiftDown()); - wxGridEvent g_evt(GetId(), wxEVT_GRID_LABEL_RCLICK, this, - row, col, (int)ev.GetX(), (int)ev.GetY(), - ev.ControlDown(), ev.ShiftDown()); - GetEventHandler()->ProcessEvent(g_evt); - } - } -} - -void wxGenericGrid::OnSelectCellImplementation(wxDC *dc, int row, int col) -{ - m_wCursorColumn = col; - m_wCursorRow = row; - - //OnChangeSelectionLabel(); - wxGridEvent g_evt(GetId(), wxEVT_GRID_CHANGE_SEL_LABEL, this); - GetEventHandler()->ProcessEvent(g_evt); - - SetGridClippingRegion(dc); - - // Remove the highlight from the old cell - if (m_currentRectVisible) - HighlightCell(dc); - - // Highlight the new cell and copy its content to the edit control - SetCurrentRect(m_wCursorRow, m_wCursorColumn); - wxGridCell *cell = GetCell(m_wCursorRow, m_wCursorColumn); - if (cell) - { - if ( cell->GetTextValue().IsNull() ) - m_textItem->SetValue(""); - else - m_textItem->SetValue(cell->GetTextValue()); - } - - SetGridClippingRegion(dc); - - // 1) Why isn't this needed for Windows?? - // Probably because of the SetValue?? JS. - // 2) Arrrrrgh. This isn't needed anywhere, - // of course. One hour of debugging... RR. -#ifndef __WXMSW__ -// HighlightCell(dc); -#endif - dc->DestroyClippingRegion(); - - //OnSelectCell(row, col); - wxGridEvent g_evt2(GetId(), wxEVT_GRID_SELECT_CELL, this, row, col); - GetEventHandler()->ProcessEvent(g_evt2); -} - -wxGridCell *wxGenericGrid::OnCreateCell(void) -{ - return new wxGridCell(this); -} - -void wxGenericGrid::OnChangeLabels(void) -{ - char buf[100]; - int i; - for (i = 0; i < m_totalRows; i++) - { - sprintf(buf, "%d", i+1); - SetLabelValue(wxVERTICAL, buf, i); - } - // A...Z,AA...ZZ,AAA...ZZZ, etc. - for (i = 0; i < m_totalCols; i++) - { - int j; - int noTimes = (i/26 + 1); - int ch = (i % 26) + 65; - buf[0] = 0; - for (j = 0; j < noTimes; j++) - { - char buf2[20]; - sprintf(buf2, "%c", (char)ch); - strcat(buf, buf2); - } - SetLabelValue(wxHORIZONTAL, buf, i); - } -} - -void wxGenericGrid::OnChangeSelectionLabel(void) -{ - if (!GetEditable()) - return; - - wxString rowLabel(GetLabelValue(wxVERTICAL, GetCursorRow())); - wxString colLabel(GetLabelValue(wxHORIZONTAL, GetCursorColumn())); - - wxString newLabel = colLabel + rowLabel; - if ((newLabel.Length() > 0) && (newLabel.Length() <= 8) && GetTextItem()) - { -// GetTextItem()->SetLabel(newLabel); - } -} - -void wxGenericGrid::HighlightCell(wxDC *dc) -{ - dc->SetLogicalFunction(wxINVERT); - - // Top - dc->DrawLine( m_currentRect.x + 1, - m_currentRect.y + 1, - m_currentRect.x + m_currentRect.width - 1, - m_currentRect.y + 1); - // Right - dc->DrawLine( m_currentRect.x + m_currentRect.width - 1, - m_currentRect.y + 1, - m_currentRect.x + m_currentRect.width - 1, - m_currentRect.y +m_currentRect.height - 1 ); - // Bottom - dc->DrawLine( m_currentRect.x + m_currentRect.width - 1, - m_currentRect.y + m_currentRect.height - 1, - m_currentRect.x + 1, - m_currentRect.y + m_currentRect.height - 1); - // Left - dc->DrawLine( m_currentRect.x + 1, - m_currentRect.y + m_currentRect.height - 1, - m_currentRect.x + 1, - m_currentRect.y + 1); - - dc->SetLogicalFunction(wxCOPY); -} - -void wxGenericGrid::DrawCellText(void) -{ - if (!m_currentRectVisible) - return; - - wxGridCell *cell = GetCell(GetCursorRow(), GetCursorColumn()); - if (!cell) - return; - - static char szEdit[300]; - - wxClientDC dc(this); - dc.BeginDrawing(); - - SetGridClippingRegion(& dc); - - dc.SetBackgroundMode(wxTRANSPARENT); - dc.SetBrush(cell->GetBackgroundBrush()); - - strcpy(szEdit, m_textItem->GetValue()); - - wxRect rect; - rect = m_currentRect; - rect.x += 3; - rect.y += 2; - rect.width -= 5; - rect.height -= 4; - - DrawTextRect(& dc, " ", &rect, wxLEFT); - DrawTextRect(& dc, szEdit, &rect, cell->GetAlignment()); - - dc.DestroyClippingRegion(); - - dc.SetBackgroundMode(wxSOLID); - - dc.EndDrawing(); -} - -void wxGenericGrid::SetCurrentRect(int Row, int Column, int canvasW, int canvasH) -{ - int currentWidth = m_leftOfSheet + m_verticalLabelWidth; - int i; - for (i = m_scrollPosX; i < Column; i++) - currentWidth += m_colWidths[i]; - - int currentHeight = m_topOfSheet + m_horizontalLabelHeight; - for (i = m_scrollPosY; i < Row; i++) - currentHeight += m_rowHeights[i]; - - m_currentRect.x = currentWidth; - m_currentRect.y = currentHeight; - m_currentRect.width = m_colWidths ? (m_colWidths[Column]) : 0; - m_currentRect.height = m_rowHeights ? (m_rowHeights[Row]) : 0; - - if (Row < m_scrollPosY || Column < m_scrollPosX) - m_currentRectVisible = FALSE; - else if ((canvasW != -1 && canvasH != -1) && (m_currentRect.x > canvasW || m_currentRect.y > canvasH)) - m_currentRectVisible = FALSE; - else m_currentRectVisible = TRUE; -} - -static bool wxRectIntersection(wxRect *rect1, wxRect *rect2, wxRect *rect3) -{ - int x2_1 = rect1->x + rect1->width; - int y2_1 = rect1->y + rect1->height; - - int x2_2 = rect2->x + rect2->width; - int y2_2 = rect2->y + rect2->height; - - int x2_3, y2_3; - - // Check for intersection - if ((rect1->x > x2_2) || (rect2->x > x2_1) || - (rect1->y > y2_2) || (rect2->y > y2_1)) - { - // No intersection - rect3->x = rect3->y = rect3->width = rect3->height = 0; - return FALSE; - } - - if (rect1->x > rect2->x) - rect3->x = rect1->x; - else - rect3->x = rect2->x; - if (rect1->y > rect2->y) - rect3->y = rect1->y; - else - rect3->y = rect2->y; - - if (x2_1 > x2_2) - x2_3 = x2_2; - else - x2_3 = x2_1; - if (y2_1 > y2_2) - y2_3 = y2_2; - else - y2_3 = y2_1; - - rect3->width = (int)(x2_3 - rect3->x); - rect3->height = (int)(y2_3 - rect3->y); - return TRUE; -} - -void wxGenericGrid::DrawTextRect(wxDC *dc, const wxString& text, wxRect *rect, int flag) -{ - dc->BeginDrawing(); - - // Ultimately, this functionality should be built into wxWindows, - // and optimized for each platform. E.g. on Windows, use DrawText - // passing a clipping rectangle, so that the wxWindows clipping region - // does not have to be used to implement this. - - // If we're already clipping, we need to find the intersection - // between current clipping area and text clipping area. - - wxRect clipRect; - wxRect clipRect2; - long clipX, clipY, clipW, clipH; - dc->GetClippingBox(&clipX, &clipY, &clipW, &clipH); - clipRect.x = (int)clipX; clipRect.y = (int)clipY; - clipRect.width = (int)clipW; clipRect.height = (int)clipH; - - bool alreadyClipping = TRUE; - - if (clipRect.x == 0 && clipRect.y == 0 && clipRect.width == 0 && clipRect.height == 0) - { - alreadyClipping = FALSE; - clipRect2.x = rect->x; clipRect2.y = rect->y; - clipRect2.width = rect->width; clipRect2.height = rect->height; - } - else - { - // Find intersection. - if (!wxRectIntersection(rect, &clipRect, &clipRect2)) - return; - } - - if (alreadyClipping) - dc->DestroyClippingRegion(); - - dc->SetClippingRegion(clipRect2.x, clipRect2.y, clipRect2.width, clipRect2.height); - long textWidth, textHeight; - - dc->GetTextExtent(text, &textWidth, &textHeight); - - // Do alignment - float x,y; - switch (flag) - { - case wxRIGHT: - { - x = (rect->x + rect->width - textWidth - 1.0); - y = (rect->y + (rect->height - textHeight)/2.0); - break; - } - case wxCENTRE: - { - x = (rect->x + (rect->width - textWidth)/2.0); - y = (rect->y + (rect->height - textHeight)/2.0); - break; - } - case wxLEFT: - default: - { - x = (rect->x + 1.0); - y = (rect->y + (rect->height - textHeight)/2.0); - break; - } - } - dc->DrawText(text, (long)x, (long)y ); - - dc->DestroyClippingRegion(); - - // Restore old clipping - if (alreadyClipping) - dc->SetClippingRegion(clipRect.x, clipRect.y, clipRect.width, clipRect.height); - - dc->EndDrawing(); -} - -void wxGenericGrid::DrawBitmapRect(wxDC *dc, wxBitmap *bitmap, wxRect *rect, int flag) -{ - dc->BeginDrawing(); - - // Ultimately, this functionality should be built into wxWindows, - // and optimized for each platform. E.g. on Windows, use DrawText - // passing a clipping rectangle, so that the wxWindows clipping region - // does not have to be used to implement this. - - // If we're already clipping, we need to find the intersection - // between current clipping area and text clipping area. - - wxRect clipRect; - wxRect clipRect2; - long clipX, clipY, clipW, clipH; - dc->GetClippingBox(&clipX, &clipY, &clipW, &clipH); - clipRect.x = (int)clipX; clipRect.y = (int)clipY; - clipRect.width = (int)clipW; clipRect.height = (int)clipH; - - bool alreadyClipping = TRUE; - - if (clipRect.x == 0 && clipRect.y == 0 && clipRect.width == 0 && clipRect.height == 0) - { - alreadyClipping = FALSE; - clipRect2.x = rect->x; clipRect2.y = rect->y; - clipRect2.width = rect->width; clipRect2.height = rect->height; - } - else - { - // Find intersection. - if (!wxRectIntersection(rect, &clipRect, &clipRect2)) - return; - } - - if (alreadyClipping) - dc->DestroyClippingRegion(); - - dc->SetClippingRegion(clipRect2.x, clipRect2.y, clipRect2.width, clipRect2.height); - float bitmapWidth, bitmapHeight; - - bitmapWidth = bitmap->GetWidth(); - bitmapHeight = bitmap->GetHeight(); - - // Do alignment - long x,y; - switch (flag) - { - case wxRIGHT: - { - x = (long)(rect->x + rect->width - bitmapWidth - 1); - y = (long)(rect->y + (rect->height - bitmapHeight)/2.0); - break; - } - case wxCENTRE: - { - x = (long)(rect->x + (rect->width - bitmapWidth)/2.0); - y = (long)(rect->y + (rect->height - bitmapHeight)/2.0); - break; - } - case wxLEFT: - default: - { - x = (long)(rect->x + 1); - y = (long)(rect->y + (rect->height - bitmapHeight)/2.0); - break; - } - } - wxMemoryDC dcTemp; - dcTemp.SelectObject(*bitmap); - - dc->Blit( (long)x, (long)y, (long)bitmapWidth, (long)bitmapHeight, &dcTemp, 0, 0); - dcTemp.SelectObject(wxNullBitmap); - - dc->DestroyClippingRegion(); - - // Restore old clipping - if (alreadyClipping) - dc->SetClippingRegion(clipRect.x, clipRect.y, clipRect.width, clipRect.height); - - dc->EndDrawing(); -} - -void wxGenericGrid::OnActivate(bool active) -{ - if (active) - { - // Edit control should always have the focus - if (GetTextItem() && GetEditable()) - { - GetTextItem()->SetFocus(); - wxGridCell *cell = GetCell(GetCursorRow(), GetCursorColumn()); - if (cell) - GetTextItem()->SetValue(cell->GetTextValue()); - } - } -} - -void wxGenericGrid::SetCellValue(const wxString& val, int row, int col) -{ - wxGridCell *cell = GetCell(row, col); - if (cell) - { - cell->SetTextValue(val); - - RefreshCell(row, col, TRUE); - } -} - -void wxGenericGrid::RefreshCell(int row, int col, bool setText) -{ - // Don't refresh within a pair of batch brackets - if (GetBatchCount() > 0) - return; - - int cw, ch; - GetClientSize(&cw, &ch); - - SetCurrentRect(row, col, cw, ch); - if (m_currentRectVisible) - { - wxGridCell *cell = GetCell(row, col); - - bool currentPos = FALSE; - if (row == m_wCursorRow && col == m_wCursorColumn && GetTextItem() && GetTextItem()->IsShown() && setText) - { - GetTextItem()->SetValue(cell->GetTextValue()); - currentPos = TRUE; - } - // Gets refreshed anyway in MSW -#ifdef __WXMSW__ - if (!currentPos) -#endif - { - wxClientDC dc(this); - dc.BeginDrawing(); - DrawCellBackground(& dc, &m_currentRect, row, col); - DrawCellValue(& dc, &m_currentRect, row, col); - dc.EndDrawing(); - } - } -} - -wxString& wxGenericGrid::GetCellValue(int row, int col) const -{ - static wxString emptyString(""); - - wxGridCell *cell = GetCell(row, col); - if (cell) - return cell->GetTextValue(); - else - return emptyString; -} - -void wxGenericGrid::SetColumnWidth(int col, int width) -{ - if (col <= m_totalCols) - m_colWidths[col] = width; -} - -int wxGenericGrid::GetColumnWidth(int col) const -{ - if (col <= m_totalCols) - return m_colWidths[col]; - else - return 0; -} - -void wxGenericGrid::SetRowHeight(int row, int height) -{ - if (row <= m_totalRows) - m_rowHeights[row] = height; -} - -int wxGenericGrid::GetRowHeight(int row) const -{ - if (row <= m_totalRows) - return m_rowHeights[row]; - else - return 0; -} - -void wxGenericGrid::SetLabelSize(int orientation, int sz) -{ - if (orientation == wxHORIZONTAL) - m_horizontalLabelHeight = sz; - else - m_verticalLabelWidth = sz; - UpdateDimensions(); - SetCurrentRect(GetCursorRow(), GetCursorColumn()); -} - -int wxGenericGrid::GetLabelSize(int orientation) const -{ - if (orientation == wxHORIZONTAL) - return m_horizontalLabelHeight; - else - return m_verticalLabelWidth; -} - -wxGridCell *wxGenericGrid::GetLabelCell(int orientation, int pos) const -{ - if (orientation == wxHORIZONTAL) - { - if (m_colLabelCells && pos < m_totalCols) - return m_colLabelCells[pos]; - else - return (wxGridCell *) NULL; - } - else - { - if (m_rowLabelCells && pos < m_totalRows) - return m_rowLabelCells[pos]; - else - return (wxGridCell *) NULL; - } -} - -void wxGenericGrid::SetLabelValue(int orientation, const wxString& val, int pos) -{ - wxGridCell *cell = GetLabelCell(orientation, pos); - if (cell) - cell->SetTextValue(val); -} - -wxString& wxGenericGrid::GetLabelValue(int orientation, int pos) const -{ - static wxString emptyString = ""; - wxGridCell *cell = GetLabelCell(orientation, pos); - if (cell) - return cell->GetTextValue(); - else - return emptyString; -} - -void wxGenericGrid::SetLabelAlignment(int orientation, int align) -{ - if (orientation == wxHORIZONTAL) - m_horizontalLabelAlignment = align; - else - m_verticalLabelAlignment = align; - UpdateDimensions(); - SetCurrentRect(GetCursorRow(), GetCursorColumn()); -} - -int wxGenericGrid::GetLabelAlignment(int orientation) const -{ - if (orientation == wxHORIZONTAL) - return m_horizontalLabelAlignment; - else - return m_verticalLabelAlignment; -} - -void wxGenericGrid::SetLabelTextColour(const wxColour& colour) -{ - m_labelTextColour = colour; - -} - -void wxGenericGrid::SetLabelBackgroundColour(const wxColour& colour) -{ - m_labelBackgroundColour = colour; - m_labelBackgroundBrush = * wxTheBrushList->FindOrCreateBrush(m_labelBackgroundColour, wxSOLID); -} - -void wxGenericGrid::SetEditable(bool edit) -{ - m_editable = edit; - if (edit) - { - int controlW, controlH; - m_textItem->GetSize(&controlW, &controlH); - m_editControlPosition.height = controlH; - - m_topOfSheet = m_editControlPosition.x + controlH + 2; - if (m_textItem) - { - m_editingPanel->Show(TRUE); - m_textItem->Show(TRUE); - m_textItem->SetFocus(); - } - } - else - { - m_topOfSheet = 0; - if (m_textItem) - { - m_textItem->Show(FALSE); - m_editingPanel->Show(FALSE); - } - } - UpdateDimensions(); - SetCurrentRect(GetCursorRow(), GetCursorColumn()); - - int cw, ch; - GetClientSize(&cw, &ch); - wxSizeEvent evt; - OnSize(evt); -/* - int cw, ch; - int m_scrollWidth = 16; - GetClientSize(&cw, &ch); - - if (m_vScrollBar) - m_vScrollBar->SetSize(cw - m_scrollWidth, m_topOfSheet, - m_scrollWidth, ch - m_topOfSheet - m_scrollWidth); -*/ -} - -void wxGenericGrid::SetCellAlignment(int flag, int row, int col) -{ - wxGridCell *cell = GetCell(row, col); - if (cell) - cell->SetAlignment(flag); -} - -int wxGenericGrid::GetCellAlignment(int row, int col) const -{ - wxGridCell *cell = GetCell(row, col); - if (cell) - return cell->GetAlignment(); - else - return m_cellAlignment; -} - -void wxGenericGrid::SetCellAlignment(int flag) -{ - m_cellAlignment = flag; - int i,j; - for (i = 0; i < GetRows(); i++) - for (j = 0; j < GetCols(); j++) - if (GetCell(i, j)) - GetCell(i, j)->SetAlignment(flag); -} - -int wxGenericGrid::GetCellAlignment(void) const -{ - return m_cellAlignment; -} - -void wxGenericGrid::SetCellBackgroundColour(const wxColour& col) -{ - m_cellBackgroundColour = col; - int i,j; - for (i = 0; i < GetRows(); i++) - for (j = 0; j < GetCols(); j++) - if (GetCell(i, j)) - GetCell(i, j)->SetBackgroundColour(col); -} - -void wxGenericGrid::SetCellBackgroundColour(const wxColour& val, int row, int col) -{ - wxGridCell *cell = GetCell(row, col); - if (cell) - { - cell->SetBackgroundColour(val); - RefreshCell(row, col); - } -} - -wxColour& wxGenericGrid::GetCellBackgroundColour(int row, int col) const -{ - wxGridCell *cell = GetCell(row, col); - if (cell) - return cell->GetBackgroundColour(); - else - return (wxColour&) m_cellBackgroundColour; -} - -void wxGenericGrid::SetCellTextColour(const wxColour& val, int row, int col) -{ - wxGridCell *cell = GetCell(row, col); - if (cell) - { - cell->SetTextColour(val); - RefreshCell(row, col); - } -} - -void wxGenericGrid::SetCellTextFont(const wxFont& fnt, int row, int col) -{ - wxGridCell *cell = GetCell(row, col); - if (cell) - { - cell->SetFont(fnt); - RefreshCell(row, col); - } -} - -wxFont& wxGenericGrid::GetCellTextFont(int row, int col) const -{ - wxGridCell *cell = GetCell(row, col); - if (cell) - return (wxFont&) cell->GetFont(); - else - return (wxFont&) m_cellTextFont; -} - -wxColour& wxGenericGrid::GetCellTextColour(int row, int col) const -{ - wxGridCell *cell = GetCell(row, col); - if (cell) - return (wxColour&) cell->GetTextColour(); - else - return (wxColour&) m_cellTextColour; -} - -void wxGenericGrid::SetCellTextColour(const wxColour& val) -{ - m_cellTextColour = val; - int i,j; - for (i = 0; i < GetRows(); i++) - for (j = 0; j < GetCols(); j++) - if (GetCell(i, j)) - GetCell(i, j)->SetTextColour(val); -} - -void wxGenericGrid::SetCellTextFont(const wxFont& fnt) -{ - m_cellTextFont = fnt; - int i,j; - for (i = 0; i < GetRows(); i++) - for (j = 0; j < GetCols(); j++) - if (GetCell(i, j)) - GetCell(i, j)->SetFont(fnt); -} - -void wxGenericGrid::SetCellBitmap(wxBitmap *bitmap, int row, int col) -{ - wxGridCell *cell = GetCell(row, col); - if (cell) - { - cell->SetCellBitmap(bitmap); - RefreshCell(row, col); - } -} - -wxBitmap *wxGenericGrid::GetCellBitmap(int row, int col) const -{ - wxGridCell *cell = GetCell(row, col); - if (cell) - { - return cell->GetCellBitmap(); - } - else - return (wxBitmap *) NULL; -} - -bool wxGenericGrid::InsertCols(int pos, int n, bool updateLabels) -{ - if (pos > m_totalCols) - return FALSE; - - if (!m_gridCells) - return CreateGrid(1, n); - else - { - int i, j; - // Cells - for (i = 0; i < m_totalRows; i++) - { - wxGridCell **cols = m_gridCells[i]; - wxGridCell **newCols = new wxGridCell *[m_totalCols + n]; - for (j = 0; j < pos; j++) - newCols[j] = cols[j]; - for (j = pos; j < pos + n; j++) - newCols[j] = new wxGridCell(this); - for (j = pos + n; j < m_totalCols + n; j++) - newCols[j] = cols[j - n]; - - delete[] cols; - m_gridCells[i] = newCols; - } - - // Column widths - short *newColWidths = new short[m_totalCols + n]; - for (j = 0; j < pos; j++) - newColWidths[j] = m_colWidths[j]; - for (j = pos; j < pos + n; j++) - newColWidths[j] = wxGRID_DEFAULT_CELL_WIDTH; - for (j = pos + n; j < m_totalCols + n; j++) - newColWidths[j] = m_colWidths[j - n]; - delete[] m_colWidths; - m_colWidths = newColWidths; - - // Column labels - wxGridCell **newLabels = new wxGridCell *[m_totalCols + n]; - for (j = 0; j < pos; j++) - newLabels[j] = m_colLabelCells[j]; - for (j = pos; j < pos + n; j++) - newLabels[j] = new wxGridCell(this); - for (j = pos + n; j < m_totalCols + n; j++) - newLabels[j] = m_colLabelCells[j - n]; - - delete[] m_colLabelCells; - m_colLabelCells = newLabels; - - m_totalCols += n; - - if (updateLabels) { - //OnChangeLabels(); - wxGridEvent g_evt(GetId(), wxEVT_GRID_CHANGE_LABELS, this); - GetEventHandler()->ProcessEvent(g_evt); - } - - UpdateDimensions(); - AdjustScrollbars(); - return TRUE; - } -} - -bool wxGenericGrid::InsertRows(int pos, int n, bool updateLabels) -{ - if (pos > m_totalRows) - return FALSE; - - if (!m_gridCells) - return CreateGrid(n, 1); - else - { - int i, j; - - wxGridCell ***rows = new wxGridCell **[m_totalRows + n]; - - // Cells - for (i = 0; i < pos; i++) - rows[i] = m_gridCells[i]; - - for (i = pos; i < pos + n; i++) - { - rows[i] = new wxGridCell *[m_totalCols]; - for (j = 0; j < m_totalCols; j++) - rows[i][j] = new wxGridCell(this); - } - - for (i = pos + n; i < m_totalRows + n; i++) - rows[i] = m_gridCells[i - n]; - - delete[] m_gridCells; - m_gridCells = rows; - - // Row heights - short *newRowHeights = new short[m_totalRows + n]; - for (i = 0; i < pos; i++) - newRowHeights[i] = m_rowHeights[i]; - for (i = pos; i < pos + n; i++) - newRowHeights[i] = wxGRID_DEFAULT_CELL_HEIGHT; - for (i = pos + n; i < m_totalRows + n; i++) - newRowHeights[i] = m_rowHeights[i - n]; - delete[] m_rowHeights; - m_rowHeights = newRowHeights; - - // Column labels - wxGridCell **newLabels = new wxGridCell *[m_totalRows + n]; - for (i = 0; i < pos; i++) - newLabels[i] = m_rowLabelCells[i]; - for (i = pos; i < pos + n; i++) - newLabels[i] = new wxGridCell(this); - for (i = pos + n; i < m_totalRows + n; i++) - newLabels[i] = m_rowLabelCells[i - n]; - - delete[] m_rowLabelCells; - m_rowLabelCells = newLabels; - - m_totalRows += n; - - if (updateLabels) { - //OnChangeLabels(); - wxGridEvent g_evt(GetId(), wxEVT_GRID_CHANGE_LABELS, this); - GetEventHandler()->ProcessEvent(g_evt); - } - - UpdateDimensions(); - AdjustScrollbars(); - return TRUE; - } -} - -bool wxGenericGrid::AppendCols(int n, bool updateLabels) -{ - return InsertCols(GetCols(), n, updateLabels); -} - -bool wxGenericGrid::AppendRows(int n, bool updateLabels) -{ - return InsertRows(GetRows(), n, updateLabels); -} - -bool wxGenericGrid::DeleteRows(int pos, int n, bool updateLabels) -{ - if (pos > m_totalRows) - return FALSE; - if (!m_gridCells) - return FALSE; - - int i; - - wxGridCell ***rows = new wxGridCell **[m_totalRows - n]; - - // Cells - for (i = 0; i < pos; i++) - rows[i] = m_gridCells[i]; - - for (i = pos + n; i < m_totalRows; i++) - rows[i-n] = m_gridCells[i]; - - delete[] m_gridCells; - m_gridCells = rows; - - // Row heights - short *newRowHeights = new short[m_totalRows - n]; - for (i = 0; i < pos; i++) - newRowHeights[i] = m_rowHeights[i]; - for (i = pos + n; i < m_totalRows; i++) - newRowHeights[i-n] = m_rowHeights[i]; - delete[] m_rowHeights; - m_rowHeights = newRowHeights; - - // Column labels - wxGridCell **newLabels = new wxGridCell *[m_totalRows - n]; - for (i = 0; i < pos; i++) - newLabels[i] = m_rowLabelCells[i]; - for (i = pos + n; i < m_totalRows; i++) - newLabels[i-n] = m_rowLabelCells[i]; - - delete[] m_rowLabelCells; - m_rowLabelCells = newLabels; - - m_totalRows -= n; - - if (updateLabels){ - //OnChangeLabels(); - wxGridEvent g_evt(GetId(), wxEVT_GRID_CHANGE_LABELS, this); - GetEventHandler()->ProcessEvent(g_evt); - } - UpdateDimensions(); - AdjustScrollbars(); - return TRUE; -} - -bool wxGenericGrid::DeleteCols(int pos, int n, bool updateLabels) -{ - if (pos + n > m_totalCols) - return FALSE; - if (!m_gridCells) - return FALSE; - - int i, j; - - // Cells - for (i = 0; i < m_totalRows; i++) - { - wxGridCell **cols = m_gridCells[i]; - wxGridCell **newCols = new wxGridCell *[m_totalCols - n]; - for (j = 0; j < pos; j++) - newCols[j] = cols[j]; - for (j = pos; j < pos + n; j++) - delete cols[j]; - for (j = pos + n; j < m_totalCols; j++) - newCols[j-n] = cols[j]; - - delete[] cols; - m_gridCells[i] = newCols; - } - - // Column widths - short *newColWidths = new short[m_totalCols - n]; - for (j = 0; j < pos; j++) - newColWidths[j] = m_colWidths[j]; - for (j = pos + n; j < m_totalCols; j++) - newColWidths[j-n] = m_colWidths[j]; - delete[] m_colWidths; - m_colWidths = newColWidths; - - // Column labels - wxGridCell **newLabels = new wxGridCell *[m_totalCols - n]; - for (j = 0; j < pos; j++) - newLabels[j] = m_colLabelCells[j]; - for (j = pos + n; j < m_totalCols; j++) - newLabels[j-n] = m_colLabelCells[j]; - - delete[] m_colLabelCells; - m_colLabelCells = newLabels; - - m_totalCols -= n; - - if (updateLabels) { - //OnChangeLabels(); - wxGridEvent g_evt(GetId(), wxEVT_GRID_CHANGE_LABELS, this); - GetEventHandler()->ProcessEvent(g_evt); - } - UpdateDimensions(); - AdjustScrollbars(); - return TRUE; -} - -void wxGenericGrid::SetGridCursor(int row, int col) -{ - if (row >= m_totalRows || col >= m_totalCols) - return; - - if (row == GetCursorRow() && col == GetCursorColumn()) - return; - - wxClientDC dc(this); - dc.BeginDrawing(); - - SetGridClippingRegion(& dc); - - if (m_currentRectVisible) - HighlightCell(& dc); - - m_wCursorRow = row; - m_wCursorColumn = col; - - int cw, ch; - GetClientSize(&cw, &ch); - - SetCurrentRect(row, col, cw, ch); - - if (m_currentRectVisible) - HighlightCell(& dc); - - dc.DestroyClippingRegion(); - dc.EndDrawing(); -} - -/* - * Grid cell - */ - -wxGridCell::wxGridCell(wxGenericGrid *window) -{ - cellBitmap = (wxBitmap *) NULL; - font = wxNullFont; - backgroundBrush = wxNullBrush; - if (window) - textColour = window->GetCellTextColour(); - else - textColour.Set(0,0,0); - if (window) - backgroundColour = window->GetCellBackgroundColour(); - else - backgroundColour.Set(255,255,255); - - if (window) - font = window->GetCellTextFont(); - else - font = * wxTheFontList->FindOrCreateFont(12, wxSWISS, wxNORMAL, wxNORMAL); - - SetBackgroundColour(backgroundColour); - - if (window) - alignment = window->GetCellAlignment(); - else - alignment = wxLEFT; -} - -wxGridCell::~wxGridCell(void) -{ -} - -void wxGridCell::SetBackgroundColour(const wxColour& colour) -{ - backgroundColour = colour; - backgroundBrush = * wxTheBrushList->FindOrCreateBrush(backgroundColour, wxSOLID); -} - -void wxGenericGrid::OnText(wxCommandEvent& WXUNUSED(ev) ) -{ - wxGenericGrid *grid = this; - wxGridCell *cell = grid->GetCell(grid->GetCursorRow(), grid->GetCursorColumn()); - if (cell && grid->CurrentCellVisible()) - { - cell->SetTextValue(grid->GetTextItem()->GetValue()); - wxClientDC dc(grid); - - dc.BeginDrawing(); - grid->SetGridClippingRegion(& dc); - grid->DrawCellBackground(& dc, &grid->GetCurrentRect(), grid->GetCursorRow(), grid->GetCursorColumn()); - grid->DrawCellValue(& dc, &grid->GetCurrentRect(), grid->GetCursorRow(), grid->GetCursorColumn()); - grid->HighlightCell(& dc); - dc.DestroyClippingRegion(); - dc.EndDrawing(); - - //grid->OnCellChange(grid->GetCursorRow(), grid->GetCursorColumn()); - wxGridEvent g_evt(GetId(), wxEVT_GRID_CELL_CHANGE, grid, - grid->GetCursorRow(), grid->GetCursorColumn()); - GetEventHandler()->ProcessEvent(g_evt); - -// grid->DrawCellText(); - } -} - -void wxGenericGrid::OnGridScroll(wxScrollEvent& ev) -{ - static bool inScroll = FALSE; - - if ( inScroll ) - return; - - inScroll = TRUE; - wxGenericGrid *win = this; - - bool change = FALSE; - - if (ev.GetEventObject() == win->GetHorizScrollBar()) - { - change = (ev.GetPosition() != m_scrollPosX); - win->SetScrollPosX(ev.GetPosition()); - } - else - { - change = (ev.GetPosition() != m_scrollPosY); - win->SetScrollPosY(ev.GetPosition()); - } - - win->UpdateDimensions(); - - win->SetCurrentRect(win->GetCursorRow(), win->GetCursorColumn()); - - // Because rows and columns can be arbitrary sizes, - // the scrollbars will need to be adjusted to reflect the - // current view. - AdjustScrollbars(); - - if (change) win->Refresh(FALSE); - inScroll = FALSE; - -} - - -//---------------------------------------------------------------------- -// Default wxGridEvent handlers -// (just redirect to the pre-existing virtual methods) - -void wxGenericGrid::_OnSelectCell(wxGridEvent& ev) -{ - OnSelectCell(ev.m_row, ev.m_col); -} - -void wxGenericGrid::_OnCreateCell(wxGridEvent& ev) -{ - ev.m_cell = OnCreateCell(); -} - -void wxGenericGrid::_OnChangeLabels(wxGridEvent& WXUNUSED(ev)) -{ - OnChangeLabels(); -} - -void wxGenericGrid::_OnChangeSelectionLabel(wxGridEvent& WXUNUSED(ev)) -{ - OnChangeSelectionLabel(); -} - -void wxGenericGrid::_OnCellChange(wxGridEvent& ev) -{ - OnCellChange(ev.m_row, ev.m_col); -} - -void wxGenericGrid::_OnCellLeftClick(wxGridEvent& ev) -{ - OnCellLeftClick(ev.m_row, ev.m_col, ev.m_x, ev.m_y, ev.m_control, ev.m_shift); -} - -void wxGenericGrid::_OnCellRightClick(wxGridEvent& ev) -{ - OnCellRightClick(ev.m_row, ev.m_col, ev.m_x, ev.m_y, ev.m_control, ev.m_shift); -} - -void wxGenericGrid::_OnLabelLeftClick(wxGridEvent& ev) -{ - OnLabelLeftClick(ev.m_row, ev.m_col, ev.m_x, ev.m_y, ev.m_control, ev.m_shift); -} - -void wxGenericGrid::_OnLabelRightClick(wxGridEvent& ev) -{ - OnLabelRightClick(ev.m_row, ev.m_col, ev.m_x, ev.m_y, ev.m_control, ev.m_shift); -} - - diff --git a/src/generic/helpext.cpp b/src/generic/helpext.cpp deleted file mode 100644 index 80e91ebdc4..0000000000 --- a/src/generic/helpext.cpp +++ /dev/null @@ -1,84 +0,0 @@ -/*-*- c++ -*-******************************************************** - * helpext.cpp - an external help controller for wxWindows * - * * - * (C) 1999 by Karsten Ballüder (Ballueder@usa.net) * - * * - * $Id$ - *******************************************************************/ -#ifdef __GNUG__ -# pragma implementation "wxexthlp.h" -#endif - -#include "wx/setup.h" -#include "wx/helpbase.h" -#include "wx/generic/helpext.h" -#include "wx/string.h" -#include "wx/utils.h" -#include "wx/list.h" -#include -#include -#include -#include - -IMPLEMENT_CLASS(wxExtHelpController, wxHTMLHelpControllerBase) - -/** - This class implements help via an external browser. - It requires the name of a directory containing the documentation - and a file mapping numerical Section numbers to relative URLS. -*/ - -wxExtHelpController::wxExtHelpController(void) -{ - m_BrowserName = WXEXTHELP_DEFAULTBROWSER; - m_BrowserIsNetscape = WXEXTHELP_DEFAULTBROWSER_IS_NETSCAPE; - - char *browser = getenv(WXEXTHELP_ENVVAR_BROWSER); - if(browser) - { - m_BrowserName = browser; - browser = getenv(WXEXTHELP_ENVVAR_BROWSERISNETSCAPE); - m_BrowserIsNetscape = browser && (atoi(browser) != 0); - } -} - - -void -wxExtHelpController::SetBrowser(wxString const & browsername, bool isNetscape) -{ - m_BrowserName = browsername; - m_BrowserIsNetscape = isNetscape; -} - -bool -wxExtHelpController::DisplayHelp(wxString const &relativeURL) -{ - wxBusyCursor b; // display a busy cursor - wxString command; - - if(m_BrowserIsNetscape) // try re-loading first - { - wxString lockfile; - wxGetHomeDir(&lockfile); - lockfile << WXEXTHELP_SEPARATOR << ".netscape/lock"; - struct stat statbuf; - if(lstat(lockfile.c_str(), &statbuf) == 0) - // cannot use wxFileExists, because it's a link pointing to a - // non-existing location if(wxFileExists(lockfile)) - { - long success; - command << m_BrowserName << " -remote openURL(" - << "file://" << m_MapFile - << WXEXTHELP_SEPARATOR << relativeURL << ")"; - success = wxExecute(command); - if(success != 0 ) // returns PID on success - return TRUE; - } - } - command = m_BrowserName; - command << " file://" - << m_MapFile << WXEXTHELP_SEPARATOR << relativeURL; - return wxExecute(command) != 0; -} - - diff --git a/src/generic/helphtml.cpp b/src/generic/helphtml.cpp deleted file mode 100644 index 228b436b11..0000000000 --- a/src/generic/helphtml.cpp +++ /dev/null @@ -1,275 +0,0 @@ -/*-*- c++ -*-******************************************************** - * helphtml.cpp - base class for html help systems * - * * - * (C) 1999 by Karsten Ballüder (Ballueder@usa.net) * - * * - * $Id$ - *******************************************************************/ -#ifdef __GNUG__ -# pragma implementation "helphtml.h" -#endif - -#include "wx/setup.h" -#include "wx/helpbase.h" -#include "wx/generic/helpext.h" -#include "wx/string.h" -#include "wx/utils.h" -#include "wx/list.h" -#include "wx/intl.h" -#include -#include -#include -#include - - - -class wxExtHelpMapEntry : public wxObject -{ -public: - int id; - wxString url; - wxString doc; - wxExtHelpMapEntry(int iid, wxString const &iurl, wxString const &idoc) - { id = iid; url = iurl; doc = idoc; } -}; - -IMPLEMENT_ABSTRACT_CLASS(wxHTMLHelpControllerBase, wxHelpControllerBase) - -/** - This class implements help via an external browser. - It requires the name of a directory containing the documentation - and a file mapping numerical Section numbers to relative URLS. -*/ - -wxHTMLHelpControllerBase::wxHTMLHelpControllerBase(void) -{ - m_MapList = (wxList*) NULL; - m_NumOfEntries = 0; -} - -void -wxHTMLHelpControllerBase::DeleteList(void) -{ - if(m_MapList) - { - wxNode *node = m_MapList->First(); - while (node) - { - delete (wxExtHelpMapEntry *)node->Data(); - delete node; - node = m_MapList->First(); - } - delete m_MapList; - m_MapList = (wxList*) NULL; - } -} - -wxHTMLHelpControllerBase::~wxHTMLHelpControllerBase(void) -{ - DeleteList(); -} - -/** This must be called to tell the controller where to find the - documentation. - @param file - NOT a filename, but a directory name. - @return true on success -*/ -bool -wxHTMLHelpControllerBase::Initialize(const wxString& file) -{ - return LoadFile(file); -} - - -// ifile is the name of the base help directory -bool -wxHTMLHelpControllerBase::LoadFile(const wxString& ifile) -{ - wxString mapFile, file, url, doc; - int id,i,len; - char buffer[WXEXTHELP_BUFLEN]; - - wxBusyCursor b; // display a busy cursor - - if(! ifile.IsEmpty()) - { - file = ifile; - if(! wxIsAbsolutePath(file)) - { - char* f = wxGetWorkingDirectory(); - file = f; - delete[] f; // wxGetWorkingDirectory returns new memory - file << WXEXTHELP_SEPARATOR << ifile; - } - else - file = ifile; - - // If a locale is set, look in file/localename, i.e. - // If passed "/usr/local/myapp/help" and the current wxLocale is - // set to be "de", then look in "/usr/local/myapp/help/de/" - // first and fall back to "/usr/local/myapp/help" if that - // doesn't exist. - if(wxGetLocale() && !wxGetLocale()->GetName().IsEmpty()) - { - wxString newfile; - newfile << WXEXTHELP_SEPARATOR << wxGetLocale()->GetName(); - if(wxDirExists(newfile)) - file = newfile; - } - - if(! wxDirExists(file)) - return FALSE; - - mapFile << file << WXEXTHELP_SEPARATOR << WXEXTHELP_MAPFILE; - } - else // try to reload old file - mapFile = m_MapFile; - - if(! wxFileExists(mapFile)) - return FALSE; - - DeleteList(); - m_MapList = new wxList; - m_NumOfEntries = 0; - - FILE *input = fopen(mapFile.c_str(),"rt"); - if(! input) - return FALSE; - do - { - if(fgets(buffer,WXEXTHELP_BUFLEN,input) && *buffer != WXEXTHELP_COMMENTCHAR) - { - len = strlen(buffer); - if(buffer[len-1] == '\n') - buffer[len-1] = '\0'; // cut of trailing newline - if(sscanf(buffer,"%d", &id) != 1) - break; // error - for(i=0; isdigit(buffer[i])||isspace(buffer[i])||buffer[i]=='-'; i++) - ; // find begin of URL - url = ""; - while(buffer[i] && ! isspace(buffer[i]) && buffer[i] != - WXEXTHELP_COMMENTCHAR) - url << buffer[i++]; - while(buffer[i] && buffer[i] != WXEXTHELP_COMMENTCHAR) - i++; - doc = ""; - if(buffer[i]) - doc = (buffer + i + 1); // skip the comment character - m_MapList->Append(new wxExtHelpMapEntry(id,url,doc)); - m_NumOfEntries++; - } - }while(! feof(input)); - fclose(input); - - m_MapFile = file; // now it's valid - return TRUE; -} - - -bool -wxHTMLHelpControllerBase::DisplayContents(void) -{ - if(! m_NumOfEntries) - return FALSE; - wxBusyCursor b; // display a busy cursor - return KeywordSearch(""); -} - -bool -wxHTMLHelpControllerBase::DisplaySection(int sectionNo) -{ - if(! m_NumOfEntries) - return FALSE; - - wxBusyCursor b; // display a busy cursor - wxNode *node = m_MapList->First(); - wxExtHelpMapEntry *entry; - while(node) - { - entry = (wxExtHelpMapEntry *)node->Data(); - if(entry->id == sectionNo) - return DisplayHelp(entry->url); - node = node->Next(); - } - return FALSE; -} - -bool -wxHTMLHelpControllerBase::DisplayBlock(long blockNo) -{ - return DisplaySection((int)blockNo); -} - -bool -wxHTMLHelpControllerBase::KeywordSearch(const wxString& k) -{ - if(! m_NumOfEntries) - return FALSE; - - wxBusyCursor b; // display a busy cursor - wxString *choices = new wxString[m_NumOfEntries]; - wxString *urls = new wxString[m_NumOfEntries]; - wxString compA, compB; - - int idx = 0, j; - bool rc; - bool showAll = k.IsEmpty(); - wxNode *node = m_MapList->First(); - wxExtHelpMapEntry *entry; - - compA = k; compA.LowerCase(); // we compare case insensitive - while(node) - { - entry = (wxExtHelpMapEntry *)node->Data(); - compB = entry->doc; compB.LowerCase(); - if((showAll || compB.Contains(k)) && ! compB.IsEmpty()) - { - urls[idx] = entry->url; - // doesn't work: - // choices[idx] = (**i).doc.Contains((**i).doc.Before(WXEXTHELP_COMMENTCHAR)); - //if(choices[idx].IsEmpty()) // didn't contain the ';' - // choices[idx] = (**i).doc; - choices[idx] = ""; - for(j=0;entry->doc.c_str()[j] - && entry->doc.c_str()[j] != WXEXTHELP_COMMENTCHAR; j++) - choices[idx] << entry->doc.c_str()[j]; - idx++; - } - node = node->Next(); - } - - if(idx == 1) - rc = DisplayHelp(urls[0]); - else if(idx == 0) - { - wxMessageBox(_("No entries found.")); - rc = FALSE; - } - else - { - idx = wxGetSingleChoiceIndex(showAll ? _("Help Index") : _("Relevant entries:"), - showAll ? _("Help Index") : _("Entries found"), - idx,choices); - if(idx != -1) - rc = DisplayHelp(urls[idx]); - else - rc = FALSE; - } - delete[] urls; - delete[] choices; - - return rc; -} - - -bool -wxHTMLHelpControllerBase::Quit(void) -{ - return TRUE; -} - -void -wxHTMLHelpControllerBase::OnQuit(void) -{ -} - diff --git a/src/generic/helpxlp.cpp b/src/generic/helpxlp.cpp deleted file mode 100644 index 13d43fbb63..0000000000 --- a/src/generic/helpxlp.cpp +++ /dev/null @@ -1,265 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: helpxlp.cpp -// Purpose: Help system: wxHelp implementation -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "helpxlp.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/defs.h" -#endif - -#include "wx/generic/helpxlp.h" - -#if wxUSE_HELP -#include - -#ifdef __X__ -#include - -#ifdef SUN_CC -#include -#endif // SUN_CC -#ifdef ____HPUX__ -#include -#endif // ____HPUX__ -#endif // __X__ - -#include - -// Timeout in seconds -#define WX_HELP_TIMEOUT 15 /* was 30 */ - -// MAX path length -#define _MAXPATHLEN 500 - -// MAX length of Help descriptor -#define _MAX_HELP_LEN 500 - -#include "wx/generic/helpxlp.h" - -#if !USE_SHARED_LIBRARY - -#ifdef __WXMSW__ -IMPLEMENT_CLASS(wxXLPHelpClient, wxDDEClient) -IMPLEMENT_CLASS(wxXLPHelpConnection, wxDDEConnection) -#else -IMPLEMENT_CLASS(wxXLPHelpClient, wxTCPClient) -IMPLEMENT_CLASS(wxXLPHelpConnection, wxTCPConnection) -#endif - -IMPLEMENT_CLASS(wxXLPHelpController, wxHelpControllerBase) -#endif - -// suppress annoying warning "'this' used in base member init list" (so what?) -#ifdef _MSC_VER -#pragma warning(disable: 4355) -#endif // Visual C++ - -wxXLPHelpController::wxXLPHelpController(void) - : helpClient(this) -{ - helpFile = ""; helpServer = -1; helpHost = ""; - helpRunning = FALSE; helpConnection = NULL; -} - -#ifdef _MSC_VER -#pragma warning(default: 4355) -#endif // Visual C++ - -wxXLPHelpController::~wxXLPHelpController(void) -{ -} - -bool wxXLPHelpController::Initialize(const wxString& filename, int server) -{ -#ifdef __X__ - char host_buf[255]; - if (wxGetHostName(host_buf, sizeof(host_buf))) - helpHost = host_buf; - else helpHost = ""; -#endif - - helpFile = filename; - helpServer = server; - return TRUE; -} - -bool wxXLPHelpController::LoadFile(const wxString& file) -{ - helpFile = file; - - if (!helpRunning) - { - if (!Run()) - return FALSE; - } - char buf[_MAX_HELP_LEN]; - sprintf(buf, "f %s", (const char*) file); - if (helpConnection) - return helpConnection->Execute(buf); - else return FALSE; -} - -bool wxXLPHelpController::DisplayContents(void) -{ - if (!helpRunning) - { - if (!Run()) - return FALSE; - } - if (helpConnection) - return helpConnection->Execute("s -1"); - else - return FALSE; -} - -bool wxXLPHelpController::DisplaySection(int section) -{ - if (!helpRunning) - { - if (!Run()) - return FALSE; - } - char buf[_MAX_HELP_LEN]; - sprintf(buf, "s %d", section); - if (helpConnection) - return helpConnection->Execute(buf); - else return FALSE; -} - -bool wxXLPHelpController::DisplayBlock(long block) -{ - if (!helpRunning) - { - if (!Run()) - return FALSE; - } - char buf[_MAX_HELP_LEN]; - sprintf(buf, "b %ld", block); - if (helpConnection) - return helpConnection->Execute(buf); - else return FALSE; -} - -bool wxXLPHelpController::KeywordSearch(const wxString& k) -{ - if (!helpRunning) - { - if (!Run()) - return FALSE; - } - char buf[500]; - sprintf(buf, "k %s", (const char*) k); - if (helpConnection) - return helpConnection->Execute(buf); - else return FALSE; -} - -bool wxXLPHelpController::Quit(void) -{ - if (helpConnection) - return helpConnection->Disconnect(); // Calls OnQuit via OnDisconnect - else return TRUE; -} - -void wxXLPHelpController::OnQuit(void) -{ -} - -bool wxXLPHelpController::Run(void) -{ -#ifdef __X__ - if (!helpFile || !helpHost || helpRunning) - return FALSE; -#endif -#ifdef __WXMSW__ - if (!helpFile || helpRunning) - return FALSE; -#endif - - time_t current_time; -#ifdef __X__ - // Invent a server name that's likely to be unique but different from - // last time - (void)time(¤t_time); - if (helpServer == -1) - helpServer = (int)(4000 + (current_time % 4000)); -#else - // Only one instance of wxHelp at a time - helpServer = 4000; -#endif - - char server[32]; - sprintf(server, "%d", helpServer); -#ifdef __WXMSW__ - // Only one instance of wxHelp under Windows. - // See if there's already an instance of wxHelp - if ((helpConnection = (wxXLPHelpConnection *)helpClient.MakeConnection(helpHost, server, "WXHELP"))) - { - helpRunning = TRUE; - return TRUE; - } -#endif - - // Start help process in server modus -// char *argv[] = {"wxhelp", "-server", server, NULL}; // HP compiler complains - char *argv[4]; - argv[0] = "wxhelp"; - argv[1] = "-server"; - argv[2] = server; - argv[3] = NULL; - - if (wxExecute((char **)argv) == FALSE) - return FALSE; // Maybe we should print a message? - - time_t start_time; - (void)time(&start_time); - // Give it some time to respond - do { - wxSleep(1); - helpConnection = (wxXLPHelpConnection *)helpClient.MakeConnection(helpHost, server, "WXHELP"); - (void)time(¤t_time); - } while (!helpConnection && ((current_time - start_time) < WX_HELP_TIMEOUT)); - - if (helpConnection == NULL) { - char buf[100]; - sprintf(buf, (const char *) _("Connection to wxHelp timed out in %d seconds"), WX_HELP_TIMEOUT); - (void)wxMessageBox(buf, _("Error")); - return FALSE; - } - helpRunning = TRUE; - return TRUE; -} - -wxXLPHelpConnection::wxXLPHelpConnection(wxXLPHelpController *instance) -{ - helpInstance = instance; -} - -bool wxXLPHelpConnection::OnDisconnect(void) -{ - helpInstance->OnQuit(); - helpInstance->helpRunning = FALSE; - helpInstance->helpConnection = NULL; - helpInstance->helpServer = -1; - delete this; - return TRUE; -} - -#endif // wxUSE_HELP diff --git a/src/generic/imaglist.cpp b/src/generic/imaglist.cpp deleted file mode 100644 index b0dc6594c7..0000000000 --- a/src/generic/imaglist.cpp +++ /dev/null @@ -1,147 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: imaglist.cpp -// Purpose: -// Author: Robert Roebling -// Id: $id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "imaglist.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#include "wx/generic/imaglist.h" - -//----------------------------------------------------------------------------- -// wxImageList -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxImageList, wxObject) - -wxImageList::wxImageList( int width, int height, bool WXUNUSED(mask), int WXUNUSED(initialCount) ) -{ - m_width = width; - m_height = height; - Create(); -} - -wxImageList::~wxImageList() -{ -} - -int wxImageList::GetImageCount() const -{ - return m_images.Number(); -} - -bool wxImageList::Create() -{ - m_images.DeleteContents( TRUE ); - return TRUE; -} - -int wxImageList::Add( const wxBitmap &bitmap ) -{ - if (bitmap.IsKindOf(CLASSINFO(wxIcon))) - m_images.Append( new wxIcon( (const wxIcon&) bitmap ) ); - else - m_images.Append( new wxBitmap(bitmap) ); - return m_images.Number(); -} - -const wxBitmap *wxImageList::GetBitmap( int index ) const -{ - wxNode *node = m_images.Nth( index ); - - wxCHECK_MSG( node, (wxBitmap *) NULL, "wrong index in image list" ); - - return (wxBitmap*)node->Data(); -} - -bool wxImageList::Replace( int index, const wxBitmap &bitmap ) -{ - wxNode *node = m_images.Nth( index ); - - wxCHECK_MSG( node, FALSE, "wrong index in image list" ); - - wxBitmap* newBitmap = NULL; - if (bitmap.IsKindOf(CLASSINFO(wxIcon))) - newBitmap = new wxIcon( (const wxIcon&) bitmap ); - else - newBitmap = new wxBitmap(bitmap) ; - - if (index == m_images.Number()-1) - { - m_images.DeleteNode( node ); - m_images.Append( newBitmap ); - } - else - { - wxNode *next = node->Next(); - m_images.DeleteNode( node ); - m_images.Insert( next, newBitmap ); - } - - return TRUE; -} - -bool wxImageList::Remove( int index ) -{ - wxNode *node = m_images.Nth( index ); - - wxCHECK_MSG( node, FALSE, "wrong index in image list" ); - - m_images.DeleteNode( node ); - - return TRUE; -} - -bool wxImageList::RemoveAll() -{ - m_images.Clear(); - - return TRUE; -} - -bool wxImageList::GetSize( int index, int &width, int &height ) const -{ - width = 0; - height = 0; - - wxNode *node = m_images.Nth( index ); - - wxCHECK_MSG( node, FALSE, "wrong index in image list" ); - - wxBitmap *bm = (wxBitmap*)node->Data(); - width = bm->GetWidth(); - height = bm->GetHeight(); - - return TRUE; -} - -bool wxImageList::Draw( int index, wxDC &dc, int x, int y, - int flags, bool WXUNUSED(solidBackground) ) -{ - wxNode *node = m_images.Nth( index ); - - wxCHECK_MSG( node, FALSE, "wrong index in image list" ); - - wxBitmap *bm = (wxBitmap*)node->Data(); - - if (bm->IsKindOf(CLASSINFO(wxIcon))) - dc.DrawIcon( * ((wxIcon*) bm), x, y); - else - dc.DrawBitmap( *bm, x, y, (flags & wxIMAGELIST_DRAW_TRANSPARENT) > 0 ); - - return TRUE; -} - - diff --git a/src/generic/laywin.cpp b/src/generic/laywin.cpp deleted file mode 100644 index c7d54c931d..0000000000 --- a/src/generic/laywin.cpp +++ /dev/null @@ -1,234 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: laywin.cpp -// Purpose: Implements a simple layout algorithm, plus -// wxSashLayoutWindow which is an example of a window with -// layout-awareness (via event handlers). This is suited to -// IDE-style window layout. -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "laywin.h" -#endif - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#include "wx/mdi.h" -#endif - -#include "wx/laywin.h" - -IMPLEMENT_DYNAMIC_CLASS(wxQueryLayoutInfoEvent, wxEvent) -IMPLEMENT_DYNAMIC_CLASS(wxCalculateLayoutEvent, wxEvent) - -IMPLEMENT_CLASS(wxSashLayoutWindow, wxSashWindow) - -BEGIN_EVENT_TABLE(wxSashLayoutWindow, wxSashWindow) - EVT_CALCULATE_LAYOUT(wxSashLayoutWindow::OnCalculateLayout) - EVT_QUERY_LAYOUT_INFO(wxSashLayoutWindow::OnQueryLayoutInfo) -END_EVENT_TABLE() - -wxSashLayoutWindow::wxSashLayoutWindow(wxWindow *parent, wxWindowID id, const wxPoint& pos, - const wxSize& size, long style, const wxString& name): - wxSashWindow(parent, id, pos, size, style, name) -{ - m_orientation = wxLAYOUT_HORIZONTAL; - m_alignment = wxLAYOUT_TOP; -} - -// This is the function that wxLayoutAlgorithm calls to ascertain the window -// dimensions. -void wxSashLayoutWindow::OnQueryLayoutInfo(wxQueryLayoutInfoEvent& event) -{ - // int flags = event.GetFlags(); - int requestedLength = event.GetRequestedLength(); - - event.SetOrientation(m_orientation); - event.SetAlignment(m_alignment); - - if (m_orientation == wxLAYOUT_HORIZONTAL) - event.SetSize(wxSize(requestedLength, m_defaultSize.y)); - else - event.SetSize(wxSize(m_defaultSize.x, requestedLength)); -} - -// Called by parent to allow window to take a bit out of the -// client rectangle, and size itself if not in wxLAYOUT_QUERY mode. - -void wxSashLayoutWindow::OnCalculateLayout(wxCalculateLayoutEvent& event) -{ - wxRect clientSize(event.GetRect()); - - int flags = event.GetFlags(); - - if (!IsShown()) - return; - - // Let's assume that all windows stretch the full extent of the window in - // the direction of that window orientation. This will work for non-docking toolbars, - // and the status bar. Note that the windows have to have been created in a certain - // order to work, else you might get a left-aligned window going to the bottom - // of the window, and the status bar appearing to the right of it. The - // status bar would have to be created after or before the toolbar(s). - - wxRect thisRect; - - // Try to stretch - int length = (GetOrientation() == wxLAYOUT_HORIZONTAL) ? clientSize.width : clientSize.height; - wxLayoutOrientation orient = GetOrientation(); - - // We assume that a window that says it's horizontal, wants to be stretched in that - // direction. Is this distinction too fine? Do we assume that any horizontal - // window needs to be stretched in that direction? Possibly. - int whichDimension = (GetOrientation() == wxLAYOUT_HORIZONTAL) ? wxLAYOUT_LENGTH_X : wxLAYOUT_LENGTH_Y; - - wxQueryLayoutInfoEvent infoEvent(GetId()); - infoEvent.SetEventObject(this); - infoEvent.SetRequestedLength(length); - infoEvent.SetFlags(orient | whichDimension); - - if (!GetEventHandler()->ProcessEvent(infoEvent)) - return; - - wxSize sz = infoEvent.GetSize(); - - if (sz.x == 0 && sz.y == 0) // Assume it's invisible - return; - - // Now we know the size it wants to be. We wish to decide where to place it, i.e. - // how it's aligned. - switch (GetAlignment()) - { - case wxLAYOUT_TOP: - { - thisRect.x = clientSize.x; thisRect.y = clientSize.y; - thisRect.width = sz.x; thisRect.height = sz.y; - clientSize.y += thisRect.height; - clientSize.height -= thisRect.height; - break; - } - case wxLAYOUT_LEFT: - { - thisRect.x = clientSize.x; thisRect.y = clientSize.y; - thisRect.width = sz.x; thisRect.height = sz.y; - clientSize.x += thisRect.width; - clientSize.width -= thisRect.width; - break; - } - case wxLAYOUT_RIGHT: - { - thisRect.x = clientSize.x + (clientSize.width - sz.x); thisRect.y = clientSize.y; - thisRect.width = sz.x; thisRect.height = sz.y; - clientSize.width -= thisRect.width; - break; - } - case wxLAYOUT_BOTTOM: - { - thisRect.x = clientSize.x; thisRect.y = clientSize.y + (clientSize.height - sz.y); - thisRect.width = sz.x; thisRect.height = sz.y; - clientSize.height -= thisRect.height; - break; - } - case wxLAYOUT_NONE: - { - break; - } - - } - - if ((flags & wxLAYOUT_QUERY) == 0) - { - // If not in query mode, resize the window. - // TODO: add wxRect& form to wxWindow::SetSize - SetSize(thisRect.x, thisRect.y, thisRect.width, thisRect.height); - } - - event.SetRect(clientSize); -} - -/* - * wxLayoutAlgorithm - */ - -// Lays out windows for an MDI frame. The MDI client area gets what's left -// over. -bool wxLayoutAlgorithm::LayoutMDIFrame(wxMDIParentFrame* frame, wxRect* r) -{ - int cw, ch; - frame->GetClientSize(& cw, & ch); - - wxRect rect(0, 0, cw, ch); - if (r) - rect = * r; - - wxCalculateLayoutEvent event; - event.SetRect(rect); - - wxNode* node = frame->GetChildren().First(); - while (node) - { - wxWindow* win = (wxWindow*) node->Data(); - - event.SetId(win->GetId()); - event.SetEventObject(win); - event.SetFlags(0); // ?? - - win->GetEventHandler()->ProcessEvent(event); - - node = node->Next(); - } - - wxWindow* clientWindow = frame->GetClientWindow(); - - rect = event.GetRect(); - - clientWindow->SetSize(rect.x, rect.y, rect.width, rect.height); - - return TRUE; -} - -// Layout algorithm for normal frame. mainWindow gets what's left over. -bool wxLayoutAlgorithm::LayoutFrame(wxFrame* frame, wxWindow* mainWindow) -{ - int cw, ch; - frame->GetClientSize(& cw, & ch); - - wxRect rect(0, 0, cw, ch); - - wxCalculateLayoutEvent event; - event.SetRect(rect); - - wxNode* node = frame->GetChildren().First(); - while (node) - { - wxWindow* win = (wxWindow*) node->Data(); - - event.SetId(win->GetId()); - event.SetEventObject(win); - event.SetFlags(0); // ?? - - win->GetEventHandler()->ProcessEvent(event); - - node = node->Next(); - } - - rect = event.GetRect(); - - if (mainWindow) - mainWindow->SetSize(rect.x, rect.y, rect.width, rect.height); - - return TRUE; -} - diff --git a/src/generic/listctrl.cpp b/src/generic/listctrl.cpp deleted file mode 100644 index 5e198b6dac..0000000000 --- a/src/generic/listctrl.cpp +++ /dev/null @@ -1,2816 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: listctrl.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "listctrl.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#include "wx/dcscreen.h" -#include "wx/app.h" -#include "wx/generic/listctrl.h" -#include "wx/generic/imaglist.h" - -//----------------------------------------------------------------------------- -// wxListItemData -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxListItemData,wxObject); - -wxListItemData::wxListItemData(void) -{ - m_image = -1; - m_data = 0; - m_xpos = 0; - m_ypos = 0; - m_width = 0; - m_height = 0; - m_colour = wxBLACK; -} - -wxListItemData::wxListItemData( const wxListItem &info ) -{ - m_image = -1; - m_data = 0; - m_colour = info.m_colour; - SetItem( info ); -} - -void wxListItemData::SetItem( const wxListItem &info ) -{ - if (info.m_mask & wxLIST_MASK_TEXT) m_text = info.m_text; - if (info.m_mask & wxLIST_MASK_IMAGE) m_image = info.m_image; - if (info.m_mask & wxLIST_MASK_DATA) m_data = info.m_data; - m_colour = info.m_colour; - m_xpos = 0; - m_ypos = 0; - m_width = info.m_width; - m_height = 0; -} - -void wxListItemData::SetText( const wxString &s ) -{ - m_text = s; -} - -void wxListItemData::SetImage( int image ) -{ - m_image = image; -} - -void wxListItemData::SetData( long data ) -{ - m_data = data; -} - -void wxListItemData::SetPosition( int x, int y ) -{ - m_xpos = x; - m_ypos = y; -} - -void wxListItemData::SetSize( int width, int height ) -{ - if (width != -1) m_width = width; - if (height != -1) m_height = height; -} - -void wxListItemData::SetColour( wxColour *col ) -{ - m_colour = col; -} - -bool wxListItemData::HasImage(void) const -{ - return (m_image >= 0); -} - -bool wxListItemData::HasText(void) const -{ - return (!m_text.IsNull()); -} - -bool wxListItemData::IsHit( int x, int y ) const -{ - return ((x >= m_xpos) && (x <= m_xpos+m_width) && (y >= m_ypos) && (y <= m_ypos+m_height)); -} - -void wxListItemData::GetText( wxString &s ) -{ - s = m_text; -} - -int wxListItemData::GetX( void ) const -{ - return m_xpos; -} - -int wxListItemData::GetY( void ) const -{ - return m_ypos; -} - -int wxListItemData::GetWidth(void) const -{ - return m_width; -} - -int wxListItemData::GetHeight(void) const -{ - return m_height; -} - -int wxListItemData::GetImage(void) const -{ - return m_image; -} - -void wxListItemData::GetItem( wxListItem &info ) -{ - info.m_text = m_text; - info.m_image = m_image; - info.m_data = m_data; -} - -wxColour *wxListItemData::GetColour(void) -{ - return m_colour; -} - -//----------------------------------------------------------------------------- -// wxListHeaderData -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxListHeaderData,wxObject); - -wxListHeaderData::wxListHeaderData(void) -{ - m_mask = 0; - m_image = 0; - m_format = 0; - m_width = 0; - m_xpos = 0; - m_ypos = 0; - m_height = 0; -} - -wxListHeaderData::wxListHeaderData( const wxListItem &item ) -{ - SetItem( item ); - m_xpos = 0; - m_ypos = 0; - m_height = 0; -} - -void wxListHeaderData::SetItem( const wxListItem &item ) -{ - m_mask = item.m_mask; - m_text = item.m_text; - m_image = item.m_image; - m_format = item.m_format; - m_width = item.m_width; - if (m_width < 0) m_width = 80; - if (m_width < 6) m_width = 6; -} - -void wxListHeaderData::SetPosition( int x, int y ) -{ - m_xpos = x; - m_ypos = y; -} - -void wxListHeaderData::SetHeight( int h ) -{ - m_height = h; -} - -void wxListHeaderData::SetWidth( int w ) -{ - m_width = w; - if (m_width < 0) m_width = 80; - if (m_width < 6) m_width = 6; -} - -void wxListHeaderData::SetFormat( int format ) -{ - m_format = format; -} - -bool wxListHeaderData::HasImage(void) const -{ - return (m_image != 0); -} - -bool wxListHeaderData::HasText(void) const -{ - return (m_text.Length() > 0); -} - -bool wxListHeaderData::IsHit( int x, int y ) const -{ - return ((x >= m_xpos) && (x <= m_xpos+m_width) && (y >= m_ypos) && (y <= m_ypos+m_height)); -} - -void wxListHeaderData::GetItem( wxListItem &item ) -{ - item.m_mask = m_mask; - item.m_text = m_text; - item.m_image = m_image; - item.m_format = m_format; - item.m_width = m_width; -} - -void wxListHeaderData::GetText( wxString &s ) -{ - s = m_text; -} - -int wxListHeaderData::GetImage(void) const -{ - return m_image; -} - -int wxListHeaderData::GetWidth(void) const -{ - return m_width; -} - -int wxListHeaderData::GetFormat(void) const -{ - return m_format; -} - -//----------------------------------------------------------------------------- -// wxListLineData -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxListLineData,wxObject); - -wxListLineData::wxListLineData( wxListMainWindow *owner, int mode, wxBrush *hilightBrush ) -{ - m_mode = mode; - m_hilighted = FALSE; - m_owner = owner; - m_hilightBrush = hilightBrush; - m_items.DeleteContents( TRUE ); - m_spacing = 0; -} - -void wxListLineData::CalculateSize( wxDC *dc, int spacing ) -{ - m_spacing = spacing; - switch (m_mode) - { - case wxLC_ICON: - { - m_bound_all.width = m_spacing; - m_bound_all.height = m_spacing+13; - wxNode *node = m_items.First(); - if (node) - { - wxListItemData *item = (wxListItemData*)node->Data(); - wxString s; - item->GetText( s ); - long lw,lh; - dc->GetTextExtent( s, &lw, &lh ); - if (lw > m_spacing) m_bound_all.width = lw; - } - break; - } - case wxLC_LIST: - { - wxNode *node = m_items.First(); - if (node) - { - wxListItemData *item = (wxListItemData*)node->Data(); - wxString s; - item->GetText( s ); - long lw,lh; - dc->GetTextExtent( s, &lw, &lh ); - m_bound_all.width = lw; - m_bound_all.height = lh; - } - break; - } - case wxLC_REPORT: - { - m_bound_all.width = 0; - m_bound_all.height = 0; - wxNode *node = m_items.First(); - while (node) - { - wxListItemData *item = (wxListItemData*)node->Data(); - wxString s; - item->GetText( s ); - if (s.IsNull()) s = "H"; - long lw,lh; - dc->GetTextExtent( s, &lw, &lh ); - item->SetSize( item->GetWidth(), lh ); - m_bound_all.width += lw; - m_bound_all.height = lh; - node = node->Next(); - } - break; - } - } -} - -void wxListLineData::SetPosition( wxDC *dc, int x, int y, int window_width ) -{ - m_bound_all.x = x; - m_bound_all.y = y; - switch (m_mode) - { - case wxLC_ICON: - { - AssignRect( m_bound_icon, 0, 0, 0, 0 ); - AssignRect( m_bound_label, 0, 0, 0, 0 ); - AssignRect( m_bound_hilight, m_bound_all ); - wxNode *node = m_items.First(); - if (node) - { - wxListItemData *item = (wxListItemData*)node->Data(); - if (item->HasImage()) - { - wxListItemData *item = (wxListItemData*)node->Data(); - int w = 0; - int h = 0; - m_owner->GetImageSize( item->GetImage(), w, h ); - m_bound_icon.x = m_bound_all.x + (m_spacing/2) - (w/2); - m_bound_icon.y = m_bound_all.y + m_spacing - h - 5; - m_bound_icon.width = w; - m_bound_icon.height = h; - if (!item->HasText()) - { - AssignRect( m_bound_hilight, m_bound_icon ); - m_bound_hilight.x -= 5; - m_bound_hilight.y -= 5; - m_bound_hilight.width += 9; - m_bound_hilight.height += 9; - } - } - if (item->HasText()) - { - wxString s; - item->GetText( s ); - long lw,lh; - dc->GetTextExtent( s, &lw, &lh ); - if (m_bound_all.width > m_spacing) - m_bound_label.x = m_bound_all.x; - else - m_bound_label.x = m_bound_all.x + (m_spacing/2) - lw/2; - m_bound_label.y = m_bound_all.y + m_bound_all.height - lh; - m_bound_label.width = lw; - m_bound_label.height = lh; - AssignRect( m_bound_hilight, m_bound_label ); - m_bound_hilight.x -= 2; - m_bound_hilight.y -= 2; - m_bound_hilight.width += 4; - m_bound_hilight.height += 4; - } - } - break; - } - case wxLC_LIST: - { - AssignRect( m_bound_label, m_bound_all ); - m_bound_all.x -= 2; - m_bound_all.y -= 2; - m_bound_all.width += 4; - m_bound_all.height += 3; - AssignRect( m_bound_hilight, m_bound_all ); - AssignRect( m_bound_icon, 0, 0, 0, 0 ); - break; - } - case wxLC_REPORT: - { - long lw,lh; - dc->GetTextExtent( "H", &lw, &lh ); - m_bound_all.x = 0; - m_bound_all.y -= 0; - m_bound_all.height = lh+3; - m_bound_all.width = window_width; - AssignRect( m_bound_hilight, m_bound_all ); - AssignRect( m_bound_label, 0, 0, 0 ,0 ); - AssignRect( m_bound_icon, 0, 0, 0, 0 ); - break; - } - } -} - -void wxListLineData::SetColumnPosition( int index, int x ) -{ - int i = index; - wxNode *node = m_items.Nth( i ); - if (node) - { - wxListItemData *item = (wxListItemData*)node->Data(); - item->SetPosition( x, m_bound_all.y+1 ); - } -} - -void wxListLineData::GetSize( int &width, int &height ) -{ - width = m_bound_all.width; - height = m_bound_all.height; -} - -void wxListLineData::GetExtent( int &x, int &y, int &width, int &height ) -{ - x = m_bound_all.x; - y = m_bound_all.y; - width = m_bound_all.width; - height = m_bound_all.height; -} - -void wxListLineData::GetLabelExtent( int &x, int &y, int &width, int &height ) -{ - x = m_bound_label.x; - y = m_bound_label.y; - width = m_bound_label.width; - height = m_bound_label.height; -} - -void wxListLineData::GetRect( wxRectangle &rect ) -{ - AssignRect( rect, m_bound_all ); -} - -long wxListLineData::IsHit( int x, int y ) -{ - wxNode *node = m_items.First(); - if (node) - { - wxListItemData *item = (wxListItemData*)node->Data(); - if (item->HasImage() && IsInRect( x, y, m_bound_icon )) return wxLIST_HITTEST_ONITEMICON; - if (item->HasText() && IsInRect( x, y, m_bound_label )) return wxLIST_HITTEST_ONITEMLABEL; -// if (!(item->HasImage() || item->HasText())) return 0; - } - // if there is no icon or text = empty - if (IsInRect( x, y, m_bound_all )) return wxLIST_HITTEST_ONITEMICON; - return 0; -} - -void wxListLineData::InitItems( int num ) -{ - for (int i = 0; i < num; i++) m_items.Append( new wxListItemData() ); -} - -void wxListLineData::SetItem( int index, const wxListItem &info ) -{ - wxNode *node = m_items.Nth( index ); - if (node) - { - wxListItemData *item = (wxListItemData*)node->Data(); - item->SetItem( info ); - } -} - -void wxListLineData::GetItem( int index, wxListItem &info ) -{ - int i = index; - wxNode *node = m_items.Nth( i ); - if (node) - { - wxListItemData *item = (wxListItemData*)node->Data(); - item->GetItem( info ); - } -} - -void wxListLineData::GetText( int index, wxString &s ) -{ - int i = index; - wxNode *node = m_items.Nth( i ); - s = ""; - if (node) - { - wxListItemData *item = (wxListItemData*)node->Data(); - item->GetText( s ); - } -} - -void wxListLineData::SetText( int index, const wxString s ) -{ - int i = index; - wxNode *node = m_items.Nth( i ); - if (node) - { - wxListItemData *item = (wxListItemData*)node->Data(); - item->SetText( s ); - } -} - -int wxListLineData::GetImage( int index ) -{ - int i = index; - wxNode *node = m_items.Nth( i ); - if (node) - { - wxListItemData *item = (wxListItemData*)node->Data(); - return item->GetImage(); - } - return -1; -} - -void wxListLineData::DoDraw( wxDC *dc, bool hilight, bool paintBG ) -{ - long dev_x = dc->LogicalToDeviceX( m_bound_all.x-2 ); - long dev_y = dc->LogicalToDeviceY( m_bound_all.y-2 ); - long dev_w = dc->LogicalToDeviceXRel( m_bound_all.width+4 ); - long dev_h = dc->LogicalToDeviceYRel( m_bound_all.height+4 ); - - if (!m_owner->IsExposed( dev_x, dev_y, dev_w, dev_h )) - { - return; - } - - if (paintBG) - { - if (hilight) - { - dc->SetBrush( * m_hilightBrush ); - dc->SetPen( * wxTRANSPARENT_PEN ); - } - else - { - dc->SetBrush( * wxWHITE_BRUSH ); - dc->SetPen( * wxTRANSPARENT_PEN ); - } - dc->DrawRectangle( m_bound_hilight.x, m_bound_hilight.y, - m_bound_hilight.width, m_bound_hilight.height ); - } - - dc->SetBackgroundMode(wxTRANSPARENT); - if (m_mode == wxLC_REPORT) - { - wxString s; - wxNode *node = m_items.First(); - while (node) - { - wxListItemData *item = (wxListItemData*)node->Data(); - dc->SetClippingRegion( item->GetX(), item->GetY(), item->GetWidth()-3, item->GetHeight() ); - int x = item->GetX(); - if (item->HasImage()) - { - int y = 0; - m_owner->DrawImage( item->GetImage(), dc, x, item->GetY() ); - m_owner->GetImageSize( item->GetImage(), x, y ); - x += item->GetX() + 5; - } - if (item->HasText()) - { - item->GetText( s ); - if (hilight) - dc->SetTextForeground( wxSystemSettings::GetSystemColour( wxSYS_COLOUR_HIGHLIGHTTEXT ) ); - else - dc->SetTextForeground( *item->GetColour() ); - dc->DrawText( s, x, item->GetY() ); - } - dc->DestroyClippingRegion(); - node = node->Next(); - } - } - else - { - wxNode *node = m_items.First(); - if (node) - { - wxListItemData *item = (wxListItemData*)node->Data(); - if (item->HasImage()) - { - m_owner->DrawImage( item->GetImage(), dc, m_bound_icon.x, m_bound_icon.y ); - } - if (item->HasText()) - { - wxString s; - item->GetText( s ); - if (hilight) - dc->SetTextForeground( wxSystemSettings::GetSystemColour( wxSYS_COLOUR_HIGHLIGHTTEXT ) ); - else - dc->SetTextForeground( * item->GetColour() ); - dc->DrawText( s, m_bound_label.x, m_bound_label.y ); - } - } - } -} - -void wxListLineData::Hilight( bool on ) -{ - if (on == m_hilighted) return; - if (on) - m_owner->SelectLine( this ); - else - m_owner->DeselectLine( this ); - m_hilighted = on; -} - -void wxListLineData::ReverseHilight( void ) -{ - m_hilighted = !m_hilighted; - if (m_hilighted) - m_owner->SelectLine( this ); - else - m_owner->DeselectLine( this ); -} - -void wxListLineData::DrawRubberBand( wxDC *dc, bool on ) -{ - if (on) - { - dc->SetPen( * wxBLACK_PEN ); - dc->SetBrush( * wxTRANSPARENT_BRUSH ); - dc->DrawRectangle( m_bound_hilight.x, m_bound_hilight.y, - m_bound_hilight.width, m_bound_hilight.height ); - } -} - -void wxListLineData::Draw( wxDC *dc ) -{ - DoDraw( dc, m_hilighted, m_hilighted ); -} - -bool wxListLineData::IsInRect( int x, int y, const wxRectangle &rect ) -{ - return ((x >= rect.x) && (x <= rect.x+rect.width) && - (y >= rect.y) && (y <= rect.y+rect.height)); -} - -bool wxListLineData::IsHilighted( void ) -{ - return m_hilighted; -} - -void wxListLineData::AssignRect( wxRectangle &dest, int x, int y, int width, int height ) -{ - dest.x = x; - dest.y = y; - dest.width = width; - dest.height = height; -} - -void wxListLineData::AssignRect( wxRectangle &dest, const wxRectangle &source ) -{ - dest.x = source.x; - dest.y = source.y; - dest.width = source.width; - dest.height = source.height; -} - -//----------------------------------------------------------------------------- -// wxListHeaderWindow -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxListHeaderWindow,wxWindow); - -BEGIN_EVENT_TABLE(wxListHeaderWindow,wxWindow) - EVT_PAINT (wxListHeaderWindow::OnPaint) - EVT_MOUSE_EVENTS (wxListHeaderWindow::OnMouse) - EVT_SET_FOCUS (wxListHeaderWindow::OnSetFocus) -END_EVENT_TABLE() - -wxListHeaderWindow::wxListHeaderWindow( void ) -{ - m_owner = (wxListMainWindow *) NULL; - m_currentCursor = (wxCursor *) NULL; - m_resizeCursor = (wxCursor *) NULL; - m_isDraging = FALSE; -} - -wxListHeaderWindow::wxListHeaderWindow( wxWindow *win, wxWindowID id, wxListMainWindow *owner, - const wxPoint &pos, const wxSize &size, - long style, const wxString &name ) : - wxWindow( win, id, pos, size, style, name ) -{ - m_owner = owner; -// m_currentCursor = wxSTANDARD_CURSOR; - m_currentCursor = (wxCursor *) NULL; - m_resizeCursor = new wxCursor( wxCURSOR_SIZEWE ); - m_isDraging = FALSE; -} - -wxListHeaderWindow::~wxListHeaderWindow( void ) -{ - delete m_resizeCursor; -} - -void wxListHeaderWindow::DoDrawRect( wxDC *dc, int x, int y, int w, int h ) -{ - const int m_corner = 1; - - dc->SetBrush( *wxTRANSPARENT_BRUSH ); - - dc->SetPen( *wxBLACK_PEN ); - dc->DrawLine( x+w-m_corner+1, y, x+w, y+h ); // right (outer) - dc->DrawRectangle( x, y+h, w, 1 ); // bottom (outer) - - wxPen pen( wxSystemSettings::GetSystemColour( wxSYS_COLOUR_BTNSHADOW ), 1, wxSOLID ); - - dc->SetPen( pen ); - dc->DrawLine( x+w-m_corner, y, x+w-1, y+h ); // right (inner) - dc->DrawRectangle( x+1, y+h-1, w-2, 1 ); // bottom (inner) - - dc->SetPen( *wxWHITE_PEN ); - dc->DrawRectangle( x, y, w-m_corner+1, 1 ); // top (outer) - dc->DrawRectangle( x, y, 1, h ); // left (outer) - dc->DrawLine( x, y+h-1, x+1, y+h-1 ); - dc->DrawLine( x+w-1, y, x+w-1, y+1 ); -} - -void wxListHeaderWindow::OnPaint( wxPaintEvent &WXUNUSED(event) ) -{ - wxPaintDC dc( this ); - PrepareDC( dc ); - - dc.BeginDrawing(); - - dc.SetFont( GetFont() ); - - int w = 0; - int h = 0; - int x = 0; - int y = 0; - GetClientSize( &w, &h ); - - dc.SetBackgroundMode(wxTRANSPARENT); - dc.SetTextForeground( *wxBLACK ); - if (m_foregroundColour.Ok()) dc.SetTextForeground( m_foregroundColour ); - - x = 1; - y = 1; - int numColumns = m_owner->GetColumnCount(); - wxListItem item; - for (int i = 0; i < numColumns; i++) - { - m_owner->GetColumn( i, item ); - int cw = item.m_width-2; - if ((i+1 == numColumns) || (x+item.m_width > w-5)) cw = w-x-1; - dc.SetPen( *wxWHITE_PEN ); - - DoDrawRect( &dc, x, y, cw, h-2 ); - dc.SetClippingRegion( x, y, cw-5, h-4 ); - dc.DrawText( item.m_text, x+4, y+3 ); - dc.DestroyClippingRegion(); - x += item.m_width; - if (x > w+5) break; - } - dc.EndDrawing(); -} - -void wxListHeaderWindow::DrawCurrent() -{ - int x1 = m_currentX; - int y1 = 0; - int x2 = m_currentX-1; - int y2 = 0; - int dummy; - m_owner->GetClientSize( &dummy, &y2 ); - ClientToScreen( &x1, &y1 ); - m_owner->ClientToScreen( &x2, &y2 ); - - wxScreenDC dc; - dc.SetLogicalFunction( wxXOR ); - dc.SetPen( wxPen( *wxBLACK, 2, wxSOLID ) ); - dc.SetBrush( *wxTRANSPARENT_BRUSH ); - - dc.DrawLine( x1, y1, x2, y2 ); - - dc.SetLogicalFunction( wxCOPY ); - - dc.SetPen( wxNullPen ); - dc.SetBrush( wxNullBrush ); -} - -void wxListHeaderWindow::OnMouse( wxMouseEvent &event ) -{ - int x = event.GetX(); - int y = event.GetY(); - if (m_isDraging) - { - DrawCurrent(); - if (event.ButtonUp()) - { - ReleaseMouse(); - m_isDraging = FALSE; - m_owner->SetColumnWidth( m_column, m_currentX-m_minX ); - } - else - { - int size_x = 0; - int dummy; - GetClientSize( &size_x, & dummy ); - if (x > m_minX+7) - m_currentX = x; - else - m_currentX = m_minX+7; - if (m_currentX > size_x-7) m_currentX = size_x-7; - DrawCurrent(); - } - return; - } - - m_minX = 0; - bool hit_border = FALSE; - int xpos = 0; - for (int j = 0; j < m_owner->GetColumnCount(); j++) - { - xpos += m_owner->GetColumnWidth( j ); - if ((abs(x-xpos) < 3) && (y < 22)) - { - hit_border = TRUE; - m_column = j; - break; - } - m_minX = xpos; - } - - if (event.LeftDown() && hit_border) - { - m_isDraging = TRUE; - m_currentX = x; - DrawCurrent(); - CaptureMouse(); - return; - } - - if (event.Moving()) - { - if (hit_border) - { - if (m_currentCursor == wxSTANDARD_CURSOR) SetCursor( * m_resizeCursor ); - m_currentCursor = m_resizeCursor; - } - else - { - if (m_currentCursor != wxSTANDARD_CURSOR) SetCursor( * wxSTANDARD_CURSOR ); - m_currentCursor = wxSTANDARD_CURSOR; - } - } -} - -void wxListHeaderWindow::OnSetFocus( wxFocusEvent &WXUNUSED(event) ) -{ - m_owner->SetFocus(); -} - -//----------------------------------------------------------------------------- -// wxListRenameTimer (internal) -//----------------------------------------------------------------------------- - -wxListRenameTimer::wxListRenameTimer( wxListMainWindow *owner ) -{ - m_owner = owner; -} - -void wxListRenameTimer::Notify() -{ - m_owner->OnRenameTimer(); -} - -//----------------------------------------------------------------------------- -// wxListTextCtrl (internal) -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxListTextCtrl,wxTextCtrl); - -BEGIN_EVENT_TABLE(wxListTextCtrl,wxTextCtrl) - EVT_CHAR (wxListTextCtrl::OnChar) - EVT_KILL_FOCUS (wxListTextCtrl::OnKillFocus) -END_EVENT_TABLE() - -wxListTextCtrl::wxListTextCtrl( wxWindow *parent, const wxWindowID id, - bool *accept, wxString *res, wxListMainWindow *owner, - const wxString &value, const wxPoint &pos, const wxSize &size, - int style, const wxValidator& validator, const wxString &name ) : - wxTextCtrl( parent, id, value, pos, size, style, validator, name ) -{ - m_res = res; - m_accept = accept; - m_owner = owner; -} - -void wxListTextCtrl::OnChar( wxKeyEvent &event ) -{ - if (event.m_keyCode == WXK_RETURN) - { - (*m_accept) = TRUE; - (*m_res) = GetValue(); - m_owner->OnRenameAccept(); -// Show( FALSE ); - Destroy(); - return; - } - if (event.m_keyCode == WXK_ESCAPE) - { - (*m_accept) = FALSE; - (*m_res) = ""; -// Show( FALSE ); - Destroy(); - return; - } - event.Skip(); -} - -void wxListTextCtrl::OnKillFocus( wxFocusEvent &WXUNUSED(event) ) -{ - (*m_accept) = FALSE; - (*m_res) = ""; -// Show( FALSE ); - Destroy(); - return; -} - -//----------------------------------------------------------------------------- -// wxListMainWindow -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxListMainWindow,wxScrolledWindow); - -BEGIN_EVENT_TABLE(wxListMainWindow,wxScrolledWindow) - EVT_PAINT (wxListMainWindow::OnPaint) - EVT_SIZE (wxListMainWindow::OnSize) - EVT_MOUSE_EVENTS (wxListMainWindow::OnMouse) - EVT_CHAR (wxListMainWindow::OnChar) - EVT_SET_FOCUS (wxListMainWindow::OnSetFocus) - EVT_KILL_FOCUS (wxListMainWindow::OnKillFocus) -END_EVENT_TABLE() - -wxListMainWindow::wxListMainWindow( void ) -{ - m_mode = 0; - m_lines.DeleteContents( TRUE ); - m_columns.DeleteContents( TRUE ); - m_current = (wxListLineData *) NULL; - m_visibleLines = 0; - m_hilightBrush = (wxBrush *) NULL; - m_xScroll = 0; - m_yScroll = 0; - m_dirty = TRUE; - m_small_image_list = (wxImageList *) NULL; - m_normal_image_list = (wxImageList *) NULL; - m_small_spacing = 30; - m_normal_spacing = 40; - m_hasFocus = FALSE; - m_usedKeys = TRUE; - m_lastOnSame = FALSE; - m_renameTimer = new wxListRenameTimer( this ); - m_isCreated = FALSE; - m_dragCount = 0; -} - -wxListMainWindow::wxListMainWindow( wxWindow *parent, wxWindowID id, - const wxPoint &pos, const wxSize &size, - long style, const wxString &name ) : - wxScrolledWindow( parent, id, pos, size, style|wxHSCROLL|wxVSCROLL, name ) -{ - m_mode = style; - m_lines.DeleteContents( TRUE ); - m_columns.DeleteContents( TRUE ); - m_current = (wxListLineData *) NULL; - m_dirty = TRUE; - m_visibleLines = 0; - m_hilightBrush = new wxBrush( wxSystemSettings::GetSystemColour(wxSYS_COLOUR_HIGHLIGHT), wxSOLID ); - m_small_image_list = (wxImageList *) NULL; - m_normal_image_list = (wxImageList *) NULL; - m_small_spacing = 30; - m_normal_spacing = 40; - m_hasFocus = FALSE; - m_dragCount = 0; - m_isCreated = FALSE; - wxSize sz = size; - sz.y = 25; - - if (m_mode & wxLC_REPORT) - { - m_xScroll = 0; - m_yScroll = 15; - } - else - { - m_xScroll = 15; - m_yScroll = 0; - } - SetScrollbars( m_xScroll, m_yScroll, 0, 0, 0, 0 ); - - m_usedKeys = TRUE; - m_lastOnSame = FALSE; - m_renameTimer = new wxListRenameTimer( this ); - m_renameAccept = FALSE; - - SetBackgroundColour( *wxWHITE ); -} - -wxListMainWindow::~wxListMainWindow( void ) -{ - if (m_hilightBrush) delete m_hilightBrush; - - delete m_renameTimer; -} - -void wxListMainWindow::RefreshLine( wxListLineData *line ) -{ - int x = 0; - int y = 0; - int w = 0; - int h = 0; - if (line) - { - wxClientDC dc(this); - PrepareDC( dc ); - line->GetExtent( x, y, w, h ); - wxRectangle rect( - dc.LogicalToDeviceX(x-3), - dc.LogicalToDeviceY(y-3), - dc.LogicalToDeviceXRel(w+6), - dc.LogicalToDeviceXRel(h+6) ); - Refresh( TRUE, &rect ); - } -} - -void wxListMainWindow::OnPaint( wxPaintEvent &WXUNUSED(event) ) -{ - // Note: a wxPaintDC must be constructed even if no drawing is - // done (a Windows requirement). - wxPaintDC dc( this ); - PrepareDC( dc ); - - if (m_dirty) return; - - if (m_lines.GetCount() == 0) return; - - dc.BeginDrawing(); - - dc.SetFont( GetFont() ); - - if (m_mode & wxLC_REPORT) - { - int lineSpacing = 0; - wxListLineData *line = (wxListLineData*)m_lines.First()->Data(); - int dummy = 0; - line->GetSize( dummy, lineSpacing ); - lineSpacing += 1; - - int y_s = m_yScroll*GetScrollPos( wxVERTICAL ); - - wxNode *node = m_lines.Nth( y_s / lineSpacing ); - for (int i = 0; i < m_visibleLines+2; i++) - { - if (!node) break; - - line = (wxListLineData*)node->Data(); - line->Draw( &dc ); - node = node->Next(); - } - } - else - { - wxNode *node = m_lines.First(); - while (node) - { - wxListLineData *line = (wxListLineData*)node->Data(); - line->Draw( &dc ); - node = node->Next(); - } - } - - if (m_current) m_current->DrawRubberBand( &dc, m_hasFocus ); - - dc.EndDrawing(); -} - -void wxListMainWindow::HilightAll( bool on ) -{ - wxNode *node = m_lines.First(); - while (node) - { - wxListLineData *line = (wxListLineData *)node->Data(); - if (line->IsHilighted() != on) - { - line->Hilight( on ); - RefreshLine( line ); - } - node = node->Next(); - } -} - -void wxListMainWindow::SendNotify( wxListLineData *line, wxEventType command ) -{ - wxListEvent le( command, GetParent()->GetId() ); - le.SetEventObject( GetParent() ); - le.m_itemIndex = GetIndexOfLine( line ); - line->GetItem( 0, le.m_item ); - GetParent()->GetEventHandler()->ProcessEvent( le ); -} - -void wxListMainWindow::FocusLine( wxListLineData *WXUNUSED(line) ) -{ -// SendNotify( line, wxEVT_COMMAND_LIST_ITEM_FOCUSSED ); -} - -void wxListMainWindow::UnfocusLine( wxListLineData *WXUNUSED(line) ) -{ -// SendNotify( line, wxEVT_COMMAND_LIST_ITEM_UNFOCUSSED ); -} - -void wxListMainWindow::SelectLine( wxListLineData *line ) -{ - SendNotify( line, wxEVT_COMMAND_LIST_ITEM_SELECTED ); -} - -void wxListMainWindow::DeselectLine( wxListLineData *line ) -{ - SendNotify( line, wxEVT_COMMAND_LIST_ITEM_DESELECTED ); -} - -void wxListMainWindow::DeleteLine( wxListLineData *line ) -{ - SendNotify( line, wxEVT_COMMAND_LIST_DELETE_ITEM ); -} - -void wxListMainWindow::StartLabelEdit( wxListLineData *line ) -{ - SendNotify( line, wxEVT_COMMAND_LIST_BEGIN_LABEL_EDIT ); -} - -void wxListMainWindow::RenameLine( wxListLineData *line, const wxString &newName ) -{ - wxListEvent le( wxEVT_COMMAND_LIST_END_LABEL_EDIT, GetParent()->GetId() ); - le.SetEventObject( GetParent() ); - le.m_itemIndex = GetIndexOfLine( line ); - line->GetItem( 0, le.m_item ); - le.m_item.m_text = newName; - GetParent()->GetEventHandler()->ProcessEvent( le ); -} - -void wxListMainWindow::OnRenameTimer() -{ - StartLabelEdit( m_current ); - wxString s; - m_current->GetText( 0, s ); - int x = 0; - int y = 0; - int w = 0; - int h = 0; - m_current->GetLabelExtent( x, y, w, h ); - - wxClientDC dc(this); - PrepareDC( dc ); - x = dc.LogicalToDeviceX( x ); - y = dc.LogicalToDeviceY( y ); - - wxListTextCtrl *text = new wxListTextCtrl( - this, -1, &m_renameAccept, &m_renameRes, this, s, wxPoint(x-4,y-4), wxSize(w+11,h+8) ); - text->SetFocus(); -} - -void wxListMainWindow::OnRenameAccept() -{ - RenameLine( m_current, m_renameRes ); -} - -void wxListMainWindow::OnMouse( wxMouseEvent &event ) -{ - if (GetParent()->GetEventHandler()->ProcessEvent( event)) return; - - if (!m_current) return; - if (m_dirty) return; - - wxClientDC dc(this); - PrepareDC(dc); - long x = dc.DeviceToLogicalX( (long)event.GetX() ); - long y = dc.DeviceToLogicalY( (long)event.GetY() ); - - // Did we actually hit an item ? - long hitResult = 0; - wxNode *node = m_lines.First(); - wxListLineData *line = (wxListLineData *) NULL; - while (node) - { - line = (wxListLineData*)node->Data(); - hitResult = line->IsHit( x, y ); - if (hitResult) break; - line = (wxListLineData *) NULL; - node = node->Next(); - } - - if (!event.Dragging()) - m_dragCount = 0; - else - m_dragCount++; - - if (event.Dragging() && (m_dragCount > 3)) - { - m_dragCount = 0; - - wxListEvent le( wxEVT_COMMAND_LIST_BEGIN_DRAG, GetParent()->GetId() ); - le.SetEventObject( GetParent() ); - le.m_pointDrag.x = x; - le.m_pointDrag.y = y; - GetParent()->GetEventHandler()->ProcessEvent( le ); - - return; - } - - if (!line) return; - - if (event.ButtonDClick()) - { - m_usedKeys = FALSE; - m_lastOnSame = FALSE; - m_renameTimer->Stop(); - - SendNotify( line, wxEVT_COMMAND_LIST_ITEM_ACTIVATED ); - - return; - } - - if (event.LeftUp() && m_lastOnSame) - { - m_usedKeys = FALSE; - if ((line == m_current) && - (hitResult == wxLIST_HITTEST_ONITEMLABEL) && - (m_mode & wxLC_EDIT_LABELS) ) - { - m_renameTimer->Start( 100, TRUE ); - } - m_lastOnSame = FALSE; - return; - } - - if (event.RightDown()) - { - SendNotify( line, wxEVT_COMMAND_LIST_ITEM_RIGHT_CLICK ); - return; - } - - if (event.MiddleDown()) - { - SendNotify( line, wxEVT_COMMAND_LIST_ITEM_MIDDLE_CLICK ); - return; - } - - if (event.LeftDown()) - { - m_usedKeys = FALSE; - wxListLineData *oldCurrent = m_current; - if (m_mode & wxLC_SINGLE_SEL) - { - m_current = line; - HilightAll( FALSE ); - m_current->ReverseHilight(); - RefreshLine( m_current ); - } - else - { - if (event.ShiftDown()) - { - m_current = line; - m_current->ReverseHilight(); - RefreshLine( m_current ); - } - else if (event.ControlDown()) - { - m_current = line; - - int numOfCurrent = -1; - node = m_lines.First(); - while (node) - { - wxListLineData *test_line = (wxListLineData*)node->Data(); - numOfCurrent++; - if (test_line == oldCurrent) break; - node = node->Next(); - } - - int numOfLine = -1; - node = m_lines.First(); - while (node) - { - wxListLineData *test_line = (wxListLineData*)node->Data(); - numOfLine++; - if (test_line == line) break; - node = node->Next(); - } - - if (numOfLine < numOfCurrent) - { - int i = numOfLine; - numOfLine = numOfCurrent; - numOfCurrent = i; - } - - wxNode *node = m_lines.Nth( numOfCurrent ); - for (int i = 0; i <= numOfLine-numOfCurrent; i++) - { - wxListLineData *test_line= (wxListLineData*)node->Data(); - test_line->Hilight(TRUE); - RefreshLine( test_line ); - node = node->Next(); - } - } - else - { - m_current = line; - HilightAll( FALSE ); - m_current->ReverseHilight(); - RefreshLine( m_current ); - } - } - if (m_current != oldCurrent) - { - RefreshLine( oldCurrent ); - UnfocusLine( oldCurrent ); - FocusLine( m_current ); - } - m_lastOnSame = (m_current == oldCurrent); - return; - } -} - -void wxListMainWindow::MoveToFocus( void ) -{ - if (!m_current) return; - - int x = 0; - int y = 0; - int w = 0; - int h = 0; - m_current->GetExtent( x, y, w, h ); - - int w_p = 0; - int h_p = 0; - GetClientSize( &w_p, &h_p ); - - if (m_mode & wxLC_REPORT) - { - int y_s = m_yScroll*GetScrollPos( wxVERTICAL ); - if ((y > y_s) && (y+h < y_s+h_p)) return; - if (y-y_s < 5) Scroll( -1, (y-5-h_p/2)/m_yScroll ); - if (y+h+5 > y_s+h_p) Scroll( -1, (y+h-h_p/2+h+15)/m_yScroll ); - } - else - { - int x_s = m_xScroll*GetScrollPos( wxHORIZONTAL ); - if ((x > x_s) && (x+w < x_s+w_p)) return; - if (x-x_s < 5) Scroll( (x-5)/m_xScroll, -1 ); - if (x+w-5 > x_s+w_p) Scroll( (x+w-w_p+15)/m_xScroll, -1 ); - } -} - -void wxListMainWindow::OnArrowChar( wxListLineData *newCurrent, bool shiftDown ) -{ - if ((m_mode & wxLC_SINGLE_SEL) || (m_usedKeys == FALSE)) m_current->Hilight( FALSE ); - wxListLineData *oldCurrent = m_current; - m_current = newCurrent; - MoveToFocus(); - if (shiftDown || (m_mode & wxLC_SINGLE_SEL)) m_current->Hilight( TRUE ); - RefreshLine( m_current ); - RefreshLine( oldCurrent ); - FocusLine( m_current ); - UnfocusLine( oldCurrent ); -} - -void wxListMainWindow::OnChar( wxKeyEvent &event ) -{ - wxListEvent le( wxEVT_COMMAND_LIST_KEY_DOWN, GetParent()->GetId() ); - le.m_code = event.KeyCode(); - le.SetEventObject( GetParent() ); - GetParent()->GetEventHandler()->ProcessEvent( le ); - -/* - if (event.KeyCode() == WXK_TAB) - { - if (event.ShiftDown()) - TravPrev( &event ); - else - TravNext( &event ); - return; - } -*/ - if ( !m_current ) - { - event.Skip(); - return; - } - - switch (event.KeyCode()) - { - case WXK_UP: - { - wxNode *node = m_lines.Member( m_current )->Previous(); - if (node) OnArrowChar( (wxListLineData*)node->Data(), event.ShiftDown() ); - break; - } - case WXK_DOWN: - { - wxNode *node = m_lines.Member( m_current )->Next(); - if (node) OnArrowChar( (wxListLineData*)node->Data(), event.ShiftDown() ); - break; - } - case WXK_END: - { - wxNode *node = m_lines.Last(); - OnArrowChar( (wxListLineData*)node->Data(), event.ShiftDown() ); - break; - } - case WXK_HOME: - { - wxNode *node = m_lines.First(); - OnArrowChar( (wxListLineData*)node->Data(), event.ShiftDown() ); - break; - } - case WXK_PRIOR: - { - int steps = 0; - if (m_mode & wxLC_REPORT) { steps = m_visibleLines-1; } - else - { - int pos = 0; - wxNode *node = m_lines.First(); - for (;;) { if (m_current == (wxListLineData*)node->Data()) break; pos++; node = node->Next(); } - steps = pos % m_visibleLines; - } - wxNode *node = m_lines.Member( m_current ); - for (int i = 0; i < steps; i++) if (node->Previous()) node = node->Previous(); - if (node) OnArrowChar( (wxListLineData*)node->Data(), event.ShiftDown() ); - break; - } - case WXK_NEXT: - { - int steps = 0; - if (m_mode & wxLC_REPORT) { steps = m_visibleLines-1; } - else - { - int pos = 0; wxNode *node = m_lines.First(); - for (;;) { if (m_current == (wxListLineData*)node->Data()) break; pos++; node = node->Next(); } - steps = m_visibleLines-(pos % m_visibleLines)-1; - } - wxNode *node = m_lines.Member( m_current ); - for (int i = 0; i < steps; i++) if (node->Next()) node = node->Next(); - if (node) OnArrowChar( (wxListLineData*)node->Data(), event.ShiftDown() ); - break; - } - case WXK_LEFT: - { - if (!(m_mode & wxLC_REPORT)) - { - wxNode *node = m_lines.Member( m_current ); - for (int i = 0; i Previous()) node = node->Previous(); - if (node) OnArrowChar( (wxListLineData*)node->Data(), event.ShiftDown() ); - } - break; - } - case WXK_RIGHT: - { - if (!(m_mode & wxLC_REPORT)) - { - wxNode *node = m_lines.Member( m_current ); - for (int i = 0; i Next()) node = node->Next(); - if (node) OnArrowChar( (wxListLineData*)node->Data(), event.ShiftDown() ); - } - break; - } - case WXK_SPACE: - { - m_current->ReverseHilight(); - RefreshLine( m_current ); - } - break; - case WXK_INSERT: - { - if (!(m_mode & wxLC_SINGLE_SEL)) - { - wxListLineData *oldCurrent = m_current; - m_current->ReverseHilight(); - wxNode *node = m_lines.Member( m_current )->Next(); - if (node) m_current = (wxListLineData*)node->Data(); - MoveToFocus(); - RefreshLine( oldCurrent ); - RefreshLine( m_current ); - UnfocusLine( oldCurrent ); - FocusLine( m_current ); - } - } - break; - case WXK_RETURN: - case WXK_EXECUTE: - { - wxListEvent le( wxEVT_COMMAND_LIST_ITEM_ACTIVATED, GetParent()->GetId() ); - le.SetEventObject( GetParent() ); - le.m_itemIndex = GetIndexOfLine( m_current ); - m_current->GetItem( 0, le.m_item ); - GetParent()->GetEventHandler()->ProcessEvent( le ); - } - break; - default: - { - event.Skip(); - return; - } - } - m_usedKeys = TRUE; -} - -void wxListMainWindow::OnSetFocus( wxFocusEvent &WXUNUSED(event) ) -{ - m_hasFocus = TRUE; - RefreshLine( m_current ); - - if (!GetParent()) return; - - wxFocusEvent event( wxEVT_SET_FOCUS, GetParent()->GetId() ); - event.SetEventObject( GetParent() ); - GetParent()->GetEventHandler()->ProcessEvent( event ); -} - -void wxListMainWindow::OnKillFocus( wxFocusEvent &WXUNUSED(event) ) -{ - m_hasFocus = FALSE; - RefreshLine( m_current ); -} - -void wxListMainWindow::OnSize( wxSizeEvent &WXUNUSED(event) ) -{ -/* - We don't even allow the wxScrolledWindow::AdjustScrollbars() call - -*/ -} - -void wxListMainWindow::DrawImage( int index, wxDC *dc, int x, int y ) -{ - if ((m_mode & wxLC_ICON) && (m_normal_image_list)) - { - m_normal_image_list->Draw( index, *dc, x, y, wxIMAGELIST_DRAW_TRANSPARENT ); - return; - } - if ((m_mode & wxLC_SMALL_ICON) && (m_small_image_list)) - { - m_small_image_list->Draw( index, *dc, x, y, wxIMAGELIST_DRAW_TRANSPARENT ); - } - if ((m_mode & wxLC_REPORT) && (m_small_image_list)) - { - m_small_image_list->Draw( index, *dc, x, y, wxIMAGELIST_DRAW_TRANSPARENT ); - return; - } -} - -void wxListMainWindow::GetImageSize( int index, int &width, int &height ) -{ - if ((m_mode & wxLC_ICON) && (m_normal_image_list)) - { - m_normal_image_list->GetSize( index, width, height ); - return; - } - if ((m_mode & wxLC_SMALL_ICON) && (m_small_image_list)) - { - m_small_image_list->GetSize( index, width, height ); - return; - } - if ((m_mode & wxLC_REPORT) && (m_small_image_list)) - { - m_small_image_list->GetSize( index, width, height ); - return; - } - width = 0; - height = 0; -} - -int wxListMainWindow::GetTextLength( wxString &s ) -{ - wxClientDC dc( this ); - long lw = 0; - long lh = 0; - dc.GetTextExtent( s, &lw, &lh ); - return lw + 6; -} - -int wxListMainWindow::GetIndexOfLine( const wxListLineData *line ) -{ - int i = 0; - wxNode *node = m_lines.First(); - while (node) - { - if (line == (wxListLineData*)node->Data()) return i; - i++; - node = node->Next(); - } - return -1; -} - -void wxListMainWindow::SetImageList( wxImageList *imageList, int which ) -{ - m_dirty = TRUE; - if (which == wxIMAGE_LIST_NORMAL) m_normal_image_list = imageList; - if (which == wxIMAGE_LIST_SMALL) m_small_image_list = imageList; -} - -void wxListMainWindow::SetItemSpacing( int spacing, bool isSmall ) -{ - m_dirty = TRUE; - if (isSmall) - { - m_small_spacing = spacing; - } - else - { - m_normal_spacing = spacing; - } -} - -int wxListMainWindow::GetItemSpacing( bool isSmall ) -{ - if (isSmall) return m_small_spacing; else return m_normal_spacing; -} - -void wxListMainWindow::SetColumn( int col, wxListItem &item ) -{ - m_dirty = TRUE; - wxNode *node = m_columns.Nth( col ); - if (node) - { - if (item.m_width == wxLIST_AUTOSIZE_USEHEADER) item.m_width = GetTextLength( item.m_text )+7; - wxListHeaderData *column = (wxListHeaderData*)node->Data(); - column->SetItem( item ); - } - wxListCtrl *lc = (wxListCtrl*) GetParent(); - if (lc->m_headerWin) lc->m_headerWin->Refresh(); -} - -void wxListMainWindow::SetColumnWidth( int col, int width ) -{ - if (!(m_mode & wxLC_REPORT)) return; - - m_dirty = TRUE; - - wxNode *node = m_columns.Nth( col ); - if (node) - { - wxListHeaderData *column = (wxListHeaderData*)node->Data(); - column->SetWidth( width ); - } - - node = m_lines.First(); - while (node) - { - wxListLineData *line = (wxListLineData*)node->Data(); - wxNode *n = line->m_items.Nth( col ); - if (n) - { - wxListItemData *item = (wxListItemData*)n->Data(); - item->SetSize( width, -1 ); - } - node = node->Next(); - } - - wxListCtrl *lc = (wxListCtrl*) GetParent(); - if (lc->m_headerWin) lc->m_headerWin->Refresh(); -} - -void wxListMainWindow::GetColumn( int col, wxListItem &item ) -{ - wxNode *node = m_columns.Nth( col ); - if (node) - { - wxListHeaderData *column = (wxListHeaderData*)node->Data(); - column->GetItem( item ); - } - else - { - item.m_format = 0; - item.m_width = 0; - item.m_text = ""; - item.m_image = 0; - item.m_data = 0; - } -} - -int wxListMainWindow::GetColumnWidth( int col ) -{ - wxNode *node = m_columns.Nth( col ); - if (node) - { - wxListHeaderData *column = (wxListHeaderData*)node->Data(); - return column->GetWidth(); - } - else - { - return 0; - } -} - -int wxListMainWindow::GetColumnCount( void ) -{ - return m_columns.Number(); -} - -int wxListMainWindow::GetCountPerPage( void ) -{ - return m_visibleLines; -} - -void wxListMainWindow::SetItem( wxListItem &item ) -{ - m_dirty = TRUE; - wxNode *node = m_lines.Nth( item.m_itemId ); - if (node) - { - wxListLineData *line = (wxListLineData*)node->Data(); - if (m_mode & wxLC_REPORT) item.m_width = GetColumnWidth( item.m_col )-3; - line->SetItem( item.m_col, item ); - } -} - -void wxListMainWindow::SetItemState( long item, long state, long stateMask ) -{ - // m_dirty = TRUE; no recalcs needed - - wxListLineData *oldCurrent = m_current; - - if (stateMask & wxLIST_STATE_FOCUSED) - { - wxNode *node = m_lines.Nth( item ); - if (node) - { - wxListLineData *line = (wxListLineData*)node->Data(); - UnfocusLine( m_current ); - m_current = line; - FocusLine( m_current ); - RefreshLine( m_current ); - RefreshLine( oldCurrent ); - } - } - - if (stateMask & wxLIST_STATE_SELECTED) - { - bool on = state & wxLIST_STATE_SELECTED; - if (!on && (m_mode & wxLC_SINGLE_SEL)) return; - - wxNode *node = m_lines.Nth( item ); - if (node) - { - wxListLineData *line = (wxListLineData*)node->Data(); - if (m_mode & wxLC_SINGLE_SEL) - { - UnfocusLine( m_current ); - m_current = line; - FocusLine( m_current ); - oldCurrent->Hilight( FALSE ); - RefreshLine( m_current ); - RefreshLine( oldCurrent ); - } - bool on = state & wxLIST_STATE_SELECTED; - if (on != line->IsHilighted()) - { - line->Hilight( on ); - RefreshLine( line ); - } - } - } -} - -int wxListMainWindow::GetItemState( long item, long stateMask ) -{ - int ret = wxLIST_STATE_DONTCARE; - if (stateMask & wxLIST_STATE_FOCUSED) - { - wxNode *node = m_lines.Nth( item ); - if (node) - { - wxListLineData *line = (wxListLineData*)node->Data(); - if (line == m_current) ret |= wxLIST_STATE_FOCUSED; - } - } - if (stateMask & wxLIST_STATE_SELECTED) - { - wxNode *node = m_lines.Nth( item ); - if (node) - { - wxListLineData *line = (wxListLineData*)node->Data(); - if (line->IsHilighted()) ret |= wxLIST_STATE_FOCUSED; - } - } - return ret; -} - -void wxListMainWindow::GetItem( wxListItem &item ) -{ - wxNode *node = m_lines.Nth( item.m_itemId ); - if (node) - { - wxListLineData *line = (wxListLineData*)node->Data(); - line->GetItem( item.m_col, item ); - } - else - { - item.m_mask = 0; - item.m_text = ""; - item.m_image = 0; - item.m_data = 0; - } -} - -int wxListMainWindow::GetItemCount( void ) -{ - return m_lines.Number(); -} - -void wxListMainWindow::GetItemRect( long index, wxRectangle &rect ) -{ - wxNode *node = m_lines.Nth( index ); - if (node) - { - wxListLineData *line = (wxListLineData*)node->Data(); - line->GetRect( rect ); - } - else - { - rect.x = 0; - rect.y = 0; - rect.width = 0; - rect.height = 0; - } -} - -bool wxListMainWindow::GetItemPosition(long item, wxPoint& pos) -{ - wxNode *node = m_lines.Nth( item ); - if (node) - { - wxRectangle rect; - wxListLineData *line = (wxListLineData*)node->Data(); - line->GetRect( rect ); - pos.x = rect.x; - pos.y = rect.y; - } - else - { - pos.x = 0; - pos.y = 0; - } - return TRUE; -} - -int wxListMainWindow::GetSelectedItemCount( void ) -{ - int ret = 0; - wxNode *node = m_lines.First(); - while (node) - { - wxListLineData *line = (wxListLineData*)node->Data(); - if (line->IsHilighted()) ret++; - node = node->Next(); - } - return ret; -} - -void wxListMainWindow::SetMode( long mode ) -{ - m_dirty = TRUE; - m_mode = mode; - - DeleteEverything(); - - if (m_mode & wxLC_REPORT) - { - m_xScroll = 0; - m_yScroll = 15; - } - else - { - m_xScroll = 15; - m_yScroll = 0; - } -} - -long wxListMainWindow::GetMode( void ) const -{ - return m_mode; -} - -void wxListMainWindow::CalculatePositions( void ) -{ - if (!m_lines.First()) return; - - wxClientDC dc( this ); - dc.SetFont( GetFont() ); - - int iconSpacing = 0; - if (m_mode & wxLC_ICON) iconSpacing = m_normal_spacing; - if (m_mode & wxLC_SMALL_ICON) iconSpacing = m_small_spacing; - - // we take the first line (which also can be an icon or - // an a text item in wxLC_ICON and wxLC_LIST modes) to - // measure the size of the line - - int lineWidth = 0; - int lineHeight = 0; - int lineSpacing = 0; - - wxListLineData *line = (wxListLineData*)m_lines.First()->Data(); - line->CalculateSize( &dc, iconSpacing ); - int dummy = 0; - line->GetSize( dummy, lineSpacing ); - lineSpacing += 4; - - int clientWidth = 0; - int clientHeight = 0; - - if (m_mode & wxLC_REPORT) - { - int x = 4; - int y = 1; - int entireHeight = m_lines.Number() * lineSpacing + 2; - int scroll_pos = GetScrollPos( wxVERTICAL ); - SetScrollbars( m_xScroll, m_yScroll, 0, (entireHeight+15) / m_yScroll, 0, scroll_pos, TRUE ); - GetClientSize( &clientWidth, &clientHeight ); - - wxNode* node = m_lines.First(); - while (node) - { - wxListLineData *line = (wxListLineData*)node->Data(); - line->CalculateSize( &dc, iconSpacing ); - line->SetPosition( &dc, x, y, clientWidth ); - int col_x = 2; - for (int i = 0; i < GetColumnCount(); i++) - { - line->SetColumnPosition( i, col_x ); - col_x += GetColumnWidth( i ); - } - y += lineSpacing; // one pixel blank line between items - node = node->Next(); - } - m_visibleLines = clientHeight / lineSpacing; - } - else - { - // at first we try without any scrollbar. if the items don't - // fit into the window, we recalculate after subtracting an - // approximated 15 pt for the horizontal scrollbar - - GetSize( &clientWidth, &clientHeight ); - clientHeight -= 4; // sunken frame - - int entireWidth = 0; - - for (int tries = 0; tries < 2; tries++) - { - entireWidth = 0; - int x = 5; // painting is done at x-2 - int y = 5; // painting is done at y-2 - int maxWidth = 0; - wxNode *node = m_lines.First(); - while (node) - { - wxListLineData *line = (wxListLineData*)node->Data(); - line->CalculateSize( &dc, iconSpacing ); - line->SetPosition( &dc, x, y, clientWidth ); - line->GetSize( lineWidth, lineHeight ); - if (lineWidth > maxWidth) maxWidth = lineWidth; - y += lineSpacing; - if (y+lineSpacing-6 >= clientHeight) // -6 for earlier "line breaking" - { - y = 5; - x += maxWidth+6; - entireWidth += maxWidth+6; - maxWidth = 0; - } - node = node->Next(); - if (!node) entireWidth += maxWidth; - if ((tries == 0) && (entireWidth > clientWidth)) - { - clientHeight -= 15; // scrollbar height - break; - } - if (!node) tries = 1; // everything fits, no second try required - } - } - m_visibleLines = (clientHeight+6) / (lineSpacing); // +6 for earlier "line breaking" - - int scroll_pos = GetScrollPos( wxHORIZONTAL ); - SetScrollbars( m_xScroll, m_yScroll, (entireWidth+15) / m_xScroll, 0, scroll_pos, 0, TRUE ); - } -} - -void wxListMainWindow::RealizeChanges( void ) -{ - if (!m_current) - { - wxNode *node = m_lines.First(); - if (node) m_current = (wxListLineData*)node->Data(); - } - if (m_current) - { - FocusLine( m_current ); - if (m_mode & wxLC_SINGLE_SEL) m_current->Hilight( TRUE ); - } -} - -long wxListMainWindow::GetNextItem( long item, int WXUNUSED(geometry), int state ) -{ - long ret = 0; - if (item > 0) ret = item; - wxNode *node = m_lines.Nth( ret ); - while (node) - { - wxListLineData *line = (wxListLineData*)node->Data(); - if ((state & wxLIST_STATE_FOCUSED) && (line == m_current)) return ret; - if ((state & wxLIST_STATE_SELECTED) && (line->IsHilighted())) return ret; - if (!state) return ret; - ret++; - node = node->Next(); - } - return -1; -} - -void wxListMainWindow::DeleteItem( long index ) -{ - m_dirty = TRUE; - wxNode *node = m_lines.Nth( index ); - if (node) - { - wxListLineData *line = (wxListLineData*)node->Data(); - if (m_current == line) m_current = (wxListLineData *) NULL; - DeleteLine( line ); - m_lines.DeleteNode( node ); - } -} - -void wxListMainWindow::DeleteColumn( int col ) -{ - wxCHECK_RET( col < (int)m_columns.GetCount(), - "attempting to delete inexistent column in wxListView" ); - - m_dirty = TRUE; - wxNode *node = m_columns.Nth( col ); - if (node) m_columns.DeleteNode( node ); -} - -void wxListMainWindow::DeleteAllItems( void ) -{ - m_dirty = TRUE; - m_current = (wxListLineData *) NULL; - wxNode *node = m_lines.First(); - while (node) - { - wxListLineData *line = (wxListLineData*)node->Data(); - DeleteLine( line ); - node = node->Next(); - } - m_lines.Clear(); -} - -void wxListMainWindow::DeleteEverything( void ) -{ - m_dirty = TRUE; - m_current = (wxListLineData *) NULL; - wxNode *node = m_lines.First(); - while (node) - { - wxListLineData *line = (wxListLineData*)node->Data(); - DeleteLine( line ); - node = node->Next(); - } - m_lines.Clear(); - m_current = (wxListLineData *) NULL; - m_columns.Clear(); -} - -void wxListMainWindow::EnsureVisible( long index ) -{ - wxListLineData *oldCurrent = m_current; - m_current = (wxListLineData *) NULL; - int i = index; - wxNode *node = m_lines.Nth( i ); - if (node) m_current = (wxListLineData*)node->Data(); - if (m_current) MoveToFocus(); - m_current = oldCurrent; -} - -long wxListMainWindow::FindItem(long start, const wxString& str, bool WXUNUSED(partial) ) -{ - long pos = start; - wxString tmp = str; - if (pos < 0) pos = 0; - wxNode *node = m_lines.Nth( pos ); - while (node) - { - wxListLineData *line = (wxListLineData*)node->Data(); - wxString s = ""; - line->GetText( 0, s ); - if (s == tmp) return pos; - node = node->Next(); - pos++; - } - return -1; -} - -long wxListMainWindow::FindItem(long start, long data) -{ - long pos = start; - if (pos < 0) pos = 0; - wxNode *node = m_lines.Nth( pos ); - while (node) - { - wxListLineData *line = (wxListLineData*)node->Data(); - wxListItem item; - line->GetItem( 0, item ); - if (item.m_data == data) return pos; - node = node->Next(); - pos++; - } - return -1; -} - -long wxListMainWindow::HitTest( int x, int y, int &flags ) -{ - wxNode *node = m_lines.First(); - int count = 0; - while (node) - { - wxListLineData *line = (wxListLineData*)node->Data(); - long ret = line->IsHit( x, y ); - if (ret & flags) - { - flags = ret; - return count; - } - node = node->Next(); - count++; - } - return -1; -} - -void wxListMainWindow::InsertItem( wxListItem &item ) -{ - m_dirty = TRUE; - int mode = 0; - if (m_mode & wxLC_REPORT) mode = wxLC_REPORT; - else if (m_mode & wxLC_LIST) mode = wxLC_LIST; - else if (m_mode & wxLC_ICON) mode = wxLC_ICON; - else if (m_mode & wxLC_SMALL_ICON) mode = wxLC_ICON; // no typo - - wxListLineData *line = new wxListLineData( this, mode, m_hilightBrush ); - - if (m_mode & wxLC_REPORT) - { - line->InitItems( GetColumnCount() ); - item.m_width = GetColumnWidth( 0 )-3; - } - else - { - line->InitItems( 1 ); - } - - line->SetItem( 0, item ); - if ((item.m_itemId >= 0) && (item.m_itemId < (int)m_lines.GetCount())) - { - wxNode *node = m_lines.Nth( item.m_itemId ); - if (node) m_lines.Insert( node, line ); - } - else - { - m_lines.Append( line ); - } -} - -void wxListMainWindow::InsertColumn( long col, wxListItem &item ) -{ - m_dirty = TRUE; - if (m_mode & wxLC_REPORT) - { - if (item.m_width == wxLIST_AUTOSIZE_USEHEADER) item.m_width = GetTextLength( item.m_text ); - wxListHeaderData *column = new wxListHeaderData( item ); - if ((col >= 0) && (col < (int)m_columns.GetCount())) - { - wxNode *node = m_columns.Nth( col ); - if (node) - m_columns.Insert( node, column ); - } - else - { - m_columns.Append( column ); - } - } -} - -wxListCtrlCompare list_ctrl_compare_func_2; -long list_ctrl_compare_data; - -int list_ctrl_compare_func_1( const void *arg1, const void *arg2 ) -{ - wxListLineData *line1 = *((wxListLineData**)arg1); - wxListLineData *line2 = *((wxListLineData**)arg2); - wxListItem item; - line1->GetItem( 0, item ); - long data1 = item.m_data; - line2->GetItem( 0, item ); - long data2 = item.m_data; - return list_ctrl_compare_func_2( data1, data2, list_ctrl_compare_data ); -} - -void wxListMainWindow::SortItems( wxListCtrlCompare fn, long data ) -{ - list_ctrl_compare_func_2 = fn; - list_ctrl_compare_data = data; - m_lines.Sort( list_ctrl_compare_func_1 ); -} - -// ------------------------------------------------------------------------------------- -// wxListItem -// ------------------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxListItem, wxObject) - -wxListItem::wxListItem(void) -{ - m_mask = 0; - m_itemId = 0; - m_col = 0; - m_state = 0; - m_stateMask = 0; - m_image = 0; - m_data = 0; - m_format = wxLIST_FORMAT_CENTRE; - m_width = 0; - m_colour = wxBLACK; -} - -// ------------------------------------------------------------------------------------- -// wxListEvent -// ------------------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxListEvent, wxNotifyEvent) - -wxListEvent::wxListEvent( wxEventType commandType, int id ): - wxNotifyEvent( commandType, id ) -{ - m_code = 0; - m_itemIndex = 0; - m_oldItemIndex = 0; - m_col = 0; - m_cancelled = FALSE; - m_pointDrag.x = 0; - m_pointDrag.y = 0; -} - -// ------------------------------------------------------------------------------------- -// wxListCtrl -// ------------------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxListCtrl, wxControl) - -BEGIN_EVENT_TABLE(wxListCtrl,wxControl) - EVT_SIZE (wxListCtrl::OnSize) - EVT_IDLE (wxListCtrl::OnIdle) -END_EVENT_TABLE() - -wxListCtrl::wxListCtrl(void) -{ - m_imageListNormal = (wxImageList *) NULL; - m_imageListSmall = (wxImageList *) NULL; - m_imageListState = (wxImageList *) NULL; - m_mainWin = (wxListMainWindow*) NULL; - m_headerWin = (wxListHeaderWindow*) NULL; -} - -wxListCtrl::~wxListCtrl(void) -{ -} - -bool wxListCtrl::Create( wxWindow *parent, wxWindowID id, - const wxPoint &pos, const wxSize &size, - long style, const wxValidator &validator, - const wxString &name ) -{ - m_imageListNormal = (wxImageList *) NULL; - m_imageListSmall = (wxImageList *) NULL; - m_imageListState = (wxImageList *) NULL; - m_mainWin = (wxListMainWindow*) NULL; - m_headerWin = (wxListHeaderWindow*) NULL; - - long s = style; - - if ((s & wxLC_REPORT == 0) && - (s & wxLC_LIST == 0) && - (s & wxLC_ICON == 0)) - { - s = s | wxLC_LIST; - } - - bool ret = wxControl::Create( parent, id, pos, size, s, name ); - - SetValidator( validator ); - - if (s & wxSUNKEN_BORDER) s -= wxSUNKEN_BORDER; - - m_mainWin = new wxListMainWindow( this, -1, wxPoint(0,0), size, s ); - - if (GetWindowStyleFlag() & wxLC_REPORT) - m_headerWin = new wxListHeaderWindow( this, -1, m_mainWin, wxPoint(0,0), wxSize(size.x,23), wxTAB_TRAVERSAL ); - else - m_headerWin = (wxListHeaderWindow *) NULL; - - return ret; -} - -void wxListCtrl::OnSize( wxSizeEvent &WXUNUSED(event) ) -{ - /* handled in OnIdle */ - - if (m_mainWin) m_mainWin->m_dirty = TRUE; -} - -void wxListCtrl::SetSingleStyle( long style, bool add ) -{ - long flag = GetWindowStyleFlag(); - - if (add) - { - if (style & wxLC_MASK_TYPE) flag = flag & ~wxLC_MASK_TYPE; - if (style & wxLC_MASK_ALIGN) flag = flag & ~wxLC_MASK_ALIGN; - if (style & wxLC_MASK_SORT) flag = flag & ~wxLC_MASK_SORT; - } - - if (add) - { - flag |= style; - } - else - { - if (flag & style) flag -= style; - } - - SetWindowStyleFlag( flag ); -} - -void wxListCtrl::SetWindowStyleFlag( long flag ) -{ - m_mainWin->DeleteEverything(); - - int width = 0; - int height = 0; - GetClientSize( &width, &height ); - - m_mainWin->SetMode( flag ); - - if (flag & wxLC_REPORT) - { - if (!(GetWindowStyleFlag() & wxLC_REPORT)) - { -// m_mainWin->SetSize( 0, 24, width, height-24 ); - if (!m_headerWin) - { - m_headerWin = new wxListHeaderWindow( this, -1, m_mainWin, wxPoint(0,0), wxSize(width,23), wxTAB_TRAVERSAL ); - } - else - { -// m_headerWin->SetSize( 0, 0, width, 23 ); - m_headerWin->Show( TRUE ); - } - } - } - else - { - if (GetWindowStyleFlag() & wxLC_REPORT) - { -// m_mainWin->SetSize( 0, 0, width, height ); - m_headerWin->Show( FALSE ); - } - } - - wxWindow::SetWindowStyleFlag( flag ); -} - -bool wxListCtrl::GetColumn(int col, wxListItem &item) const -{ - m_mainWin->GetColumn( col, item ); - return TRUE; -} - -bool wxListCtrl::SetColumn( int col, wxListItem& item ) -{ - m_mainWin->SetColumn( col, item ); - return TRUE; -} - -int wxListCtrl::GetColumnWidth( int col ) const -{ - return m_mainWin->GetColumnWidth( col ); -} - -bool wxListCtrl::SetColumnWidth( int col, int width ) -{ - m_mainWin->SetColumnWidth( col, width ); - return TRUE; -} - -int wxListCtrl::GetCountPerPage(void) const -{ - return m_mainWin->GetCountPerPage(); // different from Windows ? -} - -/* -wxText& wxListCtrl::GetEditControl(void) const -{ -} -*/ - -bool wxListCtrl::GetItem( wxListItem &info ) const -{ - m_mainWin->GetItem( info ); - return TRUE; -} - -bool wxListCtrl::SetItem( wxListItem &info ) -{ - m_mainWin->SetItem( info ); - return TRUE; -} - -long wxListCtrl::SetItem( long index, int col, const wxString& label, int imageId ) -{ - wxListItem info; - info.m_text = label; - info.m_mask = wxLIST_MASK_TEXT; - info.m_itemId = index; - info.m_col = col; - if ( imageId > -1 ) - { - info.m_image = imageId; - info.m_mask |= wxLIST_MASK_IMAGE; - }; - m_mainWin->SetItem(info); - return TRUE; -} - -int wxListCtrl::GetItemState( long item, long stateMask ) const -{ - return m_mainWin->GetItemState( item, stateMask ); -} - -bool wxListCtrl::SetItemState( long item, long state, long stateMask ) -{ - m_mainWin->SetItemState( item, state, stateMask ); - return TRUE; -} - -bool wxListCtrl::SetItemImage( long item, int image, int WXUNUSED(selImage) ) -{ - wxListItem info; - info.m_image = image; - info.m_mask = wxLIST_MASK_IMAGE; - info.m_itemId = item; - m_mainWin->SetItem( info ); - return TRUE; -} - -wxString wxListCtrl::GetItemText( long item ) const -{ - wxListItem info; - info.m_itemId = item; - m_mainWin->GetItem( info ); - return info.m_text; -} - -void wxListCtrl::SetItemText( long item, const wxString &str ) -{ - wxListItem info; - info.m_mask = wxLIST_MASK_TEXT; - info.m_itemId = item; - info.m_text = str; - m_mainWin->SetItem( info ); -} - -long wxListCtrl::GetItemData( long item ) const -{ - wxListItem info; - info.m_itemId = item; - m_mainWin->GetItem( info ); - return info.m_data; -} - -bool wxListCtrl::SetItemData( long item, long data ) -{ - wxListItem info; - info.m_mask = wxLIST_MASK_DATA; - info.m_itemId = item; - info.m_data = data; - m_mainWin->SetItem( info ); - return TRUE; -} - -bool wxListCtrl::GetItemRect( long item, wxRectangle &rect, int WXUNUSED(code) ) const -{ - m_mainWin->GetItemRect( item, rect ); - return TRUE; -} - -bool wxListCtrl::GetItemPosition( long item, wxPoint& pos ) const -{ - m_mainWin->GetItemPosition( item, pos ); - return TRUE; -} - -bool wxListCtrl::SetItemPosition( long WXUNUSED(item), const wxPoint& WXUNUSED(pos) ) -{ - return 0; -} - -int wxListCtrl::GetItemCount(void) const -{ - return m_mainWin->GetItemCount(); -} - -int wxListCtrl::GetColumnCount(void) const -{ - return m_mainWin->GetColumnCount(); -} - -void wxListCtrl::SetItemSpacing( int spacing, bool isSmall ) -{ - m_mainWin->SetItemSpacing( spacing, isSmall ); -} - -int wxListCtrl::GetItemSpacing( bool isSmall ) const -{ - return m_mainWin->GetItemSpacing( isSmall ); -} - -int wxListCtrl::GetSelectedItemCount(void) const -{ - return m_mainWin->GetSelectedItemCount(); -} - -/* -wxColour wxListCtrl::GetTextColour(void) const -{ -} - -void wxListCtrl::SetTextColour(const wxColour& WXUNUSED(col)) -{ -} -*/ - -long wxListCtrl::GetTopItem(void) const -{ - return 0; -} - -long wxListCtrl::GetNextItem( long item, int geom, int state ) const -{ - return m_mainWin->GetNextItem( item, geom, state ); -} - -wxImageList *wxListCtrl::GetImageList(int which) const -{ - if (which == wxIMAGE_LIST_NORMAL) - { - return m_imageListNormal; - } - else if (which == wxIMAGE_LIST_SMALL) - { - return m_imageListSmall; - } - else if (which == wxIMAGE_LIST_STATE) - { - return m_imageListState; - } - return (wxImageList *) NULL; -} - -void wxListCtrl::SetImageList( wxImageList *imageList, int which ) -{ - m_mainWin->SetImageList( imageList, which ); -} - -bool wxListCtrl::Arrange( int WXUNUSED(flag) ) -{ - return 0; -} - -bool wxListCtrl::DeleteItem( long item ) -{ - m_mainWin->DeleteItem( item ); - return TRUE; -} - -bool wxListCtrl::DeleteAllItems(void) -{ - m_mainWin->DeleteAllItems(); - return TRUE; -} - -bool wxListCtrl::DeleteAllColumns() -{ - for ( size_t n = 0; n < m_mainWin->m_columns.GetCount(); n++ ) - DeleteColumn(n); - - return TRUE; -} - -void wxListCtrl::ClearAll() -{ - m_mainWin->DeleteEverything(); -} - -bool wxListCtrl::DeleteColumn( int col ) -{ - m_mainWin->DeleteColumn( col ); - return TRUE; -} - -/* -wxText& wxListCtrl::Edit( long WXUNUSED(item ) ) -{ -} -*/ - -bool wxListCtrl::EnsureVisible( long item ) -{ - m_mainWin->EnsureVisible( item ); - return TRUE; -} - -long wxListCtrl::FindItem( long start, const wxString& str, bool partial ) -{ - return m_mainWin->FindItem( start, str, partial ); -} - -long wxListCtrl::FindItem( long start, long data ) -{ - return m_mainWin->FindItem( start, data ); -} - -long wxListCtrl::FindItem( long WXUNUSED(start), const wxPoint& WXUNUSED(pt), - int WXUNUSED(direction)) -{ - return 0; -} - -long wxListCtrl::HitTest( const wxPoint &point, int &flags ) -{ - return m_mainWin->HitTest( (int)point.x, (int)point.y, flags ); -} - -long wxListCtrl::InsertItem( wxListItem& info ) -{ - m_mainWin->InsertItem( info ); - return 0; -} - -long wxListCtrl::InsertItem( long index, const wxString &label ) -{ - wxListItem info; - info.m_text = label; - info.m_mask = wxLIST_MASK_TEXT; - info.m_itemId = index; - return InsertItem( info ); -} - -long wxListCtrl::InsertItem( long index, int imageIndex ) -{ - wxListItem info; - info.m_mask = wxLIST_MASK_IMAGE; - info.m_image = imageIndex; - info.m_itemId = index; - return InsertItem( info ); -} - -long wxListCtrl::InsertItem( long index, const wxString &label, int imageIndex ) -{ - wxListItem info; - info.m_text = label; - info.m_image = imageIndex; - info.m_mask = wxLIST_MASK_TEXT | wxLIST_MASK_IMAGE; - info.m_itemId = index; - return InsertItem( info ); -} - -long wxListCtrl::InsertColumn( long col, wxListItem &item ) -{ - m_mainWin->InsertColumn( col, item ); - return 0; -} - -long wxListCtrl::InsertColumn( long col, const wxString &heading, - int format, int width ) -{ - wxListItem item; - item.m_mask = wxLIST_MASK_TEXT | wxLIST_MASK_FORMAT; - item.m_text = heading; - if (width >= -2) - { - item.m_mask |= wxLIST_MASK_WIDTH; - item.m_width = width; - } -; - item.m_format = format; - - return InsertColumn( col, item ); -} - -bool wxListCtrl::ScrollList( int WXUNUSED(dx), int WXUNUSED(dy) ) -{ - return 0; -} - -// Sort items. -// 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. - -bool wxListCtrl::SortItems( wxListCtrlCompare fn, long data ) -{ - m_mainWin->SortItems( fn, data ); - return TRUE; -} - -void wxListCtrl::OnIdle( wxIdleEvent &WXUNUSED(event) ) -{ - if (!m_mainWin->m_dirty) return; - - int cw = 0; - int ch = 0; - GetClientSize( &cw, &ch ); - - int x = 0; - int y = 0; - int w = 0; - int h = 0; - - if (GetWindowStyleFlag() & wxLC_REPORT) - { - m_headerWin->GetPosition( &x, &y ); - m_headerWin->GetSize( &w, &h ); - if ((x != 0) || (y != 0) || (w != cw) || (h != 23)) - m_headerWin->SetSize( 0, 0, cw, 23 ); - - m_mainWin->GetPosition( &x, &y ); - m_mainWin->GetSize( &w, &h ); - if ((x != 0) || (y != 24) || (w != cw) || (h != ch-24)) - m_mainWin->SetSize( 0, 24, cw, ch-24 ); - } - else - { - m_mainWin->GetPosition( &x, &y ); - m_mainWin->GetSize( &w, &h ); - if ((x != 0) || (y != 24) || (w != cw) || (h != ch)) - m_mainWin->SetSize( 0, 0, cw, ch ); - } - - m_mainWin->CalculatePositions(); - m_mainWin->RealizeChanges(); - m_mainWin->m_dirty = FALSE; - m_mainWin->Refresh(); -} - -void wxListCtrl::SetBackgroundColour( const wxColour &colour ) -{ - if (m_mainWin) - { - m_mainWin->SetBackgroundColour( colour ); - m_mainWin->m_dirty = TRUE; - } - if (m_headerWin) - m_headerWin->SetBackgroundColour( colour ); -} - -void wxListCtrl::SetForegroundColour( const wxColour &colour ) -{ - if (m_mainWin) - { - m_mainWin->SetForegroundColour( colour ); - m_mainWin->m_dirty = TRUE; - } - if (m_headerWin) - m_headerWin->SetForegroundColour( colour ); -} - -void wxListCtrl::SetFont( const wxFont &font ) -{ - if (m_mainWin) - { - m_mainWin->SetFont( font ); - m_mainWin->m_dirty = TRUE; - } - if (m_headerWin) - m_headerWin->SetFont( font ); -} - diff --git a/src/generic/msgdlgg.cpp b/src/generic/msgdlgg.cpp deleted file mode 100644 index 498dccc0b6..0000000000 --- a/src/generic/msgdlgg.cpp +++ /dev/null @@ -1,181 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: msgdlgg.cpp -// Purpose: wxGenericMessageDialog -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "msgdlgg.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/utils.h" -#include "wx/dialog.h" -#include "wx/listbox.h" -#include "wx/button.h" -#include "wx/stattext.h" -#include "wx/layout.h" -#include "wx/intl.h" -#endif - -#include -#include - -#include "wx/generic/msgdlgg.h" - -/////////////////////////////////////////////////////////////////// -// New dialog box implementations - -// Split message, using constraints to position controls -void wxSplitMessage2(const char *message, wxList *messageList, wxWindow *parent, wxRowColSizer *sizer) -{ - char *copyMessage = copystring(message); - size_t i = 0; - size_t len = strlen(copyMessage); - char *currentMessage = copyMessage; - -// wxWindow *lastWindow = parent; - - while (i < len) { - while ((i < len) && (copyMessage[i] != '\n')) i++; - if (i < len) copyMessage[i] = 0; - wxStaticText *mess = new wxStaticText(parent, -1, currentMessage); - -/* - wxLayoutConstraints *c = new wxLayoutConstraints; - c->left.SameAs (parent, wxLeft, 10); - c->top.SameAs (lastWindow, wxBottom, 5); - c->right.AsIs (); - c->height.AsIs (); - - mess->SetConstraints(c); -*/ - sizer->AddSizerChild(mess); - - messageList->Append(mess); - - currentMessage = copyMessage + i + 1; - } - delete[] copyMessage; -} - -#if !USE_SHARED_LIBRARY -BEGIN_EVENT_TABLE(wxGenericMessageDialog, wxDialog) - EVT_BUTTON(wxID_YES, wxGenericMessageDialog::OnYes) - EVT_BUTTON(wxID_NO, wxGenericMessageDialog::OnNo) - EVT_BUTTON(wxID_CANCEL, wxGenericMessageDialog::OnCancel) -END_EVENT_TABLE() - -IMPLEMENT_CLASS(wxGenericMessageDialog, wxDialog) -#endif - -wxGenericMessageDialog::wxGenericMessageDialog(wxWindow *parent, const wxString& message, const wxString& caption, - long style, const wxPoint& pos): - wxDialog(parent, -1, caption, pos, -#ifdef __WXMOTIF_ - wxSize(400, 300), -#else - wxDefaultSize, -#endif - wxDEFAULT_DIALOG_STYLE|wxDIALOG_MODAL) -{ - m_dialogStyle = style; - - wxBeginBusyCursor(); - - wxSizer *topSizer = new wxSizer(this, wxSizerShrink); - topSizer->SetBorder(10, 10); - - wxRowColSizer *messageSizer = new wxRowColSizer(topSizer, wxSIZER_COLS, 100); - messageSizer->SetName("messageSizer"); - -// bool centre = ((style & wxCENTRE) == wxCENTRE); - - wxList messageList; - wxSplitMessage2(message, &messageList, this, messageSizer); - - // Insert a spacer - wxSpacingSizer *spacingSizer = new wxSpacingSizer(topSizer, wxBelow, messageSizer, 20); - - wxRowColSizer *buttonSizer = new wxRowColSizer(topSizer, wxSIZER_ROWS); - buttonSizer->SetName("buttonSizer"); - - // Specify constraints for the button sizer - wxLayoutConstraints *c = new wxLayoutConstraints; - c->width.AsIs (); - c->height.AsIs (); - c->top.Below (spacingSizer); - c->centreX.SameAs (spacingSizer, wxCentreX); - buttonSizer->SetConstraints(c); - - wxButton *ok = (wxButton *) NULL; - wxButton *cancel = (wxButton *) NULL; - wxButton *yes = (wxButton *) NULL; - wxButton *no = (wxButton *) NULL; - - if (style & wxYES_NO) { - yes = new wxButton(this, wxID_YES, _("Yes")); - no = new wxButton(this, wxID_NO, _("No")); - - buttonSizer->AddSizerChild(yes); - buttonSizer->AddSizerChild(no); - } - - if (style & wxOK) { - ok = new wxButton(this, wxID_OK, _("OK")); - buttonSizer->AddSizerChild(ok); - } - - if (style & wxCANCEL) { - cancel = new wxButton(this, wxID_CANCEL, _("Cancel")); - buttonSizer->AddSizerChild(cancel); - } - - if (ok) - { - ok->SetDefault(); - ok->SetFocus(); - } - else if (yes) - { - yes->SetDefault(); - yes->SetFocus(); - } - - Layout(); - Centre(wxBOTH); - - wxEndBusyCursor(); -} - -void wxGenericMessageDialog::OnYes(wxCommandEvent& WXUNUSED(event)) -{ - EndModal(wxID_YES); -} - -void wxGenericMessageDialog::OnNo(wxCommandEvent& WXUNUSED(event)) -{ - EndModal(wxID_NO); -} - -void wxGenericMessageDialog::OnCancel(wxCommandEvent& WXUNUSED(event)) -{ - // Allow cancellation via ESC/Close button except if - // only YES and NO are specified. - if ( (m_dialogStyle & wxYES_NO) != wxYES_NO || (m_dialogStyle & wxCANCEL) ) - EndModal(wxID_CANCEL); -} - - diff --git a/src/generic/notebook.cpp b/src/generic/notebook.cpp deleted file mode 100644 index 3be3cd9634..0000000000 --- a/src/generic/notebook.cpp +++ /dev/null @@ -1,650 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: notebook.cpp -// Purpose: implementation of wxNotebook -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -// ============================================================================ -// declarations -// ============================================================================ - -// ---------------------------------------------------------------------------- -// headers -// ---------------------------------------------------------------------------- -#ifdef __GNUG__ -#pragma implementation "notebook.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#include -#include -#include -#include -#include -#include - -// ---------------------------------------------------------------------------- -// macros -// ---------------------------------------------------------------------------- - -// check that the page index is valid -#define IS_VALID_PAGE(nPage) (((nPage) >= 0) && ((nPage) < GetPageCount())) - -// ---------------------------------------------------------------------------- -// event table -// ---------------------------------------------------------------------------- - -#if !USE_SHARED_LIBRARIES -BEGIN_EVENT_TABLE(wxNotebook, wxControl) - EVT_NOTEBOOK_PAGE_CHANGED(-1, wxNotebook::OnSelChange) - EVT_SIZE(wxNotebook::OnSize) - EVT_PAINT(wxNotebook::OnPaint) - EVT_MOUSE_EVENTS(wxNotebook::OnMouseEvent) - EVT_SET_FOCUS(wxNotebook::OnSetFocus) - EVT_NAVIGATION_KEY(wxNotebook::OnNavigationKey) -// EVT_IDLE(wxNotebook::OnIdle) -END_EVENT_TABLE() - -IMPLEMENT_DYNAMIC_CLASS(wxNotebook, wxControl) -IMPLEMENT_DYNAMIC_CLASS(wxNotebookEvent, wxCommandEvent) -#endif - -// ============================================================================ -// implementation -// ============================================================================ - -// ---------------------------------------------------------------------------- -// wxNotebook construction -// ---------------------------------------------------------------------------- - -// common part of all ctors -void wxNotebook::Init() -{ - m_tabView = (wxNotebookTabView*) NULL; - m_pImageList = NULL; - m_nSelection = -1; -} - -// default for dynamic class -wxNotebook::wxNotebook() -{ - Init(); -} - -// the same arguments as for wxControl -wxNotebook::wxNotebook(wxWindow *parent, - wxWindowID id, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - Init(); - - Create(parent, id, pos, size, style, name); -} - -// Create() function -bool wxNotebook::Create(wxWindow *parent, - wxWindowID id, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - // base init - SetName(name); - - m_windowId = id == -1 ? NewControlId() : id; - - // It's like a normal window... - if (!wxWindow::Create(parent, id, pos, size, style|wxNO_BORDER, name)) - return FALSE; - - SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE)); - - SetTabView(new wxNotebookTabView(this)); - - return TRUE; -} - -// dtor -wxNotebook::~wxNotebook() -{ - delete m_tabView; -} - -// ---------------------------------------------------------------------------- -// wxNotebook accessors -// ---------------------------------------------------------------------------- -int wxNotebook::GetPageCount() const -{ - return m_aPages.Count(); -} - -int wxNotebook::GetRowCount() const -{ - // TODO - return 0; -} - -int wxNotebook::SetSelection(int nPage) -{ - if (nPage == -1) - return 0; - - wxASSERT( IS_VALID_PAGE(nPage) ); - - wxNotebookPage* pPage = GetPage(nPage); - - m_tabView->SetTabSelection((int) (long) pPage); - - // TODO - return 0; -} - -void wxNotebook::AdvanceSelection(bool bForward) -{ - int nSel = GetSelection(); - int nMax = GetPageCount() - 1; - if ( bForward ) - SetSelection(nSel == nMax ? 0 : nSel + 1); - else - SetSelection(nSel == 0 ? nMax : nSel - 1); -} - -bool wxNotebook::SetPageText(int nPage, const wxString& strText) -{ - wxASSERT( IS_VALID_PAGE(nPage) ); - - wxNotebookPage* page = GetPage(nPage); - if (page) - { - m_tabView->SetTabText((int) (long) page, strText); - Refresh(); - return TRUE; - } - - return FALSE; -} - -wxString wxNotebook::GetPageText(int nPage) const -{ - wxASSERT( IS_VALID_PAGE(nPage) ); - - wxNotebookPage* page = ((wxNotebook*)this)->GetPage(nPage); - if (page) - return m_tabView->GetTabText((int) (long) page); - else - return wxEmptyString; -} - -int wxNotebook::GetPageImage(int nPage) const -{ - wxASSERT( IS_VALID_PAGE(nPage) ); - - // TODO - return 0; -} - -bool wxNotebook::SetPageImage(int nPage, int nImage) -{ - wxASSERT( IS_VALID_PAGE(nPage) ); - - // TODO - return FALSE; -} - -void wxNotebook::SetImageList(wxImageList* imageList) -{ - m_pImageList = imageList; - // TODO -} - -// ---------------------------------------------------------------------------- -// wxNotebook operations -// ---------------------------------------------------------------------------- - -// remove one page from the notebook and delete it -bool wxNotebook::DeletePage(int nPage) -{ - wxCHECK( IS_VALID_PAGE(nPage), FALSE ); - - if (m_nSelection != -1) - { - m_aPages[m_nSelection]->Show(FALSE); - m_aPages[m_nSelection]->Lower(); - } - - wxNotebookPage* pPage = GetPage(nPage); - m_tabView->RemoveTab((int) (long) pPage); - - delete m_aPages[nPage]; - m_aPages.Remove(nPage); - - if (m_aPages.GetCount() == 0) - { - m_nSelection = -1; - m_tabView->SetTabSelection(-1, FALSE); - } - else if (m_nSelection > -1) - { - m_nSelection = -1; - m_tabView->SetTabSelection((int) (long) GetPage(0), FALSE); - if (m_nSelection != 0) - ChangePage(-1, 0); - } - - RefreshLayout(FALSE); - - return TRUE; -} - -bool wxNotebook::DeletePage(wxNotebookPage* page) -{ - int pagePos = FindPagePosition(page); - if (pagePos > -1) - return DeletePage(pagePos); - else - return FALSE; -} - -// remove one page from the notebook -bool wxNotebook::RemovePage(int nPage) -{ - wxCHECK( IS_VALID_PAGE(nPage), FALSE ); - - m_aPages[nPage]->Show(FALSE); - // m_aPages[nPage]->Lower(); - - wxNotebookPage* pPage = GetPage(nPage); - m_tabView->RemoveTab((int) (long) pPage); - - m_aPages.Remove(nPage); - - if (m_aPages.GetCount() == 0) - { - m_nSelection = -1; - m_tabView->SetTabSelection(-1, TRUE); - } - else if (m_nSelection > -1) - { - // Only change the selection if the page we - // deleted was the selection. - if (nPage == m_nSelection) - { - m_nSelection = -1; - // Select the first tab. Generates a ChangePage. - m_tabView->SetTabSelection((int) (long) GetPage(0), TRUE); - } - else - { - // We must adjust which tab we think is selected. - // If greater than the page we deleted, it must be moved down - // a notch. - if (m_nSelection > nPage) - m_nSelection -- ; - } - } - - RefreshLayout(FALSE); - - return TRUE; -} - -bool wxNotebook::RemovePage(wxNotebookPage* page) -{ - int pagePos = FindPagePosition(page); - if (pagePos > -1) - return RemovePage(pagePos); - else - return FALSE; -} - -// Find the position of the wxNotebookPage, -1 if not found. -int wxNotebook::FindPagePosition(wxNotebookPage* page) const -{ - int nPageCount = GetPageCount(); - int nPage; - for ( nPage = 0; nPage < nPageCount; nPage++ ) - if (m_aPages[nPage] == page) - return nPage; - return -1; -} - -// remove all pages -bool wxNotebook::DeleteAllPages() -{ - m_tabView->ClearTabs(TRUE); - - int nPageCount = GetPageCount(); - int nPage; - for ( nPage = 0; nPage < nPageCount; nPage++ ) - delete m_aPages[nPage]; - - m_aPages.Clear(); - - return TRUE; -} - -// add a page to the notebook -bool wxNotebook::AddPage(wxNotebookPage *pPage, - const wxString& strText, - bool bSelect, - int imageId) -{ - return InsertPage(GetPageCount(), pPage, strText, bSelect, imageId); -} - -// same as AddPage() but does it at given position -bool wxNotebook::InsertPage(int nPage, - wxNotebookPage *pPage, - const wxString& strText, - bool bSelect, - int imageId) -{ - wxASSERT( pPage != NULL ); - wxCHECK( IS_VALID_PAGE(nPage) || nPage == GetPageCount(), FALSE ); - - m_tabView->AddTab((int) (long) pPage, strText); - if (!bSelect) - pPage->Show(FALSE); - - // save the pointer to the page - m_aPages.Insert(pPage, nPage); - - if (bSelect) - { - // This will cause ChangePage to be called, via OnSelPage - m_tabView->SetTabSelection((int) (long) pPage, TRUE); - } - - // some page must be selected: either this one or the first one if there is - // still no selection - if ( m_nSelection == -1 ) - ChangePage(-1, 0); - - RefreshLayout(FALSE); - - return TRUE; -} - -// ---------------------------------------------------------------------------- -// wxNotebook callbacks -// ---------------------------------------------------------------------------- - -// @@@ OnSize() is used for setting the font when it's called for the first -// time because doing it in ::Create() doesn't work (for unknown reasons) -void wxNotebook::OnSize(wxSizeEvent& event) -{ - static bool s_bFirstTime = TRUE; - if ( s_bFirstTime ) { - // TODO: any first-time-size processing. - s_bFirstTime = FALSE; - } - - RefreshLayout(); - - // Processing continues to next OnSize - event.Skip(); -} - -// This was supposed to cure the non-display of the notebook -// until the user resizes the window. -// What's going on? -void wxNotebook::OnIdle(wxIdleEvent& event) -{ - static bool s_bFirstTime = TRUE; - if ( s_bFirstTime ) { - /* - wxSize sz(GetSize()); - sz.x ++; - SetSize(sz); - sz.x --; - SetSize(sz); - */ - - /* - wxSize sz(GetSize()); - wxSizeEvent sizeEvent(sz, GetId()); - sizeEvent.SetEventObject(this); - GetEventHandler()->ProcessEvent(sizeEvent); - Refresh(); - */ - s_bFirstTime = FALSE; - } - event.Skip(); -} - -// Implementation: calculate the layout of the view rect -// and resize the children if required -bool wxNotebook::RefreshLayout(bool force) -{ - if (m_tabView) - { - wxRect oldRect = m_tabView->GetViewRect(); - - int cw, ch; - GetClientSize(& cw, & ch); - - int tabHeight = m_tabView->GetTotalTabHeight(); - wxRect rect; - rect.x = 4; - rect.y = tabHeight + 4; - rect.width = cw - 8; - rect.height = ch - 4 - rect.y ; - - m_tabView->SetViewRect(rect); - - m_tabView->Layout(); - - // Need to do it a 2nd time to get the tab height with - // the new view width, since changing the view width changes the - // tab layout. - tabHeight = m_tabView->GetTotalTabHeight(); - rect.x = 4; - rect.y = tabHeight + 4; - rect.width = cw - 8; - rect.height = ch - 4 - rect.y ; - - m_tabView->SetViewRect(rect); - - m_tabView->Layout(); - - if (!force && (rect == oldRect)) - return FALSE; - - // fit the notebook page to the tab control's display area - - unsigned int nCount = m_aPages.Count(); - for ( unsigned int nPage = 0; nPage < nCount; nPage++ ) { - wxNotebookPage *pPage = m_aPages[nPage]; - if (pPage->IsShown()) - { - wxRect clientRect = GetAvailableClientSize(); - pPage->SetSize(clientRect.x, clientRect.y, clientRect.width, clientRect.height); - if ( pPage->GetAutoLayout() ) - pPage->Layout(); - } - } - Refresh(); - } - return TRUE; -} - -void wxNotebook::OnSelChange(wxNotebookEvent& event) -{ - // is it our tab control? - if ( event.GetEventObject() == this ) - { - if (event.GetSelection() != m_nSelection) - ChangePage(event.GetOldSelection(), event.GetSelection()); - } - - // we want to give others a chance to process this message as well - event.Skip(); -} - -void wxNotebook::OnSetFocus(wxFocusEvent& event) -{ - // set focus to the currently selected page if any - if ( m_nSelection != -1 ) - m_aPages[m_nSelection]->SetFocus(); - - event.Skip(); -} - -void wxNotebook::OnNavigationKey(wxNavigationKeyEvent& event) -{ - if ( event.IsWindowChange() ) { - // change pages - AdvanceSelection(event.GetDirection()); - } - else { - // pass to the parent - if ( GetParent() ) { - event.SetCurrentFocus(this); - GetParent()->ProcessEvent(event); - } - } -} - -// ---------------------------------------------------------------------------- -// wxNotebook base class virtuals -// ---------------------------------------------------------------------------- - -// override these 2 functions to do nothing: everything is done in OnSize - -void wxNotebook::SetConstraintSizes(bool /* recurse */) -{ - // don't set the sizes of the pages - their correct size is not yet known - wxControl::SetConstraintSizes(FALSE); -} - -bool wxNotebook::DoPhase(int /* nPhase */) -{ - return TRUE; -} - -void wxNotebook::Command(wxCommandEvent& event) -{ - wxFAIL_MSG("wxNotebook::Command not implemented"); -} - -// ---------------------------------------------------------------------------- -// wxNotebook helper functions -// ---------------------------------------------------------------------------- - -// hide the currently active panel and show the new one -void wxNotebook::ChangePage(int nOldSel, int nSel) -{ - // cout << "ChangePage: " << nOldSel << ", " << nSel << "\n"; - wxASSERT( nOldSel != nSel ); // impossible - - if ( nOldSel != -1 ) { - m_aPages[nOldSel]->Show(FALSE); - m_aPages[nOldSel]->Lower(); - } - - wxNotebookPage *pPage = m_aPages[nSel]; - - wxRect clientRect = GetAvailableClientSize(); - pPage->SetSize(clientRect.x, clientRect.y, clientRect.width, clientRect.height); - - pPage->Show(TRUE); - pPage->Raise(); - pPage->SetFocus(); - - Refresh(); - - m_nSelection = nSel; -} - -void wxNotebook::OnMouseEvent(wxMouseEvent& event) -{ - if (m_tabView) - m_tabView->OnEvent(event); -} - -void wxNotebook::OnPaint(wxPaintEvent& WXUNUSED(event) ) -{ - wxPaintDC dc(this); - if (m_tabView) - m_tabView->Draw(dc); -} - -wxRect wxNotebook::GetAvailableClientSize() -{ - int cw, ch; - GetClientSize(& cw, & ch); - - int tabHeight = m_tabView->GetTotalTabHeight(); - - // TODO: these margins should be configurable. - wxRect rect; - rect.x = 6; - rect.y = tabHeight + 6; - rect.width = cw - 12; - rect.height = ch - 4 - rect.y ; - - return rect; -} - -/* - * wxNotebookTabView - */ - -IMPLEMENT_CLASS(wxNotebookTabView, wxTabView) - -wxNotebookTabView::wxNotebookTabView(wxNotebook *notebook, long style): wxTabView(style) -{ - m_notebook = notebook; - - m_notebook->SetTabView(this); - - SetWindow(m_notebook); -} - -wxNotebookTabView::~wxNotebookTabView(void) -{ -} - -// Called when a tab is activated -void wxNotebookTabView::OnTabActivate(int activateId, int deactivateId) -{ - if (!m_notebook) - return; - -// Because of name truncation! -#if defined(__BORLANDC__) && defined(__WIN16__) - wxNotebookEvent event(wxEVT_COMMAND_NB_PAGE_CHANGED, m_notebook->GetId()); -#else - wxNotebookEvent event(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED, m_notebook->GetId()); -#endif - - // Translate from wxTabView's ids (which aren't position-dependent) - // to wxNotebook's (which are). - wxNotebookPage* pActive = (wxNotebookPage*) activateId; - wxNotebookPage* pDeactive = (wxNotebookPage*) deactivateId; - - int activatePos = m_notebook->FindPagePosition(pActive); - int deactivatePos = m_notebook->FindPagePosition(pDeactive); - - event.SetEventObject(m_notebook); - event.SetSelection(activatePos); - event.SetOldSelection(deactivatePos); - m_notebook->GetEventHandler()->ProcessEvent(event); -} - - diff --git a/src/generic/panelg.cpp b/src/generic/panelg.cpp deleted file mode 100644 index 244cb0aedb..0000000000 --- a/src/generic/panelg.cpp +++ /dev/null @@ -1,146 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: panelg.cpp -// Purpose: wxPanel -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "panelg.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/object.h" -#include "wx/font.h" -#include "wx/colour.h" -#include "wx/settings.h" -#endif - -#include "wx/generic/panelg.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxPanel, wxWindow) - -BEGIN_EVENT_TABLE(wxPanel, wxWindow) - EVT_SYS_COLOUR_CHANGED(wxPanel::OnSysColourChanged) - EVT_NAVIGATION_KEY(wxPanel::OnNavigationKey) -END_EVENT_TABLE() - -#endif - -wxPanel::wxPanel() -{ -} - -bool wxPanel::Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - bool ret = wxWindow::Create(parent, id, pos, size, style, name); - - if ( ret ) - { -#ifndef __WXGTK__ - SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE)); - SetFont(wxSystemSettings::GetSystemFont(wxSYS_DEFAULT_GUI_FONT)); -#endif - } - - return ret; -} - -void wxPanel::InitDialog(void) -{ - wxInitDialogEvent event(GetId()); - event.SetEventObject(this); - GetEventHandler()->ProcessEvent(event); -} - -// Responds to colour changes, and passes event on to children. -void wxPanel::OnSysColourChanged(wxSysColourChangedEvent& event) -{ - SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE)); - Refresh(); - - // Propagate the event to the non-top-level children - wxWindow::OnSysColourChanged(event); -} - -void wxPanel::OnNavigationKey( wxNavigationKeyEvent& event ) -{ - if (GetChildren().GetCount() < 2) - { - event.Skip(); - return; - } - - // don't process these ones here - if (event.IsWindowChange()) - { - event.Skip(); - return; - } - - wxWindow *winFocus = event.GetCurrentFocus(); - if (!winFocus) winFocus = wxWindow::FindFocus(); - - if (!winFocus) - { - event.Skip(); - return; - } - - wxNode *start_node = GetChildren().Find( winFocus ); - if (!start_node) start_node = GetChildren().First(); - - wxNode *node = event.GetDirection() ? start_node->Next() : start_node->Previous(); - - while (node != start_node) - { - if (!node) - { -/* - if (GetParent() != NULL) - { - wxNavigationKeyEvent new_event; - new_event.SetDirection( event.GetDirection() ); - new_event.SetWindowChange(FALSE); - new_event.SetCurrentFocus( this ); - - if (GetParent()->GetEventHandler()->ProcessEvent(new_event)) - { - return; - } - } -*/ - - node = event.GetDirection() ? GetChildren().First() : GetChildren().Last(); - } - - wxWindow *child = (wxWindow*) node->Data(); - - if (child->AcceptsFocus()) - { - child->SetFocus(); - return; - } - - node = node->Next(); - } - - event.Skip(); -} - diff --git a/src/generic/printps.cpp b/src/generic/printps.cpp deleted file mode 100644 index e288b2cd5c..0000000000 --- a/src/generic/printps.cpp +++ /dev/null @@ -1,272 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: printps.cpp -// Purpose: Postscript print/preview framework -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "printps.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#include "wx/defs.h" - -#ifndef WX_PRECOMP -#include "wx/utils.h" -#include "wx/dc.h" -#include "wx/app.h" -#include "wx/msgdlg.h" -#include -#endif - -#include "wx/generic/printps.h" -#include "wx/dcprint.h" -#include "wx/printdlg.h" -#include "wx/generic/prntdlgg.h" - -#include - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxPostScriptPrinter, wxPrinterBase) -IMPLEMENT_CLASS(wxPostScriptPrintPreview, wxPrintPreviewBase) -#endif - -/* - * Printer - */ - -wxPostScriptPrinter::wxPostScriptPrinter(wxPrintData *data): - wxPrinterBase(data) -{ -} - -wxPostScriptPrinter::~wxPostScriptPrinter(void) -{ -} - -bool wxPostScriptPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt) -{ - sm_abortIt = FALSE; - sm_abortWindow = (wxWindow *) NULL; - - if (!printout) - return FALSE; - - printout->SetIsPreview(FALSE); - printout->OnPreparePrinting(); - - // Get some parameters from the printout, if defined - int fromPage, toPage; - int minPage, maxPage; - printout->GetPageInfo(&minPage, &maxPage, &fromPage, &toPage); - - if (maxPage == 0) - return FALSE; - - m_printData.SetMinPage(minPage); - m_printData.SetMaxPage(maxPage); - if (fromPage != 0) - m_printData.SetFromPage(fromPage); - if (toPage != 0) - m_printData.SetToPage(toPage); - - if (minPage != 0) - { - m_printData.EnablePageNumbers(TRUE); - if (m_printData.GetFromPage() < m_printData.GetMinPage()) - m_printData.SetFromPage(m_printData.GetMinPage()); - else if (m_printData.GetFromPage() > m_printData.GetMaxPage()) - m_printData.SetFromPage(m_printData.GetMaxPage()); - if (m_printData.GetToPage() > m_printData.GetMaxPage()) - m_printData.SetToPage(m_printData.GetMaxPage()); - else if (m_printData.GetToPage() < m_printData.GetMinPage()) - m_printData.SetToPage(m_printData.GetMinPage()); - } - else - m_printData.EnablePageNumbers(FALSE); - - // Create a suitable device context - wxDC *dc = (wxDC *) NULL; - if (prompt) - { - wxGenericPrintDialog dialog(parent, & m_printData); - if (dialog.ShowModal() == wxID_OK) - { - dc = dialog.GetPrintDC(); - m_printData = dialog.GetPrintData(); - } - } - else - { - dc = new wxPostScriptDC(wxThePrintSetupData->GetPrinterFile(), FALSE, (wxWindow *) NULL); - } - - // May have pressed cancel. - if (!dc || !dc->Ok()) - { - if (dc) delete dc; - return FALSE; - } - - int logPPIScreenX = 0; - int logPPIScreenY = 0; - int logPPIPrinterX = 0; - int logPPIPrinterY = 0; - - logPPIScreenX = 100; - logPPIScreenY = 100; - -/* - // Correct values for X/PostScript? - logPPIPrinterX = 100; - logPPIPrinterY = 100; -*/ - - logPPIPrinterX = 72; - logPPIPrinterY = 72; - - printout->SetPPIScreen(logPPIScreenX, logPPIScreenY); - printout->SetPPIPrinter(logPPIPrinterX, logPPIPrinterY); - - // Set printout parameters - printout->SetDC(dc); - - int w, h; - long ww, hh; - dc->GetSize(&w, &h); - printout->SetPageSizePixels((int)w, (int)h); - dc->GetSizeMM(&ww, &hh); - printout->SetPageSizeMM((int)ww, (int)hh); - - // Create an abort window - wxBeginBusyCursor(); - - printout->OnBeginPrinting(); - - bool keepGoing = TRUE; - - int copyCount; - for (copyCount = 1; copyCount <= m_printData.GetNoCopies(); copyCount ++) - { - if (!printout->OnBeginDocument(m_printData.GetFromPage(), m_printData.GetToPage())) - { - wxEndBusyCursor(); - wxMessageBox(_("Could not start printing."), _("Print Error"), wxOK, parent); - break; - } - if (sm_abortIt) - break; - - int pn; - for (pn = m_printData.GetFromPage(); keepGoing && (pn <= m_printData.GetToPage()) && printout->HasPage(pn); - pn++) - { - if (sm_abortIt) - { - keepGoing = FALSE; - break; - } - else - { - dc->StartPage(); - printout->OnPrintPage(pn); - dc->EndPage(); - } - } - printout->OnEndDocument(); - } - - printout->OnEndPrinting(); - - wxEndBusyCursor(); - - delete dc; - - return TRUE; -} - -bool wxPostScriptPrinter::PrintDialog(wxWindow *parent) -{ - wxGenericPrintDialog dialog(parent, & m_printData); - return (dialog.ShowModal() == wxID_OK); -} - -bool wxPostScriptPrinter::Setup(wxWindow *parent) -{ - wxGenericPrintDialog dialog(parent, & m_printData); - dialog.GetPrintData().SetSetupDialog(TRUE); - return (dialog.ShowModal() == wxID_OK); -} - -/* - * Print preview - */ - -wxPostScriptPrintPreview::wxPostScriptPrintPreview(wxPrintout *printout, wxPrintout *printoutForPrinting, wxPrintData *data): - wxPrintPreviewBase(printout, printoutForPrinting, data) -{ - // Have to call it here since base constructor can't call it - DetermineScaling(); -} - -wxPostScriptPrintPreview::~wxPostScriptPrintPreview(void) -{ -} - -bool wxPostScriptPrintPreview::Print(bool interactive) -{ - if (!m_printPrintout) - return FALSE; - wxPostScriptPrinter printer(&m_printData); - return printer.Print(m_previewFrame, m_printPrintout, interactive); -} - -void wxPostScriptPrintPreview::DetermineScaling(void) -{ - const char *paperType = wxThePrintSetupData->GetPaperName(); - if (!paperType) - paperType = _("A4 210 x 297 mm"); - - wxPrintPaperType *paper = wxThePrintPaperDatabase->FindPaperType(paperType); - if (!paper) - paper = wxThePrintPaperDatabase->FindPaperType(_("A4 210 x 297 mm")); - if (paper) - { - m_previewPrintout->SetPPIScreen(100, 100); -// m_previewPrintout->SetPPIPrinter(100, 100); - m_previewPrintout->SetPPIPrinter(72, 72); - - // If in landscape mode, we need to swap the width and height. - if ( m_printData.GetOrientation() == wxLANDSCAPE ) - { - m_pageWidth = paper->heightPixels; - m_pageHeight = paper->widthPixels; - m_previewPrintout->SetPageSizeMM(paper->heightMM, paper->widthMM); - m_previewPrintout->SetPageSizePixels(paper->heightPixels, paper->widthPixels); - } - else - { - m_pageWidth = paper->widthPixels; - m_pageHeight = paper->heightPixels; - m_previewPrintout->SetPageSizeMM(paper->widthMM, paper->heightMM); - m_previewPrintout->SetPageSizePixels(paper->widthPixels, paper->heightPixels); - } - - // At 100%, the page should look about page-size on the screen. - m_previewScale = (float)0.8; -// m_previewScale = (float)((float)screenWidth/(float)printerWidth); -// m_previewScale = previewScale * (float)((float)screenXRes/(float)printerYRes); - } -} - diff --git a/src/generic/prntdlgg.cpp b/src/generic/prntdlgg.cpp deleted file mode 100644 index 5a89abe6e5..0000000000 --- a/src/generic/prntdlgg.cpp +++ /dev/null @@ -1,640 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: prntdlgg.cpp -// Purpose: Generic print dialogs -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "prntdlgg.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#include "wx/defs.h" - -#ifndef WX_PRECOMP -#include "wx/utils.h" -#include "wx/dc.h" -#include "wx/app.h" -#include "wx/frame.h" -#include "wx/stattext.h" -#include "wx/statbox.h" -#include "wx/button.h" -#include "wx/checkbox.h" -#include "wx/textctrl.h" -#include "wx/radiobox.h" -#include "wx/filedlg.h" -#include "wx/choice.h" -#include -#endif - -#include "wx/generic/prntdlgg.h" -#include "wx/printdlg.h" - -#include -#include - -#if !USE_SHARED_LIBRARY -IMPLEMENT_CLASS(wxGenericPrintDialog, wxDialog) -IMPLEMENT_CLASS(wxGenericPrintSetupDialog, wxDialog) -IMPLEMENT_CLASS(wxGenericPageSetupDialog, wxDialog) - -BEGIN_EVENT_TABLE(wxGenericPrintDialog, wxDialog) - EVT_BUTTON(wxID_OK, wxGenericPrintDialog::OnOK) - EVT_BUTTON(wxPRINTID_SETUP, wxGenericPrintDialog::OnSetup) - EVT_RADIOBOX(wxPRINTID_RANGE, wxGenericPrintDialog::OnRange) -END_EVENT_TABLE() - -BEGIN_EVENT_TABLE(wxGenericPageSetupDialog, wxDialog) - EVT_BUTTON(wxPRINTID_SETUP, wxGenericPageSetupDialog::OnPrinter) -END_EVENT_TABLE() -#endif - -extern wxPrintPaperDatabase *wxThePrintPaperDatabase; - -/* - * Generic print dialog for non-Windows printing use. - */ - - -wxGenericPrintDialog::wxGenericPrintDialog(wxWindow *parent, wxPrintData* data): - wxDialog(parent, -1, _("Print"), wxPoint(0, 0), wxSize(600, 600), wxDEFAULT_DIALOG_STYLE|wxDIALOG_MODAL) -{ - if ( data ) - printData = *data; - - (void)new wxStaticBox( this, -1, _( "Printer options" ), wxPoint( 5, 5), wxSize( 300, 60 ) ); - - printToFileCheckBox = new wxCheckBox(this, wxPRINTID_PRINTTOFILE, _("Print to File"), wxPoint(20, 25) ); - - setupButton = new wxButton(this, wxPRINTID_SETUP, _("Setup..."), wxPoint(160, 25), wxSize(100, -1)); - - wxString *choices = new wxString[2]; - choices[0] = _("All"); - choices[1] = _("Pages"); - - fromText = (wxTextCtrl*)NULL; - - if(printData.GetFromPage() != 0) - { - rangeRadioBox = new wxRadioBox(this, wxPRINTID_RANGE, _("Print Range"), - wxPoint(5, 80), wxSize(-1, -1), 2, choices, 1, wxRA_VERTICAL); - rangeRadioBox->SetSelection(1); - } - - if(printData.GetFromPage() != 0) - { - (void) new wxStaticText(this, wxPRINTID_STATIC, _("From:"), wxPoint(5, 135)); - - fromText = new wxTextCtrl(this, wxPRINTID_FROM, "", wxPoint(45, 130), wxSize(40, -1)); - - (void) new wxStaticText(this, wxPRINTID_STATIC, _("To:"), wxPoint(100, 135)); - - toText = new wxTextCtrl(this, wxPRINTID_TO, "", wxPoint(133, 130), wxSize(40, -1)); - } - - (void) new wxStaticText(this, wxPRINTID_STATIC, _("Copies:"), wxPoint(200, 135)); - - noCopiesText = new wxTextCtrl(this, wxPRINTID_COPIES, "", wxPoint(252, 130), wxSize(40, -1)); - - wxButton *okButton = new wxButton(this, wxID_OK, _("OK"), wxPoint(40, 180), wxSize(100, -1)); - (void) new wxButton(this, wxID_CANCEL, _("Cancel"), wxPoint(180, 180), wxSize(100, -1)); - - okButton->SetDefault(); - okButton->SetFocus(); - Fit(); - Centre(wxBOTH); - - // Calls wxWindow::OnInitDialog and then wxGenericPrintDialog::TransferDataToWindow - InitDialog(); - delete[] choices; -} - -int wxGenericPrintDialog::ShowModal(void) -{ - if ( printData.GetSetupDialog() ) - { - wxGenericPrintSetupDialog *genericPrintSetupDialog = - new wxGenericPrintSetupDialog(GetParent(), wxThePrintSetupData); - int ret = genericPrintSetupDialog->ShowModal(); - if ( ret != wxID_CANCEL ) - { - *wxThePrintSetupData = genericPrintSetupDialog->printData; - } - genericPrintSetupDialog->Close(TRUE); - return ret; - } - else - { - return wxDialog::ShowModal(); - } -} - -wxGenericPrintDialog::~wxGenericPrintDialog(void) -{ -} - -void wxGenericPrintDialog::OnOK(wxCommandEvent& WXUNUSED(event)) -{ - TransferDataFromWindow(); - - // There are some interactions between the global setup data - // and the standard print dialog. The global printing 'mode' - // is determined by whether the user checks Print to file - // or not. - if (printData.GetPrintToFile()) - { - wxThePrintSetupData->SetPrinterMode(PS_FILE); - - wxString f = wxFileSelector(_("PostScript file"), - wxPathOnly(wxThePrintSetupData->GetPrinterFile()), - wxFileNameFromPath(wxThePrintSetupData->GetPrinterFile()), - "ps", "*.ps", 0, this); - if ( f.IsEmpty() ) - return; - - wxThePrintSetupData->SetPrinterFile(f); - } - else - wxThePrintSetupData->SetPrinterMode(PS_PRINTER); - - EndModal(wxID_OK); -} - -void wxGenericPrintDialog::OnRange(wxCommandEvent& event) -{ - if (!fromText) return; - - if (event.GetInt() == 0) - { - fromText->Enable(FALSE); - toText->Enable(FALSE); - } - else if (event.GetInt() == 1) - { - fromText->Enable(TRUE); - toText->Enable(TRUE); - } -} - -void wxGenericPrintDialog::OnSetup(wxCommandEvent& WXUNUSED(event)) -{ - wxGenericPrintSetupDialog *genericPrintSetupDialog = - new wxGenericPrintSetupDialog(this, wxThePrintSetupData); - int ret = genericPrintSetupDialog->ShowModal(); - if ( ret != wxID_CANCEL ) - { - *wxThePrintSetupData = genericPrintSetupDialog->printData; - printData.SetOrientation(wxThePrintSetupData->GetPrinterOrientation()); - } - - genericPrintSetupDialog->Close(TRUE); -} - -bool wxGenericPrintDialog::TransferDataToWindow(void) -{ - char buf[10]; - - if(printData.GetFromPage() != 0) - { - if (printData.GetEnablePageNumbers()) - { - fromText->Enable(TRUE); - toText->Enable(TRUE); - - sprintf(buf, "%d", printData.GetFromPage()); - fromText->SetValue(buf); - sprintf(buf, "%d", printData.GetToPage()); - toText->SetValue(buf); - - if (printData.GetAllPages()) - rangeRadioBox->SetSelection(0); - else - rangeRadioBox->SetSelection(1); - } - else - { - fromText->Enable(FALSE); - toText->Enable(FALSE); - rangeRadioBox->SetSelection(0); - rangeRadioBox->wxRadioBox::Enable(1, FALSE); - } - } - sprintf(buf, "%d", printData.GetNoCopies()); - noCopiesText->SetValue(buf); - - printToFileCheckBox->SetValue(printData.GetPrintToFile()); - printToFileCheckBox->Enable(printData.GetEnablePrintToFile()); - return TRUE; -} - -bool wxGenericPrintDialog::TransferDataFromWindow(void) -{ - if(printData.GetFromPage() != -1) - { - if (printData.GetEnablePageNumbers()) - { - printData.SetFromPage(atoi(fromText->GetValue())); - printData.SetToPage(atoi(toText->GetValue())); - } - if (rangeRadioBox->GetSelection() == 0) - printData.SetAllPages(TRUE); - else - printData.SetAllPages(FALSE); - } - else - { // continuous printing - printData.SetFromPage(1); - printData.SetToPage(32000); - } - printData.SetNoCopies(atoi(noCopiesText->GetValue())); - printData.SetPrintToFile(printToFileCheckBox->GetValue()); - - return TRUE; -} - -wxDC *wxGenericPrintDialog::GetPrintDC(void) -{ - return new wxPostScriptDC(wxThePrintSetupData->GetPrinterFile(), FALSE, (wxWindow *) NULL); -} - -/* - * Generic print setup dialog - */ - -wxGenericPrintSetupDialog::wxGenericPrintSetupDialog(wxWindow *parent, wxPrintSetupData* data): - wxDialog(parent, -1, _("Print Setup"), wxPoint(0, 0), wxSize(600, 600), wxDEFAULT_DIALOG_STYLE|wxDIALOG_MODAL) -{ - if ( data ) - printData = *data; - - (void) new wxStaticBox(this, wxPRINTID_STATIC, _("Paper size"), wxPoint(10, 10), wxSize(200,60) ); - - int xPos = 20; - int yPos = 30; - paperTypeChoice = CreatePaperTypeChoice(&xPos, &yPos); - - wxString *choices = new wxString[2]; - choices[0] = _("Portrait"); - choices[1] = _("Landscape"); - - orientationRadioBox = new wxRadioBox(this, wxPRINTID_ORIENTATION, _("Orientation"), - wxPoint(10, 80), wxSize(-1, -1), 2, choices, 1, wxRA_VERTICAL ); - orientationRadioBox->SetSelection(0); - - (void) new wxStaticBox(this, wxPRINTID_STATIC, _("Options"), wxPoint(10, 130), wxSize(200,50) ); - - int colourXPos = 145; - -#ifdef __WXMOTIF__ - colourXPos = 150; -#endif - - colourCheckBox = new wxCheckBox(this, wxPRINTID_PRINTCOLOUR, _("Print in colour"), wxPoint(15, colourXPos)); - - - (void) new wxStaticBox(this, wxPRINTID_STATIC, _("Print spooling"), wxPoint(230, 10), wxSize(200,170) ); - - (void) new wxStaticText(this, wxPRINTID_STATIC, _("Printer command:"), wxPoint(240, 30)); - - printerCommandText = new wxTextCtrl(this, wxPRINTID_COMMAND, "", wxPoint(260, 55), wxSize(150, -1)); - - (void) new wxStaticText(this, wxPRINTID_STATIC, _("Printer options:"), wxPoint(240, 110)); - - printerOptionsText = new wxTextCtrl(this, wxPRINTID_OPTIONS, "", wxPoint(260, 135), wxSize(150, -1)); - - wxButton *okButton = new wxButton(this, wxID_OK, _("OK"), wxPoint(80, 200), wxSize(100, -1)); - (void) new wxButton(this, wxID_CANCEL, _("Cancel"), wxPoint(270, 200), wxSize(100, -1)); - - okButton->SetDefault(); - okButton->SetFocus(); - - Fit(); - Centre(wxBOTH); - - InitDialog(); - delete[] choices; -} - -wxGenericPrintSetupDialog::~wxGenericPrintSetupDialog(void) -{ -} - -bool wxGenericPrintSetupDialog::TransferDataToWindow(void) -{ - if (printerCommandText && printData.GetPrinterCommand()) - printerCommandText->SetValue(printData.GetPrinterCommand()); - if (printerOptionsText && printData.GetPrinterOptions()) - printerOptionsText->SetValue(printData.GetPrinterOptions()); - if (colourCheckBox) - colourCheckBox->SetValue(printData.GetColour()); - - if (orientationRadioBox) - { - if (printData.GetPrinterOrientation() == PS_PORTRAIT) - orientationRadioBox->SetSelection(0); - else - orientationRadioBox->SetSelection(1); - } - return TRUE; -} - -bool wxGenericPrintSetupDialog::TransferDataFromWindow(void) -{ - if (printerCommandText) - printData.SetPrinterCommand(WXSTRINGCAST printerCommandText->GetValue()); - if (printerOptionsText) - printData.SetPrinterOptions(WXSTRINGCAST printerOptionsText->GetValue()); - if (colourCheckBox) - printData.SetColour(colourCheckBox->GetValue()); - if (orientationRadioBox) - { - int sel = orientationRadioBox->GetSelection(); - if (sel == 0) - printData.SetPrinterOrientation(PS_PORTRAIT); - else - printData.SetPrinterOrientation(PS_LANDSCAPE); - } - if (paperTypeChoice) - { - wxString val(paperTypeChoice->GetStringSelection()); - if (!val.IsNull() && val != "") - printData.SetPaperName((char *)(const char *)val); - } - *wxThePrintSetupData = GetPrintData(); - return TRUE; -} - -wxChoice *wxGenericPrintSetupDialog::CreatePaperTypeChoice(int *x, int *y) -{ - if (!wxThePrintPaperDatabase) - { - wxThePrintPaperDatabase = new wxPrintPaperDatabase; - wxThePrintPaperDatabase->CreateDatabase(); - } - int n = wxThePrintPaperDatabase->Number(); - wxString *choices = new wxString [n]; - int sel = 0; - int i; - for (i = 0; i < n; i++) - { - wxPrintPaperType *paper = (wxPrintPaperType *)wxThePrintPaperDatabase->Nth(i)->Data(); - choices[i] = paper->pageName; - if (printData.GetPaperName() && choices[i] == printData.GetPaperName()) - sel = i; - } - - int width = 170; -#ifdef __WXMOTIF__ - width = 150; -#endif - - wxChoice *choice = new wxChoice(this, wxPRINTID_PAPERSIZE, wxPoint(*x, *y), wxSize(width, -1), n, - choices); - - delete[] choices; - - choice->SetSelection(sel); - return choice; -} - -/* - * Generic page setup dialog - */ - -void wxGenericPageSetupDialog::OnPrinter(wxCommandEvent& WXUNUSED(event)) -{ - // We no longer query GetPrintMode, so we can eliminate the need - // to call SetPrintMode. - // This has the limitation that we can't explicitly call the PostScript - // print setup dialog from the generic Page Setup dialog under Windows, - // but since this choice would only happen when trying to do PostScript - // printing under Windows (and only in 16-bit Windows which - // doesn't have a Windows-specific page setup dialog) it's worth it. - - wxPrintData data; - data.SetSetupDialog(TRUE); - wxPrintDialog *printDialog = new wxPrintDialog(this, & data); - printDialog->ShowModal(); - - printDialog->Destroy(); - -#if 0 - if (wxTheApp->GetPrintMode() == wxPRINT_POSTSCRIPT) - { - wxGenericPrintSetupDialog *genericPrintSetupDialog = - new wxGenericPrintSetupDialog(this, wxThePrintSetupData); - int ret = genericPrintSetupDialog->ShowModal(); - if (ret == wxID_OK) - *wxThePrintSetupData = genericPrintSetupDialog->GetPrintData(); - - genericPrintSetupDialog->Close(TRUE); - } -#ifdef __WXMSW__ - else - { - wxPrintData data; - data.SetSetupDialog(TRUE); - wxPrintDialog printDialog(this, & data); - printDialog.ShowModal(); - } -#endif -#endif - // 0 -} - -wxGenericPageSetupDialog::wxGenericPageSetupDialog(wxWindow *parent, wxPageSetupData* data): - wxDialog(parent, -1, _("Page Setup"), wxPoint(0, 0), wxSize(600, 600), wxDIALOG_MODAL|wxDEFAULT_DIALOG_STYLE) -{ - if ( data ) - pageData = *data; - - int buttonWidth = 75; - int buttonHeight = 25; - int spacing = 5; -#ifdef __WXMOTIF__ - spacing = 15; -#endif - - int yPos = 5; - int xPos = 5; - - wxButton *okButton = new wxButton(this, wxID_OK, _("OK"), wxPoint(5, yPos), wxSize(buttonWidth, buttonHeight)); - (void) new wxButton(this, wxID_CANCEL, _("Cancel"), wxPoint(buttonWidth + 5 + spacing, yPos), wxSize(buttonWidth, buttonHeight)); - - printerButton = new wxButton(this, wxPRINTID_SETUP, _("Printer..."), wxPoint(buttonWidth*2 + 5 + 2*spacing, yPos), wxSize(buttonWidth, buttonHeight)); - - if ( !pageData.GetEnablePrinter() ) - printerButton->Enable(FALSE); - -// if (printData.GetEnableHelp()) -// wxButton *helpButton = new wxButton(this, (wxFunction)wxGenericPageSetupHelpProc, _("Help"), -1, -1, buttonWidth, buttonHeight); - - okButton->SetDefault(); - okButton->SetFocus(); - - xPos = 5; - yPos += 35; - -#ifdef __WXMOTIF__ - yPos += 10; -#endif - - paperTypeChoice = CreatePaperTypeChoice(&xPos, &yPos); - - xPos = 5; - - wxString *choices = new wxString[2]; - choices[0] = _("Portrait"); - choices[1] = _("Landscape"); - orientationRadioBox = new wxRadioBox(this, wxPRINTID_ORIENTATION, _("Orientation"), - wxPoint(xPos, yPos), wxSize(-1, -1), 2, choices, 2); - orientationRadioBox->SetSelection(0); - - xPos = 5; - yPos += 60; - - int staticWidth = 110; -#ifdef __WXMOTIF__ - staticWidth += 20; -#endif - - int textWidth = 60; - spacing = 10; - - (void) new wxStaticText(this, wxPRINTID_STATIC, _("Left margin (mm):"), wxPoint(xPos, yPos)); - xPos += staticWidth; - - marginLeftText = new wxTextCtrl(this, wxPRINTID_LEFTMARGIN, "", wxPoint(xPos, yPos), wxSize(textWidth, -1)); - xPos += textWidth + spacing; - - (void) new wxStaticText(this, wxPRINTID_STATIC, _("Right margin (mm):"), wxPoint(xPos, yPos)); - xPos += staticWidth; - - marginRightText = new wxTextCtrl(this, wxPRINTID_RIGHTMARGIN, "", wxPoint(xPos, yPos), wxSize(textWidth, -1)); - xPos += textWidth + spacing; - - yPos += 35; - xPos = 5; - - (void) new wxStaticText(this, wxPRINTID_STATIC, _("Top margin (mm):"), wxPoint(xPos, yPos)); - xPos += staticWidth; - - marginTopText = new wxTextCtrl(this, wxPRINTID_TOPMARGIN, "", wxPoint(xPos, yPos), wxSize(textWidth, -1)); - xPos += textWidth + spacing; - - (void) new wxStaticText(this, wxPRINTID_STATIC, _("Bottom margin (mm):"), wxPoint(xPos, yPos)); - xPos += staticWidth; - - marginBottomText = new wxTextCtrl(this, wxPRINTID_BOTTOMMARGIN, "", wxPoint(xPos, yPos), wxSize(textWidth, -1)); - - Fit(); - Centre(wxBOTH); - - InitDialog(); - delete [] choices; -} - -wxGenericPageSetupDialog::~wxGenericPageSetupDialog(void) -{ -} - -bool wxGenericPageSetupDialog::TransferDataToWindow(void) -{ - if (marginLeftText) - marginLeftText->SetValue(IntToString((int) pageData.GetMarginTopLeft().x)); - if (marginTopText) - marginTopText->SetValue(IntToString((int) pageData.GetMarginTopLeft().y)); - if (marginRightText) - marginRightText->SetValue(IntToString((int) pageData.GetMarginBottomRight().x)); - if (marginBottomText) - marginBottomText->SetValue(IntToString((int) pageData.GetMarginBottomRight().y)); - - if (orientationRadioBox) - { - if (pageData.GetOrientation() == wxPORTRAIT) - orientationRadioBox->SetSelection(0); - else - orientationRadioBox->SetSelection(1); - } - return TRUE; -} - -bool wxGenericPageSetupDialog::TransferDataFromWindow(void) -{ - if (marginLeftText && marginTopText) - pageData.SetMarginTopLeft(wxPoint(atoi((const char *)marginLeftText->GetValue()),atoi((const char *)marginTopText->GetValue()))); - if (marginRightText && marginBottomText) - pageData.SetMarginBottomRight(wxPoint(atoi((const char *)marginRightText->GetValue()),atoi((const char *)marginBottomText->GetValue()))); - - if (orientationRadioBox) - { - int sel = orientationRadioBox->GetSelection(); - if (sel == 0) - { - wxThePrintSetupData->SetPrinterOrientation(wxPORTRAIT); - pageData.SetOrientation(wxPORTRAIT); - } - else - { - wxThePrintSetupData->SetPrinterOrientation(wxLANDSCAPE); - pageData.SetOrientation(wxLANDSCAPE); - } - } - if (paperTypeChoice) - { - wxString val(paperTypeChoice->GetStringSelection()); - if (!val.IsNull() && val != "") - { - wxPrintPaperType* paper = wxThePrintPaperDatabase->FindPaperType((char*) (const char *)val); - if ( paper ) - { - pageData.SetPaperSize(wxPoint(paper->widthMM, paper->heightMM)); - } - } - } - - return TRUE; -} - -wxChoice *wxGenericPageSetupDialog::CreatePaperTypeChoice(int *x, int *y) -{ - if (!wxThePrintPaperDatabase) - { - wxThePrintPaperDatabase = new wxPrintPaperDatabase; - wxThePrintPaperDatabase->CreateDatabase(); - } - int n = wxThePrintPaperDatabase->Number(); - wxString *choices = new wxString [n]; - int sel = 0; - int i; - for (i = 0; i < n; i++) - { - wxPrintPaperType *paper = (wxPrintPaperType *)wxThePrintPaperDatabase->Nth(i)->Data(); - choices[i] = paper->pageName; - if (pageData.GetPaperSize().x == paper->widthMM && pageData.GetPaperSize().y == paper->heightMM) - sel = i; - } - - (void) new wxStaticText(this, wxPRINTID_STATIC, _("Paper size"), wxPoint(*x, *y)); - *y += 25; - - wxChoice *choice = new wxChoice(this, wxPRINTID_PAPERSIZE, wxPoint(*x, *y), wxSize(300, -1), n, - choices); - *y += 35; - delete[] choices; - - choice->SetSelection(sel); - return choice; -} - diff --git a/src/generic/prop.cpp b/src/generic/prop.cpp deleted file mode 100644 index b63cafa0cf..0000000000 --- a/src/generic/prop.cpp +++ /dev/null @@ -1,1147 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: prop.cpp -// Purpose: Propert sheet classes implementation -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "prop.h" -#endif - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include -#include -#include -#include - -#if wxUSE_IOSTREAMH -#if defined(__WXMSW__) && !defined(__GNUWIN32__) -#include -#else -#include -#endif -#else -#include -#endif - -#include "wx/window.h" -#include "wx/utils.h" -#include "wx/list.h" -#include "wx/debug.h" -#include "wx/prop.h" - -IMPLEMENT_DYNAMIC_CLASS(wxPropertyValue, wxObject) - -wxPropertyValue::wxPropertyValue(void) -{ - m_type = wxPropertyValueNull; - m_next = NULL; - m_last = NULL; - m_value.first = NULL; - m_clientData = NULL; - m_modifiedFlag = FALSE; -} - -wxPropertyValue::wxPropertyValue(const wxPropertyValue& copyFrom) -{ - m_modifiedFlag = FALSE; - Copy((wxPropertyValue& )copyFrom); -} - -wxPropertyValue::wxPropertyValue(const char *val) -{ - m_modifiedFlag = FALSE; - m_type = wxPropertyValueString; - - m_value.string = copystring(val); - m_clientData = NULL; - m_next = NULL; - m_last = NULL; -} - -wxPropertyValue::wxPropertyValue(const wxString& val) -{ - m_modifiedFlag = FALSE; - m_type = wxPropertyValueString; - - m_value.string = copystring((const char *)val); - m_clientData = NULL; - m_next = NULL; - m_last = NULL; -} - -wxPropertyValue::wxPropertyValue(long the_integer) -{ - m_modifiedFlag = FALSE; - m_type = wxPropertyValueInteger; - m_value.integer = the_integer; - m_clientData = NULL; - m_next = NULL; -} - -wxPropertyValue::wxPropertyValue(bool val) -{ - m_modifiedFlag = FALSE; - m_type = wxPropertyValuebool; - m_value.integer = val; - m_clientData = NULL; - m_next = NULL; -} - -wxPropertyValue::wxPropertyValue(float the_real) -{ - m_modifiedFlag = FALSE; - m_type = wxPropertyValueReal; - m_value.real = the_real; - m_clientData = NULL; - m_next = NULL; -} - -wxPropertyValue::wxPropertyValue(double the_real) -{ - m_modifiedFlag = FALSE; - m_type = wxPropertyValueReal; - m_value.real = (float)the_real; - m_clientData = NULL; - m_next = NULL; -} - -// Pointer versions: we have a pointer to the real C++ value. -wxPropertyValue::wxPropertyValue(char **val) -{ - m_modifiedFlag = FALSE; - m_type = wxPropertyValueStringPtr; - - m_value.stringPtr = val; - m_clientData = NULL; - m_next = NULL; - m_last = NULL; -} - -wxPropertyValue::wxPropertyValue(long *val) -{ - m_modifiedFlag = FALSE; - m_type = wxPropertyValueIntegerPtr; - m_value.integerPtr = val; - m_clientData = NULL; - m_next = NULL; -} - -wxPropertyValue::wxPropertyValue(bool *val) -{ - m_modifiedFlag = FALSE; - m_type = wxPropertyValueboolPtr; - m_value.boolPtr = val; - m_clientData = NULL; - m_next = NULL; -} - -wxPropertyValue::wxPropertyValue(float *val) -{ - m_modifiedFlag = FALSE; - m_type = wxPropertyValueRealPtr; - m_value.realPtr = val; - m_clientData = NULL; - m_next = NULL; -} - -wxPropertyValue::wxPropertyValue(wxList *the_list) -{ - m_modifiedFlag = FALSE; - m_type = wxPropertyValueList; - m_clientData = NULL; - m_last = NULL; - m_value.first = NULL; - - wxNode *node = the_list->First(); - while (node) - { - wxPropertyValue *expr = (wxPropertyValue *)node->Data(); - Append(expr); - node = node->Next(); - } - - delete the_list; -} - -wxPropertyValue::wxPropertyValue(wxStringList *the_list) -{ - m_modifiedFlag = FALSE; - m_type = wxPropertyValueList; - m_clientData = NULL; - m_last = NULL; - m_value.first = NULL; - - wxNode *node = the_list->First(); - while (node) - { - char *s = (char *)node->Data(); - Append(new wxPropertyValue(s)); - node = node->Next(); - } - delete the_list; -} - -wxPropertyValue::~wxPropertyValue(void) -{ - switch (m_type) - { - case wxPropertyValueInteger: - case wxPropertyValuebool: - case wxPropertyValueReal: - { - break; - } - case wxPropertyValueString: - { - delete[] m_value.string; - break; - } - case wxPropertyValueList: - { - wxPropertyValue *expr = m_value.first; - while (expr) - { - wxPropertyValue *expr1 = expr->m_next; - - delete expr; - expr = expr1; - } - break; - } - default: - case wxPropertyValueNull: break; - } -} - -void wxPropertyValue::Append(wxPropertyValue *expr) -{ - m_modifiedFlag = TRUE; - if (!m_value.first) - m_value.first = expr; - - if (m_last) - m_last->m_next = expr; - m_last = expr; -} - -void wxPropertyValue::Insert(wxPropertyValue *expr) -{ - m_modifiedFlag = TRUE; - expr->m_next = m_value.first; - m_value.first = expr; - - if (!m_last) - m_last = expr; -} - -// Delete from list -void wxPropertyValue::Delete(wxPropertyValue *node) -{ - wxPropertyValue *expr = GetFirst(); - - wxPropertyValue *previous = NULL; - while (expr && (expr != node)) - { - previous = expr; - expr = expr->GetNext(); - } - - if (expr) - { - if (previous) - previous->m_next = expr->m_next; - - // If node was the first in the list, - // make the list point to the NEXT one. - if (GetFirst() == expr) - { - m_value.first = expr->m_next; - } - - // If node was the last in the list, - // make the list 'last' pointer point to the PREVIOUS one. - if (GetLast() == expr) - { - if (previous) - m_last = previous; - else - m_last = NULL; - } - m_modifiedFlag = TRUE; - delete expr; - } - -} - -void wxPropertyValue::ClearList(void) -{ - wxPropertyValue *val = GetFirst(); - if (val) - m_modifiedFlag = TRUE; - - while (val) - { - wxPropertyValue *next = val->GetNext(); - delete val; - val = next; - } - m_value.first = NULL; - m_last = NULL; -} - -wxPropertyValue *wxPropertyValue::NewCopy(void) const -{ - switch (m_type) - { - case wxPropertyValueInteger: - return new wxPropertyValue(m_value.integer); - case wxPropertyValuebool: - return new wxPropertyValue((bool) (m_value.integer != 0)); - case wxPropertyValueReal: - return new wxPropertyValue(m_value.real); - case wxPropertyValueString: - return new wxPropertyValue(m_value.string); - case wxPropertyValueList: - { - wxPropertyValue *expr = m_value.first; - wxPropertyValue *new_list = new wxPropertyValue; - new_list->SetType(wxPropertyValueList); - while (expr) - { - wxPropertyValue *expr2 = expr->NewCopy(); - new_list->Append(expr2); - expr = expr->m_next; - } - return new_list; - } - case wxPropertyValueIntegerPtr: - return new wxPropertyValue(m_value.integerPtr); - case wxPropertyValueRealPtr: - return new wxPropertyValue(m_value.realPtr); - case wxPropertyValueboolPtr: - return new wxPropertyValue(m_value.boolPtr); - case wxPropertyValueStringPtr: - return new wxPropertyValue(m_value.stringPtr); - - case wxPropertyValueNull: -#ifdef __X__ - cerr << "Should never get here!\n"; -#endif - break; - } - return NULL; -} - -void wxPropertyValue::Copy(wxPropertyValue& copyFrom) -{ - m_type = copyFrom.Type(); - - switch (m_type) - { - case wxPropertyValueInteger: - (*this) = copyFrom.IntegerValue(); - return ; - - case wxPropertyValueReal: - (*this) = copyFrom.RealValue(); - return ; - - case wxPropertyValueString: - (*this) = wxString(copyFrom.StringValue()); - return ; - - case wxPropertyValuebool: - (*this) = copyFrom.BoolValue(); - return ; - - // Pointers - case wxPropertyValueboolPtr: - (*this) = copyFrom.BoolValuePtr(); - return ; - case wxPropertyValueRealPtr: - (*this) = copyFrom.RealValuePtr(); - return ; - case wxPropertyValueIntegerPtr: - (*this) = copyFrom.IntegerValuePtr(); - return ; - case wxPropertyValueStringPtr: - { - char** s = copyFrom.StringValuePtr(); - (*this) = s; - return ; - } - - case wxPropertyValueList: - { - m_value.first = NULL; - m_next = NULL; - m_last = NULL; - wxPropertyValue *expr = copyFrom.m_value.first; - while (expr) - { - wxPropertyValue *expr2 = expr->NewCopy(); - Append(expr2); - expr = expr->m_next; - } - return; - } - case wxPropertyValueNull: -#ifdef __X__ - cerr << "Should never get here!\n"; -#endif - break; - } -} - -// Return nth argument of a clause (starting from 1) -wxPropertyValue *wxPropertyValue::Arg(wxPropertyValueType type, int arg) const -{ - wxPropertyValue *expr = m_value.first; - for (int i = 1; i < arg; i++) - if (expr) - expr = expr->m_next; - - if (expr && (expr->m_type == type)) - return expr; - else - return NULL; -} - -// Return nth argument of a list expression (starting from zero) -wxPropertyValue *wxPropertyValue::Nth(int arg) const -{ - if (m_type != wxPropertyValueList) - return NULL; - - wxPropertyValue *expr = m_value.first; - for (int i = 0; i < arg; i++) - if (expr) - expr = expr->m_next; - else return NULL; - - if (expr) - return expr; - else - return NULL; -} - - // Returns the number of elements in a list expression -int wxPropertyValue::Number(void) const -{ - if (m_type != wxPropertyValueList) - return 0; - - int i = 0; - wxPropertyValue *expr = m_value.first; - while (expr) - { - expr = expr->m_next; - i ++; - } - return i; -} - -void wxPropertyValue::WritePropertyClause(ostream& stream) // Write this expression as a top-level clause -{ - if (m_type != wxPropertyValueList) - return; - - wxPropertyValue *node = m_value.first; - if (node) - { - node->WritePropertyType(stream); - stream << "("; - node = node->m_next; - bool first = TRUE; - while (node) - { - if (!first) - stream << " "; - node->WritePropertyType(stream); - node = node->m_next; - if (node) stream << ",\n"; - first = FALSE; - } - stream << ").\n\n"; - } -} - -void wxPropertyValue::WritePropertyType(ostream& stream) // Write as any other subexpression -{ - switch (m_type) - { - case wxPropertyValueInteger: - { - stream << m_value.integer; - break; - } - case wxPropertyValueIntegerPtr: - { - stream << *m_value.integerPtr; - break; - } - case wxPropertyValuebool: - { - if (m_value.integer) - stream << "True"; - else - stream << "False"; - break; - } - case wxPropertyValueboolPtr: - { - if (*m_value.integerPtr) - stream << "True"; - else - stream << "False"; - break; - } - case wxPropertyValueReal: - { - float f = m_value.real; - sprintf(wxBuffer, "%.6g", (double)f); - stream << wxBuffer; - break; - } - case wxPropertyValueRealPtr: - { - float f = *m_value.realPtr; -/* Now the parser can cope with this. - // Prevent printing in 'e' notation. Any better way? - if (fabs(f) < 0.00001) - f = 0.0; -*/ - sprintf(wxBuffer, "%.6g", f); - stream << wxBuffer; - break; - } - case wxPropertyValueString: - { -// stream << "\""; - int i; - int len = strlen(m_value.string); - for (i = 0; i < len; i++) - { - char ch = m_value.string[i]; -// if (ch == '"' || ch == '\\') -// stream << "\\"; - stream << ch; - } - -// stream << "\""; - break; - } - case wxPropertyValueStringPtr: - { - wxFAIL_MSG( "wxPropertyValue::WritePropertyType( wxPropertyValueStringPtr ) not implemented" ); - /* - int i; - int len = strlen(*(m_value.stringPtr)); - for (i = 0; i < len; i++) - { - char ch = *(m_value.stringPtr)[i]; - - } - */ - break; - } - case wxPropertyValueList: - { - if (!m_value.first) - stream << "[]"; - else - { - wxPropertyValue *expr = m_value.first; - - stream << "["; - while (expr) - { - expr->WritePropertyType(stream); - expr = expr->m_next; - if (expr) stream << ", "; - } - stream << "]"; - } - break; - } - case wxPropertyValueNull: break; - } -} - -wxString wxPropertyValue::GetStringRepresentation(void) -{ - char buf[500]; - buf[0] = 0; - - ostrstream str((char *)buf, (int)500, ios::out); - WritePropertyType(str); - str << '\0'; - str.flush(); - - wxString theString(buf); - return theString; -} - -void wxPropertyValue::operator=(const wxPropertyValue& val) -{ - m_modifiedFlag = TRUE; - Copy((wxPropertyValue&)val); -} - -// void wxPropertyValue::operator=(const char *val) -void wxPropertyValue::operator=(const wxString& val1) -{ - const char *val = (const char *)val1; - - m_modifiedFlag = TRUE; - if (m_type == wxPropertyValueNull) - m_type = wxPropertyValueString; - - if (m_type == wxPropertyValueString) - { - if (val) - m_value.string = copystring(val); - else - m_value.string = NULL; - } - else if (m_type == wxPropertyValueStringPtr) - { - if (*m_value.stringPtr) - delete[] *m_value.stringPtr; - if (val) - *m_value.stringPtr = copystring(val); - else - *m_value.stringPtr = NULL; - } - - m_clientData = NULL; - m_next = NULL; - m_last = NULL; - -} - -void wxPropertyValue::operator=(const long val) -{ - m_modifiedFlag = TRUE; - if (m_type == wxPropertyValueNull) - m_type = wxPropertyValueInteger; - - if (m_type == wxPropertyValueInteger) - m_value.integer = val; - else if (m_type == wxPropertyValueIntegerPtr) - *m_value.integerPtr = val; - else if (m_type == wxPropertyValueReal) - m_value.real = (float)val; - else if (m_type == wxPropertyValueRealPtr) - *m_value.realPtr = (float)val; - - m_clientData = NULL; - m_next = NULL; -} - -void wxPropertyValue::operator=(const bool val) -{ - m_modifiedFlag = TRUE; - if (m_type == wxPropertyValueNull) - m_type = wxPropertyValuebool; - - if (m_type == wxPropertyValuebool) - m_value.integer = (long)val; - else if (m_type == wxPropertyValueboolPtr) - *m_value.boolPtr = val; - - m_clientData = NULL; - m_next = NULL; -} - -void wxPropertyValue::operator=(const float val) -{ - m_modifiedFlag = TRUE; - if (m_type == wxPropertyValueNull) - m_type = wxPropertyValueReal; - - if (m_type == wxPropertyValueInteger) - m_value.integer = (long)val; - else if (m_type == wxPropertyValueIntegerPtr) - *m_value.integerPtr = (long)val; - else if (m_type == wxPropertyValueReal) - m_value.real = val; - else if (m_type == wxPropertyValueRealPtr) - *m_value.realPtr = val; - - m_clientData = NULL; - m_next = NULL; -} - -void wxPropertyValue::operator=(const char **val) -{ - m_modifiedFlag = TRUE; - m_type = wxPropertyValueStringPtr; - - if (val) - m_value.stringPtr = (char **)val; - else - m_value.stringPtr = NULL; - m_clientData = NULL; - m_next = NULL; - m_last = NULL; - -} - -void wxPropertyValue::operator=(const long *val) -{ - m_modifiedFlag = TRUE; - m_type = wxPropertyValueIntegerPtr; - m_value.integerPtr = (long *)val; - m_clientData = NULL; - m_next = NULL; -} - -void wxPropertyValue::operator=(const bool *val) -{ - m_modifiedFlag = TRUE; - m_type = wxPropertyValueboolPtr; - m_value.boolPtr = (bool *)val; - m_clientData = NULL; - m_next = NULL; -} - -void wxPropertyValue::operator=(const float *val) -{ - m_modifiedFlag = TRUE; - m_type = wxPropertyValueRealPtr; - m_value.realPtr = (float *)val; - m_clientData = NULL; - m_next = NULL; -} - -long wxPropertyValue::IntegerValue(void) const - { - if (m_type == wxPropertyValueInteger) - return m_value.integer; - else if (m_type == wxPropertyValueReal) - return (long)m_value.real; - else if (m_type == wxPropertyValueIntegerPtr) - return *m_value.integerPtr; - else if (m_type == wxPropertyValueRealPtr) - return (long)(*m_value.realPtr); - else return 0; - } - -long *wxPropertyValue::IntegerValuePtr(void) const -{ - return m_value.integerPtr; -} - -float wxPropertyValue::RealValue(void) const { - if (m_type == wxPropertyValueReal) - return m_value.real; - else if (m_type == wxPropertyValueRealPtr) - return *m_value.realPtr; - else if (m_type == wxPropertyValueInteger) - return (float)m_value.integer; - else if (m_type == wxPropertyValueIntegerPtr) - return (float)*(m_value.integerPtr); - else return 0.0; - } - -float *wxPropertyValue::RealValuePtr(void) const -{ - return m_value.realPtr; -} - -bool wxPropertyValue::BoolValue(void) const { - if (m_type == wxPropertyValueReal) - return (m_value.real != 0.0); - if (m_type == wxPropertyValueRealPtr) - return (*(m_value.realPtr) != 0.0); - else if (m_type == wxPropertyValueInteger) - return (m_value.integer != 0); - else if (m_type == wxPropertyValueIntegerPtr) - return (*(m_value.integerPtr) != 0); - else if (m_type == wxPropertyValuebool) - return (m_value.integer != 0); - else if (m_type == wxPropertyValueboolPtr) - return (*(m_value.boolPtr) != 0); - else return FALSE; - } - -bool *wxPropertyValue::BoolValuePtr(void) const -{ - return m_value.boolPtr; -} - -char *wxPropertyValue::StringValue(void) const { - if (m_type == wxPropertyValueString) - return m_value.string; - else if (m_type == wxPropertyValueStringPtr) - return *(m_value.stringPtr); - else return NULL; - } - -char **wxPropertyValue::StringValuePtr(void) const -{ - return m_value.stringPtr; -} - -/* - * A property (name plus value) - */ - -IMPLEMENT_DYNAMIC_CLASS(wxProperty, wxObject) - -wxProperty::wxProperty(void) -{ - m_propertyRole = wxEmptyString; - m_propertyValidator = NULL; - m_propertyWindow = NULL; - m_enabled = TRUE; -} - -wxProperty::wxProperty(wxProperty& copyFrom) -{ - m_value = copyFrom.GetValue(); - m_name = copyFrom.GetName(); - m_propertyRole = copyFrom.GetRole(); - m_propertyValidator = copyFrom.GetValidator(); - m_enabled = copyFrom.IsEnabled(); - m_propertyWindow = NULL; -} - -wxProperty::wxProperty(wxString nm, wxString role, wxPropertyValidator *ed):m_name(nm), m_propertyRole(role) -{ - m_propertyValidator = ed; - m_propertyWindow = NULL; - m_enabled = TRUE; -} - -wxProperty::wxProperty(wxString nm, const wxPropertyValue& val, wxString role, wxPropertyValidator *ed): - m_value(val), m_name(nm), m_propertyRole(role) -{ - m_propertyValidator = ed; - m_propertyWindow = NULL; - m_enabled = TRUE; -} - -wxProperty::~wxProperty(void) -{ - if (m_propertyValidator) - delete m_propertyValidator; -} - -wxPropertyValue& wxProperty::GetValue(void) const -{ - return (wxPropertyValue&) m_value; -} - -wxPropertyValidator *wxProperty::GetValidator(void) const -{ - return m_propertyValidator; -} - -wxString& wxProperty::GetName(void) const -{ - return (wxString&) m_name; -} - -wxString& wxProperty::GetRole(void) const -{ - return (wxString&) m_propertyRole; -} - -void wxProperty::SetValue(const wxPropertyValue& val) -{ - m_value = val; -} - -void wxProperty::SetValidator(wxPropertyValidator *ed) -{ - m_propertyValidator = ed; -} - -void wxProperty::SetRole(wxString& role) -{ - m_propertyRole = role; -} - -void wxProperty::SetName(wxString& nm) -{ - m_name = nm; -} - -void wxProperty::operator=(const wxPropertyValue& val) -{ - m_value = val; -} - -/* - * Base property view class - */ - -IMPLEMENT_DYNAMIC_CLASS(wxPropertyView, wxEvtHandler) - -wxPropertyView::wxPropertyView(long flags) -{ - m_buttonFlags = flags; - m_propertySheet = NULL; - m_currentValidator = NULL; - m_currentProperty = NULL; -} - -wxPropertyView::~wxPropertyView(void) -{ -} - -void wxPropertyView::AddRegistry(wxPropertyValidatorRegistry *registry) -{ - m_validatorRegistryList.Append(registry); -} - -wxPropertyValidator *wxPropertyView::FindPropertyValidator(wxProperty *property) -{ - if (property->GetValidator()) - return property->GetValidator(); - - wxNode *node = m_validatorRegistryList.First(); - while (node) - { - wxPropertyValidatorRegistry *registry = (wxPropertyValidatorRegistry *)node->Data(); - wxPropertyValidator *validator = registry->GetValidator(property->GetRole()); - if (validator) - return validator; - node = node->Next(); - } - return NULL; -/* - if (!wxDefaultPropertyValidator) - wxDefaultPropertyValidator = new wxPropertyListValidator; - return wxDefaultPropertyValidator; -*/ -} - -/* - * Property sheet - */ - -IMPLEMENT_DYNAMIC_CLASS(wxPropertySheet, wxObject) - -wxPropertySheet::wxPropertySheet(wxString name) -:m_properties(wxKEY_STRING),m_name(name) -{ -} - -wxPropertySheet::~wxPropertySheet(void) -{ - Clear(); -} - -bool wxPropertySheet::Save( ostream& WXUNUSED(str) ) -{ - return FALSE; -} - -bool wxPropertySheet::Load( ostream& WXUNUSED(str) ) -{ - return FALSE; -} - -void wxPropertySheet::UpdateAllViews( wxPropertyView *WXUNUSED(thisView) ) -{ -} - -// Add a property -void wxPropertySheet::AddProperty(wxProperty *property) -{ - m_properties.Append((const char*) property->GetName(), property); -} - -// Get property by name -wxProperty *wxPropertySheet::GetProperty(wxString name) -{ - wxNode *node = m_properties.Find((const char*) name); - if (!node) - return NULL; - else - return (wxProperty *)node->Data(); -} -bool wxPropertySheet::SetProperty(const wxString name, wxPropertyValue value) -{ - wxProperty* prop = GetProperty(name); - if(prop){ - prop->SetValue(value); - return true; - }else{ - return false; - } -} -void wxPropertySheet::RemoveProperty(wxString name) -{ - wxNode *node = m_properties.Find(name); - if(node) - { - wxProperty *prop = (wxProperty *)node->Data(); - delete prop; - m_properties.DeleteNode(node); - } -} -bool wxPropertySheet::HasProperty(wxString name) -{ - return (GetProperty(name)?true:false); -} -// Clear all properties -void wxPropertySheet::Clear(void) -{ - wxNode *node = m_properties.First(); - while (node) - { - wxProperty *prop = (wxProperty *)node->Data(); - wxNode *next = node->Next(); - delete prop; - delete node; - node = next; - } -} - -// Sets/clears the modified flag for each property value -void wxPropertySheet::SetAllModified(bool flag) -{ - wxNode *node = m_properties.First(); - while (node) - { - wxProperty *prop = (wxProperty *)node->Data(); - prop->GetValue().SetModified(flag); - node = node->Next(); - } -} - -/* - * Property validator registry - * - */ - -IMPLEMENT_DYNAMIC_CLASS(wxPropertyValidatorRegistry, wxHashTable) - -wxPropertyValidatorRegistry::wxPropertyValidatorRegistry(void):wxHashTable(wxKEY_STRING) -{ -} - -wxPropertyValidatorRegistry::~wxPropertyValidatorRegistry(void) -{ - ClearRegistry(); -} - -void wxPropertyValidatorRegistry::RegisterValidator(const wxString& typeName, wxPropertyValidator *validator) -{ - Put((const char*) typeName, validator); -} - -wxPropertyValidator *wxPropertyValidatorRegistry::GetValidator(const wxString& typeName) -{ - return (wxPropertyValidator *)Get((const char*) typeName); -} - -void wxPropertyValidatorRegistry::ClearRegistry(void) -{ - BeginFind(); - wxNode *node; - while ((node = Next())) - { - delete (wxPropertyValidator *)node->Data(); - } -} - - /* - * Property validator - */ - - -IMPLEMENT_ABSTRACT_CLASS(wxPropertyValidator, wxEvtHandler) - -wxPropertyValidator::wxPropertyValidator(long flags) -{ - m_validatorFlags = flags; - m_validatorProperty = NULL; -} - -wxPropertyValidator::~wxPropertyValidator(void) -{} - -bool wxPropertyValidator::StringToFloat (char *s, float *number) { - double num; - bool ok = StringToDouble (s, &num); - *number = (float) num; - return ok; -} - -bool wxPropertyValidator::StringToDouble (char *s, double *number) { - bool ok = TRUE; - char *value_ptr; - *number = strtod (s, &value_ptr); - if (value_ptr) { - int len = strlen (value_ptr); - for (int i = 0; i < len; i++) { - ok = (isspace (value_ptr[i]) != 0); - if (!ok) return FALSE; - } - } - return ok; -} - -bool wxPropertyValidator::StringToInt (char *s, int *number) { - long num; - bool ok = StringToLong (s, &num); - *number = (int) num; - return ok; -} - -bool wxPropertyValidator::StringToLong (char *s, long *number) { - bool ok = TRUE; - char *value_ptr; - *number = strtol (s, &value_ptr, 10); - if (value_ptr) { - int len = strlen (value_ptr); - for (int i = 0; i < len; i++) { - ok = (isspace (value_ptr[i]) != 0); - if (!ok) return FALSE; - } - } - return ok; -} - -char *wxPropertyValidator::FloatToString (float number) { - static char buf[20]; - sprintf (buf, "%.6g", number); - return buf; -} - -char *wxPropertyValidator::DoubleToString (double number) { - static char buf[20]; - sprintf (buf, "%.6g", number); - return buf; -} - -char *wxPropertyValidator::IntToString (int number) { - return ::IntToString (number); -} - -char *wxPropertyValidator::LongToString (long number) { - return ::LongToString (number); - } - - diff --git a/src/generic/propform.cpp b/src/generic/propform.cpp deleted file mode 100644 index 2a94303a4e..0000000000 --- a/src/generic/propform.cpp +++ /dev/null @@ -1,743 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: propform.cpp -// Purpose: Property form classes -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "propform.h" -#endif - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include -#include -#include -#include - -#if wxUSE_IOSTREAMH -#if defined(__WXMSW__) && !defined(__GNUWIN32__) -#include -#else -#include -#endif -#else -#include -#endif - -#include "wx/window.h" -#include "wx/utils.h" -#include "wx/list.h" -#include "wx/propform.h" - -/* - * Property view - */ - -IMPLEMENT_DYNAMIC_CLASS(wxPropertyFormView, wxPropertyView) - -BEGIN_EVENT_TABLE(wxPropertyFormView, wxPropertyView) - EVT_BUTTON(wxID_OK, wxPropertyFormView::OnOk) - EVT_BUTTON(wxID_CANCEL, wxPropertyFormView::OnCancel) - EVT_BUTTON(wxID_HELP, wxPropertyFormView::OnHelp) - EVT_BUTTON(wxID_PROP_REVERT, wxPropertyFormView::OnRevert) - EVT_BUTTON(wxID_PROP_UPDATE, wxPropertyFormView::OnUpdate) -END_EVENT_TABLE() - -bool wxPropertyFormView::sm_dialogCancelled = FALSE; - -wxPropertyFormView::wxPropertyFormView(wxWindow *propPanel, long flags):wxPropertyView(flags) -{ - m_propertyWindow = propPanel; - m_managedWindow = NULL; - - m_windowCloseButton = NULL; - m_windowCancelButton = NULL; - m_windowHelpButton = NULL; - - m_detailedEditing = FALSE; -} - -wxPropertyFormView::~wxPropertyFormView(void) -{ -} - -void wxPropertyFormView::ShowView(wxPropertySheet *ps, wxWindow *panel) -{ - m_propertySheet = ps; - - AssociatePanel(panel); -// CreateControls(); -// UpdatePropertyList(); -} - -// Update this view of the viewed object, called e.g. by -// the object itself. -bool wxPropertyFormView::OnUpdateView(void) -{ - return TRUE; -} - -bool wxPropertyFormView::Check(void) -{ - if (!m_propertySheet) - return FALSE; - - wxNode *node = m_propertySheet->GetProperties().First(); - while (node) - { - wxProperty *prop = (wxProperty *)node->Data(); - wxPropertyValidator *validator = FindPropertyValidator(prop); - if (validator && validator->IsKindOf(CLASSINFO(wxPropertyFormValidator))) - { - wxPropertyFormValidator *formValidator = (wxPropertyFormValidator *)validator; - if (!formValidator->OnCheckValue(prop, this, m_propertyWindow)) - return FALSE; - } - node = node->Next(); - } - return TRUE; -} - -bool wxPropertyFormView::TransferToPropertySheet(void) -{ - if (!m_propertySheet) - return FALSE; - - wxNode *node = m_propertySheet->GetProperties().First(); - while (node) - { - wxProperty *prop = (wxProperty *)node->Data(); - wxPropertyValidator *validator = FindPropertyValidator(prop); - if (validator && validator->IsKindOf(CLASSINFO(wxPropertyFormValidator))) - { - wxPropertyFormValidator *formValidator = (wxPropertyFormValidator *)validator; - formValidator->OnRetrieveValue(prop, this, m_propertyWindow); - } - node = node->Next(); - } - return TRUE; -} - -bool wxPropertyFormView::TransferToDialog(void) -{ - if (!m_propertySheet) - return FALSE; - - wxNode *node = m_propertySheet->GetProperties().First(); - while (node) - { - wxProperty *prop = (wxProperty *)node->Data(); - wxPropertyValidator *validator = FindPropertyValidator(prop); - if (validator && validator->IsKindOf(CLASSINFO(wxPropertyFormValidator))) - { - wxPropertyFormValidator *formValidator = (wxPropertyFormValidator *)validator; - formValidator->OnDisplayValue(prop, this, m_propertyWindow); - } - node = node->Next(); - } - return TRUE; -} - -bool wxPropertyFormView::AssociateNames(void) -{ - if (!m_propertySheet || !m_propertyWindow) - return FALSE; - - wxNode *node = m_propertyWindow->GetChildren().First(); - while (node) - { - wxWindow *win = (wxWindow *)node->Data(); - if (win->GetName() != "") - { - wxProperty *prop = m_propertySheet->GetProperty(win->GetName()); - if (prop) - prop->SetWindow(win); - } - node = node->Next(); - } - return TRUE; -} - - -bool wxPropertyFormView::OnClose(void) -{ - delete this; - return TRUE; -} - -void wxPropertyFormView::OnOk(wxCommandEvent& WXUNUSED(event)) -{ - // Retrieve the value if any - if (!Check()) - return; - - sm_dialogCancelled = FALSE; - TransferToPropertySheet(); - - m_managedWindow->Close(TRUE); -} - -void wxPropertyFormView::OnCancel(wxCommandEvent& WXUNUSED(event)) -{ - sm_dialogCancelled = TRUE; - - m_managedWindow->Close(TRUE); -} - -void wxPropertyFormView::OnHelp(wxCommandEvent& WXUNUSED(event)) -{ -} - -void wxPropertyFormView::OnUpdate(wxCommandEvent& WXUNUSED(event)) -{ - if (Check()) - TransferToPropertySheet(); -} - -void wxPropertyFormView::OnRevert(wxCommandEvent& WXUNUSED(event)) -{ - TransferToDialog(); -} - -void wxPropertyFormView::OnCommand(wxWindow& win, wxCommandEvent& event) -{ - if (!m_propertySheet) - return; - - if (win.GetName() == "") - return; - - if (strcmp(win.GetName(), "ok") == 0) - OnOk(event); - else if (strcmp(win.GetName(), "cancel") == 0) - OnCancel(event); - else if (strcmp(win.GetName(), "help") == 0) - OnHelp(event); - else if (strcmp(win.GetName(), "update") == 0) - OnUpdate(event); - else if (strcmp(win.GetName(), "revert") == 0) - OnRevert(event); - else - { - // Find a validator to route the command to. - wxNode *node = m_propertySheet->GetProperties().First(); - while (node) - { - wxProperty *prop = (wxProperty *)node->Data(); - if (prop->GetWindow() && (prop->GetWindow() == &win)) - { - wxPropertyValidator *validator = FindPropertyValidator(prop); - if (validator && validator->IsKindOf(CLASSINFO(wxPropertyFormValidator))) - { - wxPropertyFormValidator *formValidator = (wxPropertyFormValidator *)validator; - formValidator->OnCommand(prop, this, m_propertyWindow, event); - return; - } - } - node = node->Next(); - } - } -} - -void wxPropertyFormView::OnDoubleClick(wxControl *item) -{ - if (!m_propertySheet) - return; - - // Find a validator to route the command to. - wxNode *node = m_propertySheet->GetProperties().First(); - while (node) - { - wxProperty *prop = (wxProperty *)node->Data(); - if (prop->GetWindow() && ((wxControl *)prop->GetWindow() == item)) - { - wxPropertyValidator *validator = FindPropertyValidator(prop); - if (validator && validator->IsKindOf(CLASSINFO(wxPropertyFormValidator))) - { - wxPropertyFormValidator *formValidator = (wxPropertyFormValidator *)validator; - formValidator->OnDoubleClick(prop, this, m_propertyWindow); - return; - } - } - node = node->Next(); - } -} - -/* - * Property form dialog box - */ - -IMPLEMENT_CLASS(wxPropertyFormDialog, wxDialog) - -wxPropertyFormDialog::wxPropertyFormDialog(wxPropertyFormView *v, wxWindow *parent, const wxString& title, - const wxPoint& pos, const wxSize& size, long style, const wxString& name): - wxDialog(parent, -1, title, pos, size, style, name) -{ - m_view = v; - m_view->AssociatePanel(this); - m_view->SetManagedWindow(this); -// SetAutoLayout(TRUE); -} - -bool wxPropertyFormDialog::OnClose(void) -{ - if (m_view) - { - m_view->OnClose(); - m_view = NULL; - return TRUE; - } - else - return FALSE; -} - -void wxPropertyFormDialog::OnDefaultAction(wxControl *item) -{ - m_view->OnDoubleClick(item); -} - -void wxPropertyFormDialog::OnCommand(wxWindow& win, wxCommandEvent& event) -{ - if ( m_view ) - m_view->OnCommand(win, event); -} - -// Extend event processing to search the view's event table -bool wxPropertyFormDialog::ProcessEvent(wxEvent& event) -{ - if ( !m_view || ! m_view->ProcessEvent(event) ) - return wxEvtHandler::ProcessEvent(event); - else - return TRUE; -} - - -/* - * Property form panel - */ - -IMPLEMENT_CLASS(wxPropertyFormPanel, wxPanel) - -void wxPropertyFormPanel::OnDefaultAction(wxControl *item) -{ - m_view->OnDoubleClick(item); -} - -void wxPropertyFormPanel::OnCommand(wxWindow& win, wxCommandEvent& event) -{ - m_view->OnCommand(win, event); -} - -// Extend event processing to search the view's event table -bool wxPropertyFormPanel::ProcessEvent(wxEvent& event) -{ - if ( !m_view || ! m_view->ProcessEvent(event) ) - return wxEvtHandler::ProcessEvent(event); - else - return TRUE; -} - -/* - * Property frame - */ - -IMPLEMENT_CLASS(wxPropertyFormFrame, wxFrame) - -bool wxPropertyFormFrame::OnClose(void) -{ - if (m_view) - return m_view->OnClose(); - else - return FALSE; -} - -wxPanel *wxPropertyFormFrame::OnCreatePanel(wxFrame *parent, wxPropertyFormView *v) -{ - return new wxPropertyFormPanel(v, parent); -} - -bool wxPropertyFormFrame::Initialize(void) -{ - m_propertyPanel = OnCreatePanel(this, m_view); - if (m_propertyPanel) - { - m_view->AssociatePanel(m_propertyPanel); - m_view->SetManagedWindow(this); - return TRUE; - } - else - return FALSE; -} - - /* - * Property form specific validator - */ - -IMPLEMENT_ABSTRACT_CLASS(wxPropertyFormValidator, wxPropertyValidator) - - -/* - * Default validators - */ - -IMPLEMENT_DYNAMIC_CLASS(wxRealFormValidator, wxPropertyFormValidator) - -/// -/// Real number form validator -/// -bool wxRealFormValidator::OnCheckValue( wxProperty *property, wxPropertyFormView *WXUNUSED(view), - wxWindow *parentWindow) -{ - if (m_realMin == 0.0 && m_realMax == 0.0) - return TRUE; - - // The item used for viewing the real number: should be a text item. - wxWindow *m_propertyWindow = property->GetWindow(); - if (!m_propertyWindow || !m_propertyWindow->IsKindOf(CLASSINFO(wxTextCtrl))) - return FALSE; - - wxString value(((wxTextCtrl *)m_propertyWindow)->GetValue()); - - float val = 0.0; - if (!StringToFloat(WXSTRINGCAST value, &val)) - { - char buf[200]; - sprintf(buf, "Value %s is not a valid real number!", (const char *)value); - wxMessageBox(buf, "Property value error", wxOK | wxICON_EXCLAMATION, parentWindow); - return FALSE; - } - - if (val < m_realMin || val > m_realMax) - { - char buf[200]; - sprintf(buf, "Value must be a real number between %.2f and %.2f!", m_realMin, m_realMax); - wxMessageBox(buf, "Property value error", wxOK | wxICON_EXCLAMATION, parentWindow); - return FALSE; - } - return TRUE; -} - -bool wxRealFormValidator::OnRetrieveValue(wxProperty *property, wxPropertyFormView *WXUNUSED(view), - wxWindow *WXUNUSED(parentWindow) ) -{ - // The item used for viewing the real number: should be a text item. - wxWindow *m_propertyWindow = property->GetWindow(); - if (!m_propertyWindow || !m_propertyWindow->IsKindOf(CLASSINFO(wxTextCtrl))) - return FALSE; - - wxString value(((wxTextCtrl *)m_propertyWindow)->GetValue()); - - if (value.Length() == 0) - return FALSE; - - float f = (float)atof((const char *)value); - property->GetValue() = f; - return TRUE; -} - -bool wxRealFormValidator::OnDisplayValue(wxProperty *property, wxPropertyFormView *WXUNUSED(view), - wxWindow *WXUNUSED(parentWindow) ) -{ - // The item used for viewing the real number: should be a text item. - wxWindow *m_propertyWindow = property->GetWindow(); - if (!m_propertyWindow || !m_propertyWindow->IsKindOf(CLASSINFO(wxTextCtrl))) - return FALSE; - - wxTextCtrl *textItem = (wxTextCtrl *)m_propertyWindow; - textItem->SetValue(FloatToString(property->GetValue().RealValue())); - return TRUE; -} - -/// -/// Integer validator -/// -IMPLEMENT_DYNAMIC_CLASS(wxIntegerFormValidator, wxPropertyFormValidator) - -bool wxIntegerFormValidator::OnCheckValue(wxProperty *property, wxPropertyFormView *WXUNUSED(view), - wxWindow *parentWindow) -{ - if (m_integerMin == 0.0 && m_integerMax == 0.0) - return TRUE; - - // The item used for viewing the real number: should be a text item or a slider - wxWindow *m_propertyWindow = property->GetWindow(); - if (!m_propertyWindow) - return FALSE; - - long val = 0; - - if (m_propertyWindow->IsKindOf(CLASSINFO(wxTextCtrl))) - { - wxString value(((wxTextCtrl *)m_propertyWindow)->GetValue()); - - if (!StringToLong(WXSTRINGCAST value, &val)) - { - char buf[200]; - sprintf(buf, "Value %s is not a valid integer!", (const char *)value); - wxMessageBox(buf, "Property value error", wxOK | wxICON_EXCLAMATION, parentWindow); - return FALSE; - } - } - else if (m_propertyWindow->IsKindOf(CLASSINFO(wxSlider))) - { - val = (long)((wxSlider *)m_propertyWindow)->GetValue(); - } - else - return FALSE; - - if (val < m_integerMin || val > m_integerMax) - { - char buf[200]; - sprintf(buf, "Value must be an integer between %ld and %ld!", m_integerMin, m_integerMax); - wxMessageBox(buf, "Property value error", wxOK | wxICON_EXCLAMATION, parentWindow); - return FALSE; - } - return TRUE; -} - -bool wxIntegerFormValidator::OnRetrieveValue(wxProperty *property, wxPropertyFormView *WXUNUSED(view), - wxWindow *WXUNUSED(parentWindow)) -{ - // The item used for viewing the real number: should be a text item or a slider - wxWindow *m_propertyWindow = property->GetWindow(); - if (!m_propertyWindow) - return FALSE; - - if (m_propertyWindow->IsKindOf(CLASSINFO(wxTextCtrl))) - { - wxString value(((wxTextCtrl *)m_propertyWindow)->GetValue()); - - if (value.Length() == 0) - return FALSE; - - long i = atol((const char *)value); - property->GetValue() = i; - } - else if (m_propertyWindow->IsKindOf(CLASSINFO(wxSlider))) - { - property->GetValue() = (long)((wxSlider *)m_propertyWindow)->GetValue(); - } - else - return FALSE; - - return TRUE; -} - -bool wxIntegerFormValidator::OnDisplayValue( wxProperty *property, wxPropertyFormView *WXUNUSED(view), - wxWindow *WXUNUSED(parentWindow)) -{ - // The item used for viewing the real number: should be a text item or a slider - wxWindow *m_propertyWindow = property->GetWindow(); - if (!m_propertyWindow) - return FALSE; - - if (m_propertyWindow->IsKindOf(CLASSINFO(wxTextCtrl))) - { - wxTextCtrl *textItem = (wxTextCtrl *)m_propertyWindow; - textItem->SetValue(LongToString(property->GetValue().IntegerValue())); - } - else if (m_propertyWindow->IsKindOf(CLASSINFO(wxSlider))) - { - ((wxSlider *)m_propertyWindow)->SetValue((int)property->GetValue().IntegerValue()); - } - else - return FALSE; - return TRUE; -} - -/// -/// Boolean validator -/// -IMPLEMENT_DYNAMIC_CLASS(wxBoolFormValidator, wxPropertyFormValidator) - -bool wxBoolFormValidator::OnCheckValue(wxProperty *property, wxPropertyFormView *WXUNUSED(view), - wxWindow *WXUNUSED(parentWindow)) -{ - // The item used for viewing the boolean: should be a checkbox - wxWindow *m_propertyWindow = property->GetWindow(); - if (!m_propertyWindow || !m_propertyWindow->IsKindOf(CLASSINFO(wxCheckBox))) - return FALSE; - - return TRUE; -} - -bool wxBoolFormValidator::OnRetrieveValue(wxProperty *property, wxPropertyFormView *WXUNUSED(view), - wxWindow *WXUNUSED(parentWindow) ) -{ - // The item used for viewing the boolean: should be a checkbox. - wxWindow *m_propertyWindow = property->GetWindow(); - if (!m_propertyWindow || !m_propertyWindow->IsKindOf(CLASSINFO(wxCheckBox))) - return FALSE; - - wxCheckBox *checkBox = (wxCheckBox *)m_propertyWindow; - - property->GetValue() = (bool)checkBox->GetValue(); - return TRUE; -} - -bool wxBoolFormValidator::OnDisplayValue(wxProperty *property, wxPropertyFormView *WXUNUSED(view), - wxWindow *WXUNUSED(parentWindow)) -{ - // The item used for viewing the boolean: should be a checkbox. - wxWindow *m_propertyWindow = property->GetWindow(); - if (!m_propertyWindow || !m_propertyWindow->IsKindOf(CLASSINFO(wxCheckBox))) - return FALSE; - - wxCheckBox *checkBox = (wxCheckBox *)m_propertyWindow; - checkBox->SetValue((bool)property->GetValue().BoolValue()); - return TRUE; -} - -/// -/// String validator -/// -IMPLEMENT_DYNAMIC_CLASS(wxStringFormValidator, wxPropertyFormValidator) - -wxStringFormValidator::wxStringFormValidator(wxStringList *list, long flags): - wxPropertyFormValidator(flags) -{ - m_strings = list; -} - -bool wxStringFormValidator::OnCheckValue(wxProperty *property, wxPropertyFormView *WXUNUSED(view), - wxWindow *parentWindow ) -{ - if (!m_strings) - return TRUE; - - // The item used for viewing the string: should be a text item, choice item or listbox. - wxWindow *m_propertyWindow = property->GetWindow(); - if (!m_propertyWindow) - return FALSE; - if (m_propertyWindow->IsKindOf(CLASSINFO(wxTextCtrl))) - { - wxTextCtrl *text = (wxTextCtrl *)m_propertyWindow; - if (!m_strings->Member(text->GetValue())) - { - wxString s("Value "); - s += text->GetValue(); - s += " is not valid."; - wxMessageBox(s, "Property value error", wxOK | wxICON_EXCLAMATION, parentWindow); - return FALSE; - } - } - else - { - // Any other item constrains the string value, - // so we don't have to check it. - } - return TRUE; -} - -bool wxStringFormValidator::OnRetrieveValue(wxProperty *property, wxPropertyFormView *WXUNUSED(view), - wxWindow *WXUNUSED(parentWindow) ) -{ - // The item used for viewing the string: should be a text item, choice item or listbox. - wxWindow *m_propertyWindow = property->GetWindow(); - if (!m_propertyWindow) - return FALSE; - if (m_propertyWindow->IsKindOf(CLASSINFO(wxTextCtrl))) - { - wxTextCtrl *text = (wxTextCtrl *)m_propertyWindow; - property->GetValue() = text->GetValue(); - } - else if (m_propertyWindow->IsKindOf(CLASSINFO(wxListBox))) - { - wxListBox *lbox = (wxListBox *)m_propertyWindow; - if (lbox->GetSelection() > -1) - property->GetValue() = lbox->GetStringSelection(); - } -/* - else if (m_propertyWindow->IsKindOf(CLASSINFO(wxRadioBox))) - { - wxRadioBox *rbox = (wxRadioBox *)m_propertyWindow; - int n = 0; - if ((n = rbox->GetSelection()) > -1) - property->GetValue() = rbox->GetString(n); - } -*/ - else if (m_propertyWindow->IsKindOf(CLASSINFO(wxChoice))) - { - wxChoice *choice = (wxChoice *)m_propertyWindow; - if (choice->GetSelection() > -1) - property->GetValue() = choice->GetStringSelection(); - } - else - return FALSE; - return TRUE; -} - -bool wxStringFormValidator::OnDisplayValue(wxProperty *property, wxPropertyFormView *WXUNUSED(view), - wxWindow *WXUNUSED(parentWindow) ) -{ - // The item used for viewing the string: should be a text item, choice item or listbox. - wxWindow *m_propertyWindow = property->GetWindow(); - if (!m_propertyWindow) - return FALSE; - if (m_propertyWindow->IsKindOf(CLASSINFO(wxTextCtrl))) - { - wxTextCtrl *text = (wxTextCtrl *)m_propertyWindow; - text->SetValue(property->GetValue().StringValue()); - } - else if (m_propertyWindow->IsKindOf(CLASSINFO(wxListBox))) - { - wxListBox *lbox = (wxListBox *)m_propertyWindow; - if (lbox->Number() == 0 && m_strings) - { - // Try to initialize the listbox from 'strings' - wxNode *node = m_strings->First(); - while (node) - { - char *s = (char *)node->Data(); - lbox->Append(s); - node = node->Next(); - } - } - lbox->SetStringSelection(property->GetValue().StringValue()); - } -/* - else if (m_propertyWindow->IsKindOf(CLASSINFO(wxRadioBox))) - { - wxRadioBox *rbox = (wxRadioBox *)m_propertyWindow; - rbox->SetStringSelection(property->GetValue().StringValue()); - } -*/ - else if (m_propertyWindow->IsKindOf(CLASSINFO(wxChoice))) - { - wxChoice *choice = (wxChoice *)m_propertyWindow; -#ifndef __XVIEW__ - if (choice->Number() == 0 && m_strings) - { - // Try to initialize the choice item from 'strings' - // XView doesn't allow this kind of thing. - wxNode *node = m_strings->First(); - while (node) - { - char *s = (char *)node->Data(); - choice->Append(s); - node = node->Next(); - } - } -#endif - choice->SetStringSelection(property->GetValue().StringValue()); - } - else - return FALSE; - return TRUE; -} - diff --git a/src/generic/proplist.cpp b/src/generic/proplist.cpp deleted file mode 100644 index f78601ef00..0000000000 --- a/src/generic/proplist.cpp +++ /dev/null @@ -1,1952 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: proplist.cpp -// Purpose: Property list classes -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "proplist.h" -#endif - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include -#include -#include -#include - -#if wxUSE_IOSTREAMH -#if defined(__WXMSW__) && !defined(__GNUWIN32__) -#include -#else -#include -#endif -#else -#include -#endif - -#include "wx/window.h" -#include "wx/utils.h" -#include "wx/list.h" -#include "wx/colordlg.h" -#include "wx/proplist.h" - -/* - * Property text edit control - */ - -IMPLEMENT_CLASS(wxPropertyTextEdit, wxTextCtrl) - -wxPropertyTextEdit::wxPropertyTextEdit(wxPropertyListView *v, wxWindow *parent, - const wxWindowID id, const wxString& value, - const wxPoint& pos, const wxSize& size, - long style, const wxString& name): - wxTextCtrl(parent, id, value, pos, size, style, wxDefaultValidator, name) -{ - m_view = v; -} - -void wxPropertyTextEdit::OnSetFocus(void) -{ -} - -void wxPropertyTextEdit::OnKillFocus(void) -{ -} - -/* - * Property list view - */ - -IMPLEMENT_DYNAMIC_CLASS(wxPropertyListView, wxPropertyView) - -BEGIN_EVENT_TABLE(wxPropertyListView, wxPropertyView) - EVT_BUTTON(wxID_OK, wxPropertyListView::OnOk) - EVT_BUTTON(wxID_CANCEL, wxPropertyListView::OnCancel) - EVT_BUTTON(wxID_HELP, wxPropertyListView::OnHelp) - EVT_BUTTON(wxID_PROP_CROSS, wxPropertyListView::OnCross) - EVT_BUTTON(wxID_PROP_CHECK, wxPropertyListView::OnCheck) - EVT_BUTTON(wxID_PROP_EDIT, wxPropertyListView::OnEdit) - EVT_TEXT_ENTER(wxID_PROP_TEXT, wxPropertyListView::OnText) - EVT_LISTBOX(wxID_PROP_SELECT, wxPropertyListView::OnPropertySelect) - EVT_COMMAND(wxID_PROP_SELECT, wxEVT_COMMAND_LISTBOX_DOUBLECLICKED, wxPropertyListView::OnPropertyDoubleClick) - EVT_LISTBOX(wxID_PROP_VALUE_SELECT, wxPropertyListView::OnValueListSelect) -END_EVENT_TABLE() - -bool wxPropertyListView::sm_dialogCancelled = FALSE; -wxBitmap *wxPropertyListView::sm_tickBitmap = NULL; -wxBitmap *wxPropertyListView::sm_crossBitmap = NULL; - -wxPropertyListView::wxPropertyListView(wxPanel *propPanel, long flags):wxPropertyView(flags) -{ - m_propertyScrollingList = NULL; - m_valueList = NULL; - m_valueText = NULL; - m_editButton = NULL; - m_confirmButton = NULL; - m_cancelButton = NULL; - m_propertyWindow = propPanel; - m_managedWindow = NULL; - - m_windowCloseButton = NULL; - m_windowCancelButton = NULL; - m_windowHelpButton = NULL; - - m_detailedEditing = FALSE; -} - -wxPropertyListView::~wxPropertyListView(void) -{ -/* - if (m_tickBitmap) - delete m_tickBitmap; - if (m_crossBitmap) - delete m_crossBitmap; -*/ -} - -void wxPropertyListView::ShowView(wxPropertySheet *ps, wxPanel *panel) -{ - m_propertySheet = ps; - - AssociatePanel(panel); - CreateControls(); - - UpdatePropertyList(); - panel->Layout(); -} - -// Update this view of the viewed object, called e.g. by -// the object itself. -bool wxPropertyListView::OnUpdateView(void) -{ - return TRUE; -} - -bool wxPropertyListView::UpdatePropertyList(bool clearEditArea) -{ - if (!m_propertyScrollingList || !m_propertySheet) - return FALSE; - - m_propertyScrollingList->Clear(); - if (clearEditArea) - { - m_valueList->Clear(); - m_valueText->SetValue(""); - } - wxNode *node = m_propertySheet->GetProperties().First(); - - // Should sort them... later... - while (node) - { - wxProperty *property = (wxProperty *)node->Data(); - wxString stringValueRepr(property->GetValue().GetStringRepresentation()); - wxString paddedString(MakeNameValueString(property->GetName(), stringValueRepr)); - - m_propertyScrollingList->Append(paddedString.GetData(), (char *)property); - node = node->Next(); - } - return TRUE; -} - -bool wxPropertyListView::UpdatePropertyDisplayInList(wxProperty *property) -{ - if (!m_propertyScrollingList || !m_propertySheet) - return FALSE; - -#ifdef __WXMSW__ - int currentlySelected = m_propertyScrollingList->GetSelection(); -#endif -// #ifdef __WXMSW__ - wxString stringValueRepr(property->GetValue().GetStringRepresentation()); - wxString paddedString(MakeNameValueString(property->GetName(), stringValueRepr)); - int sel = FindListIndexForProperty(property); - - if (sel > -1) - { - // Don't update the listbox unnecessarily because it can cause - // ugly flashing. - - if (paddedString != m_propertyScrollingList->GetString(sel)) - m_propertyScrollingList->SetString(sel, paddedString.GetData()); - } -//#else -// UpdatePropertyList(FALSE); -//#endif - - // TODO: why is this necessary? -#ifdef __WXMSW__ - if (currentlySelected > -1) - m_propertyScrollingList->SetSelection(currentlySelected); -#endif - - return TRUE; -} - -// Find the wxListBox index corresponding to this property -int wxPropertyListView::FindListIndexForProperty(wxProperty *property) -{ - int n = m_propertyScrollingList->Number(); - for (int i = 0; i < n; i++) - { - if (property == (wxProperty *)m_propertyScrollingList->wxListBox::GetClientData(i)) - return i; - } - return -1; -} - -wxString wxPropertyListView::MakeNameValueString(wxString name, wxString value) -{ - wxString theString(name); - - int nameWidth = 25; - int padWith = nameWidth - theString.Length(); - if (padWith < 0) - padWith = 0; - - if (GetFlags() & wxPROP_SHOWVALUES) - { - // Want to pad with spaces - theString.Append(' ', padWith); - theString += value; - } - - return theString; -} - -// Select and show string representation in validator the given -// property. NULL resets to show no property. -bool wxPropertyListView::ShowProperty(wxProperty *property, bool select) -{ - if (m_currentProperty) - { - EndShowingProperty(m_currentProperty); - m_currentProperty = NULL; - } - - m_valueList->Clear(); - m_valueText->SetValue(""); - - if (property) - { - m_currentProperty = property; - BeginShowingProperty(property); - } - if (select) - { - int sel = FindListIndexForProperty(property); - if (sel > -1) - m_propertyScrollingList->SetSelection(sel); - } - return TRUE; -} - -// Find appropriate validator and load property into value controls -bool wxPropertyListView::BeginShowingProperty(wxProperty *property) -{ - m_currentValidator = FindPropertyValidator(property); - if (!m_currentValidator) - return FALSE; - - if (!m_currentValidator->IsKindOf(CLASSINFO(wxPropertyListValidator))) - return FALSE; - - wxPropertyListValidator *listValidator = (wxPropertyListValidator *)m_currentValidator; - - listValidator->OnPrepareControls(property, this, m_propertyWindow); - DisplayProperty(property); - return TRUE; -} - -// Find appropriate validator and unload property from value controls -bool wxPropertyListView::EndShowingProperty(wxProperty *property) -{ - if (!m_currentValidator) - return FALSE; - - RetrieveProperty(property); - - if (!m_currentValidator->IsKindOf(CLASSINFO(wxPropertyListValidator))) - return FALSE; - - wxPropertyListValidator *listValidator = (wxPropertyListValidator *)m_currentValidator; - - listValidator->OnClearControls(property, this, m_propertyWindow); - if (m_detailedEditing) - { - listValidator->OnClearDetailControls(property, this, m_propertyWindow); - m_detailedEditing = FALSE; - } - return TRUE; -} - -void wxPropertyListView::BeginDetailedEditing(void) -{ - if (!m_currentValidator) - return; - if (!m_currentProperty) - return; - if (m_detailedEditing) - return; - if (!m_currentValidator->IsKindOf(CLASSINFO(wxPropertyListValidator))) - return; - if (!m_currentProperty->IsEnabled()) - return; - - wxPropertyListValidator *listValidator = (wxPropertyListValidator *)m_currentValidator; - - if (listValidator->OnPrepareDetailControls(m_currentProperty, this, m_propertyWindow)) - m_detailedEditing = TRUE; -} - -void wxPropertyListView::EndDetailedEditing(void) -{ - if (!m_currentValidator) - return; - if (!m_currentProperty) - return; - - RetrieveProperty(m_currentProperty); - - if (!m_currentValidator->IsKindOf(CLASSINFO(wxPropertyListValidator))) - return; - - wxPropertyListValidator *listValidator = (wxPropertyListValidator *)m_currentValidator; - - if (m_detailedEditing) - { - listValidator->OnClearDetailControls(m_currentProperty, this, m_propertyWindow); - m_detailedEditing = FALSE; - } -} - -bool wxPropertyListView::DisplayProperty(wxProperty *property) -{ - if (!m_currentValidator) - return FALSE; - - if (((m_currentValidator->GetFlags() & wxPROP_ALLOW_TEXT_EDITING) == 0) || !property->IsEnabled()) - m_valueText->SetEditable(FALSE); - else - m_valueText->SetEditable(TRUE); - - if (!m_currentValidator->IsKindOf(CLASSINFO(wxPropertyListValidator))) - return FALSE; - - wxPropertyListValidator *listValidator = (wxPropertyListValidator *)m_currentValidator; - - listValidator->OnDisplayValue(property, this, m_propertyWindow); - return TRUE; -} - -bool wxPropertyListView::RetrieveProperty(wxProperty *property) -{ - if (!m_currentValidator) - return FALSE; - if (!property->IsEnabled()) - return FALSE; - - if (!m_currentValidator->IsKindOf(CLASSINFO(wxPropertyListValidator))) - return FALSE; - - wxPropertyListValidator *listValidator = (wxPropertyListValidator *)m_currentValidator; - - if (listValidator->OnCheckValue(property, this, m_propertyWindow)) - { - if (listValidator->OnRetrieveValue(property, this, m_propertyWindow)) - { - UpdatePropertyDisplayInList(property); - OnPropertyChanged(property); - } - } - else - { - // Revert to old value - listValidator->OnDisplayValue(property, this, m_propertyWindow); - } - return TRUE; -} - - -bool wxPropertyListView::EditProperty(wxProperty *WXUNUSED(property)) -{ - return TRUE; -} - -// Called by the listbox callback -void wxPropertyListView::OnPropertySelect(wxCommandEvent& WXUNUSED(event)) -{ - int sel = m_propertyScrollingList->GetSelection(); - if (sel > -1) - { - wxProperty *newSel = (wxProperty *)m_propertyScrollingList->wxListBox::GetClientData(sel); - if (newSel && newSel != m_currentProperty) - { - ShowProperty(newSel, FALSE); - } - } -} - -bool wxPropertyListView::CreateControls(void) -{ - wxPanel *panel = (wxPanel *)m_propertyWindow; - - int largeButtonWidth = 60; - int largeButtonHeight = 25; - - int smallButtonWidth = 25; - int smallButtonHeight = 20; - - // XView must be allowed to choose its own sized buttons -#ifdef __XVIEW__ - largeButtonWidth = -1; - largeButtonHeight = -1; - - smallButtonWidth = -1; - smallButtonHeight = -1; -#endif - - if (m_valueText) - return TRUE; - - if (!panel) - return FALSE; - - wxWindow *leftMostWindow = panel; -/* - wxWindow *topMostWindow = panel; - wxWindow *rightMostWindow = panel; -*/ - - wxSystemSettings settings; - wxFont guiFont = settings.GetSystemFont(wxSYS_DEFAULT_GUI_FONT); - -#ifdef __WXMSW__ - wxFont *boringFont = wxTheFontList->FindOrCreateFont(guiFont.GetPointSize(), wxMODERN, wxNORMAL, wxNORMAL, FALSE, "Courier New"); -#else - wxFont *boringFont = wxTheFontList->FindOrCreateFont(guiFont.GetPointSize(), wxTELETYPE, wxNORMAL, wxNORMAL); -#endif - - // May need to be changed in future to eliminate clashes with app. - // WHAT WAS THIS FOR? -// panel->SetClientData((char *)this); - - // These buttons are at the bottom of the window, but create them now - // so the constraints are evaluated in the correct order - if (m_buttonFlags & wxPROP_BUTTON_OK) - { - m_windowCloseButton = new wxButton(panel, wxID_OK, "OK", - wxPoint(-1, -1), wxSize(largeButtonWidth, largeButtonHeight)); - m_windowCloseButton->SetDefault(); - m_windowCloseButton->SetFocus(); - } - else if (m_buttonFlags & wxPROP_BUTTON_CLOSE) - { - m_windowCloseButton = new wxButton(panel, wxID_OK, "Close", - wxPoint(-1, -1), wxSize(largeButtonWidth, largeButtonHeight)); - } - if (m_buttonFlags & wxPROP_BUTTON_CANCEL) - { - m_windowCancelButton = new wxButton(panel, wxID_CANCEL, "Cancel", - wxPoint(-1, -1), wxSize(largeButtonWidth, largeButtonHeight)); - } - if (m_buttonFlags & wxPROP_BUTTON_HELP) - { - m_windowHelpButton = new wxButton(panel, wxID_HELP, "Help", - wxPoint(-1, -1), wxSize(largeButtonWidth, largeButtonHeight)); - } - - if (m_windowCloseButton) - { - wxLayoutConstraints *c1 = new wxLayoutConstraints; - - c1->left.SameAs (panel, wxLeft, 2); - c1->bottom.SameAs (panel, wxBottom, 2); - c1->width.AsIs(); - c1->height.AsIs(); - m_windowCloseButton->SetConstraints(c1); - leftMostWindow = m_windowCloseButton; - } - if (m_windowCancelButton) - { - wxLayoutConstraints *c2 = new wxLayoutConstraints; - - c2->right.SameAs (panel, wxRight, 2); - c2->bottom.SameAs (panel, wxBottom, 2); - c2->width.AsIs(); - c2->height.AsIs(); - m_windowCancelButton->SetConstraints(c2); - leftMostWindow = m_windowCancelButton; - } - if (m_windowHelpButton) - { - wxLayoutConstraints *c2 = new wxLayoutConstraints; - if (leftMostWindow == panel) - c2->left.SameAs (panel, wxLeft, 2); - else - c2->left.RightOf (leftMostWindow, 2); - - c2->bottom.SameAs (panel, wxBottom, 2); - c2->width.AsIs(); - c2->height.AsIs(); - m_windowHelpButton->SetConstraints(c2); - leftMostWindow = m_windowHelpButton; - } - - if (m_buttonFlags & wxPROP_BUTTON_CHECK_CROSS) - { -/* - if (!tickBitmap) - { -#ifdef __WXMSW__ - tickBitmap = new wxBitmap("tick_bmp", wxBITMAP_TYPE_RESOURCE); - crossBitmap = new wxBitmap("cross_bmp", wxBITMAP_TYPE_RESOURCE); - if (!tickBitmap || !crossBitmap || !tickBitmap->Ok() || !crossBitmap->Ok()) - { - if (tickBitmap) - delete tickBitmap; - if (crossBitmap) - delete crossBitmap; - tickBitmap = NULL; - crossBitmap = NULL; - } -#endif - } -*/ -/* - if (tickBitmap && crossBitmap) - { - m_confirmButton = new wxBitmapButton(panel, wxID_PROP_CHECK, tickBitmap, - wxPoint(-1, -1), wxSize(smallButtonWidth-5, smallButtonHeight-5)); - m_cancelButton = new wxBitmapButton(panel, wxID_PROP_CROSS, crossBitmap, - wxPoint(-1, -1), wxSize(smallButtonWidth-5, smallButtonHeight-5)); - } - else -*/ - { - m_confirmButton = new wxButton(panel, wxID_PROP_CHECK, ":-)", - wxPoint(-1, -1), wxSize(smallButtonWidth, smallButtonHeight)); - m_cancelButton = new wxButton(panel, wxID_PROP_CROSS, "X", - wxPoint(-1, -1), wxSize(smallButtonWidth, smallButtonHeight)); - } - - wxLayoutConstraints *c = new wxLayoutConstraints; - c->left.SameAs (panel, wxLeft, 2); -/* - if (windowCloseButton) - c->top.Below (m_windowCloseButton, 2); - else -*/ - c->top.SameAs (panel, wxTop, 2); - - c->width.AsIs(); - c->height.AsIs(); - - m_cancelButton->SetConstraints(c); - - c = new wxLayoutConstraints; - c->left.RightOf (m_cancelButton, 2); - c->top.SameAs (m_cancelButton, wxTop, 0); - c->width.AsIs(); - c->height.AsIs(); - - m_confirmButton->SetConstraints(c); - - m_cancelButton->Enable(FALSE); - m_confirmButton->Enable(FALSE); - } - - if (m_buttonFlags & wxPROP_PULLDOWN) - { - m_editButton = new wxButton(panel, wxID_PROP_EDIT, "...", - wxPoint(-1, -1), wxSize(smallButtonWidth, smallButtonHeight)); - m_editButton->Enable(FALSE); - wxLayoutConstraints *c = new wxLayoutConstraints; - -/* - if (m_windowCloseButton) - c->top.Below (m_windowCloseButton, 2); - else -*/ - c->top.SameAs (panel, wxTop, 2); - - c->right.SameAs (panel, wxRight, 2); - c->width.AsIs(); - c->height.AsIs(); - m_editButton->SetConstraints(c); - } - - m_valueText = new wxPropertyTextEdit(this, panel, wxID_PROP_TEXT, "", wxPoint(-1, -1), wxSize(-1, -1), wxPROCESS_ENTER); - m_valueText->Enable(FALSE); - - wxLayoutConstraints *c = new wxLayoutConstraints; - - if (m_cancelButton) - c->left.RightOf (m_confirmButton, 2); - else - c->left.SameAs (panel, wxLeft, 2); -/* - if (m_windowCloseButton) - c->top.Below (m_windowCloseButton, 2); - else -*/ - c->top.SameAs (panel, wxTop, 2); - - if (m_editButton) - c->right.LeftOf (m_editButton, 2); - else - c->right.SameAs (panel, wxRight, 2); - c->height.AsIs(); - - m_valueText->SetConstraints(c); - - m_valueList = new wxListBox(panel, wxID_PROP_VALUE_SELECT, wxPoint(-1, -1), wxSize(-1, 60)); - m_valueList->Show(FALSE); - - c = new wxLayoutConstraints; - - c->left.SameAs (panel, wxLeft, 2); - c->top.Below (m_valueText, 2); - c->right.SameAs (panel, wxRight, 2); - c->height.Absolute(60); - - m_valueList->SetConstraints(c); - - m_propertyScrollingList = new wxListBox(panel, wxID_PROP_SELECT, - wxPoint(-1, -1), wxSize(300, 300)); - m_propertyScrollingList->SetFont(* boringFont); - - c = new wxLayoutConstraints; - - c->left.SameAs (panel, wxLeft, 2); - - if (m_buttonFlags & wxPROP_DYNAMIC_VALUE_FIELD) - c->top.Below (m_valueText, 2); - else - c->top.Below (m_valueList, 2); - - c->right.SameAs (panel, wxRight, 2); - - if (m_windowCloseButton) - c->bottom.Above (m_windowCloseButton, -2); - else - c->bottom.SameAs (panel, wxBottom, 2); - - m_propertyScrollingList->SetConstraints(c); - - // Note: if this is called now, it causes a GPF. - // Why? -// panel->Layout(); - - return TRUE; -} - -void wxPropertyListView::ShowTextControl(bool show) -{ - if (m_valueText) - m_valueText->Show(show); -} - -void wxPropertyListView::ShowListBoxControl(bool show) -{ - if (m_valueList) - { - m_valueList->Show(show); - if (m_buttonFlags & wxPROP_DYNAMIC_VALUE_FIELD) - { - wxLayoutConstraints *constraints = m_propertyScrollingList->GetConstraints(); - if (constraints) - { - if (show) - { - constraints->top.Below(m_valueList, 2); - // Maintain back-pointer so when valueList is deleted, - // any reference to it from this window is removed. - m_valueList->AddConstraintReference(m_propertyScrollingList); - } - else - { - constraints->top.Below(m_valueText, 2); - m_valueText->AddConstraintReference(m_propertyScrollingList); - } - m_propertyWindow->Layout(); - } - } - } -} - -void wxPropertyListView::EnableCheck(bool show) -{ - if (m_confirmButton) - m_confirmButton->Enable(show); -} - -void wxPropertyListView::EnableCross(bool show) -{ - if (m_cancelButton) - m_cancelButton->Enable(show); -} - -bool wxPropertyListView::OnClose(void) -{ - // Retrieve the value if any - wxCommandEvent event; - OnCheck(event); - - delete this; - return TRUE; -} - -void wxPropertyListView::OnValueListSelect(wxCommandEvent& WXUNUSED(event)) -{ - if (m_currentProperty && m_currentValidator) - { - if (!m_currentValidator->IsKindOf(CLASSINFO(wxPropertyListValidator))) - return; - - wxPropertyListValidator *listValidator = (wxPropertyListValidator *)m_currentValidator; - - listValidator->OnValueListSelect(m_currentProperty, this, m_propertyWindow); - } -} - -void wxPropertyListView::OnOk(wxCommandEvent& event) -{ - // Retrieve the value if any - OnCheck(event); - - m_managedWindow->Close(TRUE); -} - -void wxPropertyListView::OnCancel(wxCommandEvent& WXUNUSED(event)) -{ -// SetReturnCode(wxID_CANCEL); - m_managedWindow->Close(TRUE); - sm_dialogCancelled = TRUE; -} - -void wxPropertyListView::OnHelp(wxCommandEvent& WXUNUSED(event)) -{ -} - -void wxPropertyListView::OnCheck(wxCommandEvent& WXUNUSED(event)) -{ - if (m_currentProperty) - { - RetrieveProperty(m_currentProperty); - } -} - -void wxPropertyListView::OnCross(wxCommandEvent& WXUNUSED(event)) -{ - if (m_currentProperty && m_currentValidator) - { - if (!m_currentValidator->IsKindOf(CLASSINFO(wxPropertyListValidator))) - return; - - wxPropertyListValidator *listValidator = (wxPropertyListValidator *)m_currentValidator; - - // Revert to old value - listValidator->OnDisplayValue(m_currentProperty, this, m_propertyWindow); - } -} - -void wxPropertyListView::OnPropertyDoubleClick(wxCommandEvent& WXUNUSED(event)) -{ - if (m_currentProperty && m_currentValidator) - { - if (!m_currentValidator->IsKindOf(CLASSINFO(wxPropertyListValidator))) - return; - - wxPropertyListValidator *listValidator = (wxPropertyListValidator *)m_currentValidator; - - // Revert to old value - listValidator->OnDoubleClick(m_currentProperty, this, m_propertyWindow); - } -} - -void wxPropertyListView::OnEdit(wxCommandEvent& WXUNUSED(event)) -{ - if (m_currentProperty && m_currentValidator) - { - if (!m_currentValidator->IsKindOf(CLASSINFO(wxPropertyListValidator))) - return; - - wxPropertyListValidator *listValidator = (wxPropertyListValidator *)m_currentValidator; - - listValidator->OnEdit(m_currentProperty, this, m_propertyWindow); - } -} - -void wxPropertyListView::OnText(wxCommandEvent& event) -{ - if (event.GetEventType() == wxEVT_COMMAND_TEXT_ENTER) - { - OnCheck(event); - } -} - -/* - * Property dialog box - */ - -IMPLEMENT_CLASS(wxPropertyListDialog, wxDialog) - -BEGIN_EVENT_TABLE(wxPropertyListDialog, wxDialog) - EVT_BUTTON(wxID_CANCEL, wxPropertyListDialog::OnCancel) -END_EVENT_TABLE() - -wxPropertyListDialog::wxPropertyListDialog(wxPropertyListView *v, wxWindow *parent, - const wxString& title, const wxPoint& pos, - const wxSize& size, long style, const wxString& name): - wxDialog(parent, -1, title, pos, size, style, name) -{ - m_view = v; - m_view->AssociatePanel( ((wxPanel*)this) ); - m_view->SetManagedWindow(this); - SetAutoLayout(TRUE); -} - -bool wxPropertyListDialog::OnClose(void) -{ - if (m_view) - { - SetReturnCode(wxID_CANCEL); - m_view->OnClose(); - m_view = NULL; - return TRUE; - } - else - return FALSE; -} - -void wxPropertyListDialog::OnCancel(wxCommandEvent& WXUNUSED(event)) -{ - SetReturnCode(wxID_CANCEL); - this->Close(); -} - -void wxPropertyListDialog::OnDefaultAction(wxControl *WXUNUSED(item)) -{ -/* - if (item == m_view->GetPropertyScrollingList()) - view->OnDoubleClick(); -*/ -} - -// Extend event processing to search the view's event table -bool wxPropertyListDialog::ProcessEvent(wxEvent& event) -{ - if ( !m_view || ! m_view->ProcessEvent(event) ) - return wxEvtHandler::ProcessEvent(event); - else - return TRUE; -} - -/* - * Property panel - */ - -IMPLEMENT_CLASS(wxPropertyListPanel, wxPanel) - -BEGIN_EVENT_TABLE(wxPropertyListPanel, wxPanel) - EVT_SIZE(wxPropertyListPanel::OnSize) -END_EVENT_TABLE() - -wxPropertyListPanel::~wxPropertyListPanel() -{ -} - -void wxPropertyListPanel::OnDefaultAction(wxControl *WXUNUSED(item)) -{ -/* - if (item == view->GetPropertyScrollingList()) - view->OnDoubleClick(); -*/ -} - -// Extend event processing to search the view's event table -bool wxPropertyListPanel::ProcessEvent(wxEvent& event) -{ - if ( !m_view || ! m_view->ProcessEvent(event) ) - return wxEvtHandler::ProcessEvent(event); - else - return TRUE; -} - -void wxPropertyListPanel::OnSize(wxSizeEvent& WXUNUSED(event)) -{ - Layout(); -} - -/* - * Property frame - */ - -IMPLEMENT_CLASS(wxPropertyListFrame, wxFrame) - -bool wxPropertyListFrame::OnClose(void) -{ - if (m_view) - { - if (m_propertyPanel) - m_propertyPanel->SetView(NULL); - m_view->OnClose(); - m_view = NULL; - return TRUE; - } - else - return FALSE; -} - -wxPropertyListPanel *wxPropertyListFrame::OnCreatePanel(wxFrame *parent, wxPropertyListView *v) -{ - return new wxPropertyListPanel(v, parent); -} - -bool wxPropertyListFrame::Initialize(void) -{ - m_propertyPanel = OnCreatePanel(this, m_view); - if (m_propertyPanel) - { - m_view->AssociatePanel(m_propertyPanel); - m_view->SetManagedWindow(this); - m_propertyPanel->SetAutoLayout(TRUE); - return TRUE; - } - else - return FALSE; -} - - /* - * Property list specific validator - */ - -IMPLEMENT_ABSTRACT_CLASS(wxPropertyListValidator, wxPropertyValidator) - -bool wxPropertyListValidator::OnSelect(bool select, wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow) -{ -// view->GetValueText()->Show(TRUE); - if (select) - OnDisplayValue(property, view, parentWindow); - - return TRUE; -} - -bool wxPropertyListValidator::OnValueListSelect(wxProperty *property, wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow)) -{ - wxString s(view->GetValueList()->GetStringSelection()); - if (s != "") - { - view->GetValueText()->SetValue(s); - view->RetrieveProperty(property); - } - return TRUE; -} - -bool wxPropertyListValidator::OnDisplayValue(wxProperty *property, wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow)) -{ -// view->GetValueText()->Show(TRUE); - wxString str(property->GetValue().GetStringRepresentation()); - - view->GetValueText()->SetValue(str); - return TRUE; -} - -// Called when TICK is pressed or focus is lost or view wants to update -// the property list. -// Does the transferance from the property editing area to the property itself -bool wxPropertyListValidator::OnRetrieveValue(wxProperty *WXUNUSED(property), wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow)) -{ - if (!view->GetValueText()) - return FALSE; - return FALSE; -} - -void wxPropertyListValidator::OnEdit(wxProperty *WXUNUSED(property), wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow)) -{ - if (view->GetDetailedEditing()) - view->EndDetailedEditing(); - else - view->BeginDetailedEditing(); -} - -bool wxPropertyListValidator::OnClearControls(wxProperty *WXUNUSED(property), wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow)) -{ - if (view->GetConfirmButton()) - view->GetConfirmButton()->Enable(FALSE); - if (view->GetCancelButton()) - view->GetCancelButton()->Enable(FALSE); - if (view->GetEditButton()) - view->GetEditButton()->Enable(FALSE); - return TRUE; -} - -/* - * Default validators - */ - -IMPLEMENT_DYNAMIC_CLASS(wxRealListValidator, wxPropertyListValidator) - -/// -/// Real number validator -/// -bool wxRealListValidator::OnCheckValue(wxProperty *WXUNUSED(property), wxPropertyListView *view, wxWindow *parentWindow) -{ - if (m_realMin == 0.0 && m_realMax == 0.0) - return TRUE; - - if (!view->GetValueText()) - return FALSE; - wxString value(view->GetValueText()->GetValue()); - - float val = 0.0; - if (!StringToFloat(WXSTRINGCAST value, &val)) - { - char buf[200]; - sprintf(buf, "Value %s is not a valid real number!", value.GetData()); - wxMessageBox(buf, "Property value error", wxOK | wxICON_EXCLAMATION, parentWindow); - return FALSE; - } - - if (val < m_realMin || val > m_realMax) - { - char buf[200]; - sprintf(buf, "Value must be a real number between %.2f and %.2f!", m_realMin, m_realMax); - wxMessageBox(buf, "Property value error", wxOK | wxICON_EXCLAMATION, parentWindow); - return FALSE; - } - return TRUE; -} - -// Called when TICK is pressed or focus is lost or view wants to update -// the property list. -// Does the transferance from the property editing area to the property itself -bool wxRealListValidator::OnRetrieveValue(wxProperty *property, wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow)) -{ - if (!view->GetValueText()) - return FALSE; - - if (strlen(view->GetValueText()->GetValue()) == 0) - return FALSE; - - wxString value(view->GetValueText()->GetValue()); - float f = (float)atof(value.GetData()); - property->GetValue() = f; - return TRUE; -} - -bool wxRealListValidator::OnPrepareControls(wxProperty *WXUNUSED(property), wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow)) -{ - if (view->GetConfirmButton()) - view->GetConfirmButton()->Enable(TRUE); - if (view->GetCancelButton()) - view->GetCancelButton()->Enable(TRUE); - if (view->GetEditButton()) - view->GetEditButton()->Enable(FALSE); - if (view->GetValueText()) - view->GetValueText()->Enable(TRUE); - return TRUE; -} - -/// -/// Integer validator -/// -IMPLEMENT_DYNAMIC_CLASS(wxIntegerListValidator, wxPropertyListValidator) - -bool wxIntegerListValidator::OnCheckValue(wxProperty *WXUNUSED(property), wxPropertyListView *view, wxWindow *parentWindow) -{ - if (m_integerMin == 0 && m_integerMax == 0) - return TRUE; - - if (!view->GetValueText()) - return FALSE; - wxString value(view->GetValueText()->GetValue()); - - long val = 0; - if (!StringToLong(WXSTRINGCAST value, &val)) - { - char buf[200]; - sprintf(buf, "Value %s is not a valid integer!", value.GetData()); - wxMessageBox(buf, "Property value error", wxOK | wxICON_EXCLAMATION, parentWindow); - return FALSE; - } - if (val < m_integerMin || val > m_integerMax) - { - char buf[200]; - sprintf(buf, "Value must be an integer between %ld and %ld!", m_integerMin, m_integerMax); - wxMessageBox(buf, "Property value error", wxOK | wxICON_EXCLAMATION, parentWindow); - return FALSE; - } - return TRUE; -} - -// Called when TICK is pressed or focus is lost or view wants to update -// the property list. -// Does the transferance from the property editing area to the property itself -bool wxIntegerListValidator::OnRetrieveValue(wxProperty *property, wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow)) -{ - if (!view->GetValueText()) - return FALSE; - - if (strlen(view->GetValueText()->GetValue()) == 0) - return FALSE; - - wxString value(view->GetValueText()->GetValue()); - long val = (long)atoi(value.GetData()); - property->GetValue() = (long)val; - return TRUE; -} - -bool wxIntegerListValidator::OnPrepareControls(wxProperty *WXUNUSED(property), wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow)) -{ - if (view->GetConfirmButton()) - view->GetConfirmButton()->Enable(TRUE); - if (view->GetCancelButton()) - view->GetCancelButton()->Enable(TRUE); - if (view->GetEditButton()) - view->GetEditButton()->Enable(FALSE); - if (view->GetValueText()) - view->GetValueText()->Enable(TRUE); - return TRUE; -} - -/// -/// boolean validator -/// -IMPLEMENT_DYNAMIC_CLASS(wxBoolListValidator, wxPropertyListValidator) - -bool wxBoolListValidator::OnCheckValue(wxProperty *WXUNUSED(property), wxPropertyListView *view, wxWindow *parentWindow) -{ - if (!view->GetValueText()) - return FALSE; - wxString value(view->GetValueText()->GetValue()); - if (value != "True" && value != "False") - { - wxMessageBox("Value must be True or False!", "Property value error", wxOK | wxICON_EXCLAMATION, parentWindow); - return FALSE; - } - return TRUE; -} - -// Called when TICK is pressed or focus is lost or view wants to update -// the property list. -// Does the transferance from the property editing area to the property itself -bool wxBoolListValidator::OnRetrieveValue(wxProperty *property, wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow)) -{ - if (!view->GetValueText()) - return FALSE; - - if (strlen(view->GetValueText()->GetValue()) == 0) - return FALSE; - - wxString value(view->GetValueText()->GetValue()); - bool boolValue = FALSE; - if (value == "True") - boolValue = TRUE; - else - boolValue = FALSE; - property->GetValue() = (bool)boolValue; - return TRUE; -} - -bool wxBoolListValidator::OnDisplayValue(wxProperty *property, wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow)) -{ - if (!view->GetValueText()) - return FALSE; - wxString str(property->GetValue().GetStringRepresentation()); - - view->GetValueText()->SetValue(str); - - if (view->GetValueList()->IsShown()) - { - view->GetValueList()->SetStringSelection(str); - } - return TRUE; -} - -bool wxBoolListValidator::OnPrepareControls(wxProperty *WXUNUSED(property), wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow)) -{ - if (view->GetConfirmButton()) - view->GetConfirmButton()->Enable(FALSE); - if (view->GetCancelButton()) - view->GetCancelButton()->Enable(FALSE); - if (view->GetEditButton()) - view->GetEditButton()->Enable(TRUE); - if (view->GetValueText()) - view->GetValueText()->Enable(FALSE); - return TRUE; -} - -bool wxBoolListValidator::OnPrepareDetailControls(wxProperty *WXUNUSED(property), wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow)) -{ - if (view->GetValueList()) - { - view->ShowListBoxControl(TRUE); - view->GetValueList()->Enable(TRUE); - - view->GetValueList()->Append("True"); - view->GetValueList()->Append("False"); - char *currentString = copystring(view->GetValueText()->GetValue()); - view->GetValueList()->SetStringSelection(currentString); - delete[] currentString; - } - return TRUE; -} - -bool wxBoolListValidator::OnClearDetailControls(wxProperty *WXUNUSED(property), wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow)) -{ - if (view->GetValueList()) - { - view->GetValueList()->Clear(); - view->ShowListBoxControl(FALSE); - view->GetValueList()->Enable(FALSE); - } - return TRUE; -} - -// Called when the property is double clicked. Extra functionality can be provided, -// cycling through possible values. -bool wxBoolListValidator::OnDoubleClick(wxProperty *property, wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow)) -{ - if (!view->GetValueText()) - return FALSE; - if (property->GetValue().BoolValue()) - property->GetValue() = (bool)FALSE; - else - property->GetValue() = (bool)TRUE; - view->DisplayProperty(property); - view->UpdatePropertyDisplayInList(property); - view->OnPropertyChanged(property); - return TRUE; -} - -/// -/// String validator -/// -IMPLEMENT_DYNAMIC_CLASS(wxStringListValidator, wxPropertyListValidator) - -wxStringListValidator::wxStringListValidator(wxStringList *list, long flags): - wxPropertyListValidator(flags) -{ - m_strings = list; - // If no constraint, we just allow the string to be edited. - if (!m_strings && ((m_validatorFlags & wxPROP_ALLOW_TEXT_EDITING) == 0)) - m_validatorFlags |= wxPROP_ALLOW_TEXT_EDITING; -} - -bool wxStringListValidator::OnCheckValue(wxProperty *WXUNUSED(property), wxPropertyListView *view, wxWindow *parentWindow) -{ - if (!m_strings) - return TRUE; - - if (!view->GetValueText()) - return FALSE; - wxString value(view->GetValueText()->GetValue()); - - if (!m_strings->Member(value.GetData())) - { - wxString s("Value "); - s += value.GetData(); - s += " is not valid."; - wxMessageBox(s.GetData(), "Property value error", wxOK | wxICON_EXCLAMATION, parentWindow); - return FALSE; - } - return TRUE; -} - -// Called when TICK is pressed or focus is lost or view wants to update -// the property list. -// Does the transferance from the property editing area to the property itself -bool wxStringListValidator::OnRetrieveValue(wxProperty *property, wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow)) -{ - if (!view->GetValueText()) - return FALSE; - wxString value(view->GetValueText()->GetValue()); - property->GetValue() = value ; - return TRUE; -} - -// Called when TICK is pressed or focus is lost or view wants to update -// the property list. -// Does the transferance from the property editing area to the property itself -bool wxStringListValidator::OnDisplayValue(wxProperty *property, wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow)) -{ - if (!view->GetValueText()) - return FALSE; - wxString str(property->GetValue().GetStringRepresentation()); - view->GetValueText()->SetValue(str); - if (m_strings && view->GetValueList() && view->GetValueList()->IsShown() && view->GetValueList()->Number() > 0) - { - view->GetValueList()->SetStringSelection(str); - } - return TRUE; -} - -bool wxStringListValidator::OnPrepareControls(wxProperty *WXUNUSED(property), wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow)) -{ - // Unconstrained - if (!m_strings) - { - if (view->GetEditButton()) - view->GetEditButton()->Enable(FALSE); - if (view->GetConfirmButton()) - view->GetConfirmButton()->Enable(TRUE); - if (view->GetCancelButton()) - view->GetCancelButton()->Enable(TRUE); - if (view->GetValueText()) - view->GetValueText()->Enable(TRUE); - return TRUE; - } - - // Constrained - if (view->GetValueText()) - view->GetValueText()->Enable(FALSE); - - if (view->GetEditButton()) - view->GetEditButton()->Enable(TRUE); - - if (view->GetConfirmButton()) - view->GetConfirmButton()->Enable(FALSE); - if (view->GetCancelButton()) - view->GetCancelButton()->Enable(FALSE); - return TRUE; -} - -bool wxStringListValidator::OnPrepareDetailControls(wxProperty *property, wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow)) -{ - if (view->GetValueList()) - { - view->ShowListBoxControl(TRUE); - view->GetValueList()->Enable(TRUE); - wxNode *node = m_strings->First(); - while (node) - { - char *s = (char *)node->Data(); - view->GetValueList()->Append(s); - node = node->Next(); - } - char *currentString = property->GetValue().StringValue(); - view->GetValueList()->SetStringSelection(currentString); - } - return TRUE; -} - -bool wxStringListValidator::OnClearDetailControls(wxProperty *WXUNUSED(property), wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow)) -{ - if (!m_strings) - { - return TRUE; - } - - if (view->GetValueList()) - { - view->GetValueList()->Clear(); - view->ShowListBoxControl(FALSE); - view->GetValueList()->Enable(FALSE); - } - return TRUE; -} - -// Called when the property is double clicked. Extra functionality can be provided, -// cycling through possible values. -bool wxStringListValidator::OnDoubleClick(wxProperty *property, wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow)) -{ - if (!view->GetValueText()) - return FALSE; - if (!m_strings) - return FALSE; - - wxNode *node = m_strings->First(); - char *currentString = property->GetValue().StringValue(); - while (node) - { - char *s = (char *)node->Data(); - if (strcmp(s, currentString) == 0) - { - char *nextString = NULL; - if (node->Next()) - nextString = (char *)node->Next()->Data(); - else - nextString = (char *)m_strings->First()->Data(); - property->GetValue() = wxString(nextString); - view->DisplayProperty(property); - view->UpdatePropertyDisplayInList(property); - view->OnPropertyChanged(property); - return TRUE; - } - else node = node->Next(); - } - return TRUE; -} - -/// -/// Filename validator -/// -IMPLEMENT_DYNAMIC_CLASS(wxFilenameListValidator, wxPropertyListValidator) - -wxFilenameListValidator::wxFilenameListValidator(wxString message , wxString wildcard, long flags): - wxPropertyListValidator(flags), m_filenameWildCard(wildcard), m_filenameMessage(message) -{ -} - -wxFilenameListValidator::~wxFilenameListValidator(void) -{ -} - -bool wxFilenameListValidator::OnCheckValue(wxProperty *WXUNUSED(property), wxPropertyListView *WXUNUSED(view), wxWindow *WXUNUSED(parentWindow)) -{ - return TRUE; -} - -// Called when TICK is pressed or focus is lost or view wants to update -// the property list. -// Does the transferance from the property editing area to the property itself -bool wxFilenameListValidator::OnRetrieveValue(wxProperty *property, wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow)) -{ - if (!view->GetValueText()) - return FALSE; - wxString value(view->GetValueText()->GetValue()); - property->GetValue() = value ; - return TRUE; -} - -// Called when TICK is pressed or focus is lost or view wants to update -// the property list. -// Does the transferance from the property editing area to the property itself -bool wxFilenameListValidator::OnDisplayValue(wxProperty *property, wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow)) -{ - if (!view->GetValueText()) - return FALSE; - wxString str(property->GetValue().GetStringRepresentation()); - view->GetValueText()->SetValue(str); - return TRUE; -} - -// Called when the property is double clicked. Extra functionality can be provided, -// cycling through possible values. -bool wxFilenameListValidator::OnDoubleClick(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow) -{ - if (!view->GetValueText()) - return FALSE; - OnEdit(property, view, parentWindow); - return TRUE; -} - -bool wxFilenameListValidator::OnPrepareControls(wxProperty *WXUNUSED(property), wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow)) -{ - if (view->GetConfirmButton()) - view->GetConfirmButton()->Enable(TRUE); - if (view->GetCancelButton()) - view->GetCancelButton()->Enable(TRUE); - if (view->GetEditButton()) - view->GetEditButton()->Enable(TRUE); - if (view->GetValueText()) - view->GetValueText()->Enable((GetFlags() & wxPROP_ALLOW_TEXT_EDITING) == wxPROP_ALLOW_TEXT_EDITING); - return TRUE; -} - -void wxFilenameListValidator::OnEdit(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow) -{ - if (!view->GetValueText()) - return; - - wxString s = wxFileSelector( - m_filenameMessage.GetData(), - wxPathOnly(property->GetValue().StringValue()), - wxFileNameFromPath(property->GetValue().StringValue()), - NULL, - m_filenameWildCard.GetData(), - 0, - parentWindow); - if (s != "") - { - property->GetValue() = s; - view->DisplayProperty(property); - view->UpdatePropertyDisplayInList(property); - view->OnPropertyChanged(property); - } -} - -/// -/// Colour validator -/// -IMPLEMENT_DYNAMIC_CLASS(wxColourListValidator, wxPropertyListValidator) - -wxColourListValidator::wxColourListValidator(long flags): - wxPropertyListValidator(flags) -{ -} - -wxColourListValidator::~wxColourListValidator(void) -{ -} - -bool wxColourListValidator::OnCheckValue(wxProperty *WXUNUSED(property), wxPropertyListView *WXUNUSED(view), wxWindow *WXUNUSED(parentWindow)) -{ - return TRUE; -} - -// Called when TICK is pressed or focus is lost or view wants to update -// the property list. -// Does the transferance from the property editing area to the property itself -bool wxColourListValidator::OnRetrieveValue(wxProperty *property, wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow)) -{ - if (!view->GetValueText()) - return FALSE; - wxString value(view->GetValueText()->GetValue()); - - property->GetValue() = value ; - return TRUE; -} - -// Called when TICK is pressed or focus is lost or view wants to update -// the property list. -// Does the transferance from the property editing area to the property itself -bool wxColourListValidator::OnDisplayValue(wxProperty *property, wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow)) -{ - if (!view->GetValueText()) - return FALSE; - wxString str(property->GetValue().GetStringRepresentation()); - view->GetValueText()->SetValue(str); - return TRUE; -} - -// Called when the property is double clicked. Extra functionality can be provided, -// cycling through possible values. -bool wxColourListValidator::OnDoubleClick(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow) -{ - if (!view->GetValueText()) - return FALSE; - OnEdit(property, view, parentWindow); - return TRUE; -} - -bool wxColourListValidator::OnPrepareControls(wxProperty *WXUNUSED(property), wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow)) -{ - if (view->GetConfirmButton()) - view->GetConfirmButton()->Enable(TRUE); - if (view->GetCancelButton()) - view->GetCancelButton()->Enable(TRUE); - if (view->GetEditButton()) - view->GetEditButton()->Enable(TRUE); - if (view->GetValueText()) - view->GetValueText()->Enable((GetFlags() & wxPROP_ALLOW_TEXT_EDITING) == wxPROP_ALLOW_TEXT_EDITING); - return TRUE; -} - -void wxColourListValidator::OnEdit(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow) -{ - if (!view->GetValueText()) - return; - - char *s = property->GetValue().StringValue(); - int r = 0; - int g = 0; - int b = 0; - if (s) - { - r = wxHexToDec(s); - g = wxHexToDec(s+2); - b = wxHexToDec(s+4); - } - - wxColour col(r,g,b); - - wxColourData data; - data.SetChooseFull(TRUE); - data.SetColour(col); - - for (int i = 0; i < 16; i++) - { - wxColour colour(i*16, i*16, i*16); - data.SetCustomColour(i, colour); - } - - wxColourDialog dialog(parentWindow, &data); - if (dialog.ShowModal() != wxID_CANCEL) - { - wxColourData retData = dialog.GetColourData(); - col = retData.GetColour(); - - char buf[7]; - wxDecToHex(col.Red(), buf); - wxDecToHex(col.Green(), buf+2); - wxDecToHex(col.Blue(), buf+4); - - property->GetValue() = wxString(buf); - view->DisplayProperty(property); - view->UpdatePropertyDisplayInList(property); - view->OnPropertyChanged(property); - } -} - -/// -/// List of strings validator. For this we need more user interface than -/// we get with a property list; so create a new dialog for editing the list. -/// -IMPLEMENT_DYNAMIC_CLASS(wxListOfStringsListValidator, wxPropertyListValidator) - -wxListOfStringsListValidator::wxListOfStringsListValidator(long flags): - wxPropertyListValidator(flags) -{ -} - -bool wxListOfStringsListValidator::OnCheckValue(wxProperty *WXUNUSED(property), wxPropertyListView *WXUNUSED(view), wxWindow *WXUNUSED(parentWindow)) -{ - // No constraints for an arbitrary, user-editable list of strings. - return TRUE; -} - -// Called when TICK is pressed or focus is lost or view wants to update -// the property list. -// Does the transferance from the property editing area to the property itself. -// In this case, the user cannot directly edit the string list. -bool wxListOfStringsListValidator::OnRetrieveValue(wxProperty *WXUNUSED(property), wxPropertyListView *WXUNUSED(view), wxWindow *WXUNUSED(parentWindow)) -{ - return TRUE; -} - -bool wxListOfStringsListValidator::OnDisplayValue(wxProperty *property, wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow)) -{ - if (!view->GetValueText()) - return FALSE; - wxString str(property->GetValue().GetStringRepresentation()); - view->GetValueText()->SetValue(str); - return TRUE; -} - -bool wxListOfStringsListValidator::OnPrepareControls(wxProperty *WXUNUSED(property), wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow)) -{ - if (view->GetEditButton()) - view->GetEditButton()->Enable(TRUE); - if (view->GetValueText()) - view->GetValueText()->Enable(FALSE); - - if (view->GetConfirmButton()) - view->GetConfirmButton()->Enable(FALSE); - if (view->GetCancelButton()) - view->GetCancelButton()->Enable(FALSE); - return TRUE; -} - -// Called when the property is double clicked. Extra functionality can be provided, -// cycling through possible values. -bool wxListOfStringsListValidator::OnDoubleClick(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow) -{ - OnEdit(property, view, parentWindow); - return TRUE; -} - -void wxListOfStringsListValidator::OnEdit(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow) -{ - // Convert property value to a list of strings for editing - wxStringList *stringList = new wxStringList; - - wxPropertyValue *expr = property->GetValue().GetFirst(); - while (expr) - { - char *s = expr->StringValue(); - if (s) - stringList->Add(s); - expr = expr->GetNext(); - } - - wxString title("Editing "); - title += property->GetName(); - - if (EditStringList(parentWindow, stringList, title.GetData())) - { - wxPropertyValue& oldValue = property->GetValue(); - oldValue.ClearList(); - wxNode *node = stringList->First(); - while (node) - { - char *s = (char *)node->Data(); - oldValue.Append(new wxPropertyValue(s)); - - node = node->Next(); - } - - view->DisplayProperty(property); - view->UpdatePropertyDisplayInList(property); - view->OnPropertyChanged(property); - } - delete stringList; -} - -class wxPropertyStringListEditorDialog: public wxDialog -{ - public: - wxPropertyStringListEditorDialog(wxWindow *parent, const wxString& title, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long windowStyle = wxDEFAULT_DIALOG_STYLE, const wxString& name = "stringEditorDialogBox"): - wxDialog(parent, -1, title, pos, size, windowStyle, name) - { - m_stringList = NULL; - m_stringText = NULL; - m_listBox = NULL; - sm_dialogCancelled = FALSE; - m_currentSelection = -1; - } - ~wxPropertyStringListEditorDialog(void) {} - bool OnClose(void); - void SaveCurrentSelection(void); - void ShowCurrentSelection(void); - - void OnOK(wxCommandEvent& event); - void OnCancel(wxCommandEvent& event); - void OnAdd(wxCommandEvent& event); - void OnDelete(wxCommandEvent& event); - void OnStrings(wxCommandEvent& event); - void OnText(wxCommandEvent& event); - -public: - wxStringList* m_stringList; - wxListBox* m_listBox; - wxTextCtrl* m_stringText; - static bool sm_dialogCancelled; - int m_currentSelection; -DECLARE_EVENT_TABLE() -}; - -#define wxID_PROP_SL_ADD 3000 -#define wxID_PROP_SL_DELETE 3001 -#define wxID_PROP_SL_STRINGS 3002 -#define wxID_PROP_SL_TEXT 3003 - -BEGIN_EVENT_TABLE(wxPropertyStringListEditorDialog, wxDialog) - EVT_BUTTON(wxID_OK, wxPropertyStringListEditorDialog::OnOK) - EVT_BUTTON(wxID_CANCEL, wxPropertyStringListEditorDialog::OnCancel) - EVT_BUTTON(wxID_PROP_SL_ADD, wxPropertyStringListEditorDialog::OnAdd) - EVT_BUTTON(wxID_PROP_SL_DELETE, wxPropertyStringListEditorDialog::OnDelete) - EVT_LISTBOX(wxID_PROP_SL_STRINGS, wxPropertyStringListEditorDialog::OnStrings) - EVT_TEXT_ENTER(wxID_PROP_SL_TEXT, wxPropertyStringListEditorDialog::OnText) -END_EVENT_TABLE() - -class wxPropertyStringListEditorText: public wxTextCtrl -{ - public: - wxPropertyStringListEditorText(wxWindow *parent, wxWindowID id, const wxString& val, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long windowStyle = 0, const wxString& name = "text"): - wxTextCtrl(parent, id, val, pos, size, windowStyle, wxDefaultValidator, name) - { - } - void OnKillFocus(void) - { - wxPropertyStringListEditorDialog *dialog = (wxPropertyStringListEditorDialog *)GetParent(); - dialog->SaveCurrentSelection(); - } -}; - -bool wxPropertyStringListEditorDialog::sm_dialogCancelled = FALSE; - -// Edit the string list. -bool wxListOfStringsListValidator::EditStringList(wxWindow *parent, wxStringList *stringList, const char *title) -{ - int largeButtonWidth = 60; - int largeButtonHeight = 25; - - wxBeginBusyCursor(); - wxPropertyStringListEditorDialog *dialog = new wxPropertyStringListEditorDialog(parent, - title, wxPoint(10, 10), wxSize(400, 400), wxDEFAULT_DIALOG_STYLE|wxDIALOG_MODAL); - - dialog->m_stringList = stringList; - - dialog->m_listBox = new wxListBox(dialog, wxID_PROP_SL_STRINGS, - wxPoint(-1, -1), wxSize(-1, -1), 0, NULL, wxLB_SINGLE); - - dialog->m_stringText = new wxPropertyStringListEditorText(dialog, - wxID_PROP_SL_TEXT, "", wxPoint(5, 240), - wxSize(300, -1), wxPROCESS_ENTER); - dialog->m_stringText->Enable(FALSE); - - wxButton *addButton = new wxButton(dialog, wxID_PROP_SL_ADD, "Add", wxPoint(-1, -1), wxSize(largeButtonWidth, largeButtonHeight)); - wxButton *deleteButton = new wxButton(dialog, wxID_PROP_SL_DELETE, "Delete", wxPoint(-1, -1), wxSize(largeButtonWidth, largeButtonHeight)); - wxButton *cancelButton = new wxButton(dialog, wxID_CANCEL, "Cancel", wxPoint(-1, -1), wxSize(largeButtonWidth, largeButtonHeight)); - wxButton *okButton = new wxButton(dialog, wxID_OK, "OK", wxPoint(-1, -1), wxSize(largeButtonWidth, largeButtonHeight)); - - okButton->SetDefault(); - - wxLayoutConstraints *c = new wxLayoutConstraints; - - c->top.SameAs (dialog, wxTop, 2); - c->left.SameAs (dialog, wxLeft, 2); - c->right.SameAs (dialog, wxRight, 2); - c->bottom.SameAs (dialog->m_stringText, wxTop, 2); - dialog->m_listBox->SetConstraints(c); - - c = new wxLayoutConstraints; - c->left.SameAs (dialog, wxLeft, 2); - c->right.SameAs (dialog, wxRight, 2); - c->bottom.SameAs (addButton, wxTop, 2); - c->height.AsIs(); - dialog->m_stringText->SetConstraints(c); - - c = new wxLayoutConstraints; - c->bottom.SameAs (dialog, wxBottom, 2); - c->left.SameAs (dialog, wxLeft, 2); - c->width.AsIs(); - c->height.AsIs(); - addButton->SetConstraints(c); - - c = new wxLayoutConstraints; - c->bottom.SameAs (dialog, wxBottom, 2); - c->left.SameAs (addButton, wxRight, 2); - c->width.AsIs(); - c->height.AsIs(); - deleteButton->SetConstraints(c); - - c = new wxLayoutConstraints; - c->bottom.SameAs (dialog, wxBottom, 2); - c->right.SameAs (dialog, wxRight, 2); - c->width.AsIs(); - c->height.AsIs(); - cancelButton->SetConstraints(c); - - c = new wxLayoutConstraints; - c->bottom.SameAs (dialog, wxBottom, 2); - c->right.SameAs (cancelButton, wxLeft, 2); - c->width.AsIs(); - c->height.AsIs(); - okButton->SetConstraints(c); - - wxNode *node = stringList->First(); - while (node) - { - char *str = (char *)node->Data(); - // Save node as client data for each listbox item - dialog->m_listBox->Append(str, (char *)node); - node = node->Next(); - } - - dialog->SetClientSize(310, 305); - dialog->Layout(); - - dialog->Centre(wxBOTH); - wxEndBusyCursor(); - if (dialog->ShowModal() == wxID_CANCEL) - return FALSE; - else - return TRUE; -} - -/* - * String list editor callbacks - * - */ - -void wxPropertyStringListEditorDialog::OnStrings(wxCommandEvent& WXUNUSED(event)) -{ - int sel = m_listBox->GetSelection(); - if (sel > -1) - { - m_currentSelection = sel; - - ShowCurrentSelection(); - } -} - -void wxPropertyStringListEditorDialog::OnDelete(wxCommandEvent& WXUNUSED(event)) -{ - int sel = m_listBox->GetSelection(); - if (sel == -1) - return; - - wxNode *node = (wxNode *)m_listBox->wxListBox::GetClientData(sel); - if (!node) - return; - - m_listBox->Delete(sel); - delete[] (char *)node->Data(); - delete node; - m_currentSelection = -1; - m_stringText->SetValue(""); -} - -void wxPropertyStringListEditorDialog::OnAdd(wxCommandEvent& WXUNUSED(event)) -{ - SaveCurrentSelection(); - - char *initialText = ""; - wxNode *node = m_stringList->Add(initialText); - m_listBox->Append(initialText, (char *)node); - m_currentSelection = m_stringList->Number() - 1; - m_listBox->SetSelection(m_currentSelection); - ShowCurrentSelection(); - m_stringText->SetFocus(); -} - -void wxPropertyStringListEditorDialog::OnOK(wxCommandEvent& WXUNUSED(event)) -{ - SaveCurrentSelection(); - EndModal(wxID_OK); - Close(TRUE); -} - -void wxPropertyStringListEditorDialog::OnCancel(wxCommandEvent& WXUNUSED(event)) -{ - sm_dialogCancelled = TRUE; - EndModal(wxID_CANCEL); - Close(TRUE); -} - -void wxPropertyStringListEditorDialog::OnText(wxCommandEvent& event) -{ - if (event.GetEventType() == wxEVT_COMMAND_TEXT_ENTER) - { - SaveCurrentSelection(); - } -} - -bool wxPropertyStringListEditorDialog::OnClose(void) -{ - SaveCurrentSelection(); - return TRUE; -} - -void wxPropertyStringListEditorDialog::SaveCurrentSelection(void) -{ - if (m_currentSelection == -1) - return; - - wxNode *node = (wxNode *)m_listBox->wxListBox::GetClientData(m_currentSelection); - if (!node) - return; - - wxString txt(m_stringText->GetValue()); - if (node->Data()) - delete[] (char *)node->Data(); - node->SetData((wxObject *)copystring(txt)); - - m_listBox->SetString(m_currentSelection, (char *)node->Data()); -} - -void wxPropertyStringListEditorDialog::ShowCurrentSelection(void) -{ - if (m_currentSelection == -1) - { - m_stringText->SetValue(""); - return; - } - wxNode *node = (wxNode *)m_listBox->wxListBox::GetClientData(m_currentSelection); - char *txt = (char *)node->Data(); - m_stringText->SetValue(txt); - m_stringText->Enable(TRUE); -} - diff --git a/src/generic/sashwin.cpp b/src/generic/sashwin.cpp deleted file mode 100644 index 35dc510806..0000000000 --- a/src/generic/sashwin.cpp +++ /dev/null @@ -1,610 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: sashwin.cpp -// Purpose: wxSashWindow implementation. A sash window has an optional -// sash on each edge, allowing it to be dragged. An event -// is generated when the sash is released. -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "sashwin.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include -#include - -#include "wx/string.h" -#include "wx/dcscreen.h" -#include "wx/sashwin.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxSashWindow, wxWindow) -IMPLEMENT_DYNAMIC_CLASS(wxSashEvent, wxCommandEvent) - -BEGIN_EVENT_TABLE(wxSashWindow, wxWindow) - EVT_PAINT(wxSashWindow::OnPaint) - EVT_SIZE(wxSashWindow::OnSize) - EVT_MOUSE_EVENTS(wxSashWindow::OnMouseEvent) -END_EVENT_TABLE() -#endif - -wxSashWindow::wxSashWindow() -{ - m_draggingEdge = wxSASH_NONE; - m_dragMode = wxSASH_DRAG_NONE; - m_oldX = 0; - m_oldY = 0; - m_firstX = 0; - m_firstY = 0; - m_borderSize = 3 ; - m_extraBorderSize = 0; - m_sashCursorWE = NULL; - m_sashCursorNS = NULL; - - m_minimumPaneSizeX = 0; - m_minimumPaneSizeY = 0; - m_maximumPaneSizeX = 10000; - m_maximumPaneSizeY = 10000; -} - -wxSashWindow::wxSashWindow(wxWindow *parent, wxWindowID id, const wxPoint& pos, - const wxSize& size, long style, const wxString& name) - :wxWindow(parent, id, pos, size, style, name) -{ - m_draggingEdge = wxSASH_NONE; - m_dragMode = wxSASH_DRAG_NONE; - m_oldX = 0; - m_oldY = 0; - m_firstX = 0; - m_firstY = 0; - m_borderSize = 3; - m_extraBorderSize = 0; - m_minimumPaneSizeX = 0; - m_minimumPaneSizeY = 0; - m_maximumPaneSizeX = 10000; - m_maximumPaneSizeY = 10000; - m_sashCursorWE = new wxCursor(wxCURSOR_SIZEWE); - m_sashCursorNS = new wxCursor(wxCURSOR_SIZENS); - - // Eventually, we'll respond to colour change messages - InitColours(); -} - -wxSashWindow::~wxSashWindow() -{ - delete m_sashCursorWE; - delete m_sashCursorNS; -} - -void wxSashWindow::OnPaint(wxPaintEvent& WXUNUSED(event)) -{ - wxPaintDC dc(this); - - // if ( m_borderSize > 0 ) - DrawBorders(dc); - - DrawSashes(dc); -} - -void wxSashWindow::OnMouseEvent(wxMouseEvent& event) -{ - long x, y; - event.Position(&x, &y); - - wxSashEdgePosition sashHit = SashHitTest(x, y); - - if (event.LeftDown()) - { - if ( sashHit != wxSASH_NONE ) - { - CaptureMouse(); - - // Required for X to specify that - // that we wish to draw on top of all windows - // - and we optimise by specifying the area - // for creating the overlap window. - // Find the first frame or dialog and use this to specify - // the area to draw on. - wxWindow* parent = this; - - while (parent && !parent->IsKindOf(CLASSINFO(wxDialog)) && - !parent->IsKindOf(CLASSINFO(wxFrame))) - parent = parent->GetParent(); - - wxScreenDC::StartDrawingOnTop(parent); - - // We don't say we're dragging yet; we leave that - // decision for the Dragging() branch, to ensure - // the user has dragged a little bit. - m_dragMode = wxSASH_DRAG_LEFT_DOWN; - m_draggingEdge = sashHit; - m_firstX = x; - m_firstY = y; - } - } - else if ( event.LeftUp() && m_dragMode == wxSASH_DRAG_LEFT_DOWN ) - { - // Wasn't a proper drag - ReleaseMouse(); - wxScreenDC::EndDrawingOnTop(); - m_dragMode = wxSASH_DRAG_NONE; - m_draggingEdge = wxSASH_NONE; - - SetCursor(*wxSTANDARD_CURSOR); - } - else if (event.LeftUp() && m_dragMode == wxSASH_DRAG_DRAGGING) - { - // We can stop dragging now and see what we've got. - m_dragMode = wxSASH_DRAG_NONE; - ReleaseMouse(); - // Erase old tracker - DrawSashTracker(m_draggingEdge, m_oldX, m_oldY); - - // End drawing on top (frees the window used for drawing - // over the screen) - wxScreenDC::EndDrawingOnTop(); - - int w, h; - GetSize(&w, &h); - int xp, yp; - GetPosition(&xp, &yp); - - wxSashEdgePosition edge = m_draggingEdge; - m_draggingEdge = wxSASH_NONE; - - wxRect dragRect; - wxSashDragStatus status = wxSASH_STATUS_OK; - switch (edge) - { - case wxSASH_TOP: - { - if (y > (yp + h)) - status = wxSASH_STATUS_OUT_OF_RANGE; - int newHeight = (h - y); - newHeight=wxMax(newHeight,m_minimumPaneSizeY); - newHeight=wxMin(newHeight,m_maximumPaneSizeY); - dragRect = wxRect(xp, (yp + h) - newHeight, w, newHeight); - break; - } - case wxSASH_BOTTOM: - { - if (y < 0) - status = wxSASH_STATUS_OUT_OF_RANGE; - int newHeight = y; - newHeight=wxMax(newHeight,m_minimumPaneSizeY); - newHeight=wxMin(newHeight,m_maximumPaneSizeY); - dragRect = wxRect(xp, yp, w, newHeight); - break; - } - case wxSASH_LEFT: - { - if (x > (xp + w)) - status = wxSASH_STATUS_OUT_OF_RANGE; - int newWidth = (w - x); - newWidth=wxMax(newWidth,m_minimumPaneSizeX); - newWidth=wxMin(newWidth,m_maximumPaneSizeX); - dragRect = wxRect((xp + w) - newWidth, yp, newWidth, h); - break; - } - case wxSASH_RIGHT: - { - if (x < 0) - status = wxSASH_STATUS_OUT_OF_RANGE; - int newWidth = x; - newWidth=wxMax(newWidth,m_minimumPaneSizeX); - newWidth=wxMin(newWidth,m_maximumPaneSizeX); - dragRect = wxRect(xp, yp, newWidth, h); - break; - } - case wxSASH_NONE: - { - break; - } - } - - wxSashEvent event(GetId(), edge); - event.SetEventObject(this); - event.SetDragStatus(status); - event.SetDragRect(dragRect); - GetEventHandler()->ProcessEvent(event); - } - else if (event.Moving() && !event.Dragging()) - { - // Just change the cursor if required - if ( sashHit != wxSASH_NONE ) - { - if ( (sashHit == wxSASH_LEFT) || (sashHit == wxSASH_RIGHT) ) - { - SetCursor(*m_sashCursorWE); - } - else - { - SetCursor(*m_sashCursorNS); - } - } - else - { - SetCursor(*wxSTANDARD_CURSOR); - } - } - else if ( event.Dragging() && - ((m_dragMode == wxSASH_DRAG_DRAGGING) || (m_dragMode == wxSASH_DRAG_LEFT_DOWN)) - ) - { - if ( (m_draggingEdge == wxSASH_LEFT) || (m_draggingEdge == wxSASH_RIGHT) ) - { - SetCursor(*m_sashCursorWE); - } - else - { - SetCursor(*m_sashCursorNS); - } - - if (m_dragMode == wxSASH_DRAG_LEFT_DOWN) - { - m_dragMode = wxSASH_DRAG_DRAGGING; - DrawSashTracker(m_draggingEdge, x, y); - } - else - { - if ( m_dragMode == wxSASH_DRAG_DRAGGING ) - { - // Erase old tracker - DrawSashTracker(m_draggingEdge, m_oldX, m_oldY); - - // Draw new one - DrawSashTracker(m_draggingEdge, x, y); - } - } - m_oldX = x; - m_oldY = y; - } - else if ( event.LeftDClick() ) - { - // Nothing - } - else - { - } -} - -void wxSashWindow::OnSize(wxSizeEvent& WXUNUSED(event)) -{ - SizeWindows(); -} - -wxSashEdgePosition wxSashWindow::SashHitTest(int x, int y, int WXUNUSED(tolerance)) -{ - int cx, cy; - GetClientSize(& cx, & cy); - - int i; - for (i = 0; i < 4; i++) - { - wxSashEdge& edge = m_sashes[i]; - wxSashEdgePosition position = (wxSashEdgePosition) i ; - - if (edge.m_show) - { - switch (position) - { - case wxSASH_TOP: - { - if (y >= 0 && y <= GetEdgeMargin(position)) - return wxSASH_TOP; - break; - } - case wxSASH_RIGHT: - { - if ((x >= cx - GetEdgeMargin(position)) && (x <= cx)) - return wxSASH_RIGHT; - break; - } - case wxSASH_BOTTOM: - { - if ((y >= cy - GetEdgeMargin(position)) && (y <= cy)) - return wxSASH_BOTTOM; - break; - } - case wxSASH_LEFT: - { - if ((x <= GetEdgeMargin(position)) && (x >= 0)) - return wxSASH_LEFT; - break; - } - case wxSASH_NONE: - { - break; - } - } - } - } - return wxSASH_NONE; -} - -// Draw 3D effect borders -void wxSashWindow::DrawBorders(wxDC& dc) -{ - int w, h; - GetClientSize(&w, &h); - - wxPen mediumShadowPen(m_mediumShadowColour, 1, wxSOLID); - wxPen darkShadowPen(m_darkShadowColour, 1, wxSOLID); - wxPen lightShadowPen(m_lightShadowColour, 1, wxSOLID); - wxPen hilightPen(m_hilightColour, 1, wxSOLID); - - if ( GetWindowStyleFlag() & wxSP_3D ) - { - dc.SetPen(mediumShadowPen); - dc.DrawLine(0, 0, w-1, 0); - dc.DrawLine(0, 0, 0, h - 1); - - dc.SetPen(darkShadowPen); - dc.DrawLine(1, 1, w-2, 1); - dc.DrawLine(1, 1, 1, h-2); - - dc.SetPen(hilightPen); - dc.DrawLine(0, h-1, w-1, h-1); - dc.DrawLine(w-1, 0, w-1, h); // Surely the maximum y pos. should be h - 1. - /// Anyway, h is required for MSW. - - dc.SetPen(lightShadowPen); - dc.DrawLine(w-2, 1, w-2, h-2); // Right hand side - dc.DrawLine(1, h-2, w-1, h-2); // Bottom - } - else if ( GetWindowStyleFlag() & wxSP_BORDER ) - { - dc.SetBrush(*wxTRANSPARENT_BRUSH); - dc.SetPen(*wxBLACK_PEN); - dc.DrawRectangle(0, 0, w-1, h-1); - } - - dc.SetPen(wxNullPen); - dc.SetBrush(wxNullBrush); -} - -void wxSashWindow::DrawSashes(wxDC& dc) -{ - int i; - for (i = 0; i < 4; i++) - if (m_sashes[i].m_show) - DrawSash((wxSashEdgePosition) i, dc); -} - -// Draw the sash -void wxSashWindow::DrawSash(wxSashEdgePosition edge, wxDC& dc) -{ - int w, h; - GetClientSize(&w, &h); - - wxPen facePen(m_faceColour, 1, wxSOLID); - wxBrush faceBrush(m_faceColour, wxSOLID); - wxPen mediumShadowPen(m_mediumShadowColour, 1, wxSOLID); - wxPen darkShadowPen(m_darkShadowColour, 1, wxSOLID); - wxPen lightShadowPen(m_lightShadowColour, 1, wxSOLID); - wxPen hilightPen(m_hilightColour, 1, wxSOLID); - wxPen blackPen(wxColour(0, 0, 0), 1, wxSOLID); - wxPen whitePen(wxColour(255, 255, 255), 1, wxSOLID); - - if ( edge == wxSASH_LEFT || edge == wxSASH_RIGHT ) - { - int sashPosition = 0; - if (edge == wxSASH_LEFT) - sashPosition = 0; - else - sashPosition = w - GetEdgeMargin(edge); - - dc.SetPen(facePen); - dc.SetBrush(faceBrush); - dc.DrawRectangle(sashPosition, 0, GetEdgeMargin(edge), h); - - if (GetWindowStyleFlag() & wxSW_3D) - { - if (edge == wxSASH_LEFT) - { - // Draw a black line on the left to indicate that the - // sash is raised - dc.SetPen(blackPen); - dc.DrawLine(GetEdgeMargin(edge), 0, GetEdgeMargin(edge), h); - } - else - { - // Draw a white line on the right to indicate that the - // sash is raised - dc.SetPen(whitePen); - dc.DrawLine(w - GetEdgeMargin(edge), 0, w - GetEdgeMargin(edge), h); - } - } - } - else // top or bottom - { - int sashPosition = 0; - if (edge == wxSASH_TOP) - sashPosition = 0; - else - sashPosition = h - GetEdgeMargin(edge); - - dc.SetPen(facePen); - dc.SetBrush(faceBrush); - dc.DrawRectangle(0, sashPosition, w, GetEdgeMargin(edge)); - - if (GetWindowStyleFlag() & wxSW_3D) - { - if (edge == wxSASH_BOTTOM) - { - // Draw a black line on the bottom to indicate that the - // sash is raised - dc.SetPen(blackPen); - dc.DrawLine(0, h - GetEdgeMargin(edge), w, h - GetEdgeMargin(edge)); - } - else - { - // Draw a white line on the top to indicate that the - // sash is raised - dc.SetPen(whitePen); - dc.DrawLine(0, GetEdgeMargin(edge), w, GetEdgeMargin(edge)); - } - } - } - - dc.SetPen(wxNullPen); - dc.SetBrush(wxNullBrush); -} - -// Draw the sash tracker (for whilst moving the sash) -void wxSashWindow::DrawSashTracker(wxSashEdgePosition edge, int x, int y) -{ - int w, h; - GetClientSize(&w, &h); - - wxScreenDC screenDC; - int x1, y1; - int x2, y2; - - if ( edge == wxSASH_LEFT || edge == wxSASH_RIGHT ) - { - x1 = x; y1 = 2; - x2 = x; y2 = h-2; - - if ( (edge == wxSASH_LEFT) && (x1 > w) ) - { - x1 = w; x2 = w; - } - else if ( (edge == wxSASH_RIGHT) && (x1 < 0) ) - { - x1 = 0; x2 = 0; - } - } - else - { - x1 = 2; y1 = y; - x2 = w-2; y2 = y; - - if ( (edge == wxSASH_TOP) && (y1 > h) ) - { - y1 = h; - y2 = h; - } - else if ( (edge == wxSASH_BOTTOM) && (y1 < 0) ) - { - y1 = 0; - y2 = 0; - } - } - - ClientToScreen(&x1, &y1); - ClientToScreen(&x2, &y2); - - wxPen sashTrackerPen(*wxBLACK, 2, wxSOLID); - - screenDC.SetLogicalFunction(wxXOR); - screenDC.SetPen(sashTrackerPen); - screenDC.SetBrush(*wxTRANSPARENT_BRUSH); - - screenDC.DrawLine(x1, y1, x2, y2); - - screenDC.SetLogicalFunction(wxCOPY); - - screenDC.SetPen(wxNullPen); - screenDC.SetBrush(wxNullBrush); -} - -// Position and size subwindows. -// Note that the border size applies to each subwindow, not -// including the edges next to the sash. -void wxSashWindow::SizeWindows() -{ - int cw, ch; - GetClientSize(&cw, &ch); - - if (GetChildren().Number() > 0) - { - wxWindow* child = (wxWindow*) (GetChildren().First()->Data()); - - int x = 0; - int y = 0; - int width = cw; - int height = ch; - - // Top - if (m_sashes[0].m_show) - { - y = m_borderSize; - height -= m_borderSize; - } - y += m_extraBorderSize; - - // Left - if (m_sashes[3].m_show) - { - x = m_borderSize; - width -= m_borderSize; - } - x += m_extraBorderSize; - - // Right - if (m_sashes[1].m_show) - { - width -= m_borderSize; - } - width -= 2*m_extraBorderSize; - - // Bottom - if (m_sashes[2].m_show) - { - height -= m_borderSize; - } - height -= 2*m_extraBorderSize; - - child->SetSize(x, y, width, height); - } - - wxClientDC dc(this); - DrawBorders(dc); - DrawSashes(dc); -} - -// Initialize colours -void wxSashWindow::InitColours() -{ - // Shadow colours -#if defined(__WIN95__) - m_faceColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE); - m_mediumShadowColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DSHADOW); - m_darkShadowColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DDKSHADOW); - m_lightShadowColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DLIGHT); - m_hilightColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DHILIGHT); -#else - m_faceColour = *(wxTheColourDatabase->FindColour("LIGHT GREY")); - m_mediumShadowColour = *(wxTheColourDatabase->FindColour("GREY")); - m_darkShadowColour = *(wxTheColourDatabase->FindColour("BLACK")); - m_lightShadowColour = *(wxTheColourDatabase->FindColour("LIGHT GREY")); - m_hilightColour = *(wxTheColourDatabase->FindColour("WHITE")); -#endif -} - -void wxSashWindow::SetSashVisible(wxSashEdgePosition edge, bool sash) -{ - m_sashes[edge].m_show = sash; - if (sash) - m_sashes[edge].m_margin = m_borderSize; - else - m_sashes[edge].m_margin = 0; -} - diff --git a/src/generic/scrolwin.cpp b/src/generic/scrolwin.cpp deleted file mode 100644 index 2a2eeb014c..0000000000 --- a/src/generic/scrolwin.cpp +++ /dev/null @@ -1,460 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: scrolwin.cpp -// Purpose: wxScrolledWindow implementation -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation -#pragma implementation "scrolwin.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#include "wx/utils.h" -#include "wx/dcclient.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#include "wx/generic/scrolwin.h" - -#if !USE_SHARED_LIBRARY -BEGIN_EVENT_TABLE(wxScrolledWindow, wxWindow) - EVT_SCROLL(wxScrolledWindow::OnScroll) - EVT_SIZE(wxScrolledWindow::OnSize) - EVT_PAINT(wxScrolledWindow::OnPaint) -END_EVENT_TABLE() - -IMPLEMENT_DYNAMIC_CLASS(wxScrolledWindow, wxWindow) -#endif - -#ifdef __WXMSW__ -#include "windows.h" -#endif - -wxScrolledWindow::wxScrolledWindow(void) -{ - m_xScrollPixelsPerLine = 0; - m_yScrollPixelsPerLine = 0; - m_xScrollingEnabled = TRUE; - m_yScrollingEnabled = TRUE; - m_xScrollPosition = 0; - m_yScrollPosition = 0; - m_xScrollLines = 0; - m_yScrollLines = 0; - m_xScrollLinesPerPage = 0; - m_yScrollLinesPerPage = 0; - m_scaleX = 1.0; - m_scaleY = 1.0; -} - -bool wxScrolledWindow::Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - m_xScrollPixelsPerLine = 0; - m_yScrollPixelsPerLine = 0; - m_xScrollingEnabled = TRUE; - m_yScrollingEnabled = TRUE; - m_xScrollPosition = 0; - m_yScrollPosition = 0; - m_xScrollLines = 0; - m_yScrollLines = 0; - m_xScrollLinesPerPage = 0; - m_yScrollLinesPerPage = 0; - m_scaleX = 1.0; - m_scaleY = 1.0; - - return wxWindow::Create(parent, id, pos, size, style, name); -} - -/* - * pixelsPerUnitX/pixelsPerUnitY: number of pixels per unit (e.g. pixels per text line) - * noUnitsX/noUnitsY: : no. units per scrollbar - */ -void wxScrolledWindow::SetScrollbars (int pixelsPerUnitX, int pixelsPerUnitY, - int noUnitsX, int noUnitsY, - int xPos, int yPos, bool noRefresh ) -{ - bool do_refresh = - ( - (noUnitsX != 0 && m_xScrollLines == 0) || - (noUnitsX < m_xScrollPosition) || - (noUnitsY != 0 && m_yScrollLines == 0) || - (noUnitsY < m_yScrollPosition) || - (xPos != m_xScrollPosition) || - (yPos != m_yScrollPosition) || - (pixelsPerUnitX != m_xScrollPixelsPerLine) || - (pixelsPerUnitY != m_yScrollPixelsPerLine) - ); - - m_xScrollPixelsPerLine = pixelsPerUnitX; - m_yScrollPixelsPerLine = pixelsPerUnitY; - m_xScrollPosition = xPos; - m_yScrollPosition = yPos; - m_xScrollLines = noUnitsX; - m_yScrollLines = noUnitsY; - - AdjustScrollbars(); - - if (do_refresh && !noRefresh) Refresh(); - -#ifdef __WXMSW__ - // Necessary? - UpdateWindow ((HWND) GetHWND()); -#endif -} - -void wxScrolledWindow::OnScroll(wxScrollEvent& event) -{ - int orient = event.GetOrientation(); - - int nScrollInc = CalcScrollInc(event); - if (nScrollInc == 0) return; - - if (orient == wxHORIZONTAL) - { - int newPos = m_xScrollPosition + nScrollInc; - SetScrollPos(wxHORIZONTAL, newPos, TRUE ); - } - else - { - int newPos = m_yScrollPosition + nScrollInc; - SetScrollPos(wxVERTICAL, newPos, TRUE ); - } - - if (orient == wxHORIZONTAL) - { - m_xScrollPosition += nScrollInc; - } - else - { - m_yScrollPosition += nScrollInc; - } - - if (orient == wxHORIZONTAL) - { - if (m_xScrollingEnabled) - ScrollWindow(-m_xScrollPixelsPerLine * nScrollInc, 0, (const wxRect *) NULL); - else - Refresh(); - } - else - { - if (m_yScrollingEnabled) - ScrollWindow(0, -m_yScrollPixelsPerLine * nScrollInc, (const wxRect *) NULL); - else - Refresh(); - } -} - -int wxScrolledWindow::CalcScrollInc(wxScrollEvent& event) -{ - int pos = event.GetPosition(); - int orient = event.GetOrientation(); - - int nScrollInc = 0; - switch (event.GetEventType()) - { - case wxEVT_SCROLL_TOP: - { - if (orient == wxHORIZONTAL) - nScrollInc = - m_xScrollPosition; - else - nScrollInc = - m_yScrollPosition; - break; - } - case wxEVT_SCROLL_BOTTOM: - { - if (orient == wxHORIZONTAL) - nScrollInc = m_xScrollLines - m_xScrollPosition; - else - nScrollInc = m_yScrollLines - m_yScrollPosition; - break; - } - case wxEVT_SCROLL_LINEUP: - { - nScrollInc = -1; - break; - } - case wxEVT_SCROLL_LINEDOWN: - { - nScrollInc = 1; - break; - } - case wxEVT_SCROLL_PAGEUP: - { - if (orient == wxHORIZONTAL) - nScrollInc = -GetScrollPageSize(wxHORIZONTAL); - else - nScrollInc = -GetScrollPageSize(wxVERTICAL); - break; - } - case wxEVT_SCROLL_PAGEDOWN: - { - if (orient == wxHORIZONTAL) - nScrollInc = GetScrollPageSize(wxHORIZONTAL); - else - nScrollInc = GetScrollPageSize(wxVERTICAL); - break; - } - case wxEVT_SCROLL_THUMBTRACK: - { - if (orient == wxHORIZONTAL) - nScrollInc = pos - m_xScrollPosition; - else - nScrollInc = pos - m_yScrollPosition; - break; - } - default: - { - break; - } - } - - if (orient == wxHORIZONTAL) - { - if (m_xScrollPixelsPerLine > 0) { - int w, h; - GetClientSize(&w, &h); - - int nMaxWidth = m_xScrollLines*m_xScrollPixelsPerLine; - int noPositions = (int) ( ((nMaxWidth - w)/(float)m_xScrollPixelsPerLine) + 0.5 ); - if (noPositions < 0) - noPositions = 0; - - if ( (m_xScrollPosition + nScrollInc) < 0 ) - nScrollInc = -m_xScrollPosition; // As -ve as we can go - else if ( (m_xScrollPosition + nScrollInc) > noPositions ) - nScrollInc = noPositions - m_xScrollPosition; // As +ve as we can go - } - else - Refresh(); - } - else - { - if (m_yScrollPixelsPerLine > 0) { - int w, h; - GetClientSize(&w, &h); - - int nMaxHeight = m_yScrollLines*m_yScrollPixelsPerLine; - int noPositions = (int) ( ((nMaxHeight - h)/(float)m_yScrollPixelsPerLine) + 0.5 ); - if (noPositions < 0) - noPositions = 0; - - if ( (m_yScrollPosition + nScrollInc) < 0 ) - nScrollInc = -m_yScrollPosition; // As -ve as we can go - else if ( (m_yScrollPosition + nScrollInc) > noPositions ) - nScrollInc = noPositions - m_yScrollPosition; // As +ve as we can go - } - else - Refresh(); - } - - return nScrollInc; -} - -// Adjust the scrollbars - new version. -void wxScrolledWindow::AdjustScrollbars(void) -{ - int w, h; - GetClientSize(&w, &h); - - if (m_xScrollLines > 0) - { - // Calculate page size i.e. number of scroll units you get on the - // current client window - int noPagePositions = (int) ( (w/(float)m_xScrollPixelsPerLine) + 0.5 ); - if (noPagePositions < 1) noPagePositions = 1; - - // Correct position if greater than extent of canvas minus - // the visible portion of it or if below zero - m_xScrollPosition = wxMin( m_xScrollLines-noPagePositions, m_xScrollPosition); - m_xScrollPosition = wxMax( 0, m_xScrollPosition ); - - SetScrollbar(wxHORIZONTAL, m_xScrollPosition, noPagePositions, m_xScrollLines); - // The amount by which we scroll when paging - SetScrollPageSize(wxHORIZONTAL, noPagePositions); - } - else - { - m_xScrollPosition = 0; - SetScrollbar (wxHORIZONTAL, 0, 0, 0, FALSE); - } - - if (m_yScrollLines > 0) - { - // Calculate page size i.e. number of scroll units you get on the - // current client window - int noPagePositions = (int) ( (h/(float)m_yScrollPixelsPerLine) + 0.5 ); - if (noPagePositions < 1) noPagePositions = 1; - - // Correct position if greater than extent of canvas minus - // the visible portion of it or if below zero - m_yScrollPosition = wxMin( m_yScrollLines-noPagePositions, m_yScrollPosition ); - m_yScrollPosition = wxMax( 0, m_yScrollPosition ); - - SetScrollbar(wxVERTICAL, m_yScrollPosition, noPagePositions, m_yScrollLines); - // The amount by which we scroll when paging - SetScrollPageSize(wxVERTICAL, noPagePositions); - } - else - { - m_yScrollPosition = 0; - SetScrollbar (wxVERTICAL, 0, 0, 0, FALSE); - } -} - -// Default OnSize resets scrollbars, if any -void wxScrolledWindow::OnSize(wxSizeEvent& WXUNUSED(event)) -{ -#if wxUSE_CONSTRAINTS - if (GetAutoLayout()) Layout(); -#endif - - AdjustScrollbars(); -} - -// This calls OnDraw, having adjusted the origin according to the current -// scroll position -void wxScrolledWindow::OnPaint(wxPaintEvent& WXUNUSED(event)) -{ - wxPaintDC dc(this); - PrepareDC(dc); - - OnDraw(dc); -} - -// Override this function if you don't want to have wxScrolledWindow -// automatically change the origin according to the scroll position. -void wxScrolledWindow::PrepareDC(wxDC& dc) -{ - dc.SetDeviceOrigin( -m_xScrollPosition * m_xScrollPixelsPerLine, - -m_yScrollPosition * m_yScrollPixelsPerLine ); - dc.SetUserScale( m_scaleX, m_scaleY ); -} - -#if WXWIN_COMPATIBILITY -void wxScrolledWindow::GetScrollUnitsPerPage (int *x_page, int *y_page) const -{ - *x_page = GetScrollPageSize(wxHORIZONTAL); - *y_page = GetScrollPageSize(wxVERTICAL); -} -#endif - -void wxScrolledWindow::GetScrollPixelsPerUnit (int *x_unit, int *y_unit) const -{ - *x_unit = m_xScrollPixelsPerLine; - *y_unit = m_yScrollPixelsPerLine; -} - -int wxScrolledWindow::GetScrollPageSize(int orient) const -{ - if ( orient == wxHORIZONTAL ) - return m_xScrollLinesPerPage; - else - return m_yScrollLinesPerPage; -} - -void wxScrolledWindow::SetScrollPageSize(int orient, int pageSize) -{ - if ( orient == wxHORIZONTAL ) - m_xScrollLinesPerPage = pageSize; - else - m_yScrollLinesPerPage = pageSize; -} - -/* - * Scroll to given position (scroll position, not pixel position) - */ -void wxScrolledWindow::Scroll( int x_pos, int y_pos ) -{ - if (((x_pos == -1) || (x_pos == m_xScrollPosition)) && - ((y_pos == -1) || (y_pos == m_yScrollPosition))) return; - - int w, h; - GetClientSize(&w, &h); - - if (x_pos != -1) - { - m_xScrollPosition = x_pos; - - // Calculate page size i.e. number of scroll units you get on the - // current client window - int noPagePositions = (int) ( (w/(float)m_xScrollPixelsPerLine) + 0.5 ); - if (noPagePositions < 1) noPagePositions = 1; - - // Correct position if greater than extent of canvas minus - // the visible portion of it or if below zero - m_xScrollPosition = wxMin( m_xScrollLines-noPagePositions, m_xScrollPosition ); - m_xScrollPosition = wxMax( 0, m_xScrollPosition ); - - SetScrollPos( wxHORIZONTAL, m_xScrollPosition, TRUE ); - } - if (y_pos != -1) - { - m_yScrollPosition = y_pos; - - // Calculate page size i.e. number of scroll units you get on the - // current client window - int noPagePositions = (int) ( (h/(float)m_yScrollPixelsPerLine) + 0.5 ); - if (noPagePositions < 1) noPagePositions = 1; - - // Correct position if greater than extent of canvas minus - // the visible portion of it or if below zero - m_yScrollPosition = wxMin( m_yScrollLines-noPagePositions, m_yScrollPosition ); - m_yScrollPosition = wxMax( 0, m_yScrollPosition ); - - SetScrollPos( wxVERTICAL, m_yScrollPosition, TRUE ); - } - - Refresh(); - -#ifdef __WXMSW__ - // Necessary? - ::UpdateWindow ((HWND) GetHWND()); -#endif -} - -void wxScrolledWindow::EnableScrolling (bool x_scroll, bool y_scroll) -{ - m_xScrollingEnabled = x_scroll; - m_yScrollingEnabled = y_scroll; -} - -void wxScrolledWindow::GetVirtualSize (int *x, int *y) const -{ - *x = m_xScrollPixelsPerLine * m_xScrollLines; - *y = m_yScrollPixelsPerLine * m_yScrollLines; -} - -// Where the current view starts from -void wxScrolledWindow::ViewStart (int *x, int *y) const -{ - *x = m_xScrollPosition; - *y = m_yScrollPosition; -} - -void wxScrolledWindow::CalcScrolledPosition(int x, int y, int *xx, int *yy) const -{ - *xx = x - m_xScrollPosition * m_xScrollPixelsPerLine; - *yy = y - m_yScrollPosition * m_yScrollPixelsPerLine; -} - -void wxScrolledWindow::CalcUnscrolledPosition(int x, int y, float *xx, float *yy) const -{ - *xx = (float)(x + m_xScrollPosition * m_xScrollPixelsPerLine); - *yy = (float)(y + m_yScrollPosition * m_yScrollPixelsPerLine); -} - - diff --git a/src/generic/splitter.cpp b/src/generic/splitter.cpp deleted file mode 100644 index b3591976b0..0000000000 --- a/src/generic/splitter.cpp +++ /dev/null @@ -1,695 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: splitter.cpp -// Purpose: wxSplitterWindow implementation -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "splitter.h" -// #pragma interface -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include -#include - -#include "wx/string.h" -#include "wx/splitter.h" -#include "wx/dcscreen.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxSplitterWindow, wxWindow) - -BEGIN_EVENT_TABLE(wxSplitterWindow, wxWindow) - EVT_PAINT(wxSplitterWindow::OnPaint) - EVT_SIZE(wxSplitterWindow::OnSize) - EVT_MOUSE_EVENTS(wxSplitterWindow::OnMouseEvent) -END_EVENT_TABLE() -#endif - -wxSplitterWindow::wxSplitterWindow() -{ - m_splitMode = wxSPLIT_VERTICAL; - m_windowOne = (wxWindow *) NULL; - m_windowTwo = (wxWindow *) NULL; - m_dragMode = wxSPLIT_DRAG_NONE; - m_oldX = 0; - m_oldY = 0; - m_firstX = 0; - m_firstY = 0; - m_sashSize = 7; - m_borderSize = 2; - m_sashPosition = 0; - m_sashCursorWE = (wxCursor *) NULL; - m_sashCursorNS = (wxCursor *) NULL; - m_sashTrackerPen = (wxPen *) NULL; - m_lightShadowPen = (wxPen *) NULL; - m_mediumShadowPen = (wxPen *) NULL; - m_darkShadowPen = (wxPen *) NULL; - m_faceBrush = (wxBrush *) NULL; - m_facePen = (wxPen *) NULL; - m_hilightPen = (wxPen *) NULL; - m_minimumPaneSize = 0; -} - -wxSplitterWindow::wxSplitterWindow(wxWindow *parent, wxWindowID id, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) - : wxWindow(parent, id, pos, size, style, name) -{ - m_splitMode = wxSPLIT_VERTICAL; - m_windowOne = (wxWindow *) NULL; - m_windowTwo = (wxWindow *) NULL; - m_dragMode = wxSPLIT_DRAG_NONE; - m_oldX = 0; - m_oldY = 0; - m_firstX = 0; - m_firstY = 0; - m_sashSize = 7; - m_borderSize = 2; - m_sashPosition = 0; - m_minimumPaneSize = 0; - m_sashCursorWE = new wxCursor(wxCURSOR_SIZEWE); - m_sashCursorNS = new wxCursor(wxCURSOR_SIZENS); - m_sashTrackerPen = new wxPen(*wxBLACK, 2, wxSOLID); - m_lightShadowPen = (wxPen *) NULL; - m_mediumShadowPen = (wxPen *) NULL; - m_darkShadowPen = (wxPen *) NULL; - m_faceBrush = (wxBrush *) NULL; - m_facePen = (wxPen *) NULL; - m_hilightPen = (wxPen *) NULL; - - if ( style & wxSP_3D ) - { - m_borderSize = 2; - m_sashSize = 7; - } - else if ( style & wxSP_BORDER ) - { - m_borderSize = 1; - m_sashSize = 3; - } - else - { - m_borderSize = 0; - m_sashSize = 3; - } - - // Eventually, we'll respond to colour change messages - InitColours(); - - // For debugging purposes, to see the background. -// SetBackground(wxBLUE_BRUSH); -} - -wxSplitterWindow::~wxSplitterWindow() -{ - delete m_sashCursorWE; - delete m_sashCursorNS; - delete m_sashTrackerPen; - delete m_lightShadowPen; - delete m_darkShadowPen; - delete m_mediumShadowPen; - delete m_hilightPen; - delete m_facePen; - delete m_faceBrush; -} - -void wxSplitterWindow::OnPaint(wxPaintEvent& WXUNUSED(event)) -{ - wxPaintDC dc(this); - - if ( m_borderSize > 0 ) - DrawBorders(dc); - DrawSash(dc); -} - -void wxSplitterWindow::OnMouseEvent(wxMouseEvent& event) -{ - long x, y; - event.Position(&x, &y); - - if (event.LeftDown()) - { - if ( SashHitTest(x, y) ) - { - CaptureMouse(); - - m_dragMode = wxSPLIT_DRAG_DRAGGING; - - DrawSashTracker(x, y); - m_oldX = x; - m_oldY = y; - return; - } - } - else if (event.LeftUp() && m_dragMode == wxSPLIT_DRAG_DRAGGING) - { - // We can stop dragging now and see what we've got. - m_dragMode = wxSPLIT_DRAG_NONE; - ReleaseMouse(); - - // Erase old tracker - DrawSashTracker(m_oldX, m_oldY); - - int w, h; - GetClientSize(&w, &h); - if ( m_splitMode == wxSPLIT_VERTICAL ) - { - if ( !OnSashPositionChange(x) ) - return; - - if ( x <= 4 ) - { - // We remove the first window from the view - wxWindow *removedWindow = m_windowOne; - m_windowOne = m_windowTwo; - m_windowTwo = (wxWindow *) NULL; - - OnUnsplit(removedWindow); - m_sashPosition = 0; - } - else if ( x >= (w - 4) ) - { - // We remove the second window from the view - wxWindow *removedWindow = m_windowTwo; - m_windowTwo = (wxWindow *) NULL; - OnUnsplit(removedWindow); - m_sashPosition = 0; - } - else - { - m_sashPosition = x; - } - } - else // m_splitMode == wxSPLIT_VERTICAL - { - if ( !OnSashPositionChange(y) ) - return; - - if ( y <= 4 ) - { - // We remove the first window from the view - wxWindow *removedWindow = m_windowOne; - m_windowOne = m_windowTwo; - m_windowTwo = (wxWindow *) NULL; - - OnUnsplit(removedWindow); - m_sashPosition = 0; - } - else if ( y >= (h - 4) ) - { - // We remove the second window from the view - wxWindow *removedWindow = m_windowTwo; - m_windowTwo = (wxWindow *) NULL; - OnUnsplit(removedWindow); - m_sashPosition = 0; - } - else - { - m_sashPosition = y; - } - } // m_splitMode == wxSPLIT_VERTICAL - SizeWindows(); - } // left up && dragging - else if (event.Moving() && !event.Dragging()) - { - // Just change the cursor if required - if ( SashHitTest(x, y) ) - { - if ( m_splitMode == wxSPLIT_VERTICAL ) - { - SetCursor(*m_sashCursorWE); - } - else - { - SetCursor(*m_sashCursorNS); - } - } - else - { - SetCursor(*wxSTANDARD_CURSOR); - } - } - else if (event.Dragging() && (m_dragMode == wxSPLIT_DRAG_DRAGGING)) - { - // Erase old tracker - DrawSashTracker(m_oldX, m_oldY); - - // Draw new one - DrawSashTracker(x, y); - - m_oldX = x; - m_oldY = y; - } - else if ( event.LeftDClick() ) - { - OnDoubleClickSash(x, y); - } -} - -void wxSplitterWindow::OnSize(wxSizeEvent& WXUNUSED(event)) -{ - int cw, ch; - GetClientSize( &cw, &ch ); - if ( m_windowTwo ) - { - if ( m_splitMode == wxSPLIT_VERTICAL ) - { - if ( m_sashPosition >= (cw - 5) ) - m_sashPosition = wxMax(10, cw - 40); - } - if ( m_splitMode == wxSPLIT_HORIZONTAL ) - { - if ( m_sashPosition >= (ch - 5) ) - m_sashPosition = wxMax(10, ch - 40); - } - } - SizeWindows(); -} - -bool wxSplitterWindow::SashHitTest(int x, int y, int tolerance) -{ - if ( m_windowTwo == NULL || m_sashPosition == 0) - return FALSE; // No sash - - if ( m_splitMode == wxSPLIT_VERTICAL ) - { - if ( (x >= m_sashPosition - tolerance) && (x <= m_sashPosition + m_sashSize + tolerance) ) - return TRUE; - else - return FALSE; - } - else - { - if ( (y >= (m_sashPosition- tolerance)) && (y <= (m_sashPosition + m_sashSize + tolerance)) ) - return TRUE; - else - return FALSE; - } - - return FALSE; -} - -// Draw 3D effect borders -void wxSplitterWindow::DrawBorders(wxDC& dc) -{ - int w, h; - GetClientSize(&w, &h); - - if ( GetWindowStyleFlag() & wxSP_3D ) - { - dc.SetPen(*m_mediumShadowPen); - dc.DrawLine(0, 0, w-1, 0); - dc.DrawLine(0, 0, 0, h - 1); - - dc.SetPen(*m_darkShadowPen); - dc.DrawLine(1, 1, w-2, 1); - dc.DrawLine(1, 1, 1, h-2); - - dc.SetPen(*m_hilightPen); - dc.DrawLine(0, h-1, w-1, h-1); - dc.DrawLine(w-1, 0, w-1, h); // Surely the maximum y pos. should be h - 1. - /// Anyway, h is required for MSW. - - dc.SetPen(*m_lightShadowPen); - dc.DrawLine(w-2, 1, w-2, h-2); // Right hand side - dc.DrawLine(1, h-2, w-1, h-2); // Bottom - } - else if ( GetWindowStyleFlag() & wxSP_BORDER ) - { - dc.SetBrush(*wxTRANSPARENT_BRUSH); - dc.SetPen(*wxBLACK_PEN); - dc.DrawRectangle(0, 0, w-1, h-1); - } - - dc.SetPen(wxNullPen); - dc.SetBrush(wxNullBrush); -} - -// Draw the sash -void wxSplitterWindow::DrawSash(wxDC& dc) -{ - if ( m_sashPosition == 0 || !m_windowTwo) - return; - - int w, h; - GetClientSize(&w, &h); - - if ( GetWindowStyleFlag() & wxSP_3D ) - { - if ( m_splitMode == wxSPLIT_VERTICAL ) - { - dc.SetPen(*m_facePen); - dc.SetBrush(*m_faceBrush); - dc.DrawRectangle(m_sashPosition + 2, 0, m_sashSize - 4, h); - - dc.SetBrush(*wxTRANSPARENT_BRUSH); - - dc.SetPen(*m_lightShadowPen); - dc.DrawLine(m_sashPosition, 1, m_sashPosition, h-2); - - dc.SetPen(*m_hilightPen); - dc.DrawLine(m_sashPosition+1, 0, m_sashPosition+1, h); - - dc.SetPen(*m_mediumShadowPen); - dc.DrawLine(m_sashPosition+m_sashSize-2, 1, m_sashPosition+m_sashSize-2, h-1); - - dc.SetPen(*m_darkShadowPen); - dc.DrawLine(m_sashPosition+m_sashSize-1, 2, m_sashPosition+m_sashSize-1, h-2); - } - else - { - dc.SetPen(*m_facePen); - dc.SetBrush(*m_faceBrush); - dc.DrawRectangle(0, m_sashPosition + 2, w, m_sashSize - 4); - - dc.SetBrush(*wxTRANSPARENT_BRUSH); - - dc.SetPen(*m_lightShadowPen); - dc.DrawLine(1, m_sashPosition, w-2, m_sashPosition); - - dc.SetPen(*m_hilightPen); - dc.DrawLine(0, m_sashPosition+1, w, m_sashPosition+1); - - dc.SetPen(*m_mediumShadowPen); - dc.DrawLine(1, m_sashPosition+m_sashSize-2, w-1, m_sashPosition+m_sashSize-2); - - dc.SetPen(*m_darkShadowPen); - dc.DrawLine(2, m_sashPosition+m_sashSize-1, w-2, m_sashPosition+m_sashSize-1); - } - } - else - { - if ( m_splitMode == wxSPLIT_VERTICAL ) - { - dc.SetPen(*wxBLACK_PEN); - dc.SetBrush(*wxBLACK_BRUSH); - int h1 = h-1; - if ( (GetWindowStyleFlag() & wxSP_BORDER) != wxSP_BORDER ) - h1 += 1; // Not sure why this is necessary... - dc.DrawRectangle(m_sashPosition, 0, m_sashSize, h1); - } - else - { - dc.SetPen(*wxBLACK_PEN); - dc.SetBrush(*wxBLACK_BRUSH); - int w1 = w-1; - if ( (GetWindowStyleFlag() & wxSP_BORDER) != wxSP_BORDER ) - w1 ++; - - dc.DrawRectangle(0, m_sashPosition, w1, m_sashSize); - } - - } - - dc.SetPen(wxNullPen); - dc.SetBrush(wxNullBrush); -} - -// Draw the sash tracker (for whilst moving the sash) -void wxSplitterWindow::DrawSashTracker(int x, int y) -{ - int w, h; - GetClientSize(&w, &h); - - wxScreenDC screenDC; - int x1, y1; - int x2, y2; - - if ( m_splitMode == wxSPLIT_VERTICAL ) - { - x1 = x; y1 = 2; - x2 = x; y2 = h-2; - - if ( x1 > w ) - { - x1 = w; x2 = w; - } - else if ( x1 < 0 ) - { - x1 = 0; x2 = 0; - } - } - else - { - x1 = 2; y1 = y; - x2 = w-2; y2 = y; - - if ( y1 > h ) - { - y1 = h; - y2 = h; - } - else if ( y1 < 0 ) - { - y1 = 0; - y2 = 0; - } - } - - ClientToScreen(&x1, &y1); - ClientToScreen(&x2, &y2); - - screenDC.SetLogicalFunction(wxXOR); - screenDC.SetPen(*m_sashTrackerPen); - screenDC.SetBrush(*wxTRANSPARENT_BRUSH); - - screenDC.DrawLine(x1, y1, x2, y2); - - screenDC.SetLogicalFunction(wxCOPY); - - screenDC.SetPen(wxNullPen); - screenDC.SetBrush(wxNullBrush); -} - -// Position and size subwindows. -// Note that the border size applies to each subwindow, not -// including the edges next to the sash. -void wxSplitterWindow::SizeWindows() -{ - int w, h; - GetClientSize(&w, &h); - - if ( m_windowOne && !m_windowTwo ) - { - m_windowOne->SetSize(m_borderSize, m_borderSize, w - 2*m_borderSize, h - 2*m_borderSize); - } - else if ( m_windowOne && m_windowTwo ) - { - if (m_splitMode == wxSPLIT_VERTICAL) - { - int x1 = m_borderSize; - int y1 = m_borderSize; - int w1 = m_sashPosition - m_borderSize; - int h1 = h - 2*m_borderSize; - - int x2 = m_sashPosition + m_sashSize; - int y2 = m_borderSize; - int w2 = w - 2*m_borderSize - m_sashSize - w1; - int h2 = h - 2*m_borderSize; - - m_windowOne->SetSize(x1, y1, w1, h1); - m_windowTwo->SetSize(x2, y2, w2, h2); - } - else - { - m_windowOne->SetSize(m_borderSize, m_borderSize, - w - 2*m_borderSize, m_sashPosition - m_borderSize); - m_windowTwo->SetSize(m_borderSize, m_sashPosition + m_sashSize, - w - 2*m_borderSize, h - 2*m_borderSize - m_sashSize - (m_sashPosition - m_borderSize)); - } - } - wxClientDC dc(this); - DrawBorders(dc); - DrawSash(dc); -} - -// Set pane for unsplit window -void wxSplitterWindow::Initialize(wxWindow *window) -{ - m_windowOne = window; - m_windowTwo = (wxWindow *) NULL; - m_sashPosition = 0; -} - -// Associates the given window with window 2, drawing the appropriate sash -// and changing the split mode. -// Does nothing and returns FALSE if the window is already split. -bool wxSplitterWindow::SplitVertically(wxWindow *window1, wxWindow *window2, int sashPosition) -{ - if ( IsSplit() ) - return FALSE; - - int w, h; - GetClientSize(&w, &h); - - m_splitMode = wxSPLIT_VERTICAL; - m_windowOne = window1; - m_windowTwo = window2; - if ( sashPosition > 0 ) - m_sashPosition = sashPosition; - else if ( sashPosition < 0 ) - m_sashPosition = w - sashPosition; - else // default - m_sashPosition = w/2; - - SizeWindows(); - - return TRUE; -} - -bool wxSplitterWindow::SplitHorizontally(wxWindow *window1, wxWindow *window2, int sashPosition) -{ - if ( IsSplit() ) - return FALSE; - - int w, h; - GetClientSize(&w, &h); - - m_splitMode = wxSPLIT_HORIZONTAL; - m_windowOne = window1; - m_windowTwo = window2; - if ( sashPosition > 0 ) - m_sashPosition = sashPosition; - else if ( sashPosition < 0 ) - m_sashPosition = h - sashPosition; - else // default - m_sashPosition = h/2; - - SizeWindows(); - - return TRUE; -} - - -// Remove the specified (or second) window from the view -// Doesn't actually delete the window. -bool wxSplitterWindow::Unsplit(wxWindow *toRemove) -{ - if ( ! IsSplit() ) - return FALSE; - - if ( toRemove == NULL || toRemove == m_windowTwo) - { - wxWindow *win = m_windowTwo ; - m_windowTwo = (wxWindow *) NULL; - m_sashPosition = 0; - OnUnsplit(win); - SizeWindows(); - } - else if ( toRemove == m_windowOne ) - { - wxWindow *win = m_windowOne ; - m_windowOne = m_windowTwo; - m_windowTwo = (wxWindow *) NULL; - m_sashPosition = 0; - OnUnsplit(win); - SizeWindows(); - } - else - return FALSE; - - return TRUE; -} - -void wxSplitterWindow::SetSashPosition(int position, bool redraw) -{ - m_sashPosition = position; - - if ( redraw ) - { - SizeWindows(); - } -} - -bool wxSplitterWindow::OnSashPositionChange(int newSashPosition) -{ - // is the left/upper pane too small? - if ( newSashPosition < m_minimumPaneSize ) - return NULL; - - // is the right/lower pane too small? - int w, h; - GetClientSize(&w, &h); - - if ( m_splitMode == wxSPLIT_VERTICAL ) - { - if ( w - newSashPosition < m_minimumPaneSize ) - return FALSE; - } - else // m_splitMode = wxSPLIT_HORIZONTAL - { - if ( h - newSashPosition < m_minimumPaneSize ) - return FALSE; - } - - // it's ok to move sash - return TRUE; -} - -// Called when the sash is double-clicked. -// The default behaviour is to remove the sash if the -// minimum pane size is zero. -void wxSplitterWindow::OnDoubleClickSash(int WXUNUSED(x), int WXUNUSED(y) ) -{ - if ( GetMinimumPaneSize() == 0 ) - { - Unsplit(); - } -} - -// Initialize colours -void wxSplitterWindow::InitColours() -{ - wxDELETE( m_facePen ); - wxDELETE( m_faceBrush ); - wxDELETE( m_mediumShadowPen ); - wxDELETE( m_darkShadowPen ); - wxDELETE( m_lightShadowPen ); - wxDELETE( m_hilightPen ); - - // Shadow colours -#if defined(__WIN95__) - wxColour faceColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE)); - m_facePen = new wxPen(faceColour, 1, wxSOLID); - m_faceBrush = new wxBrush(faceColour, wxSOLID); - - wxColour mediumShadowColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DSHADOW)); - m_mediumShadowPen = new wxPen(mediumShadowColour, 1, wxSOLID); - - wxColour darkShadowColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DDKSHADOW)); - m_darkShadowPen = new wxPen(darkShadowColour, 1, wxSOLID); - - wxColour lightShadowColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DLIGHT)); - m_lightShadowPen = new wxPen(lightShadowColour, 1, wxSOLID); - - wxColour hilightColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DHILIGHT)); - m_hilightPen = new wxPen(hilightColour, 1, wxSOLID); -#else // !Win32 - m_facePen = new wxPen("LIGHT GREY", 1, wxSOLID); - m_faceBrush = new wxBrush("LIGHT GREY", wxSOLID); - m_mediumShadowPen = new wxPen("GREY", 1, wxSOLID); - m_darkShadowPen = new wxPen("BLACK", 1, wxSOLID); - m_lightShadowPen = new wxPen("LIGHT GREY", 1, wxSOLID); - m_hilightPen = new wxPen("WHITE", 1, wxSOLID); -#endif // Win32/!Win32 -} - diff --git a/src/generic/statusbr.cpp b/src/generic/statusbr.cpp deleted file mode 100644 index 683752e0b1..0000000000 --- a/src/generic/statusbr.cpp +++ /dev/null @@ -1,343 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: statusbr.cpp -// Purpose: wxStatusBar class implementation -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "statusbr.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/setup.h" -#include "wx/frame.h" -#include "wx/settings.h" -#include "wx/dcclient.h" -#endif - -#include "wx/generic/statusbr.h" - -#ifdef __WXMSW__ -#include - -#ifdef DrawText -#undef DrawText -#endif - -#endif - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxStatusBar, wxWindow) - -BEGIN_EVENT_TABLE(wxStatusBar, wxWindow) - EVT_PAINT(wxStatusBar::OnPaint) - EVT_SYS_COLOUR_CHANGED(wxStatusBar::OnSysColourChanged) -END_EVENT_TABLE() -#endif - -// Default status border dimensions -#define wxTHICK_LINE_BORDER 2 -#define wxTHICK_LINE_WIDTH 1 - -wxStatusBar::wxStatusBar(void) -{ - m_statusWidths = (int *) NULL; - m_statusStrings = (wxString *) NULL; - m_nFields = 0; - m_borderX = wxTHICK_LINE_BORDER; - m_borderY = wxTHICK_LINE_BORDER; -} - -wxStatusBar::~wxStatusBar(void) -{ -# ifdef __WXMSW__ - SetFont(wxNullFont); -# endif // MSW - - if ( m_statusWidths ) - delete[] m_statusWidths; - if ( m_statusStrings ) - delete[] m_statusStrings; -} - -bool wxStatusBar::Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - m_statusWidths = (int *) NULL; - m_statusStrings = (wxString *) NULL; - m_nFields = 0; - m_borderX = wxTHICK_LINE_BORDER; - m_borderY = wxTHICK_LINE_BORDER; - - bool success = wxWindow::Create(parent, id, pos, size, style | wxTAB_TRAVERSAL, name); - - // Don't wish this to be found as a child - parent->GetChildren().DeleteObject(this); - - InitColours(); - - SetFont(m_defaultStatusBarFont); - - return success; -} - -void wxStatusBar::SetFieldsCount(int number, const int widths[]) -{ - m_nFields = number; - - if ( m_statusWidths ) - delete[] m_statusWidths; - - if ( m_statusStrings ) - delete[] m_statusStrings; - - m_statusStrings = new wxString[number]; - - int i; - for (i = 0; i < number; i++) - m_statusStrings[i] = ""; - - if ( widths ) - SetStatusWidths(number, widths); -} - -void wxStatusBar::SetStatusText(const wxString& text, int number) -{ - if ((number < 0) || (number >= m_nFields)) - return; - - m_statusStrings[number] = text; - - Refresh(); - -#ifdef __WXMSW__ - // For some reason, this can cause major GDI problems - graphics - // all over the place. E.g. in print previewing. -// ::UpdateWindow((HWND) GetHWND()); -#endif -} - -wxString wxStatusBar::GetStatusText(int n) const -{ - if ((n < 0) || (n >= m_nFields)) - return wxString(""); - else - return m_statusStrings[n]; -} - -void wxStatusBar::SetStatusWidths(int n, const int widths_field[]) -{ - // only set status widths, when n == number of statuswindows - if (n == m_nFields) - { - // only set status widths, - // when one window (minimum) is variable (width <= 0) - bool is_variable = FALSE; - int i; - for (i = 0; i < m_nFields; i++) - { - if (widths_field[i] <= 0) is_variable = TRUE; - } - - // if there are old widths, delete them - if (m_statusWidths) - delete [] m_statusWidths; - - // set widths - m_statusWidths = new int[n]; - for (i = 0; i < m_nFields; i++) - { - m_statusWidths[i] = widths_field[i]; - } - } -} - -void wxStatusBar::OnPaint(wxPaintEvent& WXUNUSED(event) ) -{ - wxPaintDC dc(this); - - int i; - if ( GetFont().Ok() ) - dc.SetFont(GetFont()); - dc.SetBackgroundMode(wxTRANSPARENT); - - for ( i = 0; i < m_nFields; i ++ ) - DrawField(dc, i); - -# ifdef __WXMSW__ - dc.SetFont(wxNullFont); -# endif // MSW -} - -void wxStatusBar::DrawFieldText(wxDC& dc, int i) -{ - int leftMargin = 2; - - wxRect rect; - GetFieldRect(i, rect); - - wxString text(GetStatusText(i)); - - long x, y; - - dc.GetTextExtent(text, &x, &y); - - int xpos = rect.x + leftMargin; - int ypos = (int) (((rect.height - y) / 2 ) + rect.y + 0.5) ; - -#ifdef __WXGTK__ - xpos++; - ypos++; -#endif - - dc.SetClippingRegion(rect.x, rect.y, rect.width, rect.height); - - dc.DrawText(text, xpos, ypos); - - dc.DestroyClippingRegion(); -} - -void wxStatusBar::DrawField(wxDC& dc, int i) -{ - wxRect rect; - GetFieldRect(i, rect); - - // Draw border - // Have grey background, plus 3-d border - - // One black rectangle. - // Inside this, left and top sides - dark grey. Bottom and right - - // white. - - dc.SetPen(m_hilightPen); - - // Right and bottom white lines - dc.DrawLine(rect.x + rect.width, rect.y, - rect.x + rect.width, rect.y + rect.height); - dc.DrawLine(rect.x + rect.width, rect.y + rect.height, - rect.x, rect.y + rect.height); - - dc.SetPen(m_mediumShadowPen); - - // Left and top grey lines - dc.DrawLine(rect.x, rect.y + rect.height, - rect.x, rect.y); - dc.DrawLine(rect.x, rect.y, - rect.x + rect.width, rect.y); - - DrawFieldText(dc, i); -} - - // Get the position and size of the field's internal bounding rectangle -bool wxStatusBar::GetFieldRect(int n, wxRect& rect) const -{ - if ((n < 0) || (n >= m_nFields)) - return FALSE; - - int width, height; - GetClientSize(&width, &height); - - int i; - int sum_of_nonvar = 0; - int num_of_var = 0; - bool do_same_width = FALSE; - - int fieldWidth = 0; - int fieldPosition = 0; - - if (m_statusWidths) - { - // if sum(not variable Windows) > c_width - (20 points per variable_window) - // then do_same_width = TRUE; - for (i = 0; i < m_nFields; i++) - { - if (m_statusWidths[i] > 0) sum_of_nonvar += m_statusWidths[i]; - else num_of_var++; - } - if (sum_of_nonvar > (width - 20*num_of_var)) do_same_width = TRUE; - } - else do_same_width = TRUE; - if (do_same_width) - { - for (i = 0; i < m_nFields; i++) - { - fieldWidth = (int)(width/m_nFields); - fieldPosition = i*fieldWidth; - if ( i == n ) - break; - } - } - else // no_same_width - { - int *tempwidth = new int[m_nFields]; - int temppos = 0; - for (i = 0; i < m_nFields; i++) - { - if (m_statusWidths[i] > 0) tempwidth[i] = m_statusWidths[i]; - else tempwidth[i] = (width - sum_of_nonvar) / num_of_var; - } - for (i = 0; i < m_nFields; i++) - { - fieldWidth = tempwidth[i]; - fieldPosition = temppos; - - temppos += tempwidth[i]; - - if ( i == n ) - break; - } - delete [] tempwidth; - } - - rect.x = fieldPosition + wxTHICK_LINE_BORDER; - rect.y = wxTHICK_LINE_BORDER; - - rect.width = fieldWidth - 2 * wxTHICK_LINE_BORDER ; - rect.height = height - 2 * wxTHICK_LINE_BORDER ; - - return TRUE; -} - -// Initialize colours -void wxStatusBar::InitColours(void) -{ - // Shadow colours -#if defined(__WIN95__) - wxColour mediumShadowColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DSHADOW)); - m_mediumShadowPen = wxPen(mediumShadowColour, 1, wxSOLID); - - wxColour hilightColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DHILIGHT)); - m_hilightPen = wxPen(hilightColour, 1, wxSOLID); -#else - m_mediumShadowPen = wxPen("GREY", 1, wxSOLID); - m_hilightPen = wxPen("WHITE", 1, wxSOLID); -#endif - - m_defaultStatusBarFont = wxSystemSettings::GetSystemFont(wxSYS_DEFAULT_GUI_FONT); - SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE)); -} - -// Responds to colour changes, and passes event on to children. -void wxStatusBar::OnSysColourChanged(wxSysColourChangedEvent& event) -{ - InitColours(); - Refresh(); - - // Propagate the event to the non-top-level children - wxWindow::OnSysColourChanged(event); -} - diff --git a/src/generic/tabg.cpp b/src/generic/tabg.cpp deleted file mode 100644 index 297d93d55e..0000000000 --- a/src/generic/tabg.cpp +++ /dev/null @@ -1,1277 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: tabg.cpp -// Purpose: Generic tabbed dialogs -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "tabg.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include -#include -#include -#include - -#include "wx/tab.h" - -// not defined: use old, square tab implementation (fills in tabs) -// defined: use new, rounded tab implementation (doesn't colour in tabs) -// #define wxUSE_NEW_METHOD - -IMPLEMENT_DYNAMIC_CLASS(wxTabControl, wxObject) - -IMPLEMENT_DYNAMIC_CLASS(wxTabLayer, wxList) - -wxTabControl::wxTabControl(wxTabView *v) -{ - m_view = v; - m_isSelected = FALSE; - m_offsetX = 0; - m_offsetY = 0; - m_width = 0; - m_height = 0; - m_id = 0; - m_rowPosition = 0; - m_colPosition = 0; -} - -wxTabControl::~wxTabControl(void) -{ -} - -void wxTabControl::OnDraw(wxDC& dc, bool lastInRow) -{ - // Old, but in some ways better (drawing opaque tabs) -#ifndef wxUSE_NEW_METHOD - if (!m_view) - return; - - // Top-left of tab view area - int viewX = m_view->GetViewRect().x; - int viewY = m_view->GetViewRect().y; - - // Top-left of tab control - int tabX = GetX() + viewX; - int tabY = GetY() + viewY; - int tabHeightInc = 0; - if (m_isSelected) - { - tabHeightInc = (m_view->GetTabSelectionHeight() - m_view->GetTabHeight()); - tabY -= tabHeightInc; - } - - dc.SetPen(*wxTRANSPARENT_PEN); - - // Draw grey background - if (m_view->GetTabStyle() & wxTAB_STYLE_COLOUR_INTERIOR) - { - dc.SetBrush(*m_view->GetBackgroundBrush()); - - // Add 1 because the pen is transparent. Under Motif, may be different. -#ifdef __WXMOTIF__ - dc.DrawRectangle(tabX, tabY, (GetWidth()+1), (GetHeight() + tabHeightInc)); -#else - dc.DrawRectangle(tabX, tabY, (GetWidth()+1), (GetHeight() + 1 + tabHeightInc)); -#endif - } - - // Draw highlight and shadow - dc.SetPen(*m_view->GetHighlightPen()); - - // Calculate the top of the tab beneath. It's the height of the tab, MINUS - // a bit if the tab below happens to be selected. Check. - wxTabControl *tabBeneath = NULL; - int subtractThis = 0; - if (GetColPosition() > 0) - tabBeneath = m_view->FindTabControlForPosition(GetColPosition() - 1, GetRowPosition()); - if (tabBeneath && tabBeneath->IsSelected()) - subtractThis = (m_view->GetTabSelectionHeight() - m_view->GetTabHeight()); - - // Vertical highlight: if first tab, draw to bottom of view - if (tabX == m_view->GetViewRect().x && (m_view->GetTabStyle() & wxTAB_STYLE_DRAW_BOX)) - dc.DrawLine(tabX, tabY, tabX, (m_view->GetViewRect().y + m_view->GetViewRect().height)); - else if (tabX == m_view->GetViewRect().x) - // Not box drawing, just to top of view. - dc.DrawLine(tabX, tabY, tabX, (m_view->GetViewRect().y)); - else - dc.DrawLine(tabX, tabY, tabX, (tabY + GetHeight() + tabHeightInc - subtractThis)); - - dc.DrawLine(tabX, tabY, (tabX + GetWidth()), tabY); - dc.SetPen(*m_view->GetShadowPen()); - - // Test if we're outside the right-hand edge of the view area - if (((tabX + GetWidth()) >= m_view->GetViewRect().x + m_view->GetViewRect().width) && (m_view->GetTabStyle() & wxTAB_STYLE_DRAW_BOX)) - { - int bottomY = m_view->GetViewRect().y + m_view->GetViewRect().height + GetY() + m_view->GetTabHeight() + m_view->GetTopMargin(); - // Add a tab height since we wish to draw to the bottom of the view. - dc.DrawLine((tabX + GetWidth()), tabY, - (tabX + GetWidth()), bottomY); - - // Calculate the far-right of the view, since we don't wish to - // draw inside that - int rightOfView = m_view->GetViewRect().x + m_view->GetViewRect().width + 1; - - // Draw the horizontal bit to connect to the view rectangle - dc.DrawLine((wxMax((tabX + GetWidth() - m_view->GetHorizontalTabOffset()), rightOfView)), (bottomY-1), - (tabX + GetWidth()), (bottomY-1)); - - // Draw black line to emphasize shadow - dc.SetPen(*wxBLACK_PEN); - dc.DrawLine((tabX + GetWidth() + 1), (tabY+1), - (tabX + GetWidth() + 1), bottomY); - - // Draw the horizontal bit to connect to the view rectangle - dc.DrawLine((wxMax((tabX + GetWidth() - m_view->GetHorizontalTabOffset()), rightOfView)), (bottomY), - (tabX + GetWidth() + 1), (bottomY)); - } - else - { - if (lastInRow) - { - // 25/5/97 UNLESS it's less than the max number of positions in this row - - int topY = m_view->GetViewRect().y - m_view->GetTopMargin(); - - int maxPositions = ((wxTabLayer *)m_view->GetLayers().Nth(0)->Data())->Number(); - - // Only down to the bottom of the tab, not to the top of the view - if ( GetRowPosition() < (maxPositions - 1) ) - topY = tabY + GetHeight() + tabHeightInc; - -#ifdef __WXMOTIF__ - topY -= 1; -#endif - - // Shadow - dc.DrawLine((tabX + GetWidth()), tabY, (tabX + GetWidth()), topY); - // Draw black line to emphasize shadow - dc.SetPen(*wxBLACK_PEN); - dc.DrawLine((tabX + GetWidth() + 1), (tabY+1), (tabX + GetWidth() + 1), - topY); - } - else - { - // Calculate the top of the tab beneath. It's the height of the tab, MINUS - // a bit if the tab below (and next col along) happens to be selected. Check. - wxTabControl *tabBeneath = NULL; - int subtractThis = 0; - if (GetColPosition() > 0) - tabBeneath = m_view->FindTabControlForPosition(GetColPosition() - 1, GetRowPosition() + 1); - if (tabBeneath && tabBeneath->IsSelected()) - subtractThis = (m_view->GetTabSelectionHeight() - m_view->GetTabHeight()); - -#ifdef __WXMOTIF__ - subtractThis += 1; -#endif - - // Draw only to next tab down. - dc.DrawLine((tabX + GetWidth()), tabY, - (tabX + GetWidth()), (tabY + GetHeight() + tabHeightInc - subtractThis)); - - // Draw black line to emphasize shadow - dc.SetPen(*wxBLACK_PEN); - dc.DrawLine((tabX + GetWidth() + 1), (tabY+1), (tabX + GetWidth() + 1), - (tabY + GetHeight() + tabHeightInc - subtractThis)); - } - } - - // Draw centered text - int textY = tabY + m_view->GetVerticalTabTextSpacing() + tabHeightInc; - - if (m_isSelected) - dc.SetFont(* m_view->GetSelectedTabFont()); - else - dc.SetFont(* GetFont()); - - wxColour col(m_view->GetTextColour()); - dc.SetTextForeground(col); - dc.SetBackgroundMode(wxTRANSPARENT); - long textWidth, textHeight; - dc.GetTextExtent(GetLabel(), &textWidth, &textHeight); - - int textX = (int)(tabX + (GetWidth() - textWidth)/2.0); - if (textX < (tabX + 2)) - textX = (tabX + 2); - - dc.SetClippingRegion(tabX, tabY, GetWidth(), GetHeight()); - dc.DrawText(GetLabel(), textX, textY); - dc.DestroyClippingRegion(); - - if (m_isSelected) - { - dc.SetPen(*m_view->GetHighlightPen()); - - // Draw white highlight from the tab's left side to the left hand edge of the view - dc.DrawLine(m_view->GetViewRect().x, (tabY + GetHeight() + tabHeightInc), - tabX, (tabY + GetHeight() + tabHeightInc)); - - // Draw white highlight from the tab's right side to the right hand edge of the view - dc.DrawLine((tabX + GetWidth()), (tabY + GetHeight() + tabHeightInc), - m_view->GetViewRect().x + m_view->GetViewRect().width, (tabY + GetHeight() + tabHeightInc)); - } -#else - // New HEL version with rounder tabs - - if (!m_view) return; - - int tabInc = 0; - if (m_isSelected) - { - tabInc = m_view->GetTabSelectionHeight() - m_view->GetTabHeight(); - } - int tabLeft = GetX() + m_view->GetViewRect().x; - int tabTop = GetY() + m_view->GetViewRect().y - tabInc; - int tabRight = tabLeft + m_view->GetTabWidth(); - int left = m_view->GetViewRect().x; - int top = tabTop + m_view->GetTabHeight() + tabInc; - int right = left + m_view->GetViewRect().width; - int bottom = top + m_view->GetViewRect().height; - - if (m_isSelected) - { - // TAB is selected - draw TAB and the View's full outline - - dc.SetPen(*(m_view->GetHighlightPen())); - wxPoint pnts[10]; - int n = 0; - pnts[n].x = left; pnts[n++].y = bottom; - pnts[n].x = left; pnts[n++].y = top; - pnts[n].x = tabLeft; pnts[n++].y = top; - pnts[n].x = tabLeft; pnts[n++].y = tabTop + 2; - pnts[n].x = tabLeft + 2; pnts[n++].y = tabTop; - pnts[n].x = tabRight - 1; pnts[n++].y = tabTop; - dc.DrawLines(n, pnts); - if (!lastInRow) - { - dc.DrawLine( - (tabRight + 2), - top, - right, - top - ); - } - - dc.SetPen(*(m_view->GetShadowPen())); - dc.DrawLine( - tabRight, - tabTop + 2, - tabRight, - top - ); - dc.DrawLine( - right, - top, - right, - bottom - ); - dc.DrawLine( - right, - bottom, - left, - bottom - ); - - dc.SetPen(*wxBLACK_PEN); - dc.DrawPoint( - tabRight, - tabTop + 1 - ); - dc.DrawPoint( - tabRight + 1, - tabTop + 2 - ); - if (lastInRow) - { - dc.DrawLine( - tabRight + 1, - bottom, - tabRight + 1, - tabTop + 1 - ); - } - else - { - dc.DrawLine( - tabRight + 1, - tabTop + 2, - tabRight + 1, - top - ); - dc.DrawLine( - right + 1, - top, - right + 1, - bottom + 1 - ); - } - dc.DrawLine( - right + 1, - bottom + 1, - left + 1, - bottom + 1 - ); - } - else - { - // TAB is not selected - just draw TAB outline and RH edge - // if the TAB is the last in the row - - int maxPositions = ((wxTabLayer*)m_view->GetLayers().Nth(0)->Data())->Number(); - wxTabControl* tabBelow = 0; - wxTabControl* tabBelowRight = 0; - if (GetColPosition() > 0) - { - tabBelow = m_view->FindTabControlForPosition( - GetColPosition() - 1, - GetRowPosition() - ); - } - if (!lastInRow && GetColPosition() > 0) - { - tabBelowRight = m_view->FindTabControlForPosition( - GetColPosition() - 1, - GetRowPosition() + 1 - ); - } - - float raisedTop = top - m_view->GetTabSelectionHeight() + - m_view->GetTabHeight(); - - dc.SetPen(*(m_view->GetHighlightPen())); - wxPoint pnts[10]; - int n = 0; - - pnts[n].x = tabLeft; - - if (tabBelow && tabBelow->IsSelected()) - { - pnts[n++].y = (long)raisedTop; - } - else - { - pnts[n++].y = top; - } - pnts[n].x = tabLeft; pnts[n++].y = tabTop + 2; - pnts[n].x = tabLeft + 2; pnts[n++].y = tabTop; - pnts[n].x = tabRight - 1; pnts[n++].y = tabTop; - dc.DrawLines(n, pnts); - - dc.SetPen(*(m_view->GetShadowPen())); - if (GetRowPosition() >= maxPositions - 1) - { - dc.DrawLine( - tabRight, - (tabTop + 2), - tabRight, - bottom - ); - dc.DrawLine( - tabRight, - bottom, - (tabRight - m_view->GetHorizontalTabOffset()), - bottom - ); - } - else - { - if (tabBelowRight && tabBelowRight->IsSelected()) - { - dc.DrawLine( - tabRight, - (long)raisedTop, - tabRight, - tabTop + 1 - ); - } - else - { - dc.DrawLine( - tabRight, - top - 1, - tabRight, - tabTop + 1 - ); - } - } - - dc.SetPen(*wxBLACK_PEN); - dc.DrawPoint( - tabRight, - tabTop + 1 - ); - dc.DrawPoint( - tabRight + 1, - tabTop + 2 - ); - if (GetRowPosition() >= maxPositions - 1) - { - // draw right hand edge to bottom of view - dc.DrawLine( - tabRight + 1, - bottom + 1, - tabRight + 1, - tabTop + 2 - ); - dc.DrawLine( - tabRight + 1, - bottom + 1, - (tabRight - m_view->GetHorizontalTabOffset()), - bottom + 1 - ); - } - else - { - // draw right hand edge of TAB - if (tabBelowRight && tabBelowRight->IsSelected()) - { - dc.DrawLine( - tabRight + 1, - (long)(raisedTop - 1), - tabRight + 1, - tabTop + 2 - ); - } - else - { - dc.DrawLine( - tabRight + 1, - top - 1, - tabRight + 1, - tabTop + 2 - ); - } - } - } - - // Draw centered text - dc.SetPen(*wxBLACK_PEN); - if (m_isSelected) - { - dc.SetFont(*(m_view->GetSelectedTabFont())); - } - else - { - dc.SetFont(*(GetFont())); - } - - wxColour col(m_view->GetTextColour()); - dc.SetTextForeground(col); - dc.SetBackgroundMode(wxTRANSPARENT); - long textWidth, textHeight; - dc.GetTextExtent(GetLabel(), &textWidth, &textHeight); - - float textX = (tabLeft + tabRight - textWidth) / 2; - float textY = (tabInc + tabTop + m_view->GetVerticalTabTextSpacing()); - - dc.DrawText(GetLabel(), (long)textX, (long)textY); -#endif -} - -bool wxTabControl::HitTest(int x, int y) const -{ - // Top-left of tab control - int tabX1 = GetX() + m_view->GetViewRect().x; - int tabY1 = GetY() + m_view->GetViewRect().y; - - // Bottom-right - int tabX2 = tabX1 + GetWidth(); - int tabY2 = tabY1 + GetHeight(); - - if (x >= tabX1 && y >= tabY1 && x <= tabX2 && y <= tabY2) - return TRUE; - else - return FALSE; -} - -IMPLEMENT_DYNAMIC_CLASS(wxTabView, wxObject) - -wxTabView::wxTabView(long style) -{ - m_noTabs = 0; - m_tabStyle = style; - m_tabSelection = -1; - m_tabHeight = 20; - m_tabSelectionHeight = m_tabHeight + 2; - m_tabWidth = 80; - m_tabHorizontalOffset = 10; - m_tabHorizontalSpacing = 2; - m_tabVerticalTextSpacing = 3; - m_topMargin = 5; - m_tabViewRect.x = 20; - m_tabViewRect.y = 20; - m_tabViewRect.width = 300; - m_tabViewRect.x = 300; - m_highlightColour = *wxWHITE; - m_shadowColour = wxColour(128, 128, 128); - m_backgroundColour = *wxLIGHT_GREY; - m_textColour = *wxBLACK; - m_highlightPen = wxWHITE_PEN; - m_shadowPen = wxGREY_PEN; - m_backgroundPen = wxLIGHT_GREY_PEN; - m_backgroundBrush = wxLIGHT_GREY_BRUSH; - m_tabFont = wxSystemSettings::GetSystemFont(wxSYS_DEFAULT_GUI_FONT); - m_tabSelectedFont = wxSystemSettings::GetSystemFont(wxSYS_DEFAULT_GUI_FONT); - m_window = (wxWindow *) NULL; -} - -wxTabView::~wxTabView() -{ - ClearTabs(TRUE); -} - -// Automatically positions tabs -// TODO: this should just add the tab to a list, and then -// a layout function (e.g. Realize) should be called when all tabs have been added. -// The view rect could easily change as the view window is resized. -wxTabControl *wxTabView::AddTab(int id, const wxString& label, wxTabControl *existingTab) -{ - // First, find which layer we should be adding to. - wxNode *node = m_layers.Last(); - if (!node) - { - wxTabLayer *newLayer = new wxTabLayer; - node = m_layers.Append(newLayer); - } - // Check if adding another tab control would go off the - // right-hand edge of the layer. - wxTabLayer *tabLayer = (wxTabLayer *)node->Data(); - wxNode *lastTabNode = tabLayer->Last(); - if (lastTabNode) - { - wxTabControl *lastTab = (wxTabControl *)lastTabNode->Data(); - // Start another layer (row). - // Tricky choice: can't just check if will be overlapping the edge, because - // this happens anyway for 2nd and subsequent rows. - // Should check this for 1st row, and then subsequent rows should not exceed 1st - // in length. - if (((tabLayer == m_layers.First()->Data()) && ((lastTab->GetX() + 2*lastTab->GetWidth() + GetHorizontalTabSpacing()) - > GetViewRect().width)) || - ((tabLayer != m_layers.First()->Data()) && (tabLayer->Number() == ((wxTabLayer *)m_layers.First()->Data())->Number()))) - { - tabLayer = new wxTabLayer; - m_layers.Append(tabLayer); - lastTabNode = (wxNode *) NULL; - } - } - int layer = m_layers.Number() - 1; - - wxTabControl *tabControl = existingTab; - if (!existingTab) - tabControl = OnCreateTabControl(); - tabControl->SetRowPosition(tabLayer->Number()); - tabControl->SetColPosition(layer); - - wxTabControl *lastTab = (wxTabControl *) NULL; - if (lastTabNode) - lastTab = (wxTabControl *)lastTabNode->Data(); - - // Top of new tab - int verticalOffset = (- GetTopMargin()) - ((layer+1)*GetTabHeight()); - // Offset from view top-left - int horizontalOffset = 0; - if (!lastTab) - horizontalOffset = layer*GetHorizontalTabOffset(); - else - horizontalOffset = lastTab->GetX() + GetTabWidth() + GetHorizontalTabSpacing(); - - tabControl->SetPosition(horizontalOffset, verticalOffset); - tabControl->SetSize(GetTabWidth(), GetTabHeight()); - tabControl->SetId(id); - tabControl->SetLabel(label); - tabControl->SetFont(* GetTabFont()); - - tabLayer->Append(tabControl); - m_noTabs ++; - - return tabControl; -} - -// Remove the tab without deleting the window -bool wxTabView::RemoveTab(int id) -{ - wxNode *layerNode = m_layers.First(); - while (layerNode) - { - wxTabLayer *layer = (wxTabLayer *)layerNode->Data(); - wxNode *tabNode = layer->First(); - while (tabNode) - { - wxTabControl *tab = (wxTabControl *)tabNode->Data(); - if (tab->GetId() == id) - { - if (id == m_tabSelection) - m_tabSelection = -1; - delete tab; - delete tabNode; - m_noTabs --; - - // The layout has changed - Layout(); - return TRUE; - } - tabNode = tabNode->Next(); - } - layerNode = layerNode->Next(); - } - return FALSE; -} - -bool wxTabView::SetTabText(int id, const wxString& label) -{ - wxTabControl* control = FindTabControlForId(id); - if (!control) - return FALSE; - control->SetLabel(label); - return TRUE; -} - -wxString wxTabView::GetTabText(int id) const -{ - wxTabControl* control = FindTabControlForId(id); - if (!control) - return wxEmptyString; - else - return control->GetLabel(); -} - -// Returns the total height of the tabs component -- this may be several -// times the height of a tab, if there are several tab layers (rows). -int wxTabView::GetTotalTabHeight() -{ - int minY = 0; - - wxNode *layerNode = m_layers.First(); - while (layerNode) - { - wxTabLayer *layer = (wxTabLayer *)layerNode->Data(); - wxNode *tabNode = layer->First(); - while (tabNode) - { - wxTabControl *tab = (wxTabControl *)tabNode->Data(); - - if (tab->GetY() < minY) - minY = tab->GetY(); - - tabNode = tabNode->Next(); - } - layerNode = layerNode->Next(); - } - - return - minY; -} - -void wxTabView::ClearTabs(bool deleteTabs) -{ - wxNode *layerNode = m_layers.First(); - while (layerNode) - { - wxTabLayer *layer = (wxTabLayer *)layerNode->Data(); - wxNode *tabNode = layer->First(); - while (tabNode) - { - wxTabControl *tab = (wxTabControl *)tabNode->Data(); - if (deleteTabs) - delete tab; - wxNode *next = tabNode->Next(); - delete tabNode; - tabNode = next; - } - wxNode *nextLayerNode = layerNode->Next(); - delete layer; - delete layerNode; - layerNode = nextLayerNode; - } - m_noTabs = 0; -} - - -// Layout tabs (optional, e.g. if resizing window) -void wxTabView::Layout(void) -{ - // Make a list of the tab controls, deleting the wxTabLayers. - wxList controls; - - wxNode *layerNode = m_layers.First(); - while (layerNode) - { - wxTabLayer *layer = (wxTabLayer *)layerNode->Data(); - wxNode *tabNode = layer->First(); - while (tabNode) - { - wxTabControl *tab = (wxTabControl *)tabNode->Data(); - controls.Append(tab); - wxNode *next = tabNode->Next(); - delete tabNode; - tabNode = next; - } - wxNode *nextLayerNode = layerNode->Next(); - delete layer; - delete layerNode; - layerNode = nextLayerNode; - } - - wxTabControl *lastTab = (wxTabControl *) NULL; - - wxTabLayer *currentLayer = new wxTabLayer; - m_layers.Append(currentLayer); - - wxNode *node = controls.First(); - while (node) - { - wxTabControl *tabControl = (wxTabControl *)node->Data(); - if (lastTab) - { - // Start another layer (row). - // Tricky choice: can't just check if will be overlapping the edge, because - // this happens anyway for 2nd and subsequent rows. - // Should check this for 1st row, and then subsequent rows should not exceed 1st - // in length. - if (((currentLayer == m_layers.First()->Data()) && ((lastTab->GetX() + 2*lastTab->GetWidth() + GetHorizontalTabSpacing()) - > GetViewRect().width)) || - ((currentLayer != m_layers.First()->Data()) && (currentLayer->Number() == ((wxTabLayer *)m_layers.First()->Data())->Number()))) - { - currentLayer = new wxTabLayer; - m_layers.Append(currentLayer); - lastTab = (wxTabControl *) NULL; - } - } - - int layer = m_layers.Number() - 1; - - tabControl->SetRowPosition(currentLayer->Number()); - tabControl->SetColPosition(layer); - - // Top of new tab - int verticalOffset = (- GetTopMargin()) - ((layer+1)*GetTabHeight()); - // Offset from view top-left - int horizontalOffset = 0; - if (!lastTab) - horizontalOffset = layer*GetHorizontalTabOffset(); - else - horizontalOffset = lastTab->GetX() + GetTabWidth() + GetHorizontalTabSpacing(); - - tabControl->SetPosition(horizontalOffset, verticalOffset); - tabControl->SetSize(GetTabWidth(), GetTabHeight()); - - currentLayer->Append(tabControl); - lastTab = tabControl; - - node = node->Next(); - } - - // Move the selected tab to the bottom - wxTabControl *control = FindTabControlForId(m_tabSelection); - if (control) - MoveSelectionTab(control); - -} - -// Draw all tabs -void wxTabView::Draw(wxDC& dc) -{ - // Don't draw anything if there are no tabs. - if (GetNumberOfTabs() == 0) - return; - - // Draw top margin area (beneath tabs and above view area) - if (GetTabStyle() & wxTAB_STYLE_COLOUR_INTERIOR) - { - dc.SetPen(*wxTRANSPARENT_PEN); - dc.SetBrush(*GetBackgroundBrush()); - - // Add 1 because the pen is transparent. Under Motif, may be different. - dc.DrawRectangle( - m_tabViewRect.x, - (m_tabViewRect.y - m_topMargin), - (m_tabViewRect.width + 1), - (m_topMargin + 1) - ); - } - - // Draw layers in reverse order - wxNode *node = m_layers.Last(); - while (node) - { - wxTabLayer *layer = (wxTabLayer *)node->Data(); - wxNode *node2 = layer->First(); - while (node2) - { - wxTabControl *control = (wxTabControl *)node2->Data(); - control->OnDraw(dc, (node2->Next() == NULL)); - node2 = node2->Next(); - } - - node = node->Previous(); - } - - -#ifndef wxUSE_NEW_METHOD - if (GetTabStyle() & wxTAB_STYLE_DRAW_BOX) - { - dc.SetPen(* GetShadowPen()); - - // Draw bottom line - dc.DrawLine( - (GetViewRect().x + 1), - (GetViewRect().y + GetViewRect().height), - (GetViewRect().x + GetViewRect().width + 1), - (GetViewRect().y + GetViewRect().height) - ); - - // Draw right line - dc.DrawLine( - (GetViewRect().x + GetViewRect().width), - (GetViewRect().y - GetTopMargin() + 1), - (GetViewRect().x + GetViewRect().width), - (GetViewRect().y + GetViewRect().height) - ); - - dc.SetPen(* wxBLACK_PEN); - - // Draw bottom line - dc.DrawLine( - (GetViewRect().x), - (GetViewRect().y + GetViewRect().height + 1), -#if defined(__WXMOTIF__) - (GetViewRect().x + GetViewRect().width + 1), -#else - (GetViewRect().x + GetViewRect().width + 2), -#endif - - (GetViewRect().y + GetViewRect().height + 1) - ); - - // Draw right line - dc.DrawLine( - (GetViewRect().x + GetViewRect().width + 1), - (GetViewRect().y - GetTopMargin()), - (GetViewRect().x + GetViewRect().width + 1), - (GetViewRect().y + GetViewRect().height + 1) - ); - } -#endif -} - -// Process mouse event, return FALSE if we didn't process it -bool wxTabView::OnEvent(wxMouseEvent& event) -{ - if (!event.LeftDown()) - return FALSE; - - float x, y; - event.Position(&x, &y); - - wxTabControl *hitControl = (wxTabControl *) NULL; - - wxNode *node = m_layers.First(); - while (node) - { - wxTabLayer *layer = (wxTabLayer *)node->Data(); - wxNode *node2 = layer->First(); - while (node2) - { - wxTabControl *control = (wxTabControl *)node2->Data(); - if (control->HitTest((int)x, (int)y)) - { - hitControl = control; - node = (wxNode *) NULL; - node2 = (wxNode *) NULL; - } - else - node2 = node2->Next(); - } - - if (node) - node = node->Next(); - } - - if (!hitControl) - return FALSE; - - wxTabControl *currentTab = FindTabControlForId(m_tabSelection); - - if (hitControl == currentTab) - return FALSE; - - ChangeTab(hitControl); - - return TRUE; -} - -bool wxTabView::ChangeTab(wxTabControl *control) -{ - wxTabControl *currentTab = FindTabControlForId(m_tabSelection); - int oldTab = -1; - if (currentTab) - oldTab = currentTab->GetId(); - - if (control == currentTab) - return TRUE; - - if (m_layers.Number() == 0) - return FALSE; - - if (!OnTabPreActivate(control->GetId(), oldTab)) - return FALSE; - - // Move the tab to the bottom - MoveSelectionTab(control); - - if (currentTab) - currentTab->SetSelected(FALSE); - - control->SetSelected(TRUE); - m_tabSelection = control->GetId(); - - OnTabActivate(control->GetId(), oldTab); - - // Leave window refresh for the implementing window - - return TRUE; -} - -// Move the selected tab to the bottom layer, if necessary, -// without calling app activation code -bool wxTabView::MoveSelectionTab(wxTabControl *control) -{ - if (m_layers.Number() == 0) - return FALSE; - - wxTabLayer *firstLayer = (wxTabLayer *)m_layers.First()->Data(); - - // Find what column this tab is at, so we can swap with the one at the bottom. - // If we're on the bottom layer, then no need to swap. - if (!firstLayer->Member(control)) - { - // Do a swap - int col = 0; - wxNode *thisNode = FindTabNodeAndColumn(control, &col); - if (!thisNode) - return FALSE; - wxNode *otherNode = firstLayer->Nth(col); - if (!otherNode) - return FALSE; - - // If this is already in the bottom layer, return now - if (otherNode == thisNode) - return TRUE; - - wxTabControl *otherTab = (wxTabControl *)otherNode->Data(); - - // We now have pointers to the tab to be changed to, - // and the tab on the first layer. Swap tab structures and - // position details. - - int thisX = control->GetX(); - int thisY = control->GetY(); - int thisColPos = control->GetColPosition(); - int otherX = otherTab->GetX(); - int otherY = otherTab->GetY(); - int otherColPos = otherTab->GetColPosition(); - - control->SetPosition(otherX, otherY); - control->SetColPosition(otherColPos); - otherTab->SetPosition(thisX, thisY); - otherTab->SetColPosition(thisColPos); - - // Swap the data for the nodes - thisNode->SetData(otherTab); - otherNode->SetData(control); - } - return TRUE; -} - -// Called when a tab is activated -void wxTabView::OnTabActivate(int /*activateId*/, int /*deactivateId*/) -{ -} - -void wxTabView::SetHighlightColour(const wxColour& col) -{ - m_highlightColour = col; - m_highlightPen = wxThePenList->FindOrCreatePen(col, 1, wxSOLID); -} - -void wxTabView::SetShadowColour(const wxColour& col) -{ - m_shadowColour = col; - m_shadowPen = wxThePenList->FindOrCreatePen(col, 1, wxSOLID); -} - -void wxTabView::SetBackgroundColour(const wxColour& col) -{ - m_backgroundColour = col; - m_backgroundPen = wxThePenList->FindOrCreatePen(col, 1, wxSOLID); - m_backgroundBrush = wxTheBrushList->FindOrCreateBrush(col, wxSOLID); -} - -void wxTabView::SetTabSelection(int sel, bool activateTool) -{ - int oldSel = m_tabSelection; - wxTabControl *control = FindTabControlForId(sel); - wxTabControl *oldControl = FindTabControlForId(m_tabSelection); - - if (!OnTabPreActivate(sel, oldSel)) - return; - - if (control) - control->SetSelected((sel != -1)); // TODO ?? - else if (sel != -1) - { - wxFAIL_MSG(_("Could not find tab for id")); - return; - } - - if (oldControl) - oldControl->SetSelected(FALSE); - - m_tabSelection = sel; - - if (control) - MoveSelectionTab(control); - - if (activateTool) - OnTabActivate(sel, oldSel); -} - -// Find tab control for id -wxTabControl *wxTabView::FindTabControlForId(int id) const -{ - wxNode *node1 = m_layers.First(); - while (node1) - { - wxTabLayer *layer = (wxTabLayer *)node1->Data(); - wxNode *node2 = layer->First(); - while (node2) - { - wxTabControl *control = (wxTabControl *)node2->Data(); - if (control->GetId() == id) - return control; - node2 = node2->Next(); - } - node1 = node1->Next(); - } - return (wxTabControl *) NULL; -} - -// Find tab control for layer, position (starting from zero) -wxTabControl *wxTabView::FindTabControlForPosition(int layer, int position) const -{ - wxNode *node1 = m_layers.Nth(layer); - if (!node1) - return (wxTabControl *) NULL; - wxTabLayer *tabLayer = (wxTabLayer *)node1->Data(); - wxNode *node2 = tabLayer->Nth(position); - if (!node2) - return (wxTabControl *) NULL; - return (wxTabControl *)node2->Data(); -} - -// Find the node and the column at which this control is positioned. -wxNode *wxTabView::FindTabNodeAndColumn(wxTabControl *control, int *col) const -{ - wxNode *node1 = m_layers.First(); - while (node1) - { - wxTabLayer *layer = (wxTabLayer *)node1->Data(); - int c = 0; - wxNode *node2 = layer->First(); - while (node2) - { - wxTabControl *cnt = (wxTabControl *)node2->Data(); - if (cnt == control) - { - *col = c; - return node2; - } - node2 = node2->Next(); - c ++; - } - node1 = node1->Next(); - } - return (wxNode *) NULL; -} - -int wxTabView::CalculateTabWidth(int noTabs, bool adjustView) -{ - m_tabWidth = (int)((m_tabViewRect.width - ((noTabs - 1)*GetHorizontalTabSpacing()))/noTabs); - if (adjustView) - { - m_tabViewRect.width = noTabs*m_tabWidth + ((noTabs-1)*GetHorizontalTabSpacing()); - } - return m_tabWidth; -} - -/* - * wxTabbedDialog - */ - -IMPLEMENT_CLASS(wxTabbedDialog, wxDialog) - -BEGIN_EVENT_TABLE(wxTabbedDialog, wxDialog) - EVT_CLOSE(wxTabbedDialog::OnCloseWindow) - EVT_MOUSE_EVENTS(wxTabbedDialog::OnMouseEvent) - EVT_PAINT(wxTabbedDialog::OnPaint) -END_EVENT_TABLE() - -wxTabbedDialog::wxTabbedDialog(wxWindow *parent, wxWindowID id, - const wxString& title, - const wxPoint& pos, const wxSize& size, - long windowStyle, const wxString& name): - wxDialog(parent, id, title, pos, size, windowStyle, name) -{ - m_tabView = (wxTabView *) NULL; -} - -wxTabbedDialog::~wxTabbedDialog(void) -{ - if (m_tabView) - delete m_tabView; -} - -void wxTabbedDialog::OnCloseWindow(wxCloseEvent& WXUNUSED(event) ) -{ - Destroy(); -} - -void wxTabbedDialog::OnMouseEvent(wxMouseEvent& event ) -{ - if (m_tabView) - m_tabView->OnEvent(event); -} - -void wxTabbedDialog::OnPaint(wxPaintEvent& WXUNUSED(event) ) -{ - wxPaintDC dc(this); - if (m_tabView) - m_tabView->Draw(dc); -} - -/* - * wxTabbedPanel - */ - -IMPLEMENT_CLASS(wxTabbedPanel, wxPanel) - -BEGIN_EVENT_TABLE(wxTabbedPanel, wxPanel) - EVT_MOUSE_EVENTS(wxTabbedPanel::OnMouseEvent) - EVT_PAINT(wxTabbedPanel::OnPaint) -END_EVENT_TABLE() - -wxTabbedPanel::wxTabbedPanel(wxWindow *parent, wxWindowID id, const wxPoint& pos, - const wxSize& size, long windowStyle, const wxString& name): - wxPanel(parent, id, pos, size, windowStyle, name) -{ - m_tabView = (wxTabView *) NULL; -} - -wxTabbedPanel::~wxTabbedPanel(void) -{ - delete m_tabView; -} - -void wxTabbedPanel::OnMouseEvent(wxMouseEvent& event) -{ - if (m_tabView) - m_tabView->OnEvent(event); -} - -void wxTabbedPanel::OnPaint(wxPaintEvent& WXUNUSED(event) ) -{ - wxPaintDC dc(this); - if (m_tabView) - m_tabView->Draw(dc); -} - -/* - * wxPanelTabView - */ - -IMPLEMENT_CLASS(wxPanelTabView, wxTabView) - -wxPanelTabView::wxPanelTabView(wxPanel *pan, long style): wxTabView(style), m_tabWindows(wxKEY_INTEGER) -{ - m_panel = pan; - m_currentWindow = (wxWindow *) NULL; - - if (m_panel->IsKindOf(CLASSINFO(wxTabbedDialog))) - ((wxTabbedDialog *)m_panel)->SetTabView(this); - else if (m_panel->IsKindOf(CLASSINFO(wxTabbedPanel))) - ((wxTabbedPanel *)m_panel)->SetTabView(this); - - SetWindow(m_panel); -} - -wxPanelTabView::~wxPanelTabView(void) -{ - ClearWindows(TRUE); -} - -// Called when a tab is activated -void wxPanelTabView::OnTabActivate(int activateId, int deactivateId) -{ - if (!m_panel) - return; - - wxWindow *oldWindow = ((deactivateId == -1) ? 0 : GetTabWindow(deactivateId)); - wxWindow *newWindow = GetTabWindow(activateId); - - if (oldWindow) - oldWindow->Show(FALSE); - if (newWindow) - newWindow->Show(TRUE); - - m_panel->Refresh(); -} - - -void wxPanelTabView::AddTabWindow(int id, wxWindow *window) -{ - m_tabWindows.Append((long)id, window); - window->Show(FALSE); -} - -wxWindow *wxPanelTabView::GetTabWindow(int id) const -{ - wxNode *node = m_tabWindows.Find((long)id); - if (!node) - return (wxWindow *) NULL; - return (wxWindow *)node->Data(); -} - -void wxPanelTabView::ClearWindows(bool deleteWindows) -{ - if (deleteWindows) - m_tabWindows.DeleteContents(TRUE); - m_tabWindows.Clear(); - m_tabWindows.DeleteContents(FALSE); -} - -void wxPanelTabView::ShowWindowForTab(int id) -{ - wxWindow *newWindow = GetTabWindow(id); - if (newWindow == m_currentWindow) - return; - if (m_currentWindow) - m_currentWindow->Show(FALSE); - newWindow->Show(TRUE); - newWindow->Refresh(); -} - diff --git a/src/generic/textdlgg.cpp b/src/generic/textdlgg.cpp deleted file mode 100644 index c582cc875f..0000000000 --- a/src/generic/textdlgg.cpp +++ /dev/null @@ -1,161 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: textdlgg.cpp -// Purpose: wxTextEntryDialog -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "textdlgg.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include -#include "wx/utils.h" -#include "wx/dialog.h" -#include "wx/listbox.h" -#include "wx/button.h" -#include "wx/stattext.h" -#include "wx/textctrl.h" -#include "wx/layout.h" -#include "wx/intl.h" -#endif - -#include "wx/generic/textdlgg.h" - -// wxTextEntryDialog - -#if !USE_SHARED_LIBRARY -BEGIN_EVENT_TABLE(wxTextEntryDialog, wxDialog) - EVT_BUTTON(wxID_OK, wxTextEntryDialog::OnOK) -END_EVENT_TABLE() - -IMPLEMENT_CLASS(wxTextEntryDialog, wxDialog) -#endif - -// Split message, using constraints to position controls -static void wxSplitMessage2(const char *message, wxList *messageList, wxWindow *parent, wxRowColSizer *sizer) -{ - char *copyMessage = copystring(message); - size_t i = 0; - size_t len = strlen(copyMessage); - char *currentMessage = copyMessage; - -// wxWindow *lastWindow = parent; - - while (i < len) { - while ((i < len) && (copyMessage[i] != '\n')) i++; - if (i < len) copyMessage[i] = 0; - wxStaticText *mess = new wxStaticText(parent, -1, currentMessage); - -/* - wxLayoutConstraints *c = new wxLayoutConstraints; - c->left.SameAs (parent, wxLeft, 10); - c->top.SameAs (lastWindow, wxBottom, 5); - c->right.AsIs (); - c->height.AsIs (); - - mess->SetConstraints(c); -*/ - sizer->AddSizerChild(mess); - - messageList->Append(mess); - - currentMessage = copyMessage + i + 1; - } - delete[] copyMessage; -} - -wxTextEntryDialog::wxTextEntryDialog(wxWindow *parent, const wxString& message, const wxString& caption, - const wxString& value, long style, const wxPoint& pos): - wxDialog(parent, -1, caption, pos, wxDefaultSize, wxDEFAULT_DIALOG_STYLE|wxDIALOG_MODAL) -{ - m_dialogStyle = style; - m_value = value; - - wxBeginBusyCursor(); - - wxSizer *topSizer = new wxSizer(this, wxSizerShrink); - topSizer->SetBorder(10, 10); - - wxRowColSizer *messageSizer = new wxRowColSizer(topSizer, wxSIZER_COLS, 100); - messageSizer->SetName("messageSizer"); - -// bool centre = ((style & wxCENTRE) == wxCENTRE); - - wxList messageList; - wxSplitMessage2(message, &messageList, this, messageSizer); - - // Insert a spacer - wxSpacingSizer *spacingSizer = new wxSpacingSizer(topSizer, wxBelow, messageSizer, 10); - - wxTextCtrl *textCtrl = new wxTextCtrl(this, wxID_TEXT, value, wxPoint(-1, -1), wxSize(350, -1)); - - wxRowColSizer *textSizer = new wxRowColSizer(topSizer, wxSIZER_ROWS); - textSizer->AddSizerChild(textCtrl); - textSizer->SetName("textSizer"); - - // Create constraints for the text sizer - wxLayoutConstraints *textC = new wxLayoutConstraints; - textC->left.SameAs (messageSizer, wxLeft); - textC->top.Below (spacingSizer); - textSizer->SetConstraints(textC); - - // Insert another spacer - wxSpacingSizer *spacingSizer2 = new wxSpacingSizer(topSizer, wxBelow, textSizer, 10); - spacingSizer->SetName("spacingSizer2"); - - // Insert a sizer for the buttons - wxRowColSizer *buttonSizer = new wxRowColSizer(topSizer, wxSIZER_ROWS); - buttonSizer->SetName("buttonSizer"); - - // Specify constraints for the button sizer - wxLayoutConstraints *c = new wxLayoutConstraints; - c->width.AsIs (); - c->height.AsIs (); - c->top.Below (spacingSizer2); - c->centreX.SameAs (textSizer, wxCentreX); - buttonSizer->SetConstraints(c); - - wxButton *ok = NULL; - wxButton *cancel = NULL; - - if (style & wxOK) { - ok = new wxButton(this, wxID_OK, _("OK")); - buttonSizer->AddSizerChild(ok); - } - - if (style & wxCANCEL) { - cancel = new wxButton(this, wxID_CANCEL, _("Cancel")); - buttonSizer->AddSizerChild(cancel); - } - - if (ok) - ok->SetDefault(); - - Layout(); - Centre(wxBOTH); - - wxEndBusyCursor(); -} - -void wxTextEntryDialog::OnOK(wxCommandEvent& WXUNUSED(event) ) -{ - wxTextCtrl *textCtrl = (wxTextCtrl *)FindWindow(wxID_TEXT); - if ( textCtrl ) - m_value = textCtrl->GetValue(); - - EndModal(wxID_OK); -} - diff --git a/src/generic/treectrl.cpp b/src/generic/treectrl.cpp deleted file mode 100644 index 99b984f77d..0000000000 --- a/src/generic/treectrl.cpp +++ /dev/null @@ -1,1554 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: treectrl.cpp -// Purpose: generic tree control implementation -// Author: Robert Roebling -// Created: 01/02/97 -// Modified: 22/10/98 - almost total rewrite, simpler interface (VZ) -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling, Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -// ============================================================================= -// declarations -// ============================================================================= - -// ----------------------------------------------------------------------------- -// headers -// ----------------------------------------------------------------------------- - -#ifdef __GNUG__ - #pragma implementation "treectrl.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#include "wx/generic/treectrl.h" -#include "wx/generic/imaglist.h" -#include "wx/settings.h" -#include "wx/log.h" -#include "wx/intl.h" -#include "wx/dynarray.h" -#include "wx/dcclient.h" -#include "wx/msgdlg.h" - -// ----------------------------------------------------------------------------- -// array types -// ----------------------------------------------------------------------------- - -class WXDLLEXPORT wxGenericTreeItem; - -WX_DEFINE_ARRAY(wxGenericTreeItem *, wxArrayTreeItems); - -// ----------------------------------------------------------------------------- -// private classes -// ----------------------------------------------------------------------------- - -// a tree item -class WXDLLEXPORT wxGenericTreeItem -{ -public: - // ctors & dtor - wxGenericTreeItem() { m_data = NULL; } - wxGenericTreeItem( wxGenericTreeItem *parent, - const wxString& text, - wxDC& dc, - int image, int selImage, - wxTreeItemData *data ); - - ~wxGenericTreeItem(); - - // trivial accessors - wxArrayTreeItems& GetChildren() { return m_children; } - - const wxString& GetText() const { return m_text; } - int GetImage() const { return m_image; } - int GetSelectedImage() const { return m_selImage; } - wxTreeItemData *GetData() const { return m_data; } - - void SetText( const wxString &text, wxDC& dc ); - void SetImage(int image) { m_image = image; } - void SetSelectedImage(int image) { m_selImage = image; } - void SetData(wxTreeItemData *data) { m_data = data; } - - void SetHasPlus(bool has = TRUE) { m_hasPlus = has; } - - void SetBold(bool bold) { m_isBold = bold; } - - int GetX() const { return m_x; } - int GetY() const { return m_y; } - - void SetHeight(int h) { m_height = h; } - - void SetX(int x) { m_x = x; } - void SetY(int y) { m_y = y; } - - wxGenericTreeItem *GetParent() const { return m_parent; } - - // operations - // deletes all children notifying the treectrl about it if !NULL pointer - // given - void DeleteChildren(wxTreeCtrl *tree = NULL); - // FIXME don't know what is it for - void Reset(); - - // get count of all children (and grand children if 'recursively') - size_t GetChildrenCount(bool recursively = TRUE) const; - - void Insert(wxGenericTreeItem *child, size_t index) - { m_children.Insert(child, index); } - - void SetCross( int x, int y ); - void GetSize( int &x, int &y ); - - // return the item at given position (or NULL if no item), onButton is TRUE - // if the point belongs to the item's button, otherwise it lies on the - // button's label - wxGenericTreeItem *HitTest( const wxPoint& point, bool &onButton ); - - void Expand() { m_isCollapsed = FALSE; } - void Collapse() { m_isCollapsed = TRUE; } - - void SetHilight( bool set = TRUE ) { m_hasHilight = set; } - - // status inquiries - bool HasChildren() const { return !m_children.IsEmpty(); } - bool HasHilight() const { return m_hasHilight; } - bool IsExpanded() const { return !m_isCollapsed; } - bool HasPlus() const { return m_hasPlus || HasChildren(); } - bool IsBold() const { return m_isBold; } - -private: - wxString m_text; - - int m_image, - m_selImage; - - wxTreeItemData *m_data; - - // use bitfields to save size - int m_isCollapsed :1; - int m_hasHilight :1; // same as focused - int m_hasPlus :1; // used for item which doesn't have - // children but still has a [+] button - int m_isBold :1; // render the label in bold font - - int m_x, m_y; - long m_height, m_width; - int m_xCross, m_yCross; - int m_level; - wxArrayTreeItems m_children; - wxGenericTreeItem *m_parent; -}; - -// ============================================================================= -// implementation -// ============================================================================= - -// ----------------------------------------------------------------------------- -// wxTreeEvent -// ----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxTreeEvent, wxNotifyEvent) - -wxTreeEvent::wxTreeEvent( wxEventType commandType, int id ) - : wxNotifyEvent( commandType, id ) -{ - m_code = 0; - m_itemOld = (wxGenericTreeItem *)NULL; -} - -// ----------------------------------------------------------------------------- -// wxGenericTreeItem -// ----------------------------------------------------------------------------- - -wxGenericTreeItem::wxGenericTreeItem(wxGenericTreeItem *parent, - const wxString& text, - wxDC& dc, - int image, int selImage, - wxTreeItemData *data) - : m_text(text) -{ - m_image = image; - m_selImage = selImage; - m_data = data; - m_x = m_y = 0; - m_xCross = m_yCross = 0; - - m_level = 0; - - m_isCollapsed = TRUE; - m_hasHilight = FALSE; - m_hasPlus = FALSE; - m_isBold = FALSE; - - m_parent = parent; - - dc.GetTextExtent( m_text, &m_width, &m_height ); -} - -wxGenericTreeItem::~wxGenericTreeItem() -{ - delete m_data; - - wxASSERT_MSG( m_children.IsEmpty(), - "please call DeleteChildren() before deleting the item" ); -} - -void wxGenericTreeItem::DeleteChildren(wxTreeCtrl *tree) -{ - size_t count = m_children.Count(); - for ( size_t n = 0; n < count; n++ ) - { - wxGenericTreeItem *child = m_children[n]; - if ( tree ) - { - tree->SendDeleteEvent(child); - } - - child->DeleteChildren(tree); - delete child; - } - - m_children.Empty(); -} - -void wxGenericTreeItem::SetText( const wxString &text, wxDC& dc ) -{ - m_text = text; - - dc.GetTextExtent( m_text, &m_width, &m_height ); -} - -void wxGenericTreeItem::Reset() -{ - m_text.Empty(); - m_image = - m_selImage = -1; - m_data = NULL; - m_x = m_y = - m_height = m_width = 0; - m_xCross = - m_yCross = 0; - - m_level = 0; - - DeleteChildren(); - m_isCollapsed = TRUE; - - m_parent = (wxGenericTreeItem *)NULL; -} - -size_t wxGenericTreeItem::GetChildrenCount(bool recursively) const -{ - size_t count = m_children.Count(); - if ( !recursively ) - return count; - - size_t total = count; - for ( size_t n = 0; n < count; n++ ) - { - total += m_children[n]->GetChildrenCount(); - } - - return total; -} - -void wxGenericTreeItem::SetCross( int x, int y ) -{ - m_xCross = x; - m_yCross = y; -} - -void wxGenericTreeItem::GetSize( int &x, int &y ) -{ - if ( y < m_y ) y = m_y; - int width = m_x + m_width; - if (width > x) x = width; - - if (IsExpanded()) - { - size_t count = m_children.Count(); - for ( size_t n = 0; n < count; n++ ) - { - m_children[n]->GetSize( x, y ); - } - } -} - -wxGenericTreeItem *wxGenericTreeItem::HitTest( const wxPoint& point, - bool &onButton ) -{ - if ((point.y > m_y) && (point.y < m_y + m_height)) - { - // FIXME why +5? - if ((point.x > m_xCross-5) && (point.x < m_xCross+5) && - (point.y > m_yCross-5) && (point.y < m_yCross+5) && - (IsExpanded() || HasPlus())) - { - onButton = TRUE; - return this; - } - - int w = m_width; - if (m_image != -1) w += 20; - - if ((point.x > m_x) && (point.x < m_x+w)) - { - onButton = FALSE; - return this; - } - } - else - { - if (!m_isCollapsed) - { - size_t count = m_children.Count(); - for ( size_t n = 0; n < count; n++ ) - { - wxGenericTreeItem *res = m_children[n]->HitTest( point, onButton ); - if ( res != NULL ) - return res; - } - } - } - - return NULL; -} - -// ----------------------------------------------------------------------------- -// wxTreeCtrl implementation -// ----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxTreeCtrl, wxScrolledWindow) - -BEGIN_EVENT_TABLE(wxTreeCtrl,wxScrolledWindow) - EVT_PAINT (wxTreeCtrl::OnPaint) - EVT_MOUSE_EVENTS (wxTreeCtrl::OnMouse) - EVT_CHAR (wxTreeCtrl::OnChar) - EVT_SET_FOCUS (wxTreeCtrl::OnSetFocus) - EVT_KILL_FOCUS (wxTreeCtrl::OnKillFocus) - EVT_IDLE (wxTreeCtrl::OnIdle) -END_EVENT_TABLE() - -// ----------------------------------------------------------------------------- -// construction/destruction -// ----------------------------------------------------------------------------- -void wxTreeCtrl::Init() -{ - m_current = - m_anchor = (wxGenericTreeItem *) NULL; - m_hasFocus = FALSE; - m_dirty = FALSE; - - m_xScroll = 0; - m_yScroll = 0; - m_lineHeight = 10; - m_indent = 15; - - m_hilightBrush = new wxBrush - ( - wxSystemSettings::GetSystemColour(wxSYS_COLOUR_HIGHLIGHT), - wxSOLID - ); - - m_imageListNormal = - m_imageListState = (wxImageList *) NULL; - - m_dragCount = 0; -} - -bool wxTreeCtrl::Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos, const wxSize& size, - long style, - const wxValidator &validator, - const wxString& name ) -{ - Init(); - - wxScrolledWindow::Create( parent, id, pos, size, style|wxHSCROLL|wxVSCROLL, name ); - - SetValidator( validator ); - - SetBackgroundColour( *wxWHITE ); - m_dottedPen = wxPen( *wxBLACK, 0, 0 ); - - return TRUE; -} - -wxTreeCtrl::~wxTreeCtrl() -{ - wxDELETE( m_hilightBrush ); - - DeleteAllItems(); -} - -// ----------------------------------------------------------------------------- -// accessors -// ----------------------------------------------------------------------------- - -size_t wxTreeCtrl::GetCount() const -{ - return m_anchor == NULL ? 0u : m_anchor->GetChildrenCount(); -} - -void wxTreeCtrl::SetIndent(unsigned int indent) -{ - m_indent = indent; - Refresh(); -} - -size_t wxTreeCtrl::GetChildrenCount(const wxTreeItemId& item, bool recursively) -{ - wxCHECK_MSG( item.IsOk(), 0u, "invalid tree item" ); - - return item.m_pItem->GetChildrenCount(recursively); -} - -// ----------------------------------------------------------------------------- -// functions to work with tree items -// ----------------------------------------------------------------------------- - -wxString wxTreeCtrl::GetItemText(const wxTreeItemId& item) const -{ - wxCHECK_MSG( item.IsOk(), "", "invalid tree item" ); - - return item.m_pItem->GetText(); -} - -int wxTreeCtrl::GetItemImage(const wxTreeItemId& item) const -{ - wxCHECK_MSG( item.IsOk(), -1, "invalid tree item" ); - - return item.m_pItem->GetImage(); -} - -int wxTreeCtrl::GetItemSelectedImage(const wxTreeItemId& item) const -{ - wxCHECK_MSG( item.IsOk(), -1, "invalid tree item" ); - - return item.m_pItem->GetSelectedImage(); -} - -wxTreeItemData *wxTreeCtrl::GetItemData(const wxTreeItemId& item) const -{ - wxCHECK_MSG( item.IsOk(), NULL, "invalid tree item" ); - - return item.m_pItem->GetData(); -} - -void wxTreeCtrl::SetItemText(const wxTreeItemId& item, const wxString& text) -{ - wxCHECK_RET( item.IsOk(), "invalid tree item" ); - - wxClientDC dc(this); - item.m_pItem->SetText(text, dc); -} - -void wxTreeCtrl::SetItemImage(const wxTreeItemId& item, int image) -{ - wxCHECK_RET( item.IsOk(), "invalid tree item" ); - - item.m_pItem->SetImage(image); -} - -void wxTreeCtrl::SetItemSelectedImage(const wxTreeItemId& item, int image) -{ - wxCHECK_RET( item.IsOk(), "invalid tree item" ); - - item.m_pItem->SetSelectedImage(image); -} - -void wxTreeCtrl::SetItemData(const wxTreeItemId& item, wxTreeItemData *data) -{ - wxCHECK_RET( item.IsOk(), "invalid tree item" ); - - item.m_pItem->SetData(data); -} - -void wxTreeCtrl::SetItemHasChildren(const wxTreeItemId& item, bool has) -{ - wxCHECK_RET( item.IsOk(), "invalid tree item" ); - - item.m_pItem->SetHasPlus(has); -} - -void wxTreeCtrl::SetItemBold(const wxTreeItemId& item, bool bold) -{ - wxCHECK_RET( item.IsOk(), "invalid tree item" ); - - // avoid redrawing the tree if no real change - wxGenericTreeItem *pItem = item.m_pItem; - if ( pItem->IsBold() != bold ) - { - pItem->SetBold(bold); - RefreshLine(pItem); - } -} - -// ----------------------------------------------------------------------------- -// item status inquiries -// ----------------------------------------------------------------------------- - -bool wxTreeCtrl::IsVisible(const wxTreeItemId& WXUNUSED(item)) const -{ - wxFAIL_MSG("not implemented"); - - return TRUE; -} - -bool wxTreeCtrl::ItemHasChildren(const wxTreeItemId& item) const -{ - wxCHECK_MSG( item.IsOk(), FALSE, "invalid tree item" ); - - return !item.m_pItem->GetChildren().IsEmpty(); -} - -bool wxTreeCtrl::IsExpanded(const wxTreeItemId& item) const -{ - wxCHECK_MSG( item.IsOk(), FALSE, "invalid tree item" ); - - return item.m_pItem->IsExpanded(); -} - -bool wxTreeCtrl::IsSelected(const wxTreeItemId& item) const -{ - wxCHECK_MSG( item.IsOk(), FALSE, "invalid tree item" ); - - return item.m_pItem->HasHilight(); -} - -bool wxTreeCtrl::IsBold(const wxTreeItemId& item) const -{ - wxCHECK_MSG( item.IsOk(), FALSE, "invalid tree item" ); - - return item.m_pItem->IsBold(); -} - -// ----------------------------------------------------------------------------- -// navigation -// ----------------------------------------------------------------------------- - -wxTreeItemId wxTreeCtrl::GetParent(const wxTreeItemId& item) const -{ - wxCHECK_MSG( item.IsOk(), wxTreeItemId(), "invalid tree item" ); - - return item.m_pItem->GetParent(); -} - -wxTreeItemId wxTreeCtrl::GetFirstChild(const wxTreeItemId& item, long& cookie) const -{ - wxCHECK_MSG( item.IsOk(), wxTreeItemId(), "invalid tree item" ); - - cookie = 0; - return GetNextChild(item, cookie); -} - -wxTreeItemId wxTreeCtrl::GetNextChild(const wxTreeItemId& item, long& cookie) const -{ - wxCHECK_MSG( item.IsOk(), wxTreeItemId(), "invalid tree item" ); - - wxArrayTreeItems& children = item.m_pItem->GetChildren(); - if ( (size_t)cookie < children.Count() ) - { - return children.Item(cookie++); - } - else - { - // there are no more of them - return wxTreeItemId(); - } -} - -wxTreeItemId wxTreeCtrl::GetLastChild(const wxTreeItemId& item) const -{ - wxCHECK_MSG( item.IsOk(), wxTreeItemId(), "invalid tree item" ); - - wxArrayTreeItems& children = item.m_pItem->GetChildren(); - return children.IsEmpty() ? wxTreeItemId() : children.Last(); -} - -wxTreeItemId wxTreeCtrl::GetNextSibling(const wxTreeItemId& item) const -{ - wxCHECK_MSG( item.IsOk(), wxTreeItemId(), "invalid tree item" ); - - wxGenericTreeItem *i = item.m_pItem; - wxGenericTreeItem *parent = i->GetParent(); - if ( parent == NULL ) - { - // root item doesn't have any siblings - return wxTreeItemId(); - } - - wxArrayTreeItems& siblings = parent->GetChildren(); - int index = siblings.Index(i); - wxASSERT( index != wxNOT_FOUND ); // I'm not a child of my parent? - - size_t n = (size_t)(index + 1); - return n == siblings.Count() ? wxTreeItemId() : wxTreeItemId(siblings[n]); -} - -wxTreeItemId wxTreeCtrl::GetPrevSibling(const wxTreeItemId& item) const -{ - wxCHECK_MSG( item.IsOk(), wxTreeItemId(), "invalid tree item" ); - - wxGenericTreeItem *i = item.m_pItem; - wxGenericTreeItem *parent = i->GetParent(); - if ( parent == NULL ) - { - // root item doesn't have any siblings - return wxTreeItemId(); - } - - wxArrayTreeItems& siblings = parent->GetChildren(); - int index = siblings.Index(i); - wxASSERT( index != wxNOT_FOUND ); // I'm not a child of my parent? - - return index == 0 ? wxTreeItemId() - : wxTreeItemId(siblings[(size_t)(index - 1)]); -} - -wxTreeItemId wxTreeCtrl::GetFirstVisibleItem() const -{ - wxFAIL_MSG("not implemented"); - - return wxTreeItemId(); -} - -wxTreeItemId wxTreeCtrl::GetNextVisible(const wxTreeItemId& item) const -{ - wxCHECK_MSG( item.IsOk(), wxTreeItemId(), "invalid tree item" ); - - wxFAIL_MSG("not implemented"); - - return wxTreeItemId(); -} - -wxTreeItemId wxTreeCtrl::GetPrevVisible(const wxTreeItemId& item) const -{ - wxCHECK_MSG( item.IsOk(), wxTreeItemId(), "invalid tree item" ); - - wxFAIL_MSG("not implemented"); - - return wxTreeItemId(); -} - -// ----------------------------------------------------------------------------- -// operations -// ----------------------------------------------------------------------------- - -wxTreeItemId wxTreeCtrl::DoInsertItem(const wxTreeItemId& parentId, - size_t previous, - const wxString& text, - int image, int selImage, - wxTreeItemData *data) -{ - wxGenericTreeItem *parent = parentId.m_pItem; - if ( !parent ) - { - // should we give a warning here? - return AddRoot(text, image, selImage, data); - } - - wxClientDC dc(this); - wxGenericTreeItem *item = new wxGenericTreeItem(parent, - text, dc, - image, selImage, - data); - - if ( data != NULL ) - { - data->m_pItem = item; - } - - parent->Insert( item, previous ); - - m_dirty = TRUE; - - return item; -} - -wxTreeItemId wxTreeCtrl::AddRoot(const wxString& text, - int image, int selImage, - wxTreeItemData *data) -{ - wxCHECK_MSG( !m_anchor, wxTreeItemId(), "tree can have only one root" ); - - wxClientDC dc(this); - m_anchor = new wxGenericTreeItem((wxGenericTreeItem *)NULL, text, dc, - image, selImage, data); - if ( data != NULL ) - { - data->m_pItem = m_anchor; - } - - AdjustMyScrollbars(); - Refresh(); - - return m_anchor; -} - -wxTreeItemId wxTreeCtrl::PrependItem(const wxTreeItemId& parent, - const wxString& text, - int image, int selImage, - wxTreeItemData *data) -{ - return DoInsertItem(parent, 0u, text, image, selImage, data); -} - -wxTreeItemId wxTreeCtrl::InsertItem(const wxTreeItemId& parentId, - const wxTreeItemId& idPrevious, - const wxString& text, - int image, int selImage, - wxTreeItemData *data) -{ - wxGenericTreeItem *parent = parentId.m_pItem; - if ( !parent ) - { - // should we give a warning here? - return AddRoot(text, image, selImage, data); - } - - int index = parent->GetChildren().Index(idPrevious.m_pItem); - wxASSERT_MSG( index != wxNOT_FOUND, - "previous item in wxTreeCtrl::InsertItem() is not a sibling" ); - return DoInsertItem(parentId, (size_t)index, text, image, selImage, data); -} - -wxTreeItemId wxTreeCtrl::AppendItem(const wxTreeItemId& parentId, - const wxString& text, - int image, int selImage, - wxTreeItemData *data) -{ - wxGenericTreeItem *parent = parentId.m_pItem; - if ( !parent ) - { - // should we give a warning here? - return AddRoot(text, image, selImage, data); - } - - return DoInsertItem(parent, parent->GetChildren().Count(), text, - image, selImage, data); -} - -void wxTreeCtrl::SendDeleteEvent(wxGenericTreeItem *item) -{ - wxTreeEvent event( wxEVT_COMMAND_TREE_DELETE_ITEM, GetId() ); - event.m_item = item; - event.SetEventObject( this ); - ProcessEvent( event ); -} - -void wxTreeCtrl::DeleteChildren(const wxTreeItemId& itemId) -{ - wxGenericTreeItem *item = itemId.m_pItem; - item->DeleteChildren(this); - - m_dirty = TRUE; -} - -void wxTreeCtrl::Delete(const wxTreeItemId& itemId) -{ - wxGenericTreeItem *item = itemId.m_pItem; - wxGenericTreeItem *parent = item->GetParent(); - - if ( parent ) - { - parent->GetChildren().Remove(item); - } - - item->DeleteChildren(this); - SendDeleteEvent(item); - delete item; - - m_dirty = TRUE; -} - -void wxTreeCtrl::DeleteAllItems() -{ - if ( m_anchor ) - { - m_anchor->DeleteChildren(this); - delete m_anchor; - - m_anchor = NULL; - - m_dirty = TRUE; - } -} - -void wxTreeCtrl::Expand(const wxTreeItemId& itemId) -{ - wxGenericTreeItem *item = itemId.m_pItem; - - if ( !item->HasPlus() ) - return; - - if ( item->IsExpanded() ) - return; - - wxTreeEvent event( wxEVT_COMMAND_TREE_ITEM_EXPANDING, GetId() ); - event.m_item = item; - event.SetEventObject( this ); - if ( ProcessEvent( event ) && event.m_code ) - { - // cancelled by program - return; - } - - item->Expand(); - CalculatePositions(); - - RefreshSubtree(item); - - event.SetEventType(wxEVT_COMMAND_TREE_ITEM_EXPANDED); - ProcessEvent( event ); -} - -void wxTreeCtrl::Collapse(const wxTreeItemId& itemId) -{ - wxGenericTreeItem *item = itemId.m_pItem; - - if ( !item->IsExpanded() ) - return; - - wxTreeEvent event( wxEVT_COMMAND_TREE_ITEM_COLLAPSING, GetId() ); - event.m_item = item; - event.SetEventObject( this ); - if ( ProcessEvent( event ) && event.m_code ) - { - // cancelled by program - return; - } - - item->Collapse(); - - wxArrayTreeItems& children = item->GetChildren(); - size_t count = children.Count(); - for ( size_t n = 0; n < count; n++ ) - { - Collapse(children[n]); - } - - CalculatePositions(); - - RefreshSubtree(item); - - event.SetEventType(wxEVT_COMMAND_TREE_ITEM_COLLAPSED); - ProcessEvent( event ); -} - -void wxTreeCtrl::CollapseAndReset(const wxTreeItemId& item) -{ - Collapse(item); - DeleteChildren(item); -} - -void wxTreeCtrl::Toggle(const wxTreeItemId& itemId) -{ - wxGenericTreeItem *item = itemId.m_pItem; - - if ( item->IsExpanded() ) - Collapse(itemId); - else - Expand(itemId); -} - -void wxTreeCtrl::Unselect() -{ - if ( m_current ) - { - m_current->SetHilight( FALSE ); - RefreshLine( m_current ); - } -} - -void wxTreeCtrl::SelectItem(const wxTreeItemId& itemId) -{ - wxGenericTreeItem *item = itemId.m_pItem; - - if ( m_current != item ) - { - wxTreeEvent event( wxEVT_COMMAND_TREE_SEL_CHANGING, GetId() ); - event.m_item = item; - event.m_itemOld = m_current; - event.SetEventObject( this ); - if ( GetEventHandler()->ProcessEvent( event ) && event.WasVetoed() ) - return; - - if ( m_current ) - { - m_current->SetHilight( FALSE ); - RefreshLine( m_current ); - } - - m_current = item; - m_current->SetHilight( TRUE ); - RefreshLine( m_current ); - - event.SetEventType(wxEVT_COMMAND_TREE_SEL_CHANGED); - GetEventHandler()->ProcessEvent( event ); - } -} - -void wxTreeCtrl::EnsureVisible(const wxTreeItemId& item) -{ - wxGenericTreeItem *gitem = item.m_pItem; - - int item_y = gitem->GetY(); - - int start_x = 0; - int start_y = 0; - ViewStart( &start_x, &start_y ); - start_y *= 10; - - int client_h = 0; - int client_w = 0; - GetClientSize( &client_w, &client_h ); - - if (item_y < start_y+3) - { - int x = 0; - int y = 0; - m_anchor->GetSize( x, y ); - y += 2*m_lineHeight; - int x_pos = GetScrollPos( wxHORIZONTAL ); - SetScrollbars( 10, 10, x/10, y/10, x_pos, (item_y-client_h/2)/10 ); - return; - } - - if (item_y > start_y+client_h-16) - { - int x = 0; - int y = 0; - m_anchor->GetSize( x, y ); - y += 2*m_lineHeight; - int x_pos = GetScrollPos( wxHORIZONTAL ); - SetScrollbars( 10, 10, x/10, y/10, x_pos, (item_y-client_h/2)/10 ); - return; - } -} - -void wxTreeCtrl::ScrollTo(const wxTreeItemId& WXUNUSED(item)) -{ - wxFAIL_MSG("not implemented"); -} - -wxTextCtrl *wxTreeCtrl::EditLabel( const wxTreeItemId& WXUNUSED(item), - wxClassInfo* WXUNUSED(textCtrlClass) ) -{ - wxFAIL_MSG("not implemented"); - - return (wxTextCtrl*)NULL; -} - -wxTextCtrl *wxTreeCtrl::GetEditControl() const -{ - wxFAIL_MSG("not implemented"); - - return (wxTextCtrl*)NULL; -} - -void wxTreeCtrl::EndEditLabel(const wxTreeItemId& WXUNUSED(item), bool WXUNUSED(discardChanges)) -{ - wxFAIL_MSG("not implemented"); -} - -// FIXME: tree sorting functions are not reentrant and not MT-safe! -static wxTreeCtrl *s_treeBeingSorted = NULL; - -static int tree_ctrl_compare_func(wxGenericTreeItem **item1, - wxGenericTreeItem **item2) -{ - wxCHECK_MSG( s_treeBeingSorted, 0, "bug in wxTreeCtrl::SortChildren()" ); - - return s_treeBeingSorted->OnCompareItems(*item1, *item2); -} - -int wxTreeCtrl::OnCompareItems(const wxTreeItemId& item1, - const wxTreeItemId& item2) -{ - return strcmp(GetItemText(item1), GetItemText(item2)); -} - -void wxTreeCtrl::SortChildren(const wxTreeItemId& itemId) -{ - wxCHECK_RET( itemId.IsOk(), "invalid tree item" ); - - wxGenericTreeItem *item = itemId.m_pItem; - - wxCHECK_RET( !s_treeBeingSorted, - "wxTreeCtrl::SortChildren is not reentrant" ); - - wxArrayTreeItems& children = item->GetChildren(); - if ( children.Count() > 1 ) - { - s_treeBeingSorted = this; - children.Sort(tree_ctrl_compare_func); - s_treeBeingSorted = NULL; - - m_dirty = TRUE; - } - //else: don't make the tree dirty as nothing changed -} - -wxImageList *wxTreeCtrl::GetImageList() const -{ - return m_imageListNormal; -} - -wxImageList *wxTreeCtrl::GetStateImageList() const -{ - return m_imageListState; -} - -void wxTreeCtrl::SetImageList(wxImageList *imageList) -{ - m_imageListNormal = imageList; -} - -void wxTreeCtrl::SetStateImageList(wxImageList *imageList) -{ - m_imageListState = imageList; -} - -// ----------------------------------------------------------------------------- -// helpers -// ----------------------------------------------------------------------------- - -void wxTreeCtrl::AdjustMyScrollbars() -{ - if (m_anchor) - { - int x = 0; - int y = 0; - m_anchor->GetSize( x, y ); - y += 2*m_lineHeight; - int x_pos = GetScrollPos( wxHORIZONTAL ); - int y_pos = GetScrollPos( wxVERTICAL ); - SetScrollbars( 10, 10, x/10, y/10, x_pos, y_pos ); - } - else - { - SetScrollbars( 0, 0, 0, 0 ); - } -} - -void wxTreeCtrl::PaintItem(wxGenericTreeItem *item, wxDC& dc) -{ - /* render bold items in bold */ - wxFont fontOld; - wxFont fontNew; - - if (item->IsBold()) - { - fontOld = dc.GetFont(); - if (fontOld.Ok()) - { - /* @@ is there any better way to make a bold variant of old font? */ - fontNew = wxFont( fontOld.GetPointSize(), - fontOld.GetFamily(), - fontOld.GetStyle(), - wxBOLD, - fontOld.GetUnderlined()); - dc.SetFont(fontNew); - } - else - { - wxFAIL_MSG("wxDC::GetFont() failed!"); - } - } - - long text_w = 0; - long text_h = 0; - dc.GetTextExtent( item->GetText(), &text_w, &text_h ); - - int image_h = 0; - int image_w = 0; - if ((item->IsExpanded()) && (item->GetSelectedImage() != -1)) - { - m_imageListNormal->GetSize( item->GetSelectedImage(), image_w, image_h ); - image_w += 4; - } - else if (item->GetImage() != -1) - { - m_imageListNormal->GetSize( item->GetImage(), image_w, image_h ); - image_w += 4; - } - - dc.DrawRectangle( item->GetX()-2, item->GetY()-2, image_w+text_w+4, text_h+4 ); - - if ((item->IsExpanded()) && (item->GetSelectedImage() != -1)) - { - dc.SetClippingRegion( item->GetX(), item->GetY(), image_w-2, text_h ); - m_imageListNormal->Draw( item->GetSelectedImage(), dc, - item->GetX(), item->GetY()-1, - wxIMAGELIST_DRAW_TRANSPARENT ); - dc.DestroyClippingRegion(); - } - else if (item->GetImage() != -1) - { - dc.SetClippingRegion( item->GetX(), item->GetY(), image_w-2, text_h ); - m_imageListNormal->Draw( item->GetImage(), dc, - item->GetX(), item->GetY()-1, - wxIMAGELIST_DRAW_TRANSPARENT ); - dc.DestroyClippingRegion(); - } - - dc.SetBackgroundMode(wxTRANSPARENT); - dc.DrawText( item->GetText(), image_w + item->GetX(), item->GetY() ); - - /* restore normal font for bold items */ - if (fontOld.Ok()) - { - dc.SetFont( fontOld); - } -} - -void wxTreeCtrl::PaintLevel( wxGenericTreeItem *item, wxDC &dc, int level, int &y ) -{ - int horizX = level*m_indent; - - item->SetX( horizX+33 ); - item->SetY( y-m_lineHeight/3 ); - item->SetHeight( m_lineHeight ); - - item->SetCross( horizX+15, y ); - - int oldY = y; - - int exposed_x = dc.LogicalToDeviceX( 0 ); - int exposed_y = dc.LogicalToDeviceY( item->GetY()-2 ); - - if (IsExposed( exposed_x, exposed_y, 10000, m_lineHeight+4 )) // 10000 = very much - { - int startX = horizX; - int endX = horizX + 10; - - if (!item->HasChildren()) endX += 20; - - dc.DrawLine( startX, y, endX, y ); - - if (item->HasPlus()) - { - dc.DrawLine( horizX+20, y, horizX+30, y ); - dc.SetPen( *wxGREY_PEN ); - dc.SetBrush( *wxWHITE_BRUSH ); - dc.DrawRectangle( horizX+10, y-4, 11, 9 ); - dc.SetPen( *wxBLACK_PEN ); - dc.DrawLine( horizX+13, y, horizX+18, y ); - - if (!item->IsExpanded()) - { - dc.DrawLine( horizX+15, y-2, horizX+15, y+3 ); - } - } - - if (item->HasHilight()) - { - dc.SetTextForeground( wxSystemSettings::GetSystemColour( wxSYS_COLOUR_HIGHLIGHTTEXT ) ); - - dc.SetBrush( *m_hilightBrush ); - - if (m_hasFocus) - dc.SetPen( *wxBLACK_PEN ); - else - dc.SetPen( *wxTRANSPARENT_PEN ); - - PaintItem(item, dc); - - dc.SetPen( *wxBLACK_PEN ); - dc.SetTextForeground( *wxBLACK ); - dc.SetBrush( *wxWHITE_BRUSH ); - } - else - { - dc.SetBrush( *wxWHITE_BRUSH ); - dc.SetPen( *wxTRANSPARENT_PEN ); - - PaintItem(item, dc); - - dc.SetPen( *wxBLACK_PEN ); - } - } - - if (item->IsExpanded()) - { - int semiOldY = y; - - wxArrayTreeItems& children = item->GetChildren(); - size_t count = children.Count(); - for ( size_t n = 0; n < count; n++ ) - { - y += m_lineHeight; - semiOldY = y; - PaintLevel( children[n], dc, level+1, y ); - } - - /* it may happen that the item is expanded but has no items (when you - * delete all its children for example) - don't draw the vertical line - * in this case */ - if (count > 0) dc.DrawLine( horizX+15, oldY+5, horizX+15, semiOldY ); - } -} - -// ----------------------------------------------------------------------------- -// wxWindows callbacks -// ----------------------------------------------------------------------------- - -void wxTreeCtrl::OnPaint( wxPaintEvent &WXUNUSED(event) ) -{ - if ( !m_anchor ) - return; - - wxPaintDC dc(this); - PrepareDC( dc ); - - dc.SetFont( wxSystemSettings::GetSystemFont( wxSYS_DEFAULT_GUI_FONT ) ); - - dc.SetPen( m_dottedPen ); - m_lineHeight = (int)(dc.GetCharHeight() + 4); - - int y = m_lineHeight / 2 + 2; - PaintLevel( m_anchor, dc, 0, y ); -} - -void wxTreeCtrl::OnSetFocus( wxFocusEvent &WXUNUSED(event) ) -{ - m_hasFocus = TRUE; - - if (m_current) RefreshLine( m_current ); -} - -void wxTreeCtrl::OnKillFocus( wxFocusEvent &WXUNUSED(event) ) -{ - m_hasFocus = FALSE; - - if (m_current) RefreshLine( m_current ); -} - -void wxTreeCtrl::OnChar( wxKeyEvent &event ) -{ - wxTreeEvent te( wxEVT_COMMAND_TREE_KEY_DOWN, GetId() ); - te.m_code = event.KeyCode(); - te.SetEventObject( this ); - GetEventHandler()->ProcessEvent( te ); - - if (m_current == 0) - { - event.Skip(); - return; - } - - switch (event.KeyCode()) - { - case '+': - case WXK_ADD: - if (m_current->HasPlus() && !IsExpanded(m_current)) - { - Expand(m_current); - } - break; - - case '-': - case WXK_SUBTRACT: - if (IsExpanded(m_current)) - { - Collapse(m_current); - } - break; - - case '*': - case WXK_MULTIPLY: - Toggle(m_current); - break; - - case ' ': - case WXK_RETURN: - { - wxTreeEvent event( wxEVT_COMMAND_TREE_ITEM_ACTIVATED, GetId() ); - event.m_item = m_current; - event.m_code = 0; - event.SetEventObject( this ); - GetEventHandler()->ProcessEvent( event ); - } - break; - - // up goes to the previous sibling or to the last of its children if - // it's expanded - case WXK_UP: - { - wxTreeItemId prev = GetPrevSibling( m_current ); - if (!prev) - { - prev = GetParent( m_current ); - long cockie = 0; - wxTreeItemId current = m_current; - if (current == GetFirstChild( prev, cockie )) - { - // otherwise we return to where we came from - SelectItem( prev ); - EnsureVisible( prev ); - break; - } - } - if (prev) - { - while (IsExpanded(prev)) - { - int c = (int)GetChildrenCount( prev, FALSE ); - long cockie = 0; - prev = GetFirstChild( prev, cockie ); - for (int i = 0; i < c-1; i++) - prev = GetNextSibling( prev ); - } - SelectItem( prev ); - EnsureVisible( prev ); - } - } - break; - - // left arrow goes to the parent - case WXK_LEFT: - { - wxTreeItemId prev = GetParent( m_current ); - if (prev) - { - EnsureVisible( prev ); - SelectItem( prev ); - } - } - break; - - case WXK_RIGHT: - // this works the same as the down arrow except that we also expand the - // item if it wasn't expanded yet - Expand(m_current); - // fall through - - case WXK_DOWN: - { - if (IsExpanded(m_current)) - { - long cookie = 0; - wxTreeItemId child = GetFirstChild( m_current, cookie ); - SelectItem( child ); - EnsureVisible( child ); - } - else - { - wxTreeItemId next = GetNextSibling( m_current ); - if (next == 0) - { - wxTreeItemId current = m_current; - while (current && !next) - { - current = GetParent( current ); - if (current) next = GetNextSibling( current ); - } - } - if (next != 0) - { - SelectItem( next ); - EnsureVisible( next ); - } - } - } - break; - - // selects the last visible tree item - case WXK_END: - { - wxTreeItemId last = GetRootItem(); - - while ( last.IsOk() && IsExpanded(last) ) - { - wxTreeItemId lastChild = GetLastChild(last); - - // it may happen if the item was expanded but then all of - // its children have been deleted - so IsExpanded() returned - // TRUE, but GetLastChild() returned invalid item - if ( !lastChild ) - break; - - last = lastChild; - } - - if ( last.IsOk() ) - { - EnsureVisible( last ); - SelectItem( last ); - } - } - break; - - // selects the root item - case WXK_HOME: - { - wxTreeItemId prev = GetRootItem(); - if (prev) - { - EnsureVisible( prev ); - SelectItem( prev ); - } - } - break; - - default: - event.Skip(); - } -} - -wxTreeItemId wxTreeCtrl::HitTest(const wxPoint& point, int& WXUNUSED(flags)) -{ - bool onButton = FALSE; - return m_anchor->HitTest( point, onButton ); -} - -void wxTreeCtrl::OnMouse( wxMouseEvent &event ) -{ - if (!event.LeftIsDown()) m_dragCount = 0; - - if ( !(event.LeftDown() || event.LeftDClick() || event.Dragging()) ) return; - - if ( !m_anchor ) return; - - wxClientDC dc(this); - PrepareDC(dc); - long x = dc.DeviceToLogicalX( (long)event.GetX() ); - long y = dc.DeviceToLogicalY( (long)event.GetY() ); - - bool onButton = FALSE; - wxGenericTreeItem *item = m_anchor->HitTest( wxPoint(x,y), onButton ); - - if (item == NULL) return; /* we hit the blank area */ - - if (event.Dragging()) - { - if (m_dragCount == 2) /* small drag latency (3?) */ - { - m_dragCount = 0; - - wxTreeEvent nevent(wxEVT_COMMAND_TREE_BEGIN_DRAG, GetId()); - nevent.m_item = m_current; - nevent.SetEventObject(this); - GetEventHandler()->ProcessEvent(nevent); - } - else - { - m_dragCount++; - } - return; - } - - if (!IsSelected(item)) SelectItem(item); /* we dont support multiple selections, BTW */ - - if (event.LeftDClick()) - { - wxTreeEvent event( wxEVT_COMMAND_TREE_ITEM_ACTIVATED, GetId() ); - event.m_item = item; - event.m_code = 0; - event.SetEventObject( this ); - GetEventHandler()->ProcessEvent( event ); - } - - if (onButton) - { - Toggle( item ); - } -} - -void wxTreeCtrl::OnIdle( wxIdleEvent &WXUNUSED(event) ) -{ - /* after all changes have been done to the tree control, - * we actually redraw the tree when everything is over */ - - if (!m_dirty) return; - - m_dirty = FALSE; - - CalculatePositions(); - - AdjustMyScrollbars(); -} - -// ----------------------------------------------------------------------------- - -void wxTreeCtrl::CalculateLevel( wxGenericTreeItem *item, wxDC &dc, int level, int &y ) -{ - int horizX = level*m_indent; - - item->SetX( horizX+33 ); - item->SetY( y-m_lineHeight/3-2 ); - item->SetHeight( m_lineHeight ); - - if ( !item->IsExpanded() ) - { - /* we dont need to calculate collapsed branches */ - return; - } - - wxArrayTreeItems& children = item->GetChildren(); - size_t count = children.Count(); - for ( size_t n = 0; n < count; n++ ) - { - y += m_lineHeight; - CalculateLevel( children[n], dc, level+1, y ); /* recurse */ - } -} - -void wxTreeCtrl::CalculatePositions() -{ - if ( !m_anchor ) return; - - wxClientDC dc(this); - PrepareDC( dc ); - - dc.SetFont( wxSystemSettings::GetSystemFont( wxSYS_DEFAULT_GUI_FONT ) ); - - dc.SetPen( m_dottedPen ); - m_lineHeight = (int)(dc.GetCharHeight() + 4); - - int y = m_lineHeight / 2 + 2; - CalculateLevel( m_anchor, dc, 0, y ); /* start recursion */ -} - -void wxTreeCtrl::RefreshSubtree(wxGenericTreeItem *item) -{ - wxClientDC dc(this); - PrepareDC(dc); - - int cw = 0; - int ch = 0; - GetClientSize( &cw, &ch ); - - wxRect rect; - rect.x = dc.LogicalToDeviceX( 0 ); - rect.width = cw; - rect.y = dc.LogicalToDeviceY( item->GetY() ); - rect.height = ch; - - Refresh( TRUE, &rect ); - - AdjustMyScrollbars(); -} - -void wxTreeCtrl::RefreshLine( wxGenericTreeItem *item ) -{ - wxClientDC dc(this); - PrepareDC( dc ); - - wxRect rect; - rect.x = dc.LogicalToDeviceX( item->GetX() - 2 ); - rect.y = dc.LogicalToDeviceY( item->GetY() - 2 ); - rect.width = 1000; - rect.height = dc.GetCharHeight() + 6; - - Refresh( TRUE, &rect ); -} - diff --git a/src/gtk.inc b/src/gtk.inc deleted file mode 100644 index c2fa2e4460..0000000000 --- a/src/gtk.inc +++ /dev/null @@ -1,153 +0,0 @@ -# needed for unactivated -NONE = - -# define library name -LIB_TARGET=wx_gtk2 -LIB_MAJOR=0 -LIB_MINOR=1 - -# define library sources - -LIB_CPP_SRC=\ -\ - common/cmndata.cpp \ - common/config.cpp \ - common/date.cpp \ - common/docmdi.cpp \ - common/docview.cpp \ - common/dynarray.cpp \ - common/dynlib.cpp \ - common/event.cpp \ - common/file.cpp \ - common/fileconf.cpp \ - common/filefn.cpp \ - common/gdicmn.cpp \ - common/hash.cpp \ - common/helpbase.cpp \ - common/intl.cpp \ - common/image.cpp \ - common/ipcbase.cpp \ - common/layout.cpp \ - common/list.cpp \ - common/log.cpp \ - common/matrix.cpp \ - common/memory.cpp \ - common/mimetype.cpp \ - common/module.cpp \ - common/object.cpp \ - common/db.cpp \ - common/dbtable.cpp \ - common/prntbase.cpp \ - common/serbase.cpp \ - common/string.cpp \ - common/textfile.cpp \ - common/time.cpp \ - common/timercmn.cpp \ - common/utilscmn.cpp \ - common/wincmn.cpp \ - common/framecmn.cpp \ - common/stream.cpp \ - common/wfstream.cpp \ - common/datstrm.cpp \ - common/mstream.cpp \ - common/zstream.cpp \ - common/objstrm.cpp \ - common/sckstrm.cpp \ - common/validate.cpp \ - common/valtext.cpp \ - common/variant.cpp \ - common/socket.cpp \ - common/sckaddr.cpp \ - common/sckipc.cpp \ - common/protocol.cpp \ - common/http.cpp \ - common/ftp.cpp \ - common/url.cpp \ - common/tokenzr.cpp \ - common/resource.cpp \ - common/wxexpr.cpp \ -\ - gtk/accel.cpp \ - gtk/app.cpp \ - gtk/bitmap.cpp \ - gtk/bmpbuttn.cpp \ - gtk/brush.cpp \ - gtk/button.cpp \ - gtk/checkbox.cpp \ - gtk/checklst.cpp \ - gtk/choice.cpp \ - gtk/clipbrd.cpp \ - gtk/colour.cpp \ - gtk/control.cpp \ - gtk/combobox.cpp \ - gtk/cursor.cpp \ - gtk/data.cpp \ - gtk/dataobj.cpp \ - gtk/dc.cpp \ - gtk/dcclient.cpp \ - gtk/dcmemory.cpp \ - gtk/dcscreen.cpp \ - gtk/dnd.cpp \ - gtk/dialog.cpp \ - gtk/filedlg.cpp \ - gtk/font.cpp \ - gtk/frame.cpp \ - gtk/gauge.cpp \ - gtk/gdiobj.cpp \ - gtk/icon.cpp \ - gtk/listbox.cpp \ - gtk/main.cpp \ - gtk/mdi.cpp \ - gtk/menu.cpp \ - gtk/minifram.cpp \ - gtk/notebook.cpp \ - gtk/palette.cpp \ - gtk/pen.cpp \ - gtk/radiobox.cpp \ - gtk/radiobut.cpp \ - gtk/region.cpp \ - gtk/scrolbar.cpp \ - gtk/settings.cpp \ - gtk/slider.cpp \ - gtk/spinbutt.cpp \ - gtk/statbox.cpp \ - gtk/statbmp.cpp \ - gtk/stattext.cpp \ - gtk/tbargtk.cpp \ - gtk/textctrl.cpp \ - gtk/timer.cpp \ - gtk/tooltip.cpp \ - gtk/utilsgtk.cpp \ - gtk/utilsres.cpp \ - gtk/window.cpp \ -\ - generic/choicdgg.cpp \ - generic/dcpsg.cpp \ - generic/colrdlgg.cpp \ - generic/dirdlgg.cpp \ - generic/fontdlgg.cpp \ - generic/gridg.cpp \ - generic/imaglist.cpp \ - generic/listctrl.cpp \ - generic/laywin.cpp \ - generic/msgdlgg.cpp \ - generic/panelg.cpp \ - generic/printps.cpp \ - generic/prntdlgg.cpp \ - generic/prop.cpp \ - generic/propform.cpp \ - generic/proplist.cpp \ - generic/sashwin.cpp \ - generic/scrolwin.cpp \ - generic/splitter.cpp \ - generic/statusbr.cpp \ - generic/tabg.cpp \ - generic/textdlgg.cpp \ - generic/treectrl.cpp \ - generic/helpext.cpp \ - generic/helphtml.cpp - -LIB_C_SRC=\ - common/extended.c \ -\ - gtk/win_gtk.c diff --git a/src/gtk/accel.cpp b/src/gtk/accel.cpp deleted file mode 100644 index b15ece7379..0000000000 --- a/src/gtk/accel.cpp +++ /dev/null @@ -1,96 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: accel.cpp -// Purpose: -// Author: Robert Roebling -// Id: $id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "accel.h" -#endif - -#include "wx/accel.h" - -#include - -#ifdef __WXDEBUG__ -#ifdef NULL -#undef NULL -#endif -#define NULL ((void*)0L) -#endif - -//----------------------------------------------------------------------------- -// wxAcceleratorTable -//----------------------------------------------------------------------------- - -class wxAccelRefData: public wxObjectRefData -{ -public: - - wxAccelRefData(void); - - wxList m_accels; -}; - -wxAccelRefData::wxAccelRefData(void) -{ - m_accels.DeleteContents( TRUE ); -} - -//----------------------------------------------------------------------------- - -#define M_ACCELDATA ((wxAccelRefData *)m_refData) - -IMPLEMENT_DYNAMIC_CLASS(wxAcceleratorTable,wxObject) - -wxAcceleratorTable::wxAcceleratorTable() -{ -} - -wxAcceleratorTable::wxAcceleratorTable( int n, wxAcceleratorEntry entries[] ) -{ - m_refData = new wxAccelRefData(); - - for (int i = 0; i < n; i++) - { - int flag = entries[i].GetFlags(); - int keycode = entries[i].GetKeyCode(); - int command = entries[i].GetCommand(); - if ((keycode >= (int)'A') && (keycode <= (int)'Z')) keycode = (int)tolower( (char)keycode ); - M_ACCELDATA->m_accels.Append( new wxAcceleratorEntry( flag, keycode, command ) ); - } -} - -wxAcceleratorTable::~wxAcceleratorTable() -{ -} - -bool wxAcceleratorTable::Ok() const -{ - return (m_refData != NULL); -} - -int wxAcceleratorTable::GetCommand( wxKeyEvent &event ) -{ - if (!Ok()) return -1; - - wxNode *node = M_ACCELDATA->m_accels.First(); - while (node) - { - wxAcceleratorEntry *entry = (wxAcceleratorEntry*)node->Data(); - if ((event.m_keyCode == entry->GetKeyCode()) && - (((entry->GetFlags() & wxACCEL_CTRL) == 0) || event.ControlDown()) && - (((entry->GetFlags() & wxACCEL_SHIFT) == 0) || event.ShiftDown()) && - (((entry->GetFlags() & wxACCEL_ALT) == 0) || event.AltDown() || event.MetaDown())) - { - return entry->GetCommand(); - } - node = node->Next(); - } - - return -1; -} - diff --git a/src/gtk/app.cpp b/src/gtk/app.cpp deleted file mode 100644 index 78511d556f..0000000000 --- a/src/gtk/app.cpp +++ /dev/null @@ -1,566 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: app.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling, Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "app.h" -#endif - -#include "wx/app.h" -#include "wx/gdicmn.h" -#include "wx/utils.h" -#include "wx/intl.h" -#include "wx/log.h" -#include "wx/memory.h" -#include "wx/font.h" -#include "wx/settings.h" -#include "wx/dialog.h" -#if wxUSE_WX_RESOURCES -#include "wx/resource.h" -#endif -#include "wx/module.h" -#include "wx/image.h" -#if wxUSE_THREADS -#include "wx/thread.h" -#endif -#include "unistd.h" - -#ifdef __SUN__ -extern "C" -{ -void usleep(unsigned long usec); -}; -#endif - -#include "glib.h" -#include "gdk/gdk.h" -#include "gtk/gtk.h" -#include "wx/gtk/win_gtk.h" - -#include // usleep() on solaris - -//----------------------------------------------------------------------------- -// global data -//----------------------------------------------------------------------------- - -wxApp *wxTheApp = (wxApp *) NULL; -wxAppInitializerFunction wxApp::m_appInitFn = (wxAppInitializerFunction) NULL; - -extern wxList wxPendingDelete; -extern wxResourceCache *wxTheResourceCache; - -unsigned char g_palette[64*3] = -{ - 0x0, 0x0, 0x0, - 0xff, 0xff, 0xff, - 0xff, 0x0, 0x0, - 0xff, 0xff, 0x0, - 0x0, 0xff, 0x0, - 0x0, 0x0, 0xff, - 0x0, 0xff, 0xff, - 0x99, 0x99, 0x99, - 0xff, 0x88, 0x0, - 0x88, 0x0, 0x0, - 0x0, 0x88, 0x88, - 0x88, 0x88, 0x0, - 0xff, 0xcc, 0x97, - 0xbb, 0xbb, 0xbb, - 0x9f, 0x6b, 0x42, - 0x55, 0x55, 0x55, - 0xdd, 0xdd, 0xdd, - 0x77, 0x77, 0x77, - 0x33, 0x33, 0x33, - 0xcc, 0x0, 0x0, - 0xff, 0x44, 0x0, - 0xff, 0xcc, 0x0, - 0xcc, 0xcc, 0x0, - 0x60, 0x60, 0x0, - 0x0, 0x43, 0x0, - 0x0, 0x7f, 0x0, - 0x0, 0xcc, 0x0, - 0x0, 0x44, 0x44, - 0x0, 0x0, 0x44, - 0x0, 0x0, 0x88, - 0xef, 0xb1, 0x7b, - 0xdf, 0x98, 0x5f, - 0xbf, 0x87, 0x56, - 0x7f, 0x57, 0x26, - 0x5f, 0x39, 0xc, - 0x3f, 0x1c, 0x0, - 0x21, 0x0, 0x0, - 0x0, 0x43, 0x87, - 0x2d, 0x70, 0xaf, - 0x5a, 0x9e, 0xd7, - 0x87, 0xcc, 0xff, - 0xff, 0xe0, 0xba, - 0x21, 0x43, 0xf, - 0x3d, 0x5d, 0x25, - 0x59, 0x78, 0x3a, - 0x75, 0x93, 0x4f, - 0x91, 0xae, 0x64, - 0xad, 0xc8, 0x7a, - 0xf0, 0xa8, 0xef, - 0xd0, 0x88, 0xd0, - 0xaf, 0x66, 0xaf, - 0x8e, 0x44, 0x8e, - 0x6d, 0x22, 0x6d, - 0x4b, 0x0, 0x4b, - 0xff, 0xc0, 0xbc, - 0xff, 0x93, 0x91, - 0xff, 0x66, 0x67, - 0xd8, 0xf2, 0xbf, - 0xff, 0xc9, 0x68, - 0xff, 0x96, 0x67, - 0xa5, 0x60, 0xff, - 0x51, 0xff, 0x99, - 0x3f, 0xa5, 0x63, - 0x98, 0x90, 0x67 -}; - -//----------------------------------------------------------------------------- -// local functions -//----------------------------------------------------------------------------- - -extern void wxFlushResources(void); - -//----------------------------------------------------------------------------- -// global functions -//----------------------------------------------------------------------------- - -void wxExit(void) -{ - gtk_main_quit(); -} - -bool wxYield(void) -{ - while (gtk_events_pending() > 0) gtk_main_iteration(); - return TRUE; -} - -//----------------------------------------------------------------------------- -// wxApp -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxApp,wxEvtHandler) - -BEGIN_EVENT_TABLE(wxApp, wxEvtHandler) - EVT_IDLE(wxApp::OnIdle) -END_EVENT_TABLE() - -gint wxapp_idle_callback( gpointer WXUNUSED(data) ) -{ - if (wxTheApp) while (wxTheApp->ProcessIdle()) {} -#if wxUSE_THREADS - wxMutexGuiLeave(); -#endif - usleep(10000); -#if wxUSE_THREADS - wxMutexGuiEnter(); -#endif - return TRUE; -} - -wxApp::wxApp() -{ - wxTheApp = this; - - m_topWindow = (wxWindow *) NULL; - m_exitOnFrameDelete = TRUE; - - m_idleTag = gtk_idle_add( wxapp_idle_callback, (gpointer) NULL ); - - m_colorCube = (unsigned char*) NULL; -} - -wxApp::~wxApp(void) -{ - gtk_idle_remove( m_idleTag ); - - if (m_colorCube) free(m_colorCube); -} - -bool wxApp::OnInitGui() -{ - /* Nothing to do for 15, 16, 24, 32 bit displays */ - - GdkVisual *visual = gdk_visual_get_system(); - if (visual->depth > 8) return TRUE; - - /* this initiates the standard palette as defined by GdkImlib - in the GNOME libraries. it ensures that all GNOME applications - use the same 64 colormap entries on 8-bit displays so you - can use several rather graphics-heavy applications at the - same time. - NOTE: this doesn't really seem to work this way... */ - - /* - GdkColormap *cmap = gdk_colormap_new( gdk_visual_get_system(), TRUE ); - - for (int i = 0; i < 64; i++) - { - GdkColor col; - col.red = g_palette[i*3 + 0] << 8; - col.green = g_palette[i*3 + 1] << 8; - col.blue = g_palette[i*3 + 2] << 8; - col.pixel = 0; - - gdk_color_alloc( cmap, &col ); - } - - gtk_widget_set_default_colormap( cmap ); - */ - - /* initialize color cube for 8-bit color reduction dithering */ - - GdkColormap *cmap = gtk_widget_get_default_colormap(); - - m_colorCube = (unsigned char*)malloc(32 * 32 * 32); - - for (int r = 0; r < 32; r++) - { - for (int g = 0; g < 32; g++) - { - for (int b = 0; b < 32; b++) - { - int rr = (r << 3) | (r >> 2); - int gg = (g << 3) | (g >> 2); - int bb = (b << 3) | (b >> 2); - - GdkColor *colors = cmap->colors; - int max = 3 * (65536); - int index = -1; - - for (int i = 0; i < cmap->size; i++) - { - int rdiff = ((rr << 8) - colors[i].red); - int gdiff = ((gg << 8)- colors[i].green); - int bdiff = ((bb << 8)- colors[i].blue); - int sum = ABS (rdiff) + ABS (gdiff) + ABS (bdiff); - if (sum < max) { index = i; max = sum; } - } - - m_colorCube[ (r*1024) + (g*32) + b ] = index; - } - } - } - - - return TRUE; -} - -bool wxApp::ProcessIdle(void) -{ - wxIdleEvent event; - event.SetEventObject( this ); - ProcessEvent( event ); - - return event.MoreRequested(); -} - -void wxApp::OnIdle( wxIdleEvent &event ) -{ - static bool inOnIdle = FALSE; - - /* Avoid recursion (via ProcessEvent default case) */ - if (inOnIdle) - return; - - inOnIdle = TRUE; - - /* 'Garbage' collection of windows deleted with Close(). */ - DeletePendingObjects(); - - /* flush the logged messages if any */ - wxLog *log = wxLog::GetActiveTarget(); - if (log != NULL && log->HasPendingMessages()) - log->Flush(); - - /* Send OnIdle events to all windows */ - bool needMore = SendIdleEvents(); - - if (needMore) - event.RequestMore(TRUE); - - inOnIdle = FALSE; -} - -bool wxApp::SendIdleEvents(void) -{ - bool needMore = FALSE; - - wxNode* node = wxTopLevelWindows.First(); - while (node) - { - wxWindow* win = (wxWindow*) node->Data(); - if (SendIdleEvents(win)) - needMore = TRUE; - node = node->Next(); - } - return needMore; -} - -bool wxApp::SendIdleEvents( wxWindow* win ) -{ - bool needMore = FALSE; - - wxIdleEvent event; - event.SetEventObject(win); - - win->OnInternalIdle(); - - win->ProcessEvent(event); - - if (event.MoreRequested()) - needMore = TRUE; - - wxNode* node = win->GetChildren().First(); - while (node) - { - wxWindow* win = (wxWindow*) node->Data(); - if (SendIdleEvents(win)) - needMore = TRUE; - - node = node->Next(); - } - return needMore ; -} - -int wxApp::MainLoop(void) -{ - gtk_main(); - return 0; -} - -void wxApp::ExitMainLoop(void) -{ - gtk_main_quit(); -} - -bool wxApp::Initialized(void) -{ - return m_initialized; -} - -bool wxApp::Pending(void) -{ - return FALSE; -} - -void wxApp::Dispatch(void) -{ -} - -void wxApp::DeletePendingObjects(void) -{ - wxNode *node = wxPendingDelete.First(); - while (node) - { - wxObject *obj = (wxObject *)node->Data(); - - delete obj; - - if (wxPendingDelete.Member(obj)) - delete node; - - node = wxPendingDelete.First(); - } -} - -wxWindow *wxApp::GetTopWindow(void) -{ - if (m_topWindow) return m_topWindow; - wxNode *node = wxTopLevelWindows.First(); - if (!node) return (wxWindow *) NULL; - return (wxWindow*)node->Data(); -} - -void wxApp::SetTopWindow( wxWindow *win ) -{ - m_topWindow = win; -} - -bool wxApp::Initialize(void) -{ - wxBuffer = new char[BUFSIZ + 512]; - - wxClassInfo::InitializeClasses(); - - wxSystemSettings::Init(); - -/* - wxTheFontNameDirectory = new wxFontNameDirectory; - wxTheFontNameDirectory->Initialize(); -*/ - - wxTheColourDatabase = new wxColourDatabase( wxKEY_STRING ); - wxTheColourDatabase->Initialize(); - - wxInitializeStockLists(); - wxInitializeStockObjects(); - -#if wxUSE_WX_RESOURCES - wxTheResourceCache = new wxResourceCache( wxKEY_STRING ); - - wxInitializeResourceSystem(); -#endif - - wxImage::InitStandardHandlers(); - - /* no global cursor under X - g_globalCursor = new wxCursor; */ - - wxModule::RegisterModules(); - if (!wxModule::InitializeModules()) return FALSE; - - return TRUE; -} - -void wxApp::CleanUp(void) -{ - wxModule::CleanUpModules(); - -#if wxUSE_WX_RESOURCES - wxFlushResources(); - - if (wxTheResourceCache) delete wxTheResourceCache; - wxTheResourceCache = (wxResourceCache*) NULL; - - wxCleanUpResourceSystem(); -#endif - - if (wxTheColourDatabase) delete wxTheColourDatabase; - wxTheColourDatabase = (wxColourDatabase*) NULL; - -/* - if (wxTheFontNameDirectory) delete wxTheFontNameDirectory; - wxTheFontNameDirectory = (wxFontNameDirectory*) NULL; -*/ - - wxDeleteStockObjects(); - - wxDeleteStockLists(); - - wxImage::CleanUpHandlers(); - - delete wxTheApp; - wxTheApp = (wxApp*) NULL; - - wxSystemSettings::Done(); - - delete[] wxBuffer; - - wxClassInfo::CleanUpClasses(); - - /* check for memory leaks */ -#if (defined(__WXDEBUG__) && wxUSE_MEMORY_TRACING) || wxUSE_DEBUG_CONTEXT - if (wxDebugContext::CountObjectsLeft() > 0) - { - wxLogDebug("There were memory leaks.\n"); - wxDebugContext::Dump(); - wxDebugContext::PrintStatistics(); - } -#endif - - /* do this as the very last thing because everything else can log messages */ - wxLog::DontCreateOnDemand(); - - wxLog *oldLog = wxLog::SetActiveTarget( (wxLog*) NULL ); - if (oldLog) delete oldLog; -} - -wxLog *wxApp::CreateLogTarget() -{ - return new wxLogGui; -} - -//----------------------------------------------------------------------------- -// wxEntry -//----------------------------------------------------------------------------- - -int wxEntry( int argc, char *argv[] ) -{ - gtk_set_locale(); - - gtk_init( &argc, &argv ); - - if (!wxApp::Initialize()) return 0; - - if (!wxTheApp) - { - if (!wxApp::GetInitializerFunction()) - { - printf( "wxWindows error: No initializer - use IMPLEMENT_APP macro.\n" ); - return 0; - } - - wxAppInitializerFunction app_ini = wxApp::GetInitializerFunction(); - - wxObject *test_app = app_ini(); - - wxTheApp = (wxApp*) test_app; - } - - if (!wxTheApp) - { - printf( "wxWindows error: wxTheApp == NULL\n" ); - return 0; - } - - wxTheApp->argc = argc; - wxTheApp->argv = argv; - - char name[200]; - strcpy( name, argv[0] ); - strcpy( name, wxFileNameFromPath(name) ); - wxStripExtension( name ); - wxTheApp->SetAppName( name ); - - if (!wxTheApp->OnInitGui()) return 0; - - /* Here frames insert themselves automatically - * into wxTopLevelWindows by getting created - * in OnInit(). */ - - if (!wxTheApp->OnInit()) return 0; - - wxTheApp->m_initialized = (wxTopLevelWindows.Number() > 0); - - int retValue = 0; - - if (wxTheApp->Initialized()) retValue = wxTheApp->OnRun(); - - wxWindow *topWindow = wxTheApp->GetTopWindow(); - if (topWindow) - { - /* Forcibly delete the window. */ - if (topWindow->IsKindOf(CLASSINFO(wxFrame)) || - topWindow->IsKindOf(CLASSINFO(wxDialog)) ) - { - topWindow->Close( TRUE ); - wxTheApp->DeletePendingObjects(); - } - else - { - delete topWindow; - wxTheApp->SetTopWindow( (wxWindow*) NULL ); - } - } - - wxTheApp->OnExit(); - - /* flush the logged messages if any */ - wxLog *log = wxLog::GetActiveTarget(); - if (log != NULL && log->HasPendingMessages()) - log->Flush(); - - wxApp::CleanUp(); - - return retValue; -} - diff --git a/src/gtk/bdiag.xbm b/src/gtk/bdiag.xbm deleted file mode 100644 index 9ff0a1822f..0000000000 --- a/src/gtk/bdiag.xbm +++ /dev/null @@ -1,6 +0,0 @@ -#define bdiag_width 16 -#define bdiag_height 16 -static char bdiag_bits[] = { - 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x10, 0x08, 0x08, 0x04, 0x04, - 0x02, 0x02, 0x01, 0x01, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x10, - 0x08, 0x08, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01}; diff --git a/src/gtk/bitmap.cpp b/src/gtk/bitmap.cpp deleted file mode 100644 index 0b6b995c25..0000000000 --- a/src/gtk/bitmap.cpp +++ /dev/null @@ -1,369 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: bitmap.cpp -// Purpose: -// Author: Robert Roebling -// RCS-ID: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "bitmap.h" -#endif - -#include "wx/bitmap.h" -#include "wx/icon.h" -#include "wx/filefn.h" -#include "wx/image.h" - -#include "gdk/gdk.h" -#include "gdk/gdkprivate.h" -#include "gdk/gdkx.h" - -//----------------------------------------------------------------------------- -// wxMask -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxMask,wxObject) - -wxMask::wxMask() -{ - m_bitmap = (GdkBitmap *) NULL; -} - -wxMask::wxMask( const wxBitmap& WXUNUSED(bitmap), const wxColour& WXUNUSED(colour) ) -{ -} - -wxMask::wxMask( const wxBitmap& WXUNUSED(bitmap), int WXUNUSED(paletteIndex) ) -{ -} - -wxMask::wxMask( const wxBitmap& WXUNUSED(bitmap) ) -{ -} - -wxMask::~wxMask() -{ - if (m_bitmap) gdk_bitmap_unref( m_bitmap ); -} - -GdkBitmap *wxMask::GetBitmap(void) const -{ - return m_bitmap; -} - -//----------------------------------------------------------------------------- -// wxBitmap -//----------------------------------------------------------------------------- - -class wxBitmapRefData: public wxObjectRefData -{ -public: - wxBitmapRefData(void); - ~wxBitmapRefData(void); - - GdkPixmap *m_pixmap; - GdkBitmap *m_bitmap; - wxMask *m_mask; - int m_width; - int m_height; - int m_bpp; - wxPalette *m_palette; -}; - -wxBitmapRefData::wxBitmapRefData() -{ - m_pixmap = (GdkPixmap *) NULL; - m_bitmap = (GdkBitmap *) NULL; - m_mask = (wxMask *) NULL; - m_width = 0; - m_height = 0; - m_bpp = 0; - m_palette = (wxPalette *) NULL; -} - -wxBitmapRefData::~wxBitmapRefData() -{ - if (m_pixmap) gdk_pixmap_unref( m_pixmap ); - if (m_bitmap) gdk_bitmap_unref( m_bitmap ); - if (m_mask) delete m_mask; - if (m_palette) delete m_palette; -} - -//----------------------------------------------------------------------------- - -#define M_BMPDATA ((wxBitmapRefData *)m_refData) - -IMPLEMENT_DYNAMIC_CLASS(wxBitmap,wxGDIObject) - -wxBitmap::wxBitmap() -{ - if (wxTheBitmapList) wxTheBitmapList->AddBitmap(this); -} - -wxBitmap::wxBitmap( int width, int height, int depth ) -{ - wxCHECK_RET( (width > 0) && (height > 0), "invalid bitmap size" ) - wxCHECK_RET( (depth > 0) || (depth == -1), "invalid bitmap depth" ) - - m_refData = new wxBitmapRefData(); - - GdkWindow *parent = (GdkWindow*) &gdk_root_parent; - - M_BMPDATA->m_mask = (wxMask *) NULL; - M_BMPDATA->m_pixmap = gdk_pixmap_new( parent, width, height, depth ); - M_BMPDATA->m_width = width; - M_BMPDATA->m_height = height; - M_BMPDATA->m_bpp = gdk_window_get_visual( parent )->depth; - - if (wxTheBitmapList) wxTheBitmapList->AddBitmap(this); -} - -wxBitmap::wxBitmap( const char **bits ) -{ - wxCHECK_RET( bits != NULL, "invalid bitmap data" ) - - m_refData = new wxBitmapRefData(); - - GdkBitmap *mask = (GdkBitmap*) NULL; - GdkWindow *parent = (GdkWindow*) &gdk_root_parent; - - M_BMPDATA->m_pixmap = gdk_pixmap_create_from_xpm_d( parent, &mask, NULL, (gchar **) bits ); - - if (mask) - { - M_BMPDATA->m_mask = new wxMask(); - M_BMPDATA->m_mask->m_bitmap = mask; - } - - gdk_window_get_size( M_BMPDATA->m_pixmap, &(M_BMPDATA->m_width), &(M_BMPDATA->m_height) ); - - M_BMPDATA->m_bpp = gdk_window_get_visual( parent )->depth; // ? - if (wxTheBitmapList) wxTheBitmapList->AddBitmap(this); -} - -wxBitmap::wxBitmap( char **bits ) -{ - wxCHECK_RET( bits != NULL, "invalid bitmap data" ) - - m_refData = new wxBitmapRefData(); - - GdkBitmap *mask = (GdkBitmap*) NULL; - GdkWindow *parent = (GdkWindow*) &gdk_root_parent; - - M_BMPDATA->m_pixmap = gdk_pixmap_create_from_xpm_d( parent, &mask, NULL, (gchar **) bits ); - - wxCHECK_RET( M_BMPDATA->m_pixmap, "couldn't create pixmap" ); - - if (mask) - { - M_BMPDATA->m_mask = new wxMask(); - M_BMPDATA->m_mask->m_bitmap = mask; - } - - gdk_window_get_size( M_BMPDATA->m_pixmap, &(M_BMPDATA->m_width), &(M_BMPDATA->m_height) ); - - M_BMPDATA->m_bpp = gdk_window_get_visual( parent )->depth; // ? - if (wxTheBitmapList) wxTheBitmapList->AddBitmap(this); -} - -wxBitmap::wxBitmap( const wxBitmap& bmp ) -{ - Ref( bmp ); - - if (wxTheBitmapList) wxTheBitmapList->AddBitmap(this); -} - -wxBitmap::wxBitmap( const wxString &filename, int type ) -{ - LoadFile( filename, type ); - - if (wxTheBitmapList) wxTheBitmapList->AddBitmap(this); -} - -wxBitmap::wxBitmap( const char bits[], int width, int height, int WXUNUSED(depth)) -{ - m_refData = new wxBitmapRefData(); - - M_BMPDATA->m_mask = (wxMask *) NULL; - M_BMPDATA->m_bitmap = - gdk_bitmap_create_from_data( (GdkWindow*) &gdk_root_parent, (gchar *) bits, width, height ); - M_BMPDATA->m_width = width; - M_BMPDATA->m_height = height; - M_BMPDATA->m_bpp = 1; - - wxCHECK_RET( M_BMPDATA->m_bitmap, "couldn't create bitmap" ); - - if (wxTheBitmapList) wxTheBitmapList->AddBitmap(this); -} - -wxBitmap::~wxBitmap() -{ - if (wxTheBitmapList) wxTheBitmapList->DeleteObject(this); -} - -wxBitmap& wxBitmap::operator = ( const wxBitmap& bmp ) -{ - if (*this == bmp) return (*this); - Ref( bmp ); - return *this; -} - -bool wxBitmap::operator == ( const wxBitmap& bmp ) -{ - return m_refData == bmp.m_refData; -} - -bool wxBitmap::operator != ( const wxBitmap& bmp ) -{ - return m_refData != bmp.m_refData; -} - -bool wxBitmap::Ok(void) const -{ - return (m_refData != NULL); -} - -int wxBitmap::GetHeight(void) const -{ - wxCHECK_MSG( Ok(), -1, "invalid bitmap" ); - - return M_BMPDATA->m_height; -} - -int wxBitmap::GetWidth(void) const -{ - wxCHECK_MSG( Ok(), -1, "invalid bitmap" ); - - return M_BMPDATA->m_width; -} - -int wxBitmap::GetDepth(void) const -{ - wxCHECK_MSG( Ok(), -1, "invalid bitmap" ); - - return M_BMPDATA->m_bpp; -} - -wxMask *wxBitmap::GetMask(void) const -{ - wxCHECK_MSG( Ok(), (wxMask *) NULL, "invalid bitmap" ); - - return M_BMPDATA->m_mask; -} - -void wxBitmap::SetMask( wxMask *mask ) -{ - wxCHECK_RET( Ok(), "invalid bitmap" ); - - if (M_BMPDATA->m_mask) delete M_BMPDATA->m_mask; - - M_BMPDATA->m_mask = mask; -} - -bool wxBitmap::SaveFile( const wxString &name, int type, wxPalette *WXUNUSED(palette) ) -{ - wxCHECK_MSG( Ok(), FALSE, "invalid bitmap" ); - - if (type == wxBITMAP_TYPE_PNG) - { - wxImage image( *this ); - if (image.Ok()) return image.SaveFile( name, type ); - } - - return FALSE; -} - -bool wxBitmap::LoadFile( const wxString &name, int type ) -{ - UnRef(); - - if (!wxFileExists(name)) return FALSE; - - if (type == wxBITMAP_TYPE_XPM) - { - m_refData = new wxBitmapRefData(); - - GdkBitmap *mask = (GdkBitmap*) NULL; - GdkWindow *parent = (GdkWindow*) &gdk_root_parent; - - M_BMPDATA->m_pixmap = gdk_pixmap_create_from_xpm( parent, &mask, NULL, name ); - - if (mask) - { - M_BMPDATA->m_mask = new wxMask(); - M_BMPDATA->m_mask->m_bitmap = mask; - } - - gdk_window_get_size( M_BMPDATA->m_pixmap, &(M_BMPDATA->m_width), &(M_BMPDATA->m_height) ); - M_BMPDATA->m_bpp = gdk_window_get_visual( parent )->depth; - } - else if (type == wxBITMAP_TYPE_PNG) - { - wxImage image; - image.LoadFile( name, type ); - if (image.Ok()) *this = image.ConvertToBitmap(); - } - else if (type == wxBITMAP_TYPE_BMP) - { - wxImage image; - image.LoadFile( name, type ); - if (image.Ok()) *this = image.ConvertToBitmap(); - } - else - return FALSE; - - return TRUE; -} - -wxPalette *wxBitmap::GetPalette(void) const -{ - if (!Ok()) return (wxPalette *) NULL; - - return M_BMPDATA->m_palette; -} - -void wxBitmap::SetHeight( int height ) -{ - if (!m_refData) m_refData = new wxBitmapRefData(); - - M_BMPDATA->m_height = height; -} - -void wxBitmap::SetWidth( int width ) -{ - if (!m_refData) m_refData = new wxBitmapRefData(); - - M_BMPDATA->m_width = width; -} - -void wxBitmap::SetDepth( int depth ) -{ - if (!m_refData) m_refData = new wxBitmapRefData(); - - M_BMPDATA->m_bpp = depth; -} - -void wxBitmap::SetPixmap( GdkPixmap *pixmap ) -{ - if (!m_refData) m_refData = new wxBitmapRefData(); - - M_BMPDATA->m_pixmap = pixmap; -} - -GdkPixmap *wxBitmap::GetPixmap(void) const -{ - wxCHECK_MSG( Ok(), (GdkPixmap *) NULL, "invalid bitmap" ); - - return M_BMPDATA->m_pixmap; -} - -GdkBitmap *wxBitmap::GetBitmap(void) const -{ - wxCHECK_MSG( Ok(), (GdkBitmap *) NULL, "invalid bitmap" ); - - return M_BMPDATA->m_bitmap; -} - - diff --git a/src/gtk/bmpbuttn.cpp b/src/gtk/bmpbuttn.cpp deleted file mode 100644 index 49f84d1698..0000000000 --- a/src/gtk/bmpbuttn.cpp +++ /dev/null @@ -1,294 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: bmpbuttn.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "bmpbuttn.h" -#endif - -#include "wx/bmpbuttn.h" - -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxBitmapButton; - -//----------------------------------------------------------------------------- -// data -//----------------------------------------------------------------------------- - -extern bool g_blockEventsOnDrag; - -//----------------------------------------------------------------------------- -// "clicked" -//----------------------------------------------------------------------------- - -static void gtk_bmpbutton_clicked_callback( GtkWidget *WXUNUSED(widget), wxBitmapButton *button ) -{ - if (!button->HasVMT()) return; - if (g_blockEventsOnDrag) return; - - wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED, button->GetId()); - event.SetEventObject(button); - button->GetEventHandler()->ProcessEvent(event); -} - -//----------------------------------------------------------------------------- -// "enter" -//----------------------------------------------------------------------------- - -static void gtk_bmpbutton_enter_callback( GtkWidget *WXUNUSED(widget), wxBitmapButton *button ) -{ - if (!button->HasVMT()) return; - if (g_blockEventsOnDrag) return; - - button->HasFocus(); -} - -//----------------------------------------------------------------------------- -// "leave" -//----------------------------------------------------------------------------- - -static void gtk_bmpbutton_leave_callback( GtkWidget *WXUNUSED(widget), wxBitmapButton *button ) -{ - if (!button->HasVMT()) return; - if (g_blockEventsOnDrag) return; - - button->NotFocus(); -} - -//----------------------------------------------------------------------------- -// "pressed" -//----------------------------------------------------------------------------- - -static void gtk_bmpbutton_press_callback( GtkWidget *WXUNUSED(widget), wxBitmapButton *button ) -{ - if (!button->HasVMT()) return; - if (g_blockEventsOnDrag) return; - - button->StartSelect(); -} - -//----------------------------------------------------------------------------- -// "released" -//----------------------------------------------------------------------------- - -static void gtk_bmpbutton_release_callback( GtkWidget *WXUNUSED(widget), wxBitmapButton *button ) -{ - if (!button->HasVMT()) return; - if (g_blockEventsOnDrag) return; - - button->EndSelect(); -} - -//----------------------------------------------------------------------------- -// wxBitmapButton -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxBitmapButton,wxControl) - -wxBitmapButton::wxBitmapButton() -{ -} - -bool wxBitmapButton::Create( wxWindow *parent, wxWindowID id, const wxBitmap &bitmap, - const wxPoint &pos, const wxSize &size, - long style, const wxValidator& validator, const wxString &name ) -{ - m_needParent = TRUE; - m_acceptsFocus = TRUE; - - wxSize newSize = size; - - PreCreation( parent, id, pos, newSize, style, name ); - - SetValidator( validator ); - - m_bitmap = bitmap; - m_disabled = bitmap; - m_focus = bitmap; - m_selected = bitmap; - - m_label = ""; - - m_widget = gtk_button_new(); - - if (m_bitmap.Ok()) - { - GdkBitmap *mask = (GdkBitmap *) NULL; - if (m_bitmap.GetMask()) mask = m_bitmap.GetMask()->GetBitmap(); - GtkWidget *pixmap = gtk_pixmap_new( m_bitmap.GetPixmap(), mask ); - - gtk_widget_show( pixmap ); - gtk_container_add( GTK_CONTAINER(m_widget), pixmap ); - } - - if (newSize.x == -1) newSize.x = m_bitmap.GetHeight()+10; - if (newSize.y == -1) newSize.y = m_bitmap.GetWidth()+10; - SetSize( newSize.x, newSize.y ); - - gtk_signal_connect( GTK_OBJECT(m_widget), "clicked", - GTK_SIGNAL_FUNC(gtk_bmpbutton_clicked_callback), (gpointer*)this ); - - gtk_signal_connect( GTK_OBJECT(m_widget), "enter", - GTK_SIGNAL_FUNC(gtk_bmpbutton_enter_callback), (gpointer*)this ); - gtk_signal_connect( GTK_OBJECT(m_widget), "leave", - GTK_SIGNAL_FUNC(gtk_bmpbutton_leave_callback), (gpointer*)this ); - gtk_signal_connect( GTK_OBJECT(m_widget), "pressed", - GTK_SIGNAL_FUNC(gtk_bmpbutton_press_callback), (gpointer*)this ); - gtk_signal_connect( GTK_OBJECT(m_widget), "released", - GTK_SIGNAL_FUNC(gtk_bmpbutton_release_callback), (gpointer*)this ); - - m_parent->AddChild( this ); - - (m_parent->m_insertCallback)( m_parent, this ); - - PostCreation(); - - SetBackgroundColour( parent->GetBackgroundColour() ); - - Show( TRUE ); - - return TRUE; -} - -void wxBitmapButton::SetDefault() -{ -/* - GTK_WIDGET_SET_FLAGS( m_widget, GTK_CAN_DEFAULT ); - gtk_widget_grab_default( m_widget ); -*/ -} - -void wxBitmapButton::SetLabel( const wxString &label ) -{ - wxCHECK_RET( m_widget != NULL, "invalid button" ); - - wxControl::SetLabel( label ); -} - -wxString wxBitmapButton::GetLabel() const -{ - wxCHECK_MSG( m_widget != NULL, "", "invalid button" ); - - return wxControl::GetLabel(); -} - -void wxBitmapButton::ApplyWidgetStyle() -{ -} - -void wxBitmapButton::SetBitmap() -{ - wxCHECK_RET( m_widget != NULL, "invalid button" ); - - wxBitmap the_one; - - if ( ! m_isEnabled ) - the_one = m_disabled; - else - { - if ( m_isSelected ) - { - the_one = m_selected; - } - else - { - if ( m_hasFocus ) - the_one = m_focus; - else - the_one = m_bitmap; - } - } - - if ( ! the_one.Ok() ) the_one = m_bitmap; - if ( ! the_one.Ok() ) return; - - GtkButton *bin = GTK_BUTTON( m_widget ); - GtkPixmap *g_pixmap = GTK_PIXMAP( bin->child ); - - GdkBitmap *mask = (GdkBitmap *) NULL; - if (the_one.GetMask()) mask = the_one.GetMask()->GetBitmap(); - - gtk_pixmap_set( g_pixmap, the_one.GetPixmap(), mask ); -} - -void wxBitmapButton::SetBitmapDisabled( const wxBitmap& bitmap ) -{ - wxCHECK_RET( m_widget != NULL, "invalid button" ); - - if ( ! m_disabled.Ok() ) return; - m_disabled = bitmap; - - SetBitmap(); -} - -void wxBitmapButton::SetBitmapFocus( const wxBitmap& bitmap ) -{ - wxCHECK_RET( m_widget != NULL, "invalid button" ); - - if ( ! m_focus.Ok() ) return; - m_focus = bitmap; - - SetBitmap(); -} - -void wxBitmapButton::SetBitmapLabel( const wxBitmap& bitmap ) -{ - wxCHECK_RET( m_widget != NULL, "invalid button" ); - - if (!m_bitmap.Ok()) return; - m_bitmap = bitmap; - - SetBitmap(); -} - -void wxBitmapButton::SetBitmapSelected( const wxBitmap& bitmap ) -{ - wxCHECK_RET( m_widget != NULL, "invalid button" ); - - if ( ! m_selected.Ok() ) return; - m_selected = bitmap; - - SetBitmap(); -} - -void wxBitmapButton::Enable( const bool enable ) -{ - wxWindow::Enable(enable); - - SetBitmap(); -} - -void wxBitmapButton::HasFocus() -{ - m_hasFocus = TRUE; - SetBitmap(); -} - -void wxBitmapButton::NotFocus() -{ - m_hasFocus = FALSE; - SetBitmap(); -} - -void wxBitmapButton::StartSelect() -{ - m_isSelected = TRUE; - SetBitmap(); -} - -void wxBitmapButton::EndSelect() -{ - m_isSelected = FALSE; - SetBitmap(); -} diff --git a/src/gtk/brush.cpp b/src/gtk/brush.cpp deleted file mode 100644 index be6d5e2e91..0000000000 --- a/src/gtk/brush.cpp +++ /dev/null @@ -1,180 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: brush.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "brush.h" -#endif - -#include "wx/brush.h" - -#include "gdk/gdk.h" - -//----------------------------------------------------------------------------- -// wxBrush -//----------------------------------------------------------------------------- - -class wxBrushRefData: public wxObjectRefData -{ - public: - - wxBrushRefData(); - wxBrushRefData( const wxBrushRefData& data ); - - int m_style; - wxBitmap m_stipple; - wxColour m_colour; -}; - -wxBrushRefData::wxBrushRefData() -{ - m_style = 0; -} - -wxBrushRefData::wxBrushRefData( const wxBrushRefData& data ) -{ - m_style = data.m_style; - m_stipple = data.m_stipple; - m_colour = data.m_colour; -} - -//----------------------------------------------------------------------------- - -#define M_BRUSHDATA ((wxBrushRefData *)m_refData) - -IMPLEMENT_DYNAMIC_CLASS(wxBrush,wxGDIObject) - -wxBrush::wxBrush() -{ - if (wxTheBrushList) wxTheBrushList->AddBrush( this ); -} - -wxBrush::wxBrush( const wxColour &colour, int style ) -{ - m_refData = new wxBrushRefData(); - M_BRUSHDATA->m_style = style; - M_BRUSHDATA->m_colour = colour; - - if (wxTheBrushList) wxTheBrushList->AddBrush( this ); -} - -wxBrush::wxBrush( const wxBitmap &stippleBitmap ) -{ - m_refData = new wxBrushRefData(); - M_BRUSHDATA->m_style = wxSTIPPLE; - M_BRUSHDATA->m_colour = *wxBLACK; - M_BRUSHDATA->m_stipple = stippleBitmap; - - if (wxTheBrushList) wxTheBrushList->AddBrush( this ); -} - -wxBrush::wxBrush( const wxBrush &brush ) -{ - Ref( brush ); - - if (wxTheBrushList) wxTheBrushList->AddBrush( this ); -} - -wxBrush::~wxBrush() -{ - if (wxTheBrushList) wxTheBrushList->RemoveBrush( this ); -} - -wxBrush& wxBrush::operator = ( const wxBrush& brush ) -{ - if (*this == brush) return (*this); - Ref( brush ); - return *this; -} - -bool wxBrush::operator == ( const wxBrush& brush ) -{ - return m_refData == brush.m_refData; -} - -bool wxBrush::operator != ( const wxBrush& brush ) -{ - return m_refData != brush.m_refData; -} - -bool wxBrush::Ok() const -{ - return ((m_refData) && M_BRUSHDATA->m_colour.Ok()); -} - -int wxBrush::GetStyle() const -{ - if (m_refData == NULL) - { - wxFAIL_MSG( "invalid brush" ); - return 0; - } - - return M_BRUSHDATA->m_style; -} - -wxColour &wxBrush::GetColour() const -{ - if (m_refData == NULL) - { - wxFAIL_MSG( "invalid brush" ); - return wxNullColour; - } - - return M_BRUSHDATA->m_colour; -} - -wxBitmap *wxBrush::GetStipple() const -{ - if (m_refData == NULL) - { - wxFAIL_MSG( "invalid brush" ); - return &wxNullBitmap; - } - - return &M_BRUSHDATA->m_stipple; -} - -void wxBrush::SetColour( const wxColour& col ) -{ - Unshare(); - M_BRUSHDATA->m_colour = col; -} - -void wxBrush::SetColour( unsigned char r, unsigned char g, unsigned char b ) -{ - Unshare(); - M_BRUSHDATA->m_colour.Set( r, g, b ); -} - -void wxBrush::SetStyle( int style ) -{ - Unshare(); - M_BRUSHDATA->m_style = style; -} - -void wxBrush::SetStipple( const wxBitmap& stipple ) -{ - Unshare(); - M_BRUSHDATA->m_stipple = stipple; -} - -void wxBrush::Unshare() -{ - if (!m_refData) - { - m_refData = new wxBrushRefData(); - } - else - { - wxBrushRefData* ref = new wxBrushRefData( *(wxBrushRefData*)m_refData ); - UnRef(); - m_refData = ref; - } -} - diff --git a/src/gtk/button.cpp b/src/gtk/button.cpp deleted file mode 100644 index 8c91ec2adc..0000000000 --- a/src/gtk/button.cpp +++ /dev/null @@ -1,131 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: button.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "button.h" -#endif - -#include "wx/button.h" - -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxButton; - -//----------------------------------------------------------------------------- -// data -//----------------------------------------------------------------------------- - -extern bool g_blockEventsOnDrag; - -//----------------------------------------------------------------------------- -// "clicked" -//----------------------------------------------------------------------------- - -static void gtk_button_clicked_callback( GtkWidget *WXUNUSED(widget), wxButton *button ) -{ - if (!button->HasVMT()) return; - if (g_blockEventsOnDrag) return; - - wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED, button->GetId()); - event.SetEventObject(button); - button->GetEventHandler()->ProcessEvent(event); -} - -//----------------------------------------------------------------------------- -// wxButton -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxButton,wxControl) - -wxButton::wxButton() -{ -} - -wxButton::~wxButton() -{ - if (m_clientData) delete m_clientData; -} - -bool wxButton::Create( wxWindow *parent, wxWindowID id, const wxString &label, - const wxPoint &pos, const wxSize &size, - long style, const wxValidator& validator, const wxString &name ) -{ - m_clientData = (wxClientData*) NULL; - m_needParent = TRUE; - m_acceptsFocus = TRUE; - - wxSize newSize = size; - - PreCreation( parent, id, pos, newSize, style, name ); - - SetValidator( validator ); - - m_widget = gtk_button_new_with_label( m_label ); - SetLabel(label); - - if (newSize.x == -1) newSize.x = 15+gdk_string_measure( m_widget->style->font, label ); - if (newSize.y == -1) newSize.y = 26; - SetSize( newSize.x, newSize.y ); - - gtk_signal_connect( GTK_OBJECT(m_widget), "clicked", - GTK_SIGNAL_FUNC(gtk_button_clicked_callback), (gpointer*)this ); - - m_parent->AddChild( this ); - - (m_parent->m_insertCallback)( m_parent, this ); - - PostCreation(); - - SetBackgroundColour( parent->GetBackgroundColour() ); - SetForegroundColour( parent->GetForegroundColour() ); - - Show( TRUE ); - - return TRUE; -} - -void wxButton::SetDefault(void) -{ -/* - GTK_WIDGET_SET_FLAGS( m_widget, GTK_CAN_DEFAULT ); - gtk_widget_grab_default( m_widget ); -*/ -} - -void wxButton::SetLabel( const wxString &label ) -{ - wxCHECK_RET( m_widget != NULL, "invalid button" ); - - wxControl::SetLabel( label ); - - gtk_label_set( GTK_LABEL( GTK_BUTTON(m_widget)->child ), GetLabel() ); -} - -void wxButton::Enable( bool enable ) -{ - wxCHECK_RET( m_widget != NULL, "invalid button" ); - - wxControl::Enable( enable ); - - gtk_widget_set_sensitive( GTK_BUTTON(m_widget)->child, enable ); -} - -void wxButton::ApplyWidgetStyle() -{ - SetWidgetStyle(); - gtk_widget_set_style( m_widget, m_widgetStyle ); - gtk_widget_set_style( GTK_BUTTON(m_widget)->child, m_widgetStyle ); -} - - diff --git a/src/gtk/cdiag.xbm b/src/gtk/cdiag.xbm deleted file mode 100644 index 15dc7ba86d..0000000000 --- a/src/gtk/cdiag.xbm +++ /dev/null @@ -1,6 +0,0 @@ -#define cdiag_width 16 -#define cdiag_height 16 -static char cdiag_bits[] = { - 0x81, 0x81, 0x42, 0x42, 0x24, 0x24, 0x18, 0x18, 0x18, 0x18, 0x24, 0x24, - 0x42, 0x42, 0x81, 0x81, 0x81, 0x81, 0x42, 0x42, 0x24, 0x24, 0x18, 0x18, - 0x18, 0x18, 0x24, 0x24, 0x42, 0x42, 0x81, 0x81}; diff --git a/src/gtk/checkbox.cpp b/src/gtk/checkbox.cpp deleted file mode 100644 index 85425761d0..0000000000 --- a/src/gtk/checkbox.cpp +++ /dev/null @@ -1,145 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: checkbox.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifdef __GNUG__ -#pragma implementation "checkbox.h" -#endif - -#include "wx/checkbox.h" - -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -//----------------------------------------------------------------------------- -// data -//----------------------------------------------------------------------------- - -extern bool g_blockEventsOnDrag; - -//----------------------------------------------------------------------------- -// "clicked" -//----------------------------------------------------------------------------- - -static void gtk_checkbox_clicked_callback( GtkWidget *WXUNUSED(widget), wxCheckBox *cb ) -{ - if (!cb->HasVMT()) return; - - if (cb->m_blockFirstEvent) - { - cb->m_blockFirstEvent = FALSE; - return; - } - - if (g_blockEventsOnDrag) return; - - wxCommandEvent event(wxEVT_COMMAND_CHECKBOX_CLICKED, cb->GetId()); - event.SetInt( cb->GetValue() ); - event.SetEventObject(cb); - cb->GetEventHandler()->ProcessEvent(event); -} - -//----------------------------------------------------------------------------- -// wxCheckBox -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxCheckBox,wxControl) - -wxCheckBox::wxCheckBox(void) -{ -} - -bool wxCheckBox::Create( wxWindow *parent, wxWindowID id, const wxString &label, - const wxPoint &pos, const wxSize &size, - long style, const wxValidator& validator, const wxString &name ) -{ - m_needParent = TRUE; - m_acceptsFocus = TRUE; - - PreCreation( parent, id, pos, size, style, name ); - - SetValidator( validator ); - - m_widget = gtk_check_button_new_with_label( m_label ); - - m_blockFirstEvent = FALSE; - - wxSize newSize = size; - if (newSize.x == -1) newSize.x = 25+gdk_string_measure( m_widget->style->font, label ); - if (newSize.y == -1) newSize.y = 26; - SetSize( newSize.x, newSize.y ); - - gtk_signal_connect( GTK_OBJECT(m_widget), "clicked", - GTK_SIGNAL_FUNC(gtk_checkbox_clicked_callback), (gpointer*)this ); - - m_parent->AddChild( this ); - - (m_parent->m_insertCallback)( m_parent, this ); - - PostCreation(); - - gtk_widget_realize( GTK_BUTTON( m_widget )->child ); - - SetLabel( label ); - - SetBackgroundColour( parent->GetBackgroundColour() ); - SetForegroundColour( parent->GetForegroundColour() ); - - Show( TRUE ); - - return TRUE; -} - -void wxCheckBox::SetValue( bool state ) -{ - wxCHECK_RET( m_widget != NULL, "invalid checkbox" ); - - if ( state == GetValue() ) - return; - - // for compatibility with wxMSW don't send notification when the check box - // state is changed programmatically - m_blockFirstEvent = TRUE; - - gtk_toggle_button_set_state( GTK_TOGGLE_BUTTON(m_widget), state ); -} - -bool wxCheckBox::GetValue() const -{ - wxCHECK_MSG( m_widget != NULL, FALSE, "invalid checkbox" ); - - return GTK_TOGGLE_BUTTON(m_widget)->active; -} - -void wxCheckBox::SetLabel( const wxString& label ) -{ - wxCHECK_RET( m_widget != NULL, "invalid checkbox" ); - - wxControl::SetLabel( label ); - - gtk_label_set( GTK_LABEL( GTK_BUTTON(m_widget)->child ), GetLabel() ); -} - -void wxCheckBox::Enable( bool enable ) -{ - wxCHECK_RET( m_widget != NULL, "invalid checkbox" ); - - wxControl::Enable( enable ); - - gtk_widget_set_sensitive( GTK_BUTTON(m_widget)->child, enable ); -} - -void wxCheckBox::ApplyWidgetStyle() -{ - SetWidgetStyle(); - gtk_widget_set_style( m_widget, m_widgetStyle ); - gtk_widget_set_style( GTK_BUTTON(m_widget)->child, m_widgetStyle ); -} - - diff --git a/src/gtk/checklst.cpp b/src/gtk/checklst.cpp deleted file mode 100644 index 82fb96dc1a..0000000000 --- a/src/gtk/checklst.cpp +++ /dev/null @@ -1,93 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: checklst.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "checklst.h" -#endif - -#include "wx/checklst.h" - -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -//----------------------------------------------------------------------------- -// wxCheckListBox -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxCheckListBox,wxListBox) - -wxCheckListBox::wxCheckListBox() : - wxListBox() -{ - m_hasCheckBoxes = TRUE; -} - -wxCheckListBox::wxCheckListBox(wxWindow *parent, wxWindowID id, - const wxPoint& pos, - const wxSize& size, - int nStrings, - const wxString choices[], - long style, - const wxValidator& validator, - const wxString& name ) -{ - m_hasCheckBoxes = TRUE; - wxListBox::Create( parent, id, pos, size, nStrings, choices, style, validator, name ); -} - -bool wxCheckListBox::IsChecked( int index ) const -{ - wxCHECK_MSG( m_list != NULL, FALSE, "invalid checklistbox" ); - - GList *child = g_list_nth( m_list->children, index ); - if (child) - { - GtkBin *bin = GTK_BIN( child->data ); - GtkLabel *label = GTK_LABEL( bin->child ); - - wxString str = label->label; - - return (str[1] == 'X'); - } - - wxFAIL_MSG("wrong checklistbox index"); - return FALSE; -} - -void wxCheckListBox::Check( int index, bool check ) -{ - wxCHECK_RET( m_list != NULL, "invalid checklistbox" ); - - GList *child = g_list_nth( m_list->children, index ); - if (child) - { - GtkBin *bin = GTK_BIN( child->data ); - GtkLabel *label = GTK_LABEL( bin->child ); - - wxString str = label->label; - - if (check == (str[1] == 'X')) return; - - if (check) - str.SetChar( 1, 'X' ); - else - str.SetChar( 1, '-' ); - - gtk_label_set( label, str ); - - return; - } - - wxFAIL_MSG("wrong checklistbox index"); -} - -int wxCheckListBox::GetItemHeight() -{ - return 22; -} diff --git a/src/gtk/choice.cpp b/src/gtk/choice.cpp deleted file mode 100644 index 27ba2fa798..0000000000 --- a/src/gtk/choice.cpp +++ /dev/null @@ -1,377 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: choice.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifdef __GNUG__ -#pragma implementation "choice.h" -#endif - -#include "wx/choice.h" - -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -//----------------------------------------------------------------------------- -// data -//----------------------------------------------------------------------------- - -extern bool g_blockEventsOnDrag; - -//----------------------------------------------------------------------------- -// "activate" -//----------------------------------------------------------------------------- - -static void gtk_choice_clicked_callback( GtkWidget *WXUNUSED(widget), wxChoice *choice ) -{ - if (!choice->HasVMT()) return; - if (g_blockEventsOnDrag) return; - - wxCommandEvent event(wxEVT_COMMAND_CHOICE_SELECTED, choice->GetId() ); - event.SetInt( choice->GetSelection() ); - wxString tmp( choice->GetStringSelection() ); - event.SetString( WXSTRINGCAST(tmp) ); - event.SetEventObject(choice); - choice->GetEventHandler()->ProcessEvent(event); -} - -//----------------------------------------------------------------------------- -// wxChoice -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxChoice,wxControl) - -wxChoice::wxChoice() -{ -} - -bool wxChoice::Create( wxWindow *parent, wxWindowID id, - const wxPoint &pos, const wxSize &size, - int n, const wxString choices[], - long style, const wxValidator& validator, const wxString &name ) -{ - m_needParent = TRUE; - - PreCreation( parent, id, pos, size, style, name ); - - SetValidator( validator ); - - m_widget = gtk_option_menu_new(); - - wxSize newSize = size; - if (newSize.x == -1) newSize.x = 80; - if (newSize.y == -1) newSize.y = 26; - SetSize( newSize.x, newSize.y ); - - GtkWidget *menu = gtk_menu_new(); - - for (int i = 0; i < n; i++) - { - m_clientDataList.Append( (wxObject*) NULL ); - m_clientObjectList.Append( (wxObject*) NULL ); - - GtkWidget *item = gtk_menu_item_new_with_label( choices[i] ); - gtk_menu_append( GTK_MENU(menu), item ); - - gtk_widget_realize( item ); - gtk_widget_realize( GTK_BIN(item)->child ); - - gtk_widget_show( item ); - - gtk_signal_connect( GTK_OBJECT( item ), "activate", - GTK_SIGNAL_FUNC(gtk_choice_clicked_callback), (gpointer*)this ); - } - gtk_option_menu_set_menu( GTK_OPTION_MENU(m_widget), menu ); - - m_parent->AddChild( this ); - - (m_parent->m_insertCallback)( m_parent, this ); - - PostCreation(); - - SetBackgroundColour( parent->GetBackgroundColour() ); - SetForegroundColour( parent->GetForegroundColour() ); - - Show( TRUE ); - - return TRUE; -} - -wxChoice::~wxChoice() -{ - Clear(); -} - -void wxChoice::AppendCommon( const wxString &item ) -{ - wxCHECK_RET( m_widget != NULL, "invalid choice" ); - - GtkWidget *menu = gtk_option_menu_get_menu( GTK_OPTION_MENU(m_widget) ); - GtkWidget *menu_item = gtk_menu_item_new_with_label( item ); - - gtk_menu_append( GTK_MENU(menu), menu_item ); - - gtk_widget_realize( menu_item ); - gtk_widget_realize( GTK_BIN(menu_item)->child ); - - if (m_widgetStyle) ApplyWidgetStyle(); - - gtk_signal_connect( GTK_OBJECT( menu_item ), "activate", - GTK_SIGNAL_FUNC(gtk_choice_clicked_callback), (gpointer*)this ); - - gtk_widget_show( menu_item ); -} - -void wxChoice::Append( const wxString &item ) -{ - m_clientDataList.Append( (wxObject*) NULL ); - m_clientObjectList.Append( (wxObject*) NULL ); - - AppendCommon( item ); -} - -void wxChoice::Append( const wxString &item, void *clientData ) -{ - m_clientDataList.Append( (wxObject*) clientData ); - m_clientObjectList.Append( (wxObject*) NULL ); - - AppendCommon( item ); -} - -void wxChoice::Append( const wxString &item, wxClientData *clientData ) -{ - m_clientObjectList.Append( (wxObject*) clientData ); - m_clientDataList.Append( (wxObject*) NULL ); - - AppendCommon( item ); -} - -void wxChoice::SetClientData( int n, void* clientData ) -{ - wxCHECK_RET( m_widget != NULL, "invalid combobox" ); - - wxNode *node = m_clientDataList.Nth( n ); - if (!node) return; - - node->SetData( (wxObject*) clientData ); -} - -void* wxChoice::GetClientData( int n ) -{ - wxCHECK_MSG( m_widget != NULL, NULL, "invalid combobox" ); - - wxNode *node = m_clientDataList.Nth( n ); - if (!node) return NULL; - - return node->Data(); -} - -void wxChoice::SetClientObject( int n, wxClientData* clientData ) -{ - wxCHECK_RET( m_widget != NULL, "invalid combobox" ); - - wxNode *node = m_clientObjectList.Nth( n ); - if (!node) return; - - wxClientData *cd = (wxClientData*) node->Data(); - if (cd) delete cd; - - node->SetData( (wxObject*) clientData ); -} - -wxClientData* wxChoice::GetClientObject( int n ) -{ - wxCHECK_MSG( m_widget != NULL, (wxClientData*) NULL, "invalid combobox" ); - - wxNode *node = m_clientObjectList.Nth( n ); - if (!node) return (wxClientData*) NULL; - - return (wxClientData*) node->Data(); -} - -void wxChoice::Clear() -{ - wxCHECK_RET( m_widget != NULL, "invalid choice" ); - - gtk_option_menu_remove_menu( GTK_OPTION_MENU(m_widget) ); - GtkWidget *menu = gtk_menu_new(); - gtk_option_menu_set_menu( GTK_OPTION_MENU(m_widget), menu ); - - wxNode *node = m_clientObjectList.First(); - while (node) - { - wxClientData *cd = (wxClientData*)node->Data(); - if (cd) delete cd; - node = node->Next(); - } - m_clientObjectList.Clear(); - - m_clientDataList.Clear(); -} - -void wxChoice::Delete( int WXUNUSED(n) ) -{ - wxFAIL_MSG( "wxChoice:Delete not implemented" ); -} - -int wxChoice::FindString( const wxString &string ) const -{ - wxCHECK_MSG( m_widget != NULL, -1, "invalid choice" ); - - // If you read this code once and you think you understand - // it, then you are very wrong. Robert Roebling. - - GtkMenuShell *menu_shell = GTK_MENU_SHELL( gtk_option_menu_get_menu( GTK_OPTION_MENU(m_widget) ) ); - int count = 0; - GList *child = menu_shell->children; - while (child) - { - GtkBin *bin = GTK_BIN( child->data ); - GtkLabel *label = (GtkLabel *) NULL; - if (bin->child) label = GTK_LABEL(bin->child); - if (!label) label = GTK_LABEL( GTK_BUTTON(m_widget)->child ); - - wxASSERT_MSG( label != NULL , "wxChoice: invalid label" ); - - if (string == label->label) return count; - child = child->next; - count++; - } - - wxFAIL_MSG( "wxChoice: string not found" ); - - return -1; -} - -int wxChoice::GetColumns() const -{ - return 1; -} - -int wxChoice::GetSelection() -{ - wxCHECK_MSG( m_widget != NULL, -1, "invalid choice" ); - - GtkMenuShell *menu_shell = GTK_MENU_SHELL( gtk_option_menu_get_menu( GTK_OPTION_MENU(m_widget) ) ); - int count = 0; - GList *child = menu_shell->children; - while (child) - { - GtkBin *bin = GTK_BIN( child->data ); - if (!bin->child) return count; - child = child->next; - count++; - } - - wxFAIL_MSG( "wxChoice: no selection" ); - - return -1; -} - -wxString wxChoice::GetString( int n ) const -{ - wxCHECK_MSG( m_widget != NULL, "", "invalid choice" ); - - GtkMenuShell *menu_shell = GTK_MENU_SHELL( gtk_option_menu_get_menu( GTK_OPTION_MENU(m_widget) ) ); - int count = 0; - GList *child = menu_shell->children; - while (child) - { - GtkBin *bin = GTK_BIN( child->data ); - if (count == n) - { - GtkLabel *label = (GtkLabel *) NULL; - if (bin->child) label = GTK_LABEL(bin->child); - if (!label) label = GTK_LABEL( GTK_BUTTON(m_widget)->child ); - - wxASSERT_MSG( label != NULL , "wxChoice: invalid label" ); - - return label->label; - } - child = child->next; - count++; - } - - wxFAIL_MSG( "wxChoice: string not found" ); - - return ""; -} - -wxString wxChoice::GetStringSelection() const -{ - wxCHECK_MSG( m_widget != NULL, "", "invalid choice" ); - - GtkLabel *label = GTK_LABEL( GTK_BUTTON(m_widget)->child ); - - wxASSERT_MSG( label != NULL , "wxChoice: invalid label" ); - - return label->label; -} - -int wxChoice::Number() const -{ - wxCHECK_MSG( m_widget != NULL, 0, "invalid choice" ); - - GtkMenuShell *menu_shell = GTK_MENU_SHELL( gtk_option_menu_get_menu( GTK_OPTION_MENU(m_widget) ) ); - int count = 0; - GList *child = menu_shell->children; - while (child) - { - count++; - child = child->next; - } - return count; -} - -void wxChoice::SetColumns( int WXUNUSED(n) ) -{ -} - -void wxChoice::SetSelection( int n ) -{ - wxCHECK_RET( m_widget != NULL, "invalid choice" ); - - int tmp = n; - gtk_option_menu_set_history( GTK_OPTION_MENU(m_widget), (gint)tmp ); - - gtk_choice_clicked_callback( (GtkWidget *) NULL, this ); -} - -void wxChoice::SetStringSelection( const wxString &string ) -{ - wxCHECK_RET( m_widget != NULL, "invalid choice" ); - - int n = FindString( string ); - if (n != -1) SetSelection( n ); -} - -void wxChoice::ApplyWidgetStyle() -{ - SetWidgetStyle(); - - GtkMenuShell *menu_shell = GTK_MENU_SHELL( gtk_option_menu_get_menu( GTK_OPTION_MENU(m_widget) ) ); - - gtk_widget_set_style( m_widget, m_widgetStyle ); - gtk_widget_set_style( GTK_WIDGET( menu_shell ), m_widgetStyle ); - - GList *child = menu_shell->children; - while (child) - { - gtk_widget_set_style( GTK_WIDGET( child->data ), m_widgetStyle ); - - GtkBin *bin = GTK_BIN( child->data ); - GtkWidget *label = (GtkWidget *) NULL; - if (bin->child) label = bin->child; - if (!label) label = GTK_BUTTON(m_widget)->child; - - gtk_widget_set_style( label, m_widgetStyle ); - - child = child->next; - } -} - diff --git a/src/gtk/clipbrd.cpp b/src/gtk/clipbrd.cpp deleted file mode 100644 index 99ce0ac8b8..0000000000 --- a/src/gtk/clipbrd.cpp +++ /dev/null @@ -1,528 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: clipbrd.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "clipbrd.h" -#endif - -#include "wx/clipbrd.h" - -#if wxUSE_CLIPBOARD - -#include "glib.h" -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -//----------------------------------------------------------------------------- -// data -//----------------------------------------------------------------------------- - -wxClipboard *wxTheClipboard = (wxClipboard*) NULL; - -GdkAtom g_textAtom = 0; -GdkAtom g_clipboardAtom = 0; -GdkAtom g_targetsAtom = 0; - -//----------------------------------------------------------------------------- -// reminder -//----------------------------------------------------------------------------- - -/* The contents of a selection are returned in a GtkSelectionData - structure. selection/target identify the request. - type specifies the type of the return; if length < 0, and - the data should be ignored. This structure has object semantics - - no fields should be modified directly, they should not be created - directly, and pointers to them should not be stored beyond the duration of - a callback. (If the last is changed, we'll need to add reference - counting) - -struct _GtkSelectionData -{ - GdkAtom selection; - GdkAtom target; - GdkAtom type; - gint format; - guchar *data; - gint length; -}; - -*/ - -//----------------------------------------------------------------------------- -// "selection_received" for targets -//----------------------------------------------------------------------------- - -static void -targets_selection_received( GtkWidget *WXUNUSED(widget), - GtkSelectionData *selection_data, - wxClipboard *clipboard ) -{ - if (!wxTheClipboard) return; - - if (selection_data->length <= 0) return; - - // make sure we got the data in the correct form - if (selection_data->type != GDK_SELECTION_TYPE_ATOM) return; - - // the atoms we received, holding a list of targets (= formats) - GdkAtom *atoms = (GdkAtom *)selection_data->data; - - for (unsigned int i=0; ilength/sizeof(GdkAtom); i++) - { - if (atoms[i] == clipboard->m_targetRequested) - { - clipboard->m_formatSupported = TRUE; - return; - } - } - - return; -} - -//----------------------------------------------------------------------------- -// "selection_received" for the actual data -//----------------------------------------------------------------------------- - -static void -selection_received( GtkWidget *WXUNUSED(widget), - GtkSelectionData *selection_data, - wxClipboard *clipboard ) -{ - if (!wxTheClipboard) return; - - wxDataObject *data_object = clipboard->m_receivedData; - - if (!data_object) return; - - if (selection_data->length <= 0) return; - - // make sure we got the data in the correct format - - if (data_object->GetFormat().GetAtom() != selection_data->target) return; - - // make sure we got the data in the correct form (selection type). - // if so, copy data to target object - - switch (data_object->GetFormat().GetType()) - { - case wxDF_TEXT: - { - if (selection_data->type != GDK_SELECTION_TYPE_STRING) return; - - wxTextDataObject *text_object = (wxTextDataObject *) data_object; - - wxString text = (const char*) selection_data->data; - - text_object->SetText( text ); - - break; - } - - case wxDF_BITMAP: - { - if (selection_data->type != GDK_SELECTION_TYPE_BITMAP) return; - - return; - - break; - } - - case wxDF_PRIVATE: - { - if (selection_data->type != GDK_SELECTION_TYPE_STRING) return; - - wxPrivateDataObject *private_object = (wxPrivateDataObject *) data_object; - - private_object->SetData( (const char*) selection_data->data, (size_t) selection_data->length ); - - break; - } - - default: - { - return; - } - } - - wxTheClipboard->m_formatSupported = TRUE; -} - -//----------------------------------------------------------------------------- -// "selection_clear" -//----------------------------------------------------------------------------- - -static gint -selection_clear_clip( GtkWidget *WXUNUSED(widget), GdkEventSelection *event ) -{ - if (!wxTheClipboard) return TRUE; - - if (event->selection == GDK_SELECTION_PRIMARY) - { - wxTheClipboard->m_ownsPrimarySelection = FALSE; - } - else - if (event->selection == g_clipboardAtom) - { - wxTheClipboard->m_ownsClipboard = FALSE; - } - else - { - return FALSE; - } - - if ((!wxTheClipboard->m_ownsPrimarySelection) && - (!wxTheClipboard->m_ownsClipboard)) - { - /* the clipboard is no longer in our hands. we can the clipboard data. */ - - if (wxTheClipboard->m_dataBroker) - { - delete wxTheClipboard->m_dataBroker; - wxTheClipboard->m_dataBroker = (wxDataBroker*) NULL; - } - } - - return TRUE; -} - -//----------------------------------------------------------------------------- -// selection handler for supplying data -//----------------------------------------------------------------------------- - -static void -selection_handler( GtkWidget *WXUNUSED(widget), GtkSelectionData *selection_data, gpointer WXUNUSED(data) ) -{ - if (!wxTheClipboard) return; - - if (!wxTheClipboard->m_dataBroker) return; - - wxNode *node = wxTheClipboard->m_dataBroker->m_dataObjects.First(); - - while (node) - { - wxDataObject *data_object = (wxDataObject *)node->Data(); - - if (data_object->GetFormat().GetAtom() != selection_data->target) - { - node = node->Next(); - break; - } - - switch (data_object->GetFormat().GetType()) - { - case wxDF_TEXT: - { - wxTextDataObject *text_object = (wxTextDataObject*) data_object; - - wxString text = text_object->GetText(); - - char *s = WXSTRINGCAST text; - int len = (int) text.Length(); - - gtk_selection_data_set( - selection_data, - GDK_SELECTION_TYPE_STRING, - 8*sizeof(gchar), - (unsigned char*) s, - len ); - - break; - } - - case wxDF_BITMAP: - { - // wxBitmapDataObject *private_object = (wxBitmapDataObject*) data_object; - - // how do we do that ? - - break; - } - - case wxDF_PRIVATE: - { - wxPrivateDataObject *private_object = (wxPrivateDataObject*) data_object; - - if (private_object->GetSize() == 0) return; - - gtk_selection_data_set( - selection_data, - GDK_SELECTION_TYPE_STRING, - 8*sizeof(gchar), - (unsigned char*) private_object->GetData(), - (int) private_object->GetSize() ); - } - - default: - break; - } - - node = node->Next(); - } -} - -//----------------------------------------------------------------------------- -// wxClipboard -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxClipboard,wxObject) - -wxClipboard::wxClipboard() -{ - m_open = FALSE; - - m_ownsClipboard = FALSE; - m_ownsPrimarySelection = FALSE; - - m_dataBroker = (wxDataBroker*) NULL; - - m_receivedData = (wxDataObject*) NULL; - - m_clipboardWidget = gtk_window_new( GTK_WINDOW_POPUP ); - gtk_widget_realize( m_clipboardWidget ); - - gtk_signal_connect( GTK_OBJECT(m_clipboardWidget), - "selection_clear_event", - GTK_SIGNAL_FUNC( selection_clear_clip ), - (gpointer) NULL ); - - if (!g_clipboardAtom) g_clipboardAtom = gdk_atom_intern( "CLIPBOARD", FALSE ); - if (!g_textAtom) g_textAtom = gdk_atom_intern( "TEXT", FALSE ); - if (!g_targetsAtom) g_targetsAtom = gdk_atom_intern ("TARGETS", FALSE); - - m_formatSupported = FALSE; - m_targetRequested = 0; -} - -wxClipboard::~wxClipboard() -{ - Clear(); - - if (m_clipboardWidget) gtk_widget_destroy( m_clipboardWidget ); -} - -void wxClipboard::Clear() -{ - if (m_dataBroker) - { - /* As we have data we also own the clipboard. Once we no longer own - it, clear_selection is called which will set m_data to zero */ - - if (gdk_selection_owner_get( g_clipboardAtom ) == m_clipboardWidget->window) - { - gtk_selection_owner_set( (GtkWidget*) NULL, g_clipboardAtom, GDK_CURRENT_TIME ); - } - - if (gdk_selection_owner_get( GDK_SELECTION_PRIMARY ) == m_clipboardWidget->window) - { - gtk_selection_owner_set( (GtkWidget*) NULL, GDK_SELECTION_PRIMARY, GDK_CURRENT_TIME ); - } - - if (m_dataBroker) - { - delete m_dataBroker; - m_dataBroker = (wxDataBroker*) NULL; - } - } - - m_targetRequested = 0; - - m_formatSupported = FALSE; -} - -bool wxClipboard::Open() -{ - wxCHECK_MSG( !m_open, FALSE, "clipboard already open" ); - - m_open = TRUE; - - return TRUE; -} - -bool wxClipboard::SetData( wxDataObject *data ) -{ - wxCHECK_MSG( m_open, FALSE, "clipboard not open" ); - - wxCHECK_MSG( data, FALSE, "data is invalid" ); - - Clear(); - - return AddData( data ); -} - -bool wxClipboard::AddData( wxDataObject *data ) -{ - wxCHECK_MSG( m_open, FALSE, "clipboard not open" ); - - wxCHECK_MSG( data, FALSE, "data is invalid" ); - - /* if clipboard has been cleared before, create new data broker */ - - if (!m_dataBroker) m_dataBroker = new wxDataBroker(); - - /* add new data to list of offered data objects */ - - m_dataBroker->Add( data ); - - /* get native format id of new data object */ - - GdkAtom format = data->GetFormat().GetAtom(); - - wxCHECK_MSG( format, FALSE, "data has invalid format" ); - - /* This should happen automatically, but to be on the safe side */ - - m_ownsClipboard = FALSE; - m_ownsPrimarySelection = FALSE; - - /* Add handlers if someone requests data */ - - gtk_selection_add_handler( m_clipboardWidget, - g_clipboardAtom, - format, - selection_handler, - (gpointer) NULL ); - - gtk_selection_add_handler( m_clipboardWidget, - GDK_SELECTION_PRIMARY, - format, - selection_handler, - (gpointer) NULL ); - - /* Tell the world we offer clipboard data */ - - if (!gtk_selection_owner_set( m_clipboardWidget, - g_clipboardAtom, - GDK_CURRENT_TIME )) - { - return FALSE; - } - m_ownsClipboard = TRUE; - - if (!gtk_selection_owner_set( m_clipboardWidget, - GDK_SELECTION_PRIMARY, - GDK_CURRENT_TIME )) - { - return FALSE; - } - m_ownsPrimarySelection = TRUE; - - return TRUE; -} - -void wxClipboard::Close() -{ - wxCHECK_RET( m_open, "clipboard not open" ); - - m_open = FALSE; -} - -bool wxClipboard::IsSupported( wxDataObject &data ) -{ - wxCHECK_MSG( m_open, FALSE, "clipboard not open" ); - - /* store requested format to be asked for by callbacks */ - - m_targetRequested = data.GetFormat().GetAtom(); - - wxCHECK_MSG( m_targetRequested, FALSE, "invalid clipboard format" ); - - /* add handler for target (= format) query */ - - gtk_signal_connect( GTK_OBJECT(m_clipboardWidget), - "selection_received", - GTK_SIGNAL_FUNC( targets_selection_received ), - (gpointer) this ); - - m_formatSupported = FALSE; - - /* perform query. this will set m_formatSupported to - * TRUE if m_targetRequested is supported */ - - gtk_selection_convert( m_clipboardWidget, - g_clipboardAtom, - g_targetsAtom, - GDK_CURRENT_TIME ); - - gtk_signal_disconnect_by_func( GTK_OBJECT(m_clipboardWidget), - GTK_SIGNAL_FUNC( targets_selection_received ), - (gpointer) this ); - - if (!m_formatSupported) return FALSE; - - return TRUE; -} - -bool wxClipboard::GetData( wxDataObject &data ) -{ - wxCHECK_MSG( m_open, FALSE, "clipboard not open" ); - - /* is data supported by clipboard ? */ - - if (!IsSupported( data )) return FALSE; - - /* store pointer to data object to be filled up by callbacks */ - - m_receivedData = &data; - - /* store requested format to be asked for by callbacks */ - - m_targetRequested = data.GetFormat().GetAtom(); - - wxCHECK_MSG( m_targetRequested, FALSE, "invalid clipboard format" ); - - /* start query */ - - m_formatSupported = FALSE; - - gtk_signal_connect( GTK_OBJECT(m_clipboardWidget), - "selection_received", - GTK_SIGNAL_FUNC( selection_received ), - (gpointer) this ); - - /* ask for clipboard contents */ - - gtk_selection_convert( m_clipboardWidget, - g_clipboardAtom, - m_targetRequested, - GDK_CURRENT_TIME ); - - gtk_signal_disconnect_by_func( GTK_OBJECT(m_clipboardWidget), - GTK_SIGNAL_FUNC( selection_received ), - (gpointer) this ); - - /* this is a true error as we checked for the presence of such data before */ - - wxCHECK_MSG( m_formatSupported, FALSE, "error retrieving data from clipboard" ); - - return TRUE; -} - -//----------------------------------------------------------------------------- -// wxClipboardModule -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxClipboardModule,wxModule) - -bool wxClipboardModule::OnInit() -{ - wxTheClipboard = new wxClipboard(); - - return TRUE; -} - -void wxClipboardModule::OnExit() -{ - if (wxTheClipboard) delete wxTheClipboard; - wxTheClipboard = (wxClipboard*) NULL; -} - -#endif - - // wxUSE_CLIPBOARD - diff --git a/src/gtk/colour.cpp b/src/gtk/colour.cpp deleted file mode 100644 index a3292d450d..0000000000 --- a/src/gtk/colour.cpp +++ /dev/null @@ -1,214 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: colour.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifdef __GNUG__ -#pragma implementation "colour.h" -#endif - -#include "wx/gdicmn.h" - -#include "gdk/gdk.h" -#include "gdk/gdkprivate.h" - -//----------------------------------------------------------------------------- -// wxColour -//----------------------------------------------------------------------------- - -class wxColourRefData: public wxObjectRefData -{ - public: - - wxColourRefData(); - ~wxColourRefData(); - void FreeColour(); - - GdkColor m_color; - GdkColormap *m_colormap; - bool m_hasPixel; - - friend wxColour; -}; - -wxColourRefData::wxColourRefData() -{ - m_color.red = 0; - m_color.green = 0; - m_color.blue = 0; - m_color.pixel = 0; - m_colormap = (GdkColormap *) NULL; - m_hasPixel = FALSE; -} - -wxColourRefData::~wxColourRefData() -{ - FreeColour(); -} - -void wxColourRefData::FreeColour() -{ -// if (m_hasPixel) gdk_colors_free( m_colormap, &m_color, 1, 0 ); -} - -//----------------------------------------------------------------------------- - -#define M_COLDATA ((wxColourRefData *)m_refData) - -#define SHIFT (8*(sizeof(short int)-sizeof(char))) - -IMPLEMENT_DYNAMIC_CLASS(wxColour,wxGDIObject) - -wxColour::wxColour() -{ -} - -wxColour::wxColour( unsigned char red, unsigned char green, unsigned char blue ) -{ - m_refData = new wxColourRefData(); - M_COLDATA->m_color.red = ((unsigned short)red) << SHIFT; - M_COLDATA->m_color.green = ((unsigned short)green) << SHIFT; - M_COLDATA->m_color.blue = ((unsigned short)blue) << SHIFT; - M_COLDATA->m_color.pixel = 0; -} - -void wxColour::InitFromName( const wxString &colourName ) -{ - wxNode *node = (wxNode *) NULL; - if ( (wxTheColourDatabase) && (node = wxTheColourDatabase->Find(colourName)) ) - { - wxColour *col = (wxColour*)node->Data(); - UnRef(); - if (col) Ref( *col ); - } - else - { - m_refData = new wxColourRefData(); - if (!gdk_color_parse( colourName, &M_COLDATA->m_color )) - { - wxFAIL_MSG( "wxColour: couldn't find colour" ); - printf( "Colourname %s.\n", WXSTRINGCAST colourName ); - - delete m_refData; - m_refData = (wxObjectRefData *) NULL; - } - } -} - -wxColour::wxColour( const wxColour& col ) -{ - Ref( col ); -} - -wxColour::~wxColour() -{ -} - -wxColour& wxColour::operator = ( const wxColour& col ) -{ - if (*this == col) return (*this); - Ref( col ); - return *this; -} - -bool wxColour::operator == ( const wxColour& col ) -{ - return m_refData == col.m_refData; -} - -bool wxColour::operator != ( const wxColour& col) -{ - return m_refData != col.m_refData; -} - -void wxColour::Set( unsigned char red, unsigned char green, unsigned char blue ) -{ - UnRef(); - m_refData = new wxColourRefData(); - M_COLDATA->m_color.red = ((unsigned short)red) << SHIFT; - M_COLDATA->m_color.green = ((unsigned short)green) << SHIFT; - M_COLDATA->m_color.blue = ((unsigned short)blue) << SHIFT; - M_COLDATA->m_color.pixel = 0; -} - -unsigned char wxColour::Red() const -{ - wxCHECK_MSG( Ok(), 0, "invalid colour" ); - - return (unsigned char)(M_COLDATA->m_color.red >> SHIFT); -} - -unsigned char wxColour::Green() const -{ - wxCHECK_MSG( Ok(), 0, "invalid colour" ); - - return (unsigned char)(M_COLDATA->m_color.green >> SHIFT); -} - -unsigned char wxColour::Blue() const -{ - wxCHECK_MSG( Ok(), 0, "invalid colour" ); - - return (unsigned char)(M_COLDATA->m_color.blue >> SHIFT); -} - -bool wxColour::Ok() const -{ - return (m_refData != NULL); -} - -void wxColour::CalcPixel( GdkColormap *cmap ) -{ - if (!Ok()) return; - - if ((M_COLDATA->m_hasPixel) && (M_COLDATA->m_colormap == cmap)) return; - M_COLDATA->FreeColour(); - - GdkColormapPrivate *private_colormap = (GdkColormapPrivate*) cmap; - if ((private_colormap->visual->type == GDK_VISUAL_GRAYSCALE) || - (private_colormap->visual->type == GDK_VISUAL_PSEUDO_COLOR)) - { - GdkColor *colors = cmap->colors; - int max = 3 * (65536); - int index = -1; - - for (int i = 0; i < cmap->size; i++) - { - int rdiff = (M_COLDATA->m_color.red - colors[i].red); - int gdiff = (M_COLDATA->m_color.green - colors[i].green); - int bdiff = (M_COLDATA->m_color.blue - colors[i].blue); - int sum = ABS (rdiff) + ABS (gdiff) + ABS (bdiff); - if (sum < max) { index = i; max = sum; } - } - - M_COLDATA->m_hasPixel = TRUE; - M_COLDATA->m_color.pixel = index; - } - else - { - M_COLDATA->m_hasPixel = gdk_color_alloc( cmap, &M_COLDATA->m_color ); - } - - M_COLDATA->m_colormap = cmap; -} - -int wxColour::GetPixel() const -{ - wxCHECK_MSG( Ok(), 0, "invalid colour" ); - - return M_COLDATA->m_color.pixel; -} - -GdkColor *wxColour::GetColor() const -{ - wxCHECK_MSG( Ok(), (GdkColor *) NULL, "invalid colour" ); - - return &M_COLDATA->m_color; -} - - diff --git a/src/gtk/combobox.cpp b/src/gtk/combobox.cpp deleted file mode 100644 index 7fd217fda3..0000000000 --- a/src/gtk/combobox.cpp +++ /dev/null @@ -1,557 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: combobox.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "combobox.h" -#endif - - -#include "wx/combobox.h" - -#include - -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -//----------------------------------------------------------------------------- -// data -//----------------------------------------------------------------------------- - -extern bool g_blockEventsOnDrag; - -//----------------------------------------------------------------------------- -// "select" -//----------------------------------------------------------------------------- - -static void gtk_combo_clicked_callback( GtkWidget *WXUNUSED(widget), wxComboBox *combo ) -{ - if (!combo->HasVMT()) return; - if (g_blockEventsOnDrag) return; - - if (combo->m_alreadySent) - { - combo->m_alreadySent = FALSE; - return; - } - - combo->m_alreadySent = TRUE; - - wxCommandEvent event(wxEVT_COMMAND_COMBOBOX_SELECTED, combo->GetId()); - event.SetInt( combo->GetSelection() ); - wxString tmp( combo->GetStringSelection() ); - event.SetString( WXSTRINGCAST(tmp) ); - event.SetEventObject(combo); - combo->GetEventHandler()->ProcessEvent(event); -} - -//----------------------------------------------------------------------------- -// "changed" -//----------------------------------------------------------------------------- - -static void -gtk_text_changed_callback( GtkWidget *WXUNUSED(widget), wxComboBox *combo ) -{ - wxCommandEvent event( wxEVT_COMMAND_TEXT_UPDATED, combo->m_windowId ); - event.SetString( copystring(combo->GetValue()) ); - event.SetEventObject( combo ); - combo->GetEventHandler()->ProcessEvent( event ); - delete[] event.GetString(); -} - -//----------------------------------------------------------------------------- -// wxComboBox -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxComboBox,wxControl) - -BEGIN_EVENT_TABLE(wxComboBox, wxControl) - EVT_SIZE(wxComboBox::OnSize) -END_EVENT_TABLE() - -bool wxComboBox::Create( wxWindow *parent, wxWindowID id, const wxString& value, - const wxPoint& pos, const wxSize& size, - int n, const wxString choices[], - long style, const wxValidator& validator, - const wxString& name ) -{ - m_alreadySent = FALSE; - m_needParent = TRUE; - m_acceptsFocus = TRUE; - - PreCreation( parent, id, pos, size, style, name ); - - SetValidator( validator ); - - m_widget = gtk_combo_new(); - - wxSize newSize = size; - if (newSize.x == -1) newSize.x = 100; - if (newSize.y == -1) newSize.y = 26; - SetSize( newSize.x, newSize.y ); - - GtkWidget *list = GTK_COMBO(m_widget)->list; - - for (int i = 0; i < n; i++) - { - GtkWidget *list_item = gtk_list_item_new_with_label( choices[i] ); - - m_clientDataList.Append( (wxObject*)NULL ); - m_clientObjectList.Append( (wxObject*)NULL ); - - gtk_container_add( GTK_CONTAINER(list), list_item ); - - gtk_widget_realize( list_item ); - gtk_widget_realize( GTK_BIN(list_item)->child ); - - gtk_widget_show( list_item ); - - gtk_signal_connect( GTK_OBJECT(list_item), "select", - GTK_SIGNAL_FUNC(gtk_combo_clicked_callback), (gpointer)this ); - } - - m_parent->AddChild( this ); - - (m_parent->m_insertCallback)( m_parent, this ); - - PostCreation(); - - ConnectWidget( GTK_COMBO(m_widget)->button ); - - if (!value.IsNull()) SetValue( value ); - - gtk_widget_realize( GTK_COMBO(m_widget)->list ); - gtk_widget_realize( GTK_COMBO(m_widget)->entry ); - gtk_widget_realize( GTK_COMBO(m_widget)->button ); - - gtk_signal_connect( GTK_OBJECT(GTK_COMBO(m_widget)->entry), "changed", - GTK_SIGNAL_FUNC(gtk_text_changed_callback), (gpointer)this); - - SetBackgroundColour( parent->GetBackgroundColour() ); - SetForegroundColour( parent->GetForegroundColour() ); - - Show( TRUE ); - - return TRUE; -} - -wxComboBox::~wxComboBox() -{ - wxNode *node = m_clientDataList.First(); - while (node) - { - wxClientData *cd = (wxClientData*)node->Data(); - if (cd) delete cd; - node = node->Next(); - } - m_clientDataList.Clear(); -} - -void wxComboBox::AppendCommon( const wxString &item ) -{ - wxCHECK_RET( m_widget != NULL, "invalid combobox" ); - - GtkWidget *list = GTK_COMBO(m_widget)->list; - - GtkWidget *list_item = gtk_list_item_new_with_label( item ); - - gtk_signal_connect( GTK_OBJECT(list_item), "select", - GTK_SIGNAL_FUNC(gtk_combo_clicked_callback), (gpointer)this ); - - gtk_container_add( GTK_CONTAINER(list), list_item ); - - if (m_widgetStyle) ApplyWidgetStyle(); - - gtk_widget_show( list_item ); -} - -void wxComboBox::Append( const wxString &item ) -{ - m_clientDataList.Append( (wxObject*) NULL ); - m_clientObjectList.Append( (wxObject*) NULL ); - - AppendCommon( item ); -} - -void wxComboBox::Append( const wxString &item, void *clientData ) -{ - m_clientDataList.Append( (wxObject*) clientData ); - m_clientObjectList.Append( (wxObject*)NULL ); - - AppendCommon( item ); -} - -void wxComboBox::Append( const wxString &item, wxClientData *clientData ) -{ - m_clientDataList.Append( (wxObject*) NULL ); - m_clientObjectList.Append( (wxObject*) clientData ); - - AppendCommon( item ); -} - -void wxComboBox::SetClientData( int n, void* clientData ) -{ - wxCHECK_RET( m_widget != NULL, "invalid combobox" ); - - wxNode *node = m_clientDataList.Nth( n ); - if (!node) return; - - node->SetData( (wxObject*) clientData ); -} - -void* wxComboBox::GetClientData( int n ) -{ - wxCHECK_MSG( m_widget != NULL, NULL, "invalid combobox" ); - - wxNode *node = m_clientDataList.Nth( n ); - if (!node) return NULL; - - return node->Data(); -} - -void wxComboBox::SetClientObject( int n, wxClientData* clientData ) -{ - wxCHECK_RET( m_widget != NULL, "invalid combobox" ); - - wxNode *node = m_clientObjectList.Nth( n ); - if (!node) return; - - wxClientData *cd = (wxClientData*) node->Data(); - if (cd) delete cd; - - node->SetData( (wxObject*) clientData ); -} - -wxClientData* wxComboBox::GetClientObject( int n ) -{ - wxCHECK_MSG( m_widget != NULL, (wxClientData*)NULL, "invalid combobox" ); - - wxNode *node = m_clientDataList.Nth( n ); - if (!node) return (wxClientData*) NULL; - - return (wxClientData*) node->Data(); -} - -void wxComboBox::Clear() -{ - wxCHECK_RET( m_widget != NULL, "invalid combobox" ); - - GtkWidget *list = GTK_COMBO(m_widget)->list; - gtk_list_clear_items( GTK_LIST(list), 0, Number() ); - - wxNode *node = m_clientObjectList.First(); - while (node) - { - wxClientData *cd = (wxClientData*)node->Data(); - if (cd) delete cd; - node = node->Next(); - } - m_clientObjectList.Clear(); - - m_clientDataList.Clear(); -} - -void wxComboBox::Delete( int n ) -{ - wxCHECK_RET( m_widget != NULL, "invalid combobox" ); - - GtkList *listbox = GTK_LIST( GTK_COMBO(m_widget)->list ); - - GList *child = g_list_nth( listbox->children, n ); - - if (!child) - { - wxFAIL_MSG("wrong index"); - return; - } - - GList *list = g_list_append( (GList*) NULL, child->data ); - gtk_list_remove_items( listbox, list ); - g_list_free( list ); - - wxNode *node = m_clientObjectList.Nth( n ); - if (node) - { - wxClientData *cd = (wxClientData*)node->Data(); - if (cd) delete cd; - m_clientObjectList.DeleteNode( node ); - } - - node = m_clientDataList.Nth( n ); - if (node) - { - m_clientDataList.DeleteNode( node ); - } -} - -int wxComboBox::FindString( const wxString &item ) -{ - wxCHECK_MSG( m_widget != NULL, -1, "invalid combobox" ); - - GtkWidget *list = GTK_COMBO(m_widget)->list; - - GList *child = GTK_LIST(list)->children; - int count = 0; - while (child) - { - GtkBin *bin = GTK_BIN( child->data ); - GtkLabel *label = GTK_LABEL( bin->child ); - if (item == label->label) return count; - count++; - child = child->next; - } - - wxFAIL_MSG( "wxComboBox: string not found" ); - - return -1; -} - -int wxComboBox::GetSelection() const -{ - wxCHECK_MSG( m_widget != NULL, -1, "invalid combobox" ); - - GtkWidget *list = GTK_COMBO(m_widget)->list; - - GList *selection = GTK_LIST(list)->selection; - if (selection) - { - GList *child = GTK_LIST(list)->children; - int count = 0; - while (child) - { - if (child->data == selection->data) return count; - count++; - child = child->next; - } - } - - wxFAIL_MSG( "wxComboBox: no selection" ); - - return -1; -} - -wxString wxComboBox::GetString( int n ) const -{ - wxCHECK_MSG( m_widget != NULL, "", "invalid combobox" ); - - GtkWidget *list = GTK_COMBO(m_widget)->list; - - GList *child = g_list_nth( GTK_LIST(list)->children, n ); - if (child) - { - GtkBin *bin = GTK_BIN( child->data ); - GtkLabel *label = GTK_LABEL( bin->child ); - return label->label; - } - - wxFAIL_MSG( "wxComboBox: wrong index" ); - - return ""; -} - -wxString wxComboBox::GetStringSelection() const -{ - wxCHECK_MSG( m_widget != NULL, "", "invalid combobox" ); - - GtkWidget *list = GTK_COMBO(m_widget)->list; - - GList *selection = GTK_LIST(list)->selection; - if (selection) - { - GtkBin *bin = GTK_BIN( selection->data ); - wxString tmp = GTK_LABEL( bin->child )->label; - return tmp; - } - - wxFAIL_MSG( "wxComboBox: no selection" ); - - return ""; -} - -int wxComboBox::Number() const -{ - wxCHECK_MSG( m_widget != NULL, 0, "invalid combobox" ); - - GtkWidget *list = GTK_COMBO(m_widget)->list; - - GList *child = GTK_LIST(list)->children; - int count = 0; - while (child) { count++; child = child->next; } - return count; -} - -void wxComboBox::SetSelection( int n ) -{ - wxCHECK_RET( m_widget != NULL, "invalid combobox" ); - - GtkWidget *list = GTK_COMBO(m_widget)->list; - gtk_list_select_item( GTK_LIST(list), n ); -} - -void wxComboBox::SetStringSelection( const wxString &string ) -{ - wxCHECK_RET( m_widget != NULL, "invalid combobox" ); - - int res = FindString( string ); - if (res == -1) return; - SetSelection( res ); -} - -wxString wxComboBox::GetValue() const -{ - GtkWidget *entry = GTK_COMBO(m_widget)->entry; - wxString tmp = gtk_entry_get_text( GTK_ENTRY(entry) ); - return tmp; -} - -void wxComboBox::SetValue( const wxString& value ) -{ - wxCHECK_RET( m_widget != NULL, "invalid combobox" ); - - GtkWidget *entry = GTK_COMBO(m_widget)->entry; - wxString tmp = ""; - if (!value.IsNull()) tmp = value; - gtk_entry_set_text( GTK_ENTRY(entry), tmp ); -} - -void wxComboBox::Copy() -{ - wxCHECK_RET( m_widget != NULL, "invalid combobox" ); - - GtkWidget *entry = GTK_COMBO(m_widget)->entry; -#if (GTK_MINOR_VERSION == 1) - gtk_editable_copy_clipboard( GTK_EDITABLE(entry) ); -#else - gtk_editable_copy_clipboard( GTK_EDITABLE(entry), 0 ); -#endif -} - -void wxComboBox::Cut() -{ - wxCHECK_RET( m_widget != NULL, "invalid combobox" ); - - GtkWidget *entry = GTK_COMBO(m_widget)->entry; -#if (GTK_MINOR_VERSION == 1) - gtk_editable_cut_clipboard( GTK_EDITABLE(entry) ); -#else - gtk_editable_cut_clipboard( GTK_EDITABLE(entry), 0 ); -#endif -} - -void wxComboBox::Paste() -{ - wxCHECK_RET( m_widget != NULL, "invalid combobox" ); - - GtkWidget *entry = GTK_COMBO(m_widget)->entry; -#if (GTK_MINOR_VERSION == 1) - gtk_editable_paste_clipboard( GTK_EDITABLE(entry) ); -#else - gtk_editable_paste_clipboard( GTK_EDITABLE(entry), 0 ); -#endif -} - -void wxComboBox::SetInsertionPoint( long pos ) -{ - wxCHECK_RET( m_widget != NULL, "invalid combobox" ); - - GtkWidget *entry = GTK_COMBO(m_widget)->entry; - gtk_entry_set_position( GTK_ENTRY(entry), (int)pos ); -} - -void wxComboBox::SetInsertionPointEnd() -{ - wxCHECK_RET( m_widget != NULL, "invalid combobox" ); - - SetInsertionPoint( -1 ); -} - -long wxComboBox::GetInsertionPoint() const -{ - GtkWidget *entry = GTK_COMBO(m_widget)->entry; - return (long) GTK_EDITABLE(entry)->current_pos; -} - -long wxComboBox::GetLastPosition() const -{ - GtkWidget *entry = GTK_COMBO(m_widget)->entry; - int pos = GTK_ENTRY(entry)->text_length; - return (long) pos-1; -} - -void wxComboBox::Replace( long from, long to, const wxString& value ) -{ - wxCHECK_RET( m_widget != NULL, "invalid combobox" ); - - GtkWidget *entry = GTK_COMBO(m_widget)->entry; - gtk_editable_delete_text( GTK_EDITABLE(entry), (gint)from, (gint)to ); - if (value.IsNull()) return; - gint pos = (gint)to; - gtk_editable_insert_text( GTK_EDITABLE(entry), value, value.Length(), &pos ); -} - -void wxComboBox::Remove(long from, long to) -{ - wxCHECK_RET( m_widget != NULL, "invalid combobox" ); - - GtkWidget *entry = GTK_COMBO(m_widget)->entry; - gtk_editable_delete_text( GTK_EDITABLE(entry), (gint)from, (gint)to ); -} - -void wxComboBox::SetSelection( long WXUNUSED(from), long WXUNUSED(to) ) -{ - wxFAIL_MSG( "wxComboBox::SetSelection not implemented" ); -} - -void wxComboBox::SetEditable( bool WXUNUSED(editable) ) -{ - wxFAIL_MSG( "wxComboBox::SetEditable not implemented" ); -} - -void wxComboBox::OnSize( wxSizeEvent &event ) -{ - wxControl::OnSize( event ); - - int w = 21; - gtk_widget_set_usize( GTK_COMBO(m_widget)->entry, m_width-w-1, m_height ); - - gtk_widget_set_uposition( GTK_COMBO(m_widget)->button, m_x+m_width-w, m_y ); - gtk_widget_set_usize( GTK_COMBO(m_widget)->button, w, m_height ); -} - -void wxComboBox::ApplyWidgetStyle() -{ - SetWidgetStyle(); - - gtk_widget_set_style( GTK_COMBO(m_widget)->button, m_widgetStyle ); - gtk_widget_set_style( GTK_COMBO(m_widget)->entry, m_widgetStyle ); - gtk_widget_set_style( GTK_COMBO(m_widget)->list, m_widgetStyle ); - - GtkList *list = GTK_LIST( GTK_COMBO(m_widget)->list ); - GList *child = list->children; - while (child) - { - gtk_widget_set_style( GTK_WIDGET(child->data), m_widgetStyle ); - - GtkBin *bin = GTK_BIN(child->data); - gtk_widget_set_style( bin->child, m_widgetStyle ); - - child = child->next; - } -} - -GtkWidget* wxComboBox::GetConnectWidget() -{ - return GTK_COMBO(m_widget)->entry; -} - -bool wxComboBox::IsOwnGtkWindow( GdkWindow *window ) -{ - return ( (window == GTK_ENTRY( GTK_COMBO(m_widget)->entry )->text_area) || - (window == GTK_COMBO(m_widget)->button->window ) ); -} - diff --git a/src/gtk/control.cpp b/src/gtk/control.cpp deleted file mode 100644 index 4b04d0bb37..0000000000 --- a/src/gtk/control.cpp +++ /dev/null @@ -1,59 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: control.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling, Julian Smart and Vadim Zeitlin -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "control.h" -#endif - -#include "wx/control.h" - -//----------------------------------------------------------------------------- -// wxControl -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxControl,wxWindow) - -wxControl::wxControl(void) -{ - m_needParent = TRUE; -} - -wxControl::wxControl( wxWindow *parent, wxWindowID id, - const wxPoint &pos, const wxSize &size, - long style, const wxString &name ) : - wxWindow( parent, id, pos, size, style, name ) -{ -} - -void wxControl::Command( wxCommandEvent &WXUNUSED(event) ) -{ -} - -void wxControl::SetLabel( const wxString &label ) -{ - m_label = ""; - for ( const char *pc = label; *pc != '\0'; pc++ ) - { - if ( *pc == '&' ) - { - pc++; // skip it -#if 0 // it would be unused anyhow for now - kbd interface not done yet - if ( *pc != '&' ) m_chAccel = *pc; -#endif - } - m_label << *pc; - } -} - -wxString wxControl::GetLabel(void) const -{ - return m_label; -} - - diff --git a/src/gtk/cross.xbm b/src/gtk/cross.xbm deleted file mode 100644 index b07cbe7fcd..0000000000 --- a/src/gtk/cross.xbm +++ /dev/null @@ -1,6 +0,0 @@ -#define cross_width 15 -#define cross_height 15 -static char cross_bits[] = { - 0x84, 0x10, 0x84, 0x10, 0xff, 0x7f, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, - 0x84, 0x10, 0xff, 0x7f, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, - 0xff, 0x7f, 0x84, 0x10, 0x84, 0x10}; diff --git a/src/gtk/cursor.cpp b/src/gtk/cursor.cpp deleted file mode 100644 index eac07cc904..0000000000 --- a/src/gtk/cursor.cpp +++ /dev/null @@ -1,157 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: cursor.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifdef __GNUG__ -#pragma implementation "cursor.h" -#endif - -#include "wx/cursor.h" - -#include "gdk/gdk.h" - -//----------------------------------------------------------------------------- -// wxCursor -//----------------------------------------------------------------------------- - -class wxCursorRefData: public wxObjectRefData -{ - public: - - wxCursorRefData(); - ~wxCursorRefData(); - - GdkCursor *m_cursor; -}; - -wxCursorRefData::wxCursorRefData() -{ - m_cursor = (GdkCursor *) NULL; -} - -wxCursorRefData::~wxCursorRefData() -{ - if (m_cursor) gdk_cursor_destroy( m_cursor ); -} - -//----------------------------------------------------------------------------- - -#define M_CURSORDATA ((wxCursorRefData *)m_refData) - -IMPLEMENT_DYNAMIC_CLASS(wxCursor,wxObject) - -wxCursor::wxCursor() -{ -} - -wxCursor::wxCursor( int cursorId ) -{ - m_refData = new wxCursorRefData(); - - GdkCursorType gdk_cur = GDK_LEFT_PTR; - switch (cursorId) - { - case wxCURSOR_HAND: gdk_cur = GDK_HAND1; break; - case wxCURSOR_CROSS: gdk_cur = GDK_CROSSHAIR; break; - case wxCURSOR_SIZEWE: gdk_cur = GDK_SB_H_DOUBLE_ARROW; break; - case wxCURSOR_SIZENS: gdk_cur = GDK_SB_V_DOUBLE_ARROW; break; - case wxCURSOR_WAIT: - case wxCURSOR_WATCH: gdk_cur = GDK_WATCH; break; - case wxCURSOR_SIZING: gdk_cur = GDK_SIZING; break; - case wxCURSOR_SPRAYCAN: gdk_cur = GDK_SPRAYCAN; break; - case wxCURSOR_IBEAM: gdk_cur = GDK_XTERM; break; - case wxCURSOR_PENCIL: gdk_cur = GDK_PENCIL; break; - case wxCURSOR_NO_ENTRY: gdk_cur = GDK_PIRATE; break; - case wxCURSOR_SIZENWSE: - case wxCURSOR_SIZENESW: gdk_cur = GDK_FLEUR; break; - case wxCURSOR_QUESTION_ARROW: gdk_cur = GDK_QUESTION_ARROW; break; - case wxCURSOR_PAINT_BRUSH: gdk_cur = GDK_SPRAYCAN; break; - case wxCURSOR_MAGNIFIER: gdk_cur = GDK_PLUS; break; - case wxCURSOR_CHAR: gdk_cur = GDK_XTERM; break; - case wxCURSOR_LEFT_BUTTON: gdk_cur = GDK_LEFTBUTTON; break; - case wxCURSOR_MIDDLE_BUTTON: gdk_cur = GDK_MIDDLEBUTTON; break; - case wxCURSOR_RIGHT_BUTTON: gdk_cur = GDK_RIGHTBUTTON; break; -/* - case wxCURSOR_DOUBLE_ARROW: gdk_cur = GDK_DOUBLE_ARROW; break; - case wxCURSOR_CROSS_REVERSE: gdk_cur = GDK_CROSS_REVERSE; break; - case wxCURSOR_BASED_ARROW_UP: gdk_cur = GDK_BASED_ARROW_UP; break; - case wxCURSOR_BASED_ARROW_DOWN: gdk_cur = GDK_BASED_ARROW_DOWN; break; -*/ - } - - M_CURSORDATA->m_cursor = gdk_cursor_new( gdk_cur ); -} - -wxCursor::wxCursor( const wxCursor &cursor ) -{ - Ref( cursor ); -} - -wxCursor::~wxCursor() -{ -} - -wxCursor& wxCursor::operator = ( const wxCursor& cursor ) -{ - if (*this == cursor) return (*this); - Ref( cursor ); - - return *this; -} - -bool wxCursor::operator == ( const wxCursor& cursor ) const -{ - return m_refData == cursor.m_refData; -} - -bool wxCursor::operator != ( const wxCursor& cursor ) const -{ - return m_refData != cursor.m_refData; -} - -bool wxCursor::Ok() const -{ - return (m_refData != NULL); -} - -GdkCursor *wxCursor::GetCursor() const -{ - return M_CURSORDATA->m_cursor; -} - -//----------------------------------------------------------------------------- -// busy cursor routines -//----------------------------------------------------------------------------- - -bool g_isBusy = FALSE; - -void wxEndBusyCursor() -{ - g_isBusy = FALSE; -} - -void wxBeginBusyCursor( wxCursor *WXUNUSED(cursor) ) -{ - g_isBusy = TRUE; -} - -bool wxIsBusy() -{ - return g_isBusy; -} - -void wxSetCursor( const wxCursor& cursor ) -{ - extern wxCursor *g_globalCursor; - if (g_globalCursor) (*g_globalCursor) = cursor; - - if (cursor.Ok()) {} -} - - diff --git a/src/gtk/data.cpp b/src/gtk/data.cpp deleted file mode 100644 index 324dc713bc..0000000000 --- a/src/gtk/data.cpp +++ /dev/null @@ -1,170 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: data.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifdef __GNUG__ -// #pragma implementation -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/window.h" -#include "wx/dc.h" -#include "wx/accel.h" -#include "wx/dcps.h" - -#define _MAXPATHLEN 500 - -/* Used for X resources */ -#include -#include -#include - -wxResourceCache *wxTheResourceCache = (wxResourceCache *) NULL; -XrmDatabase wxResourceDatabase; - -/* Useful buffer, initialized in wxCommonInit */ -char *wxBuffer = (char *) NULL; - -/* Windows List */ -wxList wxTopLevelWindows; - -/* List of windows pending deletion */ -wxList wxPendingDelete; - -/* Current cursor, in order to hang on to - * cursor handle when setting the cursor globally */ -wxCursor *g_globalCursor = (wxCursor *) NULL; - -/* Don't allow event propagation during drag */ -bool g_blockEventsOnDrag = FALSE; - -/* Don't allow mouse event propagation during scroll */ -bool g_blockEventsOnScroll = FALSE; - -/* Message Strings for Internationalization */ -char **wx_msg_str = (char**)NULL; - -/* Custom OS version, as optionally placed in wx.ini/.wxrc - * Currently this can be Win95, Windows, Win32s, WinNT. - * For some systems, you can't tell until run-time what services you - * have. See wxGetOsVersion, which uses this string if present. */ -char *wxOsVersion = (char *) NULL; - -/* For printing several pages */ -int wxPageNumber; -wxPrintPaperDatabase* wxThePrintPaperDatabase = (wxPrintPaperDatabase *) NULL; - -/* GDI Object Lists */ -wxBrushList *wxTheBrushList = (wxBrushList *) NULL; -wxPenList *wxThePenList = (wxPenList *) NULL; -wxFontList *wxTheFontList = (wxFontList *) NULL; -wxColourDatabase *wxTheColourDatabase = (wxColourDatabase *) NULL; -wxBitmapList *wxTheBitmapList = (wxBitmapList *) NULL; - -/* X only font names */ -/* -wxFontNameDirectory *wxTheFontNameDirectory; -*/ - -/* Stock objects */ -wxFont *wxNORMAL_FONT; -wxFont *wxSMALL_FONT; -wxFont *wxITALIC_FONT; -wxFont *wxSWISS_FONT; - -wxPen *wxRED_PEN; -wxPen *wxCYAN_PEN; -wxPen *wxGREEN_PEN; -wxPen *wxBLACK_PEN; -wxPen *wxWHITE_PEN; -wxPen *wxTRANSPARENT_PEN; -wxPen *wxBLACK_DASHED_PEN; -wxPen *wxGREY_PEN; -wxPen *wxMEDIUM_GREY_PEN; -wxPen *wxLIGHT_GREY_PEN; - -wxBrush *wxBLUE_BRUSH; -wxBrush *wxGREEN_BRUSH; -wxBrush *wxWHITE_BRUSH; -wxBrush *wxBLACK_BRUSH; -wxBrush *wxTRANSPARENT_BRUSH; -wxBrush *wxCYAN_BRUSH; -wxBrush *wxRED_BRUSH; -wxBrush *wxGREY_BRUSH; -wxBrush *wxMEDIUM_GREY_BRUSH; -wxBrush *wxLIGHT_GREY_BRUSH; - -wxColour *wxBLACK; -wxColour *wxWHITE; -wxColour *wxGREY; -wxColour *wxRED; -wxColour *wxBLUE; -wxColour *wxGREEN; -wxColour *wxCYAN; -wxColour *wxLIGHT_GREY; - -wxCursor *wxSTANDARD_CURSOR = (wxCursor *) NULL; -wxCursor *wxHOURGLASS_CURSOR = (wxCursor *) NULL; -wxCursor *wxCROSS_CURSOR = (wxCursor *) NULL; - -/* 'Null' objects */ -wxAcceleratorTable wxNullAcceleratorTable; -wxBitmap wxNullBitmap; -wxIcon wxNullIcon; -wxCursor wxNullCursor; -wxPen wxNullPen; -wxBrush wxNullBrush; -wxFont wxNullFont; -wxColour wxNullColour; -wxPalette wxNullPalette; - -/* Default window names */ -const char *wxButtonNameStr = "button"; -const char *wxCanvasNameStr = "canvas"; -const char *wxCheckBoxNameStr = "check"; -const char *wxChoiceNameStr = "choice"; -const char *wxComboBoxNameStr = "comboBox"; -const char *wxDialogNameStr = "dialog"; -const char *wxFrameNameStr = "frame"; -const char *wxGaugeNameStr = "gauge"; -const char *wxStaticBoxNameStr = "groupBox"; -const char *wxListBoxNameStr = "listBox"; -const char *wxStaticTextNameStr = "message"; -const char *wxStaticBitmapNameStr = "message"; -const char *wxMultiTextNameStr = "multitext"; -const char *wxPanelNameStr = "panel"; -const char *wxRadioBoxNameStr = "radioBox"; -const char *wxRadioButtonNameStr = "radioButton"; -const char *wxBitmapRadioButtonNameStr = "radioButton"; -const char *wxScrollBarNameStr = "scrollBar"; -const char *wxSliderNameStr = "slider"; -const char *wxStaticNameStr = "static"; -const char *wxTextCtrlWindowNameStr = "textWindow"; -const char *wxTextCtrlNameStr = "text"; -const char *wxVirtListBoxNameStr = "virtListBox"; -const char *wxButtonBarNameStr = "buttonbar"; -const char *wxEnhDialogNameStr = "Shell"; -const char *wxToolBarNameStr = "toolbar"; -const char *wxStatusLineNameStr = "status_line"; -const char *wxEmptyString = ""; -const char *wxGetTextFromUserPromptStr = "Input Text"; -const char *wxMessageBoxCaptionStr = "Message"; -const char *wxFileSelectorPromptStr = "Select a file"; -const char *wxFileSelectorDefaultWildcardStr = "*.*"; -const char *wxInternalErrorStr = "wxWindows Internal Error"; -const char *wxFatalErrorStr = "wxWindows Fatal Error"; - -/* See wx/utils.h */ -const char *wxFloatToStringStr = "%.2f"; -const char *wxDoubleToStringStr = "%.2f"; - -/* Dafaults for wxWindow etc. */ -const wxSize wxDefaultSize(-1, -1); -const wxPoint wxDefaultPosition(-1, -1); diff --git a/src/gtk/dataobj.cpp b/src/gtk/dataobj.cpp deleted file mode 100644 index 331a728254..0000000000 --- a/src/gtk/dataobj.cpp +++ /dev/null @@ -1,467 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: dataobj.cpp -// Purpose: wxDataObject class -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dataobj.h" -#endif - -#include "wx/dataobj.h" -#include "wx/app.h" -#include "wx/debug.h" - -#include "gdk/gdk.h" - -//------------------------------------------------------------------------- -// wxDataFormat -//------------------------------------------------------------------------- - -IMPLEMENT_CLASS(wxDataFormat, wxObject) - -wxDataFormat::wxDataFormat() -{ - m_type = wxDF_INVALID; - m_hasAtom = FALSE; - m_atom = (GdkAtom) 0; -} - -wxDataFormat::wxDataFormat( wxDataType type ) -{ - SetType( type ); -} - -wxDataFormat::wxDataFormat( const wxString &id ) -{ - SetId( id ); -} - -wxDataFormat::wxDataFormat( wxDataFormat &format ) -{ - m_type = format.GetType(); - m_id = format.GetId(); - m_hasAtom = TRUE; - m_atom = format.GetAtom(); -} - -wxDataFormat::wxDataFormat( const GdkAtom atom ) -{ - m_hasAtom = TRUE; - - m_atom = atom; - - if (m_atom == GDK_TARGET_STRING) - { - m_type = wxDF_TEXT; - } else - if (m_atom == GDK_TARGET_BITMAP) - { - m_type = wxDF_BITMAP; - } else - { - m_type = wxDF_PRIVATE; - m_id = gdk_atom_name( m_atom ); - - if (m_id == "file:ALL") - { - m_type = wxDF_FILENAME; - } - } -} - -void wxDataFormat::SetType( wxDataType type ) -{ - m_type = type; - - if (m_type == wxDF_TEXT) - { - m_id = "STRING"; - } - else - if (m_type == wxDF_BITMAP) - { - m_id = "BITMAP"; - } - else - if (m_type == wxDF_FILENAME) - { - m_id = "file:ALL"; - } - else - { - wxFAIL_MSG( "invalid dataformat" ); - } - - m_hasAtom = FALSE; -} - -wxDataType wxDataFormat::GetType() const -{ - return m_type; -} - -wxString wxDataFormat::GetId() const -{ - return m_id; -} - -void wxDataFormat::SetId( const wxString &id ) -{ - m_type = wxDF_PRIVATE; - m_id = id; - m_hasAtom = FALSE; -} - -GdkAtom wxDataFormat::GetAtom() -{ - if (!m_hasAtom) - { - m_hasAtom = TRUE; - - if (m_type == wxDF_TEXT) - { - m_atom = GDK_TARGET_STRING; - } - else - if (m_type == wxDF_BITMAP) - { - m_atom = GDK_TARGET_BITMAP; - } - else - if (m_type == wxDF_PRIVATE) - { - m_atom = gdk_atom_intern( WXSTRINGCAST( m_id ), FALSE ); - } - else - if (m_type == wxDF_FILENAME) - { - m_atom = gdk_atom_intern( "file:ALL", FALSE ); - } - else - { - m_hasAtom = FALSE; - m_atom = (GdkAtom) 0; - } - } - - return m_atom; -} - -//------------------------------------------------------------------------- -// wxDataBroker -//------------------------------------------------------------------------- - -IMPLEMENT_CLASS(wxDataBroker,wxObject) - -wxDataBroker::wxDataBroker() -{ - m_dataObjects.DeleteContents(TRUE); - m_preferred = 0; -} - -void wxDataBroker::Add( wxDataObject *dataObject, bool preferred ) -{ - if (preferred) m_preferred = m_dataObjects.GetCount(); - m_dataObjects.Append( dataObject ); -} - -size_t wxDataBroker::GetFormatCount() const -{ - return m_dataObjects.GetCount(); -} - -wxDataFormat &wxDataBroker::GetPreferredFormat() const -{ - wxNode *node = m_dataObjects.Nth( m_preferred ); - - wxASSERT( node ); - - wxDataObject* data_obj = (wxDataObject*)node->Data(); - - return data_obj->GetFormat(); -} - -wxDataFormat &wxDataBroker::GetNthFormat( size_t nth ) const -{ - wxNode *node = m_dataObjects.Nth( nth ); - - wxASSERT( node ); - - wxDataObject* data_obj = (wxDataObject*)node->Data(); - - return data_obj->GetFormat(); -} - -bool wxDataBroker::IsSupportedFormat( wxDataFormat &format ) const -{ - wxNode *node = m_dataObjects.First(); - while (node) - { - wxDataObject *dobj = (wxDataObject*)node->Data(); - - if (dobj->GetFormat().GetAtom() == format.GetAtom()) - { - return TRUE; - } - - node = node->Next(); - } - - return FALSE; -} - -size_t wxDataBroker::GetSize( wxDataFormat& format ) const -{ - wxNode *node = m_dataObjects.First(); - while (node) - { - wxDataObject *dobj = (wxDataObject*)node->Data(); - - if (dobj->GetFormat().GetAtom() == format.GetAtom()) - { - return dobj->GetSize(); - } - - node = node->Next(); - } - - return 0; -} - -void wxDataBroker::WriteData( wxDataFormat& format, void *dest ) const -{ - wxNode *node = m_dataObjects.First(); - while (node) - { - wxDataObject *dobj = (wxDataObject*)node->Data(); - - if (dobj->GetFormat().GetAtom() == format.GetAtom()) - { - dobj->WriteData( dest ); - } - - node = node->Next(); - } -} - -//------------------------------------------------------------------------- -// wxDataObject -//------------------------------------------------------------------------- - -IMPLEMENT_ABSTRACT_CLASS( wxDataObject, wxObject ) - -wxDataObject::wxDataObject() -{ -} - -wxDataObject::~wxDataObject() -{ -} - -wxDataFormat &wxDataObject::GetFormat() -{ - return m_format; -} - -wxDataType wxDataObject::GetFormatType() const -{ - return m_format.GetType(); -} - -wxString wxDataObject::GetFormatId() const -{ - return m_format.GetId(); -} - -GdkAtom wxDataObject::GetFormatAtom() const -{ - GdkAtom ret = ((wxDataObject*) this)->m_format.GetAtom(); - return ret; -} - -// ---------------------------------------------------------------------------- -// wxTextDataObject -// ---------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS( wxTextDataObject, wxDataObject ) - -wxTextDataObject::wxTextDataObject() -{ - m_format.SetType( wxDF_TEXT ); -} - -wxTextDataObject::wxTextDataObject( const wxString& data ) -{ - m_format.SetType( wxDF_TEXT ); - - m_data = data; -} - -void wxTextDataObject::SetText( const wxString& data ) -{ - m_data = data; -} - -wxString wxTextDataObject::GetText() const -{ - return m_data; -} - -void wxTextDataObject::WriteData( void *dest ) const -{ - WriteString( m_data, dest ); -} - -size_t wxTextDataObject::GetSize() const -{ - return m_data.Len() + 1; -} - -void wxTextDataObject::WriteString( const wxString &str, void *dest ) const -{ - memcpy( dest, m_data.c_str(), GetSize() ); -} - -// ---------------------------------------------------------------------------- -// wxFileDataObject -// ---------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS( wxFileDataObject, wxDataObject ) - -wxFileDataObject::wxFileDataObject() -{ - m_format.SetType( wxDF_FILENAME ); -} - -void wxFileDataObject::AddFile( const wxString &file ) -{ - m_files += file; - m_files += (char)0; -} - -wxString wxFileDataObject::GetFiles() const -{ - return m_files; -} - -void wxFileDataObject::WriteData( void *dest ) const -{ - memcpy( dest, m_files.c_str(), GetSize() ); -} - -size_t wxFileDataObject::GetSize() const -{ - return m_files.Len() + 1; -} - -// ---------------------------------------------------------------------------- -// wxBitmapDataObject -// ---------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS( wxBitmapDataObject, wxDataObject ) - -wxBitmapDataObject::wxBitmapDataObject() -{ - m_format.SetType( wxDF_BITMAP ); -} - -wxBitmapDataObject::wxBitmapDataObject( const wxBitmap& bitmap ) -{ - m_format.SetType( wxDF_BITMAP ); - - m_bitmap = bitmap; -} - -void wxBitmapDataObject::SetBitmap( const wxBitmap &bitmap ) -{ - m_bitmap = bitmap; -} - -wxBitmap wxBitmapDataObject::GetBitmap() const -{ - return m_bitmap; -} - -void wxBitmapDataObject::WriteData( void *dest ) const -{ - WriteBitmap( m_bitmap, dest ); -} - -size_t wxBitmapDataObject::GetSize() const -{ - return 0; -} - -void wxBitmapDataObject::WriteBitmap( const wxBitmap &bitmap, void *dest ) const -{ - memcpy( dest, m_bitmap.GetPixmap(), GetSize() ); -} - -// ---------------------------------------------------------------------------- -// wxPrivateDataObject -// ---------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS( wxPrivateDataObject, wxDataObject ) - -wxPrivateDataObject::wxPrivateDataObject() -{ - m_id = "application/"; - m_id += wxTheApp->GetAppName(); - - m_format.SetId( m_id ); - - m_size = 0; - m_data = (char*) NULL; -} - -wxPrivateDataObject::~wxPrivateDataObject() -{ - if (m_data) delete[] m_data; -} - -void wxPrivateDataObject::SetId( const wxString& id ) -{ - m_id = id; - m_format.SetId( m_id ); -} - -wxString wxPrivateDataObject::GetId() const -{ - return m_id; -} - -void wxPrivateDataObject::SetData( const char *data, size_t size ) -{ - m_size = size; - - if (m_data) delete[] m_data; - - m_data = new char[size]; - - memcpy( m_data, data, size ); -} - -char* wxPrivateDataObject::GetData() const -{ - return m_data; -} - -void wxPrivateDataObject::WriteData( void *dest ) const -{ - WriteData( m_data, dest ); -} - -size_t wxPrivateDataObject::GetSize() const -{ - return m_size; -} - -void wxPrivateDataObject::WriteData( const char *data, void *dest ) const -{ - memcpy( dest, data, GetSize() ); -} - diff --git a/src/gtk/dc.cpp b/src/gtk/dc.cpp deleted file mode 100644 index 821bef8774..0000000000 --- a/src/gtk/dc.cpp +++ /dev/null @@ -1,377 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dc.cpp -// Purpose: -// Author: Robert Roebling -// RCS-ID: $Id$ -// Copyright: (c) 1998 Robert Roebling, Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifdef __GNUG__ -#pragma implementation "dc.h" -#endif - -#include "wx/dc.h" - -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -//----------------------------------------------------------------------------- -// constants -//----------------------------------------------------------------------------- - -#define mm2inches 0.0393700787402 -#define inches2mm 25.4 -#define mm2twips 56.6929133859 -#define twips2mm 0.0176388888889 -#define mm2pt 2.83464566929 -#define pt2mm 0.352777777778 - -//----------------------------------------------------------------------------- -// wxDC -//----------------------------------------------------------------------------- - -IMPLEMENT_ABSTRACT_CLASS(wxDC,wxObject) - -wxDC::wxDC() -{ - m_ok = FALSE; - m_optimize = FALSE; - m_autoSetting = FALSE; - m_colour = TRUE; - m_clipping = FALSE; - - m_mm_to_pix_x = 1.0; - m_mm_to_pix_y = 1.0; - - m_logicalOriginX = 0; - m_logicalOriginY = 0; - m_deviceOriginX = 0; - m_deviceOriginY = 0; - - m_logicalScaleX = 1.0; - m_logicalScaleY = 1.0; - m_userScaleX = 1.0; - m_userScaleY = 1.0; - m_scaleX = 1.0; - m_scaleY = 1.0; - - m_mappingMode = MM_TEXT; - m_needComputeScaleX = FALSE; - m_needComputeScaleY = FALSE; - - m_signX = 1; // default x-axis left to right - m_signY = 1; // default y-axis top down - - m_maxX = m_maxY = -100000; - m_minY = m_minY = 100000; - - m_logicalFunction = wxCOPY; -// m_textAlignment = wxALIGN_TOP_LEFT; - m_backgroundMode = wxTRANSPARENT; - - m_textForegroundColour = *wxBLACK; - m_textBackgroundColour = *wxWHITE; - m_pen = *wxBLACK_PEN; - m_font = *wxNORMAL_FONT; - m_brush = *wxTRANSPARENT_BRUSH; - m_backgroundBrush = *wxWHITE_BRUSH; - -// m_palette = wxAPP_COLOURMAP; -} - -wxDC::~wxDC() -{ -} - -bool wxDC::Ok() const -{ - return m_ok; -} - -void wxDC::DrawArc( long WXUNUSED(x1), long WXUNUSED(y1), long WXUNUSED(x2), long WXUNUSED(y2), - double WXUNUSED(xc), double WXUNUSED(yc) ) -{ -} - -void wxDC::DrawPoint( wxPoint& point ) -{ - DrawPoint( point.x, point.y ); -} - -void wxDC::DrawPolygon( wxList *list, long xoffset, long yoffset, int fillStyle ) -{ - int n = list->Number(); - wxPoint *points = new wxPoint[n]; - - int i = 0; - for( wxNode *node = list->First(); node; node = node->Next() ) - { - wxPoint *point = (wxPoint *)node->Data(); - points[i].x = point->x; - points[i++].y = point->y; - } - - DrawPolygon( n, points, xoffset, yoffset, fillStyle ); - delete[] points; -} - -void wxDC::DrawLines( wxList *list, long xoffset, long yoffset ) -{ - int n = list->Number(); - wxPoint *points = new wxPoint[n]; - - int i = 0; - for( wxNode *node = list->First(); node; node = node->Next() ) - { - wxPoint *point = (wxPoint *)node->Data(); - points[i].x = point->x; - points[i++].y = point->y; - } - - DrawLines( n, points, xoffset, yoffset ); - delete []points; -} - -void wxDC::DrawSpline( long x1, long y1, long x2, long y2, long x3, long y3 ) -{ - wxList list; - list.Append( (wxObject*)new wxPoint(x1, y1) ); - list.Append( (wxObject*)new wxPoint(x2, y2) ); - list.Append( (wxObject*)new wxPoint(x3, y3) ); - DrawSpline(&list); - wxNode *node = list.First(); - while (node) - { - wxPoint *p = (wxPoint*)node->Data(); - delete p; - node = node->Next(); - } -} - -void wxDC::DrawSpline( int n, wxPoint points[] ) -{ - wxList list; - for (int i = 0; i < n; i++) list.Append( (wxObject*)&points[i] ); - DrawSpline( &list ); -} - -void wxDC::SetClippingRegion( long x, long y, long width, long height ) -{ - m_clipping = TRUE; - m_clipX1 = x; - m_clipY1 = y; - m_clipX2 = x + width; - m_clipY2 = y + height; -} - -void wxDC::DestroyClippingRegion() -{ - m_clipping = FALSE; -} - -void wxDC::GetClippingBox( long *x, long *y, long *width, long *height ) const -{ - if (m_clipping) - { - if (x) *x = m_clipX1; - if (y) *y = m_clipY1; - if (width) *width = (m_clipX2 - m_clipX1); - if (height) *height = (m_clipY2 - m_clipY1); - } - else - { - *x = *y = *width = *height = 0; - } -} - -void wxDC::GetSize( int* width, int* height ) const -{ - if (width) *width = m_maxX-m_minX; - if (height) *height = m_maxY-m_minY; -} - -void wxDC::GetSizeMM( long* width, long* height ) const -{ - int w = 0; - int h = 0; - GetSize( &w, &h ); - if (width) *width = long( double(w) / (m_scaleX*m_mm_to_pix_x) ); - if (height) *height = long( double(h) / (m_scaleY*m_mm_to_pix_y) ); -} - -void wxDC::SetTextForeground( const wxColour &col ) -{ - m_textForegroundColour = col; -} - -void wxDC::SetTextBackground( const wxColour &col ) -{ - m_textBackgroundColour = col; -} - -void wxDC::SetMapMode( int mode ) -{ - switch (mode) - { - case MM_TWIPS: - SetLogicalScale( twips2mm*m_mm_to_pix_x, twips2mm*m_mm_to_pix_y ); - break; - case MM_POINTS: - SetLogicalScale( pt2mm*m_mm_to_pix_x, pt2mm*m_mm_to_pix_y ); - break; - case MM_METRIC: - SetLogicalScale( m_mm_to_pix_x, m_mm_to_pix_y ); - break; - case MM_LOMETRIC: - SetLogicalScale( m_mm_to_pix_x/10.0, m_mm_to_pix_y/10.0 ); - break; - default: - case MM_TEXT: - SetLogicalScale( 1.0, 1.0 ); - break; - } -/* we don't do this mega optimisation - if (mode != MM_TEXT) - { - m_needComputeScaleX = TRUE; - m_needComputeScaleY = TRUE; - } -*/ -} - -void wxDC::SetUserScale( double x, double y ) -{ - // allow negative ? -> no - m_userScaleX = x; - m_userScaleY = y; - ComputeScaleAndOrigin(); -} - -void wxDC::GetUserScale( double *x, double *y ) -{ - if (x) *x = m_userScaleX; - if (y) *y = m_userScaleY; -} - -void wxDC::SetLogicalScale( double x, double y ) -{ - // allow negative ? - m_logicalScaleX = x; - m_logicalScaleY = y; - ComputeScaleAndOrigin(); -} - -void wxDC::GetLogicalScale( double *x, double *y ) -{ - if (x) *x = m_logicalScaleX; - if (y) *y = m_logicalScaleY; -} - -void wxDC::SetLogicalOrigin( long x, long y ) -{ - m_logicalOriginX = x * m_signX; // is this still correct ? - m_logicalOriginY = y * m_signY; - ComputeScaleAndOrigin(); -} - -void wxDC::GetLogicalOrigin( long *x, long *y ) -{ - if (x) *x = m_logicalOriginX; - if (y) *y = m_logicalOriginY; -} - -void wxDC::SetDeviceOrigin( long x, long y ) -{ - // only wxPostScripDC has m_signX = -1, we override SetDeviceOrigin there - m_deviceOriginX = x; - m_deviceOriginY = y; - ComputeScaleAndOrigin(); -} - -void wxDC::GetDeviceOrigin( long *x, long *y ) -{ - if (x) *x = m_deviceOriginX; - if (y) *y = m_deviceOriginY; -} - -void wxDC::SetAxisOrientation( bool xLeftRight, bool yBottomUp ) -{ - // only wxPostScripDC has m_signX = -1, we override SetAxisOrientation there - m_signX = (xLeftRight ? 1 : -1); - m_signY = (yBottomUp ? -1 : 1); - ComputeScaleAndOrigin(); -} - -long wxDC::DeviceToLogicalX(long x) const -{ - return XDEV2LOG(x); -} - -long wxDC::DeviceToLogicalY(long y) const -{ - return YDEV2LOG(y); -} - -long wxDC::DeviceToLogicalXRel(long x) const -{ - return XDEV2LOGREL(x); -} - -long wxDC::DeviceToLogicalYRel(long y) const -{ - return YDEV2LOGREL(y); -} - -long wxDC::LogicalToDeviceX(long x) const -{ - return XLOG2DEV(x); -} - -long wxDC::LogicalToDeviceY(long y) const -{ - return YLOG2DEV(y); -} - -long wxDC::LogicalToDeviceXRel(long x) const -{ - return XLOG2DEVREL(x); -} - -long wxDC::LogicalToDeviceYRel(long y) const -{ - return YLOG2DEVREL(y); -} - -void wxDC::CalcBoundingBox( long x, long y ) -{ - if (x < m_minX) m_minX = x; - if (y < m_minY) m_minY = y; - if (x > m_maxX) m_maxX = x; - if (y > m_maxY) m_maxY = y; -} - -void wxDC::ComputeScaleAndOrigin() -{ - // CMB: copy scale to see if it changes - double origScaleX = m_scaleX; - double origScaleY = m_scaleY; - - m_scaleX = m_logicalScaleX * m_userScaleX; - m_scaleY = m_logicalScaleY * m_userScaleY; - - // CMB: if scale has changed call SetPen to recalulate the line width - if (m_scaleX != origScaleX || m_scaleY != origScaleY) - { - // this is a bit artificial, but we need to force wxDC to think - // the pen has changed - // It gives an Assert, Robert Roebling -/* - wxPen pen = m_pen; - m_pen = wxNullPen; - SetPen( pen ); -*/ - } -} - diff --git a/src/gtk/dcclient.cpp b/src/gtk/dcclient.cpp deleted file mode 100644 index f1af921f28..0000000000 --- a/src/gtk/dcclient.cpp +++ /dev/null @@ -1,1260 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcclient.cpp -// Purpose: -// Author: Robert Roebling -// RCS-ID: $Id$ -// Copyright: (c) 1998 Robert Roebling, Markus Holzem, Chris Breeze -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dcclient.h" -#endif - -#include "wx/dcclient.h" -#include "wx/dcmemory.h" -#include "wx/image.h" -#include - -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -//----------------------------------------------------------------------------- -// local data -//----------------------------------------------------------------------------- - -#include "bdiag.xbm" -#include "fdiag.xbm" -#include "cdiag.xbm" -#include "horiz.xbm" -#include "verti.xbm" -#include "cross.xbm" -#define num_hatches 6 - -static GdkPixmap *hatches[num_hatches]; -static GdkPixmap **hatch_bitmap = (GdkPixmap **) NULL; - -//----------------------------------------------------------------------------- -// constants -//----------------------------------------------------------------------------- - -#define RAD2DEG 57.2957795131 - -//----------------------------------------------------------------------------- -// temporary implementation of the missing GDK function -//----------------------------------------------------------------------------- -#include "gdk/gdkprivate.h" -void gdk_draw_bitmap (GdkDrawable *drawable, - GdkGC *gc, - GdkDrawable *src, - gint xsrc, - gint ysrc, - gint xdest, - gint ydest, - gint width, - gint height) -{ - GdkWindowPrivate *drawable_private; - GdkWindowPrivate *src_private; - GdkGCPrivate *gc_private; - - g_return_if_fail (drawable != NULL); - g_return_if_fail (src != NULL); - g_return_if_fail (gc != NULL); - - drawable_private = (GdkWindowPrivate*) drawable; - src_private = (GdkWindowPrivate*) src; - if (drawable_private->destroyed || src_private->destroyed) - return; - - gc_private = (GdkGCPrivate*) gc; - - if (width == -1) width = src_private->width; - if (height == -1) height = src_private->height; - - XCopyPlane( drawable_private->xdisplay, - src_private->xwindow, - drawable_private->xwindow, - gc_private->xgc, - xsrc, ysrc, - width, height, - xdest, ydest, - 1 ); -} - -//----------------------------------------------------------------------------- -// wxWindowDC -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxWindowDC,wxDC) - -wxWindowDC::wxWindowDC() -{ - m_penGC = (GdkGC *) NULL; - m_brushGC = (GdkGC *) NULL; - m_textGC = (GdkGC *) NULL; - m_bgGC = (GdkGC *) NULL; - m_cmap = (GdkColormap *) NULL; - m_isMemDC = FALSE; -} - -wxWindowDC::wxWindowDC( wxWindow *window ) -{ - m_penGC = (GdkGC *) NULL; - m_brushGC = (GdkGC *) NULL; - m_textGC = (GdkGC *) NULL; - m_bgGC = (GdkGC *) NULL; - m_cmap = (GdkColormap *) NULL; - - if (!window) return; - GtkWidget *widget = window->m_wxwindow; - if (!widget) return; - m_window = widget->window; - if (!m_window) return; - if (window->m_wxwindow) - m_cmap = gtk_widget_get_colormap( window->m_wxwindow ); - else - m_cmap = gtk_widget_get_colormap( window->m_widget ); - - m_isMemDC = FALSE; - - SetUpDC(); - -} - -wxWindowDC::~wxWindowDC() -{ - Destroy(); -} - -void wxWindowDC::FloodFill( long WXUNUSED(x), long WXUNUSED(y), - const wxColour &WXUNUSED(col), int WXUNUSED(style) ) -{ - wxFAIL_MSG( "wxWindowDC::FloodFill not implemented" ); -} - -bool wxWindowDC::GetPixel( long WXUNUSED(x1), long WXUNUSED(y1), wxColour *WXUNUSED(col) ) const -{ - wxFAIL_MSG( "wxWindowDC::GetPixel not implemented" ); - return FALSE; -} - -void wxWindowDC::DrawLine( long x1, long y1, long x2, long y2 ) -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - if (m_pen.GetStyle() != wxTRANSPARENT) - { - gdk_draw_line( m_window, m_penGC, - XLOG2DEV(x1), YLOG2DEV(y1), XLOG2DEV(x2), YLOG2DEV(y2) ); - - CalcBoundingBox(x1, y1); - CalcBoundingBox(x2, y2); - } -} - -void wxWindowDC::CrossHair( long x, long y ) -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - if (m_pen.GetStyle() != wxTRANSPARENT) - { - int w = 0; - int h = 0; - GetSize( &w, &h ); - long xx = XLOG2DEV(x); - long yy = YLOG2DEV(y); - gdk_draw_line( m_window, m_penGC, 0, yy, XLOG2DEVREL(w), yy ); - gdk_draw_line( m_window, m_penGC, xx, 0, xx, YLOG2DEVREL(h) ); - } -} - -void wxWindowDC::DrawArc( long x1, long y1, long x2, long y2, double xc, double yc ) -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - long xx1 = XLOG2DEV(x1); - long yy1 = YLOG2DEV(y1); - long xx2 = XLOG2DEV(x2); - long yy2 = YLOG2DEV(y2); - long xxc = XLOG2DEV((long)xc); - long yyc = YLOG2DEV((long)yc); - double dx = xx1 - xxc; - double dy = yy1 - yyc; - double radius = sqrt(dx*dx+dy*dy); - long r = (long)radius; - double radius1, radius2; - - if (xx1 == xx2 && yy1 == yy2) - { - radius1 = 0.0; - radius2 = 360.0; - } - else - if (radius == 0.0) - { - radius1 = radius2 = 0.0; - } - else - { - radius1 = (xx1 - xxc == 0) ? - (yy1 - yyc < 0) ? 90.0 : -90.0 : - -atan2(double(yy1-yyc), double(xx1-xxc)) * RAD2DEG; - radius2 = (xx2 - xxc == 0) ? - (yy2 - yyc < 0) ? 90.0 : -90.0 : - -atan2(double(yy2-yyc), double(xx2-xxc)) * RAD2DEG; - } - long alpha1 = long(radius1 * 64.0); - long alpha2 = long((radius2 - radius1) * 64.0); - while (alpha2 <= 0) alpha2 += 360*64; - while (alpha1 > 360*64) alpha1 -= 360*64; - - if (m_brush.GetStyle() != wxTRANSPARENT) - gdk_draw_arc( m_window, m_brushGC, TRUE, xxc-r, yyc-r, 2*r,2*r, alpha1, alpha2 ); - - if (m_pen.GetStyle() != wxTRANSPARENT) - gdk_draw_arc( m_window, m_penGC, FALSE, xxc-r, yyc-r, 2*r,2*r, alpha1, alpha2 ); - - CalcBoundingBox (x1, y1); - CalcBoundingBox (x2, y2); -} - -void wxWindowDC::DrawEllipticArc( long x, long y, long width, long height, double sa, double ea ) -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - long xx = XLOG2DEV(x); - long yy = YLOG2DEV(y); - long ww = m_signX * XLOG2DEVREL(width); - long hh = m_signY * YLOG2DEVREL(height); - - // CMB: handle -ve width and/or height - if (ww < 0) { ww = -ww; xx = xx - ww; } - if (hh < 0) { hh = -hh; yy = yy - hh; } - - long start = long(sa * 64.0); - long end = long(ea * 64.0); - if (m_brush.GetStyle() != wxTRANSPARENT) - gdk_draw_arc( m_window, m_brushGC, TRUE, xx, yy, ww, hh, start, end ); - - if (m_pen.GetStyle() != wxTRANSPARENT) - gdk_draw_arc( m_window, m_penGC, FALSE, xx, yy, ww, hh, start, end ); - - CalcBoundingBox (x, y); - CalcBoundingBox (x + width, y + height); -} - -void wxWindowDC::DrawPoint( long x, long y ) -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - if (m_pen.GetStyle() != wxTRANSPARENT) - gdk_draw_point( m_window, m_penGC, XLOG2DEV(x), YLOG2DEV(y) ); - - CalcBoundingBox (x, y); -} - -void wxWindowDC::DrawLines( int n, wxPoint points[], long xoffset, long yoffset ) -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - if (m_pen.GetStyle() == wxTRANSPARENT) return; - if (n <= 0) return; - - CalcBoundingBox( points[0].x + xoffset, points[0].y + yoffset ); - - for (int i = 0; i < n-1; i++) - { - long x1 = XLOG2DEV(points[i].x + xoffset); - long x2 = XLOG2DEV(points[i+1].x + xoffset); - long y1 = YLOG2DEV(points[i].y + yoffset); // oh, what a waste - long y2 = YLOG2DEV(points[i+1].y + yoffset); - gdk_draw_line( m_window, m_penGC, x1, y1, x2, y2 ); - - CalcBoundingBox( points[i+1].x + xoffset, points[i+1].y + yoffset ); - } -} - -void wxWindowDC::DrawLines( wxList *points, long xoffset, long yoffset ) -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - if (m_pen.GetStyle() == wxTRANSPARENT) return; - - wxNode *node = points->First(); - if (!node) return; - - wxPoint *pt = (wxPoint*)node->Data(); - CalcBoundingBox( pt->x + xoffset, pt->y + yoffset ); - - while (node->Next()) - { - wxPoint *point = (wxPoint*)node->Data(); - wxPoint *npoint = (wxPoint*)node->Next()->Data(); - long x1 = XLOG2DEV(point->x + xoffset); - long x2 = XLOG2DEV(npoint->x + xoffset); - long y1 = YLOG2DEV(point->y + yoffset); // and a waste again... - long y2 = YLOG2DEV(npoint->y + yoffset); - gdk_draw_line( m_window, m_penGC, x1, y1, x2, y2 ); - node = node->Next(); - - CalcBoundingBox( npoint->x + xoffset, npoint->y + yoffset ); - } -} - -void wxWindowDC::DrawPolygon( int n, wxPoint points[], long xoffset, long yoffset, int WXUNUSED(fillStyle) ) -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - if (n <= 0) return; - - GdkPoint *gdkpoints = new GdkPoint[n+1]; - int i; - for (i = 0 ; i < n ; i++) - { - gdkpoints[i].x = XLOG2DEV(points[i].x + xoffset); - gdkpoints[i].y = YLOG2DEV(points[i].y + yoffset); - - CalcBoundingBox( points[i].x + xoffset, points[i].y + yoffset ); - } - - if (m_brush.GetStyle() != wxTRANSPARENT) - gdk_draw_polygon (m_window, m_brushGC, TRUE, gdkpoints, n); - - // To do: Fillstyle - - if (m_pen.GetStyle() != wxTRANSPARENT) - for (i = 0 ; i < n ; i++) - { - gdk_draw_line( m_window, m_penGC, - gdkpoints[i%n].x, - gdkpoints[i%n].y, - gdkpoints[(i+1)%n].x, - gdkpoints[(i+1)%n].y); - } - - delete[] gdkpoints; -} - -void wxWindowDC::DrawPolygon( wxList *lines, long xoffset, long yoffset, int WXUNUSED(fillStyle)) -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - int n = lines->Number(); - if (n <= 0) return; - - GdkPoint *gdkpoints = new GdkPoint[n]; - wxNode *node = lines->First(); - int cnt = 0; - while (node) - { - wxPoint *p = (wxPoint *) node->Data(); - gdkpoints[cnt].x = XLOG2DEV(p->x + xoffset); - gdkpoints[cnt].y = YLOG2DEV(p->y + yoffset); - node = node->Next(); - cnt++; - - CalcBoundingBox( p->x + xoffset, p->y + yoffset ); - } - - if (m_brush.GetStyle() != wxTRANSPARENT) - gdk_draw_polygon (m_window, m_brushGC, TRUE, gdkpoints, n); - - // To do: Fillstyle - - if (m_pen.GetStyle() != wxTRANSPARENT) - { - int i; - for (i = 0 ; i < n ; i++) - { - gdk_draw_line( m_window, m_penGC, - gdkpoints[i%n].x, - gdkpoints[i%n].y, - gdkpoints[(i+1)%n].x, - gdkpoints[(i+1)%n].y ); - } - } - delete[] gdkpoints; -} - -void wxWindowDC::DrawRectangle( long x, long y, long width, long height ) -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - long xx = XLOG2DEV(x); - long yy = YLOG2DEV(y); - long ww = m_signX * XLOG2DEVREL(width); - long hh = m_signY * YLOG2DEVREL(height); - - // CMB: draw nothing if transformed w or h is 0 - if (ww == 0 || hh == 0) return; - - // CMB: handle -ve width and/or height - if (ww < 0) { ww = -ww; xx = xx - ww; } - if (hh < 0) { hh = -hh; yy = yy - hh; } - - if (m_brush.GetStyle() != wxTRANSPARENT) - gdk_draw_rectangle( m_window, m_brushGC, TRUE, xx, yy, ww, hh ); - - if (m_pen.GetStyle() != wxTRANSPARENT) - gdk_draw_rectangle( m_window, m_penGC, FALSE, xx, yy, ww-1, hh-1 ); - - CalcBoundingBox( x, y ); - CalcBoundingBox( x + width, y + height ); -} - -void wxWindowDC::DrawRoundedRectangle( long x, long y, long width, long height, double radius ) -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - if (radius < 0.0) radius = - radius * ((width < height) ? width : height); - - long xx = XLOG2DEV(x); - long yy = YLOG2DEV(y); - long ww = m_signX * XLOG2DEVREL(width); - long hh = m_signY * YLOG2DEVREL(height); - long rr = XLOG2DEVREL((long)radius); - - // CMB: handle -ve width and/or height - if (ww < 0) { ww = -ww; xx = xx - ww; } - if (hh < 0) { hh = -hh; yy = yy - hh; } - - // CMB: if radius is zero use DrawRectangle() instead to avoid - // X drawing errors with small radii - if (rr == 0) - { - DrawRectangle( x, y, width, height ); - return; - } - - // CMB: draw nothing if transformed w or h is 0 - if (ww == 0 || hh == 0) return; - - // CMB: adjust size if outline is drawn otherwise the result is - // 1 pixel too wide and high - if (m_pen.GetStyle() != wxTRANSPARENT) - { - ww--; - hh--; - } - - // CMB: ensure dd is not larger than rectangle otherwise we - // get an hour glass shape - long dd = 2 * rr; - if (dd > ww) dd = ww; - if (dd > hh) dd = hh; - rr = dd / 2; - - if (m_brush.GetStyle() != wxTRANSPARENT) - { - gdk_draw_rectangle( m_window, m_brushGC, TRUE, xx+rr, yy, ww-dd+1, hh ); - gdk_draw_rectangle( m_window, m_brushGC, TRUE, xx, yy+rr, ww, hh-dd+1 ); - gdk_draw_arc( m_window, m_brushGC, TRUE, xx, yy, dd, dd, 90*64, 90*64 ); - gdk_draw_arc( m_window, m_brushGC, TRUE, xx+ww-dd, yy, dd, dd, 0, 90*64 ); - gdk_draw_arc( m_window, m_brushGC, TRUE, xx+ww-dd, yy+hh-dd, dd, dd, 270*64, 90*64 ); - gdk_draw_arc( m_window, m_brushGC, TRUE, xx, yy+hh-dd, dd, dd, 180*64, 90*64 ); - } - - if (m_pen.GetStyle() != wxTRANSPARENT) - { - gdk_draw_line( m_window, m_penGC, xx+rr, yy, xx+ww-rr, yy ); - gdk_draw_line( m_window, m_penGC, xx+rr, yy+hh, xx+ww-rr, yy+hh ); - gdk_draw_line( m_window, m_penGC, xx, yy+rr, xx, yy+hh-rr ); - gdk_draw_line( m_window, m_penGC, xx+ww, yy+rr, xx+ww, yy+hh-rr ); - gdk_draw_arc( m_window, m_penGC, FALSE, xx, yy, dd, dd, 90*64, 90*64 ); - gdk_draw_arc( m_window, m_penGC, FALSE, xx+ww-dd, yy, dd, dd, 0, 90*64 ); - gdk_draw_arc( m_window, m_penGC, FALSE, xx+ww-dd, yy+hh-dd, dd, dd, 270*64, 90*64 ); - gdk_draw_arc( m_window, m_penGC, FALSE, xx, yy+hh-dd, dd, dd, 180*64, 90*64 ); - } - - // this ignores the radius - CalcBoundingBox( x, y ); - CalcBoundingBox( x + width, y + height ); -} - -void wxWindowDC::DrawEllipse( long x, long y, long width, long height ) -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - long xx = XLOG2DEV(x); - long yy = YLOG2DEV(y); - long ww = m_signX * XLOG2DEVREL(width); - long hh = m_signY * YLOG2DEVREL(height); - - // CMB: handle -ve width and/or height - if (ww < 0) { ww = -ww; xx = xx - ww; } - if (hh < 0) { hh = -hh; yy = yy - hh; } - - if (m_brush.GetStyle() != wxTRANSPARENT) - gdk_draw_arc( m_window, m_brushGC, TRUE, xx, yy, ww, hh, 0, 360*64 ); - - if (m_pen.GetStyle() != wxTRANSPARENT) - gdk_draw_arc( m_window, m_penGC, FALSE, xx, yy, ww, hh, 0, 360*64 ); - - CalcBoundingBox( x - width, y - height ); - CalcBoundingBox( x + width, y + height ); -} - -bool wxWindowDC::CanDrawBitmap() const -{ - return TRUE; -} - -void wxWindowDC::DrawIcon( const wxIcon &icon, long x, long y ) -{ - DrawBitmap( icon, x, y, TRUE ); -} - -void wxWindowDC::DrawBitmap( const wxBitmap &bitmap, long x, long y, bool useMask ) -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - if (!bitmap.Ok()) return; - - int xx = XLOG2DEV(x); - int yy = YLOG2DEV(y); - - int w = bitmap.GetWidth(); - int h = bitmap.GetHeight(); - - int ww = XLOG2DEVREL(w); - int hh = YLOG2DEVREL(h); - - wxBitmap use_bitmap; - - if ((w != ww) || (h != hh)) - { - wxImage image( bitmap ); - image = image.Scale( ww, hh ); - - use_bitmap = image.ConvertToBitmap(); - } - else - { - use_bitmap = bitmap; - } - - GdkBitmap *mask = (GdkBitmap *) NULL; - if (use_bitmap.GetMask()) mask = use_bitmap.GetMask()->GetBitmap(); - - if (useMask && mask) - { - gdk_gc_set_clip_mask( m_penGC, mask ); - gdk_gc_set_clip_origin( m_penGC, xx, yy ); - } - - GdkPixmap *pm = use_bitmap.GetPixmap(); - gdk_draw_pixmap( m_window, m_penGC, pm, 0, 0, xx, yy, -1, -1 ); - - if (useMask && mask) - { - gdk_gc_set_clip_mask( m_penGC, (GdkBitmap *) NULL ); - gdk_gc_set_clip_origin( m_penGC, 0, 0 ); - } - - CalcBoundingBox( x, y ); - CalcBoundingBox( x + w, y + h ); -} - -bool wxWindowDC::Blit( long xdest, long ydest, long width, long height, - wxDC *source, long xsrc, long ysrc, int logical_func, bool useMask ) -{ - wxCHECK_MSG( Ok(), FALSE, "invalid window dc" ); - - CalcBoundingBox( xdest, ydest ); - CalcBoundingBox( xdest + width, ydest + height ); - - int old_logical_func = m_logicalFunction; - SetLogicalFunction( logical_func ); - - wxClientDC *csrc = (wxClientDC*)source; - - if (csrc->m_isMemDC) - { - wxMemoryDC* srcDC = (wxMemoryDC*)source; - GdkPixmap* pmap = srcDC->m_selected.GetPixmap(); - if (pmap) - { - long xx = XLOG2DEV(xdest); - long yy = YLOG2DEV(ydest); - - GdkBitmap *mask = (GdkBitmap *) NULL; - if (srcDC->m_selected.GetMask()) mask = srcDC->m_selected.GetMask()->GetBitmap(); - - if (useMask && mask) - { - gdk_gc_set_clip_mask( m_penGC, mask ); - gdk_gc_set_clip_origin( m_penGC, xx, yy ); - } - - gdk_draw_pixmap( m_window, m_penGC, pmap, - source->DeviceToLogicalX(xsrc), - source->DeviceToLogicalY(ysrc), - xx, - yy, - source->DeviceToLogicalXRel(width), - source->DeviceToLogicalYRel(height) ); - - if (useMask && mask) - { - gdk_gc_set_clip_mask( m_penGC, (GdkBitmap *) NULL ); - gdk_gc_set_clip_origin( m_penGC, 0, 0 ); - } - - SetLogicalFunction( old_logical_func ); - return TRUE; - } - - GdkBitmap* bmap = srcDC->m_selected.GetBitmap(); - if (bmap) - { - long xx = XLOG2DEV(xdest); - long yy = YLOG2DEV(ydest); - - GdkBitmap *mask = (GdkBitmap *) NULL; - if (srcDC->m_selected.GetMask()) mask = srcDC->m_selected.GetMask()->GetBitmap(); - - if (useMask && mask) - { - gdk_gc_set_clip_mask( m_penGC, mask ); - gdk_gc_set_clip_origin( m_penGC, xx, yy ); - } - - gdk_draw_bitmap( m_window, m_textGC, bmap, - source->DeviceToLogicalX(xsrc), - source->DeviceToLogicalY(ysrc), - xx, - yy, - source->DeviceToLogicalXRel(width), - source->DeviceToLogicalYRel(height) ); - - if (useMask && mask) - { - gdk_gc_set_clip_mask( m_penGC, (GdkBitmap *) NULL ); - gdk_gc_set_clip_origin( m_penGC, 0, 0 ); - } - - SetLogicalFunction( old_logical_func ); - return TRUE; - } - } - - gdk_window_copy_area ( m_window, m_penGC, - XLOG2DEV(xdest), YLOG2DEV(ydest), - csrc->GetWindow(), - source->DeviceToLogicalX(xsrc), - source->DeviceToLogicalY(ysrc), - source->DeviceToLogicalXRel(width), - source->DeviceToLogicalYRel(height) ); - - SetLogicalFunction( old_logical_func ); - return TRUE; -} - -void wxWindowDC::DrawText( const wxString &text, long x, long y, bool WXUNUSED(use16) ) -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - GdkFont *font = m_font.GetInternalFont( m_scaleY ); - - x = XLOG2DEV(x); - y = YLOG2DEV(y); - - // CMB 21/5/98: draw text background if mode is wxSOLID - if (m_backgroundMode == wxSOLID) - { - long width = gdk_string_width( font, text ); - long height = font->ascent + font->descent; - gdk_gc_set_foreground( m_textGC, m_textBackgroundColour.GetColor() ); - gdk_draw_rectangle( m_window, m_textGC, TRUE, x, y, width, height ); - gdk_gc_set_foreground( m_textGC, m_textForegroundColour.GetColor() ); - } - gdk_draw_string( m_window, font, m_textGC, x, y + font->ascent, text ); - - // CMB 17/7/98: simple underline: ignores scaling and underlying - // X font's XA_UNDERLINE_POSITION and XA_UNDERLINE_THICKNESS - // properties (see wxXt implementation) - if (m_font.GetUnderlined()) - { - long width = gdk_string_width( font, text ); - long ul_y = y + font->ascent; - if (font->descent > 0) ul_y++; - gdk_draw_line( m_window, m_textGC, x, ul_y, x + width, ul_y); - } - - long w, h; - GetTextExtent (text, &w, &h); - CalcBoundingBox (x + w, y + h); - CalcBoundingBox (x, y); -} - -bool wxWindowDC::CanGetTextExtent() const -{ - return TRUE; -} - -void wxWindowDC::GetTextExtent( const wxString &string, long *width, long *height, - long *descent, long *externalLeading, - wxFont *theFont, bool WXUNUSED(use16) ) -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - wxFont fontToUse = m_font; - if (theFont) fontToUse = *theFont; - - GdkFont *font = fontToUse.GetInternalFont( m_scaleY ); - if (width) (*width) = long(gdk_string_width( font, string ) / m_scaleX); - if (height) (*height) = long((font->ascent + font->descent) / m_scaleY); - if (descent) (*descent) = long(font->descent / m_scaleY); - if (externalLeading) (*externalLeading) = 0; // ?? -} - -long wxWindowDC::GetCharWidth() -{ - wxCHECK_MSG( Ok(), 0, "invalid window dc" ); - - GdkFont *font = m_font.GetInternalFont( m_scaleY ); - return long(gdk_string_width( font, "H" ) / m_scaleX); -} - -long wxWindowDC::GetCharHeight() -{ - wxCHECK_MSG( Ok(), 0, "invalid window dc" ); - - GdkFont *font = m_font.GetInternalFont( m_scaleY ); - return long((font->ascent + font->descent) / m_scaleY); -} - -void wxWindowDC::Clear() -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - if (!m_isMemDC) - { - gdk_window_clear( m_window ); - } - else - { - int width,height; - GetSize( &width, &height ); - gdk_draw_rectangle( m_window, m_bgGC, TRUE, 0, 0, width, height ); - } -} - -void wxWindowDC::SetFont( const wxFont &font ) -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - m_font = font; -} - -void wxWindowDC::SetPen( const wxPen &pen ) -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - if (m_pen == pen) return; - - m_pen = pen; - - if (!m_pen.Ok()) return; - - gint width = m_pen.GetWidth(); - // CMB: if width is non-zero scale it with the dc - if (width <= 0) - { - width = 1; - } - else - { - // X doesn't allow different width in x and y and so we take - // the average - double w = 0.5 + (abs(XLOG2DEVREL(width)) + abs(YLOG2DEVREL(width))) / 2.0; - width = (int)w; - } - - GdkLineStyle lineStyle = GDK_LINE_SOLID; - switch (m_pen.GetStyle()) - { - case wxSOLID: { lineStyle = GDK_LINE_SOLID; break; } - case wxDOT: { lineStyle = GDK_LINE_ON_OFF_DASH; break; } - case wxLONG_DASH: { lineStyle = GDK_LINE_ON_OFF_DASH; break; } - case wxSHORT_DASH: { lineStyle = GDK_LINE_ON_OFF_DASH; break; } - case wxDOT_DASH: { lineStyle = GDK_LINE_DOUBLE_DASH; break; } - } - - GdkCapStyle capStyle = GDK_CAP_ROUND; - switch (m_pen.GetCap()) - { - case wxCAP_ROUND: { capStyle = (width <= 1) ? GDK_CAP_NOT_LAST : GDK_CAP_ROUND; break; } - case wxCAP_PROJECTING: { capStyle = GDK_CAP_PROJECTING; break; } - case wxCAP_BUTT: { capStyle = GDK_CAP_BUTT; break; } - } - - GdkJoinStyle joinStyle = GDK_JOIN_ROUND; - switch (m_pen.GetJoin()) - { - case wxJOIN_BEVEL: { joinStyle = GDK_JOIN_BEVEL; break; } - case wxJOIN_ROUND: { joinStyle = GDK_JOIN_ROUND; break; } - case wxJOIN_MITER: { joinStyle = GDK_JOIN_MITER; break; } - } - - gdk_gc_set_line_attributes( m_penGC, width, lineStyle, capStyle, joinStyle ); - - m_pen.GetColour().CalcPixel( m_cmap ); - gdk_gc_set_foreground( m_penGC, m_pen.GetColour().GetColor() ); -} - -void wxWindowDC::SetBrush( const wxBrush &brush ) -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - if (m_brush == brush) return; - - m_brush = brush; - - if (!m_brush.Ok()) return; - - m_brush.GetColour().CalcPixel( m_cmap ); - gdk_gc_set_foreground( m_brushGC, m_brush.GetColour().GetColor() ); - - GdkFill fillStyle = GDK_SOLID; - switch (m_brush.GetStyle()) - { - case wxSOLID: - case wxTRANSPARENT: - break; - default: - fillStyle = GDK_STIPPLED; - } - - gdk_gc_set_fill( m_brushGC, fillStyle ); - - if (m_brush.GetStyle() == wxSTIPPLE) - { - gdk_gc_set_stipple( m_brushGC, m_brush.GetStipple()->GetPixmap() ); - } - - if (IS_HATCH(m_brush.GetStyle())) - { - int num = m_brush.GetStyle() - wxBDIAGONAL_HATCH; - gdk_gc_set_stipple( m_brushGC, hatches[num] ); - } -} - -void wxWindowDC::SetBackground( const wxBrush &brush ) -{ - // CMB 21/7/98: Added SetBackground. Sets background brush - // for Clear() and bg colour for shapes filled with cross-hatch brush - - wxCHECK_RET( Ok(), "invalid window dc" ); - - if (m_backgroundBrush == brush) return; - - m_backgroundBrush = brush; - - if (!m_backgroundBrush.Ok()) return; - - m_backgroundBrush.GetColour().CalcPixel( m_cmap ); - gdk_gc_set_background( m_brushGC, m_backgroundBrush.GetColour().GetColor() ); - gdk_gc_set_background( m_penGC, m_backgroundBrush.GetColour().GetColor() ); - gdk_gc_set_background( m_bgGC, m_backgroundBrush.GetColour().GetColor() ); - gdk_gc_set_foreground( m_bgGC, m_backgroundBrush.GetColour().GetColor() ); - - GdkFill fillStyle = GDK_SOLID; - switch (m_backgroundBrush.GetStyle()) - { - case wxSOLID: - case wxTRANSPARENT: - break; - default: - fillStyle = GDK_STIPPLED; - } - - gdk_gc_set_fill( m_bgGC, fillStyle ); - - if (m_backgroundBrush.GetStyle() == wxSTIPPLE) - { - gdk_gc_set_stipple( m_bgGC, m_backgroundBrush.GetStipple()->GetPixmap() ); - } - - if (IS_HATCH(m_backgroundBrush.GetStyle())) - { - int num = m_backgroundBrush.GetStyle() - wxBDIAGONAL_HATCH; - gdk_gc_set_stipple( m_bgGC, hatches[num] ); - } -} - -void wxWindowDC::SetLogicalFunction( int function ) -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - if (m_logicalFunction == function) return; - - GdkFunction mode = GDK_COPY; - switch (function) - { - case wxXOR: mode = GDK_INVERT; break; - case wxINVERT: mode = GDK_INVERT; break; - default: break; - } - - m_logicalFunction = function; - gdk_gc_set_function( m_penGC, mode ); - gdk_gc_set_function( m_brushGC, mode ); - gdk_gc_set_function( m_textGC, mode ); -} - -void wxWindowDC::SetTextForeground( const wxColour &col ) -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - if (m_textForegroundColour == col) return; - - m_textForegroundColour = col; - if (!m_textForegroundColour.Ok()) return; - - m_textForegroundColour.CalcPixel( m_cmap ); - gdk_gc_set_foreground( m_textGC, m_textForegroundColour.GetColor() ); -} - -void wxWindowDC::SetTextBackground( const wxColour &col ) -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - if (m_textBackgroundColour == col) return; - - m_textBackgroundColour = col; - if (!m_textBackgroundColour.Ok()) return; - - m_textBackgroundColour.CalcPixel( m_cmap ); - gdk_gc_set_background( m_textGC, m_textBackgroundColour.GetColor() ); -} - -void wxWindowDC::SetBackgroundMode( int mode ) -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - m_backgroundMode = mode; - - // CMB 21/7/98: fill style of cross-hatch brushes is affected by - // transparent/solid background mode - - if (m_brush.GetStyle() != wxSOLID && m_brush.GetStyle() != wxTRANSPARENT) - { - gdk_gc_set_fill( m_brushGC, - (m_backgroundMode == wxTRANSPARENT) ? GDK_STIPPLED : GDK_OPAQUE_STIPPLED); - } -} - -void wxWindowDC::SetPalette( const wxPalette& WXUNUSED(palette) ) -{ - wxFAIL_MSG( "wxWindowDC::SetPalette not implemented" ); -} - -void wxWindowDC::SetClippingRegion( long x, long y, long width, long height ) -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - wxDC::SetClippingRegion( x, y, width, height ); - - GdkRectangle rect; - rect.x = XLOG2DEV(x); - rect.y = YLOG2DEV(y); - rect.width = XLOG2DEVREL(width); - rect.height = YLOG2DEVREL(height); - gdk_gc_set_clip_rectangle( m_penGC, &rect ); - gdk_gc_set_clip_rectangle( m_brushGC, &rect ); - gdk_gc_set_clip_rectangle( m_textGC, &rect ); - gdk_gc_set_clip_rectangle( m_bgGC, &rect ); -} - -void wxWindowDC::SetClippingRegion( const wxRegion ®ion ) -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - if (region.Empty()) - { - DestroyClippingRegion(); - return; - } - - gdk_gc_set_clip_region( m_penGC, region.GetRegion() ); - gdk_gc_set_clip_region( m_brushGC, region.GetRegion() ); - gdk_gc_set_clip_region( m_textGC, region.GetRegion() ); - gdk_gc_set_clip_region( m_bgGC, region.GetRegion() ); -} - -void wxWindowDC::DestroyClippingRegion() -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - wxDC::DestroyClippingRegion(); - - gdk_gc_set_clip_rectangle( m_penGC, (GdkRectangle *) NULL ); - gdk_gc_set_clip_rectangle( m_brushGC, (GdkRectangle *) NULL ); - gdk_gc_set_clip_rectangle( m_textGC, (GdkRectangle *) NULL ); - gdk_gc_set_clip_rectangle( m_bgGC, (GdkRectangle *) NULL ); -} - -void wxWindowDC::SetUpDC() -{ - Destroy(); - m_ok = TRUE; - m_logicalFunction = wxCOPY; - m_penGC = gdk_gc_new( m_window ); - m_brushGC = gdk_gc_new( m_window ); - m_textGC = gdk_gc_new( m_window ); - m_bgGC = gdk_gc_new( m_window ); - - wxColour tmp_col( m_textForegroundColour ); - m_textForegroundColour = wxNullColour; - SetTextForeground( tmp_col ); - tmp_col = m_textBackgroundColour; - m_textBackgroundColour = wxNullColour; - SetTextBackground( tmp_col ); - - wxPen tmp_pen( m_pen ); - m_pen = wxNullPen; - SetPen( tmp_pen ); - - wxFont tmp_font( m_font ); - m_font = wxNullFont; - SetFont( tmp_font ); - - wxBrush tmp_brush( m_brush ); - m_brush = wxNullBrush; - SetBrush( tmp_brush ); - - tmp_brush = m_backgroundBrush; - m_backgroundBrush = wxNullBrush; - SetBackground( tmp_brush ); - - if (!hatch_bitmap) - { - hatch_bitmap = hatches; - hatch_bitmap[0] = gdk_bitmap_create_from_data( (GdkWindow *) NULL, bdiag_bits, bdiag_width, bdiag_height ); - hatch_bitmap[1] = gdk_bitmap_create_from_data( (GdkWindow *) NULL, cdiag_bits, cdiag_width, cdiag_height ); - hatch_bitmap[2] = gdk_bitmap_create_from_data( (GdkWindow *) NULL, fdiag_bits, fdiag_width, fdiag_height ); - hatch_bitmap[3] = gdk_bitmap_create_from_data( (GdkWindow *) NULL, cross_bits, cross_width, cross_height ); - hatch_bitmap[4] = gdk_bitmap_create_from_data( (GdkWindow *) NULL, horiz_bits, horiz_width, horiz_height ); - hatch_bitmap[5] = gdk_bitmap_create_from_data( (GdkWindow *) NULL, verti_bits, verti_width, verti_height ); - } -} - -void wxWindowDC::Destroy() -{ - if (m_penGC) gdk_gc_unref( m_penGC ); - m_penGC = (GdkGC*) NULL; - if (m_brushGC) gdk_gc_unref( m_brushGC ); - m_brushGC = (GdkGC*) NULL; - if (m_textGC) gdk_gc_unref( m_textGC ); - m_textGC = (GdkGC*) NULL; - if (m_bgGC) gdk_gc_unref( m_bgGC ); - m_bgGC = (GdkGC*) NULL; -} - -GdkWindow *wxWindowDC::GetWindow() -{ - return m_window; -} - -// ----------------------------------- spline code ---------------------------------------- - -void wx_quadratic_spline(double a1, double b1, double a2, double b2, - double a3, double b3, double a4, double b4); -void wx_clear_stack(); -int wx_spline_pop(double *x1, double *y1, double *x2, double *y2, double *x3, - double *y3, double *x4, double *y4); -void wx_spline_push(double x1, double y1, double x2, double y2, double x3, double y3, - double x4, double y4); -static bool wx_spline_add_point(double x, double y); -static void wx_spline_draw_point_array(wxDC *dc); - -wxList wx_spline_point_list; - -#define half(z1, z2) ((z1+z2)/2.0) -#define THRESHOLD 5 - -/* iterative version */ - -void wx_quadratic_spline(double a1, double b1, double a2, double b2, double a3, double b3, double a4, - double b4) -{ - register double xmid, ymid; - double x1, y1, x2, y2, x3, y3, x4, y4; - - wx_clear_stack(); - wx_spline_push(a1, b1, a2, b2, a3, b3, a4, b4); - - while (wx_spline_pop(&x1, &y1, &x2, &y2, &x3, &y3, &x4, &y4)) { - xmid = (double)half(x2, x3); - ymid = (double)half(y2, y3); - if (fabs(x1 - xmid) < THRESHOLD && fabs(y1 - ymid) < THRESHOLD && - fabs(xmid - x4) < THRESHOLD && fabs(ymid - y4) < THRESHOLD) { - wx_spline_add_point( x1, y1 ); - wx_spline_add_point( xmid, ymid ); - } else { - wx_spline_push(xmid, ymid, (double)half(xmid, x3), (double)half(ymid, y3), - (double)half(x3, x4), (double)half(y3, y4), x4, y4); - wx_spline_push(x1, y1, (double)half(x1, x2), (double)half(y1, y2), - (double)half(x2, xmid), (double)half(y2, ymid), xmid, ymid); - } - } -} - -/* utilities used by spline drawing routines */ - -typedef struct wx_spline_stack_struct { - double x1, y1, x2, y2, x3, y3, x4, y4; -} Stack; - -#define SPLINE_STACK_DEPTH 20 -static Stack wx_spline_stack[SPLINE_STACK_DEPTH]; -static Stack *wx_stack_top; -static int wx_stack_count; - -void wx_clear_stack() -{ - wx_stack_top = wx_spline_stack; - wx_stack_count = 0; -} - -void wx_spline_push(double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4) -{ - wx_stack_top->x1 = x1; - wx_stack_top->y1 = y1; - wx_stack_top->x2 = x2; - wx_stack_top->y2 = y2; - wx_stack_top->x3 = x3; - wx_stack_top->y3 = y3; - wx_stack_top->x4 = x4; - wx_stack_top->y4 = y4; - wx_stack_top++; - wx_stack_count++; -} - -int wx_spline_pop(double *x1, double *y1, double *x2, double *y2, - double *x3, double *y3, double *x4, double *y4) -{ - if (wx_stack_count == 0) - return (0); - wx_stack_top--; - wx_stack_count--; - *x1 = wx_stack_top->x1; - *y1 = wx_stack_top->y1; - *x2 = wx_stack_top->x2; - *y2 = wx_stack_top->y2; - *x3 = wx_stack_top->x3; - *y3 = wx_stack_top->y3; - *x4 = wx_stack_top->x4; - *y4 = wx_stack_top->y4; - return (1); -} - -static bool wx_spline_add_point(double x, double y) -{ - wxPoint *point = new wxPoint ; - point->x = (int) x; - point->y = (int) y; - wx_spline_point_list.Append((wxObject*)point); - return TRUE; -} - -static void wx_spline_draw_point_array(wxDC *dc) -{ - dc->DrawLines(&wx_spline_point_list, 0, 0 ); - wxNode *node = wx_spline_point_list.First(); - while (node) - { - wxPoint *point = (wxPoint *)node->Data(); - delete point; - delete node; - node = wx_spline_point_list.First(); - } -} - -void wxWindowDC::DrawSpline( wxList *points ) -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - wxPoint *p; - double cx1, cy1, cx2, cy2, cx3, cy3, cx4, cy4; - double x1, y1, x2, y2; - - wxNode *node = points->First(); - p = (wxPoint *)node->Data(); - - x1 = p->x; - y1 = p->y; - - node = node->Next(); - p = (wxPoint *)node->Data(); - - x2 = p->x; - y2 = p->y; - cx1 = (double)((x1 + x2) / 2); - cy1 = (double)((y1 + y2) / 2); - cx2 = (double)((cx1 + x2) / 2); - cy2 = (double)((cy1 + y2) / 2); - - wx_spline_add_point(x1, y1); - - while ((node = node->Next()) != NULL) - { - p = (wxPoint *)node->Data(); - x1 = x2; - y1 = y2; - x2 = p->x; - y2 = p->y; - cx4 = (double)(x1 + x2) / 2; - cy4 = (double)(y1 + y2) / 2; - cx3 = (double)(x1 + cx4) / 2; - cy3 = (double)(y1 + cy4) / 2; - - wx_quadratic_spline(cx1, cy1, cx2, cy2, cx3, cy3, cx4, cy4); - - cx1 = cx4; - cy1 = cy4; - cx2 = (double)(cx1 + x2) / 2; - cy2 = (double)(cy1 + y2) / 2; - } - - wx_spline_add_point( cx1, cy1 ); - wx_spline_add_point( x2, y2 ); - - wx_spline_draw_point_array( this ); -} - - -//----------------------------------------------------------------------------- -// wxPaintDC -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxPaintDC,wxWindowDC) - -wxPaintDC::wxPaintDC() - : wxWindowDC() -{ -} - -wxPaintDC::wxPaintDC( wxWindow *win ) - : wxWindowDC( win ) -{ -} - -//----------------------------------------------------------------------------- -// wxClientDC -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxClientDC,wxWindowDC) - -wxClientDC::wxClientDC() - : wxWindowDC() -{ -} - -wxClientDC::wxClientDC( wxWindow *win ) - : wxWindowDC( win ) -{ -} - diff --git a/src/gtk/dcmemory.cpp b/src/gtk/dcmemory.cpp deleted file mode 100644 index 139438b215..0000000000 --- a/src/gtk/dcmemory.cpp +++ /dev/null @@ -1,83 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcmemory.cpp -// Purpose: -// Author: Robert Roebling -// RCS-ID: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dcmemory.h" -#endif - -#include "wx/dcmemory.h" - -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -//----------------------------------------------------------------------------- -// wxMemoryDC -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxMemoryDC,wxWindowDC) - -wxMemoryDC::wxMemoryDC() : wxWindowDC() -{ - m_ok = FALSE; - - m_cmap = gtk_widget_get_default_colormap(); -} - -wxMemoryDC::wxMemoryDC( wxDC *WXUNUSED(dc) ) - : wxWindowDC() -{ - m_ok = FALSE; - - m_cmap = gtk_widget_get_default_colormap(); -} - -wxMemoryDC::~wxMemoryDC() -{ -} - -void wxMemoryDC::SelectObject( const wxBitmap& bitmap ) -{ - m_selected = bitmap; - if (m_selected.Ok()) - { - if (m_selected.GetPixmap()) - { - m_window = m_selected.GetPixmap(); - } - else - { - m_window = m_selected.GetBitmap(); - } - - SetUpDC(); - - m_isMemDC = TRUE; - } - else - { - m_ok = FALSE; - m_window = (GdkWindow *) NULL; - } -} - -void wxMemoryDC::GetSize( int *width, int *height ) const -{ - if (m_selected.Ok()) - { - if (width) (*width) = m_selected.GetWidth(); - if (height) (*height) = m_selected.GetHeight(); - } - else - { - if (width) (*width) = 0; - if (height) (*height) = 0; - } -} - - diff --git a/src/gtk/dcscreen.cpp b/src/gtk/dcscreen.cpp deleted file mode 100644 index b7a89b9b83..0000000000 --- a/src/gtk/dcscreen.cpp +++ /dev/null @@ -1,345 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcscreen.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dcscreen.h" -#endif - -#include "wx/dcscreen.h" -#include "wx/window.h" - -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -//----------------------------------------------------------------------------- -// global data initialization -//----------------------------------------------------------------------------- - -GdkWindow *wxScreenDC::sm_overlayWindow = (GdkWindow*) NULL; - int wxScreenDC::sm_overlayWindowX = 0; - int wxScreenDC::sm_overlayWindowY = 0; - - -//----------------------------------------------------------------------------- -// create X window -//----------------------------------------------------------------------------- - -extern "C" { - -#include "gdk/gdk.h" -#include "gdk/gdkprivate.h" -#include "gdk/gdkx.h" -#include - -int my_nevent_masks = 17; -int my_event_masks_table[19] = -{ - ExposureMask, - PointerMotionMask, - PointerMotionHintMask, - ButtonMotionMask, - Button1MotionMask, - Button2MotionMask, - Button3MotionMask, - ButtonPressMask | OwnerGrabButtonMask, - ButtonReleaseMask | OwnerGrabButtonMask, - KeyPressMask, - KeyReleaseMask, - EnterWindowMask, - LeaveWindowMask, - FocusChangeMask, - StructureNotifyMask, - PropertyChangeMask, - VisibilityChangeMask, - 0, /* PROXIMITY_IN */ - 0 /* PROXIMTY_OUT */ -}; - -GdkWindow* -gdk_window_transparent_new ( GdkWindow *parent, - GdkWindowAttr *attributes, - gint attributes_mask) -{ - GdkWindow *window; - GdkWindowPrivate *gprivate; - GdkWindowPrivate *parent_private; - GdkVisual *visual; - Display *parent_display; - Window xparent; - Visual *xvisual; - XSetWindowAttributes xattributes; - long xattributes_mask; - XSizeHints size_hints; - XWMHints wm_hints; - XClassHint *class_hint; - int x, y, depth; - unsigned int gclass; - char *title; - int i; - - g_return_val_if_fail (attributes != NULL, NULL); - - if (!parent) - parent = (GdkWindow*) &gdk_root_parent; - - parent_private = (GdkWindowPrivate*) parent; - if (parent_private->destroyed) - return NULL; - - xparent = parent_private->xwindow; - parent_display = parent_private->xdisplay; - - gprivate = g_new (GdkWindowPrivate, 1); - window = (GdkWindow*) gprivate; - - gprivate->parent = parent; - - if (parent_private != &gdk_root_parent) - parent_private->children = g_list_prepend (parent_private->children, window); - - gprivate->xdisplay = parent_display; - gprivate->destroyed = FALSE; - gprivate->resize_count = 0; - gprivate->ref_count = 1; - xattributes_mask = 0; - - if (attributes_mask & GDK_WA_X) - x = attributes->x; - else - x = 0; - - if (attributes_mask & GDK_WA_Y) - y = attributes->y; - else - y = 0; - - gprivate->x = x; - gprivate->y = y; - gprivate->width = (attributes->width > 1) ? (attributes->width) : (1); - gprivate->height = (attributes->height > 1) ? (attributes->height) : (1); - gprivate->window_type = attributes->window_type; - gprivate->extension_events = FALSE; - -#ifndef NEW_GTK_DND_CODE - gprivate->dnd_drag_data_type = None; - gprivate->dnd_drag_data_typesavail = - gprivate->dnd_drop_data_typesavail = NULL; - gprivate->dnd_drop_enabled = gprivate->dnd_drag_enabled = - gprivate->dnd_drag_accepted = gprivate->dnd_drag_datashow = - gprivate->dnd_drop_data_numtypesavail = - gprivate->dnd_drag_data_numtypesavail = 0; - gprivate->dnd_drag_eventmask = gprivate->dnd_drag_savedeventmask = 0; -#endif - - gprivate->filters = NULL; - gprivate->children = NULL; - - window->user_data = NULL; - - if (attributes_mask & GDK_WA_VISUAL) - visual = attributes->visual; - else - visual = gdk_visual_get_system (); - xvisual = ((GdkVisualPrivate*) visual)->xvisual; - - xattributes.event_mask = StructureNotifyMask; - for (i = 0; i < my_nevent_masks; i++) - { - if (attributes->event_mask & (1 << (i + 1))) - xattributes.event_mask |= my_event_masks_table[i]; - } - - if (xattributes.event_mask) - xattributes_mask |= CWEventMask; - - if(attributes_mask & GDK_WA_NOREDIR) { - xattributes.override_redirect = - (attributes->override_redirect == FALSE)?False:True; - xattributes_mask |= CWOverrideRedirect; - } else - xattributes.override_redirect = False; - - gclass = InputOutput; - depth = visual->depth; - - if (attributes_mask & GDK_WA_COLORMAP) - gprivate->colormap = attributes->colormap; - else - gprivate->colormap = gdk_colormap_get_system (); - - xattributes.colormap = ((GdkColormapPrivate*) gprivate->colormap)->xcolormap; - xattributes_mask |= CWColormap; - - xparent = gdk_root_window; - - xattributes.save_under = True; - xattributes.override_redirect = True; - xattributes.cursor = None; - xattributes_mask |= CWSaveUnder | CWOverrideRedirect; - - gprivate->xwindow = XCreateWindow (gprivate->xdisplay, xparent, - x, y, gprivate->width, gprivate->height, - 0, depth, gclass, xvisual, - xattributes_mask, &xattributes); - gdk_window_ref (window); - gdk_xid_table_insert (&gprivate->xwindow, window); - - if (gprivate->colormap) - gdk_colormap_ref (gprivate->colormap); - - XSetWMProtocols (gprivate->xdisplay, gprivate->xwindow, gdk_wm_window_protocols, 2); - - size_hints.flags = PSize; - size_hints.width = gprivate->width; - size_hints.height = gprivate->height; - - wm_hints.flags = InputHint | StateHint | WindowGroupHint; - wm_hints.window_group = gdk_leader_window; - wm_hints.input = True; - wm_hints.initial_state = NormalState; - - /* FIXME: Is there any point in doing this? Do any WM's pay - * attention to PSize, and even if they do, is this the - * correct value??? - */ - XSetWMNormalHints (gprivate->xdisplay, gprivate->xwindow, &size_hints); - - XSetWMHints (gprivate->xdisplay, gprivate->xwindow, &wm_hints); - - if (attributes_mask & GDK_WA_TITLE) - title = attributes->title; - else -#if (GTK_MINOR_VERSION == 1) - title = "Unknown"; // GLH: Well I don't know for the moment what to write here. -#else - title = gdk_progname; -#endif - - XmbSetWMProperties (gprivate->xdisplay, gprivate->xwindow, - title, title, - NULL, 0, - NULL, NULL, NULL); - - if (attributes_mask & GDK_WA_WMCLASS) - { - class_hint = XAllocClassHint (); - class_hint->res_name = attributes->wmclass_name; - class_hint->res_class = attributes->wmclass_class; - XSetClassHint (gprivate->xdisplay, gprivate->xwindow, class_hint); - XFree (class_hint); - } - - return window; -} - -} // extern "C" - -//----------------------------------------------------------------------------- -// wxScreenDC -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxScreenDC,wxPaintDC) - -wxScreenDC::wxScreenDC(void) -{ - m_ok = FALSE; - m_window = (GdkWindow *) NULL; - m_cmap = gdk_colormap_get_system(); - - if (sm_overlayWindow) - { - m_window = sm_overlayWindow; - m_deviceOriginX = - sm_overlayWindowX; - m_deviceOriginY = - sm_overlayWindowY; - } - else - { - m_window = GDK_ROOT_PARENT(); - } - - SetUpDC(); - - gdk_gc_set_subwindow( m_penGC, GDK_INCLUDE_INFERIORS ); - gdk_gc_set_subwindow( m_brushGC, GDK_INCLUDE_INFERIORS ); - gdk_gc_set_subwindow( m_textGC, GDK_INCLUDE_INFERIORS ); - gdk_gc_set_subwindow( m_bgGC, GDK_INCLUDE_INFERIORS ); -} - -wxScreenDC::~wxScreenDC(void) -{ - EndDrawingOnTop(); -} - -bool wxScreenDC::StartDrawingOnTop( wxWindow *window ) -{ - if (!window) return StartDrawingOnTop(); - - int x = 0; - int y = 0; - window->GetPosition( &x, &y ); - int w = 0; - int h = 0; - window->GetSize( &w, &h ); - window->ClientToScreen( &x, &y ); - - wxRect rect; - rect.x = x; - rect.y = y; - rect.width = 0; - rect.height = 0; - - return StartDrawingOnTop( &rect ); -} - -bool wxScreenDC::StartDrawingOnTop( wxRect *rect ) -{ - int x = 0; - int y = 0; - int width = gdk_screen_width(); - int height = gdk_screen_height(); - if (rect) - { - x = rect->x; - y = rect->y; - width = rect->width; - height = rect->height; - } - - sm_overlayWindowX = x; - sm_overlayWindowY = y; - - GdkWindowAttr attr; - attr.x = x; - attr.y = y; - attr.width = width; - attr.height = height; - attr.override_redirect = TRUE; - attr.wclass = GDK_INPUT_OUTPUT; - attr.event_mask = 0; - attr.window_type = GDK_WINDOW_TEMP; - - // GTK cannot set transparent backgrounds. :-( - sm_overlayWindow = gdk_window_transparent_new( NULL, &attr, GDK_WA_NOREDIR | GDK_WA_X | GDK_WA_Y ); - - if (sm_overlayWindow) gdk_window_show( sm_overlayWindow ); - - return (sm_overlayWindow); -} - -bool wxScreenDC::EndDrawingOnTop(void) -{ - if (sm_overlayWindow) gdk_window_destroy( sm_overlayWindow ); - - sm_overlayWindow = NULL; - sm_overlayWindowX = 0; - sm_overlayWindowY = 0; - - return TRUE; -} - diff --git a/src/gtk/dialog.cpp b/src/gtk/dialog.cpp deleted file mode 100644 index e1da79d411..0000000000 --- a/src/gtk/dialog.cpp +++ /dev/null @@ -1,475 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dialog.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dialog.h" -#endif - -#include "wx/dialog.h" -#include "wx/frame.h" -#include "wx/app.h" - -#include "gdk/gdk.h" -#include "gtk/gtk.h" -#include "wx/gtk/win_gtk.h" - -//----------------------------------------------------------------------------- - -extern wxList wxPendingDelete; - -//----------------------------------------------------------------------------- -// "delete_event" -//----------------------------------------------------------------------------- - -bool gtk_dialog_delete_callback( GtkWidget *WXUNUSED(widget), GdkEvent *WXUNUSED(event), wxDialog *win ) -{ -/* - printf( "OnDelete from " ); - if (win->GetClassInfo() && win->GetClassInfo()->GetClassName()) - printf( win->GetClassInfo()->GetClassName() ); - printf( ".\n" ); -*/ - - win->Close(); - - return TRUE; -} - -//----------------------------------------------------------------------------- -// "size_allocate" -//----------------------------------------------------------------------------- - -static void gtk_dialog_size_callback( GtkWidget *WXUNUSED(widget), GtkAllocation* alloc, wxDialog *win ) -{ - if (!win->HasVMT()) return; - -/* - printf( "OnDialogResize from " ); - if (win->GetClassInfo() && win->GetClassInfo()->GetClassName()) - printf( win->GetClassInfo()->GetClassName() ); - printf( ".\n" ); -*/ - - win->GtkOnSize( alloc->x, alloc->y, alloc->width, alloc->height ); -} - -//----------------------------------------------------------------------------- -// "configure_event" -//----------------------------------------------------------------------------- - -static gint gtk_dialog_configure_callback( GtkWidget *WXUNUSED(widget), GdkEventConfigure *event, wxDialog *win ) -{ - if (!win->HasVMT()) return FALSE; - - win->m_x = event->x; - win->m_y = event->y; - - wxMoveEvent mevent( wxPoint(win->m_x,win->m_y), win->GetId() ); - mevent.SetEventObject( win ); - win->GetEventHandler()->ProcessEvent( mevent ); - - return FALSE; -} - -//----------------------------------------------------------------------------- -// wxDialog -//----------------------------------------------------------------------------- - -BEGIN_EVENT_TABLE(wxDialog,wxPanel) - EVT_BUTTON (wxID_OK, wxDialog::OnOK) - EVT_BUTTON (wxID_CANCEL, wxDialog::OnCancel) - EVT_BUTTON (wxID_APPLY, wxDialog::OnApply) - EVT_SIZE (wxDialog::OnSize) - EVT_CLOSE (wxDialog::OnCloseWindow) -END_EVENT_TABLE() - -IMPLEMENT_DYNAMIC_CLASS(wxDialog,wxPanel) - -wxDialog::wxDialog() -{ - m_title = ""; - m_modalShowing = FALSE; -} - -wxDialog::wxDialog( wxWindow *parent, - wxWindowID id, const wxString &title, - const wxPoint &pos, const wxSize &size, - long style, const wxString &name ) -{ - m_modalShowing = FALSE; - Create( parent, id, title, pos, size, style, name ); -} - -bool wxDialog::Create( wxWindow *parent, - wxWindowID id, const wxString &title, - const wxPoint &pos, const wxSize &size, - long style, const wxString &name ) -{ - wxTopLevelWindows.Append( this ); - - m_needParent = FALSE; - - PreCreation( parent, id, pos, size, style, name ); - - m_widget = gtk_window_new( GTK_WINDOW_TOPLEVEL ); - GTK_WIDGET_UNSET_FLAGS( m_widget, GTK_CAN_FOCUS ); - - gtk_widget_set( m_widget, "GtkWindow::allow_shrink", TRUE, NULL); - - gtk_signal_connect( GTK_OBJECT(m_widget), "delete_event", - GTK_SIGNAL_FUNC(gtk_dialog_delete_callback), (gpointer)this ); - - m_wxwindow = gtk_myfixed_new(); - gtk_widget_show( m_wxwindow ); - GTK_WIDGET_UNSET_FLAGS( m_wxwindow, GTK_CAN_FOCUS ); - - gtk_container_add( GTK_CONTAINER(m_widget), m_wxwindow ); - - SetTitle( title ); - - if ((m_x != -1) || (m_y != -1)) - gtk_widget_set_uposition( m_widget, m_x, m_y ); - - gtk_widget_set_usize( m_widget, m_width, m_height ); - - gtk_signal_connect( GTK_OBJECT(m_widget), "size_allocate", - GTK_SIGNAL_FUNC(gtk_dialog_size_callback), (gpointer)this ); - - gtk_signal_connect( GTK_OBJECT(m_widget), "configure_event", - GTK_SIGNAL_FUNC(gtk_dialog_configure_callback), (gpointer)this ); - - if (m_parent) m_parent->AddChild( this ); - - PostCreation(); - - return TRUE; -} - -wxDialog::~wxDialog() -{ - wxTopLevelWindows.DeleteObject( this ); - - if (wxTheApp->GetTopWindow() == this) - { - wxTheApp->SetTopWindow( (wxWindow*) NULL ); - } - - if (wxTopLevelWindows.Number() == 0) - { - wxTheApp->ExitMainLoop(); - } -} - -void wxDialog::SetTitle( const wxString& title ) -{ - m_title = title; - if (m_title.IsNull()) m_title = ""; - gtk_window_set_title( GTK_WINDOW(m_widget), m_title ); -} - -wxString wxDialog::GetTitle() const -{ - return (wxString&)m_title; -} - -void wxDialog::OnApply( wxCommandEvent &WXUNUSED(event) ) -{ - if (Validate()) TransferDataFromWindow(); -} - -void wxDialog::OnCancel( wxCommandEvent &WXUNUSED(event) ) -{ - if (IsModal()) - { - EndModal(wxID_CANCEL); - } - else - { - SetReturnCode(wxID_CANCEL); - this->Show(FALSE); - } -} - -void wxDialog::OnOK( wxCommandEvent &WXUNUSED(event) ) -{ - if ( Validate() && TransferDataFromWindow()) - { - if (IsModal()) - { - EndModal(wxID_OK); - } - else - { - SetReturnCode(wxID_OK); - this->Show(FALSE); - } - } -} - -void wxDialog::OnPaint( wxPaintEvent& WXUNUSED(event) ) -{ - // yes -} - -bool wxDialog::OnClose() -{ - static wxList closing; - - if (closing.Member(this)) return FALSE; // no loops - - closing.Append(this); - - wxCommandEvent cancelEvent(wxEVT_COMMAND_BUTTON_CLICKED, wxID_CANCEL); - cancelEvent.SetEventObject( this ); - GetEventHandler()->ProcessEvent(cancelEvent); - closing.DeleteObject(this); - - return FALSE; -} - -bool wxDialog::Destroy() -{ - if (!wxPendingDelete.Member(this)) wxPendingDelete.Append(this); - - return TRUE; -} - -void wxDialog::OnCloseWindow( wxCloseEvent& event ) -{ - if (GetEventHandler()->OnClose() || event.GetForce()) - { - this->Destroy(); - } -} - -void wxDialog::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), int width, int height ) -{ - // due to a bug in gtk, x,y are always 0 - // m_x = x; - // m_y = y; - - if ((m_height == height) && (m_width == width) && - (m_sizeSet)) return; - if (!m_wxwindow) return; - - m_width = width; - m_height = height; - - if ((m_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth; - if ((m_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight; - if ((m_maxWidth != -1) && (m_width > m_maxWidth)) m_width = m_maxWidth; - if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_maxHeight; - - gtk_widget_set_usize( m_widget, m_width, m_height ); - - m_sizeSet = TRUE; - - wxSizeEvent event( wxSize(m_width,m_height), GetId() ); - event.SetEventObject( this ); - GetEventHandler()->ProcessEvent( event ); -} - -void wxDialog::OnSize( wxSizeEvent &WXUNUSED(event) ) -{ - wxASSERT_MSG( (m_widget != NULL), "invalid dialog" ); - - if (GetAutoLayout()) - { - Layout(); - } - else - { - // no child: go out ! - if (!GetChildren().First()) return; - - // do we have exactly one child? - wxWindow *child = (wxWindow *) NULL; - for(wxNode *node = GetChildren().First(); node; node = node->Next()) - { - wxWindow *win = (wxWindow *)node->Data(); - if (!wxIS_KIND_OF(win,wxFrame) && !wxIS_KIND_OF(win,wxDialog)) - { - // it's the second one: do nothing - if (child) return; - child = win; - } - } - - // yes: set it's size to fill all the frame - int client_x, client_y; - GetClientSize( &client_x, &client_y ); - child->SetSize( 1, 1, client_x-2, client_y); - } -} - -void wxDialog::SetSize( int x, int y, int width, int height, int sizeFlags ) -{ - wxASSERT_MSG( (m_widget != NULL), "invalid window" ); - - // Don't do anything for children of wxMDIChildFrame - if (!m_wxwindow) return; - - if (m_resizing) return; // I don't like recursions - m_resizing = TRUE; - - int old_x = m_x; - int old_y = m_y; - int old_width = m_width; - int old_height = m_height; - - if ((sizeFlags & wxSIZE_USE_EXISTING) == wxSIZE_USE_EXISTING) - { - if (x != -1) m_x = x; - if (y != -1) m_y = y; - if (width != -1) m_width = width; - if (height != -1) m_height = height; - } - else - { - m_x = x; - m_y = y; - m_width = width; - m_height = height; - } - - if ((sizeFlags & wxSIZE_AUTO_WIDTH) == wxSIZE_AUTO_WIDTH) - { - if (width == -1) m_width = 80; - } - - if ((sizeFlags & wxSIZE_AUTO_HEIGHT) == wxSIZE_AUTO_HEIGHT) - { - if (height == -1) m_height = 26; - } - - if ((m_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth; - if ((m_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight; - if ((m_maxWidth != -1) && (m_width > m_maxWidth)) m_width = m_maxWidth; - if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_maxHeight; - - if ((m_x != -1) || (m_y != -1)) - { - if ((m_x != old_x) || (m_y != old_y)) - gtk_widget_set_uposition( m_widget, m_x, m_y ); - } - - if ((m_width != old_width) || (m_height != old_height)) - { - gtk_widget_set_usize( m_widget, m_width, m_height ); - } - - m_sizeSet = TRUE; - - wxSizeEvent event( wxSize(m_width,m_height), GetId() ); - event.SetEventObject( this ); - GetEventHandler()->ProcessEvent( event ); - - m_resizing = FALSE; -} - -void wxDialog::SetSize( int width, int height ) -{ - SetSize( -1, -1, width, height, wxSIZE_USE_EXISTING ); -} - -void wxDialog::Centre( int direction ) -{ - wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); - - int x = 0; - int y = 0; - - if (direction & wxHORIZONTAL == wxHORIZONTAL) x = (gdk_screen_width () - m_width) / 2; - if (direction & wxVERTICAL == wxVERTICAL) y = (gdk_screen_height () - m_height) / 2; - - Move( x, y ); -} - -bool wxDialog::Show( bool show ) -{ - if (!show && IsModal()) - { - EndModal( wxID_CANCEL ); - } - - wxWindow::Show( show ); - - if (show) InitDialog(); - - return TRUE; -} - -bool wxDialog::IsModal() const -{ - return m_modalShowing; -} - -void wxDialog::SetModal( bool WXUNUSED(flag) ) -{ -/* - if (flag) - m_windowStyle |= wxDIALOG_MODAL; - else - if (m_windowStyle & wxDIALOG_MODAL) m_windowStyle -= wxDIALOG_MODAL; -*/ - wxFAIL_MSG( "wxDialog:SetModal obsolete now" ); -} - -int wxDialog::ShowModal() -{ - if (IsModal()) - { - wxFAIL_MSG( "wxDialog:ShowModal called twice" ); - return GetReturnCode(); - } - - Show( TRUE ); - - m_modalShowing = TRUE; - - gtk_grab_add( m_widget ); - gtk_main(); - gtk_grab_remove( m_widget ); - - return GetReturnCode(); -} - -void wxDialog::EndModal( int retCode ) -{ - SetReturnCode( retCode ); - - if (!IsModal()) - { - wxFAIL_MSG( "wxDialog:EndModal called twice" ); - return; - } - - m_modalShowing = FALSE; - - gtk_main_quit(); - - Show( FALSE ); -} - -void wxDialog::InitDialog() -{ - wxWindow::InitDialog(); -} - -void wxDialog::SetIcon( const wxIcon &icon ) -{ - m_icon = icon; - if (!icon.Ok()) return; - - wxMask *mask = icon.GetMask(); - GdkBitmap *bm = (GdkBitmap *) NULL; - if (mask) bm = mask->GetBitmap(); - - gdk_window_set_icon( m_widget->window, (GdkWindow *) NULL, icon.GetPixmap(), bm ); -} diff --git a/src/gtk/dnd.cpp b/src/gtk/dnd.cpp deleted file mode 100644 index 17c1d18258..0000000000 --- a/src/gtk/dnd.cpp +++ /dev/null @@ -1,1163 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: dnd.cpp -// Purpose: wxDropTarget class -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dnd.h" -#endif - -#include "wx/dnd.h" - -#if wxUSE_DRAG_AND_DROP - -#include "wx/window.h" -#include "wx/app.h" -#include "wx/gdicmn.h" -#include "wx/intl.h" -#include "wx/utils.h" - -#include "gdk/gdk.h" -#include "gtk/gtk.h" -#include "gdk/gdkprivate.h" - -#include - -// ---------------------------------------------------------------------------- -// global -// ---------------------------------------------------------------------------- - -extern bool g_blockEventsOnDrag; - -#ifdef NEW_GTK_DND_CODE - -#include "gtk/gtkdnd.h" -#include "gtk/gtkselection.h" - -// ---------------------------------------------------------------------------- -// "drag_leave" -// ---------------------------------------------------------------------------- - -static void target_drag_leave( GtkWidget *WXUNUSED(widget), - GdkDragContext *WXUNUSED(context), - guint WXUNUSED(time) ) -{ - printf( "leave.\n" ); -} - -// ---------------------------------------------------------------------------- -// "drag_motion" -// ---------------------------------------------------------------------------- - -static gboolean target_drag_motion( GtkWidget *WXUNUSED(widget), - GdkDragContext *context, - gint WXUNUSED(x), - gint WXUNUSED(y), - guint time ) -{ - printf( "motion.\n" ); - gdk_drag_status( context, context->suggested_action, time ); - return TRUE; -} - -// ---------------------------------------------------------------------------- -// "drag_drop" -// ---------------------------------------------------------------------------- - -static gboolean target_drag_drop( GtkWidget *widget, - GdkDragContext *context, - gint x, - gint y, - guint time ) -{ - printf( "drop at: %d,%d.\n", x, y ); - - if (context->targets) - { - gtk_drag_get_data( widget, - context, - GPOINTER_TO_INT (context->targets->data), - time ); - } - return FALSE; -} - -// ---------------------------------------------------------------------------- -// "drag_data_received" -// ---------------------------------------------------------------------------- - -static void target_drag_data_received( GtkWidget *WXUNUSED(widget), - GdkDragContext *context, - gint x, - gint y, - GtkSelectionData *data, - guint WXUNUSED(info), - guint time ) -{ - printf( "data receive at: %d,%d.\n", x, y ); - - if ((data->length >= 0) && (data->format == 8)) - { - wxString str = (const char*)data->data; - printf( "Received %s\n.", WXSTRINGCAST str ); - gtk_drag_finish( context, TRUE, FALSE, time ); - return; - } - - gtk_drag_finish (context, FALSE, FALSE, time); -} - -// ---------------------------------------------------------------------------- -// wxDropTarget -// ---------------------------------------------------------------------------- - -wxDropTarget::wxDropTarget() -{ -} - -wxDropTarget::~wxDropTarget() -{ -} - -void wxDropTarget::UnregisterWidget( GtkWidget *widget ) -{ - wxCHECK_RET( widget != NULL, "unregister widget is NULL" ); - - gtk_drag_dest_set( widget, - (GtkDestDefaults) 0, - (GtkTargetEntry*) NULL, - 0, - (GdkDragAction) 0 ); - - gtk_signal_disconnect_by_func( GTK_OBJECT(widget), - GTK_SIGNAL_FUNC(target_drag_leave), (gpointer) this ); - - gtk_signal_disconnect_by_func( GTK_OBJECT(widget), - GTK_SIGNAL_FUNC(target_drag_motion), (gpointer) this ); - - gtk_signal_disconnect_by_func( GTK_OBJECT(widget), - GTK_SIGNAL_FUNC(target_drag_drop), (gpointer) this ); - - gtk_signal_disconnect_by_func( GTK_OBJECT(widget), - GTK_SIGNAL_FUNC(target_drag_data_received), (gpointer) this ); -} - -void wxDropTarget::RegisterWidget( GtkWidget *widget ) -{ - wxCHECK_RET( widget != NULL, "register widget is NULL" ); - - GtkTargetEntry format; - format.info = 0; - format.flags = 0; - char buf[100]; - - int valid = 0; - for ( size_t i = 0; i < GetFormatCount(); i++ ) - { - wxDataFormat df = GetFormat( i ); - switch (df) - { - case wxDF_TEXT: - format.target = "text/plain"; - valid++; - break; - case wxDF_FILENAME: - format.target = "file:ALL"; - valid++; - break; - case wxDF_PRIVATE: - wxPrivateDropTarget *pdt = (wxPrivateDropTarget *)this; - strcpy( buf, WXSTRINGCAST pdt->GetID() ); - format.target = buf; - valid++; - default: - break; - } - } - - wxASSERT_MSG( valid != 0, "No valid DnD format supported." ); - - gtk_drag_dest_set( widget, - GTK_DEST_DEFAULT_ALL, - &format, - 1, - (GdkDragAction)(GDK_ACTION_COPY | GDK_ACTION_MOVE) ); - - gtk_signal_connect( GTK_OBJECT(widget), "drag_leave", - GTK_SIGNAL_FUNC(target_drag_leave), (gpointer) this ); - - gtk_signal_connect( GTK_OBJECT(widget), "drag_motion", - GTK_SIGNAL_FUNC(target_drag_motion), (gpointer) this ); - - gtk_signal_connect( GTK_OBJECT(widget), "drag_drop", - GTK_SIGNAL_FUNC(target_drag_drop), (gpointer) this ); - - gtk_signal_connect( GTK_OBJECT(widget), "drag_data_received", - GTK_SIGNAL_FUNC(target_drag_data_received), (gpointer) this ); -} - -// ---------------------------------------------------------------------------- -// wxTextDropTarget -// ---------------------------------------------------------------------------- - -bool wxTextDropTarget::OnDrop( long x, long y, const void *data, size_t WXUNUSED(size) ) -{ - OnDropText( x, y, (const char*)data ); - return TRUE; -} - -bool wxTextDropTarget::OnDropText( long x, long y, const char *psz ) -{ - printf( "Got dropped text: %s.\n", psz ); - printf( "At x: %d, y: %d.\n", (int)x, (int)y ); - return TRUE; -} - -size_t wxTextDropTarget::GetFormatCount() const -{ - return 1; -} - -wxDataFormat wxTextDropTarget::GetFormat(size_t WXUNUSED(n)) const -{ - return wxDF_TEXT; -} - -// ---------------------------------------------------------------------------- -// wxFileDropTarget -// ---------------------------------------------------------------------------- - -bool wxFileDropTarget::OnDropFiles( long x, long y, size_t nFiles, const char * const aszFiles[] ) -{ - printf( "Got %d dropped files.\n", (int)nFiles ); - printf( "At x: %d, y: %d.\n", (int)x, (int)y ); - for (size_t i = 0; i < nFiles; i++) - { - printf( aszFiles[i] ); - printf( "\n" ); - } - return TRUE; -} - -bool wxFileDropTarget::OnDrop(long x, long y, const void *data, size_t size ) -{ - size_t number = 0; - char *text = (char*) data; - for (size_t i = 0; i < size; i++) - if (text[i] == 0) number++; - - if (number == 0) return TRUE; - - char **files = new char*[number]; - - text = (char*) data; - for (size_t i = 0; i < number; i++) - { - files[i] = text; - int len = strlen( text ); - text += len+1; - } - - bool ret = OnDropFiles( x, y, 1, files ); - - free( files ); - - return ret; -} - -size_t wxFileDropTarget::GetFormatCount() const -{ - return 1; -} - -wxDataFormat wxFileDropTarget::GetFormat(size_t WXUNUSED(n)) const -{ - return wxDF_FILENAME; -} - -//------------------------------------------------------------------------- -// wxDropSource -//------------------------------------------------------------------------- - -wxDropSource::wxDropSource( wxWindow *win ) -{ - g_blockEventsOnDrag = TRUE; - - m_window = win; - m_widget = win->m_widget; - if (win->m_wxwindow) m_widget = win->m_wxwindow; - - m_data = (wxDataObject *) NULL; - m_retValue = wxDragCancel; - - m_defaultCursor = wxCursor( wxCURSOR_NO_ENTRY ); - m_goaheadCursor = wxCursor( wxCURSOR_HAND ); -} - -wxDropSource::wxDropSource( wxDataObject &data, wxWindow *win ) -{ - g_blockEventsOnDrag = TRUE; - - m_window = win; - m_widget = win->m_widget; - if (win->m_wxwindow) m_widget = win->m_wxwindow; - m_retValue = wxDragCancel; - - m_data = &data; - - m_defaultCursor = wxCursor( wxCURSOR_NO_ENTRY ); - m_goaheadCursor = wxCursor( wxCURSOR_HAND ); -} - -void wxDropSource::SetData( wxDataObject &data ) -{ - m_data = &data; -} - -wxDropSource::~wxDropSource(void) -{ -// if (m_data) delete m_data; - - g_blockEventsOnDrag = FALSE; -} - -wxDragResult wxDropSource::DoDragDrop( bool WXUNUSED(bAllowMove) ) -{ - wxASSERT_MSG( m_data, "wxDragSource: no data" ); - - if (!m_data) return (wxDragResult) wxDragNone; - if (m_data->GetDataSize() == 0) return (wxDragResult) wxDragNone; - - RegisterWindow(); - - // TODO - - UnregisterWindow(); - - g_blockEventsOnDrag = FALSE; - - return m_retValue; -} - -void wxDropSource::RegisterWindow(void) -{ - if (!m_data) return; - - wxString formats; - - wxDataFormat df = m_data->GetPreferredFormat(); - - switch (df) - { - case wxDF_TEXT: - formats += "text/plain"; - break; - case wxDF_FILENAME: - formats += "file:ALL"; - break; - default: - break; - } - - char *str = WXSTRINGCAST formats; - - // TODO -} - -void wxDropSource::UnregisterWindow(void) -{ - if (!m_widget) return; - - // TODO -} - - -#else // NEW_CODE - -GtkWidget *shape_create_icon (char **data, - gint x, - gint y, - gint px, - gint py, - gint window_type); - -/* XPM */ -static char * gv_xpm[] = { -"40 34 3 1", -" s None c None", -". c black", -"X c white", -" ", -" ", -" ...... ", -" ..XXXXXX.. ", -" .XXXXXXXXXX. ", -" .XXXXXXXXXXXX. ", -" .XXXXXXXXXXXX. ", -" .XXXXXXXXXXXXXX. ", -" .XXX..XXXX..XXX. ", -" ....XX....XX....XX. ", -" .XXX.XXX..XXXX..XXX.... ", -" .XXXXXXXXXXXXXXXXXXX.XXX. ", -" .XXXXXXXXXXXXXXXXXXXXXXXX. ", -" .XXXXXXXXXXXXXXXXXXXXXXXX. ", -" ..XXXXXXXXXXXXXXXXXXXXXX. ", -" .XXXXXXXXXXXXXXXXXX... ", -" ..XXXXXXXXXXXXXXXX. ", -" .XXXXXXXXXXXXXXXX. ", -" .XXXXXXXXXXXXXXXX. ", -" .XXXXXXXXXXXXXXXXX. ", -" .XXXXXXXXXXXXXXXXX. ", -" .XXXXXXXXXXXXXXXXXX. ", -" .XXXXXXXXXXXXXXXXXXX. ", -" .XXXXXXXXXXXXXXXXXXXXX. ", -" .XXXXXXXXXXXXXX.XXXXXXX. ", -" .XXXXXXX.XXXXXXX.XXXXXXX. ", -" .XXXXXXXX.XXXXXXX.XXXXXXX. ", -" .XXXXXXX...XXXXX...XXXXX. ", -" .XXXXXXX. ..... ..... ", -" ..XXXX.. ", -" .... ", -" ", -" ", -" "}; - -/* XPM */ -static char * page_xpm[] = { -/* width height ncolors chars_per_pixel */ -"32 32 5 1", -/* colors */ -" s None c None", -". c black", -"X c wheat", -"o c tan", -"O c #6699FF", -/* pixels */ -" ................... ", -" .XXXXXXXXXXXXXXXXX.. ", -" .XXXXXXXXXXXXXXXXX.o. ", -" .XXXXXXXXXXXXXXXXX.oo. ", -" .XXXXXXXXXXXXXXXXX.ooo. ", -" .XXXXXXXXXXXXXXXXX.oooo. ", -" .XXXXXXXXXXXXXXXXX....... ", -" .XXXXXOOOOOOOOOOXXXooooo. ", -" .XXXXXXXXXXXXXXXXXXooooo. ", -" .XXXXXOOOOOOOOOOXXXXXXXX. ", -" .XXXXXXXXXXXXXXXXXXXXXXX. ", -" .XXXXXXXOOOOOOOOOXXXXXXX. ", -" .XXXXXXXXXXXXXXXXXXXXXXX. ", -" .XXXXXXOOOOOOOOOOXXXXXXX. ", -" .XXXXXXXXXXXXXXXXXXXXXXX. ", -" .XXXXXOOOOOOOOOOXXXXXXXX. ", -" .XXXXXXXXXXXXXXXXXXXXXXX. ", -" .XXXXXXXOOOOOOOOOXXXXXXX. ", -" .XXXXXXXXXXXXXXXXXXXXXXX. ", -" .XXXXXXOOOOOOOOOOXXXXXXX. ", -" .XXXXXXXXXXXXXXXXXXXXXXX. ", -" .XXXXXOOOOOOOOOOXXXXXXXX. ", -" .XXXXXXXXXXXXXXXXXXXXXXX. ", -" .XXXXXXOOOOOOOOOOXXXXXXX. ", -" .XXXXXXXXXXXXXXXXXXXXXXX. ", -" .XXXXXOOOOOOOXXXXXXXXXXX. ", -" .XXXXXXXXXXXXXXXXXXXXXXX. ", -" .XXXXXXXXXXXXXXXXXXXXXXX. ", -" .XXXXXXXXXXXXXXXXXXXXXXX. ", -" .XXXXXXXXXXXXXXXXXXXXXXX. ", -" .XXXXXXXXXXXXXXXXXXXXXXX. ", -" ......................... "}; - - -//----------------------------------------------------------------------------- -// globals -//----------------------------------------------------------------------------- - -wxDropSource *gs_currentDropSource = (wxDropSource*) NULL; - -//----------------------------------------------------------------------------- -// "drop_enter_event" -//----------------------------------------------------------------------------- - -static void gtk_target_enter_callback( GtkWidget *WXUNUSED(widget), - GdkEventDropEnter *WXUNUSED(event), - wxDropTarget *target ) -{ - if (target) - target->OnEnter(); -} - -//----------------------------------------------------------------------------- -// "drop_leave_event" -//----------------------------------------------------------------------------- - -static void gtk_target_leave_callback( GtkWidget *WXUNUSED(widget), - GdkEventDropLeave *WXUNUSED(event), - wxDropTarget *target ) -{ - if (target) - target->OnLeave(); -} - -//----------------------------------------------------------------------------- -// "drop_data_available_event" -//----------------------------------------------------------------------------- - -static void gtk_target_callback( GtkWidget *widget, - GdkEventDropDataAvailable *event, - wxDropTarget *target ) -{ - if (target) - { - int x = 0; - int y = 0; - gdk_window_get_pointer( widget->window, &x, &y, (GdkModifierType *) NULL ); -/* - printf( "Drop data is of type %s.\n", event->data_type ); -*/ - target->OnDrop( x, y, (const void*)event->data, (size_t)event->data_numbytes ); - } - -/* - g_free (event->data); - g_free (event->data_type); -*/ -} - -// ---------------------------------------------------------------------------- -// wxDropTarget -// ---------------------------------------------------------------------------- - -wxDropTarget::wxDropTarget() -{ - m_format = (wxDataFormat*) NULL; -} - -wxDropTarget::~wxDropTarget() -{ - if (m_format) delete m_format; -} - -wxDataFormat &wxDropTarget::GetFormat(size_t n) const -{ - return (*m_format); -} - -void wxDropTarget::UnregisterWidget( GtkWidget *widget ) -{ - if (!widget) return; - - gtk_signal_disconnect_by_func( GTK_OBJECT(widget), - GTK_SIGNAL_FUNC(gtk_target_callback), (gpointer) this ); - - gtk_widget_dnd_drop_set( widget, FALSE, (gchar **) NULL, 0, FALSE ); -} - -void wxDropTarget::RegisterWidget( GtkWidget *widget ) -{ - wxString formats; - int valid = 0; - - for ( size_t i = 0; i < GetFormatCount(); i++ ) - { - switch (GetFormat(i).GetType()) - { - case wxDF_TEXT: - { - if (i > 0) formats += ";"; - formats += "text/plain"; - valid++; - break; - } - case wxDF_FILENAME: - { - if (i > 0) formats += ";"; - formats += "file:ALL"; - valid++; - break; - } - case wxDF_PRIVATE: - { - if (i > 0) formats += ";"; - wxPrivateDropTarget *pdt = (wxPrivateDropTarget *)this; - formats += pdt->GetId(); - valid++; - break; - } - default: - break; - } - } - - char *str = WXSTRINGCAST formats; - - gtk_widget_dnd_drop_set( widget, TRUE, &str, valid, FALSE ); - - gtk_signal_connect( GTK_OBJECT(widget), "drop_data_available_event", - GTK_SIGNAL_FUNC(gtk_target_callback), (gpointer) this ); - - gtk_signal_connect( GTK_OBJECT(widget), "drop_enter_event", - GTK_SIGNAL_FUNC(gtk_target_enter_callback), (gpointer) this ); - - gtk_signal_connect( GTK_OBJECT(widget), "drop_leave_event", - GTK_SIGNAL_FUNC(gtk_target_leave_callback), (gpointer) this ); -} - -// ---------------------------------------------------------------------------- -// wxTextDropTarget -// ---------------------------------------------------------------------------- - -wxTextDropTarget::wxTextDropTarget() -{ - m_format = new wxDataFormat( wxDF_TEXT ); -} - -bool wxTextDropTarget::OnDrop( long x, long y, const void *data, size_t WXUNUSED(size) ) -{ - OnDropText( x, y, (const char*)data ); - return TRUE; -} - -bool wxTextDropTarget::OnDropText( long x, long y, const char *psz ) -{ -/* - printf( "Got dropped text: %s.\n", psz ); - printf( "At x: %d, y: %d.\n", (int)x, (int)y ); -*/ - return TRUE; -} - -size_t wxTextDropTarget::GetFormatCount() const -{ - return 1; -} - -// ---------------------------------------------------------------------------- -// wxPrivateDropTarget -// ---------------------------------------------------------------------------- - -wxPrivateDropTarget::wxPrivateDropTarget() -{ - m_id = wxTheApp->GetAppName(); - m_format = new wxDataFormat( m_id ); -} - -void wxPrivateDropTarget::SetId( const wxString& id ) -{ - m_id = id; - m_format->SetId( id ); -} - -size_t wxPrivateDropTarget::GetFormatCount() const -{ - return 1; -} - -// ---------------------------------------------------------------------------- -// wxFileDropTarget -// ---------------------------------------------------------------------------- - -wxFileDropTarget::wxFileDropTarget() -{ - m_format = new wxDataFormat( wxDF_FILENAME ); -} - -bool wxFileDropTarget::OnDropFiles( long x, long y, size_t nFiles, const char * const aszFiles[] ) -{ - printf( "Got %d dropped files.\n", (int)nFiles ); - printf( "At x: %d, y: %d.\n", (int)x, (int)y ); - - for (size_t i = 0; i < nFiles; i++) - { - printf( aszFiles[i] ); - printf( "\n" ); - } - - return TRUE; -} - -bool wxFileDropTarget::OnDrop(long x, long y, const void *data, size_t size ) -{ - size_t number = 0; - char *text = (char*) data; - for (size_t i = 0; i < size; i++) - if (text[i] == 0) number++; - - if (number == 0) return TRUE; - - char **files = new char*[number]; - - text = (char*) data; - for (size_t i = 0; i < number; i++) - { - files[i] = text; - int len = strlen( text ); - text += len+1; - } - - bool ret = OnDropFiles( x, y, 1, files ); - - free( files ); - - return ret; -} - -size_t wxFileDropTarget::GetFormatCount() const -{ - return 1; -} - -//------------------------------------------------------------------------- -// wxDropSource -//------------------------------------------------------------------------- - -static void -shape_motion (GtkWidget *widget, - GdkEventMotion * /*event*/); - -//----------------------------------------------------------------------------- -// "drag_request_event" -//----------------------------------------------------------------------------- - -void gtk_drag_callback( GtkWidget *widget, GdkEventDragRequest *event, wxDropSource *source ) -{ - wxDataBroker *data = source->m_data; - - if (!data) return; - - wxNode *node = data->m_dataObjects.First(); - { - wxDataObject *dobj = (wxDataObject*) node->Data(); - - if ((strcmp(event->data_type,"file:ALL") == 0) && - (dobj->GetFormat().GetType() == wxDF_FILENAME)) - { - wxFileDataObject *file_object = (wxFileDataObject*) dobj; - - wxString text = file_object->GetFiles(); - - char *s = WXSTRINGCAST text; - - gtk_widget_dnd_data_set( widget, - (GdkEvent*)event, - (unsigned char*) s, - (int) text.Length()+1 ); - - source->m_retValue = wxDragCopy; - - return; - } - - if ((strcmp(event->data_type,"text/plain") == 0) && - (dobj->GetFormat().GetType() == wxDF_TEXT)) - { - wxTextDataObject *text_object = (wxTextDataObject*) dobj; - - wxString text = text_object->GetText(); - - char *s = WXSTRINGCAST text; - - gtk_widget_dnd_data_set( widget, - (GdkEvent*)event, - (unsigned char*) s, - (int) text.Length()+1 ); - - source->m_retValue = wxDragCopy; - - return; - } - - if (dobj->GetFormat().GetType() == wxDF_PRIVATE) - { - wxPrivateDataObject *pdo = (wxPrivateDataObject*) dobj; - - if (pdo->GetId() == event->data_type) - { - gtk_widget_dnd_data_set( widget, - (GdkEvent*)event, - (unsigned char*) pdo->GetData(), - (int) pdo->GetSize() ); - - source->m_retValue = wxDragCopy; - - return; - } - } - - node = node->Next(); - } -} - -wxDropSource::wxDropSource( wxWindow *win ) -{ - g_blockEventsOnDrag = TRUE; - - m_window = win; - m_widget = win->m_widget; - if (win->m_wxwindow) m_widget = win->m_wxwindow; - - m_data = (wxDataBroker*) NULL; - m_retValue = wxDragCancel; - - m_defaultCursor = wxCursor( wxCURSOR_NO_ENTRY ); - m_goaheadCursor = wxCursor( wxCURSOR_HAND ); -} - -wxDropSource::wxDropSource( wxDataObject *data, wxWindow *win ) -{ - g_blockEventsOnDrag = TRUE; - - m_window = win; - m_widget = win->m_widget; - if (win->m_wxwindow) m_widget = win->m_wxwindow; - m_retValue = wxDragCancel; - - if (data) - { - m_data = new wxDataBroker(); - m_data->Add( data ); - } - else - { - m_data = (wxDataBroker*) NULL; - } - - m_defaultCursor = wxCursor( wxCURSOR_NO_ENTRY ); - m_goaheadCursor = wxCursor( wxCURSOR_HAND ); -} - -wxDropSource::wxDropSource( wxDataBroker *data, wxWindow *win ) -{ - g_blockEventsOnDrag = TRUE; - - m_window = win; - m_widget = win->m_widget; - if (win->m_wxwindow) m_widget = win->m_wxwindow; - m_retValue = wxDragCancel; - - m_data = data; - - m_defaultCursor = wxCursor( wxCURSOR_NO_ENTRY ); - m_goaheadCursor = wxCursor( wxCURSOR_HAND ); -} - -void wxDropSource::SetData( wxDataObject *data ) -{ - if (m_data) delete m_data; - - if (data) - { - m_data = new wxDataBroker(); - m_data->Add( data ); - } - else - { - m_data = (wxDataBroker*) NULL; - } -} - -void wxDropSource::SetData( wxDataBroker *data ) -{ - if (m_data) delete m_data; - - m_data = data; -} - -wxDropSource::~wxDropSource(void) -{ - if (m_data) delete m_data; - - g_blockEventsOnDrag = FALSE; -} - -wxDragResult wxDropSource::DoDragDrop( bool WXUNUSED(bAllowMove) ) -{ - if (gdk_dnd.dnd_grabbed) return (wxDragResult) wxDragNone; - if (gdk_dnd.drag_really) return (wxDragResult) wxDragNone; - - wxASSERT_MSG( m_data, "wxDragSource: no data" ); - - if (!m_data) return (wxDragResult) wxDragNone; - - static GtkWidget *drag_icon = (GtkWidget*) NULL; - static GtkWidget *drop_icon = (GtkWidget*) NULL; - - GdkPoint hotspot_1 = {0,-5 }; - - if (!drag_icon) - { - drag_icon = shape_create_icon ( gv_xpm, - 440, 140, 0,0, GTK_WINDOW_POPUP); - - gtk_signal_connect (GTK_OBJECT (drag_icon), "destroy", - GTK_SIGNAL_FUNC(gtk_widget_destroyed), - &drag_icon); - - gtk_widget_hide (drag_icon); - } - - GdkPoint hotspot_2 = {-5,-5}; - - if (!drop_icon) - { - drop_icon = shape_create_icon ( page_xpm, - 440, 140, 0,0, GTK_WINDOW_POPUP); - - gtk_signal_connect (GTK_OBJECT (drop_icon), "destroy", - GTK_SIGNAL_FUNC(gtk_widget_destroyed), - &drop_icon); - - gtk_widget_hide (drop_icon); - } - - - gdk_dnd_set_drag_shape( drag_icon->window, - &hotspot_1, - drop_icon->window, - &hotspot_2); - - - GdkWindowPrivate *wp = (GdkWindowPrivate*) m_widget->window; - - RegisterWindow(); - - gdk_dnd.drag_perhaps = TRUE; - - gdk_dnd.dnd_drag_start.x = 5; - gdk_dnd.dnd_drag_start.y = 5; - gdk_dnd.real_sw = wp; - - if (gdk_dnd.drag_startwindows) - { - g_free( gdk_dnd.drag_startwindows ); - gdk_dnd.drag_startwindows = (GdkWindow **) NULL; - } - gdk_dnd.drag_numwindows = gdk_dnd.drag_really = 0; - - XWindowAttributes dnd_winattr; - XGetWindowAttributes( gdk_display, wp->xwindow, &dnd_winattr ); - wp->dnd_drag_savedeventmask = dnd_winattr.your_event_mask; - - gdk_dnd_drag_addwindow( m_widget->window ); - - GdkEventDragBegin ev; - ev.type = GDK_DRAG_BEGIN; - ev.window = m_widget->window; - ev.u.allflags = 0; - ev.u.flags.protocol_version = DND_PROTOCOL_VERSION; - - gdk_event_put( (GdkEvent*)&ev ); - - XGrabPointer( gdk_display, wp->xwindow, False, - ButtonMotionMask | ButtonPressMask | ButtonReleaseMask | PointerMotionMask, - GrabModeAsync, GrabModeAsync, gdk_root_window, None, CurrentTime ); - - gdk_dnd_set_drag_cursors( m_defaultCursor.GetCursor(), m_goaheadCursor.GetCursor() ); - - gdk_dnd.dnd_grabbed = TRUE; - gdk_dnd.drag_really = 1; - - int x = 0; - int y = 0; - wxGetMousePosition( &x, &y ); - - gdk_dnd_display_drag_cursor( x, y, FALSE, TRUE ); - - gs_currentDropSource = this; - - while (gdk_dnd.drag_really || gdk_dnd.drag_perhaps) wxYield(); - - gs_currentDropSource = (wxDropSource*) NULL; - - UnregisterWindow(); - - g_blockEventsOnDrag = FALSE; - - return m_retValue; -} - -void wxDropSource::RegisterWindow(void) -{ - if (!m_data) return; - - wxString formats; - - wxNode *node = m_data->m_dataObjects.First(); - while (node) - { - wxDataObject* dobj = (wxDataObject*) node->Data(); - - switch (dobj->GetFormat().GetType()) - { - case wxDF_TEXT: - { - formats += "text/plain"; - break; - } - case wxDF_FILENAME: - { - formats += "file:ALL"; - break; - } - case wxDF_PRIVATE: - { - wxPrivateDataObject* pdo = (wxPrivateDataObject*) m_data; - formats += pdo->GetId(); - break; - } - default: - break; - } - node = node->Next(); - } - - char *str = WXSTRINGCAST formats; - - gtk_widget_dnd_drag_set( m_widget, TRUE, &str, 1 ); - - gtk_signal_connect( GTK_OBJECT(m_widget), "drag_request_event", - GTK_SIGNAL_FUNC(gtk_drag_callback), (gpointer)this ); -} - -void wxDropSource::UnregisterWindow(void) -{ - if (!m_widget) return; - - gtk_widget_dnd_drag_set( m_widget, FALSE, (gchar **) NULL, 0 ); - - gtk_signal_disconnect_by_data( GTK_OBJECT(m_widget), (gpointer)this ); -} - - -/* - * Shaped Windows - */ -static GdkWindow *root_win = (GdkWindow*) NULL; - -typedef struct _cursoroffset {gint x,y;} CursorOffset; - -static void -shape_pressed (GtkWidget *widget, GdkEventButton *event) -{ - CursorOffset *p; - - /* ignore double and triple click */ - if (event->type != GDK_BUTTON_PRESS) - return; - - p = (CursorOffset *)gtk_object_get_user_data (GTK_OBJECT(widget)); - p->x = (int) event->x; - p->y = (int) event->y; - - gtk_grab_add (widget); - gdk_pointer_grab (widget->window, TRUE, - (GdkEventMask) - (GDK_BUTTON_RELEASE_MASK | - GDK_BUTTON_MOTION_MASK | - GDK_POINTER_MOTION_HINT_MASK), - (GdkWindow*)NULL, - (GdkCursor*) NULL, 0); -} - - -static void -shape_released (GtkWidget *widget) -{ - gtk_grab_remove (widget); - gdk_pointer_ungrab (0); -} - -static void -shape_motion (GtkWidget *widget, - GdkEventMotion * /*event*/ ) -{ - gint xp, yp; - CursorOffset * p; - GdkModifierType mask; - - p = (CursorOffset *)gtk_object_get_user_data (GTK_OBJECT (widget)); - - /* - * Can't use event->x / event->y here - * because I need absolute coordinates. - */ - - gdk_window_get_pointer (root_win, &xp, &yp, &mask); - gtk_widget_set_uposition (widget, xp - p->x, yp - p->y); - - if (gs_currentDropSource) gs_currentDropSource->GiveFeedback( wxDragCopy, FALSE ); -} - -GtkWidget * -shape_create_icon (char **data, - gint x, - gint y, - gint px, - gint py, - gint window_type) -{ - GtkWidget *window; - GtkWidget *pixmap; - GtkWidget *fixed; - CursorOffset* icon_pos; - GdkGC* gc; - GdkBitmap *gdk_pixmap_mask; - GdkPixmap *gdk_pixmap; - GtkStyle *style; - - style = gtk_widget_get_default_style (); - gc = style->black_gc; - - /* - * GDK_WINDOW_TOPLEVEL works also, giving you a title border - */ - window = gtk_window_new ((GtkWindowType)window_type); - - fixed = gtk_fixed_new (); - gtk_widget_set_usize (fixed, 100,100); - gtk_container_add (GTK_CONTAINER (window), fixed); - gtk_widget_show (fixed); - - gtk_widget_set_events (window, - gtk_widget_get_events (window) | - GDK_BUTTON_MOTION_MASK | - GDK_POINTER_MOTION_HINT_MASK | - GDK_BUTTON_PRESS_MASK); - - gtk_widget_realize (window); - - gdk_pixmap = gdk_pixmap_create_from_xpm_d (window->window, &gdk_pixmap_mask, - &style->bg[GTK_STATE_NORMAL], - (gchar**) data ); - - pixmap = gtk_pixmap_new (gdk_pixmap, gdk_pixmap_mask); - gtk_fixed_put (GTK_FIXED (fixed), pixmap, px,py); - gtk_widget_show (pixmap); - - gtk_widget_shape_combine_mask (window, gdk_pixmap_mask, px,py); - - - gtk_signal_connect (GTK_OBJECT (window), "button_press_event", - GTK_SIGNAL_FUNC (shape_pressed),NULL); - gtk_signal_connect (GTK_OBJECT (window), "button_release_event", - GTK_SIGNAL_FUNC (shape_released),NULL); - gtk_signal_connect (GTK_OBJECT (window), "motion_notify_event", - GTK_SIGNAL_FUNC (shape_motion),NULL); - - icon_pos = g_new (CursorOffset, 1); - gtk_object_set_user_data(GTK_OBJECT(window), icon_pos); - - gtk_widget_set_uposition (window, x, y); - gtk_widget_show (window); - - return window; -} - -#endif - // NEW_GTK_DND_CODE - -#endif - - // wxUSE_DRAG_AND_DROP \ No newline at end of file diff --git a/src/gtk/fdiag.xbm b/src/gtk/fdiag.xbm deleted file mode 100644 index 67d3b4732a..0000000000 --- a/src/gtk/fdiag.xbm +++ /dev/null @@ -1,6 +0,0 @@ -#define fdiag_width 16 -#define fdiag_height 16 -static char fdiag_bits[] = { - 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, - 0x40, 0x40, 0x80, 0x80, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, - 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80}; diff --git a/src/gtk/filedlg.cpp b/src/gtk/filedlg.cpp deleted file mode 100644 index f33c3423c7..0000000000 --- a/src/gtk/filedlg.cpp +++ /dev/null @@ -1,170 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: filedlg.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "filedlg.h" -#endif - -#include "wx/filedlg.h" -#include "wx/utils.h" -#include "wx/intl.h" -#include "wx/generic/msgdlgg.h" - -#include "gtk/gtk.h" - -//----------------------------------------------------------------------------- -// wxFileDialog -//----------------------------------------------------------------------------- - -void gtk_filedialog_ok_callback( GtkWidget *WXUNUSED(widget), gpointer data ) -{ - wxFileDialog *dialog = (wxFileDialog*)data; - wxCommandEvent event(wxEVT_NULL); - int style; - - style = dialog->GetStyle(); - - if((style&wxSAVE)&&(style&wxOVERWRITE_PROMPT)) - { - if(wxFileExists(gtk_file_selection_get_filename(GTK_FILE_SELECTION(dialog->m_widget) ))) - { - if(wxMessageBox(_("File exists. Overwrite?"), - _("Confirm"), wxYES_NO) != wxYES) - return; - } - } - - dialog->OnOK( event ); -} - -void gtk_filedialog_cancel_callback( GtkWidget *WXUNUSED(widget), gpointer data ) -{ - wxFileDialog *dialog = (wxFileDialog*)data; - wxCommandEvent event(wxEVT_NULL); - dialog->OnCancel( event ); -} - -IMPLEMENT_DYNAMIC_CLASS(wxFileDialog,wxDialog) - -wxFileDialog::wxFileDialog( wxWindow *parent, const wxString& message, - const wxString& defaultDir, const wxString& defaultFileName, - const wxString& wildCard, - long style, const wxPoint& pos ) -{ - m_needParent = FALSE; - - PreCreation( parent, -1, pos, wxDefaultSize, style | wxDIALOG_MODAL, "filedialog" ); - m_message = message; - m_path = ""; - m_fileName = defaultFileName; - m_dir = defaultDir; - m_wildCard = wildCard; - m_dialogStyle = style; - m_filterIndex = 1; - - m_widget = gtk_file_selection_new( m_message ); - - int x = (gdk_screen_width () - 400) / 2; - int y = (gdk_screen_height () - 400) / 2; - gtk_widget_set_uposition( m_widget, x, y ); - - GtkFileSelection *sel = GTK_FILE_SELECTION(m_widget); - - m_path.Append(m_dir); - if(! m_path.IsEmpty() && m_path.Last()!='/') m_path.Append('/'); - m_path.Append(m_fileName); - - if(m_path.Length()>1) gtk_file_selection_set_filename(sel,m_path); - - gtk_signal_connect( GTK_OBJECT(sel->ok_button), "clicked", - GTK_SIGNAL_FUNC(gtk_filedialog_ok_callback), (gpointer*)this ); - - gtk_signal_connect( GTK_OBJECT(sel->cancel_button), "clicked", - GTK_SIGNAL_FUNC(gtk_filedialog_cancel_callback), (gpointer*)this ); -} - -int wxFileDialog::ShowModal(void) -{ - int ret = wxDialog::ShowModal(); - - if (ret == wxID_OK) - { - m_fileName = gtk_file_selection_get_filename( GTK_FILE_SELECTION(m_widget) ); - m_path = gtk_file_selection_get_filename( GTK_FILE_SELECTION(m_widget) ); - } - return ret; -} - - -wxString wxFileSelector( const char *title, - const char *defaultDir, const char *defaultFileName, - const char *defaultExtension, const char *filter, int flags, - wxWindow *parent, int x, int y ) -{ - wxString filter2(""); - if ( defaultExtension && !filter ) - filter2 = wxString("*.") + wxString(defaultExtension) ; - else if ( filter ) - filter2 = filter; - - wxString defaultDirString; - if (defaultDir) - defaultDirString = defaultDir; - else - defaultDirString = ""; - - wxString defaultFilenameString; - if (defaultFileName) - defaultFilenameString = defaultFileName; - else - defaultFilenameString = ""; - - wxFileDialog fileDialog( parent, title, defaultDirString, defaultFilenameString, filter2, flags, wxPoint(x, y) ); - - if ( fileDialog.ShowModal() == wxID_OK ) - { - return fileDialog.GetPath(); - } - else - { - return wxEmptyString; - } -} - -wxString wxLoadFileSelector( const char *what, const char *extension, const char *default_name, wxWindow *parent ) -{ - char *ext = (char *)extension; - - char prompt[50]; - wxString str = _("Load %s file"); - sprintf(prompt, str, what); - - if (*ext == '.') ext++; - char wild[60]; - sprintf(wild, "*.%s", ext); - - return wxFileSelector (prompt, (const char *) NULL, default_name, ext, wild, 0, parent); -} - -wxString wxSaveFileSelector(const char *what, const char *extension, const char *default_name, - wxWindow *parent ) -{ - char *ext = (char *)extension; - - char prompt[50]; - wxString str = _("Save %s file"); - sprintf(prompt, str, what); - - if (*ext == '.') ext++; - char wild[60]; - sprintf(wild, "*.%s", ext); - - return wxFileSelector (prompt, (const char *) NULL, default_name, ext, wild, 0, parent); -} - diff --git a/src/gtk/font.cpp b/src/gtk/font.cpp deleted file mode 100644 index 9e52e23db1..0000000000 --- a/src/gtk/font.cpp +++ /dev/null @@ -1,1012 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: font.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling, Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "font.h" -#endif - -#include "wx/font.h" -#include "wx/utils.h" -#include "wx/log.h" -#include - -#include "gdk/gdk.h" - -//----------------------------------------------------------------------------- -// local data -//----------------------------------------------------------------------------- - -/* -extern wxFontNameDirectory *wxTheFontNameDirectory; -*/ - -//----------------------------------------------------------------------------- -// wxFont -//----------------------------------------------------------------------------- - -class wxFontRefData: public wxObjectRefData -{ -public: - - wxFontRefData(); - wxFontRefData( const wxFontRefData& data ); - ~wxFontRefData(); - - wxList m_scaled_xfonts; - int m_pointSize; - int m_family, m_style, m_weight; - bool m_underlined; - wxString m_faceName; - - bool m_byXFontName; - GdkFont *m_font; - - friend wxFont; -}; - -wxFontRefData::wxFontRefData() : m_scaled_xfonts(wxKEY_INTEGER) -{ - m_byXFontName = FALSE; - m_pointSize = 12; - m_family = wxSWISS; - m_style = wxNORMAL; - m_weight = wxNORMAL; - m_underlined = FALSE; - m_font = (GdkFont *) NULL; -} - -wxFontRefData::wxFontRefData( const wxFontRefData& data ) : m_scaled_xfonts(wxKEY_INTEGER) -{ - m_byXFontName = FALSE; - m_pointSize = data.m_pointSize; - m_family = data.m_family; - m_style = data.m_style; - m_weight = data.m_weight; - m_underlined = data.m_underlined; - m_faceName = data.m_faceName; - m_font = (GdkFont *) NULL; - if (data.m_font) m_font = gdk_font_ref( data.m_font ); -} - -wxFontRefData::~wxFontRefData() -{ - wxNode *node = m_scaled_xfonts.First(); - while (node) - { - GdkFont *font = (GdkFont*)node->Data(); - wxNode *next = node->Next(); - gdk_font_unref( font ); - node = next; - } - if (m_font) gdk_font_unref( m_font ); -} - -//----------------------------------------------------------------------------- - -#define M_FONTDATA ((wxFontRefData *)m_refData) - -IMPLEMENT_DYNAMIC_CLASS(wxFont, wxGDIObject) - -wxFont::wxFont() -{ - if (wxTheFontList) wxTheFontList->Append( this ); -} - -wxFont::wxFont( char *xFontName ) -{ - if (!xFontName) return; - - m_refData = new wxFontRefData(); - - M_FONTDATA->m_byXFontName = TRUE; - M_FONTDATA->m_font = gdk_font_load( xFontName ); -} - -wxFont::wxFont( int pointSize, int family, int style, int weight, bool underlined = FALSE, - const wxString& face = wxEmptyString ) -{ - m_refData = new wxFontRefData(); - - if (family == wxDEFAULT) - M_FONTDATA->m_family = wxSWISS; - else - M_FONTDATA->m_family = family; - - if (!face.IsEmpty()) M_FONTDATA->m_faceName = face; - - if (style == wxDEFAULT) - M_FONTDATA->m_style = wxNORMAL; - else - M_FONTDATA->m_style = style; - - if (weight == wxDEFAULT) - M_FONTDATA->m_weight = wxNORMAL; - else - M_FONTDATA->m_weight = weight; - - if (pointSize == wxDEFAULT) - M_FONTDATA->m_pointSize = 12; - else - M_FONTDATA->m_pointSize = pointSize; - - M_FONTDATA->m_underlined = underlined; - - if (wxTheFontList) wxTheFontList->Append( this ); - -} - -wxFont::wxFont( const wxFont& font ) -{ - Ref( font ); - - if (wxTheFontList) wxTheFontList->Append( this ); -} - -wxFont::~wxFont() -{ - if (wxTheFontList) wxTheFontList->DeleteObject( this ); -} - -wxFont& wxFont::operator = ( const wxFont& font ) -{ - if (*this == font) return (*this); - Ref( font ); - return *this; -} - -bool wxFont::operator == ( const wxFont& font ) -{ - return m_refData == font.m_refData; -} - -bool wxFont::operator != ( const wxFont& font ) -{ - return m_refData != font.m_refData; -} - -bool wxFont::Ok() const -{ - return (m_refData != NULL); -} - -int wxFont::GetPointSize() const -{ - wxCHECK_MSG( Ok(), 0, "invalid font" ); - - return M_FONTDATA->m_pointSize; -} - -wxString wxFont::GetFaceName() const -{ - wxCHECK_MSG( Ok(), "", "invalid font" ); - - return M_FONTDATA->m_faceName; -} - -int wxFont::GetFamily() const -{ - wxCHECK_MSG( Ok(), 0, "invalid font" ); - - return M_FONTDATA->m_family; -} - -wxString wxFont::GetFamilyString() const -{ - wxCHECK_MSG( Ok(), "wxDEFAULT", "invalid font" ); - - switch (M_FONTDATA->m_family) - { - case wxDECORATIVE: return wxString("wxDECORATIVE"); - case wxROMAN: return wxString("wxROMAN"); - case wxSCRIPT: return wxString("wxSCRIPT"); - case wxSWISS: return wxString("wxSWISS"); - case wxMODERN: return wxString("wxMODERN"); - case wxTELETYPE: return wxString("wxTELETYPE"); - default: return "wxDEFAULT"; - } - - return "wxDEFAULT"; -} - -int wxFont::GetStyle() const -{ - wxCHECK_MSG( Ok(), 0, "invalid font" ); - - return M_FONTDATA->m_style; -} - -wxString wxFont::GetStyleString() const -{ - wxCHECK_MSG( Ok(), "wxDEFAULT", "invalid font" ); - - switch (M_FONTDATA->m_style) - { - case wxNORMAL: return wxString("wxNORMAL"); - case wxSLANT: return wxString("wxSLANT"); - case wxITALIC: return wxString("wxITALIC"); - default: return wxString("wxDEFAULT"); - } - - return wxString("wxDEFAULT"); -} - -int wxFont::GetWeight() const -{ - wxCHECK_MSG( Ok(), 0, "invalid font" ); - - return M_FONTDATA->m_weight; -} - -wxString wxFont::GetWeightString() const -{ - wxCHECK_MSG( Ok(), "wxDEFAULT", "invalid font" ); - - switch (M_FONTDATA->m_weight) - { - case wxNORMAL: return wxString("wxNORMAL"); - case wxBOLD: return wxString("wxBOLD"); - case wxLIGHT: return wxString("wxLIGHT"); - default: return wxString("wxDEFAULT"); - } - - return wxString("wxDEFAULT"); -} - -bool wxFont::GetUnderlined() const -{ - wxCHECK_MSG( Ok(), FALSE, "invalid font" ); - - return M_FONTDATA->m_underlined; -} - -void wxFont::Unshare() -{ - if (!m_refData) - { - m_refData = new wxFontRefData(); - } - else - { - wxFontRefData* ref = new wxFontRefData(*(wxFontRefData*)m_refData); - UnRef(); - m_refData = ref; - } -} - -void wxFont::SetPointSize(int pointSize) -{ - Unshare(); - - M_FONTDATA->m_pointSize = pointSize; -} - -void wxFont::SetFamily(int family) -{ - Unshare(); - - M_FONTDATA->m_family = family; -} - -void wxFont::SetStyle(int style) -{ - Unshare(); - - M_FONTDATA->m_style = style; -} - -void wxFont::SetWeight(int weight) -{ - Unshare(); - - M_FONTDATA->m_weight = weight; -} - -void wxFont::SetFaceName(const wxString& faceName) -{ - Unshare(); - - M_FONTDATA->m_faceName = faceName; -} - -void wxFont::SetUnderlined(bool underlined) -{ - Unshare(); - - M_FONTDATA->m_underlined = underlined; -} - -//----------------------------------------------------------------------------- -// get internal representation of font -//----------------------------------------------------------------------------- - -static GdkFont *wxLoadQueryNearestFont( int point_size, int family, int style, int weight, - bool underlined, const wxString &facename ); - -GdkFont *wxFont::GetInternalFont( float scale ) const -{ - if (!Ok()) - { - wxFAIL_MSG( "invalid font" ); - return (GdkFont*) NULL; - } - - /* short cut if the special X font constructor has been used */ - if (M_FONTDATA->m_byXFontName) return M_FONTDATA->m_font; - - long int_scale = long(scale * 100.0 + 0.5); /* key for fontlist */ - int point_scale = (M_FONTDATA->m_pointSize * 10 * int_scale) / 100; - GdkFont *font = (GdkFont *) NULL; - - wxNode *node = M_FONTDATA->m_scaled_xfonts.Find(int_scale); - if (node) - { - font = (GdkFont*)node->Data(); - } - else - { -/* - if ((int_scale == 100) && - (M_FONTDATA->m_family == wxSWISS) && - (M_FONTDATA->m_style == wxNORMAL) && - (M_FONTDATA->m_pointSize == 12) && - (M_FONTDATA->m_weight == wxNORMAL) && - (M_FONTDATA->m_underlined == FALSE)) - { - font = gdk_font_load( "-adobe-helvetica-medium-r-normal--*-120-*-*-*-*-*-*" ); - } - else -*/ - { - font = wxLoadQueryNearestFont( point_scale, M_FONTDATA->m_family, M_FONTDATA->m_style, - M_FONTDATA->m_weight, M_FONTDATA->m_underlined, M_FONTDATA->m_faceName ); - } - M_FONTDATA->m_scaled_xfonts.Append( int_scale, (wxObject*)font ); - } - - if (!font) - { - wxLogError("could not load any font"); - } - - return font; -} - -//----------------------------------------------------------------------------- -// local utilities to find a X font -//----------------------------------------------------------------------------- - -static GdkFont*wxLoadQueryFont( int pointSize, int family, int style, int weight, - bool underlined, const wxString &facename ) -{ - char *xfamily = (char*) NULL; - char *xstyle = (char*) NULL; - char *xweight = (char*) NULL; - - switch (family) - { - case wxDECORATIVE: xfamily = "lucida"; break; - case wxROMAN: xfamily = "times"; break; - case wxMODERN: xfamily = "courier"; break; - case wxSWISS: xfamily = "helvetica"; break; - case wxTELETYPE: xfamily = "lucidatypewriter"; break; - case wxSCRIPT: xfamily = "utopia"; break; - default: xfamily = "*"; - } - - if (!facename.IsEmpty()) - { - sprintf( wxBuffer, "-*-%s-*-*-normal-*-*-*-*-*-*-*-*-*", facename.c_str() ); - GdkFont *test = gdk_font_load( wxBuffer ); - if (test) - { - gdk_font_unref( test ); - xfamily = WXSTRINGCAST facename; - } - } - - switch (style) - { - case wxITALIC: xstyle = "i"; break; - case wxSLANT: xstyle = "o"; break; - case wxNORMAL: xstyle = "r"; break; - default: xstyle = "*"; break; - } - switch (weight) - { - case wxBOLD: xweight = "bold"; break; - case wxLIGHT: - case wxNORMAL: xweight = "medium"; break; - default: xweight = "*"; break; - } - - sprintf( wxBuffer, "-*-%s-%s-%s-normal-*-*-%d-*-*-*-*-*-*", - xfamily, xweight, xstyle, pointSize); - - return gdk_font_load( wxBuffer ); -} - -static GdkFont *wxLoadQueryNearestFont( int point_size, int family, int style, int weight, - bool underlined, const wxString &facename ) -{ - GdkFont *font = wxLoadQueryFont( point_size, family, style, weight, underlined, facename ); - - if (!font) - { - /* search up and down by stepsize 10 */ - int max_size = point_size + 20 * (1 + (point_size/180)); - int min_size = point_size - 20 * (1 + (point_size/180)); - - /* Search for smaller size (approx.) */ - for (int i=point_size-10; !font && i >= 10 && i >= min_size; i -= 10) - font = wxLoadQueryFont(i, family, style, weight, underlined, facename ); - - /* Search for larger size (approx.) */ - for (int i=point_size+10; !font && i <= max_size; i += 10) - font = wxLoadQueryFont( i, family, style, weight, underlined, facename ); - - /* Try default family */ - if (!font && family != wxDEFAULT) - font = wxLoadQueryFont( point_size, wxDEFAULT, style, weight, underlined, facename ); - - /* Bogus font */ - if (!font) - font = wxLoadQueryFont(120, wxDEFAULT, wxNORMAL, wxNORMAL, underlined, facename ); - } - - return font; -} - -/* - -//----------------------------------------------------------------------------- -// face names and index functions -//----------------------------------------------------------------------------- - -static char *font_defaults[] = { - "FamilyDefault", "Default", - "FamilyRoman", "Roman", - "FamilyDecorative", "Decorative", - "FamilyModern", "Modern", - "FamilyTeletype", "Teletype", - "FamilySwiss", "Swiss", - "FamilyScript", "Script", - - "AfmMedium", "", - "AfmBold", "Bo", - "AfmLight", "", - "AfmStraight", "", - "AfmItalic", "${AfmSlant}", - "AfmSlant", "O", - "AfmRoman", "Ro", - "AfmTimes", "Times", - "AfmHelvetica", "Helv", - "AfmCourier", "Cour", - - "Afm___", "${AfmTimes,$[weight],$[style]}", - - "AfmTimes__", "${AfmTimes}${Afm$[weight]}${Afm$[style]}", - "AfmTimesMediumStraight", "${AfmTimes}${AfmRoman}", - "AfmTimesLightStraight", "${AfmTimes}${AfmRoman}", - "AfmTimes_Italic", "${AfmTimes}$[weight]${AfmItalic}", - "AfmTimes_Slant", "${AfmTimes}$[weight]${AfmItalic}", - - "AfmSwiss__", "${AfmHelvetica}${Afm$[weight]}${Afm$[style]}", - "AfmModern__", "${AfmCourier}${Afm$[weight]}${Afm$[style]}", - - "AfmTeletype__", "${AfmModern,$[weight],$[style]}", - - "PostScriptMediumStraight", "", - "PostScriptMediumItalic", "-Oblique", - "PostScriptMediumSlant", "-Oblique", - "PostScriptLightStraight", "", - "PostScriptLightItalic", "-Oblique", - "PostScriptLightSlant", "-Oblique", - "PostScriptBoldStraight", "-Bold", - "PostScriptBoldItalic", "-BoldOblique", - "PostScriptBoldSlant", "-BoldOblique", - -#if WX_NORMALIZED_PS_FONTS - "PostScript___", "${PostScriptTimes,$[weight],$[style]}", -#else - "PostScriptRoman__", "${PostScriptTimes,$[weight],$[style]}", - "PostScript___", "LucidaSans${PostScript$[weight]$[style]}", -#endif - - "PostScriptTimesMedium", "", - "PostScriptTimesLight", "", - "PostScriptTimesBold", "Bold", - - "PostScriptTimes__", "Times${PostScript$[weight]$[style]}", - "PostScriptTimesMediumStraight", "Times-Roman", - "PostScriptTimesLightStraight", "Times-Roman", - "PostScriptTimes_Slant", "Times-${PostScriptTimes$[weight]}Italic", - "PostScriptTimes_Italic", "Times-${PostScriptTimes$[weight]}Italic", - - "PostScriptSwiss__", "Helvetica${PostScript$[weight]$[style]}", - "PostScriptModern__", "Courier${PostScript$[weight]$[style]}", - - "PostScriptTeletype__", "${PostScriptModern,$[weight],$[style]}", - -#if !WX_NORMALIZED_PS_FONTS - "PostScriptScript__", "Zapf-Chancery-MediumItalic", -#endif - - "ScreenMedium", "medium", - "ScreenBold", "bold", - "ScreenLight", "light", - "ScreenStraight", "r", - "ScreenItalic", "i", - "ScreenSlant", "o", - - "ScreenDefaultBase", "*-times", - - "ScreenRomanBase", "*-times", - "ScreenDecorativeBase", "*-helvetica", - "ScreenModernBase", "*-courier", - "ScreenTeletypeBase", "*-lucidatypewriter", - "ScreenSwissBase", "*-lucida", - "ScreenScriptBase", "*-zapfchancery", - - "ScreenStdSuffix", "-${Screen$[weight]}-${Screen$[style]}" - "-normal-*-*-%d-*-*-*-*-*-*", - - "Screen___", - "-${ScreenDefaultBase}${ScreenStdSuffix}", - "ScreenRoman__", - "-${ScreenRomanBase}${ScreenStdSuffix}", - "ScreenDecorative__", - "-${ScreenDecorativeBase}${ScreenStdSuffix}", - "ScreenModern__", - "-${ScreenModernBase}${ScreenStdSuffix}", - "ScreenTeletype__", - "-${ScreenTeletypeBase}${ScreenStdSuffix}", - "ScreenSwiss__", - "-${ScreenSwissBase}${ScreenStdSuffix}", - "ScreenScript__", - "-${ScreenScriptBase}${ScreenStdSuffix}", - (char *) NULL -}; - -enum {wxWEIGHT_NORMAL, wxWEIGHT_BOLD, wxWEIGHT_LIGHT, wxNUM_WEIGHTS}; -enum {wxSTYLE_NORMAL, wxSTYLE_ITALIC, wxSTYLE_SLANT, wxNUM_STYLES}; - -static int WCoordinate(int w) -{ - switch (w) - { - case wxBOLD: return wxWEIGHT_BOLD; - case wxLIGHT: return wxWEIGHT_LIGHT; - case wxNORMAL: - default: return wxWEIGHT_NORMAL; - } -}; - -static int SCoordinate(int s) -{ - switch (s) - { - case wxITALIC: return wxSTYLE_ITALIC; - case wxSLANT: return wxSTYLE_SLANT; - case wxNORMAL: - default: return wxSTYLE_NORMAL; - } -}; - -//----------------------------------------------------------------------------- -// wxSuffixMap -//----------------------------------------------------------------------------- - -class wxSuffixMap -{ -public: - ~wxSuffixMap(); - - inline char *GetName(int weight, int style) - { - return ( map [WCoordinate(weight)] [SCoordinate(style)] ); - } - - char *map[wxNUM_WEIGHTS][wxNUM_STYLES]; - void Initialize(const char *, const char *); -}; - -static void SearchResource(const char *prefix, const char **names, int count, char **v) -{ - int k, i, j; - char resource[1024], **defaults, *internal; - - k = 1 << count; - - *v = (char *) NULL; - internal = (char *) NULL; - - for (i = 0; i < k; i++) - { - strcpy(resource, prefix); - for (j = 0; j < count; j++) - { - // upon failure to find a matching fontname - // in the default fonts above, we substitute more - // and more values by _ so that at last ScreenMyFontBoldNormal - // would turn into Screen___ and this will then get - // converted to -${ScreenDefaultBase}${ScreenStdSuffix} - - if (!(i & (1 << j))) - strcat(resource, names[j]); - else - strcat(resource, "_"); - } - - // we previously search the Xt-resources here - - if (!internal) - { - defaults = font_defaults; - while (*defaults) - { - if (!strcmp(*defaults, resource)) - { - internal = defaults[1]; - break; - } - defaults += 2; - } - } - } - - if (internal) - { - if ((strcmp(internal,"-${ScreenDefaultBase}${ScreenStdSuffix}") == 0) && - (strcmp(names[0], "Default") != 0)) - { - // we did not find any font name in the standard list. - // this can (hopefully does) mean that someone supplied - // the facename in the wxFont constructor so we insert - // it here - - strcpy( resource,"-*-" ); // any producer - strcat( resource, names[0] ); // facename - strcat( resource, "${ScreenStdSuffix}" ); // add size params later on - *v = copystring(resource); - } - else - { - *v = copystring(internal); - } - } -} - -wxSuffixMap::~wxSuffixMap() -{ - int k, j; - - for (k = 0; k < wxNUM_WEIGHTS; ++k) - for (j = 0; j < wxNUM_STYLES; ++j) - if (map[k][j]) - { - delete[] map[k][j]; - map[k][j] = (char *) NULL; - } -} - -void wxSuffixMap::Initialize(const char *resname, const char *devresname) -{ - const char *weight, *style; - char *v; - int i, j, k; - const char *names[3]; - - for (k = 0; k < wxNUM_WEIGHTS; k++) - { - switch (k) - { - case wxWEIGHT_NORMAL: weight = "Medium"; break; - case wxWEIGHT_LIGHT: weight = "Light"; break; - case wxWEIGHT_BOLD: - default: weight = "Bold"; - } - for (j = 0; j < wxNUM_STYLES; j++) - { - switch (j) - { - case wxSTYLE_NORMAL: style = "Straight"; break; - case wxSTYLE_ITALIC: style = "Italic"; break; - case wxSTYLE_SLANT: - default: style = "Slant"; - } - names[0] = resname; - names[1] = weight; - names[2] = style; - - SearchResource(devresname, names, 3, &v); - - // Expand macros in the found string: -found: - int len, closer = 0, startpos = 0; - - len = (v ? strlen(v) : 0); - for (i = 0; i < len; i++) - { - if (v[i] == '$' && ((v[i+1] == '[') || (v[i+1] == '{'))) - { - startpos = i; - closer = (v[i+1] == '[') ? ']' : '}'; - ++i; - } - else if (v[i] == closer) - { - int newstrlen; - const char *r = (char *) NULL; bool delete_r = FALSE; - char *name; - - name = v + startpos + 2; - v[i] = 0; - - if (closer == '}') - { - int i, count, len; - char **names; - - for (i = 0, count = 1; name[i]; i++) - if (name[i] == ',') - count++; - - len = i; - - names = new char*[count]; - names[0] = name; - for (i = 0, count = 1; i < len; i++) - if (name[i] == ',') - { - names[count++] = name + i + 1; - name[i] = 0; - } - - SearchResource("", (const char **)names, count, (char **)&r); - delete_r = (r != 0); - delete[] names; - - if (!r) - { - for (i = 0; i < len; i++) - if (!name[i]) - name[i] = ','; - r = ""; - wxLogError( "Bad resource name in font lookup." ); - } - } else if (!strcmp(name, "weight")) { - r = weight; - } else if (!strcmp(name, "style")) { - r = style; - } else if (!strcmp(name, "family")) { - r = resname; - } else { - r = ""; - wxLogError( "Bad font macro name." ); - } - - // add r to v - newstrlen = strlen(r); - char *naya = new char[startpos + newstrlen + len - i]; - memcpy(naya, v, startpos); - memcpy(naya + startpos, r, newstrlen); - memcpy(naya + startpos + newstrlen, v + i + 1, len - i); - if (delete_r) - delete[] (char*)r; - delete[] v; - v = naya; - - goto found; - } - } - // We have a final value: - map[k][j] = v; - } - } -} - -//----------------------------------------------------------------------------- -// wxFontNameItem -//----------------------------------------------------------------------------- - -class wxFontNameItem : public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxFontNameItem) -public: - wxFontNameItem(const char *name, int id, int family); - ~wxFontNameItem(); - - inline char* GetScreenName(int w, int s) {return screen.GetName(w, s);} - inline char* GetPostScriptName(int w, int s) {return printing.GetName(w, s);} - inline char* GetAFMName(int w, int s) {return afm.GetName(w, s);} - inline char* GetName() {return name;} - inline int GetFamily() {return family;} - inline int GetId() {return id;} - inline bool IsRoman() {return isroman;} -#if defined(__WXDEBUG__) - void Dump(ostream& str); -#endif - - int id; - int family; - char *name; - wxSuffixMap screen, printing, afm; - bool isroman; -}; - -IMPLEMENT_ABSTRACT_CLASS(wxFontNameItem, wxObject) - -wxFontNameItem::wxFontNameItem(const char *Name, int Id, int Family) -{ - name = copystring(Name); - id = Id; - family = Family; - - screen. Initialize(name, "Screen"); - printing.Initialize(name, "PostScript"); - afm. Initialize(name, "Afm"); -} - -wxFontNameItem::~wxFontNameItem() -{ - if (name) - delete[] name; - name = (char *) NULL; -} - -#if defined(__WXDEBUG__) -void wxFontNameItem::Dump(ostream& str) -{ - str << "wxFontNameItem(" << name << ")"; -} -#endif - -//----------------------------------------------------------------------------- -// wxFontDirectory -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxFontNameDirectory, wxObject) - -wxFontNameDirectory::wxFontNameDirectory() -{ - table = new wxHashTable(wxKEY_INTEGER, 20); - nextFontId = -1; -} - -wxFontNameDirectory::~wxFontNameDirectory() -{ - // Cleanup wxFontNameItems allocated - table->BeginFind(); - wxNode *node = table->Next(); - while (node) - { - wxFontNameItem *item = (wxFontNameItem*)node->Data(); - delete item; - node = table->Next(); - } - delete table; -} - -int wxFontNameDirectory::GetNewFontId() -{ - return (nextFontId--); -} - -void wxFontNameDirectory::Initialize() -{ - Initialize(wxDEFAULT, wxDEFAULT, "Default"); - Initialize(wxDECORATIVE, wxDECORATIVE, "Decorative"); - Initialize(wxROMAN, wxROMAN, "Roman"); - Initialize(wxMODERN, wxMODERN, "Modern"); - Initialize(wxTELETYPE, wxTELETYPE, "Teletype"); - Initialize(wxSWISS, wxSWISS, "Swiss"); - Initialize(wxSCRIPT, wxSCRIPT, "Script"); -} - -void wxFontNameDirectory::Initialize(int fontid, int family, const char *resname) -{ - char *fam, resource[256]; - - sprintf(resource, "Family%s", resname); - SearchResource((const char *)resource, (const char **) NULL, 0, (char **)&fam); - - if (fam) - { - if (!strcmp(fam, "Default")) family = wxDEFAULT; - else if (!strcmp(fam, "Roman")) family = wxROMAN; - else if (!strcmp(fam, "Decorative")) family = wxDECORATIVE; - else if (!strcmp(fam, "Modern")) family = wxMODERN; - else if (!strcmp(fam, "Teletype")) family = wxTELETYPE; - else if (!strcmp(fam, "Swiss")) family = wxSWISS; - else if (!strcmp(fam, "Script")) family = wxSCRIPT; - delete[] fam; // free resource - } - table->Put(fontid, new wxFontNameItem(resname, fontid, family)); -} - -int wxFontNameDirectory::FindOrCreateFontId(const char *name, int family) -{ - int id; - - // font exists -> return id - if ( (id = GetFontId(name)) ) return id; - - // create new font - Initialize(id=GetNewFontId(), family, name); - return id; -} - -char *wxFontNameDirectory::GetScreenName(int fontid, int weight, int style) -{ - wxFontNameItem *item = (wxFontNameItem*)table->Get(fontid); // find font - if (item) - return item->GetScreenName(weight, style); - - // font does not exist - return (char *) NULL; -} - -char *wxFontNameDirectory::GetPostScriptName(int fontid, int weight, int style) -{ - wxFontNameItem *item = (wxFontNameItem*)table->Get(fontid); // find font - if (item) - return item->GetPostScriptName(weight, style); - - // font does not exist - return (char *) NULL; -} - -char *wxFontNameDirectory::GetAFMName(int fontid, int weight, int style) -{ - wxFontNameItem *item = (wxFontNameItem *)table->Get(fontid); // find font - if (item) - return item->GetAFMName(weight, style); - // font does not exist - return (char *) NULL; -} - -char *wxFontNameDirectory::GetFontName(int fontid) -{ - wxFontNameItem *item = (wxFontNameItem *)table->Get(fontid); // find font - if (item) - return item->GetName(); - - // font does not exist - return (char *) NULL; -} - -int wxFontNameDirectory::GetFontId(const char *name) -{ - wxNode *node; - - table->BeginFind(); - - while ( (node = table->Next()) ) - { - wxFontNameItem *item = (wxFontNameItem*)node->Data(); - if (!strcmp(name, item->name)) - return item->id; - } - - // font does not exist - return 0; -} - -int wxFontNameDirectory::GetFamily(int fontid) -{ - wxFontNameItem *item = (wxFontNameItem *)table->Get(fontid); - - if (item) - return item->family; - - // font does not exist - return wxDEFAULT; -} - -*/ diff --git a/src/gtk/frame.cpp b/src/gtk/frame.cpp deleted file mode 100644 index 9d83f91591..0000000000 --- a/src/gtk/frame.cpp +++ /dev/null @@ -1,660 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: frame.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "frame.h" -#endif - -#include "wx/frame.h" -#include "wx/dialog.h" -#include "wx/control.h" -#include "wx/app.h" -#include "wx/menu.h" -#include "wx/toolbar.h" -#include "wx/statusbr.h" -#include "wx/dcclient.h" - -#include "glib.h" -#include "gdk/gdk.h" -#include "gtk/gtk.h" -#include "wx/gtk/win_gtk.h" - -//----------------------------------------------------------------------------- -// constants -//----------------------------------------------------------------------------- - -const int wxMENU_HEIGHT = 27; -const int wxSTATUS_HEIGHT = 25; - -//----------------------------------------------------------------------------- -// data -//----------------------------------------------------------------------------- - -extern wxList wxTopLevelWindows; -extern wxList wxPendingDelete; - -//----------------------------------------------------------------------------- -// "size_allocate" -//----------------------------------------------------------------------------- - -static void gtk_frame_size_callback( GtkWidget *WXUNUSED(widget), GtkAllocation* alloc, wxFrame *win ) -{ - if (!win->HasVMT()) return; - -/* - printf( "OnFrameResize from " ); - if (win->GetClassInfo() && win->GetClassInfo()->GetClassName()) - printf( win->GetClassInfo()->GetClassName() ); - printf( ".\n" ); -*/ - - if ((win->m_width != alloc->width) || (win->m_height != alloc->height)) - { - win->m_sizeSet = FALSE; - win->m_width = alloc->width; - win->m_height = alloc->height; - } -} - -//----------------------------------------------------------------------------- -// "delete_event" -//----------------------------------------------------------------------------- - -static gint gtk_frame_delete_callback( GtkWidget *WXUNUSED(widget), GdkEvent *WXUNUSED(event), wxFrame *win ) -{ -/* - printf( "OnDelete from " ); - if (win->GetClassInfo() && win->GetClassInfo()->GetClassName()) - printf( win->GetClassInfo()->GetClassName() ); - printf( ".\n" ); -*/ - - win->Close(); - - return TRUE; -} - -//----------------------------------------------------------------------------- -// "configure_event" -//----------------------------------------------------------------------------- - -static gint gtk_frame_configure_callback( GtkWidget *WXUNUSED(widget), GdkEventConfigure *event, wxFrame *win ) -{ - if (!win->HasVMT()) return FALSE; - - win->m_x = event->x; - win->m_y = event->y; - - wxMoveEvent mevent( wxPoint(win->m_x,win->m_y), win->GetId() ); - mevent.SetEventObject( win ); - win->GetEventHandler()->ProcessEvent( mevent ); - - return FALSE; -} - -//----------------------------------------------------------------------------- -// wxFrame -//----------------------------------------------------------------------------- - -BEGIN_EVENT_TABLE(wxFrame, wxWindow) - EVT_SIZE(wxFrame::OnSize) - EVT_CLOSE(wxFrame::OnCloseWindow) -END_EVENT_TABLE() - -IMPLEMENT_DYNAMIC_CLASS(wxFrame,wxWindow) - -wxFrame::wxFrame() -{ - m_frameMenuBar = (wxMenuBar *) NULL; - m_frameStatusBar = (wxStatusBar *) NULL; - m_frameToolBar = (wxToolBar *) NULL; - m_sizeSet = FALSE; - m_miniEdge = 0; - m_miniTitle = 0; -} - -wxFrame::wxFrame( wxWindow *parent, wxWindowID id, const wxString &title, - const wxPoint &pos, const wxSize &size, - long style, const wxString &name ) -{ - m_frameMenuBar = (wxMenuBar *) NULL; - m_frameStatusBar = (wxStatusBar *) NULL; - m_frameToolBar = (wxToolBar *) NULL; - m_sizeSet = FALSE; - m_miniEdge = 0; - m_miniTitle = 0; - Create( parent, id, title, pos, size, style, name ); -} - -bool wxFrame::Create( wxWindow *parent, wxWindowID id, const wxString &title, - const wxPoint &pos, const wxSize &size, - long style, const wxString &name ) -{ - wxTopLevelWindows.Append( this ); - - m_needParent = FALSE; - - PreCreation( parent, id, pos, size, style, name ); - - m_title = title; - - GtkWindowType win_type = GTK_WINDOW_TOPLEVEL; - if (style & wxSIMPLE_BORDER) win_type = GTK_WINDOW_POPUP; - - m_widget = gtk_window_new( win_type ); - -#ifdef __WXDEBUG__ - debug_focus_in( m_widget, "wxFrame::m_widget", name ); -#endif - - if ((size.x != -1) && (size.y != -1)) - gtk_widget_set_usize( m_widget, m_width, m_height ); - if ((pos.x != -1) && (pos.y != -1)) - gtk_widget_set_uposition( m_widget, m_x, m_y ); - - gtk_window_set_title( GTK_WINDOW(m_widget), title ); - GTK_WIDGET_UNSET_FLAGS( m_widget, GTK_CAN_FOCUS ); - - gtk_widget_set( m_widget, "GtkWindow::allow_shrink", TRUE, NULL ); - - gtk_signal_connect( GTK_OBJECT(m_widget), "delete_event", - GTK_SIGNAL_FUNC(gtk_frame_delete_callback), (gpointer)this ); - - m_wxwindow = gtk_myfixed_new(); - gtk_widget_show( m_wxwindow ); - GTK_WIDGET_UNSET_FLAGS( m_wxwindow, GTK_CAN_FOCUS ); - -#ifdef __WXDEBUG__ - debug_focus_in( m_wxwindow, "wxFrame::m_wxwindow", name ); -#endif - - gtk_container_add( GTK_CONTAINER(m_widget), m_wxwindow ); - - gtk_signal_connect( GTK_OBJECT(m_widget), "size_allocate", - GTK_SIGNAL_FUNC(gtk_frame_size_callback), (gpointer)this ); - - gtk_signal_connect( GTK_OBJECT(m_widget), "configure_event", - GTK_SIGNAL_FUNC(gtk_frame_configure_callback), (gpointer)this ); - - if (m_parent) m_parent->AddChild( this ); - - PostCreation(); - - return TRUE; -} - -wxFrame::~wxFrame() -{ - if (m_frameMenuBar) delete m_frameMenuBar; - if (m_frameStatusBar) delete m_frameStatusBar; - if (m_frameToolBar) delete m_frameToolBar; - - wxTopLevelWindows.DeleteObject( this ); - - if (wxTheApp->GetTopWindow() == this) - { - wxTheApp->SetTopWindow( (wxWindow*) NULL ); - } - - if (wxTopLevelWindows.Number() == 0) - { - wxTheApp->ExitMainLoop(); - } -} - -bool wxFrame::Show( bool show ) -{ - wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); - - if (show && !m_sizeSet) - { - // by calling GtkOnSize here, we don't have to call - // either after showing the frame, which would entail - // much ugly flicker nor from within the size_allocate - // handler, because GTK 1.1.X forbids that. - - GtkOnSize( m_x, m_y, m_width, m_height ); - } - - return wxWindow::Show( show ); -} - -void wxFrame::OnCloseWindow( wxCloseEvent &event ) -{ - if (GetEventHandler()->OnClose() || event.GetForce()) this->Destroy(); -} - -bool wxFrame::Destroy() -{ - wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); - - if (!wxPendingDelete.Member(this)) wxPendingDelete.Append(this); - - return TRUE; -} - -wxPoint wxFrame::GetClientAreaOrigin() const -{ - wxPoint pt( m_miniEdge, m_miniEdge + m_miniTitle ); - if (m_frameMenuBar) - { - int h = 0; - m_frameMenuBar->GetSize( (int*)NULL, &h ); - pt.y += h; - } - if (m_frameToolBar) - { - int h = 0; - m_frameToolBar->GetSize( (int*)NULL, &h ); - pt.y += h; - } - return pt; -} - -void wxFrame::SetSize( int x, int y, int width, int height, int sizeFlags ) -{ - wxASSERT_MSG( (m_widget != NULL), "invalid window" ); - - // Don't do anything for children of wxMDIChildFrame - if (!m_wxwindow) return; - - if (m_resizing) return; // I don't like recursions - m_resizing = TRUE; - - int old_x = m_x; - int old_y = m_y; - int old_width = m_width; - int old_height = m_height; - - if ((sizeFlags & wxSIZE_USE_EXISTING) == wxSIZE_USE_EXISTING) - { - if (x != -1) m_x = x; - if (y != -1) m_y = y; - if (width != -1) m_width = width; - if (height != -1) m_height = height; - } - else - { - m_x = x; - m_y = y; - m_width = width; - m_height = height; - } - - if ((sizeFlags & wxSIZE_AUTO_WIDTH) == wxSIZE_AUTO_WIDTH) - { - if (width == -1) m_width = 80; - } - - if ((sizeFlags & wxSIZE_AUTO_HEIGHT) == wxSIZE_AUTO_HEIGHT) - { - if (height == -1) m_height = 26; - } - - if ((m_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth; - if ((m_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight; - if ((m_maxWidth != -1) && (m_width > m_maxWidth)) m_width = m_maxWidth; - if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_maxHeight; - - if ((m_x != -1) || (m_y != -1)) - { - if ((m_x != old_x) || (m_y != old_y)) - gtk_widget_set_uposition( m_widget, m_x, m_y ); - } - - if ((m_width != old_width) || (m_height != old_height)) - { - gtk_widget_set_usize( m_widget, m_width, m_height ); - } - - wxSizeEvent event( wxSize(m_width,m_height), GetId() ); - event.SetEventObject( this ); - GetEventHandler()->ProcessEvent( event ); - - m_resizing = FALSE; -} - -void wxFrame::SetSize( int width, int height ) -{ - SetSize( -1, -1, width, height, wxSIZE_USE_EXISTING ); -} - -void wxFrame::Centre( int direction ) -{ - wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); - - int x = 0; - int y = 0; - - if (direction & wxHORIZONTAL == wxHORIZONTAL) x = (gdk_screen_width () - m_width) / 2; - if (direction & wxVERTICAL == wxVERTICAL) y = (gdk_screen_height () - m_height) / 2; - - Move( x, y ); -} - -void wxFrame::GetClientSize( int *width, int *height ) const -{ - wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); - - wxWindow::GetClientSize( width, height ); - if (height) - { - if (m_frameMenuBar) (*height) -= wxMENU_HEIGHT; - if (m_frameStatusBar) (*height) -= wxSTATUS_HEIGHT; - if (m_frameToolBar) - { - int y = 0; - m_frameToolBar->GetSize( (int *) NULL, &y ); - (*height) -= y; - } - (*height) -= m_miniEdge*2 + m_miniTitle; - } - if (width) - { - (*width) -= m_miniEdge*2; - } -} - -void wxFrame::SetClientSize( int const width, int const height ) -{ - wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); - - int h = height; - if (m_frameMenuBar) h += wxMENU_HEIGHT; - if (m_frameStatusBar) h += wxSTATUS_HEIGHT; - if (m_frameToolBar) - { - int y = 0; - m_frameToolBar->GetSize( (int *) NULL, &y ); - h += y; - } - wxWindow::SetClientSize( width + m_miniEdge*2, h + m_miniEdge*2 + m_miniTitle ); -} - -void wxFrame::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), int width, int height ) -{ - // due to a bug in gtk, x,y are always 0 - // m_x = x; - // m_y = y; - - if (m_resizing) return; - m_resizing = TRUE; - - if (!m_wxwindow) return; - - m_width = width; - m_height = height; - - if ((m_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth; - if ((m_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight; - if ((m_maxWidth != -1) && (m_width > m_maxWidth)) m_width = m_maxWidth; - if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_maxHeight; - - gtk_widget_set_usize( m_widget, m_width, m_height ); - - // this emulates the new wxMSW behaviour of placing all - // frame-subwindows (menu, toolbar..) on one native window - // OK, this hurts in the eye, but I don't want to call SetSize() - // because I don't want to call any non-native functions here. - - if (m_frameMenuBar) - { - int xx = m_miniEdge; - int yy = m_miniEdge + m_miniTitle; - int ww = m_width - 2*m_miniEdge; - int hh = wxMENU_HEIGHT; - m_frameMenuBar->m_x = xx; - m_frameMenuBar->m_y = yy; - m_frameMenuBar->m_width = ww; - m_frameMenuBar->m_height = hh; - - gtk_myfixed_move( GTK_MYFIXED(m_wxwindow), m_frameMenuBar->m_widget, xx, yy ); - gtk_widget_set_usize( m_frameMenuBar->m_widget, ww, hh ); - } - - if (m_frameToolBar) - { - int xx = m_miniEdge; - int yy = m_miniEdge + m_miniTitle; - if (m_frameMenuBar) yy += wxMENU_HEIGHT; - int ww = m_width - 2*m_miniEdge; - int hh = m_frameToolBar->m_height; - - m_frameToolBar->m_x = xx; - m_frameToolBar->m_y = yy; - m_frameToolBar->m_height = hh; - m_frameToolBar->m_width = ww; - - gtk_myfixed_move( GTK_MYFIXED(m_wxwindow), m_frameToolBar->m_widget, xx, yy ); - gtk_widget_set_usize( m_frameToolBar->m_widget, ww, hh ); - } - - if (m_frameStatusBar) - { - int xx = 0 + m_miniEdge; - int yy = m_height - wxSTATUS_HEIGHT - m_miniEdge; - int ww = m_width - 2*m_miniEdge; - int hh = wxSTATUS_HEIGHT; - - m_frameStatusBar->m_x = xx; - m_frameStatusBar->m_y = yy; - m_frameStatusBar->m_width = ww; - m_frameStatusBar->m_height = hh; - - gtk_myfixed_move( GTK_MYFIXED(m_wxwindow), m_frameStatusBar->m_widget, xx, yy ); - gtk_widget_set_usize( m_frameStatusBar->m_widget, ww, hh ); - } - - m_sizeSet = TRUE; - - wxSizeEvent event( wxSize(m_width,m_height), GetId() ); - event.SetEventObject( this ); - GetEventHandler()->ProcessEvent( event ); - - m_resizing = FALSE; -} - -void wxFrame::OnInternalIdle() -{ - if (!m_sizeSet) - GtkOnSize( m_x, m_y, m_width, m_height ); - - DoMenuUpdates(); -} - -void wxFrame::OnSize( wxSizeEvent &WXUNUSED(event) ) -{ - wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); - - if (GetAutoLayout()) - { - Layout(); - } - else - { - // no child: go out ! - if (!GetChildren().First()) return; - - // do we have exactly one child? - wxWindow *child = (wxWindow *) NULL; - for(wxNode *node = GetChildren().First(); node; node = node->Next()) - { - wxWindow *win = (wxWindow *)node->Data(); - if (!wxIS_KIND_OF(win,wxFrame) && !wxIS_KIND_OF(win,wxDialog) -#if 0 // not in m_children anyway ? - && (win != m_frameMenuBar) && - (win != m_frameToolBar) && - (win != m_frameStatusBar) -#endif - ) - { - // it's the second one: do nothing - if (child) return; - child = win; - } - } - - // yes: set it's size to fill all the frame - int client_x, client_y; - GetClientSize( &client_x, &client_y ); - child->SetSize( 1, 1, client_x-2, client_y-2 ); - } -} - -static void SetInvokingWindow( wxMenu *menu, wxWindow *win ) -{ - menu->SetInvokingWindow( win ); - wxNode *node = menu->m_items.First(); - while (node) - { - wxMenuItem *menuitem = (wxMenuItem*)node->Data(); - if (menuitem->IsSubMenu()) - SetInvokingWindow( menuitem->GetSubMenu(), win ); - node = node->Next(); - } -} - -void wxFrame::SetMenuBar( wxMenuBar *menuBar ) -{ - wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); - wxASSERT_MSG( (m_wxwindow != NULL), "invalid frame" ); - - m_frameMenuBar = menuBar; - - if (m_frameMenuBar) - { - wxNode *node = m_frameMenuBar->m_menus.First(); - while (node) - { - wxMenu *menu = (wxMenu*)node->Data(); - SetInvokingWindow( menu, this ); - node = node->Next(); - } - - if (m_frameMenuBar->m_parent != this) - { - m_frameMenuBar->m_parent = this; - gtk_myfixed_put( GTK_MYFIXED(m_wxwindow), - m_frameMenuBar->m_widget, m_frameMenuBar->m_x, m_frameMenuBar->m_y ); - } - } - - m_sizeSet = FALSE; -} - -wxMenuBar *wxFrame::GetMenuBar() const -{ - return m_frameMenuBar; -} - -wxToolBar* wxFrame::CreateToolBar(long style, wxWindowID id, const wxString& name) -{ - wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); - - wxCHECK_MSG( m_frameToolBar == NULL, FALSE, "recreating toolbar in wxFrame" ); - - m_frameToolBar = OnCreateToolBar( style, id, name ); - - GetChildren().DeleteObject( m_frameToolBar ); - - m_sizeSet = FALSE; - - return m_frameToolBar; -} - -wxToolBar* wxFrame::OnCreateToolBar( long style, wxWindowID id, const wxString& name ) -{ - return new wxToolBar( this, id, wxDefaultPosition, wxDefaultSize, style, name ); -} - -wxToolBar *wxFrame::GetToolBar() const -{ - return m_frameToolBar; -} - -wxStatusBar* wxFrame::CreateStatusBar( int number, long style, wxWindowID id, const wxString& name ) -{ - wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); - - wxCHECK_MSG( m_frameStatusBar == NULL, FALSE, "recreating status bar in wxFrame" ); - - m_frameStatusBar = OnCreateStatusBar( number, style, id, name ); - - m_sizeSet = FALSE; - - return m_frameStatusBar; -} - -wxStatusBar *wxFrame::OnCreateStatusBar( int number, long style, wxWindowID id, const wxString& name ) -{ - wxStatusBar *statusBar = (wxStatusBar *) NULL; - - statusBar = new wxStatusBar(this, id, wxPoint(0, 0), wxSize(100, 20), style, name); - - // Set the height according to the font and the border size - wxClientDC dc(statusBar); - dc.SetFont( statusBar->GetFont() ); - - long x, y; - dc.GetTextExtent( "X", &x, &y ); - - int height = (int)( (y * 1.1) + 2* statusBar->GetBorderY()); - - statusBar->SetSize( -1, -1, 100, height ); - - statusBar->SetFieldsCount( number ); - return statusBar; -} - -void wxFrame::SetStatusText(const wxString& text, int number) -{ - wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); - - wxCHECK_RET( m_frameStatusBar != NULL, "no statusbar to set text for" ); - - m_frameStatusBar->SetStatusText(text, number); -} - -void wxFrame::SetStatusWidths(int n, const int widths_field[] ) -{ - wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); - - wxCHECK_RET( m_frameStatusBar != NULL, "no statusbar to set widths for" ); - - m_frameStatusBar->SetStatusWidths(n, widths_field); -} - -wxStatusBar *wxFrame::GetStatusBar() const -{ - return m_frameStatusBar; -} - -void wxFrame::SetTitle( const wxString &title ) -{ - wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); - - m_title = title; - if (m_title.IsNull()) m_title = ""; - gtk_window_set_title( GTK_WINDOW(m_widget), title ); -} - -void wxFrame::SetIcon( const wxIcon &icon ) -{ - wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); - - m_icon = icon; - if (!icon.Ok()) return; - - wxMask *mask = icon.GetMask(); - GdkBitmap *bm = (GdkBitmap *) NULL; - if (mask) bm = mask->GetBitmap(); - - gdk_window_set_icon( m_widget->window, (GdkWindow *) NULL, icon.GetPixmap(), bm ); -} - diff --git a/src/gtk/gauge.cpp b/src/gtk/gauge.cpp deleted file mode 100644 index 051b70390b..0000000000 --- a/src/gtk/gauge.cpp +++ /dev/null @@ -1,82 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: gauge.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "gauge.h" -#endif - -#include "wx/gauge.h" -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -//----------------------------------------------------------------------------- -// wxGauge -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxGauge,wxControl) - -bool wxGauge::Create( wxWindow *parent, wxWindowID id, int range, - const wxPoint& pos, const wxSize& size, - long style, const wxValidator& validator, const wxString& name ) -{ - m_needParent = TRUE; - - PreCreation( parent, id, pos, size, style, name ); - - SetValidator( validator ); - - m_rangeMax = range; - m_gaugePos = 0; - m_useProgressBar = TRUE; - - m_widget = gtk_progress_bar_new(); - - m_parent->AddChild( this ); - - (m_parent->m_insertCallback)( m_parent, this ); - - PostCreation(); - - Show( TRUE ); - - return TRUE; -} - -void wxGauge::SetRange( int r ) -{ - m_rangeMax = r; - if (m_gaugePos > m_rangeMax) m_gaugePos = m_rangeMax; - - gtk_progress_bar_update( GTK_PROGRESS_BAR(m_widget), ((float)m_gaugePos)/m_rangeMax ); -} - -void wxGauge::SetValue( int pos ) -{ - m_gaugePos = pos; - if (m_gaugePos > m_rangeMax) m_gaugePos = m_rangeMax; - - gtk_progress_bar_update( GTK_PROGRESS_BAR(m_widget), ((float)m_gaugePos)/m_rangeMax ); -} - -int wxGauge::GetRange(void) const -{ - return m_rangeMax; -} - -int wxGauge::GetValue(void) const -{ - return m_gaugePos; -} - -void wxGauge::ApplyWidgetStyle() -{ - SetWidgetStyle(); - gtk_widget_set_style( m_widget, m_widgetStyle ); -} - diff --git a/src/gtk/gdiobj.cpp b/src/gtk/gdiobj.cpp deleted file mode 100644 index fe9fc047c7..0000000000 --- a/src/gtk/gdiobj.cpp +++ /dev/null @@ -1,19 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: gdiobj.cpp -// Purpose: wxGDIObject class -// Author: Julian Smart -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "gdiobj.h" -#endif - -#include "wx/gdiobj.h" - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxGDIObject, wxObject) -#endif - diff --git a/src/gtk/horiz.xbm b/src/gtk/horiz.xbm deleted file mode 100644 index ff3309bcc4..0000000000 --- a/src/gtk/horiz.xbm +++ /dev/null @@ -1,6 +0,0 @@ -#define horiz_width 15 -#define horiz_height 15 -static char horiz_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00}; diff --git a/src/gtk/icon.cpp b/src/gtk/icon.cpp deleted file mode 100644 index a372cb9869..0000000000 --- a/src/gtk/icon.cpp +++ /dev/null @@ -1,47 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: icon.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "icon.h" -#endif - -#include "wx/icon.h" - -//----------------------------------------------------------------------------- -// wxIcon -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxIcon,wxBitmap) - -wxIcon::wxIcon( const char **bits, int WXUNUSED(width), int WXUNUSED(height) ) : - wxBitmap( bits ) -{ -} - -wxIcon::wxIcon( char **bits, int WXUNUSED(width), int WXUNUSED(height) ) : - wxBitmap( bits ) -{ -} - -wxIcon::wxIcon() : wxBitmap() -{ -} - -wxIcon::wxIcon( const wxIcon& icon ) : wxBitmap() -{ - Ref(icon); -} - -wxIcon& wxIcon::operator = ( const wxIcon& icon ) -{ - if (*this == icon) return (*this); - Ref(icon); - return *this; -} - diff --git a/src/gtk/joystick.cpp b/src/gtk/joystick.cpp deleted file mode 100644 index e783f1276d..0000000000 --- a/src/gtk/joystick.cpp +++ /dev/null @@ -1,358 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: joystick.cpp -// Purpose: wxJoystick class -// Author: Ported to Linux by Guilhem Lavaux -// Modified by: -// Created: 05/23/98 -// RCS-ID: $Id$ -// Copyright: (c) Guilhem Lavaux -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "joystick.h" -#endif - -#include -#include -#include -#include -#include -#include -#include -#include "wx/event.h" -#include "wx/window.h" -#include "wx/gtk/joystick.h" - -#define JOYSTICK_AXE_MAX 32767 -#define JOYSTICK_AXE_MIN -32767 - -IMPLEMENT_DYNAMIC_CLASS(wxJoystick, wxObject) - -wxJoystick::wxJoystick(int joystick) -{ - wxString dev_name; - // Assume it's the same device name on all Linux systems ... - dev_name.Printf("/dev/js%d", (joystick == wxJOYSTICK1) ? 0 : 1); - - m_joystick = open(dev_name, O_RDWR); - m_lastposition = wxPoint(-1, -1); - for (int i=0;i<15;i++) - m_axe[i] = 0; - if (m_joystick != -1) - Create(); -} - -//////////////////////////////////////////////////////////////////////////// -// Background thread -//////////////////////////////////////////////////////////////////////////// -void *wxJoystick::Entry(void) -{ - struct js_event j_evt; - wxJoystickEvent jwx_event; - fd_set read_fds; - struct timeval time_out = {0, 0}; - - FD_ZERO(&read_fds); - DeferDestroy(TRUE); - while (1) { - TestDestroy(); - - if (m_polling) { - FD_SET(m_joystick, &read_fds); - select(m_joystick+1, &read_fds, NULL, NULL, &time_out); - if (FD_ISSET(m_joystick, &read_fds)) - read(m_joystick, &j_evt, sizeof(j_evt)); - else - j_evt.type = 0; - } else { - read(m_joystick, &j_evt, sizeof(j_evt)); - } - - if ((j_evt.type & JS_EVENT_AXIS) == JS_EVENT_AXIS) { - switch (j_evt.number) { - case 1: - m_lastposition.x = j_evt.value; - jwx_event.SetEventType(wxEVT_JOY_MOVE); - break; - case 2: - m_lastposition.y = j_evt.value; - jwx_event.SetEventType(wxEVT_JOY_MOVE); - break; - case 3: - m_axe[3] = j_evt.value; - jwx_event.SetEventType(wxEVT_JOY_ZMOVE); - break; - default: - m_axe[j_evt.number] = j_evt.value; - jwx_event.SetEventType(wxEVT_JOY_MOVE); - break; - } - jwx_event.SetPosition(m_lastposition); - jwx_event.SetZPosition(m_axe[3]); - } - if ((j_evt.type & JS_EVENT_BUTTON) == JS_EVENT_BUTTON) { - register int mask = 1 << j_evt.number; - char button = m_buttons & mask; - - m_buttons &= ~mask; - if (button) { - jwx_event.SetEventType(wxEVT_JOY_BUTTON_UP); - } else { - jwx_event.SetEventType(wxEVT_JOY_BUTTON_DOWN); - m_buttons |= mask; - } - - jwx_event.SetButtonState(m_buttons); - jwx_event.SetButtonChange(j_evt.number); - } - } - if (m_catchwin) - m_catchwin->ProcessEvent(jwx_event); - if (m_polling) - usleep(m_polling*1000); -} - -//////////////////////////////////////////////////////////////////////////// -// State -//////////////////////////////////////////////////////////////////////////// - -wxPoint wxJoystick::GetPosition(void) const -{ - return m_lastposition; -} - -int wxJoystick::GetZPosition(void) const -{ - return m_axe[3]; -} - -int wxJoystick::GetButtonState(void) const -{ - return m_buttons; -} - -int wxJoystick::GetPOVPosition(void) const -{ - return 0; -} - -int wxJoystick::GetPOVCTSPosition(void) const -{ - return 0; -} - -int wxJoystick::GetRudderPosition(void) const -{ - return m_axe[4]; -} - -int wxJoystick::GetUPosition(void) const -{ - return m_axe[5]; -} - -int wxJoystick::GetVPosition(void) const -{ - return m_axe[6]; -} - -int wxJoystick::GetMovementThreshold(void) const -{ - return 0; -} - -void wxJoystick::SetMovementThreshold(int threshold) -{ -} - -//////////////////////////////////////////////////////////////////////////// -// Capabilities -//////////////////////////////////////////////////////////////////////////// - -bool wxJoystick::IsOk(void) const -{ - return (m_joystick != -1); -} - -int wxJoystick::GetNumberJoysticks(void) const -{ - wxString dev_name; - int fd, j; - - for (j=0;j<2;j++) { - dev_name.Printf("/dev/js%d", j); - fd = open(dev_name, O_RDONLY); - if (fd == -1) - return j; - close(fd); - } - return j; -} - -int wxJoystick::GetManufacturerId(void) const -{ - return 0; -} - -int wxJoystick::GetProductId(void) const -{ - return 0; -} - -wxString wxJoystick::GetProductName(void) const -{ - return ""; -} - -int wxJoystick::GetXMin(void) const -{ - return JOYSTICK_AXE_MAX; -} - -int wxJoystick::GetYMin(void) const -{ - return JOYSTICK_AXE_MAX; -} - -int wxJoystick::GetZMin(void) const -{ - return JOYSTICK_AXE_MAX; -} - -int wxJoystick::GetXMax(void) const -{ - return JOYSTICK_AXE_MAX; -} - -int wxJoystick::GetYMax(void) const -{ - return JOYSTICK_AXE_MAX; -} - -int wxJoystick::GetZMax(void) const -{ - return JOYSTICK_AXE_MAX; -} - -int wxJoystick::GetNumberButtons(void) const -{ - int nb; - - ioctl(m_joystick, JSIOCGBUTTONS, &nb); - - return nb; -} - -int wxJoystick::GetNumberAxes(void) const -{ - int nb; - - ioctl(m_joystick, JSIOCGAXES, &nb); - - return nb; -} - -int wxJoystick::GetMaxButtons(void) const -{ - return 15; // internal -} - -int wxJoystick::GetMaxAxes(void) const -{ - return 15; // internal -} - -int wxJoystick::GetPollingMin(void) const -{ - return -1; -} - -int wxJoystick::GetPollingMax(void) const -{ - return -1; -} - -int wxJoystick::GetRudderMin(void) const -{ - return JOYSTICK_AXE_MIN; -} - -int wxJoystick::GetRudderMax(void) const -{ - return JOYSTICK_AXE_MAX; -} - -int wxJoystick::GetUMin(void) const -{ - return JOYSTICK_AXE_MIN; -} - -int wxJoystick::GetUMax(void) const -{ - return JOYSTICK_AXE_MAX; -} - -int wxJoystick::GetVMin(void) const -{ - return JOYSTICK_AXE_MIN; -} - -int wxJoystick::GetVMax(void) const -{ - return JOYSTICK_AXE_MAX; -} - -bool wxJoystick::HasRudder(void) const -{ - return GetNumberAxes() >= 4; -} - -bool wxJoystick::HasZ(void) const -{ - return GetNumberAxes() >= 3; -} - -bool wxJoystick::HasU(void) const -{ - return GetNumberAxes() >= 5; -} - -bool wxJoystick::HasV(void) const -{ - return GetNumberAxes() >= 6; -} - -bool wxJoystick::HasPOV(void) const -{ - return FALSE; -} - -bool wxJoystick::HasPOV4Dir(void) const -{ - return FALSE; -} - -bool wxJoystick::HasPOVCTS(void) const -{ - return FALSE; -} - -//////////////////////////////////////////////////////////////////////////// -// Operations -//////////////////////////////////////////////////////////////////////////// - -bool wxJoystick::SetCapture(wxWindow* win, int pollingFreq = 0) -{ - m_catchwin = win; - m_polling = pollingFreq; - return TRUE; -} - -bool wxJoystick::ReleaseCapture(void) -{ - m_catchwin = NULL; - m_polling = 0; - return TRUE; -} - diff --git a/src/gtk/listbox.cpp b/src/gtk/listbox.cpp deleted file mode 100644 index 6d6208d779..0000000000 --- a/src/gtk/listbox.cpp +++ /dev/null @@ -1,779 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: listbox.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifdef __GNUG__ -#pragma implementation "listbox.h" -#endif - -#include "wx/dynarray.h" -#include "wx/listbox.h" -#include "wx/utils.h" -#include "wx/intl.h" -#include "wx/checklst.h" -#include "wx/tooltip.h" - -#if wxUSE_DRAG_AND_DROP -#include "wx/dnd.h" -#endif - -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -//------------------------------------------------------------------------- -// conditional compilation -//------------------------------------------------------------------------- - -#if (GTK_MINOR_VERSION == 1) -#if (GTK_MICRO_VERSION >= 5) -#define NEW_GTK_SCROLL_CODE -#endif -#endif - -//----------------------------------------------------------------------------- -// data -//----------------------------------------------------------------------------- - -extern bool g_blockEventsOnDrag; -extern bool g_blockEventsOnScroll; - -//----------------------------------------------------------------------------- -// "button_press_event" -//----------------------------------------------------------------------------- - -static gint -gtk_listbox_button_press_callback( GtkWidget *widget, GdkEventButton *gdk_event, wxListBox *listbox ) -{ - if (g_blockEventsOnDrag) return FALSE; - if (g_blockEventsOnScroll) return FALSE; - - if (!listbox->HasVMT()) return FALSE; - - int sel = listbox->GetIndex( widget ); - - if ((listbox->m_hasCheckBoxes) && (gdk_event->x < 15) && (gdk_event->type != GDK_2BUTTON_PRESS)) - { - wxCheckListBox *clb = (wxCheckListBox *)listbox; - - clb->Check( sel, !clb->IsChecked(sel) ); - - wxCommandEvent event( wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, listbox->GetId() ); - event.SetEventObject( listbox ); - event.SetInt( sel ); - listbox->GetEventHandler()->ProcessEvent( event ); - } - - if (gdk_event->type == GDK_2BUTTON_PRESS) - { - wxCommandEvent event( wxEVT_COMMAND_LISTBOX_DOUBLECLICKED, listbox->GetId() ); - event.SetEventObject( listbox ); - - wxArrayInt aSelections; - int count = listbox->GetSelections(aSelections); - if ( count > 0 ) - { - event.m_commandInt = aSelections[0] ; - event.m_clientData = listbox->GetClientData( event.m_commandInt ); - wxString str(listbox->GetString(event.m_commandInt)); - if (str != "") event.m_commandString = copystring((char *)(const char *)str); - } - else - { - event.m_commandInt = -1 ; - event.m_commandString = copystring("") ; - } - - listbox->GetEventHandler()->ProcessEvent( event ); - - if (event.m_commandString) delete[] event.m_commandString ; - } - - return FALSE; -} - -//----------------------------------------------------------------------------- -// "key_press_event" -//----------------------------------------------------------------------------- - -static gint -gtk_listbox_key_press_callback( GtkWidget *widget, GdkEventKey *gdk_event, wxListBox *listbox ) -{ - if (g_blockEventsOnDrag) return FALSE; - - if (!listbox->HasVMT()) return FALSE; - - if (gdk_event->keyval != ' ') return FALSE; - - int sel = listbox->GetIndex( widget ); - - wxCheckListBox *clb = (wxCheckListBox *)listbox; - - clb->Check( sel, !clb->IsChecked(sel) ); - - wxCommandEvent event( wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, listbox->GetId() ); - event.SetEventObject( listbox ); - event.SetInt( sel ); - listbox->GetEventHandler()->ProcessEvent( event ); - - return FALSE; -} - -//----------------------------------------------------------------------------- -// "select" and "deselect" -//----------------------------------------------------------------------------- - -static void gtk_listitem_select_callback( GtkWidget *WXUNUSED(widget), wxListBox *listbox ) -{ - if (!listbox->HasVMT()) return; - if (g_blockEventsOnDrag) return; - - wxCommandEvent event(wxEVT_COMMAND_LISTBOX_SELECTED, listbox->GetId() ); - - wxArrayInt aSelections; - int count = listbox->GetSelections(aSelections); - if ( count > 0 ) - { - event.m_commandInt = aSelections[0] ; - event.m_clientData = listbox->GetClientData( event.m_commandInt ); - wxString str(listbox->GetString(event.m_commandInt)); - if (str != "") event.m_commandString = copystring((char *)(const char *)str); - } - else - { - event.m_commandInt = -1 ; - event.m_commandString = copystring("") ; - } - - event.SetEventObject( listbox ); - - listbox->GetEventHandler()->ProcessEvent( event ); - if (event.m_commandString) delete[] event.m_commandString ; -} - -//----------------------------------------------------------------------------- -// wxListBox -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxListBox,wxControl) - -wxListBox::wxListBox() -{ - m_list = (GtkList *) NULL; - m_hasCheckBoxes = FALSE; -} - -bool wxListBox::Create( wxWindow *parent, wxWindowID id, - const wxPoint &pos, const wxSize &size, - int n, const wxString choices[], - long style, const wxValidator& validator, const wxString &name ) -{ - m_needParent = TRUE; - m_acceptsFocus = TRUE; - - PreCreation( parent, id, pos, size, style, name ); - - SetValidator( validator ); - - m_widget = gtk_scrolled_window_new( (GtkAdjustment*) NULL, (GtkAdjustment*) NULL ); - gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW(m_widget), - GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC ); - - m_list = GTK_LIST( gtk_list_new() ); - - GtkSelectionMode mode = GTK_SELECTION_BROWSE; - if (style & wxLB_MULTIPLE) - mode = GTK_SELECTION_MULTIPLE; - else if (style & wxLB_EXTENDED) - mode = GTK_SELECTION_EXTENDED; - - gtk_list_set_selection_mode( GTK_LIST(m_list), mode ); - -#ifdef NEW_GTK_SCROLL_CODE - gtk_scrolled_window_add_with_viewport( GTK_SCROLLED_WINDOW(m_widget), GTK_WIDGET(m_list) ); -#else - gtk_container_add( GTK_CONTAINER(m_widget), GTK_WIDGET(m_list) ); -#endif - -#ifdef __WXDEBUG__ - debug_focus_in( m_widget, "wxListBox::m_widget", name ); - - debug_focus_in( GTK_WIDGET(m_list), "wxListBox::m_list", name ); - - GtkScrolledWindow *s_window = GTK_SCROLLED_WINDOW(m_widget); - - debug_focus_in( s_window->hscrollbar, "wxWindow::hsrcollbar", name ); - debug_focus_in( s_window->vscrollbar, "wxWindow::vsrcollbar", name ); - -#ifdef NEW_GTK_SCROLL_CODE - GtkViewport *viewport = GTK_VIEWPORT(s_window->child); -#else - GtkViewport *viewport = GTK_VIEWPORT(s_window->viewport); -#endif - - debug_focus_in( GTK_WIDGET(viewport), "wxWindow::viewport", name ); -#endif - - gtk_widget_show( GTK_WIDGET(m_list) ); - - wxSize newSize = size; - if (newSize.x == -1) newSize.x = 100; - if (newSize.y == -1) newSize.y = 110; - SetSize( newSize.x, newSize.y ); - - for (int i = 0; i < n; i++) - { - m_clientDataList.Append( (wxObject*) NULL ); - m_clientObjectList.Append( (wxObject*) NULL ); - - GtkWidget *list_item; - - if (m_hasCheckBoxes) - { - wxString str = "[-] "; - str += choices[i]; - list_item = gtk_list_item_new_with_label( str ); - } - else - { - list_item = gtk_list_item_new_with_label( choices[i] ); - } - -#ifdef __WXDEBUG__ - debug_focus_in( list_item, "wxListBox::list_item", name ); -#endif - - gtk_container_add( GTK_CONTAINER(m_list), list_item ); - - gtk_signal_connect( GTK_OBJECT(list_item), "select", - GTK_SIGNAL_FUNC(gtk_listitem_select_callback), (gpointer)this ); - - if (style & wxLB_MULTIPLE) - gtk_signal_connect( GTK_OBJECT(list_item), "deselect", - GTK_SIGNAL_FUNC(gtk_listitem_select_callback), (gpointer)this ); - - gtk_signal_connect( GTK_OBJECT(list_item), - "button_press_event", - (GtkSignalFunc)gtk_listbox_button_press_callback, - (gpointer) this ); - - if (m_hasCheckBoxes) - { - gtk_signal_connect( GTK_OBJECT(list_item), - "key_press_event", - (GtkSignalFunc)gtk_listbox_key_press_callback, - (gpointer)this ); - } - - ConnectWidget( list_item ); - - gtk_widget_show( list_item ); - } - - m_parent->AddChild( this ); - - (m_parent->m_insertCallback)( m_parent, this ); - - PostCreation(); - - gtk_widget_realize( GTK_WIDGET(m_list) ); - - SetBackgroundColour( parent->GetBackgroundColour() ); - SetForegroundColour( parent->GetForegroundColour() ); - - Show( TRUE ); - - return TRUE; -} - -wxListBox::~wxListBox() -{ - Clear(); -} - -void wxListBox::AppendCommon( const wxString &item ) -{ - wxCHECK_RET( m_list != NULL, "invalid listbox" ); - - GtkWidget *list_item; - - if (m_hasCheckBoxes) - { - wxString str = "[-] "; - str += item; - list_item = gtk_list_item_new_with_label( str ); - } - else - { - list_item = gtk_list_item_new_with_label( item ); - } - - gtk_signal_connect( GTK_OBJECT(list_item), "select", - GTK_SIGNAL_FUNC(gtk_listitem_select_callback), (gpointer)this ); - - if (GetWindowStyleFlag() & wxLB_MULTIPLE) - gtk_signal_connect( GTK_OBJECT(list_item), "deselect", - GTK_SIGNAL_FUNC(gtk_listitem_select_callback), (gpointer)this ); - - gtk_container_add( GTK_CONTAINER(m_list), list_item ); - - if (m_widgetStyle) ApplyWidgetStyle(); - - gtk_signal_connect( GTK_OBJECT(list_item), - "button_press_event", - (GtkSignalFunc)gtk_listbox_button_press_callback, - (gpointer) this ); - - if (m_hasCheckBoxes) - { - gtk_signal_connect( GTK_OBJECT(list_item), - "key_press_event", - (GtkSignalFunc)gtk_listbox_key_press_callback, - (gpointer)this ); - } - - gtk_widget_show( list_item ); - - ConnectWidget( list_item ); - -#if wxUSE_DRAG_AND_DROP -#ifndef NEW_GTK_DND_CODE - if (m_dropTarget) m_dropTarget->RegisterWidget( list_item ); -#endif -#endif - - if (m_toolTip) m_toolTip->Create( list_item ); -} - -void wxListBox::Append( const wxString &item ) -{ - m_clientDataList.Append( (wxObject*) NULL ); - m_clientObjectList.Append( (wxObject*) NULL ); - - AppendCommon( item ); -} - -void wxListBox::Append( const wxString &item, void *clientData ) -{ - m_clientDataList.Append( (wxObject*) clientData ); - m_clientObjectList.Append( (wxObject*) NULL ); - - AppendCommon( item ); -} - -void wxListBox::Append( const wxString &item, wxClientData *clientData ) -{ - m_clientObjectList.Append( (wxObject*) clientData ); - m_clientDataList.Append( (wxObject*) NULL ); - - AppendCommon( item ); -} - -void wxListBox::SetClientData( int n, void* clientData ) -{ - wxCHECK_RET( m_widget != NULL, "invalid combobox" ); - - wxNode *node = m_clientDataList.Nth( n ); - if (!node) return; - - node->SetData( (wxObject*) clientData ); -} - -void* wxListBox::GetClientData( int n ) -{ - wxCHECK_MSG( m_widget != NULL, NULL, "invalid combobox" ); - - wxNode *node = m_clientDataList.Nth( n ); - if (!node) return NULL; - - return node->Data(); -} - -void wxListBox::SetClientObject( int n, wxClientData* clientData ) -{ - wxCHECK_RET( m_widget != NULL, "invalid combobox" ); - - wxNode *node = m_clientObjectList.Nth( n ); - if (!node) return; - - wxClientData *cd = (wxClientData*) node->Data(); - if (cd) delete cd; - - node->SetData( (wxObject*) clientData ); -} - -wxClientData* wxListBox::GetClientObject( int n ) -{ - wxCHECK_MSG( m_widget != NULL, (wxClientData*)NULL, "invalid combobox" ); - - wxNode *node = m_clientObjectList.Nth( n ); - if (!node) return (wxClientData*) NULL; - - return (wxClientData*) node->Data(); -} - -void wxListBox::Clear() -{ - wxCHECK_RET( m_list != NULL, "invalid listbox" ); - - gtk_list_clear_items( m_list, 0, Number() ); - - wxNode *node = m_clientObjectList.First(); - while (node) - { - wxClientData *cd = (wxClientData*)node->Data(); - if (cd) delete cd; - node = node->Next(); - } - m_clientObjectList.Clear(); - - m_clientDataList.Clear(); -} - -void wxListBox::Delete( int n ) -{ - wxCHECK_RET( m_list != NULL, "invalid listbox" ); - - GList *child = g_list_nth( m_list->children, n ); - - wxCHECK_RET( child, "wrong listbox index" ); - - GList *list = g_list_append( (GList*) NULL, child->data ); - gtk_list_remove_items( m_list, list ); - g_list_free( list ); - - wxNode *node = m_clientObjectList.Nth( n ); - if (node) - { - wxClientData *cd = (wxClientData*)node->Data(); - if (cd) delete cd; - m_clientObjectList.DeleteNode( node ); - } - - node = m_clientDataList.Nth( n ); - if (node) - { - m_clientDataList.DeleteNode( node ); - } -} - -void wxListBox::Deselect( int n ) -{ - wxCHECK_RET( m_list != NULL, "invalid listbox" ); - - gtk_list_unselect_item( m_list, n ); -} - -int wxListBox::FindString( const wxString &item ) const -{ - wxCHECK_MSG( m_list != NULL, -1, "invalid listbox" ); - - GList *child = m_list->children; - int count = 0; - while (child) - { - GtkBin *bin = GTK_BIN( child->data ); - GtkLabel *label = GTK_LABEL( bin->child ); - - wxString str = label->label; - if (m_hasCheckBoxes) str.Remove( 0, 4 ); - - if (str == item) return count; - - count++; - child = child->next; - } - - // it's not an error if the string is not found -> no wxCHECK - - return -1; -} - -int wxListBox::GetSelection() const -{ - wxCHECK_MSG( m_list != NULL, -1, "invalid listbox" ); - - GList *child = m_list->children; - int count = 0; - while (child) - { - if (GTK_WIDGET(child->data)->state == GTK_STATE_SELECTED) return count; - count++; - child = child->next; - } - return -1; -} - -int wxListBox::GetSelections( wxArrayInt& aSelections ) const -{ - wxCHECK_MSG( m_list != NULL, -1, "invalid listbox" ); - - // get the number of selected items first - GList *child = m_list->children; - int count = 0; - for (child = m_list->children; child != NULL; child = child->next) - { - if (GTK_WIDGET(child->data)->state == GTK_STATE_SELECTED) - count++; - } - - aSelections.Empty(); - - if (count > 0) - { - // now fill the list - aSelections.Alloc(count); // optimization attempt - int i = 0; - for (child = m_list->children; child != NULL; child = child->next, i++) - { - if (GTK_WIDGET(child->data)->state == GTK_STATE_SELECTED) - aSelections.Add(i); - } - } - - return count; -} - -wxString wxListBox::GetString( int n ) const -{ - wxCHECK_MSG( m_list != NULL, "", "invalid listbox" ); - - GList *child = g_list_nth( m_list->children, n ); - if (child) - { - GtkBin *bin = GTK_BIN( child->data ); - GtkLabel *label = GTK_LABEL( bin->child ); - - wxString str = label->label; - if (m_hasCheckBoxes) str.Remove( 0, 4 ); - - return str; - } - wxFAIL_MSG("wrong listbox index"); - return ""; -} - -wxString wxListBox::GetStringSelection() const -{ - wxCHECK_MSG( m_list != NULL, "", "invalid listbox" ); - - GList *selection = m_list->selection; - if (selection) - { - GtkBin *bin = GTK_BIN( selection->data ); - GtkLabel *label = GTK_LABEL( bin->child ); - - wxString str = label->label; - if (m_hasCheckBoxes) str.Remove( 0, 4 ); - - return str; - } - - wxFAIL_MSG("no listbox selection available"); - return ""; -} - -int wxListBox::Number() -{ - wxCHECK_MSG( m_list != NULL, -1, "invalid listbox" ); - - GList *child = m_list->children; - int count = 0; - while (child) { count++; child = child->next; } - return count; -} - -bool wxListBox::Selected( int n ) -{ - wxCHECK_MSG( m_list != NULL, FALSE, "invalid listbox" ); - - GList *target = g_list_nth( m_list->children, n ); - if (target) - { - GList *child = m_list->selection; - while (child) - { - if (child->data == target->data) return TRUE; - child = child->next; - } - } - wxFAIL_MSG("wrong listbox index"); - return FALSE; -} - -void wxListBox::Set( int WXUNUSED(n), const wxString *WXUNUSED(choices) ) -{ - wxFAIL_MSG("wxListBox::Set not implemented"); -} - -void wxListBox::SetFirstItem( int WXUNUSED(n) ) -{ - wxFAIL_MSG("wxListBox::SetFirstItem not implemented"); -} - -void wxListBox::SetFirstItem( const wxString &WXUNUSED(item) ) -{ - wxFAIL_MSG("wxListBox::SetFirstItem not implemented"); -} - -void wxListBox::SetSelection( int n, bool select ) -{ - wxCHECK_RET( m_list != NULL, "invalid listbox" ); - - if (select) - gtk_list_select_item( m_list, n ); - else - gtk_list_unselect_item( m_list, n ); -} - -void wxListBox::SetString( int n, const wxString &string ) -{ - wxCHECK_RET( m_list != NULL, "invalid listbox" ); - - GList *child = g_list_nth( m_list->children, n ); - if (child) - { - GtkBin *bin = GTK_BIN( child->data ); - GtkLabel *label = GTK_LABEL( bin->child ); - - wxString str; - if (m_hasCheckBoxes) str += "[-] "; - str += string; - - gtk_label_set( label, str ); - } - else - { - wxFAIL_MSG("wrong listbox index"); - } -} - -void wxListBox::SetStringSelection( const wxString &string, bool select ) -{ - wxCHECK_RET( m_list != NULL, "invalid listbox" ); - - SetSelection( FindString(string), select ); -} - -int wxListBox::GetIndex( GtkWidget *item ) const -{ - if (item) - { - GList *child = m_list->children; - int count = 0; - while (child) - { - if (GTK_WIDGET(child->data) == item) return count; - count++; - child = child->next; - } - } - return -1; -} - -void wxListBox::SetToolTip( const wxString &tip ) -{ - SetToolTip( new wxToolTip( tip ) ); -} - -void wxListBox::SetToolTip( wxToolTip *tip ) -{ - if (m_toolTip) delete m_toolTip; - - m_toolTip = tip; - - if (!tip) return; - - m_toolTip->Create( GTK_WIDGET(m_list) ); /* this has no effect */ - - GList *child = m_list->children; - while (child) - { - m_toolTip->Create( GTK_WIDGET( child->data ) ); - child = child->next; - } -} - -#if wxUSE_DRAG_AND_DROP -void wxListBox::SetDropTarget( wxDropTarget *dropTarget ) -{ - wxCHECK_RET( m_list != NULL, "invalid listbox" ); - -#ifndef NEW_GTK_DND_CODE - if (m_dropTarget) - { - GList *child = m_list->children; - while (child) - { - m_dropTarget->UnregisterWidget( GTK_WIDGET( child->data ) ); - child = child->next; - } - } -#endif - - wxWindow::SetDropTarget( dropTarget ); - -#ifndef NEW_GTK_DND_CODE - if (m_dropTarget) - { - GList *child = m_list->children; - while (child) - { - m_dropTarget->RegisterWidget( GTK_WIDGET( child->data ) ); - child = child->next; - } - } -#endif -} -#endif - -GtkWidget *wxListBox::GetConnectWidget() -{ - return GTK_WIDGET(m_list); -} - -bool wxListBox::IsOwnGtkWindow( GdkWindow *window ) -{ - if (wxWindow::IsOwnGtkWindow( window )) return TRUE; - - GList *child = m_list->children; - while (child) - { - GtkWidget *bin = GTK_WIDGET( child->data ); - if (bin->window == window) return TRUE; - child = child->next; - } - - return FALSE; -} - -void wxListBox::ApplyWidgetStyle() -{ - SetWidgetStyle(); - - if (m_backgroundColour.Ok()) - { - GdkWindow *window = GTK_WIDGET(m_list)->window; - m_backgroundColour.CalcPixel( gdk_window_get_colormap( window ) ); - gdk_window_set_background( window, m_backgroundColour.GetColor() ); - gdk_window_clear( window ); - } - - GList *child = m_list->children; - while (child) - { - gtk_widget_set_style( GTK_WIDGET(child->data), m_widgetStyle ); - - GtkBin *bin = GTK_BIN( child->data ); - GtkWidget *label = GTK_WIDGET( bin->child ); - gtk_widget_set_style( label, m_widgetStyle ); - - child = child->next; - } -} - diff --git a/src/gtk/main.cpp b/src/gtk/main.cpp deleted file mode 100644 index a6ea36c74e..0000000000 --- a/src/gtk/main.cpp +++ /dev/null @@ -1,29 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: main.cpp -// Purpose: Entry point -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#include "wx/app.h" - -int wxEntry(int argc, char *argv[]); - - -#if defined(AIX) || defined(AIX4) || defined(____HPUX__) || defined(NOMAIN) - - // main in IMPLEMENT_WX_MAIN in IMPLEMENT_APP in app.h - -#else - - -int main(int argc, char* argv[]) -{ - return wxEntry(argc, argv); -} - -#endif diff --git a/src/gtk/makefile.unx b/src/gtk/makefile.unx deleted file mode 100644 index ae5fd90f3c..0000000000 --- a/src/gtk/makefile.unx +++ /dev/null @@ -1,218 +0,0 @@ -# -# File: makefile.unx -# Author: Robert Roebling -# Created: 1998 -# Updated: -# Copyright: (c) 1998 -# -# -# Makefile for wxGtk library, Unix - -EXTRACFLAGS=-DLEX_SCANNER - -include ../make.env - -LIB_CPP_SRC=\ -\ - ../common/cmndata.cpp \ - ../common/config.cpp \ - ../common/date.cpp \ - ../common/docmdi.cpp \ - ../common/docview.cpp \ - ../common/dynarray.cpp \ - ../common/dynlib.cpp \ - ../common/event.cpp \ - ../common/file.cpp \ - ../common/fileconf.cpp \ - ../common/filefn.cpp \ - ../common/gdicmn.cpp \ - ../common/hash.cpp \ - ../common/helpbase.cpp \ - ../common/intl.cpp \ - ../common/image.cpp \ - ../common/ipcbase.cpp \ - ../common/layout.cpp \ - ../common/list.cpp \ - ../common/log.cpp \ - ../common/matrix.cpp \ - ../common/memory.cpp \ - ../common/module.cpp \ - ../common/object.cpp \ - ../common/odbc.cpp \ - ../common/postscrp.cpp \ - ../common/prntbase.cpp \ - ../common/resource.cpp \ - ../common/serbase.cpp \ - ../common/string.cpp \ - ../common/textfile.cpp \ - ../common/time.cpp \ - ../common/timercmn.cpp \ - ../common/utilscmn.cpp \ - ../common/wincmn.cpp \ - ../common/framecmn.cpp \ - ../common/stream.cpp \ - ../common/datstrm.cpp \ - ../common/wfstream.cpp \ - ../common/mstream.cpp \ - ../common/zstream.cpp \ - ../common/objstrm.cpp \ - ../common/sckstrm.cpp \ - ../common/validate.cpp \ - ../common/valtext.cpp \ - ../common/variant.cpp \ - ../common/wxexpr.cpp \ - ../common/socket.cpp \ - ../common/sckaddr.cpp \ - ../common/sckipc.cpp \ - ../common/protocol.cpp \ - ../common/ftp.cpp \ - ../common/http.cpp \ - ../common/url.cpp \ - ../common/tokenzr.cpp \ -\ - accel.cpp \ - app.cpp \ - bitmap.cpp \ - bmpbuttn.cpp \ - brush.cpp \ - button.cpp \ - checkbox.cpp \ - checklst.cpp \ - choice.cpp \ - clipbrd.cpp \ - colour.cpp \ - control.cpp \ - combobox.cpp \ - cursor.cpp \ - data.cpp \ - dataobj.cpp \ - dc.cpp \ - dcclient.cpp \ - dcmemory.cpp \ - dcscreen.cpp \ - dcps.cpp \ - dialog.cpp \ - dnd.cpp \ - filedlg.cpp \ - font.cpp \ - frame.cpp \ - gauge.cpp \ - gdiobj.cpp \ - icon.cpp \ - listbox.cpp \ - main.cpp \ - mdi.cpp \ - menu.cpp \ - minifram.cpp \ - notebook.cpp \ - palette.cpp \ - pen.cpp \ - radiobox.cpp \ - radiobut.cpp \ - region.cpp \ - scrolbar.cpp \ - settings.cpp \ - slider.cpp \ - spinbutt.cpp \ - statbox.cpp \ - statbmp.cpp \ - stattext.cpp \ - tbargtk.cpp \ - threadpsx.cpp \ - textctrl.cpp \ - timer.cpp \ - utilsgtk.cpp \ - utilsres.cpp \ - wave.cpp \ - window.cpp \ -\ - ../generic/choicdgg.cpp \ - ../generic/colrdlgg.cpp \ - ../generic/dirdlgg.cpp \ - ../generic/fontdlgg.cpp \ - ../generic/gridg.cpp \ - ../generic/helpext.cpp \ - ../generic/imaglist.cpp \ - ../generic/listctrl.cpp \ - ../generic/laywin.cpp \ - ../generic/msgdlgg.cpp \ - ../generic/panelg.cpp \ - ../generic/printps.cpp \ - ../generic/prntdlgg.cpp \ - ../generic/sashwin.cpp \ - ../generic/scrolwin.cpp \ - ../generic/splitter.cpp \ - ../generic/statusbr.cpp \ - ../generic/tabg.cpp \ - ../generic/textdlgg.cpp \ - ../generic/treectrl.cpp - - -ZLIB_SRC=\ - ../zlib/adler32.c ../zlib/deflate.c ../zlib/infblock.c\ - ../zlib/inflate.c ../zlib/zutil.c ../zlib/compress.c \ - ../zlib/infcodes.c ../zlib/inftrees.c ../zlib/trees.c \ - ../zlib/crc32.c ../zlib/gzio.c ../zlib/inffast.c\ - ../zlib/infutil.c ../zlib/uncompr.c - -PNG_SRC=\ - ../png/png.c \ - ../png/pngset.c \ - ../png/pngget.c \ - ../png/pngrutil.c \ - ../png/pngtrans.c \ - ../png/pngwutil.c \ - ../png/pngread.c \ - ../png/pngrio.c \ - ../png/pngwio.c \ - ../png/pngwrite.c \ - ../png/pngrtran.c \ - ../png/pngwtran.c \ - ../png/pngmem.c \ - ../png/pngerror.c \ - ../png/pngpread.c - -LIB_C_SRC=\ -\ - win_gtk.c \ - ../common/y_tab.c \ - ../common/extended.c - -# Only need to compile zlib files if we don't -# already have a zlib library installed on our system -# (or we wish to statically link them for some reason) -EXTRA_C_SRC=\ - $(ZLIB_SRC) $(PNG_SRC) - -all: $(WXLIB) - -# Define library objects -OBJECTS=\ - $(LIB_CPP_SRC:.cpp=.o) $(LIB_C_SRC:.c=.o) $(EXTRA_C_SRC:.c=.o) - -$(WXLIB) : $(OBJECTS) - ar $(AROPTIONS) $@ $(OBJECTS) - $(RANLIB) $@ - -../common/y_tab.$(OBJSUFF): ../common/y_tab.c ../common/lex_yy.c - $(CCLEX) -c $(CFLAGS) -DNO_CONFIGURE -o $@ ../common/y_tab.c - -# Replace lex with flex if you run into compilation -# problems with lex_yy.c. See also note about LEX_SCANNER -# above. -../common/lex_yy.c: ../common/lexer.l - $(LEX) -o../common/lex.yy.c ../common/lexer.l - sed -e "s/BUFSIZ/5000/g" < ../common/lex.yy.c | \ - sed -e "s/yyoutput(c)/void yyoutput(c)/g" | \ - sed -e "s/YYLMAX 200/YYLMAX 5000/g" > ../common/lex_yy.c - /bin/rm -f ../common/lex.yy.c - -# Replace yacc with bison if you run into compilation -# problems with y_tab.c. -../common/y_tab.c: ../common/parser.y - $(YACC) ../common/parser.y - mv y.tab.c ../common/y_tab.c - -clean: - rm -f $(OBJECTS) $(WXLIB) - diff --git a/src/gtk/mdi.cpp b/src/gtk/mdi.cpp deleted file mode 100644 index cd4c7355f4..0000000000 --- a/src/gtk/mdi.cpp +++ /dev/null @@ -1,378 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: mdi.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "mdi.h" -#endif - -#include "wx/mdi.h" -#include "wx/dialog.h" -#include "wx/menu.h" -#include - -#include "glib.h" -#include "gdk/gdk.h" -#include "gtk/gtk.h" -#include "wx/gtk/win_gtk.h" - -//----------------------------------------------------------------------------- -// constants -//----------------------------------------------------------------------------- - -const int wxMENU_HEIGHT = 27; - -//----------------------------------------------------------------------------- -// globals -//----------------------------------------------------------------------------- - -extern wxList wxPendingDelete; - -//----------------------------------------------------------------------------- -// "size_allocate" -//----------------------------------------------------------------------------- - -static void gtk_page_size_callback( GtkWidget *WXUNUSED(widget), GtkAllocation* alloc, wxWindow *win ) -{ - if ((win->m_x == alloc->x) && - (win->m_y == alloc->y) && - (win->m_width == alloc->width) && - (win->m_height == alloc->height) && - (win->m_sizeSet)) - { - return; - } - - win->SetSize( alloc->x, alloc->y, alloc->width, alloc->height ); -} - -//----------------------------------------------------------------------------- -// page change callback -//----------------------------------------------------------------------------- - -static void gtk_page_change_callback( GtkNotebook *WXUNUSED(widget), - GtkNotebookPage *page, - gint WXUNUSED(nPage), - wxMDIClientWindow *client_win ) -{ - wxNode *node = client_win->m_children.First(); - while (node) - { - wxMDIChildFrame *child_frame = (wxMDIChildFrame *)node->Data(); - if (child_frame->m_page == page) - { - wxMDIParentFrame *mdi_frame = (wxMDIParentFrame*)client_win->m_parent; - mdi_frame->m_currentChild = child_frame; - mdi_frame->SetMDIMenuBar( child_frame->m_menuBar ); - return; - } - node = node->Next(); - } -} - -//----------------------------------------------------------------------------- -// wxMDIParentFrame -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxMDIParentFrame,wxFrame) - -BEGIN_EVENT_TABLE(wxMDIParentFrame, wxFrame) -END_EVENT_TABLE() - -wxMDIParentFrame::wxMDIParentFrame(void) -{ - m_clientWindow = (wxMDIClientWindow *) NULL; - m_currentChild = (wxMDIChildFrame *) NULL; - m_parentFrameActive = TRUE; -} - -wxMDIParentFrame::wxMDIParentFrame( wxWindow *parent, - wxWindowID id, const wxString& title, - const wxPoint& pos, const wxSize& size, - long style, const wxString& name ) -{ - m_clientWindow = (wxMDIClientWindow *) NULL; - m_currentChild = (wxMDIChildFrame *) NULL; - m_parentFrameActive = TRUE; - Create( parent, id, title, pos, size, style, name ); -} - -wxMDIParentFrame::~wxMDIParentFrame(void) -{ -} - -bool wxMDIParentFrame::Create( wxWindow *parent, - wxWindowID id, const wxString& title, - const wxPoint& pos, const wxSize& size, - long style, const wxString& name ) -{ - wxFrame::Create( parent, id, title, pos, size, style, name ); - - OnCreateClient(); - - return TRUE; -} - -void wxMDIParentFrame::GtkOnSize( int x, int y, int width, int height ) -{ - wxFrame::GtkOnSize( x, y, width, height ); - - if (m_mdiMenuBar) - { - m_mdiMenuBar->m_x = 0; - m_mdiMenuBar->m_y = 0; - m_mdiMenuBar->m_width = m_width; - m_mdiMenuBar->m_height = wxMENU_HEIGHT; - gtk_myfixed_move( GTK_MYFIXED(m_wxwindow), m_mdiMenuBar->m_widget, 0, 0 ); - gtk_widget_set_usize( m_mdiMenuBar->m_widget, m_width, wxMENU_HEIGHT ); - } -} - -void wxMDIParentFrame::SetMDIMenuBar( wxMenuBar *menu_bar ) -{ - if (m_mdiMenuBar) m_mdiMenuBar->Show( FALSE ); - m_mdiMenuBar = menu_bar; - if (m_mdiMenuBar) - { - m_mdiMenuBar->m_x = 0; - m_mdiMenuBar->m_y = 0; - m_mdiMenuBar->m_width = m_width; - m_mdiMenuBar->m_height = wxMENU_HEIGHT; - gtk_myfixed_move( GTK_MYFIXED(m_wxwindow), m_mdiMenuBar->m_widget, 0, 0 ); - gtk_widget_set_usize( m_mdiMenuBar->m_widget, m_width, wxMENU_HEIGHT ); - m_mdiMenuBar->Show( TRUE ); - } -} - -void wxMDIParentFrame::GetClientSize(int *width, int *height ) const -{ - wxFrame::GetClientSize( width, height ); -} - -wxMDIChildFrame *wxMDIParentFrame::GetActiveChild(void) const -{ - return m_currentChild; -} - -wxMDIClientWindow *wxMDIParentFrame::GetClientWindow(void) const -{ - return m_clientWindow; -} - -wxMDIClientWindow *wxMDIParentFrame::OnCreateClient(void) -{ - m_clientWindow = new wxMDIClientWindow( this ); - return m_clientWindow; -} - -void wxMDIParentFrame::ActivateNext(void) -{ - if (m_clientWindow) - gtk_notebook_next_page( GTK_NOTEBOOK(m_clientWindow->m_widget) ); -} - -void wxMDIParentFrame::ActivatePrevious(void) -{ - if (m_clientWindow) - gtk_notebook_prev_page( GTK_NOTEBOOK(m_clientWindow->m_widget) ); -} - -void wxMDIParentFrame::OnActivate( wxActivateEvent& WXUNUSED(event) ) -{ -} - -void wxMDIParentFrame::OnSysColourChanged( wxSysColourChangedEvent& WXUNUSED(event) ) -{ -} - -//----------------------------------------------------------------------------- -// wxMDIChildFrame -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxMDIChildFrame,wxFrame) - -BEGIN_EVENT_TABLE(wxMDIChildFrame, wxFrame) - EVT_ACTIVATE(wxMDIChildFrame::OnActivate) -END_EVENT_TABLE() - -wxMDIChildFrame::wxMDIChildFrame(void) -{ - m_menuBar = (wxMenuBar *) NULL; - m_page = (GtkNotebookPage *) NULL; -} - -wxMDIChildFrame::wxMDIChildFrame( wxMDIParentFrame *parent, - wxWindowID id, const wxString& title, - const wxPoint& WXUNUSED(pos), const wxSize& size, - long style, const wxString& name ) -{ - m_menuBar = (wxMenuBar *) NULL; - m_page = (GtkNotebookPage *) NULL; - Create( parent, id, title, wxDefaultPosition, size, style, name ); -} - -wxMDIChildFrame::~wxMDIChildFrame(void) -{ - if (m_menuBar) - { - wxMDIParentFrame *mdi_frame = (wxMDIParentFrame*)m_parent->m_parent; - if (mdi_frame->m_currentChild == this) - { - mdi_frame->SetMDIMenuBar( (wxMenuBar *) NULL ); - mdi_frame->m_currentChild = (wxMDIChildFrame *) NULL; - } - delete m_menuBar; - } -} - -bool wxMDIChildFrame::Create( wxMDIParentFrame *parent, - wxWindowID id, const wxString& title, - const wxPoint& WXUNUSED(pos), const wxSize& size, - long style, const wxString& name ) -{ - m_title = title; - - return wxWindow::Create( parent->GetClientWindow(), id, wxDefaultPosition, size, style, name ); -} - -void wxMDIChildFrame::GetClientSize( int *width, int *height ) const -{ - wxWindow::GetClientSize( width, height ); -} - -void wxMDIChildFrame::AddChild( wxWindow *child ) -{ - wxWindow::AddChild( child ); -} - -static void SetInvokingWindow( wxMenu *menu, wxWindow *win ) -{ - menu->SetInvokingWindow( win ); - wxNode *node = menu->m_items.First(); - while (node) - { - wxMenuItem *menuitem = (wxMenuItem*)node->Data(); - if (menuitem->IsSubMenu()) - SetInvokingWindow( menuitem->GetSubMenu(), win ); - node = node->Next(); - } -} - -void wxMDIChildFrame::SetMenuBar( wxMenuBar *menu_bar ) -{ - m_menuBar = menu_bar; - - if (m_menuBar) - { - wxMDIParentFrame *mdi_frame = (wxMDIParentFrame*)m_parent->m_parent; - - if (m_menuBar->m_parent != this) - { - wxNode *node = m_menuBar->m_menus.First(); - while (node) - { - wxMenu *menu = (wxMenu*)node->Data(); - SetInvokingWindow( menu, this ); - node = node->Next(); - } - - m_menuBar->m_parent = mdi_frame; - } - mdi_frame->SetMDIMenuBar( m_menuBar ); - - gtk_myfixed_put( GTK_MYFIXED(mdi_frame->m_wxwindow), - m_menuBar->m_widget, m_menuBar->m_x, m_menuBar->m_y ); - } -} - -wxMenuBar *wxMDIChildFrame::GetMenuBar() -{ - return m_menuBar; -} - -void wxMDIChildFrame::Activate(void) -{ -} - -void wxMDIChildFrame::OnActivate( wxActivateEvent &WXUNUSED(event) ) -{ -} - -//----------------------------------------------------------------------------- -// InsertChild callback for wxMDIClientWindow -//----------------------------------------------------------------------------- - -static void wxInsertChildInMDI( wxMDIClientWindow* parent, wxMDIChildFrame* child ) -{ - wxString s = child->m_title; - if (s.IsNull()) s = _("MDI child"); - - GtkWidget *label_widget = gtk_label_new( s ); - gtk_misc_set_alignment( GTK_MISC(label_widget), 0.0, 0.5 ); - - gtk_signal_connect( GTK_OBJECT(child->m_widget), "size_allocate", - GTK_SIGNAL_FUNC(gtk_page_size_callback), (gpointer)child ); - - GtkNotebook *notebook = GTK_NOTEBOOK(parent->m_widget); - - gtk_notebook_append_page( notebook, child->m_widget, label_widget ); - - child->m_page = (GtkNotebookPage*) (g_list_last(notebook->children)->data); - - gtk_notebook_set_page( notebook, parent->m_children.Number()-1 ); - - gtk_page_change_callback( (GtkNotebook *) NULL, child->m_page, 0, parent ); -} - -//----------------------------------------------------------------------------- -// wxMDIClientWindow -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxMDIClientWindow,wxWindow) - -wxMDIClientWindow::wxMDIClientWindow(void) -{ -} - -wxMDIClientWindow::wxMDIClientWindow( wxMDIParentFrame *parent, long style ) -{ - CreateClient( parent, style ); -} - -wxMDIClientWindow::~wxMDIClientWindow(void) -{ -} - -bool wxMDIClientWindow::CreateClient( wxMDIParentFrame *parent, long style ) -{ - m_needParent = TRUE; - - m_insertCallback = (wxInsertChildFunction)wxInsertChildInMDI; - - PreCreation( parent, -1, wxPoint(10,10), wxSize(100,100), style, "wxMDIClientWindow" ); - - m_widget = gtk_notebook_new(); - - gtk_signal_connect( GTK_OBJECT(m_widget), "switch_page", - GTK_SIGNAL_FUNC(gtk_page_change_callback), (gpointer)this ); - - gtk_notebook_set_scrollable( GTK_NOTEBOOK(m_widget), 1 ); - - m_parent->AddChild( this ); - - (m_parent->m_insertCallback)( m_parent, this ); - - PostCreation(); - - Show( TRUE ); - - return TRUE; -} - - - diff --git a/src/gtk/menu.cpp b/src/gtk/menu.cpp deleted file mode 100644 index 27173bba72..0000000000 --- a/src/gtk/menu.cpp +++ /dev/null @@ -1,595 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: menu.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "menu.h" -#pragma implementation "menuitem.h" -#endif - -#include "wx/menu.h" -#include "wx/log.h" -#include "wx/intl.h" -#include "wx/app.h" - -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -//----------------------------------------------------------------------------- -// wxMenuBar -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxMenuBar,wxWindow) - -wxMenuBar::wxMenuBar() -{ - m_needParent = FALSE; // hmmm - - PreCreation( (wxWindow *) NULL, -1, wxDefaultPosition, wxDefaultSize, 0, "menu" ); - - m_menus.DeleteContents( TRUE ); - - m_menubar = gtk_menu_bar_new(); - - m_widget = GTK_WIDGET(m_menubar); - - PostCreation(); - - Show( TRUE ); -} - -void wxMenuBar::Append( wxMenu *menu, const wxString &title ) -{ - m_menus.Append( menu ); - menu->m_title = title; - - int pos; - do - { - pos = menu->m_title.First( '&' ); - if (pos != -1) menu->m_title.Remove( pos, 1 ); - } while (pos != -1); - - menu->m_owner = gtk_menu_item_new_with_label( WXSTRINGCAST(menu->m_title) ); - gtk_widget_show( menu->m_owner ); - gtk_menu_item_set_submenu( GTK_MENU_ITEM(menu->m_owner), menu->m_menu ); - - gtk_menu_bar_append( GTK_MENU_BAR(m_menubar), menu->m_owner ); -} - -static int FindMenuItemRecursive( const wxMenu *menu, const wxString &menuString, const wxString &itemString ) -{ - if (menu->m_title == menuString) - { - int res = menu->FindItem( itemString ); - if (res != -1) return res; - } - - wxNode *node = menu->m_items.First(); - while (node) - { - wxMenuItem *item = (wxMenuItem*)node->Data(); - if (item->IsSubMenu()) - return FindMenuItemRecursive(item->GetSubMenu(), menuString, itemString); - - node = node->Next(); - } - - return -1; -} - -int wxMenuBar::FindMenuItem( const wxString &menuString, const wxString &itemString ) const -{ - wxNode *node = m_menus.First(); - while (node) - { - wxMenu *menu = (wxMenu*)node->Data(); - int res = FindMenuItemRecursive( menu, menuString, itemString); - if (res != -1) return res; - node = node->Next(); - } - return -1; -} - -/* Find a wxMenuItem using its id. Recurses down into sub-menus */ -static wxMenuItem* FindMenuItemByIdRecursive(const wxMenu* menu, int id) -{ - wxMenuItem* result = menu->FindItem(id); - - wxNode *node = menu->m_items.First(); - while ( node && result == NULL ) - { - wxMenuItem *item = (wxMenuItem*)node->Data(); - if (item->IsSubMenu()) - { - result = FindMenuItemByIdRecursive( item->GetSubMenu(), id ); - } - node = node->Next(); - } - - return result; -} - -wxMenuItem* wxMenuBar::FindMenuItemById( int id ) const -{ - wxMenuItem* result = 0; - wxNode *node = m_menus.First(); - while (node && result == 0) - { - wxMenu *menu = (wxMenu*)node->Data(); - result = FindMenuItemByIdRecursive( menu, id ); - node = node->Next(); - } - - return result; -} - -void wxMenuBar::Check( int id, bool check ) -{ - wxMenuItem* item = FindMenuItemById( id ); - if (item) item->Check(check); -} - -bool wxMenuBar::Checked( int id ) const -{ - wxMenuItem* item = FindMenuItemById( id ); - if (item) return item->IsChecked(); - return FALSE; -} - -void wxMenuBar::Enable( int id, bool enable ) -{ - wxMenuItem* item = FindMenuItemById( id ); - if (item) item->Enable(enable); -} - -bool wxMenuBar::Enabled( int id ) const -{ - wxMenuItem* item = FindMenuItemById( id ); - if (item) return item->IsEnabled(); - return FALSE; -} - -wxString wxMenuBar::GetLabel( int id ) const -{ - wxMenuItem* item = FindMenuItemById( id ); - - if (item) return item->GetText(); - - return ""; -} - -void wxMenuBar::SetLabel( int id, const wxString &label ) -{ - wxMenuItem* item = FindMenuItemById( id ); - - if (item) item->SetText( label ); -} - -void wxMenuBar::EnableTop( int pos, bool flag ) -{ - wxNode *node = m_menus.Nth( pos ); - - wxCHECK_RET( node, "menu not found" ); - - wxMenu* menu = (wxMenu*)node->Data(); - - if (menu->m_owner) gtk_widget_set_sensitive( menu->m_owner, flag ); -} - -wxString wxMenuBar::GetLabelTop( int pos ) const -{ - wxNode *node = m_menus.Nth( pos ); - - wxCHECK_MSG( node, "invalid", "menu not found" ); - - wxMenu* menu = (wxMenu*)node->Data(); - - return menu->GetTitle(); -} - -void wxMenuBar::SetLabelTop( int pos, const wxString& label ) -{ - wxNode *node = m_menus.Nth( pos ); - - wxCHECK_RET( node, "menu not found" ); - - wxMenu* menu = (wxMenu*)node->Data(); - - menu->SetTitle( label ); -} - -//----------------------------------------------------------------------------- -// "activate" -//----------------------------------------------------------------------------- - -static void gtk_menu_clicked_callback( GtkWidget *widget, wxMenu *menu ) -{ - int id = menu->FindMenuIdByMenuItem(widget); - - /* should find it for normal (not popup) menu */ - wxASSERT( (id != -1) || (menu->GetInvokingWindow() != NULL) ); - - if (!menu->IsEnabled(id)) return; - - wxMenuItem* item = menu->FindItem( id ); - wxCHECK_RET( item, "error in menu item callback" ); - - if (item->m_isCheckMenu) - { - if (item->m_isChecked == item->IsChecked()) - { - /* the menu item has been checked by calling wxMenuItem->Check() */ - return; - } - else - { - /* the user pressed on the menu item -> report */ - item->m_isChecked = item->IsChecked(); /* make consistent again */ - } - } - - wxCommandEvent event( wxEVT_COMMAND_MENU_SELECTED, id ); - event.SetEventObject( menu ); - event.SetInt(id ); - - if (menu->m_callback) - { - (void) (*(menu->m_callback)) (*menu, event); - return; - } - - if (menu->GetEventHandler()->ProcessEvent(event)) return; - - wxWindow *win = menu->GetInvokingWindow(); - if (win) win->GetEventHandler()->ProcessEvent( event ); -} - -//----------------------------------------------------------------------------- -// "select" -//----------------------------------------------------------------------------- - -static void gtk_menu_hilight_callback( GtkWidget *widget, wxMenu *menu ) -{ - int id = menu->FindMenuIdByMenuItem(widget); - - wxASSERT( id != -1 ); // should find it! - - if (!menu->IsEnabled(id)) return; - - wxCommandEvent event( wxEVT_MENU_HIGHLIGHT, id ); - event.SetEventObject( menu ); - event.SetInt(id ); - -/* wxMSW doesn't call callback here either - - if (menu->m_callback) - { - (void) (*(menu->m_callback)) (*menu, event); - return; - } -*/ - - if (menu->GetEventHandler()->ProcessEvent(event)) return; - - wxWindow *win = menu->GetInvokingWindow(); - if (win) win->GetEventHandler()->ProcessEvent( event ); -} - -//----------------------------------------------------------------------------- -// wxMenuItem -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxMenuItem,wxObject) - -wxMenuItem::wxMenuItem() -{ - m_id = ID_SEPARATOR; - m_isCheckMenu = FALSE; - m_isChecked = FALSE; - m_isEnabled = TRUE; - m_subMenu = (wxMenu *) NULL; - m_menuItem = (GtkWidget *) NULL; -} - -/* it's valid for this function to be called even if m_menuItem == NULL */ -void wxMenuItem::SetName( const wxString& str ) -{ - m_text = ""; - for ( const char *pc = str; *pc != '\0'; pc++ ) - { - if (*pc == '&') pc++; /* skip it */ - m_text << *pc; - } - - if (m_menuItem) - { - GtkLabel *label = GTK_LABEL( GTK_BIN(m_menuItem)->child ); - gtk_label_set( label, m_text.c_str()); - } -} - -void wxMenuItem::Check( bool check ) -{ - wxCHECK_RET( m_menuItem, "invalid menu item" ); - - wxCHECK_RET( IsCheckable(), "Can't check uncheckable item!" ) - - if (check == m_isChecked) return; - - m_isChecked = check; - gtk_check_menu_item_set_state( (GtkCheckMenuItem*)m_menuItem, (gint)check ); -} - -void wxMenuItem::Enable( bool enable ) -{ - wxCHECK_RET( m_menuItem, "invalid menu item" ); - - gtk_widget_set_sensitive( m_menuItem, enable ); - m_isEnabled = enable; -} - -bool wxMenuItem::IsChecked() const -{ - wxCHECK_MSG( m_menuItem, FALSE, "invalid menu item" ); - - wxCHECK( IsCheckable(), FALSE ); // can't get state of uncheckable item! - - bool bIsChecked = ((GtkCheckMenuItem*)m_menuItem)->active != 0; - - return bIsChecked; -} - -//----------------------------------------------------------------------------- -// wxMenu -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxMenu,wxEvtHandler) - -wxMenu::wxMenu( const wxString& title, const wxFunction func ) -{ - m_title = title; - m_items.DeleteContents( TRUE ); - m_invokingWindow = (wxWindow *) NULL; - m_menu = gtk_menu_new(); // Do not show! - - m_callback = func; - m_eventHandler = this; - m_clientData = (void*) NULL; - - if (m_title.IsNull()) m_title = ""; - if (m_title != "") - { - Append(-2, m_title); - AppendSeparator(); - } - - m_owner = (GtkWidget*) NULL; -} - -void wxMenu::SetTitle( const wxString& title ) -{ - /* Waiting for something better. */ - m_title = title; -} - -const wxString wxMenu::GetTitle() const -{ - return m_title; -} - -void wxMenu::AppendSeparator() -{ - wxMenuItem *mitem = new wxMenuItem(); - mitem->SetId(ID_SEPARATOR); - - GtkWidget *menuItem = gtk_menu_item_new(); - gtk_menu_append( GTK_MENU(m_menu), menuItem ); - gtk_widget_show( menuItem ); - mitem->SetMenuItem(menuItem); - m_items.Append( mitem ); -} - -void wxMenu::Append( int id, const wxString &item, const wxString &helpStr, bool checkable ) -{ - wxMenuItem *mitem = new wxMenuItem(); - mitem->SetId(id); - mitem->SetText(item); - mitem->SetHelp(helpStr); - mitem->SetCheckable(checkable); - const char *text = mitem->GetText(); - GtkWidget *menuItem = checkable ? gtk_check_menu_item_new_with_label(text) - : gtk_menu_item_new_with_label(text); - - mitem->SetMenuItem(menuItem); - - gtk_signal_connect( GTK_OBJECT(menuItem), "activate", - GTK_SIGNAL_FUNC(gtk_menu_clicked_callback), - (gpointer*)this ); - - gtk_signal_connect( GTK_OBJECT(menuItem), "select", - GTK_SIGNAL_FUNC(gtk_menu_hilight_callback), - (gpointer*)this ); - - gtk_menu_append( GTK_MENU(m_menu), menuItem ); - gtk_widget_show( menuItem ); - m_items.Append( mitem ); -} - -void wxMenu::Append( int id, const wxString &text, wxMenu *subMenu, const wxString &helpStr ) -{ - wxMenuItem *mitem = new wxMenuItem(); - mitem->SetId(id); - mitem->SetText(text); - - GtkWidget *menuItem = gtk_menu_item_new_with_label(mitem->GetText()); - mitem->SetHelp(helpStr); - mitem->SetMenuItem(menuItem); - mitem->SetSubMenu(subMenu); - - gtk_menu_item_set_submenu( GTK_MENU_ITEM(menuItem), subMenu->m_menu ); - gtk_menu_append( GTK_MENU(m_menu), menuItem ); - gtk_widget_show( menuItem ); - m_items.Append( mitem ); -} - -int wxMenu::FindItem( const wxString itemString ) const -{ - wxString s( itemString ); - - int pos; - do - { - pos = s.First( '&' ); - if (pos != -1) s.Remove( pos, 1 ); - } while (pos != -1); - - wxNode *node = m_items.First(); - while (node) - { - wxMenuItem *item = (wxMenuItem*)node->Data(); - if (item->GetText() == s) - { - return item->GetId(); - } - node = node->Next(); - } - - return -1; -} - -void wxMenu::Enable( int id, bool enable ) -{ - wxMenuItem *item = FindItem(id); - if (item) - { - item->Enable(enable); - } -} - -bool wxMenu::IsEnabled( int id ) const -{ - wxMenuItem *item = FindItem(id); - if (item) - { - return item->IsEnabled(); - } - else - { - return FALSE; - } -} - -void wxMenu::Check( int id, bool enable ) -{ - wxMenuItem *item = FindItem(id); - if (item) - { - item->Check(enable); - } -} - -bool wxMenu::IsChecked( int id ) const -{ - wxMenuItem *item = FindItem(id); - if (item) - { - return item->IsChecked(); - } - else - { - return FALSE; - } -} - -void wxMenu::SetLabel( int id, const wxString &label ) -{ - wxMenuItem *item = FindItem(id); - if (item) - { - item->SetText(label); - } -} - -wxString wxMenu::GetLabel( int id ) const -{ - wxMenuItem *item = FindItem(id); - if (item) - { - return item->GetText(); - } - else - { - return ""; - } -} - -void wxMenu::SetHelpString( int id, const wxString& helpString ) -{ - wxMenuItem *item = FindItem(id); - if (item) item->SetHelp( helpString ); -} - -wxString wxMenu::GetHelpString( int id ) const -{ - wxMenuItem *item = FindItem(id); - if (item) - { - return item->GetHelp(); - } - else - { - return ""; - } -} - -int wxMenu::FindMenuIdByMenuItem( GtkWidget *menuItem ) const -{ - wxNode *node = m_items.First(); - while (node) - { - wxMenuItem *item = (wxMenuItem*)node->Data(); - if (item->GetMenuItem() == menuItem) - return item->GetId(); - node = node->Next(); - } - - return -1; -} - -wxMenuItem *wxMenu::FindItem(int id) const -{ - wxNode *node = m_items.First(); - while (node) - { - wxMenuItem *item = (wxMenuItem*)node->Data(); - if (item->GetId() == id) - { - return item; - } - node = node->Next(); - } - - /* Not finding anything here can be correct - * when search the entire menu system for - * an entry -> no error message. */ - - return (wxMenuItem *) NULL; -} - -void wxMenu::SetInvokingWindow( wxWindow *win ) -{ - m_invokingWindow = win; -} - -wxWindow *wxMenu::GetInvokingWindow() -{ - return m_invokingWindow; -} - - diff --git a/src/gtk/minifram.cpp b/src/gtk/minifram.cpp deleted file mode 100644 index 2407a21cd4..0000000000 --- a/src/gtk/minifram.cpp +++ /dev/null @@ -1,156 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: minifram.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "minifram.h" -#endif - -#include "wx/minifram.h" -#include "wx/dcscreen.h" - -#include "gtk/gtk.h" -#include "wx/gtk/win_gtk.h" - -//----------------------------------------------------------------------------- -// "clicked" -//----------------------------------------------------------------------------- - -static void gtk_button_clicked_callback( GtkWidget *WXUNUSED(widget), wxMiniFrame *mf ) -{ - mf->Close(); -} - -//----------------------------------------------------------------------------- -// wxMiniFrame -//----------------------------------------------------------------------------- - -BEGIN_EVENT_TABLE(wxMiniFrame,wxFrame) - EVT_PAINT(wxMiniFrame::OnPaint) - EVT_MOUSE_EVENTS(wxMiniFrame::OnMouse) -END_EVENT_TABLE() - -IMPLEMENT_DYNAMIC_CLASS(wxMiniFrame,wxFrame) - -bool wxMiniFrame::Create( wxWindow *parent, wxWindowID id, const wxString &title, - const wxPoint &pos, const wxSize &size, - long style, const wxString &name ) -{ - style = style | wxSIMPLE_BORDER; - - m_miniEdge = 3; - m_miniTitle = 13; - m_isDragging = FALSE; - m_oldX = -1; - m_oldY = -1; - m_diffX = 0; - m_diffY = 0; - - wxFrame::Create( parent, id, title, pos, size, style, name ); - - GtkWidget *close_button = gtk_button_new_with_label( "x" ); - - gtk_myfixed_put( GTK_MYFIXED(m_wxwindow), close_button, 4, 4 ); - gtk_widget_set_usize( close_button, 12, 11 ); - - gtk_widget_show( close_button ); - - gtk_signal_connect( GTK_OBJECT(close_button), "clicked", - GTK_SIGNAL_FUNC(gtk_button_clicked_callback), (gpointer*)this ); - - return TRUE; -} - -void wxMiniFrame::OnPaint( wxPaintEvent &WXUNUSED(event) ) -{ - if (m_miniTitle == 0) return; - if (m_title.IsEmpty()) return; - - wxPaintDC dc(this); - - dc.SetBrush( *wxTRANSPARENT_BRUSH ); - dc.DrawRectangle( 0, 0, m_width, m_height ); - - dc.SetPen( *wxWHITE_PEN ); - dc.DrawLine( 1, 1, m_width-2, 1 ); - dc.DrawLine( 1, 1, 1, m_height-2 ); - - dc.SetPen( *wxMEDIUM_GREY_PEN ); - dc.DrawLine( 1, m_height-1, m_width-2, m_height-1 ); - dc.DrawLine( m_width-1, 1, m_width-1, m_height-2 ); - - dc.SetBrush( *wxBLUE_BRUSH ); - dc.SetPen( *wxTRANSPARENT_PEN ); - dc.DrawRectangle( m_miniEdge, m_miniEdge, m_width - 2*m_miniEdge, m_miniTitle ); - - dc.SetTextForeground( *wxWHITE ); - dc.SetFont( *wxSMALL_FONT ); - dc.DrawText( m_title, 14 + m_miniEdge, 1 + m_miniEdge ); -} - -void wxMiniFrame::DrawFrame( int x, int y ) -{ - int org_x = 0; - int org_y = 0; - gdk_window_get_origin( m_wxwindow->window, &org_x, &org_y ); - x += org_x; - y += org_y; - - wxScreenDC dc; - dc.SetLogicalFunction( wxXOR ); - - dc.DrawRectangle( x, y, m_width, m_height ); -} - -void wxMiniFrame::OnMouse( wxMouseEvent &event ) -{ - int x = event.GetX(); - int y = event.GetY(); - - if (event.LeftDown()) - { - CaptureMouse(); - m_diffX = x; - m_diffY = y; - DrawFrame( 0, 0 ); - m_oldX = 0; - m_oldY = 0; - m_isDragging = TRUE; - return; - } - - if (event.Dragging() && m_isDragging) - { - DrawFrame( m_oldX, m_oldY ); - m_oldX = x - m_diffX; - m_oldY = y - m_diffY; - DrawFrame( m_oldX, m_oldY ); - return; - } - - if (event.LeftUp() && m_isDragging) - { - m_isDragging = FALSE; - DrawFrame( m_oldX, m_oldY ); - ReleaseMouse(); - - int org_x = 0; - int org_y = 0; - gdk_window_get_origin( m_wxwindow->window, &org_x, &org_y ); - x += org_x - m_diffX; - y += org_y - m_diffY; - m_x = x; - m_y = y; - gtk_widget_set_uposition( m_widget, x, y ); - - return; - } - - event.Skip(); -} - diff --git a/src/gtk/notebook.cpp b/src/gtk/notebook.cpp deleted file mode 100644 index 7eee0d5246..0000000000 --- a/src/gtk/notebook.cpp +++ /dev/null @@ -1,661 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: notebook.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling, Vadim Zeitlin -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "notebook.h" -#endif - -#include "wx/notebook.h" -#include "wx/panel.h" -#include "wx/utils.h" -#include "wx/imaglist.h" -#include "wx/intl.h" -#include "wx/log.h" - -#include "gdk/gdk.h" -#include "gtk/gtk.h" -#include "wx/gtk/win_gtk.h" -#include "gdk/gdkkeysyms.h" - -//----------------------------------------------------------------------------- -// data -//----------------------------------------------------------------------------- - -extern bool g_blockEventsOnDrag; - -//----------------------------------------------------------------------------- -// wxNotebookPage -//----------------------------------------------------------------------------- - -class wxNotebookPage: public wxObject -{ -public: - wxNotebookPage() - { - m_id = -1; - m_text = ""; - m_image = -1; - m_page = (GtkNotebookPage *) NULL; - m_client = (wxWindow *) NULL; - m_parent = (GtkNotebook *) NULL; - m_box = (GtkWidget *) NULL; - m_added = FALSE; - } - - /* - mark page as "added' to the notebook, return FALSE if the page was - already added - */ - - bool Add() - { - if ( WasAdded() ) - return FALSE; - - m_added = TRUE; - return TRUE; - } - - bool WasAdded() const { return m_added; } - - int m_id; - wxString m_text; - int m_image; - GtkNotebookPage *m_page; - GtkLabel *m_label; - wxWindow *m_client; - GtkNotebook *m_parent; - GtkWidget *m_box; // in which the label and image are packed - -private: - bool m_added; -}; - -//----------------------------------------------------------------------------- -// "switch_page" -//----------------------------------------------------------------------------- - -static void gtk_notebook_page_change_callback(GtkNotebook *WXUNUSED(widget), - GtkNotebookPage *WXUNUSED(page), - gint nPage, - gpointer data) -{ - wxNotebook *notebook = (wxNotebook *)data; - - int old = notebook->GetSelection(); - - // TODO: emulate PAGE_CHANGING event - - wxNotebookEvent event( wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED, - notebook->GetId(), nPage, old ); - event.SetEventObject( notebook ); - notebook->GetEventHandler()->ProcessEvent( event ); -} - -//----------------------------------------------------------------------------- -// "size_allocate" -//----------------------------------------------------------------------------- - -static void gtk_page_size_callback( GtkWidget *WXUNUSED(widget), GtkAllocation* alloc, wxWindow *win ) -{ - if ((win->m_x == alloc->x) && - (win->m_y == alloc->y) && - (win->m_width == alloc->width) && - (win->m_height == alloc->height)) - { - return; - } - - win->SetSize( alloc->x, alloc->y, alloc->width, alloc->height ); - - if (win->GetAutoLayout()) win->Layout(); -} - -//----------------------------------------------------------------------------- -// "key_press_event" -//----------------------------------------------------------------------------- - -static gint -gtk_notebook_key_press_callback( GtkWidget *widget, GdkEventKey *gdk_event, wxNotebook *notebook ) -{ - if (g_blockEventsOnDrag) return FALSE; - - if (!notebook->HasVMT()) return FALSE; - - if (gdk_event->keyval != GDK_Down) return FALSE; - - if (notebook != notebook->FindFocus()) return FALSE; - - if (notebook->m_pages.GetCount() == 0) return FALSE; - - wxNode *node = notebook->m_pages.Nth( notebook->GetSelection() ); - - if (!node) return FALSE; - - wxNotebookPage *page = (wxNotebookPage*) node->Data(); - - // don't let others the key event - gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "key_press_event" ); - - page->m_client->SetFocus(); - - return TRUE; -} - -//----------------------------------------------------------------------------- -// InsertChild callback for wxNotebook -//----------------------------------------------------------------------------- - -static void wxInsertChildInNotebook( wxNotebook* parent, wxWindow* child ) -{ - wxNotebookPage *page = new wxNotebookPage(); - - page->m_id = parent->GetPageCount(); - - page->m_box = gtk_hbox_new (FALSE, 0); - gtk_container_border_width(GTK_CONTAINER(page->m_box), 2); - - GtkNotebook *notebook = GTK_NOTEBOOK(parent->m_widget); - - page->m_client = child; - gtk_notebook_append_page( notebook, child->m_widget, page->m_box ); - - page->m_page = (GtkNotebookPage*) (g_list_last(notebook->children)->data); - - page->m_parent = notebook; - - gtk_signal_connect( GTK_OBJECT(child->m_widget), "size_allocate", - GTK_SIGNAL_FUNC(gtk_page_size_callback), (gpointer)child ); - - wxASSERT_MSG( page->m_page, "Notebook page creation error" ); - - parent->m_pages.Append( page ); -} - -//----------------------------------------------------------------------------- -// wxNotebook -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxNotebook,wxControl) - -void wxNotebook::Init() -{ - m_imageList = (wxImageList *) NULL; - m_pages.DeleteContents( TRUE ); - m_idHandler = 0; -} - -wxNotebook::wxNotebook() -{ - Init(); -} - -wxNotebook::wxNotebook( wxWindow *parent, wxWindowID id, - const wxPoint& pos, const wxSize& size, - long style, const wxString& name ) -{ - Init(); - Create( parent, id, pos, size, style, name ); -} - -wxNotebook::~wxNotebook() -{ - // don't generate change page events any more - if (m_idHandler != 0) - gtk_signal_disconnect(GTK_OBJECT(m_widget), m_idHandler); - - DeleteAllPages(); -} - -bool wxNotebook::Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos, const wxSize& size, - long style, const wxString& name ) -{ - m_needParent = TRUE; - m_acceptsFocus = TRUE; - m_insertCallback = (wxInsertChildFunction)wxInsertChildInNotebook; - - PreCreation( parent, id, pos, size, style, name ); - - m_widget = gtk_notebook_new(); - -#ifdef __WXDEBUG__ - debug_focus_in( m_widget, "wxNotebook::m_widget", name ); -#endif - - gtk_notebook_set_scrollable( GTK_NOTEBOOK(m_widget), 1 ); - - m_idHandler = gtk_signal_connect ( - GTK_OBJECT(m_widget), "switch_page", - GTK_SIGNAL_FUNC(gtk_notebook_page_change_callback), - (gpointer)this ); - - m_parent->AddChild( this ); - - (m_parent->m_insertCallback)( m_parent, this ); - - gtk_signal_connect( GTK_OBJECT(m_widget), "key_press_event", - GTK_SIGNAL_FUNC(gtk_notebook_key_press_callback), (gpointer)this ); - - PostCreation(); - - Show( TRUE ); - - return TRUE; -} - -int wxNotebook::GetSelection() const -{ - wxCHECK_MSG( m_widget != NULL, -1, "invalid notebook" ); - - if (m_pages.Number() == 0) return -1; - - GtkNotebookPage *g_page = GTK_NOTEBOOK(m_widget)->cur_page; - if (!g_page) return -1; - - wxNotebookPage *page = (wxNotebookPage *) NULL; - - wxNode *node = m_pages.First(); - while (node) - { - page = (wxNotebookPage*)node->Data(); - - if ((page->m_page == g_page) || (page->m_page == (GtkNotebookPage*)NULL)) - { - // page->m_page is NULL directly after gtk_notebook_append. gtk emits - // "switch_page" then and we ask for GetSelection() in the handler for - // "switch_page". otherwise m_page should never be NULL. all this - // might also be wrong. - break; - } - node = node->Next(); - } - - wxCHECK_MSG( node != NULL, -1, "wxNotebook: no selection?" ); - - return page->m_id; -} - -int wxNotebook::GetPageCount() const -{ - // count only the pages which were already added to the notebook for MSW - // compatibility (and, in fact, this behaviour makes more sense anyhow - // because only the added pages are shown) - - int n = 0; - for ( wxNode *node = m_pages.First(); node; node = node->Next() ) - { - wxNotebookPage *page = (wxNotebookPage*)node->Data(); - - if (page->WasAdded()) n++; - } - - return n; -} - -int wxNotebook::GetRowCount() const -{ - return 1; -} - -wxString wxNotebook::GetPageText( int page ) const -{ - wxCHECK_MSG( m_widget != NULL, "", "invalid notebook" ); - - wxNotebookPage* nb_page = GetNotebookPage(page); - if (nb_page) - return nb_page->m_text; - else - return ""; -} - -int wxNotebook::GetPageImage( int page ) const -{ - wxCHECK_MSG( m_widget != NULL, 0, "invalid notebook" ); - - wxNotebookPage* nb_page = GetNotebookPage(page); - if (nb_page) - return nb_page->m_image; - else - return 0; -} - -wxNotebookPage* wxNotebook::GetNotebookPage(int page) const -{ - wxCHECK_MSG( m_widget != NULL, (wxNotebookPage*)NULL, "invalid notebook" ); - - wxNotebookPage *nb_page = (wxNotebookPage *) NULL; - - wxNode *node = m_pages.First(); - while (node) - { - nb_page = (wxNotebookPage*)node->Data(); - if (nb_page->m_id == page) - return nb_page; - node = node->Next(); - } - - wxFAIL_MSG( "Notebook page not found!" ); - - return (wxNotebookPage *) NULL; -} - -int wxNotebook::SetSelection( int page ) -{ - wxCHECK_MSG( m_widget != NULL, -1, "invalid notebook" ); - - int selOld = GetSelection(); - wxNotebookPage* nb_page = GetNotebookPage(page); - - if (!nb_page) return -1; - - int page_num = 0; - GList *child = GTK_NOTEBOOK(m_widget)->children; - while (child) - { - if (nb_page->m_page == (GtkNotebookPage*)child->data) break; - page_num++; - child = child->next; - } - - if (!child) return -1; - - gtk_notebook_set_page( GTK_NOTEBOOK(m_widget), page_num ); - - return selOld; -} - -void wxNotebook::AdvanceSelection( bool bForward ) -{ - wxCHECK_RET( m_widget != NULL, "invalid notebook" ); - - int sel = GetSelection(); - int max = GetPageCount(); - - if (bForward) - SetSelection( sel == max ? 0 : sel + 1 ); - else - SetSelection( sel == 0 ? max : sel - 1 ); -} - -void wxNotebook::SetImageList( wxImageList* imageList ) -{ - m_imageList = imageList; -} - -bool wxNotebook::SetPageText( int page, const wxString &text ) -{ - wxCHECK_MSG( m_widget != NULL, FALSE, "invalid notebook" ); - - wxNotebookPage* nb_page = GetNotebookPage(page); - - if (!nb_page) return FALSE; - - nb_page->m_text = text; - - if (nb_page->m_text.IsEmpty()) nb_page->m_text = ""; - - gtk_label_set(nb_page->m_label, nb_page->m_text); - - return TRUE; -} - -bool wxNotebook::SetPageImage( int page, int image ) -{ - /* HvdH 28-12-98: now it works, but it's a bit of a kludge */ - - wxNotebookPage* nb_page = GetNotebookPage(page); - - if (!nb_page) return FALSE; - - /* Optimization posibility: return immediately if image unchanged. - * Not enabled because it may break existing (stupid) code that - * manipulates the imagelist to cycle images */ - - /* if (image == nb_page->m_image) return TRUE; */ - - /* For different cases: - 1) no image -> no image - 2) image -> no image - 3) no image -> image - 4) image -> image */ - - if (image == -1 && nb_page->m_image == -1) - return TRUE; /* Case 1): Nothing to do. */ - - GtkWidget *pixmapwid = (GtkWidget*) NULL; - - if (nb_page->m_image != -1) - { - /* Case 2) or 4). There is already an image in the gtkhbox. Let's find it */ - - GList *child = gtk_container_children(GTK_CONTAINER(nb_page->m_box)); - while (child) - { - if (GTK_IS_PIXMAP(child->data)) - { - pixmapwid = GTK_WIDGET(child->data); - break; - } - child = child->next; - } - - /* We should have the pixmap widget now */ - wxASSERT(pixmapwid != NULL); - - if (image == -1) - { - /* If there's no new widget, just remove the old from the box */ - gtk_container_remove(GTK_CONTAINER(nb_page->m_box), pixmapwid); - nb_page->m_image = -1; - - return TRUE; /* Case 2) */ - } - } - - /* Only cases 3) and 4) left */ - wxASSERT( m_imageList != NULL ); /* Just in case */ - - /* Construct the new pixmap */ - const wxBitmap *bmp = m_imageList->GetBitmap(image); - GdkPixmap *pixmap = bmp->GetPixmap(); - GdkBitmap *mask = (GdkBitmap*) NULL; - if ( bmp->GetMask() ) - { - mask = bmp->GetMask()->GetBitmap(); - } - - if (pixmapwid == NULL) - { - /* Case 3) No old pixmap. Create a new one and prepend it to the hbox */ - pixmapwid = gtk_pixmap_new (pixmap, mask ); - - /* CHECKME: Are these pack flags okay? */ - gtk_box_pack_start(GTK_BOX(nb_page->m_box), pixmapwid, FALSE, FALSE, 3); - gtk_widget_show(pixmapwid); - } - else - { - /* Case 4) Simply replace the pixmap */ - gtk_pixmap_set(GTK_PIXMAP(pixmapwid), pixmap, mask); - } - - nb_page->m_image = image; - - return TRUE; -} - -void wxNotebook::SetPageSize( const wxSize &WXUNUSED(size) ) -{ - wxFAIL_MSG( "wxNotebook::SetPageSize not implemented" ); -} - -void wxNotebook::SetPadding( const wxSize &WXUNUSED(padding) ) -{ - wxFAIL_MSG( "wxNotebook::SetPadding not implemented" ); -} - -bool wxNotebook::DeleteAllPages() -{ - wxCHECK_MSG( m_widget != NULL, FALSE, "invalid notebook" ); - - wxNode *page_node = m_pages.First(); - while (page_node) - { - wxNotebookPage *page = (wxNotebookPage*)page_node->Data(); - - DeletePage( page->m_id ); - - page_node = m_pages.First(); - } - - return TRUE; -} - -bool wxNotebook::DeletePage( int page ) -{ - wxNotebookPage* nb_page = GetNotebookPage(page); - if (!nb_page) return FALSE; - - int page_num = 0; - GList *child = GTK_NOTEBOOK(m_widget)->children; - while (child) - { - if (nb_page->m_page == (GtkNotebookPage*)child->data) break; - page_num++; - child = child->next; - } - - wxCHECK_MSG( child != NULL, FALSE, "illegal notebook index" ); - - delete nb_page->m_client; - - m_pages.DeleteObject( nb_page ); - - return TRUE; -} - -bool wxNotebook::RemovePage( int page ) -{ - wxNotebookPage* nb_page = GetNotebookPage(page); - if (!nb_page) return FALSE; - - int page_num = 0; - GList *child = GTK_NOTEBOOK(m_widget)->children; - while (child) - { - if (nb_page->m_page == (GtkNotebookPage*)child->data) break; - page_num++; - child = child->next; - } - - wxCHECK_MSG( child != NULL, FALSE, "illegal notebook index" ); - - gtk_notebook_remove_page( GTK_NOTEBOOK(m_widget), page_num ); - - m_pages.DeleteObject( nb_page ); - - return TRUE; -} - -bool wxNotebook::AddPage(wxWindow* win, const wxString& text, - bool select, int imageId) -{ - wxCHECK_MSG( m_widget != NULL, FALSE, "invalid notebook" ); - - /* we've created the notebook page in AddChild(). Now we just have to set - the caption for the page and set the others parameters. */ - - wxNotebookPage *page = (wxNotebookPage *) NULL; - - wxNode *node = m_pages.First(); - while (node) - { - page = (wxNotebookPage*)node->Data(); - if ( page->m_client == win ) break; - node = node->Next(); - } - - wxCHECK_MSG( page != NULL, FALSE, - "Can't add a page whose parent is not the notebook!" ); - - wxCHECK_MSG( page->Add(), FALSE, - "Can't add the same page twice to a notebook." ); - - if (imageId != -1) - { - wxASSERT( m_imageList != NULL ); - - const wxBitmap *bmp = m_imageList->GetBitmap(imageId); - GdkPixmap *pixmap = bmp->GetPixmap(); - GdkBitmap *mask = (GdkBitmap*) NULL; - if ( bmp->GetMask() ) - { - mask = bmp->GetMask()->GetBitmap(); - } - - GtkWidget *pixmapwid = gtk_pixmap_new (pixmap, mask ); - - gtk_box_pack_start(GTK_BOX(page->m_box), pixmapwid, FALSE, FALSE, 3); - - gtk_widget_show(pixmapwid); - } - - /* then set the attributes */ - page->m_text = text; - if (page->m_text.IsEmpty()) page->m_text = ""; - page->m_image = imageId; - page->m_label = (GtkLabel *)gtk_label_new(page->m_text); - gtk_box_pack_end( GTK_BOX(page->m_box), (GtkWidget *)page->m_label, FALSE, FALSE, 3); - - /* @@@: what does this do? do we still need it? - gtk_misc_set_alignment(GTK_MISC(page->m_label), 0.0, 0.5); */ - - gtk_widget_show((GtkWidget *)page->m_label); - - if (select) SetSelection( GetPageCount()-1 ); - - return TRUE; -} - -wxWindow *wxNotebook::GetPage( int page ) const -{ - wxCHECK_MSG( m_widget != NULL, (wxWindow*) NULL, "invalid notebook" ); - - wxNotebookPage* nb_page = GetNotebookPage(page); - if (!nb_page) - return (wxWindow *) NULL; - else - return nb_page->m_client; -} - -// override these 2 functions to do nothing: everything is done in OnSize -void wxNotebook::SetConstraintSizes( bool WXUNUSED(recurse) ) -{ - // don't set the sizes of the pages - their correct size is not yet known - wxControl::SetConstraintSizes(FALSE); -} - -bool wxNotebook::DoPhase( int WXUNUSED(nPhase) ) -{ - return TRUE; -} - -void wxNotebook::ApplyWidgetStyle() -{ - SetWidgetStyle(); - gtk_widget_set_style( m_widget, m_widgetStyle ); -} - -//----------------------------------------------------------------------------- -// wxNotebookEvent -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxNotebookEvent, wxNotifyEvent) - diff --git a/src/gtk/palette.cpp b/src/gtk/palette.cpp deleted file mode 100644 index 4cdaef3726..0000000000 --- a/src/gtk/palette.cpp +++ /dev/null @@ -1,119 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: palette.cpp -// Purpose: -// Author: Robert Roebling -// Created: 01/02/97 -// Id: -// Copyright: (c) 1998 Robert Roebling, Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifdef __GNUG__ -#pragma implementation "palette.h" -#endif - -#include "wx/palette.h" - -#include "gdk/gdk.h" - -//----------------------------------------------------------------------------- -// wxPalette -//----------------------------------------------------------------------------- - -class wxPaletteRefData: public wxObjectRefData -{ - public: - - wxPaletteRefData(void); - ~wxPaletteRefData(void); - - GdkColormap *m_colormap; -}; - -wxPaletteRefData::wxPaletteRefData() -{ - m_colormap = (GdkColormap *) NULL; -}; - -wxPaletteRefData::~wxPaletteRefData() -{ - if (m_colormap) gdk_colormap_unref( m_colormap ); -}; - -//----------------------------------------------------------------------------- - -#define M_PALETTEDATA ((wxPaletteRefData *)m_refData) - -IMPLEMENT_DYNAMIC_CLASS(wxPalette,wxGDIObject) - -wxPalette::wxPalette() -{ -}; - -wxPalette::wxPalette( int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue ) -{ - m_refData = new wxPaletteRefData(); - Create( n, red, green, blue ); -}; - -wxPalette::wxPalette( const wxPalette& palette ) -{ - Ref( palette ); -}; - -wxPalette::~wxPalette() -{ -}; - -wxPalette& wxPalette::operator = ( const wxPalette& palette ) -{ - if (*this == palette) return (*this); - Ref( palette ); - return *this; -}; - -bool wxPalette::operator == ( const wxPalette& palette ) -{ - return m_refData == palette.m_refData; -}; - -bool wxPalette::operator != ( const wxPalette& palette ) -{ - return m_refData != palette.m_refData; -}; - -bool wxPalette::Ok(void) const -{ - return (m_refData); -}; - -bool wxPalette::Create( int WXUNUSED(n), - const unsigned char *WXUNUSED(red), - const unsigned char *WXUNUSED(green), - const unsigned char *WXUNUSED(blue) ) -{ - wxFAIL_MSG("not implemented"); - - return FALSE; -}; - -int wxPalette::GetPixel( const unsigned char WXUNUSED(red), - const unsigned char WXUNUSED(green), - const unsigned char WXUNUSED(blue) ) const -{ - wxFAIL_MSG("not implemented"); - - return 0; -}; - -bool wxPalette::GetRGB( int WXUNUSED(pixel), - unsigned char *WXUNUSED(red), - unsigned char *WXUNUSED(green), - unsigned char *WXUNUSED(blue) ) const -{ - wxFAIL_MSG("not implemented"); - - return 0; -}; - diff --git a/src/gtk/pen.cpp b/src/gtk/pen.cpp deleted file mode 100644 index 3152074605..0000000000 --- a/src/gtk/pen.cpp +++ /dev/null @@ -1,192 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: pen.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifdef __GNUG__ -#pragma implementation "pen.h" -#endif - -#include "wx/pen.h" - -#include "gdk/gdk.h" - -//----------------------------------------------------------------------------- -// wxPen -//----------------------------------------------------------------------------- - -class wxPenRefData: public wxObjectRefData -{ -public: - - wxPenRefData(void); - wxPenRefData(const wxPenRefData& data); - - int m_width; - int m_style; - int m_joinStyle; - int m_capStyle; - wxColour m_colour; -}; - -wxPenRefData::wxPenRefData() -{ - m_width = 1; - m_style = wxSOLID; - m_joinStyle = wxJOIN_ROUND; - m_capStyle = wxCAP_ROUND; -} - -wxPenRefData::wxPenRefData( const wxPenRefData& data ) -{ - m_style = data.m_style; - m_width = data.m_width; - m_joinStyle = data.m_joinStyle; - m_capStyle = data.m_capStyle; - m_colour = data.m_colour; -} - -//----------------------------------------------------------------------------- - -#define M_PENDATA ((wxPenRefData *)m_refData) - -IMPLEMENT_DYNAMIC_CLASS(wxPen,wxGDIObject) - -wxPen::wxPen() -{ - if (wxThePenList) wxThePenList->AddPen( this ); -} - -wxPen::wxPen( const wxColour &colour, int width, int style ) -{ - m_refData = new wxPenRefData(); - M_PENDATA->m_width = width; - M_PENDATA->m_style = style; - M_PENDATA->m_colour = colour; - - if (wxThePenList) wxThePenList->AddPen( this ); -} - -wxPen::wxPen( const wxPen& pen ) -{ - Ref( pen ); - if (wxThePenList) wxThePenList->AddPen( this ); -} - -wxPen::~wxPen() -{ - if (wxThePenList) wxThePenList->RemovePen( this ); -} - -wxPen& wxPen::operator = ( const wxPen& pen ) -{ - if (*this == pen) return (*this); - Ref( pen ); - return *this; -} - -bool wxPen::operator == ( const wxPen& pen ) -{ - return m_refData == pen.m_refData; -} - -bool wxPen::operator != ( const wxPen& pen ) -{ - return m_refData != pen.m_refData; -} - -void wxPen::SetColour( const wxColour &colour ) -{ - Unshare(); - M_PENDATA->m_colour = colour; -} - -void wxPen::SetColour( int red, int green, int blue ) -{ - Unshare(); - M_PENDATA->m_colour.Set( red, green, blue ); -} - -void wxPen::SetCap( int capStyle ) -{ - Unshare(); - M_PENDATA->m_capStyle = capStyle; -} - -void wxPen::SetJoin( int joinStyle ) -{ - Unshare(); - M_PENDATA->m_joinStyle = joinStyle; -} - -void wxPen::SetStyle( int style ) -{ - Unshare(); - M_PENDATA->m_style = style; -} - -void wxPen::SetWidth( int width ) -{ - Unshare(); - M_PENDATA->m_width = width; -} - -int wxPen::GetCap() const -{ - wxCHECK_MSG( Ok(), -1, "invalid pen" ); - - return M_PENDATA->m_capStyle; -} - -int wxPen::GetJoin() const -{ - wxCHECK_MSG( Ok(), -1, "invalid pen" ); - - return M_PENDATA->m_joinStyle; -} - -int wxPen::GetStyle() const -{ - wxCHECK_MSG( Ok(), -1, "invalid pen" ); - - return M_PENDATA->m_style; -} - -int wxPen::GetWidth() const -{ - wxCHECK_MSG( Ok(), -1, "invalid pen" ); - - return M_PENDATA->m_width; -} - -wxColour &wxPen::GetColour() const -{ - wxCHECK_MSG( Ok(), wxNullColour, "invalid pen" ); - - return M_PENDATA->m_colour; -} - -bool wxPen::Ok() const -{ - return (m_refData != NULL); -} - -void wxPen::Unshare() -{ - if (!m_refData) - { - m_refData = new wxPenRefData(); - } - else - { - wxPenRefData* ref = new wxPenRefData( *(wxPenRefData*)m_refData ); - UnRef(); - m_refData = ref; - } -} - diff --git a/src/gtk/radiobox.cpp b/src/gtk/radiobox.cpp deleted file mode 100644 index d0808503e7..0000000000 --- a/src/gtk/radiobox.cpp +++ /dev/null @@ -1,505 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: radiobox.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "radiobox.h" -#endif - -#include "wx/radiobox.h" -#include "wx/dialog.h" -#include "wx/frame.h" - -#include "gdk/gdk.h" -#include "gtk/gtk.h" -#include "wx/gtk/win_gtk.h" - -//----------------------------------------------------------------------------- -// data -//----------------------------------------------------------------------------- - -extern bool g_blockEventsOnDrag; - -//----------------------------------------------------------------------------- -// "clicked" -//----------------------------------------------------------------------------- - -static void gtk_radiobutton_clicked_callback( GtkWidget *WXUNUSED(widget), wxRadioBox *rb ) -{ - if (!rb->HasVMT()) return; - if (g_blockEventsOnDrag) return; - - if (rb->m_alreadySent) - { - rb->m_alreadySent = FALSE; - return; - } - - rb->m_alreadySent = TRUE; - - wxCommandEvent event( wxEVT_COMMAND_RADIOBOX_SELECTED, rb->GetId() ); - event.SetInt( rb->GetSelection() ); - wxString tmp( rb->GetStringSelection() ); - event.SetString( WXSTRINGCAST(tmp) ); - event.SetEventObject( rb ); - rb->GetEventHandler()->ProcessEvent(event); -} - -//----------------------------------------------------------------------------- -// wxRadioBox -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxRadioBox,wxControl) - -BEGIN_EVENT_TABLE(wxRadioBox, wxControl) - EVT_SIZE(wxRadioBox::OnSize) -END_EVENT_TABLE() - -wxRadioBox::wxRadioBox(void) -{ -} - -bool wxRadioBox::Create( wxWindow *parent, wxWindowID id, const wxString& title, - const wxPoint &pos, const wxSize &size, - int n, const wxString choices[], int majorDim, - long style, const wxValidator& validator, - const wxString &name ) -{ - m_alreadySent = FALSE; - m_needParent = TRUE; - m_acceptsFocus = TRUE; - - PreCreation( parent, id, pos, size, style, name ); - - SetValidator( validator ); - - m_widget = gtk_frame_new( title ); - - m_majorDim = majorDim; - - GtkRadioButton *m_radio = (GtkRadioButton*) NULL; - - GSList *radio_button_group = (GSList *) NULL; - for (int i = 0; i < n; i++) - { - if (i) radio_button_group = gtk_radio_button_group( GTK_RADIO_BUTTON(m_radio) ); - - m_radio = GTK_RADIO_BUTTON( gtk_radio_button_new_with_label( radio_button_group, choices[i] ) ); - - m_boxes.Append( (wxObject*) m_radio ); - - ConnectWidget( GTK_WIDGET(m_radio) ); - - if (!i) gtk_toggle_button_set_state( GTK_TOGGLE_BUTTON(m_radio), TRUE ); - - gtk_signal_connect( GTK_OBJECT(m_radio), "clicked", - GTK_SIGNAL_FUNC(gtk_radiobutton_clicked_callback), (gpointer*)this ); - - gtk_myfixed_put( GTK_MYFIXED(m_parent->m_wxwindow), GTK_WIDGET(m_radio), m_x+10, m_y+10+(i*24) ); - - } - - wxSize ls = LayoutItems(); - - wxSize newSize = size; - if (newSize.x == -1) newSize.x = ls.x; - if (newSize.y == -1) newSize.y = ls.y; - SetSize( newSize.x, newSize.y ); - - m_parent->AddChild( this ); - - (m_parent->m_insertCallback)( m_parent, this ); - - PostCreation(); - - SetLabel( title ); - - SetBackgroundColour( parent->GetBackgroundColour() ); - SetForegroundColour( parent->GetForegroundColour() ); - - Show( TRUE ); - - return TRUE; -} - -wxRadioBox::~wxRadioBox(void) -{ - wxNode *node = m_boxes.First(); - while (node) - { - GtkWidget *button = GTK_WIDGET( node->Data() ); - gtk_widget_destroy( button ); - node = node->Next(); - } -} - -void wxRadioBox::OnSize( wxSizeEvent &event ) -{ - wxControl::OnSize( event ); - - LayoutItems(); -} - -wxSize wxRadioBox::LayoutItems() -{ - int x = 7; - int y = 15; - - int num_per_major = (m_boxes.GetCount() - 1) / m_majorDim +1; - - wxSize res( 0, 0 ); - - if (m_windowStyle & wxRA_HORIZONTAL) - { - - for (int j = 0; j < m_majorDim; j++) - { - y = 15; - - int max_len = 0; - wxNode *node = m_boxes.Nth( j*num_per_major ); - for (int i = 0; i< num_per_major; i++) - { - GtkWidget *button = GTK_WIDGET( node->Data() ); - GtkLabel *label = GTK_LABEL( GTK_BUTTON(button)->child ); - GdkFont *font = m_widget->style->font; - int len = 22+gdk_string_measure( font, label->label ); - if (len > max_len) max_len = len; - - gtk_myfixed_move( GTK_MYFIXED(m_parent->m_wxwindow), button, m_x+x, m_y+y ); - y += 22; - - node = node->Next(); - if (!node) break; - } - - // we don't know the max_len before - - node = m_boxes.Nth( j*num_per_major ); - for (int i = 0; i< num_per_major; i++) - { - GtkWidget *button = GTK_WIDGET( node->Data() ); - - gtk_widget_set_usize( button, max_len, 22 ); - - node = node->Next(); - if (!node) break; - } - - if (y > res.y) res.y = y; - - x += max_len + 2; - } - - res.x = x+4; - res.y += 9; - } - else - { - int max = 0; - - wxNode *node = m_boxes.First(); - while (node) - { - GtkButton *button = GTK_BUTTON( node->Data() ); - GtkLabel *label = GTK_LABEL( button->child ); - - GdkFont *font = m_widget->style->font; - int len = 22+gdk_string_measure( font, label->label ); - if (len > max) max = len; - - node = node->Next(); - } - - node = m_boxes.First(); - while (node) - { - GtkWidget *button = GTK_WIDGET( node->Data() ); - - gtk_myfixed_move( GTK_MYFIXED(m_parent->m_wxwindow), button, m_x+x, m_y+y ); - x += max; - gtk_widget_set_usize( button, max, 20 ); - - node = node->Next(); - } - res.x = x+4; - res.y = 42; - } - - return res; -} - -bool wxRadioBox::Show( bool show ) -{ - wxCHECK_MSG( m_widget != NULL, FALSE, "invalid radiobox" ); - - wxWindow::Show( show ); - - wxNode *node = m_boxes.First(); - while (node) - { - GtkWidget *button = GTK_WIDGET( node->Data() ); - - if (show) gtk_widget_show( button ); else gtk_widget_hide( button ); - - node = node->Next(); - } - - return TRUE; -} - -int wxRadioBox::FindString( const wxString &s ) const -{ - wxCHECK_MSG( m_widget != NULL, -1, "invalid radiobox" ); - - int count = 0; - - wxNode *node = m_boxes.First(); - while (node) - { - GtkButton *button = GTK_BUTTON( node->Data() ); - - GtkLabel *label = GTK_LABEL( button->child ); - if (s == label->label) return count; - count++; - - node = node->Next(); - } - - return -1; -} - -void wxRadioBox::SetFocus() -{ - wxCHECK_RET( m_widget != NULL, "invalid radiobox" ); - - if (m_boxes.GetCount() == 0) return; - - wxNode *node = m_boxes.First(); - while (node) - { - GtkToggleButton *button = GTK_TOGGLE_BUTTON( node->Data() ); - if (button->active) - { - gtk_widget_grab_focus( GTK_WIDGET(button) ); - - return; - } - node = node->Next(); - } - -} - -void wxRadioBox::SetSelection( int n ) -{ - wxCHECK_RET( m_widget != NULL, "invalid radiobox" ); - - wxNode *node = m_boxes.Nth( n ); - - wxCHECK_RET( node, "radiobox wrong index" ); - - GtkToggleButton *button = GTK_TOGGLE_BUTTON( node->Data() ); - - gtk_toggle_button_set_state( button, 1 ); -} - -int wxRadioBox::GetSelection(void) const -{ - wxCHECK_MSG( m_widget != NULL, -1, "invalid radiobox" ); - - int count = 0; - - wxNode *node = m_boxes.First(); - while (node) - { - GtkToggleButton *button = GTK_TOGGLE_BUTTON( node->Data() ); - if (button->active) return count; - count++; - node = node->Next(); - } - - wxFAIL_MSG( "wxRadioBox none selected" ); - - return -1; -} - -wxString wxRadioBox::GetString( int n ) const -{ - wxCHECK_MSG( m_widget != NULL, "", "invalid radiobox" ); - - wxNode *node = m_boxes.Nth( n ); - - wxCHECK_MSG( node, "", "radiobox wrong index" ); - - GtkButton *button = GTK_BUTTON( node->Data() ); - GtkLabel *label = GTK_LABEL( button->child ); - - return wxString( label->label ); -} - -wxString wxRadioBox::GetLabel( int item ) const -{ - wxCHECK_MSG( m_widget != NULL, "", "invalid radiobox" ); - - return GetString( item ); -} - -void wxRadioBox::SetLabel( const wxString& label ) -{ - wxCHECK_RET( m_widget != NULL, "invalid radiobox" ); - - wxControl::SetLabel( label ); - - gtk_frame_set_label( GTK_FRAME(m_widget), wxControl::GetLabel() ); -} - -void wxRadioBox::SetLabel( int item, const wxString& label ) -{ - wxCHECK_RET( m_widget != NULL, "invalid radiobox" ); - - wxNode *node = m_boxes.Nth( item ); - - wxCHECK_RET( node, "radiobox wrong index" ); - - GtkButton *button = GTK_BUTTON( node->Data() ); - GtkLabel *g_label = GTK_LABEL( button->child ); - - gtk_label_set( g_label, label ); -} - -void wxRadioBox::SetLabel( int WXUNUSED(item), wxBitmap *WXUNUSED(bitmap) ) -{ - wxFAIL_MSG("wxRadioBox::SetLabel not implemented."); -} - -void wxRadioBox::Enable( bool enable ) -{ - wxControl::Enable( enable ); - - wxNode *node = m_boxes.First(); - while (node) - { - GtkButton *button = GTK_BUTTON( node->Data() ); - GtkWidget *label = button->child; - gtk_widget_set_sensitive( GTK_WIDGET(button), enable ); - gtk_widget_set_sensitive( label, enable ); - node = node->Next(); - } -} - -void wxRadioBox::Enable( int item, bool enable ) -{ - wxCHECK_RET( m_widget != NULL, "invalid radiobox" ); - - wxNode *node = m_boxes.Nth( item ); - - wxCHECK_RET( node, "radiobox wrong index" ); - - GtkButton *button = GTK_BUTTON( node->Data() ); - GtkWidget *label = button->child; - gtk_widget_set_sensitive( GTK_WIDGET(button), enable ); - gtk_widget_set_sensitive( label, enable ); -} - -void wxRadioBox::Show( int item, bool show ) -{ - wxCHECK_RET( m_widget != NULL, "invalid radiobox" ); - - wxNode *node = m_boxes.Nth( item ); - - wxCHECK_RET( node, "radiobox wrong index" ); - - GtkWidget *button = GTK_WIDGET( node->Data() ); - - if (show) - gtk_widget_show( button ); - else - gtk_widget_hide( button ); -} - -wxString wxRadioBox::GetStringSelection(void) const -{ - wxCHECK_MSG( m_widget != NULL, "", "invalid radiobox" ); - - wxNode *node = m_boxes.First(); - while (node) - { - GtkToggleButton *button = GTK_TOGGLE_BUTTON( node->Data() ); - if (button->active) - { - GtkLabel *label = GTK_LABEL( GTK_BUTTON(button)->child ); - return label->label; - } - node = node->Next(); - } - - wxFAIL_MSG( "wxRadioBox none selected" ); - return ""; -} - -bool wxRadioBox::SetStringSelection( const wxString &s ) -{ - wxCHECK_MSG( m_widget != NULL, FALSE, "invalid radiobox" ); - - int res = FindString( s ); - if (res == -1) return FALSE; - SetSelection( res ); - - return TRUE; -} - -int wxRadioBox::Number(void) const -{ - return m_boxes.Number(); -} - -int wxRadioBox::GetNumberOfRowsOrCols(void) const -{ - return 1; -} - -void wxRadioBox::SetNumberOfRowsOrCols( int WXUNUSED(n) ) -{ - wxFAIL_MSG("wxRadioBox::SetNumberOfRowsOrCols not implemented."); -} - -void wxRadioBox::ApplyWidgetStyle() -{ - SetWidgetStyle(); - - gtk_widget_set_style( m_widget, m_widgetStyle ); - - wxNode *node = m_boxes.First(); - while (node) - { - GtkWidget *widget = GTK_WIDGET( node->Data() ); - gtk_widget_set_style( widget, m_widgetStyle ); - - GtkButton *button = GTK_BUTTON( node->Data() ); - gtk_widget_set_style( button->child, m_widgetStyle ); - - node = node->Next(); - } -} - -bool wxRadioBox::IsOwnGtkWindow( GdkWindow *window ) -{ - if (window == m_widget->window) return TRUE; - - wxNode *node = m_boxes.First(); - while (node) - { - GtkWidget *button = GTK_WIDGET( node->Data() ); - - if (window == button->window) return TRUE; - - node = node->Next(); - } - - return FALSE; -} diff --git a/src/gtk/radiobut.cpp b/src/gtk/radiobut.cpp deleted file mode 100644 index abf7ac99f2..0000000000 --- a/src/gtk/radiobut.cpp +++ /dev/null @@ -1,147 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: radiobut.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifdef __GNUG__ -#pragma implementation "radiobut.h" -#endif - -#include "wx/radiobut.h" -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -//----------------------------------------------------------------------------- -// data -//----------------------------------------------------------------------------- - -extern bool g_blockEventsOnDrag; - -//----------------------------------------------------------------------------- -// "clicked" -//----------------------------------------------------------------------------- - -static -void gtk_radiobutton_clicked_callback( GtkWidget *WXUNUSED(widget), wxRadioButton *rb ) -{ - if (!rb->HasVMT()) return; - - if (rb->m_blockFirstEvent) - { - rb->m_blockFirstEvent = FALSE; - return; - } - - if (g_blockEventsOnDrag) return; - - wxCommandEvent event( wxEVT_COMMAND_RADIOBUTTON_SELECTED, rb->GetId()); - event.SetInt( rb->GetValue() ); - event.SetEventObject( rb ); - rb->GetEventHandler()->ProcessEvent( event ); -} - -//----------------------------------------------------------------------------- -// wxRadioButton -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxRadioButton,wxControl) - -bool wxRadioButton::Create( wxWindow *parent, wxWindowID id, const wxString& label, - const wxPoint& pos, const wxSize& size, long style, - const wxValidator& validator, const wxString& name ) -{ - m_acceptsFocus = TRUE; - m_needParent = TRUE; - - wxSize newSize = size; - - PreCreation( parent, id, pos, newSize, style, name ); - - SetValidator( validator ); - - m_widget = gtk_radio_button_new_with_label( (GSList *) NULL, label ); - - m_theOtherRadioButtton = - gtk_radio_button_new_with_label( - gtk_radio_button_group( GTK_RADIO_BUTTON(m_widget) ), - "button2" ); - - SetLabel(label); - - m_blockFirstEvent = FALSE; - - if (newSize.x == -1) newSize.x = 22+gdk_string_measure( m_widget->style->font, label ); - if (newSize.y == -1) newSize.y = 26; - SetSize( newSize.x, newSize.y ); - - gtk_signal_connect( GTK_OBJECT(m_widget), "clicked", - GTK_SIGNAL_FUNC(gtk_radiobutton_clicked_callback), (gpointer*)this ); - - m_parent->AddChild( this ); - - (m_parent->m_insertCallback)( m_parent, this ); - - PostCreation(); - - SetBackgroundColour( parent->GetBackgroundColour() ); - SetForegroundColour( parent->GetForegroundColour() ); - - Show( TRUE ); - - return TRUE; -} - -void wxRadioButton::SetLabel( const wxString& label ) -{ - wxCHECK_RET( m_widget != NULL, "invalid radiobutton" ); - - wxControl::SetLabel( label ); - GtkButton *bin = GTK_BUTTON( m_widget ); - GtkLabel *g_label = GTK_LABEL( bin->child ); - gtk_label_set( g_label, GetLabel() ); -} - -void wxRadioButton::SetValue( bool val ) -{ - wxCHECK_RET( m_widget != NULL, "invalid radiobutton" ); - - if ( val == GetValue() ) - return; - - m_blockFirstEvent = TRUE; - - if (val) - gtk_toggle_button_set_state( GTK_TOGGLE_BUTTON(m_widget), TRUE ); - else - gtk_toggle_button_set_state( GTK_TOGGLE_BUTTON(m_theOtherRadioButtton), TRUE ); -} - -bool wxRadioButton::GetValue(void) const -{ - wxCHECK_MSG( m_widget != NULL, FALSE, "invalid radiobutton" ); - - return GTK_TOGGLE_BUTTON(m_widget)->active; -} - -void wxRadioButton::Enable( bool enable ) -{ - wxCHECK_RET( m_widget != NULL, "invalid radiobutton" ); - - wxControl::Enable( enable ); - - gtk_widget_set_sensitive( GTK_BUTTON(m_widget)->child, enable ); -} - -void wxRadioButton::ApplyWidgetStyle() -{ - SetWidgetStyle(); - gtk_widget_set_style( m_widget, m_widgetStyle ); - gtk_widget_set_style( GTK_BUTTON(m_widget)->child, m_widgetStyle ); -} - - diff --git a/src/gtk/region.cpp b/src/gtk/region.cpp deleted file mode 100644 index 305967bc7d..0000000000 --- a/src/gtk/region.cpp +++ /dev/null @@ -1,440 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: region.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "region.h" -#endif - -#include "wx/region.h" - -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -#ifdef __WXDEBUG__ -#ifdef NULL -#undef NULL -#endif -#define NULL ((void*)0L) -#endif - -//----------------------------------------------------------------------------- -// wxRegion -//----------------------------------------------------------------------------- - -class wxRegionRefData: public wxObjectRefData -{ - public: - - wxRegionRefData(void); - ~wxRegionRefData(void); - - public: - - GdkRegion *m_region; - wxList m_rects; -}; - -wxRegionRefData::wxRegionRefData(void) -{ - m_region = (GdkRegion *) NULL; -} - -wxRegionRefData::~wxRegionRefData(void) -{ - if (m_region) gdk_region_destroy( m_region ); - - wxNode *node = m_rects.First(); - while (node) - { - wxRect *r = (wxRect*)node->Data(); - delete r; - node = node->Next(); - } -} - -//----------------------------------------------------------------------------- - -#define M_REGIONDATA ((wxRegionRefData *)m_refData) - -IMPLEMENT_DYNAMIC_CLASS(wxRegion,wxGDIObject); - -wxRegion::wxRegion( long x, long y, long w, long h ) -{ - m_refData = new wxRegionRefData(); - GdkRegion *reg = gdk_region_new(); - GdkRectangle rect; - rect.x = x; - rect.y = y; - rect.width = w; - rect.height = h; - M_REGIONDATA->m_region = gdk_region_union_with_rect( reg, &rect ); - gdk_region_destroy( reg ); - M_REGIONDATA->m_rects.Append( (wxObject*) new wxRect(x,y,w,h) ); -} - -wxRegion::wxRegion( const wxPoint& topLeft, const wxPoint& bottomRight ) -{ - m_refData = new wxRegionRefData(); - GdkRegion *reg = gdk_region_new(); - GdkRectangle rect; - rect.x = topLeft.x; - rect.y = topLeft.y; - rect.width = bottomRight.x - rect.x; - rect.height = bottomRight.y - rect.y; - M_REGIONDATA->m_region = gdk_region_union_with_rect( reg, &rect ); - gdk_region_destroy( reg ); - M_REGIONDATA->m_rects.Append( (wxObject*) new wxRect(topLeft,bottomRight) ); -} - -wxRegion::wxRegion( const wxRect& rect ) -{ - m_refData = new wxRegionRefData(); - GdkRegion *reg = gdk_region_new(); - GdkRectangle g_rect; - g_rect.x = rect.x; - g_rect.y = rect.y; - g_rect.width = rect.width; - g_rect.height = rect.height; - M_REGIONDATA->m_region = gdk_region_union_with_rect( reg, &g_rect ); - gdk_region_destroy( reg ); - - wxNode *node = M_REGIONDATA->m_rects.First(); - while (node) - { - wxRect *r = (wxRect*)node->Data(); - M_REGIONDATA->m_rects.Append( (wxObject*) new wxRect(r->x,r->y,r->width,r->height) ); - node = node->Next(); - } -} - -wxRegion::wxRegion(void) -{ - m_refData = new wxRegionRefData(); - M_REGIONDATA->m_region = gdk_region_new(); -} - -wxRegion::~wxRegion(void) -{ -} - -bool wxRegion::operator == ( const wxRegion& region ) -{ - return m_refData == region.m_refData; -} - -bool wxRegion::operator != ( const wxRegion& region ) -{ - return m_refData != region.m_refData; -} - -void wxRegion::Clear(void) -{ - UnRef(); - m_refData = new wxRegionRefData(); - M_REGIONDATA->m_region = gdk_region_new(); -} - -bool wxRegion::Union( long x, long y, long width, long height ) -{ - GdkRectangle rect; - rect.x = x; - rect.y = y; - rect.width = width; - rect.height = height; - GdkRegion *reg = gdk_region_union_with_rect( M_REGIONDATA->m_region, &rect ); - gdk_region_destroy( M_REGIONDATA->m_region ); - M_REGIONDATA->m_region = reg; - M_REGIONDATA->m_rects.Append( (wxObject*) new wxRect(x,y,width,height) ); - return TRUE; -} - -bool wxRegion::Union( const wxRect& rect ) -{ - GdkRectangle g_rect; - g_rect.x = rect.x; - g_rect.y = rect.y; - g_rect.width = rect.width; - g_rect.height = rect.height; - GdkRegion *reg = gdk_region_union_with_rect( M_REGIONDATA->m_region, &g_rect ); - gdk_region_destroy( M_REGIONDATA->m_region ); - M_REGIONDATA->m_region = reg; - M_REGIONDATA->m_rects.Append( (wxObject*) new wxRect(rect.x,rect.y,rect.width,rect.height) ); - return TRUE; -} - -bool wxRegion::Union( const wxRegion& region ) -{ - GdkRegion *reg = gdk_regions_union( M_REGIONDATA->m_region, region.GetRegion() ); - gdk_region_destroy( M_REGIONDATA->m_region ); - M_REGIONDATA->m_region = reg; - - wxNode *node = region.GetRectList()->First(); - while (node) - { - wxRect *r = (wxRect*)node->Data(); - M_REGIONDATA->m_rects.Append( (wxObject*) new wxRect(r->x,r->y,r->width,r->height) ); - node = node->Next(); - } - - return TRUE; -} - -bool wxRegion::Intersect( long x, long y, long width, long height ) -{ - wxRegion reg( x, y, width, height ); - Intersect( reg ); - return TRUE; -} - -bool wxRegion::Intersect( const wxRect& rect ) -{ - wxRegion reg( rect ); - Intersect( reg ); - return TRUE; -} - -bool wxRegion::Intersect( const wxRegion& region ) -{ - GdkRegion *reg = gdk_regions_intersect( M_REGIONDATA->m_region, region.GetRegion() ); - gdk_region_destroy( M_REGIONDATA->m_region ); - M_REGIONDATA->m_region = reg; - return TRUE; -} - -bool wxRegion::Subtract( long x, long y, long width, long height ) -{ - wxRegion reg( x, y, width, height ); - Subtract( reg ); - return TRUE; -} - -bool wxRegion::Subtract( const wxRect& rect ) -{ - wxRegion reg( rect ); - Subtract( reg ); - return TRUE; -} - -bool wxRegion::Subtract( const wxRegion& region ) -{ - GdkRegion *reg = gdk_regions_subtract( M_REGIONDATA->m_region, region.GetRegion() ); - gdk_region_destroy( M_REGIONDATA->m_region ); - M_REGIONDATA->m_region = reg; - return TRUE; -} - -bool wxRegion::Xor( long x, long y, long width, long height ) -{ - wxRegion reg( x, y, width, height ); - Xor( reg ); - return TRUE; -} - -bool wxRegion::Xor( const wxRect& rect ) -{ - wxRegion reg( rect ); - Xor( reg ); - return TRUE; -} - -bool wxRegion::Xor( const wxRegion& region ) -{ - GdkRegion *reg = gdk_regions_xor( M_REGIONDATA->m_region, region.GetRegion() ); - gdk_region_destroy( M_REGIONDATA->m_region ); - M_REGIONDATA->m_region = reg; - - wxNode *node = region.GetRectList()->First(); - while (node) - { - wxRect *r = (wxRect*)node->Data(); - M_REGIONDATA->m_rects.Append( (wxObject*) new wxRect(r->x,r->y,r->width,r->height) ); - node = node->Next(); - } - - return TRUE; -} - -void wxRegion::GetBox( long& x, long& y, long&w, long &h ) const -{ - x = 0; - y = 0; - w = -1; - h = -1; - wxNode *node = GetRectList()->First(); - while (node) - { - wxRect *r = (wxRect*)node->Data(); - if (node == GetRectList()->First()) - { - x = r->x; - y = r->y; - w = r->width; - h = r->height; - } - else - { - if (r->x < x) - { - x = r->x; - w += x - r->x; - } - if (r->y < y) - { - y = r->y; - h += y - r->y; - } - if (r->width+r->x > x+w) - { - w = r->x + r->width - x; - } - if (r->height+r->y > y+h) - { - h = r->y + r->height - y; - } - } - node = node->Next(); - } -} - -wxRect wxRegion::GetBox(void) const -{ - long x = 0; - long y = 0; - long w = -1; - long h = -1; - GetBox( x, y, w, h ); - return wxRect( x, y, w, h ); -} - -bool wxRegion::Empty(void) const -{ - return gdk_region_empty( M_REGIONDATA->m_region ); -} - -wxRegionContain wxRegion::Contains( long x, long y ) const -{ - if (gdk_region_point_in( M_REGIONDATA->m_region, x, y )) - return wxInRegion; - else - return wxOutRegion; -} - -wxRegionContain wxRegion::Contains( long x, long y, long w, long h ) const -{ - GdkRectangle rect; - rect.x = x; - rect.y = y; - rect.width = w; - rect.height = h; - GdkOverlapType res = gdk_region_rect_in( M_REGIONDATA->m_region, &rect ); - switch (res) - { - case GDK_OVERLAP_RECTANGLE_IN: return wxInRegion; - case GDK_OVERLAP_RECTANGLE_OUT: return wxOutRegion; - case GDK_OVERLAP_RECTANGLE_PART: return wxPartRegion; - } - return wxOutRegion; -} - -wxRegionContain wxRegion::Contains(const wxPoint& pt) const -{ - return Contains( pt.x, pt.y ); -} - -wxRegionContain wxRegion::Contains(const wxRect& rect) const -{ - return Contains( rect.x, rect.y, rect.width, rect.height ); -} - -GdkRegion *wxRegion::GetRegion(void) const -{ - return M_REGIONDATA->m_region; -} - -wxList *wxRegion::GetRectList() const -{ - return &(M_REGIONDATA->m_rects); -} - -//----------------------------------------------------------------------------- -// wxRegion -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxRegionIterator,wxObject); - -wxRegionIterator::wxRegionIterator(void) -{ - m_current = 0; -} - -wxRegionIterator::wxRegionIterator( const wxRegion& region ) -{ - m_region = region; - m_current = 0; -} - -void wxRegionIterator::Reset( const wxRegion& region ) -{ - m_region = region; - m_current = 0; -} - -wxRegionIterator::operator bool (void) const -{ - return m_current < m_region.GetRectList()->Number(); -} - -bool wxRegionIterator::HaveRects(void) const -{ - return m_current < m_region.GetRectList()->Number(); -} - -void wxRegionIterator::operator ++ (void) -{ - if (m_current < m_region.GetRectList()->Number()) ++m_current; -} - -void wxRegionIterator::operator ++ (int) -{ - if (m_current < m_region.GetRectList()->Number()) ++m_current; -} - -long wxRegionIterator::GetX(void) const -{ - wxNode *node = m_region.GetRectList()->Nth( m_current ); - if (!node) return 0; - wxRect *r = (wxRect*)node->Data(); - return r->x; -} - -long wxRegionIterator::GetY(void) const -{ - wxNode *node = m_region.GetRectList()->Nth( m_current ); - if (!node) return 0; - wxRect *r = (wxRect*)node->Data(); - return r->y; -} - -long wxRegionIterator::GetW(void) const -{ - wxNode *node = m_region.GetRectList()->Nth( m_current ); - if (!node) return 0; - wxRect *r = (wxRect*)node->Data(); - return r->width; -} - -long wxRegionIterator::GetH(void) const -{ - wxNode *node = m_region.GetRectList()->Nth( m_current ); - if (!node) return 0; - wxRect *r = (wxRect*)node->Data(); - return r->height; -} - - diff --git a/src/gtk/scrolbar.cpp b/src/gtk/scrolbar.cpp deleted file mode 100644 index ee6d3eec70..0000000000 --- a/src/gtk/scrolbar.cpp +++ /dev/null @@ -1,298 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: scrolbar.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifdef __GNUG__ -#pragma implementation "scrolbar.h" -#endif - -#include "wx/scrolbar.h" -#include "wx/utils.h" -#include - -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -//----------------------------------------------------------------------------- -// data -//----------------------------------------------------------------------------- - -extern bool g_blockEventsOnDrag; -extern bool g_blockEventsOnScroll; - -//----------------------------------------------------------------------------- -// "value_changed" -//----------------------------------------------------------------------------- - -static void gtk_scrollbar_callback( GtkWidget *WXUNUSED(widget), wxScrollBar *win ) -{ - if (!win->HasVMT()) return; - if (g_blockEventsOnDrag) return; - - float diff = win->m_adjust->value - win->m_oldPos; - if (fabs(diff) < 0.2) return; - - wxEventType command = wxEVT_NULL; - - float line_step = win->m_adjust->step_increment; - float page_step = win->m_adjust->page_increment; - - if (win->m_isScrolling) - { - command = wxEVT_SCROLL_THUMBTRACK; - } - else - { - if (fabs(win->m_adjust->value-win->m_adjust->lower) < 0.2) command = wxEVT_SCROLL_BOTTOM; - else if (fabs(win->m_adjust->value-win->m_adjust->upper) < 0.2) command = wxEVT_SCROLL_TOP; - else if (fabs(diff-line_step) < 0.2) command = wxEVT_SCROLL_LINEDOWN; - else if (fabs(diff+line_step) < 0.2) command = wxEVT_SCROLL_LINEUP; - else if (fabs(diff-page_step) < 0.2) command = wxEVT_SCROLL_PAGEDOWN; - else if (fabs(diff+page_step) < 0.2) command = wxEVT_SCROLL_PAGEUP; - else command = wxEVT_SCROLL_THUMBTRACK; - } - - int value = (int)(win->m_adjust->value+0.5); - - int orient = wxHORIZONTAL; - if (win->GetWindowStyleFlag() & wxSB_VERTICAL == wxSB_VERTICAL) orient = wxVERTICAL; - - wxScrollEvent event( command, win->GetId(), value, orient ); - event.SetEventObject( win ); - win->GetEventHandler()->ProcessEvent( event ); - -/* - wxCommandEvent cevent( wxEVT_COMMAND_SCROLLBAR_UPDATED, win->GetId() ); - cevent.SetEventObject( win ); - win->ProcessEvent( cevent ); -*/ -} - -//----------------------------------------------------------------------------- -// "button_press_event" from slider -//----------------------------------------------------------------------------- - -static gint gtk_scrollbar_button_press_callback( GtkRange *WXUNUSED(widget), - GdkEventButton *WXUNUSED(gdk_event), - wxScrollBar *win ) -{ - win->m_isScrolling = TRUE; -// g_blockEventsOnScroll = TRUE; doesn't work in DialogEd - - return FALSE; -} - -//----------------------------------------------------------------------------- -// "button_release_event" from slider -//----------------------------------------------------------------------------- - -static gint gtk_scrollbar_button_release_callback( GtkRange *WXUNUSED(widget), - GdkEventButton *WXUNUSED(gdk_event), - wxScrollBar *win ) -{ - win->m_isScrolling = FALSE; -// g_blockEventsOnScroll = FALSE; - - gtk_signal_emit_by_name( GTK_OBJECT(win->m_adjust), "value_changed" ); - - return FALSE; -} - -//----------------------------------------------------------------------------- -// wxScrollBar -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxScrollBar,wxControl) - -wxScrollBar::~wxScrollBar(void) -{ -} - -bool wxScrollBar::Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos, const wxSize& size, - long style, const wxValidator& validator, const wxString& name ) -{ - m_needParent = TRUE; - m_acceptsFocus = TRUE; - - PreCreation( parent, id, pos, size, style, name ); - - SetValidator( validator ); - - m_oldPos = 0.0; - - if (style & wxSB_VERTICAL == wxSB_VERTICAL) - m_widget = gtk_hscrollbar_new( (GtkAdjustment *) NULL ); - else - m_widget = gtk_vscrollbar_new( (GtkAdjustment *) NULL ); - - m_adjust = gtk_range_get_adjustment( GTK_RANGE(m_widget) ); - - gtk_signal_connect( GTK_OBJECT(m_adjust), - "value_changed", - (GtkSignalFunc) gtk_scrollbar_callback, - (gpointer) this ); - - gtk_signal_connect( GTK_OBJECT(m_widget), - "button_press_event", - (GtkSignalFunc)gtk_scrollbar_button_press_callback, - (gpointer) this ); - - gtk_signal_connect( GTK_OBJECT(m_widget), - "button_release_event", - (GtkSignalFunc)gtk_scrollbar_button_release_callback, - (gpointer) this ); - - m_parent->AddChild( this ); - - (m_parent->m_insertCallback)( m_parent, this ); - - PostCreation(); - - SetBackgroundColour( parent->GetBackgroundColour() ); - - Show( TRUE ); - - return TRUE; -} - -int wxScrollBar::GetThumbPosition(void) const -{ - return (int)(m_adjust->value+0.5); -} - -int wxScrollBar::GetThumbSize() const -{ - return (int)(m_adjust->page_size+0.5); -} - -int wxScrollBar::GetPageSize() const -{ - return (int)(m_adjust->page_increment+0.5); -} - -int wxScrollBar::GetRange() const -{ - return (int)(m_adjust->upper+0.5); -} - -void wxScrollBar::SetThumbPosition( int viewStart ) -{ - if (m_isScrolling) return; - - float fpos = (float)viewStart; - m_oldPos = fpos; - if (fabs(fpos-m_adjust->value) < 0.2) return; - m_adjust->value = fpos; - - gtk_signal_emit_by_name( GTK_OBJECT(m_adjust), "value_changed" ); -} - -void wxScrollBar::SetScrollbar( int position, int thumbSize, int range, int pageSize, - bool WXUNUSED(refresh) ) -{ - float fpos = (float)position; - float frange = (float)range; - float fthumb = (float)thumbSize; - float fpage = (float)pageSize; - - if ((fabs(frange-m_adjust->upper) < 0.2) && - (fabs(fthumb-m_adjust->page_size) < 0.2) && - (fabs(fpage-m_adjust->page_increment) < 0.2)) - { - SetThumbPosition( position ); - return; - } - - m_oldPos = fpos; - - m_adjust->lower = 0.0; - m_adjust->upper = frange; - m_adjust->value = fpos; - m_adjust->step_increment = 1.0; - m_adjust->page_increment = (float)(wxMax(fpage,0)); - m_adjust->page_size = fthumb; - - gtk_signal_emit_by_name( GTK_OBJECT(m_adjust), "changed" ); -} - -/* Backward compatibility */ -int wxScrollBar::GetValue(void) const -{ - return GetThumbPosition(); -} - -void wxScrollBar::SetValue( int viewStart ) -{ - SetThumbPosition( viewStart ); -} - -void wxScrollBar::GetValues( int *viewStart, int *viewLength, int *objectLength, int *pageLength ) const -{ - int pos = (int)(m_adjust->value+0.5); - int thumb = (int)(m_adjust->page_size+0.5); - int page = (int)(m_adjust->page_increment+0.5); - int range = (int)(m_adjust->upper+0.5); - - *viewStart = pos; - *viewLength = range; - *objectLength = thumb; - *pageLength = page; -} - -int wxScrollBar::GetViewLength() const -{ - return (int)(m_adjust->upper+0.5); -} - -int wxScrollBar::GetObjectLength() const -{ - return (int)(m_adjust->page_size+0.5); -} - -void wxScrollBar::SetPageSize( int pageLength ) -{ - int pos = (int)(m_adjust->value+0.5); - int thumb = (int)(m_adjust->page_size+0.5); - int range = (int)(m_adjust->upper+0.5); - SetScrollbar( pos, thumb, range, pageLength ); -} - -void wxScrollBar::SetObjectLength( int objectLength ) -{ - int pos = (int)(m_adjust->value+0.5); - int page = (int)(m_adjust->page_increment+0.5); - int range = (int)(m_adjust->upper+0.5); - SetScrollbar( pos, objectLength, range, page ); -} - -void wxScrollBar::SetViewLength( int viewLength ) -{ - int pos = (int)(m_adjust->value+0.5); - int thumb = (int)(m_adjust->page_size+0.5); - int page = (int)(m_adjust->page_increment+0.5); - SetScrollbar( pos, thumb, viewLength, page ); -} - -bool wxScrollBar::IsOwnGtkWindow( GdkWindow *window ) -{ - GtkRange *range = GTK_RANGE(m_widget); - return ( (window == GTK_WIDGET(range)->window) || - (window == range->trough) || - (window == range->slider) || - (window == range->step_forw) || - (window == range->step_back) ); -} - -void wxScrollBar::ApplyWidgetStyle() -{ - SetWidgetStyle(); - gtk_widget_set_style( m_widget, m_widgetStyle ); -} - diff --git a/src/gtk/settings.cpp b/src/gtk/settings.cpp deleted file mode 100644 index 646386409a..0000000000 --- a/src/gtk/settings.cpp +++ /dev/null @@ -1,195 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: settings.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifdef __GNUG__ -#pragma implementation "settings.h" -#endif - -#include "wx/settings.h" -#include "wx/debug.h" - -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -/* -#define wxSYS_COLOUR_SCROLLBAR 0 -#define wxSYS_COLOUR_BACKGROUND 1 -#define wxSYS_COLOUR_ACTIVECAPTION 2 -#define wxSYS_COLOUR_INACTIVECAPTION 3 -#define wxSYS_COLOUR_MENU 4 -#define wxSYS_COLOUR_WINDOW 5 -#define wxSYS_COLOUR_WINDOWFRAME 6 -#define wxSYS_COLOUR_MENUTEXT 7 -#define wxSYS_COLOUR_WINDOWTEXT 8 -#define wxSYS_COLOUR_CAPTIONTEXT 9 -#define wxSYS_COLOUR_ACTIVEBORDER 10 -#define wxSYS_COLOUR_INACTIVEBORDER 11 -#define wxSYS_COLOUR_APPWORKSPACE 12 -#define wxSYS_COLOUR_HIGHLIGHT 13 -#define wxSYS_COLOUR_HIGHLIGHTTEXT 14 -#define wxSYS_COLOUR_BTNFACE 15 -#define wxSYS_COLOUR_BTNSHADOW 16 -#define wxSYS_COLOUR_GRAYTEXT 17 -#define wxSYS_COLOUR_BTNTEXT 18 -#define wxSYS_COLOUR_INACTIVECAPTIONTEXT 19 -#define wxSYS_COLOUR_BTNHIGHLIGHT 20 - -#define wxSYS_COLOUR_3DDKSHADOW 21 -#define wxSYS_COLOUR_3DLIGHT 22 -#define wxSYS_COLOUR_INFOTEXT 23 -#define wxSYS_COLOUR_INFOBK 24 - -#define wxSYS_COLOUR_DESKTOP wxSYS_COLOUR_BACKGROUND -#define wxSYS_COLOUR_3DFACE wxSYS_COLOUR_BTNFACE -#define wxSYS_COLOUR_3DSHADOW wxSYS_COLOUR_BTNSHADOW -#define wxSYS_COLOUR_3DHIGHLIGHT wxSYS_COLOUR_BTNHIGHLIGHT -#define wxSYS_COLOUR_3DHILIGHT wxSYS_COLOUR_BTNHIGHLIGHT -#define wxSYS_COLOUR_BTNHILIGHT wxSYS_COLOUR_BTNHIGHLIGHT -*/ - -#define SHIFT (8*(sizeof(short int)-sizeof(char))) - -wxColour *g_systemBtnFaceColour = (wxColour *) NULL; -wxColour *g_systemBtnShadowColour = (wxColour *) NULL; -wxColour *g_systemBtnHighlightColour = (wxColour *) NULL; -wxColour *g_systemHighlightColour = (wxColour *) NULL; - -wxFont *g_systemFont = (wxFont *) NULL; - -void wxSystemSettings::Done() -{ - wxDELETE(g_systemBtnFaceColour); - wxDELETE(g_systemBtnShadowColour); - wxDELETE(g_systemBtnHighlightColour); - wxDELETE(g_systemHighlightColour); - wxDELETE(g_systemFont); -} - -wxColour wxSystemSettings::GetSystemColour( int index ) -{ - switch (index) - { - case wxSYS_COLOUR_SCROLLBAR: - case wxSYS_COLOUR_BACKGROUND: - case wxSYS_COLOUR_ACTIVECAPTION: - case wxSYS_COLOUR_INACTIVECAPTION: - case wxSYS_COLOUR_MENU: - case wxSYS_COLOUR_WINDOW: - case wxSYS_COLOUR_WINDOWFRAME: - case wxSYS_COLOUR_ACTIVEBORDER: - case wxSYS_COLOUR_INACTIVEBORDER: - case wxSYS_COLOUR_BTNFACE: - { - GtkStyle *style = gtk_widget_get_default_style(); - if (!g_systemBtnFaceColour) - { - g_systemBtnFaceColour = - new wxColour( style->bg[0].red >> SHIFT, - style->bg[0].green >> SHIFT, - style->bg[0].blue >> SHIFT ); - } - return *g_systemBtnFaceColour; - } - case wxSYS_COLOUR_BTNSHADOW: - { - GtkStyle *style = gtk_widget_get_default_style(); - if (!g_systemBtnShadowColour) - { - g_systemBtnShadowColour = - new wxColour( style->dark[0].red >> SHIFT, - style->dark[0].green >> SHIFT, - style->dark[0].blue >> SHIFT ); - } - return *g_systemBtnShadowColour; - } - case wxSYS_COLOUR_GRAYTEXT: - case wxSYS_COLOUR_BTNHIGHLIGHT: - { - GtkStyle *style = gtk_widget_get_default_style(); - if (!g_systemBtnHighlightColour) - { - g_systemBtnHighlightColour = - new wxColour( style->light[0].red >> SHIFT, - style->light[0].green >> SHIFT, - style->light[0].blue >> SHIFT ); - } - return *g_systemBtnHighlightColour; - } - case wxSYS_COLOUR_HIGHLIGHT: - { - GtkStyle *style = gtk_widget_get_default_style(); - if (!g_systemHighlightColour) - { - g_systemHighlightColour = - new wxColour( style->bg[GTK_STATE_SELECTED].red >> SHIFT, - style->bg[GTK_STATE_SELECTED].green >> SHIFT, - style->bg[GTK_STATE_SELECTED].blue >> SHIFT ); - } - return *g_systemHighlightColour; - } - case wxSYS_COLOUR_MENUTEXT: - case wxSYS_COLOUR_WINDOWTEXT: - case wxSYS_COLOUR_CAPTIONTEXT: - case wxSYS_COLOUR_INACTIVECAPTIONTEXT: - case wxSYS_COLOUR_INFOTEXT: - { - return *wxBLACK; - } - case wxSYS_COLOUR_HIGHLIGHTTEXT: - { - return *wxWHITE; - } - case wxSYS_COLOUR_INFOBK: - case wxSYS_COLOUR_APPWORKSPACE: - { - return *wxWHITE; // ? - } - } - return *wxWHITE; -} - -wxFont wxSystemSettings::GetSystemFont( int index ) -{ - switch (index) - { - case wxSYS_OEM_FIXED_FONT: - case wxSYS_ANSI_FIXED_FONT: - case wxSYS_SYSTEM_FIXED_FONT: - { - return *wxNORMAL_FONT; - } - case wxSYS_ANSI_VAR_FONT: - case wxSYS_SYSTEM_FONT: - case wxSYS_DEVICE_DEFAULT_FONT: - case wxSYS_DEFAULT_GUI_FONT: - { - if (!g_systemFont) - g_systemFont = new wxFont( 12, wxSWISS, wxNORMAL, wxNORMAL ); - return *g_systemFont; - } - } - - return wxNullFont; -} - -int wxSystemSettings::GetSystemMetric( int index ) -{ - switch (index) - { - case wxSYS_SCREEN_X: return gdk_screen_width(); - case wxSYS_SCREEN_Y: return gdk_screen_height(); - case wxSYS_HSCROLL_Y: return 15; - case wxSYS_VSCROLL_X: return 15; - } - - wxCHECK_MSG( index, 0, "wxSystemSettings::GetSystemMetric not fully implemented" ); - - return 0; -} diff --git a/src/gtk/slider.cpp b/src/gtk/slider.cpp deleted file mode 100644 index 5f9c8915b6..0000000000 --- a/src/gtk/slider.cpp +++ /dev/null @@ -1,257 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: slider.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "slider.h" -#endif - -#include "wx/slider.h" -#include "wx/utils.h" -#include - -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -//----------------------------------------------------------------------------- -// data -//----------------------------------------------------------------------------- - -extern bool g_blockEventsOnDrag; - -//----------------------------------------------------------------------------- -// "value_changed" -//----------------------------------------------------------------------------- - -static void gtk_slider_callback( GtkWidget *WXUNUSED(widget), wxSlider *win ) -{ - if (!win->HasVMT()) return; - if (g_blockEventsOnDrag) return; - - float diff = win->m_adjust->value - win->m_oldPos; - if (fabs(diff) < 0.2) return; - - wxEventType command = wxEVT_NULL; - - float line_step = win->m_adjust->step_increment; - float page_step = win->m_adjust->page_increment; - - if (fabs(win->m_adjust->value-win->m_adjust->lower) < 0.2) command = wxEVT_SCROLL_BOTTOM; - else if (fabs(win->m_adjust->value-win->m_adjust->upper) < 0.2) command = wxEVT_SCROLL_TOP; - else if (fabs(diff-line_step) < 0.2) command = wxEVT_SCROLL_LINEDOWN; - else if (fabs(diff+line_step) < 0.2) command = wxEVT_SCROLL_LINEUP; - else if (fabs(diff-page_step) < 0.2) command = wxEVT_SCROLL_PAGEDOWN; - else if (fabs(diff+page_step) < 0.2) command = wxEVT_SCROLL_PAGEUP; - else command = wxEVT_SCROLL_THUMBTRACK; - - int value = (int)(win->m_adjust->value+0.5); - - int orient = wxHORIZONTAL; - if (win->GetWindowStyleFlag() & wxSB_VERTICAL == wxSB_VERTICAL) orient = wxVERTICAL; - - wxScrollEvent event( command, win->GetId(), value, orient ); - event.SetEventObject( win ); - win->ProcessEvent( event ); - - wxCommandEvent cevent( wxEVT_COMMAND_SLIDER_UPDATED, win->GetId() ); - cevent.SetEventObject( win ); - win->ProcessEvent( cevent ); -} - -//----------------------------------------------------------------------------- -// wxSlider -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxSlider,wxControl) - -wxSlider::wxSlider(void) -{ -} - -wxSlider::~wxSlider(void) -{ -} - -bool wxSlider::Create(wxWindow *parent, wxWindowID id, - int value, int minValue, int maxValue, - const wxPoint& pos, const wxSize& size, - long style, const wxValidator& validator, const wxString& name ) -{ - m_acceptsFocus = TRUE; - m_needParent = TRUE; - - PreCreation( parent, id, pos, size, style, name ); - - SetValidator( validator ); - - m_oldPos = 0.0; - - if (style & wxSL_VERTICAL == wxSL_VERTICAL) - m_widget = gtk_hscale_new( (GtkAdjustment *) NULL ); - else - m_widget = gtk_vscale_new( (GtkAdjustment *) NULL ); - - gtk_scale_set_draw_value( GTK_SCALE( m_widget ), FALSE ); - - m_adjust = gtk_range_get_adjustment( GTK_RANGE(m_widget) ); - - gtk_signal_connect( GTK_OBJECT(m_adjust), - "value_changed", - (GtkSignalFunc) gtk_slider_callback, - (gpointer) this ); - - SetRange( minValue, maxValue ); - SetValue( value ); - - m_parent->AddChild( this ); - - (m_parent->m_insertCallback)( m_parent, this ); - - PostCreation(); - - SetBackgroundColour( parent->GetBackgroundColour() ); - - Show( TRUE ); - - return TRUE; -} - -int wxSlider::GetValue(void) const -{ - return (int)(m_adjust->value+0.5); -} - -void wxSlider::SetValue( int value ) -{ - float fpos = (float)value; - m_oldPos = fpos; - if (fabs(fpos-m_adjust->value) < 0.2) return; - - m_adjust->value = fpos; - - gtk_signal_emit_by_name( GTK_OBJECT(m_adjust), "value_changed" ); -} - -void wxSlider::SetRange( int minValue, int maxValue ) -{ - float fmin = (float)minValue; - float fmax = (float)maxValue; - - if ((fabs(fmin-m_adjust->lower) < 0.2) && - (fabs(fmax-m_adjust->upper) < 0.2)) - { - return; - } - - m_adjust->lower = fmin; - m_adjust->upper = fmax; - - gtk_signal_emit_by_name( GTK_OBJECT(m_adjust), "changed" ); -} - -int wxSlider::GetMin(void) const -{ - return (int)(m_adjust->lower+0.5); -} - -int wxSlider::GetMax(void) const -{ - return (int)(m_adjust->upper+0.5); -} - -void wxSlider::SetPageSize( int pageSize ) -{ - float fpage = (float)pageSize; - - if (fabs(fpage-m_adjust->page_increment) < 0.2) return; - - m_adjust->page_increment = fpage; - - gtk_signal_emit_by_name( GTK_OBJECT(m_adjust), "changed" ); -} - -int wxSlider::GetPageSize(void) const -{ - return (int)(m_adjust->page_increment+0.5); -} - -void wxSlider::SetThumbLength( int len ) -{ - float flen = (float)len; - - if (fabs(flen-m_adjust->page_size) < 0.2) return; - - m_adjust->page_size = flen; - - gtk_signal_emit_by_name( GTK_OBJECT(m_adjust), "changed" ); -} - -int wxSlider::GetThumbLength(void) const -{ - return (int)(m_adjust->page_size+0.5); -} - -void wxSlider::SetLineSize( int WXUNUSED(lineSize) ) -{ -} - -int wxSlider::GetLineSize(void) const -{ - return 0; -} - -void wxSlider::SetTick( int WXUNUSED(tickPos) ) -{ -} - -void wxSlider::SetTickFreq( int WXUNUSED(n), int WXUNUSED(pos) ) -{ -} - -int wxSlider::GetTickFreq(void) const -{ - return 0; -} - -void wxSlider::ClearTicks(void) -{ -} - -void wxSlider::SetSelection( int WXUNUSED(minPos), int WXUNUSED(maxPos) ) -{ -} - -int wxSlider::GetSelEnd(void) const -{ - return 0; -} - -int wxSlider::GetSelStart(void) const -{ - return 0; -} - -void wxSlider::ClearSel(void) -{ -} - -bool wxSlider::IsOwnGtkWindow( GdkWindow *window ) -{ - GtkRange *range = GTK_RANGE(m_widget); - return ( (window == GTK_WIDGET(range)->window) || - (window == range->trough) || - (window == range->slider) || - (window == range->step_forw) || - (window == range->step_back) ); -} - -void wxSlider::ApplyWidgetStyle() -{ - SetWidgetStyle(); - gtk_widget_set_style( m_widget, m_widgetStyle ); -} diff --git a/src/gtk/spinbutt.cpp b/src/gtk/spinbutt.cpp deleted file mode 100644 index dfe03b27a1..0000000000 --- a/src/gtk/spinbutt.cpp +++ /dev/null @@ -1,201 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: spinbutt.cpp -// Purpose: wxSpinButton -// Author: Robert -// Modified by: -// RCS-ID: $Id$ -// Copyright: (c) Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "spinbutt.h" -#endif - -#include "wx/spinbutt.h" -#include "wx/utils.h" -#include - -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -//----------------------------------------------------------------------------- -// data -//----------------------------------------------------------------------------- - -extern bool g_blockEventsOnDrag; - -//----------------------------------------------------------------------------- -// "value_changed" -//----------------------------------------------------------------------------- - -static void gtk_spinbutt_callback( GtkWidget *WXUNUSED(widget), wxSpinButton *win ) -{ - if (!win->HasVMT()) return; - if (g_blockEventsOnDrag) return; - - float diff = win->m_adjust->value - win->m_oldPos; - if (fabs(diff) < 0.2) return; - - wxEventType command = wxEVT_NULL; - - float line_step = win->m_adjust->step_increment; - float page_step = win->m_adjust->page_increment; - - if (fabs(diff-line_step) < 0.2) command = wxEVT_SCROLL_LINEDOWN; - else if (fabs(diff+line_step) < 0.2) command = wxEVT_SCROLL_LINEUP; - else if (fabs(diff-page_step) < 0.2) command = wxEVT_SCROLL_PAGEDOWN; - else if (fabs(diff+page_step) < 0.2) command = wxEVT_SCROLL_PAGEUP; - else command = wxEVT_SCROLL_THUMBTRACK; - - int value = (int)(win->m_adjust->value+0.5); - - wxSpinEvent event( command, win->GetId()); - event.SetPosition( value ); - event.SetOrientation( wxVERTICAL ); - event.SetEventObject( win ); - - win->ProcessEvent( event ); -} - -//----------------------------------------------------------------------------- -// wxSpinButton -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxSpinButton,wxControl) - -BEGIN_EVENT_TABLE(wxSpinButton, wxControl) - EVT_SIZE(wxSpinButton::OnSize) -END_EVENT_TABLE() - -wxSpinButton::wxSpinButton() -{ -} - -bool wxSpinButton::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, - long style, const wxString& name) -{ - m_needParent = TRUE; - - wxSize new_size = size; - new_size.x = 16; - if (new_size.y == -1) new_size.y = 30; - - PreCreation( parent, id, pos, new_size, style, name ); - -// SetValidator( validator ); - - m_oldPos = 0.0; - - m_adjust = (GtkAdjustment*) gtk_adjustment_new( 0.0, 0.0, 100.0, 1.0, 5.0, 0.0); - - m_widget = gtk_spin_button_new( m_adjust, 0, 0 ); - - gtk_spin_button_set_wrap( GTK_SPIN_BUTTON(m_widget), (m_windowStyle & wxSP_WRAP) ); - - gtk_signal_connect( GTK_OBJECT (m_adjust), - "value_changed", - (GtkSignalFunc) gtk_spinbutt_callback, - (gpointer) this ); - - m_parent->AddChild( this ); - - (m_parent->m_insertCallback)( m_parent, this ); - - PostCreation(); - - SetBackgroundColour( parent->GetBackgroundColour() ); - - Show( TRUE ); - - return TRUE; -} - -wxSpinButton::~wxSpinButton() -{ -} - -int wxSpinButton::GetMin() const -{ - wxCHECK_MSG( (m_widget != NULL), 0, "invalid spin button" ); - - return (int)(m_adjust->lower+0.5); -} - -int wxSpinButton::GetMax() const -{ - wxCHECK_MSG( (m_widget != NULL), 0, "invalid spin button" ); - - return (int)(m_adjust->upper+0.5); -} - -int wxSpinButton::GetValue() const -{ - wxCHECK_MSG( (m_widget != NULL), 0, "invalid spin button" ); - - return (int)(m_adjust->value+0.5); -} - -void wxSpinButton::SetValue( int value ) -{ - wxCHECK_RET( (m_widget != NULL), "invalid spin button" ); - - float fpos = (float)value; - m_oldPos = fpos; - if (fabs(fpos-m_adjust->value) < 0.2) return; - - m_adjust->value = fpos; - - gtk_signal_emit_by_name( GTK_OBJECT(m_adjust), "value_changed" ); -} - -void wxSpinButton::SetRange(int minVal, int maxVal) -{ - wxCHECK_RET( (m_widget != NULL), "invalid spin button" ); - - float fmin = (float)minVal; - float fmax = (float)maxVal; - - if ((fabs(fmin-m_adjust->lower) < 0.2) && - (fabs(fmax-m_adjust->upper) < 0.2)) - { - return; - } - - m_adjust->lower = fmin; - m_adjust->upper = fmax; - - gtk_signal_emit_by_name( GTK_OBJECT(m_adjust), "changed" ); -} - -void wxSpinButton::OnSize( wxSizeEvent &WXUNUSED(event) ) -{ - wxCHECK_RET( (m_widget != NULL), "invalid spin button" ); - - m_width = 16; - gtk_widget_set_usize( m_widget, m_width, m_height ); -} - -bool wxSpinButton::IsOwnGtkWindow( GdkWindow *window ) -{ - return GTK_SPIN_BUTTON(m_widget)->panel == window; -} - -void wxSpinButton::ApplyWidgetStyle() -{ - SetWidgetStyle(); - gtk_widget_set_style( m_widget, m_widgetStyle ); -} - -//----------------------------------------------------------------------------- -// wxSpinEvent -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxSpinEvent, wxScrollEvent) - -wxSpinEvent::wxSpinEvent(wxEventType commandType, int id): - wxScrollEvent(commandType, id) -{ -} - - diff --git a/src/gtk/statbmp.cpp b/src/gtk/statbmp.cpp deleted file mode 100644 index 7d752190cd..0000000000 --- a/src/gtk/statbmp.cpp +++ /dev/null @@ -1,84 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: statbmp.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "statbmp.h" -#endif - -#include "wx/statbmp.h" - -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -//----------------------------------------------------------------------------- -// wxStaticBitmap -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxStaticBitmap,wxControl) - -wxStaticBitmap::wxStaticBitmap(void) -{ -} - -wxStaticBitmap::wxStaticBitmap( wxWindow *parent, wxWindowID id, const wxBitmap &bitmap, - const wxPoint &pos, const wxSize &size, - long style, const wxString &name ) -{ - Create( parent, id, bitmap, pos, size, style, name ); -} - -bool wxStaticBitmap::Create( wxWindow *parent, wxWindowID id, const wxBitmap &bitmap, - const wxPoint &pos, const wxSize &size, - long style, const wxString &name ) -{ - m_needParent = TRUE; - - wxSize newSize = size; - - PreCreation( parent, id, pos, size, style, name ); - - m_bitmap = bitmap; - - if (m_bitmap.Ok()) - { - GdkBitmap *mask = (GdkBitmap *) NULL; - if (m_bitmap.GetMask()) mask = m_bitmap.GetMask()->GetBitmap(); - m_widget = gtk_pixmap_new( m_bitmap.GetPixmap(), mask ); - - if (newSize.x == -1) newSize.x = m_bitmap.GetWidth(); - if (newSize.y == -1) newSize.y = m_bitmap.GetHeight(); - SetSize( newSize.x, newSize.y ); - } - else - { - m_widget = gtk_label_new( "Bitmap" ); - } - - m_parent->AddChild( this ); - - (m_parent->m_insertCallback)( m_parent, this ); - - PostCreation(); - - Show( TRUE ); - - return TRUE; -} - -void wxStaticBitmap::SetBitmap( const wxBitmap &bitmap ) -{ - m_bitmap = bitmap; - - if (m_bitmap.Ok()) - { - GdkBitmap *mask = (GdkBitmap *) NULL; - if (m_bitmap.GetMask()) mask = m_bitmap.GetMask()->GetBitmap(); - gtk_pixmap_set( GTK_PIXMAP(m_widget), m_bitmap.GetPixmap(), mask ); - } -} diff --git a/src/gtk/statbox.cpp b/src/gtk/statbox.cpp deleted file mode 100644 index e5239cc924..0000000000 --- a/src/gtk/statbox.cpp +++ /dev/null @@ -1,76 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: statbox.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "statbox.h" -#endif - -#include "wx/statbox.h" - -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -//----------------------------------------------------------------------------- -// wxStaticBox -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxStaticBox,wxControl) - -wxStaticBox::wxStaticBox(void) -{ -} - -wxStaticBox::wxStaticBox( wxWindow *parent, wxWindowID id, const wxString &label, - const wxPoint &pos, const wxSize &size, - long style, const wxString &name ) -{ - Create( parent, id, label, pos, size, style, name ); -} - -bool wxStaticBox::Create( wxWindow *parent, wxWindowID id, const wxString &label, - const wxPoint &pos, const wxSize &size, - long style, const wxString &name ) -{ - m_needParent = TRUE; - - PreCreation( parent, id, pos, size, style, name ); - - m_isStaticBox = TRUE; - - m_widget = gtk_frame_new(m_label); - - m_parent->AddChild( this ); - - (m_parent->m_insertCallback)( m_parent, this ); - - PostCreation(); - - SetLabel(label); - - SetBackgroundColour( parent->GetBackgroundColour() ); - SetForegroundColour( parent->GetForegroundColour() ); - - Show( TRUE ); - - return TRUE; -} - -void wxStaticBox::SetLabel( const wxString &label ) -{ - wxControl::SetLabel( label ); - GtkFrame *frame = GTK_FRAME( m_widget ); - gtk_frame_set_label( frame, GetLabel() ); -} - -void wxStaticBox::ApplyWidgetStyle() -{ - SetWidgetStyle(); - gtk_widget_set_style( m_widget, m_widgetStyle ); -} - diff --git a/src/gtk/stattext.cpp b/src/gtk/stattext.cpp deleted file mode 100644 index b1f31084a5..0000000000 --- a/src/gtk/stattext.cpp +++ /dev/null @@ -1,101 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: stattext.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifdef __GNUG__ -#pragma implementation "stattext.h" -#endif - -#include "wx/stattext.h" - -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -//----------------------------------------------------------------------------- -// wxStaticText -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxStaticText,wxControl) - -wxStaticText::wxStaticText(void) -{ -} - -wxStaticText::wxStaticText( wxWindow *parent, wxWindowID id, const wxString &label, - const wxPoint &pos, const wxSize &size, - long style, const wxString &name ) -{ - Create( parent, id, label, pos, size, style, name ); -} - -bool wxStaticText::Create( wxWindow *parent, wxWindowID id, const wxString &label, - const wxPoint &pos, const wxSize &size, - long style, const wxString &name ) -{ - m_needParent = TRUE; - - wxSize newSize = size; - - PreCreation( parent, id, pos, size, style, name ); - - wxControl::SetLabel(label); - m_widget = gtk_label_new( m_label ); - - GtkJustification justify; - if ( style & wxALIGN_CENTER ) - justify = GTK_JUSTIFY_CENTER; - else if ( style & wxALIGN_RIGHT ) - justify = GTK_JUSTIFY_RIGHT; - else // wxALIGN_LEFT is 0 - justify = GTK_JUSTIFY_LEFT; - gtk_label_set_justify(GTK_LABEL(m_widget), justify); - - GtkRequisition req; - (* GTK_WIDGET_CLASS( GTK_OBJECT(m_widget)->klass )->size_request ) (m_widget, &req ); - - if (newSize.x == -1) newSize.x = req.width; - if (newSize.y == -1) newSize.y = req.height; - - SetSize( newSize.x, newSize.y ); - - m_parent->AddChild( this ); - - (m_parent->m_insertCallback)( m_parent, this ); - - PostCreation(); - - SetBackgroundColour( parent->GetBackgroundColour() ); - SetForegroundColour( parent->GetForegroundColour() ); - - Show( TRUE ); - - return TRUE; -} - -wxString wxStaticText::GetLabel(void) const -{ - char *str = (char *) NULL; - gtk_label_get( GTK_LABEL(m_widget), &str ); - wxString tmp( str ); - return tmp; -} - -void wxStaticText::SetLabel( const wxString &label ) -{ - wxControl::SetLabel(label); - - gtk_label_set( GTK_LABEL(m_widget), m_label ); -} - -void wxStaticText::ApplyWidgetStyle() -{ - SetWidgetStyle(); - gtk_widget_set_style( m_widget, m_widgetStyle ); -} - diff --git a/src/gtk/tbargtk.cpp b/src/gtk/tbargtk.cpp deleted file mode 100644 index df1b967d1d..0000000000 --- a/src/gtk/tbargtk.cpp +++ /dev/null @@ -1,475 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: tbargtk.cpp -// Purpose: GTK toolbar -// Author: Robert Roebling -// RCS-ID: $Id$ -// Copyright: (c) Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "tbargtk.h" -#endif - -#include "wx/toolbar.h" - -#include "glib.h" -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -//----------------------------------------------------------------------------- -// data -//----------------------------------------------------------------------------- - -extern bool g_blockEventsOnDrag; - -//----------------------------------------------------------------------------- -// wxToolBarTool -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxToolBarTool,wxObject) - -wxToolBarTool::wxToolBarTool( wxToolBar *owner, int theIndex, - const wxBitmap& bitmap1, const wxBitmap& bitmap2, - bool toggle, - wxObject *clientData, - const wxString& shortHelpString, - const wxString& longHelpString, - GtkWidget *item ) -{ - m_owner = owner; - m_index = theIndex; - m_bitmap1 = bitmap1; - m_bitmap2 = bitmap2; - m_isToggle = toggle; - m_enabled = TRUE; - m_toggleState = FALSE; - m_shortHelpString = shortHelpString; - m_longHelpString = longHelpString; - m_isMenuCommand = TRUE; - m_clientData = clientData; - m_deleteSecondBitmap = FALSE; - m_item = item; -} - -wxToolBarTool::~wxToolBarTool() -{ -} - -//----------------------------------------------------------------------------- -// "clicked" (internal from gtk_toolbar) -//----------------------------------------------------------------------------- - -static void gtk_toolbar_callback( GtkWidget *WXUNUSED(widget), wxToolBarTool *tool ) -{ - if (g_blockEventsOnDrag) return; - if (!tool->m_enabled) return; - - if (tool->m_isToggle) tool->m_toggleState = !tool->m_toggleState; - - tool->m_owner->OnLeftClick( tool->m_index, tool->m_toggleState ); -} - -//----------------------------------------------------------------------------- -// "enter_notify_event" -//----------------------------------------------------------------------------- - -static gint gtk_toolbar_enter_callback( GtkWidget *WXUNUSED(widget), - GdkEventCrossing *WXUNUSED(gdk_event), wxToolBarTool *tool ) -{ - if (g_blockEventsOnDrag) return TRUE; - - tool->m_owner->OnMouseEnter( tool->m_index ); - - return FALSE; -} - -//----------------------------------------------------------------------------- -// wxToolBar -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxToolBar,wxControl) - -wxToolBar::wxToolBar() -{ -} - -wxToolBar::wxToolBar( wxWindow *parent, wxWindowID id, - const wxPoint& pos, const wxSize& size, - long style, const wxString& name ) -{ - Create( parent, id, pos, size, style, name ); -} - -wxToolBar::~wxToolBar() -{ - delete m_fg; - delete m_bg; -} - -bool wxToolBar::Create( wxWindow *parent, wxWindowID id, - const wxPoint& pos, const wxSize& size, - long style, const wxString& name ) -{ - m_needParent = TRUE; - - PreCreation( parent, id, pos, size, style, name ); - - m_tools.DeleteContents( TRUE ); - - m_toolbar = GTK_TOOLBAR( gtk_toolbar_new( GTK_ORIENTATION_HORIZONTAL, - GTK_TOOLBAR_ICONS ) ); - - m_separation = 5; - gtk_toolbar_set_space_size( m_toolbar, m_separation ); - m_hasToolAlready = FALSE; - - m_widget = GTK_WIDGET(m_toolbar); - - gtk_toolbar_set_tooltips( GTK_TOOLBAR(m_toolbar), TRUE ); - - m_fg = new GdkColor; - m_fg->red = 0; - m_fg->green = 0; - m_fg->blue = 0; - gdk_color_alloc( gtk_widget_get_colormap( GTK_WIDGET(m_toolbar) ), m_fg ); - - m_bg = new GdkColor; - m_bg->red = 65535; - m_bg->green = 65535; - m_bg->blue = 50000; - gdk_color_alloc( gtk_widget_get_colormap( GTK_WIDGET(m_toolbar) ), m_bg ); - - gtk_tooltips_set_colors( GTK_TOOLBAR(m_toolbar)->tooltips, m_bg, m_fg ); - - m_xMargin = 0; - m_yMargin = 0; - - m_parent->AddChild( this ); - - (m_parent->m_insertCallback)( m_parent, this ); - - PostCreation(); - - Show( TRUE ); - - return TRUE; -} - -bool wxToolBar::OnLeftClick( int toolIndex, bool toggleDown ) -{ - wxCommandEvent event( wxEVT_COMMAND_TOOL_CLICKED, toolIndex ); - event.SetEventObject(this); - event.SetInt( toolIndex ); - event.SetExtraLong((long) toggleDown); - - GetEventHandler()->ProcessEvent(event); - - return TRUE; -} - -void wxToolBar::OnRightClick( int toolIndex, float WXUNUSED(x), float WXUNUSED(y) ) -{ - wxCommandEvent event( wxEVT_COMMAND_TOOL_RCLICKED, toolIndex ); - event.SetEventObject( this ); - event.SetInt( toolIndex ); - - GetEventHandler()->ProcessEvent(event); -} - -void wxToolBar::OnMouseEnter( int toolIndex ) -{ - wxCommandEvent event( wxEVT_COMMAND_TOOL_ENTER, GetId() ); - event.SetEventObject(this); - event.SetInt( toolIndex ); - - GetEventHandler()->ProcessEvent(event); -} - -wxToolBarTool *wxToolBar::AddTool( int toolIndex, const wxBitmap& bitmap, - const wxBitmap& pushedBitmap, bool toggle, - float WXUNUSED(xPos), float WXUNUSED(yPos), wxObject *clientData, - const wxString& helpString1, const wxString& helpString2 ) -{ - m_hasToolAlready = TRUE; - - wxCHECK_MSG( bitmap.Ok(), (wxToolBarTool *)NULL, - "invalid bitmap for wxToolBar icon" ); - - wxCHECK_MSG( bitmap.GetBitmap() == NULL, (wxToolBarTool *)NULL, - "wxToolBar doesn't support GdkBitmap" ); - - wxCHECK_MSG( bitmap.GetPixmap() != NULL, (wxToolBarTool *)NULL, - "wxToolBar::Add needs a wxBitmap" ); - - GtkWidget *tool_pixmap = (GtkWidget *)NULL; - - GdkPixmap *pixmap = bitmap.GetPixmap(); - - GdkBitmap *mask = (GdkBitmap *)NULL; - if ( bitmap.GetMask() ) - mask = bitmap.GetMask()->GetBitmap(); - - tool_pixmap = gtk_pixmap_new( pixmap, mask ); - - gtk_misc_set_alignment( GTK_MISC(tool_pixmap), 0.5, 0.5 ); - - wxToolBarTool *tool = new wxToolBarTool( this, toolIndex, bitmap, pushedBitmap, - toggle, clientData, - helpString1, helpString2, - tool_pixmap ); - - GtkToolbarChildType ctype = toggle ? GTK_TOOLBAR_CHILD_TOGGLEBUTTON - : GTK_TOOLBAR_CHILD_BUTTON; - - GtkWidget *item = gtk_toolbar_append_element - ( - GTK_TOOLBAR(m_toolbar), - ctype, - (GtkWidget *)NULL, - (const char *)NULL, - helpString1, - "", - tool_pixmap, - (GtkSignalFunc)gtk_toolbar_callback, - (gpointer)tool - ); - - tool->m_item = item; - - gtk_signal_connect( GTK_OBJECT(tool->m_item), - "enter_notify_event", - GTK_SIGNAL_FUNC(gtk_toolbar_enter_callback), - (gpointer)tool ); - - m_tools.Append( tool ); - - return tool; -} - -void wxToolBar::AddSeparator() -{ - gtk_toolbar_append_space( m_toolbar ); -} - -void wxToolBar::ClearTools() -{ - wxFAIL_MSG( "wxToolBar::ClearTools not implemented" ); -} - -bool wxToolBar::Realize() -{ - m_x = 0; - m_y = 0; - m_width = 100; - m_height = 0; - - wxNode *node = m_tools.First(); - while (node) - { - wxToolBarTool *tool = (wxToolBarTool*)node->Data(); - if (tool->m_bitmap1.Ok()) - { - int tool_height = tool->m_bitmap1.GetHeight(); - if (tool_height > m_height) m_height = tool_height; - } - - node = node->Next(); - } - - m_height += 5 + 2*m_yMargin; - - return TRUE; -} - -void wxToolBar::EnableTool(int toolIndex, bool enable) -{ - wxNode *node = m_tools.First(); - while (node) - { - wxToolBarTool *tool = (wxToolBarTool*)node->Data(); - if (tool->m_index == toolIndex) - { - tool->m_enabled = enable; - - if (tool->m_item) - gtk_widget_set_sensitive( tool->m_item, enable ); - - return; - } - node = node->Next(); - } - - wxFAIL_MSG( "wrong toolbar index" ); -} - -void wxToolBar::ToggleTool( int toolIndex, bool toggle ) -{ - wxNode *node = m_tools.First(); - while (node) - { - wxToolBarTool *tool = (wxToolBarTool*)node->Data(); - if (tool->m_index == toolIndex) - { - tool->m_toggleState = toggle; - if ((tool->m_item) && (GTK_IS_TOGGLE_BUTTON(tool->m_item))) - gtk_toggle_button_set_state( GTK_TOGGLE_BUTTON(tool->m_item), toggle ); - return; - } - node = node->Next(); - } - - wxFAIL_MSG( "wrong toolbar index" ); -} - -wxObject *wxToolBar::GetToolClientData( int index ) const -{ - wxNode *node = m_tools.First(); - while (node) - { - wxToolBarTool *tool = (wxToolBarTool*)node->Data(); - if (tool->m_index == index) return tool->m_clientData;; - node = node->Next(); - } - - wxFAIL_MSG( "wrong toolbar index" ); - - return (wxObject*)NULL; -} - -bool wxToolBar::GetToolState(int toolIndex) const -{ - wxNode *node = m_tools.First(); - while (node) - { - wxToolBarTool *tool = (wxToolBarTool*)node->Data(); - if (tool->m_index == toolIndex) return tool->m_toggleState; - node = node->Next(); - } - - wxFAIL_MSG( "wrong toolbar index" ); - - return FALSE; -} - -bool wxToolBar::GetToolEnabled(int toolIndex) const -{ - wxNode *node = m_tools.First(); - while (node) - { - wxToolBarTool *tool = (wxToolBarTool*)node->Data(); - if (tool->m_index == toolIndex) return tool->m_enabled; - node = node->Next(); - } - - wxFAIL_MSG( "wrong toolbar index" ); - - return FALSE; -} - -void wxToolBar::SetMargins( int x, int y ) -{ - wxCHECK_RET( !m_hasToolAlready, "wxToolBar::SetMargins must be called before adding tool." ); - - if (x > 2) gtk_toolbar_append_space( m_toolbar ); // oh well - - m_xMargin = x; - m_yMargin = y; -} - -void wxToolBar::SetToolPacking( int WXUNUSED(packing) ) -{ - wxFAIL_MSG( "wxToolBar::SetToolPacking not implemented" ); -} - -void wxToolBar::SetToolSeparation( int separation ) -{ - gtk_toolbar_set_space_size( m_toolbar, separation ); - m_separation = separation; -} - -int wxToolBar::GetToolPacking() -{ - return 0; -} - -int wxToolBar::GetToolSeparation() -{ - return m_separation; -} - -wxString wxToolBar::GetToolLongHelp(int toolIndex) -{ - wxNode *node = m_tools.First(); - while (node) - { - wxToolBarTool *tool = (wxToolBarTool*)node->Data(); - if (tool->m_index == toolIndex) - { - return tool->m_longHelpString; - } - node = node->Next(); - } - - wxFAIL_MSG( "wrong toolbar index" ); - - return ""; -} - -wxString wxToolBar::GetToolShortHelp(int toolIndex) -{ - wxNode *node = m_tools.First(); - while (node) - { - wxToolBarTool *tool = (wxToolBarTool*)node->Data(); - if (tool->m_index == toolIndex) - { - return tool->m_shortHelpString; - } - node = node->Next(); - } - - wxFAIL_MSG( "wrong toolbar index" ); - - return ""; -} - -void wxToolBar::SetToolLongHelp(int toolIndex, const wxString& helpString) -{ - wxNode *node = m_tools.First(); - while (node) - { - wxToolBarTool *tool = (wxToolBarTool*)node->Data(); - if (tool->m_index == toolIndex) - { - tool->m_longHelpString = helpString; - return; - } - node = node->Next(); - } - - wxFAIL_MSG( "wrong toolbar index" ); - - return; -} - -void wxToolBar::SetToolShortHelp(int toolIndex, const wxString& helpString) -{ - wxNode *node = m_tools.First(); - while (node) - { - wxToolBarTool *tool = (wxToolBarTool*)node->Data(); - if (tool->m_index == toolIndex) - { - tool->m_shortHelpString = helpString; - return; - } - node = node->Next(); - } - - wxFAIL_MSG( "wrong toolbar index" ); - - return; -} - - diff --git a/src/gtk/textctrl.cpp b/src/gtk/textctrl.cpp deleted file mode 100644 index c738901fb5..0000000000 --- a/src/gtk/textctrl.cpp +++ /dev/null @@ -1,801 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: textctrl.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling, Vadim Zeitlin -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "textctrl.h" -#endif - -#include "wx/textctrl.h" -#include "wx/utils.h" -#include "wx/intl.h" -#include "wx/settings.h" - -#include -#include -#include - -#include "gdk/gdk.h" -#include "gtk/gtk.h" -#include "gdk/gdkkeysyms.h" - -//----------------------------------------------------------------------------- -// data -//----------------------------------------------------------------------------- - -extern bool g_blockEventsOnDrag; - -//----------------------------------------------------------------------------- -// "changed" -//----------------------------------------------------------------------------- - -static void -gtk_text_changed_callback( GtkWidget *WXUNUSED(widget), wxTextCtrl *win ) -{ - win->SetModified(); - - win->CalculateScrollbar(); - - wxCommandEvent event( wxEVT_COMMAND_TEXT_UPDATED, win->m_windowId ); - event.SetString( copystring(win->GetValue()) ); - event.SetEventObject( win ); - win->GetEventHandler()->ProcessEvent( event ); - delete[] event.GetString(); -} - -//----------------------------------------------------------------------------- -// "size_allocate" -//----------------------------------------------------------------------------- - -static void -gtk_text_size_callback( GtkWidget *WXUNUSED(widget), GtkAllocation* WXUNUSED(alloc), wxTextCtrl *win ) -{ - win->CalculateScrollbar(); -} - -//----------------------------------------------------------------------------- -// wxTextCtrl -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxTextCtrl,wxControl) - -BEGIN_EVENT_TABLE(wxTextCtrl, wxControl) - EVT_CHAR(wxTextCtrl::OnChar) -END_EVENT_TABLE() - -#ifndef NO_TEXT_WINDOW_STREAM -wxTextCtrl::wxTextCtrl() : streambuf() -{ - if (allocate()) setp(base(),ebuf()); - - m_modified = FALSE; -} -#else -wxTextCtrl::wxTextCtrl() -{ - m_modified = FALSE; -} -#endif - -#ifndef NO_TEXT_WINDOW_STREAM -wxTextCtrl::wxTextCtrl( wxWindow *parent, wxWindowID id, const wxString &value, - const wxPoint &pos, const wxSize &size, - int style, const wxValidator& validator, const wxString &name ) : streambuf() -{ - if (allocate()) setp(base(),ebuf()); - - m_modified = FALSE; - Create( parent, id, value, pos, size, style, validator, name ); -} -#else -wxTextCtrl::wxTextCtrl( wxWindow *parent, wxWindowID id, const wxString &value, - const wxPoint &pos, const wxSize &size, - int style, const wxValidator& validator, const wxString &name ) -{ - m_modified = FALSE; - Create( parent, id, value, pos, size, style, validator, name ); -} -#endif - -bool wxTextCtrl::Create( wxWindow *parent, wxWindowID id, const wxString &value, - const wxPoint &pos, const wxSize &size, - int style, const wxValidator& validator, const wxString &name ) -{ - m_needParent = TRUE; - m_acceptsFocus = TRUE; - - PreCreation( parent, id, pos, size, style, name ); - - SetValidator( validator ); - - m_vScrollbarVisible = TRUE; - - bool multi_line = (style & wxTE_MULTILINE) != 0; - if ( multi_line ) - { - // a multi-line edit control: create a vertical scrollbar by default and - // horizontal if requested - bool bHasHScrollbar = (style & wxHSCROLL) != 0; - - // create our control... - m_text = gtk_text_new( (GtkAdjustment *) NULL, (GtkAdjustment *) NULL ); - - // ... and put into the upper left hand corner of the table - m_widget = gtk_table_new(bHasHScrollbar ? 2 : 1, 2, FALSE); - gtk_table_attach( GTK_TABLE(m_widget), m_text, 0, 1, 0, 1, - (GtkAttachOptions)(GTK_FILL | GTK_EXPAND | GTK_SHRINK), - (GtkAttachOptions)(GTK_FILL | GTK_EXPAND | GTK_SHRINK), - 0, 0); - - // put the horizontal scrollbar in the lower left hand corner - if (bHasHScrollbar) - { - GtkWidget *hscrollbar = gtk_hscrollbar_new(GTK_TEXT(m_text)->hadj); - gtk_table_attach(GTK_TABLE(m_widget), hscrollbar, 0, 1, 1, 2, - (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), - GTK_FILL, - 0, 0); - gtk_widget_show(hscrollbar); - } - - // finally, put the vertical scrollbar in the upper right corner - m_vScrollbar = gtk_vscrollbar_new( GTK_TEXT(m_text)->vadj ); - gtk_table_attach(GTK_TABLE(m_widget), m_vScrollbar, 1, 2, 0, 1, - GTK_FILL, - (GtkAttachOptions)(GTK_EXPAND | GTK_FILL | GTK_SHRINK), - 0, 0); - gtk_widget_show( m_vScrollbar ); - - gtk_signal_connect( GTK_OBJECT(m_widget), "size_allocate", - GTK_SIGNAL_FUNC(gtk_text_size_callback), (gpointer)this ); - } - else - { - // a single-line text control: no need for scrollbars - m_widget = - m_text = gtk_entry_new(); - } - - wxSize newSize = size; - if (newSize.x == -1) newSize.x = 80; - if (newSize.y == -1) newSize.y = 26; - SetSize( newSize.x, newSize.y ); - - m_parent->AddChild( this ); - - (m_parent->m_insertCallback)( m_parent, this ); - - PostCreation(); - - if (multi_line) - { - gtk_widget_realize(m_text); - gtk_widget_show(m_text); - } - - // we want to be notified about text changes - gtk_signal_connect( GTK_OBJECT(m_text), "changed", - GTK_SIGNAL_FUNC(gtk_text_changed_callback), (gpointer)this); - - if (!value.IsNull()) - { - gint tmp = 0; - gtk_editable_insert_text( GTK_EDITABLE(m_text), value, value.Length(), &tmp ); - SetInsertionPointEnd(); - } - - if (style & wxTE_PASSWORD) - { - if (!multi_line) - gtk_entry_set_visibility( GTK_ENTRY(m_text), FALSE ); - } - - if (style & wxTE_READONLY) - { - if (!multi_line) - gtk_entry_set_editable( GTK_ENTRY(m_text), FALSE ); - } - else - { - if (multi_line) - gtk_text_set_editable( GTK_TEXT(m_text), 1 ); - } - - Show( TRUE ); - - SetBackgroundColour( parent->GetBackgroundColour() ); - SetForegroundColour( parent->GetForegroundColour() ); - - return TRUE; -} - -void wxTextCtrl::CalculateScrollbar() -{ - if ((m_windowStyle & wxTE_MULTILINE) == 0) return; - - GtkAdjustment *adj = GTK_TEXT(m_text)->vadj; - - if (adj->upper - adj->page_size < 0.8) - { - if (m_vScrollbarVisible) - { - gtk_widget_hide( m_vScrollbar ); - - m_vScrollbarVisible = FALSE; - } - } - else - { - if (!m_vScrollbarVisible) - { - gtk_widget_show( m_vScrollbar ); - - m_vScrollbarVisible = TRUE; - } - } -} - -wxString wxTextCtrl::GetValue() const -{ - wxCHECK_MSG( m_text != NULL, "", "invalid text ctrl" ); - - wxString tmp; - if (m_windowStyle & wxTE_MULTILINE) - { - gint len = gtk_text_get_length( GTK_TEXT(m_text) ); - char *text = gtk_editable_get_chars( GTK_EDITABLE(m_text), 0, len ); - tmp = text; - g_free( text ); - } - else - { - tmp = gtk_entry_get_text( GTK_ENTRY(m_text) ); - } - return tmp; -} - -void wxTextCtrl::SetValue( const wxString &value ) -{ - wxCHECK_RET( m_text != NULL, "invalid text ctrl" ); - - wxString tmp = ""; - if (!value.IsNull()) tmp = value; - if (m_windowStyle & wxTE_MULTILINE) - { - gint len = gtk_text_get_length( GTK_TEXT(m_text) ); - gtk_editable_delete_text( GTK_EDITABLE(m_text), 0, len ); - len = 0; - gtk_editable_insert_text( GTK_EDITABLE(m_text), tmp, tmp.Length(), &len ); - } - else - { - gtk_entry_set_text( GTK_ENTRY(m_text), tmp ); - } -} - -void wxTextCtrl::WriteText( const wxString &text ) -{ - wxCHECK_RET( m_text != NULL, "invalid text ctrl" ); - - if (text.IsNull()) return; - - if (m_windowStyle & wxTE_MULTILINE) - { - gint len = gtk_text_get_length( GTK_TEXT(m_text) ); - gtk_editable_insert_text( GTK_EDITABLE(m_text), text, text.Length(), &len ); - } - else - { - gtk_entry_append_text( GTK_ENTRY(m_text), text ); - } -} - -bool wxTextCtrl::LoadFile( const wxString &file ) -{ - wxCHECK_MSG( m_text != NULL, FALSE, "invalid text ctrl" ); - - if (!wxFileExists(file)) return FALSE; - - Clear(); - - FILE *fp = (FILE*) NULL; - struct stat statb; - - if ((stat ((char*) (const char*) file, &statb) == -1) || (statb.st_mode & S_IFMT) != S_IFREG || - !(fp = fopen ((char*) (const char*) file, "r"))) - { - return FALSE; - } - else - { - gint len = statb.st_size; - char *text; - if (!(text = (char*)malloc ((unsigned) (len + 1)))) - { - fclose (fp); - return FALSE; - } - if (fread (text, sizeof (char), len, fp) != (size_t) len) - { - } - fclose (fp); - - text[len] = 0; - - if (m_windowStyle & wxTE_MULTILINE) - { - gint pos = 0; - gtk_editable_insert_text( GTK_EDITABLE(m_text), text, len, &pos ); - } - else - { - gtk_entry_set_text( GTK_ENTRY(m_text), text ); - } - - free (text); - m_modified = FALSE; - return TRUE; - } - return FALSE; -} - -bool wxTextCtrl::SaveFile( const wxString &file ) -{ - wxCHECK_MSG( m_text != NULL, FALSE, "invalid text ctrl" ); - - if (file == "") return FALSE; - - FILE *fp; - - if (!(fp = fopen ((char*) (const char*) file, "w"))) - { - return FALSE; - } - else - { - char *text = (char*) NULL; - gint len = 0; - - if (m_windowStyle & wxTE_MULTILINE) - { - len = gtk_text_get_length( GTK_TEXT(m_text) ); - text = gtk_editable_get_chars( GTK_EDITABLE(m_text), 0, len ); - } - else - { - text = gtk_entry_get_text( GTK_ENTRY(m_text) ); - } - - if (fwrite (text, sizeof (char), len, fp) != (size_t) len) - { - // Did not write whole file - } - - // Make sure newline terminates the file - if (text[len - 1] != '\n') - fputc ('\n', fp); - - fclose (fp); - - if (m_windowStyle & wxTE_MULTILINE) g_free( text ); - - m_modified = FALSE; - return TRUE; - } - - return TRUE; -} - -wxString wxTextCtrl::GetLineText( long lineNo ) const -{ - if (m_windowStyle & wxTE_MULTILINE) - { - gint len = gtk_text_get_length( GTK_TEXT(m_text) ); - char *text = gtk_editable_get_chars( GTK_EDITABLE(m_text), 0, len ); - - if (text) - { - wxString buf(""); - long i; - int currentLine = 0; - for (i = 0; currentLine != lineNo && text[i]; i++ ) - if (text[i] == '\n') - currentLine++; - // Now get the text - int j; - for (j = 0; text[i] && text[i] != '\n'; i++, j++ ) - buf += text[i]; - - g_free( text ); - return buf; - } - else - return wxEmptyString; - } - else - { - if (lineNo == 0) return GetValue(); - return wxEmptyString; - } -} - -void wxTextCtrl::OnDropFiles( wxDropFilesEvent &WXUNUSED(event) ) -{ - wxFAIL_MSG( "wxTextCtrl::OnDropFiles not implemented" ); -} - -long wxTextCtrl::PositionToXY(long pos, long *x, long *y ) const -{ - if ( m_windowStyle & wxTE_MULTILINE ) - { - wxString text = GetValue(); - - // cast to prevent warning. But pos really should've been unsigned. - if( (unsigned long)pos > text.Len() ) - return FALSE; - - *x=1; // Col 1 - *y=1; // Line 1 - - if (pos == 0) - return TRUE; - - const char* stop = text.c_str() + pos; - for ( const char *p = text.c_str(); p < stop; p++ ) - { - if (*p == '\n') - { - (*y)++; - *x=1; - } - else - (*x)++; - } - } - else // single line control - { - if ( pos <= GTK_ENTRY(m_text)->text_length ) - { - *y = 1; - *x = pos; - } - else - { - // index out of bounds - return FALSE; - } - } - - return TRUE; -} - -long wxTextCtrl::XYToPosition(long x, long y ) const -{ - if (!(m_windowStyle & wxTE_MULTILINE)) return 0; - - long pos=0; - /* This is a kludge; our XY values are 1-based, but GetLineLength() - * and --Text() start counting at 0. (and so say the docs) */ - for( int i=1; icurrent_pos; -} - -long wxTextCtrl::GetLastPosition() const -{ - wxCHECK_MSG( m_text != NULL, 0, "invalid text ctrl" ); - - int pos = 0; - if (m_windowStyle & wxTE_MULTILINE) - pos = gtk_text_get_length( GTK_TEXT(m_text) ); - else - pos = GTK_ENTRY(m_text)->text_length; - - return (long)pos-1; -} - -void wxTextCtrl::Remove( long from, long to ) -{ - wxCHECK_RET( m_text != NULL, "invalid text ctrl" ); - - gtk_editable_delete_text( GTK_EDITABLE(m_text), (gint)from, (gint)to ); -} - -void wxTextCtrl::Replace( long from, long to, const wxString &value ) -{ - wxCHECK_RET( m_text != NULL, "invalid text ctrl" ); - - gtk_editable_delete_text( GTK_EDITABLE(m_text), (gint)from, (gint)to ); - if (value.IsNull()) return; - gint pos = (gint)from; - gtk_editable_insert_text( GTK_EDITABLE(m_text), value, value.Length(), &pos ); -} - -void wxTextCtrl::Cut() -{ - wxCHECK_RET( m_text != NULL, "invalid text ctrl" ); - -#if (GTK_MINOR_VERSION == 1) - gtk_editable_cut_clipboard( GTK_EDITABLE(m_text) ); -#else - gtk_editable_cut_clipboard( GTK_EDITABLE(m_text), 0 ); -#endif -} - -void wxTextCtrl::Copy() -{ - wxCHECK_RET( m_text != NULL, "invalid text ctrl" ); - -#if (GTK_MINOR_VERSION == 1) - gtk_editable_copy_clipboard( GTK_EDITABLE(m_text) ); -#else - gtk_editable_copy_clipboard( GTK_EDITABLE(m_text), 0 ); -#endif -} - -void wxTextCtrl::Paste() -{ - wxCHECK_RET( m_text != NULL, "invalid text ctrl" ); - -#if (GTK_MINOR_VERSION == 1) - gtk_editable_paste_clipboard( GTK_EDITABLE(m_text) ); -#else - gtk_editable_paste_clipboard( GTK_EDITABLE(m_text), 0 ); -#endif -} - -void wxTextCtrl::Clear() -{ - SetValue( "" ); -} - -void wxTextCtrl::OnChar( wxKeyEvent &key_event ) -{ - wxCHECK_RET( m_text != NULL, "invalid text ctrl" ); - - if ((key_event.KeyCode() == WXK_RETURN) && (m_windowStyle & wxPROCESS_ENTER)) - { - wxCommandEvent event(wxEVT_COMMAND_TEXT_ENTER, m_windowId); - event.SetEventObject(this); - if (GetEventHandler()->ProcessEvent(event)) return; - } - - key_event.Skip(); -} - -#ifndef NO_TEXT_WINDOW_STREAM -int wxTextCtrl::overflow( int WXUNUSED(c) ) -{ - int len = pptr() - pbase(); - char *txt = new char[len+1]; - strncpy(txt, pbase(), len); - txt[len] = '\0'; - (*this) << txt; - setp(pbase(), epptr()); - delete[] txt; - return EOF; -} - -int wxTextCtrl::sync() -{ - int len = pptr() - pbase(); - char *txt = new char[len+1]; - strncpy(txt, pbase(), len); - txt[len] = '\0'; - (*this) << txt; - setp(pbase(), epptr()); - delete[] txt; - return 0; -} - -int wxTextCtrl::underflow() -{ - return EOF; -} - -wxTextCtrl& wxTextCtrl::operator<<(const wxString& s) -{ - WriteText(s); - return *this; -} - -wxTextCtrl& wxTextCtrl::operator<<(float f) -{ - static char buf[100]; - sprintf(buf, "%.2f", f); - WriteText(buf); - return *this; -} - -wxTextCtrl& wxTextCtrl::operator<<(double d) -{ - static char buf[100]; - sprintf(buf, "%.2f", d); - WriteText(buf); - return *this; -} - -wxTextCtrl& wxTextCtrl::operator<<(int i) -{ - static char buf[100]; - sprintf(buf, "%i", i); - WriteText(buf); - return *this; -} - -wxTextCtrl& wxTextCtrl::operator<<(long i) -{ - static char buf[100]; - sprintf(buf, "%ld", i); - WriteText(buf); - return *this; -} - -wxTextCtrl& wxTextCtrl::operator<<(const char c) -{ - char buf[2]; - - buf[0] = c; - buf[1] = 0; - WriteText(buf); - return *this; -} -#endif - -GtkWidget* wxTextCtrl::GetConnectWidget() -{ - return GTK_WIDGET(m_text); -} - -bool wxTextCtrl::IsOwnGtkWindow( GdkWindow *window ) -{ - if (m_windowStyle & wxTE_MULTILINE) - return (window == GTK_TEXT(m_text)->text_area); - else - return (window == GTK_ENTRY(m_text)->text_area); -} - -void wxTextCtrl::SetFont( const wxFont &WXUNUSED(font) ) -{ - wxCHECK_RET( m_text != NULL, "invalid text ctrl" ); - - // doesn't work -} - -void wxTextCtrl::SetForegroundColour( const wxColour &WXUNUSED(colour) ) -{ - wxCHECK_RET( m_text != NULL, "invalid text ctrl" ); - - // doesn't work -} - -void wxTextCtrl::SetBackgroundColour( const wxColour &colour ) -{ - wxCHECK_RET( m_text != NULL, "invalid text ctrl" ); - - wxControl::SetBackgroundColour( colour ); - - wxColour sysbg = wxSystemSettings::GetSystemColour( wxSYS_COLOUR_BTNFACE ); - if (sysbg.Red() == colour.Red() && - sysbg.Green() == colour.Green() && - sysbg.Blue() == colour.Blue()) - { - return; - } - - if (!m_backgroundColour.Ok()) return; - - if (m_windowStyle & wxTE_MULTILINE) - { - GdkWindow *window = GTK_TEXT(m_text)->text_area; - m_backgroundColour.CalcPixel( gdk_window_get_colormap( window ) ); - gdk_window_set_background( window, m_backgroundColour.GetColor() ); - gdk_window_clear( window ); - } -} - -void wxTextCtrl::ApplyWidgetStyle() -{ - if (m_windowStyle & wxTE_MULTILINE) - { - // how ? - } - else - { - SetWidgetStyle(); - gtk_widget_set_style( m_text, m_widgetStyle ); - } -} - diff --git a/src/gtk/threadgui.inc b/src/gtk/threadgui.inc deleted file mode 100644 index 1717b172f6..0000000000 --- a/src/gtk/threadgui.inc +++ /dev/null @@ -1,80 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: threadgui.inc -// Purpose: GUI thread manager for GTK -// Author: Original from Wolfram Gloger/Guilhem Lavaux -// Modified by: -// Created: 04/22/98 -// RCS-ID: $Id$ -// Copyright: (c) Wolfram Gloger (1996, 1997); Guilhem Lavaux (1998) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#include -#include - -// for select() -#include -#include -#ifdef __sgi -#include -#endif - -#include - -///////////////////////////////////////////////////////////////////////////// -// Static variables -///////////////////////////////////////////////////////////////////////////// - -static int p_thrd_pipe[2] = { -1, -1 }; -// WorkProc in GTK -static gint p_thrd_inid; - -#define THREAD_SEND_EXIT_MSG(ptr) write(p_thrd_pipe[1], &ptr, sizeof(ptr)); - -static void -ThreadExitProc(gpointer WXUNUSED(client), gint fid, - GdkInputCondition WXUNUSED(cond)) -{ - wxThread* ptr; - - // printf( "thread exit proc.\n" ); - - if (fid != p_thrd_pipe[0]) - return; - - if (read(fid, &ptr, sizeof(ptr)) == sizeof(ptr)) - { - // printf( "calling OnExit %p\n", ptr); - ptr->OnExit(); - } - else - { - // printf( "this should never happen\n" ); - } -} - -// Global initialization -static void wxThreadGuiInit() -{ - pipe(p_thrd_pipe); - p_thrd_inid = gdk_input_add(p_thrd_pipe[0], GDK_INPUT_READ, - ThreadExitProc, 0); -} - -// Global cleanup -static void wxThreadGuiExit() -{ - gdk_input_remove(p_thrd_inid); - close(p_thrd_pipe[0]); - close(p_thrd_pipe[1]); -} - -void wxMutexGuiEnter() -{ - gs_mutexGui->Lock(); -} - -void wxMutexGuiLeave() -{ - gs_mutexGui->Unlock(); -} diff --git a/src/gtk/threadno.cpp b/src/gtk/threadno.cpp deleted file mode 100644 index 7299440456..0000000000 --- a/src/gtk/threadno.cpp +++ /dev/null @@ -1,186 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: thread.cpp -// Purpose: Solaris thread support -// Author: Guilhem Lavaux -// Modified by: -// Created: 04/22/98 -// RCS-ID: $Id$ -// Copyright: (c) Wolfram Gloger (1996, 1997); Guilhem Lavaux (1998) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation "thread.h" -#endif - -#include "wx/wx.h" -#include "wx/module.h" -#include "wx/thread.h" -#include "wx/log.h" - -wxMutex::wxMutex() -{ - m_locked = 0; -} - -wxMutex::~wxMutex() -{ - if (m_locked) - wxLogDebug( "wxMutex warning: destroying a locked mutex (%d locks)\n", m_locked ); -} - -wxMutexError wxMutex::Lock() -{ - m_locked++; - return wxMUTEX_NO_ERROR; -} - -wxMutexError wxMutex::TryLock() -{ - if (m_locked > 0) - return wxMUTEX_BUSY; - m_locked++; - return wxMUTEX_NO_ERROR; -} - -wxMutexError wxMutex::Unlock() -{ - if (m_locked == 0) - return wxMUTEX_UNLOCKED; - m_locked--; - return wxMUTEX_NO_ERROR; -} - -wxCondition::wxCondition() -{ -} - -wxCondition::~wxCondition() -{ -} - -void wxCondition::Wait(wxMutex& WXUNUSED(mutex)) -{ -} - -bool wxCondition::Wait(wxMutex& WXUNUSED(mutex), unsigned long WXUNUSED(sec), - unsigned long WXUNUSED(nsec)) -{ - return FALSE; -} - -void wxCondition::Signal() -{ -} - -void wxCondition::Broadcast() -{ -} - -struct wxThreadInternal { - int thread_id; - void* exit_status; -}; - -wxThreadError wxThread::Create() -{ - p_internal->exit_status = Entry(); - OnExit(); - return wxTHREAD_NO_ERROR; -} - -wxThreadError wxThread::Destroy() -{ - return wxTHREAD_NOT_RUNNING; -} - -wxThreadError wxThread::Pause() -{ - return wxTHREAD_NOT_RUNNING; -} - -wxThreadError wxThread::Resume() -{ - return wxTHREAD_NOT_RUNNING; -} - -void wxThread::DeferDestroy( bool WXUNUSED(on) ) -{ -} - -void wxThread::TestDestroy() -{ -} - -void *wxThread::Join() -{ - return p_internal->exit_status; -} - -unsigned long wxThread::GetID() const -{ - return 0; -} - -bool wxThread::IsMain() -{ - return TRUE; -} - -bool wxThread::IsRunning() const -{ - return FALSE; -} - -bool wxThread::IsAlive() const -{ - return FALSE; -} - -void wxThread::SetPriority(int WXUNUSED(prio)) { } -int wxThread::GetPriority() const { return 0; } - -wxMutex *wxMainMutex; // controls access to all GUI functions - -wxThread::wxThread() -{ - p_internal = new wxThreadInternal(); -} - -wxThread::~wxThread() -{ - Destroy(); - Join(); - delete p_internal; -} - -// The default callback just joins the thread and throws away the result. -void wxThread::OnExit() -{ - Join(); -} - - -IMPLEMENT_DYNAMIC_CLASS(wxThreadModule, wxModule) - -bool wxThreadModule::OnInit() -{ - wxMainMutex = new wxMutex(); - wxMainMutex->Lock(); - return TRUE; -} - -void wxThreadModule::OnExit() -{ - wxMainMutex->Unlock(); - delete wxMainMutex; -} - - - -void wxMutexGuiEnter() -{ -} - -void wxMutexGuiLeave() -{ -} diff --git a/src/gtk/threadpsx.cpp b/src/gtk/threadpsx.cpp deleted file mode 100644 index 79542d5e19..0000000000 --- a/src/gtk/threadpsx.cpp +++ /dev/null @@ -1,743 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: threadpsx.cpp -// Purpose: wxThread (Posix) Implementation -// Author: Original from Wolfram Gloger/Guilhem Lavaux -// Modified by: -// Created: 04/22/98 -// RCS-ID: $Id$ -// Copyright: (c) Wolfram Gloger (1996, 1997) -// Guilhem Lavaux (1998) -// Robert Roebling (1999) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ - #pragma implementation "thread.h" -#endif - -#include -#include -#include -#include - -#ifdef __linux__ - #include -#endif - -#include "wx/thread.h" -#include "wx/module.h" -#include "wx/utils.h" -#include "wx/log.h" -#include "wx/intl.h" -#include "wx/dynarray.h" - -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -enum thread_state -{ - STATE_NEW, // didn't start execution yet (=> RUNNING) - STATE_RUNNING, - STATE_PAUSED, - STATE_CANCELED, - STATE_EXITED -}; - -WX_DEFINE_ARRAY(wxThread *, wxArrayThread); - -// ----------------------------------------------------------------------------- -// global data -// ----------------------------------------------------------------------------- - -// we keep the list of all threads created by the application to be able to -// terminate them on exit if there are some left - otherwise the process would -// be left in memory -static wxArrayThread gs_allThreads; - -// the id of the main thread -static pthread_t gs_tidMain; - -// the key for the pointer to the associated wxThread object -static pthread_key_t gs_keySelf; - -// this mutex must be acquired before any call to a GUI function -static wxMutex *gs_mutexGui; - -//-------------------------------------------------------------------- -// common GUI thread code -//-------------------------------------------------------------------- - -#include "threadgui.inc" - -//-------------------------------------------------------------------- -// wxMutex (Posix implementation) -//-------------------------------------------------------------------- - -class wxMutexInternal -{ -public: - pthread_mutex_t p_mutex; -}; - -wxMutex::wxMutex() -{ - p_internal = new wxMutexInternal; - pthread_mutex_init( &(p_internal->p_mutex), (const pthread_mutexattr_t*) NULL ); - m_locked = 0; -} - -wxMutex::~wxMutex() -{ - if (m_locked > 0) - wxLogDebug("Freeing a locked mutex (%d locks)", m_locked); - - pthread_mutex_destroy( &(p_internal->p_mutex) ); - delete p_internal; -} - -wxMutexError wxMutex::Lock() -{ - int err = pthread_mutex_lock( &(p_internal->p_mutex) ); - if (err == EDEADLK) - { - wxLogDebug("Locking this mutex would lead to deadlock!"); - - return wxMUTEX_DEAD_LOCK; - } - - m_locked++; - - return wxMUTEX_NO_ERROR; -} - -wxMutexError wxMutex::TryLock() -{ - if (m_locked) - { - return wxMUTEX_BUSY; - } - - int err = pthread_mutex_trylock( &(p_internal->p_mutex) ); - switch (err) - { - case EBUSY: return wxMUTEX_BUSY; - } - - m_locked++; - - return wxMUTEX_NO_ERROR; -} - -wxMutexError wxMutex::Unlock() -{ - if (m_locked > 0) - { - m_locked--; - } - else - { - wxLogDebug("Unlocking not locked mutex."); - - return wxMUTEX_UNLOCKED; - } - - pthread_mutex_unlock( &(p_internal->p_mutex) ); - - return wxMUTEX_NO_ERROR; -} - -//-------------------------------------------------------------------- -// wxCondition (Posix implementation) -//-------------------------------------------------------------------- - -class wxConditionInternal -{ -public: - pthread_cond_t p_condition; -}; - -wxCondition::wxCondition() -{ - p_internal = new wxConditionInternal; - pthread_cond_init( &(p_internal->p_condition), (const pthread_condattr_t *) NULL ); -} - -wxCondition::~wxCondition() -{ - pthread_cond_destroy( &(p_internal->p_condition) ); - - delete p_internal; -} - -void wxCondition::Wait(wxMutex& mutex) -{ - pthread_cond_wait( &(p_internal->p_condition), &(mutex.p_internal->p_mutex) ); -} - -bool wxCondition::Wait(wxMutex& mutex, unsigned long sec, unsigned long nsec) -{ - struct timespec tspec; - - tspec.tv_sec = time(0L)+sec; - tspec.tv_nsec = nsec; - return (pthread_cond_timedwait(&(p_internal->p_condition), &(mutex.p_internal->p_mutex), &tspec) != ETIMEDOUT); -} - -void wxCondition::Signal() -{ - pthread_cond_signal( &(p_internal->p_condition) ); -} - -void wxCondition::Broadcast() -{ - pthread_cond_broadcast( &(p_internal->p_condition) ); -} - -//-------------------------------------------------------------------- -// wxThread (Posix implementation) -//-------------------------------------------------------------------- - -class wxThreadInternal -{ -public: - wxThreadInternal(); - ~wxThreadInternal(); - - // thread entry function - static void *PthreadStart(void *ptr); - - // thread actions - // start the thread - wxThreadError Run(); - // ask the thread to terminate - void Cancel(); - // wake up threads waiting for our termination - void SignalExit(); - // go to sleep until Resume() is called - void Pause(); - // resume the thread - void Resume(); - - // accessors - // priority - int GetPriority() const { return m_prio; } - void SetPriority(int prio) { m_prio = prio; } - // state - thread_state GetState() const { return m_state; } - void SetState(thread_state state) { m_state = state; } - // id - pthread_t GetId() const { return thread_id; } - // "cancelled" flag - bool WasCancelled() const { return m_cancelled; } - -//private: -- should be! - pthread_t thread_id; - -private: - thread_state m_state; // see thread_state enum - int m_prio; // in wxWindows units: from 0 to 100 - - // set when the thread should terminate - bool m_cancelled; - - // this (mutex, cond) pair is used to synchronize the main thread and this - // thread in several situations: - // 1. The thread function blocks until condition is signaled by Run() when - // it's initially created - this allows create thread in "suspended" - // state - // 2. The Delete() function blocks until the condition is signaled when the - // thread exits. - wxMutex m_mutex; - wxCondition m_cond; - - // another (mutex, cond) pair for Pause()/Resume() usage - // - // VZ: it's possible that we might reuse the mutex and condition from above - // for this too, but as I'm not at all sure that it won't create subtle - // problems with race conditions between, say, Pause() and Delete() I - // prefer this may be a bit less efficient but much safer solution - wxMutex m_mutexSuspend; - wxCondition m_condSuspend; -}; - -void *wxThreadInternal::PthreadStart(void *ptr) -{ - wxThread *thread = (wxThread *)ptr; - wxThreadInternal *pthread = thread->p_internal; - - if ( pthread_setspecific(gs_keySelf, thread) != 0 ) - { - wxLogError(_("Can not start thread: error writing TLS.")); - - return (void *)-1; - } - - // wait for the condition to be signaled from Run() - // mutex state: currently locked by the thread which created us - pthread->m_cond.Wait(pthread->m_mutex); - - // mutex state: locked again on exit of Wait() - - // call the main entry - void* status = thread->Entry(); - - // terminate the thread - thread->Exit(status); - - wxFAIL_MSG("wxThread::Exit() can't return."); - - return NULL; -} - -wxThreadInternal::wxThreadInternal() -{ - m_state = STATE_NEW; - m_cancelled = FALSE; - - // this mutex is locked during almost all thread lifetime - it will only be - // unlocked in the very end - m_mutex.Lock(); - - // this mutex is used in Pause()/Resume() and is also locked all the time - // unless the thread is paused - m_mutexSuspend.Lock(); -} - -wxThreadInternal::~wxThreadInternal() -{ - m_mutexSuspend.Unlock(); - - // note that m_mutex will be unlocked by the thread which waits for our - // termination -} - -wxThreadError wxThreadInternal::Run() -{ - wxCHECK_MSG( GetState() == STATE_NEW, wxTHREAD_RUNNING, - "thread may only be started once after successful Create()" ); - - // the mutex was locked on Create(), so we will be able to lock it again - // only when the thread really starts executing and enters the wait - - // otherwise we might signal the condition before anybody is waiting for it - wxMutexLocker lock(m_mutex); - m_cond.Signal(); - - m_state = STATE_RUNNING; - - return wxTHREAD_NO_ERROR; - - // now the mutex is unlocked back - but just to allow Wait() function to - // terminate by relocking it, so the net result is that the worker thread - // starts executing and the mutex is still locked -} - -void wxThreadInternal::Cancel() -{ - // if the thread we're waiting for is waiting for the GUI mutex, we will - // deadlock so make sure we release it temporarily - if ( wxThread::IsMain() ) - wxMutexGuiLeave(); - - // nobody ever writes this variable so it's safe to not use any - // synchronization here - m_cancelled = TRUE; - - // entering Wait() releases the mutex thus allowing SignalExit() to acquire - // it and to signal us its termination - m_cond.Wait(m_mutex); - - // mutex is still in the locked state - relocked on exit from Wait(), so - // unlock it - we don't need it any more, the thread has already terminated - m_mutex.Unlock(); - - // reacquire GUI mutex - if ( wxThread::IsMain() ) - wxMutexGuiEnter(); -} - -void wxThreadInternal::SignalExit() -{ - // as mutex is currently locked, this will block until some other thread - // (normally the same which created this one) unlocks it by entering Wait() - m_mutex.Lock(); - - // wake up all the threads waiting for our termination - m_cond.Broadcast(); - - // after this call mutex will be finally unlocked - m_mutex.Unlock(); -} - -void wxThreadInternal::Pause() -{ - wxCHECK_RET( m_state == STATE_PAUSED, - "thread must first be paused with wxThread::Pause()." ); - - // wait until the condition is signaled from Resume() - m_condSuspend.Wait(m_mutexSuspend); -} - -void wxThreadInternal::Resume() -{ - wxCHECK_RET( m_state == STATE_PAUSED, - "can't resume thread which is not suspended." ); - - // we will be able to lock this mutex only when Pause() starts waiting - wxMutexLocker lock(m_mutexSuspend); - m_condSuspend.Signal(); - - SetState(STATE_RUNNING); -} - -// ----------------------------------------------------------------------------- -// static functions -// ----------------------------------------------------------------------------- - -wxThread *wxThread::This() -{ - return (wxThread *)pthread_getspecific(gs_keySelf); -} - -bool wxThread::IsMain() -{ - return (bool)pthread_equal(pthread_self(), gs_tidMain); -} - -void wxThread::Yield() -{ - sched_yield(); -} - -void wxThread::Sleep(unsigned long milliseconds) -{ - // FIXME how to test for nanosleep() availability? - - usleep(milliseconds * 1000); // usleep(3) wants microseconds -} - -// ----------------------------------------------------------------------------- -// creating thread -// ----------------------------------------------------------------------------- - -wxThread::wxThread() -{ - // add this thread to the global list of all threads - gs_allThreads.Add(this); - - p_internal = new wxThreadInternal(); -} - -wxThreadError wxThread::Create() -{ - if (p_internal->GetState() != STATE_NEW) - return wxTHREAD_RUNNING; - - // set up the thread attribute: right now, we only set thread priority - pthread_attr_t attr; - pthread_attr_init(&attr); - - int prio; - if ( pthread_attr_getschedpolicy(&attr, &prio) != 0 ) - { - wxLogError(_("Can not retrieve thread scheduling policy.")); - } - - int min_prio = sched_get_priority_min(prio), - max_prio = sched_get_priority_max(prio); - - if ( min_prio == -1 || max_prio == -1 ) - { - wxLogError(_("Can not get priority range for scheduling policy %d."), - prio); - } - else - { - struct sched_param sp; - pthread_attr_getschedparam(&attr, &sp); - sp.sched_priority = min_prio + - (p_internal->GetPriority()*(max_prio-min_prio))/100; - pthread_attr_setschedparam(&attr, &sp); - } - - // create the new OS thread object - int rc = pthread_create(&p_internal->thread_id, &attr, - wxThreadInternal::PthreadStart, (void *)this); - pthread_attr_destroy(&attr); - - if ( rc != 0 ) - { - p_internal->SetState(STATE_EXITED); - return wxTHREAD_NO_RESOURCE; - } - - return wxTHREAD_NO_ERROR; -} - -wxThreadError wxThread::Run() -{ - return p_internal->Run(); -} - -// ----------------------------------------------------------------------------- -// misc accessors -// ----------------------------------------------------------------------------- - -void wxThread::SetPriority(unsigned int prio) -{ - wxCHECK_RET( (WXTHREAD_MIN_PRIORITY <= prio) && - (prio <= WXTHREAD_MAX_PRIORITY), "invalid thread priority" ); - - wxCriticalSectionLocker lock(m_critsect); - - switch ( p_internal->GetState() ) - { - case STATE_NEW: - // thread not yet started, priority will be set when it is - p_internal->SetPriority(prio); - break; - - case STATE_RUNNING: - case STATE_PAUSED: - { - struct sched_param sparam; - sparam.sched_priority = prio; - - if ( pthread_setschedparam(p_internal->GetId(), - SCHED_OTHER, &sparam) != 0 ) - { - wxLogError(_("Failed to set thread priority %d."), prio); - } - } - break; - - case STATE_EXITED: - default: - wxFAIL_MSG("impossible to set thread priority in this state"); - } -} - -unsigned int wxThread::GetPriority() const -{ - wxCriticalSectionLocker lock((wxCriticalSection &)m_critsect); - - return p_internal->GetPriority(); -} - -unsigned long wxThread::GetID() const -{ - return (unsigned long)p_internal->thread_id; -} - -// ----------------------------------------------------------------------------- -// pause/resume -// ----------------------------------------------------------------------------- - -wxThreadError wxThread::Pause() -{ - wxCriticalSectionLocker lock(m_critsect); - - if ( p_internal->GetState() != STATE_RUNNING ) - { - wxLogDebug("Can't pause thread which is not running."); - - return wxTHREAD_NOT_RUNNING; - } - - p_internal->SetState(STATE_PAUSED); - - return wxTHREAD_NO_ERROR; -} - -wxThreadError wxThread::Resume() -{ - wxCriticalSectionLocker lock(m_critsect); - - if ( p_internal->GetState() == STATE_PAUSED ) - { - p_internal->Resume(); - - return wxTHREAD_NO_ERROR; - } - else - { - wxLogDebug("Attempt to resume a thread which is not paused."); - - return wxTHREAD_MISC_ERROR; - } -} - -// ----------------------------------------------------------------------------- -// exiting thread -// ----------------------------------------------------------------------------- - -wxThread::ExitCode wxThread::Delete() -{ - m_critsect.Enter(); - thread_state state = p_internal->GetState(); - m_critsect.Leave(); - - switch ( state ) - { - case STATE_NEW: - case STATE_EXITED: - // nothing to do - break; - - case STATE_PAUSED: - // resume the thread first - Resume(); - - // fall through - - default: - // set the flag telling to the thread to stop and wait - p_internal->Cancel(); - } - - return NULL; -} - -wxThreadError wxThread::Kill() -{ - switch ( p_internal->GetState() ) - { - case STATE_NEW: - case STATE_EXITED: - return wxTHREAD_NOT_RUNNING; - - default: - if ( pthread_cancel(p_internal->GetId()) != 0 ) - { - wxLogError(_("Failed to terminate a thread.")); - - return wxTHREAD_MISC_ERROR; - } - - return wxTHREAD_NO_ERROR; - } -} - -void wxThread::Exit(void *status) -{ - // first call user-level clean up code - OnExit(); - - // next wake up the threads waiting for us (OTOH, this function won't return - // until someone waited for us!) - p_internal->SignalExit(); - - p_internal->SetState(STATE_EXITED); - - // delete both C++ thread object and terminate the OS thread object - delete this; - pthread_exit(status); -} - -// also test whether we were paused -bool wxThread::TestDestroy() -{ - wxCriticalSectionLocker lock((wxCriticalSection&)m_critsect); - - if ( p_internal->GetState() == STATE_PAUSED ) - { - // leave the crit section or the other threads will stop too if they try - // to call any of (seemingly harmless) IsXXX() functions while we sleep - m_critsect.Leave(); - - p_internal->Pause(); - - // enter it back before it's finally left in lock object dtor - m_critsect.Enter(); - } - - return p_internal->WasCancelled(); -} - -wxThread::~wxThread() -{ - // remove this thread from the global array - gs_allThreads.Remove(this); -} - -// ----------------------------------------------------------------------------- -// state tests -// ----------------------------------------------------------------------------- - -bool wxThread::IsRunning() const -{ - wxCriticalSectionLocker lock((wxCriticalSection &)m_critsect); - - return p_internal->GetState() == STATE_RUNNING; -} - -bool wxThread::IsAlive() const -{ - wxCriticalSectionLocker lock((wxCriticalSection&)m_critsect); - - switch ( p_internal->GetState() ) - { - case STATE_RUNNING: - case STATE_PAUSED: - return TRUE; - - default: - return FALSE; - } -} - -//-------------------------------------------------------------------- -// wxThreadModule -//-------------------------------------------------------------------- - -class wxThreadModule : public wxModule -{ -public: - virtual bool OnInit(); - virtual void OnExit(); - -private: - DECLARE_DYNAMIC_CLASS(wxThreadModule) -}; - -IMPLEMENT_DYNAMIC_CLASS(wxThreadModule, wxModule) - -bool wxThreadModule::OnInit() -{ - if ( pthread_key_create(&gs_keySelf, NULL /* dtor function */) != 0 ) - { - wxLogError(_("Thread module initialization failed: " - "failed to create pthread key.")); - - return FALSE; - } - - gs_mutexGui = new wxMutex(); - wxThreadGuiInit(); - gs_tidMain = pthread_self(); - gs_mutexGui->Lock(); - - return TRUE; -} - -void wxThreadModule::OnExit() -{ - wxASSERT_MSG( wxThread::IsMain(), "only main thread can be here" ); - - // terminate any threads left - size_t count = gs_allThreads.GetCount(); - if ( count != 0u ) - wxLogDebug("Some threads were not terminated by the application."); - - for ( size_t n = 0u; n < count; n++ ) - { - gs_allThreads[n]->Delete(); - } - - // destroy GUI mutex - gs_mutexGui->Unlock(); - wxThreadGuiExit(); - delete gs_mutexGui; - - // and free TLD slot - (void)pthread_key_delete(gs_keySelf); -} diff --git a/src/gtk/threadsgi.cpp b/src/gtk/threadsgi.cpp deleted file mode 100644 index 217f67d7d9..0000000000 --- a/src/gtk/threadsgi.cpp +++ /dev/null @@ -1,269 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: threadsgi.cpp -// Purpose: wxThread (SGI) Implementation -// Author: Original from Wolfram Gloger/Guilhem Lavaux -// Modified by: -// Created: 04/22/98 -// RCS-ID: $Id$ -// Copyright: (c) Wolfram Gloger (1996, 1997); Guilhem Lavaux (1998) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation "thread.h" -#endif - -#include -#include - -#include -#include -#include -#include "wx/thread.h" -#include "wx/module.h" -#include "wx/utils.h" -#include "wx/log.h" - -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -enum thread_state -{ - STATE_IDLE = 0, - STATE_RUNNING, - STATE_CANCELED, - STATE_EXITED -}; - -///////////////////////////////////////////////////////////////////////////// -// Static variables -///////////////////////////////////////////////////////////////////////////// - -static int p_mainid; -wxMutex *wxMainMutex; - -#include "threadgui.inc" - -///////////////////////////////////////////////////////////////////////////// -// Unix implementations (SGI threads) -///////////////////////////////////////////////////////////////////////////// - -class wxMutexInternal { -public: - abilock_t p_mutex; -}; - -wxMutex::wxMutex() -{ - m_locked = 0; - p_internal = new wxMutexInternal; - init_lock(&(p_internal->p_mutex)); -} - -wxMutex::~wxMutex() -{ - if (m_locked > 0) - wxLogDebug( "wxMutex warning: freeing a locked mutex (%d locks)\n", m_locked ); - delete p_internal; -} - -wxMutexError wxMutex::Lock() -{ - spin_lock(&(p_internal->p_mutex)); - m_locked++; - return wxMUTEX_NO_ERROR; -} - -wxMutexError wxMutex::TryLock() -{ - if (acquire_lock(&(p_internal->p_mutex)) != 0) - return wxMUTEX_BUSY; - m_locked++; - return wxMUTEX_NO_ERROR; -} - -wxMutexError wxMutex::Unlock() -{ - if (m_locked == 0) - return wxMUTEX_UNLOCKED; - release_lock(&(p_internal->p_mutex)); - m_locked--; - return wxMUTEX_NO_ERROR; -} - -// GL: Don't know how it works on SGI. Wolfram ? - -wxCondition::wxCondition() {} -wxCondition::~wxCondition() {} -int wxCondition::Wait(wxMutex& WXUNUSED(mutex)) { return 0;} -int wxCondition::Wait(wxMutex& WXUNUSED(mutex), unsigned long WXUNUSED(sec), - unsigned long WXUNUSED(nsec)) { return 0; } -int wxCondition::Signal() { return 0; } -int wxCondition::Broadcast() { return 0; } - -class -wxThreadPrivate { -public: - wxThreadPrivate() { thread_id = 0; state = STATE_IDLE; } - ~wxThreadPrivate() {} - static void SprocStart(void *ptr); - static void SignalHandler(int sig); -public: - int state, thread_id; - void* exit_status; -}; - -void wxThreadPrivate::SprocStart(void *ptr) -{ - void* status; - - wxThread *thr = (wxThread *)ptr; - - thr->p_internal->thread_id = getpid(); - thr->p_internal->exit_status = 0; - status = thr->Entry(); - thr->Exit(status); -} - -void wxThread::Exit(void* status) -{ - wxThread* ptr = this; - THREAD_SEND_EXIT_MSG(ptr); - p_internal->state = STATE_EXITED; - p_internal->exit_status = status; - _exit(0); -} - -wxThreadError wxThread::Create() -{ - if (p_internal->state != STATE_IDLE) - return wxTHREAD_RUNNING; - p_internal->state = STATE_RUNNING; - if (sproc(p_internal->SprocStart, PR_SALL, this) < 0) { - p_internal->state = STATE_IDLE; - return wxTHREAD_NO_RESOURCE; - } - return wxTHREAD_NO_ERROR; -} - -wxThreadError wxThread::Destroy() -{ - if (p_internal->state == STATE_RUNNING) - p_internal->state = STATE_CANCELED; - - return wxTHREAD_NO_ERROR; -} - -wxThreadError wxThread::Pause() -{ - return wxTHREAD_NO_ERROR; -} - -wxThreadError wxThread::Resume() -{ - return wxTHREAD_NO_ERROR; -} - -void *wxThread::Join() -{ - if (p_internal->state != STATE_IDLE) { - bool do_unlock = wxThread::IsMain(); - int stat; - - if (do_unlock) - wxMainMutex->Unlock(); - waitpid(p_internal->thread_id, &stat, 0); - if (do_unlock) - wxMainMutex->Lock(); - if (!WIFEXITED(stat) && !WIFSIGNALED(stat)) - return 0; - p_internal->state = STATE_IDLE; - return p_internal->exit_status; - } - return 0; -} - -unsigned long wxThread::GetID() const -{ - return (unsigned long)p_internal->thread_id; -} - -void wxThread::TestDestroy() -{ - if (p_internal->state == STATE_CANCELED) { - p_internal->exit_status = 0; - _exit(0); - } -} - -void wxThread::SetPriority(int prio) -{ -} - -int wxThread::GetPriority() const -{ - return 0; -} - -bool wxThread::IsMain() -{ - return (int)getpid() == main_id; -} - -bool wxThread::IsAlive() const -{ - return (p_internal->state == STATE_RUNNING); -} - -bool wxThread::IsRunning() const -{ - return (p_internal->state == STATE_RUNNING); -} - -wxThread::wxThread() -{ - p_internal = new wxThreadPrivate(); -} - -wxThread::~wxThread() -{ - Cancel(); - Join(); - delete p_internal; -} - -// The default callback just joins the thread and throws away the result. -void wxThread::OnExit() -{ - Join(); -} - -// Global initialization - -class wxThreadModule : public wxModule -{ -public: - virtual bool OnInit(); - virtual void OnExit(); - -private: - DECLARE_DYNAMIC_CLASS(wxThreadModule) -}; - -IMPLEMENT_DYNAMIC_CLASS(wxThreadModule, wxModule) - -bool wxThreadModule::OnInit() -{ - wxMainMutex = new wxMutex(); - wxThreadGuiInit(); - p_mainid = (int)getpid(); - wxMainMutex->Lock(); - return TRUE; -} - -void wxThreadModule::OnExit() -{ - wxMainMutex->Unlock(); - wxThreadGuiExit(); - delete wxMainMutex; -} - diff --git a/src/gtk/timer.cpp b/src/gtk/timer.cpp deleted file mode 100644 index fb74fc13dc..0000000000 --- a/src/gtk/timer.cpp +++ /dev/null @@ -1,117 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: timer.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifdef __GNUG__ -#pragma implementation "timer.h" -#endif - -#include "wx/timer.h" - -#include "gtk/gtk.h" -/* -#include "glib.h" -*/ - -//----------------------------------------------------------------------------- -// global functions -//----------------------------------------------------------------------------- - -/* -static GTimer *g_timer = (GTimer*) NULL; - -void wxStartTimer() -{ - if (g_timer) - { - g_timer_rest( g_timer ); - } - else - { - g_timer = g_timer_new(); - g_timer_start( g_timer ); - } -} - -long wxGetElapsedTime( bool resetTimer ) -{ - gulong res = 0; - if (g_timer) - { - g_timer_elapsed( g_timer, &res ); - if (resetTimer) g_timer_reset( g_timer ); - } - - return res; -} - -bool wxGetLocalTime( long *timeZone, int *dstObserved ) -{ -} - -long wxGetCurrentTime() -{ -} -*/ - - -//----------------------------------------------------------------------------- -// wxTimer -//----------------------------------------------------------------------------- - -IMPLEMENT_ABSTRACT_CLASS(wxTimer,wxObject) - -gint timeout_callback( gpointer data ) -{ - wxTimer *timer = (wxTimer*)data; - timer->Notify(); - - if (timer->OneShot()) - { - timer->Stop(); - } - - return TRUE; -} - -wxTimer::wxTimer() -{ - m_tag = -1; - m_time = 1000; - m_oneShot = FALSE; -} - -wxTimer::~wxTimer() -{ - Stop(); -} - -bool wxTimer::Start( int millisecs, bool oneShot ) -{ - if (millisecs != -1) - { - m_time = millisecs; - } - - m_oneShot = oneShot; - - m_tag = gtk_timeout_add( millisecs, timeout_callback, this ); - - return TRUE; -} - -void wxTimer::Stop() -{ - if (m_tag != -1) - { - gtk_timeout_remove( m_tag ); - m_tag = -1; - } -} - diff --git a/src/gtk/tooltip.cpp b/src/gtk/tooltip.cpp deleted file mode 100644 index f3e3acb598..0000000000 --- a/src/gtk/tooltip.cpp +++ /dev/null @@ -1,84 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: tooltip.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "tooltip.h" -#endif - -#include "wx/tooltip.h" - -#include "gtk/gtk.h" -#include "gdk/gdk.h" - -//----------------------------------------------------------------------------- -// wxToolTip -//----------------------------------------------------------------------------- - -wxToolTip::wxToolTip( const wxString &tip ) -{ - m_text = tip; - - m_tooltips = (GtkTooltips*) NULL; - - m_fg = new GdkColor; - m_fg->red = 0; - m_fg->green = 0; - m_fg->blue = 0; - - m_bg = new GdkColor; - m_bg->red = 65535; - m_bg->green = 65535; - m_bg->blue = 50000; -} - -wxToolTip::~wxToolTip() -{ - gtk_object_unref( GTK_OBJECT(m_tooltips) ); - - delete m_fg; - delete m_bg; -} - -bool wxToolTip::Ok() -{ - return (m_tooltips); -} - -void wxToolTip::Create( GtkWidget *tool ) -{ - if (!m_tooltips) - { - m_tooltips = gtk_tooltips_new(); - - gdk_color_alloc( gtk_widget_get_colormap( tool ), m_fg ); - gdk_color_alloc( gtk_widget_get_colormap( tool ), m_bg ); - - gtk_tooltips_set_colors( m_tooltips, m_bg, m_fg ); - } - - gtk_tooltips_set_tip( m_tooltips, tool, m_text, (gchar*) NULL ); -} - -void wxToolTip::Enable( bool flag ) -{ - if (!Ok()) return; - - if (flag) - gtk_tooltips_enable( m_tooltips ); - else - gtk_tooltips_disable( m_tooltips ); -} - -void wxToolTip::SetDelay( long msecs ) -{ - if (!Ok()) return; - - gtk_tooltips_set_delay( m_tooltips, msecs ); -} - diff --git a/src/gtk/treectrl.cpp b/src/gtk/treectrl.cpp deleted file mode 100644 index b1df8d5abc..0000000000 --- a/src/gtk/treectrl.cpp +++ /dev/null @@ -1,938 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: treectrl.cpp -// Purpose: wxTreeCtrl -// Author: Denis Pershin -// Modified by: -// Created: 07/05/98 -// RCS-ID: $Id$ -// Copyright: (c) Denis Pershin -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "treectrl.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include "wx/gtk/treectrl.h" -#include -#include "wx/log.h" - -#include - -//static void wxConvertToGtkTreeItem(wxTreeCtrl *owner, wxTreeItem& info, GtkTreeItem **gtkItem); -//static void wxConvertFromGtkTreeItem(wxTreeItem& info, GtkTreeItem *gtkItem); - -static void gtk_treectrl_count_callback (GtkWidget *widget, gpointer data); -static void gtk_treectrl_first_selected_callback(GtkWidget *widget, gpointer data); -static void gtk_treectrl_first_visible_callback(GtkWidget *widget, gpointer data); - -// static void gtk_treectrl_next_callback (GtkWidget *widget, gpointer data); -// static void gtk_treectrl_next_visible_callback (GtkWidget *widget, gpointer data); -// static void gtk_treectrl_next_selected_callback (GtkWidget *widget, gpointer data); - -static void gtk_treeitem_expand_callback(GtkWidget *widget, wxTreeItemId *treeitem); -static void gtk_treeitem_collapse_callback(GtkWidget *widget, wxTreeItemId *treeitem); -static void gtk_treeitem_select_callback(GtkWidget *widget, wxTreeItemId *treeitem); - -static void gtk_treeitem_expand_callback(GtkWidget *widget, wxTreeItemId *treeitem) { - wxTreeCtrl *owner = (wxTreeCtrl *)gtk_object_get_data(GTK_OBJECT(widget), "owner"); - if (owner == NULL) - return; - -// long id = (long)gtk_object_get_data(GTK_OBJECT(widget), "id"); - owner->SendExpanding(GTK_TREE_ITEM(widget)); - owner->SendExpanded(GTK_TREE_ITEM(widget)); -}; - -static void gtk_treeitem_collapse_callback(GtkWidget *widget, wxTreeItemId *treeitem) { - wxTreeCtrl *owner = (wxTreeCtrl *)gtk_object_get_data(GTK_OBJECT(widget), "owner"); - if (owner == NULL) - return; - -// long id = (long)gtk_object_get_data(GTK_OBJECT(widget), "id"); - owner->SendCollapsing(GTK_TREE_ITEM(widget)); - owner->SendCollapsed(GTK_TREE_ITEM(widget)); -}; - -static void gtk_treeitem_select_callback(GtkWidget *widget, wxTreeItemId *treeitem) { - wxTreeCtrl *owner = (wxTreeCtrl *)gtk_object_get_data(GTK_OBJECT(widget), "owner"); - if (owner == NULL) - return; - -// long id = (long)gtk_object_get_data(GTK_OBJECT(widget), "id"); - owner->SendSelChanging(GTK_TREE_ITEM(widget)); - owner->SendSelChanged(GTK_TREE_ITEM(widget)); -} - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxTreeCtrl, wxControl) - -#endif - -void wxTreeCtrl::Init() { - m_imageListNormal = NULL; - m_imageListState = NULL; - m_textCtrl = NULL; -} - -bool wxTreeCtrl::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, const wxString& name) { - Init(); - - int x = pos.x; - int y = pos.y; - int width = size.x; - int height = size.y; - - m_windowStyle = style; - - SetParent(parent); - - if (width <= 0) - width = 100; - if (height <= 0) - height = 30; - if (x < 0) - x = 0; - if (y < 0) - y = 0; - - m_needParent = TRUE; - -printf("precreate\n"); - PreCreation( parent, id, pos, size, style, name ); - -printf("1\n"); - - m_widget = gtk_scrolled_window_new(NULL, NULL); -printf("2\n"); - gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(m_widget), - GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); - -printf("3\n"); - m_tree = GTK_TREE(gtk_tree_new()); - -printf("4\n"); - gtk_container_add(GTK_CONTAINER(m_widget), GTK_WIDGET(m_tree)); -printf("5\n"); - gtk_widget_show(GTK_WIDGET(m_tree)); - - SetName(name); - SetValidator(validator); - -printf("Robert's new insertion code :-)\n"); - m_parent->AddChild( this ); - (m_parent->m_insertCallback)( m_parent, this ); - -printf("postcreate\n"); - PostCreation(); - - gtk_widget_realize(GTK_WIDGET(m_tree)); - - Show(TRUE); - - return TRUE; -} - -wxTreeCtrl::~wxTreeCtrl(void) { - if (m_textCtrl) - delete m_textCtrl; -} - -// Attributes -static void gtk_treectrl_count_callback (GtkWidget *widget, gpointer data) { - int count = (*((int *)data)); - - count++; - if (GTK_IS_CONTAINER(widget)) - gtk_container_foreach(GTK_CONTAINER(widget), gtk_treectrl_count_callback, data); -} - -size_t wxTreeCtrl::GetCount() const { - int count = 0; - - if (m_anchor != NULL) - gtk_treectrl_count_callback(GTK_WIDGET(m_anchor), &count); - return count; -} - -unsigned int wxTreeCtrl::GetIndent() const { - return m_tree->indent_value; -} - -void wxTreeCtrl::SetIndent(unsigned int indent) { - m_tree->indent_value = indent; -} - -wxImageList *wxTreeCtrl::GetImageList() const { - return m_imageListNormal; -} - -wxImageList *wxTreeCtrl::GetStateImageList() const { - return m_imageListState; -} - -void wxTreeCtrl::SetImageList(wxImageList *imageList) { - m_imageListNormal = imageList; -} - -void wxTreeCtrl::SetStateImageList(wxImageList *imageList) { - m_imageListState = imageList; -} - -wxString wxTreeCtrl::GetItemText(const wxTreeItemId &item) const { - char *t; - - if (!item.IsOk()) - return wxString(""); - - GtkLabel *l = GTK_LABEL(gtk_object_get_data(GTK_OBJECT((GtkTreeItem *)item), "w_label")); - gtk_label_get(l, &t); - - return t; -} - -int wxTreeCtrl::GetItemImage(const wxTreeItemId& item) const { - if (!item.IsOk()) - return (-1); - - return (int)gtk_object_get_data(GTK_OBJECT((GtkTreeItem *)item), "image"); -} - -int wxTreeCtrl::GetItemSelectedImage(const wxTreeItemId& item) const { - if (!item.IsOk()) - return (-1); - - return (int)gtk_object_get_data(GTK_OBJECT((GtkTreeItem *)item), "selectedImage"); -} - -wxTreeItemData *wxTreeCtrl::GetItemData(const wxTreeItemId& item) const { - if (!item.IsOk()) - return NULL; - - return (wxTreeItemData *)gtk_object_get_data(GTK_OBJECT((GtkTreeItem *)item), "data"); -} - -void wxTreeCtrl::SetItemText(const wxTreeItemId& item, const wxString& text) { - if (!item.IsOk()) - return; - - GtkLabel *l = GTK_LABEL(gtk_object_get_data(GTK_OBJECT((GtkTreeItem *)item), "w_label")); - gtk_label_set(l, text); -} - -void wxTreeCtrl::SetItemImage(const wxTreeItemId& item, int image) { - if (!item.IsOk()) - return; - - gtk_object_set_data(GTK_OBJECT((GtkTreeItem *)item), "image", (void *)image); -} - -void wxTreeCtrl::SetItemSelectedImage(const wxTreeItemId& item, int image) { - if (!item.IsOk()) - return; - - gtk_object_set_data(GTK_OBJECT((GtkTreeItem *)item), "selectedImage", (void *)image); -} - -void wxTreeCtrl::SetItemData(const wxTreeItemId& item, wxTreeItemData *data) { - if (!item.IsOk()) - return; - - gtk_object_set_data(GTK_OBJECT((GtkTreeItem *)item), "data", data); -} - -bool wxTreeCtrl::IsVisible(const wxTreeItemId& item) const { - return GTK_WIDGET_VISIBLE(GTK_TREE_ITEM((GtkTreeItem *)item)); -} - -bool wxTreeCtrl::ItemHasChildren(const wxTreeItemId& item) const { - GtkTreeItem *p = (GtkTreeItem *)item; - - if (p->subtree == NULL) - return wxFalse; - - if (GTK_TREE(p->subtree)->children == NULL) - return wxFalse; - - if (g_list_length(GTK_TREE(p->subtree)->children) == 0) - return wxFalse; - - return wxTrue; -} - -bool wxTreeCtrl::IsExpanded(const wxTreeItemId& item) const { - return (((GtkTreeItem *)item)->expanded != 0); -} - -bool wxTreeCtrl::IsSelected(const wxTreeItemId& item) const { - GtkTreeItem *p = (GtkTreeItem *)item; - GtkWidget *parent = GTK_WIDGET(p)->parent; - - if (!GTK_IS_TREE(parent)) - return wxFalse; - - if (g_list_index(GTK_TREE(parent)->children, p) == -1) - return wxFalse; - - return wxTrue; -} - -wxTreeItemId wxTreeCtrl::GetRootItem() const { - return m_anchor; -} - -static void gtk_treectrl_first_selected_callback(GtkWidget *widget, gpointer data) { - GtkTreeItem *p = (*((GtkTreeItem **)data)); - - GtkTree *tree = GTK_TREE(GTK_TREE_ITEM(widget)->subtree); - - if (tree->selection != NULL) { - p = (GtkTreeItem *)tree->selection->data; - return; - } - - if (GTK_IS_CONTAINER(widget)) - gtk_container_foreach(GTK_CONTAINER(widget), gtk_treectrl_first_selected_callback, data); -} - -wxTreeItemId wxTreeCtrl::GetSelection() const { - GtkTreeItem *p = NULL; - - if (m_anchor == NULL) - return NULL; - - gtk_treectrl_first_selected_callback(GTK_WIDGET(m_anchor), &p); - - return p; -} - -wxTreeItemId wxTreeCtrl::GetParent(const wxTreeItemId& item) const { - if (item.IsOk()) - return (GtkTreeItem *)gtk_object_get_data(GTK_OBJECT((GtkTreeItem *)item), "parent"); - - return NULL; -} - -wxTreeItemId wxTreeCtrl::GetFirstChild(const wxTreeItemId& item, long& cookie) const { - GtkTreeItem *p = (GtkTreeItem *)item; - GtkWidget *parent = GTK_WIDGET(p)->parent; - - if (!GTK_IS_TREE(parent)) - return NULL; - - cookie = 0; - return GTK_TREE_ITEM(g_list_first(GTK_TREE(parent)->children)->data); -} - -wxTreeItemId wxTreeCtrl::GetNextChild(const wxTreeItemId& item, long& cookie) const { - GtkTreeItem *p = (GtkTreeItem *)item; - GtkWidget *parent = GTK_WIDGET(p)->parent; - - if (!GTK_IS_TREE(parent)) - return NULL; - - cookie++; - return GTK_TREE_ITEM(g_list_nth(GTK_TREE(parent)->children, cookie)->data); -} - -wxTreeItemId wxTreeCtrl::GetLastChild(const wxTreeItemId& item) const -{ - GtkTreeItem *p = (GtkTreeItem *)item; - GtkWidget *parent = GTK_WIDGET(p)->parent; - - wxCHECK_MSG( GTK_IS_TREE(parent), NULL, "invalid tree item" ); - - return GTK_TREE_ITEM(g_list_last(GTK_TREE(parent)->children)->data); -} - -wxTreeItemId wxTreeCtrl::GetNextSibling(const wxTreeItemId& item) const { - GtkTreeItem *p = (GtkTreeItem *)item; - GtkWidget *parent = GTK_WIDGET(p)->parent; - - if (!GTK_IS_TREE(parent)) - return NULL; - - if (g_list_index(GTK_TREE(parent)->children, p) == -1) - return NULL; - - return GTK_TREE_ITEM(g_list_next(g_list_find(GTK_TREE(parent)->children, p))->data); -} - -wxTreeItemId wxTreeCtrl::GetPrevSibling(const wxTreeItemId& item) const { - GtkTreeItem *p = (GtkTreeItem *)item; - GtkWidget *parent = GTK_WIDGET(p)->parent; - - if (!GTK_IS_TREE(parent)) - return NULL; - - if (g_list_index(GTK_TREE(parent)->children, p) == -1) - return NULL; - - return GTK_TREE_ITEM(g_list_previous(g_list_find(GTK_TREE(parent)->children, p))->data); -} - -static void gtk_treectrl_first_visible_callback(GtkWidget *widget, gpointer data) { - GtkTreeItem *p = (*((GtkTreeItem **)data)); - - GtkTree *tree = GTK_TREE(GTK_TREE_ITEM(widget)->subtree); - - if (tree->children != NULL) { - guint len = g_list_length(tree->children); - for (guint i=0; ichildren, i)->data)))) { - p = GTK_TREE_ITEM((GtkTreeItem *)g_list_nth(tree->children, i)->data); - return; - } - } - } - - if (GTK_IS_CONTAINER(widget)) - gtk_container_foreach(GTK_CONTAINER(widget), gtk_treectrl_first_visible_callback, data); -} - -wxTreeItemId wxTreeCtrl::GetFirstVisibleItem() const { - GtkTreeItem *p = NULL; - - if (m_anchor == NULL) - return NULL; - - gtk_treectrl_first_visible_callback(GTK_WIDGET(m_anchor), &p); - - return p; -} - -wxTreeItemId wxTreeCtrl::GetNextVisible(const wxTreeItemId& item) const { - GtkTreeItem *p = (GtkTreeItem *)item; - GtkTree *parent = GTK_TREE(GTK_WIDGET(p)->parent); - GtkTreeItem *q; - - if (!GTK_IS_TREE(parent)) - return NULL; - - if (parent->children == NULL) - return NULL; - - q = GTK_TREE_ITEM(g_list_next(g_list_find(GTK_TREE(parent)->children, p))->data); - - while (q != p) { - q = GTK_TREE_ITEM(g_list_next(g_list_find(GTK_TREE(parent)->children, q))->data); - if (GTK_WIDGET_VISIBLE(GTK_WIDGET(q))) - return q; - } - - return NULL; -} - -wxTreeItemId wxTreeCtrl::GetPrevVisible(const wxTreeItemId& item) const { - GtkTreeItem *p = (GtkTreeItem *)item; - GtkTree *parent = GTK_TREE(GTK_WIDGET(p)->parent); - GtkTreeItem *q; - - if (!GTK_IS_TREE(parent)) - return NULL; - - if (parent->children == NULL) - return NULL; - - q = GTK_TREE_ITEM(g_list_previous(g_list_find(GTK_TREE(parent)->children, p))->data); - - while (q != p) { - q = GTK_TREE_ITEM(g_list_previous(g_list_find(GTK_TREE(parent)->children, q))->data); - if (GTK_WIDGET_VISIBLE(GTK_WIDGET(q))) - return q; - } - - return NULL; -} - -wxTreeItemId wxTreeCtrl::AddRoot(const wxString& text, int image, - int selectedImage, wxTreeItemData *data) { - return p_InsertItem(0, text, image, selectedImage, data); -} - -wxTreeItemId wxTreeCtrl::PrependItem(const wxTreeItemId& parent, - const wxString& text, int image, int selectedImage, - wxTreeItemData *data) { -#warning "Need to implement PrependItem" - return NULL; -} - -wxTreeItemId wxTreeCtrl::InsertItem(const wxTreeItemId& parent, - const wxTreeItemId& idPrevious, const wxString& text, - int image, int selectedImage, wxTreeItemData *data) { -#warning "Need to implement InsertItem" - return NULL; -} - -wxTreeItemId wxTreeCtrl::AppendItem(const wxTreeItemId& parent, - const wxString& text, int image, int selectedImage, - wxTreeItemData *data) { - return p_InsertItem(parent, text, image, selectedImage, data); -} - -wxTreeItemId wxTreeCtrl::p_InsertItem(GtkTreeItem *p, - const wxString& text, int image, int selectedImage, - wxTreeItemData *data) { - GtkTreeItem *item; - -printf("begin insert\n"); - - item = GTK_TREE_ITEM(gtk_tree_item_new()); - - GtkHBox *m_box = GTK_HBOX(gtk_hbox_new(FALSE, 0)); - gtk_container_add (GTK_CONTAINER (item), GTK_WIDGET(m_box)); - - gtk_object_set_data(GTK_OBJECT(item), "w_box", m_box); - - const wxBitmap *bmp; - const wxImageList *list; - if ((list = GetImageList(wxIMAGE_LIST_NORMAL)) != NULL) - if ((bmp = list->GetBitmap(image)) != NULL) - if (bmp->Ok()) { - GdkBitmap *mask = NULL; - if (bmp->GetMask()) - mask = bmp->GetMask()->GetBitmap(); - GtkPixmap *m_image_widget = GTK_PIXMAP(gtk_pixmap_new(bmp->GetPixmap(), mask)); - gtk_misc_set_alignment (GTK_MISC (m_image_widget), 0.0, 0.5); - gtk_box_pack_start(GTK_BOX(m_box), GTK_WIDGET(m_image_widget), FALSE, FALSE, 0); - gtk_object_set_data(GTK_OBJECT(item), "w_image", (void *)m_image_widget); - gtk_object_set_data(GTK_OBJECT(item), "image", (void *)image); - gtk_widget_show (GTK_WIDGET(m_image_widget)); - } - GtkLabel *m_label_widget = GTK_LABEL(gtk_label_new ((char *)(const char *)text)); - gtk_misc_set_alignment (GTK_MISC (m_label_widget), 0.5, 0.5); - gtk_box_pack_start(GTK_BOX(m_box), GTK_WIDGET(m_label_widget), FALSE, FALSE, 0); - gtk_object_set_data(GTK_OBJECT(item), "w_label", m_label_widget); - gtk_widget_show (GTK_WIDGET(m_label_widget)); - - gtk_widget_show(GTK_WIDGET(m_box)); - - gtk_object_set_data(GTK_OBJECT(item), "owner", this); - gtk_object_set_data(GTK_OBJECT(item), "data", data); - gtk_object_set_data(GTK_OBJECT(item), "parent", p); - - if (p != 0) { - if (p->subtree == NULL) { - GtkTree *tree = GTK_TREE(gtk_tree_new()); - gtk_tree_item_set_subtree(GTK_TREE_ITEM(p), GTK_WIDGET(tree)); - gtk_widget_show(GTK_WIDGET(tree)); - p->expanded = 1; - } - - gtk_container_add(GTK_CONTAINER(p->subtree), GTK_WIDGET(item)); - } else { -printf("Adding root\n"); -printf("m_tree = %p\n", m_tree); - m_anchor = item; - gtk_container_add(GTK_CONTAINER(m_tree), GTK_WIDGET(item)); - } - - gtk_widget_show(GTK_WIDGET(item)); - - gtk_signal_connect(GTK_OBJECT(item), "select", - GTK_SIGNAL_FUNC(gtk_treeitem_select_callback), (gpointer)this ); - - gtk_signal_connect(GTK_OBJECT(item), "deselect", - GTK_SIGNAL_FUNC(gtk_treeitem_select_callback), (gpointer)this ); - - gtk_signal_connect(GTK_OBJECT(item), "expand", - GTK_SIGNAL_FUNC(gtk_treeitem_expand_callback), (gpointer)this ); - gtk_signal_connect(GTK_OBJECT(item), "collapse", - GTK_SIGNAL_FUNC(gtk_treeitem_collapse_callback), (gpointer)this ); - - return item; -} - -void wxTreeCtrl::Delete(const wxTreeItemId& item) { - if (!item.IsOk()) - return; - - GtkTreeItem *parent = GTK_TREE_ITEM(GTK_WIDGET((GtkTreeItem *)item)->parent); - if (parent == NULL) - return; - - gtk_container_remove(GTK_CONTAINER(parent), GTK_WIDGET((GtkTreeItem *)item)); - - return; -} - -void wxTreeCtrl::DeleteAllItems() { - gtk_tree_item_remove_subtree(m_anchor); -} - -void wxTreeCtrl::Expand(const wxTreeItemId& item) { - if (!item.IsOk()) - return; - - gtk_tree_item_expand(GTK_TREE_ITEM((GtkTreeItem *)item)); -} - -void wxTreeCtrl::Collapse(const wxTreeItemId& item) { - if (!item.IsOk()) - return; - - gtk_tree_item_collapse(GTK_TREE_ITEM((GtkTreeItem *)item)); -} - -void wxTreeCtrl::CollapseAndReset(const wxTreeItemId& item) { - if (!item.IsOk()) - return; - - gtk_tree_item_collapse(GTK_TREE_ITEM((GtkTreeItem *)item)); - gtk_tree_item_remove_subtree(GTK_TREE_ITEM((GtkTreeItem *)item)); -} - -void wxTreeCtrl::Toggle(const wxTreeItemId& item) { - if (!item.IsOk()) - return; - - if (((GtkTreeItem *)item)->expanded) - gtk_tree_item_collapse(GTK_TREE_ITEM((GtkTreeItem *)item)); - else - gtk_tree_item_expand(GTK_TREE_ITEM((GtkTreeItem *)item)); -} - -static void gtk_treectrl_unselect_callback(GtkWidget *widget, gpointer data) { - GtkTreeItem *p; - - GtkTree *tree = GTK_TREE(GTK_TREE_ITEM(widget)->subtree); - - if (tree->selection != NULL) { - guint len = g_list_length(tree->selection); - for (guint i=0; iselection, i)->data); - gtk_tree_unselect_child(tree, GTK_WIDGET(p)); - } - } - - if (GTK_IS_CONTAINER(widget)) - gtk_container_foreach(GTK_CONTAINER(widget), gtk_treectrl_unselect_callback, data); -} - -void wxTreeCtrl::Unselect() { - if (m_anchor == NULL) - return; - - gtk_treectrl_unselect_callback(GTK_WIDGET(m_anchor), NULL); -} - -void wxTreeCtrl::SelectItem(const wxTreeItemId& item) { - if (!item.IsOk()) - return; - - gtk_tree_item_select((GtkTreeItem *)item); -} - -void wxTreeCtrl::EnsureVisible(const wxTreeItemId& item) { -#warning "Need to implement EnsureVisible" -} - -void wxTreeCtrl::ScrollTo(const wxTreeItemId& item) { -#warning "Need to implement ScrollTo" -} - -wxTextCtrl* wxTreeCtrl::EditLabel(const wxTreeItemId& item, - wxClassInfo* textControlClass) { - wxASSERT( textControlClass->IsKindOf(CLASSINFO(wxTextCtrl)) ); -#warning "Need to implement EditLabel" -/* - char *s; - m_editItem = item; - - GtkLabel *m_label = (GtkLabel *)gtk_object_get_data(GTK_OBJECT((GtkTreeItem *)item), "w_label"); - gtk_label_get(m_label, &s); - - m_textCtrl = new wxTextCtrl(this, -1, s); -// m_textCtrl->SetValue(s); - - gtk_object_set_data(GTK_OBJECT((GtkTreeItem *)item), "w_edit", m_textCtrl->m_widget); - - gtk_container_remove(GTK_CONTAINER((GtkTreeItem *)item), GTK_WIDGET(m_label)); - gtk_container_add(GTK_CONTAINER((GtkTreeItem *)item), m_textCtrl->m_widget); - -*/ - return m_textCtrl; -} - -wxTextCtrl* wxTreeCtrl::GetEditControl() const { - return m_textCtrl; -} - -void wxTreeCtrl::EndEditLabel(const wxTreeItemId& item, bool discardChanges) { -#warning "Need to implement EndEditLabel" -/* - GtkLabel *m_label = (GtkLabel *)gtk_object_get_data(GTK_OBJECT((GtkTreeItem *)m_editItem), "w_label"); - gtk_label_set(m_label, m_textCtrl->GetValue()); - - gtk_object_remove_data(GTK_OBJECT((GtkTreeItem *)m_editItem), "w_edit"); - - gtk_container_remove(GTK_CONTAINER((GtkTreeItem *)m_editItem), m_textCtrl->m_widget); - gtk_container_add(GTK_CONTAINER((GtkTreeItem *)m_editItem), GTK_WIDGET(m_label)); - - delete m_textCtrl; - m_textCtrl = NULL; -*/ -} - -void wxTreeCtrl::ExpandItem(const wxTreeItemId& item, int action) { - switch (action) { - case wxTREE_EXPAND_EXPAND: - Expand(item); - break; - - case wxTREE_EXPAND_COLLAPSE: - Collapse(item); - break; - - case wxTREE_EXPAND_COLLAPSE_RESET: - CollapseAndReset(item); - break; - - case wxTREE_EXPAND_TOGGLE: - Toggle(item); - break; - - default: - wxFAIL_MSG("unknown action in wxTreeCtrl::ExpandItem"); - } -} - -wxTreeItemId wxTreeCtrl::InsertItem(const wxTreeItemId& parent, - const wxString& text, int image, int selImage, - long insertAfter) { -// InsertItem(parent, insertAfter, text, image, selImage); - #warning "Need to implement InsertItem" - return NULL; -} - -/* Old functions -long wxTreeCtrl::GetChild(long item) const { - GtkTreeItem *p; - GtkTreeItem *next = NULL; - - p = findGtkTreeItem(item); - GList *list = gtk_container_children(GTK_CONTAINER(p)); - next = GTK_TREE_ITEM(list->data);; - - if (next != NULL) - return (long)gtk_object_get_data(GTK_OBJECT(next), "id"); - - return (-1); -} - -long wxTreeCtrl::GetFirstVisibleItem(void) const { - GtkTreeItem *next = NULL; - - GList *list = gtk_container_children(GTK_CONTAINER(m_anchor)); - next = GTK_TREE_ITEM(list->data);; -// gtk_container_foreach(GTK_CONTAINER(m_anchor), gtk_treectrl_next_visible_callback, &next); - - if (next != NULL) - return (long)gtk_object_get_data(GTK_OBJECT(next), "id"); - - return (-1); -} - -long wxTreeCtrl::GetNextVisibleItem(long item) const { - GtkTreeItem *p; - GtkTreeItem *next = NULL; - - p = findGtkTreeItem(item); - GList *list = gtk_container_children(GTK_CONTAINER(p)); - next = GTK_TREE_ITEM(list->data);; -// gtk_container_foreach(GTK_CONTAINER(p), gtk_treectrl_next_visible_callback, &next); - - if (next != NULL) - return (long)gtk_object_get_data(GTK_OBJECT(next), "id"); - - return (-1); -} - -bool wxTreeCtrl::GetItem(wxTreeItem& info) const { - GtkTreeItem *p; - - p = findGtkTreeItem(info.m_itemId); - - if (p == NULL) { - wxLogSysError("TreeCtrl::GetItem failed"); - return FALSE; - } - - wxConvertFromGtkTreeItem(info, p); - - return TRUE; -} - -bool wxTreeCtrl::SetItem(wxTreeItem& info) { - GtkTreeItem *p; - - p = findGtkTreeItem(info.m_itemId); - - if (p == NULL) { - wxLogSysError("TreeCtrl::SetItem failed"); - return FALSE; - } - - wxConvertToGtkTreeItem(this, info, &p); - - return TRUE; -} - -int wxTreeCtrl::GetItemState(long item, long stateMask) const { - wxTreeItem info; - - info.m_mask = wxTREE_MASK_STATE ; - info.m_stateMask = stateMask; - info.m_itemId = item; - - if (!GetItem(info)) - return 0; - - return info.m_state; -} - -bool wxTreeCtrl::SetItemState(long item, long state, long stateMask) { - wxTreeItem info; - - info.m_mask = wxTREE_MASK_STATE ; - info.m_state = state; - info.m_stateMask = stateMask; - info.m_itemId = item; - - return SetItem(info); -} -*/ - -// Operations -/* -bool wxTreeCtrl::DeleteChildren(long item) { - GtkTreeItem *p; - - p = findGtkTreeItem(item); - if (p == NULL) - return FALSE; - - gtk_tree_item_remove_subtree(GTK_TREE_ITEM(p)); - - return TRUE; -} -*/ - -/* -long wxTreeCtrl::InsertItem(long parent, wxTreeItem& info, long insertAfter) { - GtkTreeItem *p; - GtkTreeItem *item = NULL; - - info.m_itemId = m_curitemId; - m_curitemId++; - - wxConvertToGtkTreeItem(this, info, &item); - - if (parent != 0) { - p = findGtkTreeItem(parent); - if (p->subtree == NULL) { - GtkTree *tree = GTK_TREE(gtk_tree_new()); - gtk_tree_item_set_subtree(GTK_TREE_ITEM(p), GTK_WIDGET(tree)); - gtk_widget_show(GTK_WIDGET(tree)); - p->expanded = 1; - } - - gtk_container_add(GTK_CONTAINER(p->subtree), GTK_WIDGET(item)); - } else { - m_anchor = item; - gtk_container_add(GTK_CONTAINER(m_tree), GTK_WIDGET(item)); - } - - if ((info.m_mask & wxTREE_MASK_CHILDREN) != 0) { - GtkTree *tree = GTK_TREE(gtk_tree_new()); - gtk_tree_item_set_subtree(GTK_TREE_ITEM(item), GTK_WIDGET(tree)); - gtk_widget_show(GTK_WIDGET(tree)); - } - - gtk_widget_show(GTK_WIDGET(item)); - - gtk_signal_connect(GTK_OBJECT(item), "select", - GTK_SIGNAL_FUNC(gtk_treeitem_select_callback), (gpointer)this ); - - gtk_signal_connect(GTK_OBJECT(item), "deselect", - GTK_SIGNAL_FUNC(gtk_treeitem_select_callback), (gpointer)this ); - - gtk_signal_connect(GTK_OBJECT(item), "expand", - GTK_SIGNAL_FUNC(gtk_treeitem_expand_callback), (gpointer)this ); - gtk_signal_connect(GTK_OBJECT(item), "collapse", - GTK_SIGNAL_FUNC(gtk_treeitem_collapse_callback), (gpointer)this ); - - return info.m_itemId; -} - -long wxTreeCtrl::InsertItem(long parent, const wxString& label, int image, - int selImage, long insertAfter) { - - wxTreeItem info; - info.m_text = label; - info.m_mask = wxTREE_MASK_TEXT; - if (image > -1) { - info.m_mask |= wxTREE_MASK_IMAGE | wxTREE_MASK_SELECTED_IMAGE; - info.m_image = image; - if (selImage == -1) - info.m_selectedImage = image; - else - info.m_selectedImage = selImage; - } - - return InsertItem(parent, info, insertAfter); -} -*/ - -void wxTreeCtrl::SendMessage(wxEventType command, const wxTreeItemId& item) { - wxTreeEvent event(command, GetId()); - event.SetEventObject(this); - event.m_item = item; - ProcessEvent(event); -} - -void wxTreeCtrl::SendExpanding(const wxTreeItemId& item) { - SendMessage(wxEVT_COMMAND_TREE_ITEM_EXPANDING, item); -} - -void wxTreeCtrl::SendExpanded(const wxTreeItemId& item) { - SendMessage(wxEVT_COMMAND_TREE_ITEM_EXPANDED, item); -} - -void wxTreeCtrl::SendCollapsing(const wxTreeItemId& item) { - SendMessage(wxEVT_COMMAND_TREE_ITEM_COLLAPSING, item); -} - -void wxTreeCtrl::SendCollapsed(const wxTreeItemId& item) { - SendMessage(wxEVT_COMMAND_TREE_ITEM_COLLAPSED, item); -} - -void wxTreeCtrl::SendSelChanging(const wxTreeItemId& item) { - SendMessage(wxEVT_COMMAND_TREE_SEL_CHANGED, item); -} - -void wxTreeCtrl::SendSelChanged(const wxTreeItemId& item) { - SendMessage(wxEVT_COMMAND_TREE_SEL_CHANGING, item); -} - -// Tree event -IMPLEMENT_DYNAMIC_CLASS(wxTreeEvent, wxCommandEvent) - -wxTreeEvent::wxTreeEvent(wxEventType commandType, int id): - wxCommandEvent(commandType, id) { - m_code = 0; - m_itemOld = 0; -} diff --git a/src/gtk/utilsgtk.cpp b/src/gtk/utilsgtk.cpp deleted file mode 100644 index 28d35e2adc..0000000000 --- a/src/gtk/utilsgtk.cpp +++ /dev/null @@ -1,383 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: utils.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling, Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -//#ifdef __GNUG__ -//#pragma implementation "utils.h" -//#endif - -#include "wx/utils.h" -#include "wx/string.h" - -#include "wx/intl.h" -#include "wx/log.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "glib.h" -#include "gdk/gdk.h" -#include "gtk/gtk.h" -#include "gtk/gtkfeatures.h" -#include "gdk/gdkx.h" - -#ifdef __SVR4__ - #include -#endif - -#ifdef __SOLARIS__ -// somehow missing from sys/wait.h but in the system's docs -extern "C" -{ - pid_t wait4(pid_t pid, int *statusp, int options, struct rusage - *rusage); -} -#endif - -//------------------------------------------------------------------------ -// misc. -//------------------------------------------------------------------------ - -void wxBell(void) -{ - gdk_beep(); -} - -void wxSleep(int nSecs) -{ - sleep(nSecs); -} - -int wxKill(long pid, int sig) -{ - return kill(pid, sig); -} - -void wxDisplaySize( int *width, int *height ) -{ - if (width) *width = gdk_screen_width(); - if (height) *height = gdk_screen_height(); -} - -void wxGetMousePosition( int* x, int* y ) -{ - gdk_window_get_pointer( (GdkWindow*) NULL, x, y, (GdkModifierType*) NULL ); -} - -bool wxColourDisplay(void) -{ - return TRUE; -} - -int wxDisplayDepth(void) -{ - return gdk_window_get_visual( (GdkWindow*) &gdk_root_parent )->depth; -} - -int wxGetOsVersion(int *majorVsn, int *minorVsn) -{ - if (majorVsn) *majorVsn = GTK_MAJOR_VERSION; - if (minorVsn) *minorVsn = GTK_MINOR_VERSION; - - return wxGTK; -} - -//------------------------------------------------------------------------ -// user and home routines -//------------------------------------------------------------------------ - -const char* wxGetHomeDir( wxString *home ) -{ - *home = wxGetUserHome( wxString() ); - if (home->IsNull()) *home = "/"; - return *home; -} - -char *wxGetUserHome( const wxString &user ) -{ - struct passwd *who = (struct passwd *) NULL; - - if (user.IsNull() || (user== "")) - { - register char *ptr; - - if ((ptr = getenv("HOME")) != NULL) - { - return ptr; - } - if ((ptr = getenv("USER")) != NULL || (ptr = getenv("LOGNAME")) != NULL) - { - who = getpwnam(ptr); - } - - /* We now make sure the the user exists! */ - if (who == NULL) - { - who = getpwuid(getuid()); - } - } - else - { - who = getpwnam (user); - } - - return who ? who->pw_dir : (char*)NULL; -} - -//------------------------------------------------------------------------ -// id routines -//------------------------------------------------------------------------ - -bool wxGetHostName(char *buf, int sz) -{ - *buf = '\0'; -#if defined(__SVR4__) && !defined(__sgi) - //KB: does this return the fully qualified host.domain name? - return (sysinfo(SI_HOSTNAME, buf, sz) != -1); -#else /* BSD Sockets */ - char name[255], domain[255]; - //struct hostent *h; - // Get hostname - if (gethostname(name, sizeof(name)/sizeof(char)-1) == -1) - return FALSE; - if (getdomainname(domain, sizeof(domain)/sizeof(char)-1) == -1) - return FALSE; - // Get official full name of host - // doesn't return the full qualified name, replaced by following - // code (KB) - // strncpy(buf, (h=gethostbyname(name))!=NULL ? h->h_name : name, sz-1); - if((unsigned)sz > strlen(name)+strlen(domain)+1) - { - strcpy(buf, name); - if(strcmp(domain,"(none)") == 0) // standalone machine - { - strcat(buf,"."); - strcat(buf,domain); - } - } - else - return FALSE; - return TRUE; -#endif -} - -bool wxGetUserId(char *buf, int sz) -{ - struct passwd *who; - - *buf = '\0'; - if ((who = getpwuid(getuid ())) != NULL) { - strncpy (buf, who->pw_name, sz-1); - return TRUE; - } - return FALSE; -} - -bool wxGetUserName(char *buf, int sz) -{ - struct passwd *who; - char *comma; - - *buf = '\0'; - if ((who = getpwuid (getuid ())) != NULL) { - comma = strchr(who->pw_gecos,'c'); - if(comma) *comma = '\0'; // cut off non-name comment fields - strncpy (buf, who->pw_gecos, sz - 1); - return TRUE; - } - return FALSE; -} - -//------------------------------------------------------------------------ -// error and debug output routines -//------------------------------------------------------------------------ - -void wxDebugMsg( const char *format, ... ) -{ - va_list ap; - va_start( ap, format ); - vfprintf( stderr, format, ap ); - fflush( stderr ); - va_end(ap); -} - -void wxError( const wxString &msg, const wxString &title ) -{ - fprintf( stderr, "Error " ); - if (!title.IsNull()) fprintf( stderr, "%s ", WXSTRINGCAST(title) ); - if (!msg.IsNull()) fprintf( stderr, ": %s", WXSTRINGCAST(msg) ); - fprintf( stderr, ".\n" ); -} - -void wxFatalError( const wxString &msg, const wxString &title ) -{ - fprintf( stderr, "Error " ); - if (!title.IsNull()) fprintf( stderr, "%s ", WXSTRINGCAST(title) ); - if (!msg.IsNull()) fprintf( stderr, ": %s", WXSTRINGCAST(msg) ); - fprintf( stderr, ".\n" ); - exit(3); // the same exit code as for abort() -} - -//------------------------------------------------------------------------ -// directory routines -//------------------------------------------------------------------------ - -bool wxDirExists( const wxString& dir ) -{ - char buf[500]; - strcpy( buf, WXSTRINGCAST(dir) ); - struct stat sbuf; - return ((stat(buf, &sbuf) != -1) && S_ISDIR(sbuf.st_mode) ? TRUE : FALSE); -} - -//------------------------------------------------------------------------ -// subprocess routines -//------------------------------------------------------------------------ - -struct wxEndProcessData -{ - gint pid, tag; - wxProcess *process; -}; - -static void GTK_EndProcessDetector(gpointer data, gint source, - GdkInputCondition WXUNUSED(condition) ) -{ - wxEndProcessData *proc_data = (wxEndProcessData *)data; - int pid; - - pid = (proc_data->pid > 0) ? proc_data->pid : -(proc_data->pid); - - /* wait4 is not part of any standard, use at own risk - * not sure what wait4 does, but wait3 seems to be closest, whats a digit ;-) - * --- offer@sgi.com */ -#if !defined(__sgi) - wait4(proc_data->pid, (int*) NULL, 0, (rusage *) NULL); -#else - wait3((int *) NULL, 0, (rusage *) NULL); -#endif - - close(source); - gdk_input_remove(proc_data->tag); - - if (proc_data->process) - proc_data->process->OnTerminate(proc_data->pid); - - if (proc_data->pid > 0) - delete proc_data; - else - proc_data->pid = 0; -} - -long wxExecute( char **argv, bool sync, wxProcess *process ) -{ - wxEndProcessData *data = new wxEndProcessData; - int end_proc_detect[2]; - - wxCHECK_MSG( *argv, 0, "can't exec empty command" ); - - /* Create pipes */ - if (pipe(end_proc_detect) == -1) - { - wxLogSysError( "Pipe creation failed" ); - return 0; - } - - /* fork the process */ -#if defined(sun) || defined(__ultrix) || defined(__bsdi__) - pid_t pid = vfork(); -#else - pid_t pid = fork(); -#endif - if (pid == -1) - { - wxLogSysError( "Fork failed" ); - return 0; - } - else if (pid == 0) - { - // we're in child - close(end_proc_detect[0]); // close reading side - // These three lines close the open file descriptors to - // to avoid any input/output which might block the process - // or irritate the user. If one wants proper IO for the sub- - // process, the "right thing to do" is to start an xterm executing - // it. - close(STDIN_FILENO); - close(STDOUT_FILENO); - close(STDERR_FILENO); - -#ifdef _AIX - execvp ((const char *)*argv, (const char **)argv); -#else - execvp (*argv, argv); -#endif - // there is no return after successful exec() - wxLogSysError( "Can't execute '%s'", *argv); - - _exit(-1); - } - else - { - // we're in parent - close(end_proc_detect[1]); // close writing side - data->tag = gdk_input_add(end_proc_detect[0], GDK_INPUT_READ, - GTK_EndProcessDetector, (gpointer)data); - data->pid = pid; - if (!sync) - { - data->process = process; - } - else - { - data->process = (wxProcess *) NULL; - data->pid = -(data->pid); - - while (data->pid != 0) - wxYield(); - - delete data; - } - - // @@@ our return value indicates success even if execvp() in the child - // failed! - return pid; - } -} - -long wxExecute( const wxString& command, bool sync, wxProcess *process ) -{ - static const char *IFS = " \t\n"; - - wxCHECK_MSG( !command.IsEmpty(), 0, "can't exec empty command" ); - - int argc = 0; - char *argv[127]; - char *tmp = new char[command.Len() + 1]; - strcpy(tmp, command); - - argv[argc++] = strtok(tmp, IFS); - while ((argv[argc++] = strtok((char *) NULL, IFS)) != NULL) - /* loop */ ; - - long lRc = wxExecute(argv, sync, process); - - delete [] tmp; - - return lRc; -} diff --git a/src/gtk/utilsres.cpp b/src/gtk/utilsres.cpp deleted file mode 100644 index 52e3199178..0000000000 --- a/src/gtk/utilsres.cpp +++ /dev/null @@ -1,353 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: utils.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling, Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -//#ifdef __GNUG__ -//#pragma implementation "utils.h" -//#endif - -#include "wx/utils.h" -#include "wx/string.h" -#include "wx/list.h" - -#include -#include -#include -#ifdef __SVR4__ -#include -#endif - -#include "gdk/gdkx.h" // GDK_DISPLAY -#include "gdk/gdkprivate.h" // gdk_progclass - -#include -#include -#include - -#include "wx/log.h" - -//----------------------------------------------------------------------------- -// constants -//----------------------------------------------------------------------------- - -// Yuck this is really BOTH site and platform dependent -// so we should use some other strategy! -#ifdef __SUN__ - #define DEFAULT_XRESOURCE_DIR "/usr/openwin/lib/app-defaults" -#else - #define DEFAULT_XRESOURCE_DIR "/usr/lib/X11/app-defaults" -#endif - -//----------------------------------------------------------------------------- -// glabal data (data.cpp) -//----------------------------------------------------------------------------- - -extern wxResourceCache *wxTheResourceCache; -extern XrmDatabase wxResourceDatabase; - -//----------------------------------------------------------------------------- -// utility functions for get/write resources -//----------------------------------------------------------------------------- - -static char *GetResourcePath(char *buf, char *name, bool create) -{ - if (create && FileExists(name)) - { - strcpy(buf, name); - return buf; // Exists so ... - } - if (*name == '/') - strcpy(buf, name); - else - { - // Put in standard place for resource files if not absolute - strcpy(buf, DEFAULT_XRESOURCE_DIR); - strcat(buf, "/"); - strcat(buf, FileNameFromPath(name)); - } - if (create) - { - // Touch the file to create it - FILE *fd = fopen(buf, "w"); - if (fd) fclose(fd); - } - return buf; -} - -// Read $HOME for what it says is home, if not -// read $USER or $LOGNAME for user name else determine -// the Real User, then determine the Real home dir. -static char *GetIniFile(char *dest, const char *filename) -{ - char *home = (char *) NULL; - if (filename && wxIsAbsolutePath(filename)) - { - strcpy(dest, filename); - } - else - { - if ((home = wxGetUserHome(wxString())) != NULL) - { - strcpy(dest, home); - if (dest[strlen(dest) - 1] != '/') strcat(dest, "/"); - if (filename == NULL) - { - if ((filename = getenv("XENVIRONMENT")) == NULL) filename = ".Xdefaults"; - } - else - if (*filename != '.') strcat(dest, "."); - strcat(dest, filename); - } - else - { - dest[0] = '\0'; - } - } - return dest; -} - -static void wxXMergeDatabases() -{ - XrmDatabase homeDB, serverDB, applicationDB; - char filenamebuf[1024]; - - char *filename = &filenamebuf[0]; - char *environment; - char *classname = gdk_progclass; // Robert Roebling ?? - char name[256]; - (void)strcpy(name, "/usr/lib/X11/app-defaults/"); - (void)strcat(name, classname ? classname : "wxWindows"); - - // Get application defaults file, if any - if ((applicationDB = XrmGetFileDatabase(name))) - (void)XrmMergeDatabases(applicationDB, &wxResourceDatabase); - - // Merge server defaults, created by xrdb, loaded as a property of the root - // window when the server initializes and loaded into the display - // structure on XOpenDisplay; - // if not defined, use .Xdefaults - if (XResourceManagerString(GDK_DISPLAY()) != NULL) - { - serverDB = XrmGetStringDatabase(XResourceManagerString(GDK_DISPLAY())); - } - else - { - (void)GetIniFile(filename, (char *) NULL); - serverDB = XrmGetFileDatabase(filename); - } - if (serverDB) - XrmMergeDatabases(serverDB, &wxResourceDatabase); - - // Open XENVIRONMENT file, or if not defined, the .Xdefaults, - // and merge into existing database - - if ((environment = getenv("XENVIRONMENT")) == NULL) - { - size_t len; - environment = GetIniFile(filename, (const char *) NULL); - len = strlen(environment); -#if !defined(SVR4) || defined(__sgi) - (void)gethostname(environment + len, 1024 - len); -#else - (void)sysinfo(SI_HOSTNAME, environment + len, 1024 - len); -#endif - } - if ((homeDB = XrmGetFileDatabase(environment))) - XrmMergeDatabases(homeDB, &wxResourceDatabase); -} - -//----------------------------------------------------------------------------- -// called on application exit -//----------------------------------------------------------------------------- - -void wxFlushResources() -{ - char nameBuffer[512]; - - wxNode *node = wxTheResourceCache->First(); - while (node) { - wxString str = node->GetKeyString(); - char *file = WXSTRINGCAST str; - // If file doesn't exist, create it first. - (void)GetResourcePath(nameBuffer, file, TRUE); - - XrmDatabase database = (XrmDatabase)node->Data(); - XrmPutFileDatabase(database, nameBuffer); - XrmDestroyDatabase(database); - wxNode *next = node->Next(); -// delete node; - node = next; - } -} - -void wxDeleteResources(const char *file) -{ - wxLogTrace(wxTraceResAlloc, "Delete: Number = %d", wxTheResourceCache->Number()); - char buffer[500]; - (void)GetIniFile(buffer, file); - - wxNode *node = wxTheResourceCache->Find(buffer); - if (node) { - XrmDatabase database = (XrmDatabase)node->Data(); - XrmDestroyDatabase(database); -// delete node; - } -} - -//----------------------------------------------------------------------------- -// resource functions -//----------------------------------------------------------------------------- - -bool wxWriteResource(const wxString& section, const wxString& entry, const wxString& value, const wxString& file ) -{ - char buffer[500]; - - if (!entry) return FALSE; - - (void)GetIniFile(buffer, file); - - XrmDatabase database; - wxNode *node = wxTheResourceCache->Find(buffer); - if (node) - database = (XrmDatabase)node->Data(); - else { - database = XrmGetFileDatabase(buffer); - wxLogTrace(wxTraceResAlloc, "Write: Number = %d", wxTheResourceCache->Number()); - wxTheResourceCache->Append(buffer, (wxObject *)database); - } - char resName[300]; - strcpy(resName, !section.IsNull() ? WXSTRINGCAST section : "wxWindows"); - strcat(resName, "."); - strcat(resName, entry); - XrmPutStringResource(&database, resName, value); - return TRUE; -}; - -bool wxWriteResource(const wxString& section, const wxString& entry, float value, const wxString& file ) -{ - char buf[50]; - sprintf(buf, "%.4f", value); - return wxWriteResource(section, entry, buf, file); -}; - -bool wxWriteResource(const wxString& section, const wxString& entry, long value, const wxString& file ) -{ - char buf[50]; - sprintf(buf, "%ld", value); - return wxWriteResource(section, entry, buf, file); -}; - -bool wxWriteResource(const wxString& section, const wxString& entry, int value, const wxString& file ) -{ - char buf[50]; - sprintf(buf, "%d", value); - return wxWriteResource(section, entry, buf, file); -}; - -bool wxGetResource(const wxString& section, const wxString& entry, char **value, const wxString& file ) -{ - if (!wxResourceDatabase) - wxXMergeDatabases(); - - XrmDatabase database; - if (!file.IsEmpty()) - { - char buffer[500]; - // Is this right? Trying to get it to look in the user's - // home directory instead of current directory -- JACS - (void)GetIniFile(buffer, file); - - wxNode *node = (wxNode*) NULL; /* suppress egcs warning */ - node = wxTheResourceCache->Find(buffer); - if (node) - { - database = (XrmDatabase)node->Data(); - } - else - { - database = XrmGetFileDatabase(buffer); - wxLogTrace(wxTraceResAlloc, "Get: Number = %d", wxTheResourceCache->Number()); - wxTheResourceCache->Append(buffer, (wxObject *)database); - } - } else - database = wxResourceDatabase; - - XrmValue xvalue; - char *str_type[20]; - char buf[150]; - strcpy(buf, section); - strcat(buf, "."); - strcat(buf, entry); - - bool success = XrmGetResource(database, buf, "*", str_type, &xvalue); - // Try different combinations of upper/lower case, just in case... - if (!success) - { - buf[0] = (isupper(buf[0]) ? tolower(buf[0]) : toupper(buf[0])); - success = XrmGetResource(database, buf, "*", str_type, &xvalue); - } - if (success) - { - if (*value) - delete[] *value; - *value = new char[xvalue.size + 1]; - strncpy(*value, xvalue.addr, (int)xvalue.size); - return TRUE; - } - return FALSE; -}; - -bool wxGetResource(const wxString& section, const wxString& entry, float *value, const wxString& file ) -{ - char *s = (char *) NULL; - bool succ = wxGetResource(section, entry, &s, file); - if (succ) - { - *value = (float)strtod(s, (char **) NULL); - delete[]s; - return TRUE; - } else - return FALSE; -}; - -bool wxGetResource(const wxString& section, const wxString& entry, long *value, const wxString& file ) -{ - char *s = (char *) NULL; - bool succ = wxGetResource(section, entry, &s, file); - if (succ) - { - *value = strtol(s, (char **) NULL, 10); - delete[]s; - return TRUE; - } else - return FALSE; -}; - -bool wxGetResource(const wxString& section, const wxString& entry, int *value, const wxString& file ) -{ - char *s = (char *) NULL; - bool succ = wxGetResource(section, entry, &s, file); - if (succ) - { - // Handle True, False here - // True, Yes, Enables, Set or Activated - if (*s == 'T' || *s == 'Y' || *s == 'E' || *s == 'S' || *s == 'A') - *value = TRUE; - // False, No, Disabled, Reset, Cleared, Deactivated - else if (*s == 'F' || *s == 'N' || *s == 'D' || *s == 'R' || *s == 'C') - *value = FALSE; - // Handle as Integer - else - *value = (int)strtol(s, (char **) NULL, 10); - delete[]s; - return TRUE; - } else - return FALSE; -}; - diff --git a/src/gtk/verti.xbm b/src/gtk/verti.xbm deleted file mode 100644 index 2dd9dc4c05..0000000000 --- a/src/gtk/verti.xbm +++ /dev/null @@ -1,6 +0,0 @@ -#define verti_width 15 -#define verti_height 15 -static char verti_bits[] = { - 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, - 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, - 0x84, 0x10, 0x84, 0x10, 0x84, 0x10}; diff --git a/src/gtk/wave.cpp b/src/gtk/wave.cpp deleted file mode 100644 index 0801a93663..0000000000 --- a/src/gtk/wave.cpp +++ /dev/null @@ -1,224 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: wave.cpp -// Purpose: wxWave -// Author: Marcel Rasche -// Modified by: -// Created: 25/10/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "wave.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#if defined(__BORLANDC__) -#pragma hdrstop -#endif - -#include -#include -#include -#include -#include - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include "wx/file.h" -#include "wx/wave.h" - -//----------------------------------------------------------------- -// wxWave -//----------------------------------------------------------------- - -wxWave::wxWave() - : m_waveLength(0), m_isResource(FALSE), m_waveData(NULL) -{ -} - -wxWave::wxWave(const wxString& sFileName, bool isResource) - : m_waveLength(0), m_isResource(isResource), m_waveData(NULL) -{ - Create(sFileName, isResource); -} - -wxWave::wxWave(int size, const wxByte* data) - : m_waveLength(0), m_isResource(FALSE), m_waveData(NULL) -{ - Create(size, data); -} - -wxWave::~wxWave() -{ - Free(); -} - -bool wxWave::Create(const wxString& fileName, bool isResource) -{ - Free(); - - if (isResource) - { - // todo - return (m_waveData ? TRUE : FALSE); - } - else - { - m_isResource = FALSE; - - wxFile fileWave; - if (!fileWave.Open(fileName, wxFile::read)) - { - return FALSE; - } - - m_waveLength = (int) fileWave.Length(); - - m_waveData = new wxByte[m_waveLength]; - if (!m_waveData) - { - return FALSE; - } - - fileWave.Read(m_waveData, m_waveLength); - - return TRUE; - } -} - -bool wxWave::Create(int size, const wxByte* data) -{ - Free(); - m_isResource = FALSE; - m_waveLength=size; - m_waveData = new wxByte[size]; - if (!m_waveData) - { - return FALSE; - } - - for (int i=0; i 65536) - return FALSE; - if ( ioctl(dev,SNDCTL_DSP_SAMPLESIZE,&iDataBits) < 0 ) - return FALSE; - if ( ioctl(dev,SNDCTL_DSP_STEREO,&iChannel) < 0 ) - return FALSE; - if ( ioctl(dev,SNDCTL_DSP_SPEED,&ulSamplingRate) < 0 ) - return FALSE; - - return TRUE; -} - diff --git a/src/gtk/win_gtk.c b/src/gtk/win_gtk.c deleted file mode 100644 index 0f2d927bea..0000000000 --- a/src/gtk/win_gtk.c +++ /dev/null @@ -1,541 +0,0 @@ -/* /////////////////////////////////////////////////////////////////////////// -// Name: win_gtk.c -// Purpose: native GTK+ widget for wxWindows -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////// */ - -#include "wx/gtk/win_gtk.h" -#include - -/*------------------------------------------------------------------------- -// conditional compilation -//------------------------------------------------------------------------- */ - -#if (GTK_MINOR_VERSION == 1) -#if (GTK_MICRO_VERSION >= 5) -#define NEW_GTK_CONSTRUCT_CODE -#endif -#endif - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -static void gtk_myfixed_class_init (GtkMyFixedClass *klass); -static void gtk_myfixed_init (GtkMyFixed *myfixed); -static void gtk_myfixed_map (GtkWidget *widget); -#ifndef NEW_GTK_CONSTRUCT_CODE -static void gtk_myfixed_unmap (GtkWidget *widget); -#endif -static void gtk_myfixed_realize (GtkWidget *widget); -static void gtk_myfixed_size_request (GtkWidget *widget, - GtkRequisition *requisition); -static void gtk_myfixed_size_allocate (GtkWidget *widget, - GtkAllocation *allocation); -static void gtk_myfixed_paint (GtkWidget *widget, - GdkRectangle *area); -static void gtk_myfixed_draw (GtkWidget *widget, - GdkRectangle *area); -static gint gtk_myfixed_expose (GtkWidget *widget, - GdkEventExpose *event); -static void gtk_myfixed_add (GtkContainer *container, - GtkWidget *widget); -static void gtk_myfixed_remove (GtkContainer *container, - GtkWidget *widget); -static void gtk_myfixed_foreach (GtkContainer *container, -#if (GTK_MINOR_VERSION == 1) - gboolean include_internals, -#endif - GtkCallback callback, - gpointer callback_data); -#ifdef NEW_GTK_CONSTRUCT_CODE -static GtkType gtk_myfixed_child_type (GtkContainer *container); -#endif - - -static GtkContainerClass *parent_class = NULL; - - -guint -gtk_myfixed_get_type () -{ - static guint myfixed_type = 0; - - if (!myfixed_type) - { - GtkTypeInfo myfixed_info = - { - "GtkMyFixed", - sizeof (GtkMyFixed), - sizeof (GtkMyFixedClass), - (GtkClassInitFunc) gtk_myfixed_class_init, - (GtkObjectInitFunc) gtk_myfixed_init, -#ifndef NEW_GTK_CONSTRUCT_CODE - (GtkArgSetFunc) NULL, - (GtkArgGetFunc) NULL, -#else - /* reserved_1 */ NULL, - /* reserved_2 */ NULL, - (GtkClassInitFunc) NULL, -#endif - }; - - myfixed_type = gtk_type_unique (gtk_container_get_type (), &myfixed_info); - } - - return myfixed_type; -} - -static void -gtk_myfixed_class_init (GtkMyFixedClass *klass) -{ - GtkObjectClass *object_class; - GtkWidgetClass *widget_class; - GtkContainerClass *container_class; - - object_class = (GtkObjectClass*) klass; - widget_class = (GtkWidgetClass*) klass; - container_class = (GtkContainerClass*) klass; - -#ifndef NEW_GTK_CONSTRUCT_CODE - parent_class = gtk_type_class (gtk_container_get_type ()); -#else - parent_class = gtk_type_class (GTK_TYPE_CONTAINER); -#endif - - widget_class->map = gtk_myfixed_map; -#ifndef NEW_GTK_CONSTRUCT_CODE - widget_class->unmap = gtk_myfixed_unmap; -#endif - widget_class->realize = gtk_myfixed_realize; - widget_class->size_request = gtk_myfixed_size_request; - widget_class->size_allocate = gtk_myfixed_size_allocate; - widget_class->draw = gtk_myfixed_draw; - widget_class->expose_event = gtk_myfixed_expose; - - container_class->add = gtk_myfixed_add; - container_class->remove = gtk_myfixed_remove; -#if (GTK_MINOR_VERSION == 1) - container_class->forall = gtk_myfixed_foreach; -#else - container_class->foreach = gtk_myfixed_foreach; -#endif - -#ifdef NEW_GTK_CONSTRUCT_CODE - container_class->child_type = gtk_myfixed_child_type; -#endif -} - -#ifdef NEW_GTK_CONSTRUCT_CODE -static GtkType -gtk_myfixed_child_type (GtkContainer *container) -{ - return GTK_TYPE_WIDGET; -} -#endif - -static void -gtk_myfixed_init (GtkMyFixed *myfixed) -{ - GTK_WIDGET_UNSET_FLAGS (myfixed, GTK_NO_WINDOW); - -#ifndef NEW_GTK_CONSTRUCT_CODE - GTK_WIDGET_SET_FLAGS (myfixed, GTK_BASIC); -#endif - - myfixed->children = NULL; -} - -GtkWidget* -gtk_myfixed_new () -{ - GtkMyFixed *myfixed; - - myfixed = gtk_type_new (gtk_myfixed_get_type ()); - - return GTK_WIDGET (myfixed); -} - -void -gtk_myfixed_put (GtkMyFixed *myfixed, - GtkWidget *widget, - gint16 x, - gint16 y) -{ - GtkMyFixedChild *child_info; - - g_return_if_fail (myfixed != NULL); - g_return_if_fail (GTK_IS_MYFIXED (myfixed)); - g_return_if_fail (widget != NULL); - - child_info = g_new (GtkMyFixedChild, 1); - child_info->widget = widget; - child_info->x = x; - child_info->y = y; - - gtk_widget_set_parent (widget, GTK_WIDGET (myfixed)); - - myfixed->children = g_list_append (myfixed->children, child_info); - - if (GTK_WIDGET_REALIZED (myfixed) && !GTK_WIDGET_REALIZED (widget)) - gtk_widget_realize (widget); - - if (GTK_WIDGET_MAPPED (myfixed) && !GTK_WIDGET_MAPPED (widget)) - gtk_widget_map (widget); - - if (GTK_WIDGET_VISIBLE (widget) && GTK_WIDGET_VISIBLE (myfixed)) - gtk_widget_queue_resize (GTK_WIDGET (myfixed)); -} - -void -gtk_myfixed_move (GtkMyFixed *myfixed, - GtkWidget *widget, - gint16 x, - gint16 y) -{ - GtkMyFixedChild *child; - GList *children; - - g_return_if_fail (myfixed != NULL); - g_return_if_fail (GTK_IS_MYFIXED (myfixed)); - g_return_if_fail (widget != NULL); - - children = myfixed->children; - while (children) - { - child = children->data; - children = children->next; - - if (child->widget == widget) - { - if ((child->x == x) && (child->y == y)) return; - - child->x = x; - child->y = y; - - if (GTK_WIDGET_VISIBLE (widget) && GTK_WIDGET_VISIBLE (myfixed)) - gtk_widget_queue_resize (GTK_WIDGET (myfixed)); - - break; - } - } -} - -static void -gtk_myfixed_map (GtkWidget *widget) -{ - GtkMyFixed *myfixed; - GtkMyFixedChild *child; - GList *children; - - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_MYFIXED (widget)); - - GTK_WIDGET_SET_FLAGS (widget, GTK_MAPPED); - myfixed = GTK_MYFIXED (widget); - - gdk_window_show (widget->window); - - children = myfixed->children; - while (children) - { - child = children->data; - children = children->next; - - if (GTK_WIDGET_VISIBLE (child->widget) && - !GTK_WIDGET_MAPPED (child->widget)) - gtk_widget_map (child->widget); - } -} - -#ifndef NEW_GTK_CONSTRUCT_CODE -static void -gtk_myfixed_unmap (GtkWidget *widget) -{ - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_MYFIXED (widget)); - - GTK_WIDGET_UNSET_FLAGS (widget, GTK_MAPPED); -} -#endif - -static void -gtk_myfixed_realize (GtkWidget *widget) -{ - GtkMyFixed *myfixed; - GdkWindowAttr attributes; - gint attributes_mask; - - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_MYFIXED (widget)); - - myfixed = GTK_MYFIXED (widget); - - GTK_WIDGET_SET_FLAGS (widget, GTK_REALIZED); - - attributes.window_type = GDK_WINDOW_CHILD; - attributes.x = widget->allocation.x; - attributes.y = widget->allocation.y; - attributes.width = 32000; - attributes.height = 32000; - attributes.wclass = GDK_INPUT_OUTPUT; - attributes.visual = gtk_widget_get_visual (widget); - attributes.colormap = gtk_widget_get_colormap (widget); - attributes.event_mask = gtk_widget_get_events (widget); - attributes.event_mask |= - GDK_EXPOSURE_MASK | - GDK_POINTER_MOTION_MASK | - GDK_POINTER_MOTION_HINT_MASK | - GDK_BUTTON_MOTION_MASK | - GDK_BUTTON1_MOTION_MASK | - GDK_BUTTON2_MOTION_MASK | - GDK_BUTTON3_MOTION_MASK | - GDK_BUTTON_PRESS_MASK | - GDK_BUTTON_RELEASE_MASK | - GDK_KEY_PRESS_MASK | - GDK_KEY_RELEASE_MASK | - GDK_ENTER_NOTIFY_MASK | - GDK_LEAVE_NOTIFY_MASK | - GDK_FOCUS_CHANGE_MASK; - - attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP; - - widget->window = gdk_window_new (gtk_widget_get_parent_window (widget), &attributes, - attributes_mask); - gdk_window_set_user_data (widget->window, widget); - - widget->style = gtk_style_attach (widget->style, widget->window); - gtk_style_set_background (widget->style, widget->window, GTK_STATE_NORMAL); -} - -static void -gtk_myfixed_size_request (GtkWidget *widget, - GtkRequisition *requisition) -{ - GtkMyFixed *myfixed; - GtkMyFixedChild *child; - GList *children; - - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_MYFIXED (widget)); - g_return_if_fail (requisition != NULL); - - myfixed = GTK_MYFIXED (widget); - - requisition->width = 0; - requisition->height = 0; - - children = myfixed->children; - while (children) - { - child = children->data; - children = children->next; - - if (GTK_WIDGET_VISIBLE (child->widget)) - { - gtk_widget_size_request (child->widget, &child->widget->requisition); - } - } -} - -static void -gtk_myfixed_size_allocate (GtkWidget *widget, - GtkAllocation *allocation) -{ - GtkMyFixed *myfixed; - GtkMyFixedChild *child; - GtkAllocation child_allocation; - GList *children; - guint16 border_width; - - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_MYFIXED(widget)); - g_return_if_fail (allocation != NULL); - - myfixed = GTK_MYFIXED (widget); - - widget->allocation = *allocation; - if (GTK_WIDGET_REALIZED (widget)) - gdk_window_move_resize (widget->window, allocation->x, allocation->y, 32000, 32000 ); - - border_width = GTK_CONTAINER (myfixed)->border_width; - - children = myfixed->children; - while (children) - { - child = children->data; - children = children->next; - - if (GTK_WIDGET_VISIBLE (child->widget)) - { - child_allocation.x = child->x + border_width; - child_allocation.y = child->y + border_width; - child_allocation.width = child->widget->requisition.width; - child_allocation.height = child->widget->requisition.height; - gtk_widget_size_allocate (child->widget, &child_allocation); - } - } -} - -static void -gtk_myfixed_paint (GtkWidget *widget, - GdkRectangle *area) -{ - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_MYFIXED (widget)); - g_return_if_fail (area != NULL); - - if (GTK_WIDGET_DRAWABLE (widget)) - gdk_window_clear_area (widget->window, - area->x, area->y, - area->width, area->height); -} - -static void -gtk_myfixed_draw (GtkWidget *widget, - GdkRectangle *area) -{ - GtkMyFixed *myfixed; - GtkMyFixedChild *child; - GdkRectangle child_area; - GList *children; - - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_MYFIXED (widget)); - - if (GTK_WIDGET_DRAWABLE (widget)) - { - myfixed = GTK_MYFIXED (widget); - gtk_myfixed_paint (widget, area); - - children = myfixed->children; - while (children) - { - child = children->data; - children = children->next; - - if (gtk_widget_intersect (child->widget, area, &child_area)) - gtk_widget_draw (child->widget, &child_area); - } - } -} - -static gint -gtk_myfixed_expose (GtkWidget *widget, - GdkEventExpose *event) -{ - GtkMyFixed *myfixed; - GtkMyFixedChild *child; - GdkEventExpose child_event; - GList *children; - - g_return_val_if_fail (widget != NULL, FALSE); - g_return_val_if_fail (GTK_IS_MYFIXED (widget), FALSE); - g_return_val_if_fail (event != NULL, FALSE); - - if (GTK_WIDGET_DRAWABLE (widget)) - { - myfixed = GTK_MYFIXED (widget); - - child_event = *event; - - children = myfixed->children; - while (children) - { - child = children->data; - children = children->next; - - if (GTK_WIDGET_NO_WINDOW (child->widget) && - gtk_widget_intersect (child->widget, &event->area, - &child_event.area)) - gtk_widget_event (child->widget, (GdkEvent*) &child_event); - } - } - - return FALSE; -} - -static void -gtk_myfixed_add (GtkContainer *container, - GtkWidget *widget) -{ - g_return_if_fail (container != NULL); - g_return_if_fail (GTK_IS_MYFIXED (container)); - g_return_if_fail (widget != NULL); - - gtk_myfixed_put (GTK_MYFIXED (container), widget, 0, 0); -} - -static void -gtk_myfixed_remove (GtkContainer *container, - GtkWidget *widget) -{ - GtkMyFixed *myfixed; - GtkMyFixedChild *child; - GList *children; - - g_return_if_fail (container != NULL); - g_return_if_fail (GTK_IS_MYFIXED (container)); - g_return_if_fail (widget != NULL); - - myfixed = GTK_MYFIXED (container); - - children = myfixed->children; - while (children) - { - child = children->data; - - if (child->widget == widget) - { - gtk_widget_unparent (widget); - - myfixed->children = g_list_remove_link (myfixed->children, children); - g_list_free (children); - g_free (child); - - if (GTK_WIDGET_VISIBLE (widget) && GTK_WIDGET_VISIBLE (container)) - gtk_widget_queue_resize (GTK_WIDGET (container)); - - break; - } - - children = children->next; - } -} - -static void -gtk_myfixed_foreach (GtkContainer *container, -#if (GTK_MINOR_VERSION == 1) - gboolean include_internals, -#endif - GtkCallback callback, - gpointer callback_data) -{ - GtkMyFixed *myfixed; - GtkMyFixedChild *child; - GList *children; - - g_return_if_fail (container != NULL); - g_return_if_fail (GTK_IS_MYFIXED (container)); - g_return_if_fail (callback != NULL); - - myfixed = GTK_MYFIXED (container); - - children = myfixed->children; - while (children) - { - child = children->data; - children = children->next; - - (* callback) (child->widget, callback_data); - } -} - - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - diff --git a/src/gtk/window.cpp b/src/gtk/window.cpp deleted file mode 100644 index 9b1cb42717..0000000000 --- a/src/gtk/window.cpp +++ /dev/null @@ -1,3526 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: window.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling, Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifdef __GNUG__ -#pragma implementation "window.h" -#endif - -#include "wx/defs.h" -#include "wx/window.h" -#include "wx/dc.h" -#include "wx/frame.h" -#include "wx/app.h" -#include "wx/layout.h" -#include "wx/utils.h" -#include "wx/dialog.h" -#include "wx/msgdlg.h" -#if wxUSE_DRAG_AND_DROP -#include "wx/dnd.h" -#endif -#include "wx/tooltip.h" -#include "wx/menu.h" -#include "wx/statusbr.h" -#include "wx/intl.h" -#include "wx/settings.h" -#include "wx/log.h" - -#include - -#include "gdk/gdk.h" -#include "gtk/gtk.h" -#include "gdk/gdkprivate.h" -#include "gdk/gdkkeysyms.h" -#include "wx/gtk/win_gtk.h" - -//----------------------------------------------------------------------------- -// documentation on internals -//----------------------------------------------------------------------------- - -/* - I have been asked several times about writing some documentation about - the GTK port of wxWindows, especially its internal structures. Obviously, - you cannot understand wxGTK without knowing a little about the GTK, but - some more information about what the wxWindow, which is the base class - for all other window classes, does seems required as well. - - What does wxWindow do? It contains the common interface for the following - jobs of its descendants: - - 1) Define the rudimentary behaviour common to all window classes, such as - resizing, intercepting user input (so as to make it possible to use these - events for special purposes in a derived class), window names etc. - - 2) Provide the possibility to contain and manage children, if the derived - class is allowed to contain children, which holds true for those window - classes which do not display a native GTK widget. To name them, these - classes are wxPanel, wxScrolledWindow, wxDialog, wxFrame. The MDI frame- - work classes are a special case and are handled a bit differently from - the rest. The same holds true for the wxNotebook class. - - 3) Provide the possibility to draw into a client area of a window. This, - too, only holds true for classes that do not display a native GTK widget - as above. - - 4) Provide the entire mechanism for scrolling widgets. This actual inter- - face for this is usually in wxScrolledWindow, but the GTK implementation - is in this class. - - 5) A multitude of helper or extra methods for special purposes, such as - Drag'n'Drop, managing validators etc. - - Normally one might expect, that one wxWindows window would always correspond - to one GTK widget. Under GTK, there is no such allround widget that has all - the functionality. Moreover, the GTK defines a client area as a different - widget from the actual widget you are handling. Last but not least some - special classes (e.g. wxFrame) handle different categories of widgets and - still have the possibility to draw something in the client area. - It was therefore required to write a special purpose GTK widget, that would - represent a client area in the sense of wxWindows capable to do the jobs - 2), 3) and 4). I have written this class and it resides in win_gtk.c of - this directory. - - All windows must have a widget, with which they interact with other under- - lying GTK widgets. It is this widget, e.g. that has to be resized etc and - thw wxWindow class has a member variable called m_widget which holds a - pointer to this widget. When the window class represents a GTK native widget, - this is (in most cases) the only GTK widget the class manages. E.g. the - wxStatitText class handles only a GtkLabel widget a pointer to which you - can find in m_widget (defined in wxWindow) - - When the class has a client area for drawing into and for containing children - it has to handle the client area widget (of the type GtkMyFixed, defined in - win_gtk.c), but there could be any number of widgets, handled by a class - The common rule for all windows is only, that the widget that interacts with - the rest of GTK must be referenced in m_widget and all other widgets must be - children of this widget on the GTK level. The top-most widget, which also - represents the client area, must be in the m_wxwindow field and must be of - the type GtkMyFixed. - - As I said, the window classes that display a GTK native widget only have - one widget, so in the case of e.g. the wxButton class m_widget holds a - pointer to a GtkButton widget. But windows with client areas (for drawing - and children) have a m_widget field that is a pointer to a GtkScrolled- - Window and a m_wxwindow field that is pointer to a GtkMyFixed and this - one is (in the GTK sense) a child of the GtkScrolledWindow. - - If the m_wxwindow field is set, then all input to this widget is inter- - cepted and sent to the wxWindows class. If not, all input to the widget - that gets pointed to by m_widget gets intercepted and sent to the class. - -*/ - -//------------------------------------------------------------------------- -// conditional compilation -//------------------------------------------------------------------------- - -#if (GTK_MINOR_VERSION == 1) -#if (GTK_MICRO_VERSION >= 5) -#define NEW_GTK_SCROLL_CODE -#endif -#endif - -//----------------------------------------------------------------------------- -// (debug) -//----------------------------------------------------------------------------- - -#ifdef __WXDEBUG__ - -static gint gtk_debug_focus_in_callback( GtkWidget *WXUNUSED(widget), - GdkEvent *WXUNUSED(event), - const char *name ) -{ - printf( "FOCUS NOW AT: " ); - printf( name ); - printf( "\n" ); - - return FALSE; -} - -void debug_focus_in( GtkWidget* widget, const char* name, const char *window ) -{ - return; - - wxString tmp = name; - tmp += " FROM "; - tmp += window; - - char *s = new char[tmp.Length()+1]; - - strcpy( s, WXSTRINGCAST tmp ); - - gtk_signal_connect( GTK_OBJECT(widget), "focus_in_event", - GTK_SIGNAL_FUNC(gtk_debug_focus_in_callback), (gpointer)s ); -} - -#endif - -//----------------------------------------------------------------------------- -// data -//----------------------------------------------------------------------------- - -extern wxList wxPendingDelete; -extern wxList wxTopLevelWindows; -extern bool g_blockEventsOnDrag; -extern bool g_blockEventsOnScroll; -static bool g_capturing = FALSE; -static wxWindow *g_focusWindow = (wxWindow*) NULL; - -// hack: we need something to pass to gtk_menu_popup, so we store the time of -// the last click here -static guint32 gs_timeLastClick = 0; - -//----------------------------------------------------------------------------- -// "expose_event" (of m_wxwindow, not of m_widget) -//----------------------------------------------------------------------------- - -static void gtk_window_expose_callback( GtkWidget *WXUNUSED(widget), GdkEventExpose *gdk_event, wxWindow *win ) -{ - if (!win->HasVMT()) return; - - win->m_updateRegion.Union( gdk_event->area.x, - gdk_event->area.y, - gdk_event->area.width, - gdk_event->area.height ); - - if (gdk_event->count > 0) return; - -/* - printf( "OnExpose from " ); - if (win->GetClassInfo() && win->GetClassInfo()->GetClassName()) - printf( win->GetClassInfo()->GetClassName() ); - printf( ".\n" ); -*/ - - wxPaintEvent event( win->GetId() ); - event.SetEventObject( win ); - win->GetEventHandler()->ProcessEvent( event ); - - win->m_updateRegion.Clear(); -} - -//----------------------------------------------------------------------------- -// "draw" (of m_wxwindow, not of m_widget) -//----------------------------------------------------------------------------- - -static void gtk_window_draw_callback( GtkWidget *WXUNUSED(widget), GdkRectangle *rect, wxWindow *win ) -{ - if (!win->HasVMT()) return; - - win->m_updateRegion.Union( rect->x, rect->y, rect->width, rect->height ); - - wxPaintEvent event( win->GetId() ); - event.SetEventObject( win ); - win->GetEventHandler()->ProcessEvent( event ); - - win->m_updateRegion.Clear(); -} - -//----------------------------------------------------------------------------- -// "key_press_event" from any window -//----------------------------------------------------------------------------- - -static gint gtk_window_key_press_callback( GtkWidget *widget, GdkEventKey *gdk_event, wxWindow *win ) -{ - if (!win->HasVMT()) return FALSE; - if (g_blockEventsOnDrag) return FALSE; - -/* - printf( "OnKeyPress from " ); - if (win->GetClassInfo() && win->GetClassInfo()->GetClassName()) - printf( win->GetClassInfo()->GetClassName() ); - printf( ".\n" ); -*/ - - long key_code = 0; - switch (gdk_event->keyval) - { - case GDK_BackSpace: key_code = WXK_BACK; break; - case GDK_Tab: key_code = WXK_TAB; break; - case GDK_Linefeed: key_code = WXK_RETURN; break; - case GDK_Clear: key_code = WXK_CLEAR; break; - case GDK_Return: key_code = WXK_RETURN; break; - case GDK_Pause: key_code = WXK_PAUSE; break; - case GDK_Scroll_Lock: key_code = WXK_SCROLL; break; - case GDK_Escape: key_code = WXK_ESCAPE; break; - case GDK_Delete: key_code = WXK_DELETE; break; - case GDK_Home: key_code = WXK_HOME; break; - case GDK_Left: key_code = WXK_LEFT; break; - case GDK_Up: key_code = WXK_UP; break; - case GDK_Right: key_code = WXK_RIGHT; break; - case GDK_Down: key_code = WXK_DOWN; break; - case GDK_Prior: key_code = WXK_PRIOR; break; -// case GDK_Page_Up: key_code = WXK_PAGEUP; break; - case GDK_Next: key_code = WXK_NEXT; break; -// case GDK_Page_Down: key_code = WXK_PAGEDOWN; break; - case GDK_End: key_code = WXK_END; break; - case GDK_Begin: key_code = WXK_HOME; break; - case GDK_Select: key_code = WXK_SELECT; break; - case GDK_Print: key_code = WXK_PRINT; break; - case GDK_Execute: key_code = WXK_EXECUTE; break; - case GDK_Insert: key_code = WXK_INSERT; break; - case GDK_Num_Lock: key_code = WXK_NUMLOCK; break; - case GDK_KP_Tab: key_code = WXK_TAB; break; - case GDK_KP_Enter: key_code = WXK_RETURN; break; - case GDK_KP_Home: key_code = WXK_HOME; break; - case GDK_KP_Left: key_code = WXK_LEFT; break; - case GDK_KP_Up: key_code = WXK_UP; break; - case GDK_KP_Right: key_code = WXK_RIGHT; break; - case GDK_KP_Down: key_code = WXK_DOWN; break; - case GDK_KP_Prior: key_code = WXK_PRIOR; break; -// case GDK_KP_Page_Up: key_code = WXK_PAGEUP; break; - case GDK_KP_Next: key_code = WXK_NEXT; break; -// case GDK_KP_Page_Down: key_code = WXK_PAGEDOWN; break; - case GDK_KP_End: key_code = WXK_END; break; - case GDK_KP_Begin: key_code = WXK_HOME; break; - case GDK_KP_Insert: key_code = WXK_INSERT; break; - case GDK_KP_Delete: key_code = WXK_DELETE; break; - case GDK_KP_Multiply: key_code = WXK_MULTIPLY; break; - case GDK_KP_Add: key_code = WXK_ADD; break; - case GDK_KP_Separator: key_code = WXK_SEPARATOR; break; - case GDK_KP_Subtract: key_code = WXK_SUBTRACT; break; - case GDK_KP_Decimal: key_code = WXK_DECIMAL; break; - case GDK_KP_Divide: key_code = WXK_DIVIDE; break; - case GDK_KP_0: key_code = WXK_NUMPAD0; break; - case GDK_KP_1: key_code = WXK_NUMPAD1; break; - case GDK_KP_2: key_code = WXK_NUMPAD2; break; - case GDK_KP_3: key_code = WXK_NUMPAD3; break; - case GDK_KP_4: key_code = WXK_NUMPAD4; break; - case GDK_KP_5: key_code = WXK_NUMPAD5; break; - case GDK_KP_6: key_code = WXK_NUMPAD6; break; - case GDK_KP_7: key_code = WXK_NUMPAD7; break; - case GDK_KP_8: key_code = WXK_NUMPAD7; break; - case GDK_KP_9: key_code = WXK_NUMPAD9; break; - case GDK_F1: key_code = WXK_F1; break; - case GDK_F2: key_code = WXK_F2; break; - case GDK_F3: key_code = WXK_F3; break; - case GDK_F4: key_code = WXK_F4; break; - case GDK_F5: key_code = WXK_F5; break; - case GDK_F6: key_code = WXK_F6; break; - case GDK_F7: key_code = WXK_F7; break; - case GDK_F8: key_code = WXK_F8; break; - case GDK_F9: key_code = WXK_F9; break; - case GDK_F10: key_code = WXK_F10; break; - case GDK_F11: key_code = WXK_F11; break; - case GDK_F12: key_code = WXK_F12; break; - default: - { - if ((gdk_event->keyval >= 0x20) && (gdk_event->keyval <= 0xFF)) - key_code = gdk_event->keyval; - } - } - - if (!key_code) return FALSE; - - wxKeyEvent event( wxEVT_KEY_DOWN ); - event.m_shiftDown = (gdk_event->state & GDK_SHIFT_MASK); - event.m_controlDown = (gdk_event->state & GDK_CONTROL_MASK); - event.m_altDown = (gdk_event->state & GDK_MOD1_MASK); - event.m_metaDown = (gdk_event->state & GDK_MOD2_MASK); - event.m_keyCode = key_code; - event.m_x = 0; - event.m_y = 0; - event.SetEventObject( win ); - - bool ret = win->GetEventHandler()->ProcessEvent( event ); - - if (!ret) - { - wxWindow *ancestor = win; - while (ancestor) - { - int command = ancestor->GetAcceleratorTable()->GetCommand( event ); - if (command != -1) - { - wxCommandEvent command_event( wxEVT_COMMAND_MENU_SELECTED, command ); - ret = ancestor->GetEventHandler()->ProcessEvent( command_event ); - break; - } - ancestor = ancestor->GetParent(); - } - } - - // win is a control: tab can be propagated up - if ((!ret) && (gdk_event->keyval == GDK_Tab)) - { - wxNavigationKeyEvent new_event; - new_event.SetDirection( !(gdk_event->state & GDK_SHIFT_MASK) ); - new_event.SetWindowChange( FALSE ); - new_event.SetCurrentFocus( win ); - ret = win->GetEventHandler()->ProcessEvent( new_event ); - } - -/* - // win is a panel: up can be propagated to the panel - if ((!ret) && (win->m_wxwindow) && (win->m_parent) && (win->m_parent->AcceptsFocus()) && - (gdk_event->keyval == GDK_Up)) - { - win->m_parent->SetFocus(); - ret = TRUE; - } - - // win is a panel: left/right can be propagated to the panel - if ((!ret) && (win->m_wxwindow) && - ((gdk_event->keyval == GDK_Right) || (gdk_event->keyval == GDK_Left) || - (gdk_event->keyval == GDK_Up) || (gdk_event->keyval == GDK_Down))) - { - wxNavigationKeyEvent new_event; - new_event.SetDirection( (gdk_event->keyval == GDK_Right) || (gdk_event->keyval == GDK_Down) ); - new_event.SetCurrentFocus( win ); - ret = win->GetEventHandler()->ProcessEvent( new_event ); - } -*/ - - if (ret) - { - gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "key_press_event" ); - } - - return ret; -} - -//----------------------------------------------------------------------------- -// "key_release_event" from any window -//----------------------------------------------------------------------------- - -static gint gtk_window_key_release_callback( GtkWidget *widget, GdkEventKey *gdk_event, wxWindow *win ) -{ - if (!win->HasVMT()) return FALSE; - if (g_blockEventsOnDrag) return FALSE; - -/* - printf( "OnKeyRelease from " ); - if (win->GetClassInfo() && win->GetClassInfo()->GetClassName()) - printf( win->GetClassInfo()->GetClassName() ); - printf( ".\n" ); -*/ - - long key_code = 0; - switch (gdk_event->keyval) - { - case GDK_BackSpace: key_code = WXK_BACK; break; - case GDK_Tab: key_code = WXK_TAB; break; - case GDK_Linefeed: key_code = WXK_RETURN; break; - case GDK_Clear: key_code = WXK_CLEAR; break; - case GDK_Return: key_code = WXK_RETURN; break; - case GDK_Pause: key_code = WXK_PAUSE; break; - case GDK_Scroll_Lock: key_code = WXK_SCROLL; break; - case GDK_Escape: key_code = WXK_ESCAPE; break; - case GDK_Delete: key_code = WXK_DELETE; break; - case GDK_Home: key_code = WXK_HOME; break; - case GDK_Left: key_code = WXK_LEFT; break; - case GDK_Up: key_code = WXK_UP; break; - case GDK_Right: key_code = WXK_RIGHT; break; - case GDK_Down: key_code = WXK_DOWN; break; - case GDK_Prior: key_code = WXK_PRIOR; break; -// case GDK_Page_Up: key_code = WXK_PAGEUP; break; - case GDK_Next: key_code = WXK_NEXT; break; -// case GDK_Page_Down: key_code = WXK_PAGEDOWN; break; - case GDK_End: key_code = WXK_END; break; - case GDK_Begin: key_code = WXK_HOME; break; - case GDK_Select: key_code = WXK_SELECT; break; - case GDK_Print: key_code = WXK_PRINT; break; - case GDK_Execute: key_code = WXK_EXECUTE; break; - case GDK_Insert: key_code = WXK_INSERT; break; - case GDK_Num_Lock: key_code = WXK_NUMLOCK; break; - case GDK_KP_Tab: key_code = WXK_TAB; break; - case GDK_KP_Enter: key_code = WXK_RETURN; break; - case GDK_KP_Home: key_code = WXK_HOME; break; - case GDK_KP_Left: key_code = WXK_LEFT; break; - case GDK_KP_Up: key_code = WXK_UP; break; - case GDK_KP_Right: key_code = WXK_RIGHT; break; - case GDK_KP_Down: key_code = WXK_DOWN; break; - case GDK_KP_Prior: key_code = WXK_PRIOR; break; -// case GDK_KP_Page_Up: key_code = WXK_PAGEUP; break; - case GDK_KP_Next: key_code = WXK_NEXT; break; -// case GDK_KP_Page_Down: key_code = WXK_PAGEDOWN; break; - case GDK_KP_End: key_code = WXK_END; break; - case GDK_KP_Begin: key_code = WXK_HOME; break; - case GDK_KP_Insert: key_code = WXK_INSERT; break; - case GDK_KP_Delete: key_code = WXK_DELETE; break; - case GDK_KP_Multiply: key_code = WXK_MULTIPLY; break; - case GDK_KP_Add: key_code = WXK_ADD; break; - case GDK_KP_Separator: key_code = WXK_SEPARATOR; break; - case GDK_KP_Subtract: key_code = WXK_SUBTRACT; break; - case GDK_KP_Decimal: key_code = WXK_DECIMAL; break; - case GDK_KP_Divide: key_code = WXK_DIVIDE; break; - case GDK_KP_0: key_code = WXK_NUMPAD0; break; - case GDK_KP_1: key_code = WXK_NUMPAD1; break; - case GDK_KP_2: key_code = WXK_NUMPAD2; break; - case GDK_KP_3: key_code = WXK_NUMPAD3; break; - case GDK_KP_4: key_code = WXK_NUMPAD4; break; - case GDK_KP_5: key_code = WXK_NUMPAD5; break; - case GDK_KP_6: key_code = WXK_NUMPAD6; break; - case GDK_KP_7: key_code = WXK_NUMPAD7; break; - case GDK_KP_8: key_code = WXK_NUMPAD7; break; - case GDK_KP_9: key_code = WXK_NUMPAD9; break; - case GDK_F1: key_code = WXK_F1; break; - case GDK_F2: key_code = WXK_F2; break; - case GDK_F3: key_code = WXK_F3; break; - case GDK_F4: key_code = WXK_F4; break; - case GDK_F5: key_code = WXK_F5; break; - case GDK_F6: key_code = WXK_F6; break; - case GDK_F7: key_code = WXK_F7; break; - case GDK_F8: key_code = WXK_F8; break; - case GDK_F9: key_code = WXK_F9; break; - case GDK_F10: key_code = WXK_F10; break; - case GDK_F11: key_code = WXK_F11; break; - case GDK_F12: key_code = WXK_F12; break; - default: - { - if ((gdk_event->keyval >= 0x20) && (gdk_event->keyval <= 0xFF)) - key_code = gdk_event->keyval; - } - } - - if (!key_code) return FALSE; - - wxKeyEvent event( wxEVT_KEY_UP ); - event.m_shiftDown = (gdk_event->state & GDK_SHIFT_MASK); - event.m_controlDown = (gdk_event->state & GDK_CONTROL_MASK); - event.m_altDown = (gdk_event->state & GDK_MOD1_MASK); - event.m_metaDown = (gdk_event->state & GDK_MOD2_MASK); - event.m_keyCode = key_code; - event.m_x = 0; - event.m_y = 0; - event.SetEventObject( win ); - - bool ret = win->GetEventHandler()->ProcessEvent( event ); - - if (ret) - { - gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "key_press_event" ); - } - - return ret; -} - -//----------------------------------------------------------------------------- -// "button_press_event" -//----------------------------------------------------------------------------- - -static gint gtk_window_button_press_callback( GtkWidget *widget, GdkEventButton *gdk_event, wxWindow *win ) -{ - if (!win->IsOwnGtkWindow( gdk_event->window )) return TRUE; - - if (g_blockEventsOnDrag) return TRUE; - if (g_blockEventsOnScroll) return TRUE; - - if (win->m_wxwindow) - { - if (GTK_WIDGET_CAN_FOCUS(win->m_wxwindow) && !GTK_WIDGET_HAS_FOCUS (win->m_wxwindow) ) - { - gtk_widget_grab_focus (win->m_wxwindow); - -/* - printf( "GrabFocus from " ); - if (win->GetClassInfo() && win->GetClassInfo()->GetClassName()) - printf( win->GetClassInfo()->GetClassName() ); - printf( ".\n" ); -*/ - - } - } - - if (!win->HasVMT()) return TRUE; - -/* - printf( "OnButtonPress from " ); - if (win->GetClassInfo() && win->GetClassInfo()->GetClassName()) - printf( win->GetClassInfo()->GetClassName() ); - printf( ".\n" ); -*/ - - wxEventType event_type = wxEVT_LEFT_DOWN; - - if (gdk_event->button == 1) - { - switch (gdk_event->type) - { - case GDK_BUTTON_PRESS: event_type = wxEVT_LEFT_DOWN; break; - case GDK_2BUTTON_PRESS: event_type = wxEVT_LEFT_DCLICK; break; - default: break; - } - } - else if (gdk_event->button == 2) - { - switch (gdk_event->type) - { - case GDK_BUTTON_PRESS: event_type = wxEVT_MIDDLE_DOWN; break; - case GDK_2BUTTON_PRESS: event_type = wxEVT_MIDDLE_DCLICK; break; - default: break; - } - } - else if (gdk_event->button == 3) - { - switch (gdk_event->type) - { - case GDK_BUTTON_PRESS: event_type = wxEVT_RIGHT_DOWN; break; - case GDK_2BUTTON_PRESS: event_type = wxEVT_RIGHT_DCLICK; break; - default: break; - } - } - - wxMouseEvent event( event_type ); - event.m_shiftDown = (gdk_event->state & GDK_SHIFT_MASK); - event.m_controlDown = (gdk_event->state & GDK_CONTROL_MASK); - event.m_altDown = (gdk_event->state & GDK_MOD1_MASK); - event.m_metaDown = (gdk_event->state & GDK_MOD2_MASK); - event.m_leftDown = (gdk_event->state & GDK_BUTTON1_MASK); - event.m_middleDown = (gdk_event->state & GDK_BUTTON2_MASK); - event.m_rightDown = (gdk_event->state & GDK_BUTTON3_MASK); - - event.m_x = (long)gdk_event->x; - event.m_y = (long)gdk_event->y; - - // Some control don't have their own X window and thus cannot get - // any events. - - if (!g_capturing) - { - wxNode *node = win->GetChildren().First(); - while (node) - { - wxWindow *child = (wxWindow*)node->Data(); - - if (child->m_isStaticBox) - { - // wxStaticBox is transparent in the box itself - int x = event.m_x; - int y = event.m_y; - int xx1 = child->m_x; - int yy1 = child->m_y; - int xx2 = child->m_x + child->m_width; - int yy2 = child->m_x + child->m_height; - - // left - if (((x >= xx1) && (x <= xx1+10) && (y >= yy1) && (y <= yy2)) || - // right - ((x >= xx2-10) && (x <= xx2) && (y >= yy1) && (y <= yy2)) || - // top - ((x >= xx1) && (x <= xx2) && (y >= yy1) && (y <= yy1+10)) || - // bottom - ((x >= xx1) && (x <= xx2) && (y >= yy2-1) && (y <= yy2))) - { - win = child; - event.m_x -= child->m_x; - event.m_y -= child->m_y; - break; - } - - } - else - { - if ((child->m_wxwindow == (GtkWidget*) NULL) && - (child->m_x <= event.m_x) && - (child->m_y <= event.m_y) && - (child->m_x+child->m_width >= event.m_x) && - (child->m_y+child->m_height >= event.m_y)) - { - win = child; - event.m_x -= child->m_x; - event.m_y -= child->m_y; - break; - } - } - node = node->Next(); - } - } - - wxPoint pt(win->GetClientAreaOrigin()); - event.m_x -= pt.x; - event.m_y -= pt.y; - - event.SetEventObject( win ); - - gs_timeLastClick = gdk_event->time; - - if (win->GetEventHandler()->ProcessEvent( event )) - gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "button_press_event" ); - - return TRUE; -} - -//----------------------------------------------------------------------------- -// "button_release_event" -//----------------------------------------------------------------------------- - -static gint gtk_window_button_release_callback( GtkWidget *widget, GdkEventButton *gdk_event, wxWindow *win ) -{ - if (!win->IsOwnGtkWindow( gdk_event->window )) return TRUE; - - if (g_blockEventsOnDrag) return TRUE; - if (g_blockEventsOnScroll) return TRUE; - - if (!win->HasVMT()) return TRUE; - -/* - printf( "OnButtonRelease from " ); - if (win->GetClassInfo() && win->GetClassInfo()->GetClassName()) - printf( win->GetClassInfo()->GetClassName() ); - printf( ".\n" ); -*/ - - wxEventType event_type = wxEVT_NULL; - - switch (gdk_event->button) - { - case 1: event_type = wxEVT_LEFT_UP; break; - case 2: event_type = wxEVT_MIDDLE_UP; break; - case 3: event_type = wxEVT_RIGHT_UP; break; - } - - wxMouseEvent event( event_type ); - event.m_shiftDown = (gdk_event->state & GDK_SHIFT_MASK); - event.m_controlDown = (gdk_event->state & GDK_CONTROL_MASK); - event.m_altDown = (gdk_event->state & GDK_MOD1_MASK); - event.m_metaDown = (gdk_event->state & GDK_MOD2_MASK); - event.m_leftDown = (gdk_event->state & GDK_BUTTON1_MASK); - event.m_middleDown = (gdk_event->state & GDK_BUTTON2_MASK); - event.m_rightDown = (gdk_event->state & GDK_BUTTON3_MASK); - event.m_x = (long)gdk_event->x; - event.m_y = (long)gdk_event->y; - - // Some control don't have their own X window and thus cannot get - // any events. - - if (!g_capturing) - { - wxNode *node = win->GetChildren().First(); - while (node) - { - wxWindow *child = (wxWindow*)node->Data(); - - if (child->m_isStaticBox) - { - // wxStaticBox is transparent in the box itself - int x = event.m_x; - int y = event.m_y; - int xx1 = child->m_x; - int yy1 = child->m_y; - int xx2 = child->m_x + child->m_width; - int yy2 = child->m_x + child->m_height; - - // left - if (((x >= xx1) && (x <= xx1+10) && (y >= yy1) && (y <= yy2)) || - // right - ((x >= xx2-10) && (x <= xx2) && (y >= yy1) && (y <= yy2)) || - // top - ((x >= xx1) && (x <= xx2) && (y >= yy1) && (y <= yy1+10)) || - // bottom - ((x >= xx1) && (x <= xx2) && (y >= yy2-1) && (y <= yy2))) - { - win = child; - event.m_x -= child->m_x; - event.m_y -= child->m_y; - break; - } - - } - else - { - if ((child->m_wxwindow == (GtkWidget*) NULL) && - (child->m_x <= event.m_x) && - (child->m_y <= event.m_y) && - (child->m_x+child->m_width >= event.m_x) && - (child->m_y+child->m_height >= event.m_y)) - { - win = child; - event.m_x -= child->m_x; - event.m_y -= child->m_y; - break; - } - } - node = node->Next(); - } - } - - wxPoint pt(win->GetClientAreaOrigin()); - event.m_x -= pt.x; - event.m_y -= pt.y; - - event.SetEventObject( win ); - - if (win->GetEventHandler()->ProcessEvent( event )) - gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "button_release_event" ); - - return TRUE; -} - -//----------------------------------------------------------------------------- -// "motion_notify_event" -//----------------------------------------------------------------------------- - -static gint gtk_window_motion_notify_callback( GtkWidget *widget, GdkEventMotion *gdk_event, wxWindow *win ) -{ - if (gdk_event->is_hint) - { - int x = 0; - int y = 0; - GdkModifierType state; - gdk_window_get_pointer(gdk_event->window, &x, &y, &state); - gdk_event->x = x; - gdk_event->y = y; - gdk_event->state = state; - } - - if (!win->IsOwnGtkWindow( gdk_event->window )) return TRUE; - - if (g_blockEventsOnDrag) return TRUE; - if (g_blockEventsOnScroll) return TRUE; - - if (!win->HasVMT()) return TRUE; - -/* - printf( "OnMotion from " ); - if (win->GetClassInfo() && win->GetClassInfo()->GetClassName()) - printf( win->GetClassInfo()->GetClassName() ); - printf( ".\n" ); -*/ - - wxMouseEvent event( wxEVT_MOTION ); - event.m_shiftDown = (gdk_event->state & GDK_SHIFT_MASK); - event.m_controlDown = (gdk_event->state & GDK_CONTROL_MASK); - event.m_altDown = (gdk_event->state & GDK_MOD1_MASK); - event.m_metaDown = (gdk_event->state & GDK_MOD2_MASK); - event.m_leftDown = (gdk_event->state & GDK_BUTTON1_MASK); - event.m_middleDown = (gdk_event->state & GDK_BUTTON2_MASK); - event.m_rightDown = (gdk_event->state & GDK_BUTTON3_MASK); - - event.m_x = (long)gdk_event->x; - event.m_y = (long)gdk_event->y; - - // Some control don't have their own X window and thus cannot get - // any events. - - if (!g_capturing) - { - wxNode *node = win->GetChildren().First(); - while (node) - { - wxWindow *child = (wxWindow*)node->Data(); - - if (child->m_isStaticBox) - { - // wxStaticBox is transparent in the box itself - int x = event.m_x; - int y = event.m_y; - int xx1 = child->m_x; - int yy1 = child->m_y; - int xx2 = child->m_x + child->m_width; - int yy2 = child->m_x + child->m_height; - - // left - if (((x >= xx1) && (x <= xx1+10) && (y >= yy1) && (y <= yy2)) || - // right - ((x >= xx2-10) && (x <= xx2) && (y >= yy1) && (y <= yy2)) || - // top - ((x >= xx1) && (x <= xx2) && (y >= yy1) && (y <= yy1+10)) || - // bottom - ((x >= xx1) && (x <= xx2) && (y >= yy2-1) && (y <= yy2))) - { - win = child; - event.m_x -= child->m_x; - event.m_y -= child->m_y; - break; - } - - } - else - { - if ((child->m_wxwindow == (GtkWidget*) NULL) && - (child->m_x <= event.m_x) && - (child->m_y <= event.m_y) && - (child->m_x+child->m_width >= event.m_x) && - (child->m_y+child->m_height >= event.m_y)) - { - win = child; - event.m_x -= child->m_x; - event.m_y -= child->m_y; - break; - } - } - node = node->Next(); - } - } - - wxPoint pt(win->GetClientAreaOrigin()); - event.m_x -= pt.x; - event.m_y -= pt.y; - - event.SetEventObject( win ); - - if (win->GetEventHandler()->ProcessEvent( event )) - gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "motion_notify_event" ); - - return TRUE; -} - -//----------------------------------------------------------------------------- -// "focus_in_event" -//----------------------------------------------------------------------------- - -static gint gtk_window_focus_in_callback( GtkWidget *widget, GdkEvent *WXUNUSED(event), wxWindow *win ) -{ - if (g_blockEventsOnDrag) return TRUE; - - g_focusWindow = win; - - if (win->m_wxwindow) - { - if (GTK_WIDGET_CAN_FOCUS(win->m_wxwindow)) - { - GTK_WIDGET_SET_FLAGS (win->m_wxwindow, GTK_HAS_FOCUS); -/* - printf( "SetFocus flag from " ); - if (win->GetClassInfo() && win->GetClassInfo()->GetClassName()) - printf( win->GetClassInfo()->GetClassName() ); - printf( ".\n" ); -*/ - } - } - - if (!win->HasVMT()) return TRUE; - -/* - printf( "OnSetFocus from " ); - if (win->GetClassInfo() && win->GetClassInfo()->GetClassName()) - printf( win->GetClassInfo()->GetClassName() ); - printf( " " ); - printf( WXSTRINGCAST win->GetLabel() ); - printf( ".\n" ); -*/ - - wxFocusEvent event( wxEVT_SET_FOCUS, win->GetId() ); - event.SetEventObject( win ); - - if (win->GetEventHandler()->ProcessEvent( event )) - gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "focus_in_event" ); - - return TRUE; -} - -//----------------------------------------------------------------------------- -// "focus_out_event" -//----------------------------------------------------------------------------- - -static gint gtk_window_focus_out_callback( GtkWidget *widget, GdkEvent *WXUNUSED(event), wxWindow *win ) -{ - if (g_blockEventsOnDrag) return TRUE; - if (win->m_wxwindow) - { - if (GTK_WIDGET_CAN_FOCUS(win->m_wxwindow)) - GTK_WIDGET_UNSET_FLAGS (win->m_wxwindow, GTK_HAS_FOCUS); - } - - if (!win->HasVMT()) return TRUE; - -/* - printf( "OnKillFocus from " ); - if (win->GetClassInfo() && win->GetClassInfo()->GetClassName()) - printf( win->GetClassInfo()->GetClassName() ); - printf( ".\n" ); -*/ - - wxFocusEvent event( wxEVT_KILL_FOCUS, win->GetId() ); - event.SetEventObject( win ); - - if (win->GetEventHandler()->ProcessEvent( event )) - gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "focus_out_event" ); - - return TRUE; -} - -//----------------------------------------------------------------------------- -// "enter_notify_event" -//----------------------------------------------------------------------------- - -static gint gtk_window_enter_callback( GtkWidget *widget, GdkEventCrossing *gdk_event, wxWindow *win ) -{ - if (g_blockEventsOnDrag) return TRUE; - - if ((widget->window) && (win->m_cursor)) - gdk_window_set_cursor( widget->window, win->m_cursor->GetCursor() ); - - if (widget->window != gdk_event->window) return TRUE; - - if (!win->HasVMT()) return TRUE; - -/* - printf( "OnEnter from " ); - if (win->GetClassInfo() && win->GetClassInfo()->GetClassName()) - printf( win->GetClassInfo()->GetClassName() ); - printf( ".\n" ); -*/ - - wxMouseEvent event( wxEVT_ENTER_WINDOW ); - event.SetEventObject( win ); - - int x = 0; - int y = 0; - GdkModifierType state = (GdkModifierType)0; - - gdk_window_get_pointer( widget->window, &x, &y, &state ); - - event.m_shiftDown = (state & GDK_SHIFT_MASK); - event.m_controlDown = (state & GDK_CONTROL_MASK); - event.m_altDown = (state & GDK_MOD1_MASK); - event.m_metaDown = (state & GDK_MOD2_MASK); - event.m_leftDown = (state & GDK_BUTTON1_MASK); - event.m_middleDown = (state & GDK_BUTTON2_MASK); - event.m_rightDown = (state & GDK_BUTTON3_MASK); - - event.m_x = (long)x; - event.m_y = (long)y; - - wxPoint pt(win->GetClientAreaOrigin()); - event.m_x -= pt.x; - event.m_y -= pt.y; - - if (win->GetEventHandler()->ProcessEvent( event )) - gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "enter_notify_event" ); - - return TRUE; -} - -//----------------------------------------------------------------------------- -// "leave_notify_event" -//----------------------------------------------------------------------------- - -static gint gtk_window_leave_callback( GtkWidget *widget, GdkEventCrossing *gdk_event, wxWindow *win ) -{ - if (g_blockEventsOnDrag) return TRUE; - - if ((widget->window) && (win->m_cursor)) - gdk_window_set_cursor( widget->window, wxSTANDARD_CURSOR->GetCursor() ); - - if (widget->window != gdk_event->window) return TRUE; - - if (!win->HasVMT()) return TRUE; - -/* - printf( "OnLeave from " ); - if (win->GetClassInfo() && win->GetClassInfo()->GetClassName()) - printf( win->GetClassInfo()->GetClassName() ); - printf( ".\n" ); -*/ - - wxMouseEvent event( wxEVT_LEAVE_WINDOW ); - event.SetEventObject( win ); - - int x = 0; - int y = 0; - GdkModifierType state = (GdkModifierType)0; - - gdk_window_get_pointer( widget->window, &x, &y, &state ); - - event.m_shiftDown = (state & GDK_SHIFT_MASK); - event.m_controlDown = (state & GDK_CONTROL_MASK); - event.m_altDown = (state & GDK_MOD1_MASK); - event.m_metaDown = (state & GDK_MOD2_MASK); - event.m_leftDown = (state & GDK_BUTTON1_MASK); - event.m_middleDown = (state & GDK_BUTTON2_MASK); - event.m_rightDown = (state & GDK_BUTTON3_MASK); - - event.m_x = (long)x; - event.m_y = (long)y; - - wxPoint pt(win->GetClientAreaOrigin()); - event.m_x -= pt.x; - event.m_y -= pt.y; - - if (win->GetEventHandler()->ProcessEvent( event )) - gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "leave_notify_event" ); - - return TRUE; -} - -//----------------------------------------------------------------------------- -// "value_changed" from m_vAdjust -//----------------------------------------------------------------------------- - -static void gtk_window_vscroll_callback( GtkWidget *WXUNUSED(widget), wxWindow *win ) -{ - if (g_blockEventsOnDrag) return; - -/* - printf( "OnVScroll from " ); - if (win->GetClassInfo() && win->GetClassInfo()->GetClassName()) - printf( win->GetClassInfo()->GetClassName() ); - printf( ".\n" ); -*/ - - if (!win->HasVMT()) return; - - float diff = win->m_vAdjust->value - win->m_oldVerticalPos; - if (fabs(diff) < 0.2) return; - - wxEventType command = wxEVT_NULL; - - float line_step = win->m_vAdjust->step_increment; - float page_step = win->m_vAdjust->page_increment; - - if (win->m_isScrolling) - { - command = wxEVT_SCROLL_THUMBTRACK; - } - else - { - if (fabs(win->m_vAdjust->value-win->m_vAdjust->lower) < 0.2) command = wxEVT_SCROLL_BOTTOM; - else if (fabs(win->m_vAdjust->value-win->m_vAdjust->upper) < 0.2) command = wxEVT_SCROLL_TOP; - else if (fabs(diff-line_step) < 0.2) command = wxEVT_SCROLL_LINEDOWN; - else if (fabs(diff+line_step) < 0.2) command = wxEVT_SCROLL_LINEUP; - else if (fabs(diff-page_step) < 0.2) command = wxEVT_SCROLL_PAGEDOWN; - else if (fabs(diff+page_step) < 0.2) command = wxEVT_SCROLL_PAGEUP; - else command = wxEVT_SCROLL_THUMBTRACK; - } - - int value = (int)(win->m_vAdjust->value+0.5); - - wxScrollEvent event( command, win->GetId(), value, wxVERTICAL ); - event.SetEventObject( win ); - win->GetEventHandler()->ProcessEvent( event ); -} - -//----------------------------------------------------------------------------- -// "value_changed" from m_hAdjust -//----------------------------------------------------------------------------- - -static void gtk_window_hscroll_callback( GtkWidget *WXUNUSED(widget), wxWindow *win ) -{ - if (g_blockEventsOnDrag) return; - -/* - printf( "OnHScroll from " ); - if (win->GetClassInfo() && win->GetClassInfo()->GetClassName()) - printf( win->GetClassInfo()->GetClassName() ); - printf( ".\n" ); -*/ - - if (!win->HasVMT()) return; - - float diff = win->m_hAdjust->value - win->m_oldHorizontalPos; - if (fabs(diff) < 0.2) return; - - wxEventType command = wxEVT_NULL; - - float line_step = win->m_hAdjust->step_increment; - float page_step = win->m_hAdjust->page_increment; - - if (win->m_isScrolling) - { - command = wxEVT_SCROLL_THUMBTRACK; - } - else - { - if (fabs(win->m_hAdjust->value-win->m_hAdjust->lower) < 0.2) command = wxEVT_SCROLL_BOTTOM; - else if (fabs(win->m_hAdjust->value-win->m_hAdjust->upper) < 0.2) command = wxEVT_SCROLL_TOP; - else if (fabs(diff-line_step) < 0.2) command = wxEVT_SCROLL_LINEDOWN; - else if (fabs(diff+line_step) < 0.2) command = wxEVT_SCROLL_LINEUP; - else if (fabs(diff-page_step) < 0.2) command = wxEVT_SCROLL_PAGEDOWN; - else if (fabs(diff+page_step) < 0.2) command = wxEVT_SCROLL_PAGEUP; - else command = wxEVT_SCROLL_THUMBTRACK; - } - - int value = (int)(win->m_hAdjust->value+0.5); - - wxScrollEvent event( command, win->GetId(), value, wxHORIZONTAL ); - event.SetEventObject( win ); - win->GetEventHandler()->ProcessEvent( event ); -} - -//----------------------------------------------------------------------------- -// "changed" from m_vAdjust -//----------------------------------------------------------------------------- - -static void gtk_window_vscroll_change_callback( GtkWidget *WXUNUSED(widget), wxWindow *win ) -{ - if (g_blockEventsOnDrag) return; - -/* - printf( "OnVScroll change from " ); - if (win->GetClassInfo() && win->GetClassInfo()->GetClassName()) - printf( win->GetClassInfo()->GetClassName() ); - printf( ".\n" ); -*/ - - if (!win->HasVMT()) return; - - wxEventType command = wxEVT_SCROLL_THUMBTRACK; - int value = (int)(win->m_vAdjust->value+0.5); - - wxScrollEvent event( command, win->GetId(), value, wxVERTICAL ); - event.SetEventObject( win ); - win->GetEventHandler()->ProcessEvent( event ); -} - -//----------------------------------------------------------------------------- -// "changed" from m_hAdjust -//----------------------------------------------------------------------------- - -static void gtk_window_hscroll_change_callback( GtkWidget *WXUNUSED(widget), wxWindow *win ) -{ - if (g_blockEventsOnDrag) return; - -/* - printf( "OnHScroll change from " ); - if (win->GetClassInfo() && win->GetClassInfo()->GetClassName()) - printf( win->GetClassInfo()->GetClassName() ); - printf( ".\n" ); -*/ - - if (!win->HasVMT()) return; - - wxEventType command = wxEVT_SCROLL_THUMBTRACK; - int value = (int)(win->m_hAdjust->value+0.5); - - wxScrollEvent event( command, win->GetId(), value, wxHORIZONTAL ); - event.SetEventObject( win ); - win->GetEventHandler()->ProcessEvent( event ); -} - -//----------------------------------------------------------------------------- -// "button_press_event" from scrollbar -//----------------------------------------------------------------------------- - -static gint gtk_scrollbar_button_press_callback( GtkRange *WXUNUSED(widget), - GdkEventButton *WXUNUSED(gdk_event), - wxWindow *win ) -{ -// don't test here as we can release the mouse while being over -// a different window then the slider -// -// if (gdk_event->window != widget->slider) return FALSE; - - win->m_isScrolling = TRUE; - g_blockEventsOnScroll = TRUE; - - return FALSE; -} - -//----------------------------------------------------------------------------- -// "button_release_event" from scrollbar -//----------------------------------------------------------------------------- - -static gint gtk_scrollbar_button_release_callback( GtkRange *widget, - GdkEventButton *WXUNUSED(gdk_event), - wxWindow *win ) -{ - -// don't test here as we can release the mouse while being over -// a different window then the slider -// -// if (gdk_event->window != widget->slider) return FALSE; - - GtkScrolledWindow *s_window = GTK_SCROLLED_WINDOW(win->m_widget); - - if (widget == GTK_RANGE(s_window->vscrollbar)) - gtk_signal_emit_by_name( GTK_OBJECT(win->m_hAdjust), "value_changed" ); - else - gtk_signal_emit_by_name( GTK_OBJECT(win->m_vAdjust), "value_changed" ); - - win->m_isScrolling = FALSE; - g_blockEventsOnScroll = FALSE; - - return FALSE; -} - -//----------------------------------------------------------------------------- -// InsertChild for wxWindow. -//----------------------------------------------------------------------------- - -/* Callback for wxWindow. This very strange beast has to be used because - * C++ has no virtual methods in a constructor. We have to emulate a - * virtual function here as wxNotebook requires a different way to insert - * a child in it. I had opted for creating a wxNotebookPage window class - * which would have made this superfluous (such in the MDI window system), - * but no-one was listening to me... */ - -static void wxInsertChildInWindow( wxWindow* parent, wxWindow* child ) -{ - gtk_myfixed_put( GTK_MYFIXED(parent->m_wxwindow), - GTK_WIDGET(child->m_widget), - child->m_x, - child->m_y ); - - gtk_widget_set_usize( GTK_WIDGET(child->m_widget), - child->m_width, - child->m_height ); - - if (wxIS_KIND_OF(parent,wxFrame)) - { - parent->m_sizeSet = FALSE; - } - - if (parent->m_windowStyle & wxTAB_TRAVERSAL) - { - /* we now allow a window to get the focus as long as it - doesn't have any children. */ - GTK_WIDGET_UNSET_FLAGS( parent->m_wxwindow, GTK_CAN_FOCUS ); - } -} - -//----------------------------------------------------------------------------- -// global functions -//----------------------------------------------------------------------------- - -wxWindow* wxGetActiveWindow() -{ - return g_focusWindow; -} - -//----------------------------------------------------------------------------- -// wxWindow -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxWindow,wxEvtHandler) - -BEGIN_EVENT_TABLE(wxWindow, wxEvtHandler) - EVT_SIZE(wxWindow::OnSize) - EVT_SYS_COLOUR_CHANGED(wxWindow::OnSysColourChanged) - EVT_INIT_DIALOG(wxWindow::OnInitDialog) - EVT_KEY_DOWN(wxWindow::OnKeyDown) -END_EVENT_TABLE() - -wxWindow::wxWindow() -{ - m_widget = (GtkWidget *) NULL; - m_wxwindow = (GtkWidget *) NULL; - m_parent = (wxWindow *) NULL; - m_children.DeleteContents( FALSE ); - - m_x = 0; - m_y = 0; - m_width = 0; - m_height = 0; - m_minWidth = -1; - m_minHeight = -1; - m_maxWidth = -1; - m_maxHeight = -1; - - m_retCode = 0; - - m_eventHandler = this; - m_windowValidator = (wxValidator *) NULL; - - m_windowId = -1; - - m_cursor = (wxCursor *) NULL; - m_font = *wxSWISS_FONT; - m_windowStyle = 0; - m_windowName = "noname"; - - m_constraints = (wxLayoutConstraints *) NULL; - m_constraintsInvolvedIn = (wxList *) NULL; - m_windowSizer = (wxSizer *) NULL; - m_sizerParent = (wxWindow *) NULL; - m_autoLayout = FALSE; - - m_sizeSet = FALSE; - m_hasVMT = FALSE; - m_needParent = TRUE; - - m_hasScrolling = FALSE; - m_isScrolling = FALSE; - m_hAdjust = (GtkAdjustment*) NULL; - m_vAdjust = (GtkAdjustment*) NULL; - m_oldHorizontalPos = 0.0; - m_oldVerticalPos = 0.0; - - m_isShown = FALSE; - m_isEnabled = TRUE; - -#if wxUSE_DRAG_AND_DROP - m_dropTarget = (wxDropTarget*) NULL; -#endif - m_resizing = FALSE; - m_scrollGC = (GdkGC*) NULL; - m_widgetStyle = (GtkStyle*) NULL; - - m_insertCallback = wxInsertChildInWindow; - - m_clientObject = (wxClientData*) NULL; - m_clientData = NULL; - - m_isStaticBox = FALSE; - m_acceptsFocus = FALSE; - - m_toolTip = (wxToolTip*) NULL; -} - -wxWindow::wxWindow( wxWindow *parent, wxWindowID id, - const wxPoint &pos, const wxSize &size, - long style, const wxString &name ) -{ - m_insertCallback = wxInsertChildInWindow; - Create( parent, id, pos, size, style, name ); -} - -bool wxWindow::Create( wxWindow *parent, wxWindowID id, - const wxPoint &pos, const wxSize &size, - long style, const wxString &name ) -{ - m_isShown = FALSE; - m_isEnabled = TRUE; - m_needParent = TRUE; - - PreCreation( parent, id, pos, size, style, name ); - - m_widget = gtk_scrolled_window_new( (GtkAdjustment *) NULL, (GtkAdjustment *) NULL ); - GTK_WIDGET_UNSET_FLAGS( m_widget, GTK_CAN_FOCUS ); - -#ifdef __WXDEBUG__ - debug_focus_in( m_widget, "wxWindow::m_widget", name ); -#endif - - GtkScrolledWindow *s_window = GTK_SCROLLED_WINDOW(m_widget); - -#ifdef __WXDEBUG__ - debug_focus_in( s_window->hscrollbar, "wxWindow::hsrcollbar", name ); - debug_focus_in( s_window->vscrollbar, "wxWindow::vsrcollbar", name ); -#endif - - GtkScrolledWindowClass *scroll_class = GTK_SCROLLED_WINDOW_CLASS( GTK_OBJECT(m_widget)->klass ); - scroll_class->scrollbar_spacing = 0; - - gtk_scrolled_window_set_policy( s_window, GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC ); - - m_oldHorizontalPos = 0.0; - m_oldVerticalPos = 0.0; - - m_hAdjust = gtk_range_get_adjustment( GTK_RANGE(s_window->hscrollbar) ); - m_vAdjust = gtk_range_get_adjustment( GTK_RANGE(s_window->vscrollbar) ); - - m_wxwindow = gtk_myfixed_new(); - -#ifdef __WXDEBUG__ - debug_focus_in( m_wxwindow, "wxWindow::m_wxwindow", name ); -#endif - -#ifdef NEW_GTK_SCROLL_CODE - gtk_scrolled_window_add_with_viewport( GTK_SCROLLED_WINDOW(m_widget), m_wxwindow ); - GtkViewport *viewport = GTK_VIEWPORT(s_window->child); -#else - gtk_container_add( GTK_CONTAINER(m_widget), m_wxwindow ); - GtkViewport *viewport = GTK_VIEWPORT(s_window->viewport); -#endif - -#ifdef __WXDEBUG__ - debug_focus_in( GTK_WIDGET(viewport), "wxWindow::viewport", name ); -#endif - - if (m_windowStyle & wxRAISED_BORDER) - { - gtk_viewport_set_shadow_type( viewport, GTK_SHADOW_OUT ); - } - else if (m_windowStyle & wxSUNKEN_BORDER) - { - gtk_viewport_set_shadow_type( viewport, GTK_SHADOW_IN ); - } - else - { - gtk_viewport_set_shadow_type( viewport, GTK_SHADOW_NONE ); - } - - if (m_windowStyle & wxTAB_TRAVERSAL) - { - /* we now allow a window to get the focus as long as it - doesn't have any children. */ - GTK_WIDGET_SET_FLAGS( m_wxwindow, GTK_CAN_FOCUS ); - m_acceptsFocus = FALSE; - } - else - { - GTK_WIDGET_SET_FLAGS( m_wxwindow, GTK_CAN_FOCUS ); - m_acceptsFocus = TRUE; - } - - // shut the viewport up - gtk_viewport_set_hadjustment( viewport, (GtkAdjustment*) gtk_adjustment_new( 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) ); - gtk_viewport_set_vadjustment( viewport, (GtkAdjustment*) gtk_adjustment_new( 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) ); - - // I _really_ don't want scrollbars in the beginning - m_vAdjust->lower = 0.0; - m_vAdjust->upper = 1.0; - m_vAdjust->value = 0.0; - m_vAdjust->step_increment = 1.0; - m_vAdjust->page_increment = 1.0; - m_vAdjust->page_size = 5.0; - gtk_signal_emit_by_name( GTK_OBJECT(m_vAdjust), "changed" ); - m_hAdjust->lower = 0.0; - m_hAdjust->upper = 1.0; - m_hAdjust->value = 0.0; - m_hAdjust->step_increment = 1.0; - m_hAdjust->page_increment = 1.0; - m_hAdjust->page_size = 5.0; - gtk_signal_emit_by_name( GTK_OBJECT(m_hAdjust), "changed" ); - - // these handlers block mouse events to any window during scrolling - // such as motion events and prevent GTK and wxWindows from fighting - // over where the slider should be - - gtk_signal_connect( GTK_OBJECT(s_window->vscrollbar), "button_press_event", - (GtkSignalFunc)gtk_scrollbar_button_press_callback, (gpointer) this ); - - gtk_signal_connect( GTK_OBJECT(s_window->hscrollbar), "button_press_event", - (GtkSignalFunc)gtk_scrollbar_button_press_callback, (gpointer) this ); - - gtk_signal_connect( GTK_OBJECT(s_window->vscrollbar), "button_release_event", - (GtkSignalFunc)gtk_scrollbar_button_release_callback, (gpointer) this ); - - gtk_signal_connect( GTK_OBJECT(s_window->hscrollbar), "button_release_event", - (GtkSignalFunc)gtk_scrollbar_button_release_callback, (gpointer) this ); - - // these handers het notified when screen updates are required either when - // scrolling or when the window size (and therefore scrollbar configuration) - // has changed - - gtk_signal_connect( GTK_OBJECT(m_hAdjust), "value_changed", - (GtkSignalFunc) gtk_window_hscroll_callback, (gpointer) this ); - gtk_signal_connect( GTK_OBJECT(m_vAdjust), "value_changed", - (GtkSignalFunc) gtk_window_vscroll_callback, (gpointer) this ); - - gtk_signal_connect( GTK_OBJECT(m_hAdjust), "changed", - (GtkSignalFunc) gtk_window_hscroll_change_callback, (gpointer) this ); - gtk_signal_connect(GTK_OBJECT(m_vAdjust), "changed", - (GtkSignalFunc) gtk_window_vscroll_change_callback, (gpointer) this ); - - gtk_widget_show( m_wxwindow ); - - if (m_parent) m_parent->AddChild( this ); - - (m_parent->m_insertCallback)( m_parent, this ); - - PostCreation(); - - Show( TRUE ); - - return TRUE; -} - -wxWindow::~wxWindow() -{ - m_hasVMT = FALSE; - -#if wxUSE_DRAG_AND_DROP - if (m_dropTarget) delete m_dropTarget; -#endif - - if (m_toolTip) delete m_toolTip; - - if (m_parent) m_parent->RemoveChild( this ); - if (m_widget) Show( FALSE ); - - DestroyChildren(); - - if (m_widgetStyle) gtk_style_unref( m_widgetStyle ); - - if (m_scrollGC) gdk_gc_unref( m_scrollGC ); - - if (m_wxwindow) gtk_widget_destroy( m_wxwindow ); - - if (m_widget) gtk_widget_destroy( m_widget ); - - if (m_cursor) delete m_cursor; - - DeleteRelatedConstraints(); - if (m_constraints) - { - // This removes any dangling pointers to this window - // in other windows' constraintsInvolvedIn lists. - UnsetConstraints(m_constraints); - delete m_constraints; - m_constraints = (wxLayoutConstraints *) NULL; - } - if (m_windowSizer) - { - delete m_windowSizer; - m_windowSizer = (wxSizer *) NULL; - } - // If this is a child of a sizer, remove self from parent - if (m_sizerParent) m_sizerParent->RemoveChild((wxWindow *)this); - - // Just in case the window has been Closed, but - // we're then deleting immediately: don't leave - // dangling pointers. - wxPendingDelete.DeleteObject(this); - - // Just in case we've loaded a top-level window via - // wxWindow::LoadNativeDialog but we weren't a dialog - // class - wxTopLevelWindows.DeleteObject(this); - - if (m_windowValidator) delete m_windowValidator; - - if (m_clientObject) delete m_clientObject; -} - -void wxWindow::PreCreation( wxWindow *parent, wxWindowID id, - const wxPoint &pos, const wxSize &size, - long style, const wxString &name ) -{ - wxASSERT_MSG( (!m_needParent) || (parent), "Need complete parent." ); - - m_widget = (GtkWidget*) NULL; - m_wxwindow = (GtkWidget*) NULL; - m_hasVMT = FALSE; - m_parent = parent; - m_children.DeleteContents( FALSE ); - - m_width = size.x; - if (m_width == -1) m_width = 20; - m_height = size.y; - if (m_height == -1) m_height = 20; - - m_x = (int)pos.x; - m_y = (int)pos.y; - - if (!m_needParent) // some reasonable defaults - { - if (m_x == -1) - { - m_x = (gdk_screen_width () - m_width) / 2; - if (m_x < 10) m_x = 10; - } - if (m_y == -1) - { - m_y = (gdk_screen_height () - m_height) / 2; - if (m_y < 10) m_y = 10; - } - } - - m_minWidth = -1; - m_minHeight = -1; - m_maxWidth = -1; - m_maxHeight = -1; - - m_retCode = 0; - - m_eventHandler = this; - - m_windowId = id == -1 ? wxNewId() : id; - - m_sizeSet = FALSE; - - m_cursor = new wxCursor( wxCURSOR_ARROW ); - m_font = *wxSWISS_FONT; - m_backgroundColour = wxSystemSettings::GetSystemColour( wxSYS_COLOUR_BTNFACE ); - m_foregroundColour = *wxBLACK; - m_windowStyle = style; - m_windowName = name; - - m_constraints = (wxLayoutConstraints *) NULL; - m_constraintsInvolvedIn = (wxList *) NULL; - m_windowSizer = (wxSizer *) NULL; - m_sizerParent = (wxWindow *) NULL; - m_autoLayout = FALSE; - - m_hasScrolling = FALSE; - m_isScrolling = FALSE; - m_hAdjust = (GtkAdjustment *) NULL; - m_vAdjust = (GtkAdjustment *) NULL; - m_oldHorizontalPos = 0.0; - m_oldVerticalPos = 0.0; - - m_isShown = FALSE; - m_isEnabled = TRUE; - -#if wxUSE_DRAG_AND_DROP - m_dropTarget = (wxDropTarget *) NULL; -#endif - m_resizing = FALSE; - m_windowValidator = (wxValidator *) NULL; - m_scrollGC = (GdkGC*) NULL; - m_widgetStyle = (GtkStyle*) NULL; - - m_clientObject = (wxClientData*)NULL; - m_clientData = NULL; - - m_isStaticBox = FALSE; - m_toolTip = (wxToolTip*) NULL; -} - -void wxWindow::PostCreation() -{ - if (m_wxwindow) - { - gtk_signal_connect( GTK_OBJECT(m_wxwindow), "expose_event", - GTK_SIGNAL_FUNC(gtk_window_expose_callback), (gpointer)this ); - - gtk_signal_connect( GTK_OBJECT(m_wxwindow), "draw", - GTK_SIGNAL_FUNC(gtk_window_draw_callback), (gpointer)this ); - } - - ConnectWidget( GetConnectWidget() ); - - if (m_widget && m_parent) gtk_widget_realize( m_widget ); - - if (m_wxwindow) gtk_widget_realize( m_wxwindow ); - - SetCursor( *wxSTANDARD_CURSOR ); - - m_hasVMT = TRUE; -} - -void wxWindow::ConnectWidget( GtkWidget *widget ) -{ - gtk_signal_connect( GTK_OBJECT(widget), "key_press_event", - GTK_SIGNAL_FUNC(gtk_window_key_press_callback), (gpointer)this ); - - gtk_signal_connect( GTK_OBJECT(widget), "key_release_event", - GTK_SIGNAL_FUNC(gtk_window_key_release_callback), (gpointer)this ); - - gtk_signal_connect( GTK_OBJECT(widget), "button_press_event", - GTK_SIGNAL_FUNC(gtk_window_button_press_callback), (gpointer)this ); - - gtk_signal_connect( GTK_OBJECT(widget), "button_release_event", - GTK_SIGNAL_FUNC(gtk_window_button_release_callback), (gpointer)this ); - - gtk_signal_connect( GTK_OBJECT(widget), "motion_notify_event", - GTK_SIGNAL_FUNC(gtk_window_motion_notify_callback), (gpointer)this ); - - gtk_signal_connect( GTK_OBJECT(widget), "focus_in_event", - GTK_SIGNAL_FUNC(gtk_window_focus_in_callback), (gpointer)this ); - - gtk_signal_connect( GTK_OBJECT(widget), "focus_out_event", - GTK_SIGNAL_FUNC(gtk_window_focus_out_callback), (gpointer)this ); - - gtk_signal_connect( GTK_OBJECT(widget), "enter_notify_event", - GTK_SIGNAL_FUNC(gtk_window_enter_callback), (gpointer)this ); - - gtk_signal_connect( GTK_OBJECT(widget), "leave_notify_event", - GTK_SIGNAL_FUNC(gtk_window_leave_callback), (gpointer)this ); -} - -bool wxWindow::HasVMT() -{ - return m_hasVMT; -} - -bool wxWindow::Close( bool force ) -{ - wxASSERT_MSG( (m_widget != NULL), "invalid window" ); - - wxCloseEvent event(wxEVT_CLOSE_WINDOW, m_windowId); - event.SetEventObject(this); - event.SetForce(force); - - return GetEventHandler()->ProcessEvent(event); -} - -bool wxWindow::Destroy() -{ - wxASSERT_MSG( (m_widget != NULL), "invalid window" ); - - m_hasVMT = FALSE; - delete this; - return TRUE; -} - -bool wxWindow::DestroyChildren() -{ - wxNode *node; - while ((node = m_children.First()) != (wxNode *)NULL) - { - wxWindow *child; - if ((child = (wxWindow *)node->Data()) != (wxWindow *)NULL) - { - delete child; - if (m_children.Member(child)) delete node; - } - } - return TRUE; -} - -void wxWindow::PrepareDC( wxDC &WXUNUSED(dc) ) -{ - // are we to set fonts here ? -} - -wxPoint wxWindow::GetClientAreaOrigin() const -{ - return wxPoint(0,0); -} - -void wxWindow::AdjustForParentClientOrigin( int& x, int& y, int sizeFlags ) -{ - if (((sizeFlags & wxSIZE_NO_ADJUSTMENTS) == 0) && GetParent()) - { - wxPoint pt(GetParent()->GetClientAreaOrigin()); - x += pt.x; - y += pt.y; - } -} - -void wxWindow::SetSize( int x, int y, int width, int height, int sizeFlags ) -{ - wxASSERT_MSG( (m_widget != NULL), "invalid window" ); - wxASSERT_MSG( (m_parent != NULL), "wxWindow::SetSize requires parent.\n" ); - - if (m_resizing) return; // I don't like recursions - m_resizing = TRUE; - - if (m_parent->m_wxwindow == NULL) // i.e. wxNotebook - { - // don't set the size for children of wxNotebook, just take the values. - m_x = x; - m_y = y; - m_width = width; - m_height = height; - } - else - { - int old_width = m_width; - int old_height = m_height; - - if ((sizeFlags & wxSIZE_USE_EXISTING) == wxSIZE_USE_EXISTING) - { - if (x != -1) m_x = x; - if (y != -1) m_y = y; - if (width != -1) m_width = width; - if (height != -1) m_height = height; - } - else - { - m_x = x; - m_y = y; - m_width = width; - m_height = height; - } - - if ((sizeFlags & wxSIZE_AUTO_WIDTH) == wxSIZE_AUTO_WIDTH) - { - if (width == -1) m_width = 80; - } - - if ((sizeFlags & wxSIZE_AUTO_HEIGHT) == wxSIZE_AUTO_HEIGHT) - { - if (height == -1) m_height = 26; - } - - if ((m_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth; - if ((m_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight; - if ((m_maxWidth != -1) && (m_width > m_maxWidth)) m_width = m_maxWidth; - if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_maxHeight; - - wxPoint pt( m_parent->GetClientAreaOrigin() ); - gtk_myfixed_move( GTK_MYFIXED(m_parent->m_wxwindow), m_widget, m_x+pt.x, m_y+pt.y ); - - if ((old_width != m_width) || (old_height != m_height)) - gtk_widget_set_usize( m_widget, m_width, m_height ); - } - - m_sizeSet = TRUE; - - wxSizeEvent event( wxSize(m_width,m_height), GetId() ); - event.SetEventObject( this ); - GetEventHandler()->ProcessEvent( event ); - - m_resizing = FALSE; -} - -void wxWindow::OnInternalIdle() -{ - UpdateWindowUI(); -} - -void wxWindow::SetSize( int width, int height ) -{ - SetSize( -1, -1, width, height, wxSIZE_USE_EXISTING ); -} - -void wxWindow::Move( int x, int y ) -{ - SetSize( x, y, -1, -1, wxSIZE_USE_EXISTING ); -} - -void wxWindow::GetSize( int *width, int *height ) const -{ - wxCHECK_RET( (m_widget != NULL), "invalid window" ); - - if (width) (*width) = m_width; - if (height) (*height) = m_height; -} - -void wxWindow::SetClientSize( int width, int height ) -{ - wxCHECK_RET( (m_widget != NULL), "invalid window" ); - - if (!m_wxwindow) - { - SetSize( width, height ); - } - else - { - int dw = 0; - int dh = 0; - - if (!m_hasScrolling) - { - GtkStyleClass *window_class = m_wxwindow->style->klass; - - if ((m_windowStyle & wxRAISED_BORDER) || - (m_windowStyle & wxSUNKEN_BORDER)) - { - dw += 2 * window_class->xthickness; - dh += 2 * window_class->ythickness; - } - } - else - { - GtkScrolledWindow *scroll_window = GTK_SCROLLED_WINDOW(m_widget); - GtkScrolledWindowClass *scroll_class = GTK_SCROLLED_WINDOW_CLASS( GTK_OBJECT(m_widget)->klass ); - -#ifdef NEW_GTK_SCROLL_CODE - GtkWidget *viewport = scroll_window->child; -#else - GtkWidget *viewport = scroll_window->viewport; -#endif - - GtkStyleClass *viewport_class = viewport->style->klass; - - GtkWidget *hscrollbar = scroll_window->hscrollbar; - GtkWidget *vscrollbar = scroll_window->vscrollbar; - - if ((m_windowStyle & wxRAISED_BORDER) || - (m_windowStyle & wxSUNKEN_BORDER)) - { - dw += 2 * viewport_class->xthickness; - dh += 2 * viewport_class->ythickness; - } - - if (scroll_window->vscrollbar_visible) - { - dw += vscrollbar->allocation.width; - dw += scroll_class->scrollbar_spacing; - } - - if (scroll_window->hscrollbar_visible) - { - dh += hscrollbar->allocation.height; - dw += scroll_class->scrollbar_spacing; - } - } - - SetSize( width+dw, height+dh ); - } -} - -void wxWindow::GetClientSize( int *width, int *height ) const -{ - wxCHECK_RET( (m_widget != NULL), "invalid window" ); - - if (!m_wxwindow) - { - if (width) (*width) = m_width; - if (height) (*height) = m_height; - } - else - { - int dw = 0; - int dh = 0; - - if (!m_hasScrolling) - { - GtkStyleClass *window_class = m_wxwindow->style->klass; - - if ((m_windowStyle & wxRAISED_BORDER) || - (m_windowStyle & wxSUNKEN_BORDER)) - { - dw += 2 * window_class->xthickness; - dh += 2 * window_class->ythickness; - } - } - else - { - GtkScrolledWindow *scroll_window = GTK_SCROLLED_WINDOW(m_widget); - GtkScrolledWindowClass *scroll_class = GTK_SCROLLED_WINDOW_CLASS( GTK_OBJECT(m_widget)->klass ); - -#ifdef NEW_GTK_SCROLL_CODE - GtkWidget *viewport = scroll_window->child; -#else - GtkWidget *viewport = scroll_window->viewport; -#endif - - GtkStyleClass *viewport_class = viewport->style->klass; - - if ((m_windowStyle & wxRAISED_BORDER) || - (m_windowStyle & wxSUNKEN_BORDER)) - { - dw += 2 * viewport_class->xthickness; - dh += 2 * viewport_class->ythickness; - } - - if (scroll_window->vscrollbar_visible) - { -// dw += vscrollbar->allocation.width; - dw += 15; // range.slider_width = 11 + 2*2pts edge - dw += scroll_class->scrollbar_spacing; - } - - if (scroll_window->hscrollbar_visible) - { -// dh += hscrollbar->allocation.height; - dh += 15; - dh += scroll_class->scrollbar_spacing; - } - } - - if (width) (*width) = m_width - dw; - if (height) (*height) = m_height - dh; - } -} - -void wxWindow::GetPosition( int *x, int *y ) const -{ - wxCHECK_RET( (m_widget != NULL), "invalid window" ); - - if (x) (*x) = m_x; - if (y) (*y) = m_y; -} - -void wxWindow::ClientToScreen( int *x, int *y ) -{ - wxCHECK_RET( (m_widget != NULL), "invalid window" ); - - GdkWindow *source = (GdkWindow *) NULL; - if (m_wxwindow) - source = m_wxwindow->window; - else - source = m_widget->window; - - int org_x = 0; - int org_y = 0; - gdk_window_get_origin( source, &org_x, &org_y ); - - if (!m_wxwindow) - { - if (GTK_WIDGET_NO_WINDOW (m_widget)) - { - org_x += m_widget->allocation.x; - org_y += m_widget->allocation.y; - } - } - - wxPoint pt(GetClientAreaOrigin()); - org_x += pt.x; - org_y += pt.y; - - if (x) *x += org_x; - if (y) *y += org_y; -} - -void wxWindow::ScreenToClient( int *x, int *y ) -{ - wxCHECK_RET( (m_widget != NULL), "invalid window" ); - - GdkWindow *source = (GdkWindow *) NULL; - if (m_wxwindow) - source = m_wxwindow->window; - else - source = m_widget->window; - - int org_x = 0; - int org_y = 0; - gdk_window_get_origin( source, &org_x, &org_y ); - - if (!m_wxwindow) - { - if (GTK_WIDGET_NO_WINDOW (m_widget)) - { - org_x += m_widget->allocation.x; - org_y += m_widget->allocation.y; - } - } - - wxPoint pt(GetClientAreaOrigin()); - org_x -= pt.x; - org_y -= pt.y; - - if (x) *x -= org_x; - if (y) *y -= org_y; -} - -void wxWindow::Centre( int direction ) -{ - wxCHECK_RET( (m_widget != NULL), "invalid window" ); - - int x = m_x; - int y = m_y; - - if (m_parent) - { - int p_w = 0; - int p_h = 0; - m_parent->GetSize( &p_w, &p_h ); - if (direction & wxHORIZONTAL == wxHORIZONTAL) x = (p_w - m_width) / 2; - if (direction & wxVERTICAL == wxVERTICAL) y = (p_h - m_height) / 2; - } - else - { - if (direction & wxHORIZONTAL == wxHORIZONTAL) x = (gdk_screen_width () - m_width) / 2; - if (direction & wxVERTICAL == wxVERTICAL) y = (gdk_screen_height () - m_height) / 2; - } - - Move( x, y ); -} - -void wxWindow::Fit() -{ - wxCHECK_RET( (m_widget != NULL), "invalid window" ); - - int maxX = 0; - int maxY = 0; - wxNode *node = m_children.First(); - while (node) - { - wxWindow *win = (wxWindow *)node->Data(); - int wx, wy, ww, wh; - win->GetPosition(&wx, &wy); - win->GetSize(&ww, &wh); - if (wx + ww > maxX) maxX = wx + ww; - if (wy + wh > maxY) maxY = wy + wh; - - node = node->Next(); - } - - SetClientSize(maxX + 7, maxY + 14); -} - -void wxWindow::SetSizeHints( int minW, int minH, int maxW, int maxH, int WXUNUSED(incW), int WXUNUSED(incH) ) -{ - wxCHECK_RET( (m_widget != NULL), "invalid window" ); - - m_minWidth = minW; - m_minHeight = minH; - m_maxWidth = maxW; - m_maxHeight = maxH; -} - -void wxWindow::OnSize( wxSizeEvent &WXUNUSED(event) ) -{ -// if (GetAutoLayout()) Layout(); -} - -bool wxWindow::Show( bool show ) -{ - wxCHECK_MSG( (m_widget != NULL), FALSE, "invalid window" ); - - if (show) - gtk_widget_show( m_widget ); - else - gtk_widget_hide( m_widget ); - - m_isShown = show; - - return TRUE; -} - -void wxWindow::Enable( bool enable ) -{ - wxCHECK_RET( (m_widget != NULL), "invalid window" ); - - m_isEnabled = enable; - - gtk_widget_set_sensitive( m_widget, enable ); - if (m_wxwindow) gtk_widget_set_sensitive( m_wxwindow, enable ); -} - -int wxWindow::GetCharHeight() const -{ - wxCHECK_MSG( (m_widget != NULL), 12, "invalid window" ); - - wxCHECK_MSG( m_font.Ok(), 12, "invalid font" ); - - GdkFont *font = m_font.GetInternalFont( 1.0 ); - - return font->ascent + font->descent; -} - -int wxWindow::GetCharWidth() const -{ - wxCHECK_MSG( (m_widget != NULL), 8, "invalid window" ); - - wxCHECK_MSG( m_font.Ok(), 8, "invalid font" ); - - GdkFont *font = m_font.GetInternalFont( 1.0 ); - - return gdk_string_width( font, "H" ); -} - -void wxWindow::GetTextExtent( const wxString& string, int *x, int *y, - int *descent, int *externalLeading, const wxFont *theFont, bool WXUNUSED(use16) ) const -{ - wxFont fontToUse = m_font; - if (theFont) fontToUse = *theFont; - - wxCHECK_RET( fontToUse.Ok(), "invalid font" ); - - GdkFont *font = fontToUse.GetInternalFont( 1.0 ); - if (x) (*x) = gdk_string_width( font, string ); - if (y) (*y) = font->ascent + font->descent; - if (descent) (*descent) = font->descent; - if (externalLeading) (*externalLeading) = 0; // ?? -} - -void wxWindow::MakeModal( bool modal ) -{ - return; - - // Disable all other windows - if (this->IsKindOf(CLASSINFO(wxDialog)) || this->IsKindOf(CLASSINFO(wxFrame))) - { - wxNode *node = wxTopLevelWindows.First(); - while (node) - { - wxWindow *win = (wxWindow *)node->Data(); - if (win != this) win->Enable(!modal); - - node = node->Next(); - } - } -} - -void wxWindow::OnKeyDown( wxKeyEvent &event ) -{ - event.SetEventType( wxEVT_CHAR ); - - if (!GetEventHandler()->ProcessEvent( event )) - { - event.Skip(); - } -} - -void wxWindow::SetFocus() -{ - wxCHECK_RET( (m_widget != NULL), "invalid window" ); - - GtkWidget *connect_widget = GetConnectWidget(); - if (connect_widget) - { - if (GTK_WIDGET_CAN_FOCUS(connect_widget) /*&& !GTK_WIDGET_HAS_FOCUS (connect_widget)*/ ) - { - gtk_widget_grab_focus (connect_widget); - } - else if (GTK_IS_CONTAINER(connect_widget)) - { - gtk_container_focus( GTK_CONTAINER(connect_widget), GTK_DIR_TAB_FORWARD ); - } - else - { - } - } -} - -wxWindow *wxWindow::FindFocus() -{ - return g_focusWindow; -} - -bool wxWindow::AcceptsFocus() const -{ - return IsEnabled() && IsShown() && m_acceptsFocus; -} - -bool wxWindow::OnClose() -{ - return TRUE; -} - -void wxWindow::AddChild( wxWindow *child ) -{ - wxCHECK_RET( (m_widget != NULL), "invalid window" ); - wxCHECK_RET( (child != NULL), "invalid child" ); - - m_children.Append( child ); -} - -wxWindow *wxWindow::ReParent( wxWindow *newParent ) -{ - wxCHECK_MSG( (m_widget != NULL), (wxWindow*) NULL, "invalid window" ); - - wxWindow *oldParent = GetParent(); - - if (oldParent) oldParent->RemoveChild( this ); - - gtk_widget_unparent( m_widget ); - - if (newParent) - { - newParent->AddChild( this ); - (newParent->m_insertCallback)( newParent, this ); - } - - return oldParent; -} - -void wxWindow::RemoveChild( wxWindow *child ) -{ - m_children.DeleteObject( child ); - child->m_parent = (wxWindow *) NULL; -} - -void wxWindow::SetReturnCode( int retCode ) -{ - m_retCode = retCode; -} - -int wxWindow::GetReturnCode() -{ - return m_retCode; -} - -void wxWindow::Raise() -{ - wxCHECK_RET( (m_widget != NULL), "invalid window" ); - - if (m_widget) gdk_window_raise( m_widget->window ); -} - -void wxWindow::Lower() -{ - wxCHECK_RET( (m_widget != NULL), "invalid window" ); - - if (m_widget) gdk_window_lower( m_widget->window ); -} - -wxEvtHandler *wxWindow::GetEventHandler() const -{ - return m_eventHandler; -} - -void wxWindow::SetEventHandler( wxEvtHandler *handler ) -{ - m_eventHandler = handler; -} - -void wxWindow::PushEventHandler(wxEvtHandler *handler) -{ - handler->SetNextHandler(GetEventHandler()); - SetEventHandler(handler); -} - -wxEvtHandler *wxWindow::PopEventHandler(bool deleteHandler) -{ - if (GetEventHandler()) - { - wxEvtHandler *handlerA = GetEventHandler(); - wxEvtHandler *handlerB = handlerA->GetNextHandler(); - handlerA->SetNextHandler((wxEvtHandler *) NULL); - SetEventHandler(handlerB); - if (deleteHandler) - { - delete handlerA; - return (wxEvtHandler*) NULL; - } - else - return handlerA; - } - else - return (wxEvtHandler *) NULL; -} - -wxValidator *wxWindow::GetValidator() -{ - return m_windowValidator; -} - -void wxWindow::SetValidator( const wxValidator& validator ) -{ - if (m_windowValidator) delete m_windowValidator; - m_windowValidator = validator.Clone(); - if (m_windowValidator) m_windowValidator->SetWindow(this); -} - -void wxWindow::SetClientObject( wxClientData *data ) -{ - if (m_clientObject) delete m_clientObject; - m_clientObject = data; -} - -wxClientData *wxWindow::GetClientObject() -{ - return m_clientObject; -} - -void wxWindow::SetClientData( void *data ) -{ - m_clientData = data; -} - -void *wxWindow::GetClientData() -{ - return m_clientData; -} - -bool wxWindow::IsBeingDeleted() -{ - return FALSE; -} - -void wxWindow::SetId( wxWindowID id ) -{ - m_windowId = id; -} - -wxWindowID wxWindow::GetId() const -{ - return m_windowId; -} - -void wxWindow::SetCursor( const wxCursor &cursor ) -{ - wxCHECK_RET( (m_widget != NULL), "invalid window" ); - - if (cursor.Ok()) - { - if (cursor == *m_cursor) return; - *m_cursor = cursor; - } - else - { - *m_cursor = *wxSTANDARD_CURSOR; - } - - if ((m_widget) && (m_widget->window)) - gdk_window_set_cursor( m_widget->window, m_cursor->GetCursor() ); - - if ((m_wxwindow) && (m_wxwindow->window)) - gdk_window_set_cursor( m_wxwindow->window, m_cursor->GetCursor() ); -} - -void wxWindow::WarpPointer( int WXUNUSED(x), int WXUNUSED(y) ) -{ - // TODO -} - -void wxWindow::Refresh( bool eraseBackground, const wxRect *rect ) -{ - wxCHECK_RET( (m_widget != NULL), "invalid window" ); - - if (eraseBackground && m_wxwindow && m_wxwindow->window) - { - if (rect) - { - gdk_window_clear_area( m_wxwindow->window, - rect->x, rect->y, - rect->width, - rect->height ); - } - else - { - Clear(); - } - } - - if (!rect) - { - if (m_wxwindow) - gtk_widget_draw( m_wxwindow, (GdkRectangle*) NULL ); - else - gtk_widget_draw( m_widget, (GdkRectangle*) NULL ); - } - else - { - GdkRectangle gdk_rect; - gdk_rect.x = rect->x; - gdk_rect.y = rect->y; - gdk_rect.width = rect->width; - gdk_rect.height = rect->height; - - if (m_wxwindow) - gtk_widget_draw( m_wxwindow, &gdk_rect ); - else - gtk_widget_draw( m_widget, &gdk_rect ); - } -} - -wxRegion wxWindow::GetUpdateRegion() const -{ - return m_updateRegion; -} - -bool wxWindow::IsExposed( int x, int y) const -{ - return (m_updateRegion.Contains( x, y ) != wxOutRegion ); -} - -bool wxWindow::IsExposed( int x, int y, int w, int h ) const -{ - return (m_updateRegion.Contains( x, y, w, h ) != wxOutRegion ); -} - -bool wxWindow::IsExposed( const wxPoint& pt ) const -{ - return (m_updateRegion.Contains( pt.x, pt.y ) != wxOutRegion ); -} - -bool wxWindow::IsExposed( const wxRect& rect ) const -{ - return (m_updateRegion.Contains( rect.x, rect.y, rect.width, rect.height ) != wxOutRegion ); -} - -void wxWindow::Clear() -{ - wxCHECK_RET( m_widget != NULL, "invalid window" ); - - if (m_wxwindow && m_wxwindow->window) gdk_window_clear( m_wxwindow->window ); -} - -void wxWindow::SetToolTip( const wxString &tip ) -{ - SetToolTip( new wxToolTip( tip ) ); -} - -void wxWindow::SetToolTip( wxToolTip *tip ) -{ - if (m_toolTip) delete m_toolTip; - - m_toolTip = tip; - - if (m_toolTip) m_toolTip->Create( GetConnectWidget() ); -} - -wxToolTip& wxWindow::GetToolTip() -{ - if (!m_toolTip) - wxLogError( "No tooltip set." ); - - return *m_toolTip; -} - -wxColour wxWindow::GetBackgroundColour() const -{ - return m_backgroundColour; -} - -void wxWindow::SetBackgroundColour( const wxColour &colour ) -{ - wxCHECK_RET( m_widget != NULL, "invalid window" ); - - if (m_backgroundColour == colour) return; - - m_backgroundColour = colour; - if (!m_backgroundColour.Ok()) return; - - if (m_wxwindow) - { - GdkWindow *window = m_wxwindow->window; - m_backgroundColour.CalcPixel( gdk_window_get_colormap( window ) ); - gdk_window_set_background( window, m_backgroundColour.GetColor() ); - gdk_window_clear( window ); - } - - wxColour sysbg = wxSystemSettings::GetSystemColour( wxSYS_COLOUR_BTNFACE ); - if (sysbg.Red() == colour.Red() && - sysbg.Green() == colour.Green() && - sysbg.Blue() == colour.Blue()) - { - m_backgroundColour = wxNullColour; - ApplyWidgetStyle(); - m_backgroundColour = sysbg; - } - else - { - ApplyWidgetStyle(); - } -} - -wxColour wxWindow::GetForegroundColour() const -{ - return m_foregroundColour; -} - -void wxWindow::SetForegroundColour( const wxColour &colour ) -{ - wxCHECK_RET( m_widget != NULL, "invalid window" ); - - if (m_foregroundColour == colour) return; - - m_foregroundColour = colour; - if (!m_foregroundColour.Ok()) return; - - wxColour sysbg = wxSystemSettings::GetSystemColour( wxSYS_COLOUR_BTNFACE ); - if (sysbg.Red() == colour.Red() && - sysbg.Green() == colour.Green() && - sysbg.Blue() == colour.Blue()) - { - m_backgroundColour = wxNullColour; - ApplyWidgetStyle(); - m_backgroundColour = sysbg; - } - else - { - ApplyWidgetStyle(); - } -} - -GtkStyle *wxWindow::GetWidgetStyle() -{ - if (m_widgetStyle) gtk_style_unref( m_widgetStyle ); - - m_widgetStyle = - gtk_style_copy( - gtk_widget_get_style( m_widget ) ); - - return m_widgetStyle; -} - -void wxWindow::SetWidgetStyle() -{ - GtkStyle *style = GetWidgetStyle(); - - gdk_font_unref( style->font ); - style->font = gdk_font_ref( m_font.GetInternalFont( 1.0 ) ); - - if (m_foregroundColour.Ok()) - { - m_foregroundColour.CalcPixel( gdk_window_get_colormap( m_widget->window ) ); - style->fg[GTK_STATE_NORMAL] = *m_foregroundColour.GetColor(); - style->fg[GTK_STATE_PRELIGHT] = *m_foregroundColour.GetColor(); - style->fg[GTK_STATE_ACTIVE] = *m_foregroundColour.GetColor(); - } - - if (m_backgroundColour.Ok()) - { - m_backgroundColour.CalcPixel( gdk_window_get_colormap( m_widget->window ) ); - style->bg[GTK_STATE_NORMAL] = *m_backgroundColour.GetColor(); - style->base[GTK_STATE_NORMAL] = *m_backgroundColour.GetColor(); - style->bg[GTK_STATE_PRELIGHT] = *m_backgroundColour.GetColor(); - style->base[GTK_STATE_PRELIGHT] = *m_backgroundColour.GetColor(); - style->bg[GTK_STATE_ACTIVE] = *m_backgroundColour.GetColor(); - style->base[GTK_STATE_ACTIVE] = *m_backgroundColour.GetColor(); - style->bg[GTK_STATE_INSENSITIVE] = *m_backgroundColour.GetColor(); - style->base[GTK_STATE_INSENSITIVE] = *m_backgroundColour.GetColor(); - } -} - -void wxWindow::ApplyWidgetStyle() -{ -} - -bool wxWindow::Validate() -{ - wxCHECK_MSG( m_widget != NULL, FALSE, "invalid window" ); - - wxNode *node = m_children.First(); - while (node) - { - wxWindow *child = (wxWindow *)node->Data(); - if (child->GetValidator() && /* child->GetValidator()->Ok() && */ !child->GetValidator()->Validate(this)) - { - return FALSE; - } - node = node->Next(); - } - return TRUE; -} - -bool wxWindow::TransferDataToWindow() -{ - wxCHECK_MSG( m_widget != NULL, FALSE, "invalid window" ); - - wxNode *node = m_children.First(); - while (node) - { - wxWindow *child = (wxWindow *)node->Data(); - if (child->GetValidator() && /* child->GetValidator()->Ok() && */ - !child->GetValidator()->TransferToWindow() ) - { - wxMessageBox( _("Application Error"), _("Could not transfer data to window"), wxOK|wxICON_EXCLAMATION ); - return FALSE; - } - node = node->Next(); - } - return TRUE; -} - -bool wxWindow::TransferDataFromWindow() -{ - wxCHECK_MSG( m_widget != NULL, FALSE, "invalid window" ); - - wxNode *node = m_children.First(); - while (node) - { - wxWindow *child = (wxWindow *)node->Data(); - if ( child->GetValidator() && /* child->GetValidator()->Ok() && */ !child->GetValidator()->TransferFromWindow() ) - { - return FALSE; - } - node = node->Next(); - } - return TRUE; -} - -void wxWindow::SetAcceleratorTable( const wxAcceleratorTable& accel ) -{ - m_acceleratorTable = accel; -} - -void wxWindow::OnInitDialog( wxInitDialogEvent &WXUNUSED(event) ) -{ - TransferDataToWindow(); -} - -void wxWindow::InitDialog() -{ - wxCHECK_RET( m_widget != NULL, "invalid window" ); - - wxInitDialogEvent event(GetId()); - event.SetEventObject( this ); - GetEventHandler()->ProcessEvent(event); -} - -static void SetInvokingWindow( wxMenu *menu, wxWindow *win ) -{ - menu->SetInvokingWindow( win ); - wxNode *node = menu->m_items.First(); - while (node) - { - wxMenuItem *menuitem = (wxMenuItem*)node->Data(); - if (menuitem->IsSubMenu()) - { - SetInvokingWindow( menuitem->GetSubMenu(), win ); - } - node = node->Next(); - } -} - -static gint gs_pop_x = 0; -static gint gs_pop_y = 0; - -static void pop_pos_callback( GtkMenu *menu, gint *x, gint *y, wxWindow *win ) -{ - win->ClientToScreen( &gs_pop_x, &gs_pop_y ); - *x = gs_pop_x; - *y = gs_pop_y; -} - -bool wxWindow::PopupMenu( wxMenu *menu, int x, int y ) -{ - wxCHECK_MSG( m_widget != NULL, FALSE, "invalid window" ); - - wxCHECK_MSG( menu != NULL, FALSE, "invalid popup-menu" ); - - SetInvokingWindow( menu, this ); - - gs_pop_x = x; - gs_pop_y = y; - - gtk_menu_popup( - GTK_MENU(menu->m_menu), - (GtkWidget *) NULL, // parent menu shell - (GtkWidget *) NULL, // parent menu item - (GtkMenuPositionFunc) pop_pos_callback, - (gpointer) this, // client data - 0, // button used to activate it - 0 //gs_timeLastClick // the time of activation - ); - return TRUE; -} - -#if wxUSE_DRAG_AND_DROP - -void wxWindow::SetDropTarget( wxDropTarget *dropTarget ) -{ - wxCHECK_RET( m_widget != NULL, "invalid window" ); - - GtkWidget *dnd_widget = GetConnectWidget(); - - if (m_dropTarget) m_dropTarget->UnregisterWidget( dnd_widget ); - - if (m_dropTarget) delete m_dropTarget; - m_dropTarget = dropTarget; - - if (m_dropTarget) m_dropTarget->RegisterWidget( dnd_widget ); -} - -wxDropTarget *wxWindow::GetDropTarget() const -{ - return m_dropTarget; -} - -#endif - -GtkWidget* wxWindow::GetConnectWidget() -{ - GtkWidget *connect_widget = m_widget; - if (m_wxwindow) connect_widget = m_wxwindow; - - return connect_widget; -} - -bool wxWindow::IsOwnGtkWindow( GdkWindow *window ) -{ - if (m_wxwindow) return (window == m_wxwindow->window); - return (window == m_widget->window); -} - -void wxWindow::SetFont( const wxFont &font ) -{ - wxCHECK_RET( m_widget != NULL, "invalid window" ); - - if (((wxFont*)&font)->Ok()) - m_font = font; - else - m_font = *wxSWISS_FONT; - - wxColour sysbg = wxSystemSettings::GetSystemColour( wxSYS_COLOUR_BTNFACE ); - if (sysbg.Red() == m_backgroundColour.Red() && - sysbg.Green() == m_backgroundColour.Green() && - sysbg.Blue() == m_backgroundColour.Blue()) - { - m_backgroundColour = wxNullColour; - ApplyWidgetStyle(); - m_backgroundColour = sysbg; - } - else - { - ApplyWidgetStyle(); - } -} - -void wxWindow::SetWindowStyleFlag( long flag ) -{ - m_windowStyle = flag; -} - -long wxWindow::GetWindowStyleFlag() const -{ - return m_windowStyle; -} - -void wxWindow::CaptureMouse() -{ - wxCHECK_RET( m_widget != NULL, "invalid window" ); - - wxCHECK_RET( g_capturing == FALSE, "CaptureMouse called twice" ); - - GtkWidget *connect_widget = GetConnectWidget(); - gtk_grab_add( connect_widget ); - gdk_pointer_grab( connect_widget->window, FALSE, - (GdkEventMask) - (GDK_BUTTON_PRESS_MASK | - GDK_BUTTON_RELEASE_MASK | - GDK_POINTER_MOTION_MASK), - (GdkWindow *) NULL, - (GdkCursor *) NULL, - GDK_CURRENT_TIME ); - g_capturing = TRUE; -} - -void wxWindow::ReleaseMouse() -{ - wxCHECK_RET( m_widget != NULL, "invalid window" ); - - wxCHECK_RET( g_capturing == TRUE, "ReleaseMouse called twice" ); - - GtkWidget *connect_widget = GetConnectWidget(); - gtk_grab_remove( connect_widget ); - gdk_pointer_ungrab ( GDK_CURRENT_TIME ); - g_capturing = FALSE; -} - -void wxWindow::SetTitle( const wxString &WXUNUSED(title) ) -{ -} - -wxString wxWindow::GetTitle() const -{ - return (wxString&)m_windowName; -} - -wxString wxWindow::GetLabel() const -{ - return GetTitle(); -} - -void wxWindow::SetName( const wxString &name ) -{ - m_windowName = name; -} - -wxString wxWindow::GetName() const -{ - return (wxString&)m_windowName; -} - -bool wxWindow::IsShown() const -{ - return m_isShown; -} - -bool wxWindow::IsRetained() -{ - return FALSE; -} - -wxWindow *wxWindow::FindWindow( long id ) -{ - if (id == m_windowId) return this; - wxNode *node = m_children.First(); - while (node) - { - wxWindow *child = (wxWindow*)node->Data(); - wxWindow *res = child->FindWindow( id ); - if (res) return res; - node = node->Next(); - } - return (wxWindow *) NULL; -} - -wxWindow *wxWindow::FindWindow( const wxString& name ) -{ - if (name == m_windowName) return this; - wxNode *node = m_children.First(); - while (node) - { - wxWindow *child = (wxWindow*)node->Data(); - wxWindow *res = child->FindWindow( name ); - if (res) return res; - node = node->Next(); - } - return (wxWindow *) NULL; -} - -void wxWindow::SetScrollbar( int orient, int pos, int thumbVisible, - int range, bool refresh ) -{ - wxCHECK_RET( m_widget != NULL, "invalid window" ); - - wxCHECK_RET( m_wxwindow != NULL, "window needs client area for scrolling" ); - - m_hasScrolling = TRUE; - - if (orient == wxHORIZONTAL) - { - float fpos = (float)pos; - float frange = (float)range; - float fthumb = (float)thumbVisible; - if (fpos > frange-fthumb) fpos = frange-fthumb; - if (fpos < 0.0) fpos = 0.0; - - if ((fabs(frange-m_hAdjust->upper) < 0.2) && - (fabs(fthumb-m_hAdjust->page_size) < 0.2)) - { - SetScrollPos( orient, pos, refresh ); - return; - } - - m_oldHorizontalPos = fpos; - - m_hAdjust->lower = 0.0; - m_hAdjust->upper = frange; - m_hAdjust->value = fpos; - m_hAdjust->step_increment = 1.0; - m_hAdjust->page_increment = (float)(wxMax(fthumb,0)); - m_hAdjust->page_size = fthumb; - } - else - { - float fpos = (float)pos; - float frange = (float)range; - float fthumb = (float)thumbVisible; - if (fpos > frange-fthumb) fpos = frange-fthumb; - if (fpos < 0.0) fpos = 0.0; - - if ((fabs(frange-m_vAdjust->upper) < 0.2) && - (fabs(fthumb-m_vAdjust->page_size) < 0.2)) - { - SetScrollPos( orient, pos, refresh ); - return; - } - - m_oldVerticalPos = fpos; - - m_vAdjust->lower = 0.0; - m_vAdjust->upper = frange; - m_vAdjust->value = fpos; - m_vAdjust->step_increment = 1.0; - m_vAdjust->page_increment = (float)(wxMax(fthumb,0)); - m_vAdjust->page_size = fthumb; - } - - if (m_wxwindow->window) - { - if (orient == wxHORIZONTAL) - gtk_signal_emit_by_name( GTK_OBJECT(m_hAdjust), "changed" ); - else - gtk_signal_emit_by_name( GTK_OBJECT(m_vAdjust), "changed" ); - - gtk_widget_set_usize( m_widget, m_width, m_height ); - } -} - -void wxWindow::SetScrollPos( int orient, int pos, bool WXUNUSED(refresh) ) -{ - wxCHECK_RET( m_widget != NULL, "invalid window" ); - - wxCHECK_RET( m_wxwindow != NULL, "window needs client area for scrolling" ); - - if (orient == wxHORIZONTAL) - { - float fpos = (float)pos; - if (fpos > m_hAdjust->upper - m_hAdjust->page_size) fpos = m_hAdjust->upper - m_hAdjust->page_size; - if (fpos < 0.0) fpos = 0.0; - m_oldHorizontalPos = fpos; - - if (fabs(fpos-m_hAdjust->value) < 0.2) return; - m_hAdjust->value = fpos; - } - else - { - float fpos = (float)pos; - if (fpos > m_vAdjust->upper - m_vAdjust->page_size) fpos = m_vAdjust->upper - m_vAdjust->page_size; - if (fpos < 0.0) fpos = 0.0; - m_oldVerticalPos = fpos; - - if (fabs(fpos-m_vAdjust->value) < 0.2) return; - m_vAdjust->value = fpos; - } - - if (!m_isScrolling) - { - if (m_wxwindow->window) - { - if (orient == wxHORIZONTAL) - gtk_signal_emit_by_name( GTK_OBJECT(m_hAdjust), "value_changed" ); - else - gtk_signal_emit_by_name( GTK_OBJECT(m_vAdjust), "value_changed" ); - } - } -} - -int wxWindow::GetScrollThumb( int orient ) const -{ - wxCHECK_MSG( m_widget != NULL, 0, "invalid window" ); - - wxCHECK_MSG( m_wxwindow != NULL, 0, "window needs client area for scrolling" ); - - if (orient == wxHORIZONTAL) - return (int)(m_hAdjust->page_size+0.5); - else - return (int)(m_vAdjust->page_size+0.5); -} - -int wxWindow::GetScrollPos( int orient ) const -{ - wxCHECK_MSG( m_widget != NULL, 0, "invalid window" ); - - wxCHECK_MSG( m_wxwindow != NULL, 0, "window needs client area for scrolling" ); - - if (orient == wxHORIZONTAL) - return (int)(m_hAdjust->value+0.5); - else - return (int)(m_vAdjust->value+0.5); -} - -int wxWindow::GetScrollRange( int orient ) const -{ - wxCHECK_MSG( m_widget != NULL, 0, "invalid window" ); - - wxCHECK_MSG( m_wxwindow != NULL, 0, "window needs client area for scrolling" ); - - if (orient == wxHORIZONTAL) - return (int)(m_hAdjust->upper+0.5); - else - return (int)(m_vAdjust->upper+0.5); -} - -void wxWindow::ScrollWindow( int dx, int dy, const wxRect* WXUNUSED(rect) ) -{ - wxCHECK_RET( m_widget != NULL, "invalid window" ); - - wxCHECK_RET( m_wxwindow != NULL, "window needs client area for scrolling" ); - - int cw = 0; - int ch = 0; - GetClientSize( &cw, &ch ); - - int w = cw - abs(dx); - int h = ch - abs(dy); - if ((h < 0) || (w < 0)) - { - Refresh(); - return; - } - int s_x = 0; - int s_y = 0; - if (dx < 0) s_x = -dx; - if (dy < 0) s_y = -dy; - int d_x = 0; - int d_y = 0; - if (dx > 0) d_x = dx; - if (dy > 0) d_y = dy; - - if (!m_scrollGC) - { - m_scrollGC = gdk_gc_new( m_wxwindow->window ); - gdk_gc_set_exposures( m_scrollGC, TRUE ); - } - - gdk_window_copy_area( m_wxwindow->window, m_scrollGC, d_x, d_y, - m_wxwindow->window, s_x, s_y, w, h ); - - wxRect rect; - if (dx < 0) rect.x = cw+dx; else rect.x = 0; - if (dy < 0) rect.y = ch+dy; else rect.y = 0; - if (dy != 0) rect.width = cw; else rect.width = abs(dx); - if (dx != 0) rect.height = ch; else rect.height = abs(dy); - - Refresh( TRUE, &rect ); -} - -//------------------------------------------------------------------------------------- -// Layout -//------------------------------------------------------------------------------------- - -wxLayoutConstraints *wxWindow::GetConstraints() const -{ - return m_constraints; -} - -void wxWindow::SetConstraints( wxLayoutConstraints *constraints ) -{ - if (m_constraints) - { - UnsetConstraints(m_constraints); - delete m_constraints; - } - m_constraints = constraints; - if (m_constraints) - { - // Make sure other windows know they're part of a 'meaningful relationship' - if (m_constraints->left.GetOtherWindow() && (m_constraints->left.GetOtherWindow() != this)) - m_constraints->left.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->top.GetOtherWindow() && (m_constraints->top.GetOtherWindow() != this)) - m_constraints->top.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->right.GetOtherWindow() && (m_constraints->right.GetOtherWindow() != this)) - m_constraints->right.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->bottom.GetOtherWindow() && (m_constraints->bottom.GetOtherWindow() != this)) - m_constraints->bottom.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->width.GetOtherWindow() && (m_constraints->width.GetOtherWindow() != this)) - m_constraints->width.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->height.GetOtherWindow() && (m_constraints->height.GetOtherWindow() != this)) - m_constraints->height.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->centreX.GetOtherWindow() && (m_constraints->centreX.GetOtherWindow() != this)) - m_constraints->centreX.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->centreY.GetOtherWindow() && (m_constraints->centreY.GetOtherWindow() != this)) - m_constraints->centreY.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - } -; -} -; - -void wxWindow::SetAutoLayout( bool autoLayout ) -{ - m_autoLayout = autoLayout; -} - -bool wxWindow::GetAutoLayout() const -{ - return m_autoLayout; -} - -wxSizer *wxWindow::GetSizer() const -{ - return m_windowSizer; -} - -void wxWindow::SetSizerParent( wxWindow *win ) -{ - m_sizerParent = win; -} - -wxWindow *wxWindow::GetSizerParent() const -{ - return m_sizerParent; -} - -// This removes any dangling pointers to this window -// in other windows' constraintsInvolvedIn lists. -void wxWindow::UnsetConstraints(wxLayoutConstraints *c) -{ - if (c) - { - if (c->left.GetOtherWindow() && (c->top.GetOtherWindow() != this)) - c->left.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->top.GetOtherWindow() && (c->top.GetOtherWindow() != this)) - c->top.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->right.GetOtherWindow() && (c->right.GetOtherWindow() != this)) - c->right.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->bottom.GetOtherWindow() && (c->bottom.GetOtherWindow() != this)) - c->bottom.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->width.GetOtherWindow() && (c->width.GetOtherWindow() != this)) - c->width.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->height.GetOtherWindow() && (c->height.GetOtherWindow() != this)) - c->height.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->centreX.GetOtherWindow() && (c->centreX.GetOtherWindow() != this)) - c->centreX.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->centreY.GetOtherWindow() && (c->centreY.GetOtherWindow() != this)) - c->centreY.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - } -} - -// Back-pointer to other windows we're involved with, so if we delete -// this window, we must delete any constraints we're involved with. -void wxWindow::AddConstraintReference(wxWindow *otherWin) -{ - if (!m_constraintsInvolvedIn) - m_constraintsInvolvedIn = new wxList; - if (!m_constraintsInvolvedIn->Member(otherWin)) - m_constraintsInvolvedIn->Append(otherWin); -} - -// REMOVE back-pointer to other windows we're involved with. -void wxWindow::RemoveConstraintReference(wxWindow *otherWin) -{ - if (m_constraintsInvolvedIn) - m_constraintsInvolvedIn->DeleteObject(otherWin); -} - -// Reset any constraints that mention this window -void wxWindow::DeleteRelatedConstraints() -{ - if (m_constraintsInvolvedIn) - { - wxNode *node = m_constraintsInvolvedIn->First(); - while (node) - { - wxWindow *win = (wxWindow *)node->Data(); - wxNode *next = node->Next(); - wxLayoutConstraints *constr = win->GetConstraints(); - - // Reset any constraints involving this window - if (constr) - { - constr->left.ResetIfWin((wxWindow *)this); - constr->top.ResetIfWin((wxWindow *)this); - constr->right.ResetIfWin((wxWindow *)this); - constr->bottom.ResetIfWin((wxWindow *)this); - constr->width.ResetIfWin((wxWindow *)this); - constr->height.ResetIfWin((wxWindow *)this); - constr->centreX.ResetIfWin((wxWindow *)this); - constr->centreY.ResetIfWin((wxWindow *)this); - } - delete node; - node = next; - } - delete m_constraintsInvolvedIn; - m_constraintsInvolvedIn = (wxList *) NULL; - } -} - -void wxWindow::SetSizer(wxSizer *sizer) -{ - m_windowSizer = sizer; - if (sizer) - sizer->SetSizerParent((wxWindow *)this); -} - -/* - * New version - */ - -bool wxWindow::Layout() -{ - if (GetConstraints()) - { - int w, h; - GetClientSize(&w, &h); - GetConstraints()->width.SetValue(w); - GetConstraints()->height.SetValue(h); - } - - // If top level (one sizer), evaluate the sizer's constraints. - if (GetSizer()) - { - int noChanges; - GetSizer()->ResetConstraints(); // Mark all constraints as unevaluated - GetSizer()->LayoutPhase1(&noChanges); - GetSizer()->LayoutPhase2(&noChanges); - GetSizer()->SetConstraintSizes(); // Recursively set the real window sizes - return TRUE; - } - else - { - // Otherwise, evaluate child constraints - ResetConstraints(); // Mark all constraints as unevaluated - DoPhase(1); // Just one phase need if no sizers involved - DoPhase(2); - SetConstraintSizes(); // Recursively set the real window sizes - } - return TRUE; -} - - -// Do a phase of evaluating constraints: -// the default behaviour. wxSizers may do a similar -// thing, but also impose their own 'constraints' -// and order the evaluation differently. -bool wxWindow::LayoutPhase1(int *noChanges) -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - return constr->SatisfyConstraints((wxWindow *)this, noChanges); - } - else - return TRUE; -} - -bool wxWindow::LayoutPhase2(int *noChanges) -{ - *noChanges = 0; - - // Layout children - DoPhase(1); - DoPhase(2); - return TRUE; -} - -// Do a phase of evaluating child constraints -bool wxWindow::DoPhase(int phase) -{ - int noIterations = 0; - int maxIterations = 500; - int noChanges = 1; - int noFailures = 0; - wxList succeeded; - while ((noChanges > 0) && (noIterations < maxIterations)) - { - noChanges = 0; - noFailures = 0; - wxNode *node = m_children.First(); - while (node) - { - wxWindow *child = (wxWindow *)node->Data(); - if (!child->IsKindOf(CLASSINFO(wxFrame)) && !child->IsKindOf(CLASSINFO(wxDialog))) - { - wxLayoutConstraints *constr = child->GetConstraints(); - if (constr) - { - if (succeeded.Member(child)) - { - } - else - { - int tempNoChanges = 0; - bool success = ( (phase == 1) ? child->LayoutPhase1(&tempNoChanges) : child->LayoutPhase2(&tempNoChanges) ) ; - noChanges += tempNoChanges; - if (success) - { - succeeded.Append(child); - } - } - } - } - node = node->Next(); - } - noIterations ++; - } - return TRUE; -} - -void wxWindow::ResetConstraints() -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - constr->left.SetDone(FALSE); - constr->top.SetDone(FALSE); - constr->right.SetDone(FALSE); - constr->bottom.SetDone(FALSE); - constr->width.SetDone(FALSE); - constr->height.SetDone(FALSE); - constr->centreX.SetDone(FALSE); - constr->centreY.SetDone(FALSE); - } - wxNode *node = m_children.First(); - while (node) - { - wxWindow *win = (wxWindow *)node->Data(); - if (!win->IsKindOf(CLASSINFO(wxFrame)) && !win->IsKindOf(CLASSINFO(wxDialog))) - win->ResetConstraints(); - node = node->Next(); - } -} - -// Need to distinguish between setting the 'fake' size for -// windows and sizers, and setting the real values. -void wxWindow::SetConstraintSizes(bool recurse) -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr && constr->left.GetDone() && constr->right.GetDone() && - constr->width.GetDone() && constr->height.GetDone()) - { - int x = constr->left.GetValue(); - int y = constr->top.GetValue(); - int w = constr->width.GetValue(); - int h = constr->height.GetValue(); - - // If we don't want to resize this window, just move it... - if ((constr->width.GetRelationship() != wxAsIs) || - (constr->height.GetRelationship() != wxAsIs)) - { - // Calls Layout() recursively. AAAGH. How can we stop that. - // Simply take Layout() out of non-top level OnSizes. - SizerSetSize(x, y, w, h); - } - else - { - SizerMove(x, y); - } - } - else if (constr) - { - char *windowClass = this->GetClassInfo()->GetClassName(); - - wxString winName; - if (GetName() == "") - winName = "unnamed"; - else - winName = GetName(); - wxLogDebug( "Constraint(s) not satisfied for window of type %s, name %s:\n", - (const char *)windowClass, - (const char *)winName); - if (!constr->left.GetDone()) wxLogDebug( " unsatisfied 'left' constraint.\n" ); - if (!constr->right.GetDone()) wxLogDebug( " unsatisfied 'right' constraint.\n" ); - if (!constr->width.GetDone()) wxLogDebug( " unsatisfied 'width' constraint.\n" ); - if (!constr->height.GetDone()) wxLogDebug( " unsatisfied 'height' constraint.\n" ); - wxLogDebug( "Please check constraints: try adding AsIs() constraints.\n" ); - } - - if (recurse) - { - wxNode *node = m_children.First(); - while (node) - { - wxWindow *win = (wxWindow *)node->Data(); - if (!win->IsKindOf(CLASSINFO(wxFrame)) && !win->IsKindOf(CLASSINFO(wxDialog))) - win->SetConstraintSizes(); - node = node->Next(); - } - } -} - -// This assumes that all sizers are 'on' the same -// window, i.e. the parent of this window. -void wxWindow::TransformSizerToActual(int *x, int *y) const -{ - if (!m_sizerParent || m_sizerParent->IsKindOf(CLASSINFO(wxDialog)) || - m_sizerParent->IsKindOf(CLASSINFO(wxFrame)) ) - return; - - int xp, yp; - m_sizerParent->GetPosition(&xp, &yp); - m_sizerParent->TransformSizerToActual(&xp, &yp); - *x += xp; - *y += yp; -} - -void wxWindow::SizerSetSize(int x, int y, int w, int h) -{ - int xx = x; - int yy = y; - TransformSizerToActual(&xx, &yy); - SetSize(xx, yy, w, h); -} - -void wxWindow::SizerMove(int x, int y) -{ - int xx = x; - int yy = y; - TransformSizerToActual(&xx, &yy); - Move(xx, yy); -} - -// Only set the size/position of the constraint (if any) -void wxWindow::SetSizeConstraint(int x, int y, int w, int h) -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - if (x != -1) - { - constr->left.SetValue(x); - constr->left.SetDone(TRUE); - } - if (y != -1) - { - constr->top.SetValue(y); - constr->top.SetDone(TRUE); - } - if (w != -1) - { - constr->width.SetValue(w); - constr->width.SetDone(TRUE); - } - if (h != -1) - { - constr->height.SetValue(h); - constr->height.SetDone(TRUE); - } - } -} - -void wxWindow::MoveConstraint(int x, int y) -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - if (x != -1) - { - constr->left.SetValue(x); - constr->left.SetDone(TRUE); - } - if (y != -1) - { - constr->top.SetValue(y); - constr->top.SetDone(TRUE); - } - } -} - -void wxWindow::GetSizeConstraint(int *w, int *h) const -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - *w = constr->width.GetValue(); - *h = constr->height.GetValue(); - } - else - GetSize(w, h); -} - -void wxWindow::GetClientSizeConstraint(int *w, int *h) const -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - *w = constr->width.GetValue(); - *h = constr->height.GetValue(); - } - else - GetClientSize(w, h); -} - -void wxWindow::GetPositionConstraint(int *x, int *y) const -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - *x = constr->left.GetValue(); - *y = constr->top.GetValue(); - } - else - GetPosition(x, y); -} - diff --git a/src/gtk1/accel.cpp b/src/gtk1/accel.cpp deleted file mode 100644 index b15ece7379..0000000000 --- a/src/gtk1/accel.cpp +++ /dev/null @@ -1,96 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: accel.cpp -// Purpose: -// Author: Robert Roebling -// Id: $id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "accel.h" -#endif - -#include "wx/accel.h" - -#include - -#ifdef __WXDEBUG__ -#ifdef NULL -#undef NULL -#endif -#define NULL ((void*)0L) -#endif - -//----------------------------------------------------------------------------- -// wxAcceleratorTable -//----------------------------------------------------------------------------- - -class wxAccelRefData: public wxObjectRefData -{ -public: - - wxAccelRefData(void); - - wxList m_accels; -}; - -wxAccelRefData::wxAccelRefData(void) -{ - m_accels.DeleteContents( TRUE ); -} - -//----------------------------------------------------------------------------- - -#define M_ACCELDATA ((wxAccelRefData *)m_refData) - -IMPLEMENT_DYNAMIC_CLASS(wxAcceleratorTable,wxObject) - -wxAcceleratorTable::wxAcceleratorTable() -{ -} - -wxAcceleratorTable::wxAcceleratorTable( int n, wxAcceleratorEntry entries[] ) -{ - m_refData = new wxAccelRefData(); - - for (int i = 0; i < n; i++) - { - int flag = entries[i].GetFlags(); - int keycode = entries[i].GetKeyCode(); - int command = entries[i].GetCommand(); - if ((keycode >= (int)'A') && (keycode <= (int)'Z')) keycode = (int)tolower( (char)keycode ); - M_ACCELDATA->m_accels.Append( new wxAcceleratorEntry( flag, keycode, command ) ); - } -} - -wxAcceleratorTable::~wxAcceleratorTable() -{ -} - -bool wxAcceleratorTable::Ok() const -{ - return (m_refData != NULL); -} - -int wxAcceleratorTable::GetCommand( wxKeyEvent &event ) -{ - if (!Ok()) return -1; - - wxNode *node = M_ACCELDATA->m_accels.First(); - while (node) - { - wxAcceleratorEntry *entry = (wxAcceleratorEntry*)node->Data(); - if ((event.m_keyCode == entry->GetKeyCode()) && - (((entry->GetFlags() & wxACCEL_CTRL) == 0) || event.ControlDown()) && - (((entry->GetFlags() & wxACCEL_SHIFT) == 0) || event.ShiftDown()) && - (((entry->GetFlags() & wxACCEL_ALT) == 0) || event.AltDown() || event.MetaDown())) - { - return entry->GetCommand(); - } - node = node->Next(); - } - - return -1; -} - diff --git a/src/gtk1/app.cpp b/src/gtk1/app.cpp deleted file mode 100644 index 78511d556f..0000000000 --- a/src/gtk1/app.cpp +++ /dev/null @@ -1,566 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: app.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling, Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "app.h" -#endif - -#include "wx/app.h" -#include "wx/gdicmn.h" -#include "wx/utils.h" -#include "wx/intl.h" -#include "wx/log.h" -#include "wx/memory.h" -#include "wx/font.h" -#include "wx/settings.h" -#include "wx/dialog.h" -#if wxUSE_WX_RESOURCES -#include "wx/resource.h" -#endif -#include "wx/module.h" -#include "wx/image.h" -#if wxUSE_THREADS -#include "wx/thread.h" -#endif -#include "unistd.h" - -#ifdef __SUN__ -extern "C" -{ -void usleep(unsigned long usec); -}; -#endif - -#include "glib.h" -#include "gdk/gdk.h" -#include "gtk/gtk.h" -#include "wx/gtk/win_gtk.h" - -#include // usleep() on solaris - -//----------------------------------------------------------------------------- -// global data -//----------------------------------------------------------------------------- - -wxApp *wxTheApp = (wxApp *) NULL; -wxAppInitializerFunction wxApp::m_appInitFn = (wxAppInitializerFunction) NULL; - -extern wxList wxPendingDelete; -extern wxResourceCache *wxTheResourceCache; - -unsigned char g_palette[64*3] = -{ - 0x0, 0x0, 0x0, - 0xff, 0xff, 0xff, - 0xff, 0x0, 0x0, - 0xff, 0xff, 0x0, - 0x0, 0xff, 0x0, - 0x0, 0x0, 0xff, - 0x0, 0xff, 0xff, - 0x99, 0x99, 0x99, - 0xff, 0x88, 0x0, - 0x88, 0x0, 0x0, - 0x0, 0x88, 0x88, - 0x88, 0x88, 0x0, - 0xff, 0xcc, 0x97, - 0xbb, 0xbb, 0xbb, - 0x9f, 0x6b, 0x42, - 0x55, 0x55, 0x55, - 0xdd, 0xdd, 0xdd, - 0x77, 0x77, 0x77, - 0x33, 0x33, 0x33, - 0xcc, 0x0, 0x0, - 0xff, 0x44, 0x0, - 0xff, 0xcc, 0x0, - 0xcc, 0xcc, 0x0, - 0x60, 0x60, 0x0, - 0x0, 0x43, 0x0, - 0x0, 0x7f, 0x0, - 0x0, 0xcc, 0x0, - 0x0, 0x44, 0x44, - 0x0, 0x0, 0x44, - 0x0, 0x0, 0x88, - 0xef, 0xb1, 0x7b, - 0xdf, 0x98, 0x5f, - 0xbf, 0x87, 0x56, - 0x7f, 0x57, 0x26, - 0x5f, 0x39, 0xc, - 0x3f, 0x1c, 0x0, - 0x21, 0x0, 0x0, - 0x0, 0x43, 0x87, - 0x2d, 0x70, 0xaf, - 0x5a, 0x9e, 0xd7, - 0x87, 0xcc, 0xff, - 0xff, 0xe0, 0xba, - 0x21, 0x43, 0xf, - 0x3d, 0x5d, 0x25, - 0x59, 0x78, 0x3a, - 0x75, 0x93, 0x4f, - 0x91, 0xae, 0x64, - 0xad, 0xc8, 0x7a, - 0xf0, 0xa8, 0xef, - 0xd0, 0x88, 0xd0, - 0xaf, 0x66, 0xaf, - 0x8e, 0x44, 0x8e, - 0x6d, 0x22, 0x6d, - 0x4b, 0x0, 0x4b, - 0xff, 0xc0, 0xbc, - 0xff, 0x93, 0x91, - 0xff, 0x66, 0x67, - 0xd8, 0xf2, 0xbf, - 0xff, 0xc9, 0x68, - 0xff, 0x96, 0x67, - 0xa5, 0x60, 0xff, - 0x51, 0xff, 0x99, - 0x3f, 0xa5, 0x63, - 0x98, 0x90, 0x67 -}; - -//----------------------------------------------------------------------------- -// local functions -//----------------------------------------------------------------------------- - -extern void wxFlushResources(void); - -//----------------------------------------------------------------------------- -// global functions -//----------------------------------------------------------------------------- - -void wxExit(void) -{ - gtk_main_quit(); -} - -bool wxYield(void) -{ - while (gtk_events_pending() > 0) gtk_main_iteration(); - return TRUE; -} - -//----------------------------------------------------------------------------- -// wxApp -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxApp,wxEvtHandler) - -BEGIN_EVENT_TABLE(wxApp, wxEvtHandler) - EVT_IDLE(wxApp::OnIdle) -END_EVENT_TABLE() - -gint wxapp_idle_callback( gpointer WXUNUSED(data) ) -{ - if (wxTheApp) while (wxTheApp->ProcessIdle()) {} -#if wxUSE_THREADS - wxMutexGuiLeave(); -#endif - usleep(10000); -#if wxUSE_THREADS - wxMutexGuiEnter(); -#endif - return TRUE; -} - -wxApp::wxApp() -{ - wxTheApp = this; - - m_topWindow = (wxWindow *) NULL; - m_exitOnFrameDelete = TRUE; - - m_idleTag = gtk_idle_add( wxapp_idle_callback, (gpointer) NULL ); - - m_colorCube = (unsigned char*) NULL; -} - -wxApp::~wxApp(void) -{ - gtk_idle_remove( m_idleTag ); - - if (m_colorCube) free(m_colorCube); -} - -bool wxApp::OnInitGui() -{ - /* Nothing to do for 15, 16, 24, 32 bit displays */ - - GdkVisual *visual = gdk_visual_get_system(); - if (visual->depth > 8) return TRUE; - - /* this initiates the standard palette as defined by GdkImlib - in the GNOME libraries. it ensures that all GNOME applications - use the same 64 colormap entries on 8-bit displays so you - can use several rather graphics-heavy applications at the - same time. - NOTE: this doesn't really seem to work this way... */ - - /* - GdkColormap *cmap = gdk_colormap_new( gdk_visual_get_system(), TRUE ); - - for (int i = 0; i < 64; i++) - { - GdkColor col; - col.red = g_palette[i*3 + 0] << 8; - col.green = g_palette[i*3 + 1] << 8; - col.blue = g_palette[i*3 + 2] << 8; - col.pixel = 0; - - gdk_color_alloc( cmap, &col ); - } - - gtk_widget_set_default_colormap( cmap ); - */ - - /* initialize color cube for 8-bit color reduction dithering */ - - GdkColormap *cmap = gtk_widget_get_default_colormap(); - - m_colorCube = (unsigned char*)malloc(32 * 32 * 32); - - for (int r = 0; r < 32; r++) - { - for (int g = 0; g < 32; g++) - { - for (int b = 0; b < 32; b++) - { - int rr = (r << 3) | (r >> 2); - int gg = (g << 3) | (g >> 2); - int bb = (b << 3) | (b >> 2); - - GdkColor *colors = cmap->colors; - int max = 3 * (65536); - int index = -1; - - for (int i = 0; i < cmap->size; i++) - { - int rdiff = ((rr << 8) - colors[i].red); - int gdiff = ((gg << 8)- colors[i].green); - int bdiff = ((bb << 8)- colors[i].blue); - int sum = ABS (rdiff) + ABS (gdiff) + ABS (bdiff); - if (sum < max) { index = i; max = sum; } - } - - m_colorCube[ (r*1024) + (g*32) + b ] = index; - } - } - } - - - return TRUE; -} - -bool wxApp::ProcessIdle(void) -{ - wxIdleEvent event; - event.SetEventObject( this ); - ProcessEvent( event ); - - return event.MoreRequested(); -} - -void wxApp::OnIdle( wxIdleEvent &event ) -{ - static bool inOnIdle = FALSE; - - /* Avoid recursion (via ProcessEvent default case) */ - if (inOnIdle) - return; - - inOnIdle = TRUE; - - /* 'Garbage' collection of windows deleted with Close(). */ - DeletePendingObjects(); - - /* flush the logged messages if any */ - wxLog *log = wxLog::GetActiveTarget(); - if (log != NULL && log->HasPendingMessages()) - log->Flush(); - - /* Send OnIdle events to all windows */ - bool needMore = SendIdleEvents(); - - if (needMore) - event.RequestMore(TRUE); - - inOnIdle = FALSE; -} - -bool wxApp::SendIdleEvents(void) -{ - bool needMore = FALSE; - - wxNode* node = wxTopLevelWindows.First(); - while (node) - { - wxWindow* win = (wxWindow*) node->Data(); - if (SendIdleEvents(win)) - needMore = TRUE; - node = node->Next(); - } - return needMore; -} - -bool wxApp::SendIdleEvents( wxWindow* win ) -{ - bool needMore = FALSE; - - wxIdleEvent event; - event.SetEventObject(win); - - win->OnInternalIdle(); - - win->ProcessEvent(event); - - if (event.MoreRequested()) - needMore = TRUE; - - wxNode* node = win->GetChildren().First(); - while (node) - { - wxWindow* win = (wxWindow*) node->Data(); - if (SendIdleEvents(win)) - needMore = TRUE; - - node = node->Next(); - } - return needMore ; -} - -int wxApp::MainLoop(void) -{ - gtk_main(); - return 0; -} - -void wxApp::ExitMainLoop(void) -{ - gtk_main_quit(); -} - -bool wxApp::Initialized(void) -{ - return m_initialized; -} - -bool wxApp::Pending(void) -{ - return FALSE; -} - -void wxApp::Dispatch(void) -{ -} - -void wxApp::DeletePendingObjects(void) -{ - wxNode *node = wxPendingDelete.First(); - while (node) - { - wxObject *obj = (wxObject *)node->Data(); - - delete obj; - - if (wxPendingDelete.Member(obj)) - delete node; - - node = wxPendingDelete.First(); - } -} - -wxWindow *wxApp::GetTopWindow(void) -{ - if (m_topWindow) return m_topWindow; - wxNode *node = wxTopLevelWindows.First(); - if (!node) return (wxWindow *) NULL; - return (wxWindow*)node->Data(); -} - -void wxApp::SetTopWindow( wxWindow *win ) -{ - m_topWindow = win; -} - -bool wxApp::Initialize(void) -{ - wxBuffer = new char[BUFSIZ + 512]; - - wxClassInfo::InitializeClasses(); - - wxSystemSettings::Init(); - -/* - wxTheFontNameDirectory = new wxFontNameDirectory; - wxTheFontNameDirectory->Initialize(); -*/ - - wxTheColourDatabase = new wxColourDatabase( wxKEY_STRING ); - wxTheColourDatabase->Initialize(); - - wxInitializeStockLists(); - wxInitializeStockObjects(); - -#if wxUSE_WX_RESOURCES - wxTheResourceCache = new wxResourceCache( wxKEY_STRING ); - - wxInitializeResourceSystem(); -#endif - - wxImage::InitStandardHandlers(); - - /* no global cursor under X - g_globalCursor = new wxCursor; */ - - wxModule::RegisterModules(); - if (!wxModule::InitializeModules()) return FALSE; - - return TRUE; -} - -void wxApp::CleanUp(void) -{ - wxModule::CleanUpModules(); - -#if wxUSE_WX_RESOURCES - wxFlushResources(); - - if (wxTheResourceCache) delete wxTheResourceCache; - wxTheResourceCache = (wxResourceCache*) NULL; - - wxCleanUpResourceSystem(); -#endif - - if (wxTheColourDatabase) delete wxTheColourDatabase; - wxTheColourDatabase = (wxColourDatabase*) NULL; - -/* - if (wxTheFontNameDirectory) delete wxTheFontNameDirectory; - wxTheFontNameDirectory = (wxFontNameDirectory*) NULL; -*/ - - wxDeleteStockObjects(); - - wxDeleteStockLists(); - - wxImage::CleanUpHandlers(); - - delete wxTheApp; - wxTheApp = (wxApp*) NULL; - - wxSystemSettings::Done(); - - delete[] wxBuffer; - - wxClassInfo::CleanUpClasses(); - - /* check for memory leaks */ -#if (defined(__WXDEBUG__) && wxUSE_MEMORY_TRACING) || wxUSE_DEBUG_CONTEXT - if (wxDebugContext::CountObjectsLeft() > 0) - { - wxLogDebug("There were memory leaks.\n"); - wxDebugContext::Dump(); - wxDebugContext::PrintStatistics(); - } -#endif - - /* do this as the very last thing because everything else can log messages */ - wxLog::DontCreateOnDemand(); - - wxLog *oldLog = wxLog::SetActiveTarget( (wxLog*) NULL ); - if (oldLog) delete oldLog; -} - -wxLog *wxApp::CreateLogTarget() -{ - return new wxLogGui; -} - -//----------------------------------------------------------------------------- -// wxEntry -//----------------------------------------------------------------------------- - -int wxEntry( int argc, char *argv[] ) -{ - gtk_set_locale(); - - gtk_init( &argc, &argv ); - - if (!wxApp::Initialize()) return 0; - - if (!wxTheApp) - { - if (!wxApp::GetInitializerFunction()) - { - printf( "wxWindows error: No initializer - use IMPLEMENT_APP macro.\n" ); - return 0; - } - - wxAppInitializerFunction app_ini = wxApp::GetInitializerFunction(); - - wxObject *test_app = app_ini(); - - wxTheApp = (wxApp*) test_app; - } - - if (!wxTheApp) - { - printf( "wxWindows error: wxTheApp == NULL\n" ); - return 0; - } - - wxTheApp->argc = argc; - wxTheApp->argv = argv; - - char name[200]; - strcpy( name, argv[0] ); - strcpy( name, wxFileNameFromPath(name) ); - wxStripExtension( name ); - wxTheApp->SetAppName( name ); - - if (!wxTheApp->OnInitGui()) return 0; - - /* Here frames insert themselves automatically - * into wxTopLevelWindows by getting created - * in OnInit(). */ - - if (!wxTheApp->OnInit()) return 0; - - wxTheApp->m_initialized = (wxTopLevelWindows.Number() > 0); - - int retValue = 0; - - if (wxTheApp->Initialized()) retValue = wxTheApp->OnRun(); - - wxWindow *topWindow = wxTheApp->GetTopWindow(); - if (topWindow) - { - /* Forcibly delete the window. */ - if (topWindow->IsKindOf(CLASSINFO(wxFrame)) || - topWindow->IsKindOf(CLASSINFO(wxDialog)) ) - { - topWindow->Close( TRUE ); - wxTheApp->DeletePendingObjects(); - } - else - { - delete topWindow; - wxTheApp->SetTopWindow( (wxWindow*) NULL ); - } - } - - wxTheApp->OnExit(); - - /* flush the logged messages if any */ - wxLog *log = wxLog::GetActiveTarget(); - if (log != NULL && log->HasPendingMessages()) - log->Flush(); - - wxApp::CleanUp(); - - return retValue; -} - diff --git a/src/gtk1/bdiag.xbm b/src/gtk1/bdiag.xbm deleted file mode 100644 index 9ff0a1822f..0000000000 --- a/src/gtk1/bdiag.xbm +++ /dev/null @@ -1,6 +0,0 @@ -#define bdiag_width 16 -#define bdiag_height 16 -static char bdiag_bits[] = { - 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x10, 0x08, 0x08, 0x04, 0x04, - 0x02, 0x02, 0x01, 0x01, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x10, - 0x08, 0x08, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01}; diff --git a/src/gtk1/bitmap.cpp b/src/gtk1/bitmap.cpp deleted file mode 100644 index 0b6b995c25..0000000000 --- a/src/gtk1/bitmap.cpp +++ /dev/null @@ -1,369 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: bitmap.cpp -// Purpose: -// Author: Robert Roebling -// RCS-ID: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "bitmap.h" -#endif - -#include "wx/bitmap.h" -#include "wx/icon.h" -#include "wx/filefn.h" -#include "wx/image.h" - -#include "gdk/gdk.h" -#include "gdk/gdkprivate.h" -#include "gdk/gdkx.h" - -//----------------------------------------------------------------------------- -// wxMask -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxMask,wxObject) - -wxMask::wxMask() -{ - m_bitmap = (GdkBitmap *) NULL; -} - -wxMask::wxMask( const wxBitmap& WXUNUSED(bitmap), const wxColour& WXUNUSED(colour) ) -{ -} - -wxMask::wxMask( const wxBitmap& WXUNUSED(bitmap), int WXUNUSED(paletteIndex) ) -{ -} - -wxMask::wxMask( const wxBitmap& WXUNUSED(bitmap) ) -{ -} - -wxMask::~wxMask() -{ - if (m_bitmap) gdk_bitmap_unref( m_bitmap ); -} - -GdkBitmap *wxMask::GetBitmap(void) const -{ - return m_bitmap; -} - -//----------------------------------------------------------------------------- -// wxBitmap -//----------------------------------------------------------------------------- - -class wxBitmapRefData: public wxObjectRefData -{ -public: - wxBitmapRefData(void); - ~wxBitmapRefData(void); - - GdkPixmap *m_pixmap; - GdkBitmap *m_bitmap; - wxMask *m_mask; - int m_width; - int m_height; - int m_bpp; - wxPalette *m_palette; -}; - -wxBitmapRefData::wxBitmapRefData() -{ - m_pixmap = (GdkPixmap *) NULL; - m_bitmap = (GdkBitmap *) NULL; - m_mask = (wxMask *) NULL; - m_width = 0; - m_height = 0; - m_bpp = 0; - m_palette = (wxPalette *) NULL; -} - -wxBitmapRefData::~wxBitmapRefData() -{ - if (m_pixmap) gdk_pixmap_unref( m_pixmap ); - if (m_bitmap) gdk_bitmap_unref( m_bitmap ); - if (m_mask) delete m_mask; - if (m_palette) delete m_palette; -} - -//----------------------------------------------------------------------------- - -#define M_BMPDATA ((wxBitmapRefData *)m_refData) - -IMPLEMENT_DYNAMIC_CLASS(wxBitmap,wxGDIObject) - -wxBitmap::wxBitmap() -{ - if (wxTheBitmapList) wxTheBitmapList->AddBitmap(this); -} - -wxBitmap::wxBitmap( int width, int height, int depth ) -{ - wxCHECK_RET( (width > 0) && (height > 0), "invalid bitmap size" ) - wxCHECK_RET( (depth > 0) || (depth == -1), "invalid bitmap depth" ) - - m_refData = new wxBitmapRefData(); - - GdkWindow *parent = (GdkWindow*) &gdk_root_parent; - - M_BMPDATA->m_mask = (wxMask *) NULL; - M_BMPDATA->m_pixmap = gdk_pixmap_new( parent, width, height, depth ); - M_BMPDATA->m_width = width; - M_BMPDATA->m_height = height; - M_BMPDATA->m_bpp = gdk_window_get_visual( parent )->depth; - - if (wxTheBitmapList) wxTheBitmapList->AddBitmap(this); -} - -wxBitmap::wxBitmap( const char **bits ) -{ - wxCHECK_RET( bits != NULL, "invalid bitmap data" ) - - m_refData = new wxBitmapRefData(); - - GdkBitmap *mask = (GdkBitmap*) NULL; - GdkWindow *parent = (GdkWindow*) &gdk_root_parent; - - M_BMPDATA->m_pixmap = gdk_pixmap_create_from_xpm_d( parent, &mask, NULL, (gchar **) bits ); - - if (mask) - { - M_BMPDATA->m_mask = new wxMask(); - M_BMPDATA->m_mask->m_bitmap = mask; - } - - gdk_window_get_size( M_BMPDATA->m_pixmap, &(M_BMPDATA->m_width), &(M_BMPDATA->m_height) ); - - M_BMPDATA->m_bpp = gdk_window_get_visual( parent )->depth; // ? - if (wxTheBitmapList) wxTheBitmapList->AddBitmap(this); -} - -wxBitmap::wxBitmap( char **bits ) -{ - wxCHECK_RET( bits != NULL, "invalid bitmap data" ) - - m_refData = new wxBitmapRefData(); - - GdkBitmap *mask = (GdkBitmap*) NULL; - GdkWindow *parent = (GdkWindow*) &gdk_root_parent; - - M_BMPDATA->m_pixmap = gdk_pixmap_create_from_xpm_d( parent, &mask, NULL, (gchar **) bits ); - - wxCHECK_RET( M_BMPDATA->m_pixmap, "couldn't create pixmap" ); - - if (mask) - { - M_BMPDATA->m_mask = new wxMask(); - M_BMPDATA->m_mask->m_bitmap = mask; - } - - gdk_window_get_size( M_BMPDATA->m_pixmap, &(M_BMPDATA->m_width), &(M_BMPDATA->m_height) ); - - M_BMPDATA->m_bpp = gdk_window_get_visual( parent )->depth; // ? - if (wxTheBitmapList) wxTheBitmapList->AddBitmap(this); -} - -wxBitmap::wxBitmap( const wxBitmap& bmp ) -{ - Ref( bmp ); - - if (wxTheBitmapList) wxTheBitmapList->AddBitmap(this); -} - -wxBitmap::wxBitmap( const wxString &filename, int type ) -{ - LoadFile( filename, type ); - - if (wxTheBitmapList) wxTheBitmapList->AddBitmap(this); -} - -wxBitmap::wxBitmap( const char bits[], int width, int height, int WXUNUSED(depth)) -{ - m_refData = new wxBitmapRefData(); - - M_BMPDATA->m_mask = (wxMask *) NULL; - M_BMPDATA->m_bitmap = - gdk_bitmap_create_from_data( (GdkWindow*) &gdk_root_parent, (gchar *) bits, width, height ); - M_BMPDATA->m_width = width; - M_BMPDATA->m_height = height; - M_BMPDATA->m_bpp = 1; - - wxCHECK_RET( M_BMPDATA->m_bitmap, "couldn't create bitmap" ); - - if (wxTheBitmapList) wxTheBitmapList->AddBitmap(this); -} - -wxBitmap::~wxBitmap() -{ - if (wxTheBitmapList) wxTheBitmapList->DeleteObject(this); -} - -wxBitmap& wxBitmap::operator = ( const wxBitmap& bmp ) -{ - if (*this == bmp) return (*this); - Ref( bmp ); - return *this; -} - -bool wxBitmap::operator == ( const wxBitmap& bmp ) -{ - return m_refData == bmp.m_refData; -} - -bool wxBitmap::operator != ( const wxBitmap& bmp ) -{ - return m_refData != bmp.m_refData; -} - -bool wxBitmap::Ok(void) const -{ - return (m_refData != NULL); -} - -int wxBitmap::GetHeight(void) const -{ - wxCHECK_MSG( Ok(), -1, "invalid bitmap" ); - - return M_BMPDATA->m_height; -} - -int wxBitmap::GetWidth(void) const -{ - wxCHECK_MSG( Ok(), -1, "invalid bitmap" ); - - return M_BMPDATA->m_width; -} - -int wxBitmap::GetDepth(void) const -{ - wxCHECK_MSG( Ok(), -1, "invalid bitmap" ); - - return M_BMPDATA->m_bpp; -} - -wxMask *wxBitmap::GetMask(void) const -{ - wxCHECK_MSG( Ok(), (wxMask *) NULL, "invalid bitmap" ); - - return M_BMPDATA->m_mask; -} - -void wxBitmap::SetMask( wxMask *mask ) -{ - wxCHECK_RET( Ok(), "invalid bitmap" ); - - if (M_BMPDATA->m_mask) delete M_BMPDATA->m_mask; - - M_BMPDATA->m_mask = mask; -} - -bool wxBitmap::SaveFile( const wxString &name, int type, wxPalette *WXUNUSED(palette) ) -{ - wxCHECK_MSG( Ok(), FALSE, "invalid bitmap" ); - - if (type == wxBITMAP_TYPE_PNG) - { - wxImage image( *this ); - if (image.Ok()) return image.SaveFile( name, type ); - } - - return FALSE; -} - -bool wxBitmap::LoadFile( const wxString &name, int type ) -{ - UnRef(); - - if (!wxFileExists(name)) return FALSE; - - if (type == wxBITMAP_TYPE_XPM) - { - m_refData = new wxBitmapRefData(); - - GdkBitmap *mask = (GdkBitmap*) NULL; - GdkWindow *parent = (GdkWindow*) &gdk_root_parent; - - M_BMPDATA->m_pixmap = gdk_pixmap_create_from_xpm( parent, &mask, NULL, name ); - - if (mask) - { - M_BMPDATA->m_mask = new wxMask(); - M_BMPDATA->m_mask->m_bitmap = mask; - } - - gdk_window_get_size( M_BMPDATA->m_pixmap, &(M_BMPDATA->m_width), &(M_BMPDATA->m_height) ); - M_BMPDATA->m_bpp = gdk_window_get_visual( parent )->depth; - } - else if (type == wxBITMAP_TYPE_PNG) - { - wxImage image; - image.LoadFile( name, type ); - if (image.Ok()) *this = image.ConvertToBitmap(); - } - else if (type == wxBITMAP_TYPE_BMP) - { - wxImage image; - image.LoadFile( name, type ); - if (image.Ok()) *this = image.ConvertToBitmap(); - } - else - return FALSE; - - return TRUE; -} - -wxPalette *wxBitmap::GetPalette(void) const -{ - if (!Ok()) return (wxPalette *) NULL; - - return M_BMPDATA->m_palette; -} - -void wxBitmap::SetHeight( int height ) -{ - if (!m_refData) m_refData = new wxBitmapRefData(); - - M_BMPDATA->m_height = height; -} - -void wxBitmap::SetWidth( int width ) -{ - if (!m_refData) m_refData = new wxBitmapRefData(); - - M_BMPDATA->m_width = width; -} - -void wxBitmap::SetDepth( int depth ) -{ - if (!m_refData) m_refData = new wxBitmapRefData(); - - M_BMPDATA->m_bpp = depth; -} - -void wxBitmap::SetPixmap( GdkPixmap *pixmap ) -{ - if (!m_refData) m_refData = new wxBitmapRefData(); - - M_BMPDATA->m_pixmap = pixmap; -} - -GdkPixmap *wxBitmap::GetPixmap(void) const -{ - wxCHECK_MSG( Ok(), (GdkPixmap *) NULL, "invalid bitmap" ); - - return M_BMPDATA->m_pixmap; -} - -GdkBitmap *wxBitmap::GetBitmap(void) const -{ - wxCHECK_MSG( Ok(), (GdkBitmap *) NULL, "invalid bitmap" ); - - return M_BMPDATA->m_bitmap; -} - - diff --git a/src/gtk1/bmpbuttn.cpp b/src/gtk1/bmpbuttn.cpp deleted file mode 100644 index 49f84d1698..0000000000 --- a/src/gtk1/bmpbuttn.cpp +++ /dev/null @@ -1,294 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: bmpbuttn.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "bmpbuttn.h" -#endif - -#include "wx/bmpbuttn.h" - -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxBitmapButton; - -//----------------------------------------------------------------------------- -// data -//----------------------------------------------------------------------------- - -extern bool g_blockEventsOnDrag; - -//----------------------------------------------------------------------------- -// "clicked" -//----------------------------------------------------------------------------- - -static void gtk_bmpbutton_clicked_callback( GtkWidget *WXUNUSED(widget), wxBitmapButton *button ) -{ - if (!button->HasVMT()) return; - if (g_blockEventsOnDrag) return; - - wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED, button->GetId()); - event.SetEventObject(button); - button->GetEventHandler()->ProcessEvent(event); -} - -//----------------------------------------------------------------------------- -// "enter" -//----------------------------------------------------------------------------- - -static void gtk_bmpbutton_enter_callback( GtkWidget *WXUNUSED(widget), wxBitmapButton *button ) -{ - if (!button->HasVMT()) return; - if (g_blockEventsOnDrag) return; - - button->HasFocus(); -} - -//----------------------------------------------------------------------------- -// "leave" -//----------------------------------------------------------------------------- - -static void gtk_bmpbutton_leave_callback( GtkWidget *WXUNUSED(widget), wxBitmapButton *button ) -{ - if (!button->HasVMT()) return; - if (g_blockEventsOnDrag) return; - - button->NotFocus(); -} - -//----------------------------------------------------------------------------- -// "pressed" -//----------------------------------------------------------------------------- - -static void gtk_bmpbutton_press_callback( GtkWidget *WXUNUSED(widget), wxBitmapButton *button ) -{ - if (!button->HasVMT()) return; - if (g_blockEventsOnDrag) return; - - button->StartSelect(); -} - -//----------------------------------------------------------------------------- -// "released" -//----------------------------------------------------------------------------- - -static void gtk_bmpbutton_release_callback( GtkWidget *WXUNUSED(widget), wxBitmapButton *button ) -{ - if (!button->HasVMT()) return; - if (g_blockEventsOnDrag) return; - - button->EndSelect(); -} - -//----------------------------------------------------------------------------- -// wxBitmapButton -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxBitmapButton,wxControl) - -wxBitmapButton::wxBitmapButton() -{ -} - -bool wxBitmapButton::Create( wxWindow *parent, wxWindowID id, const wxBitmap &bitmap, - const wxPoint &pos, const wxSize &size, - long style, const wxValidator& validator, const wxString &name ) -{ - m_needParent = TRUE; - m_acceptsFocus = TRUE; - - wxSize newSize = size; - - PreCreation( parent, id, pos, newSize, style, name ); - - SetValidator( validator ); - - m_bitmap = bitmap; - m_disabled = bitmap; - m_focus = bitmap; - m_selected = bitmap; - - m_label = ""; - - m_widget = gtk_button_new(); - - if (m_bitmap.Ok()) - { - GdkBitmap *mask = (GdkBitmap *) NULL; - if (m_bitmap.GetMask()) mask = m_bitmap.GetMask()->GetBitmap(); - GtkWidget *pixmap = gtk_pixmap_new( m_bitmap.GetPixmap(), mask ); - - gtk_widget_show( pixmap ); - gtk_container_add( GTK_CONTAINER(m_widget), pixmap ); - } - - if (newSize.x == -1) newSize.x = m_bitmap.GetHeight()+10; - if (newSize.y == -1) newSize.y = m_bitmap.GetWidth()+10; - SetSize( newSize.x, newSize.y ); - - gtk_signal_connect( GTK_OBJECT(m_widget), "clicked", - GTK_SIGNAL_FUNC(gtk_bmpbutton_clicked_callback), (gpointer*)this ); - - gtk_signal_connect( GTK_OBJECT(m_widget), "enter", - GTK_SIGNAL_FUNC(gtk_bmpbutton_enter_callback), (gpointer*)this ); - gtk_signal_connect( GTK_OBJECT(m_widget), "leave", - GTK_SIGNAL_FUNC(gtk_bmpbutton_leave_callback), (gpointer*)this ); - gtk_signal_connect( GTK_OBJECT(m_widget), "pressed", - GTK_SIGNAL_FUNC(gtk_bmpbutton_press_callback), (gpointer*)this ); - gtk_signal_connect( GTK_OBJECT(m_widget), "released", - GTK_SIGNAL_FUNC(gtk_bmpbutton_release_callback), (gpointer*)this ); - - m_parent->AddChild( this ); - - (m_parent->m_insertCallback)( m_parent, this ); - - PostCreation(); - - SetBackgroundColour( parent->GetBackgroundColour() ); - - Show( TRUE ); - - return TRUE; -} - -void wxBitmapButton::SetDefault() -{ -/* - GTK_WIDGET_SET_FLAGS( m_widget, GTK_CAN_DEFAULT ); - gtk_widget_grab_default( m_widget ); -*/ -} - -void wxBitmapButton::SetLabel( const wxString &label ) -{ - wxCHECK_RET( m_widget != NULL, "invalid button" ); - - wxControl::SetLabel( label ); -} - -wxString wxBitmapButton::GetLabel() const -{ - wxCHECK_MSG( m_widget != NULL, "", "invalid button" ); - - return wxControl::GetLabel(); -} - -void wxBitmapButton::ApplyWidgetStyle() -{ -} - -void wxBitmapButton::SetBitmap() -{ - wxCHECK_RET( m_widget != NULL, "invalid button" ); - - wxBitmap the_one; - - if ( ! m_isEnabled ) - the_one = m_disabled; - else - { - if ( m_isSelected ) - { - the_one = m_selected; - } - else - { - if ( m_hasFocus ) - the_one = m_focus; - else - the_one = m_bitmap; - } - } - - if ( ! the_one.Ok() ) the_one = m_bitmap; - if ( ! the_one.Ok() ) return; - - GtkButton *bin = GTK_BUTTON( m_widget ); - GtkPixmap *g_pixmap = GTK_PIXMAP( bin->child ); - - GdkBitmap *mask = (GdkBitmap *) NULL; - if (the_one.GetMask()) mask = the_one.GetMask()->GetBitmap(); - - gtk_pixmap_set( g_pixmap, the_one.GetPixmap(), mask ); -} - -void wxBitmapButton::SetBitmapDisabled( const wxBitmap& bitmap ) -{ - wxCHECK_RET( m_widget != NULL, "invalid button" ); - - if ( ! m_disabled.Ok() ) return; - m_disabled = bitmap; - - SetBitmap(); -} - -void wxBitmapButton::SetBitmapFocus( const wxBitmap& bitmap ) -{ - wxCHECK_RET( m_widget != NULL, "invalid button" ); - - if ( ! m_focus.Ok() ) return; - m_focus = bitmap; - - SetBitmap(); -} - -void wxBitmapButton::SetBitmapLabel( const wxBitmap& bitmap ) -{ - wxCHECK_RET( m_widget != NULL, "invalid button" ); - - if (!m_bitmap.Ok()) return; - m_bitmap = bitmap; - - SetBitmap(); -} - -void wxBitmapButton::SetBitmapSelected( const wxBitmap& bitmap ) -{ - wxCHECK_RET( m_widget != NULL, "invalid button" ); - - if ( ! m_selected.Ok() ) return; - m_selected = bitmap; - - SetBitmap(); -} - -void wxBitmapButton::Enable( const bool enable ) -{ - wxWindow::Enable(enable); - - SetBitmap(); -} - -void wxBitmapButton::HasFocus() -{ - m_hasFocus = TRUE; - SetBitmap(); -} - -void wxBitmapButton::NotFocus() -{ - m_hasFocus = FALSE; - SetBitmap(); -} - -void wxBitmapButton::StartSelect() -{ - m_isSelected = TRUE; - SetBitmap(); -} - -void wxBitmapButton::EndSelect() -{ - m_isSelected = FALSE; - SetBitmap(); -} diff --git a/src/gtk1/brush.cpp b/src/gtk1/brush.cpp deleted file mode 100644 index be6d5e2e91..0000000000 --- a/src/gtk1/brush.cpp +++ /dev/null @@ -1,180 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: brush.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "brush.h" -#endif - -#include "wx/brush.h" - -#include "gdk/gdk.h" - -//----------------------------------------------------------------------------- -// wxBrush -//----------------------------------------------------------------------------- - -class wxBrushRefData: public wxObjectRefData -{ - public: - - wxBrushRefData(); - wxBrushRefData( const wxBrushRefData& data ); - - int m_style; - wxBitmap m_stipple; - wxColour m_colour; -}; - -wxBrushRefData::wxBrushRefData() -{ - m_style = 0; -} - -wxBrushRefData::wxBrushRefData( const wxBrushRefData& data ) -{ - m_style = data.m_style; - m_stipple = data.m_stipple; - m_colour = data.m_colour; -} - -//----------------------------------------------------------------------------- - -#define M_BRUSHDATA ((wxBrushRefData *)m_refData) - -IMPLEMENT_DYNAMIC_CLASS(wxBrush,wxGDIObject) - -wxBrush::wxBrush() -{ - if (wxTheBrushList) wxTheBrushList->AddBrush( this ); -} - -wxBrush::wxBrush( const wxColour &colour, int style ) -{ - m_refData = new wxBrushRefData(); - M_BRUSHDATA->m_style = style; - M_BRUSHDATA->m_colour = colour; - - if (wxTheBrushList) wxTheBrushList->AddBrush( this ); -} - -wxBrush::wxBrush( const wxBitmap &stippleBitmap ) -{ - m_refData = new wxBrushRefData(); - M_BRUSHDATA->m_style = wxSTIPPLE; - M_BRUSHDATA->m_colour = *wxBLACK; - M_BRUSHDATA->m_stipple = stippleBitmap; - - if (wxTheBrushList) wxTheBrushList->AddBrush( this ); -} - -wxBrush::wxBrush( const wxBrush &brush ) -{ - Ref( brush ); - - if (wxTheBrushList) wxTheBrushList->AddBrush( this ); -} - -wxBrush::~wxBrush() -{ - if (wxTheBrushList) wxTheBrushList->RemoveBrush( this ); -} - -wxBrush& wxBrush::operator = ( const wxBrush& brush ) -{ - if (*this == brush) return (*this); - Ref( brush ); - return *this; -} - -bool wxBrush::operator == ( const wxBrush& brush ) -{ - return m_refData == brush.m_refData; -} - -bool wxBrush::operator != ( const wxBrush& brush ) -{ - return m_refData != brush.m_refData; -} - -bool wxBrush::Ok() const -{ - return ((m_refData) && M_BRUSHDATA->m_colour.Ok()); -} - -int wxBrush::GetStyle() const -{ - if (m_refData == NULL) - { - wxFAIL_MSG( "invalid brush" ); - return 0; - } - - return M_BRUSHDATA->m_style; -} - -wxColour &wxBrush::GetColour() const -{ - if (m_refData == NULL) - { - wxFAIL_MSG( "invalid brush" ); - return wxNullColour; - } - - return M_BRUSHDATA->m_colour; -} - -wxBitmap *wxBrush::GetStipple() const -{ - if (m_refData == NULL) - { - wxFAIL_MSG( "invalid brush" ); - return &wxNullBitmap; - } - - return &M_BRUSHDATA->m_stipple; -} - -void wxBrush::SetColour( const wxColour& col ) -{ - Unshare(); - M_BRUSHDATA->m_colour = col; -} - -void wxBrush::SetColour( unsigned char r, unsigned char g, unsigned char b ) -{ - Unshare(); - M_BRUSHDATA->m_colour.Set( r, g, b ); -} - -void wxBrush::SetStyle( int style ) -{ - Unshare(); - M_BRUSHDATA->m_style = style; -} - -void wxBrush::SetStipple( const wxBitmap& stipple ) -{ - Unshare(); - M_BRUSHDATA->m_stipple = stipple; -} - -void wxBrush::Unshare() -{ - if (!m_refData) - { - m_refData = new wxBrushRefData(); - } - else - { - wxBrushRefData* ref = new wxBrushRefData( *(wxBrushRefData*)m_refData ); - UnRef(); - m_refData = ref; - } -} - diff --git a/src/gtk1/button.cpp b/src/gtk1/button.cpp deleted file mode 100644 index 8c91ec2adc..0000000000 --- a/src/gtk1/button.cpp +++ /dev/null @@ -1,131 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: button.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "button.h" -#endif - -#include "wx/button.h" - -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxButton; - -//----------------------------------------------------------------------------- -// data -//----------------------------------------------------------------------------- - -extern bool g_blockEventsOnDrag; - -//----------------------------------------------------------------------------- -// "clicked" -//----------------------------------------------------------------------------- - -static void gtk_button_clicked_callback( GtkWidget *WXUNUSED(widget), wxButton *button ) -{ - if (!button->HasVMT()) return; - if (g_blockEventsOnDrag) return; - - wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED, button->GetId()); - event.SetEventObject(button); - button->GetEventHandler()->ProcessEvent(event); -} - -//----------------------------------------------------------------------------- -// wxButton -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxButton,wxControl) - -wxButton::wxButton() -{ -} - -wxButton::~wxButton() -{ - if (m_clientData) delete m_clientData; -} - -bool wxButton::Create( wxWindow *parent, wxWindowID id, const wxString &label, - const wxPoint &pos, const wxSize &size, - long style, const wxValidator& validator, const wxString &name ) -{ - m_clientData = (wxClientData*) NULL; - m_needParent = TRUE; - m_acceptsFocus = TRUE; - - wxSize newSize = size; - - PreCreation( parent, id, pos, newSize, style, name ); - - SetValidator( validator ); - - m_widget = gtk_button_new_with_label( m_label ); - SetLabel(label); - - if (newSize.x == -1) newSize.x = 15+gdk_string_measure( m_widget->style->font, label ); - if (newSize.y == -1) newSize.y = 26; - SetSize( newSize.x, newSize.y ); - - gtk_signal_connect( GTK_OBJECT(m_widget), "clicked", - GTK_SIGNAL_FUNC(gtk_button_clicked_callback), (gpointer*)this ); - - m_parent->AddChild( this ); - - (m_parent->m_insertCallback)( m_parent, this ); - - PostCreation(); - - SetBackgroundColour( parent->GetBackgroundColour() ); - SetForegroundColour( parent->GetForegroundColour() ); - - Show( TRUE ); - - return TRUE; -} - -void wxButton::SetDefault(void) -{ -/* - GTK_WIDGET_SET_FLAGS( m_widget, GTK_CAN_DEFAULT ); - gtk_widget_grab_default( m_widget ); -*/ -} - -void wxButton::SetLabel( const wxString &label ) -{ - wxCHECK_RET( m_widget != NULL, "invalid button" ); - - wxControl::SetLabel( label ); - - gtk_label_set( GTK_LABEL( GTK_BUTTON(m_widget)->child ), GetLabel() ); -} - -void wxButton::Enable( bool enable ) -{ - wxCHECK_RET( m_widget != NULL, "invalid button" ); - - wxControl::Enable( enable ); - - gtk_widget_set_sensitive( GTK_BUTTON(m_widget)->child, enable ); -} - -void wxButton::ApplyWidgetStyle() -{ - SetWidgetStyle(); - gtk_widget_set_style( m_widget, m_widgetStyle ); - gtk_widget_set_style( GTK_BUTTON(m_widget)->child, m_widgetStyle ); -} - - diff --git a/src/gtk1/cdiag.xbm b/src/gtk1/cdiag.xbm deleted file mode 100644 index 15dc7ba86d..0000000000 --- a/src/gtk1/cdiag.xbm +++ /dev/null @@ -1,6 +0,0 @@ -#define cdiag_width 16 -#define cdiag_height 16 -static char cdiag_bits[] = { - 0x81, 0x81, 0x42, 0x42, 0x24, 0x24, 0x18, 0x18, 0x18, 0x18, 0x24, 0x24, - 0x42, 0x42, 0x81, 0x81, 0x81, 0x81, 0x42, 0x42, 0x24, 0x24, 0x18, 0x18, - 0x18, 0x18, 0x24, 0x24, 0x42, 0x42, 0x81, 0x81}; diff --git a/src/gtk1/checkbox.cpp b/src/gtk1/checkbox.cpp deleted file mode 100644 index 85425761d0..0000000000 --- a/src/gtk1/checkbox.cpp +++ /dev/null @@ -1,145 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: checkbox.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifdef __GNUG__ -#pragma implementation "checkbox.h" -#endif - -#include "wx/checkbox.h" - -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -//----------------------------------------------------------------------------- -// data -//----------------------------------------------------------------------------- - -extern bool g_blockEventsOnDrag; - -//----------------------------------------------------------------------------- -// "clicked" -//----------------------------------------------------------------------------- - -static void gtk_checkbox_clicked_callback( GtkWidget *WXUNUSED(widget), wxCheckBox *cb ) -{ - if (!cb->HasVMT()) return; - - if (cb->m_blockFirstEvent) - { - cb->m_blockFirstEvent = FALSE; - return; - } - - if (g_blockEventsOnDrag) return; - - wxCommandEvent event(wxEVT_COMMAND_CHECKBOX_CLICKED, cb->GetId()); - event.SetInt( cb->GetValue() ); - event.SetEventObject(cb); - cb->GetEventHandler()->ProcessEvent(event); -} - -//----------------------------------------------------------------------------- -// wxCheckBox -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxCheckBox,wxControl) - -wxCheckBox::wxCheckBox(void) -{ -} - -bool wxCheckBox::Create( wxWindow *parent, wxWindowID id, const wxString &label, - const wxPoint &pos, const wxSize &size, - long style, const wxValidator& validator, const wxString &name ) -{ - m_needParent = TRUE; - m_acceptsFocus = TRUE; - - PreCreation( parent, id, pos, size, style, name ); - - SetValidator( validator ); - - m_widget = gtk_check_button_new_with_label( m_label ); - - m_blockFirstEvent = FALSE; - - wxSize newSize = size; - if (newSize.x == -1) newSize.x = 25+gdk_string_measure( m_widget->style->font, label ); - if (newSize.y == -1) newSize.y = 26; - SetSize( newSize.x, newSize.y ); - - gtk_signal_connect( GTK_OBJECT(m_widget), "clicked", - GTK_SIGNAL_FUNC(gtk_checkbox_clicked_callback), (gpointer*)this ); - - m_parent->AddChild( this ); - - (m_parent->m_insertCallback)( m_parent, this ); - - PostCreation(); - - gtk_widget_realize( GTK_BUTTON( m_widget )->child ); - - SetLabel( label ); - - SetBackgroundColour( parent->GetBackgroundColour() ); - SetForegroundColour( parent->GetForegroundColour() ); - - Show( TRUE ); - - return TRUE; -} - -void wxCheckBox::SetValue( bool state ) -{ - wxCHECK_RET( m_widget != NULL, "invalid checkbox" ); - - if ( state == GetValue() ) - return; - - // for compatibility with wxMSW don't send notification when the check box - // state is changed programmatically - m_blockFirstEvent = TRUE; - - gtk_toggle_button_set_state( GTK_TOGGLE_BUTTON(m_widget), state ); -} - -bool wxCheckBox::GetValue() const -{ - wxCHECK_MSG( m_widget != NULL, FALSE, "invalid checkbox" ); - - return GTK_TOGGLE_BUTTON(m_widget)->active; -} - -void wxCheckBox::SetLabel( const wxString& label ) -{ - wxCHECK_RET( m_widget != NULL, "invalid checkbox" ); - - wxControl::SetLabel( label ); - - gtk_label_set( GTK_LABEL( GTK_BUTTON(m_widget)->child ), GetLabel() ); -} - -void wxCheckBox::Enable( bool enable ) -{ - wxCHECK_RET( m_widget != NULL, "invalid checkbox" ); - - wxControl::Enable( enable ); - - gtk_widget_set_sensitive( GTK_BUTTON(m_widget)->child, enable ); -} - -void wxCheckBox::ApplyWidgetStyle() -{ - SetWidgetStyle(); - gtk_widget_set_style( m_widget, m_widgetStyle ); - gtk_widget_set_style( GTK_BUTTON(m_widget)->child, m_widgetStyle ); -} - - diff --git a/src/gtk1/checklst.cpp b/src/gtk1/checklst.cpp deleted file mode 100644 index 82fb96dc1a..0000000000 --- a/src/gtk1/checklst.cpp +++ /dev/null @@ -1,93 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: checklst.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "checklst.h" -#endif - -#include "wx/checklst.h" - -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -//----------------------------------------------------------------------------- -// wxCheckListBox -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxCheckListBox,wxListBox) - -wxCheckListBox::wxCheckListBox() : - wxListBox() -{ - m_hasCheckBoxes = TRUE; -} - -wxCheckListBox::wxCheckListBox(wxWindow *parent, wxWindowID id, - const wxPoint& pos, - const wxSize& size, - int nStrings, - const wxString choices[], - long style, - const wxValidator& validator, - const wxString& name ) -{ - m_hasCheckBoxes = TRUE; - wxListBox::Create( parent, id, pos, size, nStrings, choices, style, validator, name ); -} - -bool wxCheckListBox::IsChecked( int index ) const -{ - wxCHECK_MSG( m_list != NULL, FALSE, "invalid checklistbox" ); - - GList *child = g_list_nth( m_list->children, index ); - if (child) - { - GtkBin *bin = GTK_BIN( child->data ); - GtkLabel *label = GTK_LABEL( bin->child ); - - wxString str = label->label; - - return (str[1] == 'X'); - } - - wxFAIL_MSG("wrong checklistbox index"); - return FALSE; -} - -void wxCheckListBox::Check( int index, bool check ) -{ - wxCHECK_RET( m_list != NULL, "invalid checklistbox" ); - - GList *child = g_list_nth( m_list->children, index ); - if (child) - { - GtkBin *bin = GTK_BIN( child->data ); - GtkLabel *label = GTK_LABEL( bin->child ); - - wxString str = label->label; - - if (check == (str[1] == 'X')) return; - - if (check) - str.SetChar( 1, 'X' ); - else - str.SetChar( 1, '-' ); - - gtk_label_set( label, str ); - - return; - } - - wxFAIL_MSG("wrong checklistbox index"); -} - -int wxCheckListBox::GetItemHeight() -{ - return 22; -} diff --git a/src/gtk1/choice.cpp b/src/gtk1/choice.cpp deleted file mode 100644 index 27ba2fa798..0000000000 --- a/src/gtk1/choice.cpp +++ /dev/null @@ -1,377 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: choice.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifdef __GNUG__ -#pragma implementation "choice.h" -#endif - -#include "wx/choice.h" - -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -//----------------------------------------------------------------------------- -// data -//----------------------------------------------------------------------------- - -extern bool g_blockEventsOnDrag; - -//----------------------------------------------------------------------------- -// "activate" -//----------------------------------------------------------------------------- - -static void gtk_choice_clicked_callback( GtkWidget *WXUNUSED(widget), wxChoice *choice ) -{ - if (!choice->HasVMT()) return; - if (g_blockEventsOnDrag) return; - - wxCommandEvent event(wxEVT_COMMAND_CHOICE_SELECTED, choice->GetId() ); - event.SetInt( choice->GetSelection() ); - wxString tmp( choice->GetStringSelection() ); - event.SetString( WXSTRINGCAST(tmp) ); - event.SetEventObject(choice); - choice->GetEventHandler()->ProcessEvent(event); -} - -//----------------------------------------------------------------------------- -// wxChoice -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxChoice,wxControl) - -wxChoice::wxChoice() -{ -} - -bool wxChoice::Create( wxWindow *parent, wxWindowID id, - const wxPoint &pos, const wxSize &size, - int n, const wxString choices[], - long style, const wxValidator& validator, const wxString &name ) -{ - m_needParent = TRUE; - - PreCreation( parent, id, pos, size, style, name ); - - SetValidator( validator ); - - m_widget = gtk_option_menu_new(); - - wxSize newSize = size; - if (newSize.x == -1) newSize.x = 80; - if (newSize.y == -1) newSize.y = 26; - SetSize( newSize.x, newSize.y ); - - GtkWidget *menu = gtk_menu_new(); - - for (int i = 0; i < n; i++) - { - m_clientDataList.Append( (wxObject*) NULL ); - m_clientObjectList.Append( (wxObject*) NULL ); - - GtkWidget *item = gtk_menu_item_new_with_label( choices[i] ); - gtk_menu_append( GTK_MENU(menu), item ); - - gtk_widget_realize( item ); - gtk_widget_realize( GTK_BIN(item)->child ); - - gtk_widget_show( item ); - - gtk_signal_connect( GTK_OBJECT( item ), "activate", - GTK_SIGNAL_FUNC(gtk_choice_clicked_callback), (gpointer*)this ); - } - gtk_option_menu_set_menu( GTK_OPTION_MENU(m_widget), menu ); - - m_parent->AddChild( this ); - - (m_parent->m_insertCallback)( m_parent, this ); - - PostCreation(); - - SetBackgroundColour( parent->GetBackgroundColour() ); - SetForegroundColour( parent->GetForegroundColour() ); - - Show( TRUE ); - - return TRUE; -} - -wxChoice::~wxChoice() -{ - Clear(); -} - -void wxChoice::AppendCommon( const wxString &item ) -{ - wxCHECK_RET( m_widget != NULL, "invalid choice" ); - - GtkWidget *menu = gtk_option_menu_get_menu( GTK_OPTION_MENU(m_widget) ); - GtkWidget *menu_item = gtk_menu_item_new_with_label( item ); - - gtk_menu_append( GTK_MENU(menu), menu_item ); - - gtk_widget_realize( menu_item ); - gtk_widget_realize( GTK_BIN(menu_item)->child ); - - if (m_widgetStyle) ApplyWidgetStyle(); - - gtk_signal_connect( GTK_OBJECT( menu_item ), "activate", - GTK_SIGNAL_FUNC(gtk_choice_clicked_callback), (gpointer*)this ); - - gtk_widget_show( menu_item ); -} - -void wxChoice::Append( const wxString &item ) -{ - m_clientDataList.Append( (wxObject*) NULL ); - m_clientObjectList.Append( (wxObject*) NULL ); - - AppendCommon( item ); -} - -void wxChoice::Append( const wxString &item, void *clientData ) -{ - m_clientDataList.Append( (wxObject*) clientData ); - m_clientObjectList.Append( (wxObject*) NULL ); - - AppendCommon( item ); -} - -void wxChoice::Append( const wxString &item, wxClientData *clientData ) -{ - m_clientObjectList.Append( (wxObject*) clientData ); - m_clientDataList.Append( (wxObject*) NULL ); - - AppendCommon( item ); -} - -void wxChoice::SetClientData( int n, void* clientData ) -{ - wxCHECK_RET( m_widget != NULL, "invalid combobox" ); - - wxNode *node = m_clientDataList.Nth( n ); - if (!node) return; - - node->SetData( (wxObject*) clientData ); -} - -void* wxChoice::GetClientData( int n ) -{ - wxCHECK_MSG( m_widget != NULL, NULL, "invalid combobox" ); - - wxNode *node = m_clientDataList.Nth( n ); - if (!node) return NULL; - - return node->Data(); -} - -void wxChoice::SetClientObject( int n, wxClientData* clientData ) -{ - wxCHECK_RET( m_widget != NULL, "invalid combobox" ); - - wxNode *node = m_clientObjectList.Nth( n ); - if (!node) return; - - wxClientData *cd = (wxClientData*) node->Data(); - if (cd) delete cd; - - node->SetData( (wxObject*) clientData ); -} - -wxClientData* wxChoice::GetClientObject( int n ) -{ - wxCHECK_MSG( m_widget != NULL, (wxClientData*) NULL, "invalid combobox" ); - - wxNode *node = m_clientObjectList.Nth( n ); - if (!node) return (wxClientData*) NULL; - - return (wxClientData*) node->Data(); -} - -void wxChoice::Clear() -{ - wxCHECK_RET( m_widget != NULL, "invalid choice" ); - - gtk_option_menu_remove_menu( GTK_OPTION_MENU(m_widget) ); - GtkWidget *menu = gtk_menu_new(); - gtk_option_menu_set_menu( GTK_OPTION_MENU(m_widget), menu ); - - wxNode *node = m_clientObjectList.First(); - while (node) - { - wxClientData *cd = (wxClientData*)node->Data(); - if (cd) delete cd; - node = node->Next(); - } - m_clientObjectList.Clear(); - - m_clientDataList.Clear(); -} - -void wxChoice::Delete( int WXUNUSED(n) ) -{ - wxFAIL_MSG( "wxChoice:Delete not implemented" ); -} - -int wxChoice::FindString( const wxString &string ) const -{ - wxCHECK_MSG( m_widget != NULL, -1, "invalid choice" ); - - // If you read this code once and you think you understand - // it, then you are very wrong. Robert Roebling. - - GtkMenuShell *menu_shell = GTK_MENU_SHELL( gtk_option_menu_get_menu( GTK_OPTION_MENU(m_widget) ) ); - int count = 0; - GList *child = menu_shell->children; - while (child) - { - GtkBin *bin = GTK_BIN( child->data ); - GtkLabel *label = (GtkLabel *) NULL; - if (bin->child) label = GTK_LABEL(bin->child); - if (!label) label = GTK_LABEL( GTK_BUTTON(m_widget)->child ); - - wxASSERT_MSG( label != NULL , "wxChoice: invalid label" ); - - if (string == label->label) return count; - child = child->next; - count++; - } - - wxFAIL_MSG( "wxChoice: string not found" ); - - return -1; -} - -int wxChoice::GetColumns() const -{ - return 1; -} - -int wxChoice::GetSelection() -{ - wxCHECK_MSG( m_widget != NULL, -1, "invalid choice" ); - - GtkMenuShell *menu_shell = GTK_MENU_SHELL( gtk_option_menu_get_menu( GTK_OPTION_MENU(m_widget) ) ); - int count = 0; - GList *child = menu_shell->children; - while (child) - { - GtkBin *bin = GTK_BIN( child->data ); - if (!bin->child) return count; - child = child->next; - count++; - } - - wxFAIL_MSG( "wxChoice: no selection" ); - - return -1; -} - -wxString wxChoice::GetString( int n ) const -{ - wxCHECK_MSG( m_widget != NULL, "", "invalid choice" ); - - GtkMenuShell *menu_shell = GTK_MENU_SHELL( gtk_option_menu_get_menu( GTK_OPTION_MENU(m_widget) ) ); - int count = 0; - GList *child = menu_shell->children; - while (child) - { - GtkBin *bin = GTK_BIN( child->data ); - if (count == n) - { - GtkLabel *label = (GtkLabel *) NULL; - if (bin->child) label = GTK_LABEL(bin->child); - if (!label) label = GTK_LABEL( GTK_BUTTON(m_widget)->child ); - - wxASSERT_MSG( label != NULL , "wxChoice: invalid label" ); - - return label->label; - } - child = child->next; - count++; - } - - wxFAIL_MSG( "wxChoice: string not found" ); - - return ""; -} - -wxString wxChoice::GetStringSelection() const -{ - wxCHECK_MSG( m_widget != NULL, "", "invalid choice" ); - - GtkLabel *label = GTK_LABEL( GTK_BUTTON(m_widget)->child ); - - wxASSERT_MSG( label != NULL , "wxChoice: invalid label" ); - - return label->label; -} - -int wxChoice::Number() const -{ - wxCHECK_MSG( m_widget != NULL, 0, "invalid choice" ); - - GtkMenuShell *menu_shell = GTK_MENU_SHELL( gtk_option_menu_get_menu( GTK_OPTION_MENU(m_widget) ) ); - int count = 0; - GList *child = menu_shell->children; - while (child) - { - count++; - child = child->next; - } - return count; -} - -void wxChoice::SetColumns( int WXUNUSED(n) ) -{ -} - -void wxChoice::SetSelection( int n ) -{ - wxCHECK_RET( m_widget != NULL, "invalid choice" ); - - int tmp = n; - gtk_option_menu_set_history( GTK_OPTION_MENU(m_widget), (gint)tmp ); - - gtk_choice_clicked_callback( (GtkWidget *) NULL, this ); -} - -void wxChoice::SetStringSelection( const wxString &string ) -{ - wxCHECK_RET( m_widget != NULL, "invalid choice" ); - - int n = FindString( string ); - if (n != -1) SetSelection( n ); -} - -void wxChoice::ApplyWidgetStyle() -{ - SetWidgetStyle(); - - GtkMenuShell *menu_shell = GTK_MENU_SHELL( gtk_option_menu_get_menu( GTK_OPTION_MENU(m_widget) ) ); - - gtk_widget_set_style( m_widget, m_widgetStyle ); - gtk_widget_set_style( GTK_WIDGET( menu_shell ), m_widgetStyle ); - - GList *child = menu_shell->children; - while (child) - { - gtk_widget_set_style( GTK_WIDGET( child->data ), m_widgetStyle ); - - GtkBin *bin = GTK_BIN( child->data ); - GtkWidget *label = (GtkWidget *) NULL; - if (bin->child) label = bin->child; - if (!label) label = GTK_BUTTON(m_widget)->child; - - gtk_widget_set_style( label, m_widgetStyle ); - - child = child->next; - } -} - diff --git a/src/gtk1/clipbrd.cpp b/src/gtk1/clipbrd.cpp deleted file mode 100644 index 99ce0ac8b8..0000000000 --- a/src/gtk1/clipbrd.cpp +++ /dev/null @@ -1,528 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: clipbrd.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "clipbrd.h" -#endif - -#include "wx/clipbrd.h" - -#if wxUSE_CLIPBOARD - -#include "glib.h" -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -//----------------------------------------------------------------------------- -// data -//----------------------------------------------------------------------------- - -wxClipboard *wxTheClipboard = (wxClipboard*) NULL; - -GdkAtom g_textAtom = 0; -GdkAtom g_clipboardAtom = 0; -GdkAtom g_targetsAtom = 0; - -//----------------------------------------------------------------------------- -// reminder -//----------------------------------------------------------------------------- - -/* The contents of a selection are returned in a GtkSelectionData - structure. selection/target identify the request. - type specifies the type of the return; if length < 0, and - the data should be ignored. This structure has object semantics - - no fields should be modified directly, they should not be created - directly, and pointers to them should not be stored beyond the duration of - a callback. (If the last is changed, we'll need to add reference - counting) - -struct _GtkSelectionData -{ - GdkAtom selection; - GdkAtom target; - GdkAtom type; - gint format; - guchar *data; - gint length; -}; - -*/ - -//----------------------------------------------------------------------------- -// "selection_received" for targets -//----------------------------------------------------------------------------- - -static void -targets_selection_received( GtkWidget *WXUNUSED(widget), - GtkSelectionData *selection_data, - wxClipboard *clipboard ) -{ - if (!wxTheClipboard) return; - - if (selection_data->length <= 0) return; - - // make sure we got the data in the correct form - if (selection_data->type != GDK_SELECTION_TYPE_ATOM) return; - - // the atoms we received, holding a list of targets (= formats) - GdkAtom *atoms = (GdkAtom *)selection_data->data; - - for (unsigned int i=0; ilength/sizeof(GdkAtom); i++) - { - if (atoms[i] == clipboard->m_targetRequested) - { - clipboard->m_formatSupported = TRUE; - return; - } - } - - return; -} - -//----------------------------------------------------------------------------- -// "selection_received" for the actual data -//----------------------------------------------------------------------------- - -static void -selection_received( GtkWidget *WXUNUSED(widget), - GtkSelectionData *selection_data, - wxClipboard *clipboard ) -{ - if (!wxTheClipboard) return; - - wxDataObject *data_object = clipboard->m_receivedData; - - if (!data_object) return; - - if (selection_data->length <= 0) return; - - // make sure we got the data in the correct format - - if (data_object->GetFormat().GetAtom() != selection_data->target) return; - - // make sure we got the data in the correct form (selection type). - // if so, copy data to target object - - switch (data_object->GetFormat().GetType()) - { - case wxDF_TEXT: - { - if (selection_data->type != GDK_SELECTION_TYPE_STRING) return; - - wxTextDataObject *text_object = (wxTextDataObject *) data_object; - - wxString text = (const char*) selection_data->data; - - text_object->SetText( text ); - - break; - } - - case wxDF_BITMAP: - { - if (selection_data->type != GDK_SELECTION_TYPE_BITMAP) return; - - return; - - break; - } - - case wxDF_PRIVATE: - { - if (selection_data->type != GDK_SELECTION_TYPE_STRING) return; - - wxPrivateDataObject *private_object = (wxPrivateDataObject *) data_object; - - private_object->SetData( (const char*) selection_data->data, (size_t) selection_data->length ); - - break; - } - - default: - { - return; - } - } - - wxTheClipboard->m_formatSupported = TRUE; -} - -//----------------------------------------------------------------------------- -// "selection_clear" -//----------------------------------------------------------------------------- - -static gint -selection_clear_clip( GtkWidget *WXUNUSED(widget), GdkEventSelection *event ) -{ - if (!wxTheClipboard) return TRUE; - - if (event->selection == GDK_SELECTION_PRIMARY) - { - wxTheClipboard->m_ownsPrimarySelection = FALSE; - } - else - if (event->selection == g_clipboardAtom) - { - wxTheClipboard->m_ownsClipboard = FALSE; - } - else - { - return FALSE; - } - - if ((!wxTheClipboard->m_ownsPrimarySelection) && - (!wxTheClipboard->m_ownsClipboard)) - { - /* the clipboard is no longer in our hands. we can the clipboard data. */ - - if (wxTheClipboard->m_dataBroker) - { - delete wxTheClipboard->m_dataBroker; - wxTheClipboard->m_dataBroker = (wxDataBroker*) NULL; - } - } - - return TRUE; -} - -//----------------------------------------------------------------------------- -// selection handler for supplying data -//----------------------------------------------------------------------------- - -static void -selection_handler( GtkWidget *WXUNUSED(widget), GtkSelectionData *selection_data, gpointer WXUNUSED(data) ) -{ - if (!wxTheClipboard) return; - - if (!wxTheClipboard->m_dataBroker) return; - - wxNode *node = wxTheClipboard->m_dataBroker->m_dataObjects.First(); - - while (node) - { - wxDataObject *data_object = (wxDataObject *)node->Data(); - - if (data_object->GetFormat().GetAtom() != selection_data->target) - { - node = node->Next(); - break; - } - - switch (data_object->GetFormat().GetType()) - { - case wxDF_TEXT: - { - wxTextDataObject *text_object = (wxTextDataObject*) data_object; - - wxString text = text_object->GetText(); - - char *s = WXSTRINGCAST text; - int len = (int) text.Length(); - - gtk_selection_data_set( - selection_data, - GDK_SELECTION_TYPE_STRING, - 8*sizeof(gchar), - (unsigned char*) s, - len ); - - break; - } - - case wxDF_BITMAP: - { - // wxBitmapDataObject *private_object = (wxBitmapDataObject*) data_object; - - // how do we do that ? - - break; - } - - case wxDF_PRIVATE: - { - wxPrivateDataObject *private_object = (wxPrivateDataObject*) data_object; - - if (private_object->GetSize() == 0) return; - - gtk_selection_data_set( - selection_data, - GDK_SELECTION_TYPE_STRING, - 8*sizeof(gchar), - (unsigned char*) private_object->GetData(), - (int) private_object->GetSize() ); - } - - default: - break; - } - - node = node->Next(); - } -} - -//----------------------------------------------------------------------------- -// wxClipboard -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxClipboard,wxObject) - -wxClipboard::wxClipboard() -{ - m_open = FALSE; - - m_ownsClipboard = FALSE; - m_ownsPrimarySelection = FALSE; - - m_dataBroker = (wxDataBroker*) NULL; - - m_receivedData = (wxDataObject*) NULL; - - m_clipboardWidget = gtk_window_new( GTK_WINDOW_POPUP ); - gtk_widget_realize( m_clipboardWidget ); - - gtk_signal_connect( GTK_OBJECT(m_clipboardWidget), - "selection_clear_event", - GTK_SIGNAL_FUNC( selection_clear_clip ), - (gpointer) NULL ); - - if (!g_clipboardAtom) g_clipboardAtom = gdk_atom_intern( "CLIPBOARD", FALSE ); - if (!g_textAtom) g_textAtom = gdk_atom_intern( "TEXT", FALSE ); - if (!g_targetsAtom) g_targetsAtom = gdk_atom_intern ("TARGETS", FALSE); - - m_formatSupported = FALSE; - m_targetRequested = 0; -} - -wxClipboard::~wxClipboard() -{ - Clear(); - - if (m_clipboardWidget) gtk_widget_destroy( m_clipboardWidget ); -} - -void wxClipboard::Clear() -{ - if (m_dataBroker) - { - /* As we have data we also own the clipboard. Once we no longer own - it, clear_selection is called which will set m_data to zero */ - - if (gdk_selection_owner_get( g_clipboardAtom ) == m_clipboardWidget->window) - { - gtk_selection_owner_set( (GtkWidget*) NULL, g_clipboardAtom, GDK_CURRENT_TIME ); - } - - if (gdk_selection_owner_get( GDK_SELECTION_PRIMARY ) == m_clipboardWidget->window) - { - gtk_selection_owner_set( (GtkWidget*) NULL, GDK_SELECTION_PRIMARY, GDK_CURRENT_TIME ); - } - - if (m_dataBroker) - { - delete m_dataBroker; - m_dataBroker = (wxDataBroker*) NULL; - } - } - - m_targetRequested = 0; - - m_formatSupported = FALSE; -} - -bool wxClipboard::Open() -{ - wxCHECK_MSG( !m_open, FALSE, "clipboard already open" ); - - m_open = TRUE; - - return TRUE; -} - -bool wxClipboard::SetData( wxDataObject *data ) -{ - wxCHECK_MSG( m_open, FALSE, "clipboard not open" ); - - wxCHECK_MSG( data, FALSE, "data is invalid" ); - - Clear(); - - return AddData( data ); -} - -bool wxClipboard::AddData( wxDataObject *data ) -{ - wxCHECK_MSG( m_open, FALSE, "clipboard not open" ); - - wxCHECK_MSG( data, FALSE, "data is invalid" ); - - /* if clipboard has been cleared before, create new data broker */ - - if (!m_dataBroker) m_dataBroker = new wxDataBroker(); - - /* add new data to list of offered data objects */ - - m_dataBroker->Add( data ); - - /* get native format id of new data object */ - - GdkAtom format = data->GetFormat().GetAtom(); - - wxCHECK_MSG( format, FALSE, "data has invalid format" ); - - /* This should happen automatically, but to be on the safe side */ - - m_ownsClipboard = FALSE; - m_ownsPrimarySelection = FALSE; - - /* Add handlers if someone requests data */ - - gtk_selection_add_handler( m_clipboardWidget, - g_clipboardAtom, - format, - selection_handler, - (gpointer) NULL ); - - gtk_selection_add_handler( m_clipboardWidget, - GDK_SELECTION_PRIMARY, - format, - selection_handler, - (gpointer) NULL ); - - /* Tell the world we offer clipboard data */ - - if (!gtk_selection_owner_set( m_clipboardWidget, - g_clipboardAtom, - GDK_CURRENT_TIME )) - { - return FALSE; - } - m_ownsClipboard = TRUE; - - if (!gtk_selection_owner_set( m_clipboardWidget, - GDK_SELECTION_PRIMARY, - GDK_CURRENT_TIME )) - { - return FALSE; - } - m_ownsPrimarySelection = TRUE; - - return TRUE; -} - -void wxClipboard::Close() -{ - wxCHECK_RET( m_open, "clipboard not open" ); - - m_open = FALSE; -} - -bool wxClipboard::IsSupported( wxDataObject &data ) -{ - wxCHECK_MSG( m_open, FALSE, "clipboard not open" ); - - /* store requested format to be asked for by callbacks */ - - m_targetRequested = data.GetFormat().GetAtom(); - - wxCHECK_MSG( m_targetRequested, FALSE, "invalid clipboard format" ); - - /* add handler for target (= format) query */ - - gtk_signal_connect( GTK_OBJECT(m_clipboardWidget), - "selection_received", - GTK_SIGNAL_FUNC( targets_selection_received ), - (gpointer) this ); - - m_formatSupported = FALSE; - - /* perform query. this will set m_formatSupported to - * TRUE if m_targetRequested is supported */ - - gtk_selection_convert( m_clipboardWidget, - g_clipboardAtom, - g_targetsAtom, - GDK_CURRENT_TIME ); - - gtk_signal_disconnect_by_func( GTK_OBJECT(m_clipboardWidget), - GTK_SIGNAL_FUNC( targets_selection_received ), - (gpointer) this ); - - if (!m_formatSupported) return FALSE; - - return TRUE; -} - -bool wxClipboard::GetData( wxDataObject &data ) -{ - wxCHECK_MSG( m_open, FALSE, "clipboard not open" ); - - /* is data supported by clipboard ? */ - - if (!IsSupported( data )) return FALSE; - - /* store pointer to data object to be filled up by callbacks */ - - m_receivedData = &data; - - /* store requested format to be asked for by callbacks */ - - m_targetRequested = data.GetFormat().GetAtom(); - - wxCHECK_MSG( m_targetRequested, FALSE, "invalid clipboard format" ); - - /* start query */ - - m_formatSupported = FALSE; - - gtk_signal_connect( GTK_OBJECT(m_clipboardWidget), - "selection_received", - GTK_SIGNAL_FUNC( selection_received ), - (gpointer) this ); - - /* ask for clipboard contents */ - - gtk_selection_convert( m_clipboardWidget, - g_clipboardAtom, - m_targetRequested, - GDK_CURRENT_TIME ); - - gtk_signal_disconnect_by_func( GTK_OBJECT(m_clipboardWidget), - GTK_SIGNAL_FUNC( selection_received ), - (gpointer) this ); - - /* this is a true error as we checked for the presence of such data before */ - - wxCHECK_MSG( m_formatSupported, FALSE, "error retrieving data from clipboard" ); - - return TRUE; -} - -//----------------------------------------------------------------------------- -// wxClipboardModule -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxClipboardModule,wxModule) - -bool wxClipboardModule::OnInit() -{ - wxTheClipboard = new wxClipboard(); - - return TRUE; -} - -void wxClipboardModule::OnExit() -{ - if (wxTheClipboard) delete wxTheClipboard; - wxTheClipboard = (wxClipboard*) NULL; -} - -#endif - - // wxUSE_CLIPBOARD - diff --git a/src/gtk1/colour.cpp b/src/gtk1/colour.cpp deleted file mode 100644 index a3292d450d..0000000000 --- a/src/gtk1/colour.cpp +++ /dev/null @@ -1,214 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: colour.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifdef __GNUG__ -#pragma implementation "colour.h" -#endif - -#include "wx/gdicmn.h" - -#include "gdk/gdk.h" -#include "gdk/gdkprivate.h" - -//----------------------------------------------------------------------------- -// wxColour -//----------------------------------------------------------------------------- - -class wxColourRefData: public wxObjectRefData -{ - public: - - wxColourRefData(); - ~wxColourRefData(); - void FreeColour(); - - GdkColor m_color; - GdkColormap *m_colormap; - bool m_hasPixel; - - friend wxColour; -}; - -wxColourRefData::wxColourRefData() -{ - m_color.red = 0; - m_color.green = 0; - m_color.blue = 0; - m_color.pixel = 0; - m_colormap = (GdkColormap *) NULL; - m_hasPixel = FALSE; -} - -wxColourRefData::~wxColourRefData() -{ - FreeColour(); -} - -void wxColourRefData::FreeColour() -{ -// if (m_hasPixel) gdk_colors_free( m_colormap, &m_color, 1, 0 ); -} - -//----------------------------------------------------------------------------- - -#define M_COLDATA ((wxColourRefData *)m_refData) - -#define SHIFT (8*(sizeof(short int)-sizeof(char))) - -IMPLEMENT_DYNAMIC_CLASS(wxColour,wxGDIObject) - -wxColour::wxColour() -{ -} - -wxColour::wxColour( unsigned char red, unsigned char green, unsigned char blue ) -{ - m_refData = new wxColourRefData(); - M_COLDATA->m_color.red = ((unsigned short)red) << SHIFT; - M_COLDATA->m_color.green = ((unsigned short)green) << SHIFT; - M_COLDATA->m_color.blue = ((unsigned short)blue) << SHIFT; - M_COLDATA->m_color.pixel = 0; -} - -void wxColour::InitFromName( const wxString &colourName ) -{ - wxNode *node = (wxNode *) NULL; - if ( (wxTheColourDatabase) && (node = wxTheColourDatabase->Find(colourName)) ) - { - wxColour *col = (wxColour*)node->Data(); - UnRef(); - if (col) Ref( *col ); - } - else - { - m_refData = new wxColourRefData(); - if (!gdk_color_parse( colourName, &M_COLDATA->m_color )) - { - wxFAIL_MSG( "wxColour: couldn't find colour" ); - printf( "Colourname %s.\n", WXSTRINGCAST colourName ); - - delete m_refData; - m_refData = (wxObjectRefData *) NULL; - } - } -} - -wxColour::wxColour( const wxColour& col ) -{ - Ref( col ); -} - -wxColour::~wxColour() -{ -} - -wxColour& wxColour::operator = ( const wxColour& col ) -{ - if (*this == col) return (*this); - Ref( col ); - return *this; -} - -bool wxColour::operator == ( const wxColour& col ) -{ - return m_refData == col.m_refData; -} - -bool wxColour::operator != ( const wxColour& col) -{ - return m_refData != col.m_refData; -} - -void wxColour::Set( unsigned char red, unsigned char green, unsigned char blue ) -{ - UnRef(); - m_refData = new wxColourRefData(); - M_COLDATA->m_color.red = ((unsigned short)red) << SHIFT; - M_COLDATA->m_color.green = ((unsigned short)green) << SHIFT; - M_COLDATA->m_color.blue = ((unsigned short)blue) << SHIFT; - M_COLDATA->m_color.pixel = 0; -} - -unsigned char wxColour::Red() const -{ - wxCHECK_MSG( Ok(), 0, "invalid colour" ); - - return (unsigned char)(M_COLDATA->m_color.red >> SHIFT); -} - -unsigned char wxColour::Green() const -{ - wxCHECK_MSG( Ok(), 0, "invalid colour" ); - - return (unsigned char)(M_COLDATA->m_color.green >> SHIFT); -} - -unsigned char wxColour::Blue() const -{ - wxCHECK_MSG( Ok(), 0, "invalid colour" ); - - return (unsigned char)(M_COLDATA->m_color.blue >> SHIFT); -} - -bool wxColour::Ok() const -{ - return (m_refData != NULL); -} - -void wxColour::CalcPixel( GdkColormap *cmap ) -{ - if (!Ok()) return; - - if ((M_COLDATA->m_hasPixel) && (M_COLDATA->m_colormap == cmap)) return; - M_COLDATA->FreeColour(); - - GdkColormapPrivate *private_colormap = (GdkColormapPrivate*) cmap; - if ((private_colormap->visual->type == GDK_VISUAL_GRAYSCALE) || - (private_colormap->visual->type == GDK_VISUAL_PSEUDO_COLOR)) - { - GdkColor *colors = cmap->colors; - int max = 3 * (65536); - int index = -1; - - for (int i = 0; i < cmap->size; i++) - { - int rdiff = (M_COLDATA->m_color.red - colors[i].red); - int gdiff = (M_COLDATA->m_color.green - colors[i].green); - int bdiff = (M_COLDATA->m_color.blue - colors[i].blue); - int sum = ABS (rdiff) + ABS (gdiff) + ABS (bdiff); - if (sum < max) { index = i; max = sum; } - } - - M_COLDATA->m_hasPixel = TRUE; - M_COLDATA->m_color.pixel = index; - } - else - { - M_COLDATA->m_hasPixel = gdk_color_alloc( cmap, &M_COLDATA->m_color ); - } - - M_COLDATA->m_colormap = cmap; -} - -int wxColour::GetPixel() const -{ - wxCHECK_MSG( Ok(), 0, "invalid colour" ); - - return M_COLDATA->m_color.pixel; -} - -GdkColor *wxColour::GetColor() const -{ - wxCHECK_MSG( Ok(), (GdkColor *) NULL, "invalid colour" ); - - return &M_COLDATA->m_color; -} - - diff --git a/src/gtk1/combobox.cpp b/src/gtk1/combobox.cpp deleted file mode 100644 index 7fd217fda3..0000000000 --- a/src/gtk1/combobox.cpp +++ /dev/null @@ -1,557 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: combobox.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "combobox.h" -#endif - - -#include "wx/combobox.h" - -#include - -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -//----------------------------------------------------------------------------- -// data -//----------------------------------------------------------------------------- - -extern bool g_blockEventsOnDrag; - -//----------------------------------------------------------------------------- -// "select" -//----------------------------------------------------------------------------- - -static void gtk_combo_clicked_callback( GtkWidget *WXUNUSED(widget), wxComboBox *combo ) -{ - if (!combo->HasVMT()) return; - if (g_blockEventsOnDrag) return; - - if (combo->m_alreadySent) - { - combo->m_alreadySent = FALSE; - return; - } - - combo->m_alreadySent = TRUE; - - wxCommandEvent event(wxEVT_COMMAND_COMBOBOX_SELECTED, combo->GetId()); - event.SetInt( combo->GetSelection() ); - wxString tmp( combo->GetStringSelection() ); - event.SetString( WXSTRINGCAST(tmp) ); - event.SetEventObject(combo); - combo->GetEventHandler()->ProcessEvent(event); -} - -//----------------------------------------------------------------------------- -// "changed" -//----------------------------------------------------------------------------- - -static void -gtk_text_changed_callback( GtkWidget *WXUNUSED(widget), wxComboBox *combo ) -{ - wxCommandEvent event( wxEVT_COMMAND_TEXT_UPDATED, combo->m_windowId ); - event.SetString( copystring(combo->GetValue()) ); - event.SetEventObject( combo ); - combo->GetEventHandler()->ProcessEvent( event ); - delete[] event.GetString(); -} - -//----------------------------------------------------------------------------- -// wxComboBox -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxComboBox,wxControl) - -BEGIN_EVENT_TABLE(wxComboBox, wxControl) - EVT_SIZE(wxComboBox::OnSize) -END_EVENT_TABLE() - -bool wxComboBox::Create( wxWindow *parent, wxWindowID id, const wxString& value, - const wxPoint& pos, const wxSize& size, - int n, const wxString choices[], - long style, const wxValidator& validator, - const wxString& name ) -{ - m_alreadySent = FALSE; - m_needParent = TRUE; - m_acceptsFocus = TRUE; - - PreCreation( parent, id, pos, size, style, name ); - - SetValidator( validator ); - - m_widget = gtk_combo_new(); - - wxSize newSize = size; - if (newSize.x == -1) newSize.x = 100; - if (newSize.y == -1) newSize.y = 26; - SetSize( newSize.x, newSize.y ); - - GtkWidget *list = GTK_COMBO(m_widget)->list; - - for (int i = 0; i < n; i++) - { - GtkWidget *list_item = gtk_list_item_new_with_label( choices[i] ); - - m_clientDataList.Append( (wxObject*)NULL ); - m_clientObjectList.Append( (wxObject*)NULL ); - - gtk_container_add( GTK_CONTAINER(list), list_item ); - - gtk_widget_realize( list_item ); - gtk_widget_realize( GTK_BIN(list_item)->child ); - - gtk_widget_show( list_item ); - - gtk_signal_connect( GTK_OBJECT(list_item), "select", - GTK_SIGNAL_FUNC(gtk_combo_clicked_callback), (gpointer)this ); - } - - m_parent->AddChild( this ); - - (m_parent->m_insertCallback)( m_parent, this ); - - PostCreation(); - - ConnectWidget( GTK_COMBO(m_widget)->button ); - - if (!value.IsNull()) SetValue( value ); - - gtk_widget_realize( GTK_COMBO(m_widget)->list ); - gtk_widget_realize( GTK_COMBO(m_widget)->entry ); - gtk_widget_realize( GTK_COMBO(m_widget)->button ); - - gtk_signal_connect( GTK_OBJECT(GTK_COMBO(m_widget)->entry), "changed", - GTK_SIGNAL_FUNC(gtk_text_changed_callback), (gpointer)this); - - SetBackgroundColour( parent->GetBackgroundColour() ); - SetForegroundColour( parent->GetForegroundColour() ); - - Show( TRUE ); - - return TRUE; -} - -wxComboBox::~wxComboBox() -{ - wxNode *node = m_clientDataList.First(); - while (node) - { - wxClientData *cd = (wxClientData*)node->Data(); - if (cd) delete cd; - node = node->Next(); - } - m_clientDataList.Clear(); -} - -void wxComboBox::AppendCommon( const wxString &item ) -{ - wxCHECK_RET( m_widget != NULL, "invalid combobox" ); - - GtkWidget *list = GTK_COMBO(m_widget)->list; - - GtkWidget *list_item = gtk_list_item_new_with_label( item ); - - gtk_signal_connect( GTK_OBJECT(list_item), "select", - GTK_SIGNAL_FUNC(gtk_combo_clicked_callback), (gpointer)this ); - - gtk_container_add( GTK_CONTAINER(list), list_item ); - - if (m_widgetStyle) ApplyWidgetStyle(); - - gtk_widget_show( list_item ); -} - -void wxComboBox::Append( const wxString &item ) -{ - m_clientDataList.Append( (wxObject*) NULL ); - m_clientObjectList.Append( (wxObject*) NULL ); - - AppendCommon( item ); -} - -void wxComboBox::Append( const wxString &item, void *clientData ) -{ - m_clientDataList.Append( (wxObject*) clientData ); - m_clientObjectList.Append( (wxObject*)NULL ); - - AppendCommon( item ); -} - -void wxComboBox::Append( const wxString &item, wxClientData *clientData ) -{ - m_clientDataList.Append( (wxObject*) NULL ); - m_clientObjectList.Append( (wxObject*) clientData ); - - AppendCommon( item ); -} - -void wxComboBox::SetClientData( int n, void* clientData ) -{ - wxCHECK_RET( m_widget != NULL, "invalid combobox" ); - - wxNode *node = m_clientDataList.Nth( n ); - if (!node) return; - - node->SetData( (wxObject*) clientData ); -} - -void* wxComboBox::GetClientData( int n ) -{ - wxCHECK_MSG( m_widget != NULL, NULL, "invalid combobox" ); - - wxNode *node = m_clientDataList.Nth( n ); - if (!node) return NULL; - - return node->Data(); -} - -void wxComboBox::SetClientObject( int n, wxClientData* clientData ) -{ - wxCHECK_RET( m_widget != NULL, "invalid combobox" ); - - wxNode *node = m_clientObjectList.Nth( n ); - if (!node) return; - - wxClientData *cd = (wxClientData*) node->Data(); - if (cd) delete cd; - - node->SetData( (wxObject*) clientData ); -} - -wxClientData* wxComboBox::GetClientObject( int n ) -{ - wxCHECK_MSG( m_widget != NULL, (wxClientData*)NULL, "invalid combobox" ); - - wxNode *node = m_clientDataList.Nth( n ); - if (!node) return (wxClientData*) NULL; - - return (wxClientData*) node->Data(); -} - -void wxComboBox::Clear() -{ - wxCHECK_RET( m_widget != NULL, "invalid combobox" ); - - GtkWidget *list = GTK_COMBO(m_widget)->list; - gtk_list_clear_items( GTK_LIST(list), 0, Number() ); - - wxNode *node = m_clientObjectList.First(); - while (node) - { - wxClientData *cd = (wxClientData*)node->Data(); - if (cd) delete cd; - node = node->Next(); - } - m_clientObjectList.Clear(); - - m_clientDataList.Clear(); -} - -void wxComboBox::Delete( int n ) -{ - wxCHECK_RET( m_widget != NULL, "invalid combobox" ); - - GtkList *listbox = GTK_LIST( GTK_COMBO(m_widget)->list ); - - GList *child = g_list_nth( listbox->children, n ); - - if (!child) - { - wxFAIL_MSG("wrong index"); - return; - } - - GList *list = g_list_append( (GList*) NULL, child->data ); - gtk_list_remove_items( listbox, list ); - g_list_free( list ); - - wxNode *node = m_clientObjectList.Nth( n ); - if (node) - { - wxClientData *cd = (wxClientData*)node->Data(); - if (cd) delete cd; - m_clientObjectList.DeleteNode( node ); - } - - node = m_clientDataList.Nth( n ); - if (node) - { - m_clientDataList.DeleteNode( node ); - } -} - -int wxComboBox::FindString( const wxString &item ) -{ - wxCHECK_MSG( m_widget != NULL, -1, "invalid combobox" ); - - GtkWidget *list = GTK_COMBO(m_widget)->list; - - GList *child = GTK_LIST(list)->children; - int count = 0; - while (child) - { - GtkBin *bin = GTK_BIN( child->data ); - GtkLabel *label = GTK_LABEL( bin->child ); - if (item == label->label) return count; - count++; - child = child->next; - } - - wxFAIL_MSG( "wxComboBox: string not found" ); - - return -1; -} - -int wxComboBox::GetSelection() const -{ - wxCHECK_MSG( m_widget != NULL, -1, "invalid combobox" ); - - GtkWidget *list = GTK_COMBO(m_widget)->list; - - GList *selection = GTK_LIST(list)->selection; - if (selection) - { - GList *child = GTK_LIST(list)->children; - int count = 0; - while (child) - { - if (child->data == selection->data) return count; - count++; - child = child->next; - } - } - - wxFAIL_MSG( "wxComboBox: no selection" ); - - return -1; -} - -wxString wxComboBox::GetString( int n ) const -{ - wxCHECK_MSG( m_widget != NULL, "", "invalid combobox" ); - - GtkWidget *list = GTK_COMBO(m_widget)->list; - - GList *child = g_list_nth( GTK_LIST(list)->children, n ); - if (child) - { - GtkBin *bin = GTK_BIN( child->data ); - GtkLabel *label = GTK_LABEL( bin->child ); - return label->label; - } - - wxFAIL_MSG( "wxComboBox: wrong index" ); - - return ""; -} - -wxString wxComboBox::GetStringSelection() const -{ - wxCHECK_MSG( m_widget != NULL, "", "invalid combobox" ); - - GtkWidget *list = GTK_COMBO(m_widget)->list; - - GList *selection = GTK_LIST(list)->selection; - if (selection) - { - GtkBin *bin = GTK_BIN( selection->data ); - wxString tmp = GTK_LABEL( bin->child )->label; - return tmp; - } - - wxFAIL_MSG( "wxComboBox: no selection" ); - - return ""; -} - -int wxComboBox::Number() const -{ - wxCHECK_MSG( m_widget != NULL, 0, "invalid combobox" ); - - GtkWidget *list = GTK_COMBO(m_widget)->list; - - GList *child = GTK_LIST(list)->children; - int count = 0; - while (child) { count++; child = child->next; } - return count; -} - -void wxComboBox::SetSelection( int n ) -{ - wxCHECK_RET( m_widget != NULL, "invalid combobox" ); - - GtkWidget *list = GTK_COMBO(m_widget)->list; - gtk_list_select_item( GTK_LIST(list), n ); -} - -void wxComboBox::SetStringSelection( const wxString &string ) -{ - wxCHECK_RET( m_widget != NULL, "invalid combobox" ); - - int res = FindString( string ); - if (res == -1) return; - SetSelection( res ); -} - -wxString wxComboBox::GetValue() const -{ - GtkWidget *entry = GTK_COMBO(m_widget)->entry; - wxString tmp = gtk_entry_get_text( GTK_ENTRY(entry) ); - return tmp; -} - -void wxComboBox::SetValue( const wxString& value ) -{ - wxCHECK_RET( m_widget != NULL, "invalid combobox" ); - - GtkWidget *entry = GTK_COMBO(m_widget)->entry; - wxString tmp = ""; - if (!value.IsNull()) tmp = value; - gtk_entry_set_text( GTK_ENTRY(entry), tmp ); -} - -void wxComboBox::Copy() -{ - wxCHECK_RET( m_widget != NULL, "invalid combobox" ); - - GtkWidget *entry = GTK_COMBO(m_widget)->entry; -#if (GTK_MINOR_VERSION == 1) - gtk_editable_copy_clipboard( GTK_EDITABLE(entry) ); -#else - gtk_editable_copy_clipboard( GTK_EDITABLE(entry), 0 ); -#endif -} - -void wxComboBox::Cut() -{ - wxCHECK_RET( m_widget != NULL, "invalid combobox" ); - - GtkWidget *entry = GTK_COMBO(m_widget)->entry; -#if (GTK_MINOR_VERSION == 1) - gtk_editable_cut_clipboard( GTK_EDITABLE(entry) ); -#else - gtk_editable_cut_clipboard( GTK_EDITABLE(entry), 0 ); -#endif -} - -void wxComboBox::Paste() -{ - wxCHECK_RET( m_widget != NULL, "invalid combobox" ); - - GtkWidget *entry = GTK_COMBO(m_widget)->entry; -#if (GTK_MINOR_VERSION == 1) - gtk_editable_paste_clipboard( GTK_EDITABLE(entry) ); -#else - gtk_editable_paste_clipboard( GTK_EDITABLE(entry), 0 ); -#endif -} - -void wxComboBox::SetInsertionPoint( long pos ) -{ - wxCHECK_RET( m_widget != NULL, "invalid combobox" ); - - GtkWidget *entry = GTK_COMBO(m_widget)->entry; - gtk_entry_set_position( GTK_ENTRY(entry), (int)pos ); -} - -void wxComboBox::SetInsertionPointEnd() -{ - wxCHECK_RET( m_widget != NULL, "invalid combobox" ); - - SetInsertionPoint( -1 ); -} - -long wxComboBox::GetInsertionPoint() const -{ - GtkWidget *entry = GTK_COMBO(m_widget)->entry; - return (long) GTK_EDITABLE(entry)->current_pos; -} - -long wxComboBox::GetLastPosition() const -{ - GtkWidget *entry = GTK_COMBO(m_widget)->entry; - int pos = GTK_ENTRY(entry)->text_length; - return (long) pos-1; -} - -void wxComboBox::Replace( long from, long to, const wxString& value ) -{ - wxCHECK_RET( m_widget != NULL, "invalid combobox" ); - - GtkWidget *entry = GTK_COMBO(m_widget)->entry; - gtk_editable_delete_text( GTK_EDITABLE(entry), (gint)from, (gint)to ); - if (value.IsNull()) return; - gint pos = (gint)to; - gtk_editable_insert_text( GTK_EDITABLE(entry), value, value.Length(), &pos ); -} - -void wxComboBox::Remove(long from, long to) -{ - wxCHECK_RET( m_widget != NULL, "invalid combobox" ); - - GtkWidget *entry = GTK_COMBO(m_widget)->entry; - gtk_editable_delete_text( GTK_EDITABLE(entry), (gint)from, (gint)to ); -} - -void wxComboBox::SetSelection( long WXUNUSED(from), long WXUNUSED(to) ) -{ - wxFAIL_MSG( "wxComboBox::SetSelection not implemented" ); -} - -void wxComboBox::SetEditable( bool WXUNUSED(editable) ) -{ - wxFAIL_MSG( "wxComboBox::SetEditable not implemented" ); -} - -void wxComboBox::OnSize( wxSizeEvent &event ) -{ - wxControl::OnSize( event ); - - int w = 21; - gtk_widget_set_usize( GTK_COMBO(m_widget)->entry, m_width-w-1, m_height ); - - gtk_widget_set_uposition( GTK_COMBO(m_widget)->button, m_x+m_width-w, m_y ); - gtk_widget_set_usize( GTK_COMBO(m_widget)->button, w, m_height ); -} - -void wxComboBox::ApplyWidgetStyle() -{ - SetWidgetStyle(); - - gtk_widget_set_style( GTK_COMBO(m_widget)->button, m_widgetStyle ); - gtk_widget_set_style( GTK_COMBO(m_widget)->entry, m_widgetStyle ); - gtk_widget_set_style( GTK_COMBO(m_widget)->list, m_widgetStyle ); - - GtkList *list = GTK_LIST( GTK_COMBO(m_widget)->list ); - GList *child = list->children; - while (child) - { - gtk_widget_set_style( GTK_WIDGET(child->data), m_widgetStyle ); - - GtkBin *bin = GTK_BIN(child->data); - gtk_widget_set_style( bin->child, m_widgetStyle ); - - child = child->next; - } -} - -GtkWidget* wxComboBox::GetConnectWidget() -{ - return GTK_COMBO(m_widget)->entry; -} - -bool wxComboBox::IsOwnGtkWindow( GdkWindow *window ) -{ - return ( (window == GTK_ENTRY( GTK_COMBO(m_widget)->entry )->text_area) || - (window == GTK_COMBO(m_widget)->button->window ) ); -} - diff --git a/src/gtk1/control.cpp b/src/gtk1/control.cpp deleted file mode 100644 index 4b04d0bb37..0000000000 --- a/src/gtk1/control.cpp +++ /dev/null @@ -1,59 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: control.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling, Julian Smart and Vadim Zeitlin -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "control.h" -#endif - -#include "wx/control.h" - -//----------------------------------------------------------------------------- -// wxControl -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxControl,wxWindow) - -wxControl::wxControl(void) -{ - m_needParent = TRUE; -} - -wxControl::wxControl( wxWindow *parent, wxWindowID id, - const wxPoint &pos, const wxSize &size, - long style, const wxString &name ) : - wxWindow( parent, id, pos, size, style, name ) -{ -} - -void wxControl::Command( wxCommandEvent &WXUNUSED(event) ) -{ -} - -void wxControl::SetLabel( const wxString &label ) -{ - m_label = ""; - for ( const char *pc = label; *pc != '\0'; pc++ ) - { - if ( *pc == '&' ) - { - pc++; // skip it -#if 0 // it would be unused anyhow for now - kbd interface not done yet - if ( *pc != '&' ) m_chAccel = *pc; -#endif - } - m_label << *pc; - } -} - -wxString wxControl::GetLabel(void) const -{ - return m_label; -} - - diff --git a/src/gtk1/cross.xbm b/src/gtk1/cross.xbm deleted file mode 100644 index b07cbe7fcd..0000000000 --- a/src/gtk1/cross.xbm +++ /dev/null @@ -1,6 +0,0 @@ -#define cross_width 15 -#define cross_height 15 -static char cross_bits[] = { - 0x84, 0x10, 0x84, 0x10, 0xff, 0x7f, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, - 0x84, 0x10, 0xff, 0x7f, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, - 0xff, 0x7f, 0x84, 0x10, 0x84, 0x10}; diff --git a/src/gtk1/cursor.cpp b/src/gtk1/cursor.cpp deleted file mode 100644 index eac07cc904..0000000000 --- a/src/gtk1/cursor.cpp +++ /dev/null @@ -1,157 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: cursor.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifdef __GNUG__ -#pragma implementation "cursor.h" -#endif - -#include "wx/cursor.h" - -#include "gdk/gdk.h" - -//----------------------------------------------------------------------------- -// wxCursor -//----------------------------------------------------------------------------- - -class wxCursorRefData: public wxObjectRefData -{ - public: - - wxCursorRefData(); - ~wxCursorRefData(); - - GdkCursor *m_cursor; -}; - -wxCursorRefData::wxCursorRefData() -{ - m_cursor = (GdkCursor *) NULL; -} - -wxCursorRefData::~wxCursorRefData() -{ - if (m_cursor) gdk_cursor_destroy( m_cursor ); -} - -//----------------------------------------------------------------------------- - -#define M_CURSORDATA ((wxCursorRefData *)m_refData) - -IMPLEMENT_DYNAMIC_CLASS(wxCursor,wxObject) - -wxCursor::wxCursor() -{ -} - -wxCursor::wxCursor( int cursorId ) -{ - m_refData = new wxCursorRefData(); - - GdkCursorType gdk_cur = GDK_LEFT_PTR; - switch (cursorId) - { - case wxCURSOR_HAND: gdk_cur = GDK_HAND1; break; - case wxCURSOR_CROSS: gdk_cur = GDK_CROSSHAIR; break; - case wxCURSOR_SIZEWE: gdk_cur = GDK_SB_H_DOUBLE_ARROW; break; - case wxCURSOR_SIZENS: gdk_cur = GDK_SB_V_DOUBLE_ARROW; break; - case wxCURSOR_WAIT: - case wxCURSOR_WATCH: gdk_cur = GDK_WATCH; break; - case wxCURSOR_SIZING: gdk_cur = GDK_SIZING; break; - case wxCURSOR_SPRAYCAN: gdk_cur = GDK_SPRAYCAN; break; - case wxCURSOR_IBEAM: gdk_cur = GDK_XTERM; break; - case wxCURSOR_PENCIL: gdk_cur = GDK_PENCIL; break; - case wxCURSOR_NO_ENTRY: gdk_cur = GDK_PIRATE; break; - case wxCURSOR_SIZENWSE: - case wxCURSOR_SIZENESW: gdk_cur = GDK_FLEUR; break; - case wxCURSOR_QUESTION_ARROW: gdk_cur = GDK_QUESTION_ARROW; break; - case wxCURSOR_PAINT_BRUSH: gdk_cur = GDK_SPRAYCAN; break; - case wxCURSOR_MAGNIFIER: gdk_cur = GDK_PLUS; break; - case wxCURSOR_CHAR: gdk_cur = GDK_XTERM; break; - case wxCURSOR_LEFT_BUTTON: gdk_cur = GDK_LEFTBUTTON; break; - case wxCURSOR_MIDDLE_BUTTON: gdk_cur = GDK_MIDDLEBUTTON; break; - case wxCURSOR_RIGHT_BUTTON: gdk_cur = GDK_RIGHTBUTTON; break; -/* - case wxCURSOR_DOUBLE_ARROW: gdk_cur = GDK_DOUBLE_ARROW; break; - case wxCURSOR_CROSS_REVERSE: gdk_cur = GDK_CROSS_REVERSE; break; - case wxCURSOR_BASED_ARROW_UP: gdk_cur = GDK_BASED_ARROW_UP; break; - case wxCURSOR_BASED_ARROW_DOWN: gdk_cur = GDK_BASED_ARROW_DOWN; break; -*/ - } - - M_CURSORDATA->m_cursor = gdk_cursor_new( gdk_cur ); -} - -wxCursor::wxCursor( const wxCursor &cursor ) -{ - Ref( cursor ); -} - -wxCursor::~wxCursor() -{ -} - -wxCursor& wxCursor::operator = ( const wxCursor& cursor ) -{ - if (*this == cursor) return (*this); - Ref( cursor ); - - return *this; -} - -bool wxCursor::operator == ( const wxCursor& cursor ) const -{ - return m_refData == cursor.m_refData; -} - -bool wxCursor::operator != ( const wxCursor& cursor ) const -{ - return m_refData != cursor.m_refData; -} - -bool wxCursor::Ok() const -{ - return (m_refData != NULL); -} - -GdkCursor *wxCursor::GetCursor() const -{ - return M_CURSORDATA->m_cursor; -} - -//----------------------------------------------------------------------------- -// busy cursor routines -//----------------------------------------------------------------------------- - -bool g_isBusy = FALSE; - -void wxEndBusyCursor() -{ - g_isBusy = FALSE; -} - -void wxBeginBusyCursor( wxCursor *WXUNUSED(cursor) ) -{ - g_isBusy = TRUE; -} - -bool wxIsBusy() -{ - return g_isBusy; -} - -void wxSetCursor( const wxCursor& cursor ) -{ - extern wxCursor *g_globalCursor; - if (g_globalCursor) (*g_globalCursor) = cursor; - - if (cursor.Ok()) {} -} - - diff --git a/src/gtk1/data.cpp b/src/gtk1/data.cpp deleted file mode 100644 index 324dc713bc..0000000000 --- a/src/gtk1/data.cpp +++ /dev/null @@ -1,170 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: data.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifdef __GNUG__ -// #pragma implementation -#endif - -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/window.h" -#include "wx/dc.h" -#include "wx/accel.h" -#include "wx/dcps.h" - -#define _MAXPATHLEN 500 - -/* Used for X resources */ -#include -#include -#include - -wxResourceCache *wxTheResourceCache = (wxResourceCache *) NULL; -XrmDatabase wxResourceDatabase; - -/* Useful buffer, initialized in wxCommonInit */ -char *wxBuffer = (char *) NULL; - -/* Windows List */ -wxList wxTopLevelWindows; - -/* List of windows pending deletion */ -wxList wxPendingDelete; - -/* Current cursor, in order to hang on to - * cursor handle when setting the cursor globally */ -wxCursor *g_globalCursor = (wxCursor *) NULL; - -/* Don't allow event propagation during drag */ -bool g_blockEventsOnDrag = FALSE; - -/* Don't allow mouse event propagation during scroll */ -bool g_blockEventsOnScroll = FALSE; - -/* Message Strings for Internationalization */ -char **wx_msg_str = (char**)NULL; - -/* Custom OS version, as optionally placed in wx.ini/.wxrc - * Currently this can be Win95, Windows, Win32s, WinNT. - * For some systems, you can't tell until run-time what services you - * have. See wxGetOsVersion, which uses this string if present. */ -char *wxOsVersion = (char *) NULL; - -/* For printing several pages */ -int wxPageNumber; -wxPrintPaperDatabase* wxThePrintPaperDatabase = (wxPrintPaperDatabase *) NULL; - -/* GDI Object Lists */ -wxBrushList *wxTheBrushList = (wxBrushList *) NULL; -wxPenList *wxThePenList = (wxPenList *) NULL; -wxFontList *wxTheFontList = (wxFontList *) NULL; -wxColourDatabase *wxTheColourDatabase = (wxColourDatabase *) NULL; -wxBitmapList *wxTheBitmapList = (wxBitmapList *) NULL; - -/* X only font names */ -/* -wxFontNameDirectory *wxTheFontNameDirectory; -*/ - -/* Stock objects */ -wxFont *wxNORMAL_FONT; -wxFont *wxSMALL_FONT; -wxFont *wxITALIC_FONT; -wxFont *wxSWISS_FONT; - -wxPen *wxRED_PEN; -wxPen *wxCYAN_PEN; -wxPen *wxGREEN_PEN; -wxPen *wxBLACK_PEN; -wxPen *wxWHITE_PEN; -wxPen *wxTRANSPARENT_PEN; -wxPen *wxBLACK_DASHED_PEN; -wxPen *wxGREY_PEN; -wxPen *wxMEDIUM_GREY_PEN; -wxPen *wxLIGHT_GREY_PEN; - -wxBrush *wxBLUE_BRUSH; -wxBrush *wxGREEN_BRUSH; -wxBrush *wxWHITE_BRUSH; -wxBrush *wxBLACK_BRUSH; -wxBrush *wxTRANSPARENT_BRUSH; -wxBrush *wxCYAN_BRUSH; -wxBrush *wxRED_BRUSH; -wxBrush *wxGREY_BRUSH; -wxBrush *wxMEDIUM_GREY_BRUSH; -wxBrush *wxLIGHT_GREY_BRUSH; - -wxColour *wxBLACK; -wxColour *wxWHITE; -wxColour *wxGREY; -wxColour *wxRED; -wxColour *wxBLUE; -wxColour *wxGREEN; -wxColour *wxCYAN; -wxColour *wxLIGHT_GREY; - -wxCursor *wxSTANDARD_CURSOR = (wxCursor *) NULL; -wxCursor *wxHOURGLASS_CURSOR = (wxCursor *) NULL; -wxCursor *wxCROSS_CURSOR = (wxCursor *) NULL; - -/* 'Null' objects */ -wxAcceleratorTable wxNullAcceleratorTable; -wxBitmap wxNullBitmap; -wxIcon wxNullIcon; -wxCursor wxNullCursor; -wxPen wxNullPen; -wxBrush wxNullBrush; -wxFont wxNullFont; -wxColour wxNullColour; -wxPalette wxNullPalette; - -/* Default window names */ -const char *wxButtonNameStr = "button"; -const char *wxCanvasNameStr = "canvas"; -const char *wxCheckBoxNameStr = "check"; -const char *wxChoiceNameStr = "choice"; -const char *wxComboBoxNameStr = "comboBox"; -const char *wxDialogNameStr = "dialog"; -const char *wxFrameNameStr = "frame"; -const char *wxGaugeNameStr = "gauge"; -const char *wxStaticBoxNameStr = "groupBox"; -const char *wxListBoxNameStr = "listBox"; -const char *wxStaticTextNameStr = "message"; -const char *wxStaticBitmapNameStr = "message"; -const char *wxMultiTextNameStr = "multitext"; -const char *wxPanelNameStr = "panel"; -const char *wxRadioBoxNameStr = "radioBox"; -const char *wxRadioButtonNameStr = "radioButton"; -const char *wxBitmapRadioButtonNameStr = "radioButton"; -const char *wxScrollBarNameStr = "scrollBar"; -const char *wxSliderNameStr = "slider"; -const char *wxStaticNameStr = "static"; -const char *wxTextCtrlWindowNameStr = "textWindow"; -const char *wxTextCtrlNameStr = "text"; -const char *wxVirtListBoxNameStr = "virtListBox"; -const char *wxButtonBarNameStr = "buttonbar"; -const char *wxEnhDialogNameStr = "Shell"; -const char *wxToolBarNameStr = "toolbar"; -const char *wxStatusLineNameStr = "status_line"; -const char *wxEmptyString = ""; -const char *wxGetTextFromUserPromptStr = "Input Text"; -const char *wxMessageBoxCaptionStr = "Message"; -const char *wxFileSelectorPromptStr = "Select a file"; -const char *wxFileSelectorDefaultWildcardStr = "*.*"; -const char *wxInternalErrorStr = "wxWindows Internal Error"; -const char *wxFatalErrorStr = "wxWindows Fatal Error"; - -/* See wx/utils.h */ -const char *wxFloatToStringStr = "%.2f"; -const char *wxDoubleToStringStr = "%.2f"; - -/* Dafaults for wxWindow etc. */ -const wxSize wxDefaultSize(-1, -1); -const wxPoint wxDefaultPosition(-1, -1); diff --git a/src/gtk1/dataobj.cpp b/src/gtk1/dataobj.cpp deleted file mode 100644 index 331a728254..0000000000 --- a/src/gtk1/dataobj.cpp +++ /dev/null @@ -1,467 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: dataobj.cpp -// Purpose: wxDataObject class -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dataobj.h" -#endif - -#include "wx/dataobj.h" -#include "wx/app.h" -#include "wx/debug.h" - -#include "gdk/gdk.h" - -//------------------------------------------------------------------------- -// wxDataFormat -//------------------------------------------------------------------------- - -IMPLEMENT_CLASS(wxDataFormat, wxObject) - -wxDataFormat::wxDataFormat() -{ - m_type = wxDF_INVALID; - m_hasAtom = FALSE; - m_atom = (GdkAtom) 0; -} - -wxDataFormat::wxDataFormat( wxDataType type ) -{ - SetType( type ); -} - -wxDataFormat::wxDataFormat( const wxString &id ) -{ - SetId( id ); -} - -wxDataFormat::wxDataFormat( wxDataFormat &format ) -{ - m_type = format.GetType(); - m_id = format.GetId(); - m_hasAtom = TRUE; - m_atom = format.GetAtom(); -} - -wxDataFormat::wxDataFormat( const GdkAtom atom ) -{ - m_hasAtom = TRUE; - - m_atom = atom; - - if (m_atom == GDK_TARGET_STRING) - { - m_type = wxDF_TEXT; - } else - if (m_atom == GDK_TARGET_BITMAP) - { - m_type = wxDF_BITMAP; - } else - { - m_type = wxDF_PRIVATE; - m_id = gdk_atom_name( m_atom ); - - if (m_id == "file:ALL") - { - m_type = wxDF_FILENAME; - } - } -} - -void wxDataFormat::SetType( wxDataType type ) -{ - m_type = type; - - if (m_type == wxDF_TEXT) - { - m_id = "STRING"; - } - else - if (m_type == wxDF_BITMAP) - { - m_id = "BITMAP"; - } - else - if (m_type == wxDF_FILENAME) - { - m_id = "file:ALL"; - } - else - { - wxFAIL_MSG( "invalid dataformat" ); - } - - m_hasAtom = FALSE; -} - -wxDataType wxDataFormat::GetType() const -{ - return m_type; -} - -wxString wxDataFormat::GetId() const -{ - return m_id; -} - -void wxDataFormat::SetId( const wxString &id ) -{ - m_type = wxDF_PRIVATE; - m_id = id; - m_hasAtom = FALSE; -} - -GdkAtom wxDataFormat::GetAtom() -{ - if (!m_hasAtom) - { - m_hasAtom = TRUE; - - if (m_type == wxDF_TEXT) - { - m_atom = GDK_TARGET_STRING; - } - else - if (m_type == wxDF_BITMAP) - { - m_atom = GDK_TARGET_BITMAP; - } - else - if (m_type == wxDF_PRIVATE) - { - m_atom = gdk_atom_intern( WXSTRINGCAST( m_id ), FALSE ); - } - else - if (m_type == wxDF_FILENAME) - { - m_atom = gdk_atom_intern( "file:ALL", FALSE ); - } - else - { - m_hasAtom = FALSE; - m_atom = (GdkAtom) 0; - } - } - - return m_atom; -} - -//------------------------------------------------------------------------- -// wxDataBroker -//------------------------------------------------------------------------- - -IMPLEMENT_CLASS(wxDataBroker,wxObject) - -wxDataBroker::wxDataBroker() -{ - m_dataObjects.DeleteContents(TRUE); - m_preferred = 0; -} - -void wxDataBroker::Add( wxDataObject *dataObject, bool preferred ) -{ - if (preferred) m_preferred = m_dataObjects.GetCount(); - m_dataObjects.Append( dataObject ); -} - -size_t wxDataBroker::GetFormatCount() const -{ - return m_dataObjects.GetCount(); -} - -wxDataFormat &wxDataBroker::GetPreferredFormat() const -{ - wxNode *node = m_dataObjects.Nth( m_preferred ); - - wxASSERT( node ); - - wxDataObject* data_obj = (wxDataObject*)node->Data(); - - return data_obj->GetFormat(); -} - -wxDataFormat &wxDataBroker::GetNthFormat( size_t nth ) const -{ - wxNode *node = m_dataObjects.Nth( nth ); - - wxASSERT( node ); - - wxDataObject* data_obj = (wxDataObject*)node->Data(); - - return data_obj->GetFormat(); -} - -bool wxDataBroker::IsSupportedFormat( wxDataFormat &format ) const -{ - wxNode *node = m_dataObjects.First(); - while (node) - { - wxDataObject *dobj = (wxDataObject*)node->Data(); - - if (dobj->GetFormat().GetAtom() == format.GetAtom()) - { - return TRUE; - } - - node = node->Next(); - } - - return FALSE; -} - -size_t wxDataBroker::GetSize( wxDataFormat& format ) const -{ - wxNode *node = m_dataObjects.First(); - while (node) - { - wxDataObject *dobj = (wxDataObject*)node->Data(); - - if (dobj->GetFormat().GetAtom() == format.GetAtom()) - { - return dobj->GetSize(); - } - - node = node->Next(); - } - - return 0; -} - -void wxDataBroker::WriteData( wxDataFormat& format, void *dest ) const -{ - wxNode *node = m_dataObjects.First(); - while (node) - { - wxDataObject *dobj = (wxDataObject*)node->Data(); - - if (dobj->GetFormat().GetAtom() == format.GetAtom()) - { - dobj->WriteData( dest ); - } - - node = node->Next(); - } -} - -//------------------------------------------------------------------------- -// wxDataObject -//------------------------------------------------------------------------- - -IMPLEMENT_ABSTRACT_CLASS( wxDataObject, wxObject ) - -wxDataObject::wxDataObject() -{ -} - -wxDataObject::~wxDataObject() -{ -} - -wxDataFormat &wxDataObject::GetFormat() -{ - return m_format; -} - -wxDataType wxDataObject::GetFormatType() const -{ - return m_format.GetType(); -} - -wxString wxDataObject::GetFormatId() const -{ - return m_format.GetId(); -} - -GdkAtom wxDataObject::GetFormatAtom() const -{ - GdkAtom ret = ((wxDataObject*) this)->m_format.GetAtom(); - return ret; -} - -// ---------------------------------------------------------------------------- -// wxTextDataObject -// ---------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS( wxTextDataObject, wxDataObject ) - -wxTextDataObject::wxTextDataObject() -{ - m_format.SetType( wxDF_TEXT ); -} - -wxTextDataObject::wxTextDataObject( const wxString& data ) -{ - m_format.SetType( wxDF_TEXT ); - - m_data = data; -} - -void wxTextDataObject::SetText( const wxString& data ) -{ - m_data = data; -} - -wxString wxTextDataObject::GetText() const -{ - return m_data; -} - -void wxTextDataObject::WriteData( void *dest ) const -{ - WriteString( m_data, dest ); -} - -size_t wxTextDataObject::GetSize() const -{ - return m_data.Len() + 1; -} - -void wxTextDataObject::WriteString( const wxString &str, void *dest ) const -{ - memcpy( dest, m_data.c_str(), GetSize() ); -} - -// ---------------------------------------------------------------------------- -// wxFileDataObject -// ---------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS( wxFileDataObject, wxDataObject ) - -wxFileDataObject::wxFileDataObject() -{ - m_format.SetType( wxDF_FILENAME ); -} - -void wxFileDataObject::AddFile( const wxString &file ) -{ - m_files += file; - m_files += (char)0; -} - -wxString wxFileDataObject::GetFiles() const -{ - return m_files; -} - -void wxFileDataObject::WriteData( void *dest ) const -{ - memcpy( dest, m_files.c_str(), GetSize() ); -} - -size_t wxFileDataObject::GetSize() const -{ - return m_files.Len() + 1; -} - -// ---------------------------------------------------------------------------- -// wxBitmapDataObject -// ---------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS( wxBitmapDataObject, wxDataObject ) - -wxBitmapDataObject::wxBitmapDataObject() -{ - m_format.SetType( wxDF_BITMAP ); -} - -wxBitmapDataObject::wxBitmapDataObject( const wxBitmap& bitmap ) -{ - m_format.SetType( wxDF_BITMAP ); - - m_bitmap = bitmap; -} - -void wxBitmapDataObject::SetBitmap( const wxBitmap &bitmap ) -{ - m_bitmap = bitmap; -} - -wxBitmap wxBitmapDataObject::GetBitmap() const -{ - return m_bitmap; -} - -void wxBitmapDataObject::WriteData( void *dest ) const -{ - WriteBitmap( m_bitmap, dest ); -} - -size_t wxBitmapDataObject::GetSize() const -{ - return 0; -} - -void wxBitmapDataObject::WriteBitmap( const wxBitmap &bitmap, void *dest ) const -{ - memcpy( dest, m_bitmap.GetPixmap(), GetSize() ); -} - -// ---------------------------------------------------------------------------- -// wxPrivateDataObject -// ---------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS( wxPrivateDataObject, wxDataObject ) - -wxPrivateDataObject::wxPrivateDataObject() -{ - m_id = "application/"; - m_id += wxTheApp->GetAppName(); - - m_format.SetId( m_id ); - - m_size = 0; - m_data = (char*) NULL; -} - -wxPrivateDataObject::~wxPrivateDataObject() -{ - if (m_data) delete[] m_data; -} - -void wxPrivateDataObject::SetId( const wxString& id ) -{ - m_id = id; - m_format.SetId( m_id ); -} - -wxString wxPrivateDataObject::GetId() const -{ - return m_id; -} - -void wxPrivateDataObject::SetData( const char *data, size_t size ) -{ - m_size = size; - - if (m_data) delete[] m_data; - - m_data = new char[size]; - - memcpy( m_data, data, size ); -} - -char* wxPrivateDataObject::GetData() const -{ - return m_data; -} - -void wxPrivateDataObject::WriteData( void *dest ) const -{ - WriteData( m_data, dest ); -} - -size_t wxPrivateDataObject::GetSize() const -{ - return m_size; -} - -void wxPrivateDataObject::WriteData( const char *data, void *dest ) const -{ - memcpy( dest, data, GetSize() ); -} - diff --git a/src/gtk1/dc.cpp b/src/gtk1/dc.cpp deleted file mode 100644 index 821bef8774..0000000000 --- a/src/gtk1/dc.cpp +++ /dev/null @@ -1,377 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dc.cpp -// Purpose: -// Author: Robert Roebling -// RCS-ID: $Id$ -// Copyright: (c) 1998 Robert Roebling, Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifdef __GNUG__ -#pragma implementation "dc.h" -#endif - -#include "wx/dc.h" - -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -//----------------------------------------------------------------------------- -// constants -//----------------------------------------------------------------------------- - -#define mm2inches 0.0393700787402 -#define inches2mm 25.4 -#define mm2twips 56.6929133859 -#define twips2mm 0.0176388888889 -#define mm2pt 2.83464566929 -#define pt2mm 0.352777777778 - -//----------------------------------------------------------------------------- -// wxDC -//----------------------------------------------------------------------------- - -IMPLEMENT_ABSTRACT_CLASS(wxDC,wxObject) - -wxDC::wxDC() -{ - m_ok = FALSE; - m_optimize = FALSE; - m_autoSetting = FALSE; - m_colour = TRUE; - m_clipping = FALSE; - - m_mm_to_pix_x = 1.0; - m_mm_to_pix_y = 1.0; - - m_logicalOriginX = 0; - m_logicalOriginY = 0; - m_deviceOriginX = 0; - m_deviceOriginY = 0; - - m_logicalScaleX = 1.0; - m_logicalScaleY = 1.0; - m_userScaleX = 1.0; - m_userScaleY = 1.0; - m_scaleX = 1.0; - m_scaleY = 1.0; - - m_mappingMode = MM_TEXT; - m_needComputeScaleX = FALSE; - m_needComputeScaleY = FALSE; - - m_signX = 1; // default x-axis left to right - m_signY = 1; // default y-axis top down - - m_maxX = m_maxY = -100000; - m_minY = m_minY = 100000; - - m_logicalFunction = wxCOPY; -// m_textAlignment = wxALIGN_TOP_LEFT; - m_backgroundMode = wxTRANSPARENT; - - m_textForegroundColour = *wxBLACK; - m_textBackgroundColour = *wxWHITE; - m_pen = *wxBLACK_PEN; - m_font = *wxNORMAL_FONT; - m_brush = *wxTRANSPARENT_BRUSH; - m_backgroundBrush = *wxWHITE_BRUSH; - -// m_palette = wxAPP_COLOURMAP; -} - -wxDC::~wxDC() -{ -} - -bool wxDC::Ok() const -{ - return m_ok; -} - -void wxDC::DrawArc( long WXUNUSED(x1), long WXUNUSED(y1), long WXUNUSED(x2), long WXUNUSED(y2), - double WXUNUSED(xc), double WXUNUSED(yc) ) -{ -} - -void wxDC::DrawPoint( wxPoint& point ) -{ - DrawPoint( point.x, point.y ); -} - -void wxDC::DrawPolygon( wxList *list, long xoffset, long yoffset, int fillStyle ) -{ - int n = list->Number(); - wxPoint *points = new wxPoint[n]; - - int i = 0; - for( wxNode *node = list->First(); node; node = node->Next() ) - { - wxPoint *point = (wxPoint *)node->Data(); - points[i].x = point->x; - points[i++].y = point->y; - } - - DrawPolygon( n, points, xoffset, yoffset, fillStyle ); - delete[] points; -} - -void wxDC::DrawLines( wxList *list, long xoffset, long yoffset ) -{ - int n = list->Number(); - wxPoint *points = new wxPoint[n]; - - int i = 0; - for( wxNode *node = list->First(); node; node = node->Next() ) - { - wxPoint *point = (wxPoint *)node->Data(); - points[i].x = point->x; - points[i++].y = point->y; - } - - DrawLines( n, points, xoffset, yoffset ); - delete []points; -} - -void wxDC::DrawSpline( long x1, long y1, long x2, long y2, long x3, long y3 ) -{ - wxList list; - list.Append( (wxObject*)new wxPoint(x1, y1) ); - list.Append( (wxObject*)new wxPoint(x2, y2) ); - list.Append( (wxObject*)new wxPoint(x3, y3) ); - DrawSpline(&list); - wxNode *node = list.First(); - while (node) - { - wxPoint *p = (wxPoint*)node->Data(); - delete p; - node = node->Next(); - } -} - -void wxDC::DrawSpline( int n, wxPoint points[] ) -{ - wxList list; - for (int i = 0; i < n; i++) list.Append( (wxObject*)&points[i] ); - DrawSpline( &list ); -} - -void wxDC::SetClippingRegion( long x, long y, long width, long height ) -{ - m_clipping = TRUE; - m_clipX1 = x; - m_clipY1 = y; - m_clipX2 = x + width; - m_clipY2 = y + height; -} - -void wxDC::DestroyClippingRegion() -{ - m_clipping = FALSE; -} - -void wxDC::GetClippingBox( long *x, long *y, long *width, long *height ) const -{ - if (m_clipping) - { - if (x) *x = m_clipX1; - if (y) *y = m_clipY1; - if (width) *width = (m_clipX2 - m_clipX1); - if (height) *height = (m_clipY2 - m_clipY1); - } - else - { - *x = *y = *width = *height = 0; - } -} - -void wxDC::GetSize( int* width, int* height ) const -{ - if (width) *width = m_maxX-m_minX; - if (height) *height = m_maxY-m_minY; -} - -void wxDC::GetSizeMM( long* width, long* height ) const -{ - int w = 0; - int h = 0; - GetSize( &w, &h ); - if (width) *width = long( double(w) / (m_scaleX*m_mm_to_pix_x) ); - if (height) *height = long( double(h) / (m_scaleY*m_mm_to_pix_y) ); -} - -void wxDC::SetTextForeground( const wxColour &col ) -{ - m_textForegroundColour = col; -} - -void wxDC::SetTextBackground( const wxColour &col ) -{ - m_textBackgroundColour = col; -} - -void wxDC::SetMapMode( int mode ) -{ - switch (mode) - { - case MM_TWIPS: - SetLogicalScale( twips2mm*m_mm_to_pix_x, twips2mm*m_mm_to_pix_y ); - break; - case MM_POINTS: - SetLogicalScale( pt2mm*m_mm_to_pix_x, pt2mm*m_mm_to_pix_y ); - break; - case MM_METRIC: - SetLogicalScale( m_mm_to_pix_x, m_mm_to_pix_y ); - break; - case MM_LOMETRIC: - SetLogicalScale( m_mm_to_pix_x/10.0, m_mm_to_pix_y/10.0 ); - break; - default: - case MM_TEXT: - SetLogicalScale( 1.0, 1.0 ); - break; - } -/* we don't do this mega optimisation - if (mode != MM_TEXT) - { - m_needComputeScaleX = TRUE; - m_needComputeScaleY = TRUE; - } -*/ -} - -void wxDC::SetUserScale( double x, double y ) -{ - // allow negative ? -> no - m_userScaleX = x; - m_userScaleY = y; - ComputeScaleAndOrigin(); -} - -void wxDC::GetUserScale( double *x, double *y ) -{ - if (x) *x = m_userScaleX; - if (y) *y = m_userScaleY; -} - -void wxDC::SetLogicalScale( double x, double y ) -{ - // allow negative ? - m_logicalScaleX = x; - m_logicalScaleY = y; - ComputeScaleAndOrigin(); -} - -void wxDC::GetLogicalScale( double *x, double *y ) -{ - if (x) *x = m_logicalScaleX; - if (y) *y = m_logicalScaleY; -} - -void wxDC::SetLogicalOrigin( long x, long y ) -{ - m_logicalOriginX = x * m_signX; // is this still correct ? - m_logicalOriginY = y * m_signY; - ComputeScaleAndOrigin(); -} - -void wxDC::GetLogicalOrigin( long *x, long *y ) -{ - if (x) *x = m_logicalOriginX; - if (y) *y = m_logicalOriginY; -} - -void wxDC::SetDeviceOrigin( long x, long y ) -{ - // only wxPostScripDC has m_signX = -1, we override SetDeviceOrigin there - m_deviceOriginX = x; - m_deviceOriginY = y; - ComputeScaleAndOrigin(); -} - -void wxDC::GetDeviceOrigin( long *x, long *y ) -{ - if (x) *x = m_deviceOriginX; - if (y) *y = m_deviceOriginY; -} - -void wxDC::SetAxisOrientation( bool xLeftRight, bool yBottomUp ) -{ - // only wxPostScripDC has m_signX = -1, we override SetAxisOrientation there - m_signX = (xLeftRight ? 1 : -1); - m_signY = (yBottomUp ? -1 : 1); - ComputeScaleAndOrigin(); -} - -long wxDC::DeviceToLogicalX(long x) const -{ - return XDEV2LOG(x); -} - -long wxDC::DeviceToLogicalY(long y) const -{ - return YDEV2LOG(y); -} - -long wxDC::DeviceToLogicalXRel(long x) const -{ - return XDEV2LOGREL(x); -} - -long wxDC::DeviceToLogicalYRel(long y) const -{ - return YDEV2LOGREL(y); -} - -long wxDC::LogicalToDeviceX(long x) const -{ - return XLOG2DEV(x); -} - -long wxDC::LogicalToDeviceY(long y) const -{ - return YLOG2DEV(y); -} - -long wxDC::LogicalToDeviceXRel(long x) const -{ - return XLOG2DEVREL(x); -} - -long wxDC::LogicalToDeviceYRel(long y) const -{ - return YLOG2DEVREL(y); -} - -void wxDC::CalcBoundingBox( long x, long y ) -{ - if (x < m_minX) m_minX = x; - if (y < m_minY) m_minY = y; - if (x > m_maxX) m_maxX = x; - if (y > m_maxY) m_maxY = y; -} - -void wxDC::ComputeScaleAndOrigin() -{ - // CMB: copy scale to see if it changes - double origScaleX = m_scaleX; - double origScaleY = m_scaleY; - - m_scaleX = m_logicalScaleX * m_userScaleX; - m_scaleY = m_logicalScaleY * m_userScaleY; - - // CMB: if scale has changed call SetPen to recalulate the line width - if (m_scaleX != origScaleX || m_scaleY != origScaleY) - { - // this is a bit artificial, but we need to force wxDC to think - // the pen has changed - // It gives an Assert, Robert Roebling -/* - wxPen pen = m_pen; - m_pen = wxNullPen; - SetPen( pen ); -*/ - } -} - diff --git a/src/gtk1/dcclient.cpp b/src/gtk1/dcclient.cpp deleted file mode 100644 index f1af921f28..0000000000 --- a/src/gtk1/dcclient.cpp +++ /dev/null @@ -1,1260 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcclient.cpp -// Purpose: -// Author: Robert Roebling -// RCS-ID: $Id$ -// Copyright: (c) 1998 Robert Roebling, Markus Holzem, Chris Breeze -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dcclient.h" -#endif - -#include "wx/dcclient.h" -#include "wx/dcmemory.h" -#include "wx/image.h" -#include - -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -//----------------------------------------------------------------------------- -// local data -//----------------------------------------------------------------------------- - -#include "bdiag.xbm" -#include "fdiag.xbm" -#include "cdiag.xbm" -#include "horiz.xbm" -#include "verti.xbm" -#include "cross.xbm" -#define num_hatches 6 - -static GdkPixmap *hatches[num_hatches]; -static GdkPixmap **hatch_bitmap = (GdkPixmap **) NULL; - -//----------------------------------------------------------------------------- -// constants -//----------------------------------------------------------------------------- - -#define RAD2DEG 57.2957795131 - -//----------------------------------------------------------------------------- -// temporary implementation of the missing GDK function -//----------------------------------------------------------------------------- -#include "gdk/gdkprivate.h" -void gdk_draw_bitmap (GdkDrawable *drawable, - GdkGC *gc, - GdkDrawable *src, - gint xsrc, - gint ysrc, - gint xdest, - gint ydest, - gint width, - gint height) -{ - GdkWindowPrivate *drawable_private; - GdkWindowPrivate *src_private; - GdkGCPrivate *gc_private; - - g_return_if_fail (drawable != NULL); - g_return_if_fail (src != NULL); - g_return_if_fail (gc != NULL); - - drawable_private = (GdkWindowPrivate*) drawable; - src_private = (GdkWindowPrivate*) src; - if (drawable_private->destroyed || src_private->destroyed) - return; - - gc_private = (GdkGCPrivate*) gc; - - if (width == -1) width = src_private->width; - if (height == -1) height = src_private->height; - - XCopyPlane( drawable_private->xdisplay, - src_private->xwindow, - drawable_private->xwindow, - gc_private->xgc, - xsrc, ysrc, - width, height, - xdest, ydest, - 1 ); -} - -//----------------------------------------------------------------------------- -// wxWindowDC -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxWindowDC,wxDC) - -wxWindowDC::wxWindowDC() -{ - m_penGC = (GdkGC *) NULL; - m_brushGC = (GdkGC *) NULL; - m_textGC = (GdkGC *) NULL; - m_bgGC = (GdkGC *) NULL; - m_cmap = (GdkColormap *) NULL; - m_isMemDC = FALSE; -} - -wxWindowDC::wxWindowDC( wxWindow *window ) -{ - m_penGC = (GdkGC *) NULL; - m_brushGC = (GdkGC *) NULL; - m_textGC = (GdkGC *) NULL; - m_bgGC = (GdkGC *) NULL; - m_cmap = (GdkColormap *) NULL; - - if (!window) return; - GtkWidget *widget = window->m_wxwindow; - if (!widget) return; - m_window = widget->window; - if (!m_window) return; - if (window->m_wxwindow) - m_cmap = gtk_widget_get_colormap( window->m_wxwindow ); - else - m_cmap = gtk_widget_get_colormap( window->m_widget ); - - m_isMemDC = FALSE; - - SetUpDC(); - -} - -wxWindowDC::~wxWindowDC() -{ - Destroy(); -} - -void wxWindowDC::FloodFill( long WXUNUSED(x), long WXUNUSED(y), - const wxColour &WXUNUSED(col), int WXUNUSED(style) ) -{ - wxFAIL_MSG( "wxWindowDC::FloodFill not implemented" ); -} - -bool wxWindowDC::GetPixel( long WXUNUSED(x1), long WXUNUSED(y1), wxColour *WXUNUSED(col) ) const -{ - wxFAIL_MSG( "wxWindowDC::GetPixel not implemented" ); - return FALSE; -} - -void wxWindowDC::DrawLine( long x1, long y1, long x2, long y2 ) -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - if (m_pen.GetStyle() != wxTRANSPARENT) - { - gdk_draw_line( m_window, m_penGC, - XLOG2DEV(x1), YLOG2DEV(y1), XLOG2DEV(x2), YLOG2DEV(y2) ); - - CalcBoundingBox(x1, y1); - CalcBoundingBox(x2, y2); - } -} - -void wxWindowDC::CrossHair( long x, long y ) -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - if (m_pen.GetStyle() != wxTRANSPARENT) - { - int w = 0; - int h = 0; - GetSize( &w, &h ); - long xx = XLOG2DEV(x); - long yy = YLOG2DEV(y); - gdk_draw_line( m_window, m_penGC, 0, yy, XLOG2DEVREL(w), yy ); - gdk_draw_line( m_window, m_penGC, xx, 0, xx, YLOG2DEVREL(h) ); - } -} - -void wxWindowDC::DrawArc( long x1, long y1, long x2, long y2, double xc, double yc ) -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - long xx1 = XLOG2DEV(x1); - long yy1 = YLOG2DEV(y1); - long xx2 = XLOG2DEV(x2); - long yy2 = YLOG2DEV(y2); - long xxc = XLOG2DEV((long)xc); - long yyc = YLOG2DEV((long)yc); - double dx = xx1 - xxc; - double dy = yy1 - yyc; - double radius = sqrt(dx*dx+dy*dy); - long r = (long)radius; - double radius1, radius2; - - if (xx1 == xx2 && yy1 == yy2) - { - radius1 = 0.0; - radius2 = 360.0; - } - else - if (radius == 0.0) - { - radius1 = radius2 = 0.0; - } - else - { - radius1 = (xx1 - xxc == 0) ? - (yy1 - yyc < 0) ? 90.0 : -90.0 : - -atan2(double(yy1-yyc), double(xx1-xxc)) * RAD2DEG; - radius2 = (xx2 - xxc == 0) ? - (yy2 - yyc < 0) ? 90.0 : -90.0 : - -atan2(double(yy2-yyc), double(xx2-xxc)) * RAD2DEG; - } - long alpha1 = long(radius1 * 64.0); - long alpha2 = long((radius2 - radius1) * 64.0); - while (alpha2 <= 0) alpha2 += 360*64; - while (alpha1 > 360*64) alpha1 -= 360*64; - - if (m_brush.GetStyle() != wxTRANSPARENT) - gdk_draw_arc( m_window, m_brushGC, TRUE, xxc-r, yyc-r, 2*r,2*r, alpha1, alpha2 ); - - if (m_pen.GetStyle() != wxTRANSPARENT) - gdk_draw_arc( m_window, m_penGC, FALSE, xxc-r, yyc-r, 2*r,2*r, alpha1, alpha2 ); - - CalcBoundingBox (x1, y1); - CalcBoundingBox (x2, y2); -} - -void wxWindowDC::DrawEllipticArc( long x, long y, long width, long height, double sa, double ea ) -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - long xx = XLOG2DEV(x); - long yy = YLOG2DEV(y); - long ww = m_signX * XLOG2DEVREL(width); - long hh = m_signY * YLOG2DEVREL(height); - - // CMB: handle -ve width and/or height - if (ww < 0) { ww = -ww; xx = xx - ww; } - if (hh < 0) { hh = -hh; yy = yy - hh; } - - long start = long(sa * 64.0); - long end = long(ea * 64.0); - if (m_brush.GetStyle() != wxTRANSPARENT) - gdk_draw_arc( m_window, m_brushGC, TRUE, xx, yy, ww, hh, start, end ); - - if (m_pen.GetStyle() != wxTRANSPARENT) - gdk_draw_arc( m_window, m_penGC, FALSE, xx, yy, ww, hh, start, end ); - - CalcBoundingBox (x, y); - CalcBoundingBox (x + width, y + height); -} - -void wxWindowDC::DrawPoint( long x, long y ) -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - if (m_pen.GetStyle() != wxTRANSPARENT) - gdk_draw_point( m_window, m_penGC, XLOG2DEV(x), YLOG2DEV(y) ); - - CalcBoundingBox (x, y); -} - -void wxWindowDC::DrawLines( int n, wxPoint points[], long xoffset, long yoffset ) -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - if (m_pen.GetStyle() == wxTRANSPARENT) return; - if (n <= 0) return; - - CalcBoundingBox( points[0].x + xoffset, points[0].y + yoffset ); - - for (int i = 0; i < n-1; i++) - { - long x1 = XLOG2DEV(points[i].x + xoffset); - long x2 = XLOG2DEV(points[i+1].x + xoffset); - long y1 = YLOG2DEV(points[i].y + yoffset); // oh, what a waste - long y2 = YLOG2DEV(points[i+1].y + yoffset); - gdk_draw_line( m_window, m_penGC, x1, y1, x2, y2 ); - - CalcBoundingBox( points[i+1].x + xoffset, points[i+1].y + yoffset ); - } -} - -void wxWindowDC::DrawLines( wxList *points, long xoffset, long yoffset ) -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - if (m_pen.GetStyle() == wxTRANSPARENT) return; - - wxNode *node = points->First(); - if (!node) return; - - wxPoint *pt = (wxPoint*)node->Data(); - CalcBoundingBox( pt->x + xoffset, pt->y + yoffset ); - - while (node->Next()) - { - wxPoint *point = (wxPoint*)node->Data(); - wxPoint *npoint = (wxPoint*)node->Next()->Data(); - long x1 = XLOG2DEV(point->x + xoffset); - long x2 = XLOG2DEV(npoint->x + xoffset); - long y1 = YLOG2DEV(point->y + yoffset); // and a waste again... - long y2 = YLOG2DEV(npoint->y + yoffset); - gdk_draw_line( m_window, m_penGC, x1, y1, x2, y2 ); - node = node->Next(); - - CalcBoundingBox( npoint->x + xoffset, npoint->y + yoffset ); - } -} - -void wxWindowDC::DrawPolygon( int n, wxPoint points[], long xoffset, long yoffset, int WXUNUSED(fillStyle) ) -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - if (n <= 0) return; - - GdkPoint *gdkpoints = new GdkPoint[n+1]; - int i; - for (i = 0 ; i < n ; i++) - { - gdkpoints[i].x = XLOG2DEV(points[i].x + xoffset); - gdkpoints[i].y = YLOG2DEV(points[i].y + yoffset); - - CalcBoundingBox( points[i].x + xoffset, points[i].y + yoffset ); - } - - if (m_brush.GetStyle() != wxTRANSPARENT) - gdk_draw_polygon (m_window, m_brushGC, TRUE, gdkpoints, n); - - // To do: Fillstyle - - if (m_pen.GetStyle() != wxTRANSPARENT) - for (i = 0 ; i < n ; i++) - { - gdk_draw_line( m_window, m_penGC, - gdkpoints[i%n].x, - gdkpoints[i%n].y, - gdkpoints[(i+1)%n].x, - gdkpoints[(i+1)%n].y); - } - - delete[] gdkpoints; -} - -void wxWindowDC::DrawPolygon( wxList *lines, long xoffset, long yoffset, int WXUNUSED(fillStyle)) -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - int n = lines->Number(); - if (n <= 0) return; - - GdkPoint *gdkpoints = new GdkPoint[n]; - wxNode *node = lines->First(); - int cnt = 0; - while (node) - { - wxPoint *p = (wxPoint *) node->Data(); - gdkpoints[cnt].x = XLOG2DEV(p->x + xoffset); - gdkpoints[cnt].y = YLOG2DEV(p->y + yoffset); - node = node->Next(); - cnt++; - - CalcBoundingBox( p->x + xoffset, p->y + yoffset ); - } - - if (m_brush.GetStyle() != wxTRANSPARENT) - gdk_draw_polygon (m_window, m_brushGC, TRUE, gdkpoints, n); - - // To do: Fillstyle - - if (m_pen.GetStyle() != wxTRANSPARENT) - { - int i; - for (i = 0 ; i < n ; i++) - { - gdk_draw_line( m_window, m_penGC, - gdkpoints[i%n].x, - gdkpoints[i%n].y, - gdkpoints[(i+1)%n].x, - gdkpoints[(i+1)%n].y ); - } - } - delete[] gdkpoints; -} - -void wxWindowDC::DrawRectangle( long x, long y, long width, long height ) -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - long xx = XLOG2DEV(x); - long yy = YLOG2DEV(y); - long ww = m_signX * XLOG2DEVREL(width); - long hh = m_signY * YLOG2DEVREL(height); - - // CMB: draw nothing if transformed w or h is 0 - if (ww == 0 || hh == 0) return; - - // CMB: handle -ve width and/or height - if (ww < 0) { ww = -ww; xx = xx - ww; } - if (hh < 0) { hh = -hh; yy = yy - hh; } - - if (m_brush.GetStyle() != wxTRANSPARENT) - gdk_draw_rectangle( m_window, m_brushGC, TRUE, xx, yy, ww, hh ); - - if (m_pen.GetStyle() != wxTRANSPARENT) - gdk_draw_rectangle( m_window, m_penGC, FALSE, xx, yy, ww-1, hh-1 ); - - CalcBoundingBox( x, y ); - CalcBoundingBox( x + width, y + height ); -} - -void wxWindowDC::DrawRoundedRectangle( long x, long y, long width, long height, double radius ) -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - if (radius < 0.0) radius = - radius * ((width < height) ? width : height); - - long xx = XLOG2DEV(x); - long yy = YLOG2DEV(y); - long ww = m_signX * XLOG2DEVREL(width); - long hh = m_signY * YLOG2DEVREL(height); - long rr = XLOG2DEVREL((long)radius); - - // CMB: handle -ve width and/or height - if (ww < 0) { ww = -ww; xx = xx - ww; } - if (hh < 0) { hh = -hh; yy = yy - hh; } - - // CMB: if radius is zero use DrawRectangle() instead to avoid - // X drawing errors with small radii - if (rr == 0) - { - DrawRectangle( x, y, width, height ); - return; - } - - // CMB: draw nothing if transformed w or h is 0 - if (ww == 0 || hh == 0) return; - - // CMB: adjust size if outline is drawn otherwise the result is - // 1 pixel too wide and high - if (m_pen.GetStyle() != wxTRANSPARENT) - { - ww--; - hh--; - } - - // CMB: ensure dd is not larger than rectangle otherwise we - // get an hour glass shape - long dd = 2 * rr; - if (dd > ww) dd = ww; - if (dd > hh) dd = hh; - rr = dd / 2; - - if (m_brush.GetStyle() != wxTRANSPARENT) - { - gdk_draw_rectangle( m_window, m_brushGC, TRUE, xx+rr, yy, ww-dd+1, hh ); - gdk_draw_rectangle( m_window, m_brushGC, TRUE, xx, yy+rr, ww, hh-dd+1 ); - gdk_draw_arc( m_window, m_brushGC, TRUE, xx, yy, dd, dd, 90*64, 90*64 ); - gdk_draw_arc( m_window, m_brushGC, TRUE, xx+ww-dd, yy, dd, dd, 0, 90*64 ); - gdk_draw_arc( m_window, m_brushGC, TRUE, xx+ww-dd, yy+hh-dd, dd, dd, 270*64, 90*64 ); - gdk_draw_arc( m_window, m_brushGC, TRUE, xx, yy+hh-dd, dd, dd, 180*64, 90*64 ); - } - - if (m_pen.GetStyle() != wxTRANSPARENT) - { - gdk_draw_line( m_window, m_penGC, xx+rr, yy, xx+ww-rr, yy ); - gdk_draw_line( m_window, m_penGC, xx+rr, yy+hh, xx+ww-rr, yy+hh ); - gdk_draw_line( m_window, m_penGC, xx, yy+rr, xx, yy+hh-rr ); - gdk_draw_line( m_window, m_penGC, xx+ww, yy+rr, xx+ww, yy+hh-rr ); - gdk_draw_arc( m_window, m_penGC, FALSE, xx, yy, dd, dd, 90*64, 90*64 ); - gdk_draw_arc( m_window, m_penGC, FALSE, xx+ww-dd, yy, dd, dd, 0, 90*64 ); - gdk_draw_arc( m_window, m_penGC, FALSE, xx+ww-dd, yy+hh-dd, dd, dd, 270*64, 90*64 ); - gdk_draw_arc( m_window, m_penGC, FALSE, xx, yy+hh-dd, dd, dd, 180*64, 90*64 ); - } - - // this ignores the radius - CalcBoundingBox( x, y ); - CalcBoundingBox( x + width, y + height ); -} - -void wxWindowDC::DrawEllipse( long x, long y, long width, long height ) -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - long xx = XLOG2DEV(x); - long yy = YLOG2DEV(y); - long ww = m_signX * XLOG2DEVREL(width); - long hh = m_signY * YLOG2DEVREL(height); - - // CMB: handle -ve width and/or height - if (ww < 0) { ww = -ww; xx = xx - ww; } - if (hh < 0) { hh = -hh; yy = yy - hh; } - - if (m_brush.GetStyle() != wxTRANSPARENT) - gdk_draw_arc( m_window, m_brushGC, TRUE, xx, yy, ww, hh, 0, 360*64 ); - - if (m_pen.GetStyle() != wxTRANSPARENT) - gdk_draw_arc( m_window, m_penGC, FALSE, xx, yy, ww, hh, 0, 360*64 ); - - CalcBoundingBox( x - width, y - height ); - CalcBoundingBox( x + width, y + height ); -} - -bool wxWindowDC::CanDrawBitmap() const -{ - return TRUE; -} - -void wxWindowDC::DrawIcon( const wxIcon &icon, long x, long y ) -{ - DrawBitmap( icon, x, y, TRUE ); -} - -void wxWindowDC::DrawBitmap( const wxBitmap &bitmap, long x, long y, bool useMask ) -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - if (!bitmap.Ok()) return; - - int xx = XLOG2DEV(x); - int yy = YLOG2DEV(y); - - int w = bitmap.GetWidth(); - int h = bitmap.GetHeight(); - - int ww = XLOG2DEVREL(w); - int hh = YLOG2DEVREL(h); - - wxBitmap use_bitmap; - - if ((w != ww) || (h != hh)) - { - wxImage image( bitmap ); - image = image.Scale( ww, hh ); - - use_bitmap = image.ConvertToBitmap(); - } - else - { - use_bitmap = bitmap; - } - - GdkBitmap *mask = (GdkBitmap *) NULL; - if (use_bitmap.GetMask()) mask = use_bitmap.GetMask()->GetBitmap(); - - if (useMask && mask) - { - gdk_gc_set_clip_mask( m_penGC, mask ); - gdk_gc_set_clip_origin( m_penGC, xx, yy ); - } - - GdkPixmap *pm = use_bitmap.GetPixmap(); - gdk_draw_pixmap( m_window, m_penGC, pm, 0, 0, xx, yy, -1, -1 ); - - if (useMask && mask) - { - gdk_gc_set_clip_mask( m_penGC, (GdkBitmap *) NULL ); - gdk_gc_set_clip_origin( m_penGC, 0, 0 ); - } - - CalcBoundingBox( x, y ); - CalcBoundingBox( x + w, y + h ); -} - -bool wxWindowDC::Blit( long xdest, long ydest, long width, long height, - wxDC *source, long xsrc, long ysrc, int logical_func, bool useMask ) -{ - wxCHECK_MSG( Ok(), FALSE, "invalid window dc" ); - - CalcBoundingBox( xdest, ydest ); - CalcBoundingBox( xdest + width, ydest + height ); - - int old_logical_func = m_logicalFunction; - SetLogicalFunction( logical_func ); - - wxClientDC *csrc = (wxClientDC*)source; - - if (csrc->m_isMemDC) - { - wxMemoryDC* srcDC = (wxMemoryDC*)source; - GdkPixmap* pmap = srcDC->m_selected.GetPixmap(); - if (pmap) - { - long xx = XLOG2DEV(xdest); - long yy = YLOG2DEV(ydest); - - GdkBitmap *mask = (GdkBitmap *) NULL; - if (srcDC->m_selected.GetMask()) mask = srcDC->m_selected.GetMask()->GetBitmap(); - - if (useMask && mask) - { - gdk_gc_set_clip_mask( m_penGC, mask ); - gdk_gc_set_clip_origin( m_penGC, xx, yy ); - } - - gdk_draw_pixmap( m_window, m_penGC, pmap, - source->DeviceToLogicalX(xsrc), - source->DeviceToLogicalY(ysrc), - xx, - yy, - source->DeviceToLogicalXRel(width), - source->DeviceToLogicalYRel(height) ); - - if (useMask && mask) - { - gdk_gc_set_clip_mask( m_penGC, (GdkBitmap *) NULL ); - gdk_gc_set_clip_origin( m_penGC, 0, 0 ); - } - - SetLogicalFunction( old_logical_func ); - return TRUE; - } - - GdkBitmap* bmap = srcDC->m_selected.GetBitmap(); - if (bmap) - { - long xx = XLOG2DEV(xdest); - long yy = YLOG2DEV(ydest); - - GdkBitmap *mask = (GdkBitmap *) NULL; - if (srcDC->m_selected.GetMask()) mask = srcDC->m_selected.GetMask()->GetBitmap(); - - if (useMask && mask) - { - gdk_gc_set_clip_mask( m_penGC, mask ); - gdk_gc_set_clip_origin( m_penGC, xx, yy ); - } - - gdk_draw_bitmap( m_window, m_textGC, bmap, - source->DeviceToLogicalX(xsrc), - source->DeviceToLogicalY(ysrc), - xx, - yy, - source->DeviceToLogicalXRel(width), - source->DeviceToLogicalYRel(height) ); - - if (useMask && mask) - { - gdk_gc_set_clip_mask( m_penGC, (GdkBitmap *) NULL ); - gdk_gc_set_clip_origin( m_penGC, 0, 0 ); - } - - SetLogicalFunction( old_logical_func ); - return TRUE; - } - } - - gdk_window_copy_area ( m_window, m_penGC, - XLOG2DEV(xdest), YLOG2DEV(ydest), - csrc->GetWindow(), - source->DeviceToLogicalX(xsrc), - source->DeviceToLogicalY(ysrc), - source->DeviceToLogicalXRel(width), - source->DeviceToLogicalYRel(height) ); - - SetLogicalFunction( old_logical_func ); - return TRUE; -} - -void wxWindowDC::DrawText( const wxString &text, long x, long y, bool WXUNUSED(use16) ) -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - GdkFont *font = m_font.GetInternalFont( m_scaleY ); - - x = XLOG2DEV(x); - y = YLOG2DEV(y); - - // CMB 21/5/98: draw text background if mode is wxSOLID - if (m_backgroundMode == wxSOLID) - { - long width = gdk_string_width( font, text ); - long height = font->ascent + font->descent; - gdk_gc_set_foreground( m_textGC, m_textBackgroundColour.GetColor() ); - gdk_draw_rectangle( m_window, m_textGC, TRUE, x, y, width, height ); - gdk_gc_set_foreground( m_textGC, m_textForegroundColour.GetColor() ); - } - gdk_draw_string( m_window, font, m_textGC, x, y + font->ascent, text ); - - // CMB 17/7/98: simple underline: ignores scaling and underlying - // X font's XA_UNDERLINE_POSITION and XA_UNDERLINE_THICKNESS - // properties (see wxXt implementation) - if (m_font.GetUnderlined()) - { - long width = gdk_string_width( font, text ); - long ul_y = y + font->ascent; - if (font->descent > 0) ul_y++; - gdk_draw_line( m_window, m_textGC, x, ul_y, x + width, ul_y); - } - - long w, h; - GetTextExtent (text, &w, &h); - CalcBoundingBox (x + w, y + h); - CalcBoundingBox (x, y); -} - -bool wxWindowDC::CanGetTextExtent() const -{ - return TRUE; -} - -void wxWindowDC::GetTextExtent( const wxString &string, long *width, long *height, - long *descent, long *externalLeading, - wxFont *theFont, bool WXUNUSED(use16) ) -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - wxFont fontToUse = m_font; - if (theFont) fontToUse = *theFont; - - GdkFont *font = fontToUse.GetInternalFont( m_scaleY ); - if (width) (*width) = long(gdk_string_width( font, string ) / m_scaleX); - if (height) (*height) = long((font->ascent + font->descent) / m_scaleY); - if (descent) (*descent) = long(font->descent / m_scaleY); - if (externalLeading) (*externalLeading) = 0; // ?? -} - -long wxWindowDC::GetCharWidth() -{ - wxCHECK_MSG( Ok(), 0, "invalid window dc" ); - - GdkFont *font = m_font.GetInternalFont( m_scaleY ); - return long(gdk_string_width( font, "H" ) / m_scaleX); -} - -long wxWindowDC::GetCharHeight() -{ - wxCHECK_MSG( Ok(), 0, "invalid window dc" ); - - GdkFont *font = m_font.GetInternalFont( m_scaleY ); - return long((font->ascent + font->descent) / m_scaleY); -} - -void wxWindowDC::Clear() -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - if (!m_isMemDC) - { - gdk_window_clear( m_window ); - } - else - { - int width,height; - GetSize( &width, &height ); - gdk_draw_rectangle( m_window, m_bgGC, TRUE, 0, 0, width, height ); - } -} - -void wxWindowDC::SetFont( const wxFont &font ) -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - m_font = font; -} - -void wxWindowDC::SetPen( const wxPen &pen ) -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - if (m_pen == pen) return; - - m_pen = pen; - - if (!m_pen.Ok()) return; - - gint width = m_pen.GetWidth(); - // CMB: if width is non-zero scale it with the dc - if (width <= 0) - { - width = 1; - } - else - { - // X doesn't allow different width in x and y and so we take - // the average - double w = 0.5 + (abs(XLOG2DEVREL(width)) + abs(YLOG2DEVREL(width))) / 2.0; - width = (int)w; - } - - GdkLineStyle lineStyle = GDK_LINE_SOLID; - switch (m_pen.GetStyle()) - { - case wxSOLID: { lineStyle = GDK_LINE_SOLID; break; } - case wxDOT: { lineStyle = GDK_LINE_ON_OFF_DASH; break; } - case wxLONG_DASH: { lineStyle = GDK_LINE_ON_OFF_DASH; break; } - case wxSHORT_DASH: { lineStyle = GDK_LINE_ON_OFF_DASH; break; } - case wxDOT_DASH: { lineStyle = GDK_LINE_DOUBLE_DASH; break; } - } - - GdkCapStyle capStyle = GDK_CAP_ROUND; - switch (m_pen.GetCap()) - { - case wxCAP_ROUND: { capStyle = (width <= 1) ? GDK_CAP_NOT_LAST : GDK_CAP_ROUND; break; } - case wxCAP_PROJECTING: { capStyle = GDK_CAP_PROJECTING; break; } - case wxCAP_BUTT: { capStyle = GDK_CAP_BUTT; break; } - } - - GdkJoinStyle joinStyle = GDK_JOIN_ROUND; - switch (m_pen.GetJoin()) - { - case wxJOIN_BEVEL: { joinStyle = GDK_JOIN_BEVEL; break; } - case wxJOIN_ROUND: { joinStyle = GDK_JOIN_ROUND; break; } - case wxJOIN_MITER: { joinStyle = GDK_JOIN_MITER; break; } - } - - gdk_gc_set_line_attributes( m_penGC, width, lineStyle, capStyle, joinStyle ); - - m_pen.GetColour().CalcPixel( m_cmap ); - gdk_gc_set_foreground( m_penGC, m_pen.GetColour().GetColor() ); -} - -void wxWindowDC::SetBrush( const wxBrush &brush ) -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - if (m_brush == brush) return; - - m_brush = brush; - - if (!m_brush.Ok()) return; - - m_brush.GetColour().CalcPixel( m_cmap ); - gdk_gc_set_foreground( m_brushGC, m_brush.GetColour().GetColor() ); - - GdkFill fillStyle = GDK_SOLID; - switch (m_brush.GetStyle()) - { - case wxSOLID: - case wxTRANSPARENT: - break; - default: - fillStyle = GDK_STIPPLED; - } - - gdk_gc_set_fill( m_brushGC, fillStyle ); - - if (m_brush.GetStyle() == wxSTIPPLE) - { - gdk_gc_set_stipple( m_brushGC, m_brush.GetStipple()->GetPixmap() ); - } - - if (IS_HATCH(m_brush.GetStyle())) - { - int num = m_brush.GetStyle() - wxBDIAGONAL_HATCH; - gdk_gc_set_stipple( m_brushGC, hatches[num] ); - } -} - -void wxWindowDC::SetBackground( const wxBrush &brush ) -{ - // CMB 21/7/98: Added SetBackground. Sets background brush - // for Clear() and bg colour for shapes filled with cross-hatch brush - - wxCHECK_RET( Ok(), "invalid window dc" ); - - if (m_backgroundBrush == brush) return; - - m_backgroundBrush = brush; - - if (!m_backgroundBrush.Ok()) return; - - m_backgroundBrush.GetColour().CalcPixel( m_cmap ); - gdk_gc_set_background( m_brushGC, m_backgroundBrush.GetColour().GetColor() ); - gdk_gc_set_background( m_penGC, m_backgroundBrush.GetColour().GetColor() ); - gdk_gc_set_background( m_bgGC, m_backgroundBrush.GetColour().GetColor() ); - gdk_gc_set_foreground( m_bgGC, m_backgroundBrush.GetColour().GetColor() ); - - GdkFill fillStyle = GDK_SOLID; - switch (m_backgroundBrush.GetStyle()) - { - case wxSOLID: - case wxTRANSPARENT: - break; - default: - fillStyle = GDK_STIPPLED; - } - - gdk_gc_set_fill( m_bgGC, fillStyle ); - - if (m_backgroundBrush.GetStyle() == wxSTIPPLE) - { - gdk_gc_set_stipple( m_bgGC, m_backgroundBrush.GetStipple()->GetPixmap() ); - } - - if (IS_HATCH(m_backgroundBrush.GetStyle())) - { - int num = m_backgroundBrush.GetStyle() - wxBDIAGONAL_HATCH; - gdk_gc_set_stipple( m_bgGC, hatches[num] ); - } -} - -void wxWindowDC::SetLogicalFunction( int function ) -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - if (m_logicalFunction == function) return; - - GdkFunction mode = GDK_COPY; - switch (function) - { - case wxXOR: mode = GDK_INVERT; break; - case wxINVERT: mode = GDK_INVERT; break; - default: break; - } - - m_logicalFunction = function; - gdk_gc_set_function( m_penGC, mode ); - gdk_gc_set_function( m_brushGC, mode ); - gdk_gc_set_function( m_textGC, mode ); -} - -void wxWindowDC::SetTextForeground( const wxColour &col ) -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - if (m_textForegroundColour == col) return; - - m_textForegroundColour = col; - if (!m_textForegroundColour.Ok()) return; - - m_textForegroundColour.CalcPixel( m_cmap ); - gdk_gc_set_foreground( m_textGC, m_textForegroundColour.GetColor() ); -} - -void wxWindowDC::SetTextBackground( const wxColour &col ) -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - if (m_textBackgroundColour == col) return; - - m_textBackgroundColour = col; - if (!m_textBackgroundColour.Ok()) return; - - m_textBackgroundColour.CalcPixel( m_cmap ); - gdk_gc_set_background( m_textGC, m_textBackgroundColour.GetColor() ); -} - -void wxWindowDC::SetBackgroundMode( int mode ) -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - m_backgroundMode = mode; - - // CMB 21/7/98: fill style of cross-hatch brushes is affected by - // transparent/solid background mode - - if (m_brush.GetStyle() != wxSOLID && m_brush.GetStyle() != wxTRANSPARENT) - { - gdk_gc_set_fill( m_brushGC, - (m_backgroundMode == wxTRANSPARENT) ? GDK_STIPPLED : GDK_OPAQUE_STIPPLED); - } -} - -void wxWindowDC::SetPalette( const wxPalette& WXUNUSED(palette) ) -{ - wxFAIL_MSG( "wxWindowDC::SetPalette not implemented" ); -} - -void wxWindowDC::SetClippingRegion( long x, long y, long width, long height ) -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - wxDC::SetClippingRegion( x, y, width, height ); - - GdkRectangle rect; - rect.x = XLOG2DEV(x); - rect.y = YLOG2DEV(y); - rect.width = XLOG2DEVREL(width); - rect.height = YLOG2DEVREL(height); - gdk_gc_set_clip_rectangle( m_penGC, &rect ); - gdk_gc_set_clip_rectangle( m_brushGC, &rect ); - gdk_gc_set_clip_rectangle( m_textGC, &rect ); - gdk_gc_set_clip_rectangle( m_bgGC, &rect ); -} - -void wxWindowDC::SetClippingRegion( const wxRegion ®ion ) -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - if (region.Empty()) - { - DestroyClippingRegion(); - return; - } - - gdk_gc_set_clip_region( m_penGC, region.GetRegion() ); - gdk_gc_set_clip_region( m_brushGC, region.GetRegion() ); - gdk_gc_set_clip_region( m_textGC, region.GetRegion() ); - gdk_gc_set_clip_region( m_bgGC, region.GetRegion() ); -} - -void wxWindowDC::DestroyClippingRegion() -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - wxDC::DestroyClippingRegion(); - - gdk_gc_set_clip_rectangle( m_penGC, (GdkRectangle *) NULL ); - gdk_gc_set_clip_rectangle( m_brushGC, (GdkRectangle *) NULL ); - gdk_gc_set_clip_rectangle( m_textGC, (GdkRectangle *) NULL ); - gdk_gc_set_clip_rectangle( m_bgGC, (GdkRectangle *) NULL ); -} - -void wxWindowDC::SetUpDC() -{ - Destroy(); - m_ok = TRUE; - m_logicalFunction = wxCOPY; - m_penGC = gdk_gc_new( m_window ); - m_brushGC = gdk_gc_new( m_window ); - m_textGC = gdk_gc_new( m_window ); - m_bgGC = gdk_gc_new( m_window ); - - wxColour tmp_col( m_textForegroundColour ); - m_textForegroundColour = wxNullColour; - SetTextForeground( tmp_col ); - tmp_col = m_textBackgroundColour; - m_textBackgroundColour = wxNullColour; - SetTextBackground( tmp_col ); - - wxPen tmp_pen( m_pen ); - m_pen = wxNullPen; - SetPen( tmp_pen ); - - wxFont tmp_font( m_font ); - m_font = wxNullFont; - SetFont( tmp_font ); - - wxBrush tmp_brush( m_brush ); - m_brush = wxNullBrush; - SetBrush( tmp_brush ); - - tmp_brush = m_backgroundBrush; - m_backgroundBrush = wxNullBrush; - SetBackground( tmp_brush ); - - if (!hatch_bitmap) - { - hatch_bitmap = hatches; - hatch_bitmap[0] = gdk_bitmap_create_from_data( (GdkWindow *) NULL, bdiag_bits, bdiag_width, bdiag_height ); - hatch_bitmap[1] = gdk_bitmap_create_from_data( (GdkWindow *) NULL, cdiag_bits, cdiag_width, cdiag_height ); - hatch_bitmap[2] = gdk_bitmap_create_from_data( (GdkWindow *) NULL, fdiag_bits, fdiag_width, fdiag_height ); - hatch_bitmap[3] = gdk_bitmap_create_from_data( (GdkWindow *) NULL, cross_bits, cross_width, cross_height ); - hatch_bitmap[4] = gdk_bitmap_create_from_data( (GdkWindow *) NULL, horiz_bits, horiz_width, horiz_height ); - hatch_bitmap[5] = gdk_bitmap_create_from_data( (GdkWindow *) NULL, verti_bits, verti_width, verti_height ); - } -} - -void wxWindowDC::Destroy() -{ - if (m_penGC) gdk_gc_unref( m_penGC ); - m_penGC = (GdkGC*) NULL; - if (m_brushGC) gdk_gc_unref( m_brushGC ); - m_brushGC = (GdkGC*) NULL; - if (m_textGC) gdk_gc_unref( m_textGC ); - m_textGC = (GdkGC*) NULL; - if (m_bgGC) gdk_gc_unref( m_bgGC ); - m_bgGC = (GdkGC*) NULL; -} - -GdkWindow *wxWindowDC::GetWindow() -{ - return m_window; -} - -// ----------------------------------- spline code ---------------------------------------- - -void wx_quadratic_spline(double a1, double b1, double a2, double b2, - double a3, double b3, double a4, double b4); -void wx_clear_stack(); -int wx_spline_pop(double *x1, double *y1, double *x2, double *y2, double *x3, - double *y3, double *x4, double *y4); -void wx_spline_push(double x1, double y1, double x2, double y2, double x3, double y3, - double x4, double y4); -static bool wx_spline_add_point(double x, double y); -static void wx_spline_draw_point_array(wxDC *dc); - -wxList wx_spline_point_list; - -#define half(z1, z2) ((z1+z2)/2.0) -#define THRESHOLD 5 - -/* iterative version */ - -void wx_quadratic_spline(double a1, double b1, double a2, double b2, double a3, double b3, double a4, - double b4) -{ - register double xmid, ymid; - double x1, y1, x2, y2, x3, y3, x4, y4; - - wx_clear_stack(); - wx_spline_push(a1, b1, a2, b2, a3, b3, a4, b4); - - while (wx_spline_pop(&x1, &y1, &x2, &y2, &x3, &y3, &x4, &y4)) { - xmid = (double)half(x2, x3); - ymid = (double)half(y2, y3); - if (fabs(x1 - xmid) < THRESHOLD && fabs(y1 - ymid) < THRESHOLD && - fabs(xmid - x4) < THRESHOLD && fabs(ymid - y4) < THRESHOLD) { - wx_spline_add_point( x1, y1 ); - wx_spline_add_point( xmid, ymid ); - } else { - wx_spline_push(xmid, ymid, (double)half(xmid, x3), (double)half(ymid, y3), - (double)half(x3, x4), (double)half(y3, y4), x4, y4); - wx_spline_push(x1, y1, (double)half(x1, x2), (double)half(y1, y2), - (double)half(x2, xmid), (double)half(y2, ymid), xmid, ymid); - } - } -} - -/* utilities used by spline drawing routines */ - -typedef struct wx_spline_stack_struct { - double x1, y1, x2, y2, x3, y3, x4, y4; -} Stack; - -#define SPLINE_STACK_DEPTH 20 -static Stack wx_spline_stack[SPLINE_STACK_DEPTH]; -static Stack *wx_stack_top; -static int wx_stack_count; - -void wx_clear_stack() -{ - wx_stack_top = wx_spline_stack; - wx_stack_count = 0; -} - -void wx_spline_push(double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4) -{ - wx_stack_top->x1 = x1; - wx_stack_top->y1 = y1; - wx_stack_top->x2 = x2; - wx_stack_top->y2 = y2; - wx_stack_top->x3 = x3; - wx_stack_top->y3 = y3; - wx_stack_top->x4 = x4; - wx_stack_top->y4 = y4; - wx_stack_top++; - wx_stack_count++; -} - -int wx_spline_pop(double *x1, double *y1, double *x2, double *y2, - double *x3, double *y3, double *x4, double *y4) -{ - if (wx_stack_count == 0) - return (0); - wx_stack_top--; - wx_stack_count--; - *x1 = wx_stack_top->x1; - *y1 = wx_stack_top->y1; - *x2 = wx_stack_top->x2; - *y2 = wx_stack_top->y2; - *x3 = wx_stack_top->x3; - *y3 = wx_stack_top->y3; - *x4 = wx_stack_top->x4; - *y4 = wx_stack_top->y4; - return (1); -} - -static bool wx_spline_add_point(double x, double y) -{ - wxPoint *point = new wxPoint ; - point->x = (int) x; - point->y = (int) y; - wx_spline_point_list.Append((wxObject*)point); - return TRUE; -} - -static void wx_spline_draw_point_array(wxDC *dc) -{ - dc->DrawLines(&wx_spline_point_list, 0, 0 ); - wxNode *node = wx_spline_point_list.First(); - while (node) - { - wxPoint *point = (wxPoint *)node->Data(); - delete point; - delete node; - node = wx_spline_point_list.First(); - } -} - -void wxWindowDC::DrawSpline( wxList *points ) -{ - wxCHECK_RET( Ok(), "invalid window dc" ); - - wxPoint *p; - double cx1, cy1, cx2, cy2, cx3, cy3, cx4, cy4; - double x1, y1, x2, y2; - - wxNode *node = points->First(); - p = (wxPoint *)node->Data(); - - x1 = p->x; - y1 = p->y; - - node = node->Next(); - p = (wxPoint *)node->Data(); - - x2 = p->x; - y2 = p->y; - cx1 = (double)((x1 + x2) / 2); - cy1 = (double)((y1 + y2) / 2); - cx2 = (double)((cx1 + x2) / 2); - cy2 = (double)((cy1 + y2) / 2); - - wx_spline_add_point(x1, y1); - - while ((node = node->Next()) != NULL) - { - p = (wxPoint *)node->Data(); - x1 = x2; - y1 = y2; - x2 = p->x; - y2 = p->y; - cx4 = (double)(x1 + x2) / 2; - cy4 = (double)(y1 + y2) / 2; - cx3 = (double)(x1 + cx4) / 2; - cy3 = (double)(y1 + cy4) / 2; - - wx_quadratic_spline(cx1, cy1, cx2, cy2, cx3, cy3, cx4, cy4); - - cx1 = cx4; - cy1 = cy4; - cx2 = (double)(cx1 + x2) / 2; - cy2 = (double)(cy1 + y2) / 2; - } - - wx_spline_add_point( cx1, cy1 ); - wx_spline_add_point( x2, y2 ); - - wx_spline_draw_point_array( this ); -} - - -//----------------------------------------------------------------------------- -// wxPaintDC -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxPaintDC,wxWindowDC) - -wxPaintDC::wxPaintDC() - : wxWindowDC() -{ -} - -wxPaintDC::wxPaintDC( wxWindow *win ) - : wxWindowDC( win ) -{ -} - -//----------------------------------------------------------------------------- -// wxClientDC -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxClientDC,wxWindowDC) - -wxClientDC::wxClientDC() - : wxWindowDC() -{ -} - -wxClientDC::wxClientDC( wxWindow *win ) - : wxWindowDC( win ) -{ -} - diff --git a/src/gtk1/dcmemory.cpp b/src/gtk1/dcmemory.cpp deleted file mode 100644 index 139438b215..0000000000 --- a/src/gtk1/dcmemory.cpp +++ /dev/null @@ -1,83 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcmemory.cpp -// Purpose: -// Author: Robert Roebling -// RCS-ID: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dcmemory.h" -#endif - -#include "wx/dcmemory.h" - -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -//----------------------------------------------------------------------------- -// wxMemoryDC -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxMemoryDC,wxWindowDC) - -wxMemoryDC::wxMemoryDC() : wxWindowDC() -{ - m_ok = FALSE; - - m_cmap = gtk_widget_get_default_colormap(); -} - -wxMemoryDC::wxMemoryDC( wxDC *WXUNUSED(dc) ) - : wxWindowDC() -{ - m_ok = FALSE; - - m_cmap = gtk_widget_get_default_colormap(); -} - -wxMemoryDC::~wxMemoryDC() -{ -} - -void wxMemoryDC::SelectObject( const wxBitmap& bitmap ) -{ - m_selected = bitmap; - if (m_selected.Ok()) - { - if (m_selected.GetPixmap()) - { - m_window = m_selected.GetPixmap(); - } - else - { - m_window = m_selected.GetBitmap(); - } - - SetUpDC(); - - m_isMemDC = TRUE; - } - else - { - m_ok = FALSE; - m_window = (GdkWindow *) NULL; - } -} - -void wxMemoryDC::GetSize( int *width, int *height ) const -{ - if (m_selected.Ok()) - { - if (width) (*width) = m_selected.GetWidth(); - if (height) (*height) = m_selected.GetHeight(); - } - else - { - if (width) (*width) = 0; - if (height) (*height) = 0; - } -} - - diff --git a/src/gtk1/dcscreen.cpp b/src/gtk1/dcscreen.cpp deleted file mode 100644 index b7a89b9b83..0000000000 --- a/src/gtk1/dcscreen.cpp +++ /dev/null @@ -1,345 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcscreen.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dcscreen.h" -#endif - -#include "wx/dcscreen.h" -#include "wx/window.h" - -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -//----------------------------------------------------------------------------- -// global data initialization -//----------------------------------------------------------------------------- - -GdkWindow *wxScreenDC::sm_overlayWindow = (GdkWindow*) NULL; - int wxScreenDC::sm_overlayWindowX = 0; - int wxScreenDC::sm_overlayWindowY = 0; - - -//----------------------------------------------------------------------------- -// create X window -//----------------------------------------------------------------------------- - -extern "C" { - -#include "gdk/gdk.h" -#include "gdk/gdkprivate.h" -#include "gdk/gdkx.h" -#include - -int my_nevent_masks = 17; -int my_event_masks_table[19] = -{ - ExposureMask, - PointerMotionMask, - PointerMotionHintMask, - ButtonMotionMask, - Button1MotionMask, - Button2MotionMask, - Button3MotionMask, - ButtonPressMask | OwnerGrabButtonMask, - ButtonReleaseMask | OwnerGrabButtonMask, - KeyPressMask, - KeyReleaseMask, - EnterWindowMask, - LeaveWindowMask, - FocusChangeMask, - StructureNotifyMask, - PropertyChangeMask, - VisibilityChangeMask, - 0, /* PROXIMITY_IN */ - 0 /* PROXIMTY_OUT */ -}; - -GdkWindow* -gdk_window_transparent_new ( GdkWindow *parent, - GdkWindowAttr *attributes, - gint attributes_mask) -{ - GdkWindow *window; - GdkWindowPrivate *gprivate; - GdkWindowPrivate *parent_private; - GdkVisual *visual; - Display *parent_display; - Window xparent; - Visual *xvisual; - XSetWindowAttributes xattributes; - long xattributes_mask; - XSizeHints size_hints; - XWMHints wm_hints; - XClassHint *class_hint; - int x, y, depth; - unsigned int gclass; - char *title; - int i; - - g_return_val_if_fail (attributes != NULL, NULL); - - if (!parent) - parent = (GdkWindow*) &gdk_root_parent; - - parent_private = (GdkWindowPrivate*) parent; - if (parent_private->destroyed) - return NULL; - - xparent = parent_private->xwindow; - parent_display = parent_private->xdisplay; - - gprivate = g_new (GdkWindowPrivate, 1); - window = (GdkWindow*) gprivate; - - gprivate->parent = parent; - - if (parent_private != &gdk_root_parent) - parent_private->children = g_list_prepend (parent_private->children, window); - - gprivate->xdisplay = parent_display; - gprivate->destroyed = FALSE; - gprivate->resize_count = 0; - gprivate->ref_count = 1; - xattributes_mask = 0; - - if (attributes_mask & GDK_WA_X) - x = attributes->x; - else - x = 0; - - if (attributes_mask & GDK_WA_Y) - y = attributes->y; - else - y = 0; - - gprivate->x = x; - gprivate->y = y; - gprivate->width = (attributes->width > 1) ? (attributes->width) : (1); - gprivate->height = (attributes->height > 1) ? (attributes->height) : (1); - gprivate->window_type = attributes->window_type; - gprivate->extension_events = FALSE; - -#ifndef NEW_GTK_DND_CODE - gprivate->dnd_drag_data_type = None; - gprivate->dnd_drag_data_typesavail = - gprivate->dnd_drop_data_typesavail = NULL; - gprivate->dnd_drop_enabled = gprivate->dnd_drag_enabled = - gprivate->dnd_drag_accepted = gprivate->dnd_drag_datashow = - gprivate->dnd_drop_data_numtypesavail = - gprivate->dnd_drag_data_numtypesavail = 0; - gprivate->dnd_drag_eventmask = gprivate->dnd_drag_savedeventmask = 0; -#endif - - gprivate->filters = NULL; - gprivate->children = NULL; - - window->user_data = NULL; - - if (attributes_mask & GDK_WA_VISUAL) - visual = attributes->visual; - else - visual = gdk_visual_get_system (); - xvisual = ((GdkVisualPrivate*) visual)->xvisual; - - xattributes.event_mask = StructureNotifyMask; - for (i = 0; i < my_nevent_masks; i++) - { - if (attributes->event_mask & (1 << (i + 1))) - xattributes.event_mask |= my_event_masks_table[i]; - } - - if (xattributes.event_mask) - xattributes_mask |= CWEventMask; - - if(attributes_mask & GDK_WA_NOREDIR) { - xattributes.override_redirect = - (attributes->override_redirect == FALSE)?False:True; - xattributes_mask |= CWOverrideRedirect; - } else - xattributes.override_redirect = False; - - gclass = InputOutput; - depth = visual->depth; - - if (attributes_mask & GDK_WA_COLORMAP) - gprivate->colormap = attributes->colormap; - else - gprivate->colormap = gdk_colormap_get_system (); - - xattributes.colormap = ((GdkColormapPrivate*) gprivate->colormap)->xcolormap; - xattributes_mask |= CWColormap; - - xparent = gdk_root_window; - - xattributes.save_under = True; - xattributes.override_redirect = True; - xattributes.cursor = None; - xattributes_mask |= CWSaveUnder | CWOverrideRedirect; - - gprivate->xwindow = XCreateWindow (gprivate->xdisplay, xparent, - x, y, gprivate->width, gprivate->height, - 0, depth, gclass, xvisual, - xattributes_mask, &xattributes); - gdk_window_ref (window); - gdk_xid_table_insert (&gprivate->xwindow, window); - - if (gprivate->colormap) - gdk_colormap_ref (gprivate->colormap); - - XSetWMProtocols (gprivate->xdisplay, gprivate->xwindow, gdk_wm_window_protocols, 2); - - size_hints.flags = PSize; - size_hints.width = gprivate->width; - size_hints.height = gprivate->height; - - wm_hints.flags = InputHint | StateHint | WindowGroupHint; - wm_hints.window_group = gdk_leader_window; - wm_hints.input = True; - wm_hints.initial_state = NormalState; - - /* FIXME: Is there any point in doing this? Do any WM's pay - * attention to PSize, and even if they do, is this the - * correct value??? - */ - XSetWMNormalHints (gprivate->xdisplay, gprivate->xwindow, &size_hints); - - XSetWMHints (gprivate->xdisplay, gprivate->xwindow, &wm_hints); - - if (attributes_mask & GDK_WA_TITLE) - title = attributes->title; - else -#if (GTK_MINOR_VERSION == 1) - title = "Unknown"; // GLH: Well I don't know for the moment what to write here. -#else - title = gdk_progname; -#endif - - XmbSetWMProperties (gprivate->xdisplay, gprivate->xwindow, - title, title, - NULL, 0, - NULL, NULL, NULL); - - if (attributes_mask & GDK_WA_WMCLASS) - { - class_hint = XAllocClassHint (); - class_hint->res_name = attributes->wmclass_name; - class_hint->res_class = attributes->wmclass_class; - XSetClassHint (gprivate->xdisplay, gprivate->xwindow, class_hint); - XFree (class_hint); - } - - return window; -} - -} // extern "C" - -//----------------------------------------------------------------------------- -// wxScreenDC -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxScreenDC,wxPaintDC) - -wxScreenDC::wxScreenDC(void) -{ - m_ok = FALSE; - m_window = (GdkWindow *) NULL; - m_cmap = gdk_colormap_get_system(); - - if (sm_overlayWindow) - { - m_window = sm_overlayWindow; - m_deviceOriginX = - sm_overlayWindowX; - m_deviceOriginY = - sm_overlayWindowY; - } - else - { - m_window = GDK_ROOT_PARENT(); - } - - SetUpDC(); - - gdk_gc_set_subwindow( m_penGC, GDK_INCLUDE_INFERIORS ); - gdk_gc_set_subwindow( m_brushGC, GDK_INCLUDE_INFERIORS ); - gdk_gc_set_subwindow( m_textGC, GDK_INCLUDE_INFERIORS ); - gdk_gc_set_subwindow( m_bgGC, GDK_INCLUDE_INFERIORS ); -} - -wxScreenDC::~wxScreenDC(void) -{ - EndDrawingOnTop(); -} - -bool wxScreenDC::StartDrawingOnTop( wxWindow *window ) -{ - if (!window) return StartDrawingOnTop(); - - int x = 0; - int y = 0; - window->GetPosition( &x, &y ); - int w = 0; - int h = 0; - window->GetSize( &w, &h ); - window->ClientToScreen( &x, &y ); - - wxRect rect; - rect.x = x; - rect.y = y; - rect.width = 0; - rect.height = 0; - - return StartDrawingOnTop( &rect ); -} - -bool wxScreenDC::StartDrawingOnTop( wxRect *rect ) -{ - int x = 0; - int y = 0; - int width = gdk_screen_width(); - int height = gdk_screen_height(); - if (rect) - { - x = rect->x; - y = rect->y; - width = rect->width; - height = rect->height; - } - - sm_overlayWindowX = x; - sm_overlayWindowY = y; - - GdkWindowAttr attr; - attr.x = x; - attr.y = y; - attr.width = width; - attr.height = height; - attr.override_redirect = TRUE; - attr.wclass = GDK_INPUT_OUTPUT; - attr.event_mask = 0; - attr.window_type = GDK_WINDOW_TEMP; - - // GTK cannot set transparent backgrounds. :-( - sm_overlayWindow = gdk_window_transparent_new( NULL, &attr, GDK_WA_NOREDIR | GDK_WA_X | GDK_WA_Y ); - - if (sm_overlayWindow) gdk_window_show( sm_overlayWindow ); - - return (sm_overlayWindow); -} - -bool wxScreenDC::EndDrawingOnTop(void) -{ - if (sm_overlayWindow) gdk_window_destroy( sm_overlayWindow ); - - sm_overlayWindow = NULL; - sm_overlayWindowX = 0; - sm_overlayWindowY = 0; - - return TRUE; -} - diff --git a/src/gtk1/dialog.cpp b/src/gtk1/dialog.cpp deleted file mode 100644 index e1da79d411..0000000000 --- a/src/gtk1/dialog.cpp +++ /dev/null @@ -1,475 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dialog.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dialog.h" -#endif - -#include "wx/dialog.h" -#include "wx/frame.h" -#include "wx/app.h" - -#include "gdk/gdk.h" -#include "gtk/gtk.h" -#include "wx/gtk/win_gtk.h" - -//----------------------------------------------------------------------------- - -extern wxList wxPendingDelete; - -//----------------------------------------------------------------------------- -// "delete_event" -//----------------------------------------------------------------------------- - -bool gtk_dialog_delete_callback( GtkWidget *WXUNUSED(widget), GdkEvent *WXUNUSED(event), wxDialog *win ) -{ -/* - printf( "OnDelete from " ); - if (win->GetClassInfo() && win->GetClassInfo()->GetClassName()) - printf( win->GetClassInfo()->GetClassName() ); - printf( ".\n" ); -*/ - - win->Close(); - - return TRUE; -} - -//----------------------------------------------------------------------------- -// "size_allocate" -//----------------------------------------------------------------------------- - -static void gtk_dialog_size_callback( GtkWidget *WXUNUSED(widget), GtkAllocation* alloc, wxDialog *win ) -{ - if (!win->HasVMT()) return; - -/* - printf( "OnDialogResize from " ); - if (win->GetClassInfo() && win->GetClassInfo()->GetClassName()) - printf( win->GetClassInfo()->GetClassName() ); - printf( ".\n" ); -*/ - - win->GtkOnSize( alloc->x, alloc->y, alloc->width, alloc->height ); -} - -//----------------------------------------------------------------------------- -// "configure_event" -//----------------------------------------------------------------------------- - -static gint gtk_dialog_configure_callback( GtkWidget *WXUNUSED(widget), GdkEventConfigure *event, wxDialog *win ) -{ - if (!win->HasVMT()) return FALSE; - - win->m_x = event->x; - win->m_y = event->y; - - wxMoveEvent mevent( wxPoint(win->m_x,win->m_y), win->GetId() ); - mevent.SetEventObject( win ); - win->GetEventHandler()->ProcessEvent( mevent ); - - return FALSE; -} - -//----------------------------------------------------------------------------- -// wxDialog -//----------------------------------------------------------------------------- - -BEGIN_EVENT_TABLE(wxDialog,wxPanel) - EVT_BUTTON (wxID_OK, wxDialog::OnOK) - EVT_BUTTON (wxID_CANCEL, wxDialog::OnCancel) - EVT_BUTTON (wxID_APPLY, wxDialog::OnApply) - EVT_SIZE (wxDialog::OnSize) - EVT_CLOSE (wxDialog::OnCloseWindow) -END_EVENT_TABLE() - -IMPLEMENT_DYNAMIC_CLASS(wxDialog,wxPanel) - -wxDialog::wxDialog() -{ - m_title = ""; - m_modalShowing = FALSE; -} - -wxDialog::wxDialog( wxWindow *parent, - wxWindowID id, const wxString &title, - const wxPoint &pos, const wxSize &size, - long style, const wxString &name ) -{ - m_modalShowing = FALSE; - Create( parent, id, title, pos, size, style, name ); -} - -bool wxDialog::Create( wxWindow *parent, - wxWindowID id, const wxString &title, - const wxPoint &pos, const wxSize &size, - long style, const wxString &name ) -{ - wxTopLevelWindows.Append( this ); - - m_needParent = FALSE; - - PreCreation( parent, id, pos, size, style, name ); - - m_widget = gtk_window_new( GTK_WINDOW_TOPLEVEL ); - GTK_WIDGET_UNSET_FLAGS( m_widget, GTK_CAN_FOCUS ); - - gtk_widget_set( m_widget, "GtkWindow::allow_shrink", TRUE, NULL); - - gtk_signal_connect( GTK_OBJECT(m_widget), "delete_event", - GTK_SIGNAL_FUNC(gtk_dialog_delete_callback), (gpointer)this ); - - m_wxwindow = gtk_myfixed_new(); - gtk_widget_show( m_wxwindow ); - GTK_WIDGET_UNSET_FLAGS( m_wxwindow, GTK_CAN_FOCUS ); - - gtk_container_add( GTK_CONTAINER(m_widget), m_wxwindow ); - - SetTitle( title ); - - if ((m_x != -1) || (m_y != -1)) - gtk_widget_set_uposition( m_widget, m_x, m_y ); - - gtk_widget_set_usize( m_widget, m_width, m_height ); - - gtk_signal_connect( GTK_OBJECT(m_widget), "size_allocate", - GTK_SIGNAL_FUNC(gtk_dialog_size_callback), (gpointer)this ); - - gtk_signal_connect( GTK_OBJECT(m_widget), "configure_event", - GTK_SIGNAL_FUNC(gtk_dialog_configure_callback), (gpointer)this ); - - if (m_parent) m_parent->AddChild( this ); - - PostCreation(); - - return TRUE; -} - -wxDialog::~wxDialog() -{ - wxTopLevelWindows.DeleteObject( this ); - - if (wxTheApp->GetTopWindow() == this) - { - wxTheApp->SetTopWindow( (wxWindow*) NULL ); - } - - if (wxTopLevelWindows.Number() == 0) - { - wxTheApp->ExitMainLoop(); - } -} - -void wxDialog::SetTitle( const wxString& title ) -{ - m_title = title; - if (m_title.IsNull()) m_title = ""; - gtk_window_set_title( GTK_WINDOW(m_widget), m_title ); -} - -wxString wxDialog::GetTitle() const -{ - return (wxString&)m_title; -} - -void wxDialog::OnApply( wxCommandEvent &WXUNUSED(event) ) -{ - if (Validate()) TransferDataFromWindow(); -} - -void wxDialog::OnCancel( wxCommandEvent &WXUNUSED(event) ) -{ - if (IsModal()) - { - EndModal(wxID_CANCEL); - } - else - { - SetReturnCode(wxID_CANCEL); - this->Show(FALSE); - } -} - -void wxDialog::OnOK( wxCommandEvent &WXUNUSED(event) ) -{ - if ( Validate() && TransferDataFromWindow()) - { - if (IsModal()) - { - EndModal(wxID_OK); - } - else - { - SetReturnCode(wxID_OK); - this->Show(FALSE); - } - } -} - -void wxDialog::OnPaint( wxPaintEvent& WXUNUSED(event) ) -{ - // yes -} - -bool wxDialog::OnClose() -{ - static wxList closing; - - if (closing.Member(this)) return FALSE; // no loops - - closing.Append(this); - - wxCommandEvent cancelEvent(wxEVT_COMMAND_BUTTON_CLICKED, wxID_CANCEL); - cancelEvent.SetEventObject( this ); - GetEventHandler()->ProcessEvent(cancelEvent); - closing.DeleteObject(this); - - return FALSE; -} - -bool wxDialog::Destroy() -{ - if (!wxPendingDelete.Member(this)) wxPendingDelete.Append(this); - - return TRUE; -} - -void wxDialog::OnCloseWindow( wxCloseEvent& event ) -{ - if (GetEventHandler()->OnClose() || event.GetForce()) - { - this->Destroy(); - } -} - -void wxDialog::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), int width, int height ) -{ - // due to a bug in gtk, x,y are always 0 - // m_x = x; - // m_y = y; - - if ((m_height == height) && (m_width == width) && - (m_sizeSet)) return; - if (!m_wxwindow) return; - - m_width = width; - m_height = height; - - if ((m_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth; - if ((m_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight; - if ((m_maxWidth != -1) && (m_width > m_maxWidth)) m_width = m_maxWidth; - if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_maxHeight; - - gtk_widget_set_usize( m_widget, m_width, m_height ); - - m_sizeSet = TRUE; - - wxSizeEvent event( wxSize(m_width,m_height), GetId() ); - event.SetEventObject( this ); - GetEventHandler()->ProcessEvent( event ); -} - -void wxDialog::OnSize( wxSizeEvent &WXUNUSED(event) ) -{ - wxASSERT_MSG( (m_widget != NULL), "invalid dialog" ); - - if (GetAutoLayout()) - { - Layout(); - } - else - { - // no child: go out ! - if (!GetChildren().First()) return; - - // do we have exactly one child? - wxWindow *child = (wxWindow *) NULL; - for(wxNode *node = GetChildren().First(); node; node = node->Next()) - { - wxWindow *win = (wxWindow *)node->Data(); - if (!wxIS_KIND_OF(win,wxFrame) && !wxIS_KIND_OF(win,wxDialog)) - { - // it's the second one: do nothing - if (child) return; - child = win; - } - } - - // yes: set it's size to fill all the frame - int client_x, client_y; - GetClientSize( &client_x, &client_y ); - child->SetSize( 1, 1, client_x-2, client_y); - } -} - -void wxDialog::SetSize( int x, int y, int width, int height, int sizeFlags ) -{ - wxASSERT_MSG( (m_widget != NULL), "invalid window" ); - - // Don't do anything for children of wxMDIChildFrame - if (!m_wxwindow) return; - - if (m_resizing) return; // I don't like recursions - m_resizing = TRUE; - - int old_x = m_x; - int old_y = m_y; - int old_width = m_width; - int old_height = m_height; - - if ((sizeFlags & wxSIZE_USE_EXISTING) == wxSIZE_USE_EXISTING) - { - if (x != -1) m_x = x; - if (y != -1) m_y = y; - if (width != -1) m_width = width; - if (height != -1) m_height = height; - } - else - { - m_x = x; - m_y = y; - m_width = width; - m_height = height; - } - - if ((sizeFlags & wxSIZE_AUTO_WIDTH) == wxSIZE_AUTO_WIDTH) - { - if (width == -1) m_width = 80; - } - - if ((sizeFlags & wxSIZE_AUTO_HEIGHT) == wxSIZE_AUTO_HEIGHT) - { - if (height == -1) m_height = 26; - } - - if ((m_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth; - if ((m_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight; - if ((m_maxWidth != -1) && (m_width > m_maxWidth)) m_width = m_maxWidth; - if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_maxHeight; - - if ((m_x != -1) || (m_y != -1)) - { - if ((m_x != old_x) || (m_y != old_y)) - gtk_widget_set_uposition( m_widget, m_x, m_y ); - } - - if ((m_width != old_width) || (m_height != old_height)) - { - gtk_widget_set_usize( m_widget, m_width, m_height ); - } - - m_sizeSet = TRUE; - - wxSizeEvent event( wxSize(m_width,m_height), GetId() ); - event.SetEventObject( this ); - GetEventHandler()->ProcessEvent( event ); - - m_resizing = FALSE; -} - -void wxDialog::SetSize( int width, int height ) -{ - SetSize( -1, -1, width, height, wxSIZE_USE_EXISTING ); -} - -void wxDialog::Centre( int direction ) -{ - wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); - - int x = 0; - int y = 0; - - if (direction & wxHORIZONTAL == wxHORIZONTAL) x = (gdk_screen_width () - m_width) / 2; - if (direction & wxVERTICAL == wxVERTICAL) y = (gdk_screen_height () - m_height) / 2; - - Move( x, y ); -} - -bool wxDialog::Show( bool show ) -{ - if (!show && IsModal()) - { - EndModal( wxID_CANCEL ); - } - - wxWindow::Show( show ); - - if (show) InitDialog(); - - return TRUE; -} - -bool wxDialog::IsModal() const -{ - return m_modalShowing; -} - -void wxDialog::SetModal( bool WXUNUSED(flag) ) -{ -/* - if (flag) - m_windowStyle |= wxDIALOG_MODAL; - else - if (m_windowStyle & wxDIALOG_MODAL) m_windowStyle -= wxDIALOG_MODAL; -*/ - wxFAIL_MSG( "wxDialog:SetModal obsolete now" ); -} - -int wxDialog::ShowModal() -{ - if (IsModal()) - { - wxFAIL_MSG( "wxDialog:ShowModal called twice" ); - return GetReturnCode(); - } - - Show( TRUE ); - - m_modalShowing = TRUE; - - gtk_grab_add( m_widget ); - gtk_main(); - gtk_grab_remove( m_widget ); - - return GetReturnCode(); -} - -void wxDialog::EndModal( int retCode ) -{ - SetReturnCode( retCode ); - - if (!IsModal()) - { - wxFAIL_MSG( "wxDialog:EndModal called twice" ); - return; - } - - m_modalShowing = FALSE; - - gtk_main_quit(); - - Show( FALSE ); -} - -void wxDialog::InitDialog() -{ - wxWindow::InitDialog(); -} - -void wxDialog::SetIcon( const wxIcon &icon ) -{ - m_icon = icon; - if (!icon.Ok()) return; - - wxMask *mask = icon.GetMask(); - GdkBitmap *bm = (GdkBitmap *) NULL; - if (mask) bm = mask->GetBitmap(); - - gdk_window_set_icon( m_widget->window, (GdkWindow *) NULL, icon.GetPixmap(), bm ); -} diff --git a/src/gtk1/dnd.cpp b/src/gtk1/dnd.cpp deleted file mode 100644 index 17c1d18258..0000000000 --- a/src/gtk1/dnd.cpp +++ /dev/null @@ -1,1163 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: dnd.cpp -// Purpose: wxDropTarget class -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dnd.h" -#endif - -#include "wx/dnd.h" - -#if wxUSE_DRAG_AND_DROP - -#include "wx/window.h" -#include "wx/app.h" -#include "wx/gdicmn.h" -#include "wx/intl.h" -#include "wx/utils.h" - -#include "gdk/gdk.h" -#include "gtk/gtk.h" -#include "gdk/gdkprivate.h" - -#include - -// ---------------------------------------------------------------------------- -// global -// ---------------------------------------------------------------------------- - -extern bool g_blockEventsOnDrag; - -#ifdef NEW_GTK_DND_CODE - -#include "gtk/gtkdnd.h" -#include "gtk/gtkselection.h" - -// ---------------------------------------------------------------------------- -// "drag_leave" -// ---------------------------------------------------------------------------- - -static void target_drag_leave( GtkWidget *WXUNUSED(widget), - GdkDragContext *WXUNUSED(context), - guint WXUNUSED(time) ) -{ - printf( "leave.\n" ); -} - -// ---------------------------------------------------------------------------- -// "drag_motion" -// ---------------------------------------------------------------------------- - -static gboolean target_drag_motion( GtkWidget *WXUNUSED(widget), - GdkDragContext *context, - gint WXUNUSED(x), - gint WXUNUSED(y), - guint time ) -{ - printf( "motion.\n" ); - gdk_drag_status( context, context->suggested_action, time ); - return TRUE; -} - -// ---------------------------------------------------------------------------- -// "drag_drop" -// ---------------------------------------------------------------------------- - -static gboolean target_drag_drop( GtkWidget *widget, - GdkDragContext *context, - gint x, - gint y, - guint time ) -{ - printf( "drop at: %d,%d.\n", x, y ); - - if (context->targets) - { - gtk_drag_get_data( widget, - context, - GPOINTER_TO_INT (context->targets->data), - time ); - } - return FALSE; -} - -// ---------------------------------------------------------------------------- -// "drag_data_received" -// ---------------------------------------------------------------------------- - -static void target_drag_data_received( GtkWidget *WXUNUSED(widget), - GdkDragContext *context, - gint x, - gint y, - GtkSelectionData *data, - guint WXUNUSED(info), - guint time ) -{ - printf( "data receive at: %d,%d.\n", x, y ); - - if ((data->length >= 0) && (data->format == 8)) - { - wxString str = (const char*)data->data; - printf( "Received %s\n.", WXSTRINGCAST str ); - gtk_drag_finish( context, TRUE, FALSE, time ); - return; - } - - gtk_drag_finish (context, FALSE, FALSE, time); -} - -// ---------------------------------------------------------------------------- -// wxDropTarget -// ---------------------------------------------------------------------------- - -wxDropTarget::wxDropTarget() -{ -} - -wxDropTarget::~wxDropTarget() -{ -} - -void wxDropTarget::UnregisterWidget( GtkWidget *widget ) -{ - wxCHECK_RET( widget != NULL, "unregister widget is NULL" ); - - gtk_drag_dest_set( widget, - (GtkDestDefaults) 0, - (GtkTargetEntry*) NULL, - 0, - (GdkDragAction) 0 ); - - gtk_signal_disconnect_by_func( GTK_OBJECT(widget), - GTK_SIGNAL_FUNC(target_drag_leave), (gpointer) this ); - - gtk_signal_disconnect_by_func( GTK_OBJECT(widget), - GTK_SIGNAL_FUNC(target_drag_motion), (gpointer) this ); - - gtk_signal_disconnect_by_func( GTK_OBJECT(widget), - GTK_SIGNAL_FUNC(target_drag_drop), (gpointer) this ); - - gtk_signal_disconnect_by_func( GTK_OBJECT(widget), - GTK_SIGNAL_FUNC(target_drag_data_received), (gpointer) this ); -} - -void wxDropTarget::RegisterWidget( GtkWidget *widget ) -{ - wxCHECK_RET( widget != NULL, "register widget is NULL" ); - - GtkTargetEntry format; - format.info = 0; - format.flags = 0; - char buf[100]; - - int valid = 0; - for ( size_t i = 0; i < GetFormatCount(); i++ ) - { - wxDataFormat df = GetFormat( i ); - switch (df) - { - case wxDF_TEXT: - format.target = "text/plain"; - valid++; - break; - case wxDF_FILENAME: - format.target = "file:ALL"; - valid++; - break; - case wxDF_PRIVATE: - wxPrivateDropTarget *pdt = (wxPrivateDropTarget *)this; - strcpy( buf, WXSTRINGCAST pdt->GetID() ); - format.target = buf; - valid++; - default: - break; - } - } - - wxASSERT_MSG( valid != 0, "No valid DnD format supported." ); - - gtk_drag_dest_set( widget, - GTK_DEST_DEFAULT_ALL, - &format, - 1, - (GdkDragAction)(GDK_ACTION_COPY | GDK_ACTION_MOVE) ); - - gtk_signal_connect( GTK_OBJECT(widget), "drag_leave", - GTK_SIGNAL_FUNC(target_drag_leave), (gpointer) this ); - - gtk_signal_connect( GTK_OBJECT(widget), "drag_motion", - GTK_SIGNAL_FUNC(target_drag_motion), (gpointer) this ); - - gtk_signal_connect( GTK_OBJECT(widget), "drag_drop", - GTK_SIGNAL_FUNC(target_drag_drop), (gpointer) this ); - - gtk_signal_connect( GTK_OBJECT(widget), "drag_data_received", - GTK_SIGNAL_FUNC(target_drag_data_received), (gpointer) this ); -} - -// ---------------------------------------------------------------------------- -// wxTextDropTarget -// ---------------------------------------------------------------------------- - -bool wxTextDropTarget::OnDrop( long x, long y, const void *data, size_t WXUNUSED(size) ) -{ - OnDropText( x, y, (const char*)data ); - return TRUE; -} - -bool wxTextDropTarget::OnDropText( long x, long y, const char *psz ) -{ - printf( "Got dropped text: %s.\n", psz ); - printf( "At x: %d, y: %d.\n", (int)x, (int)y ); - return TRUE; -} - -size_t wxTextDropTarget::GetFormatCount() const -{ - return 1; -} - -wxDataFormat wxTextDropTarget::GetFormat(size_t WXUNUSED(n)) const -{ - return wxDF_TEXT; -} - -// ---------------------------------------------------------------------------- -// wxFileDropTarget -// ---------------------------------------------------------------------------- - -bool wxFileDropTarget::OnDropFiles( long x, long y, size_t nFiles, const char * const aszFiles[] ) -{ - printf( "Got %d dropped files.\n", (int)nFiles ); - printf( "At x: %d, y: %d.\n", (int)x, (int)y ); - for (size_t i = 0; i < nFiles; i++) - { - printf( aszFiles[i] ); - printf( "\n" ); - } - return TRUE; -} - -bool wxFileDropTarget::OnDrop(long x, long y, const void *data, size_t size ) -{ - size_t number = 0; - char *text = (char*) data; - for (size_t i = 0; i < size; i++) - if (text[i] == 0) number++; - - if (number == 0) return TRUE; - - char **files = new char*[number]; - - text = (char*) data; - for (size_t i = 0; i < number; i++) - { - files[i] = text; - int len = strlen( text ); - text += len+1; - } - - bool ret = OnDropFiles( x, y, 1, files ); - - free( files ); - - return ret; -} - -size_t wxFileDropTarget::GetFormatCount() const -{ - return 1; -} - -wxDataFormat wxFileDropTarget::GetFormat(size_t WXUNUSED(n)) const -{ - return wxDF_FILENAME; -} - -//------------------------------------------------------------------------- -// wxDropSource -//------------------------------------------------------------------------- - -wxDropSource::wxDropSource( wxWindow *win ) -{ - g_blockEventsOnDrag = TRUE; - - m_window = win; - m_widget = win->m_widget; - if (win->m_wxwindow) m_widget = win->m_wxwindow; - - m_data = (wxDataObject *) NULL; - m_retValue = wxDragCancel; - - m_defaultCursor = wxCursor( wxCURSOR_NO_ENTRY ); - m_goaheadCursor = wxCursor( wxCURSOR_HAND ); -} - -wxDropSource::wxDropSource( wxDataObject &data, wxWindow *win ) -{ - g_blockEventsOnDrag = TRUE; - - m_window = win; - m_widget = win->m_widget; - if (win->m_wxwindow) m_widget = win->m_wxwindow; - m_retValue = wxDragCancel; - - m_data = &data; - - m_defaultCursor = wxCursor( wxCURSOR_NO_ENTRY ); - m_goaheadCursor = wxCursor( wxCURSOR_HAND ); -} - -void wxDropSource::SetData( wxDataObject &data ) -{ - m_data = &data; -} - -wxDropSource::~wxDropSource(void) -{ -// if (m_data) delete m_data; - - g_blockEventsOnDrag = FALSE; -} - -wxDragResult wxDropSource::DoDragDrop( bool WXUNUSED(bAllowMove) ) -{ - wxASSERT_MSG( m_data, "wxDragSource: no data" ); - - if (!m_data) return (wxDragResult) wxDragNone; - if (m_data->GetDataSize() == 0) return (wxDragResult) wxDragNone; - - RegisterWindow(); - - // TODO - - UnregisterWindow(); - - g_blockEventsOnDrag = FALSE; - - return m_retValue; -} - -void wxDropSource::RegisterWindow(void) -{ - if (!m_data) return; - - wxString formats; - - wxDataFormat df = m_data->GetPreferredFormat(); - - switch (df) - { - case wxDF_TEXT: - formats += "text/plain"; - break; - case wxDF_FILENAME: - formats += "file:ALL"; - break; - default: - break; - } - - char *str = WXSTRINGCAST formats; - - // TODO -} - -void wxDropSource::UnregisterWindow(void) -{ - if (!m_widget) return; - - // TODO -} - - -#else // NEW_CODE - -GtkWidget *shape_create_icon (char **data, - gint x, - gint y, - gint px, - gint py, - gint window_type); - -/* XPM */ -static char * gv_xpm[] = { -"40 34 3 1", -" s None c None", -". c black", -"X c white", -" ", -" ", -" ...... ", -" ..XXXXXX.. ", -" .XXXXXXXXXX. ", -" .XXXXXXXXXXXX. ", -" .XXXXXXXXXXXX. ", -" .XXXXXXXXXXXXXX. ", -" .XXX..XXXX..XXX. ", -" ....XX....XX....XX. ", -" .XXX.XXX..XXXX..XXX.... ", -" .XXXXXXXXXXXXXXXXXXX.XXX. ", -" .XXXXXXXXXXXXXXXXXXXXXXXX. ", -" .XXXXXXXXXXXXXXXXXXXXXXXX. ", -" ..XXXXXXXXXXXXXXXXXXXXXX. ", -" .XXXXXXXXXXXXXXXXXX... ", -" ..XXXXXXXXXXXXXXXX. ", -" .XXXXXXXXXXXXXXXX. ", -" .XXXXXXXXXXXXXXXX. ", -" .XXXXXXXXXXXXXXXXX. ", -" .XXXXXXXXXXXXXXXXX. ", -" .XXXXXXXXXXXXXXXXXX. ", -" .XXXXXXXXXXXXXXXXXXX. ", -" .XXXXXXXXXXXXXXXXXXXXX. ", -" .XXXXXXXXXXXXXX.XXXXXXX. ", -" .XXXXXXX.XXXXXXX.XXXXXXX. ", -" .XXXXXXXX.XXXXXXX.XXXXXXX. ", -" .XXXXXXX...XXXXX...XXXXX. ", -" .XXXXXXX. ..... ..... ", -" ..XXXX.. ", -" .... ", -" ", -" ", -" "}; - -/* XPM */ -static char * page_xpm[] = { -/* width height ncolors chars_per_pixel */ -"32 32 5 1", -/* colors */ -" s None c None", -". c black", -"X c wheat", -"o c tan", -"O c #6699FF", -/* pixels */ -" ................... ", -" .XXXXXXXXXXXXXXXXX.. ", -" .XXXXXXXXXXXXXXXXX.o. ", -" .XXXXXXXXXXXXXXXXX.oo. ", -" .XXXXXXXXXXXXXXXXX.ooo. ", -" .XXXXXXXXXXXXXXXXX.oooo. ", -" .XXXXXXXXXXXXXXXXX....... ", -" .XXXXXOOOOOOOOOOXXXooooo. ", -" .XXXXXXXXXXXXXXXXXXooooo. ", -" .XXXXXOOOOOOOOOOXXXXXXXX. ", -" .XXXXXXXXXXXXXXXXXXXXXXX. ", -" .XXXXXXXOOOOOOOOOXXXXXXX. ", -" .XXXXXXXXXXXXXXXXXXXXXXX. ", -" .XXXXXXOOOOOOOOOOXXXXXXX. ", -" .XXXXXXXXXXXXXXXXXXXXXXX. ", -" .XXXXXOOOOOOOOOOXXXXXXXX. ", -" .XXXXXXXXXXXXXXXXXXXXXXX. ", -" .XXXXXXXOOOOOOOOOXXXXXXX. ", -" .XXXXXXXXXXXXXXXXXXXXXXX. ", -" .XXXXXXOOOOOOOOOOXXXXXXX. ", -" .XXXXXXXXXXXXXXXXXXXXXXX. ", -" .XXXXXOOOOOOOOOOXXXXXXXX. ", -" .XXXXXXXXXXXXXXXXXXXXXXX. ", -" .XXXXXXOOOOOOOOOOXXXXXXX. ", -" .XXXXXXXXXXXXXXXXXXXXXXX. ", -" .XXXXXOOOOOOOXXXXXXXXXXX. ", -" .XXXXXXXXXXXXXXXXXXXXXXX. ", -" .XXXXXXXXXXXXXXXXXXXXXXX. ", -" .XXXXXXXXXXXXXXXXXXXXXXX. ", -" .XXXXXXXXXXXXXXXXXXXXXXX. ", -" .XXXXXXXXXXXXXXXXXXXXXXX. ", -" ......................... "}; - - -//----------------------------------------------------------------------------- -// globals -//----------------------------------------------------------------------------- - -wxDropSource *gs_currentDropSource = (wxDropSource*) NULL; - -//----------------------------------------------------------------------------- -// "drop_enter_event" -//----------------------------------------------------------------------------- - -static void gtk_target_enter_callback( GtkWidget *WXUNUSED(widget), - GdkEventDropEnter *WXUNUSED(event), - wxDropTarget *target ) -{ - if (target) - target->OnEnter(); -} - -//----------------------------------------------------------------------------- -// "drop_leave_event" -//----------------------------------------------------------------------------- - -static void gtk_target_leave_callback( GtkWidget *WXUNUSED(widget), - GdkEventDropLeave *WXUNUSED(event), - wxDropTarget *target ) -{ - if (target) - target->OnLeave(); -} - -//----------------------------------------------------------------------------- -// "drop_data_available_event" -//----------------------------------------------------------------------------- - -static void gtk_target_callback( GtkWidget *widget, - GdkEventDropDataAvailable *event, - wxDropTarget *target ) -{ - if (target) - { - int x = 0; - int y = 0; - gdk_window_get_pointer( widget->window, &x, &y, (GdkModifierType *) NULL ); -/* - printf( "Drop data is of type %s.\n", event->data_type ); -*/ - target->OnDrop( x, y, (const void*)event->data, (size_t)event->data_numbytes ); - } - -/* - g_free (event->data); - g_free (event->data_type); -*/ -} - -// ---------------------------------------------------------------------------- -// wxDropTarget -// ---------------------------------------------------------------------------- - -wxDropTarget::wxDropTarget() -{ - m_format = (wxDataFormat*) NULL; -} - -wxDropTarget::~wxDropTarget() -{ - if (m_format) delete m_format; -} - -wxDataFormat &wxDropTarget::GetFormat(size_t n) const -{ - return (*m_format); -} - -void wxDropTarget::UnregisterWidget( GtkWidget *widget ) -{ - if (!widget) return; - - gtk_signal_disconnect_by_func( GTK_OBJECT(widget), - GTK_SIGNAL_FUNC(gtk_target_callback), (gpointer) this ); - - gtk_widget_dnd_drop_set( widget, FALSE, (gchar **) NULL, 0, FALSE ); -} - -void wxDropTarget::RegisterWidget( GtkWidget *widget ) -{ - wxString formats; - int valid = 0; - - for ( size_t i = 0; i < GetFormatCount(); i++ ) - { - switch (GetFormat(i).GetType()) - { - case wxDF_TEXT: - { - if (i > 0) formats += ";"; - formats += "text/plain"; - valid++; - break; - } - case wxDF_FILENAME: - { - if (i > 0) formats += ";"; - formats += "file:ALL"; - valid++; - break; - } - case wxDF_PRIVATE: - { - if (i > 0) formats += ";"; - wxPrivateDropTarget *pdt = (wxPrivateDropTarget *)this; - formats += pdt->GetId(); - valid++; - break; - } - default: - break; - } - } - - char *str = WXSTRINGCAST formats; - - gtk_widget_dnd_drop_set( widget, TRUE, &str, valid, FALSE ); - - gtk_signal_connect( GTK_OBJECT(widget), "drop_data_available_event", - GTK_SIGNAL_FUNC(gtk_target_callback), (gpointer) this ); - - gtk_signal_connect( GTK_OBJECT(widget), "drop_enter_event", - GTK_SIGNAL_FUNC(gtk_target_enter_callback), (gpointer) this ); - - gtk_signal_connect( GTK_OBJECT(widget), "drop_leave_event", - GTK_SIGNAL_FUNC(gtk_target_leave_callback), (gpointer) this ); -} - -// ---------------------------------------------------------------------------- -// wxTextDropTarget -// ---------------------------------------------------------------------------- - -wxTextDropTarget::wxTextDropTarget() -{ - m_format = new wxDataFormat( wxDF_TEXT ); -} - -bool wxTextDropTarget::OnDrop( long x, long y, const void *data, size_t WXUNUSED(size) ) -{ - OnDropText( x, y, (const char*)data ); - return TRUE; -} - -bool wxTextDropTarget::OnDropText( long x, long y, const char *psz ) -{ -/* - printf( "Got dropped text: %s.\n", psz ); - printf( "At x: %d, y: %d.\n", (int)x, (int)y ); -*/ - return TRUE; -} - -size_t wxTextDropTarget::GetFormatCount() const -{ - return 1; -} - -// ---------------------------------------------------------------------------- -// wxPrivateDropTarget -// ---------------------------------------------------------------------------- - -wxPrivateDropTarget::wxPrivateDropTarget() -{ - m_id = wxTheApp->GetAppName(); - m_format = new wxDataFormat( m_id ); -} - -void wxPrivateDropTarget::SetId( const wxString& id ) -{ - m_id = id; - m_format->SetId( id ); -} - -size_t wxPrivateDropTarget::GetFormatCount() const -{ - return 1; -} - -// ---------------------------------------------------------------------------- -// wxFileDropTarget -// ---------------------------------------------------------------------------- - -wxFileDropTarget::wxFileDropTarget() -{ - m_format = new wxDataFormat( wxDF_FILENAME ); -} - -bool wxFileDropTarget::OnDropFiles( long x, long y, size_t nFiles, const char * const aszFiles[] ) -{ - printf( "Got %d dropped files.\n", (int)nFiles ); - printf( "At x: %d, y: %d.\n", (int)x, (int)y ); - - for (size_t i = 0; i < nFiles; i++) - { - printf( aszFiles[i] ); - printf( "\n" ); - } - - return TRUE; -} - -bool wxFileDropTarget::OnDrop(long x, long y, const void *data, size_t size ) -{ - size_t number = 0; - char *text = (char*) data; - for (size_t i = 0; i < size; i++) - if (text[i] == 0) number++; - - if (number == 0) return TRUE; - - char **files = new char*[number]; - - text = (char*) data; - for (size_t i = 0; i < number; i++) - { - files[i] = text; - int len = strlen( text ); - text += len+1; - } - - bool ret = OnDropFiles( x, y, 1, files ); - - free( files ); - - return ret; -} - -size_t wxFileDropTarget::GetFormatCount() const -{ - return 1; -} - -//------------------------------------------------------------------------- -// wxDropSource -//------------------------------------------------------------------------- - -static void -shape_motion (GtkWidget *widget, - GdkEventMotion * /*event*/); - -//----------------------------------------------------------------------------- -// "drag_request_event" -//----------------------------------------------------------------------------- - -void gtk_drag_callback( GtkWidget *widget, GdkEventDragRequest *event, wxDropSource *source ) -{ - wxDataBroker *data = source->m_data; - - if (!data) return; - - wxNode *node = data->m_dataObjects.First(); - { - wxDataObject *dobj = (wxDataObject*) node->Data(); - - if ((strcmp(event->data_type,"file:ALL") == 0) && - (dobj->GetFormat().GetType() == wxDF_FILENAME)) - { - wxFileDataObject *file_object = (wxFileDataObject*) dobj; - - wxString text = file_object->GetFiles(); - - char *s = WXSTRINGCAST text; - - gtk_widget_dnd_data_set( widget, - (GdkEvent*)event, - (unsigned char*) s, - (int) text.Length()+1 ); - - source->m_retValue = wxDragCopy; - - return; - } - - if ((strcmp(event->data_type,"text/plain") == 0) && - (dobj->GetFormat().GetType() == wxDF_TEXT)) - { - wxTextDataObject *text_object = (wxTextDataObject*) dobj; - - wxString text = text_object->GetText(); - - char *s = WXSTRINGCAST text; - - gtk_widget_dnd_data_set( widget, - (GdkEvent*)event, - (unsigned char*) s, - (int) text.Length()+1 ); - - source->m_retValue = wxDragCopy; - - return; - } - - if (dobj->GetFormat().GetType() == wxDF_PRIVATE) - { - wxPrivateDataObject *pdo = (wxPrivateDataObject*) dobj; - - if (pdo->GetId() == event->data_type) - { - gtk_widget_dnd_data_set( widget, - (GdkEvent*)event, - (unsigned char*) pdo->GetData(), - (int) pdo->GetSize() ); - - source->m_retValue = wxDragCopy; - - return; - } - } - - node = node->Next(); - } -} - -wxDropSource::wxDropSource( wxWindow *win ) -{ - g_blockEventsOnDrag = TRUE; - - m_window = win; - m_widget = win->m_widget; - if (win->m_wxwindow) m_widget = win->m_wxwindow; - - m_data = (wxDataBroker*) NULL; - m_retValue = wxDragCancel; - - m_defaultCursor = wxCursor( wxCURSOR_NO_ENTRY ); - m_goaheadCursor = wxCursor( wxCURSOR_HAND ); -} - -wxDropSource::wxDropSource( wxDataObject *data, wxWindow *win ) -{ - g_blockEventsOnDrag = TRUE; - - m_window = win; - m_widget = win->m_widget; - if (win->m_wxwindow) m_widget = win->m_wxwindow; - m_retValue = wxDragCancel; - - if (data) - { - m_data = new wxDataBroker(); - m_data->Add( data ); - } - else - { - m_data = (wxDataBroker*) NULL; - } - - m_defaultCursor = wxCursor( wxCURSOR_NO_ENTRY ); - m_goaheadCursor = wxCursor( wxCURSOR_HAND ); -} - -wxDropSource::wxDropSource( wxDataBroker *data, wxWindow *win ) -{ - g_blockEventsOnDrag = TRUE; - - m_window = win; - m_widget = win->m_widget; - if (win->m_wxwindow) m_widget = win->m_wxwindow; - m_retValue = wxDragCancel; - - m_data = data; - - m_defaultCursor = wxCursor( wxCURSOR_NO_ENTRY ); - m_goaheadCursor = wxCursor( wxCURSOR_HAND ); -} - -void wxDropSource::SetData( wxDataObject *data ) -{ - if (m_data) delete m_data; - - if (data) - { - m_data = new wxDataBroker(); - m_data->Add( data ); - } - else - { - m_data = (wxDataBroker*) NULL; - } -} - -void wxDropSource::SetData( wxDataBroker *data ) -{ - if (m_data) delete m_data; - - m_data = data; -} - -wxDropSource::~wxDropSource(void) -{ - if (m_data) delete m_data; - - g_blockEventsOnDrag = FALSE; -} - -wxDragResult wxDropSource::DoDragDrop( bool WXUNUSED(bAllowMove) ) -{ - if (gdk_dnd.dnd_grabbed) return (wxDragResult) wxDragNone; - if (gdk_dnd.drag_really) return (wxDragResult) wxDragNone; - - wxASSERT_MSG( m_data, "wxDragSource: no data" ); - - if (!m_data) return (wxDragResult) wxDragNone; - - static GtkWidget *drag_icon = (GtkWidget*) NULL; - static GtkWidget *drop_icon = (GtkWidget*) NULL; - - GdkPoint hotspot_1 = {0,-5 }; - - if (!drag_icon) - { - drag_icon = shape_create_icon ( gv_xpm, - 440, 140, 0,0, GTK_WINDOW_POPUP); - - gtk_signal_connect (GTK_OBJECT (drag_icon), "destroy", - GTK_SIGNAL_FUNC(gtk_widget_destroyed), - &drag_icon); - - gtk_widget_hide (drag_icon); - } - - GdkPoint hotspot_2 = {-5,-5}; - - if (!drop_icon) - { - drop_icon = shape_create_icon ( page_xpm, - 440, 140, 0,0, GTK_WINDOW_POPUP); - - gtk_signal_connect (GTK_OBJECT (drop_icon), "destroy", - GTK_SIGNAL_FUNC(gtk_widget_destroyed), - &drop_icon); - - gtk_widget_hide (drop_icon); - } - - - gdk_dnd_set_drag_shape( drag_icon->window, - &hotspot_1, - drop_icon->window, - &hotspot_2); - - - GdkWindowPrivate *wp = (GdkWindowPrivate*) m_widget->window; - - RegisterWindow(); - - gdk_dnd.drag_perhaps = TRUE; - - gdk_dnd.dnd_drag_start.x = 5; - gdk_dnd.dnd_drag_start.y = 5; - gdk_dnd.real_sw = wp; - - if (gdk_dnd.drag_startwindows) - { - g_free( gdk_dnd.drag_startwindows ); - gdk_dnd.drag_startwindows = (GdkWindow **) NULL; - } - gdk_dnd.drag_numwindows = gdk_dnd.drag_really = 0; - - XWindowAttributes dnd_winattr; - XGetWindowAttributes( gdk_display, wp->xwindow, &dnd_winattr ); - wp->dnd_drag_savedeventmask = dnd_winattr.your_event_mask; - - gdk_dnd_drag_addwindow( m_widget->window ); - - GdkEventDragBegin ev; - ev.type = GDK_DRAG_BEGIN; - ev.window = m_widget->window; - ev.u.allflags = 0; - ev.u.flags.protocol_version = DND_PROTOCOL_VERSION; - - gdk_event_put( (GdkEvent*)&ev ); - - XGrabPointer( gdk_display, wp->xwindow, False, - ButtonMotionMask | ButtonPressMask | ButtonReleaseMask | PointerMotionMask, - GrabModeAsync, GrabModeAsync, gdk_root_window, None, CurrentTime ); - - gdk_dnd_set_drag_cursors( m_defaultCursor.GetCursor(), m_goaheadCursor.GetCursor() ); - - gdk_dnd.dnd_grabbed = TRUE; - gdk_dnd.drag_really = 1; - - int x = 0; - int y = 0; - wxGetMousePosition( &x, &y ); - - gdk_dnd_display_drag_cursor( x, y, FALSE, TRUE ); - - gs_currentDropSource = this; - - while (gdk_dnd.drag_really || gdk_dnd.drag_perhaps) wxYield(); - - gs_currentDropSource = (wxDropSource*) NULL; - - UnregisterWindow(); - - g_blockEventsOnDrag = FALSE; - - return m_retValue; -} - -void wxDropSource::RegisterWindow(void) -{ - if (!m_data) return; - - wxString formats; - - wxNode *node = m_data->m_dataObjects.First(); - while (node) - { - wxDataObject* dobj = (wxDataObject*) node->Data(); - - switch (dobj->GetFormat().GetType()) - { - case wxDF_TEXT: - { - formats += "text/plain"; - break; - } - case wxDF_FILENAME: - { - formats += "file:ALL"; - break; - } - case wxDF_PRIVATE: - { - wxPrivateDataObject* pdo = (wxPrivateDataObject*) m_data; - formats += pdo->GetId(); - break; - } - default: - break; - } - node = node->Next(); - } - - char *str = WXSTRINGCAST formats; - - gtk_widget_dnd_drag_set( m_widget, TRUE, &str, 1 ); - - gtk_signal_connect( GTK_OBJECT(m_widget), "drag_request_event", - GTK_SIGNAL_FUNC(gtk_drag_callback), (gpointer)this ); -} - -void wxDropSource::UnregisterWindow(void) -{ - if (!m_widget) return; - - gtk_widget_dnd_drag_set( m_widget, FALSE, (gchar **) NULL, 0 ); - - gtk_signal_disconnect_by_data( GTK_OBJECT(m_widget), (gpointer)this ); -} - - -/* - * Shaped Windows - */ -static GdkWindow *root_win = (GdkWindow*) NULL; - -typedef struct _cursoroffset {gint x,y;} CursorOffset; - -static void -shape_pressed (GtkWidget *widget, GdkEventButton *event) -{ - CursorOffset *p; - - /* ignore double and triple click */ - if (event->type != GDK_BUTTON_PRESS) - return; - - p = (CursorOffset *)gtk_object_get_user_data (GTK_OBJECT(widget)); - p->x = (int) event->x; - p->y = (int) event->y; - - gtk_grab_add (widget); - gdk_pointer_grab (widget->window, TRUE, - (GdkEventMask) - (GDK_BUTTON_RELEASE_MASK | - GDK_BUTTON_MOTION_MASK | - GDK_POINTER_MOTION_HINT_MASK), - (GdkWindow*)NULL, - (GdkCursor*) NULL, 0); -} - - -static void -shape_released (GtkWidget *widget) -{ - gtk_grab_remove (widget); - gdk_pointer_ungrab (0); -} - -static void -shape_motion (GtkWidget *widget, - GdkEventMotion * /*event*/ ) -{ - gint xp, yp; - CursorOffset * p; - GdkModifierType mask; - - p = (CursorOffset *)gtk_object_get_user_data (GTK_OBJECT (widget)); - - /* - * Can't use event->x / event->y here - * because I need absolute coordinates. - */ - - gdk_window_get_pointer (root_win, &xp, &yp, &mask); - gtk_widget_set_uposition (widget, xp - p->x, yp - p->y); - - if (gs_currentDropSource) gs_currentDropSource->GiveFeedback( wxDragCopy, FALSE ); -} - -GtkWidget * -shape_create_icon (char **data, - gint x, - gint y, - gint px, - gint py, - gint window_type) -{ - GtkWidget *window; - GtkWidget *pixmap; - GtkWidget *fixed; - CursorOffset* icon_pos; - GdkGC* gc; - GdkBitmap *gdk_pixmap_mask; - GdkPixmap *gdk_pixmap; - GtkStyle *style; - - style = gtk_widget_get_default_style (); - gc = style->black_gc; - - /* - * GDK_WINDOW_TOPLEVEL works also, giving you a title border - */ - window = gtk_window_new ((GtkWindowType)window_type); - - fixed = gtk_fixed_new (); - gtk_widget_set_usize (fixed, 100,100); - gtk_container_add (GTK_CONTAINER (window), fixed); - gtk_widget_show (fixed); - - gtk_widget_set_events (window, - gtk_widget_get_events (window) | - GDK_BUTTON_MOTION_MASK | - GDK_POINTER_MOTION_HINT_MASK | - GDK_BUTTON_PRESS_MASK); - - gtk_widget_realize (window); - - gdk_pixmap = gdk_pixmap_create_from_xpm_d (window->window, &gdk_pixmap_mask, - &style->bg[GTK_STATE_NORMAL], - (gchar**) data ); - - pixmap = gtk_pixmap_new (gdk_pixmap, gdk_pixmap_mask); - gtk_fixed_put (GTK_FIXED (fixed), pixmap, px,py); - gtk_widget_show (pixmap); - - gtk_widget_shape_combine_mask (window, gdk_pixmap_mask, px,py); - - - gtk_signal_connect (GTK_OBJECT (window), "button_press_event", - GTK_SIGNAL_FUNC (shape_pressed),NULL); - gtk_signal_connect (GTK_OBJECT (window), "button_release_event", - GTK_SIGNAL_FUNC (shape_released),NULL); - gtk_signal_connect (GTK_OBJECT (window), "motion_notify_event", - GTK_SIGNAL_FUNC (shape_motion),NULL); - - icon_pos = g_new (CursorOffset, 1); - gtk_object_set_user_data(GTK_OBJECT(window), icon_pos); - - gtk_widget_set_uposition (window, x, y); - gtk_widget_show (window); - - return window; -} - -#endif - // NEW_GTK_DND_CODE - -#endif - - // wxUSE_DRAG_AND_DROP \ No newline at end of file diff --git a/src/gtk1/fdiag.xbm b/src/gtk1/fdiag.xbm deleted file mode 100644 index 67d3b4732a..0000000000 --- a/src/gtk1/fdiag.xbm +++ /dev/null @@ -1,6 +0,0 @@ -#define fdiag_width 16 -#define fdiag_height 16 -static char fdiag_bits[] = { - 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, - 0x40, 0x40, 0x80, 0x80, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, - 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80}; diff --git a/src/gtk1/filedlg.cpp b/src/gtk1/filedlg.cpp deleted file mode 100644 index f33c3423c7..0000000000 --- a/src/gtk1/filedlg.cpp +++ /dev/null @@ -1,170 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: filedlg.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "filedlg.h" -#endif - -#include "wx/filedlg.h" -#include "wx/utils.h" -#include "wx/intl.h" -#include "wx/generic/msgdlgg.h" - -#include "gtk/gtk.h" - -//----------------------------------------------------------------------------- -// wxFileDialog -//----------------------------------------------------------------------------- - -void gtk_filedialog_ok_callback( GtkWidget *WXUNUSED(widget), gpointer data ) -{ - wxFileDialog *dialog = (wxFileDialog*)data; - wxCommandEvent event(wxEVT_NULL); - int style; - - style = dialog->GetStyle(); - - if((style&wxSAVE)&&(style&wxOVERWRITE_PROMPT)) - { - if(wxFileExists(gtk_file_selection_get_filename(GTK_FILE_SELECTION(dialog->m_widget) ))) - { - if(wxMessageBox(_("File exists. Overwrite?"), - _("Confirm"), wxYES_NO) != wxYES) - return; - } - } - - dialog->OnOK( event ); -} - -void gtk_filedialog_cancel_callback( GtkWidget *WXUNUSED(widget), gpointer data ) -{ - wxFileDialog *dialog = (wxFileDialog*)data; - wxCommandEvent event(wxEVT_NULL); - dialog->OnCancel( event ); -} - -IMPLEMENT_DYNAMIC_CLASS(wxFileDialog,wxDialog) - -wxFileDialog::wxFileDialog( wxWindow *parent, const wxString& message, - const wxString& defaultDir, const wxString& defaultFileName, - const wxString& wildCard, - long style, const wxPoint& pos ) -{ - m_needParent = FALSE; - - PreCreation( parent, -1, pos, wxDefaultSize, style | wxDIALOG_MODAL, "filedialog" ); - m_message = message; - m_path = ""; - m_fileName = defaultFileName; - m_dir = defaultDir; - m_wildCard = wildCard; - m_dialogStyle = style; - m_filterIndex = 1; - - m_widget = gtk_file_selection_new( m_message ); - - int x = (gdk_screen_width () - 400) / 2; - int y = (gdk_screen_height () - 400) / 2; - gtk_widget_set_uposition( m_widget, x, y ); - - GtkFileSelection *sel = GTK_FILE_SELECTION(m_widget); - - m_path.Append(m_dir); - if(! m_path.IsEmpty() && m_path.Last()!='/') m_path.Append('/'); - m_path.Append(m_fileName); - - if(m_path.Length()>1) gtk_file_selection_set_filename(sel,m_path); - - gtk_signal_connect( GTK_OBJECT(sel->ok_button), "clicked", - GTK_SIGNAL_FUNC(gtk_filedialog_ok_callback), (gpointer*)this ); - - gtk_signal_connect( GTK_OBJECT(sel->cancel_button), "clicked", - GTK_SIGNAL_FUNC(gtk_filedialog_cancel_callback), (gpointer*)this ); -} - -int wxFileDialog::ShowModal(void) -{ - int ret = wxDialog::ShowModal(); - - if (ret == wxID_OK) - { - m_fileName = gtk_file_selection_get_filename( GTK_FILE_SELECTION(m_widget) ); - m_path = gtk_file_selection_get_filename( GTK_FILE_SELECTION(m_widget) ); - } - return ret; -} - - -wxString wxFileSelector( const char *title, - const char *defaultDir, const char *defaultFileName, - const char *defaultExtension, const char *filter, int flags, - wxWindow *parent, int x, int y ) -{ - wxString filter2(""); - if ( defaultExtension && !filter ) - filter2 = wxString("*.") + wxString(defaultExtension) ; - else if ( filter ) - filter2 = filter; - - wxString defaultDirString; - if (defaultDir) - defaultDirString = defaultDir; - else - defaultDirString = ""; - - wxString defaultFilenameString; - if (defaultFileName) - defaultFilenameString = defaultFileName; - else - defaultFilenameString = ""; - - wxFileDialog fileDialog( parent, title, defaultDirString, defaultFilenameString, filter2, flags, wxPoint(x, y) ); - - if ( fileDialog.ShowModal() == wxID_OK ) - { - return fileDialog.GetPath(); - } - else - { - return wxEmptyString; - } -} - -wxString wxLoadFileSelector( const char *what, const char *extension, const char *default_name, wxWindow *parent ) -{ - char *ext = (char *)extension; - - char prompt[50]; - wxString str = _("Load %s file"); - sprintf(prompt, str, what); - - if (*ext == '.') ext++; - char wild[60]; - sprintf(wild, "*.%s", ext); - - return wxFileSelector (prompt, (const char *) NULL, default_name, ext, wild, 0, parent); -} - -wxString wxSaveFileSelector(const char *what, const char *extension, const char *default_name, - wxWindow *parent ) -{ - char *ext = (char *)extension; - - char prompt[50]; - wxString str = _("Save %s file"); - sprintf(prompt, str, what); - - if (*ext == '.') ext++; - char wild[60]; - sprintf(wild, "*.%s", ext); - - return wxFileSelector (prompt, (const char *) NULL, default_name, ext, wild, 0, parent); -} - diff --git a/src/gtk1/font.cpp b/src/gtk1/font.cpp deleted file mode 100644 index 9e52e23db1..0000000000 --- a/src/gtk1/font.cpp +++ /dev/null @@ -1,1012 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: font.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling, Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "font.h" -#endif - -#include "wx/font.h" -#include "wx/utils.h" -#include "wx/log.h" -#include - -#include "gdk/gdk.h" - -//----------------------------------------------------------------------------- -// local data -//----------------------------------------------------------------------------- - -/* -extern wxFontNameDirectory *wxTheFontNameDirectory; -*/ - -//----------------------------------------------------------------------------- -// wxFont -//----------------------------------------------------------------------------- - -class wxFontRefData: public wxObjectRefData -{ -public: - - wxFontRefData(); - wxFontRefData( const wxFontRefData& data ); - ~wxFontRefData(); - - wxList m_scaled_xfonts; - int m_pointSize; - int m_family, m_style, m_weight; - bool m_underlined; - wxString m_faceName; - - bool m_byXFontName; - GdkFont *m_font; - - friend wxFont; -}; - -wxFontRefData::wxFontRefData() : m_scaled_xfonts(wxKEY_INTEGER) -{ - m_byXFontName = FALSE; - m_pointSize = 12; - m_family = wxSWISS; - m_style = wxNORMAL; - m_weight = wxNORMAL; - m_underlined = FALSE; - m_font = (GdkFont *) NULL; -} - -wxFontRefData::wxFontRefData( const wxFontRefData& data ) : m_scaled_xfonts(wxKEY_INTEGER) -{ - m_byXFontName = FALSE; - m_pointSize = data.m_pointSize; - m_family = data.m_family; - m_style = data.m_style; - m_weight = data.m_weight; - m_underlined = data.m_underlined; - m_faceName = data.m_faceName; - m_font = (GdkFont *) NULL; - if (data.m_font) m_font = gdk_font_ref( data.m_font ); -} - -wxFontRefData::~wxFontRefData() -{ - wxNode *node = m_scaled_xfonts.First(); - while (node) - { - GdkFont *font = (GdkFont*)node->Data(); - wxNode *next = node->Next(); - gdk_font_unref( font ); - node = next; - } - if (m_font) gdk_font_unref( m_font ); -} - -//----------------------------------------------------------------------------- - -#define M_FONTDATA ((wxFontRefData *)m_refData) - -IMPLEMENT_DYNAMIC_CLASS(wxFont, wxGDIObject) - -wxFont::wxFont() -{ - if (wxTheFontList) wxTheFontList->Append( this ); -} - -wxFont::wxFont( char *xFontName ) -{ - if (!xFontName) return; - - m_refData = new wxFontRefData(); - - M_FONTDATA->m_byXFontName = TRUE; - M_FONTDATA->m_font = gdk_font_load( xFontName ); -} - -wxFont::wxFont( int pointSize, int family, int style, int weight, bool underlined = FALSE, - const wxString& face = wxEmptyString ) -{ - m_refData = new wxFontRefData(); - - if (family == wxDEFAULT) - M_FONTDATA->m_family = wxSWISS; - else - M_FONTDATA->m_family = family; - - if (!face.IsEmpty()) M_FONTDATA->m_faceName = face; - - if (style == wxDEFAULT) - M_FONTDATA->m_style = wxNORMAL; - else - M_FONTDATA->m_style = style; - - if (weight == wxDEFAULT) - M_FONTDATA->m_weight = wxNORMAL; - else - M_FONTDATA->m_weight = weight; - - if (pointSize == wxDEFAULT) - M_FONTDATA->m_pointSize = 12; - else - M_FONTDATA->m_pointSize = pointSize; - - M_FONTDATA->m_underlined = underlined; - - if (wxTheFontList) wxTheFontList->Append( this ); - -} - -wxFont::wxFont( const wxFont& font ) -{ - Ref( font ); - - if (wxTheFontList) wxTheFontList->Append( this ); -} - -wxFont::~wxFont() -{ - if (wxTheFontList) wxTheFontList->DeleteObject( this ); -} - -wxFont& wxFont::operator = ( const wxFont& font ) -{ - if (*this == font) return (*this); - Ref( font ); - return *this; -} - -bool wxFont::operator == ( const wxFont& font ) -{ - return m_refData == font.m_refData; -} - -bool wxFont::operator != ( const wxFont& font ) -{ - return m_refData != font.m_refData; -} - -bool wxFont::Ok() const -{ - return (m_refData != NULL); -} - -int wxFont::GetPointSize() const -{ - wxCHECK_MSG( Ok(), 0, "invalid font" ); - - return M_FONTDATA->m_pointSize; -} - -wxString wxFont::GetFaceName() const -{ - wxCHECK_MSG( Ok(), "", "invalid font" ); - - return M_FONTDATA->m_faceName; -} - -int wxFont::GetFamily() const -{ - wxCHECK_MSG( Ok(), 0, "invalid font" ); - - return M_FONTDATA->m_family; -} - -wxString wxFont::GetFamilyString() const -{ - wxCHECK_MSG( Ok(), "wxDEFAULT", "invalid font" ); - - switch (M_FONTDATA->m_family) - { - case wxDECORATIVE: return wxString("wxDECORATIVE"); - case wxROMAN: return wxString("wxROMAN"); - case wxSCRIPT: return wxString("wxSCRIPT"); - case wxSWISS: return wxString("wxSWISS"); - case wxMODERN: return wxString("wxMODERN"); - case wxTELETYPE: return wxString("wxTELETYPE"); - default: return "wxDEFAULT"; - } - - return "wxDEFAULT"; -} - -int wxFont::GetStyle() const -{ - wxCHECK_MSG( Ok(), 0, "invalid font" ); - - return M_FONTDATA->m_style; -} - -wxString wxFont::GetStyleString() const -{ - wxCHECK_MSG( Ok(), "wxDEFAULT", "invalid font" ); - - switch (M_FONTDATA->m_style) - { - case wxNORMAL: return wxString("wxNORMAL"); - case wxSLANT: return wxString("wxSLANT"); - case wxITALIC: return wxString("wxITALIC"); - default: return wxString("wxDEFAULT"); - } - - return wxString("wxDEFAULT"); -} - -int wxFont::GetWeight() const -{ - wxCHECK_MSG( Ok(), 0, "invalid font" ); - - return M_FONTDATA->m_weight; -} - -wxString wxFont::GetWeightString() const -{ - wxCHECK_MSG( Ok(), "wxDEFAULT", "invalid font" ); - - switch (M_FONTDATA->m_weight) - { - case wxNORMAL: return wxString("wxNORMAL"); - case wxBOLD: return wxString("wxBOLD"); - case wxLIGHT: return wxString("wxLIGHT"); - default: return wxString("wxDEFAULT"); - } - - return wxString("wxDEFAULT"); -} - -bool wxFont::GetUnderlined() const -{ - wxCHECK_MSG( Ok(), FALSE, "invalid font" ); - - return M_FONTDATA->m_underlined; -} - -void wxFont::Unshare() -{ - if (!m_refData) - { - m_refData = new wxFontRefData(); - } - else - { - wxFontRefData* ref = new wxFontRefData(*(wxFontRefData*)m_refData); - UnRef(); - m_refData = ref; - } -} - -void wxFont::SetPointSize(int pointSize) -{ - Unshare(); - - M_FONTDATA->m_pointSize = pointSize; -} - -void wxFont::SetFamily(int family) -{ - Unshare(); - - M_FONTDATA->m_family = family; -} - -void wxFont::SetStyle(int style) -{ - Unshare(); - - M_FONTDATA->m_style = style; -} - -void wxFont::SetWeight(int weight) -{ - Unshare(); - - M_FONTDATA->m_weight = weight; -} - -void wxFont::SetFaceName(const wxString& faceName) -{ - Unshare(); - - M_FONTDATA->m_faceName = faceName; -} - -void wxFont::SetUnderlined(bool underlined) -{ - Unshare(); - - M_FONTDATA->m_underlined = underlined; -} - -//----------------------------------------------------------------------------- -// get internal representation of font -//----------------------------------------------------------------------------- - -static GdkFont *wxLoadQueryNearestFont( int point_size, int family, int style, int weight, - bool underlined, const wxString &facename ); - -GdkFont *wxFont::GetInternalFont( float scale ) const -{ - if (!Ok()) - { - wxFAIL_MSG( "invalid font" ); - return (GdkFont*) NULL; - } - - /* short cut if the special X font constructor has been used */ - if (M_FONTDATA->m_byXFontName) return M_FONTDATA->m_font; - - long int_scale = long(scale * 100.0 + 0.5); /* key for fontlist */ - int point_scale = (M_FONTDATA->m_pointSize * 10 * int_scale) / 100; - GdkFont *font = (GdkFont *) NULL; - - wxNode *node = M_FONTDATA->m_scaled_xfonts.Find(int_scale); - if (node) - { - font = (GdkFont*)node->Data(); - } - else - { -/* - if ((int_scale == 100) && - (M_FONTDATA->m_family == wxSWISS) && - (M_FONTDATA->m_style == wxNORMAL) && - (M_FONTDATA->m_pointSize == 12) && - (M_FONTDATA->m_weight == wxNORMAL) && - (M_FONTDATA->m_underlined == FALSE)) - { - font = gdk_font_load( "-adobe-helvetica-medium-r-normal--*-120-*-*-*-*-*-*" ); - } - else -*/ - { - font = wxLoadQueryNearestFont( point_scale, M_FONTDATA->m_family, M_FONTDATA->m_style, - M_FONTDATA->m_weight, M_FONTDATA->m_underlined, M_FONTDATA->m_faceName ); - } - M_FONTDATA->m_scaled_xfonts.Append( int_scale, (wxObject*)font ); - } - - if (!font) - { - wxLogError("could not load any font"); - } - - return font; -} - -//----------------------------------------------------------------------------- -// local utilities to find a X font -//----------------------------------------------------------------------------- - -static GdkFont*wxLoadQueryFont( int pointSize, int family, int style, int weight, - bool underlined, const wxString &facename ) -{ - char *xfamily = (char*) NULL; - char *xstyle = (char*) NULL; - char *xweight = (char*) NULL; - - switch (family) - { - case wxDECORATIVE: xfamily = "lucida"; break; - case wxROMAN: xfamily = "times"; break; - case wxMODERN: xfamily = "courier"; break; - case wxSWISS: xfamily = "helvetica"; break; - case wxTELETYPE: xfamily = "lucidatypewriter"; break; - case wxSCRIPT: xfamily = "utopia"; break; - default: xfamily = "*"; - } - - if (!facename.IsEmpty()) - { - sprintf( wxBuffer, "-*-%s-*-*-normal-*-*-*-*-*-*-*-*-*", facename.c_str() ); - GdkFont *test = gdk_font_load( wxBuffer ); - if (test) - { - gdk_font_unref( test ); - xfamily = WXSTRINGCAST facename; - } - } - - switch (style) - { - case wxITALIC: xstyle = "i"; break; - case wxSLANT: xstyle = "o"; break; - case wxNORMAL: xstyle = "r"; break; - default: xstyle = "*"; break; - } - switch (weight) - { - case wxBOLD: xweight = "bold"; break; - case wxLIGHT: - case wxNORMAL: xweight = "medium"; break; - default: xweight = "*"; break; - } - - sprintf( wxBuffer, "-*-%s-%s-%s-normal-*-*-%d-*-*-*-*-*-*", - xfamily, xweight, xstyle, pointSize); - - return gdk_font_load( wxBuffer ); -} - -static GdkFont *wxLoadQueryNearestFont( int point_size, int family, int style, int weight, - bool underlined, const wxString &facename ) -{ - GdkFont *font = wxLoadQueryFont( point_size, family, style, weight, underlined, facename ); - - if (!font) - { - /* search up and down by stepsize 10 */ - int max_size = point_size + 20 * (1 + (point_size/180)); - int min_size = point_size - 20 * (1 + (point_size/180)); - - /* Search for smaller size (approx.) */ - for (int i=point_size-10; !font && i >= 10 && i >= min_size; i -= 10) - font = wxLoadQueryFont(i, family, style, weight, underlined, facename ); - - /* Search for larger size (approx.) */ - for (int i=point_size+10; !font && i <= max_size; i += 10) - font = wxLoadQueryFont( i, family, style, weight, underlined, facename ); - - /* Try default family */ - if (!font && family != wxDEFAULT) - font = wxLoadQueryFont( point_size, wxDEFAULT, style, weight, underlined, facename ); - - /* Bogus font */ - if (!font) - font = wxLoadQueryFont(120, wxDEFAULT, wxNORMAL, wxNORMAL, underlined, facename ); - } - - return font; -} - -/* - -//----------------------------------------------------------------------------- -// face names and index functions -//----------------------------------------------------------------------------- - -static char *font_defaults[] = { - "FamilyDefault", "Default", - "FamilyRoman", "Roman", - "FamilyDecorative", "Decorative", - "FamilyModern", "Modern", - "FamilyTeletype", "Teletype", - "FamilySwiss", "Swiss", - "FamilyScript", "Script", - - "AfmMedium", "", - "AfmBold", "Bo", - "AfmLight", "", - "AfmStraight", "", - "AfmItalic", "${AfmSlant}", - "AfmSlant", "O", - "AfmRoman", "Ro", - "AfmTimes", "Times", - "AfmHelvetica", "Helv", - "AfmCourier", "Cour", - - "Afm___", "${AfmTimes,$[weight],$[style]}", - - "AfmTimes__", "${AfmTimes}${Afm$[weight]}${Afm$[style]}", - "AfmTimesMediumStraight", "${AfmTimes}${AfmRoman}", - "AfmTimesLightStraight", "${AfmTimes}${AfmRoman}", - "AfmTimes_Italic", "${AfmTimes}$[weight]${AfmItalic}", - "AfmTimes_Slant", "${AfmTimes}$[weight]${AfmItalic}", - - "AfmSwiss__", "${AfmHelvetica}${Afm$[weight]}${Afm$[style]}", - "AfmModern__", "${AfmCourier}${Afm$[weight]}${Afm$[style]}", - - "AfmTeletype__", "${AfmModern,$[weight],$[style]}", - - "PostScriptMediumStraight", "", - "PostScriptMediumItalic", "-Oblique", - "PostScriptMediumSlant", "-Oblique", - "PostScriptLightStraight", "", - "PostScriptLightItalic", "-Oblique", - "PostScriptLightSlant", "-Oblique", - "PostScriptBoldStraight", "-Bold", - "PostScriptBoldItalic", "-BoldOblique", - "PostScriptBoldSlant", "-BoldOblique", - -#if WX_NORMALIZED_PS_FONTS - "PostScript___", "${PostScriptTimes,$[weight],$[style]}", -#else - "PostScriptRoman__", "${PostScriptTimes,$[weight],$[style]}", - "PostScript___", "LucidaSans${PostScript$[weight]$[style]}", -#endif - - "PostScriptTimesMedium", "", - "PostScriptTimesLight", "", - "PostScriptTimesBold", "Bold", - - "PostScriptTimes__", "Times${PostScript$[weight]$[style]}", - "PostScriptTimesMediumStraight", "Times-Roman", - "PostScriptTimesLightStraight", "Times-Roman", - "PostScriptTimes_Slant", "Times-${PostScriptTimes$[weight]}Italic", - "PostScriptTimes_Italic", "Times-${PostScriptTimes$[weight]}Italic", - - "PostScriptSwiss__", "Helvetica${PostScript$[weight]$[style]}", - "PostScriptModern__", "Courier${PostScript$[weight]$[style]}", - - "PostScriptTeletype__", "${PostScriptModern,$[weight],$[style]}", - -#if !WX_NORMALIZED_PS_FONTS - "PostScriptScript__", "Zapf-Chancery-MediumItalic", -#endif - - "ScreenMedium", "medium", - "ScreenBold", "bold", - "ScreenLight", "light", - "ScreenStraight", "r", - "ScreenItalic", "i", - "ScreenSlant", "o", - - "ScreenDefaultBase", "*-times", - - "ScreenRomanBase", "*-times", - "ScreenDecorativeBase", "*-helvetica", - "ScreenModernBase", "*-courier", - "ScreenTeletypeBase", "*-lucidatypewriter", - "ScreenSwissBase", "*-lucida", - "ScreenScriptBase", "*-zapfchancery", - - "ScreenStdSuffix", "-${Screen$[weight]}-${Screen$[style]}" - "-normal-*-*-%d-*-*-*-*-*-*", - - "Screen___", - "-${ScreenDefaultBase}${ScreenStdSuffix}", - "ScreenRoman__", - "-${ScreenRomanBase}${ScreenStdSuffix}", - "ScreenDecorative__", - "-${ScreenDecorativeBase}${ScreenStdSuffix}", - "ScreenModern__", - "-${ScreenModernBase}${ScreenStdSuffix}", - "ScreenTeletype__", - "-${ScreenTeletypeBase}${ScreenStdSuffix}", - "ScreenSwiss__", - "-${ScreenSwissBase}${ScreenStdSuffix}", - "ScreenScript__", - "-${ScreenScriptBase}${ScreenStdSuffix}", - (char *) NULL -}; - -enum {wxWEIGHT_NORMAL, wxWEIGHT_BOLD, wxWEIGHT_LIGHT, wxNUM_WEIGHTS}; -enum {wxSTYLE_NORMAL, wxSTYLE_ITALIC, wxSTYLE_SLANT, wxNUM_STYLES}; - -static int WCoordinate(int w) -{ - switch (w) - { - case wxBOLD: return wxWEIGHT_BOLD; - case wxLIGHT: return wxWEIGHT_LIGHT; - case wxNORMAL: - default: return wxWEIGHT_NORMAL; - } -}; - -static int SCoordinate(int s) -{ - switch (s) - { - case wxITALIC: return wxSTYLE_ITALIC; - case wxSLANT: return wxSTYLE_SLANT; - case wxNORMAL: - default: return wxSTYLE_NORMAL; - } -}; - -//----------------------------------------------------------------------------- -// wxSuffixMap -//----------------------------------------------------------------------------- - -class wxSuffixMap -{ -public: - ~wxSuffixMap(); - - inline char *GetName(int weight, int style) - { - return ( map [WCoordinate(weight)] [SCoordinate(style)] ); - } - - char *map[wxNUM_WEIGHTS][wxNUM_STYLES]; - void Initialize(const char *, const char *); -}; - -static void SearchResource(const char *prefix, const char **names, int count, char **v) -{ - int k, i, j; - char resource[1024], **defaults, *internal; - - k = 1 << count; - - *v = (char *) NULL; - internal = (char *) NULL; - - for (i = 0; i < k; i++) - { - strcpy(resource, prefix); - for (j = 0; j < count; j++) - { - // upon failure to find a matching fontname - // in the default fonts above, we substitute more - // and more values by _ so that at last ScreenMyFontBoldNormal - // would turn into Screen___ and this will then get - // converted to -${ScreenDefaultBase}${ScreenStdSuffix} - - if (!(i & (1 << j))) - strcat(resource, names[j]); - else - strcat(resource, "_"); - } - - // we previously search the Xt-resources here - - if (!internal) - { - defaults = font_defaults; - while (*defaults) - { - if (!strcmp(*defaults, resource)) - { - internal = defaults[1]; - break; - } - defaults += 2; - } - } - } - - if (internal) - { - if ((strcmp(internal,"-${ScreenDefaultBase}${ScreenStdSuffix}") == 0) && - (strcmp(names[0], "Default") != 0)) - { - // we did not find any font name in the standard list. - // this can (hopefully does) mean that someone supplied - // the facename in the wxFont constructor so we insert - // it here - - strcpy( resource,"-*-" ); // any producer - strcat( resource, names[0] ); // facename - strcat( resource, "${ScreenStdSuffix}" ); // add size params later on - *v = copystring(resource); - } - else - { - *v = copystring(internal); - } - } -} - -wxSuffixMap::~wxSuffixMap() -{ - int k, j; - - for (k = 0; k < wxNUM_WEIGHTS; ++k) - for (j = 0; j < wxNUM_STYLES; ++j) - if (map[k][j]) - { - delete[] map[k][j]; - map[k][j] = (char *) NULL; - } -} - -void wxSuffixMap::Initialize(const char *resname, const char *devresname) -{ - const char *weight, *style; - char *v; - int i, j, k; - const char *names[3]; - - for (k = 0; k < wxNUM_WEIGHTS; k++) - { - switch (k) - { - case wxWEIGHT_NORMAL: weight = "Medium"; break; - case wxWEIGHT_LIGHT: weight = "Light"; break; - case wxWEIGHT_BOLD: - default: weight = "Bold"; - } - for (j = 0; j < wxNUM_STYLES; j++) - { - switch (j) - { - case wxSTYLE_NORMAL: style = "Straight"; break; - case wxSTYLE_ITALIC: style = "Italic"; break; - case wxSTYLE_SLANT: - default: style = "Slant"; - } - names[0] = resname; - names[1] = weight; - names[2] = style; - - SearchResource(devresname, names, 3, &v); - - // Expand macros in the found string: -found: - int len, closer = 0, startpos = 0; - - len = (v ? strlen(v) : 0); - for (i = 0; i < len; i++) - { - if (v[i] == '$' && ((v[i+1] == '[') || (v[i+1] == '{'))) - { - startpos = i; - closer = (v[i+1] == '[') ? ']' : '}'; - ++i; - } - else if (v[i] == closer) - { - int newstrlen; - const char *r = (char *) NULL; bool delete_r = FALSE; - char *name; - - name = v + startpos + 2; - v[i] = 0; - - if (closer == '}') - { - int i, count, len; - char **names; - - for (i = 0, count = 1; name[i]; i++) - if (name[i] == ',') - count++; - - len = i; - - names = new char*[count]; - names[0] = name; - for (i = 0, count = 1; i < len; i++) - if (name[i] == ',') - { - names[count++] = name + i + 1; - name[i] = 0; - } - - SearchResource("", (const char **)names, count, (char **)&r); - delete_r = (r != 0); - delete[] names; - - if (!r) - { - for (i = 0; i < len; i++) - if (!name[i]) - name[i] = ','; - r = ""; - wxLogError( "Bad resource name in font lookup." ); - } - } else if (!strcmp(name, "weight")) { - r = weight; - } else if (!strcmp(name, "style")) { - r = style; - } else if (!strcmp(name, "family")) { - r = resname; - } else { - r = ""; - wxLogError( "Bad font macro name." ); - } - - // add r to v - newstrlen = strlen(r); - char *naya = new char[startpos + newstrlen + len - i]; - memcpy(naya, v, startpos); - memcpy(naya + startpos, r, newstrlen); - memcpy(naya + startpos + newstrlen, v + i + 1, len - i); - if (delete_r) - delete[] (char*)r; - delete[] v; - v = naya; - - goto found; - } - } - // We have a final value: - map[k][j] = v; - } - } -} - -//----------------------------------------------------------------------------- -// wxFontNameItem -//----------------------------------------------------------------------------- - -class wxFontNameItem : public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxFontNameItem) -public: - wxFontNameItem(const char *name, int id, int family); - ~wxFontNameItem(); - - inline char* GetScreenName(int w, int s) {return screen.GetName(w, s);} - inline char* GetPostScriptName(int w, int s) {return printing.GetName(w, s);} - inline char* GetAFMName(int w, int s) {return afm.GetName(w, s);} - inline char* GetName() {return name;} - inline int GetFamily() {return family;} - inline int GetId() {return id;} - inline bool IsRoman() {return isroman;} -#if defined(__WXDEBUG__) - void Dump(ostream& str); -#endif - - int id; - int family; - char *name; - wxSuffixMap screen, printing, afm; - bool isroman; -}; - -IMPLEMENT_ABSTRACT_CLASS(wxFontNameItem, wxObject) - -wxFontNameItem::wxFontNameItem(const char *Name, int Id, int Family) -{ - name = copystring(Name); - id = Id; - family = Family; - - screen. Initialize(name, "Screen"); - printing.Initialize(name, "PostScript"); - afm. Initialize(name, "Afm"); -} - -wxFontNameItem::~wxFontNameItem() -{ - if (name) - delete[] name; - name = (char *) NULL; -} - -#if defined(__WXDEBUG__) -void wxFontNameItem::Dump(ostream& str) -{ - str << "wxFontNameItem(" << name << ")"; -} -#endif - -//----------------------------------------------------------------------------- -// wxFontDirectory -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxFontNameDirectory, wxObject) - -wxFontNameDirectory::wxFontNameDirectory() -{ - table = new wxHashTable(wxKEY_INTEGER, 20); - nextFontId = -1; -} - -wxFontNameDirectory::~wxFontNameDirectory() -{ - // Cleanup wxFontNameItems allocated - table->BeginFind(); - wxNode *node = table->Next(); - while (node) - { - wxFontNameItem *item = (wxFontNameItem*)node->Data(); - delete item; - node = table->Next(); - } - delete table; -} - -int wxFontNameDirectory::GetNewFontId() -{ - return (nextFontId--); -} - -void wxFontNameDirectory::Initialize() -{ - Initialize(wxDEFAULT, wxDEFAULT, "Default"); - Initialize(wxDECORATIVE, wxDECORATIVE, "Decorative"); - Initialize(wxROMAN, wxROMAN, "Roman"); - Initialize(wxMODERN, wxMODERN, "Modern"); - Initialize(wxTELETYPE, wxTELETYPE, "Teletype"); - Initialize(wxSWISS, wxSWISS, "Swiss"); - Initialize(wxSCRIPT, wxSCRIPT, "Script"); -} - -void wxFontNameDirectory::Initialize(int fontid, int family, const char *resname) -{ - char *fam, resource[256]; - - sprintf(resource, "Family%s", resname); - SearchResource((const char *)resource, (const char **) NULL, 0, (char **)&fam); - - if (fam) - { - if (!strcmp(fam, "Default")) family = wxDEFAULT; - else if (!strcmp(fam, "Roman")) family = wxROMAN; - else if (!strcmp(fam, "Decorative")) family = wxDECORATIVE; - else if (!strcmp(fam, "Modern")) family = wxMODERN; - else if (!strcmp(fam, "Teletype")) family = wxTELETYPE; - else if (!strcmp(fam, "Swiss")) family = wxSWISS; - else if (!strcmp(fam, "Script")) family = wxSCRIPT; - delete[] fam; // free resource - } - table->Put(fontid, new wxFontNameItem(resname, fontid, family)); -} - -int wxFontNameDirectory::FindOrCreateFontId(const char *name, int family) -{ - int id; - - // font exists -> return id - if ( (id = GetFontId(name)) ) return id; - - // create new font - Initialize(id=GetNewFontId(), family, name); - return id; -} - -char *wxFontNameDirectory::GetScreenName(int fontid, int weight, int style) -{ - wxFontNameItem *item = (wxFontNameItem*)table->Get(fontid); // find font - if (item) - return item->GetScreenName(weight, style); - - // font does not exist - return (char *) NULL; -} - -char *wxFontNameDirectory::GetPostScriptName(int fontid, int weight, int style) -{ - wxFontNameItem *item = (wxFontNameItem*)table->Get(fontid); // find font - if (item) - return item->GetPostScriptName(weight, style); - - // font does not exist - return (char *) NULL; -} - -char *wxFontNameDirectory::GetAFMName(int fontid, int weight, int style) -{ - wxFontNameItem *item = (wxFontNameItem *)table->Get(fontid); // find font - if (item) - return item->GetAFMName(weight, style); - // font does not exist - return (char *) NULL; -} - -char *wxFontNameDirectory::GetFontName(int fontid) -{ - wxFontNameItem *item = (wxFontNameItem *)table->Get(fontid); // find font - if (item) - return item->GetName(); - - // font does not exist - return (char *) NULL; -} - -int wxFontNameDirectory::GetFontId(const char *name) -{ - wxNode *node; - - table->BeginFind(); - - while ( (node = table->Next()) ) - { - wxFontNameItem *item = (wxFontNameItem*)node->Data(); - if (!strcmp(name, item->name)) - return item->id; - } - - // font does not exist - return 0; -} - -int wxFontNameDirectory::GetFamily(int fontid) -{ - wxFontNameItem *item = (wxFontNameItem *)table->Get(fontid); - - if (item) - return item->family; - - // font does not exist - return wxDEFAULT; -} - -*/ diff --git a/src/gtk1/frame.cpp b/src/gtk1/frame.cpp deleted file mode 100644 index 9d83f91591..0000000000 --- a/src/gtk1/frame.cpp +++ /dev/null @@ -1,660 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: frame.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "frame.h" -#endif - -#include "wx/frame.h" -#include "wx/dialog.h" -#include "wx/control.h" -#include "wx/app.h" -#include "wx/menu.h" -#include "wx/toolbar.h" -#include "wx/statusbr.h" -#include "wx/dcclient.h" - -#include "glib.h" -#include "gdk/gdk.h" -#include "gtk/gtk.h" -#include "wx/gtk/win_gtk.h" - -//----------------------------------------------------------------------------- -// constants -//----------------------------------------------------------------------------- - -const int wxMENU_HEIGHT = 27; -const int wxSTATUS_HEIGHT = 25; - -//----------------------------------------------------------------------------- -// data -//----------------------------------------------------------------------------- - -extern wxList wxTopLevelWindows; -extern wxList wxPendingDelete; - -//----------------------------------------------------------------------------- -// "size_allocate" -//----------------------------------------------------------------------------- - -static void gtk_frame_size_callback( GtkWidget *WXUNUSED(widget), GtkAllocation* alloc, wxFrame *win ) -{ - if (!win->HasVMT()) return; - -/* - printf( "OnFrameResize from " ); - if (win->GetClassInfo() && win->GetClassInfo()->GetClassName()) - printf( win->GetClassInfo()->GetClassName() ); - printf( ".\n" ); -*/ - - if ((win->m_width != alloc->width) || (win->m_height != alloc->height)) - { - win->m_sizeSet = FALSE; - win->m_width = alloc->width; - win->m_height = alloc->height; - } -} - -//----------------------------------------------------------------------------- -// "delete_event" -//----------------------------------------------------------------------------- - -static gint gtk_frame_delete_callback( GtkWidget *WXUNUSED(widget), GdkEvent *WXUNUSED(event), wxFrame *win ) -{ -/* - printf( "OnDelete from " ); - if (win->GetClassInfo() && win->GetClassInfo()->GetClassName()) - printf( win->GetClassInfo()->GetClassName() ); - printf( ".\n" ); -*/ - - win->Close(); - - return TRUE; -} - -//----------------------------------------------------------------------------- -// "configure_event" -//----------------------------------------------------------------------------- - -static gint gtk_frame_configure_callback( GtkWidget *WXUNUSED(widget), GdkEventConfigure *event, wxFrame *win ) -{ - if (!win->HasVMT()) return FALSE; - - win->m_x = event->x; - win->m_y = event->y; - - wxMoveEvent mevent( wxPoint(win->m_x,win->m_y), win->GetId() ); - mevent.SetEventObject( win ); - win->GetEventHandler()->ProcessEvent( mevent ); - - return FALSE; -} - -//----------------------------------------------------------------------------- -// wxFrame -//----------------------------------------------------------------------------- - -BEGIN_EVENT_TABLE(wxFrame, wxWindow) - EVT_SIZE(wxFrame::OnSize) - EVT_CLOSE(wxFrame::OnCloseWindow) -END_EVENT_TABLE() - -IMPLEMENT_DYNAMIC_CLASS(wxFrame,wxWindow) - -wxFrame::wxFrame() -{ - m_frameMenuBar = (wxMenuBar *) NULL; - m_frameStatusBar = (wxStatusBar *) NULL; - m_frameToolBar = (wxToolBar *) NULL; - m_sizeSet = FALSE; - m_miniEdge = 0; - m_miniTitle = 0; -} - -wxFrame::wxFrame( wxWindow *parent, wxWindowID id, const wxString &title, - const wxPoint &pos, const wxSize &size, - long style, const wxString &name ) -{ - m_frameMenuBar = (wxMenuBar *) NULL; - m_frameStatusBar = (wxStatusBar *) NULL; - m_frameToolBar = (wxToolBar *) NULL; - m_sizeSet = FALSE; - m_miniEdge = 0; - m_miniTitle = 0; - Create( parent, id, title, pos, size, style, name ); -} - -bool wxFrame::Create( wxWindow *parent, wxWindowID id, const wxString &title, - const wxPoint &pos, const wxSize &size, - long style, const wxString &name ) -{ - wxTopLevelWindows.Append( this ); - - m_needParent = FALSE; - - PreCreation( parent, id, pos, size, style, name ); - - m_title = title; - - GtkWindowType win_type = GTK_WINDOW_TOPLEVEL; - if (style & wxSIMPLE_BORDER) win_type = GTK_WINDOW_POPUP; - - m_widget = gtk_window_new( win_type ); - -#ifdef __WXDEBUG__ - debug_focus_in( m_widget, "wxFrame::m_widget", name ); -#endif - - if ((size.x != -1) && (size.y != -1)) - gtk_widget_set_usize( m_widget, m_width, m_height ); - if ((pos.x != -1) && (pos.y != -1)) - gtk_widget_set_uposition( m_widget, m_x, m_y ); - - gtk_window_set_title( GTK_WINDOW(m_widget), title ); - GTK_WIDGET_UNSET_FLAGS( m_widget, GTK_CAN_FOCUS ); - - gtk_widget_set( m_widget, "GtkWindow::allow_shrink", TRUE, NULL ); - - gtk_signal_connect( GTK_OBJECT(m_widget), "delete_event", - GTK_SIGNAL_FUNC(gtk_frame_delete_callback), (gpointer)this ); - - m_wxwindow = gtk_myfixed_new(); - gtk_widget_show( m_wxwindow ); - GTK_WIDGET_UNSET_FLAGS( m_wxwindow, GTK_CAN_FOCUS ); - -#ifdef __WXDEBUG__ - debug_focus_in( m_wxwindow, "wxFrame::m_wxwindow", name ); -#endif - - gtk_container_add( GTK_CONTAINER(m_widget), m_wxwindow ); - - gtk_signal_connect( GTK_OBJECT(m_widget), "size_allocate", - GTK_SIGNAL_FUNC(gtk_frame_size_callback), (gpointer)this ); - - gtk_signal_connect( GTK_OBJECT(m_widget), "configure_event", - GTK_SIGNAL_FUNC(gtk_frame_configure_callback), (gpointer)this ); - - if (m_parent) m_parent->AddChild( this ); - - PostCreation(); - - return TRUE; -} - -wxFrame::~wxFrame() -{ - if (m_frameMenuBar) delete m_frameMenuBar; - if (m_frameStatusBar) delete m_frameStatusBar; - if (m_frameToolBar) delete m_frameToolBar; - - wxTopLevelWindows.DeleteObject( this ); - - if (wxTheApp->GetTopWindow() == this) - { - wxTheApp->SetTopWindow( (wxWindow*) NULL ); - } - - if (wxTopLevelWindows.Number() == 0) - { - wxTheApp->ExitMainLoop(); - } -} - -bool wxFrame::Show( bool show ) -{ - wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); - - if (show && !m_sizeSet) - { - // by calling GtkOnSize here, we don't have to call - // either after showing the frame, which would entail - // much ugly flicker nor from within the size_allocate - // handler, because GTK 1.1.X forbids that. - - GtkOnSize( m_x, m_y, m_width, m_height ); - } - - return wxWindow::Show( show ); -} - -void wxFrame::OnCloseWindow( wxCloseEvent &event ) -{ - if (GetEventHandler()->OnClose() || event.GetForce()) this->Destroy(); -} - -bool wxFrame::Destroy() -{ - wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); - - if (!wxPendingDelete.Member(this)) wxPendingDelete.Append(this); - - return TRUE; -} - -wxPoint wxFrame::GetClientAreaOrigin() const -{ - wxPoint pt( m_miniEdge, m_miniEdge + m_miniTitle ); - if (m_frameMenuBar) - { - int h = 0; - m_frameMenuBar->GetSize( (int*)NULL, &h ); - pt.y += h; - } - if (m_frameToolBar) - { - int h = 0; - m_frameToolBar->GetSize( (int*)NULL, &h ); - pt.y += h; - } - return pt; -} - -void wxFrame::SetSize( int x, int y, int width, int height, int sizeFlags ) -{ - wxASSERT_MSG( (m_widget != NULL), "invalid window" ); - - // Don't do anything for children of wxMDIChildFrame - if (!m_wxwindow) return; - - if (m_resizing) return; // I don't like recursions - m_resizing = TRUE; - - int old_x = m_x; - int old_y = m_y; - int old_width = m_width; - int old_height = m_height; - - if ((sizeFlags & wxSIZE_USE_EXISTING) == wxSIZE_USE_EXISTING) - { - if (x != -1) m_x = x; - if (y != -1) m_y = y; - if (width != -1) m_width = width; - if (height != -1) m_height = height; - } - else - { - m_x = x; - m_y = y; - m_width = width; - m_height = height; - } - - if ((sizeFlags & wxSIZE_AUTO_WIDTH) == wxSIZE_AUTO_WIDTH) - { - if (width == -1) m_width = 80; - } - - if ((sizeFlags & wxSIZE_AUTO_HEIGHT) == wxSIZE_AUTO_HEIGHT) - { - if (height == -1) m_height = 26; - } - - if ((m_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth; - if ((m_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight; - if ((m_maxWidth != -1) && (m_width > m_maxWidth)) m_width = m_maxWidth; - if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_maxHeight; - - if ((m_x != -1) || (m_y != -1)) - { - if ((m_x != old_x) || (m_y != old_y)) - gtk_widget_set_uposition( m_widget, m_x, m_y ); - } - - if ((m_width != old_width) || (m_height != old_height)) - { - gtk_widget_set_usize( m_widget, m_width, m_height ); - } - - wxSizeEvent event( wxSize(m_width,m_height), GetId() ); - event.SetEventObject( this ); - GetEventHandler()->ProcessEvent( event ); - - m_resizing = FALSE; -} - -void wxFrame::SetSize( int width, int height ) -{ - SetSize( -1, -1, width, height, wxSIZE_USE_EXISTING ); -} - -void wxFrame::Centre( int direction ) -{ - wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); - - int x = 0; - int y = 0; - - if (direction & wxHORIZONTAL == wxHORIZONTAL) x = (gdk_screen_width () - m_width) / 2; - if (direction & wxVERTICAL == wxVERTICAL) y = (gdk_screen_height () - m_height) / 2; - - Move( x, y ); -} - -void wxFrame::GetClientSize( int *width, int *height ) const -{ - wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); - - wxWindow::GetClientSize( width, height ); - if (height) - { - if (m_frameMenuBar) (*height) -= wxMENU_HEIGHT; - if (m_frameStatusBar) (*height) -= wxSTATUS_HEIGHT; - if (m_frameToolBar) - { - int y = 0; - m_frameToolBar->GetSize( (int *) NULL, &y ); - (*height) -= y; - } - (*height) -= m_miniEdge*2 + m_miniTitle; - } - if (width) - { - (*width) -= m_miniEdge*2; - } -} - -void wxFrame::SetClientSize( int const width, int const height ) -{ - wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); - - int h = height; - if (m_frameMenuBar) h += wxMENU_HEIGHT; - if (m_frameStatusBar) h += wxSTATUS_HEIGHT; - if (m_frameToolBar) - { - int y = 0; - m_frameToolBar->GetSize( (int *) NULL, &y ); - h += y; - } - wxWindow::SetClientSize( width + m_miniEdge*2, h + m_miniEdge*2 + m_miniTitle ); -} - -void wxFrame::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), int width, int height ) -{ - // due to a bug in gtk, x,y are always 0 - // m_x = x; - // m_y = y; - - if (m_resizing) return; - m_resizing = TRUE; - - if (!m_wxwindow) return; - - m_width = width; - m_height = height; - - if ((m_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth; - if ((m_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight; - if ((m_maxWidth != -1) && (m_width > m_maxWidth)) m_width = m_maxWidth; - if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_maxHeight; - - gtk_widget_set_usize( m_widget, m_width, m_height ); - - // this emulates the new wxMSW behaviour of placing all - // frame-subwindows (menu, toolbar..) on one native window - // OK, this hurts in the eye, but I don't want to call SetSize() - // because I don't want to call any non-native functions here. - - if (m_frameMenuBar) - { - int xx = m_miniEdge; - int yy = m_miniEdge + m_miniTitle; - int ww = m_width - 2*m_miniEdge; - int hh = wxMENU_HEIGHT; - m_frameMenuBar->m_x = xx; - m_frameMenuBar->m_y = yy; - m_frameMenuBar->m_width = ww; - m_frameMenuBar->m_height = hh; - - gtk_myfixed_move( GTK_MYFIXED(m_wxwindow), m_frameMenuBar->m_widget, xx, yy ); - gtk_widget_set_usize( m_frameMenuBar->m_widget, ww, hh ); - } - - if (m_frameToolBar) - { - int xx = m_miniEdge; - int yy = m_miniEdge + m_miniTitle; - if (m_frameMenuBar) yy += wxMENU_HEIGHT; - int ww = m_width - 2*m_miniEdge; - int hh = m_frameToolBar->m_height; - - m_frameToolBar->m_x = xx; - m_frameToolBar->m_y = yy; - m_frameToolBar->m_height = hh; - m_frameToolBar->m_width = ww; - - gtk_myfixed_move( GTK_MYFIXED(m_wxwindow), m_frameToolBar->m_widget, xx, yy ); - gtk_widget_set_usize( m_frameToolBar->m_widget, ww, hh ); - } - - if (m_frameStatusBar) - { - int xx = 0 + m_miniEdge; - int yy = m_height - wxSTATUS_HEIGHT - m_miniEdge; - int ww = m_width - 2*m_miniEdge; - int hh = wxSTATUS_HEIGHT; - - m_frameStatusBar->m_x = xx; - m_frameStatusBar->m_y = yy; - m_frameStatusBar->m_width = ww; - m_frameStatusBar->m_height = hh; - - gtk_myfixed_move( GTK_MYFIXED(m_wxwindow), m_frameStatusBar->m_widget, xx, yy ); - gtk_widget_set_usize( m_frameStatusBar->m_widget, ww, hh ); - } - - m_sizeSet = TRUE; - - wxSizeEvent event( wxSize(m_width,m_height), GetId() ); - event.SetEventObject( this ); - GetEventHandler()->ProcessEvent( event ); - - m_resizing = FALSE; -} - -void wxFrame::OnInternalIdle() -{ - if (!m_sizeSet) - GtkOnSize( m_x, m_y, m_width, m_height ); - - DoMenuUpdates(); -} - -void wxFrame::OnSize( wxSizeEvent &WXUNUSED(event) ) -{ - wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); - - if (GetAutoLayout()) - { - Layout(); - } - else - { - // no child: go out ! - if (!GetChildren().First()) return; - - // do we have exactly one child? - wxWindow *child = (wxWindow *) NULL; - for(wxNode *node = GetChildren().First(); node; node = node->Next()) - { - wxWindow *win = (wxWindow *)node->Data(); - if (!wxIS_KIND_OF(win,wxFrame) && !wxIS_KIND_OF(win,wxDialog) -#if 0 // not in m_children anyway ? - && (win != m_frameMenuBar) && - (win != m_frameToolBar) && - (win != m_frameStatusBar) -#endif - ) - { - // it's the second one: do nothing - if (child) return; - child = win; - } - } - - // yes: set it's size to fill all the frame - int client_x, client_y; - GetClientSize( &client_x, &client_y ); - child->SetSize( 1, 1, client_x-2, client_y-2 ); - } -} - -static void SetInvokingWindow( wxMenu *menu, wxWindow *win ) -{ - menu->SetInvokingWindow( win ); - wxNode *node = menu->m_items.First(); - while (node) - { - wxMenuItem *menuitem = (wxMenuItem*)node->Data(); - if (menuitem->IsSubMenu()) - SetInvokingWindow( menuitem->GetSubMenu(), win ); - node = node->Next(); - } -} - -void wxFrame::SetMenuBar( wxMenuBar *menuBar ) -{ - wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); - wxASSERT_MSG( (m_wxwindow != NULL), "invalid frame" ); - - m_frameMenuBar = menuBar; - - if (m_frameMenuBar) - { - wxNode *node = m_frameMenuBar->m_menus.First(); - while (node) - { - wxMenu *menu = (wxMenu*)node->Data(); - SetInvokingWindow( menu, this ); - node = node->Next(); - } - - if (m_frameMenuBar->m_parent != this) - { - m_frameMenuBar->m_parent = this; - gtk_myfixed_put( GTK_MYFIXED(m_wxwindow), - m_frameMenuBar->m_widget, m_frameMenuBar->m_x, m_frameMenuBar->m_y ); - } - } - - m_sizeSet = FALSE; -} - -wxMenuBar *wxFrame::GetMenuBar() const -{ - return m_frameMenuBar; -} - -wxToolBar* wxFrame::CreateToolBar(long style, wxWindowID id, const wxString& name) -{ - wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); - - wxCHECK_MSG( m_frameToolBar == NULL, FALSE, "recreating toolbar in wxFrame" ); - - m_frameToolBar = OnCreateToolBar( style, id, name ); - - GetChildren().DeleteObject( m_frameToolBar ); - - m_sizeSet = FALSE; - - return m_frameToolBar; -} - -wxToolBar* wxFrame::OnCreateToolBar( long style, wxWindowID id, const wxString& name ) -{ - return new wxToolBar( this, id, wxDefaultPosition, wxDefaultSize, style, name ); -} - -wxToolBar *wxFrame::GetToolBar() const -{ - return m_frameToolBar; -} - -wxStatusBar* wxFrame::CreateStatusBar( int number, long style, wxWindowID id, const wxString& name ) -{ - wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); - - wxCHECK_MSG( m_frameStatusBar == NULL, FALSE, "recreating status bar in wxFrame" ); - - m_frameStatusBar = OnCreateStatusBar( number, style, id, name ); - - m_sizeSet = FALSE; - - return m_frameStatusBar; -} - -wxStatusBar *wxFrame::OnCreateStatusBar( int number, long style, wxWindowID id, const wxString& name ) -{ - wxStatusBar *statusBar = (wxStatusBar *) NULL; - - statusBar = new wxStatusBar(this, id, wxPoint(0, 0), wxSize(100, 20), style, name); - - // Set the height according to the font and the border size - wxClientDC dc(statusBar); - dc.SetFont( statusBar->GetFont() ); - - long x, y; - dc.GetTextExtent( "X", &x, &y ); - - int height = (int)( (y * 1.1) + 2* statusBar->GetBorderY()); - - statusBar->SetSize( -1, -1, 100, height ); - - statusBar->SetFieldsCount( number ); - return statusBar; -} - -void wxFrame::SetStatusText(const wxString& text, int number) -{ - wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); - - wxCHECK_RET( m_frameStatusBar != NULL, "no statusbar to set text for" ); - - m_frameStatusBar->SetStatusText(text, number); -} - -void wxFrame::SetStatusWidths(int n, const int widths_field[] ) -{ - wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); - - wxCHECK_RET( m_frameStatusBar != NULL, "no statusbar to set widths for" ); - - m_frameStatusBar->SetStatusWidths(n, widths_field); -} - -wxStatusBar *wxFrame::GetStatusBar() const -{ - return m_frameStatusBar; -} - -void wxFrame::SetTitle( const wxString &title ) -{ - wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); - - m_title = title; - if (m_title.IsNull()) m_title = ""; - gtk_window_set_title( GTK_WINDOW(m_widget), title ); -} - -void wxFrame::SetIcon( const wxIcon &icon ) -{ - wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); - - m_icon = icon; - if (!icon.Ok()) return; - - wxMask *mask = icon.GetMask(); - GdkBitmap *bm = (GdkBitmap *) NULL; - if (mask) bm = mask->GetBitmap(); - - gdk_window_set_icon( m_widget->window, (GdkWindow *) NULL, icon.GetPixmap(), bm ); -} - diff --git a/src/gtk1/gauge.cpp b/src/gtk1/gauge.cpp deleted file mode 100644 index 051b70390b..0000000000 --- a/src/gtk1/gauge.cpp +++ /dev/null @@ -1,82 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: gauge.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "gauge.h" -#endif - -#include "wx/gauge.h" -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -//----------------------------------------------------------------------------- -// wxGauge -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxGauge,wxControl) - -bool wxGauge::Create( wxWindow *parent, wxWindowID id, int range, - const wxPoint& pos, const wxSize& size, - long style, const wxValidator& validator, const wxString& name ) -{ - m_needParent = TRUE; - - PreCreation( parent, id, pos, size, style, name ); - - SetValidator( validator ); - - m_rangeMax = range; - m_gaugePos = 0; - m_useProgressBar = TRUE; - - m_widget = gtk_progress_bar_new(); - - m_parent->AddChild( this ); - - (m_parent->m_insertCallback)( m_parent, this ); - - PostCreation(); - - Show( TRUE ); - - return TRUE; -} - -void wxGauge::SetRange( int r ) -{ - m_rangeMax = r; - if (m_gaugePos > m_rangeMax) m_gaugePos = m_rangeMax; - - gtk_progress_bar_update( GTK_PROGRESS_BAR(m_widget), ((float)m_gaugePos)/m_rangeMax ); -} - -void wxGauge::SetValue( int pos ) -{ - m_gaugePos = pos; - if (m_gaugePos > m_rangeMax) m_gaugePos = m_rangeMax; - - gtk_progress_bar_update( GTK_PROGRESS_BAR(m_widget), ((float)m_gaugePos)/m_rangeMax ); -} - -int wxGauge::GetRange(void) const -{ - return m_rangeMax; -} - -int wxGauge::GetValue(void) const -{ - return m_gaugePos; -} - -void wxGauge::ApplyWidgetStyle() -{ - SetWidgetStyle(); - gtk_widget_set_style( m_widget, m_widgetStyle ); -} - diff --git a/src/gtk1/gdiobj.cpp b/src/gtk1/gdiobj.cpp deleted file mode 100644 index fe9fc047c7..0000000000 --- a/src/gtk1/gdiobj.cpp +++ /dev/null @@ -1,19 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: gdiobj.cpp -// Purpose: wxGDIObject class -// Author: Julian Smart -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "gdiobj.h" -#endif - -#include "wx/gdiobj.h" - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxGDIObject, wxObject) -#endif - diff --git a/src/gtk1/horiz.xbm b/src/gtk1/horiz.xbm deleted file mode 100644 index ff3309bcc4..0000000000 --- a/src/gtk1/horiz.xbm +++ /dev/null @@ -1,6 +0,0 @@ -#define horiz_width 15 -#define horiz_height 15 -static char horiz_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00}; diff --git a/src/gtk1/icon.cpp b/src/gtk1/icon.cpp deleted file mode 100644 index a372cb9869..0000000000 --- a/src/gtk1/icon.cpp +++ /dev/null @@ -1,47 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: icon.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "icon.h" -#endif - -#include "wx/icon.h" - -//----------------------------------------------------------------------------- -// wxIcon -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxIcon,wxBitmap) - -wxIcon::wxIcon( const char **bits, int WXUNUSED(width), int WXUNUSED(height) ) : - wxBitmap( bits ) -{ -} - -wxIcon::wxIcon( char **bits, int WXUNUSED(width), int WXUNUSED(height) ) : - wxBitmap( bits ) -{ -} - -wxIcon::wxIcon() : wxBitmap() -{ -} - -wxIcon::wxIcon( const wxIcon& icon ) : wxBitmap() -{ - Ref(icon); -} - -wxIcon& wxIcon::operator = ( const wxIcon& icon ) -{ - if (*this == icon) return (*this); - Ref(icon); - return *this; -} - diff --git a/src/gtk1/joystick.cpp b/src/gtk1/joystick.cpp deleted file mode 100644 index e783f1276d..0000000000 --- a/src/gtk1/joystick.cpp +++ /dev/null @@ -1,358 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: joystick.cpp -// Purpose: wxJoystick class -// Author: Ported to Linux by Guilhem Lavaux -// Modified by: -// Created: 05/23/98 -// RCS-ID: $Id$ -// Copyright: (c) Guilhem Lavaux -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "joystick.h" -#endif - -#include -#include -#include -#include -#include -#include -#include -#include "wx/event.h" -#include "wx/window.h" -#include "wx/gtk/joystick.h" - -#define JOYSTICK_AXE_MAX 32767 -#define JOYSTICK_AXE_MIN -32767 - -IMPLEMENT_DYNAMIC_CLASS(wxJoystick, wxObject) - -wxJoystick::wxJoystick(int joystick) -{ - wxString dev_name; - // Assume it's the same device name on all Linux systems ... - dev_name.Printf("/dev/js%d", (joystick == wxJOYSTICK1) ? 0 : 1); - - m_joystick = open(dev_name, O_RDWR); - m_lastposition = wxPoint(-1, -1); - for (int i=0;i<15;i++) - m_axe[i] = 0; - if (m_joystick != -1) - Create(); -} - -//////////////////////////////////////////////////////////////////////////// -// Background thread -//////////////////////////////////////////////////////////////////////////// -void *wxJoystick::Entry(void) -{ - struct js_event j_evt; - wxJoystickEvent jwx_event; - fd_set read_fds; - struct timeval time_out = {0, 0}; - - FD_ZERO(&read_fds); - DeferDestroy(TRUE); - while (1) { - TestDestroy(); - - if (m_polling) { - FD_SET(m_joystick, &read_fds); - select(m_joystick+1, &read_fds, NULL, NULL, &time_out); - if (FD_ISSET(m_joystick, &read_fds)) - read(m_joystick, &j_evt, sizeof(j_evt)); - else - j_evt.type = 0; - } else { - read(m_joystick, &j_evt, sizeof(j_evt)); - } - - if ((j_evt.type & JS_EVENT_AXIS) == JS_EVENT_AXIS) { - switch (j_evt.number) { - case 1: - m_lastposition.x = j_evt.value; - jwx_event.SetEventType(wxEVT_JOY_MOVE); - break; - case 2: - m_lastposition.y = j_evt.value; - jwx_event.SetEventType(wxEVT_JOY_MOVE); - break; - case 3: - m_axe[3] = j_evt.value; - jwx_event.SetEventType(wxEVT_JOY_ZMOVE); - break; - default: - m_axe[j_evt.number] = j_evt.value; - jwx_event.SetEventType(wxEVT_JOY_MOVE); - break; - } - jwx_event.SetPosition(m_lastposition); - jwx_event.SetZPosition(m_axe[3]); - } - if ((j_evt.type & JS_EVENT_BUTTON) == JS_EVENT_BUTTON) { - register int mask = 1 << j_evt.number; - char button = m_buttons & mask; - - m_buttons &= ~mask; - if (button) { - jwx_event.SetEventType(wxEVT_JOY_BUTTON_UP); - } else { - jwx_event.SetEventType(wxEVT_JOY_BUTTON_DOWN); - m_buttons |= mask; - } - - jwx_event.SetButtonState(m_buttons); - jwx_event.SetButtonChange(j_evt.number); - } - } - if (m_catchwin) - m_catchwin->ProcessEvent(jwx_event); - if (m_polling) - usleep(m_polling*1000); -} - -//////////////////////////////////////////////////////////////////////////// -// State -//////////////////////////////////////////////////////////////////////////// - -wxPoint wxJoystick::GetPosition(void) const -{ - return m_lastposition; -} - -int wxJoystick::GetZPosition(void) const -{ - return m_axe[3]; -} - -int wxJoystick::GetButtonState(void) const -{ - return m_buttons; -} - -int wxJoystick::GetPOVPosition(void) const -{ - return 0; -} - -int wxJoystick::GetPOVCTSPosition(void) const -{ - return 0; -} - -int wxJoystick::GetRudderPosition(void) const -{ - return m_axe[4]; -} - -int wxJoystick::GetUPosition(void) const -{ - return m_axe[5]; -} - -int wxJoystick::GetVPosition(void) const -{ - return m_axe[6]; -} - -int wxJoystick::GetMovementThreshold(void) const -{ - return 0; -} - -void wxJoystick::SetMovementThreshold(int threshold) -{ -} - -//////////////////////////////////////////////////////////////////////////// -// Capabilities -//////////////////////////////////////////////////////////////////////////// - -bool wxJoystick::IsOk(void) const -{ - return (m_joystick != -1); -} - -int wxJoystick::GetNumberJoysticks(void) const -{ - wxString dev_name; - int fd, j; - - for (j=0;j<2;j++) { - dev_name.Printf("/dev/js%d", j); - fd = open(dev_name, O_RDONLY); - if (fd == -1) - return j; - close(fd); - } - return j; -} - -int wxJoystick::GetManufacturerId(void) const -{ - return 0; -} - -int wxJoystick::GetProductId(void) const -{ - return 0; -} - -wxString wxJoystick::GetProductName(void) const -{ - return ""; -} - -int wxJoystick::GetXMin(void) const -{ - return JOYSTICK_AXE_MAX; -} - -int wxJoystick::GetYMin(void) const -{ - return JOYSTICK_AXE_MAX; -} - -int wxJoystick::GetZMin(void) const -{ - return JOYSTICK_AXE_MAX; -} - -int wxJoystick::GetXMax(void) const -{ - return JOYSTICK_AXE_MAX; -} - -int wxJoystick::GetYMax(void) const -{ - return JOYSTICK_AXE_MAX; -} - -int wxJoystick::GetZMax(void) const -{ - return JOYSTICK_AXE_MAX; -} - -int wxJoystick::GetNumberButtons(void) const -{ - int nb; - - ioctl(m_joystick, JSIOCGBUTTONS, &nb); - - return nb; -} - -int wxJoystick::GetNumberAxes(void) const -{ - int nb; - - ioctl(m_joystick, JSIOCGAXES, &nb); - - return nb; -} - -int wxJoystick::GetMaxButtons(void) const -{ - return 15; // internal -} - -int wxJoystick::GetMaxAxes(void) const -{ - return 15; // internal -} - -int wxJoystick::GetPollingMin(void) const -{ - return -1; -} - -int wxJoystick::GetPollingMax(void) const -{ - return -1; -} - -int wxJoystick::GetRudderMin(void) const -{ - return JOYSTICK_AXE_MIN; -} - -int wxJoystick::GetRudderMax(void) const -{ - return JOYSTICK_AXE_MAX; -} - -int wxJoystick::GetUMin(void) const -{ - return JOYSTICK_AXE_MIN; -} - -int wxJoystick::GetUMax(void) const -{ - return JOYSTICK_AXE_MAX; -} - -int wxJoystick::GetVMin(void) const -{ - return JOYSTICK_AXE_MIN; -} - -int wxJoystick::GetVMax(void) const -{ - return JOYSTICK_AXE_MAX; -} - -bool wxJoystick::HasRudder(void) const -{ - return GetNumberAxes() >= 4; -} - -bool wxJoystick::HasZ(void) const -{ - return GetNumberAxes() >= 3; -} - -bool wxJoystick::HasU(void) const -{ - return GetNumberAxes() >= 5; -} - -bool wxJoystick::HasV(void) const -{ - return GetNumberAxes() >= 6; -} - -bool wxJoystick::HasPOV(void) const -{ - return FALSE; -} - -bool wxJoystick::HasPOV4Dir(void) const -{ - return FALSE; -} - -bool wxJoystick::HasPOVCTS(void) const -{ - return FALSE; -} - -//////////////////////////////////////////////////////////////////////////// -// Operations -//////////////////////////////////////////////////////////////////////////// - -bool wxJoystick::SetCapture(wxWindow* win, int pollingFreq = 0) -{ - m_catchwin = win; - m_polling = pollingFreq; - return TRUE; -} - -bool wxJoystick::ReleaseCapture(void) -{ - m_catchwin = NULL; - m_polling = 0; - return TRUE; -} - diff --git a/src/gtk1/listbox.cpp b/src/gtk1/listbox.cpp deleted file mode 100644 index 6d6208d779..0000000000 --- a/src/gtk1/listbox.cpp +++ /dev/null @@ -1,779 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: listbox.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifdef __GNUG__ -#pragma implementation "listbox.h" -#endif - -#include "wx/dynarray.h" -#include "wx/listbox.h" -#include "wx/utils.h" -#include "wx/intl.h" -#include "wx/checklst.h" -#include "wx/tooltip.h" - -#if wxUSE_DRAG_AND_DROP -#include "wx/dnd.h" -#endif - -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -//------------------------------------------------------------------------- -// conditional compilation -//------------------------------------------------------------------------- - -#if (GTK_MINOR_VERSION == 1) -#if (GTK_MICRO_VERSION >= 5) -#define NEW_GTK_SCROLL_CODE -#endif -#endif - -//----------------------------------------------------------------------------- -// data -//----------------------------------------------------------------------------- - -extern bool g_blockEventsOnDrag; -extern bool g_blockEventsOnScroll; - -//----------------------------------------------------------------------------- -// "button_press_event" -//----------------------------------------------------------------------------- - -static gint -gtk_listbox_button_press_callback( GtkWidget *widget, GdkEventButton *gdk_event, wxListBox *listbox ) -{ - if (g_blockEventsOnDrag) return FALSE; - if (g_blockEventsOnScroll) return FALSE; - - if (!listbox->HasVMT()) return FALSE; - - int sel = listbox->GetIndex( widget ); - - if ((listbox->m_hasCheckBoxes) && (gdk_event->x < 15) && (gdk_event->type != GDK_2BUTTON_PRESS)) - { - wxCheckListBox *clb = (wxCheckListBox *)listbox; - - clb->Check( sel, !clb->IsChecked(sel) ); - - wxCommandEvent event( wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, listbox->GetId() ); - event.SetEventObject( listbox ); - event.SetInt( sel ); - listbox->GetEventHandler()->ProcessEvent( event ); - } - - if (gdk_event->type == GDK_2BUTTON_PRESS) - { - wxCommandEvent event( wxEVT_COMMAND_LISTBOX_DOUBLECLICKED, listbox->GetId() ); - event.SetEventObject( listbox ); - - wxArrayInt aSelections; - int count = listbox->GetSelections(aSelections); - if ( count > 0 ) - { - event.m_commandInt = aSelections[0] ; - event.m_clientData = listbox->GetClientData( event.m_commandInt ); - wxString str(listbox->GetString(event.m_commandInt)); - if (str != "") event.m_commandString = copystring((char *)(const char *)str); - } - else - { - event.m_commandInt = -1 ; - event.m_commandString = copystring("") ; - } - - listbox->GetEventHandler()->ProcessEvent( event ); - - if (event.m_commandString) delete[] event.m_commandString ; - } - - return FALSE; -} - -//----------------------------------------------------------------------------- -// "key_press_event" -//----------------------------------------------------------------------------- - -static gint -gtk_listbox_key_press_callback( GtkWidget *widget, GdkEventKey *gdk_event, wxListBox *listbox ) -{ - if (g_blockEventsOnDrag) return FALSE; - - if (!listbox->HasVMT()) return FALSE; - - if (gdk_event->keyval != ' ') return FALSE; - - int sel = listbox->GetIndex( widget ); - - wxCheckListBox *clb = (wxCheckListBox *)listbox; - - clb->Check( sel, !clb->IsChecked(sel) ); - - wxCommandEvent event( wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, listbox->GetId() ); - event.SetEventObject( listbox ); - event.SetInt( sel ); - listbox->GetEventHandler()->ProcessEvent( event ); - - return FALSE; -} - -//----------------------------------------------------------------------------- -// "select" and "deselect" -//----------------------------------------------------------------------------- - -static void gtk_listitem_select_callback( GtkWidget *WXUNUSED(widget), wxListBox *listbox ) -{ - if (!listbox->HasVMT()) return; - if (g_blockEventsOnDrag) return; - - wxCommandEvent event(wxEVT_COMMAND_LISTBOX_SELECTED, listbox->GetId() ); - - wxArrayInt aSelections; - int count = listbox->GetSelections(aSelections); - if ( count > 0 ) - { - event.m_commandInt = aSelections[0] ; - event.m_clientData = listbox->GetClientData( event.m_commandInt ); - wxString str(listbox->GetString(event.m_commandInt)); - if (str != "") event.m_commandString = copystring((char *)(const char *)str); - } - else - { - event.m_commandInt = -1 ; - event.m_commandString = copystring("") ; - } - - event.SetEventObject( listbox ); - - listbox->GetEventHandler()->ProcessEvent( event ); - if (event.m_commandString) delete[] event.m_commandString ; -} - -//----------------------------------------------------------------------------- -// wxListBox -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxListBox,wxControl) - -wxListBox::wxListBox() -{ - m_list = (GtkList *) NULL; - m_hasCheckBoxes = FALSE; -} - -bool wxListBox::Create( wxWindow *parent, wxWindowID id, - const wxPoint &pos, const wxSize &size, - int n, const wxString choices[], - long style, const wxValidator& validator, const wxString &name ) -{ - m_needParent = TRUE; - m_acceptsFocus = TRUE; - - PreCreation( parent, id, pos, size, style, name ); - - SetValidator( validator ); - - m_widget = gtk_scrolled_window_new( (GtkAdjustment*) NULL, (GtkAdjustment*) NULL ); - gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW(m_widget), - GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC ); - - m_list = GTK_LIST( gtk_list_new() ); - - GtkSelectionMode mode = GTK_SELECTION_BROWSE; - if (style & wxLB_MULTIPLE) - mode = GTK_SELECTION_MULTIPLE; - else if (style & wxLB_EXTENDED) - mode = GTK_SELECTION_EXTENDED; - - gtk_list_set_selection_mode( GTK_LIST(m_list), mode ); - -#ifdef NEW_GTK_SCROLL_CODE - gtk_scrolled_window_add_with_viewport( GTK_SCROLLED_WINDOW(m_widget), GTK_WIDGET(m_list) ); -#else - gtk_container_add( GTK_CONTAINER(m_widget), GTK_WIDGET(m_list) ); -#endif - -#ifdef __WXDEBUG__ - debug_focus_in( m_widget, "wxListBox::m_widget", name ); - - debug_focus_in( GTK_WIDGET(m_list), "wxListBox::m_list", name ); - - GtkScrolledWindow *s_window = GTK_SCROLLED_WINDOW(m_widget); - - debug_focus_in( s_window->hscrollbar, "wxWindow::hsrcollbar", name ); - debug_focus_in( s_window->vscrollbar, "wxWindow::vsrcollbar", name ); - -#ifdef NEW_GTK_SCROLL_CODE - GtkViewport *viewport = GTK_VIEWPORT(s_window->child); -#else - GtkViewport *viewport = GTK_VIEWPORT(s_window->viewport); -#endif - - debug_focus_in( GTK_WIDGET(viewport), "wxWindow::viewport", name ); -#endif - - gtk_widget_show( GTK_WIDGET(m_list) ); - - wxSize newSize = size; - if (newSize.x == -1) newSize.x = 100; - if (newSize.y == -1) newSize.y = 110; - SetSize( newSize.x, newSize.y ); - - for (int i = 0; i < n; i++) - { - m_clientDataList.Append( (wxObject*) NULL ); - m_clientObjectList.Append( (wxObject*) NULL ); - - GtkWidget *list_item; - - if (m_hasCheckBoxes) - { - wxString str = "[-] "; - str += choices[i]; - list_item = gtk_list_item_new_with_label( str ); - } - else - { - list_item = gtk_list_item_new_with_label( choices[i] ); - } - -#ifdef __WXDEBUG__ - debug_focus_in( list_item, "wxListBox::list_item", name ); -#endif - - gtk_container_add( GTK_CONTAINER(m_list), list_item ); - - gtk_signal_connect( GTK_OBJECT(list_item), "select", - GTK_SIGNAL_FUNC(gtk_listitem_select_callback), (gpointer)this ); - - if (style & wxLB_MULTIPLE) - gtk_signal_connect( GTK_OBJECT(list_item), "deselect", - GTK_SIGNAL_FUNC(gtk_listitem_select_callback), (gpointer)this ); - - gtk_signal_connect( GTK_OBJECT(list_item), - "button_press_event", - (GtkSignalFunc)gtk_listbox_button_press_callback, - (gpointer) this ); - - if (m_hasCheckBoxes) - { - gtk_signal_connect( GTK_OBJECT(list_item), - "key_press_event", - (GtkSignalFunc)gtk_listbox_key_press_callback, - (gpointer)this ); - } - - ConnectWidget( list_item ); - - gtk_widget_show( list_item ); - } - - m_parent->AddChild( this ); - - (m_parent->m_insertCallback)( m_parent, this ); - - PostCreation(); - - gtk_widget_realize( GTK_WIDGET(m_list) ); - - SetBackgroundColour( parent->GetBackgroundColour() ); - SetForegroundColour( parent->GetForegroundColour() ); - - Show( TRUE ); - - return TRUE; -} - -wxListBox::~wxListBox() -{ - Clear(); -} - -void wxListBox::AppendCommon( const wxString &item ) -{ - wxCHECK_RET( m_list != NULL, "invalid listbox" ); - - GtkWidget *list_item; - - if (m_hasCheckBoxes) - { - wxString str = "[-] "; - str += item; - list_item = gtk_list_item_new_with_label( str ); - } - else - { - list_item = gtk_list_item_new_with_label( item ); - } - - gtk_signal_connect( GTK_OBJECT(list_item), "select", - GTK_SIGNAL_FUNC(gtk_listitem_select_callback), (gpointer)this ); - - if (GetWindowStyleFlag() & wxLB_MULTIPLE) - gtk_signal_connect( GTK_OBJECT(list_item), "deselect", - GTK_SIGNAL_FUNC(gtk_listitem_select_callback), (gpointer)this ); - - gtk_container_add( GTK_CONTAINER(m_list), list_item ); - - if (m_widgetStyle) ApplyWidgetStyle(); - - gtk_signal_connect( GTK_OBJECT(list_item), - "button_press_event", - (GtkSignalFunc)gtk_listbox_button_press_callback, - (gpointer) this ); - - if (m_hasCheckBoxes) - { - gtk_signal_connect( GTK_OBJECT(list_item), - "key_press_event", - (GtkSignalFunc)gtk_listbox_key_press_callback, - (gpointer)this ); - } - - gtk_widget_show( list_item ); - - ConnectWidget( list_item ); - -#if wxUSE_DRAG_AND_DROP -#ifndef NEW_GTK_DND_CODE - if (m_dropTarget) m_dropTarget->RegisterWidget( list_item ); -#endif -#endif - - if (m_toolTip) m_toolTip->Create( list_item ); -} - -void wxListBox::Append( const wxString &item ) -{ - m_clientDataList.Append( (wxObject*) NULL ); - m_clientObjectList.Append( (wxObject*) NULL ); - - AppendCommon( item ); -} - -void wxListBox::Append( const wxString &item, void *clientData ) -{ - m_clientDataList.Append( (wxObject*) clientData ); - m_clientObjectList.Append( (wxObject*) NULL ); - - AppendCommon( item ); -} - -void wxListBox::Append( const wxString &item, wxClientData *clientData ) -{ - m_clientObjectList.Append( (wxObject*) clientData ); - m_clientDataList.Append( (wxObject*) NULL ); - - AppendCommon( item ); -} - -void wxListBox::SetClientData( int n, void* clientData ) -{ - wxCHECK_RET( m_widget != NULL, "invalid combobox" ); - - wxNode *node = m_clientDataList.Nth( n ); - if (!node) return; - - node->SetData( (wxObject*) clientData ); -} - -void* wxListBox::GetClientData( int n ) -{ - wxCHECK_MSG( m_widget != NULL, NULL, "invalid combobox" ); - - wxNode *node = m_clientDataList.Nth( n ); - if (!node) return NULL; - - return node->Data(); -} - -void wxListBox::SetClientObject( int n, wxClientData* clientData ) -{ - wxCHECK_RET( m_widget != NULL, "invalid combobox" ); - - wxNode *node = m_clientObjectList.Nth( n ); - if (!node) return; - - wxClientData *cd = (wxClientData*) node->Data(); - if (cd) delete cd; - - node->SetData( (wxObject*) clientData ); -} - -wxClientData* wxListBox::GetClientObject( int n ) -{ - wxCHECK_MSG( m_widget != NULL, (wxClientData*)NULL, "invalid combobox" ); - - wxNode *node = m_clientObjectList.Nth( n ); - if (!node) return (wxClientData*) NULL; - - return (wxClientData*) node->Data(); -} - -void wxListBox::Clear() -{ - wxCHECK_RET( m_list != NULL, "invalid listbox" ); - - gtk_list_clear_items( m_list, 0, Number() ); - - wxNode *node = m_clientObjectList.First(); - while (node) - { - wxClientData *cd = (wxClientData*)node->Data(); - if (cd) delete cd; - node = node->Next(); - } - m_clientObjectList.Clear(); - - m_clientDataList.Clear(); -} - -void wxListBox::Delete( int n ) -{ - wxCHECK_RET( m_list != NULL, "invalid listbox" ); - - GList *child = g_list_nth( m_list->children, n ); - - wxCHECK_RET( child, "wrong listbox index" ); - - GList *list = g_list_append( (GList*) NULL, child->data ); - gtk_list_remove_items( m_list, list ); - g_list_free( list ); - - wxNode *node = m_clientObjectList.Nth( n ); - if (node) - { - wxClientData *cd = (wxClientData*)node->Data(); - if (cd) delete cd; - m_clientObjectList.DeleteNode( node ); - } - - node = m_clientDataList.Nth( n ); - if (node) - { - m_clientDataList.DeleteNode( node ); - } -} - -void wxListBox::Deselect( int n ) -{ - wxCHECK_RET( m_list != NULL, "invalid listbox" ); - - gtk_list_unselect_item( m_list, n ); -} - -int wxListBox::FindString( const wxString &item ) const -{ - wxCHECK_MSG( m_list != NULL, -1, "invalid listbox" ); - - GList *child = m_list->children; - int count = 0; - while (child) - { - GtkBin *bin = GTK_BIN( child->data ); - GtkLabel *label = GTK_LABEL( bin->child ); - - wxString str = label->label; - if (m_hasCheckBoxes) str.Remove( 0, 4 ); - - if (str == item) return count; - - count++; - child = child->next; - } - - // it's not an error if the string is not found -> no wxCHECK - - return -1; -} - -int wxListBox::GetSelection() const -{ - wxCHECK_MSG( m_list != NULL, -1, "invalid listbox" ); - - GList *child = m_list->children; - int count = 0; - while (child) - { - if (GTK_WIDGET(child->data)->state == GTK_STATE_SELECTED) return count; - count++; - child = child->next; - } - return -1; -} - -int wxListBox::GetSelections( wxArrayInt& aSelections ) const -{ - wxCHECK_MSG( m_list != NULL, -1, "invalid listbox" ); - - // get the number of selected items first - GList *child = m_list->children; - int count = 0; - for (child = m_list->children; child != NULL; child = child->next) - { - if (GTK_WIDGET(child->data)->state == GTK_STATE_SELECTED) - count++; - } - - aSelections.Empty(); - - if (count > 0) - { - // now fill the list - aSelections.Alloc(count); // optimization attempt - int i = 0; - for (child = m_list->children; child != NULL; child = child->next, i++) - { - if (GTK_WIDGET(child->data)->state == GTK_STATE_SELECTED) - aSelections.Add(i); - } - } - - return count; -} - -wxString wxListBox::GetString( int n ) const -{ - wxCHECK_MSG( m_list != NULL, "", "invalid listbox" ); - - GList *child = g_list_nth( m_list->children, n ); - if (child) - { - GtkBin *bin = GTK_BIN( child->data ); - GtkLabel *label = GTK_LABEL( bin->child ); - - wxString str = label->label; - if (m_hasCheckBoxes) str.Remove( 0, 4 ); - - return str; - } - wxFAIL_MSG("wrong listbox index"); - return ""; -} - -wxString wxListBox::GetStringSelection() const -{ - wxCHECK_MSG( m_list != NULL, "", "invalid listbox" ); - - GList *selection = m_list->selection; - if (selection) - { - GtkBin *bin = GTK_BIN( selection->data ); - GtkLabel *label = GTK_LABEL( bin->child ); - - wxString str = label->label; - if (m_hasCheckBoxes) str.Remove( 0, 4 ); - - return str; - } - - wxFAIL_MSG("no listbox selection available"); - return ""; -} - -int wxListBox::Number() -{ - wxCHECK_MSG( m_list != NULL, -1, "invalid listbox" ); - - GList *child = m_list->children; - int count = 0; - while (child) { count++; child = child->next; } - return count; -} - -bool wxListBox::Selected( int n ) -{ - wxCHECK_MSG( m_list != NULL, FALSE, "invalid listbox" ); - - GList *target = g_list_nth( m_list->children, n ); - if (target) - { - GList *child = m_list->selection; - while (child) - { - if (child->data == target->data) return TRUE; - child = child->next; - } - } - wxFAIL_MSG("wrong listbox index"); - return FALSE; -} - -void wxListBox::Set( int WXUNUSED(n), const wxString *WXUNUSED(choices) ) -{ - wxFAIL_MSG("wxListBox::Set not implemented"); -} - -void wxListBox::SetFirstItem( int WXUNUSED(n) ) -{ - wxFAIL_MSG("wxListBox::SetFirstItem not implemented"); -} - -void wxListBox::SetFirstItem( const wxString &WXUNUSED(item) ) -{ - wxFAIL_MSG("wxListBox::SetFirstItem not implemented"); -} - -void wxListBox::SetSelection( int n, bool select ) -{ - wxCHECK_RET( m_list != NULL, "invalid listbox" ); - - if (select) - gtk_list_select_item( m_list, n ); - else - gtk_list_unselect_item( m_list, n ); -} - -void wxListBox::SetString( int n, const wxString &string ) -{ - wxCHECK_RET( m_list != NULL, "invalid listbox" ); - - GList *child = g_list_nth( m_list->children, n ); - if (child) - { - GtkBin *bin = GTK_BIN( child->data ); - GtkLabel *label = GTK_LABEL( bin->child ); - - wxString str; - if (m_hasCheckBoxes) str += "[-] "; - str += string; - - gtk_label_set( label, str ); - } - else - { - wxFAIL_MSG("wrong listbox index"); - } -} - -void wxListBox::SetStringSelection( const wxString &string, bool select ) -{ - wxCHECK_RET( m_list != NULL, "invalid listbox" ); - - SetSelection( FindString(string), select ); -} - -int wxListBox::GetIndex( GtkWidget *item ) const -{ - if (item) - { - GList *child = m_list->children; - int count = 0; - while (child) - { - if (GTK_WIDGET(child->data) == item) return count; - count++; - child = child->next; - } - } - return -1; -} - -void wxListBox::SetToolTip( const wxString &tip ) -{ - SetToolTip( new wxToolTip( tip ) ); -} - -void wxListBox::SetToolTip( wxToolTip *tip ) -{ - if (m_toolTip) delete m_toolTip; - - m_toolTip = tip; - - if (!tip) return; - - m_toolTip->Create( GTK_WIDGET(m_list) ); /* this has no effect */ - - GList *child = m_list->children; - while (child) - { - m_toolTip->Create( GTK_WIDGET( child->data ) ); - child = child->next; - } -} - -#if wxUSE_DRAG_AND_DROP -void wxListBox::SetDropTarget( wxDropTarget *dropTarget ) -{ - wxCHECK_RET( m_list != NULL, "invalid listbox" ); - -#ifndef NEW_GTK_DND_CODE - if (m_dropTarget) - { - GList *child = m_list->children; - while (child) - { - m_dropTarget->UnregisterWidget( GTK_WIDGET( child->data ) ); - child = child->next; - } - } -#endif - - wxWindow::SetDropTarget( dropTarget ); - -#ifndef NEW_GTK_DND_CODE - if (m_dropTarget) - { - GList *child = m_list->children; - while (child) - { - m_dropTarget->RegisterWidget( GTK_WIDGET( child->data ) ); - child = child->next; - } - } -#endif -} -#endif - -GtkWidget *wxListBox::GetConnectWidget() -{ - return GTK_WIDGET(m_list); -} - -bool wxListBox::IsOwnGtkWindow( GdkWindow *window ) -{ - if (wxWindow::IsOwnGtkWindow( window )) return TRUE; - - GList *child = m_list->children; - while (child) - { - GtkWidget *bin = GTK_WIDGET( child->data ); - if (bin->window == window) return TRUE; - child = child->next; - } - - return FALSE; -} - -void wxListBox::ApplyWidgetStyle() -{ - SetWidgetStyle(); - - if (m_backgroundColour.Ok()) - { - GdkWindow *window = GTK_WIDGET(m_list)->window; - m_backgroundColour.CalcPixel( gdk_window_get_colormap( window ) ); - gdk_window_set_background( window, m_backgroundColour.GetColor() ); - gdk_window_clear( window ); - } - - GList *child = m_list->children; - while (child) - { - gtk_widget_set_style( GTK_WIDGET(child->data), m_widgetStyle ); - - GtkBin *bin = GTK_BIN( child->data ); - GtkWidget *label = GTK_WIDGET( bin->child ); - gtk_widget_set_style( label, m_widgetStyle ); - - child = child->next; - } -} - diff --git a/src/gtk1/main.cpp b/src/gtk1/main.cpp deleted file mode 100644 index a6ea36c74e..0000000000 --- a/src/gtk1/main.cpp +++ /dev/null @@ -1,29 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: main.cpp -// Purpose: Entry point -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#include "wx/app.h" - -int wxEntry(int argc, char *argv[]); - - -#if defined(AIX) || defined(AIX4) || defined(____HPUX__) || defined(NOMAIN) - - // main in IMPLEMENT_WX_MAIN in IMPLEMENT_APP in app.h - -#else - - -int main(int argc, char* argv[]) -{ - return wxEntry(argc, argv); -} - -#endif diff --git a/src/gtk1/makefile.unx b/src/gtk1/makefile.unx deleted file mode 100644 index ae5fd90f3c..0000000000 --- a/src/gtk1/makefile.unx +++ /dev/null @@ -1,218 +0,0 @@ -# -# File: makefile.unx -# Author: Robert Roebling -# Created: 1998 -# Updated: -# Copyright: (c) 1998 -# -# -# Makefile for wxGtk library, Unix - -EXTRACFLAGS=-DLEX_SCANNER - -include ../make.env - -LIB_CPP_SRC=\ -\ - ../common/cmndata.cpp \ - ../common/config.cpp \ - ../common/date.cpp \ - ../common/docmdi.cpp \ - ../common/docview.cpp \ - ../common/dynarray.cpp \ - ../common/dynlib.cpp \ - ../common/event.cpp \ - ../common/file.cpp \ - ../common/fileconf.cpp \ - ../common/filefn.cpp \ - ../common/gdicmn.cpp \ - ../common/hash.cpp \ - ../common/helpbase.cpp \ - ../common/intl.cpp \ - ../common/image.cpp \ - ../common/ipcbase.cpp \ - ../common/layout.cpp \ - ../common/list.cpp \ - ../common/log.cpp \ - ../common/matrix.cpp \ - ../common/memory.cpp \ - ../common/module.cpp \ - ../common/object.cpp \ - ../common/odbc.cpp \ - ../common/postscrp.cpp \ - ../common/prntbase.cpp \ - ../common/resource.cpp \ - ../common/serbase.cpp \ - ../common/string.cpp \ - ../common/textfile.cpp \ - ../common/time.cpp \ - ../common/timercmn.cpp \ - ../common/utilscmn.cpp \ - ../common/wincmn.cpp \ - ../common/framecmn.cpp \ - ../common/stream.cpp \ - ../common/datstrm.cpp \ - ../common/wfstream.cpp \ - ../common/mstream.cpp \ - ../common/zstream.cpp \ - ../common/objstrm.cpp \ - ../common/sckstrm.cpp \ - ../common/validate.cpp \ - ../common/valtext.cpp \ - ../common/variant.cpp \ - ../common/wxexpr.cpp \ - ../common/socket.cpp \ - ../common/sckaddr.cpp \ - ../common/sckipc.cpp \ - ../common/protocol.cpp \ - ../common/ftp.cpp \ - ../common/http.cpp \ - ../common/url.cpp \ - ../common/tokenzr.cpp \ -\ - accel.cpp \ - app.cpp \ - bitmap.cpp \ - bmpbuttn.cpp \ - brush.cpp \ - button.cpp \ - checkbox.cpp \ - checklst.cpp \ - choice.cpp \ - clipbrd.cpp \ - colour.cpp \ - control.cpp \ - combobox.cpp \ - cursor.cpp \ - data.cpp \ - dataobj.cpp \ - dc.cpp \ - dcclient.cpp \ - dcmemory.cpp \ - dcscreen.cpp \ - dcps.cpp \ - dialog.cpp \ - dnd.cpp \ - filedlg.cpp \ - font.cpp \ - frame.cpp \ - gauge.cpp \ - gdiobj.cpp \ - icon.cpp \ - listbox.cpp \ - main.cpp \ - mdi.cpp \ - menu.cpp \ - minifram.cpp \ - notebook.cpp \ - palette.cpp \ - pen.cpp \ - radiobox.cpp \ - radiobut.cpp \ - region.cpp \ - scrolbar.cpp \ - settings.cpp \ - slider.cpp \ - spinbutt.cpp \ - statbox.cpp \ - statbmp.cpp \ - stattext.cpp \ - tbargtk.cpp \ - threadpsx.cpp \ - textctrl.cpp \ - timer.cpp \ - utilsgtk.cpp \ - utilsres.cpp \ - wave.cpp \ - window.cpp \ -\ - ../generic/choicdgg.cpp \ - ../generic/colrdlgg.cpp \ - ../generic/dirdlgg.cpp \ - ../generic/fontdlgg.cpp \ - ../generic/gridg.cpp \ - ../generic/helpext.cpp \ - ../generic/imaglist.cpp \ - ../generic/listctrl.cpp \ - ../generic/laywin.cpp \ - ../generic/msgdlgg.cpp \ - ../generic/panelg.cpp \ - ../generic/printps.cpp \ - ../generic/prntdlgg.cpp \ - ../generic/sashwin.cpp \ - ../generic/scrolwin.cpp \ - ../generic/splitter.cpp \ - ../generic/statusbr.cpp \ - ../generic/tabg.cpp \ - ../generic/textdlgg.cpp \ - ../generic/treectrl.cpp - - -ZLIB_SRC=\ - ../zlib/adler32.c ../zlib/deflate.c ../zlib/infblock.c\ - ../zlib/inflate.c ../zlib/zutil.c ../zlib/compress.c \ - ../zlib/infcodes.c ../zlib/inftrees.c ../zlib/trees.c \ - ../zlib/crc32.c ../zlib/gzio.c ../zlib/inffast.c\ - ../zlib/infutil.c ../zlib/uncompr.c - -PNG_SRC=\ - ../png/png.c \ - ../png/pngset.c \ - ../png/pngget.c \ - ../png/pngrutil.c \ - ../png/pngtrans.c \ - ../png/pngwutil.c \ - ../png/pngread.c \ - ../png/pngrio.c \ - ../png/pngwio.c \ - ../png/pngwrite.c \ - ../png/pngrtran.c \ - ../png/pngwtran.c \ - ../png/pngmem.c \ - ../png/pngerror.c \ - ../png/pngpread.c - -LIB_C_SRC=\ -\ - win_gtk.c \ - ../common/y_tab.c \ - ../common/extended.c - -# Only need to compile zlib files if we don't -# already have a zlib library installed on our system -# (or we wish to statically link them for some reason) -EXTRA_C_SRC=\ - $(ZLIB_SRC) $(PNG_SRC) - -all: $(WXLIB) - -# Define library objects -OBJECTS=\ - $(LIB_CPP_SRC:.cpp=.o) $(LIB_C_SRC:.c=.o) $(EXTRA_C_SRC:.c=.o) - -$(WXLIB) : $(OBJECTS) - ar $(AROPTIONS) $@ $(OBJECTS) - $(RANLIB) $@ - -../common/y_tab.$(OBJSUFF): ../common/y_tab.c ../common/lex_yy.c - $(CCLEX) -c $(CFLAGS) -DNO_CONFIGURE -o $@ ../common/y_tab.c - -# Replace lex with flex if you run into compilation -# problems with lex_yy.c. See also note about LEX_SCANNER -# above. -../common/lex_yy.c: ../common/lexer.l - $(LEX) -o../common/lex.yy.c ../common/lexer.l - sed -e "s/BUFSIZ/5000/g" < ../common/lex.yy.c | \ - sed -e "s/yyoutput(c)/void yyoutput(c)/g" | \ - sed -e "s/YYLMAX 200/YYLMAX 5000/g" > ../common/lex_yy.c - /bin/rm -f ../common/lex.yy.c - -# Replace yacc with bison if you run into compilation -# problems with y_tab.c. -../common/y_tab.c: ../common/parser.y - $(YACC) ../common/parser.y - mv y.tab.c ../common/y_tab.c - -clean: - rm -f $(OBJECTS) $(WXLIB) - diff --git a/src/gtk1/mdi.cpp b/src/gtk1/mdi.cpp deleted file mode 100644 index cd4c7355f4..0000000000 --- a/src/gtk1/mdi.cpp +++ /dev/null @@ -1,378 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: mdi.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "mdi.h" -#endif - -#include "wx/mdi.h" -#include "wx/dialog.h" -#include "wx/menu.h" -#include - -#include "glib.h" -#include "gdk/gdk.h" -#include "gtk/gtk.h" -#include "wx/gtk/win_gtk.h" - -//----------------------------------------------------------------------------- -// constants -//----------------------------------------------------------------------------- - -const int wxMENU_HEIGHT = 27; - -//----------------------------------------------------------------------------- -// globals -//----------------------------------------------------------------------------- - -extern wxList wxPendingDelete; - -//----------------------------------------------------------------------------- -// "size_allocate" -//----------------------------------------------------------------------------- - -static void gtk_page_size_callback( GtkWidget *WXUNUSED(widget), GtkAllocation* alloc, wxWindow *win ) -{ - if ((win->m_x == alloc->x) && - (win->m_y == alloc->y) && - (win->m_width == alloc->width) && - (win->m_height == alloc->height) && - (win->m_sizeSet)) - { - return; - } - - win->SetSize( alloc->x, alloc->y, alloc->width, alloc->height ); -} - -//----------------------------------------------------------------------------- -// page change callback -//----------------------------------------------------------------------------- - -static void gtk_page_change_callback( GtkNotebook *WXUNUSED(widget), - GtkNotebookPage *page, - gint WXUNUSED(nPage), - wxMDIClientWindow *client_win ) -{ - wxNode *node = client_win->m_children.First(); - while (node) - { - wxMDIChildFrame *child_frame = (wxMDIChildFrame *)node->Data(); - if (child_frame->m_page == page) - { - wxMDIParentFrame *mdi_frame = (wxMDIParentFrame*)client_win->m_parent; - mdi_frame->m_currentChild = child_frame; - mdi_frame->SetMDIMenuBar( child_frame->m_menuBar ); - return; - } - node = node->Next(); - } -} - -//----------------------------------------------------------------------------- -// wxMDIParentFrame -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxMDIParentFrame,wxFrame) - -BEGIN_EVENT_TABLE(wxMDIParentFrame, wxFrame) -END_EVENT_TABLE() - -wxMDIParentFrame::wxMDIParentFrame(void) -{ - m_clientWindow = (wxMDIClientWindow *) NULL; - m_currentChild = (wxMDIChildFrame *) NULL; - m_parentFrameActive = TRUE; -} - -wxMDIParentFrame::wxMDIParentFrame( wxWindow *parent, - wxWindowID id, const wxString& title, - const wxPoint& pos, const wxSize& size, - long style, const wxString& name ) -{ - m_clientWindow = (wxMDIClientWindow *) NULL; - m_currentChild = (wxMDIChildFrame *) NULL; - m_parentFrameActive = TRUE; - Create( parent, id, title, pos, size, style, name ); -} - -wxMDIParentFrame::~wxMDIParentFrame(void) -{ -} - -bool wxMDIParentFrame::Create( wxWindow *parent, - wxWindowID id, const wxString& title, - const wxPoint& pos, const wxSize& size, - long style, const wxString& name ) -{ - wxFrame::Create( parent, id, title, pos, size, style, name ); - - OnCreateClient(); - - return TRUE; -} - -void wxMDIParentFrame::GtkOnSize( int x, int y, int width, int height ) -{ - wxFrame::GtkOnSize( x, y, width, height ); - - if (m_mdiMenuBar) - { - m_mdiMenuBar->m_x = 0; - m_mdiMenuBar->m_y = 0; - m_mdiMenuBar->m_width = m_width; - m_mdiMenuBar->m_height = wxMENU_HEIGHT; - gtk_myfixed_move( GTK_MYFIXED(m_wxwindow), m_mdiMenuBar->m_widget, 0, 0 ); - gtk_widget_set_usize( m_mdiMenuBar->m_widget, m_width, wxMENU_HEIGHT ); - } -} - -void wxMDIParentFrame::SetMDIMenuBar( wxMenuBar *menu_bar ) -{ - if (m_mdiMenuBar) m_mdiMenuBar->Show( FALSE ); - m_mdiMenuBar = menu_bar; - if (m_mdiMenuBar) - { - m_mdiMenuBar->m_x = 0; - m_mdiMenuBar->m_y = 0; - m_mdiMenuBar->m_width = m_width; - m_mdiMenuBar->m_height = wxMENU_HEIGHT; - gtk_myfixed_move( GTK_MYFIXED(m_wxwindow), m_mdiMenuBar->m_widget, 0, 0 ); - gtk_widget_set_usize( m_mdiMenuBar->m_widget, m_width, wxMENU_HEIGHT ); - m_mdiMenuBar->Show( TRUE ); - } -} - -void wxMDIParentFrame::GetClientSize(int *width, int *height ) const -{ - wxFrame::GetClientSize( width, height ); -} - -wxMDIChildFrame *wxMDIParentFrame::GetActiveChild(void) const -{ - return m_currentChild; -} - -wxMDIClientWindow *wxMDIParentFrame::GetClientWindow(void) const -{ - return m_clientWindow; -} - -wxMDIClientWindow *wxMDIParentFrame::OnCreateClient(void) -{ - m_clientWindow = new wxMDIClientWindow( this ); - return m_clientWindow; -} - -void wxMDIParentFrame::ActivateNext(void) -{ - if (m_clientWindow) - gtk_notebook_next_page( GTK_NOTEBOOK(m_clientWindow->m_widget) ); -} - -void wxMDIParentFrame::ActivatePrevious(void) -{ - if (m_clientWindow) - gtk_notebook_prev_page( GTK_NOTEBOOK(m_clientWindow->m_widget) ); -} - -void wxMDIParentFrame::OnActivate( wxActivateEvent& WXUNUSED(event) ) -{ -} - -void wxMDIParentFrame::OnSysColourChanged( wxSysColourChangedEvent& WXUNUSED(event) ) -{ -} - -//----------------------------------------------------------------------------- -// wxMDIChildFrame -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxMDIChildFrame,wxFrame) - -BEGIN_EVENT_TABLE(wxMDIChildFrame, wxFrame) - EVT_ACTIVATE(wxMDIChildFrame::OnActivate) -END_EVENT_TABLE() - -wxMDIChildFrame::wxMDIChildFrame(void) -{ - m_menuBar = (wxMenuBar *) NULL; - m_page = (GtkNotebookPage *) NULL; -} - -wxMDIChildFrame::wxMDIChildFrame( wxMDIParentFrame *parent, - wxWindowID id, const wxString& title, - const wxPoint& WXUNUSED(pos), const wxSize& size, - long style, const wxString& name ) -{ - m_menuBar = (wxMenuBar *) NULL; - m_page = (GtkNotebookPage *) NULL; - Create( parent, id, title, wxDefaultPosition, size, style, name ); -} - -wxMDIChildFrame::~wxMDIChildFrame(void) -{ - if (m_menuBar) - { - wxMDIParentFrame *mdi_frame = (wxMDIParentFrame*)m_parent->m_parent; - if (mdi_frame->m_currentChild == this) - { - mdi_frame->SetMDIMenuBar( (wxMenuBar *) NULL ); - mdi_frame->m_currentChild = (wxMDIChildFrame *) NULL; - } - delete m_menuBar; - } -} - -bool wxMDIChildFrame::Create( wxMDIParentFrame *parent, - wxWindowID id, const wxString& title, - const wxPoint& WXUNUSED(pos), const wxSize& size, - long style, const wxString& name ) -{ - m_title = title; - - return wxWindow::Create( parent->GetClientWindow(), id, wxDefaultPosition, size, style, name ); -} - -void wxMDIChildFrame::GetClientSize( int *width, int *height ) const -{ - wxWindow::GetClientSize( width, height ); -} - -void wxMDIChildFrame::AddChild( wxWindow *child ) -{ - wxWindow::AddChild( child ); -} - -static void SetInvokingWindow( wxMenu *menu, wxWindow *win ) -{ - menu->SetInvokingWindow( win ); - wxNode *node = menu->m_items.First(); - while (node) - { - wxMenuItem *menuitem = (wxMenuItem*)node->Data(); - if (menuitem->IsSubMenu()) - SetInvokingWindow( menuitem->GetSubMenu(), win ); - node = node->Next(); - } -} - -void wxMDIChildFrame::SetMenuBar( wxMenuBar *menu_bar ) -{ - m_menuBar = menu_bar; - - if (m_menuBar) - { - wxMDIParentFrame *mdi_frame = (wxMDIParentFrame*)m_parent->m_parent; - - if (m_menuBar->m_parent != this) - { - wxNode *node = m_menuBar->m_menus.First(); - while (node) - { - wxMenu *menu = (wxMenu*)node->Data(); - SetInvokingWindow( menu, this ); - node = node->Next(); - } - - m_menuBar->m_parent = mdi_frame; - } - mdi_frame->SetMDIMenuBar( m_menuBar ); - - gtk_myfixed_put( GTK_MYFIXED(mdi_frame->m_wxwindow), - m_menuBar->m_widget, m_menuBar->m_x, m_menuBar->m_y ); - } -} - -wxMenuBar *wxMDIChildFrame::GetMenuBar() -{ - return m_menuBar; -} - -void wxMDIChildFrame::Activate(void) -{ -} - -void wxMDIChildFrame::OnActivate( wxActivateEvent &WXUNUSED(event) ) -{ -} - -//----------------------------------------------------------------------------- -// InsertChild callback for wxMDIClientWindow -//----------------------------------------------------------------------------- - -static void wxInsertChildInMDI( wxMDIClientWindow* parent, wxMDIChildFrame* child ) -{ - wxString s = child->m_title; - if (s.IsNull()) s = _("MDI child"); - - GtkWidget *label_widget = gtk_label_new( s ); - gtk_misc_set_alignment( GTK_MISC(label_widget), 0.0, 0.5 ); - - gtk_signal_connect( GTK_OBJECT(child->m_widget), "size_allocate", - GTK_SIGNAL_FUNC(gtk_page_size_callback), (gpointer)child ); - - GtkNotebook *notebook = GTK_NOTEBOOK(parent->m_widget); - - gtk_notebook_append_page( notebook, child->m_widget, label_widget ); - - child->m_page = (GtkNotebookPage*) (g_list_last(notebook->children)->data); - - gtk_notebook_set_page( notebook, parent->m_children.Number()-1 ); - - gtk_page_change_callback( (GtkNotebook *) NULL, child->m_page, 0, parent ); -} - -//----------------------------------------------------------------------------- -// wxMDIClientWindow -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxMDIClientWindow,wxWindow) - -wxMDIClientWindow::wxMDIClientWindow(void) -{ -} - -wxMDIClientWindow::wxMDIClientWindow( wxMDIParentFrame *parent, long style ) -{ - CreateClient( parent, style ); -} - -wxMDIClientWindow::~wxMDIClientWindow(void) -{ -} - -bool wxMDIClientWindow::CreateClient( wxMDIParentFrame *parent, long style ) -{ - m_needParent = TRUE; - - m_insertCallback = (wxInsertChildFunction)wxInsertChildInMDI; - - PreCreation( parent, -1, wxPoint(10,10), wxSize(100,100), style, "wxMDIClientWindow" ); - - m_widget = gtk_notebook_new(); - - gtk_signal_connect( GTK_OBJECT(m_widget), "switch_page", - GTK_SIGNAL_FUNC(gtk_page_change_callback), (gpointer)this ); - - gtk_notebook_set_scrollable( GTK_NOTEBOOK(m_widget), 1 ); - - m_parent->AddChild( this ); - - (m_parent->m_insertCallback)( m_parent, this ); - - PostCreation(); - - Show( TRUE ); - - return TRUE; -} - - - diff --git a/src/gtk1/menu.cpp b/src/gtk1/menu.cpp deleted file mode 100644 index 27173bba72..0000000000 --- a/src/gtk1/menu.cpp +++ /dev/null @@ -1,595 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: menu.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "menu.h" -#pragma implementation "menuitem.h" -#endif - -#include "wx/menu.h" -#include "wx/log.h" -#include "wx/intl.h" -#include "wx/app.h" - -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -//----------------------------------------------------------------------------- -// wxMenuBar -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxMenuBar,wxWindow) - -wxMenuBar::wxMenuBar() -{ - m_needParent = FALSE; // hmmm - - PreCreation( (wxWindow *) NULL, -1, wxDefaultPosition, wxDefaultSize, 0, "menu" ); - - m_menus.DeleteContents( TRUE ); - - m_menubar = gtk_menu_bar_new(); - - m_widget = GTK_WIDGET(m_menubar); - - PostCreation(); - - Show( TRUE ); -} - -void wxMenuBar::Append( wxMenu *menu, const wxString &title ) -{ - m_menus.Append( menu ); - menu->m_title = title; - - int pos; - do - { - pos = menu->m_title.First( '&' ); - if (pos != -1) menu->m_title.Remove( pos, 1 ); - } while (pos != -1); - - menu->m_owner = gtk_menu_item_new_with_label( WXSTRINGCAST(menu->m_title) ); - gtk_widget_show( menu->m_owner ); - gtk_menu_item_set_submenu( GTK_MENU_ITEM(menu->m_owner), menu->m_menu ); - - gtk_menu_bar_append( GTK_MENU_BAR(m_menubar), menu->m_owner ); -} - -static int FindMenuItemRecursive( const wxMenu *menu, const wxString &menuString, const wxString &itemString ) -{ - if (menu->m_title == menuString) - { - int res = menu->FindItem( itemString ); - if (res != -1) return res; - } - - wxNode *node = menu->m_items.First(); - while (node) - { - wxMenuItem *item = (wxMenuItem*)node->Data(); - if (item->IsSubMenu()) - return FindMenuItemRecursive(item->GetSubMenu(), menuString, itemString); - - node = node->Next(); - } - - return -1; -} - -int wxMenuBar::FindMenuItem( const wxString &menuString, const wxString &itemString ) const -{ - wxNode *node = m_menus.First(); - while (node) - { - wxMenu *menu = (wxMenu*)node->Data(); - int res = FindMenuItemRecursive( menu, menuString, itemString); - if (res != -1) return res; - node = node->Next(); - } - return -1; -} - -/* Find a wxMenuItem using its id. Recurses down into sub-menus */ -static wxMenuItem* FindMenuItemByIdRecursive(const wxMenu* menu, int id) -{ - wxMenuItem* result = menu->FindItem(id); - - wxNode *node = menu->m_items.First(); - while ( node && result == NULL ) - { - wxMenuItem *item = (wxMenuItem*)node->Data(); - if (item->IsSubMenu()) - { - result = FindMenuItemByIdRecursive( item->GetSubMenu(), id ); - } - node = node->Next(); - } - - return result; -} - -wxMenuItem* wxMenuBar::FindMenuItemById( int id ) const -{ - wxMenuItem* result = 0; - wxNode *node = m_menus.First(); - while (node && result == 0) - { - wxMenu *menu = (wxMenu*)node->Data(); - result = FindMenuItemByIdRecursive( menu, id ); - node = node->Next(); - } - - return result; -} - -void wxMenuBar::Check( int id, bool check ) -{ - wxMenuItem* item = FindMenuItemById( id ); - if (item) item->Check(check); -} - -bool wxMenuBar::Checked( int id ) const -{ - wxMenuItem* item = FindMenuItemById( id ); - if (item) return item->IsChecked(); - return FALSE; -} - -void wxMenuBar::Enable( int id, bool enable ) -{ - wxMenuItem* item = FindMenuItemById( id ); - if (item) item->Enable(enable); -} - -bool wxMenuBar::Enabled( int id ) const -{ - wxMenuItem* item = FindMenuItemById( id ); - if (item) return item->IsEnabled(); - return FALSE; -} - -wxString wxMenuBar::GetLabel( int id ) const -{ - wxMenuItem* item = FindMenuItemById( id ); - - if (item) return item->GetText(); - - return ""; -} - -void wxMenuBar::SetLabel( int id, const wxString &label ) -{ - wxMenuItem* item = FindMenuItemById( id ); - - if (item) item->SetText( label ); -} - -void wxMenuBar::EnableTop( int pos, bool flag ) -{ - wxNode *node = m_menus.Nth( pos ); - - wxCHECK_RET( node, "menu not found" ); - - wxMenu* menu = (wxMenu*)node->Data(); - - if (menu->m_owner) gtk_widget_set_sensitive( menu->m_owner, flag ); -} - -wxString wxMenuBar::GetLabelTop( int pos ) const -{ - wxNode *node = m_menus.Nth( pos ); - - wxCHECK_MSG( node, "invalid", "menu not found" ); - - wxMenu* menu = (wxMenu*)node->Data(); - - return menu->GetTitle(); -} - -void wxMenuBar::SetLabelTop( int pos, const wxString& label ) -{ - wxNode *node = m_menus.Nth( pos ); - - wxCHECK_RET( node, "menu not found" ); - - wxMenu* menu = (wxMenu*)node->Data(); - - menu->SetTitle( label ); -} - -//----------------------------------------------------------------------------- -// "activate" -//----------------------------------------------------------------------------- - -static void gtk_menu_clicked_callback( GtkWidget *widget, wxMenu *menu ) -{ - int id = menu->FindMenuIdByMenuItem(widget); - - /* should find it for normal (not popup) menu */ - wxASSERT( (id != -1) || (menu->GetInvokingWindow() != NULL) ); - - if (!menu->IsEnabled(id)) return; - - wxMenuItem* item = menu->FindItem( id ); - wxCHECK_RET( item, "error in menu item callback" ); - - if (item->m_isCheckMenu) - { - if (item->m_isChecked == item->IsChecked()) - { - /* the menu item has been checked by calling wxMenuItem->Check() */ - return; - } - else - { - /* the user pressed on the menu item -> report */ - item->m_isChecked = item->IsChecked(); /* make consistent again */ - } - } - - wxCommandEvent event( wxEVT_COMMAND_MENU_SELECTED, id ); - event.SetEventObject( menu ); - event.SetInt(id ); - - if (menu->m_callback) - { - (void) (*(menu->m_callback)) (*menu, event); - return; - } - - if (menu->GetEventHandler()->ProcessEvent(event)) return; - - wxWindow *win = menu->GetInvokingWindow(); - if (win) win->GetEventHandler()->ProcessEvent( event ); -} - -//----------------------------------------------------------------------------- -// "select" -//----------------------------------------------------------------------------- - -static void gtk_menu_hilight_callback( GtkWidget *widget, wxMenu *menu ) -{ - int id = menu->FindMenuIdByMenuItem(widget); - - wxASSERT( id != -1 ); // should find it! - - if (!menu->IsEnabled(id)) return; - - wxCommandEvent event( wxEVT_MENU_HIGHLIGHT, id ); - event.SetEventObject( menu ); - event.SetInt(id ); - -/* wxMSW doesn't call callback here either - - if (menu->m_callback) - { - (void) (*(menu->m_callback)) (*menu, event); - return; - } -*/ - - if (menu->GetEventHandler()->ProcessEvent(event)) return; - - wxWindow *win = menu->GetInvokingWindow(); - if (win) win->GetEventHandler()->ProcessEvent( event ); -} - -//----------------------------------------------------------------------------- -// wxMenuItem -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxMenuItem,wxObject) - -wxMenuItem::wxMenuItem() -{ - m_id = ID_SEPARATOR; - m_isCheckMenu = FALSE; - m_isChecked = FALSE; - m_isEnabled = TRUE; - m_subMenu = (wxMenu *) NULL; - m_menuItem = (GtkWidget *) NULL; -} - -/* it's valid for this function to be called even if m_menuItem == NULL */ -void wxMenuItem::SetName( const wxString& str ) -{ - m_text = ""; - for ( const char *pc = str; *pc != '\0'; pc++ ) - { - if (*pc == '&') pc++; /* skip it */ - m_text << *pc; - } - - if (m_menuItem) - { - GtkLabel *label = GTK_LABEL( GTK_BIN(m_menuItem)->child ); - gtk_label_set( label, m_text.c_str()); - } -} - -void wxMenuItem::Check( bool check ) -{ - wxCHECK_RET( m_menuItem, "invalid menu item" ); - - wxCHECK_RET( IsCheckable(), "Can't check uncheckable item!" ) - - if (check == m_isChecked) return; - - m_isChecked = check; - gtk_check_menu_item_set_state( (GtkCheckMenuItem*)m_menuItem, (gint)check ); -} - -void wxMenuItem::Enable( bool enable ) -{ - wxCHECK_RET( m_menuItem, "invalid menu item" ); - - gtk_widget_set_sensitive( m_menuItem, enable ); - m_isEnabled = enable; -} - -bool wxMenuItem::IsChecked() const -{ - wxCHECK_MSG( m_menuItem, FALSE, "invalid menu item" ); - - wxCHECK( IsCheckable(), FALSE ); // can't get state of uncheckable item! - - bool bIsChecked = ((GtkCheckMenuItem*)m_menuItem)->active != 0; - - return bIsChecked; -} - -//----------------------------------------------------------------------------- -// wxMenu -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxMenu,wxEvtHandler) - -wxMenu::wxMenu( const wxString& title, const wxFunction func ) -{ - m_title = title; - m_items.DeleteContents( TRUE ); - m_invokingWindow = (wxWindow *) NULL; - m_menu = gtk_menu_new(); // Do not show! - - m_callback = func; - m_eventHandler = this; - m_clientData = (void*) NULL; - - if (m_title.IsNull()) m_title = ""; - if (m_title != "") - { - Append(-2, m_title); - AppendSeparator(); - } - - m_owner = (GtkWidget*) NULL; -} - -void wxMenu::SetTitle( const wxString& title ) -{ - /* Waiting for something better. */ - m_title = title; -} - -const wxString wxMenu::GetTitle() const -{ - return m_title; -} - -void wxMenu::AppendSeparator() -{ - wxMenuItem *mitem = new wxMenuItem(); - mitem->SetId(ID_SEPARATOR); - - GtkWidget *menuItem = gtk_menu_item_new(); - gtk_menu_append( GTK_MENU(m_menu), menuItem ); - gtk_widget_show( menuItem ); - mitem->SetMenuItem(menuItem); - m_items.Append( mitem ); -} - -void wxMenu::Append( int id, const wxString &item, const wxString &helpStr, bool checkable ) -{ - wxMenuItem *mitem = new wxMenuItem(); - mitem->SetId(id); - mitem->SetText(item); - mitem->SetHelp(helpStr); - mitem->SetCheckable(checkable); - const char *text = mitem->GetText(); - GtkWidget *menuItem = checkable ? gtk_check_menu_item_new_with_label(text) - : gtk_menu_item_new_with_label(text); - - mitem->SetMenuItem(menuItem); - - gtk_signal_connect( GTK_OBJECT(menuItem), "activate", - GTK_SIGNAL_FUNC(gtk_menu_clicked_callback), - (gpointer*)this ); - - gtk_signal_connect( GTK_OBJECT(menuItem), "select", - GTK_SIGNAL_FUNC(gtk_menu_hilight_callback), - (gpointer*)this ); - - gtk_menu_append( GTK_MENU(m_menu), menuItem ); - gtk_widget_show( menuItem ); - m_items.Append( mitem ); -} - -void wxMenu::Append( int id, const wxString &text, wxMenu *subMenu, const wxString &helpStr ) -{ - wxMenuItem *mitem = new wxMenuItem(); - mitem->SetId(id); - mitem->SetText(text); - - GtkWidget *menuItem = gtk_menu_item_new_with_label(mitem->GetText()); - mitem->SetHelp(helpStr); - mitem->SetMenuItem(menuItem); - mitem->SetSubMenu(subMenu); - - gtk_menu_item_set_submenu( GTK_MENU_ITEM(menuItem), subMenu->m_menu ); - gtk_menu_append( GTK_MENU(m_menu), menuItem ); - gtk_widget_show( menuItem ); - m_items.Append( mitem ); -} - -int wxMenu::FindItem( const wxString itemString ) const -{ - wxString s( itemString ); - - int pos; - do - { - pos = s.First( '&' ); - if (pos != -1) s.Remove( pos, 1 ); - } while (pos != -1); - - wxNode *node = m_items.First(); - while (node) - { - wxMenuItem *item = (wxMenuItem*)node->Data(); - if (item->GetText() == s) - { - return item->GetId(); - } - node = node->Next(); - } - - return -1; -} - -void wxMenu::Enable( int id, bool enable ) -{ - wxMenuItem *item = FindItem(id); - if (item) - { - item->Enable(enable); - } -} - -bool wxMenu::IsEnabled( int id ) const -{ - wxMenuItem *item = FindItem(id); - if (item) - { - return item->IsEnabled(); - } - else - { - return FALSE; - } -} - -void wxMenu::Check( int id, bool enable ) -{ - wxMenuItem *item = FindItem(id); - if (item) - { - item->Check(enable); - } -} - -bool wxMenu::IsChecked( int id ) const -{ - wxMenuItem *item = FindItem(id); - if (item) - { - return item->IsChecked(); - } - else - { - return FALSE; - } -} - -void wxMenu::SetLabel( int id, const wxString &label ) -{ - wxMenuItem *item = FindItem(id); - if (item) - { - item->SetText(label); - } -} - -wxString wxMenu::GetLabel( int id ) const -{ - wxMenuItem *item = FindItem(id); - if (item) - { - return item->GetText(); - } - else - { - return ""; - } -} - -void wxMenu::SetHelpString( int id, const wxString& helpString ) -{ - wxMenuItem *item = FindItem(id); - if (item) item->SetHelp( helpString ); -} - -wxString wxMenu::GetHelpString( int id ) const -{ - wxMenuItem *item = FindItem(id); - if (item) - { - return item->GetHelp(); - } - else - { - return ""; - } -} - -int wxMenu::FindMenuIdByMenuItem( GtkWidget *menuItem ) const -{ - wxNode *node = m_items.First(); - while (node) - { - wxMenuItem *item = (wxMenuItem*)node->Data(); - if (item->GetMenuItem() == menuItem) - return item->GetId(); - node = node->Next(); - } - - return -1; -} - -wxMenuItem *wxMenu::FindItem(int id) const -{ - wxNode *node = m_items.First(); - while (node) - { - wxMenuItem *item = (wxMenuItem*)node->Data(); - if (item->GetId() == id) - { - return item; - } - node = node->Next(); - } - - /* Not finding anything here can be correct - * when search the entire menu system for - * an entry -> no error message. */ - - return (wxMenuItem *) NULL; -} - -void wxMenu::SetInvokingWindow( wxWindow *win ) -{ - m_invokingWindow = win; -} - -wxWindow *wxMenu::GetInvokingWindow() -{ - return m_invokingWindow; -} - - diff --git a/src/gtk1/minifram.cpp b/src/gtk1/minifram.cpp deleted file mode 100644 index 2407a21cd4..0000000000 --- a/src/gtk1/minifram.cpp +++ /dev/null @@ -1,156 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: minifram.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "minifram.h" -#endif - -#include "wx/minifram.h" -#include "wx/dcscreen.h" - -#include "gtk/gtk.h" -#include "wx/gtk/win_gtk.h" - -//----------------------------------------------------------------------------- -// "clicked" -//----------------------------------------------------------------------------- - -static void gtk_button_clicked_callback( GtkWidget *WXUNUSED(widget), wxMiniFrame *mf ) -{ - mf->Close(); -} - -//----------------------------------------------------------------------------- -// wxMiniFrame -//----------------------------------------------------------------------------- - -BEGIN_EVENT_TABLE(wxMiniFrame,wxFrame) - EVT_PAINT(wxMiniFrame::OnPaint) - EVT_MOUSE_EVENTS(wxMiniFrame::OnMouse) -END_EVENT_TABLE() - -IMPLEMENT_DYNAMIC_CLASS(wxMiniFrame,wxFrame) - -bool wxMiniFrame::Create( wxWindow *parent, wxWindowID id, const wxString &title, - const wxPoint &pos, const wxSize &size, - long style, const wxString &name ) -{ - style = style | wxSIMPLE_BORDER; - - m_miniEdge = 3; - m_miniTitle = 13; - m_isDragging = FALSE; - m_oldX = -1; - m_oldY = -1; - m_diffX = 0; - m_diffY = 0; - - wxFrame::Create( parent, id, title, pos, size, style, name ); - - GtkWidget *close_button = gtk_button_new_with_label( "x" ); - - gtk_myfixed_put( GTK_MYFIXED(m_wxwindow), close_button, 4, 4 ); - gtk_widget_set_usize( close_button, 12, 11 ); - - gtk_widget_show( close_button ); - - gtk_signal_connect( GTK_OBJECT(close_button), "clicked", - GTK_SIGNAL_FUNC(gtk_button_clicked_callback), (gpointer*)this ); - - return TRUE; -} - -void wxMiniFrame::OnPaint( wxPaintEvent &WXUNUSED(event) ) -{ - if (m_miniTitle == 0) return; - if (m_title.IsEmpty()) return; - - wxPaintDC dc(this); - - dc.SetBrush( *wxTRANSPARENT_BRUSH ); - dc.DrawRectangle( 0, 0, m_width, m_height ); - - dc.SetPen( *wxWHITE_PEN ); - dc.DrawLine( 1, 1, m_width-2, 1 ); - dc.DrawLine( 1, 1, 1, m_height-2 ); - - dc.SetPen( *wxMEDIUM_GREY_PEN ); - dc.DrawLine( 1, m_height-1, m_width-2, m_height-1 ); - dc.DrawLine( m_width-1, 1, m_width-1, m_height-2 ); - - dc.SetBrush( *wxBLUE_BRUSH ); - dc.SetPen( *wxTRANSPARENT_PEN ); - dc.DrawRectangle( m_miniEdge, m_miniEdge, m_width - 2*m_miniEdge, m_miniTitle ); - - dc.SetTextForeground( *wxWHITE ); - dc.SetFont( *wxSMALL_FONT ); - dc.DrawText( m_title, 14 + m_miniEdge, 1 + m_miniEdge ); -} - -void wxMiniFrame::DrawFrame( int x, int y ) -{ - int org_x = 0; - int org_y = 0; - gdk_window_get_origin( m_wxwindow->window, &org_x, &org_y ); - x += org_x; - y += org_y; - - wxScreenDC dc; - dc.SetLogicalFunction( wxXOR ); - - dc.DrawRectangle( x, y, m_width, m_height ); -} - -void wxMiniFrame::OnMouse( wxMouseEvent &event ) -{ - int x = event.GetX(); - int y = event.GetY(); - - if (event.LeftDown()) - { - CaptureMouse(); - m_diffX = x; - m_diffY = y; - DrawFrame( 0, 0 ); - m_oldX = 0; - m_oldY = 0; - m_isDragging = TRUE; - return; - } - - if (event.Dragging() && m_isDragging) - { - DrawFrame( m_oldX, m_oldY ); - m_oldX = x - m_diffX; - m_oldY = y - m_diffY; - DrawFrame( m_oldX, m_oldY ); - return; - } - - if (event.LeftUp() && m_isDragging) - { - m_isDragging = FALSE; - DrawFrame( m_oldX, m_oldY ); - ReleaseMouse(); - - int org_x = 0; - int org_y = 0; - gdk_window_get_origin( m_wxwindow->window, &org_x, &org_y ); - x += org_x - m_diffX; - y += org_y - m_diffY; - m_x = x; - m_y = y; - gtk_widget_set_uposition( m_widget, x, y ); - - return; - } - - event.Skip(); -} - diff --git a/src/gtk1/notebook.cpp b/src/gtk1/notebook.cpp deleted file mode 100644 index 7eee0d5246..0000000000 --- a/src/gtk1/notebook.cpp +++ /dev/null @@ -1,661 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: notebook.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling, Vadim Zeitlin -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "notebook.h" -#endif - -#include "wx/notebook.h" -#include "wx/panel.h" -#include "wx/utils.h" -#include "wx/imaglist.h" -#include "wx/intl.h" -#include "wx/log.h" - -#include "gdk/gdk.h" -#include "gtk/gtk.h" -#include "wx/gtk/win_gtk.h" -#include "gdk/gdkkeysyms.h" - -//----------------------------------------------------------------------------- -// data -//----------------------------------------------------------------------------- - -extern bool g_blockEventsOnDrag; - -//----------------------------------------------------------------------------- -// wxNotebookPage -//----------------------------------------------------------------------------- - -class wxNotebookPage: public wxObject -{ -public: - wxNotebookPage() - { - m_id = -1; - m_text = ""; - m_image = -1; - m_page = (GtkNotebookPage *) NULL; - m_client = (wxWindow *) NULL; - m_parent = (GtkNotebook *) NULL; - m_box = (GtkWidget *) NULL; - m_added = FALSE; - } - - /* - mark page as "added' to the notebook, return FALSE if the page was - already added - */ - - bool Add() - { - if ( WasAdded() ) - return FALSE; - - m_added = TRUE; - return TRUE; - } - - bool WasAdded() const { return m_added; } - - int m_id; - wxString m_text; - int m_image; - GtkNotebookPage *m_page; - GtkLabel *m_label; - wxWindow *m_client; - GtkNotebook *m_parent; - GtkWidget *m_box; // in which the label and image are packed - -private: - bool m_added; -}; - -//----------------------------------------------------------------------------- -// "switch_page" -//----------------------------------------------------------------------------- - -static void gtk_notebook_page_change_callback(GtkNotebook *WXUNUSED(widget), - GtkNotebookPage *WXUNUSED(page), - gint nPage, - gpointer data) -{ - wxNotebook *notebook = (wxNotebook *)data; - - int old = notebook->GetSelection(); - - // TODO: emulate PAGE_CHANGING event - - wxNotebookEvent event( wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED, - notebook->GetId(), nPage, old ); - event.SetEventObject( notebook ); - notebook->GetEventHandler()->ProcessEvent( event ); -} - -//----------------------------------------------------------------------------- -// "size_allocate" -//----------------------------------------------------------------------------- - -static void gtk_page_size_callback( GtkWidget *WXUNUSED(widget), GtkAllocation* alloc, wxWindow *win ) -{ - if ((win->m_x == alloc->x) && - (win->m_y == alloc->y) && - (win->m_width == alloc->width) && - (win->m_height == alloc->height)) - { - return; - } - - win->SetSize( alloc->x, alloc->y, alloc->width, alloc->height ); - - if (win->GetAutoLayout()) win->Layout(); -} - -//----------------------------------------------------------------------------- -// "key_press_event" -//----------------------------------------------------------------------------- - -static gint -gtk_notebook_key_press_callback( GtkWidget *widget, GdkEventKey *gdk_event, wxNotebook *notebook ) -{ - if (g_blockEventsOnDrag) return FALSE; - - if (!notebook->HasVMT()) return FALSE; - - if (gdk_event->keyval != GDK_Down) return FALSE; - - if (notebook != notebook->FindFocus()) return FALSE; - - if (notebook->m_pages.GetCount() == 0) return FALSE; - - wxNode *node = notebook->m_pages.Nth( notebook->GetSelection() ); - - if (!node) return FALSE; - - wxNotebookPage *page = (wxNotebookPage*) node->Data(); - - // don't let others the key event - gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "key_press_event" ); - - page->m_client->SetFocus(); - - return TRUE; -} - -//----------------------------------------------------------------------------- -// InsertChild callback for wxNotebook -//----------------------------------------------------------------------------- - -static void wxInsertChildInNotebook( wxNotebook* parent, wxWindow* child ) -{ - wxNotebookPage *page = new wxNotebookPage(); - - page->m_id = parent->GetPageCount(); - - page->m_box = gtk_hbox_new (FALSE, 0); - gtk_container_border_width(GTK_CONTAINER(page->m_box), 2); - - GtkNotebook *notebook = GTK_NOTEBOOK(parent->m_widget); - - page->m_client = child; - gtk_notebook_append_page( notebook, child->m_widget, page->m_box ); - - page->m_page = (GtkNotebookPage*) (g_list_last(notebook->children)->data); - - page->m_parent = notebook; - - gtk_signal_connect( GTK_OBJECT(child->m_widget), "size_allocate", - GTK_SIGNAL_FUNC(gtk_page_size_callback), (gpointer)child ); - - wxASSERT_MSG( page->m_page, "Notebook page creation error" ); - - parent->m_pages.Append( page ); -} - -//----------------------------------------------------------------------------- -// wxNotebook -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxNotebook,wxControl) - -void wxNotebook::Init() -{ - m_imageList = (wxImageList *) NULL; - m_pages.DeleteContents( TRUE ); - m_idHandler = 0; -} - -wxNotebook::wxNotebook() -{ - Init(); -} - -wxNotebook::wxNotebook( wxWindow *parent, wxWindowID id, - const wxPoint& pos, const wxSize& size, - long style, const wxString& name ) -{ - Init(); - Create( parent, id, pos, size, style, name ); -} - -wxNotebook::~wxNotebook() -{ - // don't generate change page events any more - if (m_idHandler != 0) - gtk_signal_disconnect(GTK_OBJECT(m_widget), m_idHandler); - - DeleteAllPages(); -} - -bool wxNotebook::Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos, const wxSize& size, - long style, const wxString& name ) -{ - m_needParent = TRUE; - m_acceptsFocus = TRUE; - m_insertCallback = (wxInsertChildFunction)wxInsertChildInNotebook; - - PreCreation( parent, id, pos, size, style, name ); - - m_widget = gtk_notebook_new(); - -#ifdef __WXDEBUG__ - debug_focus_in( m_widget, "wxNotebook::m_widget", name ); -#endif - - gtk_notebook_set_scrollable( GTK_NOTEBOOK(m_widget), 1 ); - - m_idHandler = gtk_signal_connect ( - GTK_OBJECT(m_widget), "switch_page", - GTK_SIGNAL_FUNC(gtk_notebook_page_change_callback), - (gpointer)this ); - - m_parent->AddChild( this ); - - (m_parent->m_insertCallback)( m_parent, this ); - - gtk_signal_connect( GTK_OBJECT(m_widget), "key_press_event", - GTK_SIGNAL_FUNC(gtk_notebook_key_press_callback), (gpointer)this ); - - PostCreation(); - - Show( TRUE ); - - return TRUE; -} - -int wxNotebook::GetSelection() const -{ - wxCHECK_MSG( m_widget != NULL, -1, "invalid notebook" ); - - if (m_pages.Number() == 0) return -1; - - GtkNotebookPage *g_page = GTK_NOTEBOOK(m_widget)->cur_page; - if (!g_page) return -1; - - wxNotebookPage *page = (wxNotebookPage *) NULL; - - wxNode *node = m_pages.First(); - while (node) - { - page = (wxNotebookPage*)node->Data(); - - if ((page->m_page == g_page) || (page->m_page == (GtkNotebookPage*)NULL)) - { - // page->m_page is NULL directly after gtk_notebook_append. gtk emits - // "switch_page" then and we ask for GetSelection() in the handler for - // "switch_page". otherwise m_page should never be NULL. all this - // might also be wrong. - break; - } - node = node->Next(); - } - - wxCHECK_MSG( node != NULL, -1, "wxNotebook: no selection?" ); - - return page->m_id; -} - -int wxNotebook::GetPageCount() const -{ - // count only the pages which were already added to the notebook for MSW - // compatibility (and, in fact, this behaviour makes more sense anyhow - // because only the added pages are shown) - - int n = 0; - for ( wxNode *node = m_pages.First(); node; node = node->Next() ) - { - wxNotebookPage *page = (wxNotebookPage*)node->Data(); - - if (page->WasAdded()) n++; - } - - return n; -} - -int wxNotebook::GetRowCount() const -{ - return 1; -} - -wxString wxNotebook::GetPageText( int page ) const -{ - wxCHECK_MSG( m_widget != NULL, "", "invalid notebook" ); - - wxNotebookPage* nb_page = GetNotebookPage(page); - if (nb_page) - return nb_page->m_text; - else - return ""; -} - -int wxNotebook::GetPageImage( int page ) const -{ - wxCHECK_MSG( m_widget != NULL, 0, "invalid notebook" ); - - wxNotebookPage* nb_page = GetNotebookPage(page); - if (nb_page) - return nb_page->m_image; - else - return 0; -} - -wxNotebookPage* wxNotebook::GetNotebookPage(int page) const -{ - wxCHECK_MSG( m_widget != NULL, (wxNotebookPage*)NULL, "invalid notebook" ); - - wxNotebookPage *nb_page = (wxNotebookPage *) NULL; - - wxNode *node = m_pages.First(); - while (node) - { - nb_page = (wxNotebookPage*)node->Data(); - if (nb_page->m_id == page) - return nb_page; - node = node->Next(); - } - - wxFAIL_MSG( "Notebook page not found!" ); - - return (wxNotebookPage *) NULL; -} - -int wxNotebook::SetSelection( int page ) -{ - wxCHECK_MSG( m_widget != NULL, -1, "invalid notebook" ); - - int selOld = GetSelection(); - wxNotebookPage* nb_page = GetNotebookPage(page); - - if (!nb_page) return -1; - - int page_num = 0; - GList *child = GTK_NOTEBOOK(m_widget)->children; - while (child) - { - if (nb_page->m_page == (GtkNotebookPage*)child->data) break; - page_num++; - child = child->next; - } - - if (!child) return -1; - - gtk_notebook_set_page( GTK_NOTEBOOK(m_widget), page_num ); - - return selOld; -} - -void wxNotebook::AdvanceSelection( bool bForward ) -{ - wxCHECK_RET( m_widget != NULL, "invalid notebook" ); - - int sel = GetSelection(); - int max = GetPageCount(); - - if (bForward) - SetSelection( sel == max ? 0 : sel + 1 ); - else - SetSelection( sel == 0 ? max : sel - 1 ); -} - -void wxNotebook::SetImageList( wxImageList* imageList ) -{ - m_imageList = imageList; -} - -bool wxNotebook::SetPageText( int page, const wxString &text ) -{ - wxCHECK_MSG( m_widget != NULL, FALSE, "invalid notebook" ); - - wxNotebookPage* nb_page = GetNotebookPage(page); - - if (!nb_page) return FALSE; - - nb_page->m_text = text; - - if (nb_page->m_text.IsEmpty()) nb_page->m_text = ""; - - gtk_label_set(nb_page->m_label, nb_page->m_text); - - return TRUE; -} - -bool wxNotebook::SetPageImage( int page, int image ) -{ - /* HvdH 28-12-98: now it works, but it's a bit of a kludge */ - - wxNotebookPage* nb_page = GetNotebookPage(page); - - if (!nb_page) return FALSE; - - /* Optimization posibility: return immediately if image unchanged. - * Not enabled because it may break existing (stupid) code that - * manipulates the imagelist to cycle images */ - - /* if (image == nb_page->m_image) return TRUE; */ - - /* For different cases: - 1) no image -> no image - 2) image -> no image - 3) no image -> image - 4) image -> image */ - - if (image == -1 && nb_page->m_image == -1) - return TRUE; /* Case 1): Nothing to do. */ - - GtkWidget *pixmapwid = (GtkWidget*) NULL; - - if (nb_page->m_image != -1) - { - /* Case 2) or 4). There is already an image in the gtkhbox. Let's find it */ - - GList *child = gtk_container_children(GTK_CONTAINER(nb_page->m_box)); - while (child) - { - if (GTK_IS_PIXMAP(child->data)) - { - pixmapwid = GTK_WIDGET(child->data); - break; - } - child = child->next; - } - - /* We should have the pixmap widget now */ - wxASSERT(pixmapwid != NULL); - - if (image == -1) - { - /* If there's no new widget, just remove the old from the box */ - gtk_container_remove(GTK_CONTAINER(nb_page->m_box), pixmapwid); - nb_page->m_image = -1; - - return TRUE; /* Case 2) */ - } - } - - /* Only cases 3) and 4) left */ - wxASSERT( m_imageList != NULL ); /* Just in case */ - - /* Construct the new pixmap */ - const wxBitmap *bmp = m_imageList->GetBitmap(image); - GdkPixmap *pixmap = bmp->GetPixmap(); - GdkBitmap *mask = (GdkBitmap*) NULL; - if ( bmp->GetMask() ) - { - mask = bmp->GetMask()->GetBitmap(); - } - - if (pixmapwid == NULL) - { - /* Case 3) No old pixmap. Create a new one and prepend it to the hbox */ - pixmapwid = gtk_pixmap_new (pixmap, mask ); - - /* CHECKME: Are these pack flags okay? */ - gtk_box_pack_start(GTK_BOX(nb_page->m_box), pixmapwid, FALSE, FALSE, 3); - gtk_widget_show(pixmapwid); - } - else - { - /* Case 4) Simply replace the pixmap */ - gtk_pixmap_set(GTK_PIXMAP(pixmapwid), pixmap, mask); - } - - nb_page->m_image = image; - - return TRUE; -} - -void wxNotebook::SetPageSize( const wxSize &WXUNUSED(size) ) -{ - wxFAIL_MSG( "wxNotebook::SetPageSize not implemented" ); -} - -void wxNotebook::SetPadding( const wxSize &WXUNUSED(padding) ) -{ - wxFAIL_MSG( "wxNotebook::SetPadding not implemented" ); -} - -bool wxNotebook::DeleteAllPages() -{ - wxCHECK_MSG( m_widget != NULL, FALSE, "invalid notebook" ); - - wxNode *page_node = m_pages.First(); - while (page_node) - { - wxNotebookPage *page = (wxNotebookPage*)page_node->Data(); - - DeletePage( page->m_id ); - - page_node = m_pages.First(); - } - - return TRUE; -} - -bool wxNotebook::DeletePage( int page ) -{ - wxNotebookPage* nb_page = GetNotebookPage(page); - if (!nb_page) return FALSE; - - int page_num = 0; - GList *child = GTK_NOTEBOOK(m_widget)->children; - while (child) - { - if (nb_page->m_page == (GtkNotebookPage*)child->data) break; - page_num++; - child = child->next; - } - - wxCHECK_MSG( child != NULL, FALSE, "illegal notebook index" ); - - delete nb_page->m_client; - - m_pages.DeleteObject( nb_page ); - - return TRUE; -} - -bool wxNotebook::RemovePage( int page ) -{ - wxNotebookPage* nb_page = GetNotebookPage(page); - if (!nb_page) return FALSE; - - int page_num = 0; - GList *child = GTK_NOTEBOOK(m_widget)->children; - while (child) - { - if (nb_page->m_page == (GtkNotebookPage*)child->data) break; - page_num++; - child = child->next; - } - - wxCHECK_MSG( child != NULL, FALSE, "illegal notebook index" ); - - gtk_notebook_remove_page( GTK_NOTEBOOK(m_widget), page_num ); - - m_pages.DeleteObject( nb_page ); - - return TRUE; -} - -bool wxNotebook::AddPage(wxWindow* win, const wxString& text, - bool select, int imageId) -{ - wxCHECK_MSG( m_widget != NULL, FALSE, "invalid notebook" ); - - /* we've created the notebook page in AddChild(). Now we just have to set - the caption for the page and set the others parameters. */ - - wxNotebookPage *page = (wxNotebookPage *) NULL; - - wxNode *node = m_pages.First(); - while (node) - { - page = (wxNotebookPage*)node->Data(); - if ( page->m_client == win ) break; - node = node->Next(); - } - - wxCHECK_MSG( page != NULL, FALSE, - "Can't add a page whose parent is not the notebook!" ); - - wxCHECK_MSG( page->Add(), FALSE, - "Can't add the same page twice to a notebook." ); - - if (imageId != -1) - { - wxASSERT( m_imageList != NULL ); - - const wxBitmap *bmp = m_imageList->GetBitmap(imageId); - GdkPixmap *pixmap = bmp->GetPixmap(); - GdkBitmap *mask = (GdkBitmap*) NULL; - if ( bmp->GetMask() ) - { - mask = bmp->GetMask()->GetBitmap(); - } - - GtkWidget *pixmapwid = gtk_pixmap_new (pixmap, mask ); - - gtk_box_pack_start(GTK_BOX(page->m_box), pixmapwid, FALSE, FALSE, 3); - - gtk_widget_show(pixmapwid); - } - - /* then set the attributes */ - page->m_text = text; - if (page->m_text.IsEmpty()) page->m_text = ""; - page->m_image = imageId; - page->m_label = (GtkLabel *)gtk_label_new(page->m_text); - gtk_box_pack_end( GTK_BOX(page->m_box), (GtkWidget *)page->m_label, FALSE, FALSE, 3); - - /* @@@: what does this do? do we still need it? - gtk_misc_set_alignment(GTK_MISC(page->m_label), 0.0, 0.5); */ - - gtk_widget_show((GtkWidget *)page->m_label); - - if (select) SetSelection( GetPageCount()-1 ); - - return TRUE; -} - -wxWindow *wxNotebook::GetPage( int page ) const -{ - wxCHECK_MSG( m_widget != NULL, (wxWindow*) NULL, "invalid notebook" ); - - wxNotebookPage* nb_page = GetNotebookPage(page); - if (!nb_page) - return (wxWindow *) NULL; - else - return nb_page->m_client; -} - -// override these 2 functions to do nothing: everything is done in OnSize -void wxNotebook::SetConstraintSizes( bool WXUNUSED(recurse) ) -{ - // don't set the sizes of the pages - their correct size is not yet known - wxControl::SetConstraintSizes(FALSE); -} - -bool wxNotebook::DoPhase( int WXUNUSED(nPhase) ) -{ - return TRUE; -} - -void wxNotebook::ApplyWidgetStyle() -{ - SetWidgetStyle(); - gtk_widget_set_style( m_widget, m_widgetStyle ); -} - -//----------------------------------------------------------------------------- -// wxNotebookEvent -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxNotebookEvent, wxNotifyEvent) - diff --git a/src/gtk1/palette.cpp b/src/gtk1/palette.cpp deleted file mode 100644 index 4cdaef3726..0000000000 --- a/src/gtk1/palette.cpp +++ /dev/null @@ -1,119 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: palette.cpp -// Purpose: -// Author: Robert Roebling -// Created: 01/02/97 -// Id: -// Copyright: (c) 1998 Robert Roebling, Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifdef __GNUG__ -#pragma implementation "palette.h" -#endif - -#include "wx/palette.h" - -#include "gdk/gdk.h" - -//----------------------------------------------------------------------------- -// wxPalette -//----------------------------------------------------------------------------- - -class wxPaletteRefData: public wxObjectRefData -{ - public: - - wxPaletteRefData(void); - ~wxPaletteRefData(void); - - GdkColormap *m_colormap; -}; - -wxPaletteRefData::wxPaletteRefData() -{ - m_colormap = (GdkColormap *) NULL; -}; - -wxPaletteRefData::~wxPaletteRefData() -{ - if (m_colormap) gdk_colormap_unref( m_colormap ); -}; - -//----------------------------------------------------------------------------- - -#define M_PALETTEDATA ((wxPaletteRefData *)m_refData) - -IMPLEMENT_DYNAMIC_CLASS(wxPalette,wxGDIObject) - -wxPalette::wxPalette() -{ -}; - -wxPalette::wxPalette( int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue ) -{ - m_refData = new wxPaletteRefData(); - Create( n, red, green, blue ); -}; - -wxPalette::wxPalette( const wxPalette& palette ) -{ - Ref( palette ); -}; - -wxPalette::~wxPalette() -{ -}; - -wxPalette& wxPalette::operator = ( const wxPalette& palette ) -{ - if (*this == palette) return (*this); - Ref( palette ); - return *this; -}; - -bool wxPalette::operator == ( const wxPalette& palette ) -{ - return m_refData == palette.m_refData; -}; - -bool wxPalette::operator != ( const wxPalette& palette ) -{ - return m_refData != palette.m_refData; -}; - -bool wxPalette::Ok(void) const -{ - return (m_refData); -}; - -bool wxPalette::Create( int WXUNUSED(n), - const unsigned char *WXUNUSED(red), - const unsigned char *WXUNUSED(green), - const unsigned char *WXUNUSED(blue) ) -{ - wxFAIL_MSG("not implemented"); - - return FALSE; -}; - -int wxPalette::GetPixel( const unsigned char WXUNUSED(red), - const unsigned char WXUNUSED(green), - const unsigned char WXUNUSED(blue) ) const -{ - wxFAIL_MSG("not implemented"); - - return 0; -}; - -bool wxPalette::GetRGB( int WXUNUSED(pixel), - unsigned char *WXUNUSED(red), - unsigned char *WXUNUSED(green), - unsigned char *WXUNUSED(blue) ) const -{ - wxFAIL_MSG("not implemented"); - - return 0; -}; - diff --git a/src/gtk1/pen.cpp b/src/gtk1/pen.cpp deleted file mode 100644 index 3152074605..0000000000 --- a/src/gtk1/pen.cpp +++ /dev/null @@ -1,192 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: pen.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifdef __GNUG__ -#pragma implementation "pen.h" -#endif - -#include "wx/pen.h" - -#include "gdk/gdk.h" - -//----------------------------------------------------------------------------- -// wxPen -//----------------------------------------------------------------------------- - -class wxPenRefData: public wxObjectRefData -{ -public: - - wxPenRefData(void); - wxPenRefData(const wxPenRefData& data); - - int m_width; - int m_style; - int m_joinStyle; - int m_capStyle; - wxColour m_colour; -}; - -wxPenRefData::wxPenRefData() -{ - m_width = 1; - m_style = wxSOLID; - m_joinStyle = wxJOIN_ROUND; - m_capStyle = wxCAP_ROUND; -} - -wxPenRefData::wxPenRefData( const wxPenRefData& data ) -{ - m_style = data.m_style; - m_width = data.m_width; - m_joinStyle = data.m_joinStyle; - m_capStyle = data.m_capStyle; - m_colour = data.m_colour; -} - -//----------------------------------------------------------------------------- - -#define M_PENDATA ((wxPenRefData *)m_refData) - -IMPLEMENT_DYNAMIC_CLASS(wxPen,wxGDIObject) - -wxPen::wxPen() -{ - if (wxThePenList) wxThePenList->AddPen( this ); -} - -wxPen::wxPen( const wxColour &colour, int width, int style ) -{ - m_refData = new wxPenRefData(); - M_PENDATA->m_width = width; - M_PENDATA->m_style = style; - M_PENDATA->m_colour = colour; - - if (wxThePenList) wxThePenList->AddPen( this ); -} - -wxPen::wxPen( const wxPen& pen ) -{ - Ref( pen ); - if (wxThePenList) wxThePenList->AddPen( this ); -} - -wxPen::~wxPen() -{ - if (wxThePenList) wxThePenList->RemovePen( this ); -} - -wxPen& wxPen::operator = ( const wxPen& pen ) -{ - if (*this == pen) return (*this); - Ref( pen ); - return *this; -} - -bool wxPen::operator == ( const wxPen& pen ) -{ - return m_refData == pen.m_refData; -} - -bool wxPen::operator != ( const wxPen& pen ) -{ - return m_refData != pen.m_refData; -} - -void wxPen::SetColour( const wxColour &colour ) -{ - Unshare(); - M_PENDATA->m_colour = colour; -} - -void wxPen::SetColour( int red, int green, int blue ) -{ - Unshare(); - M_PENDATA->m_colour.Set( red, green, blue ); -} - -void wxPen::SetCap( int capStyle ) -{ - Unshare(); - M_PENDATA->m_capStyle = capStyle; -} - -void wxPen::SetJoin( int joinStyle ) -{ - Unshare(); - M_PENDATA->m_joinStyle = joinStyle; -} - -void wxPen::SetStyle( int style ) -{ - Unshare(); - M_PENDATA->m_style = style; -} - -void wxPen::SetWidth( int width ) -{ - Unshare(); - M_PENDATA->m_width = width; -} - -int wxPen::GetCap() const -{ - wxCHECK_MSG( Ok(), -1, "invalid pen" ); - - return M_PENDATA->m_capStyle; -} - -int wxPen::GetJoin() const -{ - wxCHECK_MSG( Ok(), -1, "invalid pen" ); - - return M_PENDATA->m_joinStyle; -} - -int wxPen::GetStyle() const -{ - wxCHECK_MSG( Ok(), -1, "invalid pen" ); - - return M_PENDATA->m_style; -} - -int wxPen::GetWidth() const -{ - wxCHECK_MSG( Ok(), -1, "invalid pen" ); - - return M_PENDATA->m_width; -} - -wxColour &wxPen::GetColour() const -{ - wxCHECK_MSG( Ok(), wxNullColour, "invalid pen" ); - - return M_PENDATA->m_colour; -} - -bool wxPen::Ok() const -{ - return (m_refData != NULL); -} - -void wxPen::Unshare() -{ - if (!m_refData) - { - m_refData = new wxPenRefData(); - } - else - { - wxPenRefData* ref = new wxPenRefData( *(wxPenRefData*)m_refData ); - UnRef(); - m_refData = ref; - } -} - diff --git a/src/gtk1/radiobox.cpp b/src/gtk1/radiobox.cpp deleted file mode 100644 index d0808503e7..0000000000 --- a/src/gtk1/radiobox.cpp +++ /dev/null @@ -1,505 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: radiobox.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "radiobox.h" -#endif - -#include "wx/radiobox.h" -#include "wx/dialog.h" -#include "wx/frame.h" - -#include "gdk/gdk.h" -#include "gtk/gtk.h" -#include "wx/gtk/win_gtk.h" - -//----------------------------------------------------------------------------- -// data -//----------------------------------------------------------------------------- - -extern bool g_blockEventsOnDrag; - -//----------------------------------------------------------------------------- -// "clicked" -//----------------------------------------------------------------------------- - -static void gtk_radiobutton_clicked_callback( GtkWidget *WXUNUSED(widget), wxRadioBox *rb ) -{ - if (!rb->HasVMT()) return; - if (g_blockEventsOnDrag) return; - - if (rb->m_alreadySent) - { - rb->m_alreadySent = FALSE; - return; - } - - rb->m_alreadySent = TRUE; - - wxCommandEvent event( wxEVT_COMMAND_RADIOBOX_SELECTED, rb->GetId() ); - event.SetInt( rb->GetSelection() ); - wxString tmp( rb->GetStringSelection() ); - event.SetString( WXSTRINGCAST(tmp) ); - event.SetEventObject( rb ); - rb->GetEventHandler()->ProcessEvent(event); -} - -//----------------------------------------------------------------------------- -// wxRadioBox -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxRadioBox,wxControl) - -BEGIN_EVENT_TABLE(wxRadioBox, wxControl) - EVT_SIZE(wxRadioBox::OnSize) -END_EVENT_TABLE() - -wxRadioBox::wxRadioBox(void) -{ -} - -bool wxRadioBox::Create( wxWindow *parent, wxWindowID id, const wxString& title, - const wxPoint &pos, const wxSize &size, - int n, const wxString choices[], int majorDim, - long style, const wxValidator& validator, - const wxString &name ) -{ - m_alreadySent = FALSE; - m_needParent = TRUE; - m_acceptsFocus = TRUE; - - PreCreation( parent, id, pos, size, style, name ); - - SetValidator( validator ); - - m_widget = gtk_frame_new( title ); - - m_majorDim = majorDim; - - GtkRadioButton *m_radio = (GtkRadioButton*) NULL; - - GSList *radio_button_group = (GSList *) NULL; - for (int i = 0; i < n; i++) - { - if (i) radio_button_group = gtk_radio_button_group( GTK_RADIO_BUTTON(m_radio) ); - - m_radio = GTK_RADIO_BUTTON( gtk_radio_button_new_with_label( radio_button_group, choices[i] ) ); - - m_boxes.Append( (wxObject*) m_radio ); - - ConnectWidget( GTK_WIDGET(m_radio) ); - - if (!i) gtk_toggle_button_set_state( GTK_TOGGLE_BUTTON(m_radio), TRUE ); - - gtk_signal_connect( GTK_OBJECT(m_radio), "clicked", - GTK_SIGNAL_FUNC(gtk_radiobutton_clicked_callback), (gpointer*)this ); - - gtk_myfixed_put( GTK_MYFIXED(m_parent->m_wxwindow), GTK_WIDGET(m_radio), m_x+10, m_y+10+(i*24) ); - - } - - wxSize ls = LayoutItems(); - - wxSize newSize = size; - if (newSize.x == -1) newSize.x = ls.x; - if (newSize.y == -1) newSize.y = ls.y; - SetSize( newSize.x, newSize.y ); - - m_parent->AddChild( this ); - - (m_parent->m_insertCallback)( m_parent, this ); - - PostCreation(); - - SetLabel( title ); - - SetBackgroundColour( parent->GetBackgroundColour() ); - SetForegroundColour( parent->GetForegroundColour() ); - - Show( TRUE ); - - return TRUE; -} - -wxRadioBox::~wxRadioBox(void) -{ - wxNode *node = m_boxes.First(); - while (node) - { - GtkWidget *button = GTK_WIDGET( node->Data() ); - gtk_widget_destroy( button ); - node = node->Next(); - } -} - -void wxRadioBox::OnSize( wxSizeEvent &event ) -{ - wxControl::OnSize( event ); - - LayoutItems(); -} - -wxSize wxRadioBox::LayoutItems() -{ - int x = 7; - int y = 15; - - int num_per_major = (m_boxes.GetCount() - 1) / m_majorDim +1; - - wxSize res( 0, 0 ); - - if (m_windowStyle & wxRA_HORIZONTAL) - { - - for (int j = 0; j < m_majorDim; j++) - { - y = 15; - - int max_len = 0; - wxNode *node = m_boxes.Nth( j*num_per_major ); - for (int i = 0; i< num_per_major; i++) - { - GtkWidget *button = GTK_WIDGET( node->Data() ); - GtkLabel *label = GTK_LABEL( GTK_BUTTON(button)->child ); - GdkFont *font = m_widget->style->font; - int len = 22+gdk_string_measure( font, label->label ); - if (len > max_len) max_len = len; - - gtk_myfixed_move( GTK_MYFIXED(m_parent->m_wxwindow), button, m_x+x, m_y+y ); - y += 22; - - node = node->Next(); - if (!node) break; - } - - // we don't know the max_len before - - node = m_boxes.Nth( j*num_per_major ); - for (int i = 0; i< num_per_major; i++) - { - GtkWidget *button = GTK_WIDGET( node->Data() ); - - gtk_widget_set_usize( button, max_len, 22 ); - - node = node->Next(); - if (!node) break; - } - - if (y > res.y) res.y = y; - - x += max_len + 2; - } - - res.x = x+4; - res.y += 9; - } - else - { - int max = 0; - - wxNode *node = m_boxes.First(); - while (node) - { - GtkButton *button = GTK_BUTTON( node->Data() ); - GtkLabel *label = GTK_LABEL( button->child ); - - GdkFont *font = m_widget->style->font; - int len = 22+gdk_string_measure( font, label->label ); - if (len > max) max = len; - - node = node->Next(); - } - - node = m_boxes.First(); - while (node) - { - GtkWidget *button = GTK_WIDGET( node->Data() ); - - gtk_myfixed_move( GTK_MYFIXED(m_parent->m_wxwindow), button, m_x+x, m_y+y ); - x += max; - gtk_widget_set_usize( button, max, 20 ); - - node = node->Next(); - } - res.x = x+4; - res.y = 42; - } - - return res; -} - -bool wxRadioBox::Show( bool show ) -{ - wxCHECK_MSG( m_widget != NULL, FALSE, "invalid radiobox" ); - - wxWindow::Show( show ); - - wxNode *node = m_boxes.First(); - while (node) - { - GtkWidget *button = GTK_WIDGET( node->Data() ); - - if (show) gtk_widget_show( button ); else gtk_widget_hide( button ); - - node = node->Next(); - } - - return TRUE; -} - -int wxRadioBox::FindString( const wxString &s ) const -{ - wxCHECK_MSG( m_widget != NULL, -1, "invalid radiobox" ); - - int count = 0; - - wxNode *node = m_boxes.First(); - while (node) - { - GtkButton *button = GTK_BUTTON( node->Data() ); - - GtkLabel *label = GTK_LABEL( button->child ); - if (s == label->label) return count; - count++; - - node = node->Next(); - } - - return -1; -} - -void wxRadioBox::SetFocus() -{ - wxCHECK_RET( m_widget != NULL, "invalid radiobox" ); - - if (m_boxes.GetCount() == 0) return; - - wxNode *node = m_boxes.First(); - while (node) - { - GtkToggleButton *button = GTK_TOGGLE_BUTTON( node->Data() ); - if (button->active) - { - gtk_widget_grab_focus( GTK_WIDGET(button) ); - - return; - } - node = node->Next(); - } - -} - -void wxRadioBox::SetSelection( int n ) -{ - wxCHECK_RET( m_widget != NULL, "invalid radiobox" ); - - wxNode *node = m_boxes.Nth( n ); - - wxCHECK_RET( node, "radiobox wrong index" ); - - GtkToggleButton *button = GTK_TOGGLE_BUTTON( node->Data() ); - - gtk_toggle_button_set_state( button, 1 ); -} - -int wxRadioBox::GetSelection(void) const -{ - wxCHECK_MSG( m_widget != NULL, -1, "invalid radiobox" ); - - int count = 0; - - wxNode *node = m_boxes.First(); - while (node) - { - GtkToggleButton *button = GTK_TOGGLE_BUTTON( node->Data() ); - if (button->active) return count; - count++; - node = node->Next(); - } - - wxFAIL_MSG( "wxRadioBox none selected" ); - - return -1; -} - -wxString wxRadioBox::GetString( int n ) const -{ - wxCHECK_MSG( m_widget != NULL, "", "invalid radiobox" ); - - wxNode *node = m_boxes.Nth( n ); - - wxCHECK_MSG( node, "", "radiobox wrong index" ); - - GtkButton *button = GTK_BUTTON( node->Data() ); - GtkLabel *label = GTK_LABEL( button->child ); - - return wxString( label->label ); -} - -wxString wxRadioBox::GetLabel( int item ) const -{ - wxCHECK_MSG( m_widget != NULL, "", "invalid radiobox" ); - - return GetString( item ); -} - -void wxRadioBox::SetLabel( const wxString& label ) -{ - wxCHECK_RET( m_widget != NULL, "invalid radiobox" ); - - wxControl::SetLabel( label ); - - gtk_frame_set_label( GTK_FRAME(m_widget), wxControl::GetLabel() ); -} - -void wxRadioBox::SetLabel( int item, const wxString& label ) -{ - wxCHECK_RET( m_widget != NULL, "invalid radiobox" ); - - wxNode *node = m_boxes.Nth( item ); - - wxCHECK_RET( node, "radiobox wrong index" ); - - GtkButton *button = GTK_BUTTON( node->Data() ); - GtkLabel *g_label = GTK_LABEL( button->child ); - - gtk_label_set( g_label, label ); -} - -void wxRadioBox::SetLabel( int WXUNUSED(item), wxBitmap *WXUNUSED(bitmap) ) -{ - wxFAIL_MSG("wxRadioBox::SetLabel not implemented."); -} - -void wxRadioBox::Enable( bool enable ) -{ - wxControl::Enable( enable ); - - wxNode *node = m_boxes.First(); - while (node) - { - GtkButton *button = GTK_BUTTON( node->Data() ); - GtkWidget *label = button->child; - gtk_widget_set_sensitive( GTK_WIDGET(button), enable ); - gtk_widget_set_sensitive( label, enable ); - node = node->Next(); - } -} - -void wxRadioBox::Enable( int item, bool enable ) -{ - wxCHECK_RET( m_widget != NULL, "invalid radiobox" ); - - wxNode *node = m_boxes.Nth( item ); - - wxCHECK_RET( node, "radiobox wrong index" ); - - GtkButton *button = GTK_BUTTON( node->Data() ); - GtkWidget *label = button->child; - gtk_widget_set_sensitive( GTK_WIDGET(button), enable ); - gtk_widget_set_sensitive( label, enable ); -} - -void wxRadioBox::Show( int item, bool show ) -{ - wxCHECK_RET( m_widget != NULL, "invalid radiobox" ); - - wxNode *node = m_boxes.Nth( item ); - - wxCHECK_RET( node, "radiobox wrong index" ); - - GtkWidget *button = GTK_WIDGET( node->Data() ); - - if (show) - gtk_widget_show( button ); - else - gtk_widget_hide( button ); -} - -wxString wxRadioBox::GetStringSelection(void) const -{ - wxCHECK_MSG( m_widget != NULL, "", "invalid radiobox" ); - - wxNode *node = m_boxes.First(); - while (node) - { - GtkToggleButton *button = GTK_TOGGLE_BUTTON( node->Data() ); - if (button->active) - { - GtkLabel *label = GTK_LABEL( GTK_BUTTON(button)->child ); - return label->label; - } - node = node->Next(); - } - - wxFAIL_MSG( "wxRadioBox none selected" ); - return ""; -} - -bool wxRadioBox::SetStringSelection( const wxString &s ) -{ - wxCHECK_MSG( m_widget != NULL, FALSE, "invalid radiobox" ); - - int res = FindString( s ); - if (res == -1) return FALSE; - SetSelection( res ); - - return TRUE; -} - -int wxRadioBox::Number(void) const -{ - return m_boxes.Number(); -} - -int wxRadioBox::GetNumberOfRowsOrCols(void) const -{ - return 1; -} - -void wxRadioBox::SetNumberOfRowsOrCols( int WXUNUSED(n) ) -{ - wxFAIL_MSG("wxRadioBox::SetNumberOfRowsOrCols not implemented."); -} - -void wxRadioBox::ApplyWidgetStyle() -{ - SetWidgetStyle(); - - gtk_widget_set_style( m_widget, m_widgetStyle ); - - wxNode *node = m_boxes.First(); - while (node) - { - GtkWidget *widget = GTK_WIDGET( node->Data() ); - gtk_widget_set_style( widget, m_widgetStyle ); - - GtkButton *button = GTK_BUTTON( node->Data() ); - gtk_widget_set_style( button->child, m_widgetStyle ); - - node = node->Next(); - } -} - -bool wxRadioBox::IsOwnGtkWindow( GdkWindow *window ) -{ - if (window == m_widget->window) return TRUE; - - wxNode *node = m_boxes.First(); - while (node) - { - GtkWidget *button = GTK_WIDGET( node->Data() ); - - if (window == button->window) return TRUE; - - node = node->Next(); - } - - return FALSE; -} diff --git a/src/gtk1/radiobut.cpp b/src/gtk1/radiobut.cpp deleted file mode 100644 index abf7ac99f2..0000000000 --- a/src/gtk1/radiobut.cpp +++ /dev/null @@ -1,147 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: radiobut.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifdef __GNUG__ -#pragma implementation "radiobut.h" -#endif - -#include "wx/radiobut.h" -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -//----------------------------------------------------------------------------- -// data -//----------------------------------------------------------------------------- - -extern bool g_blockEventsOnDrag; - -//----------------------------------------------------------------------------- -// "clicked" -//----------------------------------------------------------------------------- - -static -void gtk_radiobutton_clicked_callback( GtkWidget *WXUNUSED(widget), wxRadioButton *rb ) -{ - if (!rb->HasVMT()) return; - - if (rb->m_blockFirstEvent) - { - rb->m_blockFirstEvent = FALSE; - return; - } - - if (g_blockEventsOnDrag) return; - - wxCommandEvent event( wxEVT_COMMAND_RADIOBUTTON_SELECTED, rb->GetId()); - event.SetInt( rb->GetValue() ); - event.SetEventObject( rb ); - rb->GetEventHandler()->ProcessEvent( event ); -} - -//----------------------------------------------------------------------------- -// wxRadioButton -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxRadioButton,wxControl) - -bool wxRadioButton::Create( wxWindow *parent, wxWindowID id, const wxString& label, - const wxPoint& pos, const wxSize& size, long style, - const wxValidator& validator, const wxString& name ) -{ - m_acceptsFocus = TRUE; - m_needParent = TRUE; - - wxSize newSize = size; - - PreCreation( parent, id, pos, newSize, style, name ); - - SetValidator( validator ); - - m_widget = gtk_radio_button_new_with_label( (GSList *) NULL, label ); - - m_theOtherRadioButtton = - gtk_radio_button_new_with_label( - gtk_radio_button_group( GTK_RADIO_BUTTON(m_widget) ), - "button2" ); - - SetLabel(label); - - m_blockFirstEvent = FALSE; - - if (newSize.x == -1) newSize.x = 22+gdk_string_measure( m_widget->style->font, label ); - if (newSize.y == -1) newSize.y = 26; - SetSize( newSize.x, newSize.y ); - - gtk_signal_connect( GTK_OBJECT(m_widget), "clicked", - GTK_SIGNAL_FUNC(gtk_radiobutton_clicked_callback), (gpointer*)this ); - - m_parent->AddChild( this ); - - (m_parent->m_insertCallback)( m_parent, this ); - - PostCreation(); - - SetBackgroundColour( parent->GetBackgroundColour() ); - SetForegroundColour( parent->GetForegroundColour() ); - - Show( TRUE ); - - return TRUE; -} - -void wxRadioButton::SetLabel( const wxString& label ) -{ - wxCHECK_RET( m_widget != NULL, "invalid radiobutton" ); - - wxControl::SetLabel( label ); - GtkButton *bin = GTK_BUTTON( m_widget ); - GtkLabel *g_label = GTK_LABEL( bin->child ); - gtk_label_set( g_label, GetLabel() ); -} - -void wxRadioButton::SetValue( bool val ) -{ - wxCHECK_RET( m_widget != NULL, "invalid radiobutton" ); - - if ( val == GetValue() ) - return; - - m_blockFirstEvent = TRUE; - - if (val) - gtk_toggle_button_set_state( GTK_TOGGLE_BUTTON(m_widget), TRUE ); - else - gtk_toggle_button_set_state( GTK_TOGGLE_BUTTON(m_theOtherRadioButtton), TRUE ); -} - -bool wxRadioButton::GetValue(void) const -{ - wxCHECK_MSG( m_widget != NULL, FALSE, "invalid radiobutton" ); - - return GTK_TOGGLE_BUTTON(m_widget)->active; -} - -void wxRadioButton::Enable( bool enable ) -{ - wxCHECK_RET( m_widget != NULL, "invalid radiobutton" ); - - wxControl::Enable( enable ); - - gtk_widget_set_sensitive( GTK_BUTTON(m_widget)->child, enable ); -} - -void wxRadioButton::ApplyWidgetStyle() -{ - SetWidgetStyle(); - gtk_widget_set_style( m_widget, m_widgetStyle ); - gtk_widget_set_style( GTK_BUTTON(m_widget)->child, m_widgetStyle ); -} - - diff --git a/src/gtk1/region.cpp b/src/gtk1/region.cpp deleted file mode 100644 index 305967bc7d..0000000000 --- a/src/gtk1/region.cpp +++ /dev/null @@ -1,440 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: region.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "region.h" -#endif - -#include "wx/region.h" - -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -#ifdef __WXDEBUG__ -#ifdef NULL -#undef NULL -#endif -#define NULL ((void*)0L) -#endif - -//----------------------------------------------------------------------------- -// wxRegion -//----------------------------------------------------------------------------- - -class wxRegionRefData: public wxObjectRefData -{ - public: - - wxRegionRefData(void); - ~wxRegionRefData(void); - - public: - - GdkRegion *m_region; - wxList m_rects; -}; - -wxRegionRefData::wxRegionRefData(void) -{ - m_region = (GdkRegion *) NULL; -} - -wxRegionRefData::~wxRegionRefData(void) -{ - if (m_region) gdk_region_destroy( m_region ); - - wxNode *node = m_rects.First(); - while (node) - { - wxRect *r = (wxRect*)node->Data(); - delete r; - node = node->Next(); - } -} - -//----------------------------------------------------------------------------- - -#define M_REGIONDATA ((wxRegionRefData *)m_refData) - -IMPLEMENT_DYNAMIC_CLASS(wxRegion,wxGDIObject); - -wxRegion::wxRegion( long x, long y, long w, long h ) -{ - m_refData = new wxRegionRefData(); - GdkRegion *reg = gdk_region_new(); - GdkRectangle rect; - rect.x = x; - rect.y = y; - rect.width = w; - rect.height = h; - M_REGIONDATA->m_region = gdk_region_union_with_rect( reg, &rect ); - gdk_region_destroy( reg ); - M_REGIONDATA->m_rects.Append( (wxObject*) new wxRect(x,y,w,h) ); -} - -wxRegion::wxRegion( const wxPoint& topLeft, const wxPoint& bottomRight ) -{ - m_refData = new wxRegionRefData(); - GdkRegion *reg = gdk_region_new(); - GdkRectangle rect; - rect.x = topLeft.x; - rect.y = topLeft.y; - rect.width = bottomRight.x - rect.x; - rect.height = bottomRight.y - rect.y; - M_REGIONDATA->m_region = gdk_region_union_with_rect( reg, &rect ); - gdk_region_destroy( reg ); - M_REGIONDATA->m_rects.Append( (wxObject*) new wxRect(topLeft,bottomRight) ); -} - -wxRegion::wxRegion( const wxRect& rect ) -{ - m_refData = new wxRegionRefData(); - GdkRegion *reg = gdk_region_new(); - GdkRectangle g_rect; - g_rect.x = rect.x; - g_rect.y = rect.y; - g_rect.width = rect.width; - g_rect.height = rect.height; - M_REGIONDATA->m_region = gdk_region_union_with_rect( reg, &g_rect ); - gdk_region_destroy( reg ); - - wxNode *node = M_REGIONDATA->m_rects.First(); - while (node) - { - wxRect *r = (wxRect*)node->Data(); - M_REGIONDATA->m_rects.Append( (wxObject*) new wxRect(r->x,r->y,r->width,r->height) ); - node = node->Next(); - } -} - -wxRegion::wxRegion(void) -{ - m_refData = new wxRegionRefData(); - M_REGIONDATA->m_region = gdk_region_new(); -} - -wxRegion::~wxRegion(void) -{ -} - -bool wxRegion::operator == ( const wxRegion& region ) -{ - return m_refData == region.m_refData; -} - -bool wxRegion::operator != ( const wxRegion& region ) -{ - return m_refData != region.m_refData; -} - -void wxRegion::Clear(void) -{ - UnRef(); - m_refData = new wxRegionRefData(); - M_REGIONDATA->m_region = gdk_region_new(); -} - -bool wxRegion::Union( long x, long y, long width, long height ) -{ - GdkRectangle rect; - rect.x = x; - rect.y = y; - rect.width = width; - rect.height = height; - GdkRegion *reg = gdk_region_union_with_rect( M_REGIONDATA->m_region, &rect ); - gdk_region_destroy( M_REGIONDATA->m_region ); - M_REGIONDATA->m_region = reg; - M_REGIONDATA->m_rects.Append( (wxObject*) new wxRect(x,y,width,height) ); - return TRUE; -} - -bool wxRegion::Union( const wxRect& rect ) -{ - GdkRectangle g_rect; - g_rect.x = rect.x; - g_rect.y = rect.y; - g_rect.width = rect.width; - g_rect.height = rect.height; - GdkRegion *reg = gdk_region_union_with_rect( M_REGIONDATA->m_region, &g_rect ); - gdk_region_destroy( M_REGIONDATA->m_region ); - M_REGIONDATA->m_region = reg; - M_REGIONDATA->m_rects.Append( (wxObject*) new wxRect(rect.x,rect.y,rect.width,rect.height) ); - return TRUE; -} - -bool wxRegion::Union( const wxRegion& region ) -{ - GdkRegion *reg = gdk_regions_union( M_REGIONDATA->m_region, region.GetRegion() ); - gdk_region_destroy( M_REGIONDATA->m_region ); - M_REGIONDATA->m_region = reg; - - wxNode *node = region.GetRectList()->First(); - while (node) - { - wxRect *r = (wxRect*)node->Data(); - M_REGIONDATA->m_rects.Append( (wxObject*) new wxRect(r->x,r->y,r->width,r->height) ); - node = node->Next(); - } - - return TRUE; -} - -bool wxRegion::Intersect( long x, long y, long width, long height ) -{ - wxRegion reg( x, y, width, height ); - Intersect( reg ); - return TRUE; -} - -bool wxRegion::Intersect( const wxRect& rect ) -{ - wxRegion reg( rect ); - Intersect( reg ); - return TRUE; -} - -bool wxRegion::Intersect( const wxRegion& region ) -{ - GdkRegion *reg = gdk_regions_intersect( M_REGIONDATA->m_region, region.GetRegion() ); - gdk_region_destroy( M_REGIONDATA->m_region ); - M_REGIONDATA->m_region = reg; - return TRUE; -} - -bool wxRegion::Subtract( long x, long y, long width, long height ) -{ - wxRegion reg( x, y, width, height ); - Subtract( reg ); - return TRUE; -} - -bool wxRegion::Subtract( const wxRect& rect ) -{ - wxRegion reg( rect ); - Subtract( reg ); - return TRUE; -} - -bool wxRegion::Subtract( const wxRegion& region ) -{ - GdkRegion *reg = gdk_regions_subtract( M_REGIONDATA->m_region, region.GetRegion() ); - gdk_region_destroy( M_REGIONDATA->m_region ); - M_REGIONDATA->m_region = reg; - return TRUE; -} - -bool wxRegion::Xor( long x, long y, long width, long height ) -{ - wxRegion reg( x, y, width, height ); - Xor( reg ); - return TRUE; -} - -bool wxRegion::Xor( const wxRect& rect ) -{ - wxRegion reg( rect ); - Xor( reg ); - return TRUE; -} - -bool wxRegion::Xor( const wxRegion& region ) -{ - GdkRegion *reg = gdk_regions_xor( M_REGIONDATA->m_region, region.GetRegion() ); - gdk_region_destroy( M_REGIONDATA->m_region ); - M_REGIONDATA->m_region = reg; - - wxNode *node = region.GetRectList()->First(); - while (node) - { - wxRect *r = (wxRect*)node->Data(); - M_REGIONDATA->m_rects.Append( (wxObject*) new wxRect(r->x,r->y,r->width,r->height) ); - node = node->Next(); - } - - return TRUE; -} - -void wxRegion::GetBox( long& x, long& y, long&w, long &h ) const -{ - x = 0; - y = 0; - w = -1; - h = -1; - wxNode *node = GetRectList()->First(); - while (node) - { - wxRect *r = (wxRect*)node->Data(); - if (node == GetRectList()->First()) - { - x = r->x; - y = r->y; - w = r->width; - h = r->height; - } - else - { - if (r->x < x) - { - x = r->x; - w += x - r->x; - } - if (r->y < y) - { - y = r->y; - h += y - r->y; - } - if (r->width+r->x > x+w) - { - w = r->x + r->width - x; - } - if (r->height+r->y > y+h) - { - h = r->y + r->height - y; - } - } - node = node->Next(); - } -} - -wxRect wxRegion::GetBox(void) const -{ - long x = 0; - long y = 0; - long w = -1; - long h = -1; - GetBox( x, y, w, h ); - return wxRect( x, y, w, h ); -} - -bool wxRegion::Empty(void) const -{ - return gdk_region_empty( M_REGIONDATA->m_region ); -} - -wxRegionContain wxRegion::Contains( long x, long y ) const -{ - if (gdk_region_point_in( M_REGIONDATA->m_region, x, y )) - return wxInRegion; - else - return wxOutRegion; -} - -wxRegionContain wxRegion::Contains( long x, long y, long w, long h ) const -{ - GdkRectangle rect; - rect.x = x; - rect.y = y; - rect.width = w; - rect.height = h; - GdkOverlapType res = gdk_region_rect_in( M_REGIONDATA->m_region, &rect ); - switch (res) - { - case GDK_OVERLAP_RECTANGLE_IN: return wxInRegion; - case GDK_OVERLAP_RECTANGLE_OUT: return wxOutRegion; - case GDK_OVERLAP_RECTANGLE_PART: return wxPartRegion; - } - return wxOutRegion; -} - -wxRegionContain wxRegion::Contains(const wxPoint& pt) const -{ - return Contains( pt.x, pt.y ); -} - -wxRegionContain wxRegion::Contains(const wxRect& rect) const -{ - return Contains( rect.x, rect.y, rect.width, rect.height ); -} - -GdkRegion *wxRegion::GetRegion(void) const -{ - return M_REGIONDATA->m_region; -} - -wxList *wxRegion::GetRectList() const -{ - return &(M_REGIONDATA->m_rects); -} - -//----------------------------------------------------------------------------- -// wxRegion -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxRegionIterator,wxObject); - -wxRegionIterator::wxRegionIterator(void) -{ - m_current = 0; -} - -wxRegionIterator::wxRegionIterator( const wxRegion& region ) -{ - m_region = region; - m_current = 0; -} - -void wxRegionIterator::Reset( const wxRegion& region ) -{ - m_region = region; - m_current = 0; -} - -wxRegionIterator::operator bool (void) const -{ - return m_current < m_region.GetRectList()->Number(); -} - -bool wxRegionIterator::HaveRects(void) const -{ - return m_current < m_region.GetRectList()->Number(); -} - -void wxRegionIterator::operator ++ (void) -{ - if (m_current < m_region.GetRectList()->Number()) ++m_current; -} - -void wxRegionIterator::operator ++ (int) -{ - if (m_current < m_region.GetRectList()->Number()) ++m_current; -} - -long wxRegionIterator::GetX(void) const -{ - wxNode *node = m_region.GetRectList()->Nth( m_current ); - if (!node) return 0; - wxRect *r = (wxRect*)node->Data(); - return r->x; -} - -long wxRegionIterator::GetY(void) const -{ - wxNode *node = m_region.GetRectList()->Nth( m_current ); - if (!node) return 0; - wxRect *r = (wxRect*)node->Data(); - return r->y; -} - -long wxRegionIterator::GetW(void) const -{ - wxNode *node = m_region.GetRectList()->Nth( m_current ); - if (!node) return 0; - wxRect *r = (wxRect*)node->Data(); - return r->width; -} - -long wxRegionIterator::GetH(void) const -{ - wxNode *node = m_region.GetRectList()->Nth( m_current ); - if (!node) return 0; - wxRect *r = (wxRect*)node->Data(); - return r->height; -} - - diff --git a/src/gtk1/scrolbar.cpp b/src/gtk1/scrolbar.cpp deleted file mode 100644 index ee6d3eec70..0000000000 --- a/src/gtk1/scrolbar.cpp +++ /dev/null @@ -1,298 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: scrolbar.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifdef __GNUG__ -#pragma implementation "scrolbar.h" -#endif - -#include "wx/scrolbar.h" -#include "wx/utils.h" -#include - -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -//----------------------------------------------------------------------------- -// data -//----------------------------------------------------------------------------- - -extern bool g_blockEventsOnDrag; -extern bool g_blockEventsOnScroll; - -//----------------------------------------------------------------------------- -// "value_changed" -//----------------------------------------------------------------------------- - -static void gtk_scrollbar_callback( GtkWidget *WXUNUSED(widget), wxScrollBar *win ) -{ - if (!win->HasVMT()) return; - if (g_blockEventsOnDrag) return; - - float diff = win->m_adjust->value - win->m_oldPos; - if (fabs(diff) < 0.2) return; - - wxEventType command = wxEVT_NULL; - - float line_step = win->m_adjust->step_increment; - float page_step = win->m_adjust->page_increment; - - if (win->m_isScrolling) - { - command = wxEVT_SCROLL_THUMBTRACK; - } - else - { - if (fabs(win->m_adjust->value-win->m_adjust->lower) < 0.2) command = wxEVT_SCROLL_BOTTOM; - else if (fabs(win->m_adjust->value-win->m_adjust->upper) < 0.2) command = wxEVT_SCROLL_TOP; - else if (fabs(diff-line_step) < 0.2) command = wxEVT_SCROLL_LINEDOWN; - else if (fabs(diff+line_step) < 0.2) command = wxEVT_SCROLL_LINEUP; - else if (fabs(diff-page_step) < 0.2) command = wxEVT_SCROLL_PAGEDOWN; - else if (fabs(diff+page_step) < 0.2) command = wxEVT_SCROLL_PAGEUP; - else command = wxEVT_SCROLL_THUMBTRACK; - } - - int value = (int)(win->m_adjust->value+0.5); - - int orient = wxHORIZONTAL; - if (win->GetWindowStyleFlag() & wxSB_VERTICAL == wxSB_VERTICAL) orient = wxVERTICAL; - - wxScrollEvent event( command, win->GetId(), value, orient ); - event.SetEventObject( win ); - win->GetEventHandler()->ProcessEvent( event ); - -/* - wxCommandEvent cevent( wxEVT_COMMAND_SCROLLBAR_UPDATED, win->GetId() ); - cevent.SetEventObject( win ); - win->ProcessEvent( cevent ); -*/ -} - -//----------------------------------------------------------------------------- -// "button_press_event" from slider -//----------------------------------------------------------------------------- - -static gint gtk_scrollbar_button_press_callback( GtkRange *WXUNUSED(widget), - GdkEventButton *WXUNUSED(gdk_event), - wxScrollBar *win ) -{ - win->m_isScrolling = TRUE; -// g_blockEventsOnScroll = TRUE; doesn't work in DialogEd - - return FALSE; -} - -//----------------------------------------------------------------------------- -// "button_release_event" from slider -//----------------------------------------------------------------------------- - -static gint gtk_scrollbar_button_release_callback( GtkRange *WXUNUSED(widget), - GdkEventButton *WXUNUSED(gdk_event), - wxScrollBar *win ) -{ - win->m_isScrolling = FALSE; -// g_blockEventsOnScroll = FALSE; - - gtk_signal_emit_by_name( GTK_OBJECT(win->m_adjust), "value_changed" ); - - return FALSE; -} - -//----------------------------------------------------------------------------- -// wxScrollBar -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxScrollBar,wxControl) - -wxScrollBar::~wxScrollBar(void) -{ -} - -bool wxScrollBar::Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos, const wxSize& size, - long style, const wxValidator& validator, const wxString& name ) -{ - m_needParent = TRUE; - m_acceptsFocus = TRUE; - - PreCreation( parent, id, pos, size, style, name ); - - SetValidator( validator ); - - m_oldPos = 0.0; - - if (style & wxSB_VERTICAL == wxSB_VERTICAL) - m_widget = gtk_hscrollbar_new( (GtkAdjustment *) NULL ); - else - m_widget = gtk_vscrollbar_new( (GtkAdjustment *) NULL ); - - m_adjust = gtk_range_get_adjustment( GTK_RANGE(m_widget) ); - - gtk_signal_connect( GTK_OBJECT(m_adjust), - "value_changed", - (GtkSignalFunc) gtk_scrollbar_callback, - (gpointer) this ); - - gtk_signal_connect( GTK_OBJECT(m_widget), - "button_press_event", - (GtkSignalFunc)gtk_scrollbar_button_press_callback, - (gpointer) this ); - - gtk_signal_connect( GTK_OBJECT(m_widget), - "button_release_event", - (GtkSignalFunc)gtk_scrollbar_button_release_callback, - (gpointer) this ); - - m_parent->AddChild( this ); - - (m_parent->m_insertCallback)( m_parent, this ); - - PostCreation(); - - SetBackgroundColour( parent->GetBackgroundColour() ); - - Show( TRUE ); - - return TRUE; -} - -int wxScrollBar::GetThumbPosition(void) const -{ - return (int)(m_adjust->value+0.5); -} - -int wxScrollBar::GetThumbSize() const -{ - return (int)(m_adjust->page_size+0.5); -} - -int wxScrollBar::GetPageSize() const -{ - return (int)(m_adjust->page_increment+0.5); -} - -int wxScrollBar::GetRange() const -{ - return (int)(m_adjust->upper+0.5); -} - -void wxScrollBar::SetThumbPosition( int viewStart ) -{ - if (m_isScrolling) return; - - float fpos = (float)viewStart; - m_oldPos = fpos; - if (fabs(fpos-m_adjust->value) < 0.2) return; - m_adjust->value = fpos; - - gtk_signal_emit_by_name( GTK_OBJECT(m_adjust), "value_changed" ); -} - -void wxScrollBar::SetScrollbar( int position, int thumbSize, int range, int pageSize, - bool WXUNUSED(refresh) ) -{ - float fpos = (float)position; - float frange = (float)range; - float fthumb = (float)thumbSize; - float fpage = (float)pageSize; - - if ((fabs(frange-m_adjust->upper) < 0.2) && - (fabs(fthumb-m_adjust->page_size) < 0.2) && - (fabs(fpage-m_adjust->page_increment) < 0.2)) - { - SetThumbPosition( position ); - return; - } - - m_oldPos = fpos; - - m_adjust->lower = 0.0; - m_adjust->upper = frange; - m_adjust->value = fpos; - m_adjust->step_increment = 1.0; - m_adjust->page_increment = (float)(wxMax(fpage,0)); - m_adjust->page_size = fthumb; - - gtk_signal_emit_by_name( GTK_OBJECT(m_adjust), "changed" ); -} - -/* Backward compatibility */ -int wxScrollBar::GetValue(void) const -{ - return GetThumbPosition(); -} - -void wxScrollBar::SetValue( int viewStart ) -{ - SetThumbPosition( viewStart ); -} - -void wxScrollBar::GetValues( int *viewStart, int *viewLength, int *objectLength, int *pageLength ) const -{ - int pos = (int)(m_adjust->value+0.5); - int thumb = (int)(m_adjust->page_size+0.5); - int page = (int)(m_adjust->page_increment+0.5); - int range = (int)(m_adjust->upper+0.5); - - *viewStart = pos; - *viewLength = range; - *objectLength = thumb; - *pageLength = page; -} - -int wxScrollBar::GetViewLength() const -{ - return (int)(m_adjust->upper+0.5); -} - -int wxScrollBar::GetObjectLength() const -{ - return (int)(m_adjust->page_size+0.5); -} - -void wxScrollBar::SetPageSize( int pageLength ) -{ - int pos = (int)(m_adjust->value+0.5); - int thumb = (int)(m_adjust->page_size+0.5); - int range = (int)(m_adjust->upper+0.5); - SetScrollbar( pos, thumb, range, pageLength ); -} - -void wxScrollBar::SetObjectLength( int objectLength ) -{ - int pos = (int)(m_adjust->value+0.5); - int page = (int)(m_adjust->page_increment+0.5); - int range = (int)(m_adjust->upper+0.5); - SetScrollbar( pos, objectLength, range, page ); -} - -void wxScrollBar::SetViewLength( int viewLength ) -{ - int pos = (int)(m_adjust->value+0.5); - int thumb = (int)(m_adjust->page_size+0.5); - int page = (int)(m_adjust->page_increment+0.5); - SetScrollbar( pos, thumb, viewLength, page ); -} - -bool wxScrollBar::IsOwnGtkWindow( GdkWindow *window ) -{ - GtkRange *range = GTK_RANGE(m_widget); - return ( (window == GTK_WIDGET(range)->window) || - (window == range->trough) || - (window == range->slider) || - (window == range->step_forw) || - (window == range->step_back) ); -} - -void wxScrollBar::ApplyWidgetStyle() -{ - SetWidgetStyle(); - gtk_widget_set_style( m_widget, m_widgetStyle ); -} - diff --git a/src/gtk1/settings.cpp b/src/gtk1/settings.cpp deleted file mode 100644 index 646386409a..0000000000 --- a/src/gtk1/settings.cpp +++ /dev/null @@ -1,195 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: settings.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifdef __GNUG__ -#pragma implementation "settings.h" -#endif - -#include "wx/settings.h" -#include "wx/debug.h" - -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -/* -#define wxSYS_COLOUR_SCROLLBAR 0 -#define wxSYS_COLOUR_BACKGROUND 1 -#define wxSYS_COLOUR_ACTIVECAPTION 2 -#define wxSYS_COLOUR_INACTIVECAPTION 3 -#define wxSYS_COLOUR_MENU 4 -#define wxSYS_COLOUR_WINDOW 5 -#define wxSYS_COLOUR_WINDOWFRAME 6 -#define wxSYS_COLOUR_MENUTEXT 7 -#define wxSYS_COLOUR_WINDOWTEXT 8 -#define wxSYS_COLOUR_CAPTIONTEXT 9 -#define wxSYS_COLOUR_ACTIVEBORDER 10 -#define wxSYS_COLOUR_INACTIVEBORDER 11 -#define wxSYS_COLOUR_APPWORKSPACE 12 -#define wxSYS_COLOUR_HIGHLIGHT 13 -#define wxSYS_COLOUR_HIGHLIGHTTEXT 14 -#define wxSYS_COLOUR_BTNFACE 15 -#define wxSYS_COLOUR_BTNSHADOW 16 -#define wxSYS_COLOUR_GRAYTEXT 17 -#define wxSYS_COLOUR_BTNTEXT 18 -#define wxSYS_COLOUR_INACTIVECAPTIONTEXT 19 -#define wxSYS_COLOUR_BTNHIGHLIGHT 20 - -#define wxSYS_COLOUR_3DDKSHADOW 21 -#define wxSYS_COLOUR_3DLIGHT 22 -#define wxSYS_COLOUR_INFOTEXT 23 -#define wxSYS_COLOUR_INFOBK 24 - -#define wxSYS_COLOUR_DESKTOP wxSYS_COLOUR_BACKGROUND -#define wxSYS_COLOUR_3DFACE wxSYS_COLOUR_BTNFACE -#define wxSYS_COLOUR_3DSHADOW wxSYS_COLOUR_BTNSHADOW -#define wxSYS_COLOUR_3DHIGHLIGHT wxSYS_COLOUR_BTNHIGHLIGHT -#define wxSYS_COLOUR_3DHILIGHT wxSYS_COLOUR_BTNHIGHLIGHT -#define wxSYS_COLOUR_BTNHILIGHT wxSYS_COLOUR_BTNHIGHLIGHT -*/ - -#define SHIFT (8*(sizeof(short int)-sizeof(char))) - -wxColour *g_systemBtnFaceColour = (wxColour *) NULL; -wxColour *g_systemBtnShadowColour = (wxColour *) NULL; -wxColour *g_systemBtnHighlightColour = (wxColour *) NULL; -wxColour *g_systemHighlightColour = (wxColour *) NULL; - -wxFont *g_systemFont = (wxFont *) NULL; - -void wxSystemSettings::Done() -{ - wxDELETE(g_systemBtnFaceColour); - wxDELETE(g_systemBtnShadowColour); - wxDELETE(g_systemBtnHighlightColour); - wxDELETE(g_systemHighlightColour); - wxDELETE(g_systemFont); -} - -wxColour wxSystemSettings::GetSystemColour( int index ) -{ - switch (index) - { - case wxSYS_COLOUR_SCROLLBAR: - case wxSYS_COLOUR_BACKGROUND: - case wxSYS_COLOUR_ACTIVECAPTION: - case wxSYS_COLOUR_INACTIVECAPTION: - case wxSYS_COLOUR_MENU: - case wxSYS_COLOUR_WINDOW: - case wxSYS_COLOUR_WINDOWFRAME: - case wxSYS_COLOUR_ACTIVEBORDER: - case wxSYS_COLOUR_INACTIVEBORDER: - case wxSYS_COLOUR_BTNFACE: - { - GtkStyle *style = gtk_widget_get_default_style(); - if (!g_systemBtnFaceColour) - { - g_systemBtnFaceColour = - new wxColour( style->bg[0].red >> SHIFT, - style->bg[0].green >> SHIFT, - style->bg[0].blue >> SHIFT ); - } - return *g_systemBtnFaceColour; - } - case wxSYS_COLOUR_BTNSHADOW: - { - GtkStyle *style = gtk_widget_get_default_style(); - if (!g_systemBtnShadowColour) - { - g_systemBtnShadowColour = - new wxColour( style->dark[0].red >> SHIFT, - style->dark[0].green >> SHIFT, - style->dark[0].blue >> SHIFT ); - } - return *g_systemBtnShadowColour; - } - case wxSYS_COLOUR_GRAYTEXT: - case wxSYS_COLOUR_BTNHIGHLIGHT: - { - GtkStyle *style = gtk_widget_get_default_style(); - if (!g_systemBtnHighlightColour) - { - g_systemBtnHighlightColour = - new wxColour( style->light[0].red >> SHIFT, - style->light[0].green >> SHIFT, - style->light[0].blue >> SHIFT ); - } - return *g_systemBtnHighlightColour; - } - case wxSYS_COLOUR_HIGHLIGHT: - { - GtkStyle *style = gtk_widget_get_default_style(); - if (!g_systemHighlightColour) - { - g_systemHighlightColour = - new wxColour( style->bg[GTK_STATE_SELECTED].red >> SHIFT, - style->bg[GTK_STATE_SELECTED].green >> SHIFT, - style->bg[GTK_STATE_SELECTED].blue >> SHIFT ); - } - return *g_systemHighlightColour; - } - case wxSYS_COLOUR_MENUTEXT: - case wxSYS_COLOUR_WINDOWTEXT: - case wxSYS_COLOUR_CAPTIONTEXT: - case wxSYS_COLOUR_INACTIVECAPTIONTEXT: - case wxSYS_COLOUR_INFOTEXT: - { - return *wxBLACK; - } - case wxSYS_COLOUR_HIGHLIGHTTEXT: - { - return *wxWHITE; - } - case wxSYS_COLOUR_INFOBK: - case wxSYS_COLOUR_APPWORKSPACE: - { - return *wxWHITE; // ? - } - } - return *wxWHITE; -} - -wxFont wxSystemSettings::GetSystemFont( int index ) -{ - switch (index) - { - case wxSYS_OEM_FIXED_FONT: - case wxSYS_ANSI_FIXED_FONT: - case wxSYS_SYSTEM_FIXED_FONT: - { - return *wxNORMAL_FONT; - } - case wxSYS_ANSI_VAR_FONT: - case wxSYS_SYSTEM_FONT: - case wxSYS_DEVICE_DEFAULT_FONT: - case wxSYS_DEFAULT_GUI_FONT: - { - if (!g_systemFont) - g_systemFont = new wxFont( 12, wxSWISS, wxNORMAL, wxNORMAL ); - return *g_systemFont; - } - } - - return wxNullFont; -} - -int wxSystemSettings::GetSystemMetric( int index ) -{ - switch (index) - { - case wxSYS_SCREEN_X: return gdk_screen_width(); - case wxSYS_SCREEN_Y: return gdk_screen_height(); - case wxSYS_HSCROLL_Y: return 15; - case wxSYS_VSCROLL_X: return 15; - } - - wxCHECK_MSG( index, 0, "wxSystemSettings::GetSystemMetric not fully implemented" ); - - return 0; -} diff --git a/src/gtk1/slider.cpp b/src/gtk1/slider.cpp deleted file mode 100644 index 5f9c8915b6..0000000000 --- a/src/gtk1/slider.cpp +++ /dev/null @@ -1,257 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: slider.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "slider.h" -#endif - -#include "wx/slider.h" -#include "wx/utils.h" -#include - -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -//----------------------------------------------------------------------------- -// data -//----------------------------------------------------------------------------- - -extern bool g_blockEventsOnDrag; - -//----------------------------------------------------------------------------- -// "value_changed" -//----------------------------------------------------------------------------- - -static void gtk_slider_callback( GtkWidget *WXUNUSED(widget), wxSlider *win ) -{ - if (!win->HasVMT()) return; - if (g_blockEventsOnDrag) return; - - float diff = win->m_adjust->value - win->m_oldPos; - if (fabs(diff) < 0.2) return; - - wxEventType command = wxEVT_NULL; - - float line_step = win->m_adjust->step_increment; - float page_step = win->m_adjust->page_increment; - - if (fabs(win->m_adjust->value-win->m_adjust->lower) < 0.2) command = wxEVT_SCROLL_BOTTOM; - else if (fabs(win->m_adjust->value-win->m_adjust->upper) < 0.2) command = wxEVT_SCROLL_TOP; - else if (fabs(diff-line_step) < 0.2) command = wxEVT_SCROLL_LINEDOWN; - else if (fabs(diff+line_step) < 0.2) command = wxEVT_SCROLL_LINEUP; - else if (fabs(diff-page_step) < 0.2) command = wxEVT_SCROLL_PAGEDOWN; - else if (fabs(diff+page_step) < 0.2) command = wxEVT_SCROLL_PAGEUP; - else command = wxEVT_SCROLL_THUMBTRACK; - - int value = (int)(win->m_adjust->value+0.5); - - int orient = wxHORIZONTAL; - if (win->GetWindowStyleFlag() & wxSB_VERTICAL == wxSB_VERTICAL) orient = wxVERTICAL; - - wxScrollEvent event( command, win->GetId(), value, orient ); - event.SetEventObject( win ); - win->ProcessEvent( event ); - - wxCommandEvent cevent( wxEVT_COMMAND_SLIDER_UPDATED, win->GetId() ); - cevent.SetEventObject( win ); - win->ProcessEvent( cevent ); -} - -//----------------------------------------------------------------------------- -// wxSlider -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxSlider,wxControl) - -wxSlider::wxSlider(void) -{ -} - -wxSlider::~wxSlider(void) -{ -} - -bool wxSlider::Create(wxWindow *parent, wxWindowID id, - int value, int minValue, int maxValue, - const wxPoint& pos, const wxSize& size, - long style, const wxValidator& validator, const wxString& name ) -{ - m_acceptsFocus = TRUE; - m_needParent = TRUE; - - PreCreation( parent, id, pos, size, style, name ); - - SetValidator( validator ); - - m_oldPos = 0.0; - - if (style & wxSL_VERTICAL == wxSL_VERTICAL) - m_widget = gtk_hscale_new( (GtkAdjustment *) NULL ); - else - m_widget = gtk_vscale_new( (GtkAdjustment *) NULL ); - - gtk_scale_set_draw_value( GTK_SCALE( m_widget ), FALSE ); - - m_adjust = gtk_range_get_adjustment( GTK_RANGE(m_widget) ); - - gtk_signal_connect( GTK_OBJECT(m_adjust), - "value_changed", - (GtkSignalFunc) gtk_slider_callback, - (gpointer) this ); - - SetRange( minValue, maxValue ); - SetValue( value ); - - m_parent->AddChild( this ); - - (m_parent->m_insertCallback)( m_parent, this ); - - PostCreation(); - - SetBackgroundColour( parent->GetBackgroundColour() ); - - Show( TRUE ); - - return TRUE; -} - -int wxSlider::GetValue(void) const -{ - return (int)(m_adjust->value+0.5); -} - -void wxSlider::SetValue( int value ) -{ - float fpos = (float)value; - m_oldPos = fpos; - if (fabs(fpos-m_adjust->value) < 0.2) return; - - m_adjust->value = fpos; - - gtk_signal_emit_by_name( GTK_OBJECT(m_adjust), "value_changed" ); -} - -void wxSlider::SetRange( int minValue, int maxValue ) -{ - float fmin = (float)minValue; - float fmax = (float)maxValue; - - if ((fabs(fmin-m_adjust->lower) < 0.2) && - (fabs(fmax-m_adjust->upper) < 0.2)) - { - return; - } - - m_adjust->lower = fmin; - m_adjust->upper = fmax; - - gtk_signal_emit_by_name( GTK_OBJECT(m_adjust), "changed" ); -} - -int wxSlider::GetMin(void) const -{ - return (int)(m_adjust->lower+0.5); -} - -int wxSlider::GetMax(void) const -{ - return (int)(m_adjust->upper+0.5); -} - -void wxSlider::SetPageSize( int pageSize ) -{ - float fpage = (float)pageSize; - - if (fabs(fpage-m_adjust->page_increment) < 0.2) return; - - m_adjust->page_increment = fpage; - - gtk_signal_emit_by_name( GTK_OBJECT(m_adjust), "changed" ); -} - -int wxSlider::GetPageSize(void) const -{ - return (int)(m_adjust->page_increment+0.5); -} - -void wxSlider::SetThumbLength( int len ) -{ - float flen = (float)len; - - if (fabs(flen-m_adjust->page_size) < 0.2) return; - - m_adjust->page_size = flen; - - gtk_signal_emit_by_name( GTK_OBJECT(m_adjust), "changed" ); -} - -int wxSlider::GetThumbLength(void) const -{ - return (int)(m_adjust->page_size+0.5); -} - -void wxSlider::SetLineSize( int WXUNUSED(lineSize) ) -{ -} - -int wxSlider::GetLineSize(void) const -{ - return 0; -} - -void wxSlider::SetTick( int WXUNUSED(tickPos) ) -{ -} - -void wxSlider::SetTickFreq( int WXUNUSED(n), int WXUNUSED(pos) ) -{ -} - -int wxSlider::GetTickFreq(void) const -{ - return 0; -} - -void wxSlider::ClearTicks(void) -{ -} - -void wxSlider::SetSelection( int WXUNUSED(minPos), int WXUNUSED(maxPos) ) -{ -} - -int wxSlider::GetSelEnd(void) const -{ - return 0; -} - -int wxSlider::GetSelStart(void) const -{ - return 0; -} - -void wxSlider::ClearSel(void) -{ -} - -bool wxSlider::IsOwnGtkWindow( GdkWindow *window ) -{ - GtkRange *range = GTK_RANGE(m_widget); - return ( (window == GTK_WIDGET(range)->window) || - (window == range->trough) || - (window == range->slider) || - (window == range->step_forw) || - (window == range->step_back) ); -} - -void wxSlider::ApplyWidgetStyle() -{ - SetWidgetStyle(); - gtk_widget_set_style( m_widget, m_widgetStyle ); -} diff --git a/src/gtk1/spinbutt.cpp b/src/gtk1/spinbutt.cpp deleted file mode 100644 index dfe03b27a1..0000000000 --- a/src/gtk1/spinbutt.cpp +++ /dev/null @@ -1,201 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: spinbutt.cpp -// Purpose: wxSpinButton -// Author: Robert -// Modified by: -// RCS-ID: $Id$ -// Copyright: (c) Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "spinbutt.h" -#endif - -#include "wx/spinbutt.h" -#include "wx/utils.h" -#include - -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -//----------------------------------------------------------------------------- -// data -//----------------------------------------------------------------------------- - -extern bool g_blockEventsOnDrag; - -//----------------------------------------------------------------------------- -// "value_changed" -//----------------------------------------------------------------------------- - -static void gtk_spinbutt_callback( GtkWidget *WXUNUSED(widget), wxSpinButton *win ) -{ - if (!win->HasVMT()) return; - if (g_blockEventsOnDrag) return; - - float diff = win->m_adjust->value - win->m_oldPos; - if (fabs(diff) < 0.2) return; - - wxEventType command = wxEVT_NULL; - - float line_step = win->m_adjust->step_increment; - float page_step = win->m_adjust->page_increment; - - if (fabs(diff-line_step) < 0.2) command = wxEVT_SCROLL_LINEDOWN; - else if (fabs(diff+line_step) < 0.2) command = wxEVT_SCROLL_LINEUP; - else if (fabs(diff-page_step) < 0.2) command = wxEVT_SCROLL_PAGEDOWN; - else if (fabs(diff+page_step) < 0.2) command = wxEVT_SCROLL_PAGEUP; - else command = wxEVT_SCROLL_THUMBTRACK; - - int value = (int)(win->m_adjust->value+0.5); - - wxSpinEvent event( command, win->GetId()); - event.SetPosition( value ); - event.SetOrientation( wxVERTICAL ); - event.SetEventObject( win ); - - win->ProcessEvent( event ); -} - -//----------------------------------------------------------------------------- -// wxSpinButton -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxSpinButton,wxControl) - -BEGIN_EVENT_TABLE(wxSpinButton, wxControl) - EVT_SIZE(wxSpinButton::OnSize) -END_EVENT_TABLE() - -wxSpinButton::wxSpinButton() -{ -} - -bool wxSpinButton::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, - long style, const wxString& name) -{ - m_needParent = TRUE; - - wxSize new_size = size; - new_size.x = 16; - if (new_size.y == -1) new_size.y = 30; - - PreCreation( parent, id, pos, new_size, style, name ); - -// SetValidator( validator ); - - m_oldPos = 0.0; - - m_adjust = (GtkAdjustment*) gtk_adjustment_new( 0.0, 0.0, 100.0, 1.0, 5.0, 0.0); - - m_widget = gtk_spin_button_new( m_adjust, 0, 0 ); - - gtk_spin_button_set_wrap( GTK_SPIN_BUTTON(m_widget), (m_windowStyle & wxSP_WRAP) ); - - gtk_signal_connect( GTK_OBJECT (m_adjust), - "value_changed", - (GtkSignalFunc) gtk_spinbutt_callback, - (gpointer) this ); - - m_parent->AddChild( this ); - - (m_parent->m_insertCallback)( m_parent, this ); - - PostCreation(); - - SetBackgroundColour( parent->GetBackgroundColour() ); - - Show( TRUE ); - - return TRUE; -} - -wxSpinButton::~wxSpinButton() -{ -} - -int wxSpinButton::GetMin() const -{ - wxCHECK_MSG( (m_widget != NULL), 0, "invalid spin button" ); - - return (int)(m_adjust->lower+0.5); -} - -int wxSpinButton::GetMax() const -{ - wxCHECK_MSG( (m_widget != NULL), 0, "invalid spin button" ); - - return (int)(m_adjust->upper+0.5); -} - -int wxSpinButton::GetValue() const -{ - wxCHECK_MSG( (m_widget != NULL), 0, "invalid spin button" ); - - return (int)(m_adjust->value+0.5); -} - -void wxSpinButton::SetValue( int value ) -{ - wxCHECK_RET( (m_widget != NULL), "invalid spin button" ); - - float fpos = (float)value; - m_oldPos = fpos; - if (fabs(fpos-m_adjust->value) < 0.2) return; - - m_adjust->value = fpos; - - gtk_signal_emit_by_name( GTK_OBJECT(m_adjust), "value_changed" ); -} - -void wxSpinButton::SetRange(int minVal, int maxVal) -{ - wxCHECK_RET( (m_widget != NULL), "invalid spin button" ); - - float fmin = (float)minVal; - float fmax = (float)maxVal; - - if ((fabs(fmin-m_adjust->lower) < 0.2) && - (fabs(fmax-m_adjust->upper) < 0.2)) - { - return; - } - - m_adjust->lower = fmin; - m_adjust->upper = fmax; - - gtk_signal_emit_by_name( GTK_OBJECT(m_adjust), "changed" ); -} - -void wxSpinButton::OnSize( wxSizeEvent &WXUNUSED(event) ) -{ - wxCHECK_RET( (m_widget != NULL), "invalid spin button" ); - - m_width = 16; - gtk_widget_set_usize( m_widget, m_width, m_height ); -} - -bool wxSpinButton::IsOwnGtkWindow( GdkWindow *window ) -{ - return GTK_SPIN_BUTTON(m_widget)->panel == window; -} - -void wxSpinButton::ApplyWidgetStyle() -{ - SetWidgetStyle(); - gtk_widget_set_style( m_widget, m_widgetStyle ); -} - -//----------------------------------------------------------------------------- -// wxSpinEvent -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxSpinEvent, wxScrollEvent) - -wxSpinEvent::wxSpinEvent(wxEventType commandType, int id): - wxScrollEvent(commandType, id) -{ -} - - diff --git a/src/gtk1/statbmp.cpp b/src/gtk1/statbmp.cpp deleted file mode 100644 index 7d752190cd..0000000000 --- a/src/gtk1/statbmp.cpp +++ /dev/null @@ -1,84 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: statbmp.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "statbmp.h" -#endif - -#include "wx/statbmp.h" - -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -//----------------------------------------------------------------------------- -// wxStaticBitmap -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxStaticBitmap,wxControl) - -wxStaticBitmap::wxStaticBitmap(void) -{ -} - -wxStaticBitmap::wxStaticBitmap( wxWindow *parent, wxWindowID id, const wxBitmap &bitmap, - const wxPoint &pos, const wxSize &size, - long style, const wxString &name ) -{ - Create( parent, id, bitmap, pos, size, style, name ); -} - -bool wxStaticBitmap::Create( wxWindow *parent, wxWindowID id, const wxBitmap &bitmap, - const wxPoint &pos, const wxSize &size, - long style, const wxString &name ) -{ - m_needParent = TRUE; - - wxSize newSize = size; - - PreCreation( parent, id, pos, size, style, name ); - - m_bitmap = bitmap; - - if (m_bitmap.Ok()) - { - GdkBitmap *mask = (GdkBitmap *) NULL; - if (m_bitmap.GetMask()) mask = m_bitmap.GetMask()->GetBitmap(); - m_widget = gtk_pixmap_new( m_bitmap.GetPixmap(), mask ); - - if (newSize.x == -1) newSize.x = m_bitmap.GetWidth(); - if (newSize.y == -1) newSize.y = m_bitmap.GetHeight(); - SetSize( newSize.x, newSize.y ); - } - else - { - m_widget = gtk_label_new( "Bitmap" ); - } - - m_parent->AddChild( this ); - - (m_parent->m_insertCallback)( m_parent, this ); - - PostCreation(); - - Show( TRUE ); - - return TRUE; -} - -void wxStaticBitmap::SetBitmap( const wxBitmap &bitmap ) -{ - m_bitmap = bitmap; - - if (m_bitmap.Ok()) - { - GdkBitmap *mask = (GdkBitmap *) NULL; - if (m_bitmap.GetMask()) mask = m_bitmap.GetMask()->GetBitmap(); - gtk_pixmap_set( GTK_PIXMAP(m_widget), m_bitmap.GetPixmap(), mask ); - } -} diff --git a/src/gtk1/statbox.cpp b/src/gtk1/statbox.cpp deleted file mode 100644 index e5239cc924..0000000000 --- a/src/gtk1/statbox.cpp +++ /dev/null @@ -1,76 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: statbox.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "statbox.h" -#endif - -#include "wx/statbox.h" - -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -//----------------------------------------------------------------------------- -// wxStaticBox -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxStaticBox,wxControl) - -wxStaticBox::wxStaticBox(void) -{ -} - -wxStaticBox::wxStaticBox( wxWindow *parent, wxWindowID id, const wxString &label, - const wxPoint &pos, const wxSize &size, - long style, const wxString &name ) -{ - Create( parent, id, label, pos, size, style, name ); -} - -bool wxStaticBox::Create( wxWindow *parent, wxWindowID id, const wxString &label, - const wxPoint &pos, const wxSize &size, - long style, const wxString &name ) -{ - m_needParent = TRUE; - - PreCreation( parent, id, pos, size, style, name ); - - m_isStaticBox = TRUE; - - m_widget = gtk_frame_new(m_label); - - m_parent->AddChild( this ); - - (m_parent->m_insertCallback)( m_parent, this ); - - PostCreation(); - - SetLabel(label); - - SetBackgroundColour( parent->GetBackgroundColour() ); - SetForegroundColour( parent->GetForegroundColour() ); - - Show( TRUE ); - - return TRUE; -} - -void wxStaticBox::SetLabel( const wxString &label ) -{ - wxControl::SetLabel( label ); - GtkFrame *frame = GTK_FRAME( m_widget ); - gtk_frame_set_label( frame, GetLabel() ); -} - -void wxStaticBox::ApplyWidgetStyle() -{ - SetWidgetStyle(); - gtk_widget_set_style( m_widget, m_widgetStyle ); -} - diff --git a/src/gtk1/stattext.cpp b/src/gtk1/stattext.cpp deleted file mode 100644 index b1f31084a5..0000000000 --- a/src/gtk1/stattext.cpp +++ /dev/null @@ -1,101 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: stattext.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifdef __GNUG__ -#pragma implementation "stattext.h" -#endif - -#include "wx/stattext.h" - -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -//----------------------------------------------------------------------------- -// wxStaticText -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxStaticText,wxControl) - -wxStaticText::wxStaticText(void) -{ -} - -wxStaticText::wxStaticText( wxWindow *parent, wxWindowID id, const wxString &label, - const wxPoint &pos, const wxSize &size, - long style, const wxString &name ) -{ - Create( parent, id, label, pos, size, style, name ); -} - -bool wxStaticText::Create( wxWindow *parent, wxWindowID id, const wxString &label, - const wxPoint &pos, const wxSize &size, - long style, const wxString &name ) -{ - m_needParent = TRUE; - - wxSize newSize = size; - - PreCreation( parent, id, pos, size, style, name ); - - wxControl::SetLabel(label); - m_widget = gtk_label_new( m_label ); - - GtkJustification justify; - if ( style & wxALIGN_CENTER ) - justify = GTK_JUSTIFY_CENTER; - else if ( style & wxALIGN_RIGHT ) - justify = GTK_JUSTIFY_RIGHT; - else // wxALIGN_LEFT is 0 - justify = GTK_JUSTIFY_LEFT; - gtk_label_set_justify(GTK_LABEL(m_widget), justify); - - GtkRequisition req; - (* GTK_WIDGET_CLASS( GTK_OBJECT(m_widget)->klass )->size_request ) (m_widget, &req ); - - if (newSize.x == -1) newSize.x = req.width; - if (newSize.y == -1) newSize.y = req.height; - - SetSize( newSize.x, newSize.y ); - - m_parent->AddChild( this ); - - (m_parent->m_insertCallback)( m_parent, this ); - - PostCreation(); - - SetBackgroundColour( parent->GetBackgroundColour() ); - SetForegroundColour( parent->GetForegroundColour() ); - - Show( TRUE ); - - return TRUE; -} - -wxString wxStaticText::GetLabel(void) const -{ - char *str = (char *) NULL; - gtk_label_get( GTK_LABEL(m_widget), &str ); - wxString tmp( str ); - return tmp; -} - -void wxStaticText::SetLabel( const wxString &label ) -{ - wxControl::SetLabel(label); - - gtk_label_set( GTK_LABEL(m_widget), m_label ); -} - -void wxStaticText::ApplyWidgetStyle() -{ - SetWidgetStyle(); - gtk_widget_set_style( m_widget, m_widgetStyle ); -} - diff --git a/src/gtk1/tbargtk.cpp b/src/gtk1/tbargtk.cpp deleted file mode 100644 index df1b967d1d..0000000000 --- a/src/gtk1/tbargtk.cpp +++ /dev/null @@ -1,475 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: tbargtk.cpp -// Purpose: GTK toolbar -// Author: Robert Roebling -// RCS-ID: $Id$ -// Copyright: (c) Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "tbargtk.h" -#endif - -#include "wx/toolbar.h" - -#include "glib.h" -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -//----------------------------------------------------------------------------- -// data -//----------------------------------------------------------------------------- - -extern bool g_blockEventsOnDrag; - -//----------------------------------------------------------------------------- -// wxToolBarTool -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxToolBarTool,wxObject) - -wxToolBarTool::wxToolBarTool( wxToolBar *owner, int theIndex, - const wxBitmap& bitmap1, const wxBitmap& bitmap2, - bool toggle, - wxObject *clientData, - const wxString& shortHelpString, - const wxString& longHelpString, - GtkWidget *item ) -{ - m_owner = owner; - m_index = theIndex; - m_bitmap1 = bitmap1; - m_bitmap2 = bitmap2; - m_isToggle = toggle; - m_enabled = TRUE; - m_toggleState = FALSE; - m_shortHelpString = shortHelpString; - m_longHelpString = longHelpString; - m_isMenuCommand = TRUE; - m_clientData = clientData; - m_deleteSecondBitmap = FALSE; - m_item = item; -} - -wxToolBarTool::~wxToolBarTool() -{ -} - -//----------------------------------------------------------------------------- -// "clicked" (internal from gtk_toolbar) -//----------------------------------------------------------------------------- - -static void gtk_toolbar_callback( GtkWidget *WXUNUSED(widget), wxToolBarTool *tool ) -{ - if (g_blockEventsOnDrag) return; - if (!tool->m_enabled) return; - - if (tool->m_isToggle) tool->m_toggleState = !tool->m_toggleState; - - tool->m_owner->OnLeftClick( tool->m_index, tool->m_toggleState ); -} - -//----------------------------------------------------------------------------- -// "enter_notify_event" -//----------------------------------------------------------------------------- - -static gint gtk_toolbar_enter_callback( GtkWidget *WXUNUSED(widget), - GdkEventCrossing *WXUNUSED(gdk_event), wxToolBarTool *tool ) -{ - if (g_blockEventsOnDrag) return TRUE; - - tool->m_owner->OnMouseEnter( tool->m_index ); - - return FALSE; -} - -//----------------------------------------------------------------------------- -// wxToolBar -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxToolBar,wxControl) - -wxToolBar::wxToolBar() -{ -} - -wxToolBar::wxToolBar( wxWindow *parent, wxWindowID id, - const wxPoint& pos, const wxSize& size, - long style, const wxString& name ) -{ - Create( parent, id, pos, size, style, name ); -} - -wxToolBar::~wxToolBar() -{ - delete m_fg; - delete m_bg; -} - -bool wxToolBar::Create( wxWindow *parent, wxWindowID id, - const wxPoint& pos, const wxSize& size, - long style, const wxString& name ) -{ - m_needParent = TRUE; - - PreCreation( parent, id, pos, size, style, name ); - - m_tools.DeleteContents( TRUE ); - - m_toolbar = GTK_TOOLBAR( gtk_toolbar_new( GTK_ORIENTATION_HORIZONTAL, - GTK_TOOLBAR_ICONS ) ); - - m_separation = 5; - gtk_toolbar_set_space_size( m_toolbar, m_separation ); - m_hasToolAlready = FALSE; - - m_widget = GTK_WIDGET(m_toolbar); - - gtk_toolbar_set_tooltips( GTK_TOOLBAR(m_toolbar), TRUE ); - - m_fg = new GdkColor; - m_fg->red = 0; - m_fg->green = 0; - m_fg->blue = 0; - gdk_color_alloc( gtk_widget_get_colormap( GTK_WIDGET(m_toolbar) ), m_fg ); - - m_bg = new GdkColor; - m_bg->red = 65535; - m_bg->green = 65535; - m_bg->blue = 50000; - gdk_color_alloc( gtk_widget_get_colormap( GTK_WIDGET(m_toolbar) ), m_bg ); - - gtk_tooltips_set_colors( GTK_TOOLBAR(m_toolbar)->tooltips, m_bg, m_fg ); - - m_xMargin = 0; - m_yMargin = 0; - - m_parent->AddChild( this ); - - (m_parent->m_insertCallback)( m_parent, this ); - - PostCreation(); - - Show( TRUE ); - - return TRUE; -} - -bool wxToolBar::OnLeftClick( int toolIndex, bool toggleDown ) -{ - wxCommandEvent event( wxEVT_COMMAND_TOOL_CLICKED, toolIndex ); - event.SetEventObject(this); - event.SetInt( toolIndex ); - event.SetExtraLong((long) toggleDown); - - GetEventHandler()->ProcessEvent(event); - - return TRUE; -} - -void wxToolBar::OnRightClick( int toolIndex, float WXUNUSED(x), float WXUNUSED(y) ) -{ - wxCommandEvent event( wxEVT_COMMAND_TOOL_RCLICKED, toolIndex ); - event.SetEventObject( this ); - event.SetInt( toolIndex ); - - GetEventHandler()->ProcessEvent(event); -} - -void wxToolBar::OnMouseEnter( int toolIndex ) -{ - wxCommandEvent event( wxEVT_COMMAND_TOOL_ENTER, GetId() ); - event.SetEventObject(this); - event.SetInt( toolIndex ); - - GetEventHandler()->ProcessEvent(event); -} - -wxToolBarTool *wxToolBar::AddTool( int toolIndex, const wxBitmap& bitmap, - const wxBitmap& pushedBitmap, bool toggle, - float WXUNUSED(xPos), float WXUNUSED(yPos), wxObject *clientData, - const wxString& helpString1, const wxString& helpString2 ) -{ - m_hasToolAlready = TRUE; - - wxCHECK_MSG( bitmap.Ok(), (wxToolBarTool *)NULL, - "invalid bitmap for wxToolBar icon" ); - - wxCHECK_MSG( bitmap.GetBitmap() == NULL, (wxToolBarTool *)NULL, - "wxToolBar doesn't support GdkBitmap" ); - - wxCHECK_MSG( bitmap.GetPixmap() != NULL, (wxToolBarTool *)NULL, - "wxToolBar::Add needs a wxBitmap" ); - - GtkWidget *tool_pixmap = (GtkWidget *)NULL; - - GdkPixmap *pixmap = bitmap.GetPixmap(); - - GdkBitmap *mask = (GdkBitmap *)NULL; - if ( bitmap.GetMask() ) - mask = bitmap.GetMask()->GetBitmap(); - - tool_pixmap = gtk_pixmap_new( pixmap, mask ); - - gtk_misc_set_alignment( GTK_MISC(tool_pixmap), 0.5, 0.5 ); - - wxToolBarTool *tool = new wxToolBarTool( this, toolIndex, bitmap, pushedBitmap, - toggle, clientData, - helpString1, helpString2, - tool_pixmap ); - - GtkToolbarChildType ctype = toggle ? GTK_TOOLBAR_CHILD_TOGGLEBUTTON - : GTK_TOOLBAR_CHILD_BUTTON; - - GtkWidget *item = gtk_toolbar_append_element - ( - GTK_TOOLBAR(m_toolbar), - ctype, - (GtkWidget *)NULL, - (const char *)NULL, - helpString1, - "", - tool_pixmap, - (GtkSignalFunc)gtk_toolbar_callback, - (gpointer)tool - ); - - tool->m_item = item; - - gtk_signal_connect( GTK_OBJECT(tool->m_item), - "enter_notify_event", - GTK_SIGNAL_FUNC(gtk_toolbar_enter_callback), - (gpointer)tool ); - - m_tools.Append( tool ); - - return tool; -} - -void wxToolBar::AddSeparator() -{ - gtk_toolbar_append_space( m_toolbar ); -} - -void wxToolBar::ClearTools() -{ - wxFAIL_MSG( "wxToolBar::ClearTools not implemented" ); -} - -bool wxToolBar::Realize() -{ - m_x = 0; - m_y = 0; - m_width = 100; - m_height = 0; - - wxNode *node = m_tools.First(); - while (node) - { - wxToolBarTool *tool = (wxToolBarTool*)node->Data(); - if (tool->m_bitmap1.Ok()) - { - int tool_height = tool->m_bitmap1.GetHeight(); - if (tool_height > m_height) m_height = tool_height; - } - - node = node->Next(); - } - - m_height += 5 + 2*m_yMargin; - - return TRUE; -} - -void wxToolBar::EnableTool(int toolIndex, bool enable) -{ - wxNode *node = m_tools.First(); - while (node) - { - wxToolBarTool *tool = (wxToolBarTool*)node->Data(); - if (tool->m_index == toolIndex) - { - tool->m_enabled = enable; - - if (tool->m_item) - gtk_widget_set_sensitive( tool->m_item, enable ); - - return; - } - node = node->Next(); - } - - wxFAIL_MSG( "wrong toolbar index" ); -} - -void wxToolBar::ToggleTool( int toolIndex, bool toggle ) -{ - wxNode *node = m_tools.First(); - while (node) - { - wxToolBarTool *tool = (wxToolBarTool*)node->Data(); - if (tool->m_index == toolIndex) - { - tool->m_toggleState = toggle; - if ((tool->m_item) && (GTK_IS_TOGGLE_BUTTON(tool->m_item))) - gtk_toggle_button_set_state( GTK_TOGGLE_BUTTON(tool->m_item), toggle ); - return; - } - node = node->Next(); - } - - wxFAIL_MSG( "wrong toolbar index" ); -} - -wxObject *wxToolBar::GetToolClientData( int index ) const -{ - wxNode *node = m_tools.First(); - while (node) - { - wxToolBarTool *tool = (wxToolBarTool*)node->Data(); - if (tool->m_index == index) return tool->m_clientData;; - node = node->Next(); - } - - wxFAIL_MSG( "wrong toolbar index" ); - - return (wxObject*)NULL; -} - -bool wxToolBar::GetToolState(int toolIndex) const -{ - wxNode *node = m_tools.First(); - while (node) - { - wxToolBarTool *tool = (wxToolBarTool*)node->Data(); - if (tool->m_index == toolIndex) return tool->m_toggleState; - node = node->Next(); - } - - wxFAIL_MSG( "wrong toolbar index" ); - - return FALSE; -} - -bool wxToolBar::GetToolEnabled(int toolIndex) const -{ - wxNode *node = m_tools.First(); - while (node) - { - wxToolBarTool *tool = (wxToolBarTool*)node->Data(); - if (tool->m_index == toolIndex) return tool->m_enabled; - node = node->Next(); - } - - wxFAIL_MSG( "wrong toolbar index" ); - - return FALSE; -} - -void wxToolBar::SetMargins( int x, int y ) -{ - wxCHECK_RET( !m_hasToolAlready, "wxToolBar::SetMargins must be called before adding tool." ); - - if (x > 2) gtk_toolbar_append_space( m_toolbar ); // oh well - - m_xMargin = x; - m_yMargin = y; -} - -void wxToolBar::SetToolPacking( int WXUNUSED(packing) ) -{ - wxFAIL_MSG( "wxToolBar::SetToolPacking not implemented" ); -} - -void wxToolBar::SetToolSeparation( int separation ) -{ - gtk_toolbar_set_space_size( m_toolbar, separation ); - m_separation = separation; -} - -int wxToolBar::GetToolPacking() -{ - return 0; -} - -int wxToolBar::GetToolSeparation() -{ - return m_separation; -} - -wxString wxToolBar::GetToolLongHelp(int toolIndex) -{ - wxNode *node = m_tools.First(); - while (node) - { - wxToolBarTool *tool = (wxToolBarTool*)node->Data(); - if (tool->m_index == toolIndex) - { - return tool->m_longHelpString; - } - node = node->Next(); - } - - wxFAIL_MSG( "wrong toolbar index" ); - - return ""; -} - -wxString wxToolBar::GetToolShortHelp(int toolIndex) -{ - wxNode *node = m_tools.First(); - while (node) - { - wxToolBarTool *tool = (wxToolBarTool*)node->Data(); - if (tool->m_index == toolIndex) - { - return tool->m_shortHelpString; - } - node = node->Next(); - } - - wxFAIL_MSG( "wrong toolbar index" ); - - return ""; -} - -void wxToolBar::SetToolLongHelp(int toolIndex, const wxString& helpString) -{ - wxNode *node = m_tools.First(); - while (node) - { - wxToolBarTool *tool = (wxToolBarTool*)node->Data(); - if (tool->m_index == toolIndex) - { - tool->m_longHelpString = helpString; - return; - } - node = node->Next(); - } - - wxFAIL_MSG( "wrong toolbar index" ); - - return; -} - -void wxToolBar::SetToolShortHelp(int toolIndex, const wxString& helpString) -{ - wxNode *node = m_tools.First(); - while (node) - { - wxToolBarTool *tool = (wxToolBarTool*)node->Data(); - if (tool->m_index == toolIndex) - { - tool->m_shortHelpString = helpString; - return; - } - node = node->Next(); - } - - wxFAIL_MSG( "wrong toolbar index" ); - - return; -} - - diff --git a/src/gtk1/textctrl.cpp b/src/gtk1/textctrl.cpp deleted file mode 100644 index c738901fb5..0000000000 --- a/src/gtk1/textctrl.cpp +++ /dev/null @@ -1,801 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: textctrl.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling, Vadim Zeitlin -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "textctrl.h" -#endif - -#include "wx/textctrl.h" -#include "wx/utils.h" -#include "wx/intl.h" -#include "wx/settings.h" - -#include -#include -#include - -#include "gdk/gdk.h" -#include "gtk/gtk.h" -#include "gdk/gdkkeysyms.h" - -//----------------------------------------------------------------------------- -// data -//----------------------------------------------------------------------------- - -extern bool g_blockEventsOnDrag; - -//----------------------------------------------------------------------------- -// "changed" -//----------------------------------------------------------------------------- - -static void -gtk_text_changed_callback( GtkWidget *WXUNUSED(widget), wxTextCtrl *win ) -{ - win->SetModified(); - - win->CalculateScrollbar(); - - wxCommandEvent event( wxEVT_COMMAND_TEXT_UPDATED, win->m_windowId ); - event.SetString( copystring(win->GetValue()) ); - event.SetEventObject( win ); - win->GetEventHandler()->ProcessEvent( event ); - delete[] event.GetString(); -} - -//----------------------------------------------------------------------------- -// "size_allocate" -//----------------------------------------------------------------------------- - -static void -gtk_text_size_callback( GtkWidget *WXUNUSED(widget), GtkAllocation* WXUNUSED(alloc), wxTextCtrl *win ) -{ - win->CalculateScrollbar(); -} - -//----------------------------------------------------------------------------- -// wxTextCtrl -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxTextCtrl,wxControl) - -BEGIN_EVENT_TABLE(wxTextCtrl, wxControl) - EVT_CHAR(wxTextCtrl::OnChar) -END_EVENT_TABLE() - -#ifndef NO_TEXT_WINDOW_STREAM -wxTextCtrl::wxTextCtrl() : streambuf() -{ - if (allocate()) setp(base(),ebuf()); - - m_modified = FALSE; -} -#else -wxTextCtrl::wxTextCtrl() -{ - m_modified = FALSE; -} -#endif - -#ifndef NO_TEXT_WINDOW_STREAM -wxTextCtrl::wxTextCtrl( wxWindow *parent, wxWindowID id, const wxString &value, - const wxPoint &pos, const wxSize &size, - int style, const wxValidator& validator, const wxString &name ) : streambuf() -{ - if (allocate()) setp(base(),ebuf()); - - m_modified = FALSE; - Create( parent, id, value, pos, size, style, validator, name ); -} -#else -wxTextCtrl::wxTextCtrl( wxWindow *parent, wxWindowID id, const wxString &value, - const wxPoint &pos, const wxSize &size, - int style, const wxValidator& validator, const wxString &name ) -{ - m_modified = FALSE; - Create( parent, id, value, pos, size, style, validator, name ); -} -#endif - -bool wxTextCtrl::Create( wxWindow *parent, wxWindowID id, const wxString &value, - const wxPoint &pos, const wxSize &size, - int style, const wxValidator& validator, const wxString &name ) -{ - m_needParent = TRUE; - m_acceptsFocus = TRUE; - - PreCreation( parent, id, pos, size, style, name ); - - SetValidator( validator ); - - m_vScrollbarVisible = TRUE; - - bool multi_line = (style & wxTE_MULTILINE) != 0; - if ( multi_line ) - { - // a multi-line edit control: create a vertical scrollbar by default and - // horizontal if requested - bool bHasHScrollbar = (style & wxHSCROLL) != 0; - - // create our control... - m_text = gtk_text_new( (GtkAdjustment *) NULL, (GtkAdjustment *) NULL ); - - // ... and put into the upper left hand corner of the table - m_widget = gtk_table_new(bHasHScrollbar ? 2 : 1, 2, FALSE); - gtk_table_attach( GTK_TABLE(m_widget), m_text, 0, 1, 0, 1, - (GtkAttachOptions)(GTK_FILL | GTK_EXPAND | GTK_SHRINK), - (GtkAttachOptions)(GTK_FILL | GTK_EXPAND | GTK_SHRINK), - 0, 0); - - // put the horizontal scrollbar in the lower left hand corner - if (bHasHScrollbar) - { - GtkWidget *hscrollbar = gtk_hscrollbar_new(GTK_TEXT(m_text)->hadj); - gtk_table_attach(GTK_TABLE(m_widget), hscrollbar, 0, 1, 1, 2, - (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), - GTK_FILL, - 0, 0); - gtk_widget_show(hscrollbar); - } - - // finally, put the vertical scrollbar in the upper right corner - m_vScrollbar = gtk_vscrollbar_new( GTK_TEXT(m_text)->vadj ); - gtk_table_attach(GTK_TABLE(m_widget), m_vScrollbar, 1, 2, 0, 1, - GTK_FILL, - (GtkAttachOptions)(GTK_EXPAND | GTK_FILL | GTK_SHRINK), - 0, 0); - gtk_widget_show( m_vScrollbar ); - - gtk_signal_connect( GTK_OBJECT(m_widget), "size_allocate", - GTK_SIGNAL_FUNC(gtk_text_size_callback), (gpointer)this ); - } - else - { - // a single-line text control: no need for scrollbars - m_widget = - m_text = gtk_entry_new(); - } - - wxSize newSize = size; - if (newSize.x == -1) newSize.x = 80; - if (newSize.y == -1) newSize.y = 26; - SetSize( newSize.x, newSize.y ); - - m_parent->AddChild( this ); - - (m_parent->m_insertCallback)( m_parent, this ); - - PostCreation(); - - if (multi_line) - { - gtk_widget_realize(m_text); - gtk_widget_show(m_text); - } - - // we want to be notified about text changes - gtk_signal_connect( GTK_OBJECT(m_text), "changed", - GTK_SIGNAL_FUNC(gtk_text_changed_callback), (gpointer)this); - - if (!value.IsNull()) - { - gint tmp = 0; - gtk_editable_insert_text( GTK_EDITABLE(m_text), value, value.Length(), &tmp ); - SetInsertionPointEnd(); - } - - if (style & wxTE_PASSWORD) - { - if (!multi_line) - gtk_entry_set_visibility( GTK_ENTRY(m_text), FALSE ); - } - - if (style & wxTE_READONLY) - { - if (!multi_line) - gtk_entry_set_editable( GTK_ENTRY(m_text), FALSE ); - } - else - { - if (multi_line) - gtk_text_set_editable( GTK_TEXT(m_text), 1 ); - } - - Show( TRUE ); - - SetBackgroundColour( parent->GetBackgroundColour() ); - SetForegroundColour( parent->GetForegroundColour() ); - - return TRUE; -} - -void wxTextCtrl::CalculateScrollbar() -{ - if ((m_windowStyle & wxTE_MULTILINE) == 0) return; - - GtkAdjustment *adj = GTK_TEXT(m_text)->vadj; - - if (adj->upper - adj->page_size < 0.8) - { - if (m_vScrollbarVisible) - { - gtk_widget_hide( m_vScrollbar ); - - m_vScrollbarVisible = FALSE; - } - } - else - { - if (!m_vScrollbarVisible) - { - gtk_widget_show( m_vScrollbar ); - - m_vScrollbarVisible = TRUE; - } - } -} - -wxString wxTextCtrl::GetValue() const -{ - wxCHECK_MSG( m_text != NULL, "", "invalid text ctrl" ); - - wxString tmp; - if (m_windowStyle & wxTE_MULTILINE) - { - gint len = gtk_text_get_length( GTK_TEXT(m_text) ); - char *text = gtk_editable_get_chars( GTK_EDITABLE(m_text), 0, len ); - tmp = text; - g_free( text ); - } - else - { - tmp = gtk_entry_get_text( GTK_ENTRY(m_text) ); - } - return tmp; -} - -void wxTextCtrl::SetValue( const wxString &value ) -{ - wxCHECK_RET( m_text != NULL, "invalid text ctrl" ); - - wxString tmp = ""; - if (!value.IsNull()) tmp = value; - if (m_windowStyle & wxTE_MULTILINE) - { - gint len = gtk_text_get_length( GTK_TEXT(m_text) ); - gtk_editable_delete_text( GTK_EDITABLE(m_text), 0, len ); - len = 0; - gtk_editable_insert_text( GTK_EDITABLE(m_text), tmp, tmp.Length(), &len ); - } - else - { - gtk_entry_set_text( GTK_ENTRY(m_text), tmp ); - } -} - -void wxTextCtrl::WriteText( const wxString &text ) -{ - wxCHECK_RET( m_text != NULL, "invalid text ctrl" ); - - if (text.IsNull()) return; - - if (m_windowStyle & wxTE_MULTILINE) - { - gint len = gtk_text_get_length( GTK_TEXT(m_text) ); - gtk_editable_insert_text( GTK_EDITABLE(m_text), text, text.Length(), &len ); - } - else - { - gtk_entry_append_text( GTK_ENTRY(m_text), text ); - } -} - -bool wxTextCtrl::LoadFile( const wxString &file ) -{ - wxCHECK_MSG( m_text != NULL, FALSE, "invalid text ctrl" ); - - if (!wxFileExists(file)) return FALSE; - - Clear(); - - FILE *fp = (FILE*) NULL; - struct stat statb; - - if ((stat ((char*) (const char*) file, &statb) == -1) || (statb.st_mode & S_IFMT) != S_IFREG || - !(fp = fopen ((char*) (const char*) file, "r"))) - { - return FALSE; - } - else - { - gint len = statb.st_size; - char *text; - if (!(text = (char*)malloc ((unsigned) (len + 1)))) - { - fclose (fp); - return FALSE; - } - if (fread (text, sizeof (char), len, fp) != (size_t) len) - { - } - fclose (fp); - - text[len] = 0; - - if (m_windowStyle & wxTE_MULTILINE) - { - gint pos = 0; - gtk_editable_insert_text( GTK_EDITABLE(m_text), text, len, &pos ); - } - else - { - gtk_entry_set_text( GTK_ENTRY(m_text), text ); - } - - free (text); - m_modified = FALSE; - return TRUE; - } - return FALSE; -} - -bool wxTextCtrl::SaveFile( const wxString &file ) -{ - wxCHECK_MSG( m_text != NULL, FALSE, "invalid text ctrl" ); - - if (file == "") return FALSE; - - FILE *fp; - - if (!(fp = fopen ((char*) (const char*) file, "w"))) - { - return FALSE; - } - else - { - char *text = (char*) NULL; - gint len = 0; - - if (m_windowStyle & wxTE_MULTILINE) - { - len = gtk_text_get_length( GTK_TEXT(m_text) ); - text = gtk_editable_get_chars( GTK_EDITABLE(m_text), 0, len ); - } - else - { - text = gtk_entry_get_text( GTK_ENTRY(m_text) ); - } - - if (fwrite (text, sizeof (char), len, fp) != (size_t) len) - { - // Did not write whole file - } - - // Make sure newline terminates the file - if (text[len - 1] != '\n') - fputc ('\n', fp); - - fclose (fp); - - if (m_windowStyle & wxTE_MULTILINE) g_free( text ); - - m_modified = FALSE; - return TRUE; - } - - return TRUE; -} - -wxString wxTextCtrl::GetLineText( long lineNo ) const -{ - if (m_windowStyle & wxTE_MULTILINE) - { - gint len = gtk_text_get_length( GTK_TEXT(m_text) ); - char *text = gtk_editable_get_chars( GTK_EDITABLE(m_text), 0, len ); - - if (text) - { - wxString buf(""); - long i; - int currentLine = 0; - for (i = 0; currentLine != lineNo && text[i]; i++ ) - if (text[i] == '\n') - currentLine++; - // Now get the text - int j; - for (j = 0; text[i] && text[i] != '\n'; i++, j++ ) - buf += text[i]; - - g_free( text ); - return buf; - } - else - return wxEmptyString; - } - else - { - if (lineNo == 0) return GetValue(); - return wxEmptyString; - } -} - -void wxTextCtrl::OnDropFiles( wxDropFilesEvent &WXUNUSED(event) ) -{ - wxFAIL_MSG( "wxTextCtrl::OnDropFiles not implemented" ); -} - -long wxTextCtrl::PositionToXY(long pos, long *x, long *y ) const -{ - if ( m_windowStyle & wxTE_MULTILINE ) - { - wxString text = GetValue(); - - // cast to prevent warning. But pos really should've been unsigned. - if( (unsigned long)pos > text.Len() ) - return FALSE; - - *x=1; // Col 1 - *y=1; // Line 1 - - if (pos == 0) - return TRUE; - - const char* stop = text.c_str() + pos; - for ( const char *p = text.c_str(); p < stop; p++ ) - { - if (*p == '\n') - { - (*y)++; - *x=1; - } - else - (*x)++; - } - } - else // single line control - { - if ( pos <= GTK_ENTRY(m_text)->text_length ) - { - *y = 1; - *x = pos; - } - else - { - // index out of bounds - return FALSE; - } - } - - return TRUE; -} - -long wxTextCtrl::XYToPosition(long x, long y ) const -{ - if (!(m_windowStyle & wxTE_MULTILINE)) return 0; - - long pos=0; - /* This is a kludge; our XY values are 1-based, but GetLineLength() - * and --Text() start counting at 0. (and so say the docs) */ - for( int i=1; icurrent_pos; -} - -long wxTextCtrl::GetLastPosition() const -{ - wxCHECK_MSG( m_text != NULL, 0, "invalid text ctrl" ); - - int pos = 0; - if (m_windowStyle & wxTE_MULTILINE) - pos = gtk_text_get_length( GTK_TEXT(m_text) ); - else - pos = GTK_ENTRY(m_text)->text_length; - - return (long)pos-1; -} - -void wxTextCtrl::Remove( long from, long to ) -{ - wxCHECK_RET( m_text != NULL, "invalid text ctrl" ); - - gtk_editable_delete_text( GTK_EDITABLE(m_text), (gint)from, (gint)to ); -} - -void wxTextCtrl::Replace( long from, long to, const wxString &value ) -{ - wxCHECK_RET( m_text != NULL, "invalid text ctrl" ); - - gtk_editable_delete_text( GTK_EDITABLE(m_text), (gint)from, (gint)to ); - if (value.IsNull()) return; - gint pos = (gint)from; - gtk_editable_insert_text( GTK_EDITABLE(m_text), value, value.Length(), &pos ); -} - -void wxTextCtrl::Cut() -{ - wxCHECK_RET( m_text != NULL, "invalid text ctrl" ); - -#if (GTK_MINOR_VERSION == 1) - gtk_editable_cut_clipboard( GTK_EDITABLE(m_text) ); -#else - gtk_editable_cut_clipboard( GTK_EDITABLE(m_text), 0 ); -#endif -} - -void wxTextCtrl::Copy() -{ - wxCHECK_RET( m_text != NULL, "invalid text ctrl" ); - -#if (GTK_MINOR_VERSION == 1) - gtk_editable_copy_clipboard( GTK_EDITABLE(m_text) ); -#else - gtk_editable_copy_clipboard( GTK_EDITABLE(m_text), 0 ); -#endif -} - -void wxTextCtrl::Paste() -{ - wxCHECK_RET( m_text != NULL, "invalid text ctrl" ); - -#if (GTK_MINOR_VERSION == 1) - gtk_editable_paste_clipboard( GTK_EDITABLE(m_text) ); -#else - gtk_editable_paste_clipboard( GTK_EDITABLE(m_text), 0 ); -#endif -} - -void wxTextCtrl::Clear() -{ - SetValue( "" ); -} - -void wxTextCtrl::OnChar( wxKeyEvent &key_event ) -{ - wxCHECK_RET( m_text != NULL, "invalid text ctrl" ); - - if ((key_event.KeyCode() == WXK_RETURN) && (m_windowStyle & wxPROCESS_ENTER)) - { - wxCommandEvent event(wxEVT_COMMAND_TEXT_ENTER, m_windowId); - event.SetEventObject(this); - if (GetEventHandler()->ProcessEvent(event)) return; - } - - key_event.Skip(); -} - -#ifndef NO_TEXT_WINDOW_STREAM -int wxTextCtrl::overflow( int WXUNUSED(c) ) -{ - int len = pptr() - pbase(); - char *txt = new char[len+1]; - strncpy(txt, pbase(), len); - txt[len] = '\0'; - (*this) << txt; - setp(pbase(), epptr()); - delete[] txt; - return EOF; -} - -int wxTextCtrl::sync() -{ - int len = pptr() - pbase(); - char *txt = new char[len+1]; - strncpy(txt, pbase(), len); - txt[len] = '\0'; - (*this) << txt; - setp(pbase(), epptr()); - delete[] txt; - return 0; -} - -int wxTextCtrl::underflow() -{ - return EOF; -} - -wxTextCtrl& wxTextCtrl::operator<<(const wxString& s) -{ - WriteText(s); - return *this; -} - -wxTextCtrl& wxTextCtrl::operator<<(float f) -{ - static char buf[100]; - sprintf(buf, "%.2f", f); - WriteText(buf); - return *this; -} - -wxTextCtrl& wxTextCtrl::operator<<(double d) -{ - static char buf[100]; - sprintf(buf, "%.2f", d); - WriteText(buf); - return *this; -} - -wxTextCtrl& wxTextCtrl::operator<<(int i) -{ - static char buf[100]; - sprintf(buf, "%i", i); - WriteText(buf); - return *this; -} - -wxTextCtrl& wxTextCtrl::operator<<(long i) -{ - static char buf[100]; - sprintf(buf, "%ld", i); - WriteText(buf); - return *this; -} - -wxTextCtrl& wxTextCtrl::operator<<(const char c) -{ - char buf[2]; - - buf[0] = c; - buf[1] = 0; - WriteText(buf); - return *this; -} -#endif - -GtkWidget* wxTextCtrl::GetConnectWidget() -{ - return GTK_WIDGET(m_text); -} - -bool wxTextCtrl::IsOwnGtkWindow( GdkWindow *window ) -{ - if (m_windowStyle & wxTE_MULTILINE) - return (window == GTK_TEXT(m_text)->text_area); - else - return (window == GTK_ENTRY(m_text)->text_area); -} - -void wxTextCtrl::SetFont( const wxFont &WXUNUSED(font) ) -{ - wxCHECK_RET( m_text != NULL, "invalid text ctrl" ); - - // doesn't work -} - -void wxTextCtrl::SetForegroundColour( const wxColour &WXUNUSED(colour) ) -{ - wxCHECK_RET( m_text != NULL, "invalid text ctrl" ); - - // doesn't work -} - -void wxTextCtrl::SetBackgroundColour( const wxColour &colour ) -{ - wxCHECK_RET( m_text != NULL, "invalid text ctrl" ); - - wxControl::SetBackgroundColour( colour ); - - wxColour sysbg = wxSystemSettings::GetSystemColour( wxSYS_COLOUR_BTNFACE ); - if (sysbg.Red() == colour.Red() && - sysbg.Green() == colour.Green() && - sysbg.Blue() == colour.Blue()) - { - return; - } - - if (!m_backgroundColour.Ok()) return; - - if (m_windowStyle & wxTE_MULTILINE) - { - GdkWindow *window = GTK_TEXT(m_text)->text_area; - m_backgroundColour.CalcPixel( gdk_window_get_colormap( window ) ); - gdk_window_set_background( window, m_backgroundColour.GetColor() ); - gdk_window_clear( window ); - } -} - -void wxTextCtrl::ApplyWidgetStyle() -{ - if (m_windowStyle & wxTE_MULTILINE) - { - // how ? - } - else - { - SetWidgetStyle(); - gtk_widget_set_style( m_text, m_widgetStyle ); - } -} - diff --git a/src/gtk1/threadgui.inc b/src/gtk1/threadgui.inc deleted file mode 100644 index 1717b172f6..0000000000 --- a/src/gtk1/threadgui.inc +++ /dev/null @@ -1,80 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: threadgui.inc -// Purpose: GUI thread manager for GTK -// Author: Original from Wolfram Gloger/Guilhem Lavaux -// Modified by: -// Created: 04/22/98 -// RCS-ID: $Id$ -// Copyright: (c) Wolfram Gloger (1996, 1997); Guilhem Lavaux (1998) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#include -#include - -// for select() -#include -#include -#ifdef __sgi -#include -#endif - -#include - -///////////////////////////////////////////////////////////////////////////// -// Static variables -///////////////////////////////////////////////////////////////////////////// - -static int p_thrd_pipe[2] = { -1, -1 }; -// WorkProc in GTK -static gint p_thrd_inid; - -#define THREAD_SEND_EXIT_MSG(ptr) write(p_thrd_pipe[1], &ptr, sizeof(ptr)); - -static void -ThreadExitProc(gpointer WXUNUSED(client), gint fid, - GdkInputCondition WXUNUSED(cond)) -{ - wxThread* ptr; - - // printf( "thread exit proc.\n" ); - - if (fid != p_thrd_pipe[0]) - return; - - if (read(fid, &ptr, sizeof(ptr)) == sizeof(ptr)) - { - // printf( "calling OnExit %p\n", ptr); - ptr->OnExit(); - } - else - { - // printf( "this should never happen\n" ); - } -} - -// Global initialization -static void wxThreadGuiInit() -{ - pipe(p_thrd_pipe); - p_thrd_inid = gdk_input_add(p_thrd_pipe[0], GDK_INPUT_READ, - ThreadExitProc, 0); -} - -// Global cleanup -static void wxThreadGuiExit() -{ - gdk_input_remove(p_thrd_inid); - close(p_thrd_pipe[0]); - close(p_thrd_pipe[1]); -} - -void wxMutexGuiEnter() -{ - gs_mutexGui->Lock(); -} - -void wxMutexGuiLeave() -{ - gs_mutexGui->Unlock(); -} diff --git a/src/gtk1/threadno.cpp b/src/gtk1/threadno.cpp deleted file mode 100644 index 7299440456..0000000000 --- a/src/gtk1/threadno.cpp +++ /dev/null @@ -1,186 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: thread.cpp -// Purpose: Solaris thread support -// Author: Guilhem Lavaux -// Modified by: -// Created: 04/22/98 -// RCS-ID: $Id$ -// Copyright: (c) Wolfram Gloger (1996, 1997); Guilhem Lavaux (1998) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation "thread.h" -#endif - -#include "wx/wx.h" -#include "wx/module.h" -#include "wx/thread.h" -#include "wx/log.h" - -wxMutex::wxMutex() -{ - m_locked = 0; -} - -wxMutex::~wxMutex() -{ - if (m_locked) - wxLogDebug( "wxMutex warning: destroying a locked mutex (%d locks)\n", m_locked ); -} - -wxMutexError wxMutex::Lock() -{ - m_locked++; - return wxMUTEX_NO_ERROR; -} - -wxMutexError wxMutex::TryLock() -{ - if (m_locked > 0) - return wxMUTEX_BUSY; - m_locked++; - return wxMUTEX_NO_ERROR; -} - -wxMutexError wxMutex::Unlock() -{ - if (m_locked == 0) - return wxMUTEX_UNLOCKED; - m_locked--; - return wxMUTEX_NO_ERROR; -} - -wxCondition::wxCondition() -{ -} - -wxCondition::~wxCondition() -{ -} - -void wxCondition::Wait(wxMutex& WXUNUSED(mutex)) -{ -} - -bool wxCondition::Wait(wxMutex& WXUNUSED(mutex), unsigned long WXUNUSED(sec), - unsigned long WXUNUSED(nsec)) -{ - return FALSE; -} - -void wxCondition::Signal() -{ -} - -void wxCondition::Broadcast() -{ -} - -struct wxThreadInternal { - int thread_id; - void* exit_status; -}; - -wxThreadError wxThread::Create() -{ - p_internal->exit_status = Entry(); - OnExit(); - return wxTHREAD_NO_ERROR; -} - -wxThreadError wxThread::Destroy() -{ - return wxTHREAD_NOT_RUNNING; -} - -wxThreadError wxThread::Pause() -{ - return wxTHREAD_NOT_RUNNING; -} - -wxThreadError wxThread::Resume() -{ - return wxTHREAD_NOT_RUNNING; -} - -void wxThread::DeferDestroy( bool WXUNUSED(on) ) -{ -} - -void wxThread::TestDestroy() -{ -} - -void *wxThread::Join() -{ - return p_internal->exit_status; -} - -unsigned long wxThread::GetID() const -{ - return 0; -} - -bool wxThread::IsMain() -{ - return TRUE; -} - -bool wxThread::IsRunning() const -{ - return FALSE; -} - -bool wxThread::IsAlive() const -{ - return FALSE; -} - -void wxThread::SetPriority(int WXUNUSED(prio)) { } -int wxThread::GetPriority() const { return 0; } - -wxMutex *wxMainMutex; // controls access to all GUI functions - -wxThread::wxThread() -{ - p_internal = new wxThreadInternal(); -} - -wxThread::~wxThread() -{ - Destroy(); - Join(); - delete p_internal; -} - -// The default callback just joins the thread and throws away the result. -void wxThread::OnExit() -{ - Join(); -} - - -IMPLEMENT_DYNAMIC_CLASS(wxThreadModule, wxModule) - -bool wxThreadModule::OnInit() -{ - wxMainMutex = new wxMutex(); - wxMainMutex->Lock(); - return TRUE; -} - -void wxThreadModule::OnExit() -{ - wxMainMutex->Unlock(); - delete wxMainMutex; -} - - - -void wxMutexGuiEnter() -{ -} - -void wxMutexGuiLeave() -{ -} diff --git a/src/gtk1/threadpsx.cpp b/src/gtk1/threadpsx.cpp deleted file mode 100644 index 79542d5e19..0000000000 --- a/src/gtk1/threadpsx.cpp +++ /dev/null @@ -1,743 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: threadpsx.cpp -// Purpose: wxThread (Posix) Implementation -// Author: Original from Wolfram Gloger/Guilhem Lavaux -// Modified by: -// Created: 04/22/98 -// RCS-ID: $Id$ -// Copyright: (c) Wolfram Gloger (1996, 1997) -// Guilhem Lavaux (1998) -// Robert Roebling (1999) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ - #pragma implementation "thread.h" -#endif - -#include -#include -#include -#include - -#ifdef __linux__ - #include -#endif - -#include "wx/thread.h" -#include "wx/module.h" -#include "wx/utils.h" -#include "wx/log.h" -#include "wx/intl.h" -#include "wx/dynarray.h" - -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -enum thread_state -{ - STATE_NEW, // didn't start execution yet (=> RUNNING) - STATE_RUNNING, - STATE_PAUSED, - STATE_CANCELED, - STATE_EXITED -}; - -WX_DEFINE_ARRAY(wxThread *, wxArrayThread); - -// ----------------------------------------------------------------------------- -// global data -// ----------------------------------------------------------------------------- - -// we keep the list of all threads created by the application to be able to -// terminate them on exit if there are some left - otherwise the process would -// be left in memory -static wxArrayThread gs_allThreads; - -// the id of the main thread -static pthread_t gs_tidMain; - -// the key for the pointer to the associated wxThread object -static pthread_key_t gs_keySelf; - -// this mutex must be acquired before any call to a GUI function -static wxMutex *gs_mutexGui; - -//-------------------------------------------------------------------- -// common GUI thread code -//-------------------------------------------------------------------- - -#include "threadgui.inc" - -//-------------------------------------------------------------------- -// wxMutex (Posix implementation) -//-------------------------------------------------------------------- - -class wxMutexInternal -{ -public: - pthread_mutex_t p_mutex; -}; - -wxMutex::wxMutex() -{ - p_internal = new wxMutexInternal; - pthread_mutex_init( &(p_internal->p_mutex), (const pthread_mutexattr_t*) NULL ); - m_locked = 0; -} - -wxMutex::~wxMutex() -{ - if (m_locked > 0) - wxLogDebug("Freeing a locked mutex (%d locks)", m_locked); - - pthread_mutex_destroy( &(p_internal->p_mutex) ); - delete p_internal; -} - -wxMutexError wxMutex::Lock() -{ - int err = pthread_mutex_lock( &(p_internal->p_mutex) ); - if (err == EDEADLK) - { - wxLogDebug("Locking this mutex would lead to deadlock!"); - - return wxMUTEX_DEAD_LOCK; - } - - m_locked++; - - return wxMUTEX_NO_ERROR; -} - -wxMutexError wxMutex::TryLock() -{ - if (m_locked) - { - return wxMUTEX_BUSY; - } - - int err = pthread_mutex_trylock( &(p_internal->p_mutex) ); - switch (err) - { - case EBUSY: return wxMUTEX_BUSY; - } - - m_locked++; - - return wxMUTEX_NO_ERROR; -} - -wxMutexError wxMutex::Unlock() -{ - if (m_locked > 0) - { - m_locked--; - } - else - { - wxLogDebug("Unlocking not locked mutex."); - - return wxMUTEX_UNLOCKED; - } - - pthread_mutex_unlock( &(p_internal->p_mutex) ); - - return wxMUTEX_NO_ERROR; -} - -//-------------------------------------------------------------------- -// wxCondition (Posix implementation) -//-------------------------------------------------------------------- - -class wxConditionInternal -{ -public: - pthread_cond_t p_condition; -}; - -wxCondition::wxCondition() -{ - p_internal = new wxConditionInternal; - pthread_cond_init( &(p_internal->p_condition), (const pthread_condattr_t *) NULL ); -} - -wxCondition::~wxCondition() -{ - pthread_cond_destroy( &(p_internal->p_condition) ); - - delete p_internal; -} - -void wxCondition::Wait(wxMutex& mutex) -{ - pthread_cond_wait( &(p_internal->p_condition), &(mutex.p_internal->p_mutex) ); -} - -bool wxCondition::Wait(wxMutex& mutex, unsigned long sec, unsigned long nsec) -{ - struct timespec tspec; - - tspec.tv_sec = time(0L)+sec; - tspec.tv_nsec = nsec; - return (pthread_cond_timedwait(&(p_internal->p_condition), &(mutex.p_internal->p_mutex), &tspec) != ETIMEDOUT); -} - -void wxCondition::Signal() -{ - pthread_cond_signal( &(p_internal->p_condition) ); -} - -void wxCondition::Broadcast() -{ - pthread_cond_broadcast( &(p_internal->p_condition) ); -} - -//-------------------------------------------------------------------- -// wxThread (Posix implementation) -//-------------------------------------------------------------------- - -class wxThreadInternal -{ -public: - wxThreadInternal(); - ~wxThreadInternal(); - - // thread entry function - static void *PthreadStart(void *ptr); - - // thread actions - // start the thread - wxThreadError Run(); - // ask the thread to terminate - void Cancel(); - // wake up threads waiting for our termination - void SignalExit(); - // go to sleep until Resume() is called - void Pause(); - // resume the thread - void Resume(); - - // accessors - // priority - int GetPriority() const { return m_prio; } - void SetPriority(int prio) { m_prio = prio; } - // state - thread_state GetState() const { return m_state; } - void SetState(thread_state state) { m_state = state; } - // id - pthread_t GetId() const { return thread_id; } - // "cancelled" flag - bool WasCancelled() const { return m_cancelled; } - -//private: -- should be! - pthread_t thread_id; - -private: - thread_state m_state; // see thread_state enum - int m_prio; // in wxWindows units: from 0 to 100 - - // set when the thread should terminate - bool m_cancelled; - - // this (mutex, cond) pair is used to synchronize the main thread and this - // thread in several situations: - // 1. The thread function blocks until condition is signaled by Run() when - // it's initially created - this allows create thread in "suspended" - // state - // 2. The Delete() function blocks until the condition is signaled when the - // thread exits. - wxMutex m_mutex; - wxCondition m_cond; - - // another (mutex, cond) pair for Pause()/Resume() usage - // - // VZ: it's possible that we might reuse the mutex and condition from above - // for this too, but as I'm not at all sure that it won't create subtle - // problems with race conditions between, say, Pause() and Delete() I - // prefer this may be a bit less efficient but much safer solution - wxMutex m_mutexSuspend; - wxCondition m_condSuspend; -}; - -void *wxThreadInternal::PthreadStart(void *ptr) -{ - wxThread *thread = (wxThread *)ptr; - wxThreadInternal *pthread = thread->p_internal; - - if ( pthread_setspecific(gs_keySelf, thread) != 0 ) - { - wxLogError(_("Can not start thread: error writing TLS.")); - - return (void *)-1; - } - - // wait for the condition to be signaled from Run() - // mutex state: currently locked by the thread which created us - pthread->m_cond.Wait(pthread->m_mutex); - - // mutex state: locked again on exit of Wait() - - // call the main entry - void* status = thread->Entry(); - - // terminate the thread - thread->Exit(status); - - wxFAIL_MSG("wxThread::Exit() can't return."); - - return NULL; -} - -wxThreadInternal::wxThreadInternal() -{ - m_state = STATE_NEW; - m_cancelled = FALSE; - - // this mutex is locked during almost all thread lifetime - it will only be - // unlocked in the very end - m_mutex.Lock(); - - // this mutex is used in Pause()/Resume() and is also locked all the time - // unless the thread is paused - m_mutexSuspend.Lock(); -} - -wxThreadInternal::~wxThreadInternal() -{ - m_mutexSuspend.Unlock(); - - // note that m_mutex will be unlocked by the thread which waits for our - // termination -} - -wxThreadError wxThreadInternal::Run() -{ - wxCHECK_MSG( GetState() == STATE_NEW, wxTHREAD_RUNNING, - "thread may only be started once after successful Create()" ); - - // the mutex was locked on Create(), so we will be able to lock it again - // only when the thread really starts executing and enters the wait - - // otherwise we might signal the condition before anybody is waiting for it - wxMutexLocker lock(m_mutex); - m_cond.Signal(); - - m_state = STATE_RUNNING; - - return wxTHREAD_NO_ERROR; - - // now the mutex is unlocked back - but just to allow Wait() function to - // terminate by relocking it, so the net result is that the worker thread - // starts executing and the mutex is still locked -} - -void wxThreadInternal::Cancel() -{ - // if the thread we're waiting for is waiting for the GUI mutex, we will - // deadlock so make sure we release it temporarily - if ( wxThread::IsMain() ) - wxMutexGuiLeave(); - - // nobody ever writes this variable so it's safe to not use any - // synchronization here - m_cancelled = TRUE; - - // entering Wait() releases the mutex thus allowing SignalExit() to acquire - // it and to signal us its termination - m_cond.Wait(m_mutex); - - // mutex is still in the locked state - relocked on exit from Wait(), so - // unlock it - we don't need it any more, the thread has already terminated - m_mutex.Unlock(); - - // reacquire GUI mutex - if ( wxThread::IsMain() ) - wxMutexGuiEnter(); -} - -void wxThreadInternal::SignalExit() -{ - // as mutex is currently locked, this will block until some other thread - // (normally the same which created this one) unlocks it by entering Wait() - m_mutex.Lock(); - - // wake up all the threads waiting for our termination - m_cond.Broadcast(); - - // after this call mutex will be finally unlocked - m_mutex.Unlock(); -} - -void wxThreadInternal::Pause() -{ - wxCHECK_RET( m_state == STATE_PAUSED, - "thread must first be paused with wxThread::Pause()." ); - - // wait until the condition is signaled from Resume() - m_condSuspend.Wait(m_mutexSuspend); -} - -void wxThreadInternal::Resume() -{ - wxCHECK_RET( m_state == STATE_PAUSED, - "can't resume thread which is not suspended." ); - - // we will be able to lock this mutex only when Pause() starts waiting - wxMutexLocker lock(m_mutexSuspend); - m_condSuspend.Signal(); - - SetState(STATE_RUNNING); -} - -// ----------------------------------------------------------------------------- -// static functions -// ----------------------------------------------------------------------------- - -wxThread *wxThread::This() -{ - return (wxThread *)pthread_getspecific(gs_keySelf); -} - -bool wxThread::IsMain() -{ - return (bool)pthread_equal(pthread_self(), gs_tidMain); -} - -void wxThread::Yield() -{ - sched_yield(); -} - -void wxThread::Sleep(unsigned long milliseconds) -{ - // FIXME how to test for nanosleep() availability? - - usleep(milliseconds * 1000); // usleep(3) wants microseconds -} - -// ----------------------------------------------------------------------------- -// creating thread -// ----------------------------------------------------------------------------- - -wxThread::wxThread() -{ - // add this thread to the global list of all threads - gs_allThreads.Add(this); - - p_internal = new wxThreadInternal(); -} - -wxThreadError wxThread::Create() -{ - if (p_internal->GetState() != STATE_NEW) - return wxTHREAD_RUNNING; - - // set up the thread attribute: right now, we only set thread priority - pthread_attr_t attr; - pthread_attr_init(&attr); - - int prio; - if ( pthread_attr_getschedpolicy(&attr, &prio) != 0 ) - { - wxLogError(_("Can not retrieve thread scheduling policy.")); - } - - int min_prio = sched_get_priority_min(prio), - max_prio = sched_get_priority_max(prio); - - if ( min_prio == -1 || max_prio == -1 ) - { - wxLogError(_("Can not get priority range for scheduling policy %d."), - prio); - } - else - { - struct sched_param sp; - pthread_attr_getschedparam(&attr, &sp); - sp.sched_priority = min_prio + - (p_internal->GetPriority()*(max_prio-min_prio))/100; - pthread_attr_setschedparam(&attr, &sp); - } - - // create the new OS thread object - int rc = pthread_create(&p_internal->thread_id, &attr, - wxThreadInternal::PthreadStart, (void *)this); - pthread_attr_destroy(&attr); - - if ( rc != 0 ) - { - p_internal->SetState(STATE_EXITED); - return wxTHREAD_NO_RESOURCE; - } - - return wxTHREAD_NO_ERROR; -} - -wxThreadError wxThread::Run() -{ - return p_internal->Run(); -} - -// ----------------------------------------------------------------------------- -// misc accessors -// ----------------------------------------------------------------------------- - -void wxThread::SetPriority(unsigned int prio) -{ - wxCHECK_RET( (WXTHREAD_MIN_PRIORITY <= prio) && - (prio <= WXTHREAD_MAX_PRIORITY), "invalid thread priority" ); - - wxCriticalSectionLocker lock(m_critsect); - - switch ( p_internal->GetState() ) - { - case STATE_NEW: - // thread not yet started, priority will be set when it is - p_internal->SetPriority(prio); - break; - - case STATE_RUNNING: - case STATE_PAUSED: - { - struct sched_param sparam; - sparam.sched_priority = prio; - - if ( pthread_setschedparam(p_internal->GetId(), - SCHED_OTHER, &sparam) != 0 ) - { - wxLogError(_("Failed to set thread priority %d."), prio); - } - } - break; - - case STATE_EXITED: - default: - wxFAIL_MSG("impossible to set thread priority in this state"); - } -} - -unsigned int wxThread::GetPriority() const -{ - wxCriticalSectionLocker lock((wxCriticalSection &)m_critsect); - - return p_internal->GetPriority(); -} - -unsigned long wxThread::GetID() const -{ - return (unsigned long)p_internal->thread_id; -} - -// ----------------------------------------------------------------------------- -// pause/resume -// ----------------------------------------------------------------------------- - -wxThreadError wxThread::Pause() -{ - wxCriticalSectionLocker lock(m_critsect); - - if ( p_internal->GetState() != STATE_RUNNING ) - { - wxLogDebug("Can't pause thread which is not running."); - - return wxTHREAD_NOT_RUNNING; - } - - p_internal->SetState(STATE_PAUSED); - - return wxTHREAD_NO_ERROR; -} - -wxThreadError wxThread::Resume() -{ - wxCriticalSectionLocker lock(m_critsect); - - if ( p_internal->GetState() == STATE_PAUSED ) - { - p_internal->Resume(); - - return wxTHREAD_NO_ERROR; - } - else - { - wxLogDebug("Attempt to resume a thread which is not paused."); - - return wxTHREAD_MISC_ERROR; - } -} - -// ----------------------------------------------------------------------------- -// exiting thread -// ----------------------------------------------------------------------------- - -wxThread::ExitCode wxThread::Delete() -{ - m_critsect.Enter(); - thread_state state = p_internal->GetState(); - m_critsect.Leave(); - - switch ( state ) - { - case STATE_NEW: - case STATE_EXITED: - // nothing to do - break; - - case STATE_PAUSED: - // resume the thread first - Resume(); - - // fall through - - default: - // set the flag telling to the thread to stop and wait - p_internal->Cancel(); - } - - return NULL; -} - -wxThreadError wxThread::Kill() -{ - switch ( p_internal->GetState() ) - { - case STATE_NEW: - case STATE_EXITED: - return wxTHREAD_NOT_RUNNING; - - default: - if ( pthread_cancel(p_internal->GetId()) != 0 ) - { - wxLogError(_("Failed to terminate a thread.")); - - return wxTHREAD_MISC_ERROR; - } - - return wxTHREAD_NO_ERROR; - } -} - -void wxThread::Exit(void *status) -{ - // first call user-level clean up code - OnExit(); - - // next wake up the threads waiting for us (OTOH, this function won't return - // until someone waited for us!) - p_internal->SignalExit(); - - p_internal->SetState(STATE_EXITED); - - // delete both C++ thread object and terminate the OS thread object - delete this; - pthread_exit(status); -} - -// also test whether we were paused -bool wxThread::TestDestroy() -{ - wxCriticalSectionLocker lock((wxCriticalSection&)m_critsect); - - if ( p_internal->GetState() == STATE_PAUSED ) - { - // leave the crit section or the other threads will stop too if they try - // to call any of (seemingly harmless) IsXXX() functions while we sleep - m_critsect.Leave(); - - p_internal->Pause(); - - // enter it back before it's finally left in lock object dtor - m_critsect.Enter(); - } - - return p_internal->WasCancelled(); -} - -wxThread::~wxThread() -{ - // remove this thread from the global array - gs_allThreads.Remove(this); -} - -// ----------------------------------------------------------------------------- -// state tests -// ----------------------------------------------------------------------------- - -bool wxThread::IsRunning() const -{ - wxCriticalSectionLocker lock((wxCriticalSection &)m_critsect); - - return p_internal->GetState() == STATE_RUNNING; -} - -bool wxThread::IsAlive() const -{ - wxCriticalSectionLocker lock((wxCriticalSection&)m_critsect); - - switch ( p_internal->GetState() ) - { - case STATE_RUNNING: - case STATE_PAUSED: - return TRUE; - - default: - return FALSE; - } -} - -//-------------------------------------------------------------------- -// wxThreadModule -//-------------------------------------------------------------------- - -class wxThreadModule : public wxModule -{ -public: - virtual bool OnInit(); - virtual void OnExit(); - -private: - DECLARE_DYNAMIC_CLASS(wxThreadModule) -}; - -IMPLEMENT_DYNAMIC_CLASS(wxThreadModule, wxModule) - -bool wxThreadModule::OnInit() -{ - if ( pthread_key_create(&gs_keySelf, NULL /* dtor function */) != 0 ) - { - wxLogError(_("Thread module initialization failed: " - "failed to create pthread key.")); - - return FALSE; - } - - gs_mutexGui = new wxMutex(); - wxThreadGuiInit(); - gs_tidMain = pthread_self(); - gs_mutexGui->Lock(); - - return TRUE; -} - -void wxThreadModule::OnExit() -{ - wxASSERT_MSG( wxThread::IsMain(), "only main thread can be here" ); - - // terminate any threads left - size_t count = gs_allThreads.GetCount(); - if ( count != 0u ) - wxLogDebug("Some threads were not terminated by the application."); - - for ( size_t n = 0u; n < count; n++ ) - { - gs_allThreads[n]->Delete(); - } - - // destroy GUI mutex - gs_mutexGui->Unlock(); - wxThreadGuiExit(); - delete gs_mutexGui; - - // and free TLD slot - (void)pthread_key_delete(gs_keySelf); -} diff --git a/src/gtk1/threadsgi.cpp b/src/gtk1/threadsgi.cpp deleted file mode 100644 index 217f67d7d9..0000000000 --- a/src/gtk1/threadsgi.cpp +++ /dev/null @@ -1,269 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: threadsgi.cpp -// Purpose: wxThread (SGI) Implementation -// Author: Original from Wolfram Gloger/Guilhem Lavaux -// Modified by: -// Created: 04/22/98 -// RCS-ID: $Id$ -// Copyright: (c) Wolfram Gloger (1996, 1997); Guilhem Lavaux (1998) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation "thread.h" -#endif - -#include -#include - -#include -#include -#include -#include "wx/thread.h" -#include "wx/module.h" -#include "wx/utils.h" -#include "wx/log.h" - -#include "gdk/gdk.h" -#include "gtk/gtk.h" - -enum thread_state -{ - STATE_IDLE = 0, - STATE_RUNNING, - STATE_CANCELED, - STATE_EXITED -}; - -///////////////////////////////////////////////////////////////////////////// -// Static variables -///////////////////////////////////////////////////////////////////////////// - -static int p_mainid; -wxMutex *wxMainMutex; - -#include "threadgui.inc" - -///////////////////////////////////////////////////////////////////////////// -// Unix implementations (SGI threads) -///////////////////////////////////////////////////////////////////////////// - -class wxMutexInternal { -public: - abilock_t p_mutex; -}; - -wxMutex::wxMutex() -{ - m_locked = 0; - p_internal = new wxMutexInternal; - init_lock(&(p_internal->p_mutex)); -} - -wxMutex::~wxMutex() -{ - if (m_locked > 0) - wxLogDebug( "wxMutex warning: freeing a locked mutex (%d locks)\n", m_locked ); - delete p_internal; -} - -wxMutexError wxMutex::Lock() -{ - spin_lock(&(p_internal->p_mutex)); - m_locked++; - return wxMUTEX_NO_ERROR; -} - -wxMutexError wxMutex::TryLock() -{ - if (acquire_lock(&(p_internal->p_mutex)) != 0) - return wxMUTEX_BUSY; - m_locked++; - return wxMUTEX_NO_ERROR; -} - -wxMutexError wxMutex::Unlock() -{ - if (m_locked == 0) - return wxMUTEX_UNLOCKED; - release_lock(&(p_internal->p_mutex)); - m_locked--; - return wxMUTEX_NO_ERROR; -} - -// GL: Don't know how it works on SGI. Wolfram ? - -wxCondition::wxCondition() {} -wxCondition::~wxCondition() {} -int wxCondition::Wait(wxMutex& WXUNUSED(mutex)) { return 0;} -int wxCondition::Wait(wxMutex& WXUNUSED(mutex), unsigned long WXUNUSED(sec), - unsigned long WXUNUSED(nsec)) { return 0; } -int wxCondition::Signal() { return 0; } -int wxCondition::Broadcast() { return 0; } - -class -wxThreadPrivate { -public: - wxThreadPrivate() { thread_id = 0; state = STATE_IDLE; } - ~wxThreadPrivate() {} - static void SprocStart(void *ptr); - static void SignalHandler(int sig); -public: - int state, thread_id; - void* exit_status; -}; - -void wxThreadPrivate::SprocStart(void *ptr) -{ - void* status; - - wxThread *thr = (wxThread *)ptr; - - thr->p_internal->thread_id = getpid(); - thr->p_internal->exit_status = 0; - status = thr->Entry(); - thr->Exit(status); -} - -void wxThread::Exit(void* status) -{ - wxThread* ptr = this; - THREAD_SEND_EXIT_MSG(ptr); - p_internal->state = STATE_EXITED; - p_internal->exit_status = status; - _exit(0); -} - -wxThreadError wxThread::Create() -{ - if (p_internal->state != STATE_IDLE) - return wxTHREAD_RUNNING; - p_internal->state = STATE_RUNNING; - if (sproc(p_internal->SprocStart, PR_SALL, this) < 0) { - p_internal->state = STATE_IDLE; - return wxTHREAD_NO_RESOURCE; - } - return wxTHREAD_NO_ERROR; -} - -wxThreadError wxThread::Destroy() -{ - if (p_internal->state == STATE_RUNNING) - p_internal->state = STATE_CANCELED; - - return wxTHREAD_NO_ERROR; -} - -wxThreadError wxThread::Pause() -{ - return wxTHREAD_NO_ERROR; -} - -wxThreadError wxThread::Resume() -{ - return wxTHREAD_NO_ERROR; -} - -void *wxThread::Join() -{ - if (p_internal->state != STATE_IDLE) { - bool do_unlock = wxThread::IsMain(); - int stat; - - if (do_unlock) - wxMainMutex->Unlock(); - waitpid(p_internal->thread_id, &stat, 0); - if (do_unlock) - wxMainMutex->Lock(); - if (!WIFEXITED(stat) && !WIFSIGNALED(stat)) - return 0; - p_internal->state = STATE_IDLE; - return p_internal->exit_status; - } - return 0; -} - -unsigned long wxThread::GetID() const -{ - return (unsigned long)p_internal->thread_id; -} - -void wxThread::TestDestroy() -{ - if (p_internal->state == STATE_CANCELED) { - p_internal->exit_status = 0; - _exit(0); - } -} - -void wxThread::SetPriority(int prio) -{ -} - -int wxThread::GetPriority() const -{ - return 0; -} - -bool wxThread::IsMain() -{ - return (int)getpid() == main_id; -} - -bool wxThread::IsAlive() const -{ - return (p_internal->state == STATE_RUNNING); -} - -bool wxThread::IsRunning() const -{ - return (p_internal->state == STATE_RUNNING); -} - -wxThread::wxThread() -{ - p_internal = new wxThreadPrivate(); -} - -wxThread::~wxThread() -{ - Cancel(); - Join(); - delete p_internal; -} - -// The default callback just joins the thread and throws away the result. -void wxThread::OnExit() -{ - Join(); -} - -// Global initialization - -class wxThreadModule : public wxModule -{ -public: - virtual bool OnInit(); - virtual void OnExit(); - -private: - DECLARE_DYNAMIC_CLASS(wxThreadModule) -}; - -IMPLEMENT_DYNAMIC_CLASS(wxThreadModule, wxModule) - -bool wxThreadModule::OnInit() -{ - wxMainMutex = new wxMutex(); - wxThreadGuiInit(); - p_mainid = (int)getpid(); - wxMainMutex->Lock(); - return TRUE; -} - -void wxThreadModule::OnExit() -{ - wxMainMutex->Unlock(); - wxThreadGuiExit(); - delete wxMainMutex; -} - diff --git a/src/gtk1/timer.cpp b/src/gtk1/timer.cpp deleted file mode 100644 index fb74fc13dc..0000000000 --- a/src/gtk1/timer.cpp +++ /dev/null @@ -1,117 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: timer.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifdef __GNUG__ -#pragma implementation "timer.h" -#endif - -#include "wx/timer.h" - -#include "gtk/gtk.h" -/* -#include "glib.h" -*/ - -//----------------------------------------------------------------------------- -// global functions -//----------------------------------------------------------------------------- - -/* -static GTimer *g_timer = (GTimer*) NULL; - -void wxStartTimer() -{ - if (g_timer) - { - g_timer_rest( g_timer ); - } - else - { - g_timer = g_timer_new(); - g_timer_start( g_timer ); - } -} - -long wxGetElapsedTime( bool resetTimer ) -{ - gulong res = 0; - if (g_timer) - { - g_timer_elapsed( g_timer, &res ); - if (resetTimer) g_timer_reset( g_timer ); - } - - return res; -} - -bool wxGetLocalTime( long *timeZone, int *dstObserved ) -{ -} - -long wxGetCurrentTime() -{ -} -*/ - - -//----------------------------------------------------------------------------- -// wxTimer -//----------------------------------------------------------------------------- - -IMPLEMENT_ABSTRACT_CLASS(wxTimer,wxObject) - -gint timeout_callback( gpointer data ) -{ - wxTimer *timer = (wxTimer*)data; - timer->Notify(); - - if (timer->OneShot()) - { - timer->Stop(); - } - - return TRUE; -} - -wxTimer::wxTimer() -{ - m_tag = -1; - m_time = 1000; - m_oneShot = FALSE; -} - -wxTimer::~wxTimer() -{ - Stop(); -} - -bool wxTimer::Start( int millisecs, bool oneShot ) -{ - if (millisecs != -1) - { - m_time = millisecs; - } - - m_oneShot = oneShot; - - m_tag = gtk_timeout_add( millisecs, timeout_callback, this ); - - return TRUE; -} - -void wxTimer::Stop() -{ - if (m_tag != -1) - { - gtk_timeout_remove( m_tag ); - m_tag = -1; - } -} - diff --git a/src/gtk1/tooltip.cpp b/src/gtk1/tooltip.cpp deleted file mode 100644 index f3e3acb598..0000000000 --- a/src/gtk1/tooltip.cpp +++ /dev/null @@ -1,84 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: tooltip.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "tooltip.h" -#endif - -#include "wx/tooltip.h" - -#include "gtk/gtk.h" -#include "gdk/gdk.h" - -//----------------------------------------------------------------------------- -// wxToolTip -//----------------------------------------------------------------------------- - -wxToolTip::wxToolTip( const wxString &tip ) -{ - m_text = tip; - - m_tooltips = (GtkTooltips*) NULL; - - m_fg = new GdkColor; - m_fg->red = 0; - m_fg->green = 0; - m_fg->blue = 0; - - m_bg = new GdkColor; - m_bg->red = 65535; - m_bg->green = 65535; - m_bg->blue = 50000; -} - -wxToolTip::~wxToolTip() -{ - gtk_object_unref( GTK_OBJECT(m_tooltips) ); - - delete m_fg; - delete m_bg; -} - -bool wxToolTip::Ok() -{ - return (m_tooltips); -} - -void wxToolTip::Create( GtkWidget *tool ) -{ - if (!m_tooltips) - { - m_tooltips = gtk_tooltips_new(); - - gdk_color_alloc( gtk_widget_get_colormap( tool ), m_fg ); - gdk_color_alloc( gtk_widget_get_colormap( tool ), m_bg ); - - gtk_tooltips_set_colors( m_tooltips, m_bg, m_fg ); - } - - gtk_tooltips_set_tip( m_tooltips, tool, m_text, (gchar*) NULL ); -} - -void wxToolTip::Enable( bool flag ) -{ - if (!Ok()) return; - - if (flag) - gtk_tooltips_enable( m_tooltips ); - else - gtk_tooltips_disable( m_tooltips ); -} - -void wxToolTip::SetDelay( long msecs ) -{ - if (!Ok()) return; - - gtk_tooltips_set_delay( m_tooltips, msecs ); -} - diff --git a/src/gtk1/treectrl.cpp b/src/gtk1/treectrl.cpp deleted file mode 100644 index b1df8d5abc..0000000000 --- a/src/gtk1/treectrl.cpp +++ /dev/null @@ -1,938 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: treectrl.cpp -// Purpose: wxTreeCtrl -// Author: Denis Pershin -// Modified by: -// Created: 07/05/98 -// RCS-ID: $Id$ -// Copyright: (c) Denis Pershin -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "treectrl.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include "wx/gtk/treectrl.h" -#include -#include "wx/log.h" - -#include - -//static void wxConvertToGtkTreeItem(wxTreeCtrl *owner, wxTreeItem& info, GtkTreeItem **gtkItem); -//static void wxConvertFromGtkTreeItem(wxTreeItem& info, GtkTreeItem *gtkItem); - -static void gtk_treectrl_count_callback (GtkWidget *widget, gpointer data); -static void gtk_treectrl_first_selected_callback(GtkWidget *widget, gpointer data); -static void gtk_treectrl_first_visible_callback(GtkWidget *widget, gpointer data); - -// static void gtk_treectrl_next_callback (GtkWidget *widget, gpointer data); -// static void gtk_treectrl_next_visible_callback (GtkWidget *widget, gpointer data); -// static void gtk_treectrl_next_selected_callback (GtkWidget *widget, gpointer data); - -static void gtk_treeitem_expand_callback(GtkWidget *widget, wxTreeItemId *treeitem); -static void gtk_treeitem_collapse_callback(GtkWidget *widget, wxTreeItemId *treeitem); -static void gtk_treeitem_select_callback(GtkWidget *widget, wxTreeItemId *treeitem); - -static void gtk_treeitem_expand_callback(GtkWidget *widget, wxTreeItemId *treeitem) { - wxTreeCtrl *owner = (wxTreeCtrl *)gtk_object_get_data(GTK_OBJECT(widget), "owner"); - if (owner == NULL) - return; - -// long id = (long)gtk_object_get_data(GTK_OBJECT(widget), "id"); - owner->SendExpanding(GTK_TREE_ITEM(widget)); - owner->SendExpanded(GTK_TREE_ITEM(widget)); -}; - -static void gtk_treeitem_collapse_callback(GtkWidget *widget, wxTreeItemId *treeitem) { - wxTreeCtrl *owner = (wxTreeCtrl *)gtk_object_get_data(GTK_OBJECT(widget), "owner"); - if (owner == NULL) - return; - -// long id = (long)gtk_object_get_data(GTK_OBJECT(widget), "id"); - owner->SendCollapsing(GTK_TREE_ITEM(widget)); - owner->SendCollapsed(GTK_TREE_ITEM(widget)); -}; - -static void gtk_treeitem_select_callback(GtkWidget *widget, wxTreeItemId *treeitem) { - wxTreeCtrl *owner = (wxTreeCtrl *)gtk_object_get_data(GTK_OBJECT(widget), "owner"); - if (owner == NULL) - return; - -// long id = (long)gtk_object_get_data(GTK_OBJECT(widget), "id"); - owner->SendSelChanging(GTK_TREE_ITEM(widget)); - owner->SendSelChanged(GTK_TREE_ITEM(widget)); -} - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxTreeCtrl, wxControl) - -#endif - -void wxTreeCtrl::Init() { - m_imageListNormal = NULL; - m_imageListState = NULL; - m_textCtrl = NULL; -} - -bool wxTreeCtrl::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, const wxString& name) { - Init(); - - int x = pos.x; - int y = pos.y; - int width = size.x; - int height = size.y; - - m_windowStyle = style; - - SetParent(parent); - - if (width <= 0) - width = 100; - if (height <= 0) - height = 30; - if (x < 0) - x = 0; - if (y < 0) - y = 0; - - m_needParent = TRUE; - -printf("precreate\n"); - PreCreation( parent, id, pos, size, style, name ); - -printf("1\n"); - - m_widget = gtk_scrolled_window_new(NULL, NULL); -printf("2\n"); - gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(m_widget), - GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); - -printf("3\n"); - m_tree = GTK_TREE(gtk_tree_new()); - -printf("4\n"); - gtk_container_add(GTK_CONTAINER(m_widget), GTK_WIDGET(m_tree)); -printf("5\n"); - gtk_widget_show(GTK_WIDGET(m_tree)); - - SetName(name); - SetValidator(validator); - -printf("Robert's new insertion code :-)\n"); - m_parent->AddChild( this ); - (m_parent->m_insertCallback)( m_parent, this ); - -printf("postcreate\n"); - PostCreation(); - - gtk_widget_realize(GTK_WIDGET(m_tree)); - - Show(TRUE); - - return TRUE; -} - -wxTreeCtrl::~wxTreeCtrl(void) { - if (m_textCtrl) - delete m_textCtrl; -} - -// Attributes -static void gtk_treectrl_count_callback (GtkWidget *widget, gpointer data) { - int count = (*((int *)data)); - - count++; - if (GTK_IS_CONTAINER(widget)) - gtk_container_foreach(GTK_CONTAINER(widget), gtk_treectrl_count_callback, data); -} - -size_t wxTreeCtrl::GetCount() const { - int count = 0; - - if (m_anchor != NULL) - gtk_treectrl_count_callback(GTK_WIDGET(m_anchor), &count); - return count; -} - -unsigned int wxTreeCtrl::GetIndent() const { - return m_tree->indent_value; -} - -void wxTreeCtrl::SetIndent(unsigned int indent) { - m_tree->indent_value = indent; -} - -wxImageList *wxTreeCtrl::GetImageList() const { - return m_imageListNormal; -} - -wxImageList *wxTreeCtrl::GetStateImageList() const { - return m_imageListState; -} - -void wxTreeCtrl::SetImageList(wxImageList *imageList) { - m_imageListNormal = imageList; -} - -void wxTreeCtrl::SetStateImageList(wxImageList *imageList) { - m_imageListState = imageList; -} - -wxString wxTreeCtrl::GetItemText(const wxTreeItemId &item) const { - char *t; - - if (!item.IsOk()) - return wxString(""); - - GtkLabel *l = GTK_LABEL(gtk_object_get_data(GTK_OBJECT((GtkTreeItem *)item), "w_label")); - gtk_label_get(l, &t); - - return t; -} - -int wxTreeCtrl::GetItemImage(const wxTreeItemId& item) const { - if (!item.IsOk()) - return (-1); - - return (int)gtk_object_get_data(GTK_OBJECT((GtkTreeItem *)item), "image"); -} - -int wxTreeCtrl::GetItemSelectedImage(const wxTreeItemId& item) const { - if (!item.IsOk()) - return (-1); - - return (int)gtk_object_get_data(GTK_OBJECT((GtkTreeItem *)item), "selectedImage"); -} - -wxTreeItemData *wxTreeCtrl::GetItemData(const wxTreeItemId& item) const { - if (!item.IsOk()) - return NULL; - - return (wxTreeItemData *)gtk_object_get_data(GTK_OBJECT((GtkTreeItem *)item), "data"); -} - -void wxTreeCtrl::SetItemText(const wxTreeItemId& item, const wxString& text) { - if (!item.IsOk()) - return; - - GtkLabel *l = GTK_LABEL(gtk_object_get_data(GTK_OBJECT((GtkTreeItem *)item), "w_label")); - gtk_label_set(l, text); -} - -void wxTreeCtrl::SetItemImage(const wxTreeItemId& item, int image) { - if (!item.IsOk()) - return; - - gtk_object_set_data(GTK_OBJECT((GtkTreeItem *)item), "image", (void *)image); -} - -void wxTreeCtrl::SetItemSelectedImage(const wxTreeItemId& item, int image) { - if (!item.IsOk()) - return; - - gtk_object_set_data(GTK_OBJECT((GtkTreeItem *)item), "selectedImage", (void *)image); -} - -void wxTreeCtrl::SetItemData(const wxTreeItemId& item, wxTreeItemData *data) { - if (!item.IsOk()) - return; - - gtk_object_set_data(GTK_OBJECT((GtkTreeItem *)item), "data", data); -} - -bool wxTreeCtrl::IsVisible(const wxTreeItemId& item) const { - return GTK_WIDGET_VISIBLE(GTK_TREE_ITEM((GtkTreeItem *)item)); -} - -bool wxTreeCtrl::ItemHasChildren(const wxTreeItemId& item) const { - GtkTreeItem *p = (GtkTreeItem *)item; - - if (p->subtree == NULL) - return wxFalse; - - if (GTK_TREE(p->subtree)->children == NULL) - return wxFalse; - - if (g_list_length(GTK_TREE(p->subtree)->children) == 0) - return wxFalse; - - return wxTrue; -} - -bool wxTreeCtrl::IsExpanded(const wxTreeItemId& item) const { - return (((GtkTreeItem *)item)->expanded != 0); -} - -bool wxTreeCtrl::IsSelected(const wxTreeItemId& item) const { - GtkTreeItem *p = (GtkTreeItem *)item; - GtkWidget *parent = GTK_WIDGET(p)->parent; - - if (!GTK_IS_TREE(parent)) - return wxFalse; - - if (g_list_index(GTK_TREE(parent)->children, p) == -1) - return wxFalse; - - return wxTrue; -} - -wxTreeItemId wxTreeCtrl::GetRootItem() const { - return m_anchor; -} - -static void gtk_treectrl_first_selected_callback(GtkWidget *widget, gpointer data) { - GtkTreeItem *p = (*((GtkTreeItem **)data)); - - GtkTree *tree = GTK_TREE(GTK_TREE_ITEM(widget)->subtree); - - if (tree->selection != NULL) { - p = (GtkTreeItem *)tree->selection->data; - return; - } - - if (GTK_IS_CONTAINER(widget)) - gtk_container_foreach(GTK_CONTAINER(widget), gtk_treectrl_first_selected_callback, data); -} - -wxTreeItemId wxTreeCtrl::GetSelection() const { - GtkTreeItem *p = NULL; - - if (m_anchor == NULL) - return NULL; - - gtk_treectrl_first_selected_callback(GTK_WIDGET(m_anchor), &p); - - return p; -} - -wxTreeItemId wxTreeCtrl::GetParent(const wxTreeItemId& item) const { - if (item.IsOk()) - return (GtkTreeItem *)gtk_object_get_data(GTK_OBJECT((GtkTreeItem *)item), "parent"); - - return NULL; -} - -wxTreeItemId wxTreeCtrl::GetFirstChild(const wxTreeItemId& item, long& cookie) const { - GtkTreeItem *p = (GtkTreeItem *)item; - GtkWidget *parent = GTK_WIDGET(p)->parent; - - if (!GTK_IS_TREE(parent)) - return NULL; - - cookie = 0; - return GTK_TREE_ITEM(g_list_first(GTK_TREE(parent)->children)->data); -} - -wxTreeItemId wxTreeCtrl::GetNextChild(const wxTreeItemId& item, long& cookie) const { - GtkTreeItem *p = (GtkTreeItem *)item; - GtkWidget *parent = GTK_WIDGET(p)->parent; - - if (!GTK_IS_TREE(parent)) - return NULL; - - cookie++; - return GTK_TREE_ITEM(g_list_nth(GTK_TREE(parent)->children, cookie)->data); -} - -wxTreeItemId wxTreeCtrl::GetLastChild(const wxTreeItemId& item) const -{ - GtkTreeItem *p = (GtkTreeItem *)item; - GtkWidget *parent = GTK_WIDGET(p)->parent; - - wxCHECK_MSG( GTK_IS_TREE(parent), NULL, "invalid tree item" ); - - return GTK_TREE_ITEM(g_list_last(GTK_TREE(parent)->children)->data); -} - -wxTreeItemId wxTreeCtrl::GetNextSibling(const wxTreeItemId& item) const { - GtkTreeItem *p = (GtkTreeItem *)item; - GtkWidget *parent = GTK_WIDGET(p)->parent; - - if (!GTK_IS_TREE(parent)) - return NULL; - - if (g_list_index(GTK_TREE(parent)->children, p) == -1) - return NULL; - - return GTK_TREE_ITEM(g_list_next(g_list_find(GTK_TREE(parent)->children, p))->data); -} - -wxTreeItemId wxTreeCtrl::GetPrevSibling(const wxTreeItemId& item) const { - GtkTreeItem *p = (GtkTreeItem *)item; - GtkWidget *parent = GTK_WIDGET(p)->parent; - - if (!GTK_IS_TREE(parent)) - return NULL; - - if (g_list_index(GTK_TREE(parent)->children, p) == -1) - return NULL; - - return GTK_TREE_ITEM(g_list_previous(g_list_find(GTK_TREE(parent)->children, p))->data); -} - -static void gtk_treectrl_first_visible_callback(GtkWidget *widget, gpointer data) { - GtkTreeItem *p = (*((GtkTreeItem **)data)); - - GtkTree *tree = GTK_TREE(GTK_TREE_ITEM(widget)->subtree); - - if (tree->children != NULL) { - guint len = g_list_length(tree->children); - for (guint i=0; ichildren, i)->data)))) { - p = GTK_TREE_ITEM((GtkTreeItem *)g_list_nth(tree->children, i)->data); - return; - } - } - } - - if (GTK_IS_CONTAINER(widget)) - gtk_container_foreach(GTK_CONTAINER(widget), gtk_treectrl_first_visible_callback, data); -} - -wxTreeItemId wxTreeCtrl::GetFirstVisibleItem() const { - GtkTreeItem *p = NULL; - - if (m_anchor == NULL) - return NULL; - - gtk_treectrl_first_visible_callback(GTK_WIDGET(m_anchor), &p); - - return p; -} - -wxTreeItemId wxTreeCtrl::GetNextVisible(const wxTreeItemId& item) const { - GtkTreeItem *p = (GtkTreeItem *)item; - GtkTree *parent = GTK_TREE(GTK_WIDGET(p)->parent); - GtkTreeItem *q; - - if (!GTK_IS_TREE(parent)) - return NULL; - - if (parent->children == NULL) - return NULL; - - q = GTK_TREE_ITEM(g_list_next(g_list_find(GTK_TREE(parent)->children, p))->data); - - while (q != p) { - q = GTK_TREE_ITEM(g_list_next(g_list_find(GTK_TREE(parent)->children, q))->data); - if (GTK_WIDGET_VISIBLE(GTK_WIDGET(q))) - return q; - } - - return NULL; -} - -wxTreeItemId wxTreeCtrl::GetPrevVisible(const wxTreeItemId& item) const { - GtkTreeItem *p = (GtkTreeItem *)item; - GtkTree *parent = GTK_TREE(GTK_WIDGET(p)->parent); - GtkTreeItem *q; - - if (!GTK_IS_TREE(parent)) - return NULL; - - if (parent->children == NULL) - return NULL; - - q = GTK_TREE_ITEM(g_list_previous(g_list_find(GTK_TREE(parent)->children, p))->data); - - while (q != p) { - q = GTK_TREE_ITEM(g_list_previous(g_list_find(GTK_TREE(parent)->children, q))->data); - if (GTK_WIDGET_VISIBLE(GTK_WIDGET(q))) - return q; - } - - return NULL; -} - -wxTreeItemId wxTreeCtrl::AddRoot(const wxString& text, int image, - int selectedImage, wxTreeItemData *data) { - return p_InsertItem(0, text, image, selectedImage, data); -} - -wxTreeItemId wxTreeCtrl::PrependItem(const wxTreeItemId& parent, - const wxString& text, int image, int selectedImage, - wxTreeItemData *data) { -#warning "Need to implement PrependItem" - return NULL; -} - -wxTreeItemId wxTreeCtrl::InsertItem(const wxTreeItemId& parent, - const wxTreeItemId& idPrevious, const wxString& text, - int image, int selectedImage, wxTreeItemData *data) { -#warning "Need to implement InsertItem" - return NULL; -} - -wxTreeItemId wxTreeCtrl::AppendItem(const wxTreeItemId& parent, - const wxString& text, int image, int selectedImage, - wxTreeItemData *data) { - return p_InsertItem(parent, text, image, selectedImage, data); -} - -wxTreeItemId wxTreeCtrl::p_InsertItem(GtkTreeItem *p, - const wxString& text, int image, int selectedImage, - wxTreeItemData *data) { - GtkTreeItem *item; - -printf("begin insert\n"); - - item = GTK_TREE_ITEM(gtk_tree_item_new()); - - GtkHBox *m_box = GTK_HBOX(gtk_hbox_new(FALSE, 0)); - gtk_container_add (GTK_CONTAINER (item), GTK_WIDGET(m_box)); - - gtk_object_set_data(GTK_OBJECT(item), "w_box", m_box); - - const wxBitmap *bmp; - const wxImageList *list; - if ((list = GetImageList(wxIMAGE_LIST_NORMAL)) != NULL) - if ((bmp = list->GetBitmap(image)) != NULL) - if (bmp->Ok()) { - GdkBitmap *mask = NULL; - if (bmp->GetMask()) - mask = bmp->GetMask()->GetBitmap(); - GtkPixmap *m_image_widget = GTK_PIXMAP(gtk_pixmap_new(bmp->GetPixmap(), mask)); - gtk_misc_set_alignment (GTK_MISC (m_image_widget), 0.0, 0.5); - gtk_box_pack_start(GTK_BOX(m_box), GTK_WIDGET(m_image_widget), FALSE, FALSE, 0); - gtk_object_set_data(GTK_OBJECT(item), "w_image", (void *)m_image_widget); - gtk_object_set_data(GTK_OBJECT(item), "image", (void *)image); - gtk_widget_show (GTK_WIDGET(m_image_widget)); - } - GtkLabel *m_label_widget = GTK_LABEL(gtk_label_new ((char *)(const char *)text)); - gtk_misc_set_alignment (GTK_MISC (m_label_widget), 0.5, 0.5); - gtk_box_pack_start(GTK_BOX(m_box), GTK_WIDGET(m_label_widget), FALSE, FALSE, 0); - gtk_object_set_data(GTK_OBJECT(item), "w_label", m_label_widget); - gtk_widget_show (GTK_WIDGET(m_label_widget)); - - gtk_widget_show(GTK_WIDGET(m_box)); - - gtk_object_set_data(GTK_OBJECT(item), "owner", this); - gtk_object_set_data(GTK_OBJECT(item), "data", data); - gtk_object_set_data(GTK_OBJECT(item), "parent", p); - - if (p != 0) { - if (p->subtree == NULL) { - GtkTree *tree = GTK_TREE(gtk_tree_new()); - gtk_tree_item_set_subtree(GTK_TREE_ITEM(p), GTK_WIDGET(tree)); - gtk_widget_show(GTK_WIDGET(tree)); - p->expanded = 1; - } - - gtk_container_add(GTK_CONTAINER(p->subtree), GTK_WIDGET(item)); - } else { -printf("Adding root\n"); -printf("m_tree = %p\n", m_tree); - m_anchor = item; - gtk_container_add(GTK_CONTAINER(m_tree), GTK_WIDGET(item)); - } - - gtk_widget_show(GTK_WIDGET(item)); - - gtk_signal_connect(GTK_OBJECT(item), "select", - GTK_SIGNAL_FUNC(gtk_treeitem_select_callback), (gpointer)this ); - - gtk_signal_connect(GTK_OBJECT(item), "deselect", - GTK_SIGNAL_FUNC(gtk_treeitem_select_callback), (gpointer)this ); - - gtk_signal_connect(GTK_OBJECT(item), "expand", - GTK_SIGNAL_FUNC(gtk_treeitem_expand_callback), (gpointer)this ); - gtk_signal_connect(GTK_OBJECT(item), "collapse", - GTK_SIGNAL_FUNC(gtk_treeitem_collapse_callback), (gpointer)this ); - - return item; -} - -void wxTreeCtrl::Delete(const wxTreeItemId& item) { - if (!item.IsOk()) - return; - - GtkTreeItem *parent = GTK_TREE_ITEM(GTK_WIDGET((GtkTreeItem *)item)->parent); - if (parent == NULL) - return; - - gtk_container_remove(GTK_CONTAINER(parent), GTK_WIDGET((GtkTreeItem *)item)); - - return; -} - -void wxTreeCtrl::DeleteAllItems() { - gtk_tree_item_remove_subtree(m_anchor); -} - -void wxTreeCtrl::Expand(const wxTreeItemId& item) { - if (!item.IsOk()) - return; - - gtk_tree_item_expand(GTK_TREE_ITEM((GtkTreeItem *)item)); -} - -void wxTreeCtrl::Collapse(const wxTreeItemId& item) { - if (!item.IsOk()) - return; - - gtk_tree_item_collapse(GTK_TREE_ITEM((GtkTreeItem *)item)); -} - -void wxTreeCtrl::CollapseAndReset(const wxTreeItemId& item) { - if (!item.IsOk()) - return; - - gtk_tree_item_collapse(GTK_TREE_ITEM((GtkTreeItem *)item)); - gtk_tree_item_remove_subtree(GTK_TREE_ITEM((GtkTreeItem *)item)); -} - -void wxTreeCtrl::Toggle(const wxTreeItemId& item) { - if (!item.IsOk()) - return; - - if (((GtkTreeItem *)item)->expanded) - gtk_tree_item_collapse(GTK_TREE_ITEM((GtkTreeItem *)item)); - else - gtk_tree_item_expand(GTK_TREE_ITEM((GtkTreeItem *)item)); -} - -static void gtk_treectrl_unselect_callback(GtkWidget *widget, gpointer data) { - GtkTreeItem *p; - - GtkTree *tree = GTK_TREE(GTK_TREE_ITEM(widget)->subtree); - - if (tree->selection != NULL) { - guint len = g_list_length(tree->selection); - for (guint i=0; iselection, i)->data); - gtk_tree_unselect_child(tree, GTK_WIDGET(p)); - } - } - - if (GTK_IS_CONTAINER(widget)) - gtk_container_foreach(GTK_CONTAINER(widget), gtk_treectrl_unselect_callback, data); -} - -void wxTreeCtrl::Unselect() { - if (m_anchor == NULL) - return; - - gtk_treectrl_unselect_callback(GTK_WIDGET(m_anchor), NULL); -} - -void wxTreeCtrl::SelectItem(const wxTreeItemId& item) { - if (!item.IsOk()) - return; - - gtk_tree_item_select((GtkTreeItem *)item); -} - -void wxTreeCtrl::EnsureVisible(const wxTreeItemId& item) { -#warning "Need to implement EnsureVisible" -} - -void wxTreeCtrl::ScrollTo(const wxTreeItemId& item) { -#warning "Need to implement ScrollTo" -} - -wxTextCtrl* wxTreeCtrl::EditLabel(const wxTreeItemId& item, - wxClassInfo* textControlClass) { - wxASSERT( textControlClass->IsKindOf(CLASSINFO(wxTextCtrl)) ); -#warning "Need to implement EditLabel" -/* - char *s; - m_editItem = item; - - GtkLabel *m_label = (GtkLabel *)gtk_object_get_data(GTK_OBJECT((GtkTreeItem *)item), "w_label"); - gtk_label_get(m_label, &s); - - m_textCtrl = new wxTextCtrl(this, -1, s); -// m_textCtrl->SetValue(s); - - gtk_object_set_data(GTK_OBJECT((GtkTreeItem *)item), "w_edit", m_textCtrl->m_widget); - - gtk_container_remove(GTK_CONTAINER((GtkTreeItem *)item), GTK_WIDGET(m_label)); - gtk_container_add(GTK_CONTAINER((GtkTreeItem *)item), m_textCtrl->m_widget); - -*/ - return m_textCtrl; -} - -wxTextCtrl* wxTreeCtrl::GetEditControl() const { - return m_textCtrl; -} - -void wxTreeCtrl::EndEditLabel(const wxTreeItemId& item, bool discardChanges) { -#warning "Need to implement EndEditLabel" -/* - GtkLabel *m_label = (GtkLabel *)gtk_object_get_data(GTK_OBJECT((GtkTreeItem *)m_editItem), "w_label"); - gtk_label_set(m_label, m_textCtrl->GetValue()); - - gtk_object_remove_data(GTK_OBJECT((GtkTreeItem *)m_editItem), "w_edit"); - - gtk_container_remove(GTK_CONTAINER((GtkTreeItem *)m_editItem), m_textCtrl->m_widget); - gtk_container_add(GTK_CONTAINER((GtkTreeItem *)m_editItem), GTK_WIDGET(m_label)); - - delete m_textCtrl; - m_textCtrl = NULL; -*/ -} - -void wxTreeCtrl::ExpandItem(const wxTreeItemId& item, int action) { - switch (action) { - case wxTREE_EXPAND_EXPAND: - Expand(item); - break; - - case wxTREE_EXPAND_COLLAPSE: - Collapse(item); - break; - - case wxTREE_EXPAND_COLLAPSE_RESET: - CollapseAndReset(item); - break; - - case wxTREE_EXPAND_TOGGLE: - Toggle(item); - break; - - default: - wxFAIL_MSG("unknown action in wxTreeCtrl::ExpandItem"); - } -} - -wxTreeItemId wxTreeCtrl::InsertItem(const wxTreeItemId& parent, - const wxString& text, int image, int selImage, - long insertAfter) { -// InsertItem(parent, insertAfter, text, image, selImage); - #warning "Need to implement InsertItem" - return NULL; -} - -/* Old functions -long wxTreeCtrl::GetChild(long item) const { - GtkTreeItem *p; - GtkTreeItem *next = NULL; - - p = findGtkTreeItem(item); - GList *list = gtk_container_children(GTK_CONTAINER(p)); - next = GTK_TREE_ITEM(list->data);; - - if (next != NULL) - return (long)gtk_object_get_data(GTK_OBJECT(next), "id"); - - return (-1); -} - -long wxTreeCtrl::GetFirstVisibleItem(void) const { - GtkTreeItem *next = NULL; - - GList *list = gtk_container_children(GTK_CONTAINER(m_anchor)); - next = GTK_TREE_ITEM(list->data);; -// gtk_container_foreach(GTK_CONTAINER(m_anchor), gtk_treectrl_next_visible_callback, &next); - - if (next != NULL) - return (long)gtk_object_get_data(GTK_OBJECT(next), "id"); - - return (-1); -} - -long wxTreeCtrl::GetNextVisibleItem(long item) const { - GtkTreeItem *p; - GtkTreeItem *next = NULL; - - p = findGtkTreeItem(item); - GList *list = gtk_container_children(GTK_CONTAINER(p)); - next = GTK_TREE_ITEM(list->data);; -// gtk_container_foreach(GTK_CONTAINER(p), gtk_treectrl_next_visible_callback, &next); - - if (next != NULL) - return (long)gtk_object_get_data(GTK_OBJECT(next), "id"); - - return (-1); -} - -bool wxTreeCtrl::GetItem(wxTreeItem& info) const { - GtkTreeItem *p; - - p = findGtkTreeItem(info.m_itemId); - - if (p == NULL) { - wxLogSysError("TreeCtrl::GetItem failed"); - return FALSE; - } - - wxConvertFromGtkTreeItem(info, p); - - return TRUE; -} - -bool wxTreeCtrl::SetItem(wxTreeItem& info) { - GtkTreeItem *p; - - p = findGtkTreeItem(info.m_itemId); - - if (p == NULL) { - wxLogSysError("TreeCtrl::SetItem failed"); - return FALSE; - } - - wxConvertToGtkTreeItem(this, info, &p); - - return TRUE; -} - -int wxTreeCtrl::GetItemState(long item, long stateMask) const { - wxTreeItem info; - - info.m_mask = wxTREE_MASK_STATE ; - info.m_stateMask = stateMask; - info.m_itemId = item; - - if (!GetItem(info)) - return 0; - - return info.m_state; -} - -bool wxTreeCtrl::SetItemState(long item, long state, long stateMask) { - wxTreeItem info; - - info.m_mask = wxTREE_MASK_STATE ; - info.m_state = state; - info.m_stateMask = stateMask; - info.m_itemId = item; - - return SetItem(info); -} -*/ - -// Operations -/* -bool wxTreeCtrl::DeleteChildren(long item) { - GtkTreeItem *p; - - p = findGtkTreeItem(item); - if (p == NULL) - return FALSE; - - gtk_tree_item_remove_subtree(GTK_TREE_ITEM(p)); - - return TRUE; -} -*/ - -/* -long wxTreeCtrl::InsertItem(long parent, wxTreeItem& info, long insertAfter) { - GtkTreeItem *p; - GtkTreeItem *item = NULL; - - info.m_itemId = m_curitemId; - m_curitemId++; - - wxConvertToGtkTreeItem(this, info, &item); - - if (parent != 0) { - p = findGtkTreeItem(parent); - if (p->subtree == NULL) { - GtkTree *tree = GTK_TREE(gtk_tree_new()); - gtk_tree_item_set_subtree(GTK_TREE_ITEM(p), GTK_WIDGET(tree)); - gtk_widget_show(GTK_WIDGET(tree)); - p->expanded = 1; - } - - gtk_container_add(GTK_CONTAINER(p->subtree), GTK_WIDGET(item)); - } else { - m_anchor = item; - gtk_container_add(GTK_CONTAINER(m_tree), GTK_WIDGET(item)); - } - - if ((info.m_mask & wxTREE_MASK_CHILDREN) != 0) { - GtkTree *tree = GTK_TREE(gtk_tree_new()); - gtk_tree_item_set_subtree(GTK_TREE_ITEM(item), GTK_WIDGET(tree)); - gtk_widget_show(GTK_WIDGET(tree)); - } - - gtk_widget_show(GTK_WIDGET(item)); - - gtk_signal_connect(GTK_OBJECT(item), "select", - GTK_SIGNAL_FUNC(gtk_treeitem_select_callback), (gpointer)this ); - - gtk_signal_connect(GTK_OBJECT(item), "deselect", - GTK_SIGNAL_FUNC(gtk_treeitem_select_callback), (gpointer)this ); - - gtk_signal_connect(GTK_OBJECT(item), "expand", - GTK_SIGNAL_FUNC(gtk_treeitem_expand_callback), (gpointer)this ); - gtk_signal_connect(GTK_OBJECT(item), "collapse", - GTK_SIGNAL_FUNC(gtk_treeitem_collapse_callback), (gpointer)this ); - - return info.m_itemId; -} - -long wxTreeCtrl::InsertItem(long parent, const wxString& label, int image, - int selImage, long insertAfter) { - - wxTreeItem info; - info.m_text = label; - info.m_mask = wxTREE_MASK_TEXT; - if (image > -1) { - info.m_mask |= wxTREE_MASK_IMAGE | wxTREE_MASK_SELECTED_IMAGE; - info.m_image = image; - if (selImage == -1) - info.m_selectedImage = image; - else - info.m_selectedImage = selImage; - } - - return InsertItem(parent, info, insertAfter); -} -*/ - -void wxTreeCtrl::SendMessage(wxEventType command, const wxTreeItemId& item) { - wxTreeEvent event(command, GetId()); - event.SetEventObject(this); - event.m_item = item; - ProcessEvent(event); -} - -void wxTreeCtrl::SendExpanding(const wxTreeItemId& item) { - SendMessage(wxEVT_COMMAND_TREE_ITEM_EXPANDING, item); -} - -void wxTreeCtrl::SendExpanded(const wxTreeItemId& item) { - SendMessage(wxEVT_COMMAND_TREE_ITEM_EXPANDED, item); -} - -void wxTreeCtrl::SendCollapsing(const wxTreeItemId& item) { - SendMessage(wxEVT_COMMAND_TREE_ITEM_COLLAPSING, item); -} - -void wxTreeCtrl::SendCollapsed(const wxTreeItemId& item) { - SendMessage(wxEVT_COMMAND_TREE_ITEM_COLLAPSED, item); -} - -void wxTreeCtrl::SendSelChanging(const wxTreeItemId& item) { - SendMessage(wxEVT_COMMAND_TREE_SEL_CHANGED, item); -} - -void wxTreeCtrl::SendSelChanged(const wxTreeItemId& item) { - SendMessage(wxEVT_COMMAND_TREE_SEL_CHANGING, item); -} - -// Tree event -IMPLEMENT_DYNAMIC_CLASS(wxTreeEvent, wxCommandEvent) - -wxTreeEvent::wxTreeEvent(wxEventType commandType, int id): - wxCommandEvent(commandType, id) { - m_code = 0; - m_itemOld = 0; -} diff --git a/src/gtk1/utilsgtk.cpp b/src/gtk1/utilsgtk.cpp deleted file mode 100644 index 28d35e2adc..0000000000 --- a/src/gtk1/utilsgtk.cpp +++ /dev/null @@ -1,383 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: utils.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling, Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -//#ifdef __GNUG__ -//#pragma implementation "utils.h" -//#endif - -#include "wx/utils.h" -#include "wx/string.h" - -#include "wx/intl.h" -#include "wx/log.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "glib.h" -#include "gdk/gdk.h" -#include "gtk/gtk.h" -#include "gtk/gtkfeatures.h" -#include "gdk/gdkx.h" - -#ifdef __SVR4__ - #include -#endif - -#ifdef __SOLARIS__ -// somehow missing from sys/wait.h but in the system's docs -extern "C" -{ - pid_t wait4(pid_t pid, int *statusp, int options, struct rusage - *rusage); -} -#endif - -//------------------------------------------------------------------------ -// misc. -//------------------------------------------------------------------------ - -void wxBell(void) -{ - gdk_beep(); -} - -void wxSleep(int nSecs) -{ - sleep(nSecs); -} - -int wxKill(long pid, int sig) -{ - return kill(pid, sig); -} - -void wxDisplaySize( int *width, int *height ) -{ - if (width) *width = gdk_screen_width(); - if (height) *height = gdk_screen_height(); -} - -void wxGetMousePosition( int* x, int* y ) -{ - gdk_window_get_pointer( (GdkWindow*) NULL, x, y, (GdkModifierType*) NULL ); -} - -bool wxColourDisplay(void) -{ - return TRUE; -} - -int wxDisplayDepth(void) -{ - return gdk_window_get_visual( (GdkWindow*) &gdk_root_parent )->depth; -} - -int wxGetOsVersion(int *majorVsn, int *minorVsn) -{ - if (majorVsn) *majorVsn = GTK_MAJOR_VERSION; - if (minorVsn) *minorVsn = GTK_MINOR_VERSION; - - return wxGTK; -} - -//------------------------------------------------------------------------ -// user and home routines -//------------------------------------------------------------------------ - -const char* wxGetHomeDir( wxString *home ) -{ - *home = wxGetUserHome( wxString() ); - if (home->IsNull()) *home = "/"; - return *home; -} - -char *wxGetUserHome( const wxString &user ) -{ - struct passwd *who = (struct passwd *) NULL; - - if (user.IsNull() || (user== "")) - { - register char *ptr; - - if ((ptr = getenv("HOME")) != NULL) - { - return ptr; - } - if ((ptr = getenv("USER")) != NULL || (ptr = getenv("LOGNAME")) != NULL) - { - who = getpwnam(ptr); - } - - /* We now make sure the the user exists! */ - if (who == NULL) - { - who = getpwuid(getuid()); - } - } - else - { - who = getpwnam (user); - } - - return who ? who->pw_dir : (char*)NULL; -} - -//------------------------------------------------------------------------ -// id routines -//------------------------------------------------------------------------ - -bool wxGetHostName(char *buf, int sz) -{ - *buf = '\0'; -#if defined(__SVR4__) && !defined(__sgi) - //KB: does this return the fully qualified host.domain name? - return (sysinfo(SI_HOSTNAME, buf, sz) != -1); -#else /* BSD Sockets */ - char name[255], domain[255]; - //struct hostent *h; - // Get hostname - if (gethostname(name, sizeof(name)/sizeof(char)-1) == -1) - return FALSE; - if (getdomainname(domain, sizeof(domain)/sizeof(char)-1) == -1) - return FALSE; - // Get official full name of host - // doesn't return the full qualified name, replaced by following - // code (KB) - // strncpy(buf, (h=gethostbyname(name))!=NULL ? h->h_name : name, sz-1); - if((unsigned)sz > strlen(name)+strlen(domain)+1) - { - strcpy(buf, name); - if(strcmp(domain,"(none)") == 0) // standalone machine - { - strcat(buf,"."); - strcat(buf,domain); - } - } - else - return FALSE; - return TRUE; -#endif -} - -bool wxGetUserId(char *buf, int sz) -{ - struct passwd *who; - - *buf = '\0'; - if ((who = getpwuid(getuid ())) != NULL) { - strncpy (buf, who->pw_name, sz-1); - return TRUE; - } - return FALSE; -} - -bool wxGetUserName(char *buf, int sz) -{ - struct passwd *who; - char *comma; - - *buf = '\0'; - if ((who = getpwuid (getuid ())) != NULL) { - comma = strchr(who->pw_gecos,'c'); - if(comma) *comma = '\0'; // cut off non-name comment fields - strncpy (buf, who->pw_gecos, sz - 1); - return TRUE; - } - return FALSE; -} - -//------------------------------------------------------------------------ -// error and debug output routines -//------------------------------------------------------------------------ - -void wxDebugMsg( const char *format, ... ) -{ - va_list ap; - va_start( ap, format ); - vfprintf( stderr, format, ap ); - fflush( stderr ); - va_end(ap); -} - -void wxError( const wxString &msg, const wxString &title ) -{ - fprintf( stderr, "Error " ); - if (!title.IsNull()) fprintf( stderr, "%s ", WXSTRINGCAST(title) ); - if (!msg.IsNull()) fprintf( stderr, ": %s", WXSTRINGCAST(msg) ); - fprintf( stderr, ".\n" ); -} - -void wxFatalError( const wxString &msg, const wxString &title ) -{ - fprintf( stderr, "Error " ); - if (!title.IsNull()) fprintf( stderr, "%s ", WXSTRINGCAST(title) ); - if (!msg.IsNull()) fprintf( stderr, ": %s", WXSTRINGCAST(msg) ); - fprintf( stderr, ".\n" ); - exit(3); // the same exit code as for abort() -} - -//------------------------------------------------------------------------ -// directory routines -//------------------------------------------------------------------------ - -bool wxDirExists( const wxString& dir ) -{ - char buf[500]; - strcpy( buf, WXSTRINGCAST(dir) ); - struct stat sbuf; - return ((stat(buf, &sbuf) != -1) && S_ISDIR(sbuf.st_mode) ? TRUE : FALSE); -} - -//------------------------------------------------------------------------ -// subprocess routines -//------------------------------------------------------------------------ - -struct wxEndProcessData -{ - gint pid, tag; - wxProcess *process; -}; - -static void GTK_EndProcessDetector(gpointer data, gint source, - GdkInputCondition WXUNUSED(condition) ) -{ - wxEndProcessData *proc_data = (wxEndProcessData *)data; - int pid; - - pid = (proc_data->pid > 0) ? proc_data->pid : -(proc_data->pid); - - /* wait4 is not part of any standard, use at own risk - * not sure what wait4 does, but wait3 seems to be closest, whats a digit ;-) - * --- offer@sgi.com */ -#if !defined(__sgi) - wait4(proc_data->pid, (int*) NULL, 0, (rusage *) NULL); -#else - wait3((int *) NULL, 0, (rusage *) NULL); -#endif - - close(source); - gdk_input_remove(proc_data->tag); - - if (proc_data->process) - proc_data->process->OnTerminate(proc_data->pid); - - if (proc_data->pid > 0) - delete proc_data; - else - proc_data->pid = 0; -} - -long wxExecute( char **argv, bool sync, wxProcess *process ) -{ - wxEndProcessData *data = new wxEndProcessData; - int end_proc_detect[2]; - - wxCHECK_MSG( *argv, 0, "can't exec empty command" ); - - /* Create pipes */ - if (pipe(end_proc_detect) == -1) - { - wxLogSysError( "Pipe creation failed" ); - return 0; - } - - /* fork the process */ -#if defined(sun) || defined(__ultrix) || defined(__bsdi__) - pid_t pid = vfork(); -#else - pid_t pid = fork(); -#endif - if (pid == -1) - { - wxLogSysError( "Fork failed" ); - return 0; - } - else if (pid == 0) - { - // we're in child - close(end_proc_detect[0]); // close reading side - // These three lines close the open file descriptors to - // to avoid any input/output which might block the process - // or irritate the user. If one wants proper IO for the sub- - // process, the "right thing to do" is to start an xterm executing - // it. - close(STDIN_FILENO); - close(STDOUT_FILENO); - close(STDERR_FILENO); - -#ifdef _AIX - execvp ((const char *)*argv, (const char **)argv); -#else - execvp (*argv, argv); -#endif - // there is no return after successful exec() - wxLogSysError( "Can't execute '%s'", *argv); - - _exit(-1); - } - else - { - // we're in parent - close(end_proc_detect[1]); // close writing side - data->tag = gdk_input_add(end_proc_detect[0], GDK_INPUT_READ, - GTK_EndProcessDetector, (gpointer)data); - data->pid = pid; - if (!sync) - { - data->process = process; - } - else - { - data->process = (wxProcess *) NULL; - data->pid = -(data->pid); - - while (data->pid != 0) - wxYield(); - - delete data; - } - - // @@@ our return value indicates success even if execvp() in the child - // failed! - return pid; - } -} - -long wxExecute( const wxString& command, bool sync, wxProcess *process ) -{ - static const char *IFS = " \t\n"; - - wxCHECK_MSG( !command.IsEmpty(), 0, "can't exec empty command" ); - - int argc = 0; - char *argv[127]; - char *tmp = new char[command.Len() + 1]; - strcpy(tmp, command); - - argv[argc++] = strtok(tmp, IFS); - while ((argv[argc++] = strtok((char *) NULL, IFS)) != NULL) - /* loop */ ; - - long lRc = wxExecute(argv, sync, process); - - delete [] tmp; - - return lRc; -} diff --git a/src/gtk1/utilsres.cpp b/src/gtk1/utilsres.cpp deleted file mode 100644 index 52e3199178..0000000000 --- a/src/gtk1/utilsres.cpp +++ /dev/null @@ -1,353 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: utils.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling, Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -//#ifdef __GNUG__ -//#pragma implementation "utils.h" -//#endif - -#include "wx/utils.h" -#include "wx/string.h" -#include "wx/list.h" - -#include -#include -#include -#ifdef __SVR4__ -#include -#endif - -#include "gdk/gdkx.h" // GDK_DISPLAY -#include "gdk/gdkprivate.h" // gdk_progclass - -#include -#include -#include - -#include "wx/log.h" - -//----------------------------------------------------------------------------- -// constants -//----------------------------------------------------------------------------- - -// Yuck this is really BOTH site and platform dependent -// so we should use some other strategy! -#ifdef __SUN__ - #define DEFAULT_XRESOURCE_DIR "/usr/openwin/lib/app-defaults" -#else - #define DEFAULT_XRESOURCE_DIR "/usr/lib/X11/app-defaults" -#endif - -//----------------------------------------------------------------------------- -// glabal data (data.cpp) -//----------------------------------------------------------------------------- - -extern wxResourceCache *wxTheResourceCache; -extern XrmDatabase wxResourceDatabase; - -//----------------------------------------------------------------------------- -// utility functions for get/write resources -//----------------------------------------------------------------------------- - -static char *GetResourcePath(char *buf, char *name, bool create) -{ - if (create && FileExists(name)) - { - strcpy(buf, name); - return buf; // Exists so ... - } - if (*name == '/') - strcpy(buf, name); - else - { - // Put in standard place for resource files if not absolute - strcpy(buf, DEFAULT_XRESOURCE_DIR); - strcat(buf, "/"); - strcat(buf, FileNameFromPath(name)); - } - if (create) - { - // Touch the file to create it - FILE *fd = fopen(buf, "w"); - if (fd) fclose(fd); - } - return buf; -} - -// Read $HOME for what it says is home, if not -// read $USER or $LOGNAME for user name else determine -// the Real User, then determine the Real home dir. -static char *GetIniFile(char *dest, const char *filename) -{ - char *home = (char *) NULL; - if (filename && wxIsAbsolutePath(filename)) - { - strcpy(dest, filename); - } - else - { - if ((home = wxGetUserHome(wxString())) != NULL) - { - strcpy(dest, home); - if (dest[strlen(dest) - 1] != '/') strcat(dest, "/"); - if (filename == NULL) - { - if ((filename = getenv("XENVIRONMENT")) == NULL) filename = ".Xdefaults"; - } - else - if (*filename != '.') strcat(dest, "."); - strcat(dest, filename); - } - else - { - dest[0] = '\0'; - } - } - return dest; -} - -static void wxXMergeDatabases() -{ - XrmDatabase homeDB, serverDB, applicationDB; - char filenamebuf[1024]; - - char *filename = &filenamebuf[0]; - char *environment; - char *classname = gdk_progclass; // Robert Roebling ?? - char name[256]; - (void)strcpy(name, "/usr/lib/X11/app-defaults/"); - (void)strcat(name, classname ? classname : "wxWindows"); - - // Get application defaults file, if any - if ((applicationDB = XrmGetFileDatabase(name))) - (void)XrmMergeDatabases(applicationDB, &wxResourceDatabase); - - // Merge server defaults, created by xrdb, loaded as a property of the root - // window when the server initializes and loaded into the display - // structure on XOpenDisplay; - // if not defined, use .Xdefaults - if (XResourceManagerString(GDK_DISPLAY()) != NULL) - { - serverDB = XrmGetStringDatabase(XResourceManagerString(GDK_DISPLAY())); - } - else - { - (void)GetIniFile(filename, (char *) NULL); - serverDB = XrmGetFileDatabase(filename); - } - if (serverDB) - XrmMergeDatabases(serverDB, &wxResourceDatabase); - - // Open XENVIRONMENT file, or if not defined, the .Xdefaults, - // and merge into existing database - - if ((environment = getenv("XENVIRONMENT")) == NULL) - { - size_t len; - environment = GetIniFile(filename, (const char *) NULL); - len = strlen(environment); -#if !defined(SVR4) || defined(__sgi) - (void)gethostname(environment + len, 1024 - len); -#else - (void)sysinfo(SI_HOSTNAME, environment + len, 1024 - len); -#endif - } - if ((homeDB = XrmGetFileDatabase(environment))) - XrmMergeDatabases(homeDB, &wxResourceDatabase); -} - -//----------------------------------------------------------------------------- -// called on application exit -//----------------------------------------------------------------------------- - -void wxFlushResources() -{ - char nameBuffer[512]; - - wxNode *node = wxTheResourceCache->First(); - while (node) { - wxString str = node->GetKeyString(); - char *file = WXSTRINGCAST str; - // If file doesn't exist, create it first. - (void)GetResourcePath(nameBuffer, file, TRUE); - - XrmDatabase database = (XrmDatabase)node->Data(); - XrmPutFileDatabase(database, nameBuffer); - XrmDestroyDatabase(database); - wxNode *next = node->Next(); -// delete node; - node = next; - } -} - -void wxDeleteResources(const char *file) -{ - wxLogTrace(wxTraceResAlloc, "Delete: Number = %d", wxTheResourceCache->Number()); - char buffer[500]; - (void)GetIniFile(buffer, file); - - wxNode *node = wxTheResourceCache->Find(buffer); - if (node) { - XrmDatabase database = (XrmDatabase)node->Data(); - XrmDestroyDatabase(database); -// delete node; - } -} - -//----------------------------------------------------------------------------- -// resource functions -//----------------------------------------------------------------------------- - -bool wxWriteResource(const wxString& section, const wxString& entry, const wxString& value, const wxString& file ) -{ - char buffer[500]; - - if (!entry) return FALSE; - - (void)GetIniFile(buffer, file); - - XrmDatabase database; - wxNode *node = wxTheResourceCache->Find(buffer); - if (node) - database = (XrmDatabase)node->Data(); - else { - database = XrmGetFileDatabase(buffer); - wxLogTrace(wxTraceResAlloc, "Write: Number = %d", wxTheResourceCache->Number()); - wxTheResourceCache->Append(buffer, (wxObject *)database); - } - char resName[300]; - strcpy(resName, !section.IsNull() ? WXSTRINGCAST section : "wxWindows"); - strcat(resName, "."); - strcat(resName, entry); - XrmPutStringResource(&database, resName, value); - return TRUE; -}; - -bool wxWriteResource(const wxString& section, const wxString& entry, float value, const wxString& file ) -{ - char buf[50]; - sprintf(buf, "%.4f", value); - return wxWriteResource(section, entry, buf, file); -}; - -bool wxWriteResource(const wxString& section, const wxString& entry, long value, const wxString& file ) -{ - char buf[50]; - sprintf(buf, "%ld", value); - return wxWriteResource(section, entry, buf, file); -}; - -bool wxWriteResource(const wxString& section, const wxString& entry, int value, const wxString& file ) -{ - char buf[50]; - sprintf(buf, "%d", value); - return wxWriteResource(section, entry, buf, file); -}; - -bool wxGetResource(const wxString& section, const wxString& entry, char **value, const wxString& file ) -{ - if (!wxResourceDatabase) - wxXMergeDatabases(); - - XrmDatabase database; - if (!file.IsEmpty()) - { - char buffer[500]; - // Is this right? Trying to get it to look in the user's - // home directory instead of current directory -- JACS - (void)GetIniFile(buffer, file); - - wxNode *node = (wxNode*) NULL; /* suppress egcs warning */ - node = wxTheResourceCache->Find(buffer); - if (node) - { - database = (XrmDatabase)node->Data(); - } - else - { - database = XrmGetFileDatabase(buffer); - wxLogTrace(wxTraceResAlloc, "Get: Number = %d", wxTheResourceCache->Number()); - wxTheResourceCache->Append(buffer, (wxObject *)database); - } - } else - database = wxResourceDatabase; - - XrmValue xvalue; - char *str_type[20]; - char buf[150]; - strcpy(buf, section); - strcat(buf, "."); - strcat(buf, entry); - - bool success = XrmGetResource(database, buf, "*", str_type, &xvalue); - // Try different combinations of upper/lower case, just in case... - if (!success) - { - buf[0] = (isupper(buf[0]) ? tolower(buf[0]) : toupper(buf[0])); - success = XrmGetResource(database, buf, "*", str_type, &xvalue); - } - if (success) - { - if (*value) - delete[] *value; - *value = new char[xvalue.size + 1]; - strncpy(*value, xvalue.addr, (int)xvalue.size); - return TRUE; - } - return FALSE; -}; - -bool wxGetResource(const wxString& section, const wxString& entry, float *value, const wxString& file ) -{ - char *s = (char *) NULL; - bool succ = wxGetResource(section, entry, &s, file); - if (succ) - { - *value = (float)strtod(s, (char **) NULL); - delete[]s; - return TRUE; - } else - return FALSE; -}; - -bool wxGetResource(const wxString& section, const wxString& entry, long *value, const wxString& file ) -{ - char *s = (char *) NULL; - bool succ = wxGetResource(section, entry, &s, file); - if (succ) - { - *value = strtol(s, (char **) NULL, 10); - delete[]s; - return TRUE; - } else - return FALSE; -}; - -bool wxGetResource(const wxString& section, const wxString& entry, int *value, const wxString& file ) -{ - char *s = (char *) NULL; - bool succ = wxGetResource(section, entry, &s, file); - if (succ) - { - // Handle True, False here - // True, Yes, Enables, Set or Activated - if (*s == 'T' || *s == 'Y' || *s == 'E' || *s == 'S' || *s == 'A') - *value = TRUE; - // False, No, Disabled, Reset, Cleared, Deactivated - else if (*s == 'F' || *s == 'N' || *s == 'D' || *s == 'R' || *s == 'C') - *value = FALSE; - // Handle as Integer - else - *value = (int)strtol(s, (char **) NULL, 10); - delete[]s; - return TRUE; - } else - return FALSE; -}; - diff --git a/src/gtk1/verti.xbm b/src/gtk1/verti.xbm deleted file mode 100644 index 2dd9dc4c05..0000000000 --- a/src/gtk1/verti.xbm +++ /dev/null @@ -1,6 +0,0 @@ -#define verti_width 15 -#define verti_height 15 -static char verti_bits[] = { - 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, - 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, - 0x84, 0x10, 0x84, 0x10, 0x84, 0x10}; diff --git a/src/gtk1/wave.cpp b/src/gtk1/wave.cpp deleted file mode 100644 index 0801a93663..0000000000 --- a/src/gtk1/wave.cpp +++ /dev/null @@ -1,224 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: wave.cpp -// Purpose: wxWave -// Author: Marcel Rasche -// Modified by: -// Created: 25/10/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "wave.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#if defined(__BORLANDC__) -#pragma hdrstop -#endif - -#include -#include -#include -#include -#include - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include "wx/file.h" -#include "wx/wave.h" - -//----------------------------------------------------------------- -// wxWave -//----------------------------------------------------------------- - -wxWave::wxWave() - : m_waveLength(0), m_isResource(FALSE), m_waveData(NULL) -{ -} - -wxWave::wxWave(const wxString& sFileName, bool isResource) - : m_waveLength(0), m_isResource(isResource), m_waveData(NULL) -{ - Create(sFileName, isResource); -} - -wxWave::wxWave(int size, const wxByte* data) - : m_waveLength(0), m_isResource(FALSE), m_waveData(NULL) -{ - Create(size, data); -} - -wxWave::~wxWave() -{ - Free(); -} - -bool wxWave::Create(const wxString& fileName, bool isResource) -{ - Free(); - - if (isResource) - { - // todo - return (m_waveData ? TRUE : FALSE); - } - else - { - m_isResource = FALSE; - - wxFile fileWave; - if (!fileWave.Open(fileName, wxFile::read)) - { - return FALSE; - } - - m_waveLength = (int) fileWave.Length(); - - m_waveData = new wxByte[m_waveLength]; - if (!m_waveData) - { - return FALSE; - } - - fileWave.Read(m_waveData, m_waveLength); - - return TRUE; - } -} - -bool wxWave::Create(int size, const wxByte* data) -{ - Free(); - m_isResource = FALSE; - m_waveLength=size; - m_waveData = new wxByte[size]; - if (!m_waveData) - { - return FALSE; - } - - for (int i=0; i 65536) - return FALSE; - if ( ioctl(dev,SNDCTL_DSP_SAMPLESIZE,&iDataBits) < 0 ) - return FALSE; - if ( ioctl(dev,SNDCTL_DSP_STEREO,&iChannel) < 0 ) - return FALSE; - if ( ioctl(dev,SNDCTL_DSP_SPEED,&ulSamplingRate) < 0 ) - return FALSE; - - return TRUE; -} - diff --git a/src/gtk1/win_gtk.c b/src/gtk1/win_gtk.c deleted file mode 100644 index 0f2d927bea..0000000000 --- a/src/gtk1/win_gtk.c +++ /dev/null @@ -1,541 +0,0 @@ -/* /////////////////////////////////////////////////////////////////////////// -// Name: win_gtk.c -// Purpose: native GTK+ widget for wxWindows -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////// */ - -#include "wx/gtk/win_gtk.h" -#include - -/*------------------------------------------------------------------------- -// conditional compilation -//------------------------------------------------------------------------- */ - -#if (GTK_MINOR_VERSION == 1) -#if (GTK_MICRO_VERSION >= 5) -#define NEW_GTK_CONSTRUCT_CODE -#endif -#endif - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -static void gtk_myfixed_class_init (GtkMyFixedClass *klass); -static void gtk_myfixed_init (GtkMyFixed *myfixed); -static void gtk_myfixed_map (GtkWidget *widget); -#ifndef NEW_GTK_CONSTRUCT_CODE -static void gtk_myfixed_unmap (GtkWidget *widget); -#endif -static void gtk_myfixed_realize (GtkWidget *widget); -static void gtk_myfixed_size_request (GtkWidget *widget, - GtkRequisition *requisition); -static void gtk_myfixed_size_allocate (GtkWidget *widget, - GtkAllocation *allocation); -static void gtk_myfixed_paint (GtkWidget *widget, - GdkRectangle *area); -static void gtk_myfixed_draw (GtkWidget *widget, - GdkRectangle *area); -static gint gtk_myfixed_expose (GtkWidget *widget, - GdkEventExpose *event); -static void gtk_myfixed_add (GtkContainer *container, - GtkWidget *widget); -static void gtk_myfixed_remove (GtkContainer *container, - GtkWidget *widget); -static void gtk_myfixed_foreach (GtkContainer *container, -#if (GTK_MINOR_VERSION == 1) - gboolean include_internals, -#endif - GtkCallback callback, - gpointer callback_data); -#ifdef NEW_GTK_CONSTRUCT_CODE -static GtkType gtk_myfixed_child_type (GtkContainer *container); -#endif - - -static GtkContainerClass *parent_class = NULL; - - -guint -gtk_myfixed_get_type () -{ - static guint myfixed_type = 0; - - if (!myfixed_type) - { - GtkTypeInfo myfixed_info = - { - "GtkMyFixed", - sizeof (GtkMyFixed), - sizeof (GtkMyFixedClass), - (GtkClassInitFunc) gtk_myfixed_class_init, - (GtkObjectInitFunc) gtk_myfixed_init, -#ifndef NEW_GTK_CONSTRUCT_CODE - (GtkArgSetFunc) NULL, - (GtkArgGetFunc) NULL, -#else - /* reserved_1 */ NULL, - /* reserved_2 */ NULL, - (GtkClassInitFunc) NULL, -#endif - }; - - myfixed_type = gtk_type_unique (gtk_container_get_type (), &myfixed_info); - } - - return myfixed_type; -} - -static void -gtk_myfixed_class_init (GtkMyFixedClass *klass) -{ - GtkObjectClass *object_class; - GtkWidgetClass *widget_class; - GtkContainerClass *container_class; - - object_class = (GtkObjectClass*) klass; - widget_class = (GtkWidgetClass*) klass; - container_class = (GtkContainerClass*) klass; - -#ifndef NEW_GTK_CONSTRUCT_CODE - parent_class = gtk_type_class (gtk_container_get_type ()); -#else - parent_class = gtk_type_class (GTK_TYPE_CONTAINER); -#endif - - widget_class->map = gtk_myfixed_map; -#ifndef NEW_GTK_CONSTRUCT_CODE - widget_class->unmap = gtk_myfixed_unmap; -#endif - widget_class->realize = gtk_myfixed_realize; - widget_class->size_request = gtk_myfixed_size_request; - widget_class->size_allocate = gtk_myfixed_size_allocate; - widget_class->draw = gtk_myfixed_draw; - widget_class->expose_event = gtk_myfixed_expose; - - container_class->add = gtk_myfixed_add; - container_class->remove = gtk_myfixed_remove; -#if (GTK_MINOR_VERSION == 1) - container_class->forall = gtk_myfixed_foreach; -#else - container_class->foreach = gtk_myfixed_foreach; -#endif - -#ifdef NEW_GTK_CONSTRUCT_CODE - container_class->child_type = gtk_myfixed_child_type; -#endif -} - -#ifdef NEW_GTK_CONSTRUCT_CODE -static GtkType -gtk_myfixed_child_type (GtkContainer *container) -{ - return GTK_TYPE_WIDGET; -} -#endif - -static void -gtk_myfixed_init (GtkMyFixed *myfixed) -{ - GTK_WIDGET_UNSET_FLAGS (myfixed, GTK_NO_WINDOW); - -#ifndef NEW_GTK_CONSTRUCT_CODE - GTK_WIDGET_SET_FLAGS (myfixed, GTK_BASIC); -#endif - - myfixed->children = NULL; -} - -GtkWidget* -gtk_myfixed_new () -{ - GtkMyFixed *myfixed; - - myfixed = gtk_type_new (gtk_myfixed_get_type ()); - - return GTK_WIDGET (myfixed); -} - -void -gtk_myfixed_put (GtkMyFixed *myfixed, - GtkWidget *widget, - gint16 x, - gint16 y) -{ - GtkMyFixedChild *child_info; - - g_return_if_fail (myfixed != NULL); - g_return_if_fail (GTK_IS_MYFIXED (myfixed)); - g_return_if_fail (widget != NULL); - - child_info = g_new (GtkMyFixedChild, 1); - child_info->widget = widget; - child_info->x = x; - child_info->y = y; - - gtk_widget_set_parent (widget, GTK_WIDGET (myfixed)); - - myfixed->children = g_list_append (myfixed->children, child_info); - - if (GTK_WIDGET_REALIZED (myfixed) && !GTK_WIDGET_REALIZED (widget)) - gtk_widget_realize (widget); - - if (GTK_WIDGET_MAPPED (myfixed) && !GTK_WIDGET_MAPPED (widget)) - gtk_widget_map (widget); - - if (GTK_WIDGET_VISIBLE (widget) && GTK_WIDGET_VISIBLE (myfixed)) - gtk_widget_queue_resize (GTK_WIDGET (myfixed)); -} - -void -gtk_myfixed_move (GtkMyFixed *myfixed, - GtkWidget *widget, - gint16 x, - gint16 y) -{ - GtkMyFixedChild *child; - GList *children; - - g_return_if_fail (myfixed != NULL); - g_return_if_fail (GTK_IS_MYFIXED (myfixed)); - g_return_if_fail (widget != NULL); - - children = myfixed->children; - while (children) - { - child = children->data; - children = children->next; - - if (child->widget == widget) - { - if ((child->x == x) && (child->y == y)) return; - - child->x = x; - child->y = y; - - if (GTK_WIDGET_VISIBLE (widget) && GTK_WIDGET_VISIBLE (myfixed)) - gtk_widget_queue_resize (GTK_WIDGET (myfixed)); - - break; - } - } -} - -static void -gtk_myfixed_map (GtkWidget *widget) -{ - GtkMyFixed *myfixed; - GtkMyFixedChild *child; - GList *children; - - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_MYFIXED (widget)); - - GTK_WIDGET_SET_FLAGS (widget, GTK_MAPPED); - myfixed = GTK_MYFIXED (widget); - - gdk_window_show (widget->window); - - children = myfixed->children; - while (children) - { - child = children->data; - children = children->next; - - if (GTK_WIDGET_VISIBLE (child->widget) && - !GTK_WIDGET_MAPPED (child->widget)) - gtk_widget_map (child->widget); - } -} - -#ifndef NEW_GTK_CONSTRUCT_CODE -static void -gtk_myfixed_unmap (GtkWidget *widget) -{ - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_MYFIXED (widget)); - - GTK_WIDGET_UNSET_FLAGS (widget, GTK_MAPPED); -} -#endif - -static void -gtk_myfixed_realize (GtkWidget *widget) -{ - GtkMyFixed *myfixed; - GdkWindowAttr attributes; - gint attributes_mask; - - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_MYFIXED (widget)); - - myfixed = GTK_MYFIXED (widget); - - GTK_WIDGET_SET_FLAGS (widget, GTK_REALIZED); - - attributes.window_type = GDK_WINDOW_CHILD; - attributes.x = widget->allocation.x; - attributes.y = widget->allocation.y; - attributes.width = 32000; - attributes.height = 32000; - attributes.wclass = GDK_INPUT_OUTPUT; - attributes.visual = gtk_widget_get_visual (widget); - attributes.colormap = gtk_widget_get_colormap (widget); - attributes.event_mask = gtk_widget_get_events (widget); - attributes.event_mask |= - GDK_EXPOSURE_MASK | - GDK_POINTER_MOTION_MASK | - GDK_POINTER_MOTION_HINT_MASK | - GDK_BUTTON_MOTION_MASK | - GDK_BUTTON1_MOTION_MASK | - GDK_BUTTON2_MOTION_MASK | - GDK_BUTTON3_MOTION_MASK | - GDK_BUTTON_PRESS_MASK | - GDK_BUTTON_RELEASE_MASK | - GDK_KEY_PRESS_MASK | - GDK_KEY_RELEASE_MASK | - GDK_ENTER_NOTIFY_MASK | - GDK_LEAVE_NOTIFY_MASK | - GDK_FOCUS_CHANGE_MASK; - - attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP; - - widget->window = gdk_window_new (gtk_widget_get_parent_window (widget), &attributes, - attributes_mask); - gdk_window_set_user_data (widget->window, widget); - - widget->style = gtk_style_attach (widget->style, widget->window); - gtk_style_set_background (widget->style, widget->window, GTK_STATE_NORMAL); -} - -static void -gtk_myfixed_size_request (GtkWidget *widget, - GtkRequisition *requisition) -{ - GtkMyFixed *myfixed; - GtkMyFixedChild *child; - GList *children; - - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_MYFIXED (widget)); - g_return_if_fail (requisition != NULL); - - myfixed = GTK_MYFIXED (widget); - - requisition->width = 0; - requisition->height = 0; - - children = myfixed->children; - while (children) - { - child = children->data; - children = children->next; - - if (GTK_WIDGET_VISIBLE (child->widget)) - { - gtk_widget_size_request (child->widget, &child->widget->requisition); - } - } -} - -static void -gtk_myfixed_size_allocate (GtkWidget *widget, - GtkAllocation *allocation) -{ - GtkMyFixed *myfixed; - GtkMyFixedChild *child; - GtkAllocation child_allocation; - GList *children; - guint16 border_width; - - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_MYFIXED(widget)); - g_return_if_fail (allocation != NULL); - - myfixed = GTK_MYFIXED (widget); - - widget->allocation = *allocation; - if (GTK_WIDGET_REALIZED (widget)) - gdk_window_move_resize (widget->window, allocation->x, allocation->y, 32000, 32000 ); - - border_width = GTK_CONTAINER (myfixed)->border_width; - - children = myfixed->children; - while (children) - { - child = children->data; - children = children->next; - - if (GTK_WIDGET_VISIBLE (child->widget)) - { - child_allocation.x = child->x + border_width; - child_allocation.y = child->y + border_width; - child_allocation.width = child->widget->requisition.width; - child_allocation.height = child->widget->requisition.height; - gtk_widget_size_allocate (child->widget, &child_allocation); - } - } -} - -static void -gtk_myfixed_paint (GtkWidget *widget, - GdkRectangle *area) -{ - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_MYFIXED (widget)); - g_return_if_fail (area != NULL); - - if (GTK_WIDGET_DRAWABLE (widget)) - gdk_window_clear_area (widget->window, - area->x, area->y, - area->width, area->height); -} - -static void -gtk_myfixed_draw (GtkWidget *widget, - GdkRectangle *area) -{ - GtkMyFixed *myfixed; - GtkMyFixedChild *child; - GdkRectangle child_area; - GList *children; - - g_return_if_fail (widget != NULL); - g_return_if_fail (GTK_IS_MYFIXED (widget)); - - if (GTK_WIDGET_DRAWABLE (widget)) - { - myfixed = GTK_MYFIXED (widget); - gtk_myfixed_paint (widget, area); - - children = myfixed->children; - while (children) - { - child = children->data; - children = children->next; - - if (gtk_widget_intersect (child->widget, area, &child_area)) - gtk_widget_draw (child->widget, &child_area); - } - } -} - -static gint -gtk_myfixed_expose (GtkWidget *widget, - GdkEventExpose *event) -{ - GtkMyFixed *myfixed; - GtkMyFixedChild *child; - GdkEventExpose child_event; - GList *children; - - g_return_val_if_fail (widget != NULL, FALSE); - g_return_val_if_fail (GTK_IS_MYFIXED (widget), FALSE); - g_return_val_if_fail (event != NULL, FALSE); - - if (GTK_WIDGET_DRAWABLE (widget)) - { - myfixed = GTK_MYFIXED (widget); - - child_event = *event; - - children = myfixed->children; - while (children) - { - child = children->data; - children = children->next; - - if (GTK_WIDGET_NO_WINDOW (child->widget) && - gtk_widget_intersect (child->widget, &event->area, - &child_event.area)) - gtk_widget_event (child->widget, (GdkEvent*) &child_event); - } - } - - return FALSE; -} - -static void -gtk_myfixed_add (GtkContainer *container, - GtkWidget *widget) -{ - g_return_if_fail (container != NULL); - g_return_if_fail (GTK_IS_MYFIXED (container)); - g_return_if_fail (widget != NULL); - - gtk_myfixed_put (GTK_MYFIXED (container), widget, 0, 0); -} - -static void -gtk_myfixed_remove (GtkContainer *container, - GtkWidget *widget) -{ - GtkMyFixed *myfixed; - GtkMyFixedChild *child; - GList *children; - - g_return_if_fail (container != NULL); - g_return_if_fail (GTK_IS_MYFIXED (container)); - g_return_if_fail (widget != NULL); - - myfixed = GTK_MYFIXED (container); - - children = myfixed->children; - while (children) - { - child = children->data; - - if (child->widget == widget) - { - gtk_widget_unparent (widget); - - myfixed->children = g_list_remove_link (myfixed->children, children); - g_list_free (children); - g_free (child); - - if (GTK_WIDGET_VISIBLE (widget) && GTK_WIDGET_VISIBLE (container)) - gtk_widget_queue_resize (GTK_WIDGET (container)); - - break; - } - - children = children->next; - } -} - -static void -gtk_myfixed_foreach (GtkContainer *container, -#if (GTK_MINOR_VERSION == 1) - gboolean include_internals, -#endif - GtkCallback callback, - gpointer callback_data) -{ - GtkMyFixed *myfixed; - GtkMyFixedChild *child; - GList *children; - - g_return_if_fail (container != NULL); - g_return_if_fail (GTK_IS_MYFIXED (container)); - g_return_if_fail (callback != NULL); - - myfixed = GTK_MYFIXED (container); - - children = myfixed->children; - while (children) - { - child = children->data; - children = children->next; - - (* callback) (child->widget, callback_data); - } -} - - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - diff --git a/src/gtk1/window.cpp b/src/gtk1/window.cpp deleted file mode 100644 index 9b1cb42717..0000000000 --- a/src/gtk1/window.cpp +++ /dev/null @@ -1,3526 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: window.cpp -// Purpose: -// Author: Robert Roebling -// Id: $Id$ -// Copyright: (c) 1998 Robert Roebling, Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -#ifdef __GNUG__ -#pragma implementation "window.h" -#endif - -#include "wx/defs.h" -#include "wx/window.h" -#include "wx/dc.h" -#include "wx/frame.h" -#include "wx/app.h" -#include "wx/layout.h" -#include "wx/utils.h" -#include "wx/dialog.h" -#include "wx/msgdlg.h" -#if wxUSE_DRAG_AND_DROP -#include "wx/dnd.h" -#endif -#include "wx/tooltip.h" -#include "wx/menu.h" -#include "wx/statusbr.h" -#include "wx/intl.h" -#include "wx/settings.h" -#include "wx/log.h" - -#include - -#include "gdk/gdk.h" -#include "gtk/gtk.h" -#include "gdk/gdkprivate.h" -#include "gdk/gdkkeysyms.h" -#include "wx/gtk/win_gtk.h" - -//----------------------------------------------------------------------------- -// documentation on internals -//----------------------------------------------------------------------------- - -/* - I have been asked several times about writing some documentation about - the GTK port of wxWindows, especially its internal structures. Obviously, - you cannot understand wxGTK without knowing a little about the GTK, but - some more information about what the wxWindow, which is the base class - for all other window classes, does seems required as well. - - What does wxWindow do? It contains the common interface for the following - jobs of its descendants: - - 1) Define the rudimentary behaviour common to all window classes, such as - resizing, intercepting user input (so as to make it possible to use these - events for special purposes in a derived class), window names etc. - - 2) Provide the possibility to contain and manage children, if the derived - class is allowed to contain children, which holds true for those window - classes which do not display a native GTK widget. To name them, these - classes are wxPanel, wxScrolledWindow, wxDialog, wxFrame. The MDI frame- - work classes are a special case and are handled a bit differently from - the rest. The same holds true for the wxNotebook class. - - 3) Provide the possibility to draw into a client area of a window. This, - too, only holds true for classes that do not display a native GTK widget - as above. - - 4) Provide the entire mechanism for scrolling widgets. This actual inter- - face for this is usually in wxScrolledWindow, but the GTK implementation - is in this class. - - 5) A multitude of helper or extra methods for special purposes, such as - Drag'n'Drop, managing validators etc. - - Normally one might expect, that one wxWindows window would always correspond - to one GTK widget. Under GTK, there is no such allround widget that has all - the functionality. Moreover, the GTK defines a client area as a different - widget from the actual widget you are handling. Last but not least some - special classes (e.g. wxFrame) handle different categories of widgets and - still have the possibility to draw something in the client area. - It was therefore required to write a special purpose GTK widget, that would - represent a client area in the sense of wxWindows capable to do the jobs - 2), 3) and 4). I have written this class and it resides in win_gtk.c of - this directory. - - All windows must have a widget, with which they interact with other under- - lying GTK widgets. It is this widget, e.g. that has to be resized etc and - thw wxWindow class has a member variable called m_widget which holds a - pointer to this widget. When the window class represents a GTK native widget, - this is (in most cases) the only GTK widget the class manages. E.g. the - wxStatitText class handles only a GtkLabel widget a pointer to which you - can find in m_widget (defined in wxWindow) - - When the class has a client area for drawing into and for containing children - it has to handle the client area widget (of the type GtkMyFixed, defined in - win_gtk.c), but there could be any number of widgets, handled by a class - The common rule for all windows is only, that the widget that interacts with - the rest of GTK must be referenced in m_widget and all other widgets must be - children of this widget on the GTK level. The top-most widget, which also - represents the client area, must be in the m_wxwindow field and must be of - the type GtkMyFixed. - - As I said, the window classes that display a GTK native widget only have - one widget, so in the case of e.g. the wxButton class m_widget holds a - pointer to a GtkButton widget. But windows with client areas (for drawing - and children) have a m_widget field that is a pointer to a GtkScrolled- - Window and a m_wxwindow field that is pointer to a GtkMyFixed and this - one is (in the GTK sense) a child of the GtkScrolledWindow. - - If the m_wxwindow field is set, then all input to this widget is inter- - cepted and sent to the wxWindows class. If not, all input to the widget - that gets pointed to by m_widget gets intercepted and sent to the class. - -*/ - -//------------------------------------------------------------------------- -// conditional compilation -//------------------------------------------------------------------------- - -#if (GTK_MINOR_VERSION == 1) -#if (GTK_MICRO_VERSION >= 5) -#define NEW_GTK_SCROLL_CODE -#endif -#endif - -//----------------------------------------------------------------------------- -// (debug) -//----------------------------------------------------------------------------- - -#ifdef __WXDEBUG__ - -static gint gtk_debug_focus_in_callback( GtkWidget *WXUNUSED(widget), - GdkEvent *WXUNUSED(event), - const char *name ) -{ - printf( "FOCUS NOW AT: " ); - printf( name ); - printf( "\n" ); - - return FALSE; -} - -void debug_focus_in( GtkWidget* widget, const char* name, const char *window ) -{ - return; - - wxString tmp = name; - tmp += " FROM "; - tmp += window; - - char *s = new char[tmp.Length()+1]; - - strcpy( s, WXSTRINGCAST tmp ); - - gtk_signal_connect( GTK_OBJECT(widget), "focus_in_event", - GTK_SIGNAL_FUNC(gtk_debug_focus_in_callback), (gpointer)s ); -} - -#endif - -//----------------------------------------------------------------------------- -// data -//----------------------------------------------------------------------------- - -extern wxList wxPendingDelete; -extern wxList wxTopLevelWindows; -extern bool g_blockEventsOnDrag; -extern bool g_blockEventsOnScroll; -static bool g_capturing = FALSE; -static wxWindow *g_focusWindow = (wxWindow*) NULL; - -// hack: we need something to pass to gtk_menu_popup, so we store the time of -// the last click here -static guint32 gs_timeLastClick = 0; - -//----------------------------------------------------------------------------- -// "expose_event" (of m_wxwindow, not of m_widget) -//----------------------------------------------------------------------------- - -static void gtk_window_expose_callback( GtkWidget *WXUNUSED(widget), GdkEventExpose *gdk_event, wxWindow *win ) -{ - if (!win->HasVMT()) return; - - win->m_updateRegion.Union( gdk_event->area.x, - gdk_event->area.y, - gdk_event->area.width, - gdk_event->area.height ); - - if (gdk_event->count > 0) return; - -/* - printf( "OnExpose from " ); - if (win->GetClassInfo() && win->GetClassInfo()->GetClassName()) - printf( win->GetClassInfo()->GetClassName() ); - printf( ".\n" ); -*/ - - wxPaintEvent event( win->GetId() ); - event.SetEventObject( win ); - win->GetEventHandler()->ProcessEvent( event ); - - win->m_updateRegion.Clear(); -} - -//----------------------------------------------------------------------------- -// "draw" (of m_wxwindow, not of m_widget) -//----------------------------------------------------------------------------- - -static void gtk_window_draw_callback( GtkWidget *WXUNUSED(widget), GdkRectangle *rect, wxWindow *win ) -{ - if (!win->HasVMT()) return; - - win->m_updateRegion.Union( rect->x, rect->y, rect->width, rect->height ); - - wxPaintEvent event( win->GetId() ); - event.SetEventObject( win ); - win->GetEventHandler()->ProcessEvent( event ); - - win->m_updateRegion.Clear(); -} - -//----------------------------------------------------------------------------- -// "key_press_event" from any window -//----------------------------------------------------------------------------- - -static gint gtk_window_key_press_callback( GtkWidget *widget, GdkEventKey *gdk_event, wxWindow *win ) -{ - if (!win->HasVMT()) return FALSE; - if (g_blockEventsOnDrag) return FALSE; - -/* - printf( "OnKeyPress from " ); - if (win->GetClassInfo() && win->GetClassInfo()->GetClassName()) - printf( win->GetClassInfo()->GetClassName() ); - printf( ".\n" ); -*/ - - long key_code = 0; - switch (gdk_event->keyval) - { - case GDK_BackSpace: key_code = WXK_BACK; break; - case GDK_Tab: key_code = WXK_TAB; break; - case GDK_Linefeed: key_code = WXK_RETURN; break; - case GDK_Clear: key_code = WXK_CLEAR; break; - case GDK_Return: key_code = WXK_RETURN; break; - case GDK_Pause: key_code = WXK_PAUSE; break; - case GDK_Scroll_Lock: key_code = WXK_SCROLL; break; - case GDK_Escape: key_code = WXK_ESCAPE; break; - case GDK_Delete: key_code = WXK_DELETE; break; - case GDK_Home: key_code = WXK_HOME; break; - case GDK_Left: key_code = WXK_LEFT; break; - case GDK_Up: key_code = WXK_UP; break; - case GDK_Right: key_code = WXK_RIGHT; break; - case GDK_Down: key_code = WXK_DOWN; break; - case GDK_Prior: key_code = WXK_PRIOR; break; -// case GDK_Page_Up: key_code = WXK_PAGEUP; break; - case GDK_Next: key_code = WXK_NEXT; break; -// case GDK_Page_Down: key_code = WXK_PAGEDOWN; break; - case GDK_End: key_code = WXK_END; break; - case GDK_Begin: key_code = WXK_HOME; break; - case GDK_Select: key_code = WXK_SELECT; break; - case GDK_Print: key_code = WXK_PRINT; break; - case GDK_Execute: key_code = WXK_EXECUTE; break; - case GDK_Insert: key_code = WXK_INSERT; break; - case GDK_Num_Lock: key_code = WXK_NUMLOCK; break; - case GDK_KP_Tab: key_code = WXK_TAB; break; - case GDK_KP_Enter: key_code = WXK_RETURN; break; - case GDK_KP_Home: key_code = WXK_HOME; break; - case GDK_KP_Left: key_code = WXK_LEFT; break; - case GDK_KP_Up: key_code = WXK_UP; break; - case GDK_KP_Right: key_code = WXK_RIGHT; break; - case GDK_KP_Down: key_code = WXK_DOWN; break; - case GDK_KP_Prior: key_code = WXK_PRIOR; break; -// case GDK_KP_Page_Up: key_code = WXK_PAGEUP; break; - case GDK_KP_Next: key_code = WXK_NEXT; break; -// case GDK_KP_Page_Down: key_code = WXK_PAGEDOWN; break; - case GDK_KP_End: key_code = WXK_END; break; - case GDK_KP_Begin: key_code = WXK_HOME; break; - case GDK_KP_Insert: key_code = WXK_INSERT; break; - case GDK_KP_Delete: key_code = WXK_DELETE; break; - case GDK_KP_Multiply: key_code = WXK_MULTIPLY; break; - case GDK_KP_Add: key_code = WXK_ADD; break; - case GDK_KP_Separator: key_code = WXK_SEPARATOR; break; - case GDK_KP_Subtract: key_code = WXK_SUBTRACT; break; - case GDK_KP_Decimal: key_code = WXK_DECIMAL; break; - case GDK_KP_Divide: key_code = WXK_DIVIDE; break; - case GDK_KP_0: key_code = WXK_NUMPAD0; break; - case GDK_KP_1: key_code = WXK_NUMPAD1; break; - case GDK_KP_2: key_code = WXK_NUMPAD2; break; - case GDK_KP_3: key_code = WXK_NUMPAD3; break; - case GDK_KP_4: key_code = WXK_NUMPAD4; break; - case GDK_KP_5: key_code = WXK_NUMPAD5; break; - case GDK_KP_6: key_code = WXK_NUMPAD6; break; - case GDK_KP_7: key_code = WXK_NUMPAD7; break; - case GDK_KP_8: key_code = WXK_NUMPAD7; break; - case GDK_KP_9: key_code = WXK_NUMPAD9; break; - case GDK_F1: key_code = WXK_F1; break; - case GDK_F2: key_code = WXK_F2; break; - case GDK_F3: key_code = WXK_F3; break; - case GDK_F4: key_code = WXK_F4; break; - case GDK_F5: key_code = WXK_F5; break; - case GDK_F6: key_code = WXK_F6; break; - case GDK_F7: key_code = WXK_F7; break; - case GDK_F8: key_code = WXK_F8; break; - case GDK_F9: key_code = WXK_F9; break; - case GDK_F10: key_code = WXK_F10; break; - case GDK_F11: key_code = WXK_F11; break; - case GDK_F12: key_code = WXK_F12; break; - default: - { - if ((gdk_event->keyval >= 0x20) && (gdk_event->keyval <= 0xFF)) - key_code = gdk_event->keyval; - } - } - - if (!key_code) return FALSE; - - wxKeyEvent event( wxEVT_KEY_DOWN ); - event.m_shiftDown = (gdk_event->state & GDK_SHIFT_MASK); - event.m_controlDown = (gdk_event->state & GDK_CONTROL_MASK); - event.m_altDown = (gdk_event->state & GDK_MOD1_MASK); - event.m_metaDown = (gdk_event->state & GDK_MOD2_MASK); - event.m_keyCode = key_code; - event.m_x = 0; - event.m_y = 0; - event.SetEventObject( win ); - - bool ret = win->GetEventHandler()->ProcessEvent( event ); - - if (!ret) - { - wxWindow *ancestor = win; - while (ancestor) - { - int command = ancestor->GetAcceleratorTable()->GetCommand( event ); - if (command != -1) - { - wxCommandEvent command_event( wxEVT_COMMAND_MENU_SELECTED, command ); - ret = ancestor->GetEventHandler()->ProcessEvent( command_event ); - break; - } - ancestor = ancestor->GetParent(); - } - } - - // win is a control: tab can be propagated up - if ((!ret) && (gdk_event->keyval == GDK_Tab)) - { - wxNavigationKeyEvent new_event; - new_event.SetDirection( !(gdk_event->state & GDK_SHIFT_MASK) ); - new_event.SetWindowChange( FALSE ); - new_event.SetCurrentFocus( win ); - ret = win->GetEventHandler()->ProcessEvent( new_event ); - } - -/* - // win is a panel: up can be propagated to the panel - if ((!ret) && (win->m_wxwindow) && (win->m_parent) && (win->m_parent->AcceptsFocus()) && - (gdk_event->keyval == GDK_Up)) - { - win->m_parent->SetFocus(); - ret = TRUE; - } - - // win is a panel: left/right can be propagated to the panel - if ((!ret) && (win->m_wxwindow) && - ((gdk_event->keyval == GDK_Right) || (gdk_event->keyval == GDK_Left) || - (gdk_event->keyval == GDK_Up) || (gdk_event->keyval == GDK_Down))) - { - wxNavigationKeyEvent new_event; - new_event.SetDirection( (gdk_event->keyval == GDK_Right) || (gdk_event->keyval == GDK_Down) ); - new_event.SetCurrentFocus( win ); - ret = win->GetEventHandler()->ProcessEvent( new_event ); - } -*/ - - if (ret) - { - gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "key_press_event" ); - } - - return ret; -} - -//----------------------------------------------------------------------------- -// "key_release_event" from any window -//----------------------------------------------------------------------------- - -static gint gtk_window_key_release_callback( GtkWidget *widget, GdkEventKey *gdk_event, wxWindow *win ) -{ - if (!win->HasVMT()) return FALSE; - if (g_blockEventsOnDrag) return FALSE; - -/* - printf( "OnKeyRelease from " ); - if (win->GetClassInfo() && win->GetClassInfo()->GetClassName()) - printf( win->GetClassInfo()->GetClassName() ); - printf( ".\n" ); -*/ - - long key_code = 0; - switch (gdk_event->keyval) - { - case GDK_BackSpace: key_code = WXK_BACK; break; - case GDK_Tab: key_code = WXK_TAB; break; - case GDK_Linefeed: key_code = WXK_RETURN; break; - case GDK_Clear: key_code = WXK_CLEAR; break; - case GDK_Return: key_code = WXK_RETURN; break; - case GDK_Pause: key_code = WXK_PAUSE; break; - case GDK_Scroll_Lock: key_code = WXK_SCROLL; break; - case GDK_Escape: key_code = WXK_ESCAPE; break; - case GDK_Delete: key_code = WXK_DELETE; break; - case GDK_Home: key_code = WXK_HOME; break; - case GDK_Left: key_code = WXK_LEFT; break; - case GDK_Up: key_code = WXK_UP; break; - case GDK_Right: key_code = WXK_RIGHT; break; - case GDK_Down: key_code = WXK_DOWN; break; - case GDK_Prior: key_code = WXK_PRIOR; break; -// case GDK_Page_Up: key_code = WXK_PAGEUP; break; - case GDK_Next: key_code = WXK_NEXT; break; -// case GDK_Page_Down: key_code = WXK_PAGEDOWN; break; - case GDK_End: key_code = WXK_END; break; - case GDK_Begin: key_code = WXK_HOME; break; - case GDK_Select: key_code = WXK_SELECT; break; - case GDK_Print: key_code = WXK_PRINT; break; - case GDK_Execute: key_code = WXK_EXECUTE; break; - case GDK_Insert: key_code = WXK_INSERT; break; - case GDK_Num_Lock: key_code = WXK_NUMLOCK; break; - case GDK_KP_Tab: key_code = WXK_TAB; break; - case GDK_KP_Enter: key_code = WXK_RETURN; break; - case GDK_KP_Home: key_code = WXK_HOME; break; - case GDK_KP_Left: key_code = WXK_LEFT; break; - case GDK_KP_Up: key_code = WXK_UP; break; - case GDK_KP_Right: key_code = WXK_RIGHT; break; - case GDK_KP_Down: key_code = WXK_DOWN; break; - case GDK_KP_Prior: key_code = WXK_PRIOR; break; -// case GDK_KP_Page_Up: key_code = WXK_PAGEUP; break; - case GDK_KP_Next: key_code = WXK_NEXT; break; -// case GDK_KP_Page_Down: key_code = WXK_PAGEDOWN; break; - case GDK_KP_End: key_code = WXK_END; break; - case GDK_KP_Begin: key_code = WXK_HOME; break; - case GDK_KP_Insert: key_code = WXK_INSERT; break; - case GDK_KP_Delete: key_code = WXK_DELETE; break; - case GDK_KP_Multiply: key_code = WXK_MULTIPLY; break; - case GDK_KP_Add: key_code = WXK_ADD; break; - case GDK_KP_Separator: key_code = WXK_SEPARATOR; break; - case GDK_KP_Subtract: key_code = WXK_SUBTRACT; break; - case GDK_KP_Decimal: key_code = WXK_DECIMAL; break; - case GDK_KP_Divide: key_code = WXK_DIVIDE; break; - case GDK_KP_0: key_code = WXK_NUMPAD0; break; - case GDK_KP_1: key_code = WXK_NUMPAD1; break; - case GDK_KP_2: key_code = WXK_NUMPAD2; break; - case GDK_KP_3: key_code = WXK_NUMPAD3; break; - case GDK_KP_4: key_code = WXK_NUMPAD4; break; - case GDK_KP_5: key_code = WXK_NUMPAD5; break; - case GDK_KP_6: key_code = WXK_NUMPAD6; break; - case GDK_KP_7: key_code = WXK_NUMPAD7; break; - case GDK_KP_8: key_code = WXK_NUMPAD7; break; - case GDK_KP_9: key_code = WXK_NUMPAD9; break; - case GDK_F1: key_code = WXK_F1; break; - case GDK_F2: key_code = WXK_F2; break; - case GDK_F3: key_code = WXK_F3; break; - case GDK_F4: key_code = WXK_F4; break; - case GDK_F5: key_code = WXK_F5; break; - case GDK_F6: key_code = WXK_F6; break; - case GDK_F7: key_code = WXK_F7; break; - case GDK_F8: key_code = WXK_F8; break; - case GDK_F9: key_code = WXK_F9; break; - case GDK_F10: key_code = WXK_F10; break; - case GDK_F11: key_code = WXK_F11; break; - case GDK_F12: key_code = WXK_F12; break; - default: - { - if ((gdk_event->keyval >= 0x20) && (gdk_event->keyval <= 0xFF)) - key_code = gdk_event->keyval; - } - } - - if (!key_code) return FALSE; - - wxKeyEvent event( wxEVT_KEY_UP ); - event.m_shiftDown = (gdk_event->state & GDK_SHIFT_MASK); - event.m_controlDown = (gdk_event->state & GDK_CONTROL_MASK); - event.m_altDown = (gdk_event->state & GDK_MOD1_MASK); - event.m_metaDown = (gdk_event->state & GDK_MOD2_MASK); - event.m_keyCode = key_code; - event.m_x = 0; - event.m_y = 0; - event.SetEventObject( win ); - - bool ret = win->GetEventHandler()->ProcessEvent( event ); - - if (ret) - { - gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "key_press_event" ); - } - - return ret; -} - -//----------------------------------------------------------------------------- -// "button_press_event" -//----------------------------------------------------------------------------- - -static gint gtk_window_button_press_callback( GtkWidget *widget, GdkEventButton *gdk_event, wxWindow *win ) -{ - if (!win->IsOwnGtkWindow( gdk_event->window )) return TRUE; - - if (g_blockEventsOnDrag) return TRUE; - if (g_blockEventsOnScroll) return TRUE; - - if (win->m_wxwindow) - { - if (GTK_WIDGET_CAN_FOCUS(win->m_wxwindow) && !GTK_WIDGET_HAS_FOCUS (win->m_wxwindow) ) - { - gtk_widget_grab_focus (win->m_wxwindow); - -/* - printf( "GrabFocus from " ); - if (win->GetClassInfo() && win->GetClassInfo()->GetClassName()) - printf( win->GetClassInfo()->GetClassName() ); - printf( ".\n" ); -*/ - - } - } - - if (!win->HasVMT()) return TRUE; - -/* - printf( "OnButtonPress from " ); - if (win->GetClassInfo() && win->GetClassInfo()->GetClassName()) - printf( win->GetClassInfo()->GetClassName() ); - printf( ".\n" ); -*/ - - wxEventType event_type = wxEVT_LEFT_DOWN; - - if (gdk_event->button == 1) - { - switch (gdk_event->type) - { - case GDK_BUTTON_PRESS: event_type = wxEVT_LEFT_DOWN; break; - case GDK_2BUTTON_PRESS: event_type = wxEVT_LEFT_DCLICK; break; - default: break; - } - } - else if (gdk_event->button == 2) - { - switch (gdk_event->type) - { - case GDK_BUTTON_PRESS: event_type = wxEVT_MIDDLE_DOWN; break; - case GDK_2BUTTON_PRESS: event_type = wxEVT_MIDDLE_DCLICK; break; - default: break; - } - } - else if (gdk_event->button == 3) - { - switch (gdk_event->type) - { - case GDK_BUTTON_PRESS: event_type = wxEVT_RIGHT_DOWN; break; - case GDK_2BUTTON_PRESS: event_type = wxEVT_RIGHT_DCLICK; break; - default: break; - } - } - - wxMouseEvent event( event_type ); - event.m_shiftDown = (gdk_event->state & GDK_SHIFT_MASK); - event.m_controlDown = (gdk_event->state & GDK_CONTROL_MASK); - event.m_altDown = (gdk_event->state & GDK_MOD1_MASK); - event.m_metaDown = (gdk_event->state & GDK_MOD2_MASK); - event.m_leftDown = (gdk_event->state & GDK_BUTTON1_MASK); - event.m_middleDown = (gdk_event->state & GDK_BUTTON2_MASK); - event.m_rightDown = (gdk_event->state & GDK_BUTTON3_MASK); - - event.m_x = (long)gdk_event->x; - event.m_y = (long)gdk_event->y; - - // Some control don't have their own X window and thus cannot get - // any events. - - if (!g_capturing) - { - wxNode *node = win->GetChildren().First(); - while (node) - { - wxWindow *child = (wxWindow*)node->Data(); - - if (child->m_isStaticBox) - { - // wxStaticBox is transparent in the box itself - int x = event.m_x; - int y = event.m_y; - int xx1 = child->m_x; - int yy1 = child->m_y; - int xx2 = child->m_x + child->m_width; - int yy2 = child->m_x + child->m_height; - - // left - if (((x >= xx1) && (x <= xx1+10) && (y >= yy1) && (y <= yy2)) || - // right - ((x >= xx2-10) && (x <= xx2) && (y >= yy1) && (y <= yy2)) || - // top - ((x >= xx1) && (x <= xx2) && (y >= yy1) && (y <= yy1+10)) || - // bottom - ((x >= xx1) && (x <= xx2) && (y >= yy2-1) && (y <= yy2))) - { - win = child; - event.m_x -= child->m_x; - event.m_y -= child->m_y; - break; - } - - } - else - { - if ((child->m_wxwindow == (GtkWidget*) NULL) && - (child->m_x <= event.m_x) && - (child->m_y <= event.m_y) && - (child->m_x+child->m_width >= event.m_x) && - (child->m_y+child->m_height >= event.m_y)) - { - win = child; - event.m_x -= child->m_x; - event.m_y -= child->m_y; - break; - } - } - node = node->Next(); - } - } - - wxPoint pt(win->GetClientAreaOrigin()); - event.m_x -= pt.x; - event.m_y -= pt.y; - - event.SetEventObject( win ); - - gs_timeLastClick = gdk_event->time; - - if (win->GetEventHandler()->ProcessEvent( event )) - gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "button_press_event" ); - - return TRUE; -} - -//----------------------------------------------------------------------------- -// "button_release_event" -//----------------------------------------------------------------------------- - -static gint gtk_window_button_release_callback( GtkWidget *widget, GdkEventButton *gdk_event, wxWindow *win ) -{ - if (!win->IsOwnGtkWindow( gdk_event->window )) return TRUE; - - if (g_blockEventsOnDrag) return TRUE; - if (g_blockEventsOnScroll) return TRUE; - - if (!win->HasVMT()) return TRUE; - -/* - printf( "OnButtonRelease from " ); - if (win->GetClassInfo() && win->GetClassInfo()->GetClassName()) - printf( win->GetClassInfo()->GetClassName() ); - printf( ".\n" ); -*/ - - wxEventType event_type = wxEVT_NULL; - - switch (gdk_event->button) - { - case 1: event_type = wxEVT_LEFT_UP; break; - case 2: event_type = wxEVT_MIDDLE_UP; break; - case 3: event_type = wxEVT_RIGHT_UP; break; - } - - wxMouseEvent event( event_type ); - event.m_shiftDown = (gdk_event->state & GDK_SHIFT_MASK); - event.m_controlDown = (gdk_event->state & GDK_CONTROL_MASK); - event.m_altDown = (gdk_event->state & GDK_MOD1_MASK); - event.m_metaDown = (gdk_event->state & GDK_MOD2_MASK); - event.m_leftDown = (gdk_event->state & GDK_BUTTON1_MASK); - event.m_middleDown = (gdk_event->state & GDK_BUTTON2_MASK); - event.m_rightDown = (gdk_event->state & GDK_BUTTON3_MASK); - event.m_x = (long)gdk_event->x; - event.m_y = (long)gdk_event->y; - - // Some control don't have their own X window and thus cannot get - // any events. - - if (!g_capturing) - { - wxNode *node = win->GetChildren().First(); - while (node) - { - wxWindow *child = (wxWindow*)node->Data(); - - if (child->m_isStaticBox) - { - // wxStaticBox is transparent in the box itself - int x = event.m_x; - int y = event.m_y; - int xx1 = child->m_x; - int yy1 = child->m_y; - int xx2 = child->m_x + child->m_width; - int yy2 = child->m_x + child->m_height; - - // left - if (((x >= xx1) && (x <= xx1+10) && (y >= yy1) && (y <= yy2)) || - // right - ((x >= xx2-10) && (x <= xx2) && (y >= yy1) && (y <= yy2)) || - // top - ((x >= xx1) && (x <= xx2) && (y >= yy1) && (y <= yy1+10)) || - // bottom - ((x >= xx1) && (x <= xx2) && (y >= yy2-1) && (y <= yy2))) - { - win = child; - event.m_x -= child->m_x; - event.m_y -= child->m_y; - break; - } - - } - else - { - if ((child->m_wxwindow == (GtkWidget*) NULL) && - (child->m_x <= event.m_x) && - (child->m_y <= event.m_y) && - (child->m_x+child->m_width >= event.m_x) && - (child->m_y+child->m_height >= event.m_y)) - { - win = child; - event.m_x -= child->m_x; - event.m_y -= child->m_y; - break; - } - } - node = node->Next(); - } - } - - wxPoint pt(win->GetClientAreaOrigin()); - event.m_x -= pt.x; - event.m_y -= pt.y; - - event.SetEventObject( win ); - - if (win->GetEventHandler()->ProcessEvent( event )) - gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "button_release_event" ); - - return TRUE; -} - -//----------------------------------------------------------------------------- -// "motion_notify_event" -//----------------------------------------------------------------------------- - -static gint gtk_window_motion_notify_callback( GtkWidget *widget, GdkEventMotion *gdk_event, wxWindow *win ) -{ - if (gdk_event->is_hint) - { - int x = 0; - int y = 0; - GdkModifierType state; - gdk_window_get_pointer(gdk_event->window, &x, &y, &state); - gdk_event->x = x; - gdk_event->y = y; - gdk_event->state = state; - } - - if (!win->IsOwnGtkWindow( gdk_event->window )) return TRUE; - - if (g_blockEventsOnDrag) return TRUE; - if (g_blockEventsOnScroll) return TRUE; - - if (!win->HasVMT()) return TRUE; - -/* - printf( "OnMotion from " ); - if (win->GetClassInfo() && win->GetClassInfo()->GetClassName()) - printf( win->GetClassInfo()->GetClassName() ); - printf( ".\n" ); -*/ - - wxMouseEvent event( wxEVT_MOTION ); - event.m_shiftDown = (gdk_event->state & GDK_SHIFT_MASK); - event.m_controlDown = (gdk_event->state & GDK_CONTROL_MASK); - event.m_altDown = (gdk_event->state & GDK_MOD1_MASK); - event.m_metaDown = (gdk_event->state & GDK_MOD2_MASK); - event.m_leftDown = (gdk_event->state & GDK_BUTTON1_MASK); - event.m_middleDown = (gdk_event->state & GDK_BUTTON2_MASK); - event.m_rightDown = (gdk_event->state & GDK_BUTTON3_MASK); - - event.m_x = (long)gdk_event->x; - event.m_y = (long)gdk_event->y; - - // Some control don't have their own X window and thus cannot get - // any events. - - if (!g_capturing) - { - wxNode *node = win->GetChildren().First(); - while (node) - { - wxWindow *child = (wxWindow*)node->Data(); - - if (child->m_isStaticBox) - { - // wxStaticBox is transparent in the box itself - int x = event.m_x; - int y = event.m_y; - int xx1 = child->m_x; - int yy1 = child->m_y; - int xx2 = child->m_x + child->m_width; - int yy2 = child->m_x + child->m_height; - - // left - if (((x >= xx1) && (x <= xx1+10) && (y >= yy1) && (y <= yy2)) || - // right - ((x >= xx2-10) && (x <= xx2) && (y >= yy1) && (y <= yy2)) || - // top - ((x >= xx1) && (x <= xx2) && (y >= yy1) && (y <= yy1+10)) || - // bottom - ((x >= xx1) && (x <= xx2) && (y >= yy2-1) && (y <= yy2))) - { - win = child; - event.m_x -= child->m_x; - event.m_y -= child->m_y; - break; - } - - } - else - { - if ((child->m_wxwindow == (GtkWidget*) NULL) && - (child->m_x <= event.m_x) && - (child->m_y <= event.m_y) && - (child->m_x+child->m_width >= event.m_x) && - (child->m_y+child->m_height >= event.m_y)) - { - win = child; - event.m_x -= child->m_x; - event.m_y -= child->m_y; - break; - } - } - node = node->Next(); - } - } - - wxPoint pt(win->GetClientAreaOrigin()); - event.m_x -= pt.x; - event.m_y -= pt.y; - - event.SetEventObject( win ); - - if (win->GetEventHandler()->ProcessEvent( event )) - gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "motion_notify_event" ); - - return TRUE; -} - -//----------------------------------------------------------------------------- -// "focus_in_event" -//----------------------------------------------------------------------------- - -static gint gtk_window_focus_in_callback( GtkWidget *widget, GdkEvent *WXUNUSED(event), wxWindow *win ) -{ - if (g_blockEventsOnDrag) return TRUE; - - g_focusWindow = win; - - if (win->m_wxwindow) - { - if (GTK_WIDGET_CAN_FOCUS(win->m_wxwindow)) - { - GTK_WIDGET_SET_FLAGS (win->m_wxwindow, GTK_HAS_FOCUS); -/* - printf( "SetFocus flag from " ); - if (win->GetClassInfo() && win->GetClassInfo()->GetClassName()) - printf( win->GetClassInfo()->GetClassName() ); - printf( ".\n" ); -*/ - } - } - - if (!win->HasVMT()) return TRUE; - -/* - printf( "OnSetFocus from " ); - if (win->GetClassInfo() && win->GetClassInfo()->GetClassName()) - printf( win->GetClassInfo()->GetClassName() ); - printf( " " ); - printf( WXSTRINGCAST win->GetLabel() ); - printf( ".\n" ); -*/ - - wxFocusEvent event( wxEVT_SET_FOCUS, win->GetId() ); - event.SetEventObject( win ); - - if (win->GetEventHandler()->ProcessEvent( event )) - gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "focus_in_event" ); - - return TRUE; -} - -//----------------------------------------------------------------------------- -// "focus_out_event" -//----------------------------------------------------------------------------- - -static gint gtk_window_focus_out_callback( GtkWidget *widget, GdkEvent *WXUNUSED(event), wxWindow *win ) -{ - if (g_blockEventsOnDrag) return TRUE; - if (win->m_wxwindow) - { - if (GTK_WIDGET_CAN_FOCUS(win->m_wxwindow)) - GTK_WIDGET_UNSET_FLAGS (win->m_wxwindow, GTK_HAS_FOCUS); - } - - if (!win->HasVMT()) return TRUE; - -/* - printf( "OnKillFocus from " ); - if (win->GetClassInfo() && win->GetClassInfo()->GetClassName()) - printf( win->GetClassInfo()->GetClassName() ); - printf( ".\n" ); -*/ - - wxFocusEvent event( wxEVT_KILL_FOCUS, win->GetId() ); - event.SetEventObject( win ); - - if (win->GetEventHandler()->ProcessEvent( event )) - gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "focus_out_event" ); - - return TRUE; -} - -//----------------------------------------------------------------------------- -// "enter_notify_event" -//----------------------------------------------------------------------------- - -static gint gtk_window_enter_callback( GtkWidget *widget, GdkEventCrossing *gdk_event, wxWindow *win ) -{ - if (g_blockEventsOnDrag) return TRUE; - - if ((widget->window) && (win->m_cursor)) - gdk_window_set_cursor( widget->window, win->m_cursor->GetCursor() ); - - if (widget->window != gdk_event->window) return TRUE; - - if (!win->HasVMT()) return TRUE; - -/* - printf( "OnEnter from " ); - if (win->GetClassInfo() && win->GetClassInfo()->GetClassName()) - printf( win->GetClassInfo()->GetClassName() ); - printf( ".\n" ); -*/ - - wxMouseEvent event( wxEVT_ENTER_WINDOW ); - event.SetEventObject( win ); - - int x = 0; - int y = 0; - GdkModifierType state = (GdkModifierType)0; - - gdk_window_get_pointer( widget->window, &x, &y, &state ); - - event.m_shiftDown = (state & GDK_SHIFT_MASK); - event.m_controlDown = (state & GDK_CONTROL_MASK); - event.m_altDown = (state & GDK_MOD1_MASK); - event.m_metaDown = (state & GDK_MOD2_MASK); - event.m_leftDown = (state & GDK_BUTTON1_MASK); - event.m_middleDown = (state & GDK_BUTTON2_MASK); - event.m_rightDown = (state & GDK_BUTTON3_MASK); - - event.m_x = (long)x; - event.m_y = (long)y; - - wxPoint pt(win->GetClientAreaOrigin()); - event.m_x -= pt.x; - event.m_y -= pt.y; - - if (win->GetEventHandler()->ProcessEvent( event )) - gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "enter_notify_event" ); - - return TRUE; -} - -//----------------------------------------------------------------------------- -// "leave_notify_event" -//----------------------------------------------------------------------------- - -static gint gtk_window_leave_callback( GtkWidget *widget, GdkEventCrossing *gdk_event, wxWindow *win ) -{ - if (g_blockEventsOnDrag) return TRUE; - - if ((widget->window) && (win->m_cursor)) - gdk_window_set_cursor( widget->window, wxSTANDARD_CURSOR->GetCursor() ); - - if (widget->window != gdk_event->window) return TRUE; - - if (!win->HasVMT()) return TRUE; - -/* - printf( "OnLeave from " ); - if (win->GetClassInfo() && win->GetClassInfo()->GetClassName()) - printf( win->GetClassInfo()->GetClassName() ); - printf( ".\n" ); -*/ - - wxMouseEvent event( wxEVT_LEAVE_WINDOW ); - event.SetEventObject( win ); - - int x = 0; - int y = 0; - GdkModifierType state = (GdkModifierType)0; - - gdk_window_get_pointer( widget->window, &x, &y, &state ); - - event.m_shiftDown = (state & GDK_SHIFT_MASK); - event.m_controlDown = (state & GDK_CONTROL_MASK); - event.m_altDown = (state & GDK_MOD1_MASK); - event.m_metaDown = (state & GDK_MOD2_MASK); - event.m_leftDown = (state & GDK_BUTTON1_MASK); - event.m_middleDown = (state & GDK_BUTTON2_MASK); - event.m_rightDown = (state & GDK_BUTTON3_MASK); - - event.m_x = (long)x; - event.m_y = (long)y; - - wxPoint pt(win->GetClientAreaOrigin()); - event.m_x -= pt.x; - event.m_y -= pt.y; - - if (win->GetEventHandler()->ProcessEvent( event )) - gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "leave_notify_event" ); - - return TRUE; -} - -//----------------------------------------------------------------------------- -// "value_changed" from m_vAdjust -//----------------------------------------------------------------------------- - -static void gtk_window_vscroll_callback( GtkWidget *WXUNUSED(widget), wxWindow *win ) -{ - if (g_blockEventsOnDrag) return; - -/* - printf( "OnVScroll from " ); - if (win->GetClassInfo() && win->GetClassInfo()->GetClassName()) - printf( win->GetClassInfo()->GetClassName() ); - printf( ".\n" ); -*/ - - if (!win->HasVMT()) return; - - float diff = win->m_vAdjust->value - win->m_oldVerticalPos; - if (fabs(diff) < 0.2) return; - - wxEventType command = wxEVT_NULL; - - float line_step = win->m_vAdjust->step_increment; - float page_step = win->m_vAdjust->page_increment; - - if (win->m_isScrolling) - { - command = wxEVT_SCROLL_THUMBTRACK; - } - else - { - if (fabs(win->m_vAdjust->value-win->m_vAdjust->lower) < 0.2) command = wxEVT_SCROLL_BOTTOM; - else if (fabs(win->m_vAdjust->value-win->m_vAdjust->upper) < 0.2) command = wxEVT_SCROLL_TOP; - else if (fabs(diff-line_step) < 0.2) command = wxEVT_SCROLL_LINEDOWN; - else if (fabs(diff+line_step) < 0.2) command = wxEVT_SCROLL_LINEUP; - else if (fabs(diff-page_step) < 0.2) command = wxEVT_SCROLL_PAGEDOWN; - else if (fabs(diff+page_step) < 0.2) command = wxEVT_SCROLL_PAGEUP; - else command = wxEVT_SCROLL_THUMBTRACK; - } - - int value = (int)(win->m_vAdjust->value+0.5); - - wxScrollEvent event( command, win->GetId(), value, wxVERTICAL ); - event.SetEventObject( win ); - win->GetEventHandler()->ProcessEvent( event ); -} - -//----------------------------------------------------------------------------- -// "value_changed" from m_hAdjust -//----------------------------------------------------------------------------- - -static void gtk_window_hscroll_callback( GtkWidget *WXUNUSED(widget), wxWindow *win ) -{ - if (g_blockEventsOnDrag) return; - -/* - printf( "OnHScroll from " ); - if (win->GetClassInfo() && win->GetClassInfo()->GetClassName()) - printf( win->GetClassInfo()->GetClassName() ); - printf( ".\n" ); -*/ - - if (!win->HasVMT()) return; - - float diff = win->m_hAdjust->value - win->m_oldHorizontalPos; - if (fabs(diff) < 0.2) return; - - wxEventType command = wxEVT_NULL; - - float line_step = win->m_hAdjust->step_increment; - float page_step = win->m_hAdjust->page_increment; - - if (win->m_isScrolling) - { - command = wxEVT_SCROLL_THUMBTRACK; - } - else - { - if (fabs(win->m_hAdjust->value-win->m_hAdjust->lower) < 0.2) command = wxEVT_SCROLL_BOTTOM; - else if (fabs(win->m_hAdjust->value-win->m_hAdjust->upper) < 0.2) command = wxEVT_SCROLL_TOP; - else if (fabs(diff-line_step) < 0.2) command = wxEVT_SCROLL_LINEDOWN; - else if (fabs(diff+line_step) < 0.2) command = wxEVT_SCROLL_LINEUP; - else if (fabs(diff-page_step) < 0.2) command = wxEVT_SCROLL_PAGEDOWN; - else if (fabs(diff+page_step) < 0.2) command = wxEVT_SCROLL_PAGEUP; - else command = wxEVT_SCROLL_THUMBTRACK; - } - - int value = (int)(win->m_hAdjust->value+0.5); - - wxScrollEvent event( command, win->GetId(), value, wxHORIZONTAL ); - event.SetEventObject( win ); - win->GetEventHandler()->ProcessEvent( event ); -} - -//----------------------------------------------------------------------------- -// "changed" from m_vAdjust -//----------------------------------------------------------------------------- - -static void gtk_window_vscroll_change_callback( GtkWidget *WXUNUSED(widget), wxWindow *win ) -{ - if (g_blockEventsOnDrag) return; - -/* - printf( "OnVScroll change from " ); - if (win->GetClassInfo() && win->GetClassInfo()->GetClassName()) - printf( win->GetClassInfo()->GetClassName() ); - printf( ".\n" ); -*/ - - if (!win->HasVMT()) return; - - wxEventType command = wxEVT_SCROLL_THUMBTRACK; - int value = (int)(win->m_vAdjust->value+0.5); - - wxScrollEvent event( command, win->GetId(), value, wxVERTICAL ); - event.SetEventObject( win ); - win->GetEventHandler()->ProcessEvent( event ); -} - -//----------------------------------------------------------------------------- -// "changed" from m_hAdjust -//----------------------------------------------------------------------------- - -static void gtk_window_hscroll_change_callback( GtkWidget *WXUNUSED(widget), wxWindow *win ) -{ - if (g_blockEventsOnDrag) return; - -/* - printf( "OnHScroll change from " ); - if (win->GetClassInfo() && win->GetClassInfo()->GetClassName()) - printf( win->GetClassInfo()->GetClassName() ); - printf( ".\n" ); -*/ - - if (!win->HasVMT()) return; - - wxEventType command = wxEVT_SCROLL_THUMBTRACK; - int value = (int)(win->m_hAdjust->value+0.5); - - wxScrollEvent event( command, win->GetId(), value, wxHORIZONTAL ); - event.SetEventObject( win ); - win->GetEventHandler()->ProcessEvent( event ); -} - -//----------------------------------------------------------------------------- -// "button_press_event" from scrollbar -//----------------------------------------------------------------------------- - -static gint gtk_scrollbar_button_press_callback( GtkRange *WXUNUSED(widget), - GdkEventButton *WXUNUSED(gdk_event), - wxWindow *win ) -{ -// don't test here as we can release the mouse while being over -// a different window then the slider -// -// if (gdk_event->window != widget->slider) return FALSE; - - win->m_isScrolling = TRUE; - g_blockEventsOnScroll = TRUE; - - return FALSE; -} - -//----------------------------------------------------------------------------- -// "button_release_event" from scrollbar -//----------------------------------------------------------------------------- - -static gint gtk_scrollbar_button_release_callback( GtkRange *widget, - GdkEventButton *WXUNUSED(gdk_event), - wxWindow *win ) -{ - -// don't test here as we can release the mouse while being over -// a different window then the slider -// -// if (gdk_event->window != widget->slider) return FALSE; - - GtkScrolledWindow *s_window = GTK_SCROLLED_WINDOW(win->m_widget); - - if (widget == GTK_RANGE(s_window->vscrollbar)) - gtk_signal_emit_by_name( GTK_OBJECT(win->m_hAdjust), "value_changed" ); - else - gtk_signal_emit_by_name( GTK_OBJECT(win->m_vAdjust), "value_changed" ); - - win->m_isScrolling = FALSE; - g_blockEventsOnScroll = FALSE; - - return FALSE; -} - -//----------------------------------------------------------------------------- -// InsertChild for wxWindow. -//----------------------------------------------------------------------------- - -/* Callback for wxWindow. This very strange beast has to be used because - * C++ has no virtual methods in a constructor. We have to emulate a - * virtual function here as wxNotebook requires a different way to insert - * a child in it. I had opted for creating a wxNotebookPage window class - * which would have made this superfluous (such in the MDI window system), - * but no-one was listening to me... */ - -static void wxInsertChildInWindow( wxWindow* parent, wxWindow* child ) -{ - gtk_myfixed_put( GTK_MYFIXED(parent->m_wxwindow), - GTK_WIDGET(child->m_widget), - child->m_x, - child->m_y ); - - gtk_widget_set_usize( GTK_WIDGET(child->m_widget), - child->m_width, - child->m_height ); - - if (wxIS_KIND_OF(parent,wxFrame)) - { - parent->m_sizeSet = FALSE; - } - - if (parent->m_windowStyle & wxTAB_TRAVERSAL) - { - /* we now allow a window to get the focus as long as it - doesn't have any children. */ - GTK_WIDGET_UNSET_FLAGS( parent->m_wxwindow, GTK_CAN_FOCUS ); - } -} - -//----------------------------------------------------------------------------- -// global functions -//----------------------------------------------------------------------------- - -wxWindow* wxGetActiveWindow() -{ - return g_focusWindow; -} - -//----------------------------------------------------------------------------- -// wxWindow -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxWindow,wxEvtHandler) - -BEGIN_EVENT_TABLE(wxWindow, wxEvtHandler) - EVT_SIZE(wxWindow::OnSize) - EVT_SYS_COLOUR_CHANGED(wxWindow::OnSysColourChanged) - EVT_INIT_DIALOG(wxWindow::OnInitDialog) - EVT_KEY_DOWN(wxWindow::OnKeyDown) -END_EVENT_TABLE() - -wxWindow::wxWindow() -{ - m_widget = (GtkWidget *) NULL; - m_wxwindow = (GtkWidget *) NULL; - m_parent = (wxWindow *) NULL; - m_children.DeleteContents( FALSE ); - - m_x = 0; - m_y = 0; - m_width = 0; - m_height = 0; - m_minWidth = -1; - m_minHeight = -1; - m_maxWidth = -1; - m_maxHeight = -1; - - m_retCode = 0; - - m_eventHandler = this; - m_windowValidator = (wxValidator *) NULL; - - m_windowId = -1; - - m_cursor = (wxCursor *) NULL; - m_font = *wxSWISS_FONT; - m_windowStyle = 0; - m_windowName = "noname"; - - m_constraints = (wxLayoutConstraints *) NULL; - m_constraintsInvolvedIn = (wxList *) NULL; - m_windowSizer = (wxSizer *) NULL; - m_sizerParent = (wxWindow *) NULL; - m_autoLayout = FALSE; - - m_sizeSet = FALSE; - m_hasVMT = FALSE; - m_needParent = TRUE; - - m_hasScrolling = FALSE; - m_isScrolling = FALSE; - m_hAdjust = (GtkAdjustment*) NULL; - m_vAdjust = (GtkAdjustment*) NULL; - m_oldHorizontalPos = 0.0; - m_oldVerticalPos = 0.0; - - m_isShown = FALSE; - m_isEnabled = TRUE; - -#if wxUSE_DRAG_AND_DROP - m_dropTarget = (wxDropTarget*) NULL; -#endif - m_resizing = FALSE; - m_scrollGC = (GdkGC*) NULL; - m_widgetStyle = (GtkStyle*) NULL; - - m_insertCallback = wxInsertChildInWindow; - - m_clientObject = (wxClientData*) NULL; - m_clientData = NULL; - - m_isStaticBox = FALSE; - m_acceptsFocus = FALSE; - - m_toolTip = (wxToolTip*) NULL; -} - -wxWindow::wxWindow( wxWindow *parent, wxWindowID id, - const wxPoint &pos, const wxSize &size, - long style, const wxString &name ) -{ - m_insertCallback = wxInsertChildInWindow; - Create( parent, id, pos, size, style, name ); -} - -bool wxWindow::Create( wxWindow *parent, wxWindowID id, - const wxPoint &pos, const wxSize &size, - long style, const wxString &name ) -{ - m_isShown = FALSE; - m_isEnabled = TRUE; - m_needParent = TRUE; - - PreCreation( parent, id, pos, size, style, name ); - - m_widget = gtk_scrolled_window_new( (GtkAdjustment *) NULL, (GtkAdjustment *) NULL ); - GTK_WIDGET_UNSET_FLAGS( m_widget, GTK_CAN_FOCUS ); - -#ifdef __WXDEBUG__ - debug_focus_in( m_widget, "wxWindow::m_widget", name ); -#endif - - GtkScrolledWindow *s_window = GTK_SCROLLED_WINDOW(m_widget); - -#ifdef __WXDEBUG__ - debug_focus_in( s_window->hscrollbar, "wxWindow::hsrcollbar", name ); - debug_focus_in( s_window->vscrollbar, "wxWindow::vsrcollbar", name ); -#endif - - GtkScrolledWindowClass *scroll_class = GTK_SCROLLED_WINDOW_CLASS( GTK_OBJECT(m_widget)->klass ); - scroll_class->scrollbar_spacing = 0; - - gtk_scrolled_window_set_policy( s_window, GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC ); - - m_oldHorizontalPos = 0.0; - m_oldVerticalPos = 0.0; - - m_hAdjust = gtk_range_get_adjustment( GTK_RANGE(s_window->hscrollbar) ); - m_vAdjust = gtk_range_get_adjustment( GTK_RANGE(s_window->vscrollbar) ); - - m_wxwindow = gtk_myfixed_new(); - -#ifdef __WXDEBUG__ - debug_focus_in( m_wxwindow, "wxWindow::m_wxwindow", name ); -#endif - -#ifdef NEW_GTK_SCROLL_CODE - gtk_scrolled_window_add_with_viewport( GTK_SCROLLED_WINDOW(m_widget), m_wxwindow ); - GtkViewport *viewport = GTK_VIEWPORT(s_window->child); -#else - gtk_container_add( GTK_CONTAINER(m_widget), m_wxwindow ); - GtkViewport *viewport = GTK_VIEWPORT(s_window->viewport); -#endif - -#ifdef __WXDEBUG__ - debug_focus_in( GTK_WIDGET(viewport), "wxWindow::viewport", name ); -#endif - - if (m_windowStyle & wxRAISED_BORDER) - { - gtk_viewport_set_shadow_type( viewport, GTK_SHADOW_OUT ); - } - else if (m_windowStyle & wxSUNKEN_BORDER) - { - gtk_viewport_set_shadow_type( viewport, GTK_SHADOW_IN ); - } - else - { - gtk_viewport_set_shadow_type( viewport, GTK_SHADOW_NONE ); - } - - if (m_windowStyle & wxTAB_TRAVERSAL) - { - /* we now allow a window to get the focus as long as it - doesn't have any children. */ - GTK_WIDGET_SET_FLAGS( m_wxwindow, GTK_CAN_FOCUS ); - m_acceptsFocus = FALSE; - } - else - { - GTK_WIDGET_SET_FLAGS( m_wxwindow, GTK_CAN_FOCUS ); - m_acceptsFocus = TRUE; - } - - // shut the viewport up - gtk_viewport_set_hadjustment( viewport, (GtkAdjustment*) gtk_adjustment_new( 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) ); - gtk_viewport_set_vadjustment( viewport, (GtkAdjustment*) gtk_adjustment_new( 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) ); - - // I _really_ don't want scrollbars in the beginning - m_vAdjust->lower = 0.0; - m_vAdjust->upper = 1.0; - m_vAdjust->value = 0.0; - m_vAdjust->step_increment = 1.0; - m_vAdjust->page_increment = 1.0; - m_vAdjust->page_size = 5.0; - gtk_signal_emit_by_name( GTK_OBJECT(m_vAdjust), "changed" ); - m_hAdjust->lower = 0.0; - m_hAdjust->upper = 1.0; - m_hAdjust->value = 0.0; - m_hAdjust->step_increment = 1.0; - m_hAdjust->page_increment = 1.0; - m_hAdjust->page_size = 5.0; - gtk_signal_emit_by_name( GTK_OBJECT(m_hAdjust), "changed" ); - - // these handlers block mouse events to any window during scrolling - // such as motion events and prevent GTK and wxWindows from fighting - // over where the slider should be - - gtk_signal_connect( GTK_OBJECT(s_window->vscrollbar), "button_press_event", - (GtkSignalFunc)gtk_scrollbar_button_press_callback, (gpointer) this ); - - gtk_signal_connect( GTK_OBJECT(s_window->hscrollbar), "button_press_event", - (GtkSignalFunc)gtk_scrollbar_button_press_callback, (gpointer) this ); - - gtk_signal_connect( GTK_OBJECT(s_window->vscrollbar), "button_release_event", - (GtkSignalFunc)gtk_scrollbar_button_release_callback, (gpointer) this ); - - gtk_signal_connect( GTK_OBJECT(s_window->hscrollbar), "button_release_event", - (GtkSignalFunc)gtk_scrollbar_button_release_callback, (gpointer) this ); - - // these handers het notified when screen updates are required either when - // scrolling or when the window size (and therefore scrollbar configuration) - // has changed - - gtk_signal_connect( GTK_OBJECT(m_hAdjust), "value_changed", - (GtkSignalFunc) gtk_window_hscroll_callback, (gpointer) this ); - gtk_signal_connect( GTK_OBJECT(m_vAdjust), "value_changed", - (GtkSignalFunc) gtk_window_vscroll_callback, (gpointer) this ); - - gtk_signal_connect( GTK_OBJECT(m_hAdjust), "changed", - (GtkSignalFunc) gtk_window_hscroll_change_callback, (gpointer) this ); - gtk_signal_connect(GTK_OBJECT(m_vAdjust), "changed", - (GtkSignalFunc) gtk_window_vscroll_change_callback, (gpointer) this ); - - gtk_widget_show( m_wxwindow ); - - if (m_parent) m_parent->AddChild( this ); - - (m_parent->m_insertCallback)( m_parent, this ); - - PostCreation(); - - Show( TRUE ); - - return TRUE; -} - -wxWindow::~wxWindow() -{ - m_hasVMT = FALSE; - -#if wxUSE_DRAG_AND_DROP - if (m_dropTarget) delete m_dropTarget; -#endif - - if (m_toolTip) delete m_toolTip; - - if (m_parent) m_parent->RemoveChild( this ); - if (m_widget) Show( FALSE ); - - DestroyChildren(); - - if (m_widgetStyle) gtk_style_unref( m_widgetStyle ); - - if (m_scrollGC) gdk_gc_unref( m_scrollGC ); - - if (m_wxwindow) gtk_widget_destroy( m_wxwindow ); - - if (m_widget) gtk_widget_destroy( m_widget ); - - if (m_cursor) delete m_cursor; - - DeleteRelatedConstraints(); - if (m_constraints) - { - // This removes any dangling pointers to this window - // in other windows' constraintsInvolvedIn lists. - UnsetConstraints(m_constraints); - delete m_constraints; - m_constraints = (wxLayoutConstraints *) NULL; - } - if (m_windowSizer) - { - delete m_windowSizer; - m_windowSizer = (wxSizer *) NULL; - } - // If this is a child of a sizer, remove self from parent - if (m_sizerParent) m_sizerParent->RemoveChild((wxWindow *)this); - - // Just in case the window has been Closed, but - // we're then deleting immediately: don't leave - // dangling pointers. - wxPendingDelete.DeleteObject(this); - - // Just in case we've loaded a top-level window via - // wxWindow::LoadNativeDialog but we weren't a dialog - // class - wxTopLevelWindows.DeleteObject(this); - - if (m_windowValidator) delete m_windowValidator; - - if (m_clientObject) delete m_clientObject; -} - -void wxWindow::PreCreation( wxWindow *parent, wxWindowID id, - const wxPoint &pos, const wxSize &size, - long style, const wxString &name ) -{ - wxASSERT_MSG( (!m_needParent) || (parent), "Need complete parent." ); - - m_widget = (GtkWidget*) NULL; - m_wxwindow = (GtkWidget*) NULL; - m_hasVMT = FALSE; - m_parent = parent; - m_children.DeleteContents( FALSE ); - - m_width = size.x; - if (m_width == -1) m_width = 20; - m_height = size.y; - if (m_height == -1) m_height = 20; - - m_x = (int)pos.x; - m_y = (int)pos.y; - - if (!m_needParent) // some reasonable defaults - { - if (m_x == -1) - { - m_x = (gdk_screen_width () - m_width) / 2; - if (m_x < 10) m_x = 10; - } - if (m_y == -1) - { - m_y = (gdk_screen_height () - m_height) / 2; - if (m_y < 10) m_y = 10; - } - } - - m_minWidth = -1; - m_minHeight = -1; - m_maxWidth = -1; - m_maxHeight = -1; - - m_retCode = 0; - - m_eventHandler = this; - - m_windowId = id == -1 ? wxNewId() : id; - - m_sizeSet = FALSE; - - m_cursor = new wxCursor( wxCURSOR_ARROW ); - m_font = *wxSWISS_FONT; - m_backgroundColour = wxSystemSettings::GetSystemColour( wxSYS_COLOUR_BTNFACE ); - m_foregroundColour = *wxBLACK; - m_windowStyle = style; - m_windowName = name; - - m_constraints = (wxLayoutConstraints *) NULL; - m_constraintsInvolvedIn = (wxList *) NULL; - m_windowSizer = (wxSizer *) NULL; - m_sizerParent = (wxWindow *) NULL; - m_autoLayout = FALSE; - - m_hasScrolling = FALSE; - m_isScrolling = FALSE; - m_hAdjust = (GtkAdjustment *) NULL; - m_vAdjust = (GtkAdjustment *) NULL; - m_oldHorizontalPos = 0.0; - m_oldVerticalPos = 0.0; - - m_isShown = FALSE; - m_isEnabled = TRUE; - -#if wxUSE_DRAG_AND_DROP - m_dropTarget = (wxDropTarget *) NULL; -#endif - m_resizing = FALSE; - m_windowValidator = (wxValidator *) NULL; - m_scrollGC = (GdkGC*) NULL; - m_widgetStyle = (GtkStyle*) NULL; - - m_clientObject = (wxClientData*)NULL; - m_clientData = NULL; - - m_isStaticBox = FALSE; - m_toolTip = (wxToolTip*) NULL; -} - -void wxWindow::PostCreation() -{ - if (m_wxwindow) - { - gtk_signal_connect( GTK_OBJECT(m_wxwindow), "expose_event", - GTK_SIGNAL_FUNC(gtk_window_expose_callback), (gpointer)this ); - - gtk_signal_connect( GTK_OBJECT(m_wxwindow), "draw", - GTK_SIGNAL_FUNC(gtk_window_draw_callback), (gpointer)this ); - } - - ConnectWidget( GetConnectWidget() ); - - if (m_widget && m_parent) gtk_widget_realize( m_widget ); - - if (m_wxwindow) gtk_widget_realize( m_wxwindow ); - - SetCursor( *wxSTANDARD_CURSOR ); - - m_hasVMT = TRUE; -} - -void wxWindow::ConnectWidget( GtkWidget *widget ) -{ - gtk_signal_connect( GTK_OBJECT(widget), "key_press_event", - GTK_SIGNAL_FUNC(gtk_window_key_press_callback), (gpointer)this ); - - gtk_signal_connect( GTK_OBJECT(widget), "key_release_event", - GTK_SIGNAL_FUNC(gtk_window_key_release_callback), (gpointer)this ); - - gtk_signal_connect( GTK_OBJECT(widget), "button_press_event", - GTK_SIGNAL_FUNC(gtk_window_button_press_callback), (gpointer)this ); - - gtk_signal_connect( GTK_OBJECT(widget), "button_release_event", - GTK_SIGNAL_FUNC(gtk_window_button_release_callback), (gpointer)this ); - - gtk_signal_connect( GTK_OBJECT(widget), "motion_notify_event", - GTK_SIGNAL_FUNC(gtk_window_motion_notify_callback), (gpointer)this ); - - gtk_signal_connect( GTK_OBJECT(widget), "focus_in_event", - GTK_SIGNAL_FUNC(gtk_window_focus_in_callback), (gpointer)this ); - - gtk_signal_connect( GTK_OBJECT(widget), "focus_out_event", - GTK_SIGNAL_FUNC(gtk_window_focus_out_callback), (gpointer)this ); - - gtk_signal_connect( GTK_OBJECT(widget), "enter_notify_event", - GTK_SIGNAL_FUNC(gtk_window_enter_callback), (gpointer)this ); - - gtk_signal_connect( GTK_OBJECT(widget), "leave_notify_event", - GTK_SIGNAL_FUNC(gtk_window_leave_callback), (gpointer)this ); -} - -bool wxWindow::HasVMT() -{ - return m_hasVMT; -} - -bool wxWindow::Close( bool force ) -{ - wxASSERT_MSG( (m_widget != NULL), "invalid window" ); - - wxCloseEvent event(wxEVT_CLOSE_WINDOW, m_windowId); - event.SetEventObject(this); - event.SetForce(force); - - return GetEventHandler()->ProcessEvent(event); -} - -bool wxWindow::Destroy() -{ - wxASSERT_MSG( (m_widget != NULL), "invalid window" ); - - m_hasVMT = FALSE; - delete this; - return TRUE; -} - -bool wxWindow::DestroyChildren() -{ - wxNode *node; - while ((node = m_children.First()) != (wxNode *)NULL) - { - wxWindow *child; - if ((child = (wxWindow *)node->Data()) != (wxWindow *)NULL) - { - delete child; - if (m_children.Member(child)) delete node; - } - } - return TRUE; -} - -void wxWindow::PrepareDC( wxDC &WXUNUSED(dc) ) -{ - // are we to set fonts here ? -} - -wxPoint wxWindow::GetClientAreaOrigin() const -{ - return wxPoint(0,0); -} - -void wxWindow::AdjustForParentClientOrigin( int& x, int& y, int sizeFlags ) -{ - if (((sizeFlags & wxSIZE_NO_ADJUSTMENTS) == 0) && GetParent()) - { - wxPoint pt(GetParent()->GetClientAreaOrigin()); - x += pt.x; - y += pt.y; - } -} - -void wxWindow::SetSize( int x, int y, int width, int height, int sizeFlags ) -{ - wxASSERT_MSG( (m_widget != NULL), "invalid window" ); - wxASSERT_MSG( (m_parent != NULL), "wxWindow::SetSize requires parent.\n" ); - - if (m_resizing) return; // I don't like recursions - m_resizing = TRUE; - - if (m_parent->m_wxwindow == NULL) // i.e. wxNotebook - { - // don't set the size for children of wxNotebook, just take the values. - m_x = x; - m_y = y; - m_width = width; - m_height = height; - } - else - { - int old_width = m_width; - int old_height = m_height; - - if ((sizeFlags & wxSIZE_USE_EXISTING) == wxSIZE_USE_EXISTING) - { - if (x != -1) m_x = x; - if (y != -1) m_y = y; - if (width != -1) m_width = width; - if (height != -1) m_height = height; - } - else - { - m_x = x; - m_y = y; - m_width = width; - m_height = height; - } - - if ((sizeFlags & wxSIZE_AUTO_WIDTH) == wxSIZE_AUTO_WIDTH) - { - if (width == -1) m_width = 80; - } - - if ((sizeFlags & wxSIZE_AUTO_HEIGHT) == wxSIZE_AUTO_HEIGHT) - { - if (height == -1) m_height = 26; - } - - if ((m_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth; - if ((m_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight; - if ((m_maxWidth != -1) && (m_width > m_maxWidth)) m_width = m_maxWidth; - if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_maxHeight; - - wxPoint pt( m_parent->GetClientAreaOrigin() ); - gtk_myfixed_move( GTK_MYFIXED(m_parent->m_wxwindow), m_widget, m_x+pt.x, m_y+pt.y ); - - if ((old_width != m_width) || (old_height != m_height)) - gtk_widget_set_usize( m_widget, m_width, m_height ); - } - - m_sizeSet = TRUE; - - wxSizeEvent event( wxSize(m_width,m_height), GetId() ); - event.SetEventObject( this ); - GetEventHandler()->ProcessEvent( event ); - - m_resizing = FALSE; -} - -void wxWindow::OnInternalIdle() -{ - UpdateWindowUI(); -} - -void wxWindow::SetSize( int width, int height ) -{ - SetSize( -1, -1, width, height, wxSIZE_USE_EXISTING ); -} - -void wxWindow::Move( int x, int y ) -{ - SetSize( x, y, -1, -1, wxSIZE_USE_EXISTING ); -} - -void wxWindow::GetSize( int *width, int *height ) const -{ - wxCHECK_RET( (m_widget != NULL), "invalid window" ); - - if (width) (*width) = m_width; - if (height) (*height) = m_height; -} - -void wxWindow::SetClientSize( int width, int height ) -{ - wxCHECK_RET( (m_widget != NULL), "invalid window" ); - - if (!m_wxwindow) - { - SetSize( width, height ); - } - else - { - int dw = 0; - int dh = 0; - - if (!m_hasScrolling) - { - GtkStyleClass *window_class = m_wxwindow->style->klass; - - if ((m_windowStyle & wxRAISED_BORDER) || - (m_windowStyle & wxSUNKEN_BORDER)) - { - dw += 2 * window_class->xthickness; - dh += 2 * window_class->ythickness; - } - } - else - { - GtkScrolledWindow *scroll_window = GTK_SCROLLED_WINDOW(m_widget); - GtkScrolledWindowClass *scroll_class = GTK_SCROLLED_WINDOW_CLASS( GTK_OBJECT(m_widget)->klass ); - -#ifdef NEW_GTK_SCROLL_CODE - GtkWidget *viewport = scroll_window->child; -#else - GtkWidget *viewport = scroll_window->viewport; -#endif - - GtkStyleClass *viewport_class = viewport->style->klass; - - GtkWidget *hscrollbar = scroll_window->hscrollbar; - GtkWidget *vscrollbar = scroll_window->vscrollbar; - - if ((m_windowStyle & wxRAISED_BORDER) || - (m_windowStyle & wxSUNKEN_BORDER)) - { - dw += 2 * viewport_class->xthickness; - dh += 2 * viewport_class->ythickness; - } - - if (scroll_window->vscrollbar_visible) - { - dw += vscrollbar->allocation.width; - dw += scroll_class->scrollbar_spacing; - } - - if (scroll_window->hscrollbar_visible) - { - dh += hscrollbar->allocation.height; - dw += scroll_class->scrollbar_spacing; - } - } - - SetSize( width+dw, height+dh ); - } -} - -void wxWindow::GetClientSize( int *width, int *height ) const -{ - wxCHECK_RET( (m_widget != NULL), "invalid window" ); - - if (!m_wxwindow) - { - if (width) (*width) = m_width; - if (height) (*height) = m_height; - } - else - { - int dw = 0; - int dh = 0; - - if (!m_hasScrolling) - { - GtkStyleClass *window_class = m_wxwindow->style->klass; - - if ((m_windowStyle & wxRAISED_BORDER) || - (m_windowStyle & wxSUNKEN_BORDER)) - { - dw += 2 * window_class->xthickness; - dh += 2 * window_class->ythickness; - } - } - else - { - GtkScrolledWindow *scroll_window = GTK_SCROLLED_WINDOW(m_widget); - GtkScrolledWindowClass *scroll_class = GTK_SCROLLED_WINDOW_CLASS( GTK_OBJECT(m_widget)->klass ); - -#ifdef NEW_GTK_SCROLL_CODE - GtkWidget *viewport = scroll_window->child; -#else - GtkWidget *viewport = scroll_window->viewport; -#endif - - GtkStyleClass *viewport_class = viewport->style->klass; - - if ((m_windowStyle & wxRAISED_BORDER) || - (m_windowStyle & wxSUNKEN_BORDER)) - { - dw += 2 * viewport_class->xthickness; - dh += 2 * viewport_class->ythickness; - } - - if (scroll_window->vscrollbar_visible) - { -// dw += vscrollbar->allocation.width; - dw += 15; // range.slider_width = 11 + 2*2pts edge - dw += scroll_class->scrollbar_spacing; - } - - if (scroll_window->hscrollbar_visible) - { -// dh += hscrollbar->allocation.height; - dh += 15; - dh += scroll_class->scrollbar_spacing; - } - } - - if (width) (*width) = m_width - dw; - if (height) (*height) = m_height - dh; - } -} - -void wxWindow::GetPosition( int *x, int *y ) const -{ - wxCHECK_RET( (m_widget != NULL), "invalid window" ); - - if (x) (*x) = m_x; - if (y) (*y) = m_y; -} - -void wxWindow::ClientToScreen( int *x, int *y ) -{ - wxCHECK_RET( (m_widget != NULL), "invalid window" ); - - GdkWindow *source = (GdkWindow *) NULL; - if (m_wxwindow) - source = m_wxwindow->window; - else - source = m_widget->window; - - int org_x = 0; - int org_y = 0; - gdk_window_get_origin( source, &org_x, &org_y ); - - if (!m_wxwindow) - { - if (GTK_WIDGET_NO_WINDOW (m_widget)) - { - org_x += m_widget->allocation.x; - org_y += m_widget->allocation.y; - } - } - - wxPoint pt(GetClientAreaOrigin()); - org_x += pt.x; - org_y += pt.y; - - if (x) *x += org_x; - if (y) *y += org_y; -} - -void wxWindow::ScreenToClient( int *x, int *y ) -{ - wxCHECK_RET( (m_widget != NULL), "invalid window" ); - - GdkWindow *source = (GdkWindow *) NULL; - if (m_wxwindow) - source = m_wxwindow->window; - else - source = m_widget->window; - - int org_x = 0; - int org_y = 0; - gdk_window_get_origin( source, &org_x, &org_y ); - - if (!m_wxwindow) - { - if (GTK_WIDGET_NO_WINDOW (m_widget)) - { - org_x += m_widget->allocation.x; - org_y += m_widget->allocation.y; - } - } - - wxPoint pt(GetClientAreaOrigin()); - org_x -= pt.x; - org_y -= pt.y; - - if (x) *x -= org_x; - if (y) *y -= org_y; -} - -void wxWindow::Centre( int direction ) -{ - wxCHECK_RET( (m_widget != NULL), "invalid window" ); - - int x = m_x; - int y = m_y; - - if (m_parent) - { - int p_w = 0; - int p_h = 0; - m_parent->GetSize( &p_w, &p_h ); - if (direction & wxHORIZONTAL == wxHORIZONTAL) x = (p_w - m_width) / 2; - if (direction & wxVERTICAL == wxVERTICAL) y = (p_h - m_height) / 2; - } - else - { - if (direction & wxHORIZONTAL == wxHORIZONTAL) x = (gdk_screen_width () - m_width) / 2; - if (direction & wxVERTICAL == wxVERTICAL) y = (gdk_screen_height () - m_height) / 2; - } - - Move( x, y ); -} - -void wxWindow::Fit() -{ - wxCHECK_RET( (m_widget != NULL), "invalid window" ); - - int maxX = 0; - int maxY = 0; - wxNode *node = m_children.First(); - while (node) - { - wxWindow *win = (wxWindow *)node->Data(); - int wx, wy, ww, wh; - win->GetPosition(&wx, &wy); - win->GetSize(&ww, &wh); - if (wx + ww > maxX) maxX = wx + ww; - if (wy + wh > maxY) maxY = wy + wh; - - node = node->Next(); - } - - SetClientSize(maxX + 7, maxY + 14); -} - -void wxWindow::SetSizeHints( int minW, int minH, int maxW, int maxH, int WXUNUSED(incW), int WXUNUSED(incH) ) -{ - wxCHECK_RET( (m_widget != NULL), "invalid window" ); - - m_minWidth = minW; - m_minHeight = minH; - m_maxWidth = maxW; - m_maxHeight = maxH; -} - -void wxWindow::OnSize( wxSizeEvent &WXUNUSED(event) ) -{ -// if (GetAutoLayout()) Layout(); -} - -bool wxWindow::Show( bool show ) -{ - wxCHECK_MSG( (m_widget != NULL), FALSE, "invalid window" ); - - if (show) - gtk_widget_show( m_widget ); - else - gtk_widget_hide( m_widget ); - - m_isShown = show; - - return TRUE; -} - -void wxWindow::Enable( bool enable ) -{ - wxCHECK_RET( (m_widget != NULL), "invalid window" ); - - m_isEnabled = enable; - - gtk_widget_set_sensitive( m_widget, enable ); - if (m_wxwindow) gtk_widget_set_sensitive( m_wxwindow, enable ); -} - -int wxWindow::GetCharHeight() const -{ - wxCHECK_MSG( (m_widget != NULL), 12, "invalid window" ); - - wxCHECK_MSG( m_font.Ok(), 12, "invalid font" ); - - GdkFont *font = m_font.GetInternalFont( 1.0 ); - - return font->ascent + font->descent; -} - -int wxWindow::GetCharWidth() const -{ - wxCHECK_MSG( (m_widget != NULL), 8, "invalid window" ); - - wxCHECK_MSG( m_font.Ok(), 8, "invalid font" ); - - GdkFont *font = m_font.GetInternalFont( 1.0 ); - - return gdk_string_width( font, "H" ); -} - -void wxWindow::GetTextExtent( const wxString& string, int *x, int *y, - int *descent, int *externalLeading, const wxFont *theFont, bool WXUNUSED(use16) ) const -{ - wxFont fontToUse = m_font; - if (theFont) fontToUse = *theFont; - - wxCHECK_RET( fontToUse.Ok(), "invalid font" ); - - GdkFont *font = fontToUse.GetInternalFont( 1.0 ); - if (x) (*x) = gdk_string_width( font, string ); - if (y) (*y) = font->ascent + font->descent; - if (descent) (*descent) = font->descent; - if (externalLeading) (*externalLeading) = 0; // ?? -} - -void wxWindow::MakeModal( bool modal ) -{ - return; - - // Disable all other windows - if (this->IsKindOf(CLASSINFO(wxDialog)) || this->IsKindOf(CLASSINFO(wxFrame))) - { - wxNode *node = wxTopLevelWindows.First(); - while (node) - { - wxWindow *win = (wxWindow *)node->Data(); - if (win != this) win->Enable(!modal); - - node = node->Next(); - } - } -} - -void wxWindow::OnKeyDown( wxKeyEvent &event ) -{ - event.SetEventType( wxEVT_CHAR ); - - if (!GetEventHandler()->ProcessEvent( event )) - { - event.Skip(); - } -} - -void wxWindow::SetFocus() -{ - wxCHECK_RET( (m_widget != NULL), "invalid window" ); - - GtkWidget *connect_widget = GetConnectWidget(); - if (connect_widget) - { - if (GTK_WIDGET_CAN_FOCUS(connect_widget) /*&& !GTK_WIDGET_HAS_FOCUS (connect_widget)*/ ) - { - gtk_widget_grab_focus (connect_widget); - } - else if (GTK_IS_CONTAINER(connect_widget)) - { - gtk_container_focus( GTK_CONTAINER(connect_widget), GTK_DIR_TAB_FORWARD ); - } - else - { - } - } -} - -wxWindow *wxWindow::FindFocus() -{ - return g_focusWindow; -} - -bool wxWindow::AcceptsFocus() const -{ - return IsEnabled() && IsShown() && m_acceptsFocus; -} - -bool wxWindow::OnClose() -{ - return TRUE; -} - -void wxWindow::AddChild( wxWindow *child ) -{ - wxCHECK_RET( (m_widget != NULL), "invalid window" ); - wxCHECK_RET( (child != NULL), "invalid child" ); - - m_children.Append( child ); -} - -wxWindow *wxWindow::ReParent( wxWindow *newParent ) -{ - wxCHECK_MSG( (m_widget != NULL), (wxWindow*) NULL, "invalid window" ); - - wxWindow *oldParent = GetParent(); - - if (oldParent) oldParent->RemoveChild( this ); - - gtk_widget_unparent( m_widget ); - - if (newParent) - { - newParent->AddChild( this ); - (newParent->m_insertCallback)( newParent, this ); - } - - return oldParent; -} - -void wxWindow::RemoveChild( wxWindow *child ) -{ - m_children.DeleteObject( child ); - child->m_parent = (wxWindow *) NULL; -} - -void wxWindow::SetReturnCode( int retCode ) -{ - m_retCode = retCode; -} - -int wxWindow::GetReturnCode() -{ - return m_retCode; -} - -void wxWindow::Raise() -{ - wxCHECK_RET( (m_widget != NULL), "invalid window" ); - - if (m_widget) gdk_window_raise( m_widget->window ); -} - -void wxWindow::Lower() -{ - wxCHECK_RET( (m_widget != NULL), "invalid window" ); - - if (m_widget) gdk_window_lower( m_widget->window ); -} - -wxEvtHandler *wxWindow::GetEventHandler() const -{ - return m_eventHandler; -} - -void wxWindow::SetEventHandler( wxEvtHandler *handler ) -{ - m_eventHandler = handler; -} - -void wxWindow::PushEventHandler(wxEvtHandler *handler) -{ - handler->SetNextHandler(GetEventHandler()); - SetEventHandler(handler); -} - -wxEvtHandler *wxWindow::PopEventHandler(bool deleteHandler) -{ - if (GetEventHandler()) - { - wxEvtHandler *handlerA = GetEventHandler(); - wxEvtHandler *handlerB = handlerA->GetNextHandler(); - handlerA->SetNextHandler((wxEvtHandler *) NULL); - SetEventHandler(handlerB); - if (deleteHandler) - { - delete handlerA; - return (wxEvtHandler*) NULL; - } - else - return handlerA; - } - else - return (wxEvtHandler *) NULL; -} - -wxValidator *wxWindow::GetValidator() -{ - return m_windowValidator; -} - -void wxWindow::SetValidator( const wxValidator& validator ) -{ - if (m_windowValidator) delete m_windowValidator; - m_windowValidator = validator.Clone(); - if (m_windowValidator) m_windowValidator->SetWindow(this); -} - -void wxWindow::SetClientObject( wxClientData *data ) -{ - if (m_clientObject) delete m_clientObject; - m_clientObject = data; -} - -wxClientData *wxWindow::GetClientObject() -{ - return m_clientObject; -} - -void wxWindow::SetClientData( void *data ) -{ - m_clientData = data; -} - -void *wxWindow::GetClientData() -{ - return m_clientData; -} - -bool wxWindow::IsBeingDeleted() -{ - return FALSE; -} - -void wxWindow::SetId( wxWindowID id ) -{ - m_windowId = id; -} - -wxWindowID wxWindow::GetId() const -{ - return m_windowId; -} - -void wxWindow::SetCursor( const wxCursor &cursor ) -{ - wxCHECK_RET( (m_widget != NULL), "invalid window" ); - - if (cursor.Ok()) - { - if (cursor == *m_cursor) return; - *m_cursor = cursor; - } - else - { - *m_cursor = *wxSTANDARD_CURSOR; - } - - if ((m_widget) && (m_widget->window)) - gdk_window_set_cursor( m_widget->window, m_cursor->GetCursor() ); - - if ((m_wxwindow) && (m_wxwindow->window)) - gdk_window_set_cursor( m_wxwindow->window, m_cursor->GetCursor() ); -} - -void wxWindow::WarpPointer( int WXUNUSED(x), int WXUNUSED(y) ) -{ - // TODO -} - -void wxWindow::Refresh( bool eraseBackground, const wxRect *rect ) -{ - wxCHECK_RET( (m_widget != NULL), "invalid window" ); - - if (eraseBackground && m_wxwindow && m_wxwindow->window) - { - if (rect) - { - gdk_window_clear_area( m_wxwindow->window, - rect->x, rect->y, - rect->width, - rect->height ); - } - else - { - Clear(); - } - } - - if (!rect) - { - if (m_wxwindow) - gtk_widget_draw( m_wxwindow, (GdkRectangle*) NULL ); - else - gtk_widget_draw( m_widget, (GdkRectangle*) NULL ); - } - else - { - GdkRectangle gdk_rect; - gdk_rect.x = rect->x; - gdk_rect.y = rect->y; - gdk_rect.width = rect->width; - gdk_rect.height = rect->height; - - if (m_wxwindow) - gtk_widget_draw( m_wxwindow, &gdk_rect ); - else - gtk_widget_draw( m_widget, &gdk_rect ); - } -} - -wxRegion wxWindow::GetUpdateRegion() const -{ - return m_updateRegion; -} - -bool wxWindow::IsExposed( int x, int y) const -{ - return (m_updateRegion.Contains( x, y ) != wxOutRegion ); -} - -bool wxWindow::IsExposed( int x, int y, int w, int h ) const -{ - return (m_updateRegion.Contains( x, y, w, h ) != wxOutRegion ); -} - -bool wxWindow::IsExposed( const wxPoint& pt ) const -{ - return (m_updateRegion.Contains( pt.x, pt.y ) != wxOutRegion ); -} - -bool wxWindow::IsExposed( const wxRect& rect ) const -{ - return (m_updateRegion.Contains( rect.x, rect.y, rect.width, rect.height ) != wxOutRegion ); -} - -void wxWindow::Clear() -{ - wxCHECK_RET( m_widget != NULL, "invalid window" ); - - if (m_wxwindow && m_wxwindow->window) gdk_window_clear( m_wxwindow->window ); -} - -void wxWindow::SetToolTip( const wxString &tip ) -{ - SetToolTip( new wxToolTip( tip ) ); -} - -void wxWindow::SetToolTip( wxToolTip *tip ) -{ - if (m_toolTip) delete m_toolTip; - - m_toolTip = tip; - - if (m_toolTip) m_toolTip->Create( GetConnectWidget() ); -} - -wxToolTip& wxWindow::GetToolTip() -{ - if (!m_toolTip) - wxLogError( "No tooltip set." ); - - return *m_toolTip; -} - -wxColour wxWindow::GetBackgroundColour() const -{ - return m_backgroundColour; -} - -void wxWindow::SetBackgroundColour( const wxColour &colour ) -{ - wxCHECK_RET( m_widget != NULL, "invalid window" ); - - if (m_backgroundColour == colour) return; - - m_backgroundColour = colour; - if (!m_backgroundColour.Ok()) return; - - if (m_wxwindow) - { - GdkWindow *window = m_wxwindow->window; - m_backgroundColour.CalcPixel( gdk_window_get_colormap( window ) ); - gdk_window_set_background( window, m_backgroundColour.GetColor() ); - gdk_window_clear( window ); - } - - wxColour sysbg = wxSystemSettings::GetSystemColour( wxSYS_COLOUR_BTNFACE ); - if (sysbg.Red() == colour.Red() && - sysbg.Green() == colour.Green() && - sysbg.Blue() == colour.Blue()) - { - m_backgroundColour = wxNullColour; - ApplyWidgetStyle(); - m_backgroundColour = sysbg; - } - else - { - ApplyWidgetStyle(); - } -} - -wxColour wxWindow::GetForegroundColour() const -{ - return m_foregroundColour; -} - -void wxWindow::SetForegroundColour( const wxColour &colour ) -{ - wxCHECK_RET( m_widget != NULL, "invalid window" ); - - if (m_foregroundColour == colour) return; - - m_foregroundColour = colour; - if (!m_foregroundColour.Ok()) return; - - wxColour sysbg = wxSystemSettings::GetSystemColour( wxSYS_COLOUR_BTNFACE ); - if (sysbg.Red() == colour.Red() && - sysbg.Green() == colour.Green() && - sysbg.Blue() == colour.Blue()) - { - m_backgroundColour = wxNullColour; - ApplyWidgetStyle(); - m_backgroundColour = sysbg; - } - else - { - ApplyWidgetStyle(); - } -} - -GtkStyle *wxWindow::GetWidgetStyle() -{ - if (m_widgetStyle) gtk_style_unref( m_widgetStyle ); - - m_widgetStyle = - gtk_style_copy( - gtk_widget_get_style( m_widget ) ); - - return m_widgetStyle; -} - -void wxWindow::SetWidgetStyle() -{ - GtkStyle *style = GetWidgetStyle(); - - gdk_font_unref( style->font ); - style->font = gdk_font_ref( m_font.GetInternalFont( 1.0 ) ); - - if (m_foregroundColour.Ok()) - { - m_foregroundColour.CalcPixel( gdk_window_get_colormap( m_widget->window ) ); - style->fg[GTK_STATE_NORMAL] = *m_foregroundColour.GetColor(); - style->fg[GTK_STATE_PRELIGHT] = *m_foregroundColour.GetColor(); - style->fg[GTK_STATE_ACTIVE] = *m_foregroundColour.GetColor(); - } - - if (m_backgroundColour.Ok()) - { - m_backgroundColour.CalcPixel( gdk_window_get_colormap( m_widget->window ) ); - style->bg[GTK_STATE_NORMAL] = *m_backgroundColour.GetColor(); - style->base[GTK_STATE_NORMAL] = *m_backgroundColour.GetColor(); - style->bg[GTK_STATE_PRELIGHT] = *m_backgroundColour.GetColor(); - style->base[GTK_STATE_PRELIGHT] = *m_backgroundColour.GetColor(); - style->bg[GTK_STATE_ACTIVE] = *m_backgroundColour.GetColor(); - style->base[GTK_STATE_ACTIVE] = *m_backgroundColour.GetColor(); - style->bg[GTK_STATE_INSENSITIVE] = *m_backgroundColour.GetColor(); - style->base[GTK_STATE_INSENSITIVE] = *m_backgroundColour.GetColor(); - } -} - -void wxWindow::ApplyWidgetStyle() -{ -} - -bool wxWindow::Validate() -{ - wxCHECK_MSG( m_widget != NULL, FALSE, "invalid window" ); - - wxNode *node = m_children.First(); - while (node) - { - wxWindow *child = (wxWindow *)node->Data(); - if (child->GetValidator() && /* child->GetValidator()->Ok() && */ !child->GetValidator()->Validate(this)) - { - return FALSE; - } - node = node->Next(); - } - return TRUE; -} - -bool wxWindow::TransferDataToWindow() -{ - wxCHECK_MSG( m_widget != NULL, FALSE, "invalid window" ); - - wxNode *node = m_children.First(); - while (node) - { - wxWindow *child = (wxWindow *)node->Data(); - if (child->GetValidator() && /* child->GetValidator()->Ok() && */ - !child->GetValidator()->TransferToWindow() ) - { - wxMessageBox( _("Application Error"), _("Could not transfer data to window"), wxOK|wxICON_EXCLAMATION ); - return FALSE; - } - node = node->Next(); - } - return TRUE; -} - -bool wxWindow::TransferDataFromWindow() -{ - wxCHECK_MSG( m_widget != NULL, FALSE, "invalid window" ); - - wxNode *node = m_children.First(); - while (node) - { - wxWindow *child = (wxWindow *)node->Data(); - if ( child->GetValidator() && /* child->GetValidator()->Ok() && */ !child->GetValidator()->TransferFromWindow() ) - { - return FALSE; - } - node = node->Next(); - } - return TRUE; -} - -void wxWindow::SetAcceleratorTable( const wxAcceleratorTable& accel ) -{ - m_acceleratorTable = accel; -} - -void wxWindow::OnInitDialog( wxInitDialogEvent &WXUNUSED(event) ) -{ - TransferDataToWindow(); -} - -void wxWindow::InitDialog() -{ - wxCHECK_RET( m_widget != NULL, "invalid window" ); - - wxInitDialogEvent event(GetId()); - event.SetEventObject( this ); - GetEventHandler()->ProcessEvent(event); -} - -static void SetInvokingWindow( wxMenu *menu, wxWindow *win ) -{ - menu->SetInvokingWindow( win ); - wxNode *node = menu->m_items.First(); - while (node) - { - wxMenuItem *menuitem = (wxMenuItem*)node->Data(); - if (menuitem->IsSubMenu()) - { - SetInvokingWindow( menuitem->GetSubMenu(), win ); - } - node = node->Next(); - } -} - -static gint gs_pop_x = 0; -static gint gs_pop_y = 0; - -static void pop_pos_callback( GtkMenu *menu, gint *x, gint *y, wxWindow *win ) -{ - win->ClientToScreen( &gs_pop_x, &gs_pop_y ); - *x = gs_pop_x; - *y = gs_pop_y; -} - -bool wxWindow::PopupMenu( wxMenu *menu, int x, int y ) -{ - wxCHECK_MSG( m_widget != NULL, FALSE, "invalid window" ); - - wxCHECK_MSG( menu != NULL, FALSE, "invalid popup-menu" ); - - SetInvokingWindow( menu, this ); - - gs_pop_x = x; - gs_pop_y = y; - - gtk_menu_popup( - GTK_MENU(menu->m_menu), - (GtkWidget *) NULL, // parent menu shell - (GtkWidget *) NULL, // parent menu item - (GtkMenuPositionFunc) pop_pos_callback, - (gpointer) this, // client data - 0, // button used to activate it - 0 //gs_timeLastClick // the time of activation - ); - return TRUE; -} - -#if wxUSE_DRAG_AND_DROP - -void wxWindow::SetDropTarget( wxDropTarget *dropTarget ) -{ - wxCHECK_RET( m_widget != NULL, "invalid window" ); - - GtkWidget *dnd_widget = GetConnectWidget(); - - if (m_dropTarget) m_dropTarget->UnregisterWidget( dnd_widget ); - - if (m_dropTarget) delete m_dropTarget; - m_dropTarget = dropTarget; - - if (m_dropTarget) m_dropTarget->RegisterWidget( dnd_widget ); -} - -wxDropTarget *wxWindow::GetDropTarget() const -{ - return m_dropTarget; -} - -#endif - -GtkWidget* wxWindow::GetConnectWidget() -{ - GtkWidget *connect_widget = m_widget; - if (m_wxwindow) connect_widget = m_wxwindow; - - return connect_widget; -} - -bool wxWindow::IsOwnGtkWindow( GdkWindow *window ) -{ - if (m_wxwindow) return (window == m_wxwindow->window); - return (window == m_widget->window); -} - -void wxWindow::SetFont( const wxFont &font ) -{ - wxCHECK_RET( m_widget != NULL, "invalid window" ); - - if (((wxFont*)&font)->Ok()) - m_font = font; - else - m_font = *wxSWISS_FONT; - - wxColour sysbg = wxSystemSettings::GetSystemColour( wxSYS_COLOUR_BTNFACE ); - if (sysbg.Red() == m_backgroundColour.Red() && - sysbg.Green() == m_backgroundColour.Green() && - sysbg.Blue() == m_backgroundColour.Blue()) - { - m_backgroundColour = wxNullColour; - ApplyWidgetStyle(); - m_backgroundColour = sysbg; - } - else - { - ApplyWidgetStyle(); - } -} - -void wxWindow::SetWindowStyleFlag( long flag ) -{ - m_windowStyle = flag; -} - -long wxWindow::GetWindowStyleFlag() const -{ - return m_windowStyle; -} - -void wxWindow::CaptureMouse() -{ - wxCHECK_RET( m_widget != NULL, "invalid window" ); - - wxCHECK_RET( g_capturing == FALSE, "CaptureMouse called twice" ); - - GtkWidget *connect_widget = GetConnectWidget(); - gtk_grab_add( connect_widget ); - gdk_pointer_grab( connect_widget->window, FALSE, - (GdkEventMask) - (GDK_BUTTON_PRESS_MASK | - GDK_BUTTON_RELEASE_MASK | - GDK_POINTER_MOTION_MASK), - (GdkWindow *) NULL, - (GdkCursor *) NULL, - GDK_CURRENT_TIME ); - g_capturing = TRUE; -} - -void wxWindow::ReleaseMouse() -{ - wxCHECK_RET( m_widget != NULL, "invalid window" ); - - wxCHECK_RET( g_capturing == TRUE, "ReleaseMouse called twice" ); - - GtkWidget *connect_widget = GetConnectWidget(); - gtk_grab_remove( connect_widget ); - gdk_pointer_ungrab ( GDK_CURRENT_TIME ); - g_capturing = FALSE; -} - -void wxWindow::SetTitle( const wxString &WXUNUSED(title) ) -{ -} - -wxString wxWindow::GetTitle() const -{ - return (wxString&)m_windowName; -} - -wxString wxWindow::GetLabel() const -{ - return GetTitle(); -} - -void wxWindow::SetName( const wxString &name ) -{ - m_windowName = name; -} - -wxString wxWindow::GetName() const -{ - return (wxString&)m_windowName; -} - -bool wxWindow::IsShown() const -{ - return m_isShown; -} - -bool wxWindow::IsRetained() -{ - return FALSE; -} - -wxWindow *wxWindow::FindWindow( long id ) -{ - if (id == m_windowId) return this; - wxNode *node = m_children.First(); - while (node) - { - wxWindow *child = (wxWindow*)node->Data(); - wxWindow *res = child->FindWindow( id ); - if (res) return res; - node = node->Next(); - } - return (wxWindow *) NULL; -} - -wxWindow *wxWindow::FindWindow( const wxString& name ) -{ - if (name == m_windowName) return this; - wxNode *node = m_children.First(); - while (node) - { - wxWindow *child = (wxWindow*)node->Data(); - wxWindow *res = child->FindWindow( name ); - if (res) return res; - node = node->Next(); - } - return (wxWindow *) NULL; -} - -void wxWindow::SetScrollbar( int orient, int pos, int thumbVisible, - int range, bool refresh ) -{ - wxCHECK_RET( m_widget != NULL, "invalid window" ); - - wxCHECK_RET( m_wxwindow != NULL, "window needs client area for scrolling" ); - - m_hasScrolling = TRUE; - - if (orient == wxHORIZONTAL) - { - float fpos = (float)pos; - float frange = (float)range; - float fthumb = (float)thumbVisible; - if (fpos > frange-fthumb) fpos = frange-fthumb; - if (fpos < 0.0) fpos = 0.0; - - if ((fabs(frange-m_hAdjust->upper) < 0.2) && - (fabs(fthumb-m_hAdjust->page_size) < 0.2)) - { - SetScrollPos( orient, pos, refresh ); - return; - } - - m_oldHorizontalPos = fpos; - - m_hAdjust->lower = 0.0; - m_hAdjust->upper = frange; - m_hAdjust->value = fpos; - m_hAdjust->step_increment = 1.0; - m_hAdjust->page_increment = (float)(wxMax(fthumb,0)); - m_hAdjust->page_size = fthumb; - } - else - { - float fpos = (float)pos; - float frange = (float)range; - float fthumb = (float)thumbVisible; - if (fpos > frange-fthumb) fpos = frange-fthumb; - if (fpos < 0.0) fpos = 0.0; - - if ((fabs(frange-m_vAdjust->upper) < 0.2) && - (fabs(fthumb-m_vAdjust->page_size) < 0.2)) - { - SetScrollPos( orient, pos, refresh ); - return; - } - - m_oldVerticalPos = fpos; - - m_vAdjust->lower = 0.0; - m_vAdjust->upper = frange; - m_vAdjust->value = fpos; - m_vAdjust->step_increment = 1.0; - m_vAdjust->page_increment = (float)(wxMax(fthumb,0)); - m_vAdjust->page_size = fthumb; - } - - if (m_wxwindow->window) - { - if (orient == wxHORIZONTAL) - gtk_signal_emit_by_name( GTK_OBJECT(m_hAdjust), "changed" ); - else - gtk_signal_emit_by_name( GTK_OBJECT(m_vAdjust), "changed" ); - - gtk_widget_set_usize( m_widget, m_width, m_height ); - } -} - -void wxWindow::SetScrollPos( int orient, int pos, bool WXUNUSED(refresh) ) -{ - wxCHECK_RET( m_widget != NULL, "invalid window" ); - - wxCHECK_RET( m_wxwindow != NULL, "window needs client area for scrolling" ); - - if (orient == wxHORIZONTAL) - { - float fpos = (float)pos; - if (fpos > m_hAdjust->upper - m_hAdjust->page_size) fpos = m_hAdjust->upper - m_hAdjust->page_size; - if (fpos < 0.0) fpos = 0.0; - m_oldHorizontalPos = fpos; - - if (fabs(fpos-m_hAdjust->value) < 0.2) return; - m_hAdjust->value = fpos; - } - else - { - float fpos = (float)pos; - if (fpos > m_vAdjust->upper - m_vAdjust->page_size) fpos = m_vAdjust->upper - m_vAdjust->page_size; - if (fpos < 0.0) fpos = 0.0; - m_oldVerticalPos = fpos; - - if (fabs(fpos-m_vAdjust->value) < 0.2) return; - m_vAdjust->value = fpos; - } - - if (!m_isScrolling) - { - if (m_wxwindow->window) - { - if (orient == wxHORIZONTAL) - gtk_signal_emit_by_name( GTK_OBJECT(m_hAdjust), "value_changed" ); - else - gtk_signal_emit_by_name( GTK_OBJECT(m_vAdjust), "value_changed" ); - } - } -} - -int wxWindow::GetScrollThumb( int orient ) const -{ - wxCHECK_MSG( m_widget != NULL, 0, "invalid window" ); - - wxCHECK_MSG( m_wxwindow != NULL, 0, "window needs client area for scrolling" ); - - if (orient == wxHORIZONTAL) - return (int)(m_hAdjust->page_size+0.5); - else - return (int)(m_vAdjust->page_size+0.5); -} - -int wxWindow::GetScrollPos( int orient ) const -{ - wxCHECK_MSG( m_widget != NULL, 0, "invalid window" ); - - wxCHECK_MSG( m_wxwindow != NULL, 0, "window needs client area for scrolling" ); - - if (orient == wxHORIZONTAL) - return (int)(m_hAdjust->value+0.5); - else - return (int)(m_vAdjust->value+0.5); -} - -int wxWindow::GetScrollRange( int orient ) const -{ - wxCHECK_MSG( m_widget != NULL, 0, "invalid window" ); - - wxCHECK_MSG( m_wxwindow != NULL, 0, "window needs client area for scrolling" ); - - if (orient == wxHORIZONTAL) - return (int)(m_hAdjust->upper+0.5); - else - return (int)(m_vAdjust->upper+0.5); -} - -void wxWindow::ScrollWindow( int dx, int dy, const wxRect* WXUNUSED(rect) ) -{ - wxCHECK_RET( m_widget != NULL, "invalid window" ); - - wxCHECK_RET( m_wxwindow != NULL, "window needs client area for scrolling" ); - - int cw = 0; - int ch = 0; - GetClientSize( &cw, &ch ); - - int w = cw - abs(dx); - int h = ch - abs(dy); - if ((h < 0) || (w < 0)) - { - Refresh(); - return; - } - int s_x = 0; - int s_y = 0; - if (dx < 0) s_x = -dx; - if (dy < 0) s_y = -dy; - int d_x = 0; - int d_y = 0; - if (dx > 0) d_x = dx; - if (dy > 0) d_y = dy; - - if (!m_scrollGC) - { - m_scrollGC = gdk_gc_new( m_wxwindow->window ); - gdk_gc_set_exposures( m_scrollGC, TRUE ); - } - - gdk_window_copy_area( m_wxwindow->window, m_scrollGC, d_x, d_y, - m_wxwindow->window, s_x, s_y, w, h ); - - wxRect rect; - if (dx < 0) rect.x = cw+dx; else rect.x = 0; - if (dy < 0) rect.y = ch+dy; else rect.y = 0; - if (dy != 0) rect.width = cw; else rect.width = abs(dx); - if (dx != 0) rect.height = ch; else rect.height = abs(dy); - - Refresh( TRUE, &rect ); -} - -//------------------------------------------------------------------------------------- -// Layout -//------------------------------------------------------------------------------------- - -wxLayoutConstraints *wxWindow::GetConstraints() const -{ - return m_constraints; -} - -void wxWindow::SetConstraints( wxLayoutConstraints *constraints ) -{ - if (m_constraints) - { - UnsetConstraints(m_constraints); - delete m_constraints; - } - m_constraints = constraints; - if (m_constraints) - { - // Make sure other windows know they're part of a 'meaningful relationship' - if (m_constraints->left.GetOtherWindow() && (m_constraints->left.GetOtherWindow() != this)) - m_constraints->left.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->top.GetOtherWindow() && (m_constraints->top.GetOtherWindow() != this)) - m_constraints->top.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->right.GetOtherWindow() && (m_constraints->right.GetOtherWindow() != this)) - m_constraints->right.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->bottom.GetOtherWindow() && (m_constraints->bottom.GetOtherWindow() != this)) - m_constraints->bottom.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->width.GetOtherWindow() && (m_constraints->width.GetOtherWindow() != this)) - m_constraints->width.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->height.GetOtherWindow() && (m_constraints->height.GetOtherWindow() != this)) - m_constraints->height.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->centreX.GetOtherWindow() && (m_constraints->centreX.GetOtherWindow() != this)) - m_constraints->centreX.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->centreY.GetOtherWindow() && (m_constraints->centreY.GetOtherWindow() != this)) - m_constraints->centreY.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - } -; -} -; - -void wxWindow::SetAutoLayout( bool autoLayout ) -{ - m_autoLayout = autoLayout; -} - -bool wxWindow::GetAutoLayout() const -{ - return m_autoLayout; -} - -wxSizer *wxWindow::GetSizer() const -{ - return m_windowSizer; -} - -void wxWindow::SetSizerParent( wxWindow *win ) -{ - m_sizerParent = win; -} - -wxWindow *wxWindow::GetSizerParent() const -{ - return m_sizerParent; -} - -// This removes any dangling pointers to this window -// in other windows' constraintsInvolvedIn lists. -void wxWindow::UnsetConstraints(wxLayoutConstraints *c) -{ - if (c) - { - if (c->left.GetOtherWindow() && (c->top.GetOtherWindow() != this)) - c->left.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->top.GetOtherWindow() && (c->top.GetOtherWindow() != this)) - c->top.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->right.GetOtherWindow() && (c->right.GetOtherWindow() != this)) - c->right.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->bottom.GetOtherWindow() && (c->bottom.GetOtherWindow() != this)) - c->bottom.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->width.GetOtherWindow() && (c->width.GetOtherWindow() != this)) - c->width.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->height.GetOtherWindow() && (c->height.GetOtherWindow() != this)) - c->height.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->centreX.GetOtherWindow() && (c->centreX.GetOtherWindow() != this)) - c->centreX.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->centreY.GetOtherWindow() && (c->centreY.GetOtherWindow() != this)) - c->centreY.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - } -} - -// Back-pointer to other windows we're involved with, so if we delete -// this window, we must delete any constraints we're involved with. -void wxWindow::AddConstraintReference(wxWindow *otherWin) -{ - if (!m_constraintsInvolvedIn) - m_constraintsInvolvedIn = new wxList; - if (!m_constraintsInvolvedIn->Member(otherWin)) - m_constraintsInvolvedIn->Append(otherWin); -} - -// REMOVE back-pointer to other windows we're involved with. -void wxWindow::RemoveConstraintReference(wxWindow *otherWin) -{ - if (m_constraintsInvolvedIn) - m_constraintsInvolvedIn->DeleteObject(otherWin); -} - -// Reset any constraints that mention this window -void wxWindow::DeleteRelatedConstraints() -{ - if (m_constraintsInvolvedIn) - { - wxNode *node = m_constraintsInvolvedIn->First(); - while (node) - { - wxWindow *win = (wxWindow *)node->Data(); - wxNode *next = node->Next(); - wxLayoutConstraints *constr = win->GetConstraints(); - - // Reset any constraints involving this window - if (constr) - { - constr->left.ResetIfWin((wxWindow *)this); - constr->top.ResetIfWin((wxWindow *)this); - constr->right.ResetIfWin((wxWindow *)this); - constr->bottom.ResetIfWin((wxWindow *)this); - constr->width.ResetIfWin((wxWindow *)this); - constr->height.ResetIfWin((wxWindow *)this); - constr->centreX.ResetIfWin((wxWindow *)this); - constr->centreY.ResetIfWin((wxWindow *)this); - } - delete node; - node = next; - } - delete m_constraintsInvolvedIn; - m_constraintsInvolvedIn = (wxList *) NULL; - } -} - -void wxWindow::SetSizer(wxSizer *sizer) -{ - m_windowSizer = sizer; - if (sizer) - sizer->SetSizerParent((wxWindow *)this); -} - -/* - * New version - */ - -bool wxWindow::Layout() -{ - if (GetConstraints()) - { - int w, h; - GetClientSize(&w, &h); - GetConstraints()->width.SetValue(w); - GetConstraints()->height.SetValue(h); - } - - // If top level (one sizer), evaluate the sizer's constraints. - if (GetSizer()) - { - int noChanges; - GetSizer()->ResetConstraints(); // Mark all constraints as unevaluated - GetSizer()->LayoutPhase1(&noChanges); - GetSizer()->LayoutPhase2(&noChanges); - GetSizer()->SetConstraintSizes(); // Recursively set the real window sizes - return TRUE; - } - else - { - // Otherwise, evaluate child constraints - ResetConstraints(); // Mark all constraints as unevaluated - DoPhase(1); // Just one phase need if no sizers involved - DoPhase(2); - SetConstraintSizes(); // Recursively set the real window sizes - } - return TRUE; -} - - -// Do a phase of evaluating constraints: -// the default behaviour. wxSizers may do a similar -// thing, but also impose their own 'constraints' -// and order the evaluation differently. -bool wxWindow::LayoutPhase1(int *noChanges) -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - return constr->SatisfyConstraints((wxWindow *)this, noChanges); - } - else - return TRUE; -} - -bool wxWindow::LayoutPhase2(int *noChanges) -{ - *noChanges = 0; - - // Layout children - DoPhase(1); - DoPhase(2); - return TRUE; -} - -// Do a phase of evaluating child constraints -bool wxWindow::DoPhase(int phase) -{ - int noIterations = 0; - int maxIterations = 500; - int noChanges = 1; - int noFailures = 0; - wxList succeeded; - while ((noChanges > 0) && (noIterations < maxIterations)) - { - noChanges = 0; - noFailures = 0; - wxNode *node = m_children.First(); - while (node) - { - wxWindow *child = (wxWindow *)node->Data(); - if (!child->IsKindOf(CLASSINFO(wxFrame)) && !child->IsKindOf(CLASSINFO(wxDialog))) - { - wxLayoutConstraints *constr = child->GetConstraints(); - if (constr) - { - if (succeeded.Member(child)) - { - } - else - { - int tempNoChanges = 0; - bool success = ( (phase == 1) ? child->LayoutPhase1(&tempNoChanges) : child->LayoutPhase2(&tempNoChanges) ) ; - noChanges += tempNoChanges; - if (success) - { - succeeded.Append(child); - } - } - } - } - node = node->Next(); - } - noIterations ++; - } - return TRUE; -} - -void wxWindow::ResetConstraints() -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - constr->left.SetDone(FALSE); - constr->top.SetDone(FALSE); - constr->right.SetDone(FALSE); - constr->bottom.SetDone(FALSE); - constr->width.SetDone(FALSE); - constr->height.SetDone(FALSE); - constr->centreX.SetDone(FALSE); - constr->centreY.SetDone(FALSE); - } - wxNode *node = m_children.First(); - while (node) - { - wxWindow *win = (wxWindow *)node->Data(); - if (!win->IsKindOf(CLASSINFO(wxFrame)) && !win->IsKindOf(CLASSINFO(wxDialog))) - win->ResetConstraints(); - node = node->Next(); - } -} - -// Need to distinguish between setting the 'fake' size for -// windows and sizers, and setting the real values. -void wxWindow::SetConstraintSizes(bool recurse) -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr && constr->left.GetDone() && constr->right.GetDone() && - constr->width.GetDone() && constr->height.GetDone()) - { - int x = constr->left.GetValue(); - int y = constr->top.GetValue(); - int w = constr->width.GetValue(); - int h = constr->height.GetValue(); - - // If we don't want to resize this window, just move it... - if ((constr->width.GetRelationship() != wxAsIs) || - (constr->height.GetRelationship() != wxAsIs)) - { - // Calls Layout() recursively. AAAGH. How can we stop that. - // Simply take Layout() out of non-top level OnSizes. - SizerSetSize(x, y, w, h); - } - else - { - SizerMove(x, y); - } - } - else if (constr) - { - char *windowClass = this->GetClassInfo()->GetClassName(); - - wxString winName; - if (GetName() == "") - winName = "unnamed"; - else - winName = GetName(); - wxLogDebug( "Constraint(s) not satisfied for window of type %s, name %s:\n", - (const char *)windowClass, - (const char *)winName); - if (!constr->left.GetDone()) wxLogDebug( " unsatisfied 'left' constraint.\n" ); - if (!constr->right.GetDone()) wxLogDebug( " unsatisfied 'right' constraint.\n" ); - if (!constr->width.GetDone()) wxLogDebug( " unsatisfied 'width' constraint.\n" ); - if (!constr->height.GetDone()) wxLogDebug( " unsatisfied 'height' constraint.\n" ); - wxLogDebug( "Please check constraints: try adding AsIs() constraints.\n" ); - } - - if (recurse) - { - wxNode *node = m_children.First(); - while (node) - { - wxWindow *win = (wxWindow *)node->Data(); - if (!win->IsKindOf(CLASSINFO(wxFrame)) && !win->IsKindOf(CLASSINFO(wxDialog))) - win->SetConstraintSizes(); - node = node->Next(); - } - } -} - -// This assumes that all sizers are 'on' the same -// window, i.e. the parent of this window. -void wxWindow::TransformSizerToActual(int *x, int *y) const -{ - if (!m_sizerParent || m_sizerParent->IsKindOf(CLASSINFO(wxDialog)) || - m_sizerParent->IsKindOf(CLASSINFO(wxFrame)) ) - return; - - int xp, yp; - m_sizerParent->GetPosition(&xp, &yp); - m_sizerParent->TransformSizerToActual(&xp, &yp); - *x += xp; - *y += yp; -} - -void wxWindow::SizerSetSize(int x, int y, int w, int h) -{ - int xx = x; - int yy = y; - TransformSizerToActual(&xx, &yy); - SetSize(xx, yy, w, h); -} - -void wxWindow::SizerMove(int x, int y) -{ - int xx = x; - int yy = y; - TransformSizerToActual(&xx, &yy); - Move(xx, yy); -} - -// Only set the size/position of the constraint (if any) -void wxWindow::SetSizeConstraint(int x, int y, int w, int h) -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - if (x != -1) - { - constr->left.SetValue(x); - constr->left.SetDone(TRUE); - } - if (y != -1) - { - constr->top.SetValue(y); - constr->top.SetDone(TRUE); - } - if (w != -1) - { - constr->width.SetValue(w); - constr->width.SetDone(TRUE); - } - if (h != -1) - { - constr->height.SetValue(h); - constr->height.SetDone(TRUE); - } - } -} - -void wxWindow::MoveConstraint(int x, int y) -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - if (x != -1) - { - constr->left.SetValue(x); - constr->left.SetDone(TRUE); - } - if (y != -1) - { - constr->top.SetValue(y); - constr->top.SetDone(TRUE); - } - } -} - -void wxWindow::GetSizeConstraint(int *w, int *h) const -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - *w = constr->width.GetValue(); - *h = constr->height.GetValue(); - } - else - GetSize(w, h); -} - -void wxWindow::GetClientSizeConstraint(int *w, int *h) const -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - *w = constr->width.GetValue(); - *h = constr->height.GetValue(); - } - else - GetClientSize(w, h); -} - -void wxWindow::GetPositionConstraint(int *x, int *y) const -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - *x = constr->left.GetValue(); - *y = constr->top.GetValue(); - } - else - GetPosition(x, y); -} - diff --git a/src/iodbc/AUTHORS b/src/iodbc/AUTHORS deleted file mode 100644 index 4168f05912..0000000000 --- a/src/iodbc/AUTHORS +++ /dev/null @@ -1,4 +0,0 @@ -Written by Ke Jin - -Additions by OpenLink Software Inc. http://www.openlinksw.com/ -Contact: Patrick van Kleef diff --git a/src/iodbc/COPYING b/src/iodbc/COPYING deleted file mode 100644 index 79d009a2fb..0000000000 --- a/src/iodbc/COPYING +++ /dev/null @@ -1,482 +0,0 @@ - GNU LIBRARY GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1991 Free Software Foundation, Inc. - 675 Mass Ave, Cambridge, MA 02139, USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the library GPL. It is - numbered 2 because it goes with version 2 of the ordinary GPL.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Library General Public License, applies to some -specially designated Free Software Foundation software, and to any -other libraries whose authors decide to use it. You can use it for -your libraries, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if -you distribute copies of the library, or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link a program with the library, you must provide -complete object files to the recipients so that they can relink them -with the library, after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - Our method of protecting your rights has two steps: (1) copyright -the library, and (2) offer you this license which gives you legal -permission to copy, distribute and/or modify the library. - - Also, for each distributor's protection, we want to make certain -that everyone understands that there is no warranty for this free -library. If the library is modified by someone else and passed on, we -want its recipients to know that what they have is not the original -version, so that any problems introduced by others will not reflect on -the original authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that companies distributing free -software will individually obtain patent licenses, thus in effect -transforming the program into proprietary software. To prevent this, -we have made it clear that any patent must be licensed for everyone's -free use or not licensed at all. - - Most GNU software, including some libraries, is covered by the ordinary -GNU General Public License, which was designed for utility programs. This -license, the GNU Library General Public License, applies to certain -designated libraries. This license is quite different from the ordinary -one; be sure to read it in full, and don't assume that anything in it is -the same as in the ordinary license. - - The reason we have a separate public license for some libraries is that -they blur the distinction we usually make between modifying or adding to a -program and simply using it. Linking a program with a library, without -changing the library, is in some sense simply using the library, and is -analogous to running a utility program or application program. However, in -a textual and legal sense, the linked executable is a combined work, a -derivative of the original library, and the ordinary General Public License -treats it as such. - - Because of this blurred distinction, using the ordinary General -Public License for libraries did not effectively promote software -sharing, because most developers did not use the libraries. We -concluded that weaker conditions might promote sharing better. - - However, unrestricted linking of non-free programs would deprive the -users of those programs of all benefit from the free status of the -libraries themselves. This Library General Public License is intended to -permit developers of non-free programs to use free libraries, while -preserving your freedom as a user of such programs to change the free -libraries that are incorporated in them. (We have not seen how to achieve -this as regards changes in header files, but we have achieved it as regards -changes in the actual functions of the Library.) The hope is that this -will lead to faster development of free libraries. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, while the latter only -works together with the library. - - Note that it is possible for a library to be covered by the ordinary -General Public License rather than by this special one. - - GNU LIBRARY GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library which -contains a notice placed by the copyright holder or other authorized -party saying it may be distributed under the terms of this Library -General Public License (also called "this License"). Each licensee is -addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also compile or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - c) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - d) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the source code distributed need not include anything that is normally -distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Library General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - Appendix: How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - 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, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! - diff --git a/src/iodbc/Changes.log b/src/iodbc/Changes.log deleted file mode 100644 index e7c359f2b3..0000000000 --- a/src/iodbc/Changes.log +++ /dev/null @@ -1,67 +0,0 @@ -January 18, 1999, V2.50: - * Added autoconf/automake/libtool support - * Licensing moved to LGPL - * Added OpenLink code enhancements and bug fixes - ------------------------------------------------------------------------- -Original Changelog from Ke Jin ------------------------------------------------------------------------- -July 30, 1995, v2.00.beta: - 0. the first release and beta version. - -Sep. 11, 1995, v2.10: - 1. Porting to AIX 3.x and 4.x, by writing dlopen(), - dlsym(), dlclose() interface. - 2. Tested on SCO OpenServer 5.x - 3. Awared of that, unlike s700/s800, exported function - symbols on HP9000 s300/s400 will be prepended with - a '_' prefix by compiler(and this '_' prefix is not - automatically handled by shl_findsym()). Now, it works - fine on s300/s400. - 4. Support driver ODBC call tracing. - -Oct. 12, 1995, v2.11: - 5. Driver's SQLNumResultCols() will automatically be - invoked in driver manager's SQLExecute(), - SQLExecDirect() and SQLParamData() after successfully - (i.e. return SQL_SUCCESS or SQL_SUCCESS_WITH_INFO ) - calling of their correspondent driver functions. This - simplifies the state tracing/checking of the driver - manager a lot and allows store procedures to return - result set and also make iODBC driver manager work - properly with SELECT INTO statements which actually - don't return result sets. - 6. Memory leaks are cleared. - 7. Two bugs in dld.c for AIX are fixed - 8. A bug of setting tracing option is fixed. - 9. The driver will not be unloaded by SQLDisconnect() - but by SQLFreeConnect() or next SQLConnect()/ - SQLDriverConnect()/SQLBrowsConnect() on a different - driver. This will save driver's loading time if it - has been used by a previous connection(even there - is no active connection on this driver). - 10.Another three platforms are supported: - FreeBSD 2.x - Concurrent Max/OS SVR4 1.x - DG/UX 5.x - 11.autoconfig and build -- shell scripts to help modifying - Config.mk and building iodbc driver manager - -Nov. 12, 1995, v2.12 - 12.I realized that a driver manager doesn't aware of - difference between a C5 (i.e. hstmt) and a C6 - (i.e. transaction) states. - 13.The link flags "-lc" has been droped from Linux ELF - section of Config.mk to fix a segment fault problem. - Now, it works fine on Slackware 2.3 and Red Hat 2.0 - (kernel version are 1.2.xx and 1.3.xx respectively). - 14.On FreeBSD 2.x, dlsym() doesn't handle the '_' prefix - prepended to an exportting function symbol by compiler. - So, CLI_NAME_PREFIX needs to be defined as "_SQL" for - FreeBSD 2.x. - 15.Some files are renamed - dld.c -> dlf.c - dld.h -> dlf.h - confg.h -> config.h - 16. Fix a bug on setting tracing options. - diff --git a/src/iodbc/IAFA-PACKAGE b/src/iodbc/IAFA-PACKAGE deleted file mode 100644 index a53af75fec..0000000000 --- a/src/iodbc/IAFA-PACKAGE +++ /dev/null @@ -1,40 +0,0 @@ -Title: iODBC Driver Manager - -Version: 2.50 - -Description: iODBC (intrinsic Open Database Connectivity) driver manager - is compatible with ODBC 2.x specification and performs exactly - same jobs of ODBC 2.x driver manager(i.e. driver loading, - Parameters and function sequence checking, driver's function - Invoking, etc.). Any ODBC driver works with ODBC 2.0 driver - Manager will also work with iODBC driver manager and vice versa. - Applications (using ODBC function calls) linked with - iODBC driver manager will be able to simultaneously access - different type of data sources within one process through - suitable iODBC drivers. - -Original Author: Jin, Ke -Source Code Enhancement Contributors: OpenLink Software -Maintainers: OpenLink Software -Web Site: http://www.openlinksw.com - -Platforms: SunOS (Sparc) 4.1.x - HP/UX (s700/s800) 9.x, 10.x - HP/UX (s300/s400) 9.x - IBM AIX 3.x, 4.x - Solaris (Sparc) 2.x - Solaris (PCx86) 2.x - SGI Irix 5.x, 6.x - NCR SVR4 3.x - UnixWare SVR4.2 1.x, 2.x - DEC Unix (OSF/1) 3.x, 4.x - FreeBSD 2.x - BSDI BSD/OS 2.x - Linux ELF 1.2.x - SCO OpenServer 5.x - Concurrent MAX/OS 1.x - DG/UX 5.x - -License Policy: Freely Redistributable under GNU Library General Public License (LGPL) - -Keywords: ODBC, database, SQL, OpenLink diff --git a/src/iodbc/INSTALL b/src/iodbc/INSTALL deleted file mode 100644 index b42a17ac46..0000000000 --- a/src/iodbc/INSTALL +++ /dev/null @@ -1,182 +0,0 @@ -Basic Installation -================== - - These are generic installation instructions. - - The `configure' shell script attempts to guess correct values for -various system-dependent variables used during compilation. It uses -those values to create a `Makefile' in each directory of the package. -It may also create one or more `.h' files containing system-dependent -definitions. Finally, it creates a shell script `config.status' that -you can run in the future to recreate the current configuration, a file -`config.cache' that saves the results of its tests to speed up -reconfiguring, and a file `config.log' containing compiler output -(useful mainly for debugging `configure'). - - If you need to do unusual things to compile the package, please try -to figure out how `configure' could check whether to do them, and mail -diffs or instructions to the address given in the `README' so they can -be considered for the next release. If at some point `config.cache' -contains results you don't want to keep, you may remove or edit it. - - The file `configure.in' is used to create `configure' by a program -called `autoconf'. You only need `configure.in' if you want to change -it or regenerate `configure' using a newer version of `autoconf'. - -The simplest way to compile this package is: - - 1. `cd' to the directory containing the package's source code and type - `./configure' to configure the package for your system. If you're - using `csh' on an old version of System V, you might need to type - `sh ./configure' instead to prevent `csh' from trying to execute - `configure' itself. - - Running `configure' takes awhile. While running, it prints some - messages telling which features it is checking for. - - 2. Type `make' to compile the package. - - 3. Optionally, type `make check' to run any self-tests that come with - the package. - - 4. Type `make install' to install the programs and any data files and - documentation. - - 5. You can remove the program binaries and object files from the - source code directory by typing `make clean'. To also remove the - files that `configure' created (so you can compile the package for - a different kind of computer), type `make distclean'. There is - also a `make maintainer-clean' target, but that is intended mainly - for the package's developers. If you use it, you may have to get - all sorts of other programs in order to regenerate files that came - with the distribution. - -Compilers and Options -===================== - - Some systems require unusual options for compilation or linking that -the `configure' script does not know about. You can give `configure' -initial values for variables by setting them in the environment. Using -a Bourne-compatible shell, you can do that on the command line like -this: - CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure - -Or on systems that have the `env' program, you can do it like this: - env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure - -Compiling For Multiple Architectures -==================================== - - You can compile the package for more than one kind of computer at the -same time, by placing the object files for each architecture in their -own directory. To do this, you must use a version of `make' that -supports the `VPATH' variable, such as GNU `make'. `cd' to the -directory where you want the object files and executables to go and run -the `configure' script. `configure' automatically checks for the -source code in the directory that `configure' is in and in `..'. - - If you have to use a `make' that does not supports the `VPATH' -variable, you have to compile the package for one architecture at a time -in the source code directory. After you have installed the package for -one architecture, use `make distclean' before reconfiguring for another -architecture. - -Installation Names -================== - - By default, `make install' will install the package's files in -`/usr/local/bin', `/usr/local/man', etc. You can specify an -installation prefix other than `/usr/local' by giving `configure' the -option `--prefix=PATH'. - - You can specify separate installation prefixes for -architecture-specific files and architecture-independent files. If you -give `configure' the option `--exec-prefix=PATH', the package will use -PATH as the prefix for installing programs and libraries. -Documentation and other data files will still use the regular prefix. - - In addition, if you use an unusual directory layout you can give -options like `--bindir=PATH' to specify different values for particular -kinds of files. Run `configure --help' for a list of the directories -you can set and what kinds of files go in them. - - If the package supports it, you can cause programs to be installed -with an extra prefix or suffix on their names by giving `configure' the -option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. - -Optional Features -================= - - Some packages pay attention to `--enable-FEATURE' options to -`configure', where FEATURE indicates an optional part of the package. -They may also pay attention to `--with-PACKAGE' options, where PACKAGE -is something like `gnu-as' or `x' (for the X Window System). The -`README' should mention any `--enable-' and `--with-' options that the -package recognizes. - - For packages that use the X Window System, `configure' can usually -find the X include and library files automatically, but if it doesn't, -you can use the `configure' options `--x-includes=DIR' and -`--x-libraries=DIR' to specify their locations. - -Specifying the System Type -========================== - - There may be some features `configure' can not figure out -automatically, but needs to determine by the type of host the package -will run on. Usually `configure' can figure that out, but if it prints -a message saying it can not guess the host type, give it the -`--host=TYPE' option. TYPE can either be a short name for the system -type, such as `sun4', or a canonical name with three fields: - CPU-COMPANY-SYSTEM - -See the file `config.sub' for the possible values of each field. If -`config.sub' isn't included in this package, then this package doesn't -need to know the host type. - - If you are building compiler tools for cross-compiling, you can also -use the `--target=TYPE' option to select the type of system they will -produce code for and the `--build=TYPE' option to select the type of -system on which you are compiling the package. - -Sharing Defaults -================ - - If you want to set default values for `configure' scripts to share, -you can create a site shell script called `config.site' that gives -default values for variables like `CC', `cache_file', and `prefix'. -`configure' looks for `PREFIX/share/config.site' if it exists, then -`PREFIX/etc/config.site' if it exists. Or, you can set the -`CONFIG_SITE' environment variable to the location of the site script. -A warning: not all `configure' scripts look for a site script. - -Operation Controls -================== - - `configure' recognizes the following options to control how it -operates. - -`--cache-file=FILE' - Use and save the results of the tests in FILE instead of - `./config.cache'. Set FILE to `/dev/null' to disable caching, for - debugging `configure'. - -`--help' - Print a summary of the options to `configure', and exit. - -`--quiet' -`--silent' -`-q' - Do not print messages saying which checks are being made. To - suppress all normal output, redirect it to `/dev/null' (any error - messages will still be shown). - -`--srcdir=DIR' - Look for the package's source code in directory DIR. Usually - `configure' can determine that directory automatically. - -`--version' - Print the version of Autoconf used to generate the `configure' - script, and exit. - -`configure' also accepts some other, not widely useful, options. diff --git a/src/iodbc/NEWS b/src/iodbc/NEWS deleted file mode 100644 index 27eb6d4202..0000000000 --- a/src/iodbc/NEWS +++ /dev/null @@ -1,8 +0,0 @@ -Version: 2.5 -------------- -Added OpenLink enhancements - - -Version: 2.12 -------------- -Original version of Ke Jin diff --git a/src/iodbc/README b/src/iodbc/README deleted file mode 100644 index 23cb2a5e82..0000000000 --- a/src/iodbc/README +++ /dev/null @@ -1,187 +0,0 @@ -0. Changes - a. I realized that a driver manager doesn't aware of - difference between a C5 (i.e. hstmt) and a C6 - (i.e. transaction) states. - - b. The link flags "-lc" has been removed from Linux ELF - section of Config.mk to fix a segment fault problem. - Now, it works fine on Slackware 2.3 and Red Hat 2.0 - (kernel version are 1.2.xx and 1.3.xx respectively). - - c. On FreeBSD 2.x, dlsym() doesn't handle the '_' - prepended before a exporting function symbol. So, - CLI_NAME_PREFIX needs to be defined as "_SQL" for - FreeBSD. - - d. Some files are renamed - dld.c -> dlf.c - dld.h -> dlf.h - confg.h -> config.h - -1. iODBC driver manager platform availability - - iODBC driver manager has been ported to following Unix platforms: - - SunOS 4.1.x Sun Sparc - HP/UX 9.x, 10.x HP9000 s700/s800 - HP/UX 9.x HP9000 s300/s400 - IBM AIX 3.x, 4.x IBM RS6000, PowerPC - Sun Solaris 2.x Sun Sparc, PCx86 - SGI Irix SVR4 5.x, 6.x IP12 MIPS, IP22 MIPS - NCR SVR4 3.x NCR 3435 - UnixWare SVR4.2 1.x, 2.x x86 - DEC Unix(OSF/1) 3.x, 4.x DEC Alpha - FreeBSD 2.x x86 - BSDI BSD/OS 2.x ? - Linux ELF 1.2.x, 1.3.x x86 - SCO OpenServer 5.x x86 - Max/OS SVR4 1.x Concurrent Maxion 9200 MP - DG/UX 5.x Aviion - - Porting of iODBC driver manager to some non-unix operating systems - such as Windows family(3.x, 95, NT), OS/2 and Mac is supported but - has never compiled and tested yet :). Of cause, you need to supply - a make/build file and a short LibMain for creating the iodbc.dll. - -2. How to build iODBC driver manager: - - step 1. Identify your system - step 2. Run build with a suitable option - - Here is an example: - - %[1]: sh iodbc-2.12.shar - .... - %[2]: cd iodbc-2.12 - %[3]: uname -s -v -r -m - HP-UX B.10.01 A 9000/710 - %[4]: ./build hp700 - autoconfig hp700 - make - .... - Generating iODBC driver manager --> /home/kejin/iodbc-2.12.sl - -3. odbc.ini( ~/.odbc.ini ) - - Driver manager and drivers use odbc.ini(or ~/.odbc.ini on Unix) file - or connection string when establishing a data source connection. On - Windows, odbc.ini is located in Windows directory. On unix, iODBC driver - manager(and all other ODBC drivers and driver managers I awared) looks - .odbc.ini file in real user's home directory (it could be a softlink to - the file located somewhere else). Make sure your driver will look into - the same file (or a file which is a symbolic link to the same file). - The format of odbc.ini( or ~/.odbc.ini ) is defined as: - - odbc.ini(or .odbc.ini) ::= data_source_list - - data_source_list ::= /* empty */ - | data_source '\n' data_source_list - - data_source ::= '[' data_source_name ']' '\n' data_source_desc - - data_source_name ::= 'default' | [A-Za-z]*[A-Za-z0-9_]* - - data_source_desc ::= /* empty */ - | attrib_desc '\n' data_source_desc - - addrib_desc ::= Attrib '=' attrib_value - - Attrib ::= 'Driver' | 'PID' | 'UID' | driver_def_attrib - - driver_def_attrib ::= [A-Za-z]*[A-Za-z0-9_]* - - An example of .odbc.ini file: - - [toronto_yp] - # yellow page of metro Toronto - Driver = /usr/lib/odbc/oracle.so - <....> - - [toronto_wp] - # white page of metro Toronto - Driver = /usr/lib/odbc/oracle.so - <....> - - [contract] - # all contract documents - Driver = /usr/lib/odbc/informix.so - <....> - - [netnews] - # NNTP netnews group - Driver = /usr/lib/odbc/nnodbc.so - Server = news.empress.com - - [rnd_test] - # data source for R&D test - Driver = /home/r_d/odbc/empodbc.so - URL = empodbc://rnd.empress.com:6322/rnd_test/testdb - - [default] - # default to odbc gateway - Driver = /usr/lib/odbc/gateway.so - -4. Tracing - - iODBC driver manager traces driver's ODBC call invoked by the driver - manager. Default tracing file is ./odbc.log. Tracing option (i.e. - on/off or optional tracing file name) can be set in ~/.odbc.ini - file (under a data source section) as: - - TraceFile = - Trace = ON | On | on | 1 | OFF | Off | off | 0 - - If is stderr or stdout, i.e. - - TraceFile = stderr - - or - - TraceFile = stdout - - the tracing message will go to the terminal screen(if it is available). - - iODBC driver manager allows one to tune on/off tracing on selected - connection(s). Different connections can share one or use different - tracing file(s). ODBC calls on connections without tuning tracing on - will not be traced. - -5. File list: - - README This file - IAFA-PACKAGE Version and copyright information - Changes.log Source changes log - Version.mk Version make include file - Config.mk Config make include file - Makefile make file - config.h system config include file - isql.h ODBC 1.0 macro - isqlext.h ODBC 2.0 macro - dlf.h general dynamic loader module interface - dlf.c general dynamic loader module (mapping to svr4) - dlproc.h simple dynamic loader module interface - dlproc.c simple dynamic loader on top of dlf module - herr.h error handling module interface - herr.c error handling module - herr.ci error handling source include - henv.h environment handle interface - henv.c environment handle module - henv.ci environment handle source include - hdbc.h connection handle interface - hdbc.c connection handle module - hstmt.h statement handle interface - hstmt.c statement handle module - connect.c connect functions - prepare.c query prepare functions - execute.c query executing functions - result.c query result property functions - fetch.c query result fetch functions - info.c driver information functions - catalog.c catalog functions - misc.c miscellaneous functions - itrace.h macro - itrace.c trace function - main.c entry function used to build a share library on AIX - shrsub.exp export symbol list used on AIX - autoconfig shell script for creating Config.mk - build shell script for building iodbc driver manager diff --git a/src/iodbc/autoconfig b/src/iodbc/autoconfig deleted file mode 100755 index ac6de96f2d..0000000000 --- a/src/iodbc/autoconfig +++ /dev/null @@ -1,230 +0,0 @@ -#! /usr/bin/sh - -cat > Config.tmp << '@END' -# -# Copyright (C) 1995 by Ke Jin -# - -#============ Default for all system ============== -SHELL = -SHELL = /bin/sh -DLDAPI = DLDAPI_SVR4_DLFCN -DLSUFFIX= so -OUTFILE = iodbc -OBJX = -@END - -\rm -f Makefile.tmp -cat > Makefile.tmp <<'@END' -include Version.mk -include Config.mk -@END - -case $1 in - sun4) - cat >> Config.tmp << '@END' - -#============ SunOS 4.1.x ========================= -PIC = -pic -CC = acc -LIBS = -ldl -@END - ;; - - aix) - cat >> Config.tmp << '@END' - -#=========== AIX 3.x 4.x ========================== -DLDAPI = DLDAPI_AIX_LOAD -ANSI = -langlvl=ansi -LDFLAGS = -H512 -T512 -bE:shrsub.exp -bM:SRE -LIBS = -lc -OBJX = main.o -DLSUFFIX= s.o -CFLAGSX = -DCLI_NAME_PREFIX=\".SQL\" -@END - ;; - - hp300 | hp400) - cat >> Config.tmp << '@END' - -#============ HP/UX (s300/s400) 9.x 10.x ========== -DLDAPI = DLDAPI_HP_SHL -ANSI = -Aa -PIC = +z -LDFLAGS = -b -DLSUFFIX= sl -CFLAGSX = -D_INCLUDE_POSIX_SOURCE -DCLI_NAME_PREFIX=\"_SQL\" -@END - ;; - - hp700 | hp800) - cat >> Config.tmp << '@END' - -#============ HP/UX 9000(s700/s800) 9.x 10.x ====== -DLDAPI = DLDAPI_HP_SHL -ANSI = -Aa -PIC = +z -LDFLAGS = -b -LIBS = -lc -ldld -DLSUFFIX= sl -CFLAGSX = -D_INCLUDE_POSIX_SOURCE -@END - ;; - - solaris) - cat >> Config.tmp << '@END' - -#======= Solaris 2.x, SunOS 5.x (Sparc/x86) ======= -LDFLAGS = -G -z defs -LIBS = -lc -ldl -lnsl -@END - ;; - - ncr |gis) - cat >> Config.tmp << '@END' - -#============= NCR SVR4 3.x ======================= -PIC = -KPIC -LDFLAGS = -G -z defs -LIBS = -lc -ldl -@END - ;; - - unixware) - cat >> Config.tmp << '@END' - -#========= UnixWare SVR4 1.x, 2.x ================= -PIC = -KPIC -LDFLAGS = -G -z defs -LIBS = -lc -ldl -@END - ;; - - maxos) - cat >> Config.tmp << '@END' - -#============ Concurrent Maxion MAX/OS 1.x ======== -PIC = -KPIC -LDFLAGS = -G -z defs -LIBS = -lc -ldl -@END - ;; - - sco-opensrv | sco-osr5 ) - cat >> Config.tmp << '@END' - -#============ SCO OpenServer 5.x ================== -PIC = -K PIC -b elf -LDFLAGS = -G -z defs -LIBS = -lc -ldl -@END - ;; - - dgux) - cat >> Config.tmp << '@END' - -#============ DG/UX 5.x =========================== -PIC = -K PIC -LDFLAGS = -G -z defs -LIBS = -lc -ldl -@END - ;; - - freebsd) - cat >> Config.tmp << '@END' - -#============= FreeBSD 2.x ======================== -PIC = -fPIC -CFLAGSX = -DCLI_NAME_PREFIX=\"_SQL\" -LDFLAGS = -Bshareable -LIBS = -lc -@END - - \rm -f Makefile.tmp - cat > Makefile.tmp <<'@END' -.include "Version.mk" -.include "Config.mk" -@END - ;; - - bsd-os) - cat >> Config.tmp << '@END' - -#============ BSDI BSD/OS 2.x ===================== -# -# ported by: Stuart Hayton -# -CC = gcc -LDFLAGS = -r -LDSUFFIX= o -LIBS = -lc_s.2.0 -ldl -@END - ;; - - linux-elf) - cat >> Config.tmp << '@END' - -#============= Linux ELF ========================= -# Slackware 2.x,(kernel 1.3.x) on i386 -# Red Hat 2.x (kernel 1.2.x) on i486 -# -ANSI = -ansi -CC = gcc -PIC = -fPIC -LDFLAGS = -shared -LIBS = -ldl -@END - ;; - - irix5| irix6) - cat >> Config.tmp << '@END' - -#============= SGI IRIX 5.x, 6.x ================= -LDFLAGS = -shared -LIBS = -lc -@END - ;; - - dec-osf1 | dec-unix) - cat >> Config.tmp << '@END' - -#============= DEC Unix(OSF/1) 3.x, 4.x ========== -LDFLAGS = -shared -LIBS = -lc -@END - ;; - *) - cat << '@END' - - Usage: autoconfig or - build - - platform_opt: - - sun4 -- SunOS 4.1.x - aix -- IBM AIX 3.x, 4.x - hp300, hp400 -- HP/UX 9.x, 10.x on 9000 s300/s400 - hp700, hp800 -- HP/UX 9.x, 10.x on 9000 s700/s800 - solaris -- Sun Solaris 2.x, SunOS 5.x - ncr, gis -- NCR(GIS) SVR4 3.x - unixware -- Novell UnixWare 1.x, 2.x - maxos -- Concurrent MAX/OS SVR4 1.x - sco-osr5 -- SCO Open Server 5.x - dgux -- DG/UX 5.x - freebsd -- FreeBSD 2.x - bsd-os -- BSDI BSD/OS 2.x - linux-elf -- Linux ELF 1.2.x and up - irix5, irix6 -- SGI Irix 5.x, 6.x - dec-osf1 -- DEC Unix(OSF/1) 3.x, 4.x - -@END - \rm -f Config.tmp - \rm -f Makefile.tmp - exit 1 - ;; -esac - \mv -f Config.tmp Config.mk - sed -e 's/.include.*//' -e 's/include.*//' Makefile >> Makefile.tmp - \mv -f Makefile.tmp Makefile - exit 0 diff --git a/src/iodbc/catalog.c b/src/iodbc/catalog.c deleted file mode 100644 index 3856e1de29..0000000000 --- a/src/iodbc/catalog.c +++ /dev/null @@ -1,987 +0,0 @@ -/* - * catalog.c - * - * $Id$ - * - * Catalog functions - * - * The iODBC driver manager. - * - * Copyright (C) 1995 by Ke Jin - * - * 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, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include - -#include -#include - -#include - -#include -#include -#include -#include - -#include - -#ifndef NULL -#define NULL 0 -#endif - -static RETCODE -_iodbcdm_cata_state_ok ( - HSTMT hstmt, - int fidx) -/* check state for executing catalog functions */ -{ - STMT_t FAR *pstmt = (STMT_t FAR *) hstmt; - int sqlstat = en_00000; - - if (pstmt->asyn_on == en_NullProc) - { - switch (pstmt->state) - { - case en_stmt_needdata: - case en_stmt_mustput: - case en_stmt_canput: - sqlstat = en_S1010; - break; - - case en_stmt_fetched: - case en_stmt_xfetched: - sqlstat = en_24000; - break; - - default: - break; - } - } - else if (pstmt->asyn_on != fidx) - { - sqlstat = en_S1010; - } - - if (sqlstat != en_00000) - { - PUSHSQLERR (pstmt->herr, sqlstat); - - return SQL_ERROR; - } - - return SQL_SUCCESS; -} - - -static RETCODE -_iodbcdm_cata_state_tr ( - HSTMT hstmt, - int fidx, - RETCODE result) -/* state transition for catalog function */ -{ - STMT_t FAR *pstmt = (STMT_t FAR *) hstmt; - DBC_t FAR *pdbc; - - pdbc = (DBC_t FAR *) (pstmt->hdbc); - - if (pstmt->asyn_on == fidx) - { - switch (result) - { - case SQL_SUCCESS: - case SQL_SUCCESS_WITH_INFO: - case SQL_ERROR: - pstmt->asyn_on = en_NullProc; - break; - - case SQL_STILL_EXECUTING: - default: - return result; - } - } - - if (pstmt->state <= en_stmt_executed) - { - switch (result) - { - case SQL_SUCCESS: - case SQL_SUCCESS_WITH_INFO: - pstmt->state = en_stmt_cursoropen; - break; - - case SQL_ERROR: - pstmt->state = en_stmt_allocated; - pstmt->prep_state = 0; - break; - - case SQL_STILL_EXECUTING: - pstmt->asyn_on = fidx; - break; - - default: - break; - } - } - - return result; -} - - -RETCODE SQL_API -SQLGetTypeInfo ( - HSTMT hstmt, - SWORD fSqlType) -{ - STMT_t FAR *pstmt = (STMT_t FAR *) hstmt; - HPROC hproc = SQL_NULL_HPROC; - int sqlstat = en_00000; - RETCODE retcode; - - if (hstmt == SQL_NULL_HSTMT || pstmt->hdbc == SQL_NULL_HDBC) - { - return SQL_INVALID_HANDLE; - } - - for (;;) - { - if (fSqlType > SQL_TYPE_MAX) - { - sqlstat = en_S1004; - break; - } - - /* Note: SQL_TYPE_DRIVER_START is a negative number So, we use ">" */ - if (fSqlType < SQL_TYPE_MIN && fSqlType > SQL_TYPE_DRIVER_START) - { - sqlstat = en_S1004; - break; - } - - retcode = _iodbcdm_cata_state_ok (hstmt, en_GetTypeInfo); - - if (retcode != SQL_SUCCESS) - { - return SQL_ERROR; - } - - hproc = _iodbcdm_getproc (pstmt->hdbc, en_GetTypeInfo); - - if (hproc == SQL_NULL_HPROC) - { - sqlstat = en_IM001; - break; - } - - sqlstat = en_00000; - if (1) /* turn off solaris warning message */ - break; - } - - if (sqlstat != en_00000) - { - PUSHSQLERR (pstmt->herr, sqlstat); - - return SQL_ERROR; - } - - CALL_DRIVER ( pstmt->hdbc, retcode, hproc, en_GetTypeInfo, - (pstmt->dhstmt, fSqlType)) - - return _iodbcdm_cata_state_tr (hstmt, en_GetTypeInfo, retcode); -} - - -RETCODE SQL_API -SQLSpecialColumns ( - HSTMT hstmt, - UWORD fColType, - UCHAR FAR * szTableQualifier, - SWORD cbTableQualifier, - UCHAR FAR * szTableOwner, - SWORD cbTableOwner, - UCHAR FAR * szTableName, - SWORD cbTableName, - UWORD fScope, - UWORD fNullable) -{ - STMT_t FAR *pstmt = (STMT_t FAR *) hstmt; - HPROC hproc = SQL_NULL_HPROC; - RETCODE retcode; - int sqlstat = en_00000; - - if (hstmt == SQL_NULL_HSTMT || pstmt->hdbc == SQL_NULL_HDBC) - { - return SQL_INVALID_HANDLE; - } - - for (;;) - { - if ((cbTableQualifier < 0 && cbTableQualifier != SQL_NTS) - || (cbTableOwner < 0 && cbTableOwner != SQL_NTS) - || (cbTableName < 0 && cbTableName != SQL_NTS)) - { - sqlstat = en_S1090; - break; - } - - if (fColType != SQL_BEST_ROWID && fColType != SQL_ROWVER) - { - sqlstat = en_S1097; - break; - } - - if (fScope != SQL_SCOPE_CURROW - && fScope != SQL_SCOPE_TRANSACTION - && fScope != SQL_SCOPE_SESSION) - { - sqlstat = en_S1098; - break; - } - - if (fNullable != SQL_NO_NULLS && fNullable != SQL_NULLABLE) - { - sqlstat = en_S1099; - break; - } - - retcode = _iodbcdm_cata_state_ok (hstmt, en_SpecialColumns); - - if (retcode != SQL_SUCCESS) - { - return SQL_ERROR; - } - - hproc = _iodbcdm_getproc (pstmt->hdbc, en_SpecialColumns); - - if (hproc == SQL_NULL_HPROC) - { - sqlstat = en_IM001; - break; - } - - sqlstat = en_00000; - if (1) /* turn off solaris warning message */ - break; - } - - if (sqlstat != en_00000) - { - PUSHSQLERR (pstmt->herr, sqlstat); - - return SQL_ERROR; - } - - CALL_DRIVER (pstmt->hdbc, retcode, hproc, en_SpecialColumns, ( - pstmt->dhstmt, - fColType, - szTableQualifier, - cbTableQualifier, - szTableOwner, - cbTableOwner, - szTableName, - cbTableName, - fScope, - fNullable)) - - return _iodbcdm_cata_state_tr (hstmt, en_SpecialColumns, retcode); -} - - -RETCODE SQL_API -SQLStatistics ( - HSTMT hstmt, - UCHAR FAR * szTableQualifier, - SWORD cbTableQualifier, - UCHAR FAR * szTableOwner, - SWORD cbTableOwner, - UCHAR FAR * szTableName, - SWORD cbTableName, - UWORD fUnique, - UWORD fAccuracy) -{ - STMT_t FAR *pstmt = (STMT_t FAR *) hstmt; - HPROC hproc = SQL_NULL_HPROC; - RETCODE retcode; - int sqlstat = en_00000; - - if (hstmt == SQL_NULL_HSTMT || pstmt->hdbc == SQL_NULL_HDBC) - { - return SQL_INVALID_HANDLE; - } - - for (;;) - { - if ((cbTableQualifier < 0 && cbTableQualifier != SQL_NTS) - || (cbTableOwner < 0 && cbTableOwner != SQL_NTS) - || (cbTableName < 0 && cbTableName != SQL_NTS)) - { - sqlstat = en_S1090; - break; - } - - if (fUnique != SQL_INDEX_UNIQUE && fUnique != SQL_INDEX_ALL) - { - sqlstat = en_S1100; - break; - } - - if (fAccuracy != SQL_ENSURE && fAccuracy != SQL_QUICK) - { - sqlstat = en_S1101; - break; - } - - retcode = _iodbcdm_cata_state_ok (hstmt, en_Statistics); - - if (retcode != SQL_SUCCESS) - { - return SQL_ERROR; - } - - hproc = _iodbcdm_getproc (pstmt->hdbc, en_Statistics); - - if (hproc == SQL_NULL_HPROC) - { - sqlstat = en_IM001; - break; - } - - sqlstat = en_00000; - - if (1) /* turn off solaris warning message */ - break; - } - - if (sqlstat != en_00000) - { - PUSHSQLERR (pstmt->herr, sqlstat); - - return SQL_ERROR; - } - - CALL_DRIVER (pstmt->hdbc, retcode, hproc, en_Statistics, ( - pstmt->dhstmt, - szTableQualifier, - cbTableQualifier, - szTableOwner, - cbTableOwner, - szTableName, - cbTableName, - fUnique, - fAccuracy)) - - return _iodbcdm_cata_state_tr (hstmt, en_Statistics, retcode); -} - - -RETCODE SQL_API -SQLTables ( - HSTMT hstmt, - UCHAR FAR * szTableQualifier, - SWORD cbTableQualifier, - UCHAR FAR * szTableOwner, - SWORD cbTableOwner, - UCHAR FAR * szTableName, - SWORD cbTableName, - UCHAR FAR * szTableType, - SWORD cbTableType) -{ - STMT_t FAR *pstmt = (STMT_t FAR *) hstmt; - HPROC hproc = SQL_NULL_HPROC; - RETCODE retcode; - int sqlstat = en_00000; - - if (hstmt == SQL_NULL_HSTMT || pstmt->hdbc == SQL_NULL_HDBC) - { - return SQL_INVALID_HANDLE; - } - - for (;;) - { - if ((cbTableQualifier < 0 && cbTableQualifier != SQL_NTS) - || (cbTableOwner < 0 && cbTableOwner != SQL_NTS) - || (cbTableName < 0 && cbTableName != SQL_NTS) - || (cbTableType < 0 && cbTableType != SQL_NTS)) - { - sqlstat = en_S1090; - break; - } - - retcode = _iodbcdm_cata_state_ok (hstmt, en_Tables); - - if (retcode != SQL_SUCCESS) - { - return SQL_ERROR; - } - - hproc = _iodbcdm_getproc (pstmt->hdbc, en_Tables); - - if (hproc == SQL_NULL_HPROC) - { - sqlstat = en_IM001; - break; - } - - sqlstat = en_00000; - - if (1) /* turn off solaris warning message */ - break; - } - - if (sqlstat != en_00000) - { - PUSHSQLERR (pstmt->herr, sqlstat); - - return SQL_ERROR; - } - - CALL_DRIVER (pstmt->hdbc, retcode, hproc, en_Tables, ( - pstmt->dhstmt, - szTableQualifier, - cbTableQualifier, - szTableOwner, - cbTableOwner, - szTableName, - cbTableName, - szTableType, - cbTableType)) - - return _iodbcdm_cata_state_tr (hstmt, en_Tables, retcode); -} - - -RETCODE SQL_API -SQLColumnPrivileges ( - HSTMT hstmt, - UCHAR FAR * szTableQualifier, - SWORD cbTableQualifier, - UCHAR FAR * szTableOwner, - SWORD cbTableOwner, - UCHAR FAR * szTableName, - SWORD cbTableName, - UCHAR FAR * szColumnName, - SWORD cbColumnName) -{ - STMT_t FAR *pstmt = (STMT_t FAR *) hstmt; - HPROC hproc = SQL_NULL_HPROC; - RETCODE retcode; - int sqlstat = en_00000; - - if (hstmt == SQL_NULL_HSTMT || pstmt->hdbc == SQL_NULL_HDBC) - { - return SQL_INVALID_HANDLE; - } - - for (;;) - { - if ((cbTableQualifier < 0 && cbTableQualifier != SQL_NTS) - || (cbTableOwner < 0 && cbTableOwner != SQL_NTS) - || (cbTableName < 0 && cbTableName != SQL_NTS) - || (cbColumnName < 0 && cbColumnName != SQL_NTS)) - { - sqlstat = en_S1090; - break; - } - - retcode = _iodbcdm_cata_state_ok (hstmt, en_ColumnPrivileges); - - if (retcode != SQL_SUCCESS) - { - return SQL_ERROR; - } - - hproc = _iodbcdm_getproc (pstmt->hdbc, en_ColumnPrivileges); - - if (hproc == SQL_NULL_HPROC) - { - sqlstat = en_IM001; - break; - } - - sqlstat = en_00000; - - if (1) /* turn off solaris warning message */ - break; - } - - if (sqlstat != en_00000) - { - PUSHSQLERR (pstmt->herr, sqlstat); - - return SQL_ERROR; - } - - CALL_DRIVER (pstmt->hdbc, retcode, hproc, en_ColumnPrivileges, ( - pstmt->dhstmt, - szTableQualifier, - cbTableQualifier, - szTableOwner, - cbTableOwner, - szTableName, - cbTableName, - szColumnName, - cbColumnName)) - - return _iodbcdm_cata_state_tr (hstmt, en_ColumnPrivileges, retcode); -} - - -RETCODE SQL_API -SQLColumns ( - HSTMT hstmt, - UCHAR FAR * szTableQualifier, - SWORD cbTableQualifier, - UCHAR FAR * szTableOwner, - SWORD cbTableOwner, - UCHAR FAR * szTableName, - SWORD cbTableName, - UCHAR FAR * szColumnName, - SWORD cbColumnName) -{ - STMT_t FAR *pstmt = (STMT_t FAR *) hstmt; - HPROC hproc = SQL_NULL_HPROC; - RETCODE retcode; - int sqlstat = en_00000; - - if (hstmt == SQL_NULL_HSTMT || pstmt->hdbc == SQL_NULL_HDBC) - { - return SQL_INVALID_HANDLE; - } - - for (;;) - { - if ((cbTableQualifier < 0 && cbTableQualifier != SQL_NTS) - || (cbTableOwner < 0 && cbTableOwner != SQL_NTS) - || (cbTableName < 0 && cbTableName != SQL_NTS) - || (cbColumnName < 0 && cbColumnName != SQL_NTS)) - { - sqlstat = en_S1090; - break; - } - - retcode = _iodbcdm_cata_state_ok (hstmt, en_Columns); - - if (retcode != SQL_SUCCESS) - { - return SQL_ERROR; - } - - hproc = _iodbcdm_getproc (pstmt->hdbc, en_Columns); - - if (hproc == SQL_NULL_HPROC) - { - sqlstat = en_IM001; - break; - } - - sqlstat = en_00000; - - if (1) /* turn off solaris warning message */ - break; - } - - if (sqlstat != en_00000) - { - PUSHSQLERR (pstmt->herr, sqlstat); - - return SQL_ERROR; - } - - CALL_DRIVER (pstmt->hdbc, retcode, hproc, en_Columns, ( - pstmt->dhstmt, - szTableQualifier, - cbTableQualifier, - szTableOwner, - cbTableOwner, - szTableName, - cbTableName, - szColumnName, - cbColumnName)) - - return _iodbcdm_cata_state_tr (hstmt, en_Columns, retcode); -} - - -RETCODE SQL_API -SQLForeignKeys ( - HSTMT hstmt, - UCHAR FAR * szPkTableQualifier, - SWORD cbPkTableQualifier, - UCHAR FAR * szPkTableOwner, - SWORD cbPkTableOwner, - UCHAR FAR * szPkTableName, - SWORD cbPkTableName, - UCHAR FAR * szFkTableQualifier, - SWORD cbFkTableQualifier, - UCHAR FAR * szFkTableOwner, - SWORD cbFkTableOwner, - UCHAR FAR * szFkTableName, - SWORD cbFkTableName) -{ - STMT_t FAR *pstmt = (STMT_t FAR *) hstmt; - HPROC hproc = SQL_NULL_HPROC; - RETCODE retcode; - int sqlstat = en_00000; - - if (hstmt == SQL_NULL_HSTMT || pstmt->hdbc == SQL_NULL_HDBC) - { - return SQL_INVALID_HANDLE; - } - - for (;;) - { - if ((cbPkTableQualifier < 0 && cbPkTableQualifier != SQL_NTS) - || (cbPkTableOwner < 0 && cbPkTableOwner != SQL_NTS) - || (cbPkTableName < 0 && cbPkTableName != SQL_NTS) - || (cbFkTableQualifier < 0 && cbFkTableQualifier != SQL_NTS) - || (cbFkTableOwner < 0 && cbFkTableOwner != SQL_NTS) - || (cbFkTableName < 0 && cbFkTableName != SQL_NTS)) - { - sqlstat = en_S1090; - break; - } - - retcode = _iodbcdm_cata_state_ok (hstmt, en_ForeignKeys); - - if (retcode != SQL_SUCCESS) - { - return SQL_ERROR; - } - - hproc = _iodbcdm_getproc (pstmt->hdbc, en_ForeignKeys); - - if (hproc == SQL_NULL_HPROC) - { - sqlstat = en_IM001; - break; - } - - sqlstat = en_00000; - - if (1) /* turn off solaris warning message */ - break; - } - - if (sqlstat != en_00000) - { - PUSHSQLERR (pstmt->herr, sqlstat); - - return SQL_ERROR; - } - - CALL_DRIVER (pstmt->hdbc, retcode, hproc, en_ForeignKeys, ( - pstmt->dhstmt, - szPkTableQualifier, - cbPkTableQualifier, - szPkTableOwner, - cbPkTableOwner, - szPkTableName, - cbPkTableName, - szFkTableQualifier, - cbFkTableQualifier, - szFkTableOwner, - cbFkTableOwner, - szFkTableName, - cbFkTableName)) - - return _iodbcdm_cata_state_tr (hstmt, en_ForeignKeys, retcode); -} - - -RETCODE SQL_API -SQLPrimaryKeys ( - HSTMT hstmt, - UCHAR FAR * szTableQualifier, - SWORD cbTableQualifier, - UCHAR FAR * szTableOwner, - SWORD cbTableOwner, - UCHAR FAR * szTableName, - SWORD cbTableName) -{ - STMT_t FAR *pstmt = (STMT_t FAR *) hstmt; - HPROC hproc = SQL_NULL_HPROC; - RETCODE retcode; - int sqlstat = en_00000; - - if (hstmt == SQL_NULL_HSTMT || pstmt->hdbc == SQL_NULL_HDBC) - { - return SQL_INVALID_HANDLE; - } - - for (;;) - { - if ((cbTableQualifier < 0 && cbTableQualifier != SQL_NTS) - || (cbTableOwner < 0 && cbTableOwner != SQL_NTS) - || (cbTableName < 0 && cbTableName != SQL_NTS)) - { - sqlstat = en_S1090; - break; - } - - retcode = _iodbcdm_cata_state_ok (hstmt, en_PrimaryKeys); - - if (retcode != SQL_SUCCESS) - { - return SQL_ERROR; - } - - hproc = _iodbcdm_getproc (pstmt->hdbc, en_PrimaryKeys); - - if (hproc == SQL_NULL_HPROC) - { - sqlstat = en_IM001; - break; - } - - sqlstat = en_00000; - - if (1) /* turn off solaris warning message */ - break; - } - - if (sqlstat != en_00000) - { - PUSHSQLERR (pstmt->herr, sqlstat); - - return SQL_ERROR; - } - - CALL_DRIVER (pstmt->hdbc, retcode, hproc, en_PrimaryKeys, ( - pstmt->dhstmt, - szTableQualifier, - cbTableQualifier, - szTableOwner, - cbTableOwner, - szTableName, - cbTableName)) - - return _iodbcdm_cata_state_tr (hstmt, en_PrimaryKeys, retcode); -} - - -RETCODE SQL_API -SQLProcedureColumns ( - HSTMT hstmt, - UCHAR FAR * szProcQualifier, - SWORD cbProcQualifier, - UCHAR FAR * szProcOwner, - SWORD cbProcOwner, - UCHAR FAR * szProcName, - SWORD cbProcName, - UCHAR FAR * szColumnName, - SWORD cbColumnName) -{ - STMT_t FAR *pstmt = (STMT_t FAR *) hstmt; - HPROC hproc = SQL_NULL_HPROC; - RETCODE retcode; - int sqlstat = en_00000; - - if (hstmt == SQL_NULL_HSTMT || pstmt->hdbc == SQL_NULL_HDBC) - { - return SQL_INVALID_HANDLE; - } - - for (;;) - { - if ((cbProcQualifier < 0 && cbProcQualifier != SQL_NTS) - || (cbProcOwner < 0 && cbProcOwner != SQL_NTS) - || (cbProcName < 0 && cbProcName != SQL_NTS) - || (cbColumnName < 0 && cbColumnName != SQL_NTS)) - { - sqlstat = en_S1090; - break; - } - - retcode = _iodbcdm_cata_state_ok (hstmt, en_ProcedureColumns); - - if (retcode != SQL_SUCCESS) - { - return SQL_ERROR; - } - - hproc = _iodbcdm_getproc (pstmt->hdbc, en_ProcedureColumns); - - if (hproc == SQL_NULL_HPROC) - { - sqlstat = en_IM001; - break; - } - - sqlstat = en_00000; - - if (1) /* turn off solaris warning message */ - break; - } - - if (sqlstat != en_00000) - { - PUSHSQLERR (pstmt->herr, sqlstat); - - return SQL_ERROR; - } - - CALL_DRIVER (pstmt->hdbc, retcode, hproc, en_ProcedureColumns, ( - pstmt->dhstmt, - szProcQualifier, - cbProcQualifier, - szProcOwner, - cbProcOwner, - szProcName, - cbProcName, - szColumnName, - cbColumnName)) - - return _iodbcdm_cata_state_tr (hstmt, en_ProcedureColumns, retcode); -} - - -RETCODE SQL_API -SQLProcedures ( - HSTMT hstmt, - UCHAR FAR * szProcQualifier, - SWORD cbProcQualifier, - UCHAR FAR * szProcOwner, - SWORD cbProcOwner, - UCHAR FAR * szProcName, - SWORD cbProcName) -{ - STMT_t FAR *pstmt = (STMT_t FAR *) hstmt; - HPROC hproc = SQL_NULL_HPROC; - RETCODE retcode; - int sqlstat = en_00000; - - if (hstmt == SQL_NULL_HSTMT || pstmt->hdbc == SQL_NULL_HDBC) - { - return SQL_INVALID_HANDLE; - } - - for (;;) - { - if ((cbProcQualifier < 0 && cbProcQualifier != SQL_NTS) - || (cbProcOwner < 0 && cbProcOwner != SQL_NTS) - || (cbProcName < 0 && cbProcName != SQL_NTS)) - { - sqlstat = en_S1090; - break; - } - - retcode = _iodbcdm_cata_state_ok (hstmt, en_Procedures); - - if (retcode != SQL_SUCCESS) - { - return SQL_ERROR; - } - - hproc = _iodbcdm_getproc (pstmt->hdbc, en_Procedures); - - if (hproc == SQL_NULL_HPROC) - { - sqlstat = en_IM001; - break; - } - - sqlstat = en_00000; - - if (1) /* turn off solaris warning message */ - break; - } - - if (sqlstat != en_00000) - { - PUSHSQLERR (pstmt->herr, sqlstat); - - return SQL_ERROR; - } - - CALL_DRIVER (pstmt->hdbc, retcode, hproc, en_Procedures, ( - pstmt->dhstmt, - szProcQualifier, - cbProcQualifier, - szProcOwner, - cbProcOwner, - szProcName, - cbProcName)) - - return _iodbcdm_cata_state_tr (hstmt, en_Procedures, retcode); -} - - -RETCODE SQL_API -SQLTablePrivileges ( - HSTMT hstmt, - UCHAR FAR * szTableQualifier, - SWORD cbTableQualifier, - UCHAR FAR * szTableOwner, - SWORD cbTableOwner, - UCHAR FAR * szTableName, - SWORD cbTableName) -{ - - STMT_t FAR *pstmt = (STMT_t FAR *) hstmt; - HPROC hproc = SQL_NULL_HPROC; - RETCODE retcode; - int sqlstat = en_00000; - - if (hstmt == SQL_NULL_HSTMT || pstmt->hdbc == SQL_NULL_HDBC) - { - return SQL_INVALID_HANDLE; - } - - for (;;) - { - if ((cbTableQualifier < 0 && cbTableQualifier != SQL_NTS) - || (cbTableOwner < 0 && cbTableOwner != SQL_NTS) - || (cbTableName < 0 && cbTableName != SQL_NTS)) - { - sqlstat = en_S1090; - break; - } - - retcode = _iodbcdm_cata_state_ok (hstmt, en_TablePrivileges); - - if (retcode != SQL_SUCCESS) - { - return SQL_ERROR; - } - - hproc = _iodbcdm_getproc (pstmt->hdbc, en_TablePrivileges); - - if (hproc == SQL_NULL_HPROC) - { - sqlstat = en_IM001; - break; - } - - sqlstat = en_00000; - - if (1) /* turn off solaris warning message */ - break; - } - - if (sqlstat != en_00000) - { - PUSHSQLERR (pstmt->herr, sqlstat); - - return SQL_ERROR; - } - - CALL_DRIVER (pstmt->hdbc, retcode, hproc, en_TablePrivileges, - (pstmt->dhstmt, szTableQualifier, cbTableQualifier, szTableOwner, - cbTableOwner, szTableName, cbTableName)) - - return _iodbcdm_cata_state_tr (hstmt, en_TablePrivileges, retcode); -} diff --git a/src/iodbc/config.h b/src/iodbc/config.h deleted file mode 100644 index 1fb5ac1b82..0000000000 --- a/src/iodbc/config.h +++ /dev/null @@ -1,93 +0,0 @@ -/* - * - * config.h - * - * $Id$ - * - * Configuration - * - * The iODBC driver manager. - * - * Copyright (C) 1995 by Ke Jin - * - * 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, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ -#ifndef _CONFIG_H -#define _CONFIG_H - -#if !defined(WINDOWS) && !defined(WIN32_SYSTEM) -#define _UNIX_ - -#include "wx/setup.h" - -#include -#include -#include -#include - -#define MEM_ALLOC(size) (malloc((size_t)(size))) -#define MEM_FREE(ptr) {if(ptr) free(ptr);} - -#define STRCPY(t, s) (strcpy((char*)(t), (char*)(s))) -#define STRNCPY(t,s,n) (strncpy((char*)(t), (char*)(s), (size_t)(n))) -#define STRCAT(t, s) (strcat((char*)(t), (char*)(s))) -#define STRNCAT(t,s,n) (strncat((char*)(t), (char*)(s), (size_t)(n))) -#define STREQ(a, b) (strcmp((char*)(a), (char*)(b)) == 0) -#define STRLEN(str) ((str)? strlen((char*)(str)):0) - -#define EXPORT -#define CALLBACK -#define FAR - -typedef signed short SSHOR; -typedef short WORD; -typedef long DWORD; - -typedef WORD WPARAM; -typedef DWORD LPARAM; -typedef int BOOL; -#endif /* _UNIX_ */ - -#if defined(WINDOWS) || defined(WIN32_SYSTEM) -#include -#include - -#ifdef _MSVC_ -#define MEM_ALLOC(size) (fmalloc((size_t)(size))) -#define MEM_FREE(ptr) ((ptr)? ffree((PTR)(ptr)):0)) -#define STRCPY(t, s) (fstrcpy((char FAR*)(t), (char FAR*)(s))) -#define STRNCPY(t,s,n) (fstrncpy((char FAR*)(t), (char FAR*)(s), (size_t)(n))) -#define STRLEN(str) ((str)? fstrlen((char FAR*)(str)):0) -#define STREQ(a, b) (fstrcmp((char FAR*)(a), (char FAR*)(b) == 0) -#endif - -#ifdef _BORLAND_ -#define MEM_ALLOC(size) (farmalloc((unsigned long)(size)) -#define MEM_FREE(ptr) ((ptr)? farfree((void far*)(ptr)):0) -#define STRCPY(t, s) (_fstrcpy((char FAR*)(t), (char FAR*)(s))) -#define STRNCPY(t,s,n) (_fstrncpy((char FAR*)(t), (char FAR*)(s), (size_t)(n))) -#define STRLEN(str) ((str)? _fstrlen((char FAR*)(str)):0) -#define STREQ(a, b) (_fstrcmp((char FAR*)(a), (char FAR*)(b) == 0) -#endif - -#endif /* WINDOWS */ - -#define SYSERR (-1) - -#ifndef NULL -#define NULL ((void FAR*)0UL) -#endif - -#endif diff --git a/src/iodbc/connect.c b/src/iodbc/connect.c deleted file mode 100644 index be9e0f6041..0000000000 --- a/src/iodbc/connect.c +++ /dev/null @@ -1,1246 +0,0 @@ -/* - * connect.c - * - * $Id$ - * - * Connect (load) driver - * - * The iODBC driver manager. - * - * Copyright (C) 1995 by Ke Jin - * - * 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, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include - -#include -#include - -#include - -#include -#include -#include -#include - -#include - -extern char* _iodbcdm_getkeyvalbydsn(); -extern char* _iodbcdm_getkeyvalinstr(); -extern RETCODE _iodbcdm_driverunload(); - -/* - * Following id string is a copyright mark. Removing(i.e. use - * souce code of this package without it or make it not appear - * in the final object file) or modifing it without permission - * from original author(kejin@empress.com) are copyright - * violation. - */ -static char sccsid[] - = "@(#)iODBC driver manager 2.5, Copyright(c) 1995 by Ke Jin"; - -/* - Load driver share library( or increase its reference count - * if it has already been loaded by another active connection) - * - Call driver's SQLAllocEnv() (for the first reference only) - * - Call driver's SQLAllocConnect() - * - Call driver's SQLSetConnectOption() (set login time out) - * - Increase the bookkeeping reference count - */ -static RETCODE -_iodbcdm_driverload ( - char FAR * path, - HDBC hdbc) -{ - DBC_t FAR *pdbc = (DBC_t FAR *) hdbc; - GENV_t FAR *genv; - ENV_t FAR *penv = NULL; - HDLL hdll; - HPROC hproc; - RETCODE retcode = SQL_SUCCESS; - int sqlstat = en_00000; - - if (path == NULL || path[0] == '\0') - { - PUSHSQLERR (pdbc->herr, en_IM002); - - return SQL_ERROR; - } - - if (hdbc == SQL_NULL_HDBC || pdbc->genv == SQL_NULL_HENV) - { - return SQL_INVALID_HANDLE; - } - - genv = (GENV_t FAR *) pdbc->genv; - - /* This will either load the driver dll or increase its reference count */ - hdll = _iodbcdm_dllopen ((char FAR *) path); - - if (hdll == SQL_NULL_HDLL) - { - PUSHSYSERR (pdbc->herr, _iodbcdm_dllerror ()); - PUSHSQLERR (pdbc->herr, en_IM003); - return SQL_ERROR; - } - - penv = (ENV_t FAR *) (pdbc->henv); - - if (penv != NULL) - { - if (penv->hdll != hdll) - { - _iodbcdm_driverunload (hdbc); - } - else - { - /* - * this will not unload the driver but only decrease its internal - * reference count - */ - _iodbcdm_dllclose (hdll); - } - } - - if (penv == NULL) - { - /* - * find out whether this dll has already been loaded on another - * connection - */ - for (penv = (ENV_t FAR *) genv->henv; - penv != NULL; - penv = (ENV_t FAR *) penv->next) - { - if (penv->hdll == hdll) - { - /* - * this will not unload the driver but only decrease its internal - * reference count - */ - _iodbcdm_dllclose (hdll); - break; - } - } - - if (penv == NULL) - /* no connection attaching with this dll */ - { - int i; - - /* create a new dll env instance */ - penv = (ENV_t FAR *) MEM_ALLOC (sizeof (ENV_t)); - - if (penv == NULL) - { - _iodbcdm_dllclose (hdll); - - PUSHSQLERR (pdbc->herr, en_S1001); - - return SQL_ERROR; - } - - for (i = 0; i < SQL_EXT_API_LAST + 1; i++) - { - (penv->dllproc_tab)[i] = SQL_NULL_HPROC; - } - - pdbc->henv = penv; - penv->hdll = hdll; - - /* call driver's SQLAllocHandle() or SQLAllocEnv() */ - -#if (ODBCVER >= 0x0300) - hproc = _iodbcdm_getproc (hdbc, en_AllocHandle); - - if (hproc) - { - CALL_DRIVER (hdbc, retcode, hproc, en_AllocHandle, - (SQL_HANDLE_ENV, SQL_NULL_HANDLE, &(penv->dhenv))) - } - else /* try driver's SQLAllocEnv() */ -#endif - { - hproc = _iodbcdm_getproc (hdbc, en_AllocEnv); - - if (hproc == SQL_NULL_HPROC) - { - sqlstat = en_IM004; - } - else - { - CALL_DRIVER (hdbc, retcode, hproc, - en_AllocEnv, (&(penv->dhenv))) - } - } - - if (retcode == SQL_ERROR) - { - sqlstat = en_IM004; - } - - if (sqlstat != en_00000) - { - _iodbcdm_dllclose (hdll); - MEM_FREE (penv); - PUSHSQLERR (pdbc->herr, en_IM004); - - return SQL_ERROR; - } - - /* insert into dll env list */ - penv->next = (ENV_t FAR *) genv->henv; - genv->henv = penv; - - /* initiate this new env entry */ - penv->refcount = 0; /* we will increase it after - * driver's SQLAllocConnect() - * success - */ - } - - pdbc->henv = penv; - - if (pdbc->dhdbc == SQL_NULL_HDBC) - { - -#if (ODBCVER >= 0x0300) - hproc = _iodbcdm_getproc (hdbc, en_AllocHandle); - - if (hproc) - { - CALL_DRIVER (hdbc, retcode, hproc, en_AllocHandle, - (SQL_HANDLE_DBC, penv->dhenv, &(pdbc->dhdbc))) - } - else -#endif - - { - hproc = _iodbcdm_getproc (hdbc, en_AllocConnect); - - if (hproc == SQL_NULL_HPROC) - { - sqlstat = en_IM005; - } - else - { - CALL_DRIVER (hdbc, retcode, hproc, - en_AllocConnect, (penv->dhenv, &(pdbc->dhdbc))) - } - } - - if (retcode == SQL_ERROR) - { - sqlstat = en_IM005; - } - - if (sqlstat != en_00000) - { - _iodbcdm_driverunload (hdbc); - - pdbc->dhdbc = SQL_NULL_HDBC; - PUSHSQLERR (pdbc->herr, en_IM005); - - return SQL_ERROR; - } - } - - pdbc->henv = penv; - penv->refcount++; /* bookkeeping reference count on this driver */ - } - - /* driver's login timeout option must been set before - * its SQLConnect() call */ - if (pdbc->login_timeout != 0UL) - { - hproc = _iodbcdm_getproc (hdbc, en_SetConnectOption); - - if (hproc == SQL_NULL_HPROC) - { - sqlstat = en_IM004; - } - else - { - CALL_DRIVER (hdbc, retcode, hproc, - en_SetConnectOption, ( - pdbc->dhdbc, - SQL_LOGIN_TIMEOUT, - pdbc->login_timeout)) - - if (retcode == SQL_ERROR) - { - PUSHSQLERR (pdbc->herr, en_IM006); - - return SQL_SUCCESS_WITH_INFO; - } - } - } - - return SQL_SUCCESS; -} - - -/* - Call driver's SQLFreeConnect() - * - Call driver's SQLFreeEnv() ( for the last reference only) - * - Unload the share library( or decrease its reference - * count if it is not the last referenct ) - * - decrease bookkeeping reference count - * - state transition to allocated - */ -RETCODE -_iodbcdm_driverunload (HDBC hdbc) -{ - DBC_t FAR *pdbc = (DBC_t FAR *) hdbc; - ENV_t FAR *penv; - ENV_t FAR *tpenv; - GENV_t FAR *genv; - HPROC hproc; - RETCODE retcode = SQL_SUCCESS; - int sqlstat = en_00000; - - if (hdbc == SQL_NULL_HDBC) - { - return SQL_INVALID_HANDLE; - } - - /* no pointer check will be performed in this function */ - penv = (ENV_t FAR *) pdbc->henv; - genv = (GENV_t FAR *) pdbc->genv; - - if (penv == NULL || penv->hdll == SQL_NULL_HDLL) - { - return SQL_SUCCESS; - } - -#if (ODBCVER >= 0x0300) - hproc = _iodbcdm_getproc (hdbc, en_FreeHandle); - - if (hproc) - { - CALL_DRIVER (hdbc, retcode, hproc, en_FreeHandle, - (SQL_HANDLE_DBC, pdbc->dhdbc)) - } - else -#endif - - { - hproc = _iodbcdm_getproc (hdbc, en_FreeConnect); - - if (hproc != SQL_NULL_HPROC) - { - CALL_DRIVER (hdbc, retcode, hproc, - en_FreeConnect, (pdbc->dhdbc)) - - pdbc->dhdbc = SQL_NULL_HDBC; - } - } - - penv->refcount--; - - if (!penv->refcount) - /* no other connections still attaching with this driver */ - { - -#if (ODBCVER >= 0x0300) - hproc = _iodbcdm_getproc (hdbc, en_FreeHandle); - - if (hproc) - { - CALL_DRIVER (hdbc, retcode, hproc, en_FreeHandle, - (SQL_HANDLE_ENV, penv->dhenv)) - } - else -#endif - - { - hproc = _iodbcdm_getproc (hdbc, en_FreeEnv); - - if (hproc != SQL_NULL_HPROC) - { - CALL_DRIVER (hdbc, retcode, hproc, en_FreeEnv, - (penv->dhenv)) - - penv->dhenv = SQL_NULL_HENV; - } - } - - _iodbcdm_dllclose (penv->hdll); - - penv->hdll = SQL_NULL_HDLL; - - for (tpenv = (ENV_t FAR *) genv->henv; - tpenv != NULL; - tpenv = (ENV_t FAR *) penv->next) - { - if (tpenv == penv) - { - genv->henv = penv->next; - break; - } - - if (tpenv->next == penv) - { - tpenv->next = penv->next; - break; - } - } - - MEM_FREE (penv); - } - - pdbc->henv = SQL_NULL_HENV; - pdbc->hstmt = SQL_NULL_HSTMT; - /* pdbc->herr = SQL_NULL_HERR; - -- delay to DM's SQLFreeConnect() */ - pdbc->dhdbc = SQL_NULL_HDBC; - pdbc->state = en_dbc_allocated; - - /* set connect options to default values */ - /********** - pdbc->access_mode = SQL_MODE_DEFAULT; - pdbc->autocommit = SQL_AUTOCOMMIT_DEFAULT; - pdbc->login_timeout = 0UL; - **********/ - pdbc->odbc_cursors = SQL_CUR_DEFAULT; - pdbc->packet_size = 0UL; - pdbc->quiet_mode = (UDWORD) NULL; - pdbc->txn_isolation = SQL_TXN_READ_UNCOMMITTED; - - if (pdbc->current_qualifier != NULL) - { - MEM_FREE (pdbc->current_qualifier); - pdbc->current_qualifier = NULL; - } - - return SQL_SUCCESS; -} - - -static RETCODE -_iodbcdm_dbcdelayset (HDBC hdbc) -{ - DBC_t FAR *pdbc = (DBC_t FAR *) hdbc; - ENV_t FAR *penv; - HPROC hproc; - RETCODE retcode = SQL_SUCCESS; - RETCODE ret; - - penv = pdbc->henv; - - hproc = _iodbcdm_getproc (hdbc, en_SetConnectOption); - - if (hproc == SQL_NULL_HPROC) - { - PUSHSQLERR (pdbc->herr, en_IM006); - - return SQL_SUCCESS_WITH_INFO; - } - - if (pdbc->access_mode != SQL_MODE_DEFAULT) - { - CALL_DRIVER (hdbc, ret, hproc, - en_SetConnectOption, ( - SQL_ACCESS_MODE, - pdbc->access_mode)) - - retcode |= ret; - } - - if (pdbc->autocommit != SQL_AUTOCOMMIT_DEFAULT) - { - CALL_DRIVER (hdbc, ret, hproc, - en_SetConnectOption, ( - pdbc->dhdbc, - SQL_AUTOCOMMIT, - pdbc->autocommit)) - - retcode |= ret; - } - - if (pdbc->current_qualifier != NULL) - { - CALL_DRIVER (hdbc, ret, hproc, - en_SetConnectOption, ( - pdbc->dhdbc, - SQL_CURRENT_QUALIFIER, - pdbc->current_qualifier)) - - retcode |= ret; - } - - if (pdbc->packet_size != 0UL) - { - CALL_DRIVER (hdbc, ret, hproc, - en_SetConnectOption, ( - pdbc->dhdbc, - SQL_PACKET_SIZE, - pdbc->packet_size)) - - retcode |= ret; - } - - if (pdbc->quiet_mode != (UDWORD) NULL) - { - CALL_DRIVER (hdbc, ret, hproc, - en_SetConnectOption, ( - pdbc->dhdbc, - SQL_QUIET_MODE, - pdbc->quiet_mode)) - - retcode |= ret; - } - - if (pdbc->txn_isolation != SQL_TXN_READ_UNCOMMITTED) - { - CALL_DRIVER (hdbc, ret, hproc, - en_SetConnectOption, ( - pdbc->dhdbc, - SQL_TXN_ISOLATION, - pdbc->txn_isolation)) - } - - /* check error code for driver's SQLSetConnectOption() call */ - if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO) - { - PUSHSQLERR (pdbc->herr, en_IM006); - - retcode = SQL_ERROR; - } - - /* get cursor behavior on transaction commit or rollback */ - hproc = _iodbcdm_getproc (hdbc, en_GetInfo); - - if (hproc == SQL_NULL_HPROC) - { - PUSHSQLERR (pdbc->herr, en_01000); - - return retcode; - } - - CALL_DRIVER (hdbc, ret, hproc, - en_GetInfo, ( - pdbc->dhdbc, - SQL_CURSOR_COMMIT_BEHAVIOR, - (PTR) & (pdbc->cb_commit), - sizeof (pdbc->cb_commit), - NULL)) - - retcode |= ret; - - CALL_DRIVER (hdbc, ret, hproc, - en_GetInfo, ( - pdbc->dhdbc, - SQL_CURSOR_ROLLBACK_BEHAVIOR, - (PTR) & (pdbc->cb_rollback), - sizeof (pdbc->cb_rollback), - NULL)) - - retcode |= ret; - - if (retcode != SQL_SUCCESS - && retcode != SQL_SUCCESS_WITH_INFO) - { - return SQL_ERROR; - } - - return retcode; -} - - -static RETCODE -_iodbcdm_settracing (HDBC hdbc, char *dsn, int dsnlen) -{ - char buf[256]; - char *ptr; - RETCODE setopterr = SQL_SUCCESS; - - /* Get Driver's DLL path from specificed or default dsn section */ - ptr = _iodbcdm_getkeyvalbydsn (dsn, dsnlen, "TraceFile", - (char FAR *) buf, sizeof (buf)); - - if (ptr == NULL || ptr[0] == '\0') - { - ptr = (char FAR *) (SQL_OPT_TRACE_FILE_DEFAULT); - } - - setopterr |= SQLSetConnectOption (hdbc, SQL_OPT_TRACEFILE, (UDWORD) (ptr)); - - ptr = _iodbcdm_getkeyvalbydsn (dsn, dsnlen, "Trace", - (char FAR *) buf, sizeof (buf)); - - if (ptr != NULL) - { - UDWORD opt = (UDWORD) (-1L); - - if (STREQ (ptr, "ON") - || STREQ (ptr, "On") - || STREQ (ptr, "on") - || STREQ (ptr, "1")) - { - opt = SQL_OPT_TRACE_ON; - } - - if (STREQ (ptr, "OFF") - || STREQ (ptr, "Off") - || STREQ (ptr, "off") - || STREQ (ptr, "0")) - { - opt = SQL_OPT_TRACE_OFF; - } - - if (opt != (UDWORD) (-1L)) - { - setopterr |= SQLSetConnectOption (hdbc, - SQL_OPT_TRACE, opt); - } - } - - return setopterr; -} - - -RETCODE SQL_API -SQLConnect ( - HDBC hdbc, - UCHAR FAR * szDSN, - SWORD cbDSN, - UCHAR FAR * szUID, - SWORD cbUID, - UCHAR FAR * szAuthStr, - SWORD cbAuthStr) -{ - DBC_t FAR *pdbc = (DBC_t FAR *) hdbc; - RETCODE retcode = SQL_SUCCESS; - RETCODE setopterr = SQL_SUCCESS; - char driver[1024] = {'\0'}; /* MS SDK Guide - * specifies driver - * path can't longer - * than 255. */ - char *ptr; - HPROC hproc; - - if (hdbc == SQL_NULL_HDBC) - { - return SQL_INVALID_HANDLE; - } - - /* check arguments */ - if ((cbDSN < 0 && cbDSN != SQL_NTS) - || (cbUID < 0 && cbUID != SQL_NTS) - || (cbAuthStr < 0 && cbAuthStr != SQL_NTS) - || (cbDSN > SQL_MAX_DSN_LENGTH)) - { - PUSHSQLERR (pdbc->herr, en_S1090); - - return SQL_ERROR; - } - - if (szDSN == NULL || cbDSN == 0) - { - PUSHSQLERR (pdbc->herr, en_IM002); - - return SQL_ERROR; - } - - /* check state */ - if (pdbc->state != en_dbc_allocated) - { - PUSHSQLERR (pdbc->herr, en_08002); - - return SQL_ERROR; - } - - setopterr |= _iodbcdm_settracing (hdbc, - (char *) szDSN, cbDSN); - - ptr = _iodbcdm_getkeyvalbydsn (szDSN, cbDSN, "Driver", - (char FAR *) driver, sizeof (driver)); - - if (ptr == NULL) - /* No specified or default dsn section or - * no driver specification in this dsn section */ - { - PUSHSQLERR (pdbc->herr, en_IM002); - - return SQL_ERROR; - } - - retcode = _iodbcdm_driverload (driver, hdbc); - - switch (retcode) - { - case SQL_SUCCESS: - break; - - case SQL_SUCCESS_WITH_INFO: - setopterr = SQL_ERROR; - /* unsuccessed in calling driver's - * SQLSetConnectOption() to set login - * timeout. - */ - break; - - default: - return retcode; - } - - hproc = _iodbcdm_getproc (hdbc, en_Connect); - - if (hproc == SQL_NULL_HPROC) - { - _iodbcdm_driverunload (hdbc); - - PUSHSQLERR (pdbc->herr, en_IM001); - - return SQL_ERROR; - } - - CALL_DRIVER (hdbc, retcode, hproc, en_Connect, ( - pdbc->dhdbc, - szDSN, cbDSN, - szUID, cbUID, - szAuthStr, cbAuthStr)) - - if (retcode != SQL_SUCCESS - && retcode != SQL_SUCCESS_WITH_INFO) - { - /* not unload driver for retrive error - * messge from driver */ - /********* - _iodbcdm_driverunload( hdbc ); - **********/ - - return retcode; - } - - /* state transition */ - pdbc->state = en_dbc_connected; - - /* do delaid option setting */ - setopterr |= _iodbcdm_dbcdelayset (hdbc); - - if (setopterr != SQL_SUCCESS) - { - return SQL_SUCCESS_WITH_INFO; - } - - return retcode; -} - - -RETCODE SQL_API -SQLDriverConnect ( - HDBC hdbc, - HWND hwnd, - UCHAR FAR * szConnStrIn, - SWORD cbConnStrIn, - UCHAR FAR * szConnStrOut, - SWORD cbConnStrOutMax, - SWORD FAR * pcbConnStrOut, - UWORD fDriverCompletion) -{ - DBC_t FAR *pdbc = (DBC_t FAR *) hdbc; - HDLL hdll; - char FAR *drv; - char drvbuf[1024]; - char FAR *dsn; - char dsnbuf[SQL_MAX_DSN_LENGTH + 1]; - UCHAR cnstr2drv[1024]; - - HPROC hproc; - HPROC dialproc; - - int sqlstat = en_00000; - RETCODE retcode = SQL_SUCCESS; - RETCODE setopterr = SQL_SUCCESS; - - if (hdbc == SQL_NULL_HDBC) - { - return SQL_INVALID_HANDLE; - } - - /* check arguments */ - if ((cbConnStrIn < 0 && cbConnStrIn != SQL_NTS) - || cbConnStrOutMax < 0) - { - PUSHSQLERR (pdbc->herr, en_S1090); - - return SQL_ERROR; - } - - /* check state */ - if (pdbc->state != en_dbc_allocated) - { - PUSHSQLERR (pdbc->herr, en_08002); - - return SQL_ERROR; - } - - drv = _iodbcdm_getkeyvalinstr (szConnStrIn, cbConnStrIn, - "DRIVER", drvbuf, sizeof (drvbuf)); - - dsn = _iodbcdm_getkeyvalinstr (szConnStrIn, cbConnStrIn, - "DSN", dsnbuf, sizeof (dsnbuf)); - - switch (fDriverCompletion) - { - case SQL_DRIVER_NOPROMPT: - break; - - case SQL_DRIVER_COMPLETE: - case SQL_DRIVER_COMPLETE_REQUIRED: - if (dsn != NULL || drv != NULL) - { - break; - } - /* fall to next case */ - case SQL_DRIVER_PROMPT: - /* Get data source dialog box function from - * current executable */ - hdll = _iodbcdm_dllopen ((char FAR *) NULL); - dialproc = _iodbcdm_dllproc (hdll, - "_iodbcdm_drvconn_dialbox"); - - if (dialproc == SQL_NULL_HPROC) - { - sqlstat = en_IM008; - break; - } - - retcode = dialproc ( - hwnd, /* window or display handle */ - dsnbuf, /* input/output dsn buf */ - sizeof (dsnbuf), /* buf size */ - &sqlstat); /* error code */ - - if (retcode != SQL_SUCCESS) - { - break; - } - - if (cbConnStrIn == SQL_NTS) - { - cbConnStrIn = STRLEN (szConnStrIn); - } - - dsn = dsnbuf; - - if (dsn[0] == '\0') - { - dsn = "default"; - } - - if (cbConnStrIn > sizeof (cnstr2drv) - - STRLEN (dsn) - STRLEN ("DSN=;") - 1) - { - sqlstat = en_S1001; /* a lazy way to avoid - * using heap memory */ - break; - } - - sprintf (cnstr2drv, "DSN=%s;", dsn); - cbConnStrIn += STRLEN (cnstr2drv); - STRNCAT (cnstr2drv, szConnStrIn, cbConnStrIn); - szConnStrIn = cnstr2drv; - break; - - default: - sqlstat = en_S1110; - break; - } - - if (sqlstat != en_00000) - { - PUSHSQLERR (pdbc->herr, sqlstat); - - return SQL_ERROR; - } - - if (dsn == NULL || dsn[0] == '\0') - { - dsn = "default"; - } - else - /* if you want tracing, you must use a DSN */ - { - setopterr |= _iodbcdm_settracing (hdbc, - (char *) dsn, SQL_NTS); - } - - if (drv == NULL || drv[0] == '\0') - { - drv = _iodbcdm_getkeyvalbydsn (dsn, SQL_NTS, "Driver", - drvbuf, sizeof (drvbuf)); - } - - if (drv == NULL) - { - PUSHSQLERR (pdbc->herr, en_IM002); - - return SQL_ERROR; - } - - retcode = _iodbcdm_driverload (drv, hdbc); - - switch (retcode) - { - case SQL_SUCCESS: - break; - - case SQL_SUCCESS_WITH_INFO: - setopterr = SQL_ERROR; - /* unsuccessed in calling driver's - * SQLSetConnectOption() to set login - * timeout. - */ - break; - - default: - return retcode; - } - - hproc = _iodbcdm_getproc (hdbc, en_DriverConnect); - - if (hproc == SQL_NULL_HPROC) - { - _iodbcdm_driverunload (hdbc); - - PUSHSQLERR (pdbc->herr, en_IM001); - - return SQL_ERROR; - } - - CALL_DRIVER (hdbc, retcode, hproc, en_DriverConnect, ( - pdbc->dhdbc, hwnd, - szConnStrIn, cbConnStrIn, - szConnStrOut, cbConnStrOutMax, - pcbConnStrOut, fDriverCompletion)) - - if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO) - { - /* don't unload driver here for retrive - * error message from driver */ - /******** - _iodbcdm_driverunload( hdbc ); - *********/ - - return retcode; - } - - /* state transition */ - pdbc->state = en_dbc_connected; - - /* do delaid option setting */ - setopterr |= _iodbcdm_dbcdelayset (hdbc); - - if (setopterr != SQL_SUCCESS) - { - return SQL_SUCCESS_WITH_INFO; - } - - return retcode; -} - - -RETCODE SQL_API -SQLBrowseConnect ( - HDBC hdbc, - UCHAR FAR * szConnStrIn, - SWORD cbConnStrIn, - UCHAR FAR * szConnStrOut, - SWORD cbConnStrOutMax, - SWORD FAR * pcbConnStrOut) -{ - DBC_t FAR *pdbc = (DBC_t FAR *) hdbc; - HDLL hdll; - char FAR *drv; - char drvbuf[1024]; - char FAR *dsn; - char dsnbuf[SQL_MAX_DSN_LENGTH + 1]; - UCHAR cnstr2drv[1024]; - - HPROC hproc; - HPROC dialproc; - - int sqlstat = en_00000; - RETCODE retcode = SQL_SUCCESS; - RETCODE setopterr = SQL_SUCCESS; - - if (hdbc == SQL_NULL_HDBC) - { - return SQL_INVALID_HANDLE; - } - - /* check arguments */ - if ((cbConnStrIn < 0 && cbConnStrIn != SQL_NTS) || cbConnStrOutMax < 0) - { - PUSHSQLERR (pdbc->herr, en_S1090); - - return SQL_ERROR; - } - - if (pdbc->state == en_dbc_allocated) - { - drv = _iodbcdm_getkeyvalinstr (szConnStrIn, cbConnStrIn, - "DRIVER", drvbuf, sizeof (drvbuf)); - - dsn = _iodbcdm_getkeyvalinstr (szConnStrIn, cbConnStrIn, - "DSN", dsnbuf, sizeof (dsnbuf)); - - if (dsn == NULL || dsn[0] == '\0') - { - dsn = "default"; - } - else - /* if you want tracing, you must use a DSN */ - { - setopterr |= _iodbcdm_settracing (hdbc, - (char *) dsn, SQL_NTS); - } - - if (drv == NULL || drv[0] == '\0') - { - drv = _iodbcdm_getkeyvalbydsn (dsn, SQL_NTS, "Driver", - drvbuf, sizeof (drvbuf)); - } - - if (drv == NULL) - { - PUSHSQLERR (pdbc->herr, en_IM002); - - return SQL_ERROR; - } - - retcode = _iodbcdm_driverload (drv, hdbc); - - switch (retcode) - { - case SQL_SUCCESS: - break; - - case SQL_SUCCESS_WITH_INFO: - setopterr = SQL_ERROR; - /* unsuccessed in calling driver's - * SQLSetConnectOption() to set login - * timeout. - */ - break; - - default: - return retcode; - } - } - else if (pdbc->state != en_dbc_needdata) - { - PUSHSQLERR (pdbc->herr, en_08002); - - return SQL_ERROR; - } - - hproc = _iodbcdm_getproc (hdbc, en_BrowseConnect); - - if (hproc == SQL_NULL_HPROC) - { - _iodbcdm_driverunload (hdbc); - - pdbc->state = en_dbc_allocated; - - PUSHSQLERR (pdbc->herr, en_IM001); - - return SQL_ERROR; - } - - CALL_DRIVER (hdbc, retcode, hproc, en_BrowseConnect, ( - pdbc->dhdbc, - szConnStrIn, cbConnStrIn, - szConnStrOut, cbConnStrOutMax, - pcbConnStrOut)) - - switch (retcode) - { - case SQL_SUCCESS: - case SQL_SUCCESS_WITH_INFO: - pdbc->state = en_dbc_connected; - setopterr |= _iodbcdm_dbcdelayset (hdbc); - if (setopterr != SQL_SUCCESS) - { - retcode = SQL_SUCCESS_WITH_INFO; - } - break; - - case SQL_NEED_DATA: - pdbc->state = en_dbc_needdata; - break; - - case SQL_ERROR: - pdbc->state = en_dbc_allocated; - /* but the driver will not unloaded - * to allow application retrive err - * message from driver - */ - break; - - default: - break; - } - - return retcode; -} - - -RETCODE SQL_API -SQLDisconnect (HDBC hdbc) -{ - DBC_t FAR *pdbc = (DBC_t *) hdbc; - STMT_t FAR *pstmt; - RETCODE retcode; - HPROC hproc; - - int sqlstat = en_00000; - - if (hdbc == SQL_NULL_HDBC) - { - return SQL_INVALID_HANDLE; - } - - /* check hdbc state */ - if (pdbc->state == en_dbc_allocated) - { - sqlstat = en_08003; - } - - /* check stmt(s) state */ - for (pstmt = (STMT_t FAR *) pdbc->hstmt; - pstmt != NULL && sqlstat == en_00000; - pstmt = (STMT_t FAR *) pstmt->next) - { - if (pstmt->state >= en_stmt_needdata - || pstmt->asyn_on != en_NullProc) - /* In this case one need to call - * SQLCancel() first */ - { - sqlstat = en_S1010; - } - } - - if (sqlstat == en_00000) - { - hproc = _iodbcdm_getproc (hdbc, en_Disconnect); - - if (hproc == SQL_NULL_HPROC) - { - sqlstat = en_IM001; - } - } - - if (sqlstat != en_00000) - { - PUSHSQLERR (pdbc->herr, sqlstat); - - return SQL_ERROR; - } - - CALL_DRIVER (hdbc, retcode, hproc, en_Disconnect, ( - pdbc->dhdbc)) - - if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) - { - /* diff from MS specs. We disallow - * driver SQLDisconnect() return - * SQL_SUCCESS_WITH_INFO and post - * error message. - */ - retcode = SQL_SUCCESS; - } - else - { - return retcode; - } - - /* free all statement handle(s) on this connection */ - for (; pdbc->hstmt;) - { - _iodbcdm_dropstmt (pdbc->hstmt); - } - - /* state transition */ - if (retcode == SQL_SUCCESS) - { - pdbc->state = en_dbc_allocated; - } - - return retcode; -} - - -RETCODE SQL_API -SQLNativeSql ( - HDBC hdbc, - UCHAR FAR * szSqlStrIn, - SDWORD cbSqlStrIn, - UCHAR FAR * szSqlStr, - SDWORD cbSqlStrMax, - SDWORD FAR * pcbSqlStr) -{ - DBC_t FAR *pdbc = (DBC_t FAR *) hdbc; - HPROC hproc; - int sqlstat = en_00000; - RETCODE retcode; - - if (hdbc == SQL_NULL_HDBC) - { - return SQL_INVALID_HANDLE; - } - - /* check argument */ - if (szSqlStrIn == NULL) - { - sqlstat = en_S1009; - } - else if (cbSqlStrIn < 0 && cbSqlStrIn != SQL_NTS) - { - sqlstat = en_S1090; - } - - if (sqlstat != en_00000) - { - PUSHSQLERR (pdbc->herr, sqlstat); - - return SQL_ERROR; - } - - /* check state */ - if (pdbc->state <= en_dbc_needdata) - { - PUSHSQLERR (pdbc->herr, en_08003); - - return SQL_ERROR; - } - - /* call driver */ - hproc = _iodbcdm_getproc (hdbc, en_NativeSql); - - if (hproc == SQL_NULL_HPROC) - { - PUSHSQLERR (pdbc->herr, en_IM001); - - return SQL_ERROR; - } - - CALL_DRIVER (hdbc, retcode, hproc, en_NativeSql, - (pdbc->dhdbc, szSqlStrIn, cbSqlStrIn, szSqlStr, cbSqlStrMax, pcbSqlStr)) - - return retcode; -} diff --git a/src/iodbc/dlf.c b/src/iodbc/dlf.c deleted file mode 100644 index 8797c4b6bd..0000000000 --- a/src/iodbc/dlf.c +++ /dev/null @@ -1,612 +0,0 @@ -/* - * dlf.c - * - * $Id$ - * - * Dynamic Library Loader (mapping to SVR4) - * - * The iODBC driver manager. - * - * Copyright (C) 1995 by Ke Jin - * - * 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, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include -#include - -#ifdef DLDAPI_DEFINED -#undef DLDAPI_DEFINED -#endif - -#ifdef DLDAPI_SVR4_DLFCN -#define DLDAPI_DEFINED -static char sccsid[] = "@(#)dynamic load interface -- SVR4 dlfcn"; -#endif - -/********************************* - * - * HP/UX - * - *********************************/ - -#ifdef DLDAPI_HP_SHL -#define DLDAPI_DEFINED -#include - -static char sccsid[] = "@(#)dynamic load interface -- HP/UX dl(shl)"; - -void * -dlopen (char *path, int mode) -{ - return (void *) shl_load ((char *) (path), BIND_DEFERRED, 0L); -} - - -void * -dlsym (void *hdll, char *sym) -{ - void *symaddr = 0; - int ret; - - if (!hdll) - hdll = (void *) PROG_HANDLE; - - /* Remember, a driver may export calls as function pointers - * (i.e. with type TYPE_DATA) rather than as functions - * (i.e. with type TYPE_PROCEDURE). Thus, to be safe, we - * uses TYPE_UNDEFINED to cover all of them. - */ - ret = shl_findsym ((shl_t *) & hdll, sym, TYPE_UNDEFINED, &symaddr); - - if (ret == -1) - return 0; - - return symaddr; -} - - -char * -dlerror () -{ - extern char *strerror (); - - return strerror (errno); -} - - -int -dlclose (void *hdll) -{ - return shl_unload ((shl_t) hdll); -} -#endif /* end of HP/UX Seection */ - - -/********************************* - * - * IBM AIX - * - *********************************/ - -#ifdef DLDAPI_AIX_LOAD -#define DLDAPI_DEFINED -#include -#include -#include -#include - -/* - * Following id sting is a copyright mark. Removing(i.e. use the - * source code in this .c file without include it or make it not - * appear in the final object file of AIX platform) or modifing - * it without permission from original author(kejin@empress.com) - * are copyright violation. - */ -static char sccsid[] -= "@(#)dynamic load interface, Copyright(c) 1995 by Ke Jin"; - -#ifndef HTAB_SIZE -#define HTAB_SIZE 256 -#endif - -#define FACTOR 0.618039887 /* i.e. (sqrt(5) - 1)/2 */ - -#ifndef ENTRY_SYM -#define ENTRY_SYM ".__start" /* default entry point for aix */ -#endif - -typedef struct slot_s - { - char *sym; - long fdesc[3]; /* 12 bytes function descriptor */ - struct slot_s *next; - } -slot_t; - -/* Note: on AIX, a function pointer actually points to a - * function descriptor, a 12 bytes data. The first 4 bytes - * is the virtual address of the function. The next 4 bytes - * is the virtual address of TOC (Table of Contents) of the - * object module the function belong to. The last 4 bytes - * are always 0 for C and Fortran functions. Every object - * module has an entry point (which can be specified at link - * time by -e ld option). iODBC driver manager requires ODBC - * driver shared library always use the default entry point - * (so you shouldn't use -e ld option when creating a driver - * share library). load() returns the function descriptor of - * a module's entry point. From which we can calculate function - * descriptors of other functions in the same module by using - * the fact that the load() doesn't change the relative - * offset of functions to their module entry point(i.e the - * offset in memory loaded by load() will be as same as in - * the module library file). - */ - -typedef slot_t *hent_t; -typedef struct nlist nlist_t; -typedef struct stat stat_t; - -typedef struct obj - { - int dev; /* device id */ - int ino; /* inode number */ - char *path; /* file name */ - int (*pentry) (); /* entry point of this share library */ - int refn; /* number of reference */ - hent_t htab[HTAB_SIZE]; - struct obj * next; - } -obj_t; - -static char *errmsg = 0; - -static void -init_htab (hent_t * ht) -/* initate a hashing table */ -{ - int i; - - for (i = 0; i < HTAB_SIZE; i++) - ht[i] = (slot_t *) 0; - - return; -} - - -static void -clean_htab (hent_t * ht) -/* free all slots */ -{ - int i; - slot_t *ent; - slot_t *tent; - - for (i = 0; i < HTAB_SIZE; i++) - { - for (ent = ht[i]; ent;) - { - tent = ent->next; - - free (ent->sym); - free (ent); - - ent = tent; - } - - ht[i] = 0; - } - - return; -} - - -static int -hash (char *sym) -{ - int a, key; - double f; - - if (!sym || !*sym) - return 0; - - for (key = *sym; *sym; sym++) - { - key += *sym; - a = key; - - key = (int) ((a << 8) + (key >> 8)); - key = (key > 0) ? key : -key; - } - - f = key * FACTOR; - a = (int) f; - - return (int) ((HTAB_SIZE - 1) * (f - a)); -} - - -static hent_t -search (hent_t * htab, char *sym) -/* search hashing table to find a matched slot */ -{ - int key; - slot_t *ent; - - key = hash (sym); - - for (ent = htab[key]; ent; ent = ent->next) - { - if (!strcmp (ent->sym, sym)) - return ent; - } - - return 0; /* no match */ -} - - -static void -insert (hent_t * htab, slot_t * ent) -/* insert a new slot to hashing table */ -{ - int key; - - key = hash (ent->sym); - - ent->next = htab[key]; - htab[key] = ent; - - return; -} - - -static slot_t * -slot_alloc (char *sym) -/* allocate a new slot with symbol */ -{ - slot_t *ent; - - ent = (slot_t *) malloc (sizeof (slot_t)); - - ent->sym = (char *) malloc (strlen (sym) + 1); - - if (!ent->sym) - { - free (ent); - return 0; - } - - strcpy (ent->sym, sym); - - return ent; -} - - -static obj_t *obj_list = 0; - -void * -dlopen (char *file, int mode) -{ - stat_t st; - obj_t *pobj; - char buf[1024]; - - if (!file || !*file) - { - errno = EINVAL; - return 0; - } - - errno = 0; - errmsg = 0; - - if (stat (file, &st)) - return 0; - - for (pobj = obj_list; pobj; pobj = pobj->next) - /* find a match object */ - { - if (pobj->ino == st.st_ino - && pobj->dev == st.st_dev) - { - /* found a match. increase its - * reference count and return - * its address */ - pobj->refn++; - return pobj; - } - } - - pobj = (obj_t *) malloc (sizeof (obj_t)); - - if (!pobj) - return 0; - - pobj->path = (char *) malloc (strlen (file) + 1); - - if (!pobj->path) - { - free (pobj); - return 0; - } - - strcpy (pobj->path, file); - - pobj->dev = st.st_dev; - pobj->ino = st.st_ino; - pobj->refn = 1; - - pobj->pentry = (int (*)()) load (file, 0, 0); - - if (!pobj->pentry) - { - free (pobj->path); - free (pobj); - return 0; - } - - init_htab (pobj->htab); - - pobj->next = obj_list; - obj_list = pobj; - - return pobj; -} - - -int -dlclose (void *hobj) -{ - obj_t *pobj = (obj_t *) hobj; - obj_t *tpobj; - int match = 0; - - if (!hobj) - { - errno = EINVAL; - return -1; - } - - errno = 0; - errmsg = 0; - - if (pobj == obj_list) - { - pobj->refn--; - - if (pobj->refn) - return 0; - - match = 1; - obj_list = pobj->next; - } - - for (tpobj = obj_list; !match && tpobj; tpobj = tpobj->next) - { - if (tpobj->next == pobj) - { - pobj->refn--; - - if (pobj->refn) - return 0; - - match = 1; - tpobj->next = pobj->next; - } - } - - if (match) - { - unload ((void *) (pobj->pentry)); - clean_htab (pobj->htab); - free (pobj->path); - free (pobj); - } - - return 0; -} - - -char * -dlerror () -{ - extern char *sys_errlist[]; - - if (!errmsg || !errmsg[0]) - { - if (errno >= 0) - return sys_errlist[errno]; - - return ""; - } - - return errmsg; -} - - -void * -dlsym (void *hdl, char *sym) -{ - nlist_t nl[3]; - obj_t *pobj = (obj_t *) hdl; - slot_t *ent; - int (*fp) (); - long lbuf[3]; - - if (!hdl || !(pobj->htab) || !sym || !*sym) - { - errno = EINVAL; - return 0; - } - - errno = 0; - errmsg = 0; - - ent = search (pobj->htab, sym); - - if (ent) - return ent->fdesc; - -#define n_name _n._n_name - - nl[0].n_name = ENTRY_SYM; - nl[1].n_name = sym; - nl[2].n_name = 0; - - /* There is a potential problem here. If application - * did not pass a full path name, and changed the - * working directory after the load(), then nlist() - * will be unable to open the original shared library - * file to resolve the symbols. there are 3 ways to working - * round this: 1. convert to full pathname in driver - * manager. 2. applications always pass driver's full - * path name. 3. if driver itself don't support - * SQLGetFunctions(), call it with SQL_ALL_FUNCTIONS - * as flag immidately after SQLConnect(), SQLDriverConnect() - * and SQLBrowseConnect() to force the driver manager - * resolving all will be used symbols. - */ - if (nlist (pobj->path, nl) == -1) - return 0; - - if (!nl[0].n_type && !nl[0].n_value) - { - errmsg = "can't locate module entry symbol"; - return 0; - } - - /* Note: On AIX 3.x if the object library is not - * built with -g compiling option, .n_type field - * is always 0. While on 4.x it will be 32. - * On AIX 4.x, if the symbol is a entry point, - * n_value will be 0. However, one thing is for sure - * that if a symbol is not existance in the file, - * both .n_type and .n_value would be 0. - */ - - if (!nl[1].n_type && !nl[1].n_value) - { - errmsg = "symbol not existance in this module"; - return 0; - } - - ent = slot_alloc (sym); - - if (!ent) - return 0; - - /* catch it with a slot in the hashing table */ - insert (pobj->htab, ent); - - memcpy (ent->fdesc, pobj->pentry, sizeof (ent->fdesc)); - - /* now ent->fdesc[0] is the virtual address of entry point - * and ent->fdesc[1] is the TOC of the module - */ - - /* let's calculate the virtual address of the symbol - * by adding a relative offset getting from the module - * file symbol table, i.e - * - * functin virtual address = entry point virtual address + - * + ( function offset in file - entry point offset in file ) - */ - - (ent->fdesc)[0] = (ent->fdesc)[0] + - (nl[1].n_value - nl[0].n_value); - - /* return the function descriptor */ - return ent->fdesc; -} -#endif /* end of IBM AIX Section */ - - -/********************************* - * - * Windows 3.x, 95, NT - * - *********************************/ - -#ifdef DLDAPI_WINDOWS -#define DLDAPI_DEFINED -#include - -void FAR * -dlopen (char FAR * dll, int mode) -{ - HINSTANCE hint; - - if (dll == NULL) - { - return GetWindowWord (NULL, GWW_HINSTANCE); - } - - hint = LoadLibrary (dll); - - if (hint < HINSTANCE_ERROR) - { - return NULL; - } - - return (void FAR *) hint; -} - - -void FAR * -dlsym (void FAR * hdll, char FAR * sym) -{ - return (void FAR *) GetProcAddress (hdll, sym); -} - - -char FAR * -dlerror () -{ - return 0L; /* unimplemented yet */ -} - - -int -dlclose (void FAR * hdll) -{ - FreeLibrary ((HINSTANCE) hdll); -} -#endif /* end of Windows family */ - - -/*********************************** - * - * other platforms - * - ***********************************/ - -#ifdef DLDAPI_OS2 -#define DLDAPI_DEFINED -/* - * DosLoadModule(), DosQueryProcAddress(), DosFreeModule(), ... - */ -#endif - -#ifdef DLDAPI_MAC -#define DLDAPI_DEFINED -#endif - -#ifdef DLDAPI_NEXT -#define DLDAPI_DEFINED -#endif - -#ifndef DLDAPI_DEFINED -#error "dynamic load editor undefined" -#endif diff --git a/src/iodbc/dlf.h b/src/iodbc/dlf.h deleted file mode 100644 index b56e326460..0000000000 --- a/src/iodbc/dlf.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * dlf.h - * - * $Id$ - * - * Dynamic Library Loader (mapping to SVR4) - * - * The iODBC driver manager. - * - * Copyright (C) 1995 by Ke Jin - * - * 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, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ -#ifndef _DLF_H -#define _DLF_H -#include - -#if defined(HAVE_LIBDL) -#define DLDAPI_SVR4_DLFCN -#elif defined(HAVE_SHL_LOAD) -#define DLDAPI_HP_SHL -#endif - -#ifdef DLDAPI_SVR4_DLFCN -#include -#elif DLDAPI_AIX_LOAD -#include -#else -extern void FAR *dlopen (char FAR * path, int mode); -extern void FAR *dlsym (void FAR * hdll, char FAR * sym); -extern char FAR *dlerror (); -extern int dlclose (void FAR * hdll); -#endif - -#ifndef RTLD_LAZY -#define RTLD_LAZY 1 -#endif - -#define DLL_OPEN(dll) (void*)dlopen((char*)(path), RTLD_LAZY) -#define DLL_PROC(hdll, sym) (void*)dlsym((void*)(hdll), (char*)sym) -#define DLL_ERROR() (char*)dlerror() -#define DLL_CLOSE(hdll) dlclose((void*)(hdll)) -#endif diff --git a/src/iodbc/dlproc.c b/src/iodbc/dlproc.c deleted file mode 100644 index 85b04fad42..0000000000 --- a/src/iodbc/dlproc.c +++ /dev/null @@ -1,120 +0,0 @@ -/* - * dlproc.c - * - * $Id$ - * - * Load driver and resolve driver's function entry point - * - * The iODBC driver manager. - * - * Copyright (C) 1995 by Ke Jin - * - * 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, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include - -#include -#include - -#include - -#include -#include -#include - -#include - -#include "henv.ci" - -HPROC -_iodbcdm_getproc (HDBC hdbc, int idx) -{ - DBC_t FAR *pdbc = (DBC_t FAR *) hdbc; - ENV_t FAR *penv; - HDLL hdll; - HPROC FAR *phproc; - - if (idx <= 0 || idx > SQL_EXT_API_LAST) - /* first entry naver used */ - { - return SQL_NULL_HPROC; - } - - penv = (ENV_t FAR *) (pdbc->henv); - - if (penv == NULL) - { - return SQL_NULL_HPROC; - } - - phproc = penv->dllproc_tab + idx; - - if (*phproc == SQL_NULL_HPROC) - { - int i, en_idx; - - for (i = 0;; i++) - { - en_idx = odbcapi_symtab[i].en_idx; - - if (en_idx == en_NullProc) - { - break; - } - - if (en_idx == idx) - { - *phproc = _iodbcdm_dllproc (penv->hdll, - odbcapi_symtab[i].symbol); - - break; - } - } - } - - return *phproc; -} - - -HDLL -_iodbcdm_dllopen (char FAR * path) -{ - return (HDLL) DLL_OPEN (path); -} - - -HPROC -_iodbcdm_dllproc (HDLL hdll, char FAR * sym) -{ - return (HPROC) DLL_PROC (hdll, sym); -} - - -int -_iodbcdm_dllclose (HDLL hdll) -{ - DLL_CLOSE (hdll); - - return 0; -} - - -char * -_iodbcdm_dllerror () -{ - return DLL_ERROR (); -} - diff --git a/src/iodbc/dlproc.h b/src/iodbc/dlproc.h deleted file mode 100644 index 34aeac6cd1..0000000000 --- a/src/iodbc/dlproc.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * dlproc.h - * - * $Id$ - * - * Load driver and resolve driver's function entry point - * - * The iODBC driver manager. - * - * Copyright (C) 1995 by Ke Jin - * - * 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, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ -#ifndef _DLPROC_H -#define _DLPROC_H - -#include - -typedef RETCODE (FAR * HPROC) (); - -#ifdef DLDAPI_SVR4_DLFCN -#include -typedef void *HDLL; -#endif - -#ifdef DLDAPI_HP_SHL -#include -typedef shl_t HDLL; -#endif - -#ifdef DLDAPI_AIX_LOAD -typedef void *HDLL; -#endif - -extern HPROC _iodbcdm_getproc (); -extern HDLL _iodbcdm_dllopen (char FAR * dll); -extern HPROC _iodbcdm_dllproc (HDLL hdll, char FAR * sym); -extern char FAR *_iodbcdm_dllerror (); -extern int _iodbcdm_dllclose (HDLL hdll); - -#define SQL_NULL_HDLL ((HDLL)NULL) -#define SQL_NULL_HPROC ((HPROC)NULL) -#endif diff --git a/src/iodbc/execute.c b/src/iodbc/execute.c deleted file mode 100644 index bab022bc7e..0000000000 --- a/src/iodbc/execute.c +++ /dev/null @@ -1,768 +0,0 @@ -/* - * execute.c - * - * $Id$ - * - * Invoke a query - * - * The iODBC driver manager. - * - * Copyright (C) 1995 by Ke Jin - * - * 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, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include - -#include -#include - -#include - -#include -#include -#include -#include - -#include - -static void -do_cursoropen (STMT_t FAR * pstmt) -{ - RETCODE retcode; - SWORD ncol; - - pstmt->state = en_stmt_executed; - - retcode = SQLNumResultCols (pstmt, &ncol); - - if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) - { - if (ncol) - { - pstmt->state = en_stmt_cursoropen; - pstmt->cursor_state = en_stmt_cursor_opened; - } - else - { - pstmt->state = en_stmt_executed; - pstmt->cursor_state = en_stmt_cursor_no; - } - } -} - - -RETCODE SQL_API -SQLExecute (HSTMT hstmt) -{ - STMT_t FAR *pstmt = (STMT_t FAR *) hstmt; - HPROC hproc = SQL_NULL_HPROC; - RETCODE retcode; - - int sqlstat = en_00000; - - if (hstmt == SQL_NULL_HSTMT || pstmt->hdbc == SQL_NULL_HDBC) - { - return SQL_INVALID_HANDLE; - } - - /* check state */ - if (pstmt->asyn_on == en_NullProc) - { - switch (pstmt->state) - { - case en_stmt_allocated: - sqlstat = en_S1010; - break; - - case en_stmt_executed: - if (!pstmt->prep_state) - { - sqlstat = en_S1010; - } - break; - - case en_stmt_cursoropen: - if (!pstmt->prep_state) - { - sqlstat = en_S1010; - } - break; - - case en_stmt_fetched: - case en_stmt_xfetched: - if (!pstmt->prep_state) - { - sqlstat = en_S1010; - } - else - { - sqlstat = en_24000; - } - break; - - case en_stmt_needdata: - case en_stmt_mustput: - case en_stmt_canput: - sqlstat = en_S1010; - break; - - default: - break; - } - } - else if (pstmt->asyn_on != en_Execute) - { - sqlstat = en_S1010; - } - - if (sqlstat == en_00000) - { - hproc = _iodbcdm_getproc (pstmt->hdbc, en_Execute); - - if (hproc == SQL_NULL_HPROC) - { - sqlstat = en_IM001; - } - } - - if (sqlstat != en_00000) - { - PUSHSQLERR (pstmt->herr, sqlstat); - - return SQL_ERROR; - } - - CALL_DRIVER (pstmt->hdbc, retcode, hproc, en_Execute, - (pstmt->dhstmt)) - - /* stmt state transition */ - if (pstmt->asyn_on == en_Execute) - { - switch (retcode) - { - case SQL_SUCCESS: - case SQL_SUCCESS_WITH_INFO: - case SQL_NEED_DATA: - case SQL_ERROR: - pstmt->asyn_on = en_NullProc; - break; - - case SQL_STILL_EXECUTING: - default: - return retcode; - } - } - - switch (pstmt->state) - { - case en_stmt_prepared: - switch (retcode) - { - case SQL_SUCCESS: - case SQL_SUCCESS_WITH_INFO: - do_cursoropen (hstmt); - break; - - case SQL_NEED_DATA: - pstmt->state = en_stmt_needdata; - pstmt->need_on = en_Execute; - break; - - case SQL_STILL_EXECUTING: - pstmt->asyn_on = en_Execute; - break; - - default: - break; - } - break; - - case en_stmt_executed: - switch (retcode) - { - case SQL_ERROR: - pstmt->state = en_stmt_allocated; - pstmt->cursor_state = en_stmt_cursor_no; - pstmt->prep_state = 0; - break; - - case SQL_NEED_DATA: - pstmt->state = en_stmt_needdata; - pstmt->need_on = en_Execute; - break; - - case SQL_STILL_EXECUTING: - pstmt->asyn_on = en_Execute; - break; - - default: - break; - } - break; - - default: - break; - } - - return retcode; -} - - -RETCODE SQL_API -SQLExecDirect ( - HSTMT hstmt, - UCHAR FAR * szSqlStr, - SDWORD cbSqlStr) -{ - STMT_t FAR *pstmt = (STMT_t FAR *) hstmt; - HPROC hproc = SQL_NULL_HPROC; - - int sqlstat = en_00000; - RETCODE retcode = SQL_SUCCESS; - - if (hstmt == SQL_NULL_HSTMT || pstmt->hdbc == SQL_NULL_HDBC) - { - return SQL_INVALID_HANDLE; - } - - /* check arguments */ - if (szSqlStr == NULL) - { - sqlstat = en_S1009; - } - else if (cbSqlStr < 0 && cbSqlStr != SQL_NTS) - { - sqlstat = en_S1090; - } - - if (sqlstat != en_00000) - { - PUSHSQLERR (pstmt->herr, sqlstat); - - return SQL_ERROR; - } - - /* check state */ - if (pstmt->asyn_on == en_NullProc) - { - switch (pstmt->state) - { - case en_stmt_fetched: - case en_stmt_xfetched: - sqlstat = en_24000; - break; - - case en_stmt_needdata: - case en_stmt_mustput: - case en_stmt_canput: - sqlstat = en_S1010; - break; - - default: - break; - } - } - else if (pstmt->asyn_on != en_ExecDirect) - { - sqlstat = en_S1010; - } - - if (sqlstat != en_00000) - { - PUSHSQLERR (pstmt->herr, sqlstat); - - return SQL_ERROR; - } - - hproc = _iodbcdm_getproc (pstmt->hdbc, en_ExecDirect); - - if (hproc == SQL_NULL_HPROC) - { - PUSHSQLERR (pstmt->herr, en_IM001); - - return SQL_ERROR; - } - - CALL_DRIVER (pstmt->hdbc, retcode, hproc, en_ExecDirect, - (pstmt->dhstmt, szSqlStr, cbSqlStr)) - - /* stmt state transition */ - if (pstmt->asyn_on == en_ExecDirect) - { - switch (retcode) - { - case SQL_SUCCESS: - case SQL_SUCCESS_WITH_INFO: - case SQL_NEED_DATA: - case SQL_ERROR: - pstmt->asyn_on = en_NullProc; - break; - - case SQL_STILL_EXECUTING: - default: - return retcode; - } - } - - if (pstmt->state <= en_stmt_executed) - { - switch (retcode) - { - case SQL_SUCCESS: - case SQL_SUCCESS_WITH_INFO: - do_cursoropen (hstmt); - break; - - case SQL_NEED_DATA: - pstmt->state = en_stmt_needdata; - pstmt->need_on = en_ExecDirect; - break; - - case SQL_STILL_EXECUTING: - pstmt->asyn_on = en_ExecDirect; - break; - - case SQL_ERROR: - pstmt->state = en_stmt_allocated; - pstmt->cursor_state = en_stmt_cursor_no; - pstmt->prep_state = 0; - break; - - default: - break; - } - } - - return retcode; -} - - -RETCODE SQL_API -SQLPutData ( - HSTMT hstmt, - PTR rgbValue, - SDWORD cbValue) -{ - STMT_t FAR *pstmt = (STMT_t FAR *) hstmt; - HPROC hproc; - RETCODE retcode; - - if (hstmt == SQL_NULL_HSTMT || pstmt->hdbc == SQL_NULL_HDBC) - { - return SQL_INVALID_HANDLE; - } - - /* check argument value */ - if (rgbValue == NULL && - (cbValue != SQL_DEFAULT_PARAM && cbValue != SQL_NULL_DATA)) - { - PUSHSQLERR (pstmt->herr, en_S1009); - - return SQL_ERROR; - } - - /* check state */ - if (pstmt->asyn_on == en_NullProc) - { - if (pstmt->state <= en_stmt_xfetched) - { - PUSHSQLERR (pstmt->herr, en_S1010); - - return SQL_ERROR; - } - } - else if (pstmt->asyn_on != en_PutData) - { - PUSHSQLERR (pstmt->herr, en_S1010); - - return SQL_ERROR; - } - - /* call driver */ - hproc = _iodbcdm_getproc (pstmt->hdbc, en_PutData); - - if (hproc == SQL_NULL_HPROC) - { - PUSHSQLERR (pstmt->herr, en_IM001); - - return SQL_ERROR; - } - - CALL_DRIVER (pstmt->hdbc, retcode, hproc, en_PutData, - (pstmt->dhstmt, rgbValue, cbValue)) - - /* state transition */ - if (pstmt->asyn_on == en_PutData) - { - switch (retcode) - { - case SQL_SUCCESS: - case SQL_SUCCESS_WITH_INFO: - case SQL_ERROR: - pstmt->asyn_on = en_NullProc; - break; - - case SQL_STILL_EXECUTING: - default: - return retcode; - } - } - - /* must in mustput or canput states */ - switch (retcode) - { - case SQL_SUCCESS: - case SQL_SUCCESS_WITH_INFO: - pstmt->state = en_stmt_canput; - break; - - case SQL_ERROR: - switch (pstmt->need_on) - { - case en_ExecDirect: - pstmt->state = en_stmt_allocated; - pstmt->need_on = en_NullProc; - break; - - case en_Execute: - if (pstmt->prep_state) - { - pstmt->state = en_stmt_prepared; - pstmt->need_on = en_NullProc; - } - break; - - case en_SetPos: - /* Is this possible ???? */ - pstmt->state = en_stmt_xfetched; - break; - - default: - break; - } - break; - - case SQL_STILL_EXECUTING: - pstmt->asyn_on = en_PutData; - break; - - default: - break; - } - - return retcode; -} - - -RETCODE SQL_API -SQLParamData ( - HSTMT hstmt, - PTR FAR * prgbValue) -{ - STMT_t FAR *pstmt = (STMT_t FAR *) hstmt; - HPROC hproc; - RETCODE retcode; - - if (hstmt == SQL_NULL_HSTMT || pstmt->hdbc == SQL_NULL_HDBC) - { - return SQL_INVALID_HANDLE; - } - - /* check argument */ - - /* check state */ - if (pstmt->asyn_on == en_NullProc) - { - if (pstmt->state <= en_stmt_xfetched) - { - PUSHSQLERR (pstmt->herr, en_S1010); - - return SQL_ERROR; - } - } - else if (pstmt->asyn_on != en_ParamData) - { - PUSHSQLERR (pstmt->herr, en_S1010); - - return SQL_ERROR; - } - - /* call driver */ - hproc = _iodbcdm_getproc (pstmt->hdbc, en_ParamData); - - if (hproc == SQL_NULL_HPROC) - { - PUSHSQLERR (pstmt->herr, en_IM001); - - return SQL_ERROR; - } - - CALL_DRIVER (pstmt->hdbc, retcode, hproc, en_ParamData, - (pstmt->dhstmt, prgbValue)) - - /* state transition */ - if (pstmt->asyn_on == en_ParamData) - { - switch (retcode) - { - case SQL_SUCCESS: - case SQL_SUCCESS_WITH_INFO: - case SQL_ERROR: - pstmt->asyn_on = en_NullProc; - break; - - case SQL_STILL_EXECUTING: - default: - return retcode; - } - } - - if (pstmt->state < en_stmt_needdata) - { - return retcode; - } - - switch (retcode) - { - case SQL_ERROR: - switch (pstmt->need_on) - { - case en_ExecDirect: - pstmt->state = en_stmt_allocated; - break; - - case en_Execute: - pstmt->state = en_stmt_prepared; - break; - - case en_SetPos: - pstmt->state = en_stmt_xfetched; - pstmt->cursor_state - = en_stmt_cursor_xfetched; - break; - - default: - break; - } - pstmt->need_on = en_NullProc; - break; - - case SQL_SUCCESS: - case SQL_SUCCESS_WITH_INFO: - switch (pstmt->state) - { - case en_stmt_needdata: - pstmt->state = en_stmt_mustput; - break; - - case en_stmt_canput: - switch (pstmt->need_on) - { - case en_SetPos: - pstmt->state - = en_stmt_xfetched; - pstmt->cursor_state - = en_stmt_cursor_xfetched; - break; - - case en_ExecDirect: - case en_Execute: - do_cursoropen (hstmt); - break; - - default: - break; - } - break; - - default: - break; - } - pstmt->need_on = en_NullProc; - break; - - case SQL_NEED_DATA: - pstmt->state = en_stmt_mustput; - break; - - default: - break; - } - - return retcode; -} - - -RETCODE SQL_API -SQLNumParams ( - HSTMT hstmt, - SWORD FAR * pcpar) -{ - STMT_t FAR *pstmt = (STMT_t FAR *) hstmt; - HPROC hproc; - RETCODE retcode; - - if (hstmt == SQL_NULL_HSTMT || pstmt->hdbc == SQL_NULL_HDBC) - { - return SQL_INVALID_HANDLE; - } - - /* check argument */ - - /* check state */ - if (pstmt->asyn_on == en_NullProc) - { - switch (pstmt->state) - { - case en_stmt_allocated: - case en_stmt_needdata: - case en_stmt_mustput: - case en_stmt_canput: - PUSHSQLERR (pstmt->herr, en_S1010); - return SQL_ERROR; - - default: - break; - } - } - else if (pstmt->asyn_on != en_NumParams) - { - PUSHSQLERR (pstmt->herr, en_S1010); - - return SQL_ERROR; - } - - /* call driver */ - hproc = _iodbcdm_getproc (pstmt->hdbc, en_NumParams); - - if (hproc == SQL_NULL_HPROC) - { - PUSHSQLERR (pstmt->herr, en_IM001); - - return SQL_ERROR; - } - - CALL_DRIVER (pstmt->hdbc, retcode, hproc, en_NumParams, - (pstmt->dhstmt, pcpar)) - - /* state transition */ - if (pstmt->asyn_on == en_NumParams) - { - switch (retcode) - { - case SQL_SUCCESS: - case SQL_SUCCESS_WITH_INFO: - case SQL_ERROR: - break; - - default: - return retcode; - } - } - - if (retcode == SQL_STILL_EXECUTING) - { - pstmt->asyn_on = en_NumParams; - } - - return retcode; -} - - -RETCODE SQL_API -SQLDescribeParam ( - HSTMT hstmt, - UWORD ipar, - SWORD FAR * pfSqlType, - UDWORD FAR * pcbColDef, - SWORD FAR * pibScale, - SWORD FAR * pfNullable) -{ - STMT_t FAR *pstmt = (STMT_t FAR *) hstmt; - HPROC hproc; - RETCODE retcode; - - if (hstmt == SQL_NULL_HSTMT || pstmt->hdbc == SQL_NULL_HDBC) - { - return SQL_INVALID_HANDLE; - } - - /* check argument */ - if (ipar == 0) - { - PUSHSQLERR (pstmt->herr, en_S1093); - - return SQL_ERROR; - } - - /* check state */ - if (pstmt->asyn_on == en_NullProc) - { - switch (pstmt->state) - { - case en_stmt_allocated: - case en_stmt_needdata: - case en_stmt_mustput: - case en_stmt_canput: - PUSHSQLERR (pstmt->herr, en_S1010); - return SQL_ERROR; - - default: - break; - } - } - else if (pstmt->asyn_on != en_DescribeParam) - { - PUSHSQLERR (pstmt->herr, en_S1010); - - return SQL_ERROR; - } - - /* call driver */ - hproc = _iodbcdm_getproc (pstmt->hdbc, en_DescribeParam); - - if (hproc == SQL_NULL_HPROC) - { - PUSHSQLERR (pstmt->herr, en_IM001); - - return SQL_ERROR; - } - - CALL_DRIVER (pstmt->hdbc, retcode, hproc, en_DescribeParam, - (pstmt->dhstmt, ipar, pfSqlType, pcbColDef, pibScale, pfNullable)) - - /* state transition */ - if (pstmt->asyn_on == en_DescribeParam) - { - switch (retcode) - { - case SQL_SUCCESS: - case SQL_SUCCESS_WITH_INFO: - case SQL_ERROR: - break; - - default: - return retcode; - } - } - - if (retcode == SQL_STILL_EXECUTING) - { - pstmt->asyn_on = en_DescribeParam; - } - - return retcode; -} diff --git a/src/iodbc/fetch.c b/src/iodbc/fetch.c deleted file mode 100644 index 5c4227339a..0000000000 --- a/src/iodbc/fetch.c +++ /dev/null @@ -1,649 +0,0 @@ -/* - * fetch.c - * - * $Id$ - * - * Fetch query result - * - * The iODBC driver manager. - * - * Copyright (C) 1995 by Ke Jin - * - * 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, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include - -#include -#include - -#include - -#include -#include -#include -#include - -#include - -RETCODE SQL_API -SQLFetch (HSTMT hstmt) -{ - STMT_t FAR *pstmt = (STMT_t FAR *) hstmt; - HPROC hproc = SQL_NULL_HPROC; - RETCODE retcode; - - if (hstmt == SQL_NULL_HSTMT || pstmt->hdbc == SQL_NULL_HDBC) - { - return SQL_INVALID_HANDLE; - } - - /* check state */ - if (pstmt->asyn_on == en_NullProc) - { - switch (pstmt->state) - { - case en_stmt_allocated: - case en_stmt_prepared: - case en_stmt_xfetched: - case en_stmt_needdata: - case en_stmt_mustput: - case en_stmt_canput: - PUSHSQLERR (pstmt->herr, en_S1010); - return SQL_ERROR; - - default: - break; - } - } - else if (pstmt->asyn_on != en_Fetch) - { - PUSHSQLERR (pstmt->herr, en_S1010); - return SQL_ERROR; - } - - hproc = _iodbcdm_getproc (pstmt->hdbc, en_Fetch); - - if (hproc == SQL_NULL_HPROC) - { - PUSHSQLERR (pstmt->herr, en_IM001); - - return SQL_ERROR; - } - - CALL_DRIVER (pstmt->hdbc, retcode, hproc, en_Fetch, - (pstmt->dhstmt)) - - /* state transition */ - if (pstmt->asyn_on == en_Fetch) - { - switch (retcode) - { - case SQL_SUCCESS: - case SQL_SUCCESS_WITH_INFO: - case SQL_NO_DATA_FOUND: - case SQL_ERROR: - pstmt->asyn_on = en_NullProc; - break; - - case SQL_STILL_EXECUTING: - default: - return retcode; - } - } - - switch (pstmt->state) - { - case en_stmt_cursoropen: - case en_stmt_fetched: - switch (retcode) - { - case SQL_SUCCESS: - case SQL_SUCCESS_WITH_INFO: - pstmt->state = en_stmt_fetched; - pstmt->cursor_state = en_stmt_cursor_fetched; - break; - - case SQL_NO_DATA_FOUND: - if (pstmt->prep_state) - { - pstmt->state = en_stmt_prepared; - } - else - { - - pstmt->state = en_stmt_allocated; - } - pstmt->cursor_state = en_stmt_cursor_no; - break; - - case SQL_STILL_EXECUTING: - pstmt->asyn_on = en_Fetch; - break; - - default: - break; - } - break; - - default: - break; - } - - return retcode; -} - - -RETCODE SQL_API -SQLExtendedFetch ( - HSTMT hstmt, - UWORD fFetchType, - SDWORD irow, - UDWORD FAR * pcrow, - UWORD FAR * rgfRowStatus) -{ - STMT_t FAR *pstmt = (STMT_t FAR *) hstmt; - HPROC hproc = SQL_NULL_HPROC; - RETCODE retcode; - - if (hstmt == SQL_NULL_HSTMT || pstmt->hdbc == SQL_NULL_HDBC) - { - return SQL_INVALID_HANDLE; - } - - /* check fetch type */ - if (fFetchType < SQL_FETCH_NEXT || fFetchType > SQL_FETCH_BOOKMARK) - { - /* Unlike MS driver manager(i.e. DM), - * we don't check driver's ODBC version - * against SQL_FETCH_RESUME (only 1.0) - * and SQL_FETCH_BOOKMARK (only 2.0). - */ - PUSHSQLERR (pstmt->herr, en_S1106); - - return SQL_ERROR; - } - - /* check state */ - if (pstmt->asyn_on == en_NullProc) - { - switch (pstmt->state) - { - case en_stmt_allocated: - case en_stmt_prepared: - case en_stmt_fetched: - case en_stmt_needdata: - case en_stmt_mustput: - case en_stmt_canput: - PUSHSQLERR (pstmt->herr, en_S1010); - return SQL_ERROR; - - default: - break; - } - } - else if (pstmt->asyn_on != en_ExtendedFetch) - { - PUSHSQLERR (pstmt->herr, en_S1010); - return SQL_ERROR; - } - - hproc = _iodbcdm_getproc (pstmt->hdbc, en_ExtendedFetch); - - if (hproc == SQL_NULL_HPROC) - { - PUSHSQLERR (pstmt->herr, en_IM001); - - return SQL_ERROR; - } - - CALL_DRIVER (pstmt->hdbc, retcode, hproc, en_ExtendedFetch, - (pstmt->dhstmt, fFetchType, irow, pcrow, rgfRowStatus)) - - /* state transition */ - if (pstmt->asyn_on == en_ExtendedFetch) - { - switch (retcode) - { - case SQL_SUCCESS: - case SQL_SUCCESS_WITH_INFO: - case SQL_NO_DATA_FOUND: - case SQL_ERROR: - pstmt->asyn_on = en_NullProc; - break; - - case SQL_STILL_EXECUTING: - default: - return retcode; - } - } - - switch (pstmt->state) - { - case en_stmt_cursoropen: - case en_stmt_xfetched: - switch (retcode) - { - case SQL_SUCCESS: - case SQL_SUCCESS_WITH_INFO: - case SQL_NO_DATA_FOUND: - pstmt->state = en_stmt_xfetched; - pstmt->cursor_state = en_stmt_cursor_xfetched; - break; - - case SQL_STILL_EXECUTING: - pstmt->asyn_on = en_ExtendedFetch; - break; - - default: - break; - } - break; - - default: - break; - } - - return retcode; -} - - -RETCODE SQL_API -SQLGetData ( - HSTMT hstmt, - UWORD icol, - SWORD fCType, - PTR rgbValue, - SDWORD cbValueMax, - SDWORD FAR * pcbValue) -{ - STMT_t FAR *pstmt = (STMT_t FAR *) hstmt; - HPROC hproc; - RETCODE retcode; - int sqlstat = en_00000; - - if (hstmt == SQL_NULL_HSTMT || pstmt->hdbc == SQL_NULL_HDBC) - { - return SQL_INVALID_HANDLE; - } - - /* check argument */ - if (rgbValue == NULL) - { - sqlstat = en_S1009; - } - else if (cbValueMax < 0) - { - sqlstat = en_S1090; - } - else - { - switch (fCType) - { - case SQL_C_DEFAULT: - case SQL_C_CHAR: - case SQL_C_BINARY: - case SQL_C_BIT: - case SQL_C_TINYINT: - case SQL_C_STINYINT: - case SQL_C_UTINYINT: - case SQL_C_SHORT: - case SQL_C_SSHORT: - case SQL_C_USHORT: - case SQL_C_LONG: - case SQL_C_SLONG: - case SQL_C_ULONG: - case SQL_C_FLOAT: - case SQL_C_DOUBLE: - case SQL_C_DATE: - case SQL_C_TIME: - case SQL_C_TIMESTAMP: - break; - - default: - sqlstat = en_S1003; - break; - } - } - - if (sqlstat != en_00000) - { - PUSHSQLERR (pstmt->herr, sqlstat); - - return SQL_ERROR; - } - - /* check state */ - if (pstmt->asyn_on == en_NullProc) - { - switch (pstmt->state) - { - case en_stmt_allocated: - case en_stmt_prepared: - case en_stmt_needdata: - case en_stmt_mustput: - case en_stmt_canput: - sqlstat = en_S1010; - break; - - case en_stmt_executed: - case en_stmt_cursoropen: - sqlstat = en_24000; - break; - - default: - break; - } - } - else if (pstmt->asyn_on != en_GetData) - { - sqlstat = en_S1010; - } - - if (sqlstat != en_00000) - { - PUSHSQLERR (pstmt->herr, sqlstat); - - return SQL_ERROR; - } - - /* call driver */ - hproc = _iodbcdm_getproc (pstmt->hdbc, en_GetData); - - if (hproc == SQL_NULL_HPROC) - { - PUSHSQLERR (pstmt->herr, en_IM001); - - return SQL_ERROR; - } - - CALL_DRIVER (pstmt->hdbc, retcode, hproc, en_GetData, - (pstmt->dhstmt, icol, fCType, rgbValue, cbValueMax, pcbValue)) - - /* state transition */ - if (pstmt->asyn_on == en_GetData) - { - switch (retcode) - { - case SQL_SUCCESS: - case SQL_SUCCESS_WITH_INFO: - case SQL_NO_DATA_FOUND: - case SQL_ERROR: - pstmt->asyn_on = en_NullProc; - break; - - case SQL_STILL_EXECUTING: - default: - return retcode; - } - } - - switch (pstmt->state) - { - case en_stmt_fetched: - case en_stmt_xfetched: - if (retcode == SQL_STILL_EXECUTING) - { - pstmt->asyn_on = en_GetData; - break; - } - break; - - default: - break; - } - - return retcode; -} - - -RETCODE SQL_API -SQLMoreResults (HSTMT hstmt) -{ - STMT_t FAR *pstmt = (STMT_t FAR *) hstmt; - HPROC hproc; - RETCODE retcode; - - if (hstmt == SQL_NULL_HSTMT - || pstmt->hdbc == SQL_NULL_HDBC) - { - return SQL_INVALID_HANDLE; - } - - /* check state */ - if (pstmt->asyn_on == en_NullProc) - { - switch (pstmt->state) - { - case en_stmt_allocated: - case en_stmt_prepared: - return SQL_NO_DATA_FOUND; - - case en_stmt_needdata: - case en_stmt_mustput: - case en_stmt_canput: - PUSHSQLERR (pstmt->herr, en_S1010); - return SQL_ERROR; - - default: - break; - } - } - else if (pstmt->asyn_on != en_MoreResults) - { - PUSHSQLERR (pstmt->herr, en_S1010); - - return SQL_ERROR; - } - - /* call driver */ - hproc = _iodbcdm_getproc (pstmt->hdbc, en_MoreResults); - - if (hproc == SQL_NULL_HPROC) - { - PUSHSQLERR (pstmt->herr, en_IM001); - - return SQL_ERROR; - } - - CALL_DRIVER (pstmt->hdbc, retcode, hproc, en_MoreResults, - (pstmt->dhstmt)) - - /* state transition */ - if (pstmt->asyn_on == en_MoreResults) - { - switch (retcode) - { - case SQL_SUCCESS: - case SQL_SUCCESS_WITH_INFO: - case SQL_NO_DATA_FOUND: - case SQL_ERROR: - pstmt->asyn_on = en_NullProc; - break; - - case SQL_STILL_EXECUTING: - default: - return retcode; - } - } - - switch (pstmt->state) - { - case en_stmt_allocated: - case en_stmt_prepared: - /* driver should return SQL_NO_DATA_FOUND */ - break; - - case en_stmt_executed: - if (retcode == SQL_NO_DATA_FOUND) - { - if (pstmt->prep_state) - { - pstmt->state = en_stmt_prepared; - } - else - { - pstmt->state = en_stmt_allocated; - } - } - else if (retcode == SQL_STILL_EXECUTING) - { - pstmt->asyn_on = en_MoreResults; - } - break; - - case en_stmt_cursoropen: - case en_stmt_fetched: - case en_stmt_xfetched: - if (retcode == SQL_SUCCESS) - { - break; - } - else if (retcode == SQL_NO_DATA_FOUND) - { - if (pstmt->prep_state) - { - pstmt->state = en_stmt_prepared; - } - else - { - pstmt->state = en_stmt_allocated; - } - } - else if (retcode == SQL_STILL_EXECUTING) - { - pstmt->asyn_on = en_MoreResults; - } - break; - - default: - break; - } - - return retcode; -} - - -RETCODE SQL_API -SQLSetPos ( - HSTMT hstmt, - UWORD irow, - UWORD fOption, - UWORD fLock) -{ - STMT_t FAR *pstmt = (STMT_t FAR *) hstmt; - HPROC hproc; - RETCODE retcode; - int sqlstat = en_00000; - - if (hstmt == SQL_NULL_HSTMT || pstmt->hdbc == SQL_NULL_HDBC) - { - return SQL_INVALID_HANDLE; - } - - /* check argument value */ - if (fOption > SQL_ADD || fLock > SQL_LOCK_UNLOCK) - { - PUSHSQLERR (pstmt->herr, en_S1009); - } - - /* check state */ - if (pstmt->asyn_on == en_NullProc) - { - switch (pstmt->state) - { - case en_stmt_allocated: - case en_stmt_prepared: - case en_stmt_fetched: - case en_stmt_needdata: - case en_stmt_mustput: - case en_stmt_canput: - sqlstat = en_S1010; - break; - - case en_stmt_executed: - case en_stmt_cursoropen: - sqlstat = en_24000; - break; - - default: - break; - } - } - else if (pstmt->asyn_on != en_SetPos) - { - sqlstat = en_S1010; - } - - if (sqlstat != en_00000) - { - PUSHSQLERR (pstmt->herr, sqlstat); - - return SQL_ERROR; - } - - /* call driver */ - hproc = _iodbcdm_getproc (pstmt->hdbc, en_SetPos); - - if (hproc == SQL_NULL_HPROC) - { - PUSHSQLERR (pstmt->herr, en_IM001); - - return SQL_ERROR; - } - - CALL_DRIVER (pstmt->hdbc, retcode, hproc, en_SetPos, - (pstmt->dhstmt, irow, fOption, fLock)) - - /* state transition */ - if (pstmt->asyn_on == en_SetPos) - { - switch (retcode) - { - case SQL_SUCCESS: - case SQL_SUCCESS_WITH_INFO: - case SQL_NEED_DATA: - case SQL_ERROR: - pstmt->asyn_on = en_NullProc; - break; - - case SQL_STILL_EXECUTING: - default: - return retcode; - } - } - - /* now, the only possible init state is 'xfetched' */ - switch (retcode) - { - case SQL_SUCCESS: - case SQL_SUCCESS_WITH_INFO: - break; - - case SQL_NEED_DATA: - pstmt->state = en_stmt_needdata; - pstmt->need_on = en_SetPos; - break; - - case SQL_STILL_EXECUTING: - pstmt->asyn_on = en_SetPos; - break; - - default: - break; - } - - return retcode; -} diff --git a/src/iodbc/hdbc.c b/src/iodbc/hdbc.c deleted file mode 100644 index 67eb5e6865..0000000000 --- a/src/iodbc/hdbc.c +++ /dev/null @@ -1,813 +0,0 @@ -/* - * hdbc.c - * - * $Id$ - * - * Data source connect object management functions - * - * The iODBC driver manager. - * - * Copyright (C) 1995 by Ke Jin - * - * 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, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include - -#include -#include - -#include - -#include -#include -#include -#include - -#include -#include - -extern RETCODE _iodbcdm_driverunload(); - - -RETCODE SQL_API -SQLAllocConnect ( - HENV henv, - HDBC FAR * phdbc) -{ - GENV_t FAR *genv = (GENV_t FAR *) henv; - DBC_t FAR *pdbc; - -#if (ODBCVER >= 0x0300) - if (henv == SQL_NULL_HENV || genv->type != SQL_HANDLE_ENV) -#else - if (henv == SQL_NULL_HENV) -#endif - - { - return SQL_INVALID_HANDLE; - } - - if (phdbc == NULL) - { - PUSHSQLERR (genv->herr, en_S1009); - - return SQL_ERROR; - } - - pdbc = (DBC_t FAR *) MEM_ALLOC (sizeof (DBC_t)); - - if (pdbc == NULL) - { - *phdbc = SQL_NULL_HDBC; - - PUSHSQLERR (genv->herr, en_S1001); - - return SQL_ERROR; - } - -#if (ODBCVER >= 0x0300) - pdbc->type = SQL_HANDLE_DBC; -#endif - - /* insert this dbc entry into the link list */ - pdbc->next = genv->hdbc; - genv->hdbc = pdbc; - pdbc->genv = henv; - - pdbc->henv = SQL_NULL_HENV; - pdbc->hstmt = SQL_NULL_HSTMT; - pdbc->herr = SQL_NULL_HERR; - pdbc->dhdbc = SQL_NULL_HDBC; - pdbc->state = en_dbc_allocated; - pdbc->trace = 0; - pdbc->tstm = NULL; - pdbc->tfile = NULL; - - /* set connect options to default values */ - pdbc->access_mode = SQL_MODE_DEFAULT; - pdbc->autocommit = SQL_AUTOCOMMIT_DEFAULT; - pdbc->current_qualifier = NULL; - pdbc->login_timeout = 0UL; - pdbc->odbc_cursors = SQL_CUR_DEFAULT; - pdbc->packet_size = 0UL; - pdbc->quiet_mode = (UDWORD) NULL; - pdbc->txn_isolation = SQL_TXN_READ_UNCOMMITTED; - pdbc->cb_commit = (SWORD) SQL_CB_DELETE; - pdbc->cb_rollback = (SWORD) SQL_CB_DELETE; - - *phdbc = (HDBC) pdbc; - - return SQL_SUCCESS; -} - - -RETCODE SQL_API -SQLFreeConnect (HDBC hdbc) -{ - GENV_t FAR *genv; - DBC_t FAR *pdbc = (DBC_t FAR *) hdbc; - DBC_t FAR *tpdbc; - - if (hdbc == SQL_NULL_HDBC) - { - return SQL_INVALID_HANDLE; - } - - /* check state */ - if (pdbc->state != en_dbc_allocated) - { - PUSHSQLERR (pdbc->herr, en_S1010); - - return SQL_ERROR; - } - - genv = (GENV_t FAR *) pdbc->genv; - - for (tpdbc = (DBC_t FAR *) genv->hdbc; - tpdbc != NULL; - tpdbc = tpdbc->next) - { - if (pdbc == tpdbc) - { - genv->hdbc = pdbc->next; - break; - } - - if (pdbc == tpdbc->next) - { - tpdbc->next = pdbc->next; - break; - } - } - - /* free this dbc */ - _iodbcdm_driverunload (pdbc); - _iodbcdm_freesqlerrlist (pdbc->herr); - - if (pdbc->tfile) - { - MEM_FREE (pdbc->tfile); - } - - SQLSetConnectOption (pdbc, SQL_OPT_TRACE, SQL_OPT_TRACE_OFF); - - MEM_FREE (pdbc); - - return SQL_SUCCESS; -} - - -RETCODE SQL_API -SQLSetConnectOption ( - HDBC hdbc, - UWORD fOption, - UDWORD vParam) -{ - GENV_t FAR *genv; - DBC_t FAR *pdbc = (DBC_t FAR *) hdbc; - STMT_t FAR *pstmt; - HPROC hproc = SQL_NULL_HPROC; - int sqlstat = en_00000; - RETCODE retcode = SQL_SUCCESS; - - if (hdbc == SQL_NULL_HDBC) - { - return SQL_INVALID_HANDLE; - } - - /* check option */ - if (fOption < SQL_CONN_OPT_MIN || - (fOption > SQL_CONN_OPT_MAX && fOption < SQL_CONNECT_OPT_DRVR_START)) - { - PUSHSQLERR (pdbc->herr, en_S1092); - - return SQL_ERROR; - } - - /* check state of connection handle */ - switch (pdbc->state) - { - case en_dbc_allocated: - if (fOption == SQL_TRANSLATE_DLL || fOption == SQL_TRANSLATE_OPTION) - { - /* This two options are only meaningful - * for specified driver. So, has to be - * set after a dirver has been loaded. - */ - sqlstat = en_08003; - break; - } - - if (fOption >= SQL_CONNECT_OPT_DRVR_START && pdbc->henv == SQL_NULL_HENV) - /* An option only meaningful for drivers - * is passed before loading a driver. - * We classify this as an invalid option error. - * This is not documented by MS SDK guide. - */ - { - sqlstat = en_S1092; - break; - } - break; - - case en_dbc_needdata: - sqlstat = en_S1010; - break; - - case en_dbc_connected: - case en_dbc_hstmt: - if (fOption == SQL_ODBC_CURSORS) - { - sqlstat = en_08002; - } - break; - - default: - break; - } - - /* check state of statement handle(s) */ - for (pstmt = (STMT_t FAR *) pdbc->hstmt; - pstmt != NULL && sqlstat == en_00000; - pstmt = (STMT_t FAR *) pstmt->next) - { - if (pstmt->state >= en_stmt_needdata || pstmt->asyn_on != en_NullProc) - { - sqlstat = en_S1010; - } - } - - if (sqlstat != en_00000) - { - PUSHSQLERR (pdbc->herr, sqlstat); - - return SQL_ERROR; - } - - if (fOption == SQL_OPT_TRACE) - /* tracing flag can be set before and after connect - * and only meaningful for driver manager(actually - * there is only one tracing file under one global - * environment). - */ - { - switch (vParam) - { - case SQL_OPT_TRACE_ON: - if (pdbc->tfile == NULL) - { - pdbc->tfile = (char FAR *) MEM_ALLOC (1 + - STRLEN (SQL_OPT_TRACE_FILE_DEFAULT)); - - if (pdbc->tfile == NULL) - { - PUSHSQLERR (pdbc->herr, en_S1001); - - return SQL_ERROR; - } - - STRCPY (pdbc->tfile, SQL_OPT_TRACE_FILE_DEFAULT); - } - - if (pdbc->tstm == NULL) - { - -#if defined(stderr) && defined(stdout) - if (STREQ (pdbc->tfile, "stderr")) - { - pdbc->tstm = stderr; - } - else if (STREQ (pdbc->tfile, "stdout")) - { - pdbc->tstm = stdout; - } - else -#endif - - { - pdbc->tstm - = fopen (pdbc->tfile, "a+"); - } - - if (pdbc->tstm) - { - pdbc->trace = 1; - } - else - { - pdbc->trace = 0; - - sqlstat = en_IM013; - retcode = SQL_ERROR; - } - } - break; - - case SQL_OPT_TRACE_OFF: - if (pdbc->trace && pdbc->tstm) - { - -#if defined(stderr) && defined(stdout) - if (stderr != (FILE FAR *) (pdbc->tstm) - && stdout != (FILE FAR *) (pdbc->tstm)) -#endif - - { - fclose (pdbc->tstm); - } - } - pdbc->tstm = NULL; - pdbc->trace = 0; - break; - - default: - PUSHSQLERR (pdbc->herr, en_S1009); - retcode = SQL_ERROR; - } - - if (sqlstat != en_00000) - { - PUSHSQLERR (pdbc->herr, sqlstat); - } - - return retcode; - } - - if (fOption == SQL_OPT_TRACEFILE) - /* Tracing file can be set before and after connect - * and only meaningful for driver manager. - */ - { - if (vParam == 0UL || ((char FAR *) vParam)[0] == 0) - { - PUSHSQLERR (pdbc->herr, en_S1009); - - return SQL_ERROR; - } - - if (pdbc->tfile && STREQ (pdbc->tfile, vParam)) - { - return SQL_SUCCESS; - } - - if (pdbc->trace) - { - PUSHSQLERR (pdbc->herr, en_IM014); - - return SQL_ERROR; - } - - if (pdbc->tfile) - { - MEM_FREE (pdbc->tfile); - } - - pdbc->tfile = (char FAR *) MEM_ALLOC (1 + STRLEN (vParam)); - - if (pdbc->tfile == NULL) - { - PUSHSQLERR (pdbc->herr, en_S1001); - - return SQL_ERROR; - } - - STRCPY (pdbc->tfile, vParam); - - return SQL_SUCCESS; - } - - if (pdbc->state != en_dbc_allocated) - { - /* If already connected, then, driver's odbc call - * will be invoked. Otherwise, we only save the options - * and delay the setting process until the connection - * been established. - */ - hproc = _iodbcdm_getproc (hdbc, en_SetConnectOption); - - if (hproc == SQL_NULL_HPROC) - { - PUSHSQLERR (pdbc->herr, en_IM001); - - return SQL_ERROR; - } - - CALL_DRIVER (hdbc, retcode, hproc, en_SetConnectOption, - (pdbc->dhdbc, fOption, vParam)) - - if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO) - { - return retcode; - } - } - - /* - * Now, either driver's odbc call was successed or - * driver has not been loaded yet. In the first case, we - * need flip flag for(such as access_mode, autocommit, ...) - * for our finit state machine. While in the second case, - * we need save option values(such as current_qualifier, ...) - * for delaied setting. So, ... - */ - - /* No matter what state we are(i.e. allocated or connected, ..) - * we need to flip the flag. - */ - switch (fOption) - { - case SQL_ACCESS_MODE: - pdbc->access_mode = vParam; - break; - - case SQL_AUTOCOMMIT: - pdbc->autocommit = vParam; - break; - } - - /* state transition */ - if (pdbc->state != en_dbc_allocated) - { - return retcode; - } - - /* Only 'allocated' state is possible here, and we need to - * save the options for delaied setting. - */ - switch (fOption) - { - case SQL_CURRENT_QUALIFIER: - if (pdbc->current_qualifier != NULL) - { - MEM_FREE (pdbc->current_qualifier); - } - - if (vParam == 0UL) - { - pdbc->current_qualifier = NULL; - - break; - } - - pdbc->current_qualifier - = (char FAR *) MEM_ALLOC ( - STRLEN (vParam) + 1); - - if (pdbc->current_qualifier == NULL) - { - PUSHSQLERR (pdbc->herr, en_S1001); - return SQL_ERROR; - } - - STRCPY (pdbc->current_qualifier, vParam); - break; - - case SQL_LOGIN_TIMEOUT: - pdbc->login_timeout = vParam; - break; - - case SQL_ODBC_CURSORS: - pdbc->odbc_cursors = vParam; - break; - - case SQL_PACKET_SIZE: - pdbc->packet_size = vParam; - break; - - case SQL_QUIET_MODE: - pdbc->quiet_mode = vParam; - break; - - case SQL_TXN_ISOLATION: - pdbc->txn_isolation = vParam; - break; - - default: - /* Since we didn't save the option value for delaied - * setting, we should raise an error here. - */ - break; - } - - return retcode; -} - - -RETCODE SQL_API -SQLGetConnectOption ( - HDBC hdbc, - UWORD fOption, - PTR pvParam) -{ - GENV_t FAR *genv; - DBC_t FAR *pdbc = (DBC_t FAR *) hdbc; - int sqlstat = en_00000; - HPROC hproc = SQL_NULL_HPROC; - RETCODE retcode; - - if (hdbc == SQL_NULL_HDBC) - { - return SQL_INVALID_HANDLE; - } - - /* check option */ - if (fOption < SQL_CONN_OPT_MIN || - (fOption > SQL_CONN_OPT_MAX && fOption < SQL_CONNECT_OPT_DRVR_START)) - { - PUSHSQLERR (pdbc->herr, en_S1092); - - return SQL_ERROR; - } - - /* check state */ - switch (pdbc->state) - { - case en_dbc_allocated: - if (fOption != SQL_ACCESS_MODE - && fOption != SQL_AUTOCOMMIT - && fOption != SQL_LOGIN_TIMEOUT - && fOption != SQL_OPT_TRACE - && fOption != SQL_OPT_TRACEFILE) - { - sqlstat = en_08003; - } - /* MS ODBC SDK document only - * allows SQL_ACCESS_MODE - * and SQL_AUTOCOMMIT in this - * dbc state. We allow another - * two options, because they - * are only meaningful for driver - * manager. - */ - break; - - case en_dbc_needdata: - sqlstat = en_S1010; - break; - - default: - break; - } - - if (sqlstat != en_00000) - { - PUSHSQLERR (pdbc->herr, sqlstat); - - return SQL_ERROR; - } - - /* Tracing and tracing file options are only - * meaningful for driver manager - */ - if (fOption == SQL_OPT_TRACE) - { - if (pdbc->trace) - *((UDWORD *) pvParam) = (UDWORD) SQL_OPT_TRACE_ON; - else - *((UDWORD *) pvParam) = (UDWORD) SQL_OPT_TRACE_OFF; - - return SQL_SUCCESS; - } - - if (fOption == SQL_OPT_TRACEFILE) - { - STRCPY (pvParam, pdbc->tfile); - - return SQL_ERROR; - } - - if (pdbc->state != en_dbc_allocated) - /* if already connected, we will invoke driver's function */ - { - hproc = _iodbcdm_getproc (hdbc, en_GetConnectOption); - - if (hproc == SQL_NULL_HPROC) - { - PUSHSQLERR (pdbc->herr, en_IM001); - - return SQL_ERROR; - } - - CALL_DRIVER (hdbc, retcode, hproc, en_GetConnectOption, - (pdbc->dhdbc, fOption, pvParam)) - - return retcode; - } - - /* We needn't to handle options which are not allowed - * to be *get* at a allocated dbc state(and two tracing - * options which has been handled and returned). Thus, - * there are only two possible cases. - */ - switch (fOption) - { - case SQL_ACCESS_MODE: - *((UDWORD *) pvParam) = pdbc->access_mode; - break; - - case SQL_AUTOCOMMIT: - *((UDWORD *) pvParam) = pdbc->autocommit; - break; - - case SQL_LOGIN_TIMEOUT: - *((UDWORD *) pvParam) = pdbc->login_timeout; - break; - - default: - break; - } - - return SQL_SUCCESS; -} - - -static RETCODE -_iodbcdm_transact ( - HDBC hdbc, - UWORD fType) -{ - DBC_t FAR *pdbc = (DBC_t FAR *) hdbc; - STMT_t FAR *pstmt; - HPROC hproc; - RETCODE retcode; - - /* check state */ - switch (pdbc->state) - { - case en_dbc_allocated: - case en_dbc_needdata: - PUSHSQLERR (pdbc->herr, en_08003); - return SQL_ERROR; - - case en_dbc_connected: - return SQL_SUCCESS; - - case en_dbc_hstmt: - default: - break; - } - - for (pstmt = (STMT_t FAR *) (pdbc->hstmt); - pstmt != NULL; - pstmt = pstmt->next) - { - if (pstmt->state >= en_stmt_needdata - || pstmt->asyn_on != en_NullProc) - { - PUSHSQLERR (pdbc->herr, en_S1010); - - return SQL_ERROR; - } - } - - hproc = _iodbcdm_getproc (hdbc, en_Transact); - - if (hproc == SQL_NULL_HPROC) - { - PUSHSQLERR (pdbc->herr, en_IM001); - - return SQL_ERROR; - } - - CALL_DRIVER (hdbc, retcode, hproc, en_Transact, - (SQL_NULL_HENV, pdbc->dhdbc, fType)) - - /* state transition */ - if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO) - { - return retcode; - } - - pdbc->state = en_dbc_hstmt; - - for (pstmt = (STMT_t FAR *) (pdbc->hstmt); - pstmt != NULL; - pstmt = pstmt->next) - { - switch (pstmt->state) - { - case en_stmt_prepared: - if (pdbc->cb_commit == SQL_CB_DELETE - || pdbc->cb_rollback == SQL_CB_DELETE) - { - pstmt->state = en_stmt_allocated; - pstmt->prep_state = 0; - break; - } - break; - - case en_stmt_executed: - case en_stmt_cursoropen: - case en_stmt_fetched: - case en_stmt_xfetched: - if (!pstmt->prep_state - && pdbc->cb_commit != SQL_CB_PRESERVE - && pdbc->cb_rollback != SQL_CB_PRESERVE) - { - pstmt->state = en_stmt_allocated; - pstmt->prep_state = 0; - pstmt->cursor_state = en_stmt_cursor_no; - break; - } - - if (pstmt->prep_state) - { - if (pdbc->cb_commit == SQL_CB_DELETE - || pdbc->cb_rollback == SQL_CB_DELETE) - { - pstmt->state = en_stmt_allocated; - pstmt->prep_state = 0; - pstmt->cursor_state = en_stmt_cursor_no; - break; - } - - if (pdbc->cb_commit == SQL_CB_CLOSE - || pdbc->cb_rollback == SQL_CB_CLOSE) - { - pstmt->state - = en_stmt_prepared; - pstmt->cursor_state - = en_stmt_cursor_no; - break; - } - break; - } - break; - - default: - break; - } - } - - return retcode; -} - - -RETCODE SQL_API -SQLTransact ( - HENV henv, - HDBC hdbc, - UWORD fType) -{ - GENV_t FAR *genv = (GENV_t FAR *) henv; - DBC_t FAR *pdbc = (DBC_t FAR *) hdbc; - HERR herr; - RETCODE retcode; - - if (hdbc != SQL_NULL_HDBC) - { - herr = pdbc->herr; - } - else if (henv != SQL_NULL_HENV) - { - herr = genv->herr; - } - else - { - return SQL_INVALID_HANDLE; - } - - /* check argument */ - if (fType != SQL_COMMIT - && fType != SQL_ROLLBACK) - { - PUSHSQLERR (herr, en_S1012); - - return SQL_ERROR; - } - - if (hdbc != SQL_NULL_HDBC) - { - retcode = _iodbcdm_transact (hdbc, fType); - } - else - { - for (pdbc = (DBC_t FAR *) (genv->hdbc); - pdbc != NULL; - pdbc = pdbc->next) - { - retcode |= _iodbcdm_transact (hdbc, fType); - } - } - - if (retcode != SQL_SUCCESS - && retcode != SQL_SUCCESS_WITH_INFO) - { - /* fail on one of the connection */ - return SQL_ERROR; - } - - return retcode; -} diff --git a/src/iodbc/hdbc.h b/src/iodbc/hdbc.h deleted file mode 100644 index 659eadcc05..0000000000 --- a/src/iodbc/hdbc.h +++ /dev/null @@ -1,93 +0,0 @@ -/* - * hdbc.h - * - * $Id$ - * - * Data source connect object management functions - * - * The iODBC driver manager. - * - * Copyright (C) 1995 by Ke Jin - * - * 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, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ -#ifndef _HDBC_H -#define _HDBC_H - -typedef struct DBC - { - int type; /* must be 1st field */ - struct DBC FAR * - next; - - HENV genv; /* back point to global env object */ - - HDBC dhdbc; /* driver's private dbc */ - HENV henv; /* back point to instant env object */ - HSTMT hstmt; /* list of statement object handle(s) */ - HERR herr; - - int state; - - /* options */ - UDWORD access_mode; - UDWORD autocommit; - - UDWORD login_timeout; - UDWORD odbc_cursors; - UDWORD packet_size; - UDWORD quiet_mode; - UDWORD txn_isolation; - SWORD cb_commit; - SWORD cb_rollback; - - char FAR * - current_qualifier; - - int trace; /* trace flag */ - char FAR * - tfile; - void FAR * - tstm; /* trace stream */ - } -DBC_t; - -/* - * Note: - * - ODBC applications can see address of driver manager's - * connection object, i.e connection handle -- a void pointer, - * but not detail of it. ODBC applications can neither see - * detail driver's connection object nor its address. - * - * - ODBC driver manager knows its own connection objects and - * exposes their address to an ODBC application. Driver manager - * also knows address of driver's connection objects and keeps - * it via dhdbc field in driver manager's connection object. - * - * - ODBC driver exposes address of its own connection object to - * driver manager without detail. - * - * - Applications can get driver's connection object handle by - * SQLGetInfo() with fInfoType equals to SQL_DRIVER_HDBC. - */ - -enum - { - en_dbc_allocated, - en_dbc_needdata, - en_dbc_connected, - en_dbc_hstmt - }; -#endif diff --git a/src/iodbc/henv.c b/src/iodbc/henv.c deleted file mode 100644 index f0f8a018b0..0000000000 --- a/src/iodbc/henv.c +++ /dev/null @@ -1,89 +0,0 @@ -/* - * henv.c - * - * $Id$ - * - * Environment object management functions - * - * The iODBC driver manager. - * - * Copyright (C) 1995 by Ke Jin - * - * 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, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include - -#include -#include - -#include - -#include -#include - -#include - -RETCODE SQL_API -SQLAllocEnv (HENV FAR * phenv) -{ - GENV_t FAR *genv; - - genv = (GENV_t *) MEM_ALLOC (sizeof (GENV_t)); - - if (genv == NULL) - { - *phenv = SQL_NULL_HENV; - - return SQL_ERROR; - } - -#if (ODBCVER >= 0x0300 ) - genv->type = SQL_HANDLE_ENV; -#endif - - genv->henv = SQL_NULL_HENV; /* driver's env list */ - genv->hdbc = SQL_NULL_HDBC; /* driver's dbc list */ - genv->herr = SQL_NULL_HERR; /* err list */ - - *phenv = (HENV) genv; - - return SQL_SUCCESS; -} - - -RETCODE SQL_API -SQLFreeEnv (HENV henv) -{ - GENV_t FAR *genv = (GENV_t *) henv; - - if (henv == SQL_NULL_HENV) - { - return SQL_INVALID_HANDLE; - } - - if (genv->hdbc != SQL_NULL_HDBC) - { - PUSHSQLERR (genv->herr, en_S1010); - - return SQL_ERROR; - } - - _iodbcdm_freesqlerrlist (genv->herr); - - MEM_FREE (henv); - - return SQL_SUCCESS; -} diff --git a/src/iodbc/henv.ci b/src/iodbc/henv.ci deleted file mode 100644 index c320b45f8d..0000000000 --- a/src/iodbc/henv.ci +++ /dev/null @@ -1,117 +0,0 @@ -/* - * henv.ci - * - * $Id$ - * - * Function names - * - * The iODBC driver manager. - * - * Copyright (C) 1995 by Ke Jin - * - * 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, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -/* There are some exceptions : - * on FreeBSD 2.x CLI_NAME_PREFIX is defined in Config.mk as "_SQL" - * on HP/UX s300/s400, CLI_NAME_PREFIX is defined in Config.mk as "_SQL" - * on AIX 3.x 4.x, CLI_NAME_PREFIX is defined in Config.mk as ".SQL" - */ -#ifndef CLI_NAME_PREFIX -# define CLI_NAME_PREFIX "SQL" /* using call by value prefix */ -#else -# ifdef NEED_USCORE -# define CLI_NAME_PREFIX "_SQL" -# endif -#endif - -static struct - { - int en_idx; - char *symbol; - } -odbcapi_symtab[] = { - -#if (ODBCVER >= 0x0300) - { en_AllocHandle CLI_NAME_PREFIX "AllocHandle" }, - { en_FreeHandle CLI_NAME_PREFIX "FreeHandle" }, -#endif - { en_AllocEnv, CLI_NAME_PREFIX "AllocEnv" }, - { en_AllocConnect, CLI_NAME_PREFIX "AllocConnect" }, - { en_Connect, CLI_NAME_PREFIX "Connect" }, - { en_DriverConnect, CLI_NAME_PREFIX "DriverConnect" }, - { en_BrowseConnect, CLI_NAME_PREFIX "BrowseConnect" }, - - { en_DataSources, CLI_NAME_PREFIX "DataSources" }, - { en_Drivers, CLI_NAME_PREFIX "Driver" }, - { en_GetInfo, CLI_NAME_PREFIX "GetInfo" }, - { en_GetFunctions, CLI_NAME_PREFIX "GetFunctions" }, - { en_GetTypeInfo, CLI_NAME_PREFIX "GetTypeInfo" }, - - { en_SetConnectOption, CLI_NAME_PREFIX "SetConnectOption" }, - { en_GetConnectOption, CLI_NAME_PREFIX "GetConnectOption" }, - { en_SetStmtOption, CLI_NAME_PREFIX "SetStmtOption" }, - { en_GetStmtOption, CLI_NAME_PREFIX "GetStmtOption" }, - - { en_AllocStmt, CLI_NAME_PREFIX "AllocStmt" }, - { en_Prepare, CLI_NAME_PREFIX "Prepare" }, - { en_BindParameter, CLI_NAME_PREFIX "BindParameter" }, - { en_ParamOptions, CLI_NAME_PREFIX "ParamOptions" }, - { en_GetCursorName, CLI_NAME_PREFIX "GetCursorName" }, - { en_SetCursorName, CLI_NAME_PREFIX "SetCursorName" }, - { en_SetScrollOptions, CLI_NAME_PREFIX "SetScrollOptions" }, - { en_SetParam, CLI_NAME_PREFIX "SetParam" }, - - { en_Execute, CLI_NAME_PREFIX "Execute" }, - { en_ExecDirect, CLI_NAME_PREFIX "ExecDirect" }, - { en_NativeSql, CLI_NAME_PREFIX "NativeSql" }, - { en_DescribeParam, CLI_NAME_PREFIX "DescribeParam" }, - { en_NumParams, CLI_NAME_PREFIX "NumParams" }, - { en_ParamData, CLI_NAME_PREFIX "ParamData" }, - { en_PutData, CLI_NAME_PREFIX "PutData" }, - - { en_RowCount, CLI_NAME_PREFIX "RowCount" }, - { en_NumResultCols, CLI_NAME_PREFIX "NumResultCols" }, - { en_DescribeCol, CLI_NAME_PREFIX "DescribeCol" }, - { en_ColAttributes, CLI_NAME_PREFIX "ColAttributes" }, - { en_BindCol, CLI_NAME_PREFIX "BindCol" }, - { en_Fetch, CLI_NAME_PREFIX "Fetch" }, - { en_ExtendedFetch, CLI_NAME_PREFIX "ExtendedFetch" }, - { en_GetData, CLI_NAME_PREFIX "GetData" }, - { en_SetPos, CLI_NAME_PREFIX "SetPos" }, - { en_MoreResults, CLI_NAME_PREFIX "MoreResults" }, - { en_Error, CLI_NAME_PREFIX "Error" }, - - { en_ColumnPrivileges, CLI_NAME_PREFIX "ColumnPrivileges" }, - { en_Columns, CLI_NAME_PREFIX "Columns" }, - { en_ForeignKeys, CLI_NAME_PREFIX "ForeignKeys" }, - { en_PrimaryKeys, CLI_NAME_PREFIX "PrimaryKeys" }, - { en_ProcedureColumns, CLI_NAME_PREFIX "ProcedureColumns" }, - { en_Procedures, CLI_NAME_PREFIX "Procedures" }, - { en_SpecialColumns, CLI_NAME_PREFIX "SpecialColumns" }, - { en_Statistics, CLI_NAME_PREFIX "Statistics" }, - { en_TablePrivileges, CLI_NAME_PREFIX "TablePrivileges" }, - { en_Tables, CLI_NAME_PREFIX "Tables" }, - - { en_FreeStmt, CLI_NAME_PREFIX "FreeStmt" }, - { en_Cancel, CLI_NAME_PREFIX "Cancel" }, - { en_Transact, CLI_NAME_PREFIX "Transact" }, - - { en_Disconnect, CLI_NAME_PREFIX "Disconnect" }, - { en_FreeConnect, CLI_NAME_PREFIX "FreeConnect" }, - { en_FreeEnv, CLI_NAME_PREFIX "FreeEnv" }, - - { en_NullProc, NULL } -}; diff --git a/src/iodbc/henv.h b/src/iodbc/henv.h deleted file mode 100644 index a52c18d03f..0000000000 --- a/src/iodbc/henv.h +++ /dev/null @@ -1,160 +0,0 @@ -/* - * henv.h - * - * $Id$ - * - * Environment object management functions - * - * The iODBC driver manager. - * - * Copyright (C) 1995 by Ke Jin - * - * 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, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ -#ifndef _HENV_H -#define _HENV_H - -#include -#include - -#include -#include - -#ifndef SYSERR -#define SYSERR -1 -#endif - -enum - { - -#if (ODBCVER >= 0x0300) - en_AllocHandle = SQL_API_SQLALLOCHANDLE, - en_FreeHandle = SQL_API_SQLFREEHANDLE, -#endif - - en_AllocEnv = SQL_API_SQLALLOCENV, - en_AllocConnect = SQL_API_SQLALLOCCONNECT, - en_Connect = SQL_API_SQLCONNECT, - en_DriverConnect = SQL_API_SQLDRIVERCONNECT, - en_BrowseConnect = SQL_API_SQLBROWSECONNECT, - - en_DataSources = SQL_API_SQLDATASOURCES, - en_Drivers = SQL_API_SQLDRIVERS, - en_GetInfo = SQL_API_SQLGETINFO, - en_GetFunctions = SQL_API_SQLGETFUNCTIONS, - en_GetTypeInfo = SQL_API_SQLGETTYPEINFO, - - en_SetConnectOption = SQL_API_SQLSETCONNECTOPTION, - en_GetConnectOption = SQL_API_SQLGETCONNECTOPTION, - en_SetStmtOption = SQL_API_SQLSETSTMTOPTION, - en_GetStmtOption = SQL_API_SQLGETSTMTOPTION, - - en_AllocStmt = SQL_API_SQLALLOCSTMT, - en_Prepare = SQL_API_SQLPREPARE, - en_BindParameter = SQL_API_SQLBINDPARAMETER, - en_ParamOptions = SQL_API_SQLPARAMOPTIONS, - en_GetCursorName = SQL_API_SQLGETCURSORNAME, - en_SetCursorName = SQL_API_SQLSETCURSORNAME, - en_SetScrollOptions = SQL_API_SQLSETSCROLLOPTIONS, - en_SetParam = SQL_API_SQLSETPARAM, - - en_Execute = SQL_API_SQLEXECUTE, - en_ExecDirect = SQL_API_SQLEXECDIRECT, - en_NativeSql = SQL_API_SQLNATIVESQL, - en_DescribeParam = SQL_API_SQLDESCRIBEPARAM, - en_NumParams = SQL_API_SQLNUMPARAMS, - en_ParamData = SQL_API_SQLPARAMDATA, - en_PutData = SQL_API_SQLPUTDATA, - - en_RowCount = SQL_API_SQLROWCOUNT, - en_NumResultCols = SQL_API_SQLNUMRESULTCOLS, - en_DescribeCol = SQL_API_SQLDESCRIBECOL, - en_ColAttributes = SQL_API_SQLCOLATTRIBUTES, - en_BindCol = SQL_API_SQLBINDCOL, - en_Fetch = SQL_API_SQLFETCH, - en_ExtendedFetch = SQL_API_SQLEXTENDEDFETCH, - en_GetData = SQL_API_SQLGETDATA, - en_SetPos = SQL_API_SQLSETPOS, - en_MoreResults = SQL_API_SQLMORERESULTS, - en_Error = SQL_API_SQLERROR, - - en_ColumnPrivileges = SQL_API_SQLCOLUMNPRIVILEGES, - en_Columns = SQL_API_SQLCOLUMNS, - en_ForeignKeys = SQL_API_SQLFOREIGNKEYS, - en_PrimaryKeys = SQL_API_SQLPRIMARYKEYS, - en_ProcedureColumns = SQL_API_SQLPROCEDURECOLUMNS, - en_Procedures = SQL_API_SQLPROCEDURES, - en_SpecialColumns = SQL_API_SQLSPECIALCOLUMNS, - en_Statistics = SQL_API_SQLSTATISTICS, - en_TablePrivileges = SQL_API_SQLTABLEPRIVILEGES, - en_Tables = SQL_API_SQLTABLES, - - en_FreeStmt = SQL_API_SQLFREESTMT, - en_Cancel = SQL_API_SQLCANCEL, - en_Transact = SQL_API_SQLTRANSACT, - - en_Disconnect = SQL_API_SQLDISCONNECT, - en_FreeConnect = SQL_API_SQLFREECONNECT, - en_FreeEnv = SQL_API_SQLFREEENV, - - en_NullProc = SYSERR - }; - -typedef struct - { - int type; /* must be 1st field */ - - HENV henv; /* driver's env list */ - HDBC hdbc; /* driver's dbc list */ - HERR herr; /* err list */ - int state; - } -GENV_t; - -typedef struct - { - HENV next; /* next attached env handle */ - int refcount; /* Driver's bookkeeping reference count */ - HPROC dllproc_tab[SQL_EXT_API_LAST + 1]; /* driver api calls */ - - HENV dhenv; /* driver env handle */ - HDLL hdll; /* drvier share library handle */ - } -ENV_t; - -/* Note: - - * - ODBC applications only know about global environment handle, - * a void pointer points to a GENV_t object. There is only one - * this object per process(however, to make the library reentrant, - * we still keep this object on heap). Applications only know - * address of this object and needn't care about its detail. - * - * - ODBC driver manager knows about instance environment handles, - * void pointers point to ENV_t objects. There are maybe more - * than one this kind of objects per process. However, multiple - * connections to a same data source(i.e. call same share library) - * will share one instance environment object. - * - * - ODBC drvier manager knows about their own environemnt handle, - * a void pointer point to a driver defined object. Every driver - * keeps one of its own environment object and driver manager - * keeps address of it by the 'dhenv' field in the instance - * environment object without care about its detail. - * - * - Applications can get driver's environment object handle by - * SQLGetInfo() with fInfoType equals to SQL_DRIVER_HENV - */ -#endif diff --git a/src/iodbc/herr.c b/src/iodbc/herr.c deleted file mode 100644 index 16d9e63dc5..0000000000 --- a/src/iodbc/herr.c +++ /dev/null @@ -1,378 +0,0 @@ -/* - * herr.c - * - * $Id$ - * - * Error stack management functions - * - * The iODBC driver manager. - * - * Copyright (C) 1995 by Ke Jin - * - * 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, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include - -#include -#include - -#include - -#include -#include -#include -#include - -#include - -#include "herr.ci" - -static HERR -_iodbcdm_popsqlerr (HERR herr) -{ - sqlerr_t *list = (sqlerr_t *) herr; - sqlerr_t *next; - - if (herr == SQL_NULL_HERR) - { - return herr; - } - - next = list->next; - - MEM_FREE (list); - - return next; -} - - -void -_iodbcdm_freesqlerrlist (HERR herrlist) -{ - HERR list; - - for (list = herrlist; list != 0;) - { - list = _iodbcdm_popsqlerr (list); - } -} - - -HERR -_iodbcdm_pushsqlerr ( - HERR herr, - sqlstcode_t code, - char *msg) -{ - sqlerr_t *ebuf; - sqlerr_t *perr = (sqlerr_t *) herr; - int idx = 0; - - if (herr != SQL_NULL_HERR) - { - idx = perr->idx + 1; - } - - if (idx == 64) - /* over wirte the top entry to prevent error stack blow out */ - { - perr->code = code; - perr->msg = msg; - - return herr; - } - - ebuf = (sqlerr_t *) MEM_ALLOC (sizeof (sqlerr_t)); - - if (ebuf == NULL) - { - return NULL; - } - - ebuf->msg = msg; - ebuf->code = code; - ebuf->idx = idx; - ebuf->next = (sqlerr_t *) herr; - - return (HERR) ebuf; -} - - -static char FAR * -_iodbcdm_getsqlstate ( - HERR herr, - void FAR * tab) -{ - sqlerr_t *perr = (sqlerr_t *) herr; - sqlerrmsg_t *ptr; - - if (herr == SQL_NULL_HERR || tab == NULL) - { - return (char FAR *) NULL; - } - - for (ptr = tab; - ptr->code != en_sqlstat_total; - ptr++) - { - if (ptr->code == perr->code) - { - return (char FAR *) (ptr->stat); - } - } - - return (char FAR *) NULL; -} - - -static char FAR * -_iodbcdm_getsqlerrmsg ( - HERR herr, - void FAR * errtab) -{ - sqlerr_t *perr = (sqlerr_t *) herr; - sqlerrmsg_t *ptr; - - if (herr == SQL_NULL_HERR) - { - return NULL; - } - - if (perr->msg == NULL && errtab == NULL) - { - return NULL; - } - - if (perr->msg != NULL) - { - return perr->msg; - } - - for (ptr = (sqlerrmsg_t *) errtab; - ptr->code != en_sqlstat_total; - ptr++) - { - if (ptr->code == perr->code) - { - return (char FAR *) ptr->msg; - } - } - - return (char FAR *) NULL; -} - - -RETCODE SQL_API -SQLError ( - HENV henv, - HDBC hdbc, - HSTMT hstmt, - UCHAR FAR * szSqlstate, - SDWORD FAR * pfNativeError, - UCHAR FAR * szErrorMsg, - SWORD cbErrorMsgMax, - SWORD FAR * pcbErrorMsg) -{ - GENV_t FAR *genv = (GENV_t FAR *) henv; - DBC_t FAR *pdbc = (DBC_t FAR *) hdbc; - STMT_t FAR *pstmt = (STMT_t FAR *) hstmt; - HDBC thdbc; - - HENV dhenv = SQL_NULL_HENV; - HDBC dhdbc = SQL_NULL_HDBC; - HSTMT dhstmt = SQL_NULL_HSTMT; - - HERR herr = SQL_NULL_HERR; - HPROC hproc = SQL_NULL_HPROC; - - char FAR *errmsg = NULL; - char FAR *ststr = NULL; - - int handle = 0; - RETCODE retcode = SQL_SUCCESS; - - if (hstmt != SQL_NULL_HSTMT) /* retrive stmt err */ - { - herr = pstmt->herr; - thdbc = pstmt->hdbc; - - if (thdbc == SQL_NULL_HDBC) - { - return SQL_INVALID_HANDLE; - } - hproc = _iodbcdm_getproc (thdbc, en_Error); - dhstmt = pstmt->dhstmt; - handle = 3; - } - else if (hdbc != SQL_NULL_HDBC) /* retrive dbc err */ - { - herr = pdbc->herr; - thdbc = hdbc; - if (thdbc == SQL_NULL_HDBC) - { - return SQL_INVALID_HANDLE; - } - hproc = _iodbcdm_getproc (thdbc, en_Error); - dhdbc = pdbc->dhdbc; - handle = 2; - - if (herr == SQL_NULL_HERR - && pdbc->henv == SQL_NULL_HENV) - { - return SQL_NO_DATA_FOUND; - } - } - else if (henv != SQL_NULL_HENV) /* retrive env err */ - { - herr = genv->herr; - - /* Drivers shouldn't push error message - * on envoriment handle */ - - if (herr == SQL_NULL_HERR) - { - return SQL_NO_DATA_FOUND; - } - - handle = 1; - } - else - { - return SQL_INVALID_HANDLE; - } - - if (szErrorMsg != NULL) - { - if (cbErrorMsgMax < 0 - || cbErrorMsgMax > SQL_MAX_MESSAGE_LENGTH - 1) - { - return SQL_ERROR; - /* SQLError() doesn't post error for itself */ - } - } - - if (herr == SQL_NULL_HERR) /* no err on drv mng */ - { - /* call driver */ - if (hproc == SQL_NULL_HPROC) - { - PUSHSQLERR (herr, en_IM001); - - return SQL_ERROR; - } - - CALL_DRIVER (thdbc, retcode, hproc, en_Error, - (dhenv, dhdbc, dhstmt, szSqlstate, pfNativeError, szErrorMsg, - cbErrorMsgMax, pcbErrorMsg)) - - return retcode; - } - - if (szSqlstate != NULL) - { - int len; - - /* get sql state string */ - ststr = (char FAR *) _iodbcdm_getsqlstate (herr, - (void FAR *) sqlerrmsg_tab); - - if (ststr == NULL) - { - len = 0; - } - else - { - len = (int) STRLEN (ststr); - } - - STRNCPY (szSqlstate, ststr, len); - szSqlstate[len] = 0; - /* buffer size of szSqlstate is not checked. Applications - * suppose provide enough ( not less than 6 bytes ) buffer - * or NULL for it. - */ - } - - if (pfNativeError != NULL) - { - /* native error code is specific to data source */ - *pfNativeError = (SDWORD) 0L; - } - - if (szErrorMsg == NULL || cbErrorMsgMax == 0) - { - if (pcbErrorMsg != NULL) - { - *pcbErrorMsg = (SWORD) 0; - } - } - else - { - int len; - char msgbuf[256] = {'\0'}; - - /* get sql state message */ - errmsg = _iodbcdm_getsqlerrmsg (herr, (void FAR *) sqlerrmsg_tab); - - if (errmsg == NULL) - { - errmsg = (char FAR *) ""; - } - - sprintf (msgbuf, "%s%s", sqlerrhd, errmsg); - - len = STRLEN (msgbuf); - - if (len < cbErrorMsgMax - 1) - { - retcode = SQL_SUCCESS; - } - else - { - len = cbErrorMsgMax - 1; - retcode = SQL_SUCCESS_WITH_INFO; - /* and not posts error for itself */ - } - - STRNCPY ((char *) szErrorMsg, msgbuf, len); - szErrorMsg[len] = 0; - - if (pcbErrorMsg != NULL) - { - *pcbErrorMsg = (SWORD) len; - } - } - - switch (handle) /* free this err */ - { - case 1: - genv->herr = _iodbcdm_popsqlerr (genv->herr); - break; - - case 2: - pdbc->herr = _iodbcdm_popsqlerr (pdbc->herr); - break; - - case 3: - pstmt->herr = _iodbcdm_popsqlerr (pstmt->herr); - break; - - default: - break; - } - - return retcode; -} diff --git a/src/iodbc/herr.ci b/src/iodbc/herr.ci deleted file mode 100644 index c880c12a0d..0000000000 --- a/src/iodbc/herr.ci +++ /dev/null @@ -1,124 +0,0 @@ -/* - * herr.ci - * - * $Id$ - * - * Error messages - * - * The iODBC driver manager. - * - * Copyright (C) 1995 by Ke Jin - * - * 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, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -static const sqlerrmsg_t sqlerrmsg_tab[] = -{ - { en_00000, "00000", "" }, - { en_01000, "01000", "General warning" }, - { en_01002, "01002", "Disconnect error" }, - { en_01004, "01004", "Data truncated" }, - { en_01006, "01006", "Privilege not revoked" }, - { en_01S00, "01S00", "Invalid connection string attribute" }, - { en_01S01, "01S01", "Error in row" }, - { en_01S02, "01S02", "Optional value changed" }, - { en_01S03, "01S03", "No rows updated or deleted" }, - { en_01S04, "01S04", "More than one row updated or deleted" }, - { en_07001, "07001", "Wrong number of parameters" }, - { en_07006, "07006", "Restricted data type attribute violation" }, - { en_08001, "08001", "Unable to connect to data source" }, - { en_08002, "08002", "Connection in use" }, - { en_08003, "08003", "Connect not open" }, - { en_08004, "08004", "Data source rejected establishment of connection" }, - { en_08007, "08007", "Connection failure during transaction" }, - { en_08S01, "08S01", "Communication link failure" }, - { en_21S01, "21S01", "Insert value list does not match" }, - { en_21S02, "21S02", "Degree of derived table does not match column list" }, - { en_22001, "22001", "String data right truncation" }, - { en_22003, "22003", "Numeric value out of range" }, - { en_22005, "22005", "Error in assignment" }, - { en_22008, "22008", "Datetime field overflow" }, - { en_22012, "22012", "Division by zero" }, - { en_22026, "22026", "String data, length mismatch" }, - { en_23000, "23000", "Integrity constraint violation" }, - { en_24000, "24000", "Invalid cursor state" }, - { en_25000, "25000", "Invalid transaction state" }, - { en_28000, "28000", "Invalid authorization specification" }, - { en_34000, "34000", "Invalid cursor name" }, - { en_37000, "37000", "Syntex error or access violation" }, - { en_3C000, "3C000", "Duplicate cursor name" }, - { en_40001, "40001", "Serialization failure" }, - { en_42000, "42000", "Syntax error or access violation" }, - { en_70100, "70100", "Operation aborted" }, - { en_IM001, "IM001", "Driver does not support this function" }, - { en_IM002, "IM002", "Data source name not found and no default " - "driver specified. Driver could not be loaded" }, - { en_IM003, "IM003", "Specified driver could not be loaded" }, - { en_IM004, "IM004", "Driver's SQLAllocEnv() failed" }, - { en_IM005, "IM005", "Driver's SQLAllocConnect() failed" }, - { en_IM006, "IM006", "Driver's SQLSetConnectOption failed" }, - { en_IM007, "IM007", "No data source or driver specified, dialog prohibited" }, - { en_IM008, "IM008", "Dialog failed" }, - { en_IM009, "IM009", "Unable to load translation DLL" }, - { en_IM010, "IM010", "Data source name too long" }, - { en_IM011, "IM011", "Driver name too long" }, - { en_IM012, "IM012", "DRIVER keyword syntax error" }, - { en_IM013, "IM013", "Trace file error" }, - { en_IM014, "IM014", "Try to change tracing file while tracing is on" }, - { en_S0001, "S0001", "Base table or view already exists" }, - { en_S0002, "S0002", "Base table not found" }, - { en_S0011, "S0011", "Index already exists" }, - { en_S0012, "S0012", "Index not found" }, - { en_S0021, "S0021", "Column already exists" }, - { en_S0022, "S0022", "Column not found" }, - { en_S0023, "S0023", "No default for column" }, - { en_S1000, "S1000", "General error" }, - { en_S1001, "S1001", "Memory allocation failure" }, - { en_S1002, "S1002", "Invalid column number" }, - { en_S1003, "S1003", "Program type out of range" }, - { en_S1004, "S1004", "SQL data type out of range" }, - { en_S1008, "S1008", "Operation canceled" }, - { en_S1009, "S1009", "Invalid argument value" }, - { en_S1010, "S1010", "Function sequence error" }, - { en_S1011, "S1011", "Operation invalid at this time" }, - { en_S1012, "S1012", "Invalid transaction operation code specified" }, - { en_S1015, "S1015", "No cursor name available" }, - { en_S1090, "S1090", "Invalid string or buffer length" }, - { en_S1091, "S1091", "Descriptor type out of range" }, - { en_S1092, "S1092", "Option type out of range" }, - { en_S1093, "S1093", "Invalid parameter" }, - { en_S1094, "S1094", "Invalid scale value" }, - { en_S1095, "S1095", "Function type out of range" }, - { en_S1096, "S1096", "Information type out of range" }, - { en_S1097, "S1097", "Column type out of range" }, - { en_S1098, "S1098", "Scope type out of range" }, - { en_S1099, "S1099", "Nullable type out of range" }, - { en_S1100, "S1100", "Uniquenss option type out of range" }, - { en_S1101, "S1101", "Accuracy option type out of range" }, - { en_S1103, "S1103", "Direction option out of range" }, - { en_S1104, "S1104", "Invalid precision value" }, - { en_S1105, "S1105", "Invalid parameter type" }, - { en_S1106, "S1106", "Fetch type out of range" }, - { en_S1107, "S1107", "Row value out of range" }, - { en_S1108, "S1108", "Concurrency option out of range" }, - { en_S1109, "S1109", "Invalid cursor position" }, - { en_S1110, "S1110", "Invalid driver completion" }, - { en_S1111, "S1111", "Invalid bookmark value" }, - { en_S1C00, "S1C00", "Driver not capable" }, - { en_S1T00, "S1T00", "Timeout expired" }, - { en_sqlstat_total, NULL, NULL } -}; - -static char FAR* sqlerrhd = "[iODBC][Driver Manager]"; diff --git a/src/iodbc/herr.h b/src/iodbc/herr.h deleted file mode 100644 index 8355c012ad..0000000000 --- a/src/iodbc/herr.h +++ /dev/null @@ -1,153 +0,0 @@ -/* - * herr.h - * - * $Id$ - * - * Error stack management functions - * - * The iODBC driver manager. - * - * Copyright (C) 1995 by Ke Jin - * - * 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, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ -#ifndef _HERR_H -#define _HERR_H - -typedef enum - { - en_00000 = 0, - en_01000, - en_01002, - en_01004, - en_01006, - en_01S00, - en_01S01, - en_01S02, - en_01S03, - en_01S04, - en_07001, - en_07006, - en_08001, - en_08002, - en_08003, - en_08004, - en_08007, - en_08S01, - en_21S01, - en_21S02, - en_22001, - en_22003, - en_22005, - en_22008, - en_22012, - en_22026, - en_23000, - en_24000, - en_25000, - en_28000, - en_34000, - en_37000, - en_3C000, - en_40001, - en_42000, - en_70100, - en_IM001, - en_IM002, - en_IM003, - en_IM004, - en_IM005, - en_IM006, - en_IM007, - en_IM008, - en_IM009, - en_IM010, - en_IM011, - en_IM012, - en_IM013, - en_IM014, - en_S0001, - en_S0002, - en_S0011, - en_S0012, - en_S0021, - en_S0022, - en_S0023, - en_S1000, - en_S1001, - en_S1002, - en_S1003, - en_S1004, - en_S1008, - en_S1009, - en_S1010, - en_S1011, - en_S1012, - en_S1015, - en_S1090, - en_S1091, - en_S1092, - en_S1093, - en_S1094, - en_S1095, - en_S1096, - en_S1097, - en_S1098, - en_S1099, - en_S1100, - en_S1101, - en_S1103, - en_S1104, - en_S1105, - en_S1106, - en_S1107, - en_S1108, - en_S1109, - en_S1110, - en_S1111, - en_S1C00, - en_S1T00, - en_sqlstat_total - } -sqlstcode_t; - -typedef void FAR *HERR; -#define SQL_NULL_HERR ((HERR)NULL) - -typedef struct - { - sqlstcode_t code; - char FAR *stat; - char FAR *msg; - } -sqlerrmsg_t; - -typedef struct sqlerr - { - sqlstcode_t code; - int idx; - char FAR *msg; - struct sqlerr *next; - } -sqlerr_t; - -extern void _iodbcdm_freesqlerrlist (HERR herr); -extern HERR _iodbcdm_pushsqlerr (HERR list, sqlstcode_t code, char *sysmsg); - -#define PUSHSYSERR(list, msg) \ - list = (HERR)_iodbcdm_pushsqlerr( (HERR)(list), 0, (char*)msg ) -#define PUSHSQLERR(list, code) \ - list = (HERR)_iodbcdm_pushsqlerr( (HERR)(list), (int)(code), NULL ) -#endif /* _SQLERR_H */ diff --git a/src/iodbc/hstmt.c b/src/iodbc/hstmt.c deleted file mode 100644 index 8a90a3d8d3..0000000000 --- a/src/iodbc/hstmt.c +++ /dev/null @@ -1,600 +0,0 @@ -/* - * hstmt.c - * - * $Id$ - * - * Query statement object management functions - * - * The iODBC driver manager. - * - * Copyright (C) 1995 by Ke Jin - * - * 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, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include - -#include -#include - -#include - -#include -#include -#include -#include - -#include - -RETCODE SQL_API -SQLAllocStmt ( - HDBC hdbc, - HSTMT FAR * phstmt) -{ - DBC_t FAR *pdbc = (DBC_t FAR *) hdbc; - STMT_t FAR *pstmt = NULL; - HPROC hproc = SQL_NULL_HPROC; - RETCODE retcode = SQL_SUCCESS; - -#if (ODBCVER >= 0x0300) - if (hdbc == SQL_NULL_HDBC || pdbc->type != SQL_HANDLE_DBC) -#else - if (hdbc == SQL_NULL_HDBC) -#endif - { - return SQL_INVALID_HANDLE; - } - - if (phstmt == NULL) - { - PUSHSQLERR (pdbc->herr, en_S1009); - - return SQL_ERROR; - } - - /* check state */ - switch (pdbc->state) - { - case en_dbc_connected: - case en_dbc_hstmt: - break; - - case en_dbc_allocated: - case en_dbc_needdata: - PUSHSQLERR (pdbc->herr, en_08003); - *phstmt = SQL_NULL_HSTMT; - return SQL_ERROR; - - default: - return SQL_INVALID_HANDLE; - } - - pstmt = (STMT_t FAR *) MEM_ALLOC (sizeof (STMT_t)); - - if (pstmt == NULL) - { - PUSHSQLERR (pdbc->herr, en_S1001); - *phstmt = SQL_NULL_HSTMT; - - return SQL_ERROR; - } - -#if (ODBCVER >= 0x0300) - pstmt->type = SQL_HANDLE_STMT; -#endif - - /* initiate the object */ - pstmt->herr = SQL_NULL_HERR; - pstmt->hdbc = hdbc; - pstmt->state = en_stmt_allocated; - pstmt->cursor_state = en_stmt_cursor_no; - pstmt->prep_state = 0; - pstmt->asyn_on = en_NullProc; - pstmt->need_on = en_NullProc; - - /* call driver's function */ - -#if (ODBCVER >= 0x0300) - hproc = _iodbcdm_getproc (hdbc, en_AllocHandle); - - if (hproc) - { - CALL_DRIVER (pstmt->hdbc, hdbc, retcode, hproc, en_AllocHandle, - (SQL_HANDLE_STMT, pdbc->dhdbc, &(pstmt->dhstmt))) - } - else -#endif - - { - hproc = _iodbcdm_getproc (hdbc, en_AllocStmt); - - if (hproc == SQL_NULL_HPROC) - { - PUSHSQLERR (pstmt->herr, en_IM001); - *phstmt = SQL_NULL_HSTMT; - MEM_FREE (pstmt); - - return SQL_ERROR; - } - - CALL_DRIVER (hdbc, retcode, hproc, en_AllocStmt, - (pdbc->dhdbc, &(pstmt->dhstmt))) - } - - if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO) - { - *phstmt = SQL_NULL_HSTMT; - MEM_FREE (pstmt); - - return retcode; - } - - /* insert into list */ - pstmt->next = pdbc->hstmt; - pdbc->hstmt = pstmt; - - *phstmt = (HSTMT) pstmt; - - /* state transition */ - pdbc->state = en_dbc_hstmt; - - return SQL_SUCCESS; -} - - -RETCODE -_iodbcdm_dropstmt (HSTMT hstmt) -{ - STMT_t FAR *pstmt = (STMT_t FAR *) hstmt; - STMT_t FAR *tpstmt; - DBC_t FAR *pdbc; - - if (hstmt == SQL_NULL_HSTMT) - { - return SQL_INVALID_HANDLE; - } - - pdbc = (DBC_t FAR *) (pstmt->hdbc); - - for (tpstmt = (STMT_t FAR *) pdbc->hstmt; - tpstmt != NULL; - tpstmt = tpstmt->next) - { - if (tpstmt == pstmt) - { - pdbc->hstmt = (HSTMT) pstmt->next; - break; - } - - if (tpstmt->next == pstmt) - { - tpstmt->next = pstmt->next; - break; - } - } - - if (tpstmt == NULL) - { - return SQL_INVALID_HANDLE; - } - - _iodbcdm_freesqlerrlist (pstmt->herr); - MEM_FREE (hstmt); - - return SQL_SUCCESS; -} - - -RETCODE SQL_API -SQLFreeStmt ( - HSTMT hstmt, - UWORD fOption) -{ - STMT_t FAR *pstmt = (STMT_t FAR *) hstmt; - STMT_t FAR *tpstmt; - DBC_t FAR *pdbc; - - HPROC hproc = SQL_NULL_HPROC; - RETCODE retcode; - - if (hstmt == SQL_NULL_HSTMT || pstmt->hdbc == SQL_NULL_HDBC) - { - return SQL_INVALID_HANDLE; - } - - pdbc = (DBC_t FAR *) (pstmt->hdbc); - - /* check option */ - switch (fOption) - { - case SQL_DROP: - case SQL_CLOSE: - case SQL_UNBIND: - case SQL_RESET_PARAMS: - break; - - default: - PUSHSQLERR (pstmt->herr, en_S1092); - return SQL_ERROR; - } - - /* check state */ - if (pstmt->state >= en_stmt_needdata || pstmt->asyn_on != en_NullProc) - { - PUSHSQLERR (pstmt->herr, en_S1010); - - return SQL_ERROR; - } - - hproc = SQL_NULL_HPROC; - -#if (ODBCVER >= 0x0300) - if (fOption == SQL_DROP) - { - hproc = _iodbcdm_getproc (pstmt->hdbc, en_FreeHandle); - - if (hproc) - { - CALL_DRIVER (pstmt->hdbc, retcode, hproc, en_FreeHandle, - (SQL_HANDLE_STMT, pstmt->dhstmt)) - } - } -#endif - - if (hproc == SQL_NULL_HPROC) - { - hproc = _iodbcdm_getproc (pstmt->hdbc, en_FreeStmt); - - if (hproc == SQL_NULL_HPROC) - { - PUSHSQLERR (pstmt->herr, en_IM001); - - return SQL_ERROR; - } - - CALL_DRIVER (pstmt->hdbc, retcode, hproc, en_FreeStmt, - (pstmt->dhstmt, fOption)) - } - - if (retcode != SQL_SUCCESS - && retcode != SQL_SUCCESS_WITH_INFO) - { - return retcode; - } - - /* state transition */ - switch (fOption) - { - case SQL_DROP: - /* delet this object (ignore return) */ - _iodbcdm_dropstmt (hstmt); - break; - - case SQL_CLOSE: - pstmt->cursor_state = en_stmt_cursor_no; - /* This means cursor name set by - * SQLSetCursorName() call will also - * be erased. - */ - - switch (pstmt->state) - { - case en_stmt_allocated: - case en_stmt_prepared: - break; - - case en_stmt_executed: - case en_stmt_cursoropen: - case en_stmt_fetched: - case en_stmt_xfetched: - if (pstmt->prep_state) - { - pstmt->state = - en_stmt_prepared; - } - else - { - pstmt->state = - en_stmt_allocated; - } - break; - - default: - break; - } - break; - - case SQL_UNBIND: - case SQL_RESET_PARAMS: - default: - break; - } - - return retcode; -} - - -RETCODE SQL_API -SQLSetStmtOption ( - HSTMT hstmt, - UWORD fOption, - UDWORD vParam) -{ - STMT_t FAR *pstmt = (STMT_t FAR *) hstmt; - HPROC hproc; - int sqlstat = en_00000; - RETCODE retcode; - - if (hstmt == SQL_NULL_HSTMT || pstmt->hdbc == SQL_NULL_HDBC) - { - return SQL_INVALID_HANDLE; - } - - /* check option */ - if ( /* fOption < SQL_STMT_OPT_MIN || */ - fOption > SQL_STMT_OPT_MAX) - { - PUSHSQLERR (pstmt->herr, en_S1092); - - return SQL_ERROR; - } - - if (fOption == SQL_CONCURRENCY - || fOption == SQL_CURSOR_TYPE - || fOption == SQL_SIMULATE_CURSOR - || fOption == SQL_USE_BOOKMARKS) - { - if (pstmt->asyn_on != en_NullProc) - { - if (pstmt->prep_state) - { - sqlstat = en_S1011; - } - } - else - { - switch (pstmt->state) - { - case en_stmt_prepared: - sqlstat = en_S1011; - break; - - case en_stmt_executed: - case en_stmt_cursoropen: - case en_stmt_fetched: - case en_stmt_xfetched: - sqlstat = en_24000; - break; - - case en_stmt_needdata: - case en_stmt_mustput: - case en_stmt_canput: - if (pstmt->prep_state) - { - sqlstat = en_S1011; - } - break; - - default: - break; - } - } - } - else - { - if (pstmt->asyn_on != en_NullProc) - { - if (!pstmt->prep_state) - { - sqlstat = en_S1010; - } - } - else - { - if (pstmt->state >= en_stmt_needdata) - { - sqlstat = en_S1010; - } - } - } - - if (sqlstat != en_00000) - { - PUSHSQLERR (pstmt->herr, sqlstat); - - return SQL_ERROR; - } - - hproc = _iodbcdm_getproc (pstmt->hdbc, en_SetStmtOption); - - if (hproc == SQL_NULL_HPROC) - { - PUSHSQLERR (pstmt->herr, en_IM001); - - return SQL_ERROR; - } - - CALL_DRIVER (pstmt->hdbc, retcode, hproc, en_SetStmtOption, - (pstmt->dhstmt, fOption, vParam)) - - return retcode; -} - - -RETCODE SQL_API -SQLGetStmtOption ( - HSTMT hstmt, - UWORD fOption, - PTR pvParam) -{ - STMT_t FAR *pstmt = (STMT_t *) hstmt; - HPROC hproc; - int sqlstat = en_00000; - RETCODE retcode; - - if (hstmt == SQL_NULL_HSTMT || pstmt->hdbc == SQL_NULL_HDBC) - { - return SQL_INVALID_HANDLE; - } - - /* check option */ - if ( /* fOption < SQL_STMT_OPT_MIN || */ - fOption > SQL_STMT_OPT_MAX) - { - PUSHSQLERR (pstmt->herr, en_S1092); - - return SQL_ERROR; - } - - /* check state */ - if (pstmt->state >= en_stmt_needdata - || pstmt->asyn_on != en_NullProc) - { - sqlstat = en_S1010; - } - else - { - switch (pstmt->state) - { - case en_stmt_allocated: - case en_stmt_prepared: - case en_stmt_executed: - case en_stmt_cursoropen: - if (fOption == SQL_ROW_NUMBER || fOption == SQL_GET_BOOKMARK) - { - sqlstat = en_24000; - } - break; - - default: - break; - } - } - - if (sqlstat != en_00000) - { - PUSHSQLERR (pstmt->herr, sqlstat); - - return SQL_ERROR; - } - - hproc = _iodbcdm_getproc (pstmt->hdbc, en_GetStmtOption); - - if (hproc == SQL_NULL_HPROC) - { - PUSHSQLERR (pstmt->herr, en_IM001); - return SQL_ERROR; - } - - CALL_DRIVER (pstmt->hdbc, retcode, hproc, en_GetStmtOption, - (pstmt->dhstmt, fOption, pvParam)) - - return retcode; -} - - -RETCODE SQL_API -SQLCancel (HSTMT hstmt) -{ - STMT_t FAR *pstmt = (STMT_t FAR *) hstmt; - HPROC hproc; - RETCODE retcode; - - if (hstmt == SQL_NULL_HSTMT || pstmt->hdbc == SQL_NULL_HDBC) - { - return SQL_INVALID_HANDLE; - } - - /* check argument */ - /* check state */ - - /* call driver */ - hproc = _iodbcdm_getproc (pstmt->hdbc, en_Cancel); - - if (hproc == SQL_NULL_HPROC) - { - PUSHSQLERR (pstmt->herr, en_IM001); - - return SQL_ERROR; - } - - CALL_DRIVER (pstmt->hdbc, retcode, hproc, en_Cancel, - (pstmt->dhstmt)) - - /* state transition */ - if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO) - { - return retcode; - } - - switch (pstmt->state) - { - case en_stmt_allocated: - case en_stmt_prepared: - break; - - case en_stmt_executed: - if (pstmt->prep_state) - { - pstmt->state = en_stmt_prepared; - } - else - { - pstmt->state = en_stmt_allocated; - } - break; - - case en_stmt_cursoropen: - case en_stmt_fetched: - case en_stmt_xfetched: - if (pstmt->prep_state) - { - pstmt->state = en_stmt_prepared; - } - else - { - pstmt->state = en_stmt_allocated; - } - break; - - case en_stmt_needdata: - case en_stmt_mustput: - case en_stmt_canput: - switch (pstmt->need_on) - { - case en_ExecDirect: - pstmt->state = en_stmt_allocated; - break; - - case en_Execute: - pstmt->state = en_stmt_prepared; - break; - - case en_SetPos: - pstmt->state = en_stmt_xfetched; - break; - - default: - break; - } - pstmt->need_on = en_NullProc; - break; - - default: - break; - } - - return retcode; -} diff --git a/src/iodbc/hstmt.h b/src/iodbc/hstmt.h deleted file mode 100644 index b70b54d047..0000000000 --- a/src/iodbc/hstmt.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - * hstmt.h - * - * $Id$ - * - * Query statement object management functions - * - * The iODBC driver manager. - * - * Copyright (C) 1995 by Ke Jin - * - * 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, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ -#ifndef _HSTMT_H -#define _HSTMT_H - -#include - -#include -#include - -typedef struct STMT - { - int type; /* must be 1st field */ - - struct STMT *next; - - HERR herr; - HDBC hdbc; /* back point to connection object */ - HSTMT dhstmt; /* driver's stmt handle */ - - int state; - int cursor_state; - int prep_state; - int asyn_on; /* async executing which odbc call */ - int need_on; /* which call return SQL_NEED_DATA */ - } -STMT_t; - -enum - { - en_stmt_allocated = 0, - en_stmt_prepared, - en_stmt_executed, - en_stmt_cursoropen, - en_stmt_fetched, - en_stmt_xfetched, - en_stmt_needdata, /* not call SQLParamData() yet */ - en_stmt_mustput, /* not call SQLPutData() yet */ - en_stmt_canput /* SQLPutData() called */ - }; /* for statement handle state */ - -enum - { - en_stmt_cursor_no = 0, - en_stmt_cursor_named, - en_stmt_cursor_opened, - en_stmt_cursor_fetched, - en_stmt_cursor_xfetched - }; /* for statement cursor state */ - -extern RETCODE _iodbcdm_dropstmt (); -#endif diff --git a/src/iodbc/info.c b/src/iodbc/info.c deleted file mode 100644 index 938d6ab443..0000000000 --- a/src/iodbc/info.c +++ /dev/null @@ -1,517 +0,0 @@ -/* - * info.c - * - * $Id$ - * - * Information functions - * - * The iODBC driver manager. - * - * Copyright (C) 1995 by Ke Jin - * - * 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, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include - -#include -#include - -#include - -#include -#include -#include -#include - -#include - -#include -#include - -#define SECT1 "ODBC Data Sources" -#define SECT2 "Default" -#define MAX_ENTRIES 1024 - -extern char * _iodbcdm_getinifile (char *buf, int size); -extern char * _iodbcdm_getkeyvalbydsn (char *dsn, int dsnlen, char *keywd, char *value, int size); - -static int -stricmp (const char *s1, const char *s2) -{ - int cmp; - - while (*s1) - { - if ((cmp = toupper (*s1) - toupper (*s2)) != 0) - return cmp; - s1++; - s2++; - } - return (*s2) ? -1 : 0; -} - -static int -SectSorter (const void *p1, const void *p2) -{ - char **s1 = (char **) p1; - char **s2 = (char **) p2; - - return stricmp (*s1, *s2); -} - - -RETCODE SQL_API -SQLDataSources ( - HENV henv, - UWORD fDir, - UCHAR FAR * szDSN, - SWORD cbDSNMax, - SWORD FAR * pcbDSN, - UCHAR FAR * szDesc, - SWORD cbDescMax, - SWORD FAR * pcbDesc) -{ - GENV_t FAR *genv = (GENV_t FAR *) henv; - char *path; - char buf[1024]; - FILE *fp; - int i; - static int cur_entry = -1; - static int num_entries = 0; - static char **sect = NULL; - - if (henv == SQL_NULL_HENV) - { - return SQL_INVALID_HANDLE; - } - /* check argument */ - if (cbDSNMax < 0 || cbDescMax < 0) - { - PUSHSQLERR (genv->herr, en_S1090); - - return SQL_ERROR; - } - if (fDir != SQL_FETCH_FIRST - && fDir != SQL_FETCH_NEXT) - { - PUSHSQLERR (genv->herr, en_S1103); - - return SQL_ERROR; - } - if (cur_entry < 0 || fDir == SQL_FETCH_FIRST) - { - cur_entry = 0; - num_entries = 0; - - - /* - * Open the odbc.ini file - */ - path = (char *) _iodbcdm_getinifile (buf, sizeof (buf)); - if ((fp = fopen (path, "r")) == NULL) - { - return SQL_NO_DATA_FOUND; - } - /* - * Free old section list - */ - if (sect) - { - for (i = 0; i < MAX_ENTRIES; i++) - if (sect[i]) - free (sect[i]); - free (sect); - } - if ((sect = (char **) calloc (MAX_ENTRIES, sizeof (char *))) == NULL) - { - PUSHSQLERR (genv->herr, en_S1011); - - return SQL_ERROR; - } - /* - * Build a dynamic list of sections - */ - while (1) - { - char *str, *p; - - str = fgets (buf, sizeof (buf), fp); - - if (str == NULL) - break; - - if (*str == '[') - { - str++; - for (p = str; *p; p++) - if (*p == ']') - *p = '\0'; - - if (!strcmp (str, SECT1)) - continue; - if (!strcmp (str, SECT2)) - continue; - - /* - * Add this section to the comma separated list - */ - if (num_entries >= MAX_ENTRIES) - break; /* Skip the rest */ - - sect[num_entries++] = (char *) strdup (str); - } - } - - /* - * Sort all entries so we can present a nice list - */ - if (num_entries > 1) - qsort (sect, num_entries, sizeof (char *), SectSorter); - } - /* - * Try to get to the next item - */ - if (cur_entry >= num_entries) - { - cur_entry = 0; /* Next time, start all over again */ - return SQL_NO_DATA_FOUND; - } - /* - * Copy DSN information - */ - STRNCPY (szDSN, sect[cur_entry], cbDSNMax); - - /* - * And find the description that goes with this entry - */ - _iodbcdm_getkeyvalbydsn (sect[cur_entry], strlen (sect[cur_entry]), - "Description", szDesc, cbDescMax); - - /* - * Next record - */ - cur_entry++; - - return SQL_SUCCESS; -} - - -RETCODE SQL_API -SQLDrivers ( - HENV henv, - UWORD fDir, - UCHAR FAR * szDrvDesc, - SWORD cbDrvDescMax, - SWORD FAR * pcbDrvDesc, - UCHAR FAR * szDrvAttr, - SWORD cbDrvAttrMax, - SWORD FAR * pcbDrvAttr) -{ - GENV_t FAR *genv = (GENV_t FAR *) henv; - - if (henv == SQL_NULL_HENV) - { - return SQL_INVALID_HANDLE; - } - - if (cbDrvDescMax < 0 || cbDrvAttrMax < 0 || cbDrvAttrMax == 1) - { - PUSHSQLERR (genv->herr, en_S1090); - - return SQL_ERROR; - } - - if (fDir != SQL_FETCH_FIRST || fDir != SQL_FETCH_NEXT) - { - PUSHSQLERR (genv->herr, en_S1103); - - return SQL_ERROR; - } - -/*********************/ - return SQL_NO_DATA_FOUND; -} - - -RETCODE SQL_API -SQLGetInfo ( - HDBC hdbc, - UWORD fInfoType, - PTR rgbInfoValue, - SWORD cbInfoValueMax, - SWORD FAR * pcbInfoValue) -{ - DBC_t FAR *pdbc = (DBC_t FAR *) hdbc; - ENV_t FAR *penv; - STMT_t FAR *pstmt = NULL; - STMT_t FAR *tpstmt; - HPROC hproc; - RETCODE retcode = SQL_SUCCESS; - - DWORD dword; - int size = 0, len = 0; - char buf[16] = {'\0'}; - - if (hdbc == SQL_NULL_HDBC || pdbc->henv == SQL_NULL_HENV) - { - return SQL_INVALID_HANDLE; - } - - if (cbInfoValueMax < 0) - { - PUSHSQLERR (pdbc->herr, en_S1090); - - return SQL_ERROR; - } - - if ( /* fInfoType < SQL_INFO_FIRST || */ - (fInfoType > SQL_INFO_LAST - && fInfoType < SQL_INFO_DRIVER_START)) - { - PUSHSQLERR (pdbc->herr, en_S1096); - - return SQL_ERROR; - } - - if (fInfoType == SQL_ODBC_VER) - { - sprintf (buf, "%02d.%02d", - (ODBCVER) >> 8, 0x00FF & (ODBCVER)); - - - if (rgbInfoValue != NULL - && cbInfoValueMax > 0) - { - len = STRLEN (buf); - - if (len < cbInfoValueMax - 1) - { - len = cbInfoValueMax - 1; - PUSHSQLERR (pdbc->herr, en_01004); - - retcode = SQL_SUCCESS_WITH_INFO; - } - - STRNCPY (rgbInfoValue, buf, len); - ((char FAR *) rgbInfoValue)[len] = '\0'; - } - - if (pcbInfoValue != NULL) - { - *pcbInfoValue = (SWORD) len; - } - - return retcode; - } - - if (pdbc->state == en_dbc_allocated || pdbc->state == en_dbc_needdata) - { - PUSHSQLERR (pdbc->herr, en_08003); - - return SQL_ERROR; - } - - switch (fInfoType) - { - case SQL_DRIVER_HDBC: - dword = (DWORD) (pdbc->dhdbc); - size = sizeof (dword); - break; - - case SQL_DRIVER_HENV: - penv = (ENV_t FAR *) (pdbc->henv); - dword = (DWORD) (penv->dhenv); - size = sizeof (dword); - break; - - case SQL_DRIVER_HLIB: - penv = (ENV_t FAR *) (pdbc->henv); - dword = (DWORD) (penv->hdll); - size = sizeof (dword); - break; - - case SQL_DRIVER_HSTMT: - if (rgbInfoValue != NULL) - { - pstmt = *((STMT_t FAR **) rgbInfoValue); - } - - for (tpstmt = (STMT_t FAR *) (pdbc->hstmt); - tpstmt != NULL; - tpstmt = tpstmt->next) - { - if (tpstmt == pstmt) - { - break; - } - } - - if (tpstmt == NULL) - { - PUSHSQLERR (pdbc->herr, en_S1009); - - return SQL_ERROR; - } - - dword = (DWORD) (pstmt->dhstmt); - size = sizeof (dword); - break; - - default: - break; - } - - if (size) - { - if (rgbInfoValue != NULL) - { - *((DWORD *) rgbInfoValue) = dword; - } - - if (pcbInfoValue != NULL) - { - *(pcbInfoValue) = (SWORD) size; - } - - return SQL_SUCCESS; - } - - hproc = _iodbcdm_getproc (hdbc, en_GetInfo); - - if (hproc == SQL_NULL_HPROC) - { - PUSHSQLERR (pdbc->herr, en_IM001); - - return SQL_ERROR; - } - - CALL_DRIVER (hdbc, retcode, hproc, en_GetInfo, - (pdbc->dhdbc, fInfoType, rgbInfoValue, cbInfoValueMax, pcbInfoValue)) - - if (retcode == SQL_ERROR - && fInfoType == SQL_DRIVER_ODBC_VER) - { - STRCPY (buf, "01.00"); - - if (rgbInfoValue != NULL - && cbInfoValueMax > 0) - { - len = STRLEN (buf); - - if (len < cbInfoValueMax - 1) - { - len = cbInfoValueMax - 1; - PUSHSQLERR (pdbc->herr, en_01004); - } - - STRNCPY (rgbInfoValue, buf, len); - ((char FAR *) rgbInfoValue)[len] = '\0'; - } - - if (pcbInfoValue != NULL) - { - *pcbInfoValue = (SWORD) len; - } - - /* what should we return in this case ???? */ - } - - return retcode; -} - - -RETCODE SQL_API -SQLGetFunctions ( - HDBC hdbc, - UWORD fFunc, - UWORD FAR * pfExists) -{ - DBC_t FAR *pdbc = (DBC_t FAR *) hdbc; - HPROC hproc; - RETCODE retcode; - - if (hdbc == SQL_NULL_HDBC) - { - return SQL_INVALID_HANDLE; - } - - if (fFunc > SQL_EXT_API_LAST) - { - PUSHSQLERR (pdbc->herr, en_S1095); - - return SQL_ERROR; - } - - if (pdbc->state == en_dbc_allocated - || pdbc->state == en_dbc_needdata) - { - PUSHSQLERR (pdbc->herr, en_S1010); - - return SQL_ERROR; - } - - if (pfExists == NULL) - { - return SQL_SUCCESS; - } - - hproc = _iodbcdm_getproc (hdbc, en_GetFunctions); - - if (hproc != SQL_NULL_HPROC) - { - CALL_DRIVER (hdbc, retcode, hproc, en_GetFunctions, - (pdbc->dhdbc, fFunc, pfExists)) - - return retcode; - } - - if (fFunc == SQL_API_SQLSETPARAM) - { - fFunc = SQL_API_SQLBINDPARAMETER; - } - - if (fFunc != SQL_API_ALL_FUNCTIONS) - { - hproc = _iodbcdm_getproc (hdbc, fFunc); - - if (hproc == SQL_NULL_HPROC) - { - *pfExists = (UWORD) 0; - } - else - { - *pfExists = (UWORD) 1; - } - - return SQL_SUCCESS; - } - - for (fFunc = 0; fFunc < 100; fFunc++) - { - hproc = _iodbcdm_getproc (hdbc, fFunc); - - if (hproc == SQL_NULL_HPROC) - { - pfExists[fFunc] = (UWORD) 0; - } - else - { - pfExists[fFunc] = (UWORD) 1; - } - } - - return SQL_SUCCESS; -} diff --git a/src/iodbc/iodbc.h b/src/iodbc/iodbc.h deleted file mode 100644 index e60123d0b2..0000000000 --- a/src/iodbc/iodbc.h +++ /dev/null @@ -1,66 +0,0 @@ -#ifndef _CONFIG_H -#define _CONFIG_H - -# if !defined(WINDOWS) && !defined(WIN32_SYSTEM) -# define _UNIX_ - -# include -# include - -# define MEM_ALLOC(size) (malloc((size_t)(size))) -# define MEM_FREE(ptr) {if(ptr) free(ptr);} - -# define STRCPY(t, s) (strcpy((char*)(t), (char*)(s))) -# define STRNCPY(t,s,n) (strncpy((char*)(t), (char*)(s), (size_t)(n))) -# define STRCAT(t, s) (strcat((char*)(t), (char*)(s))) -# define STRNCAT(t,s,n) (strncat((char*)(t), (char*)(s), (size_t)(n))) -# define STREQ(a, b) (strcmp((char*)(a), (char*)(b)) == 0) -# define STRLEN(str) ((str)? strlen((char*)(str)):0) - -# define EXPORT -# define CALLBACK -# define FAR - - typedef signed short SSHOR; - typedef short WORD; - typedef long DWORD; - - typedef WORD WPARAM; - typedef DWORD LPARAM; - typedef void* HWND; - typedef int BOOL; - -# endif /* _UNIX_ */ - -# if defined(WINDOWS) || defined(WIN32_SYSTEM) - -# include -# include - -# ifdef _MSVC_ -# define MEM_ALLOC(size) (fmalloc((size_t)(size))) -# define MEM_FREE(ptr) ((ptr)? ffree((PTR)(ptr)):0)) -# define STRCPY(t, s) (fstrcpy((char FAR*)(t), (char FAR*)(s))) -# define STRNCPY(t,s,n) (fstrncpy((char FAR*)(t), (char FAR*)(s), (size_t)(n))) -# define STRLEN(str) ((str)? fstrlen((char FAR*)(str)):0) -# define STREQ(a, b) (fstrcmp((char FAR*)(a), (char FAR*)(b) == 0) -# endif - -# ifdef _BORLAND_ -# define MEM_ALLOC(size) (farmalloc((unsigned long)(size)) -# define MEM_FREE(ptr) ((ptr)? farfree((void far*)(ptr)):0) -# define STRCPY(t, s) (_fstrcpy((char FAR*)(t), (char FAR*)(s))) -# define STRNCPY(t,s,n) (_fstrncpy((char FAR*)(t), (char FAR*)(s), (size_t)(n))) -# define STRLEN(str) ((str)? _fstrlen((char FAR*)(str)):0) -# define STREQ(a, b) (_fstrcmp((char FAR*)(a), (char FAR*)(b) == 0) -# endif - -# endif /* WINDOWS */ - -# define SYSERR (-1) - -# ifndef NULL -# define NULL ((void FAR*)0UL) -# endif - -#endif diff --git a/src/iodbc/isql.h b/src/iodbc/isql.h deleted file mode 100644 index 5774241d4c..0000000000 --- a/src/iodbc/isql.h +++ /dev/null @@ -1,228 +0,0 @@ -/* - * isql.h - * - * $Id$ - * - * iODBC defines - * - * The iODBC driver manager. - * - * Copyright (C) 1995 by Ke Jin - * - * 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, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ -#ifndef _ISQL_H -#define _ISQL_H - -#ifdef WIN32 -#define SQL_API __stdcall -#else -#define FAR -#define EXPORT -#define CALLBACK -#define SQL_API EXPORT CALLBACK - -typedef void *HWND; -#endif - -typedef unsigned char UCHAR; -typedef long int SDWORD; -typedef short int SWORD; -typedef unsigned long int UDWORD; -typedef unsigned short int UWORD; - -typedef void FAR *PTR; -typedef void FAR *HENV; -typedef void FAR *HDBC; -typedef void FAR *HSTMT; - -typedef signed short RETCODE; -#define SQLRETURN RETCODE - - -#define ODBCVER 0x0250 - -#define SQL_MAX_MESSAGE_LENGTH 512 -#define SQL_MAX_DSN_LENGTH 32 - -/* - * Function return codes - */ -#define SQL_INVALID_HANDLE (-2) -#define SQL_ERROR (-1) -#define SQL_SUCCESS 0 -#define SQL_SUCCESS_WITH_INFO 1 -#define SQL_NO_DATA_FOUND 100 - -/* - * Standard SQL datatypes, using ANSI type numbering - */ -#define SQL_CHAR 1 -#define SQL_NUMERIC 2 -#define SQL_DECIMAL 3 -#define SQL_INTEGER 4 -#define SQL_SMALLINT 5 -#define SQL_FLOAT 6 -#define SQL_REAL 7 -#define SQL_DOUBLE 8 -#define SQL_VARCHAR 12 - -#define SQL_TYPE_MIN SQL_CHAR -#define SQL_TYPE_NULL 0 -#define SQL_TYPE_MAX SQL_VARCHAR - -/* - * C datatype to SQL datatype mapping - */ -#define SQL_C_CHAR SQL_CHAR -#define SQL_C_LONG SQL_INTEGER -#define SQL_C_SHORT SQL_SMALLINT -#define SQL_C_FLOAT SQL_REAL -#define SQL_C_DOUBLE SQL_DOUBLE -#define SQL_C_DEFAULT 99 - -/* - * NULL status constants. - */ -#define SQL_NO_NULLS 0 -#define SQL_NULLABLE 1 -#define SQL_NULLABLE_UNKNOWN 2 - -/* - * Special length values - */ -#define SQL_NULL_DATA (-1) -#define SQL_DATA_AT_EXEC (-2) -#define SQL_NTS (-3) - -/* - * SQLFreeStmt - */ -#define SQL_CLOSE 0 -#define SQL_DROP 1 -#define SQL_UNBIND 2 -#define SQL_RESET_PARAMS 3 - -/* - * SQLTransact - */ -#define SQL_COMMIT 0 -#define SQL_ROLLBACK 1 - -/* - * SQLColAttributes - */ -#define SQL_COLUMN_COUNT 0 -#define SQL_COLUMN_NAME 1 -#define SQL_COLUMN_TYPE 2 -#define SQL_COLUMN_LENGTH 3 -#define SQL_COLUMN_PRECISION 4 -#define SQL_COLUMN_SCALE 5 -#define SQL_COLUMN_DISPLAY_SIZE 6 -#define SQL_COLUMN_NULLABLE 7 -#define SQL_COLUMN_UNSIGNED 8 -#define SQL_COLUMN_MONEY 9 -#define SQL_COLUMN_UPDATABLE 10 -#define SQL_COLUMN_AUTO_INCREMENT 11 -#define SQL_COLUMN_CASE_SENSITIVE 12 -#define SQL_COLUMN_SEARCHABLE 13 -#define SQL_COLUMN_TYPE_NAME 14 -#define SQL_COLUMN_TABLE_NAME 15 -#define SQL_COLUMN_OWNER_NAME 16 -#define SQL_COLUMN_QUALIFIER_NAME 17 -#define SQL_COLUMN_LABEL 18 - -#define SQL_COLATT_OPT_MAX SQL_COLUMN_LABEL -#define SQL_COLATT_OPT_MIN SQL_COLUMN_COUNT -#define SQL_COLUMN_DRIVER_START 1000 - -/* - * SQLColAttributes : SQL_COLUMN_UPDATABLE - */ -#define SQL_ATTR_READONLY 0 -#define SQL_ATTR_WRITE 1 -#define SQL_ATTR_READWRITE_UNKNOWN 2 - -/* - * SQLColAttributes : SQL_COLUMN_SEARCHABLE - */ -#define SQL_UNSEARCHABLE 0 -#define SQL_LIKE_ONLY 1 -#define SQL_ALL_EXCEPT_LIKE 2 -#define SQL_SEARCHABLE 3 - -/* - * NULL Handles - */ -#define SQL_NULL_HENV 0 -#define SQL_NULL_HDBC 0 -#define SQL_NULL_HSTMT 0 - - -/* - * Function Prototypes - */ -#ifdef __cplusplus -extern "C" -{ -#endif - - RETCODE SQL_API SQLAllocConnect (HENV henv, HDBC FAR * phdbc); - RETCODE SQL_API SQLAllocEnv (HENV FAR * phenv); - RETCODE SQL_API SQLAllocStmt (HDBC hdbc, HSTMT FAR * phstmt); - RETCODE SQL_API SQLBindCol (HSTMT hstmt, UWORD icol, SWORD fCType, - PTR rgbValue, SDWORD cbValueMax, SDWORD FAR * pcbValue); - RETCODE SQL_API SQLCancel (HSTMT hstmt); - RETCODE SQL_API SQLColAttributes (HSTMT hstmt, UWORD icol, UWORD fDescType, - PTR rgbDesc, SWORD cbDescMax, SWORD FAR * pcbDesc, SDWORD FAR * pfDesc); - RETCODE SQL_API SQLConnect (HDBC hdbc, UCHAR FAR * szDSN, SWORD cbDSN, - UCHAR FAR * szUID, SWORD cbUID, UCHAR FAR * szAuthStr, SWORD cbAuthStr); - RETCODE SQL_API SQLDescribeCol (HSTMT hstmt, UWORD icol, - UCHAR FAR * szColName, SWORD cbColNameMax, SWORD FAR * pcbColName, - SWORD FAR * pfSqlType, UDWORD FAR * pcbColDef, SWORD FAR * pibScale, - SWORD FAR * pfNullable); - RETCODE SQL_API SQLDisconnect (HDBC hdbc); - RETCODE SQL_API SQLError (HENV henv, HDBC hdbc, HSTMT hstmt, - UCHAR FAR * szSqlState, SDWORD FAR * pfNativeError, UCHAR FAR * szErrorMsg, - SWORD cbErrorMsgMax, SWORD FAR * pcbErrorMsg); - RETCODE SQL_API SQLExecDirect (HSTMT hstmt, UCHAR FAR * szSqlStr, - SDWORD cbSqlStr); - RETCODE SQL_API SQLExecute (HSTMT hstmt); - RETCODE SQL_API SQLFetch (HSTMT hstmt); - RETCODE SQL_API SQLFreeConnect (HDBC hdbc); - RETCODE SQL_API SQLFreeEnv (HENV henv); - RETCODE SQL_API SQLFreeStmt (HSTMT hstmt, UWORD fOption); - RETCODE SQL_API SQLGetCursorName (HSTMT hstmt, UCHAR FAR * szCursor, - SWORD cbCursorMax, SWORD FAR * pcbCursor); - RETCODE SQL_API SQLNumResultCols (HSTMT hstmt, SWORD FAR * pccol); - RETCODE SQL_API SQLPrepare (HSTMT hstmt, UCHAR FAR * szSqlStr, - SDWORD cbSqlStr); - RETCODE SQL_API SQLRowCount (HSTMT hstmt, SDWORD FAR * pcrow); - RETCODE SQL_API SQLSetCursorName (HSTMT hstmt, UCHAR FAR * szCursor, - SWORD cbCursor); - RETCODE SQL_API SQLTransact (HENV henv, HDBC hdbc, UWORD fType); - -/* - * Depreciated ODBC 1.0 function - Use SQLBindParameter - */ - RETCODE SQL_API SQLSetParam (HSTMT hstmt, UWORD ipar, SWORD fCType, - SWORD fSqlType, UDWORD cbColDef, SWORD ibScale, PTR rgbValue, - SDWORD FAR * pcbValue); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/src/iodbc/isqlext.h b/src/iodbc/isqlext.h deleted file mode 100644 index a082988534..0000000000 --- a/src/iodbc/isqlext.h +++ /dev/null @@ -1,1177 +0,0 @@ -/* - * - * isqlext.h - * - * $Id$ - * - * iODBC defines (ext) - * - * The iODBC driver manager. - * - * Copyright (C) 1995 by Ke Jin - * - * 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, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ -#ifndef _ISQLEXT_H -# define _ISQLEXT_H - -#include - -/* - * Generic constants - */ -#define SQL_MAX_OPTION_STRING_LENGTH 256 - -/* - * Additional return codes - */ -#define SQL_STILL_EXECUTING 2 -#define SQL_NEED_DATA 99 - -/* - * SQL extended datatypes - */ -#define SQL_DATE 9 -#define SQL_TIME 10 -#define SQL_TIMESTAMP 11 -#define SQL_LONGVARCHAR (-1) -#define SQL_BINARY (-2) -#define SQL_VARBINARY (-3) -#define SQL_LONGVARBINARY (-4) -#define SQL_BIGINT (-5) -#define SQL_TINYINT (-6) -#define SQL_BIT (-7) - -#define SQL_INTERVAL_YEAR (-80) -#define SQL_INTERVAL_MONTH (-81) -#define SQL_INTERVAL_YEAR_TO_MONTH (-82) -#define SQL_INTERVAL_DAY (-83) -#define SQL_INTERVAL_HOUR (-84) -#define SQL_INTERVAL_MINUTE (-85) -#define SQL_INTERVAL_SECOND (-86) -#define SQL_INTERVAL_DAY_TO_HOUR (-87) -#define SQL_INTERVAL_DAY_TO_MINUTE (-88) -#define SQL_INTERVAL_DAY_TO_SECOND (-89) -#define SQL_INTERVAL_HOUR_TO_MINUTE (-90) -#define SQL_INTERVAL_HOUR_TO_SECOND (-91) -#define SQL_INTERVAL_MINUTE_TO_SECOND (-92) -#define SQL_UNICODE (-95) - -#define SQL_TYPE_DRIVER_START SQL_INTERVAL_YEAR -#define SQL_TYPE_DRIVER_END SQL_UNICODE - -#define SQL_SIGNED_OFFSET (-20) -#define SQL_UNSIGNED_OFFSET (-22) - -/* - * C datatype to SQL datatype mapping - */ -#define SQL_C_DATE SQL_DATE -#define SQL_C_TIME SQL_TIME -#define SQL_C_TIMESTAMP SQL_TIMESTAMP -#define SQL_C_BINARY SQL_BINARY -#define SQL_C_BIT SQL_BIT -#define SQL_C_TINYINT SQL_TINYINT -#define SQL_C_SLONG SQL_C_LONG+SQL_SIGNED_OFFSET -#define SQL_C_SSHORT SQL_C_SHORT+SQL_SIGNED_OFFSET -#define SQL_C_STINYINT SQL_TINYINT+SQL_SIGNED_OFFSET -#define SQL_C_ULONG SQL_C_LONG+SQL_UNSIGNED_OFFSET -#define SQL_C_USHORT SQL_C_SHORT+SQL_UNSIGNED_OFFSET -#define SQL_C_UTINYINT SQL_TINYINT+SQL_UNSIGNED_OFFSET -#define SQL_C_BOOKMARK SQL_C_ULONG - -/* - * Extended data types override sql.h defined - */ -#undef SQL_TYPE_MIN -#define SQL_TYPE_MIN SQL_BIT -#define SQL_ALL_TYPES 0 - -/* - * SQL portable types for C - DATE, TIME, TIMESTAMP - */ -typedef struct _DATE_STRUCT - { - SWORD year; - UWORD month; - UWORD day; - } -DATE_STRUCT; - -typedef struct _TIME_STRUCT - { - UWORD hour; - UWORD minute; - UWORD second; - } -TIME_STRUCT; - -typedef struct _TIMESTAMP_STRUCT - { - SWORD year; - UWORD month; - UWORD day; - UWORD hour; - UWORD minute; - UWORD second; - UDWORD fraction; - } -TIMESTAMP_STRUCT; - -typedef unsigned long int BOOKMARK; - -/* - * ---------------------------------------------------------------------- - * Level 1 Functions - * ---------------------------------------------------------------------- - */ - -/* - * SQLDriverConnect - */ -#define SQL_DRIVER_NOPROMPT 0 -#define SQL_DRIVER_COMPLETE 1 -#define SQL_DRIVER_PROMPT 2 -#define SQL_DRIVER_COMPLETE_REQUIRED 3 - -/* - * SQLGetData - */ -#define SQL_NO_TOTAL (-4) - -/* - * SQLBindParameter - */ -#define SQL_DEFAULT_PARAM (-5) -#define SQL_IGNORE (-6) -#define SQL_LEN_DATA_AT_EXEC_OFFSET (-100) -#define SQL_LEN_DATA_AT_EXEC(length) (-length+SQL_LEN_DATA_AT_EXEC_OFFSET) - -/* - * SQLGetFunctions - */ -#define SQL_API_SQLALLOCCONNECT 1 /* Core Functions */ -#define SQL_API_SQLALLOCENV 2 -#define SQL_API_SQLALLOCSTMT 3 -#define SQL_API_SQLBINDCOL 4 -#define SQL_API_SQLCANCEL 5 -#define SQL_API_SQLCOLATTRIBUTES 6 -#define SQL_API_SQLCONNECT 7 -#define SQL_API_SQLDESCRIBECOL 8 -#define SQL_API_SQLDISCONNECT 9 -#define SQL_API_SQLERROR 10 -#define SQL_API_SQLEXECDIRECT 11 -#define SQL_API_SQLEXECUTE 12 -#define SQL_API_SQLFETCH 13 -#define SQL_API_SQLFREECONNECT 14 -#define SQL_API_SQLFREEENV 15 -#define SQL_API_SQLFREESTMT 16 -#define SQL_API_SQLGETCURSORNAME 17 -#define SQL_API_SQLNUMRESULTCOLS 18 -#define SQL_API_SQLPREPARE 19 -#define SQL_API_SQLROWCOUNT 20 -#define SQL_API_SQLSETCURSORNAME 21 -#define SQL_API_SQLSETPARAM 22 -#define SQL_API_SQLTRANSACT 23 - -#define SQL_NUM_FUNCTIONS 23 - -#define SQL_EXT_API_START 40 - -#define SQL_API_SQLCOLUMNS 40 /* Level 1 Functions */ -#define SQL_API_SQLDRIVERCONNECT 41 -#define SQL_API_SQLGETCONNECTOPTION 42 -#define SQL_API_SQLGETDATA 43 -#define SQL_API_SQLGETFUNCTIONS 44 -#define SQL_API_SQLGETINFO 45 -#define SQL_API_SQLGETSTMTOPTION 46 -#define SQL_API_SQLGETTYPEINFO 47 -#define SQL_API_SQLPARAMDATA 48 -#define SQL_API_SQLPUTDATA 49 -#define SQL_API_SQLSETCONNECTOPTION 50 -#define SQL_API_SQLSETSTMTOPTION 51 -#define SQL_API_SQLSPECIALCOLUMNS 52 -#define SQL_API_SQLSTATISTICS 53 -#define SQL_API_SQLTABLES 54 - -#define SQL_API_SQLBROWSECONNECT 55 /* Level 2 Functions */ -#define SQL_API_SQLCOLUMNPRIVILEGES 56 -#define SQL_API_SQLDATASOURCES 57 -#define SQL_API_SQLDESCRIBEPARAM 58 -#define SQL_API_SQLEXTENDEDFETCH 59 -#define SQL_API_SQLFOREIGNKEYS 60 -#define SQL_API_SQLMORERESULTS 61 -#define SQL_API_SQLNATIVESQL 62 -#define SQL_API_SQLNUMPARAMS 63 -#define SQL_API_SQLPARAMOPTIONS 64 -#define SQL_API_SQLPRIMARYKEYS 65 -#define SQL_API_SQLPROCEDURECOLUMNS 66 -#define SQL_API_SQLPROCEDURES 67 -#define SQL_API_SQLSETPOS 68 -#define SQL_API_SQLSETSCROLLOPTIONS 69 -#define SQL_API_SQLTABLEPRIVILEGES 70 - -#define SQL_API_SQLDRIVERS 71 -#define SQL_API_SQLBINDPARAMETER 72 -#define SQL_EXT_API_LAST SQL_API_SQLBINDPARAMETER - -#define SQL_API_ALL_FUNCTIONS 0 - -#define SQL_NUM_EXTENSIONS (SQL_EXT_API_LAST-SQL_EXT_API_START+1) - -/* - * SQLGetInfo - */ -#define SQL_INFO_FIRST 0 -#define SQL_ACTIVE_CONNECTIONS 0 -#define SQL_ACTIVE_STATEMENTS 1 -#define SQL_DATA_SOURCE_NAME 2 -#define SQL_DRIVER_HDBC 3 -#define SQL_DRIVER_HENV 4 -#define SQL_DRIVER_HSTMT 5 -#define SQL_DRIVER_NAME 6 -#define SQL_DRIVER_VER 7 -#define SQL_FETCH_DIRECTION 8 -#define SQL_ODBC_API_CONFORMANCE 9 -#define SQL_ODBC_VER 10 -#define SQL_ROW_UPDATES 11 -#define SQL_ODBC_SAG_CLI_CONFORMANCE 12 -#define SQL_SERVER_NAME 13 -#define SQL_SEARCH_PATTERN_ESCAPE 14 -#define SQL_ODBC_SQL_CONFORMANCE 15 -#define SQL_DBMS_NAME 17 -#define SQL_DBMS_VER 18 -#define SQL_ACCESSIBLE_TABLES 19 -#define SQL_ACCESSIBLE_PROCEDURES 20 -#define SQL_PROCEDURES 21 -#define SQL_CONCAT_NULL_BEHAVIOR 22 -#define SQL_CURSOR_COMMIT_BEHAVIOR 23 -#define SQL_CURSOR_ROLLBACK_BEHAVIOR 24 -#define SQL_DATA_SOURCE_READ_ONLY 25 -#define SQL_DEFAULT_TXN_ISOLATION 26 -#define SQL_EXPRESSIONS_IN_ORDERBY 27 -#define SQL_IDENTIFIER_CASE 28 -#define SQL_IDENTIFIER_QUOTE_CHAR 29 -#define SQL_MAX_COLUMN_NAME_LEN 30 -#define SQL_MAX_CURSOR_NAME_LEN 31 -#define SQL_MAX_OWNER_NAME_LEN 32 -#define SQL_MAX_PROCEDURE_NAME_LEN 33 -#define SQL_MAX_QUALIFIER_NAME_LEN 34 -#define SQL_MAX_TABLE_NAME_LEN 35 -#define SQL_MULT_RESULT_SETS 36 -#define SQL_MULTIPLE_ACTIVE_TXN 37 -#define SQL_OUTER_JOINS 38 -#define SQL_OWNER_TERM 39 -#define SQL_PROCEDURE_TERM 40 -#define SQL_QUALIFIER_NAME_SEPARATOR 41 -#define SQL_QUALIFIER_TERM 42 -#define SQL_SCROLL_CONCURRENCY 43 -#define SQL_SCROLL_OPTIONS 44 -#define SQL_TABLE_TERM 45 -#define SQL_TXN_CAPABLE 46 -#define SQL_USER_NAME 47 -#define SQL_CONVERT_FUNCTIONS 48 -#define SQL_NUMERIC_FUNCTIONS 49 -#define SQL_STRING_FUNCTIONS 50 -#define SQL_SYSTEM_FUNCTIONS 51 -#define SQL_TIMEDATE_FUNCTIONS 52 -#define SQL_CONVERT_BIGINT 53 -#define SQL_CONVERT_BINARY 54 -#define SQL_CONVERT_BIT 55 -#define SQL_CONVERT_CHAR 56 -#define SQL_CONVERT_DATE 57 -#define SQL_CONVERT_DECIMAL 58 -#define SQL_CONVERT_DOUBLE 59 -#define SQL_CONVERT_FLOAT 60 -#define SQL_CONVERT_INTEGER 61 -#define SQL_CONVERT_LONGVARCHAR 62 -#define SQL_CONVERT_NUMERIC 63 -#define SQL_CONVERT_REAL 64 -#define SQL_CONVERT_SMALLINT 65 -#define SQL_CONVERT_TIME 66 -#define SQL_CONVERT_TIMESTAMP 67 -#define SQL_CONVERT_TINYINT 68 -#define SQL_CONVERT_VARBINARY 69 -#define SQL_CONVERT_VARCHAR 70 -#define SQL_CONVERT_LONGVARBINARY 71 -#define SQL_TXN_ISOLATION_OPTION 72 -#define SQL_ODBC_SQL_OPT_IEF 73 - -/* - * ODBC SDK 1.0 Additions - */ -#define SQL_CORRELATION_NAME 74 -#define SQL_NON_NULLABLE_COLUMNS 75 - -/* - * ODBC SDK 2.0 Additions - */ -#define SQL_DRIVER_HLIB 76 -#define SQL_DRIVER_ODBC_VER 77 -#define SQL_LOCK_TYPES 78 -#define SQL_POS_OPERATIONS 79 -#define SQL_POSITIONED_STATEMENTS 80 -#define SQL_GETDATA_EXTENSIONS 81 -#define SQL_BOOKMARK_PERSISTENCE 82 -#define SQL_STATIC_SENSITIVITY 83 -#define SQL_FILE_USAGE 84 -#define SQL_NULL_COLLATION 85 -#define SQL_ALTER_TABLE 86 -#define SQL_COLUMN_ALIAS 87 -#define SQL_GROUP_BY 88 -#define SQL_KEYWORDS 89 -#define SQL_ORDER_BY_COLUMNS_IN_SELECT 90 -#define SQL_OWNER_USAGE 91 -#define SQL_QUALIFIER_USAGE 92 -#define SQL_QUOTED_IDENTIFIER_CASE 93 -#define SQL_SPECIAL_CHARACTERS 94 -#define SQL_SUBQUERIES 95 -#define SQL_UNION 96 -#define SQL_MAX_COLUMNS_IN_GROUP_BY 97 -#define SQL_MAX_COLUMNS_IN_INDEX 98 -#define SQL_MAX_COLUMNS_IN_ORDER_BY 99 -#define SQL_MAX_COLUMNS_IN_SELECT 100 -#define SQL_MAX_COLUMNS_IN_TABLE 101 -#define SQL_MAX_INDEX_SIZE 102 -#define SQL_MAX_ROW_SIZE_INCLUDES_LONG 103 -#define SQL_MAX_ROW_SIZE 104 -#define SQL_MAX_STATEMENT_LEN 105 -#define SQL_MAX_TABLES_IN_SELECT 106 -#define SQL_MAX_USER_NAME_LEN 107 -#define SQL_MAX_CHAR_LITERAL_LEN 108 -#define SQL_TIMEDATE_ADD_INTERVALS 109 -#define SQL_TIMEDATE_DIFF_INTERVALS 110 -#define SQL_NEED_LONG_DATA_LEN 111 -#define SQL_MAX_BINARY_LITERAL_LEN 112 -#define SQL_LIKE_ESCAPE_CLAUSE 113 -#define SQL_QUALIFIER_LOCATION 114 - -/* - * ODBC SDK 2.01 Additions - */ -#define SQL_OJ_CAPABILITIES 65003 /* Temp value until ODBC 3.0 */ - -#define SQL_INFO_LAST SQL_QUALIFIER_LOCATION -#define SQL_INFO_DRIVER_START 1000 - - -/* - * SQL_CONVERT_* bitmask values - */ -#define SQL_CVT_CHAR 0x00000001L -#define SQL_CVT_NUMERIC 0x00000002L -#define SQL_CVT_DECIMAL 0x00000004L -#define SQL_CVT_INTEGER 0x00000008L -#define SQL_CVT_SMALLINT 0x00000010L -#define SQL_CVT_FLOAT 0x00000020L -#define SQL_CVT_REAL 0x00000040L -#define SQL_CVT_DOUBLE 0x00000080L -#define SQL_CVT_VARCHAR 0x00000100L -#define SQL_CVT_LONGVARCHAR 0x00000200L -#define SQL_CVT_BINARY 0x00000400L -#define SQL_CVT_VARBINARY 0x00000800L -#define SQL_CVT_BIT 0x00001000L -#define SQL_CVT_TINYINT 0x00002000L -#define SQL_CVT_BIGINT 0x00004000L -#define SQL_CVT_DATE 0x00008000L -#define SQL_CVT_TIME 0x00010000L -#define SQL_CVT_TIMESTAMP 0x00020000L -#define SQL_CVT_LONGVARBINARY 0x00040000L - -/* - * SQL_CONVERT_FUNCTIONS - */ -#define SQL_FN_CVT_CONVERT 0x00000001L - -/* - * SQL_STRING_FUNCTIONS - */ -#define SQL_FN_STR_CONCAT 0x00000001L -#define SQL_FN_STR_INSERT 0x00000002L -#define SQL_FN_STR_LEFT 0x00000004L -#define SQL_FN_STR_LTRIM 0x00000008L -#define SQL_FN_STR_LENGTH 0x00000010L -#define SQL_FN_STR_LOCATE 0x00000020L -#define SQL_FN_STR_LCASE 0x00000040L -#define SQL_FN_STR_REPEAT 0x00000080L -#define SQL_FN_STR_REPLACE 0x00000100L -#define SQL_FN_STR_RIGHT 0x00000200L -#define SQL_FN_STR_RTRIM 0x00000400L -#define SQL_FN_STR_SUBSTRING 0x00000800L -#define SQL_FN_STR_UCASE 0x00001000L -#define SQL_FN_STR_ASCII 0x00002000L -#define SQL_FN_STR_CHAR 0x00004000L -#define SQL_FN_STR_DIFFERENCE 0x00008000L -#define SQL_FN_STR_LOCATE_2 0x00010000L -#define SQL_FN_STR_SOUNDEX 0x00020000L -#define SQL_FN_STR_SPACE 0x00040000L - -/* - * SQL_NUMERIC_FUNCTIONS - */ -#define SQL_FN_NUM_ABS 0x00000001L -#define SQL_FN_NUM_ACOS 0x00000002L -#define SQL_FN_NUM_ASIN 0x00000004L -#define SQL_FN_NUM_ATAN 0x00000008L -#define SQL_FN_NUM_ATAN2 0x00000010L -#define SQL_FN_NUM_CEILING 0x00000020L -#define SQL_FN_NUM_COS 0x00000040L -#define SQL_FN_NUM_COT 0x00000080L -#define SQL_FN_NUM_EXP 0x00000100L -#define SQL_FN_NUM_FLOOR 0x00000200L -#define SQL_FN_NUM_LOG 0x00000400L -#define SQL_FN_NUM_MOD 0x00000800L -#define SQL_FN_NUM_SIGN 0x00001000L -#define SQL_FN_NUM_SIN 0x00002000L -#define SQL_FN_NUM_SQRT 0x00004000L -#define SQL_FN_NUM_TAN 0x00008000L -#define SQL_FN_NUM_PI 0x00010000L -#define SQL_FN_NUM_RAND 0x00020000L -#define SQL_FN_NUM_DEGREES 0x00040000L -#define SQL_FN_NUM_LOG10 0x00080000L -#define SQL_FN_NUM_POWER 0x00100000L -#define SQL_FN_NUM_RADIANS 0x00200000L -#define SQL_FN_NUM_ROUND 0x00400000L -#define SQL_FN_NUM_TRUNCATE 0x00800000L - -/* - * SQL_TIMEDATE_FUNCTIONS - */ -#define SQL_FN_TD_NOW 0x00000001L -#define SQL_FN_TD_CURDATE 0x00000002L -#define SQL_FN_TD_DAYOFMONTH 0x00000004L -#define SQL_FN_TD_DAYOFWEEK 0x00000008L -#define SQL_FN_TD_DAYOFYEAR 0x00000010L -#define SQL_FN_TD_MONTH 0x00000020L -#define SQL_FN_TD_QUARTER 0x00000040L -#define SQL_FN_TD_WEEK 0x00000080L -#define SQL_FN_TD_YEAR 0x00000100L -#define SQL_FN_TD_CURTIME 0x00000200L -#define SQL_FN_TD_HOUR 0x00000400L -#define SQL_FN_TD_MINUTE 0x00000800L -#define SQL_FN_TD_SECOND 0x00001000L -#define SQL_FN_TD_TIMESTAMPADD 0x00002000L -#define SQL_FN_TD_TIMESTAMPDIFF 0x00004000L -#define SQL_FN_TD_DAYNAME 0x00008000L -#define SQL_FN_TD_MONTHNAME 0x00010000L - -/* - * SQL_SYSTEM_FUNCTIONS - */ -#define SQL_FN_SYS_USERNAME 0x00000001L -#define SQL_FN_SYS_DBNAME 0x00000002L -#define SQL_FN_SYS_IFNULL 0x00000004L - -/* - * SQL_TIMEDATE_ADD_INTERVALS - * SQL_TIMEDATE_DIFF_INTERVALS - */ -#define SQL_FN_TSI_FRAC_SECOND 0x00000001L -#define SQL_FN_TSI_SECOND 0x00000002L -#define SQL_FN_TSI_MINUTE 0x00000004L -#define SQL_FN_TSI_HOUR 0x00000008L -#define SQL_FN_TSI_DAY 0x00000010L -#define SQL_FN_TSI_WEEK 0x00000020L -#define SQL_FN_TSI_MONTH 0x00000040L -#define SQL_FN_TSI_QUARTER 0x00000080L -#define SQL_FN_TSI_YEAR 0x00000100L - -/* - * SQL_ODBC_API_CONFORMANCE - */ -#define SQL_OAC_NONE 0x0000 -#define SQL_OAC_LEVEL1 0x0001 -#define SQL_OAC_LEVEL2 0x0002 - -/* - * SQL_ODBC_SAG_CLI_CONFORMANCE - */ -#define SQL_OSCC_NOT_COMPLIANT 0x0000 -#define SQL_OSCC_COMPLIANT 0x0001 - -/* - * SQL_ODBC_SQL_CONFORMANCE - */ -#define SQL_OSC_MINIMUM 0x0000 -#define SQL_OSC_CORE 0x0001 -#define SQL_OSC_EXTENDED 0x0002 - -/* - * SQL_CONCAT_NULL_BEHAVIOR - */ -#define SQL_CB_NULL 0x0000 -#define SQL_CB_NON_NULL 0x0001 - -/* - * SQL_CURSOR_COMMIT_BEHAVIOR - * SQL_CURSOR_ROLLBACK_BEHAVIOR - */ -#define SQL_CB_DELETE 0x0000 -#define SQL_CB_CLOSE 0x0001 -#define SQL_CB_PRESERVE 0x0002 - -/* - * SQL_IDENTIFIER_CASE - */ -#define SQL_IC_UPPER 0x0001 -#define SQL_IC_LOWER 0x0002 -#define SQL_IC_SENSITIVE 0x0003 -#define SQL_IC_MIXED 0x0004 - -/* - * SQL_TXN_CAPABLE - */ -#define SQL_TC_NONE 0x0000 -#define SQL_TC_DML 0x0001 -#define SQL_TC_ALL 0x0002 -#define SQL_TC_DDL_COMMIT 0x0003 -#define SQL_TC_DDL_IGNORE 0x0004 - -/* - * SQL_SCROLL_OPTIONS - */ -#define SQL_SO_FORWARD_ONLY 0x00000001L -#define SQL_SO_KEYSET_DRIVEN 0x00000002L -#define SQL_SO_DYNAMIC 0x00000004L -#define SQL_SO_MIXED 0x00000008L -#define SQL_SO_STATIC 0x00000010L - -/* - * SQL_SCROLL_CONCURRENCY - */ -#define SQL_SCCO_READ_ONLY 0x00000001L -#define SQL_SCCO_LOCK 0x00000002L -#define SQL_SCCO_OPT_ROWVER 0x00000004L -#define SQL_SCCO_OPT_VALUES 0x00000008L - -/* - * SQL_FETCH_DIRECTION - */ -#define SQL_FD_FETCH_NEXT 0x00000001L -#define SQL_FD_FETCH_FIRST 0x00000002L -#define SQL_FD_FETCH_LAST 0x00000004L -#define SQL_FD_FETCH_PRIOR 0x00000008L -#define SQL_FD_FETCH_ABSOLUTE 0x00000010L -#define SQL_FD_FETCH_RELATIVE 0x00000020L -#define SQL_FD_FETCH_RESUME 0x00000040L -#define SQL_FD_FETCH_BOOKMARK 0x00000080L - -/* - * SQL_TXN_ISOLATION_OPTION - */ -#define SQL_TXN_READ_UNCOMMITTED 0x00000001L -#define SQL_TXN_READ_COMMITTED 0x00000002L -#define SQL_TXN_REPEATABLE_READ 0x00000004L -#define SQL_TXN_SERIALIZABLE 0x00000008L -#define SQL_TXN_VERSIONING 0x00000010L - -/* - * SQL_CORRELATION_NAME - */ -#define SQL_CN_NONE 0x0000 -#define SQL_CN_DIFFERENT 0x0001 -#define SQL_CN_ANY 0x0002 - -/* - * SQL_NON_NULLABLE_COLUMNS - */ -#define SQL_NNC_NULL 0x0000 -#define SQL_NNC_NON_NULL 0x0001 - -/* - * SQL_NULL_COLLATION - */ -#define SQL_NC_HIGH 0x0000 -#define SQL_NC_LOW 0x0001 -#define SQL_NC_START 0x0002 -#define SQL_NC_END 0x0004 - -/* - * SQL_FILE_USAGE - */ -#define SQL_FILE_NOT_SUPPORTED 0x0000 -#define SQL_FILE_TABLE 0x0001 -#define SQL_FILE_QUALIFIER 0x0002 - -/* - * SQL_GETDATA_EXTENSIONS - */ -#define SQL_GD_ANY_COLUMN 0x00000001L -#define SQL_GD_ANY_ORDER 0x00000002L -#define SQL_GD_BLOCK 0x00000004L -#define SQL_GD_BOUND 0x00000008L - -/* - * SQL_ALTER_TABLE - */ -#define SQL_AT_ADD_COLUMN 0x00000001L -#define SQL_AT_DROP_COLUMN 0x00000002L - -/* - * SQL_POSITIONED_STATEMENTS - */ -#define SQL_PS_POSITIONED_DELETE 0x00000001L -#define SQL_PS_POSITIONED_UPDATE 0x00000002L -#define SQL_PS_SELECT_FOR_UPDATE 0x00000004L - -/* - * SQL_GROUP_BY - */ -#define SQL_GB_NOT_SUPPORTED 0x0000 -#define SQL_GB_GROUP_BY_EQUALS_SELECT 0x0001 -#define SQL_GB_GROUP_BY_CONTAINS_SELECT 0x0002 -#define SQL_GB_NO_RELATION 0x0003 - -/* - * SQL_OWNER_USAGE - */ -#define SQL_OU_DML_STATEMENTS 0x00000001L -#define SQL_OU_PROCEDURE_INVOCATION 0x00000002L -#define SQL_OU_TABLE_DEFINITION 0x00000004L -#define SQL_OU_INDEX_DEFINITION 0x00000008L -#define SQL_OU_PRIVILEGE_DEFINITION 0x00000010L - -/* - * SQL_QUALIFIER_USAGE - */ -#define SQL_QU_DML_STATEMENTS 0x00000001L -#define SQL_QU_PROCEDURE_INVOCATION 0x00000002L -#define SQL_QU_TABLE_DEFINITION 0x00000004L -#define SQL_QU_INDEX_DEFINITION 0x00000008L -#define SQL_QU_PRIVILEGE_DEFINITION 0x00000010L - -/* - * SQL_SUBQUERIES - */ -#define SQL_SQ_COMPARISON 0x00000001L -#define SQL_SQ_EXISTS 0x00000002L -#define SQL_SQ_IN 0x00000004L -#define SQL_SQ_QUANTIFIED 0x00000008L -#define SQL_SQ_CORRELATED_SUBQUERIES 0x00000010L - -/* - * SQL_UNION - */ -#define SQL_U_UNION 0x00000001L -#define SQL_U_UNION_ALL 0x00000002L - -/* - * SQL_BOOKMARK_PERSISTENCE - */ -#define SQL_BP_CLOSE 0x00000001L -#define SQL_BP_DELETE 0x00000002L -#define SQL_BP_DROP 0x00000004L -#define SQL_BP_TRANSACTION 0x00000008L -#define SQL_BP_UPDATE 0x00000010L -#define SQL_BP_OTHER_HSTMT 0x00000020L -#define SQL_BP_SCROLL 0x00000040L - -/* - * SQL_STATIC_SENSITIVITY - */ -#define SQL_SS_ADDITIONS 0x00000001L -#define SQL_SS_DELETIONS 0x00000002L -#define SQL_SS_UPDATES 0x00000004L - -/* - * SQL_LOCK_TYPES - */ -#define SQL_LCK_NO_CHANGE 0x00000001L -#define SQL_LCK_EXCLUSIVE 0x00000002L -#define SQL_LCK_UNLOCK 0x00000004L - -/* - * SQL_POS_OPERATIONS - */ -#define SQL_POS_POSITION 0x00000001L -#define SQL_POS_REFRESH 0x00000002L -#define SQL_POS_UPDATE 0x00000004L -#define SQL_POS_DELETE 0x00000008L -#define SQL_POS_ADD 0x00000010L - -/* - * SQL_QUALIFIER_LOCATION - */ -#define SQL_QL_START 0x0001L -#define SQL_QL_END 0x0002L - -/* - * SQL_OJ_CAPABILITIES - */ -#define SQL_OJ_LEFT 0x00000001L -#define SQL_OJ_RIGHT 0x00000002L -#define SQL_OJ_FULL 0x00000004L -#define SQL_OJ_NESTED 0x00000008L -#define SQL_OJ_NOT_ORDERED 0x00000010L -#define SQL_OJ_INNER 0x00000020L -#define SQL_OJ_ALL_COMPARISON_OPS 0x00000040L - -/* - * SQLGetStmtOption/SQLSetStmtOption - */ -#define SQL_QUERY_TIMEOUT 0 -#define SQL_MAX_ROWS 1 -#define SQL_NOSCAN 2 -#define SQL_MAX_LENGTH 3 -#define SQL_ASYNC_ENABLE 4 -#define SQL_BIND_TYPE 5 -#define SQL_CURSOR_TYPE 6 -#define SQL_CONCURRENCY 7 -#define SQL_KEYSET_SIZE 8 -#define SQL_ROWSET_SIZE 9 -#define SQL_SIMULATE_CURSOR 10 -#define SQL_RETRIEVE_DATA 11 -#define SQL_USE_BOOKMARKS 12 -#define SQL_GET_BOOKMARK 13 -#define SQL_ROW_NUMBER 14 - -#define SQL_STMT_OPT_MIN SQL_QUERY_TIMEOUT -#define SQL_STMT_OPT_MAX SQL_ROW_NUMBER - - -/* - * SQL_QUERY_TIMEOUT - */ -#define SQL_QUERY_TIMEOUT_DEFAULT 0UL - -/* - * SQL_MAX_ROWS - */ -#define SQL_MAX_ROWS_DEFAULT 0UL - -/* - * SQL_NOSCAN - */ -#define SQL_NOSCAN_OFF 0UL /* 1.0 FALSE */ -#define SQL_NOSCAN_ON 1UL /* 1.0 TRUE */ -#define SQL_NOSCAN_DEFAULT SQL_NOSCAN_OFF - -/* - * SQL_MAX_LENGTH - */ -#define SQL_MAX_LENGTH_DEFAULT 0UL - -/* - * SQL_ASYNC_ENABLE - */ -#define SQL_ASYNC_ENABLE_OFF 0UL -#define SQL_ASYNC_ENABLE_ON 1UL -#define SQL_ASYNC_ENABLE_DEFAULT SQL_ASYNC_ENABLE_OFF - -/* - * SQL_BIND_TYPE - */ -#define SQL_BIND_BY_COLUMN 0UL -#define SQL_BIND_TYPE_DEFAULT SQL_BIND_BY_COLUMN - -/* - * SQL_CONCURRENCY - */ -#define SQL_CONCUR_READ_ONLY 1 -#define SQL_CONCUR_LOCK 2 -#define SQL_CONCUR_ROWVER 3 -#define SQL_CONCUR_VALUES 4 -#define SQL_CONCUR_DEFAULT SQL_CONCUR_READ_ONLY - -/* - * SQL_CURSOR_TYPE - */ -#define SQL_CURSOR_FORWARD_ONLY 0UL -#define SQL_CURSOR_KEYSET_DRIVEN 1UL -#define SQL_CURSOR_DYNAMIC 2UL -#define SQL_CURSOR_STATIC 3UL -#define SQL_CURSOR_TYPE_DEFAULT SQL_CURSOR_FORWARD_ONLY - -/* - * SQL_ROWSET_SIZE - */ -#define SQL_ROWSET_SIZE_DEFAULT 1UL - -/* - * SQL_KEYSET_SIZE - */ -#define SQL_KEYSET_SIZE_DEFAULT 0UL - -/* - * SQL_SIMULATE_CURSOR - */ -#define SQL_SC_NON_UNIQUE 0UL -#define SQL_SC_TRY_UNIQUE 1UL -#define SQL_SC_UNIQUE 2UL - -/* - * SQL_RETRIEVE_DATA - */ -#define SQL_RD_OFF 0UL -#define SQL_RD_ON 1UL -#define SQL_RD_DEFAULT SQL_RD_ON - -/* - * SQL_USE_BOOKMARKS - */ -#define SQL_UB_OFF 0UL -#define SQL_UB_ON 1UL -#define SQL_UB_DEFAULT SQL_UB_OFF - -/* - * SQLSetConnectOption/SQLGetConnectOption - */ -#define SQL_ACCESS_MODE 101 -#define SQL_AUTOCOMMIT 102 -#define SQL_LOGIN_TIMEOUT 103 -#define SQL_OPT_TRACE 104 -#define SQL_OPT_TRACEFILE 105 -#define SQL_TRANSLATE_DLL 106 -#define SQL_TRANSLATE_OPTION 107 -#define SQL_TXN_ISOLATION 108 -#define SQL_CURRENT_QUALIFIER 109 -#define SQL_ODBC_CURSORS 110 -#define SQL_QUIET_MODE 111 -#define SQL_PACKET_SIZE 112 - -#define SQL_CONN_OPT_MIN SQL_ACCESS_MODE -#define SQL_CONN_OPT_MAX SQL_PACKET_SIZE -#define SQL_CONNECT_OPT_DRVR_START 1000 - - -/* - * SQL_ACCESS_MODE - */ -#define SQL_MODE_READ_WRITE 0UL -#define SQL_MODE_READ_ONLY 1UL -#define SQL_MODE_DEFAULT SQL_MODE_READ_WRITE - -/* - * SQL_AUTOCOMMIT - */ -#define SQL_AUTOCOMMIT_OFF 0UL -#define SQL_AUTOCOMMIT_ON 1UL -#define SQL_AUTOCOMMIT_DEFAULT SQL_AUTOCOMMIT_ON - -/* - * SQL_LOGIN_TIMEOUT - */ -#define SQL_LOGIN_TIMEOUT_DEFAULT 15UL - -/* - * SQL_OPT_TRACE - */ -#define SQL_OPT_TRACE_OFF 0UL -#define SQL_OPT_TRACE_ON 1UL -#define SQL_OPT_TRACE_DEFAULT SQL_OPT_TRACE_OFF -#define SQL_OPT_TRACE_FILE_DEFAULT "odbc.log" - -/* - * SQL_ODBC_CURSORS - */ -#define SQL_CUR_USE_IF_NEEDED 0UL -#define SQL_CUR_USE_ODBC 1UL -#define SQL_CUR_USE_DRIVER 2UL -#define SQL_CUR_DEFAULT SQL_CUR_USE_DRIVER - -/* - * SQLSpecialColumns - Column types and scopes - */ -#define SQL_BEST_ROWID 1 -#define SQL_ROWVER 2 - -#define SQL_SCOPE_CURROW 0 -#define SQL_SCOPE_TRANSACTION 1 -#define SQL_SCOPE_SESSION 2 - -/* - * SQLSetPos - */ -#define SQL_ENTIRE_ROWSET 0 - -/* - * SQLSetPos - */ -#define SQL_POSITION 0 -#define SQL_REFRESH 1 -#define SQL_UPDATE 2 -#define SQL_DELETE 3 -#define SQL_ADD 4 - -/* - * SQLSetPos - */ -#define SQL_LOCK_NO_CHANGE 0 -#define SQL_LOCK_EXCLUSIVE 1 -#define SQL_LOCK_UNLOCK 2 - -/* - * SQLSetPos - */ -#define SQL_POSITION_TO(hstmt,irow) \ - SQLSetPos(hstmt,irow,SQL_POSITION,SQL_LOCK_NO_CHANGE) -#define SQL_LOCK_RECORD(hstmt,irow,fLock) \ - SQLSetPos(hstmt,irow,SQL_POSITION,fLock) -#define SQL_REFRESH_RECORD(hstmt,irow,fLock) \ - SQLSetPos(hstmt,irow,SQL_REFRESH,fLock) -#define SQL_UPDATE_RECORD(hstmt,irow) \ - SQLSetPos(hstmt,irow,SQL_UPDATE,SQL_LOCK_NO_CHANGE) -#define SQL_DELETE_RECORD(hstmt,irow) \ - SQLSetPos(hstmt,irow,SQL_DELETE,SQL_LOCK_NO_CHANGE) -#define SQL_ADD_RECORD(hstmt,irow) \ - SQLSetPos(hstmt,irow,SQL_ADD,SQL_LOCK_NO_CHANGE) - -/* - * All the ODBC keywords - */ -#define SQL_ODBC_KEYWORDS \ -"ABSOLUTE,ACTION,ADA,ADD,ALL,ALLOCATE,ALTER,AND,ANY,ARE,AS,"\ -"ASC,ASSERTION,AT,AUTHORIZATION,AVG,"\ -"BEGIN,BETWEEN,BIT,BIT_LENGTH,BOTH,BY,CASCADE,CASCADED,CASE,CAST,CATALOG,"\ -"CHAR,CHAR_LENGTH,CHARACTER,CHARACTER_LENGTH,CHECK,CLOSE,COALESCE,"\ -"COBOL,COLLATE,COLLATION,COLUMN,COMMIT,CONNECT,CONNECTION,CONSTRAINT,"\ -"CONSTRAINTS,CONTINUE,CONVERT,CORRESPONDING,COUNT,CREATE,CROSS,CURRENT,"\ -"CURRENT_DATE,CURRENT_TIME,CURRENT_TIMESTAMP,CURRENT_USER,CURSOR,"\ -"DATE,DAY,DEALLOCATE,DEC,DECIMAL,DECLARE,DEFAULT,DEFERRABLE,"\ -"DEFERRED,DELETE,DESC,DESCRIBE,DESCRIPTOR,DIAGNOSTICS,DISCONNECT,"\ -"DISTINCT,DOMAIN,DOUBLE,DROP,"\ -"ELSE,END,END-EXEC,ESCAPE,EXCEPT,EXCEPTION,EXEC,EXECUTE,"\ -"EXISTS,EXTERNAL,EXTRACT,"\ -"FALSE,FETCH,FIRST,FLOAT,FOR,FOREIGN,FORTRAN,FOUND,FROM,FULL,"\ -"GET,GLOBAL,GO,GOTO,GRANT,GROUP,HAVING,HOUR,"\ -"IDENTITY,IMMEDIATE,IN,INCLUDE,INDEX,INDICATOR,INITIALLY,INNER,"\ -"INPUT,INSENSITIVE,INSERT,INTEGER,INTERSECT,INTERVAL,INTO,IS,ISOLATION,"\ -"JOIN,KEY,LANGUAGE,LAST,LEADING,LEFT,LEVEL,LIKE,LOCAL,LOWER,"\ -"MATCH,MAX,MIN,MINUTE,MODULE,MONTH,MUMPS,"\ -"NAMES,NATIONAL,NATURAL,NCHAR,NEXT,NO,NONE,NOT,NULL,NULLIF,NUMERIC,"\ -"OCTET_LENGTH,OF,ON,ONLY,OPEN,OPTION,OR,ORDER,OUTER,OUTPUT,OVERLAPS,"\ -"PAD,PARTIAL,PASCAL,PLI,POSITION,PRECISION,PREPARE,PRESERVE,"\ -"PRIMARY,PRIOR,PRIVILEGES,PROCEDURE,PUBLIC,"\ -"REFERENCES,RELATIVE,RESTRICT,REVOKE,RIGHT,ROLLBACK,ROWS,"\ -"SCHEMA,SCROLL,SECOND,SECTION,SELECT,SEQUENCE,SESSION,SESSION_USER,SET,SIZE,"\ -"SMALLINT,SOME,SPACE,SQL,SQLCA,SQLCODE,SQLERROR,SQLSTATE,SQLWARNING,"\ -"SUBSTRING,SUM,SYSTEM_USER,"\ -"TABLE,TEMPORARY,THEN,TIME,TIMESTAMP,TIMEZONE_HOUR,TIMEZONE_MINUTE,"\ -"TO,TRAILING,TRANSACTION,TRANSLATE,TRANSLATION,TRIM,TRUE,"\ -"UNION,UNIQUE,UNKNOWN,UPDATE,UPPER,USAGE,USER,USING,"\ -"VALUE,,VARCHAR,VARYING,VIEW,WHEN,WHENEVER,WHERE,WITH,WORK,YEAR" - -/* - * ---------------------------------------------------------------------- - * Level 2 Functions - * ---------------------------------------------------------------------- - */ - -/* - * SQLExtendedFetch - fFetchType - */ -#define SQL_FETCH_NEXT 1 -#define SQL_FETCH_FIRST 2 -#define SQL_FETCH_LAST 3 -#define SQL_FETCH_PRIOR 4 -#define SQL_FETCH_ABSOLUTE 5 -#define SQL_FETCH_RELATIVE 6 -#define SQL_FETCH_BOOKMARK 8 - -/* - * SQLExtendedFetch - rgfRowStatus - */ -#define SQL_ROW_SUCCESS 0 -#define SQL_ROW_DELETED 1 -#define SQL_ROW_UPDATED 2 -#define SQL_ROW_NOROW 3 -#define SQL_ROW_ADDED 4 -#define SQL_ROW_ERROR 5 - -/* - * SQLForeignKeys - UPDATE_RULE/DELETE_RULE - */ -#define SQL_CASCADE 0 -#define SQL_RESTRICT 1 -#define SQL_SET_NULL 2 - -/* - * SQLBindParameter - fParamType - * SQLProcedureColumns - COLUMN_TYPE - */ -#define SQL_PARAM_TYPE_UNKNOWN 0 -#define SQL_PARAM_INPUT 1 -#define SQL_PARAM_INPUT_OUTPUT 2 -#define SQL_RESULT_COL 3 -#define SQL_PARAM_OUTPUT 4 -#define SQL_RETURN_VALUE 5 - -/* - * SQLSetParam to SQLBindParameter conversion - */ -#define SQL_PARAM_TYPE_DEFAULT SQL_PARAM_INPUT_OUTPUT -#define SQL_SETPARAM_VALUE_MAX (-1L) - -/* - * SQLStatistics - fUnique - */ -#define SQL_INDEX_UNIQUE 0 -#define SQL_INDEX_ALL 1 - -/* - * SQLStatistics - fAccuracy - */ -#define SQL_QUICK 0 -#define SQL_ENSURE 1 - -/* - * SQLStatistics - TYPE - */ -#define SQL_TABLE_STAT 0 -#define SQL_INDEX_CLUSTERED 1 -#define SQL_INDEX_HASHED 2 -#define SQL_INDEX_OTHER 3 - -/* - * SQLProcedures - PROCEDURE_TYPE - */ -#define SQL_PT_UNKNOWN 0 -#define SQL_PT_PROCEDURE 1 -#define SQL_PT_FUNCTION 2 - -/* - * SQLSpecialColumns - PSEUDO_COLUMN - */ -#define SQL_PC_UNKNOWN 0 -#define SQL_PC_NOT_PSEUDO 1 -#define SQL_PC_PSEUDO 2 - -/* - * Deprecated defines from prior versions of ODBC - */ -#define SQL_DATABASE_NAME 16 -#define SQL_FD_FETCH_PREV SQL_FD_FETCH_PRIOR -#define SQL_FETCH_PREV SQL_FETCH_PRIOR -#define SQL_CONCUR_TIMESTAMP SQL_CONCUR_ROWVER -#define SQL_SCCO_OPT_TIMESTAMP SQL_SCCO_OPT_ROWVER -#define SQL_CC_DELETE SQL_CB_DELETE -#define SQL_CR_DELETE SQL_CB_DELETE -#define SQL_CC_CLOSE SQL_CB_CLOSE -#define SQL_CR_CLOSE SQL_CB_CLOSE -#define SQL_CC_PRESERVE SQL_CB_PRESERVE -#define SQL_CR_PRESERVE SQL_CB_PRESERVE -#define SQL_FETCH_RESUME 7 -#define SQL_SCROLL_FORWARD_ONLY 0L -#define SQL_SCROLL_KEYSET_DRIVEN (-1L) -#define SQL_SCROLL_DYNAMIC (-2L) -#define SQL_SCROLL_STATIC (-3L) -#define SQL_PC_NON_PSEUDO SQL_PC_NOT_PSEUDO - -#ifdef __cplusplus -extern "C" { -#endif -/* - * Level 1 function rototypes - */ -RETCODE SQL_API SQLColumns (HSTMT hstmt, UCHAR FAR * szTableQualifier, - SWORD cbTableQualifier, UCHAR FAR * szTableOwner, SWORD cbTableOwner, - UCHAR FAR * szTableName, SWORD cbTableName, UCHAR FAR * szColumnName, - SWORD cbColumnName); -RETCODE SQL_API SQLDriverConnect (HDBC hdbc, HWND hwnd, - UCHAR FAR * szConnStrIn, SWORD cbConnStrIn, UCHAR FAR * szConnStrOut, - SWORD cbConnStrOutMax, SWORD FAR * pcbConnStrOut, UWORD fDriverCompletion); -RETCODE SQL_API SQLGetConnectOption (HDBC hdbc, UWORD fOption, PTR pvParam); -RETCODE SQL_API SQLGetData (HSTMT hstmt, UWORD icol, SWORD fCType, - PTR rgbValue, SDWORD cbValueMax, SDWORD FAR * pcbValue); -RETCODE SQL_API SQLGetFunctions (HDBC hdbc, UWORD fFunction, - UWORD FAR * pfExists); -RETCODE SQL_API SQLGetInfo (HDBC hdbc, UWORD fInfoType, PTR rgbInfoValue, - SWORD cbInfoValueMax, SWORD FAR * pcbInfoValue); -RETCODE SQL_API SQLGetStmtOption (HSTMT hstmt, UWORD fOption, PTR pvParam); -RETCODE SQL_API SQLGetTypeInfo (HSTMT hstmt, SWORD fSqlType); -RETCODE SQL_API SQLParamData (HSTMT hstmt, PTR FAR * prgbValue); -RETCODE SQL_API SQLPutData (HSTMT hstmt, PTR rgbValue, SDWORD cbValue); -RETCODE SQL_API SQLSetConnectOption (HDBC hdbc, UWORD fOption, UDWORD vParam); -RETCODE SQL_API SQLSetStmtOption (HSTMT hstmt, UWORD fOption, UDWORD vParam); -RETCODE SQL_API SQLSpecialColumns (HSTMT hstmt, UWORD fColType, - UCHAR FAR * szTableQualifier, SWORD cbTableQualifier, - UCHAR FAR * szTableOwner, SWORD cbTableOwner, UCHAR FAR * szTableName, - SWORD cbTableName, UWORD fScope, UWORD fNullable); -RETCODE SQL_API SQLStatistics (HSTMT hstmt, UCHAR FAR * szTableQualifier, - SWORD cbTableQualifier, UCHAR FAR * szTableOwner, SWORD cbTableOwner, - UCHAR FAR * szTableName, SWORD cbTableName, UWORD fUnique, UWORD fAccuracy); -RETCODE SQL_API SQLTables (HSTMT hstmt, UCHAR FAR * szTableQualifier, - SWORD cbTableQualifier, UCHAR FAR * szTableOwner, SWORD cbTableOwner, - UCHAR FAR * szTableName, SWORD cbTableName, UCHAR FAR * szTableType, - SWORD cbTableType); - -/* - * Level 2 function prototypes - */ -RETCODE SQL_API SQLBrowseConnect (HDBC hdbc, - UCHAR FAR * szConnStrIn, SWORD cbConnStrIn, UCHAR FAR * szConnStrOut, - SWORD cbConnStrOutMax, SWORD FAR * pcbConnStrOut); -RETCODE SQL_API SQLColumnPrivileges (HSTMT hstmt, - UCHAR FAR * szTableQualifier, SWORD cbTableQualifier, - UCHAR FAR * szTableOwner, SWORD cbTableOwner, UCHAR FAR * szTableName, - SWORD cbTableName, UCHAR FAR * szColumnName, SWORD cbColumnName); -RETCODE SQL_API SQLDataSources (HENV henv, UWORD fDirection, - UCHAR FAR * szDSN, SWORD cbDSNMax, SWORD FAR * pcbDSN, - UCHAR FAR * szDescription, SWORD cbDescriptionMax, - SWORD FAR * pcbDescription); -RETCODE SQL_API SQLDescribeParam (HSTMT hstmt, UWORD ipar, - SWORD FAR * pfSqlType, UDWORD FAR * pcbColDef, SWORD FAR * pibScale, - SWORD FAR * pfNullable); -RETCODE SQL_API SQLExtendedFetch (HSTMT hstmt, UWORD fFetchType, SDWORD irow, - UDWORD FAR * pcrow, UWORD FAR * rgfRowStatus); -RETCODE SQL_API SQLForeignKeys (HSTMT hstmt, UCHAR FAR * szPkTableQualifier, - SWORD cbPkTableQualifier, UCHAR FAR * szPkTableOwner, SWORD cbPkTableOwner, - UCHAR FAR * szPkTableName, SWORD cbPkTableName, - UCHAR FAR * szFkTableQualifier, SWORD cbFkTableQualifier, - UCHAR FAR * szFkTableOwner, SWORD cbFkTableOwner, UCHAR FAR * szFkTableName, - SWORD cbFkTableName); -RETCODE SQL_API SQLMoreResults (HSTMT hstmt); -RETCODE SQL_API SQLNativeSql (HDBC hdbc, UCHAR FAR * szSqlStrIn, - SDWORD cbSqlStrIn, UCHAR FAR * szSqlStr, SDWORD cbSqlStrMax, - SDWORD FAR * pcbSqlStr); -RETCODE SQL_API SQLNumParams (HSTMT hstmt, SWORD FAR * pcpar); -RETCODE SQL_API SQLParamOptions (HSTMT hstmt, UDWORD crow, UDWORD FAR * pirow); -RETCODE SQL_API SQLPrimaryKeys (HSTMT hstmt, UCHAR FAR * szTableQualifier, - SWORD cbTableQualifier, UCHAR FAR * szTableOwner, SWORD cbTableOwner, - UCHAR FAR * szTableName, SWORD cbTableName); -RETCODE SQL_API SQLProcedureColumns (HSTMT hstmt, UCHAR FAR * szProcQualifier, - SWORD cbProcQualifier, UCHAR FAR * szProcOwner, SWORD cbProcOwner, - UCHAR FAR * szProcName, SWORD cbProcName, UCHAR FAR * szColumnName, - SWORD cbColumnName); -RETCODE SQL_API SQLProcedures (HSTMT hstmt, UCHAR FAR * szProcQualifier, - SWORD cbProcQualifier, UCHAR FAR * szProcOwner, SWORD cbProcOwner, - UCHAR FAR * szProcName, SWORD cbProcName); -RETCODE SQL_API SQLSetPos (HSTMT hstmt, UWORD irow, UWORD fOption, UWORD fLock); -RETCODE SQL_API SQLTablePrivileges (HSTMT hstmt, UCHAR FAR * szTableQualifier, - SWORD cbTableQualifier, UCHAR FAR * szTableOwner, SWORD cbTableOwner, - UCHAR FAR * szTableName, SWORD cbTableName); - -/* - * SDK 2.0 Additional function prototypes - */ -RETCODE SQL_API SQLDrivers (HENV henv, UWORD fDirection, - UCHAR FAR * szDriverDesc, SWORD cbDriverDescMax, SWORD FAR * pcbDriverDesc, - UCHAR FAR * szDriverAttributes, SWORD cbDrvrAttrMax, - SWORD FAR * pcbDrvrAttr); -RETCODE SQL_API SQLBindParameter (HSTMT hstmt, UWORD ipar, SWORD fParamType, - SWORD fCType, SWORD fSqlType, UDWORD cbColDef, SWORD ibScale, PTR rgbValue, - SDWORD cbValueMax, SDWORD FAR * pcbValue); - -/* - * Depreciated - use SQLSetStmtOptions - */ -RETCODE SQL_API SQLSetScrollOptions (HSTMT hstmt, UWORD fConcurrency, - SDWORD crowKeyset, UWORD crowRowset); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/src/iodbc/itrace.c b/src/iodbc/itrace.c deleted file mode 100644 index 4151f175e3..0000000000 --- a/src/iodbc/itrace.c +++ /dev/null @@ -1,117 +0,0 @@ -/* - * itrace.c - * - * $Id$ - * - * Trace functions - * - * The iODBC driver manager. - * - * Copyright (C) 1995 by Ke Jin - * - * 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, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include - -#include -#include - -#include - -#include - -#include -#include -#include "henv.ci" - -#include - -static int -printreturn (void FAR * istm, int ret) -{ - FILE FAR *stm = (FILE FAR *) istm; - char FAR *ptr = "Invalid return value"; - - switch (ret) - { - case SQL_SUCCESS: - ptr = "SQL_SUCCESS"; - break; - - case SQL_SUCCESS_WITH_INFO: - ptr = "SQL_SUCCESS_WITH_INFO"; - break; - - case SQL_NO_DATA_FOUND: - ptr = "SQL_NO_DATA_FOUND"; - break; - - case SQL_NEED_DATA: - ptr = "SQL_NEED_DATA"; - break; - - case SQL_INVALID_HANDLE: - ptr = "SQL_INVALID_HANDLE"; - break; - - case SQL_ERROR: - ptr = "SQL_ERROR"; - break; - - case SQL_STILL_EXECUTING: - ptr = "SQL_STILL_EXECUTING"; - break; - - default: - break; - } - - fprintf (stm, "%s\n", ptr); - fflush (stm); - - return 0; -} - - -HPROC -_iodbcdm_gettrproc (void FAR * istm, int procid, int type) -{ - FILE FAR *stm = (FILE FAR *) istm; - - if (type == TRACE_TYPE_DM2DRV) - { - int i, j = 0; - - for (i = 0; j != en_NullProc; i++) - { - j = odbcapi_symtab[i].en_idx; - - if (j == procid) - { - fprintf (stm, "\n%s ( ... )\n", odbcapi_symtab[i].symbol); - - fflush (stm); - } - } - } - - if (type == TRACE_TYPE_RETURN) - { - return (HPROC) printreturn; - } - - return SQL_NULL_HPROC; -} diff --git a/src/iodbc/itrace.h b/src/iodbc/itrace.h deleted file mode 100644 index 61ba072ec8..0000000000 --- a/src/iodbc/itrace.h +++ /dev/null @@ -1,124 +0,0 @@ -/* - * itrace.h - * - * $Id$ - * - * Trace functions - * - * The iODBC driver manager. - * - * Copyright (C) 1995 by Ke Jin - * - * 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, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ -#ifndef _ITRACE_H -#define _ITRACE_H - -#ifdef DEBUG - -#ifndef NO_TRACE -#define NO_TRACE -#endif - -#endif - -#define TRACE_TYPE_APP2DM 1 -#define TRACE_TYPE_DM2DRV 2 -#define TRACE_TYPE_DRV2DM 3 - -#define TRACE_TYPE_RETURN 4 - -extern HPROC _iodbcdm_gettrproc (void FAR * stm, int procid, int type); - -#ifdef NO_TRACE -#define TRACE_CALL( stm, trace_on, procid, plist ) -#else -#define TRACE_CALL( stm, trace_on, plist )\ - {\ - if( trace_on)\ - {\ - HPROC hproc;\ -\ - hproc = _iodbcdm_gettrproc(stm, procid, TRACE_TYPE_APP2DM);\ -\ - if( hproc )\ - hproc plist;\ - }\ - } -#endif - -#ifdef NO_TRACE -#define TRACE_DM2DRV( stm, procid, plist ) -#else -#define TRACE_DM2DRV( stm, procid, plist )\ - {\ - HPROC hproc;\ -\ - hproc = _iodbcdm_gettrproc(stm, procid, TRACE_TYPE_DM2DRV);\ -\ - if( hproc )\ - hproc plist;\ - } -#endif - -#ifdef NO_TRACE -#define TRACE_DRV2DM( stm, procid, plist ) -#else -#define TRACE_DRV2DM( stm, procid, plist ) \ - {\ - HPROC hproc;\ -\ - hproc = _iodbcdm_gettrproc( stm, procid, TRACE_TYPE_DRV2DM);\ -\ - if( hproc )\ - hproc plist;\ - } -#endif - -#ifdef NO_TRACE -#define TRACE_RETURN( stm, trace_on, ret ) -#else -#define TRACE_RETURN( stm, trace_on, ret )\ - {\ - if( trace_on ) {\ - HPROC hproc;\ -\ - hproc = _iodbcdm_gettrproc( stm, 0, TRACE_TYPE_RETURN);\ -\ - if( hproc )\ - hproc( stm, ret );\ - }\ - } -#endif - -#ifdef NO_TRACE -#define CALL_DRIVER( hdbc, ret, proc, procid, plist ) { ret = proc plist; } -#else -#define CALL_DRIVER( hdbc, ret, proc, procid, plist )\ - {\ - DBC_t FAR* pdbc = (DBC_t FAR*)(hdbc);\ -\ - if( pdbc->trace ) {\ - TRACE_DM2DRV( pdbc->tstm, procid, plist )\ - ret = proc plist;\ - TRACE_DRV2DM( pdbc->tstm, procid, plist )\ - TRACE_RETURN( pdbc->tstm, 1, ret )\ - }\ - else\ - ret = proc plist;\ - } -#endif - -#endif diff --git a/src/iodbc/misc.c b/src/iodbc/misc.c deleted file mode 100644 index 183b8defc0..0000000000 --- a/src/iodbc/misc.c +++ /dev/null @@ -1,413 +0,0 @@ -/* - * misc.c - * - * $Id$ - * - * Miscellaneous functions - * - * The iODBC driver manager. - * - * Copyright (C) 1995 by Ke Jin - * - * 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, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include - -#include -#include - -#include -#include - -static int -upper_strneq ( - char *s1, - char *s2, - int n) -{ - int i; - char c1, c2; - - for (i = 1; i < n; i++) - { - c1 = s1[i]; - c2 = s2[i]; - - if (c1 >= 'a' && c1 <= 'z') - { - c1 += ('A' - 'a'); - } - else if (c1 == '\n') - { - c1 = '\0'; - } - - if (c2 >= 'a' && c2 <= 'z') - { - c2 += ('A' - 'a'); - } - else if (c2 == '\n') - { - c2 = '\0'; - } - - if ((c1 - c2) || !c1 || !c2) - { - break; - } - } - - return (int) !(c1 - c2); -} - -static char * /* return new position in input str */ -readtoken ( - char *istr, /* old position in input buf */ - char *obuf) /* token string ( if "\0", then finished ) */ -{ - char *start = obuf; - - /* Skip leading white space */ - while (*istr == ' ' || *istr == '\t') - istr++; - - for (; *istr && *istr != '\n'; istr++) - { - char c, nx; - - c = *(istr); - nx = *(istr + 1); - - if (c == ';') - { - for (; *istr && *istr != '\n'; istr++); - break; - } - *obuf = c; - obuf++; - - if (nx == ';' || nx == '=' || c == '=') - { - istr++; - break; - } - } - *obuf = '\0'; - - /* Trim end of token */ - for (; obuf > start && (*(obuf - 1) == ' ' || *(obuf - 1) == '\t');) - *--obuf = '\0'; - - return istr; -} - -#if !defined(WINDOWS) && !defined(WIN32) && !defined(OS2) -# include -# define UNIX_PWD -#endif - -char * -_iodbcdm_getinifile (char *buf, int size) -{ - int i, j; - char *ptr; - - j = STRLEN ("/odbc.ini") + 1; - - if (size < j) - { - return NULL; - } - -#if !defined(UNIX_PWD) - - i = GetWindowsDirectory ((LPSTR) buf, size); - - if (i == 0 || i > size - j) - { - return NULL; - } - - sprintf (buf + i, "/odbc.ini"); - - return buf; -#else - if ((ptr = getenv ("ODBCINI")) != NULL) - { - strcpy (buf, ptr); - return buf; - } - - if ((ptr = getenv ("IODBCINI")) != NULL) - { - strcpy (buf, ptr); - return buf; - } - - if ((ptr = getenv ("HOME")) == NULL) - { - ptr = (char *) getpwuid (getuid ()); - - if (ptr == NULL) - { - return NULL; - } - - ptr = ((struct passwd *) ptr)->pw_dir; - } - - if (ptr == NULL || *ptr == '\0') - { - ptr = "/home"; - } - - if (size < STRLEN (ptr) + j) - { - return NULL; - } - - sprintf (buf, "%s%s", ptr, "/.odbc.ini"); - /* i.e. searching ~/.odbc.ini */ -#endif - - return buf; -} - - -/* - * read odbc init file to resolve the value of specified - * key from named or defaulted dsn section - */ -char * -_iodbcdm_getkeyvalbydsn ( - char *dsn, - int dsnlen, - char *keywd, - char *value, - int size) -{ - char buf[1024]; - char dsntk[SQL_MAX_DSN_LENGTH + 3] = {'[', '\0'}; - char token[1024]; /* large enough */ - FILE *file; - char pathbuf[1024]; - char *path; - -#define DSN_NOMATCH 0 -#define DSN_NAMED 1 -#define DSN_DEFAULT 2 - - int dsnid = DSN_NOMATCH; - int defaultdsn = DSN_NOMATCH; - - if (dsn == NULL || *dsn == 0) - { - dsn = "default"; - dsnlen = STRLEN (dsn); - } - - if (dsnlen == SQL_NTS) - { - dsnlen = STRLEN (dsn); - } - - if (dsnlen <= 0 || keywd == NULL || buf == 0 || size <= 0) - { - return NULL; - } - - if (dsnlen > sizeof (dsntk) - 2) - { - return NULL; - } - - value[0] = '\0'; - - STRNCAT (dsntk, dsn, dsnlen); - STRCAT (dsntk, "]"); - - dsnlen = dsnlen + 2; - - path = _iodbcdm_getinifile (pathbuf, sizeof (pathbuf)); - - if (path == NULL) - { - return NULL; - } - - file = (FILE *) fopen (path, "r"); - - if (file == NULL) - { - return NULL; - } - - for (;;) - { - char *str; - - str = fgets (buf, sizeof (buf), file); - - if (str == NULL) - { - break; - } - - if (*str == '[') - { - if (upper_strneq (str, "[default]", STRLEN ("[default]"))) - { - /* we only read first dsn default dsn - * section (as well as named dsn). - */ - if (defaultdsn == DSN_NOMATCH) - { - dsnid = DSN_DEFAULT; - defaultdsn = DSN_DEFAULT; - } - else - { - dsnid = DSN_NOMATCH; - } - - continue; - } - else if (upper_strneq (str, dsntk, dsnlen)) - { - dsnid = DSN_NAMED; - } - else - { - dsnid = DSN_NOMATCH; - } - - continue; - } - else if (dsnid == DSN_NOMATCH) - { - continue; - } - - str = readtoken (str, token); - - if (upper_strneq (keywd, token, STRLEN (keywd))) - { - str = readtoken (str, token); - - if (!STREQ (token, "=")) - /* something other than = */ - { - continue; - } - - str = readtoken (str, token); - - if (STRLEN (token) > size - 1) - { - break; - } - - STRNCPY (value, token, size); - /* copy the value(i.e. next token) to buf */ - - if (dsnid != DSN_DEFAULT) - { - break; - } - } - } - - fclose (file); - - return (*value) ? value : NULL; -} - - -char * -_iodbcdm_getkeyvalinstr ( - char *cnstr, - int cnlen, - char *keywd, - char *value, - int size) -{ - char token[1024] = {'\0'}; - int flag = 0; - - if (cnstr == NULL || value == NULL - || keywd == NULL || size < 1) - { - return NULL; - } - - if (cnlen == SQL_NTS) - { - cnlen = STRLEN (cnstr); - } - - if (cnlen <= 0) - { - return NULL; - } - - for (;;) - { - cnstr = readtoken (cnstr, token); - - if (*token == '\0') - { - break; - } - - if (STREQ (token, ";")) - { - flag = 0; - continue; - } - - switch (flag) - { - case 0: - if (upper_strneq (token, keywd, strlen (keywd))) - { - flag = 1; - } - break; - - case 1: - if (STREQ (token, "=")) - { - flag = 2; - } - break; - - case 2: - if (size < strlen (token) + 1) - { - return NULL; - } - - STRNCPY (value, token, size); - - return value; - - default: - break; - } - } - - return NULL; -} diff --git a/src/iodbc/prepare.c b/src/iodbc/prepare.c deleted file mode 100644 index f432ad5600..0000000000 --- a/src/iodbc/prepare.c +++ /dev/null @@ -1,525 +0,0 @@ -/* - * prepare.c - * - * $Id$ - * - * Prepare a query - * - * The iODBC driver manager. - * - * Copyright (C) 1995 by Ke Jin - * - * 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, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include - -#include -#include - -#include - -#include -#include -#include -#include - -#include - -#include - -RETCODE SQL_API -SQLPrepare ( - HSTMT hstmt, - UCHAR FAR * szSqlStr, - SDWORD cbSqlStr) -{ - STMT_t FAR *pstmt = (STMT_t *) hstmt; - - HPROC hproc = SQL_NULL_HPROC; - RETCODE retcode = SQL_SUCCESS; - int sqlstat = en_00000; - - if (hstmt == SQL_NULL_HSTMT || pstmt->hdbc == SQL_NULL_HDBC) - { - return SQL_INVALID_HANDLE; - } - - /* check state */ - if (pstmt->asyn_on == en_NullProc) - { - /* not on asyn state */ - switch (pstmt->state) - { - case en_stmt_fetched: - case en_stmt_xfetched: - sqlstat = en_24000; - break; - - case en_stmt_needdata: - case en_stmt_mustput: - case en_stmt_canput: - sqlstat = en_S1010; - break; - - default: - break; - } - } - else if (pstmt->asyn_on != en_Prepare) - { - /* asyn on other */ - sqlstat = en_S1010; - } - - if (sqlstat != en_00000) - { - PUSHSQLERR (pstmt->herr, sqlstat); - - return SQL_ERROR; - } - - if (szSqlStr == NULL) - { - PUSHSQLERR (pstmt->herr, en_S1009); - - return SQL_ERROR; - } - - if (cbSqlStr < 0 && cbSqlStr != SQL_NTS) - { - PUSHSQLERR (pstmt->herr, en_S1090); - - return SQL_ERROR; - } - - hproc = _iodbcdm_getproc (pstmt->hdbc, en_Prepare); - - if (hproc == SQL_NULL_HPROC) - { - PUSHSQLERR (pstmt->herr, en_IM001); - return SQL_ERROR; - } - - CALL_DRIVER (pstmt->hdbc, retcode, hproc, en_Prepare, - (pstmt->dhstmt, szSqlStr, cbSqlStr)) - - /* stmt state transition */ - if (pstmt->asyn_on == en_Prepare) - { - switch (retcode) - { - case SQL_SUCCESS: - case SQL_SUCCESS_WITH_INFO: - case SQL_ERROR: - pstmt->asyn_on = en_NullProc; - return retcode; - - case SQL_STILL_EXECUTING: - default: - return retcode; - } - } - - switch (retcode) - { - case SQL_STILL_EXECUTING: - pstmt->asyn_on = en_Prepare; - break; - - case SQL_SUCCESS: - case SQL_SUCCESS_WITH_INFO: - pstmt->state = en_stmt_prepared; - pstmt->prep_state = 1; - break; - - case SQL_ERROR: - switch (pstmt->state) - { - case en_stmt_prepared: - case en_stmt_executed: - pstmt->state = en_stmt_allocated; - pstmt->prep_state = 0; - break; - - default: - break; - } - - default: - break; - } - - return retcode; -} - - -RETCODE SQL_API -SQLSetCursorName ( - HSTMT hstmt, - UCHAR FAR * szCursor, - SWORD cbCursor) -{ - STMT_t FAR *pstmt = (STMT_t *) hstmt; - HPROC hproc = SQL_NULL_HPROC; - - RETCODE retcode = SQL_SUCCESS; - int sqlstat = en_00000; - - if (hstmt == SQL_NULL_HSTMT || pstmt->hdbc == SQL_NULL_HDBC) - { - return SQL_INVALID_HANDLE; - } - - if (szCursor == NULL) - { - PUSHSQLERR (pstmt->herr, en_S1009); - - return SQL_ERROR; - } - - if (cbCursor < 0 && cbCursor != SQL_NTS) - { - PUSHSQLERR (pstmt->herr, en_S1090); - - return SQL_ERROR; - } - - /* check state */ - if (pstmt->asyn_on != en_NullProc) - { - sqlstat = en_S1010; - } - else - { - switch (pstmt->state) - { - case en_stmt_executed: - case en_stmt_cursoropen: - case en_stmt_fetched: - case en_stmt_xfetched: - sqlstat = en_24000; - break; - - case en_stmt_needdata: - case en_stmt_mustput: - case en_stmt_canput: - sqlstat = en_S1010; - break; - - default: - break; - } - } - - if (sqlstat != en_00000) - { - PUSHSQLERR (pstmt->herr, sqlstat); - - return SQL_ERROR; - } - - hproc = _iodbcdm_getproc (pstmt->hdbc, en_SetCursorName); - - if (hproc == SQL_NULL_HPROC) - { - PUSHSQLERR (pstmt->herr, en_IM001); - - return SQL_ERROR; - } - - CALL_DRIVER (pstmt->hdbc, retcode, hproc, en_SetCursorName, - (pstmt->dhstmt, szCursor, cbCursor)) - - if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) - { - pstmt->cursor_state = en_stmt_cursor_named; - } - - return retcode; -} - - -RETCODE SQL_API -SQLBindParameter ( - HSTMT hstmt, - UWORD ipar, - SWORD fParamType, - SWORD fCType, - SWORD fSqlType, - UDWORD cbColDef, - SWORD ibScale, - PTR rgbValue, - SDWORD cbValueMax, - SDWORD FAR * pcbValue) -{ - STMT_t FAR *pstmt = (STMT_t FAR *) hstmt; - HPROC hproc = SQL_NULL_HPROC; - - int sqlstat = en_00000; - RETCODE retcode = SQL_SUCCESS; - - if (hstmt == SQL_NULL_HSTMT || pstmt->hdbc == SQL_NULL_HDBC) - { - return SQL_INVALID_HANDLE; - } - - /* check param */ - if (fSqlType > SQL_TYPE_MAX || - (fSqlType < SQL_TYPE_MIN && fSqlType > SQL_TYPE_DRIVER_START)) - /* Note: SQL_TYPE_DRIVER_START is a nagtive number - * So, we use ">" */ - { - sqlstat = en_S1004; - } - else if (ipar < 1) - { - sqlstat = en_S1093; - } - else if ((rgbValue == NULL && pcbValue == NULL) - && fParamType != SQL_PARAM_OUTPUT) - { - sqlstat = en_S1009; - /* This means, I allow output to nowhere - * (i.e. * junk output result). But I can't - * allow input from nowhere. - */ - } -/********** - else if( cbValueMax < 0L && cbValueMax != SQL_SETPARAM_VALUE_MAX ) - { - sqlstat = en_S1090; - } -**********/ - else if (fParamType != SQL_PARAM_INPUT - && fParamType != SQL_PARAM_OUTPUT - && fParamType != SQL_PARAM_INPUT_OUTPUT) - { - sqlstat = en_S1105; - } - else - { - switch (fCType) - { - case SQL_C_DEFAULT: - case SQL_C_CHAR: - case SQL_C_BINARY: - case SQL_C_BIT: - case SQL_C_TINYINT: - case SQL_C_STINYINT: - case SQL_C_UTINYINT: - case SQL_C_SHORT: - case SQL_C_SSHORT: - case SQL_C_USHORT: - case SQL_C_LONG: - case SQL_C_SLONG: - case SQL_C_ULONG: - case SQL_C_FLOAT: - case SQL_C_DOUBLE: - case SQL_C_DATE: - case SQL_C_TIME: - case SQL_C_TIMESTAMP: - break; - - default: - sqlstat = en_S1003; - break; - } - } - - if (sqlstat != en_00000) - { - PUSHSQLERR (pstmt->herr, sqlstat); - - return SQL_ERROR; - } - - /* check state */ - if (pstmt->state >= en_stmt_needdata || pstmt->asyn_on != en_NullProc) - { - PUSHSQLERR (pstmt->herr, en_S1010); - - retcode = SQL_ERROR; - } - - hproc = _iodbcdm_getproc (pstmt->hdbc, en_BindParameter); - - if (hproc == SQL_NULL_HPROC) - { - PUSHSQLERR (pstmt->herr, en_IM001); - - return SQL_ERROR; - } - - CALL_DRIVER (pstmt->hdbc, retcode, hproc, en_BindParameter, - (pstmt->dhstmt, ipar, fParamType, fCType, fSqlType, cbColDef, - ibScale, rgbValue, cbValueMax, pcbValue)) - - return retcode; -} - - -RETCODE SQL_API -SQLParamOptions ( - HSTMT hstmt, - UDWORD crow, - UDWORD FAR * pirow) -{ - STMT_t FAR *pstmt = (STMT_t FAR *) hstmt; - HPROC hproc; - RETCODE retcode; - - if (hstmt == SQL_NULL_HSTMT || pstmt->hdbc == SQL_NULL_HDBC) - { - return SQL_INVALID_HANDLE; - } - - if (crow == (UDWORD) 0UL) - { - PUSHSQLERR (pstmt->herr, en_S1107); - - return SQL_ERROR; - } - - if (pstmt->state >= en_stmt_needdata || pstmt->asyn_on != en_NullProc) - { - PUSHSQLERR (pstmt->herr, en_S1010); - - return SQL_ERROR; - } - - hproc = _iodbcdm_getproc (pstmt->hdbc, en_ParamOptions); - - if (hproc == SQL_NULL_HPROC) - { - PUSHSQLERR (pstmt->herr, en_IM001); - - return SQL_ERROR; - } - - CALL_DRIVER (pstmt->hdbc, retcode, hproc, en_ParamOptions, - (pstmt->dhstmt, crow, pirow)) - - return retcode; -} - - -RETCODE SQL_API -SQLSetScrollOptions ( - HSTMT hstmt, - UWORD fConcurrency, - SDWORD crowKeyset, - UWORD crowRowset) -{ - STMT_t FAR *pstmt = (STMT_t FAR *) hstmt; - HPROC hproc; - int sqlstat = en_00000; - RETCODE retcode; - - if (hstmt == SQL_NULL_HSTMT || pstmt->hdbc == SQL_NULL_HDBC) - { - return SQL_INVALID_HANDLE; - } - - for (;;) - { - if (crowRowset == (UWORD) 0) - { - sqlstat = en_S1107; - break; - } - - if (crowKeyset > (SDWORD) 0L && crowKeyset < (SDWORD) crowRowset) - { - sqlstat = en_S1107; - break; - } - - if (crowKeyset < 1) - { - if (crowKeyset != SQL_SCROLL_FORWARD_ONLY - && crowKeyset != SQL_SCROLL_STATIC - && crowKeyset != SQL_SCROLL_KEYSET_DRIVEN - && crowKeyset != SQL_SCROLL_DYNAMIC) - { - sqlstat = en_S1107; - break; - } - } - - if (fConcurrency != SQL_CONCUR_READ_ONLY - && fConcurrency != SQL_CONCUR_LOCK - && fConcurrency != SQL_CONCUR_ROWVER - && fConcurrency != SQL_CONCUR_VALUES) - { - sqlstat = en_S1108; - break; - } - - if (pstmt->state != en_stmt_allocated) - { - sqlstat = en_S1010; - break; - } - - hproc = _iodbcdm_getproc (pstmt->hdbc, en_SetScrollOptions); - - if (hproc == SQL_NULL_HPROC) - { - sqlstat = en_IM001; - break; - } - - sqlstat = en_00000; - if (1) /* turn off solaris warning message */ - break; - } - - if (sqlstat != en_00000) - { - PUSHSQLERR (pstmt->herr, sqlstat); - - return SQL_ERROR; - } - - CALL_DRIVER (pstmt->hdbc, retcode, hproc, en_SetScrollOptions, - (pstmt->dhstmt, fConcurrency, crowKeyset, crowRowset)) - - return retcode; -} - - -RETCODE SQL_API -SQLSetParam ( - HSTMT hstmt, - UWORD ipar, - SWORD fCType, - SWORD fSqlType, - UDWORD cbColDef, - SWORD ibScale, - PTR rgbValue, - SDWORD FAR * pcbValue) -{ - return SQLBindParameter (hstmt, - ipar, - (SWORD) SQL_PARAM_INPUT_OUTPUT, - fCType, - fSqlType, - cbColDef, - ibScale, - rgbValue, - SQL_SETPARAM_VALUE_MAX, - pcbValue); -} diff --git a/src/iodbc/result.c b/src/iodbc/result.c deleted file mode 100644 index 12209a15e3..0000000000 --- a/src/iodbc/result.c +++ /dev/null @@ -1,523 +0,0 @@ -/* - * result.c - * - * $Id$ - * - * Prepare for getting query result - * - * The iODBC driver manager. - * - * Copyright (C) 1995 by Ke Jin - * - * 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, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include - -#include -#include - -#include - -#include -#include -#include -#include - -#include - -RETCODE SQL_API -SQLBindCol ( - HSTMT hstmt, - UWORD icol, - SWORD fCType, - PTR rgbValue, - SDWORD cbValueMax, - SDWORD FAR * pcbValue) -{ - STMT_t FAR *pstmt = (STMT_t FAR *) hstmt; - HPROC hproc = SQL_NULL_HPROC; - RETCODE retcode; - - if (hstmt == SQL_NULL_HSTMT || pstmt->hdbc == SQL_NULL_HDBC) - { - return SQL_INVALID_HANDLE; - } - - /* check argument */ - switch (fCType) - { - case SQL_C_DEFAULT: - case SQL_C_CHAR: - case SQL_C_BINARY: - case SQL_C_BIT: - case SQL_C_TINYINT: - case SQL_C_STINYINT: - case SQL_C_UTINYINT: - case SQL_C_SHORT: - case SQL_C_SSHORT: - case SQL_C_USHORT: - case SQL_C_LONG: - case SQL_C_SLONG: - case SQL_C_ULONG: - case SQL_C_FLOAT: - case SQL_C_DOUBLE: - case SQL_C_DATE: - case SQL_C_TIME: - case SQL_C_TIMESTAMP: - break; - - default: - PUSHSQLERR (pstmt->herr, en_S1003); - return SQL_ERROR; - } - - if (cbValueMax < 0) - { - PUSHSQLERR (pstmt->herr, en_S1090); - - return SQL_ERROR; - } - - /* check state */ - if (pstmt->state > en_stmt_needdata || pstmt->asyn_on != en_NullProc) - { - PUSHSQLERR (pstmt->herr, en_S1010); - return SQL_ERROR; - } - - /* call driver's function */ - hproc = _iodbcdm_getproc (pstmt->hdbc, en_BindCol); - - if (hproc == SQL_NULL_HPROC) - { - PUSHSQLERR (pstmt->herr, en_IM001); - - return SQL_ERROR; - } - - CALL_DRIVER (pstmt->hdbc, retcode, hproc, en_BindCol, - (pstmt->dhstmt, icol, fCType, rgbValue, cbValueMax, pcbValue)) - - return retcode; -} - - -RETCODE SQL_API -SQLGetCursorName ( - HSTMT hstmt, - UCHAR FAR * szCursor, - SWORD cbCursorMax, - SWORD FAR * pcbCursor) -{ - STMT_t FAR *pstmt = (STMT_t FAR *) hstmt; - HPROC hproc; - RETCODE retcode; - - if (hstmt == SQL_NULL_HSTMT || pstmt->hdbc == SQL_NULL_HDBC) - { - return SQL_INVALID_HANDLE; - } - - /* check argument */ - if (cbCursorMax < (SWORD) 0) - { - PUSHSQLERR (pstmt->herr, en_S1090); - - return SQL_ERROR; - } - - /* check state */ - if (pstmt->state >= en_stmt_needdata || pstmt->asyn_on != en_NullProc) - { - PUSHSQLERR (pstmt->herr, en_S1010); - - return SQL_ERROR; - } - - if (pstmt->state < en_stmt_cursoropen - && pstmt->cursor_state == en_stmt_cursor_no) - { - PUSHSQLERR (pstmt->herr, en_S1015); - - return SQL_ERROR; - } - - /* call driver's function */ - hproc = _iodbcdm_getproc (pstmt->hdbc, en_GetCursorName); - - if (hproc == SQL_NULL_HPROC) - { - PUSHSQLERR (pstmt->herr, en_IM001); - - return SQL_ERROR; - } - - CALL_DRIVER (pstmt->hdbc, retcode, hproc, en_GetCursorName, - (pstmt->dhstmt, szCursor, cbCursorMax, pcbCursor)) - - return retcode; -} - - -RETCODE SQL_API -SQLRowCount ( - HSTMT hstmt, - SDWORD FAR * pcrow) -{ - STMT_t FAR *pstmt = (STMT_t FAR *) hstmt; - HPROC hproc; - RETCODE retcode; - - if (hstmt == SQL_NULL_HSTMT || pstmt->hdbc == SQL_NULL_HDBC) - { - return SQL_INVALID_HANDLE; - } - - /* check state */ - if (pstmt->state >= en_stmt_needdata - || pstmt->state <= en_stmt_prepared - || pstmt->asyn_on != en_NullProc) - { - PUSHSQLERR (pstmt->herr, en_S1010); - - return SQL_ERROR; - } - - /* call driver */ - hproc = _iodbcdm_getproc (pstmt->hdbc, en_RowCount); - - if (hproc == SQL_NULL_HPROC) - { - PUSHSQLERR (pstmt->herr, en_IM001); - - return SQL_ERROR; - } - - CALL_DRIVER (pstmt->hdbc, retcode, hproc, en_RowCount, - (pstmt->dhstmt, pcrow)) - - return retcode; -} - - -RETCODE SQL_API -SQLNumResultCols ( - HSTMT hstmt, - SWORD FAR * pccol) -{ - STMT_t FAR *pstmt = (STMT_t FAR *) hstmt; - HPROC hproc; - RETCODE retcode; - SWORD ccol; - - if (hstmt == SQL_NULL_HSTMT || pstmt->hdbc == SQL_NULL_HDBC) - { - return SQL_INVALID_HANDLE; - } - - /* check state */ - if (pstmt->asyn_on == en_NullProc) - { - if (pstmt->state == en_stmt_allocated - || pstmt->state >= en_stmt_needdata) - { - PUSHSQLERR (pstmt->herr, en_S1010); - return SQL_ERROR; - } - } - else if (pstmt->asyn_on != en_NumResultCols) - { - PUSHSQLERR (pstmt->herr, en_S1010); - - return SQL_ERROR; - } - - /* call driver */ - hproc = _iodbcdm_getproc (pstmt->hdbc, en_NumResultCols); - - if (hproc == SQL_NULL_HPROC) - { - PUSHSQLERR (pstmt->herr, en_IM001); - - return SQL_ERROR; - } - - CALL_DRIVER (pstmt->hdbc, retcode, hproc, en_NumResultCols, - (pstmt->dhstmt, &ccol)) - - /* state transition */ - if (pstmt->asyn_on == en_NumResultCols) - { - switch (retcode) - { - case SQL_SUCCESS: - case SQL_SUCCESS_WITH_INFO: - case SQL_ERROR: - pstmt->asyn_on = en_NullProc; - - case SQL_STILL_EXECUTING: - default: - break; - } - } - - switch (retcode) - { - case SQL_SUCCESS: - case SQL_SUCCESS_WITH_INFO: - break; - - case SQL_STILL_EXECUTING: - ccol = 0; - pstmt->asyn_on = en_NumResultCols; - break; - - default: - ccol = 0; - break; - } - - if (pccol) - { - *pccol = ccol; - } - - return retcode; -} - - -RETCODE SQL_API -SQLDescribeCol ( - HSTMT hstmt, - UWORD icol, - UCHAR FAR * szColName, - SWORD cbColNameMax, - SWORD FAR * pcbColName, - SWORD FAR * pfSqlType, - UDWORD FAR * pcbColDef, - SWORD FAR * pibScale, - SWORD FAR * pfNullable) -{ - STMT_t FAR *pstmt = (STMT_t FAR *) hstmt; - HPROC hproc; - RETCODE retcode; - int sqlstat = en_00000; - - if (hstmt == SQL_NULL_HSTMT - || pstmt->hdbc == SQL_NULL_HDBC) - { - return SQL_INVALID_HANDLE; - } - - /* check arguments */ - if (icol == 0) - { - sqlstat = en_S1002; - } - else if (cbColNameMax < 0) - { - sqlstat = en_S1090; - } - - if (sqlstat != en_00000) - { - PUSHSQLERR (pstmt->herr, sqlstat); - - return SQL_ERROR; - } - - /* check state */ - if (pstmt->asyn_on == en_NullProc) - { - if (pstmt->asyn_on == en_stmt_allocated - || pstmt->asyn_on >= en_stmt_needdata) - { - sqlstat = en_S1010; - } - } - else if (pstmt->asyn_on != en_DescribeCol) - { - sqlstat = en_S1010; - } - - if (sqlstat != en_00000) - { - PUSHSQLERR (pstmt->herr, sqlstat); - - return SQL_ERROR; - } - - /* call driver */ - hproc = _iodbcdm_getproc (pstmt->hdbc, en_DescribeCol); - - if (hproc == SQL_NULL_HPROC) - { - PUSHSQLERR (pstmt->herr, en_IM001); - - return SQL_ERROR; - } - - CALL_DRIVER (pstmt->hdbc, retcode, hproc, en_DescribeCol, - (pstmt->dhstmt, icol, szColName, cbColNameMax, pcbColName, - pfSqlType, pcbColDef, pibScale, pfNullable)) - - /* state transition */ - if (pstmt->asyn_on == en_DescribeCol) - { - switch (retcode) - { - case SQL_SUCCESS: - case SQL_SUCCESS_WITH_INFO: - case SQL_ERROR: - pstmt->asyn_on = en_NullProc; - break; - - default: - return retcode; - } - } - - switch (pstmt->state) - { - case en_stmt_prepared: - case en_stmt_cursoropen: - case en_stmt_fetched: - case en_stmt_xfetched: - if (retcode == SQL_STILL_EXECUTING) - { - pstmt->asyn_on = en_DescribeCol; - } - break; - - default: - break; - } - - return retcode; -} - - -RETCODE SQL_API -SQLColAttributes ( - HSTMT hstmt, - UWORD icol, - UWORD fDescType, - PTR rgbDesc, - SWORD cbDescMax, - SWORD FAR * pcbDesc, - SDWORD FAR * pfDesc) -{ - STMT_t FAR *pstmt = (STMT_t FAR *) hstmt; - HPROC hproc; - RETCODE retcode; - int sqlstat = en_00000; - - if (hstmt == SQL_NULL_HSTMT || pstmt->hdbc == SQL_NULL_HDBC) - { - return SQL_INVALID_HANDLE; - } - - /* check arguments */ - if (icol == 0 && fDescType != SQL_COLUMN_COUNT) - { - sqlstat = en_S1002; - } - else if (cbDescMax < 0) - { - sqlstat = en_S1090; - } - else if ( /* fDescType < SQL_COLATT_OPT_MIN || *//* turnoff warning */ - (fDescType > SQL_COLATT_OPT_MAX - && fDescType < SQL_COLUMN_DRIVER_START)) - { - sqlstat = en_S1091; - } - - if (sqlstat != en_00000) - { - PUSHSQLERR (pstmt->herr, sqlstat); - - return SQL_ERROR; - } - - /* check state */ - if (pstmt->asyn_on == en_NullProc) - { - if (pstmt->asyn_on == en_stmt_allocated - || pstmt->asyn_on >= en_stmt_needdata) - { - sqlstat = en_S1010; - } - } - else if (pstmt->asyn_on != en_ColAttributes) - { - sqlstat = en_S1010; - } - - if (sqlstat != en_00000) - { - PUSHSQLERR (pstmt->herr, sqlstat); - - return SQL_ERROR; - } - - /* call driver */ - hproc = _iodbcdm_getproc (pstmt->hdbc, en_ColAttributes); - - if (hproc == SQL_NULL_HPROC) - { - PUSHSQLERR (pstmt->herr, en_IM001); - - return SQL_ERROR; - } - - CALL_DRIVER (pstmt->hdbc, retcode, hproc, en_ColAttributes, - (pstmt->dhstmt, icol, fDescType, rgbDesc, cbDescMax, pcbDesc, pfDesc)) - - /* state transition */ - if (pstmt->asyn_on == en_ColAttributes) - { - switch (retcode) - { - case SQL_SUCCESS: - case SQL_SUCCESS_WITH_INFO: - case SQL_ERROR: - pstmt->asyn_on = en_NullProc; - break; - - default: - return retcode; - } - } - - switch (pstmt->state) - { - case en_stmt_prepared: - case en_stmt_cursoropen: - case en_stmt_fetched: - case en_stmt_xfetched: - if (retcode == SQL_STILL_EXECUTING) - { - pstmt->asyn_on = en_ColAttributes; - } - break; - - default: - break; - } - - return retcode; -} diff --git a/src/iodbc/shrsub.exp b/src/iodbc/shrsub.exp deleted file mode 100644 index 1fe3ec7de9..0000000000 --- a/src/iodbc/shrsub.exp +++ /dev/null @@ -1,64 +0,0 @@ -SQLAllocEnv -SQLAllocConnect -SQLConnect -SQLDriverConnect -SQLBrowseConnect - -SQLDataSources -SQLDrivers -SQLGetInfo -SQLGetFunctions -SQLGetTypeInfo - -SQLSetConnectOption -SQLGetConnectOption -SQLSetStmtOption -SQLGetStmtOption - -SQLAllocStmt -SQLPrepare -SQLBindParameter -SQLParamOptions -SQLGetCursorName -SQLSetCursorName -SQLSetScrollOptions -SQLSetParam - -SQLExecute -SQLExecDirect -SQLNativeSql -SQLDescribeParam -SQLNumParams -SQLParamData -SQLPutData - -SQLRowCount -SQLNumResultCols -SQLDescribeCol -SQLColAttributes -SQLBindCol -SQLFetch -SQLExtendedFetch -SQLGetData -SQLSetPos -SQLMoreResults -SQLError - -SQLColumnPrivileges -SQLColumns -SQLForeignKeys -SQLPrimaryKeys -SQLProcedureColumns -SQLProcedures -SQLSpecialColumns -SQLStatistics -SQLTablePrivileges -SQLTables - -SQLFreeStmt -SQLCancel -SQLTransact - -SQLDisconnect -SQLFreeConnect -SQLFreeEnv diff --git a/src/mac/accel.cpp b/src/mac/accel.cpp deleted file mode 100644 index b0b8734d55..0000000000 --- a/src/mac/accel.cpp +++ /dev/null @@ -1,93 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: accel.cpp -// Purpose: wxAcceleratorTable -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "accel.h" -#endif - -#include "wx/setup.h" -#include "wx/accel.h" -#include "wx/string.h" - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxAcceleratorTable, wxObject) -#endif - -class WXDLLEXPORT wxAcceleratorRefData: public wxObjectRefData -{ - friend class WXDLLEXPORT wxAcceleratorTable; -public: - wxAcceleratorRefData(); - ~wxAcceleratorRefData(); - -/* TODO: implementation - inline HACCEL GetHACCEL() const { return m_hAccel; } -protected: - HACCEL m_hAccel; -*/ -}; - -#define M_ACCELDATA ((wxAcceleratorRefData *)m_refData) - -wxAcceleratorRefData::wxAcceleratorRefData() -{ - // TODO -/* - HACCEL m_hAccel; -*/ -} - -wxAcceleratorRefData::~wxAcceleratorRefData() -{ -/* - if (m_hAccel) - { - DestroyAcceleratorTable((HACCEL) m_hAccel); - } - m_hAccel = 0 ; -*/ -} - -wxAcceleratorTable::wxAcceleratorTable() -{ - m_refData = NULL; -} - -wxAcceleratorTable::~wxAcceleratorTable() -{ -} - -// Load from .rc resource -wxAcceleratorTable::wxAcceleratorTable(const wxString& resource) -{ - m_refData = new wxAcceleratorRefData; - -/* TODO: load acelerator from resource, if appropriate for your platform - M_ACCELDATA->m_hAccel = hAccel; - M_ACCELDATA->m_ok = (hAccel != 0); -*/ -} - -// Create from an array -wxAcceleratorTable::wxAcceleratorTable(int n, wxAcceleratorEntry entries[]) -{ - m_refData = new wxAcceleratorRefData; - -/* TODO: create table from entries - */ -} - -bool wxAcceleratorTable::Ok() const -{ - // TODO - return FALSE; -} - diff --git a/src/mac/app.cpp b/src/mac/app.cpp deleted file mode 100644 index b04a01bbe2..0000000000 --- a/src/mac/app.cpp +++ /dev/null @@ -1,391 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: app.cpp -// Purpose: wxApp -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "app.h" -#endif - -#include "wx/frame.h" -#include "wx/app.h" -#include "wx/utils.h" -#include "wx/gdicmn.h" -#include "wx/pen.h" -#include "wx/brush.h" -#include "wx/cursor.h" -#include "wx/icon.h" -#include "wx/palette.h" -#include "wx/dc.h" -#include "wx/dialog.h" -#include "wx/msgdlg.h" -#include "wx/log.h" -#include "wx/module.h" -#include "wx/memory.h" - -#if wxUSE_WX_RESOURCES -#include "wx/resource.h" -#endif - -#include - -extern char *wxBuffer; -extern wxList wxPendingDelete; - -wxApp *wxTheApp = NULL; - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxApp, wxEvtHandler) -BEGIN_EVENT_TABLE(wxApp, wxEvtHandler) - EVT_IDLE(wxApp::OnIdle) -END_EVENT_TABLE() -#endif - -long wxApp::sm_lastMessageTime = 0; - -bool wxApp::Initialize() -{ -#ifdef __WXMSW__ - wxBuffer = new char[1500]; -#else - wxBuffer = new char[BUFSIZ + 512]; -#endif - -/* No longer used -#if (defined(__WXDEBUG__) && wxUSE_MEMORY_TRACING) || wxUSE_DEBUG_CONTEXT - - streambuf* sBuf = new wxDebugStreamBuf; - ostream* oStr = new ostream(sBuf) ; - wxDebugContext::SetStream(oStr, sBuf); -#endif -*/ - - wxClassInfo::InitializeClasses(); - - wxTheColourDatabase = new wxColourDatabase(wxKEY_STRING); - wxTheColourDatabase->Initialize(); - - wxInitializeStockLists(); - wxInitializeStockObjects(); - -#if wxUSE_WX_RESOURCES - wxInitializeResourceSystem(); -#endif - - wxBitmap::InitStandardHandlers(); - - wxModule::RegisterModules(); - wxASSERT( wxModule::InitializeModules() == TRUE ); - - return TRUE; -} - -void wxApp::CleanUp() -{ - wxModule::CleanUpModules(); - -#if wxUSE_WX_RESOURCES - wxCleanUpResourceSystem(); -#endif - - wxDeleteStockObjects() ; - - // Destroy all GDI lists, etc. - - delete wxTheBrushList; - wxTheBrushList = NULL; - - delete wxThePenList; - wxThePenList = NULL; - - delete wxTheFontList; - wxTheFontList = NULL; - - delete wxTheBitmapList; - wxTheBitmapList = NULL; - - delete wxTheColourDatabase; - wxTheColourDatabase = NULL; - - wxBitmap::CleanUpHandlers(); - - delete[] wxBuffer; - wxBuffer = NULL; - - wxClassInfo::CleanUpClasses(); - - delete wxTheApp; - wxTheApp = NULL; - -#if (defined(__WXDEBUG__) && wxUSE_MEMORY_TRACING) || wxUSE_DEBUG_CONTEXT - // At this point we want to check if there are any memory - // blocks that aren't part of the wxDebugContext itself, - // as a special case. Then when dumping we need to ignore - // wxDebugContext, too. - if (wxDebugContext::CountObjectsLeft() > 0) - { - wxTrace("There were memory leaks.\n"); - wxDebugContext::Dump(); - wxDebugContext::PrintStatistics(); - } -// wxDebugContext::SetStream(NULL, NULL); -#endif - - // do it as the very last thing because everything else can log messages - wxLog::DontCreateOnDemand(); - // do it as the very last thing because everything else can log messages - delete wxLog::SetActiveTarget(NULL); -} - -int wxEntry( int argc, char *argv[] ) -{ - if (!wxApp::Initialize()) - return FALSE; - if (!wxTheApp) - { - if (!wxApp::GetInitializerFunction()) - { - printf( "wxWindows error: No initializer - use IMPLEMENT_APP macro.\n" ); - return 0; - }; - - wxTheApp = (wxApp*) (* wxApp::GetInitializerFunction()) (); - }; - - if (!wxTheApp) - { - printf( "wxWindows error: wxTheApp == NULL\n" ); - return 0; - }; - - wxTheApp->argc = argc; - wxTheApp->argv = argv; - - // GUI-specific initialization, such as creating an app context. - wxTheApp->OnInitGui(); - - // Here frames insert themselves automatically - // into wxTopLevelWindows by getting created - // in OnInit(). - - if (!wxTheApp->OnInit()) return 0; - - int retValue = 0; - - if (wxTheApp->Initialized()) retValue = wxTheApp->OnRun(); - - if (wxTheApp->GetTopWindow()) - { - delete wxTheApp->GetTopWindow(); - wxTheApp->SetTopWindow(NULL); - } - - wxTheApp->DeletePendingObjects(); - - wxTheApp->OnExit(); - - wxApp::CleanUp(); - - return retValue; -}; - -// Static member initialization -wxAppInitializerFunction wxApp::m_appInitFn = (wxAppInitializerFunction) NULL; - -wxApp::wxApp() -{ - m_topWindow = NULL; - wxTheApp = this; - m_className = ""; - m_wantDebugOutput = TRUE ; - m_appName = ""; - argc = 0; - argv = NULL; -#ifdef __WXMSW__ - m_printMode = wxPRINT_WINDOWS; -#else - m_printMode = wxPRINT_POSTSCRIPT; -#endif - m_exitOnFrameDelete = TRUE; - m_auto3D = TRUE; -} - -bool wxApp::Initialized() -{ - if (GetTopWindow()) - return TRUE; - else - return FALSE; -} - -int wxApp::MainLoop() -{ - m_keepGoing = TRUE; - -/* TODO: implement your main loop here, calling ProcessIdle in idle time. - while (m_keepGoing) - { - while (!::PeekMessage(&s_currentMsg, 0, 0, 0, PM_NOREMOVE) && - ProcessIdle()) {} - if (!DoMessage()) - m_keepGoing = FALSE; - } -*/ - - return 0; -} - -// Returns TRUE if more time is needed. -bool wxApp::ProcessIdle() -{ - wxIdleEvent event; - event.SetEventObject(this); - ProcessEvent(event); - - return event.MoreRequested(); -} - -void wxApp::ExitMainLoop() -{ - m_keepGoing = FALSE; -} - -// Is a message/event pending? -bool wxApp::Pending() -{ -/* TODO. - */ - return FALSE; -} - -// Dispatch a message. -void wxApp::Dispatch() -{ -/* TODO. - */ -} - -void wxApp::OnIdle(wxIdleEvent& event) -{ - static bool inOnIdle = FALSE; - - // Avoid recursion (via ProcessEvent default case) - if (inOnIdle) - return; - - inOnIdle = TRUE; - - // 'Garbage' collection of windows deleted with Close(). - DeletePendingObjects(); - - // flush the logged messages if any - wxLog *pLog = wxLog::GetActiveTarget(); - if ( pLog != NULL && pLog->HasPendingMessages() ) - pLog->Flush(); - - // Send OnIdle events to all windows - bool needMore = SendIdleEvents(); - - if (needMore) - event.RequestMore(TRUE); - - inOnIdle = FALSE; -} - -// Send idle event to all top-level windows -bool wxApp::SendIdleEvents() -{ - bool needMore = FALSE; - wxNode* node = wxTopLevelWindows.First(); - while (node) - { - wxWindow* win = (wxWindow*) node->Data(); - if (SendIdleEvents(win)) - needMore = TRUE; - - node = node->Next(); - } - return needMore; -} - -// Send idle event to window and all subwindows -bool wxApp::SendIdleEvents(wxWindow* win) -{ - bool needMore = FALSE; - - wxIdleEvent event; - event.SetEventObject(win); - win->ProcessEvent(event); - - if (event.MoreRequested()) - needMore = TRUE; - - wxNode* node = win->GetChildren().First(); - while (node) - { - wxWindow* win = (wxWindow*) node->Data(); - if (SendIdleEvents(win)) - needMore = TRUE; - - node = node->Next(); - } - return needMore ; -} - -void wxApp::DeletePendingObjects() -{ - wxNode *node = wxPendingDelete.First(); - while (node) - { - wxObject *obj = (wxObject *)node->Data(); - - delete obj; - - if (wxPendingDelete.Member(obj)) - delete node; - - // Deleting one object may have deleted other pending - // objects, so start from beginning of list again. - node = wxPendingDelete.First(); - } -} - -wxLog* wxApp::CreateLogTarget() -{ - return new wxLogGui; -} - -wxWindow* wxApp::GetTopWindow() const -{ - if (m_topWindow) - return m_topWindow; - else if (wxTopLevelWindows.Number() > 0) - return (wxWindow*) wxTopLevelWindows.First()->Data(); - else - return NULL; -} - -void wxExit() -{ - wxApp::CleanUp(); -/* - * TODO: Exit in some platform-specific way. Not recommended that the app calls this: - * only for emergencies. - */ -} - -// Yield to other processes -bool wxYield() -{ - /* - * TODO - */ - return TRUE; -} - diff --git a/src/mac/bitmap.cpp b/src/mac/bitmap.cpp deleted file mode 100644 index 1e6255f551..0000000000 --- a/src/mac/bitmap.cpp +++ /dev/null @@ -1,430 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: bitmap.cpp -// Purpose: wxBitmap -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "bitmap.h" -#endif - -#include "wx/setup.h" -#include "wx/utils.h" -#include "wx/palette.h" -#include "wx/bitmap.h" -#include "wx/icon.h" -#include "wx/log.h" - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxBitmap, wxGDIObject) -IMPLEMENT_DYNAMIC_CLASS(wxMask, wxObject) -#endif - -wxBitmapRefData::wxBitmapRefData() -{ - m_ok = FALSE; - m_width = 0; - m_height = 0; - m_depth = 0; - m_quality = 0; - m_numColors = 0; - m_bitmapMask = NULL; -} - -wxBitmapRefData::~wxBitmapRefData() -{ - /* - * TODO: delete the bitmap data here. - */ - - if (m_bitmapMask) - delete m_bitmapMask; - m_bitmapMask = NULL; -} - -wxList wxBitmap::sm_handlers; - -wxBitmap::wxBitmap() -{ - m_refData = NULL; - - if ( wxTheBitmapList ) - wxTheBitmapList->AddBitmap(this); -} - -wxBitmap::~wxBitmap() -{ - if (wxTheBitmapList) - wxTheBitmapList->DeleteObject(this); -} - -wxBitmap::wxBitmap(const char bits[], int the_width, int the_height, int no_bits) -{ - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_width = the_width ; - M_BITMAPDATA->m_height = the_height ; - M_BITMAPDATA->m_depth = no_bits ; - M_BITMAPDATA->m_numColors = 0; - - /* TODO: create the bitmap from data */ - - if ( wxTheBitmapList ) - wxTheBitmapList->AddBitmap(this); -} - -wxBitmap::wxBitmap(int w, int h, int d) -{ - (void)Create(w, h, d); - - if ( wxTheBitmapList ) - wxTheBitmapList->AddBitmap(this); -} - -wxBitmap::wxBitmap(void *data, long type, int width, int height, int depth) -{ - (void) Create(data, type, width, height, depth); - - if ( wxTheBitmapList ) - wxTheBitmapList->AddBitmap(this); -} - -wxBitmap::wxBitmap(const wxString& filename, long type) -{ - LoadFile(filename, (int)type); - - if ( wxTheBitmapList ) - wxTheBitmapList->AddBitmap(this); -} - -/* TODO: maybe allow creation from XPM -// Create from data -wxBitmap::wxBitmap(const char **data) -{ - (void) Create((void *)data, wxBITMAP_TYPE_XPM_DATA, 0, 0, 0); -} -*/ - -bool wxBitmap::Create(int w, int h, int d) -{ - UnRef(); - - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_width = w; - M_BITMAPDATA->m_height = h; - M_BITMAPDATA->m_depth = d; - - /* TODO: create new bitmap */ - - return M_BITMAPDATA->m_ok; -} - -bool wxBitmap::LoadFile(const wxString& filename, long type) -{ - UnRef(); - - m_refData = new wxBitmapRefData; - - wxBitmapHandler *handler = FindHandler(type); - - if ( handler == NULL ) { - wxLogWarning("no bitmap handler for type %d defined.", type); - - return FALSE; - } - - return handler->LoadFile(this, filename, type, -1, -1); -} - -bool wxBitmap::Create(void *data, long type, int width, int height, int depth) -{ - UnRef(); - - m_refData = new wxBitmapRefData; - - wxBitmapHandler *handler = FindHandler(type); - - if ( handler == NULL ) { - wxLogWarning("no bitmap handler for type %d defined.", type); - - return FALSE; - } - - return handler->Create(this, data, type, width, height, depth); -} - -bool wxBitmap::SaveFile(const wxString& filename, int type, const wxPalette *palette) -{ - wxBitmapHandler *handler = FindHandler(type); - - if ( handler == NULL ) { - wxLogWarning("no bitmap handler for type %d defined.", type); - - return FALSE; - } - - return handler->SaveFile(this, filename, type, palette); -} - -void wxBitmap::SetWidth(int w) -{ - if (!M_BITMAPDATA) - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_width = w; -} - -void wxBitmap::SetHeight(int h) -{ - if (!M_BITMAPDATA) - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_height = h; -} - -void wxBitmap::SetDepth(int d) -{ - if (!M_BITMAPDATA) - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_depth = d; -} - -void wxBitmap::SetQuality(int q) -{ - if (!M_BITMAPDATA) - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_quality = q; -} - -void wxBitmap::SetOk(bool isOk) -{ - if (!M_BITMAPDATA) - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_ok = isOk; -} - -void wxBitmap::SetPalette(const wxPalette& palette) -{ - if (!M_BITMAPDATA) - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_bitmapPalette = palette ; -} - -void wxBitmap::SetMask(wxMask *mask) -{ - if (!M_BITMAPDATA) - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_bitmapMask = mask ; -} - -void wxBitmap::AddHandler(wxBitmapHandler *handler) -{ - sm_handlers.Append(handler); -} - -void wxBitmap::InsertHandler(wxBitmapHandler *handler) -{ - sm_handlers.Insert(handler); -} - -bool wxBitmap::RemoveHandler(const wxString& name) -{ - wxBitmapHandler *handler = FindHandler(name); - if ( handler ) - { - sm_handlers.DeleteObject(handler); - return TRUE; - } - else - return FALSE; -} - -wxBitmapHandler *wxBitmap::FindHandler(const wxString& name) -{ - wxNode *node = sm_handlers.First(); - while ( node ) - { - wxBitmapHandler *handler = (wxBitmapHandler *)node->Data(); - if ( handler->GetName() == name ) - return handler; - node = node->Next(); - } - return NULL; -} - -wxBitmapHandler *wxBitmap::FindHandler(const wxString& extension, long bitmapType) -{ - wxNode *node = sm_handlers.First(); - while ( node ) - { - wxBitmapHandler *handler = (wxBitmapHandler *)node->Data(); - if ( handler->GetExtension() == extension && - (bitmapType == -1 || handler->GetType() == bitmapType) ) - return handler; - node = node->Next(); - } - return NULL; -} - -wxBitmapHandler *wxBitmap::FindHandler(long bitmapType) -{ - wxNode *node = sm_handlers.First(); - while ( node ) - { - wxBitmapHandler *handler = (wxBitmapHandler *)node->Data(); - if (handler->GetType() == bitmapType) - return handler; - node = node->Next(); - } - return NULL; -} - -/* - * wxMask - */ - -wxMask::wxMask() -{ -/* TODO - m_maskBitmap = 0; -*/ -} - -// Construct a mask from a bitmap and a colour indicating -// the transparent area -wxMask::wxMask(const wxBitmap& bitmap, const wxColour& colour) -{ -/* TODO - m_maskBitmap = 0; -*/ - Create(bitmap, colour); -} - -// Construct a mask from a bitmap and a palette index indicating -// the transparent area -wxMask::wxMask(const wxBitmap& bitmap, int paletteIndex) -{ -/* TODO - m_maskBitmap = 0; -*/ - - Create(bitmap, paletteIndex); -} - -// Construct a mask from a mono bitmap (copies the bitmap). -wxMask::wxMask(const wxBitmap& bitmap) -{ -/* TODO - m_maskBitmap = 0; -*/ - - Create(bitmap); -} - -wxMask::~wxMask() -{ -// TODO: delete mask bitmap -} - -// Create a mask from a mono bitmap (copies the bitmap). -bool wxMask::Create(const wxBitmap& bitmap) -{ -// TODO - return FALSE; -} - -// Create a mask from a bitmap and a palette index indicating -// the transparent area -bool wxMask::Create(const wxBitmap& bitmap, int paletteIndex) -{ -// TODO - return FALSE; -} - -// Create a mask from a bitmap and a colour indicating -// the transparent area -bool wxMask::Create(const wxBitmap& bitmap, const wxColour& colour) -{ -// TODO - return FALSE; -} - -/* - * wxBitmapHandler - */ - -IMPLEMENT_DYNAMIC_CLASS(wxBitmapHandler, wxObject) - -bool wxBitmapHandler::Create(wxBitmap *bitmap, void *data, long type, int width, int height, int depth) -{ - return FALSE; -} - -bool wxBitmapHandler::LoadFile(wxBitmap *bitmap, const wxString& name, long type, - int desiredWidth, int desiredHeight) -{ - return FALSE; -} - -bool wxBitmapHandler::SaveFile(wxBitmap *bitmap, const wxString& name, int type, const wxPalette *palette) -{ - return FALSE; -} - -/* - * Standard handlers - */ - -/* TODO: bitmap handlers, a bit like this: -class WXDLLEXPORT wxBMPResourceHandler: public wxBitmapHandler -{ - DECLARE_DYNAMIC_CLASS(wxBMPResourceHandler) -public: - inline wxBMPResourceHandler() - { - m_name = "Windows bitmap resource"; - m_extension = ""; - m_type = wxBITMAP_TYPE_BMP_RESOURCE; - }; - - virtual bool LoadFile(wxBitmap *bitmap, const wxString& name, long flags, - int desiredWidth, int desiredHeight); -}; -IMPLEMENT_DYNAMIC_CLASS(wxBMPResourceHandler, wxBitmapHandler) -*/ - -void wxBitmap::CleanUpHandlers() -{ - wxNode *node = sm_handlers.First(); - while ( node ) - { - wxBitmapHandler *handler = (wxBitmapHandler *)node->Data(); - wxNode *next = node->Next(); - delete handler; - delete node; - node = next; - } -} - -void wxBitmap::InitStandardHandlers() -{ -/* TODO: initialize all standard bitmap or derive class handlers here. - AddHandler(new wxBMPResourceHandler); - AddHandler(new wxBMPFileHandler); - AddHandler(new wxXPMFileHandler); - AddHandler(new wxXPMDataHandler); - AddHandler(new wxICOResourceHandler); - AddHandler(new wxICOFileHandler); -*/ -} diff --git a/src/mac/bmpbuttn.cpp b/src/mac/bmpbuttn.cpp deleted file mode 100644 index 169f0d557a..0000000000 --- a/src/mac/bmpbuttn.cpp +++ /dev/null @@ -1,65 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: bmpbuttn.cpp -// Purpose: wxBitmapButton -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "bmpbuttn.h" -#endif - -#include "wx/bmpbuttn.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxBitmapButton, wxButton) -#endif - -bool wxBitmapButton::Create(wxWindow *parent, wxWindowID id, const wxBitmap& bitmap, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - m_buttonBitmap = bitmap; - SetName(name); - SetValidator(validator); - parent->AddChild(this); - - m_backgroundColour = parent->GetBackgroundColour() ; - m_foregroundColour = parent->GetForegroundColour() ; - m_windowStyle = style; - m_marginX = 0; - m_marginY = 0; - - int x = pos.x; - int y = pos.y; - int width = size.x; - int height = size.y; - - if (id == -1) - m_windowId = NewControlId(); - else - m_windowId = id; - - if ( width == -1 && bitmap.Ok()) - width = bitmap.GetWidth() + 2*m_marginX; - - if ( height == -1 && bitmap.Ok()) - height = bitmap.GetHeight() + 2*m_marginY; - - /* TODO: create bitmap button - */ - - return FALSE; -} - -void wxBitmapButton::SetBitmapLabel(const wxBitmap& bitmap) -{ - m_buttonBitmap = bitmap; -} - diff --git a/src/mac/brush.cpp b/src/mac/brush.cpp deleted file mode 100644 index 4f28e92f53..0000000000 --- a/src/mac/brush.cpp +++ /dev/null @@ -1,140 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: brush.cpp -// Purpose: wxBrush -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "brush.h" -#endif - -#include "wx/setup.h" -#include "wx/utils.h" -#include "wx/brush.h" - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxBrush, wxGDIObject) -#endif - -wxBrushRefData::wxBrushRefData() -{ - m_style = wxSOLID; -// TODO: null data -} - -wxBrushRefData::wxBrushRefData(const wxBrushRefData& data) -{ - m_style = data.m_style; - m_stipple = data.m_stipple; - m_colour = data.m_colour; -/* TODO: null data - m_hBrush = 0; -*/ -} - -wxBrushRefData::~wxBrushRefData() -{ -// TODO: delete data -} - -// Brushes -wxBrush::wxBrush() -{ - if ( wxTheBrushList ) - wxTheBrushList->AddBrush(this); -} - -wxBrush::~wxBrush() -{ - if ( wxTheBrushList ) - wxTheBrushList->RemoveBrush(this); -} - -wxBrush::wxBrush(const wxColour& col, int Style) -{ - m_refData = new wxBrushRefData; - - M_BRUSHDATA->m_colour = col; - M_BRUSHDATA->m_style = Style; - - RealizeResource(); - - if ( wxTheBrushList ) - wxTheBrushList->AddBrush(this); -} - -wxBrush::wxBrush(const wxBitmap& stipple) -{ - m_refData = new wxBrushRefData; - - M_BRUSHDATA->m_style = wxSTIPPLE; - M_BRUSHDATA->m_stipple = stipple; - - RealizeResource(); - - if ( wxTheBrushList ) - wxTheBrushList->AddBrush(this); -} - -void wxBrush::Unshare() -{ - // Don't change shared data - if (!m_refData) - { - m_refData = new wxBrushRefData(); - } - else - { - wxBrushRefData* ref = new wxBrushRefData(*(wxBrushRefData*)m_refData); - UnRef(); - m_refData = ref; - } -} - -void wxBrush::SetColour(const wxColour& col) -{ - Unshare(); - - M_BRUSHDATA->m_colour = col; - - RealizeResource(); -} - -void wxBrush::SetColour(unsigned char r, unsigned char g, unsigned char b) -{ - Unshare(); - - M_BRUSHDATA->m_colour.Set(r, g, b); - - RealizeResource(); -} - -void wxBrush::SetStyle(int Style) -{ - Unshare(); - - M_BRUSHDATA->m_style = Style; - - RealizeResource(); -} - -void wxBrush::SetStipple(const wxBitmap& Stipple) -{ - Unshare(); - - M_BRUSHDATA->m_stipple = Stipple; - - RealizeResource(); -} - -bool wxBrush::RealizeResource() -{ -// TODO: create the brush - return FALSE; -} - diff --git a/src/mac/button.cpp b/src/mac/button.cpp deleted file mode 100644 index befd0d7156..0000000000 --- a/src/mac/button.cpp +++ /dev/null @@ -1,75 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: button.cpp -// Purpose: wxButton -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "button.h" -#endif - -#include "wx/button.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxButton, wxControl) -#endif - -// Button - -bool wxButton::Create(wxWindow *parent, wxWindowID id, const wxString& label, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); - SetValidator(validator); - m_windowStyle = style; - - parent->AddChild((wxButton *)this); - - if (id == -1) - m_windowId = NewControlId(); - else - m_windowId = id; - - // TODO: create button - - return FALSE; -} - -void wxButton::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -void wxButton::SetDefault() -{ - wxWindow *parent = (wxWindow *)GetParent(); - if (parent) - parent->SetDefaultItem(this); - - // TODO: make button the default -} - -wxString wxButton::GetLabel() const -{ - // TODO - return wxString(""); -} - -void wxButton::SetLabel(const wxString& label) -{ - // TODO -} - -void wxButton::Command (wxCommandEvent & event) -{ - ProcessCommand (event); -} - diff --git a/src/mac/carbon/accel.cpp b/src/mac/carbon/accel.cpp deleted file mode 100644 index b0b8734d55..0000000000 --- a/src/mac/carbon/accel.cpp +++ /dev/null @@ -1,93 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: accel.cpp -// Purpose: wxAcceleratorTable -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "accel.h" -#endif - -#include "wx/setup.h" -#include "wx/accel.h" -#include "wx/string.h" - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxAcceleratorTable, wxObject) -#endif - -class WXDLLEXPORT wxAcceleratorRefData: public wxObjectRefData -{ - friend class WXDLLEXPORT wxAcceleratorTable; -public: - wxAcceleratorRefData(); - ~wxAcceleratorRefData(); - -/* TODO: implementation - inline HACCEL GetHACCEL() const { return m_hAccel; } -protected: - HACCEL m_hAccel; -*/ -}; - -#define M_ACCELDATA ((wxAcceleratorRefData *)m_refData) - -wxAcceleratorRefData::wxAcceleratorRefData() -{ - // TODO -/* - HACCEL m_hAccel; -*/ -} - -wxAcceleratorRefData::~wxAcceleratorRefData() -{ -/* - if (m_hAccel) - { - DestroyAcceleratorTable((HACCEL) m_hAccel); - } - m_hAccel = 0 ; -*/ -} - -wxAcceleratorTable::wxAcceleratorTable() -{ - m_refData = NULL; -} - -wxAcceleratorTable::~wxAcceleratorTable() -{ -} - -// Load from .rc resource -wxAcceleratorTable::wxAcceleratorTable(const wxString& resource) -{ - m_refData = new wxAcceleratorRefData; - -/* TODO: load acelerator from resource, if appropriate for your platform - M_ACCELDATA->m_hAccel = hAccel; - M_ACCELDATA->m_ok = (hAccel != 0); -*/ -} - -// Create from an array -wxAcceleratorTable::wxAcceleratorTable(int n, wxAcceleratorEntry entries[]) -{ - m_refData = new wxAcceleratorRefData; - -/* TODO: create table from entries - */ -} - -bool wxAcceleratorTable::Ok() const -{ - // TODO - return FALSE; -} - diff --git a/src/mac/carbon/app.cpp b/src/mac/carbon/app.cpp deleted file mode 100644 index b04a01bbe2..0000000000 --- a/src/mac/carbon/app.cpp +++ /dev/null @@ -1,391 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: app.cpp -// Purpose: wxApp -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "app.h" -#endif - -#include "wx/frame.h" -#include "wx/app.h" -#include "wx/utils.h" -#include "wx/gdicmn.h" -#include "wx/pen.h" -#include "wx/brush.h" -#include "wx/cursor.h" -#include "wx/icon.h" -#include "wx/palette.h" -#include "wx/dc.h" -#include "wx/dialog.h" -#include "wx/msgdlg.h" -#include "wx/log.h" -#include "wx/module.h" -#include "wx/memory.h" - -#if wxUSE_WX_RESOURCES -#include "wx/resource.h" -#endif - -#include - -extern char *wxBuffer; -extern wxList wxPendingDelete; - -wxApp *wxTheApp = NULL; - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxApp, wxEvtHandler) -BEGIN_EVENT_TABLE(wxApp, wxEvtHandler) - EVT_IDLE(wxApp::OnIdle) -END_EVENT_TABLE() -#endif - -long wxApp::sm_lastMessageTime = 0; - -bool wxApp::Initialize() -{ -#ifdef __WXMSW__ - wxBuffer = new char[1500]; -#else - wxBuffer = new char[BUFSIZ + 512]; -#endif - -/* No longer used -#if (defined(__WXDEBUG__) && wxUSE_MEMORY_TRACING) || wxUSE_DEBUG_CONTEXT - - streambuf* sBuf = new wxDebugStreamBuf; - ostream* oStr = new ostream(sBuf) ; - wxDebugContext::SetStream(oStr, sBuf); -#endif -*/ - - wxClassInfo::InitializeClasses(); - - wxTheColourDatabase = new wxColourDatabase(wxKEY_STRING); - wxTheColourDatabase->Initialize(); - - wxInitializeStockLists(); - wxInitializeStockObjects(); - -#if wxUSE_WX_RESOURCES - wxInitializeResourceSystem(); -#endif - - wxBitmap::InitStandardHandlers(); - - wxModule::RegisterModules(); - wxASSERT( wxModule::InitializeModules() == TRUE ); - - return TRUE; -} - -void wxApp::CleanUp() -{ - wxModule::CleanUpModules(); - -#if wxUSE_WX_RESOURCES - wxCleanUpResourceSystem(); -#endif - - wxDeleteStockObjects() ; - - // Destroy all GDI lists, etc. - - delete wxTheBrushList; - wxTheBrushList = NULL; - - delete wxThePenList; - wxThePenList = NULL; - - delete wxTheFontList; - wxTheFontList = NULL; - - delete wxTheBitmapList; - wxTheBitmapList = NULL; - - delete wxTheColourDatabase; - wxTheColourDatabase = NULL; - - wxBitmap::CleanUpHandlers(); - - delete[] wxBuffer; - wxBuffer = NULL; - - wxClassInfo::CleanUpClasses(); - - delete wxTheApp; - wxTheApp = NULL; - -#if (defined(__WXDEBUG__) && wxUSE_MEMORY_TRACING) || wxUSE_DEBUG_CONTEXT - // At this point we want to check if there are any memory - // blocks that aren't part of the wxDebugContext itself, - // as a special case. Then when dumping we need to ignore - // wxDebugContext, too. - if (wxDebugContext::CountObjectsLeft() > 0) - { - wxTrace("There were memory leaks.\n"); - wxDebugContext::Dump(); - wxDebugContext::PrintStatistics(); - } -// wxDebugContext::SetStream(NULL, NULL); -#endif - - // do it as the very last thing because everything else can log messages - wxLog::DontCreateOnDemand(); - // do it as the very last thing because everything else can log messages - delete wxLog::SetActiveTarget(NULL); -} - -int wxEntry( int argc, char *argv[] ) -{ - if (!wxApp::Initialize()) - return FALSE; - if (!wxTheApp) - { - if (!wxApp::GetInitializerFunction()) - { - printf( "wxWindows error: No initializer - use IMPLEMENT_APP macro.\n" ); - return 0; - }; - - wxTheApp = (wxApp*) (* wxApp::GetInitializerFunction()) (); - }; - - if (!wxTheApp) - { - printf( "wxWindows error: wxTheApp == NULL\n" ); - return 0; - }; - - wxTheApp->argc = argc; - wxTheApp->argv = argv; - - // GUI-specific initialization, such as creating an app context. - wxTheApp->OnInitGui(); - - // Here frames insert themselves automatically - // into wxTopLevelWindows by getting created - // in OnInit(). - - if (!wxTheApp->OnInit()) return 0; - - int retValue = 0; - - if (wxTheApp->Initialized()) retValue = wxTheApp->OnRun(); - - if (wxTheApp->GetTopWindow()) - { - delete wxTheApp->GetTopWindow(); - wxTheApp->SetTopWindow(NULL); - } - - wxTheApp->DeletePendingObjects(); - - wxTheApp->OnExit(); - - wxApp::CleanUp(); - - return retValue; -}; - -// Static member initialization -wxAppInitializerFunction wxApp::m_appInitFn = (wxAppInitializerFunction) NULL; - -wxApp::wxApp() -{ - m_topWindow = NULL; - wxTheApp = this; - m_className = ""; - m_wantDebugOutput = TRUE ; - m_appName = ""; - argc = 0; - argv = NULL; -#ifdef __WXMSW__ - m_printMode = wxPRINT_WINDOWS; -#else - m_printMode = wxPRINT_POSTSCRIPT; -#endif - m_exitOnFrameDelete = TRUE; - m_auto3D = TRUE; -} - -bool wxApp::Initialized() -{ - if (GetTopWindow()) - return TRUE; - else - return FALSE; -} - -int wxApp::MainLoop() -{ - m_keepGoing = TRUE; - -/* TODO: implement your main loop here, calling ProcessIdle in idle time. - while (m_keepGoing) - { - while (!::PeekMessage(&s_currentMsg, 0, 0, 0, PM_NOREMOVE) && - ProcessIdle()) {} - if (!DoMessage()) - m_keepGoing = FALSE; - } -*/ - - return 0; -} - -// Returns TRUE if more time is needed. -bool wxApp::ProcessIdle() -{ - wxIdleEvent event; - event.SetEventObject(this); - ProcessEvent(event); - - return event.MoreRequested(); -} - -void wxApp::ExitMainLoop() -{ - m_keepGoing = FALSE; -} - -// Is a message/event pending? -bool wxApp::Pending() -{ -/* TODO. - */ - return FALSE; -} - -// Dispatch a message. -void wxApp::Dispatch() -{ -/* TODO. - */ -} - -void wxApp::OnIdle(wxIdleEvent& event) -{ - static bool inOnIdle = FALSE; - - // Avoid recursion (via ProcessEvent default case) - if (inOnIdle) - return; - - inOnIdle = TRUE; - - // 'Garbage' collection of windows deleted with Close(). - DeletePendingObjects(); - - // flush the logged messages if any - wxLog *pLog = wxLog::GetActiveTarget(); - if ( pLog != NULL && pLog->HasPendingMessages() ) - pLog->Flush(); - - // Send OnIdle events to all windows - bool needMore = SendIdleEvents(); - - if (needMore) - event.RequestMore(TRUE); - - inOnIdle = FALSE; -} - -// Send idle event to all top-level windows -bool wxApp::SendIdleEvents() -{ - bool needMore = FALSE; - wxNode* node = wxTopLevelWindows.First(); - while (node) - { - wxWindow* win = (wxWindow*) node->Data(); - if (SendIdleEvents(win)) - needMore = TRUE; - - node = node->Next(); - } - return needMore; -} - -// Send idle event to window and all subwindows -bool wxApp::SendIdleEvents(wxWindow* win) -{ - bool needMore = FALSE; - - wxIdleEvent event; - event.SetEventObject(win); - win->ProcessEvent(event); - - if (event.MoreRequested()) - needMore = TRUE; - - wxNode* node = win->GetChildren().First(); - while (node) - { - wxWindow* win = (wxWindow*) node->Data(); - if (SendIdleEvents(win)) - needMore = TRUE; - - node = node->Next(); - } - return needMore ; -} - -void wxApp::DeletePendingObjects() -{ - wxNode *node = wxPendingDelete.First(); - while (node) - { - wxObject *obj = (wxObject *)node->Data(); - - delete obj; - - if (wxPendingDelete.Member(obj)) - delete node; - - // Deleting one object may have deleted other pending - // objects, so start from beginning of list again. - node = wxPendingDelete.First(); - } -} - -wxLog* wxApp::CreateLogTarget() -{ - return new wxLogGui; -} - -wxWindow* wxApp::GetTopWindow() const -{ - if (m_topWindow) - return m_topWindow; - else if (wxTopLevelWindows.Number() > 0) - return (wxWindow*) wxTopLevelWindows.First()->Data(); - else - return NULL; -} - -void wxExit() -{ - wxApp::CleanUp(); -/* - * TODO: Exit in some platform-specific way. Not recommended that the app calls this: - * only for emergencies. - */ -} - -// Yield to other processes -bool wxYield() -{ - /* - * TODO - */ - return TRUE; -} - diff --git a/src/mac/carbon/bitmap.cpp b/src/mac/carbon/bitmap.cpp deleted file mode 100644 index 1e6255f551..0000000000 --- a/src/mac/carbon/bitmap.cpp +++ /dev/null @@ -1,430 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: bitmap.cpp -// Purpose: wxBitmap -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "bitmap.h" -#endif - -#include "wx/setup.h" -#include "wx/utils.h" -#include "wx/palette.h" -#include "wx/bitmap.h" -#include "wx/icon.h" -#include "wx/log.h" - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxBitmap, wxGDIObject) -IMPLEMENT_DYNAMIC_CLASS(wxMask, wxObject) -#endif - -wxBitmapRefData::wxBitmapRefData() -{ - m_ok = FALSE; - m_width = 0; - m_height = 0; - m_depth = 0; - m_quality = 0; - m_numColors = 0; - m_bitmapMask = NULL; -} - -wxBitmapRefData::~wxBitmapRefData() -{ - /* - * TODO: delete the bitmap data here. - */ - - if (m_bitmapMask) - delete m_bitmapMask; - m_bitmapMask = NULL; -} - -wxList wxBitmap::sm_handlers; - -wxBitmap::wxBitmap() -{ - m_refData = NULL; - - if ( wxTheBitmapList ) - wxTheBitmapList->AddBitmap(this); -} - -wxBitmap::~wxBitmap() -{ - if (wxTheBitmapList) - wxTheBitmapList->DeleteObject(this); -} - -wxBitmap::wxBitmap(const char bits[], int the_width, int the_height, int no_bits) -{ - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_width = the_width ; - M_BITMAPDATA->m_height = the_height ; - M_BITMAPDATA->m_depth = no_bits ; - M_BITMAPDATA->m_numColors = 0; - - /* TODO: create the bitmap from data */ - - if ( wxTheBitmapList ) - wxTheBitmapList->AddBitmap(this); -} - -wxBitmap::wxBitmap(int w, int h, int d) -{ - (void)Create(w, h, d); - - if ( wxTheBitmapList ) - wxTheBitmapList->AddBitmap(this); -} - -wxBitmap::wxBitmap(void *data, long type, int width, int height, int depth) -{ - (void) Create(data, type, width, height, depth); - - if ( wxTheBitmapList ) - wxTheBitmapList->AddBitmap(this); -} - -wxBitmap::wxBitmap(const wxString& filename, long type) -{ - LoadFile(filename, (int)type); - - if ( wxTheBitmapList ) - wxTheBitmapList->AddBitmap(this); -} - -/* TODO: maybe allow creation from XPM -// Create from data -wxBitmap::wxBitmap(const char **data) -{ - (void) Create((void *)data, wxBITMAP_TYPE_XPM_DATA, 0, 0, 0); -} -*/ - -bool wxBitmap::Create(int w, int h, int d) -{ - UnRef(); - - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_width = w; - M_BITMAPDATA->m_height = h; - M_BITMAPDATA->m_depth = d; - - /* TODO: create new bitmap */ - - return M_BITMAPDATA->m_ok; -} - -bool wxBitmap::LoadFile(const wxString& filename, long type) -{ - UnRef(); - - m_refData = new wxBitmapRefData; - - wxBitmapHandler *handler = FindHandler(type); - - if ( handler == NULL ) { - wxLogWarning("no bitmap handler for type %d defined.", type); - - return FALSE; - } - - return handler->LoadFile(this, filename, type, -1, -1); -} - -bool wxBitmap::Create(void *data, long type, int width, int height, int depth) -{ - UnRef(); - - m_refData = new wxBitmapRefData; - - wxBitmapHandler *handler = FindHandler(type); - - if ( handler == NULL ) { - wxLogWarning("no bitmap handler for type %d defined.", type); - - return FALSE; - } - - return handler->Create(this, data, type, width, height, depth); -} - -bool wxBitmap::SaveFile(const wxString& filename, int type, const wxPalette *palette) -{ - wxBitmapHandler *handler = FindHandler(type); - - if ( handler == NULL ) { - wxLogWarning("no bitmap handler for type %d defined.", type); - - return FALSE; - } - - return handler->SaveFile(this, filename, type, palette); -} - -void wxBitmap::SetWidth(int w) -{ - if (!M_BITMAPDATA) - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_width = w; -} - -void wxBitmap::SetHeight(int h) -{ - if (!M_BITMAPDATA) - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_height = h; -} - -void wxBitmap::SetDepth(int d) -{ - if (!M_BITMAPDATA) - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_depth = d; -} - -void wxBitmap::SetQuality(int q) -{ - if (!M_BITMAPDATA) - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_quality = q; -} - -void wxBitmap::SetOk(bool isOk) -{ - if (!M_BITMAPDATA) - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_ok = isOk; -} - -void wxBitmap::SetPalette(const wxPalette& palette) -{ - if (!M_BITMAPDATA) - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_bitmapPalette = palette ; -} - -void wxBitmap::SetMask(wxMask *mask) -{ - if (!M_BITMAPDATA) - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_bitmapMask = mask ; -} - -void wxBitmap::AddHandler(wxBitmapHandler *handler) -{ - sm_handlers.Append(handler); -} - -void wxBitmap::InsertHandler(wxBitmapHandler *handler) -{ - sm_handlers.Insert(handler); -} - -bool wxBitmap::RemoveHandler(const wxString& name) -{ - wxBitmapHandler *handler = FindHandler(name); - if ( handler ) - { - sm_handlers.DeleteObject(handler); - return TRUE; - } - else - return FALSE; -} - -wxBitmapHandler *wxBitmap::FindHandler(const wxString& name) -{ - wxNode *node = sm_handlers.First(); - while ( node ) - { - wxBitmapHandler *handler = (wxBitmapHandler *)node->Data(); - if ( handler->GetName() == name ) - return handler; - node = node->Next(); - } - return NULL; -} - -wxBitmapHandler *wxBitmap::FindHandler(const wxString& extension, long bitmapType) -{ - wxNode *node = sm_handlers.First(); - while ( node ) - { - wxBitmapHandler *handler = (wxBitmapHandler *)node->Data(); - if ( handler->GetExtension() == extension && - (bitmapType == -1 || handler->GetType() == bitmapType) ) - return handler; - node = node->Next(); - } - return NULL; -} - -wxBitmapHandler *wxBitmap::FindHandler(long bitmapType) -{ - wxNode *node = sm_handlers.First(); - while ( node ) - { - wxBitmapHandler *handler = (wxBitmapHandler *)node->Data(); - if (handler->GetType() == bitmapType) - return handler; - node = node->Next(); - } - return NULL; -} - -/* - * wxMask - */ - -wxMask::wxMask() -{ -/* TODO - m_maskBitmap = 0; -*/ -} - -// Construct a mask from a bitmap and a colour indicating -// the transparent area -wxMask::wxMask(const wxBitmap& bitmap, const wxColour& colour) -{ -/* TODO - m_maskBitmap = 0; -*/ - Create(bitmap, colour); -} - -// Construct a mask from a bitmap and a palette index indicating -// the transparent area -wxMask::wxMask(const wxBitmap& bitmap, int paletteIndex) -{ -/* TODO - m_maskBitmap = 0; -*/ - - Create(bitmap, paletteIndex); -} - -// Construct a mask from a mono bitmap (copies the bitmap). -wxMask::wxMask(const wxBitmap& bitmap) -{ -/* TODO - m_maskBitmap = 0; -*/ - - Create(bitmap); -} - -wxMask::~wxMask() -{ -// TODO: delete mask bitmap -} - -// Create a mask from a mono bitmap (copies the bitmap). -bool wxMask::Create(const wxBitmap& bitmap) -{ -// TODO - return FALSE; -} - -// Create a mask from a bitmap and a palette index indicating -// the transparent area -bool wxMask::Create(const wxBitmap& bitmap, int paletteIndex) -{ -// TODO - return FALSE; -} - -// Create a mask from a bitmap and a colour indicating -// the transparent area -bool wxMask::Create(const wxBitmap& bitmap, const wxColour& colour) -{ -// TODO - return FALSE; -} - -/* - * wxBitmapHandler - */ - -IMPLEMENT_DYNAMIC_CLASS(wxBitmapHandler, wxObject) - -bool wxBitmapHandler::Create(wxBitmap *bitmap, void *data, long type, int width, int height, int depth) -{ - return FALSE; -} - -bool wxBitmapHandler::LoadFile(wxBitmap *bitmap, const wxString& name, long type, - int desiredWidth, int desiredHeight) -{ - return FALSE; -} - -bool wxBitmapHandler::SaveFile(wxBitmap *bitmap, const wxString& name, int type, const wxPalette *palette) -{ - return FALSE; -} - -/* - * Standard handlers - */ - -/* TODO: bitmap handlers, a bit like this: -class WXDLLEXPORT wxBMPResourceHandler: public wxBitmapHandler -{ - DECLARE_DYNAMIC_CLASS(wxBMPResourceHandler) -public: - inline wxBMPResourceHandler() - { - m_name = "Windows bitmap resource"; - m_extension = ""; - m_type = wxBITMAP_TYPE_BMP_RESOURCE; - }; - - virtual bool LoadFile(wxBitmap *bitmap, const wxString& name, long flags, - int desiredWidth, int desiredHeight); -}; -IMPLEMENT_DYNAMIC_CLASS(wxBMPResourceHandler, wxBitmapHandler) -*/ - -void wxBitmap::CleanUpHandlers() -{ - wxNode *node = sm_handlers.First(); - while ( node ) - { - wxBitmapHandler *handler = (wxBitmapHandler *)node->Data(); - wxNode *next = node->Next(); - delete handler; - delete node; - node = next; - } -} - -void wxBitmap::InitStandardHandlers() -{ -/* TODO: initialize all standard bitmap or derive class handlers here. - AddHandler(new wxBMPResourceHandler); - AddHandler(new wxBMPFileHandler); - AddHandler(new wxXPMFileHandler); - AddHandler(new wxXPMDataHandler); - AddHandler(new wxICOResourceHandler); - AddHandler(new wxICOFileHandler); -*/ -} diff --git a/src/mac/carbon/bmpbuttn.cpp b/src/mac/carbon/bmpbuttn.cpp deleted file mode 100644 index 169f0d557a..0000000000 --- a/src/mac/carbon/bmpbuttn.cpp +++ /dev/null @@ -1,65 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: bmpbuttn.cpp -// Purpose: wxBitmapButton -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "bmpbuttn.h" -#endif - -#include "wx/bmpbuttn.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxBitmapButton, wxButton) -#endif - -bool wxBitmapButton::Create(wxWindow *parent, wxWindowID id, const wxBitmap& bitmap, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - m_buttonBitmap = bitmap; - SetName(name); - SetValidator(validator); - parent->AddChild(this); - - m_backgroundColour = parent->GetBackgroundColour() ; - m_foregroundColour = parent->GetForegroundColour() ; - m_windowStyle = style; - m_marginX = 0; - m_marginY = 0; - - int x = pos.x; - int y = pos.y; - int width = size.x; - int height = size.y; - - if (id == -1) - m_windowId = NewControlId(); - else - m_windowId = id; - - if ( width == -1 && bitmap.Ok()) - width = bitmap.GetWidth() + 2*m_marginX; - - if ( height == -1 && bitmap.Ok()) - height = bitmap.GetHeight() + 2*m_marginY; - - /* TODO: create bitmap button - */ - - return FALSE; -} - -void wxBitmapButton::SetBitmapLabel(const wxBitmap& bitmap) -{ - m_buttonBitmap = bitmap; -} - diff --git a/src/mac/carbon/brush.cpp b/src/mac/carbon/brush.cpp deleted file mode 100644 index 4f28e92f53..0000000000 --- a/src/mac/carbon/brush.cpp +++ /dev/null @@ -1,140 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: brush.cpp -// Purpose: wxBrush -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "brush.h" -#endif - -#include "wx/setup.h" -#include "wx/utils.h" -#include "wx/brush.h" - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxBrush, wxGDIObject) -#endif - -wxBrushRefData::wxBrushRefData() -{ - m_style = wxSOLID; -// TODO: null data -} - -wxBrushRefData::wxBrushRefData(const wxBrushRefData& data) -{ - m_style = data.m_style; - m_stipple = data.m_stipple; - m_colour = data.m_colour; -/* TODO: null data - m_hBrush = 0; -*/ -} - -wxBrushRefData::~wxBrushRefData() -{ -// TODO: delete data -} - -// Brushes -wxBrush::wxBrush() -{ - if ( wxTheBrushList ) - wxTheBrushList->AddBrush(this); -} - -wxBrush::~wxBrush() -{ - if ( wxTheBrushList ) - wxTheBrushList->RemoveBrush(this); -} - -wxBrush::wxBrush(const wxColour& col, int Style) -{ - m_refData = new wxBrushRefData; - - M_BRUSHDATA->m_colour = col; - M_BRUSHDATA->m_style = Style; - - RealizeResource(); - - if ( wxTheBrushList ) - wxTheBrushList->AddBrush(this); -} - -wxBrush::wxBrush(const wxBitmap& stipple) -{ - m_refData = new wxBrushRefData; - - M_BRUSHDATA->m_style = wxSTIPPLE; - M_BRUSHDATA->m_stipple = stipple; - - RealizeResource(); - - if ( wxTheBrushList ) - wxTheBrushList->AddBrush(this); -} - -void wxBrush::Unshare() -{ - // Don't change shared data - if (!m_refData) - { - m_refData = new wxBrushRefData(); - } - else - { - wxBrushRefData* ref = new wxBrushRefData(*(wxBrushRefData*)m_refData); - UnRef(); - m_refData = ref; - } -} - -void wxBrush::SetColour(const wxColour& col) -{ - Unshare(); - - M_BRUSHDATA->m_colour = col; - - RealizeResource(); -} - -void wxBrush::SetColour(unsigned char r, unsigned char g, unsigned char b) -{ - Unshare(); - - M_BRUSHDATA->m_colour.Set(r, g, b); - - RealizeResource(); -} - -void wxBrush::SetStyle(int Style) -{ - Unshare(); - - M_BRUSHDATA->m_style = Style; - - RealizeResource(); -} - -void wxBrush::SetStipple(const wxBitmap& Stipple) -{ - Unshare(); - - M_BRUSHDATA->m_stipple = Stipple; - - RealizeResource(); -} - -bool wxBrush::RealizeResource() -{ -// TODO: create the brush - return FALSE; -} - diff --git a/src/mac/carbon/button.cpp b/src/mac/carbon/button.cpp deleted file mode 100644 index befd0d7156..0000000000 --- a/src/mac/carbon/button.cpp +++ /dev/null @@ -1,75 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: button.cpp -// Purpose: wxButton -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "button.h" -#endif - -#include "wx/button.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxButton, wxControl) -#endif - -// Button - -bool wxButton::Create(wxWindow *parent, wxWindowID id, const wxString& label, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); - SetValidator(validator); - m_windowStyle = style; - - parent->AddChild((wxButton *)this); - - if (id == -1) - m_windowId = NewControlId(); - else - m_windowId = id; - - // TODO: create button - - return FALSE; -} - -void wxButton::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -void wxButton::SetDefault() -{ - wxWindow *parent = (wxWindow *)GetParent(); - if (parent) - parent->SetDefaultItem(this); - - // TODO: make button the default -} - -wxString wxButton::GetLabel() const -{ - // TODO - return wxString(""); -} - -void wxButton::SetLabel(const wxString& label) -{ - // TODO -} - -void wxButton::Command (wxCommandEvent & event) -{ - ProcessCommand (event); -} - diff --git a/src/mac/carbon/checkbox.cpp b/src/mac/carbon/checkbox.cpp deleted file mode 100644 index dd2e2abe7a..0000000000 --- a/src/mac/carbon/checkbox.cpp +++ /dev/null @@ -1,117 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: checkbox.cpp -// Purpose: wxCheckBox -// Author: AUTHOR -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "checkbox.h" -#endif - -#include "wx/checkbox.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxCheckBox, wxControl) -IMPLEMENT_DYNAMIC_CLASS(wxBitmapCheckBox, wxCheckBox) -#endif - -// Single check box item -bool wxCheckBox::Create(wxWindow *parent, wxWindowID id, const wxString& label, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); - SetValidator(validator); - m_windowStyle = style; - - if (parent) parent->AddChild(this); - - if ( id == -1 ) - m_windowId = NewControlId(); - else - m_windowId = id; - - // TODO: create checkbox - - return FALSE; -} - -void wxCheckBox::SetLabel(const wxString& label) -{ - // TODO -} - -void wxCheckBox::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -void wxCheckBox::SetValue(bool val) -{ - // TODO -} - -bool wxCheckBox::GetValue() const -{ - // TODO - return FALSE; -} - -void wxCheckBox::Command (wxCommandEvent & event) -{ - SetValue ((event.GetInt() != 0)); - ProcessCommand (event); -} - -// Bitmap checkbox -bool wxBitmapCheckBox::Create(wxWindow *parent, wxWindowID id, const wxBitmap *label, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); - SetValidator(validator); - m_windowStyle = style; - - if (parent) parent->AddChild(this); - - if ( id == -1 ) - m_windowId = NewControlId(); - else - m_windowId = id; - - // TODO: Create the bitmap checkbox - - return FALSE; -} - -void wxBitmapCheckBox::SetLabel(const wxBitmap *bitmap) -{ - // TODO -} - -void wxBitmapCheckBox::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -void wxBitmapCheckBox::SetValue(bool val) -{ - // TODO -} - -bool wxBitmapCheckBox::GetValue() const -{ - // TODOD - return FALSE; -} - - diff --git a/src/mac/carbon/checklst.cpp b/src/mac/carbon/checklst.cpp deleted file mode 100644 index 2f43152c2a..0000000000 --- a/src/mac/carbon/checklst.cpp +++ /dev/null @@ -1,74 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: checklst.cpp -// Purpose: implementation of wxCheckListBox class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -// ============================================================================ -// headers & declarations -// ============================================================================ - -#ifdef __GNUG__ -#pragma implementation "checklst.h" -#endif - -#include "wx/checklst.h" - -// ============================================================================ -// implementation -// ============================================================================ - -#if !USE_SHARED_LIBRARY - IMPLEMENT_DYNAMIC_CLASS(wxCheckListBox, wxListBox) -#endif - -// ---------------------------------------------------------------------------- -// implementation of wxCheckListBox class -// ---------------------------------------------------------------------------- - -// define event table -// ------------------ -BEGIN_EVENT_TABLE(wxCheckListBox, wxListBox) -END_EVENT_TABLE() - -// control creation -// ---------------- - -// def ctor: use Create() to really create the control -wxCheckListBox::wxCheckListBox() : wxListBox() -{ -} - -// ctor which creates the associated control -wxCheckListBox::wxCheckListBox(wxWindow *parent, wxWindowID id, - const wxPoint& pos, const wxSize& size, - int nStrings, const wxString choices[], - long style, const wxValidator& val, - const wxString& name) - : wxListBox() -{ - // TODO: you'll probably need a separate Create instead of using - // the wxListBox one as here. - Create(parent, id, pos, size, nStrings, choices, style|wxLB_OWNERDRAW, val, name); -} - -// check items -// ----------- - -bool wxCheckListBox::IsChecked(size_t uiIndex) const -{ - // TODO - return FALSE; -} - -void wxCheckListBox::Check(size_t uiIndex, bool bCheck) -{ - // TODO -} - - diff --git a/src/mac/carbon/choice.cpp b/src/mac/carbon/choice.cpp deleted file mode 100644 index a584d5303f..0000000000 --- a/src/mac/carbon/choice.cpp +++ /dev/null @@ -1,119 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: choice.cpp -// Purpose: wxChoice -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "choice.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/choice.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxChoice, wxControl) -#endif - -bool wxChoice::Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos, - const wxSize& size, - int n, const wxString choices[], - long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); - SetValidator(validator); - m_noStrings = n; - m_windowStyle = style; - - if (parent) parent->AddChild(this); - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - // TODO: create choice control - return FALSE; -} - -void wxChoice::Append(const wxString& item) -{ - // TODO - m_noStrings ++; -} - -void wxChoice::Delete(int n) -{ - // TODO - m_noStrings --; -} - -void wxChoice::Clear() -{ - // TODO - m_noStrings = 0; -} - -int wxChoice::GetSelection() const -{ - // TODO - return 0; -} - -void wxChoice::SetSelection(int n) -{ - // TODO -} - -int wxChoice::FindString(const wxString& s) const -{ - // TODO - return 0; -} - -wxString wxChoice::GetString(int n) const -{ - // TODO - return wxString(""); -} - -void wxChoice::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -wxString wxChoice::GetStringSelection () const -{ - int sel = GetSelection (); - if (sel > -1) - return wxString(this->GetString (sel)); - else - return wxString(""); -} - -bool wxChoice::SetStringSelection (const wxString& s) -{ - int sel = FindString (s); - if (sel > -1) - { - SetSelection (sel); - return TRUE; - } - else - return FALSE; -} - -void wxChoice::Command(wxCommandEvent & event) -{ - SetSelection (event.GetInt()); - ProcessCommand (event); -} - diff --git a/src/mac/carbon/clipbrd.cpp b/src/mac/carbon/clipbrd.cpp deleted file mode 100644 index 3fe9ebfb72..0000000000 --- a/src/mac/carbon/clipbrd.cpp +++ /dev/null @@ -1,237 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: clipbrd.cpp -// Purpose: Clipboard functionality -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation -#pragma implementation "clipbrd.h" -#endif - -#include "wx/app.h" -#include "wx/frame.h" -#include "wx/bitmap.h" -#include "wx/utils.h" -#include "wx/metafile.h" -#include "wx/clipbrd.h" - -#include - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxClipboard, wxObject) -IMPLEMENT_ABSTRACT_CLASS(wxClipboardClient, wxObject) -#endif - -bool wxOpenClipboard() -{ - // TODO - return FALSE; -} - -bool wxCloseClipboard() -{ - // TODO - return FALSE; -} - -bool wxEmptyClipboard() -{ - // TODO - return FALSE; -} - -bool wxClipboardOpen() -{ - // TODO - return FALSE; -} - -bool wxIsClipboardFormatAvailable(int dataFormat) -{ - // TODO - return FALSE; -} - -bool wxSetClipboardData(int dataFormat, wxObject *obj, int width, int height) -{ - // TODO - return FALSE; -} - -wxObject *wxGetClipboardData(int dataFormat, long *len) -{ - // TODO - return NULL; -} - -int wxEnumClipboardFormats(int dataFormat) -{ - // TODO - return 0; -} - -int wxRegisterClipboardFormat(char *formatName) -{ - // TODO - return 0; -} - -bool wxGetClipboardFormatName(int dataFormat, char *formatName, int maxCount) -{ - // TODO - return FALSE; -} - -/* - * Generalized clipboard implementation by Matthew Flatt - */ - -wxClipboard *wxTheClipboard = NULL; - -void wxInitClipboard() -{ - if (!wxTheClipboard) - wxTheClipboard = new wxClipboard; -} - -wxClipboard::wxClipboard() -{ - clipOwner = NULL; - cbString = NULL; -} - -wxClipboard::~wxClipboard() -{ - if (clipOwner) - clipOwner->BeingReplaced(); - if (cbString) - delete[] cbString; -} - -static int FormatStringToID(char *str) -{ - if (!strcmp(str, "TEXT")) - return wxDF_TEXT; - - return wxRegisterClipboardFormat(str); -} - -void wxClipboard::SetClipboardClient(wxClipboardClient *client, long time) -{ - bool got_selection; - - if (clipOwner) - clipOwner->BeingReplaced(); - clipOwner = client; - if (cbString) { - delete[] cbString; - cbString = NULL; - } - - if (wxOpenClipboard()) { - char **formats, *data; - int i; - int ftype; - long size; - - formats = clipOwner->formats.ListToArray(FALSE); - for (i = clipOwner->formats.Number(); i--; ) { - ftype = FormatStringToID(formats[i]); - data = clipOwner->GetData(formats[i], &size); - if (!wxSetClipboardData(ftype, (wxObject *)data, size, 1)) { - got_selection = FALSE; - break; - } - } - - if (i < 0) - got_selection = wxCloseClipboard(); - } else - got_selection = FALSE; - - got_selection = FALSE; // Assume another process takes over - - if (!got_selection) { - clipOwner->BeingReplaced(); - clipOwner = NULL; - } -} - -wxClipboardClient *wxClipboard::GetClipboardClient() -{ - return clipOwner; -} - -void wxClipboard::SetClipboardString(char *str, long time) -{ - bool got_selection; - - if (clipOwner) { - clipOwner->BeingReplaced(); - clipOwner = NULL; - } - if (cbString) - delete[] cbString; - - cbString = str; - - if (wxOpenClipboard()) { - if (!wxSetClipboardData(wxDF_TEXT, (wxObject *)str)) - got_selection = FALSE; - else - got_selection = wxCloseClipboard(); - } else - got_selection = FALSE; - - got_selection = FALSE; // Assume another process takes over - - if (!got_selection) { - delete[] cbString; - cbString = NULL; - } -} - -char *wxClipboard::GetClipboardString(long time) -{ - char *str; - long length; - - str = GetClipboardData("TEXT", &length, time); - if (!str) { - str = new char[1]; - *str = 0; - } - - return str; -} - -char *wxClipboard::GetClipboardData(char *format, long *length, long time) -{ - if (clipOwner) { - if (clipOwner->formats.Member(format)) - return clipOwner->GetData(format, length); - else - return NULL; - } else if (cbString) { - if (!strcmp(format, "TEXT")) - return copystring(cbString); - else - return NULL; - } else { - if (wxOpenClipboard()) { - receivedString = (char *)wxGetClipboardData(FormatStringToID(format), - length); - wxCloseClipboard(); - } else - receivedString = NULL; - - return receivedString; - } -} - diff --git a/src/mac/carbon/colordlg.cpp b/src/mac/carbon/colordlg.cpp deleted file mode 100644 index 2275a9a39d..0000000000 --- a/src/mac/carbon/colordlg.cpp +++ /dev/null @@ -1,53 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: colordlg.cpp -// Purpose: wxColourDialog class. NOTE: you can use the generic class -// if you wish, instead of implementing this. -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "colordlg.h" -#endif - -#include "wx/stubs/colordlg.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxColourDialog, wxDialog) -#endif - -/* - * wxColourDialog - */ - -wxColourDialog::wxColourDialog() -{ - m_dialogParent = NULL; -} - -wxColourDialog::wxColourDialog(wxWindow *parent, wxColourData *data) -{ - Create(parent, data); -} - -bool wxColourDialog::Create(wxWindow *parent, wxColourData *data) -{ - m_dialogParent = parent; - - if (data) - m_colourData = *data; - return TRUE; -} - -int wxColourDialog::ShowModal() -{ - /* TODO: implement dialog - */ - - return wxID_CANCEL; -} - diff --git a/src/mac/carbon/colour.cpp b/src/mac/carbon/colour.cpp deleted file mode 100644 index 8d0827ef1d..0000000000 --- a/src/mac/carbon/colour.cpp +++ /dev/null @@ -1,103 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: colour.cpp -// Purpose: wxColour class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "colour.h" -#endif - -#include "wx/gdicmn.h" -#include "wx/colour.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxColour, wxObject) -#endif - -// Colour - -wxColour::wxColour () -{ - m_isInit = FALSE; - m_red = m_blue = m_green = 0; -/* TODO - m_pixel = 0; -*/ -} - -wxColour::wxColour (unsigned char r, unsigned char g, unsigned char b) -{ - m_red = r; - m_green = g; - m_blue = b; - m_isInit = TRUE; -/* TODO - m_pixel = PALETTERGB (m_red, m_green, m_blue); -*/ -} - -wxColour::wxColour (const wxColour& col) -{ - m_red = col.m_red; - m_green = col.m_green; - m_blue = col.m_blue; - m_isInit = col.m_isInit; -/* TODO - m_pixel = col.m_pixel; -*/ -} - -wxColour& wxColour::operator =(const wxColour& col) -{ - m_red = col.m_red; - m_green = col.m_green; - m_blue = col.m_blue; - m_isInit = col.m_isInit; -/* TODO - m_pixel = col.m_pixel; -*/ - return *this; -} - -void wxColour::InitFromName(const wxString& col) -{ - wxColour *the_colour = wxTheColourDatabase->FindColour (col); - if (the_colour) - { - m_red = the_colour->Red (); - m_green = the_colour->Green (); - m_blue = the_colour->Blue (); - m_isInit = TRUE; - } - else - { - m_red = 0; - m_green = 0; - m_blue = 0; - m_isInit = FALSE; - } -/* TODO - m_pixel = PALETTERGB (m_red, m_green, m_blue); -*/ -} - -wxColour::~wxColour () -{ -} - -void wxColour::Set (unsigned char r, unsigned char g, unsigned char b) -{ - m_red = r; - m_green = g; - m_blue = b; - m_isInit = TRUE; -/* TODO - m_pixel = PALETTERGB (m_red, m_green, m_blue); -*/ -} diff --git a/src/mac/carbon/combobox.cpp b/src/mac/carbon/combobox.cpp deleted file mode 100644 index 0be841bad4..0000000000 --- a/src/mac/carbon/combobox.cpp +++ /dev/null @@ -1,165 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: combobox.cpp -// Purpose: wxComboBox class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "combobox.h" -#endif - -#include "wx/combobox.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxComboBox, wxControl) -#endif - -bool wxComboBox::Create(wxWindow *parent, wxWindowID id, - const wxString& value, - const wxPoint& pos, - const wxSize& size, - int n, const wxString choices[], - long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); - SetValidator(validator); - m_noStrings = n; - m_windowStyle = style; - - if (parent) parent->AddChild(this); - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - // TODO: create combobox control - - return TRUE; -} - -wxString wxComboBox::GetValue() const -{ - // TODO - return wxString(""); -} - -void wxComboBox::SetValue(const wxString& value) -{ - // TODO -} - -// Clipboard operations -void wxComboBox::Copy() -{ - // TODO -} - -void wxComboBox::Cut() -{ - // TODO -} - -void wxComboBox::Paste() -{ - // TODO -} - -void wxComboBox::SetEditable(bool editable) -{ - // TODO -} - -void wxComboBox::SetInsertionPoint(long pos) -{ - // TODO -} - -void wxComboBox::SetInsertionPointEnd() -{ - // TODO -} - -long wxComboBox::GetInsertionPoint() const -{ - // TODO - return 0; -} - -long wxComboBox::GetLastPosition() const -{ - // TODO - return 0; -} - -void wxComboBox::Replace(long from, long to, const wxString& value) -{ - // TODO -} - -void wxComboBox::Remove(long from, long to) -{ - // TODO -} - -void wxComboBox::SetSelection(long from, long to) -{ - // TODO -} - -void wxComboBox::Append(const wxString& item) -{ - // TODO -} - -void wxComboBox::Delete(int n) -{ - // TODO -} - -void wxComboBox::Clear() -{ - // TODO -} - -int wxComboBox::GetSelection() const -{ - // TODO - return -1; -} - -void wxComboBox::SetSelection(int n) -{ - // TODO -} - -int wxComboBox::FindString(const wxString& s) const -{ - // TODO - return -1; -} - -wxString wxComboBox::GetString(int n) const -{ - // TODO - return wxString(""); -} - -wxString wxComboBox::GetStringSelection() const -{ - // TODO - return wxString(""); -} - -bool wxComboBox::SetStringSelection(const wxString& sel) -{ - // TODO - return FALSE; -} diff --git a/src/mac/carbon/control.cpp b/src/mac/carbon/control.cpp deleted file mode 100644 index b141a80ff1..0000000000 --- a/src/mac/carbon/control.cpp +++ /dev/null @@ -1,95 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: control.cpp -// Purpose: wxControl class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "control.h" -#endif - -#include "wx/control.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_ABSTRACT_CLASS(wxControl, wxWindow) - -BEGIN_EVENT_TABLE(wxControl, wxWindow) -END_EVENT_TABLE() -#endif - -// Item members -wxControl::wxControl() -{ - m_backgroundColour = *wxWHITE; - m_foregroundColour = *wxBLACK; - m_callback = 0; -} - -wxControl::~wxControl() -{ - // If we delete an item, we should initialize the parent panel, - // because it could now be invalid. - wxWindow *parent = (wxWindow *)GetParent(); - if (parent) - { - if (parent->GetDefaultItem() == (wxButton*) this) - parent->SetDefaultItem(NULL); - } -} - -void wxControl::SetLabel(const wxString& label) -{ - // TODO -} - -wxString wxControl::GetLabel() const -{ - // TODO - return wxString(""); -} - -void wxControl::ProcessCommand (wxCommandEvent & event) -{ - // Tries: - // 1) A callback function (to become obsolete) - // 2) OnCommand, starting at this window and working up parent hierarchy - // 3) OnCommand then calls ProcessEvent to search the event tables. - if (m_callback) - { - (void) (*(m_callback)) (*this, event); - } - else - { - GetEventHandler()->OnCommand(*this, event); - } -} - -void wxControl::Centre (int direction) -{ - int x, y, width, height, panel_width, panel_height, new_x, new_y; - - wxWindow *parent = (wxWindow *) GetParent (); - if (!parent) - return; - - parent->GetClientSize (&panel_width, &panel_height); - GetSize (&width, &height); - GetPosition (&x, &y); - - new_x = x; - new_y = y; - - if (direction & wxHORIZONTAL) - new_x = (int) ((panel_width - width) / 2); - - if (direction & wxVERTICAL) - new_y = (int) ((panel_height - height) / 2); - - SetSize (new_x, new_y, width, height); -} - diff --git a/src/mac/carbon/cursor.cpp b/src/mac/carbon/cursor.cpp deleted file mode 100644 index 4333364c93..0000000000 --- a/src/mac/carbon/cursor.cpp +++ /dev/null @@ -1,187 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: cursor.cpp -// Purpose: wxCursor class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "cursor.h" -#endif - -#include "wx/cursor.h" -#include "wx/icon.h" - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxCursor, wxBitmap) -#endif - -wxCursorRefData::wxCursorRefData() -{ - m_width = 32; m_height = 32; - -/* TODO - m_hCursor = 0 ; -*/ -} - -wxCursorRefData::~wxCursorRefData() -{ - // TODO: destroy cursor -} - -// Cursors -wxCursor::wxCursor() -{ -} - -wxCursor::wxCursor(const char WXUNUSED(bits)[], int WXUNUSED(width), int WXUNUSED(height), - int WXUNUSED(hotSpotX), int WXUNUSED(hotSpotY), const char WXUNUSED(maskBits)[]) -{ -} - -wxCursor::wxCursor(const wxString& cursor_file, long flags, int hotSpotX, int hotSpotY) -{ - m_refData = new wxCursorRefData; - - // TODO: create cursor from a file -} - -// Cursors by stock number -wxCursor::wxCursor(int cursor_type) -{ - m_refData = new wxCursorRefData; - -/* TODO - switch (cursor_type) - { - case wxCURSOR_WAIT: - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_WAIT); - break; - case wxCURSOR_IBEAM: - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_IBEAM); - break; - case wxCURSOR_CROSS: - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_CROSS); - break; - case wxCURSOR_SIZENWSE: - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_SIZENWSE); - break; - case wxCURSOR_SIZENESW: - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_SIZENESW); - break; - case wxCURSOR_SIZEWE: - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_SIZEWE); - break; - case wxCURSOR_SIZENS: - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_SIZENS); - break; - case wxCURSOR_CHAR: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_ARROW); - break; - } - case wxCURSOR_HAND: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_HAND"); - break; - } - case wxCURSOR_BULLSEYE: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_BULLSEYE"); - break; - } - case wxCURSOR_PENCIL: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_PENCIL"); - break; - } - case wxCURSOR_MAGNIFIER: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_MAGNIFIER"); - break; - } - case wxCURSOR_NO_ENTRY: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_NO_ENTRY"); - break; - } - case wxCURSOR_LEFT_BUTTON: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_ARROW); - break; - } - case wxCURSOR_RIGHT_BUTTON: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_ARROW); - break; - } - case wxCURSOR_MIDDLE_BUTTON: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_ARROW); - break; - } - case wxCURSOR_SIZING: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_SIZING"); - break; - } - case wxCURSOR_WATCH: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_WATCH"); - break; - } - case wxCURSOR_SPRAYCAN: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_ROLLER"); - break; - } - case wxCURSOR_PAINT_BRUSH: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_PBRUSH"); - break; - } - case wxCURSOR_POINT_LEFT: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_PLEFT"); - break; - } - case wxCURSOR_POINT_RIGHT: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_PRIGHT"); - break; - } - case wxCURSOR_QUESTION_ARROW: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_QARROW"); - break; - } - case wxCURSOR_BLANK: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_BLANK"); - break; - } - default: - case wxCURSOR_ARROW: - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_ARROW); - break; - } -*/ - -} - -wxCursor::~wxCursor() -{ -} - -// Global cursor setting -void wxSetCursor(const wxCursor& cursor) -{ - // TODO (optional on platforms with no global cursor) -} - - diff --git a/src/mac/carbon/data.cpp b/src/mac/carbon/data.cpp deleted file mode 100644 index 5e6c418519..0000000000 --- a/src/mac/carbon/data.cpp +++ /dev/null @@ -1,151 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: data.cpp -// Purpose: Various data -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation -#endif - -#include "wx/wx.h" - -#if wxUSE_POSTSCRIPT -#include "wx/postscrp.h" -#endif - -#define _MAXPATHLEN 500 - -// Useful buffer, initialized in CommonInit -char *wxBuffer = NULL; - -// Windows List -wxList wxTopLevelWindows; - -// List of windows pending deletion -wxList wxPendingDelete; - -int wxPageNumber; - -// GDI Object Lists -wxBrushList *wxTheBrushList = NULL; -wxPenList *wxThePenList = NULL; -wxFontList *wxTheFontList = NULL; -wxBitmapList *wxTheBitmapList = NULL; - -wxColourDatabase *wxTheColourDatabase = NULL; - -// Stock objects -wxFont *wxNORMAL_FONT; -wxFont *wxSMALL_FONT; -wxFont *wxITALIC_FONT; -wxFont *wxSWISS_FONT; -wxPen *wxRED_PEN; - -wxPen *wxCYAN_PEN; -wxPen *wxGREEN_PEN; -wxPen *wxBLACK_PEN; -wxPen *wxWHITE_PEN; -wxPen *wxTRANSPARENT_PEN; -wxPen *wxBLACK_DASHED_PEN; -wxPen *wxGREY_PEN; -wxPen *wxMEDIUM_GREY_PEN; -wxPen *wxLIGHT_GREY_PEN; - -wxBrush *wxBLUE_BRUSH; -wxBrush *wxGREEN_BRUSH; -wxBrush *wxWHITE_BRUSH; -wxBrush *wxBLACK_BRUSH; -wxBrush *wxTRANSPARENT_BRUSH; -wxBrush *wxCYAN_BRUSH; -wxBrush *wxRED_BRUSH; -wxBrush *wxGREY_BRUSH; -wxBrush *wxMEDIUM_GREY_BRUSH; -wxBrush *wxLIGHT_GREY_BRUSH; - -wxColour *wxBLACK; -wxColour *wxWHITE; -wxColour *wxRED; -wxColour *wxBLUE; -wxColour *wxGREEN; -wxColour *wxCYAN; -wxColour *wxLIGHT_GREY; - -wxCursor *wxSTANDARD_CURSOR = NULL; -wxCursor *wxHOURGLASS_CURSOR = NULL; -wxCursor *wxCROSS_CURSOR = NULL; - -// 'Null' objects -wxAcceleratorTable wxNullAcceleratorTable; -wxBitmap wxNullBitmap; -wxIcon wxNullIcon; -wxCursor wxNullCursor; -wxPen wxNullPen; -wxBrush wxNullBrush; -wxPalette wxNullPalette; -wxFont wxNullFont; -wxColour wxNullColour; - -// Default window names -const char *wxButtonNameStr = "button"; -const char *wxCanvasNameStr = "canvas"; -const char *wxCheckBoxNameStr = "check"; -const char *wxChoiceNameStr = "choice"; -const char *wxComboBoxNameStr = "comboBox"; -const char *wxDialogNameStr = "dialog"; -const char *wxFrameNameStr = "frame"; -const char *wxGaugeNameStr = "gauge"; -const char *wxStaticBoxNameStr = "groupBox"; -const char *wxListBoxNameStr = "listBox"; -const char *wxStaticTextNameStr = "message"; -const char *wxStaticBitmapNameStr = "message"; -const char *wxMultiTextNameStr = "multitext"; -const char *wxPanelNameStr = "panel"; -const char *wxRadioBoxNameStr = "radioBox"; -const char *wxRadioButtonNameStr = "radioButton"; -const char *wxBitmapRadioButtonNameStr = "radioButton"; -const char *wxScrollBarNameStr = "scrollBar"; -const char *wxSliderNameStr = "slider"; -const char *wxStaticNameStr = "static"; -const char *wxTextCtrlWindowNameStr = "textWindow"; -const char *wxTextCtrlNameStr = "text"; -const char *wxVirtListBoxNameStr = "virtListBox"; -const char *wxButtonBarNameStr = "buttonbar"; -const char *wxEnhDialogNameStr = "Shell"; -const char *wxToolBarNameStr = "toolbar"; -const char *wxStatusLineNameStr = "status_line"; -const char *wxEmptyString = ""; -const char *wxGetTextFromUserPromptStr = "Input Text"; -const char *wxMessageBoxCaptionStr = "Message"; -const char *wxFileSelectorPromptStr = "Select a file"; -const char *wxFileSelectorDefaultWildcardStr = "*.*"; -const char *wxInternalErrorStr = "wxWindows Internal Error"; -const char *wxFatalErrorStr = "wxWindows Fatal Error"; - -// See wx/utils.h -const char *wxFloatToStringStr = "%.2f"; -const char *wxDoubleToStringStr = "%.2f"; - -#if wxUSE_POSTSCRIPT -wxPrintPaperDatabase* wxThePrintPaperDatabase = NULL; -#endif - -#if wxUSE_SHARED_LIBRARY -///// Event tables (also must be in one, statically-linked file for shared libraries) - -// This is the base, wxEvtHandler 'bootstrap' code which is expanded manually here -const wxEventTable *wxEvtHandler::GetEventTable() const { return &wxEvtHandler::sm_eventTable; } - -const wxEventTable wxEvtHandler::sm_eventTable = - { NULL, &wxEvtHandler::sm_eventTableEntries[0] }; - -const wxEventTableEntry wxEvtHandler::sm_eventTableEntries[] = { { 0, 0, 0, NULL } }; -#endif - -const wxSize wxDefaultSize(-1, -1); -const wxPoint wxDefaultPosition(-1, -1); diff --git a/src/mac/carbon/dc.cpp b/src/mac/carbon/dc.cpp deleted file mode 100644 index 642dc1edc5..0000000000 --- a/src/mac/carbon/dc.cpp +++ /dev/null @@ -1,385 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dc.cpp -// Purpose: wxDC class -// Author: AUTHOR -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dc.h" -#endif - -#include "wx/dc.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_ABSTRACT_CLASS(wxDC, wxObject) -#endif - -//----------------------------------------------------------------------------- -// constants -//----------------------------------------------------------------------------- - -#define mm2inches 0.0393700787402 -#define inches2mm 25.4 -#define mm2twips 56.6929133859 -#define twips2mm 0.0176388888889 -#define mm2pt 2.83464566929 -#define pt2mm 0.352777777778 - -//----------------------------------------------------------------------------- -// wxDC -//----------------------------------------------------------------------------- - -wxDC::wxDC(void) -{ - m_ok = FALSE; - m_optimize = FALSE; - m_autoSetting = FALSE; - m_colour = TRUE; - m_clipping = FALSE; - - m_mm_to_pix_x = 1.0; - m_mm_to_pix_y = 1.0; - - m_logicalOriginX = 0; - m_logicalOriginY = 0; - m_deviceOriginX = 0; - m_deviceOriginY = 0; - m_internalDeviceOriginX = 0; - m_internalDeviceOriginY = 0; - m_externalDeviceOriginX = 0; - m_externalDeviceOriginY = 0; - - m_logicalScaleX = 1.0; - m_logicalScaleY = 1.0; - m_userScaleX = 1.0; - m_userScaleY = 1.0; - m_scaleX = 1.0; - m_scaleY = 1.0; - - m_mappingMode = MM_TEXT; - m_needComputeScaleX = FALSE; - m_needComputeScaleY = FALSE; - - m_signX = 1; // default x-axis left to right - m_signY = 1; // default y-axis top down - - m_maxX = m_maxY = -100000; - m_minY = m_minY = 100000; - - m_logicalFunction = wxCOPY; -// m_textAlignment = wxALIGN_TOP_LEFT; - m_backgroundMode = wxTRANSPARENT; - - m_textForegroundColour = *wxBLACK; - m_textBackgroundColour = *wxWHITE; - m_pen = *wxBLACK_PEN; - m_font = *wxNORMAL_FONT; - m_brush = *wxTRANSPARENT_BRUSH; - m_backgroundBrush = *wxWHITE_BRUSH; - -// m_palette = wxAPP_COLOURMAP; -}; - -wxDC::~wxDC(void) -{ -}; - -void wxDC::DrawIcon( const wxIcon &WXUNUSED(icon), long WXUNUSED(x), long WXUNUSED(y), bool WXUNUSED(useMask) ) -{ -}; - -void wxDC::DrawPoint( wxPoint& point ) -{ - DrawPoint( point.x, point.y ); -}; - -void wxDC::DrawPolygon( wxList *list, long xoffset, long yoffset, int fillStyle ) -{ - int n = list->Number(); - wxPoint *points = new wxPoint[n]; - - int i = 0; - for( wxNode *node = list->First(); node; node = node->Next() ) - { - wxPoint *point = (wxPoint *)node->Data(); - points[i].x = point->x; - points[i++].y = point->y; - }; - DrawPolygon( n, points, xoffset, yoffset, fillStyle ); - delete[] points; -}; - -void wxDC::DrawLines( wxList *list, long xoffset, long yoffset ) -{ - int n = list->Number(); - wxPoint *points = new wxPoint[n]; - - int i = 0; - for( wxNode *node = list->First(); node; node = node->Next() ) - { - wxPoint *point = (wxPoint *)node->Data(); - points[i].x = point->x; - points[i++].y = point->y; - }; - DrawLines( n, points, xoffset, yoffset ); - delete []points; -}; - -void wxDC::DrawSpline( long x1, long y1, long x2, long y2, long x3, long y3 ) -{ - wxList list; - list.Append( (wxObject*)new wxPoint(x1, y1) ); - list.Append( (wxObject*)new wxPoint(x2, y2) ); - list.Append( (wxObject*)new wxPoint(x3, y3) ); - DrawSpline(&list); - wxNode *node = list.First(); - while (node) - { - wxPoint *p = (wxPoint*)node->Data(); - delete p; - node = node->Next(); - }; -}; - -void wxDC::DrawSpline( int n, wxPoint points[] ) -{ - wxList list; - for (int i = 0; i < n; i++) list.Append( (wxObject*)&points[i] ); - DrawSpline( &list ); -}; - -void wxDC::SetClippingRegion( long x, long y, long width, long height ) -{ - m_clipping = TRUE; - m_clipX1 = x; - m_clipY1 = y; - m_clipX2 = x + width; - m_clipY2 = y + height; -}; - -void wxDC::DestroyClippingRegion(void) -{ - m_clipping = FALSE; -}; - -void wxDC::GetClippingBox( long *x, long *y, long *width, long *height ) const -{ - if (m_clipping) - { - if (x) *x = m_clipX1; - if (y) *y = m_clipY1; - if (width) *width = (m_clipX2 - m_clipX1); - if (height) *height = (m_clipY2 - m_clipY1); - } - else - *x = *y = *width = *height = 0; -}; - -void wxDC::GetSize( int* width, int* height ) const -{ - *width = m_maxX-m_minX; - *height = m_maxY-m_minY; -}; - -void wxDC::GetSizeMM( long* width, long* height ) const -{ - int w = 0; - int h = 0; - GetSize( &w, &h ); - *width = long( double(w) / (m_scaleX*m_mm_to_pix_x) ); - *height = long( double(h) / (m_scaleY*m_mm_to_pix_y) ); -}; - -void wxDC::SetTextForeground( const wxColour &col ) -{ - if (!Ok()) return; - m_textForegroundColour = col; -}; - -void wxDC::SetTextBackground( const wxColour &col ) -{ - if (!Ok()) return; - m_textBackgroundColour = col; -}; - -void wxDC::SetMapMode( int mode ) -{ - switch (mode) - { - case MM_TWIPS: - SetLogicalScale( twips2mm*m_mm_to_pix_x, twips2mm*m_mm_to_pix_y ); - break; - case MM_POINTS: - SetLogicalScale( pt2mm*m_mm_to_pix_x, pt2mm*m_mm_to_pix_y ); - break; - case MM_METRIC: - SetLogicalScale( m_mm_to_pix_x, m_mm_to_pix_y ); - break; - case MM_LOMETRIC: - SetLogicalScale( m_mm_to_pix_x/10.0, m_mm_to_pix_y/10.0 ); - break; - default: - case MM_TEXT: - SetLogicalScale( 1.0, 1.0 ); - break; - }; - if (mode != MM_TEXT) - { - m_needComputeScaleX = TRUE; - m_needComputeScaleY = TRUE; - }; -}; - -void wxDC::SetUserScale( double x, double y ) -{ - // allow negative ? -> no - m_userScaleX = x; - m_userScaleY = y; - ComputeScaleAndOrigin(); -}; - -void wxDC::GetUserScale( double *x, double *y ) -{ - if (x) *x = m_userScaleX; - if (y) *y = m_userScaleY; -}; - -void wxDC::SetLogicalScale( double x, double y ) -{ - // allow negative ? - m_logicalScaleX = x; - m_logicalScaleY = y; - ComputeScaleAndOrigin(); -}; - -void wxDC::GetLogicalScale( double *x, double *y ) -{ - if (x) *x = m_logicalScaleX; - if (y) *y = m_logicalScaleY; -}; - -void wxDC::SetLogicalOrigin( long x, long y ) -{ - m_logicalOriginX = x * m_signX; // is this still correct ? - m_logicalOriginY = y * m_signY; - ComputeScaleAndOrigin(); -}; - -void wxDC::GetLogicalOrigin( long *x, long *y ) -{ - if (x) *x = m_logicalOriginX; - if (y) *y = m_logicalOriginY; -}; - -void wxDC::SetDeviceOrigin( long x, long y ) -{ - m_externalDeviceOriginX = x; - m_externalDeviceOriginY = y; - ComputeScaleAndOrigin(); -}; - -void wxDC::GetDeviceOrigin( long *x, long *y ) -{ -// if (x) *x = m_externalDeviceOriginX; -// if (y) *y = m_externalDeviceOriginY; - if (x) *x = m_deviceOriginX; - if (y) *y = m_deviceOriginY; -}; - -void wxDC::SetInternalDeviceOrigin( long x, long y ) -{ - m_internalDeviceOriginX = x; - m_internalDeviceOriginY = y; - ComputeScaleAndOrigin(); -}; - -void wxDC::GetInternalDeviceOrigin( long *x, long *y ) -{ - if (x) *x = m_internalDeviceOriginX; - if (y) *y = m_internalDeviceOriginY; -}; - -void wxDC::SetAxisOrientation( bool xLeftRight, bool yBottomUp ) -{ - m_signX = (xLeftRight ? 1 : -1); - m_signY = (yBottomUp ? -1 : 1); - ComputeScaleAndOrigin(); -}; - -long wxDC::DeviceToLogicalX(long x) const -{ - return XDEV2LOG(x); -}; - -long wxDC::DeviceToLogicalY(long y) const -{ - return YDEV2LOG(y); -}; - -long wxDC::DeviceToLogicalXRel(long x) const -{ - return XDEV2LOGREL(x); -}; - -long wxDC::DeviceToLogicalYRel(long y) const -{ - return YDEV2LOGREL(y); -}; - -long wxDC::LogicalToDeviceX(long x) const -{ - return XLOG2DEV(x); -}; - -long wxDC::LogicalToDeviceY(long y) const -{ - return YLOG2DEV(y); -}; - -long wxDC::LogicalToDeviceXRel(long x) const -{ - return XLOG2DEVREL(x); -}; - -long wxDC::LogicalToDeviceYRel(long y) const -{ - return YLOG2DEVREL(y); -}; - -void wxDC::CalcBoundingBox( long x, long y ) -{ - if (x < m_minX) m_minX = x; - if (y < m_minY) m_minY = y; - if (x > m_maxX) m_maxX = x; - if (y > m_maxY) m_maxY = y; -}; - -void wxDC::ComputeScaleAndOrigin(void) -{ - // CMB: copy scale to see if it changes - double origScaleX = m_scaleX; - double origScaleY = m_scaleY; - - m_scaleX = m_logicalScaleX * m_userScaleX; - m_scaleY = m_logicalScaleY * m_userScaleY; - - m_deviceOriginX = m_internalDeviceOriginX + m_externalDeviceOriginX; - m_deviceOriginY = m_internalDeviceOriginY + m_externalDeviceOriginY; - - // CMB: if scale has changed call SetPen to recalulate the line width - if (m_scaleX != origScaleX || m_scaleY != origScaleY) - { - // this is a bit artificial, but we need to force wxDC to think - // the pen has changed - wxPen* pen = & GetPen(); - wxPen tempPen; - m_pen = tempPen; - SetPen(* pen); - } -}; - diff --git a/src/mac/carbon/dcclient.cpp b/src/mac/carbon/dcclient.cpp deleted file mode 100644 index 925d9609ee..0000000000 --- a/src/mac/carbon/dcclient.cpp +++ /dev/null @@ -1,635 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcclient.cpp -// Purpose: wxClientDC class -// Author: AUTHOR -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dcclient.h" -#endif - -#include "wx/dcclient.h" -#include "wx/dcmemory.h" -#include "wx/region.h" -#include - -//----------------------------------------------------------------------------- -// constants -//----------------------------------------------------------------------------- - -#define RAD2DEG 57.2957795131 - -//----------------------------------------------------------------------------- -// wxPaintDC -//----------------------------------------------------------------------------- - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxWindowDC, wxDC) -IMPLEMENT_DYNAMIC_CLASS(wxClientDC, wxWindowDC) -IMPLEMENT_DYNAMIC_CLASS(wxPaintDC, wxWindowDC) -#endif - -/* - * wxWindowDC - */ - -wxWindowDC::wxWindowDC(void) -{ -}; - -wxWindowDC::wxWindowDC( wxWindow *window ) -{ -}; - -wxWindowDC::~wxWindowDC(void) -{ -}; - -void wxWindowDC::FloodFill( long WXUNUSED(x1), long WXUNUSED(y1), - const wxColour& WXUNUSED(col), int WXUNUSED(style) ) -{ -}; - -bool wxWindowDC::GetPixel( long WXUNUSED(x1), long WXUNUSED(y1), wxColour *WXUNUSED(col) ) const -{ - return FALSE; -}; - -void wxWindowDC::DrawLine( long x1, long y1, long x2, long y2 ) -{ - if (!Ok()) return; - -}; - -void wxWindowDC::CrossHair( long x, long y ) -{ - if (!Ok()) return; - -}; - -void wxWindowDC::DrawArc( long x1, long y1, long x2, long y2, long xc, long yc ) -{ - if (!Ok()) return; - - long xx1 = XLOG2DEV(x1); - long yy1 = YLOG2DEV(y1); - long xx2 = XLOG2DEV(x2); - long yy2 = YLOG2DEV(y2); - long xxc = XLOG2DEV((long)xc); - long yyc = YLOG2DEV((long)yc); - double dx = xx1 - xxc; - double dy = yy1 - yyc; - double radius = sqrt(dx*dx+dy*dy); - long r = (long)radius; - double radius1, radius2; - - if (xx1 == xx2 && yy1 == yy2) - { - radius1 = 0.0; - radius2 = 360.0; - } - else - if (radius == 0.0) - { - radius1 = radius2 = 0.0; - } - else - { - radius1 = (xx1 - xxc == 0) ? - (yy1 - yyc < 0) ? 90.0 : -90.0 : - -atan2(double(yy1-yyc), double(xx1-xxc)) * RAD2DEG; - radius2 = (xx2 - xxc == 0) ? - (yy2 - yyc < 0) ? 90.0 : -90.0 : - -atan2(double(yy2-yyc), double(xx2-xxc)) * RAD2DEG; - }; - long alpha1 = long(radius1 * 64.0); - long alpha2 = long((radius2 - radius1) * 64.0); - while (alpha2 <= 0) alpha2 += 360*64; - while (alpha1 > 360*64) alpha1 -= 360*64; - - if (m_brush.GetStyle() != wxTRANSPARENT) {}; - - if (m_pen.GetStyle() != wxTRANSPARENT) {}; - -}; - -void wxWindowDC::DrawEllipticArc( long x, long y, long width, long height, double sa, double ea ) -{ - if (!Ok()) return; - - long xx = XLOG2DEV(x); - long yy = YLOG2DEV(y); - long ww = m_signX * XLOG2DEVREL(width); - long hh = m_signY * YLOG2DEVREL(height); - - // CMB: handle -ve width and/or height - if (ww < 0) { ww = -ww; xx = xx - ww; } - if (hh < 0) { hh = -hh; yy = yy - hh; } - - long start = long(sa * 64.0); - long end = long(ea * 64.0); - if (m_brush.GetStyle() != wxTRANSPARENT) {}; - - if (m_pen.GetStyle() != wxTRANSPARENT) {}; -}; - -void wxWindowDC::DrawPoint( long x, long y ) -{ - if (!Ok()) return; - - if (m_pen.GetStyle() != wxTRANSPARENT) {}; -}; - -void wxWindowDC::DrawLines( int n, wxPoint points[], long xoffset, long yoffset ) -{ - if (!Ok()) return; - - if (m_pen.GetStyle() == wxTRANSPARENT) return; - - for (int i = 0; i < n-1; i++) - { - long x1 = XLOG2DEV(points[i].x + xoffset); - long x2 = XLOG2DEV(points[i+1].x + xoffset); - long y1 = YLOG2DEV(points[i].y + yoffset); // oh, what a waste - long y2 = YLOG2DEV(points[i+1].y + yoffset); - }; -}; - -void wxWindowDC::DrawLines( wxList *points, long xoffset, long yoffset ) -{ - if (!Ok()) return; - - if (m_pen.GetStyle() == wxTRANSPARENT) return; - - wxNode *node = points->First(); - while (node->Next()) - { - wxPoint *point = (wxPoint*)node->Data(); - wxPoint *npoint = (wxPoint*)node->Next()->Data(); - long x1 = XLOG2DEV(point->x + xoffset); - long x2 = XLOG2DEV(npoint->x + xoffset); - long y1 = YLOG2DEV(point->y + yoffset); // and again... - long y2 = YLOG2DEV(npoint->y + yoffset); - node = node->Next(); - }; -}; - -void wxWindowDC::DrawPolygon( int WXUNUSED(n), wxPoint WXUNUSED(points)[], - long WXUNUSED(xoffset), long WXUNUSED(yoffset), int WXUNUSED(fillStyle) ) -{ - if (!Ok()) return; -}; - -void wxWindowDC::DrawPolygon( wxList *WXUNUSED(lines), long WXUNUSED(xoffset), - long WXUNUSED(yoffset), int WXUNUSED(fillStyle) ) -{ - if (!Ok()) return; -}; - -void wxWindowDC::DrawRectangle( long x, long y, long width, long height ) -{ - if (!Ok()) return; - - long xx = XLOG2DEV(x); - long yy = YLOG2DEV(y); - long ww = m_signX * XLOG2DEVREL(width); - long hh = m_signY * YLOG2DEVREL(height); - - // CMB: draw nothing if transformed w or h is 0 - if (ww == 0 || hh == 0) return; - - // CMB: handle -ve width and/or height - if (ww < 0) { ww = -ww; xx = xx - ww; } - if (hh < 0) { hh = -hh; yy = yy - hh; } - - if (m_brush.GetStyle() != wxTRANSPARENT) {}; - - if (m_pen.GetStyle() != wxTRANSPARENT) {}; -}; - -void wxWindowDC::DrawRoundedRectangle( long x, long y, long width, long height, double radius ) -{ - if (!Ok()) return; - - if (radius < 0.0) radius = - radius * ((width < height) ? width : height); - - long xx = XLOG2DEV(x); - long yy = YLOG2DEV(y); - long ww = m_signX * XLOG2DEVREL(width); - long hh = m_signY * YLOG2DEVREL(height); - long rr = XLOG2DEVREL((long)radius); - - // CMB: handle -ve width and/or height - if (ww < 0) { ww = -ww; xx = xx - ww; } - if (hh < 0) { hh = -hh; yy = yy - hh; } - - // CMB: if radius is zero use DrawRectangle() instead to avoid - // X drawing errors with small radii - if (rr == 0) - { - DrawRectangle( x, y, width, height ); - return; - } - - // CMB: draw nothing if transformed w or h is 0 - if (ww == 0 || hh == 0) return; - - // CMB: adjust size if outline is drawn otherwise the result is - // 1 pixel too wide and high - if (m_pen.GetStyle() != wxTRANSPARENT) - { - ww--; - hh--; - } - - // CMB: ensure dd is not larger than rectangle otherwise we - // get an hour glass shape - long dd = 2 * rr; - if (dd > ww) dd = ww; - if (dd > hh) dd = hh; - rr = dd / 2; - - if (m_brush.GetStyle() != wxTRANSPARENT) - { - }; - - if (m_pen.GetStyle() != wxTRANSPARENT) - { - }; -}; - -void wxWindowDC::DrawEllipse( long x, long y, long width, long height ) -{ - if (!Ok()) return; - - long xx = XLOG2DEV(x); - long yy = YLOG2DEV(y); - long ww = m_signX * XLOG2DEVREL(width); - long hh = m_signY * YLOG2DEVREL(height); - - // CMB: handle -ve width and/or height - if (ww < 0) { ww = -ww; xx = xx - ww; } - if (hh < 0) { hh = -hh; yy = yy - hh; } - - if (m_brush.GetStyle() != wxTRANSPARENT) {}; - - if (m_pen.GetStyle() != wxTRANSPARENT) {}; -}; - -bool wxWindowDC::CanDrawBitmap(void) const -{ - return TRUE; -}; - -void wxWindowDC::DrawIcon( const wxIcon &icon, long x, long y, bool useMask ) -{ - if (!Ok()) return; - - if (!icon.Ok()) return; - - int xx = XLOG2DEV(x); - int yy = YLOG2DEV(y); - -}; - -bool wxWindowDC::Blit( long xdest, long ydest, long width, long height, - wxDC *source, long xsrc, long ysrc, int WXUNUSED(logical_func), bool WXUNUSED(useMask) ) -{ - if (!Ok()) return FALSE; - - // CMB 20/5/98: add blitting of bitmaps - if (source->IsKindOf(CLASSINFO(wxMemoryDC))) - { - wxMemoryDC* srcDC = (wxMemoryDC*)source; - /* - GdkBitmap* bmap = srcDC->m_selected.GetBitmap(); - if (bmap) - { - gdk_draw_bitmap ( - m_window, - m_textGC, - bmap, - source->DeviceToLogicalX(xsrc), source->DeviceToLogicalY(ysrc), - XLOG2DEV(xdest), YLOG2DEV(ydest), - source->DeviceToLogicalXRel(width), source->DeviceToLogicalYRel(height) - ); - return TRUE; - } - */ - } - - return TRUE; -}; - -void wxWindowDC::DrawText( const wxString &text, long x, long y, bool -WXUNUSED(use16) ) -{ - if (!Ok()) return; - -}; - - - -bool wxWindowDC::CanGetTextExtent(void) const -{ - return TRUE; -}; - -void wxWindowDC::GetTextExtent( const wxString &string, long *width, long *height, - long *WXUNUSED(descent), long *WXUNUSED(externalLeading), - wxFont *WXUNUSED(theFont), bool WXUNUSED(use16) ) -{ - if (!Ok()) return; - -}; - -long wxWindowDC::GetCharWidth(void) -{ - if (!Ok()) return 0; - return 0; -}; - -long wxWindowDC::GetCharHeight(void) -{ - if (!Ok()) return 0; - return 0; -}; - -void wxWindowDC::Clear(void) -{ - if (!Ok()) return; - -}; - -void wxWindowDC::SetFont( const wxFont &font ) -{ - if (!Ok()) return; - - m_font = font; -}; - -void wxWindowDC::SetPen( const wxPen &pen ) -{ - if (!Ok()) return; - - if (m_pen == pen) return; - - m_pen = pen; - - if (!m_pen.Ok()) return; -}; - -void wxWindowDC::SetBrush( const wxBrush &brush ) -{ - if (!Ok()) return; - - if (m_brush == brush) return; - - m_brush = brush; - - if (!m_brush.Ok()) return; - -}; - -void wxWindowDC::SetBackground( const wxBrush &brush ) -{ - if (!Ok()) return; - - if (m_backgroundBrush == brush) return; - - m_backgroundBrush = brush; - - if (!m_backgroundBrush.Ok()) return; - -}; - -void wxWindowDC::SetLogicalFunction( int function ) -{ - if (m_logicalFunction == function) return; -}; - -void wxWindowDC::SetTextForeground( const wxColour &col ) -{ - if (!Ok()) return; - - if (m_textForegroundColour == col) return; - - m_textForegroundColour = col; - if (!m_textForegroundColour.Ok()) return; -}; - -void wxWindowDC::SetTextBackground( const wxColour &col ) -{ - if (!Ok()) return; - - if (m_textBackgroundColour == col) return; - - m_textBackgroundColour = col; - if (!m_textBackgroundColour.Ok()) return; -}; - -void wxWindowDC::SetBackgroundMode( int mode ) -{ - m_backgroundMode = mode; - - if (m_brush.GetStyle() != wxSOLID && m_brush.GetStyle() != wxTRANSPARENT) - { - } -}; - -void wxWindowDC::SetPalette( const wxPalette& WXUNUSED(palette) ) -{ -}; - -void wxWindowDC::SetClippingRegion( long x, long y, long width, long height ) -{ - wxDC::SetClippingRegion( x, y, width, height ); - - // TODO - -}; - -void wxWindowDC::SetClippingRegion( const wxRegion& region ) -{ - wxRect box = region.GetBox(); - - wxDC::SetClippingRegion( box.x, box.y, box.width, box.height ); - - // TODO -} - -void wxWindowDC::DestroyClippingRegion(void) -{ - wxDC::DestroyClippingRegion(); - -}; - -// ----------------------------------- spline code ---------------------------------------- - -void wx_quadratic_spline(double a1, double b1, double a2, double b2, - double a3, double b3, double a4, double b4); -void wx_clear_stack(void); -int wx_spline_pop(double *x1, double *y1, double *x2, double *y2, double *x3, - double *y3, double *x4, double *y4); -void wx_spline_push(double x1, double y1, double x2, double y2, double x3, double y3, - double x4, double y4); -static bool wx_spline_add_point(double x, double y); -static void wx_spline_draw_point_array(wxDC *dc); - -wxList wx_spline_point_list; - -#define half(z1, z2) ((z1+z2)/2.0) -#define THRESHOLD 5 - -/* iterative version */ - -void wx_quadratic_spline(double a1, double b1, double a2, double b2, double a3, double b3, double a4, - double b4) -{ - register double xmid, ymid; - double x1, y1, x2, y2, x3, y3, x4, y4; - - wx_clear_stack(); - wx_spline_push(a1, b1, a2, b2, a3, b3, a4, b4); - - while (wx_spline_pop(&x1, &y1, &x2, &y2, &x3, &y3, &x4, &y4)) { - xmid = (double)half(x2, x3); - ymid = (double)half(y2, y3); - if (fabs(x1 - xmid) < THRESHOLD && fabs(y1 - ymid) < THRESHOLD && - fabs(xmid - x4) < THRESHOLD && fabs(ymid - y4) < THRESHOLD) { - wx_spline_add_point( x1, y1 ); - wx_spline_add_point( xmid, ymid ); - } else { - wx_spline_push(xmid, ymid, (double)half(xmid, x3), (double)half(ymid, y3), - (double)half(x3, x4), (double)half(y3, y4), x4, y4); - wx_spline_push(x1, y1, (double)half(x1, x2), (double)half(y1, y2), - (double)half(x2, xmid), (double)half(y2, ymid), xmid, ymid); - } - } -} - -/* utilities used by spline drawing routines */ - -typedef struct wx_spline_stack_struct { - double x1, y1, x2, y2, x3, y3, x4, y4; -} Stack; - -#define SPLINE_STACK_DEPTH 20 -static Stack wx_spline_stack[SPLINE_STACK_DEPTH]; -static Stack *wx_stack_top; -static int wx_stack_count; - -void wx_clear_stack(void) -{ - wx_stack_top = wx_spline_stack; - wx_stack_count = 0; -} - -void wx_spline_push(double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4) -{ - wx_stack_top->x1 = x1; - wx_stack_top->y1 = y1; - wx_stack_top->x2 = x2; - wx_stack_top->y2 = y2; - wx_stack_top->x3 = x3; - wx_stack_top->y3 = y3; - wx_stack_top->x4 = x4; - wx_stack_top->y4 = y4; - wx_stack_top++; - wx_stack_count++; -} - -int wx_spline_pop(double *x1, double *y1, double *x2, double *y2, - double *x3, double *y3, double *x4, double *y4) -{ - if (wx_stack_count == 0) - return (0); - wx_stack_top--; - wx_stack_count--; - *x1 = wx_stack_top->x1; - *y1 = wx_stack_top->y1; - *x2 = wx_stack_top->x2; - *y2 = wx_stack_top->y2; - *x3 = wx_stack_top->x3; - *y3 = wx_stack_top->y3; - *x4 = wx_stack_top->x4; - *y4 = wx_stack_top->y4; - return (1); -} - -static bool wx_spline_add_point(double x, double y) -{ - wxPoint *point = new wxPoint ; - point->x = (int) x; - point->y = (int) y; - wx_spline_point_list.Append((wxObject*)point); - return TRUE; -} - -static void wx_spline_draw_point_array(wxDC *dc) -{ - dc->DrawLines(&wx_spline_point_list, 0, 0 ); - wxNode *node = wx_spline_point_list.First(); - while (node) - { - wxPoint *point = (wxPoint *)node->Data(); - delete point; - delete node; - node = wx_spline_point_list.First(); - } -} - -void wxWindowDC::DrawSpline( wxList *points ) -{ - wxPoint *p; - double cx1, cy1, cx2, cy2, cx3, cy3, cx4, cy4; - double x1, y1, x2, y2; - - wxNode *node = points->First(); - p = (wxPoint *)node->Data(); - - x1 = p->x; - y1 = p->y; - - node = node->Next(); - p = (wxPoint *)node->Data(); - - x2 = p->x; - y2 = p->y; - cx1 = (double)((x1 + x2) / 2); - cy1 = (double)((y1 + y2) / 2); - cx2 = (double)((cx1 + x2) / 2); - cy2 = (double)((cy1 + y2) / 2); - - wx_spline_add_point(x1, y1); - - while ((node = node->Next()) != NULL) - { - p = (wxPoint *)node->Data(); - x1 = x2; - y1 = y2; - x2 = p->x; - y2 = p->y; - cx4 = (double)(x1 + x2) / 2; - cy4 = (double)(y1 + y2) / 2; - cx3 = (double)(x1 + cx4) / 2; - cy3 = (double)(y1 + cy4) / 2; - - wx_quadratic_spline(cx1, cy1, cx2, cy2, cx3, cy3, cx4, cy4); - - cx1 = cx4; - cy1 = cy4; - cx2 = (double)(cx1 + x2) / 2; - cy2 = (double)(cy1 + y2) / 2; - } - - wx_spline_add_point( cx1, cy1 ); - wx_spline_add_point( x2, y2 ); - - wx_spline_draw_point_array( this ); -}; diff --git a/src/mac/carbon/dcmemory.cpp b/src/mac/carbon/dcmemory.cpp deleted file mode 100644 index 7cbd330821..0000000000 --- a/src/mac/carbon/dcmemory.cpp +++ /dev/null @@ -1,64 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcmemory.cpp -// Purpose: wxMemoryDC class -// Author: AUTHOR -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dcmemory.h" -#endif - -#include "wx/dcmemory.h" - -//----------------------------------------------------------------------------- -// wxMemoryDC -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxMemoryDC,wxPaintDC) - -wxMemoryDC::wxMemoryDC(void) -{ - m_ok = FALSE; -}; - -wxMemoryDC::wxMemoryDC( wxDC *WXUNUSED(dc) ) -{ - m_ok = FALSE; -}; - -wxMemoryDC::~wxMemoryDC(void) -{ -}; - -void wxMemoryDC::SelectObject( const wxBitmap& bitmap ) -{ - m_selected = bitmap; - if (m_selected.Ok()) - { - } - else - { - m_ok = FALSE; - }; -}; - -void wxMemoryDC::GetSize( int *width, int *height ) const -{ - if (m_selected.Ok()) - { - if (width) (*width) = m_selected.GetWidth(); - if (height) (*height) = m_selected.GetHeight(); - } - else - { - if (width) (*width) = 0; - if (height) (*height) = 0; - }; -}; - - diff --git a/src/mac/carbon/dcscreen.cpp b/src/mac/carbon/dcscreen.cpp deleted file mode 100644 index e03bbac0c8..0000000000 --- a/src/mac/carbon/dcscreen.cpp +++ /dev/null @@ -1,32 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcscreen.cpp -// Purpose: wxScreenDC class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dcscreen.h" -#endif - -#include "wx/dcscreen.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxScreenDC, wxWindowDC) -#endif - -// Create a DC representing the whole screen -wxScreenDC::wxScreenDC() -{ - // TODO -} - -wxScreenDC::~wxScreenDC() -{ - // TODO -} - diff --git a/src/mac/carbon/dialog.cpp b/src/mac/carbon/dialog.cpp deleted file mode 100644 index 7d6d99744d..0000000000 --- a/src/mac/carbon/dialog.cpp +++ /dev/null @@ -1,287 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dialog.cpp -// Purpose: wxDialog class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dialog.h" -#endif - -#include "wx/dialog.h" -#include "wx/utils.h" -#include "wx/frame.h" -#include "wx/app.h" -#include "wx/settings.h" - -// Lists to keep track of windows, so we can disable/enable them -// for modal dialogs -wxList wxModalDialogs; -wxList wxModelessWindows; // Frames and modeless dialogs -extern wxList wxPendingDelete; - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxDialog, wxPanel) - -BEGIN_EVENT_TABLE(wxDialog, wxPanel) - EVT_BUTTON(wxID_OK, wxDialog::OnOK) - EVT_BUTTON(wxID_APPLY, wxDialog::OnApply) - EVT_BUTTON(wxID_CANCEL, wxDialog::OnCancel) - EVT_CHAR_HOOK(wxDialog::OnCharHook) - EVT_SYS_COLOUR_CHANGED(wxDialog::OnSysColourChanged) - EVT_CLOSE(wxDialog::OnCloseWindow) -END_EVENT_TABLE() - -#endif - -wxDialog::wxDialog() -{ - SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE)); -} - -bool wxDialog::Create(wxWindow *parent, wxWindowID id, - const wxString& title, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - m_windowStyle = style; - - SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE)); - SetName(name); - - if (!parent) - wxTopLevelWindows.Append(this); - - if (parent) parent->AddChild(this); - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - // TODO: create dialog - - return FALSE; -} - -void wxDialog::SetModal(bool flag) -{ - if ( flag ) - m_windowStyle |= wxDIALOG_MODAL ; - else - if ( m_windowStyle & wxDIALOG_MODAL ) - m_windowStyle -= wxDIALOG_MODAL ; - - wxModelessWindows.DeleteObject(this); - if (!flag) - wxModelessWindows.Append(this); -} - -wxDialog::~wxDialog() -{ - // TODO - wxTopLevelWindows.DeleteObject(this); - - if ( (GetWindowStyleFlag() & wxDIALOG_MODAL) != wxDIALOG_MODAL ) - wxModelessWindows.DeleteObject(this); - - // If this is the last top-level window, exit. - if (wxTheApp && (wxTopLevelWindows.Number() == 0)) - { - wxTheApp->SetTopWindow(NULL); - - if (wxTheApp->GetExitOnFrameDelete()) - { - // TODO: exit - } - } -} - -// By default, pressing escape cancels the dialog -void wxDialog::OnCharHook(wxKeyEvent& event) -{ - if (event.m_keyCode == WXK_ESCAPE) - { - // Behaviour changed in 2.0: we'll send a Cancel message - // to the dialog instead of Close. - wxCommandEvent cancelEvent(wxEVT_COMMAND_BUTTON_CLICKED, wxID_CANCEL); - cancelEvent.SetEventObject( this ); - GetEventHandler()->ProcessEvent(cancelEvent); - - return; - } - // We didn't process this event. - event.Skip(); -} - -void wxDialog::Iconize(bool WXUNUSED(iconize)) -{ - // TODO -} - -bool wxDialog::IsIconized() const -{ - // TODO - return FALSE; -} - -void wxDialog::SetClientSize(int width, int height) -{ - // TODO -} - -void wxDialog::GetPosition(int *x, int *y) const -{ - // TODO -} - -bool wxDialog::Show(bool show) -{ - // TODO - return FALSE; -} - -void wxDialog::SetTitle(const wxString& title) -{ - // TODO -} - -wxString wxDialog::GetTitle() const -{ - // TODO - return wxString(""); -} - -void wxDialog::Centre(int direction) -{ - int x_offset,y_offset ; - int display_width, display_height; - int width, height, x, y; - wxWindow *parent = GetParent(); - if ((direction & wxCENTER_FRAME) && parent) - { - parent->GetPosition(&x_offset,&y_offset) ; - parent->GetSize(&display_width,&display_height) ; - } - else - { - wxDisplaySize(&display_width, &display_height); - x_offset = 0 ; - y_offset = 0 ; - } - - GetSize(&width, &height); - GetPosition(&x, &y); - - if (direction & wxHORIZONTAL) - x = (int)((display_width - width)/2); - if (direction & wxVERTICAL) - y = (int)((display_height - height)/2); - - SetSize(x+x_offset, y+y_offset, width, height); -} - -// Replacement for Show(TRUE) for modal dialogs - returns return code -int wxDialog::ShowModal() -{ - m_windowStyle |= wxDIALOG_MODAL; - // TODO: modal showing - Show(TRUE); - return GetReturnCode(); -} - -void wxDialog::EndModal(int retCode) -{ - SetReturnCode(retCode); - // TODO modal un-showing - Show(FALSE); -} - -// Standard buttons -void wxDialog::OnOK(wxCommandEvent& event) -{ - if ( Validate() && TransferDataFromWindow() ) - { - if ( IsModal() ) - EndModal(wxID_OK); - else - { - SetReturnCode(wxID_OK); - this->Show(FALSE); - } - } -} - -void wxDialog::OnApply(wxCommandEvent& event) -{ - if (Validate()) - TransferDataFromWindow(); - // TODO probably need to disable the Apply button until things change again -} - -void wxDialog::OnCancel(wxCommandEvent& event) -{ - if ( IsModal() ) - EndModal(wxID_CANCEL); - else - { - SetReturnCode(wxID_CANCEL); - this->Show(FALSE); - } -} - -bool wxDialog::OnClose() -{ - // Behaviour changed in 2.0: we'll send a Cancel message by default, - // which may close the dialog. - // Check for looping if the Cancel event handler calls Close() - - static wxList closing; - - if ( closing.Member(this) ) - return FALSE; - - closing.Append(this); - - wxCommandEvent cancelEvent(wxEVT_COMMAND_BUTTON_CLICKED, wxID_CANCEL); - cancelEvent.SetEventObject( this ); - GetEventHandler()->ProcessEvent(cancelEvent); - - closing.DeleteObject(this); - - return FALSE; -} - -void wxDialog::OnCloseWindow(wxCloseEvent& event) -{ - // Compatibility - if ( GetEventHandler()->OnClose() || event.GetForce()) - { - this->Destroy(); - } -} - -// Destroy the window (delayed, if a managed window) -bool wxDialog::Destroy() -{ - if (!wxPendingDelete.Member(this)) - wxPendingDelete.Append(this); - return TRUE; -} - -void wxDialog::OnSysColourChanged(wxSysColourChangedEvent& event) -{ - SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE)); - Refresh(); -} - -void wxDialog::Fit() -{ -} diff --git a/src/mac/carbon/dirdlg.cpp b/src/mac/carbon/dirdlg.cpp deleted file mode 100644 index 095621b978..0000000000 --- a/src/mac/carbon/dirdlg.cpp +++ /dev/null @@ -1,42 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dirdlg.cpp -// Purpose: wxDirDialog -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dirdlg.h" -#endif - -#include "wx/defs.h" -#include "wx/utils.h" -#include "wx/dialog.h" -#include "wx/dirdlg.h" - -#include "wx/cmndata.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_CLASS(wxDirDialog, wxDialog) -#endif - -wxDirDialog::wxDirDialog(wxWindow *parent, const wxString& message, - const wxString& defaultPath, - long style, const wxPoint& pos) -{ - m_message = message; - m_dialogStyle = style; - m_parent = parent; - m_path = defaultPath; -} - -int wxDirDialog::ShowModal() -{ - // TODO - return wxID_CANCEL; -} - diff --git a/src/mac/carbon/dnd.cpp b/src/mac/carbon/dnd.cpp deleted file mode 100644 index 32088eef0f..0000000000 --- a/src/mac/carbon/dnd.cpp +++ /dev/null @@ -1,133 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: dnd.cpp -// Purpose: wxDropTarget, wxDropSource, wxDataObject implementation -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 AUTHOR -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dnd.h" -#endif - -#include "wx/dnd.h" -#include "wx/window.h" -#include "wx/app.h" -#include "wx/gdicmn.h" - -// ---------------------------------------------------------------------------- -// global -// ---------------------------------------------------------------------------- - -// ---------------------------------------------------------------------------- -// wxDropTarget -// ---------------------------------------------------------------------------- - -wxDropTarget::wxDropTarget() -{ -}; - -wxDropTarget::~wxDropTarget() -{ -}; - -// ---------------------------------------------------------------------------- -// wxTextDropTarget -// ---------------------------------------------------------------------------- - -bool wxTextDropTarget::OnDrop( long x, long y, const void *pData ) -{ - OnDropText( x, y, (const char*)pData ); - return TRUE; -}; - -bool wxTextDropTarget::OnDropText( long x, long y, const char *psz ) -{ - printf( "Got dropped text: %s.\n", psz ); - printf( "At x: %d, y: %d.\n", (int)x, (int)y ); - return TRUE; -}; - -size_t wxTextDropTarget::GetFormatCount() const -{ - return 1; -} - -wxDataFormat wxTextDropTarget::GetFormat(size_t WXUNUSED(n)) const -{ - return wxDF_TEXT; -} - -// ---------------------------------------------------------------------------- -// wxFileDropTarget -// ---------------------------------------------------------------------------- - -bool wxFileDropTarget::OnDropFiles( long x, long y, size_t nFiles, const char * const WXUNUSED(aszFiles)[] ) -{ - printf( "Got %d dropped files.\n", (int)nFiles ); - printf( "At x: %d, y: %d.\n", (int)x, (int)y ); - return TRUE; -} - -bool wxFileDropTarget::OnDrop(long x, long y, const void *WXUNUSED(pData) ) -{ - char *str = "/this/is/a/path.txt"; - - return OnDropFiles(x, y, 1, &str ); -} - -size_t wxFileDropTarget::GetFormatCount() const -{ - return 1; -} - -wxDataFormat wxFileDropTarget::GetFormat(size_t WXUNUSED(n)) const -{ - return wxDF_FILENAME; -} - -//------------------------------------------------------------------------- -// wxDropSource -//------------------------------------------------------------------------- - -//----------------------------------------------------------------------------- -// drag request - -wxDropSource::wxDropSource( wxWindow *win ) -{ - // TODO - // m_window = win; - m_data = NULL; - - // m_defaultCursor = wxCursor( wxCURSOR_NO_ENTRY ); - // m_goaheadCursor = wxCursor( wxCURSOR_HAND ); -}; - -wxDropSource::wxDropSource( wxDataObject &data, wxWindow *win ) -{ - // TODO - // m_window = win; - m_data = &data; - - // m_defaultCursor = wxCursor( wxCURSOR_NO_ENTRY ); - // m_goaheadCursor = wxCursor( wxCURSOR_HAND ); -}; - -void wxDropSource::SetData( wxDataObject &data ) -{ - m_data = &data; -}; - -wxDropSource::~wxDropSource(void) -{ -}; - -wxDragResult wxDropSource::DoDragDrop( bool WXUNUSED(bAllowMove) ) -{ - // TODO - return wxDragError; -}; - diff --git a/src/mac/carbon/filedlg.cpp b/src/mac/carbon/filedlg.cpp deleted file mode 100644 index 2aeffdf926..0000000000 --- a/src/mac/carbon/filedlg.cpp +++ /dev/null @@ -1,143 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: filedlg.cpp -// Purpose: wxFileDialog -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "filedlg.h" -#endif - -#include "wx/defs.h" -#include "wx/utils.h" -#include "wx/dialog.h" -#include "wx/filedlg.h" -#include "wx/intl.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_CLASS(wxFileDialog, wxDialog) -#endif - -char *wxFileSelector(const char *title, - const char *defaultDir, const char *defaultFileName, - const char *defaultExtension, const char *filter, int flags, - wxWindow *parent, int x, int y) -{ - // If there's a default extension specified but no filter, we create a suitable - // filter. - - wxString filter2(""); - if ( defaultExtension && !filter ) - filter2 = wxString("*.") + wxString(defaultExtension) ; - else if ( filter ) - filter2 = filter; - - wxString defaultDirString; - if (defaultDir) - defaultDirString = defaultDir; - else - defaultDirString = ""; - - wxString defaultFilenameString; - if (defaultFileName) - defaultFilenameString = defaultFileName; - else - defaultFilenameString = ""; - - wxFileDialog fileDialog(parent, title, defaultDirString, defaultFilenameString, filter2, flags, wxPoint(x, y)); - - if ( fileDialog.ShowModal() == wxID_OK ) - { - strcpy(wxBuffer, (const char *)fileDialog.GetPath()); - return wxBuffer; - } - else - return NULL; -} - -char *wxFileSelectorEx(const char *title, - const char *defaultDir, - const char *defaultFileName, - int* defaultFilterIndex, - const char *filter, - int flags, - wxWindow* parent, - int x, - int y) - -{ - wxFileDialog fileDialog(parent, title ? title : "", defaultDir ? defaultDir : "", - defaultFileName ? defaultFileName : "", filter ? filter : "", flags, wxPoint(x, y)); - - if ( fileDialog.ShowModal() == wxID_OK ) - { - *defaultFilterIndex = fileDialog.GetFilterIndex(); - strcpy(wxBuffer, (const char *)fileDialog.GetPath()); - return wxBuffer; - } - else - return NULL; -} - -wxFileDialog::wxFileDialog(wxWindow *parent, const wxString& message, - const wxString& defaultDir, const wxString& defaultFileName, const wxString& wildCard, - long style, const wxPoint& pos) -{ - m_message = message; - m_dialogStyle = style; - m_parent = parent; - m_path = ""; - m_fileName = defaultFileName; - m_dir = defaultDir; - m_wildCard = wildCard; - m_filterIndex = 1; -} - -int wxFileDialog::ShowModal() -{ - // TODO - return wxID_CANCEL; -} - -// Generic file load/save dialog -static char * -wxDefaultFileSelector(bool load, const char *what, const char *extension, const char *default_name, wxWindow *parent) -{ - char *ext = (char *)extension; - - char prompt[50]; - wxString str; - if (load) - str = "Load %s file"; - else - str = "Save %s file"; - sprintf(prompt, wxGetTranslation(str), what); - - if (*ext == '.') ext++; - char wild[60]; - sprintf(wild, "*.%s", ext); - - return wxFileSelector (prompt, NULL, default_name, ext, wild, 0, parent); -} - -// Generic file load dialog -char * -wxLoadFileSelector(const char *what, const char *extension, const char *default_name, wxWindow *parent) -{ - return wxDefaultFileSelector(TRUE, what, extension, default_name, parent); -} - - -// Generic file save dialog -char * -wxSaveFileSelector(const char *what, const char *extension, const char *default_name, wxWindow *parent) -{ - return wxDefaultFileSelector(FALSE, what, extension, default_name, parent); -} - - diff --git a/src/mac/carbon/font.cpp b/src/mac/carbon/font.cpp deleted file mode 100644 index 493a6a25ba..0000000000 --- a/src/mac/carbon/font.cpp +++ /dev/null @@ -1,244 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: font.cpp -// Purpose: wxFont class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "font.h" -#endif - -#include "wx/defs.h" -#include "wx/string.h" -#include "wx/font.h" -#include "wx/gdicmn.h" - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxFont, wxGDIObject) -#endif - -wxFontRefData::wxFontRefData() -{ - m_style = 0; - m_pointSize = 0; - m_family = 0; - m_style = 0; - m_weight = 0; - m_underlined = 0; - m_faceName = ""; -/* TODO - m_hFont = 0; -*/ -} - -wxFontRefData::wxFontRefData(const wxFontRefData& data) -{ - m_style = data.m_style; - m_pointSize = data.m_pointSize; - m_family = data.m_family; - m_style = data.m_style; - m_weight = data.m_weight; - m_underlined = data.m_underlined; - m_faceName = data.m_faceName; -/* TODO - m_hFont = 0; -*/ -} - -wxFontRefData::~wxFontRefData() -{ - // TODO: delete font data -} - -wxFont::wxFont() -{ - if ( wxTheFontList ) - wxTheFontList->Append(this); -} - -wxFont::wxFont(int pointSize, int family, int style, int weight, bool underlined, const wxString& faceName) -{ - Create(pointSize, family, style, weight, underlined, faceName); - - if ( wxTheFontList ) - wxTheFontList->Append(this); -} - -bool wxFont::Create(int pointSize, int family, int style, int weight, bool underlined, const wxString& faceName) -{ - UnRef(); - m_refData = new wxFontRefData; - - M_FONTDATA->m_family = family; - M_FONTDATA->m_style = style; - M_FONTDATA->m_weight = weight; - M_FONTDATA->m_pointSize = pointSize; - M_FONTDATA->m_underlined = underlined; - M_FONTDATA->m_faceName = faceName; - - RealizeResource(); - - return TRUE; -} - -wxFont::~wxFont() -{ - if (wxTheFontList) - wxTheFontList->DeleteObject(this); -} - -bool wxFont::RealizeResource() -{ - // TODO: create the font (if there is a native font object) - return FALSE; -} - -void wxFont::Unshare() -{ - // Don't change shared data - if (!m_refData) - { - m_refData = new wxFontRefData(); - } - else - { - wxFontRefData* ref = new wxFontRefData(*(wxFontRefData*)m_refData); - UnRef(); - m_refData = ref; - } -} - -void wxFont::SetPointSize(int pointSize) -{ - Unshare(); - - M_FONTDATA->m_pointSize = pointSize; - - RealizeResource(); -} - -void wxFont::SetFamily(int family) -{ - Unshare(); - - M_FONTDATA->m_family = family; - - RealizeResource(); -} - -void wxFont::SetStyle(int style) -{ - Unshare(); - - M_FONTDATA->m_style = style; - - RealizeResource(); -} - -void wxFont::SetWeight(int weight) -{ - Unshare(); - - M_FONTDATA->m_weight = weight; - - RealizeResource(); -} - -void wxFont::SetFaceName(const wxString& faceName) -{ - Unshare(); - - M_FONTDATA->m_faceName = faceName; - - RealizeResource(); -} - -void wxFont::SetUnderlined(bool underlined) -{ - Unshare(); - - M_FONTDATA->m_underlined = underlined; - - RealizeResource(); -} - -wxString wxFont::GetFamilyString() const -{ - wxString fam(""); - switch (GetFamily()) - { - case wxDECORATIVE: - fam = "wxDECORATIVE"; - break; - case wxROMAN: - fam = "wxROMAN"; - break; - case wxSCRIPT: - fam = "wxSCRIPT"; - break; - case wxSWISS: - fam = "wxSWISS"; - break; - case wxMODERN: - fam = "wxMODERN"; - break; - case wxTELETYPE: - fam = "wxTELETYPE"; - break; - default: - fam = "wxDEFAULT"; - break; - } - return fam; -} - -/* New font system */ -wxString wxFont::GetFaceName() const -{ - wxString str(""); - if (M_FONTDATA) - str = M_FONTDATA->m_faceName ; - return str; -} - -wxString wxFont::GetStyleString() const -{ - wxString styl(""); - switch (GetStyle()) - { - case wxITALIC: - styl = "wxITALIC"; - break; - case wxSLANT: - styl = "wxSLANT"; - break; - default: - styl = "wxNORMAL"; - break; - } - return styl; -} - -wxString wxFont::GetWeightString() const -{ - wxString w(""); - switch (GetWeight()) - { - case wxBOLD: - w = "wxBOLD"; - break; - case wxLIGHT: - w = "wxLIGHT"; - break; - default: - w = "wxNORMAL"; - break; - } - return w; -} - diff --git a/src/mac/carbon/fontdlg.cpp b/src/mac/carbon/fontdlg.cpp deleted file mode 100644 index 60e8e9b987..0000000000 --- a/src/mac/carbon/fontdlg.cpp +++ /dev/null @@ -1,55 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: fontdlg.cpp -// Purpose: wxFontDialog class. NOTE: you can use the generic class -// if you wish, instead of implementing this. -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "fontdlg.h" -#endif - -#include "wx/stubs/fontdlg.h" -#include "wx/cmndata.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxFontDialog, wxDialog) -#endif - -/* - * wxFontDialog - */ - -wxFontDialog::wxFontDialog() -{ - m_dialogParent = NULL; -} - -wxFontDialog::wxFontDialog(wxWindow *parent, wxFontData *data) -{ - Create(parent, data); -} - -bool wxFontDialog::Create(wxWindow *parent, wxFontData *data) -{ - m_dialogParent = parent; - - if (data) - m_fontData = *data; - - // TODO: you may need to do dialog creation here, unless it's - // done in ShowModal. - return TRUE; -} - -int wxFontDialog::ShowModal() -{ - // TODO: show (maybe create) the dialog - return wxID_CANCEL; -} - diff --git a/src/mac/carbon/frame.cpp b/src/mac/carbon/frame.cpp deleted file mode 100644 index 1e8c9e9ae5..0000000000 --- a/src/mac/carbon/frame.cpp +++ /dev/null @@ -1,571 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: frame.cpp -// Purpose: wxFrame -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "frame.h" -#endif - -#include "wx/frame.h" -#include "wx/statusbr.h" -#include "wx/toolbar.h" -#include "wx/menuitem.h" -#include "wx/menu.h" -#include "wx/dcclient.h" -#include "wx/dialog.h" -#include "wx/settings.h" -#include "wx/app.h" - -extern wxList wxModelessWindows; -extern wxList wxPendingDelete; - -#if !USE_SHARED_LIBRARY -BEGIN_EVENT_TABLE(wxFrame, wxWindow) - EVT_SIZE(wxFrame::OnSize) - EVT_ACTIVATE(wxFrame::OnActivate) - EVT_MENU_HIGHLIGHT_ALL(wxFrame::OnMenuHighlight) - EVT_SYS_COLOUR_CHANGED(wxFrame::OnSysColourChanged) - EVT_IDLE(wxFrame::OnIdle) - EVT_CLOSE(wxFrame::OnCloseWindow) -END_EVENT_TABLE() - -IMPLEMENT_DYNAMIC_CLASS(wxFrame, wxWindow) -#endif - -#if wxUSE_NATIVE_STATUSBAR -bool wxFrame::m_useNativeStatusBar = TRUE; -#else -bool wxFrame::m_useNativeStatusBar = FALSE; -#endif - -wxFrame::wxFrame() -{ - m_frameToolBar = NULL ; - m_frameMenuBar = NULL; - m_frameStatusBar = NULL; - - m_windowParent = NULL; - m_iconized = FALSE; -} - -bool wxFrame::Create(wxWindow *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - if (!parent) - wxTopLevelWindows.Append(this); - - SetName(name); - m_windowStyle = style; - m_frameMenuBar = NULL; - m_frameToolBar = NULL ; - m_frameStatusBar = NULL; - - SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE)); - - if ( id > -1 ) - m_windowId = id; - else - m_windowId = (int)NewControlId(); - - if (parent) parent->AddChild(this); - - wxModelessWindows.Append(this); - - // TODO: create frame. - - return FALSE; -} - -wxFrame::~wxFrame() -{ - wxTopLevelWindows.DeleteObject(this); - - if (m_frameStatusBar) - delete m_frameStatusBar; - if (m_frameMenuBar) - delete m_frameMenuBar; - -/* Check if it's the last top-level window */ - - if (wxTheApp && (wxTopLevelWindows.Number() == 0)) - { - wxTheApp->SetTopWindow(NULL); - - if (wxTheApp->GetExitOnFrameDelete()) - { - // TODO signal to the app that we're going to close - } - } - - wxModelessWindows.DeleteObject(this); -} - -// Get size *available for subwindows* i.e. excluding menu bar, toolbar etc. -void wxFrame::GetClientSize(int *x, int *y) const -{ - // TODO -} - -// Set the client size (i.e. leave the calculation of borders etc. -// to wxWindows) -void wxFrame::SetClientSize(int width, int height) -{ - // TODO -} - -void wxFrame::GetSize(int *width, int *height) const -{ - // TODO -} - -void wxFrame::GetPosition(int *x, int *y) const -{ - // TODO -} - -void wxFrame::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -bool wxFrame::Show(bool show) -{ - // TODO - return FALSE; -} - -void wxFrame::Iconize(bool iconize) -{ - // TODO -} - -// Equivalent to maximize/restore in Windows -void wxFrame::Maximize(bool maximize) -{ - // TODO -} - -bool wxFrame::IsIconized() const -{ - // TODO - return FALSE; -} - -// Is the frame maximized? -bool wxFrame::IsMaximized(void) const -{ - // TODO - return FALSE; -} - -void wxFrame::SetTitle(const wxString& title) -{ - // TODO -} - -wxString wxFrame::GetTitle() const -{ - // TODO - return wxString(""); -} - -void wxFrame::SetIcon(const wxIcon& icon) -{ - m_icon = icon; - // TODO -} - -wxStatusBar *wxFrame::OnCreateStatusBar(int number, long style, wxWindowID id, - const wxString& name) -{ - wxStatusBar *statusBar = NULL; - - statusBar = new wxStatusBar(this, id, wxPoint(0, 0), wxSize(100, 20), - style, name); - - // Set the height according to the font and the border size - wxClientDC dc(statusBar); - dc.SetFont(statusBar->GetFont()); - - long x, y; - dc.GetTextExtent("X", &x, &y); - - int height = (int)( (y * 1.1) + 2* statusBar->GetBorderY()); - - statusBar->SetSize(-1, -1, 100, height); - - statusBar->SetFieldsCount(number); - return statusBar; -} - -wxStatusBar* wxFrame::CreateStatusBar(int number, long style, wxWindowID id, - const wxString& name) -{ - // Calling CreateStatusBar twice is an error. - wxCHECK_MSG( m_frameStatusBar == NULL, FALSE, - "recreating status bar in wxFrame" ); - - m_frameStatusBar = OnCreateStatusBar(number, style, id, - name); - if ( m_frameStatusBar ) - { - PositionStatusBar(); - return m_frameStatusBar; - } - else - return NULL; -} - -void wxFrame::SetStatusText(const wxString& text, int number) -{ - wxCHECK_RET( m_frameStatusBar != NULL, "no statusbar to set text for" ); - - m_frameStatusBar->SetStatusText(text, number); -} - -void wxFrame::SetStatusWidths(int n, const int widths_field[]) -{ - wxCHECK_RET( m_frameStatusBar != NULL, "no statusbar to set widths for" ); - - m_frameStatusBar->SetStatusWidths(n, widths_field); - PositionStatusBar(); -} - -void wxFrame::PositionStatusBar() -{ - int w, h; - GetClientSize(&w, &h); - int sw, sh; - m_frameStatusBar->GetSize(&sw, &sh); - - // Since we wish the status bar to be directly under the client area, - // we use the adjusted sizes without using wxSIZE_NO_ADJUSTMENTS. - m_frameStatusBar->SetSize(0, h, w, sh); -} - -void wxFrame::SetMenuBar(wxMenuBar *menuBar) -{ - if (!menuBar) - { - m_frameMenuBar = NULL; - return; - } - - m_frameMenuBar = menuBar; - - // TODO -} - -void wxFrame::Fit() -{ - // Work out max. size - wxNode *node = GetChildren().First(); - int max_width = 0; - int max_height = 0; - while (node) - { - // Find a child that's a subwindow, but not a dialog box. - wxWindow *win = (wxWindow *)node->Data(); - - if (!win->IsKindOf(CLASSINFO(wxFrame)) && - !win->IsKindOf(CLASSINFO(wxDialog))) - { - int width, height; - int x, y; - win->GetSize(&width, &height); - win->GetPosition(&x, &y); - - if ((x + width) > max_width) - max_width = x + width; - if ((y + height) > max_height) - max_height = y + height; - } - node = node->Next(); - } - SetClientSize(max_width, max_height); -} - -// Responds to colour changes, and passes event on to children. -void wxFrame::OnSysColourChanged(wxSysColourChangedEvent& event) -{ - SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE)); - Refresh(); - - if ( m_frameStatusBar ) - { - wxSysColourChangedEvent event2; - event2.SetEventObject( m_frameStatusBar ); - m_frameStatusBar->ProcessEvent(event2); - } - - // Propagate the event to the non-top-level children - wxWindow::OnSysColourChanged(event); -} - -// Default resizing behaviour - if only ONE subwindow, -// resize to client rectangle size -void wxFrame::OnSize(wxSizeEvent& event) -{ - // if we're using constraints - do use them - #if wxUSE_CONSTRAINTS - if ( GetAutoLayout() ) { - Layout(); - return; - } - #endif - - // do we have _exactly_ one child? - wxWindow *child = NULL; - for ( wxNode *node = GetChildren().First(); node; node = node->Next() ) - { - wxWindow *win = (wxWindow *)node->Data(); - if ( !win->IsKindOf(CLASSINFO(wxFrame)) && - !win->IsKindOf(CLASSINFO(wxDialog)) && - (win != GetStatusBar()) && - (win != GetToolBar()) ) - { - if ( child ) - return; // it's our second subwindow - nothing to do - child = win; - } - } - - if ( child ) { - // we have exactly one child - set it's size to fill the whole frame - int clientW, clientH; - GetClientSize(&clientW, &clientH); - - int x = 0; - int y = 0; - - child->SetSize(x, y, clientW, clientH); - } -} - -// Default activation behaviour - set the focus for the first child -// subwindow found. -void wxFrame::OnActivate(wxActivateEvent& event) -{ - for(wxNode *node = GetChildren().First(); node; node = node->Next()) - { - // Find a child that's a subwindow, but not a dialog box. - wxWindow *child = (wxWindow *)node->Data(); - if (!child->IsKindOf(CLASSINFO(wxFrame)) && - !child->IsKindOf(CLASSINFO(wxDialog))) - { - child->SetFocus(); - return; - } - } -} - -// The default implementation for the close window event - calls -// OnClose for backward compatibility. - -void wxFrame::OnCloseWindow(wxCloseEvent& event) -{ - // Compatibility - if ( GetEventHandler()->OnClose() || event.GetForce()) - { - this->Destroy(); - } -} - -bool wxFrame::OnClose() -{ - return TRUE; -} - -// Destroy the window (delayed, if a managed window) -bool wxFrame::Destroy() -{ - if (!wxPendingDelete.Member(this)) - wxPendingDelete.Append(this); - return TRUE; -} - -// Default menu selection behaviour - display a help string -void wxFrame::OnMenuHighlight(wxMenuEvent& event) -{ - if (GetStatusBar()) - { - if (event.GetMenuId() == -1) - SetStatusText(""); - else - { - wxMenuBar *menuBar = GetMenuBar(); - if (menuBar) - { - wxString helpString(menuBar->GetHelpString(event.GetMenuId())); - if (helpString != "") - SetStatusText(helpString); - } - } - } -} - -wxMenuBar *wxFrame::GetMenuBar() const -{ - return m_frameMenuBar; -} - -void wxFrame::Centre(int direction) -{ - int display_width, display_height, width, height, x, y; - wxDisplaySize(&display_width, &display_height); - - GetSize(&width, &height); - GetPosition(&x, &y); - - if (direction & wxHORIZONTAL) - x = (int)((display_width - width)/2); - if (direction & wxVERTICAL) - y = (int)((display_height - height)/2); - - SetSize(x, y, width, height); -} - -// Call this to simulate a menu command -void wxFrame::Command(int id) -{ - ProcessCommand(id); -} - -void wxFrame::ProcessCommand(int id) -{ - wxCommandEvent commandEvent(wxEVENT_TYPE_MENU_COMMAND, id); - commandEvent.SetInt( id ); - commandEvent.SetEventObject( this ); - - wxMenuBar *bar = GetMenuBar() ; - if (!bar) - return; - -/* TODO: check the menu item if required - wxMenuItem *item = bar->FindItemForId(id) ; - if (item && item->IsCheckable()) - { - bar->Check(id,!bar->Checked(id)) ; - } -*/ - - GetEventHandler()->ProcessEvent(commandEvent); -} - -// Checks if there is a toolbar, and returns the first free client position -wxPoint wxFrame::GetClientAreaOrigin() const -{ - wxPoint pt(0, 0); - if (GetToolBar()) - { - int w, h; - GetToolBar()->GetSize(& w, & h); - - if (GetToolBar()->GetWindowStyleFlag() & wxTB_VERTICAL) - { - pt.x += w; - } - else - { - pt.y += h; - } - } - return pt; -} - -void wxFrame::ScreenToClient(int *x, int *y) const -{ - wxWindow::ScreenToClient(x, y); - - // We may be faking the client origin. - // So a window that's really at (0, 30) may appear - // (to wxWin apps) to be at (0, 0). - wxPoint pt(GetClientAreaOrigin()); - *x -= pt.x; - *y -= pt.y; -} - -void wxFrame::ClientToScreen(int *x, int *y) const -{ - // We may be faking the client origin. - // So a window that's really at (0, 30) may appear - // (to wxWin apps) to be at (0, 0). - wxPoint pt1(GetClientAreaOrigin()); - *x += pt1.x; - *y += pt1.y; - - wxWindow::ClientToScreen(x, y); -} - -wxToolBar* wxFrame::CreateToolBar(long style, wxWindowID id, const wxString& name) -{ - wxCHECK_MSG( m_frameToolBar == NULL, FALSE, - "recreating toolbar in wxFrame" ); - - wxToolBar* toolBar = OnCreateToolBar(style, id, name); - if (toolBar) - { - SetToolBar(toolBar); - PositionToolBar(); - return toolBar; - } - else - { - return NULL; - } -} - -wxToolBar* wxFrame::OnCreateToolBar(long style, wxWindowID id, const wxString& name) -{ - return new wxToolBar(this, id, wxDefaultPosition, wxDefaultSize, style, name); -} - -void wxFrame::PositionToolBar() -{ - int cw, ch; - - // TODO: we actually need to use the low-level client size, before - // the toolbar/status bar were added. - // So DEFINITELY replace the line below with something appropriate. - - GetClientSize(& cw, &ch); - - if ( GetStatusBar() ) - { - int statusX, statusY; - GetStatusBar()->GetClientSize(&statusX, &statusY); - ch -= statusY; - } - - if (GetToolBar()) - { - int tw, th; - GetToolBar()->GetSize(& tw, & th); - - if (GetToolBar()->GetWindowStyleFlag() & wxTB_VERTICAL) - { - // Use the 'real' position. wxSIZE_NO_ADJUSTMENTS - // means, pretend we don't have toolbar/status bar, so we - // have the original client size. - GetToolBar()->SetSize(0, 0, tw, ch, wxSIZE_NO_ADJUSTMENTS); - } - else - { - // Use the 'real' position - GetToolBar()->SetSize(0, 0, cw, th, wxSIZE_NO_ADJUSTMENTS); - } - } -} - diff --git a/src/mac/carbon/gauge.cpp b/src/mac/carbon/gauge.cpp deleted file mode 100644 index a85fbc498f..0000000000 --- a/src/mac/carbon/gauge.cpp +++ /dev/null @@ -1,95 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: gauge.cpp -// Purpose: wxGauge class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "gauge.h" -#endif - -#include "wx/gauge.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxGauge, wxControl) -#endif - -bool wxGauge::Create(wxWindow *parent, wxWindowID id, - int range, - const wxPoint& pos, - const wxSize& size, - long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); - SetValidator(validator); - m_rangeMax = range; - m_windowStyle = style; - - if (parent) parent->AddChild(this); - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - - // TODO - return FALSE; -} - -void wxGauge::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -void wxGauge::SetShadowWidth(int w) -{ - // TODO optional -} - -void wxGauge::SetBezelFace(int w) -{ - // TODO optional -} - -void wxGauge::SetRange(int r) -{ - m_rangeMax = r; - // TODO -} - -void wxGauge::SetValue(int pos) -{ - m_gaugePos = pos; - // TODO -} - -int wxGauge::GetShadowWidth() const -{ - // TODO optional - return 0; -} - -int wxGauge::GetBezelFace() const -{ - // TODO optional - return 0; -} - -int wxGauge::GetRange() const -{ - return m_rangeMax; -} - -int wxGauge::GetValue() const -{ - return m_gaugePos; -} - diff --git a/src/mac/carbon/gdiobj.cpp b/src/mac/carbon/gdiobj.cpp deleted file mode 100644 index 63697c8354..0000000000 --- a/src/mac/carbon/gdiobj.cpp +++ /dev/null @@ -1,22 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: gdiobj.cpp -// Purpose: wxGDIObject class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "gdiobj.h" -#endif - -#include "wx/gdiobj.h" - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxGDIObject, wxObject) -#endif - -// TODO: Nothing to do, unless you want to. diff --git a/src/mac/carbon/helpxxxx.cpp b/src/mac/carbon/helpxxxx.cpp deleted file mode 100644 index 086762c646..0000000000 --- a/src/mac/carbon/helpxxxx.cpp +++ /dev/null @@ -1,83 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: helpxxxx.cpp -// Purpose: Help system: native implementation -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "helpxxxx.h" -#endif - -#include "wx/stubs/helpxxxx.h" - -#include - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxXXXXHelpController, wxHelpControllerBase) -#endif - -wxXXXXHelpController::wxXXXXHelpController() -{ - m_helpFile = ""; -} - -wxXXXXHelpController::~wxXXXXHelpController() -{ -} - -bool wxXXXXHelpController::Initialize(const wxString& filename) -{ - m_helpFile = filename; - // TODO any other inits - return TRUE; -} - -bool wxXXXXHelpController::LoadFile(const wxString& file) -{ - m_helpFile = file; - // TODO - return TRUE; -} - -bool wxXXXXHelpController::DisplayContents() -{ - // TODO - return FALSE; -} - -bool wxXXXXHelpController::DisplaySection(int section) -{ - // TODO - return FALSE; -} - -bool wxXXXXHelpController::DisplayBlock(long block) -{ - // TODO - return FALSE; -} - -bool wxXXXXHelpController::KeywordSearch(const wxString& k) -{ - if (m_helpFile == "") return FALSE; - - // TODO - return FALSE; -} - -// Can't close the help window explicitly in WinHelp -bool wxXXXXHelpController::Quit() -{ - // TODO - return FALSE; -} - -void wxXXXXHelpController::OnQuit() -{ -} - diff --git a/src/mac/carbon/icon.cpp b/src/mac/carbon/icon.cpp deleted file mode 100644 index 6deee7dbdc..0000000000 --- a/src/mac/carbon/icon.cpp +++ /dev/null @@ -1,70 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: icon.cpp -// Purpose: wxIcon class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "icon.h" -#endif - -#include "wx/icon.h" - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxIcon, wxBitmap) -#endif - -/* - * Icons - */ - - -wxIconRefData::wxIconRefData() -{ - // TODO: init icon handle -} - -wxIconRefData::~wxIconRefData() -{ - // TODO: destroy icon handle -} - -wxIcon::wxIcon() -{ -} - -wxIcon::wxIcon(const char WXUNUSED(bits)[], int WXUNUSED(width), int WXUNUSED(height)) -{ -} - -wxIcon::wxIcon(const wxString& icon_file, long flags, - int desiredWidth, int desiredHeight) - -{ - LoadFile(icon_file, flags, desiredWidth, desiredHeight); -} - -wxIcon::~wxIcon() -{ -} - -bool wxIcon::LoadFile(const wxString& filename, long type, - int desiredWidth, int desiredHeight) -{ - UnRef(); - - m_refData = new wxIconRefData; - - wxBitmapHandler *handler = FindHandler(type); - - if ( handler ) - return handler->LoadFile(this, filename, type, desiredWidth, desiredHeight); - else - return FALSE; -} - diff --git a/src/mac/carbon/imaglist.cpp b/src/mac/carbon/imaglist.cpp deleted file mode 100644 index 4cb47b4e69..0000000000 --- a/src/mac/carbon/imaglist.cpp +++ /dev/null @@ -1,118 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: imaglist.cpp -// Purpose: wxImageList. You may wish to use the generic version. -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "imaglist.h" -#endif - -#include "wx/stubs/imaglist.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxImageList, wxObject) -#endif - -wxImageList::wxImageList() -{ - // TODO: init image list handle, if any -} - -wxImageList::~wxImageList() -{ - // TODO: destroy image list handle, if any -} - - -// Attributes -//////////////////////////////////////////////////////////////////////////// - -// Returns the number of images in the image list. -int wxImageList::GetImageCount() const -{ - // TODO - return 0; -} - -// Operations -//////////////////////////////////////////////////////////////////////////// - -// Creates an image list -bool wxImageList::Create(int width, int height, bool mask, int initial) -{ - // TODO - return FALSE; -} - -// Adds a bitmap, and optionally a mask bitmap. -// Note that wxImageList creates new bitmaps, so you may delete -// 'bitmap' and 'mask'. -int wxImageList::Add(const wxBitmap& bitmap, const wxBitmap& mask) -{ - // TODO - return 0; -} - -// Adds a bitmap, using the specified colour to create the mask bitmap -// Note that wxImageList creates new bitmaps, so you may delete -// 'bitmap'. -int wxImageList::Add(const wxBitmap& bitmap, const wxColour& maskColour) -{ - // TODO - return 0; -} - -// Adds a bitmap and mask from an icon. -int wxImageList::Add(const wxIcon& icon) -{ - // TODO - return 0; -} - -// Replaces a bitmap, optionally passing a mask bitmap. -// Note that wxImageList creates new bitmaps, so you may delete -// 'bitmap' and 'mask'. -bool wxImageList::Replace(int index, const wxBitmap& bitmap, const wxBitmap& mask) -{ - // TODO - return 0; -} - -// Replaces a bitmap and mask from an icon. -bool wxImageList::Replace(int index, const wxIcon& icon) -{ - // TODO - return 0; -} - -// Removes the image at the given index. -bool wxImageList::Remove(int index) -{ - // TODO - return FALSE; -} - -// Remove all images -bool wxImageList::RemoveAll() -{ - // TODO - return FALSE; -} - -// Draws the given image on a dc at the specified position. -// If 'solidBackground' is TRUE, Draw sets the image list background -// colour to the background colour of the wxDC, to speed up -// drawing by eliminating masked drawing where possible. -bool wxImageList::Draw(int index, wxDC& dc, int x, int y, - int flags, bool solidBackground) -{ - // TODO - return FALSE; -} - diff --git a/src/mac/carbon/joystick.cpp b/src/mac/carbon/joystick.cpp deleted file mode 100644 index 6677277f48..0000000000 --- a/src/mac/carbon/joystick.cpp +++ /dev/null @@ -1,279 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: joystick.cpp -// Purpose: wxJoystick class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "joystick.h" -#endif - -#include - -IMPLEMENT_DYNAMIC_CLASS(wxJoystick, wxObject) - -// Attributes -//////////////////////////////////////////////////////////////////////////// - -wxPoint wxJoystick::GetPosition() const -{ - // TODO - return wxPoint(0, 0); -} - -int wxJoystick::GetZPosition() const -{ - // TODO - return 0; -} - -int wxJoystick::GetButtonState() const -{ - // TODO - return 0; -} - -int wxJoystick::GetPOVPosition() const -{ - // TODO - return 0; -} - -int wxJoystick::GetPOVCTSPosition() const -{ - // TODO - return 0; -} - -int wxJoystick::GetRudderPosition() const -{ - // TODO - return 0; -} - -int wxJoystick::GetUPosition() const -{ - // TODO - return 0; -} - -int wxJoystick::GetVPosition() const -{ - // TODO - return 0; -} - -int wxJoystick::GetMovementThreshold() const -{ - // TODO - return 0; -} - -void wxJoystick::SetMovementThreshold(int threshold) -{ - // TODO -} - -// Capabilities -//////////////////////////////////////////////////////////////////////////// - -bool wxJoystick::IsOk() const -{ - // TODO - return FALSE; -} - -int wxJoystick::GetNumberJoysticks() const -{ - // TODO - return 0; -} - -int wxJoystick::GetManufacturerId() const -{ - // TODO - return 0; -} - -int wxJoystick::GetProductId() const -{ - // TODO - return 0; -} - -wxString wxJoystick::GetProductName() const -{ - // TODO - return wxString(""); -} - -int wxJoystick::GetXMin() const -{ - // TODO - return 0; -} - -int wxJoystick::GetYMin() const -{ - // TODO - return 0; -} - -int wxJoystick::GetZMin() const -{ - // TODO - return 0; -} - -int wxJoystick::GetXMax() const -{ - // TODO - return 0; -} - -int wxJoystick::GetYMax() const -{ - // TODO - return 0; -} - -int wxJoystick::GetZMax() const -{ - // TODO - return 0; -} - -int wxJoystick::GetNumberButtons() const -{ - // TODO - return 0; -} - -int wxJoystick::GetNumberAxes() const -{ - // TODO - return 0; -} - -int wxJoystick::GetMaxButtons() const -{ - // TODO - return 0; -} - -int wxJoystick::GetMaxAxes() const -{ - // TODO - return 0; -} - -int wxJoystick::GetPollingMin() const -{ - // TODO - return 0; -} - -int wxJoystick::GetPollingMax() const -{ - // TODO - return 0; -} - -int wxJoystick::GetRudderMin() const -{ - // TODO - return 0; -} - -int wxJoystick::GetRudderMax() const -{ - // TODO - return 0; -} - -int wxJoystick::GetUMin() const -{ - // TODO - return 0; -} - -int wxJoystick::GetUMax() const -{ - // TODO - return 0; -} - -int wxJoystick::GetVMin() const -{ - // TODO - return 0; -} - -int wxJoystick::GetVMax() const -{ - // TODO - return 0; -} - -bool wxJoystick::HasRudder() const -{ - // TODO - return FALSE; -} - -bool wxJoystick::HasZ() const -{ - // TODO - return FALSE; -} - -bool wxJoystick::HasU() const -{ - // TODO - return FALSE; -} - -bool wxJoystick::HasV() const -{ - // TODO - return FALSE; -} - -bool wxJoystick::HasPOV() const -{ - // TODO - return FALSE; -} - -bool wxJoystick::HasPOV4Dir() const -{ - // TODO - return FALSE; -} - -bool wxJoystick::HasPOVCTS() const -{ - // TODO - return FALSE; -} - -// Operations -//////////////////////////////////////////////////////////////////////////// - -bool wxJoystick::SetCapture(wxWindow* win, int pollingFreq) -{ - // TODO - return FALSE; -} - -bool wxJoystick::ReleaseCapture() -{ - // TODO - return FALSE; -} - diff --git a/src/mac/carbon/listbox.cpp b/src/mac/carbon/listbox.cpp deleted file mode 100644 index 1dad21e12c..0000000000 --- a/src/mac/carbon/listbox.cpp +++ /dev/null @@ -1,235 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: listbox.cpp -// Purpose: wxListBox -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "listbox.h" -#endif - -#include "wx/listbox.h" -#include "wx/settings.h" -#include "wx/dynarray.h" -#include "wx/log.h" - -#if !USE_SHARED_LIBRARY - IMPLEMENT_DYNAMIC_CLASS(wxListBox, wxControl) -#endif - -// ============================================================================ -// list box control implementation -// ============================================================================ - -// Listbox item -wxListBox::wxListBox() -{ - m_noItems = 0; - m_selected = 0; -} - -bool wxListBox::Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos, - const wxSize& size, - int n, const wxString choices[], - long style, - const wxValidator& validator, - const wxString& name) -{ - m_noItems = n; - m_selected = 0; - - SetName(name); - SetValidator(validator); - - if (parent) parent->AddChild(this); - - wxSystemSettings settings; - SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOW)); - - m_windowId = ( id == -1 ) ? (int)NewControlId() : id; - - // TODO create listbox - - return FALSE; -} - -wxListBox::~wxListBox() -{ -} - -void wxListBox::SetFirstItem(int N) -{ - // TODO -} - -void wxListBox::SetFirstItem(const wxString& s) -{ - // TODO -} - -void wxListBox::Delete(int N) -{ - m_noItems --; - // TODO -} - -void wxListBox::Append(const wxString& item) -{ - m_noItems ++; - - // TODO -} - -void wxListBox::Append(const wxString& item, char *Client_data) -{ - m_noItems ++; - - // TODO -} - -void wxListBox::Set(int n, const wxString *choices, char** clientData) -{ - m_noItems = n; - - // TODO -} - -int wxListBox::FindString(const wxString& s) const -{ - // TODO - return -1; -} - -void wxListBox::Clear() -{ - m_noItems = 0; - // TODO -} - -void wxListBox::SetSelection(int N, bool select) -{ - // TODO -} - -bool wxListBox::Selected(int N) const -{ - // TODO - return FALSE; -} - -void wxListBox::Deselect(int N) -{ - // TODO -} - -char *wxListBox::GetClientData(int N) const -{ - // TODO - return (char *)NULL; -} - -void wxListBox::SetClientData(int N, char *Client_data) -{ - // TODO -} - -// Return number of selections and an array of selected integers -int wxListBox::GetSelections(wxArrayInt& aSelections) const -{ - aSelections.Empty(); - -/* TODO - if ((m_windowStyle & wxLB_MULTIPLE) || (m_windowStyle & wxLB_EXTENDED)) - { - int no_sel = ?? - for ( int n = 0; n < no_sel; n++ ) - aSelections.Add(??); - - return no_sel; - } - else // single-selection listbox - { - aSelections.Add(??); - - return 1; - } -*/ - return 0; -} - -// Get single selection, for single choice list items -int wxListBox::GetSelection() const -{ - // TODO - return -1; -} - -// Find string for position -wxString wxListBox::GetString(int N) const -{ - // TODO - return wxString(""); -} - -void wxListBox::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -void wxListBox::InsertItems(int nItems, const wxString items[], int pos) -{ - m_noItems += nItems; - - // TODO -} - -void wxListBox::SetString(int N, const wxString& s) -{ - // TODO -} - -int wxListBox::Number () const -{ - return m_noItems; -} - -// For single selection items only -wxString wxListBox::GetStringSelection () const -{ - int sel = GetSelection (); - if (sel > -1) - return this->GetString (sel); - else - return wxString(""); -} - -bool wxListBox::SetStringSelection (const wxString& s, bool flag) -{ - int sel = FindString (s); - if (sel > -1) - { - SetSelection (sel, flag); - return TRUE; - } - else - return FALSE; -} - -void wxListBox::Command (wxCommandEvent & event) -{ - if (event.m_extraLong) - SetSelection (event.m_commandInt); - else - { - Deselect (event.m_commandInt); - return; - } - ProcessCommand (event); -} - diff --git a/src/mac/carbon/listctrl.cpp b/src/mac/carbon/listctrl.cpp deleted file mode 100644 index d1d8445652..0000000000 --- a/src/mac/carbon/listctrl.cpp +++ /dev/null @@ -1,596 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: listctrl.cpp -// Purpose: wxListCtrl. See also Robert's generic wxListCtrl -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "listctrl.h" -#endif - -#include "wx/stubs/textctrl.h" -#include "wx/stubs/listctrl.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxListCtrl, wxControl) -IMPLEMENT_DYNAMIC_CLASS(wxListItem, wxObject) - -#endif - -wxListCtrl::wxListCtrl() -{ - m_imageListNormal = NULL; - m_imageListSmall = NULL; - m_imageListState = NULL; - m_baseStyle = 0; - m_colCount = 0; -} - -bool wxListCtrl::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, - long style, const wxValidator& validator, const wxString& name) -{ - m_imageListNormal = NULL; - m_imageListSmall = NULL; - m_imageListState = NULL; - m_colCount = 0; - - SetValidator(validator); - SetName(name); - - m_windowStyle = style; - - SetParent(parent); - - m_windowId = (id == -1) ? NewControlId() : id; - - if (parent) parent->AddChild(this); - - // TODO create list control - return TRUE; -} - -wxListCtrl::~wxListCtrl() -{ -} - -// Add or remove a single window style -void wxListCtrl::SetSingleStyle(long style, bool add) -{ - long flag = GetWindowStyleFlag(); - - // Get rid of conflicting styles - if ( add ) - { - if ( style & wxLC_MASK_TYPE) - flag = flag & ~wxLC_MASK_TYPE ; - if ( style & wxLC_MASK_ALIGN ) - flag = flag & ~wxLC_MASK_ALIGN ; - if ( style & wxLC_MASK_SORT ) - flag = flag & ~wxLC_MASK_SORT ; - } - - if ( flag & style ) - { - if ( !add ) - flag -= style; - } - else - { - if ( add ) - { - flag |= style; - } - } - - m_windowStyle = flag; - - /* TODO RecreateWindow(); */ -} - -// Set the whole window style -void wxListCtrl::SetWindowStyleFlag(long flag) -{ - m_windowStyle = flag; - - /* TODO RecreateWindow(); */ -} - - -// Gets information about this column -bool wxListCtrl::GetColumn(int col, wxListItem& item) const -{ - // TODO - return FALSE; -} - -// Sets information about this column -bool wxListCtrl::SetColumn(int col, wxListItem& item) -{ - // TODO - return FALSE; -} - -// Gets the column width -int wxListCtrl::GetColumnWidth(int col) const -{ - // TODO - return 0; -} - -// Sets the column width -bool wxListCtrl::SetColumnWidth(int col, int width) -{ - // TODO - return FALSE; -} - -// 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) -int wxListCtrl::GetCountPerPage() const -{ - // TODO - return 0; -} - -// Gets the edit control for editing labels. -wxTextCtrl* wxListCtrl::GetEditControl() const -{ - return m_textCtrl; -} - -// Gets information about the item -bool wxListCtrl::GetItem(wxListItem& info) const -{ - // TODO - return FALSE; -} - -// Sets information about the item -bool wxListCtrl::SetItem(wxListItem& info) -{ - // TODO - return FALSE; -} - -long wxListCtrl::SetItem(long index, int col, const wxString& label, int imageId) -{ - wxListItem info; - info.m_text = label; - info.m_mask = wxLIST_MASK_TEXT; - info.m_itemId = index; - info.m_col = col; - if ( imageId > -1 ) - { - info.m_image = imageId; - info.m_mask |= wxLIST_MASK_IMAGE; - } - return SetItem(info); -} - - -// Gets the item state -int wxListCtrl::GetItemState(long item, long stateMask) const -{ - wxListItem info; - - info.m_mask = wxLIST_MASK_STATE ; - info.m_stateMask = stateMask; - info.m_itemId = item; - - if (!GetItem(info)) - return 0; - - return info.m_state; -} - -// Sets the item state -bool wxListCtrl::SetItemState(long item, long state, long stateMask) -{ - wxListItem info; - - info.m_mask = wxLIST_MASK_STATE ; - info.m_state = state; - info.m_stateMask = stateMask; - info.m_itemId = item; - - return SetItem(info); -} - -// Sets the item image -bool wxListCtrl::SetItemImage(long item, int image, int selImage) -{ - wxListItem info; - - info.m_mask = wxLIST_MASK_IMAGE ; - info.m_image = image; - info.m_itemId = item; - - return SetItem(info); -} - -// Gets the item text -wxString wxListCtrl::GetItemText(long item) const -{ - wxListItem info; - - info.m_mask = wxLIST_MASK_TEXT ; - info.m_itemId = item; - - if (!GetItem(info)) - return wxString(""); - return info.m_text; -} - -// Sets the item text -void wxListCtrl::SetItemText(long item, const wxString& str) -{ - wxListItem info; - - info.m_mask = wxLIST_MASK_TEXT ; - info.m_itemId = item; - info.m_text = str; - - SetItem(info); -} - -// Gets the item data -long wxListCtrl::GetItemData(long item) const -{ - wxListItem info; - - info.m_mask = wxLIST_MASK_DATA ; - info.m_itemId = item; - - if (!GetItem(info)) - return 0; - return info.m_data; -} - -// Sets the item data -bool wxListCtrl::SetItemData(long item, long data) -{ - wxListItem info; - - info.m_mask = wxLIST_MASK_DATA ; - info.m_itemId = item; - info.m_data = data; - - return SetItem(info); -} - -// Gets the item rectangle -bool wxListCtrl::GetItemRect(long item, wxRect& rect, int code) const -{ - // TODO - return FALSE; -} - -// Gets the item position -bool wxListCtrl::GetItemPosition(long item, wxPoint& pos) const -{ - // TODO - return FALSE; -} - -// Sets the item position. -bool wxListCtrl::SetItemPosition(long item, const wxPoint& pos) -{ - // TODO - return FALSE; -} - -// Gets the number of items in the list control -int wxListCtrl::GetItemCount() const -{ - // TODO - return FALSE; -} - -// Retrieves the spacing between icons in pixels. -// If small is TRUE, gets the spacing for the small icon -// view, otherwise the large icon view. -int wxListCtrl::GetItemSpacing(bool isSmall) const -{ - // TODO - return FALSE; -} - -// Gets the number of selected items in the list control -int wxListCtrl::GetSelectedItemCount() const -{ - // TODO - return FALSE; -} - -// Gets the text colour of the listview -wxColour wxListCtrl::GetTextColour() const -{ - // TODO - return wxColour(); -} - -// Sets the text colour of the listview -void wxListCtrl::SetTextColour(const wxColour& col) -{ - // TODO -} - -// Gets the index of the topmost visible item when in -// list or report view -long wxListCtrl::GetTopItem() const -{ - // TODO - return 0; -} - -// Searches for an item, starting from 'item'. -// 'geometry' is one of -// wxLIST_NEXT_ABOVE/ALL/BELOW/LEFT/RIGHT. -// 'state' is a state bit flag, one or more of -// wxLIST_STATE_DROPHILITED/FOCUSED/SELECTED/CUT. -// item can be -1 to find the first item that matches the -// specified flags. -// Returns the item or -1 if unsuccessful. -long wxListCtrl::GetNextItem(long item, int geom, int state) const -{ - // TODO - return 0; -} - -wxImageList *wxListCtrl::GetImageList(int which) const -{ - if ( which == wxIMAGE_LIST_NORMAL ) - { - return m_imageListNormal; - } - else if ( which == wxIMAGE_LIST_SMALL ) - { - return m_imageListSmall; - } - else if ( which == wxIMAGE_LIST_STATE ) - { - return m_imageListState; - } - return NULL; -} - -void wxListCtrl::SetImageList(wxImageList *imageList, int which) -{ - int flags = 0; - if ( which == wxIMAGE_LIST_NORMAL ) - { - m_imageListNormal = imageList; - } - else if ( which == wxIMAGE_LIST_SMALL ) - { - m_imageListSmall = imageList; - } - else if ( which == wxIMAGE_LIST_STATE ) - { - m_imageListState = imageList; - } - // TODO set image list -} - -// Operations -//////////////////////////////////////////////////////////////////////////// - -// Arranges the items -bool wxListCtrl::Arrange(int flag) -{ - // TODO - return FALSE; -} - -// Deletes an item -bool wxListCtrl::DeleteItem(long item) -{ - // TODO - return FALSE; -} - -// Deletes all items -bool wxListCtrl::DeleteAllItems() -{ - // TODO - return FALSE; -} - -// Deletes all items -bool wxListCtrl::DeleteAllColumns() -{ - // TODO - return FALSE; -} - -// Deletes a column -bool wxListCtrl::DeleteColumn(int col) -{ - // TODO - return FALSE; -} - -// Clears items, and columns if there are any. -void wxListCtrl::ClearAll() -{ - DeleteAllItems(); - if ( m_colCount > 0 ) - DeleteAllColumns(); -} - -// Edit the label -wxTextCtrl* wxListCtrl::EditLabel(long item, wxClassInfo* textControlClass) -{ - // TODO - return NULL; -} - -// End label editing, optionally cancelling the edit -bool wxListCtrl::EndEditLabel(bool cancel) -{ - // TODO - return FALSE; -} - -// Ensures this item is visible -bool wxListCtrl::EnsureVisible(long item) -{ - // TODO - return FALSE; -} - -// Find an item whose label matches this string, starting from the item after 'start' -// or the beginning if 'start' is -1. -long wxListCtrl::FindItem(long start, const wxString& str, bool partial) -{ - // TODO - return FALSE; -} - -// Find an item whose data matches this data, starting from the item after 'start' -// or the beginning if 'start' is -1. -long wxListCtrl::FindItem(long start, long data) -{ - // TODO - return 0; -} - -// Find an item nearest this position in the specified direction, starting from -// the item after 'start' or the beginning if 'start' is -1. -long wxListCtrl::FindItem(long start, const wxPoint& pt, int direction) -{ - // TODO - return 0; -} - -// Determines which item (if any) is at the specified point, -// giving details in 'flags' (see wxLIST_HITTEST_... flags above) -long wxListCtrl::HitTest(const wxPoint& point, int& flags) -{ - // TODO - return 0; -} - -// Inserts an item, returning the index of the new item if successful, -// -1 otherwise. -long wxListCtrl::InsertItem(wxListItem& info) -{ - // TODO - return 0; -} - -long wxListCtrl::InsertItem(long index, const wxString& label) -{ - wxListItem info; - info.m_text = label; - info.m_mask = wxLIST_MASK_TEXT; - info.m_itemId = index; - return InsertItem(info); -} - -// Inserts an image item -long wxListCtrl::InsertItem(long index, int imageIndex) -{ - wxListItem info; - info.m_image = imageIndex; - info.m_mask = wxLIST_MASK_IMAGE; - info.m_itemId = index; - return InsertItem(info); -} - -// Inserts an image/string item -long wxListCtrl::InsertItem(long index, const wxString& label, int imageIndex) -{ - wxListItem info; - info.m_image = imageIndex; - info.m_text = label; - info.m_mask = wxLIST_MASK_IMAGE | wxLIST_MASK_TEXT; - info.m_itemId = index; - return InsertItem(info); -} - -// For list view mode (only), inserts a column. -long wxListCtrl::InsertColumn(long col, wxListItem& item) -{ - // TODO - return 0; -} - -long wxListCtrl::InsertColumn(long col, const wxString& heading, int format, - int width) -{ - wxListItem item; - item.m_mask = wxLIST_MASK_TEXT | wxLIST_MASK_FORMAT; - item.m_text = heading; - if ( width > -1 ) - { - item.m_mask |= wxLIST_MASK_WIDTH; - item.m_width = width; - } - item.m_format = format; - - return InsertColumn(col, item); -} - -// Scrolls the list control. If in icon, small icon or report view mode, -// x specifies the number of pixels to scroll. If in list view mode, x -// specifies the number of columns to scroll. -// If in icon, small icon or list view mode, y specifies the number of pixels -// to scroll. If in report view mode, y specifies the number of lines to scroll. -bool wxListCtrl::ScrollList(int dx, int dy) -{ - // TODO - return FALSE; -} - -// Sort items. - -// 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. -bool wxListCtrl::SortItems(wxListCtrlCompare fn, long data) -{ - // TODO - return FALSE; -} - -// List item structure -wxListItem::wxListItem() -{ - m_mask = 0; - m_itemId = 0; - m_col = 0; - m_state = 0; - m_stateMask = 0; - m_image = 0; - m_data = 0; - - m_format = wxLIST_FORMAT_CENTRE; - m_width = 0; -} - -// List event -IMPLEMENT_DYNAMIC_CLASS(wxListEvent, wxCommandEvent) - -wxListEvent::wxListEvent(wxEventType commandType, int id): - wxCommandEvent(commandType, id) -{ - m_code = 0; - m_itemIndex = 0; - m_col = 0; - m_cancelled = FALSE; -} - diff --git a/src/mac/carbon/main.cpp b/src/mac/carbon/main.cpp deleted file mode 100644 index 47a9924bae..0000000000 --- a/src/mac/carbon/main.cpp +++ /dev/null @@ -1,18 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: main.cpp -// Purpose: Entry point -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#include "wx/app.h" - -int main(int argc, char* argv[]) -{ - return wxEntry(argc, argv); -} - diff --git a/src/mac/carbon/makefile.nt b/src/mac/carbon/makefile.nt deleted file mode 100644 index 2865fbcec3..0000000000 --- a/src/mac/carbon/makefile.nt +++ /dev/null @@ -1,955 +0,0 @@ -# -# File: makefile.nt -# Author: Julian Smart -# Created: 1997 -# Updated: -# Copyright: (c) 1997, Julian Smart -# -# "%W% %G%" -# -# Makefile : Builds wxWindows stubs library wxstubs.lib for VC++ (32-bit) -# Arguments: -# -# FINAL=1 argument to nmake to build version with no debugging info. -# - -!include - -APPVER=3.50 # 4.0 -# This means 'enable Windows 95 features' (in wxWindows and in VC++ 4.0). -WINVERSION=-DWINVER=0x0400 - -# On Alpha machines, change to CPU=ALPHA -CPU=i386 - -# Suffixes -OBJSUFF=obj -SRCSUFF=cpp - -WINFLAGS=-c -W3 -Dtry=__try -Dexcept=__except -Dleave=__leave -Dfinally=__finally -DCRTAPI1=_cdecl -DCRTAPI2=_cdecl -nologo -D_X86_=1 $(WINVERSION) -D__WIN32__ -D__WINDOWS__ -WINLINKFLAGS=/INCREMENTAL:NO /NOLOGO -align:0x1000 -machine:$(CPU) -subsystem:windows,$(APPVER) -WINLIBS=kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib oldnames.lib\ - comctl32.lib ctl3d32.lib odbc32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib # libci.lib # libci.lib required for VC++ 4.2 - -# Change this to your WXWIN directory -WXDIR=$(WXWIN) - -WXSRC=$(WXDIR)\src\stubs -WXINC=$(WXDIR)\include -WXBASESRC=$(WXDIR)\src\common - -WXLIB=$(WXDIR)\lib\wxstubs.lib - -EXTRADLLFLAGS= - -INC=-I$(WXINC) -I$(WXDIR)/src/png -I$(WXDIR)/src/zlib $(EXTRAINC) -LIBS = $(EXTRALIBS) $(WXLIB) $(WINLIBS) - -!ifndef FINAL -FINAL=0 -DEBUG=1 -!endif - -# Set this to 1 if you don't want to use precompiled headers -NOPCH=1 - -OPTIONS= - -!if "$(FINAL)" == "0" -OPT = /Od /Gy -# ***N.B.*** to save space/time, comment out /FR to avoid browse info (.sbr files) being generated -DEBUG_FLAGS= /Zi # /FR -LINK_DEBUG_FLAGS=-debug:full -debugtype:cv # /PDB:NONE -CRTFLAG=/MD -!else -# /O1 - smallest code -# /O2 - fastest code -OPT = /O1 # /O2 # /Od -DEBUG_FLAGS= -LINK_DEBUG_FLAGS=/RELEASE -CRTFLAG=/MD -!endif - -PCH= -PRECOMP= -MAKEPRECOMP= - -CPPFLAGS=$(WINFLAGS) $(DEBUG_FLAGS) $(PRECOMP) $(EXTRAFLAGS) /D__WXSTUBS__ /DDEBUG=1 $(INC) $(OPT) $(CRTFLAG) /GX /D__WXDEBUG__ /DWXDEBUG=1 -# If you don't include wxprec.h, use CPPFLAGS2 -CPPFLAGS2=$(WINFLAGS) $(DEBUG_FLAGS) /D__WXSTUBS__ /DDEBUG=1 $(INC) $(EXTRAFLAGS) $(OPT) $(CRTFLAG) /GX /D__WXDEBUG__ /DWXDEBUG=1 -LINKFLAGS=$(LINK_DEBUG_FLAGS) $(WINLINKFLAGS) -entry:WinMainCRTStartup - -THISDIR=$(WXWIN)\src\stubs - -LIBTARGET=$(WXLIB) - -# Please set these according to the settings in wx_setup.h, so we can include -# the appropriate libraries in wx.lib - -PERIPH_LIBS= -PERIPH_TARGET= -PERIPH_CLEAN_TARGET= - -GENDIR=..\generic -COMMDIR=..\common -STUBSDIR=. - -DOCDIR = $(WXDIR)\docs - -GENERICOBJS= \ - $(GENDIR)\choicdgg.obj \ - $(GENDIR)\colrdlgg.obj \ - $(GENDIR)\fontdlgg.obj \ - $(GENDIR)\gridg.obj \ - $(GENDIR)\msgdlgg.obj \ - $(GENDIR)\panelg.obj \ - $(GENDIR)\printps.obj \ - $(GENDIR)\prntdlgg.obj \ - $(GENDIR)\scrolwin.obj \ - $(GENDIR)\splitter.obj \ - $(GENDIR)\statusbr.obj \ - $(GENDIR)\tabg.obj \ - $(GENDIR)\textdlgg.obj - -# $(GENDIR)\helpxlp.obj \ - -COMMONOBJS = \ - $(COMMDIR)\cmndata.obj \ - $(COMMDIR)\config.obj \ - $(COMMDIR)\docview.obj \ - $(COMMDIR)\docmdi.obj \ - $(COMMDIR)\dynarray.obj \ - $(COMMDIR)\event.obj \ - $(COMMDIR)\file.obj \ - $(COMMDIR)\filefn.obj \ - $(COMMDIR)\fileconf.obj \ - $(COMMDIR)\framecmn.obj \ - $(COMMDIR)\gdicmn.obj \ - $(COMMDIR)\intl.obj \ - $(COMMDIR)\ipcbase.obj \ - $(COMMDIR)\helpbase.obj \ - $(COMMDIR)\layout.obj \ - $(COMMDIR)\log.obj \ - $(COMMDIR)\memory.obj \ - $(COMMDIR)\module.obj \ - $(COMMDIR)\object.obj \ - $(COMMDIR)\postscrp.obj \ - $(COMMDIR)\prntbase.obj \ - $(COMMDIR)\resource.obj \ - $(COMMDIR)\tbarbase.obj \ - $(COMMDIR)\tbarsmpl.obj \ - $(COMMDIR)\textfile.obj \ - $(COMMDIR)\timercmn.obj \ - $(COMMDIR)\utilscmn.obj \ - $(COMMDIR)\validate.obj \ - $(COMMDIR)\valtext.obj \ - $(COMMDIR)\date.obj \ - $(COMMDIR)\hash.obj \ - $(COMMDIR)\list.obj \ - $(COMMDIR)\string.obj \ - $(COMMDIR)\time.obj \ - $(COMMDIR)\wxexpr.obj \ - $(COMMDIR)\y_tab.obj \ - $(COMMDIR)\extended.obj \ - $(COMMDIR)\process.obj \ - $(COMMDIR)\fstream.obj \ - $(COMMDIR)\mstream.obj \ - $(COMMDIR)\zstream.obj \ - $(COMMDIR)\stream.obj \ - $(COMMDIR)\datstrm.obj \ - $(COMMDIR)\wincmn.obj - -# $(COMMDIR)\odbc.obj \ - -STUBSOBJS = \ - $(STUBSDIR)\accel.obj \ - $(STUBSDIR)\app.obj \ - $(STUBSDIR)\bitmap.obj \ - $(STUBSDIR)\bmpbuttn.obj \ - $(STUBSDIR)\brush.obj \ - $(STUBSDIR)\button.obj \ - $(STUBSDIR)\checkbox.obj \ - $(STUBSDIR)\checklst.obj \ - $(STUBSDIR)\choice.obj \ - $(STUBSDIR)\clipbrd.obj \ - $(STUBSDIR)\colordlg.obj \ - $(STUBSDIR)\colour.obj \ - $(STUBSDIR)\combobox.obj \ - $(STUBSDIR)\control.obj \ - $(STUBSDIR)\cursor.obj \ - $(STUBSDIR)\data.obj \ - $(STUBSDIR)\dc.obj \ - $(STUBSDIR)\dcmemory.obj \ - $(STUBSDIR)\dcclient.obj \ - $(STUBSDIR)\dcscreen.obj \ - $(STUBSDIR)\dialog.obj \ - $(STUBSDIR)\dirdlg.obj \ - $(STUBSDIR)\filedlg.obj \ - $(STUBSDIR)\font.obj \ - $(STUBSDIR)\fontdlg.obj \ - $(STUBSDIR)\frame.obj \ - $(STUBSDIR)\gauge.obj \ - $(STUBSDIR)\gdiobj.obj \ - $(STUBSDIR)\helpxxxx.obj \ - $(STUBSDIR)\icon.obj \ - $(STUBSDIR)\imaglist.obj \ - $(STUBSDIR)\joystick.obj \ - $(STUBSDIR)\listbox.obj \ - $(STUBSDIR)\listctrl.obj \ - $(STUBSDIR)\main.obj \ - $(STUBSDIR)\mdi.obj \ - $(STUBSDIR)\menu.obj \ - $(STUBSDIR)\menuitem.obj \ - $(STUBSDIR)\metafile.obj \ - $(STUBSDIR)\minifram.obj \ - $(STUBSDIR)\msgdlg.obj \ - $(STUBSDIR)\notebook.obj \ - $(STUBSDIR)\palette.obj \ - $(STUBSDIR)\pen.obj \ - $(STUBSDIR)\printdlg.obj \ - $(STUBSDIR)\print.obj \ - $(STUBSDIR)\radiobox.obj \ - $(STUBSDIR)\radiobut.obj \ - $(STUBSDIR)\region.obj \ - $(STUBSDIR)\scrolbar.obj \ - $(STUBSDIR)\settings.obj \ - $(STUBSDIR)\slider.obj \ - $(STUBSDIR)\spinbutt.obj \ - $(STUBSDIR)\statbmp.obj \ - $(STUBSDIR)\statbox.obj \ - $(STUBSDIR)\statusbr.obj \ - $(STUBSDIR)\stattext.obj \ - $(STUBSDIR)\tabctrl.obj \ - $(STUBSDIR)\taskbar.obj \ - $(STUBSDIR)\toolbar.obj \ - $(STUBSDIR)\textctrl.obj \ - $(STUBSDIR)\thread.obj \ - $(STUBSDIR)\timer.obj \ - $(STUBSDIR)\treectrl.obj \ - $(STUBSDIR)\utils.obj \ - $(STUBSDIR)\utilsexc.obj \ - $(STUBSDIR)\wave.obj \ - $(STUBSDIR)\window.obj - - -OBJECTS = $(COMMONOBJS) $(GENERICOBJS) $(STUBSOBJS) - -# Normal, static library -all: $(OBJECTS) $(PERIPH_TARGET) $(LIBTARGET) - -$(WXDIR)\lib\wxstubs.lib: $(OBJECTS) $(PERIPH_LIBS) - -erase $(LIBTARGET) - $(implib) @<< --out:$@ --machine:$(CPU) -$(OBJECTS) $(PERIPH_LIBS) -<< - -######################################################## -# Windows-specific objects - -$(STUBSDIR)/accel.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/app.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/bitmap.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/bmpbuttn.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/brush.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/button.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/choice.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/checkbox.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/checklst.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/clipbrd.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/colordlg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/colour.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/combobox.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/control.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/cursor.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/data.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/dc.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/dcmemory.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/dcclient.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/dcprint.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/dcscreen.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/dialog.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/dirdlg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/filedlg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/font.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/fontdlg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/frame.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/gauge.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/gdiobj.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/icon.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/imaglist.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/joystick.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/listbox.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(STUBSDIR)/listctrl.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(STUBSDIR)/main.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/mdi.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/menu.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/menuitem.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/metafile.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/minifram.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/msgdlg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/notebook.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/palette.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/pen.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/printdlg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/print.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/radiobox.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/radiobut.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/region.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/scrolbar.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/settings.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/slider.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/spinbutt.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/statbmp.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/statbox.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/statusbr.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/stattext.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/tabctrl.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/taskbar.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/toolbar.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/textctrl.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/thread.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/timer.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/treectrl.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/utils.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/utilsexc.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/wave.obj: $*.$(SRCSUFF) - echo $(CPPFLAGS) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/window.obj: $*.$(SRCSUFF) - echo $(CPPFLAGS) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -######################################################## -# Common objects (always compiled) - -$(COMMDIR)/cmndata.obj: $*.$(SRCSUFF) - echo $(CPPFLAGS) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/config.obj: $*.$(SRCSUFF) - echo $(CPPFLAGS) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/db.obj: $*.$(SRCSUFF) - echo $(CPPFLAGS) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/dbtable.obj: $*.$(SRCSUFF) - echo $(CPPFLAGS) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/docview.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/docmdi.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/dynarray.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/event.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/file.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/fileconf.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/filefn.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/framecmn.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/gdicmn.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/intl.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/ipcbase.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/helpbase.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/layout.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/log.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/memory.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/module.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/object.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/odbc.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/postscrp.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/prntbase.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/resource.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/tbarbase.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/tbarsmpl.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/textfile.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/timercmn.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/utilscmn.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/validate.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/valtext.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/date.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/wxexpr.obj: $*.$(SRCSUFF) - echo $(CPPFLAGS) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/hash.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/list.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/string.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/matrix.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -#$(COMMDIR)/wxstrgnu/wxstrgnu.obj: $*.$(SRCSUFF) -# cl @<< -#$(CPPFLAGS2) /c /Tp $*.$(SRCSUFF) /Fo$@ -#<< - -#$(COMMDIR)/wxstrgnu/wxregex.obj: $*.$(SRCSUFF) -# cl @<< -#$(CPPFLAGS2) /c /Tp $*.$(SRCSUFF) /Fo$@ -#<< - -$(COMMDIR)/time.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)\stream.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)\fstream.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)\mstream.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)\zstream.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)\datstrm.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/extended.obj: $*.c - cl @<< -$(CPPFLAGS2) /c /Tp $*.c /Fo$@ -<< - -$(COMMDIR)/process.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS2) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/wincmn.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS2) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/y_tab.obj: $*.c $(COMMDIR)/lex_yy.c - cl @<< -$(CPPFLAGS2) /c $*.c -DUSE_DEFINE -DYY_USE_PROTOS /Fo$@ -<< - -$(COMMDIR)/y_tab.c: $(COMMDIR)/dosyacc.c - copy $(COMMDIR)\dosyacc.c $(COMMDIR)\y_tab.c - -$(COMMDIR)/lex_yy.c: $(COMMDIR)/doslex.c - copy $(COMMDIR)\doslex.c $(COMMDIR)\lex_yy.c - -######################################################## -# Generic objects (not always compiled, depending on -# whether platforms have native implementations) - -$(GENDIR)/choicdgg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/colrdlgg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/fontdlgg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/gridg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/helpxlp.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/msgdlgg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/panelg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/printps.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/prntdlgg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/scrolwin.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/splitter.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/statusbr.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/tabg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/textdlgg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(OBJECTS): $(WXDIR)/include/wx/stubs/setup.h - -clean: $(PERIPH_CLEAN_TARGET) - -erase *.obj - -erase $(LIBTARGET) - -erase $(WXDIR)\lib\*.pdb - -erase *.pdb - -erase *.sbr - -erase *.pch - cd $(WXDIR)\src\stubs - cd $(GENDIR) - -erase *.pdb - -erase *.sbr - -erase *.obj - cd $(WXDIR)\src\stubs - cd $(COMMDIR) - -erase *.pdb - -erase *.sbr - -erase *.obj - -erase y_tab.c - -erase lex_yy.c - cd $(WXDIR)\src\stubs - -cleanall: clean - diff --git a/src/mac/carbon/makefile.unx b/src/mac/carbon/makefile.unx deleted file mode 100644 index 5bd62163fd..0000000000 --- a/src/mac/carbon/makefile.unx +++ /dev/null @@ -1,200 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1998 -# Updated: -# Copyright: (c) 1998 -# -# -# Makefile for wxStubs library, Unix - -EXTRACFLAGS=-DLEX_SCANNER - -include ../make.env - -LIB_CPP_SRC=\ -\ - ../common/cmndata.cpp \ - ../common/config.cpp \ - ../common/date.cpp \ - ../common/docmdi.cpp \ - ../common/docview.cpp \ - ../common/dynarray.cpp \ - ../common/dynlib.cpp \ - ../common/event.cpp \ - ../common/file.cpp \ - ../common/fileconf.cpp \ - ../common/filefn.cpp \ - ../common/gdicmn.cpp \ - ../common/hash.cpp \ - ../common/helpbase.cpp \ - ../common/intl.cpp \ - ../common/ipcbase.cpp \ - ../common/layout.cpp \ - ../common/list.cpp \ - ../common/log.cpp \ - ../common/matrix.cpp \ - ../common/memory.cpp \ - ../common/module.cpp \ - ../common/object.cpp \ - ../common/odbc.cpp \ - ../common/postscrp.cpp \ - ../common/prntbase.cpp \ - ../common/resource.cpp \ - ../common/serbase.cpp \ - ../common/string.cpp \ - ../common/textfile.cpp \ - ../common/tbarbase.cpp \ - ../common/tbarsmpl.cpp \ - ../common/timercmn.cpp \ - ../common/utilscmn.cpp \ - ../common/wincmn.cpp \ - ../common/framecmn.cpp \ - ../common/stream.cpp \ - ../common/datstrm.cpp \ - ../common/fstream.cpp \ - ../common/mstream.cpp \ - ../common/zstream.cpp \ - ../common/objstrm.cpp \ - ../common/sckstrm.cpp \ - ../common/validate.cpp \ - ../common/valtext.cpp \ - ../common/variant.cpp \ - ../common/wxexpr.cpp \ - ../common/socket.cpp \ - ../common/sckaddr.cpp \ - ../common/sckipc.cpp \ - ../common/protocol.cpp \ - ../common/ftp.cpp \ - ../common/http.cpp \ - ../common/url.cpp \ - ../common/tokenzr.cpp \ -\ - accel.cpp \ - app.cpp \ - bitmap.cpp \ - bmpbuttn.cpp \ - brush.cpp \ - button.cpp \ - checkbox.cpp \ - choice.cpp \ - clipbrd.cpp \ - colour.cpp \ - colordlg.cpp \ - control.cpp \ - combobox.cpp \ - cursor.cpp \ - data.cpp \ - dc.cpp \ - dcclient.cpp \ - dcmemory.cpp \ - dcscreen.cpp \ - dialog.cpp \ - dnd.cpp \ - filedlg.cpp \ - font.cpp \ - fontdlg.cpp \ - frame.cpp \ - gauge.cpp \ - gdiobj.cpp \ - helpxxxx.cpp \ - icon.cpp \ - listbox.cpp \ - joystick.cpp \ - main.cpp \ - mdi.cpp \ - menu.cpp \ - menuitem.cpp \ - metafile.cpp \ - minifram.cpp \ - msgdlg.cpp \ - notebook.cpp \ - palette.cpp \ - pen.cpp \ - print.cpp \ - radiobox.cpp \ - radiobut.cpp \ - region.cpp \ - scrolbar.cpp \ - settings.cpp \ - slider.cpp \ - spinbutt.cpp \ - statbox.cpp \ - statbmp.cpp \ - stattext.cpp \ - taskbar.cpp \ - textctrl.cpp \ - thread.cpp \ - timer.cpp \ - toolbar.cpp \ - utils.cpp \ - utilsexc.cpp \ - wave.cpp \ - window.cpp \ -\ - ../generic/choicdgg.cpp \ - ../generic/colrdlgg.cpp \ - ../generic/dirdlgg.cpp \ - ../generic/fontdlgg.cpp \ - ../generic/gridg.cpp \ - ../generic/imaglist.cpp \ - ../generic/listctrl.cpp \ - ../generic/laywin.cpp \ - ../generic/msgdlgg.cpp \ - ../generic/panelg.cpp \ - ../generic/printps.cpp \ - ../generic/prntdlgg.cpp \ - ../generic/sashwin.cpp \ - ../generic/scrolwin.cpp \ - ../generic/splitter.cpp \ - ../generic/statusbr.cpp \ - ../generic/tabg.cpp \ - ../generic/textdlgg.cpp \ - ../generic/treectrl.cpp - -# If you're not using the generic ones, you -# may wish to define platform-specific ones -# dirdlg.cpp \ -# treectrl.cpp \ -# listctrl.cpp \ -# imaglist.cpp \ -# statusbr.cpp \ - -LIB_C_SRC=\ -\ - ../common/y_tab.c \ - ../common/extended.c - -all: $(WXLIB) - -# Define library objects -OBJECTS=\ - $(LIB_CPP_SRC:.cpp=.o) $(LIB_C_SRC:.c=.o) - -$(WXLIB) : $(OBJECTS) - ar $(AROPTIONS) $@ $(OBJECTS) - $(RANLIB) $@ - -../common/y_tab.$(OBJSUFF): ../common/y_tab.c ../common/lex_yy.c - $(CCLEX) -c $(CFLAGS) -o $@ ../common/y_tab.c - -# Replace lex with flex if you run into compilation -# problems with lex_yy.c. See also note about LEX_SCANNER -# above. -../common/lex_yy.c: ../common/lexer.l - $(LEX) -o../common/lex.yy.c ../common/lexer.l - sed -e "s/BUFSIZ/5000/g" < ../common/lex.yy.c | \ - sed -e "s/yyoutput(c)/void yyoutput(c)/g" | \ - sed -e "s/YYLMAX 200/YYLMAX 5000/g" > ../common/lex_yy.c - /bin/rm -f ../common/lex.yy.c - -# Replace yacc with bison if you run into compilation -# problems with y_tab.c. -../common/y_tab.c: ../common/parser.y - $(YACC) ../common/parser.y - mv y.tab.c ../common/y_tab.c - - -clean: - rm -f $(OBJECTS) $(WXLIB) - diff --git a/src/mac/carbon/mdi.cpp b/src/mac/carbon/mdi.cpp deleted file mode 100644 index 4869697cd7..0000000000 --- a/src/mac/carbon/mdi.cpp +++ /dev/null @@ -1,265 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: mdi.cpp -// Purpose: MDI classes -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "mdi.h" -#endif - -#include "wx/mdi.h" -#include "wx/menu.h" -#include "wx/settings.h" - -extern wxList wxModelessWindows; - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxMDIParentFrame, wxFrame) -IMPLEMENT_DYNAMIC_CLASS(wxMDIChildFrame, wxFrame) -IMPLEMENT_DYNAMIC_CLASS(wxMDIClientWindow, wxWindow) - -BEGIN_EVENT_TABLE(wxMDIParentFrame, wxFrame) - EVT_SIZE(wxMDIParentFrame::OnSize) - EVT_ACTIVATE(wxMDIParentFrame::OnActivate) - EVT_SYS_COLOUR_CHANGED(wxMDIParentFrame::OnSysColourChanged) -END_EVENT_TABLE() - -BEGIN_EVENT_TABLE(wxMDIClientWindow, wxWindow) - EVT_SCROLL(wxMDIClientWindow::OnScroll) -END_EVENT_TABLE() - -#endif - -// Parent frame - -wxMDIParentFrame::wxMDIParentFrame() -{ -} - -bool wxMDIParentFrame::Create(wxWindow *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - if (!parent) - wxTopLevelWindows.Append(this); - - SetName(name); - m_windowStyle = style; - - if (parent) parent->AddChild(this); - - if ( id > -1 ) - m_windowId = id; - else - m_windowId = (int)NewControlId(); - - // TODO: create MDI parent frame - - wxModelessWindows.Append(this); - - return TRUE; -} - -wxMDIParentFrame::~wxMDIParentFrame() -{ -} - -// Get size *available for subwindows* i.e. excluding menu bar. -void wxMDIParentFrame::GetClientSize(int *x, int *y) const -{ - // TODO -} - -void wxMDIParentFrame::SetMenuBar(wxMenuBar *menu_bar) -{ - // TODO - if (!menu_bar) - { - m_frameMenuBar = NULL; - return; - } - - if (menu_bar->m_menuBarFrame) - return; - - m_frameMenuBar = menu_bar; -} - -void wxMDIParentFrame::OnSize(wxSizeEvent& event) -{ -#if wxUSE_CONSTRAINTS - if (GetAutoLayout()) - Layout(); -#endif - int x = 0; - int y = 0; - int width, height; - GetClientSize(&width, &height); - - if ( GetClientWindow() ) - GetClientWindow()->SetSize(x, y, width, height); -} - -void wxMDIParentFrame::OnActivate(wxActivateEvent& event) -{ - // Do nothing -} - -// Returns the active MDI child window -wxMDIChildFrame *wxMDIParentFrame::GetActiveChild() const -{ - // TODO - return NULL; -} - -// Create the client window class (don't Create the window, -// just return a new class) -wxMDIClientWindow *wxMDIParentFrame::OnCreateClient() -{ - return new wxMDIClientWindow ; -} - -// Responds to colour changes, and passes event on to children. -void wxMDIParentFrame::OnSysColourChanged(wxSysColourChangedEvent& event) -{ - // TODO - - // Propagate the event to the non-top-level children - wxFrame::OnSysColourChanged(event); -} - -// MDI operations -void wxMDIParentFrame::Cascade() -{ - // TODO -} - -void wxMDIParentFrame::Tile() -{ - // TODO -} - -void wxMDIParentFrame::ArrangeIcons() -{ - // TODO -} - -void wxMDIParentFrame::ActivateNext() -{ - // TODO -} - -void wxMDIParentFrame::ActivatePrevious() -{ - // TODO -} - -// Child frame - -wxMDIChildFrame::wxMDIChildFrame() -{ -} - -bool wxMDIChildFrame::Create(wxMDIParentFrame *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - SetName(name); - - if ( id > -1 ) - m_windowId = id; - else - m_windowId = (int)NewControlId(); - - if (parent) parent->AddChild(this); - - // TODO: create child frame - - wxModelessWindows.Append(this); - return FALSE; -} - -wxMDIChildFrame::~wxMDIChildFrame() -{ -} - -// Set the client size (i.e. leave the calculation of borders etc. -// to wxWindows) -void wxMDIChildFrame::SetClientSize(int width, int height) -{ - // TODO -} - -void wxMDIChildFrame::GetPosition(int *x, int *y) const -{ - // TODO -} - -void wxMDIChildFrame::SetMenuBar(wxMenuBar *menu_bar) -{ - // TODO - if (!menu_bar) - { - m_frameMenuBar = NULL; - return; - } - - if (menu_bar->m_menuBarFrame) - return; - m_frameMenuBar = menu_bar; -} - -// MDI operations -void wxMDIChildFrame::Maximize() -{ - // TODO -} - -void wxMDIChildFrame::Restore() -{ - // TODO -} - -void wxMDIChildFrame::Activate() -{ - // TODO -} - -// Client window - -wxMDIClientWindow::wxMDIClientWindow() -{ -} - -wxMDIClientWindow::~wxMDIClientWindow() -{ -} - -bool wxMDIClientWindow::CreateClient(wxMDIParentFrame *parent, long style) -{ - // TODO create client window - m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE); - - return FALSE; -} - -// Explicitly call default scroll behaviour -void wxMDIClientWindow::OnScroll(wxScrollEvent& event) -{ - Default(); // Default processing -} - diff --git a/src/mac/carbon/menu.cpp b/src/mac/carbon/menu.cpp deleted file mode 100644 index 1fc7c4a229..0000000000 --- a/src/mac/carbon/menu.cpp +++ /dev/null @@ -1,571 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: menu.cpp -// Purpose: wxMenu, wxMenuBar, wxMenuItem -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -// ============================================================================ -// headers & declarations -// ============================================================================ - -// wxWindows headers -// ----------------- - -#ifdef __GNUG__ -#pragma implementation "menu.h" -#pragma implementation "menuitem.h" -#endif - -#include "wx/menu.h" -#include "wx/menuitem.h" -#include "wx/log.h" -#include "wx/utils.h" - -// other standard headers -// ---------------------- -#include - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxMenu, wxEvtHandler) -IMPLEMENT_DYNAMIC_CLASS(wxMenuBar, wxEvtHandler) -#endif - -// ============================================================================ -// implementation -// ============================================================================ - -// Menus - -// Construct a menu with optional title (then use append) -wxMenu::wxMenu(const wxString& title, const wxFunction func) -{ - m_title = title; - m_parent = NULL; - m_eventHandler = this; - m_noItems = 0; - m_menuBar = NULL; - m_clientData = (void*) NULL; - if (m_title != "") - { - Append(-2, m_title) ; - AppendSeparator() ; - } - - Callback(func); - - // TODO create menu -} - -// The wxWindow destructor will take care of deleting the submenus. -wxMenu::~wxMenu() -{ - // TODO destroy menu and children - - wxNode *node = m_menuItems.First(); - while (node) - { - wxMenuItem *item = (wxMenuItem *)node->Data(); - - // Delete child menus. - // Beware: they must not be appended to children list!!! - // (because order of delete is significant) - if (item->GetSubMenu()) - item->DeleteSubMenu(); - - wxNode *next = node->Next(); - delete item; - delete node; - node = next; - } -} - -void wxMenu::Break() -{ - // TODO -} - -// function appends a new item or submenu to the menu -void wxMenu::Append(wxMenuItem *pItem) -{ - // TODO - - wxCHECK_RET( pItem != NULL, "can't append NULL item to the menu" ); - - m_menuItems.Append(pItem); - - m_noItems++; -} - -void wxMenu::AppendSeparator() -{ - // TODO - Append(new wxMenuItem(this, ID_SEPARATOR)); -} - -// Pullright item -void wxMenu::Append(int Id, const wxString& label, wxMenu *SubMenu, - const wxString& helpString) -{ - Append(new wxMenuItem(this, Id, label, helpString, FALSE, SubMenu)); -} - -// Ordinary menu item -void wxMenu::Append(int Id, const wxString& label, - const wxString& helpString, bool checkable) -{ - // 'checkable' parameter is useless for Windows. - Append(new wxMenuItem(this, Id, label, helpString, checkable)); -} - -void wxMenu::Delete(int id) -{ - wxNode *node; - wxMenuItem *item; - int pos; - - for (pos = 0, node = m_menuItems.First(); node; node = node->Next(), pos++) { - item = (wxMenuItem *)node->Data(); - if (item->GetId() == id) - break; - } - - if (!node) - return; - - m_menuItems.DeleteNode(node); - delete item; - - // TODO -} - -void wxMenu::Enable(int Id, bool Flag) -{ - wxMenuItem *item = FindItemForId(Id); - wxCHECK_RET( item != NULL, "can't enable non-existing menu item" ); - - item->Enable(Flag); -} - -bool wxMenu::Enabled(int Id) const -{ - wxMenuItem *item = FindItemForId(Id); - wxCHECK( item != NULL, FALSE ); - - return item->IsEnabled(); -} - -void wxMenu::Check(int Id, bool Flag) -{ - wxMenuItem *item = FindItemForId(Id); - wxCHECK_RET( item != NULL, "can't get status of non-existing menu item" ); - - item->Check(Flag); -} - -bool wxMenu::Checked(int Id) const -{ - wxMenuItem *item = FindItemForId(Id); - wxCHECK( item != NULL, FALSE ); - - return item->IsChecked(); -} - -void wxMenu::SetTitle(const wxString& label) -{ - m_title = label ; - // TODO -} - -const wxString wxMenu::GetTitle() const -{ - return m_title; -} - -void wxMenu::SetLabel(int id, const wxString& label) -{ - wxMenuItem *item = FindItemForId(id) ; - if (item==NULL) - return; - - if (item->GetSubMenu()==NULL) - { - // TODO - } - else - { - // TODO - } - item->SetName(label); -} - -wxString wxMenu::GetLabel(int Id) const -{ - // TODO - return wxString("") ; -} - -// Finds the item id matching the given string, -1 if not found. -int wxMenu::FindItem (const wxString& itemString) const -{ - char buf1[200]; - char buf2[200]; - wxStripMenuCodes ((char *)(const char *)itemString, buf1); - - for (wxNode * node = m_menuItems.First (); node; node = node->Next ()) - { - wxMenuItem *item = (wxMenuItem *) node->Data (); - if (item->GetSubMenu()) - { - int ans = item->GetSubMenu()->FindItem(itemString); - if (ans > -1) - return ans; - } - if ( !item->IsSeparator() ) - { - wxStripMenuCodes((char *)item->GetName().c_str(), buf2); - if (strcmp(buf1, buf2) == 0) - return item->GetId(); - } - } - - return -1; -} - -wxMenuItem *wxMenu::FindItemForId(int itemId, wxMenu ** itemMenu) const -{ - if (itemMenu) - *itemMenu = NULL; - for (wxNode * node = m_menuItems.First (); node; node = node->Next ()) - { - wxMenuItem *item = (wxMenuItem *) node->Data (); - - if (item->GetId() == itemId) - { - if (itemMenu) - *itemMenu = (wxMenu *) this; - return item; - } - - if (item->GetSubMenu()) - { - wxMenuItem *ans = item->GetSubMenu()->FindItemForId (itemId, itemMenu); - if (ans) - return ans; - } - } - - if (itemMenu) - *itemMenu = NULL; - return NULL; -} - -void wxMenu::SetHelpString(int itemId, const wxString& helpString) -{ - wxMenuItem *item = FindItemForId (itemId); - if (item) - item->SetHelp(helpString); -} - -wxString wxMenu::GetHelpString (int itemId) const -{ - wxMenuItem *item = FindItemForId (itemId); - wxString str(""); - return (item == NULL) ? str : item->GetHelp(); -} - -void wxMenu::ProcessCommand(wxCommandEvent & event) -{ - bool processed = FALSE; - - // Try a callback - if (m_callback) - { - (void) (*(m_callback)) (*this, event); - processed = TRUE; - } - - // Try the menu's event handler - if ( !processed && GetEventHandler()) - { - processed = GetEventHandler()->ProcessEvent(event); - } -/* TODO - // Try the window the menu was popped up from (and up - // through the hierarchy) - if ( !processed && GetInvokingWindow()) - processed = GetInvokingWindow()->ProcessEvent(event); -*/ -} - -bool wxWindow::PopupMenu(wxMenu *menu, int x, int y) -{ - // TODO - return FALSE; -} - -// Menu Bar -wxMenuBar::wxMenuBar() -{ - m_eventHandler = this; - m_menuCount = 0; - m_menus = NULL; - m_titles = NULL; - m_menuBarFrame = NULL; - - // TODO -} - -wxMenuBar::wxMenuBar(int n, wxMenu *menus[], const wxString titles[]) -{ - m_eventHandler = this; - m_menuCount = n; - m_menus = menus; - m_titles = new wxString[n]; - int i; - for ( i = 0; i < n; i++ ) - m_titles[i] = titles[i]; - m_menuBarFrame = NULL; - - // TODO -} - -wxMenuBar::~wxMenuBar() -{ - int i; - for (i = 0; i < m_menuCount; i++) - { - delete m_menus[i]; - } - delete[] m_menus; - delete[] m_titles; - - // TODO -} - -// Must only be used AFTER menu has been attached to frame, -// otherwise use individual menus to enable/disable items -void wxMenuBar::Enable(int id, bool flag) -{ - wxMenu *itemMenu = NULL; - wxMenuItem *item = FindItemForId(id, &itemMenu) ; - if (!item) - return; - - // TODO -} - -void wxMenuBar::EnableTop(int pos, bool flag) -{ - // TODO -} - -// Must only be used AFTER menu has been attached to frame, -// otherwise use individual menus -void wxMenuBar::Check(int id, bool flag) -{ - wxMenu *itemMenu = NULL; - wxMenuItem *item = FindItemForId(id, &itemMenu) ; - if (!item) - return; - - if (!item->IsCheckable()) - return ; - - // TODO -} - -bool wxMenuBar::Checked(int id) const -{ - wxMenu *itemMenu = NULL; - wxMenuItem *item = FindItemForId(id, &itemMenu) ; - if (!item) - return FALSE; - - // TODO - return FALSE; -} - -bool wxMenuBar::Enabled(int id) const -{ - wxMenu *itemMenu = NULL; - wxMenuItem *item = FindItemForId(id, &itemMenu) ; - if (!item) - return FALSE; - - // TODO - return FALSE ; -} - - -void wxMenuBar::SetLabel(int id, const wxString& label) -{ - wxMenu *itemMenu = NULL; - wxMenuItem *item = FindItemForId(id, &itemMenu) ; - - if (!item) - return; - - // TODO -} - -wxString wxMenuBar::GetLabel(int id) const -{ - wxMenu *itemMenu = NULL; - wxMenuItem *item = FindItemForId(id, &itemMenu) ; - - if (!item) - return wxString(""); - - // TODO - return wxString("") ; -} - -void wxMenuBar::SetLabelTop(int pos, const wxString& label) -{ - // TODO -} - -wxString wxMenuBar::GetLabelTop(int pos) const -{ - // TODO - return wxString(""); -} - -bool wxMenuBar::OnDelete(wxMenu *a_menu, int pos) -{ - // TODO - return FALSE; -} - -bool wxMenuBar::OnAppend(wxMenu *a_menu, const char *title) -{ - // TODO - return FALSE; -} - -void wxMenuBar::Append (wxMenu * menu, const wxString& title) -{ - if (!OnAppend(menu, title)) - return; - - m_menuCount ++; - wxMenu **new_menus = new wxMenu *[m_menuCount]; - wxString *new_titles = new wxString[m_menuCount]; - int i; - - for (i = 0; i < m_menuCount - 1; i++) - { - new_menus[i] = m_menus[i]; - m_menus[i] = NULL; - new_titles[i] = m_titles[i]; - m_titles[i] = ""; - } - if (m_menus) - { - delete[]m_menus; - delete[]m_titles; - } - m_menus = new_menus; - m_titles = new_titles; - - m_menus[m_menuCount - 1] = (wxMenu *)menu; - m_titles[m_menuCount - 1] = title; - - // TODO -} - -void wxMenuBar::Delete(wxMenu * menu, int i) -{ - int j; - int ii = (int) i; - - if (menu != 0) - { - for (ii = 0; ii < m_menuCount; ii++) - { - if (m_menus[ii] == menu) - break; - } - if (ii >= m_menuCount) - return; - } else - { - if (ii < 0 || ii >= m_menuCount) - return; - menu = m_menus[ii]; - } - - if (!OnDelete(menu, ii)) - return; - - menu->SetParent(NULL); - - -- m_menuCount; - for (j = ii; j < m_menuCount; j++) - { - m_menus[j] = m_menus[j + 1]; - m_titles[j] = m_titles[j + 1]; - } -} - -// Find the menu menuString, item itemString, and return the item id. -// Returns -1 if none found. -int wxMenuBar::FindMenuItem (const wxString& menuString, const wxString& itemString) const -{ - char buf1[200]; - char buf2[200]; - wxStripMenuCodes ((char *)(const char *)menuString, buf1); - int i; - for (i = 0; i < m_menuCount; i++) - { - wxStripMenuCodes ((char *)(const char *)m_titles[i], buf2); - if (strcmp (buf1, buf2) == 0) - return m_menus[i]->FindItem (itemString); - } - return -1; -} - -wxMenuItem *wxMenuBar::FindItemForId (int Id, wxMenu ** itemMenu) const -{ - if (itemMenu) - *itemMenu = NULL; - - wxMenuItem *item = NULL; - int i; - for (i = 0; i < m_menuCount; i++) - if ((item = m_menus[i]->FindItemForId (Id, itemMenu))) - return item; - return NULL; -} - -void wxMenuBar::SetHelpString (int Id, const wxString& helpString) -{ - int i; - for (i = 0; i < m_menuCount; i++) - { - if (m_menus[i]->FindItemForId (Id)) - { - m_menus[i]->SetHelpString (Id, helpString); - return; - } - } -} - -wxString wxMenuBar::GetHelpString (int Id) const -{ - int i; - for (i = 0; i < m_menuCount; i++) - { - if (m_menus[i]->FindItemForId (Id)) - return wxString(m_menus[i]->GetHelpString (Id)); - } - return wxString(""); -} - - diff --git a/src/mac/carbon/menuitem.cpp b/src/mac/carbon/menuitem.cpp deleted file mode 100644 index bd2f876a38..0000000000 --- a/src/mac/carbon/menuitem.cpp +++ /dev/null @@ -1,96 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: menuitem.cpp -// Purpose: wxMenuItem implementation -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -// ============================================================================ -// headers & declarations -// ============================================================================ - -#include "wx/menu.h" -#include "wx/menuitem.h" - -// ============================================================================ -// implementation -// ============================================================================ - -// ---------------------------------------------------------------------------- -// dynamic classes implementation -// ---------------------------------------------------------------------------- - -#if !USE_SHARED_LIBRARY - IMPLEMENT_DYNAMIC_CLASS(wxMenuItem, wxObject) -#endif //USE_SHARED_LIBRARY - -// ---------------------------------------------------------------------------- -// wxMenuItem -// ---------------------------------------------------------------------------- - -// ctor & dtor -// ----------- - -wxMenuItem::wxMenuItem(wxMenu *pParentMenu, int id, - const wxString& strName, const wxString& strHelp, - bool bCheckable, - wxMenu *pSubMenu) : - m_bCheckable(bCheckable), - m_strName(strName), - m_strHelp(strHelp) -{ - wxASSERT( pParentMenu != NULL ); - - m_pParentMenu = pParentMenu; - m_pSubMenu = pSubMenu; - m_idItem = id; - m_bEnabled = TRUE; -} - -wxMenuItem::~wxMenuItem() -{ -} - -// misc -// ---- - -// delete the sub menu -void wxMenuItem::DeleteSubMenu() -{ - wxASSERT( m_pSubMenu != NULL ); - - delete m_pSubMenu; - m_pSubMenu = NULL; -} - -// change item state -// ----------------- - -void wxMenuItem::Enable(bool bDoEnable) -{ - if ( m_bEnabled != bDoEnable ) { - if ( m_pSubMenu == NULL ) { // normal menu item - // TODO - } - else // submenu - { - // TODO - } - - m_bEnabled = bDoEnable; - } -} - -void wxMenuItem::Check(bool bDoCheck) -{ - wxCHECK_RET( IsCheckable(), "only checkable items may be checked" ); - - if ( m_bChecked != bDoCheck ) { - // TODO - m_bChecked = bDoCheck; - } -} \ No newline at end of file diff --git a/src/mac/carbon/metafile.cpp b/src/mac/carbon/metafile.cpp deleted file mode 100644 index a92874b336..0000000000 --- a/src/mac/carbon/metafile.cpp +++ /dev/null @@ -1,239 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: metafile.cpp -// Purpose: wxMetaFile, wxMetaFileDC etc. These classes are optional. -// Author: AUTHOR -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "metafile.h" -#endif - -#include "wx/object.h" -#include "wx/string.h" -#include "wx/dc.h" -#include "wx/stubs/metafile.h" -#include "wx/clipbrd.h" - -extern bool wxClipboardIsOpen; - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxMetaFile, wxObject) -IMPLEMENT_ABSTRACT_CLASS(wxMetaFileDC, wxDC) -#endif - -wxMetaFile::wxMetaFile(const wxString& file) -{ - // TODO -} - -wxMetaFile::~wxMetaFile() -{ - // TODO -} - -bool wxMetaFile::SetClipboard(int width, int height) -{ - bool alreadyOpen=wxClipboardOpen(); - if (!alreadyOpen) - { - wxOpenClipboard(); - if (!wxEmptyClipboard()) return FALSE; - } - bool success = wxSetClipboardData(wxDF_METAFILE,this, width,height); - if (!alreadyOpen) wxCloseClipboard(); - return (bool) success; -} - -bool wxMetaFile::Play(wxDC *dc) -{ - // TODO - return FALSE; -} - -/* - * Metafile device context - * - */ - -// Original constructor that does not takes origin and extent. If you use this, -// *DO* give origin/extent arguments to wxMakeMetaFilePlaceable. -wxMetaFileDC::wxMetaFileDC(const wxString& file) -{ - // TODO -} - -// New constructor that takes origin and extent. If you use this, don't -// give origin/extent arguments to wxMakeMetaFilePlaceable. -wxMetaFileDC::wxMetaFileDC(const wxString& file, int xext, int yext, int xorg, int yorg) -{ - // TODO -} - -wxMetaFileDC::~wxMetaFileDC() -{ -} - -void wxMetaFileDC::GetTextExtent(const wxString& string, float *x, float *y, - float *descent, float *externalLeading, wxFont *theFont, bool use16bit) -{ - // TODO -} - -wxMetaFile *wxMetaFileDC::Close() -{ - // TODO - return NULL; -} - -void wxMetaFileDC::SetMapMode(int mode) -{ - // TODO -} - -#if 0 - -#ifdef __WIN32__ -struct RECT32 -{ - short left; - short top; - short right; - short bottom; -}; - -struct mfPLACEABLEHEADER { - DWORD key; - short hmf; - RECT32 bbox; - WORD inch; - DWORD reserved; - WORD checksum; -}; -#else -struct mfPLACEABLEHEADER { - DWORD key; - HANDLE hmf; - RECT bbox; - WORD inch; - DWORD reserved; - WORD checksum; -}; -#endif - -/* - * Pass filename of existing non-placeable metafile, and bounding box. - * Adds a placeable metafile header, sets the mapping mode to anisotropic, - * and sets the window origin and extent to mimic the MM_TEXT mapping mode. - * - */ - -bool wxMakeMetaFilePlaceable(const wxString& filename, float scale) -{ - return wxMakeMetaFilePlaceable(filename, 0, 0, 0, 0, scale, FALSE); -} - -bool wxMakeMetaFilePlaceable(const wxString& filename, int x1, int y1, int x2, int y2, float scale, bool useOriginAndExtent) -{ - // I'm not sure if this is the correct way of suggesting a scale - // to the client application, but it's the only way I can find. - int unitsPerInch = (int)(576/scale); - - mfPLACEABLEHEADER header; - header.key = 0x9AC6CDD7L; - header.hmf = 0; - header.bbox.left = (int)(x1); - header.bbox.top = (int)(y1); - header.bbox.right = (int)(x2); - header.bbox.bottom = (int)(y2); - header.inch = unitsPerInch; - header.reserved = 0; - - // Calculate checksum - WORD *p; - mfPLACEABLEHEADER *pMFHead = &header; - for (p =(WORD *)pMFHead,pMFHead -> checksum = 0; - p < (WORD *)&pMFHead ->checksum; ++p) - pMFHead ->checksum ^= *p; - - FILE *fd = fopen((char *)(const char *)filename, "rb"); - if (!fd) return FALSE; - - char tempFileBuf[256]; - wxGetTempFileName("mf", tempFileBuf); - FILE *fHandle = fopen(tempFileBuf, "wb"); - if (!fHandle) - return FALSE; - fwrite((void *)&header, sizeof(unsigned char), sizeof(mfPLACEABLEHEADER), fHandle); - - // Calculate origin and extent - int originX = x1; - int originY = y1; - int extentX = x2 - x1; - int extentY = (y2 - y1); - - // Read metafile header and write - METAHEADER metaHeader; - fread((void *)&metaHeader, sizeof(unsigned char), sizeof(metaHeader), fd); - - if (useOriginAndExtent) - metaHeader.mtSize += 15; - else - metaHeader.mtSize += 5; - - fwrite((void *)&metaHeader, sizeof(unsigned char), sizeof(metaHeader), fHandle); - - // Write SetMapMode, SetWindowOrigin and SetWindowExt records - char modeBuffer[8]; - char originBuffer[10]; - char extentBuffer[10]; - METARECORD *modeRecord = (METARECORD *)&modeBuffer; - - METARECORD *originRecord = (METARECORD *)&originBuffer; - METARECORD *extentRecord = (METARECORD *)&extentBuffer; - - modeRecord->rdSize = 4; - modeRecord->rdFunction = META_SETMAPMODE; - modeRecord->rdParm[0] = MM_ANISOTROPIC; - - originRecord->rdSize = 5; - originRecord->rdFunction = META_SETWINDOWORG; - originRecord->rdParm[0] = originY; - originRecord->rdParm[1] = originX; - - extentRecord->rdSize = 5; - extentRecord->rdFunction = META_SETWINDOWEXT; - extentRecord->rdParm[0] = extentY; - extentRecord->rdParm[1] = extentX; - - fwrite((void *)modeBuffer, sizeof(char), 8, fHandle); - - if (useOriginAndExtent) - { - fwrite((void *)originBuffer, sizeof(char), 10, fHandle); - fwrite((void *)extentBuffer, sizeof(char), 10, fHandle); - } - - int ch = -2; - while (ch != EOF) - { - ch = getc(fd); - if (ch != EOF) - { - putc(ch, fHandle); - } - } - fclose(fHandle); - fclose(fd); - wxRemoveFile(filename); - wxCopyFile(tempFileBuf, filename); - wxRemoveFile(tempFileBuf); - return TRUE; -} - -#endif - diff --git a/src/mac/carbon/minifram.cpp b/src/mac/carbon/minifram.cpp deleted file mode 100644 index 4f6f5e5fcb..0000000000 --- a/src/mac/carbon/minifram.cpp +++ /dev/null @@ -1,22 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: minifram.cpp -// Purpose: wxMiniFrame. Optional; identical to wxFrame if not supported. -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "minifram.h" -#endif - -#include "wx/minifram.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxMiniFrame, wxFrame) -#endif - - diff --git a/src/mac/carbon/msgdlg.cpp b/src/mac/carbon/msgdlg.cpp deleted file mode 100644 index 775ac8f064..0000000000 --- a/src/mac/carbon/msgdlg.cpp +++ /dev/null @@ -1,36 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: msgdlg.cpp -// Purpose: wxMessageDialog -// Author: AUTHOR -// Modified by: -// Created: 04/01/98 -// RCS-ID: $$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "msgdlg.h" -#endif - -#include "wx/msgdlg.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_CLASS(wxMessageDialog, wxDialog) -#endif - -wxMessageDialog::wxMessageDialog(wxWindow *parent, const wxString& message, const wxString& caption, - long style, const wxPoint& pos) -{ - m_caption = caption; - m_message = message; - m_dialogStyle = style; - m_parent = parent; -} - -int wxMessageDialog::ShowModal() -{ - // TODO - return wxID_CANCEL; -} - diff --git a/src/mac/carbon/notebook.cpp b/src/mac/carbon/notebook.cpp deleted file mode 100644 index 312dd0f3d3..0000000000 --- a/src/mac/carbon/notebook.cpp +++ /dev/null @@ -1,377 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: notebook.cpp -// Purpose: implementation of wxNotebook -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -// ============================================================================ -// declarations -// ============================================================================ - -// ---------------------------------------------------------------------------- -// headers -// ---------------------------------------------------------------------------- -#ifdef __GNUG__ -#pragma implementation "notebook.h" -#endif - -#include -#include -#include -#include - -// ---------------------------------------------------------------------------- -// macros -// ---------------------------------------------------------------------------- - -// check that the page index is valid -#define IS_VALID_PAGE(nPage) (((nPage) >= 0) && ((nPage) < GetPageCount())) - -// ---------------------------------------------------------------------------- -// event table -// ---------------------------------------------------------------------------- - -#if !USE_SHARED_LIBRARIES -BEGIN_EVENT_TABLE(wxNotebook, wxControl) - EVT_NOTEBOOK_PAGE_CHANGED(-1, wxNotebook::OnSelChange) - - EVT_SIZE(wxNotebook::OnSize) - EVT_SET_FOCUS(wxNotebook::OnSetFocus) - EVT_NAVIGATION_KEY(wxNotebook::OnNavigationKey) -END_EVENT_TABLE() - -IMPLEMENT_DYNAMIC_CLASS(wxNotebook, wxControl) -IMPLEMENT_DYNAMIC_CLASS(wxNotebookEvent, wxCommandEvent) -#endif - -// ============================================================================ -// implementation -// ============================================================================ - -// ---------------------------------------------------------------------------- -// wxNotebook construction -// ---------------------------------------------------------------------------- - -// common part of all ctors -void wxNotebook::Init() -{ - m_pImageList = NULL; - m_nSelection = -1; -} - -// default for dynamic class -wxNotebook::wxNotebook() -{ - Init(); -} - -// the same arguments as for wxControl -wxNotebook::wxNotebook(wxWindow *parent, - wxWindowID id, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - Init(); - - Create(parent, id, pos, size, style, name); -} - -// Create() function -bool wxNotebook::Create(wxWindow *parent, - wxWindowID id, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - // base init - SetName(name); - SetParent(parent); - - m_windowId = id == -1 ? NewControlId() : id; - - // style - m_windowStyle = style; - - if ( parent != NULL ) - parent->AddChild(this); - - // TODO - - return FALSE; -} - -// dtor -wxNotebook::~wxNotebook() -{ -} - -// ---------------------------------------------------------------------------- -// wxNotebook accessors -// ---------------------------------------------------------------------------- -int wxNotebook::GetPageCount() const -{ - return m_aPages.Count(); -} - -int wxNotebook::GetRowCount() const -{ - // TODO - return 0; -} - -int wxNotebook::SetSelection(int nPage) -{ - wxASSERT( IS_VALID_PAGE(nPage) ); - - ChangePage(m_nSelection, nPage); - - // TODO - return 0; -} - -void wxNotebook::AdvanceSelection(bool bForward) -{ - int nSel = GetSelection(); - int nMax = GetPageCount() - 1; - if ( bForward ) - SetSelection(nSel == nMax ? 0 : nSel + 1); - else - SetSelection(nSel == 0 ? nMax : nSel - 1); -} - -bool wxNotebook::SetPageText(int nPage, const wxString& strText) -{ - wxASSERT( IS_VALID_PAGE(nPage) ); - - // TODO - return FALSE; -} - -wxString wxNotebook::GetPageText(int nPage) const -{ - wxASSERT( IS_VALID_PAGE(nPage) ); - - // TODO - return wxString(""); -} - -int wxNotebook::GetPageImage(int nPage) const -{ - wxASSERT( IS_VALID_PAGE(nPage) ); - - // TODO - return 0; -} - -bool wxNotebook::SetPageImage(int nPage, int nImage) -{ - wxASSERT( IS_VALID_PAGE(nPage) ); - - // TODO - return FALSE; -} - -void wxNotebook::SetImageList(wxImageList* imageList) -{ - m_pImageList = imageList; - // TODO -} - -// ---------------------------------------------------------------------------- -// wxNotebook operations -// ---------------------------------------------------------------------------- - -// remove one page from the notebook -bool wxNotebook::DeletePage(int nPage) -{ - wxCHECK( IS_VALID_PAGE(nPage), FALSE ); - - // TODO: delete native widget page - - delete m_aPages[nPage]; - m_aPages.Remove(nPage); - - return TRUE; -} - -// remove one page from the notebook, without deleting the window -bool wxNotebook::RemovePage(int nPage) -{ - wxCHECK( IS_VALID_PAGE(nPage), FALSE ); - - m_aPages.Remove(nPage); - - return TRUE; -} - -// remove all pages -bool wxNotebook::DeleteAllPages() -{ - // TODO: delete native widget pages - - int nPageCount = GetPageCount(); - int nPage; - for ( nPage = 0; nPage < nPageCount; nPage++ ) - delete m_aPages[nPage]; - - m_aPages.Clear(); - - return TRUE; -} - -// add a page to the notebook -bool wxNotebook::AddPage(wxNotebookPage *pPage, - const wxString& strText, - bool bSelect, - int imageId) -{ - return InsertPage(GetPageCount(), pPage, strText, bSelect, imageId); -} - -// same as AddPage() but does it at given position -bool wxNotebook::InsertPage(int nPage, - wxNotebookPage *pPage, - const wxString& strText, - bool bSelect, - int imageId) -{ - wxASSERT( pPage != NULL ); - wxCHECK( IS_VALID_PAGE(nPage) || nPage == GetPageCount(), FALSE ); - - // TODO: insert native widget page - - // save the pointer to the page - m_aPages.Insert(pPage, nPage); - - // some page must be selected: either this one or the first one if there is - // still no selection - if ( bSelect ) - m_nSelection = nPage; - else if ( m_nSelection == -1 ) - m_nSelection = 0; - - return TRUE; -} - -// ---------------------------------------------------------------------------- -// wxNotebook callbacks -// ---------------------------------------------------------------------------- - -// @@@ OnSize() is used for setting the font when it's called for the first -// time because doing it in ::Create() doesn't work (for unknown reasons) -void wxNotebook::OnSize(wxSizeEvent& event) -{ - static bool s_bFirstTime = TRUE; - if ( s_bFirstTime ) { - // TODO: any first-time-size processing. - s_bFirstTime = FALSE; - } - - // TODO: all this may or may not be necessary for your platform - - // emulate page change (it's esp. important to do it first time because - // otherwise our page would stay invisible) - int nSel = m_nSelection; - m_nSelection = -1; - SetSelection(nSel); - - // fit the notebook page to the tab control's display area - int w, h; - GetSize(&w, &h); - - unsigned int nCount = m_aPages.Count(); - for ( unsigned int nPage = 0; nPage < nCount; nPage++ ) { - wxNotebookPage *pPage = m_aPages[nPage]; - pPage->SetSize(0, 0, w, h); - if ( pPage->GetAutoLayout() ) - pPage->Layout(); - } - - // Processing continues to next OnSize - event.Skip(); -} - -void wxNotebook::OnSelChange(wxNotebookEvent& event) -{ - // is it our tab control? - if ( event.GetEventObject() == this ) - ChangePage(event.GetOldSelection(), event.GetSelection()); - - // we want to give others a chance to process this message as well - event.Skip(); -} - -void wxNotebook::OnSetFocus(wxFocusEvent& event) -{ - // set focus to the currently selected page if any - if ( m_nSelection != -1 ) - m_aPages[m_nSelection]->SetFocus(); - - event.Skip(); -} - -void wxNotebook::OnNavigationKey(wxNavigationKeyEvent& event) -{ - if ( event.IsWindowChange() ) { - // change pages - AdvanceSelection(event.GetDirection()); - } - else { - // pass to the parent - if ( GetParent() ) { - event.SetCurrentFocus(this); - GetParent()->ProcessEvent(event); - } - } -} - -// ---------------------------------------------------------------------------- -// wxNotebook base class virtuals -// ---------------------------------------------------------------------------- - -// override these 2 functions to do nothing: everything is done in OnSize - -void wxNotebook::SetConstraintSizes(bool /* recurse */) -{ - // don't set the sizes of the pages - their correct size is not yet known - wxControl::SetConstraintSizes(FALSE); -} - -bool wxNotebook::DoPhase(int /* nPhase */) -{ - return TRUE; -} - -void wxNotebook::Command(wxCommandEvent& event) -{ - wxFAIL_MSG("wxNotebook::Command not implemented"); -} - -// ---------------------------------------------------------------------------- -// wxNotebook helper functions -// ---------------------------------------------------------------------------- - -// hide the currently active panel and show the new one -void wxNotebook::ChangePage(int nOldSel, int nSel) -{ - wxASSERT( nOldSel != nSel ); // impossible - - if ( nOldSel != -1 ) { - m_aPages[nOldSel]->Show(FALSE); - } - - wxNotebookPage *pPage = m_aPages[nSel]; - pPage->Show(TRUE); - pPage->SetFocus(); - - m_nSelection = nSel; -} - diff --git a/src/mac/carbon/palette.cpp b/src/mac/carbon/palette.cpp deleted file mode 100644 index f8db96f8d0..0000000000 --- a/src/mac/carbon/palette.cpp +++ /dev/null @@ -1,82 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: palette.cpp -// Purpose: wxPalette -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "palette.h" -#endif - -#include "wx/palette.h" - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxPalette, wxGDIObject) -#endif - -/* - * Palette - * - */ - -wxPaletteRefData::wxPaletteRefData() -{ - // TODO -} - -wxPaletteRefData::~wxPaletteRefData() -{ - // TODO -} - -wxPalette::wxPalette() -{ -} - -wxPalette::wxPalette(int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue) -{ - Create(n, red, green, blue); -} - -wxPalette::~wxPalette() -{ -} - -bool wxPalette::Create(int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue) -{ - UnRef(); - - m_refData = new wxPaletteRefData; - - // TODO - - return FALSE; -} - -int wxPalette::GetPixel(const unsigned char red, const unsigned char green, const unsigned char blue) const -{ - if ( !m_refData ) - return FALSE; - - // TODO - return FALSE; -} - -bool wxPalette::GetRGB(int index, unsigned char *red, unsigned char *green, unsigned char *blue) const -{ - if ( !m_refData ) - return FALSE; - - if (index < 0 || index > 255) - return FALSE; - - // TODO - return FALSE; -} - - diff --git a/src/mac/carbon/pen.cpp b/src/mac/carbon/pen.cpp deleted file mode 100644 index 1e3ced2a3a..0000000000 --- a/src/mac/carbon/pen.cpp +++ /dev/null @@ -1,202 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: pen.cpp -// Purpose: wxPen -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "pen.h" -#endif - -#include "wx/setup.h" -#include "wx/utils.h" -#include "wx/pen.h" - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxPen, wxGDIObject) -#endif - -wxPenRefData::wxPenRefData() -{ - m_style = wxSOLID; - m_width = 1; - m_join = wxJOIN_ROUND ; - m_cap = wxCAP_ROUND ; - m_nbDash = 0 ; - m_dash = 0 ; -/* TODO: null data - m_hPen = 0; -*/ -} - -wxPenRefData::wxPenRefData(const wxPenRefData& data) -{ - m_style = data.m_style; - m_width = data.m_width; - m_join = data.m_join; - m_cap = data.m_cap; - m_nbDash = data.m_nbDash; - m_dash = data.m_dash; - m_colour = data.m_colour; -/* TODO: null data - m_hPen = 0; -*/ -} - -wxPenRefData::~wxPenRefData() -{ - // TODO: delete data -} - -// Pens - -wxPen::wxPen() -{ - if ( wxThePenList ) - wxThePenList->AddPen(this); -} - -wxPen::~wxPen() -{ - if (wxThePenList) - wxThePenList->RemovePen(this); -} - -// Should implement Create -wxPen::wxPen(const wxColour& col, int Width, int Style) -{ - m_refData = new wxPenRefData; - - M_PENDATA->m_colour = col; - M_PENDATA->m_width = Width; - M_PENDATA->m_style = Style; - M_PENDATA->m_join = wxJOIN_ROUND ; - M_PENDATA->m_cap = wxCAP_ROUND ; - M_PENDATA->m_nbDash = 0 ; - M_PENDATA->m_dash = 0 ; - - RealizeResource(); - - if ( wxThePenList ) - wxThePenList->AddPen(this); -} - -wxPen::wxPen(const wxBitmap& stipple, int Width) -{ - m_refData = new wxPenRefData; - - M_PENDATA->m_stipple = stipple; - M_PENDATA->m_width = Width; - M_PENDATA->m_style = wxSTIPPLE; - M_PENDATA->m_join = wxJOIN_ROUND ; - M_PENDATA->m_cap = wxCAP_ROUND ; - M_PENDATA->m_nbDash = 0 ; - M_PENDATA->m_dash = 0 ; - - RealizeResource(); - - if ( wxThePenList ) - wxThePenList->AddPen(this); -} - -void wxPen::Unshare() -{ - // Don't change shared data - if (!m_refData) - { - m_refData = new wxPenRefData(); - } - else - { - wxPenRefData* ref = new wxPenRefData(*(wxPenRefData*)m_refData); - UnRef(); - m_refData = ref; - } -} - -void wxPen::SetColour(const wxColour& col) -{ - Unshare(); - - M_PENDATA->m_colour = col; - - RealizeResource(); -} - -void wxPen::SetColour(unsigned char r, unsigned char g, unsigned char b) -{ - Unshare(); - - M_PENDATA->m_colour.Set(r, g, b); - - RealizeResource(); -} - -void wxPen::SetWidth(int Width) -{ - Unshare(); - - M_PENDATA->m_width = Width; - - RealizeResource(); -} - -void wxPen::SetStyle(int Style) -{ - Unshare(); - - M_PENDATA->m_style = Style; - - RealizeResource(); -} - -void wxPen::SetStipple(const wxBitmap& Stipple) -{ - Unshare(); - - M_PENDATA->m_stipple = Stipple; - M_PENDATA->m_style = wxSTIPPLE; - - RealizeResource(); -} - -void wxPen::SetDashes(int nb_dashes, const wxDash *Dash) -{ - Unshare(); - - M_PENDATA->m_nbDash = nb_dashes; - M_PENDATA->m_dash = (wxDash *)Dash; - - RealizeResource(); -} - -void wxPen::SetJoin(int Join) -{ - Unshare(); - - M_PENDATA->m_join = Join; - - RealizeResource(); -} - -void wxPen::SetCap(int Cap) -{ - Unshare(); - - M_PENDATA->m_cap = Cap; - - RealizeResource(); -} - -bool wxPen::RealizeResource() -{ - // TODO: create actual pen - return FALSE; -} - - diff --git a/src/mac/carbon/print.cpp b/src/mac/carbon/print.cpp deleted file mode 100644 index 61fd6e7e99..0000000000 --- a/src/mac/carbon/print.cpp +++ /dev/null @@ -1,82 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: print.cpp -// Purpose: Print framework -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "print.h" -#endif - -#include "wx/stubs/print.h" -#include "wx/stubs/printdlg.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxPrinter, wxPrinterBase) -IMPLEMENT_CLASS(wxPrintPreview, wxPrintPreviewBase) -#endif - -/* - * Printer - */ - -wxPrinter::wxPrinter(wxPrintData *data): - wxPrinterBase(data) -{ -} - -wxPrinter::~wxPrinter() -{ -} - -bool wxPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt) -{ - // TODO. See wxPostScriptPrinter::Print for hints. - return FALSE; -} - -bool wxPrinter::PrintDialog(wxWindow *parent) -{ - wxPrintDialog dialog(parent, & m_printData); - return (dialog.ShowModal() == wxID_OK); -} - -bool wxPrinter::Setup(wxWindow *parent) -{ - wxPrintDialog dialog(parent, & m_printData); - dialog.GetPrintData().SetSetupDialog(TRUE); - return (dialog.ShowModal() == wxID_OK); -} - -/* - * Print preview - */ - -wxPrintPreview::wxPrintPreview(wxPrintout *printout, wxPrintout *printoutForPrinting, wxPrintData *data): - wxPrintPreviewBase(printout, printoutForPrinting, data) -{ - DetermineScaling(); -} - -wxPrintPreview::~wxPrintPreview() -{ -} - -bool wxPrintPreview::Print(bool interactive) -{ - if (!m_printPrintout) - return FALSE; - wxPrinter printer(&m_printData); - return printer.Print(m_previewFrame, m_printPrintout, interactive); -} - -void wxPrintPreview::DetermineScaling() -{ - // TODO -} - diff --git a/src/mac/carbon/printdlg.cpp b/src/mac/carbon/printdlg.cpp deleted file mode 100644 index eae3b95568..0000000000 --- a/src/mac/carbon/printdlg.cpp +++ /dev/null @@ -1,115 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: printdlg.cpp -// Purpose: wxPrintDialog, wxPageSetupDialog -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "printdlg.h" -#endif - -#include "wx/object.h" -#include "wx/stubs/printdlg.h" -#include "wx/dcprint.h" - -// Use generic page setup dialog: use your own native one if one exists. -#include "wx/generic/prntdlgg.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxPrintDialog, wxDialog) -IMPLEMENT_CLASS(wxPageSetupDialog, wxDialog) -#endif - -wxPrintDialog::wxPrintDialog(): - wxDialog() -{ - m_dialogParent = NULL; - m_printerDC = NULL; -} - -wxPrintDialog::wxPrintDialog(wxWindow *p, wxPrintData* data): - wxDialog() -{ - Create(p, data); -} - -bool wxPrintDialog::Create(wxWindow *p, wxPrintData* data) -{ - m_dialogParent = p; - m_printerDC = NULL; - - if ( data ) - m_printData = *data; - - return TRUE; -} - -wxPrintDialog::~wxPrintDialog() -{ - if (m_printerDC) - delete m_printerDC; -} - -int wxPrintDialog::ShowModal() -{ - // TODO - return wxID_CANCEL; -} - -wxDC *wxPrintDialog::GetPrintDC() -{ - if (m_printerDC) - { - wxDC* dc = m_printerDC; - m_printerDC = NULL; - return dc; - } - else - return NULL; -} - -/* - * wxPageSetupDialog - */ - -wxPageSetupDialog::wxPageSetupDialog(): - wxDialog() -{ - m_dialogParent = NULL; -} - -wxPageSetupDialog::wxPageSetupDialog(wxWindow *p, wxPageSetupData *data): - wxDialog() -{ - Create(p, data); -} - -bool wxPageSetupDialog::Create(wxWindow *p, wxPageSetupData *data) -{ - m_dialogParent = p; - - if (data) - m_pageSetupData = (*data); - - return TRUE; -} - -wxPageSetupDialog::~wxPageSetupDialog() -{ -} - -int wxPageSetupDialog::ShowModal() -{ - // Uses generic page setup dialog - wxGenericPageSetupDialog *genericPageSetupDialog = new wxGenericPageSetupDialog(GetParent(), & m_pageSetupData); - int ret = genericPageSetupDialog->ShowModal(); - m_pageSetupData = genericPageSetupDialog->GetPageSetupData(); - genericPageSetupDialog->Close(TRUE); - return ret; -} - diff --git a/src/mac/carbon/radiobox.cpp b/src/mac/carbon/radiobox.cpp deleted file mode 100644 index da582d0e52..0000000000 --- a/src/mac/carbon/radiobox.cpp +++ /dev/null @@ -1,194 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: radiobox.cpp -// Purpose: wxRadioBox -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "radiobox.h" -#endif - -#include "wx/radiobox.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxRadioBox, wxControl) -#endif - -// Radio box item -wxRadioBox::wxRadioBox() -{ - m_selectedButton = -1; - m_noItems = 0; - m_noRowsOrCols = 0; - m_majorDim = 0 ; -} - -bool wxRadioBox::Create(wxWindow *parent, wxWindowID id, const wxString& title, - const wxPoint& pos, const wxSize& size, - int n, const wxString choices[], - int majorDim, long style, - const wxValidator& val, const wxString& name) -{ - m_selectedButton = -1; - m_noItems = n; - - SetName(name); - SetValidator(val); - - parent->AddChild(this); - - m_windowStyle = (long&)style; - - if (id == -1) - m_windowId = NewControlId(); - else - m_windowId = id; - - m_noRowsOrCols = majorDim; - - if (majorDim==0) - m_majorDim = n ; - else - m_majorDim = majorDim ; - - - // TODO create radiobox - return FALSE; -} - - -wxRadioBox::~wxRadioBox() -{ - // TODO -} - -wxString wxRadioBox::GetLabel(int item) const -{ - // TODO - return wxString(""); -} - -void wxRadioBox::SetLabel(int item, const wxString& label) -{ - // TODO -} - -int wxRadioBox::FindString(const wxString& s) const -{ - // TODO - return -1; -} - -void wxRadioBox::SetSelection(int n) -{ - if ((n < 0) || (n >= m_noItems)) - return; - // TODO - - m_selectedButton = n; -} - -// Get single selection, for single choice list items -int wxRadioBox::GetSelection() const -{ - return m_selectedButton; -} - -// Find string for position -wxString wxRadioBox::GetString(int n) const -{ - // TODO - return wxString(""); -} - -void wxRadioBox::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -void wxRadioBox::GetSize(int *width, int *height) const -{ - // TODO -} - -void wxRadioBox::GetPosition(int *x, int *y) const -{ - // TODO -} - -wxString wxRadioBox::GetLabel() const -{ - // TODO - return wxString(""); -} - -void wxRadioBox::SetLabel(const wxString& label) -{ - // TODO -} - -void wxRadioBox::SetFocus() -{ - // TODO -} - -bool wxRadioBox::Show(bool show) -{ - // TODO - return FALSE; -} - -// Enable a specific button -void wxRadioBox::Enable(int item, bool enable) -{ - // TODO -} - -// Enable all controls -void wxRadioBox::Enable(bool enable) -{ - wxControl::Enable(enable); - - // TODO -} - -// Show a specific button -void wxRadioBox::Show(int item, bool show) -{ - // TODO -} - -// For single selection items only -wxString wxRadioBox::GetStringSelection () const -{ - int sel = GetSelection (); - if (sel > -1) - return this->GetString (sel); - else - return wxString(""); -} - -bool wxRadioBox::SetStringSelection (const wxString& s) -{ - int sel = FindString (s); - if (sel > -1) - { - SetSelection (sel); - return TRUE; - } - else - return FALSE; -} - -void wxRadioBox::Command (wxCommandEvent & event) -{ - SetSelection (event.m_commandInt); - ProcessCommand (event); -} - - diff --git a/src/mac/carbon/radiobut.cpp b/src/mac/carbon/radiobut.cpp deleted file mode 100644 index 65baab38b6..0000000000 --- a/src/mac/carbon/radiobut.cpp +++ /dev/null @@ -1,68 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: radiobut.cpp -// Purpose: wxRadioButton -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "radiobut.h" -#endif - -#include "wx/radiobut.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxRadioButton, wxControl) -#endif - -bool wxRadioButton::Create(wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); - SetValidator(validator); - - if (parent) parent->AddChild(this); - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - m_windowStyle = style ; - - // TODO create radiobutton - return FALSE; -} - -void wxRadioButton::SetLabel(const wxString& label) -{ - // TODO -} - -void wxRadioButton::SetValue(bool value) -{ - // TODO -} - -// Get single selection, for single choice list items -bool wxRadioButton::GetValue() const -{ - // TODO - return FALSE; -} - -void wxRadioButton::Command (wxCommandEvent & event) -{ - SetValue ( (event.m_commandInt != 0) ); - ProcessCommand (event); -} - - diff --git a/src/mac/carbon/region.cpp b/src/mac/carbon/region.cpp deleted file mode 100644 index c71d4c605a..0000000000 --- a/src/mac/carbon/region.cpp +++ /dev/null @@ -1,363 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// File: region.cpp -// Purpose: Region class -// Author: Markus Holzem/Julian Smart/AUTHOR -// Created: Fri Oct 24 10:46:34 MET 1997 -// RCS-ID: $Id$ -// Copyright: (c) 1997 Markus Holzem/Julian Smart/AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "region.h" -#endif - -#include "wx/region.h" -#include "wx/gdicmn.h" - -#if !USE_SHARED_LIBRARY - IMPLEMENT_DYNAMIC_CLASS(wxRegion, wxGDIObject) - IMPLEMENT_DYNAMIC_CLASS(wxRegionIterator, wxObject) -#endif - -//----------------------------------------------------------------------------- -// wxRegionRefData implementation -//----------------------------------------------------------------------------- - -class WXDLLEXPORT wxRegionRefData : public wxGDIRefData { -public: - wxRegionRefData() - { - } - - wxRegionRefData(const wxRegionRefData& data) - { - // TODO - } - - ~wxRegionRefData() - { - // TODO - } -}; - - -//----------------------------------------------------------------------------- -// wxRegion -//----------------------------------------------------------------------------- - -/*! - * Create an empty region. - */ -wxRegion::wxRegion() -{ - m_refData = new wxRegionRefData; - // TODO create empty region -} - -wxRegion::wxRegion(long x, long y, long w, long h) -{ - m_refData = new wxRegionRefData; - // TODO create rect region -} - -wxRegion::wxRegion(const wxPoint& topLeft, const wxPoint& bottomRight) -{ - m_refData = new wxRegionRefData; - // TODO create rect region -} - -wxRegion::wxRegion(const wxRect& rect) -{ - m_refData = new wxRegionRefData; - // TODO create rect region -} - -/*! - * Destroy the region. - */ -wxRegion::~wxRegion() -{ - // m_refData unrefed in ~wxObject -} - -//----------------------------------------------------------------------------- -//# Modify region -//----------------------------------------------------------------------------- - -//! Clear current region -void wxRegion::Clear() -{ - UnRef(); -} - -//! Combine rectangle (x, y, w, h) with this. -bool wxRegion::Combine(long x, long y, long width, long height, wxRegionOp op) -{ - // Don't change shared data - if (!m_refData) { - m_refData = new wxRegionRefData(); - } else if (m_refData->GetRefCount() > 1) { - wxRegionRefData* ref = (wxRegionRefData*)m_refData; - UnRef(); - m_refData = new wxRegionRefData(*ref); - } - // If ref count is 1, that means it's 'ours' anyway so no action. - - // TODO create rect region - - int mode = 0; // TODO platform-specific code - switch (op) - { - case wxRGN_AND: - // TODO - break ; - case wxRGN_OR: - // TODO - break ; - case wxRGN_XOR: - // TODO - break ; - case wxRGN_DIFF: - // TODO - break ; - case wxRGN_COPY: - default: - // TODO - break ; - } - - // TODO do combine region - - return FALSE; -} - -//! Union /e region with this. -bool wxRegion::Combine(const wxRegion& region, wxRegionOp op) -{ - if (region.Empty()) - return FALSE; - - // Don't change shared data - if (!m_refData) { - m_refData = new wxRegionRefData(); - } else if (m_refData->GetRefCount() > 1) { - wxRegionRefData* ref = (wxRegionRefData*)m_refData; - UnRef(); - m_refData = new wxRegionRefData(*ref); - } - - int mode = 0; // TODO platform-specific code - switch (op) - { - case wxRGN_AND: - // TODO - break ; - case wxRGN_OR: - // TODO - break ; - case wxRGN_XOR: - // TODO - break ; - case wxRGN_DIFF: - // TODO - break ; - case wxRGN_COPY: - default: - // TODO - break ; - } - - // TODO combine region - - return FALSE; -} - -bool wxRegion::Combine(const wxRect& rect, wxRegionOp op) -{ - return Combine(rect.GetLeft(), rect.GetTop(), rect.GetWidth(), rect.GetHeight(), op); -} - -//----------------------------------------------------------------------------- -//# Information on region -//----------------------------------------------------------------------------- - -// Outer bounds of region -void wxRegion::GetBox(long& x, long& y, long&w, long &h) const -{ - if (m_refData) { - // TODO get box - } else { - x = y = w = h = 0; - } -} - -wxRect wxRegion::GetBox() const -{ - long x, y, w, h; - GetBox(x, y, w, h); - return wxRect(x, y, w, h); -} - -// Is region empty? -bool wxRegion::Empty() const -{ - // TODO - return FALSE; -} - -//----------------------------------------------------------------------------- -//# Tests -//----------------------------------------------------------------------------- - -// Does the region contain the point (x,y)? -wxRegionContain wxRegion::Contains(long x, long y) const -{ - if (!m_refData) - return wxOutRegion; - - // TODO. Return wxInRegion if within region. - if (0) - return wxInRegion; - return wxOutRegion; -} - -// Does the region contain the point pt? -wxRegionContain wxRegion::Contains(const wxPoint& pt) const -{ - if (!m_refData) - return wxOutRegion; - - // TODO. Return wxInRegion if within region. - if (0) - return wxInRegion; - else - return wxOutRegion; -} - -// Does the region contain the rectangle (x, y, w, h)? -wxRegionContain wxRegion::Contains(long x, long y, long w, long h) const -{ - if (!m_refData) - return wxOutRegion; - - // TODO. Return wxInRegion if within region. - if (0) - return wxInRegion; - else - return wxOutRegion; -} - -// Does the region contain the rectangle rect -wxRegionContain wxRegion::Contains(const wxRect& rect) const -{ - if (!m_refData) - return wxOutRegion; - - long x, y, w, h; - x = rect.x; - y = rect.y; - w = rect.GetWidth(); - h = rect.GetHeight(); - return Contains(x, y, w, h); -} - -/////////////////////////////////////////////////////////////////////////////// -// // -// wxRegionIterator // -// // -/////////////////////////////////////////////////////////////////////////////// - -/*! - * Initialize empty iterator - */ -wxRegionIterator::wxRegionIterator() : m_current(0), m_numRects(0), m_rects(NULL) -{ -} - -wxRegionIterator::~wxRegionIterator() -{ - if (m_rects) - delete[] m_rects; -} - -/*! - * Initialize iterator for region - */ -wxRegionIterator::wxRegionIterator(const wxRegion& region) -{ - m_rects = NULL; - - Reset(region); -} - -/*! - * Reset iterator for a new /e region. - */ -void wxRegionIterator::Reset(const wxRegion& region) -{ - m_current = 0; - m_region = region; - - if (m_rects) - delete[] m_rects; - - m_rects = NULL; - - if (m_region.Empty()) - m_numRects = 0; - else - { - // TODO create m_rects and fill with rectangles for this region - m_numRects = 0; - } -} - -/*! - * Increment iterator. The rectangle returned is the one after the - * incrementation. - */ -void wxRegionIterator::operator ++ () -{ - if (m_current < m_numRects) - ++m_current; -} - -/*! - * Increment iterator. The rectangle returned is the one before the - * incrementation. - */ -void wxRegionIterator::operator ++ (int) -{ - if (m_current < m_numRects) - ++m_current; -} - -long wxRegionIterator::GetX() const -{ - if (m_current < m_numRects) - return m_rects[m_current].x; - return 0; -} - -long wxRegionIterator::GetY() const -{ - if (m_current < m_numRects) - return m_rects[m_current].y; - return 0; -} - -long wxRegionIterator::GetW() const -{ - if (m_current < m_numRects) - return m_rects[m_current].width ; - return 0; -} - -long wxRegionIterator::GetH() const -{ - if (m_current < m_numRects) - return m_rects[m_current].height; - return 0; -} - diff --git a/src/mac/carbon/scrolbar.cpp b/src/mac/carbon/scrolbar.cpp deleted file mode 100644 index 54df181166..0000000000 --- a/src/mac/carbon/scrolbar.cpp +++ /dev/null @@ -1,78 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: scrolbar.cpp -// Purpose: wxScrollBar -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "scrolbar.h" -#endif - -#include "wx/scrolbar.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxScrollBar, wxControl) - -#endif - -// Scrollbar -bool wxScrollBar::Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - if (!parent) - return FALSE; - parent->AddChild(this); - SetName(name); - SetValidator(validator); - - m_windowStyle = style; - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - // TODO create scrollbar - return TRUE; -} - -wxScrollBar::~wxScrollBar() -{ -} - -void wxScrollBar::SetThumbPosition(int viewStart) -{ - // TODO -} - -int wxScrollBar::GetThumbPosition() const -{ - // TODO - return 0; -} - -void wxScrollBar::SetScrollbar(int position, int thumbSize, int range, int pageSize, - bool refresh) -{ - m_viewSize = pageSize; - m_pageSize = thumbSize; - m_objectSize = range; - - // TODO -} - - -void wxScrollBar::Command(wxCommandEvent& event) -{ - SetThumbPosition(event.m_commandInt); - ProcessCommand(event); -} - diff --git a/src/mac/carbon/settings.cpp b/src/mac/carbon/settings.cpp deleted file mode 100644 index 2beda5c2a6..0000000000 --- a/src/mac/carbon/settings.cpp +++ /dev/null @@ -1,176 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: settings.cpp -// Purpose: wxSettings -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "settings.h" -#endif - -#include "wx/settings.h" - -wxColour wxSystemSettings::GetSystemColour(int index) -{ - // TODO - return wxColour(); -} - -wxFont wxSystemSettings::GetSystemFont(int index) -{ - // TODO - switch (index) - { - case wxSYS_DEVICE_DEFAULT_FONT: - { - break; - } - case wxSYS_DEFAULT_PALETTE: - { - break; - } - case wxSYS_SYSTEM_FIXED_FONT: - { - break; - } - case wxSYS_SYSTEM_FONT: - { - break; - } - default: - case wxSYS_DEFAULT_GUI_FONT: - { - break; - } - } - - return wxFont(); -} - -// Get a system metric, e.g. scrollbar size -int wxSystemSettings::GetSystemMetric(int index) -{ - switch ( index) - { - case wxSYS_MOUSE_BUTTONS: - // TODO - return 0; - case wxSYS_BORDER_X: - // TODO - return 0; - case wxSYS_BORDER_Y: - // TODO - return 0; - case wxSYS_CURSOR_X: - // TODO - return 0; - case wxSYS_CURSOR_Y: - // TODO - return 0; - case wxSYS_DCLICK_X: - // TODO - return 0; - case wxSYS_DCLICK_Y: - // TODO - return 0; - case wxSYS_DRAG_X: - // TODO - return 0; - case wxSYS_DRAG_Y: - // TODO - return 0; - case wxSYS_EDGE_X: - // TODO - return 0; - case wxSYS_EDGE_Y: - // TODO - return 0; - case wxSYS_HSCROLL_ARROW_X: - // TODO - return 0; - case wxSYS_HSCROLL_ARROW_Y: - // TODO - return 0; - case wxSYS_HTHUMB_X: - // TODO - return 0; - case wxSYS_ICON_X: - // TODO - return 0; - case wxSYS_ICON_Y: - // TODO - return 0; - case wxSYS_ICONSPACING_X: - // TODO - return 0; - case wxSYS_ICONSPACING_Y: - // TODO - return 0; - case wxSYS_WINDOWMIN_X: - // TODO - return 0; - case wxSYS_WINDOWMIN_Y: - // TODO - return 0; - case wxSYS_SCREEN_X: - // TODO - return 0; - case wxSYS_SCREEN_Y: - // TODO - return 0; - case wxSYS_FRAMESIZE_X: - // TODO - return 0; - case wxSYS_FRAMESIZE_Y: - // TODO - return 0; - case wxSYS_SMALLICON_X: - // TODO - return 0; - case wxSYS_SMALLICON_Y: - // TODO - return 0; - case wxSYS_HSCROLL_Y: - // TODO - return 0; - case wxSYS_VSCROLL_X: - // TODO - return 0; - case wxSYS_VSCROLL_ARROW_X: - // TODO - return 0; - case wxSYS_VSCROLL_ARROW_Y: - // TODO - return 0; - case wxSYS_VTHUMB_Y: - // TODO - return 0; - case wxSYS_CAPTION_Y: - // TODO - return 0; - case wxSYS_MENU_Y: - // TODO - return 0; - case wxSYS_NETWORK_PRESENT: - // TODO - return 0; - case wxSYS_PENWINDOWS_PRESENT: - // TODO - return 0; - case wxSYS_SHOW_SOUNDS: - // TODO - return 0; - case wxSYS_SWAP_BUTTONS: - // TODO - return 0; - default: - return 0; - } - return 0; -} - diff --git a/src/mac/carbon/slider.cpp b/src/mac/carbon/slider.cpp deleted file mode 100644 index c9952342a9..0000000000 --- a/src/mac/carbon/slider.cpp +++ /dev/null @@ -1,190 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: slider.cpp -// Purpose: wxSlider -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "slider.h" -#endif - -#include "wx/slider.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxSlider, wxControl) - -BEGIN_EVENT_TABLE(wxSlider, wxControl) -END_EVENT_TABLE() -#endif - - - -// Slider -wxSlider::wxSlider() -{ - m_pageSize = 1; - m_lineSize = 1; - m_rangeMax = 0; - m_rangeMin = 0; - m_tickFreq = 0; -} - -bool wxSlider::Create(wxWindow *parent, wxWindowID id, - int value, int minValue, int maxValue, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); - SetValidator(validator); - - if (parent) parent->AddChild(this); - - m_lineSize = 1; - m_windowStyle = style; - m_tickFreq = 0; - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - m_rangeMax = maxValue; - m_rangeMin = minValue; - - m_pageSize = (int)((maxValue-minValue)/10); - - // TODO create slider - - return FALSE; -} - -wxSlider::~wxSlider() -{ -} - -int wxSlider::GetValue() const -{ - // TODO - return 0; -} - -void wxSlider::SetValue(int value) -{ - // TODO -} - -void wxSlider::GetSize(int *width, int *height) const -{ - // TODO -} - -void wxSlider::GetPosition(int *x, int *y) const -{ - // TODO -} - -void wxSlider::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -void wxSlider::SetRange(int minValue, int maxValue) -{ - m_rangeMin = minValue; - m_rangeMax = maxValue; - - // TODO -} - -// For trackbars only -void wxSlider::SetTickFreq(int n, int pos) -{ - // TODO - m_tickFreq = n; -} - -void wxSlider::SetPageSize(int pageSize) -{ - // TODO - m_pageSize = pageSize; -} - -int wxSlider::GetPageSize() const -{ - return m_pageSize; -} - -void wxSlider::ClearSel() -{ - // TODO -} - -void wxSlider::ClearTicks() -{ - // TODO -} - -void wxSlider::SetLineSize(int lineSize) -{ - m_lineSize = lineSize; - // TODO -} - -int wxSlider::GetLineSize() const -{ - // TODO - return 0; -} - -int wxSlider::GetSelEnd() const -{ - // TODO - return 0; -} - -int wxSlider::GetSelStart() const -{ - // TODO - return 0; -} - -void wxSlider::SetSelection(int minPos, int maxPos) -{ - // TODO -} - -void wxSlider::SetThumbLength(int len) -{ - // TODO -} - -int wxSlider::GetThumbLength() const -{ - // TODO - return 0; -} - -void wxSlider::SetTick(int tickPos) -{ - // TODO -} - -void wxSlider::Command (wxCommandEvent & event) -{ - SetValue (event.GetInt()); - ProcessCommand (event); -} - -bool wxSlider::Show(bool show) -{ - // TODO - return TRUE; -} - diff --git a/src/mac/carbon/spinbutt.cpp b/src/mac/carbon/spinbutt.cpp deleted file mode 100644 index cbea725592..0000000000 --- a/src/mac/carbon/spinbutt.cpp +++ /dev/null @@ -1,78 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: spinbutt.cpp -// Purpose: wxSpinButton -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "spinbutt.h" -#endif - -#include "wx/spinbutt.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxSpinButton, wxControl) -#endif - -wxSpinButton::wxSpinButton() -{ - m_min = 0; - m_max = 100; -} - -bool wxSpinButton::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, - long style, const wxString& name) -{ - SetName(name); - - m_windowStyle = style; - - SetParent(parent); - - m_min = 0; - m_max = 100; - - m_windowId = (id == -1) ? NewControlId() : id; - - // TODO create spin button - return FALSE; -} - -wxSpinButton::~wxSpinButton() -{ -} - -// Attributes -//////////////////////////////////////////////////////////////////////////// - -int wxSpinButton::GetValue() const -{ - // TODO - return 0; -} - -void wxSpinButton::SetValue(int val) -{ - // TODO -} - -void wxSpinButton::SetRange(int minVal, int maxVal) -{ - m_min = minVal; - m_max = maxVal; - // TODO -} - -// Spin event -IMPLEMENT_DYNAMIC_CLASS(wxSpinEvent, wxScrollEvent) - -wxSpinEvent::wxSpinEvent(wxEventType commandType, int id): - wxScrollEvent(commandType, id) -{ -} - diff --git a/src/mac/carbon/statbmp.cpp b/src/mac/carbon/statbmp.cpp deleted file mode 100644 index a67c558465..0000000000 --- a/src/mac/carbon/statbmp.cpp +++ /dev/null @@ -1,59 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: statbmp.cpp -// Purpose: wxStaticBitmap -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "statbmp.h" -#endif - -#include "wx/statbmp.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxStaticBitmap, wxControl) -#endif - -/* - * wxStaticBitmap - */ - -bool wxStaticBitmap::Create(wxWindow *parent, wxWindowID id, - const wxBitmap& bitmap, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - m_messageBitmap = bitmap; - SetName(name); - if (parent) parent->AddChild(this); - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - m_windowStyle = style; - - // TODO: create static bitmap control - return FALSE; -} - -void wxStaticBitmap::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -void wxStaticBitmap::SetBitmap(const wxBitmap& bitmap) -{ - m_messageBitmap = bitmap; - - // TODO: redraw bitmap -} - diff --git a/src/mac/carbon/statbox.cpp b/src/mac/carbon/statbox.cpp deleted file mode 100644 index b239dc738c..0000000000 --- a/src/mac/carbon/statbox.cpp +++ /dev/null @@ -1,62 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: statbox.cpp -// Purpose: wxStaticBox -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "statbox.h" -#endif - -#include "wx/statbox.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxStaticBox, wxControl) - -BEGIN_EVENT_TABLE(wxStaticBox, wxControl) - EVT_ERASE_BACKGROUND(wxStaticBox::OnEraseBackground) -END_EVENT_TABLE() - -#endif - -/* - * Static box - */ - -bool wxStaticBox::Create(wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - SetName(name); - - if (parent) parent->AddChild(this); - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - m_windowStyle = style; - - // TODO: create static box - return FALSE; -} - -void wxStaticBox::SetLabel(const wxString& label) -{ - // TODO -} - -void wxStaticBox::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - diff --git a/src/mac/carbon/stattext.cpp b/src/mac/carbon/stattext.cpp deleted file mode 100644 index 3b19c7184d..0000000000 --- a/src/mac/carbon/stattext.cpp +++ /dev/null @@ -1,60 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: stattext.cpp -// Purpose: wxStaticText -// Author: AUTHOR -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "stattext.h" -#endif - -#include "wx/app.h" -#include "wx/stattext.h" - -#include - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxStaticText, wxControl) -#endif - -bool wxStaticText::Create(wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - SetName(name); - if (parent) parent->AddChild(this); - - SetBackgroundColour(parent->GetBackgroundColour()) ; - SetForegroundColour(parent->GetForegroundColour()) ; - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - m_windowStyle = style; - - SetFont(parent->GetFont()); - - // TODO - return FALSE; -} - -void wxStaticText::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -void wxStaticText::SetLabel(const wxString& label) -{ - // TODO -} - diff --git a/src/mac/carbon/statusbr.cpp b/src/mac/carbon/statusbr.cpp deleted file mode 100644 index dff1ddec34..0000000000 --- a/src/mac/carbon/statusbr.cpp +++ /dev/null @@ -1,162 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: statbar.cpp -// Purpose: native implementation of wxStatusBar (optional) -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 AUTHOR -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "statusbr.h" -#endif - -// ---------------------------------------------------------------------------- -// headers -// ---------------------------------------------------------------------------- - -#include "wx/stubs/statusbr.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxStatusBarXX, wxStatusBar); - -BEGIN_EVENT_TABLE(wxStatusBarXX, wxStatusBar) - EVT_SIZE(wxStatusBarXX::OnSize) -END_EVENT_TABLE() -#endif //USE_SHARED_LIBRARY - - -// ============================================================================ -// implementation -// ============================================================================ - -// ---------------------------------------------------------------------------- -// wxStatusBarXX class -// ---------------------------------------------------------------------------- - -wxStatusBarXX::wxStatusBarXX() -{ - SetParent(NULL); -} - -wxStatusBarXX::wxStatusBarXX(wxWindow *parent, wxWindowID id, long style) -{ - Create(parent, id, style); -} - -bool wxStatusBarXX::Create(wxWindow *parent, wxWindowID id, long style) -{ - SetParent(parent); - - if (id == -1) - m_windowId = NewControlId(); - else - m_windowId = id; - - // TODO: create status bar - return FALSE; -} - -void wxStatusBarXX::SetFieldsCount(int nFields, const int widths[]) -{ - wxASSERT( (nFields > 0) && (nFields < 255) ); - - m_nFields = nFields; - - CopyFieldsWidth(widths); - SetFieldsWidth(); -} - -void wxStatusBarXX::SetStatusWidths(int n, const int widths[]) -{ - wxASSERT( n == m_nFields ); - - CopyFieldsWidth(widths); - SetFieldsWidth(); -} - -void wxStatusBarXX::CopyFieldsWidth(const int widths[]) -{ - if (widths && !m_statusWidths) - m_statusWidths = new int[m_nFields]; - - if ( widths != NULL ) { - for ( int i = 0; i < m_nFields; i++ ) - m_statusWidths[i] = widths[i]; - } - else { - delete [] m_statusWidths; - m_statusWidths = NULL; - } -} - -void wxStatusBarXX::SetFieldsWidth() -{ - int *pWidths = new int[m_nFields]; - - int nWindowWidth, y; - GetClientSize(&nWindowWidth, &y); - - if ( m_statusWidths == NULL ) { - // default: all fields have the same width - int nWidth = nWindowWidth / m_nFields; - for ( int i = 0; i < m_nFields; i++ ) - pWidths[i] = (i + 1) * nWidth; - } - else { - // -1 doesn't mean the same thing for wxWindows and Win32, recalc - int nTotalWidth = 0, - nVarCount = 0, - i; - for ( i = 0; i < m_nFields; i++ ) { - if ( m_statusWidths[i] == -1 ) - nVarCount++; - else - nTotalWidth += m_statusWidths[i]; - } - - if ( nVarCount == 0 ) { - // wrong! at least one field must be of variable width - wxFAIL; - - nVarCount++; - } - - int nVarWidth = (nWindowWidth - nTotalWidth) / nVarCount; - - // do fill the array - int nCurPos = 0; - for ( i = 0; i < m_nFields; i++ ) { - if ( m_statusWidths[i] == -1 ) - nCurPos += nVarWidth; - else - nCurPos += m_statusWidths[i]; - pWidths[i] = nCurPos; - } - } - - // TODO: set widths - - delete [] pWidths; -} - -void wxStatusBarXX::SetStatusText(const wxString& strText, int nField) -{ - // TODO -} - -wxString wxStatusBarXX::GetStatusText(int nField) const -{ - wxASSERT( (nField > -1) && (nField < m_nFields) ); - - // TODO - return wxString(""); -} - -void wxStatusBarXX::OnSize(wxSizeEvent& event) -{ - // adjust fields widths to the new size - SetFieldsWidth(); -} diff --git a/src/mac/carbon/tabctrl.cpp b/src/mac/carbon/tabctrl.cpp deleted file mode 100644 index b3b45a72d1..0000000000 --- a/src/mac/carbon/tabctrl.cpp +++ /dev/null @@ -1,201 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: tabctrl.cpp -// Purpose: wxTabCtrl -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "tabctrl.h" -#endif - -#include "wx/control.h" -#include "wx/tabctrl.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxTabCtrl, wxControl) - -BEGIN_EVENT_TABLE(wxTabCtrl, wxControl) -END_EVENT_TABLE() -#endif - -wxTabCtrl::wxTabCtrl() -{ - m_imageList = NULL; -} - -bool wxTabCtrl::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, - long style, const wxString& name) -{ - m_imageList = NULL; - - SetName(name); - - m_windowStyle = style; - - SetParent(parent); - - m_windowId = (id < 0 ? NewControlId() : id); - - if (parent) parent->AddChild(this); - - // TODO: create tab control - return FALSE; -} - -wxTabCtrl::~wxTabCtrl() -{ -} - -void wxTabCtrl::Command(wxCommandEvent& event) -{ -} - -// Delete all items -bool wxTabCtrl::DeleteAllItems() -{ - // TODO - return FALSE; -} - -// Delete an item -bool wxTabCtrl::DeleteItem(int item) -{ - // TODO - return FALSE; -} - -// Get the selection -int wxTabCtrl::GetSelection() const -{ - // TODO - return 0; -} - -// Get the tab with the current keyboard focus -int wxTabCtrl::GetCurFocus() const -{ - // TODO - return 0; -} - -// Get the associated image list -wxImageList* wxTabCtrl::GetImageList() const -{ - return m_imageList; -} - -// Get the number of items -int wxTabCtrl::GetItemCount() const -{ - // TODO - return 0; -} - -// Get the rect corresponding to the tab -bool wxTabCtrl::GetItemRect(int item, wxRect& wxrect) const -{ - // TODO - return FALSE; -} - -// Get the number of rows -int wxTabCtrl::GetRowCount() const -{ - // TODO - return 0; -} - -// Get the item text -wxString wxTabCtrl::GetItemText(int item) const -{ - // TODO - return wxString(""); -} - -// Get the item image -int wxTabCtrl::GetItemImage(int item) const -{ - // TODO - return 0; -} - -// Get the item data -void* wxTabCtrl::GetItemData(int item) const -{ - // TODO - return NULL; -} - -// Hit test -int wxTabCtrl::HitTest(const wxPoint& pt, long& flags) -{ - // TODO - return 0; -} - -// Insert an item -bool wxTabCtrl::InsertItem(int item, const wxString& text, int imageId, void* data) -{ - // TODO - return FALSE; -} - -// Set the selection -int wxTabCtrl::SetSelection(int item) -{ - // TODO - return 0; -} - -// Set the image list -void wxTabCtrl::SetImageList(wxImageList* imageList) -{ - // TODO -} - -// Set the text for an item -bool wxTabCtrl::SetItemText(int item, const wxString& text) -{ - // TODO - return FALSE; -} - -// Set the image for an item -bool wxTabCtrl::SetItemImage(int item, int image) -{ - // TODO - return FALSE; -} - -// Set the data for an item -bool wxTabCtrl::SetItemData(int item, void* data) -{ - // TODO - return FALSE; -} - -// Set the size for a fixed-width tab control -void wxTabCtrl::SetItemSize(const wxSize& size) -{ - // TODO -} - -// Set the padding between tabs -void wxTabCtrl::SetPadding(const wxSize& padding) -{ - // TODO -} - -// Tab event -IMPLEMENT_DYNAMIC_CLASS(wxTabEvent, wxCommandEvent) - -wxTabEvent::wxTabEvent(wxEventType commandType, int id): - wxCommandEvent(commandType, id) -{ -} - diff --git a/src/mac/carbon/taskbar.cpp b/src/mac/carbon/taskbar.cpp deleted file mode 100644 index 5c91250cf0..0000000000 --- a/src/mac/carbon/taskbar.cpp +++ /dev/null @@ -1,70 +0,0 @@ -///////////////////////////////////////////////////////////////////////// -// File: taskbar.cpp -// Purpose: Implements wxTaskBarIcon class for manipulating icons on -// the task bar. Optional. -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "taskbar.h" -#endif - -#include - -wxTaskBarIcon::wxTaskBarIcon() -{ - // TODO -} - -wxTaskBarIcon::~wxTaskBarIcon() -{ - // TODO -} - -// Operations -bool wxTaskBarIcon::SetIcon(const wxIcon& icon, const wxString& tooltip) -{ - // TODO - return FALSE; -} - -bool wxTaskBarIcon::RemoveIcon() -{ - // TODO - return FALSE; -} - -// Overridables -void wxTaskBarIcon::OnMouseMove() -{ -} - -void wxTaskBarIcon::OnLButtonDown() -{ -} - -void wxTaskBarIcon::OnLButtonUp() -{ -} - -void wxTaskBarIcon::OnRButtonDown() -{ -} - -void wxTaskBarIcon::OnRButtonUp() -{ -} - -void wxTaskBarIcon::OnLButtonDClick() -{ -} - -void wxTaskBarIcon::OnRButtonDClick() -{ -} - diff --git a/src/mac/carbon/textctrl.cpp b/src/mac/carbon/textctrl.cpp deleted file mode 100644 index 4171b868b6..0000000000 --- a/src/mac/carbon/textctrl.cpp +++ /dev/null @@ -1,447 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: textctrl.cpp -// Purpose: wxTextCtrl -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "textctrl.h" -#endif - -#ifndef __WXMAC__ -#include -#include -#else -#include -#endif -#include - -#include "wx/textctrl.h" -#include "wx/settings.h" -#include "wx/filefn.h" -#include "wx/utils.h" - -#if defined(__BORLANDC__) && !defined(__WIN32__) -#include -#else -#ifndef __MWERKS__ -#ifndef __GNUWIN32__ -#include -#endif -#endif -#endif - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxTextCtrl, wxControl) - -BEGIN_EVENT_TABLE(wxTextCtrl, wxControl) - EVT_DROP_FILES(wxTextCtrl::OnDropFiles) -END_EVENT_TABLE() -#endif - -// Text item -wxTextCtrl::wxTextCtrl() -#ifndef NO_TEXT_WINDOW_STREAM - :streambuf() -#endif -{ - m_fileName = ""; -} - -bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id, - const wxString& value, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - m_fileName = ""; - SetName(name); - SetValidator(validator); - if (parent) parent->AddChild(this); - - m_windowStyle = style; - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - return TRUE; -} - -wxString wxTextCtrl::GetValue() const -{ - // TODO - return wxString(""); -} - -void wxTextCtrl::SetValue(const wxString& value) -{ - // TODO -} - -void wxTextCtrl::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -// Clipboard operations -void wxTextCtrl::Copy() -{ - // TODO -} - -void wxTextCtrl::Cut() -{ - // TODO -} - -void wxTextCtrl::Paste() -{ - // TODO -} - -void wxTextCtrl::SetEditable(bool editable) -{ - // TODO -} - -void wxTextCtrl::SetInsertionPoint(long pos) -{ - // TODO -} - -void wxTextCtrl::SetInsertionPointEnd() -{ - long pos = GetLastPosition(); - SetInsertionPoint(pos); -} - -long wxTextCtrl::GetInsertionPoint() const -{ - // TODO - return 0; -} - -long wxTextCtrl::GetLastPosition() const -{ - // TODO - return 0; -} - -void wxTextCtrl::Replace(long from, long to, const wxString& value) -{ - // TODO -} - -void wxTextCtrl::Remove(long from, long to) -{ - // TODO -} - -void wxTextCtrl::SetSelection(long from, long to) -{ - // TODO -} - -bool wxTextCtrl::LoadFile(const wxString& file) -{ - if (!wxFileExists(file)) - return FALSE; - - m_fileName = file; - - Clear(); - -#ifndef __WXMAC__ - ifstream input((char*) (const char*) file, ios::nocreate | ios::in); -#else - ifstream input((char*) (const char*) file, ios::in); -#endif - if (!input.bad()) - { - struct stat stat_buf; - if (stat(file, &stat_buf) < 0) - return FALSE; - // This may need to be a bigger buffer than the file size suggests, - // if it's a UNIX file. Give it an extra 1000 just in case. - char *tmp_buffer = (char*)malloc((size_t)(stat_buf.st_size+1+1000)); - long no_lines = 0; - long pos = 0; - while (!input.eof() && input.peek() != EOF) - { - input.getline(wxBuffer, 500); - int len = strlen(wxBuffer); - wxBuffer[len] = 13; - wxBuffer[len+1] = 10; - wxBuffer[len+2] = 0; - strcpy(tmp_buffer+pos, wxBuffer); - pos += strlen(wxBuffer); - no_lines++; - } - - // TODO add line - - free(tmp_buffer); - - return TRUE; - } - return FALSE; -} - -// If file is null, try saved file name first -// Returns TRUE if succeeds. -bool wxTextCtrl::SaveFile(const wxString& file) -{ - wxString theFile(file); - if (theFile == "") - theFile = m_fileName; - if (theFile == "") - return FALSE; - m_fileName = theFile; - - ofstream output((char*) (const char*) theFile); - if (output.bad()) - return FALSE; - - // TODO get and save text - - return FALSE; -} - -void wxTextCtrl::WriteText(const wxString& text) -{ - // TODO write text to control -} - -void wxTextCtrl::Clear() -{ - // TODO -} - -bool wxTextCtrl::IsModified() const -{ - // TODO - return FALSE; -} - -// Makes 'unmodified' -void wxTextCtrl::DiscardEdits() -{ - // TODO -} - -int wxTextCtrl::GetNumberOfLines() const -{ - // TODO - return 0; -} - -long wxTextCtrl::XYToPosition(long x, long y) const -{ - // TODO - return 0; -} - -void wxTextCtrl::PositionToXY(long pos, long *x, long *y) const -{ - // TODO -} - -void wxTextCtrl::ShowPosition(long pos) -{ - // TODO -} - -int wxTextCtrl::GetLineLength(long lineNo) const -{ - // TODO - return 0; -} - -wxString wxTextCtrl::GetLineText(long lineNo) const -{ - // TODO - return wxString(""); -} - -/* - * Text item - */ - -void wxTextCtrl::Command(wxCommandEvent & event) -{ - SetValue (event.GetString()); - ProcessCommand (event); -} - -void wxTextCtrl::OnDropFiles(wxDropFilesEvent& event) -{ - // By default, load the first file into the text window. - if (event.GetNumberOfFiles() > 0) - { - LoadFile(event.GetFiles()[0]); - } -} - -// The streambuf code was partly taken from chapter 3 by Jerry Schwarz of -// AT&T's "C++ Lanuage System Release 3.0 Library Manual" - Stein Somers - -//========================================================================= -// Called then the buffer is full (gcc 2.6.3) -// or when "endl" is output (Borland 4.5) -//========================================================================= -// Class declaration using multiple inheritance doesn't work properly for -// Borland. See note in wb_text.h. -#ifndef NO_TEXT_WINDOW_STREAM -int wxTextCtrl::overflow(int c) -{ - // Make sure there is a holding area - if ( allocate()==EOF ) - { - wxError("Streambuf allocation failed","Internal error"); - return EOF; - } - - // Verify that there are no characters in get area - if ( gptr() && gptr() < egptr() ) - { - wxError("Who's trespassing my get area?","Internal error"); - return EOF; - } - - // Reset get area - setg(0,0,0); - - // Make sure there is a put area - if ( ! pptr() ) - { -/* This doesn't seem to be fatal so comment out error message */ -// wxError("Put area not opened","Internal error"); - setp( base(), base() ); - } - - // Determine how many characters have been inserted but no consumed - int plen = pptr() - pbase(); - - // Now Jerry relies on the fact that the buffer is at least 2 chars - // long, but the holding area "may be as small as 1" ??? - // And we need an additional \0, so let's keep this inefficient but - // safe copy. - - // If c!=EOF, it is a character that must also be comsumed - int xtra = c==EOF? 0 : 1; - - // Write temporary C-string to wxTextWindow - { - char *txt = new char[plen+xtra+1]; - memcpy(txt, pbase(), plen); - txt[plen] = (char)c; // append c - txt[plen+xtra] = '\0'; // append '\0' or overwrite c - // If the put area already contained \0, output will be truncated there - WriteText(txt); - delete[] txt; - } - - // Reset put area - setp(pbase(), epptr()); - -#if defined(__WATCOMC__) - return __NOT_EOF; -#elif defined(zapeof) // HP-UX (all cfront based?) - return zapeof(c); -#else - return c!=EOF ? c : 0; // this should make everybody happy -#endif -} - -//========================================================================= -// called then "endl" is output (gcc) or then explicit sync is done (Borland) -//========================================================================= -int wxTextCtrl::sync() -{ - // Verify that there are no characters in get area - if ( gptr() && gptr() < egptr() ) - { - wxError("Who's trespassing my get area?","Internal error"); - return EOF; - } - - if ( pptr() && pptr() > pbase() ) return overflow(EOF); - - return 0; -/* OLD CODE - int len = pptr() - pbase(); - char *txt = new char[len+1]; - strncpy(txt, pbase(), len); - txt[len] = '\0'; - (*this) << txt; - setp(pbase(), epptr()); - delete[] txt; - return 0; -*/ -} - -//========================================================================= -// Should not be called by a "ostream". Used by a "istream" -//========================================================================= -int wxTextCtrl::underflow() -{ - return EOF; -} -#endif - -wxTextCtrl& wxTextCtrl::operator<<(const wxString& s) -{ - WriteText(s); - return *this; -} - -wxTextCtrl& wxTextCtrl::operator<<(float f) -{ - wxString str; - str.Printf("%.2f", f); - WriteText(str); - return *this; -} - -wxTextCtrl& wxTextCtrl::operator<<(double d) -{ - wxString str; - str.Printf("%.2f", d); - WriteText(str); - return *this; -} - -wxTextCtrl& wxTextCtrl::operator<<(int i) -{ - wxString str; - str.Printf("%d", i); - WriteText(str); - return *this; -} - -wxTextCtrl& wxTextCtrl::operator<<(long i) -{ - wxString str; - str.Printf("%ld", i); - WriteText(str); - return *this; -} - -wxTextCtrl& wxTextCtrl::operator<<(const char c) -{ - char buf[2]; - - buf[0] = c; - buf[1] = 0; - WriteText(buf); - return *this; -} - diff --git a/src/mac/carbon/thread.cpp b/src/mac/carbon/thread.cpp deleted file mode 100644 index 82fff92ba3..0000000000 --- a/src/mac/carbon/thread.cpp +++ /dev/null @@ -1,261 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: thread.cpp -// Purpose: wxThread Implementation. For Unix ports, see e.g. src/gtk -// Author: Original from Wolfram Gloger/Guilhem Lavaux -// Modified by: -// Created: 04/22/98 -// RCS-ID: $Id$ -// Copyright: (c) Wolfram Gloger (1996, 1997); Guilhem Lavaux (1998) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "thread.h" -#endif - -#include "wx/module.h" -#include "wx/thread.h" -#include "wx/utils.h" - -enum thread_state { - STATE_IDLE = 0, - STATE_RUNNING, - STATE_CANCELED, - STATE_EXITED -}; - -///////////////////////////////////////////////////////////////////////////// -// Static variables -///////////////////////////////////////////////////////////////////////////// - -wxMutex *wxMainMutex; // controls access to all GUI functions - -///////////////////////////////////////////////////////////////////////////// -// Windows implementation -///////////////////////////////////////////////////////////////////////////// - -class wxMutexInternal { -public: - // TODO: internal mutex handle -}; - -wxMutex::wxMutex() -{ - p_internal = new wxMutexInternal; - // TODO: create internal mutext handle - m_locked = 0; -} - -wxMutex::~wxMutex() -{ - if (m_locked > 0) - wxDebugMsg("wxMutex warning: freeing a locked mutex (%d locks)\n", m_locked); - // TODO: free internal mutext handle -} - -wxMutexError wxMutex::Lock() -{ - // TODO - m_locked++; - return wxMUTEX_NO_ERROR; -} - -wxMutexError wxMutex::TryLock() -{ - // TODO - m_locked++; - return wxMUTEX_NO_ERROR; -} - -wxMutexError wxMutex::Unlock() -{ - if (m_locked > 0) - m_locked--; - - // TODO - return wxMUTEX_NO_ERROR; -} - -class wxConditionInternal { -public: - // TODO: internal handle - int waiters; -}; - -wxCondition::wxCondition() -{ - p_internal = new wxConditionInternal; - // TODO: create internal handle - p_internal->waiters = 0; -} - -wxCondition::~wxCondition() -{ - // TODO: destroy internal handle -} - -void wxCondition::Wait(wxMutex& mutex) -{ - mutex.Unlock(); - p_internal->waiters++; - // TODO wait here - p_internal->waiters--; - mutex.Lock(); -} - -bool wxCondition::Wait(wxMutex& mutex, unsigned long sec, - unsigned long nsec) -{ - mutex.Unlock(); - p_internal->waiters++; - - // TODO wait here - p_internal->waiters--; - mutex.Lock(); - - return FALSE; -} - -void wxCondition::Signal() -{ - // TODO -} - -void wxCondition::Broadcast() -{ - // TODO -} - -class wxThreadInternal { -public: - // TODO -}; - -wxThreadError wxThread::Create() -{ - // TODO - return wxTHREAD_NO_ERROR; -} - -wxThreadError wxThread::Destroy() -{ - // TODO - return wxTHREAD_NO_ERROR; -} - -wxThreadError wxThread::Pause() -{ - // TODO - return wxTHREAD_NO_ERROR; -} - -wxThreadError wxThread::Resume() -{ - // TODO - return wxTHREAD_NO_ERROR; -} - -void wxThread::Exit(void *status) -{ - // TODO -} - -void wxThread::SetPriority(int prio) -{ - // TODO -} - -int wxThread::GetPriority() const -{ - // TODO - return 0; -} - -void wxThread::DeferDestroy(bool on) -{ - // TODO -} - -void wxThread::TestDestroy() -{ - // TODO -} - -void *wxThread::Join() -{ - // TODO - return (void*) NULL; -} - -unsigned long wxThread::GetID() const -{ - // TODO - return 0; -} - -/* is this needed somewhere ? -wxThread *wxThread::GetThreadFromID(unsigned long id) -{ - // TODO - return NULL; -} -*/ - -bool wxThread::IsAlive() const -{ - // TODO - return FALSE; -} - -bool wxThread::IsRunning() const -{ - // TODO - return FALSE; -} - -bool wxThread::IsMain() -{ - // TODO - return FALSE; -} - -wxThread::wxThread() -{ - p_internal = new wxThreadInternal(); - - // TODO -} - -wxThread::~wxThread() -{ - Destroy(); - Join(); - delete p_internal; -} - -// The default callback just joins the thread and throws away the result. -void wxThread::OnExit() -{ - Join(); -} - -// Automatic initialization -class wxThreadModule : public wxModule { - DECLARE_DYNAMIC_CLASS(wxThreadModule) -public: - virtual bool OnInit() { - /* TODO p_mainid = GetCurrentThread(); */ - wxMainMutex = new wxMutex(); - wxMainMutex->Lock(); - return TRUE; - } - - // Global cleanup - virtual void OnExit() { - wxMainMutex->Unlock(); - delete wxMainMutex; - } -}; - -IMPLEMENT_DYNAMIC_CLASS(wxThreadModule, wxModule) - diff --git a/src/mac/carbon/timer.cpp b/src/mac/carbon/timer.cpp deleted file mode 100644 index 5262040cf6..0000000000 --- a/src/mac/carbon/timer.cpp +++ /dev/null @@ -1,52 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: timer.cpp -// Purpose: wxTimer implementation -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "timer.h" -#endif - -#include "wx/timer.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_ABSTRACT_CLASS(wxTimer, wxObject) -#endif - -wxTimer::wxTimer() -{ - m_milli = 0 ; - m_id = 0; - m_oneShot = FALSE; -} - -wxTimer::~wxTimer() -{ - Stop(); -} - -bool wxTimer::Start(int milliseconds,bool mode) -{ - m_oneShot = mode ; - if (milliseconds <= 0) - return FALSE; - - m_milli = milliseconds; - - // TODO: set the timer going. - return FALSE; -} - -void wxTimer::Stop() -{ - m_id = 0 ; - m_milli = 0 ; -} - - diff --git a/src/mac/carbon/toolbar.cpp b/src/mac/carbon/toolbar.cpp deleted file mode 100644 index 3cb859e366..0000000000 --- a/src/mac/carbon/toolbar.cpp +++ /dev/null @@ -1,145 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: toolbar.cpp -// Purpose: wxToolBar -// Author: AUTHOR -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "toolbar.h" -#endif - -#include "wx/wx.h" -#include "wx/toolbar.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxToolBar, wxToolBarBase) - -BEGIN_EVENT_TABLE(wxToolBar, wxToolBarBase) -END_EVENT_TABLE() -#endif - -wxToolBar::wxToolBar() -{ - m_maxWidth = -1; - m_maxHeight = -1; - m_defaultWidth = 24; - m_defaultHeight = 22; - // TODO -} - -bool wxToolBar::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, - long style, const wxString& name) -{ - m_maxWidth = -1; - m_maxHeight = -1; - - m_defaultWidth = 24; - m_defaultHeight = 22; - SetName(name); - - m_windowStyle = style; - - SetParent(parent); - - if (parent) parent->AddChild(this); - - // TODO create toolbar - - return FALSE; -} - -wxToolBar::~wxToolBar() -{ - // TODO -} - -bool wxToolBar::CreateTools() -{ - if (m_tools.Number() == 0) - return FALSE; - - // TODO - return FALSE; -} - -void wxToolBar::SetToolBitmapSize(const wxSize& size) -{ - m_defaultWidth = size.x; m_defaultHeight = size.y; - // TODO -} - -wxSize wxToolBar::GetMaxSize() const -{ - // TODO - return wxSize(0, 0); -} - -// The button size is bigger than the bitmap size -wxSize wxToolBar::GetToolSize() const -{ - // TODO - return wxSize(m_defaultWidth + 8, m_defaultHeight + 7); -} - -void wxToolBar::EnableTool(int toolIndex, bool enable) -{ - wxNode *node = m_tools.Find((long)toolIndex); - if (node) - { - wxToolBarTool *tool = (wxToolBarTool *)node->Data(); - tool->m_enabled = enable; - // TODO enable button - } -} - -void wxToolBar::ToggleTool(int toolIndex, bool toggle) -{ - wxNode *node = m_tools.Find((long)toolIndex); - if (node) - { - wxToolBarTool *tool = (wxToolBarTool *)node->Data(); - if (tool->m_isToggle) - { - tool->m_toggleState = toggle; - // TODO: set toggle state - } - } -} - -void wxToolBar::ClearTools() -{ - // TODO - wxToolBarBase::ClearTools(); -} - -// If pushedBitmap is NULL, a reversed version of bitmap is -// created and used as the pushed/toggled image. -// If toggle is TRUE, the button toggles between the two states. - -wxToolBarTool *wxToolBar::AddTool(int index, const wxBitmap& bitmap, const wxBitmap& pushedBitmap, - bool toggle, long xPos, long yPos, wxObject *clientData, const wxString& helpString1, const wxString& helpString2) -{ - wxToolBarTool *tool = new wxToolBarTool(index, bitmap, wxNullBitmap, toggle, xPos, yPos, helpString1, helpString2); - tool->m_clientData = clientData; - - if (xPos > -1) - tool->m_x = xPos; - else - tool->m_x = m_xMargin; - - if (yPos > -1) - tool->m_y = yPos; - else - tool->m_y = m_yMargin; - - tool->SetSize(GetDefaultButtonWidth(), GetDefaultButtonHeight()); - - m_tools.Append((long)index, tool); - return tool; -} - diff --git a/src/mac/carbon/treectrl.cpp b/src/mac/carbon/treectrl.cpp deleted file mode 100644 index 137a885dbf..0000000000 --- a/src/mac/carbon/treectrl.cpp +++ /dev/null @@ -1,418 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: treectrl.cpp -// Purpose: wxTreeCtrl. See also Robert's generic wxTreeCtrl. -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "treectrl.h" -#endif - -#include "wx/stubs/textctrl.h" -#include "wx/stubs/treectrl.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxTreeCtrl, wxControl) -IMPLEMENT_DYNAMIC_CLASS(wxTreeItem, wxObject) - -#endif - -wxTreeCtrl::wxTreeCtrl() -{ - m_imageListNormal = NULL; - m_imageListState = NULL; - m_textCtrl = NULL; -} - -bool wxTreeCtrl::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, - long style, const wxValidator& validator, const wxString& name) -{ - SetName(name); - SetValidator(validator); - - m_imageListNormal = NULL; - m_imageListState = NULL; - m_textCtrl = NULL; - - m_windowStyle = style; - - SetParent(parent); - - m_windowId = (id == -1) ? NewControlId() : id; - - if (parent) parent->AddChild(this); - - // TODO create tree control - - return FALSE; -} - -wxTreeCtrl::~wxTreeCtrl() -{ - if (m_textCtrl) - { - delete m_textCtrl; - } -} - -// Attributes -int wxTreeCtrl::GetCount() const -{ - // TODO - return 0; -} - -int wxTreeCtrl::GetIndent() const -{ - // TODO - return 0; -} - -void wxTreeCtrl::SetIndent(int indent) -{ - // TODO -} - -wxImageList *wxTreeCtrl::GetImageList(int which) const -{ - if ( which == wxIMAGE_LIST_NORMAL ) - { - return m_imageListNormal; - } - else if ( which == wxIMAGE_LIST_STATE ) - { - return m_imageListState; - } - return NULL; -} - -void wxTreeCtrl::SetImageList(wxImageList *imageList, int which) -{ - if ( which == wxIMAGE_LIST_NORMAL ) - { - m_imageListNormal = imageList; - } - else if ( which == wxIMAGE_LIST_STATE ) - { - m_imageListState = imageList; - } - // TODO -} - -long wxTreeCtrl::GetNextItem(long item, int code) const -{ - // TODO - return 0; -} - -bool wxTreeCtrl::ItemHasChildren(long item) const -{ - // TODO - return FALSE; -} - -long wxTreeCtrl::GetChild(long item) const -{ - // TODO - return 0; -} - -long wxTreeCtrl::GetParent(long item) const -{ - // TODO - return 0; -} - -long wxTreeCtrl::GetFirstVisibleItem() const -{ - // TODO - return 0; -} - -long wxTreeCtrl::GetNextVisibleItem(long item) const -{ - // TODO - return 0; -} - -long wxTreeCtrl::GetSelection() const -{ - // TODO - return 0; -} - -long wxTreeCtrl::GetRootItem() const -{ - // TODO - return 0; -} - -bool wxTreeCtrl::GetItem(wxTreeItem& info) const -{ - // TODO - return FALSE; -} - -bool wxTreeCtrl::SetItem(wxTreeItem& info) -{ - // TODO - return FALSE; -} - -int wxTreeCtrl::GetItemState(long item, long stateMask) const -{ - wxTreeItem info; - - info.m_mask = wxTREE_MASK_STATE ; - info.m_stateMask = stateMask; - info.m_itemId = item; - - if (!GetItem(info)) - return 0; - - return info.m_state; -} - -bool wxTreeCtrl::SetItemState(long item, long state, long stateMask) -{ - wxTreeItem info; - - info.m_mask = wxTREE_MASK_STATE ; - info.m_state = state; - info.m_stateMask = stateMask; - info.m_itemId = item; - - return SetItem(info); -} - -bool wxTreeCtrl::SetItemImage(long item, int image, int selImage) -{ - wxTreeItem info; - - info.m_mask = wxTREE_MASK_IMAGE ; - info.m_image = image; - if ( selImage > -1) - { - info.m_selectedImage = selImage; - info.m_mask |= wxTREE_MASK_SELECTED_IMAGE; - } - info.m_itemId = item; - - return SetItem(info); -} - -wxString wxTreeCtrl::GetItemText(long item) const -{ - wxTreeItem info; - - info.m_mask = wxTREE_MASK_TEXT ; - info.m_itemId = item; - - if (!GetItem(info)) - return wxString(""); - return info.m_text; -} - -void wxTreeCtrl::SetItemText(long item, const wxString& str) -{ - wxTreeItem info; - - info.m_mask = wxTREE_MASK_TEXT ; - info.m_itemId = item; - info.m_text = str; - - SetItem(info); -} - -long wxTreeCtrl::GetItemData(long item) const -{ - wxTreeItem info; - - info.m_mask = wxTREE_MASK_DATA ; - info.m_itemId = item; - - if (!GetItem(info)) - return 0; - return info.m_data; -} - -bool wxTreeCtrl::SetItemData(long item, long data) -{ - wxTreeItem info; - - info.m_mask = wxTREE_MASK_DATA ; - info.m_itemId = item; - info.m_data = data; - - return SetItem(info); -} - -bool wxTreeCtrl::GetItemRect(long item, wxRect& rect, bool textOnly) const -{ - // TODO - return FALSE; -} - -wxTextCtrl* wxTreeCtrl::GetEditControl() const -{ - return m_textCtrl; -} - -// Operations -bool wxTreeCtrl::DeleteItem(long item) -{ - // TODO - return FALSE; -} - -bool wxTreeCtrl::ExpandItem(long item, int action) -{ - // TODO - switch ( action ) - { - case wxTREE_EXPAND_EXPAND: - break; - - case wxTREE_EXPAND_COLLAPSE: - break; - - case wxTREE_EXPAND_COLLAPSE_RESET: - break; - - case wxTREE_EXPAND_TOGGLE: - break; - - default: - wxFAIL_MSG("unknown action in wxTreeCtrl::ExpandItem"); - } - - bool bOk = FALSE; // TODO expand item - - // May not send messages, so emulate them - if ( bOk ) { - wxTreeEvent event(wxEVT_NULL, m_windowId); - event.m_item.m_itemId = item; - event.m_item.m_mask = - event.m_item.m_stateMask = 0xffff; // get all - GetItem(event.m_item); - - bool bIsExpanded = (event.m_item.m_state & wxTREE_STATE_EXPANDED) != 0; - - event.m_code = action; - event.SetEventObject(this); - - // @@@ return values of {EXPAND|COLLAPS}ING event handler is discarded - event.SetEventType(bIsExpanded ? wxEVT_COMMAND_TREE_ITEM_EXPANDING - : wxEVT_COMMAND_TREE_ITEM_COLLAPSING); - GetEventHandler()->ProcessEvent(event); - - event.SetEventType(bIsExpanded ? wxEVT_COMMAND_TREE_ITEM_EXPANDED - : wxEVT_COMMAND_TREE_ITEM_COLLAPSED); - GetEventHandler()->ProcessEvent(event); - } - - return bOk; -} - -long wxTreeCtrl::InsertItem(long parent, wxTreeItem& info, long insertAfter) -{ - // TODO - return 0; -} - -long wxTreeCtrl::InsertItem(long parent, const wxString& label, int image, int selImage, - long insertAfter) -{ - wxTreeItem info; - info.m_text = label; - info.m_mask = wxTREE_MASK_TEXT; - if ( image > -1 ) - { - info.m_mask |= wxTREE_MASK_IMAGE | wxTREE_MASK_SELECTED_IMAGE; - info.m_image = image; - if ( selImage == -1 ) - info.m_selectedImage = image; - else - info.m_selectedImage = selImage; - } - - return InsertItem(parent, info, insertAfter); -} - -bool wxTreeCtrl::SelectItem(long item) -{ - // TODO - return FALSE; -} - -bool wxTreeCtrl::ScrollTo(long item) -{ - // TODO - return FALSE; -} - -bool wxTreeCtrl::DeleteAllItems() -{ - // TODO - return FALSE; -} - -wxTextCtrl* wxTreeCtrl::EditLabel(long item, wxClassInfo* textControlClass) -{ - // TODO - return NULL; -} - -// End label editing, optionally cancelling the edit -bool wxTreeCtrl::EndEditLabel(bool cancel) -{ - // TODO - return FALSE; -} - -long wxTreeCtrl::HitTest(const wxPoint& point, int& flags) -{ - // TODO - return 0; -} - -bool wxTreeCtrl::SortChildren(long item) -{ - // TODO - return FALSE; -} - -bool wxTreeCtrl::EnsureVisible(long item) -{ - // TODO - return FALSE; -} - -// Tree item structure -wxTreeItem::wxTreeItem() -{ - m_mask = 0; - m_itemId = 0; - m_state = 0; - m_stateMask = 0; - m_image = -1; - m_selectedImage = -1; - m_children = 0; - m_data = 0; -} - -// Tree event -IMPLEMENT_DYNAMIC_CLASS(wxTreeEvent, wxCommandEvent) - -wxTreeEvent::wxTreeEvent(wxEventType commandType, int id): - wxCommandEvent(commandType, id) -{ - m_code = 0; - m_oldItem = 0; -} - diff --git a/src/mac/carbon/utils.cpp b/src/mac/carbon/utils.cpp deleted file mode 100644 index 940bdc21bc..0000000000 --- a/src/mac/carbon/utils.cpp +++ /dev/null @@ -1,272 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: utils.cpp -// Purpose: Various utilities -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -// Note: this is done in utilscmn.cpp now. -// #pragma implementation -// #pragma implementation "utils.h" -#endif - -#include "wx/setup.h" -#include "wx/utils.h" -#include "wx/app.h" - -#include - -#include -#include -#include -#include - -// Get full hostname (eg. DoDo.BSn-Germany.crg.de) -bool wxGetHostName(char *buf, int maxSize) -{ - // TODO - return FALSE; -} - -// Get user ID e.g. jacs -bool wxGetUserId(char *buf, int maxSize) -{ - // TODO - return FALSE; -} - -// Get user name e.g. AUTHOR -bool wxGetUserName(char *buf, int maxSize) -{ - // TODO - return FALSE; -} - -int wxKill(long pid, int sig) -{ - // TODO - return 0; -} - -// -// Execute a program in an Interactive Shell -// -bool wxShell(const wxString& command) -{ - // TODO - return FALSE; -} - -// Get free memory in bytes, or -1 if cannot determine amount (e.g. on UNIX) -long wxGetFreeMemory() -{ - // TODO - return 0; -} - -void wxSleep(int nSecs) -{ - // TODO -} - -// Consume all events until no more left -void wxFlushEvents() -{ -} - -// Output a debug message, in a system dependent fashion. -void wxDebugMsg(const char *fmt ...) -{ - va_list ap; - static char buffer[512]; - - if (!wxTheApp->GetWantDebugOutput()) - return ; - - va_start(ap, fmt); - - // wvsprintf(buffer,fmt,ap) ; - // TODO: output buffer - - va_end(ap); -} - -// Non-fatal error: pop up message box and (possibly) continue -void wxError(const wxString& msg, const wxString& title) -{ - // TODO - wxExit(); -} - -// Fatal error: pop up message box and abort -void wxFatalError(const wxString& msg, const wxString& title) -{ - // TODO -} - -// Emit a beeeeeep -void wxBell() -{ - // TODO -} - -int wxGetOsVersion(int *majorVsn, int *minorVsn) -{ - // TODO - return 0; -} - -// Reading and writing resources (eg WIN.INI, .Xdefaults) -#if wxUSE_RESOURCES -bool wxWriteResource(const wxString& section, const wxString& entry, const wxString& value, const wxString& file) -{ - // TODO - return FALSE; -} - -bool wxWriteResource(const wxString& section, const wxString& entry, float value, const wxString& file) -{ - char buf[50]; - sprintf(buf, "%.4f", value); - return wxWriteResource(section, entry, buf, file); -} - -bool wxWriteResource(const wxString& section, const wxString& entry, long value, const wxString& file) -{ - char buf[50]; - sprintf(buf, "%ld", value); - return wxWriteResource(section, entry, buf, file); -} - -bool wxWriteResource(const wxString& section, const wxString& entry, int value, const wxString& file) -{ - char buf[50]; - sprintf(buf, "%d", value); - return wxWriteResource(section, entry, buf, file); -} - -bool wxGetResource(const wxString& section, const wxString& entry, char **value, const wxString& file) -{ - // TODO - return FALSE; -} - -bool wxGetResource(const wxString& section, const wxString& entry, float *value, const wxString& file) -{ - char *s = NULL; - bool succ = wxGetResource(section, entry, (char **)&s, file); - if (succ) - { - *value = (float)strtod(s, NULL); - delete[] s; - return TRUE; - } - else return FALSE; -} - -bool wxGetResource(const wxString& section, const wxString& entry, long *value, const wxString& file) -{ - char *s = NULL; - bool succ = wxGetResource(section, entry, (char **)&s, file); - if (succ) - { - *value = strtol(s, NULL, 10); - delete[] s; - return TRUE; - } - else return FALSE; -} - -bool wxGetResource(const wxString& section, const wxString& entry, int *value, const wxString& file) -{ - char *s = NULL; - bool succ = wxGetResource(section, entry, (char **)&s, file); - if (succ) - { - *value = (int)strtol(s, NULL, 10); - delete[] s; - return TRUE; - } - else return FALSE; -} -#endif // wxUSE_RESOURCES - -static int wxBusyCursorCount = 0; - -// Set the cursor to the busy cursor for all windows -void wxBeginBusyCursor(wxCursor *cursor) -{ - wxBusyCursorCount ++; - if (wxBusyCursorCount == 1) - { - // TODO - } - else - { - // TODO - } -} - -// Restore cursor to normal -void wxEndBusyCursor() -{ - if (wxBusyCursorCount == 0) - return; - - wxBusyCursorCount --; - if (wxBusyCursorCount == 0) - { - // TODO - } -} - -// TRUE if we're between the above two calls -bool wxIsBusy() -{ - return (wxBusyCursorCount > 0); -} - -char *wxGetUserHome (const wxString& user) -{ - // TODO - return NULL; -} - -// Check whether this window wants to process messages, e.g. Stop button -// in long calculations. -bool wxCheckForInterrupt(wxWindow *wnd) -{ - // TODO - return FALSE; -} - -void wxGetMousePosition( int* x, int* y ) -{ - // TODO -}; - -// Return TRUE if we have a colour display -bool wxColourDisplay() -{ - // TODO - return TRUE; -} - -// Returns depth of screen -int wxDisplayDepth() -{ - // TODO - return 0; -} - -// Get size of display -void wxDisplaySize(int *width, int *height) -{ - // TODO -} - diff --git a/src/mac/carbon/utilsexc.cpp b/src/mac/carbon/utilsexc.cpp deleted file mode 100644 index b842d08e90..0000000000 --- a/src/mac/carbon/utilsexc.cpp +++ /dev/null @@ -1,28 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: utilsexec.cpp -// Purpose: Execution-related utilities -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation -#endif - -#include "wx/utils.h" - -#include -#include -#include - -#define wxEXECUTE_WIN_MESSAGE 10000 - -long wxExecute(const wxString& command, bool sync, wxProcess *handler) -{ - // TODO - return 0; -} diff --git a/src/mac/carbon/wave.cpp b/src/mac/carbon/wave.cpp deleted file mode 100644 index c25681858c..0000000000 --- a/src/mac/carbon/wave.cpp +++ /dev/null @@ -1,61 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: wave.cpp -// Purpose: wxWave class implementation: optional -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "wave.h" -#endif - -#include "wx/object.h" -#include "wx/string.h" -#include "wx/stubs/wave.h" - -wxWave::wxWave() - : m_waveData(NULL), m_waveLength(0), m_isResource(FALSE) -{ -} - -wxWave::wxWave(const wxString& sFileName, bool isResource) - : m_waveData(NULL), m_waveLength(0), m_isResource(FALSE) -{ - Create(sFileName, isResource); -} - - -wxWave::~wxWave() -{ - Free(); -} - -bool wxWave::Create(const wxString& fileName, bool isResource) -{ - Free(); - - // TODO - - return FALSE; -} - -bool wxWave::Play(bool async, bool looped) const -{ - if (!IsOk()) - return FALSE; - - // TODO - return FALSE; -} - -bool wxWave::Free() -{ - // TODO - return FALSE; -} - - diff --git a/src/mac/carbon/window.cpp b/src/mac/carbon/window.cpp deleted file mode 100644 index 10ec3976dd..0000000000 --- a/src/mac/carbon/window.cpp +++ /dev/null @@ -1,1292 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: windows.cpp -// Purpose: wxWindow -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "window.h" -#endif - -#include "wx/setup.h" -#include "wx/menu.h" -#include "wx/dc.h" -#include "wx/dcclient.h" -#include "wx/utils.h" -#include "wx/app.h" -#include "wx/panel.h" -#include "wx/layout.h" -#include "wx/dialog.h" -#include "wx/listbox.h" -#include "wx/button.h" -#include "wx/settings.h" -#include "wx/msgdlg.h" -#include "wx/frame.h" - -#include "wx/menuitem.h" -#include "wx/log.h" - -#if wxUSE_DRAG_AND_DROP -#include "wx/dnd.h" -#endif - -#include - -extern wxList wxPendingDelete; - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxWindow, wxEvtHandler) - -BEGIN_EVENT_TABLE(wxWindow, wxEvtHandler) - EVT_CHAR(wxWindow::OnChar) - EVT_ERASE_BACKGROUND(wxWindow::OnEraseBackground) - EVT_SYS_COLOUR_CHANGED(wxWindow::OnSysColourChanged) - EVT_INIT_DIALOG(wxWindow::OnInitDialog) - EVT_IDLE(wxWindow::OnIdle) -END_EVENT_TABLE() - -#endif - - -// Constructor -wxWindow::wxWindow() -{ - // Generic - m_windowId = 0; - m_windowStyle = 0; - m_windowParent = NULL; - m_windowEventHandler = this; - m_windowName = ""; - m_windowCursor = *wxSTANDARD_CURSOR; - m_children = new wxList; - m_constraints = NULL; - m_constraintsInvolvedIn = NULL; - m_windowSizer = NULL; - m_sizerParent = NULL; - m_autoLayout = FALSE; - m_windowValidator = NULL; - m_defaultItem = NULL; - m_returnCode = 0; - m_caretWidth = 0; m_caretHeight = 0; - m_caretEnabled = FALSE; - m_caretShown = FALSE; - m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE) ; - // m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOW) ; ; - m_foregroundColour = *wxBLACK; - -#if wxUSE_DRAG_AND_DROP - m_pDropTarget = NULL; -#endif -} - -// Destructor -wxWindow::~wxWindow() -{ - // Have to delete constraints/sizer FIRST otherwise - // sizers may try to look at deleted windows as they - // delete themselves. -#if wxUSE_CONSTRAINTS - DeleteRelatedConstraints(); - if (m_constraints) - { - // This removes any dangling pointers to this window - // in other windows' constraintsInvolvedIn lists. - UnsetConstraints(m_constraints); - delete m_constraints; - m_constraints = NULL; - } - if (m_windowSizer) - { - delete m_windowSizer; - m_windowSizer = NULL; - } - // If this is a child of a sizer, remove self from parent - if (m_sizerParent) - m_sizerParent->RemoveChild((wxWindow *)this); -#endif - - if (m_windowParent) - m_windowParent->RemoveChild(this); - - DestroyChildren(); - - // TODO: destroy the window - - delete m_children; - m_children = NULL; - - // Just in case the window has been Closed, but - // we're then deleting immediately: don't leave - // dangling pointers. - wxPendingDelete.DeleteObject(this); - - if ( m_windowValidator ) - delete m_windowValidator; -} - -// Destroy the window (delayed, if a managed window) -bool wxWindow::Destroy() -{ - delete this; - return TRUE; -} - -// Constructor -bool wxWindow::Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - // Generic - m_windowId = 0; - m_windowStyle = 0; - m_windowParent = NULL; - m_windowEventHandler = this; - m_windowName = ""; - m_windowCursor = *wxSTANDARD_CURSOR; - m_constraints = NULL; - m_constraintsInvolvedIn = NULL; - m_windowSizer = NULL; - m_sizerParent = NULL; - m_autoLayout = FALSE; - m_windowValidator = NULL; - -#if wxUSE_DRAG_AND_DROP - m_pDropTarget = NULL; -#endif - - m_caretWidth = 0; m_caretHeight = 0; - m_caretEnabled = FALSE; - m_caretShown = FALSE; - m_minSizeX = -1; - m_minSizeY = -1; - m_maxSizeX = -1; - m_maxSizeY = -1; - m_defaultItem = NULL; - m_windowParent = NULL; - if (!parent) - return FALSE; - - if (parent) parent->AddChild(this); - - m_returnCode = 0; - - SetName(name); - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - // m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOW) ; ; - m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE) ; - m_foregroundColour = *wxBLACK; - - m_windowStyle = style; - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - // TODO: create the window - - return TRUE; -} - -void wxWindow::SetFocus() -{ - // TODO -} - -void wxWindow::Enable(bool enable) -{ - // TODO -} - -void wxWindow::CaptureMouse() -{ - // TODO -} - -void wxWindow::ReleaseMouse() -{ - // TODO -} - -// Push/pop event handler (i.e. allow a chain of event handlers -// be searched) -void wxWindow::PushEventHandler(wxEvtHandler *handler) -{ - handler->SetNextHandler(GetEventHandler()); - SetEventHandler(handler); -} - -wxEvtHandler *wxWindow::PopEventHandler(bool deleteHandler) -{ - if ( GetEventHandler() ) - { - wxEvtHandler *handlerA = GetEventHandler(); - wxEvtHandler *handlerB = handlerA->GetNextHandler(); - handlerA->SetNextHandler(NULL); - SetEventHandler(handlerB); - if ( deleteHandler ) - { - delete handlerA; - return NULL; - } - else - return handlerA; - } - else - return NULL; -} - -#if wxUSE_DRAG_AND_DROP - -void wxWindow::SetDropTarget(wxDropTarget *pDropTarget) -{ - if ( m_pDropTarget != 0 ) { - delete m_pDropTarget; - } - - m_pDropTarget = pDropTarget; - if ( m_pDropTarget != 0 ) - { - // TODO - } -} - -#endif - -// Old style file-manager drag&drop -void wxWindow::DragAcceptFiles(bool accept) -{ - // TODO -} - -// Get total size -void wxWindow::GetSize(int *x, int *y) const -{ - // TODO -} - -void wxWindow::GetPosition(int *x, int *y) const -{ - // TODO -} - -void wxWindow::ScreenToClient(int *x, int *y) const -{ - // TODO -} - -void wxWindow::ClientToScreen(int *x, int *y) const -{ - // TODO -} - -void wxWindow::SetCursor(const wxCursor& cursor) -{ - m_windowCursor = cursor; - if (m_windowCursor.Ok()) - { - // TODO - } -} - - -// Get size *available for subwindows* i.e. excluding menu bar etc. -void wxWindow::GetClientSize(int *x, int *y) const -{ - // TODO -} - -void wxWindow::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -void wxWindow::SetClientSize(int width, int height) -{ - // TODO -} - -// For implementation purposes - sometimes decorations make the client area -// smaller -wxPoint wxWindow::GetClientAreaOrigin() const -{ - return wxPoint(0, 0); -} - -// Makes an adjustment to the window position (for example, a frame that has -// a toolbar that it manages itself). -void wxWindow::AdjustForParentClientOrigin(int& x, int& y, int sizeFlags) -{ - if (((sizeFlags & wxSIZE_NO_ADJUSTMENTS) == 0) && GetParent()) - { - wxPoint pt(GetParent()->GetClientAreaOrigin()); - x += pt.x; y += pt.y; - } -} - -bool wxWindow::Show(bool show) -{ - // TODO - return FALSE; -} - -bool wxWindow::IsShown() const -{ - // TODO - return FALSE; -} - -int wxWindow::GetCharHeight() const -{ - // TODO - return 0; -} - -int wxWindow::GetCharWidth() const -{ - // TODO - return 0; -} - -void wxWindow::GetTextExtent(const wxString& string, int *x, int *y, - int *descent, int *externalLeading, const wxFont *theFont, bool) const -{ - wxFont *fontToUse = (wxFont *)theFont; - if (!fontToUse) - fontToUse = (wxFont *) & m_windowFont; - - // TODO -} - -void wxWindow::Refresh(bool eraseBack, const wxRect *rect) -{ - // TODO -} - -// Responds to colour changes: passes event on to children. -void wxWindow::OnSysColourChanged(wxSysColourChangedEvent& event) -{ - wxNode *node = GetChildren().First(); - while ( node ) - { - // Only propagate to non-top-level windows - wxWindow *win = (wxWindow *)node->Data(); - if ( win->GetParent() ) - { - wxSysColourChangedEvent event2; - event.m_eventObject = win; - win->GetEventHandler()->ProcessEvent(event2); - } - - node = node->Next(); - } -} - -// This can be called by the app (or wxWindows) to do default processing for the current -// event. Save message/event info in wxWindow so they can be used in this function. -long wxWindow::Default() -{ - // TODO - return 0; -} - -void wxWindow::InitDialog() -{ - wxInitDialogEvent event(GetId()); - event.SetEventObject( this ); - GetEventHandler()->ProcessEvent(event); -} - -// Default init dialog behaviour is to transfer data to window -void wxWindow::OnInitDialog(wxInitDialogEvent& event) -{ - TransferDataToWindow(); -} - -// Caret manipulation -void wxWindow::CreateCaret(int w, int h) -{ - m_caretWidth = w; - m_caretHeight = h; - m_caretEnabled = TRUE; -} - -void wxWindow::CreateCaret(const wxBitmap *WXUNUSED(bitmap)) -{ - // TODO -} - -void wxWindow::ShowCaret(bool show) -{ - // TODO -} - -void wxWindow::DestroyCaret() -{ - // TODO - m_caretEnabled = FALSE; -} - -void wxWindow::SetCaretPos(int x, int y) -{ - // TODO -} - -void wxWindow::GetCaretPos(int *x, int *y) const -{ - // TODO -} - -wxWindow *wxGetActiveWindow() -{ - // TODO - return NULL; -} - -void wxWindow::SetSizeHints(int minW, int minH, int maxW, int maxH, int WXUNUSED(incW), int WXUNUSED(incH)) -{ - m_minSizeX = minW; - m_minSizeY = minH; - m_maxSizeX = maxW; - m_maxSizeY = maxH; -} - -void wxWindow::Centre(int direction) -{ - int x, y, width, height, panel_width, panel_height, new_x, new_y; - - wxWindow *father = (wxWindow *)GetParent(); - if (!father) - return; - - father->GetClientSize(&panel_width, &panel_height); - GetSize(&width, &height); - GetPosition(&x, &y); - - new_x = -1; - new_y = -1; - - if (direction & wxHORIZONTAL) - new_x = (int)((panel_width - width)/2); - - if (direction & wxVERTICAL) - new_y = (int)((panel_height - height)/2); - - SetSize(new_x, new_y, -1, -1); - -} - -// Coordinates relative to the window -void wxWindow::WarpPointer (int x_pos, int y_pos) -{ - // TODO -} - -void wxWindow::OnEraseBackground(wxEraseEvent& event) -{ - // TODO - Default(); -} - -int wxWindow::GetScrollPos(int orient) const -{ - // TODO - return 0; -} - -// This now returns the whole range, not just the number -// of positions that we can scroll. -int wxWindow::GetScrollRange(int orient) const -{ - // TODO - return 0; -} - -int wxWindow::GetScrollThumb(int orient) const -{ - // TODO - return 0; -} - -void wxWindow::SetScrollPos(int orient, int pos, bool refresh) -{ - // TODO - return; -} - -// New function that will replace some of the above. -void wxWindow::SetScrollbar(int orient, int pos, int thumbVisible, - int range, bool refresh) -{ - // TODO -} - -// Does a physical scroll -void wxWindow::ScrollWindow(int dx, int dy, const wxRect *rect) -{ - // TODO - return; -} - -void wxWindow::SetFont(const wxFont& font) -{ - m_windowFont = font; - - if (!m_windowFont.Ok()) - return; - // TODO -} - -void wxWindow::OnChar(wxKeyEvent& event) -{ - if ( event.KeyCode() == WXK_TAB ) { - // propagate the TABs to the parent - it's up to it to decide what - // to do with it - if ( GetParent() ) { - if ( GetParent()->ProcessEvent(event) ) - return; - } - } -} - -void wxWindow::OnPaint(wxPaintEvent& event) -{ - Default(); -} - -bool wxWindow::IsEnabled() const -{ - // TODO - return FALSE; -} - -// Dialog support: override these and call -// base class members to add functionality -// that can't be done using validators. -// NOTE: these functions assume that controls -// are direct children of this window, not grandchildren -// or other levels of descendant. - -// Transfer values to controls. If returns FALSE, -// it's an application error (pops up a dialog) -bool wxWindow::TransferDataToWindow() -{ - wxNode *node = GetChildren().First(); - while ( node ) - { - wxWindow *child = (wxWindow *)node->Data(); - if ( child->GetValidator() && - !child->GetValidator()->TransferToWindow() ) - { - wxMessageBox("Application Error", "Could not transfer data to window", wxOK|wxICON_EXCLAMATION); - return FALSE; - } - - node = node->Next(); - } - return TRUE; -} - -// Transfer values from controls. If returns FALSE, -// validation failed: don't quit -bool wxWindow::TransferDataFromWindow() -{ - wxNode *node = GetChildren().First(); - while ( node ) - { - wxWindow *child = (wxWindow *)node->Data(); - if ( child->GetValidator() && !child->GetValidator()->TransferFromWindow() ) - { - return FALSE; - } - - node = node->Next(); - } - return TRUE; -} - -bool wxWindow::Validate() -{ - wxNode *node = GetChildren().First(); - while ( node ) - { - wxWindow *child = (wxWindow *)node->Data(); - if ( child->GetValidator() && /* child->GetValidator()->Ok() && */ !child->GetValidator()->Validate(this) ) - { - return FALSE; - } - - node = node->Next(); - } - return TRUE; -} - -// Get the window with the focus -wxWindow *wxWindow::FindFocus() -{ - // TODO - return NULL; -} - -void wxWindow::AddChild(wxWindow *child) -{ - GetChildren().Append(child); - child->m_windowParent = this; -} - -void wxWindow::RemoveChild(wxWindow *child) -{ - GetChildren().DeleteObject(child); - child->m_windowParent = NULL; -} - -void wxWindow::DestroyChildren() -{ - wxNode *node; - while ((node = GetChildren().First()) != (wxNode *)NULL) { - wxWindow *child; - if ((child = (wxWindow *)node->Data()) != (wxWindow *)NULL) { - delete child; - if ( GetChildren().Member(child) ) - delete node; - } - } /* while */ -} - -void wxWindow::MakeModal(bool modal) -{ - // Disable all other windows - if (this->IsKindOf(CLASSINFO(wxDialog)) || this->IsKindOf(CLASSINFO(wxFrame))) - { - wxNode *node = wxTopLevelWindows.First(); - while (node) - { - wxWindow *win = (wxWindow *)node->Data(); - if (win != this) - win->Enable(!modal); - - node = node->Next(); - } - } -} - -// If nothing defined for this, try the parent. -// E.g. we may be a button loaded from a resource, with no callback function -// defined. -void wxWindow::OnCommand(wxWindow& win, wxCommandEvent& event) -{ - if (GetEventHandler()->ProcessEvent(event) ) - return; - if (m_windowParent) - m_windowParent->GetEventHandler()->OnCommand(win, event); -} - -void wxWindow::SetConstraints(wxLayoutConstraints *c) -{ - if (m_constraints) - { - UnsetConstraints(m_constraints); - delete m_constraints; - } - m_constraints = c; - if (m_constraints) - { - // Make sure other windows know they're part of a 'meaningful relationship' - if (m_constraints->left.GetOtherWindow() && (m_constraints->left.GetOtherWindow() != this)) - m_constraints->left.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->top.GetOtherWindow() && (m_constraints->top.GetOtherWindow() != this)) - m_constraints->top.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->right.GetOtherWindow() && (m_constraints->right.GetOtherWindow() != this)) - m_constraints->right.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->bottom.GetOtherWindow() && (m_constraints->bottom.GetOtherWindow() != this)) - m_constraints->bottom.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->width.GetOtherWindow() && (m_constraints->width.GetOtherWindow() != this)) - m_constraints->width.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->height.GetOtherWindow() && (m_constraints->height.GetOtherWindow() != this)) - m_constraints->height.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->centreX.GetOtherWindow() && (m_constraints->centreX.GetOtherWindow() != this)) - m_constraints->centreX.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->centreY.GetOtherWindow() && (m_constraints->centreY.GetOtherWindow() != this)) - m_constraints->centreY.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - } -} - -// This removes any dangling pointers to this window -// in other windows' constraintsInvolvedIn lists. -void wxWindow::UnsetConstraints(wxLayoutConstraints *c) -{ - if (c) - { - if (c->left.GetOtherWindow() && (c->top.GetOtherWindow() != this)) - c->left.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->top.GetOtherWindow() && (c->top.GetOtherWindow() != this)) - c->top.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->right.GetOtherWindow() && (c->right.GetOtherWindow() != this)) - c->right.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->bottom.GetOtherWindow() && (c->bottom.GetOtherWindow() != this)) - c->bottom.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->width.GetOtherWindow() && (c->width.GetOtherWindow() != this)) - c->width.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->height.GetOtherWindow() && (c->height.GetOtherWindow() != this)) - c->height.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->centreX.GetOtherWindow() && (c->centreX.GetOtherWindow() != this)) - c->centreX.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->centreY.GetOtherWindow() && (c->centreY.GetOtherWindow() != this)) - c->centreY.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - } -} - -// Back-pointer to other windows we're involved with, so if we delete -// this window, we must delete any constraints we're involved with. -void wxWindow::AddConstraintReference(wxWindow *otherWin) -{ - if (!m_constraintsInvolvedIn) - m_constraintsInvolvedIn = new wxList; - if (!m_constraintsInvolvedIn->Member(otherWin)) - m_constraintsInvolvedIn->Append(otherWin); -} - -// REMOVE back-pointer to other windows we're involved with. -void wxWindow::RemoveConstraintReference(wxWindow *otherWin) -{ - if (m_constraintsInvolvedIn) - m_constraintsInvolvedIn->DeleteObject(otherWin); -} - -// Reset any constraints that mention this window -void wxWindow::DeleteRelatedConstraints() -{ - if (m_constraintsInvolvedIn) - { - wxNode *node = m_constraintsInvolvedIn->First(); - while (node) - { - wxWindow *win = (wxWindow *)node->Data(); - wxNode *next = node->Next(); - wxLayoutConstraints *constr = win->GetConstraints(); - - // Reset any constraints involving this window - if (constr) - { - constr->left.ResetIfWin((wxWindow *)this); - constr->top.ResetIfWin((wxWindow *)this); - constr->right.ResetIfWin((wxWindow *)this); - constr->bottom.ResetIfWin((wxWindow *)this); - constr->width.ResetIfWin((wxWindow *)this); - constr->height.ResetIfWin((wxWindow *)this); - constr->centreX.ResetIfWin((wxWindow *)this); - constr->centreY.ResetIfWin((wxWindow *)this); - } - delete node; - node = next; - } - delete m_constraintsInvolvedIn; - m_constraintsInvolvedIn = NULL; - } -} - -void wxWindow::SetSizer(wxSizer *sizer) -{ - m_windowSizer = sizer; - if (sizer) - sizer->SetSizerParent((wxWindow *)this); -} - -/* - * New version - */ - -bool wxWindow::Layout() -{ - if (GetConstraints()) - { - int w, h; - GetClientSize(&w, &h); - GetConstraints()->width.SetValue(w); - GetConstraints()->height.SetValue(h); - } - - // If top level (one sizer), evaluate the sizer's constraints. - if (GetSizer()) - { - int noChanges; - GetSizer()->ResetConstraints(); // Mark all constraints as unevaluated - GetSizer()->LayoutPhase1(&noChanges); - GetSizer()->LayoutPhase2(&noChanges); - GetSizer()->SetConstraintSizes(); // Recursively set the real window sizes - return TRUE; - } - else - { - // Otherwise, evaluate child constraints - ResetConstraints(); // Mark all constraints as unevaluated - DoPhase(1); // Just one phase need if no sizers involved - DoPhase(2); - SetConstraintSizes(); // Recursively set the real window sizes - } - return TRUE; -} - - -// Do a phase of evaluating constraints: -// the default behaviour. wxSizers may do a similar -// thing, but also impose their own 'constraints' -// and order the evaluation differently. -bool wxWindow::LayoutPhase1(int *noChanges) -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - return constr->SatisfyConstraints((wxWindow *)this, noChanges); - } - else - return TRUE; -} - -bool wxWindow::LayoutPhase2(int *noChanges) -{ - *noChanges = 0; - - // Layout children - DoPhase(1); - DoPhase(2); - return TRUE; -} - -// Do a phase of evaluating child constraints -bool wxWindow::DoPhase(int phase) -{ - int noIterations = 0; - int maxIterations = 500; - int noChanges = 1; - int noFailures = 0; - wxList succeeded; - while ((noChanges > 0) && (noIterations < maxIterations)) - { - noChanges = 0; - noFailures = 0; - wxNode *node = GetChildren().First(); - while (node) - { - wxWindow *child = (wxWindow *)node->Data(); - if (!child->IsKindOf(CLASSINFO(wxFrame)) && !child->IsKindOf(CLASSINFO(wxDialog))) - { - wxLayoutConstraints *constr = child->GetConstraints(); - if (constr) - { - if (succeeded.Member(child)) - { - } - else - { - int tempNoChanges = 0; - bool success = ( (phase == 1) ? child->LayoutPhase1(&tempNoChanges) : child->LayoutPhase2(&tempNoChanges) ) ; - noChanges += tempNoChanges; - if (success) - { - succeeded.Append(child); - } - } - } - } - node = node->Next(); - } - noIterations ++; - } - return TRUE; -} - -void wxWindow::ResetConstraints() -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - constr->left.SetDone(FALSE); - constr->top.SetDone(FALSE); - constr->right.SetDone(FALSE); - constr->bottom.SetDone(FALSE); - constr->width.SetDone(FALSE); - constr->height.SetDone(FALSE); - constr->centreX.SetDone(FALSE); - constr->centreY.SetDone(FALSE); - } - wxNode *node = GetChildren().First(); - while (node) - { - wxWindow *win = (wxWindow *)node->Data(); - if (!win->IsKindOf(CLASSINFO(wxFrame)) && !win->IsKindOf(CLASSINFO(wxDialog))) - win->ResetConstraints(); - node = node->Next(); - } -} - -// Need to distinguish between setting the 'fake' size for -// windows and sizers, and setting the real values. -void wxWindow::SetConstraintSizes(bool recurse) -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr && constr->left.GetDone() && constr->right.GetDone() && - constr->width.GetDone() && constr->height.GetDone()) - { - int x = constr->left.GetValue(); - int y = constr->top.GetValue(); - int w = constr->width.GetValue(); - int h = constr->height.GetValue(); - - // If we don't want to resize this window, just move it... - if ((constr->width.GetRelationship() != wxAsIs) || - (constr->height.GetRelationship() != wxAsIs)) - { - // Calls Layout() recursively. AAAGH. How can we stop that. - // Simply take Layout() out of non-top level OnSizes. - SizerSetSize(x, y, w, h); - } - else - { - SizerMove(x, y); - } - } - else if (constr) - { - char *windowClass = this->GetClassInfo()->GetClassName(); - - wxString winName; - if (GetName() == "") - winName = "unnamed"; - else - winName = GetName(); - wxDebugMsg("Constraint(s) not satisfied for window of type %s, name %s:\n", (const char *)windowClass, (const char *)winName); - if (!constr->left.GetDone()) - wxDebugMsg(" unsatisfied 'left' constraint.\n"); - if (!constr->right.GetDone()) - wxDebugMsg(" unsatisfied 'right' constraint.\n"); - if (!constr->width.GetDone()) - wxDebugMsg(" unsatisfied 'width' constraint.\n"); - if (!constr->height.GetDone()) - wxDebugMsg(" unsatisfied 'height' constraint.\n"); - wxDebugMsg("Please check constraints: try adding AsIs() constraints.\n"); - } - - if (recurse) - { - wxNode *node = GetChildren().First(); - while (node) - { - wxWindow *win = (wxWindow *)node->Data(); - if (!win->IsKindOf(CLASSINFO(wxFrame)) && !win->IsKindOf(CLASSINFO(wxDialog))) - win->SetConstraintSizes(); - node = node->Next(); - } - } -} - -// This assumes that all sizers are 'on' the same -// window, i.e. the parent of this window. -void wxWindow::TransformSizerToActual(int *x, int *y) const -{ - if (!m_sizerParent || m_sizerParent->IsKindOf(CLASSINFO(wxDialog)) || - m_sizerParent->IsKindOf(CLASSINFO(wxFrame)) ) - return; - - int xp, yp; - m_sizerParent->GetPosition(&xp, &yp); - m_sizerParent->TransformSizerToActual(&xp, &yp); - *x += xp; - *y += yp; -} - -void wxWindow::SizerSetSize(int x, int y, int w, int h) -{ - int xx = x; - int yy = y; - TransformSizerToActual(&xx, &yy); - SetSize(xx, yy, w, h); -} - -void wxWindow::SizerMove(int x, int y) -{ - int xx = x; - int yy = y; - TransformSizerToActual(&xx, &yy); - Move(xx, yy); -} - -// Only set the size/position of the constraint (if any) -void wxWindow::SetSizeConstraint(int x, int y, int w, int h) -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - if (x != -1) - { - constr->left.SetValue(x); - constr->left.SetDone(TRUE); - } - if (y != -1) - { - constr->top.SetValue(y); - constr->top.SetDone(TRUE); - } - if (w != -1) - { - constr->width.SetValue(w); - constr->width.SetDone(TRUE); - } - if (h != -1) - { - constr->height.SetValue(h); - constr->height.SetDone(TRUE); - } - } -} - -void wxWindow::MoveConstraint(int x, int y) -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - if (x != -1) - { - constr->left.SetValue(x); - constr->left.SetDone(TRUE); - } - if (y != -1) - { - constr->top.SetValue(y); - constr->top.SetDone(TRUE); - } - } -} - -void wxWindow::GetSizeConstraint(int *w, int *h) const -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - *w = constr->width.GetValue(); - *h = constr->height.GetValue(); - } - else - GetSize(w, h); -} - -void wxWindow::GetClientSizeConstraint(int *w, int *h) const -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - *w = constr->width.GetValue(); - *h = constr->height.GetValue(); - } - else - GetClientSize(w, h); -} - -void wxWindow::GetPositionConstraint(int *x, int *y) const -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - *x = constr->left.GetValue(); - *y = constr->top.GetValue(); - } - else - GetPosition(x, y); -} - -bool wxWindow::Close(bool force) -{ - wxCloseEvent event(wxEVT_CLOSE_WINDOW, m_windowId); - event.SetEventObject(this); - event.SetForce(force); - - return GetEventHandler()->ProcessEvent(event); -} - -wxObject* wxWindow::GetChild(int number) const -{ - // Return a pointer to the Nth object in the window - wxNode *node = GetChildren().First(); - int n = number; - while (node && n--) - node = node->Next() ; - if (node) - { - wxObject *obj = (wxObject *)node->Data(); - return(obj) ; - } - else - return NULL ; -} - -void wxWindow::OnDefaultAction(wxControl *initiatingItem) -{ - // Obsolete function -} - -void wxWindow::Clear() -{ - wxClientDC dc(this); - wxBrush brush(GetBackgroundColour(), wxSOLID); - dc.SetBackground(brush); - dc.Clear(); -} - -// Fits the panel around the items -void wxWindow::Fit() -{ - int maxX = 0; - int maxY = 0; - wxNode *node = GetChildren().First(); - while ( node ) - { - wxWindow *win = (wxWindow *)node->Data(); - int wx, wy, ww, wh; - win->GetPosition(&wx, &wy); - win->GetSize(&ww, &wh); - if ( wx + ww > maxX ) - maxX = wx + ww; - if ( wy + wh > maxY ) - maxY = wy + wh; - - node = node->Next(); - } - SetClientSize(maxX + 5, maxY + 5); -} - -void wxWindow::SetValidator(const wxValidator& validator) -{ - if ( m_windowValidator ) - delete m_windowValidator; - m_windowValidator = validator.Clone(); - - if ( m_windowValidator ) - m_windowValidator->SetWindow(this) ; -} - -void wxWindow::SetAcceleratorTable(const wxAcceleratorTable& accel) -{ - m_acceleratorTable = accel; -} - -// Find a window by id or name -wxWindow *wxWindow::FindWindow(long id) -{ - if ( GetId() == id) - return this; - - wxNode *node = GetChildren().First(); - while ( node ) - { - wxWindow *child = (wxWindow *)node->Data(); - wxWindow *found = child->FindWindow(id); - if ( found ) - return found; - node = node->Next(); - } - return NULL; -} - -wxWindow *wxWindow::FindWindow(const wxString& name) -{ - if ( GetName() == name) - return this; - - wxNode *node = GetChildren().First(); - while ( node ) - { - wxWindow *child = (wxWindow *)node->Data(); - wxWindow *found = child->FindWindow(name); - if ( found ) - return found; - node = node->Next(); - } - return NULL; -} - -void wxWindow::OnIdle(wxIdleEvent& event) -{ -/* TODO: you may need to do something like this - * if your GUI doesn't generate enter/leave events - - // Check if we need to send a LEAVE event - if (m_mouseInWindow) - { - POINT pt; - ::GetCursorPos(&pt); - if (::WindowFromPoint(pt) != (HWND) GetHWND()) - { - // Generate a LEAVE event - m_mouseInWindow = FALSE; - MSWOnMouseLeave(pt.x, pt.y, 0); - } - } -*/ - - // This calls the UI-update mechanism (querying windows for - // menu/toolbar/control state information) - UpdateWindowUI(); -} - -// Raise the window to the top of the Z order -void wxWindow::Raise() -{ - // TODO -} - -// Lower the window to the bottom of the Z order -void wxWindow::Lower() -{ - // TODO -} - -bool wxWindow::AcceptsFocus() const -{ - return IsShown() && IsEnabled(); -} - -// Update region access -wxRegion wxWindow::GetUpdateRegion() const -{ - return m_updateRegion; -} - -bool wxWindow::IsExposed(int x, int y, int w, int h) const -{ - return (m_updateRegion.Contains(x, y, w, h) != wxOutRegion); -} - -bool wxWindow::IsExposed(const wxPoint& pt) const -{ - return (m_updateRegion.Contains(pt) != wxOutRegion); -} - -bool wxWindow::IsExposed(const wxRect& rect) const -{ - return (m_updateRegion.Contains(rect) != wxOutRegion); -} - -/* - * Allocates control IDs - */ - -int wxWindow::NewControlId() -{ - static int s_controlId = 0; - s_controlId ++; - return s_controlId; -} - - diff --git a/src/mac/checkbox.cpp b/src/mac/checkbox.cpp deleted file mode 100644 index dd2e2abe7a..0000000000 --- a/src/mac/checkbox.cpp +++ /dev/null @@ -1,117 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: checkbox.cpp -// Purpose: wxCheckBox -// Author: AUTHOR -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "checkbox.h" -#endif - -#include "wx/checkbox.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxCheckBox, wxControl) -IMPLEMENT_DYNAMIC_CLASS(wxBitmapCheckBox, wxCheckBox) -#endif - -// Single check box item -bool wxCheckBox::Create(wxWindow *parent, wxWindowID id, const wxString& label, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); - SetValidator(validator); - m_windowStyle = style; - - if (parent) parent->AddChild(this); - - if ( id == -1 ) - m_windowId = NewControlId(); - else - m_windowId = id; - - // TODO: create checkbox - - return FALSE; -} - -void wxCheckBox::SetLabel(const wxString& label) -{ - // TODO -} - -void wxCheckBox::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -void wxCheckBox::SetValue(bool val) -{ - // TODO -} - -bool wxCheckBox::GetValue() const -{ - // TODO - return FALSE; -} - -void wxCheckBox::Command (wxCommandEvent & event) -{ - SetValue ((event.GetInt() != 0)); - ProcessCommand (event); -} - -// Bitmap checkbox -bool wxBitmapCheckBox::Create(wxWindow *parent, wxWindowID id, const wxBitmap *label, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); - SetValidator(validator); - m_windowStyle = style; - - if (parent) parent->AddChild(this); - - if ( id == -1 ) - m_windowId = NewControlId(); - else - m_windowId = id; - - // TODO: Create the bitmap checkbox - - return FALSE; -} - -void wxBitmapCheckBox::SetLabel(const wxBitmap *bitmap) -{ - // TODO -} - -void wxBitmapCheckBox::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -void wxBitmapCheckBox::SetValue(bool val) -{ - // TODO -} - -bool wxBitmapCheckBox::GetValue() const -{ - // TODOD - return FALSE; -} - - diff --git a/src/mac/checklst.cpp b/src/mac/checklst.cpp deleted file mode 100644 index 2f43152c2a..0000000000 --- a/src/mac/checklst.cpp +++ /dev/null @@ -1,74 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: checklst.cpp -// Purpose: implementation of wxCheckListBox class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -// ============================================================================ -// headers & declarations -// ============================================================================ - -#ifdef __GNUG__ -#pragma implementation "checklst.h" -#endif - -#include "wx/checklst.h" - -// ============================================================================ -// implementation -// ============================================================================ - -#if !USE_SHARED_LIBRARY - IMPLEMENT_DYNAMIC_CLASS(wxCheckListBox, wxListBox) -#endif - -// ---------------------------------------------------------------------------- -// implementation of wxCheckListBox class -// ---------------------------------------------------------------------------- - -// define event table -// ------------------ -BEGIN_EVENT_TABLE(wxCheckListBox, wxListBox) -END_EVENT_TABLE() - -// control creation -// ---------------- - -// def ctor: use Create() to really create the control -wxCheckListBox::wxCheckListBox() : wxListBox() -{ -} - -// ctor which creates the associated control -wxCheckListBox::wxCheckListBox(wxWindow *parent, wxWindowID id, - const wxPoint& pos, const wxSize& size, - int nStrings, const wxString choices[], - long style, const wxValidator& val, - const wxString& name) - : wxListBox() -{ - // TODO: you'll probably need a separate Create instead of using - // the wxListBox one as here. - Create(parent, id, pos, size, nStrings, choices, style|wxLB_OWNERDRAW, val, name); -} - -// check items -// ----------- - -bool wxCheckListBox::IsChecked(size_t uiIndex) const -{ - // TODO - return FALSE; -} - -void wxCheckListBox::Check(size_t uiIndex, bool bCheck) -{ - // TODO -} - - diff --git a/src/mac/choice.cpp b/src/mac/choice.cpp deleted file mode 100644 index a584d5303f..0000000000 --- a/src/mac/choice.cpp +++ /dev/null @@ -1,119 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: choice.cpp -// Purpose: wxChoice -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "choice.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/choice.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxChoice, wxControl) -#endif - -bool wxChoice::Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos, - const wxSize& size, - int n, const wxString choices[], - long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); - SetValidator(validator); - m_noStrings = n; - m_windowStyle = style; - - if (parent) parent->AddChild(this); - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - // TODO: create choice control - return FALSE; -} - -void wxChoice::Append(const wxString& item) -{ - // TODO - m_noStrings ++; -} - -void wxChoice::Delete(int n) -{ - // TODO - m_noStrings --; -} - -void wxChoice::Clear() -{ - // TODO - m_noStrings = 0; -} - -int wxChoice::GetSelection() const -{ - // TODO - return 0; -} - -void wxChoice::SetSelection(int n) -{ - // TODO -} - -int wxChoice::FindString(const wxString& s) const -{ - // TODO - return 0; -} - -wxString wxChoice::GetString(int n) const -{ - // TODO - return wxString(""); -} - -void wxChoice::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -wxString wxChoice::GetStringSelection () const -{ - int sel = GetSelection (); - if (sel > -1) - return wxString(this->GetString (sel)); - else - return wxString(""); -} - -bool wxChoice::SetStringSelection (const wxString& s) -{ - int sel = FindString (s); - if (sel > -1) - { - SetSelection (sel); - return TRUE; - } - else - return FALSE; -} - -void wxChoice::Command(wxCommandEvent & event) -{ - SetSelection (event.GetInt()); - ProcessCommand (event); -} - diff --git a/src/mac/clipbrd.cpp b/src/mac/clipbrd.cpp deleted file mode 100644 index 3fe9ebfb72..0000000000 --- a/src/mac/clipbrd.cpp +++ /dev/null @@ -1,237 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: clipbrd.cpp -// Purpose: Clipboard functionality -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation -#pragma implementation "clipbrd.h" -#endif - -#include "wx/app.h" -#include "wx/frame.h" -#include "wx/bitmap.h" -#include "wx/utils.h" -#include "wx/metafile.h" -#include "wx/clipbrd.h" - -#include - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxClipboard, wxObject) -IMPLEMENT_ABSTRACT_CLASS(wxClipboardClient, wxObject) -#endif - -bool wxOpenClipboard() -{ - // TODO - return FALSE; -} - -bool wxCloseClipboard() -{ - // TODO - return FALSE; -} - -bool wxEmptyClipboard() -{ - // TODO - return FALSE; -} - -bool wxClipboardOpen() -{ - // TODO - return FALSE; -} - -bool wxIsClipboardFormatAvailable(int dataFormat) -{ - // TODO - return FALSE; -} - -bool wxSetClipboardData(int dataFormat, wxObject *obj, int width, int height) -{ - // TODO - return FALSE; -} - -wxObject *wxGetClipboardData(int dataFormat, long *len) -{ - // TODO - return NULL; -} - -int wxEnumClipboardFormats(int dataFormat) -{ - // TODO - return 0; -} - -int wxRegisterClipboardFormat(char *formatName) -{ - // TODO - return 0; -} - -bool wxGetClipboardFormatName(int dataFormat, char *formatName, int maxCount) -{ - // TODO - return FALSE; -} - -/* - * Generalized clipboard implementation by Matthew Flatt - */ - -wxClipboard *wxTheClipboard = NULL; - -void wxInitClipboard() -{ - if (!wxTheClipboard) - wxTheClipboard = new wxClipboard; -} - -wxClipboard::wxClipboard() -{ - clipOwner = NULL; - cbString = NULL; -} - -wxClipboard::~wxClipboard() -{ - if (clipOwner) - clipOwner->BeingReplaced(); - if (cbString) - delete[] cbString; -} - -static int FormatStringToID(char *str) -{ - if (!strcmp(str, "TEXT")) - return wxDF_TEXT; - - return wxRegisterClipboardFormat(str); -} - -void wxClipboard::SetClipboardClient(wxClipboardClient *client, long time) -{ - bool got_selection; - - if (clipOwner) - clipOwner->BeingReplaced(); - clipOwner = client; - if (cbString) { - delete[] cbString; - cbString = NULL; - } - - if (wxOpenClipboard()) { - char **formats, *data; - int i; - int ftype; - long size; - - formats = clipOwner->formats.ListToArray(FALSE); - for (i = clipOwner->formats.Number(); i--; ) { - ftype = FormatStringToID(formats[i]); - data = clipOwner->GetData(formats[i], &size); - if (!wxSetClipboardData(ftype, (wxObject *)data, size, 1)) { - got_selection = FALSE; - break; - } - } - - if (i < 0) - got_selection = wxCloseClipboard(); - } else - got_selection = FALSE; - - got_selection = FALSE; // Assume another process takes over - - if (!got_selection) { - clipOwner->BeingReplaced(); - clipOwner = NULL; - } -} - -wxClipboardClient *wxClipboard::GetClipboardClient() -{ - return clipOwner; -} - -void wxClipboard::SetClipboardString(char *str, long time) -{ - bool got_selection; - - if (clipOwner) { - clipOwner->BeingReplaced(); - clipOwner = NULL; - } - if (cbString) - delete[] cbString; - - cbString = str; - - if (wxOpenClipboard()) { - if (!wxSetClipboardData(wxDF_TEXT, (wxObject *)str)) - got_selection = FALSE; - else - got_selection = wxCloseClipboard(); - } else - got_selection = FALSE; - - got_selection = FALSE; // Assume another process takes over - - if (!got_selection) { - delete[] cbString; - cbString = NULL; - } -} - -char *wxClipboard::GetClipboardString(long time) -{ - char *str; - long length; - - str = GetClipboardData("TEXT", &length, time); - if (!str) { - str = new char[1]; - *str = 0; - } - - return str; -} - -char *wxClipboard::GetClipboardData(char *format, long *length, long time) -{ - if (clipOwner) { - if (clipOwner->formats.Member(format)) - return clipOwner->GetData(format, length); - else - return NULL; - } else if (cbString) { - if (!strcmp(format, "TEXT")) - return copystring(cbString); - else - return NULL; - } else { - if (wxOpenClipboard()) { - receivedString = (char *)wxGetClipboardData(FormatStringToID(format), - length); - wxCloseClipboard(); - } else - receivedString = NULL; - - return receivedString; - } -} - diff --git a/src/mac/colordlg.cpp b/src/mac/colordlg.cpp deleted file mode 100644 index 2275a9a39d..0000000000 --- a/src/mac/colordlg.cpp +++ /dev/null @@ -1,53 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: colordlg.cpp -// Purpose: wxColourDialog class. NOTE: you can use the generic class -// if you wish, instead of implementing this. -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "colordlg.h" -#endif - -#include "wx/stubs/colordlg.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxColourDialog, wxDialog) -#endif - -/* - * wxColourDialog - */ - -wxColourDialog::wxColourDialog() -{ - m_dialogParent = NULL; -} - -wxColourDialog::wxColourDialog(wxWindow *parent, wxColourData *data) -{ - Create(parent, data); -} - -bool wxColourDialog::Create(wxWindow *parent, wxColourData *data) -{ - m_dialogParent = parent; - - if (data) - m_colourData = *data; - return TRUE; -} - -int wxColourDialog::ShowModal() -{ - /* TODO: implement dialog - */ - - return wxID_CANCEL; -} - diff --git a/src/mac/colour.cpp b/src/mac/colour.cpp deleted file mode 100644 index 8d0827ef1d..0000000000 --- a/src/mac/colour.cpp +++ /dev/null @@ -1,103 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: colour.cpp -// Purpose: wxColour class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "colour.h" -#endif - -#include "wx/gdicmn.h" -#include "wx/colour.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxColour, wxObject) -#endif - -// Colour - -wxColour::wxColour () -{ - m_isInit = FALSE; - m_red = m_blue = m_green = 0; -/* TODO - m_pixel = 0; -*/ -} - -wxColour::wxColour (unsigned char r, unsigned char g, unsigned char b) -{ - m_red = r; - m_green = g; - m_blue = b; - m_isInit = TRUE; -/* TODO - m_pixel = PALETTERGB (m_red, m_green, m_blue); -*/ -} - -wxColour::wxColour (const wxColour& col) -{ - m_red = col.m_red; - m_green = col.m_green; - m_blue = col.m_blue; - m_isInit = col.m_isInit; -/* TODO - m_pixel = col.m_pixel; -*/ -} - -wxColour& wxColour::operator =(const wxColour& col) -{ - m_red = col.m_red; - m_green = col.m_green; - m_blue = col.m_blue; - m_isInit = col.m_isInit; -/* TODO - m_pixel = col.m_pixel; -*/ - return *this; -} - -void wxColour::InitFromName(const wxString& col) -{ - wxColour *the_colour = wxTheColourDatabase->FindColour (col); - if (the_colour) - { - m_red = the_colour->Red (); - m_green = the_colour->Green (); - m_blue = the_colour->Blue (); - m_isInit = TRUE; - } - else - { - m_red = 0; - m_green = 0; - m_blue = 0; - m_isInit = FALSE; - } -/* TODO - m_pixel = PALETTERGB (m_red, m_green, m_blue); -*/ -} - -wxColour::~wxColour () -{ -} - -void wxColour::Set (unsigned char r, unsigned char g, unsigned char b) -{ - m_red = r; - m_green = g; - m_blue = b; - m_isInit = TRUE; -/* TODO - m_pixel = PALETTERGB (m_red, m_green, m_blue); -*/ -} diff --git a/src/mac/combobox.cpp b/src/mac/combobox.cpp deleted file mode 100644 index 0be841bad4..0000000000 --- a/src/mac/combobox.cpp +++ /dev/null @@ -1,165 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: combobox.cpp -// Purpose: wxComboBox class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "combobox.h" -#endif - -#include "wx/combobox.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxComboBox, wxControl) -#endif - -bool wxComboBox::Create(wxWindow *parent, wxWindowID id, - const wxString& value, - const wxPoint& pos, - const wxSize& size, - int n, const wxString choices[], - long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); - SetValidator(validator); - m_noStrings = n; - m_windowStyle = style; - - if (parent) parent->AddChild(this); - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - // TODO: create combobox control - - return TRUE; -} - -wxString wxComboBox::GetValue() const -{ - // TODO - return wxString(""); -} - -void wxComboBox::SetValue(const wxString& value) -{ - // TODO -} - -// Clipboard operations -void wxComboBox::Copy() -{ - // TODO -} - -void wxComboBox::Cut() -{ - // TODO -} - -void wxComboBox::Paste() -{ - // TODO -} - -void wxComboBox::SetEditable(bool editable) -{ - // TODO -} - -void wxComboBox::SetInsertionPoint(long pos) -{ - // TODO -} - -void wxComboBox::SetInsertionPointEnd() -{ - // TODO -} - -long wxComboBox::GetInsertionPoint() const -{ - // TODO - return 0; -} - -long wxComboBox::GetLastPosition() const -{ - // TODO - return 0; -} - -void wxComboBox::Replace(long from, long to, const wxString& value) -{ - // TODO -} - -void wxComboBox::Remove(long from, long to) -{ - // TODO -} - -void wxComboBox::SetSelection(long from, long to) -{ - // TODO -} - -void wxComboBox::Append(const wxString& item) -{ - // TODO -} - -void wxComboBox::Delete(int n) -{ - // TODO -} - -void wxComboBox::Clear() -{ - // TODO -} - -int wxComboBox::GetSelection() const -{ - // TODO - return -1; -} - -void wxComboBox::SetSelection(int n) -{ - // TODO -} - -int wxComboBox::FindString(const wxString& s) const -{ - // TODO - return -1; -} - -wxString wxComboBox::GetString(int n) const -{ - // TODO - return wxString(""); -} - -wxString wxComboBox::GetStringSelection() const -{ - // TODO - return wxString(""); -} - -bool wxComboBox::SetStringSelection(const wxString& sel) -{ - // TODO - return FALSE; -} diff --git a/src/mac/control.cpp b/src/mac/control.cpp deleted file mode 100644 index b141a80ff1..0000000000 --- a/src/mac/control.cpp +++ /dev/null @@ -1,95 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: control.cpp -// Purpose: wxControl class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "control.h" -#endif - -#include "wx/control.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_ABSTRACT_CLASS(wxControl, wxWindow) - -BEGIN_EVENT_TABLE(wxControl, wxWindow) -END_EVENT_TABLE() -#endif - -// Item members -wxControl::wxControl() -{ - m_backgroundColour = *wxWHITE; - m_foregroundColour = *wxBLACK; - m_callback = 0; -} - -wxControl::~wxControl() -{ - // If we delete an item, we should initialize the parent panel, - // because it could now be invalid. - wxWindow *parent = (wxWindow *)GetParent(); - if (parent) - { - if (parent->GetDefaultItem() == (wxButton*) this) - parent->SetDefaultItem(NULL); - } -} - -void wxControl::SetLabel(const wxString& label) -{ - // TODO -} - -wxString wxControl::GetLabel() const -{ - // TODO - return wxString(""); -} - -void wxControl::ProcessCommand (wxCommandEvent & event) -{ - // Tries: - // 1) A callback function (to become obsolete) - // 2) OnCommand, starting at this window and working up parent hierarchy - // 3) OnCommand then calls ProcessEvent to search the event tables. - if (m_callback) - { - (void) (*(m_callback)) (*this, event); - } - else - { - GetEventHandler()->OnCommand(*this, event); - } -} - -void wxControl::Centre (int direction) -{ - int x, y, width, height, panel_width, panel_height, new_x, new_y; - - wxWindow *parent = (wxWindow *) GetParent (); - if (!parent) - return; - - parent->GetClientSize (&panel_width, &panel_height); - GetSize (&width, &height); - GetPosition (&x, &y); - - new_x = x; - new_y = y; - - if (direction & wxHORIZONTAL) - new_x = (int) ((panel_width - width) / 2); - - if (direction & wxVERTICAL) - new_y = (int) ((panel_height - height) / 2); - - SetSize (new_x, new_y, width, height); -} - diff --git a/src/mac/cursor.cpp b/src/mac/cursor.cpp deleted file mode 100644 index 4333364c93..0000000000 --- a/src/mac/cursor.cpp +++ /dev/null @@ -1,187 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: cursor.cpp -// Purpose: wxCursor class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "cursor.h" -#endif - -#include "wx/cursor.h" -#include "wx/icon.h" - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxCursor, wxBitmap) -#endif - -wxCursorRefData::wxCursorRefData() -{ - m_width = 32; m_height = 32; - -/* TODO - m_hCursor = 0 ; -*/ -} - -wxCursorRefData::~wxCursorRefData() -{ - // TODO: destroy cursor -} - -// Cursors -wxCursor::wxCursor() -{ -} - -wxCursor::wxCursor(const char WXUNUSED(bits)[], int WXUNUSED(width), int WXUNUSED(height), - int WXUNUSED(hotSpotX), int WXUNUSED(hotSpotY), const char WXUNUSED(maskBits)[]) -{ -} - -wxCursor::wxCursor(const wxString& cursor_file, long flags, int hotSpotX, int hotSpotY) -{ - m_refData = new wxCursorRefData; - - // TODO: create cursor from a file -} - -// Cursors by stock number -wxCursor::wxCursor(int cursor_type) -{ - m_refData = new wxCursorRefData; - -/* TODO - switch (cursor_type) - { - case wxCURSOR_WAIT: - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_WAIT); - break; - case wxCURSOR_IBEAM: - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_IBEAM); - break; - case wxCURSOR_CROSS: - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_CROSS); - break; - case wxCURSOR_SIZENWSE: - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_SIZENWSE); - break; - case wxCURSOR_SIZENESW: - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_SIZENESW); - break; - case wxCURSOR_SIZEWE: - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_SIZEWE); - break; - case wxCURSOR_SIZENS: - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_SIZENS); - break; - case wxCURSOR_CHAR: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_ARROW); - break; - } - case wxCURSOR_HAND: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_HAND"); - break; - } - case wxCURSOR_BULLSEYE: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_BULLSEYE"); - break; - } - case wxCURSOR_PENCIL: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_PENCIL"); - break; - } - case wxCURSOR_MAGNIFIER: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_MAGNIFIER"); - break; - } - case wxCURSOR_NO_ENTRY: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_NO_ENTRY"); - break; - } - case wxCURSOR_LEFT_BUTTON: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_ARROW); - break; - } - case wxCURSOR_RIGHT_BUTTON: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_ARROW); - break; - } - case wxCURSOR_MIDDLE_BUTTON: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_ARROW); - break; - } - case wxCURSOR_SIZING: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_SIZING"); - break; - } - case wxCURSOR_WATCH: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_WATCH"); - break; - } - case wxCURSOR_SPRAYCAN: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_ROLLER"); - break; - } - case wxCURSOR_PAINT_BRUSH: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_PBRUSH"); - break; - } - case wxCURSOR_POINT_LEFT: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_PLEFT"); - break; - } - case wxCURSOR_POINT_RIGHT: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_PRIGHT"); - break; - } - case wxCURSOR_QUESTION_ARROW: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_QARROW"); - break; - } - case wxCURSOR_BLANK: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_BLANK"); - break; - } - default: - case wxCURSOR_ARROW: - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_ARROW); - break; - } -*/ - -} - -wxCursor::~wxCursor() -{ -} - -// Global cursor setting -void wxSetCursor(const wxCursor& cursor) -{ - // TODO (optional on platforms with no global cursor) -} - - diff --git a/src/mac/data.cpp b/src/mac/data.cpp deleted file mode 100644 index 5e6c418519..0000000000 --- a/src/mac/data.cpp +++ /dev/null @@ -1,151 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: data.cpp -// Purpose: Various data -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation -#endif - -#include "wx/wx.h" - -#if wxUSE_POSTSCRIPT -#include "wx/postscrp.h" -#endif - -#define _MAXPATHLEN 500 - -// Useful buffer, initialized in CommonInit -char *wxBuffer = NULL; - -// Windows List -wxList wxTopLevelWindows; - -// List of windows pending deletion -wxList wxPendingDelete; - -int wxPageNumber; - -// GDI Object Lists -wxBrushList *wxTheBrushList = NULL; -wxPenList *wxThePenList = NULL; -wxFontList *wxTheFontList = NULL; -wxBitmapList *wxTheBitmapList = NULL; - -wxColourDatabase *wxTheColourDatabase = NULL; - -// Stock objects -wxFont *wxNORMAL_FONT; -wxFont *wxSMALL_FONT; -wxFont *wxITALIC_FONT; -wxFont *wxSWISS_FONT; -wxPen *wxRED_PEN; - -wxPen *wxCYAN_PEN; -wxPen *wxGREEN_PEN; -wxPen *wxBLACK_PEN; -wxPen *wxWHITE_PEN; -wxPen *wxTRANSPARENT_PEN; -wxPen *wxBLACK_DASHED_PEN; -wxPen *wxGREY_PEN; -wxPen *wxMEDIUM_GREY_PEN; -wxPen *wxLIGHT_GREY_PEN; - -wxBrush *wxBLUE_BRUSH; -wxBrush *wxGREEN_BRUSH; -wxBrush *wxWHITE_BRUSH; -wxBrush *wxBLACK_BRUSH; -wxBrush *wxTRANSPARENT_BRUSH; -wxBrush *wxCYAN_BRUSH; -wxBrush *wxRED_BRUSH; -wxBrush *wxGREY_BRUSH; -wxBrush *wxMEDIUM_GREY_BRUSH; -wxBrush *wxLIGHT_GREY_BRUSH; - -wxColour *wxBLACK; -wxColour *wxWHITE; -wxColour *wxRED; -wxColour *wxBLUE; -wxColour *wxGREEN; -wxColour *wxCYAN; -wxColour *wxLIGHT_GREY; - -wxCursor *wxSTANDARD_CURSOR = NULL; -wxCursor *wxHOURGLASS_CURSOR = NULL; -wxCursor *wxCROSS_CURSOR = NULL; - -// 'Null' objects -wxAcceleratorTable wxNullAcceleratorTable; -wxBitmap wxNullBitmap; -wxIcon wxNullIcon; -wxCursor wxNullCursor; -wxPen wxNullPen; -wxBrush wxNullBrush; -wxPalette wxNullPalette; -wxFont wxNullFont; -wxColour wxNullColour; - -// Default window names -const char *wxButtonNameStr = "button"; -const char *wxCanvasNameStr = "canvas"; -const char *wxCheckBoxNameStr = "check"; -const char *wxChoiceNameStr = "choice"; -const char *wxComboBoxNameStr = "comboBox"; -const char *wxDialogNameStr = "dialog"; -const char *wxFrameNameStr = "frame"; -const char *wxGaugeNameStr = "gauge"; -const char *wxStaticBoxNameStr = "groupBox"; -const char *wxListBoxNameStr = "listBox"; -const char *wxStaticTextNameStr = "message"; -const char *wxStaticBitmapNameStr = "message"; -const char *wxMultiTextNameStr = "multitext"; -const char *wxPanelNameStr = "panel"; -const char *wxRadioBoxNameStr = "radioBox"; -const char *wxRadioButtonNameStr = "radioButton"; -const char *wxBitmapRadioButtonNameStr = "radioButton"; -const char *wxScrollBarNameStr = "scrollBar"; -const char *wxSliderNameStr = "slider"; -const char *wxStaticNameStr = "static"; -const char *wxTextCtrlWindowNameStr = "textWindow"; -const char *wxTextCtrlNameStr = "text"; -const char *wxVirtListBoxNameStr = "virtListBox"; -const char *wxButtonBarNameStr = "buttonbar"; -const char *wxEnhDialogNameStr = "Shell"; -const char *wxToolBarNameStr = "toolbar"; -const char *wxStatusLineNameStr = "status_line"; -const char *wxEmptyString = ""; -const char *wxGetTextFromUserPromptStr = "Input Text"; -const char *wxMessageBoxCaptionStr = "Message"; -const char *wxFileSelectorPromptStr = "Select a file"; -const char *wxFileSelectorDefaultWildcardStr = "*.*"; -const char *wxInternalErrorStr = "wxWindows Internal Error"; -const char *wxFatalErrorStr = "wxWindows Fatal Error"; - -// See wx/utils.h -const char *wxFloatToStringStr = "%.2f"; -const char *wxDoubleToStringStr = "%.2f"; - -#if wxUSE_POSTSCRIPT -wxPrintPaperDatabase* wxThePrintPaperDatabase = NULL; -#endif - -#if wxUSE_SHARED_LIBRARY -///// Event tables (also must be in one, statically-linked file for shared libraries) - -// This is the base, wxEvtHandler 'bootstrap' code which is expanded manually here -const wxEventTable *wxEvtHandler::GetEventTable() const { return &wxEvtHandler::sm_eventTable; } - -const wxEventTable wxEvtHandler::sm_eventTable = - { NULL, &wxEvtHandler::sm_eventTableEntries[0] }; - -const wxEventTableEntry wxEvtHandler::sm_eventTableEntries[] = { { 0, 0, 0, NULL } }; -#endif - -const wxSize wxDefaultSize(-1, -1); -const wxPoint wxDefaultPosition(-1, -1); diff --git a/src/mac/dc.cpp b/src/mac/dc.cpp deleted file mode 100644 index 642dc1edc5..0000000000 --- a/src/mac/dc.cpp +++ /dev/null @@ -1,385 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dc.cpp -// Purpose: wxDC class -// Author: AUTHOR -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dc.h" -#endif - -#include "wx/dc.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_ABSTRACT_CLASS(wxDC, wxObject) -#endif - -//----------------------------------------------------------------------------- -// constants -//----------------------------------------------------------------------------- - -#define mm2inches 0.0393700787402 -#define inches2mm 25.4 -#define mm2twips 56.6929133859 -#define twips2mm 0.0176388888889 -#define mm2pt 2.83464566929 -#define pt2mm 0.352777777778 - -//----------------------------------------------------------------------------- -// wxDC -//----------------------------------------------------------------------------- - -wxDC::wxDC(void) -{ - m_ok = FALSE; - m_optimize = FALSE; - m_autoSetting = FALSE; - m_colour = TRUE; - m_clipping = FALSE; - - m_mm_to_pix_x = 1.0; - m_mm_to_pix_y = 1.0; - - m_logicalOriginX = 0; - m_logicalOriginY = 0; - m_deviceOriginX = 0; - m_deviceOriginY = 0; - m_internalDeviceOriginX = 0; - m_internalDeviceOriginY = 0; - m_externalDeviceOriginX = 0; - m_externalDeviceOriginY = 0; - - m_logicalScaleX = 1.0; - m_logicalScaleY = 1.0; - m_userScaleX = 1.0; - m_userScaleY = 1.0; - m_scaleX = 1.0; - m_scaleY = 1.0; - - m_mappingMode = MM_TEXT; - m_needComputeScaleX = FALSE; - m_needComputeScaleY = FALSE; - - m_signX = 1; // default x-axis left to right - m_signY = 1; // default y-axis top down - - m_maxX = m_maxY = -100000; - m_minY = m_minY = 100000; - - m_logicalFunction = wxCOPY; -// m_textAlignment = wxALIGN_TOP_LEFT; - m_backgroundMode = wxTRANSPARENT; - - m_textForegroundColour = *wxBLACK; - m_textBackgroundColour = *wxWHITE; - m_pen = *wxBLACK_PEN; - m_font = *wxNORMAL_FONT; - m_brush = *wxTRANSPARENT_BRUSH; - m_backgroundBrush = *wxWHITE_BRUSH; - -// m_palette = wxAPP_COLOURMAP; -}; - -wxDC::~wxDC(void) -{ -}; - -void wxDC::DrawIcon( const wxIcon &WXUNUSED(icon), long WXUNUSED(x), long WXUNUSED(y), bool WXUNUSED(useMask) ) -{ -}; - -void wxDC::DrawPoint( wxPoint& point ) -{ - DrawPoint( point.x, point.y ); -}; - -void wxDC::DrawPolygon( wxList *list, long xoffset, long yoffset, int fillStyle ) -{ - int n = list->Number(); - wxPoint *points = new wxPoint[n]; - - int i = 0; - for( wxNode *node = list->First(); node; node = node->Next() ) - { - wxPoint *point = (wxPoint *)node->Data(); - points[i].x = point->x; - points[i++].y = point->y; - }; - DrawPolygon( n, points, xoffset, yoffset, fillStyle ); - delete[] points; -}; - -void wxDC::DrawLines( wxList *list, long xoffset, long yoffset ) -{ - int n = list->Number(); - wxPoint *points = new wxPoint[n]; - - int i = 0; - for( wxNode *node = list->First(); node; node = node->Next() ) - { - wxPoint *point = (wxPoint *)node->Data(); - points[i].x = point->x; - points[i++].y = point->y; - }; - DrawLines( n, points, xoffset, yoffset ); - delete []points; -}; - -void wxDC::DrawSpline( long x1, long y1, long x2, long y2, long x3, long y3 ) -{ - wxList list; - list.Append( (wxObject*)new wxPoint(x1, y1) ); - list.Append( (wxObject*)new wxPoint(x2, y2) ); - list.Append( (wxObject*)new wxPoint(x3, y3) ); - DrawSpline(&list); - wxNode *node = list.First(); - while (node) - { - wxPoint *p = (wxPoint*)node->Data(); - delete p; - node = node->Next(); - }; -}; - -void wxDC::DrawSpline( int n, wxPoint points[] ) -{ - wxList list; - for (int i = 0; i < n; i++) list.Append( (wxObject*)&points[i] ); - DrawSpline( &list ); -}; - -void wxDC::SetClippingRegion( long x, long y, long width, long height ) -{ - m_clipping = TRUE; - m_clipX1 = x; - m_clipY1 = y; - m_clipX2 = x + width; - m_clipY2 = y + height; -}; - -void wxDC::DestroyClippingRegion(void) -{ - m_clipping = FALSE; -}; - -void wxDC::GetClippingBox( long *x, long *y, long *width, long *height ) const -{ - if (m_clipping) - { - if (x) *x = m_clipX1; - if (y) *y = m_clipY1; - if (width) *width = (m_clipX2 - m_clipX1); - if (height) *height = (m_clipY2 - m_clipY1); - } - else - *x = *y = *width = *height = 0; -}; - -void wxDC::GetSize( int* width, int* height ) const -{ - *width = m_maxX-m_minX; - *height = m_maxY-m_minY; -}; - -void wxDC::GetSizeMM( long* width, long* height ) const -{ - int w = 0; - int h = 0; - GetSize( &w, &h ); - *width = long( double(w) / (m_scaleX*m_mm_to_pix_x) ); - *height = long( double(h) / (m_scaleY*m_mm_to_pix_y) ); -}; - -void wxDC::SetTextForeground( const wxColour &col ) -{ - if (!Ok()) return; - m_textForegroundColour = col; -}; - -void wxDC::SetTextBackground( const wxColour &col ) -{ - if (!Ok()) return; - m_textBackgroundColour = col; -}; - -void wxDC::SetMapMode( int mode ) -{ - switch (mode) - { - case MM_TWIPS: - SetLogicalScale( twips2mm*m_mm_to_pix_x, twips2mm*m_mm_to_pix_y ); - break; - case MM_POINTS: - SetLogicalScale( pt2mm*m_mm_to_pix_x, pt2mm*m_mm_to_pix_y ); - break; - case MM_METRIC: - SetLogicalScale( m_mm_to_pix_x, m_mm_to_pix_y ); - break; - case MM_LOMETRIC: - SetLogicalScale( m_mm_to_pix_x/10.0, m_mm_to_pix_y/10.0 ); - break; - default: - case MM_TEXT: - SetLogicalScale( 1.0, 1.0 ); - break; - }; - if (mode != MM_TEXT) - { - m_needComputeScaleX = TRUE; - m_needComputeScaleY = TRUE; - }; -}; - -void wxDC::SetUserScale( double x, double y ) -{ - // allow negative ? -> no - m_userScaleX = x; - m_userScaleY = y; - ComputeScaleAndOrigin(); -}; - -void wxDC::GetUserScale( double *x, double *y ) -{ - if (x) *x = m_userScaleX; - if (y) *y = m_userScaleY; -}; - -void wxDC::SetLogicalScale( double x, double y ) -{ - // allow negative ? - m_logicalScaleX = x; - m_logicalScaleY = y; - ComputeScaleAndOrigin(); -}; - -void wxDC::GetLogicalScale( double *x, double *y ) -{ - if (x) *x = m_logicalScaleX; - if (y) *y = m_logicalScaleY; -}; - -void wxDC::SetLogicalOrigin( long x, long y ) -{ - m_logicalOriginX = x * m_signX; // is this still correct ? - m_logicalOriginY = y * m_signY; - ComputeScaleAndOrigin(); -}; - -void wxDC::GetLogicalOrigin( long *x, long *y ) -{ - if (x) *x = m_logicalOriginX; - if (y) *y = m_logicalOriginY; -}; - -void wxDC::SetDeviceOrigin( long x, long y ) -{ - m_externalDeviceOriginX = x; - m_externalDeviceOriginY = y; - ComputeScaleAndOrigin(); -}; - -void wxDC::GetDeviceOrigin( long *x, long *y ) -{ -// if (x) *x = m_externalDeviceOriginX; -// if (y) *y = m_externalDeviceOriginY; - if (x) *x = m_deviceOriginX; - if (y) *y = m_deviceOriginY; -}; - -void wxDC::SetInternalDeviceOrigin( long x, long y ) -{ - m_internalDeviceOriginX = x; - m_internalDeviceOriginY = y; - ComputeScaleAndOrigin(); -}; - -void wxDC::GetInternalDeviceOrigin( long *x, long *y ) -{ - if (x) *x = m_internalDeviceOriginX; - if (y) *y = m_internalDeviceOriginY; -}; - -void wxDC::SetAxisOrientation( bool xLeftRight, bool yBottomUp ) -{ - m_signX = (xLeftRight ? 1 : -1); - m_signY = (yBottomUp ? -1 : 1); - ComputeScaleAndOrigin(); -}; - -long wxDC::DeviceToLogicalX(long x) const -{ - return XDEV2LOG(x); -}; - -long wxDC::DeviceToLogicalY(long y) const -{ - return YDEV2LOG(y); -}; - -long wxDC::DeviceToLogicalXRel(long x) const -{ - return XDEV2LOGREL(x); -}; - -long wxDC::DeviceToLogicalYRel(long y) const -{ - return YDEV2LOGREL(y); -}; - -long wxDC::LogicalToDeviceX(long x) const -{ - return XLOG2DEV(x); -}; - -long wxDC::LogicalToDeviceY(long y) const -{ - return YLOG2DEV(y); -}; - -long wxDC::LogicalToDeviceXRel(long x) const -{ - return XLOG2DEVREL(x); -}; - -long wxDC::LogicalToDeviceYRel(long y) const -{ - return YLOG2DEVREL(y); -}; - -void wxDC::CalcBoundingBox( long x, long y ) -{ - if (x < m_minX) m_minX = x; - if (y < m_minY) m_minY = y; - if (x > m_maxX) m_maxX = x; - if (y > m_maxY) m_maxY = y; -}; - -void wxDC::ComputeScaleAndOrigin(void) -{ - // CMB: copy scale to see if it changes - double origScaleX = m_scaleX; - double origScaleY = m_scaleY; - - m_scaleX = m_logicalScaleX * m_userScaleX; - m_scaleY = m_logicalScaleY * m_userScaleY; - - m_deviceOriginX = m_internalDeviceOriginX + m_externalDeviceOriginX; - m_deviceOriginY = m_internalDeviceOriginY + m_externalDeviceOriginY; - - // CMB: if scale has changed call SetPen to recalulate the line width - if (m_scaleX != origScaleX || m_scaleY != origScaleY) - { - // this is a bit artificial, but we need to force wxDC to think - // the pen has changed - wxPen* pen = & GetPen(); - wxPen tempPen; - m_pen = tempPen; - SetPen(* pen); - } -}; - diff --git a/src/mac/dcclient.cpp b/src/mac/dcclient.cpp deleted file mode 100644 index 925d9609ee..0000000000 --- a/src/mac/dcclient.cpp +++ /dev/null @@ -1,635 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcclient.cpp -// Purpose: wxClientDC class -// Author: AUTHOR -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dcclient.h" -#endif - -#include "wx/dcclient.h" -#include "wx/dcmemory.h" -#include "wx/region.h" -#include - -//----------------------------------------------------------------------------- -// constants -//----------------------------------------------------------------------------- - -#define RAD2DEG 57.2957795131 - -//----------------------------------------------------------------------------- -// wxPaintDC -//----------------------------------------------------------------------------- - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxWindowDC, wxDC) -IMPLEMENT_DYNAMIC_CLASS(wxClientDC, wxWindowDC) -IMPLEMENT_DYNAMIC_CLASS(wxPaintDC, wxWindowDC) -#endif - -/* - * wxWindowDC - */ - -wxWindowDC::wxWindowDC(void) -{ -}; - -wxWindowDC::wxWindowDC( wxWindow *window ) -{ -}; - -wxWindowDC::~wxWindowDC(void) -{ -}; - -void wxWindowDC::FloodFill( long WXUNUSED(x1), long WXUNUSED(y1), - const wxColour& WXUNUSED(col), int WXUNUSED(style) ) -{ -}; - -bool wxWindowDC::GetPixel( long WXUNUSED(x1), long WXUNUSED(y1), wxColour *WXUNUSED(col) ) const -{ - return FALSE; -}; - -void wxWindowDC::DrawLine( long x1, long y1, long x2, long y2 ) -{ - if (!Ok()) return; - -}; - -void wxWindowDC::CrossHair( long x, long y ) -{ - if (!Ok()) return; - -}; - -void wxWindowDC::DrawArc( long x1, long y1, long x2, long y2, long xc, long yc ) -{ - if (!Ok()) return; - - long xx1 = XLOG2DEV(x1); - long yy1 = YLOG2DEV(y1); - long xx2 = XLOG2DEV(x2); - long yy2 = YLOG2DEV(y2); - long xxc = XLOG2DEV((long)xc); - long yyc = YLOG2DEV((long)yc); - double dx = xx1 - xxc; - double dy = yy1 - yyc; - double radius = sqrt(dx*dx+dy*dy); - long r = (long)radius; - double radius1, radius2; - - if (xx1 == xx2 && yy1 == yy2) - { - radius1 = 0.0; - radius2 = 360.0; - } - else - if (radius == 0.0) - { - radius1 = radius2 = 0.0; - } - else - { - radius1 = (xx1 - xxc == 0) ? - (yy1 - yyc < 0) ? 90.0 : -90.0 : - -atan2(double(yy1-yyc), double(xx1-xxc)) * RAD2DEG; - radius2 = (xx2 - xxc == 0) ? - (yy2 - yyc < 0) ? 90.0 : -90.0 : - -atan2(double(yy2-yyc), double(xx2-xxc)) * RAD2DEG; - }; - long alpha1 = long(radius1 * 64.0); - long alpha2 = long((radius2 - radius1) * 64.0); - while (alpha2 <= 0) alpha2 += 360*64; - while (alpha1 > 360*64) alpha1 -= 360*64; - - if (m_brush.GetStyle() != wxTRANSPARENT) {}; - - if (m_pen.GetStyle() != wxTRANSPARENT) {}; - -}; - -void wxWindowDC::DrawEllipticArc( long x, long y, long width, long height, double sa, double ea ) -{ - if (!Ok()) return; - - long xx = XLOG2DEV(x); - long yy = YLOG2DEV(y); - long ww = m_signX * XLOG2DEVREL(width); - long hh = m_signY * YLOG2DEVREL(height); - - // CMB: handle -ve width and/or height - if (ww < 0) { ww = -ww; xx = xx - ww; } - if (hh < 0) { hh = -hh; yy = yy - hh; } - - long start = long(sa * 64.0); - long end = long(ea * 64.0); - if (m_brush.GetStyle() != wxTRANSPARENT) {}; - - if (m_pen.GetStyle() != wxTRANSPARENT) {}; -}; - -void wxWindowDC::DrawPoint( long x, long y ) -{ - if (!Ok()) return; - - if (m_pen.GetStyle() != wxTRANSPARENT) {}; -}; - -void wxWindowDC::DrawLines( int n, wxPoint points[], long xoffset, long yoffset ) -{ - if (!Ok()) return; - - if (m_pen.GetStyle() == wxTRANSPARENT) return; - - for (int i = 0; i < n-1; i++) - { - long x1 = XLOG2DEV(points[i].x + xoffset); - long x2 = XLOG2DEV(points[i+1].x + xoffset); - long y1 = YLOG2DEV(points[i].y + yoffset); // oh, what a waste - long y2 = YLOG2DEV(points[i+1].y + yoffset); - }; -}; - -void wxWindowDC::DrawLines( wxList *points, long xoffset, long yoffset ) -{ - if (!Ok()) return; - - if (m_pen.GetStyle() == wxTRANSPARENT) return; - - wxNode *node = points->First(); - while (node->Next()) - { - wxPoint *point = (wxPoint*)node->Data(); - wxPoint *npoint = (wxPoint*)node->Next()->Data(); - long x1 = XLOG2DEV(point->x + xoffset); - long x2 = XLOG2DEV(npoint->x + xoffset); - long y1 = YLOG2DEV(point->y + yoffset); // and again... - long y2 = YLOG2DEV(npoint->y + yoffset); - node = node->Next(); - }; -}; - -void wxWindowDC::DrawPolygon( int WXUNUSED(n), wxPoint WXUNUSED(points)[], - long WXUNUSED(xoffset), long WXUNUSED(yoffset), int WXUNUSED(fillStyle) ) -{ - if (!Ok()) return; -}; - -void wxWindowDC::DrawPolygon( wxList *WXUNUSED(lines), long WXUNUSED(xoffset), - long WXUNUSED(yoffset), int WXUNUSED(fillStyle) ) -{ - if (!Ok()) return; -}; - -void wxWindowDC::DrawRectangle( long x, long y, long width, long height ) -{ - if (!Ok()) return; - - long xx = XLOG2DEV(x); - long yy = YLOG2DEV(y); - long ww = m_signX * XLOG2DEVREL(width); - long hh = m_signY * YLOG2DEVREL(height); - - // CMB: draw nothing if transformed w or h is 0 - if (ww == 0 || hh == 0) return; - - // CMB: handle -ve width and/or height - if (ww < 0) { ww = -ww; xx = xx - ww; } - if (hh < 0) { hh = -hh; yy = yy - hh; } - - if (m_brush.GetStyle() != wxTRANSPARENT) {}; - - if (m_pen.GetStyle() != wxTRANSPARENT) {}; -}; - -void wxWindowDC::DrawRoundedRectangle( long x, long y, long width, long height, double radius ) -{ - if (!Ok()) return; - - if (radius < 0.0) radius = - radius * ((width < height) ? width : height); - - long xx = XLOG2DEV(x); - long yy = YLOG2DEV(y); - long ww = m_signX * XLOG2DEVREL(width); - long hh = m_signY * YLOG2DEVREL(height); - long rr = XLOG2DEVREL((long)radius); - - // CMB: handle -ve width and/or height - if (ww < 0) { ww = -ww; xx = xx - ww; } - if (hh < 0) { hh = -hh; yy = yy - hh; } - - // CMB: if radius is zero use DrawRectangle() instead to avoid - // X drawing errors with small radii - if (rr == 0) - { - DrawRectangle( x, y, width, height ); - return; - } - - // CMB: draw nothing if transformed w or h is 0 - if (ww == 0 || hh == 0) return; - - // CMB: adjust size if outline is drawn otherwise the result is - // 1 pixel too wide and high - if (m_pen.GetStyle() != wxTRANSPARENT) - { - ww--; - hh--; - } - - // CMB: ensure dd is not larger than rectangle otherwise we - // get an hour glass shape - long dd = 2 * rr; - if (dd > ww) dd = ww; - if (dd > hh) dd = hh; - rr = dd / 2; - - if (m_brush.GetStyle() != wxTRANSPARENT) - { - }; - - if (m_pen.GetStyle() != wxTRANSPARENT) - { - }; -}; - -void wxWindowDC::DrawEllipse( long x, long y, long width, long height ) -{ - if (!Ok()) return; - - long xx = XLOG2DEV(x); - long yy = YLOG2DEV(y); - long ww = m_signX * XLOG2DEVREL(width); - long hh = m_signY * YLOG2DEVREL(height); - - // CMB: handle -ve width and/or height - if (ww < 0) { ww = -ww; xx = xx - ww; } - if (hh < 0) { hh = -hh; yy = yy - hh; } - - if (m_brush.GetStyle() != wxTRANSPARENT) {}; - - if (m_pen.GetStyle() != wxTRANSPARENT) {}; -}; - -bool wxWindowDC::CanDrawBitmap(void) const -{ - return TRUE; -}; - -void wxWindowDC::DrawIcon( const wxIcon &icon, long x, long y, bool useMask ) -{ - if (!Ok()) return; - - if (!icon.Ok()) return; - - int xx = XLOG2DEV(x); - int yy = YLOG2DEV(y); - -}; - -bool wxWindowDC::Blit( long xdest, long ydest, long width, long height, - wxDC *source, long xsrc, long ysrc, int WXUNUSED(logical_func), bool WXUNUSED(useMask) ) -{ - if (!Ok()) return FALSE; - - // CMB 20/5/98: add blitting of bitmaps - if (source->IsKindOf(CLASSINFO(wxMemoryDC))) - { - wxMemoryDC* srcDC = (wxMemoryDC*)source; - /* - GdkBitmap* bmap = srcDC->m_selected.GetBitmap(); - if (bmap) - { - gdk_draw_bitmap ( - m_window, - m_textGC, - bmap, - source->DeviceToLogicalX(xsrc), source->DeviceToLogicalY(ysrc), - XLOG2DEV(xdest), YLOG2DEV(ydest), - source->DeviceToLogicalXRel(width), source->DeviceToLogicalYRel(height) - ); - return TRUE; - } - */ - } - - return TRUE; -}; - -void wxWindowDC::DrawText( const wxString &text, long x, long y, bool -WXUNUSED(use16) ) -{ - if (!Ok()) return; - -}; - - - -bool wxWindowDC::CanGetTextExtent(void) const -{ - return TRUE; -}; - -void wxWindowDC::GetTextExtent( const wxString &string, long *width, long *height, - long *WXUNUSED(descent), long *WXUNUSED(externalLeading), - wxFont *WXUNUSED(theFont), bool WXUNUSED(use16) ) -{ - if (!Ok()) return; - -}; - -long wxWindowDC::GetCharWidth(void) -{ - if (!Ok()) return 0; - return 0; -}; - -long wxWindowDC::GetCharHeight(void) -{ - if (!Ok()) return 0; - return 0; -}; - -void wxWindowDC::Clear(void) -{ - if (!Ok()) return; - -}; - -void wxWindowDC::SetFont( const wxFont &font ) -{ - if (!Ok()) return; - - m_font = font; -}; - -void wxWindowDC::SetPen( const wxPen &pen ) -{ - if (!Ok()) return; - - if (m_pen == pen) return; - - m_pen = pen; - - if (!m_pen.Ok()) return; -}; - -void wxWindowDC::SetBrush( const wxBrush &brush ) -{ - if (!Ok()) return; - - if (m_brush == brush) return; - - m_brush = brush; - - if (!m_brush.Ok()) return; - -}; - -void wxWindowDC::SetBackground( const wxBrush &brush ) -{ - if (!Ok()) return; - - if (m_backgroundBrush == brush) return; - - m_backgroundBrush = brush; - - if (!m_backgroundBrush.Ok()) return; - -}; - -void wxWindowDC::SetLogicalFunction( int function ) -{ - if (m_logicalFunction == function) return; -}; - -void wxWindowDC::SetTextForeground( const wxColour &col ) -{ - if (!Ok()) return; - - if (m_textForegroundColour == col) return; - - m_textForegroundColour = col; - if (!m_textForegroundColour.Ok()) return; -}; - -void wxWindowDC::SetTextBackground( const wxColour &col ) -{ - if (!Ok()) return; - - if (m_textBackgroundColour == col) return; - - m_textBackgroundColour = col; - if (!m_textBackgroundColour.Ok()) return; -}; - -void wxWindowDC::SetBackgroundMode( int mode ) -{ - m_backgroundMode = mode; - - if (m_brush.GetStyle() != wxSOLID && m_brush.GetStyle() != wxTRANSPARENT) - { - } -}; - -void wxWindowDC::SetPalette( const wxPalette& WXUNUSED(palette) ) -{ -}; - -void wxWindowDC::SetClippingRegion( long x, long y, long width, long height ) -{ - wxDC::SetClippingRegion( x, y, width, height ); - - // TODO - -}; - -void wxWindowDC::SetClippingRegion( const wxRegion& region ) -{ - wxRect box = region.GetBox(); - - wxDC::SetClippingRegion( box.x, box.y, box.width, box.height ); - - // TODO -} - -void wxWindowDC::DestroyClippingRegion(void) -{ - wxDC::DestroyClippingRegion(); - -}; - -// ----------------------------------- spline code ---------------------------------------- - -void wx_quadratic_spline(double a1, double b1, double a2, double b2, - double a3, double b3, double a4, double b4); -void wx_clear_stack(void); -int wx_spline_pop(double *x1, double *y1, double *x2, double *y2, double *x3, - double *y3, double *x4, double *y4); -void wx_spline_push(double x1, double y1, double x2, double y2, double x3, double y3, - double x4, double y4); -static bool wx_spline_add_point(double x, double y); -static void wx_spline_draw_point_array(wxDC *dc); - -wxList wx_spline_point_list; - -#define half(z1, z2) ((z1+z2)/2.0) -#define THRESHOLD 5 - -/* iterative version */ - -void wx_quadratic_spline(double a1, double b1, double a2, double b2, double a3, double b3, double a4, - double b4) -{ - register double xmid, ymid; - double x1, y1, x2, y2, x3, y3, x4, y4; - - wx_clear_stack(); - wx_spline_push(a1, b1, a2, b2, a3, b3, a4, b4); - - while (wx_spline_pop(&x1, &y1, &x2, &y2, &x3, &y3, &x4, &y4)) { - xmid = (double)half(x2, x3); - ymid = (double)half(y2, y3); - if (fabs(x1 - xmid) < THRESHOLD && fabs(y1 - ymid) < THRESHOLD && - fabs(xmid - x4) < THRESHOLD && fabs(ymid - y4) < THRESHOLD) { - wx_spline_add_point( x1, y1 ); - wx_spline_add_point( xmid, ymid ); - } else { - wx_spline_push(xmid, ymid, (double)half(xmid, x3), (double)half(ymid, y3), - (double)half(x3, x4), (double)half(y3, y4), x4, y4); - wx_spline_push(x1, y1, (double)half(x1, x2), (double)half(y1, y2), - (double)half(x2, xmid), (double)half(y2, ymid), xmid, ymid); - } - } -} - -/* utilities used by spline drawing routines */ - -typedef struct wx_spline_stack_struct { - double x1, y1, x2, y2, x3, y3, x4, y4; -} Stack; - -#define SPLINE_STACK_DEPTH 20 -static Stack wx_spline_stack[SPLINE_STACK_DEPTH]; -static Stack *wx_stack_top; -static int wx_stack_count; - -void wx_clear_stack(void) -{ - wx_stack_top = wx_spline_stack; - wx_stack_count = 0; -} - -void wx_spline_push(double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4) -{ - wx_stack_top->x1 = x1; - wx_stack_top->y1 = y1; - wx_stack_top->x2 = x2; - wx_stack_top->y2 = y2; - wx_stack_top->x3 = x3; - wx_stack_top->y3 = y3; - wx_stack_top->x4 = x4; - wx_stack_top->y4 = y4; - wx_stack_top++; - wx_stack_count++; -} - -int wx_spline_pop(double *x1, double *y1, double *x2, double *y2, - double *x3, double *y3, double *x4, double *y4) -{ - if (wx_stack_count == 0) - return (0); - wx_stack_top--; - wx_stack_count--; - *x1 = wx_stack_top->x1; - *y1 = wx_stack_top->y1; - *x2 = wx_stack_top->x2; - *y2 = wx_stack_top->y2; - *x3 = wx_stack_top->x3; - *y3 = wx_stack_top->y3; - *x4 = wx_stack_top->x4; - *y4 = wx_stack_top->y4; - return (1); -} - -static bool wx_spline_add_point(double x, double y) -{ - wxPoint *point = new wxPoint ; - point->x = (int) x; - point->y = (int) y; - wx_spline_point_list.Append((wxObject*)point); - return TRUE; -} - -static void wx_spline_draw_point_array(wxDC *dc) -{ - dc->DrawLines(&wx_spline_point_list, 0, 0 ); - wxNode *node = wx_spline_point_list.First(); - while (node) - { - wxPoint *point = (wxPoint *)node->Data(); - delete point; - delete node; - node = wx_spline_point_list.First(); - } -} - -void wxWindowDC::DrawSpline( wxList *points ) -{ - wxPoint *p; - double cx1, cy1, cx2, cy2, cx3, cy3, cx4, cy4; - double x1, y1, x2, y2; - - wxNode *node = points->First(); - p = (wxPoint *)node->Data(); - - x1 = p->x; - y1 = p->y; - - node = node->Next(); - p = (wxPoint *)node->Data(); - - x2 = p->x; - y2 = p->y; - cx1 = (double)((x1 + x2) / 2); - cy1 = (double)((y1 + y2) / 2); - cx2 = (double)((cx1 + x2) / 2); - cy2 = (double)((cy1 + y2) / 2); - - wx_spline_add_point(x1, y1); - - while ((node = node->Next()) != NULL) - { - p = (wxPoint *)node->Data(); - x1 = x2; - y1 = y2; - x2 = p->x; - y2 = p->y; - cx4 = (double)(x1 + x2) / 2; - cy4 = (double)(y1 + y2) / 2; - cx3 = (double)(x1 + cx4) / 2; - cy3 = (double)(y1 + cy4) / 2; - - wx_quadratic_spline(cx1, cy1, cx2, cy2, cx3, cy3, cx4, cy4); - - cx1 = cx4; - cy1 = cy4; - cx2 = (double)(cx1 + x2) / 2; - cy2 = (double)(cy1 + y2) / 2; - } - - wx_spline_add_point( cx1, cy1 ); - wx_spline_add_point( x2, y2 ); - - wx_spline_draw_point_array( this ); -}; diff --git a/src/mac/dcmemory.cpp b/src/mac/dcmemory.cpp deleted file mode 100644 index 7cbd330821..0000000000 --- a/src/mac/dcmemory.cpp +++ /dev/null @@ -1,64 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcmemory.cpp -// Purpose: wxMemoryDC class -// Author: AUTHOR -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dcmemory.h" -#endif - -#include "wx/dcmemory.h" - -//----------------------------------------------------------------------------- -// wxMemoryDC -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxMemoryDC,wxPaintDC) - -wxMemoryDC::wxMemoryDC(void) -{ - m_ok = FALSE; -}; - -wxMemoryDC::wxMemoryDC( wxDC *WXUNUSED(dc) ) -{ - m_ok = FALSE; -}; - -wxMemoryDC::~wxMemoryDC(void) -{ -}; - -void wxMemoryDC::SelectObject( const wxBitmap& bitmap ) -{ - m_selected = bitmap; - if (m_selected.Ok()) - { - } - else - { - m_ok = FALSE; - }; -}; - -void wxMemoryDC::GetSize( int *width, int *height ) const -{ - if (m_selected.Ok()) - { - if (width) (*width) = m_selected.GetWidth(); - if (height) (*height) = m_selected.GetHeight(); - } - else - { - if (width) (*width) = 0; - if (height) (*height) = 0; - }; -}; - - diff --git a/src/mac/dcscreen.cpp b/src/mac/dcscreen.cpp deleted file mode 100644 index e03bbac0c8..0000000000 --- a/src/mac/dcscreen.cpp +++ /dev/null @@ -1,32 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcscreen.cpp -// Purpose: wxScreenDC class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dcscreen.h" -#endif - -#include "wx/dcscreen.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxScreenDC, wxWindowDC) -#endif - -// Create a DC representing the whole screen -wxScreenDC::wxScreenDC() -{ - // TODO -} - -wxScreenDC::~wxScreenDC() -{ - // TODO -} - diff --git a/src/mac/dialog.cpp b/src/mac/dialog.cpp deleted file mode 100644 index 7d6d99744d..0000000000 --- a/src/mac/dialog.cpp +++ /dev/null @@ -1,287 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dialog.cpp -// Purpose: wxDialog class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dialog.h" -#endif - -#include "wx/dialog.h" -#include "wx/utils.h" -#include "wx/frame.h" -#include "wx/app.h" -#include "wx/settings.h" - -// Lists to keep track of windows, so we can disable/enable them -// for modal dialogs -wxList wxModalDialogs; -wxList wxModelessWindows; // Frames and modeless dialogs -extern wxList wxPendingDelete; - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxDialog, wxPanel) - -BEGIN_EVENT_TABLE(wxDialog, wxPanel) - EVT_BUTTON(wxID_OK, wxDialog::OnOK) - EVT_BUTTON(wxID_APPLY, wxDialog::OnApply) - EVT_BUTTON(wxID_CANCEL, wxDialog::OnCancel) - EVT_CHAR_HOOK(wxDialog::OnCharHook) - EVT_SYS_COLOUR_CHANGED(wxDialog::OnSysColourChanged) - EVT_CLOSE(wxDialog::OnCloseWindow) -END_EVENT_TABLE() - -#endif - -wxDialog::wxDialog() -{ - SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE)); -} - -bool wxDialog::Create(wxWindow *parent, wxWindowID id, - const wxString& title, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - m_windowStyle = style; - - SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE)); - SetName(name); - - if (!parent) - wxTopLevelWindows.Append(this); - - if (parent) parent->AddChild(this); - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - // TODO: create dialog - - return FALSE; -} - -void wxDialog::SetModal(bool flag) -{ - if ( flag ) - m_windowStyle |= wxDIALOG_MODAL ; - else - if ( m_windowStyle & wxDIALOG_MODAL ) - m_windowStyle -= wxDIALOG_MODAL ; - - wxModelessWindows.DeleteObject(this); - if (!flag) - wxModelessWindows.Append(this); -} - -wxDialog::~wxDialog() -{ - // TODO - wxTopLevelWindows.DeleteObject(this); - - if ( (GetWindowStyleFlag() & wxDIALOG_MODAL) != wxDIALOG_MODAL ) - wxModelessWindows.DeleteObject(this); - - // If this is the last top-level window, exit. - if (wxTheApp && (wxTopLevelWindows.Number() == 0)) - { - wxTheApp->SetTopWindow(NULL); - - if (wxTheApp->GetExitOnFrameDelete()) - { - // TODO: exit - } - } -} - -// By default, pressing escape cancels the dialog -void wxDialog::OnCharHook(wxKeyEvent& event) -{ - if (event.m_keyCode == WXK_ESCAPE) - { - // Behaviour changed in 2.0: we'll send a Cancel message - // to the dialog instead of Close. - wxCommandEvent cancelEvent(wxEVT_COMMAND_BUTTON_CLICKED, wxID_CANCEL); - cancelEvent.SetEventObject( this ); - GetEventHandler()->ProcessEvent(cancelEvent); - - return; - } - // We didn't process this event. - event.Skip(); -} - -void wxDialog::Iconize(bool WXUNUSED(iconize)) -{ - // TODO -} - -bool wxDialog::IsIconized() const -{ - // TODO - return FALSE; -} - -void wxDialog::SetClientSize(int width, int height) -{ - // TODO -} - -void wxDialog::GetPosition(int *x, int *y) const -{ - // TODO -} - -bool wxDialog::Show(bool show) -{ - // TODO - return FALSE; -} - -void wxDialog::SetTitle(const wxString& title) -{ - // TODO -} - -wxString wxDialog::GetTitle() const -{ - // TODO - return wxString(""); -} - -void wxDialog::Centre(int direction) -{ - int x_offset,y_offset ; - int display_width, display_height; - int width, height, x, y; - wxWindow *parent = GetParent(); - if ((direction & wxCENTER_FRAME) && parent) - { - parent->GetPosition(&x_offset,&y_offset) ; - parent->GetSize(&display_width,&display_height) ; - } - else - { - wxDisplaySize(&display_width, &display_height); - x_offset = 0 ; - y_offset = 0 ; - } - - GetSize(&width, &height); - GetPosition(&x, &y); - - if (direction & wxHORIZONTAL) - x = (int)((display_width - width)/2); - if (direction & wxVERTICAL) - y = (int)((display_height - height)/2); - - SetSize(x+x_offset, y+y_offset, width, height); -} - -// Replacement for Show(TRUE) for modal dialogs - returns return code -int wxDialog::ShowModal() -{ - m_windowStyle |= wxDIALOG_MODAL; - // TODO: modal showing - Show(TRUE); - return GetReturnCode(); -} - -void wxDialog::EndModal(int retCode) -{ - SetReturnCode(retCode); - // TODO modal un-showing - Show(FALSE); -} - -// Standard buttons -void wxDialog::OnOK(wxCommandEvent& event) -{ - if ( Validate() && TransferDataFromWindow() ) - { - if ( IsModal() ) - EndModal(wxID_OK); - else - { - SetReturnCode(wxID_OK); - this->Show(FALSE); - } - } -} - -void wxDialog::OnApply(wxCommandEvent& event) -{ - if (Validate()) - TransferDataFromWindow(); - // TODO probably need to disable the Apply button until things change again -} - -void wxDialog::OnCancel(wxCommandEvent& event) -{ - if ( IsModal() ) - EndModal(wxID_CANCEL); - else - { - SetReturnCode(wxID_CANCEL); - this->Show(FALSE); - } -} - -bool wxDialog::OnClose() -{ - // Behaviour changed in 2.0: we'll send a Cancel message by default, - // which may close the dialog. - // Check for looping if the Cancel event handler calls Close() - - static wxList closing; - - if ( closing.Member(this) ) - return FALSE; - - closing.Append(this); - - wxCommandEvent cancelEvent(wxEVT_COMMAND_BUTTON_CLICKED, wxID_CANCEL); - cancelEvent.SetEventObject( this ); - GetEventHandler()->ProcessEvent(cancelEvent); - - closing.DeleteObject(this); - - return FALSE; -} - -void wxDialog::OnCloseWindow(wxCloseEvent& event) -{ - // Compatibility - if ( GetEventHandler()->OnClose() || event.GetForce()) - { - this->Destroy(); - } -} - -// Destroy the window (delayed, if a managed window) -bool wxDialog::Destroy() -{ - if (!wxPendingDelete.Member(this)) - wxPendingDelete.Append(this); - return TRUE; -} - -void wxDialog::OnSysColourChanged(wxSysColourChangedEvent& event) -{ - SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE)); - Refresh(); -} - -void wxDialog::Fit() -{ -} diff --git a/src/mac/dirdlg.cpp b/src/mac/dirdlg.cpp deleted file mode 100644 index 095621b978..0000000000 --- a/src/mac/dirdlg.cpp +++ /dev/null @@ -1,42 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dirdlg.cpp -// Purpose: wxDirDialog -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dirdlg.h" -#endif - -#include "wx/defs.h" -#include "wx/utils.h" -#include "wx/dialog.h" -#include "wx/dirdlg.h" - -#include "wx/cmndata.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_CLASS(wxDirDialog, wxDialog) -#endif - -wxDirDialog::wxDirDialog(wxWindow *parent, const wxString& message, - const wxString& defaultPath, - long style, const wxPoint& pos) -{ - m_message = message; - m_dialogStyle = style; - m_parent = parent; - m_path = defaultPath; -} - -int wxDirDialog::ShowModal() -{ - // TODO - return wxID_CANCEL; -} - diff --git a/src/mac/dnd.cpp b/src/mac/dnd.cpp deleted file mode 100644 index 32088eef0f..0000000000 --- a/src/mac/dnd.cpp +++ /dev/null @@ -1,133 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: dnd.cpp -// Purpose: wxDropTarget, wxDropSource, wxDataObject implementation -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 AUTHOR -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dnd.h" -#endif - -#include "wx/dnd.h" -#include "wx/window.h" -#include "wx/app.h" -#include "wx/gdicmn.h" - -// ---------------------------------------------------------------------------- -// global -// ---------------------------------------------------------------------------- - -// ---------------------------------------------------------------------------- -// wxDropTarget -// ---------------------------------------------------------------------------- - -wxDropTarget::wxDropTarget() -{ -}; - -wxDropTarget::~wxDropTarget() -{ -}; - -// ---------------------------------------------------------------------------- -// wxTextDropTarget -// ---------------------------------------------------------------------------- - -bool wxTextDropTarget::OnDrop( long x, long y, const void *pData ) -{ - OnDropText( x, y, (const char*)pData ); - return TRUE; -}; - -bool wxTextDropTarget::OnDropText( long x, long y, const char *psz ) -{ - printf( "Got dropped text: %s.\n", psz ); - printf( "At x: %d, y: %d.\n", (int)x, (int)y ); - return TRUE; -}; - -size_t wxTextDropTarget::GetFormatCount() const -{ - return 1; -} - -wxDataFormat wxTextDropTarget::GetFormat(size_t WXUNUSED(n)) const -{ - return wxDF_TEXT; -} - -// ---------------------------------------------------------------------------- -// wxFileDropTarget -// ---------------------------------------------------------------------------- - -bool wxFileDropTarget::OnDropFiles( long x, long y, size_t nFiles, const char * const WXUNUSED(aszFiles)[] ) -{ - printf( "Got %d dropped files.\n", (int)nFiles ); - printf( "At x: %d, y: %d.\n", (int)x, (int)y ); - return TRUE; -} - -bool wxFileDropTarget::OnDrop(long x, long y, const void *WXUNUSED(pData) ) -{ - char *str = "/this/is/a/path.txt"; - - return OnDropFiles(x, y, 1, &str ); -} - -size_t wxFileDropTarget::GetFormatCount() const -{ - return 1; -} - -wxDataFormat wxFileDropTarget::GetFormat(size_t WXUNUSED(n)) const -{ - return wxDF_FILENAME; -} - -//------------------------------------------------------------------------- -// wxDropSource -//------------------------------------------------------------------------- - -//----------------------------------------------------------------------------- -// drag request - -wxDropSource::wxDropSource( wxWindow *win ) -{ - // TODO - // m_window = win; - m_data = NULL; - - // m_defaultCursor = wxCursor( wxCURSOR_NO_ENTRY ); - // m_goaheadCursor = wxCursor( wxCURSOR_HAND ); -}; - -wxDropSource::wxDropSource( wxDataObject &data, wxWindow *win ) -{ - // TODO - // m_window = win; - m_data = &data; - - // m_defaultCursor = wxCursor( wxCURSOR_NO_ENTRY ); - // m_goaheadCursor = wxCursor( wxCURSOR_HAND ); -}; - -void wxDropSource::SetData( wxDataObject &data ) -{ - m_data = &data; -}; - -wxDropSource::~wxDropSource(void) -{ -}; - -wxDragResult wxDropSource::DoDragDrop( bool WXUNUSED(bAllowMove) ) -{ - // TODO - return wxDragError; -}; - diff --git a/src/mac/filedlg.cpp b/src/mac/filedlg.cpp deleted file mode 100644 index 2aeffdf926..0000000000 --- a/src/mac/filedlg.cpp +++ /dev/null @@ -1,143 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: filedlg.cpp -// Purpose: wxFileDialog -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "filedlg.h" -#endif - -#include "wx/defs.h" -#include "wx/utils.h" -#include "wx/dialog.h" -#include "wx/filedlg.h" -#include "wx/intl.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_CLASS(wxFileDialog, wxDialog) -#endif - -char *wxFileSelector(const char *title, - const char *defaultDir, const char *defaultFileName, - const char *defaultExtension, const char *filter, int flags, - wxWindow *parent, int x, int y) -{ - // If there's a default extension specified but no filter, we create a suitable - // filter. - - wxString filter2(""); - if ( defaultExtension && !filter ) - filter2 = wxString("*.") + wxString(defaultExtension) ; - else if ( filter ) - filter2 = filter; - - wxString defaultDirString; - if (defaultDir) - defaultDirString = defaultDir; - else - defaultDirString = ""; - - wxString defaultFilenameString; - if (defaultFileName) - defaultFilenameString = defaultFileName; - else - defaultFilenameString = ""; - - wxFileDialog fileDialog(parent, title, defaultDirString, defaultFilenameString, filter2, flags, wxPoint(x, y)); - - if ( fileDialog.ShowModal() == wxID_OK ) - { - strcpy(wxBuffer, (const char *)fileDialog.GetPath()); - return wxBuffer; - } - else - return NULL; -} - -char *wxFileSelectorEx(const char *title, - const char *defaultDir, - const char *defaultFileName, - int* defaultFilterIndex, - const char *filter, - int flags, - wxWindow* parent, - int x, - int y) - -{ - wxFileDialog fileDialog(parent, title ? title : "", defaultDir ? defaultDir : "", - defaultFileName ? defaultFileName : "", filter ? filter : "", flags, wxPoint(x, y)); - - if ( fileDialog.ShowModal() == wxID_OK ) - { - *defaultFilterIndex = fileDialog.GetFilterIndex(); - strcpy(wxBuffer, (const char *)fileDialog.GetPath()); - return wxBuffer; - } - else - return NULL; -} - -wxFileDialog::wxFileDialog(wxWindow *parent, const wxString& message, - const wxString& defaultDir, const wxString& defaultFileName, const wxString& wildCard, - long style, const wxPoint& pos) -{ - m_message = message; - m_dialogStyle = style; - m_parent = parent; - m_path = ""; - m_fileName = defaultFileName; - m_dir = defaultDir; - m_wildCard = wildCard; - m_filterIndex = 1; -} - -int wxFileDialog::ShowModal() -{ - // TODO - return wxID_CANCEL; -} - -// Generic file load/save dialog -static char * -wxDefaultFileSelector(bool load, const char *what, const char *extension, const char *default_name, wxWindow *parent) -{ - char *ext = (char *)extension; - - char prompt[50]; - wxString str; - if (load) - str = "Load %s file"; - else - str = "Save %s file"; - sprintf(prompt, wxGetTranslation(str), what); - - if (*ext == '.') ext++; - char wild[60]; - sprintf(wild, "*.%s", ext); - - return wxFileSelector (prompt, NULL, default_name, ext, wild, 0, parent); -} - -// Generic file load dialog -char * -wxLoadFileSelector(const char *what, const char *extension, const char *default_name, wxWindow *parent) -{ - return wxDefaultFileSelector(TRUE, what, extension, default_name, parent); -} - - -// Generic file save dialog -char * -wxSaveFileSelector(const char *what, const char *extension, const char *default_name, wxWindow *parent) -{ - return wxDefaultFileSelector(FALSE, what, extension, default_name, parent); -} - - diff --git a/src/mac/font.cpp b/src/mac/font.cpp deleted file mode 100644 index 493a6a25ba..0000000000 --- a/src/mac/font.cpp +++ /dev/null @@ -1,244 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: font.cpp -// Purpose: wxFont class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "font.h" -#endif - -#include "wx/defs.h" -#include "wx/string.h" -#include "wx/font.h" -#include "wx/gdicmn.h" - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxFont, wxGDIObject) -#endif - -wxFontRefData::wxFontRefData() -{ - m_style = 0; - m_pointSize = 0; - m_family = 0; - m_style = 0; - m_weight = 0; - m_underlined = 0; - m_faceName = ""; -/* TODO - m_hFont = 0; -*/ -} - -wxFontRefData::wxFontRefData(const wxFontRefData& data) -{ - m_style = data.m_style; - m_pointSize = data.m_pointSize; - m_family = data.m_family; - m_style = data.m_style; - m_weight = data.m_weight; - m_underlined = data.m_underlined; - m_faceName = data.m_faceName; -/* TODO - m_hFont = 0; -*/ -} - -wxFontRefData::~wxFontRefData() -{ - // TODO: delete font data -} - -wxFont::wxFont() -{ - if ( wxTheFontList ) - wxTheFontList->Append(this); -} - -wxFont::wxFont(int pointSize, int family, int style, int weight, bool underlined, const wxString& faceName) -{ - Create(pointSize, family, style, weight, underlined, faceName); - - if ( wxTheFontList ) - wxTheFontList->Append(this); -} - -bool wxFont::Create(int pointSize, int family, int style, int weight, bool underlined, const wxString& faceName) -{ - UnRef(); - m_refData = new wxFontRefData; - - M_FONTDATA->m_family = family; - M_FONTDATA->m_style = style; - M_FONTDATA->m_weight = weight; - M_FONTDATA->m_pointSize = pointSize; - M_FONTDATA->m_underlined = underlined; - M_FONTDATA->m_faceName = faceName; - - RealizeResource(); - - return TRUE; -} - -wxFont::~wxFont() -{ - if (wxTheFontList) - wxTheFontList->DeleteObject(this); -} - -bool wxFont::RealizeResource() -{ - // TODO: create the font (if there is a native font object) - return FALSE; -} - -void wxFont::Unshare() -{ - // Don't change shared data - if (!m_refData) - { - m_refData = new wxFontRefData(); - } - else - { - wxFontRefData* ref = new wxFontRefData(*(wxFontRefData*)m_refData); - UnRef(); - m_refData = ref; - } -} - -void wxFont::SetPointSize(int pointSize) -{ - Unshare(); - - M_FONTDATA->m_pointSize = pointSize; - - RealizeResource(); -} - -void wxFont::SetFamily(int family) -{ - Unshare(); - - M_FONTDATA->m_family = family; - - RealizeResource(); -} - -void wxFont::SetStyle(int style) -{ - Unshare(); - - M_FONTDATA->m_style = style; - - RealizeResource(); -} - -void wxFont::SetWeight(int weight) -{ - Unshare(); - - M_FONTDATA->m_weight = weight; - - RealizeResource(); -} - -void wxFont::SetFaceName(const wxString& faceName) -{ - Unshare(); - - M_FONTDATA->m_faceName = faceName; - - RealizeResource(); -} - -void wxFont::SetUnderlined(bool underlined) -{ - Unshare(); - - M_FONTDATA->m_underlined = underlined; - - RealizeResource(); -} - -wxString wxFont::GetFamilyString() const -{ - wxString fam(""); - switch (GetFamily()) - { - case wxDECORATIVE: - fam = "wxDECORATIVE"; - break; - case wxROMAN: - fam = "wxROMAN"; - break; - case wxSCRIPT: - fam = "wxSCRIPT"; - break; - case wxSWISS: - fam = "wxSWISS"; - break; - case wxMODERN: - fam = "wxMODERN"; - break; - case wxTELETYPE: - fam = "wxTELETYPE"; - break; - default: - fam = "wxDEFAULT"; - break; - } - return fam; -} - -/* New font system */ -wxString wxFont::GetFaceName() const -{ - wxString str(""); - if (M_FONTDATA) - str = M_FONTDATA->m_faceName ; - return str; -} - -wxString wxFont::GetStyleString() const -{ - wxString styl(""); - switch (GetStyle()) - { - case wxITALIC: - styl = "wxITALIC"; - break; - case wxSLANT: - styl = "wxSLANT"; - break; - default: - styl = "wxNORMAL"; - break; - } - return styl; -} - -wxString wxFont::GetWeightString() const -{ - wxString w(""); - switch (GetWeight()) - { - case wxBOLD: - w = "wxBOLD"; - break; - case wxLIGHT: - w = "wxLIGHT"; - break; - default: - w = "wxNORMAL"; - break; - } - return w; -} - diff --git a/src/mac/fontdlg.cpp b/src/mac/fontdlg.cpp deleted file mode 100644 index 60e8e9b987..0000000000 --- a/src/mac/fontdlg.cpp +++ /dev/null @@ -1,55 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: fontdlg.cpp -// Purpose: wxFontDialog class. NOTE: you can use the generic class -// if you wish, instead of implementing this. -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "fontdlg.h" -#endif - -#include "wx/stubs/fontdlg.h" -#include "wx/cmndata.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxFontDialog, wxDialog) -#endif - -/* - * wxFontDialog - */ - -wxFontDialog::wxFontDialog() -{ - m_dialogParent = NULL; -} - -wxFontDialog::wxFontDialog(wxWindow *parent, wxFontData *data) -{ - Create(parent, data); -} - -bool wxFontDialog::Create(wxWindow *parent, wxFontData *data) -{ - m_dialogParent = parent; - - if (data) - m_fontData = *data; - - // TODO: you may need to do dialog creation here, unless it's - // done in ShowModal. - return TRUE; -} - -int wxFontDialog::ShowModal() -{ - // TODO: show (maybe create) the dialog - return wxID_CANCEL; -} - diff --git a/src/mac/frame.cpp b/src/mac/frame.cpp deleted file mode 100644 index 1e8c9e9ae5..0000000000 --- a/src/mac/frame.cpp +++ /dev/null @@ -1,571 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: frame.cpp -// Purpose: wxFrame -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "frame.h" -#endif - -#include "wx/frame.h" -#include "wx/statusbr.h" -#include "wx/toolbar.h" -#include "wx/menuitem.h" -#include "wx/menu.h" -#include "wx/dcclient.h" -#include "wx/dialog.h" -#include "wx/settings.h" -#include "wx/app.h" - -extern wxList wxModelessWindows; -extern wxList wxPendingDelete; - -#if !USE_SHARED_LIBRARY -BEGIN_EVENT_TABLE(wxFrame, wxWindow) - EVT_SIZE(wxFrame::OnSize) - EVT_ACTIVATE(wxFrame::OnActivate) - EVT_MENU_HIGHLIGHT_ALL(wxFrame::OnMenuHighlight) - EVT_SYS_COLOUR_CHANGED(wxFrame::OnSysColourChanged) - EVT_IDLE(wxFrame::OnIdle) - EVT_CLOSE(wxFrame::OnCloseWindow) -END_EVENT_TABLE() - -IMPLEMENT_DYNAMIC_CLASS(wxFrame, wxWindow) -#endif - -#if wxUSE_NATIVE_STATUSBAR -bool wxFrame::m_useNativeStatusBar = TRUE; -#else -bool wxFrame::m_useNativeStatusBar = FALSE; -#endif - -wxFrame::wxFrame() -{ - m_frameToolBar = NULL ; - m_frameMenuBar = NULL; - m_frameStatusBar = NULL; - - m_windowParent = NULL; - m_iconized = FALSE; -} - -bool wxFrame::Create(wxWindow *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - if (!parent) - wxTopLevelWindows.Append(this); - - SetName(name); - m_windowStyle = style; - m_frameMenuBar = NULL; - m_frameToolBar = NULL ; - m_frameStatusBar = NULL; - - SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE)); - - if ( id > -1 ) - m_windowId = id; - else - m_windowId = (int)NewControlId(); - - if (parent) parent->AddChild(this); - - wxModelessWindows.Append(this); - - // TODO: create frame. - - return FALSE; -} - -wxFrame::~wxFrame() -{ - wxTopLevelWindows.DeleteObject(this); - - if (m_frameStatusBar) - delete m_frameStatusBar; - if (m_frameMenuBar) - delete m_frameMenuBar; - -/* Check if it's the last top-level window */ - - if (wxTheApp && (wxTopLevelWindows.Number() == 0)) - { - wxTheApp->SetTopWindow(NULL); - - if (wxTheApp->GetExitOnFrameDelete()) - { - // TODO signal to the app that we're going to close - } - } - - wxModelessWindows.DeleteObject(this); -} - -// Get size *available for subwindows* i.e. excluding menu bar, toolbar etc. -void wxFrame::GetClientSize(int *x, int *y) const -{ - // TODO -} - -// Set the client size (i.e. leave the calculation of borders etc. -// to wxWindows) -void wxFrame::SetClientSize(int width, int height) -{ - // TODO -} - -void wxFrame::GetSize(int *width, int *height) const -{ - // TODO -} - -void wxFrame::GetPosition(int *x, int *y) const -{ - // TODO -} - -void wxFrame::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -bool wxFrame::Show(bool show) -{ - // TODO - return FALSE; -} - -void wxFrame::Iconize(bool iconize) -{ - // TODO -} - -// Equivalent to maximize/restore in Windows -void wxFrame::Maximize(bool maximize) -{ - // TODO -} - -bool wxFrame::IsIconized() const -{ - // TODO - return FALSE; -} - -// Is the frame maximized? -bool wxFrame::IsMaximized(void) const -{ - // TODO - return FALSE; -} - -void wxFrame::SetTitle(const wxString& title) -{ - // TODO -} - -wxString wxFrame::GetTitle() const -{ - // TODO - return wxString(""); -} - -void wxFrame::SetIcon(const wxIcon& icon) -{ - m_icon = icon; - // TODO -} - -wxStatusBar *wxFrame::OnCreateStatusBar(int number, long style, wxWindowID id, - const wxString& name) -{ - wxStatusBar *statusBar = NULL; - - statusBar = new wxStatusBar(this, id, wxPoint(0, 0), wxSize(100, 20), - style, name); - - // Set the height according to the font and the border size - wxClientDC dc(statusBar); - dc.SetFont(statusBar->GetFont()); - - long x, y; - dc.GetTextExtent("X", &x, &y); - - int height = (int)( (y * 1.1) + 2* statusBar->GetBorderY()); - - statusBar->SetSize(-1, -1, 100, height); - - statusBar->SetFieldsCount(number); - return statusBar; -} - -wxStatusBar* wxFrame::CreateStatusBar(int number, long style, wxWindowID id, - const wxString& name) -{ - // Calling CreateStatusBar twice is an error. - wxCHECK_MSG( m_frameStatusBar == NULL, FALSE, - "recreating status bar in wxFrame" ); - - m_frameStatusBar = OnCreateStatusBar(number, style, id, - name); - if ( m_frameStatusBar ) - { - PositionStatusBar(); - return m_frameStatusBar; - } - else - return NULL; -} - -void wxFrame::SetStatusText(const wxString& text, int number) -{ - wxCHECK_RET( m_frameStatusBar != NULL, "no statusbar to set text for" ); - - m_frameStatusBar->SetStatusText(text, number); -} - -void wxFrame::SetStatusWidths(int n, const int widths_field[]) -{ - wxCHECK_RET( m_frameStatusBar != NULL, "no statusbar to set widths for" ); - - m_frameStatusBar->SetStatusWidths(n, widths_field); - PositionStatusBar(); -} - -void wxFrame::PositionStatusBar() -{ - int w, h; - GetClientSize(&w, &h); - int sw, sh; - m_frameStatusBar->GetSize(&sw, &sh); - - // Since we wish the status bar to be directly under the client area, - // we use the adjusted sizes without using wxSIZE_NO_ADJUSTMENTS. - m_frameStatusBar->SetSize(0, h, w, sh); -} - -void wxFrame::SetMenuBar(wxMenuBar *menuBar) -{ - if (!menuBar) - { - m_frameMenuBar = NULL; - return; - } - - m_frameMenuBar = menuBar; - - // TODO -} - -void wxFrame::Fit() -{ - // Work out max. size - wxNode *node = GetChildren().First(); - int max_width = 0; - int max_height = 0; - while (node) - { - // Find a child that's a subwindow, but not a dialog box. - wxWindow *win = (wxWindow *)node->Data(); - - if (!win->IsKindOf(CLASSINFO(wxFrame)) && - !win->IsKindOf(CLASSINFO(wxDialog))) - { - int width, height; - int x, y; - win->GetSize(&width, &height); - win->GetPosition(&x, &y); - - if ((x + width) > max_width) - max_width = x + width; - if ((y + height) > max_height) - max_height = y + height; - } - node = node->Next(); - } - SetClientSize(max_width, max_height); -} - -// Responds to colour changes, and passes event on to children. -void wxFrame::OnSysColourChanged(wxSysColourChangedEvent& event) -{ - SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE)); - Refresh(); - - if ( m_frameStatusBar ) - { - wxSysColourChangedEvent event2; - event2.SetEventObject( m_frameStatusBar ); - m_frameStatusBar->ProcessEvent(event2); - } - - // Propagate the event to the non-top-level children - wxWindow::OnSysColourChanged(event); -} - -// Default resizing behaviour - if only ONE subwindow, -// resize to client rectangle size -void wxFrame::OnSize(wxSizeEvent& event) -{ - // if we're using constraints - do use them - #if wxUSE_CONSTRAINTS - if ( GetAutoLayout() ) { - Layout(); - return; - } - #endif - - // do we have _exactly_ one child? - wxWindow *child = NULL; - for ( wxNode *node = GetChildren().First(); node; node = node->Next() ) - { - wxWindow *win = (wxWindow *)node->Data(); - if ( !win->IsKindOf(CLASSINFO(wxFrame)) && - !win->IsKindOf(CLASSINFO(wxDialog)) && - (win != GetStatusBar()) && - (win != GetToolBar()) ) - { - if ( child ) - return; // it's our second subwindow - nothing to do - child = win; - } - } - - if ( child ) { - // we have exactly one child - set it's size to fill the whole frame - int clientW, clientH; - GetClientSize(&clientW, &clientH); - - int x = 0; - int y = 0; - - child->SetSize(x, y, clientW, clientH); - } -} - -// Default activation behaviour - set the focus for the first child -// subwindow found. -void wxFrame::OnActivate(wxActivateEvent& event) -{ - for(wxNode *node = GetChildren().First(); node; node = node->Next()) - { - // Find a child that's a subwindow, but not a dialog box. - wxWindow *child = (wxWindow *)node->Data(); - if (!child->IsKindOf(CLASSINFO(wxFrame)) && - !child->IsKindOf(CLASSINFO(wxDialog))) - { - child->SetFocus(); - return; - } - } -} - -// The default implementation for the close window event - calls -// OnClose for backward compatibility. - -void wxFrame::OnCloseWindow(wxCloseEvent& event) -{ - // Compatibility - if ( GetEventHandler()->OnClose() || event.GetForce()) - { - this->Destroy(); - } -} - -bool wxFrame::OnClose() -{ - return TRUE; -} - -// Destroy the window (delayed, if a managed window) -bool wxFrame::Destroy() -{ - if (!wxPendingDelete.Member(this)) - wxPendingDelete.Append(this); - return TRUE; -} - -// Default menu selection behaviour - display a help string -void wxFrame::OnMenuHighlight(wxMenuEvent& event) -{ - if (GetStatusBar()) - { - if (event.GetMenuId() == -1) - SetStatusText(""); - else - { - wxMenuBar *menuBar = GetMenuBar(); - if (menuBar) - { - wxString helpString(menuBar->GetHelpString(event.GetMenuId())); - if (helpString != "") - SetStatusText(helpString); - } - } - } -} - -wxMenuBar *wxFrame::GetMenuBar() const -{ - return m_frameMenuBar; -} - -void wxFrame::Centre(int direction) -{ - int display_width, display_height, width, height, x, y; - wxDisplaySize(&display_width, &display_height); - - GetSize(&width, &height); - GetPosition(&x, &y); - - if (direction & wxHORIZONTAL) - x = (int)((display_width - width)/2); - if (direction & wxVERTICAL) - y = (int)((display_height - height)/2); - - SetSize(x, y, width, height); -} - -// Call this to simulate a menu command -void wxFrame::Command(int id) -{ - ProcessCommand(id); -} - -void wxFrame::ProcessCommand(int id) -{ - wxCommandEvent commandEvent(wxEVENT_TYPE_MENU_COMMAND, id); - commandEvent.SetInt( id ); - commandEvent.SetEventObject( this ); - - wxMenuBar *bar = GetMenuBar() ; - if (!bar) - return; - -/* TODO: check the menu item if required - wxMenuItem *item = bar->FindItemForId(id) ; - if (item && item->IsCheckable()) - { - bar->Check(id,!bar->Checked(id)) ; - } -*/ - - GetEventHandler()->ProcessEvent(commandEvent); -} - -// Checks if there is a toolbar, and returns the first free client position -wxPoint wxFrame::GetClientAreaOrigin() const -{ - wxPoint pt(0, 0); - if (GetToolBar()) - { - int w, h; - GetToolBar()->GetSize(& w, & h); - - if (GetToolBar()->GetWindowStyleFlag() & wxTB_VERTICAL) - { - pt.x += w; - } - else - { - pt.y += h; - } - } - return pt; -} - -void wxFrame::ScreenToClient(int *x, int *y) const -{ - wxWindow::ScreenToClient(x, y); - - // We may be faking the client origin. - // So a window that's really at (0, 30) may appear - // (to wxWin apps) to be at (0, 0). - wxPoint pt(GetClientAreaOrigin()); - *x -= pt.x; - *y -= pt.y; -} - -void wxFrame::ClientToScreen(int *x, int *y) const -{ - // We may be faking the client origin. - // So a window that's really at (0, 30) may appear - // (to wxWin apps) to be at (0, 0). - wxPoint pt1(GetClientAreaOrigin()); - *x += pt1.x; - *y += pt1.y; - - wxWindow::ClientToScreen(x, y); -} - -wxToolBar* wxFrame::CreateToolBar(long style, wxWindowID id, const wxString& name) -{ - wxCHECK_MSG( m_frameToolBar == NULL, FALSE, - "recreating toolbar in wxFrame" ); - - wxToolBar* toolBar = OnCreateToolBar(style, id, name); - if (toolBar) - { - SetToolBar(toolBar); - PositionToolBar(); - return toolBar; - } - else - { - return NULL; - } -} - -wxToolBar* wxFrame::OnCreateToolBar(long style, wxWindowID id, const wxString& name) -{ - return new wxToolBar(this, id, wxDefaultPosition, wxDefaultSize, style, name); -} - -void wxFrame::PositionToolBar() -{ - int cw, ch; - - // TODO: we actually need to use the low-level client size, before - // the toolbar/status bar were added. - // So DEFINITELY replace the line below with something appropriate. - - GetClientSize(& cw, &ch); - - if ( GetStatusBar() ) - { - int statusX, statusY; - GetStatusBar()->GetClientSize(&statusX, &statusY); - ch -= statusY; - } - - if (GetToolBar()) - { - int tw, th; - GetToolBar()->GetSize(& tw, & th); - - if (GetToolBar()->GetWindowStyleFlag() & wxTB_VERTICAL) - { - // Use the 'real' position. wxSIZE_NO_ADJUSTMENTS - // means, pretend we don't have toolbar/status bar, so we - // have the original client size. - GetToolBar()->SetSize(0, 0, tw, ch, wxSIZE_NO_ADJUSTMENTS); - } - else - { - // Use the 'real' position - GetToolBar()->SetSize(0, 0, cw, th, wxSIZE_NO_ADJUSTMENTS); - } - } -} - diff --git a/src/mac/gauge.cpp b/src/mac/gauge.cpp deleted file mode 100644 index a85fbc498f..0000000000 --- a/src/mac/gauge.cpp +++ /dev/null @@ -1,95 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: gauge.cpp -// Purpose: wxGauge class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "gauge.h" -#endif - -#include "wx/gauge.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxGauge, wxControl) -#endif - -bool wxGauge::Create(wxWindow *parent, wxWindowID id, - int range, - const wxPoint& pos, - const wxSize& size, - long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); - SetValidator(validator); - m_rangeMax = range; - m_windowStyle = style; - - if (parent) parent->AddChild(this); - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - - // TODO - return FALSE; -} - -void wxGauge::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -void wxGauge::SetShadowWidth(int w) -{ - // TODO optional -} - -void wxGauge::SetBezelFace(int w) -{ - // TODO optional -} - -void wxGauge::SetRange(int r) -{ - m_rangeMax = r; - // TODO -} - -void wxGauge::SetValue(int pos) -{ - m_gaugePos = pos; - // TODO -} - -int wxGauge::GetShadowWidth() const -{ - // TODO optional - return 0; -} - -int wxGauge::GetBezelFace() const -{ - // TODO optional - return 0; -} - -int wxGauge::GetRange() const -{ - return m_rangeMax; -} - -int wxGauge::GetValue() const -{ - return m_gaugePos; -} - diff --git a/src/mac/gdiobj.cpp b/src/mac/gdiobj.cpp deleted file mode 100644 index 63697c8354..0000000000 --- a/src/mac/gdiobj.cpp +++ /dev/null @@ -1,22 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: gdiobj.cpp -// Purpose: wxGDIObject class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "gdiobj.h" -#endif - -#include "wx/gdiobj.h" - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxGDIObject, wxObject) -#endif - -// TODO: Nothing to do, unless you want to. diff --git a/src/mac/helpxxxx.cpp b/src/mac/helpxxxx.cpp deleted file mode 100644 index 086762c646..0000000000 --- a/src/mac/helpxxxx.cpp +++ /dev/null @@ -1,83 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: helpxxxx.cpp -// Purpose: Help system: native implementation -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "helpxxxx.h" -#endif - -#include "wx/stubs/helpxxxx.h" - -#include - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxXXXXHelpController, wxHelpControllerBase) -#endif - -wxXXXXHelpController::wxXXXXHelpController() -{ - m_helpFile = ""; -} - -wxXXXXHelpController::~wxXXXXHelpController() -{ -} - -bool wxXXXXHelpController::Initialize(const wxString& filename) -{ - m_helpFile = filename; - // TODO any other inits - return TRUE; -} - -bool wxXXXXHelpController::LoadFile(const wxString& file) -{ - m_helpFile = file; - // TODO - return TRUE; -} - -bool wxXXXXHelpController::DisplayContents() -{ - // TODO - return FALSE; -} - -bool wxXXXXHelpController::DisplaySection(int section) -{ - // TODO - return FALSE; -} - -bool wxXXXXHelpController::DisplayBlock(long block) -{ - // TODO - return FALSE; -} - -bool wxXXXXHelpController::KeywordSearch(const wxString& k) -{ - if (m_helpFile == "") return FALSE; - - // TODO - return FALSE; -} - -// Can't close the help window explicitly in WinHelp -bool wxXXXXHelpController::Quit() -{ - // TODO - return FALSE; -} - -void wxXXXXHelpController::OnQuit() -{ -} - diff --git a/src/mac/icon.cpp b/src/mac/icon.cpp deleted file mode 100644 index 6deee7dbdc..0000000000 --- a/src/mac/icon.cpp +++ /dev/null @@ -1,70 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: icon.cpp -// Purpose: wxIcon class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "icon.h" -#endif - -#include "wx/icon.h" - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxIcon, wxBitmap) -#endif - -/* - * Icons - */ - - -wxIconRefData::wxIconRefData() -{ - // TODO: init icon handle -} - -wxIconRefData::~wxIconRefData() -{ - // TODO: destroy icon handle -} - -wxIcon::wxIcon() -{ -} - -wxIcon::wxIcon(const char WXUNUSED(bits)[], int WXUNUSED(width), int WXUNUSED(height)) -{ -} - -wxIcon::wxIcon(const wxString& icon_file, long flags, - int desiredWidth, int desiredHeight) - -{ - LoadFile(icon_file, flags, desiredWidth, desiredHeight); -} - -wxIcon::~wxIcon() -{ -} - -bool wxIcon::LoadFile(const wxString& filename, long type, - int desiredWidth, int desiredHeight) -{ - UnRef(); - - m_refData = new wxIconRefData; - - wxBitmapHandler *handler = FindHandler(type); - - if ( handler ) - return handler->LoadFile(this, filename, type, desiredWidth, desiredHeight); - else - return FALSE; -} - diff --git a/src/mac/imaglist.cpp b/src/mac/imaglist.cpp deleted file mode 100644 index 4cb47b4e69..0000000000 --- a/src/mac/imaglist.cpp +++ /dev/null @@ -1,118 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: imaglist.cpp -// Purpose: wxImageList. You may wish to use the generic version. -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "imaglist.h" -#endif - -#include "wx/stubs/imaglist.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxImageList, wxObject) -#endif - -wxImageList::wxImageList() -{ - // TODO: init image list handle, if any -} - -wxImageList::~wxImageList() -{ - // TODO: destroy image list handle, if any -} - - -// Attributes -//////////////////////////////////////////////////////////////////////////// - -// Returns the number of images in the image list. -int wxImageList::GetImageCount() const -{ - // TODO - return 0; -} - -// Operations -//////////////////////////////////////////////////////////////////////////// - -// Creates an image list -bool wxImageList::Create(int width, int height, bool mask, int initial) -{ - // TODO - return FALSE; -} - -// Adds a bitmap, and optionally a mask bitmap. -// Note that wxImageList creates new bitmaps, so you may delete -// 'bitmap' and 'mask'. -int wxImageList::Add(const wxBitmap& bitmap, const wxBitmap& mask) -{ - // TODO - return 0; -} - -// Adds a bitmap, using the specified colour to create the mask bitmap -// Note that wxImageList creates new bitmaps, so you may delete -// 'bitmap'. -int wxImageList::Add(const wxBitmap& bitmap, const wxColour& maskColour) -{ - // TODO - return 0; -} - -// Adds a bitmap and mask from an icon. -int wxImageList::Add(const wxIcon& icon) -{ - // TODO - return 0; -} - -// Replaces a bitmap, optionally passing a mask bitmap. -// Note that wxImageList creates new bitmaps, so you may delete -// 'bitmap' and 'mask'. -bool wxImageList::Replace(int index, const wxBitmap& bitmap, const wxBitmap& mask) -{ - // TODO - return 0; -} - -// Replaces a bitmap and mask from an icon. -bool wxImageList::Replace(int index, const wxIcon& icon) -{ - // TODO - return 0; -} - -// Removes the image at the given index. -bool wxImageList::Remove(int index) -{ - // TODO - return FALSE; -} - -// Remove all images -bool wxImageList::RemoveAll() -{ - // TODO - return FALSE; -} - -// Draws the given image on a dc at the specified position. -// If 'solidBackground' is TRUE, Draw sets the image list background -// colour to the background colour of the wxDC, to speed up -// drawing by eliminating masked drawing where possible. -bool wxImageList::Draw(int index, wxDC& dc, int x, int y, - int flags, bool solidBackground) -{ - // TODO - return FALSE; -} - diff --git a/src/mac/joystick.cpp b/src/mac/joystick.cpp deleted file mode 100644 index 6677277f48..0000000000 --- a/src/mac/joystick.cpp +++ /dev/null @@ -1,279 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: joystick.cpp -// Purpose: wxJoystick class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "joystick.h" -#endif - -#include - -IMPLEMENT_DYNAMIC_CLASS(wxJoystick, wxObject) - -// Attributes -//////////////////////////////////////////////////////////////////////////// - -wxPoint wxJoystick::GetPosition() const -{ - // TODO - return wxPoint(0, 0); -} - -int wxJoystick::GetZPosition() const -{ - // TODO - return 0; -} - -int wxJoystick::GetButtonState() const -{ - // TODO - return 0; -} - -int wxJoystick::GetPOVPosition() const -{ - // TODO - return 0; -} - -int wxJoystick::GetPOVCTSPosition() const -{ - // TODO - return 0; -} - -int wxJoystick::GetRudderPosition() const -{ - // TODO - return 0; -} - -int wxJoystick::GetUPosition() const -{ - // TODO - return 0; -} - -int wxJoystick::GetVPosition() const -{ - // TODO - return 0; -} - -int wxJoystick::GetMovementThreshold() const -{ - // TODO - return 0; -} - -void wxJoystick::SetMovementThreshold(int threshold) -{ - // TODO -} - -// Capabilities -//////////////////////////////////////////////////////////////////////////// - -bool wxJoystick::IsOk() const -{ - // TODO - return FALSE; -} - -int wxJoystick::GetNumberJoysticks() const -{ - // TODO - return 0; -} - -int wxJoystick::GetManufacturerId() const -{ - // TODO - return 0; -} - -int wxJoystick::GetProductId() const -{ - // TODO - return 0; -} - -wxString wxJoystick::GetProductName() const -{ - // TODO - return wxString(""); -} - -int wxJoystick::GetXMin() const -{ - // TODO - return 0; -} - -int wxJoystick::GetYMin() const -{ - // TODO - return 0; -} - -int wxJoystick::GetZMin() const -{ - // TODO - return 0; -} - -int wxJoystick::GetXMax() const -{ - // TODO - return 0; -} - -int wxJoystick::GetYMax() const -{ - // TODO - return 0; -} - -int wxJoystick::GetZMax() const -{ - // TODO - return 0; -} - -int wxJoystick::GetNumberButtons() const -{ - // TODO - return 0; -} - -int wxJoystick::GetNumberAxes() const -{ - // TODO - return 0; -} - -int wxJoystick::GetMaxButtons() const -{ - // TODO - return 0; -} - -int wxJoystick::GetMaxAxes() const -{ - // TODO - return 0; -} - -int wxJoystick::GetPollingMin() const -{ - // TODO - return 0; -} - -int wxJoystick::GetPollingMax() const -{ - // TODO - return 0; -} - -int wxJoystick::GetRudderMin() const -{ - // TODO - return 0; -} - -int wxJoystick::GetRudderMax() const -{ - // TODO - return 0; -} - -int wxJoystick::GetUMin() const -{ - // TODO - return 0; -} - -int wxJoystick::GetUMax() const -{ - // TODO - return 0; -} - -int wxJoystick::GetVMin() const -{ - // TODO - return 0; -} - -int wxJoystick::GetVMax() const -{ - // TODO - return 0; -} - -bool wxJoystick::HasRudder() const -{ - // TODO - return FALSE; -} - -bool wxJoystick::HasZ() const -{ - // TODO - return FALSE; -} - -bool wxJoystick::HasU() const -{ - // TODO - return FALSE; -} - -bool wxJoystick::HasV() const -{ - // TODO - return FALSE; -} - -bool wxJoystick::HasPOV() const -{ - // TODO - return FALSE; -} - -bool wxJoystick::HasPOV4Dir() const -{ - // TODO - return FALSE; -} - -bool wxJoystick::HasPOVCTS() const -{ - // TODO - return FALSE; -} - -// Operations -//////////////////////////////////////////////////////////////////////////// - -bool wxJoystick::SetCapture(wxWindow* win, int pollingFreq) -{ - // TODO - return FALSE; -} - -bool wxJoystick::ReleaseCapture() -{ - // TODO - return FALSE; -} - diff --git a/src/mac/listbox.cpp b/src/mac/listbox.cpp deleted file mode 100644 index 1dad21e12c..0000000000 --- a/src/mac/listbox.cpp +++ /dev/null @@ -1,235 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: listbox.cpp -// Purpose: wxListBox -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "listbox.h" -#endif - -#include "wx/listbox.h" -#include "wx/settings.h" -#include "wx/dynarray.h" -#include "wx/log.h" - -#if !USE_SHARED_LIBRARY - IMPLEMENT_DYNAMIC_CLASS(wxListBox, wxControl) -#endif - -// ============================================================================ -// list box control implementation -// ============================================================================ - -// Listbox item -wxListBox::wxListBox() -{ - m_noItems = 0; - m_selected = 0; -} - -bool wxListBox::Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos, - const wxSize& size, - int n, const wxString choices[], - long style, - const wxValidator& validator, - const wxString& name) -{ - m_noItems = n; - m_selected = 0; - - SetName(name); - SetValidator(validator); - - if (parent) parent->AddChild(this); - - wxSystemSettings settings; - SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOW)); - - m_windowId = ( id == -1 ) ? (int)NewControlId() : id; - - // TODO create listbox - - return FALSE; -} - -wxListBox::~wxListBox() -{ -} - -void wxListBox::SetFirstItem(int N) -{ - // TODO -} - -void wxListBox::SetFirstItem(const wxString& s) -{ - // TODO -} - -void wxListBox::Delete(int N) -{ - m_noItems --; - // TODO -} - -void wxListBox::Append(const wxString& item) -{ - m_noItems ++; - - // TODO -} - -void wxListBox::Append(const wxString& item, char *Client_data) -{ - m_noItems ++; - - // TODO -} - -void wxListBox::Set(int n, const wxString *choices, char** clientData) -{ - m_noItems = n; - - // TODO -} - -int wxListBox::FindString(const wxString& s) const -{ - // TODO - return -1; -} - -void wxListBox::Clear() -{ - m_noItems = 0; - // TODO -} - -void wxListBox::SetSelection(int N, bool select) -{ - // TODO -} - -bool wxListBox::Selected(int N) const -{ - // TODO - return FALSE; -} - -void wxListBox::Deselect(int N) -{ - // TODO -} - -char *wxListBox::GetClientData(int N) const -{ - // TODO - return (char *)NULL; -} - -void wxListBox::SetClientData(int N, char *Client_data) -{ - // TODO -} - -// Return number of selections and an array of selected integers -int wxListBox::GetSelections(wxArrayInt& aSelections) const -{ - aSelections.Empty(); - -/* TODO - if ((m_windowStyle & wxLB_MULTIPLE) || (m_windowStyle & wxLB_EXTENDED)) - { - int no_sel = ?? - for ( int n = 0; n < no_sel; n++ ) - aSelections.Add(??); - - return no_sel; - } - else // single-selection listbox - { - aSelections.Add(??); - - return 1; - } -*/ - return 0; -} - -// Get single selection, for single choice list items -int wxListBox::GetSelection() const -{ - // TODO - return -1; -} - -// Find string for position -wxString wxListBox::GetString(int N) const -{ - // TODO - return wxString(""); -} - -void wxListBox::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -void wxListBox::InsertItems(int nItems, const wxString items[], int pos) -{ - m_noItems += nItems; - - // TODO -} - -void wxListBox::SetString(int N, const wxString& s) -{ - // TODO -} - -int wxListBox::Number () const -{ - return m_noItems; -} - -// For single selection items only -wxString wxListBox::GetStringSelection () const -{ - int sel = GetSelection (); - if (sel > -1) - return this->GetString (sel); - else - return wxString(""); -} - -bool wxListBox::SetStringSelection (const wxString& s, bool flag) -{ - int sel = FindString (s); - if (sel > -1) - { - SetSelection (sel, flag); - return TRUE; - } - else - return FALSE; -} - -void wxListBox::Command (wxCommandEvent & event) -{ - if (event.m_extraLong) - SetSelection (event.m_commandInt); - else - { - Deselect (event.m_commandInt); - return; - } - ProcessCommand (event); -} - diff --git a/src/mac/listctrl.cpp b/src/mac/listctrl.cpp deleted file mode 100644 index d1d8445652..0000000000 --- a/src/mac/listctrl.cpp +++ /dev/null @@ -1,596 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: listctrl.cpp -// Purpose: wxListCtrl. See also Robert's generic wxListCtrl -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "listctrl.h" -#endif - -#include "wx/stubs/textctrl.h" -#include "wx/stubs/listctrl.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxListCtrl, wxControl) -IMPLEMENT_DYNAMIC_CLASS(wxListItem, wxObject) - -#endif - -wxListCtrl::wxListCtrl() -{ - m_imageListNormal = NULL; - m_imageListSmall = NULL; - m_imageListState = NULL; - m_baseStyle = 0; - m_colCount = 0; -} - -bool wxListCtrl::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, - long style, const wxValidator& validator, const wxString& name) -{ - m_imageListNormal = NULL; - m_imageListSmall = NULL; - m_imageListState = NULL; - m_colCount = 0; - - SetValidator(validator); - SetName(name); - - m_windowStyle = style; - - SetParent(parent); - - m_windowId = (id == -1) ? NewControlId() : id; - - if (parent) parent->AddChild(this); - - // TODO create list control - return TRUE; -} - -wxListCtrl::~wxListCtrl() -{ -} - -// Add or remove a single window style -void wxListCtrl::SetSingleStyle(long style, bool add) -{ - long flag = GetWindowStyleFlag(); - - // Get rid of conflicting styles - if ( add ) - { - if ( style & wxLC_MASK_TYPE) - flag = flag & ~wxLC_MASK_TYPE ; - if ( style & wxLC_MASK_ALIGN ) - flag = flag & ~wxLC_MASK_ALIGN ; - if ( style & wxLC_MASK_SORT ) - flag = flag & ~wxLC_MASK_SORT ; - } - - if ( flag & style ) - { - if ( !add ) - flag -= style; - } - else - { - if ( add ) - { - flag |= style; - } - } - - m_windowStyle = flag; - - /* TODO RecreateWindow(); */ -} - -// Set the whole window style -void wxListCtrl::SetWindowStyleFlag(long flag) -{ - m_windowStyle = flag; - - /* TODO RecreateWindow(); */ -} - - -// Gets information about this column -bool wxListCtrl::GetColumn(int col, wxListItem& item) const -{ - // TODO - return FALSE; -} - -// Sets information about this column -bool wxListCtrl::SetColumn(int col, wxListItem& item) -{ - // TODO - return FALSE; -} - -// Gets the column width -int wxListCtrl::GetColumnWidth(int col) const -{ - // TODO - return 0; -} - -// Sets the column width -bool wxListCtrl::SetColumnWidth(int col, int width) -{ - // TODO - return FALSE; -} - -// 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) -int wxListCtrl::GetCountPerPage() const -{ - // TODO - return 0; -} - -// Gets the edit control for editing labels. -wxTextCtrl* wxListCtrl::GetEditControl() const -{ - return m_textCtrl; -} - -// Gets information about the item -bool wxListCtrl::GetItem(wxListItem& info) const -{ - // TODO - return FALSE; -} - -// Sets information about the item -bool wxListCtrl::SetItem(wxListItem& info) -{ - // TODO - return FALSE; -} - -long wxListCtrl::SetItem(long index, int col, const wxString& label, int imageId) -{ - wxListItem info; - info.m_text = label; - info.m_mask = wxLIST_MASK_TEXT; - info.m_itemId = index; - info.m_col = col; - if ( imageId > -1 ) - { - info.m_image = imageId; - info.m_mask |= wxLIST_MASK_IMAGE; - } - return SetItem(info); -} - - -// Gets the item state -int wxListCtrl::GetItemState(long item, long stateMask) const -{ - wxListItem info; - - info.m_mask = wxLIST_MASK_STATE ; - info.m_stateMask = stateMask; - info.m_itemId = item; - - if (!GetItem(info)) - return 0; - - return info.m_state; -} - -// Sets the item state -bool wxListCtrl::SetItemState(long item, long state, long stateMask) -{ - wxListItem info; - - info.m_mask = wxLIST_MASK_STATE ; - info.m_state = state; - info.m_stateMask = stateMask; - info.m_itemId = item; - - return SetItem(info); -} - -// Sets the item image -bool wxListCtrl::SetItemImage(long item, int image, int selImage) -{ - wxListItem info; - - info.m_mask = wxLIST_MASK_IMAGE ; - info.m_image = image; - info.m_itemId = item; - - return SetItem(info); -} - -// Gets the item text -wxString wxListCtrl::GetItemText(long item) const -{ - wxListItem info; - - info.m_mask = wxLIST_MASK_TEXT ; - info.m_itemId = item; - - if (!GetItem(info)) - return wxString(""); - return info.m_text; -} - -// Sets the item text -void wxListCtrl::SetItemText(long item, const wxString& str) -{ - wxListItem info; - - info.m_mask = wxLIST_MASK_TEXT ; - info.m_itemId = item; - info.m_text = str; - - SetItem(info); -} - -// Gets the item data -long wxListCtrl::GetItemData(long item) const -{ - wxListItem info; - - info.m_mask = wxLIST_MASK_DATA ; - info.m_itemId = item; - - if (!GetItem(info)) - return 0; - return info.m_data; -} - -// Sets the item data -bool wxListCtrl::SetItemData(long item, long data) -{ - wxListItem info; - - info.m_mask = wxLIST_MASK_DATA ; - info.m_itemId = item; - info.m_data = data; - - return SetItem(info); -} - -// Gets the item rectangle -bool wxListCtrl::GetItemRect(long item, wxRect& rect, int code) const -{ - // TODO - return FALSE; -} - -// Gets the item position -bool wxListCtrl::GetItemPosition(long item, wxPoint& pos) const -{ - // TODO - return FALSE; -} - -// Sets the item position. -bool wxListCtrl::SetItemPosition(long item, const wxPoint& pos) -{ - // TODO - return FALSE; -} - -// Gets the number of items in the list control -int wxListCtrl::GetItemCount() const -{ - // TODO - return FALSE; -} - -// Retrieves the spacing between icons in pixels. -// If small is TRUE, gets the spacing for the small icon -// view, otherwise the large icon view. -int wxListCtrl::GetItemSpacing(bool isSmall) const -{ - // TODO - return FALSE; -} - -// Gets the number of selected items in the list control -int wxListCtrl::GetSelectedItemCount() const -{ - // TODO - return FALSE; -} - -// Gets the text colour of the listview -wxColour wxListCtrl::GetTextColour() const -{ - // TODO - return wxColour(); -} - -// Sets the text colour of the listview -void wxListCtrl::SetTextColour(const wxColour& col) -{ - // TODO -} - -// Gets the index of the topmost visible item when in -// list or report view -long wxListCtrl::GetTopItem() const -{ - // TODO - return 0; -} - -// Searches for an item, starting from 'item'. -// 'geometry' is one of -// wxLIST_NEXT_ABOVE/ALL/BELOW/LEFT/RIGHT. -// 'state' is a state bit flag, one or more of -// wxLIST_STATE_DROPHILITED/FOCUSED/SELECTED/CUT. -// item can be -1 to find the first item that matches the -// specified flags. -// Returns the item or -1 if unsuccessful. -long wxListCtrl::GetNextItem(long item, int geom, int state) const -{ - // TODO - return 0; -} - -wxImageList *wxListCtrl::GetImageList(int which) const -{ - if ( which == wxIMAGE_LIST_NORMAL ) - { - return m_imageListNormal; - } - else if ( which == wxIMAGE_LIST_SMALL ) - { - return m_imageListSmall; - } - else if ( which == wxIMAGE_LIST_STATE ) - { - return m_imageListState; - } - return NULL; -} - -void wxListCtrl::SetImageList(wxImageList *imageList, int which) -{ - int flags = 0; - if ( which == wxIMAGE_LIST_NORMAL ) - { - m_imageListNormal = imageList; - } - else if ( which == wxIMAGE_LIST_SMALL ) - { - m_imageListSmall = imageList; - } - else if ( which == wxIMAGE_LIST_STATE ) - { - m_imageListState = imageList; - } - // TODO set image list -} - -// Operations -//////////////////////////////////////////////////////////////////////////// - -// Arranges the items -bool wxListCtrl::Arrange(int flag) -{ - // TODO - return FALSE; -} - -// Deletes an item -bool wxListCtrl::DeleteItem(long item) -{ - // TODO - return FALSE; -} - -// Deletes all items -bool wxListCtrl::DeleteAllItems() -{ - // TODO - return FALSE; -} - -// Deletes all items -bool wxListCtrl::DeleteAllColumns() -{ - // TODO - return FALSE; -} - -// Deletes a column -bool wxListCtrl::DeleteColumn(int col) -{ - // TODO - return FALSE; -} - -// Clears items, and columns if there are any. -void wxListCtrl::ClearAll() -{ - DeleteAllItems(); - if ( m_colCount > 0 ) - DeleteAllColumns(); -} - -// Edit the label -wxTextCtrl* wxListCtrl::EditLabel(long item, wxClassInfo* textControlClass) -{ - // TODO - return NULL; -} - -// End label editing, optionally cancelling the edit -bool wxListCtrl::EndEditLabel(bool cancel) -{ - // TODO - return FALSE; -} - -// Ensures this item is visible -bool wxListCtrl::EnsureVisible(long item) -{ - // TODO - return FALSE; -} - -// Find an item whose label matches this string, starting from the item after 'start' -// or the beginning if 'start' is -1. -long wxListCtrl::FindItem(long start, const wxString& str, bool partial) -{ - // TODO - return FALSE; -} - -// Find an item whose data matches this data, starting from the item after 'start' -// or the beginning if 'start' is -1. -long wxListCtrl::FindItem(long start, long data) -{ - // TODO - return 0; -} - -// Find an item nearest this position in the specified direction, starting from -// the item after 'start' or the beginning if 'start' is -1. -long wxListCtrl::FindItem(long start, const wxPoint& pt, int direction) -{ - // TODO - return 0; -} - -// Determines which item (if any) is at the specified point, -// giving details in 'flags' (see wxLIST_HITTEST_... flags above) -long wxListCtrl::HitTest(const wxPoint& point, int& flags) -{ - // TODO - return 0; -} - -// Inserts an item, returning the index of the new item if successful, -// -1 otherwise. -long wxListCtrl::InsertItem(wxListItem& info) -{ - // TODO - return 0; -} - -long wxListCtrl::InsertItem(long index, const wxString& label) -{ - wxListItem info; - info.m_text = label; - info.m_mask = wxLIST_MASK_TEXT; - info.m_itemId = index; - return InsertItem(info); -} - -// Inserts an image item -long wxListCtrl::InsertItem(long index, int imageIndex) -{ - wxListItem info; - info.m_image = imageIndex; - info.m_mask = wxLIST_MASK_IMAGE; - info.m_itemId = index; - return InsertItem(info); -} - -// Inserts an image/string item -long wxListCtrl::InsertItem(long index, const wxString& label, int imageIndex) -{ - wxListItem info; - info.m_image = imageIndex; - info.m_text = label; - info.m_mask = wxLIST_MASK_IMAGE | wxLIST_MASK_TEXT; - info.m_itemId = index; - return InsertItem(info); -} - -// For list view mode (only), inserts a column. -long wxListCtrl::InsertColumn(long col, wxListItem& item) -{ - // TODO - return 0; -} - -long wxListCtrl::InsertColumn(long col, const wxString& heading, int format, - int width) -{ - wxListItem item; - item.m_mask = wxLIST_MASK_TEXT | wxLIST_MASK_FORMAT; - item.m_text = heading; - if ( width > -1 ) - { - item.m_mask |= wxLIST_MASK_WIDTH; - item.m_width = width; - } - item.m_format = format; - - return InsertColumn(col, item); -} - -// Scrolls the list control. If in icon, small icon or report view mode, -// x specifies the number of pixels to scroll. If in list view mode, x -// specifies the number of columns to scroll. -// If in icon, small icon or list view mode, y specifies the number of pixels -// to scroll. If in report view mode, y specifies the number of lines to scroll. -bool wxListCtrl::ScrollList(int dx, int dy) -{ - // TODO - return FALSE; -} - -// Sort items. - -// 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. -bool wxListCtrl::SortItems(wxListCtrlCompare fn, long data) -{ - // TODO - return FALSE; -} - -// List item structure -wxListItem::wxListItem() -{ - m_mask = 0; - m_itemId = 0; - m_col = 0; - m_state = 0; - m_stateMask = 0; - m_image = 0; - m_data = 0; - - m_format = wxLIST_FORMAT_CENTRE; - m_width = 0; -} - -// List event -IMPLEMENT_DYNAMIC_CLASS(wxListEvent, wxCommandEvent) - -wxListEvent::wxListEvent(wxEventType commandType, int id): - wxCommandEvent(commandType, id) -{ - m_code = 0; - m_itemIndex = 0; - m_col = 0; - m_cancelled = FALSE; -} - diff --git a/src/mac/macsock/sock_PPC.lib b/src/mac/macsock/sock_PPC.lib deleted file mode 100644 index a85c82aabf..0000000000 --- a/src/mac/macsock/sock_PPC.lib +++ /dev/null @@ -1 +0,0 @@ -(This file must be converted with BinHex 4.0) :!!"08%a'3eG*43!!!!-3A!!!!4ijQ8eA6d*38%-J!*!(!3!![XJ!!#4S!!!!#V# XlYd!!!$N!!!!mJ!!!e`!!#2bXQAFf3!!!5B!!!%f!!!R8!!!Y4ka,F84!!!"E!! !!AJ!!0a`!!!B@,*Pi@S!!!'U!!!"YJ!!p-J!!&Q!XQ-ZeJ!!!HJ!!!(e!!&15!! !GFk[r%YD!!!#+!!!!M3!!F3B!!!RbUj'*kS!!!*Q!!!#G!!"kq3!!"b+XQAX)3! !!UJ!!!+c!!))F!!!CV#`V2#X!!!#j!!!!Zm!!QmJ!!"!3,#pbM)!!!-J!!!$+`! #Vf!!!'$m4e9658*eCQCPFLjMF!"%CACPE'p`E@9ZG$T%CA0VG'p`)%C[E'4PFMT $9dG98dNkFh*M1NG98dP#G@CQCA)ZBh!!4e96584TFh"KG'0S,Q0`!%4PGQ9XEh" YC@jd1N4PFfYdEh!J4QpXC'9b1N0A4e9656TcFQ-k4e96584TFh"KG'0S,Q0`!%G 98dP(E'pL,Q0`!%4PGQ9XEh"YC@jd1N4PFfYdEh!J4QpXC'9b1N0A4e9656TcFQ- k4e9658GXEf)ZBh!!4e9658P1493ZBh!!4'9fC@a[F'ePER3k4'9cDh4[F#"'Efa NCA)k3eG(990*1R0bBcT(990*58j&9#jMF!"(990*6Q9d4%)ZBh!!4'9fC@a[F'e PER3k4'9cDh4[F#"'EfaNCA)k3eG(990*1R0bBcT(990*6Q9d4%)ZBh!!4e9658j eE'`ZBh!!4'9fC@a[F'ePER3k4'9cDh4[F#"'EfaNCA)k3eG(990*1R0bBcT(990 *6R9XE#jMF!"(990*8fpMDf9d,Q0`!%4PGQ9XEh"YC@jd1N4PFfYdEh!J4QpXC'9 b1N0A4e9656TcFQ-k4e96590[BfYPG#jMF!"(990*9%03,Q0`!%4PGQ9XEh"YC@j d1N4PFfYdEh!J4QpXC'9b1N0A4e9656TcFQ-k4e96594$8#jMF!"(990*9843,Q0 `!%4PGQ9XEh"YC@jd1N4PFfYdEh!J4QpXC'9b1N0A4e9656TcFQ-k4e96599%8#j MF!"(990*4P0`,Q0`!%4PGQ9XEh"YC@jd1N4PFfYdEh!J4QpXC'9b1N0A4e9656T cFQ-k4e9658C6F#jMF!"36eG5!*!'&5!!!"hd!!!!EJ!!&B`!!!KS!!!*m!#3"J' c!!!!$!#33%9R!!"&D3#3"3&&DJ!%!!!!!J!!!(3!!!!J!!!$Zh`)!UDrBIrXN!! "!!L8)Iq`1i-!!$ZN!!!la3!!1qB!!(`Hq%"!J3!i1(`!!$LG!!!i[!!!10m!!%J !!!%lB`!!1(`!!$LG!!!i[J!!10d!!%J!!!&mBpS85!!!#(aqq&#!!3"B1#%!8(` )!kDlBIrX6S!!)%9e!*!&!J!!!$K&G3#3"3)!!!"34@i-"!!!!!F!!!!-J!#3#i! !!(3S!!!!4AF!N!8#!*!%4@X!"!!!!!J!!!#-!!!!I!!!"@am#!+QNq(rr*2"rrL 3!!%!#*3Krm!li`!!1m3!!&5$"$j)!!!"B!!!!*!!I`!!J(m!!&I!"$jm!`)8N!! I!!5!(`!!N!!I!!L!(`!!N!!I!!bch`!31!!!!,!I!")i!!!!X"m!&$J!!!#B(`! @1!!!!*!!(`!B1(m!!)!"!%Ji)3"!I!J$TS2Krrb$`Iri6S!!)%9e!*!!!!#" &EJ`%!!!!&`!!!!b!!*!,J!!!M"!!!!"&G`#3"3J!N!4&D`!%!!!!'!!!!'`!!!# d!!!'FR`)!UD6iIrmN!!"!!L8)Ir!I(mEHE#"!&j"JJ!m1!!!!CJI!"D!(`!!+!! !!%'#!"#!I`!!5!!!!@!!!!#S!3"H,!!!!%#"!"!iI`!!5!!!!@!!!!!iI`!!J!% !5$JK!%"m#!1QJq(rr%k!!#"&G3#3"4N!!!!d4A8!N!8D!!!!6%9Z$!3!!!!E!!! !$)!!N!Z!!!"X#!!!!%9h!*!&'!#3"%9V!!3!!!!F!!!")!!!!1B!!!DqI!J#TT2 Krrb6`IriNk(rp*1"rr#3!!%!#*3Krl!li`!!1i3!!$J!!!'B!`!@S!-!%LJ!!!" !JJ!FJ"m!!*!!(`!-J"m!!*!!(`!)1!!!!,!I!"5!I`!-J"m!"(r$!&#$[`!-9m- %2U!I!""m!`"!3B!!$+2I!"")!!"-9m-%2U!I!""m!!j`I!-!!%#!!$KA``3qJ"` !!(`$!!"!J!!SXpm!&)!I!!#3!"m!$+"r!"5J(`!3I!-!8,!I!"#Mh`!3Jlm!$)" m!!"A`!3qI!-!!%#"!!aA`!3qN!!F!!!i!!!!Q"m!&S!I!"JS!!!!3B)!&)"r!"b "R`!B5!!!!@!!!!!iI3!!J!%!@$JK!&"m#!1QJq(rr)2"rrL$SIrdJi(rm%k!!#" &G3#3"4d!!!$d4@i-"!!!!#%!!!!-J!#3#i!!!5!J!!!!4AF!N!8F!*!%4@X!"!! !!#)!!!#i!!!"HJ!!#-Ym#!+QNq(rr*2"rrL6SIrdNi(rm*!!!3!)P#(rX$[M!!! lK!!!1!!!!CJ$!"DJJ`!8J'-!#)!I!!4m!`"3Im3!8)1r!!KA``3qS"m!%R`$!%" !J3!)Spm!%S"m!!"A`!3qI!-!!%#"!!aA`!3qN!!F!!!i!!!!Q"m!&S!I!"JS!!! !3B)!&)"r!"b"R`!B5!!!!@!!!!!iI3!!J!%!@$JK!&"m#!1QJq(rr)2"rrL$SIr dJi(rm%k!!#"&G3#3"4d!!!#-4@i-"!!!!#-!!!!-J!#3#i!!!,JJ!!!!4AF!N!8 L!*!%4@X!"!!!!#3!!!#F!!!"lJ!!#J&m#!+QNq(rr*2"rrL3!!%!#*3Krm!li`! !1m3!!$J!!!'B!`!@S!-!%R`!mK5`!`!5S!-!%(`H!&#`!`!3J!-!$(`!mK53!!- !$)"M!!b!(`!%I!-!3%##!!b!(`!!N!!I!!`i!!!!Q"m!&S!I!"JS!!!!3B)!&)" r!"b"R`!B5!!!!@!!!!#!!3")1#%!3(`)!kD$iIrmJm(rq%k!!#"&G3#3"4d!!!" m4@i-"!!!!#8!!!!-J!#3#i!!!*`3!!!!4AF!N!8N!*!%4@X!"!!!!#B!!!$B!!! #0J!!#YCm#!+QNq(rr*2"rrL3!!%!#*3Krm!li`!!1m3!!$J!!!'B!`!@S!-!%(` !mK5`!`!3S!-!%R`H!&#`!`!5J!-!#(`!mK53!!-!#)#$!!LJB`!8J"m!"(`$!&" m"!"!3))!')!I!!#3!"m!#$J!!!#`(`!85!!!,+!I!")S!!!!3))!)+!I!""m!2! !3))!&)!I!!#3!"m!#)!I!!#3!"m!$$J!!!#B(`!@J"m!'#J!!!""JJ!8J(m!()' I!"K)!!!"B!!!!)!"!%Ji)3"!I!J$TS2Krrb$`Iri6S!!)%9e!*!&(3!!!,K&EJ` %!!!!*`!!!!b!!*!,J!!!f"!!!!"&G`#3"5B!N!4&D`!%!!!!+!!!!*3!!!+1!!! -1A`)!UDrBIrXN!!"!!L8)IqJ1q-!!$Z%!!!lC3!!Jm8!!%J!!$`iI`!!1)%!1%J !!!%iR!!!J+%!1%J!!!&J!!!!1(m!!)#"!$K)!!!"J!%!1(qF!K5!!3!iIm$`8*2 "!$JX(J!!3B)!%+!I!")S!!!!3),rY)!E!!"m(J"3N!!E!!#!!3"S1#%!B(`)!kD lBIrX6S!!)%9e!*!&)J!!!#a&G3#3"5N!!!!i4A8!N!8Q!!!!5%9Z$!3!!!!Y!!! !$)!!N!Z!!!#8+!!!!%9h!*!&+!#3"%9V!!3!!!!Z!!!!R!!!!bi!!!fdI!J#TVp Krqb3!!%!#*3Krk!li`!!1i3!!$YP!!#$a3!!5!!!4$Kr!!!iJ3!i5!!!!6ZM!!! iI!!!1*d!!)#K!$K)!!!"B!!!!$Kr!!#!J3!i5!!!!B!"!$KrR!)8J!%!1(r!m&# 6`3!i,"i!!%'#!"#J(`!3+!!!!%##rkb!'`!!I"i!8*!!'`!!J!%!D$JK!'"m#!1 QZf(rl%k!!#"&G3#3"4`!!!!X4A8!N!8T!!!!3%9e!*!&*!!!!&"&EJ`%!!!!,`! !!!b!!*!,J!!!R#J!!!"&G`#3"5i!N!4&D`!%!!!!-!!!!4!!!!21!!!2Jh`)!UD 6iIrmNm(rq*1Krr53!!%!#*3Krl!li`!!1m3!!$ZP!!#!!J!!N!!$!"56``!3Nk- !$)!$!!`X!!!"3)!!)$J!!!#3!"m!"$J!!!#3!"m!#$J!!!#3!"m!!%J!!*L!(`! -,!!!!8##!##!(J!!N!!I!!5!(J!%N!!I!!Ji!!!!N!!I!!")!!"`1!!!!*!!(`! )5!!!')"r!!L!(J!%I!-#&*!!(`!)1pi!##`G!!!l[Irr3),rj)"r!!K)!!!"B!! !!*!!I`!!J"m!!#J!!!""JJ!JJ(m!!%J!!!&J!!!!J(m!!)!$!!#3!"m!"%J!!!` i!!!!N!!I!!3iI`!!J!%!@$JK!&"m#!1QJq(rr)2"rrL$SIrd6S!!)%9d!`#3"$% !!!!N4A8!N!8b!!!!Y%9e!*!&-`!!!0"&EJ`%!!!!2J!!!!b!!*!,J!!"%"J!!!" &G`#3"6!!N!4&D`!%!!!!2`!!!'`!!!4F!!!44(`)!UD6iIrmN!!"!!L8)Ir!I(m EHE#"!&j"JJ!mJ!)!!*!!(`!8J"m!!#J!!!""JJ!3J(m!!%J!!!&J!!!!U!%!AL` !!!"!J3!31(m!!%J!!!&J!!!!1(m!!)!"!%Ji)3"!I!J$TS2Krra1J!!J4A3$!*! %-3!!!"a&G3#3"8!!!!!d4A8!N!8D!!!!6%9Z$!3!!!""!!!!$)!!N!Z!!!"X#!! !!%9h!*!&2`#3"%9V!!3!!!"#!!!!5!!!")B!!"'*I!J#TT2Krrb3!!%!#*3Krm! li`!!N!#"!&b3!+%!B)#"!&b!S3"J5!!!!B!#!!#3!"m!&$Kr!!#!!3")1#%!3(` )!kD$iIrm6S!!)%9e!*!&-!!!!#4&G!-!N!4$!!!!+%9Z$!3!!!"'!!!!$)!!N!Z !!!")#!!!!%9h!*!&3J#3"%9V!!3!!!"(!!!"#!!!"-3!!"(KI!J#TT2Krrb6`Ir iNk(rp*!!!3!)P#(rX(ar'hQ`J3"Z3B)!b)!#!!#3!"m!&)!I!!`X!!!"3)%!N!# !(`!%+!!!!%'#!)5$[`!%5!!!A)#I!!L!I`!3J!-!"(`%!!"!J!!-Jpm!#%J!!!b !I`!3Jm-!")"r!"#!B`!!1*d!!$Lq!!")!!!"B!!!!(qpmK5!(`!)I"i!8*!!(`! )J(m!%$J$!!L3!"m!%)"r!!`i!rrrN!!I!!`X!`!!3B)!%)!I!!JX!!!!3),rM$K r!!!iJ!!!5!!!!DJ"!'iX!!!!3)%!%$Kr!!")!!!"B!!!!$Kr!!#!!3"B1#%!8(` )!kD$iIrmJm(rq)1Krr41J!!J4A3$!*!%3`!!!#4&G3#3"8J!!!#!4A8!N!8r!!! !c%9e!*!&'J!!!1"&EJ`%!!!!5`!!!!b!!*!,J!!"#"J!!!"&G`#3"8F!N!4&D`! %!!!!6!!!!+!!!!8U!!!5dA`)!UD6iIrmNm(rq*1Krr56JIr`N!!"!!L8)Iq`1i- !!$[N!!!lT3!!5!!!!B!#!!#3!"`!&#`G!!&!J3"%J"`!"#J!!!""JJ!iJp`!"%J !!#3iIJ!!J*m!!)#r!!4)!!!"B!!!!)!I!!4rhJ)81rm!##`G!!!l[Irr3),rf$K m!!#!!3"B1#%!8(`)!kD$iIrmJm(rq)1Krr5$JIr`6S!!)%9e!*!&-!!!!#K&G!- !N!40!!!!,%9e!*!&5!!!!&a&EJd#!!!!6`!!!"D!!*!()!!!B!"J!!S!!)D!!"` !N!T&GJUF!!!!8!!!!"*&EJ`%!!!!83!!!!b!!*!1S!#3"%9h!*!&6!#3"%9h$3# 3"%m!!!!)4@X!"!!!!&)!!!"J!!!&RJ!!%m*m#!+QNq(rr*!!!3!)P#(r`(ar'hQ `J3"H3B)!-)!#!!#3!"m!&$Kr!!!iJ!!!5!!!!DJ"!&iX!!!!3)%!%$Kr!!")!!! "B!!!!$Kr!!#!!3")1#%!3(`)!kD$iIrm6S!!)%9d!`#3"%d!!!!F4A8!N!8r!!! !,%9e!*!&'J!!!%"&EJ`%!!!!8`!!!!b!!*!,J!!!B!J!!!"&G`#3"9)!N!4&D`! %!!!!9!!!!$`!!!A!!!!6hC2Krr`li!!!5!!!&)J$!!!lr`!"I!6jVMKM!!')!`! !I!!(G8'#!!`X(`$r3B$ri*[N!!#$iIrm6S!!)%9Z"3%!!!"A!!!!#Irrrr-!!"2 G4f&dD'9bCA)!!"334@i&!3!!!&J!!!!+rrrrmJ!!%pe6Bf&dG%GKG'J!!!"&EJ8 %!!!!@3!!!!Mrrrra!!!6h3#3#%9f"3#3"&J!N!4&EJ8%!!!!@J!!!!crrrr`!!! 6h3#3$%9f"3#3"&N!N!4&EJ8%!!!!@`!!!!Mrrrr[!!!6h3#3#%9f"3#3"&F!N!4 &GJ8!N!4D!!!!"%9["33!!!"0!!!!$2rrrqi!!"2G!*!-4AB&!*!%@`#3"%9f#J# 3"&`!!!!)4@i&!3!!!&d!!!!+rrrrl3!!%pe6Bf&dG'9bCA)!&""&EJ8%!!!!AJ! !!!crrrrX!!!6h3#3$%9f"3#3"&N!N!4&EJ8%!!!!A`!!!!MrrrrV!!!6h3#3#%9 f"3#3"&d!N!4&GJ8!N!4H!!!!"%9["33!!!"$!!!!$2rrrqS!!"2G!*!-4AB&!*! %A`#3"%9f#J#3"'!!!!!)4@m&"!!!!$%!!!!-rrrrk3!!%pd!N!a&GJ8!N!4C!*! %4AB+!*!%8!!!!!K&E`S%!!!!B3!!!!L!!*!24AB!N!98!*!%4AB2!*!%BJ!!!!4 &E`S%!!!!A!!!!!L!!*!24AB!N!95!*!%4AB2!*!%BJ!!!!4&E`S%!!!!B`!!!!L !!*!24AB!N!9-!*!%4AB2!*!%BJ!!!!4&E`S%!!!!B!!!!!L!!*!24AB!N!9(!*! %4AB2!*!%BJ!!!!4&E`S%!!!!C!!!!!L!!*!24AB!N!9#!*!%4AB2!*!%BJ!!!!4 &E`S%!!!!8!!!!!L!!*!24AB!N!8r!*!%4AB2!*!%BJ!!!!4&E`S%!!!!C3!!!!L !!*!24AB!N!8`!*!%4AB2!*!%BJ!!!!4&E`S%!!!!CJ!!!!L!!*!24AB!N!8Z!*! %4AB2!*!%BJ!!!!4&E`S%!!!!C`!!!!L!!*!24AB!N!8S!*!%4AB2!*!%BJ!!!!4 &E`S%!!!!D!!!!!L!!*!24AB!N!8Q!*!%4AB2!*!%BJ!!!!4&E`S%!!!!D3!!!!L !!*!24AB!N!8N!*!%4AB2!*!%BJ!!!!4&E`S%!!!!DJ!!!!L!!*!24AB!N!8L!*! %4AB2!*!%BJ!!!!4&E`S%!!!!D`!!!!L!!*!24AB!N!8F!*!%4AB2!*!%BJ!!!!4 &E`S%!!!!E!!!!!L!!*!24AB!N!8B!*!%4AB2!*!%BJ!!!!4&E`S%!!!!E3!!!!L !!*!24AB!N!8)!*!%4AB2!*!%BJ!!!!4&E`-%!!!!63!!!!5!!*!,4AB&!*!%63# 3"%9[!`3!!!"$!!!!")!!N!Y&GJ8!N!4$!*!%4@m$"!!!!$%!!!!%J!#3#d9f"3# 3"$%!N!4&E`m%!!!!BJ#3")!!N!G&D!!!8eP05!!!"Ki!!!!A!!!!#!#3%3%!N!B $p3!!!#J!!!3*!!!!A!!!"&RrN!3!!!4T!!3!!!!$!!!!CJ%!N!3F!!!!"!!!!'B "!*!%(3!!!!8!!!"Q!3#3""i!!!!'!!!!CJ%!N!3I!!%!N!B&N`!!!#!!!!@@rj! %!!!'E`!#!!!!#[q3"!%!N!3I!!!!&J!!!!S"!*!%(J!"!*!'"S`!!!!F!!!'M`! !!$!!!!DRrj!%!!!'Z`!"!!!!#[q3"!%!N!3I!!%!N!B'i`!!!$J!!!FY!!!!8!! !"fJ!!!"`!!!(ZJ!!!(J!!!I2!!!!R!!!"rd!!!$!!!!)A`!!!0!!!!Kc!!!!f!! !#+i!!!$m!!!)[2q3"!!!#-J!"!!!!!VrN!3"!*!%(`!!!"lrrrrm!3#3""`!!!! I!!!!CJ#3"4d!!!!J!!!!#J#3"4i!!3#3"JM`!!!!9!!!#B3!!!"B!!!*P3!!!'J !!!QT!!!!F!!!#H3!!!#8!!!*m[q3"!!!#Ii!"!!!!!VrN!3"!*!%(`!!!"lrrrr m!3#3""`!!!!I!!!!CJ#3"4d!!!!J!!!!#J#3"4i!N!J+*3!!!&J!!!UK!!!!B!! !#XJ!!!#%!!!+drq3"!!!#Y-!!J!!!!VrN!3"!*!%(`!!!"i!!!!$!3#3""i!N!J +r!!!!'!!!!Z"!!!!G!!!#kN!!!#-!!!,l3!!!*`!!!`V!!!!`!!!$$ErN!3!!!` f!!)!!!!+rj!%!3#3""m!!!!H!!!!!`%!N!3H!*!)$'B!!!!N!!!0"3!!!$J!!!d G!!!!3!!!$6N!!!"-!!!063!!!&`!!!eE!!!!G!!!$@!!!!#!!!!0XIq3"!!!$E% !"J!!!!VrN!3"!*!%(`!!!!B!!!"Q!3#3""`!!!!Hrrrrr!%!N!3E!!!!+J!!!'B !N!8G!!!!+`!!!!-!N!8H!!!!,!!!!!-!!`!!!$J!N!J0i`!!!#3!!!k%!!!!3!! !$T`!!!")!!!1ZJ!!!&3!!!l2!!!!C!!!$Yi!!!"m!!!1i`!!!)J!!!mirj!%!!! 21!!'!!!!#[q3"!%!N!3I!!!!"3!!!'B"!*!%(!!!!"lrrrrm!3#3""X!!!!U!!! !CJ#3"4d!!!!V!!!!!`#3"4i!!!!X!!!!!`!$!!!!1!!"!*!'$lS!!!"!!!!2k`! !!&`!!"!F!!!!D!!!%$%!!!#%!!!3LJ!!!*!!!!!3U3!!!,!!!"$*!!!!c!!!%2S !!!$B!!!4$3!!!1J!!"%b!!!!m!!!%8(rN!3!!"&"!!-!!!!+rrrrq`%!N!3I!!! !22rrrrN"!*!%(J!!!$d!!!!$!3#3""d!!3#3"K&F!!!!-!!!%@lrN!3!!"''!!% !!!!+rrrrq`%!N!3I!!%!N!B4a2q3"!!!%Gi!!`!!!!Vrrrrh!3#3""m!!!!mrrr rq3%$!!!!A!!!!$B!!!!$!3-!!!"J!!%!N!B4q3!!!$J!!")*!!!!4!!!%LB!!!" -!!!5A3!!!(!!!"+#!!!!T!!!%XcrN!3!!",1!!-!!!!+rrrrp`%!N!3I!!!!53! !!'B!N!8G!!!!5J!!!!-!N!8H!!%!N!B6#J!!!$`!!"-P!!!!5!!!%d)!!!"3!!! 6F`!!!(!!!"1p!!!!I!!!%lrrN!3!!"1r!!3!!!!+rrrrp3%!N!3F!!!!22rrrrN "!*!%(`!!!$B!!!!$!3#3""d!!!"*!!!!CJ#3"4i!!3#3"K2Brj!%!!!6fJ!"!!! !#[rrrr8"!*!%(`#3#"33!!!!"!!!&"m!!!!-!!!8@!!!!$!!!"4G!!!!0!!!&'c rN!3!!"4X!!-!!!"9!!!!CJ%!N!3$!!!!9J!!!'X"!*!%"!!!!"i!!!!$!*!&(`! !rrrrr3!"!!!!DJ!#rrrrrJ!!!!X!!!!J!!S!!!!-!!!!CJ#3"`d!!!"Q!!!!"!! !!!i!!!"Q!!!!#!!!!!m!!!"Q!!!!$!!!!"!!!!!+!!!!%!!!!"%!!!!+!!!!%J! !!")!!!!+!!!!&!!!!"-!!!!'!!!!&J!!!"6rrrrp!!!!'!!!!"8!!!"N!!!!(!! !rj!%!!(rrrrq!!$rrrrm!!%!!!!$!!,rrrri!!!!1!!!!!J!!J!!!$N!!!"Q!*! (1J!!!!-!!!!%!!$rrrrj!!(rrrri!!,rrrrk!!!!0!!!!"J!"J!!!$8!!!"R!*! (+J!!!'3!!!!%!!!!(J!!!!-!!!!)!!!!0J!!!!-!!!!-!!!!0rrrrrN!!!!3!!! !1`!!!'3!!!!8!!$rrrrl!!(rrrrk!!,rrrrf!!!!4!!!!"J!!3!!!%Arrrrk!*! 'rrrrp`!"rrrrpJ!#rrrrp!!!!%i!!!!B!!%!!!"&rrrrqJ#3"[rrrr8!!Irrrr3 !!Irrrr-!!!!*!!!!!3!!!!F!!Irrrr)!!!!+!!!!!3!!!!F!![rrrr(rN!3!!!! )!!!!![rrrr$rN!3!!!!-!!!!![rrrqrrN!3!!!!)!!!!![rrrqlrN!3!!!!-!!! !!Irrrqd!!!!+!!!!!3!!!!F!![rrrqcrN!3!!!!-!!!!![rrrq[rN!3!!!!)!!! !![rrrqVrN!3!!!!-!!!!![rrrqRrN!3!!!!-!!!%U%G98dN!"'`Z8QPZCd4TFh4 IAdC3Be"M8'03B`!&QA0dBA*d!!1RC@jN!!3cCR*[E3!#rA4[!!5F3$Fd13!'9#j IAf0dAema-&*TEQG#G@CQCA*'9A-!"p8Z6Q9h8(4b!!4EG'KTF`!#K&*TEQG#G@C QCA)!"J0LG@CQCA)!"NePEQ4LG@B!"d"MEfjcG@eP!!F`F(*[C(9MC3!%kQCbC@8 !"GCfB@aTC!!&T(0`BA*P!!5VE'pMD`!(('4PCR"bEf-!!cTKFQF!"U"LG@CcDAS !",4!0c8a!!A%,PpIC(4IAc%`8QPZCd*eCQCPFNCf!!-),N4TFh"[Ff93G()!!Nm ZAepNE&pI4P"f!!5l3$Fe1!!#Abj3FQpNG@0PFPpI-6"5D@jR3R9QCQ9b4P*X!!1 8,PpIF(4bAfGXG@8!!maXC@i!!qPbCA-!"R"cG(*PB@X!"2C!0cFc!!)5,N0[ER0 eE@9bAema-&*TEQG#G@CQCA*'8Q`!""9!0cJb!!(L,PCKE'PNBA4PAema-&*TEQG #G@CQCA*'E!!%(%!h1$N!!e8Z5@jfB@aTC'&dC9pI-6"5D@jR3R9QCQ9b4Q`!"$G !1$!`!!--,N0[ER0eE@9IAc%`8QPZCd*eCQCPFNC3Be*X!!)[,N*XEf0V6@pfC3! $RQ*eCJ!%XA*PFh3!"&p`BA*d!!3r3$J`1!!$D#j3FQpNG@0PAema-&*TEQG#G@C QCA*'8'05E!!%A8!i-6B!!m!ZAepMG&pI190MBA4d4f&dD%C33c9TEhCPBfN!!,0 IAhCdAemj8f0KG(4(BA4S!!+(,NjPGdKKEQ4XC3!'L#j)6'pMD`!"aP0MBA4d4f& dD!!((A0MFQ&dBfJ!"39MEh9ZG!!#R'P[!!8cD@pfC@-!!(*TEhCIBQ&cC3!($'P [GPpXC@i!"r0IAhC`G()N!!-*D@pf!!22Bfjd!!5C3$Jc-J!$R#jIAf4dAemj8f0 KG(4(BA4S4RB!"X-Z4'PcF'pcC8KKEQ4XC3!%Rd!i-cJ!!i-ZAepMG&pI190MBA4 dCA*PFNC33c9TEhCPBfN!!%jIAhCdAemj8f0KG(4PFQ9b!!&"8f0KG(4PFQ9b!!) q*&0MBA4d4f&dD!!%Yd!i0$!!!bdZAepNG&pI190MBA4dCA*PFNCf!!GP,QePE@0 `H3!%df*`G()!"#pcC@0d!!6D3$Je-`!#hLjIAf0dAemi4f&dD'9bCA*'8%-eD@p fC@0T!!GTAepfG&pI1%GKG'KPFQ9b!!"-4f&dD'9bCA)!"2T!1$Bc!!*lAepNG&p I190MBA4d4f&dD%Cf!!6l3$Jf0!!#0LjIAf4dAemi4f&dD'9bCA*'GJ!%rd!i0MJ !"#%Z3fp`H8-b8&0dFPpI4P"$Be"9B`!%Af0cG()!"!C`Fh4b!!3G3$Jh0J!%(d! i0cJ!!P0IAe*89%PIAcP6Bf&dG%GKG'J!""j!1$Fh!!'MAep59&4*Aemi4f&dD'9 bCA)!!DjIAf4dAemi4f&dD'9bCA*'GJ!%)%!i0cN!"$K!1$J`!!*ZAep59&4*Aem j8f0KG(4PFQ9b!!)-AepNG&pI190MBA4dCA*PFNCf!!0Q3fp`H8-b8&0dFPpI4P" $Be"9B`!$IP423`!")&pIBh4IAcK(BA4SCA*PFNC33c9TEhCPBfN!!PpIAf0dAem j8f0KG(4PFQ9b4P"$0@P[GQ9MD3!#N9pIBh4IAcP6Bf&dG%GKG'K'8%-eD@pfC@0 T!!,48(*[C(9MC9pI-6"5D@jR3R9QCQ9b4P"M8Q`!!QT$EfjcG@ePAema-&*TEQG #G@CQCA*'8'05E!!#ZNPZGQ&XD@4KG'9IAc%`8QPZCd*eCQCPFNCX!!#&9Q&XD@4 KG'9IAc%`8QPZCd*eCQCPFNCX!!(l3fpZFh9YCA*IAc%`8QPZCd*eCQCPFNC5E!! "I&"bEf4eBf9bAema-&*TEQG#G@CQCA*'8Q`!"1aIAf4dAema-&*TEQG#G@CQCA* 'GJ!&%&pIBh4IAc%`8QPZCd*eCQCPFNC9F`!!45K36eG5!*!'Df`!!*@B!!!#E!! !DpJ!!#R!!!!`D!!!!Ed!!!@a!!!!R!#33%9R!!"&D3#3"3&&E`8%!!!!(3!!!!6 rrrrf!!!$&!#3"%9f#J#3""i!N!4&E`8%!!!!(`!!!!6rrrrf!!!$33#3"%9f#J# 3"#!!N!4&E`8%!!!!)J!!!!3!!!!$!!!$Q!!!!!&&EK!%!!!!*3!!!!3!!!!$!!! $q[q3"%9V!!3!!!!f!!!!'!!!!#!!!!LY,!-!!%'#!!b!JJ!!N!"N!!!iB2rr6S! !)%9d!`#3"$F!!!!)4@X!"!!!!$N!!!!B!!!!8J!!#4-X!`!!3B)!$)##!!#3!'3 !!$KJ!!"1J!!J4A3$!*!%0`!!!!K&EK!"!!!!2!!!!!,rrrrd!!!+%MS!!!"&D`! %!!!!23!!!qJ!!!#%!!!+%R`)!UDr)IrNN!!"!!L8)IqJ1m-!!)0#!!")!!!"B!! !!$XM!!#)'J!!+!!!!%##!"#!BJ!!Xb-!!%J!!"5!BJ!!U'-!!%J!!!&J!!!!2'" (9ML!+!!iBlG*5!!!!@!!!!"mI"Yj3B)!&$Km!!")!!!"B!!!!%J!!!JiB!!!1f- !!#`E!!4"J!!BJ(`!!)!$!!#3!"i!!#J!!!"!JJ!32'"846KM@&53!(i!!#`E!!K "J!!BJ(`!!)!$!!53!"i!"#J!!!"!JJ!32'"08$KM8b#3!(i!"#`E!!P!J!!31!! !!CJH!!K)!!!3J(`!!)J$!!LB(J!),"X!$N#!!"3mB$!a1'-`-T!!IJ!35!!!%)" m!!#!!`!+N!!H!"!X'`!+3)!!3$J!!!#B(J!*1!!!!*JH!!Si!!!!Q"i!#cJ!!!# B(J!-1!!!!*JH!!di!!!!Q"i!$MJ!!!#B(J!25!!"5)"m!!#)!`!*9!-'-$J!!!" mB`"3-!2rrh`!'4#B(J!*J(`!!)J$!!P8!`Cb1!!!!(aM!&!`!rrrI!!C%*JH!!S iJ!!!J"i!%$aJ-$%iBc8`I!!B3%'!!#b!(J!32'!`-6KM1$"m!"K!3B%!')"m!!# )!`!*9!!(18'#!!JiJ!!"Q*i!#cL!!!#!(J!32'!`-6KM1$&m!"K!3B!!')"m!!# )!`!*9!!(18'#!!JiJ!!"Q*i!$cL!!!#!(J!32'!`-6KM0c4m!"K!3B!!')"m!!# )!`!*9!!(Hd'#!!JiJ!!"Q*i!$$L!!!#!(J!32'!`-6KM0c4m!"K!3B!!')"m!!# )!`!*9!!([8'#!!JiJ!!"Q*i!$6L!!!#!(J!32'!`-6KM0c4m!"K!3B!!')"m!!# )!`!*9!!(rd'#!!JiJ!!"Q*i!$S!H!"!mB$!a1'-b-(`!'%""J!!-,"X!%%#!!"! i!!!!X"i!&%J!!"#!I!!!U!-!$V!H!"5S(J!8,!!!!%##!"!i!!!!N!!H!"C)!!# NU"i!&"aJ!!a)!!!"B!!!!*!!IJ!@+!-!!%'#!)JiI!!!5!!!!@!!!!#!IJ!@J*` !!$L%!"#S(J!8(+!!$%J!!!&J!!!!1k!!!%J!!%`li!!!5!!!1)"q!"BF(3!-I!$ k&(`$!+jm!!Gd,!!!)%##!"JiJ!!!J(i!&K`G!!am!2S8I)-"VM[r!!%X(`!%3B$ rb$Zp!!'S(J!8I"d!!%'!rl#)'J!!+!!!!%##!#Ji!!!"Q"S!!)JH!!NS!!!!3)) !)$KL!!")!!!"B!!!!%J!!"!iH3!!5!!!!@!!!!!iI!!!5!!!!@!!!!!iIJ!!J!% !D$JK!'"m#!1QZb(rj%k!!#"&G!-!N!3k!!!!&%9e!*!&2J!!!"K&G!-!N!3l!!! !-%9d!`#3"$X!!!!m4A8!N!8r!!!!4%9e!*!&3!!!!&K&G3#3"8%!!!"X4A8!N!9 #!!!#m%9e!*!&3`!!!`K&G3#3"83!!!-N4A-3!*!%2!!!!kK&G3#3"88!!!1X4A8 !N!8r!!!$[%9e!*!&4J!!!mK&EJ`%!!!!6`!!!!b!!*!,J!!$k$J!!!"&G`#3"6d !N!4&D`!%!!!!8!!!!A`!!!(m!!!4eR`)!UD6iIrmNm(rq*1Krr56JIr`N!!"!!L 8)IqJ1m-!!$ZN!!#!BJ!!J!-!!#J!!!""JJ!J1(d!!)##!!#"K!!!5!!!!@!!!!" 8B!Br3))"%+Kp!!#!R3!#1,d!"MM"!%")!!!"B!!!!(aJ"c9!JJ$`1(d!"ML!!#j )!!!"B!!!!(am'hP"JJ#N1"d!"RaJi&#)(3!'I!-!8#`!!!4"J3#-1'%!1$LF!!% i(3!'I+$J8)JG!!CmT3"35!!!!@!!!!!li!!!5!!!@)"q!"BF(`!-I'-#&$L"!$J iS!!%5!!!!@!!!!!X!`!!3))!-)#H!"BFI`!-1!-!"(`%!#k3!!%!3)#H!"BFI`! -1!-!#(`%!#k3!!%!4%J!!$!lr`!"U"i!&(`I!!""J2qNJ"i!!*!!!3"!J"i!"*! !!3"%S!%!5&3!"Lb`!3")U(d!!)#G!!)i[3!'1-%!3%J!!!&J!!!!J!%!D$JK!'" m#!1QJq(rr)2"rrL$SIrdJi(rm%k!!#"&G!-!N!3K!!!!*%9d!`#3"#%!!!!i4A8 !N!94!!!!3%9e!*!&8J!!!'"&G3#3"9-!!!"i4A8!N!98!!!!Z%9e!*!&93!!!0a &G3#3"9B!!!&84@i-"!!!!'N!!!!-J!#3#i!!!A`J!!!!4AF!N!93!*!%4@X!"!! !!'S!!!"B!!!#[!!!&6Gm#!+QN!!"!!L8)Ir!N!"K!&K)!!!"B!!!!)#$!!#!BJ! !1!-!bR`%!%""JJ!8J')!!$KM!-T)!!!"B!!!!$J!!!'!B3"BQ!-!$)!"!%Ji)3" !I!J$TNk!!#"&G3#3"@X!!!!34A3$!*!%E!!!!"a&G!-!N!4X!!!!,%9e!*!&E3! !!$4&EJ`%!!!!EJ!!!!b!!*!,J!!!@!#3"%9h!*!&DJ#3"%9U!!3!!!"[!!!!"!! !![i!!"D96S!!)%9V!!3!!!"`!!!!3!!!!a)!!"JcI!J#TT2Krrb3!!%!#*3Krm! li`!!L!-"!#J!!!""JJ!31!!!!*JI!3")!!!"J!%!5$JK!%"m#!1QJq(rr%k!!#" &G3#3"@m!!!!S4@i-"!!!!(%!!!!-J!#3#i!!!%!)!!!!4AF!N!9`!*!%4@X!"!! !!()!!!!)!!!$6!!!'2diB!"!6S!!)%9V!!3!!!"c!!!!k!!!!f!!!"NVI!J#TT2 Krrb6`IriNk(rp*!!!3!)P#(rX*!!B3"SN!#"!'b3!+%!F)"L!!")!!!"J'%!D%J !!!&J!!!!I(iEH8'#!(!iIJ!!J)%!E)#K!(#"RJ!!JB`!$%J!!!&J!!!!I(mEH8' #!%b!BJ!!1*m!!$LJ!!")!!!"B!!!!$ZM!!!X(Irr3B)!$$Kp!!")!!"%,"m!!%' #!"`iI`!!1)!!!B'I!!+"M!"J5!!!!@!!!!#!BJ!!J!-!!#`!!!"!JJ!31'!!$%J !!!&)!!!)1'$rri!"!&Ji)3"3I!J$TS2Krrb$`IriJk(rp%k!!#"&G!-!N!3@!!! !*%9e!*!&F!!!!#K&G3#3"A3!!!!`4A8!N!94!!!!9%9d!`#3""B!!!"N4A8!N!9 e!!!!F%9e!*!&83!!!+4&G!-!N!3h!!!!V%9e!*!&0J!!!-"&EJ`%!!!!I3!!!!b !!*!,J!!!k"J!!!"&G`#3"A-!N!4&D`!%!!!!IJ!!!83!!!33!!!DNA`)!UD6iIr mNm(rq*1Krr53!!%!#*3Krl#3!'%!D*!!J3"XN!#K!(!laJ!!Jq)!!$Kr!!")!!! "J'%!D%J!!!&J!!!!I(dEH8'#!-3iI3!!J)%!E)#K!(!i`3!iJCd!!)'-!"")!!! "B!!!!#`$!!"!JJ#F1(m!!)#"!$JiS!!!5!!!!@!!!!#3!(i!!#`$rrp"JJ!m1(m !!)#"!$`iS!!!5!!!!@!!!!#3!(i!"#`$rrp"JJ!-1'!!!%J!!(3iI`!!J*i!!%J !!!&J!!!!J'%!1#`$!!""JJ!B1)!!!B'$!!+"M!"J5!!!!@!!!!#!B3!m,!-!!%' #!"JiJ!!"JB-!!S'-!'")!!!"B!!!!)"L!!#!!`!!,!!!!%##!"!iB!!-5!!!!8J !!!JiB2rrJ!%!@$JK!&"m#!1QJq(rr)2"rrL$SIrd6S!!)%9d!`#3""B!!!!S4A8 !N!9`!!!!-%9e!*!&G!!!!$K&G3#3"9%!!!"J4A8!N!9e!!!!I%9e!*!&G3!!!*a &G3#3"Am!!!$!4A8!N!94!!!!i%9e!*!&83!!!3"&G!-!N!3h!!!"#%9e!*!&0J! !!4a&EJ`%!!!!J3!!!!b!!*!,J!!"4"J!!!"&G`#3"Ai!N!4&D`!%!!!!JJ!!!(J !!!6B!!!FVh`)!UD6iIrmN!!"!!L8)Ir!1q-!!%J!!!&J!!!!1'!!!6L!!!%iS!! !10m!!%J!!!%X!`!!3B)!$$KJrrp)!!!SJ(m!!$L!!!&)!!!"B!!!!)"r!!3iJ!! !5!!!!@!!!!!iB!!!J!%!5$JK!%"m#!1QJq(rr%k!!#"&G3#3"B-!!!!84A8!N!9 q!!!!,%9e!*!&K!!!!%K&G3#3"B3!!!"B4@i-"!!!!)8!!!!-J!#3#i!!!(J)!!! !4AF!N!@#!*!%4@X!"!!!!)B!!!#)!!!&)J!!(90m#!+QNq(rr*!!!3!)P#(r`*! !B3"BN!#"!&b3!+%!B*!!`3"NN!$K!'L4!3"XN5%!F)"K!&K)!!!"B!!!!(ar'hP "JJ!d1(m!!)#"!&b!S3"JJ-%!C)$K!'L"!3"XJ5%!F)'I!!#"M!!85!!!!@!!!!" )!!!)1'$rri!"!%Ji)3"!I!J$TS2Krra1J!!J4A8!N!9d!!!!-%9e!*!&83!!!'4 &EJ`%!!!!LJ!!!!b!!*!,J!!!L!J!!!"&G`#3"BB!N!4&D`!%!!!!L`!!!'`!!!@ q!!!H9(`)!UD6iIrmN!!"!!L8)Ir!N!"K!&L3!)%!A*!!S3"JJ')!!)#"!&K)!!! "B!!!!(ar'hP"JJ!N1(m!!)#"!&b!S3"JJCm!!S'-!!K)!!!"B!!!!%J!!!JiB2r rJ!%!5$JK!%"m#!1QJq(rr%k!!#"&G!-!N!3@!!!!(%9e!*!&M!!!!#4&G3#3"9% !!!")4@i-"!!!!*)!!!!-J!#3#i!!!'`)!!!!4AF!N!@,!*!%4@X!"!!!!*-!!!" X!!!'%J!!(ZPm#!+QNq(rr*!!!3!)P#(r`*!!B3"BN!#"!&b3!+%!B)"L!!#!J3" B5!!!!@!!!!"mIaYj3B)!*$Kr!!#!J3"FJ+%!B)'I!!+"M!!-5!!!!@!!!!")!!! )1'$rri!"!%Ji)3"!I!J$TS2Krra1J!!J4A3$!*!%&J!!!"a&G3#3"B`!!!!N4A8 !N!94!!!!5%9Z$!3!!!#@!!!!$)!!N!Z!!!"X#!!!!%9h!*!&N`#3"%9V!!3!!!# A!!!!C!!!"QB!!"q%I!J#TT2Krrb3!!%!#*3Krm#3!'%!@*!!J3"FJ')!!)#"!&K )!!!"B!!!!(ar'hP"JJ!J1(m!!)#"!&b"R`!#JB`!%%J!!!&J!!!!5!!!#$KJrrq !!3")1#%!3(`)!kD$iIrm6S!!)%9d!`#3""B!!!!B4A8!N!@-!!!!)%9e!*!&83! !!%"&EJ`%!!!!Q3!!!!b!!*!,J!!!C!J!!!"&G`#3"CF!N!4&D`!%!!!!QJ!!!-! !!!DX!!!Ikh`)!UD6iIrmNm(rq*!!!3!)P#(r`$[$!!#3!)%!A*!!S3"JJ')!!$L H!!")!!!"B!!!!(ar'hP"JJ"`1(m!!)#"!&b!S3"JJCm!!S'-!"4)!!!"B!!!!(a r'hP"JJ"-J')!!$LI!!!iS!!!5!!!!@!!!!!l``!!,"lrrd'#!!`iIJ!!5!!!+#` I!!""JJ!F1(m!!$L!!!'"R`!#JB`!B%J!!!&J!!!!1'$rri!"!%Ji)3"!I!J$TS2 Krrb$`Iri6S!!)%9d!`#3""B!!!!J4A8!N!@-!!!!+%9e!*!&83!!!%a&G!-!N!3 @!!!!A%9e!*!&G3!!!'K&G3#3"9%!!!#F4@i-"!!!!*X!!!!-J!#3#i!!!-!3!!! !4AF!N!@D!*!%4@X!"!!!!*`!!!!i!!!(+!!!)2Ym#!+QN!!"!!L8)Ir!N!"K!&J i!2rrN!!#!!#!BJ!!J)%!@%J!!!&J!!!!J!%!5$JK!%"m#!1Q6S!!)%9c%!#3"#8 !!!!84A3$!*!%&J!!!"K&G3#3"Am!!!!J4@i-"!!!!*d!!!!-J!#3#i!!!$J!N!4 &G`#3"C`!N!4&D`!%!!!!RJ!!!33!!!G5!!!MDR`)!UD6iIrmNm(rq*1Krr56JIr `N!!"!!L8)Iq`N!"K!'L3!)%!E*!!S3"`N!$"!(5$iJ!!Jm)!!)1L!!#)(J!)I!! (G8'#!&4)!!!"B!!!!#`$!!"!JJ!`J"m!!#J!!!""JJ!`1'!!#BLH!!KmK!GdJCm !!%J!!!&J!!!!,!-!!%'#!"!iB!!%5!!!!8J!!!`i!!!!N!!G!!!i!!!!N!!"!$L !BJ!!J)%!D%J!!!&J!!!!I(`EH8'#!$!iI!!!J)%!E)#K!(#!`3"d11!!!$N"!$L "R!!#JB`!)%J!!!&J!!!!5!!!#$KJrrq!!3"B1#%!8(`)!kD$iIrmJm(rq)1Krr5 $JIr`6S!!)%9d!`#3""d!!!!X4A3$!*!%!J!!!$"&G!-!N!3h!!!!0%9e!*!&R`! !!%4&G3#3"9%!!!"`4A8!N!8f!!!!K%9d!`#3""B!!!#F4A8!N!@-!!!!T%9e!*! &83!!!04&EJ`%!!!!S`!!!!b!!*!,J!!""#!!!!"&G`#3"Ci!N!4&D`!%!!!!T!! !!33!!!I5!!!N2R`)!UD6iIrmNm(rq*1Krr56JIr`N!!"!!L8)Iq`N!"K!'L3!)% !E*!!S3"`N!$"!(53!1%!H*%"!(b$iJ!!Jm)!!)1L!!#)(J!)I!!(G8'#!&4)!!! "B!!!!#`$!!"!JJ!`J"m!!#J!!!""JJ!`1'!!#BLH!!KmK!GdJCm!!%J!!!&J!!! !,!-!!%'#!"!iB!!%5!!!!8J!!!`i!!!!N!!G!!#!BJ!!J)%!D%J!!!&J!!!!I(` EH8'#!$!iI!!!J)%!E)#K!(#!`3"dJ1%!H)%"!(b"R!!#JB`!)%J!!!&J!!!!5!! !#$KJrrq!!3"B1#%!8(`)!kD$iIrmJm(rq)1Krr5$JIr`6S!!)%9d!`#3""d!!!! d4A3$!*!%!J!!!$K&G!-!N!3h!!!!2%9e!*!&R`!!!%a&G3#3"9%!!!"i4A8!N!8 f!!!!M%9d!`#3""B!!!#F4A8!N!@-!!!!T%9e!*!&83!!!04&EJ`%!!!!TJ!!!!b !!*!,J!!""#!!!!"&G`#3"D3!N!4&D`!%!!!!T`!!!83!!!KB!!!P*A`)!UDr!Ir JN!!"!!L8)Iq3!*!!B3#)1i3!!*!!S3#3!)2L!!#$`J!!Jk)!!)JH!!Km!!Ge3B) !9%J!!!&J!!!!,!-!!%##!$#!(`!!+!!!!%'#!$!iB!!*L*i!#(b%"h5"R`!!5!! !!@!!!!!X!`!!3B)!%$KJ!!4)!!!"5!!!$$J!!!#3!"d!!)"L!!#!J3#)5!!!!@! !!!"mHaYj3B)!P$KK!$L!R!!)J,`!$%J!!!&J!!!!J!%!2#J!!!""JJ"31(X!!)# "!$b!S3"!J-%!N!#!r!!!14`!")'E!!+"M!!J5!!!!@!!!!!l!`!!N`%!3$YB!!! iB3!i1)$rrdJ!!!&J!!!!1(S!!%J!!#`iB!!-5!!!!6XM!!!iB3!i1)$rrdJ!!!& J!!!!1(N!!%J!!!JiB2rrJ!%!H$JK!("m#!1QZ`(ri%k!!#"&G!-!N!3G!!!!(%9 d!`#3"!)!!!!J4A3$!*!%0`!!!#4&G3#3"Cm!!!!d4A8!N!94!!!!B%9e!*!&0J! !!(4&G!-!N!3@!!!!K%9e!*!&M!!!!)a&G3#3"DJ!!!#S4A8!N!94!!!!h%9e!*! &U3!!!2K&G3#3"6B!!!%-4A8!N!@T!!!"(%9Z$3)!!!#r!!!!')!!N!G!!!$J!1! !%!%3!4!!%!!!JJ!!1!#3"%9f#J`!!!$!!!!!&%9Z$!3!!!$"!!!!$)!!N!d"4!# 3"%9h!*!&T`#3"%9h$3#3",m!!!!)4@S!"!!!!-)!!!#!!!!)iJ!!*Xjm#!+QNq( rr*!!!3!)P#(r`$[M!!!X(rrr3))!8)"L!!#!!`!!,!!!#d'#!%"!J!!3,!!!"%' #!$4)!!!8,!!!*N#!!!`X!!!N3)!!))"L!!#)!`!1+!!!!%'#!"!iB!!05!!!!@! !!!!iI`!!J!%!5$JK!%"m#!1QJq(rr%k!!#"&G!-!N!3h!!!!(%9d!`#3"!)!!!" -4A8!N!A$!!!!B%9Z$!3!!!$&!!!!$)!!N!Z!!!#!#!!!!%9h!*!&`J#3"%9V!!3 !!!$'!!!"2!!!#53!!#I0I!J#TVmKrq53!!%!#*3Krj!!N!"K!)L3!)%!M*!!S3# 3!)2L!!#$`J!!Jk)!!)JH!!Km!!Ge3B)!9%J!!!&J!!!!,!-!!%##!$#!(`!!+!! !!%'#!$!iB!!*L*i!#(b%"h5"R`!!5!!!!@!!!!!X!`!!3B)!%$KJ!!4)!!!"5!! !$$J!!!#3!"d!!)"L!!#!J3#)5!!!!@!!!!"mI"Yj3B)!M$KK!$L!J3#-J+%!N!" )!!!"B!!!!)!"!$`S!!!!3B)!5$Km!!#!J3!mJ+%!3)'F!!+"M!!F5!!!!@!!!!! l)`!!Nb%!3%J!!!%lB`!!1'%!1$L!rrp)!!!"B!!!!$Kl!!")!!!X1'!!$%J!!!% l3`!!1'%!1$L!rrp)!!!"B!!!!$Kk!!")!!!)1'$rri!"!(Ji)3"`I!J$TVXKrq4 1J!!J4A3$!*!%(3!!!"a&G!-!N!3#!!!!)%9d!`#3"$F!!!!N4A8!N!@I!!!!0%9 e!*!&83!!!'"&G3#3"6B!!!"d4A3$!*!%&J!!!)4&G3#3"B`!!!#-4A8!N!A(!!! !U%9e!*!&83!!!0"&G3#3"F)!!!$J4A8!N!A)!!!!m%9e!*!&0J!!!34&G3#3"FJ !!!%84@i0!J!!!-`!!!!BJ!#3"cJ!!03!j!!3!3J"#!!3!!##!!!i!*!%4AB+$!! !!-d!!!!84@i-"!!!!-i!!!!-J!#3$3%m!*!%4AF!N!A'!*!%4AF0!*!%c!!!!!K &D`!%!!!!c`!!!3!!!!QZ!!!T#(`)!UD6iIrmNm(rq*1Krr56JIr`N!!"!!L8)Iq `N!"K!'L3!)%!E*!!S3"`N!$"!(5$iJ!!Jm)!!)1L!!#)(J!)I!!(G8'#!&4)!!! "B!!!!#`$!!"!JJ!`J"m!!#J!!!""JJ!`1'!!#BLH!!KmK!GdJCm!!%J!!!&J!!! !,!-!!%'#!"!iB!!%5!!!!8J!!!`i!!!!N!!G!!#!BJ!!J)%!D%J!!!&J!!!!I(` EH8'#!$3iI!!!J)%!E)#K!(#!`3"d11!!!$N!!!#"R!!#JB`!*%J!!!&J!!!!5!! !!8J!!!JiB2rrJ!%!@$JK!&"m#!1QJq(rr)2"rrL$SIrdJi(rm%k!!#"&G!-!N!3 G!!!!,%9d!`#3"!)!!!!`4A3$!*!%0`!!!$4&G3#3"Cm!!!"%4A8!N!94!!!!F%9 e!*!&0J!!!)4&G!-!N!3@!!!!P%9e!*!&M!!!!*a&G3#3"9%!!!$-4A8!N!A#!!! !e%9Z$!3!!!$3!!!!$)!!N!Z!!!%!)!!!!%9h!*!&c`#3"%9V!!3!!!$4!!!"#!! !#KJ!!#RHI!J#TT2Krrb6`IriNk(rp*1"rr#3!!%!#*3Krl#3!'%!D*!!J3"XN!# K!(#3!-%!G*!!i3"iN3%!I)2L!!#$`J!!Jk)!!)JH!!Km!!Ge3B)!9%J!!!&J!!! !,!-!!%##!$#!(`!!+!!!!%'#!$!iB!!*L*i!#(b%"h5"R`!!5!!!!@!!!!!X!`! !3B)!%$KJ!!4)!!!"5!!!$$J!!!#3!"d!!)"L!!#!J3"S5!!!!@!!!!"mI"Yj3B) !0$Km!!#!J3"XJ+%!F)$"!(5!i3"iJ3%!I)'F!!+"M!!N5!!!!@!!!!")!!!"5!! !#$KJrrq!!3"B1#%!8(`)!kD$iIrmJm(rq)1Krr5$JIr`6S!!)%9d!`#3""d!!!! d4A3$!*!%!J!!!$K&G!-!N!3h!!!!2%9e!*!&R`!!!%a&G3#3"9%!!!"i4A8!N!8 f!!!!M%9d!`#3""B!!!#F4A8!N!@-!!!!T%9e!*!&83!!!04&G3#3"F)!!!$F4@i -"!!!!03!!!!-J!#3#i!!!3JJ!!!!4AF!N!A4!*!%4@X!"!!!!08!!!&)!!!+RJ! !+ZKm#!+Q[`(ri*!!!3!)P#(rN!#3!'%!L$Z%!!#3!+%!N!#$iJ!!Jm)!!)1L!!# )(J!)I!!(G8'#!&4)!!!"B!!!!#`$!!"!JJ!`J"m!!#J!!!""JJ!`1'!!#BLH!!K mK!GdJCm!!%J!!!&J!!!!,!-!!%'#!"!iB!!%5!!!!8J!!!`i!!!!N!!G!!#!BJ! !J)%!L%J!!!&J!!!!I(XEH8'#!*JiB3!iJ*`!#)#m!!a)!!!"B!!!!)!"!$`S!!! !3B)!9$Kl!!#!J3!mJ+%!3)$"!*!!J2`!!)%F!!5"Q`!#JB`!*%J!!!&J!!!!1`- !!*-"!%")!!!"1d-!!$KK!$JiJ2rr5!!!!@!!!!!iHJ!!5!!!,$KJ!!a)!!!"1b- !!$KK!$JiJ2rr5!!!!@!!!!!iH3!!5!!!#$KJrrq!!3"i1#%!F(`)!kDl!IrJ6S! !)%9d!`#3""d!!!!F4A3$!*!%!J!!!#"&G!-!N!3h!!!!*%9e!*!&R`!!!$4&G3# 3"9%!!!"J4A8!N!8f!!!!G%9d!`#3""B!!!#%4A8!N!@-!!!!M%9e!*!&a`!!!+K &G3#3"9%!!!$F4A8!N!A#!!!!l%9e!*!&b!!!!2a&G3#3"6B!!!%34A8!N!A)!!! ")%9Z$3)!!!$@!!!!')!!N!G!!!$J!2!!%!%8!43!%!!!JJ!!1!#3"%9f#J`!!!$ 0!!!!&%9Z$!3!!!$A!!!!$)!!N!d"5!#3"%9h!*!&e3#3"%9h$3#3"0B!!!!)4@X !"!!!!0J!!!%)!!!,+!!!,-"m#!+Q[f(rl*!!!3!)P#(rS$YM!!!i!!!!Q!%!1MJ !!!#B!3!j1!!!!*J"!$Jl`!!!1k!!!)"L!!!iQ`!!5!!!!@!!!!!S!`!!3))!%$K J!!P)!!!"5!!!S)"L!!!iQ`!!5!!!!@!!!!!lJ`!!1r`!!+JF!!a8!!Ir3B)!#$[ "!$US(`!-9!!([8'#!!JlS3!j1(`!!$LH!!!i[3!!1-!!!)'F!!+"M!"B5!!!!@! !!!!X!`!!3B)!2)J"!$NS!!!!3B)!&)"r!!BiJ!!#5!!!!@!!!!#)!3!k+!!!!%' #!"5!I`!'1)!!!8J!!!&J!!!!1'!!!)!"!'Ji)3"JI!J$TVYKrqa1J!!J4A3$!*! %&J!!!$4&G3#3"B`!!!!m4A8!N!8f!!!!8%9d!`#3""B!!!"B4A8!N!@-!!!!B%9 e!*!&83!!!+K&G3#3"GN!!!$-4A8!N!AC!!!!k%9Z$!3!!!$j!!!!$)!!N!Z!!!% )+!!!!%9h!*!&f!#3"%9V!!3!!!$k!!!'#!!!$!`!!#pVI!J#TVi"rm#3!!%!#*3 Krf!kJ`!!1b3!!$Y&!!!lCJ!!1JF!!),L!!##SJ!!JX)!!$TJ!!!iB3"31)!!!$L J!!K)!!!"B!!!!$KK!%JiJ!!!1+!!#%J!!!&J!!!!1'%!3$L!!!!iS!!)5!!!!@! !!!!S%!!!3B)!))"`!!3i!%%DI'-$eS!3!!!F!!!mIN-#&%J!!!`q3(Ff1P+8!%J !!!&J!!!!1L-!!$[J!!")!!#B+"N!!%'#!#!iB!!"9q!'rRaJ!$"AiqMkI(NB,R` !'$P!JJ"-+"S!!%'#!#!iB!!"9q!'rRaJ!$"AiqMkI(SB,R`!'$P!JJ!S+"X!!%' #!%3iB!!"9q!'rRaJ!$"AiqMkI(XB,R`!'$P"JJ!S1(8!!$LI!!")!!!"B!!!!#J $!!"!JJ!31'!!#8J!!!&)!!5i1rm!!A`IS!""J2pS1q!!!%J!!23iG3!!1*m!!%J !!!&J!!!!I(JEH8'#!0Ji!!!!+"N!!%'#!#3iB!!"9q3'rRaN)$"AiqMkI(NB,Rb $'$P"JJ!)1!!!!CJ"!$ii!!!!+"S!!%'#!#3iB!!"9q3'rRaN)$"AiqMkI(SB,Rb $'$P"JJ!)1!!!!CJ"!$di!!!!+"X!!%'#!#3iB!!"9q3'rRaN)$"AiqMkI(XB,Rb $'$P"JJ!)1!!!!CJ"!$b)!3!q+!!!!%##!"b)!3!p+!!!!%##!"#)!3!m+!!!!%' #!#3iH!!!L)%!2SLK!$f)`3!mJCJ!!S'-!&4)!!!"B!!!!$[r!!&m(k!!3B$r$$[ J!!")!!')1(8!!$LI!!")!!!"B!!!!(ai'hP"JJ&X1!!!!*J"!$ii!!!!Q!%!26J !!!#B!3!m+"N!!%'#!#Ji!!!"9q-'rR`$'$"Ai1MkI"N!,RaJ!$P"JJ!-1m%!2NJ !!!Jl`!!!+"S!!%'#!#Ji!!!"9q-'rR`$'$"Ai1MkI"S!,RaJ!$P"JJ!-1k%!28J !!!JlS!!!+"X!!%'#!#Ji!!!"9q-'rR`$'$"Ai1MkI"X!,RaJ!$P"JJ!-1i%!2%J !!!JlJ!!!+"i!!%##!"3S(3!!3))!$#JF!!""JJ#X1(J!!$LH!!!i[3!!10`!!)' B!!+"M!"B5!!!!@!!!!"qFaS8L!%!2LJ!!!""JJ!N9q$SqMKK!&"m``!Z1)!!!9I P"[jmK#J`I-3MH(b$!5k)!3!p+!!!!%'#!#4Ai1Mk1'%!5(c$!#iiJ!!"9q8'rRb %+$"ma#0iI)-",SJ"!$`S!!!!3B)!*&IJk2SiB3"!I--!,ML!!!&Aj3EqI)3S-(c %)hKmJ`%Z1rm!!A`IS!""J2ji,"-!!%##!,#!&J!!N!!"!$Ji!!!!N!!@!!")!!! "B!!!!#`$!!"!JJ!XJ"F!!#J!!!""JJ!X1'!!!6L5!!#"P`!!5!!!!@!!!!!X!`! !3B)!%$KJ!!4)!!!"5!!!$$J!!!#3!"B!!)!@!!!X!!!!3B)!)$TJrrq!&J!!,!! !!%##!$L!!3!iN!!@!!")!!!XJ"B!!#`!!!"!JJ!-J!%!1*!!&J!!5!!!!@!!!!" m%4K3I!#3!%""J2fm1q!!!%J!!23iG3!!1*m!!%J!!!&J!!!!I(JEH8'#!0Ji!!! !+"N!!%'#!#3iJ!!"9q-'rRb%'$"AiqMkI(NB,Rb$'$P"JJ!)1!!!!CJ"!$ii!!! !+"S!!%'#!#3iJ!!"9q-'rRb%'$"AiqMkI(SB,Rb$'$P"JJ!)1!!!!CJ"!$di!!! !+"X!!%'#!#3iJ!!"9q-'rRb%'$"AiqMkI(XB,Rb$'$P"JJ!)1!!!!CJ"!$b)!3! q+!!!!%##!"b)!3!p+!!!!%##!"#)!3!m+!!!!%'#!#3iH!!!L)%!2SLK!$f)`3! mJCJ!!S'-!&a)!!!"B!!!!$[r!!&m(k!!3B$r$#`6!!"!J!!31'!!"%J!!!&)!!" 3+"N!!%'#!"5!B3"3J!%!9*!!H3!!N!!C!!3S'J!!3B)!&)"K!%L!!3"-N!"k!!# 3!"S!"#JE!!""JJ!8J'%!3)!"!%53!(X!!*!!'`!%1(-!!)!"!+Ji)3#JI!J$TVS "rm"1J!!J4A3$!*!%(3!!!#4&G!-!N!3@!!!!+%9d!`#3"$F!!!!X4A8!N!Al!!! !3%9e!*!&q`!!!&4&G3#3"IX!!!"S4A8!N!Am!!!!R%9e!*!&M!!!!54&G3#3"6B !!!%i4A8!N!@-!!!"A%9e!*!&83!!!MK&G3#3"B`!!!*F4A8!N!94!!!$4%9e!*! &R`!!!rK&G3#3"9%!!!3J4A8!N!8f!!!%0%9e!*!&r!!!")"&G3#3"B`!!!5N4A8 !N!94!!!&J%9e!*!&0J!!"D"&EJd#!!!"%J!!!"+!!*!(J!!$r!3i!!S!!))!!$J !N!C&GJS-!!!"%`!!!!j&EJ`%!!!"&!!!!!b!!*!0"JJ!N!4&G`#3"IS!N!4&G`d !!!!"%J!!!!K&D`#%!!!"&3!!!'L!!*!(I!J#TT2Krrb3!!%!#*3Krm"mIaYjX)% !AN'#!$L!BJ!!J!-!!#`!!!"!JJ!3J"m!!)"L!!#3!!-!!+J"!&iX!!!!3)%!%$K r!!")!!!"B!!!!$Kr!!#!!3")1#%!3(`)!kD$iIrm6S!!)%9d!`#3"$F!!!!F4A3 $!*!%0`!!!$"&G3#3"!%@!!!!5%9Z$!3!!!%A!!!!$)!!N!Z!!!"S#!!!!%9h!*! %!48!N!4&D`!%!!!"'!!!!'`!!!l3!!!hYA`)!UD6iIrmN!!"!!L8)Ir!N!"K!&L 3!)%!A*!!S3"JJ')!!)#"!&K)!!!"B!!!!(ar'hP"JJ!N1(m!!)#"!&b!S3"JJCm !!S'-!#K)!!!"B!!!!%J!!!JiB2rrJ!%!5$JK!%"m#!1QJq(rr%k!!#"&G!-!N!3 @!!!!(%9e!*!&M!!!!#4&G3#3"9%!!!")4@i-"!!!!4N!!!!-J!#3#i!!!'`)!!! !4AF!N!3"'!#3"%9V!!3!!!%D!!!!E!!!$b3!!$K+I!J#TT2Krrb3!!%!#*3Krm# 3!'%!@*!!J3"FN!#K!'#!BJ!!J)%!@%J!!!&J!!!!I(mEH8'#!#3iI`!!J)%!A)# K!'#"R`!#JB`!,%J!!!&J!!!!5!!!#$KJrrq!!3")1#%!3(`)!kD$iIrm6S!!)%9 d!`#3""B!!!!F4A8!N!@-!!!!*%9e!*!&83!!!%K&EJ`%!!!"'`!!!!b!!*!,J!! !E!J!!!"&G`#3"!%D!*!%4@X!"!!!!)3!!!"N!!!2H!!!10pm#!+QNq(rr*!!!3! )P#(r`*!!B3"BN!#"!&b!BJ!!J)%!@%J!!!&J!!!!I(mEH8'#!#!iI`!!J)%!A)' I!!+"M!"35!!!!@!!!!")!!!)1'$rri!"!%Ji)3"!I!J$TS2Krra1J!!J4A3$!*! %&J!!!"K&G3#3"B`!!!!J4A8!N!94!!!!3%9Z$!3!!!%G!!!!$)!!N!Z!!!"N#!! !!%9h!*!&K!#3"%9V!!3!!!%H!!!!A!!!$li!!$P*I!J#TT2Krrb3!!%!#*3Krm# 3!'%!@)"L!!#!J3"B5!!!!@!!!!"mIaYj3B)!()"L!!!iR`!!1+!!!%J!!!&J!!! !5!!!#$KJrrq!!3")1#%!3(`)!kD$iIrm6S!!)%9d!`#3""B!!!!84A8!N!@-!!! !(%9d!`#3""B!!!!X4A8!N!9e!!!!1%9Z$!3!!!%I!!!!$)!!N!Z!!!"F#!!!!%9 h!*!%!4i!N!4&D`!%!!!")!!!!*`!!!rf!!!jTR`)!UD6iIrmNm(rq*1Krr53!!% !#*3Krl#3!'%!D$ZN!!#$iJ!!1(m!!)#"!'K)!!!"B!!!!(aq'hP!JJ!-1'$rrdJ !!%!iI`!!1*d!!%J!!!&J!!!!+!-!!%'#!"3iI`!!1*d!!%J!!!&J!!!!1(m!!$L H!!!i[3!!5!!!!@!!!!#!!3"B1#%!8(`)!kD$iIrmJm(rq)1Krr41J!!J4A3$!*! %&J!!!#"&G3#3"B`!!!!X4A8!N!@-!!!!6%9e!*!&I`!!!'4&G3#3"A8!!!"i4@i -"!!!!5)!!!!-J!#3#i!!!*`B!!!!4AF!N!3")!#3"%9V!!3!!!%M!!!!E!!!%&` !!$U-I!J#TT2Krrb3!!%!#*3Krm#3!'%!@*!!J3"FN!#K!'#!BJ!!J)%!@%J!!!& J!!!!I(mEH8##!!`iB2rr5!!!)$Kr!!#!J3"FJ+%!B)'I!!+"M!!m5!!!!@!!!!# !!3")1#%!3(`)!kD$iIrm6S!!)%9d!`#3""B!!!!F4A8!N!@-!!!!*%9e!*!&83! !!&"&EJ`%!!!"*J!!!!b!!*!,J!!!E!J!!!"&G`#3"!%M!*!%4@X!"!!!!5F!!!" m!!!3`!!!1bGm#!+QNq(rr*!!!3!)P#(r`*!!B3"BN!#"!&b3!+%!B*!!`3"NN!$ K!'L!BJ!!J)%!@%J!!!&J!!!!I(mEH8'#!#`iI`!!J)%!A)#K!'#!`3"NJ1%!D)' I!!+"M!!`5!!!!@!!!!")!!!)1'$rri!"!%Ji)3"!I!J$TS2Krra1J!!J4A3$!*! %&J!!!#4&G3#3"B`!!!!X4A8!N!94!!!!@%9Z$!3!!!%X!!!!$)!!N!Z!!!"m#!! !!%9h!*!%!5F!N!4&D`!%!!!",3!!!(`!!"%`!!!lfR`)!UD6iIrmN!!"!!L8)Ir !N!"K!&L3!)%!A*!!S3"JN!$"!'53!1%!D)"L!!#!J3"B5!!!!@!!!!"mIaYj3B) !,$Kr!!#!J3"FJ+%!B)$"!'5!i3"SJCm!!S'-!$4)!!!"B!!!!%J!!!JiB2rrJ!% !5$JK!%"m#!1QJq(rr%k!!#"&G!-!N!3@!!!!*%9e!*!&M!!!!#a&G3#3"9%!!!" B4@i-"!!!!5i!!!!-J!#3#i!!!(`)!!!!4AF!N!3",3#3"%9V!!3!!!%[!!!!A!! !%D!!!$bD9'!'2L`!!!*"JJ!m3)!!&#`!!!""JJ!B3)!!)%k!!#!X!!!%6)!!)%J !!#L!SJ!!N!#&!!"1J!!JJ+)!!*!!K3!!6S!!))#L!!#3!)8!!%k!!##!SJ!!N!# &!!"1J!!J4A3$!*!%(3!!!#a&G!-!N!3I!!!!1%9d!`#3"#%!!!"%4A3$!*!%)J! !!&"&D`!%!!!"0`!!!'3!!"(i!!!phP4J"MiX!!!#3B)!2%#!!"3X!!!!3B)!'%# !!#")!!"!,!!!"%#!!$K)!!!SJ))!!)"N!!"1J!!JJ))!!)"N!!"1J!!JJ))!!)" N!!"1J!!JJ))!!)"N!!"1J!!J1'!!!%k!!#"&G!-!N!3G!!!!,%9d!`#3""m!!!! i4A3$!*!%)3!!!%4&G!-!N!3L!!!!8%9V!!3!!!%i!!!!C!!!%N)!!$mFNq(rr*! !BJ!!1!!!!,!#!!!li!!!5!!!1)##!!"ri!Fd9!!31R`%!#iS!!!!3B)!(+LL!!! iJ!!"Iq!(0(b!!$"mS!0iX!)!!$[r!!&ri!Fd,!!!%%'!rm3iB!!!Jq(rr%k!!#" &Fa!!N!3M!!!!"%9c%!#3"#3!!!!-4A-3!*!%)`!!!"K&Fa!!N!3N!!!!-%9c%!# 3"#3!!!"%4@X!"!!!!6X!!!!)!!!5NJ!!2p+!BJ!!6S!!)%9c%!#3"#-!N!4&D`# %!!!!G!!!!'3!!"+Q!!"!e(`)!UD6iIrmN!!"!!L8)Ir!I(mEH8'!!#!X(`!83)! !')"L!!"Ai"!kI!-!,LJ!!!"!JJ!81'!!&NJ!!!%iB!!!5!!!%)"L!!"Ai"!kI'- !,S!"!%Ji)3"!I!J$TS2Krra1J!!J4A3$!!!!!6`!!!!J4A8!N!8f!!!!1%9d!`! !!!%m!!!!4%9Z$!3!!!&"!!!!$)!!N!Z!!!"N#!!!!%9h!*!&G!#3"%9V!!3!!!& #!!!!1!!!%Z!!!%'8I!J#TT!!!3!)P#(r`)"L!!#)!`!!+!!!!%'#!"#!BJ!!5!! !!@!!!!#!!3")1#%!3(`)!kC1J!!J4A3$!*!%,J!!!!a&G!-!!!!"23!!!"a&G3# 3"!&$!!!!)%9Z$!3!!!&%!!!!$)!!N!Z!!!!i!*!%4AF!N!3"3J#3"%9V!!3!!!& &!!!!N!!!!"--!!""ih`)!UD6iIrmNm(rq*1Krr53!!%!#*3Krl!l``!!I*dMHB2 L!!#!!J!!N!!$!!""JJ!3J')!!&HJ%$Tr``%ZJ')!!)J$!!!S!!!!3B)!+)!I!!! S!!!!3))!()!I!!3S!!!!3))!%$Kr!!")!!!"B!!!!$Kq!!#!!3"B1#%!8(`)!kD $iIrmJm(rq)1Krr41J!!J4A3$!!!!!6d!!!!J4A3$!!!!!8B!!!!N4A3$!!!!!6` !!!!`4A3$!*!%,J!!!$a&G3#3"!&(!!!!D%9Z$!3!!!&)!!!!$)!!N!Z!!!#3!"J !!!"&G`#3"!&&!*!%4@X!"!!!!8N!!!"8!!!6A!!!3k0m#!+QNq(rr*!!!3!)P#( r`(ar'hQ`J3"H3B)!*)!#!!#3!"m!!+J"!&iX!!!!3)%!%$Kr!!")!!!"B!!!!$K r!!#!!3")1#%!3(`)!kD$iIrm6S!!)%9d!`!!!!&'!!!!(%9e!*!%!4B!!!!d4@i -"!!!!8S!!!!-J!#3#i!!!&3)!!!!4AF!N!3"53#3"%9V!!3!!!&,!!!!+!!!%hi !!%3%I!J#TT!!!3!)P#(r`$KJ!#e)!!!"1'!!!)!"!%Ji)3"!I!J$TNk!!#"&G3# 3"6B!!!!34@i-"!!!!8`!!!!-J!#3#i!!!#J!N!4&G`#3"!&,!*!%4@X!"!!!!8d !!!!N!!!6QJ!!4(0m#!+QN!!"!!L8)Ir!1'!!,8J!!!'!!3")1#%!3(`)!kC1J!! J4A8!N!8f!!!!%%9Z$!3!!!&1!!!!$)!!N!Z!!!!N!*!%4AF!N!3"63#3"%9V!!3 !!!&2!!!!*!!!%lB!!%60I!J#TT!!!3!)P#(r`$KJ!#e)!!!"J!%!5$JK!%"m#!1 Q6S!!)%9e!*!&0J!!!""&EJ`%!!!"8!!!!!b!!*!,J!!!*!#3"%9h!*!%!8m!N!4 &D`!%!!!"83!!!!3!!"25!!"&0%k!!#"&DJ!%!!!"8J!!!#J!!"2Q!!"&S(`)!UD 3!!%!#*3Krm#!BJ!!5!!!!@!!!!#!!3")1#%!3(`)!kC1J!!J4A3$!!!!!9-!!!! -4A8!N!3"9!!!!""&EJ`%!!!"93!!!!b!!*!,J!!!+!#3"%9h!*!%!9)!N!4&D`! %!!!"9J!!!%!!!"3+!!"&cR`)!UD6iIrmN!!"!!L8)Ir!1q-!!)"L!!")!!!"B!! !!$J!!!'B(`%!1(m!!)!"!%Ji)3"!I!J$TS2Krra1J!!J4A3$!!!!!9F!!!!84A8 !N!3"@!!!!"K&EJ`%!!!"@3!!!!b!!*!,J!!!3!J!!!"&G`#3"!&@!*!%4@X!"!! !!(8!!!#d!!!80!!!4Kam#!+QNq(rr*2"rrL6SIrdNi(rm*!!!3!)P#(rX$ZM!!! la!!!I,`VH8'!!!`X(!"!3B!!%$KJ!"C)!!!"5!!!@$[m!!")!!!mIq!(0&3!%$T m(3!Z+!!!!%##!#4ri!Fd9!!31RrG!5kSIJ!!1!-!!E!H!!"ri`Fd5!!!($[r!!& ri!Fd,!!!3%'!rm!iB!!B5!!!!B!"!&Ji)3"3I!J$TS2Krrb$`IriJk(rp)1"rr" 1J!!J4A8!N!8f!!!!1%9e!*!&0J!!!*!!4@i-"!!!!9X!!!!-J!#3#i!!!,3J!!! !4AF!N!9e!*!%4@X!"!!!!(m!!!#`!!!8Z!!!4cjm#!+QNq(rr*2"rrL6SIrdN!! "!!L8)Iq`1k-!!$[N!!")!!!","m!!%'!!"`X(`"!3)!!&&IJ%$Trh3!Z+"i!!%# #!"!iB!!*5!!!!8J!!%JiB!!!9q!31Rap!5kSIJ!!1!2rrl!H!!"m!!Fe3))!*#` H!!""JJ!F1(i!!$L!!!'"RJ!#JB`!B%J!!!&J!!!!1'!!!)!"!&Ji)3"3I!J$TS2 Krrb$`IriJk(rp%k!!#"&G3#3"A!!!!!J4A8!N!8f!!!!5%9e!*!&83!!!)K&EJ` %!!!"A!!!!!b!!*!,J!!!X"J!!!"&G`#3"Am!N!4&D`!%!!!!M!!!!(3!!"8Q!!" )*(`)!UD6iIrmNm(rq*1Krr53!!%!#*3Krl!lS`!!1q3!!%J!!!%X(`!!3B!!(#` I!%"!J!!89q!31RrG!#iS(J!!3))!&$KJ!!P)!!!"1'!!!%J!!!JiIJ!!J!%!@$J K!&"m#!1QJq(rr)2"rrL$SIrd6S!!)%9e!*!&F!!!!#"&G3#3"6B!!!")4@i-"!! !!9d!!!!-J!#3#i!!!(3B!!!!4AF!N!@-!*!%4@X!"!!!!9i!!!#N!!!9K!!!540 m#!+QNq(rr*2"rrL3!!%!#*3Krm"mIKYjX)%!AN'#!'b!BJ!!5!!!!@!!!!!i!!! !Q"i"!)"L!!")!!!"B!!!!$[J!!")!!!N9q!31R`H!#iS!!!!3B)!%$Kr!!")!!! "B!!!!$[r!!%X(`"!3B$rh+J"!&iX!!!!3)%!%$Kq!!")!!!"B!!!!$Kq!!#!!3" )1#%!3(`)!kD$iIrmJm(rq%k!!#"&G!-!!!!"8`!!!#"&G3#3"!&8!!!!*%9d!`! !!!&I!!!!0%9e!*!%!93!!!!i4A8!N!3"B!!!!&a&G3#3"!%@!!!!J%9Z$!3!!!& K!!!!$)!!N!Z!!!#N%!!!!%9h!*!%!9i!N!4&D`!%!!!!R`!!!&`!!"A8!!",0A` )!UD3!!%!#*3Krm#!!J!!,!!!!%'#!$4)!!!"B!!!!)!#!!"m!`"!3)%!)$J!!!# 3!!)!!$KJ!!j)!!!"B!!!!$KJ!!&)!!!)1'!!!)!"!%Ji)3"!I!J$TNk!!#"&Fa! !!!!"BJ!!!!a&G3#3"I`!!!!B4A-3!!!!!@)!!!!J4A-3!!!!!@)!!!!`4A8!N!A $!!!!1%9Z$!3!!!&M!!!!$)!!N!Z!!!"F!*!%4AF!N!@I!*!%4@X!"!!!!@3!!!# 8!!!@#!!!5m0m#!+QNq(rr*2"rrL3!!%!#*3Krm!l``!!J!)!!#`!!!""JJ!J5!! !!@!!!!#!!J!!I'!B8$J!!$ari`1@5!!!#$[J!!!S(J!!3B)!'%J!!!&J!!!!("i !2(`!'K4)!!!)1!!!!*!!!J!!,"m!!%#!!!`iB!!!5!!!#$Kr!!#!!3")1#%!3(` )!kD$iIrmJm(rq%k!!#"&Fa!!!!!"BJ!!!"K&G3#3"I`!!!!N4A-3!!!!!@)!!!! X4A8!N!Am!!!!6%9c%!!!!!&L!!!!C%9Z$!3!!!&R!!!!$)!!N!Z!!!#8%!!!!%9 h!*!%!@3!N!4&DJ!%!!!"D!!!!0`!!"Bi!!"-P(`)!UD6iIrmNm(rq*1Krr56JIr `N!!"!!L8)Iq`N!"K!'L$`J!!Jk)!!%J!!!&J!!!!J!%!D(rJ'K4)!!!",!-!!%# #!$5!(J!!+!!!!%'#!$4)!!!"B!!!!(b$q&!iB!!)JCi!!%J!!!&J!!!!,!-!!%' #!"!iB!!%5!!!!8J!!"`i!!!!N!!G!!")!!!"B!!!!(`I'%""JIqN5!!!!@!!!!" mIaK31!!!2(q$!jG!J!!-1'!!!%J!!!JiI!!!J!%!@$JK!&"m#!1QJq(rr)2"rrL $SIrdJi(rm%k!!#"&G!-!N!3G!!!!)%9d!`#3"$F!!!!N4A8!N!Am!!!!+%9e!*! &R`!!!$K&G3#3"I`!!!"34A8!N!94!!!!C%9e!*!&0J!!!(K&G3#3"I`!!!#)4A8 !N!Am!!!!Q%9Z$!3!!!&V!!!!$)!!N!Z!!!$F)!!!!%9h!*!%!@J!N!4&D`!%!!! "E!!!!$J!!"D1!!"0LA`)!UD3!!%!#*3Krm#3!'%!@)!"!&JF!!!$2'!!!6KM`e" mB"Z@5!!!!B!"!%Ji)3"!I!J$TNk!!#"&G3#3"!&S!!!!*%9Z$!3!!!&Z!!!!$)! !N!Z!!!!i!*!%4AF!N!3"E!#3"%9U!!3!!!&[!!!"(!!!&X!!!&%(I!J#TVl"rpL 3!!%!#*3Krj!!1q-!!$YJ!!#J!`!!,!!!!d'#!"#J(`!!,!!!"8##!0LJ(`!19!! &ld'#!-b!(`!#9"R'2U!I!!j8!!3XI"V,H$J!!!#3!!%!1$[!!!!iB!!Q5!!!!@! !!!"mI4Yj3))!2$KJ!"C)!!!"B!!!!$L!!#")!!!"B!!!!$V$!!!mB%Y$1*B!!$K M5&*)!!!"B!!!!$[$!!#$S`!!+"d!!%'#!$3iI3!!1*S!!$LK!$K)!!!"B!!!!$Z $!!!S(J!!3B)!'$Kq!!")!!!"B!!!!%J!!!L$R`!#9jJ'2PH!!Kjm&iC`,"J!,N' #!!`X&`!Z3))!#$YJ!!%iH`!!J!%!H$JK!("m#!1QZX(rf%k!!#"&G3#3"!&`!!! !B%9e!*!%!A!!!!"d4A8!N!3"F3!!!)"&G3#3"!&b!!!!Q%9e!*!%!A-!!!#m4A8 !N!9'!!!!e%9Z$!3!!!'&!!!!$)!!N!Z!!!%F8!!!!%9h!*!%!@m!N!4&D`!%!!! "KJ!!!&`!!"IQ!!"@GR`)!UD6iIrmN!!"!!L8)Ir!5!!!!@!!!!#$i`!#5!!!)$K r!!C)!!!"9'!'2d'#!!`iB!!"5!!!&)2r!!!S(`!!3),ri$KJ!!#!!3")1#%!3(` )!kD$iIrm6S!!)%9e!*!%!BF!!!!34A8!N!3"E`!!!#4&EJ`%!!!"N`!!!!b!!*! ,J!!!A!J!!!"&G`#3"!''!*!%4@m&"!!!!C3!!!!%!!!!!`!!9fB!!!!"4@X!"!! !!CJ!!!+i!!!B-!!!9jCm#!+Q[b(rj*!!!3!)P#(rN!!l)`!!1d3!!)1#!!#$`J! !L!)!!(`!"h9!JJ!81!!!!CJ#!!!i!!!"Q!)!!$ZJ!!DS!J!!B"Z%!SJH!!`S!!! !3))!$$Kq!!")!!!"L!)!!#J!!!""JJ"39b!'2LJ!!!P!JJ!-1rS!!%J!!!b!BJ! !Jq-!!)!F!!"m!2S8N!!F!!#!(!!!9!!'rR`!q!"!J!!-1'!!)%J!!!L!I!!!5!! !!@!!!!")!!!"9'!'2d##!G#!BJ!!J!-!!#`!!!"!JJ!`L!)!!#J!!!""JJ!NL"i !$bJ!!!"!JJ!3U!)!!'!E"!")!!!-1'!!!%J!!DaA)!Bq,!!!#%'#!#"!J!!3,!! !!8'#!"4)!!!F,!!!#N#!!"4)!!!-I"VS!%#!!!JlS!!!1(X!!$L"!$Ji[3!!1-! !!%J!!!&J!!!!9'!'2d'#!05J!3!i,!!!$d'#!'a!J!!3,!!!!8'#!"4)!!#i,!! !&d'#!(K)!!#XJ!)!!#J!!!""JJ!8J')!!)!$!!3S!!!!3))!N!#!B3"#1)%!5%J !!!&J!!!!I'!(0#`!!!*!JJ"d1'%!1)#"!%K)!!!"B!!!!%J!!'#!!3!k9!!(rd' #!"!i!!!"Q!)!!%J!!%Ji!!!!Q!)!!%J!!$b!!J!!+!!!!%'#!"5!BJ!!J!-!A#J !!!"!JJ!JJ')!!)J$!!!S!!!!3B)!%$KK!$K)!!!"B!!!!+#"!$Ji!!!!9!!%2MK Jrrpm!#!3I!-"N!#J!3!i+!!!'%#!!%5!!J!!+!!!!%'#!$L!BJ!!S!%!1&3!%$T m!`!Z+!!!!%'#!#!iB3!iJ))!!+!"!$K8!"!kIB3!,NJ!!!&J!!!!1'!!!%J!!"` mB!!"1)!!!$KMrrp)!!!"B!!!!$KJrrq!!3"i1#%!F(`)!kDl)IrN6S!!)%9d!`! !!!'9!!!!'%9d!`#3"!)!!!!F4A-3!!!!!CF!!!!J4A-3!!!!!CB!!!!`4A-3!!! !!CF!!!!i4A-3!*!%*!!!!%"&G3#3"@S!!!"B4A-3!!!!!CB!!!"F4A3$!*!%)J! !!(a&G3#3"!'C!!!!V%9e!*!%!BB!!!#d4A3$!!!!!C3!!!$!4A-3!!!!!CB!!!$ 34A-3!*!%*!!!!1K&G3#3"!'D!!!"3%9c%!#3"#-!!!&i4A-3!*!%)`!!!B4&G3# 3"!'E!!!"R%9e!*!%!C`!!!'i4A-3!!!!!CB!!!(84A-3!!!!!CB!!!(J4A-3!*! %)`!!!HK&Fa!!N!3M!!!"p%9d!`#3"$3!!!)%4A8!N!3"R3!!!KK&Fa!!N!3M!!! #4%9c%!#3"#-!!!*34A-3!*!%)`!!!Qa&G3#3"9%!!!*m4A8!N!3"RJ!!!TK&EJ` %!!!"p!!!!!b!!*!,J!!#Z$J!!!"&G`#3"!'B!*!%4@X!"!!!!I8!!!"d!!!CRJ! !AUGm#!+QNq(rr*2"rrL3!!%!#*3Krm!li`!!X)%!ATLK!'-mB!!"1)!!!6KMU*p )!!!"B!!!!$[$!!#JB3"HL)%!BdJ!!!&J!!!!I'2`8$!$rrpm!"N3Q"m!!$Kr!!# !!3")1#%!3(`)!kD$iIrmJm(rq%k!!#"&G3#3"!(f!!!!,%9e!*!%!IB!!!"!4@i -"!!!!IN!!!!-J!#3#i!!!(33!!!!4AF!N!3"p3#3"%9V!!3!!!(k!!!!F!!!'H3 !!&mlI!J#TT2Krrb6`IriN!!"!!L8)Iq`1q-!!*!!J3"XN!#K!(!l`!!!J'%!E$L "!$K)!!!"B!!!!(aJ"c9!JJ!BJ'%!1)!"!("m!`!!3B!!#$[!!!'Eh`!!1(m!!)! "!&Ji)3"3I!J$TS2Krrb$`Iri6S!!)%9e!*!%!IX!!!!X4@i-"!!!!Ii!!!!-J!# 3#i!!!(!3!!!!4AF!N!3"qJ#3"%9V!!3!!!(r!!!!I!!!'MJ!!&qXI!J#TT2Krrb 6`IriN!!"!!L8)Iq`1q-!!*!!J3"XN!#K!(#3!-%!G$[!!!#!B3"X1)%!1%J!!!& J!!!!I'!(08##!##!J3"dJ'%!1)!"!("mB!!iI!3!!%##!!Jl`!!"Qpm!!$Kr!!# !!3"B1#%!8(`)!kD$iIrmJm(rq%k!!#"&G3#3"!(l!!!!-%9Z$!3!!!)!N!3-J!# 3#i!!!(`3!!!!4AF!N!3"r`#3"%9V!!3!!!)"!!!!E!!!'TS!!'!aI!J#TT2Krrb 6`IriN!!"!!L8)Ir!1q-!!*!!J3"FN!#K!'!l`!!!J'%!A)J$!!!S!!!!3B)!()' "!'")!!!"B!!!!(aJ"c9!JJ!)1m!!!C[I!!!iI`!!J!%!5$JK!%"m#!1QJq(rr)2 "rrK1J!!J4A8!N!94!!!!1%9Z$!3!!!)%!!!!$)!!N!Z!!!"X%!!!!%9h!*!%!J% !N!4&D`!%!!!#"3!!!%`!!"VB!!"JRA`)!UD6iIrmN!!"!!L8)Ir!1q-!!*!!J3" FJB%!A%J!!!&J!!!!I'!(0(`!!$48!0PqQ"m!!$Kr!!#!!3")1#%!3(`)!kD$iIr m6S!!)%9e!*!&83!!!"a&EJ`%!!!#"J!!!!b!!*!,J!!!6!J!!!"&G`#3"!)&!*! %4@X!"!!!!JF!!!"N!!!E%!!!B0Ym#!+QNq(rr*2"rrL3!!%!#*3Krm!li`!!N!# K!'#)"!!!+!!!!%'#!"`i!!!"Q"m!!)'"!'")!!!"B!!!!%J!!!`i!!!!Q"m!!$K r!!#!!3")1#%!3(`)!kD$iIrmJm(rq%k!!#"&G3#3"9%!!!!d4@i-"!!!!JJ!!!! -J!#3#i!!!'33!!!!4AF!N!3#"`#3"%9V!!3!!!)*!!!!4!!!'hB!!'&VI!J#TT2 Krrb3!!%!#*3Krm!li`!!N!#"!&`i!!!"Q!-!!)'"!&a)!!!"B!!!!$Kr!!#!!3" )1#%!3(`)!kD$iIrm6S!!)%9e!*!&83!!!#4&EJ`%!!!##J!!!!b!!*!,J!!!4!J !!!"&G`#3"!)*!*!%4@X!"!!!!JX!!!!S!!!EYJ!!BDii`!!!L!3!!#J!!!""JJ! 8L!8!!#J!!!""JJ!)1-!!!CM$!!"1J!!J4@X!"!!!!K)!!!#3!!!!'r`!!')+I!J #TT!!!3!)P#(r`*!!B3"BN!#"!&b)!J!!I!!(G8##!"3i!!!"X!)!!$J!!!'B!J! !U!)!!#`!!!&!JJ!X5!!!!@!!!!#`BJ!!I'!(08##!"JiBJ!!1))!!%J!!!&J!!! !X')!!+J#!!#!B3"BX!-!!+J#!!#!B3"FX!-!!+KL!!#!!3")1#%!3(`)!kC1J!! J4A-3!!!!!K%!!!!84A-3!!!!!K!!!!!N4A-3!!!!!K%!!!!X4A-3!!!!!K!!!!! `4A8!N!3#%`!!!$a&Fa!!!!!#%!!!!%4&Fa!!!!!#$`!!!&"&Fa!!!!!#$J!!!&4 &G3#3"!)8!!!!@%9c%!!!!!)3!!!!B%9c%!!!!!)1!!!!C%9c%!!!!!)2!!!!F%9 c%!!!!!)3!!!!I%9Z$!3!!!)A!!!!$)!!N!Z!!!#3!!#3"%9h!*!%!K)!N!4&D`! %!!!#'!!!!'3!!"a8!!"MMR`)!UD3!!%!#*3Krm#!BJ!!5!!!!@!!!!#!BJ!!5!! !!@!!!!#!BJ!!5!!!!@!!!!#!BJ!!5!!!!@!!!!#!BJ!!5!!!!@!!!!#!BJ!!5!! !!@!!!!#!!3")1#%!3(`)!kC1J!!J4A3$!!!!!KN!!!!-4A8!N!3#'J!!!""&G!- !!!!#'`!!!"K&G3#3"!)D!!!!(%9d!`!!!!)F!!!!*%9e!*!%!KS!!!!S4A3$!!! !!Kd!!!!`4A8!N!3#'J!!!$4&G!-!!!!#(J!!!$a&G3#3"!)D!!!!3%9d!`!!!!) I!!!!5%9e!*!%!KS!!!"-4@i-"!!!!L!!!!!-J!#3#i!!!'3!N!4&G`#3"!)B!*! %4@X!"!!!!KS!!!!X!!!FS!!!C(Pm#!+QN!!"!!L8)Ir!N!"K!&L"J3"B5!!!!@! !!!#!!3")1#%!3(`)!kC1J!!J4A8!N!94!!!!&%9Z$!3!!!)L!!!!$)!!N!Z!!!! X!*!%4AF!N!3#'J#3"%9Z"3%!!!)M!!!!$Irrrl%!!'4j8fpMDf9d4'pYB@PZ!!! $c89Z"33!!!)N!!!!#2rrrl!!!'4j!*!)4AB&!!!!!L-!N!4&E`8%!!!"4J!!!"M rrrq[!!"NH3#3'%9f"3!!!!)N!*!%4AB+!!!!!L8!!!!84AB+!!!!!LB!!!!34AB +!!!!!LF!!!!-4AB+!!!!!LJ!!!!)4@S!"!!!!LN!!!%SJ!#3"h`)!UD3!!%!#*3 Krm#!BJ!!5!!!!B"L!!")!!!"J))!!)#L!!")!!!"B!!!!)"L!!!mJ'Cc1+!!!MM !!!)iK#!J5!!!!B"L!!!mJ'&X1+!!!6M!!!%iK'Pc5!!!!B"L!!!mJ(0d1+!!!6M !!!%iK'4Q5!!!!B"L!!!mJ'pc1+!!#$M!!!JiK#!J5!!!!B"L!!!mJ'0b1+!!!6M !!!%iK'dJ5!!!!B"L!!#!JJ!!J+)!!%J!!!'!BJ!!J))!!)#L!!")!!!"J')!!$b !EQ`iS!!"1-!!!6L%GA")!!!"J')!!)##!!#!SJ!!5!!!!B"L!!!mJ'9f1+!!!6M !!!%iK'jd5!!!!B"L!!!mJ(4Y1+!!!ML%Ch*)!!!"J!%!5$JK!%"m#!1Q6S!!)%9 d!`#3"!)!!!!-4A8!N!8p!!!!%%9d!`#3""B!!!!84A8!N!3"9J!!!"K&G!-!!!! #+J!!!"a&G!-!N!39!!!!)%9e!*!%!LX!!!!N4A3$!*!%+3!!!#a&G3#3"!(r!!! !3%9d!`#3"#`!!!"%4A8!N!3"r`!!!&K&G!-!N!3Y!!!!A%9e!*!%!Im!!!"`4A3 $!*!%,J!!!(4&G3#3"!(r!!!!L%9d!`#3"#m!!!#-4A8!N!3"r`!!!+"&G!-!N!3 `!!!!T%9d!`#3"#m!!!#S4A3$!!!!!L`!!!#X4A8!N!3#!3!!!,"&G!-!N!3a!!! !Y%9d!`#3"$!!!!#i4A3$!!!!!Ld!!!#m4A8!N!3#!3!!!-"&G!-!N!3b!!!!a%9 e!*!%!Im!!!$B4A3$!*!%-`!!!0a&G!-!N!3a!!!!i%9d!`#3"$)!!!$N4A8!N!3 ##`!!!1K&G!-!N!3d!!!!l%9e!*!%!Im!!!%!4A3$!*!%03!!!34&G3#3"!(k!!! "&%9Z$!3!!!)Z!!!!$)!!N!Z!!!%S!*!%4AF!N!3#+3#3"%9X%!%!!!)4!!!!!3! !!!F!!')+4@`3!J!!!K!!!!!#!!!!#`!!BJT&E"!#!!!#$`!!!!)!!!!,!!"L#N9 X%!)!!!)1!!!!!J!!!!X!!')+4@`3!3!!!CF!!!!"!!!!"`!!9jC&E"!"!!!"PJ! !!!%!!!!'!!"APN9Y"33!!!'9!!!!"!!!!!-!!&Gk4@`3"!!!!@)!!!!%!!!!!`! !5aP&E38%!!!"23!!!!Mrrrr+!!"!U%9Y"33!!!%m!!!!82rrrmX!!%"[4@d&!J! !!$X!!!!#!!!!#`!!#I0&E38"!!!!1J!!!!%!!!!'!!!*a%9Y"3%!!!!e!!!!![r rrr8!!!J'4@d&!3!!!$3!!!!#rrrrp3!!"iP&E38"!!!!-`!!!!,rrrre!!!(B89 Y"3%!!!!b!!!!![rrrr8!!!Ef4@d&!3!!!$%!!!!#rrrrp3!!"Xa&E38"!!!!-!! !!!,rrrre!!!'U89Y"3%!!!![!!!!![rrrr8!!!C+4@d&!3!!!#i!!!!#rrrrp3! !"H"&E38"!!!!,3!!!!,rrrre!!!&F%9Y"3%!!!!X!!!!![rrrr8!!!8"4@d&!3! !!#N!!!!#rrrrp3!!"*9&E38"!!!!+!!!!!%!!!!'!!!%Fd9X%!3!!!!R!!!!"!! !!!-!!!3h4@`3"!!!!#B!!!!%!!!!!`!!""P&E"!#!!!!*!!!!!)!!!!,!!!$h%9 X%!3!!!!M!!!!"!!!!'S!!!1b4@d&"!!!!#%!!!!%rrrrpJ!!!fa&E38%!!!!&J! !!3,rrrrk!!!#dN9X"3%!!!!9!!!!$2rrrrX!!!,54@d&"!!!!!)!!!!Drj!%!!! #Jd9[#J3!!!)[!!!!#)!!N!p&GJ#3"!)D!*!%4AB2!!!!!M!!!!!%4@m+"!!!!M% !!!!)J!#3$d9f!*!%!KJ!N!4&GJm!!!!#-!!!!!4&E`S%!!!#-J!!!!L!!*!24AB !N!3#%J#3"%9f$`!!!!)`!!!!"%9[#J3!!!)c!!!!#)!!N!p&GJ#3"!),!*!%4AB 2!!!!!M!!!!!%4@m+"!!!!M3!!!!)J!#3$d9f!*!%!JN!N!4&GJm!!!!#-!!!!!4 &E`S%!!!#03!!!!L!!*!24AB!N!3#"`#3"%9f$`!!!!)`!!!!"%9[#J3!!!)f!!! !#)!!N!p&GJ#3"!)&!*!%4AB2!!!!!M!!!!!%4@m+"!!!!MF!!!!)J!#3$d9f!*! %!J%!N!4&GJm!!!!#-!!!!!4&E`S%!!!#1!!!!!L!!*!24AB!N!3"r`#3"%9f$`! !!!)`!!!!"%9[#J3!!!)j!!!!#)!!N!p&GJ#3"!(k!*!%4AB2!!!!!M!!!!!%4@m +"!!!!MS!!!!)J!#3$d9f!*!%!I8!N!4&GJm!!!!#-!!!!!4&E`S%!!!#1`!!!!L !!*!24AB!N!3"KJ#3"%9f$`!!!!)`!!!!"%9[#J3!!!)m!!!!#)!!N!p&GJ#3"!& X!*!%4AB2!!!!!M!!!!!%4@m+"!!!!Md!!!!)J!#3$d9f!*!%!@3!N!4&GJm!!!! #-!!!!!4&E`S%!!!#2J!!!!L!!*!24AB!N!@I!*!%4AB2!!!!!M!!!!!%4@m+"!! !!LS!!!!)J!#3$d9f!*!%!9i!N!4&GJm!!!!#-!!!!!4&E`S%!!!#2`!!!!L!!*! 24AB!N!@-!*!%4AB2!!!!!M!!!!!%4@m+"!!!!N!!!!!)J!#3$d9f!*!&I`#3"%9 f$`!!!!)`!!!!"%9[#J3!!!*"!!!!#)!!N!p&GJ#3"A8!N!4&GJm!!!!#-!!!!!4 &E`S%!!!#3J!!!!L!!*!24AB!N!3"9J#3"%9f$`!!!!)`!!!!"%9Z#J3!!!&A!!! !#)!!N!p&GJ#3"!&5!*!%4AB2!!!!!M!!!!!%4@m+"!!!!N-!!!!)J!#3$d9f!*! %!9%!N!4&GJm!!!!#-!!!!!4&E`S%!!!#*3!!!!L!!*!24AB!N!3"6`#3"%9f$`! !!!)`!!!!"%9[#J3!!!)Q!!!!#)!!N!p&GJ#3"!&0!*!%4AB2!!!!!M!!!!!%4@m +"!!!!LF!!!!)J!#3$d9f!*!%!8X!N!4&GJm!!!!#-!!!!!4&E`S%!!!#+!!!!!L !!*!24AB!N!3"53#3"%9f$`!!!!)`!!!!"%9[#J3!!!*%!!!!#)!!N!p&GJ#3"!& &!*!%4AB2!!!!!M!!!!!%4@m+"!!!!N8!!!!)J!#3$d9f!*!%!8)!N!4&GJm!!!! #-!!!!!4&E`U%!!!#4J!!!!L!!*!24AB!N!9d!*!%4AB2!!!!!M!!!!!%4@m+"!! !!NF!!!!)J!#3$d9f!*!%!6X!N!4&GJm!!!!#-!!!!!4&E`S%!!!#5!!!!!L!!*! 24AB!N!3"1!#3"%9f$`!!!!)`!!!!"%9[#J3!!!**!!!!#)!!N!p&GJ#3"!%h!*! %4AB2!!!!!M!!!!!%4@m+"!!!!NS!!!!)J!#3$d9f!*!%!5m!N!4&GJm!!!!#-!! !!!4&E`S%!!!#5`!!!!L!!*!24AB!N!3",3#3"%9f$`!!!!)`!!!!"%9[#J3!!!* -!!!!#)!!N!p&GJ#3"!%R!*!%4AB2!!!!!M!!!!!%4@m+"!!!!Nd!!!!)J!#3$d9 f!*!%!5-!N!4&GJm!!!!#-!!!!!4&E`S%!!!#6J!!!!L!!*!24AB!N!3")!#3"%9 f$`!!!!)`!!!!"%9[#J3!!!*2!!!!#)!!N!p&GJ#3"!%H!*!%4AB2!!!!!M!!!!! %4@m+"!!!!P!!!!!)J!#3$d9f!*!&K!#3"%9f$`!!!!)`!!!!"%9[#J3!!!*4!!! !#)!!N!p&GJ#3"!%D!*!%4AB2!!!!!M!!!!!%4@m+"!!!!P)!!!!)J!#3$d9f!*! %!4J!N!4&GJm!!!!#-!!!!!4&E`U%!!!"%`!!!!L!!*!24AB!N!3"&3#3"%9f$`! !!!)`!!!!"%9[#J3!!!*6!!!!#)!!N!p&GJ#3"IS!N!4&GJm!!!!#-!!!!!4&E`S %!!!#9!!!!!L!!*!24AB!N!AB!*!%4AB2!!!!!M!!!!!%4@m+"!!!!P8!!!!)J!# 3$d9f!*!&e3#3"%9f$`!!!!)`!!!!"%9[#J3!!!*@!!!!#)!!N!p&GJ#3"G%!N!4 &GJm!!!!#-!!!!!4&E`S%!!!#9`!!!!L!!*!24AB!N!A2!*!%4AB2!!!!!M!!!!! %4@m+"!!!!PJ!!!!)J!#3$d9f!*!&aJ#3"%9f$`!!!!)`!!!!"%9[#J3!!!*C!!! !#)!!N!p&GJ#3"DF!N!4&GJm!!!!#-!!!!!4&E`S%!!!#@J!!!!L!!*!24AB!N!@ N!*!%4AB2!!!!!M!!!!!%4@m+"!!!!PX!!!!)J!#3$d9f!*!&RJ#3"%9f$`!!!!) `!!!!"%9[#J3!!!*F!!!!#)!!N!p&GJ#3"C`!N!4&GJm!!!!#-!!!!!4&E`S%!!! #A3!!!!L!!*!24AB!N!@D!*!%4AB2!!!!!M!!!!!%4@m+"!!!!Pi!!!!)J!#3$d9 f!*!&P`#3"%9f$`!!!!)`!!!!"%9[#J3!!!*I!!!!#)!!N!p&GJ#3"C-!N!4&GJm !!!!#-!!!!!4&E`S%!!!#B!!!!!L!!*!24AB!N!@,!*!%4AB2!!!!!M!!!!!%4@m +"!!!!Q%!!!!)J!#3$d9f!*!&KJ#3"%9f$`!!!!)`!!!!"%9[#J3!!!*L!!!!#)! !N!p&GJ#3"B)!N!4&GJm!!!!#-!!!!!4&E`S%!!!#B`!!!!L!!*!24AB!N!9q!*! %4AB2!!!!!M!!!!!%4@m+"!!!!Q3!!!!)J!#3$d9f!*!&F`#3"%9f$`!!!!)`!!! !"%9[#J3!!!*P!!!!#)!!N!p&GJ#3"A)!N!4&GJm!!!!#-!!!!!4&E`S%!!!#CJ! !!!L!!*!24AB!N!9`!*!%4AB2!!!!!M!!!!!%4@m+"!!!!QF!!!!)J!#3$d9f!*! &DJ#3"%9f$`!!!!)`!!!!"%9[#J3!!!*S!!!!#)!!N!p&GJ#3"9!!N!4&GJm!!!! #-!!!!!4&E`S%!!!#D3!!!!L!!*!24AB!N!8p!*!%4AB2!!!!!M!!!!!%4@m+"!! !!QS!!!!)J!#3$d9f!*!&13#3"%9f$`!!!!)`!!!!"%9[#J3!!!*V!!!!#)!!N!p &GJ#3"6B!N!4&GJm!!!!#-!!!!!4&E`S%!!!!(J!!!!L!!*!24AB!N!3"Q!#3"%9 f$`!!!!)`!!!!"%9[!`3!!!!e!!!!")!!N!Y&GJ8!N!3e!*!%4@m$"!!!!$-!!!! %J!#3#d9f"3#3"$-!N!4&E`-%!!!!-J!!!!5!!*!,4AB&!*!%-J#3"%9[!`3!!!) Y!!!!")!!N!Y&GJS!!!!#,3#3"%9[!`3!!!!a!!!!")!!N!Y&GJ8!N!3a!*!%4@m $"!!!!L`!!!!%J!#3#d9f#J!!!!)X!*!%4@m$"!!!!$!!!!!%J!#3#d9f"3#3"$! !N!4&E`-%!!!!,`!!!!5!!*!,4AB&!*!%,`#3"%9[!`3!!!!Y!!!!")!!N!Y&GJ8 !N!3Y!*!%4@m$"!!!!#`!!!!%J!#3#d9f"3#3"#`!N!4&E`-%!!!!+3!!!!5!!*! ,4AB&!*!%+3#3"%9Z!`3!!!!9!!!!")!!N!Y&GJ8!N!39!*!%4@m$"!!!!LS!!!! %J!#3#d9f#J!!!!)U!*!%4@m$"!!!!Km!!!!%J!#3#d9f#J!!!!)I!*!%4@m$"!! !!Ki!!!!%J!#3#d9f#J!!!!)H!*!%4@m$"!!!!Kd!!!!%J!#3#d9f#J!!!!)G!*! %4@m$"!!!!K`!!!!%J!#3#d9f#J!!!!)F!*!%4@m$"!!!!KX!!!!%J!#3#d9f#J! !!!)E!*!%4@m$"!!!!KN!!!!%J!#3#d9f#J!!!!)C!*!%4@m$"!!!!$3!!!!%J!# 3#d9f"3#3"$3!N!4&E`-%!!!"P!!!!!5!!*!,4AB&!!!!!C3!N!4&E`-%!!!"P3! !!!5!!*!,4AB&!!!!!C8!N!4&E`-%!!!"A`!!!!5!!*!,4AB+!!!!!9m!N!4&EJ- %!!!"9`!!!!5!!*!,4AB+!!!!!9F!N!4&E`-%!!!"8`!!!!5!!*!,4AB+!!!!!9- !N!4&E`-%!!!"4J!!!!5!!*!,4AB&!!!!!8B!N!4&E`-%!!!"23!!!!5!!*!,4AB &!!!!!6d!N!4&E`-%!!!!,J!!!!5!!*!,4AB&!*!%,J#3"%9[!`3!!!%m!!!!")! !N!Y&GJ8!!!!"2!#3"%9[!`3!!!!L!!!!")!!N!Y&GJ8!N!3L!*!%4@m$"!!!!"m !!!!%J!#3#d9f"3#3""m!N!4&E`-%!!!!(3!!!!5!!*!,4AB&!*!%(3#3"%9[!`3 !!!!#!!!!")!!N!Y&GJ8!N!3#!*!%4@m$"!!!!"B!!!!%J!#3#d9f"3#3""B!N!4 &E`-%!!!!E!!!!!5!!*!,4AB&!*!%E!#3"%9[!`3!!!!K!!!!")!!N!Y&GJ8!N!3 K!*!%4@m$"!!!!$X!!!!%J!#3#d9f"3#3"$X!N!4&E`-%!!!!1J!!!!5!!*!,4AB &!*!%1J#3"%9[!`3!!!!h!!!!")!!N!Y&GJ8!N!3h!*!%4@m2"!!!!M!!N!5!!*! (4@J!!&0C68J!!"c5!!!!83!!!!)!N"%"!*!'#-J!!!!)!!!)d`!!!"!!!!MLrj! %!!!)l3!"!!!!1!!!!!-"!*!%!`!"!*!'#68!!!!)!!!*3!!!!"!!!!P2rj!%!!! *@`!"!!!!1!!!!!-"!*!%!`!"!*!'#MN!!!!B!!!+C!!!!$!!!!UD!!!!2!!!#V- !!!"-!!!+a`!!!)J!!!Y1!!!!R!!!#id!!!#S!!!,T!!!!-3!!![T!!!!d!!!$!- !!!$B!!!-'!!!!13!!!a6!!!!m!!!$(J!!!$i!!!-M3!!!3J!!!bR!!!"&!!!$-F !!!%F!!!-hJ!!!9J!!!fj!!!#R!!!$iX!!!+i!!!2Y!!!!X3!!!r0!!!#d!!!$rB !!!,F!!!3#J!!!ZJ!!"!J!!!$"!!!%&!!!!-3!!!3D3!!!c3!!"$F!!!$2!!!%2- !!!0B!!!4(`!!!iJ!!"&&!!!$P!!!%9N!!!1S!!!4J3!!!lJ!!"'A!!!$a!!!%E) !!!23!!!4drq3"!!!%G-!"J!!!%Irrrrc!3#3""i!!!")!!!!!`#3"4m!!!"*!!! !!`#3"4d!!!"+!!!!!`#3"4X!!!",rrrrmJ#3"4`!!!"1!!!!#`#3"4N!N!J5(!! !!$3!!"*6!!!!8!!!%US!!!"`!!!5m3!!!)J!!"-C!!!!S!!!%fm!!!$)!!!6hJ! !!1`!!"3A!!!"'!!!&)F!!!%S!!!8MJ!!!83!!"6p!!!"A!!!&66rN!3!!"8d!!B !!!"(rrrrm`%!N!3H!!!!9rrrrqm"!*!%(3!!!%N!!!!$!*!&(`!!!&hrrrrX!!- !!!!i!!!!AJ!!!'B!N!8F!!!!ArrrrqX!!`!!!%!!N!J9CJ!!!"!!!"9T!!!!,!! !&Ci!!!!m!!!9YJ!!!%J!!"Adrj!%!!!9p!!"!!!!4rrrrr-"!`!!!&J!N!JB-2q 3"!!!'$!!N!SB8`!!!#!!!"KX!!!!+!!!')3!!!!X!!!BQ2q3"!!!'*J!!3!!!%I rrrrT!3#3""m!!3#3"KN8rj!%!!!C+!!!!!%!N!BC@J!!!#J!!"Q4!!!!,!!!'DX !!!"!!!!Ce3!!!'3!!"S!N!5%!!!D,!!!!)`!!"T$!!!!V!!!'P)!!!#m!!!DB!! !!-J!!"U$rj!%!!!DMJ!'!!!!GJ!!!!-"!`!!!'J!!!"h!!!!!`%$!!!!E!!!!(J !!!!$!3-!!!"`!!!!H3!!!!-!N!8G!!!!H[rrrrJ!N!8I!!!!HrrrrqJ!N!8H!!% !N!BDcJ!!!$!!!"Vm!!!!0!!!'aB!!!")!!!E3!!!!(!!!"Y[!!!!N!!!!"ZK!!! !X!!!'p3!!!#i!!!ElJ!!!-J!!"a$!!!!k!!!(&F!!!%)!!!FF!!!!4J!!"aq!!! "*!!!(+(rN!3!!"bX!!B!!!"f!!!!!`%$!!!!D!!!!(F!!!!$!3-!!!"X!!!!H!! !!!-"!`!!!(!!!!#!rrrrjJ%!N!3H!!!!H[rrrq8!!`!!!$J!!!"lrrrrk!#3"4d !!3#3"Kc#!!!!&!!!(-8!!!!F!!!Fh`!!!$J!!"d1!!!!3!!!(4S!!!"B!!!G,rq 3"!!!(9!!!3!!!(RrrrrQ!3#3""m!!3#3"Kfp!!!!-!!!(GB!!!"!!!!H!*!%F!! !(NErN!3!!"j4!!J!!!"f!!!!!`%$!!!!@!!!!(F!!!!$!3-!!!"F!!!!K`!!!'B "!`!!!'!!!!#)!!!!C!%$!!!!C!!!!%d!!!!$!3-!!!"S!!!!9`!!!'3"!`!!!'` !!!#*rrrrjJ%$!!!!F!!!!([rrrrS!*!&(`!"!*!'(Si!!!!N!!!HNIq3"!!!(ZB !"!!!!)d!!!!$!3-!!!"B!!!!9rrrrq3"!`!!!&`!!!#*!!!!!`%$!!!!B!!!!(V rrrri!*!&(`!"!*!'(bB!!!!N!!!I+Iq3"!!!(i%!"!!!!)d!!!!$!3-!!!"B!!! !P2rrrq3"!`!!!&`!!!#9!!!!!`%$!!!!B!!!!(Vrrrri!*!&(`!"!*!'(k!!!!! J!!!ISrq3"!!!(qJ!!`!!!)d!!!!$!3-!!!"B!!!!Q!!!!!-"!`!!!&`!!!"krrr rq!#3"4m!!3#3"L!L!!!!+!!!)#8!!!!i!!!J6`!!!&`!!#"k!!!!I!!!)+8!!!# %!!!JZ`!!!+3!!#$+rj!%!!!Je3!%!!!!M3!!!!-"!*!%(J!!!*6rrrrN!3-!!!" F!!!!PIrrrqB"!`!!!'!!!!"krrrrq!#3"4m!!3#3"L%5!!!!)!!!)5MrN!3!!#& #!!%!!!#0!!!!!`%$!!!!@!!"!*!')jm!!!"%!!!MSJ!!!*3!!#1q!!!!T!!!)p2 rN!3!!#3l!!B!!!#0!!!!!`%$!!!!D!!!!+!!!!"N!3-!!!"X!!!!S3!!!!-"!`! !!(!!!!"0!!!!!`%$!!!!G!!!!(Vrrrri!*!&(!!!!+)!!!!$!!-!!!!i!!%!N!B NR!!!!%`!!#5I!!!!R!!!*,[rN!3!!#8L!!F!!!#0!!!!!`%$!!!!D!!!!+!!!!" N!3-!!!"X!!!!S3!!!!-"!`!!!(!!!!"0!!!!!`%$!!!!G!!!!+ArrrrN!3-!!!" i!!!!S[rrrqB"!`!!!(`!!!"krrrrq!#3"4`!!3#3"L9A!!!!0!!!*9S!!!#%!!! PGJ!!!*`!!#@L!!!![!!!*I-!!!%)!!!QQ`!!!5`!!#E!rj!%!!!Qb`!&!!!!M3! !!!-"!`!!!)J!!!#Urrrri3%!N!3F!!!!63!!!!-"!`!!!*!!!!!!Y[rrrpd!!`! !!$J!!!"krrrrq!#3"4X!!3#3"LEh!!!!(!!!*`i!!!"-!!!RIJ!!!&`!!#HD!!! !D!!!*l[rN!3!!#I+!!%!!!$%!!!!!`%!N!3I!!%!N!BS!`!!!$3!!#J'!!!!K!! !+#)!!!#F!!!S6J!!!,`!!#Kj!!!"!!!!+08!!!%N!!!Sq[q3"!!!+38!"3!!!)d !!!!$!3-!!!#)!!!!bIrrrpm"!`!!!)`!!!#p!!!!!`%$!!!!N!!!!!$+rrrrf`! $!!!!1!!!!(Vrrrri!*!&(!!"!*!'+8-!!!"%!!!T4J!!!*3!!#PLrj!%!!!Tf`! &!!!!M3!!!!-"!`!!!'J!!!#J!!!!C!%$!!!!E!!!!+%!!!!$!3-!!!"`!!!!63! !!!-"!`!!!(3!!!"krrrrq!#3"4`!!3#3"LT"!!!!6!!!+N3!!!#F!!!UB2q3"!! !+Z8!"`!!!)d!!!!$!3-!!!"S!!!!S!!!!'3"!`!!!'`!!!#K!!!!!`%$!!!!F!! !!%d!!!!$!3-!!!"d!!!!d[rrrq3"!`!!!(J!!!$6!!!!!`%$!!!!I!!!!(Vrrrr i!*!&(!!"!*!'+b!!!!!d!!!V)`!!!)3!!#Xr!!!!R!!!+fX!!!#m!!!VZJ!!!3` !!#aS!!!"-!!!,)hrN!3!!#bB!!8!!!#0!!!!!`%$!!!!L!!!!+VrrrrK!3#3""` !!!"0!!!!!`%$!!!!N!!!!!$+rrrrf`!$!!!!1!!!!(Vrrrri!*!&'`!"!*!',0J !!!!m!!!YD3!!!%`!!#em!!!!@!!!,CN!!!"m!!!Z&3!!!)!!!#ia!!!!M!!!,Pm !!!#3!!!!,R`!!!#i!!!ZY`!!!-3!!#l,!!!!e!!!,`J!!!$J!!!['`!!!2!!!#p Erj!%!!![D!!)!!!!M3!!!!-"!*!%'`!!!0VrrrrD!*!&(`!!!(Vrrrri!*!&(!! !!23!!!"S!*!&(3!!!28!!!"S!*!&(J!!!2B!!!!'!!-!!!!i!!!!p`!!!!B!!`! !!$N!!!$i!!!!"J!$!!!!1J!"!*!',p!!!!"!!!!`Q`!!!&3!!$#U!!!!D!!!-,N !!!"i!!!`c!!!!*3!!$%0!!!!R!!!-@-!!!#`!!!a[J!!!4`!!$)r!!!"0!!!-P3 !!!&-!!!bF3!!!93!!$+3!!!!!@`!!$+X!!!##!!!-bJ!!!)J!!!c23!!!N!!!$0 D!!!#6!!!-fF!!!*8!!!cLJ!!!Q`!!$1R!!!#Y!!!0"!!!!,N!!!d6J!!!a3!!$5 3!!!!!b`!!$5p!!!$A!!!04)!!!0m!!!e'3!!!iJ!!$8c!!!$U!!!06S!!!1d!!! e9!!!!p3!!$9M!!!$i!!!0@F!!!2S!!!eN`!!!rJ!!$@l!!!%4!!!0F!!!!43!!! ed!!!"'J!!$AM!!!%E!!!0H`!!!5!!!!el`!!"*3!!$BK!!!%R!!!0N!!!!5d!!! fA!!!"9!!!$EB!!!&D!!!0Zd!!!@)!!!h#`!!"C3!!$F4!!!&R!!!0b)!!!@S!!! h3!!!"E!!!$G2!!!&`!!!0em!!!A)!!!hE`!!"GJ!!$H!!!!&i!!!0j%!!!A`!!! hT2q3"!!!0l)!&!!!!2d!!!!$!3#3""3!!!$qrrrrd`%!N!3C!!!"!Irrrp-"!*! %'J!!!3,rrrr6!3#3""X!!!%$rrrrd!%!N!33!!!""rrrrmi!!`!!!$J!!!$f!!! !D!#3"4`!!!$h!!!!D!#3"4d!!!$i!!!!D!#3"4i!!!%+!!!!"J!$!!!!2!!!!3X !!!!'!!-!!!!p!!!"$!!!!!B!!`!!!$i!!!%0rrrrdJ!$!!!!3!!!!3lrrrr5!!- !!!")!!!"$rrrrp)!!`!!!&!!!!%3!!!!!`#3"4)!!!%4!!!!!`#3"4%!!!#0!!! !!`#3"4m!!!#p!!!!!`#3"4-!!!"krrrrq!#3"4J!!3#3"MIa!!!!*!!!0r6rN!3 !!$K(!!3!!!#0!!!!!`%$!!!!@!!!!&IrrrrN!3-!!!"F!!!!LIrrrqB"!`!!!'! !!!"krrrrq!#3"4m!!3#3"ML'!!!!*!!!1)RrN!3!!$MF!!3!!!#0!!!!!`%$!!! !@!!!!&IrrrrN!3-!!!"F!!!!LIrrrqB"!`!!!'!!!!"krrrrq!#3"4m!!3#3"MM m!!!!)!!!12q3"3!!188!!`!!!)d!!!!$!3-!!!"B!!!"(!!!!!-"!`!!!&`!!!" krrrrq!#3"4m!!3#3"MPB!!!!(!!!19[rN!3!!$QM!!)!!!#0!!!!!`%$!!!!@!! !!(Vrrrri!*!&(`!"!*!'1Ei!!!!X!!!j`3!!!$`!!$RX!!!!4!!!1IN!!!"F!!! k$!!!!'`!!$SLrj!%!!!k4!!$!!!!M3!!!!-"!`!!!'J!!!%K!!!!!`%!N!3G!!! !H[rrrrJ!N!8H!!%!N!Bka3!!!#3!!$V)!!!!0!!!1[-!!!!m!!!l!Iq3"!!!1b3 !"!!!!)d!!!!$!3-!!!"B!!!"*!!!!!)"!`!!!&`!!!%Prrrrc3%$!!!!B!!!!(V rrrri!*!&(`!"!*!'1h%!!!!X!!!lG2q3"!!!1pF!"J!!!)d!!!!$!3-!!!"B!!! "+!!!!!-"!`!!!&`!!!%T!!!!!`%$!!!!B!!!!5S!!!"N!3-!!!"N!!!"+rrrrqB "!`!!!'J!!!"krrrrq!#3"4m!!3#3"M`S!!!!,!!!2#[rN!3!!$bA!!B!!!#0!!! !!`%$!!!!@!!!!5J!!!!$!3-!!!"F!!!"+3!!!!-"!`!!!'!!!!%U!!!!C!%$!!! !C!!!!5X!!!!$!3-!!!"S!!!!H[rrrrJ!N!8I!*!)20!!!!!X!!!mp`!!!$J!!$d e!!!!4!!!2A3!!!"3!!!pY3!!!&J!!$hErj!%!!!pf`!#!!!"-2rrrm`"!*!%!`! !!6Errrrf!3#3"!3!!3#3"Mi*!!!!,!!!2M!!!!!i!!!qB`!!!%3!!$kA!!!!8!! !2X`!!!"F!!!qrj!&!!!r'3!"!!!"-2rrrm`"!*!%!`!"!*!'2d)!!!!%!!!r8J! !!"J!!$q@!!!!-!!!2ki!!!"B!!!raIq3"!!!2mm!!J!!!6N!!!"U!3#3"!-!!!% k!!!!#`#3"4m!!3#3"Mrkrj!%!!"!$3!!!!%!N!C""!!!!"J!!%%(!!!!0!!!38` !!!"%!!""HIq3"!!!3C%!!3!!!(B!!!!$!3#3""m!N!K"V`!!!!`!!%'b!!!!(!! !3FF!!!!S!!""i2q3"!!!3H!!!!!"!*!'3JS!!!!`!!"$)!!!!$`!!%-l!!!!C!! !3i-!!!"`!!"$S2q3"!!!3k!!!J!!!%IrrrrS!3#3""i!!!"f!!!!!`%!N!3G!!% !N!C$`Iq3"!!!3m-!!3!!!%IrrrrS!3#3""m!!3#3"N3Z!!!!$!!!4$(rN!3!!%4 A!!!!!3#3"N5R!!!!$!!!4+VrN!3!!%6*!!!!!3#3"N82!!!!$!!!44,rN!3!!%8 a!*!+49ArN!3!!%99!*!+4EN!!!!-!!"&[!!!!"J!!%A,rj!%!!"&b`!!!!%!N!C &k3!!!"J!!%AXrj!%!!"''!!"!!!!4rrrrqN"!*!%(`!"!*!'4Nm!!!!X!!"'AJ! !!$3!!%D&!!!!3!!!4U)!!!")!!"'b3!!!&`!!%EJ!!!!I!!!4a`!!!#-!!"()2q 3"!!!4cX!"!!!!%IrrrrT!3#3""d!!!"krrrrq!%!N!3H!!!"@J!!!!-"!*!%(!! !!(N!!!!,!*!&(`!"!*!'4ei!!!!J!!"(FJ!!!#3!!%H$!!!!4!!!4ld!!!"3!!" (f3!!!(!!!%J)!!!!N!!!!%JArj!%!!"))3!$!!!!4rrrrqN"!*!%(3!!!(N!!!! $!3#3""m!!!"krrrrq!#3"4i!!3#3"NK0!!!!)!!!5'%!!!!N!!")F`!!!%3!!%L [!!!!9!!!50[rN!3!!%MS!!-!!!"(rrrrk3%!N!3G!!!!H3!!!!-"!*!%(`!!!(V rrrri!*!&(J!"!*!'55m!!!!J!!"*E`!!!$J!!%T@!!!!5!!!5Ti!!!"B!!"+XIq 3"!!!5VX!!J!!!%IrrrrT!3#3""i!!!"*!!!!!`#3"4m!!3#3"NY+!!!!$!!!5dd !!!!X!!",I!!!!$J!!%Z0!!!!5!!!5lErN!3!!%[!!!!!!3#3"N[Irj!%!!"-N3! #!!!"C3!!!!)"!*!%(J!!!@B!!!!$!*!&(`!"!*!'6,8!!!!S!!"-Z!!!!$J!!%d I!!!!Q!!!656rN!3!!%f'!!-!!!&T!!!!!`%$!!!!D!!!!@B!!!!$!*!&(!!!!@S !!!!$!*!&(`#3#%fP!!!!*!!!6DJ!!!!S!!"0bIq3"!!!6FN!!3!!!@d!!!!#!3- !!!"B!!%!N!C40`!!!#3!!&(`!!!!-!!!8UF!!!!m!!"5dJ!!!'!!!&2U!!!!F!! !9$S!!!#B!!"8P`!!!+J!!&6M!!!!X!!!92B!!!$3!!"91!!!!0`!!&96!!!!i!! !99i!!!$N!!"9J3!!!2J!!&A8!!!"!!!!9JF!!!%%!!"@A2q3"!!!9R-!#`!!!A6 rrrr*!3#3""m!!!&l!!!!CJ#3"4d!!!&m!!!!C`#3"4i!!!&p!!!!!J!$!!!!1!! !!Ai!!!!$!*!&&J!!!Am!!!!$!*!&&`!!!B!!!!!$!*!&'!!!!B%!!!!$!*!&(!! !!B)!!!!$!*!&'3!!!B-!!!!,!*!&'J!!!B3!!!!'!*!&'`!"!*!'9Si!!!!3!!" @T3!!!#!!!&EN!!!!-!!!9aN!!!!i!!"A-!!!!%3!!&G9rj!%!!"AB`!"!!!"L2r rrmF!N!8I!!%!N!CA`J!!!#`!!&I&!!!!2!!!@"-!!!"8!!"BMJ!!!&`!!&LX!!! !D!!!@-)!!!#%!!"C"J!!!,3!!&QL!!!!`!!!@FX!!!$F!!"D(J!!!1J!!&TU!!! !p!!!@TF!!!$m!!"DV3!!!53!!&VI!!!",!!!@eX!!!%`!!"EM!!!!9!!!&Zm!!! "H!!!@q3!!!'8!!"F%`!!!E!!!&a(!!!"`!!!A')!!!(%!!"FHJ!!!G!!!&b5!!! "h!!!A,-!!!(S!!"FlJ!!!J3!!&dM!!!#&!!!A@i!!!)J!!"G[J!!!QJ!!&i(!!! #K!!!AL-!!!+-!!"H1J!!!U!!!&j3rj!%!!"H@`!(!!!!U[rrrm)"!*!%'3!!!DS !!!!$!3#3""S!!!'V!!!!!`#3"4m!!!'X!!!!#`#3"4X!!!'Y!!!!!`#3"4d!!!' Zrrrrb!!$!!!!1!!!!Drrrrr"!!-!!!")!!%!N!CHh`!!!#`!!&lLrj!%!!"I1!! $!!!!4rrrrl-"!*!%(`!!!IF!!!!+!3-!!!"H!!!"q!!!!!F"!`!!!'-!!3#3"Pp P!!!!,!!!AhErN!3!!&qT!!3!!!"(rrrrX`%!N!3I!!!!G`!!!!)"!`!!!'`!!!( m!!!!!`%$!!!!F!!!!Id!!!!$!!-!!!!i!!%!N!CIi3!!!$!!!&rbrj!%!!"J,J! &!!!!4rrrrl-"!*!%(`!!!(F!!!!#!3-!!!"X!!!"V!!!!!-"!`!!!(!!!!(m!!! !!`%$!!!!G!!!!Id!!!!$!!-!!!!i!!%!N!CJGrq3"!!!B*S!!`!!!%Irrrqc!3# 3""m!!!)#rrrrX`%$!!!!A!!!!J2rrrrf!3-!!!"J!!%!N!CJa3!!!"`!!'$)rj! %!!"Jf!!#!!!!4rrrrl-"!*!%(`!!!J2rrrrf!3-!!!"F!!%!N!CK)!!!!#J!!'% j!!!!0!!!B8J!!!!m!!"K83!!!%!!!'&D!!!!5!!!B@MrN!3!!'&S!!-!!!"(rrr rX`%!N!3I!!!#![rrrl-"!*!%(J!!!J2rrrrf!3-!!!"J!!%!N!CKNJ!!!#3!!'' M!!!!,!!!BD[rN!3!!''V!!)!!!"(rrrrX`%!N!3I!!!#!rrrrrB"!`!!!&`!!3# 3"Q(`!!!!*!!!BJIrN!3!!')(!!-!!!"(rrrrX`%!N!3$!!!#$2rrrl-"!*!%"!! !!Jhrrrqc!3#3"!8!!3#3"Q)p!!!!)!!!BQX!!!!`!!"LJ`!!!$`!!'+6!!!!8!! !BUi!!!"N!!"Lf2q3"!!!B`-!!J!!!KArrrqb!3-!!!"B!!!#&[rrrl)"!`!!!&` !N!KMTJ!!!!`!!'1T!!!!'!!!Bmm!!!!N!!"Mp!!!!$!!!'38!!!!2!!!C$3!!!" )!!"N93!!!&3!!'4frj!%!!"NGJ#3#Q5B!!!!&!!!C*X!!!!F!!"NSrq3"!!!C+- !!3!!!L(rrrrf!3-!!!"B!!(rrrrm!!!!"!!!!!%!!!!(!!,rrrrp!!!!%3!!!!` !!`!!!",rrrrm!*!(%`!!!!)!!!!%!!!!&!!!!!)!!!!)!!$rrrrq!!(rrrrp!!, rN!3!!!!$!!!!'J!0!!!!"!!!!!)!N!F&!!!!!J!!!!3!!!!'!!!!"`!!!!J!!!! (!!!!"J!!!!N!!!!)!!!!"J!!!!S!!!!*!!!!"J!!!!X!!!!+!!!!"J!!!!`!!!! ,!!!!"J!!!!d!!!!-!!!!"J!!!!i!!!!0!!!!"J!!!!m!!!!1!!!!!J!!!"!!!!! 2!!!!#`!!!"3!!!!3rrrrrJ!!!"B!!IrrrrX!!!!-!!!!!3!!!!F!![rrrrF!!!! C!!!!"J!#!!!!'J!!!!X!N!FE!!!!C!!!!!)!!2rrrrJ!!IrrrrF!!IrrrrN!!!% !N!3%rrrrq!!#rrrrqJ!!!"F!!!%#!!)!!!!Brrrrq3#3"a`!!!!'!!!"!!!!rrr rpJ!"!!!!DJ!#rrrrp3!!!#S!!!!#!!%!!!!V!!!!"J#3"3(rrrrd!!!!!J!!!!% !!!!(!!$rrrrc!!(rN!3!!Irrrr!!!!!-!!!!$2rrrrd!![rrrr%!!!"-!!!!(!! (!!!!"!!!!!)!N!F&!!!!!J!!!!3!!!!'!!!!"`!!!!J!!!"0!!!!"J!!!!N!!!! 1!!!!!J!!!!S!!!!2!!!!#`!!!!i!!!!3rrrrm!!!!"!!!2rrrr)!![rrrr%!![r rrqd!!!"D!!!!4J!$!!!!@`!!!!X!N!GF!!!!!`!!!!)!!!"A!!!!!3!!!!B!![r rrqi!!!"B!!!!4J!"!!!!@Irrrqd!N!Errrr[!!(rrrrZ!!(rrrrX!!!!"3!!!!% !!!!(!!,rrrrU!!!!C3!!!!3!!J!!!'B!!!!,!*!(C`!!!!X!!!!#!!,rrrrV!!! !B!!!!"!!"3!!!'%!!!!#!*!(BJ!!!!)!!!!%!!!!B`!!!!S!!!!)!!!!C2rrrqS !!!!+!!!!D!!!!!X!!!!1!!$rrrrT!!(rrrrk!!,rrrrR!!!!I!!!!!3!!3!!!"X !!!"N!*!'rrrrk!!"rrrrj`!!rrrrjJ!"!!!!!`!"rrrrj3!!!!J!!!!%rrrrq!! "rrrriJ!!!!i!!!!"!!!!"`!#rrrri`!!!)i!!!!3!!-!!!#2!!!!"J#3"j!!!!! !"J!!!!%!!!#4rrrriJ!!!!)!!2rrrq3!!Irrrq-!![rrrpi!!!#[!!!!#!!#!!! !X!!!!'B!N!Ha!!!!!`!!!!3!!2rrrpm!!Irrrpi!![rrrq!!!!#V!!!!(!!(!!! !V!!!!'B!N!HY!!!!!J!!!!3!!!#Zrrrrh`!!!!J!!!#b!!!!!J!!!!`!!!#c!!! !CJ!!!"!!!!#d!!!!!J!!!"3!!!#e!!!!!`!!!"J!!2rrrq%!!Irrrq!!![rrrp` !!!#j!!!!'!!'!!!!ZJ!!!'F!N!Hl!!!!C!!!!!3!!!#m!!!!!`!!!!J!!!#p!!! !!`!!!!`!!!#qrrrrh`!!!"!!!!!E!!!!C!!!!"3!![rrrpd!!!#h!!!!'!!"!!! !Z2rrrp`!N!8#rrrrf`!!!-X!!!!B!!%!!!#irrrrh!#3"3,rrrr@!!!!l3!!!!3 !!3!!!1i!!!!#!*!&!Irrrp8!!!!)!!!!!3!!!!F!![rrrpF!!!$S!!!!%!!&!!! !k3!!!!B!N!IU!!!!"J!!!!%!!!$V!!!!#J!!!!)!!!$XrrrreJ!!!!3!!!$[rrr re3!!!!J!![rrrpJ!!!$G!!!!3J!0!!!!h[rrrrF!N!II!!!!C!!!!!B!!!$J!!! !#`!!!!S!!!$K!!!!#`!!!!`!!!$L!!!!!J!!!!i!!!$M!!!!"J!!!")!!!$N!!! !"J!!!"-!!!$P!!!!CJ!!!"3!!!$Q!!!!!`!!!"J!!!$Rrrrre`!!!"`!!!$`rrr re`!!!#`!!!$a!!!!"J!!!$`!!!$b!!!!!`!!!$i!!2rrrp3!![rrrpN!![rrrpN !!!$E!!!!4J!#!!!!h2rrrpJ!N!Icrrrre!!!!%)!!2rrrpS!!IrrrpN!!Irrrp% !!!!)!!!!"!!!!!-!![rrrp)!!!$r!!!!#!!"!!!"!2rrrp%!N!Errrr6!!(rrrr 5!!,rrrr2!!!""!!!!!J!!J!!!38!!!!$!*!'!3B!!!!$!!!!"!!!rrrrd!!"rrr rc`!#rrrrcJ!!!3J!!!!%!!%!!!%*!!!!!`#3"[rrrmd!!3!!!!-!!rrrrm`!!!% a!!B!"!!!!6)!N!B"-`!!!!%!!!%d!!!!!J!!!68!!!!$!!(rrrr,!!!!8!!!!!6 rrrrS!!,rrrr+!!!"2J!!!!J!!J!!!6m!!!!#!*!'!8!!!!!#!!!!"!!#rrrrb!! !!A8!!!!3!!8!!!&f!!!!#J#3"J&h!!!!!J!!!!)!!!&i!!!!!J!!!!B!!!&jrrr rkJ!!!!S!!!&k!!!!#J!!!!i!!2rrrmN!!IrrrmJ!!Irrrm-!!!!#!!!!!J!!!!X !![rrrm3!!!',!!!!#!!$!!!"L[rrrm8!N!B"M!!!!!X!!!!%!!!"MIrrrm-!!!! '!!$rrrr&!!(rrrr%!!,rrrr'!!!"L3!!!"B!"`!!!BVrrrr&!*!'!B`!!!!,!!! !"!!!!Bi!!!!+!!!!"J!!!Bm!!!!#!!!!#!!!!C!!!!!!!J!!!!`!!!'4rrrrkJ! !!"!!!!'5!!!!#J!!!"3!!2rrrmF!!IrrrmB!!rrrrm)!!!'I!!B!#J!!!D!!N!B "S3!!!!%!!!'L!!!!!J!!!D-!!!!$!!!"T!!!!!3!!!'P!!!!"3!!!DB!!!!'!!! "T`!!!!F!!!'S!!!!#!!!!DN!!!!*!!,rrrqq!!!"Y`!!!!J!"!!!!EJ!!!!,!*! '!EN!!!!,!!!!!J!!!ES!!!!,!!!!"!!!!EX!!!!,!!!!"J!#rrrr[`!!!E-!!!! 1!!-!!!'d!!!!CJ#3"J'e!!!!#`!!!!3!!!'frrrr[J!!!!B!![rrrl`!!!'q!!! !#J!#!!!"[`!!!!S!N!B"`2rrrli!!!!#!!$rrrqp!!,rrrqm!!(rrrqk!!!!#!! !!!%!!!!'!!,rrrql!!!"``!!!!J!!3!!!F6rrrqk!*!&![rrrl3!!!(L!!!!&!! (!!!"i`!!!!)!N!B"h3!!!!F!!!!%!!!"j!!!!!F!!!!&!!!"j3!!!!S!!!!'!!! "j[rrrrB!!!!)!!!"hJ!!!!)!!!!-!!!"j`!!!!)!!!!3!!(rrrqe!!!!&!!!!"6 rrrqd!!,rrrqf!!!"fJ!!!#!!#!!!!GX!!!!+!*!($J!!!!F!!!!#!!!"h!!!!!B !!!!$!!!"h3!!!!)!!!!%!!!"hJ!!!!B!!!!)!!!"h`!!!!B!!!!*!!!"i!!!!!S !!!!+!!!"iIrrrl8!!!!-!!$rrrqh!!(rrrqf!!,rrrqi!!!"f!!!!$3!$3!!!GR rrrqh!*!'!HMrrrqh!!!!"!!!!HRrrrqh!!!!#!!!!HVrrrqh!!!!$!!!!H[rrrq h!!!!%!!!!Hcrrrqh!!!!&!!!!Hhrrrqh!!!!'!!!!Hlrrrqh!!!!(!!!!Hrrrrq h!!!!)!!!!I$rrrqh!!!!*!!!!I(rrrqh!!!!+!!!!I,rrrqh!!!!,!!!!I2rrrq h!!!!-!!!rrrrZ3!"rrrrZ!!#rrrr`!!!!E!!!!"X!"N!!!'a!!!!#`#3"J'brrr r[`!!!!)!!!'mrrrr[J!!!"!!!!'prrrr[3!!!"J!!!("rrrr[3!!!"`!!!(#rrr rZ`!!!#!!!!(&rrrrZ`!!!#J!!!('rrrrkJ!!!$!!!!((rrrrkJ!!!$3!!!()!!! !#`!!!$J!!!(*rrrrZ`!!!$S!!!(+!!!!#`!!!%)!!!(,!!!!#`!!!%3!!!(-!!! !"J!!!%B!!!(0!!!!#`!!!%J!!!(1!!!!#`!!!%S!!!(2!!!!!`!!!%`!!!(3!!! !!`!!!&!!!!(4!!!!!`!!!&3!!!(5!!!!#`!!!&J!!!(6!!!!#`!!!&S!!!(8!!! !C`!!!&`!!!(9!!!!C`!!!'!!!!(@!!!!C`!!!'3!!!(ArrrrZ3!!!'J!!2rrrm% !!Irrrm!!!2rrrl-!!Irrrr8!!2rrrl)!!3!!!!X!!Irrrl%!!!!0!!!!!3!!!!F !![rrrl$rN!3!!!!)!!!!![rrrkrrN!3!!!!B!!!%U%G98dN!!ZK(990*3fpZCQP R!!'l4e96580[EQCTCh9bBA4TEfi!!mYNC@CKG@ad9(P`C3!'%'4PCQ&eE(4$FQ9 KG'pb!!!ZBA9dEe0`D@i!"a&ZEd0SC'Pb!!%bB@0MGA*6G'&d!!,qD'&c3fpZFfp XC3!'kQj[3A9dEdPZDA4(FQ&Q!!)(FfKKFQ9N6h"PEJ!(9R0TCe"TF'8!"DTZEd& `F'aP4ACPER4c!!G%GQ9bFfP[EJ!$P'jeE90eCQCTBf9c!!#1Fh9QCQPMCA-!!TC (990*8h9QCQPi!!D`Fh9QCQPi!!#,Fh9QCP4jF'8!!r"cG@CQ3h*PBA4[FJ!%B8! j-6B!"l*6Ef0VCA4c!!0&8fpMDf9d9'&LE'8!"kTcEf0VCA4c!!Ej8fpMDf9d!!! FFQ9Q3fpeER3!"r0IAhC`G()N!!5eEQ9PC(0$EfjcEfaP!!"a4e96590`D@i!"eC (990*4'9QBA9XG&0`D@i!!"j(990*4AKPB`!(!%G98dP%C@CKG@ad4AKPB`!"0%G 98dP'9(P`C3!#f'G(990*8h"PC@3!!J&PGR4)B@jNE'9b!!GaCACd6@&cD`!"I'9 bFQpb8fpMD`!"`'9bFQpb9(P`C3!#Tf9bFQpb3fpeER3!!Lp$BA4MD&0dC%P2!!9 kD'&c6@&VC8C68h"PB`!(SdCPBA4eFQ8!",pREfpN!!!,D'&c3@aTBA-!!#&SBA0 1CAG64J!&XfKKFe"bEf0PFh00Ch)!!%jSBA0$8NeI8!!'a'KKFd0563!'q@KKFd0 83J!$%@KKFe0dC%j#8&p3!!&pD'&c8h4N6N*3!!D`D'&c3A"`E'9&GQ9ZG(-!!Ej SBA05CACTFf9N9'PYC8eRFJ!$V5j(990*Af9bFQpb!!AaCA*bEQm!!c9PFR)!"e` Z4e9659pPFR*[FPpZD@`!"S*QDA*cG&4TE@9IAc%h4e96580[EQCTCh9bBA4TEfi !"eahC9pI-6G(990*3fpZCQPRGA*KG'P[EJ!%!d!j0MJ!"#dZAepMG&pI-6G(990 *3fpZCQPRGA*KG'P[ENCf!!-[,N0eFP*PFdCTE'8!!jFZ9A0P8Q9c4QPXC3!&U#j (CA3a8Q9cEh9bBf8!"XSZ4f9d5'&ZC'aP8fPkC3!$,#jIAfjhB9pI4P9X!!D),NK -Ef0V!!GP,QePE@0`H3!'ibjMD'4TFJ!!p5j5C@aPBA0P8Q9cEh9bBf8!"&YdD'P c!!&UDJ!"D@N!!$PMEfjQ8fPkC3!')Q0[EQCTC`!'-NG98dP$EfjQD@G5Fh*M!!8 "CQaKCh-!!Rj[E'45CA0'D@aP!!3%3$Nf13!$6bj6CA4%C@CKG@ad4P4jF'9IAc% h4e96580[EQCTCh9bBA4TEfj$4P*$194'D@aP8h"PB`!$P#jIAh"dFPpRE(9P!!) (,NK(CA4'5@jQE`!#15j36(0dFR*MD()!!'NZFh4bEQ0`H3!!!#jcG(*ZBfe`!!+ N,NK6CA4'5@jQE`!%UfjKE@8!!AY84QPXC90`C@-!"b8N4P06F'9M!!B)4P06F'9 M!!FHGP*PCNjeE3!&bR"KFNP%!!4)Ff9KFQ0SFh9QCQPi!!2cC'pd!!5UD@jQE`! &INC*EQC[!!CQCQ48HA"P!!&VCQ4$FQ9KG'pb!!HmCQ4'E'&RF`!#"QCN6'pMBA4 TEfi!"D43EfPZG!!"GRB!!@KS!!DfCQ4'E'4b!!4$3$Ni0`!(R#j%Ed&eG'p*EQP d4h*KCPpI-6G(990*3fpZCQPRGA*KG'P[EN0'GJ!(q#j-68GPG%0eFR*PER4"03! #NR&N!!'[,NPZDA4(FQ&Q!!4G3$Nj-3!!!5j*EQPd3fpZFfpXC9pI4RB!"D8Z5@j TG%0[ER0[E'9IAc%a8fpMDf9d9'&LE'9'GJ!&HN!a-$!h!!Ea,QGPG'4dB@*XCA0 THQ8!"fBZFfpMDf9d!!(H,N4[E@&TEPpI-6*6Ef0VCA4%EfeKD@j'D3!"Pbj*ER0 dB@aXAema-90[BfYPG&4KBQaP4P!f8fpMDf9dD3!'Gf4[E@&TEJ!%Eh4jF'8!!,9 `FQpdEf0[E!!#-'CN!!3ZFfpMD`!$l'4[E3!%0&0[BfYPG%4[E@&TEJ!&Y%!a-$) a!!0#,R0[BfYPG("KDA)!!-mZ8Q9YEhCPAema-90[BfYPG&4KBQaP4QN!!Z4cGJ! &h%!a-$-j!!@2,R"TF'8!"%%Z4e965AGTG'K9EQPi8fpMDf9dF`!"1#jcD(9dC'p hEJ!&pN!a-$3c!!HI,Q0SEfpcC3!'mh"bEfe`G!!#Y'0[ER0dFQ&TER3!"k*ZB@e PE'9Z!!Ak3$%`0$F!"8BZBQPZC!!'r#jIAhCMAema-90[BfYPG&4KBQaP4QN!!A0 c!!#IFfpMDf&NC()!"YKcB9pXC@i!!GGcB9pQB@eTE(N!"`KcB9pNBA4K!!Am3$% `0$N!!0JZBfpZEQ9MG!!%3'&NC()!"qaKC'4bE'9Z!!883$%`06%!"aSZE'PcG'9 Z!!5&F@aPEJ!&&N!a-$8c!!HA,Q&MBf9`G!!&0d!a-$Bc!!5S,Q0XEh0PFfpMDf9 d!!8j3$%`0M8!"3mZFQ9MGJ!$@Lj(990*3fKPBfY"E'&bE9pI4RB!"J0LG@CQCA) !"[GLG@CXC@i!"f9QFQpYE'9Z!!9@3$%`0c)!!F3ZFQ9MGQCbEfd!"$0QFQpY!!9 G3$%`0cN!!1iZFQ9MGQecC`!$JbjIAf0dAemj8f0KG(4PFQ9b4P"$0@P[GQ9MD3! $,5jIAf4dAemj8f0KG(4PFQ9b4RB!!fYYFfF!"M9YFfGSC()!!"GYFfGIEQ&YC3! $-fecCepZB@ePE'9Z!!GVEA0RAfP[GJ!&-fP[GQ9M!!"bD@pfAf*KFf8!"`aTEhC IE'9Z!!+#EA0RAfP[GQaPEJ!$X'ecCepMEfjdFQpX!!BNEA0RAf0[ER4bEfaXC@i !!AYYFfGICQaKCh-!"A"cBf&dG!!"390MBA4dCA*PFJ!#2L46Bf&dG%GKG'J!!FC 6Bf&dG%GKG'J!"aecBh*KG'0S!!1HBR9Q!!2-E'9Z!!8&BfpeER3!!TaTE`!&Q8! a-$Ne!!)-AepNG&pI190MBA4dCA*PFNCf!!@D3$%`16B!"JiZ5'&ZC'aP9h*TG'9 &FR*[FR0IAdCT!!BB,R*KDA0P!!ERFQ9dGQ&X!!@I3$%a-$J!"dJZGh*TG'9f!!, H,PpIBh4IAcK(BA4SCA*PFNC33c9TEhCPBfN!!MBZAepNG&pI1%GKG'KPFQ9b4RB !!`PTEhB!"!YRBA4S!!"-4f&dD'9bCA)!"GY!-6%b0!!"VPpIC(4IAcK(BA4SCA* PFNCf!!AF3$%a-M8!"H-ZFf9ZC!!&q8!a-6-b!!H0,R0PEQ4dE`!#rA4[!!A(G'p XC@i!"3"!-6%c13!!I5jcC@jNEA0R!!8p3$%a068!"6j!-6%e0J!&E5jeF'4KG'9 cG'&dGA-!"hJZGhK0B@06Ef0VCA4)B@jNE'9b8(*[B`!(ZA4MF(0[BfX!!Ep83e" 6Ef0VCA3!!lXN58j&9&0[BfYPG!!#c%P14946Ef0VCA3!"rBN8fpMDf9d!!$IGhK bC@CMEfi!"b9hH'9fC@jd!!2RGhKPGQ9ZG'eKFfX!"R*cG(*PB@d!"XjcG'&dGA- !!ieZEfjLE'pMDfPZC`!(pR*PBhC#G@B!"CTbC@0fC!!#ch0K!!2NFfpMDf&NC(* ID@i!"`*cD@jIE'9Z!!,!FfPZAfCKE@PXH3!!@R0TEPp`Eh*d!!!$FfPZAf&NC() !"feTEPpKC'4b!!CpFepKC'4b!!#bFfPZAhTPFQm!"1a`C@9b!!DaFh0dBA4P!!$ (BA0jEQ0PFR)!"%*cC@aQ!!%FBf&Z9h*TG'93!!$ABf&Z8Q9KC&!!!B&PH'0PF(4 TEfi!!'CMB@jAFQPdC3!(2'0KEP*PB@3!"AK!-6%h-!!(FLjcC@aPBh3!"cmZE@9 YFf9d!!0,,Na04f9d9'PMDh-!"3phD@4dD!!(a(*PB@4QC(-!"ReQC&pcCA3!!#" QC(0IBQPdF`!!EAGbDA4PCQ4c!!(iCAKMCA"dCQ4c!!G*G'PYC@peG!!(fh4TE@9 fB@`!"UPdGPpcC@-!"a9dGPpeFf9M!!'BFf&fC89bFQj[!!,'4A*bEQp6BACPFJ! $D@C6BACPC%9bFQj[!!&PC3!"GhF!!A*b!!)3C@3!!P*hC!!#XR*N!!"GGf&TG(4 TE@8!!@KcG'&bG(4TE@8!"9a!-6)f-!!%m&pIC(4IAc%`4A*bEQp6BACPFNCf!!9 G3$%b0M%!"BFZAepNG&pI-6"&FR*ZEe0KGQ9b4RB!!NmZAepNE&pI4P"f!!9K3$% b0M8!"+8ZCf9dFfpMDfjKE@8!"@0!-6)f0`!%@bjRCA4`C@9bEQ&YC3!&C8!a-MB j!!-'D'ph!!9p3$%b0c%!"--ZC(9`!!9r3$%b0c-!"DSZC(9`-J!#Rh-a!!@&3$% b0cN!"(%ZD@pMG'acEf0VCA3!"c"bCA&eCA0d!!5hBA*RF!!&Rd!a-MJc!!2[,QG PG(0[BfY[F(3!"@YXCACPE!!(3'p`G'jKE@8!"[e[F(4fB@`!"MG[F(4XC@i!"D& !-6)i03!$DLjcCA4cEf0VEh"d!!@M3$%b1$F!"$JZ4e96590PG%K[EfX!"'"MEf4 P!!4-4e9658K[EfY$Ef4P!!A[4e9659p6F'PZ5'p[D`!&f%G98dPI4AKPBdK[EfX !"J&(990*AdC8HA"P5'p[D`!'"NG98dPI8h"PC@4)EfpV!!4+D'p[D`!%-5j(990 *4f9d5'p[D`!'0bj(990*8f9d4ACPER4c!!92G'&LE'8!!lKPGR3!"NXZ4e9658G PG%9fC@jdF`!(Mf4[E@&TER0IAc%b8fpMDf9d4'pYB@PZ!!HBF(*[Bf9cFepI-6* 6Ef0VCA4%EfeKD@i!!lY3FQpMCA0c8f9bD@&X6R9YBQ9b!!@-D'PRD%a[EQG2CP" 66J!%H@a[Gda[EQG2CP"66J!&a8!a-c%f!!!R,P*PB@4jAema-P0[BfYPG%4[E@& TENCf!!C2,PGKDf99F&"bEf0PFh-!"Gp!-6-b-!!(kbjIAf0dAema-P0[BfYPG%4 [E@&TENCT!!4JAepfG&pI-6*6Ef0VCA4%EfeKD@i!!M%Z4f9d3h9bFQ9ZG&"bEf0 PFh-!"HG!-6-b1!!(i5jIAf4dAema-P0[BfYPG%4[E@&TENCf!!8"3$%c-c)!!KB ZFfpMDf9dAema-P0[BfYPG%4[E@&TENCTF`!&!d!a-c-d!!H',R0[BfYPG("KDA* IAc%b8fpMDf9d4'pYB@PZ4QPc8&!f8fpMDf9d!!8&3$%c-cB!!T8ZBfK[Eh0PAem a-P0[BfYPG%4[E@&TENCT8'03GQP3GP"T!!8(3$%c-cJ!"(BZ4'pZG&0dFQP`Aem a-P0[BfYPG%4[E@&TENCf!!FL,NCXGA0S8h4ND@pIAdCf!!B&CQCXGA0S!!E-,QC hB@aV!!8J3$%c0$%!"Q%ZAepMG&pI-6&6Ef0VCA48B@*XC8Cf!!Eh4QaeFfK6G'4 TEepI4RB!"j8ZBA4PH'Pd!!8L3$%c0$-!"CPcG'&bG!!&48!a-c8e!!9N3$%c0M3 !"B&!-6-h-3!'V5jIAf4dAema-90[BfYPG&4KBQaP4RB!"MPQBfa[Ff8!"LNZBfa [Ff8!"D*!-6-i-J!"0dG98dP"E'&bE3!&U%!a-cJi!!Bi,Q&XBA*Y!!I1Ff9MEfj NF`!"-h*PE@&TEQPZC`!&`%!a-cN`!!6*,N4[8faPCA"IAdCX!!9PG'PMDh-!"Vj hB@YPGA!!"D4!-63`-3!(G#jeFfaPCA!!!"PeFf9MEfjNF`!&TN!a0$!c!!-H,N0 YC&"PFQP[C&pI4P!a-89fC@jd8Q9MEh*N!!&r,NGPG&0MFQP`G%eKEQ&RCA*@BA* TB@*XC3!#9#j(CA46Bh*TF(4@BA*TB@*XC3!%6bj(CA45CA0[GA*MC3!&##j,CAP 8FQ&ZFfaKG'8!!'adD'9&GQ9ZG!!$T89fC@jd8Q9MEh*N!!6CGfKKG!!(5fePFh0 KCf8!"&0hD'9Z!!92GfKPFQ8!!5aYEf4TCQPPFR-!"mK,3dK58(4b!!9dD%Y$5&) !"FTcG'&dC3!'C'YPH80*C!!!3@KTCfK$D'&b!!HqE'ph3fKKFJ!(YfYPH8PZCQm !!ZGfDA*dG@&X5f9j!!GUDf9j3fpNC3!$j@C8D@eP9'p4G@Pd!!AM3$%d-M!!!PF Z4e9658PZG'9bFR9`G&pI4RB!!28Z6%e(CA4&GQ9ZG&&eCA9P!!CZCACPER44!!9 N4AC44@`!"4Ya6'PZD`!&Ie&&E'9Y!!@DF94jF'8!"Bja4'&dB3!!Ff9fG&&AD'& d!!-*CACd88ePFh0KCf8!!-jPGR449fKPEJ!"[f9fG&&AD'9bC3!&%f9fG&&0Ef4 TCQPPFR-!"30!-63c-!!#rP0dB@jN3@a[EQ8!!,9R4e96590`D@j$EfjdFQpX!!% jD@j'Eh*PCh*[G@jN*$%d-c%!"39!-63c-J!!##j(990*4'9QBA9XG&0`D@i!"98 Z8QpdBA4P3h9bFfpb!!BR,PGKDA41CAKd4ACPER3!!`8Z4QPZC>EQ4[G`!%`5j 6HA0dC@e$E'PMD`!%Cbj"49"bEf0PFh0"F("XC89fC@jd!!39,NCXGA0S4ACPER4 c!!!PFh"TEPpYFfF!"d468&p0590$!!'H8e"I8d9-4808!!IP8e"I6N&043!(8e0 3Ad&%4&)!"M"68&p69&*&38eI8N9"4!!(i&03Ae088N9"69pA8NP843!&"903Ad4 (8N&0Ae*&383!"S*68&p%4e*"69pA8NP843!!aP03Ae0-4893!!498e"I39986ep 68%P1!!-kBA*R!!FaBfpZG(*TBJ!%m@eKFfX!!5pcE'9PF&4TE@8!!L*PGJ!$@(G TEJ!!BdGbB@C3Eh*d!!DaC'9fD@0P!!"0F'pbG%*TG(-!"LC#DA40BA!!!,0LBA0 P3@4NFJ!!IR*[Gd*jG'9c!!BVBQpeEQ4c!!4r8Q9MG!!$,h4[F!!%$'aPCR3!"L* LEh4dEfd!"GCbD@GSG!!!*("[FR45C@0d!!B`GQPc8QGZ!!(&6@&M8Q9RD@pZ!!G "FQGZ8fPkC3!(cR*REN*#EhJ!"k4ME'P`8QGZ!!@CBQY3BA3!"kT3BA4dCA*Z!!0 KF'&d!!F8CQPXE&"KG!!&`("Z6'pM!!DVF'j6DATP!!BCF'j0Ef4P!!ArF'j3BA3 !"4G`EPCTF`!'hR4i4QpZG!!'9A4i4Q&MC3!'-A4i6@pNC3!'ih4i8fPkC3!(Zh0 `4AKdFQ%!"epQCd0[E'pb!!FiBQY$Efa[FJ!([@0[E(*#DA3!!XC`BA46G(*PG'0 S!!GdF'PM8f&fC3!(SA*REP0KGQ8!!!a`Efaj8f&fC3!"-QGbB@C3FQpMF`!()e& %8(*[Bh-!!%GdCAKd8(*[B`!"[e*[GA4TEQ9%CA0MFQP`G'pb!!FRCfp0DAKPC%e [C'98FQ&`!!B)FQpeG'PZC84PFf0bDA"dEh*'E'&RF`!"9R*PFf9bGQ9N-3!"9h* PFf9bGQ9N-J!%Gh0PE'9MG'pb5@jQE`!%+R*[GA4TEQ9$Eh9ZG!!'m(*[GA4TEQ9 5C@0[FQ4c!!8I8QpeG'PZC9*PBfpbC!!![h"bEf0*EQC[!!23590"!!6lFQpeG'P ZC8CXB@Gc!!D%F(*[Bd4PFf0bDA"dEh)!!0GcC@aPBh4[FJ!!M@aTEQ93FQpM!!# jFQ9MG&"bEf-!!3jb8Q9MG&"bEf-!!*&[GQ&X8(*[B`!()@&bBe"bEf-!!2"`Efa j8(*[B`!(JA*REP"bEf-!!+TLDA4c8(*[B`!$lQ0[E@ePER43FQpM!!)lG(K0C@& c8(*[B`!#j'GPG&"TBe"bEf-!!R&`GA43D@03FQpM!!@N3$%d1$!!",-ZAepMG&p I0dCPBA4eFQ9'9A06B`!!Bbj14f9d9(*KF%&NC(*PFh-!"k0dFQ&`6R9Y!!3UG&4 jF!!&TN!a0$Jb!!1k,PpIBh4IAcG'C@&dGA*P4P9XE!!!-5j(CA0dB@ad!!9BGQ& XG@8!")0KG(4b!!@S3$%d1$3!"--ZAepMG&pI0dCPBA4eFQ9'9@aXE!!&UN!a0$J f!!IU,PpIBh4IAcG'C@&dGA*P4P*$0dCPBA4eFQ934RCIF`!%`h"bC@0[EQ4TG'P [EJ!%$fPZDA3!"Da!-63i1!!&$LjIAf0dAemh4Q9KG(9bC8C34RCIF`!&a%!a0$N `!!IY,PpIBh4IAcG'C@&dGA*P4P*$0dCPBA4eFQ934RCIGJ!&b8!a0$Ne!!84,Pp IBh4IAcG'C@&dGA*P4P"'GPpf!!A,3$%d16F!"1dZAepMG&pI0dCPBA4eFQ9'8N- h4Q9KG(9bC9*$0dCPBA4eFQ8!"@9MEfjN-3!&CQ0[EQ3b!!+rEAPZCA3N-63j13! $0fejEQpNC53a06!`!!!aCA*b*$%e-$%!"DP!-68`-J!"ELj"F("XC94KE'Y*C'9 ZG'PdH9pI4P*c8R-!!)iZ69"36h"PEJ!(kLj(CA41Ef4P3@4NFQ9cF`!$ZQjPG!! %iQj[C'8!"E"!-68`13!"q#j(990*4'9QBA9XG&0PG(9`!!$D4e965AGTG'K"F(" XC94KE'Y6Ef0VCA4c!!+Q,NG98dP6CA4eF!!(#%G98dPhDA4S5@jdCA*ZCA46Ef0 VCA4c!!+)4e965AGTG'K339"6Ef0VCA4c!!,b4e965AGTG'K38%06Ef0VCA4c!!2 r4e965AGTG'K9EQPi8fpMDf9dF`!%#%G98dPhDA4S8dP299K6Ef0VCA4c!!A)3$% e-6%!"&*`FQpM!!A+3$%e-6-!"FY!-68a0!!'r&pI8P4859pI-6*6Ef0VCA4%Efe KD@i!!8PMD'p[Ff9IAc%b8fpMDf9d4'pYB@PZ4QP3Be"fD9"f8'N!"SpcEf0VCA4 `B@PbAema-P0[BfYPG%4[E@&TENCTFe"30P0[BfYPG!!"mA0[BfYPG&pI-6*6Ef0 VCA4%EfeKD@j'DA-!"J0IAf4dAema-P0[BfYPG%4[E@&TENCf!!##,PpIFfPZDA4 I4e96584TFh"KG'0SAf0`!!@UAepNG&pI-6&6Ef0VCA48B@*XC8Cf!!($,PpIFQ9 RDA0dCA*ICfa[BQ&XAfpLDQ9MG!!(F%PZDA4$8Nd!!#9*EQPd3e4#9A4TE'PdD@9 c!!A03$%e-6B!!5P(990*8f9dGA!!!hj86d-!!1C(990*4'9QBA9XG&0PG(9`!!$ $3A"`E'98B@aV5@4PER4TG(PIAdC5Fe*c!!1MAepMG&pI0dCPBA4eFQ9'8N-h4Q9 KG(9bC9*$0dCPBA4eFQ8!"&GIAf0dAemh4Q9KG(9bC8C34RCIGJ!'3epIBh4IAcG 'C@&dGA*P4P*$0dCPBA4eFQ934RCIGJ!%9&pIBh4IAcG'C@&dGA*P4P"'GPpc!!C !AepMG&pI0dCPBA4eFQ9'8N-h4Q9KG(9bC9"'GPpc!!25AepMG&pI0dCPBA4eFQ9 '9@aXE!!#-epIBh4IAcG'C@&dGA*P4P9XE!!$iPpIBh4IAcG'C@&dGA*P4P9c8f- !!3T(990*5@jdCA*bGA"dAep'GJ!'fR9cE'9PF!!&E@&XBA*Y!!*,4e96580SC@0 V3@aKFQeIAdCf!!9fAepfBepI-6&6Ef0VCA48B@*XC8CT!!GT8Q9YEhCPAema-90 [BfYPG&4KBQaP4QN!!-G*ER0dB@aXAema-90[BfYPG&4KBQaP4P!f8fpMDf9dD3! &cPpIBh4IAc%a8fpMDf9d9'&LE'9'GJ!$D84[ER46G(*TF&pI-6*6Ef0VCA4%Efe KD@j'GJ!'69pIBh4IAc%b8fpMDf9d4'pYB@PZ4QN!"lT5C@&NH9pI-6*6Ef0VCA4 %EfeKD@j'GJ!!-%4[E@&TEPpI-6*6Ef0VCA4%EfeKD@j'D3!&e%G98dP(CA4&GQ9 ZG(-!"H"(990*8f9d4ACPER4c!!0M4e9658GPG%K[EfX!!fC(990*8f9d5'p[D`! #qR0PG(0[BfY[F(3!!SCRCA4cEf0VEh"d!!-&D@pMG'acEf0VCA3!"%4NGA!b!!1 3!'4eF!!!RR0SGA4NEhGZ!!1LCf9dF'9PFQjKE@8!!jKRCA4cEf0VEQ&YC3!'jA0 PE'9MG!!%M(9`C'&dCA0dBA4eF`!(+h0PEQ4YFfF!"J0cC@jNG'm!")&cC@jN!!D VGh*TG'9f!!GMFQ9MGQecC`!!6R*PBhCQFQpY!!5aFQ9MGJ!$1Q0XEh0PFfpMDf9 d!!BKB@0MCA"d!!CeE'PcG'9Z!!G,BfpZEQ9MG!!%k'*TEQ3!"K9MD'p[Ff8!"$" `DA"P!!,8FfpMDf9dF'&TFJ!'ZA0[BfYPG!!&2QGPG'4dB@*XCA0THQ8!")T*EQP d3fpZFfpXC9pI-6&6Ef0VCA48B@*XC8Cf!!C-4'p"GA4[5@jTG%GbB@CIAc%h4e9 6580[EQCTCh9bBA4TEfj$4RB!!S46CA4%C@CKG@ad4P4jF'9IAc%h4e96580[EQC TCh9bBA4TEfj$4P*$194'D@aP8h"PB`!$U&pIBh4IAc%h4e96580[EQCTCh9bBA4 TEfj'GJ!'$%G98dPICA*bEh*IEQPX!!+L4e9659pPFR*[FJ!!#3P36eG5!*!'$I! !!"4D!!!!4`!!$P`!!!Aq!!!)1!#3"jm!!!!)!*"!4@F!!%9T!*!&!89U!!3!!!! #!!!!6!!!!#!!!!)MNq(rr$[J!!&)!!!XL!-!!#`!!$T!JJ!F1!!!!*J$!!#)!`! "I!!(G8'#!!Jlr`!"1'-!!BJ$!!"m!!Ge3),rd$Kr!!#$iIrm6S!!)%9U!!3!!!! &!!!!H!!!!)!!!!,[L!-!!(`!"h3X!!!U3B)!4%#!!#JX!2r&3B)!1%#!!"!X!2q f3B)!0%J!!%3X!!!!3B)!0%J!!$JX!!"F3B)!(%#!!#`X!!!r3B)!#%J!!#!iB!! "6S!!))`$!!&m!!Ge3))!$$KJ!!"1J!!J1'-!!8[rrj!!6S!!)%9V!!3!!!!'!!! #B!!!!-)!!!3DI!J#TVmKrq53!!%!#*3Krk!li`!!1i3!!$XP!!#$BJ!!1!!!!*! !!`")1!!!!*!!!`"-L!3!!(`!"h9!JJ!31!$rfl!E!!")!!#%L"`!!#`!!$T"JJ! X1(`!!$L!!$T)!!!"B!!!!#J$!!""JJ!81(m!!%J!!!&J!!!!5!!!8#JC!!""JJ! m1,rrq$LCrrJi!!!)I!N$TS4N!!L!"!!%P'8!#*!!"3!%3J$rm)"N!!LJ"!!-N!" P!!L`"3!-5!!!%$Kr!!")!!!"B!!!!)JF!!!X!!!k3))!+)`F!!&m!!Ge3))!($J !!!#B(`"(1!!!!CJI!%BiI`!!5!!"@$Km!!")!!!"B!!!!$Y$!!#S'`!!I!!!0&3 !fAkB(`"'9!!'2d'#!"`iHJ!"5!!!!@!!!!#3!(m!5#J$!!"!JJ!-1(m!!%J!!4# !I`")1*`!!$Lk!!&)!!!"B!!!!)"r!%K)!!!"1k-!!#`G!(p!J3!81!$rfl!E!!! iI`!!5!!!f"ap!!a)!!!"B!!!!*!!I`"-+!-!!%##!!`iI`!!5!!!Z*Zr!%H$h`" )1k!!!%J!!&3iIJ!!5!!!!94J"Mp"JJ!-1)!!!%J!!!JiJ2rrJ(m!6"`G!!amJ`- ZJ*m!6"ap!!`i!`!)Im3",MKq!!!l[3!"5!!!!@!!!!"r`r)81pi!!BJI!%Gm!!G dI"d!!%'!rk3iI`!!5!!!!@!!!!"8B!Br3B)!%$J!!!#!I`"-X!-!!$Kr!!#!R`" -L,m!4hbP"h3i`!!"5!!!!@!!!!#BI`"'1(m!!)!"!'Ji)3"JI!J$TVXKrq41J!! J4A3$!*!%"`!!!"a&G3#3"3J!!!"F4A8!N!8*!!!!F%9e!*!&#J!!!-"&G3#3"3X !!!$m4A8!N!8-!!!"*%9e!*!&$3!!!8a&G3#3"3)!!!&B4A8!N!8-!!!"I%9e!*! &"3!!!Da&G3#3"3X!!!(S4A8!N!81!!!#$%9e!*!&$`!!!Ma&EJ`%!!!!)J!!!!b !!*!,J!!#B$J!!!"&G`#3"3B!N!4&D`!%!!!!)`!!!)`!!!(L!!!)F(`)!UD6iIr mNm(rq*!!!3!)P#(r`$[M!!#,``"(Ipi(G%J!!%!iI`!!J*m!6"`H!!amK!)8L"m !4h`!"h4m[J"31-!!!%J!!!&J!!!!Q(m!4P4J"Mp"JJ!-1'!!!8J!!"JX(J!!1pl rrd##rl`iB!!!Q(m!4S!"!%Ji)3"!I!J$TS2Krrb$`Iri6S!!)%9e!*!&$`!!!%4 &EJ`%!!!!*3!!!!b!!*!,J!!!M"!!!!"&G`#3"5-!N!4&DJ!%!!!!*J!!!BJ!!!) U!!!*%R`)!UDr3IrSN!!"!!L8)Iq`1q-!!$ZN!!!la3!!Jd)!!%J!!35)(3!!I!! (G#`!!#T"JJ$83)!!(#`!rm9"JJ$)3)!!1#`!rlC"JJ!J5!!!,#`!!&a"JJ!83)! !)#`!!$p"JJ#!5!!!&)`G!!&m!!Ge3))!#$Zprrq)(`!!I!-(G)JG!!"m!!GdI!- !!%'#!&5,R`!!Ij`(G#`Frrp!JJ!-1'$rrdJ!!!aAJ!BqI(S!VSYp!!"rH`Gd,"[ rrd##!!`i!2rr5!!!$&GJ"Mjm'J#ZI!-!!%'#!!`iB!!!5!!!Q$[r!!%l[3!"5!! !2#`H!!!lh[rr3)!!$$KJ!!")!!"i1rm!!6Kr!!!iR3!"1,i!!8J!!!&8B!Br3B, re$KJ!!&)!!"8,"i!!$[Hrrp!J[li5!!!0)JG!!"m!!Gd,!!!+N'#!"4!J!!B,!$ ra8'#!!K)!!!-1ld!!8J!!!`iB!!!5!!!&)JG!!"m!!Ge3),rb$KJ!!'!!3"B1#% !8(`)!kDl3IrS6S!!)%9d!`#3"#F!!!!F4A8!N!8Q!!!"%%9Z$!3!!!!T!!!!$)! !N!Z!!!')-!!!!%9h!*!&*J#3"%9Z%!%!!!!U!!!!!IrrrrJ!!!`-!*!%4@X!"!! !!!m!!!(N!!!#q!!!$!am#!+Q[f(rl*!!!3!)P#(qN!!li`!!1m3!!(bm+hNlCJ! !Jk)!!%##!$3iI`!!5!!!!@!!!!"8B!Br3))!$$KJ!!")!!'3!$Kr!!")!!!"B!! !!$KJ!!&)!!&mU"i!!#`!rrp!JJ"i9f!'2d##!!`iB!!!5!!"B)"q!!L)!`!!I!! (G8##!"JiB3%31*m!!%J!!!&J!!!!5!!!'$KK!-JiR`!!J,i!#%J!!!&J!!!!U"d !!(`!"c9"JJ!-1'!!!%J!!43iI`!!1*i!$$Lmrrmi`!!"5!!!!8J!!2aAB!Br3B) !4$KK!)!iR`!!1+)!!%J!!!&J!!!!U"d!!#`!!!""JJ!-1'!!!%J!!-`i!!!!X"i !!+JI!!#`(J!#J"m!!T!!(J!%U"i!!V!I!!#!(J!%N!!I!!)iB3!i1*m!!+Lq!!! i"3!"X"i!!(`&"c4)!!!"B!!!!$LrrrJiJ3!`1!!!#(`*!kD%C!!)J!3!"*4P!!L 3!!8!"%)!rr#!C!!)S!3!$*!!C3!)X!8!$+JG!!!X!!!!3))!3$Kr!!H!RJ!)L,m !"NJ!!!&8B!Br3B,rI$Kr!!!iRJ!-1,crrcM!!!&)!!!"9'!'2d'#rf!iB!!"5!! !#$KJ!!#!!3&i1#%"F(`)!kDlBIrX6S!!)%9d!`#3"!F!!!!J4A8!N!8V!!!!,%9 e!*!&,!!!!%K&G3#3"5d!!!#-4A8!N!8Z!!!!T%9e!*!&$`!!!0"&Fa!!N!3U!!! !k%9e!*!&,J!!!1a&G3#3"5m!!!&)4A8!N!8Q!!!"R%9e!*!&$`!!!EK&EJ`%!!! !-3!!!!b!!*!,J!!"j#J!!!"&G`#3"3m!N!4&D`!%!!!!-J!!!)!!!!2d!!!29A` )!UD6iIrmNm(rq*!!!3!)P#(r`*!!B3"B1'!!8%J!!!&J!!!!I(mEH8'#!"3iI`! !J)%!@$LJ!!")!!!"1pm!!)"L!!#S!`!!,!!!!%##!!`iIJ!!5!!!&$Kq!!")!!! "B!!!!$KJ!!#!!3")1#%!3(`)!kD$iIrmJm(rq%k!!#"&G3#3"6-!!!!F4A8!N!8 '!!!!1%9d!`#3"!F!!!"!4A8!N!8d!!!!A%9Z$3)!!!!f!!!!%S!!N!F3!!!m!$` !#J!!LS!!(`#3"N9f#T`!!!!h!!!!$N9Z$!3!!!!i!!!!$)!!N!k!!*!%4AF!N!8 b!*!%4AF0!*!%0J!!!!K&D`!%!!!!13!!!#J!!!4%!!!2qA`)!UD3!!%!#*3Krm# 3!'%!@)"K!&K)!!!"J!%!5$JK!%"m#!1Q6S!!)%9e!*!&)`!!!"4&EJ`%!!!!1J! !!!b!!*!,J!!!+!#3"%9h!*!&13#3"%9V!!3!!!!l!!!!5!!!"'i!!"!lL!-!4LJ !!!""JJ!i116rq$M$rrJi!!!)I!N$TS5Q!!L!"J!%P+F!#*!!"`!%3J$rm)#Q!!L J"J!-N!#R!!L`"`!-L'-!4Nk!!#"&D`!%!!!!23!!!#`!!!5Z!!!3`h`)!UD3!!% !#*3Krm#3!'%!@)"K!&K)!!!"B!!!!)!"!%Ji)3"!I!J$TNk!!#"&G3#3"63!!!! 84@i-"!!!!$i!!!!-J!#3#i!!!#`!N!4&G`#3"6d!N!4&E`S%!!!!2`!!!!L!!*! 24AB!N!8p!*!%4AB2!*!%3!!!!!4&E`S%!!!!33!!!!L!!*!24AB!N!8l!*!%4AB 2!*!%3!!!!!4&E`S%!!!!3J!!!!L!!*!24AB!N!8j!*!%4AB2!*!%3!!!!!4&E`S %!!!!3`!!!!L!!*!24AB!N!8b!*!%4AB2!*!%3!!!!!4&E`S%!!!!4!!!!!L!!*! 24AB!N!82!*!%4AB2!*!%3!!!!!4&E`S%!!!!43!!!!L!!*!24AB!N!8M!*!%4AB 2!*!%3!!!!!4&E`S%!!!!4J!!!!L!!*!24AB!N!8'!*!%4AB2!*!%3!!!!!4&E`- %!!!!*`!!!!5!!*!,4AB&!*!%*`#3"%9[!`3!!!!(!!!!")!!N!Y&GJ8!N!3(!*! %4@m2"!!!!%!!N!5!!*!(4@J!!&0C68J!!!6J!!!!#3#3&3%!N!B#6!!!!!3!!!* 2!!!!$!!!!S3!!!!B!!!#RJ!!!#`!!!,(!!!!-!!!!Y8!!!"!!!!#frq3"!!!!Z` !!J!!!!-!!!"Q!3#3"!-!!!!%!!!!!`#3"4m!!3#3"J-V!!!!8!!!!fB!!!"B!!! $M`!!!'3!!!22!!!!E!!!!rMrN!3!!!3A!!%!!!!$!!!!CJ%!N!3$!!%!N!B%BJ! !!$`!!!5G!!!!5!!!",8!!!"X!!!%qJ!!!(`!!!8)!!!!K!!!"4J!!!#m!!!&33! !!-J!!!92!!!!e!!!"@J!!!$J!!!&T3!!!2J!!!AJ!!!")!!!"J%!!!%i!!!'2!! !!8!!!!C(!!!"@!!!"Qd!!!&S!!!'VJ!!!AJ!!!E6!!!"N!!!!!Ep!!!"Q!!!"`N !!!'S!!!(J`!!!HJ!!!IK!!!##!!!##!!!!)F!!!)-!!!!LJ!!!K)rj!%!!!)E3! '!!!!%2q3"!%!N!3I!!!!!`!!!'B"!*!%(!!!!"lrrrrj!3#3""N!!!!I!!!!CJ# 3"4i!!!!J!!!!!`#3"4d!!!!K!!!!!`#3"4S!!3#3"JL+!!!!*!!!#,8!!!"B!!! )k3!!!'`!!!Mjrj!%!!!*$`!#!!!!%2q3"!%!N!3I!!!!*!!!!!-!N!8H!!%!N!B *B3!!!#3!!!Pk!!!!D!!!#DS!!!"d!!!*[`!!!(J!!!S1!!!!f!!!#P!!!!$J!!! +J!!!!1`!!!Vd!!!!q!!!#``!!!%!!!!,+`!!!33!!!Y@!!!"(!!!#eX!!!%N!!! ,I3!!!6!!!!Z"!!!"0!!!#j3!!!&8!!!,``!!!9`!!![Q!!!"C!!!#rB!!!&`!!! ,r2q3"!!!$!N!!`!!!"J!!!"Q!3#3""m!!!!$!!!!CJ%!N!3G!!!!+!!!!!-"!*! %(J!"!*!'$&!!!!!S!!!-B`!!!$`!!!ae!!!!4!!!$)8!!!"3!!!-N`!!!&J!!!b Q!!!!C!!!$0%!!!"X!!!-pJ!!!(3!!!d'!!!!K!!!$4m!!!#B!!!0-J!!!+`!!!e 3!!!!f!!!$Bm!!!$J!!!0R3!!!23!!!f[!!!"!!!!$Em!!!%)!!!0dJ!!!5!!!!i X!!!"5!!!$Q8!!!'3!!!!$VB!!!'S!!!1r`!!!F3!!!mQ!!!"c!!!$cRrN!3!!!p (!!3!!!!3rj!%!3#3""m!!!!Errrrq`%!N!3H!!!!*!!!!!-"!*!%(!!!!$!!!!! '!3#3""X!!3#3"Jq$!!!!(!!!$iB!!!"3!!!2bJ!!!&J!!!rD!!!!C!!!$qVrN!3 !!!rf!!)!!!!$!!!!CJ%$!!!!@!!!!$ArN!3!N!8H!!%!N!B3)!!!!"3!!"!Mrj! %!!!31!!"!!!!0Iq3"!%$!!!!@!!"!*!'%(F!!!!-!!!3M!!!!%!!!"#Urj!%!!! 3`!!#!!!!0Iq3"!%!N!3$!!!!22rrrrF"!*!%"!#3#"$U!!!!&!!!%1d!!!!F!!! 3q[q3"!!!%2S!!3!!!$ArN!3"!`!!!&J!![rrrr`!!!!9!!!!4J!$!!!!&J!!!!X !N!FA!!!!!`!!!!)!!!!B!!!!!3!!!!B!![rrrrd!!!!6!!!!4J!"!!!!&2rrrr` !N!8#rrrrqJ!!!"`!!!!-!!3!!!!G!!!!#`#3"aB!!!!,!!!!!J!!!"F!!!!$!!! !"!!!!!-!!!"Q!!!!#!!!rrrrq`!"rrrrqJ!#rrrrrJ!!!"%!!!"3!!8!!!!5rrr rr3#3"aN!!!!'!!!!4J!!!!3!!!!(!!!!4`!!!"S!!!"Q!!!!5!!!!"[rrrrl!!! !6!!!rj!%!!(rrrrq!!$rrrrj!!(rrrrp!!(rrrri!!!!!3!!!!%!!!!(!!$rrrr h!!(rrrrm"+K(990*!!2E,P0XD@0P8f9RE@9ZG(0IAdC3B`!(SR"KG(4PFQi!!!K cC@GYC@jdF`!#Fbj)BA0AD@aN3f&bC(0IAdC3B`!"eLjIAf0dAemj9%CTE'9(E'p L4P"$Be"$194'D@aP8h"PB`!"l'9bFQpbAemj9%CTE'96F'9M!!IG,R0dFQ0SFJ! $H#j5EfpdAemj9%CTE'96F'9M4RB!"Q%Z4'9QBA9XG&pI194'D@aP8h"PBdCf!!H p,R0dFQaPEJ!$,#jIAfjhB9pI4P9X!!GP,QePE@0`H3!&1#j*Fe*[Eh4IAcP84QP XC90`C@0'GJ!%!Lj1CAKdAemj9%CTE'9(E'pL4P"4-MP84QPXC8GXEf)j3Q&MDe4 bB@0VD99M!!4EG'KTF`!"S94'D@aP4fa[BJ!#r5484QPXC90`C@-!!AY84QPXC90 `C@-!"b8N4P06F'9M!!B)4P06F'9M!!FHGP*PCNjeE3!&bR"KFNP%!!5VEQ&YC3! &eRCKE'PN!!DZF'&d3R9Q!!9FG(*KBfX!!F4#B@0V9(*KBfX!"@0TEQ4PH!!!A(0 dBA*d4'Pb!!EaF'&d8f9R!!"#Ff9R3fpeER3!"Re`BA4XC@i!"2T!1$Bc!!0P,Nj PH(4IAcP84QPXC8GXEf*'GJ!&N@4PF(4S!!3C3$Jh-J!%,Lj0BA4MD%jKE@9IAdC 33f033f0T!!-&AepeF("PFPpYBA!!"b&ZB@eP6'9Z!!4"3$N`0J!%Sd!j-cJ!"M- Z4AKTFh4cAemj9%CTE'96F'9M3dCf!!3),N*XCA0cAemj9%CTE'96F'9M4RB!!p3 ZAepYE9pI194'D@aP8h"PBdCf!!Dd,PpIBA"XAemj9%CTE'96F'9M4P"$B`!%)#j IAhCMAemj9%CTE'96F'9M3dCc!!32D@jTG!!%T%!j-cN!",BZ6Q9h4QPXC8GXEf) !!RXZAepZGepI4P9X!!*2,PpIC'aIAdC3GJ!%X@GXEf)!"-"!163e!!&FAepNE&p I4P"f!!6"3$Nd0J!&!Lj1CAKd4QPXC8GXEf)!"-0!163i!!"!,NCTE'9(E'pL-NC 68h"PB`!%Dh0`C@-!!-BZ4'PcF'pcC8CTE'9(E'pL!!6H3$Ne-`!(2d4TFh"[Ff9 'D@aP4fa[BJ!$IP423`!(RNCTE'9(E'pL-NC68h"PB`!%58jPH(4'D@aP4fa[BJ! $@%jPGdCTE'9(E'pL!!0(6Q9iG&pI194'D@aP4fa[BNC386)j9%CTE'9(E'pL18* KBfY8FQ&MDfP9B`!#ZdjPH(4IAcP84QPXC8GXEf*'GJ!!LPpIBh4IAcP84QPXC8G XEf*'8%0M8%-j9%CTE'96F'9M!!"36eG5!*!')J3!!%!%!!!"a!!!)R!!!"f8!!! -q!!!!"i!!!0&!!!!)!#33%9R!!"&D`!%!!!!Z`!!!!3!!!!J!!!'T%k!!#"&D`! %!!!![3!!!!3!!!"#!!!'fdk!!#"&D`!%!!!![J!!!!3!!!"N!!!(&%k!!#"&D`! %!!!!`!!!!!3!!!#'!!!(5dk!!#"&D`!%!!!!`3!!!2`!!!#S!!!)#T2Krrb$iJ! !,!1Q(%'#!*4!J!!d,!1Q&d'#!+"!J!!F,!1Q"d'#!+"!J!#d,!1Q!d'#!+")!!# S,!1Q'8'#!(")!!#F,!1Q)d'#!%"!J!!3,!1Q)8'#!%")!!#%,!-!!%'#!"4!J!" i,!1Q+8#!!(")!!!-1'!!!%J!!(`i!!!'N!!I!!")!!"X1!!!1T!!(`!!5!!!B$J !!$L3!"m!!%J!!&3i!!!jN!!I!!")!!")1!!!2C!!(`!!5!!!2$J!!$#3!"m!!%J !!$!i!!"!N!!I!!")!!!N1!!!3C!!(`!!5!!!'#`$!!"!J3!)5!!!#$KJ!"D3!(m !!$KJrrq$iIrm6S!!)%9d!`#3"-)!!!!%4@X!"!!!!-3!!!#J!!!")J!!$&"m#!+ QNq(rr*!!!3!)P#(r`$[M!!")!!!"B!!!!)!#!!#3!"m!!MKr!"`iJ!!!1+!!%%J !!!&J!!!!1(m!,$L!!!!iS!!35!!!!@!!!!!i!!!#Q"m!(6J!!"#B(`!F1!!!!CJ I!")i!!!!Q"m!%cJ!!!#3!"m!"MJ!!!#`(`!+J')!!%J!!!&J!!!!1(m!!)!"!%J i)3"!I!J$TS2Krra1J!!J4A8!N!A&!!!!&%9d!`#3"-B!!!!F4A8!N!A(!!!!-%9 e!*!&a`!!!%4&G!-!N!3#!!!!I%9e!*!&b!!!!)"&EJd#!!!!bJ!!!"D!!*!(#!! !0!#%!!S!!)D!!"m!N!T&GJS-!!!!b`!!!"*&EJ`%!!!!c!!!!!b!!*!1S!#3"%9 h!*!&a!#3"%9h$3#3"-S!!!!)4@X!"!!!!-d!!!#F!!!"C!!!$S"m#!+QNq(rr*! !!3!)P#(r`$[M!!#3!)%!A%J!!!&J!!!!J!)!!*!!(`!#J!%!A*!!(`!11!!!!TJ I!"di!!!3Q"m!($J!!!+B(`!Y1!!!%*JI!#`i!!!"Q"m!%MJ!!!@B(`!m1!!!!*J I!"-i!!!!N!!I!!Bi!!!!X"m!#S"L!!")!!!"B!!!!$Kr!!#!!3")1#%!3(`)!kD $iIrm6S!!)%9e!*!&a3!!!"K&G!-!N!6'!!!!)%9d!`#3"!)!!!"i4A8!N!A)!!! !I%9Z$3)!!!$1!!!!&S!!N!F)!!#!!)!!#J!!KS!!(`#3#N9f#J`!!!$,!!!!%N9 Z$!3!!!$2!!!!$)!!N!kF!*!%4AF!N!A0!*!%4AF0!*!%cJ!!!!K&D`!%!!!!d!! !!(!!!!'N!!!3*R`)!UD6iIrmN!!"!!L8)Ir!I(mEHE#"!&j"JJ"!J!)!!*!!(`! #J')!!%J!!!&J!!!!1(m!!$L!!!")!!!"B!!!!+J"!&iX!!!!3)%!%$Kr!!")!!! "B!!!!$Kr!!#!!3")1#%!3(`)!kD$iIrm6S!!)%9d!`#3"-B!!!!F4A3$!*!%!J! !!#4&G3#3"G%!!!!S4A8!N!A5!!!!1%9e!*!&d`!!!&"&EJ`%!!!!e!!!!!b!!*! ,J!!!F!J!!!"&G`#3"G!!N!4&D`!%!!!!e3!!!!J!!!(1!!!3B6KJ!!"1J!!J4@X !"!!!!0B!!!$`!!!"iJ!!%*Gm#!+QNq(rr*2"rrL6SIrdNi(rm*!!!3!)P#(rX$[ M!!"mR#0jNi-!"N'#!+!i!!!!Q!%!1MJ!!!#B!3!j1m!!!$ZJ!!#S(`!-9!!(rd' #!!Jl`3!kU"m!$&3!"le"JJ!)1k%!16Kr!!!iRJ!!1,d!!$M!!!#"R`!#JB`!@%J !!!&J!!!!,!-!!%'#!%L)!3!j+!!!!%'#!"5!I`!'1)!!!NJ!!!&J!!!!L!%!1LJ !!!""JJ!JJ(m!"ML!!!&)!!!"B!!!!%J!!!`i!!!!X"m!$)!"!&Ji)3"3I!J$TS2 Krrb$`IriJk(rp)1"rr"1J!!J4A8!N!AA!!!!I%9e!*!&f!!!!+"&G3#3"GJ!!!# m4@i-"!!!!0i!!!!-J!#3#i!!!2!J!!!!4AF!N!A@!*!%4@X!"!!!!0m!!!"B!!! #UJ!!%`Tm#!+QNq(rr*!!!3!)P#(r`,"K!&U`J3"HN!#K!'#!BJ!!U)%!@NJ!!!& J!!!!1!!!!,!$!!US!3"HX!-!$)#"!'")!!!"J!%!5$JK!%"m#!1QJq(rr%k!!#" &G!-!N!6J!!!!(%9e!*!&i3!!!#4&G3#3"GB!!!"!4@i-"!!!!18!!!!-J!#3#i! !!&J)!!!!4AF!N!AI!*!%4@X!"!!!!1B!!!$X!!!$$J!!&bCm#!+QNq(rr*2"rrL 3!!%!#*3Krm!l``!!N!#"!&b3!+%!B)2K!&b!!3"J,!!!%%#!!"3iB!!@5!!!!@! !!!")!!#BL"m!!5J!!!*"JJ!81'!!,dJ!!!&J!!!!5!!!I+!H!"iS!!!!3B)!&$K J!"C)!!!"B!!!!%J!!'#!(`!%+!!!!%'#!$L!I`!%2!1"!#J!!!&"JJ!S5!!!!@! !!!#!(`!%I!!B3%'#!"3iB!!a5!!!!@!!!!")!!!JJ"m!"*!!(J!JS"m!!V!H!"i i!!!3Q"i!($KJ!!#!!3")1#%!3(`)!kD$iIrmJm(rq%k!!#"&G3#3"HF!!!!d4A8 !N!AR!!!!8%9e!*!&j`!!!'a&G3#3"HJ!!!#84A8!N!AR!!!!V%9Z$!3!!!$X!!! !$)!!N!Z!!!$X%!!!!%9h!*!&jJ#3"%9V!!3!!!$Y!!!!J!!!!k)!!"ZlI!J#TT2 Krrb3!!%!#*3Krm#3!'%!@*!!J3"F1q8!!)!&!!!X!!!!3)!!&$KJ!"C)!!!"B!! !!%J!!$L!B3"FJ)%!@$L%!"b!(`!!,!!!%%#!!!b![`!!5!!!#$LJ!"#3!,m!!%J !!!&J!!!!1'!!!)!"!%Ji)3"!I!J$TS2Krra1J!!J4A8!N!AR!!!!,%9e!*!&lJ! !!'"&EJ`%!!!!l`!!!!b!!*!,J!!!J!J!!!"&G`#3"Hd!N!4&D`!%!!!!m!!!!+! !!!2`!!!H5h`)!UD6iIrmNm(rq*!!!3!)P#(r`$[$!!#3!)%!A$[P!!#!"3!!,!! !!%#!!"3iB!!@5!!!!@!!!!")!!"3L"i!,#J!!!"!JJ!81'!!18J!!!&J!!!!5!! !0)"K!&`iRJ!XJ"m!!#`!!""!J!!-J,m!!%J!!!JiS!!3N!#r!!")!!!"B!!!!$K J!!#!!3")1#%!3(`)!kD$iIrmJm(rq%k!!#"&G3#3"HF!!!!`4A8!N!AR!!!!6%9 e!*!&lJ!!!(a&EJ`%!!!!m3!!!!b!!*!,J!!!S"!!!!"&G`#3"I!!N!4&D`!%!!! !mJ!!!*J!!!41!!!JaR`)!UD6iIrmN!!"!!L8)Ir!1q-!!*!!J3"FJ!%!A#`!!!& "JJ!`3)!!%#`!!!"!J!!85!!!3#`!!!0!J!!i5!!!*)JI!"*J!!!#Q"m!%NJ!!$5 )(`!5B!!!"*JI!"*)!!!NL"m!%Q!!!!DB(`!55!!!&$KJ!"C)!!!"B!!!!%J!!!J iB!!!J!%!5$JK!%"m#!1QJq(rr%k!!#"&G3#3"HF!!!"d4@i-"!!!!23!!!!-J!# 3#i!!!*J)!!!!4AF!N!Ab!*!%4@X!"!!!!28!!!#F!!!%TJ!!*5Pm#!+QNq(rr*! !!3!)P#(r`$[M!!#3!)%!A*!!S3"JJ!%!A#`!!!4"JJ!`3)!!9#`!!!0!J!!)5!! !5)JI!"-S!!!!3B)!$$KJ!!4)!!"!1'!!!%J!!$L!!3"J9!!(Hd'#!"!i!!!"Q"m !%dJ!!!`i!!!!Q"m!%cKJ!!")!!!31'!!,8J!!!&J!!!!J!%!5$JK!%"m#!1QJq( rr%k!!#"&G3#3"HF!!!#!4@i-"!!!!2J!!!!-J!#3#i!!!*`)!!!!4AF!N!Ae!*! %4@X!"!!!!2N!!!$B!!!&*!!!*c"m#!+QNq(rr*2"rrL6SIrdNi(rm*!!!3!)P#( rX$Z$!!!lT!!!1q8!!&5HK2j8J!"$3B)!)#`H!!""JJ!B1(m!!$L!!!!i[J!!5!! !!@!!!!#6i3!i2'"!"$KMCRpm(4J!3B)!,%#!!%JmB)!%1'0QIR`G'!""JJ!)5!! !0)!I!!#B(!!61'!!!%J!!$!iI!!!JC`!!S'-!'4)!!!"B!!!!*!!I`!!1'!!!%J !!"!iB!!Y5!!!!@!!!!#!!3"B1#%!8(`)!kD$iIrmJm(rq)1Krr5$JIr`6S!!)%9 e!*!&a`!!!%K&G3#3"GF!!!#B4A8!N!AR!!!!X%9Z$!3!!!$r!!!!$)!!N!Z!!!$ B)!!!!%9h!*!&q3#3"%9V!!3!!!%!N!3S!!!&VJ!!+MPm#!+QN!!"!!L8)Ir!J') !!%J!!!&J!!!!J!%!5$JK!%"m#!1Q6S!!)%9d!`#3"!)!!!!-4A8!N!3"!3!!!"" &EJ`%!!!"!J!!!!b!!*!,J!!!+!#3"%9h!*!%!3#3"89V!!3!!!%$!!!!I!!!"G) !!#U#I!J#TT2Krrb3!!%!#*3Krk!li`!!1)!!!NJ!!!&J!!!!J!)!!*!!(`!!1'% !1%J!!!&J!!!!1!!!!E!I!!3i!!!"X"m!"MJ!!!#`(`!)1!!!!,!I!!Si!!!!X"m !$$J!!!#3!"m!$MKr!!#!!3"S1#%!B(`)!kD$iIrm6S!!)%9e!*!%!33!!!!B4A3 $!!!!!38!!!!J4A8!N!3""J!!!#a&EJd#!!!"'3!!!"D!!*!(#!!!-!!`!!S!!)D !!"m!N!T&GJS-!!!"'J!!!"*&EJ`%!!!"'`!!!!b!!*!1I!#3"%9h!*!%!3-!N!4 &G`d!!!!"'3!!!!K&EJ8"!!!"(!!!!!Arrrr)!!!VP`3Z59"3!!!!4@X!"!!!!4d !!!"m!!!'#J!!+jGm#!+QNq(rr*!!!3!)P#(rF$[M!!#S!`!%,!!!!8##!$3i!!! !N!!"!%5!!J!!N!!"!%Si!!!!Q!%!8cKK!$K)!!!"B!!!!,"r!!5S!3"3X"m!#+J I!!3X!!!!3B)!$$KJ!!")!!!)U(m!#)!"!*Ji)3#3!(`)!kD$iIrm6S!!)%9d!`! !!!%F!!!!+%9e!*!%!4i!!!!m4@i-"!!!!@i!!!!-J!#3#i!!!(`)!!!!4AF!N!3 "(3#3"%9V!!3!!!&[!!!!6!!!"P)!!#cKI!J#TT2Krrb3!!%!#*3Krm!li`!!5!! !!DJI!!BX!!!"3))!&$KJ!!")!!!"B!!!!,"r!!DSI`!'J!%!5$JK!%"m#!1QJq( rr%k!!#"&G3#3"!%G!!!!&%9e!*!%!A!!!!!S4@i-"!!!!A%!!!!-J!#3#i!!!%` )!!!!4AF!N!3"E`#3"%9V!!3!!!&b!!!"D!!!"S`!!$09I!J#TVmKrq53!!%!#*3 Krk#3!'%!H*!!J3"mJq)!!$[!!!#!(`!!N!!"!$Ji!!!!N!!I!!#!B3"i5!!!!Aa J"c9!JJ!`1'!!-NJ!!!&J!!!!1f-!!)!I!!!X!!!!3))!$)!"!$L3!"m!!$Kl!!" )!!$XJ!%!I#`!!!*"JJ!m3)!!B#`!!!&!J!!)5!!!9$KJ!%C)!!!"B!!!!(ap'hP "JJ!31(d!!%J!!!&J!!!!1pd!!%J!!$JiB!"#5!!!!@!!!!"mI"Yj3B)!%$Km!!" )!!!"B!!!!$[F!!")!!!31'!!,%J!!!&J!!!!+"i!!%'#!&#!(`!!,!!!!%'#!%3 X(J!!3B)!($Kq!!!iJ!!"JCi!!S'-!'")!!!"B!!!!$Y!!!#!(`!!,!!!!%##!!b !!3!iN!!I!!!iHJ!!5!!!)$Xq!!#!(`!!,!!!!%##!!b!!3!iN!!I!!!iH3!!J!% !D$JK!'"m#!1QZb(rj%k!!#"&G!-!N!6#!!!!'%9e!*!%!4d!!!!d4A8!N!3"F`! !!%4&G3#3"!&d!!!!M%9e!*!%!A8!!!#J4A8!N!3"G!!!!,4&G3#3"!&f!!!!b%9 e!*!&j`!!!0a&G3#3"GF!!!%34@i0!J!!!AX!!!"#J!#3"cJ!!$J!N!!!+J#N!+3 !)J#i!,J!+J$-!-`!-J$J!43!+J!!#S!!(3#3"))!!$J!N!3+J!!F!*!%JJ!!1!# 3"N9f#J`!!!&m!!!!*N9f#J`!!!&p!!!!,N9f#J`!!!&m!!!!0N9f#J`!!!&p!!! !2N9Z$!3!!!&q!!!!$)!!N!d"D!#3"%9h!*!%!A)!N!4&G`d!!!!"H`!!!!K&D`# %!!!"I`!!!'L!!*!(I!J#TT2Krrb3!!%!#*3Krm"mIaYjX)%!AN'#!$L!BJ!!J!- !!#`!!!"!JJ!3J"m!!)"L!!#3!!-!!+J"!&iX!!!!3)%!%$Kr!!")!!!"B!!!!$K r!!#!!3")1#%!3(`)!kD$iIrm6S!!)%9d!`#3"-)!!!!F4A3$!*!%`J!!!$"&G3# 3"G-!!!")4@i-"!!!!B!!!!!-J!#3#i!!!'J)!!!!4AF!N!3"I`#3"%9V!!3!!!' "!!!!6!!!"c!!!$6qNq(rr+L$!!`i"!!"X!-!$(`!"c3X!!!J3))!$$J!!!#`!`! -J)-!$UJ$!!`F!!"UIq3#&+JI!"!X!!!"3B,rb$Kr!!#$iIrm6S!!)%9V!!3!!!$ )!!!!D!!!"i!!!$@mI!J#TT2Krrb3!!%!#*3Krm!li`!!U'-!#MJ$!!'`(`!+I'! (08##!$!iB!e!5!!!!@!!!!#3!(m!$LJ$!!"!JJ!B1!!!$)"L!!#3!!-!!$J!!!# `(`!+J!%!5$JK!%"m#!1QJq(rr%k!!#"&G3#3"!'$!!!!,%9d!`#3"-)!!!"%4@i -"!!!!B3!!!!-J!#3#i!!!'J)!!!!4AF!N!A)!*!%4@X!"!!!!0%!!!"3!!!(ZJ! !0P4m#!+QNq(rr*!!!3!)P#(r`$[M!!#SB`!+1!2rrl!I!!Tm!!Fe3))!')"r!!j )!!!"B!!!!$J!!!#3!"m!$S!"!%Ji)3"!I!J$TS2Krra1J!!J4A8!N!3"K3!!!#a &EJ`%!!!"KJ!!!!b!!*!,J!!!8!J!!!"&G`#3"G%!N!4&EJ8"!!!"K`!!!"(rrrq j!!!f9%P14946Ef0VCA4%EfeKD@i!N!4&EJ8"!!!"L!!!!!hrrrqi!!!f9&0[BfY PG%4[E@&TEJ!`"2*&EJ8%!!!"L3!!!!Mrrrqh!!!f9!#3#%9f"3!!!!')!*!%4@i &"!!!!BS!!!!-rrrrYJ!!0P3!N!a&GJ8!!!!"L3#3"%9Z"33!!!',!!!!#2rrrl8 !!$C8!*!)4AB&!!!!!BF!N!4&GJ8!!!!"LJ!!!!4&E`8%!!!""3!!!"Mrrrqd!!! f9!#3'%9f"3!!!!',!*!%4AB+!!!!!B`!!!!84AB+!!!!!Bd!!!!34AB+!!!!!Bi !!!!)4AB+!!!!!Bm!!!!-4@X!K!!!!C!!!!!!C)!!N!Gm#!+QNq(rr*!!!3!)P#( r`(ar'hQ`J3"H3B)!0)!#!!#3!"m!!$Kr!!!iJ!!!5!!!!@!!!!#S!3"H,!!!!%# "!"!iI`!!5!!!!@!!!!!iI`!!J!%!5$JK!%"m#!1QJq(rr%k!!#"&G!-!!!!""3! !!"a&G3#3"!'4!!!!,%9e!*!&d`!!!%4&EJ`%!!!"NJ!!!!b!!*!,J!!!C!J!!!" &G`#3"!'3!!#3"%9Z"3%!!!'6!!!!#rrrrl-!!$C858j&9&0[BfYPG!"J4@i&!3! !!C3!!!!(rrrrXJ!!0P46Ef0VCA3!mN9Z"33!!!'9!!!!#2rrrl%!!$C8!*!)4AB &!!!!!C3!N!4&EJ8%!!!"PJ!!!!crrrq`!!!f9!#3$%9f"3!!!!'9!*!%4@i&"!! !!CF!!!!)rrrrV`!!0P3!N!K&GJ8!!!!"N`#3"%9f"3!!!!'@!!!!"%9["33!!!$ '!!!!D2rrrki!!$C8!*"S4AB&!!!!!CF!N!4&GJS!!!!"Q!!!!&a&GJS!!!!"Q3! !!&K&GJS!!!!"QJ!!!&4&GJS!!!!"Q`!!!%a&GJS!!!!"R!!!!%K&GJS!!!!"R3! !!%4&GJS!!!!"RJ!!!%"&GJS!!!!"R`!!!$4&GJS!!!!"S!!!!$"&GJS!!!!"S3! !!#4&GJS!!!!"SJ!!!#"&GJS!!!!"S`!!!"a&GJS!!!!"T!!!!"K&GJS!!!!"T3! !!"4&GJS!!!!"TJ!!!""&GJS!!!!"T`!!!!a&GJS!!!!"U!!!!&"&GJS!!!!"U3! !!$a&GJS!!!!"UJ!!!$K&GJS!!!!"U`!!!#a&GJS!!!!"V!!!!#K&GJS!!!!"V3! !!!K&GJS!!!!"VJ!!!'4&GJS!!!!"V`!!!'"&DJ!%!!!"X!!!!$5!!*!(I!J#TT! !!3!)P#(r`)"L!!")!!!"J))!!)#L!!")!!!"B!!!!)!"!%Ji)3"!I!J$TNk!!#" &G!-!N!3#!!!!$%9e!*!%!3-!!!!34A3$!!!!!Bi!!!!84A3$!*!%!3!!!"K&G3# 3"!'a!!!!(%9Z$!3!!!'b!!!!$)!!N!Z!!!!d!*!%4AF!N!3"X!#3"%9Y"33!!!! #!!!!%[rrrri!!!Bp4@`&!3!!!!%!!!!-rj!%!!!'289[#S3!!!'1!!!!#)!!N!p &GJ#3"!'3!!#3"%9f$`!!!!'c!!!!"%9[#J3!!!'d!!!!#)!!N!p&GJ#3"G%!N!4 &GJm!!!!"X`!!!!4&E`S%!!!"Y3!!!!L!!*!24AB!N!A)!*!%4AB2!!!!!E-!!!! %4@m+"!!!!EB!!!!)J!#3$d9f!*!%!B%!N!4&GJm!!!!"X`!!!!4&E`U%!!!"I3! !!!L!!*!24AB!N!3"I`#3"%9f$`!!!!'c!!!!"%9[#J3!!!'2!!!!#)!!N!p&GJ# 3"!&b!*!%4AB2!!!!!E-!!!!%4@m+"!!!!EF!!!!)J!#3$d9f!*!%!@m!N!4&GJm !!!!"X`!!!!4&E`S%!!!"Z!!!!!L!!*!24AB!N!3"(3#3"%9f$`!!!!'c!!!!"%9 [#J3!!!'j!!!!#)!!N!p&GJ#3"!%$!*!%4AB2!!!!!E-!!!!%4@m+"!!!!ES!!!! )J!#3$d9f!*!%!3#3"89f$`!!!!'c!!!!"%9[#J3!!!'T!!!!#)!!N!p&GJ#3"IN !N!4&GJm!!!!"X`!!!!4&E`S%!!!"UJ!!!!L!!*!24AB!N!Ae!*!%4AB2!!!!!E- !!!!%4@m+"!!!!DJ!!!!)J!#3$d9f!*!&mJ#3"%9f$`!!!!'c!!!!"%9[#J3!!!' V!!!!#)!!N!p&GJ#3"I!!N!4&GJm!!!!"X`!!!!4&E`S%!!!"V!!!!!L!!*!24AB !N!AY!*!%4AB2!!!!!E-!!!!%4@m+"!!!!Dd!!!!)J!#3$d9f!*!&jJ#3"%9f$`! !!!'c!!!!"%9[#J3!!!'l!!!!#)!!N!p&GJ#3"Gm!N!4&GJm!!!!"X`!!!!4&E`S %!!!"[!!!!!L!!*!24AB!N!A@!*!%4AB2!!!!!E-!!!!%4@m+"!!!!Di!!!!)J!# 3$d9f!*!&e3#3"%9f$`!!!!'c!!!!"%9[#J3!!!'[!!!!#)!!N!p&GJ#3"G!!N!4 &GJm!!!!"X`!!!!4&E`S%!!!"[3!!!!L!!*!24AB!N!A0!*!%4AB2!!!!!E-!!!! %4@m+"!!!!Ei!!!!)J!#3$d9f!*!&a!#3"%9f$`!!!!'c!!!!"%9[#J3!!!'r!!! !#)!!N!p&GJ#3"F%!N!4&GJm!!!!"X`!!!!4&E`S%!!!"`!!!!!L!!*!24AB!N!A !!*!%4AB2!!!!!E-!!!!%4@m+"!!!!F%!!!!)J!#3$d9f!*!&[J#3"%9f$`!!!!' c!!!!"%9[#J3!!!(#!!!!#)!!N!p&GJ#3"Ed!N!4&GJm!!!!"X`!!!!4&E`S%!!! "``!!!!L!!*!24AB!N!@l!*!%4AB2!!!!!E-!!!!%4@i$"!!!!!%!!!!%J!#3#d9 f"3#3"!%!N!4&E`-%!!!"MJ!!!!5!!*!,4AB+!!!!!Bi!N!4&EJ-%!!!"(!!!!!5 !!*!,4AB&!!!!!4`!N!4&E`-%!!!""3!!!!5!!*!,4AB&!!!!!38!N!4&E`-%!!! !i!!!!!5!!*!,4AB&!*!%i!#3"%9[!`3!!!!#!!!!")!!N!Y&GJ8!N!3#!*!%4@m $"!!!!-B!!!!%J!#3#d9f"3#3"-B!N!4&E`-%!!!!`J!!!!5!!*!,4AB&!*!%`J# 3"%9[$`3!!!'c!*!%J!#3"d9S!!"6@8e)!!!(p!!!!&)!!!!)!*!4!3#3"JE1rj! %!!!'f!!"!!!![!!!!!)"!*!%!`!"!*!'"`IrN!3!!!F4!!%!!!#m!!!!#J%!N!3 $!!%!N!B(2[q3"!!!"dJ!!3!!!,m!!!!#!3#3"!-!!3#3"JGhrj!%!!!(J3!"!!! ![`!!!!S"!*!%!`!"!*!'##F!!!"d!!!)6!!!!(`!!!Ld!!!!L!!!#4X!!!#8!!! *H3!!!+!!!!R8!!!!V!!!#Mm!!!#i!!!+X`!!!-3!!!X&!!!!d!!!#dN!!!$F!!! ,L`!!!2!!!![krj!%!!!-"3!"!!!!``!!!!-"!*!%!`!"!*!'$'S!!!!`!!!-RJ! !!%3!!!c*!!!!J!!!$D8!!!#)!!!0[rq3"!!!$Em!!3!!!-RrrrrA!3#3""m!!3# 3"JkU!!!!I!!!$md!!!#%!!!3)rq3"!!!%#-!!J!!!-RrrrrA!3#3""m!!!#V!!! !!J%$!!!!A!!"!*!'%%!!!!!S!!!33rq3"!!!%&i!!3!!!-RrrrrA!3#3""m!!3# 3"K#+rj!%!!!3P!#3#K$#!!!!,!!!%2)!!!"3!!!4I3!!!&3!!"'9!!!!B!!!%EB !!!"N!!!4dJ!!!)`!!"))!!!!Q!!!%K`!!!#S!!!56`!!!,3!!"*L!!!!a!!!%TJ !!!$)!!!5T!!!!0!!!"+frj!%!!!5YJ!'!!!!bIrrrpF"!*!%(`!!!0N!!!"N!3# 3""`!!!$D!!!!D!#3"4d!!!$E!!!!D!#3"4i!!!$F!!!!"J!$!!!!13!!!0d!!!! '!!-!!!!k!*!)%dB!!!!N!!!653!!!%!!!"1T!!!!4!!!%m2rN!3!!"2$!!3!!!$ L!!!!#`%$!!!!@J!!!1-!!!!,!3-!!!"H!!!!j!!!!'3"!`!!!'!!!!#Mrrrre`# 3"4m!!3#3"KG9!!!!-!!!&m3!!!"!!!!Ai3!!!%`!!"J%!!!!A!!!'#F!!!"S!!! B8`!!!(J!!"Lp!!!!P!!!'3S!!!#S!!!C2`!!!,J!!"RJrj!%!!!DEJ!%!!!!bIr rrpF"!*!%(J!!!1N!!!"N!3-!!!"F!!!!kJ!!!!-"!`!!!'!!!!$Vrrrrd3#3"4m !!3#3"K[a!!!!+!!!(!J!!!!i!!!F*Iq3"!!!((i!!`!!!-RrrrrA!3-!!!"B!!! !k`!!!'3"!`!!!&`!!!$Urrrrd!%!N!3I!!%!N!BHJ3!!!#`!!"kB!!!!2!!!(V3 !!!")!!!HbJ!!!&J!!"lVrj!%!!!I4J!$!!!!bIrrrpF"!*!%(J!!!1X!!!"N!3- !!!"F!!!!k[rrrp!"!*!%(`!"!*!')1J!!!"!!!!K"J!!!&!!!#%k!!!!B!!!)@i !!!"`!!!KZ!!!!)!!!#(Crj!%!!!Ki`!#!!!!bIrrrpF"!*!%(`!!!2-!!!!$!3- !!!"F!!%!N!BP@J!!!$J!!#AY!!!!4!!!*J%!!!"-!!!Q'`!!!&3!!#DR!!!!B!! !*Vd!!!"X!!!Qf`!!!(3!!#Ee!!!!I!!!*`[rN!3!!#FY!!-!!!$*rrrre`%!N!3 I!!!!pJ!!!!)"!`!!!&`!!!$h!!!!!`%$!!!!B!!"!*!'*fJ!!!!d!!!SMJ!!!$` !!#M(!!!!8!!!+-X!!!"m!!!T)J!!!)`!!#Q*!!!!V!!!+FcrN!3!!#RZ!!8!!!$ *rrrre`%!N!3F!!!!qJ!!!!)"!*!%(3!!!2X!!!"N!3#3""m!!!$m!!!!!`#3"4i !!!$prrrrc`!$!!!!1!#3##TM!!!!$!!!+QB!!!!B!!!UIrq3"!!!+Rm!!!!"!*! '+UJ!!!!X!!!Ua2q3"!!!+j3!!J!!!-Rrrrr0!3#3""m!!!%(rrrrc!!$!!!!1!! "!*!'+lJ!!!!J!!!Vl!!!!$`!!#aQ!!!!8!!!,,RrN!3!!#cH!!)!!!$*rrrrc3% !N!3I!!!!$[rrrmF!!`!!!$J!!3#3"Ld%!!!!&!!!,3F!!!!N!!!Y,!!!!$3!!#e 5rj!%!!!YD!!"!!!!bIrrrmd"!*!%(`!"!*!'-iJ!!!!d!!!c[J!!!%!!!$22!!! !E!!!-rm!!!#)!!!d*!!!!,!!!$4C!!!!f!!!0)B!!!$N!!!dUJ!!!1`!!$5f!!! !q!!!0-B!!!%B!!!df3!!!6J!!$6Zrj!%!!!dq`!%!!!!bIrrrmd"!`!!!(J!!!& h!!!!!`%$!!!!I!!!!AMrrrqk!!-!!!!i!!!!SrrrrpF!N!8H!!%!N!Be*J!!!!3 !!$9)!!!!(!!!0@3!!!!N!!!eG3!!!%!!!$@Vrj!%!!!eZ3!#!!!!bIrrrmd"!*! %!`!!!B,rrrrm!*!&(`#3#$AJ!!!!+!!!0IJ!!!"!!!!f*`!!!&3!!$C4rj!%!!! f83!"!!!!bIrrrmd"!*!%(`#3#$Cj!!!!+!!!0T)!!!!d!!!fU3!!!$`!!$Dkrj! %!!!fZJ!"!!!!bIrrrmd"!*!%(`!"rj!%!!!!$!!!!!%!!!!(!!,rrrrp!!!!"3! !!!3!!3!!!!B!!!"N!*!&!IrrrrJ!!!!-!!!!!3!!!!F!!2rrrr-!!3!!!'S!![r rrr3!!!!G!!!!&!!(!!!!(J!!!!)!N!FB!!!!"`!!!!3!!!!I!!!!"`!!!!8!!!! J!!!!#J!!!!B!!!!Krrrrm`!!!!J!!!!C!!!!!J!!!!`!!!!L!!!!!J!!!"!!!Ir rrr8!!!!8!!!!&2rrrr3!![rrrrB!!!!8!!!!)!!)!!!!&3!!!!S!N!F@!!!!"`! !!!)!!!!A!!!!"J!!!!-!!!!B!!!!!J!!!!3!!!!C!!!!"J!!!!J!!!!D!!!!"J! !!!N!!!!E!!!!#J!!!!S!!!!Frrrrp3!!!!`!!2rrrrF!!IrrrrB!![rrrr%!!!! X!!!!%!!%!!!!,3!!!'B!N!FZ!!!!!J!!!!3!!!![rrrrp`!!!!J!!!!`!!!!CJ! !!!`!!Irrrqm!!!!S!!!!!3!!!!F!![rrrr!!!!!b!!!!3J!3!!!!-`!!!!F!N!F d!!!!"`!!!!%!!!!e!!!!"`!!!!)!!!!f!!!!"`!!!!-!!!!h!!!!!J!!!!3!!!! i!!!!#J!!!!J!!!!j!!!!!J!!!!S!!!!k!!!!#J!!!!i!!!!l!!!!"`!!!"!!!!! m!!!!"`!!!"%!!!!p!!!!"J!!!")!!!!q!!!!"`!!!"-!!!!r!!!!"`!!!"3!!!" !!!!!"`!!!"8!!!""rrrrl`!!!"B!!!!`!!!!CJ!!!$i!![rrrqi!!!"$!!!!&!! +!!!!-`!!!!F!N!Fd!!!!"`!!!!%!!!!e!!!!"`!!!!)!!!"%!!!!"J!!!!-!!!" &!!!!"J!!!!3!!!"'!!!!"`!!!!8!!!"(!!!!CJ!!!!B!!!")!!!!!J!!!!S!!!" *!!!!#J!!!!i!!!!`!!!!CJ!!!"!!![rrrqd!!!",!!!!&J!+!!!!0J!!!!F!N!G -!!!!"J!!!!%!!!"&!!!!"J!!!!)!!!"'!!!!"`!!!!-!!!!Y!!!!CJ!!!!3!!!! Z!!!!#J!!!!J!!!"0!!!!CJ!!!!S!!!"1!!!!#J!!!!i!!!"2!!!!#J!!!"!!!!! `!!!!CJ!!!")!![rrrq`!!!"4!!!!#!!&!!!!-`!!!!F!N!Fd!!!!"`!!!!%!!!! e!!!!"`!!!!)!!!"'!!!!"`!!!!-!!!!`!!!!CJ!!!!3!![rrrqX!!!"6!!!!"!! "!!!!-!!!!'B!N!8#rrrrjJ!!!(!!!!!'!!)!!!"a!!!!#J#3"h)!!!!#!!!!!J! "rrrrj`!!!#S!!!!'rrrrjJ!#rrrrk!!!!'8!!!"@!"!!!!"Q!!!!!J#3"fF!!!! #!!!!"!!!!'J!!!!#!!!!#!!!!'N!!!!#!!!!$!!!!'S!!!!#!!!!%!!!!'X!!!! #!!!!&!!!!'`!!!!#!!!!'!!!!'d!!!!#!!!!(!!!!'i!!!!+!!!!)!!!!'rrrrr R!!!!)J!!!')!!!!+!!!!6!!!!(-!!!!+!!!!6J!!!(3!!!!+!!!!8!!!!(8!!!! +!!!!8J!!!(B!!!!(!!!!9!!!!(F!!!!(!!!!93!!rrrrk3!"rrrrk!!#rrrrkJ! !!&8!!!"'!"N!!!!c!!!!"`#3"c3!!!!(!!!!!3!!!&B!!!!$!!!!!J!!!$F!!!! #!!!!"J!!!$J!!!!+!!!!#J!!!$N!!!!#!!!!$!!!!$S!!!!+!!!!%!!!!$X!!!! (!!!!%J!!!$`!!!!(!!!!%`!!!&F!!!!(!!!!&!!!!%B!!!!(!!!!&3!!!&J!!!! +!!!!&J!!!&N!!!!+!!!!'!!!!&S!!!!+!!!!'J!!!&X!!!!+!!!!(!!!!&`!!!" Q!!!!(J!!!&d!!!!#!!!!)J!!!&i!!!!#!!!!*J!!!&m!!!!#!!!!+J!!!'!!!!! #!!!!,J!!!'%!!!!#!!!!-J!!!')!!!!#!!!!0J!!!'-!!!!#!!!!1J!!!'6rrrr T!!!!2J!!!$!!!!"Q!!!!3J!#rrrri`!!!(X!!!!B!!B!!!"m!!!!!J#3"hd!!!! #!!!!"!!!!(i!!!!#!!!!#!!!!(m!!!!#!!!!$!!!!)!!!!!#!!!!%!!!!)%!!!! #!!!!&!!!rrrrj!!"rrrri`!#rrrri3!!!)-!!!!d!!d!!!#%!!!!!J#3"i8!!!! #!!!!"!!!!)B!!!!#!!!!#!!!!)F!!!!#!!!!$!!!!)J!!!!#!!!!%!!!!)N!!!! #!!!!&!!!!)S!!!!#!!!!'!!!!)X!!!!#!!!!(!!!!)`!!!!#!!!!)!!!!)d!!!! #!!!!*!!!!)i!!!!#!!!!+!!!!)m!!!!#!!!!,!!!!*!!!!!!!J!!!$!!!2rrrq) !!Irrrq%!!2rrrpm!!3!!!!)!!Irrrq!!!!!%!!!!"2rrrpm!![rrrq8!!!"j!!! !%J!&!!!!H[rrrq3!N!H#rrrriJ!!!!3!!!#4rrrri!!!!!J!!!!`!!!!CJ!!!!` !!!#5!!!!#J!!!"!!![rrrr)!!!!U!!!!4J!)!!!!+rrrrr%!N!Farrrrm!#3"d, rrrrZ!*!(5[rrrqd!N!G3rrrrl!#3"e,rrrrV!*!(92rrrqS!N!Girrrrj3#3"3, rrrrj!!!!%3!!!'B!#3!!!",rrrri!*!(%rrrrrF!!!!-!!!!)`!!!!X!!!!3!!! !*!!!!'B!!!!5!!!!*3!!!!X!!!!@!!!!*J!!!!X!!!!B!!!!*`!!!!X!!!!D!!! !+!!!!!)!!!!F!!!!+Irrrr)!!!!J!!(rrrrG!!!!$!!!!!%!!!!(!!,rrrrE!!! !P`!!!"3!"J!!!#d!!!"Q!*!(,J!!!!)!!!!%!!!!,rrrrrF!!!!)!!!!1J!!!!S !!!!-!!!!-!!!!'B!!!!1!!!!Q!!!!!S!!!!5!!,rrrrD!!!!Q3!!!"B!#3!!!*S !!!!+!*!(0`!!!!)!!!!#!!!!1!!!!!S!!!!'!!!!4`!!!'B!!!!)!!!!Q`!!!!B !!!!-!!!!4J!!!!F!!!!0!!!!53!!!!S!!!!1!!!!-!!!!'B!!!!3!!!!1J!!!!S !!!!8!!,rrrrC!!!!R!!!!"S!#3!!!*d!!!!+!*!(0`!!!!)!!!!#!!!!1!!!!!S !!!!'!!!!,3!!!'B!!!!)!!!!,J!!!!S!!!!-!!!!6`!!!!S!!!!1!!!!-!!!!'B !!!!3!!!!RJ!!!!)!!!!8!!!!R`!!!!S!!!!B!!,rrrrB!!!!S3!!!!S!!`!!!+) !!!!+!*!(0`!!!!)!!!!#!!!!-!!!!'B!!!!'!!,rrrrF!!!!PJ!!!"S!"!!!!#[ rrrrE!*!(3[rrrpS!N!G+rrrrf3#3"k$rrrrB!*!&![rrrpi!!!#8!!!!1J!*!!! !%[rrrpd!N!F6rrrrp`!!!!`!!!!M!!!!#`!!!"!!!!!N!!!!CJ!!!")!!!!P!!! !#`!!!"B!!!!Q!!!!#`!!!"J!!!!R!!!!#`!!!"S!!!#9!!!!!J!!!"`!!!!Trrr rh!!!!#!!![rrrrS!!!!2!!!!CJ!#!!!!%2rrrrN!N!H6rrrrhJ#3"3,rrrr9!!! !TJ!!!!B!!J!!!+F!!!!,!*!("J!!!'3!!!!#!!,rrrr6!!!!Y3!!!!3!!3!!!,B !!!!#!*!&!Irrrp)!!!!)!!!!!3!!!!F!![rrrp3!!!#`!!!!%!!&!!!!X3!!!!B !N!Hb!!!!"J!!!!%!!!#c!!!!#J!!!!)!!!#drrrrd`!!!!3!!!#hrrrrdJ!!!!J !![rrrpB!!!#N!!!!3J!0!!!!TIrrrp8!N!HS!!!!C!!!!!B!!!#T!!!!#`!!!!S !!!#U!!!!#`!!!!`!!!#V!!!!!J!!!!i!!!"8!!!!"J!!!")!!!#X!!!!"J!!!"- !!!#Y!!!!CJ!!!"3!!!#Z!!!!!`!!!"J!!!#[rrrre!!!!"`!!!#irrrre!!!!#` !!!#j!!!!"J!!!$`!!!#k!!!!!`!!!$i!!2rrrpF!!IrrrpB!![rrrrX!!!!0!!! !DJ!#!!!!$[rrrrS!N!HMrrrre`!!!'B!!2rrrr`!!IrrrrX!![rrrri!!!!$!!! !%J!(!!!!"2rrrrd!N!F(!!!!#`!!!!3!!!!)!!!!#`!!!!B!!!!*!!!!#`!!!!J !!!!+!!!!#`!!!!S!!!!,!!!!#`!!!!`!!!!-rrrrr!!!!!i!!2rrrp%!!Irrrp3 !!2rrrp!!!3!!!!-!![rrrmi!!!$q!*!)rrrrc`!"rrrrcJ!!rrrrc3!"rrrrrJ! "rrrrb3!!!!3!!!!"!!!!"`!#rrrrbJ!!!48!!!!-!!-!!!%@rrrrb3#3"J%A!!! !!J!!!!3!!!%B!!!!!J!!!!J!!2rrrmX!!IrrrmS!![rrrm`!!!%)!!!!'J!0!!! "#3!!!!)!N!B"#J!!!!)!!!!%!!!"#`!!!!F!!!!)!!!"$!!!!!B!!!!*!!!"$3! !!!B!!!!+!!!"$J!!!!B!!!!,!!!"$`!!!!B!!!!-!!!"%!!!!!B!!!!0!!!"%3! !!!B!!!!1!!!"%J!!!!B!!!!2!!!!&J!!!!)!!!!3!!!"%`!!!!X!!!!8!!!"&2r rrmX!!!!@!!(rrrr)!!!!"3!!!!%!!!!'!!(rrrr$!!!!!J!!!!)!!!!,!!,rrrr %!!!")`!!!!J!!`!!!5,rrrr&!*!'!53!!!!,!!!!"!!!!5Arrrr$!!!!"J!!rrr ra3!"rrrra!!#rrrraJ!!!5%!!!!b!"%!!!%Lrrrra3#3"J%N!!!!#`!!!!3!!!% Q!!!!#`!!!!B!!!%R!!!!CJ!!!!J!!!!6rrrrp`!!!!`!!!!M!!!!#`!!!"!!!!! N!!!!D`!!!")!!!!P!!!!#`!!!"B!!!%S!!!!#`!!!"J!!!%T!!!!"`!!!"S!!!% U!!!!"`!!!"X!!!%V!!!!CJ!!!"`!!!%X!!!!CJ!!!#!!!!%Y!!!!!`!!!#3!!!% Z!!!!!`!!!#J!!!%[!!!!#`!!!#`!!!%`!!!!!`!!!#i!![rrrm!!!!%r!!!!"!! #!!!"3!!!!!X!N!Hm!!!!#`!!!!)!![rrrm%!!!%k!!!!%!!&!!!"1`!!!!)!N!B "2!!!!!)!!!!%!!!"23!!!!S!!!!)!!!"2[rrrm!!!!!+!!!"33!!!!X!!!!1!!, rrrr#!!!"-J!!!&!!'!!!!5,rrrr&!*!'!53!!!!,!!!!"!!!!5B!!!!,!!!!"J! !!5F!!!"Q!!!!#!!!!"2rrrrh!!!!$!!!!#-!!!!,!!!!%!!!!#3!!!"V!!!!%J! !!#8!!!!,!!!!&J!!!6-!!!!,!!!!'!!!!63!!!!(!!!!'J!!!68!!!!(!!!!'`! !!6B!!!!,!!!!(!!!!6F!!!!(!!!!(J!!!6J!!!!(!!!!(`!!!6Rrrrr"!!!!)!! !!8)!!!!#!!!!-!!!!8-!!!!+!!!!0!!!!83!!!!$!!!!0J!!!88!!!!$!!!!1J! !!8B!!!!+!!!!2J!!!8F!!!!$!!!!3!!!!8J!!!!$!!!!4!!!!8N!!!!#!!!!5!! !!8S!!!!#!!!!6!!#rrrr[`!!!8`!!!"!!"B!!!%Lrrrra3#3"J%N!!!!#`!!!!3 !!!%Q!!!!#`!!!!B!!!%R!!!!CJ!!!!J!!!!6rrrrp`!!!!`!!!!M!!!!#`!!!"! !!!!N!!!!D`!!!")!!!!P!!!!#`!!!"B!!!&0!!!!!`!!!"J!!!&1!!!!#`!!!"` !!!&2!!!!!J!!!"i!!!&3!!!!!J!!!#)!!!&4!!!!#J!!!#B!!!&5!!!!#J!!!#J !!!&6!!!!#J!!!#S!!!&8!!!!#`!!!#`!!!&9!!!!#J!!!#i!!!&@!!!!!J!!!$! !!!&A!!!!!J!!!$3!!!&B!!!!#J!!!$J!!!&C!!!!!J!!!$S!!!&D!!!!#J!!!$i !!Irrrld!!!!@!!!!!J!!!!X!![rrrli!!!&F!!!!-J!,!!!")[rrrm8!N!B"*!! !!!X!!!!%!!!"*J!!!!X!!!!'!!!"*`!!!'B!!!!)!!!!%rrrrrF!!!!-!!!!)`! !!!X!!!!3!!!!*!!!!'X!!!!5!!!!*3!!!!X!!!!@!!!!*J!!!!X!!!!B!!!!*`! !!!X!!!!D!!!!+Irrrld!!!!F!!,rrrqm!!!"AJ!!!#3!$`!!!5,rrrr&!*!'!53 !!!!,!!!!"!!!!5B!!!!,!!!!"J!!!5F!!!"Q!!!!#!!!!"2rrrrh!!!!$!!!!#- !!!!,!!!!%!!!!#3!!!"V!!!!%J!!!#8!!!!,!!!!&J!!!9m!!!!,!!!!'!!!!@! !!!!(!!!!'J!!!@%!!!!(!!!!'`!!!@)!!!"Q!!!!(!!!!@-!!!!,!!!!)!!!!@3 !!!!(!!!!)J!!!@8!!!!(!!!!)`!#rrrrZ`!!!@F!!!!Q!!i!!!%Lrrrra3#3"J% N!!!!#`!!!!3!!!%Q!!!!#`!!!!B!!!%R!!!!CJ!!!!J!!!!6rrrrp`!!!!`!!!! M!!!!#`!!!"!!!!!N!!!!D`!!!")!!!!P!!!!#`!!!"B!!!&S!!!!#`!!!"J!!!& T!!!!"`!!!"S!!!&U!!!!"`!!!"X!!!&V!!!!CJ!!!"`!!!&X!!!!#`!!!#!!!!& Y!!!!CJ!!!#)!![rrrmF!!!%I!!!!8!!'!!!")2rrrmB!N!B"-Irrrm)!N!B"5rr rrlm!N!B"@rrrrli!N!B"AIrrrl`!N!B"C[rrrlX!N!8#rrrrZJ!!!AN!!!!%!!% !!!&k!!!!!`#3"3(rrrqj!!!!%3!!!!%!!!!(!!(rrrqi!!!!$3!!!!%!!!!(!!, rrrqhrj!%!!!!#!!!!!,rrrqfrj!%!!!!$!!!!!,rrrqerj!%!!!!#!!!!!,rrrq drj!%!!!!'!!!!!(rrrqc!!!!#`!!!!%!!!!(!!(rrrqb!!!!"`!!!!%!!!!(!!, rrrqarj!%!!!!#!!!!!,rrrq`rj!%!!!!$!!!!!,rrrq[rj!%!!!!#!!!!!,rrrq Zrj!%!!!!D!!!"&p!1$%i!!--58j&9&0[BfYPG(-!!&P*6N988fpMDf9d4'pYB@P Z!!Ab*&0[BfYPG%4[E@&TEJ!%0&0[BfYPG%4[E@&TEJ!(mepIGR"dFL3!!q*NFQP fCA*6G'&dC3!&&(*PFfpXGQ9b8h4KG'8!!YPNFRCb8Q9Q6R9Y!!%1D@jPG%0[G@j d!!CeF'*-BA0d!!D9F'*-DA0d!!-#3@jZEh4KG'9N8%)!!R"`BJ!&b8"ME'&cFb3 h16K(990*58j&9&pMF!!$VR4MF!!(Fe4$8'P[F')!"[*QD@aX-6)!"0YTEd0[EA" XCA4TEfi!!Ep5Eh9dD@jP4'9cBh*TF(4[FJ!(*fG[6@PiC@40Ef4P9(*KF!!(4(C PFR0TEfi!"JKbEh9dD@jP4'9cBh*TF(4[FNCXB@Gc!!&@FQ9cCA*fC@3a!!&AFQ9 cCA*fC@3b!!4hFf9XC@0dEh**EQC[!!3UFQpeG'PZC80[G@jd!!E`FQpeG'PZC9* PBfpbC(-!"4p5Eh9dD@jP8Q9MEh*N!!#rF(*[BdPZCQm!!p"*8d%!"2YbEh9dD@j P4QaKCh-!"S4`FQpM4'9cBh*TF(4[FJ!!eh0PE'9MG'pb!!"rD@p5CA0eE(3!!GC TEdjKE@93G()!!@aTEeC5C@C1G@d!!4CTEd05C@C1G@d!"UTMFd0[C'8!!IpdBh" 6G(*PB@d!"mKMFe"KFQ&Y!!@l3'0XBA0c*$Fi0dG98dP*6N98Af0`!!DCBh*PBA4 P!!1k9%033h*PBA4P8%)!"p"bBhC#G@CQ!!+8FQ0f3R9QCNaPEJ!#h@j[G'PQH9" bEf-!!bTeFf9b4'&dB9"dFJ!%F'p`C@i!!4p83e"2F'9Z8%)!"iaeE("8D@ePEh9 d9Q&XG@8!!(peE("8D@ePEh9d3@0dD@pZ!!@NGQ&XD@4TG(P'E'&RF`!$$@0[E@e KEQ48D@ePEh9d9Q&XG@8!!YTbC@e[G'9)Eh0d!!+qFQ9YEh4P8'pbG!!"cQa[Bf& X5'pcG!!"XQa[Bf&X8'pbG!!!i(4[FdCXB@Gc!!*rF(*PBf9NC@jMC3!!Ff4[ER4 'FQ&R!!)rG'PYC94[6'PfC3!!kA0PBh9bDA4j!!(eEh"dD@pZ3fjd!!FNEh"dD@p ZF`!%JA0PEQ3!!9"83e"6C@jN8%)!!,C`GA0S4QaKC`!#2(9bCf9ZG%CXB@F!"VP QD@aXCA)!"[ahC(03G()!!"*cC@jN4R*PC3!#QR0PEQ4-C@jRG'J!"`PbC@0PDAC P!!4c9%038Q9MC@PfC9"#!!#&E@&bDdCXB@F!"LCbC(03G()!!CabC(0-C@jRG'J !"qYcC@0[EQ48D@eP8h4KEA!!"IeME'pcC3!#ie4$8%0XEh0P8%)!"F0KBQpbG!! #Qe4$8%&LEh*d8%)!"XjcG'&dGA-!!ep83e"6G'&dGA033J!'@R9ZGA0PC!!(Kf0 [EQjPBh4TEfj6G'&dC3!#Sh0PEQ4AD@jNEhF!!3PbBhCAD@jNEhF!"V&KEA49EQ& MDf9N4'&dB3!&D'&YG&9ZFQ9KC%4KG'%!!,jcC@0eFQPdH8aPGQ9X8(4b!!11Ff9 ZC&9ZB@0VC@3!!&0cC@jN6Q9iG!!!KQ0[EQGPFh4TEfjAD@jNEhF!"`TbBhC1CAK d!!5'Fh*dG!!(BfaKFh459&3!"NKcC@jN6@&i8f9R8fPkC3!$H@0[EQj6G'&d8(4 b!!,99%033fpZEQ9MG'P[EP0dBA4c!!4&C'&dB9"VG(05BhCN!!6GC'&dB9"VG(0 6C@jd!!EGC'&dB9"VG(05CA0PER3!!ICLHA4PFe*MGQ3!"+GLHA4PFe*MGQ4%GA! !!i9LHA4PFe*MGQ43BA0d9fPZC'ph!!'+BRPdCA06C@jd!!1JBRPdCA05CA0PER3 !"jaZG@e)DA0dEd*eBfYPG(-!"44cC@jd8fPkC8KTFh4[!!1m5'PcG'p#G@0VCA3 !"9KfB@aeC3!(%Q0[G@jdCA)!"r"dEA*68P48!!-mFR4d9Q&bD@&ZBf8!"KYdEA* 59%m!!FCcC@jN9(*TCA-!!0CcEh9bBfK4G@9ZBfK5BhCN!!,rCfa[BQ&X5@jQE`! (T94$8%GXEf*KE%PZCQp33J!$%R4MF&"KFQ&Y8(4b!!!Q9%038'&bB@d!"j!!G'0 `8R4[33!"$A4MF&*dEdeTEJ!"&R4MF&*dEdeKH!!&qR4MF%eKH&0PCe0THQ8!!Pe dBh"0BAK$EfjZ!!4TG'0`6@&i9fPZC'ph!!2MG'0`8h4KG(03G()!!)K83e"6G'& dF`!(C(4MF%0[EQj"G(4PEA"dF`!&dh4MF%0[EQj2F'9ZC@3!"fPdBh"$EfjZ3@0 MCA"dC@3!"5"dBh"$EfjZ3fa[Ff9N!!BrG'0`3fpZEN&LEh*dC@3!!lCdBh"2Bh4 PG(0*EJ!%3h4MF%pMG'9dFdpeG!!'Kh4MF%pMG'9dFdPZ4(9`!!!cG'0`6f0dCA4 c8Q9dFQ&ZF`!%IA4MF%PZF(9d8'YdF`!&)(4MF%peG("eG&"VG(-!!JpdBh"%GA" 3Dh4c!!EfG'0`8Q9dFQ&ZFe"VG(-!!kCdBh"$4%*8B@*XC3!"G'eKH&4$8%0[EQj PBh4TEfjc!!1bG@4`!!F`9843D@p`BJ!"rR9NF&0dFQ9KE3!&r%"ME'&cFb3h16" (990*58j&9&pMF!!$cP9%8%0bC@&dC9"#!!*3C@jND@jR8'pbG!!"@99%8&0PEQ4 33J!!+A*PFf9bGQ9N!!"!BfKPBfY6G@d!"&a94&"5C@0PDACP8%)!"mPdD@eP6h9 d!!"UC'9cG%K[Fh3!!%jNCA0d8'pbG!!$Q@edG3!!qP9%8%e899"#!!HCEA4e8fP kC3!%,R0[BfX!!Xa*6N988fpMDf9d!!If*&0[BfYPG!!'q90[BfYPG!!!((*PCN0 [G@jd!!$IGhKbC@CMEfi!"b9hH'9fC@jd!!2RGhKPGQ9ZG'eKFfX!"R*cG(*PB@d !!ieZEfjLE'pMDfPZC`!(pR*PBhC#G@B!"CTbC@0fC!!#ch0K!!2NFfpMDf&NC(* ID@i!"`*cD@jIE'9Z!!,!FfPZAfCKE@PXH3!!@R0TEPp`Eh*d!!!$FfPZAf&NC() !"feTEPpKC'4b!!CpFepKC'4b!!#bFfPZAhTPFQm!"1a`C@9b!!DaFh0dBA4P!!$ (BA0jEQ0PFR)!"S3ZD(4[EQ`!!@KS!!D,,QKdEfjc!!DN,QjdEfKX!!&ZEJ!'Ubj ZG'pSF`!'a#j83e"ICA*bEh*IAdCT!!AaCA*bEQm!!B40B@083e"PFR)!"G%ZAep MG&pI-6"*6N988fpMDf9d4RB!!$-ZAepMG&pI0P0[BfYPG%Cf!!+EAepfG&pI-6" *6N988fpMDf9d!!Fr,QePEA0PG!!"$5j2F'9Z8fpMDf9dAema0NP14946Ef0VCA4 %EfeKD@j'GJ!%@h4SDA-!",G!1$3`!!I8AepNG&pI0P0[BfYPG%Cf!!5i3$Jd-3! 'JLjIAf0dAema-%P14946Ef0VCA4'9@`!",T!1$3c!!5l3$Jd0!!&"#jIAf4dAem a-%P14946Ef0VCA4'GJ!#`5j$E'pcC90[BfYPG&pI-6C*6N988fpMDf9d4'pYB@P Z4RB!!%)ZAepNG&pI0P0[BfYPG%Cf!!*2,PpIC'aIAdC3GJ!%[d!i0$J!!Z!Z3AC KD@aKBQaPAema-%P14946Ef0VCA4'GJ!$#bj6CA45C@C$EfjIAc%`58j&9&0[BfY PG%C3GJ!$P#jIAh"dFPpRE(9P!!Gi,RGi6@&M8fpMDf9d5'&ZC'aPFP"bEf-!"MG bC@CMEfi!!4aMB@jAFQPdC9!!!0GMB@j5C@&N8!!!CQ0KEPGbDA4P!!FmBf&Z8Q9 KC!!%qd!i0M3!!EBZ4e96590PG&*PCQ9bC@jMC3!(XP0[BfYPG(-!"[`ZAepfBep I-6&6Ef0VCA48B@*XC8CT!!&cF`!%m@eKFfX!")GNBA4K!!6p3$Jf0J!(R5jLD@j NAema-%P14946Ef0VCA4'8(CT!!1Y,NG98dPICA*bEh)!!PJZCf9dD'pcG'PN!!4 !B@4NFJ!(SQjKE@9XC@i!"+YZB@eP!!3J3$Jh13!(hbjRCA4cEf0VEQ&YC9pI-6" *6N988fpMDf9d4P"f8'N!"f8ZE@9YBh"j!!3l3$Ji-`!(p#jRCA4`C@9bEQ&YC9p I-6"*6N988fpMDf9d4P"f8'N!"%&!1$Jj!!&%,R0SGA4NEhGZAema-%P14946Ef0 VCA4'D3!$"QK[G`!%AN!i16B!!$8ZCQ0ZG'aIAc%`58j&9&0[BfYPG%C9D@N!!jp ME@3!!cTKFQF!"%0!16!i!!'Y,QP[Bh4XAema-%P14946Ef0VCA4'9@P3GJ!(-(* PFA9PFh3!",GKFQG`!!6cFfPkC3!$j'PQFJ!&N@PQFQ9a!!4M3$Na1!!!Tbj(990 *GfPdD%PZG'9bEQ9d8fpMDf9dF`!%GLj%Efjd8h4bDA"IAc%b8fpMDf9d4'pYB@P Z4RB!"(Y!16)`!!-&,PpIBh4IAc%f58j&9&0[BfYPG%4[E@&TENCf!!IV,PpIBh4 IAc%b8fpMDf9d4'pYB@PZ4QN!!*0IAhCdAema0NP14946Ef0VCA4%EfeKD@i!"#d ZAepMG&pI-6G(990*3fpZCQPRGA*KG'P[ENCf!!5MBfpZCJ!"ZdG98dP$EfjQD@G eFQ&dD@pZ!!2,C'9QBA9XG&4jF'8!"K"NC@CKG@ad3h*PBA4[FJ!!,Q&eG'p6F'P Z!!F4EQp$D'4TFJ!"-Q&MBh9b8h4KG!!#rQKKFd0[ER0[E'8!"ZTZEd&eG'p*EQP d4h*KCJ!#"h0SBA*PC%p`C@i!"eCcD@G3DA"P!!@UEQp"F("XC89fC@jdF`!$P'j eE90eCQCTBf9c!!#1Fh9QCQPMCA-!!TC(990*8h9QCQPi!!D`Fh9QCQPi!!#,Fh9 QCP4jF'8!!r"cG@CQ3h*PBA4[FJ!%I8!j-M)!"J0IAf4dAema-P0[BfYPG%4[E@& TENCf!!4q3$Nb-`!%JN!j-MF!"8iZ4(*TGQ9bAema0NP14946Ef0VCA4%EfeKD@j 'GJ!$bbj33Np`C@j6H@jM!!8T8'&bB@e#E'pMDe*PB`!(,@P[8'&bB@d!"iP*6e" KFQ&Y!!8EF8aTEQX!"Ap44@aPE3!&QR&8HA"P!!@1F84KG'%!"M9TEe4bBA!!!G9 TEd0YC%&NC()!!(TTEe*PCNjeE3!"fQP[9Q9bFdjeE3!"bfP[8'9bEA0cEJ!'afP [6@PcB`!!2@P[3R9QCQ9b!!+UD@p5CA&$Eh9ZG!!#C@P[3@0d3fpeER3!!@4TEe" [Fde[C'8!!e*TEe"[FdpQCR0PG!!"0fCTE'93BA*KE3!"edCTE'93BA*KE3!"D'P [4P*PCNjeE3!#-'P[4PCPFR01G@d!"fKQD@aXCA)a!!0BD@p'4'Pb5@jNCAJ!!M" TEdCX3A4dFQPL!!-#D@p'E&CPFR01G@d!"0&TEdCX4QjNFNPZCQm!"Aj'5@jQE`! 'CQCN9(P`C3!"DfCN3h*PBA4[FJ!(['CN4QaKCh-!!JCQC%a[Bf&dD@pZ!!@N8'p TER3!!ACf!!DfCQ4'E'4b!!FND@p'E%jeE3!"$fP[4Qa6G%*XD`!"rfP[4Qa-Cda PEJ!"c'P[4Qa3H8aPEJ!#k@P[4Qa58h4#E'X!!N"TEdCX8NaR6'9Z!!++D@p'E&* 3H8aPEJ!"[@P[4Qa$FN4KG!!"efP[4Qa0C%4KG!!$ZhC[E(9YC9"KFQ&Y!!-j9Qp XG@eP8'&bB@d!"fPQD@aXCA)b!!*MD@p@Efa*EQ4PH!!"`fP[9N0b4'&dC3!",fP [9Nac3QY9F!!([@P[9N&dFQ)!!)9TEeC1E8CXF`!!9'P[9N4TFP0d!!GND@p@3Qa -EJ!$,@P[9NjY3@a#E'Yc!!1JD@p@3@a#E'Y6DAS!!I"TEeC$E("6DAS!!*&TEd& X3Qa6G!!#FfP[9NjiG%C1G@d!!&*TEeC'FN*XD`!#c'0ZG(*X8'&bB@d!!X"$ER4 bE&"KFQ&Y!!5+Ffa[G%4PGP"KFQ&Y!!6D8fa[G%4PGP"KFQ&Y!!%UD@p68Q9Q6R9 Y!!))D@p69Q9bFdjeE3!#Z@P[8e"PFQecFfi!"NPTEe00DAJ!!"eTEe0'E'&RF`! 'JfP[8fa[G!!%hfP[583!"6YYG@adD84PGP"KFQ&Y!!@c6A9XG'P%CAC3BA*KE3! "UfP[69*PCNjeE3!#R@P[69CPFR01G@d!!QPTEde3CA*YFh0Z!!C+D@p06@Pi!!" "D@p04QaKCh-!!PTTEe0&3QaV8(4b!!5$3$Nb1!!(C5j5CA0[E(CPFPpI-6C*6N9 88fpMDf9d4'pYB@PZ4RB!"IBZ6h"PEP*PFfpXGQ9b!!5G3$Nc-J!'%#jcEf0VCA4 IAc%f58j&9&0[BfYPG%4[E@&TENCTF`!(A#j(990*Af9bFQpbAfjTE!!#HbjIAfj hAep'9@`!!h)ZAepMG&pI194$8&0[BfYPG%Cf!!2R,PpIBh4IAcP94&"6Ef0VCA4 'GJ!%Eh4jF'8!!CKcBACP4A*bEQm!!XC&FR*ZEe0KGQ9b!!0TCP0KGQ9N4A*bEQm !"2e!16Bb!!&FAepNE&pI4P"f!!6`AepNG&pI-6"&FR*ZEe0KGQ9b4RB!"2j!16B c!!@(,PpIC(4IAc%`4A*bEQp6BACPFNCf!!3#3$Nf0`!%$Lj(CA433PpI-6C*6N9 88fpMDf9d4'pYB@PZ4RB!"HCMGA*33J!$,#jIAfjhB9pI4P9X!!3m3$Ni-!!$Sbj IAf4XB9pI4P"f!!4!3$Ni0!!%38!j1$8!"%0!16Jh!!EmAep59&4*Aema-P0[BfY PG%4[E@&TEJ!%3N!j1$B!!N0IAe*89%PIAc%f58j&9&0[BfYPG%4[E@&TEJ!"5@0 SEfpcC9pI-6*6Ef0VCA4%EfeKD@j'D9"M8(CT8(C3D3!'Mh0[BfYPG("KDA*IAc% b8fpMDf9d4'pYB@PZ4QPc8&!f8fpMDf9d!!,dAepNG&pI-6C*6N988fpMDf9d4'p YB@PZ4RB!"E9cEf0VCA4IAc%f58j&9&0[BfYPG%4[E@&TENCTF`!$cbjIAf4dAem a0NP14946Ef0VCA4%EfeKD@j'GJ!(i5jIAf4dAema-P0[BfYPG%4[E@&TENCf!!4 G3$Nj-3!%AN!j16)!"'"!16Nd!!IrAep59&4*Aemf8fpMDf9d!!4I3$Nj-`!%"Pp I8P4859pI-6"*6N988fpMDf9d!!0hF'pcG&pcC@aPBh4IAcC6Ef0VCA4'9@09Be9 M!!&)Ff9XC@0dAemf8fpMDf9d4P"9Be"9Be"9B`!#E("bC9pcC@aPBh4IAcC6Ef0 VCA4'9@09Be9M!!&#DA0KG(4jAemf8fpMDf9d4RB!"(eQG(*eEQ0KG'9IAcC6Ef0 VCA4'E!!"B'acC@9VAemf8fpMDf9d4QaT!!8[CR0dBA4IAcC6Ef0VCA4'8$4cG'& d!!&,Ff9dFfpMDfp`G&pI0P0[BfYPG%CTD9"fD3!#b'GPG(0[BfY[F(4IAcC6Ef0 VCA4'D@P3GP"T!!FFFf9ZC(4[Aemf8fpMDf9d4P"fD@P3GQN!!R"bC@0fCR*[E9p I0P0[BfYPG%C3GQPT8(C3D3!#2AGbDA4PAemf8fpMDf9d4P"fD3!"TR*PB@4IAcC 6Ef0VCA4'8(CT!!5@B@0MCA"dAemf8fpMDf9d4P"f8'N!!FKXDA0dC@jIAcC6Ef0 VCA4'D3!%kQ0[EQjPBh4IAcC6Ef0VCA4'8(CT!!#&FfKeG'4[GfjIAc%`58j&9&0 [BfYPG%CT!!$UD@pMG'aIAc%`58j&9&0[BfYPG%C9D9"f!!G4CQ0ZG'aIAc%`58j &9&0[BfYPG%C9D@N!"P9RCA4`C@9bEQ&YC9pI-6"*6N988fpMDf9d4P"f8'N!"Qa RCA4cEf0VEQ&YC9pI-6"*6N988fpMDf9d4P"f8'N!"Q&LD@jNAema-%P14946Ef0 VCA4'8(CT!!%"3ACKD@aKBQaPAema-%P14946Ef0VCA4'GJ!%!PpIC(4IAc%`58j &9&0[BfYPG%Cf!!6L,PpIFfPZDA4I4e9658P1494IBh!!!F-ZAepbC@GTFh4PFPp RE'pLB@aIEf*UC@0d!!4L3$Nj0J!$IP423`!"!%0XEh0P8fpMDf9dAema0NP1494 6Ef0VCA4%EfeKD@j'GJ!!6%p`C@j6Ef0VCA4IAc%f58j&9&0[BfYPG%4[E@&TENC f!!2f4f9d8%*IAc%f58j&9&0[BfYPG%4[E@&TENCf!!CL8Q9cEfafCA*IAc%f58j &9&0[BfYPG%4[E@&TENCf!!3T4(*TGQ9bAema0NP14946Ef0VCA4%EfeKD@j'GJ! #-&pIBh4IAc%f58j&9&0[BfYPG%4[E@&TENCf!!F)4e965AGTG'K*ER4PFQjPG&0 [BfYPG(-!!"a(990*8f9d8Q9QCA*PEQ0P!!,f8f9d8Q9Q3fpZAema-%P14946Ef0 VCA4'8(B!"HTIAf0dAema-%P14946Ef0VCA4'9@`!""4IAf0dAema-%P14946Ef0 VCA4'GJ!&d&4$8&pPFR*[FPpI4QN!"EjZG'pSF`!&YfjdEfKX!!@ID(4[ER-!"CK SG'pZE!!!8%pA8J#3"MES!!"G-J!!!J-!!$G8!!!PhJ!!&I!!!!*f!!!%9J!!!%! !N%"&C`!!4AX!N!8"XJXHZd9T!*!&"%9V!!3!!!!&!!!!C!!!!#!!!!PkI!J#TT2 Krrb3!!%!#*3Krm!mB!!"1)!!!6KMUQj)!!!"B!!!!$[M!!!mB!!"1)!!!6KMU'j )!!!"B!!!!(`$q%"!JJ!-1'!#!%J!!!JiB!3!J!%!5$JK!%"m#!1QJq(rr%k!!#" &G3#3"3B!!!!F4A8!N!8'!!!!0%9Z$!3!!!!(!!!!$)!!N!Z!!!"N#!!!!%9h!*! &"3#3"%9T!*!&"%9V!!3!!!!)!!!!'!!!!%`!!!SX9'!&+8##!!`iB!!!6S!!)$K J!!&1J!!J4@X!"!!!!!S!!!#F!!!!IJ!!#Z9m#!+QNq(rr*2"rrL6SIrdN!!"!!L 8)Iq`1q-!!%J!!!%l``!!Im!(G#`!!!&!JJ!J5!!!!AaM"c4Ar`9qIq!(0(`!'!" "J!!)1q#SRcKr!!!iRJ!!5!!!!@!!!!!lS`!!2'!!!6L!!!%iBkLI5!!!!@!!!!" mBqK3-!2rrhaJ'4#!!3"B1#%!8(`)!kD$iIrmJm(rq)1Krr41J!!J4A8!N!8)!!! !(%9e!*!&"3!!!$"&G3#3"3B!!!"84A8!N!8'!!!!E%9Z$!3!!!!-!!!!$)!!N!Z !!!#F'!!!!%9h!*!&#J#3"%9V!!3!!!!0!!!!G!!!!-i!!!`4I!J#TT2Krrb6`Ir iN!!"!!L8)IqJ1m-!!$[N!!!iB!!"1)%!2%J!!!&J!!!!U'%!5MLH!!!i[`!!1-% !1%J!!!&J!!!!I'!(08'#!"3i!!!!X"i!!$J!!!#3!"m!!)!"!'Ji)3"JI!J$TS2 Krrb$`Iri6S!!)%9e!*!&$J!!!#4&G3#3"3m!!!!m4@i-"!!!!"i!!!!-J!#3#i! !!(33!!!!4AF!N!80!*!%4@X!"!!!!"m!!!$!!!!"1J!!$20m#!+QNq(rr*2"rrL 6SIrdN!!"!!L8)Iq`1k-!!$[%!!!li!!!1'#KV8J!!!&8B!Br3B)!*$aJCQmiBfa N1)%!1%J!!!&J!!!!I'!(08##!!Jli!!"9q!'2d##!"3iI3!!1*i!!%J!!!&)!!! m1'#!!$b!Bh3iS!!!10d!!$Mq!!!iK(*X5!!!!@!!!!"mB!Fe3B)!&$J!!!#`(3! !1!!!!*!!(J!!J!%!@$JK!&"m#!1QJq(rr)2"rrL$SIrd6S!!)%9e!*!&#J!!!#K &G3#3"5!!!!"!4A8!N!80!!!!C%9e!*!&)3!!!)4&EJ`%!!!!*!!!!!b!!*!,J!! !`"J!!!"&G`#3"4m!N!4&D`!%!!!!*3!!!1J!!!(1!!!2)(`)!UDrBIrXN!!"!!L 8)Ii`1f-!!$Z%!!!lT3!!1mB!!$J!!!#3!!%"4$J"!$L3!!%"5V1K!8k6`3&S1!! !!E!"!94)!!"mJ!%"@(`!f%"!JJ"JJ!%"A(`!i%"!JJ"81(d!!$LH!!!iS3!i1-! !!8J!!!&J!!!!1q-!!$aJC'iiJ!!"1'0bF%J!!!&J!!!!+!-!!%##!"3iI`!!5!! !!@!!!!")!!!-1(m!!%J!!#bSB3&81!-!!E!"!956`3&S1'%"1%J!!!&J!!!!I'! (08'#rhJiB2rrJ!%"f$JK!G"m#!1QZf(rl%k!!#"&G3#3"5B!!!"X4A8!N!8R!!! !K%9e!*!&+!!!!*K&G3#3"5N!!!$!4@i-"!!!!3%!!!!-J!#3#i!!!1JS!!!!4AF !N!8P!*!%4@X!"!!!!3)!!!$S!!!#K!!!%[0m#!+QNq(rr*!!!3!)P#(rX$KK!$` iJ3!i5!!!!6aJBf3mJ(TdU+%!2)$"!$JiBf9f1)4MF%J!!!%li`!!Iq!(0#`!rrp "JJ!-1(m!!%J!!)JiB3!m1)%!1%J!!!%mB'0N2)"YG+LK!$b!`3!i1'0PGML%Bh" )!!!"1q-!!(rJ"c3X!2rr3B)!$$Kr!!")!!")1'%!2$L"!$K)!!!"2'"MC$b!EA5 SS3!mJ-%!1$KMCABiK'0`5!!!!6[M!!"ri!Fd,!$rrd'#!!`iI`!!5!!!#$KJrrq !!3"B1#%!8(`)!kD$iIrm6S!!)%9e!*!&(`!!!"K&G3#3"58!!!!d4A8!N!80!!! !@%9e!*!&*3!!!(4&G3#3"4m!!!#B4A8!N!8P!!!!Y%9Z$!3!!!%$!!!!$)!!N!Z !!!$S#!!!!%9h!*!%!3)!N!4&D`!%!!!""!!!!3`!!!-5!!!9J(`)!UD6iIrmNm( rq*!!!3!)P#(r`*!!B3"BJ!)!!#J!!!""JJ!-1'!!!%J!!-a)!!!"1q-!!$aJC'i iJ!!"1'0bF%J!!!&J!!!!N!"L!!#!!J!!+!!!!%##!"")!!!"B!!!!%J!!*5!BJ! !5!!!!@!!!!"ri!Fd,!$rrd'#!"!iI`!!5!!!!@!!!!#!BJ!!5!!!!@!!!!#!BJ! !5!!!!@!!!!#!BJ!!J!-!!*!!!J!!J')!!$L!!q%iS!!"J-%!@%J!!!&J!!!!1m- !!(r!"c9"JJ!NJ')!!%J!!!&J!!!!J')!!%J!!!&J!!!!1!!!!*!!!J!!1(i!!)! "!%Ji)3"!I!J$TS2Krrb$`Iri6S!!)%9c%!#3"!-!!!!B4A8!N!3"!J!!!#a&G3# 3"5F!!!"!4A-3!*!%!J!!!%K&Fa!!N!3#!!!!6%9e!*!%!38!!!"B4A-3!*!%!J! !!'4&G3#3"!%'!!!!D%9e!*!&+!!!!)"&Fa!!N!3#!!!!L%9e!*!%!3F!!!#-4A- 3!*!%!J!!!*4&G3#3"!%)!!!!Q%9c%!#3"!)!!!#J4A-3!*!%!`!!!+K&Fa!!N!3 $!!!!V%9e!*!%!3N!!!#m4A-3!*!%!J!!!0"&G3#3"!%+!!!!e%9c%!#3"!)!!!$ F4A8!N!3"#`!!!1"&Fa!!N!3$!!!!l%9Z$!3!!!%1!!!!$)!!N!Z!!!%-%!!!!%9 h!*!%!33!N!4&D`!%!!!"$`!!!'J!!!2)!!!D%A`)!UD3!!%!#*3Krm#!!J!!+!! !!%##!!`iB2rN5!!!2)"L!!!iJ!$K1+!!!NJ!!!&J!!!!J')!!%J!!!&J!!!!J') !!%J!!!&J!!!!1!!!!*!!!J!!1'!!!)!"!%Ji)3"!I!J$TNk!!#"&Fa!!N!3$!!! !$%9c%!#3"!-!!!!J4A8!N!3"#3!!!#a&Fa!!N!3#!!!!0%9e!*!%!3S!!!!i4A- 3!*!%!J!!!%"&G3#3"!%,!!!!4%9c%!#3"!-!!!"34@i-"!!!!4!!!!!-J!#3#i! !!'J!N!4&G`#3"!%2!*!%4@X!"!!!!4%!!!"S!!!%$!!!(%&m#!+QN!!"!!L8)Ir !N!"K!&L3!)%!A*!!S3"JN!$"!'5!!J!!+!!!!%##!!`iB2rN5!!!,)"L!!!mJ!! "1+!!!i$"!&L!i3"FJ3%!B)%K!'3iK2rK5!!!!@!!!!#!!3")1#%!3(`)!kC1J!! J4A-3!*!%!`!!!"a&Fa!!N!3$!!!!-%9e!*!%!3N!!!"34@i-"!!!!4X!!!!-J!# 3#i!!!'J!N!4&G`#3"!%4!*!%4@X!"!!!!4`!!!"F!!!%D!!!(JGm#!+QN!!"!!L 8)Ir!N!"K!&L3!)%!A)!#!!!S!!!!3))!$$KJrq4)!!!SJ')!!$L!$q%iS!!%J-% !@)$K!&a)!!!"B!!!!,"K!$JiB!!!J!%!5$JK!%"m#!1Q6S!!)%9c%!#3"!-!!!! 84A-3!*!%!`!!!#K&G3#3"!%*!!!!2%9Z$!3!!!%I!!!!$)!!N!Z!!!"F!*!%4AF !N!3"(!#3"%9V!!3!!!%J!!!!9!!!",B!!"pUI!J#TT!!!3!)P#(r`*!!B3"BN!# "!&b!!J!!+!!!!%##!!`iB2rN5!!!))"L!!!iJ!rK1+!!"B$"!&L!i3"F5!!!!@! !!!#!!3")1#%!3(`)!kC1J!!J4A-3!*!%!`!!!"4&Fa!!N!3$!!!!+%9e!*!%!3N !!!!m4@i-"!!!!5%!!!!-J!#3#i!!!&3!N!4&G`#3"!%J!*!%4@X!"!!!!5)!!!" S!!!%pJ!!)0Tm#!+QN!!"!!L8)Ir!N!"K!&L3!)%!A*!!S3"JN!$"!'5!!J!!+!! !!%##!!`iB2rN5!!!,)"L!!!mJ!!"1+!!"S$"!&L!i3"FJ3%!B)%K!'3iK2rK5!! !!@!!!!#!!3")1#%!3(`)!kC1J!!J4A-3!*!%!`!!!"a&Fa!!N!3$!!!!-%9e!*! %!3N!!!"34@i-"!!!!5-!!!!-J!#3#i!!!'J!N!4&G`#3"!%L!*!%4@X!"!!!!53 !!!"S!!!&8J!!)Tjm#!+QN!!"!!L8)Ir!N!"K!&L3!)%!A*!!S3"JN!$"!'5!!J! !+!!!!%##!!`iB2rN5!!!,)"L!!!mJ!!"1+!!"i$"!&L!i3"FJ3%!B)%K!'3iK2r K5!!!!@!!!!#!!3")1#%!3(`)!kC1J!!J4A-3!*!%!`!!!"a&Fa!!N!3$!!!!-%9 e!*!%!3N!!!"34@i-"!!!!6)!!!!-J!#3#i!!!'J!N!4&G`#3"!%N!*!%4@X!"!! !!6-!!!"S!!!&VJ!!*'"m#!+QN!!"!!L8)Ir!N!"K!&L3!)%!A*!!S3"JN!$"!'5 !!J!!+!!!!%##!!`iB2rN5!!!,)"L!!!mJ!!"1+!!#)$"!&L!i3"FJ3%!B)%K!'3 iK2rK5!!!!@!!!!#!!3")1#%!3(`)!kC1J!!J4A-3!*!%!`!!!"a&Fa!!N!3$!!! !-%9e!*!%!3N!!!"34@i-"!!!!63!!!!-J!#3#i!!!'J!N!4&G`#3"!%c!*!%4AX !N!T&DJ!%!!!"03!!!!`!!!B+!!!&UMJ!!!'B"!!!6S!!)%9["33!!!%h!!!!)2r rrr8!!!B1U[i(!*!,!m!!!3!%!*!-4AB+!!!!!6J!!!!84@i3"!!!!6X!!!!%rrr rc!!!$p8!N!4&EJ8%!!!"23!!!"6rrrr*!!!3-!!!!!3!N!F#!!!!"!#3"%9f"3! !!!%m!!!!%%9f"3!!!!%l!!!!"%9f"3!!!!%k!*!%4@i&!3!!!83!!!!+rrrrb!! !%4*XEf0KE'K[Fh3!8Q4&D`!%!!!"43!!!Y`!!!Bd!!!4%R`)!UDr)IrNN!!"!!L 8)Iq3!$XM!!#$BJ!!Jk)!!)2#!!#$JJ!!J))!!%J!!!&J!!!!,!-!!%##!&")!!! "B!!!!$Y$!!#633!iJ!%!1*!!!3!mJ!%!2#J!!!""JJ!F1'%!2$L!!!3iS!!#5!! !!@!!!!")!!*B1!!!!C!!(!!!1'!!!%J!!NL!BJ!!5!!!!@!!!!"mB!Fe3B)!&$J !!!13!"`!!$KJ!!")!!)N1q!!!%J!!"JiJ!!!9q-31MJ$!34mRJ%Z1rm!!5`I!!4 "J2rS1!!!!*J"!%!iH3!!1*i!!)#L!!!i`3"!5!!!!AaJ"c3X!+Aq3))!A%J!!!& J!!!!,!-!!%##!#b!(3!!+!!!!%'#!$3iB!!#1)!!!)'G!!")!!!"B!!!!#`$!!" "JJ!B1'!!"%J!!!&J!!!!1'!!!%J!!Bb)!3"!+!!!!%'#rkb!(J!!,!#Pr8'#!'a !J!!X,!#PqN'#!*!!3)!!&#`!TIK"JJ#N3)!!N!")!!#X,!#Pr%#!!&4)!!"J,!! !!%'#!+K!J!#8,!#Prd'#!!a!J!#)5!!!&$J!!!'3!"`!!$KJ!!")!!%F1!!!!j! !(!!!1'!!!%J!!3`i!!!$N!!F!!!iB!!!5!!!r$J!!!'3!"`!!$KJ!!")!!$X1!! !!C!!(!!!1'!!!%J!!0`i!!!#N!!F!!!iB!!!5!!!c$J!!!13!"`!!$KJ!!")!!# m1!!!!T!!(!!!1'!!!%J!!+`i!!!$N!!F!!!iB!!!5!!!R)JH!!4m!!Ge3))!&$J !!!'3!"`!!$KJ!!")!!#!1(i!"%J!!!&J!!!!1q2rrcJI!!4m(J#ZI!!(G#`!!#j !JJ!31'!!!$JI!!4mIJ'Z1q!!!%J!!"aAia!k1!-""(aq!K4Ai"!kI(X",M[r!!% X(`!%3)!!'&IM%$Si!`%%I"i!,LJ!!!"!J[r31'!!!&IJ%$TmH`%ZJ')!!)!"!(J i)3"`I!J$TVXKrq41J!!J4A3$!!!!!6`!!!!84A3$!!!!!8B!!!!B4A3$!!!!!6S !!!!F4A3$!!!!!6N!!!!J4A3$!!!!!83!!!!N4A8!N!3"4`!!!#K&G3#3"!&)!!! !1%9e!*!%!8N!!!"S4A3$!!!!!8S!!!#%4A8!N!3"5`!!!)K&G!-!!!!"0`!!!0a &G3#3"!%4!!!!j%9e!*!%!8`!!!$d4A8!N!3"63!!!4a&G3#3"!&1!!!"-%9e!*! %!8m!!!*34A3$!!!!!6d!!!,%4@i-"!!!!93!!!!-J!#3#i!!!Y`i!!!!4AF!N!3 "43#3"%9V!!3!!!&*!!!#8!!!"f!!!"FRI!J#TVmKrq53!!%!#*3Krk!l)`!!Ji) !!)1L!!#$`J!!Jf)!!)"L!!")!!!"B!!!!(aJ"c9"JJ!81!!!!j!!'`!!1'!!!%J !!IJli!!!5!!!'$L!!!"Aia!k1!-""(bH!5ilr`!","m!"%'!rqJi!!!!Q!%!1)" j!!!m!i%!+!!!!8##!"")!!!"B!!!!%J!!!L!H3!!1d-!!$LH!!#!SJ!!1-%!1%J !!!&mB!Fd,!#PrN##!&a)!!!"B!!!!#`$!!"!JJ!XJ"d!!#J!!!""JJ!d1'!!!cL !!!#"R3!!5!!!!@!!!!!X!`!!3B)!'$KJ!!4)!!!"B!!!!$KJ!!")!!&!L!%!1#J !!!""J[qXJ"i!!#`!TIa"JJ"83)!!+#`!TIP"JJ"i3)!!%#`!TIK!J!"m5!!!L#` !TIY!J!"!5!!!6#`!!!""JJ#%3)!!F#`!TIj"JJ!)5!!!C$J!!!13!"X!!$KJ!!" )!!$B1!!!!C!!'`!!1'!!!%J!!-Ji!!!"N!!E!!!iB!!!5!!!Z$J!!!+3!"X!!$K J!!")!!#S1!!!!j!!'`!!1'!!!%J!!*Ji!!!#N!!E!!!iB!!!5!!!L$J!!!13!"X !!$KJ!!")!!"i1(i!"%J!!!&J!!!!1q2rrcJI!!4m(J#ZI!!(G#`!!#j!JJ!31'! !!$JI!!4mIJ'ZJ"i""#J!!!"!JJ!)Nei""$[J!!")!!!F9q-31MJ$!34mIJ)89q! 31Ram!5ilr`!","m!"%'!rq3i!!!!N!!F!"#!BJ!!J!%!D$JK!'"m#!1QZb(rj%k !!#"&G!-!!!!"2!!!!"4&G!-!!!!"4J!!!"K&G!-!!!!"1J!!!"a&G!-!!!!"13! !!#"&G!-!!!!"5J!!!#4&G3#3"!&,!!!!+%9e!*!%!8J!!!#%4A3$!!!!!6F!!!# F4A8!N!3")J!!!+4&G3#3"!&-!!!!Y%9e!*!%!8d!!!$F4A8!N!3"6J!!!2"&G3# 3"!&2!!!"c%9d!`!!!!%p!!!#1%9Z$!3!!!&@!!!!$)!!N!Z!!!*31!!!!%9h!*! %!8N!N!4&D`!%!!!"9`!!!'!!!!KF!!!F&(`)!UD3!!%!#*3Krm#3!'%!@)"L!!" )!!!"B!!!!(aJ"c9"JJ!B1!!!!i"L!!#3!!-!!$KJ!!")!!!FJ'%!@)##!!!iK!! %5!!!!B"L!!!iB`!%J!%!5$JK!%"m#!1Q6S!!)%9d!`!!!!&+!!!!%%9e!*!%!8X !!!!84A3$!!!!!6N!!!!S4A3$!!!!!6S!!!!m4A8!N!3"(!!!!%4&G!-!!!!"1J! !!%K&EJ`%!!!"@3!!!!b!!*!,J!!!B!#3"%9h!*!%!9F!N!4&D`!%!!!"@J!!!23 !!!L@!!!Feh`)!UD6iIrmNm(rq*!!!3!)P#(rS*!!B3"iN!#"!(b$iJ!!J')!!%J !!!&J!!!!I'!(08'#!#Ji!!!$J')!!*!!!`!!1!$rrj!!!3"3J'%!H)!"!!!- !!%J!!)L!B3"m1*m!!$LJ!!!i`!!!5!!!!AaJ"c9"JJ!NJ!%!H*!!!3")1!$rrj! !!3"-J'%!5)!"!%b3!!-!!%J!!%b)(`!%I!!(G8'#!#5!!3"iN!!"!%!i!2rrN!! "!%5!B3"!J!%!4*!!!`!!5!!!))2I!35!!3"iN!!"!$L6`3!mJ'%!1)!"!$b3!!- !!)!"!'Ji)3"JI!J$TS2Krrb$`Iri6S!!)%9d!`!!!!%k!!!!(%9d!`!!!!&+!!! !)%9e!*!%!8X!!!!N4A3$!!!!!6N!!!!i4A8!N!3"%3!!!'K&EJ`%!!!"A!!!!!b !!*!,J!!!p"!!!!"&G`#3"!&D!*!%4@X!"!!!!8J!!!#)!!!)m!!!(Spm#!+QN!! "!!L8)IqJL!)!!(`!"h9!JJ!81!!!!*!!!J!!1!!!!CJ#!!#!!J!!,!!!!%'#!!b !BJ!!5!!!3)"L!!")!!!"B!!!!,"K!&!i!!!2X!%!8MKK!$K)!!!"B!!!!(aJ"c9 "JJ!-1'!!!%J!!!b!B3"8N!"L!!#!!3"S1#%!B(`)!kC1J!!J4A-3!!!!!9i!!!! -4A-3!!!!!9d!!!!F4A-3!!!!!9i!!!!N4A-3!!!!!9d!!!!S4A-3!!!!!9d!!!! d4A3$!!!!!8S!!!!m4A8!N!3"A`!!!%"&G3#3"!&J!!!!@%9c%!!!!!&G!!!!G%9 Z$!3!!!&R!!!!$)!!N!Z!!!#)!*!%4AF!N!3"5!#3"%9Z"3%!!!&U!!!!$2rrrm8 !!#"N*@3Z*@3Z*@3Z*@3!4@X!"!!!!@X!!!&8!!!*5J!!)'4m#!+QNq(rr*2"rrL 6SIrdNi(rm*!!!3!)P#(rX$Z$!!!lT!!!L!)!!(`!"h9!JJ!81!!!!*!!!J!!1!! !!CJ#!!#!!J!!+!!!!%##!-K)!!!"1m-!!*2"!$L!!3!iN!!"!$b!!3!m+!!!!%# #!"3iB!!b5!!!!@!!!!")!!#m1'%!2$L!!!3iS!!#5!!!!Aar'hP!JJ"8,"d!%%# !!"3iB!!@5!!!!@!!!!")!!#-1(`!!)##!!#!!3!m9!9'2S!"!$a8"SBqJ!%!2&3 (aMk!!3!m9!J'2NJ!!!&J!!!!1'!!!%J!!&5!I`!!5!!!!@!!!!!iB`!"5!!!!@! !!!#3!')!!)"L!!#!R`!!5!!!!@!!!!!iI!!!J))!!$Lp!!")!!!"B!!!!$J!!!" mIH)8Q!2rrcKJ!!#!!3"B1#%!8(`)!kD$iIrmJm(rq)1Krr5$JIr`6S!!)%9c%!! !!!&T!!!!*%9c%!!!!!&S!!!!0%9c%!!!!!&T!!!!2%9c%!!!!!&S!!!!3%9e!*! %!8J!!!"-4A8!N!3"6J!!!("&G3#3"!&*!!!!L%9e!*!%!8i!!!#J4A3$!!!!!@S !!!#`4A8!N!3"E!!!!04&G3#3"!&2!!!!k%9e!*!%!@d!!!$d4A-3!!!!!@J!!!$ m4A-3!!!!!@J!!!%!4A8!N!3"EJ!!!3K&Fa!!!!!"D!!!!44&G3#3"!&[!!!"(%9 Z$!3!!!&c!!!!$)!!N!Z!!!&8)!!!!%9h!*!%!@X!N!4&EJ8"!!!"G!!!!"(rrrr $!!!MqQ9MD'mJ)#!*#5!J0bpeC(!!N!4&EJ8"!!!"G3!!!"2rrrr#!!!MqQ4TFf0 KFQ3J)#!*)#!j,h9NF!#%4@i&!3!!!AB!!!!4rrrr`3!!)rTdD@eP)#!J#3NJ-cF [G@4`!'PZG89Z"3%!!!&h!!!!%[rrrm!!!#2kC'pYB@PZ)#!J#5!e-bpeC(!!!`" &EJ8"!!!"H!!!!",rrrqr!!!MqR0eER*`Bb!J)!Na-6%[G@4`!!E#4@i&!3!!!AN !!!!3rrrr[J!!)rTdCR4`)#!*#5!f15peC(!!4@i&!3!!!AS!!!!4rrrr[3!!)rT LD@CQ)#!J#3Ne-6)[G@4`!-1V#%9Z"3%!!!&l!!!!%2rrrl`!!#2kGfK[)#!J#3N e-6-[G@4`!%9Z"3%!!!&m!!!!%IrrrlX!!#2kG'&XDb!J)!N*06%h,h9NF!"6!!" &EJ8"!!!"I3!!!"2rrrqk!!!MqQCdF#eNBA4K)#!*)$)`,h4MF!#J4@i&!3!!!Ai !!!!2rrrrZ3!!)rTQG(!J)!N*)$)a,h4MF!!!4@i&!3!!!Am!!!!4rrrrZ!!!)rT dC@aZCA3J)!NJ-M-[G'0`!*!%4@i&!3!!!B!!!!!3rrrrY`!!)rTcEA4`)#!*#5! b05pdBh!!4@i&!3!!!B%!!!!3rrrrYJ!!)rTdD@eP)#!*#5!c0bpdBh!!4@i&!3! !!B)!!!!4rrrrY3!!)rThD'pTFb!J#3NJ0$-[G'0`!*!%4@i&!3!!!B-!!!!5rrr rY!!!)rTNEfeKD@iJ#5!*)$8c,h4MF!#Vc%9Z"3%!!!'%!!!!%rrrrl-!!#2kD'p cG'jKE@9c)#!a-$%[G'0`!!"&EJ8"!!!"K3!!!"(rrrqb!!!MqQjZG(!J)#!*#6% a15pdBh!!N!4&EJ8"!!!"KJ!!!"(rrrqa!!!MqQCTEQGPFL!J#5!h15pdBh!!N!4 &EJ8"!!!"K`!!!"$rrrq`!!!MqQjdF#!J)!N*-6)c,h4MF!"&EJ8"!!!"L!!!!"( rrrq[!!!MqR9eBh!J)#!*#68d-#pdBh!!Z+[-4@i&"!!!!BN!!!"BrrrrVJ!!)rS !N&K&GJ8!!!!"L!!!!&"&GJ8!!!!"K`!!!%a&GJ8!!!!"KJ!!!%K&GJ8!!!!"K3! !!%4&GJ8!!!!"K!!!!%"&GJ8!!!!"J`!!!$a&GJ8!!!!"JJ!!!$K&GJ8!!!!"J3! !!$4&GJ8!!!!"J!!!!$"&GJ8!!!!"I`!!!#a&GJ8!!!!"IJ!!!#K&GJ8!!!!"I3! !!#4&GJ8!!!!"I!!!!#"&GJ8!!!!"H`!!!"a&GJ8!!!!"HJ!!!"K&GJ8!!!!"H3! !!"4&GJ8!!!!"H!!!!""&GJ8!!!!"G`!!!!a&GJ8!!!!"GJ!!!!K&GJ8!!!!"G3! !!!4&GJ8!!!!"G!#3"%9V!!3!!!'f!!!!G!!!#Hi!!#D(I!J#TT!!!3!)P#(r`*! !B3"BJ!)!!#J!!!""JJ!JJ')!!$J!rrpm!`"!3B)!%)"L!!")!!!"B!!!!$J!!!# 3!!)!!$KJ!!#!!J!!,!!!!%##!"#!!3"B,!!!!%'#!!JiB!!"N!"L!!#!!3")1#% !3(`)!kC1J!!J4A-3!!!!!C%!!!!34A-3!!!!!C%!!!!F4A-3!!!!!C%!!!!X4A8 !N!3"Y`!!!$"&Fa!!!!!"X`!!!$a&Fa!!!!!"Y3!!!%4&Fa!!!!!"Y3!!!'"&EJ` %!!!"Z3!!!!b!!*!,J!!!G!#3"%9h!*!%!EB!N!4&D`!%!!!"ZJ!!!&3!!!S`!!! R'R`)!UD3!!%!#*3Krm#!!J!!+!!!!%'#!#L!BJ!!1!$rrh`$!%""JJ!BJ')!!%J !!!&J!!!!1!!!!*!!!J!!1!!!!*!!!J!!J!%!5$JK!%"m#!1Q6S!!)%9c%!!!!!' 4!!!!$%9c%!!!!!'4!!!!'%9c%!!!!!'4!!!!+%9e!*!%!EX!!!!X4A-3!!!!!C% !!!!i4A-3!!!!!E8!!!"!4@i-"!!!!E`!!!!-J!#3#i!!!&3!N!4&G`#3"!'k!*! %4@i&!3!!!Ed!!!!1rrrrT!!!*j30,f9dBbpcCA*fD@0PF`!!4@i3!3!!!Ei!!!! #rrrrS`!!*j4b!()!4@i3!3!!!Em!!!!$rrrrSJ!!*j3M$3!!4@i3!3!!!F!!!!! $rrrrS3!!*j3J#3#)4@i3!3!!!F%!!!!$rrrrS!!!*j3[,!!!4@X!"!!!!F)!!!) -!!!+C!!!*j4m#!+Q[f(rl*!!!3!)P#(rB)2#!!#$SJ!!Ji)!!)!#!!!S!!!!3)) !F$KJJ!!mJ("b1+!!!$M"!$Jii3!k1)4PCNJ!!!&J!!!!I'!(08##!$JiB3!qJ)) !!%J!!!&J!!!!1'%!1%J!!!&J!!!!1))!!%J!!!&J!!!!N!"L!!!S!`!!3))!&$J !rrq3!!)!!$J!!!#3!!)!!)"L!!!i!2rrI!-!3%##!%b!BJ!!J!)!!&3!%$Tm!`! Z+!!!!%##!!`iB!!!5!!"1$Km!!#!SJ!!J))!!$J%!!'3!!)!!&5!%$TmK3!Z5!! !!@!!!!")!!!S1(`!!$L!!)#!SJ!!5!!!!@!!!!!S!`!!3))!$$KJ!!")!!$X1(` !!$L#!!")!!!"B!!!!(al'hP"JJ!-1!!!!*JE!!#)(!!!I!!(G8'#re`iI!!!1)) !!%J!!!&J!!!!N!"p!!!S!`!!3B,r3$KJ!!!iJJ!!5!!!!@!!!!"mHaYj3B,r+$K l!!!iJJ!!5!!!!@!!!!#3!(d!$#J$!!""J[m-1)!!!)"p!!`i!`!"N!!G!!bBJ`! !1(X!!%J!!!&J!!!!N!"p!!L6h3!%1q!!!%J!!#JiB!!!1))!!%J!!!&J!!!!9q! 31Raq!5iS!`!!1rm!!8'#!!`X(`!(3B$rf$KJ!!"Ai"!kI(i",MKp!!#!!3#S1#% !S(`)!kDlBIrX6S!!)%9d!`!!!!'d!!!!%%9d!`!!!!',!!!!&%9d!`!!!!'+!!! !'%9c%!!!!!'4!!!!(%9e!*!&)3!!!%"&G!-!!!!"[3!!!&4&G3#3"!($!!!!@%9 e!*!%!F3!!!"N4A-3!!!!!Ei!!!"X4A8!N!3"a3!!!("&Fa!!!!!"N3!!!(K&Fa! !!!!"N3!!!)K&Fa!!!!!"X`!!!*!!4A-3!!!!!C%!!!#84A3$!!!!!BN!!!#N4A- 3!!!!!E-!!!#S4A3$!!!!!BN!!!$)4A-3!!!!!E-!!!$-4A-3!!!!!E-!!!$84A8 !N!3"EJ!!!1"&Fa!!!!!"N3!!!24&G3#3"!('!!!!q%9c%!!!!!'r!!!"&%9e!*! %!FF!!!%B4A-3!!!!!F!!!!&!4A8!N!3"b!!!!84&Fa!!!!!"`!!!!9a&G3#3"!( )!!!"B%9c%!!!!!("!!!"G%9e!*!%!FF!!!&i4A8!N!3"b3!!!D4&Fa!!!!!"`!! !!F"&G3#3"!()!!!"a%9Z$!3!!!(1!!!!$)!!N!Z!!!)-+!!!!%9h!*!%!F)!N!4 &D`!%!!!"c`!!!0`!!!Y+!!!X!A`)!UD6iIrmNm(rq*1Krr56JIr`N!!"!!L8)Iq `1m-!!$Z%!!!iB!!!5!!!!8J!!(!iIJ!!J*d!!%J!!!&J!!!!,!-!!%'#!$L$r3! %5!!!)$Kq!!#!R`!!5!!!!@!!!!!X!`!!3B)!'$[r!!5!(`!!+!!!!%##rpa)!!! N+"`!!%'#!#JiI!!!J*d!$%J!!!&J!!!!,!-!!%'#!"")!!!"I(dEH8##rib!!J! !,!!!!%##!!K)!!!"1(d!!)!"!&Ji)3"3I!J$TS2Krrb$`IriJk(rp)1"rr"1J!! J4A8!N!3"YJ!!!#K&G3#3"!&(!!!!1%9e!*!%!8F!!!"B4A8!N!3"4`!!!)a&G3# 3"!(#!!!!R%9c%!!!!!'e!!!!U%9e!*!%!ES!!!#d4@i-"!!!!G-!!!!-J!#3#i! !!0`J!!!!4AF!N!3"c`#3"%9V!!3!!!(8!!!!P!!!#rB!!#ffI!J#TT2Krrb6`Ir iNk(rp*!!!3!)P#(rX$ZM!!!la!!!1'!!!%J!!!&)!!!`J"m!#(`G!!"!JJ!N+"i !!%'#!#JiIJ!!J*m!$%J!!!&J!!!!,!-!!%'#!"")!!!"I(mEH8##rmb!!J!!,!! !!%##!!K)!!!"1(m!!)!"!&Ji)3"3I!J$TS2Krrb$`IriJk(rp%k!!#"&G3#3"!' f!!!!*%9e!*!%!8F!!!")4A8!N!3"`J!!!&K&Fa!!!!!"Y3!!!'4&G3#3"!'k!!! !F%9Z$!3!!!(@!!!!$)!!N!Z!!!#8'!!!!%9h!*!%!G3!N!4&EK!"!!!"e`!!!!6 rrrqG!!!Z`A4MF!"&EK!"!!!"f!!!!!6rrrqF!!!Zh(9NF!"&EK!"!!!"h`!!!!6 rrrqC!!![Ch9NF!"&EK!"!!!"i!!!!!6rrrqB!!![Ch4MF!"&D`!%!!!"i3!!!03 !!!aX!!![Ch`)!UD6iIrmNm(rq*!!!3!)P#(r`$[$!!#!BJ!!J!)!!"`!!!ari`) 81(i!!$L#!!")!!!"B!!!!#`$!!"!JJ!B1!)!!*!!(`!!1!!!%C!!(`!)5!!!4$K q!!!iJJ!!5!!!!@!!!!!X!`!!3))!'$J#!!#3!"m!!$J!!!D3!"m!#%J!!"Ji!!! VJ')!!*!!!`!!1'!!!%J!!#`i!J!!N!!I!!5!BJ!!1)-!!6KJ!!Tm""[@I!!CeR` !)!!)!!$Kr!!#!!3")1#%!3(`)!kD$iIrmJm(rq%k!!#"&G!-!!!!"f3!!!"K &Fa!!!!!"hJ!!!"a&Fa!!!!!"h`!!!#a&G3#3"!&(!!!!-%9c%!!!!!(B!!!!3%9 c%!!!!!(J!!!!@%9e!*!%!8F!!!"F4A-3!!!!!GF!!!"X4A3$!!!!!H)!!!#%4A- 3!!!!!6X!!!#84A-3!!!!!Gi!!!#F4A-3!!!!!Gi!!!#d4@i-"!!!!H3!!!!-J!# 3#i!!!033!!!!4AF!N!3"i3#3"%9V!!3!!!(P!!!!N!!!!!c-!!!a'j2Krrb!JJ! !J!)!!"`!!!arj!)8,!-!%8##!"Ji!J!!N!!I!!!i!!!4N!!I!!K)!!!d,!-!"N# #!"Ji!J!!N!!I!!!i!!!'N!!I!!K)!!!B1!!!+i##!!#3!!3!!$KJ!!")!!!X1!) !!*!!(`!%J))!!$LN!!%iJ!!+I!8MeR`!)GCm!#K3N!!#!!!iI`!!Jq(rr%k!!#" &G!-!!!!"f3!!!!4&Fa!!!!!"hJ!!!!K&Fa!!!!!"f!!!!"a&Fa!!!!!"e`!!!$K &G!-!!!!"iJ!!!&"&Fa!!!!!"1`!!!'"&Fa!!!!!"hJ!!!'K&Fa!!!!!"hJ!!!)" &E"!%!!!"hJ!!!!3!!!!$!!![3d9X"33!!!(C!!!!H2rrrjX!!#m44@`3"!!!!E8 !!!!%!!!!!`!!*QP&E!8%!!!"Y!!!!#$rrrqP!!!Q5N9X%!3!!!'c!!!!"!!!!!- !!#Bb4@`3"!!!!C%!!!!%rrrrU`!!*KG&E!8%!!!"L`!!!"$rrrqX!!!Pqd9X"3% !!!'+!!!!J2rrrkd!!#AF4@`3!3!!!@N!!!!"!!!!"`!!)'4&E"!%!!!"D!!!!!3 !!!"Q!!!JC%9X%!%!!!&H!!!!!3!!!!F!!"k24@`3"!!!!9d!!!!%!!!!!`!!(Sp &E!8%!!!"2!!!!"6rrrr,!!!3"%9X"33!!!%k!!!"&2rrrpF!!!qI4@d&"!!!!6N !!!!%!!!!!`!!"SY&E"!%!!!!!`!!!!6rN!3!!!Hq4@`3"!!!!!)!!!!%!!!!C`! !"jP&E`S%!!!"jJ!!!!L!!*!24AB!N!3"j3#3"%9f$`!!!!(R!!!!"%9[#J3!!!( S!!!!#)!!N!p&GJ#3"!(K!*!%4AB2!!!!!HF!!!!%4@m+"!!!!HN!!!!)J!#3$d9 f!*!%!G3!N!4&GJm!!!!"j`!!!!4&E`S%!!!"kJ!!!!L!!*!24AB!N!3"c`#3"%9 f$`!!!!(R!!!!"%9[#J3!!!(V!!!!#)!!N!p&GJ#3"!(#!*!%4AB2!!!!!HF!!!! %4@m+"!!!!H`!!!!)J!#3$d9f!*!%!ES!N!4&GJm!!!!"j`!!!!4&E`S%!!!"l3! !!!L!!*!24AB!N!3"YJ#3"%9f$`!!!!(R!!!!"%9[#J3!!!(Z!!!!#)!!N!p&GJ# 3"!&V!*!%4AB2!!!!!HF!!!!%4@m+"!!!!Hm!!!!)J!#3$d9f!*!%!8J!N!4&GJm !!!!"j`!!!!4&E`S%!!!"m!!!!!L!!*!24AB!N!3"@J#3"%9f$`!!!!(R!!!!"%9 [#J3!!!(a!!!!#)!!N!p&GJ#3"!&A!*!%4AB2!!!!!HF!!!!%4@m+"!!!!I)!!!! )J!#3$d9f!*!%!8N!N!4&GJm!!!!"j`!!!!4&E`S%!!!"m`!!!!L!!*!24AB!N!3 "43#3"%9f$`!!!!(R!!!!"%9Z#J3!!!%i!!!!#)!!N!p&GJ#3"!%e!*!%4AB2!!! !!HF!!!!%4@m+"!!!!I3!!!!)J!#3$d9f!*!%!6-!N!4&GJm!!!!"j`!!!!4&E`S %!!!"p3!!!!L!!*!24AB!N!3"*!#3"%9f$`!!!!(R!!!!"%9[#J3!!!(f!!!!#)! !N!p&GJ#3"!%L!*!%4AB2!!!!!HF!!!!%4@m+"!!!!IF!!!!)J!#3$d9f!*!%!5! !N!4&GJm!!!!"j`!!!!4&E`S%!!!"q!!!!!L!!*!24AB!N!3"(!#3"%9f$`!!!!( R!!!!"%9[#J3!!!(j!!!!#)!!N!p&GJ#3"!%4!*!%4AB2!!!!!HF!!!!%4@m+"!! !!IS!!!!)J!#3$d9f!*!%!3m!N!4&GJm!!!!"j`!!!!4&E`S%!!!"q`!!!!L!!*! 24AB!N!3""!#3"%9f$`!!!!(R!!!!"%9[#J3!!!(m!!!!#)!!N!p&GJ#3"!%#!*! %4AB2!!!!!HF!!!!%4@m+"!!!!Id!!!!)J!#3$d9f!*!&*3#3"%9f$`!!!!(R!!! !"%9[#J3!!!(q!!!!#)!!N!p&GJ#3"4m!N!4&GJm!!!!"j`!!!!4&E`S%!!!"r`! !!!L!!*!24AB!N!80!*!%4AB2!!!!!HF!!!!%4@m+"!!!!J#3"!L!!*!24AB!N!8 +!*!%4AB2!!!!!HF!!!!%4@m+"!!!!J%!!!!)J!#3$d9f!*!&#!#3"%9f$`!!!!( R!!!!"%9[#J3!!!)#!!!!#)!!N!p&GJ#3"38!N!4&GJm!!!!"j`!!!!4&E`-%!!! "iJ!!!!5!!*!,4AB&!!!!!H)!N!4&EJ-%!!!"f3!!!!5!!*!,4AB&!!!!!GN!N!4 &EJ-%!!!"Y!!!!!5!!*!,4AB&!!!!!E3!N!4&EJ-%!!!"L`!!!!5!!*!,4AB&!!! !!BX!N!4&EJ-%!!!"LJ!!!!5!!*!,4AB&!!!!!BS!N!4&EJ-%!!!"L3!!!!5!!*! ,4AB&!!!!!BN!N!4&EJ-%!!!"[3!!!!5!!*!,4AB&!!!!!Ed!N!4&EJ-%!!!"DJ! !!!5!!*!,4AB&!!!!!@S!N!4&EJ-%!!!"23!!!!5!!*!,4AB&!!!!!6d!N!4&EJ- %!!!"2!!!!!5!!*!,4AB&!!!!!6`!N!4&E`-%!!!"4J!!!!5!!*!,4AB&!!!!!8B !N!4&E`-%!!!"0`!!!!5!!*!,4AB&!!!!!6F!N!4&EJ-%!!!"1J!!!!5!!*!,4AB &!!!!!6S!N!4&E`-%!!!"5J!!!!5!!*!,4AB&!!!!!8S!N!4&E`-%!!!"13!!!!5 !!*!,4AB&!!!!!6N!N!4&EJ-%!!!"4!!!!!5!!*!,4AB&!!!!!83!N!4&E`m%!!! "j`#3")!!N!G&D!!!8eP05!!!$5`!!!"T!*!9!3#3"JQ@!!!!%!!!#CN!!!"%!!! *kJ!!!%`!!!S"rj!%!!!+%!!!!!%!N!B+KJ!!!!J!!!Ui!!!!%!!!#Y$rN!3!!!V L!!%!!!!*!!!!#`%!N!3$!!%!N!B,"`!!!"`!!!XL!!!!-!!!#dF!!!")!!!,PJ! !!%`!!!Zbrj!%!!!-$J!#!!!!#3!!!!X"!*!%(`!!!!X!!!!(!*!&(J#3#!a&!!! !*!!!$'X!!!!m!!!-J`!!!%`!!!c2!!!!A!!!$2$rN!3!!!c`!!3!!!!3rrrrrJ% !N!3H!!!!%Irrrrd"!*!%(`!!!")!!!!$!!-!!!!i!!!!%rrrrr`!!`!!!$`!N!J 0*`!!!#J!!!eD!!!!0!!!$A`!!!"3!!!0X`!!!&3!!!h*!!!!A!!!$H)!!!"S!!! 1"`!!!'`!!!iH!!!!P!!!$S`!!!#N!!!1X[q3"!!!$V)!"!!!!"$rrrrq!3#3""d !!!!4rrrrr3%!N!3H!!!!)J!!!!-!!`!!!$J!!!!M!!!!"J#3"4m!!3#3"Jpk!!! !4!!!%0J!!!"F!!!4GJ!!!)3!!"'d!!!!P!!!%Gm!!!#N!!!5!3!!!+`!!")r!!! ![!!!%U%!!!$3!!!5T2q3"!!!%V!!"`!!!#S!!!!$!3#3""X!!!!V!!!!!`%!N!3 F!!!!,!!!!!X"!*!%(3!!!#d!!!!$!3#3""i!!!!Z!!!!#`#3"4m!!!![!!!!!3! $!!!!1!!!!$$rrrrl!!-!!!%i!!%!N!B6#3!!!"!!!"0X!!!!(!!!%j!!!!!!5!! !%q%!!!"3!!!8*`!!!&`!!"4,!!!!L!!!&*`!!!#3!!!!&1F!!!#F!!!9#`!!!-J !!"9F!!!!d!!!&A$rN!3!!"9l!!-!!!!Y!!!!!`!$!!!!1!!!!#`!!!!,!!-!!!! m!!!!,J!!!!X!N!8I!!%!N!B9S`!!!#3!!"B&!!!!,!!!&T3!!!"!!!!A63!!!&J !!"HY!!!!C!!!&mF!!!"`!!!AjJ!!!(`!!"Iq!!!!L!!!''%!!!#8!!!BH3!!!+! !!"L4!!!![!!!'4`!!!$3!!!CXJ!!!0`!!"R,!!!!k!!!'HS!!!$`!!!D!Iq3"!! !'Jd!!`!!!3`!!!"Q!3-!!!"B!!!"$3!!!!X!N!8H!!!!,J!!!!X!N!8I!!%!N!B D+`!!!!`!!"S`!!!!'!!!'Q`!!!!J!!!E6!!!!$J!!"Yj!!!!3!!!'j%!!!"-!!! EVrq3"!!!'p)!!!!"!*!'(+J!!!!S!!!Fj`!!!$!!!"f6rj!%!!!H!`!%!!!"%J! !!'B"!`!!!&J!!!%6rrrrf!%$!!!!A!!!!4Rrrrrf!3-!!!"J!!!"'J!!!'B"!`! !!'3!!3#3"Kik!!!!)!!!(S8!!!!S!!!I#2q3"!!!(fB!!`!!!4J!!!!#!3-!!!" B!!!"(3!!!'B"!`!!!&`!!!%H!!!!#`!$!!!!1!!"!*!'(k8!!!!J!!!Ij3!!!#J !!#"jrj!%!!!Je!!#!!!"'IrrrrB"!`!!!&J!!!%D!!!!CJ%$!!!!A!!"!*!')8B !!!!S!!!KK3!!!$!!!#)Xrj!%!!!LQJ!%!!!"'!!!!!)"!`!!!&J!!!%6rrrrf!% $!!!!A!!!!4Rrrrrf!3-!!!"J!!!"'J!!!'B"!`!!!'3!!3#3"L-4!!!!+!!!)e! !!!!`!!!Mp2q3"!!!*&`!"!!!!4)!!!"Q!3-!!!"B!!!"*Irrrp8"!`!!!&`!!!% arrrrpJ%$!!!!B!!!!4S!!!"Q!3-!!!"N!!%!N!BNe!!!!#J!!#86!!!!-!!!*EM rN!3!!#BL!!3!!!%5!!!!CJ%$!!!!@!!!!5Arrrr9!3-!!!"F!!!"-IrrrrB"!`! !!'!!!!%D!!!!CJ%$!!!!C!#3#!AV!!!!#!!!"IRrN!3!!!Aj!!%!!!%f!!!!D!% !N!3%!!%!N!B423!!!#J!!"&B!!!!1!!!%Bm!!!"F!!!4e3!!!(3!!")D!!!!K!! !%Nd!!!#B!!!5E3!!!+J!!"+D!!!!X!!!%V`!!!$-!!!5d`!!!13!!",M!!!!p!! !%dm!!!&-!!!68`!!!D!!!"1B!!!"X!!!%p-!!!(!!!!8$3!!!G!!!"4(!!!"i!! !&)-!!!(`!!!8[3!!!J!!!"6b!!!#%!!!&5`!!!)J!!!9A`!!!M!!!"@[!!!#2!! !&Fi!!!*-!!!@1J!!!R!!!"Cq!!!#I!!!&TB!!!+%!!!@cJ!!!VJ!!"Emrj!%!!! A*!!%!!!![J!!!'B"!*!%'3!!!9$rrrr(!!-!!!!m!!!"8`!!!!-!N!8I!!!"0J! !!!B!!`!!!%!!!3#3"KGM!!!!+!!!&i!!!!!i!!!AS!!!!%J!!"I-!!!!8!!!&qi !!!"X!!!B"3!!!+3!!"K)!!!!Y!!!',8!!!%-!!!BZ3!!!9J!!"Mr!!!"D!!!'6N !!!&i!!!CG3!!!BJ!!"Q[!!!"Q!!!'H3!!!'S!!!D(J!!!EJ!!"T4!!!"b!!!'VN !!!(X!!!Dr3!!!IJ!!"YC!!!#"!!!'h%!!!))!!!EM3!!!K!!!"Z[!!!#-!!!'ph rN!3!!"`4!!3!!!&9!!!!CJ%!N!3C!!!"'!!!!!)!N!8D!!!"8`!!!!-!N!8I!!! "0J!!!!B!!`!!!$J!!3#3"K`m!!!!&!!!($m!!!!N!!!FA`!!!$J!!"b-rj!%!!! Fe!!"!!!"@2rrrmF"!`!!!&J!!3#3"Kcr!!!!*!!!(3)!!!!d!!!G)J!!!&J!!"e M!!!!G!!!(CN!!!#8!!!Gj!!!!+!!!"i"!!!!`!!!(L6rN!3!!"j+!!%!!!&E!!! !CJ%$!!!!I!!"!*!'(U!!!!!-!!!HS`!!!#J!!"kp!!!!0!!!(X`!!!!m!!!I!3! !!&J!!"p)!!!!D!!!(fm!!!"`!!!IJIq3"!!!(kJ!!3!!!@(rrrr'!!-!!!!i!!% !N!BJN!!!!!!`!!!JN`!!!%!!!##e!!!!6!!!)2)!!!"X!!!K9J!!!(`!!#&i!!! !P!!!)G`!!!#F!!!L#J!!!+`!!#)T!!!!j!!!)a3!!!%)!!!M3`!!!4!!!#0Urj! %!!!MeJ!%!!!"F!!!!'B"!*!%(!!!!A%!!!!$!3#3""d!!!&brrrra!#3"4m!!!& 3rrrra`!$!!!!2!#3##DP!!!!(!!!*UJ!!!!X!!!Qd`!!!$J!!#ES!!!!C!!!*aI rN!3!!#FA!!%!!!'i!!!!!`%$!!!!@!#3##FX!!!!$!!!*bm!!!!S!!!R@J!!!$` !!#H$!!!!4!!!*j(rN!3!!#H4!!!!!3#3"LHc!!!!+!!!*r`!!!"3!!!SJ`!!!'3 !!#Lp!!!!K!!!+2m!!!#8!!!T-`!!!+3!!#P4!!!![!!!+@`!!!$%!!!TPJ!!!1` !!#R$!!!"#!!!+HX!!!%3!!!U$`!!!5J!!#Sc!!!"-!!!+M`!!!%m!!!UA`!!!9J !!#UI!!!"F!!!+Y!!!!'-!!!V#J!!!D3!!#XK!!!"[!!!+i`!!!(J!!!Va3!!!HJ !!#[2rj!%!!!VrJ!$!!!"Lrrrrjm!!`!!!$J!!!(-!!!!!`#3"4m!!!(0!!!!CJ# 3"4X!!3#3"La(!!!!+!!!,(-!!!!X!!!XK3!!!$!!!#bN!!!!5!!!,0X!!!"3!!! Y!`!!!'J!!#dI!!!!H!!!,6-!!!"m!!!Y53!!!*`!!#f!!!!!U!!!,B8!!!#d!!! YPJ!!!,J!!#fRrj!%!!!YX`!%!!!![J!!!'B"!*!%(J!!!G!!!!"Q!3#3""`!!!( 4!!!!C`#3"4m!!!(5rrrrRJ#3"4d!!3#3"Lhc!!!!*!!!,Jm!!!!S!!!Z)3!!!#` !!#iq!!!!@!!!,SB!!!"N!!!ZN!!!!!"`!!!ZS3!!!(3!!#kbrj!%!!!Z[J!$!!! "e3!!!!-"!*!%(3!!!G!!!!"Q!3#3""i!!!(5rrrrRJ#3"4m!!3#3"LqE!!!!-!! !,pF!!!"!!!![q3!!!&3!!$!`!!!!E!!!-&3!!!#!!!!`M`!!!*3!!$#lrj!%!!! a'!!#!!!![J!!!'B"!*!%(J!!!H2rrrqA!*!&(`!"!*!'-8N!!!!%!!!aB`!!!"` !!$'M!!!!-!!!-GS!!!!i!!!aq3!!!%`!!$)d!!!!B!!!-Q$rN!3!!$+p!!)!!!( 3!!!!!`%!N!3$!!!"irrrrjF!N!8I!!$rN!3!!3!!!'S!!2rrrri!!3!!!!X!!2r rrrd!!3!!!!-!![rrrr`!!!!8!!!!%!!*!!!!&3!!!!X!N!F@!!!!#`!!!!)!!!! A!!!!#`!!!!3!!!!B!!!!#`!!!!B!!!!C!!!!"J!!!!J!!!!D!!!!"J!!!!N!!!! E!!!!#`!!!!S!!!!F!!!!#`!!!!`!!!!G!!!!#`!!!!i!!IrrrrF!!!!#!!!!!J! !!!X!![rrrrJ!!!!e!!!!#!!$!!!!02rrrrN!N!Ff!!!!#`!!!!3!!!!hrrrrp`! !!!B!!2rrrrN!!IrrrrJ!![rrrr-!!!"%!!!!&!!(!!!!43!!!!)!N!Fr!!!!"`! !!!3!!!"'!!!!"`!!!!8!!!"(!!!!#J!!!!B!!!")rj!%!!!!#!!!!%!!!!!#!!! !$!!!!%N!!!!#!!!!%!!"rrrrp!!!!"3!!!!8rrrrm`!#rrrrp3!!!$X!!!!J!!J !!!!m!!!!#J#3"cd!!!!(!!!!!J!!!$i!!!!'!!!!!`!!!$m!!!!#!!!!"!!!!%! !!!!'!!!!#!!!!%%!!!!'!!!!#3!!!%)!!!!+!!!!#J!!!%2rrrrd!!!!$!!!rrr rpJ!"rrrrp3!#rrrrqJ!!!$-!!!!b!"%!!!!drrrrq3#3"cB!!!!,!!!!"!!!!$J !!!!,!!!!"J!!!$N!!!"Q!!!!#!!!!$Vrrrrf!!!!$!!!!%S!!!!,!!!!%!!!!%X !!!"V!!!!%J!!!%`!!!!,!!!!&J!!!%d!!!!,!!!!'!!!!%i!!!!(!!!!'J!!!%m !!!!(!!!!'`!!!&!!!!"Q!!!!(!!!!&%!!!"Q!!!!)!!!!&)!!!!$!!!!*!!!!&- !!!!$!!!!+!!!!&3!!!!,!!!!,!!!!&8!!!!$!!!!,J!#rrrrm!!!!'3!!!!%!!) !!!"P!!!!#`#3"fB!!!!,!!!!!J!#rrrrm3!!!&m!!!!3!!8!!!"J!!!!!J#3"f% !!!!#!!!!"!!!!')!!!!+!!!!#!!!!'2rrrr`!!!!#J!!!'F!!!!,!!!!$J!#rrr rmJ!!!&F!!!"3!"J!!!!drrrrq3#3"cB!!!!,!!!!"!!!!$J!!!!,!!!!"J!!!$N !!!"Q!!!!#!!!!$Vrrrrf!!!!$!!!!%S!!!!,!!!!%!!!!%X!!!"V!!!!%J!!!%` !!!!,!!!!&J!!!&J!!!!,!!!!'!!!!&N!!!!(!!!!'J!!!&S!!!!(!!!!'`!!!&X !!!!,!!!!(!!!!&`!!!!(!!!!(J!!!&d!!!!(!!!!(`!!!&lrrrra!!!!)!!!!'J !!!!$!!!!-!!!!'N!!!!+!!!!0!!!!'S!!!!$!!!!0J!!!'X!!!!$!!!!1J!!!'` !!!!+!!!!2J!!!'d!!!!$!!!!3!!!!'i!!!!$!!!!4!!!!'m!!!!#!!!!5!!!!(! !!!!#!!!!6!!"rrrrlJ!!!#!!!!!%!!!!!`!#rrrrl`!!!()!!!"k!#!!!!!drrr rq3#3"cB!!!!,!!!!"!!!!$J!!!!,!!!!"J!!!$N!!!"Q!!!!#!!!!$Vrrrrf!!! !$!!!!%S!!!!,!!!!%!!!!%X!!!"V!!!!%J!!!%`!!!!,!!!!&J!!!(-!!!!$!!! !'!!!!(3!!!!,!!!!(!!!!(8!!!!#!!!!(J!!!(B!!!!#!!!!)J!!!(F!!!!,!!! !*J!!!(J!!!!+!!!!+!!!!(N!!!!+!!!!+J!!!(S!!!!+!!!!,!!!!(X!!!!+!!! !,J!!!(`!!!!#!!!!-!!!!(d!!!!#!!!!0!!!!(i!!!!+!!!!1!!!!(m!!!!#!!! !1J!!!)!!!!!+!!!!2J!!!)%!!!!+!!!!3!!!!))!!!!,!!!!3J!!!)-!!!!,!!! !4!!!!)3!!!!,!!!!4J!!!)8!!!!#!!!!5!!!!)B!!!!,!!!!6!!!!)F!!!!#!!! !6J!!!)J!!!!#!!!!8J!!!)N!!!!#!!!!9J!!!)VrrrrZ!!!!@J!#rrrrl3!!!)` !!!!d!")!!!!drrrrq3#3"cB!!!!,!!!!"!!!!$J!!!!,!!!!"J!!!$N!!!"Q!!! !#!!!!$Vrrrrf!!!!$!!!!%S!!!!,!!!!%!!!!%X!!!"V!!!!%J!!!%`!!!!,!!! !&J!!!)d!!!!,!!!!'!!!!)i!!!!,!!!!'J!!!)m!!!!,!!!!(!!!!*!!!!!!"`! !!"i!!!#4!!!!"`!!!"m!!!#5!!!!!`!!!#!!!!#6!!!!!`!!!#3!!!#8!!!!!`! !!#J!!!#9!!!!!`!!!#`!!!"S!!!!!`!!!$!!![rrrq`!!!#A!!!!*!!-!!!!02r rrrN!N!Ff!!!!#`!!!!3!!!!i!!!!#`!!!!B!!!!j!!!!CJ!!!!J!!!!krrrrpJ! !!!`!!!"+!!!!#`!!!"!!!!",!!!!D`!!!")!!!"-!!!!#`!!!"B!!!#B!!!!#`! !!"J!!!#C!!!!#`!!!"S!!!#D!!!!D`!!!"`!!!#E!!!!!`!!!#!!![rrrqX!!!# G!!!!0!!3!!!!02rrrrN!N!Ff!!!!#`!!!!3!!!!i!!!!#`!!!!B!!!!j!!!!CJ! !!!J!!!!krrrrpJ!!!!`!!!"+!!!!#`!!!"!!!!",!!!!D`!!!")!!!"-!!!!#`! !!"B!!!#H!!!!#`!!!"J!!!#I!!!!#`!!!"S!!!#J!!!!D`!!!"`!!!#K!!!!D`! !!#!!!!#L!!!!!`!!!#3!!!#M!!!!!`!!!#J!!!#N!!!!!`!!!#`!!!"S!!!!!`! !!$!!![rrrqS!!!#Q!!!!0!!4!!!!02rrrrN!N!Ff!!!!#`!!!!3!!!!i!!!!#`! !!!B!!!!j!!!!CJ!!!!J!!!!krrrrpJ!!!!`!!!"+!!!!#`!!!"!!!!",!!!!D`! !!")!!!"-!!!!#`!!!"B!!!#R!!!!#`!!!"J!!!#S!!!!#`!!!"S!!!#T!!!!!`! !!"`!!!#U!!!!#`!!!#!!!!#V!!!!#`!!!#)!!!#X!!!!!`!!!#3!!!#Y!!!!!`! !!#J!!!#Z!!!!!`!!!#`!!!#[!!!!!`!!!$!!![rrrqN!!!#a!!!!1J!4!!!!02r rrrN!N!Ff!!!!#`!!!!3!!!!i!!!!#`!!!!B!!!!j!!!!CJ!!!!J!!!!krrrrpJ! !!!`!!!"+!!!!#`!!!"!!!!",!!!!D`!!!")!!!"-!!!!#`!!!"B!!!#M!!!!!`! !!"J!!!#b!!!!D`!!!"`!!!#N!!!!!`!!!#!!!!#c!!!!!`!!!#3!!!#d!!!!!`! !!#J!!!#e!!!!!`!!!#`!!!#f!!!!!`!!!$!!!!#h!!!!#`!!!$3!!!#i!!!!!`! !!$B!![rrrqB!!!#m!!!!4J!$!!!!,!!!!!X!N!Hp!!!!!`!!!!)!!!#q!!!!!3! !!!B!!2rrrqF!!IrrrqB!!Irrrq%!!!!'!!!!!J!!!!X!![rrrq)!!!$)!!!!%!! '!!!!b3!!!!X!N!I+rrrri3!!!!)!!!$,!!!!"`!!!!J!!!$-!!!!"`!!!!N!!!$ 0!!!!#`!!!!S!!!$1!!!!!`!!!!`!![rrrq-!!!$&!!!!E!!F!!!!02rrrrN!N!F f!!!!#`!!!!3!!!!i!!!!#`!!!!B!!!!j!!!!CJ!!!!J!!!!krrrrpJ!!!!`!!!" +!!!!#`!!!"!!!!",!!!!D`!!!")!!!"-!!!!#`!!!"B!!!"B!!!!#`!!!"J!!!" C!!!!"`!!!"S!!!"D!!!!"`!!!"X!!!"E!!!!#`!!!"`!!!"F!!!!"`!!!"i!!!# 4!!!!"`!!!"m!!!"Hrrrrm3!!!#!!!!"S!!!!!`!!!$!!!!"T!!!!#J!!!$3!!!" U!!!!!`!!!$B!!!"V!!!!!`!!!$S!!!"X!!!!#J!!!$i!!!"Y!!!!!`!!!%!!!!" Z!!!!!`!!!%3!!!"[!!!!!J!!!%J!!!"`!!!!!J!!!%`!!!$'!!!!!J!!!&!!!!$ (rrrriJ!!!&3!!!$2!!!!!`!!!'3!!!$3!!!!!`!!!'J!![rrrpi!!!$@!!!!#!! %!!!!e`!!!!X!N!IB!!!!#`!!!!)!!!$C!!!!#`!!!!3!!!$D!!!!#`!!!!B!![r rrpm!!!$8!!!!%!!%!!!!eIrrrpi!N!IE!!!!#J!!!!J!!!$Frrrrm!!!!!S!!!$ G!!!!#`!!!!i!!Irrrpd!!!!5!!!!!J!!!!X!![rrrp`!!!$N!!!!%!!'!!!!jIr rrr!!N!IQ!!!!!`!!!!3!!!$R!!!!"`!!!!J!!!$S!!!!"`!!!!N!!!$T!!!!#`! !!!S!!!$U!!!!!`!!!!`!![rrrq!!!!$5!!!!D!!A!!!!02rrrrN!N!Ff!!!!#`! !!!3!!!!i!!!!#`!!!!B!!!!j!!!!CJ!!!!J!!!!krrrrpJ!!!!`!!!"+!!!!#`! !!"!!!!",!!!!D`!!!")!!!"-!!!!#`!!!"B!!!"B!!!!#`!!!"J!!!"C!!!!"`! !!"S!!!"D!!!!"`!!!"X!!!"E!!!!#`!!!"`!!!"F!!!!"`!!!"i!!!#4!!!!"`! !!"m!!!$6rrrrh`!!!#!!!!$H!!!!!`!!!$!!!!$I!!!!#J!!!$3!!!#0rrrrh3! !!$B!!!$J!!!!!J!!!%J!!!$K!!!!!J!!!%`!!!$L!!!!!J!!!&!!!!$Mrrrrh!! !!&3!!!$V!!!!!`!!!'3!![rrrq3!!!$$!!!!E!!#!!!!a2rrrq-!N!I4rrrri!# 3"[rrrq8!!Irrrq3!!IrrrpS!!!!-!!!!!J!!!!X!![rrrpX!!!$[!!!!%!!#!!! !m!!!!!-!N!IarrrrfJ!!!!3!![rrrqJ!!!#k!!!!6!!5!!!!02rrrrN!N!Ff!!! !#`!!!!3!!!!i!!!!#`!!!!B!!!!j!!!!CJ!!!!J!!!!krrrrpJ!!!!`!!!"+!!! !#`!!!"!!!!",!!!!D`!!!")!!!"-!!!!#`!!!"B!!!#lrrrrj`!!!"J!!!#r!!! !!`!!!"`!!!$!!!!!!`!!!#!!!!$"!!!!!`!!!#3!!!$#rrrrj3!!!#J!!!$Xrrr rj3!!!#`!!!$Y!!!!!`!!!$!!!!$Zrrrrf`!!!$3!!!$b!!!!CJ!!!%3!!!$c!!! !!`!!!%J!![rrrpN!!!$e!!!!4!!6!!!!02rrrrN!N!Ff!!!!#`!!!!3!!!!i!!! !#`!!!!B!!!!j!!!!CJ!!!!J!!!!krrrrpJ!!!!`!!!"+!!!!#`!!!"!!!!",!!! !D`!!!")!!!"-!!!!#`!!!"B!!!$f!!!!!`!!!"J!!!$h!!!!!`!!!"`!!!$i!!! !CJ!!!#!!!!$j!!!!!`!!!#3!!!$k!!!!!`!!!#J!!!$l!!!!!`!!!#`!!!$m!!! !!`!!!$!!!!$p!!!!!`!!!$3!!!$q!!!!!`!!!$J!!!$r!!!!!`!!!$`!!!%!N!3 $!!!!3!!#rrrrq`!!!$%!!!"k!!S!!!!brrrrqJ#3"eErrrrb!*!(FIrrrqm!N!H ,rrrrl3#3"jErrrrX!*!(R2rrrqX!N!HPrrrrkJ#3"l$rrrrT!*!(ZIrrrqJ!N!I drrrrf3#3"3(rrrr@!!!!%!!!!!3!!!!#!!,rrrrA!!!"&!!!!43!"!!!!48!!!! $!*!'!4B!!!!3!!!!"!!!!4F!!!!(!!!"!`!!!4Mrrrr@!!!""!!!rrrrf!!"rrr re`!"rrrrdJ!!!"!!!!!%!!!!!J!"rrrrd!!!!"i!!!!"!!!!"`!"rrrrc`!!!"i !!!!"!!!!"`!#rrrrd3!!!5S!!!!m!!)!!!%Vrrrrd!#3"J%Xrrrrc`!!!"i!!Ir rrmd!!!$r!!!!!3!!!!F!![rrrmi!!!%Z!!!"!J!#!!!",`!!!!S!N!B"-2rrrmd !!!!#!!,rrrr6!!!"+!!!!3)!!`!!!4Mrrrr5!*!'!5Rrrrr4!*!'!5hrrrr1!*! &![rrrp3!!!%Q!!!#"J!%!!!"&3!!!!-!N!B"&J!!!"!!!!!%!!!"&`!!!!F!!!% $!!!"*rrrrp-!!!%%!!$rrrr9!!(rrrr8!!(rrrr-!!!!"!!!!!3!!!"Q!!$rrrr +!!%!!!!#!!(rrrr,!!!!&!!!!!6rrrr+!!,rrrr*!!!"2J!!!"3!"3!!!6m!!!" Q!*!'!8!!!!"R!!!!"!!!!8%!!!!$!!!!#!!!!8)!!!!$!!!!$!!!!8-!!!"R!!! !%!!"rrrrb!!!!!S!!!!"!!!!"`!#rrrra`!!!9%!!!!%!!%!!!&5!!!!!J#3"3, rrrr'!!!"BJ!!!#3!$!!!!$6rrrrj!*!(0J!!!!X!!!!%!!!!1!!!!!X!!!!'!!! !13!!!'B!!!!)!!!!1[rrrrB!!!!-!!!!5J!!!!X!!!!3!!!!5`!!!'X!!!!5!!! !6!!!!!X!!!!@!!!"B`!!!!X!!!!B!!!"C!!!!!X!!!!D!!!"C3!!!!)!!!!F!!! "CJ!!!!-!!!!J!!(rrrr&!!!!$!!!!!%!!!!(!!$rrrr%!!(rrrr*!!(rrrr$!!! !%3!!!!%!!!!(!!(rrrr#!!!!%`!!!!%!!!!(!!(rrrr"!!!!%3!!!!%!!!!(!!( rrrr!!!!!%J!!!!%!!!!(!!(rrrqr!!!!%J!!!!%!!!!(!!(rrrqq!!!!%!!!!!% !!!!(!!(rrrqp!!!!%3!!!!%!!!!(!!(rrrqm!!!!%!!!!!%!!!!(!!(rrrql!!! !%3!!!!%!!!!(!!(rrrqk!!!!%`!!!!%!!!!(!!(rrrqj!!!!$`!!!!%!!!!(!!( rrrqi!!!!%3!!!!%!!!!(!!(rrrqh!!!!%!!!!!%!!!!(!!(rrrqf!!!!%!!!!!% !!!!(!!(rrrqe!!!!%3!!!!%!!!!(!!(rrrqd!!!!%J!!!!%!!!!(!!(rrrqc!!! !%`!!!!%!!!!(!!(rrrqb!!!!%3!!!!%!!!!(!!(rrrqa!!!!%3!!!!%!!!!(!!( rrrq`!!!!%!!!!!%!!!!(!!(rrrq[!!!!%3!!!!%!!!!(!!(rrrqZ!!!!@!!!!!3 !!!"Q!!(rrrqY!!!!J!!!!!%!!!!(!!,rrrqX!!!"M!!!!"!!"!!!!Bd!!!"Q!*! '!Bi!!!"R!!!!"!!!!Bm!!!!$!!!!#!!!!C!!!!!!CJ!!!!`!![rrrkN!!!'9!!! !"!!'!!!"PJ!#(alrN!3!!!'A!!)G'rq3"!!!!CJ!!KSCrj!%!!!"Q3!#'"ErN!3 !!!'D!!)9&2q3"!!!!CX!!K-6rj!%!!,rrrqS!!!"R3!!!!J!"!!!!Ci!!KmGrj! %!!!"R`!#("crN!3!!!'J!!!!"J!!!!3!!!'K!!!!"J!!!!8!!IrrrkF!!!!#!!! !!3!!!!B!!IrrrkB!!!!%!!!!!J!!!!S!![rrrkS!!!'5!!!!6!!8!!!"N`!!!!) !N!B"P2rrrkN!!!!%!!!"R2rrrkJ!!!!)!!!"SJ!!!!B!!!!3!!!"S`!!!!B!!!! 4!!!"T2rrrkF!!!!5!!!"TIrrrkB!!!!8!!!"TJ!!!!)!!!!B!!!"T`!!!'J!!!! F!!!"U!!!!!)!!!!J!!!"U3!!!'J!!!!N!!!"UJ!!!!)!!!!S!!!"U`!!!!)!!!! X!!!"V!!!!!)!!!!`!!!"V3!!!!)!!!!d!!!"V[q3"!!!!$J!!!'[rj!%!!!!2!! !!E$rN!3!!!"!!!!"XIq3"!!!!%3!!!'brj!%!!!!5!!!rrrrU`!"rrrrUJ!"rrr rT3!!!#!!!!!%!!!!CJ!"rrrrT!!!!!i!!!!"!!!!"J!"rrrrS`!!!!)!!!!"!!! !"`!"rrrrSJ!!!!-!!!!"!!!!"`!"rrrrS3!!!!-!!!!"!!!!"`!"rrrrS!!!!!- !!!!"!!!!"`!#rrrrR`!!!FS!!!"'!!%!!!(,rrrrjJ#3"[rrrji!!Irrrk`!!Ir rrjd!!!!%!!!!!3!!!!F!!Irrrj`!!!!%!!!!!3!!!!F!![rrrjS!!!(D!!!!$!! $!!!"f`!!!'B!N!B"h!!!!'F!!!!%!!!"h3!!!!-!!!!)!!(rrrqE!!!!H!!!!!c rrrqD!!(rrrqC!!!!"!!!!!%!!!!(!!(rrrqB!!!!"!!!!!%!!!!(!!$rrrqA!!( rrrqD!I"%CACPE'p`1N0[C'9ABA*bD@pb)&"bEb!d1NePG(*[Gf9bDh-J3fpNC9G KFR*TEh)k6@&M6e-J8h9`F'pbG$T)C@&NCA*c1P0jFh4PE5"&H(4bBA-J5'9KC'9 bFcT0B@083e!J5'9KC'9bFcTNER)ZB`!%9fG%6P*$Ef4P5'jNE!!$6QG%6P*$Ef4 P8(4b!!$Q9A4TE%eKD@i!"*XZ6R9Y9'p[E'*[H&4bBA"cAep'GJ!!Bbj14f9d9(* KF%&NC(*PFh-!"&j!1$%h!!!5,NGPG&4bBA"8HA"PAep'F`!(`(4SC94bBA!!"dN Z9(*KF%9iDA0dFepI4R-!!fYdD'98FQ&`9(P`C3!%I8!i-MB!"ddZ4f9d8hPcG'9 Y4QpXC'9bAep'8(03E!!%)#j6HA0&ERCTFQpZF`!#R5j(CA4A4%PZCQm!!"0f8Q9 Q6R9Y8!!'p@4TFNP%8!!!DRGN8(*[BdP%!!5UD@jQE`!"Ie0jFd9ZGP*PB`!(Hf9 ZGQPbEfjc9Q9bFfP[EJ!$"@eKBfKTEQ98HA"P!!A2FhPcG'9Y9Q9bFfP[EJ!"BA" bEf0PFh0[FJ!'H'KKFdC393!#ifKKFd0[E'pb883!"%9VCAP#Ef&bC&4jF'8!"BC KG%4bGR*@CA*c6R9Y!!)[FhPc9P*PCNjeE3!%Pd!i-c!!"mdZ4f9d3e"KEQ9X4Qp XC'9bAep'8(03E!!!-5j(CA0dB@ad!!1",NCTEQ4'EfaNCA)!"lGQC@&dGA*P!!4 )D'&c4QpXC'9b6@Gb!!5i3$Jd-3!$A5j6C@&bBfK'EfaNCA*'Eh*%6P*3Aep'E'a cE!!&cbj)6h"PEP*PFdCTE'8!"j8Z4f9d5@jN8Q9cEh9bBf8!"9FZ3fa[Ff95CA0 'D@aP!!"b,P"#5%GPG%C*EQC[8hPZB`!#QR4KFQGPG&4jF'8!"9PdBA*RCA4$FQ9 KG'pb!!FHGP*PCNjeE3!&,@4TFNP%!!BrFQ9QER9Y!!#TCQPXC@jKE@8!!M9QD3! 'YNK3BA*KE8*XEf0V8Q9M!!FYD@p3BA*KE3!!5dK*6e"KFQ&Y!!8EF8aTEQX!"Ap 44@aPE3!&QR&8HA"P!!@1F84KG'%!"M9TEe4bBA!!!G9TEd0YC%&NC()!"0YTEd0 [EA"XCA4TEfi!!Ep5Eh9dD@jP4'9cBh*TF(4[FJ!(*fG[6@PiC@40Ef4P9(*KF!! (4(CPFR0TEfi!"JKbEh9dD@jP4'9cBh*TF(4[FNCXB@Gc!!&@FQ9cCA*fC@3a!!& AFQ9cCA*fC@3b!!4hFf9XC@0dEh**EQC[!!3UFQpeG'PZC80[G@jd!!E`FQpeG'P ZC9*PBfpbC(-!"4p5Eh9dD@jP8Q9MEh*N!!#rF(*[BdPZCQm!!p"*8d%!"2YbEh9 dD@jP4QaKCh-!"S4`FQpM4'9cBh*TF(4[FJ!!eh0PE'9MG'pb!!"rD@p5CA0eE(3 !!GCTEdjKE@93G()!!@aTEeC5C@C1G@d!!(TTEe*PCNjeE3!"fQP[9Q9bFdjeE3! "bfP[8'9bEA0cEJ!'afP[6@PcB`!!2@P[3R9QCQ9b!!+UD@p5CA&$Eh9ZG!!#C@P [3@0d3fpeER3!!@4TEe"[Fde[C'8!!e*TEe"[FdpQCR0PG!!"0fCTE'93BA*KE3! ##NK'D@aP8'&bB@d!!@KTEdC5C@C1G@d!!M"TEdC@CA*c6R9Y!!GSCQPXE'9b-3! $@'P[4N4TFNPZC'9i!!)`D@p'E%&dG(*TBJ!$!QP[4Qa@CA*c6R9Y!!64D@p'E%C ZC(**EQC[!!9q4NPZCQm!"QCQC&4jF'8!!@YQC%0bC@&dEh)!"laQC%CXB@Gc!!) 'CQ4-Ef0KG'P[EJ!&T&"[D@jd!!&fGJ!"D'J!"VCQC%CXC()!"mKTEd4TFNP%!!% 2D@p'E&0d3QaV!!(rD@p'E%aR6'9Z!!(-D@p'E&"j6'9Z!!,TD@p'E&*6G%*XD`! #3'P[4Qa56'G-C@i!!STTEdCX8P"j6'9Z!!'pD@p'E%0b4'&d!!(AD@p'E%eN4'& d!!1lGQpXG@eP8'&bB@d!"(C)9QpXG@eP8'&bB@d!"fPQD@aXCA)b!!*MD@p@Efa *EQ4PH!!"`fP[9N0b4'&dC3!!f@P[9Nac6@pN!!HpD@p@3A4bBJ!!K@P[9NjY4Qa c!!'0D@p@3QPd6@&`!!,#D@p"E'a[Be"dFJ!$,@P[9NjY3@a#E'Yc!!1JD@p@3@a #E'Y6DAS!!I"TEeC$E("6DAS!!*&TEd&X3Qa6G!!#BfP[9NjiG%01583!!&*TEeC 'FN*XD`!#k'P[9P0TCeG[FQ3!!NCTEeC%FRC*EQC[!!*LD@p@4&*PCNjeE3!(I'P [9NC6583!"i4TEeC#De9`!!%!D@p@8f9a6R9Y!!"3D@p@9h*$ER3!!IjTEeC'D@a $ER3!!3&TEeC%DA*$ER3!!`pTEeC'EQ4b5@jQE`!$'f&MBf9cFe"KFQ&Y!!1F3@0 MCA0c8'&bB@d!"fTQD@aXCA)c!!1(D@p%C@jj6@pNCA-!"fYQD@aXCA)d!!GXCQP XE'9b03!!e'P[3809Ff9b!!GYCQPXE'9b0J!$[@P[3802GfjPFNP%!!2"D@p"3dG bEh9`583!!NKTEd&$3@0MCA0c!!#rEf*U8'&bB@d!!-"2BQT3BA*KE3!(EQCTE'a PFMF!!C0TEdpLDP4jF'8!"29TEdpLDNjKE@93G()!"h*TEdpLDNP%!!&4Bfp`H9" KFQ&Y!!&b3fp`H9"KFQ&Y!!3KD@p%Fh4@8Q9Q6R9Y!!G[CQPXE'9b1!!"HQP[6Q9 h6Q&YC3!#DQP[3fp`H8jKE@8!!QGTEdjPGd4TFNP%!!""CQPXE'9b-63!!%*QD@a XCA)a03!(ZAGN8'&bB@d!"q4A4&"KFQ&Y!!G`CQPXE'9b13!")'P[9d4*EQ4PH!! #cQP[9d43FQpM583!!b9TEeG%9P*PCNjeE3!!2@CTE'aPFM%`!!!qCQPXE'9b-6% !!$pQD@aXCA)a-J!!3'CTE'aPFM%c!!&cD@pA4%4TFNP%!!!XCQPN8'&bB@d!!,& '5843BA*KE3!&4'P[4'9cG%jKE@93G()!!jTTEd4PFh4%DA**4!!!3fCTE'aPFM% f!!"%CQPXE'9b-6F!!QKTEe0bBd4TFNP%!!"&CQPXE'9b-6J!!!*TEdCTE'9*4!! (b'0c8'&bB@d!"qp$8e"KFQ&Y!!*aD@p0BA4MD&"dFJ!'#%C68h"PB`!&bR"KFNP %!!5VEQ&YC3!(!'P[8Q9a6@&dBfK$Eh9ZG!!(d'P[3@0d6@&dBfK$Eh9ZG!!%kQP [8f9KFQ0S3QPdF`!&b'P[8f9KFQ0S5@jQEc%!!ZK$5@jQEe"#8Q9M!!'ZD%CTE'9 *EQC[!!&05%CTE'9*EQC[!!&*D@p'E%*V4'&d!!9KD@p'E&K'EQ4b5@jQE`!'H%C B5@jQE`!!SfCN5@0[ENP%!!!fCQ49ER9cC@3!!-PQC&0MFQP`G!!!+'CN@%CXB@G c!!'5CQ4$EfeYC@jd!!(9CQ43GA4"Gf&j!!%,D@p'E&"KFNP%!!*4D@p'E%0XF&0 THJ!(H@4TFNPZCQm!"k&%DA**EQC[!!)5D@p%FP9cFPGNF`!&hN4*EQC[!!B#CR* 5C@0d!!4r8Q9MG!!$,h4[F!!%$'aPCR3!"L*LEh4dEfd!"GCbD@GSG!!(CfCb4Qa KCh-!!PKQFNa[Bf&dD@pZ!!C6CR*@D@9h!!(SD@p%FN4TFNP%!!'1D@p%FNjY4Qa c!!(AD@p%FN0b4'&d!!'0D@p%FNeN4'&d!!(MD@p%FN*V4'&d!!6!D@p%FNCZC(* *EQC[!!DN4&K*EQC[!!#fCR*6Bh*[E'`!!maQFNp`C@j$D'&TEJ!!4QCb8f0bDA" d!!#ZCR*B4QaKCh-!!F*QFN0[E@ePER3!!BPQFP"eG%&hBAN!!54TEd4b8'&b583 !"FPTEe0PBA*MD%PZCQmb!!6SD@p6C@&bBfK8D@eP!!A6D@p$BA43Eh0TG'P[EJ! 'CN0KG&"[FfPdD@pZ8Q9M!!)kD@jTG'PKE'PkC3!%TA"bDAB!!`TTEdp`G%*eCQC PFJ!%+@P[6h"d3R9Q8fPkC3!!2@C[FQ9TCfj3FQPf8'&bB@d!!&&'Eh*PD@GZ8(* TGP"KFQ&Y!!+kD@p'D@aXCA)b-3!#ZfP[4QPXE'9b-M)!!hTTEdC[FQ9TCfj3FQP f3R9QCQ9b!!9fD@p'Eh*PD@GZ8(*TGN&MG%0[G@jd!!9hD@p'Eh*PD@GZ8(*TGP* PF80[G@jd!!+mD@p'D@aXCA)b-`!#3@P[4QpbC@PREP"bDAC%DA**4!!#qQP[4Qp bC@PREP"bDAC*EQC[-3!#qfP[4QpbC@PREP"bDAC*EQC[-J!#r'P[4QpbC@PREP" bDAC*EQC[-`!#r@P[4QpbC@PREP"bDAC*EQC[0!!%fN!i06-!"Q8Z6h"PENpeFP* 'Aep'GJ!%q%!i0M%!"IBZ6h"PEP*PFfpXGQ9b!!&Y,P*PFd9bFQpb!!GX,N4PG'& MD&*PFfpeFQ0P!!$`,Ne[GQ9)5'N!"SJZ5%a[BfX!![%Z3f&XE&9ZDACPFR0KE&" bEf-!!'`Z5&9ZE'pMD`!'`bj%DA0`Eh0P5'&ZC'aP!!#jCQPXC8jKE@8!!V&bB`! %'%!i0c%!"KNZ3fa[Ff95CA0[E(CPFJ!%(%!i0c8!!ZJZ8h4b9'p"C'4b!!$UD'p cG%jKE@8!!BPbG'j6G(*eBh3!!1&SEh0d5@jQE`!(2(*dEN0[C'8!"H9MEQ&YC3! 'Z@CTE'aPFJ!%3'&NC()!!TpbCA0eE(4`FQpM!!-UGA0PFN4KG'&3G()!"#"!1$F j!!+e,N&NC(*8Ee0dFJ!(E@&NC(*6G()!!c9PFR)!"$Y!1$Jc!!*C,N9ZG@e$B@0 SC3!%2d!i1$F!!j!!,N&NC(*8EdjKE@8!"&P!1$Na!!CU,NK*EQC[!!5ZFQ9dGA* Z8Q9M8(4b!!(BFQ9dGA*Z8Q9M!!@ZFQ4KG'%!"K0!BfaKFh-N1$!j4e9658jPG%4 #Af0`!!8XD'PZCQm!!%0)5@jQEe*PB`!(J'0`G94jF'8!"QP[Fe4jF'8!!L9YH!! &f8eB8Q9M!!+NF(*PCQ9bC@jMC3!!rQ9iBfKKEQGP!!,[FQ9cG@ad8(*[B`!%A8! i168!"cmZ69K*EQC[!!4K3$Jj13!!CLj%6P*%EfjP!!3LC'pZC3!!m(9%6P*%Efj P!!I94%j54'pZC3!(EQKICA*bEQm!"`*YB@0)Eh0d!!'dB@aTBA03G(*c!!#IB@4 NFP"dFR-!!29eEQPi5'pcG!!(-@K[Fh4PER3!"TCSAfjKE@8!!FGSAf&XD@&cCA- !!VpSAf&NC(*dHA"P!!"eD&pXC@jRG'J!!aPSAf&NC(*IE'PcG!!%`N!j0$F!"L- ZCf9dD'pcG'*jEQ&YC3!!F8G98dP6F'PZ!!Gm,R0dFQ0YF!!#@#jRCA4SEh0dD@3 !"RNZCf9dD'pcG'*jB@4NFJ!$$%P14946Ef0VCA4c!!GP,P*PFfpXGQ9bAema0NP 14946Ef0VCA4%EfeKD@j'GJ!$@Lj(990*3fKPBfY"E'&bE9pI4RB!!j3ZAep`G(* ICfaeC3!$V5j(990*Af9bFQpb!!Hp,R0dFQaPEJ!'HQP`B@4NFJ!(E@PZAf&NC() !"RecAf&NC()!!@PT!!6$3$Nd1!!&@'&NC(*3!!4"3$Ni03!#'5jTEQ9dAfjdEf% !"YTTEQ&NC()!"%9!16Jj!!,q,QPZCA4IB@4NFJ!(Gf&NC(*PFh-!"AK!-6!`03! %-(0)Eh0d583N-6!`0J!&HN!a-$!h!!91,N4bDACPFPpI-6C*6N988fpMDf9d4'p YB@PZ4RB!"PmZ8%*$EfjdFQpX8hPZB`!$J("LFJ!"d%GPG%&NC(*3BA*KE8*XEf0 V!!%@D@p$8Q9Q6R9Y!!DUBh0$Ef4P!!+9Eh9b3@4NFQ9cF`!#@QpeFNjPG%eKFfX !"CK!-6!a03!'FA0)Eh0d6Q&YC53a-$%f!!@D3$%`-6F!"G9!-6!c-J!%cLjRCA4 SEh0dEQ&YC3!!C#jcF(*TER4Q!!-X,PpIERGKAep'9@`!"q8ZFh4bBh"j!!"T,R0 dFQjMF(N!!"eYB@0SEQ&YC3!'pf*eCQaPEJ!#I@K`!!A@3$%`-c-!"GG!-6!c0!! &f%!a-$-e!!AC3$%`-cB!"GT!-6!c0`!&fd!a-$-i!!AF3$%`-cN!"I0!-6!d-!! &p%!a-$3a!!Ae3$%`0$)!"IC!-6!d-`!&pd!a-$3d!!Ai3$%`0$8!"IP!-6!d0J! &qN!a-$3h!!Al3$%`0$J!"Ia!-6!d13!&%d!a-$8`!!883$%`06%!"49!-6!e-J! &&N!a-$8c!!8A3$%`063!!1YcCA*fE'PcG!!!1h0PFRCXD@jP!!36Ff9bGJ!(3(0 PFRCPER3!"JGcAfjKE@8!!30cAf&XD@&cCA-!"[4cAh"[FR3!"i0cAh"bEh4[!!H mFf9bGQCTE!!&E&p'58a&!!BKD'&ZC'aP!!4KE@pNC3!%6&pICQPXC9pYEf4PF`! "['p`C@jIE@pNC3!(P@P[Afe[C'8!!q&LG@CQCA*IE@pNC3!"[QCTE'9IDfPZC!! !GfCTE'9IEh*TC@jdBA4TEfi!!44LD@jKFRPID@m!"FTcG'&dC3!%pepICQPXC9p cG'&dC3!!V'P[Ah0dBA4P!!-5CR*PC9pLG@CQCA)!!mPPEfB!"44PFR*[FJ!$['0 SBA*IBR9QCQ9b!!6GBfKKFPpLG@CQCA*IEhCPFQCXEhF!"84eEQGPG'0IBR9QCQ9 b!!C*G@jRCA4hBepLG@CQCA)!!(C`Eh0TG'P[EJ!'!f*eCQCPFJ!$Ef*eCQCPFPp cDATP!!*qBR9QCQ9bAh"dFJ!#U'*eCQCPFPpXC@i!!2GLG@CQCA*IB@aTCfjYC@j d!!$(Ff&fC@4IBR9QCQ9bAfaPEJ!#hQ*eCQCPFPp`Eh-!"D&`Eh0TG'P[EPp`FQp M!!(aFQ9KC&p`FQpM!!)EGh*TG'9IF(*[B`!#Y'0XEh0PAh"bEf-!!6KTC'aPAh" bEf-!"dYcCA*fF(4b!!'6Ff9bGQ&XD@&c!!!pFf9bGR0dBAN!!cJZFf9dFf9bGQ9 ZG!!(*bjbCAGTEQ3!!(0cG'&jEh"PEJ!&(%!a-$8j!!1L,Q9ZC(0PFRCPER3!"bm ZCQ0XEh0P!!8i3$%`0M3!"Ce!-6!j13!&Pd!a-6!`!!@B3$%a-$%!"CP!-6%`-J! &QN!a-6!c!!2Y,QGPG(0PFRCPER3!!E8Z8%acG(*MF(N!!-mZ4R9XE&"KG'KIAcP 84QPXC90`C@0$4RB!"N)ZCQp`C@i!"YdZCQGPG(-!!(NZFh4bF'*bD`!('bjcG(* dEfX!"6FZBA4[D3!"He4'D@aP8h"PB`!(*54'8e0`C@-!!UKKE'PKFf0[G@jd!!& `F!!&Qd!a-6!d!!D',QGPG(0PFRCLH@jKE@8!"GY`FQpdE`!#Q'&X!!1hC@jd!!A F3$%a-M8!"SXZCf9dFf9bGQ*jF'pbG!!%Q("[FR3!"Ij!-6%c0`!$VR4MF!!$XR9 NF!!"+h"bEh4[C@jdF`!!aA"bEh4[C@jd!!B&F&pZB@eP!!(HF&pKE'PKFf9c!!G "F&p`FQpdE`!'Ih"bEh4[C@jdAf0[G@jd!!8F3$%a0$8!"4e!-6%d0J!(kLjRCA4 `FQpdEf*jEQ&YC3!&m@9bFQj[!!*cF'8!"4j!-6%d0`!"DbjRCA4`FQpdEf*jER9 YBQ9b!!$UCf9dF(*[G'pLH@jeE@*PFJ!$IP423`!'K@GPG("bEh4[BRPZB@eP!!9 kCf9dFf9bGQ*jF'pbG!!&N@GPG(0PFRCLH@jKE@8!!J0RCA4cCA*fC@jd!!)lC@j NFf9bGQ9ZG!!#L(0PG(0PFRCPER3!!b"RCA4SEh0dEQ&YC3!"j@GPG'K[Fh4TC!! "4@PZCA4IB@4NFJ!"A'PZCA4IER4[B3!&XQGPG'K[Fh4LH@&NC()!"@"RCA4SEh0 dBRPZB@eP!!DU69K*EQC[!!8H5%PZCQm!!NC"C'4b9'p1B@eP!!(Q4@jeE80KBfK P!!'V3@4NFP4[8h4b!!'28h4b9'p"C'4b!!AQ3fa[Ff95CA0[E(CPFJ!%f%p`C@j 5CA0[E(CPFJ!&%Np`C@j2GA*54PpI4RB!!Ve6C@&bBfK'EfaNCA*'Eh*%6P*3Aep 'E'acE!!'M%GPG%03B@jPE%C[E'4PFPpI4P"c8'`!"Re(CA46HA0dC@e'EfaNCA* IAdC3Fe"X!!Dc9(*KF%9iDA0dFepI4R-!"kj(CA48FQ&`9(P`C9pI4R-!!lK1G@e 8EfpXBQpi9(*KF(0IAdCf!'0b8%pA8J#3"JbF!!!BV!!!!2!!!!d)!!!,T!!!!U3 !N!B"k!!!!!`!N%"&C`!!4@X!"!!!!!%!!!!m!!!!)!!!!aem#!+QNq(rr*!!!3! )P#(r`$[M!!")!!!"B!!!!)!#!!#3!"m!!MKr!!#!!3")1#%!3(`)!kD$iIrm6S! !)%9e!*!&!J!!!"4&G!-!N!3$!!!!(%9Z$!3!!!!+!!!!$)!!N!Z!!!!m#!!!!%9 h!*!&!3#3"%9V!!3!!!!,!!!!#!!!!%)!!!-l1'!!!%k!!#"&D`!%!!!!$!!!!!J !!!"@!!!$E6KP!!"1J!!J4@X!"!!!!!i!!!"-!!!!H!!!!kD6iIrm1q!!!#J%!!" "JJ!31!!!!CJ%!!!lr`!"+!8!!%'#!"!i!!!"Q!8!!$[r!!%S"J!!3B)!$$J!!!# B"J!!1(m!!)2Krra1J!!J4@X!"!!!!"-!!!"%!!!!r!!!",Tm#!+QNq(rr*!!!3! )P#(r`*!!B3"B1q3!!)"K!&K)!!!"B!!!!$J!)ED`(`!'1'!!!)!"!%Ji)3"!I!J $TS2Krra1J!!J4A8!N!88!!!!(%9Z$!3!!!!N!!!!$)!!N!Z!!!"%#!!!!%9h!*! &%`#3"%9Z"3%!!!!P!!!!#IrrrrS!!!9hC'9f1QjeE'`!-AVi4@X!"!!!!#B!!!# )!!!"0!!!"AGm#!+QNq(rr*2"rrL6SIrdN!!"!!L8)Iq`1m3!!$[P!!!lS!!!J!3 ![LJ!!!"!JJ!m9q!'2d'#!""Ai!Bq+!!!"N##!#L!IJ#kJ))!!$LJ!!!i`!!"5!! !!@!!!!"8B!Br3B)!#$ZJ!!%iI3!!J!%!@$JK!&"m#!1QJq(rr)2"rrL$SIrd6S! !)%9d!`#3"#8!!!")4A8!N!8R!!!!9%9Z$!3!!!#U!!!!$)!!N!Z!!!#)'!!!!%9 h!*!&*J#3"%9V!!3!!!#V!!!!H!!!!@3!!!CCI!J#TT2Krrb6`IriNk(rp*!!!3! )P#(rX$[M!!#!!`!3+!!!!%##!#3iB!!'5!!!!@!!!!"mIKYj3B)!$$Kq!!")!!! "Npm!%)1r!"#SI3!!1!-!!E!G!!#!I`!3J!%!@$JK!&"m#!1QJq(rr)2"rrL$SIr d6S!!)%9e!*!&V!!!!#a&G3#3"3%!!!"!4@i0!J!!!,!!!!!5J!#3"aJ!!%3!4!! +!!#+J!!H!*!'4AB+R!!!!,%!!!!14@i-"!!!!,)!!!!-J!#3$RJ!N!4&G`#3"DX !N!4&G`d!N!5`!!!!#%9Z"3%!!!#c!!!!%IrrrpJ!!!CC6R9XE&0[BfYPG%4[E@& TEJ#Sj1"&EJ8"!!!!Y!!!!!hrrrrA!!!'@90[BfYPG%4[E@&TEJ#3"%9Z"33!!!# e!!!!#2rrrpB!!!CC!*!)4AB&!*!%Y!#3"%9Z"3%!!!#f!!!!%Irrrp8!!!CC4QP XC90[BfYPG%4[E@&TEJ#DfI"&EJ8%!!!!Y`!!!!crrrr8!!!'@3#3$%9f"3#3",8 !N!4&EJ8%!!!!Z!!!!!Mrrrr6!!!'@3#3#%9f"3#3",B!N!4&GJ8!N!5h!!!!"%9 Z"33!!!#j!!!!&2rrrp)!!!CC!*!84AB&!*!%Z!!!!!K&GJ8!N!5e!*!%4@i&"!! !!,S!!!!)rrrrd3!!"PN!N!K&GJ8!N!5c!*!%4AB&!*!%Z3!!!!4&E`8%!!!!Z`! !!%6rrrr3!!!'@3#34%9f"3#3",S!N!4&GJS!N!5m!!!!%%9f#J#3",d!!!!-4AB +!*!%[J!!!"4&GJS!N!5r!!!!3%9f#J#3"-!!!!!m4AB+!*!%`3!!!$K&GJS!N!6 #!!!!0%9f#J#3"--!!!!`4AB+!*!%a!!!!#a&GJS!N!6&!!!!+%9f#J#3"-B!!!! N4AB+!*!%a`!!!#"&GJS!N!6)!!!!#%9f#J#3"-N!!!!F4AB+!*!%bJ!!!"K&D`# %!!!!b`!!!'5!!*!(I!J#TT2Krrb3!!%!#*3Krm"mIaYjX)%!AN'#!$5!!J!!N!! I!!!iI`!!1)!!!%J!!!&J!!!!U!%!AL`!!!"!J3!31(m!!%J!!!&J!!!!1(m!!)! "!%Ji)3"!I!J$TS2Krra1J!!J4A3$!*!%Z`!!!"a&G3#3"F`!!!!X4A8!N!A0!!! !4%9Z$!3!!!$1!!!!$)!!N!Z!!!"N#!!!!%9h!*!&b`#3"%9Z"3%!!!$2!!!!#rr rrmm!!!CC6R9XE&0[BfYPG!"[4@i&!3!!!0!!!!!(rrrrcJ!!"PP6Ef0VCA3!Ed9 Z"33!!!$4!!!!#2rrrmd!!!CC!*!)4AB&!*!%d!#3"%9Z"33!!!$5!!!!$2rrrm` !!!CC!*!-4AB&!*!%d3#3"%9Z"33!!!$6!!!!#2rrrmX!!!CC!*!)4AB&!*!%c`# 3"%9f"3#3"0)!!!!%4@m&"!!!!!-!!!"NrrrrbJ!!"PN!N'4&GJ8!N!66!*!%4AB +!*!%e!!!!&a&GJS!N!69!!!!9%9f#J#3"0B!!!"34AB+!*!%e`!!!%a&GJS!N!6 B!!!!5%9f#J#3"0N!!!"%4AB+!*!%fJ!!!$a&GJS!N!6E!!!!1%9f#J#3"0`!!!! d4AB+!*!%h3!!!$"&GJS!N!6H!!!!,%9f#J#3"0m!!!!S4AB+!*!%i!!!!#4&GJS !N!6K!!!!)%9f#J#3"1)!!!!84AB+!*!%i`!!!""&GJS!N!6N!!!!$%9f#J#3"18 !!!!)4AB+!*!%jJ!!!'"&GJS!N!6R!!!!3%9f#J#3"1J!!!"B4AB+!*!%k3!!!"a &GJS!N!6U!!!!'%9V!)3!!!$V!!!!C)!!N!Gm#!+QNq(rr*!!!3!)P#(r`(ar'hQ `J3"H3B)!0)!#!!#3!"m!!MKr!!!iJ!!!5!!!!@!!!!#S!3"H,!!!!%#"!"!iI`! !5!!!!@!!!!!iI`!!J!%!5$JK!%"m#!1QJq(rr%k!!#"&G!-!N!3$!!!!(%9e!*! &l!!!!#a&G3#3"Fd!!!"%4@i-"!!!!1d!!!!-J!#3#i!!!'3)!!!!4AF!N!AV!*! %4@m+K!!!!1B!!!!)J!#3$d9f!*!&k`#3"%9f$`#3"1i!!!!%4@m+K!!!!-J!!!! )J!#3$d9f!*!&b`#3"%9f$`#3"1i!!!!%4@m+"!!!!-N!!!!)J!#3$d9f!*!&U`# 3"%9f$`#3"1i!!!!%4@m+"!!!!-S!!!!)J!#3$d9f!*!&*J#3"%9f$`#3"1i!!!! %4@m+"!!!!1F!!!!)J!#3$d9f!*!&%`#3"%9f$`#3"1i!!!!%4@m+"!!!!1J!!!! )J!#3$d9f!*!&$J#3"%9f$`#3"1i!!!!%4@m+"!!!!1N!!!!)J!#3$d9f!*!&$!# 3"%9f$`#3"1i!!!!%4@m+"!!!!1S!!!!)J!#3$d9f!*!&#`#3"%9f$`#3"1i!!!! %4@m+"!!!!1m!!!!)J!#3$d9f!*!&!3#3"%9f$`#3"1i!!!!%4@m$"!!!!,X!!!! %J!#3#d9f"3#3",X!N!4&EJ-%!!!!*3!!!!5!!*!,4AB&!*!%*3#3"%9[!`3!!!! $!!!!")!!N!Y&GJ8!N!3$!*!%4@m2"!!!!1i!N!5!!*!(4@J!!&0C68J!!!'@!!! !0J!!!!S!N"%"!*!'!cErN!3!!!-i!!%!!!!%rj!%!3#3""m!!3#3"J0Jrj!%!!! $DJ!!!!%!N!B$Prq3"!!!!k-!!3!!!!d!!!!$!3#3"!8!!3#3"J2j!!!!"!!!!r` !!!!3!!!%*!!!!"`!!!4)!!!!*!!!"&S!!!!`!!!%I`!!!$J!!!53!!!!!%!!!!5 Rrj!%!!!%Y`!%!!!!$`!!!'J"!*!%"!!!!"!!!!"S!3#3"!8!!!!4!!!!D!%!N!3 '!!!!%J!!!!-!N!8I!!%!N!B%i`!!!"`!!!6Qrj!%!!!&+`!#!!!!"2q3"!%$!!! !@!!!!"Arrrrm!3#3""m!!3#3"JA6rj!%!!!'9J!#!!!!+2rrrrN"!*!%(J!!!*l rrrrF!3#3""m!!3#3"JD6!!!!+!!!"UJ!!!")!!!'arq3"!!!"ZS!!3!!!!6rrrr E!3#3""m!![rrrrd!!!!(!!!!"J!#!!!!#!!!!!X!N!F*!!!!C!!!!!)!![rrrri !!!!&!!!!"J!"!!!!"[rrrrd!N!ErN!3!!Irrrri!![rrrrX!!!!@!!!!+!!0!!! !&`!!!!X!N!FB!!!!!J!!!!)!!!!C!!!!#J!!!!B!!!!D!!!!#J!!!!J!!!!E!!! !#J!!!!S!!!!F!!!!#J!!!!`!!!!G!!!!#`!!!!i!!!!H!!!!!`!!!"!!!!!I!!! !!J!!!"3!!!!J!!!!!J!!!"J!!!!K!!!!!J!!!"`!!!!L!!!!!`!!!#!!!!!M!!! !!`!!!#3!!2rrrr`!!IrrrrX!!IrrrrS!!!!*!!!!!3!!!!F!![rrrrB!!!![!!! !4J!$!!!!-!!!!!X!N!Fa!!!!!`!!!!)!!!!b!!!!!3!!!!B!![rrrrF!!!!Y!!! !4J!"!!!!,[rrrrB!N!8"rrrrm3!!!!)!!!!#!!!!#`!#rrrrmJ!!!$J!!!!)!!- !!!!hrrrrm`#3"cN!!!!,!!!!"!!!!$Vrrrra!!!!"J!!rrrrm`!"rrrrmJ!!rrr rl!!"!!!!DJ!#rrrrl3!!!%F!!!!8!!F!!!")!!!!!J#3"d)!!!!(!!!!"!!!!%N !!!!(!!!!"3!!!%S!!!!+!!!!"J!!!%[rrrrX!!!!#!!!!%-!!!!#!!!!$!!!!%` !!!!#!!!!%!!"rrrrlJ!!!"3!!!!8rrrrl3!#rrrrl`!!!$i!!!!J!!J!!!!r!!! !#J#3"d!!!!!(!!!!!J!!!%%!!!!'!!!!!`!!!%)!!!!#!!!!"!!!!%-!!!!'!!! !#!!!!%3!!!!'!!!!#3!!!%8!!!!+!!!!#J!!!%ErrrrZ!!!!$!!!rrrrm!!"rrr rl`!#rrrrkJ!!!&`!!!!%!!)!!!"G!!!!#`#3"ei!!!!,!!!!!J!#rrrrk`!!!&F !!!!3!!8!!!"B!!!!!J#3"eN!!!!#!!!!"!!!!&S!!!!+!!!!#!!!!&[rrrrU!!! !#J!!!&m!!!!,!!!!$J!"rrrrk!!!!!B!!!!#!!!!#`!#rrrrk3!!!'X!!!!3!!B !!!"X!!!!#`#3"fhrrrrS!!!!!J!!!'i!!!!(!!!!#!!!!'m!!!!(!!!!#3!!!(! !!!!,!!!!#J!!!(%!!!!$!!!!$!!#rrrrp!!!!$B!!!"X!"`!!!!hrrrrm`#3"cN !!!!,!!!!"!!!!$X!!!!,!!!!"J!!!$`!!!"Q!!!!#!!!!$hrrrr`!!!!$!!!!%d !!!!,!!!!%!!!!%i!!!"V!!!!%J!!!%m!!!!,!!!!&J!!!&!!!!!,!!!!'!!!!&% !!!!(!!!!'J!!!&)!!!!(!!!!'`!!!&-!!!!,!!!!(!!!!&3!!!!(!!!!(J!!!&8 !!!!(!!!!(`!!!&ErrrrV!!!!)!!!!'!!!!!$!!!!-!!!!'%!!!!+!!!!0!!!!') !!!!$!!!!0J!!!'-!!!!$!!!!1J!!!'3!!!!+!!!!2J!!!'8!!!!$!!!!3!!!!'B !!!!$!!!!4!!!!'F!!!!#!!!!5!!!!'J!!!!#!!!!6!!!!'N!!!!#!!!!8!!!!'V rrrrT!!!!9!!!!()!!!!$!!!!C!!!!(-!!!!$!!!!D!!#rrrrj3!!!(N!!!!)!!3 !!!"k!!!!#`#3"hX!!!!,!!!!!J!!!(`!!!!,!!!!"!!!!(d!!!!,!!!!"J!#rrr rjJ!!!(F!!!!3!!3!!!"irrrrj3#3"hi!!!!+!!!!#!!!!(rrrrrU!!!!#J!!!)! !!!!,!!!!$J!"rrrrj!!!!")!!!!#!!!!#`!#rrrri`!!!)J!!!!3!!B!!!#*rrr rkJ#3"iS!!!!$!!!!"!!!!)X!!!!(!!!!#!!!!)`!!!!(!!!!#3!!!)d!!!!,!!! !#J!!!)i!!!!$!!!!$!!#rrrrj`!!!(8!!!"S!"F!!!!hrrrrm`#3"cN!!!!,!!! !"!!!!$X!!!!,!!!!"J!!!$`!!!"Q!!!!#!!!!$hrrrr`!!!!$!!!!%d!!!!,!!! !%!!!!%i!!!"V!!!!%J!!!%m!!!!,!!!!&J!!!&!!!!!,!!!!'!!!!&%!!!!(!!! !'J!!!&)!!!!(!!!!'`!!!&-!!!!,!!!!(!!!!&3!!!!(!!!!(J!!!&8!!!!(!!! !(`!!!(ErrrrQ!!!!)!!!!)%!!!!$!!!!-!!!!))!!!!+!!!!0!!!!)2rrrrN!!! !0J!!!)3!!!!#!!!!5!!!!)8!!!!#!!!!6!!!!)B!!!!#!!!!8!!!!)IrrrrM!!! !9!!!!)m!!!!$!!!!C!!#rrrrp3!!!$3!!!"X!!)!!!!errrrp!#3"h6rrrrR!*! &![rrrq!!!!#6!!!!"!!"!!!!#3!!!'3!N!8#rrrrhJ!!!*F!!!!5!!B!!!!'rrr rr3#3"jMrrrrI!!!!"J!!!*RrrrrI!!!!#J!!!*S!!!!,!!!!$J!!!*X!!!!'!!! !%!!!!*`!!!!'!!!!%3!!rrrrh`!"rrrrhJ!#rrrri3!!!*%!!!!3!!3!!!#5rrr ri!#3"j6rrrrL!!!!"!!!!*ArrrrL!!!!#!!!!*ErrrrI!!!!$!!!rrrriJ!"rrr ri3!!rrrrh3!"rrrrp`!#rrrrq!!!!#N!!!$#!!F!!!!U!!!!#`#3"bX!!!!'!!! !!J!!!#crrrrh!!!!"!!!!$2rrrre!!!!5J!!!*!!rrrriJ!!!,B!!!!b!!!!CJ! !!,S!!!#Grrrrh3!!!,i!!2rrrrN!!IrrrrJ!!rrrrp`!!!#I!!B!#J!!!+!!N!H K!!!!!3!!!+)!!!!#!!!!S`!!!!-!!!#N!!!!"!!!!+8!!!!&!!!!TJ!!!!B!!!# R!!!!"`!!!+J!!!!)!!!!U3!!!!N!!2rrrpN!!Irrrrd!![rrrpS!!!#Y!!!!&!! #!!!!V[rrrq%!N!H[rrrrf3!!!"!!!2rrrpX!!IrrrpS!!IrrrpJ!!!!4!!!!!3! !!!F!!IrrrpF!!!!0!!!!!3!!!!F!![rrrpErN!3!!!!)!!!!!Irrrp8!!!!4!!! !!3!!!!F!![rrrp6rN!3!!!!-!!!!![rrrp2rN!3!!!!)!!!!![rrrp,rN!3!!!! 8!!!!![rrrp(rN!3!!!!)!!!!![rrrp$rN!3!!!"%!!!!!Irrrmm!!!!,!!!!!3! !!!F!!Irrrmi!!!!(!!!!!3!!!!F!![rrrmhrN!3!!!!)!!!!![rrrmcrN!3!!!! -!!!!![rrrm[rN!3!!!!)!!!!![rrrmVrN!3!!!"N!!!&H5jIAf0dAema-%jeE'a 6Ef0VCA4'GJ!!-bjIAf0dAemf8fpMDf9d4RB!!T9IAhCdAema-%jeE'a6Ef0VCA3 !"&YdD'Pc!!+H6R9XE&0[BfYPG!!(pL46Ef0VCA3!"[P6Ef0VCA3!!"abC@C$Eh9 ZG!!(mepIGR"dFL3!"$p!1$!i!!Gp,R*PB@4IAc%`6R9XE&0[BfYPG%C3GQN!!$! ZGh*TG'9IAc%`6R9XE&0[BfYPG%C3GQN!!maXC@i!"jFZFf9XC@0dAema-%jeE'a 6Ef0VCA4'8&9M8&9M8&9M!!FmBf&Z8Q9KC!!!CQ0KEPGbDA4P!!'"CAKMCA"dD@p Z!!HKCfp[C'PPF`!$4bjQFh4KG&pI-6"1G@aX8fpMDf9d4P!dFh4KG!!'`5jQFh4 KG&pI0P0[BfYPG%C30(0dBA3!!jjLG@B!"#YcG'&d!!D5Fh4IC'9f!!E!Fh4ID@j [!!FGFh4IE@pNC3!!dR0dAfjXD@jV!!BNFh4IG@PN!!EXFh4ICfPN!!HTFh4IFQ4 PGJ!(Vh0dAh0THQ8!!(acG&pKG'PYC3!!`(0dAfedD@eP!!#FFh4IBh4TE@8!!Q9 cG&pLE'YcDATP!!(rFh4IBQa[BfYc!!4J3$Ja13!%H%!i-M%!"SNZ@@peFR0IAc% f6R9XE&0[BfYPG%4[E@&TENC53c%a4e9658CTE'95C@C4-M%f4QPXC90[BfYPG%4 [E@&TEMG5CA&eCA0d!!50,Q9aG@&XFh4bD@jR!!2FFQ9Q!!214e9658CTE'95C@B !"44PFR*[FJ!(RQKKFdPZCQm!"+GQD@aP!!&l9%CTE'96F'9M!!FP*%C68h"PB`! '#%C68h"PB`!((RC5C@C1G@d!"FT`BA**4!!%UfjKE@8!"+TTEQC[!!,S3dPZCQp 33P*PB`!"VQK'D@aP5@jQE`!"68K'D@aP5@jQE`!&'h&-D@jV!!9r889XC@d!"CT a9(P`C3!&MR&%BA4K!!BeD@p8FQ&`!!(9D@p$E@4"C'4b!!6ED@p$Efe`E'9dD@p Z!!'r8QpeG'PZC84PFf0bDA"dEh)!"bGREdeTH'9N6@pNC94bBA!!"d4fCA*cD@p Z!!B)FQpeG'PZC84PFf0bDA"dEh*'E'&RF`!"9R*PFf9bGQ9N-3!"9h*PFf9bGQ9 N-J!%Gh0PE'9MG'pb5@jQE`!%+R*[GA4TEQ9$Eh9ZG!!'m(*[GA4TEQ95C@0[FQ4 c!!8I8QpeG'PZC9*PBfpbC!!![h"bEf0*EQC[!!23590"!!6lFQpeG'PZC8CXB@G c!!D%F(*[Bd4PFf0bDA"dEh)!!0GcC@aPBh4[FJ!!IfP[8Q9cG@ad!!(@D@p1B@e P8(4b!!&XD@p@8Q9Q6R9Y!!&SD@p'8Q9Q6R9Y!!)`D@p'9Q9bFdjeE3!(D'CTE'a PFM%!!eKTEdC%DA**EQ4PH!!#-'P[4Qa"G(4bD@)!!04TEd&$9A0PFJ!%d@P[4Qa 'EQ4b5@jQE`!&INC*EQC[!!CQCQ48HA"P!!&VCQ4$FQ9KG'pb!!HmCQ4'E'&RF`! #"QCN6'pMBA4TEfi!"D43EfPZG!!"GRB!!@KS!!DfCQ4'E'4b!!I)D@p%DA**4!! "$fP[4Qa6G%*XD`!"rfP[4Qa-CdaPEJ!"c'P[4Qa3H8aPEJ!#k@P[4Qa58h4#E'X !!N"TEdCX8NaR6'9Z!!++D@p'E&*3H8aPEJ!"[@P[4Qa$FN4KG!!"efP[4Qa0C%4 KG!!"5@P[4Qa#Dd4KG!!&B@P[4QaB4QjNFNPZCQm!"RK'@%PZCQm!!+0QC%PMEfj *4!!!0QCN9@jeFf9N!!$*CQ46Bh*TF(3!!#KQC&K'E'&RF`!"NQCN3fpYE@9ZG!! "e@CN8(9d3AGKH3!"#fP[4Qa3BA**4!!#8@P[4Qa$E("6DAS!"hPNDA**EQC[!!H K4'Pb5@jQE`!#%QP[4(*9Fh*AC(-!"Gj%5@jQE`!'!QCb8Q9MG!!%Ie*PBh3!!bp dEh!!"!aXC@Cd!!BLBQpdG'pY!!A@FQPRD(3!"fGQFNCXB@Gc!!*BCR*-Ef0KG'P [EJ!'8fCb9QPPG`!"k'P[4(*%DA**4!!"MQP[4(*1E8CXF`!(DQCTE'aPFM-!!GG TEd4b3h*%BA3!!BeTEd4b6@4%BA3!!H0TEd4b3QY%BA3!"-"TEd4b4QjNFNPZCQm !"U4%@%PZCQm!!,CQFP0MFQpXE!!$c'Cb6h"PEN0SB@PZ!!"'CR*6Bh*TF(3!!+j QFPK'E'&RF`!"`QCb3fpYE@9ZG!!"L@Cb8(9d3AGKH3!"*'P[4(*3BA**4!!'Gf4 [E@&TEJ!!K%CTE'96Ef0VCA4%EfeKD@i!"I)N8fpMDf9d4'pYB@PZ!!3d8fpMDf9 d4'pYB@PZ!!$hEQ9iG%4PGQPMC84[E@&TEJ!'q@jPH(4'D@aP4'pYB@PZ!!9#CQP bFh3!!J9'D@aP8fpMDf9d!!3NF(*PGJ!%5fjPH(3!"`TQ8Q9Q6R9Y!!BSBA"`C@j N!!%NG'9YF'pbBA*j!!4VFh"PB`!(-(*PFA9PFh3!!49'D@aP8fpMDf9d4'pYB@P Z1MT5CA&eCA0d!!"LGfPXE%p`C@i!!JjhD@aX8Q9YEhCP!!*9GfPXE&*PEQ&YC3! (5AGTE'a(CA4'D@aP5@jQE`!(p(GTE'a6CA4'D@aP5@jQE`!$j(GTE'a'3@0MCA0 c!!$HGfPXE&0dBA3!!DahD@aX3fKYEf3!!A"hD@aX994TE@8!!MahD@aX3@0MCA0 c!!4j3$Jb-J!#A#j[F'9ZAema0NjeE'a6Ef0VCA4%EfeKD@j'8N-a-8G98dP'D@a P8Q9QD3!#HbjIAfjhAep'9@`!!1K1G@aX8fpMDf9d4'pYB@PZ!!'9*%CTE'96Ef0 VCA4%EfeKD@i!!BacD@jRE'9dEfi!"*G!1$-`!!&FAepNE&pI4P"f!!5B3$Jc-3! %Q8!i-c)!"*Y!1$-d!!EmAep59&4*Aema-P0[BfYPG%4[E@&TEJ!%R%!i-c8!"*e !1$-f!!**Aep59&4*Aema0NCTE'96Ef0VCA4%EfeKD@i!"*T!1$-c!!)$Aep59&4 *Aema0NjeE'a6Ef0VCA4%EfeKD@i!!#eIAhCdAema0NjeE'a6Ef0VCA4%EfeKD@i !"SpcEf0VCA4`B@PbAema-P0[BfYPG%4[E@&TENCTFe"30P0[BfYPG!!"mA0[BfY PG&pI-6*6Ef0VCA4%EfeKD@j'DA-!"DTMD'p[Ff9IAc%f4QPXC90[BfYPG%4[E@& TENCT8'03GQP3GP"T!!0cB@0MCA0cAema0NCTE'96Ef0VCA4%EfeKD@j'8N-a-8G 98dP'D@aP8Q9QD3!$9(9dD@ePAema0NCTE'96Ef0VCA4%EfeKD@j'8N-a-8G98dP 'D@aP8Q9Q8%-hGA4TE@*eCJ!$,Q0SE@pNAema0NCTE'96Ef0VCA4%EfeKD@j'8N- a-8G98dP'D@aP8Q9Q9A-!"[TcG'&dAema0NCTE'96Ef0VCA4%EfeKD@j'8N-a-8G 98dP'D@aP8Q9Q8$4cG'&d!!H)CQ&MBf9cFepI-6C'D@aP8fpMDf9d4'pYB@PZ4P* $-6&(990*4QPXC9*PCP9T8'`!""PQFf9dCQPXC@PZCQpIAc%f4QPXC90[BfYPG%4 [E@&TENC53c%a4e9658CTE'95C@C9E&9X!!DjCQGPG'CTE'9TEQC[Aema0NCTE'9 6Ef0VCA4%EfeKD@j'8N-a-8G98dP'D@aP8Q9Q8&9X8&9X!!A4FQ9ZB@ePAema0NC TE'96Ef0VCA4%EfeKD@j'8N-a-8G98dP'D@aP8Q9Q8%0M!!*pFQ9YEhCPAema0NC TE'96Ef0VCA4%EfeKD@j'8N-a-8G98dP'D@aP8Q9Q!!)bAepNG&pI-6C1G@aX8fp MDf9d4'pYB@PZ4RB!!B0[F'9ZAema0NjeE'a6Ef0VCA4%EfeKD@j'8N-a-8G98dP 'D@aP8Q9QD3!&qPP[GA*cAema0NjeE'a6Ef0VCA4%EfeKD@j'8N-a-8G98dP'D@a P8Q9Q86)a0NCTE'96Ef0VCA4%EfeKD@ih8Q9aG@9cG!!$r5jIAf4dAema0NjeE'a 6Ef0VCA4%EfeKD@j'GJ!$ZLjIAf4dAema0NCTE'96Ef0VCA4%EfeKD@j'GJ!#6bj IAf4XAep'8(B!",G!1$3`!!5i3$Jd-3!%ZN!i0$-!"rpIAe*89%PIAcC6Ef0VCA3 !",P!1$3b!!6lAep59&4*Aema-%jeE'a6Ef0VCA3!!hG`Eh0dAh0PE'9MG&pI0P0 [BfYPG%C9Be9M9@-!!Qa`FQ9IFf9XC@0dAemf8fpMDf9d4P9M9@09B`!$lR0SGA4 NEhGZAemf8fpMDf9d4QN!!8*TFf&dG(PIAcC6Ef0VCA4'GJ!%I@CdFR9ZBf&dC9p I0P0[BfYPG%CX!!&JE(0PC@YIAcC6Ef0VCA4'E'N!!fpTEf0dE&pI0P0[BfYPG%C 9D9"f!!*(CQ0ZG'aIAcC6Ef0VCA4'9@PT!!&,Ff9dFfpMDfp`G&pI0P0[BfYPG%C TD9"fD3!#b'GPG(0[BfY[F(4IAcC6Ef0VCA4'D@P3GP"T!!&!Cf9dF'9PFQjKE@9 IAcC6Ef0VCA4'8(C3D3!"afGPG(0[BfYZB@ePAemf8fpMDf9d4P"f8'N!"aacC@j NG'pIAcC6Ef0VCA4'8(CTD9"fD3!#F(*PBhCQFQpYAemf8fpMDf9d4P"fD@P3GP" T!!5@B@0MCA"dAemf8fpMDf9d4P"f8'N!!FKXDA0dC@jIAcC6Ef0VCA4'D3!%kQ0 [EQjPBh4IAcC6Ef0VCA4'8(CT!!&-BQPZC&pI0P0[BfYPG%C3GQN!"&4IAf4dAem a-%jeE'a6Ef0VCA4'GJ!#TfCcG'&dAema-%jeE'a6Ef0VCA4'8$4cG'&d!!E$Ff9 XC@0dAema-%jeE'a6Ef0VCA4'8&9M8&9M8&9M!!IdGh*TG'9IAc%`6R9XE&0[BfY PG%C3GQN!"NPbC@&NAema-%jeE'a6Ef0VCA4'8(CT!!9Z,PpIC(4IAc%`6R9XE&0 [BfYPG%Cf!!"#,PpIC(4IAcC6Ef0VCA4'GJ!%[N!i0$F!!hj86d-!"(9IAf0dAem a-%jeE'a6Ef0VCA4'GJ"5C9"29e)!N!B4E!!!&LS!!!"N!!!4f!!!"&)!!!3`!*! '!KF!!!!%!*"!4@F!!%9T!*!&!89V!!3!!!!#!!!!&!!!!#!!!!2GJ!)!!*!!!`! #1!!!!,!$!!"1J!!J4A3$!*!%!`#3"%9V!!3!!!!)!!!!9!!!!%S!!!3#I!J#TT2 Krrb3!!%!#*3Krm"mIaYjX)%!AN'#!#5!!J!!N!!I!!+S!3"H,!!!!%#"!"!iI`! !5!!!!@!!!!!iI`!!J!%!5$JK!%"m#!1QJq(rr%k!!#"&G!-!N!3$!!!!(%9e!*! !!!$4&EJ`%!!!!#J!!!!b!!*!,J!!!9!J!!!"&G`#3"3J!N!4&D`!%!!!!#`! !!#J!!!"X!!!%'A`)!UD3!!%!#*3Krm!iB!!Y5!!!!@!!!!#!!3")1#%!3(`)!kC 1J!!J4A8!N!8-!!!!%%9Z$!3!!!!0!!!!$)!!N!Z!!!!S!*!%4AF!N!8,!*!%4@X !"!!!!!i!!!!S!!!!L!!!"&am#!+QN!!"!!L8)Ir!1'!!,8J!!!&J!!!!J!%!5$J K!%"m#!1Q6S!!)%9e!*!&$!!!!""&EJ`%!!!!$`!!!!b!!*!,J!!!+!#3"%9h!*! &$J#3"%9V!!3!!!!3!!!!+!!!!+3!!!5LI!J#TT!!!3!)P#(r`$KJ!#e)!!!"B!! !!)!"!%Ji)3"!I!J$TNk!!#"&G3#3"3`!!!!34@i-"!!!!"%!!!!-J!#3#i!!!#J !N!4&G`#3"4!!N!4&D`!%!!!!%J!!!#J!!!$!!!!%hh`)!UD3!!%!#*3Krm!iB!! Y5!!!!@!!!!#!!3")1#%!3(`)!kC1J!!J4A8!N!86!!!!%%9Z$!3!!!!8!!!!$)! !N!Z!!!!S!*!%4AF!N!85!*!%4@X!"!!!!"8!!!"B!!!!h!!!"6Tm#!+QN!!"!!L 8)Ir!N!"K!&L3!)%!A*!!S3"J1!!!!*!!!3!iJ'%!@)#"!&b!S3"J1-!!!$MJ!!! j!3!iJB-!!S'-!#")!!!"B!!!!)!"!%Ji)3"!I!J$TNk!!#"&G3#3"4B!!!"!4@i -"!!!!"S!!!!-J!#3#i!!!&J!N!4&G`#3"48!N!4&D`!%!!!!'`!!!&!!!!%`!!! &Xh`)!UD3!!%!#*3Krm#3!'%!@*!!J3"FN!#K!'#!B3"BJ)%!A)#K!'!i`!!!11! !!$N!!!#"J`!#JB`!*%J!!!&J!!!!J!%!5$JK!%"m#!1Q6S!!)%9e!*!&&J!!!$K &EJ`%!!!!(!!!!!b!!*!,J!!!8!#3"%9h!*!&'`#3"%9V!!3!!!!G!!!!+!!!!AB !!!B3I!J#TT!!!3!)P#(r`$KJ!#e)!!!"B!!!!)!"!%Ji)3"!I!J$TNk!!#"&G3# 3"3`!!!!34@i-"!!!!"i!!!!-J!#3#i!!!#J!N!4&G`#3"4d!N!4&D`!%!!!!(`! !!#J!!!'5!!!'Dh`)!UD3!!%!#*3Krm!iB!!Y5!!!!@!!!!#!!3")1#%!3(`)!kC 1J!!J4A8!N!8-!!!!%%9Z$!3!!!!J!!!!$)!!N!Z!!!!S!*!%4AF!N!8I!*!%4@X !"!!!!#%!!!!S!!!"VJ!!"X*m#!+QN!!"!!L8)Ir!1'!!,8J!!!&J!!!!J!%!5$J K!%"m#!1Q6S!!)%9e!*!&$!!!!""&EJ`%!!!!)J!!!!b!!*!,J!!!+!#3"%9h!*! &)3#3"%9V!!3!!!!M!!!!+!!!!FS!!!F1I!J#TT!!!3!)P#(r`$KJ!#e)!!!"B!! !!)!"!%Ji)3"!I!J$TNk!!#"&G3#3"3`!!!!34@i-"!!!!#3!!!!-J!#3#i!!!#J !N!4&G`#3"5-!N!4&D`!%!!!!*3!!!#J!!!(Q!!!(@R`)!UD3!!%!#*3Krm!iB!! Y5!!!!@!!!!#!!3")1#%!3(`)!kC1J!!J4A8!N!8-!!!!%%9Z$!3!!!!Q!!!!$)! !N!Z!!!!S!*!%4AF!N!8P!*!%4@X!"!!!!#F!!!!S!!!#!J!!"kpm#!+QN!!"!!L 8)Ir!1'!!,8J!!!&J!!!!J!%!5$JK!%"m#!1Q6S!!)%9e!*!&$!!!!""&EJ`%!!! !+!!!!!b!!*!,J!!!+!#3"%9h!*!&*`#3"%9V!!3!!!!T!!!!+!!!!Ki!!!J#I!J #TT!!!3!)P#(r`$KJ!#e)!!!"B!!!!)!"!%Ji)3"!I!J$TNk!!#"&G3#3"3`!!!! 34@i-"!!!!#S!!!!-J!#3#i!!!#J!N!4&G`#3"5N!N!4&D`!%!!!!+`!!!#J!!!) k!!!)6(`)!UD3!!%!#*3Krm!iB!!Y5!!!!@!!!!#!!3")1#%!3(`)!kC1J!!J4A8 !N!8-!!!!%%9Z$!3!!!!X!!!!$)!!N!Z!!!!S!*!%4AF!N!8V!*!%4@X!"!!!!#d !!!#`!!!#9J!!#*Pm#!+QNq(rr*!!!3!)P#(r`$[N!!!i!!!!X!3!!$J!!!#3!!3 !!MaJ!!%iBm'fX'3!"MJ!!!'`"!!)1!!!!,!%!!Si!!!!X!3!$$J!!!#`"!!11!! !!C!!"!!31'!!!%J!!!&J!!!!N!"r!"3iB!!!5!!!!@!!!!#3!(m!'$KJ!!")!!! "B!!!!*!!I`!F1!!!!*!!(`!J1!!!!C!!(`!N1'!!!)!"!%Ji)3"!I!J$TS2Krra 1J!!J4A8!N!8Z!!!!A%9e!*!&,J!!!'a&G3#3"5i!!!"m4@i-"!!!!$i!!!!-J!# 3#i!!!,!)!!!!4AF!N!8Y!*!%4@X!"!!!!$m!!!!S!!!#N!!!!!S'I!J#TT!!!3! )P#(r`$KJ!"e)!!!"B!!!!)!"!%Ji)3"!I!J$TNk!!#"&G3#3"3`!!!!34@i-"!! !!%!!!!!-J!#3#i!!!#J!N!4&G`#3"6m!N!4&D`!%!!!!33!!!#J!!!+X!!!+4A` )!UD3!!%!#*3Krm!iB!!@5!!!!@!!!!#!!3")1#%!3(`)!kC1J!!J4A8!N!8-!!! !%%9Z$!3!!!"#!!!!$)!!N!Z!!!!S!*!%4AF!N!9"!*!%4@X!"!!!!%-!!!!)!!! #b!!!#S)iB!!!6S!!)%9V!!3!!!"%!!!!+!!!!Y`!!!URI!J#TT!!!3!)P#(r`$K J!#e)!!!"B!!!!)!"!%Ji)3"!I!J$TNk!!#"&G3#3"3`!!!!34@i-"!!!!%8!!!! -J!#3#i!!!#J!N!4&G`#3"83!N!4&D`!%!!!!4J!!!!3!!!,i!!!+jNk!!#"&D`! %!!!!4`!!!!J!!!--!!!,(MKJ!!"1J!!J4@X!"!!!!%J!!!!%!!!$)!!!#f*1J!! J4@i&!3!!!%N!!!!(rrrrq`!!#f*6Ef0VCA3!!%9Z"33!!!"+!!!!#2rrrrS!!!Y L!*!)4AB&!*!%53#3"%9["33!!!!$!!!!C2rrrrN!!!YL!*"N4AB&!*!%5J#3"%9 f#J#3"%X!!!"J4AB+!*!%6!!!!&a&GJS!N!40!!!!@%9f#J#3"%i!!!"84AB+!*! %6`!!!&"&GJS!N!43!!!!6%9f#J#3"&%!!!")4AB+!*!%8J!!!%4&GJS!N!46!!! !3%9f#J#3"&3!!!!m4AB+!*!%93!!!$K&GJS!N!4@!!!!0%9f#J#3"&F!!!!`4AB +!*!%@!!!!#a&GJS!N!4C!!!!+%9f#J#3"&S!!!!N4AB+!*!%@`!!!#"&GJS!N!4 F!!!!(%9f#J#3"&d!!!!B4AB+!*!%AJ!!!"4&GJS!N!4I!!!!%%9f#J#3"'!!!!! -4AB+!*!%B3!!!!K&E`S%!!!!6!!!!!L!!*!24AB!N!9)!*!%4AB2!*!%BJ!!!!4 &E`S%!!!!63!!!!L!!*!24AB!N!9(!*!%4AB2!*!%BJ!!!!4&E`S%!!!!6J!!!!L !!*!24AB!N!9'!*!%4AB2!*!%BJ!!!!4&E`S%!!!!6`!!!!L!!*!24AB!N!9%!*! %4AB2!*!%BJ!!!!4&E`S%!!!!8!!!!!L!!*!24AB!N!9$!*!%4AB2!*!%BJ!!!!4 &E`S%!!!!83!!!!L!!*!24AB!N!9"!*!%4AB2!*!%BJ!!!!4&E`S%!!!!8J!!!!L !!*!24AB!N!8r!*!%4AB2!*!%BJ!!!!4&E`S%!!!!8`!!!!L!!*!24AB!N!8Y!*! %4AB2!*!%BJ!!!!4&E`S%!!!!9!!!!!L!!*!24AB!N!8V!*!%4AB2!*!%BJ!!!!4 &E`S%!!!!93!!!!L!!*!24AB!N!8T!*!%4AB2!*!%BJ!!!!4&E`S%!!!!9J!!!!L !!*!24AB!N!8R!*!%4AB2!*!%BJ!!!!4&E`S%!!!!9`!!!!L!!*!24AB!N!8P!*! %4AB2!*!%BJ!!!!4&E`S%!!!!@!!!!!L!!*!24AB!N!8M!*!%4AB2!*!%BJ!!!!4 &E`S%!!!!@3!!!!L!!*!24AB!N!8K!*!%4AB2!*!%BJ!!!!4&E`S%!!!!@J!!!!L !!*!24AB!N!8I!*!%4AB2!*!%BJ!!!!4&E`S%!!!!@`!!!!L!!*!24AB!N!8G!*! %4AB2!*!%BJ!!!!4&E`S%!!!!A!!!!!L!!*!24AB!N!8E!*!%4AB2!*!%BJ!!!!4 &E`S%!!!!A3!!!!L!!*!24AB!N!89!*!%4AB2!*!%BJ!!!!4&E`S%!!!!AJ!!!!L !!*!24AB!N!85!*!%4AB2!*!%BJ!!!!4&E`S%!!!!A`!!!!L!!*!24AB!N!83!*! %4AB2!*!%BJ!!!!4&E`S%!!!!B!!!!!L!!*!24AB!N!81!*!%4AB2!*!%BJ!!!!4 &E`S%!!!!B3!!!!L!!*!24AB!N!8,!*!%4AB2!*!%BJ!!!!4&E`S%!!!!5`!!!!L !!*!24AB!N!8)!*!%4AB2!*!%BJ!!!!4&E`S%!!!!B`!!!!L!!*!24AB!N!8#!*! %4AB2!*!%BJ!!!!4&E`-%!!!!!`!!!!5!!*!,4AB&!*!%!`#3"%9[$`3!!!"L!*! %J!#3"d9S!!"6@8e)!!!$0!!!!!F!!!!#!*!4!3#3"J2Z!!!!%!!!!rq3"3!!!rm !!3!!!!6rN!3"!*!%!`!"!*!'""6rN!3!!!3@!!%!!!!%rj!%!3#3""m!!3#3"J3 h!!!!$!!!"$VrN!3!!!4C!!!!!3#3"J4p!!!!$!!!")$rN!3!!!5I!!!!!3#3"J5 k!!!!$!!!",hrN!3!!!6F!!!!!3#3"J8'!!!!$!!!"3RrN!3!!!8h!!!!!3#3"J9 Q!!!!3!!!"AhrN!3!!!@`!!3!!!!%rj!%!3-!!!"B!!!!&`!!!'3"!`!!!&`!!!! B!!!!!`%$!!!!B!!!!"N!!!!$!!-!!!!i!!%!N!B&i!!!!$J!!!AMrj!%!!!'$3! $!!!!"2q3"!%$!!!!@!!!!"F!!!"N!3-!!!"F!!!!'!!!!!-"!`!!!'!!!3#3"JC '!!!!$!!!"NRrN!3!!!CS!!!!!3#3"JDG!!!!$!!!"U$rN!3!!!Dr!!!!!3#3"JE T!!!!$!!!"ZcrN!3!!!F,!!!!!3#3"JFe!!!!$!!!"cMrN!3!!!GA!!!!!3#3"JH +!!!!$!!!"ihrN!3!!!HX!!!!!3#3"JIG!!!!$!!!"q$rN!3!!!Ir!!!!!3#3"JJ R!!!!$!!!##VrN!3!!!K*!!!!!3#3"JKd!!!!$!!!#(IrN!3!!!L@!!!!!3#3"JL q!!!!A!!!#A%!!!"X!!!*M`!!!(`!!!QYrj!%!!!+!`!"!!!!,rrrrrd"!*!%(`! "!*!'#L3!!!!-!!!+*rq3"!!!#N)!!!!"!*!'#Q%!!!!-!!!+C2q3"!!!#Rm!!!! "!*!'#TVrN!3!!!UN!!!!!3#3"JV"!!!!$!!!#X6rN!3!!!VM!*!+#a[rN!3!!!X E!!!!!3#3"JY9rj!%!!!,A`#3#JZBrj!%!!!,Q!!!!!,rrrrq!!!!"3!!!!B!!J! !!!B!!!!,!*!("`!!!'3!!!!#!!$rN!3!!Irrrri!![rrrr`!!!!`!!!!+!!0!!! !-3!!!!X!N!Fb!!!!!J!!!!)!!!!c!!!!#J!!!!B!!!!d!!!!#J!!!!J!!!!e!!! !#J!!!!S!!!!f!!!!#J!!!!`!!!!h!!!!#`!!!!i!!!!i!!!!!`!!!"!!!!!j!!! !!J!!!"3!!!!k!!!!!J!!!"J!!!!l!!!!!J!!!"`!!!!m!!!!!`!!!#!!!!!p!!! !!`!!!#3!!2rrrrd!!Irrrr`!!IrrrrX!!!!(!!!!!3!!!!F!![rrrrVrN!3!!!! )!!!!![rrrrRrN!3!!!"N!!!%U%G98dN!!$-ZAepMG&pI0P0[BfYPG%Cf!!ALAep fG&pI0P0[BfYPG!!%@h4SDA-!"[P6Ef0VCA3!!"abC@C$Eh9ZG!!(mepIGR"dFL3 !!%)ZAepNG&pI0P0[BfYPG%Cf!!*2,PpIC'aIAdC3GJ!%R%!h0$N!!VFZBQPZC&p I0P0[BfYPG%C3GQN!!kdZ4e9659pPFR*[FJ!%Y%!h06%!"H`ZBfpZEQ9MG&pI0P0 [BfYPG%C3GQN!",C!0c8c!!*#,QaTFh4PEPpI0P0[BfYPG%CT!!5i3$Fe03!&QLj KBf0PF(4IAcC6Ef0VCA4'8(C3D3!(A#j(990*Af9bFQpbAfjTE!!%ZN!h06F!!ZB ZFQ9KC&pI0P0[BfYPG%C3GQN!!j3ZAep`G(*ICfaeC3!'!f*eCQCPFJ!'pf*eCQa PEJ!(C@CbEfeXC@i!",a!0c8j!!18,RGbDA4PAemf8fpMDf9d4P"fD3!%e%!h0M% !!fdZFQ9MGQCbEfeIAcC6Ef0VCA4'8(CTD9"f8'N!"0C!0cBc!!!C,R0PEQ4dEep I0P0[BfYPG%C3GQPT8(CT!!6B3$Ff03!#p#jRCA4cEf0VEQ&YC9pI0P0[BfYPG%C 3GP"T!!6D3$Ff0`!#fLjRCA4`C@9bEQ&YC9pI0P0[BfYPG%C3GP"T!!6F3$Ff13! $abjRCA4cEf0VEh"dAemf8fpMDf9d4QPT8(C3D3!%p%!h0c%!!V%ZFf9dFfpMDfp `G&pI0P0[BfYPG%CTD9"fD3!%pN!h0c-!!pSZCQ0ZG'aIAcC6Ef0VCA4'9@PT!!6 i3$Fh03!%I#jTEf0dE&pI0P0[BfYPG%C9D9"f!!6k3$Fh0`!'`5jQFh4KG&pI0P0 [BfYPG%C30(0dBA3!"93ZG'PYC3!$RQ*eCJ!%+h0dBA3!"T*cG&pNCAB!"X"cG&p TEQm!"aecG&pYEf4P!!$5Fh4IEQaTEQX!"L4cG&peD@3!"ZacG&pRD@3!"kPcG&p bC'9f!!H[Fh4IFfPkC3!!I(0dAf&dD@eP!!$!Fh4IEA4TE@8!!*acG&pMG'PYC3! #CA0dAf*XDh0THQ8!!IpcG&pLE'pMDh-!"2a!0cFj!!)6,QacC@9VAemf8fpMDf9 d4QaT!!383$Fi-3!&"bjQG(*eEQ0KG'9IAcC6Ef0VCA4'E!!%&N!h1$-!!SBZDA0 KG(4jAemf8fpMDf9d4RB!"2mZFfKeG'4[GfjIAcC6Ef0VCA4'D3!%'8!h1$B!!`! ZF(*PAh0PE'9MG&pI0P0[BfYPG%C9Be9M9@-!![SZFf9XC@0dAemf8fpMDf9d4P" 9Be"9Be"9B`!%R5j`Eh0dAh0PE'9MG&pI0P0[BfYPG%C9Be9M9@-!"$4!0cN`!!I rAep59&4*Aemf8fpMDf9d!!I8AepNG&pI0P0[BfYPG%Cf!!0hF'pcG&pcC@aPBh4 IAcC6Ef0VCA4'9@09Be9M!!&)Ff9XC@0dAemf8fpMDf9d4P"9Be"9Be"9B`!#E(" bC9pcC@aPBh4IAcC6Ef0VCA4'9@09Be9M!!2ZFfKeG'4[GfjIAcC6Ef0VCA4'D3! "3QPcBA4dH9pI0P0[BfYPG%Cf!!4pCR4bG@jMBA4PAemf8fpMDf9d4Q`!!@"XFf9 PDepI0P0[BfYPG%CXD3!&,fCcG'&dAemf8fpMDf9d4P!dFh4KG!!$EfP[Bh4XAem f8fpMDf9d4P9T8(B!!NGQBfjdE&pI0P0[BfYPG%C9D@N!!8YcCA4cEf0VEh"dAem f8fpMDf9d4QPT8(CT!!,)Cf9dFfpMDfp`G&pI0P0[BfYPG%CTD9"f8'N!!8"RCA4 `C@9bEQ&YC9pI0P0[BfYPG%C3GP"T!!((Cf9dFfpMDfjKE@9IAcC6Ef0VCA4'8(C 3D3!(((0PEQ4dEepI0P0[BfYPG%C3GQPT8(CT!!*`FQ9MGQCbEfeIAcC6Ef0VCA4 '8(CTD9"f8'N!!MehFQPdC9pI0P0[BfYPG%C3GQN!!DCbC@&NAemf8fpMDf9d4P" fD3!%PQ&MBf9`G&pI0P0[BfYPG%C3GP"T!!()E'PcG'9ZAemf8fpMDf9d4QN!"1T MEfjZC@0dAemf8fpMDf9d4P"fD3!"6'*TEQ4IAcC6Ef0VCA4'8(CT!!0q9%p$!!H %AepMG&pI0P0[BfYPG%Cf!!!*,e"29e)!N!BfS!!!8UJ!!!&G!!!h$!!!'j`!!"h B!*!'!fi!!!!S!*"!4@F!!%9V!!3!!!!"!!!"2!!!!#!!!!C5I!J#TT2Krrb3!!% !#*3Krm#`J3"HN!#K!'#!B3"JJq-!!$J!!!#`(`!+S!%!AL`!!!0"JJ"N3)!!%#` !!!&"JJ!85!!!Z#`!!!9!J!#`5!!!Q+JI!!a8!!Gl3B)!$$J!!!5`(`!+L"m!2#J !!!*"JJ!3L"m!2#J!!!0!JJ!31!!!"jJI!$a)!!"d1!!!"TJI!$a)!!"SU"m!$&3 !"hY"JJ!-1!!!",!I!!U)(`!m+!!!"d'#!%L)(`!m+!!!!N'#!"#)(`!m+!!!!d# #!"!i!!!(Q"m!2%J!!#3i!!!"Q"m!2%J!!"LS(`!-9!!(rd'#!!`i!!!"X"m!#S! I!!BS!!!!3B)!)+JI!!SX!!!!3B)!&)"r!!DSR`!+5!!!!@!!!!")!!!"B!!!!)! "!%Ji)3"!I!J$TS2Krra1J!!J4A8!N!8#!!!"'%9e!*!&!`!!!5"&EJ`%!!!!)`! !!!b!!*!,J!!"2!J!!!"&G`#3"3%!N!4&E`8%!!!!*!!!!#$rrrrh!!!*m+Vq"`# 3#ql!!!%!"!#3$%9f#J#3"$3!!!!84@X!"!!!!$8!!!$%!!!!eJ!!#Rjm#!+QNq( rr*2"rrL6SIrdN!!"!!L8)Iq`1k-!!)2M!'Blh3!!U"d!%*!!(`!q,!!!!%##!$5 !(J!UN!!I!##J(J!ZX"m!(MJ!!"#B(`!XJ"i!**!!(`!`S"i!+,!I!#ii!!!&Q"m !2+JI!!a8!!Eh3B)!$$J!!"#`(`!+J"m!"LJ!!!""JJ!JU"m!#L`!!!""JJ!8J(m !"ULI!!T)!!!"B!!!!%J!!!&J!!!!J!%!@$JK!&"m#!1QJq(rr)2"rrL$SIrd6S! !)%9e!*!&!J!!!*K&G3#3"3-!!!#J4@i-"!!!!,X!!!!-J!#3#i!!!-3B!!!!4AF !N!8e!*!%4@m&"!!!!,`!!!!Jrrrrp`!!$05UrJF!N!c"!!%!"!#3$%9f#J#3",d !!!!84@X!"!!!!,i!!!%!!!!"2!!!$B"m#!+QNq(rr*2"rrL6SIrdN!!"!!L8)Iq `1k-!!)2M!'Blh3!!U"d!%#`!TL&"JJ"B3)!!(#`!TKj"JJ"-3)!!5#`!TKT!J!" !5!!!2#`!!!""JJ!)5!!!-$J!!"#B(`!XJ"i!**!!(`!`S"i!+,!I!#ii!!!$Q"m !2$J!!!#3!"m!2NJ!!"3i!!!(Q"m!2+JH!"#3!"m!2UJI!!a8!!Fj3B)!%$J!!!L `(`!+5!!!$$J!!!#`(`!+J"m!"LJ!!!""JJ!JU"m!#L`!!!""JJ!8J(m!"ULI!!T )!!!"B!!!!%J!!!&J!!!!J!%!@$JK!&"m#!1QJq(rr)2"rrL$SIrd6S!!)%9e!*! &!J!!!04&G3#3"3-!!!$F4@i-"!!!!,m!!!!-J!#3#i!!!3!B!!!!4AF!N!@q!*! %4@m&"!!!!-!!!!!Jrrrrp`!!%(1UrJF!N!c"!!%!"!#3$%9f#J#3"-%!!!!84@X !"!!!!-)!!!#i!!!"XJ!!%4Ym#!+QNq(rr*2"rrL6SIrdNi(rm*!!!3!)P#(rX$Z $!!#$``"Q1l`!!+JF!"!X!!!!3))!$+2p!#L6rJ!BU"i!$&3!"rp!JJ!3U"i!$&3 !"le"JJ!31!!!),!H!!T)!!!-1!!!!,!H!!U!(J!'+!!!!%'#!##S(J!+,!!!!%' #!"5!IJ!'U*i!#NJ!!!&J!!!!5!!!!@!!!!#!!3"B1#%!8(`)!kD$iIrmJm(rq)1 Krr5$JIr`6S!!)%9e!*!&!J!!!)K&G3#3"3-!!!#3!%9Z$!3!!!$%!!!!$)!!N!Z !!!#i)!!!!%9h!*!&`J#3"%9["33!!!$&!!!!)2rrrrF!!"+SU[i(!*!-`3!"!!3 !N!a&GJS!N!6'!!!!&%9V!!3!!!$(!!!"5!!!!Li!!"0)I!J#TT2Krrb6`IriNk( rp*!!!3!)P#(rX$ZM!!#$i`"Q1pd!!+JG!"!X!+BH3B)!P%#!!$3X!+BD3B)!L%# !!"`X!+B)3B)!I%#!!(JX!+B%3B)!A%J!!'`X!+BF3B)!8%J!!'!X!+BM3B)!4%# !!"`X!+BK3B)!6%#!!%JX!+BJ3)!!,%J!!$`X!!!!3B)!#%J!!$!i!!!!J(i!*V! $!!!i!!!!N!!I!$j)!!!S1!!!!CJI!$`i!!!jN!!I!$j)!!!81!!!!CJI!$bS(J! 3N!!I!$kS(`!-9!!(rd##!"#S(`!-9!!([8'#!"!i!!!JX"m!#NJ!!!`i!!!!X"m !#S!I!!BS!!!!3B)!)+JI!!SX!!!!3B)!&)"r!!DSR`!+5!!!!@!!!!")!!!"B!! !!)!"!&Ji)3"3I!J$TS2Krrb$`IriJk(rp%k!!#"&G3#3"3)!!!%F4A8!N!8$!!! "*%9Z$!3!!!$)!!!!$)!!N!Z!!!&)'!!!!%9h!*!&a`#3"%9["33!!!$*!!!!)2r rrrF!!"CKU[i(!*!-`3!"!!3!N!a&GJS!N!6+!!!!&%9V!!3!!!$,!!!"N!!!!!+ X!!!A5R`)!UD6iIrmN!!"!!L8)Ip31q-!!%J!!!&J!!!!J!)!!*!!(`!#1!!!!CJ I!$`iB!!%5!!!!@!!!!#3!(m!3S"r!%+6i`!!J')!!%J!!!&J!!!!X'%!8$J!!"k `!3"51'"!!%J!!!&J!!!!N!"K!&Ji!%!!N!!"!&b!!J!!N!!"!'#!(`"#N!!"!'5 !!3"B+!!!!%##!"JiB!!h5!!!!@!!!!!iI`!!5!!!h$KK!$K)!!!"B!!!!(aJ"c3 X!+BL3B)!,%#!!"`X!+BI3B)!5%#!!&JX!+BE3B)!+%J!!%`X!!!!3B)!@%J!!%! iB!!h5!!!!@!!!!!iI`!!5!!!L$KJ!$G)!!!"B!!!!$Kr!!")!!"d1'!!'%J!!!& J!!!!1(m!!%J!!'!iB!!b5!!!!@!!!!!iI`!!5!!!6$J!!!+B(`!Y1!!!!*JI!#` i!!!!N!!I!$!i!!!!X"m!,MKr!$3iJ!!!1+!!#%J!!!&J!!!!1!!!!*!!(`!qJ!% !9*!!(`!11(m!!)!"!,Ji)3#`I!J$TS2Krra1J!!J4A8!N!A-!!!!&%9d!`#3"-d !!!!F4A8!N!A1!!!!-%9d!`#3"-m!!!"%4A8!N!A3!!!!5%9e!*!&d3!!!'"&G!- !N!3N!!!!G%9e!*!&dJ!!!*4&G3#3"G-!!!#S4A8!N!A5!!!!k%9e!*!&dJ!!!2a &G3#3"G)!!!%34A8!N!A5!!!"*%9e!*!&e!!!!@"&EJd#!!!!eJ!!!"D!!*!(#!! !0!&N!!S!!)D!!"m!N!T&GJS-!!!!e`!!!"*&EJ`%!!!!f!!!!!b!!*!0!C!!!*! %4AF!N!A,!*!%4AF0!*!%eJ!!!!K&D`!%!!!!f3!!!I!!!!-d!!!E4h`)!UD6iIr mNm(rq*!!!3!)P#(rN!!li`!!N!#"!)b!J3#-5!!!!@!!!!#!!J!!N!!I!!)mB'P Z1'0PG*!!B3"%J!)!!*!!!3"!1'!!"%J!!!&J!!!!N!"r!%+!I`"#Nq-!!$J!!!# 3!"m!2MKK!$K)!!!"B!!!!$aJFfNiJ3"%1+!!"$M"!%JiBfGZ5!!!!@!!!!!mB%P 12)"86MLK!%Ji`2rr11!!!$N"!&JiBd981)4'@8J!!!&J!!!!1'%!@$b!8e3mS'a [1-%!M$MJ!!3iK&*01+9ZCdJ!!!&J!!!!1'%!@$b!39-mS'a[1-%!3$MJ!!3iK&) J1+9ZCdJ!!!&J!!!!1'%!@$b!99-mS'a[10m!3MMJ!!3iK&*31+9ZCdJ!!!&J!!! !1'%!@$b!F(-mS("c1-%!1$MJ!!JiK'iJ1+9Z)%J!!!&J!!!!1'%!@$L"!&!iS!! $1-!!!6MJ!(Jj!!!!15!!!%J!!!&J!!!!1'%!8%J!!!&J!!!!1'%!@%J!!!&J!!! !1'%!5%J!!!&J!!!!1(m!!%J!!!&J!!!!1m-!!$J!!#L`!`!D5!!!!@!!!!#!(J! XN!!I!##J(J!`X"m!(MJ!!"#B(`!XJ"i!*T!!(`!`S"i!+V!I!#iiI`!!J!%!H$J K!("m#!1QJq(rr)2"rrK1J!!J4A8!N!AD!!!!)%9d!`#3"-d!!!!S4A3$!*!%*!! !!$a&G3#3"Fi!!!")4A8!N!AE!!!!D%9e!*!&h!!!!)4&G3#3"Gd!!!#X4A8!N!A H!!!!d%9e!*!&hJ!!!24&G3#3"Gi!!!%B4A8!N!AH!!!"2%9e!*!&h`!!!@"&G3# 3"H!!!!&X4A8!N!AJ!!!"H%9e!*!&i!!!!B4&G3#3"H%!!!'3!%9e!*!&d`!!!D4 &EJd#!!!!lJ!!!"D!!*!(%!!!6!'S!!S!!)D!!"m!N!T&GJS-!!!!e`!!!"*&EJ` %!!!!l`!!!!b!!*!0!I!!N!4&G`#3"GN!N!4&G`d!N!6Z!!!!#%9V!!3!!!$`!!! !k!!!"$B!!##RI!J#TT2Krrb6`IriN!!"!!L8)Ir!1q-!!$[%!!")!!!"B!!!!)! #!!#3!"m!!S!H!!k3!"m!$SJH!"+B(`!5L"i!%jJI!"1!(J!8N!!I!"5!(J!BN!! I!"L!IJ!FJ"i!)*!!I`!FN!!I!##!IJ!NJ"i!+*!!I`!NN!!I!#L!IJ!XJ"i!-*! !I`!XN!!I!$#!IJ!dJ"i!1*!!I`!dN!!I!$L)(J!mQ"m!2$J!!!#3!"m!2S!H!%+ 3!"m!3S"r!%+6i`!!1'!!"%J!!!&J!!!!N!"q!%+!IJ"#Nm-!!$Kr!!#!!3")1#% !3(`)!kD$iIrmJm(rq%k!!#"&G3#3"F`!!!!F4A3$!*!%c3!!!#4&G3#3"Fi!!!# i4@i0!J!!!2%!!!!@J!#3"a!!!,`![!!+!!#'J!!I!*!+4AB+$!!!!0F!!!!54@i -"!!!!2)!!!!-J!#3$ZJ!N!4&G`#3"I!!N!4&G`d!N!6a!!!!#%9V!!3!!!$c!!! $6!!!"'i!!#+5I!J#TVpKrqb3!!%!#*3Kri"mHaYjX)%!RS2L!!#$SJ!!3B)$&)! #!!#3!"X!!S!G!!#3!!%!@$J!!!#3!"d!!$Kl!!")!!!"B!!!!$[$!!!i!!!SX!- !'NJ!!!&J!!!!5!!!!@!!!!!X!`!!3))!,)!I!!!S!!!!3B)!-$KJ!!!iJ!!!JCm !!%J!!!&J!!!!,!-!!%'#!"3iB!!%5!!!!@!!!!")!!!-1!!!!*!!(3!!J"d!!#` !!!"!JJ!3S"i!1LJ!!!"!J[pm1(X!!%J!!!&J!!!!1m-!!$J!!!#3!!-!$$J!!#D `!`!D1!$r`*J$!#)i!!!mQ!-!)$J!!!'B!`!K5!!!!@!!!!")!!!"B!!!!#`$!!" !JJ!XJ"m!!#J!!!""JJ!`1'!!!$L!!!#"R`!!5!!!!@!!!!!X!`!!3B)!&$KJ!!4 )!!!"B!!!!%J!!"Ji!!!!N!!G!!#S(J!3,!!!!8'#rkLS(J!3,!#Q)%'#!&"!J!! J,!#Q(8'#!#a!J!!S,!#Q(%#!!$K)!!!F5!!!'#`!!!""JJ!S3)!!$#`!TL0"JJ! FJ"d!!#`!!!"!JJ&NJ!%!@*!!(3!!5!!"@+JH!"!X!!!!3))!l$Kl!!")!!!"B!! !!$[$!!!lJ!!!5!!!c$J!!!#3!"i!$$J!!#1`(J!D1!!!!CJH!#!i!3!iN!!H!#S i!!!%X"i!,MKq!!")!!!"B!!!!%J!!!&J!!!!,!-!!%##!#b!(`!!+!!!!%'#!$! iB!!!1)!!!)'I!!")!!!"B!!!!#`$!!""JJ!81'!!"%J!!!&J!!!!5!!!'$J!!!# 3!"d!!+JH!"!X!!!"3B,rU+JH!"!X!!!!3))!1$J!!#5`(J!D1!%!1*!!(J!U1(i !!%J!!!&J!!!!J"d!!#`!!!"!JJ!31j`!!5`F!!K"J2md1!!!+V!H!"SiIJ!!5!! !!@!!!!"mB!Fe3B)!()!G!!!X!!!!3))!2)!"!&L3!"d!!%J!!$#!IJ!J5!!!!@! !!!#!H`"#5!!!!@!!!!#!(3!!,!!!!%##!!b!!3"BN!!G!!!iH`!!1)!!!%J!!!& J!!!!U!%!RL`!!!"!J3!31(X!!%J!!!&J!!!!1(X!!)!"!)Ji)3#!I!J$TVYKrqa 1J!!J4A3$!*!%p!!!!"K&G!-!N!6e!!!!(%9d!`#3"-d!!!!N4A8!N!AK!!!!3%9 e!*!&d`!!!&4&G3#3"IB!!!"F4A8!N!Ah!!!!K%9e!*!&dJ!!!*K&G3#3"H%!!!$ )4A8!N!Ai!!!!r%9e!*!&pJ!!!34&G3#3"IF!!!%X4A8!N!A5!!!"3%9e!*!&i3! !!FK&G3#3"IJ!!!))4A8!N!Af!!!#%%9e!*!&p`!!!MK&G3#3"G)!!!*-4A8!N!A 6!!!#M%9e!*!&d`!!!VK&G3#3"IN!!!,N4A8!N!Ak!!!#m%9e!*!&q`!!!a4&G3# 3"IS!!!-X4@i0!J!!!33!!!!5J!#3"bJ!!%3#p!!+!!##!!"B!*!'4AB+$!!!!38 !!!!14@i-"!!!!3B!!!!-J!#3$30-!*!%4AF!N!Ac!*!%4AF0!!!!!33!!!!)4@X !K!!!!3F!!!"SJ!#3"h`)!UD6iIrmN!!"!!L8)Ir!I(mEHE#"!&j"JJ!iJ')!!)! $!!!X!!!!3))!%)!I!!#!BJ!!N!!$!!#S!3"H,!!!!%#"!"!iI`!!5!!!!@!!!!! iI`!!J!%!5$JK!%"m#!1QJq(rr%k!!#"&G!-!N!6e!!!!(%9d!`#3"28!!!!`4A8 !N!Ak!!!!5%9Z$!3!!!%)!!!!$)!!N!Z!!!"S#!!!!%9h!*!%!3F!N!4&D`!%!!! !i3!!!'!!!!@)!!!T8h`)!UD6iIrmNm(rq*!!!3!)P#(r`$[$!!#!BJ!!5!!!!@! !!!!li`!!J')!!%J!!!&J!!!!X(m!')!H!!k3!"m!(*2I!'BiI`!!J!%!5$JK!%" m#!1QJq(rr)2"rrK1J!!J4A3$!*!%c`!!!"K&G3#3"!%*!!!!(%9d!`#3"-m!!!! S4A8!N!A3!!!!,%9Z$!3!!!%+!!!!$)!!N!Z!!!"J%!!!!%9h!*!&i3#3"%9V!!3 !!!%,!!!!@!!!"FJ!!#SAI!J#TT2Krrb3!!%!#*3Krm#3!'%!@)"K!&K)!!!"1q- !!$J!!#L`!`!D5!!!!@!!!!"mB!Fe3B)!$$KJ!!")!!!)S(m!2)!"!%Ji)3"!I!J $TS2Krra1J!!J4A8!N!AK!!!!'%9e!*!&d`!!!#K&EJ`%!!!"$!!!!!b!!*!,J!! !@!J!!!"&G`#3"!%,!*!%4@X!"!!!!3d!!!+d!!!''!!!,50m#!+Q[Z(rh*!!!3! )P#(rN!!lJ`!!N!#"!)b3!+%!N!#$SJ!!Jq)!!)0K!)b!!3#3!#`!!"""JJ!81'! !&NJ!!!&J!!!!5!!#B)JE!!%S!!!#3B)!&$KJ!#p)!!!"B!!!!%J!!N5)(!!m+!! !"%##!$#!(!!q,!!!!%'#!"3iB!!p5!!!!@!!!!")!!)F1'!!*8J!!!&J!!!!5!! #$)JF!$`S!!!"3B)!&$KJ!$K)!!!"B!!!!%J!!I!i!!!%Q"`!2$Km!!")!!!"1m- !!)!#!!#3!!-!$$J!!##`!`!D1!$r`*J$!#)i!!!mQ!-!)$J!!!'B!`!K1!!!!*J $!#1!H`!%2!1"!#J!!!&!JJ!35!!!!@!!!!")!!!)J(X!"*!!IJ!NS"X!!V!H!#J i!!!!N!!H!#UJ(!!HX"i!,MJ!!!#B(J!b1!!!!*JH!$-i!!!!Q"i!0$J!!!#B(J! e1(i!!%J!!!&J!!!!1d-!!(p!"c9"JJ!F1!!!!CJF!$ar3`Fd5!!!!@!!!!")!!% JL"`!%bJ!!!""JJ!81'!!*%J!!!&J!!!!5!!"")!I!!#3!!%!1$J!!!#3!"m!!%J !!!&J!!!!,!-!!%##!#b!(3!!+!!!!%'#!$!iB!!!1)!!!)'G!!")!!!"B!!!!#` $!!""JJ!81'!!"%J!!!&J!!!!5!!!'$J!!!#3!"m!!+JH!"!X!!!"3B,rU)!I!!! X!!!!3))!%+JH!"!X!!!!3B)!C$J!!!'B(!!mJ"m!!#`!!!""JJ!N1b$rri!I!!! X!!!!3))!$)!"!$L3!"m!!$Kj!!")!!"-U(i!%%J!!!&J!!!!1`-!!)!I!!!X!!! !3))!$)!"!$L3!"m!!$Ki!!")!!!J1Z!!!)!I!!!X!!!!3))!$)!"!$L3!"m!!$K h!!#!!3"i1#%!F(`)!kDkiIrF6S!!)%9d!`#3"23!!!!F4A3$!*!%p3!!!#"&G3# 3"G)!!!!i4A8!N!A5!!!!9%9e!*!&dJ!!!(a&G3#3"G)!!!#-4A8!N!A5!!!!U%9 e!*!&i3!!!-"&G!-!N!5m!!!!b%9e!*!%!3i!!!%)4A8!N!Ai!!!"@%9e!*!%!3m !!!&i4A8!N!A5!!!"P%9e!*!&pJ!!!E"&G3#3"IF!!!(B4A8!N!A5!!!"l%9e!*! %!3m!!!*F4@i0!J!!!43!!!!5J!#3"dJ!!E3#B!!+!!##!!!i!*!'4AB+$!!!!38 !!!!14@i-"!!!!48!!!!-J!#3$3+d!*!%4AF!N!3"$3#3"%9h$3!!!!%8!!!!#%9 V!!3!!!%@!!!"p!!!"dB!!$2hI!J#TVmKrq53!!%!#*3Krk!lJ`!!Jq)!!)2#!!# )!`!m+!!!!8'#!"3iB!!i5!!!!@!!!!")!!'X1!!!!TJF!$`iI!!!5!!!!6ZM!!# !BJ!!5!!!!@!!!!#`I3!BJ!)!!*!!(3!-1!!!(l!G!"Si!2r!Q"d!)MJ!rrqB(3! J1!!!!*JG!#%i!!!!Q"d!)cJ!!!#3!"d!*$J!!!#`(3!S1!!!!*!!(3!US"`!(V! G!#ii!!!!Q"d!-MJ!!!#B(3!c1!!!!*JG!$3i!!!!Q"d!06Kp!!")!!!"B!!!!$Y M!!"rB!Fe3B)!($J!!!'B(!!mIf-(0%J!!!&J!!!!5!!!k)!H!!#3!!%!1$J!!!# 3!"i!!%J!!!&J!!!!,!-!!%##!#b!(`!!+!!!!%'#!$!iB!!!1)!!!)'I!!")!!! "B!!!!#`$!!""JJ!81'!!"%J!!!&J!!!!5!!!'$J!!!#3!"i!!+!G!#iS!!!!3B, rU)!H!!!X!!!%3B,rR)!H!!!X!!!!3B)!1)!H!!!X!!!%3B)!,$J!!!'B(!!m1d$ rri!H!!!X!!!!3))!$)!"!$L3!"i!!$Kk!!")!!!`J"d!+T!!(!!JS"d!,V!F!"i l)!!!J"i!!#`!!!"!JJ!-J!%!1*!!(J!!1(N!!)!"!'Ji)3"JI!J$TVXKrq41J!! J4A3$!*!%p!!!!"4&G!-!N!6e!!!!'%9e!*!&dJ!!!#a&G3#3"H%!!!"%4A3$!*! %c`!!!%a&G3#3"G!!!!"34A3$!*!%`!!!!&a&G3#3"IJ!!!$34A8!N!3"$`!!!2" &G3#3"IB!!!%-4A8!N!Ah!!!"0%9e!*!&dJ!!!8K&EJd#!!!"&`!!!"+!!*!(1!! "%!&-!!S!!))!!$J!N!C&GJS-!!!""3!!!!j&EJ`%!!!"'!!!!!b!!*!0!I3!N!4 &G`#3"!%@!*!%4AF0!!!!!4F!!!!)4@X!"!!!!4N!!!0`!!!)#J!!194m#!+Q[d( rk*!!!3!)P#(rX$[M!!#3!)%!E$Y&!!#$`J!!L!-!2#J!!!&!JJ!mJ"m!2L`!!!" "JJ!JJ(m!2NJ!!!&J!!!!1!!!!*!!(`!q1'!!!%J!!``iB!!j5!!!!@!!!!")!!, mL"m!2#J!!!*"JJ!XL"m!2#J!!!0"JJ!JL"m!2#J!!!G"JJ!81'!!18J!!!&J!!! !5!!#b)JI!$`S!!!#3))!V)JI!"-S!!!!3B)!&$KJ!!Y)!!!"B!!!!%J!!U")!!! "B!!!!#`$!!"!JJ!XJ"i!!#J!!!""JJ!d1'!!!$L!!!#"RJ!!5!!!!@!!!!!X!`! !3B)!'$KJ!!4)!!!"B!!!!$KJ!!")!!*8L"m!2#J!!!*"J[qXL"m!2#J!!!0"JJ! XL"m!2#J!!!G"JJ!JJ(m!2NJ!!!&J!!!!1!!!!*!!(`!q1'!!!%J!!K5)(`!m+!! !!d##!!`i!!!&5!!!#$J!!!'B(`!m1'!!4NJ!!!&J!!!!I(XEH8'#!"!iH`!!1*m !!%J!!!&rI0Yj3))!C$Kr!!")!!!"1!!!*l!$!"T)!!!"B!!!!$J!!!'B(`!m1(m !!$L!!!@"R`!#JB`!%%J!!!&J!!!!,!-!!%#!!"3i!!!"Q"m!2$KJ!!")!!'!1'! !$%J!!!&J!!!!5!!"F$J!!!'B(`!m1(m!!%J!!!%lS`!!1!!!(V!$!"SiB%!!5!! !!@!!!!#3!(d!)$J!3!#3!"d!*)!#!!#3!"d!+)!I!%+3!"d!,)!G!#!S!!!!3)) !&$KJ!$G)!!!"B!!!!%J!!4!iI3!!5!!!!@!!!!"mB!Fd,!#Q)N'#!#a!J!!F,!# Q(d'#!%"!J!"-,!#Q'd'#!#4)!!"!,!!!!%'#!%K)!!!d1'!!0dJ!!!&J!!!!5!! !`$KJ!$G)!!!"B!!!!%J!!,!iB!!B5!!!!@!!!!")!!#J1'!!-NJ!!!&J!!!!5!! !N!!i!!!#Q"m!,6J!!!#B(`!X1!!!!*!!(`!`1!!!!,!I!#iiI`!d1)!!!$LJ!!K )!!!"B!!!!$J!!!#3!"m!2S!G!"b3!"m!$MKr!!!iJ!!&JCm!!S'-!"")!!!"B!! !!)"K!'`iR!!XJ"S!!#`!!""!J!!-J,S!!%J!!!JiS!!3N!#k!!")!!!"B!!!!$K m!!#!!3"B1#%!8(`)!kDl3IrS6S!!)%9d!`#3"23!!!!F4A8!N!3"$`!!!$a&G3# 3"!%D!!!!@%9e!*!%!4S!!!#-4A8!N!3"'J!!!,4&G3#3"IB!!!$!4A8!N!Ah!!! !k%9e!*!&dJ!!!2a&G3#3"!%2!!!"0%9e!*!&cJ!!!@a&G3#3"I!!!!'%4A8!N!A K!!!"P%9e!*!&d`!!!D"&G3#3"IF!!!(!4A8!N!3"'J!!!H4&G3#3"H%!!!(m4A8 !N!A4!!!#%%9d!`#3"#3!!!)N4A8!N!3"'J!!!N4&G3#3"G-!!!*84A8!N!3"'J! !!T4&G3#3"!%D!!!#T%9e!*!%!4S!!!+d4A8!N!3"'J!!!X4&G3#3"G3!!!,m4A8 !N!Ah!!!$*%9e!*!%!4X!!!034@i0!J!!!4i!!!!5J!#3"c!!!BJ"L!!+!!#+J!! E!*!'4AB+$!!!!4m!!!!14@i-"!!!!5!!!!!-J!#3$30`!*!%4AF!N!3"'3#3"%9 h$3!!!!%H!!!!#%9V!!3!!!%K!!!#r!!!#93!!%M4I!J#TVp"rqL3!!%!#*3Krl! l``!!N!#"!'`lK3!!I2SlHC%"!(b$iJ!!3B)!)$Kq!!!iQJ!!J+%!I)'H!!+"M!! X5!!!!@!!!!#)(J!59!!([8'#!"3iB!!k5!!!!@!!!!")!!+)L"i!2#J!!!4!JJ" dL"i!%bJ!!!""JJ!81'!!#dJ!!!&J!!!!5!!#B%J!!!&J!!!!,!-!!%##!#b!(`! !+!!!!%'#!$!iB!!!1)!!!)'I!!")!!!"B!!!!#`$!!""JJ!81'!!"%J!!!&J!!! !5!!#')JH!$`S!!!%3B,rX)JH!$`S!!!&3B)!D)JH!$`S!!!'3))!$$KJ!!")!!( XL"i!2#J!!!&!JJ!iJ"i!2L`!!!""JJ!XJ"i!2L`!!!&"JJ!JJ(i!2NJ!!!&J!!! !1!!!!*!!(J!q1'$rrdJ!!D`iB!!j5!!!!@!!!!")!!'F1(i!!)'H!!+"M!"N5!! !!@!!!!!lB`!!L"i!%bJ!!!""JJ!F+"X!!%##!"3iB!!,5!!!!@!!!!")!!&JJ!% !E*!!(J!81!!!!*!!(J!B1!!!!C!!(J!q1(i!!%J!!!%lS`!!J!)!!*!!!`!-1!! !*E!$!"Si!!!!Q!-!))!H!"53!!-!*$aJ!!%iBrrrI"`B!%#!!!`iI!!!5!!!$$a J!!%iBrrrX(d!+$Kp!!")!!!"B!!!!%J!!!&J!!!!,!-!!%##!#b!(`!!+!!!!%' #!$!iB!!%1*`!!)'I!!")!!!"B!!!!#`$!!""JJ!81'!!"%J!!!&J!!!!5!!!T+J G!"!X!!!"3B,rX+JG!"!X!+BB3))!$$J!!!#`(3!3U"d!%#`!TKp"JJ"X3)!!,#` !TKY"JJ"J3)!!%#`!TKK"JJ"85!!!8#`!TKe"JJ")3)!!4%J!!$JX!+BM3B)!-%# !!"!X!+BK3B)!,%J!!#JX!!!!3B)!#%J!!"`i!!!!N!!H!$k!IJ!B5!!!')"q!"K )!!!3U(d!%%J!!!&J!!!!J!%!@$JK!&"m#!1QZd(rk%k!!#"&G!-!N!6d!!!!*%9 e!*!&p`!!!%"&G3#3"G)!!!"B4A8!N!A5!!!!J%9e!*!&pJ!!!)a&G3#3"IF!!!# d4A8!N!A5!!!!b%9e!*!%!3m!!!%S4A8!N!A5!!!"4%9e!*!&p`!!!9a&G3#3"G) !!!'!4A8!N!AK!!!"U%9d!`#3"-8!!!'`4A8!N!Ai!!!"q%9e!*!&pJ!!!J"&G3# 3"IF!!!)S4A8!N!A5!!!#2%9e!*!%!3m!!!,J4@i-"!!!!58!!!!-J!#3#i!!![` `!!!!4AF!N!3")3#3"%9V!!3!!!%Q!!!%&!!!#TS!!&A1I!J#TVkKrp53!!%!#*3 Krh!l3`!!1`3!!$[&!!!kTJ!!N!$K!,L#`J!!Jq)!!)J$!"*8!!Gl3B)!&$KJ!$T )!!!"B!!!!%J!!lb!!3#i+!!!!%'#!"3iB!!Y5!!!!@!!!!")!!1JL"S!2#J!!!9 "JJ!JL"S!2#J!!!4"JJ!81'!!18J!!!&J!!!!5!!$H)JD!$`S!!!%3))!G)JD!"- S!!!!3B)!&$KJ!#9)!!!"B!!!!%J!!e")!!!"B!!!!#`$!!"!JJ!XJ"m!!#J!!!" "JJ!`1'!!!$L!!!#"R`!!5!!!!@!!!!!X!`!!3B)!&$KJ!!4)!!!"B!!!!%J!!`L )'J!m+!!!"%'#rl#)'J!m+!!!"8'#!%L)'J!m+!!!!8##!#b!'J!q,!!!!%'#!## !HJ!q5!!!!@!!!!!i!!!!N!!D!$iiB2rr5!!#[$KJ!$P)!!!"B!!!!%J!!U`iHJ! !5!!!!6YM!!!i!!!SX!-!'NJ!!!&J!!!!I'!(08'#!!`ki!!!5!!!'+"l!$UJ'`! fIZ-!88#!!!Jki!!!L"S!%bJ!!!""JJ!S,"F!!%##!"3iB!!,5!!!!@!!!!")!!* )I"I`!%#!!!Jle`!!1[i!!$KK!$JiJ!!!1+!!)%J!!!&J!!!!1k%!1$Z!!!")!!' FJ"S!2L`!!!""JJ!JJ(S!2NJ!!!&J!!!!1!!!!*!!'J!q1'$rrdJ!!I!mB!!"1'2 rrh`H'!"!J!!-1ci!!%J!!)3r)!!"1cRrrdJ!!(KrJ`Fd1!-!!A`F&R"rR!'89j` 31RqF!""rJ!Fe3B)!$$Zp!!K)!!!)1k%!1%J!!!&J!!!!,!-!!%##!#b!(`!!+!! !!%'#!$!iB!!&1*i!!)'I!!")!!!"B!!!!#`$!!""JJ!81'!!"%J!!!&J!!!!5!! "@+!G!!!S!!!!3),rK,-p!!#6(3!#1(S!!%J!!!%lB`!!NX-!$$J!!#+`!`!D1!$ r`*J$!#)i!!!mQ!-!)$J!!!'B!`!K2+!!!9I%$riiTIrrI+2qF(`H+""m!b%8Q"X !)eDJ"rkB'`!NNlX!*MJ!!!#3!"X!+MJ!!!#`'`!Z1(X!!%J!!!&J!!!!5!!!!@! !!!!X!`!!3))!,)!I!!!S!!!!3B)!-$KJ!!8iRJ!!JCm!!%J!!!&J!!!!,!-!!%' #!"3iB!!%5!!!!@!!!!")!!#)IpR`8(mBbK3X(J!!3B(qC%J!!!&J!!!!,!-!!%# #!#b!(`!!+!!!!%'#!$!iB!!&1)!!!)'I!!")!!!"B!!!!#`$!!""JJ!81'!!"%J !!!&J!!!!5!!!-+JE!"!X!!!"3B,rX+JE!"!X!!!!3))!$$Kh!!")!!!3U(X!%%J !!!&J!!!!J!%!Q$JK!*!!I!J$TVUKrp41J!!J4A3$!*!%b3!!!#4&G!-!N!6d!!! !+%9e!*!&dJ!!!$a&G3#3"G)!!!"B4A8!N!A5!!!!J%9e!*!&dJ!!!+K&G3#3"IB !!!#d4A8!N!Ah!!!!h%9e!*!&dJ!!!2"&G3#3"!%2!!!"-%9e!*!&dJ!!!8a&G3# 3"H%!!!&F4A8!N!A6!!!"E%9e!*!&dJ!!!E"&G3#3"G3!!!(B4A8!N!A5!!!"r%9 e!*!&pJ!!!Q4&G3#3"IF!!!+-4A8!N!A5!!!#S%9e!*!&i3!!!X4&G3#3"IJ!!!- X4A8!N!Af!!!$0%9e!*!&p`!!!ea&G3#3"G)!!!0`4A8!N!Af!!!$M%9e!*!&p`! !!l4&G3#3"G)!!!2)4A8!N!3"$`!!!rK&EJ`%!!!"-3!!!!b!!*!,J!!%&&J!!!" &G`#3"!%Q!*!%4@X!"!!!!6)!!!$F!!!-U!!!B3Pm#!+QNq(rr*2"rrL6SIrdNi( rm*!!!3!)P#(rX$ZM!!"mRL0j1i8!!$[J!!""JJ"XL"d!2#J!!!G"J3"JJ')!!&3 !%$TmB`!ZI'N$TNk!"#!i!!!"Q"i!!$[r!!&)!!!m1(d!!)'G!!+"M!"N5!!!!@! !!!!S!`!!3B)!)$J!!!'B(J!!1rm!!8J!!"!i!!!"Q"i!!$[r!!%S(!!!3B)!()J G!$`X!!!%3B)!%$J!!!'B(!!!1rm!!6Kr!!#!!3"B1#%!8(`)!kD$iIrmJm(rq)1 Krr5$JIr`6S!!)%9d!`!!!!%c!!!!2%9e!*!&p`!!!'a&EJ8%!!!"-`!!!##!!*! +Q!!!!)`!!!#B!!!!8!!!!*J!!!"J!!!!M!!!!&"&GJ#3"!%b!*!%4AB!N!3"-J! !!!4&GJ#3"!%b!!!!#%9f!*!%!6)!!!!-4AB!N!3"-J!!!""&GJ#3"!%b!!!!&%9 f!*!%!6)!!!!B4AB!N!3"-J!!!"a&EJ`%!!!"0`!!!!b!!*!,J!!!h#!!!!"&G`# 3"!%b!*!%4@i&!3!!!6J!!!!+rrrraJ!!B3P83e"6Ef0VCA3!"2*&EJ8"!!!"13! !!!Irrrr&!!"K#90[BfYPG!$(4@i&"!!!!6S!!!!)rrrra!!!B3N!N!K&GJ8!!!! "13#3"%9Z"3%!!!%l!!!!#rrrrm-!!'%*58j&9&0[BfYPG!!i4@i&"!!!!6`!!!! -rrrr`J!!B3N!N!a&GJ8!!!!"1J#3"%9Z"33!!!%p!!!!#2rrrm%!!'%*!*!)4AB &!!!!!6X!N!4&GJ8!!!!"2!!!!!4&EJ8%!!!"2J!!!"6rrrr!!!"K#3#3&%9f"3! !!!%p!!!!#%9f"3!!!!%k!*!%4@i&"!!!!6m!!!!)rrrr[`!!B3N!N!K&GJ8!!!! "1!#3"%9f"3!!!!%q!!!!"%9["33!!!$0!!!!D2rrrli!!'%*!*"S4AB&!!!!!6m !N!4&GJS!!!!"3!!!!&a&GJS!!!!"33!!!&4&GJS!!!!"3J!!!%a&GJS!!!!"3`! !!%K&GJS!!!!"4!!!!%4&GJS!!!!"43!!!%"&GJS!!!!"4J!!!$4&GJS!!!!"4`! !!$"&GJS!!!!"5!!!!"a&GJS!!!!"53!!!"K&GJS!!!!"5J!!!&"&GJS!!!!"5`! !!$a&GJS!!!!"6!!!!$K&GJS!!!!"63!!!#a&GJS!!!!"6J!!!#K&GJS!!!!"6`! !!!K&GJS!!!!"8!!!!&K&GJS!!!!"83!!!#4&GJS!!!!"8J!!!#"&GJS!!!!"8`! !!"4&GJS!!!!"9!!!!""&GJS!!!!"93!!!!a&GJS!!!!"9J!!!'4&GJS!!!!"9`! !!'"&E`S%!!!"8!!!!!L!!*!24AB!N!3"-J#3"%9f$`!!!!&B!!!!"%9[#J3!!!& 4!!!!#)!!N!p&GJ#3"!%Q!*!%4AB2!!!!!9J!!!!%4@m+"!!!!9)!!!!)J!#3$d9 f!*!%!5%!N!4&GJm!!!!"@!!!!!4&E`S%!!!"8`!!!!L!!*!24AB!N!3"'3#3"%9 f$`!!!!&B!!!!"%9[#J3!!!&8!!!!#)!!N!p&GJ#3"!%@!*!%4AB2!!!!!9J!!!! %4@m+"!!!!98!!!!)J!#3$d9f!*!%!3d!N!4&GJm!!!!"@!!!!!4&E`S%!!!"9J! !!!L!!*!24AB!N!3"#`#3"%9f$`!!!!&B!!!!"%9[#J3!!!&C!!!!#)!!N!p&GJ# 3"H%!N!4&GJm!!!!"@!!!!!4&E`U%!!!""3!!!!L!!*!24AB!N!3""`#3"%9f$`! !!!&B!!!!"%9[#J3!!!&A!!!!#)!!N!p&GJ#3"I-!N!4&GJm!!!!"@!!!!!4&E`S %!!!"@J!!!!L!!*!24AB!N!A`!*!%4AB2!!!!!9J!!!!%4@m+"!!!!9X!!!!)J!# 3$d9f!*!&f3#3"%9f$`!!!!&B!!!!"%9[#J3!!!&F!!!!#)!!N!p&GJ#3"FX!N!4 &GJm!!!!"@!!!!!4&E`S%!!!!bJ!!!!L!!*!24AB!N!A(!*!%4AB2!!!!!9J!!!! %4@m+"!!!!-B!!!!)J!#3$d9f!*!&`J#3"%9f$`!!!!&B!!!!"%9[#J3!!!$"!!! !#)!!N!p&GJ#3"Ei!N!4&GJm!!!!"@!!!!!4&E`S%!!!![3!!!!L!!*!24AB!N!8 e!*!%4AB2!!!!!9J!!!!%4@m+"!!!!$3!!!!)J!#3$d9f!*!&!3#3"%9f$`!!!!& B!!!!"%9Z!`3!!!%c!!!!")!!N!Y&GJ8!!!!"-`#3"%9[!`3!!!$*!!!!")!!N!Y &GJ8!N!6*!*!%4@m$"!!!!-8!!!!%J!#3#d9f"3#3"-8!N!4&E`-%!!!!`!!!!!5 !!*!,4AB&!*!%`!#3"%9[!`3!!!#m!!!!")!!N!Y&GJ8!N!5m!*!%4@m$"!!!!23 !!!!%J!#3#d9f"3#3"23!N!4&E`-%!!!!p3!!!!5!!*!,4AB&!*!%p3#3"%9[!`3 !!!!N!!!!")!!N!Y&GJ8!N!3N!*!%4@m$"!!!!-m!!!!%J!#3#d9f"3#3"-m!N!4 &E`-%!!!!c3!!!!5!!*!,4AB&!*!%c3#3"%9[$`3!!!&B!*!%J!#3"d9S!!"6@8e )!!!00!!!!%)!!!!'!*!B"X8!!!"3!!!(1!!!!&`!!!GH!!!!C!!!"hX!!!"m!!! (cJ!!!)J!!!Ip!!!!P!!!#%!!!!#J!!!)CJ!!!+J!!!L$!!!!Y!!!#,!!!!$-!!! *"!!!!0J!!!Ne!!!!j!!!#Ai!!!$`!!!*T!!!!2J!!!R-!!!"+!!!#G[rN!3!!!R E!!-!!!!%!!!!#J%$!!!!AJ!!!!8!!!"Q!3-!!!"J!!!!"[q3"!#3"4m!N!J+T3! !!$3!!!XI!!!!C!!!$'S!!!"`!!!-NJ!!!(J!!!b`!!!!U!!!$,rrN!3!!!br!!- !!!!frrrrm`%!N!3G!!!!1Irrrp%!N!8H!!!!"[q3"!#3"4m!N!J0TJ!!!&J!!!i F!!!!K!!!$im!!!#8!!!2l!!!!+!!!"!6!!!!V!!!%$F!!!#d!!!36`!!!13!!"" Hrj!%!!!3AJ!$!!!!0[rrrr-"!*!%(3!!!$Rrrrr4!*!&(J!!!!ErN!3!N!8I!*! )%6m!!!!d!!!4[`!!!$`!!")(!!!!9!!!%N`!!!"J!!!5E`!!!'J!!"+%!!!!Q!! !%T2rN!3!!"+6!!3!!!!frrrrm`%!N!3F!!!!``!!!!-!N!8I!!!!1Irrrp%!N!8 G!!!!"[q3"!#3"4i!N!J6E!!!!*3!!"2M!!!!V!!!&,S!!!$!!!!9D3!!!0!!!"A !!!!!k!!!&J8!!!$d!!!@+!!!!2`!!"Bp!!!",!!!&NcrN!3!!"C-!!-!!!!frrr rm`%!N!3G!!!!1Irrrp%!N!8H!!!!"[q3"!#3"4m!!3#3"KGL!!!!-!!!&k8!!!" )!!!Ad`!!!'!!!"JH!!!!N!!!!"NR!!!!T!!!'8d!!!$N!!!C[!!!!2J!!"Rj!!! "$!!!'MB!!!%J!!!DCJ!!!63!!"U+!!!"B!!!'a(rN!3!!"Y%!!)!!!$9rj!%!3# 3""m!!!!frrrrm!!$!!!!1!!"!*!''fm!!!")!!!F+!!!!'J!!"aP!!!!K!!!((m !!!#X!!!Fc`!!!0!!!"dj!!!!p!!!(B`!!!%B!!!Gi3!!!6`!!"i`!!!"B!!!(UF !!!&X!!!Hp!!!!AJ!!"m1!!!"K!!!(bN!!!'3!!!!(eF!!!'N!!!IK2q3"!!!)+3 !#3!!!0ArN!3"!*!%(`!!!"%!!!!#!3-!!!#-!!!!0[rrrp%!N!8H!!!!i[rrrp! !!`!!!$J!!!$Qrrrrp!!$!!!!3!!!!1F!!!!$!!-!!!"%!!!!k2rrrmm!!`!!!%J !!!$Xrrrrc`!$!!!!8!!!!1hrrrr2!!-!!!"B!!%!N!BJcJ!!!,J!!#*Erj!%!!! LM`!#!!!!eIq3"!%!N!3I!!!!"[q3"!%!N!3H!!%!N!BLUJ!!!$`!!#,E!!!!9!! !)``!!!"F!!!M53!!!+`!!#0-!!!!a!!!)iN!!!$m!!!NS!!!!33!!#6a!!!"B!! !*38!!!'J!!!PT`!!!E3!!#@b!!!"Z!!!*Em!!!(%!!!Q*3!!!G`!!#Ca!!!##!! !*h)!!!)3!!!Rb3!!!Q`!!#I5!!!#H!!!*r-!!!+-!!!S9!!!!U!!!#L2!!!#V!! !+,!!!!+i!!!Sc!!!!Y`!!#Ma!!!#i!!!+2X!!!,X!!!T3rq3"!!!+9!!"3!!!0A rN!3"!*!%'`!!!2`!!!!$!*!&(!!!!2hrrrr1!!-!!!!i!!!"!Irrrm`!!`!!!&J !!!!frrrrd3#3"4i!!3#3"LP`!!!!(!!!+A-!!!!X!!!TRIq3"!!!+K3!!J!!!0A rN!3"!*!%(J!!!$Errrrc!*!&(`!"!*!'+M8!!!!B!!!U5!!!!#J!!#Te!!!!1!! !+TS!!!"!!!!UV2q3"!!!+Y8!!J!!!0ArN!3"!`!!!&J!!!!frrrrd3#3"4m!!3# 3"LeA!!!!0!!!,Hd!!!"%!!!Z#J!!!&!!!#iY!!!!B!!!,RS!!!"X!!!ZS3!!!(J !!#kb!!!!L!!!,Yd!!!#B!!!Zq`!!!+3!!#mM!!!!Y!!!,d%!!!$!!!![B`!!!9J !!$)f!!!"E!!!-Q8!!!&i!!!bL!!!!B3!!$+N!!!"N!!!!$+h!!!"S!!!-bB!!!' `!!!c9`!!!J`!!$0E!!!#*!!!-hS!!!)i!!!cVJ!!!PJ!!$2$!!!#K!!!-qVrN!3 !!$2d!!F!!!$9rj!%!3#3""`!!!%3!!!!C!%$!!!!M!!!!4%!!!!$!3-!!!#3!!! !!3(rrrr-!!-!!!!i!!!!0[rrrp%!N!8H!!!"%[rrrmX!N!8E!!!"%`!!!!X!N!8 D!!%!N!Bd%J!!!#J!!$4E!!!!1!!!0(N!!!"%!!!dT!!!!&!!!$5r!!!!d!!!0iJ !!!$N!!!hYJ!!!2!!!$IF!!!!r!!!1!d!!!%-!!!iE3!!!@J!!$K`!!!"G!!!1)i !!!'-!!!iV`!!!D3!!$M9!!!"Y!!!118!!!(8!!!j4rq3"!!!19%!"!!!!0ArN!3 "!*!%(!!!!3(rrrr-!!-!!!!i!!!!0[rrrp%!N!8G!!!"%`!!!!X!N!8E!!%!N!B jL3!!!#`!!$RC!!!!1!!!1H`!!!"8!!!k,J!!!'3!!$TF!!!!L!!!1X3!!!#B!!! kmJ!!!+3!!$XD!!!!X!!!1bi!!!$!!!!l[J!!!4J!!$[Z!!!"-!!!2$F!!!&-!!! p0!!!!@`!!$f2!!!"N!!!!$hN!!!"S!!!2K3!!!(!!!!qM3!!!G!!!$kR!!!"i!! !2[B!!!(`!!!rQ3!!!I`!!$qm!!!#%!!!2rB!!!*!!!""!J!!!P!!!%%[!!!#N!! !!%'G!!!#S!!!3HF!!!+`!!"#-3!!!X!!!%*Y!!!#d!!!3Ti!!!,m!!"$)3!!!b3 !!%1$rj!%!!"%'`!&!!!!eIq3"!%!N!3I!!!"(!!!!'3"!`!!!'`!!!%GrrrrbJ% !N!3D!!!!0[rrrp%!N!8G!!!!"[q3"!#3"4`!!3#3"NNP!!!!,!!!59J!!!")!!" *G3!!!&3!!%QB!!!!C!!!5H8!!!"`!!"+$`!!!(`!!%SM!!!!M!!!5TX!!!$J!!" +`3!!!1`!!%VY!!!!q!!!5a)!!!%!!!",93!!!53!!%ZN!!!"3!!!6!8!!!&3!!" -*`!!!A3!!%a#!!!"I!!!6'-!!!'-!!"-K`!!!DJ!!%c*!!!"q!!!6J!!!!)!!!" 1cJ!!!P3!!%l5!!!#B!!!6[J!!!*S!!"2%!!!!X3!!%mj!!!#e!!!6jJ!!!,F!!" 3CIq3"!!!8)J!"`!!!0ArN!3"!*!%(J!!!5)!!!"N!3-!!!"X!!!")`!!!!-"!*! %(!!!!4`!!!"N!3#3""S!!!%GrrrrbJ%$!!!!I!!!!53!!!!#!*!&'`!!!$Errrr 4!*!&(3!"!*!'9KN!!!!i!!"@V!!!!%J!!&E-!!!!9!!!9ZX!!!"N!!"A#`!!!(` !!&G8!!!!M!!!9k!!!!#B!!"Ab3!!!+3!!&IG!!!!Y!!!@&-!!!%)!!"BH3!!!43 !!&M2!!!",!!!@3X!!!&)!!"CE!!!!9J!!&Q1!!!"E!!!@Ed!!!&m!!"CiJ!!!B3 !!&Rh!!!"P!!!@PF!!!'B!!"DC`!!!D3!!&Tk!!!"V!!!@SN!!!'m!!"DX!!!!F3 !!&V'!!!"b!!!@YF!!!(B!!"E&3!!!H`!!&[K!!!"q!!!@r3!!!)8!!"F0`!!!M3 !!&ad!!!#1!!!A*B!!!*B!!"G"3!!!Q!!!&dF!!!#C!!!A9B!!!+X!!"GDJ!!!VJ !!&f)!!!#a!!!AGX!!!-X!!"IqJ!!!c3!!'"!!!!$I!!!B%3!!!1%!!"JIJ!!!i` !!'#f!!!$i!!!B,S!!!2X!!"Jc`!!!r3!!'$Qrj!%!!"K"J!,!!!!eIq3"!%!N!3 D!!!")J!!!'3"!*!%'!!!!5F!!!!$!3#3""i!!!%S!!!!!`%!N!39!!!"+3!!!'3 "!`!!!,J!!!%Urrrrb3!$!!!!1!!!!$Errrr4!*!&'`!!!5d!!!!,!*!&(!!!!5l rrrr(!*!&(3!!!5m!!!!$!*!&'3!!!6!!!!!$!*!&&`!"!*!'B9%!!!!`!!"KH!! !!&!!!'(&!!!!B!!!BJi!!!"m!!"L*3!!!)`!!'+4!!!!Q!!!BX!!!!#J!!"Ld!! !!,J!!'-qrj!%!!"M6J!%!!!!eIq3"!%!N!3G!!!"0!!!!'J"!*!%(J!!!68!!!" S!3#3""`!!!%f!!!!!`#3"4m!![rrrr`!!!!,!!!!"J!#!!!!$!!!!!X!N!F0!!! !C!!!!!)!![rrrrS!!!!F!!!!"!!"!!!!(3!!!!)!N!8"rrrrq3!!!!J!!!!"!!! !"`!#rrrrq`!!!"F!!!!3!!8!!!!B!!!!"J#3"aN!!!!'!!!!!3!!!"S!!!!+!!! !!J!!!"[rrrrk!!!!"!!!!"lrrrrj!!!!#!!#rrrrr3!!!!N!!!"#!!d!!!!+rrr rr!#3"`i!!!"N!!!!"J!!!!m!!!!,!!!!#J!!!"!!!!!,!!!!$!!!!"%!!!!#!!! !$J!!!")!!!!'!!!!%J!!!"-!!!!'!!!!%`!!!"3!!!"Q!!!!&!!!!"8!!!!$!!! !'!!!!"Errrrl!!!!(!!!!"rrrrrl!!!!,!!!!#!!!!!'!!!!2!!!!#%!!!!$!!! !2J!!rrrrq!!#rrrrrJ!#rrrrrJ!!!!F!!!"'!!)!!!!)rrrrr3#3"b,rrrri!!! !3J!!rj!%!!(rrrrq!!$rrrrd!!%!!!"U!!,rrrre!!!!,J!!!"3!"`!!!#m!!!! #!*!(+3!!!!F!!!!%!!!!-!!!!!F!!!!&!!!!-3!!!!S!!!!'!!!!-[rrrr3!!!! )!!!!+J!!!!)!!!!-!!!!-`!!!!)!!!!3!!(rrrrf!!!!&!!!!"6rrrre!!,rrrr h!!!!*3!!!#!!#!!!!#B!!!!+!*!(*`!!!!F!!!!#!!!!+!!!!!B!!!!$!!!!+3! !!!)!!!!%!!!!+J!!!!B!!!!)!!!!+`!!!!B!!!!*!!!!,!!!!!S!!!!+!!!!,Ir rrrB!!!!-!!(rrrr[!!!!$!!!!!%!!!!(!!$rrrrZ!!(rrrrh!!,rrrrX!!!!4J! !!"!!"!!!!%F!!!"Q!*!(5!!!!!)!!!!%!!!!5Irrrqi!!!!)!!!!"3!!!'B!!!! -!!(rrrrU!!!!+!!!!!%!!!!(!!,rrrrV!!!!5`!!!%)!%!!!!%`!!!!(!*!(63! !!!F!!!!"!!!!6J!!!!F!!!!#!!!!6`!!!!F!!!!$!!!!8!!!!!)!!!!%!!!!83! !!!S!!!!)!!!!8J!!!!)!!!!+!!!!8`!!!!S!!!!1!!!!9!!!!!F!!!!3!!!!93! !!!F!!!!4!!!!9J!!!!B!!!!5!!!!9`!!!!F!!!!6!!!!@!!!!!F!!!!8!!!!@3! !!!F!!!!9!!!!@[rrrqS!!!!@!!!!"3!!!'B!!!!q!!,rrrrT!!!!A!!!!"3!#J! !!%`!!!!(!*!(63!!!!F!!!!"!!!!6J!!!!F!!!!#!!!!A3!!!!B!!!!$!!!!AJ! !!!B!!!!%!!!!A`!!!!F!!!!&!!!!B!!!!'B!!!!'!!!!B3!!!!)!!!!+!!!!BJ! !!!S!!!!1!!!!"3!!!'B!!!!3!!,rrrrS!!!!C!!!!"B!#J!!!%m!!!!(!*!(C3! !!!B!!!!"!!!!AJ!!!!B!!!!#!!!!A`!!!!F!!!!$!!!!4`!!!'B!!!!%!!!!5!! !!!S!!!!)!!!!CJ!!!'B!!!!+!!!!C`!!!!S!!!!1!!!!D!!!!!S!!!!3!!!!"3! !!'B!!!!5!!,rrrrR!!!!DJ!!!!J!"3!!!%`!!!!(!*!(63!!!!F!!!!"!!!!6J! !!!F!!!!#!!!!A`!!!!F!!!!$!!!!"3!!!'B!!!!%!!,rrrrQ!!!!E!!!!!3!!3! !!!8!!!"Q!*!&![rrrq%!!!#)!!!!"J!#!!!!L3!!!!S!N!H+!!!!!J!!!!)!!Ir rrq)!!!!U!!!!"[rrrq%!![rrrq-!!!"p!!!!9J!3!!!!IJ!!!!)!N!Gr!!!!!J! !!!3!!!#!!!!!!J!!!!J!!!#"!!!!!J!!!!`!!!##!!!!!J!!!"!!!!#$!!!!!J! !!"3!!!#%!!!!!J!!!"J!!!#&!!!!!J!!!"`!!!#'!!!!#J!!!#!!!!#(rrrriJ! !!#)!!!"k!!!!#J!!!%`!!!#,!!!!#J!!!%i!!!#-!!!!#J!!!&!!!!#0!!!!#J! !!&)!!!#1!!!!"`!!!&3!!!#2!!!!"`!!!&8!!2rrrq3!!Irrrq-!![rrrq8!!!" Y!!!!4J!C!!!!6!!!!!F!N!G0!!!!"`!!!!%!!!"Z!!!!!`!!!!)!!!"3!!!!!J! !!!B!!!"4!!!!#J!!!!S!!!"5!!!!!J!!!!`!!!"6!!!!#J!!!"!!!!"8!!!!"`! !!")!!!"9!!!!"`!!!"-!!!"[!!!!"`!!!"3!!!"I!!!!"`!!!"8!!!"`!!!!#J! !!"B!!!"a!!!!#J!!!"J!!!"b!!!!#J!!!"S!!!"c!!!!#J!!!"`!!!"d!!!!CJ! !!"i!!!"e!!!!!J!!!#)!!!"f!!!!!J!!!#B!!!"h!!!!!J!!!#S!!!"i!!!!!J! !!#i!!!"j!!!!!J!!!$)!!!"k!!!!!J!!!$B!!!"l!!!!!J!!!$S!!!"mrrrrj!! !!$i!!!!&!!!!CJ!!!%)!![rrrpi!!!#6!!!!'!!'!!!!P!!!!!)!N!H9!!!!!J! !!!3!!!#@!!!!!J!!!!J!!!#A!!!!!J!!!!`!!!#B!!!!!J!!!"!!!!#C!!!!!J! !!"3!!2rrrpm!!Irrrpi!![rrrp`!!!#E!!!!0!!0!!!!R!!!!!)!N!HG!!!!!J! !!!3!!!#H!!!!!J!!!!J!!!#I!!!!!J!!!!`!!!#J!!!!!J!!!"!!!!#K!!!!!J! !!"3!!!#L!!!!!J!!!"J!!!#M!!!!!J!!!"`!!!#N!!!!!J!!!#!!!!#P!!!!!J! !!#3!!!#Q!!!!!J!!!#J!!!#R!!!!!J!!!#`!!!#S!!!!!J!!!$!!!2rrrpd!!Ir rrp`!!2rrrpS!!3!!!!)!!IrrrpX!!!!%!!!!"2rrrpS!![rrrq!!!!#4!!!!%J! &!!!!N[rrrpm!N!HDrrrrh3!!!!3!!!#Trrrrf`!!!!J!!!!&!!!!CJ!!!!`!!!# U!!!!#J!!!"!!![rrrqd!!!"%!!!!4J!)!!!!4Irrrq`!N!G+rrrrk`#3"e[rrrr T!*!(BrrrrqJ!N!GTrrrrj`#3"f[rrrrQ!*!(%[rrrq8!N!H3!2rrrq!!N!8#rrr rm!!!!$S!!!"Q!!N!!!!lrrrrl`#3"ccrrrrZ!!!!$!!!!$d!!!!,!!!!%!!!!$i !!!"Q!!!!%J!!!$m!!!!,!!!!&J!!!%!!!!!,!!!!'!!!!%%!!!!,!!!!'J!!!%) !!!!#!!!!(!!!!%2rrrrY!!!!)!!"rrrrf!!!!!`!!!!"!!!!"`!#rrrreJ!!!+m !!!!8!!B!!!"(!!!!CJ#3"dJ!!!!#!!!!"!!!!%RrrrrZ!!!!#!!!!&-!!!!+!!! !$!!!!!8!!!"Q!!!!$J!!!,!!!!!+!!!!%J!#rrrre3!!!,%!!!!@!!N!!!#b!!! !#J#3"e!!!!!#!!!!!J!!!&%!!!!+!!!!"J!!!'!!!!"Q!!!!#!!!!,-!!!!'!!! !$!!!!&m!!!!(!!!!$3!!!')!!!!+!!!!$J!!!!8!!!"Q!!!!%!!!!&-!!!!+!!! !&!!#rrrre!!!!,3!!!!D!!N!!!#e!!!!#J#3"e!!!!!#!!!!!J!!!&%!!!!+!!! !"J!!!%F!!!"Q!!!!#!!!!%J!!!!+!!!!$!!!!'J!!!!+!!!!$J!!!!8!!!"Q!!! !%!!!!,B!!!!#!!!!&!!!!,F!!!!+!!!!'!!#rrrrd`!!!,N!!!!+!!-!!!#k!!! !#J#3"e!!!!!#!!!!!J!!!!8!!!"Q!!!!"J!#rrrre`!!!+i!!!!D!!3!!!"&rrr reJ#3"e[rrrr9!*!(Brrrrp3!N!Hirrrrd`#3"3,rrrrC!!!!V!!!!$S!#3!!!$[ rrrrB!*!(22rrrqi!!!!-!!!!23!!!!X!!!!3!!!!2J!!!'B!!!!5!!!!2`!!!!X !!!!@!!!!3!!!!!X!!!!B!!!!33!!!!X!!!!D!!!!V3!!!!)!!!!F!!!!3rrrrpF !!!!J!!,rrrra!!!!1!!!!'B!!J!!!$Rrrrr`!*!(UrrrrpN!N!Errrr5!!(rrrr p!!,rrrrb!!!!0`!!!'S!!J!!!$Errrra!*!("[rrrp)!!!"Q!!$rrrrc!!(rrrr b!!$rrrr4!!(rrrr`!!,rrrr3!!!!i`!!!!J!!J!!!13!!!!#!*!(j3!!!!)!!!! %!!,rrrr2!!!!k3!!!!J!!J!!!1S!!!!#!*!(k`!!!'F!!!!%!!,rrrr0!!!!rJ! !!!B!!J!!!2m!!!!+!*!'!3#3"'B!!!!#!!(rrrr1!!!!(J!!!!Errrr0!!,rrrr -!!!"!J!!!!3!!3!!!3-!!!!$!*!'rrrrb`!"rrrrq`!!rrrrbJ!"!!!!!`!#rrr rb!!!!5X!!!!)!!-!!!$r!!!!#J#3"J%!N!4Q!!!!!J!!!5`!!!!,!!!!"J!"rrr rb3!!!#!!!!!)rrrrb!!!rrrra`!"rrrrb!!"rrrraJ!!!!S!!!!"!!!!"`!"rrr ra3!!!!F!!!!"!!!!"`!#rrrra2q3"!!!!!J!!!!"rrrr``!!!!X!!!!"!!!!"`! #rrrr`[q3"!!!!!`!!!!#rrrr`Iq3"!!!!!J!!!!#rrrr`2q3"!!!!"3!!!!#rrr r[rq3"!!!!!J!!!!#rrrr[[q3"!!!!'J!!!1p,R4MF&pZEh4TCRN!"hJZGhK0B@0 6Ef0VCA4)B@jNE'9b8(*[B`!!*bj5C@&NH9pI-6*6Ef0VCA4%EfeKD@j'GJ!"hf9 fC@jd3fpNC3!$+R9cCA*%BA4K8(4b!!3ZFfpMD`!"[e4$8&0[BfYPG!!$Zb4*6N9 88fpMDf9d!!,-58j&9&0[BfYPG!!(pL46Ef0VCA3!"[P6Ef0VCA3!!"abC@C$Eh9 ZG!!(mepIGR"dFL3!!0phH(*PCQ0[EJ!(*AGiCACPER3!!qGhH'9fC@jdE@&cD`! 'FR0dFQ9KE3!'cR0dBA4eF`!$M@j[EQ*XEf0VD@jR!!IfFQ9MGN*eCJ!&QR*PBhC N!!,2Ff%!!q4cEf0VB@4NFPpTEJ!(!R0TEPpXC@i!!X"cD@jICQ&YD@aj!!"DFfP ZAh"[FR3!!!0cD@jIB@4NFJ!(E@PZAf&NC()!"RecAf&NC()!!,*cD@jIHQ9bE`! %l("PCA)!"V&cFh4KG'8!!-GKFhPZBf9bFJ!%3R0PE'B!"(a!1$)e!!40G9pdBh" IEQpdD@Cj!!'r8QpeG'PZC84PFf0bDA"dEh)!"bGREdeTH'9N6@pNC94bBA!!"d4 fCA*cD@pZ!!B)FQpeG'PZC84PFf0bDA"dEh*'E'&RF`!"9R*PFf9bGQ9N-3!"9h* PFf9bGQ9N-J!%Gh0PE'9MG'pb5@jQE`!%+R*[GA4TEQ9$Eh9ZG!!'m(*[GA4TEQ9 5C@0[FQ4c!!8I8QpeG'PZC9*PBfpbC!!![h"bEf0*EQC[!!23590"!!6lFQpeG'P ZC8CXB@Gc!!D%F(*[Bd4PFf0bDA"dEh)!!0GcC@aPBh4[FJ!#FA4MF&pZEh4TCRN !![NZG'0`Af0[EQjPBh4IC'pZC9pI4P!a-8&ZEQpdBA4PC&"#!!*`F')!!`*"EQj [G'&dC@433J!%Md"ME'&cFb3h16K(990*9%03Af0`!!1ZG'0`!!Gc9%03D@p`BJ! 'mQCTE'`a-J!%ffP[3fpYF'aPG'P[EJ!!IfP[8Q9cG@ad!!(@D@p1B@eP8(4b!!& XD@p@8Q9Q6R9Y!!%@D@p$8Q9Q6R9Y!!DUBh0$Ef4P!!(rG'0`8h4bC@&Y!!I)Bh0 3BA*KE3!%8N"ME'&cFb3h1$G(990*9%03Af0`!!DCBh*PBA4P!!1k9%033h*PBA4 P8%)!"p"bBhC#G@CQ!!+8FQ0f3R9QCNaPEJ!#h@j[G'PQH9"bEf-!"("[F'9Z!!% I9%036h"PEP"#!!H-G@a`9'PYC@peG&CKE(9P!!"rG@a`9'PYC@peG%&MG'P[EJ! &T(CKE'PNDA4j4QaKCh-!!`eMEfeYB@jN9'PYC@peG&CKE(9P!!,DFQ9YEh4P5'p cG!!#[R*PE@pdC9"[FR3!!FjXEf0KE%K[Fh3!!E*XEf0KE&"[FR3!!1"dEh0'E'& RF`!#Ih"bC@0PC'9ZBf8!!(0NEfjd4R*KC`!#2h4TE@98EdaTGQ8!!1PcC@0eFQP dH3!"p@p`G'P[EN0ZG!!(*'p`G'P[ER-!")&cC@jN!!&39%038f9ZC&"#!!#fF(9 cD%CXB@F!!MaeFQGPER4'E'&R!!DjCQPXE'9b!!EmGf4c8(4b!!!5Ff9ZC%CbC@8 !!TTcC@jN6'9ZCh4S!!F*FQ9MC@PfC3!%Fe4$8&*PBf9TGQ933J!!K@eKFQY'E'& R!!BQFQ4c8(4b!!'FFQ4c6'9ZCh4S!!IVFf9MEfjN9'PYC90dB@e`!!ApBfa[Ff8 !!Z083e"$E'pcC9"#!!A$B@*[FR3!!TY83e""BQpbG&"#!!0I9%038h4KG(9c8%) !"PTeER9cC@3!"iGMEfjZC@0dD@pZ8h4KG'8!!U0cC@jN9fPZC'ph!!%*FQ0f9fP ZC'ph!!DaB@ed9@jKBfYPC%4KG'%!"@KKEA49ER*PB@4%BA4K!!#qFf9MGA*TG(P -CACPE&"dFJ!$MR0PEQ49EQ&MDf9N!!"6Ff9ZC%jPH(3!!)CMEfjRCA0dD@pZ9fP ZC'ph!!F+FQ0f6Q9iG!!%KR0bG(3!"f0XBA0d8P48!!C)Ff9ZC%eKH&0PCe0THQ8 !!hPMEfjZ8h4KG&"dFJ!#e94$8%0[EQjPBh4TEfj6G'&dF`!%4@4KG'&3Dh4c8Q0 fC!!%h@4KG'&3Dh4c8f9ZG!!'h@4KG'&3Dh4c8Q9cC@jd!!(fBRPdCA05BhCN!!5 RBRPdCA05BhCN4(9`!!1&BRPdCA05BhCN8'&cG>EQ4[G`!"LQ*jG'9c8f9ZG!! $S'*jG'9c8Q9cC@jd!!HFER9Y5'PcG'p#G@0VCA4c!!88Ff9ZG&0THQ9)DA0dE`! $[%KTFh4[3R9MDf9d!!9BGQ&XG@8!"a*MEh9ZG'9b!!I`G'eb8e*89!!$2(*dG&C KFQPKEQ0P!!BEG'eb8P42!!('Ff9ZC&4bD@9c!!$@FfpeFQ0S8A9PEQ0S8Q0fC!! #rfGXEf*KE%PZCQm!"k983e"(E'pLB@a*EQC[8%)!!a*dBh"3BA*KE9"dFJ!!*P4 $8&"KFQ&Y!!H3!(4MF&*dEd%!!3edBh"5G'p0D@i!!4CdBh"5G'p0BAJ!"ITdBh" 0BAK6C@G6DATP!!*GG'0`6@&i3fpZEJ!%DA4MF%eKH>EQ4[G`!$ih4MF&0dBA4 c8(4b!!#)9%038h4KG(-!"f4dBh"$EfjZ3A4dC@e`G(-!"G0dBh"$EfjZ6h"PEQ9 N!!GTG'0`3fpZEN&MBf9`G'9N!!8JG'0`3fpZEN0XEh0PC!!'2h4MF%0[EQj"BQp bG'9N!!1fG'0`6f0dCA4c5@i!"%0dBh"2Bh4PG(02GA3!"SGdBh"2Bh4PG(0*EN4 eF!!!-h4MF%pMG'9dFe*PG(*KER-!"(edBh"*ER"eG&"VG(-!"5"dBh"2GA4`GA4 3Dh4c!!)2G'0`4(9`8'YdF`!'pR4MF&*PG(*KER03Dh4c!!1QG'0`3d4#9'&LE'8 !!A4YBAK83e"$EfjZC@0dD@pZF`!$XR9NF!!(-&9%8'P[F')!!IjeC("6G(*PB@d !"#K!BfaKFh-N0cN`4e96594$8&pMF!!$cP9%8%0bC@&dC9"#!!*3C@jND@jR8'p bG!!"@99%8&0PEQ433J!!+A*PFf9bGQ9N!!"!BfKPBfY6G@d!"&a94&"5C@0PDAC P8%)!"mPdD@eP6h9d!!"UC'9cG%K[Fh3!!%jNCA0d8'pbG!!$Q@edG3!!qP9%8%e 899"#!!HCEA4e8fPkC3!%QN!i-c-!!VPeAh4MF&pMEfjZC@0dAf4[EQ8!!I"dBh" IBfpZEQ9MG&pNEfjPAep'8$%a3@jZEh4KG'9N8%)!!C!!,R4MF&pXDA0dC@jIC'p ZC9pI4P!a-8&ZEQpdBA4PC&"#!!5r3$Jd1!!"i(9IG'0`AfaTFh4PEPpNEfjP!!! MG'0`AfaTFh4PEPpNEfjPAep'8$%a3@jZEh4KG'9N8%)!"d%ZG'0`Ah*PBhCIC'p ZC9pI4P!a-8&ZEQpdBA4PC&"#!!EdFQ9KC'PZ!!6I3$Je1!!('h9IG'0`Ah*PBhC IC'pZC3!'!R4MF&pbC@0fAf4[EQ9IAdC3-6&"EQj[G'&dC@433J!(45jdBh"IFf9 ZC&pNEfjPAep'8$%a3@jZEh4KG'9N8%)!""j!1$Fh!!FlG9pdBh"IFf9ZC&pNEfj P!!DmG'0`Ah0PEQ4IC'pZC9pI4P!a-8&ZEQpdBA4PC&"#!!0b,PpIBh4IAcP83e" 6Ef0VCA4'GJ!&d5jIAf0dAema-%P14946Ef0VCA4'GJ!!dPpIGR4IAcP83e"6Ef0 VCA3!!RXZAepZGepI4P9X!!--58j&9&0[BfYPG(-!"8iZ4(*TGQ9bAema0NP1494 6Ef0VCA4%EfeKD@j'GJ!(e5j1CAG3G()!!kdZ4e9659pPFR*[FJ!'Abj33N0[ER4 bEfa6H@jM!!Fr,QePEA0PG!!%@h4SDA-!"$p!1$Jh!!3#AepNG&pI-6"*6N988fp MDf9d4RB!"%"!1$Ji!!5@,PpIBh4IAcP83e"6Ef0VCA4'9@`!"S)ZAepMG&pI-6" *6N988fpMDf9d4P9X!!)a,NGPG%0eFR*PER43FQpMCA0c!!81,N&&3h*PBA4P4'9 cB`!$cLj"480bC@&dC8&`F'aP4ACPER3!"RXZ3893GA43BA*KE9"dFJ!(`5j"490 PEQ3!"MJZ389%DA0`Eh0P4'9cB`!%Dbj(CA433PpI194$8&0[BfYPG%Cf!!2j8&0 1!!1l8(*[Bf9cFe0PFQPKE%jeE@*PFJ!&M'KTCfK-EfjR6fC38di!"(PXEhG-Efj R6fC38di!"hGdD'93FQpM!!HcG'KP9(P`C3!#UA4SC8&NC(*PFh-!"Pp"484PFf- !"MKNCA0MFQP`G'pb9(P`C3!#3@4KG'&)B@jNE'8!"eGYH9*PF'aj!!"XG'KP4AC PER3!"&K!1$N`!!4C3$Jj-3!&9bjIAf0dAemj9%038fpMDf9d4P!j9%038fpMDf9 d!!4E3$Jj-`!%A%!i163!!kJZAepNG&pI194$8&0[BfYPG%Cf!!"a4e96590`D@i !"I&PFR*ZE`!$@Lj(990*3fKPBfY"E'&bE9pI4RB!!j3ZAep`G(*ICfaeC3!(f#j 33N0[ER4bEfa"FhPZB`!$##j%DA0`Eh0P8(4b!!*2,PpIC'aIAdC3GJ!&"#jIAf4 dAema-%P14946Ef0VCA4'GJ!"e("KFh0MEh9ZG!!!6A*NFf&bFQ&j!!!cFQ4c4@j dFRN!"[CXC@jRG'J!!m*`G()!!CKcBACP4A*bEQm!!XC&FR*ZEe0KGQ9b!!0TCP0 KGQ9N4A*bEQm!"2a!16Ba!!6`AepNG&pI-6"&FR*ZEe0KGQ9b4RB!"2e!16Bb!!@ (,PpIC(4IAc%`4A*bEQp6BACPFNCf!!3"3$Nf0J!%$Lj(CA433PpI-6C*6N988fp MDf9d4'pYB@PZ4RB!"!4!16Bj!!"C,N&fB@PXB@*XC9pI194$8&0[BfYPG%Cf!!3 I3$Nh0!!!R5jMEfjZC@0dAemj9%038fpMDf9d4P"fD3!#@#jRCA4SEh0dD@3!"X3 Z9%03Af9bFQpbAep'D3!(Gf&NC(*PFh-!"qaKC'4bE'9Z!!4!B@4NFJ!$0@9bFJ! &R%!a-$%j!!@c3$%`-M!!"6mZE'PcG'9ZAemj9%038fpMDf9d4QN!"44!-6!e-3! &&8!a-$8b!!!-,Q&MBf9`G&pI194$8&0[BfYPG%C3GP"T!!GF,NG98dPICA*bEh* IEQPX!!GP,QePE@0`H3!%-fCbEfd!"f9QFQpYE'9Z!!@@3$%`16)!!9aIAf4XAep '8(B!"CG!-6!j-`!'05jbC@0fCR*[E9pI194$8&0[BfYPG%C3GQPT8(C3D3!'!f* eCQCPFJ!'pf*eCQaPEJ!"6Q4KG'&KGQ&TE!!&'8!a-63b!!2-,R0PEQ4dEepI194 $8&0[BfYPG%C3GQPT8(CT!!8&BfpeER3!"3&QE'&RF`!#rA4[!!!PGf4cBA*bBAN !"j&YD@jTGf4c!!")G'9bE@PZGA-!"T!!Gf4cER9Y!!H,G'KTFhGNF`!(YA4[Gh* TG'8!"G"LHA4PF`!&fd!a-M)`!!9N,R0PE'9MG&pI194$8&0[BfYPG%C39@039@0 39@-!"3*!-6)c0`!(2'0KEP*PB@3!!'CMB@jAFQPdC3!(S@G[Ef4TCA-!"30!-6) c1!!&"%!a-M-j!!8F3$%b0$%!"rpIAe*89%PIAcC6Ef0VCA3!"4e!-6)d-J!&(N! a-M3c!!3'Aep59&4*Aema-%P14946Ef0VCA3!"4Y!-6)d-!!#APpI8P4859pI194 $8&0[BfYPG!!$Gh"[Fh4IFf9XC@0dAemf8fpMDf9d4P9M9@09B`!#E("bC9pcC@a PBh4IAcC6Ef0VCA4'9@09Be9M!!&#DA0KG(4jAemf8fpMDf9d4RB!"(eQG(*eEQ0 KG'9IAcC6Ef0VCA4'E!!"B'acC@9VAemf8fpMDf9d4QaT!!8[CR0dBA4IAcC6Ef0 VCA4'8$4cG'&d!!&,Ff9dFfpMDfp`G&pI0P0[BfYPG%CTD9"fD3!#b'GPG(0[BfY [F(4IAcC6Ef0VCA4'D@P3GP"T!!)pGh*TG'9IAcC6Ef0VCA4'8(CT!!'QFQ9KC&p I0P0[BfYPG%C3GQN!!)9cD(9dC'phEPpI-6"*6N988fpMDf9d4QN!!1TTEf0dE&p I-6"*6N988fpMDf9d4P9T8(B!"e&QBfjdE&pI-6"*6N988fpMDf9d4P9TD3!'9@G PG("PCA*ZB@ePAema-%P14946Ef0VCA4'8(C3D3!'E'GPG(0[BfYZB@ePAema-%P 14946Ef0VCA4'8(C3D3!'B@*TEQ4IAc%`58j&9&0[BfYPG%C3GQN!"#acC@aPBh4 IAcP83e"6Ef0VCA4'8&9M8&9M8&9M!!*BFf9ZC(4[Aemj9%038fpMDf9d4P"fD@P 3GQN!"8PbC@0fCR*[E9pI194$8&0[BfYPG%C3GQPT8(C3D3!(rQ&MBf9`G&pI194 $8&0[BfYPG%C3GP"T!!6iE'PcG'9ZAemj9%038fpMDf9d4QN!"`TMEfjZC@0dAem j9%038fpMDf9d4P"fD3!(Kd&fB@PXB@*XC9pI194$8&0[BfYPG%Cf!!+$AepNG&p I194$8&0[BfYPG%Cf!!0q9%p$!!1X4f9d8%*IAcP83e"6Ef0VCA4'GJ!%ZepIBh4 IAcP83e"6Ef0VCA4'8$P83e"6Ef0VCA3!!lPIAf0dAemj9%038fpMDf9d4P9X!!+ ,AepMG&pI194$8&0[BfYPG%Cf!!"36eG5!*!''H3!!#kf!!!"+J!!'P!!!"4Q!!! ,*!#3"J*'!!!!&!#33%9R!!"&D`!%!!!!!3!!!-J!!!!J!!!%i(`)!UD6iIrmNm( rq*1Krr53!!%!#*3Krl!lS`!!Jq-!CM[G!!#S(3!3,!!!!%##!"L!(J!SN!!I!"5 J(J!XN!!I!"K)!!!81!!!!*!!(`!81!!!!*!!(`!BU"i!%*!!(`!q1!!!%*JI!#` i!!!#Q"m!,B!H!#+3!"m!-+!H!#D`(`!ZJ"m!"LJ!!!""JJ!JU"m!#L`!!!""JJ! 8J(m!"ULI!!T)!!!"B!!!!%J!!!&J!!!!J!%!@$JK!&"m#!1QJq(rr)2"rrL$SIr d6S!!)%9e!*!&!J!!!*a&G3#3"3-!!!#N4@i-"!!!!,8!!!!-J!#3#i!!!-JB!!! !4AF!N!8"!*!%4@m&"!!!!,B!!!!Jrrrrq3!!"bLUrJF!N!c"!!%!"!#3$%9f#J# 3",F!!!!84@S!"!!!!,J!!!#%!!!!KJ!!"q"m#!+QNq(rr*2"rrL6SIrdN!!"!!L 8)Iq`1k-!!)2M!'DS(3!3J(d!+,!$!!Bi!!!!J(d!+*!!!`!#J"m!"LJ!!!""JJ! JU"m!#L`!!!""JJ!8J(m!"ULI!!T)!!!"B!!!!%J!!!&J!!!!J!%!@$JK!&"m#!1 QJq(rr)2"rrL$SIrd6S!!)%9e!*!&!J!!!&K&G3#3"3-!!!"J4@i-"!!!!,N!!!! -J!#3#i!!!)3B!!!!4AF!N!@i!*!%4@m&"!!!!,S!!!!Jrrrrq3!!#2UUrJF!N!c "!!%!"!#3$%9f#J#3",X!!!!84@X!"!!!!,`!!!"%!!!!e!!!#H*m#!+QNq(rr*! !!3!)P#(r`$[M!!")!!!"B!!!!)!#!!#3!"m!!MJ!!!#B(`!m1(m!!)!"!%Ji)3" !I!J$TS2Krra1J!!J4A8!N!@p!!!!&%9d!`#3",i!!!!F4@i-"!!!!-!!!!!-J!# 3#i!!!%3)!!!!4AF!N!@m!*!%4@X!"!!!!-%!!!$m!!!!pJ!!#Ljm#!+QNq(rr*2 "rrL6SIrdN!!"!!L8)Iq`1q-!!*!!J3"XJ)%!E%J!!!&J!!!!J!)!!*!!(`!#1(m !!%J!!!&J!!!!1m-!!)!#!!#3!!-!$$J!!"@`!`!D1!!!!,!$!#!i!!!!X!-!,NJ !!!&J!!!!1k-!!(qJ"c9"JJ!3Ik-(0%J!!!&J!!!!U"i!%#`!!!"!JJ!BJ"i!+*! !(`!8S"i!,*!!(`!B5!!!&$J!!!#3!"m!&$J!!!#3!"m!'+JH!"#3!"m!2MJ!!"# B(`!X1!!!!TJI!#f!(J!LN!!I!$#J(J!QX"m!,MKr!!#!!3"B1#%!8(`)!kD$iIr mJm(rq)1Krr41J!!J4A8!N!A#!!!!*%9d!`#3",i!!!!X4A8!N!A$!!!!1%9d!`# 3",B!!!"%4A8!N!A%!!!!C%9e!*!&a3!!!(a&EJd#!!!!a`!!!"D!!*!('!!!2!# !!!S!!)D!!"m!N!T&GJS-!!!!b!!!!"*&EJ`%!!!!b3!!!!b!!*!1r!#3"%9h!*! &`3#3"%9h$3#3"-F!!!!)4@X!"!!!!-S!!!#X!!!"HJ!!$A9m#!+QNq(rr*2"rrL 3!!%!#*3Krm"mIaYjX)%!AN'#!(5!!J!!N!!I!!+)(`!m+!!!!%'#!$JiI`!!5!! !!@!!!!!l``!!1!!!',!$!"T)!!!"B!!!!(aJ"c9!JJ!3J(i!)%J!!!&J!!!!1(m !!$L!!!")!!!"B!!!!+J"!&iX!!!!3)%!%$Kr!!")!!!"B!!!!$Kr!!#!!3")1#% !3(`)!kD$iIrmJm(rq%k!!#"&G!-!N!5q!!!!)%9e!*!&``!!!$K&G3#3"F3!!!" -4A8!N!A,!!!!B%9e!*!&c!!!!("&G3#3"Fd!!!#)4@i-"!!!!-i!!!!-J!#3#i! !!+`3!!!!4AF!N!A+!*!%4@X!"!!!!--!!!"J!!!"`J!!$P9m#!+QNq(rr*2"rrL 3!!%!#*3Krm!l``!!J')!!%J!!!&J!!!!1q-!!)"L!!")!!!"B!!!!,"r!"L!(J! 1N!!I!"b6h`"Q1(m!!)!"!%Ji)3"!I!J$TS2Krrb$`Iri6S!!)%9d!`#3"-m!!!! B4A8!N!A3!!!!(%9d!`#3"-m!!!!S4A8!N!A4!!!!,%9Z$!3!!!$5!!!!$)!!N!Z !!!"J%!!!!%9h!*!&``#3"%9V!!3!!!$6!!!!(!!!!J)!!!mEJ!-!2L`!!!&!JJ! -1'!!!%k!!##!B`!B6S!!)%9V!!3!!!$8!!!!e!!!!L3!!!pcI!J#TT2Krrb6`Ir iNk(rp*!!!3!)P#(rX$[$!!")!!!"1q-!!$J!!"5`!`!D1'"!!%J!!!&J!!!!N!" r!#!i!%!!N!!I!#3i!!!!N!!I!#LJ(J!HX"m!,$Kr!!")!!!"B!!!!$ZM!!"rS!F e3B)!&(qM"c4)!!!"B!!!!%J!!%#!(`!FN!!H!!kJ(`!XX"i!(MJ!!!'B(J!m1!! !!*!!(J!B1!!!!*!!(J!81!!!!C!!(J!q1(i!!%J!!!&J!!!!J!%!@$JK!&"m#!1 QJq(rr)2"rrL$SIrd6S!!)%9e!*!&``!!!"a&G3#3"G8!!!!`4A8!N!A%!!!!@%9 e!*!&a3!!!("&G3#3"GB!!!#`4@i-"!!!!0F!!!!-J!#3#i!!!03B!!!!4AF!N!A 8!*!%4@X!"!!!!0J!!!#-!!!#NJ!!%E9m#!+QNq(rr*2"rrL6SIrdN!!"!!L8)Iq `1m-!!%J!!!%i!!!!N!!$!!`i!!!@X!-!'S!H!"53!!-!+$J!!!#3!"i!&$J!!!# 3!"i!'%J!!!&J!!!!1k-!!(qJ"c9"JJ!8Ik-(0%J!!!&J!!!!5!!!#$KJ!!#!!3" B1#%!8(`)!kD$iIrmJm(rq)1Krr41J!!J4A8!N!A$!!!!(%9e!*!&f3!!!%K&G3# 3"F8!!!"J4@i-"!!!!0S!!!!-J!#3#i!!!)`B!!!!4AF!N!AB!*!%4@X!"!!!!0B !!!#3!!!!![!!!"-pI!J#TT2Krrb6`IriNk(rp*!!!3!)P#(rX$[$!!")!!!"J!) !!*!!!`!-1!!!&E!$!"Si!!!!X!-!)$J!!!#`!`!Z1!!!!C!!(J!q5!!!!@!!!!! lS`!!Ik!(08'#!"KrS`FdN!"q!$j)!!!"B!!!!%J!!!JiB!!!J!%!@$JK!&"m#!1 QJq(rr)2"rrL$SIrd6S!!)%9e!*!&``!!!"a&G!-!N!5f!!!!)%9e!*!&f3!!!%K &G3#3"F8!!!"N4@i-"!!!!0X!!!!-J!#3#i!!!*!!'!!!!%9h!*!&eJ#3"%9V!!3 !!!$F!!!!C!!!!di!!"@JI!J#TT2Krrb3!!%!#*3Krm!li`!!N!#"!&b3!+%!B)# "!&b!S3"J5!!!!@!!!!!X!`!!3))!&$Kr!!")!!!",!-!!%'#!!`iB2rr5!!!#$K J!!#!!3")1#%!3(`)!kD$iIrm6S!!)%9e!*!&h3!!!#4&G3#3"G3!!!!i4@i-"!! !!1!!!!!-J!#3#i!!!'3)!!!!4AF!N!AF!*!%4@X!"!!!!1%!!!"S!!!$T!!!&h& m#!+QNq(rr*!!!3!)P#(r`$[M!!#3!)%!A*!!S3"JL!-!2#J!!!"!JJ!F1(m!!%J !!!%X!`!!3B)!$$KJrrp)!!!B1(m!!)#"!&b!S3"J5!!!!@!!!!#!!3")1#%!3(` )!kD$iIrm6S!!)%9e!*!&e!!!!#a&G3#3"H)!!!"-4@i-"!!!!13!!!!-J!#3#i! !!'J)!!!!4AF!N!AK!*!%4@X!"!!!!18!!!$S!!!$qJ!!'aam#!+QNq(rr*2"rrL 3!!%!#*3Krm!li`!!N!#"!&b3!+%!B)2"!&b!!3"J,!!!%%'#!"3iB!!@5!!!!@! !!!")!!#8L"i!!5J!!!*"JJ!81'!!,dJ!!!&J!!!!5!!!H)JI!$`S!!!!3))!($K r!!")!!!",!-!!%'#!$!iB2rr5!!!9)!I!"3S!!!!3B)!($Kr!!")!!!",!-!!%' #!!`iB2rr5!!!-$J!!"#B(`!XJ"i!"*!!(`!`S"i!!V!I!#ii!!!#Q"m!,6J!!!@ B(`!m1'!!!)!"!%Ji)3"!I!J$TS2Krrb$`Iri6S!!)%9e!*!&jJ!!!$4&G3#3"HB !!!"34A8!N!A8!!!!E%9e!*!&f!!!!*!!4@i-"!!!!1N!!!!-J!#3#i!!!1J3!!! !4AF!N!AP!*!%4@X!"!!!!1S!!!&`!!!%PJ!!)ICm#!+Q[f(rl*!!!3!)P#(rX$[ M!!#3!)%!E$ZP!!!lC`!!1iJ!!)2#!!#)!`!m+!!!!%##!"`iI`!!5!!!!5`$!!" "JJ!-1'$rrdJ!!45)(`!6+!!!!%'#!##!(`!q,!!!!8##!"3iB!!,5!!!!@!!!!" )!!$X5!!!!@!!!!!X!`!!3))!,)!H!!!S!!!!3B)!-$KJ!!BiJ!!!JCi!!%J!!!& J!!!!,!-!!%'#!"3iB!!%5!!!!@!!!!")!!#NJ"m!2L`!!!&"J[q`J"m!2L`!!!" "JJ!8J(m!2NJ!!!&J!!!!5!!!I)!I!"Km(3!!3)!!#%J!!!L$[`!BJ(m!&)#"!'` i[3!!5!!!!@!!!!!S'`!!3B)!1)!F!!!X!!!33B!!,)"r!#b!(`!`N!"l!!#3!"X !")"r!$5!(`!iN!"l!!L3!"X!$$J!!"#3!"`!!$Kr!!")!!!"1(m!!%J!!!%iI3! !J!%!@$JK!&"m#!1QZf(rl%k!!#"&G!-!N!6V!!!!*%9e!*!&e!!!!$K&G3#3"HB !!!"S4A8!N!AX!!!!G%9e!*!&l3!!!*a&G3#3"HB!!!#`4A8!N!A&!!!!f%9e!*! &lJ!!!34&G3#3"GJ!!!&-4A8!N!A@!!!"9%9Z$!3!!!$c!!!!$)!!N!Z!!!&`+!! !!%9h!*!&kJ#3"%9V!!3!!!$d!!!"Z!!!"9J!!#STI!J#TVp"rqL3!!%!#*3Krk! lB`!!N!#"!(`la3!!1iF!!)2L!!#)!`!m+!!!!%##!"`iH`!!5!!!!5`$!!""JJ! -1'$rrdJ!!@!mB!!"1'2rih`H'!"!J3!81'!!+%J!!!&J!!!!5!!"3$J!!!#`!3! qXm%!1)!"!(b3!!%!1LJF!!"!JJ!SL"X!,#J!!!""JJ!-1jX!,%J!!"3iB!""5!! !!@!!!!")!!%!1(X!!%J!!!%lS`!!J!)!!*!!!`!-1!!!&l!$!"U!I!!%2!1"!#J !!!&!JJ!35!!!!@!!!!")!!!)J(`!"*!!I3!LS"`!!V!G!#Bi!3!iN!!G!#Ji!!! "Q"d!,$J!!!#`(3!Z1(d!!%J!!!&J!!!!1d-!!(p!"c9"JJ!8Id-(0%J!!!&J!!! !5!!!H%J!!!&J!!!!,!-!!%##!#b!(`!!+!!!!%'#!$!iB!!(1*i!!)'I!!")!!! "B!!!!#`$!!""JJ!81'!!"%J!!!&J!!!!5!!!-)!"!$SS!!!!3),rX+J"!$iX!!! !3)!!&+KK!$j)!!!"B!!!!%J!!!JiIJ!!J!%!D$JK!'"m#!1QZd(rk%k!!#"&G!- !N!6V!!!!)%9e!*!&e!!!!$4&G3#3"HB!!!"F4A8!N!AQ!!!!R%9e!*!&``!!!+a &G!-!N!5k!!!!Y%9e!*!&p3!!!04&G3#3"GN!!!%-4A8!N!A&!!!"*%9e!*!&l!! !!6"&G3#3"Hd!!!&B4A8!N!AQ!!!"E%9e!*!&a3!!!C4&EJ`%!!!!r3!!!!b!!*! ,J!!"Z$!!!!"&G`#3"I3!N!4&D`!%!!!!rJ!!!+3!!!C'!!![$h`)!UD6iIrmNm( rq*1Krr56JIr`N!!"!!L8)Iq`1i-!!(bG)hNla3!!1q!!!%##!!`S(J!!3B)!')J F!$`S!!!!3))!$$Km!!")!!!"+"d!!%'#!"b!(!!q,!!!!8'#!"!i!!!"Q"d!!$[ r!!%S(J!!3B)!%$J!!!'B(J!!1rm!!6Kr!!#!!3"B1#%!8(`)!kD$iIrmJm(rq)1 Krr5$JIr`6S!!)%9e!*!&e!!!!%K&EJ`%!!!"!J!!!!b!!*!,J!!!T#!!!!"&G`# 3"Ii!N!4&EJ8"!!!"!`!!!!Vrrrr1!!![$e9%8&0[BfYPG!$DD%9Z"3%!!!%%!!! !"rrrrmd!!#m28fpMDf9d!!"&EJ8%!!!""3!!!!Mrrrr-!!![$`#3#%9f"3!!!!% %!*!%4@i&!3!!!3B!!!!,rrrrb`!!,`p*6N988fpMDf9d!!"&EJ8%!!!""`!!!!c rrrr+!!![$`#3$%9f"3!!!!%&!*!%4@i&"!!!!3J!!!!)rrrrb3!!,`m!N!K&GJ8 !!!!""J#3"%9f"3!!!!%(!!!!"%9Z"33!!!%*!!!!&2rrrmJ!!#m2!*!84AB&!!! !!3J!!!!)4AB&!!!!!38!N!4&EJ8%!!!"#J!!!!Mrrrr(!!![$`#3#%9f"3!!!!% $!*!%4AB&!!!!!3N!!!!%4@m&"!!!!,i!!!"SrrrraJ!!,`m!N'K&GJ8!!!!"#J# 3"%9f#J!!!!%,!!!!A%9f#J!!!!%-!!!!9%9f#J!!!!%0!!!!6%9f#J!!!!%1!!! !5%9f#J!!!!%2!!!!4%9f#J!!!!%3!!!!3%9f#J!!!!%4!!!!0%9f#J!!!!%5!!! !-%9f#J!!!!%6!!!!(%9f#J!!!!%8!!!!'%9f#J!!!!%9!!!!&%9f#J!!!!%@!!! !%%9f#J!!!!%A!!!!8%9f#J!!!!%B!!!!2%9f#J!!!!%C!!!!1%9f#J!!!!%D!!! !,%9f#J!!!!%E!!!!@%9f#J!!!!%F!!!!*%9f#J!!!!%G!!!!)%9f#J!!!!%H!!! !$%9f#J!!!!%I!!!!+%9f#J!!!!%J!!!!#%9f#J!!!!%K!!!!C%9f#J!!!!%L!!! !B%9[#J3!!!%E!!!!#)!!N!p&GJ#3"Ii!N!4&GJm!!!!")`!!!!4&E`S%!!!"(!! !!!L!!*!24AB!N!Ad!*!%4AB2!!!!!5-!!!!%4@m+"!!!!4d!!!!)J!#3$d9f!*! &kJ#3"%9f$`!!!!%M!!!!"%9[#J3!!!%H!!!!#)!!N!p&GJ#3"H8!N!4&GJm!!!! ")`!!!!4&E`S%!!!"(`!!!!L!!*!24AB!N!AK!*!%4AB2!!!!!5-!!!!%4@m+"!! !!5!!!!!)J!#3$d9f!*!&h!#3"%9f$`!!!!%M!!!!"%9[#J3!!!%N!!!!#)!!N!p &GJ#3"GB!N!4&GJm!!!!")`!!!!4&E`S%!!!"*3!!!!L!!*!24AB!N!AB!*!%4AB 2!!!!!5-!!!!%4@m+"!!!!5B!!!!)J!#3$d9f!*!&e!#3"%9f$`!!!!%M!!!!"%9 [#J3!!!%K!!!!#)!!N!p&GJ#3"G-!N!4&GJm!!!!")`!!!!4&E`S%!!!"*`!!!!L !!*!24AB!N!A$!*!%4AB2!!!!!5-!!!!%4@m+"!!!!5)!!!!)J!#3$d9f!*!&bJ# 3"%9f$`!!!!%M!!!!"%9[#J3!!!%S!!!!#)!!N!p&GJ#3"F%!N!4&GJm!!!!")`! !!!4&E`S%!!!"+3!!!!L!!*!24AB!N!@m!*!%4AB2!!!!!5-!!!!%4@i+"!!!!,X !!!!)J!#3$d9f!*!&Z!#3"%9f$`!!!!%M!!!!"%9[#J3!!!#h!!!!#)!!N!p&GJ# 3"3%!N!4&GJm!!!!")`!!!!4&E`-%!!!!ZJ!!!!5!!*!,4AB&!*!%ZJ#3"%9[!`3 !!!$V!!!!")!!N!Y&GJ8!N!6V!*!%4@m$"!!!!-m!!!!%J!#3#d9f"3#3"-m!N!4 &E`-%!!!!YJ!!!!5!!*!,4AB&!*!%YJ#3"%9[!`3!!!#q!!!!")!!N!Y&GJ8!N!5 q!*!%4@m2"!!!!5-!N!5!!*!(4@J!!&0C68J!!!ED!!!!1J!!!!B!N"J&#J!!!$! !!!9c!!!!4!!!"Gm!!!"8!!!'$!!!!)J!!!F%!!!!V!!!"a2rN!3!!!F6!!-!!!! %rj!%!3#3""d!!!#+rrrre!#3"4i!!!#Drrrrd`#3"4m!N!J)#`!!!%3!!!M@!!! !D!!!#1ArN!3!!!MP!!-!!!!%rj!%!3#3""d!!!#+rrrre!#3"4i!!!#Drrrrd`# 3"4m!!3#3"JRkrj!%!!!++`!"!!!![rrrrp-"!*!%(`!"!*!'#PB!!!!i!!!+M!! !!'3!!![*!!!!H!!!#r3!!!#%!!!-"`!!!*!!!!!-(J!!!+3!!!am!!!!Y!!!$*h rN!3!!!eb!!3!!!#rrrrrd`%!N!3I!!!!S`!!!!)"!`!!!'`!!!!%rrrre!#3"4i !!!$'!!!!#`#3"4d!!3#3"Jf0!!!!0!!!$G)!!!"-!!!1"!!!!&`!!!iUrj!%!!! 18J!#!!!![rrrrp-"!*!%(`!!!!6rrrr8!*!&(J!"!*!'$R)!!!!F!!!1G3!!!#` !!!kIrj!%!!!2'!!#!!!![rrrrp-"!*!%(J!!!!6rN!3!N!8I!!%!N!B23rq3"!! !$h!!!3!!!,rrrrr6!3#3"!-!!3#3"Jq1!!!!(!!!$km!!!!`!!!2j`!!!&J!!"# f!!!!E!!!%1%!!!"m!!!3r!!!!,!!!"'Hrj!%!!!4XJ!$!!!![rrrrp-"!*!%(J! !!!6rrrr8!*!&(`!!!-B!!!!,!*!&(3!"!*!'%G8!!!!F!!!51!!!!%J!!",P!!! !A!!!%a%!!!"X!!!6-2q3"!!!%cS!!`!!!,rrrrr6!3#3""i!!!!%rrrre!#3"4m !!!$'!!!!#`#3"4d!!3#3"K0B!!!!(!!!%hN!!!")!!!8JJ!!!&`!!"5Z!!!!F!! !&02rN!3!!"6G!!-!!!#rrrrrd`%!N!3H!!!!"2rrrp3!N!8I!!!!aJ!!!!X!N!8 G!!%!N!B9cJ!!!#3!!"A4!!!!4!!!&JF!!!"-!!!@'[q3"!!!&L3!!`!!!,rrrrr 6!3#3""m!!!$H!!!!C!%$!!!!A!!!!0m!!!!$!3-!!!"J!!%!N!BATJ!!!#J!!"I 2!!!!1!!!&q-!!!"!!!!Am2q3"!!!'"m!!`!!!,rrrrr6!3#3""m!!!$M!!!!C!% $!!!!A!!!!0rrrrr4!3-!!!"J!!%!N!BE8!!!!$!!!"[&!!!!3!!!'q)!!!"-!!! F"3!!!&`!!"aB!!!!D!!!()!!!!"i!!!FP!!!!)!!!"bR!!!!M!!!(,B!!!#F!!! Fc`!!!+3!!"cdrj!%!!!Ga3!%!!!![rrrrp-"!*!%(`!!!1F!!!"N!3-!!!"F!!! !k!!!!!-"!`!!!'!!!!$Hrrrrd!#3"4i!!3#3"L*+!!!!0!!!)U)!!!"%!!!LYJ! !!%`!!#,Z!!!!C!!!)a)!!!"d!!!M@3!!!-J!!#0G!!!!e!!!)h3!!!$N!!!Mf!! !!2J!!#2f!!!"$!!!*"`!!!%J!!!N@3!!!8J!!#82!!!"9!!!*5,rN!3!!#9"!!8 !!!#rrrrrd`%!N!3I!!!!l`!!!'3"!`!!!'`!!!$`!!!!!`%!N!3G!!!!m3!!!'3 "!*!%'`!!!2,rrrr4!3#3""`!!3#3"LTZ!!!!-!!!+[F!!!"!!!!V#`!!!%J!!#X C!!!!@!!!+c3!!!"S!!!V93!!!)3!!#[a!!!!N!!!!#`'!!!!Q!!!,"`!!!#S!!! X3!!!!3`!!#hE!!!")!!!,JF!!!%`!!!ZY`!!!B3!!#km!!!"N!!!!#l9!!!"S!! !,[lrN!3!!#m-!!F!!!#rrrrrd`%!N!3E!!!!l`!!!'3"!`!!!(`!!!$f!!!!!`% !N!3H!!!!p`!!!'3"!*!%(!!!!!6rrrr8!*!&(3!!!-B!!!!,!*!&'J!!!2Mrrrr 2!!-!!!!i!!%!N!B[9`!!!$!!!#pa!!!!1!!!,i`!!!"%!!![X`!!!%`!!#r'!!! !9!!!,p8!!!"J!!![l3!!!'`!!$!8!!!!G!!!-#B!!!#!!!!`5rq3"!!!-&X!"!! !!,rrrrr6!3#3""`!!!$r!!!!D!%!N!3G!!!"!*!%D!%!N!3H!!!"!3!!!!-!N!8 I!!(rrrrl!!!!$!!!!!%!!!!(!!$rrrrf!!%!!!"U!!,rrrrh!!!!&!!!!"3!"`! !!"8!!!!#!*!($`!!!!F!!!!%!!!!&J!!!!F!!!!&!!!!&`!!!!S!!!!'!!!!'2r rrrB!!!!)!!!!%!!!!!)!!!!-!!!!'3!!!!)!!!!3!!(rrrri!!!!&!!!!"6rrrr h!!,rrrrj!!!!#`!!!#!!#!!!!!`!!!!+!*!($3!!!!F!!!!#!!!!$J!!!!B!!!! $!!!!$`!!!!)!!!!%!!!!%!!!!!B!!!!)!!!!%3!!!!B!!!!*!!!!%J!!!!S!!!! +!!!!%rrrrrJ!!!!-!!$rrrrk!!(rrrrj!!,rrrrd!!!!)`!!!"!!"!!!!#3!!!" Q!*!(*3!!!!)!!!!%!!!!*[rrrrS!!!!)!!!!*`!!!'B!!!!-!!(rrrrb!!!!+!! !!!%!!!!(!!,rrrrc!!!!+3!!!%)!%!!!!#S!!!!(!*!(+`!!!!F!!!!"!!!!,!! !!!F!!!!#!!!!,3!!!!F!!!!$!!!!,J!!!!)!!!!%!!!!,`!!!!S!!!!)!!!!-!! !!!)!!!!+!!!!-3!!!!S!!!!1!!!!-J!!!!F!!!!3!!!!-`!!!!F!!!!4!!!!0!! !!!B!!!!5!!!!03!!!!F!!!!6!!!!0J!!!!F!!!!8!!!!0`!!!!F!!!!9!!!!12r rrr)!!!!@!!!!*`!!!'B!!!!q!!,rrrra!!!!1J!!!"3!#J!!!#S!!!!(!*!(+`! !!!F!!!!"!!!!,!!!!!F!!!!#!!!!1`!!!!B!!!!$!!!!2!!!!!B!!!!%!!!!23! !!!F!!!!&!!!!2J!!!'B!!!!'!!!!2`!!!!)!!!!+!!!!3!!!!!S!!!!1!!!!*`! !!'B!!!!3!!,rrrr`!!!!3J!!!"B!#J!!!#d!!!!(!*!(3`!!!!B!!!!"!!!!2!! !!!B!!!!#!!!!23!!!!F!!!!$!!!!*!!!!'B!!!!%!!!!*3!!!!S!!!!)!!!!4!! !!'B!!!!+!!!!43!!!!S!!!!1!!!!4J!!!!S!!!!3!!!!*`!!!'B!!!!5!!,rrrr [!!!!5!!!!!J!"3!!!#S!!!!(!*!(+`!!!!F!!!!"!!!!,!!!!!F!!!!#!!!!23! !!!F!!!!$!!!!*`!!!'B!!!!%!!,rrrrZ!!!!5J!!!!3!!3!!!#F!!!"Q!*!&![r rrqN!!!"R!!!!"J!#!!!!D!!!!!S!N!GT!!!!!J!!!!)!!IrrrqS!!!!U!!!!"[r rrqN!![rrrqX!!!"F!!!!9J!3!!!!A3!!!!)!N!GH!!!!!J!!!!3!!!"I!!!!!J! !!!J!!!"J!!!!!J!!!!`!!!"K!!!!!J!!!"!!!!"L!!!!!J!!!"3!!!"M!!!!!J! !!"J!!!"N!!!!!J!!!"`!!!"P!!!!#J!!!#!!!!"QrrrrkJ!!!#)!!!"C!!!!#J! !!%`!!!"U!!!!#J!!!%i!!!"V!!!!#J!!!&!!!!"X!!!!#J!!!&)!!!"Y!!!!"`! !!&3!!!"Z!!!!"`!!!&8!!2rrrq`!!IrrrqX!![rrrqd!!!"-!!!!4J!C!!!!+J! !!!F!N!FV!!!!"`!!!!%!!!"0!!!!!`!!!!)!!!!Z!!!!!J!!!!B!!!![!!!!#J! !!!S!!!!`!!!!!J!!!!`!!!!a!!!!#J!!!"!!!!!b!!!!"`!!!")!!!!c!!!!"`! !!"-!!!"1!!!!"`!!!"3!!!!p!!!!"`!!!"8!!!"2!!!!#J!!!"B!!!"3!!!!#J! !!"J!!!"4!!!!#J!!!"S!!!"5!!!!#J!!!"`!!!"6!!!!CJ!!!"i!!!"8!!!!!J! !!#)!!!"9!!!!!J!!!#B!!!"@!!!!!J!!!#S!!!"A!!!!!J!!!#i!!!"B!!!!!J! !!$)!!!"C!!!!!J!!!$B!!!"D!!!!!J!!!$S!!!"Errrrl!!!!$i!!!!R!!!!CJ! !!%)!![rrrqB!!!"b!!!!'!!'!!!!F`!!!!)!N!Gd!!!!!J!!!!3!!!"e!!!!!J! !!!J!!!"f!!!!!J!!!!`!!!"h!!!!!J!!!"!!!!"i!!!!!J!!!"3!!2rrrqF!!Ir rrqB!![rrrq3!!!"k!!!!0!!0!!!!H`!!!!)!N!Gm!!!!!J!!!!3!!!"p!!!!!J! !!!J!!!"q!!!!!J!!!!`!!!"r!!!!!J!!!"!!!!#!!!!!!J!!!"3!!!#"!!!!!J! !!"J!!!##!!!!!J!!!"`!!!#$!!!!!J!!!#!!!!#%!!!!!J!!!#3!!!#&!!!!!J! !!#J!!!#'!!!!!J!!!#`!!!#(!!!!!J!!!$!!!2rrrq8!!Irrrq3!!2rrrq)!!3! !!!)!!Irrrq-!!!!%!!!!"2rrrq)!![rrrqJ!!!"`!!!!%J!&!!!!FIrrrqF!N!G jrrrrj3!!!!3!!!#)rrrri`!!!!J!!!!R!!!!CJ!!!!`!!!#*!!!!#J!!!"!!![r rrr8!!!!K!!!!4J!)!!!!)[rrrr3!N!FSrrrrm`#3"cRrrrra!*!(3Irrrr!!N!G (rrrrl`#3"dRrrrrZ!*!(5rrrrqd!N!G[rrrrk!#3"3,rrrrm!!!!#!!!!'B!#3! !!!Rrrrrl!*!(#[rrrrS!!!!-!!!!'J!!!!X!!!!3!!!!'`!!!'B!!!!5!!!!(!! !!!X!!!!@!!!!(3!!!!X!!!!B!!!!(J!!!!X!!!!D!!!!(`!!!!)!!!!F!!!!)2r rrr8!!!!J!!(rrrrJ!!!!$!!!!!%!!!!(!!,rrrrH!!!!MJ!!!"3!"J!!!#3!!!" Q!*!(*3!!!!)!!!!%!!!!*[rrrrS!!!!)!!!!-3!!!!S!!!!-!!!!*`!!!'B!!!! 1!!!!M`!!!!S!!!!5!!,rrrrG!!!!N!!!!!!@!!N!!!#4!!!!#J#3"bi!!!!#!!! !!J!!!#m!!!!+!!!!"J!!!$i!!!"Q!!!!#!!!!*)!!!!'!!!!$!!!!$d!!!!(!!! !$3!!!%!!!!!+!!!!$J!!!#F!!!"Q!!!!%!!!!$%!!!!+!!!!&!!#rrrrh!!!!*- !!!!D!!N!!!#8!!!!#J#3"bi!!!!#!!!!!J!!!#m!!!!+!!!!"J!!!#3!!!"Q!!! !#!!!!#8!!!!+!!!!$!!!!%B!!!!+!!!!$J!!!#F!!!"Q!!!!%!!!!*8!!!!#!!! !&!!!!*B!!!!+!!!!'!!#rrrrf`!!!*J!!!!+!!-!!!#C!!!!#J#3"bi!!!!#!!! !!J!!!#F!!!"Q!!!!"J!#rrrrh`!!!)d!!!!D!!3!!!!LrrrrhJ#3"cRrrrrG!*! (3Irrrp`!N!HArrrrf`#3"3,rrrrK!!!!L`!!!$S!#3!!!!RrrrrJ!*!(#[rrrrS !!!!-!!!!'J!!!!X!!!!3!!!!'`!!!'B!!!!5!!!!(!!!!!X!!!!@!!!!(3!!!!X !!!!B!!!!(J!!!!X!!!!D!!!!M!!!!!)!!!!F!!!!)2rrrpm!!!!J!!,rrrrp!!! !"J!!!'B!!J!!!!Irrrrm!*!(L[rrrq%!N!8#rrrrf!!!!*d!!!!'!!)!!!#H!!! !#`#3"jm!!!"N!!!!!J!#rrrreJ!!!+d!!!!%!!%!!!#Z!!!!!J#3"3(rrrr9!!! !#!!!!!%!!!!(!!,rrrrA!!!!U!!!!"!!"3!!!+N!!!!'!*!(UJ!!!!B!!!!"!!! !U`!!!!S!!!!#!!!!V2rrrpB!!!!%!!!!Vrrrrp8!!!!)!!,rrrrC!!!!Q`!!!%) !$3!!!*crrrrB!*!(S!!!!'3!!!!'!!!!S3!!!!X!!!!+!!!!SJ!!!!X!!!!-!!! !S`!!!!)!!!!1!!!!5`!!!!B!!!!5!!!!T!!!!!B!!!!6!!!!T3!!!'B!!!!8!!! !TJ!!!!-!!!!B!!!!TrrrrpF!!!!F!!!!X2rrrpF!!!!X!!!!X3!!!!B!!!!m!!! !XJ!!!!-!!!!q!!$rrrrD!!(rrrrC!!,rrrrq!!!!"3!!!'S!!J!!!!6rrrrp!*! (Q[rrrpS!!!"Q!!$rN!3!!Irrrri!!2rrrp3!!Irrrq%!![rrrp)!!!#c!!!!3J! "!!!!Y2rrrpN!N!Errrr6!!(rrrr5!!$rrrr4!!%!!!!$!!$rrrr3!!(rrrrA!!, rrrr2!!!!q3!!!!J!!`!!!2S!!!!+!*!(q`!!!'B!!!!#!!!!r!!!!!X!!!!'!!( rrrr1!!!!#J!!!!%!!!!(!!(rrrr0!!!!"`!!!!%!!!!(!!,rrrr-rj!%!!!!#!! !!!(rrrr,!!!!#`!!!!%!!!!(!!,rrrr+rj!%!!!!$!!!!!,rrrr*rj!%!!!!#!! !!!,rrrr)rj!%!!!!&!!!!!,rrrr(rj!%!!!!#!!!!!,rrrr'rj!%!!!!D!!!"3J ZG@4`Ah*PB@4IB@KPB@4IC'pZC9pI4P!a-8&ZEQpdBA4PC&"#!!Gi,RGi6@&M8fp MDf9d5'&ZC'aPFP"bEf-!!#FZ8Q9KC(PIAc%b8fpMDf9d4'pYB@PZ4RB!!R"`BJ! $!N&ZEQpdBA4PC&"#!!5G3'0XBA0c*$Fj1%G98dP94&"IBh!!!kjdBh!!"h083e" TEh"L!!EbCQPXE$%b!!6ED@p$Efe`E'9dD@pZ!!'r8QpeG'PZC84PFf0bDA"dEh) !"bGREdeTH'9N6@pNC94bBA!!"d4fCA*cD@pZ!!B)FQpeG'PZC84PFf0bDA"dEh* 'E'&RF`!"9R*PFf9bGQ9N-3!"9h*PFf9bGQ9N-J!%Gh0PE'9MG'pb5@jQE`!%+R* [GA4TEQ9$Eh9ZG!!'m(*[GA4TEQ95C@0[FQ4c!!8I8QpeG'PZC9*PBfpbC!!![h" bEf0*EQC[!!23590"!!6lFQpeG'PZC8CXB@Gc!!D%F(*[Bd4PFf0bDA"dEh)!!0G cC@aPBh4[FJ!!IfP[8Q9cG@ad!!(@D@p1B@eP8(4b!!&XD@p@8Q9Q6R9Y!!%@D@p $8Q9Q6R9Y!!DUBh0$Ef4P!!(rG'0`8h4bC@&Y!!I)Bh03BA*KE3!%!8"ME'&cFb3 h1$G(990*9843Af0`!!DCBh*PBA4P!!1k9%033h*PBA4P8%)!"p"bBhC#G@CQ!!+ 8FQ0f3R9QCNaPEJ!#h@j[G'PQH9"bEf-!!bTeFf9b4'&dB9"dFJ!%F'p`C@i!!4p 83e"2F'9Z8%)!"iaeE("8D@ePEh9d9Q&XG@8!!(peE("8D@ePEh9d3@0dD@pZ!!@ NGQ&XD@4TG(P'E'&RF`!$$@0[E@eKEQ48D@ePEh9d9Q&XG@8!!YTbC@e[G'9)Eh0 d!!+qFQ9YEh4P8'pbG!!"cQa[Bf&X5'pcG!!"XQa[Bf&X8'pbG!!!i(4[FdCXB@G c!!*rF(*PBf9NC@jMC3!!Ff4[ER4'FQ&R!!)rG'PYC94[6'PfC3!!kA0PBh9bDA4 j!!(eEh"dD@pZ3fjd!!FNEh"dD@pZF`!%JA0PEQ3!!9"83e"6C@jN8%)!!,C`GA0 S4QaKC`!#2(9bCf9ZG%CXB@F!"VPQD@aXCA)!"[ahC(03G()!!"*cC@jN4R*PC3! #QR0PEQ4-C@jRG'J!"`PbC@0PDACP!!4c9%038Q9MC@PfC9"#!!#&E@&bDdCXB@F !"LCbC(03G()!!CabC(0-C@jRG'J!"qYcC@0[EQ48D@eP8h4KEA!!"IeME'pcC3! #ie4$8%0XEh0P8%)!"F0KBQpbG!!#Qe4$8%&LEh*d8%)!"XjcG'&dGA-!!ep83e" 6G'&dGA033J!'@R9ZGA0PC!!(Kf0[EQjPBh4TEfj6G'&dC3!#Sh0PEQ4AD@jNEhF !!3PbBhCAD@jNEhF!"V&KEA49EQ&MDf9N4'&dB3!&D'&YG&9ZFQ9KC%4KG'%!!,j cC@0eFQPdH8aPGQ9X8(4b!!11Ff9ZC&9ZB@0VC@3!!&0cC@jN6Q9iG!!!KQ0[EQG PFh4TEfjAD@jNEhF!"`TbBhC1CAKd!!5'Fh*dG!!(BfaKFh459&3!"NKcC@jN6@& i8f9R8fPkC3!$H@0[EQj6G'&d8(4b!!,99%033fpZEQ9MG'P[EP0dBA4c!!4&C'& dB9"VG(05BhCN!!6GC'&dB9"VG(06C@jd!!EGC'&dB9"VG(05CA0PER3!!ICLHA4 PFe*MGQ3!"+GLHA4PFe*MGQ4%GA!!!i9LHA4PFe*MGQ43BA0d9fPZC'ph!!'+BRP dCA06C@jd!!1JBRPdCA05CA0PER3!"jaZG@e)DA0dEd*eBfYPG(-!"44cC@jd8fP kC8KTFh4[!!1m5'PcG'p#G@0VCA3!"9KfB@aeC3!(%Q0[G@jdCA)!"r"dEA*68P4 8!!-mFR4d9Q&bD@&ZBf8!"KYdEA*59%m!!FCcC@jN9(*TCA-!!0CcEh9bBfK4G@9 ZBfK5BhCN!!,rCfa[BQ&X5@jQE`!(T94$8%GXEf*KE%PZCQp33J!$%R4MF&"KFQ& Y8(4b!!!Q9%038'&bB@d!"j!!G'0`8R4[33!"$A4MF&*dEdeTEJ!"&R4MF&*dEde KH!!&qR4MF%eKH&0PCe0THQ8!!PedBh"0BAK$EfjZ!!4TG'0`6@&i9fPZC'ph!!2 MG'0`8h4KG(03G()!!)K83e"6G'&dF`!(C(4MF%0[EQj"G(4PEA"dF`!&dh4MF%0 [EQj2F'9ZC@3!"fPdBh"$EfjZ3@0MCA"dC@3!"5"dBh"$EfjZ3fa[Ff9N!!BrG'0 `3fpZEN&LEh*dC@3!!lCdBh"2Bh4PG(0*EJ!%3h4MF%pMG'9dFdpeG!!'Kh4MF%p MG'9dFdPZ4(9`!!!cG'0`6f0dCA4c8Q9dFQ&ZF`!%IA4MF%PZF(9d8'YdF`!&)(4 MF%peG("eG&"VG(-!!JpdBh"%GA"3Dh4c!!EfG'0`8Q9dFQ&ZFe"VG(-!!kCdBh" $4%*8B@*XC3!"G'eKH&4$8%0[EQjPBh4TEfjc!!1bG@4`!!F`9843D@p`BJ!"rR9 NF&0dFQ9KE3!%2N"ME'&cFb3h16"(990*9843Af0`!!2198433h*PBA4P8%)!!P" PEQ4TEQG3Eh*d!!&C98438f9ZC&"#!!!TFQ9cCA*fC@3!!%"MD'9MDe0eE3!%A&9 %8&*PBf9TGQ933J!(bA4TE@92GA3!!'TNCA0d5'pcG!!!6Q4PFh43Eh*d!!1CEA4 e!!$k984369498%)!"jPYG(96DATP!!3ZFfpMD`!#c%P14946Ef0VCA3!"rBN8fp MDf9d!!Ej8fpMDf9d!!!FFQ9Q3fpeER3!"r0IAhC`G()N!!$IGhKbC@CMEfi!"b9 hH'9fC@jd!!2RGhKPGQ9ZG'eKFfX!"R*cG(*PB@d!!ieZEfjLE'pMDfPZC`!(pR* PBhC#G@B!"CTbC@0fC!!#ch0K!!2NFfpMDf&NC(*ID@i!"`*cD@jIE'9Z!!,!FfP ZAfCKE@PXH3!!@R0TEPp`Eh*d!!!$FfPZAf&NC()!"feTEPpKC'4b!!CpFepKC'4 b!!#bFfPZAhTPFQm!"1a`C@9b!!DaFh0dBA4P!!$(BA0jEQ0PFR)!!HK94&"6Ef0 VCA3!!lXN58j&9&0[BfYPG!!%2d!i-$J!"3PeAh9NF&pbC@&NAf&SC@&NAf4[EQ8 !"-KeC("IFQ9KC&pKD'9KC&pNEfjPAep'8$%a3@jZEh4KG'9N8%)!"d3ZG@4`Ah0 PEQ4IC'pZC9pI4P!a-8&ZEQpdBA4PC&"#!!4C3$Ja-J!(VA9IG@4`Ah0PEQ4IC'p ZC3!'eA9NF&pcC@jNAf4[EQ9IAdC3-6&"EQj[G'&dC@433J!$jbjIAf0dAemj984 38fpMDf9d4RB!"G%ZAepMG&pI-6"*6N988fpMDf9d4RB!!+4IAhCdAemj98438fp MDf9d!!4EG'KTF`!%@d!i-63!"%3ZAepMG&pI199%8&0[BfYPG%C9E!!'JLjIAf0 dAema-%P14946Ef0VCA4'9@`!"$mZ4f9d8%*IAcP94&"6Ef0VCA4'GJ!'Abj33N0 [ER4bEfa6H@jM!!E%,P4$8&pPFR*[FPpI4QN!!c9PFR)!"(K!1$)a!!3#AepNG&p I-6"*6N988fpMDf9d4RB!"(P!1$)b!!-%,PpIC(4IAcP94&"6Ef0VCA4'GJ!$##j %DA0`Eh0P8(4b!!8%,PpIC(4IAc%`58j&9&0[BfYPG%Cf!!*2,PpIC'aIAdC3GJ! %Pd!i-c!!!`a*6N988fpMDf9dF`!%$Lj(CA433PpI-6C*6N988fpMDf9d4'pYB@P Z4RB!"8iZ4(*TGQ9bAema0NP14946Ef0VCA4%EfeKD@j'GJ!%QN!i-c-!!2dZ3AC KD@aKBQaPAemj98438fpMDf9d4RB!!0)Z6Q9h8h4bC@&YAemj98438fpMDf9d4RB !"p8Z6Q9h8(4b!!"9,P*PB@4"D'9KC&pI199%8&0[BfYPG%Cf!!5I3$Jc1!!&)5j 'E(9cD&*PB@4"D'9KC&pI199%8&0[BfYPG%Cf!!IB,P"#3fpZG(*[E%&cH@jM!!5 k3$Jd-`!%[N!i0$F!"6XZBQPZC&pI199%8&0[BfYPG%C3GQN!"jdZBQPZC&pI-6" *6N988fpMDf9d4P"fD3!%3'&NC()!"k*ZB@ePE'9Z!!6D3$Je-`!&f#jRCA4cEf0 VEQ&YC9pI199%8&0[BfYPG%C3GP"T!!II,QGPG(0[BfYZB@ePAema-%P14946Ef0 VCA4'8(C3D3!%UfjKE@8!"1"!1$8j!!"S,Q0[EQjPBh4IAcP94&"6Ef0VCA4'8(C T!!1Y,NG98dPICA*bEh)!"hGKC'4bCA0c!!IXB@4NFQaPEJ!%'d!i0c3!"KSZFQ9 MGQCbEfeIAcP94&"6Ef0VCA4'8(CTD9"f8'N!!(&(990*8h"TEJ!$@Lj(990*3fK PBfY"E'&bE9pI4RB!!j3ZAep`G(*ICfaeC3!#,bj#E'pMDde[GQ8!"J0LG@CQCA) !"[GLG@CXC@i!"$0QFQpY!!GPCR*[E@aPEJ!%AN!i16B!!pFZFf9ZC(4[Aemj984 38fpMDf9d4P"fD@P3GQN!!PJZCf9dD'pcG'PN!!8&BfpeER3!![edE`!%MQ&hC(- !"j&YD@jTGf4c!!EfE'9ZCh4S!!2#F(4b!!")G'9bE@PZGA-!"(e!16)b!!@[,R0 PE'9MG&pI199%8&0[BfYPG%C39@039@039@-!"caMB@j5C@&N!!"QBf&Z9h*TG'8 !"k&REfpND@9c!!5J3$Nc03!%S8!j-cB!"+0!16-i!!IrAep59&4*Aemf8fpMDf9 d!!5N3$Nc13!%Zd!j0$!!"!CIAe*89%PIAc%`58j&9&0[BfYPG!!%SN!j-cF!!Qe IAe*89%PIAcP94&"6Ef0VCA3!!hG`Eh0dAh0PE'9MG&pI0P0[BfYPG%C9Be9M9@- !!Qa`FQ9IFf9XC@0dAemf8fpMDf9d4P9M9@09B`!"3QPcBA4dH9pI0P0[BfYPG%C f!!4pCR4bG@jMBA4PAemf8fpMDf9d4Q`!!@"XFf9PDepI0P0[BfYPG%CXD3!&,fC cG'&dAemf8fpMDf9d4P!dFh4KG!!"5h0PG(0[BfY[F(4IAcC6Ef0VCA4'D@P3GQN !!XKRCA4cEf0VEh"dAemf8fpMDf9d4QPT8(C3D3!#2AGbDA4PAemf8fpMDf9d4P" fD3!"TR*PB@4IAcC6Ef0VCA4'8(CT!!5@B@0MCA"dAemf8fpMDf9d4P"f8'N!!FK XDA0dC@jIAcC6Ef0VCA4'D3!!KA0SGA4NEhGZAema-%P14946Ef0VCA4'D3!!kQP [Bh4XAema-%P14946Ef0VCA4'9@P3GJ!(8@CMER4XAema-%P14946Ef0VCA4'9@P T!!C9Cf9dF'9PFQjKE@9IAc%`58j&9&0[BfYPG%C3GP"T!!5aFf9XC@0dAemj984 38fpMDf9d4P"9Be"9Be"9B`!#PR0PEQ4dEepI199%8&0[BfYPG%C3GQPT8(CT!!8 fFQ9MGQCbEfeIAcP94&"6Ef0VCA4'8(CTD9"f8'N!"hTMEfjZC@0dAemj98438fp MDf9d4P"fD3!%[@GPG(0[BfYZB@ePAemj98438fpMDf9d4P"f8'N!",eLD@jNAem j98438fpMDf9d4P"fD3!(cN&fB@PXB@*XC9pI199%8&0[BfYPG%Cf!!,AAepNG&p I199%8&0[BfYPG%Cf!!0q9%p$!!IV8Q9KC%&SC@&NAemj98438fpMDf9d4RB!"2" 'E(9cD&*PB@4"D'9KC&pI199%8&0[BfYPG%Cf!!G[6Q9h8h4bC@&YAemj98438fp MDf9d4RB!!`K(CA433PpI199%8&0[BfYPG%Cf!!0$AepMG&pI199%8&0[BfYPG%C 9E!!#hepIBh4IAcP94&"6Ef0VCA4'GJ!!8%pA8J#3"P(X!!"5@!!!!0J!N!STJ!! !!R8!!!44!!!!+!#33%9R!!"&D3#3"3&&E`8%!!!!"!!!!!5!!*!(rj!%4@i3!3! !!!B!!!!"J!#3#!3%-%9V!!3!!!!(!!!!I)!!N!Gm#!+QN!!"!!L8)Im`N!"K!1J iB3#!J)%!k%J!!!&J!!!!1'%!1$L"!)!iSJ!!5!!!!@!!!!#!BJ!!U!-!!#`!!!" "JJ!3J')!!+KM!!")!!!JU!%!J)"L!!#`!`!!J!%!JS"L!!#3!!-!!$KJ!!#!!3$ B1#%!d(`)!kC1J!!J4A8!N!8)!!!!'%9c%!#3"!B!!!!S4A8!N!8*!!!!,%9d!`# 3"!)!!!!d4A3$!*!%!J!!!%4&G!-!N!3$!!!!9%9d!`#3"!3!!!"J4@i-"!!!!!S !!!!-J!#3#i!!!(`!N!4&G`#3"3F!N!4&DJ!%!!!!#`!!!(#!!*!(I!J#TT2Krrb 3!!%!#*3Krd#3!'%!f*!!J3$F1!%!1*!!!3#+1'%!H%J!!!&J!!!!1q-!!(rJ"c9 "JJ!-1(m!!%J!!##S!3#BJ'%!f,!$!!#!!3#SJ'%!h*!!!`!!1'!!!)!"!-Ji)3$ !I!J$TS2Krra1J!!J4A8!N!8-!!!!*%9Z$!3!!!!0!!!!$)!!N!Z!!!"`#!!!!%9 h!*!&#`#3"%9V!!3!!!!1!!!!G)!!N!Gm#!+QNq(rr*!!!3!)P#(r`$[M!!!i!!! !Q!-!"S"L!!#!!`!!,!$rrd'#!#5!BJ!!U!-!!,!I!!#!BJ!!J!-!!*!!(`!#1'! !!%J!!"JiI`!!1*m!!NJ!!!'!JJ!!X'3!!)!"!%Ji)3"!I!J$TS2Krra1J!!J4A3 $!*!%"!!!!"a&G!-!N!3$!!!!,%9d!`#3"!3!!!!i4A8!N!8,!!!!9%9d!`#3"!) !!!"B4@i-"!!!!!m!!!!-J!#3#i!!!(3)!!!!4AF!N!81!*!%4@X!"!!!!"!!!!# SJ!#3"h`)!UD6iIrmNm(rq*1Krr53!!%!#*3Krf!li`!!1k3!!)2#!!#)!`!'+!! !!%##!!arS!Fe3)%!2$JI!!D3!!%!5V1K!&3iB3!i5!!!!@!!!!#`IJ!!I'!(08' #!!bSIJ!!5!!!,+J"!%k`(`!!5!!!&$J!!!#`(J!!1!!!!,!I!!!i!!!"N!!I!!+ SIJ!!J!%!U$JK!+"m#!1QJq(rr)2"rrL$SIrd6S!!)%9d!`#3"!)!!!!J4A8!N!8 4!!!!5%9Z$!3!!!!5!!!!$)!!N!Z!!!#S'!!!!%9h!*!&%!#3"%9V!!3!!!!6!!! !+)!!N!Fi!!+DX!-!!$J!!!#3!!-!!MJ!!!#B!`!'1!!!!)##!!#`"!!!6S!!)%9 d!`#3"!)!!!!F4@X!"!!!!"3!!!!SJ!#3"cL!!!#!!`!#,!!!!%##!"5S!`!!,!! #QN##!!JiJ!!"1'3!!%k!!#"&D`!%!!!!&3!!!%b!!*!(I!J#TT2Krrb3!!%!#*3 Krh!li`!!5!!!!AaJ"c9!JJ!81'%!1$LI!!")!!!"B!!!!)"L!!#SB`!!J!%!Q$J K!*!!I!J$TS2Krra1J!!J4A8!N!81!!!!&%9e!*!&&J!!!#K&G!-!N!3#!!!!-%9 Z$!3!!!!A!!!!$)!!N!Z!!!"-#!!!!%9h!*!&&3#3"%9V!!3!!!!)!!!!I)!!N!G m#!+QNq(rr*2"rrL3!!%!#*3Krm!l``!!1q3!!+J%!!#`!`!!J!3!!T!!!`!#L!3 !"LJ!!%"!J!!B1(i!"MLI!!C)!!!"B!!!!%J!!"JiIJ!'1*m!"MLJ!%")!!!"B!! !!$Kq!!#!!3")1#%!3(`)!kD$iIrmJm(rq%k!!#"&G3#3"4J!!!"!4A8!N!8C!!! !@%9Z$!3!!!!D!!!!$)!!N!Z!!!"m%!!!!%9h!*!&#!#3"%9V!!3!!!!E!!!!V)! !N!Gm#!+QNq(rr*2"rrL3!!%!#*3Krm!li`!!1m3!!*LK!'1S"!!!X!-!!)!%!!+ 3!!-!!SJ%!!BS!!"!3)!!'$Kr!!BiRJ!'5!!!!@!!!!")!!!B1(m!"MLH!!BiS!" !5!!!!@!!!!#)!3"M+!!!!%##!#5!BJ!!L!-!!#J!!!""JJ!81(m!!$L!!!&)!!! "B!!!!$Kr!!#!!3")1#%!3(`)!kD$iIrmJm(rq%k!!#"&G3#3"4J!!!"%4A8!N!8 C!!!!A%9d!`#3""`!!!"`4A8!N!8G!!!!L%9Z$!3!!!!H!!!!$)!!N!Z!!!#X%!! !!%9h!*!&'`#3"%9V!!3!!!!I!!!"!)!!N!Gm#!+Q[f(rl*!!!3!)P#(rX$[M!!! lC!!!1i8!!$['!!#Bi3"lJ')!!)J$!!!S!!!!3B)!0$Kl!!!iR!!!1,i!!$MI!!" )!!!"B!!!!$ZM!!"rS!Fe3B)!-(qJ"c3X!2r93B)!*,0r!!#6R`!#1(m!"MLH!!# )[J!!1+8!!8J!!!&J!!!!L!%!HbJ!!!"!JJ!NJ')!!)J$!!!S!!!!3B)!&$Kr!!! iJ!!"5!!!!@!!!!!iI`!'1*i!!$LJ!!!i`!!"5!!!!@!!!!"8B!Br3B)!($Kr!!B iRJ!!L,i!!$LP!!&)!!!"B!!!!$Kr!!#!!3"B1#%!8(`)!kDlBIrX6S!!)%9d!`# 3"#!!!!!N4A8!N!8K!!!!4%9e!*!&'3!!!(a&G!-!N!3F!!!!N!"&G3#3"4d!!!# S4A8!N!8L!!!!`%9e!*!&'3!!!1"&EJ`%!!!!)`!!!!b!!*!,J!!"!#J!!!"&G`# 3"4m!N!4&D`!%!!!!*!!!!9b!!*!(I!J#TT2Krrb6`IriNk(rp*1"rr#3!!%!#*3 Kri!li`!!1i3!!$[&!!#B`3#RJ')!!)J$!!!S!!!!3B)!0$Km!!!iJ!!!1,i!!$M I!!")!!!"B!!!!$ZM!!"rS!Fe3B)!H(qJ"c3X!2r93B)!E$J!!!#3!!%!5V1"!%i i!!!!X!%!8MJ!!!#3!!%!9$KK!$K)!!!"B!!!!)##!!#`C!!!I'!(08'#!!`iI`! !5!!!P+J"!&L`(`!!J!%!D*!!(`!#1(m!"MLH!!#)[J!!1+8!!8J!!!&J!!!!L!% !TbJ!!!"!JJ!NJ')!!)J$!!!S!!!!3B)!&$Kr!!!iJ!!"5!!!!@!!!!!iI`!'1*i !!$LJ!!!i`!!"5!!!!@!!!!"8B!Br3B)!($Kr!!BiRJ!!L,i!!$LP!!&)!!!"B!! !!$Kr!!#!!3#)1#%!J(`)!kD$iIrmJm(rq)1Krr5$JIr`6S!!)%9d!`#3"#!!!!! X4A8!N!8K!!!!6%9e!*!&*3!!!)a&G!-!N!3#!!!!P%9e!*!&'3!!!-a&G!-!N!3 F!!!!i%9e!*!&(3!!!2K&G3#3"5)!!!%34A8!N!8C!!!"-%9Z$!3!!!!Q!!!!$)! !N!Z!!!&F)!!!!%9h!*!&*!#3"%9Z"3%!!!!T!!!!#B!!N!F)G'e`-*!'!$&&EJ8 "!!!!+J!!!!D!!*!(*6!eE'3!!!"&D`!%!!!!+`!!!8#!!*!(I!J#TVpKrqb3!!% !#*3Krf!li`!!1k3!!$YP!!!lKJ!!Jm)!!$`GUl-S!&"'3))!'#`F!!""JJ!3Xhm !!*1I!!*)!!"31(X!!$`GUl-S!&"'3))!%$b!G'8iK'e`5!!!#$LG!!!iS!!"10m !!$Mr!!*)!!!"B!!!!)##!!#`C!!!I'!(08'#!!`iI`!!5!!!S$`GUl-S!&"'3)) !I)J#!!"m!!Ge3))!&$J!rrq3!!)!!$J!!!'B!J!!1(m!"S##!!")!!!"B!!!!)" L!!!iJ`!"2'!!!MKMKU"m""[@I!!CeR`!)!!)!!$Kr!!SiRJ!!J+)!!%J!!!& J!!!!1(m!!%J!!!&J!!!!9'!'2d##rla)!!!B1'%!1$LI!!!iS!!"5!!!!@!!!!! iI`!!J!%!U$JK!+"m#!1QZf(rl%k!!#"&G!-!N!3U!!!!)%9e!*!&,!!!!("&G!- !N!3#!!!!H%9c%!#3"#J!!!#F4A-3!*!%*`!!!+a&Fa!!N!3S!!!!Y%9d!`#3"#N !!!#m4A8!N!8B!!!!`%9c%!#3"#F!!!$)4A-3!*!%*`!!!14&Fa!!N!3R!!!!m%9 e!*!&,3!!!24&G3#3"5i!!!%!4A8!N!8[!!!")%9Z$!3!!!!`!!!!$)!!N!Z!!!& !+!!!!%9h!*!&+`#3"%9V!!3!!!!a!!!!I)!!N!Gm#!+QNq(rr*!!!3!)P#(rJ$[ M!!#`J3#H1"m!"T!!!3"+U!%!RV!"!&!i!!!!X!%!9$KK!$K)!!!"B!!!!)##!!# `C!!!I'!(08'#!!`iI`!!5!!!'+J"!'b`(`!!J!%!FT!!(`!#1(m!!)!"!)Ji)3# !I!J$TS2Krra1J!!J4A8!N!8b!!!!0%9d!`#3"!)!!!!m4@i-"!!!!$-!!!!-J!# 3#i!!!(`)!!!!4AF!N!8a!*!%4@X!"!!!!$3!!!$8J!#3"h`)!UD6iIrmN!!"!!L 8)Ip`1q-!!)"L!!#)!`!!+!!!!%'#!*3iS3!`1*rrq$J!!!Km#31QK'3!#)!%!!5 8C3!)N!!&!!4#!2r`J'3!#+!%!!b3!'8!#,!&!!bSB3!iJ)%!1MLK!$iih`!!5!! !!@!!!!#!JJ!!X'3!!$KK!$iiR`!'1+!!!$M!!!&)!!!"B!!!!&4J"Mp"JJ!X1(m !"ML"!$k)S3!q1+8!!8J!!!&J!!!!5!!!%$J!!!#!BJ!!X!-!!)!"!*Ji)3#3!(` )!kD$iIrm6S!!)%9d!`#3"#!!!!!84A8!N!8K!!!!D%9d!`#3"!)!!!"`4A8!N!8 L!!!!L%9e!*!&'3!!!+K&G!-!N!3#!!!!Z%9Z$!3!!!!e!!!!$)!!N!Z!!!$8#!! !!%9h!*!&0!#3"%9U!!3!!!!h!!!!I)!!N!Gm#!+QNq(rr*2"rrL3!!%!#*3Krm! l``!!1q3!!*LK!'1)!3"M+!!!!%'#!"Ji!!!kJ(i!!$KMrrq3!(i!!*J$!!#)I`! !J"i!!(`$!!"i!!)"q!!!iR`!"L,m!!%J!!!&J!!!!J!%!5$JK!%"m#!1QJq( rr)2"rrK1J!!J4A8!N!8i!!!!A%9Z$!3!!!!j!!!!$)!!N!Z!!!"m%!!!!%9h!*! &0`#3"%9Z%!%!!!!k!!!!!B!!N!LY,QP&D`!%!!!!1`!!!1b!!*!(I!J#TT2Krrb 6`IriNk(rp*1"rr#3!!%!#*3Krl!l``!!Jq)!!)1#!!#!BJ!!1!-"rj!!!3!iJk) !!$J!!!#!B3!iQ!-!!$KK!$JiRJ!'J,i!!MJ!!!&m"3"3I!!!0&3&fAj)!!!"Nlm !%S!H!!+3!"m!C%J!!%bS(J!!X"m!&MJ!rrq`(`!FJ"m!C*!!(`!`1(m!!%J!!!& J!!!!X(`!!(aJ"c9"JJ!-1')!!%J!!#3iB3!i1*d!!$LJ!!&)!!!"J"m!C#`!!!& !J[q`J'%!1)!"!&Ji)3"3I!J$TS2Krrb$`IriJk(rp)1"rr"1J!!J4A3$!*!%"3! !!#"&G!-!N!3#!!!!*%9d!`#3"$B!!!!S4A3$!*!%0J!!!$4&G3#3"6F!!!"J4A8 !N!8m!!!!N!"&Fa!!N!3k!!!!T%9e!*!&0`!!!,K&EJ`%!!!!23!!!!b!!*!,J!! !l#!!!!"&G`#3"6X!N!4&D`!%!!!!2J!!!K5!!*!(I!J#TVm"rq#3!!%!#*3Krc! l!`!!Jf)!!)1L!!!i'`(rN!!"!+3lf`!!1!!!!)"K!+5B!`!!1(J!!$L"!$JiS!! !5!!!!@!!!!#`I3!!I'!(08'#!!`iB!!!5!!"U)"L!!#)!`!!+!!!!%'#!#`iB!! !L!%!9P3!"[G!JJ!8S!%!B&3!"#&"JJ!)1'!!!94J"Mp!JJ!81!$r2l!G!!!iB!! !5!!"B%J!!!&J!!!!1b-!!$Ki!!!iJ!!"5!!!!@!!!!!l3`!!Id!(0#`!rrp!JJ! B5!!!!@!!!!#`I3!!1i!!!%J!!%JmB'&X1)!!!$KMDA0)!!!"B!!!!(am'hP"JJ! 81(`!!%J!!!&J!!!!5!!!%%J!!!&J!!!!X(d!!$Kk!!")!!!"B!!!!$Kj!!")!!! "B!!!!#JF!!"!JJ!-1'!!!%J!!-!li!!!5!!!1)JE!!"m!!Ge3B)!6$KK!+3iRJ! !Iq8(0$J!!!"m!!FdI+8!8$!&rrpmS#N35!!!!6[r!!%iI!!!1*m!!$Lq!!")!!! "B!!!!,"p!!"mB!Fe3B,rX+JG!!!X!!!!3))!0$Km!!!iJ2rr1,i!!%J!!!&J!!! !X(d!!(aJ"c9!JJ!81'%!T$LH!!!iS!!"5!!!!6Km!!")!!!"B!!!!+JG!!!X!!! !3B)!$$KJ!!")!!!)J'%!T)!"!0Ji)3$3I!J$TVX"rq"1J!!J4A3$!*!%0J!!!"4 &G!-!N!3#!!!!'%9e!*!&2`!!!%"&G!-!N!3F!!!!A%9e!*!&3!!!!+4&G3#3"8% !!!#i4A8!N!9#!!!!d%9e!*!&3`!!!2"&G3#3"83!!!%%4A8!N!9#!!!"%%9e!*! &43!!!5"&G3#3"8B!!!%X4A8!N!8h!!!"H%9e!*!&4`!!!Ba&G3#3"8F!!!'i4A8 !N!8h!!!"f%9e!*!&5!!!!H"&EJ`%!!!!53!!!!b!!*!,J!!#&%!!!!"&G`#3"6i !N!4&D`!%!!!!5J!!!&b!!*!(I!J#TT2Krrb3!!%!#*3Krl!li`!!1'%!2$L"!$K )!!!"I'!(08'#!"!iI`!!5!!!!8J!!"JiI`!!U)%!2)#K!$K)!!!"B!!!!)!"!&J i)3"3I!J$TS2Krra1J!!J4A8!N!8,!!!!(%9e!*!&1`!!!#a&G3#3"8X!!!"!4@i -"!!!!%`!!!!-J!#3#i!!!&`)!!!!4AF!N!9+!*!%4@X!"!!!!%d!!!#FJ!#3"h` )!UD6iIrmNm(rq*!!!3!)P#(r-$[$!!#3!)%!l)2L!!!iB3#!J)%!l$LJ!!")!!! "U"m!!#`!!!""JJ!31(i!!%J!!!&)!!"!1'%!1$L"!)")!!!"B!!!!+JI!!!X!!! !3B)!%$Kq!!")!!!"5!!!'$Kq!!#SJ3#!J+%!JNJ!!!&J!!!!J!%!f$JK!0"m#!1 QJq(rr)2"rrK1J!!J4A3$!*!%!J!!!"a&G3#3"4X!!!!X4A8!N!8l!!!!3%9e!*! &6J!!!&"&G3#3"6X!!!"S4A8!N!9,!!!!I%9Z$!3!!!"2!!!!$)!!N!Z!!!#F%!! !!%9h!*!&63#3"%9V!!3!!!",!!!#')!!N!Gm#!+Q[b(rj*!!!3!)P#(rS$Z$!!! lC!!!1d8!!)2L!!#$SJ!!Jb)!!)!$!!)X!!!"3))!@+Km!!"rB!FdI!-!!%##!"3 X'J!#3))!$$[G!!")!!!J1(d!!$LF!!H)[!!'5!!!!@!!!!#)(!!'Ipd#&$J!!$U B(J!!1!!!!*JH!!%iI3!!5!!"J*1r!"+cI`!@1!$rrl!I!"b6A`!`1(m!!%J!!!& J!!!!X(N!!(aJ"c9"JJ!-1')!!%J!!8arB`FdU"`!!(`$!!"!JJ"3J(m!C)!F!!* m!`!!3))!3$Kp!!!iR!!'L"d!!(`&"h3iT3!"5!!!!@!!!!!X!`!!3))!($J!!$U B(3!!1!!!!*JG!!%iI3!!5!!!m$J!!!#B(3(rL(`!"MJG!Ipr``"31(i!!$LF!!H )[!!'5!!!!@!!!!#6[`!5J"`!!T!!(`"N1!!!1T`HrrprB`FdU"`!!(`$!!"!JJ! iJ"m!C(`D!!"!JJ!X1(i!!6L!!$T)!!!"B!!!!#J$!!""JJ!-1(i!!%J!!(JiIJ! "5!!!F+JF!!#`(`!@1!$rrl!I!"b!(`"NN!!I!$!iI`!!5!!!!@!!!!#`H3!!I'! (08'#!!`iBJ!!5!!!1)JG!!"m!!GdIm$`8$Kq!!!iR3!"L,d!!(bP"h4)!!!"B!! !!)!I!$!X!!!#3),r8$Kq!!#!!3"S1#%!B(`)!kDl)IrN6S!!)%9d!`#3"!8!!!! F4A3$!*!%0J!!!#"&G!-!N!3#!!!!*%9e!*!&'3!!!'"&G3#3"6`!!!#J4A-3!*! %1J!!!,4&G3#3"9!!!!$`4A8!N!8C!!!"1%9e!*!&83!!!AK&G3#3"6`!!!'d4A- 3!*!%1J!!!FK&G3#3"6J!!!(X4@i-"!!!!&)!!!!-J!#3#i!!!KJi!!!!4AF!N!9 ,!*!%4@i&!3!!!&-!!!!-J!#3"a%P-$4S@#8`1&Jk!%9V!!3!!!"8!!!!G)!!N!G m#!+QNq(rr*2"rrL3!!%!#*3Krm!li`!!Jm)!!$Kq!!#!JJ!!U,m!!)$I!!*)!!! "B!!!!$Kq!!iiR`!(L,m!"NJ!!!&J!!!!1)!!!)JI!!CmB2)8Q)-!$MKq!!#!!3" )1#%!3(`)!kD$iIrmJm(rq%k!!#"&G!-!N!3f!!!!'%9d!`#3"&-!!!!J4A8!N!8 Y!!!!,%9e!*!&'3!!!%"&EJ`%!!!!93!!!!b!!*!,J!!!G"!!!!"&G`#3"93!N!4 &D`!%!!!!2`!!!)L!!*!(I!J#TT2Krrb6`IriN!!"!!L8)Ir!1m-!!$[N!!#BS3" MU!-!!,!%!"D!!`!#N!!%!$!i(J!'N!!%!"+)!3"M+!!!!%'#!!`i!2rr5!!!#$J !!!#`(`!F1!!!!*JI!"miI`!!5!!!!@!!!!#!JJ!!X'3!!)!"!%Ji)3"!I!J$TS2 Krrb$`Iri6S!!)%9e!*!&2!!!!'"&G!-!N!3#!!!!D%9Z$!3!!!"@!!!!$)!!N!Z !!!#)%!!!!%9h!*!&2`#3"%9V!!3!!!!@!!!!I)!!N!Gm#!+QNq(rr*!!!3!)P#( r`*!!B3"B1q3!!)!%!!)X!!!"3))!%$Kr!!")!!!"5!!!-$Kr!!#!JJ!!1+!!!8J !!!'!BJ!!U!-!!#`!!!"!JJ!3J')!!)!$!'53!"m!!S"K!&JiR`!!5!!!!B!"!%J i)3"!I!J$TS2Krra1J!!J4A8!N!86!!!!+%9d!`#3"!8!!!!d4A8!N!8r!!!!2%9 d!`#3"!)!!!"!4A3$!*!%"3!!!&"&G3#3"3J!!!"N4@i-"!!!!&F!!!!-J!#3#i! !!(`)!!!!4AF!N!8@!*!%4@X!"!!!!%i!!!%%J!#3"h`)!UD6iIrmNm(rq*!!!3! )P#(r`*!!B3"B1m3!!)2L!!!iIJ!!5!!!!94J"Mp"JJ!J1!!!!,!H!!!i!!!"N!! H!!)i!!!!Q"i!"NJ!!*JiIJ!!1*m!!$LJ!!")!!!"I'!(08##!)!iB!!!L"m!(P3 !"[G!JJ!8S"m!+&3!"#&"JJ!)1'!!!94J"Mp"JJ!d1(i!!$LI!!")!!!"B!!!!(a J"c9!JJ"!1(i!!$LI!!!iS!!!5!!!!AaJ"c9!JJ!SL"m!(P3!"[G!JJ!81!$XAi" L!!#`!`!!5!!!$)!I!$#3!"i!!S"K!&JiRJ!!5!!!!B!"!%Ji)3"!I!J$TS2Krrb $`Iri6S!!)%9d!`#3"!8!!!!F4A8!N!88!!!!*%9e!*!&2`!!!&K&G3#3"9J!!!# 84A8!N!8r!!!!X%9d!`#3"!)!!!$-4A8!N!8)!!!!k%9Z$!3!!!"C!!!!$)!!N!Z !!!%%%!!!!%9h!*!&6J#3"%9V!!3!!!![!!!!H)!!N!Gm#!+QNq(rr*2"rrL6SIr dN!!"!!L8)Ip`N!"K!+Jla!!!1k8!!)2L!!")!!!F1'%!1$LH!!")!!!"U"m!!#` !!!"!JJ!3,"d!!$Zprrp"JIrJJ'%!U$LH!!")!!!"J!%!Q$JK!*!!I!J$TS2Krrb $`IriJk(rp%k!!#"&G!-!N!3#!!!!*%9e!*!&&J!!!$4&G3#3"3J!!!"B4@i-"!! !!&S!!!!-J!#3#i!!!(JB!!!!4AF!N!8[!*!%4@X!"!!!!&X!!!"%J!#3"h`)!UD 3!!%!#*3Kri#3!'%!Q*!!J3#FN!#K!+!iB3!iJ)%!R%J!!!'!B3#B1)%!1)#K!+" )!!!"J!%!L$JK!)"m#!1Q6S!!)%9e!*!&#!!!!#"&G3#3"5m!!!!`4@i-"!!!!&` !!!!-J!#3#i!!!%3!N!4&G`#3"9X!N!4&D`!%!!!!@!!!!)#!!*!(I!J#TT2Krrb 3!!%!#*3Krl#3!'%!D$[N!!#!BJ!!L!-!!#J!!!""JJ!mL"m!(P3!"[G!JJ!`S"m !+&3!"#&"JJ!NJ'%!D$L!!!%iS3!j1-%!1%J!!!&J!!!!I'-(0%J!!!JiB!!!J)) !!,"N!!#!!3"B1#%!8(`)!kD$iIrm6S!!)%9d!`#3""`!!!!B4A8!N!9G!!!!8%9 d!`#3"!)!!!"N4@i-"!!!!&i!!!!-J!#3#i!!!)!)!!!!4AF!N!9B!*!%4@X!"!! !!"d!!!"mJ!#3"h`)!UD6iIrmNm(rq*!!!3!)P#(r`$[$!!#BJ3"IJq)!!)##!!! iS!!!5!!!!DJI!!!X!!!!3B)!*)J"!&mS!!!!3B)!%$KJ!!#`I`!!5!!!'+Kr!!" )!!!31(i!!)##!!")!!!"J!%!5$JK!%"m#!1QJq(rr)2"rrK1J!!J4A3$!*!%!J! !!"a&G!-!N!3&!!!!)%9e!*!&2`!!!#K&G!-!N!3&!!!!A%9e!*!&@!!!!'"&EJ` %!!!!A`!!!!b!!*!,J!!!I"!!!!"&G`#3"4d!N!4&D`!%!!!!,J!!!&5!!*!(I!J #TT2Krrb3!!%!#*3Krm#3!'%!@)"K!&L!JJ!!1+!!!%J!!!&mB!FdI!!!0&3IfAi i!!!!J')!!,!$!!!iI`!!J!%!5$JK!%"m#!1QJq(rr%k!!#"&G!-!N!3&!!!!'%9 e!*!&2`!!!#"&G!-!N!3#!!!!0%9Z$!3!!!"J!!!!$)!!N!Z!!!"8#!!!!%9h!*! &,J#3"%9V!!3!!!"K!!!!L)!!N!Gm#!+QNq(rr*2"rrL6SIrdN!!"!!L8)Iq`1m- !!$[N!!!lS!!!U'-!!+J%!!"m!`!!3))!1)"q!!+!(`!#I!-!!%##!#JiIJ!'1*m !"MLJ!!!i`!!"5!!!!@!!!!"8B!Br3B)!#$ZJ!!%iI3!!J!%!@$JK!&"m#!1QJq( rr)2"rrL$SIrd6S!!)%9e!*!&)J!!!&4&EJ`%!!!!BJ!!!!b!!*!,J!!!L"J!!!" &G`#3"@%!N!4&D`!%!!!!B`!!!)L!!*!(I!J#TT2Krrb6`IriNk(rp*!!!3!)P#( rX$[$!!!lj!!!1k!!!+KM!!#S"!!!I!-!!%##!$5!IJ!#J"m!!R`$!!"!JJ!N1(i !"MLI!!BiS!!!1-!!!8J!!!&J!!!!9'!'2d##!!JlS!!"1(d!!)!"!&Ji)3"3I!J $TS2Krrb$`IriJk(rp%k!!#"&G3#3"5)!!!"84@i-"!!!!'3!!!!-J!#3#i!!!)J B!!!!4AF!N!9M!*!%4@X!"!!!!'8!!!#3!)!!N!Gm#!+QNq(rr*2"rrL3!!%!#*3 KrZ!l``!!N!#"!6b$iJ!!1'%!J)#"!6`iS!!"5!!!!6KK!-JiJ3#!5!!!!8J!!#` iB3$)1*i!!%J!!!&8B!Br3B)!$$KJ!!&)!!!J1'%!1$L"!-K)!!!"U"m!!#`!!!" "J[r31'!!!)!"!5Ji)3%JI!J$TS2Krrb$`Iri6S!!)%9d!`#3"!)!!!!F4A8!N!9 E!!!!,%9e!*!&#!!!!$K&G3#3"@%!!!")4A8!N!8@!!!!C%9Z$!3!!!"Q!!!!$)! !N!Z!!!#3!"!!!!"&G`#3"@8!N!4&D`!%!!!!C`!!!+b!!*!(I!J#TT2Krrb6`Ir iN!!"!!L8)Ip`N!"K!+Jlj!!!N!#K!,!laJ!!,"i!2d#"!"3i!2rEJ')!!,!$!!" )!!"31'%!1$LI!!")!!!"J')!!+J$!!!X!!!!3))!0$Kr!!H!J3#`Qpm!"PI&"Mj )!!!"B!!!!)!I!!)X!!!"3))!%$Kr!!!iJ2rr5!!!!B"K!+JiR`!!5!!!!B!"!*J i)3#3!(`)!kD$iIrmJm(rq%k!!#"&G!-!N!3#!!!!-%9e!*!&6J!!!%4&G!-!N!3 #!!!!5%9e!*!&'3!!!'K&G3#3"4!!!!#%4A8!N!8)!!!!N!"&EJ`%!!!!D!!!!!b !!*!,J!!!V"!!!!"&G`#3"@F!N!4&D`!%!!!!#3!!!%5!!*!(I!J#TT2Krrb3!!% !#*3Krm#3!'%!@*!!J3"F1q8!!)"K!&L!J3"F1,m!!BMI!!")!!!"J!%!5$JK!%" m#!1QJq(rr%k!!#"&G3#3"@F!!!!X4@i-"!!!!'N!!!!-J!#3#i!!!%3)!!!!4AF !N!8*!*!%4@X!"!!!!'S!!!"%J!#3"h`)!UD3!!%!#*3Kri#3!'%!Q*!!J3#FN!# K!+!iB3!iJ)%!R%J!!!'!B3#B1)%!1)#K!+")!!!"J!%!L$JK!)"m#!1Q6S!!)%9 e!*!&#!!!!#"&G3#3"3N!!!!`4@i-"!!!!'X!!!!-J!#3#i!!!%3!N!4&G`#3"@S !N!4&D`!%!!!!E!!!!&#!!*!(I!J#TT2Krrb3!!%!#*3Krm#3!'%!@*!!J3"F1q8 !!$Kr!!")!!!"B!!!!$M$!!#!B3"BJ)%!A$Lr!!")!!!"J!%!5$JK!%"m#!1QJq( rr%k!!#"&G3#3"@d!!!!J4A8!N!9R!!!!1%9Z$!3!!!"Z!!!!$)!!N!Z!!!"3#!! !!%9h!*!&E!#3"%9V!!3!!!"[!!!!4)!!N!Gm#!+QN!!"!!L8)Iq!N!"K!*L3!)% !R*!!S3#J1'%!1)#"!*a)!!!"J'%!Q$L"!$L!S3#J5!!!!B!"!)Ji)3#!I!J$TNk !!#"&G3#3"3J!!!!J4A8!N!9X!!!!-%9Z$!3!!!"`!!!!$)!!N!Z!!!"%!*!%4AF !N!9[!*!%4@X!"!!!!(%!!!#JJ!#3"h`)!UD6iIrmNm(rq*!!!3!)P#(rF*!!B3# SN!#"!+`la3!!Jq)!!$KK!$L!J3#X5!!!!B!"!$SX!!!"3))!&$KK!$JiRJ!!5!! !!8J!!$5S!3!iX"m!&S!"!$U3!"m!-$J"!$k3!"m!%V2I!"`iI`!!5!!!!@!!!!# !JJ!!X'3!!)"K!+JiJ3!i5!!!!B!"!*Ji)3#3!(`)!kD$iIrmJm(rq%k!!#"&G!- !N!3&!!!!)%9e!*!&#!!!!#a&G3#3"4!!!!"%4A8!N!8m!!!!E%9d!`#3"!)!!!" d4A8!N!8)!!!!K%9Z$!3!!!"b!!!!$)!!N!Z!!!#J%!!!!%9h!*!&F3#3"%9U!!3 !!!"c!!!!d)!!N!Fi!!!!N!!&!!")!!#dJ!8!!&3!)$D3!!8!!)J$!!"m!!Gd,!! !4d#!!#3X!!!k3)!!%#`!!$"!J!!S5!!!H#`!!%&!J!"85!!!E#`!!'G!J!"N,!! !B8#!!#4)!!"BJ18!!)J$!!"m"JGd1!Erd(cJ!hL3!!8!!%J!!%5!j3!!L!-!!(` '"h3i"[qTI1!$H*!!"3!!5!!!+)$P!!#)!`!!I!B(G$J'rmPmi!0iN!!&!!")!!! -1'!!!%k!!#!iB`!",!3!!$L%rrp!J[p)1'!!!8k!!#"&D`!%!!!!G!!!!G#!!*! (I!J#TT2Krrb6`IriNk(rp*!!!3!)P#(rB$[$!!!lj!!!Q+%!`i1L!!#)"!!!,!! !%6[r!!&"JJ!-1'!!!%J!!AJiI`!!1)!!"$LK!)")!!!"9'!'2d'#!9b!!3#!X"i !!$Kr!!3iJ!!)1+%!J%J!!!&8B!Br3B)"2)!"!)#3!"i!!S`I!!`X!!!k3))"+$K r!!%iJ!!k5!!!!@!!!!!S!`!!3))"%)JI!!&m!!Ge3))!'$KK!$JiRJ!!5!!!!6K J!!&)!!$d1(m!!8J!!!&J!!!!Q(m!!)"L!!#)!`!!+!!!!%'#!%#SIJ!!J*i!!ML r!!!ihJ!!5!!!!@!!!!#`I3!!I'!(08'#!$LS(3!!,!$re8##!#`i!!!!X"d!!%J !!#!iIJ!'1*m!!)JI!!"m"3Gd1+8!!8J!!!&J!!!!L!%!`bJ!!!"!JJ!JJ')!!)J $!!!S!!!!3B)!%$Kq!!!iJ!!"5!!!!6Kq!!BiR`!!1+!!!$M!!!&)!!!"B!!!!&4 J"Mp"JJ!J1(i!"MLI!!#)(`!!I!8(G$LP!!&)!!!"B!!!!$J!!$UB(`!!1'!!!8J !!!JiB!!!J!%!U$JK!+"m#!1QJq(rr)2"rrL$SIrd6S!!)%9d!`#3"!)!!!!N4A8 !N!9c!!!!6%9e!*!&F`!!!'a&G3#3"9%!!!#84A8!N!8@!!!!Z%9e!*!&E3!!!-K &G!-!N!3J!!!!e%9e!*!&)3!!!24&G3#3"4N!!!%d4A3$!*!%(!!!!8K&G3#3"4d !!!&J4A8!N!8L!!!"G%9e!*!&'3!!!CK&EJ`%!!!!G3!!!!b!!*!,J!!"d"J!!!" &G`#3"A3!N!4&D`!%!!!!GJ!!!Y5!!*!(I!J#TVmKrq53!!%!#*3Kra!l``!!1q3 !!$XP!!#$3J!!Ji)!!%J!!!&8B!Br3B)!$$Kq!!")!!+-1(m!!%J!!!&J!!!!N!" K!-L$BJ!!J')!!)J$!!!S!!!!3B)!l$Kq!!")!!!"1(m!!$LE!!")!!!"B!!!!+K q!!#!RJ!#1,X!!$MH!!")!!!"B!!!!,"m!!"mB!Fe3B)!*%#!!+`X!2r93B)!#%J !!+!i!!!!X"`!!$Kq!!")!!)-9b!'2d##!"b)'J!!+!!!!%'#!"!iIJ!!1)!!!8J !!!%iI`!!1)!!1NJ!!!&J!!!!I(dEH8'#!!Jlr3!"1(m!!$LE!!")!!!"B!!!!$K q!!BiQ`!!1+!!!$M!!!&)!!!"B!!!!&4J"Mp"JJ!F1(i!"MLE!!#)Z`!!1+8!!8J !!!&J!!!!1(i!!%J!!B#)(`!!,!!!1N'#!"`iI`!!1)!!1NJ!!!&J!!!!I(dEH8# #!#!iIJ!!5!!!!BJI!!!X!!!k3))!D$[r!!&)!!"JI"rS8#`!!$j!J3!81!$rfl! F!!!iIJ!!5!!"*$Kq!!FiR`!!I,rS8$J&!!'B(J!'9!8'2NJ!!!&J!!!!1(i!!$L !rrp)!!!"I'!(08'#!!`iIJ!!5!!!k$[p!!'S(!!!,!!!!%'#!+JiIJ!!5!!!d)J I!!!X!!!k3))!0$Kq!!!iJ!!"5!!!!6KK!)!iRJ!!5!!!!DJF!!!X!!!!1rm!!8' #!'`iIJ!!5!!!P$Kr!!!iJ!!k5!!!!@!!!!"mI4Yj3B)!$$J!!!#B(3!!1'%!1$L H!!!i[`!!5!!!!5JG!!""JJ!-1!!!1TJG!!#S(!!!,!!!!%'#!!`iIJ!!5!!!3#J G!!""JJ!81rd!!BJI!!"m!!Ge3),rA&FJ"Mp!JJ!FL"S!!#J!!!""JJ!31(i!!$L !!!&)!!!"1(i!!)!"!2Ji)3$`I!J$TVXKrq41J!!J4A3$!*!%(!!!!"a&G!-!N!3 #!!!!)%9e!*!&G!!!!#4&G3#3"@d!!!!m4A3$!*!%0J!!!%K&G!-!N!3J!!!!6%9 e!*!&$J!!!'"&G3#3"AF!!!"X4A8!N!8K!!!!K%9e!*!&(3!!!04&G3#3"AJ!!!$ J4A8!N!9h!!!!r%9e!*!&)J!!!44&G3#3"4N!!!%d4A8!N!94!!!"@%9e!*!&&3! !!@a&G3#3"4N!!!'i4A8!N!83!!!"b%9e!*!&(3!!!JK&G3#3"4B!!!)84A8!N!9 4!!!#1%9e!*!&E!!!!Pa&G3#3"4d!!!+i4@i-"!!!!(N!!!!-J!#3#i!!!Y3i!!! !4AF!N!9f!*!%4@X!"!!!!(S!!!!iJ!#3"h`)!UD3!!%!#*3Kri#3!'%!Q$KK!$L !J3#B1+!!!8J!!!%iB3!i5!!!!B!"!)Ji)3#!I!J$TNk!!#"&G3#3"4X!!!!F4A8 !N!8l!!!!*%9Z$!3!!!"l!!!!$)!!N!Z!!!!i!*!%4AF!N!9k!*!%4@X!"!!!!(` !!!!iJ!#3"h`)!UD3!!%!#*3Kri#3!'%!Q$KK!$L!J3#B1+!!!8J!!!%iB3!i5!! !!B!"!)Ji)3#!I!J$TNk!!#"&G3#3"4X!!!!F4A8!N!9+!!!!*%9Z$!3!!!"p!!! !$)!!N!Z!!!!i!*!%4AF!N!9m!*!%4@X!"!!!!(i!!!"!J!#3"h`)!UD3!!%!#*3 Kri#3!'%!Q*!!J3#F1'%!1)#"!*JiS!!"5!!!!6KK!$L!J3#F5!!!!B!"!)Ji)3# !I!J$TNk!!#"&G3#3"4X!!!!J4A8!N!90!!!!,%9Z$!3!!!"r!!!!$)!!N!Z!!!" !!*!%4AF!N!9q!*!%4@X!"!!!!)!!!!!iJ!#3"h`)!UD3!!%!#*3Kri#3!'%!Q$K K!$L!J3#B1+!!!8J!!!%iB3!i5!!!!B!"!)Ji)3#!I!J$TNk!!#"&G3#3"4X!!!! F4A8!N!98!!!!*%9Z$!3!!!#"!!!!$)!!N!Z!!!!i!*!%4AF!N!@!!*!%4@X!"!! !!))!!!"`J!#3"h`)!UD3!!%!#*3Kri#`B3#DN!#"!*`iB3!iU)%!QNJ!!!'!B3# F1+2rq$L"!$!i!!!)I!N$TS4N!!L!"!!%P'8!#*!!"3!%3J$rm)"N!!LJ"!!-N!" P!!L`"3!-J')!!+KM!!#!!3#)1#%!J(`)!kC1J!!J4A8!N!8a!!!!(%9d!`#3"!) !!!"B4@i-"!!!!)-!!!!-J!#3#i!!!(!!N!4&G`#3"B)!N!4&D`!%!!!!K!!!!(b !!*!(I!J#TT!!!3!)P#(rJ,"K!*U3!)%!R*!!S3#J1'%!1+L"!*U!S3#F1-!!!%J !!!'!B3#J1+2rq$L"!$!i!!!)I!N$TS4N!!L!"!!%P'8!#*!!"3!%3J$rm)"N!!L J"!!-N!"P!!L`"3!-J')!!+KM!!#!!3#)1#%!J(`)!kC1J!!J4A8!N!8N!!!!+%9 d!`#3"!)!!!"N4@i-"!!!!)8!!!!-J!#3#i!!!(`!N!4&G`#3"B3!N!4&D`!%!!! !KJ!!!(5!!*!(I!J#TT!!!3!)P#(rJ*!!B3#BN!#"!*`iB3!iJ)%!Q$LJ!!")!!! "J'%!R$LMrrJiJ3!`1!!!#(`*!kD%C!!)J!3!"*4P!!L3!!8!"%)!rr#!C!!)S!3 !$*!!C3!)X!8!$)"L!!#SB`!!J!%!L$JK!)"m#!1Q6S!!)%9e!*!&GJ!!!#"&G!- !N!3#!!!!A%9Z$!3!!!#(!!!!$)!!N!Z!!!"d!*!%4AF!N!@'!*!%4@X!"!!!!)J !!!#!J!#3"h`)!UD3!!%!#*3Kri#3!'%!Q,#"!*k3!+%!S*!!`3#N1'%!1)#"!*L SS3#HJ-%!S%J!!!'!B3#N1+2rq$L"!$!i!!!)I!N$TS4N!!L!"!!%P'8!#*!!"3! %3J$rm)"N!!LJ"!!-N!"P!!L`"3!-J')!!+KM!!#!!3#)1#%!J(`)!kC1J!!J4A8 !N!8V!!!!,%9d!`#3"!)!!!"S4@i-"!!!!)N!!!!-J!#3#i!!!)!!N!4&G`#3"BJ !N!4&D`!%!!!!LJ!!!)#!!*!(I!J#TT2Krrb3!!%!#*3Krc!li`!!1'%!J$LI!!! iS!!!5!!!!6KK!$JiJ3#!5!!!!6LrrrJiJ3!`1!!!#(`*!kD%C!!)J!3!"*4P!!L 3!!8!"%)!rr#!C!!)S!3!$*!!C3!)X!8!$)"L!!#SB`!!J!%!f$JK!0"m#!1QJq( rr%k!!#"&G3#3"4X!!!!J4A8!N!8@!!!!,%9d!`#3"!)!!!"N4@i-"!!!!)X!!!! -J!#3#i!!!)!)!!!!4AF!N!@+!*!%4@X!"!!!!)`!!!#)J!#3"h`)!UD6iIrmN!! "!!L8)Im`1q-!!*!!J3$X1'%!J$LI!!!iS!!!5!!!!6KK!$JiJ3#!J+%!l%J!!!% i[rri1)%!-$J!!!Km#31QK'3!#)!%!!58C3!)N!!&!!4#!2r`J'3!#+!%!!b3!'8 !#,!&!!b!BJ!!U'-!!)!"!0Ji)3$3I!J$TS2Krra1J!!J4A8!N!8E!!!!*%9e!*! &DJ!!!$4&G!-!N!3#!!!!E%9Z$!3!!!#0!!!!$)!!N!Z!!!#)#!!!!%9h!*!&M!# 3"%9V!!3!!!#1!!!!I)!!N!Gm#!+QNq(rr*2"rrL6SIrdN!!"!!L8)Ip`1k-!!$[ %!!!iB3!i1*d!!$LJ!!")!!!"1'%!1$LH!!!iS!!!5!!!!6[M!!"ri!Fe3B)!$$K r!!")!!!31"d!"T!!(J!51'!!!)!"!*Ji)3#3!(`)!kD$iIrmJm(rq)1Krr41J!! J4A8!N!8E!!!!,%9e!*!&2`!!!$a&EJ`%!!!!M`!!!!b!!*!,J!!!I"J!!!"&G`# 3"Bi!N!4&D`!%!!!!N!!!!!#)J!#3"h`)!UD6iIrmN!!"!!L8)Im`1q-!!,#"!1i iB3#!1*m!!$LJ!!")!!!"1'%!1$L"!)#SS3$Z5!!!!6LrrrJiJ3!`1!!!#(`*!kD %C!!)J!3!"*4P!!L3!!8!"%)!rr#!C!!)S!3!$*!!C3!)X!8!$)"L!!#SB`!!J!% !f$JK!0"m#!1QJq(rr%k!!#"&G3#3"4X!!!!N4A8!N!9a!!!!0%9d!`#3"!)!!!" X4@i-"!!!!*%!!!!-J!#3#i!!!)J)!!!!4AF!N!@3!!#3"%9U!!3!!!#5!!!!B)! !N!Gm#!+QNq(rr*!!!3!)P#(rF*!!B3#S1!!!!*!!!3"+1'%!1%J!!!&J!!!!1q- !!(rJ"c9"JJ!-1(m!!%J!!"5S!3"1J'%!U,!$!!!iB!!!J!%!Q$JK!*!!I!J$TS2 Krra1J!!J4A8!N!@6!!!!)%9Z$!3!!!#8!!!!$)!!N!Z!!!"J#!!!!%9h!*!&NJ# 3"%9V!!3!!!#9!!!&q)!!N!Gm#!+Q[d(rk*!!!3!)P#(lF*!!B35SN!#""+`iB33 SJ)%%U$LJ!!&)!!!"1'%$i)#""+`iS!!"5!!!!6KK!4!iJ32J1+!!!8J!!!%iB31 B1)%"%%J!!!'S!33S,!!!!%##!#!iB33S5!!!!6[M!!"ri!Fe3B)!$$Kr!!")!!9 XU!%$i#`!!!"!JJ!J1'%$i%J!!!%li`!!Iq!(08'#!!`iI`!!5!!&4+KK"#LS!32 JI!-!!%'#!!`iB2VT5!!&,$KK"#iiJ32Q1+!!!$M!!!&)!!!"B!!!!&4J"Mjm!!! d9"lCIS"K"#U!!32LI'-!8$!$rrprS"N31'%$i$L"!RJiS!!!5!!!!AaJ"c4m!!! d9"cCIMKK"#JiJ3,N1+!!!%J!!!%li`!!Iq!(08'#!!`iI`!!5!!%Y)J"!`*8!!E h3B)!)$KK"#JiJ32J5!!!!94J"Mp"JJ!-1'$rKNJ!")`lB!!!L!%$!P3!"[G!JJ! 8L!%$!P3!"rp"JJ!)1f!!!9GJ"Mp"JJ!BU'%%+)#""#SiS33Z5!!!!@!!!!"A`!B r3))!&&HJ"Mp!JJ!-1q!!!%J!!maAJ!Br3B)!f)J"!TC8!!Eh3B)!'+!"!U`S!!! !3B)!$$KJrp&)!!331'%!b$b!9%fSS32JJ-%$iML%8%C)!!!"1+%#+$L$rrJi!!! )I!N$TS4N!!L!"!!%P'8!#*!!"3!%3J$rm)"N!!LJ"!!-N!"P!!L`"3!-1d!!!)J "!TC8!!Eh3))!&)J"!TC8!!Ir3B)!#$Y!!!&A3!Br3B)!'+KK!q#!J32L1+%$jNJ !!!&J!!!!U'%$i)#"!q)iS32Q1-%#0NJ!!!&J!!!!1q-!!(rJ"c9"JJ!-1(m!!%J !!eaAS!Br3))!*+KK"#L!J33U1+%%,MM"!qC)!!!"B!!!!$[M!!")!!*X9m!'2d# #!#LSB33SJ)%%+MLK"#k!`31D11%$RNJ!!!&J!!!!1q-!!%J!!N!iB3#!U)%%+)# K"#Si`32Q11!!!%J!!!%iS30)1)2rq$J!!!Km#31QK'3!#)!%!!58C3!)N!!&!!4 #!2r`J'3!#+!%!!b3!'8!#,!&!!`iB3035!!!!94J"Mp!JJ"XU'%%+)#""#SiS33 Z1-%$jNJ!!!&J!!!!1q-!!(rJ"c9!JJ(!U'%%+)#""#SiS32QJ-%$QMMK!jj)!!! "B!!!!$[M!!"ri!Fe3B)"Q+KK"#L!J33U1+%$jMM""#j)!!!"B!!!!%J!!A`iB3( S2)"86DLK!q#!`32L1)434NJ!!!%iB30@1)%"lSLK!HiiT3!"5!!!!@!!!!")!!" -1'%"S$b!9%fSS3(SJ-%"kML%8%C)!!!"1'%$9ML"!DD)S3'Q1+8!!8J!!!&J!!! !1'%"lML"!DD)S3'Q1+8!!8J!!!&J!!!!1'%$8%J!!!&8B!Br3),rV$KK!HK)!!! "9'!'2d##rjbSB33SJ)%%+MLK"#ii`30@5!!!!@!!!!!li`!!Iq!(08##!,bSB33 SJ)%%+MLK!eD!`31D11%$RNJ!!!&J!!!!1q-!!(rJ"c9"JJ!JU'%%+)#""#SiS30 @1-%%,NJ!!!&J!!!!5!!!H+KK!q#!J32L1+%$9MM"!qC)!!!"B!!!!$[M!!"ri!F e3B)!9$KK!$JiJ33S1+!!!8J!!!%iB3&B1)%!1%J!!!'SB32JJ)%$iMLK!eD!`3& D11%"ANJ!!!&J!!!!U'%%+)#""#SiS30@1-%%,NJ!!!&J!!!!9i!'2d'#!&Kri!F e3B)!2+KK!M#!J3)b1+%#0MM"!qC)!!!"B!!!!&G!"Mp"JJ!`U'%$i)#"!q)iS32 Q5!!!!@!!!!")!!!BU'%#-)#"!M)iS3)f5!!!!@!!!!"ri!Fe3))!+&I!"Mp!JJ! JU'%$i)#"!q)iS32Q1-%$jNJ!!!&J!!!!1q-!!&GJ"Mp"JJ!iIq!(08'#!"bSB33 SJ)%%+MLK"#j)!!!"B!!!!%J!!"LSB32JJ)%$iMLK!qC)!!!"B!!!!$Kr!!#!!35 B1#%%N!"m#!1QZd(rk%k!!#"&G3#3"4X!!!!N4A8!N!8E!!!!0%9e!*!&@`!!!%4 &G3#3"3J!!!"34A8!N!@5!!!!C%9e!*!&NJ!!!)a&G3#3"5)!!!$-4A8!N!8r!!! "!%9e!*!&2`!!!4a&G3#3"@8!!!&)4A8!N!@@!!!"N!"&G3#3"5X!!!(X4A8!N!@ @!!!#@%9e!*!&P`!!!R"&G3#3"CF!!!+N4A8!N!@B!!!#d%9e!*!&(`!!![4&G3# 3"5i!!!-`4A8!N!@A!!!$6%9e!*!&Q!!!!h4&G3#3"CF!!!1B4A8!N!8V!!!$Z%9 e!*!&'3!!!ma&G3#3"5X!!!2X4A8!N!8C!!!%!%9e!*!&'3!!""K&G3#3"5i!!!3 N4A8!N!8Z!!!%0%9e!*!&P`!!"&"&G3#3"CJ!!!4i4A8!N!@A!!!%R%9e!*!&P`! !",K&G3#3"9X!!!6B4A8!N!8)!!!%j%9e!*!&Q!!!"2a&G3#3"CF!!!884A8!N!@ A!!!&2%9e!*!&Q3!!"9K&G3#3"CS!!!9`4A8!N!@A!!!&Q%9e!*!&Q3!!"F"&G3# 3"CN!!!AB4@i-"!!!!*X!!!!-J!#3#i!!"IJ`!!!!4AF!N!@9!*!%4@X!"!!!!*` !!!#3!)!!N!Gm#!+QNq(rr*2"rrL3!!%!#*3Krh!l``!!Jq)!!$KK!$JiRJ!!1+! !!%J!!!'S(`!!,!!!!%'#!!bSI`!!5!!!2$LqrrJiJ3!`1!!!#(`*!kD%C!!)J!3 !"*4P!!L3!!8!"%)!rr#!C!!)S!3!$*!!C3!)X!8!$$KJ!!#!!3#B1#%!N!"m#!1 QJq(rr)2"rrK1J!!J4A3$!*!%!J!!!"K&G3#3"4X!!!!S4@i-"!!!!*d!!!!-J!# 3#i!!!*!!%!!!!%9h!*!&R!#3"%9V!!3!!!#H!!!!I)!!N!Gm#!+QNq(rr*!!!3! )P#(r!*!!B3%B1'%!T)#"!4JiS!!"5!!!!6KK!+3iJ3!i1+!!!8J!!!%li`!!Iq! (08'#!!`iI`!!5!!!*$KK!)4)!!!"B!!!!)!"!*b3!!%!D$KK!$K)!!!"B!!!!)! "!3Ji)3%!I!J$TS2Krra1J!!J4A8!N!8E!!!!)%9e!*!&2`!!!$"&G3#3"Cm!!!" -4A8!N!@J!!!!B%9Z$!3!!!#K!!!!$)!!N!Z!!!"m#!!!!%9h!*!&RJ#3"%9X"3% !!!!f!!!#!)!!N!G&E"!"!!!!+!!!!!'!!*!(4@`3"!!!!#F!!!!%J!#3"d9Y"33 !!!!&!!!!E)!!N!G&E38#!!!!!`!!!!+!!*!(4@d&!J!!!!)!!!!#J!#3"d9[#J3 !!!#L!!!!#)!!N!p&GJ#3"Ci!N!4&GJm!N!5M!!!!"%9[#J3!!!#N!!!!#)!!N!p &GJ#3"C`!N!4&GJm!N!5M!!!!"%9[#J3!!!#P!!!!#)!!N!p&GJ#3"C8!N!4&GJm !N!5M!!!!"%9[#J3!!!#Q!!!!#)!!N!p&GJ#3"C!!!*!%4AB2!*!%S`!!!!4&E`S %!!!!T`!!!!L!!*!24AB!N!@1!*!%4AB2!*!%S`!!!!4&E`S%!!!!U!!!!!L!!*! 24AB!N!@-!*!%4AB2!*!%S`!!!!4&E`S%!!!!U3!!!!L!!*!24AB!N!@+!*!%4AB 2!*!%S`!!!!4&E`S%!!!!UJ!!!!L!!*!24AB!N!@)!*!%4AB2!*!%S`!!!!4&E`S %!!!!U`!!!!L!!*!24AB!N!@'!*!%4AB2!*!%S`!!!!4&E`S%!!!!V!!!!!L!!*! 24AB!N!@%!*!%4AB2!*!%S`!!!!4&E`S%!!!!V3!!!!L!!*!24AB!N!@#!*!%4AB 2!*!%S`!!!!4&E`S%!!!!VJ!!!!L!!*!24AB!N!@!!*!%4AB2!*!%S`!!!!4&E`S %!!!!V`!!!!L!!*!24AB!N!9q!*!%4AB2!*!%S`!!!!4&E`S%!!!!X!!!!!L!!*! 24AB!N!9m!*!%4AB2!*!%S`!!!!4&E`S%!!!!X3!!!!L!!*!24AB!N!9k!*!%4AB 2!*!%S`!!!!4&E`S%!!!!XJ!!!!L!!*!24AB!N!9f!*!%4AB2!*!%S`!!!!4&E`S %!!!!X`!!!!L!!*!24AB!N!9d!*!%4AB2!*!%S`!!!!4&E`S%!!!!Y!!!!!L!!*! 24AB!N!9a!*!%4AB2!*!%S`!!!!4&E`S%!!!!Y3!!!!L!!*!24AB!N!9[!*!%4AB 2!*!%S`!!!!4&E`S%!!!!YJ!!!!L!!*!24AB!N!9X!*!%4AB2!*!%S`!!!!4&E`S %!!!!Y`!!!!L!!*!24AB!N!9U!*!%4AB2!*!%S`!!!!4&E`S%!!!!Z!!!!!L!!*! 24AB!N!8*!*!%4AB2!*!%S`!!!!4&E`S%!!!!Z3!!!!L!!*!24AB!N!9R!*!%4AB 2!*!%S`!!!!4&E`S%!!!!ZJ!!!!L!!*!24AB!N!9P!*!%4AB2!*!%S`!!!!4&E`S %!!!!Z`!!!!L!!*!24AB!N!9M!*!%4AB2!*!%S`!!!!4&E`S%!!!![!!!!!L!!*! 24AB!N!9K!*!%4AB2!*!%S`!!!!4&E`S%!!!![3!!!!L!!*!24AB!N!8Z!*!%4AB 2!*!%S`!!!!4&E`S%!!!![J!!!!L!!*!24AB!N!8G!*!%4AB2!*!%S`!!!!4&E`S %!!!![`!!!!L!!*!24AB!N!9B!*!%4AB2!*!%S`!!!!4&E`S%!!!!`!!!!!L!!*! 24AB!N!9E!*!%4AB2!*!%S`!!!!4&E`S%!!!!`3!!!!L!!*!24AB!N!8[!*!%4AB 2!*!%S`!!!!4&E`S%!!!!`J!!!!L!!*!24AB!N!91!*!%4AB2!*!%S`!!!!4&E`S %!!!!``!!!!L!!*!24AB!N!8@!*!%4AB2!*!%S`!!!!4&E`S%!!!!a!!!!!L!!*! 24AB!N!8r!*!%4AB2!*!%S`!!!!4&E`S%!!!!a3!!!!L!!*!24AB!N!98!*!%4AB 2!*!%S`!!!!4&E`S%!!!!aJ!!!!L!!*!24AB!N!9,!*!%4AB2!*!%S`!!!!4&E`S %!!!!a`!!!!L!!*!24AB!N!90!*!%4AB2!*!%S`!!!!4&E`S%!!!!b!!!!!L!!*! 24AB!N!9+!*!%4AB2!*!%S`!!!!4&E`S%!!!!b3!!!!L!!*!24AB!N!8q!*!%4AB 2!*!%S`!!!!4&E`S%!!!!bJ!!!!L!!*!24AB!N!8l!*!%4AB2!*!%S`!!!!4&E`S %!!!!b`!!!!L!!*!24AB!N!8d!*!%4AB2!*!%S`!!!!4&E`S%!!!!c!!!!!L!!*! 24AB!N!8a!*!%4AB2!*!%S`!!!!4&E`S%!!!!c3!!!!L!!*!24AB!N!8V!*!%4AB 2!*!%S`!!!!4&E`S%!!!!cJ!!!!L!!*!24AB!N!8N!*!%4AB2!*!%S`!!!!4&E`S %!!!!c`!!!!L!!*!24AB!N!8I!*!%4AB2!*!%S`!!!!4&E`S%!!!!d!!!!!L!!*! 24AB!N!8E!*!%4AB2!*!%S`!!!!4&E`S%!!!!d3!!!!L!!*!24AB!N!8)!*!%4AB 2!*!%S`!!!!4&E`S%!!!!dJ!!!!L!!*!24AB!N!89!*!%4AB2!*!%S`!!!!4&E`S %!!!!d`!!!!L!!*!24AB!N!88!*!%4AB2!*!%S`!!!!4&E`S%!!!!e!!!!!L!!*! 24AB!N!86!*!%4AB2!*!%S`!!!!4&E`S%!!!!e3!!!!L!!*!24AB!N!83!*!%4AB 2!*!%S`!!!!4&E`S%!!!!eJ!!!!L!!*!24AB!N!81!*!%4AB2!*!%S`!!!!4&E`S %!!!!e`!!!!L!!*!24AB!N!8(!*!%4AB2!*!%S`!!!!4&EJ-%!!!!8`!!!!5!!*! ,4AB&!*!%8`#3"%9[!`3!!!!&!!!!")!!N!Y&GJ8!N!3&!*!%4@i$"!!!!$B!!!! %J!#3#d9f"3#3"$B!N!4&EJ-%!!!!+J!!!!5!!*!,4AB&!*!%+J#3"%9Z!`3!!!! T!!!!")!!N!Y&GJ8!N!3T!*!%4@m$"!!!!#!!!!!%J!#3#d9f"3#3"#!!N!4&E`- %!!!!(!!!!!5!!*!,4AB&!*!%(!#3"%9[!`3!!!!%!!!!")!!N!Y&GJ8!N!3%!*! %4@m$"!!!!!-!!!!%J!#3#d9f"3#3"!-!N!4&E`-%!!!!!J!!!!5!!*!,4AB&!*! %!J#3"%9[$`3!!!#M!*!%J!#3"d9S!!!%U%G98dN!!HaPFR*[FPpI194'D@aP8h" PB`!#qQ0eFPC[E&pI194'D@aP8h"PB`!#Qf0eFN4TFPpI194'D@aP8h"PB`!%Zfa KFh4*EQC[Aemj9%CTE'96F'9M!!4D3$Ja-`!(k#j$D%4TFPpI194'D@aP8h"PBdC 53cP84QPXC90`C@-!"[!ZAepMG&pI194'D@aP8h"PBdC53cP84QPXC90`C@-!"cF ZAepKF'aIAcP84QPXC90`C@0'8%09B`!%@d!i-63!![NZ3h9bFQ9ZG%4TFPpI4P* c8Q`!"N`Z8%*)4f9d9QpX8hPZB`!%Ad!i-6J!!DBZ4'9QBA9XG%4TFPpI194'D@a P8h"PBdCf!!4k3$Jb-`!'!Lj'D@jN9QpXAemj9%CTE'96F'9M4R-!"i)Z8%*(CA4 @5@jQEe0jEQ-!"*K!1$-a!!0i,P*[Eh4IAcP84QPXC90`C@0'GJ!&1#j*Fe*[Eh4 IAcP84QPXC90`C@0'GJ!'B5j%C@CKG@adAemj9%CTE'96F'9M4RB!!p3ZAepYE9p I194'D@aP8h"PBdCf!!5I3$Jc1!!"Y5j36(0dFQ0`H3!(C5jYC@eMF(N!",T!1$3 c!!@S,PpIBh4IAcP84QPXC90`C@0'8N-f4P06F'9M9@-!!!YSBA0"E'PKF`!(ILj 5CA0[E(CPAemj9%CTE'96F'9M4P9M!!6B3$Je-3!#&#jIAf0dAemj9%CTE'96F'9 M4R0X8%09Be9M!!9kD'&c6@&VC8C68h"PB`!&Cbj'8deKDf9'8e0`C@-!"%`Z4A& eB@a6G(*TEQF!"2P!1$Bb!!'K,PpIBh4IAcP84QPXC90`C@0'Fe"$9@09B`!!P5j 33NGPG&G%5@jQEe0jEQ-!""a!1$Fe!!DKER)N1$Jd!!3p3$Ji03!%A%!i163!"&e !1$Ne!!B(,PpIBh4IAcP84QPXC90`C@0'9@acE!!$J5j'D@jN4QpXC'9b!!"N,R0 `FQPZG'B!"M-Z4AKTFh4cAemj9%CTE'96F'9M3dCf!!3Z,PpIB@eTAemj9%CTE'9 6F'9M4QN!"&j!1$Nf!!-F,PpIBh4IAcP84QPXC90`C@0'F`!"Y#j33NGPG%C$3NP ZCQp6H@jM!!3l3$N`-!!%##j#E'9cFepI194'D@aP8h"PBdCf!!4#3$N`0`!!lfC eE'a3BA4S!!)[,N0[F(P$Efe`EfjPER4IAdC58'033e9M9@-!!0BZE@9YE@pfC3! %A%!j-6%!"(Y!16)`!!$2,NCeE'a3BA4SAemj9%CTE'96F'9M3dCf!!&1,P"#4f9 d3f&d5@jQEe0jEQ-!"(a!16)a!!8h,NCeE'a"E'PKFe"KG'KIAcP84QPXC90`C@0 $4RB!"BmZ3f&d5@jQEepI194'D@aP8h"PBd0'8M%`3dPZCQp33P*PBe9M!!-[,N0 eFP*PFdCTE'8!"qBZ4P0`6h"PEP*PFdCTE'8!!@dZ8Q9c4A*bEh)!"DJZ4f9d-9* PFfpeFQ0P!!GX,N4PG'&MD&*PFfpeFQ0P!!9A,N0XEh0P8Q9c4QPXC3!$Pbj9Ff9 5CA0'D@aP!!9),NGPG%&XD@&c5@jQE`!'`bj%DA0`Eh0P5'&ZC'aP!!6#3$Nd0`! (D#j5C@a3BA4SAemj9%CTE'96F'9M3dCf!!!B,P*PE&"KG'KIAcP84QPXC90`C@0 $4R0X!!6G3$Ne-J!("Lj5C@a3BA4SAemj9%CTE'96F'9M3dC53cC'8e0`C@-!!aB ZAep`F&pI194'D@aP8h"PBdCf!!6l3$Nf-!!(r#jYC@eMEA!!"pdZFh4bBfKb!!3 r3$Ni-`!%38!j1$8!"K3Z4@jMEf4PAemj9%CTE'96F'9M3dCf!!4#3$Ni0J!%4%! j1$J!"'&!16Ne!!0c,P*PFfpXGQ9IAcP84QPXC90`C@0'8N-a-%0*EQC[8%*5C@- !"Aa!-6!`13!&Qd!a-$%i!!6a,PpIE@PIAcP84QPXC90`C@0$4QN!"E0!-6!b-!! "iLj5CA0[E(CP3@aTBA0'D@aP!!@e3$%`-M)!"G0!-6!c-!!&e8!a-$-b!!Hm,Pp ICA&IAcP84QPXC90`C@0$4P*$194'D@aP8h"PB`!&ed!a-$-d!!Ge,PpIEQ9IAcP 84QPXC90`C@0$4P*$194'D@aP8h"PB`!&f8!a-$-f!!9D,NPc8'&bC@jd6fCIAcP 84QPXC90`C@0$4P*$194'D@aP8h"PB`!&qN!a-$3h!!)$,N&NC&"KG'K$Efe`Efj PER4IAcP84QPXC90`C@0'8%0MD3!&'N!a-$8h!!8F3$%`06N!"cSZAep`E&pI194 'D@aP8h"PBd0'8%09B`!&08!a-$Ba!!Dd,PpIBA"XAemj9%CTE'96F'9M4P"$B`! ([5jcG(*XC@i!"6G!-6!f-`!'c#jIAh"XAemj9%CTE'96F'9M3dC33f-!"6P!-6! f03!%)#jIAhCMAemj9%CTE'96F'9M3dCc!!983$%`0c!!!h8Z8Q9KC%j)CAKIAdC 33f0T8&9X!!*p,NPc4@jMEf4PC%C68h"PBepI194'D@aP8h"PBdC33f09B`!&hN! a-6)h!!IF,PpIBh4IAcP84QPXC90`C@0'8%0M9@-!"#%Z3fp`H8-b8&0dFPpI4P" $Be"9B`!!AbjcG(*bBfKb!!@"3$%a0cN!"98Z4P0`-NCeE'a3BA4S!!@C3$%a1$% !"'%Z4P0`-P*PE&"KG'J!"CY!-6%i-`!(F5j'8h!b4'Pb8Q9X8'&dD!!&R8!a-6J e!!A5,NC6F$*&EQ0[C'PZC`!&Rd!a-6Jh!!Gc,NC5C@C1G@db4P06F'9M!!@K3$% a1$N!!UFZ9d3b4P06F'9M!!@j3$%a16%!"&3Z8'&dD$*'8e0`C@-!"EY!-6%j-`! (j#j6F'9MD@&X-NC68h"PB`!&[8!a-6Ne!!B5,NC6F&9`!!A!3$%a16J!!2`Z4P0 `4'phEJ!&R%!a-M!a!!0J,NC6F%0KG%PZCQm!"D"!-6)`03!"@5j'8h"*EQ4PH!! &Sd!a-M!i!!(d,N4PCQ&eE(4@8Q9QAep'8R-!"8`Z8%*(CA4@Efa6H@jM!!@p3$% b-6)!"5SZ4P0`8feKFR40EhCP!!+",NK5Fh4'6'pMD`!!l5j)8Q9ZB@eP!!#J,N0 KG%e[GQ8!!XNZ5&0PG%C-Ef0V!!#a,NK%C@aPG'8!"Ea!-6)j-!!$Fbj'8h"5CA0 [E(CP!!A!3$%b163!"l)Z4P0`9'peBfK'EfaNCA)!")JZ4f9d4'&dC94TE@8!!8B Z8%*6CA4$BA4*EQC[8hPZB`!&a%!a-MNi!!B24P0`9'peBfK'EfaNCA)!!hj86d- !!X*'8h"5CA0[E(CP!!4l4P0`8feKFR40EhCP!!!P4P0`5@jNCAJ!!Se'8h"$BA4 *EQC[!!G94P0`4'phEJ!&D8C6F&9`!!D&8h"PBfPKE$*'8e0`C@-!!eG3BA4S-NC 68h"PB`!"0&G%-NC68h"PB`!'h%C5C@C1G@db4P06F'9M!!3-4P0`-N9ZBfpND@j R!!D+4P0`-N4TFP*PE&"KG'J!!`e'8h!b8Q9X8'&dD!!%qdC6F$*'G@aX8'&dD!! '@epIBh4IAcP84QPXC90`C@0'8%0M9@-!!69*Fd9ZBfpNC@4'8e0`C@0IAcP84QP XC90`C@0'8%0M9@-!!qPIAhCMAemj9%CTE'96F'9M3dCc!!9UAep`E&pI194'D@a P8h"PBd0'8%0M!!@ZAepKF'aIAcP84QPXC90`C@0'8%0M!!EZAep`E&pI194'D@a P8h"PBd0'8%09B`!'GepIBA"XAemj9%CTE'96F'9M4P"$9@-!!A*"C'43BA4S3fp YF'pZC@jdAemj9%CTE'96F'9M4P"$BfN!"#0*Fe"KFQ9ZG%pQAemj9%CTE'96F'9 M3dC53cP84QPXC90`C@-!"[pIAfjPAemj9%CTE'96F'9M3dC53cP84QPXC90`C@- !"N&IAf9aAemj9%CTE'96F'9M3dC53cP84QPXC90`C@-!"Ie&H'PcG(0IAcP84QP XC90`C@0$4RB!"[95CA0[E(CPAemj9%CTE'96F'9M4P9M!!+r8Q9cEfafC9pI194 'D@aP8h"PBdC53c%`3dPZCQp33P*PB`!$29pIE@PIAcP84QPXC90`C@0$4QN!!r" IAf&YD9pI194'D@aP8h"PBdCT!!*iAep`F&pI194'D@aP8h"PBdCf!!+GAepYE9p I194'D@aP8h"PBdCf!!4p3f&d5@jQEepI194'D@aP8h"PBd0'8M%`3dPZCQp33P* PBe9M!!@E4@jMEf4PAemj9%CTE'96F'9M3dCf!!H&8Q9X8'&dD&pI194'D@aP8h" PBd0'Ff`!"Mp5C@a3BA4SAemj9%CTE'96F'9M3dC53cC'8e0`C@-!"XY5C@a3BA4 SAemj9%CTE'96F'9M3dCf!!4A4R9XE%&XD@&c8'&dD&pI194'D@aP8h"PBd0'GJ! (N8CeE'a3BA4SAemj9%CTE'96F'9M3dCf!!0J3QaPFh0IAcP84QPXC90`C@0'GJ! #&&pIBh4IAcP84QPXC90`C@0'F`!&!epIBh4IAcP84QPXC90`C@0'9@acE!!!Rep IBh4IAcP84QPXC90`C@0'Fe"$9@09B`!"e&pIBh4IAcP84QPXC90`C@0'Ffa33e9 M9@-!"'*IAf0dAemj9%CTE'96F'9M4P*$0NC68h"PBe9M!!AdAepMG&pI194'D@a P8h"PBdC53cP84QPXC90`C@-!"G&%C@CKG@adAemj9%CTE'96F'9M4RB!"(0*Fe* [Eh4IAcP84QPXC90`C@0'GJ!#bP*[Eh4IAcP84QPXC90`C@0'GJ!&DdCTEQ4@Efa IAcP84QPXC90`C@0'F`!!i84PCQ&eE(4%DA*IAcP84QPXC90`C@0'GJ!'4%0S4'P bAemj9%CTE'96F'9M4P*$194'D@aP8h"PB`!!QY%!!!%!!!!"!*!)(R4*4&0jE@* [E!Q3"$dJ-M-X$3PV4QpZG%P%6@pLD@aP#C!%25!b0!ep1`d0)fPQ)%p-4&*2994 *6N9138e&8`d0C@jeE5"l$3PZCAGCEh*V#C!'25"V4QpZG%P%6Q9h@@pbDb`0#@G PEQ9fB3Q3"MdJDdC[ER4*4%GPEQ9fB5`0#@e[EQ&ME`Q3"MdJDdC[ER4*4%e[EQ& MEb`0#ACPEQPMC3Q3"MdJDdC[ER4*4&CPEQPMC5`0#@a[EQ4[EJQ3"MdJDdC[ER4 *4%a[EQ4[EL`0#@&dD'9ZF`Q3"Md!!!%!!!!"!*!)(J#3#4`!([rr5aJ: \ No newline at end of file diff --git a/src/mac/main.cpp b/src/mac/main.cpp deleted file mode 100644 index 47a9924bae..0000000000 --- a/src/mac/main.cpp +++ /dev/null @@ -1,18 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: main.cpp -// Purpose: Entry point -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#include "wx/app.h" - -int main(int argc, char* argv[]) -{ - return wxEntry(argc, argv); -} - diff --git a/src/mac/makefile.nt b/src/mac/makefile.nt deleted file mode 100644 index 2865fbcec3..0000000000 --- a/src/mac/makefile.nt +++ /dev/null @@ -1,955 +0,0 @@ -# -# File: makefile.nt -# Author: Julian Smart -# Created: 1997 -# Updated: -# Copyright: (c) 1997, Julian Smart -# -# "%W% %G%" -# -# Makefile : Builds wxWindows stubs library wxstubs.lib for VC++ (32-bit) -# Arguments: -# -# FINAL=1 argument to nmake to build version with no debugging info. -# - -!include - -APPVER=3.50 # 4.0 -# This means 'enable Windows 95 features' (in wxWindows and in VC++ 4.0). -WINVERSION=-DWINVER=0x0400 - -# On Alpha machines, change to CPU=ALPHA -CPU=i386 - -# Suffixes -OBJSUFF=obj -SRCSUFF=cpp - -WINFLAGS=-c -W3 -Dtry=__try -Dexcept=__except -Dleave=__leave -Dfinally=__finally -DCRTAPI1=_cdecl -DCRTAPI2=_cdecl -nologo -D_X86_=1 $(WINVERSION) -D__WIN32__ -D__WINDOWS__ -WINLINKFLAGS=/INCREMENTAL:NO /NOLOGO -align:0x1000 -machine:$(CPU) -subsystem:windows,$(APPVER) -WINLIBS=kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib oldnames.lib\ - comctl32.lib ctl3d32.lib odbc32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib # libci.lib # libci.lib required for VC++ 4.2 - -# Change this to your WXWIN directory -WXDIR=$(WXWIN) - -WXSRC=$(WXDIR)\src\stubs -WXINC=$(WXDIR)\include -WXBASESRC=$(WXDIR)\src\common - -WXLIB=$(WXDIR)\lib\wxstubs.lib - -EXTRADLLFLAGS= - -INC=-I$(WXINC) -I$(WXDIR)/src/png -I$(WXDIR)/src/zlib $(EXTRAINC) -LIBS = $(EXTRALIBS) $(WXLIB) $(WINLIBS) - -!ifndef FINAL -FINAL=0 -DEBUG=1 -!endif - -# Set this to 1 if you don't want to use precompiled headers -NOPCH=1 - -OPTIONS= - -!if "$(FINAL)" == "0" -OPT = /Od /Gy -# ***N.B.*** to save space/time, comment out /FR to avoid browse info (.sbr files) being generated -DEBUG_FLAGS= /Zi # /FR -LINK_DEBUG_FLAGS=-debug:full -debugtype:cv # /PDB:NONE -CRTFLAG=/MD -!else -# /O1 - smallest code -# /O2 - fastest code -OPT = /O1 # /O2 # /Od -DEBUG_FLAGS= -LINK_DEBUG_FLAGS=/RELEASE -CRTFLAG=/MD -!endif - -PCH= -PRECOMP= -MAKEPRECOMP= - -CPPFLAGS=$(WINFLAGS) $(DEBUG_FLAGS) $(PRECOMP) $(EXTRAFLAGS) /D__WXSTUBS__ /DDEBUG=1 $(INC) $(OPT) $(CRTFLAG) /GX /D__WXDEBUG__ /DWXDEBUG=1 -# If you don't include wxprec.h, use CPPFLAGS2 -CPPFLAGS2=$(WINFLAGS) $(DEBUG_FLAGS) /D__WXSTUBS__ /DDEBUG=1 $(INC) $(EXTRAFLAGS) $(OPT) $(CRTFLAG) /GX /D__WXDEBUG__ /DWXDEBUG=1 -LINKFLAGS=$(LINK_DEBUG_FLAGS) $(WINLINKFLAGS) -entry:WinMainCRTStartup - -THISDIR=$(WXWIN)\src\stubs - -LIBTARGET=$(WXLIB) - -# Please set these according to the settings in wx_setup.h, so we can include -# the appropriate libraries in wx.lib - -PERIPH_LIBS= -PERIPH_TARGET= -PERIPH_CLEAN_TARGET= - -GENDIR=..\generic -COMMDIR=..\common -STUBSDIR=. - -DOCDIR = $(WXDIR)\docs - -GENERICOBJS= \ - $(GENDIR)\choicdgg.obj \ - $(GENDIR)\colrdlgg.obj \ - $(GENDIR)\fontdlgg.obj \ - $(GENDIR)\gridg.obj \ - $(GENDIR)\msgdlgg.obj \ - $(GENDIR)\panelg.obj \ - $(GENDIR)\printps.obj \ - $(GENDIR)\prntdlgg.obj \ - $(GENDIR)\scrolwin.obj \ - $(GENDIR)\splitter.obj \ - $(GENDIR)\statusbr.obj \ - $(GENDIR)\tabg.obj \ - $(GENDIR)\textdlgg.obj - -# $(GENDIR)\helpxlp.obj \ - -COMMONOBJS = \ - $(COMMDIR)\cmndata.obj \ - $(COMMDIR)\config.obj \ - $(COMMDIR)\docview.obj \ - $(COMMDIR)\docmdi.obj \ - $(COMMDIR)\dynarray.obj \ - $(COMMDIR)\event.obj \ - $(COMMDIR)\file.obj \ - $(COMMDIR)\filefn.obj \ - $(COMMDIR)\fileconf.obj \ - $(COMMDIR)\framecmn.obj \ - $(COMMDIR)\gdicmn.obj \ - $(COMMDIR)\intl.obj \ - $(COMMDIR)\ipcbase.obj \ - $(COMMDIR)\helpbase.obj \ - $(COMMDIR)\layout.obj \ - $(COMMDIR)\log.obj \ - $(COMMDIR)\memory.obj \ - $(COMMDIR)\module.obj \ - $(COMMDIR)\object.obj \ - $(COMMDIR)\postscrp.obj \ - $(COMMDIR)\prntbase.obj \ - $(COMMDIR)\resource.obj \ - $(COMMDIR)\tbarbase.obj \ - $(COMMDIR)\tbarsmpl.obj \ - $(COMMDIR)\textfile.obj \ - $(COMMDIR)\timercmn.obj \ - $(COMMDIR)\utilscmn.obj \ - $(COMMDIR)\validate.obj \ - $(COMMDIR)\valtext.obj \ - $(COMMDIR)\date.obj \ - $(COMMDIR)\hash.obj \ - $(COMMDIR)\list.obj \ - $(COMMDIR)\string.obj \ - $(COMMDIR)\time.obj \ - $(COMMDIR)\wxexpr.obj \ - $(COMMDIR)\y_tab.obj \ - $(COMMDIR)\extended.obj \ - $(COMMDIR)\process.obj \ - $(COMMDIR)\fstream.obj \ - $(COMMDIR)\mstream.obj \ - $(COMMDIR)\zstream.obj \ - $(COMMDIR)\stream.obj \ - $(COMMDIR)\datstrm.obj \ - $(COMMDIR)\wincmn.obj - -# $(COMMDIR)\odbc.obj \ - -STUBSOBJS = \ - $(STUBSDIR)\accel.obj \ - $(STUBSDIR)\app.obj \ - $(STUBSDIR)\bitmap.obj \ - $(STUBSDIR)\bmpbuttn.obj \ - $(STUBSDIR)\brush.obj \ - $(STUBSDIR)\button.obj \ - $(STUBSDIR)\checkbox.obj \ - $(STUBSDIR)\checklst.obj \ - $(STUBSDIR)\choice.obj \ - $(STUBSDIR)\clipbrd.obj \ - $(STUBSDIR)\colordlg.obj \ - $(STUBSDIR)\colour.obj \ - $(STUBSDIR)\combobox.obj \ - $(STUBSDIR)\control.obj \ - $(STUBSDIR)\cursor.obj \ - $(STUBSDIR)\data.obj \ - $(STUBSDIR)\dc.obj \ - $(STUBSDIR)\dcmemory.obj \ - $(STUBSDIR)\dcclient.obj \ - $(STUBSDIR)\dcscreen.obj \ - $(STUBSDIR)\dialog.obj \ - $(STUBSDIR)\dirdlg.obj \ - $(STUBSDIR)\filedlg.obj \ - $(STUBSDIR)\font.obj \ - $(STUBSDIR)\fontdlg.obj \ - $(STUBSDIR)\frame.obj \ - $(STUBSDIR)\gauge.obj \ - $(STUBSDIR)\gdiobj.obj \ - $(STUBSDIR)\helpxxxx.obj \ - $(STUBSDIR)\icon.obj \ - $(STUBSDIR)\imaglist.obj \ - $(STUBSDIR)\joystick.obj \ - $(STUBSDIR)\listbox.obj \ - $(STUBSDIR)\listctrl.obj \ - $(STUBSDIR)\main.obj \ - $(STUBSDIR)\mdi.obj \ - $(STUBSDIR)\menu.obj \ - $(STUBSDIR)\menuitem.obj \ - $(STUBSDIR)\metafile.obj \ - $(STUBSDIR)\minifram.obj \ - $(STUBSDIR)\msgdlg.obj \ - $(STUBSDIR)\notebook.obj \ - $(STUBSDIR)\palette.obj \ - $(STUBSDIR)\pen.obj \ - $(STUBSDIR)\printdlg.obj \ - $(STUBSDIR)\print.obj \ - $(STUBSDIR)\radiobox.obj \ - $(STUBSDIR)\radiobut.obj \ - $(STUBSDIR)\region.obj \ - $(STUBSDIR)\scrolbar.obj \ - $(STUBSDIR)\settings.obj \ - $(STUBSDIR)\slider.obj \ - $(STUBSDIR)\spinbutt.obj \ - $(STUBSDIR)\statbmp.obj \ - $(STUBSDIR)\statbox.obj \ - $(STUBSDIR)\statusbr.obj \ - $(STUBSDIR)\stattext.obj \ - $(STUBSDIR)\tabctrl.obj \ - $(STUBSDIR)\taskbar.obj \ - $(STUBSDIR)\toolbar.obj \ - $(STUBSDIR)\textctrl.obj \ - $(STUBSDIR)\thread.obj \ - $(STUBSDIR)\timer.obj \ - $(STUBSDIR)\treectrl.obj \ - $(STUBSDIR)\utils.obj \ - $(STUBSDIR)\utilsexc.obj \ - $(STUBSDIR)\wave.obj \ - $(STUBSDIR)\window.obj - - -OBJECTS = $(COMMONOBJS) $(GENERICOBJS) $(STUBSOBJS) - -# Normal, static library -all: $(OBJECTS) $(PERIPH_TARGET) $(LIBTARGET) - -$(WXDIR)\lib\wxstubs.lib: $(OBJECTS) $(PERIPH_LIBS) - -erase $(LIBTARGET) - $(implib) @<< --out:$@ --machine:$(CPU) -$(OBJECTS) $(PERIPH_LIBS) -<< - -######################################################## -# Windows-specific objects - -$(STUBSDIR)/accel.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/app.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/bitmap.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/bmpbuttn.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/brush.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/button.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/choice.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/checkbox.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/checklst.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/clipbrd.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/colordlg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/colour.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/combobox.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/control.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/cursor.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/data.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/dc.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/dcmemory.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/dcclient.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/dcprint.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/dcscreen.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/dialog.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/dirdlg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/filedlg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/font.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/fontdlg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/frame.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/gauge.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/gdiobj.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/icon.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/imaglist.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/joystick.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/listbox.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(STUBSDIR)/listctrl.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(STUBSDIR)/main.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/mdi.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/menu.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/menuitem.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/metafile.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/minifram.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/msgdlg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/notebook.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/palette.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/pen.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/printdlg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/print.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/radiobox.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/radiobut.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/region.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/scrolbar.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/settings.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/slider.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/spinbutt.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/statbmp.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/statbox.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/statusbr.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/stattext.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/tabctrl.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/taskbar.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/toolbar.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/textctrl.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/thread.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/timer.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/treectrl.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/utils.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/utilsexc.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/wave.obj: $*.$(SRCSUFF) - echo $(CPPFLAGS) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/window.obj: $*.$(SRCSUFF) - echo $(CPPFLAGS) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -######################################################## -# Common objects (always compiled) - -$(COMMDIR)/cmndata.obj: $*.$(SRCSUFF) - echo $(CPPFLAGS) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/config.obj: $*.$(SRCSUFF) - echo $(CPPFLAGS) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/db.obj: $*.$(SRCSUFF) - echo $(CPPFLAGS) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/dbtable.obj: $*.$(SRCSUFF) - echo $(CPPFLAGS) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/docview.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/docmdi.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/dynarray.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/event.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/file.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/fileconf.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/filefn.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/framecmn.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/gdicmn.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/intl.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/ipcbase.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/helpbase.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/layout.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/log.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/memory.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/module.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/object.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/odbc.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/postscrp.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/prntbase.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/resource.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/tbarbase.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/tbarsmpl.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/textfile.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/timercmn.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/utilscmn.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/validate.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/valtext.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/date.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/wxexpr.obj: $*.$(SRCSUFF) - echo $(CPPFLAGS) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/hash.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/list.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/string.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/matrix.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -#$(COMMDIR)/wxstrgnu/wxstrgnu.obj: $*.$(SRCSUFF) -# cl @<< -#$(CPPFLAGS2) /c /Tp $*.$(SRCSUFF) /Fo$@ -#<< - -#$(COMMDIR)/wxstrgnu/wxregex.obj: $*.$(SRCSUFF) -# cl @<< -#$(CPPFLAGS2) /c /Tp $*.$(SRCSUFF) /Fo$@ -#<< - -$(COMMDIR)/time.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)\stream.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)\fstream.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)\mstream.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)\zstream.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)\datstrm.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/extended.obj: $*.c - cl @<< -$(CPPFLAGS2) /c /Tp $*.c /Fo$@ -<< - -$(COMMDIR)/process.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS2) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/wincmn.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS2) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/y_tab.obj: $*.c $(COMMDIR)/lex_yy.c - cl @<< -$(CPPFLAGS2) /c $*.c -DUSE_DEFINE -DYY_USE_PROTOS /Fo$@ -<< - -$(COMMDIR)/y_tab.c: $(COMMDIR)/dosyacc.c - copy $(COMMDIR)\dosyacc.c $(COMMDIR)\y_tab.c - -$(COMMDIR)/lex_yy.c: $(COMMDIR)/doslex.c - copy $(COMMDIR)\doslex.c $(COMMDIR)\lex_yy.c - -######################################################## -# Generic objects (not always compiled, depending on -# whether platforms have native implementations) - -$(GENDIR)/choicdgg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/colrdlgg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/fontdlgg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/gridg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/helpxlp.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/msgdlgg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/panelg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/printps.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/prntdlgg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/scrolwin.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/splitter.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/statusbr.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/tabg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/textdlgg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(OBJECTS): $(WXDIR)/include/wx/stubs/setup.h - -clean: $(PERIPH_CLEAN_TARGET) - -erase *.obj - -erase $(LIBTARGET) - -erase $(WXDIR)\lib\*.pdb - -erase *.pdb - -erase *.sbr - -erase *.pch - cd $(WXDIR)\src\stubs - cd $(GENDIR) - -erase *.pdb - -erase *.sbr - -erase *.obj - cd $(WXDIR)\src\stubs - cd $(COMMDIR) - -erase *.pdb - -erase *.sbr - -erase *.obj - -erase y_tab.c - -erase lex_yy.c - cd $(WXDIR)\src\stubs - -cleanall: clean - diff --git a/src/mac/makefile.unx b/src/mac/makefile.unx deleted file mode 100644 index 5bd62163fd..0000000000 --- a/src/mac/makefile.unx +++ /dev/null @@ -1,200 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1998 -# Updated: -# Copyright: (c) 1998 -# -# -# Makefile for wxStubs library, Unix - -EXTRACFLAGS=-DLEX_SCANNER - -include ../make.env - -LIB_CPP_SRC=\ -\ - ../common/cmndata.cpp \ - ../common/config.cpp \ - ../common/date.cpp \ - ../common/docmdi.cpp \ - ../common/docview.cpp \ - ../common/dynarray.cpp \ - ../common/dynlib.cpp \ - ../common/event.cpp \ - ../common/file.cpp \ - ../common/fileconf.cpp \ - ../common/filefn.cpp \ - ../common/gdicmn.cpp \ - ../common/hash.cpp \ - ../common/helpbase.cpp \ - ../common/intl.cpp \ - ../common/ipcbase.cpp \ - ../common/layout.cpp \ - ../common/list.cpp \ - ../common/log.cpp \ - ../common/matrix.cpp \ - ../common/memory.cpp \ - ../common/module.cpp \ - ../common/object.cpp \ - ../common/odbc.cpp \ - ../common/postscrp.cpp \ - ../common/prntbase.cpp \ - ../common/resource.cpp \ - ../common/serbase.cpp \ - ../common/string.cpp \ - ../common/textfile.cpp \ - ../common/tbarbase.cpp \ - ../common/tbarsmpl.cpp \ - ../common/timercmn.cpp \ - ../common/utilscmn.cpp \ - ../common/wincmn.cpp \ - ../common/framecmn.cpp \ - ../common/stream.cpp \ - ../common/datstrm.cpp \ - ../common/fstream.cpp \ - ../common/mstream.cpp \ - ../common/zstream.cpp \ - ../common/objstrm.cpp \ - ../common/sckstrm.cpp \ - ../common/validate.cpp \ - ../common/valtext.cpp \ - ../common/variant.cpp \ - ../common/wxexpr.cpp \ - ../common/socket.cpp \ - ../common/sckaddr.cpp \ - ../common/sckipc.cpp \ - ../common/protocol.cpp \ - ../common/ftp.cpp \ - ../common/http.cpp \ - ../common/url.cpp \ - ../common/tokenzr.cpp \ -\ - accel.cpp \ - app.cpp \ - bitmap.cpp \ - bmpbuttn.cpp \ - brush.cpp \ - button.cpp \ - checkbox.cpp \ - choice.cpp \ - clipbrd.cpp \ - colour.cpp \ - colordlg.cpp \ - control.cpp \ - combobox.cpp \ - cursor.cpp \ - data.cpp \ - dc.cpp \ - dcclient.cpp \ - dcmemory.cpp \ - dcscreen.cpp \ - dialog.cpp \ - dnd.cpp \ - filedlg.cpp \ - font.cpp \ - fontdlg.cpp \ - frame.cpp \ - gauge.cpp \ - gdiobj.cpp \ - helpxxxx.cpp \ - icon.cpp \ - listbox.cpp \ - joystick.cpp \ - main.cpp \ - mdi.cpp \ - menu.cpp \ - menuitem.cpp \ - metafile.cpp \ - minifram.cpp \ - msgdlg.cpp \ - notebook.cpp \ - palette.cpp \ - pen.cpp \ - print.cpp \ - radiobox.cpp \ - radiobut.cpp \ - region.cpp \ - scrolbar.cpp \ - settings.cpp \ - slider.cpp \ - spinbutt.cpp \ - statbox.cpp \ - statbmp.cpp \ - stattext.cpp \ - taskbar.cpp \ - textctrl.cpp \ - thread.cpp \ - timer.cpp \ - toolbar.cpp \ - utils.cpp \ - utilsexc.cpp \ - wave.cpp \ - window.cpp \ -\ - ../generic/choicdgg.cpp \ - ../generic/colrdlgg.cpp \ - ../generic/dirdlgg.cpp \ - ../generic/fontdlgg.cpp \ - ../generic/gridg.cpp \ - ../generic/imaglist.cpp \ - ../generic/listctrl.cpp \ - ../generic/laywin.cpp \ - ../generic/msgdlgg.cpp \ - ../generic/panelg.cpp \ - ../generic/printps.cpp \ - ../generic/prntdlgg.cpp \ - ../generic/sashwin.cpp \ - ../generic/scrolwin.cpp \ - ../generic/splitter.cpp \ - ../generic/statusbr.cpp \ - ../generic/tabg.cpp \ - ../generic/textdlgg.cpp \ - ../generic/treectrl.cpp - -# If you're not using the generic ones, you -# may wish to define platform-specific ones -# dirdlg.cpp \ -# treectrl.cpp \ -# listctrl.cpp \ -# imaglist.cpp \ -# statusbr.cpp \ - -LIB_C_SRC=\ -\ - ../common/y_tab.c \ - ../common/extended.c - -all: $(WXLIB) - -# Define library objects -OBJECTS=\ - $(LIB_CPP_SRC:.cpp=.o) $(LIB_C_SRC:.c=.o) - -$(WXLIB) : $(OBJECTS) - ar $(AROPTIONS) $@ $(OBJECTS) - $(RANLIB) $@ - -../common/y_tab.$(OBJSUFF): ../common/y_tab.c ../common/lex_yy.c - $(CCLEX) -c $(CFLAGS) -o $@ ../common/y_tab.c - -# Replace lex with flex if you run into compilation -# problems with lex_yy.c. See also note about LEX_SCANNER -# above. -../common/lex_yy.c: ../common/lexer.l - $(LEX) -o../common/lex.yy.c ../common/lexer.l - sed -e "s/BUFSIZ/5000/g" < ../common/lex.yy.c | \ - sed -e "s/yyoutput(c)/void yyoutput(c)/g" | \ - sed -e "s/YYLMAX 200/YYLMAX 5000/g" > ../common/lex_yy.c - /bin/rm -f ../common/lex.yy.c - -# Replace yacc with bison if you run into compilation -# problems with y_tab.c. -../common/y_tab.c: ../common/parser.y - $(YACC) ../common/parser.y - mv y.tab.c ../common/y_tab.c - - -clean: - rm -f $(OBJECTS) $(WXLIB) - diff --git a/src/mac/mdi.cpp b/src/mac/mdi.cpp deleted file mode 100644 index 4869697cd7..0000000000 --- a/src/mac/mdi.cpp +++ /dev/null @@ -1,265 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: mdi.cpp -// Purpose: MDI classes -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "mdi.h" -#endif - -#include "wx/mdi.h" -#include "wx/menu.h" -#include "wx/settings.h" - -extern wxList wxModelessWindows; - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxMDIParentFrame, wxFrame) -IMPLEMENT_DYNAMIC_CLASS(wxMDIChildFrame, wxFrame) -IMPLEMENT_DYNAMIC_CLASS(wxMDIClientWindow, wxWindow) - -BEGIN_EVENT_TABLE(wxMDIParentFrame, wxFrame) - EVT_SIZE(wxMDIParentFrame::OnSize) - EVT_ACTIVATE(wxMDIParentFrame::OnActivate) - EVT_SYS_COLOUR_CHANGED(wxMDIParentFrame::OnSysColourChanged) -END_EVENT_TABLE() - -BEGIN_EVENT_TABLE(wxMDIClientWindow, wxWindow) - EVT_SCROLL(wxMDIClientWindow::OnScroll) -END_EVENT_TABLE() - -#endif - -// Parent frame - -wxMDIParentFrame::wxMDIParentFrame() -{ -} - -bool wxMDIParentFrame::Create(wxWindow *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - if (!parent) - wxTopLevelWindows.Append(this); - - SetName(name); - m_windowStyle = style; - - if (parent) parent->AddChild(this); - - if ( id > -1 ) - m_windowId = id; - else - m_windowId = (int)NewControlId(); - - // TODO: create MDI parent frame - - wxModelessWindows.Append(this); - - return TRUE; -} - -wxMDIParentFrame::~wxMDIParentFrame() -{ -} - -// Get size *available for subwindows* i.e. excluding menu bar. -void wxMDIParentFrame::GetClientSize(int *x, int *y) const -{ - // TODO -} - -void wxMDIParentFrame::SetMenuBar(wxMenuBar *menu_bar) -{ - // TODO - if (!menu_bar) - { - m_frameMenuBar = NULL; - return; - } - - if (menu_bar->m_menuBarFrame) - return; - - m_frameMenuBar = menu_bar; -} - -void wxMDIParentFrame::OnSize(wxSizeEvent& event) -{ -#if wxUSE_CONSTRAINTS - if (GetAutoLayout()) - Layout(); -#endif - int x = 0; - int y = 0; - int width, height; - GetClientSize(&width, &height); - - if ( GetClientWindow() ) - GetClientWindow()->SetSize(x, y, width, height); -} - -void wxMDIParentFrame::OnActivate(wxActivateEvent& event) -{ - // Do nothing -} - -// Returns the active MDI child window -wxMDIChildFrame *wxMDIParentFrame::GetActiveChild() const -{ - // TODO - return NULL; -} - -// Create the client window class (don't Create the window, -// just return a new class) -wxMDIClientWindow *wxMDIParentFrame::OnCreateClient() -{ - return new wxMDIClientWindow ; -} - -// Responds to colour changes, and passes event on to children. -void wxMDIParentFrame::OnSysColourChanged(wxSysColourChangedEvent& event) -{ - // TODO - - // Propagate the event to the non-top-level children - wxFrame::OnSysColourChanged(event); -} - -// MDI operations -void wxMDIParentFrame::Cascade() -{ - // TODO -} - -void wxMDIParentFrame::Tile() -{ - // TODO -} - -void wxMDIParentFrame::ArrangeIcons() -{ - // TODO -} - -void wxMDIParentFrame::ActivateNext() -{ - // TODO -} - -void wxMDIParentFrame::ActivatePrevious() -{ - // TODO -} - -// Child frame - -wxMDIChildFrame::wxMDIChildFrame() -{ -} - -bool wxMDIChildFrame::Create(wxMDIParentFrame *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - SetName(name); - - if ( id > -1 ) - m_windowId = id; - else - m_windowId = (int)NewControlId(); - - if (parent) parent->AddChild(this); - - // TODO: create child frame - - wxModelessWindows.Append(this); - return FALSE; -} - -wxMDIChildFrame::~wxMDIChildFrame() -{ -} - -// Set the client size (i.e. leave the calculation of borders etc. -// to wxWindows) -void wxMDIChildFrame::SetClientSize(int width, int height) -{ - // TODO -} - -void wxMDIChildFrame::GetPosition(int *x, int *y) const -{ - // TODO -} - -void wxMDIChildFrame::SetMenuBar(wxMenuBar *menu_bar) -{ - // TODO - if (!menu_bar) - { - m_frameMenuBar = NULL; - return; - } - - if (menu_bar->m_menuBarFrame) - return; - m_frameMenuBar = menu_bar; -} - -// MDI operations -void wxMDIChildFrame::Maximize() -{ - // TODO -} - -void wxMDIChildFrame::Restore() -{ - // TODO -} - -void wxMDIChildFrame::Activate() -{ - // TODO -} - -// Client window - -wxMDIClientWindow::wxMDIClientWindow() -{ -} - -wxMDIClientWindow::~wxMDIClientWindow() -{ -} - -bool wxMDIClientWindow::CreateClient(wxMDIParentFrame *parent, long style) -{ - // TODO create client window - m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE); - - return FALSE; -} - -// Explicitly call default scroll behaviour -void wxMDIClientWindow::OnScroll(wxScrollEvent& event) -{ - Default(); // Default processing -} - diff --git a/src/mac/menu.cpp b/src/mac/menu.cpp deleted file mode 100644 index 1fc7c4a229..0000000000 --- a/src/mac/menu.cpp +++ /dev/null @@ -1,571 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: menu.cpp -// Purpose: wxMenu, wxMenuBar, wxMenuItem -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -// ============================================================================ -// headers & declarations -// ============================================================================ - -// wxWindows headers -// ----------------- - -#ifdef __GNUG__ -#pragma implementation "menu.h" -#pragma implementation "menuitem.h" -#endif - -#include "wx/menu.h" -#include "wx/menuitem.h" -#include "wx/log.h" -#include "wx/utils.h" - -// other standard headers -// ---------------------- -#include - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxMenu, wxEvtHandler) -IMPLEMENT_DYNAMIC_CLASS(wxMenuBar, wxEvtHandler) -#endif - -// ============================================================================ -// implementation -// ============================================================================ - -// Menus - -// Construct a menu with optional title (then use append) -wxMenu::wxMenu(const wxString& title, const wxFunction func) -{ - m_title = title; - m_parent = NULL; - m_eventHandler = this; - m_noItems = 0; - m_menuBar = NULL; - m_clientData = (void*) NULL; - if (m_title != "") - { - Append(-2, m_title) ; - AppendSeparator() ; - } - - Callback(func); - - // TODO create menu -} - -// The wxWindow destructor will take care of deleting the submenus. -wxMenu::~wxMenu() -{ - // TODO destroy menu and children - - wxNode *node = m_menuItems.First(); - while (node) - { - wxMenuItem *item = (wxMenuItem *)node->Data(); - - // Delete child menus. - // Beware: they must not be appended to children list!!! - // (because order of delete is significant) - if (item->GetSubMenu()) - item->DeleteSubMenu(); - - wxNode *next = node->Next(); - delete item; - delete node; - node = next; - } -} - -void wxMenu::Break() -{ - // TODO -} - -// function appends a new item or submenu to the menu -void wxMenu::Append(wxMenuItem *pItem) -{ - // TODO - - wxCHECK_RET( pItem != NULL, "can't append NULL item to the menu" ); - - m_menuItems.Append(pItem); - - m_noItems++; -} - -void wxMenu::AppendSeparator() -{ - // TODO - Append(new wxMenuItem(this, ID_SEPARATOR)); -} - -// Pullright item -void wxMenu::Append(int Id, const wxString& label, wxMenu *SubMenu, - const wxString& helpString) -{ - Append(new wxMenuItem(this, Id, label, helpString, FALSE, SubMenu)); -} - -// Ordinary menu item -void wxMenu::Append(int Id, const wxString& label, - const wxString& helpString, bool checkable) -{ - // 'checkable' parameter is useless for Windows. - Append(new wxMenuItem(this, Id, label, helpString, checkable)); -} - -void wxMenu::Delete(int id) -{ - wxNode *node; - wxMenuItem *item; - int pos; - - for (pos = 0, node = m_menuItems.First(); node; node = node->Next(), pos++) { - item = (wxMenuItem *)node->Data(); - if (item->GetId() == id) - break; - } - - if (!node) - return; - - m_menuItems.DeleteNode(node); - delete item; - - // TODO -} - -void wxMenu::Enable(int Id, bool Flag) -{ - wxMenuItem *item = FindItemForId(Id); - wxCHECK_RET( item != NULL, "can't enable non-existing menu item" ); - - item->Enable(Flag); -} - -bool wxMenu::Enabled(int Id) const -{ - wxMenuItem *item = FindItemForId(Id); - wxCHECK( item != NULL, FALSE ); - - return item->IsEnabled(); -} - -void wxMenu::Check(int Id, bool Flag) -{ - wxMenuItem *item = FindItemForId(Id); - wxCHECK_RET( item != NULL, "can't get status of non-existing menu item" ); - - item->Check(Flag); -} - -bool wxMenu::Checked(int Id) const -{ - wxMenuItem *item = FindItemForId(Id); - wxCHECK( item != NULL, FALSE ); - - return item->IsChecked(); -} - -void wxMenu::SetTitle(const wxString& label) -{ - m_title = label ; - // TODO -} - -const wxString wxMenu::GetTitle() const -{ - return m_title; -} - -void wxMenu::SetLabel(int id, const wxString& label) -{ - wxMenuItem *item = FindItemForId(id) ; - if (item==NULL) - return; - - if (item->GetSubMenu()==NULL) - { - // TODO - } - else - { - // TODO - } - item->SetName(label); -} - -wxString wxMenu::GetLabel(int Id) const -{ - // TODO - return wxString("") ; -} - -// Finds the item id matching the given string, -1 if not found. -int wxMenu::FindItem (const wxString& itemString) const -{ - char buf1[200]; - char buf2[200]; - wxStripMenuCodes ((char *)(const char *)itemString, buf1); - - for (wxNode * node = m_menuItems.First (); node; node = node->Next ()) - { - wxMenuItem *item = (wxMenuItem *) node->Data (); - if (item->GetSubMenu()) - { - int ans = item->GetSubMenu()->FindItem(itemString); - if (ans > -1) - return ans; - } - if ( !item->IsSeparator() ) - { - wxStripMenuCodes((char *)item->GetName().c_str(), buf2); - if (strcmp(buf1, buf2) == 0) - return item->GetId(); - } - } - - return -1; -} - -wxMenuItem *wxMenu::FindItemForId(int itemId, wxMenu ** itemMenu) const -{ - if (itemMenu) - *itemMenu = NULL; - for (wxNode * node = m_menuItems.First (); node; node = node->Next ()) - { - wxMenuItem *item = (wxMenuItem *) node->Data (); - - if (item->GetId() == itemId) - { - if (itemMenu) - *itemMenu = (wxMenu *) this; - return item; - } - - if (item->GetSubMenu()) - { - wxMenuItem *ans = item->GetSubMenu()->FindItemForId (itemId, itemMenu); - if (ans) - return ans; - } - } - - if (itemMenu) - *itemMenu = NULL; - return NULL; -} - -void wxMenu::SetHelpString(int itemId, const wxString& helpString) -{ - wxMenuItem *item = FindItemForId (itemId); - if (item) - item->SetHelp(helpString); -} - -wxString wxMenu::GetHelpString (int itemId) const -{ - wxMenuItem *item = FindItemForId (itemId); - wxString str(""); - return (item == NULL) ? str : item->GetHelp(); -} - -void wxMenu::ProcessCommand(wxCommandEvent & event) -{ - bool processed = FALSE; - - // Try a callback - if (m_callback) - { - (void) (*(m_callback)) (*this, event); - processed = TRUE; - } - - // Try the menu's event handler - if ( !processed && GetEventHandler()) - { - processed = GetEventHandler()->ProcessEvent(event); - } -/* TODO - // Try the window the menu was popped up from (and up - // through the hierarchy) - if ( !processed && GetInvokingWindow()) - processed = GetInvokingWindow()->ProcessEvent(event); -*/ -} - -bool wxWindow::PopupMenu(wxMenu *menu, int x, int y) -{ - // TODO - return FALSE; -} - -// Menu Bar -wxMenuBar::wxMenuBar() -{ - m_eventHandler = this; - m_menuCount = 0; - m_menus = NULL; - m_titles = NULL; - m_menuBarFrame = NULL; - - // TODO -} - -wxMenuBar::wxMenuBar(int n, wxMenu *menus[], const wxString titles[]) -{ - m_eventHandler = this; - m_menuCount = n; - m_menus = menus; - m_titles = new wxString[n]; - int i; - for ( i = 0; i < n; i++ ) - m_titles[i] = titles[i]; - m_menuBarFrame = NULL; - - // TODO -} - -wxMenuBar::~wxMenuBar() -{ - int i; - for (i = 0; i < m_menuCount; i++) - { - delete m_menus[i]; - } - delete[] m_menus; - delete[] m_titles; - - // TODO -} - -// Must only be used AFTER menu has been attached to frame, -// otherwise use individual menus to enable/disable items -void wxMenuBar::Enable(int id, bool flag) -{ - wxMenu *itemMenu = NULL; - wxMenuItem *item = FindItemForId(id, &itemMenu) ; - if (!item) - return; - - // TODO -} - -void wxMenuBar::EnableTop(int pos, bool flag) -{ - // TODO -} - -// Must only be used AFTER menu has been attached to frame, -// otherwise use individual menus -void wxMenuBar::Check(int id, bool flag) -{ - wxMenu *itemMenu = NULL; - wxMenuItem *item = FindItemForId(id, &itemMenu) ; - if (!item) - return; - - if (!item->IsCheckable()) - return ; - - // TODO -} - -bool wxMenuBar::Checked(int id) const -{ - wxMenu *itemMenu = NULL; - wxMenuItem *item = FindItemForId(id, &itemMenu) ; - if (!item) - return FALSE; - - // TODO - return FALSE; -} - -bool wxMenuBar::Enabled(int id) const -{ - wxMenu *itemMenu = NULL; - wxMenuItem *item = FindItemForId(id, &itemMenu) ; - if (!item) - return FALSE; - - // TODO - return FALSE ; -} - - -void wxMenuBar::SetLabel(int id, const wxString& label) -{ - wxMenu *itemMenu = NULL; - wxMenuItem *item = FindItemForId(id, &itemMenu) ; - - if (!item) - return; - - // TODO -} - -wxString wxMenuBar::GetLabel(int id) const -{ - wxMenu *itemMenu = NULL; - wxMenuItem *item = FindItemForId(id, &itemMenu) ; - - if (!item) - return wxString(""); - - // TODO - return wxString("") ; -} - -void wxMenuBar::SetLabelTop(int pos, const wxString& label) -{ - // TODO -} - -wxString wxMenuBar::GetLabelTop(int pos) const -{ - // TODO - return wxString(""); -} - -bool wxMenuBar::OnDelete(wxMenu *a_menu, int pos) -{ - // TODO - return FALSE; -} - -bool wxMenuBar::OnAppend(wxMenu *a_menu, const char *title) -{ - // TODO - return FALSE; -} - -void wxMenuBar::Append (wxMenu * menu, const wxString& title) -{ - if (!OnAppend(menu, title)) - return; - - m_menuCount ++; - wxMenu **new_menus = new wxMenu *[m_menuCount]; - wxString *new_titles = new wxString[m_menuCount]; - int i; - - for (i = 0; i < m_menuCount - 1; i++) - { - new_menus[i] = m_menus[i]; - m_menus[i] = NULL; - new_titles[i] = m_titles[i]; - m_titles[i] = ""; - } - if (m_menus) - { - delete[]m_menus; - delete[]m_titles; - } - m_menus = new_menus; - m_titles = new_titles; - - m_menus[m_menuCount - 1] = (wxMenu *)menu; - m_titles[m_menuCount - 1] = title; - - // TODO -} - -void wxMenuBar::Delete(wxMenu * menu, int i) -{ - int j; - int ii = (int) i; - - if (menu != 0) - { - for (ii = 0; ii < m_menuCount; ii++) - { - if (m_menus[ii] == menu) - break; - } - if (ii >= m_menuCount) - return; - } else - { - if (ii < 0 || ii >= m_menuCount) - return; - menu = m_menus[ii]; - } - - if (!OnDelete(menu, ii)) - return; - - menu->SetParent(NULL); - - -- m_menuCount; - for (j = ii; j < m_menuCount; j++) - { - m_menus[j] = m_menus[j + 1]; - m_titles[j] = m_titles[j + 1]; - } -} - -// Find the menu menuString, item itemString, and return the item id. -// Returns -1 if none found. -int wxMenuBar::FindMenuItem (const wxString& menuString, const wxString& itemString) const -{ - char buf1[200]; - char buf2[200]; - wxStripMenuCodes ((char *)(const char *)menuString, buf1); - int i; - for (i = 0; i < m_menuCount; i++) - { - wxStripMenuCodes ((char *)(const char *)m_titles[i], buf2); - if (strcmp (buf1, buf2) == 0) - return m_menus[i]->FindItem (itemString); - } - return -1; -} - -wxMenuItem *wxMenuBar::FindItemForId (int Id, wxMenu ** itemMenu) const -{ - if (itemMenu) - *itemMenu = NULL; - - wxMenuItem *item = NULL; - int i; - for (i = 0; i < m_menuCount; i++) - if ((item = m_menus[i]->FindItemForId (Id, itemMenu))) - return item; - return NULL; -} - -void wxMenuBar::SetHelpString (int Id, const wxString& helpString) -{ - int i; - for (i = 0; i < m_menuCount; i++) - { - if (m_menus[i]->FindItemForId (Id)) - { - m_menus[i]->SetHelpString (Id, helpString); - return; - } - } -} - -wxString wxMenuBar::GetHelpString (int Id) const -{ - int i; - for (i = 0; i < m_menuCount; i++) - { - if (m_menus[i]->FindItemForId (Id)) - return wxString(m_menus[i]->GetHelpString (Id)); - } - return wxString(""); -} - - diff --git a/src/mac/menuitem.cpp b/src/mac/menuitem.cpp deleted file mode 100644 index bd2f876a38..0000000000 --- a/src/mac/menuitem.cpp +++ /dev/null @@ -1,96 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: menuitem.cpp -// Purpose: wxMenuItem implementation -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -// ============================================================================ -// headers & declarations -// ============================================================================ - -#include "wx/menu.h" -#include "wx/menuitem.h" - -// ============================================================================ -// implementation -// ============================================================================ - -// ---------------------------------------------------------------------------- -// dynamic classes implementation -// ---------------------------------------------------------------------------- - -#if !USE_SHARED_LIBRARY - IMPLEMENT_DYNAMIC_CLASS(wxMenuItem, wxObject) -#endif //USE_SHARED_LIBRARY - -// ---------------------------------------------------------------------------- -// wxMenuItem -// ---------------------------------------------------------------------------- - -// ctor & dtor -// ----------- - -wxMenuItem::wxMenuItem(wxMenu *pParentMenu, int id, - const wxString& strName, const wxString& strHelp, - bool bCheckable, - wxMenu *pSubMenu) : - m_bCheckable(bCheckable), - m_strName(strName), - m_strHelp(strHelp) -{ - wxASSERT( pParentMenu != NULL ); - - m_pParentMenu = pParentMenu; - m_pSubMenu = pSubMenu; - m_idItem = id; - m_bEnabled = TRUE; -} - -wxMenuItem::~wxMenuItem() -{ -} - -// misc -// ---- - -// delete the sub menu -void wxMenuItem::DeleteSubMenu() -{ - wxASSERT( m_pSubMenu != NULL ); - - delete m_pSubMenu; - m_pSubMenu = NULL; -} - -// change item state -// ----------------- - -void wxMenuItem::Enable(bool bDoEnable) -{ - if ( m_bEnabled != bDoEnable ) { - if ( m_pSubMenu == NULL ) { // normal menu item - // TODO - } - else // submenu - { - // TODO - } - - m_bEnabled = bDoEnable; - } -} - -void wxMenuItem::Check(bool bDoCheck) -{ - wxCHECK_RET( IsCheckable(), "only checkable items may be checked" ); - - if ( m_bChecked != bDoCheck ) { - // TODO - m_bChecked = bDoCheck; - } -} \ No newline at end of file diff --git a/src/mac/metafile.cpp b/src/mac/metafile.cpp deleted file mode 100644 index a92874b336..0000000000 --- a/src/mac/metafile.cpp +++ /dev/null @@ -1,239 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: metafile.cpp -// Purpose: wxMetaFile, wxMetaFileDC etc. These classes are optional. -// Author: AUTHOR -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "metafile.h" -#endif - -#include "wx/object.h" -#include "wx/string.h" -#include "wx/dc.h" -#include "wx/stubs/metafile.h" -#include "wx/clipbrd.h" - -extern bool wxClipboardIsOpen; - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxMetaFile, wxObject) -IMPLEMENT_ABSTRACT_CLASS(wxMetaFileDC, wxDC) -#endif - -wxMetaFile::wxMetaFile(const wxString& file) -{ - // TODO -} - -wxMetaFile::~wxMetaFile() -{ - // TODO -} - -bool wxMetaFile::SetClipboard(int width, int height) -{ - bool alreadyOpen=wxClipboardOpen(); - if (!alreadyOpen) - { - wxOpenClipboard(); - if (!wxEmptyClipboard()) return FALSE; - } - bool success = wxSetClipboardData(wxDF_METAFILE,this, width,height); - if (!alreadyOpen) wxCloseClipboard(); - return (bool) success; -} - -bool wxMetaFile::Play(wxDC *dc) -{ - // TODO - return FALSE; -} - -/* - * Metafile device context - * - */ - -// Original constructor that does not takes origin and extent. If you use this, -// *DO* give origin/extent arguments to wxMakeMetaFilePlaceable. -wxMetaFileDC::wxMetaFileDC(const wxString& file) -{ - // TODO -} - -// New constructor that takes origin and extent. If you use this, don't -// give origin/extent arguments to wxMakeMetaFilePlaceable. -wxMetaFileDC::wxMetaFileDC(const wxString& file, int xext, int yext, int xorg, int yorg) -{ - // TODO -} - -wxMetaFileDC::~wxMetaFileDC() -{ -} - -void wxMetaFileDC::GetTextExtent(const wxString& string, float *x, float *y, - float *descent, float *externalLeading, wxFont *theFont, bool use16bit) -{ - // TODO -} - -wxMetaFile *wxMetaFileDC::Close() -{ - // TODO - return NULL; -} - -void wxMetaFileDC::SetMapMode(int mode) -{ - // TODO -} - -#if 0 - -#ifdef __WIN32__ -struct RECT32 -{ - short left; - short top; - short right; - short bottom; -}; - -struct mfPLACEABLEHEADER { - DWORD key; - short hmf; - RECT32 bbox; - WORD inch; - DWORD reserved; - WORD checksum; -}; -#else -struct mfPLACEABLEHEADER { - DWORD key; - HANDLE hmf; - RECT bbox; - WORD inch; - DWORD reserved; - WORD checksum; -}; -#endif - -/* - * Pass filename of existing non-placeable metafile, and bounding box. - * Adds a placeable metafile header, sets the mapping mode to anisotropic, - * and sets the window origin and extent to mimic the MM_TEXT mapping mode. - * - */ - -bool wxMakeMetaFilePlaceable(const wxString& filename, float scale) -{ - return wxMakeMetaFilePlaceable(filename, 0, 0, 0, 0, scale, FALSE); -} - -bool wxMakeMetaFilePlaceable(const wxString& filename, int x1, int y1, int x2, int y2, float scale, bool useOriginAndExtent) -{ - // I'm not sure if this is the correct way of suggesting a scale - // to the client application, but it's the only way I can find. - int unitsPerInch = (int)(576/scale); - - mfPLACEABLEHEADER header; - header.key = 0x9AC6CDD7L; - header.hmf = 0; - header.bbox.left = (int)(x1); - header.bbox.top = (int)(y1); - header.bbox.right = (int)(x2); - header.bbox.bottom = (int)(y2); - header.inch = unitsPerInch; - header.reserved = 0; - - // Calculate checksum - WORD *p; - mfPLACEABLEHEADER *pMFHead = &header; - for (p =(WORD *)pMFHead,pMFHead -> checksum = 0; - p < (WORD *)&pMFHead ->checksum; ++p) - pMFHead ->checksum ^= *p; - - FILE *fd = fopen((char *)(const char *)filename, "rb"); - if (!fd) return FALSE; - - char tempFileBuf[256]; - wxGetTempFileName("mf", tempFileBuf); - FILE *fHandle = fopen(tempFileBuf, "wb"); - if (!fHandle) - return FALSE; - fwrite((void *)&header, sizeof(unsigned char), sizeof(mfPLACEABLEHEADER), fHandle); - - // Calculate origin and extent - int originX = x1; - int originY = y1; - int extentX = x2 - x1; - int extentY = (y2 - y1); - - // Read metafile header and write - METAHEADER metaHeader; - fread((void *)&metaHeader, sizeof(unsigned char), sizeof(metaHeader), fd); - - if (useOriginAndExtent) - metaHeader.mtSize += 15; - else - metaHeader.mtSize += 5; - - fwrite((void *)&metaHeader, sizeof(unsigned char), sizeof(metaHeader), fHandle); - - // Write SetMapMode, SetWindowOrigin and SetWindowExt records - char modeBuffer[8]; - char originBuffer[10]; - char extentBuffer[10]; - METARECORD *modeRecord = (METARECORD *)&modeBuffer; - - METARECORD *originRecord = (METARECORD *)&originBuffer; - METARECORD *extentRecord = (METARECORD *)&extentBuffer; - - modeRecord->rdSize = 4; - modeRecord->rdFunction = META_SETMAPMODE; - modeRecord->rdParm[0] = MM_ANISOTROPIC; - - originRecord->rdSize = 5; - originRecord->rdFunction = META_SETWINDOWORG; - originRecord->rdParm[0] = originY; - originRecord->rdParm[1] = originX; - - extentRecord->rdSize = 5; - extentRecord->rdFunction = META_SETWINDOWEXT; - extentRecord->rdParm[0] = extentY; - extentRecord->rdParm[1] = extentX; - - fwrite((void *)modeBuffer, sizeof(char), 8, fHandle); - - if (useOriginAndExtent) - { - fwrite((void *)originBuffer, sizeof(char), 10, fHandle); - fwrite((void *)extentBuffer, sizeof(char), 10, fHandle); - } - - int ch = -2; - while (ch != EOF) - { - ch = getc(fd); - if (ch != EOF) - { - putc(ch, fHandle); - } - } - fclose(fHandle); - fclose(fd); - wxRemoveFile(filename); - wxCopyFile(tempFileBuf, filename); - wxRemoveFile(tempFileBuf); - return TRUE; -} - -#endif - diff --git a/src/mac/minifram.cpp b/src/mac/minifram.cpp deleted file mode 100644 index 4f6f5e5fcb..0000000000 --- a/src/mac/minifram.cpp +++ /dev/null @@ -1,22 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: minifram.cpp -// Purpose: wxMiniFrame. Optional; identical to wxFrame if not supported. -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "minifram.h" -#endif - -#include "wx/minifram.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxMiniFrame, wxFrame) -#endif - - diff --git a/src/mac/msgdlg.cpp b/src/mac/msgdlg.cpp deleted file mode 100644 index 775ac8f064..0000000000 --- a/src/mac/msgdlg.cpp +++ /dev/null @@ -1,36 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: msgdlg.cpp -// Purpose: wxMessageDialog -// Author: AUTHOR -// Modified by: -// Created: 04/01/98 -// RCS-ID: $$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "msgdlg.h" -#endif - -#include "wx/msgdlg.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_CLASS(wxMessageDialog, wxDialog) -#endif - -wxMessageDialog::wxMessageDialog(wxWindow *parent, const wxString& message, const wxString& caption, - long style, const wxPoint& pos) -{ - m_caption = caption; - m_message = message; - m_dialogStyle = style; - m_parent = parent; -} - -int wxMessageDialog::ShowModal() -{ - // TODO - return wxID_CANCEL; -} - diff --git a/src/mac/notebook.cpp b/src/mac/notebook.cpp deleted file mode 100644 index 312dd0f3d3..0000000000 --- a/src/mac/notebook.cpp +++ /dev/null @@ -1,377 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: notebook.cpp -// Purpose: implementation of wxNotebook -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -// ============================================================================ -// declarations -// ============================================================================ - -// ---------------------------------------------------------------------------- -// headers -// ---------------------------------------------------------------------------- -#ifdef __GNUG__ -#pragma implementation "notebook.h" -#endif - -#include -#include -#include -#include - -// ---------------------------------------------------------------------------- -// macros -// ---------------------------------------------------------------------------- - -// check that the page index is valid -#define IS_VALID_PAGE(nPage) (((nPage) >= 0) && ((nPage) < GetPageCount())) - -// ---------------------------------------------------------------------------- -// event table -// ---------------------------------------------------------------------------- - -#if !USE_SHARED_LIBRARIES -BEGIN_EVENT_TABLE(wxNotebook, wxControl) - EVT_NOTEBOOK_PAGE_CHANGED(-1, wxNotebook::OnSelChange) - - EVT_SIZE(wxNotebook::OnSize) - EVT_SET_FOCUS(wxNotebook::OnSetFocus) - EVT_NAVIGATION_KEY(wxNotebook::OnNavigationKey) -END_EVENT_TABLE() - -IMPLEMENT_DYNAMIC_CLASS(wxNotebook, wxControl) -IMPLEMENT_DYNAMIC_CLASS(wxNotebookEvent, wxCommandEvent) -#endif - -// ============================================================================ -// implementation -// ============================================================================ - -// ---------------------------------------------------------------------------- -// wxNotebook construction -// ---------------------------------------------------------------------------- - -// common part of all ctors -void wxNotebook::Init() -{ - m_pImageList = NULL; - m_nSelection = -1; -} - -// default for dynamic class -wxNotebook::wxNotebook() -{ - Init(); -} - -// the same arguments as for wxControl -wxNotebook::wxNotebook(wxWindow *parent, - wxWindowID id, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - Init(); - - Create(parent, id, pos, size, style, name); -} - -// Create() function -bool wxNotebook::Create(wxWindow *parent, - wxWindowID id, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - // base init - SetName(name); - SetParent(parent); - - m_windowId = id == -1 ? NewControlId() : id; - - // style - m_windowStyle = style; - - if ( parent != NULL ) - parent->AddChild(this); - - // TODO - - return FALSE; -} - -// dtor -wxNotebook::~wxNotebook() -{ -} - -// ---------------------------------------------------------------------------- -// wxNotebook accessors -// ---------------------------------------------------------------------------- -int wxNotebook::GetPageCount() const -{ - return m_aPages.Count(); -} - -int wxNotebook::GetRowCount() const -{ - // TODO - return 0; -} - -int wxNotebook::SetSelection(int nPage) -{ - wxASSERT( IS_VALID_PAGE(nPage) ); - - ChangePage(m_nSelection, nPage); - - // TODO - return 0; -} - -void wxNotebook::AdvanceSelection(bool bForward) -{ - int nSel = GetSelection(); - int nMax = GetPageCount() - 1; - if ( bForward ) - SetSelection(nSel == nMax ? 0 : nSel + 1); - else - SetSelection(nSel == 0 ? nMax : nSel - 1); -} - -bool wxNotebook::SetPageText(int nPage, const wxString& strText) -{ - wxASSERT( IS_VALID_PAGE(nPage) ); - - // TODO - return FALSE; -} - -wxString wxNotebook::GetPageText(int nPage) const -{ - wxASSERT( IS_VALID_PAGE(nPage) ); - - // TODO - return wxString(""); -} - -int wxNotebook::GetPageImage(int nPage) const -{ - wxASSERT( IS_VALID_PAGE(nPage) ); - - // TODO - return 0; -} - -bool wxNotebook::SetPageImage(int nPage, int nImage) -{ - wxASSERT( IS_VALID_PAGE(nPage) ); - - // TODO - return FALSE; -} - -void wxNotebook::SetImageList(wxImageList* imageList) -{ - m_pImageList = imageList; - // TODO -} - -// ---------------------------------------------------------------------------- -// wxNotebook operations -// ---------------------------------------------------------------------------- - -// remove one page from the notebook -bool wxNotebook::DeletePage(int nPage) -{ - wxCHECK( IS_VALID_PAGE(nPage), FALSE ); - - // TODO: delete native widget page - - delete m_aPages[nPage]; - m_aPages.Remove(nPage); - - return TRUE; -} - -// remove one page from the notebook, without deleting the window -bool wxNotebook::RemovePage(int nPage) -{ - wxCHECK( IS_VALID_PAGE(nPage), FALSE ); - - m_aPages.Remove(nPage); - - return TRUE; -} - -// remove all pages -bool wxNotebook::DeleteAllPages() -{ - // TODO: delete native widget pages - - int nPageCount = GetPageCount(); - int nPage; - for ( nPage = 0; nPage < nPageCount; nPage++ ) - delete m_aPages[nPage]; - - m_aPages.Clear(); - - return TRUE; -} - -// add a page to the notebook -bool wxNotebook::AddPage(wxNotebookPage *pPage, - const wxString& strText, - bool bSelect, - int imageId) -{ - return InsertPage(GetPageCount(), pPage, strText, bSelect, imageId); -} - -// same as AddPage() but does it at given position -bool wxNotebook::InsertPage(int nPage, - wxNotebookPage *pPage, - const wxString& strText, - bool bSelect, - int imageId) -{ - wxASSERT( pPage != NULL ); - wxCHECK( IS_VALID_PAGE(nPage) || nPage == GetPageCount(), FALSE ); - - // TODO: insert native widget page - - // save the pointer to the page - m_aPages.Insert(pPage, nPage); - - // some page must be selected: either this one or the first one if there is - // still no selection - if ( bSelect ) - m_nSelection = nPage; - else if ( m_nSelection == -1 ) - m_nSelection = 0; - - return TRUE; -} - -// ---------------------------------------------------------------------------- -// wxNotebook callbacks -// ---------------------------------------------------------------------------- - -// @@@ OnSize() is used for setting the font when it's called for the first -// time because doing it in ::Create() doesn't work (for unknown reasons) -void wxNotebook::OnSize(wxSizeEvent& event) -{ - static bool s_bFirstTime = TRUE; - if ( s_bFirstTime ) { - // TODO: any first-time-size processing. - s_bFirstTime = FALSE; - } - - // TODO: all this may or may not be necessary for your platform - - // emulate page change (it's esp. important to do it first time because - // otherwise our page would stay invisible) - int nSel = m_nSelection; - m_nSelection = -1; - SetSelection(nSel); - - // fit the notebook page to the tab control's display area - int w, h; - GetSize(&w, &h); - - unsigned int nCount = m_aPages.Count(); - for ( unsigned int nPage = 0; nPage < nCount; nPage++ ) { - wxNotebookPage *pPage = m_aPages[nPage]; - pPage->SetSize(0, 0, w, h); - if ( pPage->GetAutoLayout() ) - pPage->Layout(); - } - - // Processing continues to next OnSize - event.Skip(); -} - -void wxNotebook::OnSelChange(wxNotebookEvent& event) -{ - // is it our tab control? - if ( event.GetEventObject() == this ) - ChangePage(event.GetOldSelection(), event.GetSelection()); - - // we want to give others a chance to process this message as well - event.Skip(); -} - -void wxNotebook::OnSetFocus(wxFocusEvent& event) -{ - // set focus to the currently selected page if any - if ( m_nSelection != -1 ) - m_aPages[m_nSelection]->SetFocus(); - - event.Skip(); -} - -void wxNotebook::OnNavigationKey(wxNavigationKeyEvent& event) -{ - if ( event.IsWindowChange() ) { - // change pages - AdvanceSelection(event.GetDirection()); - } - else { - // pass to the parent - if ( GetParent() ) { - event.SetCurrentFocus(this); - GetParent()->ProcessEvent(event); - } - } -} - -// ---------------------------------------------------------------------------- -// wxNotebook base class virtuals -// ---------------------------------------------------------------------------- - -// override these 2 functions to do nothing: everything is done in OnSize - -void wxNotebook::SetConstraintSizes(bool /* recurse */) -{ - // don't set the sizes of the pages - their correct size is not yet known - wxControl::SetConstraintSizes(FALSE); -} - -bool wxNotebook::DoPhase(int /* nPhase */) -{ - return TRUE; -} - -void wxNotebook::Command(wxCommandEvent& event) -{ - wxFAIL_MSG("wxNotebook::Command not implemented"); -} - -// ---------------------------------------------------------------------------- -// wxNotebook helper functions -// ---------------------------------------------------------------------------- - -// hide the currently active panel and show the new one -void wxNotebook::ChangePage(int nOldSel, int nSel) -{ - wxASSERT( nOldSel != nSel ); // impossible - - if ( nOldSel != -1 ) { - m_aPages[nOldSel]->Show(FALSE); - } - - wxNotebookPage *pPage = m_aPages[nSel]; - pPage->Show(TRUE); - pPage->SetFocus(); - - m_nSelection = nSel; -} - diff --git a/src/mac/palette.cpp b/src/mac/palette.cpp deleted file mode 100644 index f8db96f8d0..0000000000 --- a/src/mac/palette.cpp +++ /dev/null @@ -1,82 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: palette.cpp -// Purpose: wxPalette -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "palette.h" -#endif - -#include "wx/palette.h" - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxPalette, wxGDIObject) -#endif - -/* - * Palette - * - */ - -wxPaletteRefData::wxPaletteRefData() -{ - // TODO -} - -wxPaletteRefData::~wxPaletteRefData() -{ - // TODO -} - -wxPalette::wxPalette() -{ -} - -wxPalette::wxPalette(int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue) -{ - Create(n, red, green, blue); -} - -wxPalette::~wxPalette() -{ -} - -bool wxPalette::Create(int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue) -{ - UnRef(); - - m_refData = new wxPaletteRefData; - - // TODO - - return FALSE; -} - -int wxPalette::GetPixel(const unsigned char red, const unsigned char green, const unsigned char blue) const -{ - if ( !m_refData ) - return FALSE; - - // TODO - return FALSE; -} - -bool wxPalette::GetRGB(int index, unsigned char *red, unsigned char *green, unsigned char *blue) const -{ - if ( !m_refData ) - return FALSE; - - if (index < 0 || index > 255) - return FALSE; - - // TODO - return FALSE; -} - - diff --git a/src/mac/pen.cpp b/src/mac/pen.cpp deleted file mode 100644 index 1e3ced2a3a..0000000000 --- a/src/mac/pen.cpp +++ /dev/null @@ -1,202 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: pen.cpp -// Purpose: wxPen -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "pen.h" -#endif - -#include "wx/setup.h" -#include "wx/utils.h" -#include "wx/pen.h" - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxPen, wxGDIObject) -#endif - -wxPenRefData::wxPenRefData() -{ - m_style = wxSOLID; - m_width = 1; - m_join = wxJOIN_ROUND ; - m_cap = wxCAP_ROUND ; - m_nbDash = 0 ; - m_dash = 0 ; -/* TODO: null data - m_hPen = 0; -*/ -} - -wxPenRefData::wxPenRefData(const wxPenRefData& data) -{ - m_style = data.m_style; - m_width = data.m_width; - m_join = data.m_join; - m_cap = data.m_cap; - m_nbDash = data.m_nbDash; - m_dash = data.m_dash; - m_colour = data.m_colour; -/* TODO: null data - m_hPen = 0; -*/ -} - -wxPenRefData::~wxPenRefData() -{ - // TODO: delete data -} - -// Pens - -wxPen::wxPen() -{ - if ( wxThePenList ) - wxThePenList->AddPen(this); -} - -wxPen::~wxPen() -{ - if (wxThePenList) - wxThePenList->RemovePen(this); -} - -// Should implement Create -wxPen::wxPen(const wxColour& col, int Width, int Style) -{ - m_refData = new wxPenRefData; - - M_PENDATA->m_colour = col; - M_PENDATA->m_width = Width; - M_PENDATA->m_style = Style; - M_PENDATA->m_join = wxJOIN_ROUND ; - M_PENDATA->m_cap = wxCAP_ROUND ; - M_PENDATA->m_nbDash = 0 ; - M_PENDATA->m_dash = 0 ; - - RealizeResource(); - - if ( wxThePenList ) - wxThePenList->AddPen(this); -} - -wxPen::wxPen(const wxBitmap& stipple, int Width) -{ - m_refData = new wxPenRefData; - - M_PENDATA->m_stipple = stipple; - M_PENDATA->m_width = Width; - M_PENDATA->m_style = wxSTIPPLE; - M_PENDATA->m_join = wxJOIN_ROUND ; - M_PENDATA->m_cap = wxCAP_ROUND ; - M_PENDATA->m_nbDash = 0 ; - M_PENDATA->m_dash = 0 ; - - RealizeResource(); - - if ( wxThePenList ) - wxThePenList->AddPen(this); -} - -void wxPen::Unshare() -{ - // Don't change shared data - if (!m_refData) - { - m_refData = new wxPenRefData(); - } - else - { - wxPenRefData* ref = new wxPenRefData(*(wxPenRefData*)m_refData); - UnRef(); - m_refData = ref; - } -} - -void wxPen::SetColour(const wxColour& col) -{ - Unshare(); - - M_PENDATA->m_colour = col; - - RealizeResource(); -} - -void wxPen::SetColour(unsigned char r, unsigned char g, unsigned char b) -{ - Unshare(); - - M_PENDATA->m_colour.Set(r, g, b); - - RealizeResource(); -} - -void wxPen::SetWidth(int Width) -{ - Unshare(); - - M_PENDATA->m_width = Width; - - RealizeResource(); -} - -void wxPen::SetStyle(int Style) -{ - Unshare(); - - M_PENDATA->m_style = Style; - - RealizeResource(); -} - -void wxPen::SetStipple(const wxBitmap& Stipple) -{ - Unshare(); - - M_PENDATA->m_stipple = Stipple; - M_PENDATA->m_style = wxSTIPPLE; - - RealizeResource(); -} - -void wxPen::SetDashes(int nb_dashes, const wxDash *Dash) -{ - Unshare(); - - M_PENDATA->m_nbDash = nb_dashes; - M_PENDATA->m_dash = (wxDash *)Dash; - - RealizeResource(); -} - -void wxPen::SetJoin(int Join) -{ - Unshare(); - - M_PENDATA->m_join = Join; - - RealizeResource(); -} - -void wxPen::SetCap(int Cap) -{ - Unshare(); - - M_PENDATA->m_cap = Cap; - - RealizeResource(); -} - -bool wxPen::RealizeResource() -{ - // TODO: create actual pen - return FALSE; -} - - diff --git a/src/mac/print.cpp b/src/mac/print.cpp deleted file mode 100644 index 61fd6e7e99..0000000000 --- a/src/mac/print.cpp +++ /dev/null @@ -1,82 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: print.cpp -// Purpose: Print framework -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "print.h" -#endif - -#include "wx/stubs/print.h" -#include "wx/stubs/printdlg.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxPrinter, wxPrinterBase) -IMPLEMENT_CLASS(wxPrintPreview, wxPrintPreviewBase) -#endif - -/* - * Printer - */ - -wxPrinter::wxPrinter(wxPrintData *data): - wxPrinterBase(data) -{ -} - -wxPrinter::~wxPrinter() -{ -} - -bool wxPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt) -{ - // TODO. See wxPostScriptPrinter::Print for hints. - return FALSE; -} - -bool wxPrinter::PrintDialog(wxWindow *parent) -{ - wxPrintDialog dialog(parent, & m_printData); - return (dialog.ShowModal() == wxID_OK); -} - -bool wxPrinter::Setup(wxWindow *parent) -{ - wxPrintDialog dialog(parent, & m_printData); - dialog.GetPrintData().SetSetupDialog(TRUE); - return (dialog.ShowModal() == wxID_OK); -} - -/* - * Print preview - */ - -wxPrintPreview::wxPrintPreview(wxPrintout *printout, wxPrintout *printoutForPrinting, wxPrintData *data): - wxPrintPreviewBase(printout, printoutForPrinting, data) -{ - DetermineScaling(); -} - -wxPrintPreview::~wxPrintPreview() -{ -} - -bool wxPrintPreview::Print(bool interactive) -{ - if (!m_printPrintout) - return FALSE; - wxPrinter printer(&m_printData); - return printer.Print(m_previewFrame, m_printPrintout, interactive); -} - -void wxPrintPreview::DetermineScaling() -{ - // TODO -} - diff --git a/src/mac/printdlg.cpp b/src/mac/printdlg.cpp deleted file mode 100644 index eae3b95568..0000000000 --- a/src/mac/printdlg.cpp +++ /dev/null @@ -1,115 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: printdlg.cpp -// Purpose: wxPrintDialog, wxPageSetupDialog -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "printdlg.h" -#endif - -#include "wx/object.h" -#include "wx/stubs/printdlg.h" -#include "wx/dcprint.h" - -// Use generic page setup dialog: use your own native one if one exists. -#include "wx/generic/prntdlgg.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxPrintDialog, wxDialog) -IMPLEMENT_CLASS(wxPageSetupDialog, wxDialog) -#endif - -wxPrintDialog::wxPrintDialog(): - wxDialog() -{ - m_dialogParent = NULL; - m_printerDC = NULL; -} - -wxPrintDialog::wxPrintDialog(wxWindow *p, wxPrintData* data): - wxDialog() -{ - Create(p, data); -} - -bool wxPrintDialog::Create(wxWindow *p, wxPrintData* data) -{ - m_dialogParent = p; - m_printerDC = NULL; - - if ( data ) - m_printData = *data; - - return TRUE; -} - -wxPrintDialog::~wxPrintDialog() -{ - if (m_printerDC) - delete m_printerDC; -} - -int wxPrintDialog::ShowModal() -{ - // TODO - return wxID_CANCEL; -} - -wxDC *wxPrintDialog::GetPrintDC() -{ - if (m_printerDC) - { - wxDC* dc = m_printerDC; - m_printerDC = NULL; - return dc; - } - else - return NULL; -} - -/* - * wxPageSetupDialog - */ - -wxPageSetupDialog::wxPageSetupDialog(): - wxDialog() -{ - m_dialogParent = NULL; -} - -wxPageSetupDialog::wxPageSetupDialog(wxWindow *p, wxPageSetupData *data): - wxDialog() -{ - Create(p, data); -} - -bool wxPageSetupDialog::Create(wxWindow *p, wxPageSetupData *data) -{ - m_dialogParent = p; - - if (data) - m_pageSetupData = (*data); - - return TRUE; -} - -wxPageSetupDialog::~wxPageSetupDialog() -{ -} - -int wxPageSetupDialog::ShowModal() -{ - // Uses generic page setup dialog - wxGenericPageSetupDialog *genericPageSetupDialog = new wxGenericPageSetupDialog(GetParent(), & m_pageSetupData); - int ret = genericPageSetupDialog->ShowModal(); - m_pageSetupData = genericPageSetupDialog->GetPageSetupData(); - genericPageSetupDialog->Close(TRUE); - return ret; -} - diff --git a/src/mac/radiobox.cpp b/src/mac/radiobox.cpp deleted file mode 100644 index da582d0e52..0000000000 --- a/src/mac/radiobox.cpp +++ /dev/null @@ -1,194 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: radiobox.cpp -// Purpose: wxRadioBox -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "radiobox.h" -#endif - -#include "wx/radiobox.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxRadioBox, wxControl) -#endif - -// Radio box item -wxRadioBox::wxRadioBox() -{ - m_selectedButton = -1; - m_noItems = 0; - m_noRowsOrCols = 0; - m_majorDim = 0 ; -} - -bool wxRadioBox::Create(wxWindow *parent, wxWindowID id, const wxString& title, - const wxPoint& pos, const wxSize& size, - int n, const wxString choices[], - int majorDim, long style, - const wxValidator& val, const wxString& name) -{ - m_selectedButton = -1; - m_noItems = n; - - SetName(name); - SetValidator(val); - - parent->AddChild(this); - - m_windowStyle = (long&)style; - - if (id == -1) - m_windowId = NewControlId(); - else - m_windowId = id; - - m_noRowsOrCols = majorDim; - - if (majorDim==0) - m_majorDim = n ; - else - m_majorDim = majorDim ; - - - // TODO create radiobox - return FALSE; -} - - -wxRadioBox::~wxRadioBox() -{ - // TODO -} - -wxString wxRadioBox::GetLabel(int item) const -{ - // TODO - return wxString(""); -} - -void wxRadioBox::SetLabel(int item, const wxString& label) -{ - // TODO -} - -int wxRadioBox::FindString(const wxString& s) const -{ - // TODO - return -1; -} - -void wxRadioBox::SetSelection(int n) -{ - if ((n < 0) || (n >= m_noItems)) - return; - // TODO - - m_selectedButton = n; -} - -// Get single selection, for single choice list items -int wxRadioBox::GetSelection() const -{ - return m_selectedButton; -} - -// Find string for position -wxString wxRadioBox::GetString(int n) const -{ - // TODO - return wxString(""); -} - -void wxRadioBox::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -void wxRadioBox::GetSize(int *width, int *height) const -{ - // TODO -} - -void wxRadioBox::GetPosition(int *x, int *y) const -{ - // TODO -} - -wxString wxRadioBox::GetLabel() const -{ - // TODO - return wxString(""); -} - -void wxRadioBox::SetLabel(const wxString& label) -{ - // TODO -} - -void wxRadioBox::SetFocus() -{ - // TODO -} - -bool wxRadioBox::Show(bool show) -{ - // TODO - return FALSE; -} - -// Enable a specific button -void wxRadioBox::Enable(int item, bool enable) -{ - // TODO -} - -// Enable all controls -void wxRadioBox::Enable(bool enable) -{ - wxControl::Enable(enable); - - // TODO -} - -// Show a specific button -void wxRadioBox::Show(int item, bool show) -{ - // TODO -} - -// For single selection items only -wxString wxRadioBox::GetStringSelection () const -{ - int sel = GetSelection (); - if (sel > -1) - return this->GetString (sel); - else - return wxString(""); -} - -bool wxRadioBox::SetStringSelection (const wxString& s) -{ - int sel = FindString (s); - if (sel > -1) - { - SetSelection (sel); - return TRUE; - } - else - return FALSE; -} - -void wxRadioBox::Command (wxCommandEvent & event) -{ - SetSelection (event.m_commandInt); - ProcessCommand (event); -} - - diff --git a/src/mac/radiobut.cpp b/src/mac/radiobut.cpp deleted file mode 100644 index 65baab38b6..0000000000 --- a/src/mac/radiobut.cpp +++ /dev/null @@ -1,68 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: radiobut.cpp -// Purpose: wxRadioButton -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "radiobut.h" -#endif - -#include "wx/radiobut.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxRadioButton, wxControl) -#endif - -bool wxRadioButton::Create(wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); - SetValidator(validator); - - if (parent) parent->AddChild(this); - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - m_windowStyle = style ; - - // TODO create radiobutton - return FALSE; -} - -void wxRadioButton::SetLabel(const wxString& label) -{ - // TODO -} - -void wxRadioButton::SetValue(bool value) -{ - // TODO -} - -// Get single selection, for single choice list items -bool wxRadioButton::GetValue() const -{ - // TODO - return FALSE; -} - -void wxRadioButton::Command (wxCommandEvent & event) -{ - SetValue ( (event.m_commandInt != 0) ); - ProcessCommand (event); -} - - diff --git a/src/mac/region.cpp b/src/mac/region.cpp deleted file mode 100644 index c71d4c605a..0000000000 --- a/src/mac/region.cpp +++ /dev/null @@ -1,363 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// File: region.cpp -// Purpose: Region class -// Author: Markus Holzem/Julian Smart/AUTHOR -// Created: Fri Oct 24 10:46:34 MET 1997 -// RCS-ID: $Id$ -// Copyright: (c) 1997 Markus Holzem/Julian Smart/AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "region.h" -#endif - -#include "wx/region.h" -#include "wx/gdicmn.h" - -#if !USE_SHARED_LIBRARY - IMPLEMENT_DYNAMIC_CLASS(wxRegion, wxGDIObject) - IMPLEMENT_DYNAMIC_CLASS(wxRegionIterator, wxObject) -#endif - -//----------------------------------------------------------------------------- -// wxRegionRefData implementation -//----------------------------------------------------------------------------- - -class WXDLLEXPORT wxRegionRefData : public wxGDIRefData { -public: - wxRegionRefData() - { - } - - wxRegionRefData(const wxRegionRefData& data) - { - // TODO - } - - ~wxRegionRefData() - { - // TODO - } -}; - - -//----------------------------------------------------------------------------- -// wxRegion -//----------------------------------------------------------------------------- - -/*! - * Create an empty region. - */ -wxRegion::wxRegion() -{ - m_refData = new wxRegionRefData; - // TODO create empty region -} - -wxRegion::wxRegion(long x, long y, long w, long h) -{ - m_refData = new wxRegionRefData; - // TODO create rect region -} - -wxRegion::wxRegion(const wxPoint& topLeft, const wxPoint& bottomRight) -{ - m_refData = new wxRegionRefData; - // TODO create rect region -} - -wxRegion::wxRegion(const wxRect& rect) -{ - m_refData = new wxRegionRefData; - // TODO create rect region -} - -/*! - * Destroy the region. - */ -wxRegion::~wxRegion() -{ - // m_refData unrefed in ~wxObject -} - -//----------------------------------------------------------------------------- -//# Modify region -//----------------------------------------------------------------------------- - -//! Clear current region -void wxRegion::Clear() -{ - UnRef(); -} - -//! Combine rectangle (x, y, w, h) with this. -bool wxRegion::Combine(long x, long y, long width, long height, wxRegionOp op) -{ - // Don't change shared data - if (!m_refData) { - m_refData = new wxRegionRefData(); - } else if (m_refData->GetRefCount() > 1) { - wxRegionRefData* ref = (wxRegionRefData*)m_refData; - UnRef(); - m_refData = new wxRegionRefData(*ref); - } - // If ref count is 1, that means it's 'ours' anyway so no action. - - // TODO create rect region - - int mode = 0; // TODO platform-specific code - switch (op) - { - case wxRGN_AND: - // TODO - break ; - case wxRGN_OR: - // TODO - break ; - case wxRGN_XOR: - // TODO - break ; - case wxRGN_DIFF: - // TODO - break ; - case wxRGN_COPY: - default: - // TODO - break ; - } - - // TODO do combine region - - return FALSE; -} - -//! Union /e region with this. -bool wxRegion::Combine(const wxRegion& region, wxRegionOp op) -{ - if (region.Empty()) - return FALSE; - - // Don't change shared data - if (!m_refData) { - m_refData = new wxRegionRefData(); - } else if (m_refData->GetRefCount() > 1) { - wxRegionRefData* ref = (wxRegionRefData*)m_refData; - UnRef(); - m_refData = new wxRegionRefData(*ref); - } - - int mode = 0; // TODO platform-specific code - switch (op) - { - case wxRGN_AND: - // TODO - break ; - case wxRGN_OR: - // TODO - break ; - case wxRGN_XOR: - // TODO - break ; - case wxRGN_DIFF: - // TODO - break ; - case wxRGN_COPY: - default: - // TODO - break ; - } - - // TODO combine region - - return FALSE; -} - -bool wxRegion::Combine(const wxRect& rect, wxRegionOp op) -{ - return Combine(rect.GetLeft(), rect.GetTop(), rect.GetWidth(), rect.GetHeight(), op); -} - -//----------------------------------------------------------------------------- -//# Information on region -//----------------------------------------------------------------------------- - -// Outer bounds of region -void wxRegion::GetBox(long& x, long& y, long&w, long &h) const -{ - if (m_refData) { - // TODO get box - } else { - x = y = w = h = 0; - } -} - -wxRect wxRegion::GetBox() const -{ - long x, y, w, h; - GetBox(x, y, w, h); - return wxRect(x, y, w, h); -} - -// Is region empty? -bool wxRegion::Empty() const -{ - // TODO - return FALSE; -} - -//----------------------------------------------------------------------------- -//# Tests -//----------------------------------------------------------------------------- - -// Does the region contain the point (x,y)? -wxRegionContain wxRegion::Contains(long x, long y) const -{ - if (!m_refData) - return wxOutRegion; - - // TODO. Return wxInRegion if within region. - if (0) - return wxInRegion; - return wxOutRegion; -} - -// Does the region contain the point pt? -wxRegionContain wxRegion::Contains(const wxPoint& pt) const -{ - if (!m_refData) - return wxOutRegion; - - // TODO. Return wxInRegion if within region. - if (0) - return wxInRegion; - else - return wxOutRegion; -} - -// Does the region contain the rectangle (x, y, w, h)? -wxRegionContain wxRegion::Contains(long x, long y, long w, long h) const -{ - if (!m_refData) - return wxOutRegion; - - // TODO. Return wxInRegion if within region. - if (0) - return wxInRegion; - else - return wxOutRegion; -} - -// Does the region contain the rectangle rect -wxRegionContain wxRegion::Contains(const wxRect& rect) const -{ - if (!m_refData) - return wxOutRegion; - - long x, y, w, h; - x = rect.x; - y = rect.y; - w = rect.GetWidth(); - h = rect.GetHeight(); - return Contains(x, y, w, h); -} - -/////////////////////////////////////////////////////////////////////////////// -// // -// wxRegionIterator // -// // -/////////////////////////////////////////////////////////////////////////////// - -/*! - * Initialize empty iterator - */ -wxRegionIterator::wxRegionIterator() : m_current(0), m_numRects(0), m_rects(NULL) -{ -} - -wxRegionIterator::~wxRegionIterator() -{ - if (m_rects) - delete[] m_rects; -} - -/*! - * Initialize iterator for region - */ -wxRegionIterator::wxRegionIterator(const wxRegion& region) -{ - m_rects = NULL; - - Reset(region); -} - -/*! - * Reset iterator for a new /e region. - */ -void wxRegionIterator::Reset(const wxRegion& region) -{ - m_current = 0; - m_region = region; - - if (m_rects) - delete[] m_rects; - - m_rects = NULL; - - if (m_region.Empty()) - m_numRects = 0; - else - { - // TODO create m_rects and fill with rectangles for this region - m_numRects = 0; - } -} - -/*! - * Increment iterator. The rectangle returned is the one after the - * incrementation. - */ -void wxRegionIterator::operator ++ () -{ - if (m_current < m_numRects) - ++m_current; -} - -/*! - * Increment iterator. The rectangle returned is the one before the - * incrementation. - */ -void wxRegionIterator::operator ++ (int) -{ - if (m_current < m_numRects) - ++m_current; -} - -long wxRegionIterator::GetX() const -{ - if (m_current < m_numRects) - return m_rects[m_current].x; - return 0; -} - -long wxRegionIterator::GetY() const -{ - if (m_current < m_numRects) - return m_rects[m_current].y; - return 0; -} - -long wxRegionIterator::GetW() const -{ - if (m_current < m_numRects) - return m_rects[m_current].width ; - return 0; -} - -long wxRegionIterator::GetH() const -{ - if (m_current < m_numRects) - return m_rects[m_current].height; - return 0; -} - diff --git a/src/mac/scrolbar.cpp b/src/mac/scrolbar.cpp deleted file mode 100644 index 54df181166..0000000000 --- a/src/mac/scrolbar.cpp +++ /dev/null @@ -1,78 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: scrolbar.cpp -// Purpose: wxScrollBar -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "scrolbar.h" -#endif - -#include "wx/scrolbar.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxScrollBar, wxControl) - -#endif - -// Scrollbar -bool wxScrollBar::Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - if (!parent) - return FALSE; - parent->AddChild(this); - SetName(name); - SetValidator(validator); - - m_windowStyle = style; - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - // TODO create scrollbar - return TRUE; -} - -wxScrollBar::~wxScrollBar() -{ -} - -void wxScrollBar::SetThumbPosition(int viewStart) -{ - // TODO -} - -int wxScrollBar::GetThumbPosition() const -{ - // TODO - return 0; -} - -void wxScrollBar::SetScrollbar(int position, int thumbSize, int range, int pageSize, - bool refresh) -{ - m_viewSize = pageSize; - m_pageSize = thumbSize; - m_objectSize = range; - - // TODO -} - - -void wxScrollBar::Command(wxCommandEvent& event) -{ - SetThumbPosition(event.m_commandInt); - ProcessCommand(event); -} - diff --git a/src/mac/settings.cpp b/src/mac/settings.cpp deleted file mode 100644 index 2beda5c2a6..0000000000 --- a/src/mac/settings.cpp +++ /dev/null @@ -1,176 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: settings.cpp -// Purpose: wxSettings -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "settings.h" -#endif - -#include "wx/settings.h" - -wxColour wxSystemSettings::GetSystemColour(int index) -{ - // TODO - return wxColour(); -} - -wxFont wxSystemSettings::GetSystemFont(int index) -{ - // TODO - switch (index) - { - case wxSYS_DEVICE_DEFAULT_FONT: - { - break; - } - case wxSYS_DEFAULT_PALETTE: - { - break; - } - case wxSYS_SYSTEM_FIXED_FONT: - { - break; - } - case wxSYS_SYSTEM_FONT: - { - break; - } - default: - case wxSYS_DEFAULT_GUI_FONT: - { - break; - } - } - - return wxFont(); -} - -// Get a system metric, e.g. scrollbar size -int wxSystemSettings::GetSystemMetric(int index) -{ - switch ( index) - { - case wxSYS_MOUSE_BUTTONS: - // TODO - return 0; - case wxSYS_BORDER_X: - // TODO - return 0; - case wxSYS_BORDER_Y: - // TODO - return 0; - case wxSYS_CURSOR_X: - // TODO - return 0; - case wxSYS_CURSOR_Y: - // TODO - return 0; - case wxSYS_DCLICK_X: - // TODO - return 0; - case wxSYS_DCLICK_Y: - // TODO - return 0; - case wxSYS_DRAG_X: - // TODO - return 0; - case wxSYS_DRAG_Y: - // TODO - return 0; - case wxSYS_EDGE_X: - // TODO - return 0; - case wxSYS_EDGE_Y: - // TODO - return 0; - case wxSYS_HSCROLL_ARROW_X: - // TODO - return 0; - case wxSYS_HSCROLL_ARROW_Y: - // TODO - return 0; - case wxSYS_HTHUMB_X: - // TODO - return 0; - case wxSYS_ICON_X: - // TODO - return 0; - case wxSYS_ICON_Y: - // TODO - return 0; - case wxSYS_ICONSPACING_X: - // TODO - return 0; - case wxSYS_ICONSPACING_Y: - // TODO - return 0; - case wxSYS_WINDOWMIN_X: - // TODO - return 0; - case wxSYS_WINDOWMIN_Y: - // TODO - return 0; - case wxSYS_SCREEN_X: - // TODO - return 0; - case wxSYS_SCREEN_Y: - // TODO - return 0; - case wxSYS_FRAMESIZE_X: - // TODO - return 0; - case wxSYS_FRAMESIZE_Y: - // TODO - return 0; - case wxSYS_SMALLICON_X: - // TODO - return 0; - case wxSYS_SMALLICON_Y: - // TODO - return 0; - case wxSYS_HSCROLL_Y: - // TODO - return 0; - case wxSYS_VSCROLL_X: - // TODO - return 0; - case wxSYS_VSCROLL_ARROW_X: - // TODO - return 0; - case wxSYS_VSCROLL_ARROW_Y: - // TODO - return 0; - case wxSYS_VTHUMB_Y: - // TODO - return 0; - case wxSYS_CAPTION_Y: - // TODO - return 0; - case wxSYS_MENU_Y: - // TODO - return 0; - case wxSYS_NETWORK_PRESENT: - // TODO - return 0; - case wxSYS_PENWINDOWS_PRESENT: - // TODO - return 0; - case wxSYS_SHOW_SOUNDS: - // TODO - return 0; - case wxSYS_SWAP_BUTTONS: - // TODO - return 0; - default: - return 0; - } - return 0; -} - diff --git a/src/mac/slider.cpp b/src/mac/slider.cpp deleted file mode 100644 index c9952342a9..0000000000 --- a/src/mac/slider.cpp +++ /dev/null @@ -1,190 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: slider.cpp -// Purpose: wxSlider -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "slider.h" -#endif - -#include "wx/slider.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxSlider, wxControl) - -BEGIN_EVENT_TABLE(wxSlider, wxControl) -END_EVENT_TABLE() -#endif - - - -// Slider -wxSlider::wxSlider() -{ - m_pageSize = 1; - m_lineSize = 1; - m_rangeMax = 0; - m_rangeMin = 0; - m_tickFreq = 0; -} - -bool wxSlider::Create(wxWindow *parent, wxWindowID id, - int value, int minValue, int maxValue, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); - SetValidator(validator); - - if (parent) parent->AddChild(this); - - m_lineSize = 1; - m_windowStyle = style; - m_tickFreq = 0; - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - m_rangeMax = maxValue; - m_rangeMin = minValue; - - m_pageSize = (int)((maxValue-minValue)/10); - - // TODO create slider - - return FALSE; -} - -wxSlider::~wxSlider() -{ -} - -int wxSlider::GetValue() const -{ - // TODO - return 0; -} - -void wxSlider::SetValue(int value) -{ - // TODO -} - -void wxSlider::GetSize(int *width, int *height) const -{ - // TODO -} - -void wxSlider::GetPosition(int *x, int *y) const -{ - // TODO -} - -void wxSlider::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -void wxSlider::SetRange(int minValue, int maxValue) -{ - m_rangeMin = minValue; - m_rangeMax = maxValue; - - // TODO -} - -// For trackbars only -void wxSlider::SetTickFreq(int n, int pos) -{ - // TODO - m_tickFreq = n; -} - -void wxSlider::SetPageSize(int pageSize) -{ - // TODO - m_pageSize = pageSize; -} - -int wxSlider::GetPageSize() const -{ - return m_pageSize; -} - -void wxSlider::ClearSel() -{ - // TODO -} - -void wxSlider::ClearTicks() -{ - // TODO -} - -void wxSlider::SetLineSize(int lineSize) -{ - m_lineSize = lineSize; - // TODO -} - -int wxSlider::GetLineSize() const -{ - // TODO - return 0; -} - -int wxSlider::GetSelEnd() const -{ - // TODO - return 0; -} - -int wxSlider::GetSelStart() const -{ - // TODO - return 0; -} - -void wxSlider::SetSelection(int minPos, int maxPos) -{ - // TODO -} - -void wxSlider::SetThumbLength(int len) -{ - // TODO -} - -int wxSlider::GetThumbLength() const -{ - // TODO - return 0; -} - -void wxSlider::SetTick(int tickPos) -{ - // TODO -} - -void wxSlider::Command (wxCommandEvent & event) -{ - SetValue (event.GetInt()); - ProcessCommand (event); -} - -bool wxSlider::Show(bool show) -{ - // TODO - return TRUE; -} - diff --git a/src/mac/spinbutt.cpp b/src/mac/spinbutt.cpp deleted file mode 100644 index cbea725592..0000000000 --- a/src/mac/spinbutt.cpp +++ /dev/null @@ -1,78 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: spinbutt.cpp -// Purpose: wxSpinButton -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "spinbutt.h" -#endif - -#include "wx/spinbutt.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxSpinButton, wxControl) -#endif - -wxSpinButton::wxSpinButton() -{ - m_min = 0; - m_max = 100; -} - -bool wxSpinButton::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, - long style, const wxString& name) -{ - SetName(name); - - m_windowStyle = style; - - SetParent(parent); - - m_min = 0; - m_max = 100; - - m_windowId = (id == -1) ? NewControlId() : id; - - // TODO create spin button - return FALSE; -} - -wxSpinButton::~wxSpinButton() -{ -} - -// Attributes -//////////////////////////////////////////////////////////////////////////// - -int wxSpinButton::GetValue() const -{ - // TODO - return 0; -} - -void wxSpinButton::SetValue(int val) -{ - // TODO -} - -void wxSpinButton::SetRange(int minVal, int maxVal) -{ - m_min = minVal; - m_max = maxVal; - // TODO -} - -// Spin event -IMPLEMENT_DYNAMIC_CLASS(wxSpinEvent, wxScrollEvent) - -wxSpinEvent::wxSpinEvent(wxEventType commandType, int id): - wxScrollEvent(commandType, id) -{ -} - diff --git a/src/mac/statbmp.cpp b/src/mac/statbmp.cpp deleted file mode 100644 index a67c558465..0000000000 --- a/src/mac/statbmp.cpp +++ /dev/null @@ -1,59 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: statbmp.cpp -// Purpose: wxStaticBitmap -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "statbmp.h" -#endif - -#include "wx/statbmp.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxStaticBitmap, wxControl) -#endif - -/* - * wxStaticBitmap - */ - -bool wxStaticBitmap::Create(wxWindow *parent, wxWindowID id, - const wxBitmap& bitmap, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - m_messageBitmap = bitmap; - SetName(name); - if (parent) parent->AddChild(this); - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - m_windowStyle = style; - - // TODO: create static bitmap control - return FALSE; -} - -void wxStaticBitmap::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -void wxStaticBitmap::SetBitmap(const wxBitmap& bitmap) -{ - m_messageBitmap = bitmap; - - // TODO: redraw bitmap -} - diff --git a/src/mac/statbox.cpp b/src/mac/statbox.cpp deleted file mode 100644 index b239dc738c..0000000000 --- a/src/mac/statbox.cpp +++ /dev/null @@ -1,62 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: statbox.cpp -// Purpose: wxStaticBox -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "statbox.h" -#endif - -#include "wx/statbox.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxStaticBox, wxControl) - -BEGIN_EVENT_TABLE(wxStaticBox, wxControl) - EVT_ERASE_BACKGROUND(wxStaticBox::OnEraseBackground) -END_EVENT_TABLE() - -#endif - -/* - * Static box - */ - -bool wxStaticBox::Create(wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - SetName(name); - - if (parent) parent->AddChild(this); - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - m_windowStyle = style; - - // TODO: create static box - return FALSE; -} - -void wxStaticBox::SetLabel(const wxString& label) -{ - // TODO -} - -void wxStaticBox::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - diff --git a/src/mac/stattext.cpp b/src/mac/stattext.cpp deleted file mode 100644 index 3b19c7184d..0000000000 --- a/src/mac/stattext.cpp +++ /dev/null @@ -1,60 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: stattext.cpp -// Purpose: wxStaticText -// Author: AUTHOR -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "stattext.h" -#endif - -#include "wx/app.h" -#include "wx/stattext.h" - -#include - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxStaticText, wxControl) -#endif - -bool wxStaticText::Create(wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - SetName(name); - if (parent) parent->AddChild(this); - - SetBackgroundColour(parent->GetBackgroundColour()) ; - SetForegroundColour(parent->GetForegroundColour()) ; - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - m_windowStyle = style; - - SetFont(parent->GetFont()); - - // TODO - return FALSE; -} - -void wxStaticText::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -void wxStaticText::SetLabel(const wxString& label) -{ - // TODO -} - diff --git a/src/mac/statusbr.cpp b/src/mac/statusbr.cpp deleted file mode 100644 index dff1ddec34..0000000000 --- a/src/mac/statusbr.cpp +++ /dev/null @@ -1,162 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: statbar.cpp -// Purpose: native implementation of wxStatusBar (optional) -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 AUTHOR -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "statusbr.h" -#endif - -// ---------------------------------------------------------------------------- -// headers -// ---------------------------------------------------------------------------- - -#include "wx/stubs/statusbr.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxStatusBarXX, wxStatusBar); - -BEGIN_EVENT_TABLE(wxStatusBarXX, wxStatusBar) - EVT_SIZE(wxStatusBarXX::OnSize) -END_EVENT_TABLE() -#endif //USE_SHARED_LIBRARY - - -// ============================================================================ -// implementation -// ============================================================================ - -// ---------------------------------------------------------------------------- -// wxStatusBarXX class -// ---------------------------------------------------------------------------- - -wxStatusBarXX::wxStatusBarXX() -{ - SetParent(NULL); -} - -wxStatusBarXX::wxStatusBarXX(wxWindow *parent, wxWindowID id, long style) -{ - Create(parent, id, style); -} - -bool wxStatusBarXX::Create(wxWindow *parent, wxWindowID id, long style) -{ - SetParent(parent); - - if (id == -1) - m_windowId = NewControlId(); - else - m_windowId = id; - - // TODO: create status bar - return FALSE; -} - -void wxStatusBarXX::SetFieldsCount(int nFields, const int widths[]) -{ - wxASSERT( (nFields > 0) && (nFields < 255) ); - - m_nFields = nFields; - - CopyFieldsWidth(widths); - SetFieldsWidth(); -} - -void wxStatusBarXX::SetStatusWidths(int n, const int widths[]) -{ - wxASSERT( n == m_nFields ); - - CopyFieldsWidth(widths); - SetFieldsWidth(); -} - -void wxStatusBarXX::CopyFieldsWidth(const int widths[]) -{ - if (widths && !m_statusWidths) - m_statusWidths = new int[m_nFields]; - - if ( widths != NULL ) { - for ( int i = 0; i < m_nFields; i++ ) - m_statusWidths[i] = widths[i]; - } - else { - delete [] m_statusWidths; - m_statusWidths = NULL; - } -} - -void wxStatusBarXX::SetFieldsWidth() -{ - int *pWidths = new int[m_nFields]; - - int nWindowWidth, y; - GetClientSize(&nWindowWidth, &y); - - if ( m_statusWidths == NULL ) { - // default: all fields have the same width - int nWidth = nWindowWidth / m_nFields; - for ( int i = 0; i < m_nFields; i++ ) - pWidths[i] = (i + 1) * nWidth; - } - else { - // -1 doesn't mean the same thing for wxWindows and Win32, recalc - int nTotalWidth = 0, - nVarCount = 0, - i; - for ( i = 0; i < m_nFields; i++ ) { - if ( m_statusWidths[i] == -1 ) - nVarCount++; - else - nTotalWidth += m_statusWidths[i]; - } - - if ( nVarCount == 0 ) { - // wrong! at least one field must be of variable width - wxFAIL; - - nVarCount++; - } - - int nVarWidth = (nWindowWidth - nTotalWidth) / nVarCount; - - // do fill the array - int nCurPos = 0; - for ( i = 0; i < m_nFields; i++ ) { - if ( m_statusWidths[i] == -1 ) - nCurPos += nVarWidth; - else - nCurPos += m_statusWidths[i]; - pWidths[i] = nCurPos; - } - } - - // TODO: set widths - - delete [] pWidths; -} - -void wxStatusBarXX::SetStatusText(const wxString& strText, int nField) -{ - // TODO -} - -wxString wxStatusBarXX::GetStatusText(int nField) const -{ - wxASSERT( (nField > -1) && (nField < m_nFields) ); - - // TODO - return wxString(""); -} - -void wxStatusBarXX::OnSize(wxSizeEvent& event) -{ - // adjust fields widths to the new size - SetFieldsWidth(); -} diff --git a/src/mac/tabctrl.cpp b/src/mac/tabctrl.cpp deleted file mode 100644 index b3b45a72d1..0000000000 --- a/src/mac/tabctrl.cpp +++ /dev/null @@ -1,201 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: tabctrl.cpp -// Purpose: wxTabCtrl -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "tabctrl.h" -#endif - -#include "wx/control.h" -#include "wx/tabctrl.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxTabCtrl, wxControl) - -BEGIN_EVENT_TABLE(wxTabCtrl, wxControl) -END_EVENT_TABLE() -#endif - -wxTabCtrl::wxTabCtrl() -{ - m_imageList = NULL; -} - -bool wxTabCtrl::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, - long style, const wxString& name) -{ - m_imageList = NULL; - - SetName(name); - - m_windowStyle = style; - - SetParent(parent); - - m_windowId = (id < 0 ? NewControlId() : id); - - if (parent) parent->AddChild(this); - - // TODO: create tab control - return FALSE; -} - -wxTabCtrl::~wxTabCtrl() -{ -} - -void wxTabCtrl::Command(wxCommandEvent& event) -{ -} - -// Delete all items -bool wxTabCtrl::DeleteAllItems() -{ - // TODO - return FALSE; -} - -// Delete an item -bool wxTabCtrl::DeleteItem(int item) -{ - // TODO - return FALSE; -} - -// Get the selection -int wxTabCtrl::GetSelection() const -{ - // TODO - return 0; -} - -// Get the tab with the current keyboard focus -int wxTabCtrl::GetCurFocus() const -{ - // TODO - return 0; -} - -// Get the associated image list -wxImageList* wxTabCtrl::GetImageList() const -{ - return m_imageList; -} - -// Get the number of items -int wxTabCtrl::GetItemCount() const -{ - // TODO - return 0; -} - -// Get the rect corresponding to the tab -bool wxTabCtrl::GetItemRect(int item, wxRect& wxrect) const -{ - // TODO - return FALSE; -} - -// Get the number of rows -int wxTabCtrl::GetRowCount() const -{ - // TODO - return 0; -} - -// Get the item text -wxString wxTabCtrl::GetItemText(int item) const -{ - // TODO - return wxString(""); -} - -// Get the item image -int wxTabCtrl::GetItemImage(int item) const -{ - // TODO - return 0; -} - -// Get the item data -void* wxTabCtrl::GetItemData(int item) const -{ - // TODO - return NULL; -} - -// Hit test -int wxTabCtrl::HitTest(const wxPoint& pt, long& flags) -{ - // TODO - return 0; -} - -// Insert an item -bool wxTabCtrl::InsertItem(int item, const wxString& text, int imageId, void* data) -{ - // TODO - return FALSE; -} - -// Set the selection -int wxTabCtrl::SetSelection(int item) -{ - // TODO - return 0; -} - -// Set the image list -void wxTabCtrl::SetImageList(wxImageList* imageList) -{ - // TODO -} - -// Set the text for an item -bool wxTabCtrl::SetItemText(int item, const wxString& text) -{ - // TODO - return FALSE; -} - -// Set the image for an item -bool wxTabCtrl::SetItemImage(int item, int image) -{ - // TODO - return FALSE; -} - -// Set the data for an item -bool wxTabCtrl::SetItemData(int item, void* data) -{ - // TODO - return FALSE; -} - -// Set the size for a fixed-width tab control -void wxTabCtrl::SetItemSize(const wxSize& size) -{ - // TODO -} - -// Set the padding between tabs -void wxTabCtrl::SetPadding(const wxSize& padding) -{ - // TODO -} - -// Tab event -IMPLEMENT_DYNAMIC_CLASS(wxTabEvent, wxCommandEvent) - -wxTabEvent::wxTabEvent(wxEventType commandType, int id): - wxCommandEvent(commandType, id) -{ -} - diff --git a/src/mac/taskbar.cpp b/src/mac/taskbar.cpp deleted file mode 100644 index 5c91250cf0..0000000000 --- a/src/mac/taskbar.cpp +++ /dev/null @@ -1,70 +0,0 @@ -///////////////////////////////////////////////////////////////////////// -// File: taskbar.cpp -// Purpose: Implements wxTaskBarIcon class for manipulating icons on -// the task bar. Optional. -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "taskbar.h" -#endif - -#include - -wxTaskBarIcon::wxTaskBarIcon() -{ - // TODO -} - -wxTaskBarIcon::~wxTaskBarIcon() -{ - // TODO -} - -// Operations -bool wxTaskBarIcon::SetIcon(const wxIcon& icon, const wxString& tooltip) -{ - // TODO - return FALSE; -} - -bool wxTaskBarIcon::RemoveIcon() -{ - // TODO - return FALSE; -} - -// Overridables -void wxTaskBarIcon::OnMouseMove() -{ -} - -void wxTaskBarIcon::OnLButtonDown() -{ -} - -void wxTaskBarIcon::OnLButtonUp() -{ -} - -void wxTaskBarIcon::OnRButtonDown() -{ -} - -void wxTaskBarIcon::OnRButtonUp() -{ -} - -void wxTaskBarIcon::OnLButtonDClick() -{ -} - -void wxTaskBarIcon::OnRButtonDClick() -{ -} - diff --git a/src/mac/textctrl.cpp b/src/mac/textctrl.cpp deleted file mode 100644 index 4171b868b6..0000000000 --- a/src/mac/textctrl.cpp +++ /dev/null @@ -1,447 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: textctrl.cpp -// Purpose: wxTextCtrl -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "textctrl.h" -#endif - -#ifndef __WXMAC__ -#include -#include -#else -#include -#endif -#include - -#include "wx/textctrl.h" -#include "wx/settings.h" -#include "wx/filefn.h" -#include "wx/utils.h" - -#if defined(__BORLANDC__) && !defined(__WIN32__) -#include -#else -#ifndef __MWERKS__ -#ifndef __GNUWIN32__ -#include -#endif -#endif -#endif - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxTextCtrl, wxControl) - -BEGIN_EVENT_TABLE(wxTextCtrl, wxControl) - EVT_DROP_FILES(wxTextCtrl::OnDropFiles) -END_EVENT_TABLE() -#endif - -// Text item -wxTextCtrl::wxTextCtrl() -#ifndef NO_TEXT_WINDOW_STREAM - :streambuf() -#endif -{ - m_fileName = ""; -} - -bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id, - const wxString& value, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - m_fileName = ""; - SetName(name); - SetValidator(validator); - if (parent) parent->AddChild(this); - - m_windowStyle = style; - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - return TRUE; -} - -wxString wxTextCtrl::GetValue() const -{ - // TODO - return wxString(""); -} - -void wxTextCtrl::SetValue(const wxString& value) -{ - // TODO -} - -void wxTextCtrl::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -// Clipboard operations -void wxTextCtrl::Copy() -{ - // TODO -} - -void wxTextCtrl::Cut() -{ - // TODO -} - -void wxTextCtrl::Paste() -{ - // TODO -} - -void wxTextCtrl::SetEditable(bool editable) -{ - // TODO -} - -void wxTextCtrl::SetInsertionPoint(long pos) -{ - // TODO -} - -void wxTextCtrl::SetInsertionPointEnd() -{ - long pos = GetLastPosition(); - SetInsertionPoint(pos); -} - -long wxTextCtrl::GetInsertionPoint() const -{ - // TODO - return 0; -} - -long wxTextCtrl::GetLastPosition() const -{ - // TODO - return 0; -} - -void wxTextCtrl::Replace(long from, long to, const wxString& value) -{ - // TODO -} - -void wxTextCtrl::Remove(long from, long to) -{ - // TODO -} - -void wxTextCtrl::SetSelection(long from, long to) -{ - // TODO -} - -bool wxTextCtrl::LoadFile(const wxString& file) -{ - if (!wxFileExists(file)) - return FALSE; - - m_fileName = file; - - Clear(); - -#ifndef __WXMAC__ - ifstream input((char*) (const char*) file, ios::nocreate | ios::in); -#else - ifstream input((char*) (const char*) file, ios::in); -#endif - if (!input.bad()) - { - struct stat stat_buf; - if (stat(file, &stat_buf) < 0) - return FALSE; - // This may need to be a bigger buffer than the file size suggests, - // if it's a UNIX file. Give it an extra 1000 just in case. - char *tmp_buffer = (char*)malloc((size_t)(stat_buf.st_size+1+1000)); - long no_lines = 0; - long pos = 0; - while (!input.eof() && input.peek() != EOF) - { - input.getline(wxBuffer, 500); - int len = strlen(wxBuffer); - wxBuffer[len] = 13; - wxBuffer[len+1] = 10; - wxBuffer[len+2] = 0; - strcpy(tmp_buffer+pos, wxBuffer); - pos += strlen(wxBuffer); - no_lines++; - } - - // TODO add line - - free(tmp_buffer); - - return TRUE; - } - return FALSE; -} - -// If file is null, try saved file name first -// Returns TRUE if succeeds. -bool wxTextCtrl::SaveFile(const wxString& file) -{ - wxString theFile(file); - if (theFile == "") - theFile = m_fileName; - if (theFile == "") - return FALSE; - m_fileName = theFile; - - ofstream output((char*) (const char*) theFile); - if (output.bad()) - return FALSE; - - // TODO get and save text - - return FALSE; -} - -void wxTextCtrl::WriteText(const wxString& text) -{ - // TODO write text to control -} - -void wxTextCtrl::Clear() -{ - // TODO -} - -bool wxTextCtrl::IsModified() const -{ - // TODO - return FALSE; -} - -// Makes 'unmodified' -void wxTextCtrl::DiscardEdits() -{ - // TODO -} - -int wxTextCtrl::GetNumberOfLines() const -{ - // TODO - return 0; -} - -long wxTextCtrl::XYToPosition(long x, long y) const -{ - // TODO - return 0; -} - -void wxTextCtrl::PositionToXY(long pos, long *x, long *y) const -{ - // TODO -} - -void wxTextCtrl::ShowPosition(long pos) -{ - // TODO -} - -int wxTextCtrl::GetLineLength(long lineNo) const -{ - // TODO - return 0; -} - -wxString wxTextCtrl::GetLineText(long lineNo) const -{ - // TODO - return wxString(""); -} - -/* - * Text item - */ - -void wxTextCtrl::Command(wxCommandEvent & event) -{ - SetValue (event.GetString()); - ProcessCommand (event); -} - -void wxTextCtrl::OnDropFiles(wxDropFilesEvent& event) -{ - // By default, load the first file into the text window. - if (event.GetNumberOfFiles() > 0) - { - LoadFile(event.GetFiles()[0]); - } -} - -// The streambuf code was partly taken from chapter 3 by Jerry Schwarz of -// AT&T's "C++ Lanuage System Release 3.0 Library Manual" - Stein Somers - -//========================================================================= -// Called then the buffer is full (gcc 2.6.3) -// or when "endl" is output (Borland 4.5) -//========================================================================= -// Class declaration using multiple inheritance doesn't work properly for -// Borland. See note in wb_text.h. -#ifndef NO_TEXT_WINDOW_STREAM -int wxTextCtrl::overflow(int c) -{ - // Make sure there is a holding area - if ( allocate()==EOF ) - { - wxError("Streambuf allocation failed","Internal error"); - return EOF; - } - - // Verify that there are no characters in get area - if ( gptr() && gptr() < egptr() ) - { - wxError("Who's trespassing my get area?","Internal error"); - return EOF; - } - - // Reset get area - setg(0,0,0); - - // Make sure there is a put area - if ( ! pptr() ) - { -/* This doesn't seem to be fatal so comment out error message */ -// wxError("Put area not opened","Internal error"); - setp( base(), base() ); - } - - // Determine how many characters have been inserted but no consumed - int plen = pptr() - pbase(); - - // Now Jerry relies on the fact that the buffer is at least 2 chars - // long, but the holding area "may be as small as 1" ??? - // And we need an additional \0, so let's keep this inefficient but - // safe copy. - - // If c!=EOF, it is a character that must also be comsumed - int xtra = c==EOF? 0 : 1; - - // Write temporary C-string to wxTextWindow - { - char *txt = new char[plen+xtra+1]; - memcpy(txt, pbase(), plen); - txt[plen] = (char)c; // append c - txt[plen+xtra] = '\0'; // append '\0' or overwrite c - // If the put area already contained \0, output will be truncated there - WriteText(txt); - delete[] txt; - } - - // Reset put area - setp(pbase(), epptr()); - -#if defined(__WATCOMC__) - return __NOT_EOF; -#elif defined(zapeof) // HP-UX (all cfront based?) - return zapeof(c); -#else - return c!=EOF ? c : 0; // this should make everybody happy -#endif -} - -//========================================================================= -// called then "endl" is output (gcc) or then explicit sync is done (Borland) -//========================================================================= -int wxTextCtrl::sync() -{ - // Verify that there are no characters in get area - if ( gptr() && gptr() < egptr() ) - { - wxError("Who's trespassing my get area?","Internal error"); - return EOF; - } - - if ( pptr() && pptr() > pbase() ) return overflow(EOF); - - return 0; -/* OLD CODE - int len = pptr() - pbase(); - char *txt = new char[len+1]; - strncpy(txt, pbase(), len); - txt[len] = '\0'; - (*this) << txt; - setp(pbase(), epptr()); - delete[] txt; - return 0; -*/ -} - -//========================================================================= -// Should not be called by a "ostream". Used by a "istream" -//========================================================================= -int wxTextCtrl::underflow() -{ - return EOF; -} -#endif - -wxTextCtrl& wxTextCtrl::operator<<(const wxString& s) -{ - WriteText(s); - return *this; -} - -wxTextCtrl& wxTextCtrl::operator<<(float f) -{ - wxString str; - str.Printf("%.2f", f); - WriteText(str); - return *this; -} - -wxTextCtrl& wxTextCtrl::operator<<(double d) -{ - wxString str; - str.Printf("%.2f", d); - WriteText(str); - return *this; -} - -wxTextCtrl& wxTextCtrl::operator<<(int i) -{ - wxString str; - str.Printf("%d", i); - WriteText(str); - return *this; -} - -wxTextCtrl& wxTextCtrl::operator<<(long i) -{ - wxString str; - str.Printf("%ld", i); - WriteText(str); - return *this; -} - -wxTextCtrl& wxTextCtrl::operator<<(const char c) -{ - char buf[2]; - - buf[0] = c; - buf[1] = 0; - WriteText(buf); - return *this; -} - diff --git a/src/mac/thread.cpp b/src/mac/thread.cpp deleted file mode 100644 index 82fff92ba3..0000000000 --- a/src/mac/thread.cpp +++ /dev/null @@ -1,261 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: thread.cpp -// Purpose: wxThread Implementation. For Unix ports, see e.g. src/gtk -// Author: Original from Wolfram Gloger/Guilhem Lavaux -// Modified by: -// Created: 04/22/98 -// RCS-ID: $Id$ -// Copyright: (c) Wolfram Gloger (1996, 1997); Guilhem Lavaux (1998) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "thread.h" -#endif - -#include "wx/module.h" -#include "wx/thread.h" -#include "wx/utils.h" - -enum thread_state { - STATE_IDLE = 0, - STATE_RUNNING, - STATE_CANCELED, - STATE_EXITED -}; - -///////////////////////////////////////////////////////////////////////////// -// Static variables -///////////////////////////////////////////////////////////////////////////// - -wxMutex *wxMainMutex; // controls access to all GUI functions - -///////////////////////////////////////////////////////////////////////////// -// Windows implementation -///////////////////////////////////////////////////////////////////////////// - -class wxMutexInternal { -public: - // TODO: internal mutex handle -}; - -wxMutex::wxMutex() -{ - p_internal = new wxMutexInternal; - // TODO: create internal mutext handle - m_locked = 0; -} - -wxMutex::~wxMutex() -{ - if (m_locked > 0) - wxDebugMsg("wxMutex warning: freeing a locked mutex (%d locks)\n", m_locked); - // TODO: free internal mutext handle -} - -wxMutexError wxMutex::Lock() -{ - // TODO - m_locked++; - return wxMUTEX_NO_ERROR; -} - -wxMutexError wxMutex::TryLock() -{ - // TODO - m_locked++; - return wxMUTEX_NO_ERROR; -} - -wxMutexError wxMutex::Unlock() -{ - if (m_locked > 0) - m_locked--; - - // TODO - return wxMUTEX_NO_ERROR; -} - -class wxConditionInternal { -public: - // TODO: internal handle - int waiters; -}; - -wxCondition::wxCondition() -{ - p_internal = new wxConditionInternal; - // TODO: create internal handle - p_internal->waiters = 0; -} - -wxCondition::~wxCondition() -{ - // TODO: destroy internal handle -} - -void wxCondition::Wait(wxMutex& mutex) -{ - mutex.Unlock(); - p_internal->waiters++; - // TODO wait here - p_internal->waiters--; - mutex.Lock(); -} - -bool wxCondition::Wait(wxMutex& mutex, unsigned long sec, - unsigned long nsec) -{ - mutex.Unlock(); - p_internal->waiters++; - - // TODO wait here - p_internal->waiters--; - mutex.Lock(); - - return FALSE; -} - -void wxCondition::Signal() -{ - // TODO -} - -void wxCondition::Broadcast() -{ - // TODO -} - -class wxThreadInternal { -public: - // TODO -}; - -wxThreadError wxThread::Create() -{ - // TODO - return wxTHREAD_NO_ERROR; -} - -wxThreadError wxThread::Destroy() -{ - // TODO - return wxTHREAD_NO_ERROR; -} - -wxThreadError wxThread::Pause() -{ - // TODO - return wxTHREAD_NO_ERROR; -} - -wxThreadError wxThread::Resume() -{ - // TODO - return wxTHREAD_NO_ERROR; -} - -void wxThread::Exit(void *status) -{ - // TODO -} - -void wxThread::SetPriority(int prio) -{ - // TODO -} - -int wxThread::GetPriority() const -{ - // TODO - return 0; -} - -void wxThread::DeferDestroy(bool on) -{ - // TODO -} - -void wxThread::TestDestroy() -{ - // TODO -} - -void *wxThread::Join() -{ - // TODO - return (void*) NULL; -} - -unsigned long wxThread::GetID() const -{ - // TODO - return 0; -} - -/* is this needed somewhere ? -wxThread *wxThread::GetThreadFromID(unsigned long id) -{ - // TODO - return NULL; -} -*/ - -bool wxThread::IsAlive() const -{ - // TODO - return FALSE; -} - -bool wxThread::IsRunning() const -{ - // TODO - return FALSE; -} - -bool wxThread::IsMain() -{ - // TODO - return FALSE; -} - -wxThread::wxThread() -{ - p_internal = new wxThreadInternal(); - - // TODO -} - -wxThread::~wxThread() -{ - Destroy(); - Join(); - delete p_internal; -} - -// The default callback just joins the thread and throws away the result. -void wxThread::OnExit() -{ - Join(); -} - -// Automatic initialization -class wxThreadModule : public wxModule { - DECLARE_DYNAMIC_CLASS(wxThreadModule) -public: - virtual bool OnInit() { - /* TODO p_mainid = GetCurrentThread(); */ - wxMainMutex = new wxMutex(); - wxMainMutex->Lock(); - return TRUE; - } - - // Global cleanup - virtual void OnExit() { - wxMainMutex->Unlock(); - delete wxMainMutex; - } -}; - -IMPLEMENT_DYNAMIC_CLASS(wxThreadModule, wxModule) - diff --git a/src/mac/timer.cpp b/src/mac/timer.cpp deleted file mode 100644 index 5262040cf6..0000000000 --- a/src/mac/timer.cpp +++ /dev/null @@ -1,52 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: timer.cpp -// Purpose: wxTimer implementation -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "timer.h" -#endif - -#include "wx/timer.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_ABSTRACT_CLASS(wxTimer, wxObject) -#endif - -wxTimer::wxTimer() -{ - m_milli = 0 ; - m_id = 0; - m_oneShot = FALSE; -} - -wxTimer::~wxTimer() -{ - Stop(); -} - -bool wxTimer::Start(int milliseconds,bool mode) -{ - m_oneShot = mode ; - if (milliseconds <= 0) - return FALSE; - - m_milli = milliseconds; - - // TODO: set the timer going. - return FALSE; -} - -void wxTimer::Stop() -{ - m_id = 0 ; - m_milli = 0 ; -} - - diff --git a/src/mac/toolbar.cpp b/src/mac/toolbar.cpp deleted file mode 100644 index 3cb859e366..0000000000 --- a/src/mac/toolbar.cpp +++ /dev/null @@ -1,145 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: toolbar.cpp -// Purpose: wxToolBar -// Author: AUTHOR -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "toolbar.h" -#endif - -#include "wx/wx.h" -#include "wx/toolbar.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxToolBar, wxToolBarBase) - -BEGIN_EVENT_TABLE(wxToolBar, wxToolBarBase) -END_EVENT_TABLE() -#endif - -wxToolBar::wxToolBar() -{ - m_maxWidth = -1; - m_maxHeight = -1; - m_defaultWidth = 24; - m_defaultHeight = 22; - // TODO -} - -bool wxToolBar::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, - long style, const wxString& name) -{ - m_maxWidth = -1; - m_maxHeight = -1; - - m_defaultWidth = 24; - m_defaultHeight = 22; - SetName(name); - - m_windowStyle = style; - - SetParent(parent); - - if (parent) parent->AddChild(this); - - // TODO create toolbar - - return FALSE; -} - -wxToolBar::~wxToolBar() -{ - // TODO -} - -bool wxToolBar::CreateTools() -{ - if (m_tools.Number() == 0) - return FALSE; - - // TODO - return FALSE; -} - -void wxToolBar::SetToolBitmapSize(const wxSize& size) -{ - m_defaultWidth = size.x; m_defaultHeight = size.y; - // TODO -} - -wxSize wxToolBar::GetMaxSize() const -{ - // TODO - return wxSize(0, 0); -} - -// The button size is bigger than the bitmap size -wxSize wxToolBar::GetToolSize() const -{ - // TODO - return wxSize(m_defaultWidth + 8, m_defaultHeight + 7); -} - -void wxToolBar::EnableTool(int toolIndex, bool enable) -{ - wxNode *node = m_tools.Find((long)toolIndex); - if (node) - { - wxToolBarTool *tool = (wxToolBarTool *)node->Data(); - tool->m_enabled = enable; - // TODO enable button - } -} - -void wxToolBar::ToggleTool(int toolIndex, bool toggle) -{ - wxNode *node = m_tools.Find((long)toolIndex); - if (node) - { - wxToolBarTool *tool = (wxToolBarTool *)node->Data(); - if (tool->m_isToggle) - { - tool->m_toggleState = toggle; - // TODO: set toggle state - } - } -} - -void wxToolBar::ClearTools() -{ - // TODO - wxToolBarBase::ClearTools(); -} - -// If pushedBitmap is NULL, a reversed version of bitmap is -// created and used as the pushed/toggled image. -// If toggle is TRUE, the button toggles between the two states. - -wxToolBarTool *wxToolBar::AddTool(int index, const wxBitmap& bitmap, const wxBitmap& pushedBitmap, - bool toggle, long xPos, long yPos, wxObject *clientData, const wxString& helpString1, const wxString& helpString2) -{ - wxToolBarTool *tool = new wxToolBarTool(index, bitmap, wxNullBitmap, toggle, xPos, yPos, helpString1, helpString2); - tool->m_clientData = clientData; - - if (xPos > -1) - tool->m_x = xPos; - else - tool->m_x = m_xMargin; - - if (yPos > -1) - tool->m_y = yPos; - else - tool->m_y = m_yMargin; - - tool->SetSize(GetDefaultButtonWidth(), GetDefaultButtonHeight()); - - m_tools.Append((long)index, tool); - return tool; -} - diff --git a/src/mac/treectrl.cpp b/src/mac/treectrl.cpp deleted file mode 100644 index 137a885dbf..0000000000 --- a/src/mac/treectrl.cpp +++ /dev/null @@ -1,418 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: treectrl.cpp -// Purpose: wxTreeCtrl. See also Robert's generic wxTreeCtrl. -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "treectrl.h" -#endif - -#include "wx/stubs/textctrl.h" -#include "wx/stubs/treectrl.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxTreeCtrl, wxControl) -IMPLEMENT_DYNAMIC_CLASS(wxTreeItem, wxObject) - -#endif - -wxTreeCtrl::wxTreeCtrl() -{ - m_imageListNormal = NULL; - m_imageListState = NULL; - m_textCtrl = NULL; -} - -bool wxTreeCtrl::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, - long style, const wxValidator& validator, const wxString& name) -{ - SetName(name); - SetValidator(validator); - - m_imageListNormal = NULL; - m_imageListState = NULL; - m_textCtrl = NULL; - - m_windowStyle = style; - - SetParent(parent); - - m_windowId = (id == -1) ? NewControlId() : id; - - if (parent) parent->AddChild(this); - - // TODO create tree control - - return FALSE; -} - -wxTreeCtrl::~wxTreeCtrl() -{ - if (m_textCtrl) - { - delete m_textCtrl; - } -} - -// Attributes -int wxTreeCtrl::GetCount() const -{ - // TODO - return 0; -} - -int wxTreeCtrl::GetIndent() const -{ - // TODO - return 0; -} - -void wxTreeCtrl::SetIndent(int indent) -{ - // TODO -} - -wxImageList *wxTreeCtrl::GetImageList(int which) const -{ - if ( which == wxIMAGE_LIST_NORMAL ) - { - return m_imageListNormal; - } - else if ( which == wxIMAGE_LIST_STATE ) - { - return m_imageListState; - } - return NULL; -} - -void wxTreeCtrl::SetImageList(wxImageList *imageList, int which) -{ - if ( which == wxIMAGE_LIST_NORMAL ) - { - m_imageListNormal = imageList; - } - else if ( which == wxIMAGE_LIST_STATE ) - { - m_imageListState = imageList; - } - // TODO -} - -long wxTreeCtrl::GetNextItem(long item, int code) const -{ - // TODO - return 0; -} - -bool wxTreeCtrl::ItemHasChildren(long item) const -{ - // TODO - return FALSE; -} - -long wxTreeCtrl::GetChild(long item) const -{ - // TODO - return 0; -} - -long wxTreeCtrl::GetParent(long item) const -{ - // TODO - return 0; -} - -long wxTreeCtrl::GetFirstVisibleItem() const -{ - // TODO - return 0; -} - -long wxTreeCtrl::GetNextVisibleItem(long item) const -{ - // TODO - return 0; -} - -long wxTreeCtrl::GetSelection() const -{ - // TODO - return 0; -} - -long wxTreeCtrl::GetRootItem() const -{ - // TODO - return 0; -} - -bool wxTreeCtrl::GetItem(wxTreeItem& info) const -{ - // TODO - return FALSE; -} - -bool wxTreeCtrl::SetItem(wxTreeItem& info) -{ - // TODO - return FALSE; -} - -int wxTreeCtrl::GetItemState(long item, long stateMask) const -{ - wxTreeItem info; - - info.m_mask = wxTREE_MASK_STATE ; - info.m_stateMask = stateMask; - info.m_itemId = item; - - if (!GetItem(info)) - return 0; - - return info.m_state; -} - -bool wxTreeCtrl::SetItemState(long item, long state, long stateMask) -{ - wxTreeItem info; - - info.m_mask = wxTREE_MASK_STATE ; - info.m_state = state; - info.m_stateMask = stateMask; - info.m_itemId = item; - - return SetItem(info); -} - -bool wxTreeCtrl::SetItemImage(long item, int image, int selImage) -{ - wxTreeItem info; - - info.m_mask = wxTREE_MASK_IMAGE ; - info.m_image = image; - if ( selImage > -1) - { - info.m_selectedImage = selImage; - info.m_mask |= wxTREE_MASK_SELECTED_IMAGE; - } - info.m_itemId = item; - - return SetItem(info); -} - -wxString wxTreeCtrl::GetItemText(long item) const -{ - wxTreeItem info; - - info.m_mask = wxTREE_MASK_TEXT ; - info.m_itemId = item; - - if (!GetItem(info)) - return wxString(""); - return info.m_text; -} - -void wxTreeCtrl::SetItemText(long item, const wxString& str) -{ - wxTreeItem info; - - info.m_mask = wxTREE_MASK_TEXT ; - info.m_itemId = item; - info.m_text = str; - - SetItem(info); -} - -long wxTreeCtrl::GetItemData(long item) const -{ - wxTreeItem info; - - info.m_mask = wxTREE_MASK_DATA ; - info.m_itemId = item; - - if (!GetItem(info)) - return 0; - return info.m_data; -} - -bool wxTreeCtrl::SetItemData(long item, long data) -{ - wxTreeItem info; - - info.m_mask = wxTREE_MASK_DATA ; - info.m_itemId = item; - info.m_data = data; - - return SetItem(info); -} - -bool wxTreeCtrl::GetItemRect(long item, wxRect& rect, bool textOnly) const -{ - // TODO - return FALSE; -} - -wxTextCtrl* wxTreeCtrl::GetEditControl() const -{ - return m_textCtrl; -} - -// Operations -bool wxTreeCtrl::DeleteItem(long item) -{ - // TODO - return FALSE; -} - -bool wxTreeCtrl::ExpandItem(long item, int action) -{ - // TODO - switch ( action ) - { - case wxTREE_EXPAND_EXPAND: - break; - - case wxTREE_EXPAND_COLLAPSE: - break; - - case wxTREE_EXPAND_COLLAPSE_RESET: - break; - - case wxTREE_EXPAND_TOGGLE: - break; - - default: - wxFAIL_MSG("unknown action in wxTreeCtrl::ExpandItem"); - } - - bool bOk = FALSE; // TODO expand item - - // May not send messages, so emulate them - if ( bOk ) { - wxTreeEvent event(wxEVT_NULL, m_windowId); - event.m_item.m_itemId = item; - event.m_item.m_mask = - event.m_item.m_stateMask = 0xffff; // get all - GetItem(event.m_item); - - bool bIsExpanded = (event.m_item.m_state & wxTREE_STATE_EXPANDED) != 0; - - event.m_code = action; - event.SetEventObject(this); - - // @@@ return values of {EXPAND|COLLAPS}ING event handler is discarded - event.SetEventType(bIsExpanded ? wxEVT_COMMAND_TREE_ITEM_EXPANDING - : wxEVT_COMMAND_TREE_ITEM_COLLAPSING); - GetEventHandler()->ProcessEvent(event); - - event.SetEventType(bIsExpanded ? wxEVT_COMMAND_TREE_ITEM_EXPANDED - : wxEVT_COMMAND_TREE_ITEM_COLLAPSED); - GetEventHandler()->ProcessEvent(event); - } - - return bOk; -} - -long wxTreeCtrl::InsertItem(long parent, wxTreeItem& info, long insertAfter) -{ - // TODO - return 0; -} - -long wxTreeCtrl::InsertItem(long parent, const wxString& label, int image, int selImage, - long insertAfter) -{ - wxTreeItem info; - info.m_text = label; - info.m_mask = wxTREE_MASK_TEXT; - if ( image > -1 ) - { - info.m_mask |= wxTREE_MASK_IMAGE | wxTREE_MASK_SELECTED_IMAGE; - info.m_image = image; - if ( selImage == -1 ) - info.m_selectedImage = image; - else - info.m_selectedImage = selImage; - } - - return InsertItem(parent, info, insertAfter); -} - -bool wxTreeCtrl::SelectItem(long item) -{ - // TODO - return FALSE; -} - -bool wxTreeCtrl::ScrollTo(long item) -{ - // TODO - return FALSE; -} - -bool wxTreeCtrl::DeleteAllItems() -{ - // TODO - return FALSE; -} - -wxTextCtrl* wxTreeCtrl::EditLabel(long item, wxClassInfo* textControlClass) -{ - // TODO - return NULL; -} - -// End label editing, optionally cancelling the edit -bool wxTreeCtrl::EndEditLabel(bool cancel) -{ - // TODO - return FALSE; -} - -long wxTreeCtrl::HitTest(const wxPoint& point, int& flags) -{ - // TODO - return 0; -} - -bool wxTreeCtrl::SortChildren(long item) -{ - // TODO - return FALSE; -} - -bool wxTreeCtrl::EnsureVisible(long item) -{ - // TODO - return FALSE; -} - -// Tree item structure -wxTreeItem::wxTreeItem() -{ - m_mask = 0; - m_itemId = 0; - m_state = 0; - m_stateMask = 0; - m_image = -1; - m_selectedImage = -1; - m_children = 0; - m_data = 0; -} - -// Tree event -IMPLEMENT_DYNAMIC_CLASS(wxTreeEvent, wxCommandEvent) - -wxTreeEvent::wxTreeEvent(wxEventType commandType, int id): - wxCommandEvent(commandType, id) -{ - m_code = 0; - m_oldItem = 0; -} - diff --git a/src/mac/utils.cpp b/src/mac/utils.cpp deleted file mode 100644 index 940bdc21bc..0000000000 --- a/src/mac/utils.cpp +++ /dev/null @@ -1,272 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: utils.cpp -// Purpose: Various utilities -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -// Note: this is done in utilscmn.cpp now. -// #pragma implementation -// #pragma implementation "utils.h" -#endif - -#include "wx/setup.h" -#include "wx/utils.h" -#include "wx/app.h" - -#include - -#include -#include -#include -#include - -// Get full hostname (eg. DoDo.BSn-Germany.crg.de) -bool wxGetHostName(char *buf, int maxSize) -{ - // TODO - return FALSE; -} - -// Get user ID e.g. jacs -bool wxGetUserId(char *buf, int maxSize) -{ - // TODO - return FALSE; -} - -// Get user name e.g. AUTHOR -bool wxGetUserName(char *buf, int maxSize) -{ - // TODO - return FALSE; -} - -int wxKill(long pid, int sig) -{ - // TODO - return 0; -} - -// -// Execute a program in an Interactive Shell -// -bool wxShell(const wxString& command) -{ - // TODO - return FALSE; -} - -// Get free memory in bytes, or -1 if cannot determine amount (e.g. on UNIX) -long wxGetFreeMemory() -{ - // TODO - return 0; -} - -void wxSleep(int nSecs) -{ - // TODO -} - -// Consume all events until no more left -void wxFlushEvents() -{ -} - -// Output a debug message, in a system dependent fashion. -void wxDebugMsg(const char *fmt ...) -{ - va_list ap; - static char buffer[512]; - - if (!wxTheApp->GetWantDebugOutput()) - return ; - - va_start(ap, fmt); - - // wvsprintf(buffer,fmt,ap) ; - // TODO: output buffer - - va_end(ap); -} - -// Non-fatal error: pop up message box and (possibly) continue -void wxError(const wxString& msg, const wxString& title) -{ - // TODO - wxExit(); -} - -// Fatal error: pop up message box and abort -void wxFatalError(const wxString& msg, const wxString& title) -{ - // TODO -} - -// Emit a beeeeeep -void wxBell() -{ - // TODO -} - -int wxGetOsVersion(int *majorVsn, int *minorVsn) -{ - // TODO - return 0; -} - -// Reading and writing resources (eg WIN.INI, .Xdefaults) -#if wxUSE_RESOURCES -bool wxWriteResource(const wxString& section, const wxString& entry, const wxString& value, const wxString& file) -{ - // TODO - return FALSE; -} - -bool wxWriteResource(const wxString& section, const wxString& entry, float value, const wxString& file) -{ - char buf[50]; - sprintf(buf, "%.4f", value); - return wxWriteResource(section, entry, buf, file); -} - -bool wxWriteResource(const wxString& section, const wxString& entry, long value, const wxString& file) -{ - char buf[50]; - sprintf(buf, "%ld", value); - return wxWriteResource(section, entry, buf, file); -} - -bool wxWriteResource(const wxString& section, const wxString& entry, int value, const wxString& file) -{ - char buf[50]; - sprintf(buf, "%d", value); - return wxWriteResource(section, entry, buf, file); -} - -bool wxGetResource(const wxString& section, const wxString& entry, char **value, const wxString& file) -{ - // TODO - return FALSE; -} - -bool wxGetResource(const wxString& section, const wxString& entry, float *value, const wxString& file) -{ - char *s = NULL; - bool succ = wxGetResource(section, entry, (char **)&s, file); - if (succ) - { - *value = (float)strtod(s, NULL); - delete[] s; - return TRUE; - } - else return FALSE; -} - -bool wxGetResource(const wxString& section, const wxString& entry, long *value, const wxString& file) -{ - char *s = NULL; - bool succ = wxGetResource(section, entry, (char **)&s, file); - if (succ) - { - *value = strtol(s, NULL, 10); - delete[] s; - return TRUE; - } - else return FALSE; -} - -bool wxGetResource(const wxString& section, const wxString& entry, int *value, const wxString& file) -{ - char *s = NULL; - bool succ = wxGetResource(section, entry, (char **)&s, file); - if (succ) - { - *value = (int)strtol(s, NULL, 10); - delete[] s; - return TRUE; - } - else return FALSE; -} -#endif // wxUSE_RESOURCES - -static int wxBusyCursorCount = 0; - -// Set the cursor to the busy cursor for all windows -void wxBeginBusyCursor(wxCursor *cursor) -{ - wxBusyCursorCount ++; - if (wxBusyCursorCount == 1) - { - // TODO - } - else - { - // TODO - } -} - -// Restore cursor to normal -void wxEndBusyCursor() -{ - if (wxBusyCursorCount == 0) - return; - - wxBusyCursorCount --; - if (wxBusyCursorCount == 0) - { - // TODO - } -} - -// TRUE if we're between the above two calls -bool wxIsBusy() -{ - return (wxBusyCursorCount > 0); -} - -char *wxGetUserHome (const wxString& user) -{ - // TODO - return NULL; -} - -// Check whether this window wants to process messages, e.g. Stop button -// in long calculations. -bool wxCheckForInterrupt(wxWindow *wnd) -{ - // TODO - return FALSE; -} - -void wxGetMousePosition( int* x, int* y ) -{ - // TODO -}; - -// Return TRUE if we have a colour display -bool wxColourDisplay() -{ - // TODO - return TRUE; -} - -// Returns depth of screen -int wxDisplayDepth() -{ - // TODO - return 0; -} - -// Get size of display -void wxDisplaySize(int *width, int *height) -{ - // TODO -} - diff --git a/src/mac/utilsexc.cpp b/src/mac/utilsexc.cpp deleted file mode 100644 index b842d08e90..0000000000 --- a/src/mac/utilsexc.cpp +++ /dev/null @@ -1,28 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: utilsexec.cpp -// Purpose: Execution-related utilities -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation -#endif - -#include "wx/utils.h" - -#include -#include -#include - -#define wxEXECUTE_WIN_MESSAGE 10000 - -long wxExecute(const wxString& command, bool sync, wxProcess *handler) -{ - // TODO - return 0; -} diff --git a/src/mac/wave.cpp b/src/mac/wave.cpp deleted file mode 100644 index c25681858c..0000000000 --- a/src/mac/wave.cpp +++ /dev/null @@ -1,61 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: wave.cpp -// Purpose: wxWave class implementation: optional -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "wave.h" -#endif - -#include "wx/object.h" -#include "wx/string.h" -#include "wx/stubs/wave.h" - -wxWave::wxWave() - : m_waveData(NULL), m_waveLength(0), m_isResource(FALSE) -{ -} - -wxWave::wxWave(const wxString& sFileName, bool isResource) - : m_waveData(NULL), m_waveLength(0), m_isResource(FALSE) -{ - Create(sFileName, isResource); -} - - -wxWave::~wxWave() -{ - Free(); -} - -bool wxWave::Create(const wxString& fileName, bool isResource) -{ - Free(); - - // TODO - - return FALSE; -} - -bool wxWave::Play(bool async, bool looped) const -{ - if (!IsOk()) - return FALSE; - - // TODO - return FALSE; -} - -bool wxWave::Free() -{ - // TODO - return FALSE; -} - - diff --git a/src/mac/window.cpp b/src/mac/window.cpp deleted file mode 100644 index 10ec3976dd..0000000000 --- a/src/mac/window.cpp +++ /dev/null @@ -1,1292 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: windows.cpp -// Purpose: wxWindow -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "window.h" -#endif - -#include "wx/setup.h" -#include "wx/menu.h" -#include "wx/dc.h" -#include "wx/dcclient.h" -#include "wx/utils.h" -#include "wx/app.h" -#include "wx/panel.h" -#include "wx/layout.h" -#include "wx/dialog.h" -#include "wx/listbox.h" -#include "wx/button.h" -#include "wx/settings.h" -#include "wx/msgdlg.h" -#include "wx/frame.h" - -#include "wx/menuitem.h" -#include "wx/log.h" - -#if wxUSE_DRAG_AND_DROP -#include "wx/dnd.h" -#endif - -#include - -extern wxList wxPendingDelete; - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxWindow, wxEvtHandler) - -BEGIN_EVENT_TABLE(wxWindow, wxEvtHandler) - EVT_CHAR(wxWindow::OnChar) - EVT_ERASE_BACKGROUND(wxWindow::OnEraseBackground) - EVT_SYS_COLOUR_CHANGED(wxWindow::OnSysColourChanged) - EVT_INIT_DIALOG(wxWindow::OnInitDialog) - EVT_IDLE(wxWindow::OnIdle) -END_EVENT_TABLE() - -#endif - - -// Constructor -wxWindow::wxWindow() -{ - // Generic - m_windowId = 0; - m_windowStyle = 0; - m_windowParent = NULL; - m_windowEventHandler = this; - m_windowName = ""; - m_windowCursor = *wxSTANDARD_CURSOR; - m_children = new wxList; - m_constraints = NULL; - m_constraintsInvolvedIn = NULL; - m_windowSizer = NULL; - m_sizerParent = NULL; - m_autoLayout = FALSE; - m_windowValidator = NULL; - m_defaultItem = NULL; - m_returnCode = 0; - m_caretWidth = 0; m_caretHeight = 0; - m_caretEnabled = FALSE; - m_caretShown = FALSE; - m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE) ; - // m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOW) ; ; - m_foregroundColour = *wxBLACK; - -#if wxUSE_DRAG_AND_DROP - m_pDropTarget = NULL; -#endif -} - -// Destructor -wxWindow::~wxWindow() -{ - // Have to delete constraints/sizer FIRST otherwise - // sizers may try to look at deleted windows as they - // delete themselves. -#if wxUSE_CONSTRAINTS - DeleteRelatedConstraints(); - if (m_constraints) - { - // This removes any dangling pointers to this window - // in other windows' constraintsInvolvedIn lists. - UnsetConstraints(m_constraints); - delete m_constraints; - m_constraints = NULL; - } - if (m_windowSizer) - { - delete m_windowSizer; - m_windowSizer = NULL; - } - // If this is a child of a sizer, remove self from parent - if (m_sizerParent) - m_sizerParent->RemoveChild((wxWindow *)this); -#endif - - if (m_windowParent) - m_windowParent->RemoveChild(this); - - DestroyChildren(); - - // TODO: destroy the window - - delete m_children; - m_children = NULL; - - // Just in case the window has been Closed, but - // we're then deleting immediately: don't leave - // dangling pointers. - wxPendingDelete.DeleteObject(this); - - if ( m_windowValidator ) - delete m_windowValidator; -} - -// Destroy the window (delayed, if a managed window) -bool wxWindow::Destroy() -{ - delete this; - return TRUE; -} - -// Constructor -bool wxWindow::Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - // Generic - m_windowId = 0; - m_windowStyle = 0; - m_windowParent = NULL; - m_windowEventHandler = this; - m_windowName = ""; - m_windowCursor = *wxSTANDARD_CURSOR; - m_constraints = NULL; - m_constraintsInvolvedIn = NULL; - m_windowSizer = NULL; - m_sizerParent = NULL; - m_autoLayout = FALSE; - m_windowValidator = NULL; - -#if wxUSE_DRAG_AND_DROP - m_pDropTarget = NULL; -#endif - - m_caretWidth = 0; m_caretHeight = 0; - m_caretEnabled = FALSE; - m_caretShown = FALSE; - m_minSizeX = -1; - m_minSizeY = -1; - m_maxSizeX = -1; - m_maxSizeY = -1; - m_defaultItem = NULL; - m_windowParent = NULL; - if (!parent) - return FALSE; - - if (parent) parent->AddChild(this); - - m_returnCode = 0; - - SetName(name); - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - // m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOW) ; ; - m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE) ; - m_foregroundColour = *wxBLACK; - - m_windowStyle = style; - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - // TODO: create the window - - return TRUE; -} - -void wxWindow::SetFocus() -{ - // TODO -} - -void wxWindow::Enable(bool enable) -{ - // TODO -} - -void wxWindow::CaptureMouse() -{ - // TODO -} - -void wxWindow::ReleaseMouse() -{ - // TODO -} - -// Push/pop event handler (i.e. allow a chain of event handlers -// be searched) -void wxWindow::PushEventHandler(wxEvtHandler *handler) -{ - handler->SetNextHandler(GetEventHandler()); - SetEventHandler(handler); -} - -wxEvtHandler *wxWindow::PopEventHandler(bool deleteHandler) -{ - if ( GetEventHandler() ) - { - wxEvtHandler *handlerA = GetEventHandler(); - wxEvtHandler *handlerB = handlerA->GetNextHandler(); - handlerA->SetNextHandler(NULL); - SetEventHandler(handlerB); - if ( deleteHandler ) - { - delete handlerA; - return NULL; - } - else - return handlerA; - } - else - return NULL; -} - -#if wxUSE_DRAG_AND_DROP - -void wxWindow::SetDropTarget(wxDropTarget *pDropTarget) -{ - if ( m_pDropTarget != 0 ) { - delete m_pDropTarget; - } - - m_pDropTarget = pDropTarget; - if ( m_pDropTarget != 0 ) - { - // TODO - } -} - -#endif - -// Old style file-manager drag&drop -void wxWindow::DragAcceptFiles(bool accept) -{ - // TODO -} - -// Get total size -void wxWindow::GetSize(int *x, int *y) const -{ - // TODO -} - -void wxWindow::GetPosition(int *x, int *y) const -{ - // TODO -} - -void wxWindow::ScreenToClient(int *x, int *y) const -{ - // TODO -} - -void wxWindow::ClientToScreen(int *x, int *y) const -{ - // TODO -} - -void wxWindow::SetCursor(const wxCursor& cursor) -{ - m_windowCursor = cursor; - if (m_windowCursor.Ok()) - { - // TODO - } -} - - -// Get size *available for subwindows* i.e. excluding menu bar etc. -void wxWindow::GetClientSize(int *x, int *y) const -{ - // TODO -} - -void wxWindow::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -void wxWindow::SetClientSize(int width, int height) -{ - // TODO -} - -// For implementation purposes - sometimes decorations make the client area -// smaller -wxPoint wxWindow::GetClientAreaOrigin() const -{ - return wxPoint(0, 0); -} - -// Makes an adjustment to the window position (for example, a frame that has -// a toolbar that it manages itself). -void wxWindow::AdjustForParentClientOrigin(int& x, int& y, int sizeFlags) -{ - if (((sizeFlags & wxSIZE_NO_ADJUSTMENTS) == 0) && GetParent()) - { - wxPoint pt(GetParent()->GetClientAreaOrigin()); - x += pt.x; y += pt.y; - } -} - -bool wxWindow::Show(bool show) -{ - // TODO - return FALSE; -} - -bool wxWindow::IsShown() const -{ - // TODO - return FALSE; -} - -int wxWindow::GetCharHeight() const -{ - // TODO - return 0; -} - -int wxWindow::GetCharWidth() const -{ - // TODO - return 0; -} - -void wxWindow::GetTextExtent(const wxString& string, int *x, int *y, - int *descent, int *externalLeading, const wxFont *theFont, bool) const -{ - wxFont *fontToUse = (wxFont *)theFont; - if (!fontToUse) - fontToUse = (wxFont *) & m_windowFont; - - // TODO -} - -void wxWindow::Refresh(bool eraseBack, const wxRect *rect) -{ - // TODO -} - -// Responds to colour changes: passes event on to children. -void wxWindow::OnSysColourChanged(wxSysColourChangedEvent& event) -{ - wxNode *node = GetChildren().First(); - while ( node ) - { - // Only propagate to non-top-level windows - wxWindow *win = (wxWindow *)node->Data(); - if ( win->GetParent() ) - { - wxSysColourChangedEvent event2; - event.m_eventObject = win; - win->GetEventHandler()->ProcessEvent(event2); - } - - node = node->Next(); - } -} - -// This can be called by the app (or wxWindows) to do default processing for the current -// event. Save message/event info in wxWindow so they can be used in this function. -long wxWindow::Default() -{ - // TODO - return 0; -} - -void wxWindow::InitDialog() -{ - wxInitDialogEvent event(GetId()); - event.SetEventObject( this ); - GetEventHandler()->ProcessEvent(event); -} - -// Default init dialog behaviour is to transfer data to window -void wxWindow::OnInitDialog(wxInitDialogEvent& event) -{ - TransferDataToWindow(); -} - -// Caret manipulation -void wxWindow::CreateCaret(int w, int h) -{ - m_caretWidth = w; - m_caretHeight = h; - m_caretEnabled = TRUE; -} - -void wxWindow::CreateCaret(const wxBitmap *WXUNUSED(bitmap)) -{ - // TODO -} - -void wxWindow::ShowCaret(bool show) -{ - // TODO -} - -void wxWindow::DestroyCaret() -{ - // TODO - m_caretEnabled = FALSE; -} - -void wxWindow::SetCaretPos(int x, int y) -{ - // TODO -} - -void wxWindow::GetCaretPos(int *x, int *y) const -{ - // TODO -} - -wxWindow *wxGetActiveWindow() -{ - // TODO - return NULL; -} - -void wxWindow::SetSizeHints(int minW, int minH, int maxW, int maxH, int WXUNUSED(incW), int WXUNUSED(incH)) -{ - m_minSizeX = minW; - m_minSizeY = minH; - m_maxSizeX = maxW; - m_maxSizeY = maxH; -} - -void wxWindow::Centre(int direction) -{ - int x, y, width, height, panel_width, panel_height, new_x, new_y; - - wxWindow *father = (wxWindow *)GetParent(); - if (!father) - return; - - father->GetClientSize(&panel_width, &panel_height); - GetSize(&width, &height); - GetPosition(&x, &y); - - new_x = -1; - new_y = -1; - - if (direction & wxHORIZONTAL) - new_x = (int)((panel_width - width)/2); - - if (direction & wxVERTICAL) - new_y = (int)((panel_height - height)/2); - - SetSize(new_x, new_y, -1, -1); - -} - -// Coordinates relative to the window -void wxWindow::WarpPointer (int x_pos, int y_pos) -{ - // TODO -} - -void wxWindow::OnEraseBackground(wxEraseEvent& event) -{ - // TODO - Default(); -} - -int wxWindow::GetScrollPos(int orient) const -{ - // TODO - return 0; -} - -// This now returns the whole range, not just the number -// of positions that we can scroll. -int wxWindow::GetScrollRange(int orient) const -{ - // TODO - return 0; -} - -int wxWindow::GetScrollThumb(int orient) const -{ - // TODO - return 0; -} - -void wxWindow::SetScrollPos(int orient, int pos, bool refresh) -{ - // TODO - return; -} - -// New function that will replace some of the above. -void wxWindow::SetScrollbar(int orient, int pos, int thumbVisible, - int range, bool refresh) -{ - // TODO -} - -// Does a physical scroll -void wxWindow::ScrollWindow(int dx, int dy, const wxRect *rect) -{ - // TODO - return; -} - -void wxWindow::SetFont(const wxFont& font) -{ - m_windowFont = font; - - if (!m_windowFont.Ok()) - return; - // TODO -} - -void wxWindow::OnChar(wxKeyEvent& event) -{ - if ( event.KeyCode() == WXK_TAB ) { - // propagate the TABs to the parent - it's up to it to decide what - // to do with it - if ( GetParent() ) { - if ( GetParent()->ProcessEvent(event) ) - return; - } - } -} - -void wxWindow::OnPaint(wxPaintEvent& event) -{ - Default(); -} - -bool wxWindow::IsEnabled() const -{ - // TODO - return FALSE; -} - -// Dialog support: override these and call -// base class members to add functionality -// that can't be done using validators. -// NOTE: these functions assume that controls -// are direct children of this window, not grandchildren -// or other levels of descendant. - -// Transfer values to controls. If returns FALSE, -// it's an application error (pops up a dialog) -bool wxWindow::TransferDataToWindow() -{ - wxNode *node = GetChildren().First(); - while ( node ) - { - wxWindow *child = (wxWindow *)node->Data(); - if ( child->GetValidator() && - !child->GetValidator()->TransferToWindow() ) - { - wxMessageBox("Application Error", "Could not transfer data to window", wxOK|wxICON_EXCLAMATION); - return FALSE; - } - - node = node->Next(); - } - return TRUE; -} - -// Transfer values from controls. If returns FALSE, -// validation failed: don't quit -bool wxWindow::TransferDataFromWindow() -{ - wxNode *node = GetChildren().First(); - while ( node ) - { - wxWindow *child = (wxWindow *)node->Data(); - if ( child->GetValidator() && !child->GetValidator()->TransferFromWindow() ) - { - return FALSE; - } - - node = node->Next(); - } - return TRUE; -} - -bool wxWindow::Validate() -{ - wxNode *node = GetChildren().First(); - while ( node ) - { - wxWindow *child = (wxWindow *)node->Data(); - if ( child->GetValidator() && /* child->GetValidator()->Ok() && */ !child->GetValidator()->Validate(this) ) - { - return FALSE; - } - - node = node->Next(); - } - return TRUE; -} - -// Get the window with the focus -wxWindow *wxWindow::FindFocus() -{ - // TODO - return NULL; -} - -void wxWindow::AddChild(wxWindow *child) -{ - GetChildren().Append(child); - child->m_windowParent = this; -} - -void wxWindow::RemoveChild(wxWindow *child) -{ - GetChildren().DeleteObject(child); - child->m_windowParent = NULL; -} - -void wxWindow::DestroyChildren() -{ - wxNode *node; - while ((node = GetChildren().First()) != (wxNode *)NULL) { - wxWindow *child; - if ((child = (wxWindow *)node->Data()) != (wxWindow *)NULL) { - delete child; - if ( GetChildren().Member(child) ) - delete node; - } - } /* while */ -} - -void wxWindow::MakeModal(bool modal) -{ - // Disable all other windows - if (this->IsKindOf(CLASSINFO(wxDialog)) || this->IsKindOf(CLASSINFO(wxFrame))) - { - wxNode *node = wxTopLevelWindows.First(); - while (node) - { - wxWindow *win = (wxWindow *)node->Data(); - if (win != this) - win->Enable(!modal); - - node = node->Next(); - } - } -} - -// If nothing defined for this, try the parent. -// E.g. we may be a button loaded from a resource, with no callback function -// defined. -void wxWindow::OnCommand(wxWindow& win, wxCommandEvent& event) -{ - if (GetEventHandler()->ProcessEvent(event) ) - return; - if (m_windowParent) - m_windowParent->GetEventHandler()->OnCommand(win, event); -} - -void wxWindow::SetConstraints(wxLayoutConstraints *c) -{ - if (m_constraints) - { - UnsetConstraints(m_constraints); - delete m_constraints; - } - m_constraints = c; - if (m_constraints) - { - // Make sure other windows know they're part of a 'meaningful relationship' - if (m_constraints->left.GetOtherWindow() && (m_constraints->left.GetOtherWindow() != this)) - m_constraints->left.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->top.GetOtherWindow() && (m_constraints->top.GetOtherWindow() != this)) - m_constraints->top.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->right.GetOtherWindow() && (m_constraints->right.GetOtherWindow() != this)) - m_constraints->right.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->bottom.GetOtherWindow() && (m_constraints->bottom.GetOtherWindow() != this)) - m_constraints->bottom.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->width.GetOtherWindow() && (m_constraints->width.GetOtherWindow() != this)) - m_constraints->width.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->height.GetOtherWindow() && (m_constraints->height.GetOtherWindow() != this)) - m_constraints->height.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->centreX.GetOtherWindow() && (m_constraints->centreX.GetOtherWindow() != this)) - m_constraints->centreX.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->centreY.GetOtherWindow() && (m_constraints->centreY.GetOtherWindow() != this)) - m_constraints->centreY.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - } -} - -// This removes any dangling pointers to this window -// in other windows' constraintsInvolvedIn lists. -void wxWindow::UnsetConstraints(wxLayoutConstraints *c) -{ - if (c) - { - if (c->left.GetOtherWindow() && (c->top.GetOtherWindow() != this)) - c->left.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->top.GetOtherWindow() && (c->top.GetOtherWindow() != this)) - c->top.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->right.GetOtherWindow() && (c->right.GetOtherWindow() != this)) - c->right.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->bottom.GetOtherWindow() && (c->bottom.GetOtherWindow() != this)) - c->bottom.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->width.GetOtherWindow() && (c->width.GetOtherWindow() != this)) - c->width.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->height.GetOtherWindow() && (c->height.GetOtherWindow() != this)) - c->height.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->centreX.GetOtherWindow() && (c->centreX.GetOtherWindow() != this)) - c->centreX.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->centreY.GetOtherWindow() && (c->centreY.GetOtherWindow() != this)) - c->centreY.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - } -} - -// Back-pointer to other windows we're involved with, so if we delete -// this window, we must delete any constraints we're involved with. -void wxWindow::AddConstraintReference(wxWindow *otherWin) -{ - if (!m_constraintsInvolvedIn) - m_constraintsInvolvedIn = new wxList; - if (!m_constraintsInvolvedIn->Member(otherWin)) - m_constraintsInvolvedIn->Append(otherWin); -} - -// REMOVE back-pointer to other windows we're involved with. -void wxWindow::RemoveConstraintReference(wxWindow *otherWin) -{ - if (m_constraintsInvolvedIn) - m_constraintsInvolvedIn->DeleteObject(otherWin); -} - -// Reset any constraints that mention this window -void wxWindow::DeleteRelatedConstraints() -{ - if (m_constraintsInvolvedIn) - { - wxNode *node = m_constraintsInvolvedIn->First(); - while (node) - { - wxWindow *win = (wxWindow *)node->Data(); - wxNode *next = node->Next(); - wxLayoutConstraints *constr = win->GetConstraints(); - - // Reset any constraints involving this window - if (constr) - { - constr->left.ResetIfWin((wxWindow *)this); - constr->top.ResetIfWin((wxWindow *)this); - constr->right.ResetIfWin((wxWindow *)this); - constr->bottom.ResetIfWin((wxWindow *)this); - constr->width.ResetIfWin((wxWindow *)this); - constr->height.ResetIfWin((wxWindow *)this); - constr->centreX.ResetIfWin((wxWindow *)this); - constr->centreY.ResetIfWin((wxWindow *)this); - } - delete node; - node = next; - } - delete m_constraintsInvolvedIn; - m_constraintsInvolvedIn = NULL; - } -} - -void wxWindow::SetSizer(wxSizer *sizer) -{ - m_windowSizer = sizer; - if (sizer) - sizer->SetSizerParent((wxWindow *)this); -} - -/* - * New version - */ - -bool wxWindow::Layout() -{ - if (GetConstraints()) - { - int w, h; - GetClientSize(&w, &h); - GetConstraints()->width.SetValue(w); - GetConstraints()->height.SetValue(h); - } - - // If top level (one sizer), evaluate the sizer's constraints. - if (GetSizer()) - { - int noChanges; - GetSizer()->ResetConstraints(); // Mark all constraints as unevaluated - GetSizer()->LayoutPhase1(&noChanges); - GetSizer()->LayoutPhase2(&noChanges); - GetSizer()->SetConstraintSizes(); // Recursively set the real window sizes - return TRUE; - } - else - { - // Otherwise, evaluate child constraints - ResetConstraints(); // Mark all constraints as unevaluated - DoPhase(1); // Just one phase need if no sizers involved - DoPhase(2); - SetConstraintSizes(); // Recursively set the real window sizes - } - return TRUE; -} - - -// Do a phase of evaluating constraints: -// the default behaviour. wxSizers may do a similar -// thing, but also impose their own 'constraints' -// and order the evaluation differently. -bool wxWindow::LayoutPhase1(int *noChanges) -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - return constr->SatisfyConstraints((wxWindow *)this, noChanges); - } - else - return TRUE; -} - -bool wxWindow::LayoutPhase2(int *noChanges) -{ - *noChanges = 0; - - // Layout children - DoPhase(1); - DoPhase(2); - return TRUE; -} - -// Do a phase of evaluating child constraints -bool wxWindow::DoPhase(int phase) -{ - int noIterations = 0; - int maxIterations = 500; - int noChanges = 1; - int noFailures = 0; - wxList succeeded; - while ((noChanges > 0) && (noIterations < maxIterations)) - { - noChanges = 0; - noFailures = 0; - wxNode *node = GetChildren().First(); - while (node) - { - wxWindow *child = (wxWindow *)node->Data(); - if (!child->IsKindOf(CLASSINFO(wxFrame)) && !child->IsKindOf(CLASSINFO(wxDialog))) - { - wxLayoutConstraints *constr = child->GetConstraints(); - if (constr) - { - if (succeeded.Member(child)) - { - } - else - { - int tempNoChanges = 0; - bool success = ( (phase == 1) ? child->LayoutPhase1(&tempNoChanges) : child->LayoutPhase2(&tempNoChanges) ) ; - noChanges += tempNoChanges; - if (success) - { - succeeded.Append(child); - } - } - } - } - node = node->Next(); - } - noIterations ++; - } - return TRUE; -} - -void wxWindow::ResetConstraints() -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - constr->left.SetDone(FALSE); - constr->top.SetDone(FALSE); - constr->right.SetDone(FALSE); - constr->bottom.SetDone(FALSE); - constr->width.SetDone(FALSE); - constr->height.SetDone(FALSE); - constr->centreX.SetDone(FALSE); - constr->centreY.SetDone(FALSE); - } - wxNode *node = GetChildren().First(); - while (node) - { - wxWindow *win = (wxWindow *)node->Data(); - if (!win->IsKindOf(CLASSINFO(wxFrame)) && !win->IsKindOf(CLASSINFO(wxDialog))) - win->ResetConstraints(); - node = node->Next(); - } -} - -// Need to distinguish between setting the 'fake' size for -// windows and sizers, and setting the real values. -void wxWindow::SetConstraintSizes(bool recurse) -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr && constr->left.GetDone() && constr->right.GetDone() && - constr->width.GetDone() && constr->height.GetDone()) - { - int x = constr->left.GetValue(); - int y = constr->top.GetValue(); - int w = constr->width.GetValue(); - int h = constr->height.GetValue(); - - // If we don't want to resize this window, just move it... - if ((constr->width.GetRelationship() != wxAsIs) || - (constr->height.GetRelationship() != wxAsIs)) - { - // Calls Layout() recursively. AAAGH. How can we stop that. - // Simply take Layout() out of non-top level OnSizes. - SizerSetSize(x, y, w, h); - } - else - { - SizerMove(x, y); - } - } - else if (constr) - { - char *windowClass = this->GetClassInfo()->GetClassName(); - - wxString winName; - if (GetName() == "") - winName = "unnamed"; - else - winName = GetName(); - wxDebugMsg("Constraint(s) not satisfied for window of type %s, name %s:\n", (const char *)windowClass, (const char *)winName); - if (!constr->left.GetDone()) - wxDebugMsg(" unsatisfied 'left' constraint.\n"); - if (!constr->right.GetDone()) - wxDebugMsg(" unsatisfied 'right' constraint.\n"); - if (!constr->width.GetDone()) - wxDebugMsg(" unsatisfied 'width' constraint.\n"); - if (!constr->height.GetDone()) - wxDebugMsg(" unsatisfied 'height' constraint.\n"); - wxDebugMsg("Please check constraints: try adding AsIs() constraints.\n"); - } - - if (recurse) - { - wxNode *node = GetChildren().First(); - while (node) - { - wxWindow *win = (wxWindow *)node->Data(); - if (!win->IsKindOf(CLASSINFO(wxFrame)) && !win->IsKindOf(CLASSINFO(wxDialog))) - win->SetConstraintSizes(); - node = node->Next(); - } - } -} - -// This assumes that all sizers are 'on' the same -// window, i.e. the parent of this window. -void wxWindow::TransformSizerToActual(int *x, int *y) const -{ - if (!m_sizerParent || m_sizerParent->IsKindOf(CLASSINFO(wxDialog)) || - m_sizerParent->IsKindOf(CLASSINFO(wxFrame)) ) - return; - - int xp, yp; - m_sizerParent->GetPosition(&xp, &yp); - m_sizerParent->TransformSizerToActual(&xp, &yp); - *x += xp; - *y += yp; -} - -void wxWindow::SizerSetSize(int x, int y, int w, int h) -{ - int xx = x; - int yy = y; - TransformSizerToActual(&xx, &yy); - SetSize(xx, yy, w, h); -} - -void wxWindow::SizerMove(int x, int y) -{ - int xx = x; - int yy = y; - TransformSizerToActual(&xx, &yy); - Move(xx, yy); -} - -// Only set the size/position of the constraint (if any) -void wxWindow::SetSizeConstraint(int x, int y, int w, int h) -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - if (x != -1) - { - constr->left.SetValue(x); - constr->left.SetDone(TRUE); - } - if (y != -1) - { - constr->top.SetValue(y); - constr->top.SetDone(TRUE); - } - if (w != -1) - { - constr->width.SetValue(w); - constr->width.SetDone(TRUE); - } - if (h != -1) - { - constr->height.SetValue(h); - constr->height.SetDone(TRUE); - } - } -} - -void wxWindow::MoveConstraint(int x, int y) -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - if (x != -1) - { - constr->left.SetValue(x); - constr->left.SetDone(TRUE); - } - if (y != -1) - { - constr->top.SetValue(y); - constr->top.SetDone(TRUE); - } - } -} - -void wxWindow::GetSizeConstraint(int *w, int *h) const -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - *w = constr->width.GetValue(); - *h = constr->height.GetValue(); - } - else - GetSize(w, h); -} - -void wxWindow::GetClientSizeConstraint(int *w, int *h) const -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - *w = constr->width.GetValue(); - *h = constr->height.GetValue(); - } - else - GetClientSize(w, h); -} - -void wxWindow::GetPositionConstraint(int *x, int *y) const -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - *x = constr->left.GetValue(); - *y = constr->top.GetValue(); - } - else - GetPosition(x, y); -} - -bool wxWindow::Close(bool force) -{ - wxCloseEvent event(wxEVT_CLOSE_WINDOW, m_windowId); - event.SetEventObject(this); - event.SetForce(force); - - return GetEventHandler()->ProcessEvent(event); -} - -wxObject* wxWindow::GetChild(int number) const -{ - // Return a pointer to the Nth object in the window - wxNode *node = GetChildren().First(); - int n = number; - while (node && n--) - node = node->Next() ; - if (node) - { - wxObject *obj = (wxObject *)node->Data(); - return(obj) ; - } - else - return NULL ; -} - -void wxWindow::OnDefaultAction(wxControl *initiatingItem) -{ - // Obsolete function -} - -void wxWindow::Clear() -{ - wxClientDC dc(this); - wxBrush brush(GetBackgroundColour(), wxSOLID); - dc.SetBackground(brush); - dc.Clear(); -} - -// Fits the panel around the items -void wxWindow::Fit() -{ - int maxX = 0; - int maxY = 0; - wxNode *node = GetChildren().First(); - while ( node ) - { - wxWindow *win = (wxWindow *)node->Data(); - int wx, wy, ww, wh; - win->GetPosition(&wx, &wy); - win->GetSize(&ww, &wh); - if ( wx + ww > maxX ) - maxX = wx + ww; - if ( wy + wh > maxY ) - maxY = wy + wh; - - node = node->Next(); - } - SetClientSize(maxX + 5, maxY + 5); -} - -void wxWindow::SetValidator(const wxValidator& validator) -{ - if ( m_windowValidator ) - delete m_windowValidator; - m_windowValidator = validator.Clone(); - - if ( m_windowValidator ) - m_windowValidator->SetWindow(this) ; -} - -void wxWindow::SetAcceleratorTable(const wxAcceleratorTable& accel) -{ - m_acceleratorTable = accel; -} - -// Find a window by id or name -wxWindow *wxWindow::FindWindow(long id) -{ - if ( GetId() == id) - return this; - - wxNode *node = GetChildren().First(); - while ( node ) - { - wxWindow *child = (wxWindow *)node->Data(); - wxWindow *found = child->FindWindow(id); - if ( found ) - return found; - node = node->Next(); - } - return NULL; -} - -wxWindow *wxWindow::FindWindow(const wxString& name) -{ - if ( GetName() == name) - return this; - - wxNode *node = GetChildren().First(); - while ( node ) - { - wxWindow *child = (wxWindow *)node->Data(); - wxWindow *found = child->FindWindow(name); - if ( found ) - return found; - node = node->Next(); - } - return NULL; -} - -void wxWindow::OnIdle(wxIdleEvent& event) -{ -/* TODO: you may need to do something like this - * if your GUI doesn't generate enter/leave events - - // Check if we need to send a LEAVE event - if (m_mouseInWindow) - { - POINT pt; - ::GetCursorPos(&pt); - if (::WindowFromPoint(pt) != (HWND) GetHWND()) - { - // Generate a LEAVE event - m_mouseInWindow = FALSE; - MSWOnMouseLeave(pt.x, pt.y, 0); - } - } -*/ - - // This calls the UI-update mechanism (querying windows for - // menu/toolbar/control state information) - UpdateWindowUI(); -} - -// Raise the window to the top of the Z order -void wxWindow::Raise() -{ - // TODO -} - -// Lower the window to the bottom of the Z order -void wxWindow::Lower() -{ - // TODO -} - -bool wxWindow::AcceptsFocus() const -{ - return IsShown() && IsEnabled(); -} - -// Update region access -wxRegion wxWindow::GetUpdateRegion() const -{ - return m_updateRegion; -} - -bool wxWindow::IsExposed(int x, int y, int w, int h) const -{ - return (m_updateRegion.Contains(x, y, w, h) != wxOutRegion); -} - -bool wxWindow::IsExposed(const wxPoint& pt) const -{ - return (m_updateRegion.Contains(pt) != wxOutRegion); -} - -bool wxWindow::IsExposed(const wxRect& rect) const -{ - return (m_updateRegion.Contains(rect) != wxOutRegion); -} - -/* - * Allocates control IDs - */ - -int wxWindow::NewControlId() -{ - static int s_controlId = 0; - s_controlId ++; - return s_controlId; -} - - diff --git a/src/make.env b/src/make.env deleted file mode 100644 index 4e72c8d2d2..0000000000 --- a/src/make.env +++ /dev/null @@ -1,117 +0,0 @@ -# generic.env -# Linux/generic -# -# Common makefile settings for wxWindows programs -# This file is included by all the other makefiles, thus changes -# made here take effect everywhere (except where overriden). -# RCS-ID: $Id$ -# -########################### Programs ################################# - -# Replace this with your own path if necessary -WXDIR = $(WXWIN) - -# C++ compiler -CC = g++ - -# C compiler -CCC = gcc - -# Compiler for lex/yacc .c programs -CCLEX = $(CCC) - -LEX = lex -YACC = yacc -MAKE = make -AROPTIONS = ruv -RANLIB = ranlib - -############################ Switches ################################# - -# Debug/trace mode. 1 or more for debugging. -DEBUG = 1 -GUI = -D__WXSTUBS__ -D__LINUX__ -D__UNIX__ -GUISUFFIX = _stubs - -########################## Compiler flags ############################# - -# Misc options -OPTIONS = -D__WXDEBUG__ -COPTIONS = -DEBUGFLAGS = -ggdb -INCLUDE = -WARN = -Wall -Wno-unused # -w -CWARN = -Wall -Wno-unused # -w -OPT = # -O2 - -############################ Includes ################################# - -# Compiler or system-specific include paths -COMPPATHS = -XINCLUDE = -I/usr/openwin/include -I/usr/include/X11 -I/usr/include/Xm \ - -I/usr/include/X11/Xm -I/usr/include -XLIB = -L/usr/local/X11/lib -L/usr/openwin/lib -L/usr/X11/lib -L/usr/X11R6/lib - -############################ Libraries ################################ - -COMPLIBS = -lstdc++ -GUILDLIBS = -lwx_stubs $(COMPLIBS) -lXm -lXmu -lXt -lXpm -lX11 -lm - -############################# Suffixes ################################ - -# Change cpp to c if you want to use main.c instead of main.cpp. -# Edit wx_setup.h accordingly (USE_C_MAIN=1) - -OBJSUFF =o -SRCSUFF =cpp -MAINSUFF =cpp - -####################### No changes below this line #################### - -WXINC = $(WXDIR)/include -WXLIB = $(WXDIR)/lib/libwx$(GUISUFFIX).a -INC = -I$(WXINC) -I$(WXDIR)/src/png -I$(WXDIR)/src/zlib $(COMPPATHS) - -# Directory for object files -OBJDIR = objects$(GUISUFFIX) - -CPPFLAGS = $(EXTRACPPFLAGS) $(XINCLUDE) $(INC) $(OPTIONS) $(GUI) $(DEBUGFLAGS) $(WARN) $(OPT) -CFLAGS = $(EXTRACFLAGS) $(XINCLUDE) $(INC) $(COPTIONS) $(GUI) $(DEBUGFLAGS) $(CWARN) $(OPT) -LDFLAGS = $(EXTRALDFLAGS) $(XLIB) -L$(WXDIR)/lib -LDLIBS = $(EXTRALDLIBS) $(GUILDLIBS) - -# Clears all default suffixes -.SUFFIXES: .o .cpp .c - -.c.o : - $(CCC) -c $(CFLAGS) -o $@ $< - -.cpp.o : - $(CC) -c $(CPPFLAGS) -o $@ $< - -.C.o : - $(CC) -c $(CPPFLAGS) -o $@ $< - -####################### Targets to allow multiple GUIs #################### - -dummy: - echo Use a target: one of motif, stubs - -stubs: - make -f makefile.unx all GUI='-D__WXSTUBS__ -D__LINUX__ -D__UNIX__' GUISUFFIX='_stubs' GUILDLIBS='-lwx_stubs $(COMPLIBS) -lXm -lXmu -lXt -lX11 -lm' - -motif: - make -f makefile.unx all GUI='-D__WXMOTIF__ -D__LINUX__ -D__UNIX__' GUISUFFIX='_motif' GUILDLIBS='-lwx_motif $(COMPLIBS) -lpng -lzlib -lXm -lXmu -lXt -lXpm -lX11 -lm' - -gtk: - make -f makefile.unx all GUI='-D__WXGTK__ -D__LINUX__ -D__UNIX__' GUISUFFIX='_gtk' GUILDLIBS='-lwx_gtk2 $(COMPLIBS) -ldl -lgtk -lgdk -lglib -lpng -lzlib -lX11 -lm -pthread' - -cleanstubs: - make -f makefile.unx clean GUI='-D__WXSTUBS__ -D__LINUX__ -D__UNIX__' GUISUFFIX='_stubs' GUILDLIBS='-lwx_stubs $(COMPLIBS) -lXm -lXmu -lXt -lX11 -lm' - -cleanmotif: - make -f makefile.unx clean GUI='-D__WXMOTIF__ -D__LINUX__ -D__UNIX__' GUISUFFIX='_motif' GUILDLIBS='-lwx_motif $(COMPLIBS) -lXm -lXmu -lXt -lX11 -lm' - -$(OBJDIR): - mkdir $(OBJDIR) - diff --git a/src/make_cw.mcp b/src/make_cw.mcp deleted file mode 100644 index 32016cd192813a1a5b5cec85c35813925fd73db5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 238664 zcmeF42VfLc{>NuR3xtj+HVmMGqCvodu_c5Kfk;rW!e+CCK$6YvZYX+pV!QLY*Y&Dr zx%28@y?&>j*X+Ib-p<~;^8ftayxpDMo!NPjh>*;K@BDuI=9@R~{oe1rc{6Y3O*9^F zu`H{XW!V#~UT1BzdVT3)%i8HYe(z$J*z9sbO}sI-G?GX(#}nmsiTLVRG?m`fQ{?j$ z^g-|tco;ka9tH1XtD&F_{bjHRC;=ydlfh@f=fLN|DPSWw6|4lOfz!dB;0$mkXaZjV zz;ti{r~wy(8Q>!DbMOm*FIzLg zFF_p40>1)MSHA|c!5lCb+yU+ccY(XXJ>XvO8}M7u4t@vz4_pG~fp@^A;4|PdFdrnq z0#FNn5B>oD2>t~A3>JbUSOn_8kzg_S3rK-_@K^9I_#5~;SOP8w9pDOZCHM!p3akZ3 zfuq4c!8-6S@Ncjb{0A%p{{`#8G2m)&EVu?72aX5tfeqjUa4k3yTnCne6(9nx2Mr(! zZU8ren?NIY1-uGg1FwT;K@4n1+ZclE19kvAft|r)U)A?STy*2fe@tU?_Ni z=n`aa^2Ul)sgCx>SVKos#VTjFqB!-OlVxcqnIOjyN60CY-Avp@ z&M-~R8H3-^)Pm+@Y9VKNtIye0QxDp2Km6WFshku__b&fv<<7diyXgJ9N-HOfR;^juUpgO-9HY}6tN(tSmb>e}+e7o8aN=q2 zju9}mBul$@WIrbz+P}&#?cd=I(0~7=lH_H`yvW)}O-m%1j3p~pM-q~XI~+T=uDo{X zvC@}2w$APhTU*u^p4!K4ZJXCbR7Gd<)A=eMtX)Vs(txAt=2o;PVk?{F?CKE|i@&h7 zV`V6gKWBdWDCNW#Z-0*8sv~65$aF_eR&{*3k5U~|cpk`D%R|YUs-N!I)DR+VNY`Je zKHk%jU8LNTMXm$p_(4v^^{bklGD(k&xESSA4x~92NF5s5d z*VWL$I$dFB{Wxoz^tsCVc;_ll&vlj4X*y1XTc_)mQzk*OqC-}5F2G9i+gqAgAag39 zV6ToS-Uc0#WI+;>%*k0y$|qx0ITOlRM#h*jW|Zp>89z!lCSz6^U&=UF#;r2ul(7Kg zW;F(tF|mxBWsEFi<@EU3J-(GOYB?AK#)5HRcd!T86O0EFz+OPcgcHF&U|&!HCV~CH zWH1Fx1^a^oz=7Z(Fby0GD#0P(P;eMH92^0vfLxzcgAHIhr~xy;OfU<~26Mn%@Kdk| z$a(Wfuo%>XB_Mr0BiAp>z%k%ha2z-u$Tf;wpDYI}Km;^^C};#Ruo5(ZRe%AHy53xa zYyqvH4a7k^_zaNqdJ;%eTMO0!>CsODCxg#|&wSz*oW7z}LYyz}euN;9KC^;5*>E;CtZv;2dx+_yPDK_!0Oq_z5@<{0y8AE&vyT zi@?vpFTlm%m*7|6*I+)F2Nr-@u+RrYcOsO)HE(1=O*a3)VwWHHWy64NNZwAH-*WU` zpf~6PgxU|3g8pCtC<6n*ATSt6Izz!QFdU2k+kuf_TWV+3)RShI|f#QCeRGlfL0)V znO8q1{js|*lYZH+FFTEWLH*d*;JEuQ@iXx^x35L{y$Y-b(s!N;z5=ALlfO3$^eY3o z^j$ygK(2jTnj6giiZh3Ow%xx(%9sts&)oDOJ|kgzkv@@%_{SZ5Nd__lFw5S!?5b>* zKCUL|W&YNytQ;q^ziSlw+D~{G$`O1**Lgv9Se<{3?sMocy4zbIY~NDFa!xNE97ge8 zG$$1qlH~;d7M?>3e-yF6^5w}?Bq3KPpIVS=~p|Y&;k0@qAHuKfSdrYmYWf-DCbYvu^H1zeuod^ySD|x z@zf_!zgt0fVyn^ACs4L+F-g@|aw9kBmW%tA3O(#b%38%N!BxmlHrP2gUpO>5&Y9NZ z_mzcR{wJHMF!im_0yx4ae9P?P&fLmny7`oiWpi`a<|ePr4PKkc1e?hOdpej2xY2Dh zkz{kD+pY#oKG;k`*jx?TOfuLcfO4*VbZ8TbYG zIk*s90xkuYf!~8afIosifj@)4fWLyjfxm;x!4=?2@DFem_$T-mxB&bc{0ICOTn(-P z*MfJzyWlMzq-7z&1g;a~*V4vYlbgB`#qup`(B z>lqmn{W&=-&ms}z)hfnX3A z42FQAU>FzC3}7!7s<uo%>X%YnRfc_p|8TnnxP*Ml3tjo>D5Gq?rZ3T^|pgFC>T;4W}CxCh(|?gRIO z2f%~iA@DGG1Uw2J1CN6zz?0x9@HBV^JPZB@o&(Q=7r=|)CGawM1-uGg1FwTOz?~rw8{e?;4Z9Td2LnJEz(;I+#2yTW zfT3U*7!F1Ne8k2_Y<$GVM{In=#z$;?#KuQhjDY)5U^Ku-Z2ZB-A8h==o&fd&ds}2K z3_aWes#C)o+|H1F_|v7i2|e6qJ-PUuAF6!Zxff5*l$(gI07n)lC;`1dZ_o$y1^qxN zC<6n*ATSsV0YkwsFdU2k+kuf_d$0o-1$G2Gft|rFU{^32>;}rg7%&!$1G|Ggz@A_{ zm;m+$6Tv=UUr+%if&IW_Fa=Bn`-20(f#4u84IB(A!6D#Ka2PloRDo(R9n^psU=ElM z7J@~f4jc&%jHk25=*|3ET{B0k?wN!0q4;a3{D6+zsvl_k#Pt z{on!cAb1Eo3?2cGg2%w);0f>~cnUlXo&nE-|AFVg^WX*WB6tbB3|;}Rg4e+7;0^F5 zcniD@-U07|_rUw$1MngE2yBv<)&V|Y;}bSMVdE1vK4Ie%Ha=mOg8pCtCVM?o`hv$}?n?vgr=Au)1YEz^P07ty8nnDFgD78bA~@f*5E5GG(2fuJ)R$ z_L`=asb`szmT6*{dX}kanTFm7P6eld)4>_wOpuna31gr$BfJ}wU z^!As4d-__Yw9NwE_6hd^C1k|>@geeKja|HGks{mFt5?_+S!Yb zlB$(p z_+eTO*K&lG+i5vc%k8z?LCaBE?x^KXTJEgnE?VxYwLD16X<8nvWu=yf zXnClXhiQ4ZmRD$5<#LB!{hDHJu|%`9=(OFdHE+6>HCoOP*^8b=|DL6P&(^=^=-+eo z?|E9z*YOLqtkv-gwOpiSot8&xxme43ksNo4E8in}wMHb*Do=g6S`iNNdM$6z@;rk;)g5$`_H!7m>;rk;)g5$`_H!7m>;r zk;)g5$`_H!7m>;rk;)g5$`_H!7m>;rk;)g5$`_H!7m>;rk;)g5$`_H!7m>;rk;)g5 z$`_H!7m>;rk;)g5$`_H!7m>;rk;)g5$`_H!7m>;rk;)g5$`_H!7m>;rk;)g5$`_H! z7m>;rk;)g5$`_H!7m>;rk;)h4=BBPk<%|4QzKB%5h*Z9aRKAE*zKB%5h*Z9aRKAE* zzKB%5h#aWXAEf1AEr)11RLfyn4%c#omfLALQp@eN+(FAxTJEUjPFn7)~9%^HYzz9I2wr^5khXkm3AvPy_NWM`UO&Lv(riv#TycBBa#-WDt-ST#m@l zUoJ`Haw&aTB9~0XE=}A|&w5>!$YsPva4I+roDRG$P2^HTF2C|GQQVgwCQr}iKRJ6I zY5okH4=w-~f{VbREYgArgmFcNGJb^xQmj$kLSGuQ>}3Pyw7Ksgu# z#)5HRcd!T86O0EFz+PZ)FcItn_5~GS64(z+22;RPus=8e90(2q)4;)?5*z{!1&4vd z!4aSeRDcNuU*b$U~UZ6MV1Nwq~ zpcIsWfnX3A42FQAU>FzC3}7!7s<uo%>X%fS`kO7LHBHMj;`3$6p#gB!q&;3jZ0xCPt_ZUeW2JHVab zE^s%v2iyzp1NVamz=Pl+@Gy7;JPIBIkAo+`li(@vGDA|@G^J> zyb4|euY)(ho8T?*Hh2fT3*H0ogAc%m;3Kd}9+C(6h>eff_=t^<*!YOu7vLjyDd-Od zfHHuu*!YS)7z_bJ!7wl!i~#tGjj!1FijA+>_==6M*!YT#uh_eQT>*Y!;} z3*J`hheJoAi|Whk>T1dtG`FpZCAw#)7nUltfVTzKt!F7c<^O6ad2dp8j^)a>vJxAF zFO+oWS}s~PH6-lMU?p7Ik<)Z;@E9)V62f1B7T78tk6^$Pn9(3YSHGdijE8z&JexBo zmwR4z*+op|wq6pHp>Th`C;-!ERd?9!t* zY})ku89{#>?(eo1kOye<{K6i1*`+72w!^R$-L}+W!2&E`4`Ps!?-#@Hi*=heU3+!F zABVfUtp)6%-2BV)3+si;EXdRmGZEeqE^e!EZ@097 zb4Pe7Z6LfO+$}3OEL5Nc)W9G+Itb*4gwO&#*a9QA_AA7Cp2;XaTW+`o6Md zZ{!98u&TEBTJ%hv_^hNki2M+8mWNukD%H`h#`+cV=&=r}OP3Da)v0rf)fKoA-^nGt zx^$fkS587Tv_NP9KMRDTGe66O@u3Am3-mM#Fggl@V*xd`D^+g*=9#3=y7lXt<&CqR z8~Rwi)18RUZa@9U6#a{k+0%dC^ms>GV|9DG zckxth3}s&_FPx~bbne0#Z5=Hw-uy5&v_OxtfLzyST9dov&JK3y`3q(@vJ!8S_WzjXwjdh9m>ZSE{H8}?_AyxC$gEFtNyYk{$6t%yU!}nEdYn4^W zXL{6&9?fmhmX5|)__Bw~ggr~u9}QtiOkVt9MU~JMdRG0rODmm+_J>mC4|+AJ&?nqh z>N&d0ANnbOa2A^j-J$2WKu$?r{=gz#oG(raUlh$TP!Idz@`wJ)AKKfR!p@tcyD$@2PCq^&WMXyhs4hD0Q>p|ZAqL3vH3`qru|iBRoE7D)R; zm2*{V;t%2#>WTBpx#>&OBHrV{?ndV8c13adLoc)bVdBK_eA4aQAX6ZhKlE1qpj!UE z@~%mJM|*obk*b^%i!{a($?!apFj9<#~+;0Lvt+jh;Hl$>7u#(p|6iWr27Zw zEw%a?^TYE++Irnjy8NM^Rl=9*n9`6qmaVIwJG1+hH!M+SEU+q-YOkC$X?0|6q$1hT zR>956N$rVvV@EWVoV2=e&7{c{lP5LCqsd8;_U1{QNqO7gZa2PW(Tthn%g4{CUQ&&y zn_IJF{I-$xuE}NiQDkLDnM5ugSaH-HoG#QI6Y8M_LJJgHApPig_{e0&HmdXJKHrhx z=^J^-ky{YH4>@Lv?p6xF)|u&5!$^kLBp;*Z1Y4XR`FRgs%hr0+IR%7q88za0OeI#8=@Swga^O zCbG=YZP`Ci>!XqB#RU#TAFSh9PSF~o^%IfuY7W8v44Yv}wQTuD-*By8fE=OqtB~7i z{VwE4tv`?4-qHDv3?B*7`fkWkT9-VCT?i$M*zBZKt3*~f*jelH&E{RS{(a=GTK^+b z%0no*j*X;CD7l|axoGGwvl*jQtC!eytkxy%aax~>++FKZ7kg-ZC2~)#pMlgjEqk4V zK0(L-7P*(!Z$j>^_2-Zi9lf{I$v#?_zuQ;qGBZ%2^%zoog3$X5Z1z*C)%$#;Ugom* zztN}Y_-B!lZ-RUS%i3S5Rv)p!0a`yCDfT7wIf2bVO11jP`y$h{E`D{e)-OToX{tUq zqaUKF*eqyItO11jULC)6t3Z(od^pkIT&sD0`?_A_Ot^Wxrc_Q=^pIo3+tKX~0T1PJx z-(0A5DXaJ&q4a1rbxO5L6UZaAEpwuMueZYgE&382FLiX3)}=j4T7**Zhowq& znk&oZOX$A?n`4w}^%p-nR_j&BD z_5UIpwEhq>s&%nRqoWTfLy9jF2JFg4+5lmI_+yh&tpQRetF$i1Z`QilYPHtSLax#J zPmq#t!T|9x@ejg)YuL0Y)f(_PGOqR4k?oFNW+OkN^$|!p2BBkoz}mHT(9+CAUA0JugH_Mek)S`hEVn-8}Tzj+52ohr&Md;P^8oW zVc_m;PEo2g@DSuit=A(@)wb!qEg)w<;8Yg(85d|m5O?r&)Qo5-`Z{wt*XCJd7Nd`qd; zpu3UZ*7}Rc?>PEk5#QDND5Th$FnE79-&d+Ncoy;;tsjLvSL@zc~8v zosnWk!tg`c{7tFW@a4$AYh8Tya;^UiDYhUC|1X;>m1+$a9}xc_j3{Gsm1yXDviYY{ ztr0Vk|I&I4`ERYCiTsb&#m15@VZ_yJ1cVVUvAIU6)^<{l*J@q->N>60Bd^zb2l583 zi%o9Sy4d3;t>29lyA!s1lg%wkwMI&xe5=+gk+*4m8S-|mpNtfn5=M$o-KkV-q}V`w zkudThHgXKY$dB0Eqf~4A-H`WceH!vUtuH~|ul4oF2ef_;@rW#Egi(XoJfl==)ZWNvwLSy+ zKdm<)pVRuO$mg|w9`XgP{}U;`LKr3am3k%Y*q6=AO0{;}7b$Iku;V;7(w+%Bu440= zQmq}&LcXqb$^RQ#7vGV(B=+X`eyL%T$YUhA|WTiO+2SL(#ZMiNGow!Nd) zsdsxPtuI37*b+v!q3@z~NniY%F!~bo(OSO+UD_34^sDIQD1_a}mpw-7Q_#n1{V4Qt zTK_Ei?pi+=eGjew8GTQ!--|w8>(n(LrBtCDd)Rwvy#ig@2BCa0`b4cK(D%{$Iq2fw zgz`V3^EXPT&#>_orQ@geevUpy>_1uShoDmi31je8d#ct?LEm5NKSn=5>sO&4sCC+| zP5nt2+Z%nF*0G;`u+|SnuhjZ+=p0YN*ptxNr}Q79AEx!cq93mHN70XP^l|v9U8QyG zYD*gzpOFu#w_iglwfPfHkgHTrC=KaM^}>$Ew0uA}e11G@AV zgx#@+Jzwim*9)}Xf?lijGtd`m{io>ooP^!~hF+)jo6wKc`V;8XtAssh({{bqcSc{L zb!=vHJPCWS-#%LFa@?g_KMQ@C)_;zEjMlG0KUV7xq93RAchHY_^gV~7Q}+_~#E)$3 zsC3F{|Y^-^?#!`YW-n!{$9eK(oR=8`gpNzlh*MadzIFu zoi;mqxGk^%En#82EoPM;IBkCTnSuiIgc04}0+E)M@>GO{N>a)0Us$gaGT)$2s$P4; zxSnDGMhsyHEf88D&;seF8A}71J(JLf`J8}HU}x6$QcIiL8!=SX7GK`Hgrl0T8Yb-G z!M_L9cR-5&dAPSbTVTel1xtpw)^(W2>o%P&@7%UjEYTKAmCsz?-V#s5xN#GPo@asJ zo~Y;9BrLI5fTf1z$sm>*_I)x)&b$(~xWU{@4ZHN-GKc1W=G@}h3=jAzS%5K8(5Nve zXX4lCkLE19Du^AtKc}5|K0T*KuE7bJGiVOEA#57C_V_rzKK&KR>EXKW4JjVM>#NMb zg%-ha8SN*INIyfIyLPd&Hfd$JcCj*B58i}p7x&=G&nvog7~$H*c}D5MKVAM1u3g-N z{UBX*mp_DS7pINVgQd$K!nKQgupgw0?(&Cl?c%gidaz9ULzOeP7Oq{~gMC4Y?(&Cl z?cyHp3wiz!u3a4ZgS&qS*DenI!R-&>+Qp$ixc#A@tT5rcuOLg^FKBLC6FveHx=7Em zz`FJ2(RgF5JP~V;C!1681aDCFs37kvREFPA>rr){S6I2GR40bK`0!_FfzSe>1$vYP zRA(q94%bWWQS}}cwyQ1Rtd|_VtJBqX-R9B@-__aXs%&e`aQLpy)><=LDqrFH`&-J= z+sJWx{QCP{vF7?VQrBTNLkol!2rUp=AlCws_V$*&37Nb2@_t-EShBz>U)9>y!M3rb ziS4@PHnxdqitWnA1l#ypwpO?{_8k2K)z18=bbk9EhbdIO%UZNJ2T zC+prHWx$g)@sBp($$I%q4S2Ga{xSpJRCvc2@MI1CV-0w+KL2qBJXyQ{cmv)+@J=w` zv2MF{q5?FYt!MaGT_y~Yc}A`fVbL!Hxu3(1KuonEe5>V@LCOcbKtcZ@aDpc8}Q^? z5A6m#`3}Tq40sFRB@B4A@R9~R`L;yLfG6Lb=rG{PH!0Q{@Z@_H>kN4EEsOOAJicRL zZ7|@;H!w~z;K}zfPS!luO!93X^6iYz8t~-18lN-ZEra)Y1Ku(4PBGxgw>mZ&@Z>ul zryB6&8y}|`@Z|d+ryKB2gm;DkPre&+W)P2SeD8|lkHZjJAhbYefzSfo+XA2DtP(c| z;{hJz7cJ1`P#4|V{ffP7qVC$KY+kLT?Q zMuXizIT!=Rf^lGXum{)^j0Y3I-e4lw2kZ+fz$CCAm<*(+y(9i_kerBec*oZ0C*5Q1Re&DfJeb&;BoK-coIAXo(9i=XTkr#bKrUK0(cR; z1YQQOfLFn5;C1i@coVz@-Ujc0cfot$eeePJ5PSqS$s$;ClN;a*Hojov3pT!B;|n&v zVB-sRe=q=)0er&7C+xvsh`hsE8;LHeFK3nJ@Ez9f-64gg^R&Ra^}N5S{67(EiA9nz zPgXaM4Buhx#+7SUGC`T*k^8Zm8|=mPi{<|B<_3Go%wzbD^q7)PZS4Y?fhrmnFphM3O!!g^x%??>Y=)-2M_35@c5cZH4`WL*SgM6 zbfP?6;2X@-DV`zobc!})X~~A=YA>3QaXPW}Mbq&$oNI@w_u?n+z;a0srP2w=4dtqf zB%_g*A{FnX6De{YP(7w$I?!v?QL&koCh0gMo7x!PaM!8kiGEw#$Y!fN<90!hu$h&qs%-^ZlNOj)$DTg} z@3W8I+B~C^V_v2ZJPU4ha?I=utE0WMAuaa*P?6PVo$x=co7}suSrH zO~^Q%Ej`BcvGY)xO6SIyJ_%*gF&$$DrDHh8^hsu8CO?K_%)oR^$C%y;W%APnXB20Q zNdb!la#5XZEka<|vYJJK_W*>G8P$0g&DzGtsy?OSjN7@fs&6_{3tMWeYEoY+KU>jQ zb!l_k)G6gfR<9nWJihpeAbT}ULQ+Dn;G|RRnp0f`J9irb(z%$XoCouVg{PL#{= z?nh958e^M%V_w<0=skj9J9qxf4QU8j7U~+ zm@PRQ70w5T^TENM?ZpsJ-73$xUC<+J$rk8k+x)n2J~-bZ?%%GvL%#R-yW*+w6&!S{ z^!VaKy6oL)U+Z*oj2W0t@eF0gbb;v<9U69`T!weugYvVb$Cy6(>HHYeCn5Z~b7Rb) zbPUIsKFMs%G(4kqqT%sBc%5iSec=VJ z6Ah1*K7!YYhF1zNaGhv)W$*&miH0{2-W0uF8cU9NFN+4xXq{+yM(aewGg>Dao(#ML z*NKK_v`#d<;iMP1PBgp`@B-I~hG(=+G`x|d7r0I|Jfn4@;Tf$H4bNzuXn02JM8h*$ zCmNp7I??cq)`^B^v`#cUqjjR;8Lblyubg@dTqhdd7I??d5cvIm8uKx_rX#Hn+2asOi`p@u;)_;a) zwEiledYOnQOq z7sIQE7r1^gyvyM|XVCv$0q?02XV}L|Q;tGhP9VK2iFn?CcMZJPbuxX5q<1a6Hw<{! z!BguiS6SA8BI#WZPpz*Uz`FsST3jVT-3CvsuN=U;9iCcWIe>QuJhi@Z0PjwCUoa@|UGTnWz`GmXSq8j&;CN^8f#rw7Y!8_j| zz31RvV8DAGp86g^z;R!IccDRgFT%UXfcFx-pBwOAhW85t-Yf7fHsHMq@0SL=*Wmri zfcHAQ-x%=TfcHBC-kb3L&w%$9ymt+FZ^OIHfcFl(KN#@dh4)7T-h1%=Y`}XT-d_!P zAHe&Y0q;Y2?-}quf_H@hZxg&LgL!J4^bZ4`5dUewD}nbf1D@Q+{I>y5?qgnUz+-4< zU1PwL`(``v$yHc|=ufGeV{C^unNJ}nD`UhrvIe(O0dXQDolig-ur<7epzg0qT{ zy>Z!9A3vS+UrKsuov#j_ZTBxZIrCd7_Qu@boBfM%%7BH77FO5JteClMrgw5x5-kG| z*=XsRJE3@nQqH`6)!b=Wl^P#dc4cLATePL4F(!9v!_Xrwu!%sy8BXC3t;uzvEA&V= zP=%ILvi1kQyN5qC#oA(t=4j{>J<}&#{=j!i@rP)RoGTtJsU z^fL2@i4()~$u?Z!0aMH*v?WO$wkFlD#c?ed2{ zKK|g09-3pJM|6uCFJ1_jKlJtShjjnoyvSKUV}5wPC~nhjd9TYK`pMf}fp70_%Y_Z| z9$Fy40?v1wm$IUH_#Ni}Q-!;`sRiVmz}O)C_OXBchHG8>+eY?;Yh4$&kFz#MqBtr1 z_Hp>_V=oUGN@V!$V=v33<6P_hc`p(x7VM($z=hvFHu!pdG+i^^GPCZVZ*8SlMKb*Q zPhdL5Gi08hcJBh|*iNKVG$G@3w)8rLK6aKK%2{2hsCi_aM#FCwn|}SrCqtS17_Ro@ zlgvg}I>kIOsJ^o4n6CEZouN!RT`-bx)*%enx}GNQ>U)Gvt{>=KVLII|`#MtGBcraU z@Y}~OW8|nS_*LEB-jWmfF@8uoTjk2XUC<+hYh8Z~hsgYict$6`@8Y|5Y548qE*xX} zTDg;B%)oRE$C!cX6df9dYh4#Nk86zSZ)j(%YC6UYO2=@F>66Sx`i=C;q()=Rz;sN< znBECx^3w%p6laV{0gD835q|r)n0;mjebG5w>$-^ftQC4^xYo6wl`>baMOM&NEje1e z>+M83MH4bkCtT|~T|q)eW%TW1H7V?uLKq)fAhdwCz(`q-hY+?H zZIDoe76>iSV=a*B2m8;P9`9&tAjB^ z#)cNyrYs->3)_;l2E)*!Eihx&f+a&-Z-UQ@tc`TmAamPNu|!)eRX%fldrLeK3%I@8 z+2lk1wqXHT(KQS`*#afD1bw+$TR+!lxxAiiqMlXuRjE{a<)lfgIjK}6JK8E(qH0om zBHq{$O(iF-Zd@~Ia>e9Hjqzx5Ql!0kQa7|s@9^GDH>}mLNTCHn3xpOhvOt7qL-!_R z&IC4ZLbzjGB?Ho()HcFe0eez zNo>YS&%P;}?vU>zgrU#^e6J#C6>hoPnO7ItUWNQ*gRSnfI>#vC3vn{^ zPY?e;*&}b&sc$#FX3>n9WgVBg>{}Z`$SyP17;ETg zvMOC4E6SuKkKbog(!ZQ1nPnSGmd|aK6p0}nWnTofT z&yQ_b7f&=Mt?FnrmQ0f4)T*SlB$8-iQn)^rN;S7NC9z9Oth|=nA?nxkj^>s|W{gt_ zUY436S#OFZ%ALQ-{$AYCmTGQ|Sv8YtCQdA`iMO_s2**`Fmqrq8Dy_OmODm?~xNWf( zOWP|$*1t1sRqkwBQk{@)f{h=a!7g-IlCp^5NRo2#E#bHlgNR~ z2%^>{;;UoaovEyB;iC)d)-NY=d1D1XtjcIBYpbUs6;Ym6;v*exE1R1fo!D4LOQsU7 z`bR@rrXme3X+}KS+Ssgj#G`AQW9!mCk}a|I6;Z3QF`nEIiAI&Wp)Ha~L^f#3hBh+d z=&`jprB>IcVr`AFM)`x4nAM3DO){DNwUT)o$@-V7 zwZ;>=kgd!rrOVKYF=G*J&Uk~=jPnQRSv$uY8!(on(;iQzlF@|DVtb-3mCX**RpQf{ zn24w1(YVfbB9@GIB%-=F$>^F$V`IW0@*`_fel)l1L!oDLkc=g=2TI1HYhpT|?);xXE7{tvbCZg#Pi2oOtw#S1S|U?JsrZ^$+etc?9SQxn9jWG)WQMag($bvu zO@2wzPGV~#iRMV!f!3{b=W`vOD@!}ay7ep{q7QPCn-pCYZ;m!L>Ed9?1ot=fua)t( zRQ6X>qPbD;5MRpVKz^)mae0%=M{0PZ+%TOX+G$MNo(|DTr=dC3 z8cFM|?F}8NlrBs|q9fg|BsQ+2qpM=kH4Smy7}T$pbbC>T)*cXTX>M;w(9WF>h(~nD zR`yqi&N-8_4e@Mp)COhNv<^Nr70>9&xc-xDzt*VzyD`eqGF?n#)ZIiIqsrV)GL2De z8jIp{Dt^o#-^>2 zw0maya>fW94pX$|R803;t+7-j+nQTBf^@%{sl3_I+ajsvwV8sp#Z$3{cw8SlzK#!s zH70a9+9NHTiFJ9~(}qXM6o?PRtl~Q$PQt3HG6}0+8Db(LHc304^DEtDCt^)mTkwMu zsgt1SbOpM$RD+`ba`q+l7(xG{`-vsewUOjkB2yblMi0^kG?S*+(5l;vw8KoM)Q@Z$ z?8p`DhKv>(rcQCxXsTsuBOm%(8?97o#VSS&`EkymA}@CB6g}8b@#`X~snZU0 z{*<&i!8@ts#pBmjWxOR;8R=jcm+oyOLK=3)>s3S|-kwb8@}whDO}ZW=0=NtyF&!Pv zj*-+Dm60kZ%v9lebBtm$12EBNG}HAaW37yR5|%_1489~%k3dCD558(<)$-GtwWLmu z++<9c83ww}Nv@GnbRDCo4LBtxTDJku5N*S9tq`TvoO8XkFy0oUJmpcwjV$lW_@Oz) zNW?W5Pp|pw9uPV;#NaTxuA-e+`(>QysJxx;{9w$O-Q)aVpEJhib@p;S#&1lwQq^xc zZ9$zF*RR)S16NNg4JhrRsd&64R*bQBccyf6M{o;F;P+CnLJ1b58K-F*po82G1HWT`z9a zXLO6puyW=>xok;hhw>z&YA$o78!Dj%JS?C-{OgX-+-!A6hI*$g@aaF85YA|Ks=`8Y zPqsk%jpgvoqMqyps_fyLMLpgHy2=27&r5dIfx>jQQVWFhteJ}G>GP}^Ls<5pzV5YA z)KiD{u*)tzVcn)p*Iu3Fg<8+DfIXDY&t)&Zou^S>xa`ss7h2Zx$vw*!VQDiKDCLoz zzUrysvMS3OB-izol}uW;bTr1o4^w8$)YBAM9fmUZQU1^rW6G>K8oEPI^8%;5a?;TL z&`w$L4VraP!Xg!YHN${$XW$Gdu{F~VZI{h`0|2OgOS-J$0?hU0&! zBpf^RTzAOy4^@^mfVaHuO4rI-^(mgMiX<9&Afh1=No=UBtzS@Hqqcm4v9hkCp`|%m zKG(S(Nrt^jcW|S0|A0S~8Tx~De0L~#SO!lExcs5S%pWFB40{4kQ+A6;mp}A&{6Rf7 zSKrYtZ{t*2U=B~3#uA(l!hWG!RC&=txcp&YxH@Z5Q}u|Q;WHFHqMElvA;V`VwuF_p z=3|7bvu@3`^C{#lT%A?ju=x}$A09HaKxl!`0-*&yZ3}#&tFvYbm;MTKCc;C>ymQIY zAs)M}jYOu?G5VTwU^=E>bM{Uslb=N3*U6WL-^}!?Q73Lu!)m?yj;yTX!;>3BVF)b{ zS|GGQPqsj>o?Q6cvdbwU=(J$Ejy&l|QsbS~2HwfNT1KwbG`y23vz&pTz zCtuAx(114#-a!Vu;qayz@J7Hp*nqbkyh;P!NO*@B@V19{r~z*Wc!wGAM!`GWfVU&O zBMf*u!K*Uh?F_HlfVT_0=?1)A;nf)MM#Gz7z}pSpOaopyyjcdkG4N&^@W#TMW562+ zZ>|AvcX;y*czeK`Z@}9V-U0)jd_bVqfHwi&LId93@ahbB6X6|cz}pAjVgug3@aheC z74ViA@Z_suM;Y+;gLkw6Pu>q(YQUQUZBXU)_`{ayyFabawU1Z0q-Dq zCm8Ui!8_4_cQCx=20VGJX@vpr5O@&--l6as40wmZiyH6_hu3JptAe-EfL9H#N%MHO zM21_1f!OK9t}@`&z-u<(&49PsfHwgJb3K}y!r4xW5DCxO)F)yc-}J79_l5!QI(R2*UTKl^u7~$o1KthrK4-wY5#HwwcsId2#ejD+yp0CDTi~5) zz`GURX$HL8;GJ&3yB*#c2E04qooT?k6W$jLcz413q5ja)0e++nXpY^{6Jh{($wE<7=vtDDsll!dK8t~*k>q!PY zxzBo?0Z;C;UT?tL1>Ow?yj|hlXuul{?0dH@3_w^JWWer0&wg4x68E=f&{_K0-2cC>KCK&K!ys?)7PsSU28}MYj zG0}i0~Fx6@xcKGJQ*Jx zXuy;4!9fN*86QkD;K}&lU<00v4=N3KGCnxOfG6XFLk)N`J~+&PC*y;|4R|s>IKqG@ zm~Oz6@j;CNPsRr`40uNKu=ssB>CG}oZw$QI2E4KG<{0qC!JBKq z+a2CK1D=d?<{R*2oU_1yC*z!21D=d?78>wm{1P}1OMOg)ccejj`@jpFhb6sz;nf?Y zR{?K{0dEq#qYQZa!8_W3HyPei1Kt#P%M5r^;T>bZ+aKPs2D}5{9cREh5Z>_yyo2DK zV8ELO??eOM!SI$F@G9Z0FyI{mFJizu6kdY??=W~#1K#2A8Vz_=@Kze|s^K+hp6@&? z?PEH;RR+8oc+Cd98Sqvc@MghlG2qRC*Ji+*2QP3Qmh#Sr_Zfrq7Q#yz@D{=AFyPg} zTWi2O65cuk-eP#`4S4nNHW=_OhxeT36&sIV0WWYK7CT=FFK`|f-hbh}s*meC4-4;V zc&{1ou7P*5=K0RUlHRrOK5M{}dEL($@UDmVc>~@J@J=z{-3V`^0q-VwryB5XhIg6) z?-qEc8}M$0cZLD)Hh6*au++!x@V;P>-W~A1Xu!J@-dP5`yWoAvfOj{%FB|agf%g>y z-o5a?YQVb>-q#Fx_rv?T0q+5Lf%CA`$AjtQnct0`VJrD1v2D}&GooB#%5nihS?oFhp4?~sgTZm-KIVLJh^XsqXBOhcsCjFc7=Dd0Z;CC-f6(w z9o}6AJh|U_w*hZYc=s6a#>2bUfHwi&eLaOoS;Nr%EuaPy6jRQ1G7gX+{g|BVC5#4g zK9?Z()8(8k;ZPvwWeIbEoO>l44dnbPp%F;B5>^2@PfAz^i$KnI621-OoF?Hs zAm=R!zXNh^lJI9B=N}3G1#*s&AlLkI9+4o|X>zWRAY)-U9}sLQhxGXbTmDY^b%H&H zjg*;SPhuneGr^WJN*_$H7qF3jmSCU2M*32M-NHutOM-ne8|f1X_Lta*?Fja{Y-CP~ zVE>X$xoGHrVI#*T*#BWOR;iYKA5!{Ef-ToByDQbQ-$hE_M<|hckp7KOBKeg*j8G!` zrJo{{OlGr}Qmv9hkb7%=4sxQ_>yZ0sUCJeOOekq)Q=wF=WGzzcLMYkDW)-OTsul3832Wb6j_aGx$e-hcCbt$jpgV0;b z+o)8lPZ=_%^&OB>H-tXYKAMzj^^x+f(s~tA{Fu;3Y`I#gRv#(T8m&tj(uN6rl5AR) zYV|o4*`{?VZ(Qp?M7C@FVx-uJ(B}_q5=yoD{1Yi@5&GQ1CZ$xX&x6Pgtv`p9c17s( z4x4pKwfgo&uGjidm3ou3zv}4y`XJ@lgnlE~d|jzlzcI*fXuSe?w$`QHe^cu-k>Aq#k;rdrUCRC) zt&3lLSL;$I-_yF3{rg&%7-Vm$DH*AoRPO&5x97^%LLzvDWWF z{zU6fAb+a$SCHpv{XOK*9KEz3@_en2L|&lvu}C>Kp;YSqBBffT2Oy)CzL+O=J!gqO2yB`R|uuz=koW2{^I9iW-G-wpW}t?!HctJV)e{!Qz1 zk$>0vQl!)Yp?{3c6-u@GCy`fbeIxQ8T9^90O6yXGQU*eQvD3elYW0_V{afoI|D$zj z%m3B7l<{hQTS{EO@L+fJKJGCzPx=ZW#A@A0@q zAJ`lDvevgpN*g8&9M490gn?7oyrxuZ;1S5zwY~uPhSrZmzNvMw!&_RHzUXbOpMsQj zLKyfpHt#Cc8h8#;`U}Fq3)x6L5e7>8`#`DIK=J(#wJtvOk=CUSH)$O^iCan-Ncr^D ztTmAR>OLUxg9fAbQWR^@Zs<~e!k~%heYAcky0l@!pd-=yY5jQgQmr?l_t$zm`T(te z4!un4)U`cO>pwylpCb(V9Xk0?I_=&bqV@lv57j#DK#k*_pWE7&8&%s{mc#sp76>g6 zS|GGQ*I3|_U76P&c-f^(%QtO0YgX6fHcVyPvw%H_L0Wd4p~f8cu*)tzVcn)p*IvEt zl_$(`*I2+F%78u3FRWgdU3%PbZfic;HOB~3+2$;e@reHOrpG(l8mrs6Zu1I95Y#*j z*Lw2x@J*YR&Rsa8t)r#Iiyg*=7U*FXkQ*zR*5p}seP_gTUl`dVED(PCut!w$mMCP& zmN-awjP7FreO)+S&j9$o_XSUUYk~n!<_z{S;K_W#-Ud9GYnW)jBa6Z7FhG(yihT{z zllhAZ1D?!bOg7-j{6^q94CGJdJ_6TafG6`J`x_ir=1dMS;K_W-fd;%`@D4KIaSa)~ z4g=*F0qB zw+p=K2E1M2)fn(b!<%8iW9~3`J$(G29NsL0^v1xOZNM7~Z;ki<<0$$*{3FPlec!BFCz`G9K$#UE(d8S@xfVi9hPo97JtO4%^ zc%L)i-3agV2E3c#onpYd8Qw+%-YxJ>HQ?O}?=%D6ZSYPv;N1@I3e(uNkEG0KBgo@E(Mx z)+Goy?nCg@dIJHxhv9wK;JA;#d&_|LD7Aei^7Y4jn;9YFMdllX<4S27?`;`Ijb$IIi`>NvhdjsC@4APTlWYv51 z0qM!}v+o+DC(qViX25#~-X9Ej@51||0q;F{e>ULBv%G&b;C%q^Zw9;%;k{?T`v{(T zAHAx0z42_Y^FDfU9s?5nK6(I8i0VD_0A2~ae+8FAJ*)h01D@P>yxM>#_Z_b>;4#E< z-V3iPYCrXC^!o-nPXpV;N&?8+zJxHVdf%|CqLp0vn8gC2Tp=Y{- z+aDMn;14IYG&h9a&_lh!dC*Sx5B-%tw6`^d?$Bf1!QDS_f1LiIH4=^;dagTU{Gm#& zZ%gop+E^+PUl&WPNtV~AB5jS4L}U4a=7vNhv7xfIenEMS+ScMVbsY^Y&C&9?&h{Ysh8_7)wIbYxpWrqHcUgV}b6hACOo&{X~P-5l}6DNi}L7ox2(NC8@^mhCq5?xeZ zUfGagT^MhRc{6paU0Yk1D9SL{Sp{ca zWNn0zN!yy3PjbVn>*^L5Bo;)mdDX8ah-9$eo;`Qg%8I7umBqO8su!2fZI!mII{+NCw}Jk;g}dvX0@dH!m1gS}+tvLzJ_tBR&GJ<`$=kGGZ2iM6!* z5mh>?Qmva)X+ud|rL!70^E(jnwM)yz5sNT%I;};kz3AVkcdGpOID4A2ICfH6^_7kB zXov4k^Br~~nTVRxeVNjQSQU}tSu$xCDxGLcB$@O*mQj7Fbh@COs&rPj$BH#n<8qzU z?CbAxoFG3Gf99f%Q}uz<=KFP5gMUN@z)YdMLCqRn^E>3liDMj<9*48bU z<-I2xYm`nG^q4C+%9z39L!Q*Qt z)l8h|U+X$Q(TNkunr|>qr+9|U(<$1Jr6n7d%Wnk&r>Ms1#MT$jkgw&kJDf9a_P3W7 zlppD#R5}5L<2`bmdOu3?~ig}`WI_*VIl|lB& zgsCz#=N7qHqYqfn3tk?o1l|pUjKBuXw17+dVD~SnmH%?TBnm^ z%)oStXUIH1#RpNHNT+B*#_4S7F{Y25htgC!H^%fyD3gxq7&9mx!!f2$G8;4bF&twC zreiwB^iC*~pDs9~IAcr-SR{~(>SSvX0=t&gEDF2_Ae_vo&bw&VHa=GMDHUhj&W%-l z(~(-(Qe#z<`cnDXipHu-o7<*NDPKSBK)(^mFy-;ZPXyV!1SBLS^a@To#jZKkRj_ln zAuyfd8Oodq0@EpaLg_@g4DWsf<)<;W**E5uor~Th2)1+Q&rJRWQ~7B(Ju?NRV|Zrr zNoFIC>Ey@o%oLc8>6ytpp-g@PrY`Vj8fx)*Emf{Wtms`PNhFrkHwwHOsgCQi9+Ss? ziyX#s-R1T+P&z;HhSkN=S=6vPefPsZ9eEoo3_aQc;W~~zy864a@FiWDSeRB%v%tFb zoQs#&EUm2RNT%YgyCvSh#Mq*CQffXaf3JR6D(5fi67kisXeyhGb2U&C zZ*8Y|uH>EgrIAEiZgFd7)ylMcCec|->abv2tR)+zp41}6Rvsspiyl`Qorkz0ZA~2! zZrx`RQPIw=+d{jmor^kB?H#UctH^@FNbHPww7g)4Yr-Huw{?-0R-U3Mj8=1wg@)0S zh=rEn3c0ZUB+|S7WRHLS$=>|>lQ?FfvSw2e`4vhe_eS!IBPA>>iyHEJ#52SzEQ&I38^_cYj{f&D~kpf^+xhH{{&C zdF?rOXJNDU*`ICQxrE$CUbrvMR|*LpHZCM(OkKFk*W&8g3YUxI{%JvXkheSCE96GI zJBQpos{Q8m5gv>M*{;H4Z$XdY!O3(S9{c=kQP_>-{;^kYlFP{NRPy)c_bs0LU0qDx zema8enWAuCQ74j4BhZP2WW zRhU4aHFA2d!oN?KTFY|Pzbt4@%IONWcV|{v*o9Skc3hPn-Bo2_Cspa$HDzOSI;6^i zZb-!x`i+YAwvXE7_7N44wuLUaN2gNh)s<9ch81G4yl$h?r?YV4bGry9&Z}c^_PDzP zCnh(?o=v~fr@>cxG;`uS8h1K2w@Ft@Tgq`?72{D2LiDKy*_Bfb65$LJ#Fpw;W{jX? z+yexODr|z4UJb9Zpt-3S??$F}`Q$mjK`CywBDlwv@@O?GIe98#xyCF{#MpcL)W0+?_+gPOpx_o8;;=ya@#zh&L_MnRxFmVy41QrXUHg4yS;W z-}!hD@;f3wimOv9q~vr^p1Xs*&!^+^Ov~TMlhh))I>(V;+5HJ|nN|%->zubLKPhJI?(5dHrVo z?!s=I!CW%?{IgP`TM;3 zN>7fftMuGo&{KM{G99JoUVrNpc9Z!Dc=eL`ocvC*aDRRu>BDe!kp+yL9@1-XfUEiR zk6tPHx>~k(^!hV@Gw1b<`G1_(HRkUw=o#|~xgDd|UXOm!i)PRib9zOuG;*yV7HceW z>o&XJqeIN@^zII``@K5D>|T$qFuT*cBlOsx+YM$3g`HsTJ`calCHPo9mz3j^xx0KV z?$z~W|J1YNbM1C_d)esxPA|L1uglA0f#Fa=XG$d{RQ1y?!KZ)z6T?%Tm-2>D%HdWTmhm)=*bo6F&N zbaXlUeY?6GRzYW%v)A7`{vBRAfnr@=n&a2$W%v7adwC3xjxWQY?d06-Rvn3ZZ-A>w z<1=tIq4~O+?9A-~-5KyVGk@pR4W|Ftrz1@7_U#JO1nuzMPKGy(7O1bnnaU{M>tTx;^)f{0`4^U%IPv?{s%^`SCeEm%p>X zn)w9nXZg{d7R>F&+<%hSf#vLSx-NHAw$pOQ7Is$!dovwX!JfP>s$jqFoC@N-%9-CG zx&NrJD{}A6?Syjo|| z+AAkbTFpa(70HgaifFubQhOra*bz-7C#`N=Gih?g*N-z{cxS!V%Fi4F6zDGaGhLVD>?6F`|egdxUMcv zU~gBf^g%M=I=KPsSxZH*o^{b>1jBW5#Y$db1(BUxGmQJ6UMZ1IxK6IOVTfG;w&^v@ zd~3avYnTP5W4KaGU^<2?#RR8QG@;DOH9_fY={3xJ^3(a1Vtf+9pPiLiOjn8tO2=@e z7@uS|X7XdWQcPevrYpsGCzQ!gm#tw|^aMxggF{!0NLFx|ExAf3v#aTqV!RDaemc4K zm~T2_!7f`#CtN32%=t0G3jU_6z5uXQo^iXNN7#}r(4-2TnOK>!)H9j+e-y5htFB_? z8I^p~IKR8%YdR}PYOD14;zPRZs(rrJ>EswQFrDHV%8cm((_oW?S0fC{&z2rz z`sAncV@#if@aN8rF@w@E9Ao+>4GzgvUAb32rY|T@YEVc zC=$YTa^>r5{{4I>$Ew~HukF93#;V~uxw7D{pVO2!*%*c?<}*>p_LOx_vFq!X@_>un(FOF~6gtdr{` zrMDZAp(pgv6_dkfRCC%w_#=EqHS=Ur=nSC+LJNcz2rbaVEbxgwqgrCsafWgJ^)S2U z7k9hyHH&7<9A7?uM)i_vMBUt)CFAo+-T8O;TyC-24WG*`W}Wc4+~U?@uez(z1v4F8 z@e~Z%37^XipUd^|*%icf)zd5CbGd3R&G&h&x&@o{32{|>QeWHjGZVhn(LJW=%v4}H zhBH%v=@gw%%04p@oKDe%GBX`P>1^p|CVcWU6hCzC+bg&9-B2#QB)m^TnRLSEa=l(t z*qF9Y7mOrSeI>)^a{b;1>EyEx{tiu@ZK-D+YU`E;K5tBRtctDZo4~Gha3pJmpN-c=);t@4c91wBIeTyE!lDwi!D*2yui@AFZed>73>ouxH1a&y`FUsA5E z(&LK{>9S)nU+Z*oj2W0t@eF0gbb;v<9U69`T;X%MH9qd{j8#p?nEn;!q+|H>lTR`m z$zwVlqoCsGZjn-xJ6Wd{=&~(X5JDvQKM!GB3V`-vhtXnrh;>ZhpVl zv+1B^LjMy{cWO_>R$A39BhdG9cAayrWsSO3#aG?^Q{wh^;@5wOod-JcH=a-2L=|tZ zMvNZnq%+_Ue(a;-t^VsNPCtjg=}6-Cb>hp9BmboizvErvDxCOnKO?@k6MyE(#Oc*P z2b_Ywos-V(Z=mnz@CSSwIlzg3@*n7vb^MQ!PClzA)uT_*@xMe4cG7S9GWt{}eurJi zXJ03N_?g7*@5B%IGxBgJzNHlX03H7((n+W4!O`gY9hW^WBAxpk{+FL5{vd~cN`LBO ziW6UYI&ssS_|vdeA8m()#}aq26F;8v+S;C{N>rs2|DErWPMu1p>XKK86I&C?da-fR zullRh%b^l$m5hCq`f~Wy=bT5(VSsSyIixe($?4#t&PLbcIrx&L*A5;VMZexj|Fb)x&jN%gyJELdD!%F!Nn^H(wkCW7d9lO) zDs^GaapDKxgRF4)?;VdmSH+j?g@2XkbAt zUjPWB&S2xTud4ri7QI$tah;#A(e3CN>eN~&vACny^IJ|nr;S8kB(bC;{CQ6N0I^k_ z#9CHANq=Z7YeK7^nN6vb{lV6V>aQ}f{265|-B`DPPa;<@`xQH+O%isQz$V>ai7z?9 z-uGGZn(p_q@z(H5uyacHd#?C?OZdZd|K^H6@pbrfbpPgxFM9{RW1pIJW6;lc4*V+R z()~}(U;j(o1uEViK>E7>nf|7f`9ddt{wtaOr)H|y{~{G{4IIvKo&Klh#4CvVxf4H% zK1BCFH3ytU+%KH?y|9Pwf2O~A0&y2R@q^|do%*fW?Mig%M+k#`7k7grpgdHMYa2nm#(5+Eg@?6RH)5-{c&pb(Unr7Tt>h_cw$g`*S|&gmktg>w*i zuaP2$0-`Nduo|jJDFULUh$twFZKdpptUs&;5&OAw=a;;D&YQXClX>%-nS1Z|&3pU- zmLs{O@lAG?99}CFK9xpwBiTpx^e3Sl!8O*Y`jdRL3E(A%O>POj>Q8dA#eZ43d_KnW zlwHJMr#x>A^QitL3x5hDPGTEagV&$rFJ+BVlMHQCQKLV}{_`P!7HrJMrt(LZZ^^Z? z_E#OY%~-$JpVBWrhrQ;wDUfHW{*- z{a$~PRk9x5kJa8H z#ATCEhCV~%?jjl=$I)NnOYE^XJJ6{9B-b9qm(L#7*=aV7>QC}ja?ETI zY;0$lNA)LJ{R{lJ1he1sG^#(zeiHYsLXGV*phka6&(45sbKK-5=v9A`GaKM**wcLz9$sgnUQU(tX^R8GoGI#}_Z#DO#3_efJL-!R;S%JTk z7wccss75!U1-&4$Px$7;HM$WEUJltM*x2plu)nuNyCp8~Ic}<{5w9E3GC9ND%HJ+z zJ^FbaU3d!izVgqz!S&t}OWM2{NXh_=euL(041d)(*ZbY{~hcD}9igWDI-&>;1az3K1@XPGO-&>-p>5xwyH^043ulJVdFKh4* zJ8r*36TEIj6C{rRaoki&TvRurjW^(n7GQZpX;e3&_M$~cg&I@2n8wHP0nvbCLdiAJ z93RIYFU3DDl)9^+@o|hE$3MY~^V)s3k8V2I31O1XQt>P9qQ z)_&S?Q}qD7>PB?G15KvH?Dspa+YFY#jN&CJtu zy?ox;bmAdMAg zx?xk*lK=8qg561dsBYMFYpLD;Ic&1OMepLmbMx_ezgTuh8kcW2UDOr-s!;gNG%hYS z_0f3zuY|&jXk5M9)agz5*Mu4~mFKH&*!0MjfUg}k*-Pl1ZrIf9Tzsi3Ec;#>ohLnX z5dJqpjhV*#R5xt8pf|o^Q~5%y8#Z-?bK}4NaP}MYL%;9X^n`cd@_B|WB)3&JZ0hWN z_*u#~6~?+@Q-_(u2FmN@(>vX;sa4D2KE}rz#JXYArUYI`$N#M|)(x9_k@~XP%5#24 z?{veac6}QzIZapmV5}Q9eS>IYJ;zOsoRiZHo2q&qF4}=*Q+KKxHuctQxa1a=E&Al+ z_;X@qS)W+;_h@_^3!a7NIBe?ufL`O6?#)`P!~k=(>2!m0I1X>9{2A&=b;G9fB^K0= z*kW0)(+!)p)Pj|K!WtLTINh+ReK)}yJ8ZTtB@cc6Ohxx>6Xo@vpm(}KUdeu&DsMcU zUiXzAOHJ8kp3kB8^>t(hyt(q6@6!AEul0ntP(EWnz0(bw+D#r>$wjPr6^+vko7&G9 z+sa|nTy#3t4If)b;>{Hqx>3u`h;jTe){P9_Smuv)qn6v!J&ccaqn4W%lBcSN!Pr|^ z54nOR_H~MN!vw8%!&^IU%h-qio|1KGB|J~ZpE?lhh6#FYgtu|r6sPd@drI)gaQwD9 z&kEM*?;AmvYIr;4D_6kvz7cGd`SXplfy?Mr&x3lz%6>Gi%5>^=p*(erEcex8@| z;p7~aXtNLhko$g-bw%=-a}?h0^UyT-x0Id00(5P#nYs!qbYJDydCHT(NU(D4Yohw^@p#=2p$&aZ)s&SH1$ zqS5qTKlHv4WJ@i}IIN7?iQ_m@ z&bhC{rc^#}eH?H4D_r7=mCdDb^<{$1a-L|G*y2}coNkz4(GIxOA?q9@G1B`+)=AFX zvR1J(Gimg`5j1=p-rr#}QqIHah6&m>gAZ^#YubE*=AXOc5AY%#KVF`z_l;l(IcbYM z-%IcFGoQ8Cfy$Tgthm0mHh>ROewXN{pMTyQIJGCXomlw$M$qB{yhJG1i$*j~H%u`7 zF*rF?YyS7!>{_Cp{~aTP_Z5APbtaQfgU7m&!Q*+{@3$Ge@6Y&)*NxBaV?CuhvhQMk zXYT3pKb(h_*rf7<)R)(d@Kc@M6-5#IeH_)z6VAJS`F!ry-Ym;GZ!CulU^!g1^1!yGn6oOv9Vv*fH5 z9l?rf>pdK^5MHi)$N_w>8&?PEPV8nt&QANp^6)s1k0 z431jwiAntkI3|#nW(VNo?5b_^KOWiwJ*|!-=}Hm}jKMrR_oZ zXva`>=NVL&weVcj;9(!k%(&;~Y!d8s2<8^#_7kbr=@E&4fCnztjq*vVtmp=!esJxWe#c^zNC!Cj9DY+5H@x}@` zu@@_!M5FZ;Hl()fT@IV_pU|srgwI}p->v+JXrt;z*o<7Z70QoZrB~euAKn7LNBOap z^r{=-Eob1998c6|k6t&zZgLKj{rElfsvBV%4YBtsA5lo}b>k?SU^#2CW0z=reVr8D zpvJ^TNZ$EiYlW C_BLh! diff --git a/src/makeb32.env b/src/makeb32.env deleted file mode 100644 index 8e318d0536..0000000000 --- a/src/makeb32.env +++ /dev/null @@ -1,67 +0,0 @@ -# Common settings for Borland 32-bit compilation (makefile.b32 files) - -WXDIR = $(WXWIN) -CFG = $(WXDIR)\src\msw\wxwin32.cfg -WXLIBDIR = $(WXDIR)\lib -WXINC = $(WXDIR)\include -WIN95FLAG = -D__WIN95__ -D__WINDOWS__ - -!ifndef FINAL -FINAL=0 -!endif - -!if "$(FINAL)" == "0" -OPT = -Od -DEBUG_FLAGS= -v -DWXDEBUG=1 -D__WXDEBUG__ -DUSE_DEFINE -!else -OPT = -O2 -DEBUG_FLAGS = -DUSE_DEFINE -!endif - -!ifndef DLL -DLL=0 -!endif - -# Target WXMAKINGDLL WXUSINGDLL WXBUILDDLL -# wxWin DLL 1 0 1 -# wxWin STATIC 0 0 0 -# App use wxWin DLL 0 1 0 -# DLL use wxWin DLL 0 1 1 -# DLL use wxWin STATIC 0 0 1 -# - -!if "$(WXMAKINGDLL)" == "1" -DLL_FLAGS= -DWXMAKINGDLL=1 -D_WINDLL -WXLIB= $(WXLIBDIR)\wx200.lib - -!else - -LINK_FLAGS= /Tpe /ap /c - -!if "$(WXUSINGDLL)" == "1" -DLL_FLAGS= -DWXUSINGDLL=1 -WXLIB= $(WXLIBDIR)\wx200.lib -!else -DLL_FLAGS= -WXLIB= $(WXLIBDIR)\wx32.lib -!endif - -!endif - -!if "$(WXBUILDDLL)" == "1" -DLL_FLAGS= $(DLL_FLAGS) -D_RTLDLL -LINK_FLAGS= /Tpd /ap /c -!endif - -CPPFLAGS=$(DLL_FLAGS) @$(CFG) - -DUMMY=dummy - -SRCSUFF = cpp -OBJSUFF = obj - -.$(SRCSUFF).obj: - bcc32 $(CPPFLAGS) -c {$< } - -.c.obj: - bcc32 $(CPPFLAGS) -P- -c {$< } diff --git a/src/makebcc.env b/src/makebcc.env deleted file mode 100644 index 1bbebd6249..0000000000 --- a/src/makebcc.env +++ /dev/null @@ -1,35 +0,0 @@ -# Common settings for Borland 16-bit compilation (makefile.bcc files) - -WXDIR = $(WXWIN) - -CFG = $(WXDIR)\src\msw\wxwin.cfg -WXLIBDIR = $(WXDIR)\lib -WXINC = $(WXDIR)\include - -!ifndef FINAL -FINAL=0 -!endif - -!if "$(FINAL)" == "0" -LINKFLAGS=/v/Vt /Twe /L$(WXDIR)\lib;$(BCCDIR)\lib -OPT = -Od -DEBUG_FLAGS= -v -D__WXDEBUG__ -!else -LINKFLAGS=/Twe /L$(WXDIR)\lib;$(BCCDIR)\lib -OPT = -O2 -DEBUG_FLAGS = -!endif -CPPFLAGS=$(DEBUG_FLAGS) $(OPT) @$(CFG) - -CPPFLAGS=$(DEBUG_FLAGS) $(OPT) @$(CFG) - -WXLIB= $(WXLIBDIR)\wx.lib - -SRCSUFF = cpp -OBJSUFF = obj - -.$(SRCSUFF).obj: - bcc $(CPPFLAGS) -c {$< } - -.c.obj: - bcc $(CPPFLAGS) -DUSE_DEFINE -P- -c {$< } diff --git a/src/makeenvs/linux.env b/src/makeenvs/linux.env deleted file mode 100644 index 9d4e2aec27..0000000000 --- a/src/makeenvs/linux.env +++ /dev/null @@ -1,117 +0,0 @@ -# generic.env -# Linux/generic -# -# Common makefile settings for wxWindows programs -# This file is included by all the other makefiles, thus changes -# made here take effect everywhere (except where overriden). -# RCS-ID: $Id$ -# -########################### Programs ################################# - -# Replace this with your own path if necessary -WXDIR = $(WXWIN) - -# C++ compiler -CC = g++ - -# C compiler -CCC = gcc - -# Compiler for lex/yacc .c programs -CCLEX = $(CCC) - -LEX = lex -YACC = yacc -MAKE = make -AROPTIONS = ruv -RANLIB = ranlib - -############################ Switches ################################# - -# Debug/trace mode. 1 or more for debugging. -DEBUG = 0 -GUI = -D__WXSTUBS__ -D__LINUX__ -D__UNIX__ -GUISUFFIX = _stubs - -########################## Compiler flags ############################# - -# Misc options -OPTIONS = -D__WXDEBUG__ -COPTIONS = -DEBUGFLAGS = -ggdb -INCLUDE = -WARN = -Wall -Wno-unused # -w -CWARN = -Wall -Wno-unused # -w -OPT = # -O2 - -############################ Includes ################################# - -# Compiler or system-specific include paths -COMPPATHS = -XINCLUDE = -I/usr/openwin/include -I/usr/include/X11 -I/usr/include/Xm \ - -I/usr/include/X11/Xm -I/usr/include -XLIB = -L/usr/local/X11/lib -L/usr/openwin/lib -L/usr/X11/lib -L/usr/X11R6/lib - -############################ Libraries ################################ - -COMPLIBS = -lstdc++ -GUILDLIBS = -lwx_stubs $(COMPLIBS) -lXm -lXmu -lXt -lXpm -lX11 -lm - -############################# Suffixes ################################ - -# Change cpp to c if you want to use main.c instead of main.cpp. -# Edit wx_setup.h accordingly (USE_C_MAIN=1) - -OBJSUFF =o -SRCSUFF =cpp -MAINSUFF =cpp - -####################### No changes below this line #################### - -WXINC = $(WXDIR)/include -WXLIB = $(WXDIR)/lib/libwx$(GUISUFFIX).a -INC = -I$(WXINC) -I$(WXDIR)/src/png -I$(WXDIR)/src/zlib $(COMPPATHS) - -# Directory for object files -OBJDIR = objects$(GUISUFFIX) - -CPPFLAGS = $(EXTRACPPFLAGS) $(XINCLUDE) $(INC) $(OPTIONS) $(GUI) $(DEBUGFLAGS) $(WARN) $(OPT) -CFLAGS = $(EXTRACFLAGS) $(XINCLUDE) $(INC) $(COPTIONS) $(GUI) $(DEBUGFLAGS) $(CWARN) $(OPT) -LDFLAGS = $(EXTRALDFLAGS) $(XLIB) -L$(WXDIR)/lib -LDLIBS = $(EXTRALDLIBS) $(GUILDLIBS) - -# Clears all default suffixes -.SUFFIXES: .o .cpp .c - -.c.o : - $(CCC) -c $(CFLAGS) -o $@ $< - -.cpp.o : - $(CC) -c $(CPPFLAGS) -o $@ $< - -.C.o : - $(CC) -c $(CPPFLAGS) -o $@ $< - -####################### Targets to allow multiple GUIs #################### - -dummy: - echo Use a target: one of motif, stubs - -stubs: - make -f makefile.unx all GUI='-D__WXSTUBS__ -D__LINUX__ -D__UNIX__' GUISUFFIX='_stubs' GUILDLIBS='-lwx_stubs $(COMPLIBS) -lXm -lXmu -lXt -lX11 -lm' - -motif: - make -f makefile.unx all GUI='-D__WXMOTIF__ -D__LINUX__ -D__UNIX__' GUISUFFIX='_motif' GUILDLIBS='-lwx_motif $(COMPLIBS) -lXm -lXmu -lXt -lXpm -lX11 -lm' - -gtk: - make -f makefile.unx all GUI='-D__WXGTK__ -D__LINUX__ -D__UNIX__' GUISUFFIX='_gtk' GUILDLIBS='-lwx_gtk $(COMPLIBS) -lXm -lXmu -lXpm -lX11 -lm' - -cleanstubs: - make -f makefile.unx clean GUI='-D__WXSTUBS__ -D__LINUX__ -D__UNIX__' GUISUFFIX='_stubs' GUILDLIBS='-lwx_stubs $(COMPLIBS) -lXm -lXmu -lXt -lX11 -lm' - -cleanmotif: - make -f makefile.unx clean GUI='-D__WXMOTIF__ -D__LINUX__ -D__UNIX__' GUISUFFIX='_motif' GUILDLIBS='-lwx_motif $(COMPLIBS) -lXm -lXmu -lXt -lX11 -lm' - -$(OBJDIR): - mkdir $(OBJDIR) - diff --git a/src/makeenvs/sgi.env b/src/makeenvs/sgi.env deleted file mode 100644 index f608bd9263..0000000000 --- a/src/makeenvs/sgi.env +++ /dev/null @@ -1,116 +0,0 @@ -# generic.env -# Linux/generic -# -# Common makefile settings for wxWindows programs -# This file is included by all the other makefiles, thus changes -# made here take effect everywhere (except where overriden). -# -########################### Programs ################################# - -# Replace this with your own path if necessary -WXDIR = /home/mon/src/wx20 - -# C++ compiler -CC = CC -n32 -D__SGI__ -D__SGI_CC__ - -# C compiler -CCC = cc -n32 -Xcpluscomm -D__SGI__ -D__SGI_CC__ - -# Compiler for lex/yacc .c programs -CCLEX = $(CCC) - -LEX = flex -YACC = yacc -MAKE = make -AROPTIONS = ruv -RANLIB = echo ranlib not required on SGI - -############################ Switches ################################# - -# Debug/trace mode. 1 or more for debugging. -DEBUG = 0 -GUI = -D__WXSTUBS__ -D__UNIX__ -GUISUFFIX = _stubs - -########################## Compiler flags ############################# - -# Misc options -OPTIONS = -D__WXDEBUG__ # -DDEBUG='$(DEBUG)' # -DWXDEBUG -COPTIONS = -DEBUGFLAGS = -g -INCLUDE = -WARN = -CWARN = -OPT = # -O2 - -############################ Includes ################################# - -# Compiler or system-specific include paths -COMPPATHS = -XINCLUDE = -I/usr/include/X11 -I/usr/include/Xm \ - -I/usr/include/X11/Xm -I/usr/include -XLIB = -L/usr/local/X11/lib -L/usr/X11/lib -L/usr/X11R6/lib - -############################ Libraries ################################ - -COMPLIBS = #-lstdc++ -GUILDLIBS = -lwx_stubs $(COMPLIBS) -lXm -lXmu -lXt -lXpm -lX11 -lm - -############################# Suffixes ################################ - -# Change cpp to c if you want to use main.c instead of main.cpp. -# Edit wx_setup.h accordingly (USE_C_MAIN=1) - -OBJSUFF =o -SRCSUFF =cpp -MAINSUFF =cpp - -####################### No changes below this line #################### - -WXINC = $(WXDIR)/include -WXLIB = $(WXDIR)/lib/libwx$(GUISUFFIX).a -INC = -I$(WXINC) -I$(WXDIR)/src/png -I$(WXDIR)/src/zlib $(COMPPATHS) - -# Directory for object files -OBJDIR = objects$(GUISUFFIX) - -CPPFLAGS = $(EXTRACPPFLAGS) $(XINCLUDE) $(INC) $(OPTIONS) $(GUI) $(DEBUGFLAGS) $(WARN) $(OPT) -CFLAGS = $(EXTRACFLAGS) $(XINCLUDE) $(INC) $(COPTIONS) $(GUI) $(DEBUGFLAGS) $(CWARN) $(OPT) -LDFLAGS = $(EXTRALDFLAGS) $(XLIB) -L$(WXDIR)/lib -LDLIBS = $(EXTRALDLIBS) $(GUILDLIBS) - -# Clears all default suffixes -.SUFFIXES: .o .cpp .c - -.c.o : - $(CCC) -c $(CFLAGS) -o $@ $< - -.cpp.o : - $(CC) -c $(CPPFLAGS) -o $@ $< - -.C.o : - $(CC) -c $(CPPFLAGS) -o $@ $< - -####################### Targets to allow multiple GUIs #################### - -dummy: - echo Use a target: one of motif, stubs - -stubs: - make -f makefile.unx all GUI='-D__WXSTUBS__ -D__LINUX__ -D__UNIX__' GUISUFFIX='_stubs' GUILDLIBS='-lwx_stubs $(COMPLIBS) -lXm -lXmu -lXt -lX11 -lm' - -motif: - make -f makefile.unx all GUI='-D__WXMOTIF__ -D__UNIX__' GUISUFFIX='_motif' GUILDLIBS='-lwx_motif $(COMPLIBS) -lXm -lXmu -lXt -lXpm -lX11 -lm' - -gtk: - make -f makefile.unx all GUI='-D__WXGTK__ -D__LINUX__ -D__UNIX__' GUISUFFIX='_gtk' GUILDLIBS='-lwx_gtk $(COMPLIBS) -lXm -lXmu -lXpm -lX11 -lm' - -cleanstubs: - make -f makefile.unx clean GUI='-D__WXSTUBS__ -D__LINUX__ -D__UNIX__' GUISUFFIX='_stubs' GUILDLIBS='-lwx_stubs $(COMPLIBS) -lXm -lXmu -lXt -lX11 -lm' - -cleanmotif: - make -f makefile.unx clean GUI='-D__WXMOTIF__ -D__LINUX__ -D__UNIX__' GUISUFFIX='_motif' GUILDLIBS='-lwx_motif $(COMPLIBS) -lXm -lXmu -lXt -lX11 -lm' - -$(OBJDIR): - mkdir $(OBJDIR) - diff --git a/src/makeenvs/solaris.env b/src/makeenvs/solaris.env deleted file mode 100644 index fe5fe8f13f..0000000000 --- a/src/makeenvs/solaris.env +++ /dev/null @@ -1,117 +0,0 @@ -# generic.env -# Linux/generic -# -# Common makefile settings for wxWindows programs -# This file is included by all the other makefiles, thus changes -# made here take effect everywhere (except where overriden). -# RCS-ID: $Id$ -# -########################### Programs ################################# - -# Replace this with your own path if necessary -WXDIR = $(WXWIN) - -# C++ compiler -CC = CC - -# C compiler -CCC = cc - -# Compiler for lex/yacc .c programs -CCLEX = $(CCC) - -LEX = lex -YACC = yacc -MAKE = make -AROPTIONS = ruv -RANLIB = ranlib - -############################ Switches ################################# - -# Debug/trace mode. 1 or more for debugging. -DEBUG = 0 -GUI = -D__MOTIF__ -D__LINUX__ -D__UNIX__ -GUISUFFIX = _motif - -########################## Compiler flags ############################# - -# Misc options -OPTIONS = -DSYSV -DSVR4 -fast -COPTIONS = -DSYSV -xCC -DEBUGFLAGS = -INCLUDE = -WARN = -CWARN = -OPT = -O4 -lintl - -############################ Includes ################################# - -# Compiler or system-specific include paths -COMPPATHS = -XINCLUDE = -I/usr/openwin/include -I/usr/include/X11 -I/usr/include/Xm \ - -I/usr/include/X11/Xm -I/usr/include -XLIB = -L/usr/local/X11/lib -L/usr/openwin/lib -L/usr/X11/lib -L/usr/X11R6/lib - -############################ Libraries ################################ - -COMPLIBS = -lgen -ldl -lsocket -lnsl -GUILDLIBS = -lwx_motif $(COMPLIBS) -lXm -lXmu -lXt -lX11 -lm - -############################# Suffixes ################################ - -# Change cpp to c if you want to use main.c instead of main.cpp. -# Edit wx_setup.h accordingly (USE_C_MAIN=1) - -OBJSUFF =o -SRCSUFF =cpp -MAINSUFF =cpp - -####################### No changes below this line #################### - -WXINC = $(WXDIR)/include -WXLIB = $(WXDIR)/lib/libwx$(GUISUFFIX).a -INC = -I$(WXINC) -I$(WXDIR)/src/png -I$(WXDIR)/src/zlib $(COMPPATHS) - -# Directory for object files -OBJDIR = objects$(GUISUFFIX) - -CPPFLAGS = $(EXTRACPPFLAGS) $(XINCLUDE) $(INC) $(OPTIONS) $(GUI) $(DEBUGFLAGS) $(WARN) $(OPT) -CFLAGS = $(EXTRACFLAGS) $(XINCLUDE) $(INC) $(COPTIONS) $(GUI) $(DEBUGFLAGS) $(CWARN) $(OPT) -LDFLAGS = $(EXTRALDFLAGS) $(XLIB) -L$(WXDIR)/lib -LDLIBS = $(EXTRALDLIBS) $(GUILDLIBS) - -# Clears all default suffixes -.SUFFIXES: .o .cpp .c - -.c.o : - $(CCC) -c $(CFLAGS) -o $@ $< - -.cpp.o : - $(CC) -c $(CPPFLAGS) -o $@ $< - -.C.o : - $(CC) -c $(CPPFLAGS) -o $@ $< - -####################### Targets to allow multiple GUIs #################### - -dummy: - echo Use a target: one of motif, stubs - -stubs: - make -f makefile.unx all GUI='-D__WXSTUBS__ -D__LINUX__ -D__UNIX__' GUISUFFIX='_stubs' GUILDLIBS='-lwx_stubs $(COMPLIBS) -lXm -lXmu -lXt -lX11 -lm' - -motif: - make -f makefile.unx all GUI='-D__WXMOTIF__ -D__LINUX__ -D__UNIX__' GUISUFFIX='_motif' GUILDLIBS='-lwx_motif $(COMPLIBS) -lXm -lXmu -lXt -lX11 -lm' - -gtk: - make -f makefile.unx all GUI='-D__WXGTK__ -D__LINUX__ -D__UNIX__' GUISUFFIX='_gtk' GUILDLIBS='-lwx_gtk $(COMPLIBS) -lXm -lXmu -lXpm -lX11 -lm' - -cleanstubs: - make -f makefile.unx clean GUI='-D__WXSTUBS__ -D__LINUX__ -D__UNIX__' GUISUFFIX='_stubs' GUILDLIBS='-lwx_stubs $(COMPLIBS) -lXm -lXmu -lXt -lX11 -lm' - -cleanmotif: - make -f makefile.unx clean GUI='-D__WXMOTIF__ -D__LINUX__ -D__UNIX__' GUISUFFIX='_motif' GUILDLIBS='-lwx_motif $(COMPLIBS) -lXm -lXmu -lXt -lX11 -lm' - -$(OBJDIR): - mkdir $(OBJDIR) - diff --git a/src/makefile.bcc b/src/makefile.bcc deleted file mode 100644 index eec6ab1157..0000000000 --- a/src/makefile.bcc +++ /dev/null @@ -1,97 +0,0 @@ -# -# File: makefile.bcc -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile : Builds wxWindows library wx.lib for Windows 3.1 -# and Borland C++ 3.1. This makefile calls makefile.bcc in msw and -# base subdirectories. - -!if "$(BCCDIR)" == "" -!error You must define the BCCDIR variable in autoexec.bat, e.g. BCCDIR=d:\bc4 -!endif - -!if "$(WXWIN)" == "" -!error You must define the WXWIN variable in autoexec.bat, e.g. WXWIN=c:\wx -!endif - -!ifndef DEBUG -DEBUG=0 -!endif - -!ifndef FINAL -FINAL=0 -!endif - -# Change these if needed. -WXDIR = $(WXWIN) - -!include $(WXDIR)\src\makebcc.env - -!if "$(FINAL)" == "0" -OPT = -Od -DEBUG_FLAGS= -v /DDEBUG=$(DEBUG) # -v # -v for debugging info -!else -OPT = -O2 -DEBUG_FLAGS = /DDEBUG=$(DEBUG) -!endif - -BOR_VER = 4 - -#!if "$(BOR_VER)" == "3.1" -#BCCDIR = d:\bc3 -#!elif "$(BOR_VER)" == "4" -#BCCDIR = d:\bc4 -#!endif - -WXBASEINC = $(WXDIR)\include\base -WXINC = $(WXDIR)\include\msw -PROLOGIOINC = $(WXDIR)\utils\prologio\src -XPMINC=$(WXDIR)\contrib\wxxpm\libxpm.34b\lib - -all: wxwin.cfg - cd $(WXDIR)\src\msw - make -f makefile.bcc -DCFG=$(CFG) -DWXDIR=$(WXDIR) DEBUG=$(DEBUG) -DDEBUG_FLAGS=$(DEBUG_FLAGS) -DOPT=$(OPT) -DFINAL=$(FINAL) - cd $(WXDIR)\src - -clean: - erase wxwin.cfg - cd $(WXDIR)\src\msw - make -f makefile.bcc clean - cd $(WXDIR)\src - -wxwin.cfg: makefile.bcc - copy &&! --H=$(WXDIR)\src\borland.pch --2 --P --d --w-hid --w-par --w-pia --w-aus --w-rch --ml --Od --WE --Fs- --Vf --I$(WXBASEINC);$(WXINC);$(PROLOGIOINC);$(XPMINC);$(BCCDIR)\include;$(WXDIR)\contrib\fafa;$(WXDIR)\contrib\itsybits;$(WXDIR)\utils\rcparser\src - --L$(BCCDIR)\lib --Dwx_msw -! wxwin.cfg -!if "$(BOR_VER)" == "3.1" - echo -Ff=4 >>wxwin.cfg -!elif "$(BOR_VER)" == "4" - echo -Ff=512 >>wxwin.cfg - echo -dc >>wxwin.cfg -!endif - - -# -O was: -Oxt - diff --git a/src/makefile.dos b/src/makefile.dos deleted file mode 100644 index 4e5afd4ce7..0000000000 --- a/src/makefile.dos +++ /dev/null @@ -1,51 +0,0 @@ -# -# File: makefile.dos -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile : Builds wxWindows library wx.lib for Windows 3.1 -# You can invoke the makefile in this directory, wx/src, or -# equally from wx/src/msw. This makefile was created to be -# consistent with other makefiles which were appearing this -# directory. - -# Arguments: -# -# FINAL=1 argument to nmake to build version with no debugging info. -# DEBUG=1 argument to nmake to build DEBUG version (memory checking, tracing) -# -# Set WXDIR to the wxWindows directory if env. variable WXWIN not set. -# -WXDIR = $(WXWIN) -THISDIR = $(WXDIR)\src\msw -WXLIB = $(WXDIR)\lib -WXINC = $(WXDIR)\include\msw -WXBASESRC = $(WXDIR)\src\base -WXBASEINC = $(WXDIR)\include\base - -!ifndef FINAL -FINAL=0 -!endif - -!ifndef WXDEBUG -WXDEBUG=0 -!endif - -all: - cd $(WXDIR)\src\msw - nmake -f makefile.dos FINAL=$(FINAL) WXDEBUG=$(WXDEBUG) - cd $(THISDIR) - -clean: - cd $(WXDIR)\src\msw - nmake -f makefile.dos clean - cd $(THISDIR) - -cleanall: - cd $(WXDIR)\src\msw - nmake -f makefile.dos cleanall - cd $(THISDIR) diff --git a/src/makefile.vc b/src/makefile.vc deleted file mode 100644 index ca8985bf2e..0000000000 --- a/src/makefile.vc +++ /dev/null @@ -1,35 +0,0 @@ -# -# File: makefile.nt -# Author: Julian Smart -# Created: 1997 -# Updated: -# Copyright: (c) 1997, Julian Smart -# -# "%W% %G%" -# -# Makefile : Builds wxWindows library wx.lib for VC++ (32-bit) -# Arguments: -# -# FINAL=1 argument to nmake to build version with no debugging info. -# dll builds a library (wxdll.lib) suitable for creating DLLs -# * Note that the dll target is experimental - see docs/dll.txt. -# -!include - -THISDIR=$(WXWIN)\src - -all: - cd msw - nmake -f makefile.vc - cd $(THISDIR) - -clean: - cd msw - nmake -f makefile.vc clean - cd $(THISDIR) - -cleanall: - cd msw - nmake -f makefile.vc cleanall - cd $(THISDIR) - diff --git a/src/makeg95.env b/src/makeg95.env deleted file mode 100644 index 236b95ae28..0000000000 --- a/src/makeg95.env +++ /dev/null @@ -1,165 +0,0 @@ -# makeg95.env -# Common makefile settings for wxWindows programs -# This file is included by all the other makefiles, thus changes -# made here take effect everywhere (except where overriden). -# -# An alternative to editing this file is to create a shell script -# to export specific variables, and call make with the -e switch -# to override makefile variables. See wx/install/install.txt. -# And you can override specific variables on the make command line, e.g. -# -# make -f makefile.unix WXDEBUG='' -# -# You may prefer to use the GNU configure script than raw makefiles - -# see contrib/wxshlib. -# - -########################## Compiler ################################## - -# C++ compiler -# For AIX/CSet++: use CC = xlC -# For IRIX: use CC = CC -# CC = gcc-2.6.2 -CC = gcc - -# C compiler for pure C programs -# Typical: CC=g++ , CCC=gcc -# CC=cl386 /Tp, CCC=cl386 -# -# (Used only for XView, file sb_scrol.c) -# -CCC = $(CC) - -# Compiler used for LEX generated C -CCLEX=gcc - -MAKE=make - -# LEX -LEX=flex -t -L - -# YACC. yacc or bison -# YACC=yacc -YACC=bison - -# Settings for Cyginw/Mingw32 -RESCOMP=windres.exe -RCINPUTSWITCH=-i -RCOUTPUTSWITCH=-o -RCINCSWITCH=--include-dir -RCDEFSWITCH=--define - -RESFLAGS=$(RCINCSWITCH) $(WXDIR)/include $(RCDEFSWITCH) __WIN32__ $(RCDEFSWITCH) __WIN95__ $(RCDEFSWITCH) __GNUWIN32__ - -########################## Compiler flags ############################# - -# Miscellaneous compiler options -OPTIONS= # -D__MINGW32__ # -D__EGCS__ - -# Debugging information -# AIX: comment out. -# IRIX: -g3 -DEBUGFLAGS = -ggdb -D__WXDEBUG__ - -WIN95=1 - -ifeq ($(WIN95),0) -# With 3.50, Win95 will use your existing icons to show smaller ones. -# With 4.0, you'll have to follow Win95 procedures for icons or you'll get the -# default Windows icon. -APPVER=3.50 -WINVERSION=-DWINVER=0x0350 -D__GNUWIN32__ -D__WIN32__ # Generic WIN32 -else -APPVER=3.50 # 4.0 -# This means 'enable Windows 95 features' (in wxWindows and in VC++ 4.0). -WINVERSION=-DWINVER=0x0400 -D__WIN95__ -D__GNUWIN32__ -D__WIN32__ -endif - -CPU=i386 - -# Suffixes -OBJSUFF=o -SRCSUFF=cpp -LIBPREFIX=lib -LIBSUFF=a -EXESUFF=.exe -RESSUFF=res -RSCSUFF=rsc - -# Warnings -WARN = -Wall - -# Which GUI, -Dwx_xview or -Dwx_motif (don't change this) -GUI = -D__WXMSW__ -D__WINDOWS__ - -# Optimization -# OPT = -O -OPT = - -# Options for ar archiver -# AROPTIONS = crs # For IRIX and Solaris (both SYSVR4). -AROPTIONS = ruv -RANLIB = ranlib - -# Compiler libraries: defaults to GCC libraries -#COMPLIBS=-lg++ -#for win95 -#COMPLIBS=-lgcc - -# Compiler or system-specific include paths -COMPPATHS= - -########################## Directories ############################### - - -WINLIBS=-lstdc++ -lgcc \ - -lwinspool -lwinmm -lshell32 -loldnames \ - -lcomctl32 -lctl3d32 -lodbc32 -ladvapi32 - -# Shouldn't need to change these... -WXSRC=$(WXDIR)/src/msw -WXINC=$(WXDIR)/include -WXBASESRC=$(WXDIR)/src/common -WXLIB=$(WXDIR)/lib/$(LIBPREFIX)wx.$(LIBSUFF) -INC = -I$(WXINC) -I$(WXDIR)/src/png -I$(WXDIR)/include/wx/msw/gnuwin32 -I$(WXDIR)/src/zlib $(EXTRAINC)$(COMPPATHS) -RCLFLAGS=-cpp "cpp -lang-c++ -DWIN32 -D_WIN32 -DRCL_INVOKED -I$(WXWIN)\include" - -#LIBS = -lctl3d32 $(WXLIB) $(WINLIBS) $(COMPLIBS) -LIBS = $(WXLIB) $(WINLIBS) $(COMPLIBS) - -WINFLAGS=-D_X86_=1 -DWIN32 -D_WIN32 $(WINVERSION) - -#for windows 95 -XINCLUDE=$(WINFLAGS) -XLIB=$(LIBS) -LDLIBS = $(LIBS) - -# Directory for object files (don't change) -OBJDIR = objects$(GUISUFFIX) - -# You shouldn't need to change these... -CPPFLAGS = $(XINCLUDE) $(INC) $(OPTIONS) $(GUI) $(DEBUGFLAGS) $(WARN) $(OPT) -CFLAGS = $(XINCLUDE) $(INC) $(OPTIONS) $(GUI) $(DEBUGFLAGS) $(WARN) $(OPT) -WINDOWSLDFLAGS=-Wl,--subsystem,windows -mwindows -LDFLAGS = $(WINDOWSLDFLAGS) -L$(WXDIR)/lib - -.SUFFIXES: .rc .$(RESSUFF) .$(RSCSUFF) .cpp .c - -# Set these in a batch file instead e.g. install/cygnus.bat -# RCINCLUDE="$(WXDIR)/include/msw;$(WXDIR)/contrib/fafa;$(WXDIR)/contrib/itsybits"; \ -# CPLUS_INCLUDE_PATH=/usr/H-i386-cygwin32/i386-cygwin32/include:/usr/H-i386-cygwin32/lib/gcc-lib/i386-cygwin32/cygnus-2.7.2-961023/include:$(WXDIR)/include/common:$(WXDIR)/include/msw:$(WXDIR)/contrib/fafa:$(WXDIR)/contrib/itsybits; \ -# export CPLUS_INCLUDE_PATH RCINCLUDE; \ - -.rc.$(RESSUFF): $< $(WXDIR)/include/msw/wx.rc - $(RC) $(RESFLAGS1) $< $(RESFLAGS2) $*.$(RESSUFF) $(RCLFLAGS) - -.$(RESSUFF).$(RSCSUFF): $< - $(CVTRES) $< $*.$(RSCSUFF) - -.$(SRCSUFF).$(OBJSUFF): - $(CC) -c $(CPPFLAGS) -o $@ $*.$(SRCSUFF) - -.c.o: - $(CC) -c $(CPPFLAGS) -o $@ $*.c - - diff --git a/src/makelib.env b/src/makelib.env deleted file mode 100644 index 9b320bcd8b..0000000000 --- a/src/makelib.env +++ /dev/null @@ -1,14 +0,0 @@ -# Makes a library in Unix (Motif) - -# Replace this with your own path if necessary -WXDIR = $(WXWIN) -include $(WXDIR)/src/make.env - -all: $(LIBTARGET)$(GUISUFFIX).a - -$(LIBTARGET)$(GUISUFFIX).a : $(OBJECTS) - ar $(AROPTIONS) $@ $(OBJECTS) - $(RANLIB) $@ - -clean: - rm -f $(OBJECTS) $(LIBTARGET)$(GUISUFFIX).a core diff --git a/src/makelib.vc b/src/makelib.vc deleted file mode 100644 index 8b5b459d80..0000000000 --- a/src/makelib.vc +++ /dev/null @@ -1,42 +0,0 @@ -# -# File: makelib.vc -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: (c) Julian Smart -# -# Makefile : Builds a library for a utility -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -!include $(WXDIR)\src\makevc.env - -all: $(LIBTARGET) - -wx: - cd $(WXDIR)\src\msw - nmake -f makefile.vc FINAL=$(FINAL) - -wxclean: - cd $(WXDIR)\src\msw - nmake -f makefile.vc clean - -$(LIBTARGET): $(OBJECTS) - -erase $(LIBTARGET) - $(implib) @<< --out:$(LIBTARGET) --machine:$(CPU) -$(OBJECTS) -<< - -clean: - -erase $(LIBTARGET) - -erase $(OBJECTS) - -erase *.exe - -erase *.res - -erase *.map - -erase *.sbr - -erase *.pdb diff --git a/src/makemsc.env b/src/makemsc.env deleted file mode 100644 index f21ae55fec..0000000000 --- a/src/makemsc.env +++ /dev/null @@ -1,71 +0,0 @@ -# -# File: makemsc.env -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Include file for MS VC++ makefiles -# Arguments: -# -# FINAL=1 argument to nmake to build version with no debugging info. -# DLL=1 builds a library (wxdll.lib) suitable for creating DLLs. -# -# Set WXDIR to the wxWindows directory if env. variable WXWIN not set. -# From your specific makefile, set EXTRAFLAGS to add flags to CPPFLAGS, -# such as extra include directories or defines. - -WXDIR = $(WXWIN) -WXINC = $(WXDIR)\include - -WXLIB=$(WXDIR)\lib\wx1.lib $(WXDIR)\lib\wx2.lib $(WXDIR)\lib\wx3.lib - -# Suffixes -OBJSUFF=obj -SRCSUFF=cpp - -INC=/I$(WXDIR)\include - -# Set this to nothing if using MS C++ 7 -ZOPTION=/Z7 - -!ifndef FINAL -FINAL=0 -!endif - -!ifndef DLL -DLL=0 -!endif - -OPTIONS= - -!if "$(FINAL)" == "0" -OPT = /Od /Gy -DEBUG_FLAGS= /Zi $(ZOPTION) -LINK_DEBUG_FLAGS=/CO -!else -OPT = /Od /Gy # Note: /Ox or /Os crash the compiler or samples -DEBUG_FLAGS= -LINK_DEBUG_FLAGS= -!endif - -LIBS=$(WXLIB) $(EXTRALIBS) oldnames libw llibcew commdlg ddeml shell mmsystem ole2 $(WXDIR)\src\msw\ctl3d\msvc\ctl3dv2.lib - -!if "$(DLL)" == "0" -PCH=WX.PCH -PRECOMP=/YuWX/WXPREC.H /Fp$(WXDIR)\src\msw\$(PCH) -CPPFLAGS= $(DEBUG_FLAGS) $(OPTIONS) $(INC) $(EXTRAFLAGS) /DWXDEBUG=1 /D__WXDEBUG__ /AL /Gt4 /Gx- /W4 /G2sw $(OPT) /D__WXMSW__ /D__WINDOWS__ $(PRECOMP) -CPPFLAGS2= $(DEBUG_FLAGS) $(OPTIONS) $(INC) $(EXTRAFLAGS) /DWXDEBUG=1 /D__WXDEBUG__ /AL /Gt4 /Gx- /W4 /G2sw $(OPT) /D__WXMSW__ /D__WINDOWS__ -LINKFLAGS=$(LINK_DEBUG_FLAGS) /NOD /SEG:512 /ONERROR:NOEXE -DUMMY=dummy -!else -PCH=WX.PCH -PRECOMP=/YuWX/WXPREC.H /Fp$(WXDIR)\src\msw\$(PCH) -CPPFLAGS= $(DEBUG_FLAGS) $(OPTIONS) $(INC) $(EXTRAFLAGS) /AL /Gt4 /Gx- /W4 /G2s /GD $(OPT) /D__WXMSW__ /D__WINDOWS__$(PRECOMP) -CPPFLAGS2= $(DEBUG_FLAGS) $(OPTIONS) $(INC) $(EXTRAFLAGS) /AL /Gt4 /Gx- /W4 /G2s /GD $(OPT) /D__WXMSW__ /D__WINDOWS__ -LINKFLAGS=$(LINK_DEBUG_FLAGS) /NOD /SEG:512 /ONERROR:NOEXE -DUMMY=dummydll -!endif - diff --git a/src/makeprog.b32 b/src/makeprog.b32 deleted file mode 100644 index 325dd50e77..0000000000 --- a/src/makeprog.b32 +++ /dev/null @@ -1,54 +0,0 @@ -# -# File: makeprog.b32 -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: -# -# Include file for samples and utilities. Set TARGET and OBJECTS -# before including this file. - -# WXWIN and BCCDIR are set by parent make - -WXDIR = $(WXWIN) -!include $(WXDIR)\src\makeb32.env - -LIBS=$(WXLIB) cw32mt import32 ole2w32 - -!if "$(FINAL)" == "0" -LINKFLAGS=/v /Tpe /L$(WXLIBDIR);$(BCCDIR)\lib -OPT = -Od -DEBUG_FLAGS= -v -!else -LINKFLAGS=/Tpe /L$(WXLIBDIR);$(BCCDIR)\lib -OPT = -Od -DEBUG_FLAGS = -!endif -CPPFLAGS=$(DEBUG_FLAGS) $(OPT) @$(CFG) - -$(TARGET).exe: $(OBJECTS) $(TARGET).res - tlink32 $(LINKFLAGS) @&&! -c0w32.obj $(OBJECTS) -$(TARGET) -nul -$(LIBS) - -$(TARGET).res -! - -.$(SRCSUFF).obj: - bcc32 $(CPPFLAGS) -c {$< } - -.c.obj: - bcc32 $(CPPFLAGS) -P- -c {$< } - -$(TARGET).res : $(TARGET).rc $(WXDIR)\include\wx\msw\wx.rc - brc32 -r /i$(BCCDIR)\include /i$(WXDIR)\include $(TARGET) - -clean: - -erase *.obj - -erase *.exe - -erase *.res - -erase *.map - -erase *.rws - diff --git a/src/makeprog.bcc b/src/makeprog.bcc deleted file mode 100644 index 95ae2e1160..0000000000 --- a/src/makeprog.bcc +++ /dev/null @@ -1,32 +0,0 @@ -# makeprog.bcc -# Incude file for samples - -!include $(WXDIR)\src\makebcc.env - -WXLIB = $(WXDIR)\lib\wx.lib -LIBS=$(WXLIB) mathwl cwl import ole2w16 - -all: $(TARGET).exe - -$(TARGET).exe: $(WXLIB) $(OBJECTS) $(TARGET).def $(TARGET).res - tlink $(LINKFLAGS) @&&! -c0wl.obj $(OBJECTS) -$(TARGET) -nul -$(LIBS) -$(TARGET).def -! - rc -K $(TARGET).res - -.$(SRCSUFF).obj: - bcc $(CPPFLAGS) -c {$< } - -$(TARGET).res : $(TARGET).rc $(WXDIR)\include\wx\msw\wx.rc - rc -r /i$(BCCDIR)\include /i$(WXDIR)\include $(TARGET) - -clean: - -erase *.obj - -erase *.exe - -erase *.res - -erase *.map - -erase *.rws diff --git a/src/makeprog.env b/src/makeprog.env deleted file mode 100644 index d0d653795e..0000000000 --- a/src/makeprog.env +++ /dev/null @@ -1,13 +0,0 @@ -# Make environment for making samples on Unix -# Replace this with your own path if necessary -WXDIR = $(WXWIN) -#WXDIR = /home/jacs/wx2 -include $(WXDIR)/src/make.env - -all: $(PROGRAM)$(GUISUFFIX) $(EXTRATARGETS) - -$(PROGRAM)$(GUISUFFIX): $(OBJECTS) $(WXLIB) - $(CC) $(LDFLAGS) -o $(PROGRAM)$(GUISUFFIX) $(OBJECTS) $(LDLIBS) - -clean: - rm -f $(OBJECTS) $(PROGRAM)$(GUISUFFIX) core diff --git a/src/makeprog.msc b/src/makeprog.msc deleted file mode 100644 index 298f229981..0000000000 --- a/src/makeprog.msc +++ /dev/null @@ -1,58 +0,0 @@ -# -# File: makeprog.msc -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# "%W% %G%" -# -# Include file for 16-bit samples -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -WXDIR = $(WXWIN) - -!include $(WXDIR)\src\makemsc.env - -!ifndef FINAL -FINAL=0 -!endif - -.cpp.obj: - cl @<< -$(CPPFLAGS) /c /Tp $*.cpp -<< - -all: $(TARGET).exe - -wx: - cd $(WXDIR)\src\msw - nmake -f makefile.dos FINAL=$(FINAL) - cd $(THISDIR) - -wxclean: - cd $(WXDIR)\src\msw - nmake -f makefile.dos clean - cd $(THISDIR) - -$(TARGET).exe: $(WXDIR)\src\msw\dummy.obj $(WXLIB) $(OBJECTS) $(TARGET).def $(TARGET).res - link $(LINKFLAGS) /NOE @<< -$(OBJECTS) $(WXDIR)\src\msw\dummy.obj, -$(TARGET), -NUL, -$(LIBS), -$(TARGET).def -; -<< - rc -K $(TARGET).res - -$(TARGET).res : $(TARGET).rc $(WXDIR)\include\wx\msw\wx.rc - rc -r /i$(WXDIR)\include $(TARGET) - -clean: - -erase *.obj - -erase *.exe - -erase *.res - -erase *.map - -erase *.sbr - -erase *.pdb diff --git a/src/makeprog.sl b/src/makeprog.sl deleted file mode 100644 index 2f3532e736..0000000000 --- a/src/makeprog.sl +++ /dev/null @@ -1,28 +0,0 @@ -# -# File: makeprog.sl -# Author: Julian Smart -# Created: 1998 -# -# Makefile : Include file for wxWindows samples, Salford C++/WIN32 - -include ..\..\src\makesl.env - -TARGET = $(PROGRAM).exe - -ALLOBJECTS = $(OBJECTS) $(PROGRAM)_resources.obj - -$(TARGET) : $(ALLOBJECTS) - echo slink $(ALLOBJECTS) $(WXDIR)\src\msw\main.obj $(WXLIB)\wx.lib -subsystem:windows -file:$(TARGET) - slink $(ALLOBJECTS) $(WXDIR)\src\msw\main.obj $(WXLIB)\wx.lib -subsystem:windows -file:$(TARGET) - -$(PROGRAM)_resources.obj: $(PROGRAM).rc - src /ERROR_NUMBERS /DELETE_OBJ_ON_ERROR /DEFINE __SALFORDC__ /DEFINE __WXMSW__ /DEFINE __WIN32__ /DEFINE __WIN95__ /DEFINE WXINCDIR=$(RESOURCEDIR) /INCLUDE $(WXDIR)\include /INCLUDE $(WXDIR)\include\wx\msw $(PROGRAM).rc /BINARY $(PROGRAM)_resources.obj - -clean: - -erase *.obj - -erase $(TARGET) - -erase *.res - -cleanall: clean - - diff --git a/src/makeprog.vc b/src/makeprog.vc deleted file mode 100644 index b3eb9138b2..0000000000 --- a/src/makeprog.vc +++ /dev/null @@ -1,49 +0,0 @@ -# -# File: makefile.nt -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: (c) Julian Smart -# -# Makefile environment for building samples. Include this from -# your own makefile. -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -WXUSINGDLL=0 - -!include $(WXDIR)\src\makevc.env - -all: $(PROGRAM).exe $(EXTRATARGETS) - -wx: - cd $(WXDIR)\src\msw - nmake -f makefile.vc FINAL=$(FINAL) -# cd $(THISDIR) - -wxclean: - cd $(WXDIR)\src\msw - nmake -f makefile.vc clean -# cd $(THISDIR) - -$(PROGRAM).exe: $(DUMMYOBJ) $(WXLIB) $(OBJECTS) $(PROGRAM).res - $(link) @<< --out:$(PROGRAM).exe -$(LINKFLAGS) -$(DUMMYOBJ) $(OBJECTS) $(PROGRAM).res -$(LIBS) -<< - -$(PROGRAM).res : $(PROGRAM).rc $(WXDIR)\include\wx\msw\wx.rc - $(rc) -r /i$(WXDIR)\include -fo$@ $(PROGRAM).rc - -clean: - -erase $(OBJECTS) - -erase *.exe - -erase *.res - -erase *.map - -erase *.sbr - -erase *.pdb diff --git a/src/makeprog.wat b/src/makeprog.wat deleted file mode 100644 index 7814ef4947..0000000000 --- a/src/makeprog.wat +++ /dev/null @@ -1,39 +0,0 @@ -WXDIR = $(%WXWIN) - -!include $(WXDIR)\src\makewat.env - -WXLIB = $(WXDIR)\lib -LNK = $(PROGRAM).lnk - -all: $(PROGRAM).exe - -$(PROGRAM).exe : $(OBJECTS) $(PROGRAM).res $(LNK) $(WXLIB)\wx.lib - wlink @$(LNK) - $(BINDCOMMAND) $(PROGRAM).res - -$(PROGRAM).res : $(PROGRAM).rc $(WXDIR)\include\wx\msw\wx.rc - $(RC) $(RESFLAGS1) $(PROGRAM).rc - -$(LNK) : makefile.wat - %create $(LNK) - @%append $(LNK) debug all - @%append $(LNK) system $(LINKOPTION) - @%append $(LNK) $(STACK) - @%append $(LNK) name $(PROGRAM).exe - @%append $(LNK) file $(WXLIB)\wx.lib - @for %i in ($(EXTRALIBS)) do @%append $(LNK) file %i - @for %i in ($(OBJECTS)) do @%append $(LNK) file %i -# @%append $(LNK) $(MINDATA) -# @%append $(LNK) $(MAXDATA) - -clean: .SYMBOLIC - -erase *.obj - -erase *.bak - -erase *.err - -erase *.pch - -erase *.lib - -erase $(LNK) - -erase *.res - -erase *.exe - -erase *.lbc - diff --git a/src/makesc.env b/src/makesc.env deleted file mode 100644 index 064e1cbf02..0000000000 --- a/src/makesc.env +++ /dev/null @@ -1,41 +0,0 @@ -# Common settings for Symantec - -WXDIR = $(WXWIN) -INCDIR = $(WXDIR)\include -LIBDIR = $(WXDIR)\lib -WXLIB = $(LIBDIR)\wx.lib - -SRCSUFF = cpp -OBJSUFF = obj - -INCLUDE=$(INCDIR) - -# default values - -CC=sc -RC=rc - -# WIN16 settings -#CFLAGS = -Jm -ml -W -D__WXMSW__ -D__SC__ -D__WXDEBUG__ -D__WINDOWS__ -D__WIN16__ $(EXTRACPPFLAGS) -#LINKER = link -#LDFLAGS = -ml -W -L$(LINKER).exe $(EXTRALDFLAGS) -#LIBS=$(WXLIB) $(EXTRALIBS) libw.lib commdlg.lib ddeml.lib shell.lib # $(LIB)\ctl3dv2.lib -#DEFFILE=sc16.def - -# WIN32 settings -CFLAGS = -o -mn -W -D__NT__ -DWIN32 -D__WIN32__ -D__WINDOWS__ -D__WXMSW__ -D__SC__ -D__WXDEBUG__ $(EXTRACPPFLAGS) -LINKER = link386 -LDFLAGS = -L$(LINKER).exe $(EXTRALDFLAGS) -LIBS=$(WXLIB) $(EXTRALIBS) ctl3d32.lib shell32.lib comdlg32.lib user32.lib gdi32.lib kernel32.lib winmm.lib -DEFFILE=sc32.def - -.$(SRCSUFF).obj: - *$(CC) -c $(CFLAGS) -I$(INCLUDE) $(OPTIONS) $< -o$@ - -# -Jm: relaxed type checking -.c.obj: - *$(CC) -c $(CFLAGS) -I$(INCLUDE) $(OPTIONS) -DUSE_DEFINE -Jm $< -o$@ - -.rc.res: - *$(RC) -r -I$(INCLUDE) $< - diff --git a/src/makesl.env b/src/makesl.env deleted file mode 100644 index e97c61c655..0000000000 --- a/src/makesl.env +++ /dev/null @@ -1,53 +0,0 @@ -# File: makesl.env -# Purpose: Salford C++ environment for wxWindows makefiles. -# Author: Julian Smart -# -# The main things to change are: -# -# SALFORDDIR: set to where the wxWindows is installed -# RESOURCEDIR: set to Unix form of include path, for wx.rc processing. -# (necessary for some reason as the resource compiler can't -# resolve paths otherwise). - -SALFORDDIR=i:\salfordc -RESOURCEDIR="/wx2/wxWind~1/include/" - -FINAL=0 -.SUFFIXES: -.SUFFIXES: .exe .obj .c .cc .cpp .res .rc .def .lib - -WXDIR = $(WXWIN) -WXINC = $(WXDIR)\include -WXLIB = $(WXDIR)\lib - -# Suffixes -OBJSUFF=obj -SRCSUFF=cpp - -DEBUGFLAGS = /DEFINE __WXDEBUG__ /DEBUG - -RC = src - -CCC = scc -CC = scc -STACK = - -# EXTRALIBS = $(WXDIR)\lib\zlib.lib $(WXDIR)\lib\png.lib $(WXDIR)\lib\xpm.lib & -# $(WATLIBDIR)\odbc32.lib $(WATLIBDIR)\comctl32.lib $(WATLIBDIR)\comdlg32.lib & -# $(WATLIBDIR)\ole32.lib $(WATLIBDIR)\oleaut32.lib $(WATLIBDIR)\uuid.lib - -IFLAGS = /INCLUDE $(WXINC) /INCLUDE $(SALFORDDIR)\include /INCLUDE $(SALFORDDIR)\include\win32 - -#RESFLAGS1 = -r -bt=nt /i$(WXDIR)\include -#RESFLAGS2 = -R $(name) /i$(WXDIR)\include - -OPTFLAGS= - -CPPFLAGS = /WINDOWS /ERROR_NUMBERS /DELETE_OBJ_ON_ERROR /DEFINE WIN32 /DEFINE __WIN32__ /DEFINE __WIN95__ /DEFINE __WINDOWS__ /DEFINE __WXMSW__ /DEFINE __SALFORDC__ $(OPTFLAGS) $(DEBUGFLAGS) $(EXTRACPPFLAGS) - -.cpp.obj: - $(CCC) $(CPPFLAGS) $(IFLAGS) $< - -.c.obj: - $(CC) $(CPPFLAGS) $(IFLAGS) $< - diff --git a/src/maketwin.env b/src/maketwin.env deleted file mode 100644 index 54af0962d2..0000000000 --- a/src/maketwin.env +++ /dev/null @@ -1,160 +0,0 @@ -# makeg95.env -# Common makefile settings for wxWindows programs -# This file is included by all the other makefiles, thus changes -# made here take effect everywhere (except where overriden). -# -# An alternative to editing this file is to create a shell script -# to export specific variables, and call make with the -e switch -# to override makefile variables. See wx/install/install.txt. -# And you can override specific variables on the make command line, e.g. -# -# make -f makefile.unix WXDEBUG='' -# -# You may prefer to use the GNU configure script than raw makefiles - -# see contrib/wxshlib. -# - -########################## Compiler ################################## - -# C++ compiler -# For AIX/CSet++: use CC = xlC -# For IRIX: use CC = CC -# CC = gcc-2.6.2 -CC = gcc - -# C compiler for pure C programs -# Typical: CC=g++ , CCC=gcc -# CC=cl386 /Tp, CCC=cl386 -# -# (Used only for XView, file sb_scrol.c) -# -CCC = $(CC) - -# Compiler used for LEX generated C -CCLEX=gcc - -MAKE=make - -# LEX -LEX=flex -t -L - -# YACC. yacc or bison -YACC=yacc - -# Settings for TWIN32 -RESCOMP=rc -RCINPUTSWITCH= -RCOUTPUTSWITCH=-o -RCINCSWITCH=-I -RCDEFSWITCH=-D - -RESFLAGS=$(RCINCSWITCH) $(WXDIR)/include $(RCDEFSWITCH) __WIN32__ $(RCDEFSWITCH) __WIN95__ $(RCDEFSWITCH) __GNUWIN32__ - -########################## Compiler flags ############################# - -# Miscellaneous compiler options -OPTIONS= # -D__MINGW32__ # -D__EGCS__ - -# Debugging information -# AIX: comment out. -# IRIX: -g3 -DEBUGFLAGS = -ggdb -D__WXDEBUG__ - -WIN95=1 - -ifeq ($(WIN95),0) -# With 3.50, Win95 will use your existing icons to show smaller ones. -# With 4.0, you'll have to follow Win95 procedures for icons or you'll get the -# default Windows icon. -APPVER=3.50 -WINVERSION=-DWINVER=0x0350 -D__GNUWIN32__ -D__WIN32__ # Generic WIN32 -else -APPVER=3.50 # 4.0 -# This means 'enable Windows 95 features' (in wxWindows and in VC++ 4.0). -WINVERSION=-DWINVER=0x0400 -D__WIN95__ -D__GNUWIN32__ -D__WIN32__ -endif - -CPU=i386 - -# Suffixes -OBJSUFF=o -SRCSUFF=cpp -LIBPREFIX=lib -LIBSUFF=a -EXESUFF=.exe -RESSUFF=res -RSCSUFF=rsc - -# Warnings -WARN = -Wall - -# Which GUI, -Dwx_xview or -Dwx_motif (don't change this) -GUI = -D__WXMSW__ -D__WINDOWS__ - -# Optimization -# OPT = -O -OPT = - -# Options for ar archiver -# AROPTIONS = crs # For IRIX and Solaris (both SYSVR4). -AROPTIONS = ruv -RANLIB = ranlib - -# Compiler libraries: defaults to GCC libraries -#COMPLIBS=-lg++ -#for win95 -#COMPLIBS=-lgcc - -# Compiler or system-specific include paths -COMPPATHS=-I$(TWINDIR)/include - -########################## Directories ############################### - - -WINLIBS=-lstdc++ -lgcc -lm -ldl -ltwin32 -lcomctl32 -lcommdlg -lddeml -lmmsystem -lshell -lXpm -lX11 -lm - -# -lwinspool -lwinmm -lshell32 -loldnames \ -# -lcomctl32 -lctl3d32 -lodbc32 -ladvapi32 - -# Shouldn't need to change these... -WXSRC=$(WXDIR)/src/msw -WXINC=$(WXDIR)/include -WXBASESRC=$(WXDIR)/src/common -WXLIB=$(WXDIR)/lib/$(LIBPREFIX)wx.$(LIBSUFF) -INC = -I$(WXINC) -I$(WXDIR)/src/png -I$(WXDIR)/include/wx/msw/gnuwin32 -I$(WXDIR)/src/zlib $(EXTRAINC)$(COMPPATHS) -RCLFLAGS=-cpp "cpp -lang-c++ -DWIN32 -D_WIN32 -DRCL_INVOKED -I$(WXWIN)\include" - -#LIBS = -lctl3d32 $(WXLIB) $(WINLIBS) $(COMPLIBS) -LIBS = $(WXLIB) $(WINLIBS) $(COMPLIBS) - -WINFLAGS=-DX386 -DWIN32 -D_WIN32 $(WINVERSION) -DTWIN32 -D__TWIN32__ - -#for windows 95 -XINCLUDE=$(WINFLAGS) -XLIB=$(LIBS) -LDLIBS = $(LIBS) - -# Directory for object files (don't change) -OBJDIR = objects$(GUISUFFIX) - -# You shouldn't need to change these... -CPPFLAGS = $(XINCLUDE) $(INC) $(OPTIONS) $(GUI) $(DEBUGFLAGS) $(WARN) $(OPT) -CFLAGS = $(XINCLUDE) $(INC) $(OPTIONS) $(GUI) $(DEBUGFLAGS) $(WARN) $(OPT) -WINDOWSLDFLAGS= -LDFLAGS = $(WINDOWSLDFLAGS) -L$(WXDIR)/lib -L/usr/X11R6/lib -L$(TWINDIR)/win - -.SUFFIXES: .rc .$(RESSUFF) .$(RSCSUFF) .cpp .c - -.rc.$(RESSUFF): $< $(WXDIR)/include/msw/wx.rc - $(RC) $(RESFLAGS1) $< $(RESFLAGS2) $*.$(RESSUFF) $(RCLFLAGS) - -.$(RESSUFF).$(RSCSUFF): $< - $(CVTRES) $< $*.$(RSCSUFF) - -.$(SRCSUFF).$(OBJSUFF): - $(CC) -c $(CPPFLAGS) -o $@ $*.$(SRCSUFF) - -.c.o: - $(CC) -c $(CPPFLAGS) -o $@ $*.c - - diff --git a/src/makevc.env b/src/makevc.env deleted file mode 100644 index 773d9ae719..0000000000 --- a/src/makevc.env +++ /dev/null @@ -1,172 +0,0 @@ -# -# File: ntwxwin.env -# Author: Ulrich Leodolter -# Created: Wed May 17 08:36:42 1995 -# Updated: -# -# MSVC++ 32-bit makefile include file -# -!include - -WIN95=1 - -!if "$(WIN95)" == "0" -# With 3.50, Win95 will use your existing icons to show smaller ones. -# With 4.0, you'll have to follow Win95 procedures for icons or you'll get the -# default Windows icon. -APPVER=3.50 -WINVERSION=-DWINVER=0x0350 # Generic WIN32 -!else -APPVER=3.50 # 4.0 -# This means 'enable Windows 95 features' (in wxWindows and in VC++ 4.0). -WINVERSION=-DWINVER=0x0400 /D__WIN95__ -!endif - -# On Alpha machines, change to CPU=ALPHA -CPU=i386 - -# Suffixes -OBJSUFF=obj -SRCSUFF=cpp - -# If you set wxUSE_IOSTREAMH to 0, remove -Dtry=__try -Dexcept=__except -Dleave=__leave -Dfinally=__finally -WINFLAGS=-c -W3 -Dtry=__try -Dexcept=__except -Dleave=__leave -Dfinally=__finally -DCRTAPI1=_cdecl -DCRTAPI2=_cdecl -nologo -D_X86_=1 -DWIN32 -D__WIN32__ $(WINVERSION) -#WINLINKFLAGS=/NODEFAULTLIB /INCREMENTAL:NO /NOLOGO -align:0x1000 -machine:$(CPU) -subsystem:windows,$(APPVER) -WINLINKFLAGS=/INCREMENTAL:NO /NOLOGO -machine:$(CPU) -subsystem:windows,$(APPVER) -#WINLIBS=kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib libc.lib oldnames.lib\ -# comctl32.lib ctl3d32.lib odbc32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib # libci.lib # libci.lib required for VC++ 4.2 -WINLIBS=kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib oldnames.lib\ - comctl32.lib ctl3d32.lib odbc32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib # libci.lib # libci.lib required for VC++ 4.2 - -# Change this to your WXWIN directory -WXDIR=$(WXWIN) - -WXSRC=$(WXDIR)\src\msw -WXINC=$(WXDIR)\include -WXBASESRC=$(WXDIR)\src\common - -##################################################################### -# These are the possible DLL/non-DLL usages: -# -# Type _DLL/_WINDLL WXUSINGDLL WXMAKINGDLL Library -#-------------------------------------------------------------------- -# Normal application - - - wx.lib -# -# wxWin as DLL Defined - Defined wx200.lib -# -# App using wxWin DLL - Defined - wx200.lib -# -# App built as one DLL Defined - - wx.lib -# -###################################################################### -# -# Compiling your app: -#-------------------- -# when compiling an app to use the DLL version of wxWindows -# (but not to be a DLL itself), set WXUSINGDLL to 1 in your -# makefile just before including ntwxwin.mak. -# To compile wxWin _and_ app itself as a DLL, set DLL to 1 -# in ntwxwin.mak, and do not set WXUSINGDLL. -# -# Compiling wxWindows: -#--------------------- -# Use the dll target to compile wxWindows as DLL; then make 'pch' -# to generate a precompiled header for your apps to use. BUG: must compile without -# wxExpr (USE_WX_RESOURCES = 0) for this to link properly. Don't know why yet. -# Use the dllapp target to compile wxWindows for making a DLL app (not implemented yet) - -#DLL=0 - -!if "$(WXUSINGDLL)" == "1" || "$(WXMAKINGDLL)" == "1" -WXLIB=$(WXDIR)\lib\wx200.lib -!else -WXLIB=$(WXDIR)\lib\wx.lib -!endif - -!if "$(WXUSINGDLL)" == "1" -EXTRADLLFLAGS=/DWXUSINGDLL=1 -!endif - -!if "$(WXMAKINGDLL)" == "1" -EXTRADLLFLAGS=/DWXMAKINGDLL=1 -!endif - -!if "$(WXMAKINGDLL)" == "0" && "$(DLL)" == "1" -EXTRADLLFLAGS= -!endif - -!if "$(NOMAIN)" == "1" -EXTRADLLFLAGS=$(EXTRADLLFLAGS) /DNOMAIN -!endif - -INC=-I$(WXINC) -I$(WXDIR)/src/png -I$(WXDIR)/src/zlib $(EXTRAINC) -LIBS = $(EXTRALIBS) $(WXLIB) $(WINLIBS) $(WXDIR)\lib\winpng.lib $(WXDIR)\lib\zlib.lib $(WXDIR)\lib\xpm.lib - -!ifndef FINAL -FINAL=0 -DEBUG=1 -!endif - -!ifndef DLL -DLL=0 -!endif - -# Set this to 1 if you don't want to use precompiled headers -!ifndef NOPCH -NOPCH=0 -!endif - -MAKEPRECOMP=/YcWX/WXPREC.H -OPTIONS= - -!if "$(FINAL)" == "0" -OPT = /Od /Gy -# ***N.B.*** to save space/time, comment out /FR to avoid browse info (.sbr files) being generated -DEBUG_FLAGS= /Zi /D__WXDEBUG__ # /DDEBUG=1 # /FR -LINK_DEBUG_FLAGS=-debug:full -debugtype:cv # /PDB:NONE -CRTFLAG=/MD -!else -# /O1 - smallest code -# /O2 - fastest code -OPT = /O1 # /O2 # /Od -DEBUG_FLAGS= -LINK_DEBUG_FLAGS=/RELEASE -CRTFLAG=/MD -!endif - -!if "$(DLL)" == "0" - -!if "$(NOPCH)" == "1" -PCH= -PRECOMP= -MAKEPRECOMP= -!else -PCH=WX.PCH -PRECOMP=/YuWX/WXPREC.H /Fp$(WXDIR)\src\msw\$(PCH) /Fd$(WXDIR)\lib\wx.pdb -MAKEPRECOMP=/YcWX/WXPREC.H -!endif - -CPPFLAGS=$(WINFLAGS) $(DEBUG_FLAGS) $(PRECOMP) $(EXTRAFLAGS) /D__WXMSW__ $(INC) $(OPT) $(EXTRADLLFLAGS) $(CRTFLAG) /D__WINDOWS__ /GX /DSTRICT $(OVERRIDEFLAGS) -# If you don't include wxprec.h, use CPPFLAGS2 -CPPFLAGS2=$(WINFLAGS) $(DEBUG_FLAGS) /D__WXMSW__ $(INC) $(EXTRAFLAGS) $(OPT) $(EXTRADLLFLAGS) $(CRTFLAG) /D__WINDOWS__ /GX /DSTRICT $(OVERRIDEFLAGS) -LINKFLAGS=$(LINK_DEBUG_FLAGS) $(WINLINKFLAGS) -entry:WinMainCRTStartup -DUMMY=dummy - -!else - -!if "$(WXMAKINGDLL)" == "1" -PCH=WXDLL.PCH -DUMMY=dummydll -!else -PCH=WX.PCH -DUMMY=dummy -!endif - -PRECOMP=/YuWX/WXPREC.H /Fp$(WXDIR)\src\msw\$(PCH) /Fd$(WXDIR)\lib\wx.pdb -CPPFLAGS=$(WINFLAGS) $(DEBUG_FLAGS) $(PRECOMP) $(EXTRAFLAGS) /D__WXMSW__ $(INC) $(OPT) /D_DLL $(CRTFLAG) $(EXTRADLLFLAGS) /D_WINDOWS /D__WINDOWS__ /D_WINDLL -CPPFLAGS2=$(WINFLAGS) $(DEBUG_FLAGS) /D__WXMSW__ $(INC) $(EXTRAFLAGS) $(OPT) /D_DLL $(CRTFLAG) $(EXTRADLLFLAGS) /D_WINDOWS /D__WINDOWS__ /D_WINDLL -LINKFLAGS=$(LINK_DEBUG_FLAGS) -machine:i386 -subsystem:windows,$(APPVER) -dll # -entry:_DllMainCRTStartup$(DLLENTRY) -!endif - -DUMMYOBJ=$(WXDIR)\src\msw\$(DUMMY).obj - diff --git a/src/makewat.env b/src/makewat.env deleted file mode 100644 index d52e0c2dac..0000000000 --- a/src/makewat.env +++ /dev/null @@ -1,90 +0,0 @@ -# File: makewat.env -# Purpose: Watcom environments for wxWindows makefiles. -# Author: Julian Smart and others -# -# The main things to change are: -# -# WATCOM: set to where the compiler is installed -# WXDIR: set to where the wxWindows is installed -# MODE: set to windows [16 bit windows], nt [win32s], or win386 [32-bit non-WIN32] - -FINAL=0 -WATCOMDIR=$(%WATCOM) - -.EXTENSIONS: -.EXTENSIONS: .exe .obj .c .cc .cpp .res .rc .def - -#WXDIR = d:\wx2\wxwind~1 -WXDIR = $(%WXWIN) -WXINC = $(WXDIR)\include - -# Suffixes -OBJSUFF=obj -SRCSUFF=cpp - -WXDEBUG=0 - -!ifneq NOPRECOMP 1 -PRECOMP = /fh=$(WXDIR)\src\msw\watcom.pch -!endif - -!ifeq WXDEBUG 1 -DEBUGFLAGS = /D__WXDEBUG__ -DEBUGINFO = debug all -!else -DEBUGFLAGS = -DEBUGINFO = -!endif - -RC = wrc - -LEVEL = 386 -CCC = wpp$(LEVEL) -CC = wcc$(LEVEL) -OS_TARGET = nt_win -MODEL = -# If you use win95, assumptions will be made about Win95 icon format etc. -# so nt_win is probably better for simultaneous Win32s/Win95/NT operation. -LINKOPTION = nt_win # win95 -BINDCOMMAND = wrc -WATLIBDIR = $(WATCOMDIR)\lib386\nt -MINDATA = -MAXDATA = -STACK = option stack=64k -EXTRALIBS = $(WXDIR)\lib\zlib.lib $(WXDIR)\lib\png.lib $(WXDIR)\lib\xpm.lib & - $(WATLIBDIR)\odbc32.lib $(WATLIBDIR)\comctl32.lib $(WATLIBDIR)\comdlg32.lib & - $(WATLIBDIR)\ole32.lib $(WATLIBDIR)\oleaut32.lib $(WATLIBDIR)\uuid.lib -IFLAGS = -i=$(WXINC) -i=$(%watcom)\h;$(%watcom)\h\nt # -i=$(WXDIR)\include\wx\msw\gnuwin32 -RESFLAGS1 = -r -bt=nt /i$(WXDIR)\include -RESFLAGS2 = -R $(name) /i$(WXDIR)\include - -# Here are some possible optimization flags: -# /5r Pentium timings -# /fp5 /fpi87 Inline 80x87 instructions optimized for Pentium: coprocessor must be present -# /ox Standard optimizations -# /or Reordering for Pentium timings (included in /ox) -# The Watcom-recommended flags for optimum Pentium speed are: -# /oneatx /zp4 /5 /fpi87 /fp5 - -OPTFLAGS=/ox /5r - -# /d1 for line numbers only: anything else produces an enormous wx32.lib -CPPFLAGS = /bt=nt /w1 /DWIN32 /D__WIN32__ /D__WIN95__ /D__WINDOWS__ /zq $(OPTFLAGS) $(MODEL) $(PRECOMP) /d1 $(DEBUGFLAGS) /d__WXMSW__ $(EXTRACPPFLAGS) # /d__WATCOMC__ - -.cpp.obj: # $< # .AUTODEPEND - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -.c.obj: # $< # .AUTODEPEND - *$(CC) $(CPPFLAGS) $(IFLAGS) $< - -# This doesn't work for wcc -# %create tmp.lbc -# @%append tmp.lbc $(CPPFLAGS) $(IFLAGS) $< -# echo $< -# $(CC) @tmp.lbc - -dummy: .SYMBOLIC - @echo Please give a target for wxWin makefiles: the usual one is 'all'. - -erasepch: .SYMBOLIC - -erase $(WXDIR)\src\msw\watcom.pch diff --git a/src/mingegcs.bat b/src/mingegcs.bat deleted file mode 100644 index 2176c2885d..0000000000 --- a/src/mingegcs.bat +++ /dev/null @@ -1,13 +0,0 @@ -REM -REM replace g:\egcs-mingw32 with whatever your installation root may be. -REM -path C:\WINDOWS;C:\WINDOWS\COMMAND;g:\egcs-mingw32\bin;c:\bin - -SET GCC_EXEC_PREFIX=g:\egcs-mingw32\lib\gcc-lib\ -set BISON_SIMPLE=g:\egcs-mingw32\share\bison.simple -set BISON_HAIRY=g:\egcs-mingw32\share\bison.hairy - -rem 4DOS users only... -unalias make -alias makeming make -f makefile.g95 - diff --git a/src/mingw32.bat b/src/mingw32.bat deleted file mode 100644 index 6e3bea5c20..0000000000 --- a/src/mingw32.bat +++ /dev/null @@ -1,16 +0,0 @@ -rem Mingw32 environment variables -rem -set WXWIN=d:\wx2 -path C:\WINDOWS;C:\WINDOWS\COMMAND;e:\mingw32\bin;e:\mingw32\lib\gcc-lib\i386-mingw32\2.8.1;c:\bin -rem set GCC_EXEC_PREFIX=G:\gnuwin32\b18\H-i386-cygwin32\lib\gcc-lib\ -set RCINCLUDE=%WXWIN\include -rem set CPLUS_INCLUDE_PATH=/g/gnuwin32/b18/h-i386-cygwin32/i386-cygwin32/include:/g/gnuwin32/b18/include/g++:/g/gnuwin32/b18/H-i386-cygwin32/lib/gcc-lib/i386-cygwin32/cygnus-2.7.2-970404/include:/d/wx2/include:/g/gnuwin32/b18/include/g++ -set CPLUS_INCLUDE_PATH=e:\mingw32\include;e:\mingw32\lib\gcc-lib\i386-mingw32\2.8.1\include;e:\mingw32\include\g++ -set C_INCLUDE_PATH=e:\mingw32\include;e:\mingw32\lib\gcc-lib\i386-mingw32\2.8.1\include;e:\mingw32\include\g++ -set LIBRARY_PATH=e:\mingw32\lib;e:\mingw32\lib\gcc-lib\i386-mingw32\2.8.1 -set BISON_SIMPLE=e:\mingw32\share\bison.simple -set BISON_HAIRY=e:\mingw32\share\bison.hairy - -rem 4DOS users only... -unalias make -alias makeming make -f makefile.g95 diff --git a/src/motif.inc b/src/motif.inc deleted file mode 100644 index efb2435516..0000000000 --- a/src/motif.inc +++ /dev/null @@ -1,162 +0,0 @@ -# needed for unactivated -NONE = - -# define library name -LIB_TARGET=wx_motif2 -LIB_MAJOR=0 -LIB_MINOR=1 - -# define library sources - -LIB_CPP_SRC=\ -\ - common/cmndata.cpp \ - common/config.cpp \ - common/date.cpp \ - common/docmdi.cpp \ - common/docview.cpp \ - common/dynarray.cpp \ - common/dynlib.cpp \ - common/event.cpp \ - common/file.cpp \ - common/fileconf.cpp \ - common/filefn.cpp \ - common/gdicmn.cpp \ - common/hash.cpp \ - common/helpbase.cpp \ - common/image.cpp \ - common/intl.cpp \ - common/ipcbase.cpp \ - common/layout.cpp \ - common/list.cpp \ - common/log.cpp \ - common/matrix.cpp \ - common/memory.cpp \ - common/mimetype.cpp \ - common/module.cpp \ - common/object.cpp \ - common/prntbase.cpp \ - common/resource.cpp \ - common/serbase.cpp \ - common/string.cpp \ - common/textfile.cpp \ - common/tbarbase.cpp \ - common/tbarsmpl.cpp \ - common/time.cpp \ - common/timercmn.cpp \ - common/utilscmn.cpp \ - common/wincmn.cpp \ - common/framecmn.cpp \ - common/stream.cpp \ - common/datstrm.cpp \ - common/wfstream.cpp \ - common/mstream.cpp \ - common/zstream.cpp \ - common/objstrm.cpp \ - common/sckstrm.cpp \ - common/validate.cpp \ - common/valtext.cpp \ - common/variant.cpp \ - common/wxexpr.cpp \ - common/socket.cpp \ - common/sckaddr.cpp \ - common/sckipc.cpp \ - common/protocol.cpp \ - common/ftp.cpp \ - common/http.cpp \ - common/url.cpp \ - common/tokenzr.cpp \ -\ - motif/accel.cpp \ - motif/app.cpp \ - motif/bitmap.cpp \ - motif/bmpbuttn.cpp \ - motif/brush.cpp \ - motif/button.cpp \ - motif/checkbox.cpp \ - motif/choice.cpp \ - motif/clipbrd.cpp \ - motif/colour.cpp \ - motif/colordlg.cpp \ - motif/control.cpp \ - motif/combobox.cpp \ - motif/cursor.cpp \ - motif/data.cpp \ - motif/dc.cpp \ - motif/dcclient.cpp \ - motif/dcmemory.cpp \ - motif/dcscreen.cpp \ - motif/dialog.cpp \ - motif/dnd.cpp \ - motif/filedlg.cpp \ - motif/font.cpp \ - motif/fontdlg.cpp \ - motif/frame.cpp \ - motif/gauge.cpp \ - motif/gdiobj.cpp \ - motif/helpxxxx.cpp \ - motif/icon.cpp \ - motif/listbox.cpp \ - motif/joystick.cpp \ - motif/main.cpp \ - motif/mdi.cpp \ - motif/menu.cpp \ - motif/menuitem.cpp \ - motif/metafile.cpp \ - motif/minifram.cpp \ - motif/msgdlg.cpp \ - motif/palette.cpp \ - motif/pen.cpp \ - motif/print.cpp \ - motif/radiobox.cpp \ - motif/radiobut.cpp \ - motif/region.cpp \ - motif/scrolbar.cpp \ - motif/settings.cpp \ - motif/slider.cpp \ - motif/spinbutt.cpp \ - motif/statbox.cpp \ - motif/statbmp.cpp \ - motif/stattext.cpp \ - motif/taskbar.cpp \ - motif/textctrl.cpp \ - motif/thread.cpp \ - motif/timer.cpp \ - motif/toolbar.cpp \ - motif/utils.cpp \ - motif/utilsexc.cpp \ - motif/wave.cpp \ - motif/window.cpp \ -\ - generic/choicdgg.cpp \ - generic/colrdlgg.cpp \ - generic/dcpsg.cpp \ - generic/dirdlgg.cpp \ - generic/fontdlgg.cpp \ - generic/gridg.cpp \ - generic/helpext.cpp \ - generic/helphtml.cpp \ - generic/imaglist.cpp \ - generic/listctrl.cpp \ - generic/laywin.cpp \ - generic/msgdlgg.cpp \ - generic/notebook.cpp \ - generic/panelg.cpp \ - generic/printps.cpp \ - generic/prntdlgg.cpp \ - generic/prop.cpp \ - generic/propform.cpp \ - generic/proplist.cpp \ - generic/sashwin.cpp \ - generic/scrolwin.cpp \ - generic/splitter.cpp \ - generic/statusbr.cpp \ - generic/tabg.cpp \ - generic/textdlgg.cpp \ - generic/treectrl.cpp - -LIB_C_SRC=\ -\ - motif/xmcombo/xmcombo.c \ -\ - common/extended.c diff --git a/src/motif/accel.cpp b/src/motif/accel.cpp deleted file mode 100644 index 46adbcc4b6..0000000000 --- a/src/motif/accel.cpp +++ /dev/null @@ -1,118 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: accel.cpp -// Purpose: wxAcceleratorTable -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "accel.h" -#endif - -#include "wx/setup.h" -#include "wx/accel.h" -#include "wx/string.h" -#include "wx/utils.h" -#include - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxAcceleratorTable, wxObject) -#endif - -class WXDLLEXPORT wxAcceleratorRefData: public wxObjectRefData -{ - friend class WXDLLEXPORT wxAcceleratorTable; -public: - wxAcceleratorRefData(); - ~wxAcceleratorRefData(); - -public: - int m_count; - wxAcceleratorEntry* m_entries; -}; - -#define M_ACCELDATA ((wxAcceleratorRefData *)m_refData) - -wxAcceleratorRefData::wxAcceleratorRefData() -{ - m_count = 0; - m_entries = (wxAcceleratorEntry*) NULL; -} - -wxAcceleratorRefData::~wxAcceleratorRefData() -{ - delete[] m_entries; - m_entries = (wxAcceleratorEntry*) NULL; - m_count = 0; -} - -wxAcceleratorTable::wxAcceleratorTable() -{ - m_refData = (wxAcceleratorRefData*) NULL; -} - -wxAcceleratorTable::~wxAcceleratorTable() -{ - // Data deleted in ~wxObject -} - -// Load from .rc resource -wxAcceleratorTable::wxAcceleratorTable(const wxString& resource) -{ - m_refData = new wxAcceleratorRefData; -} - -// Create from an array -wxAcceleratorTable::wxAcceleratorTable(int n, wxAcceleratorEntry entries[]) -{ - wxAcceleratorRefData* data = new wxAcceleratorRefData; - m_refData = data; - - data->m_count = n; - data->m_entries = new wxAcceleratorEntry[n]; - int i; - for (i = 0; i < n; i++) - data->m_entries[i] = entries[i]; - -} - -bool wxAcceleratorTable::Ok() const -{ - return (m_refData != (wxAcceleratorRefData*) NULL); -} - -int wxAcceleratorTable::GetCount() const -{ - return M_ACCELDATA->m_count; -} - -wxAcceleratorEntry* wxAcceleratorTable::GetEntries() const -{ - return M_ACCELDATA->m_entries; -} - -// Implementation use only -bool wxAcceleratorEntry::MatchesEvent(const wxKeyEvent& event) const -{ - bool eventAltDown = event.AltDown(); - bool eventCtrlDown = event.ControlDown(); - bool eventShiftDown = event.ShiftDown(); - int eventKeyCode = event.KeyCode(); - - bool accAltDown = ((GetFlags() & wxACCEL_ALT) == wxACCEL_ALT); - bool accCtrlDown = ((GetFlags() & wxACCEL_CTRL) == wxACCEL_CTRL); - bool accShiftDown = ((GetFlags() & wxACCEL_SHIFT) == wxACCEL_SHIFT); - int accKeyCode = GetKeyCode(); - int accKeyCode2 = GetKeyCode(); - if (isascii(accKeyCode2)) - accKeyCode2 = wxToLower(accKeyCode2); - - return ((eventAltDown == accAltDown) && (eventCtrlDown == accCtrlDown) && - (eventShiftDown == accShiftDown) && - ((eventKeyCode == accKeyCode || eventKeyCode == accKeyCode2))) ; -} - diff --git a/src/motif/app.cpp b/src/motif/app.cpp deleted file mode 100644 index 2c179d7a2d..0000000000 --- a/src/motif/app.cpp +++ /dev/null @@ -1,608 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: app.cpp -// Purpose: wxApp -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "app.h" -#endif - -#include "wx/frame.h" -#include "wx/app.h" -#include "wx/utils.h" -#include "wx/gdicmn.h" -#include "wx/pen.h" -#include "wx/brush.h" -#include "wx/cursor.h" -#include "wx/icon.h" -#include "wx/palette.h" -#include "wx/dc.h" -#include "wx/dialog.h" -#include "wx/msgdlg.h" -#include "wx/log.h" -#include "wx/module.h" -#include "wx/memory.h" - -#if wxUSE_THREADS -#include "wx/thread.h" -#endif - -#if wxUSE_WX_RESOURCES -#include "wx/resource.h" -#endif - -#include -#include -#include -#include -#include - -#include "wx/motif/private.h" - -#include - -extern char *wxBuffer; -extern wxList wxPendingDelete; - -wxApp *wxTheApp = NULL; - -wxHashTable *wxWidgetHashTable = NULL; - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxApp, wxEvtHandler) -BEGIN_EVENT_TABLE(wxApp, wxEvtHandler) -EVT_IDLE(wxApp::OnIdle) -END_EVENT_TABLE() -#endif - -long wxApp::sm_lastMessageTime = 0; - -bool wxApp::Initialize() -{ -#ifdef __WXMSW__ - wxBuffer = new char[1500]; -#else - wxBuffer = new char[BUFSIZ + 512]; -#endif - - wxClassInfo::InitializeClasses(); - - wxTheColourDatabase = new wxColourDatabase(wxKEY_STRING); - wxTheColourDatabase->Initialize(); - - wxInitializeStockLists(); - wxInitializeStockObjects(); - -#if wxUSE_WX_RESOURCES - wxInitializeResourceSystem(); -#endif - - // For PostScript printing -#if wxUSE_POSTSCRIPT - /* Done using wxModule now - wxInitializePrintSetupData(); - wxThePrintPaperDatabase = new wxPrintPaperDatabase; - wxThePrintPaperDatabase->CreateDatabase(); - */ -#endif - - wxBitmap::InitStandardHandlers(); - - wxWidgetHashTable = new wxHashTable(wxKEY_INTEGER); - - wxModule::RegisterModules(); - if (!wxModule::InitializeModules()) return FALSE; - - return TRUE; -} - -void wxApp::CleanUp() -{ - delete wxWidgetHashTable; - wxWidgetHashTable = NULL; - - wxModule::CleanUpModules(); - -#if wxUSE_WX_RESOURCES - wxCleanUpResourceSystem(); -#endif - - wxDeleteStockObjects() ; - - // Destroy all GDI lists, etc. - - delete wxTheBrushList; - wxTheBrushList = NULL; - - delete wxThePenList; - wxThePenList = NULL; - - delete wxTheFontList; - wxTheFontList = NULL; - - delete wxTheBitmapList; - wxTheBitmapList = NULL; - - delete wxTheColourDatabase; - wxTheColourDatabase = NULL; - -#if wxUSE_POSTSCRIPT - /* Done using wxModule now - wxInitializePrintSetupData(FALSE); - delete wxThePrintPaperDatabase; - wxThePrintPaperDatabase = NULL; - */ -#endif - - wxBitmap::CleanUpHandlers(); - - delete[] wxBuffer; - wxBuffer = NULL; - - wxClassInfo::CleanUpClasses(); - - delete wxTheApp; - wxTheApp = NULL; - -#if (defined(__WXDEBUG__) && wxUSE_MEMORY_TRACING) || wxUSE_DEBUG_CONTEXT - // At this point we want to check if there are any memory - // blocks that aren't part of the wxDebugContext itself, - // as a special case. Then when dumping we need to ignore - // wxDebugContext, too. - if (wxDebugContext::CountObjectsLeft(TRUE) > 0) - { - wxLogDebug("There were memory leaks.\n"); - wxDebugContext::Dump(); - wxDebugContext::PrintStatistics(); - } -#endif - - // do it as the very last thing because everything else can log messages - wxLog::DontCreateOnDemand(); - // do it as the very last thing because everything else can log messages - delete wxLog::SetActiveTarget(NULL); -} - -int wxEntry( int argc, char *argv[] ) -{ -#if (defined(__WXDEBUG__) && wxUSE_MEMORY_TRACING) || wxUSE_DEBUG_CONTEXT - // This seems to be necessary since there are 'rogue' - // objects present at this point (perhaps global objects?) - // Setting a checkpoint will ignore them as far as the - // memory checking facility is concerned. - // Of course you may argue that memory allocated in globals should be - // checked, but this is a reasonable compromise. - wxDebugContext::SetCheckpoint(); -#endif - - if (!wxApp::Initialize()) - return FALSE; - - if (!wxTheApp) - { - if (!wxApp::GetInitializerFunction()) - { - printf( "wxWindows error: No initializer - use IMPLEMENT_APP macro.\n" ); - return 0; - }; - - wxTheApp = (wxApp*) (* wxApp::GetInitializerFunction()) (); - }; - - if (!wxTheApp) - { - printf( "wxWindows error: wxTheApp == NULL\n" ); - return 0; - }; - - wxTheApp->SetClassName(wxFileNameFromPath(argv[0])); - wxTheApp->SetAppName(wxFileNameFromPath(argv[0])); - - wxTheApp->argc = argc; - wxTheApp->argv = argv; - - // GUI-specific initialization, such as creating an app context. - wxTheApp->OnInitGui(); - - // Here frames insert themselves automatically - // into wxTopLevelWindows by getting created - // in OnInit(). - - int retValue = 0; - if (wxTheApp->OnInit()) - { - if (wxTheApp->Initialized()) retValue = wxTheApp->OnRun(); - } - - // flush the logged messages if any - wxLog *pLog = wxLog::GetActiveTarget(); - if ( pLog != NULL && pLog->HasPendingMessages() ) - pLog->Flush(); - - delete wxLog::SetActiveTarget(new wxLogStderr); // So dialog boxes aren't used - // for further messages - - if (wxTheApp->GetTopWindow()) - { - delete wxTheApp->GetTopWindow(); - wxTheApp->SetTopWindow(NULL); - } - - wxTheApp->DeletePendingObjects(); - - wxTheApp->OnExit(); - - wxApp::CleanUp(); - - return retValue; -}; - -// Static member initialization -wxAppInitializerFunction wxApp::m_appInitFn = (wxAppInitializerFunction) NULL; - -wxApp::wxApp() -{ - m_topWindow = NULL; - wxTheApp = this; - m_className = ""; - m_wantDebugOutput = TRUE ; - m_appName = ""; - argc = 0; - argv = NULL; - m_printMode = wxPRINT_POSTSCRIPT; - m_exitOnFrameDelete = TRUE; - m_auto3D = TRUE; - - m_mainColormap = (WXColormap) NULL; - m_appContext = (WXAppContext) NULL; - m_topLevelWidget = (WXWidget) NULL; - m_maxRequestSize = 0; - m_initialDisplay = (WXDisplay*) 0; -} - -bool wxApp::Initialized() -{ - if (GetTopWindow()) - return TRUE; - else - return FALSE; -} - -int wxApp::MainLoop() -{ - m_keepGoing = TRUE; - - /* - * Sit around forever waiting to process X-events. Property Change - * event are handled special, because they have to refer to - * the root window rather than to a widget. therefore we can't - * use an Xt-eventhandler. - */ - - XSelectInput(XtDisplay((Widget) wxTheApp->GetTopLevelWidget()), - XDefaultRootWindow(XtDisplay((Widget) wxTheApp->GetTopLevelWidget())), - PropertyChangeMask); - - XEvent event; - - // Use this flag to allow breaking the loop via wxApp::ExitMainLoop() - while (m_keepGoing) - { - XtAppNextEvent( (XtAppContext) wxTheApp->GetAppContext(), &event); - - ProcessXEvent((WXEvent*) & event); - - if (XtAppPending( (XtAppContext) wxTheApp->GetAppContext() ) == 0) - { - if (!ProcessIdle()) - { - // TODO: Robert, what's this for? -#if wxUSE_THREADS - wxMutexGuiLeave(); - usleep(20); - wxMutexGuiEnter(); -#endif - } - } - - } - - return 0; -} - -// Processes an X event. -void wxApp::ProcessXEvent(WXEvent* _event) -{ - XEvent* event = (XEvent*) _event; - - if ((event->type == KeyPress) && CheckForAccelerator(_event)) - { - // Do nothing! We intercepted and processed the event as an accelerator. - return; - } - else if (event->type == PropertyNotify) - { - HandlePropertyChange(_event); - return; - } - else if (event->type == ResizeRequest) - { - /* Terry Gitnick - 1/21/98 - * If resize event, don't resize until the last resize event for this - * window is recieved. Prevents flicker as windows are resized. - */ - - Display *disp = XtDisplay((Widget) wxTheApp->GetTopLevelWidget()); - Window win = event->xany.window; - XEvent report; - - // to avoid flicker - report = * event; - while( XCheckTypedWindowEvent (disp, win, ResizeRequest, &report)); - - // TODO: when implementing refresh optimization, we can use - // XtAddExposureToRegion to expand the window's paint region. - - XtDispatchEvent(event); - } - else - { - XtDispatchEvent(event); - } -} - -// Returns TRUE if more time is needed. -bool wxApp::ProcessIdle() -{ - wxIdleEvent event; - event.SetEventObject(this); - ProcessEvent(event); - - return event.MoreRequested(); -} - -void wxApp::ExitMainLoop() -{ - m_keepGoing = FALSE; -} - -// Is a message/event pending? -bool wxApp::Pending() -{ - XFlush(XtDisplay( (Widget) wxTheApp->GetTopLevelWidget() )); - - // Fix by Doug from STI, to prevent a stall if non-X event - // is found. - return ((XtAppPending( (XtAppContext) GetAppContext() ) & XtIMXEvent) != 0) ; -} - -// Dispatch a message. -void wxApp::Dispatch() -{ - // XtAppProcessEvent( (XtAppContext) wxTheApp->GetAppContext(), XtIMAll); - - XEvent event; - XtAppNextEvent((XtAppContext) GetAppContext(), &event); - ProcessXEvent((WXEvent*) & event); -} - -// This should be redefined in a derived class for -// handling property change events for XAtom IPC. -void wxApp::HandlePropertyChange(WXEvent *event) -{ - // by default do nothing special - XtDispatchEvent((XEvent*) event); /* let Motif do the work */ -} - -void wxApp::OnIdle(wxIdleEvent& event) -{ - static bool inOnIdle = FALSE; - - // Avoid recursion (via ProcessEvent default case) - if (inOnIdle) - return; - - inOnIdle = TRUE; - - // 'Garbage' collection of windows deleted with Close(). - DeletePendingObjects(); - - // flush the logged messages if any - wxLog *pLog = wxLog::GetActiveTarget(); - if ( pLog != NULL && pLog->HasPendingMessages() ) - pLog->Flush(); - - // Send OnIdle events to all windows - bool needMore = SendIdleEvents(); - - if (needMore) - event.RequestMore(TRUE); - - inOnIdle = FALSE; -} - -// Send idle event to all top-level windows -bool wxApp::SendIdleEvents() -{ - bool needMore = FALSE; - wxNode* node = wxTopLevelWindows.First(); - while (node) - { - wxWindow* win = (wxWindow*) node->Data(); - if (SendIdleEvents(win)) - needMore = TRUE; - - node = node->Next(); - } - return needMore; -} - -// Send idle event to window and all subwindows -bool wxApp::SendIdleEvents(wxWindow* win) -{ - bool needMore = FALSE; - - wxIdleEvent event; - event.SetEventObject(win); - win->ProcessEvent(event); - - if (event.MoreRequested()) - needMore = TRUE; - - wxNode* node = win->GetChildren().First(); - while (node) - { - wxWindow* win = (wxWindow*) node->Data(); - if (SendIdleEvents(win)) - needMore = TRUE; - - node = node->Next(); - } - return needMore ; -} - -void wxApp::DeletePendingObjects() -{ - wxNode *node = wxPendingDelete.First(); - while (node) - { - wxObject *obj = (wxObject *)node->Data(); - - delete obj; - - if (wxPendingDelete.Member(obj)) - delete node; - - // Deleting one object may have deleted other pending - // objects, so start from beginning of list again. - node = wxPendingDelete.First(); - } -} - -wxLog* wxApp::CreateLogTarget() -{ - return new wxLogGui; -} - -wxWindow* wxApp::GetTopWindow() const -{ - if (m_topWindow) - return m_topWindow; - else if (wxTopLevelWindows.Number() > 0) - return (wxWindow*) wxTopLevelWindows.First()->Data(); - else - return NULL; -} - -// Create an application context -bool wxApp::OnInitGui() -{ - XtToolkitInitialize() ; - wxTheApp->m_appContext = (WXAppContext) XtCreateApplicationContext() ; - Display *dpy = XtOpenDisplay((XtAppContext) wxTheApp->m_appContext,(String)NULL,NULL, - (const char*) wxTheApp->GetClassName(), NULL, -# if XtSpecificationRelease < 5 - 0,(Cardinal*) &argc,argv) ; -# else - 0,&argc,argv) ; -# endif - if (!dpy) { - cerr << "wxWindows could not open display for " << wxTheApp->GetClassName() << ": exiting.\n"; - exit(-1); - } - m_initialDisplay = (WXDisplay*) dpy; - - wxTheApp->m_topLevelWidget = (WXWidget) XtAppCreateShell((String)NULL, (const char*) wxTheApp->GetClassName(), - applicationShellWidgetClass,dpy, - NULL,0) ; - - // Add general resize proc - XtActionsRec rec; - rec.string = "resize"; - rec.proc = (XtActionProc)wxWidgetResizeProc; - XtAppAddActions((XtAppContext) wxTheApp->m_appContext, &rec, 1); - - GetMainColormap(dpy); - m_maxRequestSize = XMaxRequestSize((Display*) dpy); - - return TRUE; -} - -WXColormap wxApp::GetMainColormap(WXDisplay* display) -{ - if (!display) /* Must be called first with non-NULL display */ - return m_mainColormap; - - Colormap c = - DefaultColormapOfScreen(XScreenOfDisplay((Display*) display, - DefaultScreen((Display*) display))); - - if (!m_mainColormap) - m_mainColormap = (WXColormap) c; - - return (WXColormap) c; -} - -// Returns TRUE if an accelerator has been processed -bool wxApp::CheckForAccelerator(WXEvent* event) -{ - XEvent* xEvent = (XEvent*) event; - if (xEvent->xany.type == KeyPress) - { - // Find a wxWindow for this window - // TODO: should get display for the window, not the current display - Widget widget = XtWindowToWidget((Display*) wxGetDisplay(), xEvent->xany.window); - wxWindow* win = NULL; - - // Find the first wxWindow that corresponds to this event window - while (widget && !(win = wxGetWindowFromTable(widget))) - widget = XtParent(widget); - - if (!widget || !win) - return FALSE; - - wxKeyEvent keyEvent(wxEVT_CHAR); - wxTranslateKeyEvent(keyEvent, win, (Widget) 0, xEvent); - - // Now we have a wxKeyEvent and we have a wxWindow. - // Go up the hierarchy until we find a matching accelerator, - // or we get to the top. - while (win) - { - if (win->ProcessAccelerator(keyEvent)) - return TRUE; - win = win->GetParent(); - } - return FALSE; - } - return FALSE; -} - -void wxExit() -{ - int retValue = 0; - if (wxTheApp) - retValue = wxTheApp->OnExit(); - - wxApp::CleanUp(); - /* - * Exit in some platform-specific way. Not recommended that the app calls this: - * only for emergencies. - */ - exit(retValue); -} - -// Yield to other processes -bool wxYield() -{ - while (wxTheApp && wxTheApp->Pending()) - wxTheApp->Dispatch(); - return TRUE; -} - diff --git a/src/motif/bdiag.xbm b/src/motif/bdiag.xbm deleted file mode 100644 index 9ff0a1822f..0000000000 --- a/src/motif/bdiag.xbm +++ /dev/null @@ -1,6 +0,0 @@ -#define bdiag_width 16 -#define bdiag_height 16 -static char bdiag_bits[] = { - 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x10, 0x08, 0x08, 0x04, 0x04, - 0x02, 0x02, 0x01, 0x01, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x10, - 0x08, 0x08, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01}; diff --git a/src/motif/bitmap.cpp b/src/motif/bitmap.cpp deleted file mode 100644 index 2f1b0e5218..0000000000 --- a/src/motif/bitmap.cpp +++ /dev/null @@ -1,1030 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: bitmap.cpp -// Purpose: wxBitmap -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "bitmap.h" -#endif - -#include "wx/setup.h" -#include "wx/utils.h" -#include "wx/palette.h" -#include "wx/bitmap.h" -#include "wx/icon.h" -#include "wx/log.h" -#include "wx/control.h" -#include "wx/dcmemory.h" - -#include - -#include "wx/motif/private.h" - -#if wxUSE_XPM -#include -#endif - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxBitmap, wxGDIObject) -IMPLEMENT_DYNAMIC_CLASS(wxMask, wxObject) -#endif - -wxBitmapRefData::wxBitmapRefData() -{ - m_ok = FALSE; - m_width = 0; - m_height = 0; - m_depth = 0; - m_quality = 0; - m_numColors = 0; - m_bitmapMask = NULL; - - m_pixmap = (WXPixmap) 0; - m_display = (WXDisplay*) 0; - - m_freePixmap = TRUE; //TODO: necessary? - m_freeColors = (unsigned long*) 0; - m_freeColorsCount = 0; - - // These 5 variables are for wxControl - m_insensPixmap = (WXPixmap) 0; - m_labelPixmap = (WXPixmap) 0; - m_armPixmap = (WXPixmap) 0; - m_image = (WXImage*) 0; - m_insensImage = (WXImage*) 0; -} - -wxBitmapRefData::~wxBitmapRefData() -{ - if (m_labelPixmap) - XmDestroyPixmap (DefaultScreenOfDisplay ((Display*) m_display), (Pixmap) m_labelPixmap); - - if (m_armPixmap) - XmDestroyPixmap (DefaultScreenOfDisplay ((Display*) m_display), (Pixmap) m_armPixmap); - - if (m_insensPixmap) - XmDestroyPixmap (DefaultScreenOfDisplay ((Display*) m_display), (Pixmap) m_insensPixmap); - - if (m_image) - { - XmUninstallImage ((XImage*) m_image); - XtFree ((char *) (XImage*) m_image); - } - - if (m_insensImage) - { - XmUninstallImage ((XImage*) m_insensImage); - delete[] ((XImage*) m_insensImage)->data; - XtFree ((char *) (XImage*) m_insensImage); - } - if (m_pixmap && m_freePixmap) - XFreePixmap ((Display*) m_display, (Pixmap) m_pixmap); - - if (m_freeColors) - { - int screen = DefaultScreen((Display*) m_display); - Colormap cmp = DefaultColormap((Display*) m_display,screen); - long llp; - for(llp = 0;llp < m_freeColorsCount;llp++) - XFreeColors((Display*) m_display, cmp, &m_freeColors[llp], 1, 0L); - delete m_freeColors; - }; - - if (m_bitmapMask) - delete m_bitmapMask; - m_bitmapMask = NULL; -} - -wxList wxBitmap::sm_handlers; - -wxBitmap::wxBitmap() -{ - m_refData = NULL; - - if ( wxTheBitmapList ) - wxTheBitmapList->AddBitmap(this); -} - -wxBitmap::~wxBitmap() -{ - if (wxTheBitmapList) - wxTheBitmapList->DeleteObject(this); -} - -wxBitmap::wxBitmap(const char bits[], int width, int height, int depth) -{ - m_refData = new wxBitmapRefData; - - (void) Create((void*) bits, wxBITMAP_TYPE_XBM_DATA, width, height, depth); - - if ( wxTheBitmapList ) - wxTheBitmapList->AddBitmap(this); -} - -wxBitmap::wxBitmap(int w, int h, int d) -{ - (void)Create(w, h, d); - - if ( wxTheBitmapList ) - wxTheBitmapList->AddBitmap(this); -} - -wxBitmap::wxBitmap(void *data, long type, int width, int height, int depth) -{ - (void) Create(data, type, width, height, depth); - - if ( wxTheBitmapList ) - wxTheBitmapList->AddBitmap(this); -} - -wxBitmap::wxBitmap(const wxString& filename, long type) -{ - LoadFile(filename, (int)type); - - if ( wxTheBitmapList ) - wxTheBitmapList->AddBitmap(this); -} - -// Create from XPM data -static wxControl* sg_Control = NULL; -wxBitmap::wxBitmap(char **data, wxControl* control) -{ - // Pass the control to the Create function using a global - sg_Control = control; - - (void) Create((void *)data, wxBITMAP_TYPE_XPM_DATA, 0, 0, 0); - - sg_Control = (wxControl*) NULL; -} - -bool wxBitmap::Create(int w, int h, int d) -{ - UnRef(); - - m_refData = new wxBitmapRefData; - - if (d < 1) - d = wxDisplayDepth(); - - M_BITMAPDATA->m_width = w; - M_BITMAPDATA->m_height = h; - M_BITMAPDATA->m_depth = d; - M_BITMAPDATA->m_freePixmap = TRUE; - - Display *dpy = (Display*) wxGetDisplay(); - - M_BITMAPDATA->m_display = dpy; /* MATTHEW: [4] Remember the display */ - - M_BITMAPDATA->m_pixmap = (WXPixmap) XCreatePixmap (dpy, RootWindow (dpy, DefaultScreen (dpy)), - w, h, d); - - M_BITMAPDATA->m_ok = (M_BITMAPDATA->m_pixmap != (WXPixmap) 0) ; - return M_BITMAPDATA->m_ok; -} - -bool wxBitmap::LoadFile(const wxString& filename, long type) -{ - UnRef(); - - m_refData = new wxBitmapRefData; - - wxBitmapHandler *handler = FindHandler(type); - - if ( handler == NULL ) { - wxLogWarning("no bitmap handler for type %d defined.", type); - - return FALSE; - } - - return handler->LoadFile(this, filename, type, -1, -1); -} - -bool wxBitmap::Create(void *data, long type, int width, int height, int depth) -{ - UnRef(); - - m_refData = new wxBitmapRefData; - - wxBitmapHandler *handler = FindHandler(type); - - if ( handler == NULL ) { - wxLogWarning("no bitmap handler for type %d defined.", type); - - return FALSE; - } - - return handler->Create(this, data, type, width, height, depth); -} - -bool wxBitmap::SaveFile(const wxString& filename, int type, const wxPalette *palette) -{ - wxBitmapHandler *handler = FindHandler(type); - - if ( handler == NULL ) { - wxLogWarning("no bitmap handler for type %d defined.", type); - - return FALSE; - } - - return handler->SaveFile(this, filename, type, palette); -} - -void wxBitmap::SetWidth(int w) -{ - if (!M_BITMAPDATA) - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_width = w; -} - -void wxBitmap::SetHeight(int h) -{ - if (!M_BITMAPDATA) - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_height = h; -} - -void wxBitmap::SetDepth(int d) -{ - if (!M_BITMAPDATA) - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_depth = d; -} - -void wxBitmap::SetQuality(int q) -{ - if (!M_BITMAPDATA) - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_quality = q; -} - -void wxBitmap::SetOk(bool isOk) -{ - if (!M_BITMAPDATA) - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_ok = isOk; -} - -void wxBitmap::SetPalette(const wxPalette& palette) -{ - if (!M_BITMAPDATA) - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_bitmapPalette = palette ; -} - -void wxBitmap::SetMask(wxMask *mask) -{ - if (!M_BITMAPDATA) - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_bitmapMask = mask ; -} - -void wxBitmap::AddHandler(wxBitmapHandler *handler) -{ - sm_handlers.Append(handler); -} - -void wxBitmap::InsertHandler(wxBitmapHandler *handler) -{ - sm_handlers.Insert(handler); -} - -bool wxBitmap::RemoveHandler(const wxString& name) -{ - wxBitmapHandler *handler = FindHandler(name); - if ( handler ) - { - sm_handlers.DeleteObject(handler); - return TRUE; - } - else - return FALSE; -} - -wxBitmapHandler *wxBitmap::FindHandler(const wxString& name) -{ - wxNode *node = sm_handlers.First(); - while ( node ) - { - wxBitmapHandler *handler = (wxBitmapHandler *)node->Data(); - if ( handler->GetName() == name ) - return handler; - node = node->Next(); - } - return NULL; -} - -wxBitmapHandler *wxBitmap::FindHandler(const wxString& extension, long bitmapType) -{ - wxNode *node = sm_handlers.First(); - while ( node ) - { - wxBitmapHandler *handler = (wxBitmapHandler *)node->Data(); - if ( handler->GetExtension() == extension && - (bitmapType == -1 || handler->GetType() == bitmapType) ) - return handler; - node = node->Next(); - } - return NULL; -} - -wxBitmapHandler *wxBitmap::FindHandler(long bitmapType) -{ - wxNode *node = sm_handlers.First(); - while ( node ) - { - wxBitmapHandler *handler = (wxBitmapHandler *)node->Data(); - if (handler->GetType() == bitmapType) - return handler; - node = node->Next(); - } - return NULL; -} - -/* -* wxMask -*/ - -wxMask::wxMask() -{ - m_pixmap = (WXPixmap) 0; -} - -// Construct a mask from a bitmap and a colour indicating -// the transparent area -wxMask::wxMask(const wxBitmap& bitmap, const wxColour& colour) -{ - m_pixmap = (WXPixmap) 0; - - Create(bitmap, colour); -} - -// Construct a mask from a bitmap and a palette index indicating -// the transparent area -wxMask::wxMask(const wxBitmap& bitmap, int paletteIndex) -{ - m_pixmap = (WXPixmap) 0; - - Create(bitmap, paletteIndex); -} - -// Construct a mask from a mono bitmap (copies the bitmap). -wxMask::wxMask(const wxBitmap& bitmap) -{ - m_pixmap = (WXPixmap) 0; - - Create(bitmap); -} - -wxMask::~wxMask() -{ - // TODO: this may be the wrong display - if ( m_pixmap ) - XFreePixmap ((Display*) wxGetDisplay(), (Pixmap) m_pixmap); -} - -// Create a mask from a mono bitmap (copies the bitmap). -bool wxMask::Create(const wxBitmap& WXUNUSED(bitmap)) -{ - // TODO - return FALSE; -} - -// Create a mask from a bitmap and a palette index indicating -// the transparent area -bool wxMask::Create(const wxBitmap& WXUNUSED(bitmap), int WXUNUSED(paletteIndex)) -{ - // TODO - return FALSE; -} - -// Create a mask from a bitmap and a colour indicating -// the transparent area -bool wxMask::Create(const wxBitmap& WXUNUSED(bitmap), const wxColour& WXUNUSED(colour)) -{ - // TODO - return FALSE; -} - -/* -* wxBitmapHandler -*/ - -IMPLEMENT_DYNAMIC_CLASS(wxBitmapHandler, wxObject) - -bool wxBitmapHandler::Create(wxBitmap *WXUNUSED(bitmap), void *WXUNUSED(data), long WXUNUSED(type), - int WXUNUSED(width), int WXUNUSED(height), int WXUNUSED(depth)) -{ - return FALSE; -} - -bool wxBitmapHandler::LoadFile(wxBitmap *WXUNUSED(bitmap), const wxString& WXUNUSED(name), long WXUNUSED(type), - int WXUNUSED(desiredWidth), int WXUNUSED(desiredHeight)) -{ - return FALSE; -} - -bool wxBitmapHandler::SaveFile(wxBitmap *WXUNUSED(bitmap), const wxString& WXUNUSED(name), int WXUNUSED(type), - const wxPalette *WXUNUSED(palette)) -{ - return FALSE; -} - -/* -* Standard handlers -*/ - -class WXDLLEXPORT wxXBMFileHandler: public wxBitmapHandler -{ - DECLARE_DYNAMIC_CLASS(wxXBMFileHandler) -public: - inline wxXBMFileHandler() - { - m_name = "XBM file"; - m_extension = "xbm"; - m_type = wxBITMAP_TYPE_XBM; - }; - - virtual bool LoadFile(wxBitmap *bitmap, const wxString& name, long flags, - int desiredWidth, int desiredHeight); -}; -IMPLEMENT_DYNAMIC_CLASS(wxXBMFileHandler, wxBitmapHandler) - -bool wxXBMFileHandler::LoadFile(wxBitmap *bitmap, const wxString& name, long WXUNUSED(flags), - int WXUNUSED(desiredWidth), int WXUNUSED(desiredHeight)) -{ - M_BITMAPHANDLERDATA->m_freePixmap = TRUE; - - int hotX, hotY; - unsigned int w, h; - Pixmap pixmap; - - Display *dpy = (Display*) wxGetDisplay(); - M_BITMAPDATA->m_display = (WXDisplay*) dpy; - - int value = XReadBitmapFile (dpy, RootWindow (dpy, DefaultScreen (dpy)), - (char*) (const char*) name, &w, &h, &pixmap, &hotX, &hotY); - M_BITMAPHANDLERDATA->m_width = w; - M_BITMAPHANDLERDATA->m_height = h; - M_BITMAPHANDLERDATA->m_depth = 1; - M_BITMAPHANDLERDATA->m_pixmap = (WXPixmap) pixmap; - - if ((value == BitmapFileInvalid) || - (value == BitmapOpenFailed) || - (value == BitmapNoMemory)) - { - M_BITMAPHANDLERDATA->m_ok = FALSE; - M_BITMAPHANDLERDATA->m_pixmap = (WXPixmap) 0; - } - else - M_BITMAPHANDLERDATA->m_ok = TRUE; - - return M_BITMAPHANDLERDATA->m_ok ; -} - -class WXDLLEXPORT wxXBMDataHandler: public wxBitmapHandler -{ - DECLARE_DYNAMIC_CLASS(wxXBMDataHandler) -public: - inline wxXBMDataHandler() - { - m_name = "XBM data"; - m_extension = "xbm"; - m_type = wxBITMAP_TYPE_XBM_DATA; - }; - - virtual bool Create(wxBitmap *bitmap, void *data, long flags, int width, int height, int depth = 1); -}; -IMPLEMENT_DYNAMIC_CLASS(wxXBMDataHandler, wxBitmapHandler) - -bool wxXBMDataHandler::Create( wxBitmap *bitmap, void *data, long WXUNUSED(flags), - int width, int height, int WXUNUSED(depth)) -{ - M_BITMAPHANDLERDATA->m_width = width; - M_BITMAPHANDLERDATA->m_height = height; - M_BITMAPHANDLERDATA->m_depth = 1; - M_BITMAPHANDLERDATA->m_freePixmap = TRUE; - - Display *dpy = (Display*) wxGetDisplay(); - M_BITMAPHANDLERDATA->m_display = (WXDisplay*) dpy; - - M_BITMAPHANDLERDATA->m_pixmap = (WXPixmap) XCreateBitmapFromData (dpy, RootWindow (dpy, DefaultScreen (dpy)), (char*) data, width, height); - M_BITMAPHANDLERDATA->m_ok = (M_BITMAPHANDLERDATA->m_pixmap != (WXPixmap) 0) ; - - // code for wxControl. TODO: can we avoid doing this until we need it? - // E.g. have CreateButtonPixmaps which is called on demand. - XImage* image = (XImage *) XtMalloc (sizeof (XImage)); - image->width = width; - image->height = height; - image->data = (char*) data; - image->depth = 1; - image->xoffset = 0; - image->format = XYBitmap; - image->byte_order = LSBFirst; - image->bitmap_unit = 8; - image->bitmap_bit_order = LSBFirst; - image->bitmap_pad = 8; - image->bytes_per_line = (width + 7) >> 3; - - char tmp[128]; - sprintf (tmp, "Im%x", (unsigned int) image); - XmInstallImage (image, tmp); - - // Build our manually stipped pixmap. - - int bpl = (width + 7) / 8; - char *data1 = new char[height * bpl]; - char* bits = (char*) data; - int i; - for (i = 0; i < height; i++) - { - int mask = i % 2 ? 0x55 : 0xaa; - int j; - for (j = 0; j < bpl; j++) - data1[i * bpl + j] = bits[i * bpl + j] & mask; - } - XImage* insensImage = (XImage *) XtMalloc (sizeof (XImage)); - insensImage->width = width; - insensImage->height = height; - insensImage->data = data1; - insensImage->depth = 1; - insensImage->xoffset = 0; - insensImage->format = XYBitmap; - insensImage->byte_order = LSBFirst; - insensImage->bitmap_unit = 8; - insensImage->bitmap_bit_order = LSBFirst; - insensImage->bitmap_pad = 8; - insensImage->bytes_per_line = bpl; - - sprintf (tmp, "Not%x", (unsigned int)insensImage); - XmInstallImage (insensImage, tmp); - - M_BITMAPHANDLERDATA->m_image = (WXImage*) image; - M_BITMAPHANDLERDATA->m_insensImage = (WXImage*) insensImage; - - return TRUE; -} - -#if wxUSE_XPM -class WXDLLEXPORT wxXPMFileHandler: public wxBitmapHandler -{ - DECLARE_DYNAMIC_CLASS(wxXPMFileHandler) -public: - inline wxXPMFileHandler() - { - m_name = "XPM file"; - m_extension = "xpm"; - m_type = wxBITMAP_TYPE_XPM; - }; - - virtual bool LoadFile(wxBitmap *bitmap, const wxString& name, long flags, - int desiredWidth, int desiredHeight); - virtual bool SaveFile(wxBitmap *bitmap, const wxString& name, int type, const wxPalette *palette = NULL); -}; - -IMPLEMENT_DYNAMIC_CLASS(wxXPMFileHandler, wxBitmapHandler) - -bool wxXPMFileHandler::LoadFile( wxBitmap *bitmap, const wxString& name, long WXUNUSED(flags), - int WXUNUSED(desiredWidth), int WXUNUSED(desiredHeight) ) -{ - Display *dpy = (Display*) wxGetDisplay(); - M_BITMAPHANDLERDATA->m_display = (WXDisplay*) dpy; - - XpmAttributes xpmAttr; - Pixmap pixmap; - Pixmap mask = 0; - - M_BITMAPHANDLERDATA->m_ok = FALSE; - xpmAttr.valuemask = XpmReturnInfos | XpmCloseness; - xpmAttr.closeness = 40000; - int errorStatus = XpmReadFileToPixmap(dpy, - RootWindow(dpy, DefaultScreen(dpy)), (char*) (const char*) name, - &pixmap, &mask, &xpmAttr); - - if (errorStatus == XpmSuccess) - { - M_BITMAPHANDLERDATA->m_pixmap = (WXPixmap) pixmap; - if ( mask ) - { - M_BITMAPHANDLERDATA->m_bitmapMask = new wxMask; - M_BITMAPHANDLERDATA->m_bitmapMask->SetPixmap((WXPixmap) mask); - } - - unsigned int depthRet; - int xRet, yRet; - unsigned int widthRet, heightRet, borderWidthRet; - Window rootWindowRet; - XGetGeometry(dpy, pixmap, &rootWindowRet, &xRet, &yRet, - &widthRet, &heightRet, &borderWidthRet, &depthRet); - - M_BITMAPHANDLERDATA->m_width = xpmAttr.width; - M_BITMAPHANDLERDATA->m_height = xpmAttr.height; - - /* - if ( xpmAttr.npixels > 2 ) - { - M_BITMAPHANDLERDATA->m_depth = 8; // TODO: next time not just a guess :-) ... - } else - { - M_BITMAPHANDLERDATA->m_depth = 1; // mono - } - */ - - M_BITMAPHANDLERDATA->m_depth = depthRet; - - M_BITMAPHANDLERDATA->m_numColors = xpmAttr.npixels; - - XpmFreeAttributes(&xpmAttr); - - M_BITMAPHANDLERDATA->m_ok = TRUE; - return TRUE; - } else - { - // XpmDebugError(errorStatus, name); - M_BITMAPHANDLERDATA->m_ok = FALSE; - return FALSE; - } -} - -bool wxXPMFileHandler::SaveFile( wxBitmap *bitmap, const wxString& name, int WXUNUSED(type), - const wxPalette *WXUNUSED(palette)) -{ - if (M_BITMAPHANDLERDATA->m_ok && M_BITMAPHANDLERDATA->m_pixmap) - { - Display *dpy = (Display*) M_BITMAPHANDLERDATA->m_display; - int errorStatus = XpmWriteFileFromPixmap(dpy, (char*) (const char*) name, - (Pixmap) M_BITMAPHANDLERDATA->m_pixmap, - (M_BITMAPHANDLERDATA->m_bitmapMask ? (Pixmap) M_BITMAPHANDLERDATA->m_bitmapMask->GetPixmap() : (Pixmap) 0), - (XpmAttributes *) NULL); - if (errorStatus == XpmSuccess) - return TRUE; - else - return FALSE; - } - else - return FALSE; -} - -class WXDLLEXPORT wxXPMDataHandler: public wxBitmapHandler -{ - DECLARE_DYNAMIC_CLASS(wxXPMDataHandler) -public: - inline wxXPMDataHandler() - { - m_name = "XPM data"; - m_extension = "xpm"; - m_type = wxBITMAP_TYPE_XPM_DATA; - }; - - virtual bool Create(wxBitmap *bitmap, void *data, long flags, int width, int height, int depth = 1); -}; -IMPLEMENT_DYNAMIC_CLASS(wxXPMDataHandler, wxBitmapHandler) - -bool wxXPMDataHandler::Create( wxBitmap *bitmap, void *data, long WXUNUSED(flags), - int width, int height, int WXUNUSED(depth)) -{ - M_BITMAPHANDLERDATA->m_width = width; - M_BITMAPHANDLERDATA->m_height = height; - M_BITMAPHANDLERDATA->m_depth = 1; - M_BITMAPHANDLERDATA->m_freePixmap = TRUE; - - Display *dpy = (Display*) wxGetDisplay(); - M_BITMAPHANDLERDATA->m_display = (WXDisplay*) dpy; - - XpmAttributes xpmAttr; - - xpmAttr.valuemask = XpmReturnInfos; /* nothing yet, but get infos back */ - - XpmColorSymbol symbolicColors[4]; - if (sg_Control && sg_Control->GetMainWidget()) - { - symbolicColors[0].name = "foreground"; - symbolicColors[0].value = NULL; - symbolicColors[1].name = "background"; - symbolicColors[1].value = NULL; - XtVaGetValues((Widget) sg_Control->GetMainWidget(), - XmNforeground, &symbolicColors[0].pixel, - XmNbackground, &symbolicColors[1].pixel,NULL); - xpmAttr.numsymbols = 2; - xpmAttr.colorsymbols = symbolicColors; - xpmAttr.valuemask |= XpmColorSymbols; // add flag - } - - Pixmap pixmap; - Pixmap mask = 0; - int ErrorStatus = XpmCreatePixmapFromData(dpy, RootWindow(dpy, DefaultScreen(dpy)), - (char**) data, &pixmap, &mask, &xpmAttr); - if (ErrorStatus == XpmSuccess) - { - // Set attributes - M_BITMAPHANDLERDATA->m_width = xpmAttr.width; - M_BITMAPHANDLERDATA->m_height = xpmAttr.height; - - unsigned int depthRet; - int xRet, yRet; - unsigned int widthRet, heightRet, borderWidthRet; - Window rootWindowRet; - XGetGeometry(dpy, pixmap, &rootWindowRet, &xRet, &yRet, - &widthRet, &heightRet, &borderWidthRet, &depthRet); - - /* - if ( xpmAttr.npixels > 2 ) - { - M_BITMAPHANDLERDATA->m_depth = 8; // next time not just a guess :-) ... - } else - { - M_BITMAPHANDLERDATA->m_depth = 1; // mono - } - */ - - M_BITMAPHANDLERDATA->m_depth = depthRet; - - M_BITMAPHANDLERDATA->m_numColors = xpmAttr.npixels; - XpmFreeAttributes(&xpmAttr); - M_BITMAPHANDLERDATA->m_ok = TRUE; - M_BITMAPHANDLERDATA->m_pixmap = (WXPixmap) pixmap; - if ( mask ) - { - M_BITMAPHANDLERDATA->m_bitmapMask = new wxMask; - M_BITMAPHANDLERDATA->m_bitmapMask->SetPixmap((WXPixmap) mask); - } - } - else - { - // XpmDebugError(ErrorStatus, NULL); - M_BITMAPHANDLERDATA->m_ok = FALSE; - } - return M_BITMAPHANDLERDATA->m_ok ; -} - -#endif - -void wxBitmap::CleanUpHandlers() -{ - wxNode *node = sm_handlers.First(); - while ( node ) - { - wxBitmapHandler *handler = (wxBitmapHandler *)node->Data(); - wxNode *next = node->Next(); - delete handler; - delete node; - node = next; - } -} - -void wxBitmap::InitStandardHandlers() -{ - // Initialize all standard bitmap or derived class handlers here. - AddHandler(new wxXBMFileHandler); - AddHandler(new wxXBMDataHandler); - - // XPM is considered standard for Moif, although it can be omitted if absolutely - // necessary. -#if wxUSE_XPM - AddHandler(new wxXPMFileHandler); - AddHandler(new wxXPMDataHandler); -#endif -} - -WXPixmap wxBitmap::GetLabelPixmap (WXWidget w) -{ - if (M_BITMAPDATA->m_image == (WXPixmap) 0) - return M_BITMAPDATA->m_pixmap; - - Display *dpy = (Display*) M_BITMAPDATA->m_display; - -#ifdef FOO - /* - If we do: - if (labelPixmap) return labelPixmap; - things can be wrong, because colors can have been changed. - - If we do: - if (labelPixmap) - XmDestroyPixmap(DefaultScreenOfDisplay(dpy),labelPixmap) ; - we got BadDrawable if the pixmap is referenced by multiples widgets - - this is a catch22!! - - So, before doing thing really clean, I just do nothing; if the pixmap is - referenced by many widgets, Motif performs caching functions. - And if pixmap is referenced with multiples colors, we just have some - memory leaks... I hope we can deal with them... - */ - // Must be destroyed, because colours can have been changed! - if (M_BITMAPDATA->m_labelPixmap) - XmDestroyPixmap (DefaultScreenOfDisplay (dpy), M_BITMAPDATA->m_labelPixmap); -#endif - - char tmp[128]; - sprintf (tmp, "Im%x", (unsigned int) M_BITMAPDATA->m_image); - - Pixel fg, bg; - Widget widget = (Widget) w; - - while (XmIsGadget ( widget )) - widget = XtParent (widget); - XtVaGetValues (widget, XmNbackground, &bg, XmNforeground, &fg, NULL); - - M_BITMAPDATA->m_labelPixmap = (WXPixmap) XmGetPixmap (DefaultScreenOfDisplay (dpy), tmp, fg, bg); - - return M_BITMAPDATA->m_labelPixmap; -} - -WXPixmap wxBitmap::GetArmPixmap (WXWidget w) -{ - if (M_BITMAPDATA->m_image == (WXPixmap) 0) - return M_BITMAPDATA->m_pixmap; - - Display *dpy = (Display*) M_BITMAPDATA->m_display; -#ifdef FOO - See GetLabelPixmap () comment - // Must be destroyed, because colours can have been changed! - if (M_BITMAPDATA->m_armPixmap) - XmDestroyPixmap (DefaultScreenOfDisplay (dpy), M_BITMAPDATA->m_armPixmap); -#endif - - char tmp[128]; - sprintf (tmp, "Im%x", (unsigned int) M_BITMAPDATA->m_image); - - Pixel fg, bg; - Widget widget = (Widget) w; - - XtVaGetValues (widget, XmNarmColor, &bg, NULL); - while (XmIsGadget (widget)) - widget = XtParent (widget); - XtVaGetValues (widget, XmNforeground, &fg, NULL); - - M_BITMAPDATA->m_armPixmap = (WXPixmap) XmGetPixmap (DefaultScreenOfDisplay (dpy), tmp, fg, bg); - - return M_BITMAPDATA->m_armPixmap; -} - -WXPixmap wxBitmap::GetInsensPixmap (WXWidget w) -{ - Display *dpy = (Display*) M_BITMAPDATA->m_display; - - if (M_BITMAPDATA->m_insensPixmap) - return M_BITMAPDATA->m_insensPixmap; - - if (!w) - { - M_BITMAPDATA->m_insensPixmap = (WXPixmap) XCreateInsensitivePixmap(dpy, (Pixmap) M_BITMAPDATA->m_pixmap); - if (M_BITMAPDATA->m_insensPixmap) - return M_BITMAPDATA->m_insensPixmap; - else - return M_BITMAPDATA->m_pixmap; - } - - if (M_BITMAPDATA->m_insensImage == (WXPixmap) 0) - return M_BITMAPDATA->m_pixmap; - -#ifdef FOO - See GetLabelPixmap () comment - // Must be destroyed, because colours can have been changed! - if (M_BITMAPDATA->m_insensPixmap) - XmDestroyPixmap (DefaultScreenOfDisplay (dpy), (Pixmap) M_BITMAPDATA->m_insensPixmap); -#endif - - char tmp[128]; - sprintf (tmp, "Not%x", (unsigned int) M_BITMAPDATA->m_insensImage); - - Pixel fg, bg; - Widget widget = (Widget) w; - - while (XmIsGadget (widget)) - widget = XtParent (widget); - XtVaGetValues (widget, XmNbackground, &bg, XmNforeground, &fg, NULL); - - M_BITMAPDATA->m_insensPixmap = (WXPixmap) XmGetPixmap (DefaultScreenOfDisplay (dpy), tmp, fg, bg); - - return M_BITMAPDATA->m_insensPixmap; -} - -// We may need this sometime... - -/**************************************************************************** - - NAME - XCreateInsensitivePixmap - create a grayed-out copy of a pixmap - - SYNOPSIS - Pixmap XCreateInsensitivePixmap( Display *display, Pixmap pixmap ) - - DESCRIPTION - This function creates a grayed-out copy of the argument pixmap, suitable - for use as a XmLabel's XmNlabelInsensitivePixmap resource. - - RETURN VALUES - The return value is the new Pixmap id or zero on error. Errors include - a NULL display argument or an invalid Pixmap argument. - - ERRORS - If one of the XLib functions fail, it will produce a X error. The - default X error handler prints a diagnostic and calls exit(). - - SEE ALSO - XCopyArea(3), XCreateBitmapFromData(3), XCreateGC(3), XCreatePixmap(3), - XFillRectangle(3), exit(2) - - AUTHOR - John R Veregge - john@puente.jpl.nasa.gov - Advanced Engineering and Prototyping Group (AEG) - Information Systems Technology Section (395) - Jet Propulsion Lab - Calif Institute of Technology - -*****************************************************************************/ - -Pixmap -XCreateInsensitivePixmap( Display *display, Pixmap pixmap ) - -{ - static - char stipple_data[] = - { - 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, - 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, - 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA, - 0x55, 0x55, 0xAA, 0xAA, 0x55, 0x55, 0xAA, 0xAA - }; - GC gc; - Pixmap ipixmap, stipple; - unsigned width, height, depth; - - Window window; /* These return values */ - unsigned border; /* from XGetGeometry() */ - int x, y; /* are not needed. */ - - ipixmap = 0; - - if ( NULL == display || 0 == pixmap ) - return ipixmap; - - if ( 0 == XGetGeometry( display, pixmap, &window, &x, &y, - &width, &height, &border, &depth ) - ) - return ipixmap; /* BadDrawable: probably an invalid pixmap */ - - /* Get the stipple pixmap to be used to 'gray-out' the argument pixmap. - */ - stipple = XCreateBitmapFromData( display, pixmap, stipple_data, 16, 16 ); - if ( 0 != stipple ) - { - gc = XCreateGC( display, pixmap, (XtGCMask)0, (XGCValues*)NULL ); - if ( NULL != gc ) - { - /* Create an identical copy of the argument pixmap. - */ - ipixmap = XCreatePixmap( display, pixmap, width, height, depth ); - if ( 0 != ipixmap ) - { - /* Copy the argument pixmap into the new pixmap. - */ - XCopyArea( display, pixmap, ipixmap, - gc, 0, 0, width, height, 0, 0 ); - - /* Refill the new pixmap using the stipple algorithm/pixmap. - */ - XSetStipple( display, gc, stipple ); - XSetFillStyle( display, gc, FillStippled ); - XFillRectangle( display, ipixmap, gc, 0, 0, width, height ); - } - XFreeGC( display, gc ); - } - XFreePixmap( display, stipple ); - } - return ipixmap; -} - -// Creates a bitmap with transparent areas drawn in -// the given colour. -wxBitmap wxCreateMaskedBitmap(wxBitmap& bitmap, wxColour& colour) -{ - wxBitmap newBitmap(bitmap.GetWidth(), - bitmap.GetHeight(), - bitmap.GetDepth()); - wxMemoryDC destDC; - wxMemoryDC srcDC; - srcDC.SelectObject(bitmap); - destDC.SelectObject(newBitmap); - - wxBrush brush(colour, wxSOLID); - destDC.SetOptimization(FALSE); - destDC.SetBackground(brush); - destDC.Clear(); - destDC.Blit(0, 0, bitmap.GetWidth(), bitmap.GetHeight(), & srcDC, 0, 0, wxCOPY, TRUE); - - return newBitmap; -} diff --git a/src/motif/bmpbuttn.cpp b/src/motif/bmpbuttn.cpp deleted file mode 100644 index f5e7767b14..0000000000 --- a/src/motif/bmpbuttn.cpp +++ /dev/null @@ -1,254 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: bmpbuttn.cpp -// Purpose: wxBitmapButton -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "bmpbuttn.h" -#endif - -#include "wx/bmpbuttn.h" - -#include -#include - -#include "wx/motif/private.h" - -// Implemented in button.cpp -void wxButtonCallback (Widget w, XtPointer clientData, XtPointer ptr); - -Pixmap XCreateInsensitivePixmap( Display *display, Pixmap pixmap ); - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxBitmapButton, wxButton) -#endif - -wxBitmapButton::wxBitmapButton() -{ - m_marginX = wxDEFAULT_BUTTON_MARGIN; m_marginY = wxDEFAULT_BUTTON_MARGIN; - m_insensPixmap = (WXPixmap) 0; -} - -bool wxBitmapButton::Create(wxWindow *parent, wxWindowID id, const wxBitmap& bitmap, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - m_buttonBitmap = bitmap; - m_buttonBitmapOriginal = bitmap; - m_buttonBitmapSelected = bitmap; - m_buttonBitmapSelectedOriginal = bitmap; - - SetName(name); - SetValidator(validator); - parent->AddChild(this); - - m_backgroundColour = parent->GetBackgroundColour() ; - m_foregroundColour = parent->GetForegroundColour() ; - m_windowStyle = style; - m_marginX = 0; - m_marginY = 0; - - /* - int x = pos.x; - int y = pos.y; - int width = size.x; - int height = size.y; - */ - - if (id == -1) - m_windowId = NewControlId(); - else - m_windowId = id; - - Widget parentWidget = (Widget) parent->GetClientWidget(); - - /* - * Patch Note (important) - * There is no major reason to put a defaultButtonThickness here. - * Not requesting it give the ability to put wxButton with a spacing - * as small as requested. However, if some button become a DefaultButton, - * other buttons are no more aligned -- This is why we set - * defaultButtonThickness of ALL buttons belonging to the same wxPanel, - * in the ::SetDefaultButton method. - */ - Widget buttonWidget = XtVaCreateManagedWidget ("button", - - // Gadget causes problems for default button operation. -#if wxUSE_GADGETS - xmPushButtonGadgetClass, parentWidget, -#else - xmPushButtonWidgetClass, parentWidget, -#endif - // XmNdefaultButtonShadowThickness, 1, // See comment for wxButton::SetDefault - NULL); - - m_mainWidget = (WXWidget) buttonWidget; - - m_windowFont = parent->GetFont(); - ChangeFont(FALSE); - - ChangeBackgroundColour (); - - DoSetBitmap(); - - XtAddCallback (buttonWidget, XmNactivateCallback, (XtCallbackProc) wxButtonCallback, - (XtPointer) this); - - SetCanAddEventHandler(TRUE); - AttachWidget (parent, m_mainWidget, (WXWidget) NULL, pos.x, pos.y, size.x, size.y); - - return TRUE; -} - -wxBitmapButton::~wxBitmapButton() -{ - SetBitmapLabel(wxNullBitmap); - - if (m_insensPixmap) - XmDestroyPixmap (DefaultScreenOfDisplay ((Display*) GetXDisplay()), (Pixmap) m_insensPixmap); -} - -void wxBitmapButton::SetBitmapLabel(const wxBitmap& bitmap) -{ - m_buttonBitmapOriginal = bitmap; - m_buttonBitmap = bitmap; - - DoSetBitmap(); -} - -void wxBitmapButton::SetBitmapSelected(const wxBitmap& sel) -{ - m_buttonBitmapSelected = sel; - m_buttonBitmapSelectedOriginal = sel; - - DoSetBitmap(); -}; - -void wxBitmapButton::SetBitmapFocus(const wxBitmap& focus) -{ - m_buttonBitmapFocus = focus; - // Not used in Motif -}; - -void wxBitmapButton::SetBitmapDisabled(const wxBitmap& disabled) -{ - m_buttonBitmapDisabled = disabled; - m_buttonBitmapDisabledOriginal = disabled; - - DoSetBitmap(); -}; - -void wxBitmapButton::DoSetBitmap() -{ - if (m_buttonBitmapOriginal.Ok()) - { - Pixmap pixmap = 0; - Pixmap insensPixmap = 0; - Pixmap armPixmap = 0; - - // Must re-make the bitmap to have its transparent areas drawn - // in the current widget background colour. - if (m_buttonBitmapOriginal.GetMask()) - { - int backgroundPixel; - XtVaGetValues((Widget) m_mainWidget, XmNbackground, &backgroundPixel, - NULL); - - wxColour col; - col.SetPixel(backgroundPixel); - - wxBitmap newBitmap = wxCreateMaskedBitmap(m_buttonBitmapOriginal, col); - m_buttonBitmap = newBitmap; - - pixmap = (Pixmap) m_buttonBitmap.GetPixmap(); - } - else - pixmap = (Pixmap) m_buttonBitmap.GetLabelPixmap(m_mainWidget); - - if (m_buttonBitmapDisabledOriginal.Ok()) - { - if (m_buttonBitmapDisabledOriginal.GetMask()) - { - int backgroundPixel; - XtVaGetValues((Widget) m_mainWidget, XmNbackground, &backgroundPixel, - NULL); - - wxColour col; - col.SetPixel(backgroundPixel); - - wxBitmap newBitmap = wxCreateMaskedBitmap(m_buttonBitmapDisabledOriginal, col); - m_buttonBitmapDisabled = newBitmap; - - insensPixmap = (Pixmap) m_buttonBitmapDisabled.GetPixmap(); - } - else - insensPixmap = (Pixmap) m_buttonBitmap.GetInsensPixmap(m_mainWidget); - } - else - insensPixmap = (Pixmap) m_buttonBitmap.GetInsensPixmap(m_mainWidget); - - // Now make the bitmap representing the armed state - if (m_buttonBitmapSelectedOriginal.Ok()) - { - if (m_buttonBitmapSelectedOriginal.GetMask()) - { - int backgroundPixel; - XtVaGetValues((Widget) m_mainWidget, XmNarmColor, &backgroundPixel, - NULL); - - wxColour col; - col.SetPixel(backgroundPixel); - - wxBitmap newBitmap = wxCreateMaskedBitmap(m_buttonBitmapSelectedOriginal, col); - m_buttonBitmapSelected = newBitmap; - - armPixmap = (Pixmap) m_buttonBitmapSelected.GetPixmap(); - } - else - armPixmap = (Pixmap) m_buttonBitmap.GetArmPixmap(m_mainWidget); - } - else - armPixmap = (Pixmap) m_buttonBitmap.GetArmPixmap(m_mainWidget); - - if (insensPixmap == pixmap) // <- the Get...Pixmap()-functions return the same pixmap! - { - insensPixmap = - XCreateInsensitivePixmap(DisplayOfScreen(XtScreen((Widget) m_mainWidget)), pixmap); - m_insensPixmap = (WXPixmap) insensPixmap; - } - - XtVaSetValues ((Widget) m_mainWidget, - XmNlabelPixmap, pixmap, - XmNlabelInsensitivePixmap, insensPixmap, - XmNarmPixmap, armPixmap, - XmNlabelType, XmPIXMAP, - NULL); - } - else - { - // Null bitmap: must not use current pixmap - // since it is no longer valid. - XtVaSetValues ((Widget) m_mainWidget, - XmNlabelType, XmSTRING, - XmNlabelPixmap, XmUNSPECIFIED_PIXMAP, - XmNlabelInsensitivePixmap, XmUNSPECIFIED_PIXMAP, - XmNarmPixmap, XmUNSPECIFIED_PIXMAP, - NULL); - } -} - -void wxBitmapButton::ChangeBackgroundColour() -{ - DoChangeBackgroundColour(m_mainWidget, m_backgroundColour, TRUE); - - // Must reset the bitmaps since the colours have changed. - DoSetBitmap(); -} diff --git a/src/motif/brush.cpp b/src/motif/brush.cpp deleted file mode 100644 index 1b8069646b..0000000000 --- a/src/motif/brush.cpp +++ /dev/null @@ -1,135 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: brush.cpp -// Purpose: wxBrush -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "brush.h" -#endif - -#include "wx/setup.h" -#include "wx/utils.h" -#include "wx/brush.h" - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxBrush, wxGDIObject) -#endif - -wxBrushRefData::wxBrushRefData() -{ - m_style = wxSOLID; -} - -wxBrushRefData::wxBrushRefData(const wxBrushRefData& data) -{ - m_style = data.m_style; - m_stipple = data.m_stipple; - m_colour = data.m_colour; -} - -wxBrushRefData::~wxBrushRefData() -{ -} - -// Brushes -wxBrush::wxBrush() -{ - if ( wxTheBrushList ) - wxTheBrushList->AddBrush(this); -} - -wxBrush::~wxBrush() -{ - if ( wxTheBrushList ) - wxTheBrushList->RemoveBrush(this); -} - -wxBrush::wxBrush(const wxColour& col, int Style) -{ - m_refData = new wxBrushRefData; - - M_BRUSHDATA->m_colour = col; - M_BRUSHDATA->m_style = Style; - - RealizeResource(); - - if ( wxTheBrushList ) - wxTheBrushList->AddBrush(this); -} - -wxBrush::wxBrush(const wxBitmap& stipple) -{ - m_refData = new wxBrushRefData; - - M_BRUSHDATA->m_style = wxSTIPPLE; - M_BRUSHDATA->m_stipple = stipple; - - RealizeResource(); - - if ( wxTheBrushList ) - wxTheBrushList->AddBrush(this); -} - -void wxBrush::Unshare() -{ - // Don't change shared data - if (!m_refData) - { - m_refData = new wxBrushRefData(); - } - else - { - wxBrushRefData* ref = new wxBrushRefData(*(wxBrushRefData*)m_refData); - UnRef(); - m_refData = ref; - } -} - -void wxBrush::SetColour(const wxColour& col) -{ - Unshare(); - - M_BRUSHDATA->m_colour = col; - - RealizeResource(); -} - -void wxBrush::SetColour(unsigned char r, unsigned char g, unsigned char b) -{ - Unshare(); - - M_BRUSHDATA->m_colour.Set(r, g, b); - - RealizeResource(); -} - -void wxBrush::SetStyle(int Style) -{ - Unshare(); - - M_BRUSHDATA->m_style = Style; - - RealizeResource(); -} - -void wxBrush::SetStipple(const wxBitmap& Stipple) -{ - Unshare(); - - M_BRUSHDATA->m_stipple = Stipple; - - RealizeResource(); -} - -bool wxBrush::RealizeResource() -{ - // Nothing more to do - return TRUE; -} - diff --git a/src/motif/button.cpp b/src/motif/button.cpp deleted file mode 100644 index 209c03de98..0000000000 --- a/src/motif/button.cpp +++ /dev/null @@ -1,154 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: button.cpp -// Purpose: wxButton -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "button.h" -#endif - -#include "wx/button.h" -#include "wx/utils.h" - -#include -#include - -#include "wx/motif/private.h" - -void wxButtonCallback (Widget w, XtPointer clientData, XtPointer ptr); - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxButton, wxControl) -#endif - -// Button - -bool wxButton::Create(wxWindow *parent, wxWindowID id, const wxString& label, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); - SetValidator(validator); - m_windowStyle = style; - m_backgroundColour = parent->GetBackgroundColour(); - m_foregroundColour = parent->GetForegroundColour(); - m_windowFont = parent->GetFont(); - - parent->AddChild((wxButton *)this); - - if (id == -1) - m_windowId = NewControlId(); - else - m_windowId = id; - - wxString label1(wxStripMenuCodes(label)); - - XmString text = XmStringCreateSimple ((char*) (const char*) label1); - Widget parentWidget = (Widget) parent->GetClientWidget(); - - XmFontList fontList = (XmFontList) m_windowFont.GetFontList(1.0, XtDisplay(parentWidget)); - - /* - * Patch Note (important) - * There is no major reason to put a defaultButtonThickness here. - * Not requesting it give the ability to put wxButton with a spacing - * as small as requested. However, if some button become a DefaultButton, - * other buttons are no more aligned -- This is why we set - * defaultButtonThickness of ALL buttons belonging to the same wxPanel, - * in the ::SetDefaultButton method. - */ - m_mainWidget = (WXWidget) XtVaCreateManagedWidget ("button", - xmPushButtonWidgetClass, - parentWidget, - XmNfontList, fontList, - XmNlabelString, text, - // XmNdefaultButtonShadowThickness, 1, // See comment for wxButton::SetDefault - NULL); - - XmStringFree (text); - - XtAddCallback ((Widget) m_mainWidget, XmNactivateCallback, (XtCallbackProc) wxButtonCallback, - (XtPointer) this); - - SetCanAddEventHandler(TRUE); - AttachWidget (parent, m_mainWidget, (WXWidget) NULL, pos.x, pos.y, size.x, size.y); - - ChangeBackgroundColour(); - - return TRUE; -} - -void wxButton::SetDefault() -{ - wxWindow *parent = (wxWindow *)GetParent(); - if (parent) - parent->SetDefaultItem(this); - - // We initially do not set XmNdefaultShadowThickness, to have small buttons. - // Unfortunately, buttons are now mis-aligned. We try to correct this - // now -- setting this ressource to 1 for each button in the same row. - // Because it's very hard to find wxButton in the same row, - // correction is straighforward: we set resource for all wxButton - // in this parent (but not sub panels) - for (wxNode * node = parent->GetChildren().First (); node; node = node->Next ()) - { - wxButton *item = (wxButton *) node->Data (); - if (item->IsKindOf(CLASSINFO(wxButton))) - { - bool managed = XtIsManaged((Widget) item->GetMainWidget()); - if (managed) - XtUnmanageChild ((Widget) item->GetMainWidget()); - - XtVaSetValues ((Widget) item->GetMainWidget(), - XmNdefaultButtonShadowThickness, 1, - NULL); - - if (managed) - XtManageChild ((Widget) item->GetMainWidget()); - } - } // while - - // XtVaSetValues((Widget)handle, XmNshowAsDefault, 1, NULL); - XtVaSetValues ((Widget) parent->GetMainWidget(), XmNdefaultButton, (Widget) GetMainWidget(), NULL); -} - -void wxButton::Command (wxCommandEvent & event) -{ - ProcessCommand (event); -} - -void wxButtonCallback (Widget w, XtPointer clientData, XtPointer WXUNUSED(ptr)) -{ - if (!wxGetWindowFromTable(w)) - // Widget has been deleted! - return; - - wxButton *item = (wxButton *) clientData; - wxCommandEvent event (wxEVT_COMMAND_BUTTON_CLICKED, item->GetId()); - event.SetEventObject(item); - item->ProcessCommand (event); -} - -void wxButton::ChangeFont(bool keepOriginalSize) -{ - wxWindow::ChangeFont(keepOriginalSize); -} - -void wxButton::ChangeBackgroundColour() -{ - DoChangeBackgroundColour(m_mainWidget, m_backgroundColour, TRUE); -} - -void wxButton::ChangeForegroundColour() -{ - wxWindow::ChangeForegroundColour(); -} - diff --git a/src/motif/cdiag.xbm b/src/motif/cdiag.xbm deleted file mode 100644 index 15dc7ba86d..0000000000 --- a/src/motif/cdiag.xbm +++ /dev/null @@ -1,6 +0,0 @@ -#define cdiag_width 16 -#define cdiag_height 16 -static char cdiag_bits[] = { - 0x81, 0x81, 0x42, 0x42, 0x24, 0x24, 0x18, 0x18, 0x18, 0x18, 0x24, 0x24, - 0x42, 0x42, 0x81, 0x81, 0x81, 0x81, 0x42, 0x42, 0x24, 0x24, 0x18, 0x18, - 0x18, 0x18, 0x24, 0x24, 0x42, 0x42, 0x81, 0x81}; diff --git a/src/motif/checkbox.cpp b/src/motif/checkbox.cpp deleted file mode 100644 index ee43e5def3..0000000000 --- a/src/motif/checkbox.cpp +++ /dev/null @@ -1,186 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: checkbox.cpp -// Purpose: wxCheckBox -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "checkbox.h" -#endif - -#include "wx/checkbox.h" -#include "wx/utils.h" - -#include -#include -#include -#include - -#include "wx/motif/private.h" - -void wxCheckBoxCallback (Widget w, XtPointer clientData, - XtPointer ptr); - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxCheckBox, wxControl) -IMPLEMENT_DYNAMIC_CLASS(wxBitmapCheckBox, wxCheckBox) -#endif - -// Single check box item -bool wxCheckBox::Create(wxWindow *parent, wxWindowID id, const wxString& label, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); - SetValidator(validator); - m_windowStyle = style; - m_backgroundColour = parent->GetBackgroundColour(); - m_foregroundColour = parent->GetForegroundColour(); - m_windowFont = parent->GetFont(); - - if (parent) parent->AddChild(this); - - if ( id == -1 ) - m_windowId = NewControlId(); - else - m_windowId = id; - - char* label1 = (label.IsNull() ? "" : (char*) (const char*) label); - - XmString text = XmStringCreateSimple (label1); - Widget parentWidget = (Widget) parent->GetClientWidget(); - XmFontList fontList = (XmFontList) m_windowFont.GetFontList(1.0, XtDisplay(parentWidget)); - - m_mainWidget = (WXWidget) XtVaCreateManagedWidget ("toggle", - xmToggleButtonWidgetClass, parentWidget, - XmNfontList, fontList, - XmNlabelString, text, - NULL); - XmStringFree (text); - - XtAddCallback ((Widget) m_mainWidget, XmNvalueChangedCallback, (XtCallbackProc) wxCheckBoxCallback, - (XtPointer) this); - - XmToggleButtonSetState ((Widget) m_mainWidget, FALSE, TRUE); - - SetCanAddEventHandler(TRUE); - AttachWidget (parent, m_mainWidget, (WXWidget) NULL, pos.x, pos.y, size.x, size.y); - - ChangeBackgroundColour(); - return TRUE; -} - -void wxCheckBox::SetValue(bool val) -{ - m_inSetValue = TRUE; - XmToggleButtonSetState ((Widget) m_mainWidget, (Boolean) val, TRUE); - m_inSetValue = FALSE; -} - -bool wxCheckBox::GetValue() const -{ - return (XmToggleButtonGetState ((Widget) m_mainWidget) != 0); -} - -void wxCheckBox::Command (wxCommandEvent & event) -{ - SetValue ((event.GetInt() != 0)); - ProcessCommand (event); -} - -// Bitmap checkbox -bool wxBitmapCheckBox::Create(wxWindow *parent, wxWindowID id, const wxBitmap *label, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); - SetValidator(validator); - m_windowStyle = style; - - if (parent) parent->AddChild(this); - - if ( id == -1 ) - m_windowId = NewControlId(); - else - m_windowId = id; - - // TODO: Create the bitmap checkbox - - return FALSE; -} - -void wxBitmapCheckBox::SetLabel(const wxBitmap *bitmap) -{ - // TODO -} - -void wxBitmapCheckBox::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -void wxBitmapCheckBox::SetValue(bool val) -{ - // TODO -} - -bool wxBitmapCheckBox::GetValue() const -{ - // TODOD - return FALSE; -} - -void wxCheckBoxCallback (Widget w, XtPointer clientData, - XtPointer ptr) -{ - wxCheckBox *item = (wxCheckBox *) clientData; - - if (item->InSetValue()) - return; - - wxCommandEvent event (wxEVT_COMMAND_CHECKBOX_CLICKED, item->GetId()); - event.SetInt((int) item->GetValue ()); - event.SetEventObject(item); - item->ProcessCommand (event); -} - -void wxCheckBox::ChangeFont(bool keepOriginalSize) -{ - wxWindow::ChangeFont(keepOriginalSize); -} - -void wxCheckBox::ChangeBackgroundColour() -{ - wxComputeColours (XtDisplay((Widget) m_mainWidget), & m_backgroundColour, - (wxColour*) NULL); - - XtVaSetValues ((Widget) m_mainWidget, - XmNbackground, g_itemColors[wxBACK_INDEX].pixel, - XmNtopShadowColor, g_itemColors[wxTOPS_INDEX].pixel, - XmNbottomShadowColor, g_itemColors[wxBOTS_INDEX].pixel, - XmNforeground, g_itemColors[wxFORE_INDEX].pixel, - NULL); - - int selectPixel = wxBLACK->AllocColour(wxGetDisplay()); - - // Better to have the checkbox selection in black, or it's - // hard to determine what state it is in. - XtVaSetValues ((Widget) m_mainWidget, - // XmNselectColor, g_itemColors[wxSELE_INDEX].pixel, - XmNselectColor, selectPixel, - NULL); -} - -void wxCheckBox::ChangeForegroundColour() -{ - wxWindow::ChangeForegroundColour(); -} diff --git a/src/motif/checklst.cpp b/src/motif/checklst.cpp deleted file mode 100644 index f880ecaf45..0000000000 --- a/src/motif/checklst.cpp +++ /dev/null @@ -1,74 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: checklst.cpp -// Purpose: implementation of wxCheckListBox class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -// ============================================================================ -// headers & declarations -// ============================================================================ - -#ifdef __GNUG__ -#pragma implementation "checklst.h" -#endif - -#include "wx/checklst.h" - -// ============================================================================ -// implementation -// ============================================================================ - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxCheckListBox, wxListBox) -#endif - -// ---------------------------------------------------------------------------- -// implementation of wxCheckListBox class -// ---------------------------------------------------------------------------- - -// define event table -// ------------------ -BEGIN_EVENT_TABLE(wxCheckListBox, wxListBox) -END_EVENT_TABLE() - -// control creation -// ---------------- - -// def ctor: use Create() to really create the control -wxCheckListBox::wxCheckListBox() : wxListBox() -{ -} - -// ctor which creates the associated control -wxCheckListBox::wxCheckListBox(wxWindow *parent, wxWindowID id, - const wxPoint& pos, const wxSize& size, - int nStrings, const wxString choices[], - long style, const wxValidator& val, - const wxString& name) - : wxListBox() -{ - // TODO: you'll probably need a separate Create instead of using - // the wxListBox one as here. - Create(parent, id, pos, size, nStrings, choices, style|wxLB_OWNERDRAW, val, name); -} - -// check items -// ----------- - -bool wxCheckListBox::IsChecked(uint uiIndex) const -{ - // TODO - return FALSE; -} - -void wxCheckListBox::Check(uint uiIndex, bool bCheck) -{ - // TODO -} - - diff --git a/src/motif/choice.cpp b/src/motif/choice.cpp deleted file mode 100644 index b67015a958..0000000000 --- a/src/motif/choice.cpp +++ /dev/null @@ -1,479 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: choice.cpp -// Purpose: wxChoice -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "choice.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/choice.h" -#include "wx/utils.h" - -#include -#include -#include -#include - -#include "wx/motif/private.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxChoice, wxControl) -#endif - -void wxChoiceCallback (Widget w, XtPointer clientData, - XtPointer ptr); - -wxChoice::wxChoice() -{ - m_noStrings = 0; - m_buttonWidget = (WXWidget) 0; - m_menuWidget = (WXWidget) 0; - m_widgetList = (WXWidget*) 0; - m_formWidget = (WXWidget) 0; -} - -bool wxChoice::Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos, - const wxSize& size, - int n, const wxString choices[], - long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); - SetValidator(validator); - m_noStrings = 0; // Starts off with none, incremented in Append - m_windowStyle = style; - m_buttonWidget = (WXWidget) 0; - m_menuWidget = (WXWidget) 0; - m_widgetList = (WXWidget*) 0; - m_formWidget = (WXWidget) 0; - - if (parent) parent->AddChild(this); - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - m_backgroundColour = parent->GetBackgroundColour(); - m_foregroundColour = parent->GetForegroundColour(); - m_windowFont = parent->GetFont(); - - Widget parentWidget = (Widget) parent->GetClientWidget(); - - m_formWidget = (WXWidget) XtVaCreateManagedWidget ((char*) (const char*) name, - xmRowColumnWidgetClass, parentWidget, - XmNmarginHeight, 0, - XmNmarginWidth, 0, - XmNpacking, XmPACK_TIGHT, - XmNorientation, XmHORIZONTAL, - NULL); - - XtVaSetValues ((Widget) m_formWidget, XmNspacing, 0, NULL); - - /* - * Create the popup menu - */ - m_menuWidget = (WXWidget) XmCreatePulldownMenu ((Widget) m_formWidget, "choiceMenu", NULL, 0); - - // int i; - if (n > 0) - { - int i; - for (i = 0; i < n; i++) - Append (choices[i]); - } - - /* - * Create button - */ - Arg args[10]; - Cardinal argcnt = 0; - - XtSetArg (args[argcnt], XmNsubMenuId, (Widget) m_menuWidget); - argcnt++; - XtSetArg (args[argcnt], XmNmarginWidth, 0); - argcnt++; - XtSetArg (args[argcnt], XmNmarginHeight, 0); - argcnt++; - XtSetArg (args[argcnt], XmNpacking, XmPACK_TIGHT); - argcnt++; - m_buttonWidget = (WXWidget) XmCreateOptionMenu ((Widget) m_formWidget, "choiceButton", args, argcnt); - - m_mainWidget = m_buttonWidget; - - XtManageChild ((Widget) m_buttonWidget); - - // New code from Roland Haenel (roland_haenel@ac.cybercity.de) - // Some time ago, I reported a problem with wxChoice-items under - // Linux and Motif 2.0 (they caused sporadic GPFs). Now it seems - // that I have found the code responsible for this behaviour. -#if XmVersion >= 1002 -#if XmVersion < 2000 - Widget optionLabel = XmOptionLabelGadget ((Widget) m_buttonWidget); - // JACS, 24/1/99: this seems to cause a malloc crash later on, e.g. - // in controls sample. - // XtUnmanageChild (optionLabel); -#endif -#endif - - XtVaSetValues((Widget) m_formWidget, XmNresizePolicy, XmRESIZE_NONE, NULL); - - ChangeFont(FALSE); - - AttachWidget (parent, m_buttonWidget, m_formWidget, pos.x, pos.y, size.x, size.y); - - ChangeBackgroundColour(); - - return TRUE; -} - -wxChoice::~wxChoice() -{ - // For some reason destroying the menuWidget - // can cause crashes on some machines. It will - // be deleted implicitly by deleting the parent form - // anyway. - // XtDestroyWidget (menuWidget); - if (m_widgetList) - delete[] m_widgetList; - - if (GetMainWidget()) - { - DetachWidget(GetMainWidget()); // Removes event handlers - DetachWidget(m_formWidget); - - XtDestroyWidget((Widget) m_formWidget); - m_formWidget = (WXWidget) 0; - - // Presumably the other widgets have been deleted now, via the form - m_mainWidget = (WXWidget) 0; - m_buttonWidget = (WXWidget) 0; - } -} - -void wxChoice::Append(const wxString& item) -{ - wxStripMenuCodes ((char *)(const char *)item, wxBuffer); - Widget w = XtVaCreateManagedWidget (wxBuffer, -#if USE_GADGETS - xmPushButtonGadgetClass, (Widget) m_menuWidget, -#else - xmPushButtonWidgetClass, (Widget) m_menuWidget, -#endif - NULL); - - DoChangeBackgroundColour((WXWidget) w, m_backgroundColour); - - if (m_windowFont.Ok()) - XtVaSetValues (w, - XmNfontList, (XmFontList) m_windowFont.GetFontList(1.0, XtDisplay((Widget) m_formWidget)), - NULL); - - WXWidget *new_widgetList = new WXWidget[m_noStrings + 1]; - int i; - if (m_widgetList) - for (i = 0; i < m_noStrings; i++) - new_widgetList[i] = m_widgetList[i]; - - new_widgetList[m_noStrings] = (WXWidget) w; - - if (m_widgetList) - delete[] m_widgetList; - m_widgetList = new_widgetList; - - char mnem = wxFindMnemonic ((char*) (const char*) item); - if (mnem != 0) - XtVaSetValues (w, XmNmnemonic, mnem, NULL); - - XtAddCallback (w, XmNactivateCallback, (XtCallbackProc) wxChoiceCallback, (XtPointer) this); - - if (m_noStrings == 0 && m_buttonWidget) - { - XtVaSetValues ((Widget) m_buttonWidget, XmNmenuHistory, w, NULL); - Widget label = XmOptionButtonGadget ((Widget) m_buttonWidget); - XmString text = XmStringCreateSimple ((char*) (const char*) item); - XtVaSetValues (label, - XmNlabelString, text, - NULL); - XmStringFree (text); - } - wxNode *node = m_stringList.Add (item); - XtVaSetValues (w, XmNuserData, node->Data (), NULL); - - m_noStrings ++; -} - -void wxChoice::Delete(int WXUNUSED(n)) -{ - wxFAIL_MSG( "Sorry, wxChoice::Delete isn't implemented yet. Maybe you'd like to volunteer? :-)" ); - - // What should we do -- remove the callback for this button widget, - // delete the m_stringList entry, delete the button widget, construct a new widget list - // (see Append) - - // TODO - m_noStrings --; -} - -void wxChoice::Clear() -{ - m_stringList.Clear (); - int i; - for (i = 0; i < m_noStrings; i++) - { - XtUnmanageChild ((Widget) m_widgetList[i]); - XtDestroyWidget ((Widget) m_widgetList[i]); - } - if (m_noStrings) - delete[] m_widgetList; - m_widgetList = (WXWidget*) NULL; - if (m_buttonWidget) - XtVaSetValues ((Widget) m_buttonWidget, XmNmenuHistory, (Widget) NULL, NULL); - m_noStrings = 0; -} - -int wxChoice::GetSelection() const -{ - XmString text; - char *s; - Widget label = XmOptionButtonGadget ((Widget) m_buttonWidget); - XtVaGetValues (label, - XmNlabelString, &text, - NULL); - - if (XmStringGetLtoR (text, XmSTRING_DEFAULT_CHARSET, &s)) - { - int i = 0; - for (wxNode * node = m_stringList.First (); node; node = node->Next ()) - { - char *s1 = (char *) node->Data (); - if (s1 == s || strcmp (s1, s) == 0) - { - XmStringFree(text) ; - XtFree (s); - return i; - } - else - i++; - } // for() - - XmStringFree(text) ; - XtFree (s); - return -1; - } - XmStringFree(text) ; - return -1; -} - -void wxChoice::SetSelection(int n) -{ - m_inSetValue = TRUE; - - wxNode *node = m_stringList.Nth (n); - if (node) - { - Dimension selectionWidth, selectionHeight; - - char *s = (char *) node->Data (); - XmString text = XmStringCreateSimple (s); - XtVaGetValues ((Widget) m_widgetList[n], XmNwidth, &selectionWidth, XmNheight, &selectionHeight, NULL); - Widget label = XmOptionButtonGadget ((Widget) m_buttonWidget); - XtVaSetValues (label, - XmNlabelString, text, - NULL); - XmStringFree (text); - XtVaSetValues ((Widget) m_buttonWidget, - XmNwidth, selectionWidth, XmNheight, selectionHeight, - XmNmenuHistory, (Widget) m_widgetList[n], NULL); - } - m_inSetValue = FALSE; -} - -int wxChoice::FindString(const wxString& s) const -{ - int i = 0; - for (wxNode * node = m_stringList.First (); node; node = node->Next ()) - { - char *s1 = (char *) node->Data (); - if (s == s1) - { - return i; - } - else - i++; - } - return -1; -} - -wxString wxChoice::GetString(int n) const -{ - wxNode *node = m_stringList.Nth (n); - if (node) - return wxString((char *) node->Data ()); - else - return wxEmptyString; -} - -void wxChoice::SetColumns(int n) -{ - if (n<1) n = 1 ; - - short numColumns = n ; - Arg args[3]; - - XtSetArg(args[0], XmNnumColumns, numColumns); - XtSetArg(args[1], XmNpacking, XmPACK_COLUMN); - XtSetValues((Widget) m_menuWidget,args,2) ; -} - -int wxChoice::GetColumns(void) const -{ - short numColumns ; - - XtVaGetValues((Widget) m_menuWidget,XmNnumColumns,&numColumns,NULL) ; - return numColumns ; -} - -void wxChoice::SetFocus() -{ - XmProcessTraversal(XtParent((Widget)m_mainWidget), XmTRAVERSE_CURRENT); -} - -void wxChoice::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - XtVaSetValues((Widget) m_formWidget, XmNresizePolicy, XmRESIZE_ANY, NULL); - bool managed = XtIsManaged((Widget) m_formWidget); - - if (managed) - XtUnmanageChild ((Widget) m_formWidget); - - int actualWidth = width, actualHeight = height; - - if (width > -1) - { - int i; - for (i = 0; i < m_noStrings; i++) - XtVaSetValues ((Widget) m_widgetList[i], XmNwidth, actualWidth, NULL); - XtVaSetValues ((Widget) m_buttonWidget, XmNwidth, actualWidth, - NULL); - } - if (height > -1) - { - int i; - for (i = 0; i < m_noStrings; i++) - XtVaSetValues ((Widget) m_widgetList[i], XmNheight, actualHeight, NULL); - XtVaSetValues ((Widget) m_buttonWidget, XmNheight, actualHeight, - NULL); - } - - if (managed) - XtManageChild ((Widget) m_formWidget); - XtVaSetValues((Widget) m_formWidget, XmNresizePolicy, XmRESIZE_NONE, NULL); - - wxControl::SetSize (x, y, width, height, sizeFlags); -} - -wxString wxChoice::GetStringSelection () const -{ - int sel = GetSelection (); - if (sel > -1) - return wxString(this->GetString (sel)); - else - return wxEmptyString; -} - -bool wxChoice::SetStringSelection (const wxString& s) -{ - int sel = FindString (s); - if (sel > -1) - { - SetSelection (sel); - return TRUE; - } - else - return FALSE; -} - -void wxChoice::Command(wxCommandEvent & event) -{ - SetSelection (event.GetInt()); - ProcessCommand (event); -} - -void wxChoiceCallback (Widget w, XtPointer clientData, XtPointer WXUNUSED(ptr)) -{ - wxChoice *item = (wxChoice *) clientData; - if (item) - { - if (item->InSetValue()) - return; - - char *s = NULL; - XtVaGetValues (w, XmNuserData, &s, NULL); - if (s) - { - wxCommandEvent event (wxEVT_COMMAND_CHOICE_SELECTED, item->GetId()); - event.SetEventObject(item); - event.m_commandInt = item->FindString (s); - // event.m_commandString = s; - item->ProcessCommand (event); - } - } -} - -void wxChoice::ChangeFont(bool keepOriginalSize) -{ - // Note that this causes the widget to be resized back - // to its original size! We therefore have to set the size - // back again. TODO: a better way in Motif? - if (m_windowFont.Ok()) - { - int width, height, width1, height1; - GetSize(& width, & height); - - XmFontList fontList = (XmFontList) m_windowFont.GetFontList(1.0, XtDisplay((Widget) m_mainWidget)); - XtVaSetValues ((Widget) m_mainWidget, XmNfontList, fontList, NULL); - XtVaSetValues ((Widget) m_buttonWidget, XmNfontList, fontList, NULL); - - /* TODO: why does this cause a crash in XtWidgetToApplicationContext? - int i; - for (i = 0; i < m_noStrings; i++) - XtVaSetValues ((Widget) m_widgetList[i], XmNfontList, fontList, NULL); - */ - GetSize(& width1, & height1); - if (keepOriginalSize && (width != width1 || height != height1)) - { - SetSize(-1, -1, width, height); - } - } -} - -void wxChoice::ChangeBackgroundColour() -{ - DoChangeBackgroundColour(m_formWidget, m_backgroundColour); - DoChangeBackgroundColour(m_buttonWidget, m_backgroundColour); - DoChangeBackgroundColour(m_menuWidget, m_backgroundColour); - int i; - for (i = 0; i < m_noStrings; i++) - DoChangeBackgroundColour(m_widgetList[i], m_backgroundColour); -} - -void wxChoice::ChangeForegroundColour() -{ - DoChangeForegroundColour(m_formWidget, m_foregroundColour); - DoChangeForegroundColour(m_buttonWidget, m_foregroundColour); - DoChangeForegroundColour(m_menuWidget, m_foregroundColour); - int i; - for (i = 0; i < m_noStrings; i++) - DoChangeForegroundColour(m_widgetList[i], m_foregroundColour); -} diff --git a/src/motif/clipbrd.cpp b/src/motif/clipbrd.cpp deleted file mode 100644 index 8156b69bc7..0000000000 --- a/src/motif/clipbrd.cpp +++ /dev/null @@ -1,527 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: clipbrd.cpp -// Purpose: Clipboard functionality -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation -#pragma implementation "clipbrd.h" -#endif - -#include "wx/app.h" -#include "wx/frame.h" -#include "wx/bitmap.h" -#include "wx/utils.h" -#include "wx/metafile.h" -#include "wx/clipbrd.h" -#include "wx/dataobj.h" - -#include -#include - -#include - -#if !USE_SHARED_LIBRARY -// IMPLEMENT_DYNAMIC_CLASS(wxClipboard, wxObject) -// IMPLEMENT_ABSTRACT_CLASS(wxClipboardClient, wxObject) -#endif - -static bool gs_clipboardIsOpen = FALSE; - -bool wxOpenClipboard() -{ - if (!gs_clipboardIsOpen) - { - gs_clipboardIsOpen = TRUE; - return TRUE; - } - else - return FALSE; -} - -bool wxCloseClipboard() -{ - if (gs_clipboardIsOpen) - { - gs_clipboardIsOpen = FALSE; - return TRUE; - } - else - return FALSE; -} - -bool wxEmptyClipboard() -{ - // No equivalent in Motif - return TRUE; -} - -bool wxClipboardOpen() -{ - return gs_clipboardIsOpen; -} - -bool wxIsClipboardFormatAvailable(wxDataFormat dataFormat) -{ - // Only text is supported. - if (dataFormat != wxDF_TEXT) - return FALSE; - - unsigned long numBytes = 0; - long privateId = 0; - - Window window = (Window) 0; - if (wxTheApp->GetTopWindow()) - window = XtWindow( (Widget) wxTheApp->GetTopWindow()->GetTopWidget() ); - - int success = XmClipboardRetrieve((Display*) wxGetDisplay(), - window, "TEXT", (XtPointer) 0, 0, & numBytes, & privateId) ; - - // Assume only text is supported. If we have anything at all, - // or the clipboard is locked so we're not sure, we say we support it. - if (success == ClipboardNoData) - return FALSE; - else - return TRUE; -} - -bool wxSetClipboardData(wxDataFormat dataFormat, wxObject *obj, int width, int height) -{ - if (dataFormat != wxDF_TEXT) - return FALSE; - - char* data = (char*) obj; - - XmString text = XmStringCreateSimple ("CLIPBOARD"); - Window window = (Window) 0; - if (wxTheApp->GetTopWindow()) - window = XtWindow( (Widget) wxTheApp->GetTopWindow()->GetTopWidget() ); - - long itemId = 0; - int result = 0; - - while ((result = - XmClipboardStartCopy((Display*) wxGetDisplay(), - window, - text, - XtLastTimestampProcessed((Display*) wxGetDisplay()), - (Widget) 0, - (XmCutPasteProc) 0, - & itemId)) != ClipboardSuccess) - - ; - - XmStringFree (text); - - long dataId = 0; - while ((result = - XmClipboardCopy((Display*) wxGetDisplay(), - window, - itemId, - "TEXT", - (XtPointer) data, - strlen(data) + 1, - 0, - & dataId)) != ClipboardSuccess) - - ; - - while (( result = - XmClipboardEndCopy((Display*) wxGetDisplay(), - window, itemId) ) != ClipboardSuccess) - - ; - - return TRUE; -} - -wxObject *wxGetClipboardData(wxDataFormat dataFormat, long *len) -{ - if (dataFormat != wxDF_TEXT) - return (wxObject*) NULL; - - bool done = FALSE; - long id = 0; - unsigned long numBytes = 0; - int result = 0; - Window window = (Window) 0; - if (wxTheApp->GetTopWindow()) - window = XtWindow( (Widget) wxTheApp->GetTopWindow()->GetTopWidget() ); - - int currentDataSize = 256; - char* data = new char[currentDataSize]; - - while (!done) - { - if (result == ClipboardTruncate) - { - delete[] data; - currentDataSize = 2*currentDataSize; - data = new char[currentDataSize]; - } - result = XmClipboardRetrieve((Display*) wxGetDisplay(), - window, - "TEXT", - (XtPointer) data, - currentDataSize, - &numBytes, - &id); - - switch (result) - { - case ClipboardSuccess: - { - if (len) - *len = strlen(data) + 1; - return (wxObject*) data; - break; - } - case ClipboardTruncate: - case ClipboardLocked: - { - break; - } - default: - case ClipboardNoData: - { - return (wxObject*) NULL; - break; - } - } - - } - - return NULL; -} - -wxDataFormat wxEnumClipboardFormats(wxDataFormat dataFormat) -{ - // Only wxDF_TEXT supported - if (dataFormat == (wxDataFormat) 0) - return wxDF_TEXT; - else - return (wxDataFormat) 0; -} - -wxDataFormat wxRegisterClipboardFormat(char *formatName) -{ - // Not supported - return (wxDataFormat) 0; -} - -bool wxGetClipboardFormatName(wxDataFormat dataFormat, char *formatName, int maxCount) -{ - // Only wxDF_TEXT supported - if (dataFormat == wxDF_TEXT) - { - strcpy(formatName, "TEXT"); - return TRUE; - } - else - return FALSE; -} - -//----------------------------------------------------------------------------- -// wxClipboard -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxClipboard,wxObject) - -wxClipboard* wxTheClipboard = (wxClipboard*) NULL; - -wxClipboard::wxClipboard() -{ - m_open = FALSE; -} - -wxClipboard::~wxClipboard() -{ - Clear(); -} - -void wxClipboard::Clear() -{ - wxNode* node = m_data.First(); - while (node) - { - wxDataObject* data = (wxDataObject*) node->Data(); - delete data; - node = node->Next(); - } - m_data.Clear(); -} - -bool wxClipboard::Open() -{ - wxCHECK_MSG( !m_open, FALSE, "clipboard already open" ); - - m_open = TRUE; - - return wxOpenClipboard(); -} - -bool wxClipboard::SetData( wxDataObject *data ) -{ - wxCHECK_MSG( data, FALSE, "data is invalid" ); - wxCHECK_MSG( m_open, FALSE, "clipboard not open" ); - - switch (data->GetFormat()) - { - case wxDF_TEXT: - case wxDF_OEMTEXT: - { - wxTextDataObject* textDataObject = (wxTextDataObject*) data; - wxString str(textDataObject->GetText()); - return wxSetClipboardData(data->GetFormat(), (wxObject*) (const char*) str); - break; - } - case wxDF_BITMAP: - case wxDF_DIB: - { - wxBitmapDataObject* bitmapDataObject = (wxBitmapDataObject*) data; - wxBitmap bitmap(bitmapDataObject->GetBitmap()); - return wxSetClipboardData(data->GetFormat(), & bitmap); - break; - } - default: - { - return FALSE; - } - } - - return FALSE; -} - -void wxClipboard::Close() -{ - wxCHECK_RET( m_open, "clipboard not open" ); - - m_open = FALSE; - wxCloseClipboard(); -} - -bool wxClipboard::IsSupportedFormat( wxDataFormat format, const wxString& WXUNUSED(id) ) -{ - return wxIsClipboardFormatAvailable(format); -} - -bool wxClipboard::GetData( wxDataObject *data ) -{ - wxCHECK_MSG( m_open, FALSE, "clipboard not open" ); - - switch (data->GetFormat()) - { - case wxDF_TEXT: - case wxDF_OEMTEXT: - { - wxTextDataObject* textDataObject = (wxTextDataObject*) data; - char* s = (char*) wxGetClipboardData(data->GetFormat()); - if (s) - { - textDataObject->SetText(s); - delete[] s; - return TRUE; - } - else - return FALSE; - break; - } - case wxDF_BITMAP: - case wxDF_DIB: - { - wxBitmapDataObject* bitmapDataObject = (wxBitmapDataObject*) data; - wxBitmap* bitmap = (wxBitmap*) wxGetClipboardData(data->GetFormat()); - if (bitmap) - { - bitmapDataObject->SetBitmap(* bitmap); - delete bitmap; - return TRUE; - } - else - return FALSE; - break; - } - default: - { - return FALSE; - } - } - return FALSE; -} - -//----------------------------------------------------------------------------- -// wxClipboardModule -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxClipboardModule,wxModule) - -bool wxClipboardModule::OnInit() -{ - wxTheClipboard = new wxClipboard(); - - return TRUE; -} - -void wxClipboardModule::OnExit() -{ - if (wxTheClipboard) delete wxTheClipboard; - wxTheClipboard = (wxClipboard*) NULL; -} - - -#if 0 - -/* -* Old clipboard implementation by Matthew Flatt -*/ - -wxClipboard *wxTheClipboard = NULL; - -void wxInitClipboard() -{ - if (!wxTheClipboard) - wxTheClipboard = new wxClipboard; -} - -wxClipboard::wxClipboard() -{ - clipOwner = NULL; - cbString = NULL; -} - -wxClipboard::~wxClipboard() -{ - if (clipOwner) - clipOwner->BeingReplaced(); - if (cbString) - delete[] cbString; -} - -static int FormatStringToID(char *str) -{ - if (!strcmp(str, "TEXT")) - return wxDF_TEXT; - - return wxRegisterClipboardFormat(str); -} - -void wxClipboard::SetClipboardClient(wxClipboardClient *client, long time) -{ - bool got_selection; - - if (clipOwner) - clipOwner->BeingReplaced(); - clipOwner = client; - if (cbString) { - delete[] cbString; - cbString = NULL; - } - - if (wxOpenClipboard()) { - char **formats, *data; - int i; - int ftype; - long size; - - formats = clipOwner->formats.ListToArray(FALSE); - for (i = clipOwner->formats.Number(); i--; ) { - ftype = FormatStringToID(formats[i]); - data = clipOwner->GetData(formats[i], &size); - if (!wxSetClipboardData(ftype, (wxObject *)data, size, 1)) { - got_selection = FALSE; - break; - } - } - - if (i < 0) - got_selection = wxCloseClipboard(); - } else - got_selection = FALSE; - - got_selection = FALSE; // Assume another process takes over - - if (!got_selection) { - clipOwner->BeingReplaced(); - clipOwner = NULL; - } -} - -wxClipboardClient *wxClipboard::GetClipboardClient() -{ - return clipOwner; -} - -void wxClipboard::SetClipboardString(char *str, long time) -{ - bool got_selection; - - if (clipOwner) { - clipOwner->BeingReplaced(); - clipOwner = NULL; - } - if (cbString) - delete[] cbString; - - cbString = str; - - if (wxOpenClipboard()) { - if (!wxSetClipboardData(wxDF_TEXT, (wxObject *)str)) - got_selection = FALSE; - else - got_selection = wxCloseClipboard(); - } else - got_selection = FALSE; - - got_selection = FALSE; // Assume another process takes over - - if (!got_selection) { - delete[] cbString; - cbString = NULL; - } -} - -char *wxClipboard::GetClipboardString(long time) -{ - char *str; - long length; - - str = GetClipboardData("TEXT", &length, time); - if (!str) { - str = new char[1]; - *str = 0; - } - - return str; -} - -char *wxClipboard::GetClipboardData(char *format, long *length, long time) -{ - if (clipOwner) { - if (clipOwner->formats.Member(format)) - return clipOwner->GetData(format, length); - else - return NULL; - } else if (cbString) { - if (!strcmp(format, "TEXT")) - return copystring(cbString); - else - return NULL; - } else { - if (wxOpenClipboard()) { - receivedString = (char *)wxGetClipboardData(FormatStringToID(format), - length); - wxCloseClipboard(); - } else - receivedString = NULL; - - return receivedString; - } -} -#endif - diff --git a/src/motif/colordlg.cpp b/src/motif/colordlg.cpp deleted file mode 100644 index 9326ffd42b..0000000000 --- a/src/motif/colordlg.cpp +++ /dev/null @@ -1,53 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: colordlg.cpp -// Purpose: wxColourDialog class. NOTE: you can use the generic class -// if you wish, instead of implementing this. -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "colordlg.h" -#endif - -#include "wx/motif/colordlg.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxColourDialog, wxDialog) -#endif - -/* - * wxColourDialog - */ - -wxColourDialog::wxColourDialog() -{ - m_dialogParent = NULL; -} - -wxColourDialog::wxColourDialog(wxWindow *parent, wxColourData *data) -{ - Create(parent, data); -} - -bool wxColourDialog::Create(wxWindow *parent, wxColourData *data) -{ - m_dialogParent = parent; - - if (data) - m_colourData = *data; - return TRUE; -} - -int wxColourDialog::ShowModal() -{ - /* TODO: implement dialog - */ - - return wxID_CANCEL; -} - diff --git a/src/motif/colour.cpp b/src/motif/colour.cpp deleted file mode 100644 index cf9f93c796..0000000000 --- a/src/motif/colour.cpp +++ /dev/null @@ -1,210 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: colour.cpp -// Purpose: wxColour class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -//// TODO: make wxColour a ref-counted object, -//// so pixel values get shared. - -#ifdef __GNUG__ -#pragma implementation "colour.h" -#endif - -#include "wx/gdicmn.h" -#include "wx/colour.h" -#include "wx/app.h" - -#include - -#include "wx/motif/private.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxColour, wxObject) -#endif - -// Colour - -wxColour::wxColour () -{ - m_isInit = FALSE; - m_red = m_blue = m_green = 0; - m_pixel = -1; -} - -wxColour::wxColour (unsigned char r, unsigned char g, unsigned char b) -{ - m_red = r; - m_green = g; - m_blue = b; - m_isInit = TRUE; - m_pixel = -1; -} - -wxColour::wxColour (const wxColour& col) -{ - m_red = col.m_red; - m_green = col.m_green; - m_blue = col.m_blue; - m_isInit = col.m_isInit; - m_pixel = col.m_pixel; -} - -wxColour& wxColour::operator =(const wxColour& col) -{ - m_red = col.m_red; - m_green = col.m_green; - m_blue = col.m_blue; - m_isInit = col.m_isInit; - m_pixel = col.m_pixel; - return *this; -} - -void wxColour::InitFromName(const wxString& col) -{ - wxColour *the_colour = wxTheColourDatabase->FindColour (col); - if (the_colour) - { - m_red = the_colour->Red (); - m_green = the_colour->Green (); - m_blue = the_colour->Blue (); - m_pixel = the_colour->m_pixel; - m_isInit = TRUE; - } - else - { - m_red = 0; - m_green = 0; - m_blue = 0; - m_isInit = FALSE; - } -} - -wxColour::~wxColour () -{ -} - -void wxColour::Set (unsigned char r, unsigned char g, unsigned char b) -{ - m_red = r; - m_green = g; - m_blue = b; - m_isInit = TRUE; - m_pixel = -1; -} - -// Allocate a colour, or nearest colour, using the given display. -// If realloc is TRUE, ignore the existing pixel, otherwise just return -// the existing one. -// Returns the old or allocated pixel. - -// TODO: can this handle mono displays? If not, we should have an extra -// flag to specify whether this should be black or white by default. - -int wxColour::AllocColour(WXDisplay* display, bool realloc) -{ - if ((m_pixel != -1) && !realloc) - return m_pixel; - - XColor color; - color.red = (unsigned short) Red (); - color.red |= color.red << 8; - color.green = (unsigned short) Green (); - color.green |= color.green << 8; - color.blue = (unsigned short) Blue (); - color.blue |= color.blue << 8; - - color.flags = DoRed | DoGreen | DoBlue; - - WXColormap cmap = wxTheApp->GetMainColormap(display); - - if (!XAllocColor ((Display*) display, (Colormap) cmap, &color)) - { - m_pixel = wxGetBestMatchingPixel((Display*) display, &color,(Colormap) cmap); - return m_pixel; - } - else - { - m_pixel = (int) color.pixel; - return m_pixel; - } -} - -/*------------------------------------------- -Markus Emmenegger -Find the pixel value with an assigned color closest to the desired color -Used if color cell allocation fails -As the returned pixel value may be in use by another application, -the color might change anytime. -But in many cases, that is still better than always using black. --- -Chris Breeze -Improvements: -1) More efficient calculation of RGB distance of colour cell from -the desired colour. There is no need to take the sqrt of 'dist', and -since we are only interested in the top 8-bits of R, G and B we -can perform integer arithmetic. -2) Attempt to allocate a read-only colour when a close match is found. -A read-only colour will not change. -3) Fall back to the closest match if no read-only colours are available. - - Possible further improvements: - 1) Scan the lookup table and sort the colour cells in order of - increasing - distance from the desired colour. Then attempt to allocate a - read-only - colour starting from the nearest match. - 2) Linear RGB distance is not a particularly good method of colour - matching - (though it is quick). Converting the colour to HLS and then comparing - may give better matching. --------------------------------------------*/ - -int wxGetBestMatchingPixel(Display *display, XColor *desiredColor, Colormap cmap) -{ - if (cmap == (Colormap) NULL) - cmap = (Colormap) wxTheApp->GetMainColormap(display); - - int numPixVals = XDisplayCells(display, DefaultScreen (display)); - int mindist = 256 * 256 * 3; - int bestpixel = (int) BlackPixel (display, DefaultScreen (display)); - int red = desiredColor->red >> 8; - int green = desiredColor->green >> 8; - int blue = desiredColor->blue >> 8; - const int threshold = 2 * 2 * 3; // allow an error of up to 2 in R,G & B - - for (int pixelcount = 0; pixelcount < numPixVals; pixelcount++) - { - XColor matching_color; - matching_color.pixel = pixelcount; - XQueryColor(display,cmap,&matching_color); - - int delta_red = red - (matching_color.red >> 8); - int delta_green = green - (matching_color.green >> 8); - int delta_blue = blue - (matching_color.blue >> 8); - - int dist = delta_red * delta_red + - delta_green * delta_green + - delta_blue * delta_blue; - - if (dist <= threshold) - { - // try to allocate a read-only colour... - if (XAllocColor (display, cmap, &matching_color)) - { - return matching_color.pixel; - } - } - if (dist < mindist) - { - bestpixel = pixelcount; - mindist = dist; - } - } - return bestpixel; -} diff --git a/src/motif/combobox.cpp b/src/motif/combobox.cpp deleted file mode 100644 index 89e9a1dfcd..0000000000 --- a/src/motif/combobox.cpp +++ /dev/null @@ -1,334 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: combobox.cpp -// Purpose: wxComboBox class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "combobox.h" -#endif - -#include "wx/combobox.h" - -#if wxUSE_COMBOBOX - -#include -#include "xmcombo/xmcombo.h" - -void wxComboBoxCallback (Widget w, XtPointer clientData, - XmComboBoxSelectionCallbackStruct * cbs); - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxComboBox, wxControl) -#endif - -bool wxComboBox::Create(wxWindow *parent, wxWindowID id, - const wxString& value, - const wxPoint& pos, - const wxSize& size, - int n, const wxString choices[], - long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); - SetValidator(validator); - m_noStrings = n; - m_windowStyle = style; - // m_backgroundColour = parent->GetBackgroundColour(); - m_backgroundColour = * wxWHITE; - m_foregroundColour = parent->GetForegroundColour(); - - if (parent) parent->AddChild(this); - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - Widget parentWidget = (Widget) parent->GetClientWidget(); - - Widget buttonWidget = XtVaCreateManagedWidget((char*) (const char*) name, - xmComboBoxWidgetClass, parentWidget, - XmNmarginHeight, 0, - XmNmarginWidth, 0, - XmNshowLabel, False, - XmNeditable, ((style & wxCB_READONLY) != wxCB_READONLY), - XmNsorted, ((style & wxCB_SORT) == wxCB_SORT), - XmNstaticList, ((style & wxCB_SIMPLE) == wxCB_SIMPLE), - NULL); - - XtAddCallback (buttonWidget, XmNselectionCallback, (XtCallbackProc) wxComboBoxCallback, - (XtPointer) this); - XtAddCallback (buttonWidget, XmNvalueChangedCallback, (XtCallbackProc) wxComboBoxCallback, - (XtPointer) this); - - int i; - for (i = 0; i < n; i++) - { - XmString str = XmStringCreateLtoR((char*) (const char*) choices[i], XmSTRING_DEFAULT_CHARSET); - XmComboBoxAddItem(buttonWidget, str, 0); - XmStringFree(str); - m_stringList.Add(choices[i]); - } - m_noStrings = n; - - m_mainWidget = (Widget) buttonWidget; - - XtManageChild (buttonWidget); - - SetValue(value); - - m_windowFont = parent->GetFont(); - ChangeFont(FALSE); - - SetCanAddEventHandler(TRUE); - AttachWidget (parent, m_mainWidget, (WXWidget) NULL, pos.x, pos.y, size.x, size.y); - - ChangeBackgroundColour(); - - return TRUE; -} - -wxComboBox::~wxComboBox() -{ - DetachWidget((Widget) m_mainWidget); // Removes event handlers - XtDestroyWidget((Widget) m_mainWidget); - m_mainWidget = (WXWidget) 0; -} - -void wxComboBox::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // Necessary so it doesn't call wxChoice::SetSize - wxWindow::SetSize(x, y, width, height, sizeFlags); -} - -wxString wxComboBox::GetValue() const -{ - char *s = XmComboBoxGetString ((Widget) m_mainWidget); - if (s) - { - wxString str(s); - XtFree (s); - return str; - } - else - return wxEmptyString; -} - -void wxComboBox::SetValue(const wxString& value) -{ - m_inSetValue = TRUE; - if (!value.IsNull()) - XmComboBoxSetString ((Widget) m_mainWidget, (char*) (const char*) value); - m_inSetValue = FALSE; -} - -void wxComboBox::Append(const wxString& item) -{ - XmString str = XmStringCreateLtoR((char*) (const char*) item, XmSTRING_DEFAULT_CHARSET); - XmComboBoxAddItem((Widget) m_mainWidget, str, 0); - m_stringList.Add(item); - XmStringFree(str); - m_noStrings ++; -} - -void wxComboBox::Delete(int n) -{ - XmComboBoxDeletePos((Widget) m_mainWidget, n-1); - wxNode *node = m_stringList.Nth(n); - if (node) - { - delete[] (char *)node->Data(); - delete node; - } - m_noStrings--; -} - -void wxComboBox::Clear() -{ - XmComboBoxDeleteAllItems((Widget) m_mainWidget); - m_stringList.Clear(); -} - -void wxComboBox::SetSelection (int n) -{ - XmComboBoxSelectPos((Widget) m_mainWidget, n+1, False); -} - -int wxComboBox::GetSelection (void) const -{ - int sel = XmComboBoxGetSelectedPos((Widget) m_mainWidget); - if (sel == 0) - return -1; - else - return sel - 1; -} - -wxString wxComboBox::GetString(int n) const -{ - wxNode *node = m_stringList.Nth (n); - if (node) - return wxString((char *) node->Data ()); - else - return wxEmptyString; -} - -wxString wxComboBox::GetStringSelection() const -{ - int sel = GetSelection(); - if (sel == -1) - return wxEmptyString; - else - return GetString(sel); -} - -bool wxComboBox::SetStringSelection(const wxString& sel) -{ - int n = FindString(sel); - if (n == -1) - return FALSE; - else - { - SetSelection(n); - return TRUE; - } -} - -int wxComboBox::FindString(const wxString& s) const -{ - int *pos_list = NULL; - int count = 0; - XmString text = XmStringCreateSimple ((char*) (const char*) s); - bool found = (XmComboBoxGetMatchPos((Widget) m_mainWidget, - text, &pos_list, &count) != 0); - - XmStringFree(text); - - if (found && count > 0) - { - int pos = pos_list[0] - 1; - free(pos_list); - return pos; - } - - return -1; -} - -// Clipboard operations -void wxComboBox::Copy() -{ - XmComboBoxCopy((Widget) m_mainWidget, CurrentTime); -} - -void wxComboBox::Cut() -{ - XmComboBoxCut((Widget) m_mainWidget, CurrentTime); -} - -void wxComboBox::Paste() -{ - XmComboBoxPaste((Widget) m_mainWidget); -} - -void wxComboBox::SetEditable(bool WXUNUSED(editable)) -{ - // TODO -} - -void wxComboBox::SetInsertionPoint(long pos) -{ - XmComboBoxSetInsertionPosition ((Widget) m_mainWidget, (XmTextPosition) pos); -} - -void wxComboBox::SetInsertionPointEnd() -{ - XmTextPosition pos = XmComboBoxGetLastPosition ((Widget) m_mainWidget); - XmComboBoxSetInsertionPosition ((Widget) m_mainWidget, (XmTextPosition) (pos + 1)); -} - -long wxComboBox::GetInsertionPoint() const -{ - return (long) XmComboBoxGetInsertionPosition ((Widget) m_mainWidget); -} - -long wxComboBox::GetLastPosition() const -{ - return (long) XmComboBoxGetLastPosition ((Widget) m_mainWidget); -} - -void wxComboBox::Replace(long from, long to, const wxString& value) -{ - XmComboBoxReplace ((Widget) m_mainWidget, (XmTextPosition) from, (XmTextPosition) to, - (char*) (const char*) value); -} - -void wxComboBox::Remove(long from, long to) -{ - XmComboBoxSetSelection ((Widget) m_mainWidget, (XmTextPosition) from, (XmTextPosition) to, - (Time) 0); - XmComboBoxRemove ((Widget) m_mainWidget); -} - -void wxComboBox::SetSelection(long from, long to) -{ - XmComboBoxSetSelection ((Widget) m_mainWidget, (XmTextPosition) from, (XmTextPosition) to, - (Time) 0); -} - -void wxComboBoxCallback (Widget WXUNUSED(w), XtPointer clientData, - XmComboBoxSelectionCallbackStruct * cbs) -{ - wxComboBox *item = (wxComboBox *) clientData; - - switch (cbs->reason) - { - case XmCR_SINGLE_SELECT: - case XmCR_BROWSE_SELECT: - { - wxCommandEvent event (wxEVT_COMMAND_COMBOBOX_SELECTED, item->GetId()); - event.m_commandInt = cbs->index - 1; - // event.m_commandString = item->GetString (event.m_commandInt); - event.m_extraLong = TRUE; - event.SetEventObject(item); - item->ProcessCommand (event); - break; - } - case XmCR_VALUE_CHANGED: - { - wxCommandEvent event (wxEVT_COMMAND_TEXT_UPDATED, item->GetId()); - event.m_commandInt = -1; - // event.m_commandString = item->GetValue(); - event.m_extraLong = TRUE; - event.SetEventObject(item); - item->ProcessCommand (event); - break; - } - default: - break; - } -} - -void wxComboBox::ChangeFont(bool keepOriginalSize) -{ - // Don't use the base class wxChoice's ChangeFont - wxWindow::ChangeFont(keepOriginalSize); -} - -void wxComboBox::ChangeBackgroundColour() -{ - wxWindow::ChangeBackgroundColour(); -} - -void wxComboBox::ChangeForegroundColour() -{ - wxWindow::ChangeBackgroundColour(); -} - -#endif - diff --git a/src/motif/control.cpp b/src/motif/control.cpp deleted file mode 100644 index 91758e606a..0000000000 --- a/src/motif/control.cpp +++ /dev/null @@ -1,130 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: control.cpp -// Purpose: wxControl class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "control.h" -#endif - -#include "wx/control.h" -#include "wx/utils.h" - -#include - -#if !USE_SHARED_LIBRARY -IMPLEMENT_ABSTRACT_CLASS(wxControl, wxWindow) - -BEGIN_EVENT_TABLE(wxControl, wxWindow) -END_EVENT_TABLE() -#endif - -// Item members -wxControl::wxControl() -{ - m_backgroundColour = *wxWHITE; - m_foregroundColour = *wxBLACK; - m_callback = 0; - m_inSetValue = FALSE; -} - -wxControl::~wxControl() -{ - // If we delete an item, we should initialize the parent panel, - // because it could now be invalid. - wxWindow *parent = (wxWindow *)GetParent(); - if (parent) - { - if (parent->GetDefaultItem() == (wxButton*) this) - parent->SetDefaultItem(NULL); - } -} - -void wxControl::SetLabel(const wxString& label) -{ - Widget widget = (Widget) GetLabelWidget() ; - if (!widget) - return; - - wxStripMenuCodes((char*) (const char*) label, wxBuffer); - - XmString text = XmStringCreateSimple (wxBuffer); - XtVaSetValues (widget, - XmNlabelString, text, - XmNlabelType, XmSTRING, - NULL); - XmStringFree (text); -} - -wxString wxControl::GetLabel() const -{ - Widget widget = (Widget) GetLabelWidget() ; - if (!widget) - return wxEmptyString; - - XmString text; - char *s; - XtVaGetValues (widget, - XmNlabelString, &text, - NULL); - - if (XmStringGetLtoR (text, XmSTRING_DEFAULT_CHARSET, &s)) - { - wxString str(s); - XtFree (s); - XmStringFree(text); - return str; - } - else - { - // XmStringFree(text); - return wxEmptyString; - } -} - -void wxControl::ProcessCommand (wxCommandEvent & event) -{ - // Tries: - // 1) A callback function (to become obsolete) - // 2) OnCommand, starting at this window and working up parent hierarchy - // 3) OnCommand then calls ProcessEvent to search the event tables. - if (m_callback) - { - (void) (*(m_callback)) (*this, event); - } - else - { - GetEventHandler()->OnCommand(*this, event); - } -} - -void wxControl::Centre (int direction) -{ - int x, y, width, height, panel_width, panel_height, new_x, new_y; - - wxWindow *parent = (wxWindow *) GetParent (); - if (!parent) - return; - - parent->GetClientSize (&panel_width, &panel_height); - GetSize (&width, &height); - GetPosition (&x, &y); - - new_x = x; - new_y = y; - - if (direction & wxHORIZONTAL) - new_x = (int) ((panel_width - width) / 2); - - if (direction & wxVERTICAL) - new_y = (int) ((panel_height - height) / 2); - - SetSize (new_x, new_y, width, height); -} - diff --git a/src/motif/cross.xbm b/src/motif/cross.xbm deleted file mode 100644 index b07cbe7fcd..0000000000 --- a/src/motif/cross.xbm +++ /dev/null @@ -1,6 +0,0 @@ -#define cross_width 15 -#define cross_height 15 -static char cross_bits[] = { - 0x84, 0x10, 0x84, 0x10, 0xff, 0x7f, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, - 0x84, 0x10, 0xff, 0x7f, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, - 0xff, 0x7f, 0x84, 0x10, 0x84, 0x10}; diff --git a/src/motif/cursor.cpp b/src/motif/cursor.cpp deleted file mode 100644 index c1027a775e..0000000000 --- a/src/motif/cursor.cpp +++ /dev/null @@ -1,436 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: cursor.cpp -// Purpose: wxCursor class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "cursor.h" -#endif - -#include "wx/cursor.h" -#include "wx/gdicmn.h" -#include "wx/icon.h" -#include "wx/app.h" -#include "wx/utils.h" - -#include -#include - -#include "wx/motif/private.h" - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxCursor, wxBitmap) -IMPLEMENT_DYNAMIC_CLASS(wxXCursor, wxObject) -#endif - -wxCursorRefData::wxCursorRefData() -{ - m_width = 32; m_height = 32; - m_cursorId = wxCURSOR_NONE; -} - -wxCursorRefData::~wxCursorRefData() -{ - wxNode* node = m_cursors.First(); - while (node) - { - wxXCursor* c = (wxXCursor*) node->Data(); - // TODO: how to delete cursor? - // XDestroyCursor((Display*) c->m_display, (Cursor) c->m_cursor); // ?? - delete c; - node = node->Next(); - } -} - -wxCursor::wxCursor() -{ -} - -wxCursor::wxCursor(const char bits[], int width, int height, - int hotSpotX, int hotSpotY, const char maskBits[]) -{ - m_refData = new wxCursorRefData; - - Display *dpy = (Display*) wxGetDisplay(); - int screen_num = DefaultScreen (dpy); - - Pixmap pixmap = XCreatePixmapFromBitmapData (dpy, - RootWindow (dpy, DefaultScreen(dpy)), - (char*) bits, width, height, - 1 , 0 , 1); - - Pixmap mask_pixmap = None; - if (maskBits != NULL) - { - mask_pixmap = XCreatePixmapFromBitmapData (dpy, - RootWindow (dpy, DefaultScreen(dpy)), - (char*) maskBits, width, height, - 1 , 0 , 1); - } - - XColor foreground_color; - XColor background_color; - foreground_color.pixel = BlackPixel(dpy, screen_num); - background_color.pixel = WhitePixel(dpy, screen_num); - Colormap cmap = (Colormap) wxTheApp->GetMainColormap((WXDisplay*) dpy); - XQueryColor(dpy, cmap, &foreground_color); - XQueryColor(dpy, cmap, &background_color); - - Cursor cursor = XCreatePixmapCursor (dpy, - pixmap, - mask_pixmap, - &foreground_color, - &background_color, - hotSpotX , - hotSpotY); - - XFreePixmap( dpy, pixmap ); - if (mask_pixmap != None) - { - XFreePixmap( dpy, mask_pixmap ); - } - - if (cursor) - { - wxXCursor *c = new wxXCursor; - - c->m_cursor = (WXCursor) cursor; - c->m_display = (WXDisplay*) dpy; - M_CURSORDATA->m_cursors.Append(c); - M_CURSORDATA->m_ok = TRUE; - } - else - { - M_CURSORDATA->m_ok = TRUE; - } -} - -wxCursor::wxCursor(const wxString& name, long flags, int hotSpotX, int hotSpotY) -{ - // Must be an XBM file - if (flags != wxBITMAP_TYPE_XBM) - return; - - m_refData = new wxCursorRefData; - - int hotX = -1, hotY = -1; - unsigned int w, h; - Pixmap pixmap; - - Display *dpy = (Display*) wxGetDisplay(); - int screen_num = DefaultScreen (dpy); - - int value = XReadBitmapFile (dpy, RootWindow (dpy, DefaultScreen (dpy)), - (char*) (const char*) name, &w, &h, &pixmap, &hotX, &hotY); - - M_BITMAPDATA->m_width = w; - M_BITMAPDATA->m_height = h; - M_BITMAPDATA->m_depth = 1; - - if ((value == BitmapFileInvalid) || - (value == BitmapOpenFailed) || - (value == BitmapNoMemory)) - { - } - else - { - XColor foreground_color; - XColor background_color; - foreground_color.pixel = BlackPixel(dpy, screen_num); - background_color.pixel = WhitePixel(dpy, screen_num); - Colormap cmap = (Colormap) wxTheApp->GetMainColormap((WXDisplay*) dpy); - XQueryColor(dpy, cmap, &foreground_color); - XQueryColor(dpy, cmap, &background_color); - - // TODO: how do we determine whether hotX, hotY were read correctly? - if (hotX < 0 || hotY < 0) - { - hotX = hotSpotX; - hotY = hotSpotY; - } - if (hotX < 0 || hotY < 0) - { - hotX = 0; - hotY = 0; - } - - Pixmap mask_pixmap = None; - Cursor cursor = XCreatePixmapCursor (dpy, - pixmap, - mask_pixmap, - &foreground_color, - &background_color, - hotX, - hotY); - - XFreePixmap( dpy, pixmap ); - if (cursor) - { - wxXCursor *c = new wxXCursor; - - c->m_cursor = (WXCursor) cursor; - c->m_display = (WXDisplay*) dpy; - M_CURSORDATA->m_cursors.Append(c); - M_CURSORDATA->m_ok = TRUE; - } - } - -} - -// Cursors by stock number -wxCursor::wxCursor(wxStockCursor id) -{ - m_refData = new wxCursorRefData; - M_CURSORDATA->m_cursorId = id; - M_CURSORDATA->m_ok = TRUE; - - WXDisplay* display = wxGetDisplay(); - if (!display) - return; - - WXCursor cursor = GetXCursor(display); - if (cursor) - { - wxXCursor* c = new wxXCursor; - c->m_cursor = cursor; - c->m_display = wxGetDisplay(); - M_CURSORDATA->m_cursors.Append(c); - M_CURSORDATA->m_ok = TRUE; - } -} - -wxCursor::~wxCursor() -{ -} - -// Motif-specific: create/get a cursor for the current display -WXCursor wxCursor::GetXCursor(WXDisplay* display) -{ - if (!M_CURSORDATA) - return (WXCursor) 0; - wxNode* node = M_CURSORDATA->m_cursors.First(); - while (node) - { - wxXCursor* c = (wxXCursor*) node->Data(); - if (c->m_display == display) - return c->m_cursor; - node = node->Next(); - } - - // No cursor for this display, so let's see if we're an id-type cursor. - - if (M_CURSORDATA->m_cursorId != wxCURSOR_NONE) - { - WXCursor cursor = MakeCursor(display, M_CURSORDATA->m_cursorId); - if (cursor) - { - wxXCursor* c = new wxXCursor; - c->m_cursor = cursor; - c->m_display = display; - M_CURSORDATA->m_cursors.Append(c); - return cursor; - } - else - return (WXCursor) 0; - } - - // Not an id-type cursor, so we don't know how to create it. - return (WXCursor) 0; -} - -// Make a cursor from standard id -WXCursor wxCursor::MakeCursor(WXDisplay* display, wxStockCursor id) -{ - Display* dpy = (Display*) display; - Cursor cursor = (Cursor) 0; - - switch (id) - { - case wxCURSOR_WAIT: - { - cursor = XCreateFontCursor (dpy, XC_watch); - break; - } - case wxCURSOR_CROSS: - { - cursor = XCreateFontCursor (dpy, XC_crosshair); - break; - } - case wxCURSOR_CHAR: - { - // Nothing - break; - } - case wxCURSOR_HAND: - { - cursor = XCreateFontCursor (dpy, XC_hand1); - break; - } - case wxCURSOR_BULLSEYE: - { - cursor = XCreateFontCursor (dpy, XC_target); - break; - } - case wxCURSOR_PENCIL: - { - cursor = XCreateFontCursor (dpy, XC_pencil); - break; - } - case wxCURSOR_MAGNIFIER: - { - cursor = XCreateFontCursor (dpy, XC_sizing); - break; - } - case wxCURSOR_IBEAM: - { - cursor = XCreateFontCursor (dpy, XC_xterm); - break; - } - case wxCURSOR_NO_ENTRY: - { - cursor = XCreateFontCursor (dpy, XC_pirate); - break; - } - case wxCURSOR_LEFT_BUTTON: - { - cursor = XCreateFontCursor (dpy, XC_leftbutton); - break; - } - case wxCURSOR_RIGHT_BUTTON: - { - cursor = XCreateFontCursor (dpy, XC_rightbutton); - break; - } - case wxCURSOR_MIDDLE_BUTTON: - { - cursor = XCreateFontCursor (dpy, XC_middlebutton); - break; - } - case wxCURSOR_QUESTION_ARROW: - { - cursor = XCreateFontCursor (dpy, XC_question_arrow); - break; - } - case wxCURSOR_SIZING: - { - cursor = XCreateFontCursor (dpy, XC_sizing); - break; - } - case wxCURSOR_WATCH: - { - cursor = XCreateFontCursor (dpy, XC_watch); - break; - } - case wxCURSOR_SPRAYCAN: - { - cursor = XCreateFontCursor (dpy, XC_spraycan); - break; - } - case wxCURSOR_PAINT_BRUSH: - { - cursor = XCreateFontCursor (dpy, XC_spraycan); - break; - } - case wxCURSOR_SIZENWSE: - case wxCURSOR_SIZENESW: - { - // Not available in X - cursor = XCreateFontCursor (dpy, XC_crosshair); - break; - } - case wxCURSOR_SIZEWE: - { - cursor = XCreateFontCursor (dpy, XC_sb_h_double_arrow); - break; - } - case wxCURSOR_SIZENS: - { - cursor = XCreateFontCursor (dpy, XC_sb_v_double_arrow); - break; - } - case wxCURSOR_POINT_LEFT: - { - cursor = XCreateFontCursor (dpy, XC_sb_left_arrow); - break; - } - case wxCURSOR_POINT_RIGHT: - { - cursor = XCreateFontCursor (dpy, XC_sb_right_arrow); - break; - } - // (JD Huggins) added more stock cursors for X - // X-only cursors BEGIN - case wxCURSOR_CROSS_REVERSE: - { - cursor = XCreateFontCursor(dpy, XC_cross_reverse); - break; - } - case wxCURSOR_DOUBLE_ARROW: - { - cursor = XCreateFontCursor(dpy, XC_double_arrow); - break; - } - case wxCURSOR_BASED_ARROW_UP: - { - cursor = XCreateFontCursor(dpy, XC_based_arrow_up); - break; - } - case wxCURSOR_BASED_ARROW_DOWN: - { - cursor = XCreateFontCursor(dpy, XC_based_arrow_down); - break; - } - default: - case wxCURSOR_ARROW: - { - cursor = XCreateFontCursor (dpy, XC_top_left_arrow); - break; - } - case wxCURSOR_BLANK: - { - GC gc; - XGCValues gcv; - Pixmap empty_pixmap; - XColor blank_color; - - empty_pixmap = XCreatePixmap (dpy, RootWindow (dpy, DefaultScreen (dpy)), - 16, 16, 1); - gcv.function = GXxor; - gc = XCreateGC (dpy, - empty_pixmap, - GCFunction, - &gcv); - XCopyArea (dpy, - empty_pixmap, - empty_pixmap, - gc, - 0, 0, - 16, 16, - 0, 0); - XFreeGC (dpy, gc); - cursor = XCreatePixmapCursor (dpy, - empty_pixmap, - empty_pixmap, - &blank_color, - &blank_color, - 8, 8); - - break; - } - } - return (WXCursor) cursor; -} - -// Global cursor setting -void wxSetCursor(const wxCursor& WXUNUSED(cursor)) -{ - // Nothing to do for Motif (no global cursor) -} - - diff --git a/src/motif/data.cpp b/src/motif/data.cpp deleted file mode 100644 index e980207553..0000000000 --- a/src/motif/data.cpp +++ /dev/null @@ -1,148 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: data.cpp -// Purpose: Various data -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation -#endif - -#include "wx/wx.h" -#include "wx/dcps.h" - -#define _MAXPATHLEN 500 - -// Useful buffer, initialized in CommonInit -char *wxBuffer = NULL; - -// Windows List -wxList wxTopLevelWindows; - -// List of windows pending deletion -wxList wxPendingDelete; - -int wxPageNumber; - -// GDI Object Lists -wxBrushList *wxTheBrushList = NULL; -wxPenList *wxThePenList = NULL; -wxFontList *wxTheFontList = NULL; -wxBitmapList *wxTheBitmapList = NULL; - -wxColourDatabase *wxTheColourDatabase = NULL; - -// Stock objects -wxFont *wxNORMAL_FONT; -wxFont *wxSMALL_FONT; -wxFont *wxITALIC_FONT; -wxFont *wxSWISS_FONT; -wxPen *wxRED_PEN; - -wxPen *wxCYAN_PEN; -wxPen *wxGREEN_PEN; -wxPen *wxBLACK_PEN; -wxPen *wxWHITE_PEN; -wxPen *wxTRANSPARENT_PEN; -wxPen *wxBLACK_DASHED_PEN; -wxPen *wxGREY_PEN; -wxPen *wxMEDIUM_GREY_PEN; -wxPen *wxLIGHT_GREY_PEN; - -wxBrush *wxBLUE_BRUSH; -wxBrush *wxGREEN_BRUSH; -wxBrush *wxWHITE_BRUSH; -wxBrush *wxBLACK_BRUSH; -wxBrush *wxTRANSPARENT_BRUSH; -wxBrush *wxCYAN_BRUSH; -wxBrush *wxRED_BRUSH; -wxBrush *wxGREY_BRUSH; -wxBrush *wxMEDIUM_GREY_BRUSH; -wxBrush *wxLIGHT_GREY_BRUSH; - -wxColour *wxBLACK; -wxColour *wxWHITE; -wxColour *wxRED; -wxColour *wxBLUE; -wxColour *wxGREEN; -wxColour *wxCYAN; -wxColour *wxLIGHT_GREY; - -wxCursor *wxSTANDARD_CURSOR = NULL; -wxCursor *wxHOURGLASS_CURSOR = NULL; -wxCursor *wxCROSS_CURSOR = NULL; - -// 'Null' objects -wxAcceleratorTable wxNullAcceleratorTable; -wxBitmap wxNullBitmap; -wxIcon wxNullIcon; -wxCursor wxNullCursor; -wxPen wxNullPen; -wxBrush wxNullBrush; -wxPalette wxNullPalette; -wxFont wxNullFont; -wxColour wxNullColour; - -// Default window names -const char *wxButtonNameStr = "button"; -const char *wxCanvasNameStr = "canvas"; -const char *wxCheckBoxNameStr = "check"; -const char *wxChoiceNameStr = "choice"; -const char *wxComboBoxNameStr = "comboBox"; -const char *wxDialogNameStr = "dialog"; -const char *wxFrameNameStr = "frame"; -const char *wxGaugeNameStr = "gauge"; -const char *wxStaticBoxNameStr = "groupBox"; -const char *wxListBoxNameStr = "listBox"; -const char *wxStaticTextNameStr = "message"; -const char *wxStaticBitmapNameStr = "message"; -const char *wxMultiTextNameStr = "multitext"; -const char *wxPanelNameStr = "panel"; -const char *wxRadioBoxNameStr = "radioBox"; -const char *wxRadioButtonNameStr = "radioButton"; -const char *wxBitmapRadioButtonNameStr = "radioButton"; -const char *wxScrollBarNameStr = "scrollBar"; -const char *wxSliderNameStr = "slider"; -const char *wxStaticNameStr = "static"; -const char *wxTextCtrlWindowNameStr = "textWindow"; -const char *wxTextCtrlNameStr = "text"; -const char *wxVirtListBoxNameStr = "virtListBox"; -const char *wxButtonBarNameStr = "buttonbar"; -const char *wxEnhDialogNameStr = "Shell"; -const char *wxToolBarNameStr = "toolbar"; -const char *wxStatusLineNameStr = "status_line"; -const char *wxEmptyString = ""; -const char *wxGetTextFromUserPromptStr = "Input Text"; -const char *wxMessageBoxCaptionStr = "Message"; -const char *wxFileSelectorPromptStr = "Select a file"; -const char *wxFileSelectorDefaultWildcardStr = "*.*"; -const char *wxInternalErrorStr = "wxWindows Internal Error"; -const char *wxFatalErrorStr = "wxWindows Fatal Error"; - -// See wx/utils.h -const char *wxFloatToStringStr = "%.2f"; -const char *wxDoubleToStringStr = "%.2f"; - -#if wxUSE_POSTSCRIPT -wxPrintPaperDatabase* wxThePrintPaperDatabase = NULL; -#endif - -#if wxUSE_SHARED_LIBRARY -///// Event tables (also must be in one, statically-linked file for shared libraries) - -// This is the base, wxEvtHandler 'bootstrap' code which is expanded manually here -const wxEventTable *wxEvtHandler::GetEventTable() const { return &wxEvtHandler::sm_eventTable; } - -const wxEventTable wxEvtHandler::sm_eventTable = - { NULL, &wxEvtHandler::sm_eventTableEntries[0] }; - -const wxEventTableEntry wxEvtHandler::sm_eventTableEntries[] = { { 0, 0, 0, NULL } }; -#endif - -const wxSize wxDefaultSize(-1, -1); -const wxPoint wxDefaultPosition(-1, -1); diff --git a/src/motif/dataobj.cpp b/src/motif/dataobj.cpp deleted file mode 100644 index 465bc56741..0000000000 --- a/src/motif/dataobj.cpp +++ /dev/null @@ -1,69 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: dataobj.cpp -// Purpose: wxDataObject class -// Author: Julian Smart -// Id: $Id$ -// Copyright: (c) 1998 Julian Smart -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dataobj.h" -#endif - -#include "wx/dataobj.h" -#include "wx/app.h" - -//------------------------------------------------------------------------- -// wxDataObject -//------------------------------------------------------------------------- - -IMPLEMENT_ABSTRACT_CLASS( wxDataObject, wxObject ) - -// ---------------------------------------------------------------------------- -// wxTextDataObject -// ---------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS( wxTextDataObject, wxDataObject ) - -// ---------------------------------------------------------------------------- -// wxFileDataObject -// ---------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS( wxFileDataObject, wxDataObject ) - -// ---------------------------------------------------------------------------- -// wxBitmapDataObject -// ---------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS( wxBitmapDataObject, wxDataObject ) - -// ---------------------------------------------------------------------------- -// wxPrivateDataObject -// ---------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS( wxPrivateDataObject, wxDataObject ) - -wxPrivateDataObject::wxPrivateDataObject() -{ - m_size = 0; - m_data = (char*) NULL; - m_id = wxTheApp->GetAppName(); -} - -wxPrivateDataObject::~wxPrivateDataObject() -{ - if (m_data) delete[] m_data; -} - -void wxPrivateDataObject::SetData( const char *data, size_t size ) -{ - m_size = size; - - if (m_data) delete[] m_data; - - m_data = new char[size]; - - memcpy( m_data, data, size ); -} - diff --git a/src/motif/dc.cpp b/src/motif/dc.cpp deleted file mode 100644 index bd526de291..0000000000 --- a/src/motif/dc.cpp +++ /dev/null @@ -1,412 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dc.cpp -// Purpose: wxDC class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dc.h" -#endif - -#include "wx/dc.h" -#include "wx/dcmemory.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_ABSTRACT_CLASS(wxDC, wxObject) -#endif - -//----------------------------------------------------------------------------- -// constants -//----------------------------------------------------------------------------- - -#define mm2inches 0.0393700787402 -#define inches2mm 25.4 -#define mm2twips 56.6929133859 -#define twips2mm 0.0176388888889 -#define mm2pt 2.83464566929 -#define pt2mm 0.352777777778 - -//----------------------------------------------------------------------------- -// wxDC -//----------------------------------------------------------------------------- - -wxDC::wxDC(void) -{ - m_ok = FALSE; - m_optimize = FALSE; - m_colour = TRUE; - m_clipping = FALSE; - - m_mm_to_pix_x = 1.0; - m_mm_to_pix_y = 1.0; - - m_logicalOriginX = 0; - m_logicalOriginY = 0; - m_deviceOriginX = 0; - m_deviceOriginY = 0; - m_internalDeviceOriginX = 0; - m_internalDeviceOriginY = 0; - m_externalDeviceOriginX = 0; - m_externalDeviceOriginY = 0; - - m_logicalScaleX = 1.0; - m_logicalScaleY = 1.0; - m_userScaleX = 1.0; - m_userScaleY = 1.0; - m_scaleX = 1.0; - m_scaleY = 1.0; - - m_mappingMode = MM_TEXT; - m_needComputeScaleX = FALSE; - m_needComputeScaleY = FALSE; - - m_signX = 1; // default x-axis left to right - m_signY = 1; // default y-axis top down - - m_maxX = m_maxY = -100000; - m_minY = m_minY = 100000; - - m_logicalFunction = wxCOPY; - // m_textAlignment = wxALIGN_TOP_LEFT; - m_backgroundMode = wxTRANSPARENT; - - m_textForegroundColour = *wxBLACK; - m_textBackgroundColour = *wxWHITE; - m_pen = *wxBLACK_PEN; - m_font = *wxNORMAL_FONT; - m_brush = *wxTRANSPARENT_BRUSH; - m_backgroundBrush = *wxWHITE_BRUSH; - - m_isInteractive = FALSE; - - // m_palette = wxAPP_COLOURMAP; -}; - -wxDC::~wxDC(void) -{ -}; - -void wxDC::DrawIcon( const wxIcon &WXUNUSED(icon), long WXUNUSED(x), long WXUNUSED(y)) -{ -}; - -void wxDC::DrawBitmap( const wxBitmap& bitmap, long x, long y, bool useMask ) -{ - if (!bitmap.Ok()) - return; - - wxMemoryDC memDC; - memDC.SelectObject(bitmap); - - /* Not sure if we need this. The mask should leave the - * masked areas as per the original background of this DC. - if (useMask) - { - // There might be transparent areas, so make these - // the same colour as this DC - memDC.SetBackground(* GetBackground()); - memDC.Clear(); - } - */ - - Blit(x, y, bitmap.GetWidth(), bitmap.GetHeight(), & memDC, 0, 0, wxCOPY, useMask); - - memDC.SelectObject(wxNullBitmap); -}; - - -void wxDC::DrawPoint( wxPoint& point ) -{ - DrawPoint( point.x, point.y ); -}; - -void wxDC::DrawPolygon( wxList *list, long xoffset, long yoffset, int fillStyle ) -{ - int n = list->Number(); - wxPoint *points = new wxPoint[n]; - - int i = 0; - for( wxNode *node = list->First(); node; node = node->Next() ) - { - wxPoint *point = (wxPoint *)node->Data(); - points[i].x = point->x; - points[i++].y = point->y; - }; - DrawPolygon( n, points, xoffset, yoffset, fillStyle ); - delete[] points; -}; - -void wxDC::DrawLines( wxList *list, long xoffset, long yoffset ) -{ - int n = list->Number(); - wxPoint *points = new wxPoint[n]; - - int i = 0; - for( wxNode *node = list->First(); node; node = node->Next() ) - { - wxPoint *point = (wxPoint *)node->Data(); - points[i].x = point->x; - points[i++].y = point->y; - }; - DrawLines( n, points, xoffset, yoffset ); - delete []points; -}; - -void wxDC::DrawSpline( long x1, long y1, long x2, long y2, long x3, long y3 ) -{ - wxList list; - list.Append( (wxObject*)new wxPoint(x1, y1) ); - list.Append( (wxObject*)new wxPoint(x2, y2) ); - list.Append( (wxObject*)new wxPoint(x3, y3) ); - DrawSpline(&list); - wxNode *node = list.First(); - while (node) - { - wxPoint *p = (wxPoint*)node->Data(); - delete p; - node = node->Next(); - }; -}; - -void wxDC::DrawSpline( int n, wxPoint points[] ) -{ - wxList list; - for (int i = 0; i < n; i++) list.Append( (wxObject*)&points[i] ); - DrawSpline( &list ); -}; - -void wxDC::SetClippingRegion( long x, long y, long width, long height ) -{ - m_clipping = TRUE; - m_clipX1 = x; - m_clipY1 = y; - m_clipX2 = x + width; - m_clipY2 = y + height; -}; - -void wxDC::DestroyClippingRegion(void) -{ - m_clipping = FALSE; -}; - -void wxDC::GetClippingBox( long *x, long *y, long *width, long *height ) const -{ - if (m_clipping) - { - if (x) *x = m_clipX1; - if (y) *y = m_clipY1; - if (width) *width = (m_clipX2 - m_clipX1); - if (height) *height = (m_clipY2 - m_clipY1); - } - else - *x = *y = *width = *height = 0; -}; - -void wxDC::GetSize( int* width, int* height ) const -{ - *width = m_maxX-m_minX; - *height = m_maxY-m_minY; -}; - -void wxDC::GetSizeMM( long* width, long* height ) const -{ - int w = 0; - int h = 0; - GetSize( &w, &h ); - *width = long( double(w) / (m_scaleX*m_mm_to_pix_x) ); - *height = long( double(h) / (m_scaleY*m_mm_to_pix_y) ); -}; - -void wxDC::SetTextForeground( const wxColour &col ) -{ - if (!Ok()) return; - m_textForegroundColour = col; -}; - -void wxDC::SetTextBackground( const wxColour &col ) -{ - if (!Ok()) return; - m_textBackgroundColour = col; -}; - -void wxDC::SetMapMode( int mode ) -{ - switch (mode) - { - case MM_TWIPS: - SetLogicalScale( twips2mm*m_mm_to_pix_x, twips2mm*m_mm_to_pix_y ); - break; - case MM_POINTS: - SetLogicalScale( pt2mm*m_mm_to_pix_x, pt2mm*m_mm_to_pix_y ); - break; - case MM_METRIC: - SetLogicalScale( m_mm_to_pix_x, m_mm_to_pix_y ); - break; - case MM_LOMETRIC: - SetLogicalScale( m_mm_to_pix_x/10.0, m_mm_to_pix_y/10.0 ); - break; - default: - case MM_TEXT: - SetLogicalScale( 1.0, 1.0 ); - break; - }; - if (mode != MM_TEXT) - { - m_needComputeScaleX = TRUE; - m_needComputeScaleY = TRUE; - }; -}; - -void wxDC::SetUserScale( double x, double y ) -{ - // allow negative ? -> no - m_userScaleX = x; - m_userScaleY = y; - ComputeScaleAndOrigin(); -}; - -void wxDC::GetUserScale( double *x, double *y ) -{ - if (x) *x = m_userScaleX; - if (y) *y = m_userScaleY; -}; - -void wxDC::SetLogicalScale( double x, double y ) -{ - // allow negative ? - m_logicalScaleX = x; - m_logicalScaleY = y; - ComputeScaleAndOrigin(); -}; - -void wxDC::GetLogicalScale( double *x, double *y ) -{ - if (x) *x = m_logicalScaleX; - if (y) *y = m_logicalScaleY; -}; - -void wxDC::SetLogicalOrigin( long x, long y ) -{ - m_logicalOriginX = x * m_signX; // is this still correct ? - m_logicalOriginY = y * m_signY; - ComputeScaleAndOrigin(); -}; - -void wxDC::GetLogicalOrigin( long *x, long *y ) -{ - if (x) *x = m_logicalOriginX; - if (y) *y = m_logicalOriginY; -}; - -void wxDC::SetDeviceOrigin( long x, long y ) -{ - m_externalDeviceOriginX = x; - m_externalDeviceOriginY = y; - ComputeScaleAndOrigin(); -}; - -void wxDC::GetDeviceOrigin( long *x, long *y ) -{ - // if (x) *x = m_externalDeviceOriginX; - // if (y) *y = m_externalDeviceOriginY; - if (x) *x = m_deviceOriginX; - if (y) *y = m_deviceOriginY; -}; - -void wxDC::SetInternalDeviceOrigin( long x, long y ) -{ - m_internalDeviceOriginX = x; - m_internalDeviceOriginY = y; - ComputeScaleAndOrigin(); -}; - -void wxDC::GetInternalDeviceOrigin( long *x, long *y ) -{ - if (x) *x = m_internalDeviceOriginX; - if (y) *y = m_internalDeviceOriginY; -}; - -void wxDC::SetAxisOrientation( bool xLeftRight, bool yBottomUp ) -{ - m_signX = (xLeftRight ? 1 : -1); - m_signY = (yBottomUp ? -1 : 1); - ComputeScaleAndOrigin(); -}; - -long wxDC::DeviceToLogicalX(long x) const -{ - return XDEV2LOG(x); -}; - -long wxDC::DeviceToLogicalY(long y) const -{ - return YDEV2LOG(y); -}; - -long wxDC::DeviceToLogicalXRel(long x) const -{ - return XDEV2LOGREL(x); -}; - -long wxDC::DeviceToLogicalYRel(long y) const -{ - return YDEV2LOGREL(y); -}; - -long wxDC::LogicalToDeviceX(long x) const -{ - return XLOG2DEV(x); -}; - -long wxDC::LogicalToDeviceY(long y) const -{ - return YLOG2DEV(y); -}; - -long wxDC::LogicalToDeviceXRel(long x) const -{ - return XLOG2DEVREL(x); -}; - -long wxDC::LogicalToDeviceYRel(long y) const -{ - return YLOG2DEVREL(y); -}; - -void wxDC::CalcBoundingBox( long x, long y ) -{ - if (x < m_minX) m_minX = x; - if (y < m_minY) m_minY = y; - if (x > m_maxX) m_maxX = x; - if (y > m_maxY) m_maxY = y; -}; - -void wxDC::ComputeScaleAndOrigin(void) -{ - // CMB: copy scale to see if it changes - double origScaleX = m_scaleX; - double origScaleY = m_scaleY; - - m_scaleX = m_logicalScaleX * m_userScaleX; - m_scaleY = m_logicalScaleY * m_userScaleY; - - m_deviceOriginX = m_internalDeviceOriginX + m_externalDeviceOriginX; - m_deviceOriginY = m_internalDeviceOriginY + m_externalDeviceOriginY; - - // CMB: if scale has changed call SetPen to recalulate the line width - if (m_scaleX != origScaleX || m_scaleY != origScaleY) - { - // this is a bit artificial, but we need to force wxDC to think - // the pen has changed - wxPen* pen = & GetPen(); - wxPen tempPen; - m_pen = tempPen; - SetPen(* pen); - } -}; - diff --git a/src/motif/dcclient.cpp b/src/motif/dcclient.cpp deleted file mode 100644 index 3997b771da..0000000000 --- a/src/motif/dcclient.cpp +++ /dev/null @@ -1,2331 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcclient.cpp -// Purpose: wxClientDC class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -/* -About pens, brushes, and the autoSetting flag: - - Under X, pens and brushes control some of the same X drawing - parameters. Therefore, it is impossible to independently maintain - the current pen and the current brush. Also, some settings depend - on the current logical function. The m_currentFill, etc. instance - variables remember state across the brush and pen. - - Since pens are used more than brushes, the autoSetting flag - is used to indicate that a brush was recently used, and SetPen - must be called to reinstall the current pen's parameters. - If autoSetting includes 0x2, then the pens color may need - to be set based on XOR. - - There is, unfortunately, some confusion between setting the - current pen/brush and actually installing the brush/pen parameters. - Both functionalies are perform by SetPen and SetBrush. C'est la vie. -*/ - -#ifdef __GNUG__ -#pragma implementation "dcclient.h" -#endif - -#include "wx/dcclient.h" -#include "wx/dcmemory.h" -#include "wx/window.h" -#include "wx/app.h" -#include - -#include - -#include "wx/motif/private.h" - -#include "bdiag.xbm" -#include "fdiag.xbm" -#include "cdiag.xbm" -#include "horiz.xbm" -#include "verti.xbm" -#include "cross.xbm" - -static Pixmap bdiag, cdiag, fdiag, cross, horiz, verti; - -//----------------------------------------------------------------------------- -// constants -//----------------------------------------------------------------------------- - -#define RAD2DEG 57.2957795131 - -// Fudge factor. Obsolete? -// No. Robert Roebling -#define WX_GC_CF 1 - -//----------------------------------------------------------------------------- -// wxWindowDC -//----------------------------------------------------------------------------- - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxClientDC, wxWindowDC) -IMPLEMENT_DYNAMIC_CLASS(wxPaintDC, wxWindowDC) -IMPLEMENT_DYNAMIC_CLASS(wxWindowDC, wxDC) -#endif - -wxWindowDC::wxWindowDC(void) -{ - m_gc = (WXGC) 0; - m_gcBacking = (WXGC) 0; - m_window = NULL; - m_backgroundPixel = -1; - m_currentPenWidth = 1; - m_currentPenJoin = -1; - m_currentPenDashCount = -1; - m_currentPenDash = (char*) NULL; - m_currentStyle = -1; - m_currentFill = -1; - // m_currentBkMode = wxTRANSPARENT; - m_colour = wxColourDisplay(); - m_display = (WXDisplay*) NULL; - m_currentRegion = (WXRegion) 0; - m_userRegion = (WXRegion) 0; - m_pixmap = (WXPixmap) 0; - m_autoSetting = 0; - m_oldFont = (WXFont) 0; -}; - -wxWindowDC::wxWindowDC( wxWindow *window ) -{ - wxASSERT_MSG( (window != (wxWindow*) NULL), "You must pass a valid wxWindow to wxWindowDC/wxClientDC/wxPaintDC constructor." ); - - m_window = window; - m_gc = (WXGC) 0; - m_gcBacking = (WXGC) 0; - m_backgroundPixel = -1; - m_currentPenWidth = 1; - m_currentPenJoin = -1; - m_currentPenDashCount = -1; - m_currentPenDash = (char*) NULL; - m_currentStyle = -1; - m_currentFill = -1; - // m_currentBkMode = wxTRANSPARENT; - m_colour = wxColourDisplay(); - m_currentRegion = (WXRegion) 0; - m_userRegion = (WXRegion) 0; - m_ok = TRUE; - m_autoSetting = 0; - - m_display = window->GetXDisplay(); - m_pixmap = window->GetXWindow(); - Display* display = (Display*) m_display; - - XSetWindowColormap (display, (Pixmap) m_pixmap, (Colormap) wxTheApp->GetMainColormap(m_display)); - - XGCValues gcvalues; - gcvalues.foreground = BlackPixel (display, DefaultScreen (display)); - gcvalues.background = WhitePixel (display, DefaultScreen (display)); - gcvalues.graphics_exposures = False; - gcvalues.line_width = 1; - m_gc = (WXGC) XCreateGC (display, RootWindow (display, DefaultScreen (display)), - GCForeground | GCBackground | GCGraphicsExposures | GCLineWidth, - &gcvalues); - - if (m_window->GetBackingPixmap()) - { - m_gcBacking = (WXGC) XCreateGC (display, RootWindow (display, - DefaultScreen (display)), - GCForeground | GCBackground | GCGraphicsExposures | GCLineWidth, - &gcvalues); - } - - m_backgroundPixel = (int) gcvalues.background; - - // Get the current Font so we can set it back later - XGCValues valReturn; - XGetGCValues((Display*) m_display, (GC) m_gc, GCFont, &valReturn); - m_oldFont = (WXFont) valReturn.font; -}; - -wxWindowDC::~wxWindowDC(void) -{ - if (m_gc && (m_oldFont != (WXFont) 0) && ((long) m_oldFont != -1)) - { - XSetFont ((Display*) m_display, (GC) m_gc, (Font) m_oldFont); - - if (m_window && m_window->GetBackingPixmap()) - XSetFont ((Display*) m_display,(GC) m_gcBacking, (Font) m_oldFont); - } - - if (m_gc) - XFreeGC ((Display*) m_display, (GC) m_gc); - m_gc = (WXGC) 0; - - if (m_gcBacking) - XFreeGC ((Display*) m_display, (GC) m_gcBacking); - m_gcBacking = (WXGC) 0; - - if (m_currentRegion) - XDestroyRegion ((Region) m_currentRegion); - m_currentRegion = (WXRegion) 0; - - if (m_userRegion) - XDestroyRegion ((Region) m_userRegion); - m_userRegion = (WXRegion) 0; -}; - -void wxWindowDC::FloodFill( long WXUNUSED(x1), long WXUNUSED(y1), - const wxColour& WXUNUSED(col), int WXUNUSED(style) ) -{ - // TODO -}; - -bool wxWindowDC::GetPixel( long WXUNUSED(x1), long WXUNUSED(y1), wxColour *WXUNUSED(col) ) const -{ - // TODO - return FALSE; -}; - -void wxWindowDC::DrawLine( long x1, long y1, long x2, long y2 ) -{ - if (!Ok()) return; - - int x1d, y1d, x2d, y2d; - - // FreeGetPixelCache(); - - x1d = XLOG2DEV(x1); - y1d = YLOG2DEV(y1); - x2d = XLOG2DEV(x2); - y2d = YLOG2DEV(y2); - - if (m_autoSetting) - SetPen (m_pen); - - XDrawLine ((Display*) m_display, (Pixmap) m_pixmap, (GC) m_gc, x1d, y1d, x2d, y2d); - - if (m_window && m_window->GetBackingPixmap()) - XDrawLine ((Display*) m_display, (Pixmap) m_window->GetBackingPixmap(), (GC) m_gcBacking, - XLOG2DEV_2(x1), YLOG2DEV_2(y1), - XLOG2DEV_2(x2), YLOG2DEV_2(y2)); - - CalcBoundingBox(x1, y1); - CalcBoundingBox(x2, y2); -}; - -void wxWindowDC::CrossHair( long x, long y ) -{ - if (!Ok()) return; - - if (m_autoSetting) - SetPen (m_pen); - - int xx = XLOG2DEV (x); - int yy = YLOG2DEV (y); - int ww, hh; - wxDisplaySize (&ww, &hh); - XDrawLine ((Display*) m_display, (Pixmap) m_pixmap, (GC) m_gc, 0, yy, - ww, yy); - XDrawLine ((Display*) m_display, (Pixmap) m_pixmap, (GC) m_gc, xx, 0, - xx, hh); - - if (m_window && m_window->GetBackingPixmap()) - { - xx = XLOG2DEV_2 (x); - yy = YLOG2DEV_2 (y); - XDrawLine ((Display*) m_display, (Pixmap) m_window->GetBackingPixmap(), (GC) m_gcBacking, - 0, yy, - ww, yy); - XDrawLine ((Display*) m_display, (Pixmap) m_window->GetBackingPixmap(), (GC) m_gcBacking, - xx, 0, - xx, hh); - } -}; - -void wxWindowDC::DrawArc( long x1, long y1, long x2, long y2, long xc, long yc ) -{ - if (!Ok()) return; - - // FreeGetPixelCache(); - - int xx1 = XLOG2DEV (x1); - int yy1 = YLOG2DEV (y1); - int xx2 = XLOG2DEV (x2); - int yy2 = YLOG2DEV (y2); - int xxc = XLOG2DEV (xc); - int yyc = YLOG2DEV (yc); - int xxc_2 = XLOG2DEV_2 (xc); - int yyc_2 = YLOG2DEV_2 (yc); - - long dx = xx1 - xxc; - long dy = yy1 - yyc; - double radius = sqrt (dx * dx + dy * dy); - long r = (long) radius; - - double radius1, radius2; - - if (xx1 == xx2 && yy1 == yy2) - { - radius1 = 0.0; - radius2 = 360.0; - } - else if (radius == 0.0) - radius1 = radius2 = 0.0; - else - { - if (xx1 - xxc == 0) - if (yy1 - yyc < 0) - radius1 = 90.0; - else - radius1 = -90.0; - else - radius1 = -atan2 ((double) (yy1 - yyc), (double) (xx1 - xxc)) * 360.0 / (2 * M_PI); - - if (xx2 - xxc == 0) - if (yy2 - yyc < 0) - radius2 = 90.0; - else - radius2 = -90.0; - else - radius2 = -atan2 ((double) (yy2 - yyc), (double) (xx2 - xxc)) * 360.0 / (2 * M_PI); - } - radius1 *= 64.0; - radius2 *= 64.0; - int alpha1 = (int) radius1; - int alpha2 = (int) (radius2 - radius1); - while (alpha2 <= 0) - alpha2 += 360 * 64; - while (alpha2 > 360 * 64) - alpha2 -= 360 * 64; - - if (m_brush.Ok() && m_brush.GetStyle () != wxTRANSPARENT) - { - SetBrush (m_brush); - XFillArc ((Display*) m_display, (Pixmap) m_pixmap, (GC) (GC) m_gc, - xxc - r, yyc - r, 2 * r, 2 * r, alpha1, alpha2); - - if (m_window && m_window->GetBackingPixmap()) - XFillArc ((Display*) m_display, (Pixmap) m_window->GetBackingPixmap(), (GC) m_gcBacking, - xxc_2 - r, yyc_2 - r, 2 * r, 2 * r, alpha1, alpha2); - - } - - if (m_pen.Ok() && m_pen.GetStyle () != wxTRANSPARENT) - { - if (m_autoSetting) - SetPen (m_pen); - XDrawArc ((Display*) m_display, (Pixmap) m_pixmap, (GC) m_gc, - xxc - r, yyc - r, 2 * r, 2 * r, alpha1, alpha2); - - if (m_window && m_window->GetBackingPixmap()) - XDrawArc ((Display*) m_display, (Pixmap) m_window->GetBackingPixmap(), (GC) m_gcBacking, - xxc_2 - r, yyc_2 - r, 2 * r, 2 * r, alpha1, alpha2); - } - CalcBoundingBox (x1, y1); - CalcBoundingBox (x2, y2); -}; - -void wxWindowDC::DrawEllipticArc( long x, long y, long width, long height, double sa, double ea ) -{ - if (!Ok()) return; - - int xd, yd, wd, hd; - - xd = XLOG2DEV(x); - yd = YLOG2DEV(y); - wd = XLOG2DEVREL(width); - hd = YLOG2DEVREL(height); - - if (sa>=360 || sa<=-360) sa=sa-int(sa/360)*360; - if (ea>=360 || ea<=-360) ea=ea-int(ea/360)*360; - int start = int(sa*64); - int end = int(ea*64); - if (start<0) start+=360*64; - if (end <0) end +=360*64; - if (end>start) end-=start; - else end+=360*64-start; - - if (m_brush.Ok() && m_brush.GetStyle () != wxTRANSPARENT) - { - m_autoSetting = TRUE; // must be reset - - SetBrush (m_brush); - XFillArc ((Display*) m_display, (Pixmap) m_pixmap, (GC) m_gc, xd, yd, wd, hd, start, end); - - if (m_window && m_window->GetBackingPixmap()) - XFillArc ((Display*) m_display, (Pixmap) m_window->GetBackingPixmap(), (GC) m_gcBacking, - XLOG2DEV_2 (x), YLOG2DEV_2 (y),wd,hd,start,end); - } - - if (m_pen.Ok() && m_pen.GetStyle () != wxTRANSPARENT) - { - if (m_autoSetting) - SetPen (m_pen); - XDrawArc ((Display*) m_display, (Pixmap) m_pixmap, (GC) m_gc, xd, yd, wd, hd, start,end); - if (m_window && m_window->GetBackingPixmap()) - XDrawArc ((Display*) m_display, (Pixmap) m_window->GetBackingPixmap(), (GC) m_gcBacking, - XLOG2DEV_2 (x), YLOG2DEV_2 (y),wd,hd,start,end); - } - CalcBoundingBox (x, y); - CalcBoundingBox (x + width, y + height); -}; - -void wxWindowDC::DrawPoint( long x, long y ) -{ - if (!Ok()) return; - - // FreeGetPixelCache(); - - if (m_pen.Ok() && m_autoSetting) - SetPen (m_pen); - - XDrawPoint ((Display*) m_display, (Pixmap) m_pixmap, (GC) m_gc, XLOG2DEV (x), YLOG2DEV (y)); - if (m_window && m_window->GetBackingPixmap()) - XDrawPoint ((Display*) m_display, (Pixmap) m_window->GetBackingPixmap(),(GC) m_gcBacking, XLOG2DEV_2 (x), YLOG2DEV_2 (y)); - - CalcBoundingBox (x, y); -}; - -void wxWindowDC::DrawLines( int n, wxPoint points[], long xoffset, long yoffset ) -{ - if (!Ok()) return; - - // FreeGetPixelCache(); - - if (m_pen.Ok() && m_pen.GetStyle () != wxTRANSPARENT) - { - if (m_autoSetting) - SetPen (m_pen); - - XPoint *xpoints = new XPoint[n]; - int i; - - for (i = 0; i < n; i++) - { - xpoints[i].x = XLOG2DEV (points[i].x + xoffset); - xpoints[i].y = YLOG2DEV (points[i].y + yoffset); - } - XDrawLines ((Display*) m_display, (Pixmap) m_pixmap, (GC) m_gc, xpoints, n, 0); - - if (m_window && m_window->GetBackingPixmap()) - { - for (i = 0; i < n; i++) - { - xpoints[i].x = XLOG2DEV_2 (points[i].x + xoffset); - xpoints[i].y = YLOG2DEV_2 (points[i].y + yoffset); - } - XDrawLines ((Display*) m_display, (Pixmap) m_window->GetBackingPixmap(),(GC) m_gcBacking, xpoints, n, 0); - } - delete[]xpoints; - } -}; - -void wxWindowDC::DrawLines( wxList *list, long xoffset, long yoffset ) -{ - if (!Ok()) return; - - if (m_pen.GetStyle() == wxTRANSPARENT) return; - - int n = list->Number(); - wxPoint *points = new wxPoint[n]; - - int i = 0; - for(wxNode *node = list->First(); node; node = node->Next()) { - wxPoint *point = (wxPoint *)node->Data(); - points[i].x = point->x; - points[i++].y = point->y; - } - DrawLines(n, points, xoffset, yoffset); - delete []points; -}; - -void wxWindowDC::DrawPolygon( int n, wxPoint points[], - long xoffset, long yoffset, int fillStyle ) -{ - // FreeGetPixelCache(); - - XPoint *xpoints1 = new XPoint[n + 1]; - XPoint *xpoints2 = new XPoint[n + 1]; - int i; - for (i = 0; i < n; i++) - { - xpoints1[i].x = XLOG2DEV (points[i].x + xoffset); - xpoints1[i].y = YLOG2DEV (points[i].y + yoffset); - xpoints2[i].x = XLOG2DEV_2 (points[i].x + xoffset); - xpoints2[i].y = YLOG2DEV_2 (points[i].y + yoffset); - CalcBoundingBox (points[i].x + xoffset, points[i].y + yoffset); - } - - // Close figure for XDrawLines (not needed for XFillPolygon) - xpoints1[i].x = xpoints1[0].x; - xpoints1[i].y = xpoints1[0].y; - xpoints2[i].x = xpoints2[0].x; - xpoints2[i].y = xpoints2[0].y; - - if (m_brush.Ok() && m_brush.GetStyle () != wxTRANSPARENT) - { - SetBrush (m_brush); - XSetFillRule ((Display*) m_display, (GC) m_gc, fillStyle == wxODDEVEN_RULE ? EvenOddRule : WindingRule); - XFillPolygon ((Display*) m_display, (Pixmap) m_pixmap, (GC) m_gc, xpoints1, n, Complex, 0); - XSetFillRule ((Display*) m_display, (GC) m_gc, EvenOddRule); // default mode - if (m_window && m_window->GetBackingPixmap()) - { - XSetFillRule ((Display*) m_display,(GC) m_gcBacking, - fillStyle == wxODDEVEN_RULE ? EvenOddRule : WindingRule); - XFillPolygon ((Display*) m_display, (Pixmap) m_window->GetBackingPixmap(),(GC) m_gcBacking, xpoints2, n, Complex, 0); - XSetFillRule ((Display*) m_display,(GC) m_gcBacking, EvenOddRule); // default mode - } - } - - if (m_pen.Ok() && m_pen.GetStyle () != wxTRANSPARENT) - { - if (m_autoSetting) - SetPen (m_pen); - XDrawLines ((Display*) m_display, (Pixmap) m_pixmap, (GC) m_gc, xpoints1, n + 1, 0); - - if (m_window && m_window->GetBackingPixmap()) - XDrawLines ((Display*) m_display, (Pixmap) m_window->GetBackingPixmap(),(GC) m_gcBacking, xpoints2, n + 1, 0); - } - - delete[]xpoints1; - delete[]xpoints2; -}; - -void wxWindowDC::DrawPolygon( wxList *list, long xoffset, - long yoffset, int fillStyle ) -{ - if (!Ok()) return; - - int n = list->Number(); - wxPoint *points = new wxPoint[n]; - - int i = 0; - for(wxNode *node = list->First(); node; node = node->Next()) { - wxPoint *point = (wxPoint *)node->Data(); - points[i].x = point->x; - points[i++].y = point->y; - } - DrawPolygon(n, points, xoffset, yoffset,fillStyle); - delete[] points; -}; - -void wxWindowDC::DrawRectangle( long x, long y, long width, long height ) -{ - if (!Ok()) return; - - // FreeGetPixelCache(); - - int xd, yd, wfd, hfd, wd, hd; - - xd = XLOG2DEV(x); - yd = YLOG2DEV(y); - wfd = XLOG2DEVREL(width); - wd = wfd - WX_GC_CF; - hfd = YLOG2DEVREL(height); - hd = hfd - WX_GC_CF; - - if (wfd == 0 || hfd == 0) return; - if (wd < 0) { wd = - wd; xd = xd - wd; } - if (hd < 0) { hd = - hd; yd = yd - hd; } - - if (m_brush.Ok() && m_brush.GetStyle () != wxTRANSPARENT) - { - SetBrush (m_brush); - XFillRectangle ((Display*) m_display, (Pixmap) m_pixmap, (GC) m_gc, xd, yd, wfd, hfd); - - if (m_window && m_window->GetBackingPixmap()) - XFillRectangle ((Display*) m_display, (Pixmap) m_window->GetBackingPixmap(),(GC) m_gcBacking, - XLOG2DEV_2 (x), YLOG2DEV_2 (y), - wfd, hfd); - } - - if (m_pen.Ok() && m_pen.GetStyle () != wxTRANSPARENT) - { - if (m_autoSetting) - SetPen (m_pen); - XDrawRectangle ((Display*) m_display, (Pixmap) m_pixmap, (GC) m_gc, xd, yd, wd, hd); - - if (m_window && m_window->GetBackingPixmap()) - XDrawRectangle ((Display*) m_display, (Pixmap) m_window->GetBackingPixmap(),(GC) m_gcBacking, - XLOG2DEV_2 (x), YLOG2DEV_2 (y), - wd, hd); - } - CalcBoundingBox (x, y); - CalcBoundingBox (x + width, y + height); -}; - -void wxWindowDC::DrawRoundedRectangle( long x, long y, long width, long height, double radius ) -{ - if (!Ok()) return; - - // FreeGetPixelCache(); - - // If radius is negative, it's a proportion of the smaller dimension. - - if (radius < 0.0) radius = - radius * ((width < height) ? width : height); - - int xd = XLOG2DEV (x); - int yd = YLOG2DEV (y); - int rd = XLOG2DEVREL ((long) radius); - int wd = XLOG2DEVREL (width) - WX_GC_CF; - int hd = YLOG2DEVREL (height) - WX_GC_CF; - - int rw_d = rd * 2; - int rh_d = rw_d; - - // If radius is zero use DrawRectangle() instead to avoid - // X drawing errors with small radii - if (rd == 0) - { - DrawRectangle( x, y, width, height ); - return; - } - - // Draw nothing if transformed w or h is 0 - if (wd == 0 || hd == 0) return; - - // CMB: adjust size if outline is drawn otherwise the result is - // 1 pixel too wide and high - if (m_pen.GetStyle() != wxTRANSPARENT) - { - wd--; - hd--; - } - - // CMB: ensure dd is not larger than rectangle otherwise we - // get an hour glass shape - if (rw_d > wd) rw_d = wd; - if (rw_d > hd) rw_d = hd; - rd = rw_d / 2; - - // For backing pixmap - int xd2 = XLOG2DEV_2 (x); - int yd2 = YLOG2DEV_2 (y); - int rd2 = XLOG2DEVREL ((long) radius); - int wd2 = XLOG2DEVREL (width) ; - int hd2 = YLOG2DEVREL (height) ; - - int rw_d2 = rd2 * 2; - int rh_d2 = rw_d2; - - if (m_brush.Ok() && m_brush.GetStyle () != wxTRANSPARENT) - { - SetBrush (m_brush); - - XFillRectangle ((Display*) m_display, (Pixmap) m_pixmap, (GC) m_gc, xd + rd, yd, - wd - rw_d, hd); - XFillRectangle ((Display*) m_display, (Pixmap) m_pixmap, (GC) m_gc, xd, yd + rd, - wd, hd - rh_d); - - // Arcs start from 3 o'clock, positive angles anticlockwise - // Top-left - XFillArc ((Display*) m_display, (Pixmap) m_pixmap, (GC) m_gc, xd, yd, - rw_d, rh_d, 90 * 64, 90 * 64); - // Top-right - XFillArc ((Display*) m_display, (Pixmap) m_pixmap, (GC) m_gc, xd + wd - rw_d, yd, - // rw_d, rh_d, 0, 90 * 64); - rw_d, rh_d, 0, 91 * 64); - // Bottom-right - XFillArc ((Display*) m_display, (Pixmap) m_pixmap, (GC) m_gc, xd + wd - rw_d, - yd + hd - rh_d, - // rw_d, rh_d, 270 * 64, 90 * 64); - rw_d, rh_d, 269 * 64, 92 * 64); - // Bottom-left - XFillArc ((Display*) m_display, (Pixmap) m_pixmap, (GC) m_gc, xd, yd + hd - rh_d, - rw_d, rh_d, 180 * 64, 90 * 64); - - if (m_window && m_window->GetBackingPixmap()) - { - XFillRectangle ((Display*) m_display, (Pixmap) m_window->GetBackingPixmap(),(GC) m_gcBacking, - xd2 + rd2, yd2, wd2 - rw_d2, hd2); - XFillRectangle ((Display*) m_display, (Pixmap) m_window->GetBackingPixmap(),(GC) m_gcBacking, - xd2, yd2 + rd2, wd2, hd2 - rh_d2); - - XFillArc ((Display*) m_display, (Pixmap) m_window->GetBackingPixmap(),(GC) m_gcBacking, - xd2, yd2, rw_d2, rh_d2, 90 * 64, 90 * 64); - XFillArc ((Display*) m_display, (Pixmap) m_window->GetBackingPixmap(),(GC) m_gcBacking, - xd2 + wd2 - rw_d2, yd2, - // rw_d2, rh_d2, 0, 90 * 64); - rw_d2, rh_d2, 0, 91 * 64); - XFillArc ((Display*) m_display, (Pixmap) m_window->GetBackingPixmap(),(GC) m_gcBacking, - xd2 + wd2 - rw_d2, - yd2 + hd2 - rh_d2, - // rw_d2, rh_d2, 270 * 64, 90 * 64); - rw_d2, rh_d2, 269 * 64, 92 * 64); - XFillArc ((Display*) m_display, (Pixmap) m_window->GetBackingPixmap(),(GC) m_gcBacking, - xd2, yd2 + hd2 - rh_d2, - rw_d2, rh_d2, 180 * 64, 90 * 64); - } - } - - if (m_pen.Ok() && m_pen.GetStyle () != wxTRANSPARENT) - { - SetPen (m_pen); - XDrawLine ((Display*) m_display, (Pixmap) m_pixmap, (GC) m_gc, xd + rd, yd, - xd + wd - rd + 1, yd); - XDrawLine ((Display*) m_display, (Pixmap) m_pixmap, (GC) m_gc, xd + rd, yd + hd, - xd + wd - rd, yd + hd); - - XDrawLine ((Display*) m_display, (Pixmap) m_pixmap, (GC) m_gc, xd, yd + rd, - xd, yd + hd - rd); - XDrawLine ((Display*) m_display, (Pixmap) m_pixmap, (GC) m_gc, xd + wd, yd + rd, - xd + wd, yd + hd - rd + 1); - XDrawArc ((Display*) m_display, (Pixmap) m_pixmap, (GC) m_gc, xd, yd, - rw_d, rh_d, 90 * 64, 90 * 64); - XDrawArc ((Display*) m_display, (Pixmap) m_pixmap, (GC) m_gc, xd + wd - rw_d, yd, - // rw_d, rh_d, 0, 90 * 64); - rw_d, rh_d, 0, 91 * 64); - XDrawArc ((Display*) m_display, (Pixmap) m_pixmap, (GC) m_gc, xd + wd - rw_d, - yd + hd - rh_d, - rw_d, rh_d, 269 * 64, 92 * 64); - XDrawArc ((Display*) m_display, (Pixmap) m_pixmap, (GC) m_gc, xd, yd + hd - rh_d, - rw_d, rh_d, 180 * 64, 90 * 64); - - if (m_window && m_window->GetBackingPixmap()) - { - XDrawLine ((Display*) m_display, (Pixmap) m_window->GetBackingPixmap(),(GC) m_gcBacking, - xd2 + rd2, yd2, - xd2 + wd2 - rd2 + 1, yd2); - XDrawLine ((Display*) m_display, (Pixmap) m_window->GetBackingPixmap(),(GC) m_gcBacking, - xd2 + rd2, yd2 + hd2, - xd2 + wd2 - rd2, yd2 + hd2); - - XDrawLine ((Display*) m_display, (Pixmap) m_window->GetBackingPixmap(),(GC) m_gcBacking, - xd2, yd2 + rd2, - xd2, yd2 + hd2 - rd2); - XDrawLine ((Display*) m_display, (Pixmap) m_window->GetBackingPixmap(),(GC) m_gcBacking, - xd2 + wd2, yd2 + rd2, - xd2 + wd2, yd2 + hd2 - rd2 + 1); - XDrawArc ((Display*) m_display, (Pixmap) m_window->GetBackingPixmap(),(GC) m_gcBacking, - xd2, yd2, - rw_d2, rh_d2, 90 * 64, 90 * 64); - XDrawArc ((Display*) m_display, (Pixmap) m_window->GetBackingPixmap(),(GC) m_gcBacking, - xd2 + wd2 - rw_d2, yd2, - // rw_d2, rh_d2, 0, 90 * 64); - rw_d2, rh_d2, 0, 91 * 64); - XDrawArc ((Display*) m_display, (Pixmap) m_window->GetBackingPixmap(),(GC) m_gcBacking, - xd2 + wd2 - rw_d2, - yd2 + hd2 - rh_d2, - rw_d2, rh_d2, 269 * 64, 92 * 64); - XDrawArc ((Display*) m_display, (Pixmap) m_window->GetBackingPixmap(),(GC) m_gcBacking, - xd2, yd2 + hd2 - rh_d2, - rw_d2, rh_d2, 180 * 64, 90 * 64); - } - } - CalcBoundingBox (x, y); - CalcBoundingBox (x + width, y + height); - - -}; - -void wxWindowDC::DrawEllipse( long x, long y, long width, long height ) -{ - if (!Ok()) return; - - // Check for negative width and height - if (height < 0) - { - y = y + height; - height = - height ; - } - - if (width < 0) - { - x = x + width; - width = - width ; - } - - // FreeGetPixelCache(); - - static const int angle = 23040; - - int xd, yd, wd, hd; - - xd = XLOG2DEV(x); - yd = YLOG2DEV(y); - wd = XLOG2DEVREL(width) ; - hd = YLOG2DEVREL(height) ; - - if (m_brush.Ok() && m_brush.GetStyle () != wxTRANSPARENT) - { - SetBrush (m_brush); - XFillArc ((Display*) m_display, (Pixmap) m_pixmap, (GC) m_gc, xd, yd, wd, hd, 0, angle); - if (m_window && m_window->GetBackingPixmap()) - XFillArc ((Display*) m_display, (Pixmap) m_window->GetBackingPixmap(),(GC) m_gcBacking, - XLOG2DEV_2 (x), YLOG2DEV_2 (y), - XLOG2DEVREL (width) - WX_GC_CF, - YLOG2DEVREL (height) - WX_GC_CF, 0, angle); - } - - if (m_pen.Ok() && m_pen.GetStyle () != wxTRANSPARENT) - { - if (m_autoSetting) - SetPen (m_pen); - XDrawArc ((Display*) m_display, (Pixmap) m_pixmap, (GC) m_gc, xd, yd, wd, hd, 0, angle); - if (m_window && m_window->GetBackingPixmap()) - XDrawArc ((Display*) m_display, (Pixmap) m_window->GetBackingPixmap(),(GC) m_gcBacking, - XLOG2DEV_2 (x), YLOG2DEV_2 (y), - XLOG2DEVREL (width) - WX_GC_CF, - YLOG2DEVREL (height) - WX_GC_CF, 0, angle); - } - CalcBoundingBox (x, y); - CalcBoundingBox (x + width, y + height); - -}; - -bool wxWindowDC::CanDrawBitmap(void) const -{ - return TRUE; -}; - -/* Used when copying between drawables on different (Display*) m_displays. -Not very fast, but better than giving up. -*/ - -static void XCopyRemote(Display *src_display, Display *dest_display, - Drawable src, Drawable dest, - GC destgc, - int srcx, int srcy, - unsigned int w, unsigned int h, - int destx, int desty, - bool more, XImage **cache) -{ - XImage *image, *destimage; - Colormap destcm, srccm; -#define CACHE_SIZE 256 - unsigned int i, j; - unsigned long cachesrc[CACHE_SIZE], cachedest[CACHE_SIZE]; - int k, cache_pos, all_cache; - - if (!cache || !*cache) - image = XGetImage(src_display, src, srcx, srcy, w, h, AllPlanes, ZPixmap); - else - image = *cache; - - destimage = XGetImage(dest_display, dest, destx, desty, w, h, AllPlanes, ZPixmap); - - srccm = (Colormap) wxTheApp->GetMainColormap((WXDisplay*) src_display); - destcm = (Colormap) wxTheApp->GetMainColormap((WXDisplay*) dest_display); - - cache_pos = 0; - all_cache = FALSE; - - for (i = 0; i < w; i++) - for (j = 0; j < h; j++) { - unsigned long pixel; - XColor xcol; - - pixel = XGetPixel(image, i, j); - for (k = cache_pos; k--; ) - if (cachesrc[k] == pixel) { - pixel = cachedest[k]; - goto install; - } - if (all_cache) - for (k = CACHE_SIZE; k-- > cache_pos; ) - if (cachesrc[k] == pixel) { - pixel = cachedest[k]; - goto install; - } - - cachesrc[cache_pos] = xcol.pixel = pixel; - XQueryColor(src_display, srccm, &xcol); - if (!XAllocColor(dest_display, destcm, &xcol)) - xcol.pixel = 0; - cachedest[cache_pos] = pixel = xcol.pixel; - - if (++cache_pos >= CACHE_SIZE) { - cache_pos = 0; - all_cache = TRUE; - } - -install: - XPutPixel(destimage, i, j, pixel); - } - - XPutImage(dest_display, dest, destgc, destimage, 0, 0, destx, desty, w, h); - XDestroyImage(destimage); - - if (more) - *cache = image; - else - XDestroyImage(image); -} - -void wxWindowDC::DrawIcon( const wxIcon &icon, long x, long y) -{ - if (!Ok()) return; - - if (!icon.Ok()) return; - - DrawBitmap(icon, x, y, TRUE); - -#if 0 - // FreeGetPixelCache(); - - // Be sure that foreground pixels (1) of - // the Icon will be painted with pen colour. [m_pen.SetColour()] - // Background pixels (0) will be painted with - // last selected background color. [::SetBackground] - if (m_pen.Ok() && m_autoSetting) - SetPen (m_pen); - - int width, height; - Pixmap iconPixmap = (Pixmap) icon.GetPixmap(); - width = icon.GetWidth(); - height = icon.GetHeight(); - if (icon.GetDisplay() == m_display) - { - if (icon.GetDepth() <= 1) - { - XCopyPlane ((Display*) m_display, iconPixmap, (Pixmap) m_pixmap, (GC) m_gc, - 0, 0, width, height, - (int) XLOG2DEV (x), (int) YLOG2DEV (y), 1); - } - else - { - XCopyArea ((Display*) m_display, iconPixmap, (Pixmap) m_pixmap, (GC) m_gc, - 0, 0, width, height, - (int) XLOG2DEV (x), (int) YLOG2DEV (y)); - } - - - if (m_window && m_window->GetBackingPixmap()) - { - if (icon.GetDepth() <= 1) - { - XCopyPlane ((Display*) m_display, iconPixmap, (Pixmap) m_window->GetBackingPixmap(),(GC) m_gcBacking, - 0, 0, width, height, (int) XLOG2DEV_2 (x), (int) YLOG2DEV_2 (y), 1); - } - else - { - XCopyArea ((Display*) m_display, iconPixmap, (Pixmap) m_window->GetBackingPixmap(),(GC) m_gcBacking, - 0, 0, width, height, - (int) XLOG2DEV_2 (x), (int) YLOG2DEV_2 (y)); - } - } - } else { /* Remote copy (different (Display*) m_displays) */ - XImage *cache = NULL; - if (m_window && m_window->GetBackingPixmap()) - XCopyRemote((Display*) icon.GetDisplay(), (Display*) m_display, iconPixmap, (Pixmap) m_window->GetBackingPixmap(), - (GC) m_gcBacking, 0, 0, width, height, - (int) XLOG2DEV_2 (x), (int) YLOG2DEV_2 (y), TRUE, &cache); - XCopyRemote((Display*) icon.GetDisplay(), (Display*) m_display, iconPixmap, (Pixmap) m_pixmap, (GC) m_gc, - 0, 0, width, height, - (int) XLOG2DEV (x), (int) YLOG2DEV (y), FALSE, &cache); - } - CalcBoundingBox (x, y); -#endif -}; - -bool wxWindowDC::Blit( long xdest, long ydest, long width, long height, - wxDC *source, long xsrc, long ysrc, int rop, bool useMask ) -{ - if (!Ok()) return FALSE; - - wxASSERT_MSG( (source->IsKindOf(CLASSINFO(wxWindowDC))), "Blit source DC must be wxWindowDC or derived class." ); - - wxWindowDC* sourceDC = (wxWindowDC*) source; - - // FreeGetPixelCache(); - - // Be sure that foreground pixels (1) of - // the Icon will be painted with pen colour. [m_pen.SetColour()] - // Background pixels (0) will be painted with - // last selected background color. [::SetBackground] - if (m_pen.Ok() && m_autoSetting) - SetPen (m_pen); - - if (m_pixmap && sourceDC->m_pixmap) - { - /* MATTHEW: [9] */ - int orig = m_logicalFunction; - - SetLogicalFunction (rop); - - if (m_display != sourceDC->m_display) - { - XImage *cache = NULL; - - if (m_window && m_window->GetBackingPixmap()) - XCopyRemote((Display*) sourceDC->m_display, (Display*) m_display, - (Pixmap) sourceDC->m_pixmap, (Pixmap) m_window->GetBackingPixmap(), - (GC) m_gcBacking, - source->LogicalToDeviceX (xsrc), - source->LogicalToDeviceY (ysrc), - source->LogicalToDeviceXRel(width), - source->LogicalToDeviceYRel(height), - XLOG2DEV_2 (xdest), YLOG2DEV_2 (ydest), - TRUE, &cache); - - if ( useMask && source->IsKindOf(CLASSINFO(wxMemoryDC)) ) - { - wxMemoryDC *memDC = (wxMemoryDC *)source; - wxBitmap& sel = memDC->GetBitmap(); - if ( sel.Ok() && sel.GetMask() && sel.GetMask()->GetPixmap() ) - { - XSetClipMask ((Display*) m_display, (GC) m_gc, (Pixmap) sel.GetMask()->GetPixmap()); - XSetClipOrigin ((Display*) m_display, (GC) m_gc, XLOG2DEV (xdest), YLOG2DEV (ydest)); - } - } - - XCopyRemote((Display*) sourceDC->m_display, (Display*) m_display, (Pixmap) sourceDC->m_pixmap, (Pixmap) m_pixmap, (GC) m_gc, - source->LogicalToDeviceX (xsrc), - source->LogicalToDeviceY (ysrc), - source->LogicalToDeviceXRel(width), - source->LogicalToDeviceYRel(height), - XLOG2DEV (xdest), YLOG2DEV (ydest), - FALSE, &cache); - - if ( useMask ) - { - XSetClipMask ((Display*) m_display, (GC) m_gc, None); - XSetClipOrigin ((Display*) m_display, (GC) m_gc, 0, 0); - } - - } else - { - if (m_window && m_window->GetBackingPixmap()) - { - // +++ MARKUS (mho@comnets.rwth-aachen): error on blitting bitmaps with depth 1 - if (source->IsKindOf(CLASSINFO(wxMemoryDC)) && ((wxMemoryDC*) source)->GetBitmap().GetDepth() == 1) - { - XCopyPlane ((Display*) m_display, (Pixmap) sourceDC->m_pixmap, (Pixmap) m_window->GetBackingPixmap(),(GC) m_gcBacking, - source->LogicalToDeviceX (xsrc), - source->LogicalToDeviceY (ysrc), - source->LogicalToDeviceXRel(width), - source->LogicalToDeviceYRel(height), - XLOG2DEV_2 (xdest), YLOG2DEV_2 (ydest), 1); - } - else - { - XCopyArea ((Display*) m_display, (Pixmap) sourceDC->m_pixmap, (Pixmap) m_window->GetBackingPixmap(),(GC) m_gcBacking, - source->LogicalToDeviceX (xsrc), - source->LogicalToDeviceY (ysrc), - source->LogicalToDeviceXRel(width), - source->LogicalToDeviceYRel(height), - XLOG2DEV_2 (xdest), YLOG2DEV_2 (ydest)); - } - } - if ( useMask && source->IsKindOf(CLASSINFO(wxMemoryDC)) ) - { - wxMemoryDC *memDC = (wxMemoryDC *)source; - wxBitmap& sel = memDC->GetBitmap(); - if ( sel.Ok() && sel.GetMask() && sel.GetMask()->GetPixmap() ) - { - XSetClipMask ((Display*) m_display, (GC) m_gc, (Pixmap) sel.GetMask()->GetPixmap()); - XSetClipOrigin ((Display*) m_display, (GC) m_gc, XLOG2DEV (xdest), YLOG2DEV (ydest)); - } - } - - // Check if we're copying from a mono bitmap - if (source->IsKindOf(CLASSINFO(wxMemoryDC)) && - ((wxMemoryDC*)source)->GetBitmap().Ok() && (((wxMemoryDC*)source)->GetBitmap().GetDepth () == 1)) - { - XCopyPlane ((Display*) m_display, (Pixmap) sourceDC->m_pixmap, (Pixmap) m_pixmap, (GC) m_gc, - source->LogicalToDeviceX (xsrc), - source->LogicalToDeviceY (ysrc), - source->LogicalToDeviceXRel(width), - source->LogicalToDeviceYRel(height), - XLOG2DEV (xdest), YLOG2DEV (ydest), 1); - } - else - { - XCopyArea ((Display*) m_display, (Pixmap) sourceDC->m_pixmap, (Pixmap) m_pixmap, (GC) m_gc, - source->LogicalToDeviceX (xsrc), - source->LogicalToDeviceY (ysrc), - source->LogicalToDeviceXRel(width), - source->LogicalToDeviceYRel(height), - XLOG2DEV (xdest), YLOG2DEV (ydest)); - - } - if ( useMask ) - { - XSetClipMask ((Display*) m_display, (GC) m_gc, None); - XSetClipOrigin ((Display*) m_display, (GC) m_gc, 0, 0); - } - - } /* Remote/local (Display*) m_display */ - CalcBoundingBox (xdest, ydest); - CalcBoundingBox (xdest + width, ydest + height); - - SetLogicalFunction(orig); - - return TRUE; - } - return FALSE; -}; - -/* Helper function for 16-bit fonts */ -static int str16len(const char *s) -{ - int count = 0; - - while (s[0] && s[1]) { - count++; - s += 2; - } - - return count; -} - -void wxWindowDC::DrawText( const wxString &text, long x, long y, bool use16 ) -{ - if (!Ok()) return; - - // Since X draws from the baseline of the text, must - // add the text height - int cx = 0; - int cy = 0; - int ascent = 0; - int slen; - - if (use16) - slen = str16len(text); - else - slen = strlen(text); - - if (m_font.Ok()) - { - WXFontStructPtr pFontStruct = m_font.GetFontStruct(m_userScaleY*m_logicalScaleY, m_display); - int direction, descent; - XCharStruct overall_return; - if (use16) - (void)XTextExtents16((XFontStruct*) pFontStruct, (XChar2b *)(const char*) text, slen, &direction, - &ascent, &descent, &overall_return); - else - (void)XTextExtents((XFontStruct*) pFontStruct, (char*) (const char*) text, slen, &direction, - &ascent, &descent, &overall_return); - cx = overall_return.width; - cy = ascent + descent; - } - - // First draw a rectangle representing the text background, - // if a text background is specified - if (m_textBackgroundColour.Ok () && (m_backgroundMode != wxTRANSPARENT)) - { - wxColour oldPenColour = m_currentColour; - m_currentColour = m_textBackgroundColour; - bool sameColour = (oldPenColour.Ok () && m_textBackgroundColour.Ok () && - (oldPenColour.Red () == m_textBackgroundColour.Red ()) && - (oldPenColour.Blue () == m_textBackgroundColour.Blue ()) && - (oldPenColour.Green () == m_textBackgroundColour.Green ())); - - // This separation of the big && test required for gcc2.7/HP UX 9.02 - // or pixel value can be corrupted! - sameColour = (sameColour && - (oldPenColour.GetPixel() == m_textBackgroundColour.GetPixel())); - - if (!sameColour || !GetOptimization()) - { - int pixel = m_textBackgroundColour.AllocColour(m_display); - m_currentColour = m_textBackgroundColour; - - // Set the GC to the required colour - if (pixel > -1) - { - XSetForeground ((Display*) m_display, (GC) m_gc, pixel); - if (m_window && m_window->GetBackingPixmap()) - XSetForeground ((Display*) m_display,(GC) m_gcBacking, pixel); - } - } - else - m_textBackgroundColour = oldPenColour ; - - XFillRectangle ((Display*) m_display, (Pixmap) m_pixmap, (GC) m_gc, XLOG2DEV (x), YLOG2DEV (y), cx, cy); - if (m_window && m_window->GetBackingPixmap()) - XFillRectangle ((Display*) m_display, (Pixmap) m_window->GetBackingPixmap(),(GC) m_gcBacking, - XLOG2DEV_2 (x), YLOG2DEV_2 (y), cx, cy); - } - - // Now set the text foreground and draw the text - if (m_textForegroundColour.Ok ()) - { - wxColour oldPenColour = m_currentColour; - m_currentColour = m_textForegroundColour; - bool sameColour = (oldPenColour.Ok () && m_currentColour.Ok () && - (oldPenColour.Red () == m_currentColour.Red ()) && - (oldPenColour.Blue () == m_currentColour.Blue ()) && - (oldPenColour.Green () == m_currentColour.Green ()) && - (oldPenColour.GetPixel() == m_currentColour.GetPixel())); - - if (!sameColour || !GetOptimization()) - { - int pixel = -1; - if (!m_colour) // Mono display - { - // Unless foreground is really white, draw it in black - unsigned char red = m_textForegroundColour.Red (); - unsigned char blue = m_textForegroundColour.Blue (); - unsigned char green = m_textForegroundColour.Green (); - if (red == (unsigned char) 255 && blue == (unsigned char) 255 - && green == (unsigned char) 255) - { - m_currentColour = *wxWHITE; - pixel = (int) WhitePixel ((Display*) m_display, DefaultScreen ((Display*) m_display)); - m_currentColour.SetPixel(pixel); - m_textForegroundColour.SetPixel(pixel); - } - else - { - m_currentColour = *wxBLACK; - pixel = (int) BlackPixel ((Display*) m_display, DefaultScreen ((Display*) m_display)); - m_currentColour.SetPixel(pixel); - m_textForegroundColour.SetPixel(pixel); - } - } - else - { - pixel = m_textForegroundColour.AllocColour((Display*) m_display); - m_currentColour.SetPixel(pixel); - } - - // Set the GC to the required colour - if (pixel > -1) - { - XSetForeground ((Display*) m_display, (GC) m_gc, pixel); - if (m_window && m_window->GetBackingPixmap()) - XSetForeground ((Display*) m_display,(GC) m_gcBacking, pixel); - } - } - else - m_textForegroundColour = oldPenColour; - } - - // We need to add the ascent, not the whole height, since X draws - // at the point above the descender. - if (use16) - XDrawString16((Display*) m_display, (Pixmap) m_pixmap, (GC) m_gc, XLOG2DEV (x), YLOG2DEV (y) + ascent, - (XChar2b *)(char*) (const char*) text, slen); - else - XDrawString((Display*) m_display, (Pixmap) m_pixmap, (GC) m_gc, XLOG2DEV (x), YLOG2DEV (y) + ascent, - text, slen); - - if (m_window && m_window->GetBackingPixmap()) { - if (use16) - XDrawString16((Display*) m_display, (Pixmap) m_window->GetBackingPixmap(), (GC) m_gcBacking, - XLOG2DEV_2 (x), YLOG2DEV_2 (y) + ascent, - (XChar2b *)(char*) (const char*) text, slen); - else - XDrawString((Display*) m_display, (Pixmap) m_window->GetBackingPixmap(), (GC) m_gcBacking, - XLOG2DEV_2 (x), YLOG2DEV_2 (y) + ascent, (char*) (const char*) text, slen); - } - - long w, h; - GetTextExtent (text, &w, &h); - CalcBoundingBox (x + w, y + h); - CalcBoundingBox (x, y); -}; - -bool wxWindowDC::CanGetTextExtent(void) const -{ - return TRUE; -}; - -void wxWindowDC::GetTextExtent( const wxString &string, long *width, long *height, - long *descent, long *externalLeading, - wxFont *font, bool use16 ) -{ - if (!Ok()) return; - - wxFont* theFont = font; - if (!theFont) - theFont = & m_font; - - if (!theFont->Ok()) - { - // TODO: this should be an error log function - wxFAIL_MSG("set a valid font before calling GetTextExtent!"); - - *width = -1; - *height = -1; - return; - } - - WXFontStructPtr pFontStruct = theFont->GetFontStruct(m_userScaleY*m_logicalScaleY, m_display); - - int direction, ascent, descent2; - XCharStruct overall; - int slen; - - if (use16) slen = str16len(string); else slen = strlen(string); - - if (use16) - XTextExtents16((XFontStruct*) pFontStruct, (XChar2b *) (char*) (const char*) string, slen, &direction, - &ascent, &descent2, &overall); - else - XTextExtents((XFontStruct*) pFontStruct, (char*) (const char*) string, slen, &direction, - &ascent, &descent2, &overall); - - *width = XDEV2LOGREL (overall.width); - *height = YDEV2LOGREL (ascent + descent2); - if (descent) - *descent = descent2; - if (externalLeading) - *externalLeading = 0; -}; - -long wxWindowDC::GetCharWidth(void) -{ - if (!Ok()) return 0; - - if (!m_font.Ok()) - return 0; - - WXFontStructPtr pFontStruct = m_font.GetFontStruct(m_userScaleY * m_logicalScaleY, m_display); - - int direction, ascent, descent; - XCharStruct overall; - XTextExtents ((XFontStruct*) pFontStruct, "x", 1, &direction, &ascent, - &descent, &overall); - return XDEV2LOGREL(overall.width); -}; - -long wxWindowDC::GetCharHeight(void) -{ - if (!Ok()) return 0; - - if (!m_font.Ok()) - return 0; - - WXFontStructPtr pFontStruct = m_font.GetFontStruct(m_userScaleY*m_logicalScaleY, m_display); - - int direction, ascent, descent; - XCharStruct overall; - XTextExtents ((XFontStruct*) pFontStruct, "x", 1, &direction, &ascent, - &descent, &overall); - // return XDEV2LOGREL(overall.ascent + overall.descent); - return XDEV2LOGREL(ascent + descent); -}; - -void wxWindowDC::Clear(void) -{ - if (!Ok()) return; - - int w, h; - if (m_window) - { - m_window->GetSize(&w, &h); - - if (m_window && m_window->GetBackingPixmap()) - { - w = m_window->GetPixmapWidth(); - h = m_window->GetPixmapHeight(); - } - } - else - { - if (this->IsKindOf(CLASSINFO(wxMemoryDC))) - { - wxMemoryDC* memDC = (wxMemoryDC*) this; - w = memDC->GetBitmap().GetWidth(); - h = memDC->GetBitmap().GetHeight(); - } - else - return; - } - - wxBrush saveBrush = m_brush; - SetBrush (m_backgroundBrush); - - XFillRectangle ((Display*) m_display, (Pixmap) m_pixmap, (GC) m_gc, 0, 0, w, h); - - if (m_window && m_window->GetBackingPixmap()) - XFillRectangle ((Display*) m_display, (Pixmap) m_window->GetBackingPixmap(),(GC) m_gcBacking, 0, 0, w, h); - - m_brush = saveBrush; -}; - -void wxWindowDC::Clear(const wxRect& rect) -{ - if (!Ok()) return; - - int x = rect.x; int y = rect.y; - int w = rect.width; int h = rect.height; - - wxBrush saveBrush = m_brush; - SetBrush (m_backgroundBrush); - - XFillRectangle ((Display*) m_display, (Pixmap) m_pixmap, (GC) m_gc, x, y, w, h); - - if (m_window && m_window->GetBackingPixmap()) - XFillRectangle ((Display*) m_display, (Pixmap) m_window->GetBackingPixmap(),(GC) m_gcBacking, x, y, w, h); - - m_brush = saveBrush; -}; - -void wxWindowDC::SetFont( const wxFont &font ) -{ - if (!Ok()) return; - - m_font = font; - - if (!m_font.Ok()) - { - if ((m_oldFont != (WXFont) 0) && ((long) m_oldFont != -1)) - { - XSetFont ((Display*) m_display, (GC) m_gc, (Font) m_oldFont); - - if (m_window && m_window->GetBackingPixmap()) - XSetFont ((Display*) m_display,(GC) m_gcBacking, (Font) m_oldFont); - } - return; - } - - WXFontStructPtr pFontStruct = m_font.GetFontStruct(m_userScaleY*m_logicalScaleY, m_display); - - Font fontId = ((XFontStruct*)pFontStruct)->fid; - XSetFont ((Display*) m_display, (GC) m_gc, fontId); - - if (m_window && m_window->GetBackingPixmap()) - XSetFont ((Display*) m_display,(GC) m_gcBacking, fontId); -}; - -void wxWindowDC::SetPen( const wxPen &pen ) -{ - if (!Ok()) return; - - m_pen = pen; - if (!m_pen.Ok()) - return; - - wxBitmap oldStipple = m_currentStipple; - int oldStyle = m_currentStyle; - int oldFill = m_currentFill; - int old_pen_width = m_currentPenWidth; - int old_pen_join = m_currentPenJoin; - int old_pen_cap = m_currentPenCap; - int old_pen_nb_dash = m_currentPenDashCount; - char *old_pen_dash = m_currentPenDash; - - wxColour oldPenColour = m_currentColour; - m_currentColour = m_pen.GetColour (); - m_currentStyle = m_pen.GetStyle (); - m_currentFill = m_pen.GetStyle (); // TODO? - m_currentPenWidth = m_pen.GetWidth (); - m_currentPenJoin = m_pen.GetJoin (); - m_currentPenCap = m_pen.GetCap (); - m_currentPenDashCount = m_pen.GetDashCount(); - m_currentPenDash = m_pen.GetDash(); - - if (m_currentStyle == wxSTIPPLE) - m_currentStipple = * m_pen.GetStipple (); - - bool sameStyle = (oldStyle == m_currentStyle && - oldFill == m_currentFill && - old_pen_join == m_currentPenJoin && - old_pen_cap == m_currentPenCap && - old_pen_nb_dash == m_currentPenDashCount && - old_pen_dash == m_currentPenDash && - old_pen_width == m_currentPenWidth); - - bool sameColour = (oldPenColour.Ok () && - (oldPenColour.Red () == m_currentColour.Red ()) && - (oldPenColour.Blue () == m_currentColour.Blue ()) && - (oldPenColour.Green () == m_currentColour.Green ()) && - (oldPenColour.GetPixel() == m_currentColour.GetPixel())); - - if (!sameStyle || !GetOptimization()) - { - int scaled_width = (int) XLOG2DEVREL (m_pen.GetWidth ()); - if (scaled_width < 0) - scaled_width = 0; - - int style; - int join; - int cap; - static char dotted[] = - {2, 5}; - static char short_dashed[] = - {4, 4}; - static char long_dashed[] = - {4, 8}; - static char dotted_dashed[] = - {6, 6, 2, 6}; - - // We express dash pattern in pen width unit, so we are - // independent of zoom factor and so on... - int req_nb_dash; - char *req_dash; - - switch (m_pen.GetStyle ()) - { - case wxUSER_DASH: - req_nb_dash = m_currentPenDashCount; - req_dash = m_currentPenDash; - style = LineOnOffDash; - break; - case wxDOT: - req_nb_dash = 2; - req_dash = dotted; - style = LineOnOffDash; - break; - case wxSHORT_DASH: - req_nb_dash = 2; - req_dash = short_dashed; - style = LineOnOffDash; - break; - case wxLONG_DASH: - req_nb_dash = 2; - req_dash = long_dashed; - style = LineOnOffDash; - break; - case wxDOT_DASH: - req_nb_dash = 4; - req_dash = dotted_dashed; - style = LineOnOffDash; - break; - case wxSTIPPLE: - case wxSOLID: - case wxTRANSPARENT: - default: - style = LineSolid; - req_dash = NULL; - req_nb_dash = 0; - } - - if (req_dash && req_nb_dash) - { - char *real_req_dash = new char[req_nb_dash]; - if (real_req_dash) - { - int factor = scaled_width == 0 ? 1 : scaled_width; - for (int i = 0; i < req_nb_dash; i++) - real_req_dash[i] = req_dash[i] * factor; - XSetDashes ((Display*) m_display, (GC) m_gc, 0, real_req_dash, req_nb_dash); - - if (m_window && m_window->GetBackingPixmap()) - XSetDashes ((Display*) m_display,(GC) m_gcBacking, 0, real_req_dash, req_nb_dash); - delete[]real_req_dash; - } - else - { - // No Memory. We use non-scaled dash pattern... - XSetDashes ((Display*) m_display, (GC) m_gc, 0, req_dash, req_nb_dash); - - if (m_window && m_window->GetBackingPixmap()) - XSetDashes ((Display*) m_display,(GC) m_gcBacking, 0, req_dash, req_nb_dash); - } - } - - switch (m_pen.GetCap ()) - { - case wxCAP_PROJECTING: - cap = CapProjecting; - break; - case wxCAP_BUTT: - cap = CapButt; - break; - case wxCAP_ROUND: - default: - cap = (scaled_width <= 1) ? CapNotLast : CapRound; - break; - } - - switch (m_pen.GetJoin ()) - { - case wxJOIN_BEVEL: - join = JoinBevel; - break; - case wxJOIN_MITER: - join = JoinMiter; - break; - case wxJOIN_ROUND: - default: - join = JoinRound; - break; - } - - XSetLineAttributes ((Display*) m_display, (GC) m_gc, scaled_width, style, cap, join); - - if (m_window && m_window->GetBackingPixmap()) - XSetLineAttributes ((Display*) m_display,(GC) m_gcBacking, scaled_width, style, cap, join); - } - - if (IS_HATCH(m_currentFill) && ((m_currentFill != oldFill) || !GetOptimization())) - { - Pixmap myStipple; - - oldStipple = wxNullBitmap; // For later reset!! - - switch (m_currentFill) - { - case wxBDIAGONAL_HATCH: - if (bdiag == (Pixmap) 0) - bdiag = XCreateBitmapFromData ((Display*) m_display, - RootWindow ((Display*) m_display, DefaultScreen ((Display*) m_display)), - bdiag_bits, bdiag_width, bdiag_height); - myStipple = bdiag; - break; - case wxFDIAGONAL_HATCH: - if (fdiag == (Pixmap) 0) - fdiag = XCreateBitmapFromData ((Display*) m_display, - RootWindow ((Display*) m_display, DefaultScreen ((Display*) m_display)), - fdiag_bits, fdiag_width, fdiag_height); - myStipple = fdiag; - break; - case wxCROSS_HATCH: - if (cross == (Pixmap) 0) - cross = XCreateBitmapFromData ((Display*) m_display, - RootWindow ((Display*) m_display, DefaultScreen ((Display*) m_display)), - cross_bits, cross_width, cross_height); - myStipple = cross; - break; - case wxHORIZONTAL_HATCH: - if (horiz == (Pixmap) 0) - horiz = XCreateBitmapFromData ((Display*) m_display, - RootWindow ((Display*) m_display, DefaultScreen ((Display*) m_display)), - horiz_bits, horiz_width, horiz_height); - myStipple = horiz; - break; - case wxVERTICAL_HATCH: - if (verti == (Pixmap) 0) - verti = XCreateBitmapFromData ((Display*) m_display, - RootWindow ((Display*) m_display, DefaultScreen ((Display*) m_display)), - verti_bits, verti_width, verti_height); - myStipple = verti; - break; - case wxCROSSDIAG_HATCH: - default: - if (cdiag == (Pixmap) 0) - cdiag = XCreateBitmapFromData ((Display*) m_display, - RootWindow ((Display*) m_display, DefaultScreen ((Display*) m_display)), - cdiag_bits, cdiag_width, cdiag_height); - myStipple = cdiag; - break; - } - XSetStipple ((Display*) m_display, (GC) m_gc, myStipple); - - if (m_window && m_window->GetBackingPixmap()) - XSetStipple ((Display*) m_display,(GC) m_gcBacking, myStipple); - } - else if (m_currentStipple.Ok() - && ((m_currentStipple != oldStipple) || !GetOptimization())) - { - XSetStipple ((Display*) m_display, (GC) m_gc, (Pixmap) m_currentStipple.GetPixmap()); - - if (m_window && m_window->GetBackingPixmap()) - XSetStipple ((Display*) m_display,(GC) m_gcBacking, (Pixmap) m_currentStipple.GetPixmap()); - } - - if ((m_currentFill != oldFill) || !GetOptimization()) - { - int fill_style; - - if (m_currentFill == wxSTIPPLE) - fill_style = FillStippled; - else if (IS_HATCH (m_currentFill)) - fill_style = FillStippled; - else - fill_style = FillSolid; - XSetFillStyle ((Display*) m_display, (GC) m_gc, fill_style); - if (m_window && m_window->GetBackingPixmap()) - XSetFillStyle ((Display*) m_display,(GC) m_gcBacking, fill_style); - } - - // must test m_logicalFunction, because it involves background! - if (!sameColour || !GetOptimization() - || ((m_logicalFunction == wxXOR) || (m_autoSetting & 0x2))) - { - int pixel = -1; - if (m_pen.GetStyle () == wxTRANSPARENT) - pixel = m_backgroundPixel; - else if (!m_colour) - { - unsigned char red = m_pen.GetColour ().Red (); - unsigned char blue = m_pen.GetColour ().Blue (); - unsigned char green = m_pen.GetColour ().Green (); - if (red == (unsigned char) 255 && blue == (unsigned char) 255 - && green == (unsigned char) 255) - { - pixel = (int) WhitePixel ((Display*) m_display, DefaultScreen ((Display*) m_display)); - m_currentColour = *wxWHITE; - m_pen.GetColour().SetPixel(pixel); - m_currentColour.SetPixel(pixel); - } - else - { - pixel = (int) BlackPixel ((Display*) m_display, DefaultScreen ((Display*) m_display)); - m_currentColour = *wxBLACK; - m_pen.GetColour().SetPixel(pixel); - } - } - else - { - pixel = m_pen.GetColour ().AllocColour(m_display); - m_currentColour.SetPixel(pixel); - } - - // Finally, set the GC to the required colour - if (pixel > -1) - { - if (m_logicalFunction == wxXOR) - { - XGCValues values; - XGetGCValues ((Display*) m_display, (GC) m_gc, GCBackground, &values); - XSetForeground ((Display*) m_display, (GC) m_gc, pixel ^ values.background); - if (m_window && m_window->GetBackingPixmap()) - XSetForeground ((Display*) m_display,(GC) m_gcBacking, pixel ^ values.background); - } - else - { - XSetForeground ((Display*) m_display, (GC) m_gc, pixel); - if (m_window && m_window->GetBackingPixmap()) - XSetForeground ((Display*) m_display,(GC) m_gcBacking, pixel); - } - } - } - else - m_pen.GetColour().SetPixel(oldPenColour.GetPixel()); - - m_autoSetting = 0; -}; - -void wxWindowDC::SetBrush( const wxBrush &brush ) -{ - if (!Ok()) return; - - m_brush = brush; - - if (!m_brush.Ok() || m_brush.GetStyle () == wxTRANSPARENT) - return; - - int oldFill = m_currentFill; - wxBitmap oldStipple = m_currentStipple; - - m_autoSetting |= 0x1; - - m_currentFill = m_brush.GetStyle (); - if (m_currentFill == wxSTIPPLE) - m_currentStipple = * m_brush.GetStipple (); - - wxColour oldBrushColour(m_currentColour); - m_currentColour = m_brush.GetColour (); - - bool sameColour = (oldBrushColour.Ok () && - (oldBrushColour.Red () == m_currentColour.Red ()) && - (oldBrushColour.Blue () == m_currentColour.Blue ()) && - (oldBrushColour.Green () == m_currentColour.Green ()) && - (oldBrushColour.GetPixel() == m_currentColour.GetPixel())); - - if ((oldFill != m_brush.GetStyle ()) || !GetOptimization()) - { - switch (brush.GetStyle ()) - { - case wxTRANSPARENT: - break; - case wxBDIAGONAL_HATCH: - case wxCROSSDIAG_HATCH: - case wxFDIAGONAL_HATCH: - case wxCROSS_HATCH: - case wxHORIZONTAL_HATCH: - case wxVERTICAL_HATCH: - case wxSTIPPLE: - { - // Chris Breeze 23/07/97: use background mode to determine whether - // fill style should be solid or transparent - int style = (m_backgroundMode == wxSOLID ? FillOpaqueStippled : FillStippled); - XSetFillStyle ((Display*) m_display, (GC) m_gc, style); - if (m_window && m_window->GetBackingPixmap()) - XSetFillStyle ((Display*) m_display,(GC) m_gcBacking, style); - } - break; - case wxSOLID: - default: - XSetFillStyle ((Display*) m_display, (GC) m_gc, FillSolid); - if (m_window && m_window->GetBackingPixmap()) - XSetFillStyle ((Display*) m_display,(GC) m_gcBacking, FillSolid); - } - } - - if (IS_HATCH(m_currentFill) && ((m_currentFill != oldFill) || !GetOptimization())) - { - Pixmap myStipple; - - switch (m_currentFill) - { - case wxBDIAGONAL_HATCH: - if (bdiag == (Pixmap) 0) - bdiag = XCreateBitmapFromData ((Display*) m_display, - RootWindow ((Display*) m_display, DefaultScreen ((Display*) m_display)), - bdiag_bits, bdiag_width, bdiag_height); - myStipple = bdiag; - break; - case wxFDIAGONAL_HATCH: - if (fdiag == (Pixmap) 0) - fdiag = XCreateBitmapFromData ((Display*) m_display, - RootWindow ((Display*) m_display, DefaultScreen ((Display*) m_display)), - fdiag_bits, fdiag_width, fdiag_height); - myStipple = fdiag; - break; - case wxCROSS_HATCH: - if (cross == (Pixmap) 0) - cross = XCreateBitmapFromData ((Display*) m_display, - RootWindow ((Display*) m_display, DefaultScreen ((Display*) m_display)), - cross_bits, cross_width, cross_height); - myStipple = cross; - break; - case wxHORIZONTAL_HATCH: - if (horiz == (Pixmap) 0) - horiz = XCreateBitmapFromData ((Display*) m_display, - RootWindow ((Display*) m_display, DefaultScreen ((Display*) m_display)), - horiz_bits, horiz_width, horiz_height); - myStipple = horiz; - break; - case wxVERTICAL_HATCH: - if (verti == (Pixmap) 0) - verti = XCreateBitmapFromData ((Display*) m_display, - RootWindow ((Display*) m_display, DefaultScreen ((Display*) m_display)), - verti_bits, verti_width, verti_height); - myStipple = verti; - break; - case wxCROSSDIAG_HATCH: - default: - if (cdiag == (Pixmap) 0) - cdiag = XCreateBitmapFromData ((Display*) m_display, - RootWindow ((Display*) m_display, DefaultScreen ((Display*) m_display)), - cdiag_bits, cdiag_width, cdiag_height); - myStipple = cdiag; - break; - } - XSetStipple ((Display*) m_display, (GC) m_gc, myStipple); - - if (m_window && m_window->GetBackingPixmap()) - XSetStipple ((Display*) m_display,(GC) m_gcBacking, myStipple); - } - // X can forget the stipple value when resizing a window (apparently) - // so always set the stipple. - else if (m_currentStipple.Ok()) // && m_currentStipple != oldStipple) - { - XSetStipple ((Display*) m_display, (GC) m_gc, (Pixmap) m_currentStipple.GetPixmap()); - if (m_window && m_window->GetBackingPixmap()) - XSetStipple ((Display*) m_display,(GC) m_gcBacking, (Pixmap) m_currentStipple.GetPixmap()); - } - - // must test m_logicalFunction, because it involves background! - if (!sameColour || !GetOptimization() || m_logicalFunction == wxXOR) - { - int pixel = -1; - if (!m_colour) - { - // Policy - on a monochrome screen, all brushes are white, - // except when they're REALLY black!!! - unsigned char red = m_brush.GetColour ().Red (); - unsigned char blue = m_brush.GetColour ().Blue (); - unsigned char green = m_brush.GetColour ().Green (); - - if (red == (unsigned char) 0 && blue == (unsigned char) 0 - && green == (unsigned char) 0) - { - pixel = (int) BlackPixel ((Display*) m_display, DefaultScreen ((Display*) m_display)); - m_currentColour = *wxBLACK; - m_brush.GetColour().SetPixel(pixel); - m_currentColour.SetPixel(pixel); - } - else - { - pixel = (int) WhitePixel ((Display*) m_display, DefaultScreen ((Display*) m_display)); - m_currentColour = *wxWHITE; - m_brush.GetColour().SetPixel(pixel); - m_currentColour.SetPixel(pixel); - } - - // N.B. comment out the above line and uncomment the following lines - // if you want non-white colours to be black on a monochrome display. - /* - if (red == (unsigned char )255 && blue == (unsigned char)255 - && green == (unsigned char)255) - pixel = (int)WhitePixel((Display*) m_display, DefaultScreen((Display*) m_display)); - else - pixel = (int)BlackPixel((Display*) m_display, DefaultScreen((Display*) m_display)); - */ - } - else if (m_brush.GetStyle () != wxTRANSPARENT) - { - pixel = m_brush.GetColour().AllocColour(m_display); - m_currentColour.SetPixel(pixel); - } - if (pixel > -1) - { - // Finally, set the GC to the required colour - if (m_logicalFunction == wxXOR) - { - XGCValues values; - XGetGCValues ((Display*) m_display, (GC) m_gc, GCBackground, &values); - XSetForeground ((Display*) m_display, (GC) m_gc, pixel ^ values.background); - if (m_window && m_window->GetBackingPixmap()) - XSetForeground ((Display*) m_display,(GC) m_gcBacking, pixel ^ values.background); - } - else - { - XSetForeground ((Display*) m_display, (GC) m_gc, pixel); - if (m_window && m_window->GetBackingPixmap()) - XSetForeground ((Display*) m_display,(GC) m_gcBacking, pixel); - } - } - } - else - m_brush.GetColour().SetPixel(oldBrushColour.GetPixel()); -}; - -void wxWindowDC::SetBackground( const wxBrush &brush ) -{ - if (!Ok()) return; - - m_backgroundBrush = brush; - - if (!m_backgroundBrush.Ok()) - return; - - int pixel = m_backgroundBrush.GetColour().AllocColour(m_display); - - // XSetWindowBackground doesn't work for non-Window pixmaps - if (!this->IsKindOf(CLASSINFO(wxMemoryDC))) - XSetWindowBackground ((Display*) m_display, (Pixmap) m_pixmap, pixel); - - // Necessary for ::DrawIcon, which use fg/bg pixel or the GC. - // And Blit,... (Any fct that use XCopyPlane, in fact.) - XSetBackground ((Display*) m_display, (GC) m_gc, pixel); - if (m_window && m_window->GetBackingPixmap()) - XSetBackground ((Display*) m_display,(GC) m_gcBacking, pixel); -}; - -void wxWindowDC::SetLogicalFunction( int function ) -{ - int x_function; - - /* MATTHEW: [9] */ - if (m_logicalFunction == function) - return; - - switch (function) - { - case wxCLEAR: - x_function = GXclear; - break; - case wxXOR: - x_function = GXxor; - break; - case wxINVERT: - x_function = GXinvert; - break; - case wxOR_REVERSE: - x_function = GXorReverse; - break; - case wxAND_REVERSE: - x_function = GXandReverse; - break; - case wxAND: - x_function = GXand; - break; - case wxOR: - x_function = GXor; - break; - case wxAND_INVERT: - x_function = GXandInverted; - break; - case wxNO_OP: - x_function = GXnoop; - break; - case wxNOR: - x_function = GXnor; - break; - case wxEQUIV: - x_function = GXequiv; - break; - case wxSRC_INVERT: - x_function = GXcopyInverted; - break; - case wxOR_INVERT: - x_function = GXorInverted; - break; - case wxNAND: - x_function = GXnand; - break; - case wxSET: - x_function = GXset; - break; - case wxCOPY: - default: - x_function = GXcopy; - break; - } - - XSetFunction((Display*) m_display, (GC) m_gc, x_function); - if (m_window && m_window->GetBackingPixmap()) - XSetFunction((Display*) m_display, (GC) m_gcBacking, x_function); - - if ((m_logicalFunction == wxXOR) != (function == wxXOR)) - /* MATTHEW: [9] Need to redo pen simply */ - m_autoSetting |= 0x2; - - m_logicalFunction = function; - -}; - -void wxWindowDC::SetTextForeground( const wxColour &col ) -{ - if (!Ok()) return; - - if (m_textForegroundColour == col) return; - - m_textForegroundColour = col; - -}; - -void wxWindowDC::SetTextBackground( const wxColour &col ) -{ - if (!Ok()) return; - - if (m_textBackgroundColour == col) return; - - m_textBackgroundColour = col; - if (!m_textBackgroundColour.Ok()) return; -}; - -void wxWindowDC::SetBackgroundMode( int mode ) -{ - m_backgroundMode = mode; - -}; - -void wxWindowDC::SetPalette( const wxPalette& palette ) -{ - if (m_window) - { - if (palette.Ok()) - /* Use GetXColormap */ - XSetWindowColormap ((Display*) m_display, (Window) m_window->GetXWindow(), - (Colormap) palette.GetXColormap()); - else - /* Use wxGetMainColormap */ - XSetWindowColormap ((Display*) m_display, (Window) m_window->GetXWindow(), - (Colormap) wxTheApp->GetMainColormap(m_display)); - } -}; - -// Helper function -void wxWindowDC:: SetDCClipping () -{ - // m_userRegion is the region set by calling SetClippingRegion - - if (m_currentRegion) - XDestroyRegion ((Region) m_currentRegion); - - // We need to take into account - // clipping imposed on a window by a repaint. - // We'll combine it with the user region. But for now, - // just use the currently-defined user clipping region. - if (m_userRegion || (m_window && m_window->GetUpdateRegion().Ok()) ) - m_currentRegion = (WXRegion) XCreateRegion (); - else - m_currentRegion = (WXRegion) NULL; - - if ((m_window && m_window->GetUpdateRegion().Ok()) && m_userRegion) - XIntersectRegion ((Region) m_window->GetUpdateRegion().GetXRegion(), (Region) m_userRegion, (Region) m_currentRegion); - else if (m_userRegion) - XIntersectRegion ((Region) m_userRegion, (Region) m_userRegion, (Region) m_currentRegion); - else if (m_window && m_window->GetUpdateRegion().Ok()) - XIntersectRegion ((Region) m_window->GetUpdateRegion().GetXRegion(), (Region) m_window->GetUpdateRegion().GetXRegion(), - (Region) m_currentRegion); - - if (m_currentRegion) - { - XSetRegion ((Display*) m_display, (GC) m_gc, (Region) m_currentRegion); - } - else - { - XSetClipMask ((Display*) m_display, (GC) m_gc, None); - } - -} - -void wxWindowDC::SetClippingRegion( long x, long y, long width, long height ) -{ - wxDC::SetClippingRegion( x, y, width, height ); - - if (m_userRegion) - XDestroyRegion ((Region) m_userRegion); - m_userRegion = (WXRegion) XCreateRegion (); - XRectangle r; - r.x = XLOG2DEV (x); - r.y = YLOG2DEV (y); - r.width = XLOG2DEVREL(width); - r.height = YLOG2DEVREL(height); - XUnionRectWithRegion (&r, (Region) m_userRegion, (Region) m_userRegion); - - SetDCClipping (); - - // Needs to work differently for Pixmap: without this, - // there's a nasty (Display*) m_display bug. 8/12/94 - if (m_window && m_window->GetBackingPixmap()) - { - XRectangle rects[1]; - rects[0].x = XLOG2DEV_2(x); - rects[0].y = YLOG2DEV_2(y); - rects[0].width = XLOG2DEVREL(width); - rects[0].height = YLOG2DEVREL(height); - XSetClipRectangles((Display*) m_display, (GC) m_gcBacking, 0, 0, rects, 1, Unsorted); - } -}; - -void wxWindowDC::SetClippingRegion( const wxRegion& region ) -{ - wxRect box = region.GetBox(); - - wxDC::SetClippingRegion( box.x, box.y, box.width, box.height ); - - if (m_userRegion) - XDestroyRegion ((Region) m_userRegion); - m_userRegion = (WXRegion) XCreateRegion (); - - XUnionRegion((Region) m_userRegion, (Region) region.GetXRegion(), (Region) m_userRegion); - - SetDCClipping (); - - // Needs to work differently for Pixmap: without this, - // there's a nasty (Display*) m_display bug. 8/12/94 - if (m_window && m_window->GetBackingPixmap()) - { - XRectangle rects[1]; - rects[0].x = XLOG2DEV_2(box.x); - rects[0].y = YLOG2DEV_2(box.y); - rects[0].width = XLOG2DEVREL(box.width); - rects[0].height = YLOG2DEVREL(box.height); - XSetClipRectangles((Display*) m_display, (GC) m_gcBacking, 0, 0, rects, 1, Unsorted); - } -}; - - -void wxWindowDC::DestroyClippingRegion(void) -{ - wxDC::DestroyClippingRegion(); - - if (m_userRegion) - XDestroyRegion ((Region) m_userRegion); - m_userRegion = NULL; - - SetDCClipping (); - - XGCValues gc_val; - gc_val.clip_mask = None; - if (m_window && m_window->GetBackingPixmap()) - XChangeGC((Display*) m_display, (GC) m_gcBacking, GCClipMask, &gc_val); -}; - -// ----------------------------------- spline code ---------------------------------------- - -void wx_quadratic_spline(double a1, double b1, double a2, double b2, - double a3, double b3, double a4, double b4); -void wx_clear_stack(void); -int wx_spline_pop(double *x1, double *y1, double *x2, double *y2, double *x3, - double *y3, double *x4, double *y4); -void wx_spline_push(double x1, double y1, double x2, double y2, double x3, double y3, - double x4, double y4); -static bool wx_spline_add_point(double x, double y); -static void wx_spline_draw_point_array(wxDC *dc); - -wxList wx_spline_point_list; - -#define half(z1, z2) ((z1+z2)/2.0) -#define THRESHOLD 5 - -/* iterative version */ - -void wx_quadratic_spline(double a1, double b1, double a2, double b2, double a3, double b3, double a4, - double b4) -{ - register double xmid, ymid; - double x1, y1, x2, y2, x3, y3, x4, y4; - - wx_clear_stack(); - wx_spline_push(a1, b1, a2, b2, a3, b3, a4, b4); - - while (wx_spline_pop(&x1, &y1, &x2, &y2, &x3, &y3, &x4, &y4)) { - xmid = (double)half(x2, x3); - ymid = (double)half(y2, y3); - if (fabs(x1 - xmid) < THRESHOLD && fabs(y1 - ymid) < THRESHOLD && - fabs(xmid - x4) < THRESHOLD && fabs(ymid - y4) < THRESHOLD) { - wx_spline_add_point( x1, y1 ); - wx_spline_add_point( xmid, ymid ); - } else { - wx_spline_push(xmid, ymid, (double)half(xmid, x3), (double)half(ymid, y3), - (double)half(x3, x4), (double)half(y3, y4), x4, y4); - wx_spline_push(x1, y1, (double)half(x1, x2), (double)half(y1, y2), - (double)half(x2, xmid), (double)half(y2, ymid), xmid, ymid); - } - } -} - -/* utilities used by spline drawing routines */ - -typedef struct wx_spline_stack_struct { - double x1, y1, x2, y2, x3, y3, x4, y4; -} Stack; - -#define SPLINE_STACK_DEPTH 20 -static Stack wx_spline_stack[SPLINE_STACK_DEPTH]; -static Stack *wx_stack_top; -static int wx_stack_count; - -void wx_clear_stack(void) -{ - wx_stack_top = wx_spline_stack; - wx_stack_count = 0; -} - -void wx_spline_push(double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4) -{ - wx_stack_top->x1 = x1; - wx_stack_top->y1 = y1; - wx_stack_top->x2 = x2; - wx_stack_top->y2 = y2; - wx_stack_top->x3 = x3; - wx_stack_top->y3 = y3; - wx_stack_top->x4 = x4; - wx_stack_top->y4 = y4; - wx_stack_top++; - wx_stack_count++; -} - -int wx_spline_pop(double *x1, double *y1, double *x2, double *y2, - double *x3, double *y3, double *x4, double *y4) -{ - if (wx_stack_count == 0) - return (0); - wx_stack_top--; - wx_stack_count--; - *x1 = wx_stack_top->x1; - *y1 = wx_stack_top->y1; - *x2 = wx_stack_top->x2; - *y2 = wx_stack_top->y2; - *x3 = wx_stack_top->x3; - *y3 = wx_stack_top->y3; - *x4 = wx_stack_top->x4; - *y4 = wx_stack_top->y4; - return (1); -} - -static bool wx_spline_add_point(double x, double y) -{ - wxPoint *point = new wxPoint ; - point->x = (int) x; - point->y = (int) y; - wx_spline_point_list.Append((wxObject*)point); - return TRUE; -} - -static void wx_spline_draw_point_array(wxDC *dc) -{ - dc->DrawLines(&wx_spline_point_list, 0, 0 ); - wxNode *node = wx_spline_point_list.First(); - while (node) - { - wxPoint *point = (wxPoint *)node->Data(); - delete point; - delete node; - node = wx_spline_point_list.First(); - } -} - -void wxWindowDC::DrawSpline( wxList *points ) -{ - wxPoint *p; - double cx1, cy1, cx2, cy2, cx3, cy3, cx4, cy4; - double x1, y1, x2, y2; - - wxNode *node = points->First(); - p = (wxPoint *)node->Data(); - - x1 = p->x; - y1 = p->y; - - node = node->Next(); - p = (wxPoint *)node->Data(); - - x2 = p->x; - y2 = p->y; - cx1 = (double)((x1 + x2) / 2); - cy1 = (double)((y1 + y2) / 2); - cx2 = (double)((cx1 + x2) / 2); - cy2 = (double)((cy1 + y2) / 2); - - wx_spline_add_point(x1, y1); - - while ((node = node->Next()) != NULL) - { - p = (wxPoint *)node->Data(); - x1 = x2; - y1 = y2; - x2 = p->x; - y2 = p->y; - cx4 = (double)(x1 + x2) / 2; - cy4 = (double)(y1 + y2) / 2; - cx3 = (double)(x1 + cx4) / 2; - cy3 = (double)(y1 + cy4) / 2; - - wx_quadratic_spline(cx1, cy1, cx2, cy2, cx3, cy3, cx4, cy4); - - cx1 = cx4; - cy1 = cy4; - cx2 = (double)(cx1 + x2) / 2; - cy2 = (double)(cy1 + y2) / 2; - } - - wx_spline_add_point( cx1, cy1 ); - wx_spline_add_point( x2, y2 ); - - wx_spline_draw_point_array( this ); -}; - -/* -* wxPaintDC -*/ - -wxPaintDC::wxPaintDC(wxWindow* win): wxWindowDC(win) -{ - wxRegion* region = NULL; - - // Combine all the update rects into a region - if (win->m_updateRects.Number() > 0) - { - int i = 0; - for (i = 0; i < win->m_updateRects.Number(); i++) - { - wxRect* rect = (wxRect*) win->m_updateRects.Nth(i)->Data(); - /* - cout << "wxPaintDC. wxRect: " << rect->x << ", " << rect->y << ", "; - cout << rect->width << ", " << rect->height << "\n\n"; - */ - - if (!region) - region = new wxRegion(*rect); - else - // TODO: is this correct? In SetDCClipping above, - // XIntersectRegion is used to combine paint and user - // regions. XIntersectRegion appears to work in that case... - region->Union(*rect); - } - } - else - { - int cw, ch; - win->GetClientSize(&cw, &ch); - region = new wxRegion(wxRect(0, 0, cw, ch)); - } - - win->m_updateRegion = *region; - - // Set the clipping region. Any user-defined region will be combined with this - // one in SetDCClipping. - XSetRegion ((Display*) m_display, (GC) m_gc, (Region) region->GetXRegion()); - - delete region; -} - -wxPaintDC::~wxPaintDC() -{ - XSetClipMask ((Display*) m_display, (GC) m_gc, None); - if (m_window) - m_window->m_updateRegion.Clear(); -} - diff --git a/src/motif/dcmemory.cpp b/src/motif/dcmemory.cpp deleted file mode 100644 index 85291b7c62..0000000000 --- a/src/motif/dcmemory.cpp +++ /dev/null @@ -1,148 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcmemory.cpp -// Purpose: wxMemoryDC class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dcmemory.h" -#endif - -#include "wx/dcmemory.h" -#include "wx/utils.h" - -#include - -#include "wx/motif/private.h" - -//----------------------------------------------------------------------------- -// wxMemoryDC -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxMemoryDC, wxWindowDC) - -wxMemoryDC::wxMemoryDC(void) -{ - m_ok = TRUE; - m_display = wxGetDisplay(); - - Display* display = (Display*) m_display; - - XGCValues gcvalues; - gcvalues.foreground = BlackPixel (display, DefaultScreen (display)); - gcvalues.background = WhitePixel (display, DefaultScreen (display)); - gcvalues.graphics_exposures = False; - gcvalues.line_width = 1; - m_gc = (WXGC) XCreateGC (display, RootWindow (display, DefaultScreen (display)), - GCForeground | GCBackground | GCGraphicsExposures | GCLineWidth, - &gcvalues); - - m_backgroundPixel = (int) gcvalues.background; - - // Get the current Font so we can set it back later - XGCValues valReturn; - XGetGCValues((Display*) m_display, (GC) m_gc, GCFont, &valReturn); - m_oldFont = (WXFont) valReturn.font; - SetBrush (* wxWHITE_BRUSH); - SetPen (* wxBLACK_PEN); -}; - -wxMemoryDC::wxMemoryDC( wxDC* dc ) -{ - m_ok = TRUE; - if (dc && dc->IsKindOf(CLASSINFO(wxWindowDC))) - m_display = ((wxWindowDC*)dc)->GetDisplay(); - else - m_display = wxGetDisplay(); - - Display* display = (Display*) m_display; - - XGCValues gcvalues; - gcvalues.foreground = BlackPixel (display, DefaultScreen (display)); - gcvalues.background = WhitePixel (display, DefaultScreen (display)); - gcvalues.graphics_exposures = False; - gcvalues.line_width = 1; - m_gc = (WXGC) XCreateGC (display, RootWindow (display, DefaultScreen (display)), - GCForeground | GCBackground | GCGraphicsExposures | GCLineWidth, - &gcvalues); - - m_backgroundPixel = (int) gcvalues.background; - - // Get the current Font so we can set it back later - XGCValues valReturn; - XGetGCValues((Display*) m_display, (GC) m_gc, GCFont, &valReturn); - m_oldFont = (WXFont) valReturn.font; - SetBrush (* wxWHITE_BRUSH); - SetPen (* wxBLACK_PEN); -}; - -wxMemoryDC::~wxMemoryDC(void) -{ -}; - -void wxMemoryDC::SelectObject( const wxBitmap& bitmap ) -{ - m_bitmap = bitmap; - - if (m_gc) - XFreeGC((Display*) m_display, (GC) m_gc); - m_gc = (WXGC) NULL; - - if (m_bitmap.Ok() && (bitmap.GetDisplay() == m_display)) - { - m_pixmap = m_bitmap.GetPixmap(); - Display* display = (Display*) m_display; - - XGCValues gcvalues; - gcvalues.foreground = BlackPixel (display, DefaultScreen (display)); - gcvalues.background = WhitePixel (display, DefaultScreen (display)); - gcvalues.graphics_exposures = False; - gcvalues.line_width = 1; - m_gc = (WXGC) XCreateGC (display, RootWindow (display, DefaultScreen (display)), - GCForeground | GCBackground | GCGraphicsExposures | GCLineWidth, - &gcvalues); - - m_backgroundPixel = (int) gcvalues.background; - - // Get the current Font so we can set it back later - XGCValues valReturn; - XGetGCValues((Display*) m_display, (GC) m_gc, GCFont, &valReturn); - m_oldFont = (WXFont) valReturn.font; - - bool oldOpt = GetOptimization(); - SetOptimization(FALSE); - - SetBrush (* wxWHITE_BRUSH); - SetPen (* wxBLACK_PEN); - - SetOptimization(oldOpt); - - m_ok = TRUE; - } - else - { - m_ok = FALSE; - m_pixmap = (WXPixmap) 0; - }; -}; - -void wxMemoryDC::GetSize( int *width, int *height ) const -{ - if (m_bitmap.Ok()) - { - if (width) (*width) = m_bitmap.GetWidth(); - if (height) (*height) = m_bitmap.GetHeight(); - } - else - { - if (width) (*width) = 0; - if (height) (*height) = 0; - }; -}; - - diff --git a/src/motif/dcscreen.cpp b/src/motif/dcscreen.cpp deleted file mode 100644 index 04c409033f..0000000000 --- a/src/motif/dcscreen.cpp +++ /dev/null @@ -1,127 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcscreen.cpp -// Purpose: wxScreenDC class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dcscreen.h" -#endif - -#include "wx/dcscreen.h" -#include "wx/utils.h" - -#include - -#include - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxScreenDC, wxWindowDC) -#endif - -WXWindow wxScreenDC::sm_overlayWindow = 0; -int wxScreenDC::sm_overlayWindowX = 0; -int wxScreenDC::sm_overlayWindowY = 0; - -// Create a DC representing the whole screen -wxScreenDC::wxScreenDC() -{ - m_display = wxGetDisplay(); - Display* display = (Display*) m_display; - - if (sm_overlayWindow) - { - m_pixmap = sm_overlayWindow; - m_deviceOriginX = - sm_overlayWindowX; - m_deviceOriginY = - sm_overlayWindowY; - } - else - m_pixmap = (WXPixmap) RootWindow(display, DefaultScreen(display)); - - XGCValues gcvalues; - gcvalues.foreground = BlackPixel (display, DefaultScreen (display)); - gcvalues.background = WhitePixel (display, DefaultScreen (display)); - gcvalues.graphics_exposures = False; - gcvalues.subwindow_mode = IncludeInferiors; - gcvalues.line_width = 1; - m_gc = XCreateGC (display, RootWindow (display, DefaultScreen (display)), - GCForeground | GCBackground | GCGraphicsExposures | GCLineWidth | GCSubwindowMode, - &gcvalues); - - m_backgroundPixel = (int) gcvalues.background; - m_ok = TRUE; -} - -wxScreenDC::~wxScreenDC() -{ -} - -bool wxScreenDC::StartDrawingOnTop(wxWindow* window) -{ - wxRect rect; - int x, y, width, height; - window->GetPosition(& x, & y); - if (window->GetParent()) - window->GetParent()->ClientToScreen(& x, & y); - window->GetSize(& width, & height); - rect.x = x; rect.y = y; - rect.width = width; rect.height = height; - - return StartDrawingOnTop(& rect); -} - -bool wxScreenDC::StartDrawingOnTop(wxRect* rect) -{ - if (sm_overlayWindow) - return FALSE; - - Display *dpy = (Display*) wxGetDisplay(); - Pixmap screenPixmap = RootWindow(dpy, DefaultScreen(dpy)); - - int x = 0; - int y = 0; - int width, height; - wxDisplaySize(&width, &height); - - if (rect) - { - x = rect->x; y = rect->y; - width = rect->width; height = rect->height; - } - sm_overlayWindowX = x; - sm_overlayWindowY = y; - - XSetWindowAttributes attributes; - attributes.override_redirect = True; - unsigned long valueMask = CWOverrideRedirect; - - sm_overlayWindow = (WXWindow) XCreateWindow(dpy, screenPixmap, x, y, width, height, 0, - wxDisplayDepth(), InputOutput, - DefaultVisual(dpy, 0), valueMask, - & attributes); - - if (sm_overlayWindow) - { - XMapWindow(dpy, (Window) sm_overlayWindow); - return TRUE; - } - else - return FALSE; -} - -bool wxScreenDC::EndDrawingOnTop() -{ - if (sm_overlayWindow) - { - XDestroyWindow((Display*) wxGetDisplay(), (Window) sm_overlayWindow); - sm_overlayWindow = 0; - return TRUE; - } - else - return FALSE; -} diff --git a/src/motif/dialog.cpp b/src/motif/dialog.cpp deleted file mode 100644 index 16fc52abd5..0000000000 --- a/src/motif/dialog.cpp +++ /dev/null @@ -1,737 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dialog.cpp -// Purpose: wxDialog class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dialog.h" -#endif - -#include "wx/dialog.h" -#include "wx/utils.h" -#include "wx/frame.h" -#include "wx/app.h" -#include "wx/settings.h" - -#include - -#include -#if XmVersion >= 1002 -#include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if XmVersion > 1000 -#include -#endif - -#include "wx/motif/private.h" - -static void wxCloseDialogCallback(Widget widget, XtPointer client_data, XmAnyCallbackStruct *cbs); -static void wxDialogBoxRepaintProc(Widget w, XtPointer c_data, XEvent *event, char *); -static void wxDialogBoxEventHandler (Widget wid, - XtPointer client_data, - XEvent* event, - Boolean *continueToDispatch); - -static void wxUnmapBulletinBoard(Widget dialog, wxDialog *client,XtPointer call); - -// A stack of modal_showing flags, since we can't rely -// on accessing wxDialog::m_modalShowing within -// wxDialog::Show in case a callback has deleted the wxDialog. -static wxList wxModalShowingStack; - -// Lists to keep track of windows, so we can disable/enable them -// for modal dialogs -wxList wxModalDialogs; -wxList wxModelessWindows; // Frames and modeless dialogs -extern wxList wxPendingDelete; - -#define wxUSE_INVISIBLE_RESIZE 1 - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxDialog, wxPanel) - -BEGIN_EVENT_TABLE(wxDialog, wxPanel) -EVT_BUTTON(wxID_OK, wxDialog::OnOK) -EVT_BUTTON(wxID_APPLY, wxDialog::OnApply) -EVT_BUTTON(wxID_CANCEL, wxDialog::OnCancel) -EVT_CHAR_HOOK(wxDialog::OnCharHook) -EVT_SYS_COLOUR_CHANGED(wxDialog::OnSysColourChanged) -EVT_CLOSE(wxDialog::OnCloseWindow) -END_EVENT_TABLE() - -#endif - -wxDialog::wxDialog() -{ - m_modalShowing = FALSE; - m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE); -} - -bool wxDialog::Create(wxWindow *parent, wxWindowID id, - const wxString& title, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - m_windowStyle = style; - m_modalShowing = FALSE; - m_dialogTitle = title; - - m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE); - m_foregroundColour = *wxBLACK; - - SetName(name); - - if (!parent) - wxTopLevelWindows.Append(this); - - if (parent) parent->AddChild(this); - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - Widget parentWidget = (Widget) 0; - if (parent) - parentWidget = (Widget) parent->GetTopWidget(); - if (!parent) - parentWidget = (Widget) wxTheApp->GetTopLevelWidget(); - - wxASSERT_MSG( (parentWidget != (Widget) 0), "Could not find a suitable parent shell for dialog." ); - - Arg args[2]; - XtSetArg (args[0], XmNdefaultPosition, False); - XtSetArg (args[1], XmNautoUnmanage, False); - Widget dialogShell = XmCreateBulletinBoardDialog(parentWidget, (char*) (const char*) name, args, 2); - m_mainWidget = (WXWidget) dialogShell; - - // We don't want margins, since there is enough elsewhere. - XtVaSetValues(dialogShell, - XmNmarginHeight, 0, - XmNmarginWidth, 0, - XmNresizePolicy, XmRESIZE_NONE, - NULL) ; - - Widget shell = XtParent(dialogShell) ; - if (!title.IsNull()) - { - XmString str = XmStringCreateSimple((char*) (const char*)title); - XtVaSetValues(dialogShell, - XmNdialogTitle, str, - NULL); - XmStringFree(str); - } - - m_windowFont = wxSystemSettings::GetSystemFont(wxSYS_DEFAULT_GUI_FONT); - ChangeFont(FALSE); - - wxAddWindowToTable(dialogShell, this); - - // Intercept CLOSE messages from the window manager - Atom WM_DELETE_WINDOW = XmInternAtom(XtDisplay(shell), "WM_DELETE_WINDOW", False); - - /* Remove and add WM_DELETE_WINDOW so ours is only handler */ - /* Why do we have to do this for wxDialog, but not wxFrame? */ - XmRemoveWMProtocols(shell, &WM_DELETE_WINDOW, 1); - XmAddWMProtocols(shell, &WM_DELETE_WINDOW, 1); - XmActivateWMProtocol(shell, WM_DELETE_WINDOW); - - // Modified Steve Hammes for Motif 2.0 -#if (XmREVISION > 1 || XmVERSION > 1) - XmAddWMProtocolCallback(shell, WM_DELETE_WINDOW, (XtCallbackProc) wxCloseDialogCallback, (XtPointer)this); -#elif XmREVISION == 1 - XmAddWMProtocolCallback(shell, WM_DELETE_WINDOW, (XtCallbackProc) wxCloseDialogCallback, (caddr_t)this); -#else - XmAddWMProtocolCallback(shell, WM_DELETE_WINDOW, (void (*)())wxCloseDialogCallback, (caddr_t)this); -#endif - - XtTranslations ptr ; - XtOverrideTranslations(dialogShell, - ptr = XtParseTranslationTable(": resize()")); - XtFree((char *)ptr); - - // Can't remember what this was about... but I think it's necessary. - - if (wxUSE_INVISIBLE_RESIZE) - { - if (pos.x > -1) - XtVaSetValues(dialogShell, XmNx, pos.x, - NULL); - if (pos.y > -1) - XtVaSetValues(dialogShell, XmNy, pos.y, - NULL); - - if (size.x > -1) - XtVaSetValues(dialogShell, XmNwidth, size.x, NULL); - if (size.y > -1) - XtVaSetValues(dialogShell, XmNheight, size.y, NULL); - } - - // This patch come from Torsten Liermann lier@lier1.muc.de - if (XmIsMotifWMRunning(shell)) - { - int decor = 0 ; - if (m_windowStyle & wxRESIZE_BORDER) - decor |= MWM_DECOR_RESIZEH ; - if (m_windowStyle & wxSYSTEM_MENU) - decor |= MWM_DECOR_MENU; - if ((m_windowStyle & wxCAPTION) || - (m_windowStyle & wxTINY_CAPTION_HORIZ) || - (m_windowStyle & wxTINY_CAPTION_VERT)) - decor |= MWM_DECOR_TITLE; - if (m_windowStyle & wxTHICK_FRAME) - decor |= MWM_DECOR_BORDER; - if (m_windowStyle & wxMINIMIZE_BOX) - decor |= MWM_DECOR_MINIMIZE; - if (m_windowStyle & wxMAXIMIZE_BOX) - decor |= MWM_DECOR_MAXIMIZE; - - XtVaSetValues(shell,XmNmwmDecorations,decor,NULL) ; - } - // This allows non-Motif window managers to support at least the - // no-decorations case. - else - { - if ((m_windowStyle & wxCAPTION) != wxCAPTION) - XtVaSetValues((Widget) shell,XmNoverrideRedirect,TRUE,NULL); - } - - XtRealizeWidget(dialogShell); - - XtAddCallback(dialogShell,XmNunmapCallback, - (XtCallbackProc)wxUnmapBulletinBoard,this) ; - - // Positioning of the dialog doesn't work properly unless the dialog - // is managed, so we manage without mapping to the screen. - // To show, we map the shell (actually it's parent). - if (!wxUSE_INVISIBLE_RESIZE) - XtVaSetValues(shell, XmNmappedWhenManaged, FALSE, NULL); - - if (!wxUSE_INVISIBLE_RESIZE) - { - XtManageChild(dialogShell); - SetSize(pos.x, pos.y, size.x, size.y); - } - XtAddEventHandler(dialogShell,ExposureMask,FALSE, - wxDialogBoxRepaintProc, (XtPointer) this); - - XtAddEventHandler(dialogShell, - ButtonPressMask | ButtonReleaseMask | PointerMotionMask | KeyPressMask, - FALSE, - wxDialogBoxEventHandler, - (XtPointer)this); - - ChangeBackgroundColour(); - - return TRUE; -} - -void wxDialog::SetModal(bool flag) -{ - if ( flag ) - m_windowStyle |= wxDIALOG_MODAL ; - else - if ( m_windowStyle & wxDIALOG_MODAL ) - m_windowStyle -= wxDIALOG_MODAL ; - - wxModelessWindows.DeleteObject(this); - if (!flag) - wxModelessWindows.Append(this); -} - -wxDialog::~wxDialog() -{ - m_modalShowing = FALSE; - if (!wxUSE_INVISIBLE_RESIZE && m_mainWidget) - { - XtUnmapWidget((Widget) m_mainWidget); - } - - wxTopLevelWindows.DeleteObject(this); - - if ( (GetWindowStyleFlag() & wxDIALOG_MODAL) != wxDIALOG_MODAL ) - wxModelessWindows.DeleteObject(this); - - // If this is the last top-level window, exit. - if (wxTheApp && (wxTopLevelWindows.Number() == 0)) - { - wxTheApp->SetTopWindow(NULL); - - if (wxTheApp->GetExitOnFrameDelete()) - { - wxTheApp->ExitMainLoop(); - } - } - - // This event-flushing code used to be in wxWindow::PostDestroyChildren (wx_dialog.cpp) - // but I think this should work, if we destroy the children first. - // Note that this might need to be done for wxFrame also. - DestroyChildren(); - - // This causes a crash in e.g. the resource sample when closing - // the example dialog. TODO: Probably not necessary (?) -#if 0 - // Now process all events, because otherwise - // this might remain on the screen. - Display* display; - if (m_mainWidget) - display = XtDisplay((Widget) m_mainWidget); - else - display = (Display*) wxGetDisplay(); - - XSync(display, FALSE); - XEvent event; - while (XtAppPending((XtAppContext) wxTheApp->GetAppContext())) { - XFlush(display); - XtAppNextEvent((XtAppContext) wxTheApp->GetAppContext(), &event); - XtDispatchEvent(&event); - } -#endif -} - -// By default, pressing escape cancels the dialog -void wxDialog::OnCharHook(wxKeyEvent& event) -{ - if (event.m_keyCode == WXK_ESCAPE) - { - // Behaviour changed in 2.0: we'll send a Cancel message - // to the dialog instead of Close. - wxCommandEvent cancelEvent(wxEVT_COMMAND_BUTTON_CLICKED, wxID_CANCEL); - cancelEvent.SetEventObject( this ); - GetEventHandler()->ProcessEvent(cancelEvent); - - return; - } - // We didn't process this event. - event.Skip(); -} - -void wxDialog::Iconize(bool WXUNUSED(iconize)) -{ - // Can't iconize a dialog in Motif, apparently - // TODO: try using the parent of m_mainShell. - // XtVaSetValues((Widget) m_mainWidget, XmNiconic, iconize, NULL); -} - -bool wxDialog::IsIconized() const -{ -/* -Boolean iconic; -XtVaGetValues((Widget) m_mainWidget, XmNiconic, &iconic, NULL); - - return iconic; - */ - return FALSE; -} - -void wxDialog::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - XtVaSetValues((Widget) m_mainWidget, XmNresizePolicy, XmRESIZE_ANY, NULL); - wxWindow::SetSize(x, y, width, height, sizeFlags); - XtVaSetValues((Widget) m_mainWidget, XmNresizePolicy, XmRESIZE_NONE, NULL); -} - -void wxDialog::SetClientSize(int width, int height) -{ - SetSize(-1, -1, width, height); -} - - -void wxDialog::SetTitle(const wxString& title) -{ - m_dialogTitle = title; - if (!title.IsNull()) - { - XmString str = XmStringCreateSimple((char*) (const char*) title); - XtVaSetValues((Widget) m_mainWidget, - XmNtitle, (char*) (const char*) title, - XmNdialogTitle, str, // Roberto Cocchi - XmNiconName, (char*) (const char*) title, - NULL); - XmStringFree(str); - } -} - -wxString wxDialog::GetTitle() const -{ - return m_dialogTitle; -} - -void wxDialog::Centre(int direction) -{ - int x_offset,y_offset ; - int display_width, display_height; - int width, height, x, y; - wxWindow *parent = GetParent(); - if ((direction & wxCENTER_FRAME) && parent) - { - parent->GetPosition(&x_offset,&y_offset) ; - parent->GetSize(&display_width,&display_height) ; - } - else - { - wxDisplaySize(&display_width, &display_height); - x_offset = 0 ; - y_offset = 0 ; - } - - GetSize(&width, &height); - GetPosition(&x, &y); - - if (direction & wxHORIZONTAL) - x = (int)((display_width - width)/2); - if (direction & wxVERTICAL) - y = (int)((display_height - height)/2); - - SetSize(x+x_offset, y+y_offset, width, height); -} - -void wxDialog::Raise() -{ - Window parent_window = XtWindow((Widget) m_mainWidget), - next_parent = XtWindow((Widget) m_mainWidget), - root = RootWindowOfScreen(XtScreen((Widget) m_mainWidget)); - // search for the parent that is child of ROOT, because the WM may - // reparent twice and notify only the next parent (like FVWM) - while (next_parent != root) { - Window *theChildren; unsigned int n; - parent_window = next_parent; - XQueryTree(XtDisplay((Widget) m_mainWidget), parent_window, &root, - &next_parent, &theChildren, &n); - XFree(theChildren); // not needed - } - XRaiseWindow(XtDisplay((Widget) m_mainWidget), parent_window); -} - -void wxDialog::Lower() -{ - Window parent_window = XtWindow((Widget) m_mainWidget), - next_parent = XtWindow((Widget) m_mainWidget), - root = RootWindowOfScreen(XtScreen((Widget) m_mainWidget)); - // search for the parent that is child of ROOT, because the WM may - // reparent twice and notify only the next parent (like FVWM) - while (next_parent != root) { - Window *theChildren; unsigned int n; - parent_window = next_parent; - XQueryTree(XtDisplay((Widget) m_mainWidget), parent_window, &root, - &next_parent, &theChildren, &n); - XFree(theChildren); // not needed - } - XLowerWindow(XtDisplay((Widget) m_mainWidget), parent_window); -} - -bool wxDialog::Show(bool show) -{ - m_isShown = show; - - if (show) - { - if (!wxUSE_INVISIBLE_RESIZE) - XtMapWidget(XtParent((Widget) m_mainWidget)); - else - XtManageChild((Widget) m_mainWidget) ; - - XRaiseWindow(XtDisplay((Widget) m_mainWidget), XtWindow((Widget) m_mainWidget)); - - } - else - { - if (!wxUSE_INVISIBLE_RESIZE) - XtUnmapWidget(XtParent((Widget) m_mainWidget)); - else - XtUnmanageChild((Widget) m_mainWidget) ; - - XFlush(XtDisplay((Widget) wxTheApp->GetTopLevelWidget())); - XSync(XtDisplay((Widget) wxTheApp->GetTopLevelWidget()), FALSE); - } - - return TRUE; -} - -// Shows a dialog modally, returning a return code -int wxDialog::ShowModal() -{ - m_windowStyle |= wxDIALOG_MODAL; - - Show(TRUE); - - if (m_modalShowing) - return 0; - - wxModalShowingStack.Insert((wxObject *)TRUE); - - m_modalShowing = TRUE; - XtAddGrab((Widget) m_mainWidget, TRUE, FALSE); - - XEvent event; - - // Loop until we signal that the dialog should be closed - while ((wxModalShowingStack.Number() > 0) && ((int)(wxModalShowingStack.First()->Data()) != 0)) - { - // XtAppProcessEvent((XtAppContext) wxTheApp->GetAppContext(), XtIMAll); - - XtAppNextEvent((XtAppContext) wxTheApp->GetAppContext(), &event); - wxTheApp->ProcessXEvent((WXEvent*) &event); - } - - // Remove modal dialog flag from stack - wxNode *node = wxModalShowingStack.First(); - if (node) - delete node; - - // Now process all events in case they get sent to a destroyed dialog - XSync(XtDisplay((Widget) wxTheApp->GetTopLevelWidget()), FALSE); - while (XtAppPending((XtAppContext) wxTheApp->GetAppContext())) - { - XFlush(XtDisplay((Widget) wxTheApp->GetTopLevelWidget())); - XtAppNextEvent((XtAppContext) wxTheApp->GetAppContext(), &event); - - wxTheApp->ProcessXEvent((WXEvent*) &event); - } - - // TODO: is it safe to call this, if the dialog may have been deleted - // by now? Probably only if we're using delayed deletion of dialogs. - return GetReturnCode(); -} - -void wxDialog::EndModal(int retCode) -{ - if (!m_modalShowing) - return; - - SetReturnCode(retCode); - - // Strangely, we don't seem to need this now. - // XtRemoveGrab((Widget) m_mainWidget); - - Show(FALSE); - - m_modalShowing = FALSE; - - wxNode *node = wxModalShowingStack.First(); - if (node) - node->SetData((wxObject *)FALSE); -} - -// Standard buttons -void wxDialog::OnOK(wxCommandEvent& WXUNUSED(event)) -{ - if ( Validate() && TransferDataFromWindow() ) - { - if ( IsModal() ) - EndModal(wxID_OK); - else - { - SetReturnCode(wxID_OK); - this->Show(FALSE); - } - } -} - -void wxDialog::OnApply(wxCommandEvent& WXUNUSED(event)) -{ - if (Validate()) - TransferDataFromWindow(); - // TODO probably need to disable the Apply button until things change again -} - -void wxDialog::OnCancel(wxCommandEvent& WXUNUSED(event)) -{ - if ( IsModal() ) - EndModal(wxID_CANCEL); - else - { - SetReturnCode(wxID_CANCEL); - this->Show(FALSE); - } -} - -bool wxDialog::OnClose() -{ - // Behaviour changed in 2.0: we'll send a Cancel message by default, - // which may close the dialog. - // Check for looping if the Cancel event handler calls Close() - - static wxList closing; - - if ( closing.Member(this) ) - return FALSE; - - closing.Append(this); - - wxCommandEvent cancelEvent(wxEVT_COMMAND_BUTTON_CLICKED, wxID_CANCEL); - cancelEvent.SetEventObject( this ); - GetEventHandler()->ProcessEvent(cancelEvent); - - closing.DeleteObject(this); - - return FALSE; -} - -void wxDialog::OnCloseWindow(wxCloseEvent& event) -{ - // Compatibility - if ( GetEventHandler()->OnClose() || event.GetForce()) - { - this->Destroy(); - } -} - -// Destroy the window (delayed, if a managed window) -bool wxDialog::Destroy() -{ - if (!wxPendingDelete.Member(this)) - wxPendingDelete.Append(this); - return TRUE; -} - -void wxDialog::OnSysColourChanged(wxSysColourChangedEvent& WXUNUSED(event)) -{ - SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE)); - Refresh(); -} - -void wxDialog::Fit() -{ - wxWindow::Fit(); -} - -// Handle a close event from the window manager -static void wxCloseDialogCallback( Widget WXUNUSED(widget), XtPointer client_data, - XmAnyCallbackStruct *WXUNUSED(cbs)) -{ - wxDialog *dialog = (wxDialog *)client_data; - wxCloseEvent closeEvent(wxEVT_CLOSE_WINDOW, dialog->GetId()); - closeEvent.SetEventObject(dialog); - - // May delete the dialog (with delayed deletion) - dialog->GetEventHandler()->ProcessEvent(closeEvent); -} - -// TODO: Preferably, we should have a universal repaint proc. -// Meanwhile, use a special one for dialogs. -static void wxDialogBoxRepaintProc(Widget w, XtPointer WXUNUSED(c_data), XEvent *event, char *) -{ - Window window; - Display *display; - - wxWindow* win = (wxWindow *)wxWidgetHashTable->Get((long)w); - if (!win) - return; - - switch(event -> type) - { - case Expose : - { - window = (Window) win -> GetXWindow(); - display = (Display *) win -> GetXDisplay(); - - wxRect* rect = new wxRect(event->xexpose.x, event->xexpose.y, - event->xexpose.width, event->xexpose.height); - win->m_updateRects.Append((wxObject*) rect); - - if (event -> xexpose.count == 0) - { - wxPaintEvent event(win->GetId()); - event.SetEventObject(win); - win->GetEventHandler()->ProcessEvent(event); - - win->ClearUpdateRects(); - } - break; - } - default : - { - cout << "\n\nNew Event ! is = " << event -> type << "\n"; - break; - } - } -} - -static void wxDialogBoxEventHandler (Widget wid, - XtPointer WXUNUSED(client_data), - XEvent* event, - Boolean *continueToDispatch) -{ - wxDialog *dialog = (wxDialog *)wxWidgetHashTable->Get((long)wid); - if (dialog) - { - wxMouseEvent wxevent(wxEVT_NULL); - if (wxTranslateMouseEvent(wxevent, dialog, wid, event)) - { - wxevent.SetEventObject(dialog); - wxevent.SetId(dialog->GetId()); - dialog->GetEventHandler()->ProcessEvent(wxevent); - } - else - { - // An attempt to implement OnCharHook by calling OnCharHook first; - // if this returns TRUE, set continueToDispatch to False - // (don't continue processing). - // Otherwise set it to True and call OnChar. - wxKeyEvent keyEvent(wxEVT_CHAR); - if (wxTranslateKeyEvent(keyEvent, dialog, wid, event)) - { - keyEvent.SetEventObject(dialog); - keyEvent.SetId(dialog->GetId()); - keyEvent.SetEventType(wxEVT_CHAR_HOOK); - if (dialog->GetEventHandler()->ProcessEvent(keyEvent)) - { - *continueToDispatch = False; - return; - } - else - { - keyEvent.SetEventType(wxEVT_CHAR); - dialog->GetEventHandler()->ProcessEvent(keyEvent); - } - } - } - } - *continueToDispatch = True; -} - -static void wxUnmapBulletinBoard(Widget WXUNUSED(dialog), wxDialog *WXUNUSED(client), XtPointer WXUNUSED(call) ) -{ -/* This gets called when the dialog is being shown, which -* defeats modal showing. -client->m_modalShowing = FALSE ; -client->m_isShown = FALSE; - */ -} - -void wxDialog::ChangeFont(bool keepOriginalSize) -{ - wxWindow::ChangeFont(keepOriginalSize); -} - -void wxDialog::ChangeBackgroundColour() -{ - if (GetMainWidget()) - DoChangeBackgroundColour(GetMainWidget(), m_backgroundColour); -} - -void wxDialog::ChangeForegroundColour() -{ - if (GetMainWidget()) - DoChangeForegroundColour(GetMainWidget(), m_foregroundColour); -} - diff --git a/src/motif/dirdlg.cpp b/src/motif/dirdlg.cpp deleted file mode 100644 index 56828d883f..0000000000 --- a/src/motif/dirdlg.cpp +++ /dev/null @@ -1,42 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dirdlg.cpp -// Purpose: wxDirDialog -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dirdlg.h" -#endif - -#include "wx/defs.h" -#include "wx/utils.h" -#include "wx/dialog.h" -#include "wx/dirdlg.h" - -#include "wx/cmndata.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_CLASS(wxDirDialog, wxDialog) -#endif - -wxDirDialog::wxDirDialog(wxWindow *parent, const wxString& message, - const wxString& defaultPath, - long style, const wxPoint& pos) -{ - m_message = message; - m_dialogStyle = style; - m_parent = parent; - m_path = defaultPath; -} - -int wxDirDialog::ShowModal() -{ - // TODO - return wxID_CANCEL; -} - diff --git a/src/motif/dnd.cpp b/src/motif/dnd.cpp deleted file mode 100644 index 618c3e46f3..0000000000 --- a/src/motif/dnd.cpp +++ /dev/null @@ -1,222 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: dnd.cpp -// Purpose: wxDropTarget, wxDropSource classes -// Author: Julian Smart -// Id: $Id$ -// Copyright: (c) 1998 Julian Smart -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dnd.h" -#endif - -#include "wx/setup.h" - -#if wxUSE_DRAG_AND_DROP - -#include "wx/dnd.h" -#include "wx/window.h" -#include "wx/app.h" -#include "wx/gdicmn.h" -#include "wx/intl.h" -#include "wx/utils.h" -#include "wx/log.h" - -#include - -// ---------------------------------------------------------------------------- -// global -// ---------------------------------------------------------------------------- - -// ---------------------------------------------------------------------------- -// wxDropTarget -// ---------------------------------------------------------------------------- - -wxDropTarget::wxDropTarget() -{ -} - -wxDropTarget::~wxDropTarget() -{ -} - -// ---------------------------------------------------------------------------- -// wxTextDropTarget -// ---------------------------------------------------------------------------- - -bool wxTextDropTarget::OnDrop( long x, long y, const void *data, size_t WXUNUSED(size) ) -{ - OnDropText( x, y, (const char*)data ); - return TRUE; -} - -bool wxTextDropTarget::OnDropText( long x, long y, const char *psz ) -{ - wxLogDebug( "Got dropped text: %s.", psz ); - wxLogDebug( "At x: %d, y: %d.", (int)x, (int)y ); - return TRUE; -} - -size_t wxTextDropTarget::GetFormatCount() const -{ - return 1; -} - -wxDataFormat wxTextDropTarget::GetFormat(size_t WXUNUSED(n)) const -{ - return wxDF_TEXT; -} - -// ---------------------------------------------------------------------------- -// wxFileDropTarget -// ---------------------------------------------------------------------------- - -bool wxFileDropTarget::OnDropFiles( long x, long y, size_t nFiles, const char * const aszFiles[] ) -{ - wxLogDebug( "Got %d dropped files.", (int)nFiles ); - wxLogDebug( "At x: %d, y: %d.", (int)x, (int)y ); - for (size_t i = 0; i < nFiles; i++) - { - wxLogDebug( aszFiles[i] ); - } - return TRUE; -} - -bool wxFileDropTarget::OnDrop(long x, long y, const void *data, size_t size ) -{ - size_t number = 0; - char *text = (char*) data; - for (size_t i = 0; i < size; i++) - if (text[i] == 0) number++; - - if (number == 0) return TRUE; - - char **files = new char*[number]; - - text = (char*) data; - for (size_t i = 0; i < number; i++) - { - files[i] = text; - int len = strlen( text ); - text += len+1; - } - - bool ret = OnDropFiles( x, y, 1, files ); - - free( files ); - - return ret; -} - -size_t wxFileDropTarget::GetFormatCount() const -{ - return 1; -} - -wxDataFormat wxFileDropTarget::GetFormat(size_t WXUNUSED(n)) const -{ - return wxDF_FILENAME; -} - -//------------------------------------------------------------------------- -// wxDropSource -//------------------------------------------------------------------------- - -wxDropSource::wxDropSource( wxWindow *win ) -{ -#if 0 - m_window = win; - m_data = (wxDataObject *) NULL; - m_retValue = wxDragCancel; - - m_defaultCursor = wxCursor( wxCURSOR_NO_ENTRY ); - m_goaheadCursor = wxCursor( wxCURSOR_HAND ); -#endif -} - -wxDropSource::wxDropSource( wxDataObject &data, wxWindow *win ) -{ -#if 0 - g_blockEventsOnDrag = TRUE; - - m_window = win; - m_widget = win->m_widget; - if (win->m_wxwindow) m_widget = win->m_wxwindow; - m_retValue = wxDragCancel; - - m_data = &data; - - m_defaultCursor = wxCursor( wxCURSOR_NO_ENTRY ); - m_goaheadCursor = wxCursor( wxCURSOR_HAND ); -#endif -} - -void wxDropSource::SetData( wxDataObject &data ) -{ -// m_data = &data; -} - -wxDropSource::~wxDropSource(void) -{ -// if (m_data) delete m_data; -} - -wxDragResult wxDropSource::DoDragDrop( bool WXUNUSED(bAllowMove) ) -{ - // wxASSERT_MSG( m_data, "wxDragSource: no data" ); - - return wxDragNone; -#if 0 - if (!m_data) return (wxDragResult) wxDragNone; - if (m_data->GetDataSize() == 0) return (wxDragResult) wxDragNone; - - RegisterWindow(); - - // TODO - - UnregisterWindow(); - - g_blockEventsOnDrag = FALSE; - - return m_retValue; -#endif -} - -#if 0 -void wxDropSource::RegisterWindow(void) -{ - if (!m_data) return; - - wxString formats; - - wxDataFormat df = m_data->GetPreferredFormat(); - - switch (df) - { - case wxDF_TEXT: - formats += "text/plain"; - break; - case wxDF_FILENAME: - formats += "file:ALL"; - break; - default: - break; - } - - char *str = WXSTRINGCAST formats; - - // TODO -} - -void wxDropSource::UnregisterWindow(void) -{ - if (!m_widget) return; - - // TODO -} -#endif - - -#endif - // wxUSE_DRAG_AND_DROP diff --git a/src/motif/fdiag.xbm b/src/motif/fdiag.xbm deleted file mode 100644 index 67d3b4732a..0000000000 --- a/src/motif/fdiag.xbm +++ /dev/null @@ -1,6 +0,0 @@ -#define fdiag_width 16 -#define fdiag_height 16 -static char fdiag_bits[] = { - 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, - 0x40, 0x40, 0x80, 0x80, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, - 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80}; diff --git a/src/motif/filedlg.cpp b/src/motif/filedlg.cpp deleted file mode 100644 index 0f22a05299..0000000000 --- a/src/motif/filedlg.cpp +++ /dev/null @@ -1,308 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: filedlg.cpp -// Purpose: wxFileDialog -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "filedlg.h" -#endif - -#include "wx/defs.h" -#include "wx/utils.h" -#include "wx/dialog.h" -#include "wx/filedlg.h" -#include "wx/intl.h" -#include "wx/app.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if !USE_SHARED_LIBRARY -IMPLEMENT_CLASS(wxFileDialog, wxDialog) -#endif - -#define DEFAULT_FILE_SELECTOR_SIZE 0 -// Let Motif defines the size of File -// Selector Box (if 1), or fix it to -// wxFSB_WIDTH x wxFSB_HEIGHT (if 0) -#define wxFSB_WIDTH 600 -#define wxFSB_HEIGHT 500 - - -wxString wxFileSelector(const char *title, - const char *defaultDir, const char *defaultFileName, - const char *defaultExtension, const char *filter, int flags, - wxWindow *parent, int x, int y) -{ - // If there's a default extension specified but no filter, we create a suitable - // filter. - - wxString filter2(""); - if ( defaultExtension && !filter ) - filter2 = wxString("*.") + wxString(defaultExtension) ; - else if ( filter ) - filter2 = filter; - - wxString defaultDirString; - if (defaultDir) - defaultDirString = defaultDir; - else - defaultDirString = ""; - - wxString defaultFilenameString; - if (defaultFileName) - defaultFilenameString = defaultFileName; - else - defaultFilenameString = ""; - - wxFileDialog fileDialog(parent, title, defaultDirString, defaultFilenameString, filter2, flags, wxPoint(x, y)); - - if ( fileDialog.ShowModal() == wxID_OK ) - { - return fileDialog.GetPath(); - } - else - return wxEmptyString; -} - -wxString wxFileSelectorEx(const char *title, - const char *defaultDir, - const char *defaultFileName, - int* defaultFilterIndex, - const char *filter, - int flags, - wxWindow* parent, - int x, - int y) - -{ - wxFileDialog fileDialog(parent, title ? title : "", defaultDir ? defaultDir : "", - defaultFileName ? defaultFileName : "", filter ? filter : "", flags, wxPoint(x, y)); - - if ( fileDialog.ShowModal() == wxID_OK ) - { - *defaultFilterIndex = fileDialog.GetFilterIndex(); - return fileDialog.GetPath(); - } - else - return wxEmptyString; -} - -wxString wxFileDialog::m_fileSelectorAnswer = ""; -bool wxFileDialog::m_fileSelectorReturned = FALSE; - -void wxFileSelCancel( Widget WXUNUSED(fs), XtPointer WXUNUSED(client_data), - XmFileSelectionBoxCallbackStruct *WXUNUSED(cbs) ) -{ - wxFileDialog::m_fileSelectorAnswer = ""; - wxFileDialog::m_fileSelectorReturned = TRUE; -} - -void wxFileSelOk(Widget WXUNUSED(fs), XtPointer WXUNUSED(client_data), XmFileSelectionBoxCallbackStruct *cbs) -{ - char *filename = NULL; - if (!XmStringGetLtoR(cbs->value, XmSTRING_DEFAULT_CHARSET, &filename)) { - wxFileDialog::m_fileSelectorAnswer = ""; - wxFileDialog::m_fileSelectorReturned = TRUE; - } else { - if (filename) { - wxFileDialog::m_fileSelectorAnswer = filename; - XtFree(filename); - } - wxFileDialog::m_fileSelectorReturned = TRUE; - } -} - -wxFileDialog::wxFileDialog(wxWindow *parent, const wxString& message, - const wxString& defaultDir, const wxString& defaultFileName, const wxString& wildCard, - long style, const wxPoint& pos) -{ - m_message = message; - m_dialogStyle = style; - m_parent = parent; - m_path = ""; - m_fileName = defaultFileName; - m_dir = defaultDir; - m_wildCard = wildCard; - m_filterIndex = 1; - m_pos = pos; -} - -int wxFileDialog::ShowModal() -{ - wxBeginBusyCursor(); - - // static char fileBuf[512]; - Widget parentWidget = (Widget) 0; - if (m_parent) - { - parentWidget = (Widget) m_parent->GetTopWidget(); - } - else - parentWidget = (Widget) wxTheApp->GetTopLevelWidget(); - - Widget fileSel = XmCreateFileSelectionDialog(parentWidget, "file_selector", NULL, 0); - XtUnmanageChild(XmFileSelectionBoxGetChild(fileSel, XmDIALOG_HELP_BUTTON)); - - Widget shell = XtParent(fileSel); - - if (!m_message.IsNull()) - XtVaSetValues(shell, XmNtitle, (char*) (const char*) m_message, NULL); - - wxString entirePath(""); - - if ((m_dir != "") && (m_fileName != "")) - { - entirePath = m_dir + wxString("/") + m_fileName; - } - else if ((m_dir != "") && (m_fileName == "")) - { - entirePath = m_dir + wxString("/"); - } - else if ((m_dir == "") && (m_fileName != "")) - { - entirePath = m_fileName; - } - - if (entirePath != "") - { - Widget selectionWidget = XmFileSelectionBoxGetChild(fileSel, XmDIALOG_TEXT); - XmTextSetString(selectionWidget, (char*) (const char*) entirePath); - } - - if (m_wildCard != "") - { - wxString filter(""); - if (m_dir != "") - filter = m_dir + wxString("/") + m_wildCard; - else - filter = m_wildCard; - - Widget filterWidget = XmFileSelectionBoxGetChild(fileSel, XmDIALOG_FILTER_TEXT); - XmTextSetString(filterWidget, (char*) (const char*) filter); - XmFileSelectionDoSearch(fileSel, NULL); - } - - // Suggested by Terry Gitnick, 16/9/97, because of change in Motif - // file selector on Solaris 1.5.1. - if ( m_dir != "" ) - { - XmString thePath = XmStringCreateLtoR ((char*) (const char*) m_dir, - XmSTRING_DEFAULT_CHARSET); - - XtVaSetValues (fileSel, - XmNdirectory, thePath, - NULL); - - XmStringFree(thePath); - } - - XtAddCallback(fileSel, XmNcancelCallback, (XtCallbackProc)wxFileSelCancel, (XtPointer)NULL); - XtAddCallback(fileSel, XmNokCallback, (XtCallbackProc)wxFileSelOk, (XtPointer)NULL); - - //#if XmVersion > 1000 - // I'm not sure about what you mean with XmVersion. - // If this is for Motif1.1/Motif1.2, then check XmVersion>=1200 - // (Motif1.1.4 ==> XmVersion 1100 ) - // Nevertheless, I put here a #define, so anyone can choose in (I)makefile... - // -#if !DEFAULT_FILE_SELECTOR_SIZE - int width = wxFSB_WIDTH; - int height = wxFSB_HEIGHT; - XtVaSetValues(fileSel, - XmNwidth, width, - XmNheight, height, - XmNresizePolicy, XmRESIZE_NONE, - NULL); -#endif - - XtManageChild(fileSel); - - m_fileSelectorAnswer = ""; - m_fileSelectorReturned = FALSE; - - wxEndBusyCursor(); - - XtAddGrab(XtParent(fileSel), TRUE, FALSE); - XEvent event; - while (!m_fileSelectorReturned) - { - XtAppProcessEvent((XtAppContext) wxTheApp->GetAppContext(), XtIMAll); - } - XtRemoveGrab(XtParent(fileSel)); - - XmUpdateDisplay((Widget) wxTheApp->GetTopLevelWidget()); // Experimental - - // XtDestroyWidget(fileSel); - XtUnmapWidget(XtParent(fileSel)); - XtDestroyWidget(XtParent(fileSel)); - - // Now process all events, because otherwise - // this might remain on the screen - XSync(XtDisplay((Widget) wxTheApp->GetTopLevelWidget()), FALSE); - while (XtAppPending((XtAppContext) wxTheApp->GetAppContext())) - { - XFlush(XtDisplay((Widget) wxTheApp->GetTopLevelWidget())); - XtAppNextEvent((XtAppContext) wxTheApp->GetAppContext(), &event); - XtDispatchEvent(&event); - } - - m_path = m_fileSelectorAnswer; - m_fileName = wxFileNameFromPath(m_fileSelectorAnswer); - m_dir = wxPathOnly(m_path); - - if (m_fileName == "") - return wxID_CANCEL; - else - return wxID_OK; -} - -// Generic file load/save dialog -static wxString -wxDefaultFileSelector(bool load, const char *what, const char *extension, const char *default_name, wxWindow *parent) -{ - char *ext = (char *)extension; - - char prompt[50]; - wxString str; - if (load) - str = "Load %s file"; - else - str = "Save %s file"; - sprintf(prompt, wxGetTranslation(str), what); - - if (*ext == '.') ext++; - char wild[60]; - sprintf(wild, "*.%s", ext); - - return wxFileSelector (prompt, NULL, default_name, ext, wild, 0, parent); -} - -// Generic file load dialog -wxString wxLoadFileSelector(const char *what, const char *extension, const char *default_name, wxWindow *parent) -{ - return wxDefaultFileSelector(TRUE, what, extension, default_name, parent); -} - - -// Generic file save dialog -wxString wxSaveFileSelector(const char *what, const char *extension, const char *default_name, wxWindow *parent) -{ - return wxDefaultFileSelector(FALSE, what, extension, default_name, parent); -} - - diff --git a/src/motif/font.cpp b/src/motif/font.cpp deleted file mode 100644 index 106415a5b3..0000000000 --- a/src/motif/font.cpp +++ /dev/null @@ -1,379 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: font.cpp -// Purpose: wxFont class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "font.h" -#endif - -#include "wx/defs.h" -#include "wx/string.h" -#include "wx/font.h" -#include "wx/gdicmn.h" -#include "wx/utils.h" - -#include - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxFont, wxGDIObject) -#endif - -wxXFont::wxXFont() -{ - m_fontStruct = (WXFontStructPtr) 0; - m_fontList = (WXFontList) 0; - m_display = (WXDisplay*) 0; - m_scale = 100; -} - -wxXFont::~wxXFont() -{ - XFontStruct* fontStruct = (XFontStruct*) m_fontStruct; - XmFontList fontList = (XmFontList) m_fontList; - - XmFontListFree (fontList); - - // TODO: why does freeing the font produce a segv??? - // Note that XFreeFont wasn't called in wxWin 1.68 either. - // XFreeFont((Display*) m_display, fontStruct); -} - -wxFontRefData::wxFontRefData() -{ - m_style = 0; - m_pointSize = 0; - m_family = 0; - m_style = 0; - m_weight = 0; - m_underlined = 0; - m_faceName = ""; -} - -wxFontRefData::wxFontRefData(const wxFontRefData& data) -{ - m_style = data.m_style; - m_pointSize = data.m_pointSize; - m_family = data.m_family; - m_style = data.m_style; - m_weight = data.m_weight; - m_underlined = data.m_underlined; - m_faceName = data.m_faceName; - - // Don't have to copy actual fonts, because they'll be created - // on demand. -} - -wxFontRefData::~wxFontRefData() -{ - wxNode* node = m_fonts.First(); - while (node) - { - wxXFont* f = (wxXFont*) node->Data(); - delete f; - node = node->Next(); - } - m_fonts.Clear(); -} - -wxFont::wxFont() -{ - if ( wxTheFontList ) - wxTheFontList->Append(this); -} - -wxFont::wxFont(int pointSize, int family, int style, int weight, bool underlined, const wxString& faceName) -{ - Create(pointSize, family, style, weight, underlined, faceName); - - if ( wxTheFontList ) - wxTheFontList->Append(this); -} - -bool wxFont::Create(int pointSize, int family, int style, int weight, bool underlined, const wxString& faceName) -{ - UnRef(); - m_refData = new wxFontRefData; - - M_FONTDATA->m_family = family; - M_FONTDATA->m_style = style; - M_FONTDATA->m_weight = weight; - M_FONTDATA->m_pointSize = pointSize; - M_FONTDATA->m_underlined = underlined; - M_FONTDATA->m_faceName = faceName; - - RealizeResource(); - - return TRUE; -} - -wxFont::~wxFont() -{ - if (wxTheFontList) - wxTheFontList->DeleteObject(this); -} - -bool wxFont::RealizeResource() -{ - // TODO: create the font (if there is a native font object) - return FALSE; -} - -void wxFont::Unshare() -{ - // Don't change shared data - if (!m_refData) - { - m_refData = new wxFontRefData(); - } - else - { - wxFontRefData* ref = new wxFontRefData(*(wxFontRefData*)m_refData); - UnRef(); - m_refData = ref; - } -} - -void wxFont::SetPointSize(int pointSize) -{ - Unshare(); - - M_FONTDATA->m_pointSize = pointSize; - - RealizeResource(); -} - -void wxFont::SetFamily(int family) -{ - Unshare(); - - M_FONTDATA->m_family = family; - - RealizeResource(); -} - -void wxFont::SetStyle(int style) -{ - Unshare(); - - M_FONTDATA->m_style = style; - - RealizeResource(); -} - -void wxFont::SetWeight(int weight) -{ - Unshare(); - - M_FONTDATA->m_weight = weight; - - RealizeResource(); -} - -void wxFont::SetFaceName(const wxString& faceName) -{ - Unshare(); - - M_FONTDATA->m_faceName = faceName; - - RealizeResource(); -} - -void wxFont::SetUnderlined(bool underlined) -{ - Unshare(); - - M_FONTDATA->m_underlined = underlined; - - RealizeResource(); -} - -wxString wxFont::GetFamilyString() const -{ - wxString fam(""); - switch (GetFamily()) - { - case wxDECORATIVE: - fam = "wxDECORATIVE"; - break; - case wxROMAN: - fam = "wxROMAN"; - break; - case wxSCRIPT: - fam = "wxSCRIPT"; - break; - case wxSWISS: - fam = "wxSWISS"; - break; - case wxMODERN: - fam = "wxMODERN"; - break; - case wxTELETYPE: - fam = "wxTELETYPE"; - break; - default: - fam = "wxDEFAULT"; - break; - } - return fam; -} - -/* New font system */ -wxString wxFont::GetFaceName() const -{ - wxString str(""); - if (M_FONTDATA) - str = M_FONTDATA->m_faceName ; - return str; -} - -wxString wxFont::GetStyleString() const -{ - wxString styl(""); - switch (GetStyle()) - { - case wxITALIC: - styl = "wxITALIC"; - break; - case wxSLANT: - styl = "wxSLANT"; - break; - default: - styl = "wxNORMAL"; - break; - } - return styl; -} - -wxString wxFont::GetWeightString() const -{ - wxString w(""); - switch (GetWeight()) - { - case wxBOLD: - w = "wxBOLD"; - break; - case wxLIGHT: - w = "wxLIGHT"; - break; - default: - w = "wxNORMAL"; - break; - } - return w; -} - -// Find an existing, or create a new, XFontStruct -// based on this wxFont and the given scale. Append the -// font to list in the private data for future reference. -wxXFont* wxFont::GetInternalFont(double scale, WXDisplay* display) const -{ - if (!Ok()) - return (wxXFont*) NULL; - - long intScale = long(scale * 100.0 + 0.5); // key for wxXFont - int pointSize = (M_FONTDATA->m_pointSize * 10 * intScale) / 100; - - wxNode* node = M_FONTDATA->m_fonts.First(); - while (node) - { - wxXFont* f = (wxXFont*) node->Data(); - if ((!display || (f->m_display == display)) && (f->m_scale == intScale)) - return f; - node = node->Next(); - } - - WXFontStructPtr font = LoadQueryFont(pointSize, M_FONTDATA->m_family, - M_FONTDATA->m_style, M_FONTDATA->m_weight, M_FONTDATA->m_underlined); - - if (!font) - { - // search up and down by stepsize 10 - int max_size = pointSize + 20 * (1 + (pointSize/180)); - int min_size = pointSize - 20 * (1 + (pointSize/180)); - int i; - - // Search for smaller size (approx.) - for (i=pointSize-10; !font && i >= 10 && i >= min_size; i -= 10) - font = LoadQueryFont(i, M_FONTDATA->m_family, M_FONTDATA->m_style, M_FONTDATA->m_weight, M_FONTDATA->m_underlined); - // Search for larger size (approx.) - for (i=pointSize+10; !font && i <= max_size; i += 10) - font = LoadQueryFont(i, M_FONTDATA->m_family, M_FONTDATA->m_style, M_FONTDATA->m_weight, M_FONTDATA->m_underlined); - // Try default family - if (!font && M_FONTDATA->m_family != wxDEFAULT) - font = LoadQueryFont(pointSize, wxDEFAULT, M_FONTDATA->m_style, - M_FONTDATA->m_weight, M_FONTDATA->m_underlined); - // Bogus font - if (!font) - font = LoadQueryFont(120, wxDEFAULT, wxNORMAL, wxNORMAL, - M_FONTDATA->m_underlined); - wxASSERT_MSG( (font != (XFontStruct*) NULL), "Could not allocate even a default font -- something is wrong." ); - } - if (font) - { - wxXFont* f = new wxXFont; - f->m_fontStruct = font; - f->m_display = ( display ? display : wxGetDisplay() ); - f->m_scale = intScale; - f->m_fontList = XmFontListCreate ((XFontStruct*) font, XmSTRING_DEFAULT_CHARSET); - M_FONTDATA->m_fonts.Append(f); - return f; - } - return (wxXFont*) NULL; -} - -WXFontStructPtr wxFont::LoadQueryFont(int pointSize, int family, int style, - int weight, bool underlined) const -{ - char *xfamily; - char *xstyle; - char *xweight; - switch (family) - { - case wxDECORATIVE: xfamily = "lucida"; - break; - case wxROMAN: xfamily = "times"; - break; - case wxMODERN: xfamily = "courier"; - break; - case wxSWISS: xfamily = "lucida"; - break; - case wxDEFAULT: - default: xfamily = "*"; - } - switch (style) - { - case wxITALIC: xstyle = "i"; - break; - case wxSLANT: xstyle = "o"; - break; - case wxNORMAL: xstyle = "r"; - break; - default: xstyle = "*"; - break; - } - switch (weight) - { - case wxBOLD: xweight = "bold"; - break; - case wxLIGHT: - case wxNORMAL: xweight = "medium"; - break; - default: xweight = "*"; - break; - } - - sprintf(wxBuffer, "-*-%s-%s-%s-normal-*-*-%d-*-*-*-*-*-*", - xfamily, xweight, xstyle, pointSize); - - Display *dpy = (Display*) wxGetDisplay(); - XFontStruct* font = XLoadQueryFont(dpy, wxBuffer); - - return (WXFontStructPtr) font; -} diff --git a/src/motif/fontdlg.cpp b/src/motif/fontdlg.cpp deleted file mode 100644 index f7ebeed956..0000000000 --- a/src/motif/fontdlg.cpp +++ /dev/null @@ -1,55 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: fontdlg.cpp -// Purpose: wxFontDialog class. NOTE: you can use the generic class -// if you wish, instead of implementing this. -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "fontdlg.h" -#endif - -#include "wx/motif/fontdlg.h" -#include "wx/cmndata.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxFontDialog, wxDialog) -#endif - -/* - * wxFontDialog - */ - -wxFontDialog::wxFontDialog() -{ - m_dialogParent = NULL; -} - -wxFontDialog::wxFontDialog(wxWindow *parent, wxFontData *data) -{ - Create(parent, data); -} - -bool wxFontDialog::Create(wxWindow *parent, wxFontData *data) -{ - m_dialogParent = parent; - - if (data) - m_fontData = *data; - - // TODO: you may need to do dialog creation here, unless it's - // done in ShowModal. - return TRUE; -} - -int wxFontDialog::ShowModal() -{ - // TODO: show (maybe create) the dialog - return wxID_CANCEL; -} - diff --git a/src/motif/frame.cpp b/src/motif/frame.cpp deleted file mode 100644 index 4ea8a6716e..0000000000 --- a/src/motif/frame.cpp +++ /dev/null @@ -1,1118 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: frame.cpp -// Purpose: wxFrame -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "frame.h" -#endif - -#include "wx/frame.h" -#include "wx/statusbr.h" -#include "wx/toolbar.h" -#include "wx/menuitem.h" -#include "wx/menu.h" -#include "wx/dcclient.h" -#include "wx/dialog.h" -#include "wx/settings.h" -#include "wx/app.h" -#include "wx/utils.h" - -#if defined(__ultrix) || defined(__sgi) -#include -#endif - -#include -#include -#if XmVersion >= 1002 -#include -#else -#include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if XmVersion > 1000 -#include -#endif - -#include "wx/motif/private.h" - -void wxCloseFrameCallback(Widget, XtPointer, XmAnyCallbackStruct *cbs); -void wxFrameFocusProc(Widget workArea, XtPointer clientData, - XmAnyCallbackStruct *cbs); -static void wxFrameMapProc(Widget frameShell, XtPointer clientData, - XCrossingEvent * event); - -extern wxList wxModelessWindows; -extern wxList wxPendingDelete; - -// TODO: this should be tidied so that any frame can be the -// top frame -static bool wxTopLevelUsed = FALSE; - -#if !USE_SHARED_LIBRARY -BEGIN_EVENT_TABLE(wxFrame, wxWindow) -EVT_SIZE(wxFrame::OnSize) -EVT_ACTIVATE(wxFrame::OnActivate) -EVT_MENU_HIGHLIGHT_ALL(wxFrame::OnMenuHighlight) -EVT_SYS_COLOUR_CHANGED(wxFrame::OnSysColourChanged) -EVT_IDLE(wxFrame::OnIdle) -EVT_CLOSE(wxFrame::OnCloseWindow) -END_EVENT_TABLE() - -IMPLEMENT_DYNAMIC_CLASS(wxFrame, wxWindow) -#endif - -#if wxUSE_NATIVE_STATUSBAR -bool wxFrame::m_useNativeStatusBar = TRUE; -#else -bool wxFrame::m_useNativeStatusBar = FALSE; -#endif - -wxFrame::wxFrame() -{ -#if wxUSE_TOOLBAR - m_frameToolBar = NULL ; -#endif // wxUSE_TOOLBAR - - m_frameMenuBar = NULL; - m_frameStatusBar = NULL; - - m_windowParent = NULL; - m_iconized = FALSE; - - //// Motif-specific - m_frameShell = (WXWidget) NULL; - m_frameWidget = (WXWidget) NULL;; - m_workArea = (WXWidget) NULL;; - m_clientArea = (WXWidget) NULL;; - m_visibleStatus = TRUE; - m_title = ""; -} - -bool wxFrame::Create(wxWindow *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - if (!parent) - wxTopLevelWindows.Append(this); - - SetName(name); - - m_windowStyle = style; - m_frameMenuBar = NULL; -#if wxUSE_TOOLBAR - m_frameToolBar = NULL ; -#endif // wxUSE_TOOLBAR - m_frameStatusBar = NULL; - - //// Motif-specific - m_frameShell = (WXWidget) NULL; - m_frameWidget = (WXWidget) NULL;; - m_workArea = (WXWidget) NULL;; - m_clientArea = (WXWidget) NULL;; - m_visibleStatus = TRUE; - m_title = ""; - - m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE); - m_foregroundColour = *wxBLACK; - m_windowFont = wxSystemSettings::GetSystemFont(wxSYS_DEFAULT_GUI_FONT); - - if ( id > -1 ) - m_windowId = id; - else - m_windowId = (int)NewControlId(); - - if (parent) parent->AddChild(this); - - wxModelessWindows.Append(this); - - int x = pos.x; int y = pos.y; - int width = size.x; int height = size.y; - - if (wxTopLevelUsed) - // Change suggested by Matthew Flatt - m_frameShell = (WXWidget) XtAppCreateShell(name, wxTheApp->GetClassName(), topLevelShellWidgetClass, (Display*) wxGetDisplay(), NULL, 0); - else - { - m_frameShell = wxTheApp->GetTopLevelWidget(); - wxTopLevelUsed = TRUE; - } - - XtVaSetValues((Widget) m_frameShell, - // Allows menu to resize - XmNallowShellResize, True, - XmNdeleteResponse, XmDO_NOTHING, - XmNmappedWhenManaged, False, - XmNiconic, (style & wxICONIZE) ? TRUE : FALSE, - NULL); - - if (!title.IsNull()) - XtVaSetValues((Widget) m_frameShell, - XmNtitle, (const char*) title, - NULL); - - m_frameWidget = (WXWidget) XtVaCreateManagedWidget("main_window", - xmMainWindowWidgetClass, (Widget) m_frameShell, - XmNresizePolicy, XmRESIZE_NONE, - NULL); - - m_workArea = (WXWidget) XtVaCreateWidget("form", - xmFormWidgetClass, (Widget) m_frameWidget, - XmNresizePolicy, XmRESIZE_NONE, - NULL); - - m_clientArea = (WXWidget) XtVaCreateWidget("client", - xmBulletinBoardWidgetClass, (Widget) m_workArea, - XmNmarginWidth, 0, - XmNmarginHeight, 0, - XmNrightAttachment, XmATTACH_FORM, - XmNleftAttachment, XmATTACH_FORM, - XmNtopAttachment, XmATTACH_FORM, - XmNbottomAttachment, XmATTACH_FORM, - // XmNresizePolicy, XmRESIZE_ANY, - NULL); - - XtVaSetValues((Widget) m_frameWidget, - XmNworkWindow, (Widget) m_workArea, - NULL); - - - XtManageChild((Widget) m_clientArea); - XtManageChild((Widget) m_workArea); - - wxASSERT_MSG ((wxWidgetHashTable->Get((long)m_workArea) == (wxObject*) NULL), "Widget table clash in frame.cpp") ; - - wxAddWindowToTable((Widget) m_workArea, this); - - XtTranslations ptr ; - - XtOverrideTranslations((Widget) m_workArea, - ptr = XtParseTranslationTable(": resize()")); - - XtFree((char *)ptr); - - XtAddCallback((Widget) m_workArea, XmNfocusCallback, - (XtCallbackProc)wxFrameFocusProc, (XtPointer)this); - - /* Part of show-&-hide fix */ - XtAddEventHandler((Widget) m_frameShell, StructureNotifyMask, - False, (XtEventHandler)wxFrameMapProc, - (XtPointer)m_workArea); - - if (x > -1) - XtVaSetValues((Widget) m_frameShell, XmNx, x, NULL); - if (y > -1) - XtVaSetValues((Widget) m_frameShell, XmNy, y, NULL); - if (width > -1) - XtVaSetValues((Widget) m_frameShell, XmNwidth, width, NULL); - if (height > -1) - XtVaSetValues((Widget) m_frameShell, XmNheight, height, NULL); - - m_mainWidget = m_frameWidget; - - ChangeFont(FALSE); - - // This patch comes from Torsten Liermann lier@lier1.muc.de - if (XmIsMotifWMRunning( (Widget) m_frameShell )) - { - int decor = 0 ; - if (style & wxRESIZE_BORDER) - decor |= MWM_DECOR_RESIZEH ; - if (style & wxSYSTEM_MENU) - decor |= MWM_DECOR_MENU; - if ((style & wxCAPTION) || - (style & wxTINY_CAPTION_HORIZ) || - (style & wxTINY_CAPTION_VERT)) - decor |= MWM_DECOR_TITLE; - if (style & wxTHICK_FRAME) - decor |= MWM_DECOR_BORDER; - if (style & wxTHICK_FRAME) - decor |= MWM_DECOR_BORDER; - if (style & wxMINIMIZE_BOX) - decor |= MWM_DECOR_MINIMIZE; - if (style & wxMAXIMIZE_BOX) - decor |= MWM_DECOR_MAXIMIZE; - XtVaSetValues((Widget) m_frameShell,XmNmwmDecorations,decor,NULL) ; - } - // This allows non-Motif window managers to support at least the - // no-decorations case. - else - { - if (style == 0) - XtVaSetValues((Widget) m_frameShell,XmNoverrideRedirect,TRUE,NULL); - } - XtRealizeWidget((Widget) m_frameShell); - - // Intercept CLOSE messages from the window manager - Atom WM_DELETE_WINDOW = XmInternAtom(XtDisplay((Widget) m_frameShell), "WM_DELETE_WINDOW", False); -#if (XmREVISION > 1 || XmVERSION > 1) - XmAddWMProtocolCallback((Widget) m_frameShell, WM_DELETE_WINDOW, (XtCallbackProc) wxCloseFrameCallback, (XtPointer)this); -#else -#if XmREVISION == 1 - XmAddWMProtocolCallback((Widget) m_frameShell, WM_DELETE_WINDOW, (XtCallbackProc) wxCloseFrameCallback, (caddr_t)this); -#else - XmAddWMProtocolCallback((Widget) m_frameShell, WM_DELETE_WINDOW, (void (*)())wxCloseFrameCallback, (caddr_t)this); -#endif -#endif - - ChangeBackgroundColour(); - - PreResize(); - - wxSizeEvent sizeEvent(wxSize(width, height), GetId()); - sizeEvent.SetEventObject(this); - - GetEventHandler()->ProcessEvent(sizeEvent); - - return TRUE; -} - -wxFrame::~wxFrame() -{ - if (GetMainWidget()) - Show(FALSE); - - if (m_frameMenuBar) - { - m_frameMenuBar->DestroyMenuBar(); - - // Hack to stop core dump on Ultrix, OSF, for some strange reason. -#if MOTIF_MENUBAR_DELETE_FIX - GetMenuBar()->SetMainWidget((WXWidget) NULL); -#endif - delete m_frameMenuBar; - m_frameMenuBar = NULL; - } - - wxTopLevelWindows.DeleteObject(this); - wxModelessWindows.DeleteObject(this); - - if (m_frameStatusBar) - delete m_frameStatusBar; - - DestroyChildren(); - - /* - int i; - for (i = 0; i < wxMAX_STATUS; i++) - if (statusTextWidget[i]) - XtDestroyWidget (statusTextWidget[i]); - - if (statusLineForm) - XtDestroyWidget (statusLineForm); - - if (statusLineWidget) - XtDestroyWidget (statusLineWidget); - */ - - if (m_workArea) - { - wxDeleteWindowFromTable((Widget) m_workArea); - - XtDestroyWidget ((Widget) m_workArea); - } - - if (m_frameWidget) - { - wxDeleteWindowFromTable((Widget) m_frameWidget); - XtDestroyWidget ((Widget) m_frameWidget); - } - - if (m_frameShell) - XtDestroyWidget ((Widget) m_frameShell); - - SetMainWidget((WXWidget) NULL); - - /* Check if it's the last top-level window */ - - if (wxTheApp && (wxTopLevelWindows.Number() == 0)) - { - wxTheApp->SetTopWindow(NULL); - - if (wxTheApp->GetExitOnFrameDelete()) - { - // Signal to the app that we're going to close - wxTheApp->ExitMainLoop(); - } - } - -} - -// Get size *available for subwindows* i.e. excluding menu bar, toolbar etc. -void wxFrame::GetClientSize(int *x, int *y) const -{ - Dimension xx, yy; - XtVaGetValues((Widget) m_workArea, XmNwidth, &xx, XmNheight, &yy, NULL); - - if (m_frameStatusBar) - { - int sbw, sbh; - m_frameStatusBar->GetSize(& sbw, & sbh); - yy -= sbh; - } -#if wxUSE_TOOLBAR - if (m_frameToolBar) - { - int tbw, tbh; - m_frameToolBar->GetSize(& tbw, & tbh); - if (m_frameToolBar->GetWindowStyleFlag() & wxTB_VERTICAL) - xx -= tbw; - else - yy -= tbh; - } -#endif // wxUSE_TOOLBAR - /* - if (GetMenuBar() != (wxMenuBar*) NULL) - { - // it seems that if a frame holds a panel, the menu bar size - // gets automatically taken care of --- grano@cs.helsinki.fi 4.4.95 - bool hasSubPanel = FALSE; - for(wxNode* node = GetChildren().First(); node; node = node->Next()) - { - wxWindow *win = (wxWindow *)node->Data(); - hasSubPanel = (win->IsKindOf(CLASSINFO(wxPanel)) && !win->IsKindOf(CLASSINFO(wxDialog))); - - if (hasSubPanel) - break; - } - if (! hasSubPanel) { - Dimension ys; - XtVaGetValues((Widget) GetMenuBarWidget(), XmNheight, &ys, NULL); - yy -= ys; - } - } - */ - - *x = xx; *y = yy; -} - -// Set the client size (i.e. leave the calculation of borders etc. -// to wxWindows) -void wxFrame::SetClientSize(int width, int height) -{ - // Calculate how large the new main window should be - // by finding the difference between the client area and the - // main window area, and adding on to the new client area - if (width > -1) - XtVaSetValues((Widget) m_workArea, XmNwidth, width, NULL); - - if (height > -1) - { - if (m_frameStatusBar) - { - int sbw, sbh; - m_frameStatusBar->GetSize(& sbw, & sbh); - height += sbh; - } -#if wxUSE_TOOLBAR - if (m_frameToolBar) - { - int tbw, tbh; - m_frameToolBar->GetSize(& tbw, & tbh); - if (m_frameToolBar->GetWindowStyleFlag() & wxTB_VERTICAL) - width += tbw; - else - height += tbh; - } -#endif // wxUSE_TOOLBAR - - XtVaSetValues((Widget) m_workArea, XmNheight, height, NULL); - } - PreResize(); - - wxSizeEvent sizeEvent(wxSize(width, height), GetId()); - sizeEvent.SetEventObject(this); - - GetEventHandler()->ProcessEvent(sizeEvent); - -} - -void wxFrame::GetSize(int *width, int *height) const -{ - Dimension xx, yy; - XtVaGetValues((Widget) m_frameShell, XmNwidth, &xx, XmNheight, &yy, NULL); - *width = xx; *height = yy; -} - -void wxFrame::GetPosition(int *x, int *y) const -{ - Window parent_window = XtWindow((Widget) m_frameShell), - next_parent = XtWindow((Widget) m_frameShell), - root = RootWindowOfScreen(XtScreen((Widget) m_frameShell)); - - // search for the parent that is child of ROOT, because the WM may - // reparent twice and notify only the next parent (like FVWM) - while (next_parent != root) { - Window *theChildren; unsigned int n; - parent_window = next_parent; - XQueryTree(XtDisplay((Widget) m_frameShell), parent_window, &root, - &next_parent, &theChildren, &n); - XFree(theChildren); // not needed - } - int xx, yy; unsigned int dummy; - XGetGeometry(XtDisplay((Widget) m_frameShell), parent_window, &root, - &xx, &yy, &dummy, &dummy, &dummy, &dummy); - if (x) *x = xx; - if (y) *y = yy; -} - -void wxFrame::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - if (x > -1) - XtVaSetValues((Widget) m_frameShell, XmNx, x, NULL); - if (y > -1) - XtVaSetValues((Widget) m_frameShell, XmNy, y, NULL); - if (width > -1) - XtVaSetValues((Widget) m_frameWidget, XmNwidth, width, NULL); - if (height > -1) - XtVaSetValues((Widget) m_frameWidget, XmNheight, height, NULL); - - if (!(height == -1 && width == -1)) - { - PreResize(); - - wxSizeEvent sizeEvent(wxSize(width, height), GetId()); - sizeEvent.SetEventObject(this); - - GetEventHandler()->ProcessEvent(sizeEvent); - } -} - -bool wxFrame::Show(bool show) -{ - if (!m_frameShell) - return wxWindow::Show(show); - - m_visibleStatus = show; /* show-&-hide fix */ - - m_isShown = show; - if (show) { - XtMapWidget((Widget) m_frameShell); - XRaiseWindow(XtDisplay((Widget) m_frameShell), XtWindow((Widget) m_frameShell)); - } else { - XtUnmapWidget((Widget) m_frameShell); - // XmUpdateDisplay(wxTheApp->topLevel); // Experimental: may be responsible for crashes - } - return TRUE; -} - -void wxFrame::Iconize(bool iconize) -{ - if (!iconize) - Show(TRUE); - - if (m_frameShell) - XtVaSetValues((Widget) m_frameShell, XmNiconic, (Boolean)iconize, NULL); -} - -// Equivalent to maximize/restore in Windows -void wxFrame::Maximize(bool maximize) -{ - Show(TRUE); - - if (maximize && m_frameShell) - XtVaSetValues((Widget) m_frameShell, XmNiconic, FALSE, NULL); -} - -bool wxFrame::IsIconized() const -{ - if (!m_frameShell) - return FALSE; - - Boolean iconic; - XtVaGetValues((Widget) m_frameShell, XmNiconic, &iconic, NULL); - return iconic; -} - -// Is it maximized? -bool wxFrame::IsMaximized(void) const -{ - // No maximizing in Motif (?) - return FALSE; -} - -void wxFrame::SetTitle(const wxString& title) -{ - if (title == m_title) - return; - - m_title = title; - - if (!title.IsNull()) - XtVaSetValues((Widget) m_frameShell, - XmNtitle, (const char*) title, - XmNiconName, (const char*) title, - NULL); -} - -void wxFrame::SetIcon(const wxIcon& icon) -{ - m_icon = icon; - - if (!m_frameShell) - return; - - if (!icon.Ok() || !icon.GetPixmap()) - return; - - XtVaSetValues((Widget) m_frameShell, XtNiconPixmap, icon.GetPixmap(), NULL); -} - -wxStatusBar *wxFrame::OnCreateStatusBar(int number, long style, wxWindowID id, - const wxString& name) -{ - wxStatusBar *statusBar = NULL; - - statusBar = new wxStatusBar(this, id, wxPoint(0, 0), wxSize(100, 20), - style, name); - - // Set the height according to the font and the border size - wxClientDC dc(statusBar); - dc.SetFont(statusBar->GetFont()); - - long x, y; - dc.GetTextExtent("X", &x, &y); - - int height = (int)( (y * 1.1) + 2* statusBar->GetBorderY()); - - statusBar->SetSize(-1, -1, 100, height); - - statusBar->SetFieldsCount(number); - return statusBar; -} - -wxStatusBar* wxFrame::CreateStatusBar(int number, long style, wxWindowID id, - const wxString& name) -{ - // Calling CreateStatusBar twice is an error. - wxCHECK_MSG( m_frameStatusBar == NULL, FALSE, - "recreating status bar in wxFrame" ); - - m_frameStatusBar = OnCreateStatusBar(number, style, id, - name); - if ( m_frameStatusBar ) - { - PositionStatusBar(); - return m_frameStatusBar; - } - else - return NULL; -} - -void wxFrame::SetStatusText(const wxString& text, int number) -{ - wxCHECK_RET( m_frameStatusBar != NULL, "no statusbar to set text for" ); - - m_frameStatusBar->SetStatusText(text, number); -} - -void wxFrame::SetStatusWidths(int n, const int widths_field[]) -{ - wxCHECK_RET( m_frameStatusBar != NULL, "no statusbar to set widths for" ); - - m_frameStatusBar->SetStatusWidths(n, widths_field); - PositionStatusBar(); -} - -void wxFrame::PositionStatusBar() -{ - if (!m_frameStatusBar) - return; - - int w, h; - GetClientSize(&w, &h); - int sw, sh; - m_frameStatusBar->GetSize(&sw, &sh); - - // Since we wish the status bar to be directly under the client area, - // we use the adjusted sizes without using wxSIZE_NO_ADJUSTMENTS. - m_frameStatusBar->SetSize(0, h, w, sh); -} - -WXWidget wxFrame::GetMenuBarWidget() const -{ - if (GetMenuBar()) - return GetMenuBar()->GetMainWidget(); - else - return (WXWidget) NULL; -} - -void wxFrame::SetMenuBar(wxMenuBar *menuBar) -{ - if (!menuBar) - { - m_frameMenuBar = NULL; - return; - } - - // Currently can't set it twice - // wxASSERT_MSG( (m_frameMenuBar == (wxMenuBar*) NULL), "Cannot set the menubar more than once"); - - if (m_frameMenuBar) - { - m_frameMenuBar->DestroyMenuBar(); - delete m_frameMenuBar; - } - - m_frameMenuBar = menuBar; - m_frameMenuBar->CreateMenuBar(this); -} - -void wxFrame::Fit() -{ - // Work out max. size - wxNode *node = GetChildren().First(); - int max_width = 0; - int max_height = 0; - while (node) - { - // Find a child that's a subwindow, but not a dialog box. - wxWindow *win = (wxWindow *)node->Data(); - - if (!win->IsKindOf(CLASSINFO(wxFrame)) && - !win->IsKindOf(CLASSINFO(wxDialog))) - { - int width, height; - int x, y; - win->GetSize(&width, &height); - win->GetPosition(&x, &y); - - if ((x + width) > max_width) - max_width = x + width; - if ((y + height) > max_height) - max_height = y + height; - } - node = node->Next(); - } - SetClientSize(max_width, max_height); -} - -// Responds to colour changes, and passes event on to children. -void wxFrame::OnSysColourChanged(wxSysColourChangedEvent& event) -{ - SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE)); - Refresh(); - - if ( m_frameStatusBar ) - { - wxSysColourChangedEvent event2; - event2.SetEventObject( m_frameStatusBar ); - m_frameStatusBar->ProcessEvent(event2); - } - - // Propagate the event to the non-top-level children - wxWindow::OnSysColourChanged(event); -} - -// Default resizing behaviour - if only ONE subwindow, -// resize to client rectangle size -void wxFrame::OnSize(wxSizeEvent& event) -{ - // if we're using constraints - do use them -#if wxUSE_CONSTRAINTS - if ( GetAutoLayout() ) { - Layout(); - return; - } -#endif - - // do we have _exactly_ one child? - wxWindow *child = NULL; - for ( wxNode *node = GetChildren().First(); node; node = node->Next() ) - { - wxWindow *win = (wxWindow *)node->Data(); - if ( !win->IsKindOf(CLASSINFO(wxFrame)) && - !win->IsKindOf(CLASSINFO(wxDialog)) && - (win != GetStatusBar()) -#if wxUSE_TOOLBAR - && (win != GetToolBar()) -#endif // wxUSE_TOOLBAR - ) - { - if ( child ) - return; // it's our second subwindow - nothing to do - child = win; - } - } - - if ( child ) { - // we have exactly one child - set it's size to fill the whole frame - int clientW, clientH; - GetClientSize(&clientW, &clientH); - - int x = 0; - int y = 0; - - child->SetSize(x, y, clientW, clientH); - } -} - -// Default activation behaviour - set the focus for the first child -// subwindow found. -void wxFrame::OnActivate(wxActivateEvent& event) -{ - for(wxNode *node = GetChildren().First(); node; node = node->Next()) - { - // Find a child that's a subwindow, but not a dialog box. - wxWindow *child = (wxWindow *)node->Data(); - if (!child->IsKindOf(CLASSINFO(wxFrame)) && - !child->IsKindOf(CLASSINFO(wxDialog))) - { - child->SetFocus(); - return; - } - } -} - -// The default implementation for the close window event - calls -// OnClose for backward compatibility. - -void wxFrame::OnCloseWindow(wxCloseEvent& event) -{ - // Compatibility - if ( GetEventHandler()->OnClose() || event.GetForce()) - { - this->Destroy(); - } -} - -bool wxFrame::OnClose() -{ - return TRUE; -} - -// Destroy the window (delayed, if a managed window) -bool wxFrame::Destroy() -{ - if (!wxPendingDelete.Member(this)) - wxPendingDelete.Append(this); - return TRUE; -} - -// Default menu selection behaviour - display a help string -void wxFrame::OnMenuHighlight(wxMenuEvent& event) -{ - if (GetStatusBar()) - { - if (event.GetMenuId() == -1) - SetStatusText(""); - else - { - wxMenuBar *menuBar = GetMenuBar(); - if (menuBar) - { - wxString helpString(menuBar->GetHelpString(event.GetMenuId())); - if (helpString != "") - SetStatusText(helpString); - } - } - } -} - -wxMenuBar *wxFrame::GetMenuBar() const -{ - return m_frameMenuBar; -} - -void wxFrame::Centre(int direction) -{ - int display_width, display_height, width, height, x, y; - wxDisplaySize(&display_width, &display_height); - - GetSize(&width, &height); - GetPosition(&x, &y); - - if (direction & wxHORIZONTAL) - x = (int)((display_width - width)/2); - if (direction & wxVERTICAL) - y = (int)((display_height - height)/2); - - SetSize(x, y, width, height); -} - -// Call this to simulate a menu command -void wxFrame::Command(int id) -{ - ProcessCommand(id); -} - -void wxFrame::ProcessCommand(int id) -{ - wxCommandEvent commandEvent(wxEVT_COMMAND_MENU_SELECTED, id); - commandEvent.SetInt( id ); - commandEvent.SetEventObject( this ); - - wxMenuBar *bar = GetMenuBar() ; - if (!bar) - return; - -/* TODO: check the menu item if required - wxMenuItem *item = bar->FindItemForId(id) ; - if (item && item->IsCheckable()) - { - bar->Check(id,!bar->Checked(id)) ; - } -*/ - - GetEventHandler()->ProcessEvent(commandEvent); -} - -// Checks if there is a toolbar, and returns the first free client position -wxPoint wxFrame::GetClientAreaOrigin() const -{ - wxPoint pt(0, 0); -#if wxUSE_TOOLBAR - if (GetToolBar()) - { - int w, h; - GetToolBar()->GetSize(& w, & h); - - if (GetToolBar()->GetWindowStyleFlag() & wxTB_VERTICAL) - { - pt.x += w; - } - else - { - pt.y += h; - } - } -#endif // wxUSE_TOOLBAR - - return pt; -} - -void wxFrame::ScreenToClient(int *x, int *y) const -{ - wxWindow::ScreenToClient(x, y); - - // We may be faking the client origin. - // So a window that's really at (0, 30) may appear - // (to wxWin apps) to be at (0, 0). - wxPoint pt(GetClientAreaOrigin()); - *x -= pt.x; - *y -= pt.y; -} - -void wxFrame::ClientToScreen(int *x, int *y) const -{ - // We may be faking the client origin. - // So a window that's really at (0, 30) may appear - // (to wxWin apps) to be at (0, 0). - wxPoint pt1(GetClientAreaOrigin()); - *x += pt1.x; - *y += pt1.y; - - wxWindow::ClientToScreen(x, y); -} - -#if wxUSE_TOOLBAR -wxToolBar* wxFrame::CreateToolBar(long style, wxWindowID id, const wxString& name) -{ - wxCHECK_MSG( m_frameToolBar == NULL, FALSE, - "recreating toolbar in wxFrame" ); - - wxToolBar* toolBar = OnCreateToolBar(style, id, name); - if (toolBar) - { - SetToolBar(toolBar); - PositionToolBar(); - return toolBar; - } - else - { - return NULL; - } -} - -wxToolBar* wxFrame::OnCreateToolBar(long style, wxWindowID id, const wxString& name) -{ - return new wxToolBar(this, id, wxPoint(0, 0), wxSize(100, 24), style, name); -} - -void wxFrame::SetToolBar(wxToolBar *toolbar) -{ - m_frameToolBar = toolbar; -} - -wxToolBar *wxFrame::GetToolBar() const -{ - return m_frameToolBar; -} - -void wxFrame::PositionToolBar() -{ - int cw, ch; - - GetClientSize(& cw, &ch); - - if (GetToolBar()) - { - int tw, th; - GetToolBar()->GetSize(& tw, & th); - - if (GetToolBar()->GetWindowStyleFlag() & wxTB_VERTICAL) - { - // Use the 'real' position. wxSIZE_NO_ADJUSTMENTS - // means, pretend we don't have toolbar/status bar, so we - // have the original client size. - GetToolBar()->SetSize(0, 0, tw, ch + th, wxSIZE_NO_ADJUSTMENTS); - } - else - { - // Use the 'real' position - GetToolBar()->SetSize(0, 0, cw, th, wxSIZE_NO_ADJUSTMENTS); - } - } -} -#endif // wxUSE_TOOLBAR - -void wxFrame::CaptureMouse() -{ - if (m_winCaptured) - return; - - if (GetMainWidget()) - XtAddGrab((Widget) m_frameShell, TRUE, FALSE); - m_winCaptured = TRUE; -} - -void wxFrame::ReleaseMouse() -{ - if (!m_winCaptured) - return; - - if (GetMainWidget()) - XtRemoveGrab((Widget) m_frameShell); - m_winCaptured = FALSE; -} - -void wxFrame::Raise(void) -{ - Window parent_window = XtWindow((Widget) m_frameShell), - next_parent = XtWindow((Widget) m_frameShell), - root = RootWindowOfScreen(XtScreen((Widget) m_frameShell)); - // search for the parent that is child of ROOT, because the WM may - // reparent twice and notify only the next parent (like FVWM) - while (next_parent != root) { - Window *theChildren; unsigned int n; - parent_window = next_parent; - XQueryTree(XtDisplay((Widget) m_frameShell), parent_window, &root, - &next_parent, &theChildren, &n); - XFree(theChildren); // not needed - } - XRaiseWindow(XtDisplay((Widget) m_frameShell), parent_window); -} - -void wxFrame::Lower(void) -{ - Window parent_window = XtWindow((Widget) m_frameShell), - next_parent = XtWindow((Widget) m_frameShell), - root = RootWindowOfScreen(XtScreen((Widget) m_frameShell)); - // search for the parent that is child of ROOT, because the WM may - // reparent twice and notify only the next parent (like FVWM) - while (next_parent != root) { - Window *theChildren; unsigned int n; - parent_window = next_parent; - XQueryTree(XtDisplay((Widget) m_frameShell), parent_window, &root, - &next_parent, &theChildren, &n); - XFree(theChildren); // not needed - } - XLowerWindow(XtDisplay((Widget) m_frameShell), parent_window); -} - -void wxFrameFocusProc(Widget workArea, XtPointer clientData, - XmAnyCallbackStruct *cbs) -{ - wxFrame *frame = (wxFrame *)clientData; - - // wxDebugMsg("focus proc from frame %ld\n",(long)frame); - // TODO - // frame->GetEventHandler()->OnSetFocus(); -} - -/* MATTEW: Used to insure that hide-&-show within an event cycle works */ -static void wxFrameMapProc(Widget frameShell, XtPointer clientData, - XCrossingEvent * event) -{ - wxFrame *frame = (wxFrame *)wxWidgetHashTable->Get((long)clientData); - - if (frame) { - XEvent *e = (XEvent *)event; - - if (e->xany.type == MapNotify) - { - // Iconize fix - XtVaSetValues(frameShell, XmNiconic, (Boolean)False, NULL); - if (!frame->GetVisibleStatus()) - { - /* We really wanted this to be hidden! */ - XtUnmapWidget((Widget) frame->GetShellWidget()); - } - } - else if (e->xany.type == UnmapNotify) - // Iconize fix - XtVaSetValues(frameShell, XmNiconic, (Boolean)True, NULL); - } -} - -//// Motif-specific -bool wxFrame::PreResize() -{ -#if wxUSE_TOOLBAR - PositionToolBar(); -#endif // wxUSE_TOOLBAR - PositionStatusBar(); - return TRUE; -} - -WXWidget wxFrame::GetClientWidget() const -{ - return m_clientArea; -} - -void wxFrame::ChangeFont(bool keepOriginalSize) -{ - // TODO -} - -void wxFrame::ChangeBackgroundColour() -{ - if (GetClientWidget()) - DoChangeBackgroundColour(GetClientWidget(), m_backgroundColour); -} - -void wxFrame::ChangeForegroundColour() -{ - if (GetClientWidget()) - DoChangeForegroundColour(GetClientWidget(), m_foregroundColour); -} - -void wxCloseFrameCallback(Widget widget, XtPointer client_data, XmAnyCallbackStruct *cbs) -{ - wxFrame *frame = (wxFrame *)client_data; - - wxCloseEvent closeEvent(wxEVT_CLOSE_WINDOW, frame->GetId()); - closeEvent.SetEventObject(frame); - - // May delete the frame (with delayed deletion) - frame->GetEventHandler()->ProcessEvent(closeEvent); -} - diff --git a/src/motif/gauge.cpp b/src/motif/gauge.cpp deleted file mode 100644 index 73beaae217..0000000000 --- a/src/motif/gauge.cpp +++ /dev/null @@ -1,778 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: gauge.cpp -// Purpose: wxGauge class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "gauge.h" -#endif - -#include "wx/gauge.h" - -#include -#include - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxGauge, wxControl) -#endif - -// XmGauge copyright notice: - -/* -* Copyright 1994 GROUPE BULL -* -* Permission to use, copy, modify, and distribute this software and its -* documentation for any purpose and without fee is hereby granted, 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 GROUPE BULL not be used in advertising -* or publicity pertaining to distribution of the software without specific, -* written prior permission. GROUPE BULL makes no representations about the -* suitability of this software for any purpose. It is provided "as is" -* without express or implied warranty. -* -* GROUPE BULL disclaims all warranties with regard to this software, -* including all implied warranties of merchantability and fitness, -* in no event shall GROUPE BULL be liable for any special, -* indirect or consequential damages or any damages -* whatsoever resulting from loss of use, data or profits, -* whether in an action of contract, negligence or other tortious -* action, arising out of or in connection with the use -* or performance of this software. -* -*/ - -//// PUBLIC XMGAUGE DECLARATIONS -typedef struct _XmGaugeClassRec* XmGaugeWidgetClass; -typedef struct _XmGaugeRec* XmGaugeWidget; - -#ifdef __cplusplus -extern "C" WidgetClass xmGaugeWidgetClass; -#else -extern WidgetClass xmGaugeWidgetClass; -#endif - -typedef struct _XmGaugeCallbackStruct{ - int reason; - XEvent *event; - int value; -} XmGaugeCallbackStruct; - - -void -XmGaugeSetValue(Widget w, int value); - -int -XmGaugeGetValue(Widget w); - - - -bool wxGauge::Create(wxWindow *parent, wxWindowID id, - int range, - const wxPoint& pos, - const wxSize& size, - long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); - SetValidator(validator); - m_rangeMax = range; - m_windowStyle = style; - m_backgroundColour = parent->GetBackgroundColour(); - m_foregroundColour = parent->GetForegroundColour(); - - if (parent) parent->AddChild(this); - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - Widget parentWidget = (Widget) parent->GetClientWidget(); - - Arg args[4]; - int count = 4; - if (style & wxHORIZONTAL) - { - XtSetArg (args[0], XmNorientation, XmHORIZONTAL); - XtSetArg (args[1], XmNprocessingDirection, XmMAX_ON_RIGHT); - } - else - { - XtSetArg (args[0], XmNorientation, XmVERTICAL); - XtSetArg (args[1], XmNprocessingDirection, XmMAX_ON_TOP); - } - XtSetArg(args[2], XmNminimum, 0); - XtSetArg(args[3], XmNmaximum, range); - Widget gaugeWidget = XtCreateManagedWidget("gauge", xmGaugeWidgetClass, parentWidget, args, count); - m_mainWidget = (WXWidget) gaugeWidget ; - - XtManageChild (gaugeWidget); - - int x = pos.x; int y = pos.y; - int width = size.x; int height = size.y; - if (width == -1) - width = 150; - if (height == -1) - height = 80; - - m_windowFont = parent->GetFont(); - ChangeFont(FALSE); - - SetCanAddEventHandler(TRUE); - AttachWidget (parent, m_mainWidget, (WXWidget) NULL, x, y, width, height); - - ChangeBackgroundColour(); - - return TRUE; -} - -void wxGauge::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - wxControl::SetSize(x, y, width, height, sizeFlags); -} - -void wxGauge::SetShadowWidth(int w) -{ - if (w == 0) - w = 1; - XtVaSetValues((Widget) m_mainWidget, XmNshadowThickness, w, NULL); -} - -void wxGauge::SetBezelFace(int w) -{ -} - -void wxGauge::SetRange(int r) -{ - m_rangeMax = r; - XtVaSetValues((Widget) m_mainWidget, XmNmaximum, r, NULL); -} - -void wxGauge::SetValue(int pos) -{ - m_gaugePos = pos; - XtVaSetValues((Widget) m_mainWidget, XmNvalue, pos, NULL); -} - -int wxGauge::GetShadowWidth() const -{ - Dimension w; - XtVaGetValues((Widget) m_mainWidget, XmNshadowThickness, &w, NULL); - return (int)w; -} - -int wxGauge::GetBezelFace() const -{ - return 0; -} - -int wxGauge::GetRange() const -{ - int r; - XtVaGetValues((Widget) m_mainWidget, XmNmaximum, &r, NULL); - return (int)r; - // return m_rangeMax; -} - -int wxGauge::GetValue() const -{ - int pos; - XtVaGetValues((Widget) m_mainWidget, XmNvalue, &pos, NULL); - return pos; - // return m_gaugePos; -} - -void wxGauge::ChangeFont(bool keepOriginalSize) -{ - wxWindow::ChangeFont(keepOriginalSize); -} - -void wxGauge::ChangeBackgroundColour() -{ - wxWindow::ChangeBackgroundColour(); -} - -void wxGauge::ChangeForegroundColour() -{ - wxWindow::ChangeForegroundColour(); -} - -//// PRIVATE DECLARATIONS FOR XMGAUGE - -#include -#include - -typedef struct { - int empty; -} XmGaugeClassPart; - -typedef struct _XmGaugeClassRec { - CoreClassPart core_class; - XmPrimitiveClassPart primitive_class; - XmGaugeClassPart gauge_class; -} XmGaugeClassRec; - - -typedef struct _XmGaugePart{ - int value; - int minimum; - int maximum; - unsigned char orientation; - unsigned char processingDirection; - - XtCallbackList dragCallback; - XtCallbackList valueChangedCallback; - - /* private fields */ - Boolean dragging; /* drag in progress ? */ - int oldx, oldy; - GC gc; -} XmGaugePart; - - -typedef struct _XmGaugeRec { - CorePart core; - XmPrimitivePart primitive; - XmGaugePart gauge; -} XmGaugeRec; - -extern XmGaugeClassRec xmGaugeClassRec; - -/* Copyright 1994 GROUPE BULL -- See license conditions in file COPYRIGHT */ - -//// XMGAUGE IMPLEMENTATION - -void -GaugePick(Widget w, XEvent *e, String *args, Cardinal *num_args); -void -GaugeDrag(Widget w, XEvent *e, String *args, Cardinal *num_args); -void -GaugeDrop(Widget w, XEvent *e, String *args, Cardinal *num_args); - - - -static char translations[] = -": GaugePick()\n\ - : GaugeDrag()\n\ - : GaugeDrop()\n\ - "; - - - -static XtActionsRec actions[] = { - {"GaugePick", GaugePick}, - {"GaugeDrag", GaugeDrag}, - {"GaugeDrop", GaugeDrop}, -}; - -static void -DrawSlider(XmGaugeWidget gw, Boolean clear) -{ -#define THIS gw->gauge - int size, sht; - float ratio; - /***chubraev - char string[20]; - int len; - unsigned long backgr,foregr; - XRectangle rects[1]; - ***/ - - sht = gw->primitive.shadow_thickness; - - ratio = (float)THIS.value/ - (float)(THIS.maximum - THIS.minimum); - /***chubraev - sprintf(string,"%-d%%",(int)(ratio*100)); - len=strlen(string); - XtVaGetValues(gw,XmNbackground,&backgr,XmNforeground,&foregr,NULL); - ***/ - - if(clear) { - XClearArea(XtDisplay(gw), XtWindow(gw), sht, sht, - gw->core.width - 2 * sht, gw->core.height - 2 * sht, False); - } - switch(THIS.orientation) { - case XmHORIZONTAL: - size = (int) ((gw->core.width - 2 * sht)*ratio); - /***chubraev - XDrawString(XtDisplay(gw), XtWindow(gw), THIS.gc, sht+gw->core.width/2, - gw->core.height - 2 * sht, string, len); - ***/ - switch(THIS.processingDirection) { - case XmMAX_ON_RIGHT: - case XmMAX_ON_BOTTOM: - XFillRectangle(XtDisplay(gw), XtWindow(gw), THIS.gc, - sht, sht, size, gw->core.height - 2 * sht); - - /***chubraev - rects[0].x = sht; rects[0].y = sht; - rects[0].width = size; rects[0].height = gw->core.height - 2 * sht; - ***/ - break; - case XmMAX_ON_LEFT: - case XmMAX_ON_TOP: - XFillRectangle(XtDisplay(gw), XtWindow(gw), THIS.gc, - gw->core.width - size - sht, sht, - size, gw->core.height - 2 * sht); - - /***chubraev - rects[0].x = gw->core.width - size - sht; rects[0].y = sht; - rects[0].width = size; rects[0].height = gw->core.height - 2 * sht; - ***/ - break; - } - /***chubraev - XSetClipRectangles(XtDisplay(gw), THIS.gc, 0, 0, rects, 1, Unsorted); - XSetForeground(XtDisplay(gw), THIS.gc, backgr); - XDrawString(XtDisplay(gw), XtWindow(gw), THIS.gc, sht+gw->core.width/2, - gw->core.height - 2 * sht, string, len); - ***/ - - break; - case XmVERTICAL: - size = (int) ((gw->core.height - 2 * sht)*ratio); - /***chubraev - XDrawString(XtDisplay(gw), XtWindow(gw), THIS.gc, sht, - sht+gw->core.height/2, string,len); - ***/ - switch(THIS.processingDirection) { - case XmMAX_ON_RIGHT: - case XmMAX_ON_BOTTOM: - XFillRectangle(XtDisplay(gw), XtWindow(gw), THIS.gc, - sht, sht, gw->core.width - 2 * sht, size); - - /***chubraev - rects[0].x = sht; rects[0].y = sht; - rects[0].width = gw->core.width - 2 * sht; rects[0].height = size; - ***/ - break; - case XmMAX_ON_LEFT: - case XmMAX_ON_TOP: - XFillRectangle(XtDisplay(gw), XtWindow(gw), THIS.gc, - sht, gw->core.height - size - sht, - gw->core.width - 2 * sht, size); - - /***chubraev - rects[0].x = sht; rects[0].y = gw->core.height - size - sht; - rects[0].width = gw->core.width - 2 * sht; rects[0].height = size; - ***/ - } - /***chubraev - XSetClipRectangles(XtDisplay(gw), THIS.gc, 0, 0, rects, 1, Unsorted); - XSetForeground(XtDisplay(gw), THIS.gc, backgr); - XDrawString(XtDisplay(gw), XtWindow(gw), THIS.gc, sht, - sht+gw->core.height/2, string,len); - ***/ - break; - } - /***chubraev - XSetClipMask(XtDisplay(gw), THIS.gc, None); - XSetForeground(XtDisplay(gw), THIS.gc, foregr); - ***/ -#undef THIS -} - -/* Old code -*/ -#if 0 -static void -DrawSlider(XmGaugeWidget gw, Boolean clear) -{ -#define THIS gw->gauge - int size, sht; - /* float ratio; */ - - sht = gw->primitive.shadow_thickness; - /* See fix comment below: can cause divide by zero error. - ratio = (float)((float)THIS.maximum - - (float)THIS.minimum) / (float)THIS.value; - */ - if(clear) { - XClearArea(XtDisplay(gw), XtWindow(gw), sht, sht, - gw->core.width - 2 * sht, gw->core.height - 2 * sht, False); - } - switch(THIS.orientation) { - case XmHORIZONTAL: - /* size = (gw->core.width - 2 * sht) / ratio; */ - /* A fix suggested by Dmitri Chubraev */ - size = (gw->core.width - 2 * sht) /((float)THIS.maximum-(float)THIS.minimum)*(float)THIS.value; - switch(THIS.processingDirection) { - case XmMAX_ON_RIGHT: - case XmMAX_ON_BOTTOM: - XFillRectangle(XtDisplay(gw), XtWindow(gw), THIS.gc, - sht, sht, size, gw->core.height - 2 * sht); - break; - case XmMAX_ON_LEFT: - case XmMAX_ON_TOP: - XFillRectangle(XtDisplay(gw), XtWindow(gw), THIS.gc, - gw->core.width - size - sht, sht, - size, gw->core.height - 2 * sht); - break; - } - break; - case XmVERTICAL: - size = (gw->core.height - 2 * sht) /((float)THIS.maximum-(float)THIS.minimum)*(float)THIS.value; - /* size = (gw->core.height - 2 * sht)/ ratio; */ - switch(THIS.processingDirection) { - case XmMAX_ON_RIGHT: - case XmMAX_ON_BOTTOM: - XFillRectangle(XtDisplay(gw), XtWindow(gw), THIS.gc, - sht, sht, gw->core.width - 2 * sht, size); - break; - case XmMAX_ON_LEFT: - case XmMAX_ON_TOP: - XFillRectangle(XtDisplay(gw), XtWindow(gw), THIS.gc, - sht, gw->core.height - size - sht, - gw->core.width - 2 * sht, size); - } - break; - } -#undef THIS -} -#endif - -static void -Initialize(Widget req, Widget new_w, ArgList args, Cardinal *num_args ) -{ - XmGaugeWidget gw = (XmGaugeWidget)new_w; -#define THIS gw->gauge - XGCValues values; - - values.foreground = gw->primitive.foreground; - THIS.gc = XtGetGC(new_w, GCForeground, &values); - -#undef THIS - -} - - - -static void -Destroy(Widget w) -{ - XmGaugeWidget gw = (XmGaugeWidget)w; -#define THIS gw->gauge - XtReleaseGC(w, THIS.gc); -#undef THIS -} - - - - -static Boolean -SetValues( - Widget cw, - Widget rw, - Widget nw, - ArgList args, - Cardinal *num_args ) -{ - XmGaugeWidget cgw = (XmGaugeWidget)cw; - XmGaugeWidget ngw = (XmGaugeWidget)nw; - - Boolean redraw = False; - if(cgw->primitive.foreground != ngw->primitive.foreground) { - XGCValues values; - - redraw = True; - XtReleaseGC(nw, ngw->gauge.gc); - values.foreground = ngw->primitive.foreground; - ngw->gauge.gc = XtGetGC(nw, GCForeground, &values); - } - if(cgw->gauge.value != ngw->gauge.value) { - redraw = True; - } - return redraw; -} - - - - -static void -ExposeProc(Widget w, XEvent *event, Region r) -{ - XmGaugeWidget gw = (XmGaugeWidget)w; -#define THIS gw->gauge - int sht; - - sht = gw->primitive.shadow_thickness; - _XmDrawShadows(XtDisplay(w), XtWindow(w), - gw->primitive.top_shadow_GC, - gw->primitive.bottom_shadow_GC, - 0, 0, w->core.width, w->core.height, - sht, XmSHADOW_IN); - DrawSlider(gw, False); -#undef THIS -} - - - - - -static XtResource -resources[] = { -#define offset(field) XtOffset(XmGaugeWidget, gauge.field) - {XmNvalue, XmCValue, XtRInt, sizeof(int), - offset(value), XtRImmediate, (caddr_t)10}, - - {XmNminimum, XmCValue, XtRInt, sizeof(int), - offset(minimum), XtRImmediate, (caddr_t)0}, - - {XmNmaximum, XmCValue, XtRInt, sizeof(int), - offset(maximum), XtRImmediate, (caddr_t)100}, - - {XmNorientation, XmCOrientation, XmROrientation, sizeof(unsigned char), - offset(orientation), XtRImmediate, (caddr_t)XmVERTICAL}, - - {XmNprocessingDirection, XmCProcessingDirection, - XmRProcessingDirection, sizeof(unsigned char), - offset(processingDirection), XtRImmediate, (caddr_t)XmMAX_ON_RIGHT}, - - {XmNdragCallback, XmCCallback, XmRCallback, sizeof(XtCallbackList), - offset(dragCallback), XtRImmediate, (caddr_t)NULL}, - - {XmNvalueChangedCallback, XmCCallback, XmRCallback, sizeof(XtCallbackList), - offset(valueChangedCallback), XtRImmediate, (caddr_t)NULL}, - - -#undef offset -}; - - -XmGaugeClassRec xmGaugeClassRec = { - { /* core fields */ - (WidgetClass) &xmPrimitiveClassRec, /* superclass */ - "XmGauge", /* class_name */ - sizeof(XmGaugeRec), /* widget_size */ - NULL, /* class_initialize */ - NULL, /* class_part_initialize */ - FALSE, /* class_inited */ - Initialize, /* initialize */ - NULL, /* initialize_hook */ - XtInheritRealize, /* realize */ - actions, /* actions */ - XtNumber(actions), /* num_actions */ - resources, /* resources */ - XtNumber(resources), /* num_resources */ - NULLQUARK, /* xrm_class */ - TRUE, /* compress_motion */ - TRUE, /* compress_exposure */ - TRUE, /* compress_enterleave */ - FALSE, /* visible_interest */ - Destroy, /* destroy */ - NULL, /* resize */ - ExposeProc, /* expose */ - SetValues, /* set_values */ - NULL, /* set_values_hook */ - XtInheritSetValuesAlmost, /* set_values_almost */ - NULL, /* get_values_hook */ - NULL, /* accept_focus */ - XtVersion, /* version */ - NULL, /* callback_private */ - translations, /* tm_table */ - NULL, /* query_geometry */ - NULL, /* display_accelerator */ - NULL /* extension */ - }, - /* primitive_class fields */ - { - NULL, /* border_highlight */ - NULL, /* border_unhighlight */ - NULL, /* translations */ - NULL, /* arm_and_activate */ - NULL, /* syn_resources */ - 0, /* num_syn_resources */ - NULL /* extension */ - }, - { /* gauge fields */ - 0 /* empty */ - } -}; - -WidgetClass xmGaugeWidgetClass = (WidgetClass)&xmGaugeClassRec; - - - - -void -GaugePick(Widget w, XEvent *e, String *args, Cardinal *num_args) -{ - /* Commented out for a read-only gauge in wxWindows */ -#if 0 - XmGaugeWidget gw = (XmGaugeWidget)w; -#define THIS gw->gauge - int size, sht; - float ratio; - Boolean dragging = False; - XButtonEvent *event = (XButtonEvent *)e; - int x, y; - - x = event->x; - y = event->y; - sht = gw->primitive.shadow_thickness; - _XmDrawShadows(XtDisplay(w), XtWindow(w), - gw->primitive.top_shadow_GC, - gw->primitive.bottom_shadow_GC, - 0, 0, w->core.width, w->core.height, - sht, XmSHADOW_IN); - - - ratio = (float)((float)THIS.maximum - - (float)THIS.minimum) / (float)THIS.value; - switch(THIS.orientation) { - case XmHORIZONTAL: - size = (w->core.width - 2 * sht) / ratio; - switch(THIS.processingDirection) { - case XmMAX_ON_RIGHT: - case XmMAX_ON_BOTTOM: - dragging = (x > sht) && (y > sht) && - (x < sht + size) && (y < w->core.height - sht); - break; - case XmMAX_ON_LEFT: - case XmMAX_ON_TOP: - dragging = (x > w->core.width - size - sht) && (y > sht) && - (x < w->core.width - sht) && (y < w->core.height + sht); - break; - } - break; - case XmVERTICAL: - size = (w->core.height - 2 * sht) / ratio; - switch(THIS.processingDirection) { - case XmMAX_ON_RIGHT: - case XmMAX_ON_BOTTOM: - dragging = (x > sht) && (y > sht) && - (x < w->core.width - sht) && - (y < w->core.width - 2 * sht + size); - break; - case XmMAX_ON_LEFT: - case XmMAX_ON_TOP: - dragging = (x > sht) && (y > w->core.height - size - sht) && - (x < w->core.width - sht) && (y < w->core.height - sht); - } - break; - } - THIS.dragging = dragging; - THIS.oldx = x; - THIS.oldy = y; -#undef THIS -#endif -} - -#define round(x) ( (x) > 0 ? ((x) + 0.5) : -(-(x) + 0.5) ) - -void -GaugeDrag(Widget w, XEvent *e, String *args, Cardinal *num_args) -{ - /* Commented out for a read-only gauge in wxWindows */ -#if 0 - XmGaugeWidget gw = (XmGaugeWidget)w; -#define THIS gw->gauge - int sht, x, y, max, value; - float ratio, nratio, size, nsize, fvalue, delta; - XMotionEvent *event = (XMotionEvent *)e; - - if( ! THIS.dragging) return; - - x = event->x; - y = event->y; - sht = gw->primitive.shadow_thickness; - - ratio = (float)THIS.value / (float)((float)THIS.maximum - - (float)THIS.minimum); - switch(THIS.orientation) { - case XmHORIZONTAL: - max = (w->core.width - 2 * sht); - size = (float)max * ratio; - delta = (float)x - (float)THIS.oldx; - break; - case XmVERTICAL: - max = (w->core.height - 2 * sht); - size = (float) max * ratio; - delta = (float)y - (float)THIS.oldy; - break; - } - switch(THIS.processingDirection) { - case XmMAX_ON_RIGHT: - case XmMAX_ON_BOTTOM: - nsize = size + delta; - break; - default: - nsize = size - delta; - } - if(nsize > (float)max) nsize = (float)max; - if(nsize < (float)0 ) nsize = (float)0; - nratio = nsize / (float)max; - - fvalue = (int)((float)THIS.maximum - - (float)THIS.minimum) * (float)nsize / (float)max; - value = round(fvalue); - - THIS.value = value; - THIS.oldx = x; - THIS.oldy = y; - - /* clear old slider only if it was larger */ - DrawSlider(gw, (nsize < size)); - - { - XmGaugeCallbackStruct call; - - if(NULL != THIS.dragCallback) { - call.reason = XmCR_DRAG; - call.event = e; - call.value = THIS.value; - XtCallCallbacks(w, XmNdragCallback, &call); - } - } -#undef THIS -#endif -} - - -void -GaugeDrop(Widget w, XEvent *e, String *args, Cardinal *num_args) -{ - /* Commented out for a read-only gauge in wxWindows */ -#if 0 - XmGaugeWidget gw = (XmGaugeWidget)w; -#define THIS gw->gauge - if( ! THIS.dragging) return; - - if(NULL != THIS.valueChangedCallback) { - XmGaugeCallbackStruct call; - call.reason = XmCR_VALUE_CHANGED; - call.event = e; - call.value = THIS.value; - XtCallCallbacks(w, XmNvalueChangedCallback, &call); - } - THIS.dragging = False; -#undef THIS -#endif -} - -void -XmGaugeSetValue(Widget w, int value) -{ - XmGaugeWidget gw = (XmGaugeWidget)w; - - gw->gauge.value = value; - DrawSlider(gw, True); - XFlush(XtDisplay(w)); -} - -int -XmGaugeGetValue(Widget w) -{ - XmGaugeWidget gw = (XmGaugeWidget)w; - - return gw->gauge.value; -} diff --git a/src/motif/gdiobj.cpp b/src/motif/gdiobj.cpp deleted file mode 100644 index adda2bcab1..0000000000 --- a/src/motif/gdiobj.cpp +++ /dev/null @@ -1,20 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: gdiobj.cpp -// Purpose: wxGDIObject class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "gdiobj.h" -#endif - -#include "wx/gdiobj.h" - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxGDIObject, wxObject) -#endif diff --git a/src/motif/helpxxxx.cpp b/src/motif/helpxxxx.cpp deleted file mode 100644 index 439c9acde3..0000000000 --- a/src/motif/helpxxxx.cpp +++ /dev/null @@ -1,83 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: helpxxxx.cpp -// Purpose: Help system: native implementation -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "helpxxxx.h" -#endif - -#include "wx/motif/helpxxxx.h" - -#include - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxXXXXHelpController, wxHelpControllerBase) -#endif - -wxXXXXHelpController::wxXXXXHelpController() -{ - m_helpFile = ""; -} - -wxXXXXHelpController::~wxXXXXHelpController() -{ -} - -bool wxXXXXHelpController::Initialize(const wxString& filename) -{ - m_helpFile = filename; - // TODO any other inits - return TRUE; -} - -bool wxXXXXHelpController::LoadFile(const wxString& file) -{ - m_helpFile = file; - // TODO - return TRUE; -} - -bool wxXXXXHelpController::DisplayContents() -{ - // TODO - return FALSE; -} - -bool wxXXXXHelpController::DisplaySection(int section) -{ - // TODO - return FALSE; -} - -bool wxXXXXHelpController::DisplayBlock(long block) -{ - // TODO - return FALSE; -} - -bool wxXXXXHelpController::KeywordSearch(const wxString& k) -{ - if (m_helpFile == "") return FALSE; - - // TODO - return FALSE; -} - -// Can't close the help window explicitly in WinHelp -bool wxXXXXHelpController::Quit() -{ - // TODO - return FALSE; -} - -void wxXXXXHelpController::OnQuit() -{ -} - diff --git a/src/motif/horiz.xbm b/src/motif/horiz.xbm deleted file mode 100644 index ff3309bcc4..0000000000 --- a/src/motif/horiz.xbm +++ /dev/null @@ -1,6 +0,0 @@ -#define horiz_width 15 -#define horiz_height 15 -static char horiz_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00}; diff --git a/src/motif/icon.cpp b/src/motif/icon.cpp deleted file mode 100644 index 55d70fdd9a..0000000000 --- a/src/motif/icon.cpp +++ /dev/null @@ -1,73 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: icon.cpp -// Purpose: wxIcon class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "icon.h" -#endif - -#include "wx/icon.h" -#include "wx/window.h" - -#include -#include - -#include "wx/motif/private.h" - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxIcon, wxBitmap) -#endif - -/* -* Icons -*/ - -wxIcon::wxIcon() -{ -} - -// Create from XBM data -wxIcon::wxIcon(const char bits[], int width, int height) -{ - (void) Create((void*) bits, wxBITMAP_TYPE_XBM_DATA, width, height, 1); -} - -// Create from XPM data -wxIcon::wxIcon(char **data) -{ - (void) Create((void*) data, wxBITMAP_TYPE_XPM_DATA, 0, 0, 0); -} - -wxIcon::wxIcon(const wxString& icon_file, long flags, - int desiredWidth, int desiredHeight) - -{ - LoadFile(icon_file, flags, desiredWidth, desiredHeight); -} - -wxIcon::~wxIcon() -{ -} - -bool wxIcon::LoadFile(const wxString& filename, long type, - int desiredWidth, int desiredHeight) -{ - UnRef(); - - m_refData = new wxBitmapRefData; - - wxBitmapHandler *handler = FindHandler(type); - - if ( handler ) - return handler->LoadFile(this, filename, type, desiredWidth, desiredHeight); - else - return FALSE; -} - diff --git a/src/motif/joystick.cpp b/src/motif/joystick.cpp deleted file mode 100644 index d6fc022e8d..0000000000 --- a/src/motif/joystick.cpp +++ /dev/null @@ -1,279 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: joystick.cpp -// Purpose: wxJoystick class -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "joystick.h" -#endif - -#include - -IMPLEMENT_DYNAMIC_CLASS(wxJoystick, wxObject) - -// Attributes -//////////////////////////////////////////////////////////////////////////// - -wxPoint wxJoystick::GetPosition() const -{ - // TODO - return wxPoint(0, 0); -} - -int wxJoystick::GetZPosition() const -{ - // TODO - return 0; -} - -int wxJoystick::GetButtonState() const -{ - // TODO - return 0; -} - -int wxJoystick::GetPOVPosition() const -{ - // TODO - return 0; -} - -int wxJoystick::GetPOVCTSPosition() const -{ - // TODO - return 0; -} - -int wxJoystick::GetRudderPosition() const -{ - // TODO - return 0; -} - -int wxJoystick::GetUPosition() const -{ - // TODO - return 0; -} - -int wxJoystick::GetVPosition() const -{ - // TODO - return 0; -} - -int wxJoystick::GetMovementThreshold() const -{ - // TODO - return 0; -} - -void wxJoystick::SetMovementThreshold(int threshold) -{ - // TODO -} - -// Capabilities -//////////////////////////////////////////////////////////////////////////// - -bool wxJoystick::IsOk() const -{ - // TODO - return FALSE; -} - -int wxJoystick::GetNumberJoysticks() const -{ - // TODO - return 0; -} - -int wxJoystick::GetManufacturerId() const -{ - // TODO - return 0; -} - -int wxJoystick::GetProductId() const -{ - // TODO - return 0; -} - -wxString wxJoystick::GetProductName() const -{ - // TODO - return wxString(""); -} - -int wxJoystick::GetXMin() const -{ - // TODO - return 0; -} - -int wxJoystick::GetYMin() const -{ - // TODO - return 0; -} - -int wxJoystick::GetZMin() const -{ - // TODO - return 0; -} - -int wxJoystick::GetXMax() const -{ - // TODO - return 0; -} - -int wxJoystick::GetYMax() const -{ - // TODO - return 0; -} - -int wxJoystick::GetZMax() const -{ - // TODO - return 0; -} - -int wxJoystick::GetNumberButtons() const -{ - // TODO - return 0; -} - -int wxJoystick::GetNumberAxes() const -{ - // TODO - return 0; -} - -int wxJoystick::GetMaxButtons() const -{ - // TODO - return 0; -} - -int wxJoystick::GetMaxAxes() const -{ - // TODO - return 0; -} - -int wxJoystick::GetPollingMin() const -{ - // TODO - return 0; -} - -int wxJoystick::GetPollingMax() const -{ - // TODO - return 0; -} - -int wxJoystick::GetRudderMin() const -{ - // TODO - return 0; -} - -int wxJoystick::GetRudderMax() const -{ - // TODO - return 0; -} - -int wxJoystick::GetUMin() const -{ - // TODO - return 0; -} - -int wxJoystick::GetUMax() const -{ - // TODO - return 0; -} - -int wxJoystick::GetVMin() const -{ - // TODO - return 0; -} - -int wxJoystick::GetVMax() const -{ - // TODO - return 0; -} - -bool wxJoystick::HasRudder() const -{ - // TODO - return FALSE; -} - -bool wxJoystick::HasZ() const -{ - // TODO - return FALSE; -} - -bool wxJoystick::HasU() const -{ - // TODO - return FALSE; -} - -bool wxJoystick::HasV() const -{ - // TODO - return FALSE; -} - -bool wxJoystick::HasPOV() const -{ - // TODO - return FALSE; -} - -bool wxJoystick::HasPOV4Dir() const -{ - // TODO - return FALSE; -} - -bool wxJoystick::HasPOVCTS() const -{ - // TODO - return FALSE; -} - -// Operations -//////////////////////////////////////////////////////////////////////////// - -bool wxJoystick::SetCapture(wxWindow* win, int pollingFreq) -{ - // TODO - return FALSE; -} - -bool wxJoystick::ReleaseCapture() -{ - // TODO - return FALSE; -} - diff --git a/src/motif/listbox.cpp b/src/motif/listbox.cpp deleted file mode 100644 index b409201903..0000000000 --- a/src/motif/listbox.cpp +++ /dev/null @@ -1,799 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: listbox.cpp -// Purpose: wxListBox -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "listbox.h" -#endif - -#include "wx/listbox.h" -#include "wx/settings.h" -#include "wx/dynarray.h" -#include "wx/log.h" -#include "wx/utils.h" - -#include -#include "wx/motif/private.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxListBox, wxControl) -#endif - -void wxListBoxCallback (Widget w, XtPointer clientData, - XmListCallbackStruct * cbs); - -void wxListBoxDefaultActionProc (Widget list_w, XtPointer client_data, XmListCallbackStruct * cbs); - -// ============================================================================ -// list box control implementation -// ============================================================================ - -// Listbox item -wxListBox::wxListBox(): m_clientDataList(wxKEY_INTEGER) -{ - m_noItems = 0; - m_selected = 0; -} - -bool wxListBox::Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos, - const wxSize& size, - int n, const wxString choices[], - long style, - const wxValidator& validator, - const wxString& name) -{ - m_windowStyle = style; - m_noItems = n; - m_selected = 0; - // m_backgroundColour = parent->GetBackgroundColour(); - m_backgroundColour = * wxWHITE; - m_foregroundColour = parent->GetForegroundColour(); - - SetName(name); - SetValidator(validator); - - if (parent) parent->AddChild(this); - - m_windowId = ( id == -1 ) ? (int)NewControlId() : id; - - Widget parentWidget = (Widget) parent->GetClientWidget(); - - Arg args[3]; - int count; - XtSetArg (args[0], XmNlistSizePolicy, XmCONSTANT); - if (m_windowStyle & wxLB_MULTIPLE) - XtSetArg (args[1], XmNselectionPolicy, XmMULTIPLE_SELECT); - else if (m_windowStyle & wxLB_EXTENDED) - XtSetArg (args[1], XmNselectionPolicy, XmEXTENDED_SELECT); - else - XtSetArg (args[1], XmNselectionPolicy, XmBROWSE_SELECT); - if (m_windowStyle & wxLB_ALWAYS_SB) - { - XtSetArg (args[2], XmNscrollBarDisplayPolicy, XmSTATIC); - count = 3; - } - else - count = 2; - - Widget listWidget = XmCreateScrolledList (parentWidget, (char*) (const char*) name, args, count); - - m_mainWidget = (WXWidget) listWidget; - - Set(n, choices); - - XtManageChild (listWidget); - - long width = size.x; - long height = size.y; - if (width == -1) - width = 150; - if (height == -1) - height = 80; - - XtAddCallback (listWidget, XmNbrowseSelectionCallback, (XtCallbackProc) wxListBoxCallback, - (XtPointer) this); - XtAddCallback (listWidget, XmNextendedSelectionCallback, (XtCallbackProc) wxListBoxCallback, - (XtPointer) this); - XtAddCallback (listWidget, XmNmultipleSelectionCallback, (XtCallbackProc) wxListBoxCallback, - (XtPointer) this); - - XtAddCallback (listWidget, XmNdefaultActionCallback, (XtCallbackProc) wxListBoxDefaultActionProc, - (XtPointer) this); - - m_windowFont = parent->GetFont(); - ChangeFont(FALSE); - - SetCanAddEventHandler(TRUE); - AttachWidget (parent, m_mainWidget, (WXWidget) NULL, pos.x, pos.y, width, height); - - ChangeBackgroundColour(); - - return TRUE; -} - -wxListBox::~wxListBox() -{ -} - -void wxListBox::SetFirstItem(int N) -{ - int count, length; - - if (N < 0) - return; - XtVaGetValues ((Widget) m_mainWidget, - XmNvisibleItemCount, &count, - XmNitemCount, &length, - NULL); - if ((N + count) >= length) - N = length - count; - XmListSetPos ((Widget) m_mainWidget, N + 1); -} - -void wxListBox::SetFirstItem(const wxString& s) -{ - int N = FindString (s); - - if (N >= 0) - SetFirstItem (N); -} - -void wxListBox::Delete(int N) -{ - int width1, height1; - int width2, height2; - Widget listBox = (Widget) m_mainWidget; - GetSize (&width1, &height1); - - bool managed = XtIsManaged(listBox); - - if (managed) - XtUnmanageChild (listBox); - - XmListDeletePos (listBox, N + 1); - - if (managed) - XtManageChild (listBox); - - GetSize (&width2, &height2); - // Correct for randomly resized listbox - bad boy, Motif! - if (width1 != width2 || height1 != height2) - SetSize (-1, -1, width1, height1); - - // (JDH) need to add code here to take care of clientDataList - wxNode *node = m_clientDataList.Find((long)N); // get item from list - if (node) m_clientDataList.DeleteNode(node); // if existed then delete from list - node = m_clientDataList.First(); // we now have to adjust all keys that - while (node) // are >=N+1 - { if (node->GetKeyInteger() >= (long)(N+1)) - node->SetKeyInteger(node->GetKeyInteger() - 1); - node = node->Next(); - } - - m_noItems --; -} - -void wxListBox::Append(const wxString& item) -{ - int width1, height1; - int width2, height2; - - Widget listBox = (Widget) m_mainWidget; - GetSize (&width1, &height1); - - bool managed = XtIsManaged(listBox); - - if (managed) - XtUnmanageChild (listBox); - int n; - XtVaGetValues (listBox, XmNitemCount, &n, NULL); - XmString text = XmStringCreateSimple ((char*) (const char*) item); - // XmListAddItem(listBox, text, n + 1); - XmListAddItemUnselected (listBox, text, 0); - XmStringFree (text); - - // It seems that if the list is cleared, we must re-ask for - // selection policy!! - Arg args[3]; - XtSetArg (args[0], XmNlistSizePolicy, XmCONSTANT); - if (m_windowStyle & wxLB_MULTIPLE) - XtSetArg (args[1], XmNselectionPolicy, XmMULTIPLE_SELECT); - else if (m_windowStyle & wxLB_EXTENDED) - XtSetArg (args[1], XmNselectionPolicy, XmEXTENDED_SELECT); - else - XtSetArg (args[1], XmNselectionPolicy, XmBROWSE_SELECT); - XtSetValues (listBox, args, 2); - - if (managed) - XtManageChild (listBox); - - GetSize (&width2, &height2); - // Correct for randomly resized listbox - bad boy, Motif! - if (width1 != width2 || height1 != height2) - SetSize (-1, -1, width1, height1); - m_noItems ++; -} - -void wxListBox::Append(const wxString& item, char *clientData) -{ - int width1, height1; - int width2, height2; - - Widget listBox = (Widget) m_mainWidget; - - GetSize (&width1, &height1); - Bool managed = XtIsManaged(listBox); - - if (managed) - XtUnmanageChild (listBox); - - int n; - XtVaGetValues (listBox, XmNitemCount, &n, NULL); - XmString text = XmStringCreateSimple ((char*) (const char*) item); - // XmListAddItem(listBox, text, n + 1); - XmListAddItemUnselected (listBox, text, 0); - XmStringFree (text); - - // It seems that if the list is cleared, we must re-ask for - // selection policy!! - Arg args[3]; - XtSetArg (args[0], XmNlistSizePolicy, XmCONSTANT); - if (m_windowStyle & wxLB_MULTIPLE) - XtSetArg (args[1], XmNselectionPolicy, XmMULTIPLE_SELECT); - else if (m_windowStyle & wxLB_EXTENDED) - XtSetArg (args[1], XmNselectionPolicy, XmEXTENDED_SELECT); - else - XtSetArg (args[1], XmNselectionPolicy, XmBROWSE_SELECT); - XtSetValues (listBox, args, 2); - - m_clientDataList.Append ((long) n, (wxObject *) clientData); - - if (managed) - XtManageChild (listBox); - - GetSize (&width2, &height2); - - // Correct for randomly resized listbox - bad boy, Motif! - if (width1 != width2 || height1 != height2) - SetSize (-1, -1, width1, height1); - - m_noItems ++; -} - -void wxListBox::Set(int n, const wxString *choices, char** clientData) -{ - m_clientDataList.Clear(); - int width1, height1; - int width2, height2; - - Widget listBox = (Widget) m_mainWidget; - GetSize (&width1, &height1); - - bool managed = XtIsManaged(listBox); - - if (managed) - XtUnmanageChild (listBox); - /*** - for (int i=0; iData (); - else - return NULL; -} - -void wxListBox::SetClientData(int N, char *Client_data) -{ - wxNode *node = m_clientDataList.Find ((long) N); - if (node) - node->SetData ((wxObject *)Client_data); - else - node = m_clientDataList.Append((long) N, (wxObject*) Client_data); -} - -// Return number of selections and an array of selected integers -int wxListBox::GetSelections(wxArrayInt& aSelections) const -{ - aSelections.Empty(); - - Widget listBox = (Widget) m_mainWidget; - int *posList = NULL; - int posCnt = 0; - bool flag = XmListGetSelectedPos (listBox, &posList, &posCnt); - if (flag) - { - if (posCnt > 0) - { - aSelections.Alloc(posCnt); - - int i; - for (i = 0; i < posCnt; i++) - aSelections.Add(posList[i] - 1); - - XtFree ((char *) posList); - return posCnt; - } - else - return 0; - } - else - return 0; -} - -// Get single selection, for single choice list items -int wxListBox::GetSelection() const -{ - Widget listBox = (Widget) m_mainWidget; - int *posList = NULL; - int posCnt = 0; - bool flag = XmListGetSelectedPos (listBox, &posList, &posCnt); - if (flag) - { - int id = -1; - if (posCnt > 0) - id = posList[0] - 1; - XtFree ((char *) posList); - return id; - } - else - return -1; -} - -// Find string for position -wxString wxListBox::GetString(int N) const -{ - Widget listBox = (Widget) m_mainWidget; - XmString *strlist; - int n; - XtVaGetValues (listBox, XmNitemCount, &n, XmNitems, &strlist, NULL); - if (N <= n && N >= 0) - { - char *txt; - if (XmStringGetLtoR (strlist[N], XmSTRING_DEFAULT_CHARSET, &txt)) - { - wxString str(txt); - XtFree (txt); - return str; - } - else - return wxEmptyString; - } - else - return wxEmptyString; -} - -void wxListBox::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - wxWindow::SetSize(x, y, width, height, sizeFlags); - - // Check resulting size is correct - int tempW, tempH; - GetSize (&tempW, &tempH); - - /* - if (tempW != width || tempH != height) - { - cout << "wxListBox::SetSize sizes not set correctly."); - } - */ -} - -void wxListBox::InsertItems(int nItems, const wxString items[], int pos) -{ - int width1, height1; - int width2, height2; - - Widget listBox = (Widget) m_mainWidget; - - GetSize(&width1, &height1); - - bool managed = XtIsManaged(listBox); - - if (managed) - XtUnmanageChild(listBox); - - XmString *text = new XmString[nItems]; - int i; - // Steve Hammes: Motif 1.1 compatibility - // #if XmVersion > 1100 - // Corrected by Sergey Krasnov from Steve Hammes' code -#if XmVersion > 1001 - for (i = 0; i < nItems; i++) - text[i] = XmStringCreateSimple((char*) (const char*) items[i]); - XmListAddItemsUnselected(listBox, text, nItems, pos+1); -#else - for (i = 0; i < nItems; i++) - { - text[i] = XmStringCreateSimple((char*) (const char*) items[i]); - // XmListAddItemUnselected(listBox, text[i], i); - XmListAddItemUnselected(listBox, text[i], pos+i+1); // Another Sergey correction - } -#endif - for (i = 0; i < nItems; i++) - XmStringFree(text[i]); - - delete[] text; - - // It seems that if the list is cleared, we must re-ask for - // selection policy!! - Arg args[3]; - XtSetArg(args[0], XmNlistSizePolicy, XmCONSTANT); - if (m_windowStyle & wxLB_MULTIPLE) - XtSetArg(args[1], XmNselectionPolicy, XmMULTIPLE_SELECT); - else if (m_windowStyle & wxLB_EXTENDED) - XtSetArg(args[1], XmNselectionPolicy, XmEXTENDED_SELECT); - else XtSetArg(args[1], XmNselectionPolicy, XmBROWSE_SELECT); - XtSetValues(listBox,args,2) ; - - if (managed) - XtManageChild(listBox); - - GetSize(&width2, &height2); - // Correct for randomly resized listbox - bad boy, Motif! - if (width1 != width2 /*|| height1 != height2*/) - SetSize(-1, -1, width1, height1); - - m_noItems += nItems; -} - -void wxListBox::SetString(int N, const wxString& s) -{ - int width1, height1; - int width2, height2; - - Widget listBox = (Widget) m_mainWidget; - GetSize (&width1, &height1); - - XmString text = XmStringCreateSimple ((char*) (const char*) s); - - // WHAT'S THE MOTIF CALL TO SET THE TEXT OF AN EXISTING - // ITEM??? - // There isn't one, so delete the item and add it again. - XmListDeletePos (listBox, N+1); - XmListAddItem (listBox, text, N+1); - - XmStringFree(text); - - /* - // It seems that if the list is cleared, we must re-ask for - // selection policy!! - Arg args[3]; - XtSetArg (args[0], XmNlistSizePolicy, XmCONSTANT); - if (m_windowStyle & wxLB_MULTIPLE) - XtSetArg (args[1], XmNselectionPolicy, XmMULTIPLE_SELECT); - else if (m_windowStyle & wxLB_EXTENDED) - XtSetArg (args[1], XmNselectionPolicy, XmEXTENDED_SELECT); - else - XtSetArg (args[1], XmNselectionPolicy, XmBROWSE_SELECT); - XtSetValues (listBox, args, 2); - */ - - GetSize (&width2, &height2); - // Correct for randomly resized listbox - bad boy, Motif! - if (width1 != width2 || height1 != height2) - SetSize (-1, -1, width1, height1); -} - -int wxListBox::Number () const -{ - return m_noItems; -} - -// For single selection items only -wxString wxListBox::GetStringSelection () const -{ - int sel = GetSelection (); - if (sel > -1) - return this->GetString (sel); - else - return wxString(""); -} - -bool wxListBox::SetStringSelection (const wxString& s, bool flag) -{ - int sel = FindString (s); - if (sel > -1) - { - SetSelection (sel, flag); - return TRUE; - } - else - return FALSE; -} - -void wxListBox::Command (wxCommandEvent & event) -{ - if (event.m_extraLong) - SetSelection (event.m_commandInt); - else - { - Deselect (event.m_commandInt); - return; - } - ProcessCommand (event); -} - -void wxListBoxCallback (Widget w, XtPointer clientData, - XmListCallbackStruct * cbs) -{ -/* - if (cbs->reason == XmCR_EXTENDED_SELECT) - cout << "*** Extend select\n"; - else if (cbs->reason == XmCR_SINGLE_SELECT) - cout << "*** Single select\n"; - else if (cbs->reason == XmCR_MULTIPLE_SELECT) - cout << "*** Multiple select\n"; - else if (cbs->reason == XmCR_BROWSE_SELECT) - cout << "*** Browse select\n"; - - if (cbs->selection_type == XmMODIFICATION) - cout << "*** Modification\n"; - else if (cbs->selection_type == XmINITIAL) - cout << "*** Initial\n"; - else if (cbs->selection_type == XmADDITION) - cout << "*** Addition\n"; - */ - - wxListBox *item = (wxListBox *) clientData; - - if (item->InSetValue()) - return; - - wxCommandEvent event (wxEVT_COMMAND_LISTBOX_SELECTED, item->GetId()); - switch (cbs->reason) - { - case XmCR_MULTIPLE_SELECT: - case XmCR_BROWSE_SELECT: - { - event.m_clientData = item->GetClientData (cbs->item_position - 1); - //event.commandString = item->GetStringSelection(); - event.m_commandInt = cbs->item_position - 1; - event.m_extraLong = TRUE; - event.SetEventObject(item); - item->ProcessCommand (event); - //delete[] event.commandString; // Let's not store the command string any more - break; - } - case XmCR_EXTENDED_SELECT: - { - switch (cbs->selection_type) - { - case XmINITIAL: - case XmADDITION: - case XmMODIFICATION: - { - event.m_clientData = item->GetClientData (cbs->item_position - 1); - event.m_commandInt = cbs->item_position - 1; - event.m_extraLong = TRUE; - event.SetEventObject(item); - item->ProcessCommand (event); - break; - } - } - break; - } - } -} - -/* Respond by getting the -* designated "default button" in the action area and activate it -* as if the user had selected it. -*/ -void wxListBoxDefaultActionProc (Widget list_w, XtPointer client_data, XmListCallbackStruct * cbs) -{ - wxListBox *lbox = (wxListBox *) client_data; - - wxCommandEvent event(wxEVT_COMMAND_LISTBOX_DOUBLECLICKED, lbox->GetId()); - event.SetEventObject( lbox ); - lbox->GetEventHandler()->ProcessEvent(event) ; -} - -WXWidget wxListBox::GetTopWidget() const -{ - return (WXWidget) XtParent( (Widget) m_mainWidget ); -} - -void wxListBox::ChangeFont(bool keepOriginalSize) -{ - wxWindow::ChangeFont(keepOriginalSize); -} - -void wxListBox::ChangeBackgroundColour() -{ - wxWindow::ChangeBackgroundColour(); - - Widget parent = XtParent ((Widget) m_mainWidget); - Widget hsb, vsb; - - XtVaGetValues (parent, - XmNhorizontalScrollBar, &hsb, - XmNverticalScrollBar, &vsb, - NULL); - - /* TODO: should scrollbars be affected? Should probably have separate - * function to change them (by default, taken from wxSystemSettings) - */ - wxColour backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE); - DoChangeBackgroundColour((WXWidget) hsb, backgroundColour, TRUE); - DoChangeBackgroundColour((WXWidget) vsb, backgroundColour, TRUE); - - XtVaSetValues (hsb, - XmNtroughColor, backgroundColour.AllocColour(XtDisplay(hsb)), - NULL); - XtVaSetValues (vsb, - XmNtroughColor, backgroundColour.AllocColour(XtDisplay(vsb)), - NULL); - - DoChangeBackgroundColour((WXWidget) parent, m_backgroundColour, TRUE); -} - -void wxListBox::ChangeForegroundColour() -{ - wxWindow::ChangeForegroundColour(); - - Widget parent = XtParent ((Widget) m_mainWidget); - Widget hsb, vsb; - - XtVaGetValues (parent, - XmNhorizontalScrollBar, &hsb, - XmNverticalScrollBar, &vsb, - NULL); - /* TODO: should scrollbars be affected? Should probably have separate - * function to change them (by default, taken from wxSystemSettings) - DoChangeForegroundColour((WXWidget) hsb, m_foregroundColour); - DoChangeForegroundColour((WXWidget) vsb, m_foregroundColour); - DoChangeForegroundColour((WXWidget) parent, m_foregroundColour); - */ -} - - diff --git a/src/motif/main.cpp b/src/motif/main.cpp deleted file mode 100644 index e2eea40e29..0000000000 --- a/src/motif/main.cpp +++ /dev/null @@ -1,18 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: main.cpp -// Purpose: Entry point -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#include "wx/app.h" - -int main(int argc, char* argv[]) -{ - return wxEntry(argc, argv); -} - diff --git a/src/motif/makefile.unx b/src/motif/makefile.unx deleted file mode 100644 index eda10a023f..0000000000 --- a/src/motif/makefile.unx +++ /dev/null @@ -1,232 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1998 -# Updated: -# Copyright: (c) 1998 -# -# -# Makefile for wxMotif library, Unix - -EXTRACFLAGS=-DLEX_SCANNER - -include ../make.env - -LIB_CPP_SRC=\ -\ - ../common/cmndata.cpp \ - ../common/config.cpp \ - ../common/date.cpp \ - ../common/docmdi.cpp \ - ../common/docview.cpp \ - ../common/dynarray.cpp \ - ../common/dynlib.cpp \ - ../common/event.cpp \ - ../common/file.cpp \ - ../common/fileconf.cpp \ - ../common/filefn.cpp \ - ../common/gdicmn.cpp \ - ../common/hash.cpp \ - ../common/helpbase.cpp \ - ../common/intl.cpp \ - ../common/ipcbase.cpp \ - ../common/image.cpp \ - ../common/layout.cpp \ - ../common/list.cpp \ - ../common/log.cpp \ - ../common/matrix.cpp \ - ../common/memory.cpp \ - ../common/module.cpp \ - ../common/object.cpp \ - ../common/odbc.cpp \ - ../common/prntbase.cpp \ - ../common/resource.cpp \ - ../common/serbase.cpp \ - ../common/string.cpp \ - ../common/textfile.cpp \ - ../common/tbarbase.cpp \ - ../common/tbarsmpl.cpp \ - ../common/time.cpp \ - ../common/timercmn.cpp \ - ../common/utilscmn.cpp \ - ../common/wincmn.cpp \ - ../common/framecmn.cpp \ - ../common/stream.cpp \ - ../common/datstrm.cpp \ - ../common/wfstream.cpp \ - ../common/mstream.cpp \ - ../common/zstream.cpp \ - ../common/objstrm.cpp \ - ../common/sckstrm.cpp \ - ../common/validate.cpp \ - ../common/valtext.cpp \ - ../common/variant.cpp \ - ../common/wxexpr.cpp \ - ../common/socket.cpp \ - ../common/sckaddr.cpp \ - ../common/sckipc.cpp \ - ../common/protocol.cpp \ - ../common/ftp.cpp \ - ../common/http.cpp \ - ../common/url.cpp \ - ../common/tokenzr.cpp \ -\ - accel.cpp \ - app.cpp \ - bitmap.cpp \ - bmpbuttn.cpp \ - brush.cpp \ - button.cpp \ - checkbox.cpp \ - choice.cpp \ - clipbrd.cpp \ - colour.cpp \ - control.cpp \ - combobox.cpp \ - cursor.cpp \ - data.cpp \ - dataobj.cpp \ - dc.cpp \ - dcclient.cpp \ - dcmemory.cpp \ - dcscreen.cpp \ - dialog.cpp \ - dnd.cpp \ - filedlg.cpp \ - font.cpp \ - frame.cpp \ - gauge.cpp \ - gdiobj.cpp \ - icon.cpp \ - listbox.cpp \ - joystick.cpp \ - main.cpp \ - mdi.cpp \ - menu.cpp \ - menuitem.cpp \ - minifram.cpp \ - msgdlg.cpp \ - palette.cpp \ - pen.cpp \ - radiobox.cpp \ - radiobut.cpp \ - region.cpp \ - scrolbar.cpp \ - settings.cpp \ - slider.cpp \ - spinbutt.cpp \ - statbox.cpp \ - statbmp.cpp \ - stattext.cpp \ - taskbar.cpp \ - textctrl.cpp \ - thread.cpp \ - timer.cpp \ - toolbar.cpp \ - utils.cpp \ - utilsexc.cpp \ - wave.cpp \ - window.cpp \ -\ - ../generic/choicdgg.cpp \ - ../generic/colrdlgg.cpp \ - ../generic/dirdlgg.cpp \ - ../generic/dcpsg.cpp \ - ../generic/fontdlgg.cpp \ - ../generic/gridg.cpp \ - ../generic/helphtml.cpp \ - ../generic/helpext.cpp \ - ../generic/imaglist.cpp \ - ../generic/listctrl.cpp \ - ../generic/laywin.cpp \ - ../generic/msgdlgg.cpp \ - ../generic/notebook.cpp \ - ../generic/panelg.cpp \ - ../generic/printps.cpp \ - ../generic/prntdlgg.cpp \ - ../generic/prop.cpp \ - ../generic/propform.cpp \ - ../generic/proplist.cpp \ - ../generic/sashwin.cpp \ - ../generic/scrolwin.cpp \ - ../generic/splitter.cpp \ - ../generic/statusbr.cpp \ - ../generic/tabg.cpp \ - ../generic/textdlgg.cpp \ - ../generic/treectrl.cpp - -ZLIB_SRC=\ - ../zlib/adler32.c ../zlib/deflate.c ../zlib/infblock.c\ - ../zlib/inflate.c ../zlib/zutil.c ../zlib/compress.c \ - ../zlib/infcodes.c ../zlib/inftrees.c ../zlib/trees.c \ - ../zlib/crc32.c ../zlib/gzio.c ../zlib/inffast.c\ - ../zlib/infutil.c ../zlib/uncompr.c - -LIB_C_SRC=\ -\ - ../common/y_tab.c \ - ../common/extended.c - -# Only need to compile zlib files if we don't -# already have a zlib library installed on our system -# (or we wish to statically link them for some reason) -EXTRA_C_SRC=\ - xmcombo/xmcombo.c - -EXTRA_CPP_SRC=\ - -# mdi/lib/XsComponent.C\ -# mdi/lib/XsMDICanvas.C\ -# mdi/lib/XsMDIWindow.C\ -# mdi/lib/XsMotifWindow.C\ -# mdi/lib/XsMoveOutline.C\ -# mdi/lib/XsOutline.C\ -# mdi/lib/XsResizeOutline.C - -all: $(WXLIB) png zlib - -# Define library objects -OBJECTS=\ - $(LIB_CPP_SRC:.cpp=.o) $(LIB_C_SRC:.c=.o) $(EXTRA_C_SRC:.c=.o) $(EXTRA_CPP_SRC:.C=.o) - -$(WXLIB) : $(OBJECTS) - ar $(AROPTIONS) $@ $(OBJECTS) - $(RANLIB) $@ - -../common/y_tab.$(OBJSUFF): ../common/y_tab.c ../common/lex_yy.c - $(CCLEX) -c $(CFLAGS) -DNO_CONFIGURE -o $@ ../common/y_tab.c - -# Replace lex with flex if you run into compilation -# problems with lex_yy.c. See also note about LEX_SCANNER -# above. -../common/lex_yy.c: ../common/lexer.l - $(LEX) -o../common/lex.yy.c ../common/lexer.l - sed -e "s/BUFSIZ/5000/g" < ../common/lex.yy.c | \ - sed -e "s/yyoutput(c)/void yyoutput(c)/g" | \ - sed -e "s/YYLMAX 200/YYLMAX 5000/g" > ../common/lex_yy.c - /bin/rm -f ../common/lex.yy.c - -# Replace yacc with bison if you run into compilation -# problems with y_tab.c. -../common/y_tab.c: ../common/parser.y - $(YACC) ../common/parser.y - mv y.tab.c ../common/y_tab.c - -combobox/combobox.o: combobox/combobox.c - $(CCC) -c $(CFLAGS) -o $@ combobox/combobox.c - -zlib: - cd ../zlib; make -f makefile.unx motif - -png: - cd ../png; make -f makefile.unx motif - -clean: cleanzlib cleanpng - rm -f $(OBJECTS) $(WXLIB) - -cleanzlib: - cd ../zlib; make -f makefile.unx cleanmotif - -cleanpng: - cd ../png; make -f makefile.unx cleanmotif - diff --git a/src/motif/mdi.cpp b/src/motif/mdi.cpp deleted file mode 100644 index 642a441daa..0000000000 --- a/src/motif/mdi.cpp +++ /dev/null @@ -1,647 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: mdi.cpp -// Purpose: MDI classes -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "mdi.h" -#endif - -#include "wx/mdi.h" -#include "wx/menu.h" -#include "wx/settings.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "wx/motif/private.h" - -extern wxList wxModelessWindows; - -// Implemented in frame.cpp -extern void wxFrameFocusProc(Widget workArea, XtPointer clientData, - XmAnyCallbackStruct *cbs); - -#define wxID_NOTEBOOK_CLIENT_AREA wxID_HIGHEST + 100 - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxMDIParentFrame, wxFrame) -IMPLEMENT_DYNAMIC_CLASS(wxMDIChildFrame, wxFrame) -IMPLEMENT_DYNAMIC_CLASS(wxMDIClientWindow, wxNotebook) - -BEGIN_EVENT_TABLE(wxMDIParentFrame, wxFrame) -EVT_SIZE(wxMDIParentFrame::OnSize) -EVT_ACTIVATE(wxMDIParentFrame::OnActivate) -EVT_SYS_COLOUR_CHANGED(wxMDIParentFrame::OnSysColourChanged) -END_EVENT_TABLE() - -BEGIN_EVENT_TABLE(wxMDIClientWindow, wxNotebook) -EVT_SCROLL(wxMDIClientWindow::OnScroll) -EVT_NOTEBOOK_PAGE_CHANGED(wxID_NOTEBOOK_CLIENT_AREA, wxMDIClientWindow::OnPageChanged) -END_EVENT_TABLE() - -#endif - -// Parent frame - -wxMDIParentFrame::wxMDIParentFrame() -{ - m_clientWindow = (wxMDIClientWindow*) NULL; - m_activeChild = (wxMDIChildFrame*) NULL; - m_activeMenuBar = (wxMenuBar*) NULL; -} - -bool wxMDIParentFrame::Create(wxWindow *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - m_clientWindow = (wxMDIClientWindow*) NULL; - m_activeChild = (wxMDIChildFrame*) NULL; - m_activeMenuBar = (wxMenuBar*) NULL; - - bool success = wxFrame::Create(parent, id, title, pos, size, style, name); - if (success) - { - // TODO: app cannot override OnCreateClient since - // wxMDIParentFrame::OnCreateClient will still be called - // (we're in the constructor). How to resolve? - - m_clientWindow = OnCreateClient(); - - // Uses own style for client style - m_clientWindow->CreateClient(this, GetWindowStyleFlag()); - - int w, h; - GetClientSize(& w, & h); - m_clientWindow->SetSize(0, 0, w, h); - return TRUE; - } - else - return FALSE; -} - -wxMDIParentFrame::~wxMDIParentFrame() -{ - // Make sure we delete the client window last of all - RemoveChild(m_clientWindow); - - DestroyChildren(); - - delete m_clientWindow; - m_clientWindow = NULL; -} - -// Get size *available for subwindows* i.e. excluding menu bar. -void wxMDIParentFrame::GetClientSize(int *x, int *y) const -{ - wxFrame::GetClientSize(x, y); -} - -void wxMDIParentFrame::SetMenuBar(wxMenuBar *menu_bar) -{ - m_frameMenuBar = menu_bar; - - SetChildMenuBar((wxMDIChildFrame*) NULL); -} - -void wxMDIParentFrame::OnSize(wxSizeEvent& event) -{ -#if wxUSE_CONSTRAINTS - if (GetAutoLayout()) - Layout(); -#endif - int x = 0; - int y = 0; - int width, height; - GetClientSize(&width, &height); - - if ( GetClientWindow() ) - GetClientWindow()->SetSize(x, y, width, height); -} - -void wxMDIParentFrame::OnActivate(wxActivateEvent& event) -{ - // Do nothing -} - -// Returns the active MDI child window -wxMDIChildFrame *wxMDIParentFrame::GetActiveChild() const -{ - return m_activeChild; -} - -// Create the client window class (don't Create the window, -// just return a new class) -wxMDIClientWindow *wxMDIParentFrame::OnCreateClient() -{ - return new wxMDIClientWindow ; -} - -// Set the child's menu into the parent frame -void wxMDIParentFrame::SetChildMenuBar(wxMDIChildFrame* child) -{ - wxMenuBar* oldMenuBar = m_activeMenuBar; - - if (child == (wxMDIChildFrame*) NULL) // No child: use parent frame - { - if (GetMenuBar() && (GetMenuBar() != m_activeMenuBar)) - { - // if (m_activeMenuBar) - // m_activeMenuBar->DestroyMenuBar(); - - m_activeMenuBar = GetMenuBar(); - m_activeMenuBar->CreateMenuBar(this); - /* - if (oldMenuBar && XtIsManaged((Widget) oldMenuBar->GetMainWidget())) - XtUnmanageChild((Widget) oldMenuBar->GetMainWidget()); - */ - if (oldMenuBar && oldMenuBar->GetMainWidget()) - XtUnmapWidget((Widget) oldMenuBar->GetMainWidget()); - - } - } - else if (child->GetMenuBar() == (wxMenuBar*) NULL) // No child menu bar: use parent frame - { - if (GetMenuBar() && (GetMenuBar() != m_activeMenuBar)) - { - // if (m_activeMenuBar) - // m_activeMenuBar->DestroyMenuBar(); - m_activeMenuBar = GetMenuBar(); - m_activeMenuBar->CreateMenuBar(this); - /* - if (oldMenuBar && XtIsManaged((Widget) oldMenuBar->GetMainWidget())) - XtUnmanageChild((Widget) oldMenuBar->GetMainWidget()); - */ - if (oldMenuBar && oldMenuBar->GetMainWidget()) - XtUnmapWidget((Widget) oldMenuBar->GetMainWidget()); - } - } - else // The child has a menubar - { - if (child->GetMenuBar() != m_activeMenuBar) - { - // if (m_activeMenuBar) - // m_activeMenuBar->DestroyMenuBar(); - - m_activeMenuBar = child->GetMenuBar(); - m_activeMenuBar->CreateMenuBar(this); - /* - if (oldMenuBar && XtIsManaged((Widget) oldMenuBar->GetMainWidget())) - XtUnmanageChild((Widget) oldMenuBar->GetMainWidget()); - */ - if (oldMenuBar && oldMenuBar->GetMainWidget()) - XtUnmapWidget((Widget) oldMenuBar->GetMainWidget()); - } - } -} - -// Redirect events to active child first -bool wxMDIParentFrame::ProcessEvent(wxEvent& event) -{ - // Stops the same event being processed repeatedly - static wxEventType inEvent = wxEVT_NULL; - if (inEvent == event.GetEventType()) - return FALSE; - - inEvent = event.GetEventType(); - - bool res = FALSE; - if (m_activeChild && event.IsKindOf(CLASSINFO(wxCommandEvent))) - { - res = m_activeChild->GetEventHandler()->ProcessEvent(event); - } - - if (!res) - res = GetEventHandler()->wxEvtHandler::ProcessEvent(event); - - inEvent = wxEVT_NULL; - - return res; -} - -// Responds to colour changes, and passes event on to children. -void wxMDIParentFrame::OnSysColourChanged(wxSysColourChangedEvent& event) -{ - // TODO - - // Propagate the event to the non-top-level children - wxFrame::OnSysColourChanged(event); -} - -// MDI operations -void wxMDIParentFrame::Cascade() -{ - // TODO -} - -void wxMDIParentFrame::Tile() -{ - // TODO -} - -void wxMDIParentFrame::ArrangeIcons() -{ - // TODO -} - -void wxMDIParentFrame::ActivateNext() -{ - // TODO -} - -void wxMDIParentFrame::ActivatePrevious() -{ - // TODO -} - -// Child frame - -wxMDIChildFrame::wxMDIChildFrame() -{ - m_mdiParentFrame = (wxMDIParentFrame*) NULL; -} - -bool wxMDIChildFrame::Create(wxMDIParentFrame *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - SetName(name); - - m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE); - m_foregroundColour = *wxBLACK; - m_windowFont = wxSystemSettings::GetSystemFont(wxSYS_DEFAULT_GUI_FONT); - - if ( id > -1 ) - m_windowId = id; - else - m_windowId = (int)NewControlId(); - - wxMDIClientWindow* clientWindow = parent->GetClientWindow(); - - wxASSERT_MSG( (clientWindow != (wxWindow*) NULL), "Missing MDI client window."); - - if (clientWindow) clientWindow->AddChild(this); - - SetMDIParentFrame(parent); - - int x = pos.x; int y = pos.y; - int width = size.x; int height = size.y; - if (width == -1) - width = 200; // TODO: give reasonable default - if (height == -1) - height = 200; // TODO: give reasonable default - - // We're deactivating the old child - wxMDIChildFrame* oldActiveChild = parent->GetActiveChild(); - if (oldActiveChild) - { - wxActivateEvent event(wxEVT_ACTIVATE, FALSE, oldActiveChild->GetId()); - event.SetEventObject( oldActiveChild ); - oldActiveChild->GetEventHandler()->ProcessEvent(event); - } - - // This is the currently active child - parent->SetActiveChild((wxMDIChildFrame*) this); - - // This time we'll try a bog-standard bulletin board for - // the 'frame'. A main window doesn't seem to work. - - m_mainWidget = (WXWidget) XtVaCreateWidget("client", - xmBulletinBoardWidgetClass, (Widget) clientWindow->GetTopWidget(), - XmNmarginWidth, 0, - XmNmarginHeight, 0, - /* - XmNrightAttachment, XmATTACH_FORM, - XmNleftAttachment, XmATTACH_FORM, - XmNtopAttachment, XmATTACH_FORM, - XmNbottomAttachment, XmATTACH_FORM, - */ - XmNresizePolicy, XmRESIZE_NONE, - NULL); - - SetCanAddEventHandler(TRUE); - AttachWidget (parent, m_mainWidget, (WXWidget) NULL, pos.x, pos.y, size.x, size.y); - - ChangeBackgroundColour(); - - XtManageChild((Widget) m_mainWidget); - - SetTitle(title); - - clientWindow->AddPage(this, title, TRUE); - clientWindow->Refresh(); - - // Positions the toolbar and status bar -- but we don't have any. - // PreResize(); - - wxModelessWindows.Append(this); - return TRUE; -} - - -wxMDIChildFrame::~wxMDIChildFrame() -{ - if (GetMDIParentFrame()) - { - wxMDIParentFrame* parentFrame = GetMDIParentFrame(); - - if (parentFrame->GetActiveChild() == this) - parentFrame->SetActiveChild((wxMDIChildFrame*) NULL); - wxMDIClientWindow* clientWindow = parentFrame->GetClientWindow(); - - // Remove page if still there - if (clientWindow->RemovePage(this)) - clientWindow->Refresh(); - - // Set the selection to the first remaining page - if (clientWindow->GetPageCount() > 0) - { - wxMDIChildFrame* child = (wxMDIChildFrame*) clientWindow->GetPage(0); - parentFrame->SetActiveChild(child); - parentFrame->SetChildMenuBar(child); - } - else - { - parentFrame->SetActiveChild((wxMDIChildFrame*) NULL); - parentFrame->SetChildMenuBar((wxMDIChildFrame*) NULL); - } - } -} - -#if 0 -// Implementation: intercept and act upon raise and lower commands. -void wxMDIChildFrame::OnRaise() -{ - wxMDIParentFrame* parentFrame = (wxMDIParentFrame*) GetParent() ; - wxMDIChildFrame* oldActiveChild = parentFrame->GetActiveChild(); - parentFrame->SetActiveChild(this); - - if (oldActiveChild) - { - wxActivateEvent event(wxEVT_ACTIVATE, FALSE, oldActiveChild->GetId()); - event.SetEventObject( oldActiveChild ); - oldActiveChild->GetEventHandler()->ProcessEvent(event); - } - - wxActivateEvent event(wxEVT_ACTIVATE, TRUE, this->GetId()); - event.SetEventObject( this ); - this->GetEventHandler()->ProcessEvent(event); -} - -void wxMDIChildFrame::OnLower() -{ - wxMDIParentFrame* parentFrame = (wxMDIParentFrame*) GetParent() ; - wxMDIChildFrame* oldActiveChild = parentFrame->GetActiveChild(); - - if (oldActiveChild == this) - { - wxActivateEvent event(wxEVT_ACTIVATE, FALSE, oldActiveChild->GetId()); - event.SetEventObject( oldActiveChild ); - oldActiveChild->GetEventHandler()->ProcessEvent(event); - } - // TODO: unfortunately we don't now know which is the top-most child, - // so make the active child NULL. - parentFrame->SetActiveChild((wxMDIChildFrame*) NULL); -} -#endif - -// Set the client size (i.e. leave the calculation of borders etc. -// to wxWindows) -void wxMDIChildFrame::SetClientSize(int width, int height) -{ - wxWindow::SetClientSize(width, height); -} - -void wxMDIChildFrame::GetClientSize(int* width, int* height) const -{ - wxWindow::GetSize(width, height); -} - -void wxMDIChildFrame::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - wxWindow::SetSize(x, y, width, height, sizeFlags); -} - -void wxMDIChildFrame::GetSize(int* width, int* height) const -{ - wxWindow::GetSize(width, height); -} - -void wxMDIChildFrame::GetPosition(int *x, int *y) const -{ - wxWindow::GetPosition(x, y); -} - -bool wxMDIChildFrame::Show(bool show) -{ - m_visibleStatus = show; /* show-&-hide fix */ - return wxWindow::Show(show); -} - -void wxMDIChildFrame::SetMenuBar(wxMenuBar *menuBar) -{ - // Don't create the underlying menubar yet; need to recreate - // it every time the child is activated. - m_frameMenuBar = menuBar; - - // We make the assumption that if you're setting the menubar, - // this is the currently active child. - GetMDIParentFrame()->SetChildMenuBar(this); -} - -// Set icon -void wxMDIChildFrame::SetIcon(const wxIcon& icon) -{ - m_icon = icon; - if (m_icon.Ok()) - { - // Not appropriate since there are no icons in - // a tabbed window - } -} - -void wxMDIChildFrame::SetTitle(const wxString& title) -{ - m_title = title; - wxMDIClientWindow* clientWindow = GetMDIParentFrame()->GetClientWindow(); - int pageNo = clientWindow->FindPagePosition(this); - if (pageNo > -1) - clientWindow->SetPageText(pageNo, title); -} - -// MDI operations -void wxMDIChildFrame::Maximize() -{ - // TODO -} - -void wxMDIChildFrame::Iconize(bool iconize) -{ - // TODO -} - -bool wxMDIChildFrame::IsIconized() const -{ - return FALSE; -} - -// Is it maximized? Always maximized under Motif, using the -// tabbed MDI implementation. -bool wxMDIChildFrame::IsMaximized(void) const -{ - return TRUE; -} - -void wxMDIChildFrame::Restore() -{ - // TODO -} - -void wxMDIChildFrame::Activate() -{ - // TODO -} - -void wxMDIChildFrame::CaptureMouse() -{ - wxWindow::CaptureMouse(); -} - -void wxMDIChildFrame::ReleaseMouse() -{ - wxWindow::ReleaseMouse(); -} - -void wxMDIChildFrame::Raise() -{ - wxWindow::Raise(); -} - -void wxMDIChildFrame::Lower(void) -{ - wxWindow::Raise(); -} - -void wxMDIChildFrame::SetSizeHints(int WXUNUSED(minW), int WXUNUSED(minH), int WXUNUSED(maxW), int WXUNUSED(maxH), int WXUNUSED(incW), int WXUNUSED(incH)) -{ -} - -// Client window - -wxMDIClientWindow::wxMDIClientWindow() -{ -} - -wxMDIClientWindow::~wxMDIClientWindow() -{ - // By the time this destructor is called, the child frames will have been - // deleted and removed from the notebook/client window. - DestroyChildren(); - - m_mainWidget = (WXWidget) 0; -} - -bool wxMDIClientWindow::CreateClient(wxMDIParentFrame *parent, long style) -{ - // m_windowParent = parent; - // m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE); - - bool success = wxNotebook::Create(parent, wxID_NOTEBOOK_CLIENT_AREA, wxPoint(0, 0), wxSize(100, 100), 0); - if (success) - { - wxFont font(10, wxSWISS, wxNORMAL, wxNORMAL); - wxFont selFont(10, wxSWISS, wxNORMAL, wxBOLD); - GetTabView()->SetTabFont(font); - GetTabView()->SetSelectedTabFont(selFont); - GetTabView()->SetTabSize(120, 18); - GetTabView()->SetTabSelectionHeight(20); - return TRUE; - } - else - return FALSE; -} - -void wxMDIClientWindow::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - wxWindow::SetSize(x, y, width, height, sizeFlags); -} - -void wxMDIClientWindow::SetClientSize(int width, int height) -{ - wxWindow::SetClientSize(width, height); -} - -void wxMDIClientWindow::GetClientSize(int *width, int *height) const -{ - wxWindow::GetClientSize(width, height); -} - -void wxMDIClientWindow::GetSize(int *width, int *height) const -{ - wxWindow::GetSize(width, height); -} - -void wxMDIClientWindow::GetPosition(int *x, int *y) const -{ - wxWindow::GetPosition(x, y); -} - -// Explicitly call default scroll behaviour -void wxMDIClientWindow::OnScroll(wxScrollEvent& event) -{ - Default(); // Default processing -} - -void wxMDIClientWindow::OnPageChanged(wxNotebookEvent& event) -{ - // Notify child that it has been activated - if (event.GetOldSelection() != -1) - { - wxMDIChildFrame* oldChild = (wxMDIChildFrame*) GetPage(event.GetOldSelection()); - if (oldChild) - { - wxActivateEvent event(wxEVT_ACTIVATE, FALSE, oldChild->GetId()); - event.SetEventObject( oldChild ); - oldChild->GetEventHandler()->ProcessEvent(event); - } - } - if (event.GetSelection() != -1) - { - wxMDIChildFrame* activeChild = (wxMDIChildFrame*) GetPage(event.GetSelection()); - if (activeChild) - { - wxActivateEvent event(wxEVT_ACTIVATE, TRUE, activeChild->GetId()); - event.SetEventObject( activeChild ); - activeChild->GetEventHandler()->ProcessEvent(event); - - if (activeChild->GetMDIParentFrame()) - { - activeChild->GetMDIParentFrame()->SetActiveChild(activeChild); - activeChild->GetMDIParentFrame()->SetChildMenuBar(activeChild); - } - } - } - event.Skip(); -} diff --git a/src/motif/mdi/COPYRIGHT b/src/motif/mdi/COPYRIGHT deleted file mode 100644 index 0b8bc73586..0000000000 --- a/src/motif/mdi/COPYRIGHT +++ /dev/null @@ -1,28 +0,0 @@ -Copyright (c) 1996, 1998 Scott W. Sadler -All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to use, -copy, modify, and distribute, copies of the Software, and to permit persons to -whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -SCOTT W. SADLER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of Scott W. Sadler shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization. - -Scott W. Sadler -Cisco Systems -7025 Kit Creek Road -P.O. Box 14987 -Research Triangle Park NC, 27709 -ssadler@cisco.com diff --git a/src/motif/mdi/Imakefile b/src/motif/mdi/Imakefile deleted file mode 100644 index a2c6b73e42..0000000000 --- a/src/motif/mdi/Imakefile +++ /dev/null @@ -1,9 +0,0 @@ -#include "config/MDI.tmpl" - -#define IHaveSubdirs -#define PassCDebugFlags 'CDEBUGFLAGS=$(CDEBUGFLAGS)' - -SUBDIRS = lib test - -MakeSubdirs($(SUBDIRS)) -DependSubdirs($(SUBDIRS)) diff --git a/src/motif/mdi/README b/src/motif/mdi/README deleted file mode 100644 index 354b88ddb6..0000000000 --- a/src/motif/mdi/README +++ /dev/null @@ -1,221 +0,0 @@ -Motif Multi-Document Interface Version 1.0 ------------------------------------------- - -INTRODUCTION -============ - -The Motif Multi-Document Interface (MDI) is a collection of C++ classes -that emulates the behavior of the Multi-Document Interface in Microsoft -Windows. The MDI framework allows a user to view multiple documents (windows) -constrained to a single parent window. - - -REQUIREMENTS -============ - -The following are required to build MDI: - - C++ compiler - X11R5/X11R6 - Motif1.2 - - -PLATFORMS -========= - -The MDI package is known to compile on the following platforms: - - SGI IRIX 5.2 - SunOS 4.1.3 - Sun Solaris 5.4 - HP-UX 9.05 - AIX 4.1 - Alpha/OSF1 v3.2 - Linux 1.1.90 (gcc version 2.5.8) - - -INSTALLATION -============ - -MDI is written in C++. It does not use any language extensions like -exceptions or templates, so it should compile with most C++ compilers. - -To build MDI, you need to set the name of your C++ compiler in the file -"config/MDI.tmpl". An attempt is made to pick a logical default for your -machine, but if it fails, you will need to edit this file. - -After setting your compiler, just type: - - xmkmf - make Makefiles - make - -If successful, the MDI library (libXsw.a) will be created in the "lib" -directory. Additionally, a short test program (MDItest) will be created -in the "test" directory. - -If you are not successful, see the "Possible Problems" section below. I -have had no luck with imake as it seems to only work on about 1/2 of the -platforms I have tried. If imake does not work, don't despair. The MDI -library is really simple to build by hand. Just follow the following steps -and it will work just fine. I have given detailed instructions in the -"Possible Problems" section below where I had problems using imake. If -anyone sees a problem with my Imakefile (I assume there are many), please -let me know. - -In order to build the MDI package by hand, do the following: - - 1. "cd" into the "lib" directory (cd lib) - 2. Compile all of the source code (CC -g -c *.C). Your compiler - name will vary. Some common compilers are: - CC: SGI, Sun, Solaris, HP-UX - xlC: AIX RS/6000 - cxx: Alpha/OSF1 - g++: Linux - gcc: Most other platforms - - 3. Create the library "libXsw.a" (ar rlv libXsw.a *.o) - 4. Run "ranlib" (not necessary on all machines) - 5. "cd" into the "test" directory (cd ../test) - 6. Compile the source code (see step #2 above) - 7. Link the test program (CC *.o -o MDItest ../lib/libXsw.a \ - -lXm -lXt -lX11). Again, the compiler name will vary - -If you still can't get it to work after all of that, email me and I'll give -you a hand. - - -POSSIBLE PROBLEMS -================= - -SunOS 4.1.3 - Kept getting this message when trying to make: - - make: Fatal error: Don't know how to make target `XsComponent.o' - - I ended up building the library and test case with the following: - - cd lib - CC -g -c *.C - ar rlv libXsw.a *.o - ranlib libXsw.a - cd ../test - CC -g -c *.C -I../lib - CC -g *.o -o MDItest ../lib/libXsw.a -L/usr/lib -lXm -lXt -lX11 - - -Solaris 5.4 - The generated Makefile had some unsupported options being passed to - the linker. I don't know what they were for, so I just removed them. - All worked fine after that. - - -HP-UX 9.05 - I did not have "xmkmf" on this platform. To build the library and test - case, I did the following (paths may vary): - - cd lib - CC -g -c *.C -I/usr/include/Motif1.2 -I/usr/include/X11R5 - ar rlv libXsw.a *.o - cd ../test - CC -g -c *.C -I../lib -I/usr/include/Motif1.2 -I/usr/include/X11R5 - CC -g *.o -o MDItest ../lib/libXsw.a -L/usr/lib/Motif1.2 \ - -L/usr/lib/X11R5 -lXm -lXt -lX11 - - -AIX 4.1 - Running xmkmf on the top Makefile did not work. Got the following: - - "./Imakefile", line 8.1: 1506-215 (E) Too many arguments - specified for macro NamedTargetSubdirs. - - In order to build the library, I cd'd into both the "lib" and "test" - directory and did the following there: - - xmkmf - make - - -Alpha/OSF1 v3.2 - Kept getting this message when trying to make: - - Make: Don't know how to make XsComponent.o. Stop. - - I ended up building the library and test case with the following: - - cd lib - cxx -g -c *.C - ar rlv libXsw.a *.o - cd ../test - cxx -g -c *.C -I../lib - cxx -g *.o -o MDItest ../lib/libXsw.a -lXm -lXt -lX11 - - -Linux - "make Makefiles" did not work correctly. Just cd'd into both the - "lib" and "test" directories and type: - - xmkmf - make - - Also, if you don't have the C++ library (libC.a), you will get some - undefined symbols like when linking: - - ../lib/libXsw.a(XsComponent.o): Undefined symbol _cout - referenced from text segment - ../lib/libXsw.a(XsComponent.o): Undefined symbol - ostream::operator<<(char const *) referenced from text segment - - To get rid of these errors, you will need to recompile the library - (specifically XsComponent.C) with -DNDEBUG. This will remove the calls - to the library and will eliminate the need to link with the - C++ library - - -DOCUMENTATION -============= - -All documentation is written in HTML and can be found in the "doc" directory. -The top-most documentation file is "mdi.html" - - -AVAILABILITY -=============== - -The latest version of MDI is available at: - - ftp://itimail.iti-oh.com/pub/project/sws/MDI-.tar.gz - ftp://itimail.iti-oh.com/pub/project/sws/MDI-.tar.Z - -The MDI WWW page is located at: - - http://www.iti-oh.com/~sws/mdi.html - - -COPYRIGHT -========= - -Copyright (c) 1996 Scott W. Sadler -All rights reserved. - -See license conditions in the COPYRIGHT file of the MDI distribution - - -BUG REPORTS -=========== - -Please report any bugs, suggestions or criticisms directly to me at the -address below. I want to make this as quality a software package as -possible: stable, efficient and portable. It is the feedback from the X -community that makes writing the software worthwhile. - -Scott W. Sadler -sws@iti-oh.com -http://www.iti-oh.com/~sws - - -HISTORY -======= - -03-Mar-96 Version 1.0 Released - diff --git a/src/motif/mdi/config/C++.rules b/src/motif/mdi/config/C++.rules deleted file mode 100644 index 3cb56a69df..0000000000 --- a/src/motif/mdi/config/C++.rules +++ /dev/null @@ -1,9 +0,0 @@ -#define CxxRules() @@\ - @@\ -CxxSuffixRules() - -#define CxxSuffixRules() @@\ -.SUFFIX: .C .o @@\ -.C.o: @@\ - $(CXX) $(CFLAGS) $(EXTRA_FLAGS) -c $< - diff --git a/src/motif/mdi/config/MDI.tmpl b/src/motif/mdi/config/MDI.tmpl deleted file mode 100644 index 380e94e0b4..0000000000 --- a/src/motif/mdi/config/MDI.tmpl +++ /dev/null @@ -1,52 +0,0 @@ -#undef FOUND_COMPILER - -#ifdef SGIArchitecture -CXX = CC -CC = $(CXX) -#define FOUND_COMPILER -#endif - -#ifdef SparcArchitecture -CXX = CC -CC = $(CXX) -#define FOUND_COMPILER -#endif - -#ifdef HPArchitecture -CXX = CC -CC = $(CXX) -#define FOUND_COMPILER -#endif - -#ifdef AIXArchitecture -CXX = xlC -CC = $(CXX) -EXTRA_FLAGS = -U__STR__ -D_POSIX_SOURCE -#define FOUND_COMPILER -#endif - -#ifdef OSF1Architecture -CXX = cxx -CC = $(CXX) -#define FOUND_COMPILER -#endif - -#ifdef LinuxArchitecture -CXX = gcc -CC = $(CXX) -#define FOUND_COMPILER -#endif - -#ifdef i386SVR4Architecture -CXX = CC -CC = $(CXX) -CCOPTIONS= -#define COMPILER_FOUND -#endif - -#ifndef FOUND_COMPILER -CXX = gcc -CC = $(CXX) -#endif - -#include "C++.rules" diff --git a/src/motif/mdi/doc/canvas.html b/src/motif/mdi/doc/canvas.html deleted file mode 100644 index d18faaf226..0000000000 --- a/src/motif/mdi/doc/canvas.html +++ /dev/null @@ -1,140 +0,0 @@ - - - -XsMDICanvas Class - - - -

    -The XsMDICanvas Class -

    - -

    -This section describes how to build and manipulate an MDI using the -XsMDICanvas class. Minimally, you must perform the following actions -to build and display an MDI canvas: - -

      -
    1. Create the XsMDICanvas object.
    2. -
    3. Create the documents as instances of subclasses of XsMDIWindow.
    4. -
    5. Add the documents to the canvas
    6. -
    7. Show the canvas
    8. -
    - -

    -Constructor and Destructor: - -

    -The XsMDICanvas accepts two arguments: - -

    -
    XsMDICanvas (const char *name, Widget parent)
    -
    - -

    -The name parameter specifies the name of the canvas and is used -as the widget name for the underlying implementation. The parent -parameter specifies the widget that is to be used as the parent of the -canvas. - -

    -The XsMDICanvas destructor destroys the canvas, but it does not -destroy any of the underlying documents. It is up to the application to -destroy these. - -

    -Adding and removing documents: - -

    -After the documents are created, they must be added to the canvas. The -XsMDICanvas::add() member-function adds documents to the canvas: - -

    -
    virtual void add (XsMDIWindow *window)
    -
    - -

    -The behavior of adding the same document to the canvas more than once -is undefined. Documents can be removed from the canvas by using: - -

    -
    virtual void remove (XsMDIWindow *window)
    -
    - -

    -Additionally, all documents can be removed from the canvas with: - -

    -
    void removeAll ( )
    -
    - -

    -The number of documents currently installed in the canvas can be -retrieved with: - -

    -
    int numWindows ( ) const
    -
    - -

    -Showing the canvas: - -

    -In order to show (manage) the canvas call the show member function: - -

    -
    virtual void show ( )
    -
    - -This member-function is responsible for cycling all of the installed documents -and calling their respective XsMDIWindow::_buildClientArea() -member-functions. After each document has been created, show will then -manage each document and, finally, itself. - -

    -Window Placement: - -

    -The current implementation of XsMDICanvas uses a very simple algorithm -to place the documents on the canvas. In order to implement a more specific -placement algorithm, derive a class from XsMDICanvas and override -the member-function: - -

    -
    virtual void _placeWindow (XsMDIWindow *win)
    -
    - -

    -This member-function is called for each document in the canvas to compute -the location of the document. Please refer to the code (XsMDICanvas.C) -for more details. - -

    -Canvas Behavior: - -

    -The XsMDICanvas is implemented as an XmScrolledWindow with an -XmDrawingArea work-window. The instance name for the work-window -is canvas. Internal callbacks in the canvas class force the work-window -to be at-least the size of the clip-window. This prevents documents from -being clipped as they are moved around. - -

    -By default, the XmDrawingArea work-window has its XmNresizePolicy -set to XmRESIZE_GROW. This will allow the work-area to grow to -whatever size necessary, but it will not automatically shrink as windows -are manipulated. If different behavior is desired, the XmNresizePolicy -resource on the work-area can be set to XmRESIZE_ANY. This will -force the work-window to recompute its size as windows are manipulated, and -it will grow and shrink as necessary. However, the XsMDICanvas will -still force the work-area to be at-least the size of the clip-window. - -

    To change the default behavior, add the following resource: - -

    -
    <XsMDICanvas name>*canvas.resizePolicy: XmRESIZE_ANY
    -
    - - - - diff --git a/src/motif/mdi/doc/mdi.html b/src/motif/mdi/doc/mdi.html deleted file mode 100644 index 0052c2da90..0000000000 --- a/src/motif/mdi/doc/mdi.html +++ /dev/null @@ -1,182 +0,0 @@ - - - -Motif Multi-Document Interface (MDI) - - - -
    -[Class Structure] -

    - -The Motif Multi-Document Interface - -

    -
    - -

    -The Motif Multi-Document Interface (MDI) is a collection of C++ classes -that emulates the behavior of the Multi-Document Interface in Microsoft -Windows. The MDI framework allows a user to view multiple documents (windows) -constrained to a single parent window. - -

    -


    - -

    - -CLASS -STRUCTURE: - - -

    -[Class Structure] - -
    -Figure 1. Inheritance Graph for MDI classes - -

    -The XsMDICanvas is a self-contained component used to display and manage -any number of child document windows. All documents windows are derived from -the abstract base-class XsMDIWindow. To get the Motif-like functionality, -document windows should be derived from the XsMotifWindow class. - -

    -


    - -

    - -EXAMPLE: - - -

    -The process of building and displaying a Multi-Document Interface using MDI -consists of the following steps: - -

      -
    1. Creating the application document(s)
    2. -
    3. Creating the MDI canvas
    4. -
    5. Adding the document(s) to the canvas
    6. -
    - -
    -
    -#include "XsMDICanvas.h"
    -#include "XsMotifWindow.h"
    -
    -// Application document (derived from XsMotifWindow)
    -
    -class MyDocument : public XsMotifWindow {
    -   public:
    -      MyDocument (const char *name);
    -      virtual ~MyDocument ( );
    -   protected:
    -      virtual void _buildClientArea (Widget parent);
    -};
    -      
    -void createCanvas (Widget parent) {
    -
    -// Create documents
    -
    -   MyDocument *doc1 = new MyDocument ("doc1");
    -   MyDocument *doc2 = new MyDocument ("doc2");
    -   
    -// Create the canvas
    -
    -   XsMDICanvas *canvas = new XsMDICanvas ("canvas", parent);
    -   
    -// Add documents to canvas
    -
    -   canvas->add (doc1);
    -   canvas->add (doc2);
    -
    -// Show the canvas
    -
    -   canvas->show ( );
    -}
    -   
    -
    - -

    -In this example, the application document MyDocument is derived -from XsMotifWindow. This provides a Motif-like window suitable for -use with the XsMDICanvas. - -

    -Next, two MyDocument objects are created along with the XsMDICanvas. -The two documents are then added to the canvas using the add -member-function of the canvas. Lastly, the canvas is shown (managed) -using the show member-function. - -

    -Creating the document MyDocument does not automatically create any -widgets. Rather, it only initializes internal variables. The widgets are -not created until the document is added to the canvas. The XsMDICanvas -is responsible for calling XsMotifWindow::_buildClientArea() at an -appropriate time. In this member-function, the application can create the -actual contents of the document. - -

    -The member-function _buildClientArea is passed a widget to be used as -the parent of the document contents. This parent widget is an unmanaged -XmForm widget. The application is free to create whatever contents -it needs as a child of the XmForm parent. - -

    -


    - -

    - -CLASS -REFERENCES: - - -

    -Of the classes in the MDI package, only the following should be of -interest to MDI library users: - -

    - -

    -


    - -

    - -EXPLORING -RESOURCES: - - -

    -The MDI classes support a number of different X-resources (please refer -the the class manual pages for complete details). In order to get a feel -for the customization capabilities of the MDI library, try running the -test program (MDItest) with the following command-line options: - -

    -
    MDItest -xrm "*showBorder:false"
    -
    MDItest -xrm "*showTitle:false" -xrm "*showResize:false"
    -
    MDItest -xrm "*showMenu:false" -xrm "*showMaximize:false"
    -
    MDItest -xrm "*borderSize:4" -xrm "*buttonSize:14"
    -
    MDItest -xrm "*lowerOnIconify:true" -xrm "*title:Hello World"
    -
    - -

    -


    - -

    - -ADDITIONAL -IINFORMATION: - - -

    -The test program MDItest.C gives a complete example of an MDI -application. It should serve as a good reference/example of the MDI library. - - - - - diff --git a/src/motif/mdi/doc/mwindow.html b/src/motif/mdi/doc/mwindow.html deleted file mode 100644 index 8ea6cd8c81..0000000000 --- a/src/motif/mdi/doc/mwindow.html +++ /dev/null @@ -1,277 +0,0 @@ - - - -XsMotifWindow Class - - - -

    -The XsMotifWindow Class -

    - -

    -The XsMDICanvas requires that all documents be a subclass of -XsMDIWindow or a subclass of a class derived from it. By itself -XsMDIWindow does not define any appearance or behavior for the -documents. However, XsMotifWindow, derived from XsMDIWindow, -defines a MWM-like look-and-feel to a document. - -

    -Documents in your application should be derived from XsMotifWindow. -This class provides the look-and-feel of Motif window and supports the -interaction with the XsMDICanvas. It is up to the application to -define the contents of each document. - -

    -Constructor and Destructor: - -

    -The XsMotifWindow constructor accepts one argument: - -

    -
    XsMotifWindow (const char *name)
    -
    - -

    -The name parameter specifies the name of the document and is used -as the widget name for the underlying implementation. The name parameter -is also used as the default title and icon-name for the document. - -

    -Note: The XsMotifWindow constructor does not create any -widgets. Rather it only initializes internal variables. The widgets are -not created until the document is added to the canvas. The XsMDICanvas -calls the member-function XsMotifWindow::_buildClientArea() when it needs -to create the document widgets. - -

    -The XsMotifWindow destructor destroys the document widgets (if they have -been created) and frees its internal storage. It is up to the application -to free all documents. The XsMDICanvas will not destroy the -documents for you. - -

    -Document Utilities: - -

    -Although rarely called from the application, the XsMotifWindow supports -a number of utility functions to manipulate the document. - -

    -
    virtual void raise ( )
    -
    virtual void lower ( )
    -
    virtual void minimize ( )
    -
    virtual void maximize ( )
    -
    virtual void restore ( )
    -
    virtual void close ( )
    -
    - -

    -The close member-function does not destroy the document, it simply -hides it from view. You can restore a closed document with -XsMotifWindow::show(). - -

    -The following member-functions are used to change/query the appearance of -the document: - -

    -
    void setTitle (const char *name)
    -
    const char *title ( ) const
    -
    void setIconName (const char *name)
    -
    const char *iconName ( ) const
    -
    void setPixmap (Pixmap pixmap)
    -
    Pixmap pixmap ( ) const
    -
    Widget icon ( ) const
    -
    Boolean minimized ( ) const
    -
    Boolean maximized ( ) const
    -
    virtual void setPosition (Position x, Position y)
    -
    virtual void setSize (Dimension width, Dimension height)
    -
    - -

    -The setPixmap member-function accepts a pixmap which the document then -uses as the decoration on the icon. Because the document does not make a copy -of the pixmap, it is important that the application not free the pixmap until -all documents that reference it are deleted. The document does, however, make -a local copy of the title or icon-name string passed to it, so the application -is free to do whatever it wants to the passed-in string. The icon -member-function returns the widget that is used to implement the icon. - - -

    -Creating Window Subclasses: - -

    -The application must derive its documents from XsMotifWindow in order to -define the contents of the document. The XsMDICanvas calls the -protected member-function _buildClientArea when it creates the -document. Each class derived from XsMotifWindow must override -this pure-virtual member-function. - -

    -The member-function _buildClientArea is called with a single argument: - -

    -
    virtual void _buildClientArea (Widget parent)
    -
    - -The parent argument should be used as the parent of the contents of -the document. This widget is an unmanaged XmForm widget, and all of -the standard resources and constrains apply to it. The XsMDICanvas -is responsible for managing the parent widget at the appropriate time. - -

    -As an example, consider the following: - -

    -// _buildClientArea (called to create document contents)
    -
    -void MyDocument::_buildClientArea (Widget parent)
    -{
    -   assert (parent != 0);
    -   
    -// Create a main window with some dummy menus
    -
    -   Widget mainW = XtVaCreateWidget ("mainWin", xmMainWindowWidgetClass, parent,
    -      XmNtopAttachment, XmATTACH_FORM, XmNbottomAttachment, XmATTACH_FORM,
    -      XmNleftAttachment, XmATTACH_FORM, XmNrightAttachment, XmATTACH_FORM,
    -      NULL);
    -   ...
    -   
    -   XtManageChild (mainW);
    -}
    -
    - -

    -In this case, an XmMainWindow is created as the child of the parent -widget. The XmMainWindow is then attached to the 4 sides of the parent -form. Note also that the main window is managed before returning from the -function. - -

    -Resources: - -

    -The XsMotifWindow supports the following resources: - -

    -   Name              Class             Type           Default
    -------------------------------------------------------------------------------
    -   borderSize        BorderSize        Dimension      6
    -   buttonSize        ButtonSize        Dimension      23
    -   title             Title             String         dynamic
    -   titleFont         TitleFont         String         -*-helvetica-bold-o-normal-*-14-*-*-*-*-*-iso8859-1
    -   iconSize          IconSize          Dimension      70
    -   iconName          IconName          String         dynamic
    -   iconFont          IconFont          String         *-helvetica-bold-r-normal-*-12-*-*-*-*-*-iso8859-1
    -   XmNiconX          XmCIconX          Position       dynamic
    -   XmNiconY          XmCIconY          Position       dynamic
    -   saveUnder         SaveUnder         Boolean        True
    -   restoreString     RestoreString     String         "Restore"
    -   moveString        MoveString        String         "Move"
    -   sizeString        SizeString        String         "Size"
    -   minimizeString    MinimizeString    String         "Minimize"
    -   maximizeString    MaximizeString    String         "Maximize"
    -   raiseString       RaiseString       String         "Raise"
    -   lowerString       LowerString       String         "Lower"
    -   closeString       CloseString       String         "Close"
    -   menuFont          MenuFont          String         -*-helvetica-bold-o-normal-*-14-*-*-*-*-*-iso8859-1
    -   showBorder        ShowBorder        Boolean        True
    -   showResize        ShowResize        Boolean        True
    -   showTitle         ShowTitle         Boolean        True
    -   showMenu          ShowMenu          Boolean        True
    -   showMinimize      ShowMinimize      Boolean        True   
    -   showMaximize      ShowMaximize      Boolean        True
    -   lowerOnIconify    LowerOnIconify    Boolean        False
    -   XmNminWidth       XmCMinWidth       Dimension      dynamic
    -   XmNmaxWidth       XmCMaxWidth       Dimension      dynamic
    -   XmNminHeight      XmCMinHeight      Dimension      dynamic
    -   XmNmaxHeight      XmCMaxHeight      Dimension      dynamic
    -
    - -
    -
    -
    -
    borderSize
    -
    Size of the window border.
    -
    buttonSize
    -
    Size of the window buttons.
    -
    title
    -
    Title of the window. The default is the name of the window instance.
    -
    titleFont
    -
    Font used to draw the window title.
    -
    iconSize
    -
    Size of the icon representation.
    -
    iconName
    -
    String used on the title. If unspecified, the window title is used.
    -
    iconFont
    -
    Font used to draw the icon-name.
    -
    XmNiconX
    -
    X-position of the icon. The default location is the top-left -corner of the window when it is iconified.
    -
    XmNiconY
    -
    Y-position of the icon. The default location is the top-left -corner of the window when it is iconified.
    -
    saveUnder
    -
    Enables/Disables save-unders for the menu.
    -
    restoreString
    -
    String used as the "restore" menu item.
    -
    moveString
    -
    String used as the "move" menu item.
    -
    sizeString
    -
    String used as the "size" menu item.
    -
    minimizeString
    -
    String used as the "minimize" menu item.
    -
    maximizeString
    -
    String used as the "maximize" menu item.
    -
    raiseString
    -
    String used as the "raise" menu item.
    -
    lowerString
    -
    String used as the the "lower" menu item.
    -
    closeString
    -
    String used as the "close" menu item.
    -
    menuFont
    -
    Font used to draw the menu strings.
    -
    showBorder
    -
    Enables/Disables the window border. If the border is disabled, -the resize-handles are automatically disabled.
    -
    showResize
    -
    Enables/Disables the window resize handles.
    -
    showTitle
    -
    Enables/Disables the window title. If the title is disabled, -all of the window buttons are automatically disabled.
    -
    showMenu
    -
    Enables/Disables the window menu button.
    -
    showMinimize
    -
    Enables/Disables the window minimize button.
    -
    showMaximize
    -
    Enables/Disables the window maximize button.
    -
    lowerOnIconify
    -
    Automatically lower windows when iconified.
    -
    XmNminWidth
    -
    Minimium window width. The default is about four times the size of -the window button.
    -
    XmNmaxWidth
    -
    Maximum window width. The default is not to constrain the maximum size.
    -
    XmNminHeight
    -
    Minimum window height. The default is about four times the size of -the window button.
    -
    XmNmaxHeight
    -
    Maximum window height. The default is not to constrain the maximum size.
    -
    -
    -
    - -

    -XsMotifWindow Implementation: - -

    -As a convenience to those who wish to modify the XsMotifWindow code, -here is a diagram of the internal class structure: - -

    -[Class Structure] - - - diff --git a/src/motif/mdi/doc/pics/classes.gif b/src/motif/mdi/doc/pics/classes.gif deleted file mode 100644 index 9f5deb2c008436725d5bc654ac7a17f563f40557..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4051 zcmV;^4=nIUNk%v~VQK-YS={||`wHb_{g5r~+mxX9S(X9yW7sSr2$ zQfZl~$%eU^(&-s0>IFJFQfiv23Wd7b(drs2D+D`xQEQv4OM|-`(d!#5Yyv#IP;8v6 zjDfri(Ci#7O&Ku#0BxPUjGfG_{T=K*EDl~iOCDZrzAlaK>&_nU39m~pe=liotB>D5 z$S(_^zkzB5x-v*GAsK|K7%F^7N*z0g5G!V(I0~c1{*6<_wd#cn(;aHZ<}lI7F{Kla zrQ}?bSkizX1T9AwsAX`tGl&m>2HCrwk{mB)C7aA4>9ay>Frx*pKdwH?T>3pY z1AmI~)ZKCmB4-D86xu{!cLff37*)$D24RVp^rs<-?~Qojb-txY4P=6a_uqj5o@Qc> zD@Yhmb2{e7<3uR_NF;s~_?XX-MJ_2pkn14HWKhXXc_5X=S@~9#T3)$jmRx@6Wtif1 zIp!fsHV6)sQC5j%nPRet6r2jSDJPwA-Z>|kbyD}snenCR=bEPkI*y-Cnxm$me|~dl zpYkLsD5Qim`r4y}D!L}6j9!W#yBB&Vk`C+jY+ zz8CAPF0{&tp}tzGYYV)taVv~M28;eIpOyAlYqI(k>&&pu_5L9b&p5W~n+Aa#}wc|#m?m6Hd*=|7buKOXP?@r)IzWVOVufFt(%3r?%4@_{u|8`pL z!3q;Q@4^nplJLXPM7+?w68}i?80TJG8cVPSmhp)egv_xpEN$4|OdWB$ami8EnAuQN z*haF;mbR60Ts1ptCL%V|tC@!C^?4_Ne~nn(aZtf&;ESU9{PVhm#pvN{i4lgiXHJVJ z;MHDp&2_{6i5;~{FEIFKyEeWlip&uw4iqQghq+k7`^apnLI?U!)> zK@NEAp_NWL=PK;1x~dz7UYyXp8|`-OzhgLf;Vj^u`@}Mb&3IyA!<}}9ov(ePaiQP+ zaq^MsjPrU(Cp~;$-#gzT)21IU>z-h`$-eq;;%R4|>$~4R{A8jp|NHsZzd!x{+dn@5 z>aR^XK;Gw?a4z-4Z-IIeApaN`!2UV#f7=;U1R*%U21;;)7<`}x7l=K>%`AjFO5L)K z^$8M&Vps-@*%K0|!g;8$g<4=?40m-ya+&aexk@3hTt-9f32{F;9HJ3TQ^X@G5rIiu zVmF$Yq{CsZhbRal{uXTbLwHFMg;j)NB(Ny1DWWcmIwT_wtmv2>x-g7gG^51O=)^dd z0FH93BM9hd$2{^zk2=BQ%C?9vFG2z(encV<3K<0$x{(BkWQ8Edwn!e1k&R`f)QT$gXuNFrDT!5-@GHm2L)wU7~XfJ?jNXG3YZ!{9LE8x~aHd zN(m4>>s?^}3K}2F*=dg@EZFxRYM^mK^n?eUsF@T>HHLn)K^BscI*nJo-vy6LbMhzk ztY*<5@dcBNW7G7GRymp$ZlzgjX@On}QWDKnL};s8M}I04mCgt;PLrPTtT?siQI2ZU zqukV91eT-%C~Ms->DSPyOT8Txr@NsY^(w<2&jAm1Yu#oW?N(IxsD`a=oljab3OVTM z^>lpIo>&1&R?3|8tk^*ijYjuR!9l~CPs?UtB_p}L3Qw`0S!t>;fe%h4rXE~3^$>tJn1TF;smu{FX= zQWyT)PPY#AwSn#(f6502|b}RggVe_2&5~LzC!E_Og8w%yD1HI?H6$ zy3M7lPlzJk_>%WS=C$r-Ggn;Df+@28bZAD0d%fW`4XV`DZ?(EyB_&%sGjY@2=YXr-;2~Vee+wp4X!=ZKHW%ZDyFIQ{o<) zv|{7;(YMCxwOx#hmnWb0c*PK2Nph*^#3D11oy!!Wl23AEd)4vDOJJ-eSB&K>YkA9D z?y{G^{4gpj!OEvpqL_EW>v_+7PFIuf82)F5 zO*zm7iE=sEoDf7O#n6Bn^aLNxK~}EPm6L{L>QnEp&$O;ckPn~u2qkWD z^kO{YORhM_9l7z3kD1}$5_!ZuZgMDxJmrgCIm;LB@|V+s7IG$w(yV$FICZLuSSL17(*5$NM@%qNM|79QD@7`wC z7S($G-5OS{sz9Iud8r|i4~oxTcf@-oP>}hJQ!Q&?+kSoWO2w;my{`F|!_~3p1by}h zTlN|6^zmtVV;J)`B;PC5kk3s>61h*MVba zf=L#3we*9iM`va>gaUPb1}ID;NP-ENb58hHB^ZTLh=3Vbg;vN&OQ<}97IVmy4()(> zG0=bL^Mza(ElD^+7iE9r6nq$%g-{5CB4{o27j-!!SlG9N*ad`fXbd7ISjhodEyjRY zK~(!ShS`FKb;yVzRUH)uHp($ofW=jmSBV(2h})uu6zBdsAp#tgH-NZRdyw^srI>lo z0fz5Dat7CLbEg@vSYXUWfjhQTHc}+1Xe+D8iWcRHkpYVx)mtN$75t}DFGz=SsDQ`# zhlc2j%{W$|11nc`Sc0e`J=ceG=x1pdh#k_5i{o0Ubz6Z2U9^LRF-V2j*o0~5RV1bs zLRKNWM~Wsfc*aL|L0FC;vy1ttkIJV!SeI9T<5FhfT8CJHB@!_Eh>!^xa9X&947oZE z8DS790zK#hxG0fxr;PP@krefWb|^|J;w=`rk*5e~Y3GLYxFRQYNkur4KFEi*xM1+q zNE9h^Or?==2UZoyk1crwdS{aaC3x*9ig1BLx&FtKEjLsu>0Osdc$Zf$H0f?cC=8<@*mq74-kN9*x#X1uR9&C66P?>Vs z!G=;-mth%Q34@v37McZ=iH(VqUHF!!X@T|_m#XX?kdlMmTN5`I=bxcx2d{wi%qsR))#QoX*IY$GMu(ws-O)kM#w3 z^;1@p=q8q#IL|4Akq3EWq6bN1J}EMf{@qEQ&tjfJNIaECS)pa012vAOc$%mL!A z=6I$nnx?S1rZxJK9{Q$iN~dBtr*(>v*?6aMil^GRr+mtUa{8xmx|o_csD;{}jX0VxsZ!dhAF8N-8mb53s7&Xng)*vQ zYNw!zhEDgA8iA6_LaV82b+L+dZHlSzQh+k4lz`T%IQlVZ0Si&uSTISXIrN*?RxLlN zeL(4!dHRfSc&FOplk-$lowH*a6nHw?ov(#5oQJDzSDK}DQ-(L56SjZFd7w;*pX+$4 z4!JQ?DK}MGR}5AQ1ZZFu3aI}ooArvJ;YqN~$9~)gjdeAC{neqnxd?}YmM@A}-eeQ| zs+NffO|=@R4yy>uw|EmsnOo&!+xKAM=$Yh*jFuXkjd!dF(p{%@6y1d`ni-JPm$22S zvcy`VrMICD_MJBpeTc!?uZlUT&8lu!_fG8kUB8-?z!!i(3yzhEte2Xz{YkUs<6?Bl zJuR!Xv`2iONv>7vs;DWp_o%03yRv?YwrN|cYs;%Q>bA(~hjF{HuS&OXE2wu{w`8lg z)S9<_i>RLpxB%O>fNQi7Qm!v|xH7P~=hnE_Ik>%=Op!~thDy1T8-|xlwSr5zkDE)E z>$%3+xrxh(qib|38@j})xzAIkty^%b>$ph!wQIY#i@Uk2ySvM~z3aQb>zV}s F06U_@5YYet diff --git a/src/motif/mdi/doc/pics/mdi.gif b/src/motif/mdi/doc/pics/mdi.gif deleted file mode 100644 index c43414bc62266d5cb5f524b85f7a2b7016acf30f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13227 zcmV;cGgQn+Nk%v~VFUsk0`mX>0001vsg=;%)8*l$PF+&2q`9f8z2Dp8VO(gRma*O4 zM)j$~<`XsWJk>%OHR z&vb3yLO|er@BhG{a7Zi~kI1BQ$!t2G&?rzB4M=2xoHonddb?c04*M;G&FHf_&0f3P z@V7ippWEyByFSm~`}=@@f`No!Vl#tk1Xo-Ej*pO$l96MRmY0~Bnwy-Ro}ZwhqNAjx zrl+W>s;jJ&Sf~V60I#q)t+%+jy1Tr+zQ4f1nLDeCvtc^PvCGQM%+Joz(9_b@)YsP8 z*xTCO+~3~e;N#-ufOt?EZMDGwPK2;!)si*G6j43n`yv+P>%abo=my& z)wWJwDYisd2jZoUn%doLDKaS2mQ$-<&H5DMPna8NA}mI1XqaJXfqFg3v2RDdA3q8X zoOtWw$df0J-BmNE&P|ot_Dp&cb4;jBYZty)NhHrn?EQG1!R~BOAsN;?ZlDJ@f5Jm>%ibNJ! zq=f?Hc!`Dp7G~pmGII8wB-wFi<$OaLspXdV?FZX`vjzB}jZseGC6zxuSe%0ka_Q!q z-dSi}U>iC~7nEa73Fn@Cx_KsfU=Aaubaa)OVT*kxs_2Sx&PHdGwcRP8p3hOb=%tu~ z_h+Rs)=40tFBwV+qM4Rz>T!(@6Bv)Iiov0zA6hz_tf$s$t6rO0N9$mpkvSHrw+1V0 zTB!~OtfNm(`rbN?JOYXVormOC{ z?6&LfyYR*<@4WQZYwx}I=Buxg^qTvwSj$MTqbwQ~Z1BMdC#>+o3^!cCJUP~bg%}7_ zZ1KeyXRPtY9Cz&T#~_C+^2j8YZ1Tw{r>yeIEVu0P%P_|*^TjUFAh9wt=dAP2JooJL z&p-z)^w30Od_Yn&3`j8o2{i5W(@;k(_0&{XZS~byXRY*t@N5dKu0Trt)_uO>XZTH=H=dJhNeD|$2+r4@OH`9I>ZusGdC$9M7j5l62;BMng zxZ{*pZu#Z@m}jmz-H?wdc-)(ZF8b)Cmu|Y=kblL|;HS6l`s=XAUV7)CGR3;=xaY3> z?!2d+`eCbs-uv*x7jOLTw1?Hp$JDv!V;SBgeXj*3N5(76;coZ0AL{F z1h~8iT5W)r%1&rQgMS; z%%c7lx5&jVdhv^345JvwNX9an@r-4}A{wK3#3U-QZJv{#^&|+zH5NdPcFdz5_sGXS z`tgrv#3LHp=tjgXF?~*?8V>U)NI*LBk&uj}Bp=yGGZM0phNI!<=6J(8-mz$)45cVX zNlK9&K#G^dq~8u%y{#>hjVUbR5NAotTH5lK7?dRmbvZ&jrc#xB)1(|->B&lh(U_A= zrZShwOfe$Ui_h$$FJTDG!m)CHiJaOi?|8~IcC(q_45v838BH#hbBohNVl{&a$J(JM zn^N26Ikh;?aoY2q_#9(Bt*FLc!V;C#Tqiq|g-uRA@tgasA~G$IPcT-Xp%8^+LjJGV z&2LKcpKJ`MKvCCD7=oI^TOpJa~og2m5 zH6dtFMHZ8!#{_BtTsl;grj)2fRVhrDx<;9zvZ6KRCO~nTQ@aV%cJPdvJcSBPpd!_! z6qsUITWZv#Ce@@95Nle=T2!MxG>b@Os$9e9RE%;}p*H zvh=WSEh}PCnpVUXcCC)p;#%iQ*`NwGig&$YUNyScx?T01J=Nw<`5SH$9SB&Bmo7loIp6Q0U%Ufu6*uw%QC{K$k)e@_9tUo3! zklUJK1_SxQ%!O`@uUpq1&-jiv#xdGJyfhv+xyeh;@=~u{R zSk|(dA|(oY)4b*ytIIrM7MA+i(4HgZZvP!NyLvy4TIJDK6mM@Q$~<;qB&(QajvN^K_&|i%@j4 z``-W$xW+6x?}Eo$0rdtmzP+|=D`#}!>-1y+-fe)2TU-GOu=vFh?q`KVd~5nHcLL7+ z$&Uk5;uP1o0Ti$Rm9L!R;5K>I8m{ermt5wBM0v|Kj`9AKZ#?0F#<|o&&g@Wc`{qKI zq0Uv_^PT^^<3UgQ(`cSGl8apG<6HX1EAI1`10BFvhZ@lxj`XniPwN%OIM`kLO)~sH1xQh?%YPY!0G5+;?V}0y3=WyBWPCvY7T<=cjyW9OPb-B~g=2s{D^|YRM zji+4kF_(M-0AKZ^M_%*Kqx|75zjMs*8uX6uB;@N3`pFZ#<&{@C#Z7PT)^GmWO#C$K zNACIE%T0m64?abf9(&TaJ@b-J{Xqr)d9>j$hrGn4^rugK6uNr>O*iS0&Dq?zw~wf=2$ka_lYqS5Yhro;U7-iLdLw0m?X zei9c*`KNz-rgIqAfDZV8@Ar0aCx84#e+HO<{DgrDsAdcZfe?s&|5tmh_kE9Nfrlec z0+)g+xG^2re~1@>jF)s2XkM##flq}(<(GasxP!K|exuia+ZTe}mwW;UY@JtwCwOM4 zwt-C8f-YzPLD+Y;H-lz|goYz(OUQ%@=!7m9g^M?ZMOa`*Xo6R$gd?SeTljj#Cwm|$ zg(Em_HAH~nmxPn%V^vgPcJyE_hKAp!hCk?XUWj~zM}n$HhJ}NLXJ|!uxJG)&V0_3& zTnL11_=Rs6IKvcp`!#rdgNSq`REvm4{zz6`j|ho=_=He6iGpZ%gt&Z}*nDThiI#PT zu{Bv})mpT;T8kxHv-pXl*hP^Dh^PpFL}-b1hKW$7iF^Z#y){^5wPGx$VztDi);vkV5no+HioTOe`!Nv{`6(=MPC!R6-3WeG zc!*}$iT(JGLfK;Qm5%I4lVfE5lc$K20Z5FXMRq7jHppvAliXNn4~dL>GnLY$fm|t9N~w@x*_8Eoi6)7U;OKlm8H;PFXKe|VL&%V0se4da zm#=u2%b1r7=#`Sll*1U8#W6nS!a0yIGvY z*_)L3oBHFBw7HpLGkzMxgVH&j)QLepXo_yxm$B)TAtr~Yxrskjo#Hv3>35w8$(JJ8 zc(R$9%{iPY8J?_(hRFVziW5kZa>u=JVy8DsOg zklP8I-5Hn$%1sEGpcb~EZ@HMuxsxSWpb>eX6q<(S`IWF)pWInx!Wp40^r8A^q1s8J zn7MB>n4jPoQh9a(d-z8-DvRu;qNEj~i3y4YPv@@YKufkp@T|~ z89JL}il{~UWd3QoSa1r8f6AmwI+>OFn}r&jMB1SeilsW*V1SgSqROK^Dn&tvo#+Xs zBl(w8dYV;wmW#?oo$9E51gj9HrFmJZaCxc^dZMbDqKvwy&uFaAs)&j8jIxTX80uHd znW=QSsb3VV)Wt_RN@N##t^O&GKuV9wI;7nCn0R`ovKnpJdYPBXp6yzjd9zg$8n2Z# zuMN7cyJ~dbX{C9}ug~VME?Tbv>uPgorXG5v7@$lVV6gCbt{~}~$?8tanyL=FsuW9V z2wR#`DslzbtVa5=dTFsYnXaa)vFv)N-DdZ5PHv+8EExhkX! zYi>HL{+}V`vq)QPK&zfO>z%!7o5i#*QaiO&TeViJE=wDwB|5acH?Y2nP*)qaVmr2E z3oltKpd;(FcWSh#YQOCPj36R5fZmDSEn($wlmtc7^1iL!M7%7 zngaW@`5Lu@OSs`-xF6@YR0_BRE4YrEACL=ih|92E3$i4nY(b3%d3?8wU!&Y z_A$Enwz)*xxr_U`s=K->yOb;omkOJ+u!}c%3%av=9IP8|uG_VW%e##GyWkPL)mFNR zd%B*Ry2z^>%A0J%Te2OC0C^j|$T7XV#=M+cym!;P+AF=ao1IXKwp**a;A=PHJHFfg zTfVnCr+u5Y5ZbKS>%ObOy{cBdMH{$mbieqU8v4s=-ut@iTQ}_+!1)WmBPz1#tG1eI zzrL%$k}<%JR=~vTys-edq)7A!+WvAQdYwnY`n57#5#P!7@NYsCWdvJsGLc{O57Jj zjAKR|!PgtaRlF8g>|s6Jzm@yKU2MfnoSYf!QTNHh_=?0FT*i3u#Q_$^BFw&2499VN z#`NjHLaV+sA;;jA#WB0ZFzm=y0m=TsMaMQg zH#ls`XMxF`CCM%9zd&5co;($xyjPmM$OwGLr(71PTvejn#(@0BuY47;oKvf;#XpR_ zrhLo7kjoo2%XSMkoea!XA&Lw8!lg{kmu${0%E!42!OhIhzUrBe`Y%0Px(G*?LEbut=%dGz_(LI!d;^S4N!>^?)Y8o*mpzUrn~@Io-{r_+8#$>wicGpiV+kkTb4}h7Y~Fi4k@JmSBo&a43aju9 zjph2?%bi=9n1Kl%;k-RH(B0spolzf-PP1B+5!PPRs@|^^s)1VI9Da-*4&f;7+$HVQ z)=c7-ecqpxU=p6*E*6a|ew4)u<3t|cLX}|%ZsYVs-%YL6PmSLWPTH6)Qm{3Y>kX(E ze&I1L+B2O!Q?imC_@?P)NXXy3)?dv|-8(i71UQ82|XfX8a%2YAbUe?Bb z=Hi^@$`0_d-cSQi@RMZl3ohx_-sil|Mgfm#5ijwPMDfE;*7JPdq3-AOF7U|h@pc6A ztgY{?_|WZM=~@Es51&sRukwz>^0$ugBp?3sqJBpkf28Y}@~KVqIB!Y#9_7W}^LTyG z84vWFT2f|Y^i3tKjV`H@MfDkV@FNfEK5z0t53DOiMp{2ej;i4aiuI1wV=q?gi1&(>_d`GSdtdfI|6-c0_CiiqZBOi7pX+h&?o#dW-zxQZ-%^mz z_j@n-lFwL_k7jQAsWhwh+1+5Hs`KgY@&pR=i!bv=Li3E;_mQ9ZcR2Z$@A|OcTaX3# zX@A^uUi;>B_#*Gk_6qJiKKH0p_lkJ;eP3IcAN#Ri`BIs+Ngdo6vyexHi8INwsl`PmS?)QZ`#xf)!Q=VAWEE%pe0>?{{z~otE=Z8aeJPficm&kU@pw7^%|WNux=X zN@E$&B^;O_(6Lj|>(0%KwB+&R>2c^+urP`){fCt7S(M?_s@10OToYC^;c&nK~W zTse9T+ZXIuwAaiACR`YmTc~g!R*n0sE}@)x_0r?(*K$a}h7XI=+}Sf0#I+R9TxU}< ziO3cwZ>)UTb-v7>K@FB&yLM=EF&$Ekn9lL(5vf=2y{qi?@n?6V*`5uc&2#9{rBA0` z-THOx*|l%y-rYO?cUrlnIwU>UoodK;w+=^E94K=5k76@V==}SA{Q33o=ifhi_^3XZ zY8R`1L$4n7bYc%D_u_NVk@@Ij1Ar7NwD3X-~HPBk@5RMUKGRo)l{=0Mb3 zgmzXqWh53?<@~_{mNkHdku zjbFRbv|oSM8i?F{3tk4@L)9%c-F5}sjlg%Gg>{nk?5(y|gZ0gp3w}Eem)CDgA~<7` zaX^<uwfi+`iai{q?YOcXt7iGtcUY6zZUY3;tNS(eHb^Rs95 ze0NB2&z%QhnSVUYFgpZ3zzPP0Na^G)h+TGC510P-(4W_$@$rX6*wAAe&Yrv!FYmtd z@4=^^?ev>3-+a)b&)?kM)j@y*B%rb=$1=dVZhmQ#-SYldqy6zO3g~;_p8{Aw0utbQ zYl4^AjF-8L%nwQqtY9Q)u^b8ZuY~0a;0#i*LDp?Aa0{#-_(-@yD@8Dcy2GLR{-}34 z7rfAbt0P){NXmpckJkxDI;fe_tC0qrqHfk>Pk4=TpF8%mJ{PZV7g z#rPm9#=we46JE=R_qs0Pg^Sb*;~AYNFl!jbjAsPY4_&CiAqMY#i<;pa!xutBMyift z#9iDtRhT{U5jkmu!5aP6M#~*>Vu-Y#_wXml7vzc?Sqn@gK{+ZvRuPa_oInKL2FsdN!Y1mpc}Z>>^Hp==WGBb|*+eqd&5>)_ z6F_{q&SIrfjqfC88xy#sSSquV$)p`XS3pK-o|7#9bZAi8c@-EIkxlVRXg%$B&mKyU0?epR}e| z=>yiVI%BNEtg1m>3QL&QaF%TSrCXT;*SIocu2dBy7U8#14`wx-YCGx*{c0P)1{M;7 zEvsP(iB)=nQ-m;TYzZHGo1IEFpgvV)Wm|dJ4$3dDYTYVdYx(|J*+f>fji78Gv1i$C zVm7S`wI^5k2;0xdcD9SCEh{A;ld~32v722`XDbNYEroWtAt~-QaeGj_E_a!n^{pLm zxkKSj*9O&vCvN4b+{_lWx2|>OcT*T%@zQ|21?47o4WwP8c9)Uvl^}fMD}(vg)vSnB zEq>Q4zI8q`msVS_7t%SQ|Be=rKeer5?Axf-^7f)l~j{q0; zw8P_QhCRAO_R`eDkGxuNO?={Jr1-Wg&h1MLyx|yk)x%0D4M@IgHOCe}ZQq>)DcP+_S2Mc!D=}@?@ndO#Z^|__zSf@Gnfuhth zx59kqE_+MQB`z~apj^4+!VztH1*3H8)K~uUt5m%er~D zFWxH#FmUMCCOT($#u}GN9nFA{dD4vdvqn>^$u~2XJ#zjZ&R%h9TswM{IW>u@S8cL0 zXYnH#im{E+3dc~3nwAu&*Gi{#2VCF-CwRf3+nFZ!xz)uC zbVt8^VA=^u;uEJhh7PWogqL~Yc5QQZW1Z|-{=28*BPaQfF0RLF*LwyVAMmS(`f+ei zihapSSix<6bDR_KjsoXL{2IzH`E4+{r9AZ^MtR zULebyeFID#5Yq?sQuf^EFQ7V)FDx;mXPtJ28ldF7K0dJPNbF;OGSJB?bcS>L<=)0R zjJ2+GqIKP|Gk%`baa?vx_t@inuX3E-19&tiZ15-4)(&|{cSj(e*r=6qxBLBYwg05; zQa#epY4`iu z2i1MSo1XFx9x3#Va{m9OU-8!$e)cU^eD=YR@2j;e`xgV;Gmp_FRgkx<*%SPWFa0|& zK|3VSYd@q*ItxjdlG{L%qccs|vM_@;Eg3B*kJG%+=Bn`7b1X!1( zGl10LKpdnv4+IAh1DHm8wuqv!A9z6Via@LTF&Pvhr&~fMyg6IbgqvzWNPD+u+b2Ad zG!!H*6-+Y=BRUL2LfS)tCLBXD47evOvLH;dDg?sjBf{x2LcI&VCW*l?EC5ftLp;nw zJahv+>_b2NLqH5fK^(+CJj4D3EVU2(!4UM7FL1-*(mxk;xY_%+RCo%@3xjr3L`4)q zlENuI%R()zw5ifI&U+(C9KQeaiBqt|OZfl;XS&8L*PR%?31%+CwZJldaOr#yhnV@M}6GKwa~rAQAg2&#BY2- zhN{4YI!J`v33OBnfRrqDG{vh!#e|$licF$V7)Hx$$iNcFj^n>yG{}k!Ns**LN+8Bw z%f=gc$QA>`k!(qdT>i+U(8##rNbCDT_H#*`L`aytKV%#`m0Z7Y%t@itNq_vRp7c4I zd?k;Z7djkDr?j&9Gs(+C$(7qeUUZ|Cyve8BN_%;xNGrdXJW7>IN@HV5t~^U-ib{^z zndiess+2FQ?8d5#LuPzOaYReJlsy!J8@9Buw}eYw6gIguyMa7K|I16nq>L;psRqm= zUiwOEkjb$6$terU#Jo(s@W4lNw;;p@$%HDh^d_yuOwuH(z1)^7#1cl^Om+H80E(9AJB&{Ob+GwlOcInEU-8Z6z)u(uPJYAA0gX_&DayB^PHVGH zcZ5(0-OwSR(7&?KUvp4jWXg!XGolzRCQ5!|kom2_n zL@5mYPns#w8x2w+9a17KQX>u09Ca!XT{RJ1${z(M6Rp89Q2+%n04lvwEX`6a-BK>? zQZM~dFbz{N9aAzbQ!PzWYGP2bgH7w=F$pxxC{4O6T>vXJQ#-v=Jk3)*-BT|`Q;}KH zNo!L6o5a32H54q3QYw{FMO{=zZB$2nR7j0fNi_gJolZ4%fgY_(4J}kM!O}57)GD1+ zQ5{uMEmc!x)Ji=HKvg(4Eic0C$U*HtPW4nW0o7BzRb0(gU6s;QEr=bhs7xiuoQP9e zJri5qRb)+8Wu4SswVPGdxK^dF>uOKMGSOlklw)01ZQWLGJ(Fe~m}i~3Xce%zTt;C{ z5NkcrnakF0ZC7{ARR#OUa6P5Tr& zd7Zv`RkM42(}*kpPBqpPt<#dtS(4REPqfb^Q_xS;SdKkcC#hL%RaYuKQl(v5rfpgp z<=M^DHAKvYUv;Qph0~8+SBZ66uI*Z{Rod{3+Ft<}1_avC(b&~XzJzU4_Jq}r)mJ`^ zTe+QEx~*F-4O?e}Lh)41))d;8jWUR=R=XWs!Yy3G?NYogH3bwx#vPZIMZdq*H>J#1 z5(Os?z1&QsLg>`QzBSmZo!QIfP?5r;NCPvKZCuAi+q8YVwRP3Dt;x5oT;}A%@2p+h zz1{8n*84=;&;6!V#K_Rq4Bh<{)g4-g``zHBkKygyOYPmvLf+)Hjpe1<$NtT~$Q?Sj zJ=bVF0CVhK@BQBEm|oAUUI@J2yffDY0$=rAU-sn>@f8g6Ekg5sy~&N;;NVC6&0qc9 zU;gc1|J7d)g{=5}!})DF|J2mmOkg?+V9+Yw0-o0Fg+~RR;Pg7pR;*fpa$XAFVD3^& zsl?!QGTyu7U=ju)=mFmM8sJBKU^hL&5`JN>$R~3$TX1z?guOe3?L{YrVIJl?3r5X7 zLpdAX#!+0)n04VEPT~qi;b=15s8iu}WZ~DXUxHNP9)?=JJzXt^%+%#wDL!JltYRyM zVJwDDpDj@s{O8VU588&2=&Ex9XkgJTuKc?l&eBWKJWDOdUSYBA5 z6lN!=;<|}64*h1uu%;s^sVj!%o4)BgwAZ12(5ZgpWy5NYPH8EsrY{$)0S=u58N=5i$5{ zKYnbnj_k|+Y|svE(GC&;$ZVlrWVz;S%mlz1G?T=BZPhgz6WI=K;U4aD18xCo?a~f|#-8Tg9_HRo7SsM|>&xi60rKtS1_R9&>A-GoqO29R z6Ck&fZp(Q0v1meyCb=B1aPihw2UY(Iv;p9zPQSjB+V|gs!XdW4ZEkR&V~^ z@>KM046G0h9Bnv{b2%@OLveGszV0u`ZvIVH^P%kW00izi4|G8v^b4u;+QxG)Snhu2 z^FD`g;(l~UkMyQ9b3of~MsIW}k#tSpbWTqa$Zk%qTJqq&US6zc5dfh|2X!Xw)U6gc5*Lwb3b?W)pf@f_mG5WcYk+yk9T>W zcY2?9z@24w&v$*V$gdvJegAiW=bYTu@qjOQgO8Mc-{FH_c!uYRfmi5;k9dhUhJ;u0 ziNAP^4=PK~c#iM*^loX75BZFL{&)@-d6PHzim&#QU-^6|c{!~2dba?Ww|ACj`IKjp zs$TW&G>4qm`R26On#XvT*VLZ(dF5Q4qBnZv%<#DtS5W5S9(HpiL^(1x*tTlcl)CQ*_r}xFse?A5zg$LXF!YBPXZhcUAea=69iC=unFZOvX1>1jo*`NK? z#6(_$ecZqJ${#emcSU*rtbOP+euldI1*3iDPl($;ez^bq3|)QU=i;`se&Anz=BNI( zY{cuwe!owBkK}&7B!9kSoY5D5`g8y92Y>WNe}LD0<=+6o@BI-&V+cT}6of!Z;LO@7 z7>Wf@n&p_1fZ9rwg=I5c+c%!;JKy_1Fen@ni^d}|N#pM(-bY3mh z>GY+b#v^Ym!-aj!ps>kYc7xCtB|fj;^ZWikU?2?>mDSbM)76z0&6)?D2;3YP3nUxN zod(CHC7I;dB%Pg%V5#XTYO3n$5Mg4}RMk}$!q(G)XJbjhn|E8Q(_c~*(}!VW)M2;xAiUDxPFWtYVzt@MNU35vTfT@On%ozW-f&$4H~?JC7F zOvsmU?fzv!FdysF`B3~u_m?*EOv#k*8^t};B0hcnH4XQk;Jt1IvBy`k-wvr6yY zHavUrPQkCA$0+7v?C#DO7`kE5hN~UNAAywo2i0*P$~a>Z4c_-)UhHMK zk$rH>YR`6ir8-sR+&YLY3X3qTHNr~40-6)v z{^@6)9SS-rh;lY*sELYl1L>K1W=dhAF1D$nq?DSPAfdTos^gHMw#umpjox{TnRNhq zDz4vIN*aXar3or_u-eMqldT3jDxFArHP#FMdz3ZT zT}KR*)M2-C^tUpbeKy($pp`b;ZKG_G*l|PCpdzY<+_ck`G5u@a{=h9a;LAXiR0&uZ zj`VJQZ??ALdjB0bUNxd5?TdUqShb{@*!J-V7V z>z{`{dmr&wu5-dSsn&Ds7rudB=lsMfJMG2eLH4RQ4fbAYy8A|%X3h5`UG&%jJ=pTm zzeha@(9f~GZ|F?|wejU2k8@);VxBbi!~xGe{J>BDzWd6z{5$^fkEDP0{jVi|9f)VX z0m36+_+b*Sa-_Wa%};m@^dJ44H$2}hFns&l2>&u@!TyDSd<6Vp0Z0CXyX3WRgAByq z1LIc~`Sp%{-!tI`QOH0Q{!fA(6d(w5_$33@1%V(_Ux8N%>_ zLj)krbSOm~Pz`lPUywwso?zo$h=mJmV?PdD63<_Pi%P^XX0pweeE={3k#ID$s!vw4eq(C_?w? z!`rA&G}3%1L?bHEiBhzp7QHA&Gpf;za5V;S36lf_cDvX;FpW;3hV&2qN0o^>l0 zAnRB}BxNF|EiGzKE7vBeHnpy8Eo@&a+t|`}wzjP;Zf~pG-12s}zU?h=e=FSJ5_h=9 zEiQ78tK8yVF1e$WcC)M9?Q*xf-u*6k!z9>Ix1S~cWQ|0s9MSTX$lvs(D>>aYDyPDd|``hXp3|uSxdT3&| zJIq{6d}|E-oEuF&{YNR=maT2YP4eBn5-x5=UjB3rqK*!Z+;093pDsVbKEGa%zt7+A z{|_*rz<~q{8a#+Fp~8g>8v?xNPzFQ}6C(<;D5WAs{uUZDbd30MV~>y`lj#dVl3~h{ zI99Smc{1P22QFvYyoocX&Ye7a`uqtrsL-KAi+-qSlmSu*OAR(n8Yd=H3{M+W9e8yr zRjFDlWSzyekh3pcLZxpeE=y^GiGTA_RQ?(<6*@Xx+sMGBT1 z@|(JIA4ern#)fdz1&dEM7WKH3j>B;iXOl$Pa#&i}7AezA?}B8CpDR0nNZQwF&@Bt+ zbIND0h$Sg zdtWcVJc)Pb8)9cB&Fz?>KJ+1z-+tbGBxa8OEHQfTA9a;nBpDLok!%APg)7(kw{i|E(OqWws@T#AP|9bjWzvCzp7B321%+zWF7X77$qH zoHb&HW}#Si>ExV)BC6-1h0VAVqwN8?Vp@_)nr5j97I$f&r;7Tgpsap}=w*x2DN}18 zx;kpBrt%r5p;%@L>!yt&Mr)Fl_ILhjuB)y}sfCvM%B-ubrV8zyyv~ZPSHljPsExRO z%Wbo8npbU}i7tz(oY-*$AGx#uGVP?Q9-FML*Jes>xukM?uP57n+NQhMz*}#)^P*d@ zzM7J&u8}S5NoJb|$Eqf1THYIR#Rmf$Z?xn5>#)2X-?}Tt$q}+ErhvK$vYdcfyz<57 z4)|M?G>39=#w|Liv5?a8*>bNN+UnxWK!4)#ia19}v9}F>%I><&1i0+ZBg`+~EfeepBHJ`u?Z}B#c&%ZSK>jE`x z`LBQY8=wITh`{|FP=N^qAi{cQyZ=>#ffRJ$H7qE>3r^5WRwG~qCx}50hH!xvl-~#& z2*MOL)(J7H}TBKbW>6gSJc2Ps83u6~dxW+ZL z@r>PoV;mWF$Dz1!DtpXh82XqyI{L94fCQc(2U(6np5>5{VeF;v#NC+wSe7SonapPtOWNC1L(GNFPooNApP4SQuZczrm?%5fMOC2AXeu-(q4Os~ z6Q-eWX)T4#9sy`)_S-GU9t>AO39-X9&i1t#WEoc*DWzT=AbPSj9 z)Q>3@pWd+gjJB=qY7}i1sQ80ewSJSW<}{;M_sLjHM%E&I)yZBJ@-n-=q_R$3YiB=p z(~WSJa2aLEXti-#n_QN2zI-fKCo5UyX)=qRoh;-4OUkzP4rh&}S8ZG?N7!z3IB?Bv zZ_EBBF`l*4x6%Zzabc^=X*#Mm)@0Z*yDHq_+P1VbEGadq`_<)^=y<7(MR_;N-MA@f znE=9%h#<6w`{crY2^HOWO`Be9trxE~nrqDD=`G&)*S`oV-F?N9-|iahqYP%+#*ih` zDrpy^6y_!wvpeA!JQPy?38}cqK{7)9%x?!K!fNA~)O$|GR$7WF#2(yHssc-?igPYg zg_~lXR=8V7h3U^`>ZgQtthpBcYGk7uPV~GB5km%YT78@^=+0Jk2_|Q=*lX1f!?jCj zW$upcJLS8an5Gu8Db%t#9e-K5ypJ4oP+8cs)l$LmGX;cH*Q7;_F2NyQe-l zHdZ1H5@^rEdC3N}R->rsYFqnZ(q3n_yS?pNeuVAF^>VMts;Kxf`u>jdEM39M=#waLCQ8a3jH5bEmVc-H|qY zMQUSOj_8QHEaceE*#?9!ys>hy;qojVU5#fjlg#y|lR_5imTz5-9eUWJx%kJO4{EN0 zrLZsWy7cf)aX+67)YYF|q`EiXzGPK$+7pZGSDmVdC)Ow9|M+Z=pF-t@@2?~7{;aKc zvTPtvRq8wc<!oyYcb|H1MXvanpZW6s-`Q(y3N&-LzyAB% zSm*f9KU;F>^Q9X|E=Mw{}U-cXa~vfH((%85n`8 zV1XCNS9M2soz#B_)^R47P9=y13TR{`$AIF%f-fk8hBtdNXoEC}c`A5=I~a95m_0hk zep{@=tKV|g!tuyMhJydXoX9cgI5T09LR+exN;g8VmwfU zTBsXccxzzTfnTU&LDz(2$bcXBNp0wcp|pgFHixiugz$EU!&HY(xQB!Ghk;0WjI?v+ zqg$r)a|b1eQ*>KKXNWzRbZn<${4$1%=mgOPiQ_VLM`!*sIwg9RxIIy*V4CQ4F}6=- z1x;5`iJ*9HeRz2L6>IwQcaq3s%*RZ(LVxllhpe~+7w1wn^-u%0cWbw29o8Ls_afx6 zioAFNAD4NGXN)DIWt3AI5WiYiRTDu>F5shl6&AHV(y4F@K}vQmW}inHG@ceBcpua$dBvtk81OKyC{%y zhi{itS0fdU327%lV~rDujSl&cLU3&0XJ&$RGvpU2j>99~g(ETpVjS6#K=6_M7!4vB zBvHm@hDDC>_kNGqk_?xJrni%n#gac6XO)J4LjDHWw#nhA#_mo2z zm035HQdpG~*OMTZm0H=AUpaPQxsyyOma`vz2%mnBG>Gy%v;(xs7q@hl&Y4lORnH#tamzi*&DUg6EnqZWerRi~}iJIX6vHPnVR{W%0@$!$(hp6_X&18S8DdXxvspr-kt23Vkm8KK#6m;vXY=sBT;l%eFgp?+1N78;`K z*N8fqVZe7+c4ZwSYM=ypk>+_EY{GW}1!LGViNv*BE=Od77k1U9ldfTZE_b7LLpWQc3hLDYF494 zVk+|}dw6JdiI|K(qK`54KpcYpsh~2bY{-pmUz@zU?0`3 zb%CVt3Q+;Yc#E2N8RMRX>QuOxXMGA!WoA!Kqa%V^tpF;5Ah|O+NsR$}uHht%P#UGh z#bw|~H3HURn!2W9wy-c6SQ$B!R|T?y1*U$+q6gQeJejfsm#{7Sn|9NyFzZ<7HnTL# zPdHn6ADT!ntDHRhm^%L3i-W0_LaQD`E1pJsv`UM0o65AP<+D#ql~QYNKpUD=I|Nn> zwOE_ANV}d~>ycjTpJ3~fQA@V-dA5M&v}uc-Y&(=MuF!lpb2DN0(2qmzwPvhOc#arLwk5 ztD#py4SWWtBq@G>s-~aIsi8|?#3+dY)^@r&qk(FfTA{j`%Q5NqdIh7q(nYMG8dCJ? zxaf$uf2)f^wyx!pqU^JClIpGTGrR{_ywj^|(4sQ{$!F#SSg^aS(L=cewI%upjm#U3 z4S6yi`@KBEcmD56s?-s@>N>ukce_kSxisRZcx9{*c1#j>u!&f^d=$Om##;sCc;1?& z@e8oaF~5ws~@f*#CmD=U>QJdiS6fhJ7DL3_hVn8Qk#pJ=e$1GdBjA# z#3*LNO$=vH+-OfM#chkXjakJgJ9LaZ@yQN$NWATiI zvU%Dnf4O>%L8{2Gyu|?Hsi`-w=DLvc(~uO)%f{@*wtBCYD$E&sO|fUj$Bd_o+{wLn zd}F0H<#>}}D$QYAkjP7}FD8vrTCSMf%_16BSa!>{?9ABA##qa+n`?e$I*!OVlG}XF z4eWmN=QgA2U~J=F_?*vw>`em=R>W!0iUq`=Lrv60ZPZ7N)Jd(>OU=|x?bHic0029GzBB^> diff --git a/src/motif/mdi/lib/Imakefile b/src/motif/mdi/lib/Imakefile deleted file mode 100644 index 2dd64024c3..0000000000 --- a/src/motif/mdi/lib/Imakefile +++ /dev/null @@ -1,21 +0,0 @@ -#include "../config/MDI.tmpl" - -SRCS = XsComponent.C XsMDICanvas.C XsMDIWindow.C XsMotifWindow.C \ - XsMoveOutline.C XsOutline.C XsResizeOutline.C - -HEADERS = XsComponent.h XsMDICanvas.h XsMDIWindow.h XsMotifWindow.h \ - sMoveOutline.h XsOutline.h XsResizeOutline.h - -OBJS = XsComponent.o XsMDICanvas.o XsMDIWindow.o XsMotifWindow.o \ - XsMoveOutline.o XsOutline.o XsResizeOutline.o - -STD_INCLUDES = -I/usr/include - -INCLUDES = -I. - -LIBXSW = Xsw - -NormalLibraryObjectRule() -NormalLibraryTarget($(LIBXSW),$(OBJS)) -DependTarget() -CxxRules() diff --git a/src/motif/mdi/lib/XsComponent.C b/src/motif/mdi/lib/XsComponent.C deleted file mode 100644 index 7ec41d7312..0000000000 --- a/src/motif/mdi/lib/XsComponent.C +++ /dev/null @@ -1,201 +0,0 @@ -/* - Copyright (C) 1996 Scott W. Sadler - All rights reserved. -*/ - -/* - XsComponent.C - - History - 03-Mar-96 1.0; Scott W. Sadler (ssadler@cisco.com) - Created -*/ - -// Includes - -#ifndef NDEBUG -#include -#endif - -#include -#include -#include -#include -#include "XsComponent.h" - -// Constructor - -XsComponent::XsComponent (const char *name) -{ - assert (name != 0); - -// Initialize - - _base = 0; - -// Copy component name - - int len = strlen (name); - _name = new char [len + 1]; - strcpy (_name, name); -} - -// Destructor - -XsComponent::~XsComponent ( ) -{ - -// Destroy the widget - - if (_base != 0) - { - _removeDestroyHandler ( ); - XtDestroyWidget (_base); - } - - delete [] _name; -} - -// show - -void XsComponent::show ( ) -{ - -#ifndef NDEBUG - // if (XtIsManaged (_base)) - // cout << "Re-managing a widget:" << _name << endl; -#endif - -// Make sure the _destroyHandler was installed - - assert (XtHasCallbacks (_base, XmNdestroyCallback) == XtCallbackHasSome); - - assert (_base != 0); - XtManageChild (_base); -} - -// hide - -void XsComponent::hide ( ) -{ - -#ifndef NDEBUG - // if (!XtIsManaged (_base)) - // cout << "Re-unmanaging a widget:" << _name << endl; -#endif - - assert (_base != 0); - XtUnmanageChild (_base); -} - -// Conversion operator - -XsComponent::operator Widget ( ) const -{ - assert (_base != 0); - return (_base); -} - -// operator == - -Boolean XsComponent::operator == (const XsComponent& rval) -{ - return (_base == rval._base); -} - -// className - -const char* XsComponent::className ( ) const -{ - return ("XsComponent"); -} - -// _installDestroyHandler - -void XsComponent::_installDestroyHandler ( ) -{ - assert (_base != 0); - -// Install the destroy handler - - XtAddCallback (_base, XmNdestroyCallback, _componentDestroyedCallback, (XtPointer)this); -} - -// _removeDestroyHandler - -void XsComponent::_removeDestroyHandler ( ) -{ - assert (_base != 0); - -// Remove the destroy handler - - XtRemoveCallback (_base, XmNdestroyCallback, _componentDestroyedCallback, (XtPointer)this); -} - -// _componentDestroyed - -void XsComponent::_componentDestroyed ( ) -{ - _base = 0; -} - -// _componentDestroyedCallback - -void XsComponent::_componentDestroyedCallback (Widget, XtPointer clientData, XtPointer) -{ - XsComponent *obj = (XsComponent*)clientData; - obj->_componentDestroyed ( ); -} - -// _setResources - -void XsComponent::_setResources (Widget w, const String *resources) -{ - assert (w != 0); - - XrmDatabase rdb = 0; - const int bufSize = 200; - char buffer[bufSize]; - int loop; - -// Create an empty resource database - - rdb = XrmGetStringDatabase (""); - -// Add the component resources - - loop = 0; - while (resources[loop] != 0) - { - sprintf (buffer, "*%s%s\n", _name, resources[loop++]); - assert (strlen (buffer) < bufSize); - XrmPutLineResource (&rdb, buffer); - } - -// Merge these resources into the database - - if (rdb != 0) - { - XrmDatabase db = XtDatabase (XtDisplay (w)); - XrmCombineDatabase (rdb, &db, FALSE); - } -} - -// _getResources - -void XsComponent::_getResources (const XtResourceList resources, int num) -{ - assert (_base != 0); - assert (resources != 0); - -// Validate input - - if (num <= 0) - return; - -// Get the subresources - - XtGetSubresources (XtParent (_base), (XtPointer)this, _name, - className ( ), resources, num, 0, 0); -} - diff --git a/src/motif/mdi/lib/XsComponent.h b/src/motif/mdi/lib/XsComponent.h deleted file mode 100644 index e67f07fc37..0000000000 --- a/src/motif/mdi/lib/XsComponent.h +++ /dev/null @@ -1,95 +0,0 @@ -/* - Copyright (C) 1996 Scott W. Sadler - All rights reserved. -*/ - -/* - XsComponent.h - - History - 03-Mar-96 1.0; Scott W. Sadler (ssadler@cisco.com) - Created -*/ - -#ifndef XSCOMPONENT_H -#define XSCOMPONENT_H - -// Includes - -#include - -// XsComponent class - -class XsComponent { - - public: - -// Destructor - - virtual ~XsComponent ( ); - -// Component manipulation - - virtual void show ( ); // Show the component - virtual void hide ( ); // Hide the component - -// Component name - - const char *name ( ) const; - -// Utilities - - Widget base ( ) const; - virtual operator Widget ( ) const; - -// Operators - - Boolean operator == (const XsComponent&); - -// Class name - - virtual const char *className ( ) const; - - protected: - -// Protected constructor - - XsComponent (const char *name); - -// Component life-cycle - - virtual void _componentDestroyed ( ); - void _installDestroyHandler ( ); - void _removeDestroyHandler ( ); - -// Resource manager - - void _setResources (Widget w, const String *); - void _getResources (const XtResourceList, int); - -// Implementation - - char *_name; // Component name - Widget _base; // Base widget - - private: - -// Callbacks - - static void _componentDestroyedCallback (Widget, XtPointer, XtPointer); -}; - -// Inline member functions - -inline Widget XsComponent::base ( ) const -{ - return (_base); -} - -inline const char* XsComponent::name ( ) const -{ - return (_name); -} - -#endif - diff --git a/src/motif/mdi/lib/XsMDICanvas.C b/src/motif/mdi/lib/XsMDICanvas.C deleted file mode 100644 index 66a4047aa4..0000000000 --- a/src/motif/mdi/lib/XsMDICanvas.C +++ /dev/null @@ -1,298 +0,0 @@ -/* - Copyright (C) 1996 Scott W. Sadler - All rights reserved. -*/ - -/* - XsMDICanvas.C - - History - 03-Mar-96 1.0; Scott W. Sadler (ssadler@cisco.com) - Created -*/ - -// Includes - -#include -#include -#include -#include "XsMDICanvas.h" -#include "XsMDIWindow.h" - -// Static definitions - -String XsMDICanvas::_resources[] = { - "*canvas.resizePolicy: XmRESIZE_GROW", - NULL -}; - -// Constructor - -XsMDICanvas::XsMDICanvas (const char *name, Widget parent) : XsComponent (name) -{ - assert (parent != 0); - -// Initialize - - _list = 0; - _num = 0; - _max = 0; - _place = 0; - -// Install resources - - _setResources (parent, _resources); - -// Create the scrolled window - - const int nargs = 10; - Arg args[nargs]; - int n = 0; - - XtSetArg (args[n], XmNscrollingPolicy, XmAUTOMATIC); n++; - XtSetArg (args[n], XmNscrolledWindowMarginHeight, (Dimension)0); n++; - XtSetArg (args[n], XmNscrolledWindowMarginWidth, (Dimension)0); n++; - XtSetArg (args[n], XmNmarginHeight, (Dimension)5); n++; - XtSetArg (args[n], XmNmarginWidth, (Dimension)5); n++; - - assert (n <= nargs); - - _base = XmCreateScrolledWindow (parent, _name, args, n); - -// Install the destroy handler - - _installDestroyHandler ( ); - -// Create the drawing area (canvas) - - _drawArea = XtVaCreateWidget ("canvas", xmDrawingAreaWidgetClass, - _base, XmNmarginHeight, (Dimension)0, XmNmarginWidth, (Dimension)0, - NULL); - -// Set resize callback on drawing area - - XtAddCallback (_drawArea, XmNresizeCallback, _canvasResizeCallback, (XtPointer)this); - -// Set resize callback on clip window - - XtVaGetValues (_base, XmNclipWindow, &_clipWin, NULL); - XtAddCallback (_clipWin, XmNresizeCallback, _clipResizeCallback, (XtPointer)this); -} - -// Destructor - -XsMDICanvas::~XsMDICanvas ( ) -{ - -/* - Remove callbacks to prevent calls to destroyed class-part of XsMDICanvas - while children are being destroyed. -*/ - - if (_drawArea) - XtRemoveCallback (_drawArea, XmNresizeCallback, _canvasResizeCallback, (XtPointer)this); - - if (_clipWin) - XtRemoveCallback (_clipWin, XmNresizeCallback, _clipResizeCallback, (XtPointer)this); - -// Remove all windows - - removeAll ( ); -} - -// add - -void XsMDICanvas::add (XsMDIWindow *win) -{ - assert (win != 0); - - const int increment = 10; - -// Check if we need to allocate more space - - if (_num >= _max) - { - XsMDIWindow **newList = new XsMDIWindow*[_max + increment]; - - for (int loop = 0; loop < _num; loop++) - newList[loop] = _list[loop]; - _max += increment; - - delete [] _list; - _list = newList; - } - -// Add the new window - - _list[_num++] = win; - -// Install the parent canvas - - win->_setWindowParent (_drawArea); - -// If the canvas is shown, place the window - - if (XtIsManaged (_base)) - _placeWindow (win); -} - -// remove - -void XsMDICanvas::remove (XsMDIWindow *win) -{ - assert (win != 0); - -// Remove the window - - int i, j; - - for (i = 0; i < _num; i++) - { - if (_list[i] == win) - { - win->hide ( ); - win->_setWindowParent (0); - - for (j = i; j < _num - 1; j++) - _list[j] = _list[j + 1]; - _num--; - - return; - } - } - - assert (0); // Couldn't find window -} - -// removeAll - -void XsMDICanvas::removeAll ( ) -{ - -// Delete and reset the list - - delete [] _list; - - _list = 0; - _num = 0; - _max = 0; -} - -// show - -void XsMDICanvas::show ( ) -{ - assert (_drawArea != 0); - -// Place all of the child windows - - for (int loop = 0; loop < _num; loop++) - _placeWindow (_list[loop]); - -// Manage the drawing area and canvas - - XtManageChild (_drawArea); - -// Call base class - - XsComponent::show ( ); -} - -// className - -const char* XsMDICanvas::className ( ) const -{ - return ("XsMDICanvas"); -} - -// _componentDestroyed - -void XsMDICanvas::_componentDestroyed ( ) -{ - -// Remove the callbacks - - XtRemoveCallback (_drawArea, XmNresizeCallback, _canvasResizeCallback, (XtPointer)this); - XtRemoveCallback (_clipWin, XmNresizeCallback, _clipResizeCallback, (XtPointer)this); - - _drawArea = 0; - _clipWin = 0; -} - -// _placeWindow - -void XsMDICanvas::_placeWindow (XsMDIWindow *win) -{ - assert (win != 0); - -// Compute window placement - - Position x, y; - - const int maxWin = 10; - const Position offset = 20; - const Position minOffset = 10; - - x = (_place * offset) + minOffset; - y = (_place * offset) + minOffset; - - if (++_place == maxWin) - _place = 0; - -// Set the window placement - - win->setPosition (x, y); - -// Show the window - - win->show ( ); -} - -// _resize - -void XsMDICanvas::_resize (XtPointer) -{ - Dimension clipHeight; - Dimension clipWidth; - Dimension canvasHeight; - Dimension canvasWidth; - -// Check if clip window and canvas are managed - - if (!XtIsManaged (_clipWin) || !XtIsManaged (_drawArea)) - return; - -// Get the clip window size - - XtVaGetValues (_clipWin, XmNwidth, &clipWidth, XmNheight, &clipHeight, NULL); - -// Get the canvas size - - XtVaGetValues (_drawArea, XmNwidth, &canvasWidth, XmNheight, &canvasHeight, NULL); - -// Force the canvas to be at least as big as the clip window - - if (canvasWidth < clipWidth) - canvasWidth = clipWidth; - if (canvasHeight < clipHeight) - canvasHeight = clipHeight; - - XtVaSetValues (_drawArea, XmNwidth, canvasWidth, XmNheight, canvasHeight, NULL); -} - -// _clipResizeCallback - -void XsMDICanvas::_clipResizeCallback (Widget, XtPointer clientData, XtPointer callData) -{ - XsMDICanvas *obj = (XsMDICanvas*)clientData; - obj->_resize (callData); -} - -// _canvasResizeCallback - -void XsMDICanvas::_canvasResizeCallback (Widget, XtPointer clientData, XtPointer callData) -{ - XsMDICanvas *obj = (XsMDICanvas*)clientData; - obj->_resize (callData); -} - diff --git a/src/motif/mdi/lib/XsMDICanvas.h b/src/motif/mdi/lib/XsMDICanvas.h deleted file mode 100644 index 99ca57fad5..0000000000 --- a/src/motif/mdi/lib/XsMDICanvas.h +++ /dev/null @@ -1,98 +0,0 @@ -/* - Copyright (C) 1996 Scott W. Sadler - All rights reserved. -*/ - -/* - XsMDICanvas.h - - History - 03-Mar-96 1.0; Scott W. Sadler (ssadler@cisco.com) - Created -*/ - -#ifndef XSMDICANVAS_H -#define XSMDICANVAS_H - -// Includes - -#include "XsComponent.h" - -// Forward declarations - -class XsMDIWindow; - -// XsMDICanvas class - -class XsMDICanvas : public XsComponent { - - public: - -// Constructor/Destructor - - XsMDICanvas (const char *name, Widget parent); - virtual ~XsMDICanvas ( ); - -// MDI Window manipulation - - virtual void add (XsMDIWindow *win); // Add an MDI window - virtual void remove (XsMDIWindow *win); // Remove an MDI window - void removeAll ( ); // Remove all MDI windows - -// Utilities - - int numWindows ( ) const; // Number of MDI windows - Widget GetDrawingArea() const { return _drawArea; } - -// Component methods - - virtual void show ( ); - -// Class name - - virtual const char *className ( ) const; - - protected: - -// Component life-cycle - - virtual void _componentDestroyed ( ); - -// Geometry management - - virtual void _placeWindow (XsMDIWindow *win); - -// Canvas resize handler - - virtual void _resize (XtPointer); - -// Implementation - - Widget _clipWin; - Widget _drawArea; - - XsMDIWindow **_list; - int _num; - int _max; - int _place; - - private: - -// Callbacks - - static void _clipResizeCallback (Widget, XtPointer, XtPointer); - static void _canvasResizeCallback (Widget, XtPointer, XtPointer); - -// Resources - - static String _resources[]; -}; - -// Inline member functions - -inline XsMDICanvas::numWindows ( ) const -{ - return (_num); -} - -#endif diff --git a/src/motif/mdi/lib/XsMDIWindow.C b/src/motif/mdi/lib/XsMDIWindow.C deleted file mode 100644 index cbc61cc5b0..0000000000 --- a/src/motif/mdi/lib/XsMDIWindow.C +++ /dev/null @@ -1,156 +0,0 @@ -/* - Copyright (C) 1996 Scott W. Sadler - All rights reserved. -*/ - -/* - XsMDIWindow.C - - History - 03-Mar-96 1.0; Scott W. Sadler (ssadler@cisco.com) - Created -*/ - -// Includes - -#include -#include -#include "XsMDIWindow.h" - -// Constructor - -XsMDIWindow::XsMDIWindow (const char *name) : XsComponent (name) -{ - -// Initialize - - _clientArea = 0; - _parent = 0; - -// Initial size and placement - - _initX = (Position)-1; - _initY = (Position)-1; - _initH = (Dimension)-1; - _initW = (Dimension)-1; - _placed = False; -} - -// Destructor - -XsMDIWindow::~XsMDIWindow ( ) -{ - // Empty -} - -// raise - -void XsMDIWindow::raise ( ) -{ - assert (_base != 0); - XRaiseWindow (XtDisplay (_base), XtWindow (_base)); -} - -// lower - -void XsMDIWindow::lower ( ) -{ - assert (_base != 0); - XLowerWindow (XtDisplay (_base), XtWindow (_base)); -} - -// show - -void XsMDIWindow::show ( ) -{ - -// Create the window (if necessary) - - if (_base == 0) - { - assert (_parent != 0); - _createWindow (_parent); - } - -// Manage the client area - - XtManageChild (_clientArea); - -// Configure the window position and size - - if (_placed == False) - { - const int nargs = 4; - Arg args[nargs]; - int n = 0; - - if (_initX != (Position)-1) - { - XtSetArg (args[n], XmNx, _initX); n++; - } - if (_initY != (Position)-1) - { - XtSetArg (args[n], XmNy, _initY); n++; - } - if (_initW != (Dimension)-1) - { - XtSetArg (args[n], XmNwidth, _initW); n++; - } - if (_initH != (Dimension)-1) - { - XtSetArg (args[n], XmNheight, _initH); n++; - } - - assert (n <= nargs); - XtSetValues (_base, args, n); - - _placed = True; - } - -// Call the base class - - XsComponent::show ( ); -} - -// setPosition - -void XsMDIWindow::setPosition (Position x, Position y) -{ - if (_base != 0) - XtVaSetValues (_base, XmNx, x, XmNy, y, NULL); - else - { - _initX = x; - _initY = y; - } -} - -// setSize - -void XsMDIWindow::setSize (Dimension w, Dimension h) -{ - if (_base != 0) - XtVaSetValues (_base, XmNwidth, w, XmNheight, h, NULL); - else - { - _initW = w; - _initH = h; - } -} - -// className - -const char* XsMDIWindow::className ( ) const -{ - return ("XsMDIWindow"); -} - -// _setWindowParent - -void XsMDIWindow::_setWindowParent (Widget p) -{ - -// This is called by the canvas to tell us who our parent is - - _parent = p; -} diff --git a/src/motif/mdi/lib/XsMDIWindow.h b/src/motif/mdi/lib/XsMDIWindow.h deleted file mode 100644 index 9bc9c9580d..0000000000 --- a/src/motif/mdi/lib/XsMDIWindow.h +++ /dev/null @@ -1,89 +0,0 @@ -/* - Copyright (C) 1996 Scott W. Sadler - All rights reserved. -*/ - -/* - XsMDIWindow.h - - History - 03-Mar-96 1.0; Scott W. Sadler (ssadler@cisco.com) - Created -*/ - -#ifndef XSMDIWINDOW_H -#define XSMDIWINDOW_H - -// Includes - -#include "XsComponent.h" - -// XsMDIWindow class - -class XsMDIWindow : public XsComponent { - - friend class XsMDICanvas; - - public: - -// Constructor/Destructor - - XsMDIWindow (const char *name); - virtual ~XsMDIWindow ( ); - -// Window manipulation - - virtual void raise ( ); - virtual void lower ( ); - -// Utilities - - Widget clientArea ( ) const; - -// Position and size - - virtual void setPosition (Position x, Position y); - virtual void setSize (Dimension w, Dimension h); - -// Class name - - virtual const char *className ( ) const; - - protected: - -// Only the friendly canvas can show a window - - virtual void show ( ); - -// Window creation functions - - virtual void _buildClientArea (Widget parent) = 0; - virtual void _createWindow (Widget parent) = 0; - -// Implementation - - Widget _clientArea; // Client work area - -// Initial window size and placement - - Position _initX, _initY; - Dimension _initW, _initH; - Boolean _placed; - - private: - -// Window parent installation - - void _setWindowParent (Widget); - Widget _parent; -}; - -// Inline member functions - -inline Widget XsMDIWindow::clientArea ( ) const -{ - return (_clientArea); -} - -#endif - diff --git a/src/motif/mdi/lib/XsMotifWindow.C b/src/motif/mdi/lib/XsMotifWindow.C deleted file mode 100644 index 7f9e45a4a0..0000000000 --- a/src/motif/mdi/lib/XsMotifWindow.C +++ /dev/null @@ -1,3386 +0,0 @@ -/* - Copyright (C) 1996 Scott W. Sadler - All rights reserved. -*/ - -/* - XsMotifWindow.C - - History - 03-Mar-96 1.0; Scott W. Sadler (ssadler@cisco.com) - Created -*/ - -// Includes - -#include -#include -#include -#include -#include -#include -#include -#include "XsMotifWindow.h" -#include "XsResizeOutline.h" -#include "XsMoveOutline.h" -#include "xs_motif_icon.xbm" - -// Constants - -const int BorderSize_ = 6; -const int ButtonSize_ = 23; -const int IconSize_ = 70; - -/* - ---------------------------------------------------------------------------- - _XsMotifBase -*/ - -// Constructor - -_XsMotifBase::_XsMotifBase (const char *name, XsMotifWindow *win) : - XsComponent (name) -{ - assert (win != 0); - -// Initialize - - _win = win; - _topShadowGC = 0; - _bottomShadowGC = 0; -} - -// Destructor - -_XsMotifBase::~_XsMotifBase ( ) -{ - if (_topShadowGC) - XtReleaseGC (_base, _topShadowGC); - - if (_bottomShadowGC) - XtReleaseGC (_base, _bottomShadowGC); -} - -// show - -void _XsMotifBase::show ( ) -{ - assert (_base != 0); - -// Install event handler - - XtAddEventHandler (_base, StructureNotifyMask, False, _mapEventHandler, (XtPointer)this); - -// Call the base-class - - XsComponent::show ( ); -} - -// className - -const char* _XsMotifBase::className ( ) const -{ - return ("_XsMotifBase"); -} - -// _componentDestroyed ( ) - -void _XsMotifBase::_componentDestroyed ( ) -{ - -// Clean up the GCs - - if (_topShadowGC) - XtReleaseGC (_base, _topShadowGC); - - if (_bottomShadowGC) - XtReleaseGC (_base, _bottomShadowGC); - - _topShadowGC = 0; - _bottomShadowGC = 0; - -// Call the base-class - - XsComponent::_componentDestroyed ( ); -} - -// _drawShadows - -void _XsMotifBase::_drawShadows (Position x, Position y, Dimension width, - Dimension height, Dimension thick, Boolean reverse) -{ - assert (_base != 0); - assert (thick > 0); - - const int nsegs = 2; - XSegment segs[nsegs]; - GC topShadowGC; - GC bottomShadowGC; - -// Work out the graphics contexts - - topShadowGC = (reverse == False) ? _topShadowGC : _bottomShadowGC; - bottomShadowGC = (reverse == False) ? _bottomShadowGC : _topShadowGC; - - for (int loop = 0; loop < thick; loop++) - { - -/* - TOP SHADOW DRAWING -*/ - -// Across the top - - segs[0].x1 = x + loop; - segs[0].y1 = y + loop; - segs[0].x2 = x + width - loop - 2; - segs[0].y2 = y + loop; - -// Down the left side - - segs[1].x1 = x + loop; - segs[1].y1 = y + loop + 1; - segs[1].x2 = x + loop; - segs[1].y2 = y + height - loop - 2; - - XDrawSegments (XtDisplay (_base), XtWindow (_base), topShadowGC, segs, nsegs); - -/* - BOTTOM SHADOW DRAWING -*/ - -// Across the bottom - - segs[0].x1 = x + loop; - segs[0].y1 = y + height - loop - 1; - segs[0].x2 = x + width - loop - 1; - segs[0].y2 = y + height - loop - 1; - -// Down the right side - - segs[1].x1 = x + width - loop - 1; - segs[1].y1 = y + loop; - segs[1].x2 = x + width - loop - 1; - segs[1].y2 = y + height - loop - 1; - - XDrawSegments (XtDisplay (_base), XtWindow (_base), bottomShadowGC, segs, nsegs); - } -} - -// _drawLine - -void _XsMotifBase::_drawLine (Position x1, Position y1, Position x2, Position y2, GC &gc) -{ - assert (_base != 0); - XDrawLine (XtDisplay (_base), XtWindow (_base), gc, x1, y1, x2, y2); -} - -// _map - -void _XsMotifBase::_map ( ) -{ - -// Create the graphics contexts - - unsigned long valuemask; - XGCValues values; - Pixel topShadow; - Pixel bottomShadow; - - XtVaGetValues (_win->base ( ), XmNtopShadowColor, &topShadow, XmNbottomShadowColor, - &bottomShadow, NULL); - -// Create the graphics contexts - - valuemask = GCForeground | GCLineWidth | GCGraphicsExposures; - values.line_width = 0; - values.graphics_exposures = False; - - values.foreground = topShadow; - _topShadowGC = XtGetGC (_base, valuemask, &values); - - values.foreground = bottomShadow; - _bottomShadowGC = XtGetGC (_base, valuemask, &values); -} - -// _mapEventHandler - -void _XsMotifBase::_mapEventHandler (Widget, XtPointer clientData, XEvent *event, Boolean*) -{ - if (event->type == MapNotify) - { - _XsMotifBase *obj = (_XsMotifBase*)clientData; - obj->_map ( ); - -// Remove the event handler - - XtRemoveEventHandler (obj->_base, StructureNotifyMask, False, obj->_mapEventHandler, clientData); - } -} - -/* - ---------------------------------------------------------------------------- - _XsMotifComponent -*/ - -Cursor _XsMotifComponent::_cursors[_XsMotifComponent::NumCursors]; - -int _XsMotifComponent::_mutex = 0; - -XtResource _XsMotifComponent::_resourceList[] = { - { - "borderSize", - "BorderSize", - XmRDimension, - sizeof (Dimension), - XtOffset (_XsMotifComponent*, _borderSize), - XmRImmediate, - (XtPointer)BorderSize_ - }, - { - "buttonSize", - "ButtonSize", - XmRDimension, - sizeof (Dimension), - XtOffset (_XsMotifComponent*, _buttonSize), - XmRImmediate, - (XtPointer)ButtonSize_ - } -}; - -// Constructor - -_XsMotifComponent::_XsMotifComponent (const char *name, XsMotifWindow *win, - Widget parent) : _XsMotifBase (name, win) -{ - -// Create cursors (if necessary) - - if (_mutex == 0) - { - - Display *dpy = XtDisplay (win->base ( )); - - _cursors[TopCursor] = XCreateFontCursor (dpy, XC_top_side); - _cursors[BottomCursor] = XCreateFontCursor (dpy, XC_bottom_side); - _cursors[LeftCursor] = XCreateFontCursor (dpy, XC_left_side); - _cursors[RightCursor] = XCreateFontCursor (dpy, XC_right_side); - _cursors[TopLeftCursor] = XCreateFontCursor (dpy, XC_top_left_corner); - _cursors[TopRightCursor] = XCreateFontCursor (dpy, XC_top_right_corner); - _cursors[BottomLeftCursor] = XCreateFontCursor (dpy, XC_bottom_left_corner); - _cursors[BottomRightCursor] = XCreateFontCursor (dpy, XC_bottom_right_corner); - - _mutex = 1; - } - -// Create the component - - _base = XtVaCreateWidget (name, widgetClass, (parent != 0) ? parent : _win->base ( ), NULL); - -// Install destroy handler - - _installDestroyHandler ( ); - -// Get resources - - _getResources (_resourceList, XtNumber (_resourceList)); - -// Compute the corner size - - _cornerSize = _buttonSize + _borderSize; - -// Install event handlers - - XtAddEventHandler (_base, ExposureMask, False, _exposeEventHandler, (XtPointer)this); - XtAddEventHandler (_base, ButtonPressMask | ButtonReleaseMask | Button1MotionMask | Button2MotionMask, False, _inputEventHandler, (XtPointer)this); -} - -// Destructor - -_XsMotifComponent::~_XsMotifComponent ( ) -{ - // Empty -} - -// className - -const char* _XsMotifComponent::className ( ) const -{ - return ("_XsMotifComponent"); -} - -// _input - -void _XsMotifComponent::_input (XEvent*) -{ - // Empty -} - -// _exposeEventHandler - -void _XsMotifComponent::_exposeEventHandler (Widget, XtPointer clientData, XEvent *event, Boolean*) -{ - _XsMotifComponent *obj = (_XsMotifComponent*)clientData; - - if (event->xexpose.count == 0) - obj->_expose (event); -} - -// _inputEventHandler - -void _XsMotifComponent::_inputEventHandler (Widget, XtPointer clientData, XEvent *event, Boolean*) -{ - _XsMotifComponent *obj = (_XsMotifComponent*)clientData; - obj->_input (event); -} - -/* - ---------------------------------------------------------------------------- - _XsMotifCorner -*/ - -// Constructor - -_XsMotifCorner::_XsMotifCorner (const char *name, XsMotifWindow *win, Corner corner) - : _XsMotifComponent (name, win) -{ - -// Initialize - - _corner = corner; - -// Configure component - - XtVaSetValues (_base, XmNwidth, _cornerSize, XmNheight, _cornerSize, - XmNborderWidth, (Dimension)0, NULL); -} - -// Destructor - -_XsMotifCorner::~_XsMotifCorner ( ) -{ - // Empty -} - -// className - -const char *_XsMotifCorner::className ( ) const -{ - return ("_XsMotifCorner"); -} - -// _expose - -void _XsMotifCorner::_expose (XEvent*) -{ - Dimension w, h; - - if (_topShadowGC == 0) // JACS - return; - -// Get the size of the corner - - XtVaGetValues (_base, XmNwidth, &w, XmNheight, &h, NULL); - -// Draw the shadow - - _drawShadows (0, 0, w, h, 1); - -// Draw the extra lines and relief - - switch (_corner) - { - case TopLeft: - { - _drawLine (1, 1, w - 2, 1, _topShadowGC); - _drawLine (1, 1, 1, h - 2, _topShadowGC); - -// Relief - - _drawLine (_borderSize - 1, _borderSize - 1, _borderSize + - _buttonSize - 2, _borderSize - 1, _bottomShadowGC); - - _drawLine (_borderSize - 1, _borderSize - 1, _borderSize - 1, - _borderSize + _buttonSize - 2, _bottomShadowGC); - - break; - } - case TopRight: - { - _drawLine (1, 1, w - 2, 1, _topShadowGC); - _drawLine (w - 2, 1, w - 2, h - 2, _bottomShadowGC); - -// Relief - - _drawLine (0, _borderSize - 1, _buttonSize - 1, _borderSize - 1, - _bottomShadowGC); - - _drawLine (w - _borderSize, _borderSize - 1, w - _borderSize, - _borderSize + _buttonSize - 2, _topShadowGC); - - break; - } - case BottomLeft: - { - _drawLine (1, 1, 1, h - 2, _topShadowGC); - _drawLine (1, h - 2, w - 2, h - 2, _bottomShadowGC); - -// Relief - - _drawLine (_borderSize - 1, h - _borderSize, _borderSize + - _buttonSize - 2, h - _borderSize, _topShadowGC); - - _drawLine (_borderSize - 1, 1, _borderSize - 1, - _buttonSize - 1, _bottomShadowGC); - - break; - } - case BottomRight: - { - _drawLine (1, h - 2, w - 2, h - 2, _bottomShadowGC); - _drawLine (w - 2, 1, w - 2, h - 2, _bottomShadowGC); - -// Relief - - _drawLine (1, h - _borderSize, _buttonSize, h - _borderSize, - _topShadowGC); - - _drawLine (w - _borderSize, 1, w - _borderSize, - _buttonSize - 1, _topShadowGC); - - break; - } - default: - assert (0); - } -} - -// _input - -void _XsMotifCorner::_input (XEvent *event) -{ - switch (event->type) - { - case ButtonPress: - { - if (event->xbutton.button == 2) - { - XsMoveOutline move (_win->base ( )); - -// Start the move - - if (move.go ( ) != False) - { - -// Relocate the window - - _win->setPosition (move.x ( ), move.y ( )); - } - } - else if (event->xbutton.button == 3) - _win->popupMenu ( ); - - break; - } - case ButtonRelease: - { - switch (event->xbutton.button) - { - case 1: - case 2: - { - _win->raise ( ); // Raise the window - break; - } - } - break; - } - case MotionNotify: - { - -// Figure kind of resize we are doing - - int dir; - - if (_corner == TopLeft) - dir = XsResizeOutline::Up | XsResizeOutline::Left; - else if (_corner == TopRight) - dir = XsResizeOutline::Up | XsResizeOutline::Right; - else if (_corner == BottomLeft) - dir = XsResizeOutline::Down | XsResizeOutline::Left; - else if (_corner == BottomRight) - dir = XsResizeOutline::Down | XsResizeOutline::Right; - else - assert (0); - - XsResizeOutline resize (_win->base ( ), dir); - resize.setMinSize (_win->minWidth ( ), _win->minHeight ( )); - -// Start the resize - - if (resize.go ( ) != False) - { - -// Relocate the window - - _win->setPosition (resize.x ( ), resize.y ( )); - _win->setSize (resize.width ( ), resize.height ( )); - } - break; - } - } -} - -// _map - -void _XsMotifCorner::_map ( ) -{ - -// Call the base-class - - _XsMotifComponent::_map ( ); - -// Install the cursor - - if (_corner == TopLeft) - XDefineCursor (XtDisplay (_base), XtWindow (_base), _cursors[TopLeftCursor]); - else if (_corner == TopRight) - XDefineCursor (XtDisplay (_base), XtWindow (_base), _cursors[TopRightCursor]); - else if (_corner == BottomLeft) - XDefineCursor (XtDisplay (_base), XtWindow (_base), _cursors[BottomLeftCursor]); - else if (_corner == BottomRight) - XDefineCursor (XtDisplay (_base), XtWindow (_base), _cursors[BottomRightCursor]); - else - assert (0); -} - -/* - ---------------------------------------------------------------------------- - _XsMotifSide -*/ - -// Constructor - -_XsMotifSide::_XsMotifSide (const char *name, XsMotifWindow *win, Side side) : - _XsMotifComponent (name, win) -{ - -// Initialize - - _side = side; - _lastW = _lastH = -1; - -// Configure component - - switch (_side) - { - case Top: - case Bottom: - { - XtVaSetValues (_base, XmNheight, _borderSize, XmNborderWidth, - (Dimension)0, NULL); - break; - } - case Left: - case Right: - { - XtVaSetValues (_base, XmNwidth, _borderSize, XmNborderWidth, - (Dimension)0, NULL); - break; - } - default: - assert (0); - } - -// Install event handler - - XtAddEventHandler (_base, StructureNotifyMask, False, _configureEventHandler, (XtPointer)this); -} - -// Destructor - -_XsMotifSide::~_XsMotifSide ( ) -{ - // Empty -} - -// className - -const char *_XsMotifSide::className ( ) const -{ - return ("_XsMotifSide"); -} - -// _expose - -void _XsMotifSide::_expose (XEvent *event) -{ - if (_topShadowGC == 0) // JACS - return; - -// Clear out the window first - - if (event != 0) - XClearWindow (XtDisplay (_base), XtWindow (_base)); - - Dimension w, h; - -// Get the size of the side - - XtVaGetValues (_base, XmNwidth, &w, XmNheight, &h, NULL); - -// Draw the shadow - - _drawShadows (0, 0, w, h, 1); - -// Draw the extra lines - - switch (_side) - { - case Top: - { - _drawLine (1, 1, w - 2, 1, _topShadowGC); - break; - } - case Bottom: - { - _drawLine (1, h - 2, w - 2, h - 2, _bottomShadowGC); - break; - } - case Left: - { - _drawLine (1, 1, 1, h - 2, _topShadowGC); - break; - } - case Right: - { - _drawLine (w - 2, 1, w - 2, h - 2, _bottomShadowGC); - break; - } - default: - assert (0); - } -} - -// _input - -void _XsMotifSide::_input (XEvent *event) -{ - switch (event->type) - { - case ButtonPress: - { - if (event->xbutton.button == 2) - { - XsMoveOutline move (_win->base ( )); - -// Start the move - - if (move.go ( ) != False) - { - -// Relocate the window - - _win->setPosition (move.x ( ), move.y ( )); - } - } - else if (event->xbutton.button == 3) - _win->popupMenu ( ); - - break; - } - case ButtonRelease: - { - switch (event->xbutton.button) - { - case 1: - case 2: - { - _win->raise ( ); // Raise the window - break; - } - } - break; - } - case MotionNotify: - { - -// Figure kind of resize we are doing - - int dir; - - if (_side == Top) - dir = XsResizeOutline::Up; - else if (_side == Bottom) - dir = XsResizeOutline::Down; - else if (_side == Left) - dir = XsResizeOutline::Left; - else if (_side == Right) - dir = XsResizeOutline::Right; - else - assert (0); - - XsResizeOutline resize (_win->base ( ), dir); - resize.setMinSize (_win->minWidth ( ), _win->minHeight ( )); - -// Start the resize - - if (resize.go ( ) != False) - { - -// Relocate the window - - _win->setPosition (resize.x ( ), resize.y ( )); - _win->setSize (resize.width ( ), resize.height ( )); - } - break; - } - } -} - -// _map - -void _XsMotifSide::_map ( ) -{ - -// Call the base-class - - _XsMotifComponent::_map ( ); - -// Install the cursor - - if (_side == Top) - XDefineCursor (XtDisplay (_base), XtWindow (_base), _cursors[TopCursor]); - else if (_side == Bottom) - XDefineCursor (XtDisplay (_base), XtWindow (_base), _cursors[BottomCursor]); - else if (_side == Left) - XDefineCursor (XtDisplay (_base), XtWindow (_base), _cursors[LeftCursor]); - else if (_side == Right) - XDefineCursor (XtDisplay (_base), XtWindow (_base), _cursors[RightCursor]); - else - assert (0); -} - -// _configure - -void _XsMotifSide::_configure (XEvent *event) -{ - XConfigureEvent *ce = (XConfigureEvent*)event; - -/* - Check if window has been resized. If so, generate an expose event - to redraw its contents. -*/ - - if ((_lastW != ce->width) || (_lastH != ce->height)) - { - if ((_base != 0) && XtIsManaged (_base)) - XClearArea (XtDisplay (_base), XtWindow (_base), 0, 0, 0, 0, True); - - _lastW = ce->width; - _lastH = ce->height; - } -} - -// _configureEventHandler - -void _XsMotifSide::_configureEventHandler (Widget, XtPointer clientData, XEvent *event, Boolean*) -{ - if (event->type == ConfigureNotify) - { - _XsMotifSide *obj = (_XsMotifSide*)clientData; - obj->_configure (event); - } -} - -/* - ---------------------------------------------------------------------------- - _XsMotifButton -*/ - -// Constructor - -_XsMotifButton::_XsMotifButton (const char *name, XsMotifWindow *win, Button button) : - _XsMotifComponent (name, win) -{ - -// Initialize - - _pressed = False; - _button = button; - -// Configure the component - - XtVaSetValues (_base, XmNheight, _buttonSize, XmNwidth, _buttonSize, - XmNborderWidth, (Dimension)0, NULL); -} - -// Destructor - -_XsMotifButton::~_XsMotifButton ( ) -{ - // Empty -} - -// redraw - -void _XsMotifButton::redraw ( ) -{ - -// Make sure component is viewable - - if (!XtIsRealized (_base)) - return; - -// Check if window is viewable - - XWindowAttributes attrs; - XGetWindowAttributes (XtDisplay (_base), XtWindow (_base), &attrs); - - if (attrs.map_state == IsViewable) - _expose (0); // Just pretend we got an expose event -} - -// className - -const char *_XsMotifButton::className ( ) const -{ - return ("_XsMotifButton"); -} - -// _expose - -void _XsMotifButton::_expose (XEvent *event) -{ - if (_topShadowGC == 0) // JACS - return; - - Dimension w, h; - -// Get the size of the button - - XtVaGetValues (_base, XmNwidth, &w, XmNheight, &h, NULL); - -// Draw the shadow - - _drawShadows (0, 0, w, h, 1, _pressed); - -// Draw the extra line - - _drawLine (1, h - 2, w - 2, h - 2, (_pressed) ? _topShadowGC : _bottomShadowGC); - -// Check if we need to draw the decal - - if ((_button != Maximize) && (event == 0)) - return; - -// Compute the decal size - - Dimension dw, dh; - Boolean reverse = False; - - switch (_button) - { - case Menu: - { - dw = _buttonSize - 6; - dh = 4; - break; - } - case Minimize: - { - dw = dh = 4; - break; - } - case Maximize: - { - dw = _buttonSize - 6; - dh = dw - 1; - - if (_win->maximized ( )) - reverse = True; - - break; - } - default: - assert (0); - } - -// Draw the decal - - _drawShadows ((w / 2) - (dw / 2), (h / 2) - (dh / 2), dw, dh, 1, reverse); -} - -// _input - -void _XsMotifButton::_input (XEvent *event) -{ - static Time lastTime = (Time)0; - - switch (event->type) - { - case ButtonPress: - { - if (event->xbutton.button == 1) - { - _pressed = True; - - if (_button == Menu) - { - -// Get double-click time - - int multiClick = XtGetMultiClickTime (XtDisplay (_base)); - -// Check for double-click - - if ((event->xbutton.time - lastTime) <= multiClick) - { - _win->close ( ); - return; - } - else - lastTime = event->xbutton.time; - -// Redraw the button (pushed-in) - - redraw ( ); - -// Popup the menu - - _win->popupMenu (False); - -// The menu will consume the ButtonRelease, so fake one - - _pressed = False; - redraw ( ); - - } - else if ((_button == Minimize) || (_button == Maximize)) - { - redraw ( ); - } - } - else if (event->xbutton.button == 2) - { - XsMoveOutline move (_win->base ( )); - -// Start the move - - if (move.go ( ) != False) - { - -// Relocate the window - - _win->setPosition (move.x ( ), move.y ( )); - } - } - else if (event->xbutton.button == 3) - _win->popupMenu ( ); - - break; - } - case ButtonRelease: - { - if (event->xbutton.button == 1) - { - _pressed = False; - -// Check if pointer is really in the window - - XButtonEvent *b = &event->xbutton; - Dimension width, height; - Boolean inWindow = False; - - XtVaGetValues (_base, XmNwidth, &width, XmNheight, &height, NULL); - if ((b->x >= 0) && (b->y >= 0) && (b->x < width) && (b->y < height)) - inWindow = True; - - if (_button == Minimize) - { - if (inWindow) - { - if (_win->minimized ( )) - _win->restore ( ); - else - _win->minimize ( ); - } - else - redraw ( ); - } - else if (_button == Maximize) - { - if (inWindow) - { - if (_win->maximized ( )) - _win->restore ( ); - else - _win->maximize ( ); - } - else - redraw ( ); - } - } - break; - } - } -} - -// _map - -void _XsMotifButton::_map ( ) -{ - -// Call the base-class - - _XsMotifComponent::_map ( ); - -// Raise ourself - - XRaiseWindow (XtDisplay (_base), XtWindow (_base)); -} - -/* - ---------------------------------------------------------------------------- - _XsMotifTitle -*/ - -XtResource _XsMotifTitle::_resourceList[] = { - { - "title", - "Title", - XmRString, - sizeof (String), - XtOffset (_XsMotifTitle*, _titleString), - XmRImmediate, - NULL - }, - { - "titleFont", - "TitleFont", - XmRFontStruct, - sizeof (XFontStruct*), - XtOffset (_XsMotifTitle*, _titleFont), - XmRString, - "-*-helvetica-bold-o-normal-*-14-*-*-*-*-*-iso8859-1" - } -}; - -// Constructor - -_XsMotifTitle::_XsMotifTitle (const char *name, XsMotifWindow *win) : - _XsMotifComponent (name, win) -{ - -// Initialize - - _pressed = False; - _titleString = 0; - _titleFont = 0; - _fontGC = 0; - _lastW = _lastH = -1; - -// Get resources - - _getResources (_resourceList, XtNumber (_resourceList)); - -// Copy title string to local memory - - if (_titleString != 0) - { - char *tmp = new char[strlen (_titleString) + 1]; - strcpy (tmp, _titleString); - _titleString = tmp; - } - -// Configure the title - - XtVaSetValues (_base, XmNheight, _buttonSize, XmNborderWidth, - (Dimension)0, NULL); - -// Install event handler - - XtAddEventHandler (_base, StructureNotifyMask, False, _configureEventHandler, (XtPointer)this); -} - -// Destructor - -_XsMotifTitle::~_XsMotifTitle ( ) -{ - if (_fontGC) - XtReleaseGC (_base, _fontGC); - - delete [] _titleString; -} - -// setTitle - -void _XsMotifTitle::setTitle (const char *title) -{ - assert (title != 0); - - delete [] _titleString; - - _titleString = new char[strlen (title) + 1]; - strcpy (_titleString, title); -} - -// className - -const char *_XsMotifTitle::className ( ) const -{ - return ("_XsMotifTitle"); -} - -// _componentDestroyed - -void _XsMotifTitle::_componentDestroyed ( ) -{ - -// Clean up the GCs - - if (_fontGC) - XtReleaseGC (_base, _fontGC); - - _fontGC = 0; - -// Call base-class - - _XsMotifComponent::_componentDestroyed ( ); -} - -// _redraw - -void _XsMotifTitle::_redraw ( ) -{ - _expose (0); // Just pretend we got an expose event -} - -// _expose - -void _XsMotifTitle::_expose (XEvent *event) -{ - if (_topShadowGC == 0) // JACS - return; - -// Clear out the window first - - if (event != 0) - XClearWindow (XtDisplay (_base), XtWindow (_base)); - - Dimension w, h; - -// Get the size of the button - - XtVaGetValues (_base, XmNwidth, &w, XmNheight, &h, NULL); - -// Draw the shadow - - _drawShadows (0, 0, w, h, 1, _pressed); - -// Draw the extra line - - _drawLine (1, h - 2, w - 2, h - 2, (_pressed) ? _topShadowGC : _bottomShadowGC); - -// If this is an artificial event, no need continuing - - if (event == 0) - return; - -// Draw the text string - - const int LeftOffset = 5; - const int TopOffset = 2; - -// Figure out the title - - const char *title = (_titleString != 0) ? _titleString : _win->name ( ); - - if ((title != 0) && (title[0] != '\0')) - { - int len = strlen (title); - - XDrawString (XtDisplay (_base), XtWindow (_base), _fontGC, - LeftOffset, TopOffset + _titleFont->ascent, title, len); - } -} - -// _input - -void _XsMotifTitle::_input (XEvent *event) -{ - switch (event->type) - { - case ButtonPress: - { - switch (event->xbutton.button) - { - case 1: - { - _pressed = True; - _redraw ( ); - break; - } - case 2: - { - XsMoveOutline move (_win->base ( )); - -// Start the move - - if (move.go ( ) != False) - { - -// Relocate the window - - _win->setPosition (move.x ( ), move.y ( )); - } - break; - } - case 3: - { - _win->popupMenu ( ); - break; - } - } - break; - } - case ButtonRelease: - { - switch (event->xbutton.button) - { - case 1: - case 2: - { - _pressed = False; - _redraw ( ); - - _win->raise ( ); - break; - } - } - break; - } - case MotionNotify: - { - XsMoveOutline move (_win->base ( )); - -// Start the move - - if (move.go ( ) != False) - { - -// Relocate the window - - _win->setPosition (move.x ( ), move.y ( )); - -// Redraw the title bar - - _pressed = False; - _redraw ( ); - } - break; - } - } -} - -// _map - -void _XsMotifTitle::_map ( ) -{ - -// Call the base-class - - _XsMotifComponent::_map ( ); - -// Raise ourself - - XRaiseWindow (XtDisplay (_base), XtWindow (_base)); - - unsigned long valuemask; - XGCValues values; - Pixel foreground; - Pixel background; - -// Get the pixels - - XtVaGetValues (_win->base ( ), XmNforeground, &foreground, XmNbackground, &background, NULL); - -// Create the font graphics context - - valuemask = GCForeground | GCBackground | GCGraphicsExposures | GCFont; - - values.foreground = foreground; - values.background = background; - values.font = _titleFont->fid; - values.graphics_exposures = False; - - _fontGC = XtGetGC (_base, valuemask, &values); -} - -// _configure - -void _XsMotifTitle::_configure (XEvent *event) -{ - XConfigureEvent *ce = (XConfigureEvent*)event; - -/* - Check if window has been resized. If so, generate an expose event - to redraw its contents. -*/ - - if ((_lastW != ce->width) || (_lastH != ce->height)) - { - if ((_base != 0) && XtIsManaged (_base)) - XClearArea (XtDisplay (_base), XtWindow (_base), 0, 0, 0, 0, True); - - _lastW = ce->width; - _lastH = ce->height; - } -} - -// _configureEventHandler - -void _XsMotifTitle::_configureEventHandler (Widget, XtPointer clientData, XEvent *event, Boolean*) -{ - if (event->type == ConfigureNotify) - { - _XsMotifTitle *obj = (_XsMotifTitle*)clientData; - obj->_configure (event); - } -} - -/* - ---------------------------------------------------------------------------- - _XsMotifIcon -*/ - -XtResource _XsMotifIcon::_resourceList[] = { - { - "iconSize", - "IconSize", - XmRDimension, - sizeof (Dimension), - XtOffset (_XsMotifIcon*, _iconSize), - XmRImmediate, - (XtPointer)IconSize_ - }, - { - "iconName", - "IconName", - XmRString, - sizeof (String), - XtOffset (_XsMotifIcon*, _iconName), - XmRImmediate, - NULL - }, - { - "iconFont", - "IconFont", - XmRFontStruct, - sizeof (XFontStruct*), - XtOffset (_XsMotifIcon*, _iconFont), - XmRString, - "-*-helvetica-bold-r-normal-*-12-*-*-*-*-*-iso8859-1" - }, - { - XmNiconX, - XmCIconX, - XmRPosition, - sizeof (Position), - XtOffset (_XsMotifIcon*, _iconX), - XmRImmediate, - (XtPointer)-1 - }, - { - XmNiconY, - XmCIconY, - XmRPosition, - sizeof (Position), - XtOffset (_XsMotifIcon*, _iconY), - XmRImmediate, - (XtPointer)-1 - } -}; - -// Constructor - -_XsMotifIcon::_XsMotifIcon (const char *name, XsMotifWindow *win, Widget parent) : - _XsMotifComponent (name, win, parent) -{ - -// Initialize - - _pixmapGC = 0; - _fontGC = 0; - - _iconName = 0; - _pixmap = 0; - _freePixmap = False; - - _width = _height = 0; - _placed = 0; - -// Get resources - - _getResources (_resourceList, XtNumber (_resourceList)); - -// Copy icon name to local memory - - if (_iconName != 0) - { - char *tmp = new char[strlen (_iconName) + 1]; - strcpy (tmp, _iconName); - _iconName = tmp; - } - -// Configure the icon - - XtVaSetValues (_base, XmNwidth, _iconSize, XmNheight, _iconSize, NULL); -} - -// Destructor - -_XsMotifIcon::~_XsMotifIcon ( ) -{ - if (_fontGC) - XtReleaseGC (_base, _fontGC); - - if (_pixmapGC) - XtReleaseGC (_base, _pixmapGC); - - if (_freePixmap) - XFreePixmap (XtDisplay (_base), _pixmap); - - delete [] _iconName; -} - -// show - -void _XsMotifIcon::show ( ) -{ - -/* - Configure the icon position. Either use the position specified - in the resource, or place the icon at the top-left corner of the - window. -*/ - - if (_placed == False) - { - Position x, y; - - if (_iconX == -1) - { - XtVaGetValues (_win->base ( ), XmNx, &x, NULL); - if (x < 0) x = 0; - _iconX = x; - } - else - x = _iconX; - - if (_iconY == -1) - { - XtVaGetValues (_win->base ( ), XmNy, &y, NULL); - if (y < 0) y = 0; - _iconY = y; - } - else - y = _iconY; - - XtVaSetValues (_base, XmNx, x, XmNy, y, NULL); - - _placed = True; - } - -// Call the base class - - _XsMotifComponent::show ( ); -} - -// setIconName - -void _XsMotifIcon::setIconName (const char *iconName) -{ - assert (iconName != 0); - - delete [] _iconName; - - _iconName = new char[strlen (iconName) + 1]; - strcpy (_iconName, iconName); -} - -// setPixmap - -void _XsMotifIcon::setPixmap (Pixmap pixmap) -{ - assert (pixmap != 0); - -// Free the existing pixmap (if necessary) - - if (_freePixmap) - { - XFreePixmap (XtDisplay (_base), _pixmap); - _freePixmap = False; - } - -// Save the new pixmap - - _pixmap = pixmap; - -// Get the pixmap width and height - - Window dummy; - int xd, yd; - unsigned int uw, uh, ub, ud; - - XGetGeometry (XtDisplay (_base), _pixmap, &dummy, &xd, &yd, &uw, &uh, &ub, &ud); - - _width = uw; - _height = uh; -} - -// className - -const char *_XsMotifIcon::className ( ) const -{ - return ("_XsMotifIcon"); -} - -// _componentDestroyed - -void _XsMotifIcon::_componentDestroyed ( ) -{ - -// Clear up the GCs - - if (_fontGC) - XtReleaseGC (_base, _fontGC); - - if (_pixmapGC) - XtReleaseGC (_base, _pixmapGC); - - if (_freePixmap) - XFreePixmap (XtDisplay (_base), _pixmap); - - _fontGC = 0; - _pixmapGC = 0; - _freePixmap = 0; - -// Call the base-class - - _XsMotifComponent::_componentDestroyed ( ); -} - -// _input - -void _XsMotifIcon::_input (XEvent *event) -{ - static Time lastTime = (Time)0; - - switch (event->type) - { - case ButtonPress: - { - switch (event->xbutton.button) - { - case 1: - break; - - case 2: - { - XsMoveOutline move (_base); - -// Start the move - - if (move.go ( ) != False) - { - -// Relocate the window - - _win->setPosition (move.x ( ), move.y ( )); - } - break; - } - case 3: - { - _win->popupMenu ( ); - break; - } - } - break; - } - case ButtonRelease: - { - switch (event->xbutton.button) - { - case 1: - { - -// Get double-click time - - int multiClick = XtGetMultiClickTime (XtDisplay (_base)); - -// Check for double-click - - if ((event->xbutton.time - lastTime) <= multiClick) - _win->restore ( ); - else - { - lastTime = event->xbutton.time; - _win->raise ( ); - } - break; - } - } - break; - } - case MotionNotify: - { - XsMoveOutline move (_base); - -// Start the move - - if (move.go ( ) != False) - { - -// Relocate the icon - - _win->setPosition (move.x ( ), move.y ( )); - } - break; - } - } -} - -// _expose - -void _XsMotifIcon::_expose (XEvent *) -{ - if (_topShadowGC == 0) // JACS - return; - - Dimension iconHeight; - Dimension iconWidth; - -// Compute icon size - - XtVaGetValues (_base, XmNwidth, &iconWidth, XmNheight, &iconHeight, NULL); - -// Draw the shadow - - _drawShadows (0, 0, iconWidth, iconHeight, 2); - -// Figure out the icon string - - const char *iconName = (_iconName != 0) ? _iconName : (_win->title ( ) != 0) ? - _win->title ( ) : _win->name ( ); - - const int fontX = 3; - const int fontY = 3; - - if ((iconName != 0) && (iconName[0] != '\0')) - { - int textWidth; - int len = strlen (iconName); - -// Compute the text size - - textWidth = XTextWidth (_iconFont, iconName, len); - -// Center the text in the bottom of the icon (or left-justify it) - - int x, y; - - if (textWidth <= (iconWidth - (fontX * 2))) - x = (iconWidth - (int)textWidth) / 2; - else - x = fontX; - - y = (int)iconHeight - _iconFont->descent - fontY; - -// Draw the string - - XDrawString (XtDisplay (_base), XtWindow (_base), _fontGC, - x, y, iconName, len); - } - -// Compute label size - - int labelHeight = _iconFont->descent + _iconFont->ascent + (fontY * 2); - - if (labelHeight >= (iconHeight - 6)) - return; - -// Draw the separator - - int sepY = (iconHeight) - labelHeight; - - _drawLine (1, sepY, iconWidth - 2, sepY, _bottomShadowGC); - _drawLine (1, sepY + 1, iconWidth - 2, sepY + 1, _topShadowGC); - -// Draw the pixmap frame - - const int frameX = 4; - const int frameY = 4; - - if ((frameX + 6) >= sepY) - return; - - int frameWidth = iconWidth - (frameX * 2); - int frameHeight = sepY - frameY - 2; - - _drawShadows (frameX, frameY, frameWidth, frameHeight, 1, True); - - frameWidth -= 2; - frameHeight -= 2; - - _drawShadows (frameX + 1, frameY + 1, frameWidth, frameHeight, 1); - - frameWidth -= 2; - frameHeight -= 2; - -// Blit the pixmap - - if (_pixmap != 0) - { - if ((frameWidth > 0) && (frameHeight > 0)) - { - int origX, origY; - int drawW, drawH; - -// Center the pixmap or top-left orient it - - if (frameWidth > _width) - { - origX = (frameWidth - _width) / 2; - origX += frameX + 2; - drawW = _width; - } - else - { - origX = frameX + 2; - drawW = frameWidth; - } - - if (frameHeight > _height) - { - origY = (frameHeight - _height) / 2; - origY += frameY + 2; - drawH = _height; - } - else - { - origY = frameY + 2; - drawH = frameHeight; - } - - XCopyArea (XtDisplay (_base), _pixmap, XtWindow (_base), _pixmapGC, - 0, 0, drawW, drawH, origX, origY); - } - } -} - -// _map - -void _XsMotifIcon::_map ( ) -{ - unsigned long valuemask; - XGCValues values; - Pixel fg; - Pixel bg; - int depth; - -// Call the base-class - - _XsMotifComponent::_map ( ); - -// Get the icon pixels - - XtVaGetValues (_win->base ( ), XmNdepth, &depth, XmNbackground, &bg, - XmNforeground, &fg, NULL); - -// Create the default icon pixmap - - if (_pixmap == 0) - { - _pixmap = XCreatePixmapFromBitmapData (XtDisplay (_base), XtWindow (_base), - xs_motif_icon_bits, xs_motif_icon_width, xs_motif_icon_height, - fg, bg, depth); - -// Set this pixmap - - setPixmap (_pixmap); - - _freePixmap = True; - -// Create the icon pixmap graphics context - - valuemask = GCGraphicsExposures | GCForeground | GCBackground; - - values.graphics_exposures = False; - values.foreground = fg; - values.background = bg; - - _pixmapGC = XtGetGC (_base, valuemask, &values); - } - -// Create the font graphics context - - valuemask = GCForeground | GCBackground | GCGraphicsExposures | GCFont; - - values.foreground = fg; - values.background = bg; - values.font = _iconFont->fid; - values.graphics_exposures = False; - - _fontGC = XtGetGC (_base, valuemask, &values); -} - -/* - ---------------------------------------------------------------------------- - _XsMotifMenu -*/ - -// Static definitions - -int _XsMotifMenu::_count = 0; -Cursor _XsMotifMenu::_cursor = None; -Pixmap _XsMotifMenu::_stipple = None; -Display *_XsMotifMenu::_dpy = 0; - -// Resources - -XtResource _XsMotifMenu::_resourceList[] = { - { - "saveUnder", - "SaveUnder", - XmRBoolean, - sizeof (Boolean), - XtOffset (_XsMotifMenu*, _saveUnder), - XmRImmediate, - (XtPointer)True - }, - { - "restoreString", - "RestoreString", - XmRString, - sizeof (String), - XtOffset (_XsMotifMenu*, _strings[Restore]), - XmRString, - "Restore" - }, - { - "moveString", - "MoveString", - XmRString, - sizeof (String), - XtOffset (_XsMotifMenu*, _strings[Move]), - XmRString, - "Move" - }, - { - "sizeString", - "SizeString", - XmRString, - sizeof (String), - XtOffset (_XsMotifMenu*, _strings[Size]), - XmRString, - "Size" - }, - { - "minimizeString", - "MinimizeString", - XmRString, - sizeof (String), - XtOffset (_XsMotifMenu*, _strings[Minimize]), - XmRString, - "Minimize" - }, - { - "maximizeString", - "MaximizeString", - XmRString, - sizeof (String), - XtOffset (_XsMotifMenu*, _strings[Maximize]), - XmRString, - "Maximize" - }, - { - "raiseString", - "RaiseString", - XmRString, - sizeof (String), - XtOffset (_XsMotifMenu*, _strings[Raise]), - XmRString, - "Raise" - }, - { - "lowerString", - "LowerString", - XmRString, - sizeof (String), - XtOffset (_XsMotifMenu*, _strings[Lower]), - XmRString, - "Lower" - }, - { - "closeString", - "CloseString", - XmRString, - sizeof (String), - XtOffset (_XsMotifMenu*, _strings[Close]), - XmRString, - "Close" - }, - { - "menuFont", - "menuFont", - XmRFontStruct, - sizeof (XFontStruct*), - XtOffset (_XsMotifMenu*, _menuFont), - XmRString, - "-*-helvetica-bold-o-normal-*-14-*-*-*-*-*-iso8859-1" - } -}; - -// Constructor - -_XsMotifMenu::_XsMotifMenu (const char *name, XsMotifWindow *win) : - _XsMotifBase (name, win) -{ - -// Create the cursor (if necessary) - - if (_count++ == 0) - { - -// Create the menu cursor - - _cursor = XCreateFontCursor (XtDisplay (win->base ( )), XC_arrow); - -// Create a stippled pixmap - - Widget parent = _win->base ( ); - Pixel foreground; - Pixel background; - int depth; - - XtVaGetValues (parent, XmNforeground, &foreground, XmNbackground, - &background, XmNdepth, &depth, NULL); - - const int pixmapWidth = 2; - const int pixmapHeight = 2; - static unsigned char pixmapBits[] = { 0x02, 0x01 }; - - _dpy = XtDisplay (parent); - _stipple = XCreatePixmapFromBitmapData (_dpy, DefaultRootWindow (_dpy), - (char*)pixmapBits, pixmapWidth, pixmapHeight, foreground, background, - depth); - } - -// Initialize - - _fontGC = 0; - _grayGC = 0; - _backgroundGC = 0; - -// Create the component (why doesn't overrideShell work?) - - _base = XtVaCreatePopupShell (_name, topLevelShellWidgetClass, - XtParent (_win->base ( )), XmNoverrideRedirect, True, - XmNborderWidth, 1, NULL); - -// Install destroy handler - - _installDestroyHandler ( ); - -// Install event handler ('cause we never call _XsMotifBase::show) - - XtAddEventHandler (_base, StructureNotifyMask, False, _mapEventHandler, (XtPointer)this); - -// Get resources - - _getResources (_resourceList, XtNumber (_resourceList)); - -// Get the background color - - Pixel bg; - - XtVaGetValues (_win->base ( ), XmNbackground, &bg, NULL); - -// Compute the size of the (largest) menu item - - int textHeight = _menuFont->ascent + _menuFont->descent; - int textWidth = 0; - int tmp; - - for (int loop = 0; loop < Num; loop++) - { - tmp = XTextWidth (_menuFont, _strings[loop], strlen (_strings[loop])); - - if (tmp > textWidth) - textWidth = tmp; - } - -// Put a border around the buttons - - textWidth += (2 * HorizTextOffset); - textHeight += (2 * VertTextOffset); - -/* - The menu height is the menu-shadow (1 pixel on top and bottom) + the - items themselves. -*/ - - int menuHeight = (2 * ShadowThickness) + // Top and bottom shadow - (textHeight * Num); // The menu items - -/* - The menu width is the menu-shadow (1 pixel on the left and right) + - the largest menu text (calculated above) -*/ - - int menuWidth = (2 * ShadowThickness) + // Left and right shadow - textWidth; // Largest text item - -// Configure the popup - - XtVaSetValues (_base, XmNsaveUnder, _saveUnder, XmNwidth, menuWidth, - XmNheight, menuHeight, NULL); -} - -// Destructor - -_XsMotifMenu::~_XsMotifMenu ( ) -{ - if (_fontGC) - XtReleaseGC (_base, _fontGC); - - if (_grayGC) - XtReleaseGC (_base, _grayGC); - - if (_backgroundGC) - XtReleaseGC (_base, _backgroundGC); - -// Free the pixmap (if necessary) - - if (--_count == 0) - XFreePixmap (_dpy, _stipple); -} - -// popup - -void _XsMotifMenu::popup (Boolean atPointer) -{ - assert (_base != 0); - - Position x, y; - -// Compute the location of the menu. - - if (atPointer) - { - unsigned int mask; - Window win; - int winX, winY; - int rootX, rootY; - -// Menu at pointer location - - XQueryPointer (XtDisplay (_base), XtWindow (XtParent (_base)), - &win, &win, &rootX, &rootY, &winX, &winY, &mask); - - x = (Position)rootX; - y = (Position)rootY; - } - else - { - -// Menu at top-left corner of client area - - XtTranslateCoords (_win->clientArea ( ), 0, 0, &x, &y); - } - -// Move the menu - - XtVaSetValues (_base, XmNx, x, XmNy, y, NULL); - -// Initialize the item - - _curItem = NoItem; - -// Pop it up - - XtPopup (_base, XtGrabNone); - -// Grab the pointer - - if (_grabPointer ( ) == FALSE) - return; - -// Update the menu - - _processEvents ( ); - -// Pop the menu down - - XtPopdown (_base); - -// Ungrab the pointer - - _ungrabPointer ( ); - - if (_curItem != NoItem) - { - -/* - Post a work-proc to process this item. This will allow everything - to get caught up before we process the menu item -*/ - - XtAppContext appContext = XtWidgetToApplicationContext (_base); - XtAppAddWorkProc (appContext, _workProc, (XtPointer)this); - } -} - -// className - -const char *_XsMotifMenu::className ( ) const -{ - return ("_XsMotifMenu"); -} - -// _componentDestroyed - -void _XsMotifMenu::_componentDestroyed ( ) -{ - -// Clean up the GCs - - if (_fontGC) - XtReleaseGC (_base, _fontGC); - - if (_grayGC) - XtReleaseGC (_base, _grayGC); - - if (_backgroundGC) - XtReleaseGC (_base, _backgroundGC); - - _fontGC = 0; - _grayGC = 0; - _backgroundGC = 0; - -// Call the base-class - - _XsMotifBase::_componentDestroyed ( ); -} - -// _processEvents - -void _XsMotifMenu::_processEvents ( ) -{ - assert (_base != 0); - - XtAppContext appContext = XtWidgetToApplicationContext (_base); - XEvent event; - Display *dpy = XtDisplay (_base); - int done = 0; - - while (!done) - { - XtAppNextEvent (appContext, &event); - -// Process this event - - switch (event.type) - { - case ButtonRelease: - { - done = 1; - break; - } - case Expose: - { - _redrawMenu ( ); - break; - } - case MotionNotify: - { - XEvent next; - -// Process only the last motion event - - while (XPending (dpy) > 0) - { - XPeekEvent (dpy, &next); - if (next.type != MotionNotify) - break; - XtAppNextEvent (appContext, &event); - } - -// Track the mouse and toggle the menu items - - Item item = _trackPointer ((XMotionEvent*)&event); - -// Unselect the current item (if the item is different) - - if (item != _curItem) - { - _toggleItem (_curItem, False); - -// Select the new item - - _toggleItem ((_curItem = item), True); - } - - break; - } - default: - { - XtDispatchEvent (&event); - break; - } - } - } -} - -// _processItem - -void _XsMotifMenu::_processItem (Item item) -{ - if (item == NoItem) - return; - - switch (item) - { - case Restore: - { - _win->restore ( ); - break; - } - case Move: - { - Widget base = (_win->minimized ( )) ? _win->icon ( ) : _win->base ( ); - -// Warp the pointer to the center of the window - - Dimension width, height; - XtVaGetValues (base, XmNwidth, &width, XmNheight, &height, NULL); - - XWarpPointer (XtDisplay (_base), None, XtWindow (base), 0, 0, 0, 0, - (width / 2), (height / 2)); - -// Move the window - - XsMoveOutline move (base); - -// Start the move - - if (move.go (True) != False) - { - -// Relocate the window - - _win->setPosition (move.x ( ), move.y ( )); - } - break; - } - case Size: - { - Widget base = (_win->minimized ( )) ? _win->icon ( ) : _win->base ( ); - -// Warp the pointer to the center of the window - - Dimension width, height; - XtVaGetValues (base, XmNwidth, &width, XmNheight, &height, NULL); - - XWarpPointer (XtDisplay (_base), None, XtWindow (base), 0, 0, 0, 0, - (width / 2), (height / 2)); - -// Resize the window - - XsResizeOutline resize (_win->base ( ), XsResizeOutline::Undetermined); - resize.setMinSize (_win->minWidth ( ), _win->minHeight ( )); - -// Start the resize - - if (resize.go (True) != False) - { - -// Relocate the window - - _win->setPosition (resize.x ( ), resize.y ( )); - _win->setSize (resize.width ( ), resize.height ( )); - } - break; - } - case Minimize: - { - _win->minimize ( ); - break; - } - case Maximize: - { - _win->maximize ( ); - break; - } - case Raise: - { - _win->raise ( ); - break; - } - case Lower: - { - _win->lower ( ); - break; - } - case Close: - { - _win->close ( ); - break; - } - default: - assert (0); - } -} - -// _redrawMenu - -void _XsMotifMenu::_redrawMenu ( ) -{ - Dimension w, h; - -// Get the size of the menu - - XtVaGetValues (_base, XmNwidth, &w, XmNheight, &h, NULL); - -// Draw a shadow around the menu - - _drawShadows (0, 0, w, h, ShadowThickness); - -// Cycle and draw all of the elements - - for (int loop = 0; loop < Num; loop++) - _redrawItem ((Item)loop); -} - -// _redrawItem - -void _XsMotifMenu::_redrawItem (Item item) -{ - if (item == NoItem) - return; - - int x = ShadowThickness + HorizTextOffset; - int y; - -/* - Compute the y-position of the element. This will be the size of the - top-shadow + the items before it + the offset of the item itself -*/ - - y = ShadowThickness + // Top shadow - (item * ((VertTextOffset * 2) + (_menuFont->descent + _menuFont->ascent))) + - (VertTextOffset + _menuFont->ascent); // The item iteself - -// Figure out the graphics-context - - GC gc; - - if (_win->minimized ( )) - gc = ((item == Size) || (item == Minimize)) ? _grayGC : _fontGC; - else if (_win->maximized ( )) - gc = (item == Maximize) ? _grayGC : _fontGC; - else - gc = (item == Restore) ? _grayGC : _fontGC; - -// Draw the string - - XDrawString (XtDisplay (_base), XtWindow (_base), gc, x, y, - _strings[item], strlen (_strings[item])); -} - -// _toggleItem - -void _XsMotifMenu::_toggleItem (Item item, Boolean active) -{ - if (item == NoItem) - return; - -/* - Either draw the background of the specified item in the active color - or the standard background color -*/ - - GC gc = (active) ? _topShadowGC : _backgroundGC; - -// Get the width of the menu - - Dimension menuWidth; - XtVaGetValues (_base, XmNwidth, &menuWidth, NULL); - -// Compute the location and size of the rectangle - - int x, y; - unsigned int width, height; - - x = ShadowThickness; - height = ((VertTextOffset * 2) + (_menuFont->descent + _menuFont->ascent)); - y = ShadowThickness + (item * height); - width = menuWidth - (2 * ShadowThickness); - -// Draw the filled rectangle - - XFillRectangle (XtDisplay (_base), XtWindow (_base), gc, x, y, width, height); - -// Redraw the text - - _redrawItem (item); -} - -// _trackPointer - -_XsMotifMenu::Item _XsMotifMenu::_trackPointer (XMotionEvent *event) -{ - assert (_base != 0); - - Dimension menuWidth; - Dimension menuHeight; - Position x, y; - -// Get the menu size and position - - XtVaGetValues (_base, XmNwidth, &menuWidth, XmNheight, &menuHeight, - XmNx, &x, XmNy, &y, NULL); - -// Make sure the pointer is in the menu - - if ((event->x_root < x) || (event->x_root > (x + menuWidth))) - return (NoItem); - - if ((event->y_root < y) || (event->y_root > (y + menuHeight))) - return (NoItem); - -// Make sure the pointer is on the confines of the shadow - - if ((event->x < ShadowThickness) || (event->x > (menuWidth - (2 * ShadowThickness)))) - return (NoItem); - - if ((event->y < ShadowThickness) || (event->y > (menuHeight - (2 * ShadowThickness)))) - return (NoItem); - -/* - Now we are just concerned with the y-position. Subtract off the - shadow thickness to normalize the location -*/ - - int yPos = event->y - ShadowThickness; - -// Compute which item the mouse is in - - int itemHeight = (VertTextOffset * 2) + (_menuFont->descent + _menuFont->ascent); - - Item item = (Item)(yPos / itemHeight); - -// Validate that the item is not grayed-out - - if (_win->minimized ( )) - { - if ((item == Size) || (item == Minimize)) - item = NoItem; - } - else if (_win->maximized ( )) - { - if (item == Maximize) - item = NoItem; - } - else if (item == Restore) - item = NoItem; - - return (item); -} - -// _grabPointer - -Boolean _XsMotifMenu::_grabPointer ( ) -{ - -// Sync everything up before being grabby - - XSync (XtDisplay (_base), False); - -// Grab the pointer - - if (XGrabPointer (XtDisplay (_base), XtWindow (_base), False, - (unsigned int)(ButtonPressMask | ButtonReleaseMask | PointerMotionMask | - EnterWindowMask | LeaveWindowMask), GrabModeAsync, - GrabModeAsync, None, _cursor, CurrentTime) != GrabSuccess) - { - XBell (XtDisplay (_base), 100); - return (False); - } - - return (True); -} - -// _ungrabPointer - -void _XsMotifMenu::_ungrabPointer ( ) -{ - -// Ungrab the pointer - - XUngrabPointer (XtDisplay (_base), CurrentTime); - -// Sync everything back up - - XSync (XtDisplay (_base), False); -} - -// _map - -void _XsMotifMenu::_map ( ) -{ - -// Call the base-class - - _XsMotifBase::_map ( ); - - unsigned long valuemask; - XGCValues values; - Pixel foreground; - Pixel background; - -// Get the pixels - - XtVaGetValues (XtParent (_base), XmNforeground, &foreground, NULL); - XtVaGetValues (_base, XmNbackground, &background, NULL); - -// Create the font graphics context - - valuemask = GCForeground | GCBackground | GCGraphicsExposures | GCFont; - - values.foreground = foreground; - values.background = background; - values.font = _menuFont->fid; - values.graphics_exposures = False; - - _fontGC = XtGetGC (_base, valuemask, &values); - -// Create the insensitive font graphics context - - valuemask |= (GCFillStyle | GCTile); - - values.fill_style = FillTiled; - values.tile = _stipple; - - _grayGC = XtGetGC (_base, valuemask, &values); - -// Create the background contexts - - valuemask = GCForeground | GCLineWidth | GCGraphicsExposures; - values.line_width = 0; - values.graphics_exposures = False; - values.foreground = background; - - _backgroundGC = XtGetGC (_base, valuemask, &values); -} - -// _workProc - -Boolean _XsMotifMenu::_workProc (XtPointer clientData) -{ - _XsMotifMenu *obj = (_XsMotifMenu*)clientData; - if (obj->_curItem != NoItem) - obj->_processItem (obj->_curItem); - - return (True); -} - -/* - ---------------------------------------------------------------------------- - XsMotifWindow -*/ - -// Static definitions - -XtResource XsMotifWindow::_resourceList[] = { - { - "showBorder", - "ShowBorder", - XmRBoolean, - sizeof (Boolean), - XtOffset (XsMotifWindow*, _showBorder), - XmRImmediate, - (XtPointer)True - }, - { - "showResize", - "ShowResize", - XmRBoolean, - sizeof (Boolean), - XtOffset (XsMotifWindow*, _showResize), - XmRImmediate, - (XtPointer)True - }, - { - "showTitle", - "ShowTitle", - XmRBoolean, - sizeof (Boolean), - XtOffset (XsMotifWindow*, _showTitle), - XmRImmediate, - (XtPointer)True - }, - { - "showMenu", - "ShowMenu", - XmRBoolean, - sizeof (Boolean), - XtOffset (XsMotifWindow*, _showMenu), - XmRImmediate, - (XtPointer)True - }, - { - "showMinimize", - "ShowMinimize", - XmRBoolean, - sizeof (Boolean), - XtOffset (XsMotifWindow*, _showMinimize), - XmRImmediate, - (XtPointer)True - }, - { - "showMaximize", - "ShowMaximize", - XmRBoolean, - sizeof (Boolean), - XtOffset (XsMotifWindow*, _showMaximize), - XmRImmediate, - (XtPointer)True - }, - { - "lowerOnIconify", - "LowerOnIconify", - XmRBoolean, - sizeof (Boolean), - XtOffset (XsMotifWindow*, _lowerOnIconify), - XmRImmediate, - (XtPointer)False - }, - { - XmNminWidth, - XmCMinWidth, - XmRDimension, - sizeof (Dimension), - XtOffset (XsMotifWindow*, _minW), - XmRImmediate, - (XtPointer)((BorderSize_ + ButtonSize_) * 3) - }, - { - XmNmaxWidth, - XmCMaxWidth, - XmRDimension, - sizeof (Dimension), - XtOffset (XsMotifWindow*, _maxW), - XmRImmediate, - (XtPointer)-1 - }, - { - XmNminHeight, - XmCMinHeight, - XmRDimension, - sizeof (Dimension), - XtOffset (XsMotifWindow*, _minH), - XmRImmediate, - (XtPointer)((BorderSize_ + ButtonSize_) * 3) - }, - { - XmNmaxHeight, - XmCMaxHeight, - XmRDimension, - sizeof (Dimension), - XtOffset (XsMotifWindow*, _maxH), - XmRImmediate, - (XtPointer)-1 - } -}; - -// Constructor - -XsMotifWindow::XsMotifWindow (const char *name) : XsMDIWindow (name) -{ - int loop; - -// Initialize - - for (loop = 0; loop < _XsMotifSide::Max; loop++) - { - _corners[loop] = 0; - _sides[loop] = 0; - } - - for (loop = 0; loop < _XsMotifButton::Max; loop++) - _buttons[loop] = 0; - - _title = 0; - _icon = 0; - _menu = 0; - - _maximized = False; - _minimized = False; -} - -// Destructor - -XsMotifWindow::~XsMotifWindow ( ) -{ - int loop; - - for (loop = 0; loop < _XsMotifSide::Max; loop++) - { - delete _corners[loop]; - delete _sides[loop]; - } - - for (loop = 0; loop < _XsMotifButton::Max; loop++) - delete _buttons[loop]; - - delete _title; - delete _icon; - delete _menu; -} - -// raise - -void XsMotifWindow::raise ( ) -{ - Widget w = (_minimized == True) ? _icon->base ( ) : _base; - assert (w != 0); - XRaiseWindow (XtDisplay (w), XtWindow (w)); -} - -// lower - -void XsMotifWindow::lower ( ) -{ - Widget w = (_minimized == True) ? _icon->base ( ) : _base; - assert (w != 0); - XLowerWindow (XtDisplay (w), XtWindow (w)); -} - -// minimize - -void XsMotifWindow::minimize ( ) -{ - assert (_base != 0); - -// Check if we are already minimized - - if (_minimized == True) - return; - -// Minimize the window - - hide ( ); - - _minimized = True; - -// Lower (if necessary) - - if (_lowerOnIconify) - lower ( ); - - _icon->show ( ); -} - -// maximize - -void XsMotifWindow::maximize ( ) -{ - assert (_base != 0); - -// Check if we are already in this state - - if (_maximized == True) - return; - -// Restore (if necessary) - - if (_minimized) - restore ( ); - -// Save current dimensions - - XtVaGetValues (_base, XmNx, &_savedX, XmNy, &_savedY, XmNwidth, - &_savedWidth, XmNheight, &_savedHeight, NULL); - -/* - Constrain the new window size. The size of the maximized window - is equal to the size of the current clip-window of the canvas. -*/ - - const Dimension offset = 5; // Border around max'd window - - Widget clipWindow = XtParent (XtParent (_base)); - assert (clipWindow != 0); - Dimension clipW, clipH; - Window child; - int newX, newY; - - XtVaGetValues (clipWindow, XmNheight, &clipH, XmNwidth, &clipW, NULL); - -// Add in offset - - if (clipW > (offset * 2)) - clipW -= (offset * 2); - - if (clipH > (offset * 2)) - clipH -= (offset * 2); - -// Compute the new window position (map clip-window to work-area) - - XTranslateCoordinates (XtDisplay (_base), XtWindow (clipWindow), - XtWindow (XtParent (_base)), (int)offset, (int)offset, - &newX, &newY, &child); - -// Set new maximum dimensions - - setPosition ((Position)newX, (Position)newY); - setSize (clipW, clipH); - - _maximized = True; - -// Redraw the maximize button - - _buttons[_XsMotifButton::Maximize]->redraw ( ); -} - -// restore - -void XsMotifWindow::restore ( ) -{ - assert (_base != 0); - -// Check if we are already restored - - if ((_maximized == False) && (_minimized == False)) - return; - -// Either un-minimize or un-maximize - - if (_minimized) - { - -// Restore the window - - _icon->hide ( ); - _minimized = False; - -// If maximized, restore again - - if (_maximized) - restore ( ); - -// Show the window - - show ( ); - } - else - { - -// Restore saved dimensions - - setPosition (_savedX, _savedY); - setSize (_savedWidth, _savedHeight); - } -} - -// close - -void XsMotifWindow::close ( ) -{ - -/* - Don't delete the window (because its not ours to delete). - Just hide it. -*/ - - if (_minimized) - _icon->hide ( ); - else - hide ( ); -} - -// setTitle - -void XsMotifWindow::setTitle (const char *title) -{ - if (_title != 0) - _title->setTitle (title); -} - -// setIconName - -void XsMotifWindow::setIconName (const char *iconName) -{ - if (_icon != 0) - _icon->setIconName (iconName); -} - -// setPixmap - -void XsMotifWindow::setPixmap (Pixmap pixmap) -{ - if (_icon != 0) - _icon->setPixmap (pixmap); -} - -// popupMenu - -void XsMotifWindow::popupMenu (Boolean b) -{ - if (_menu != 0) - _menu->popup (b); -} - -// setPosition - -void XsMotifWindow::setPosition (Position x, Position y) -{ - if (_base != 0) - { - Widget w = (_minimized == True) ? _icon->base ( ) : _base; - assert (w != 0); - XtVaSetValues (w, XmNx, x, XmNy, y, NULL); - } - else - XsMDIWindow::setPosition (x, y); // Cache the points -} - -// setSize - -void XsMotifWindow::setSize (Dimension w, Dimension h) -{ - -// Set the window size - - if (_base != 0) - { - if (w < _minW) - w = _minW; - else if ((_maxW != (Dimension)-1) && (w > _maxW)) - w = _maxW; - - if (h < _minH) - h = _minH; - else if ((_maxH != (Dimension)-1) && (h > _maxH)) - h = _maxH; - - if (_minimized == False) - XtVaSetValues (_base, XmNwidth, w, XmNheight, h, NULL); - -// If window was maximized, change the window state back to normal - - if (_maximized == True) - { - _maximized = False; - -// Redraw the maximize button - - _buttons[_XsMotifButton::Maximize]->redraw ( ); - } - } - else - XsMDIWindow::setSize (w, h); // Cache the points -} - -// className - -const char* XsMotifWindow::className ( ) const -{ - return ("XsMotifWindow"); -} - -// _createWindow - -void XsMotifWindow::_createWindow (Widget parent) -{ - assert (parent != 0); - -// Create the window frame - - _base = XtVaCreateWidget (_name, xmFormWidgetClass, parent, - XmNborderWidth, (Dimension)1, NULL); - -// Install destroy handler - - _installDestroyHandler ( ); - -// Get resources - - _getResources (_resourceList, XtNumber (_resourceList)); - -/* - Fix configuration inter-dependencies. Here are the rules: - - 1) If there is no border, then there are no resize handles - 2) If there is no title, then there are no buttons (would look stupid) -*/ - - if (_showBorder == False) - _showResize = False; - - if (_showTitle == False) - { - _showMenu = False; - _showMinimize = False; - _showMaximize = False; - } - -/* - Corners -*/ - - if (_showResize) - { - -// Top-Left - - _corners[_XsMotifCorner::TopLeft] = new _XsMotifCorner ("topLeft", this, _XsMotifCorner::TopLeft); - - XtVaSetValues (_corners[_XsMotifCorner::TopLeft]->base ( ), XmNtopAttachment, - XmATTACH_FORM, XmNbottomAttachment, XmATTACH_NONE, XmNleftAttachment, - XmATTACH_FORM, XmNrightAttachment, XmATTACH_NONE, NULL); - -// Top-Right - - _corners[_XsMotifCorner::TopRight] = new _XsMotifCorner ("topRight", this, _XsMotifCorner::TopRight); - - XtVaSetValues (_corners[_XsMotifCorner::TopRight]->base ( ), XmNtopAttachment, - XmATTACH_FORM, XmNbottomAttachment, XmATTACH_NONE, XmNleftAttachment, - XmATTACH_NONE, XmNrightAttachment, XmATTACH_FORM, NULL); - -// Bottom-Left - - _corners[_XsMotifCorner::BottomLeft] = new _XsMotifCorner ("bottomLeft", this, _XsMotifCorner::BottomLeft); - - XtVaSetValues (_corners[_XsMotifCorner::BottomLeft]->base ( ), XmNtopAttachment, - XmATTACH_NONE, XmNbottomAttachment, XmATTACH_FORM, XmNleftAttachment, - XmATTACH_FORM, XmNrightAttachment, XmATTACH_NONE, NULL); - -// Bottom-Right - - _corners[_XsMotifCorner::BottomRight] = new _XsMotifCorner ("bottomRight", this, _XsMotifCorner::BottomRight); - - XtVaSetValues (_corners[_XsMotifCorner::BottomRight]->base ( ), XmNtopAttachment, - XmATTACH_NONE, XmNbottomAttachment, XmATTACH_FORM, XmNleftAttachment, - XmATTACH_NONE, XmNrightAttachment, XmATTACH_FORM, NULL); - } - -/* - Sides -*/ - - if (_showBorder) - { - -// Top - - _sides[_XsMotifSide::Top] = new _XsMotifSide ("top", this, _XsMotifSide::Top); - - XtVaSetValues (_sides[_XsMotifSide::Top]->base ( ), XmNtopAttachment, - XmATTACH_FORM, XmNbottomAttachment, XmATTACH_NONE, NULL); - - if (_showResize) - { - XtVaSetValues (_sides[_XsMotifSide::Top]->base ( ), XmNleftAttachment, - XmATTACH_WIDGET, XmNleftWidget, _corners[_XsMotifCorner::TopLeft]->base ( ), - XmNrightAttachment, XmATTACH_WIDGET, XmNrightWidget, - _corners[_XsMotifCorner::TopRight]->base ( ), NULL); - } - else - { - XtVaSetValues (_sides[_XsMotifSide::Top]->base ( ), XmNleftAttachment, - XmATTACH_FORM, XmNrightAttachment, XmATTACH_FORM, NULL); - } - -// Bottom - - _sides[_XsMotifSide::Bottom] = new _XsMotifSide ("bottom", this, _XsMotifSide::Bottom); - - XtVaSetValues (_sides[_XsMotifSide::Bottom]->base ( ), XmNtopAttachment, - XmATTACH_NONE, XmNbottomAttachment, XmATTACH_FORM, NULL); - - if (_showResize) - { - XtVaSetValues (_sides[_XsMotifSide::Bottom]->base ( ), XmNleftAttachment, - XmATTACH_WIDGET, XmNleftWidget, _corners[_XsMotifCorner::BottomLeft]->base ( ), - XmNrightAttachment, XmATTACH_WIDGET, XmNrightWidget, - _corners[_XsMotifCorner::BottomRight]->base ( ), NULL); - } - else - { - XtVaSetValues (_sides[_XsMotifSide::Bottom]->base ( ), XmNleftAttachment, - XmATTACH_FORM, XmNrightAttachment, XmATTACH_FORM, NULL); - } - -// Left side - - _sides[_XsMotifSide::Left] = new _XsMotifSide ("left", this, _XsMotifSide::Left); - - XtVaSetValues (_sides[_XsMotifSide::Left]->base ( ), XmNleftAttachment, - XmATTACH_FORM, XmNrightAttachment, XmATTACH_NONE, NULL); - - if (_showResize) - { - XtVaSetValues (_sides[_XsMotifSide::Left]->base ( ), XmNtopAttachment, - XmATTACH_WIDGET, XmNtopWidget, _corners[_XsMotifCorner::TopLeft]->base ( ), - XmNbottomAttachment, XmATTACH_WIDGET, XmNbottomWidget, - _corners[_XsMotifCorner::BottomLeft]->base ( ), NULL); - } - else - { - XtVaSetValues (_sides[_XsMotifSide::Left]->base ( ), XmNtopAttachment, - XmATTACH_FORM, XmNbottomAttachment, XmATTACH_FORM, NULL); - } - -// Right side - - _sides[_XsMotifSide::Right] = new _XsMotifSide ("right", this, _XsMotifSide::Right); - - XtVaSetValues (_sides[_XsMotifSide::Right]->base ( ), XmNleftAttachment, - XmATTACH_NONE, XmNrightAttachment, XmATTACH_FORM, NULL); - - if (_showResize) - { - XtVaSetValues (_sides[_XsMotifSide::Right]->base ( ), XmNtopAttachment, - XmATTACH_WIDGET, XmNtopWidget, _corners[_XsMotifCorner::TopRight]->base ( ), - XmNbottomAttachment, XmATTACH_WIDGET, XmNbottomWidget, - _corners[_XsMotifCorner::BottomRight]->base ( ), NULL); - } - else - { - XtVaSetValues (_sides[_XsMotifSide::Right]->base ( ), XmNtopAttachment, - XmATTACH_FORM, XmNbottomAttachment, XmATTACH_FORM, NULL); - } - } - -// Menu button - - if (_showMenu) - { - _buttons[_XsMotifButton::Menu] = new _XsMotifButton ("menu", this, _XsMotifButton::Menu); - - XtVaSetValues (_buttons[_XsMotifButton::Menu]->base ( ), XmNbottomAttachment, - XmATTACH_NONE, XmNrightAttachment, XmATTACH_NONE, NULL); - - if (_showBorder) - { - XtVaSetValues (_buttons[_XsMotifButton::Menu]->base ( ), XmNleftAttachment, - XmATTACH_WIDGET, XmNleftWidget, _sides[_XsMotifSide::Left]->base ( ), - XmNtopAttachment, XmATTACH_WIDGET, XmNtopWidget, _sides[_XsMotifSide::Top]->base ( ), - NULL); - } - else - { - XtVaSetValues (_buttons[_XsMotifButton::Menu]->base ( ), XmNleftAttachment, - XmATTACH_FORM, XmNtopAttachment, XmATTACH_FORM, NULL); - } - } - -// Maximize button - - if (_showMaximize) - { - _buttons[_XsMotifButton::Maximize] = new _XsMotifButton ("maximize", this, _XsMotifButton::Maximize); - - XtVaSetValues (_buttons[_XsMotifButton::Maximize]->base ( ), XmNbottomAttachment, - XmATTACH_NONE, XmNleftAttachment, XmATTACH_NONE, NULL); - - if (_showBorder) - { - XtVaSetValues (_buttons[_XsMotifButton::Maximize]->base ( ), XmNtopAttachment, - XmATTACH_WIDGET, XmNtopWidget, _sides[_XsMotifSide::Top]->base ( ), - XmNrightAttachment, XmATTACH_WIDGET, XmNrightWidget, _sides[_XsMotifSide::Right]->base ( ), - NULL); - } - else - { - XtVaSetValues (_buttons[_XsMotifButton::Maximize]->base ( ), XmNtopAttachment, - XmATTACH_FORM, XmNrightAttachment, XmATTACH_FORM, NULL); - } - } - -// Minimize button - - if (_showMinimize) - { - _buttons[_XsMotifButton::Minimize] = new _XsMotifButton ("minimize", this, _XsMotifButton::Minimize); - - XtVaSetValues (_buttons[_XsMotifButton::Minimize]->base ( ), - XmNbottomAttachment, XmATTACH_NONE, XmNleftAttachment, XmATTACH_NONE, - NULL); - - if (_showBorder) - { - XtVaSetValues (_buttons[_XsMotifButton::Minimize]->base ( ), XmNtopAttachment, - XmATTACH_WIDGET, XmNtopWidget, _sides[_XsMotifSide::Top]->base ( ), - XmNrightAttachment, XmATTACH_WIDGET, XmNrightWidget, - _sides[_XsMotifSide::Right]->base ( ), NULL); - } - else - { - XtVaSetValues (_buttons[_XsMotifButton::Minimize]->base ( ), - XmNtopAttachment, XmATTACH_FORM, XmNrightAttachment, XmATTACH_FORM, - NULL); - } - - if (_showMaximize) - { - XtVaSetValues (_buttons[_XsMotifButton::Minimize]->base ( ), - XmNrightAttachment, XmATTACH_WIDGET, XmNrightWidget, - _buttons[_XsMotifButton::Maximize]->base ( ), NULL); - } - } - -/* - Titlebar -*/ - - if (_showTitle) - { - _title = new _XsMotifTitle ("title", this); - - XtVaSetValues (_title->base ( ), XmNbottomAttachment, XmATTACH_NONE, - NULL); - - if (_showBorder) - { - XtVaSetValues (_title->base ( ), XmNtopAttachment, XmATTACH_WIDGET, - XmNtopWidget, _sides[_XsMotifSide::Top]->base ( ), - XmNleftAttachment, XmATTACH_WIDGET, XmNleftWidget, - _sides[_XsMotifSide::Left]->base ( ), XmNrightAttachment, - XmATTACH_WIDGET, XmNrightWidget, _sides[_XsMotifSide::Right]->base ( ), - NULL); - } - else - { - XtVaSetValues (_title->base ( ), XmNtopAttachment, XmATTACH_FORM, - XmNleftAttachment, XmATTACH_FORM, XmNrightAttachment, XmATTACH_FORM, - NULL); - } - - if (_showMenu) - { - XtVaSetValues (_title->base ( ), XmNleftAttachment, XmATTACH_WIDGET, - XmNleftWidget, _buttons[_XsMotifButton::Menu]->base ( ), NULL); - } - - Widget ba = (_buttons[_XsMotifButton::Minimize] != 0) ? - _buttons[_XsMotifButton::Minimize]->base ( ) : - (_buttons[_XsMotifButton::Maximize] != 0) ? - _buttons[_XsMotifButton::Maximize]->base ( ) : 0; - - if (ba) - { - XtVaSetValues (_title->base ( ), XmNrightAttachment, XmATTACH_WIDGET, - XmNrightWidget, ba, NULL); - } - } - -/* - Icon -*/ - - _icon = new _XsMotifIcon ("icon", this, parent); - -/* - Menu -*/ - - _menu = new _XsMotifMenu ("menu", this); - -/* - Client Area -*/ - - _clientArea = XtVaCreateWidget ("clientArea", xmFormWidgetClass, _base, NULL); - - if (_showBorder) - { - XtVaSetValues (_clientArea, XmNleftAttachment, XmATTACH_WIDGET, - XmNleftWidget, _sides[_XsMotifSide::Left]->base ( ), XmNrightAttachment, - XmATTACH_WIDGET, XmNrightWidget, _sides[_XsMotifSide::Right]->base ( ), - XmNbottomAttachment, XmATTACH_WIDGET, XmNbottomWidget, - _sides[_XsMotifSide::Bottom]->base ( ), NULL); - } - else - { - XtVaSetValues (_clientArea, XmNleftAttachment, XmATTACH_FORM, - XmNrightAttachment, XmATTACH_FORM, XmNbottomAttachment, XmATTACH_FORM, - NULL); - } - - Widget topW = (_showTitle) ? _title->base ( ) : - (_showBorder) ? _sides[_XsMotifSide::Top]->base ( ) : 0; - - if (topW) - { - XtVaSetValues (_clientArea, XmNtopAttachment, XmATTACH_WIDGET, - XmNtopWidget, topW, NULL); - } - else - XtVaSetValues (_clientArea, XmNtopAttachment, XmATTACH_FORM, NULL); - -// Call the class function to create the contents of the window - - _buildClientArea (_clientArea); - -// Add an event handler to be called when this window is mapped - - XtAddEventHandler (_base, StructureNotifyMask, False, _mapEventHandler, (XtPointer)this); - -// Show everything - - int loop; - - for (loop = 0; loop < _XsMotifSide::Max; loop++) - { - if (_corners[loop] != 0) - _corners[loop]->show ( ); - if (_sides[loop] != 0) - _sides[loop]->show ( ); - } - - for (loop = 0; loop < _XsMotifButton::Max; loop++) - { - if (_buttons[loop] != 0) - _buttons[loop]->show ( ); - } - - if (_title != 0) - _title->show ( ); -} - -// _mapEvent - -void XsMotifWindow::_mapEvent ( ) -{ - -// Raise the client-area - - XRaiseWindow (XtDisplay (_clientArea), XtWindow (_clientArea)); -} - -// _mapEventHandler - -void XsMotifWindow::_mapEventHandler (Widget, XtPointer clientData, XEvent *event, Boolean*) -{ - if (event->type == MapNotify) - { - XsMotifWindow *obj = (XsMotifWindow*)clientData; - obj->_mapEvent ( ); - XtRemoveEventHandler (obj->_base, StructureNotifyMask, False, obj->_mapEventHandler, clientData); - } -} diff --git a/src/motif/mdi/lib/XsMotifWindow.h b/src/motif/mdi/lib/XsMotifWindow.h deleted file mode 100644 index 4580cb4438..0000000000 --- a/src/motif/mdi/lib/XsMotifWindow.h +++ /dev/null @@ -1,665 +0,0 @@ -/* - Copyright (C) 1996 Scott W. Sadler - All rights reserved. -*/ - -/* - XsMotifWindow.h - - History - 03-Mar-96 1.0; Scott W. Sadler (ssadler@cisco.com) - Created -*/ - -#ifndef XSMOTIFWINDOW_H -#define XSMOTIFWINDOW_H - -// Includes - -#include -#include "XsMDIWindow.h" - -// Forward declarations - -class XsMotifWindow; - -/* - ---------------------------------------------------------------------------- - _XsMotifBase class -*/ - -class _XsMotifBase : public XsComponent { - - public: - -// Destructor - - virtual ~_XsMotifBase ( ); - -// Window actions - - virtual void show ( ); - -// Class name - - virtual const char *className ( ) const; - - protected: - -// Protected constructor - - _XsMotifBase (const char *name, XsMotifWindow *win); - -// Component life-cycle - - virtual void _componentDestroyed ( ); - -// Utilities - - void _drawShadows (Position x, Position y, Dimension width, - Dimension height, Dimension thick, Boolean reverse = False); - - void _drawLine (Position x1, Position y1, Position x2, Position y2, GC &gc); - -// Implementation - - XsMotifWindow *_win; - - GC _topShadowGC; - GC _bottomShadowGC; - -// Event handlers - - virtual void _map ( ); - -// Internal Event handlers - - static void _mapEventHandler (Widget, XtPointer, XEvent*, Boolean*); -}; - -/* - ---------------------------------------------------------------------------- - _XsMotifComponent class -*/ - -class _XsMotifComponent : public _XsMotifBase { - - public: - -// Destructor - - virtual ~_XsMotifComponent ( ); - -// Enumerations - - enum Cursors { - TopCursor = 0, BottomCursor, LeftCursor, RightCursor, - TopLeftCursor, TopRightCursor, BottomLeftCursor, - BottomRightCursor, NumCursors }; - -// Class name - - virtual const char *className ( ) const; - - protected: - -// Protected constructor - - _XsMotifComponent (const char *name, XsMotifWindow *win, Widget parent = 0); - -// Cursors - - static Cursor _cursors[NumCursors]; - -// Component parameters - - Dimension _borderSize; - Dimension _buttonSize; - Dimension _cornerSize; - -// Event handlers - - virtual void _expose (XEvent*) = 0; - virtual void _input (XEvent*); - - private: - -// Internal Event handlers - - static void _exposeEventHandler (Widget, XtPointer, XEvent*, Boolean*); - static void _inputEventHandler (Widget, XtPointer, XEvent*, Boolean*); - -// Resources - - static XtResource _resourceList[]; - - static int _mutex; -}; - -/* - ---------------------------------------------------------------------------- - _XsMotifCorner class -*/ - -class _XsMotifCorner : public _XsMotifComponent { - - public: - -// Enumerations - - enum Corner { TopLeft = 0, TopRight, BottomLeft, BottomRight, Max }; - -// Constructor/Destructor - - _XsMotifCorner (const char *name, XsMotifWindow *win, Corner corner); - virtual ~_XsMotifCorner ( ); - -// Class name - - virtual const char *className ( ) const; - - protected: - -// Implementation - - Corner _corner; - -// Event handlers - - virtual void _expose (XEvent*); - virtual void _input (XEvent*); - virtual void _map ( ); -}; - -/* - ---------------------------------------------------------------------------- - _XsMotifSide class -*/ - -class _XsMotifSide : public _XsMotifComponent { - - public: - -// Enumerations - - enum Side { Top = 0, Bottom, Left, Right, Max }; - -// Constructor/Destructor - - _XsMotifSide (const char *name, XsMotifWindow *win, Side side); - virtual ~_XsMotifSide ( ); - -// Class name - - virtual const char *className ( ) const; - - protected: - -// Implementation - - Side _side; - - int _lastW; - int _lastH; - -// Event handlers - - virtual void _expose (XEvent*); - virtual void _input (XEvent*); - virtual void _map ( ); - virtual void _configure (XEvent *); - - private: - -// Callbacks - - static void _configureEventHandler (Widget, XtPointer, XEvent*, Boolean*); -}; - -/* - ---------------------------------------------------------------------------- - _XsMotifButton class -*/ - -class _XsMotifButton : public _XsMotifComponent { - - public: - -// Enumerations - - enum Button { Menu = 0, Minimize, Maximize, Max }; - -// Constructor/Destructor - - _XsMotifButton (const char *name, XsMotifWindow *win, Button button); - virtual ~_XsMotifButton ( ); - -// Utilities - - virtual void redraw ( ); - -// Class name - - virtual const char *className ( ) const; - - protected: - -// Implementation - - Boolean _pressed; - Button _button; - -// Event handlers - - virtual void _expose (XEvent*); - virtual void _input (XEvent*); - virtual void _map ( ); -}; - -/* - ---------------------------------------------------------------------------- - _XsMotifTitle class -*/ - -class _XsMotifTitle : public _XsMotifComponent { - - public: - -// Constructor/Destructor - - _XsMotifTitle (const char *name, XsMotifWindow *win); - virtual ~_XsMotifTitle ( ); - -// Title string - - void setTitle (const char *name); - const char *title ( ) const; - -// Class name - - virtual const char *className ( ) const; - - protected: - -// Implementation - - Boolean _pressed; - String _titleString; - GC _fontGC; - - XFontStruct *_titleFont; - - int _lastW; - int _lastH; - -// Component life-cycle - - virtual void _componentDestroyed ( ); - -// Utilities - - virtual void _redraw ( ); - -// Event handlers - - virtual void _expose (XEvent*); - virtual void _input (XEvent*); - virtual void _map ( ); - virtual void _configure (XEvent*); - - private: - -// Callbacks - - static void _configureEventHandler (Widget, XtPointer, XEvent*, Boolean*); - -// Resources - - static XtResource _resourceList[]; -}; - -// Inline member functions - -inline const char *_XsMotifTitle::title ( ) const -{ - return (_titleString); -} - -/* - ---------------------------------------------------------------------------- - _XsMotifIcon class -*/ - -class _XsMotifIcon : public _XsMotifComponent { - - public: - -// Constructor/Destructor - - _XsMotifIcon (const char *name, XsMotifWindow *win, Widget parent); - virtual ~_XsMotifIcon ( ); - -// Window operations - - virtual void show ( ); - -// Icon name/pixmap - - void setIconName (const char *name); - const char *iconName ( ) const; - - void setPixmap (Pixmap pm); - Pixmap pixmap ( ) const; - -// Class name - - virtual const char *className ( ) const; - - protected: - -// Implementation - - GC _fontGC; - GC _pixmapGC; - - Dimension _iconSize; - String _iconName; - XFontStruct *_iconFont; - Pixmap _pixmap; - Boolean _freePixmap; - - Dimension _width, _height; - Position _iconX, _iconY; - Boolean _placed; - -// Component life-cycle - - virtual void _componentDestroyed ( ); - -// Event handlers - - virtual void _expose (XEvent*); - virtual void _input (XEvent*); - virtual void _map ( ); - - private: - -// Resources - - static XtResource _resourceList[]; -}; - -// Inline member-functions - -inline const char *_XsMotifIcon::iconName ( ) const -{ - return (_iconName); -} - -inline Pixmap _XsMotifIcon::pixmap ( ) const -{ - return (_pixmap); -} - -/* - ---------------------------------------------------------------------------- - _XsMotifMenu class -*/ - -class _XsMotifMenu : public _XsMotifBase { - - public: - -// Constructor/Destructor - - _XsMotifMenu (const char *name, XsMotifWindow *win); - virtual ~_XsMotifMenu ( ); - -// Utilities - - virtual void popup (Boolean atPointer = True); - -// Enumerations - - enum Item { - NoItem = -1, Restore, Move, Size, Minimize, - Maximize, Raise, Lower, Close, Num - }; - -// Class name - - virtual const char *className ( ) const; - - protected: - -// Dimensions - - enum { ShadowThickness = 1 }; - enum { VertTextOffset = 3 }; - enum { HorizTextOffset = 10 }; - -// Implementation - - static Cursor _cursor; - static Pixmap _stipple; - static Display *_dpy; - - Boolean _saveUnder; - - String _strings[Num]; - XFontStruct *_menuFont; - - GC _fontGC; - GC _grayGC; - GC _backgroundGC; - - Item _curItem; - -// Component life-cycle - - virtual void _componentDestroyed ( ); - -// Menu event processing - - virtual void _processEvents ( ); - -// Utilities - - virtual void _processItem (Item item); - virtual void _redrawMenu ( ); - - void _redrawItem (Item); - void _toggleItem (Item, Boolean active = False); - Item _trackPointer (XMotionEvent *event); - -// Pointer grabs - - Boolean _grabPointer ( ); - void _ungrabPointer ( ); - -// Event handlers - - virtual void _map ( ); - - private: - -// Work procedure - - static Boolean _workProc (XtPointer); - -// Resources - - static XtResource _resourceList[]; - static int _count; -}; - - -/* - ---------------------------------------------------------------------------- - XsMotifWindow class -*/ - -class XsMotifWindow : public XsMDIWindow { - - public: - -// Constructor/Destructor - - XsMotifWindow (const char *name); - virtual ~XsMotifWindow ( ); - -// Window manipulation - - virtual void raise ( ); - virtual void lower ( ); - - virtual void minimize ( ); - virtual void maximize ( ); - virtual void restore ( ); - - virtual void close ( ); - -// Window and icon strings - - void setTitle (const char *name); - const char *title ( ) const; - - void setIconName (const char *name); - const char *iconName ( ) const; - - void setPixmap (Pixmap pm); - Pixmap pixmap ( ) const; - -// Window icon handle - - Widget icon ( ) const; - -// Menu settings - - void popupMenu (Boolean atPointer = True); - -// Utilities - - Boolean maximized ( ) const; - Boolean minimized ( ) const; - -// Position and size - - virtual void setPosition (Position, Position); - virtual void setSize (Dimension, Dimension); - - Dimension minWidth ( ) const; - Dimension minHeight ( ) const; - -// Class name - - virtual const char *className ( ) const; - - protected: - -// Window creation functions - - virtual void _buildClientArea (Widget parent) = 0; - virtual void _createWindow (Widget parent); - -// Window components - - _XsMotifCorner *_corners[_XsMotifCorner::Max]; - _XsMotifSide *_sides[_XsMotifSide::Max]; - _XsMotifButton *_buttons[_XsMotifButton::Max]; - _XsMotifTitle *_title; - _XsMotifIcon *_icon; - _XsMotifMenu *_menu; - -// Window dimensions - - Dimension _savedWidth, _savedHeight; - Position _savedX, _savedY; - Dimension _minW, _maxW; - Dimension _minH, _maxH; - -// Window parameters - - Boolean _showBorder; - Boolean _showResize; - Boolean _showTitle; - Boolean _showMenu; - Boolean _showMinimize; - Boolean _showMaximize; - Boolean _lowerOnIconify; - -// Window state - - Boolean _maximized; - Boolean _minimized; - -// Callbacks - - virtual void _mapEvent ( ); - - private: - -// Internal event handlers - - static void _mapEventHandler (Widget, XtPointer, XEvent*, Boolean*); - -// Resources - - static XtResource _resourceList[]; -}; - -// Inline member functions - -inline Boolean XsMotifWindow::maximized ( ) const -{ - return (_maximized); -} - -inline Boolean XsMotifWindow::minimized ( ) const -{ - return (_minimized); -} - -inline const char *XsMotifWindow::title ( ) const -{ - if (_title != 0) - return (_title->title ( )); - else - return (0); -} - -inline const char *XsMotifWindow::iconName ( ) const -{ - if (_icon != 0) - return (_icon->iconName ( )); - else - return (0); -} - -inline Pixmap XsMotifWindow::pixmap ( ) const -{ - if (_icon != 0) - return (_icon->pixmap ( )); - else - return (None); -} - -inline Widget XsMotifWindow::icon ( ) const -{ - if (_icon != 0) - return (_icon->base ( )); - else - return (0); -} - -inline Dimension XsMotifWindow::minWidth ( ) const -{ - return (_minW); -} - -inline Dimension XsMotifWindow::minHeight ( ) const -{ - return (_minH); -} - -#endif diff --git a/src/motif/mdi/lib/XsMoveOutline.C b/src/motif/mdi/lib/XsMoveOutline.C deleted file mode 100644 index eacd376f40..0000000000 --- a/src/motif/mdi/lib/XsMoveOutline.C +++ /dev/null @@ -1,82 +0,0 @@ -/* - Copyright (C) 1996 Scott W. Sadler - All rights reserved. -*/ - -/* - XsMoveOutline.C - - History - 03-Mar-96 1.0; Scott W. Sadler (ssadler@cisco.com) - Created -*/ - -// Includes - -#include -#include "XsMoveOutline.h" -#include - -// Static definitions - -Cursor XsMoveOutline::_fleur = None; - -// Constructor - -XsMoveOutline::XsMoveOutline (Widget w) : XsOutline (w) -{ - unsigned int mask; // Not used - Window root; - int xy; - -// Create the cursor (if necessary) - - if (_fleur == None) - _fleur = XCreateFontCursor (XtDisplay (_w), XC_fleur); - -// Get the current mouse root coordinates - - XQueryPointer (XtDisplay (_w), XtWindow (_w), &root, &root, &_rootX, - &_rootY, &xy, &xy, &mask); -} - -// Destructor - -XsMoveOutline::~XsMoveOutline ( ) -{ - // Empty -} - -// _motionHandler - -void XsMoveOutline::_motionHandler (XEvent *event) -{ - int curX, curY; - -// Get current mouse position - - curX = event->xbutton.x_root; - curY = event->xbutton.y_root; - -// Compute the new window position - - _x += (curX - _rootX); - _y += (curY - _rootY); - -// Move the window - - _drawOutline (False); - -// Save the new root position - - _rootX = curX; - _rootY = curY; -} - -// _getCursor - -Cursor XsMoveOutline::_getCursor ( ) const -{ - return (_fleur); -} - diff --git a/src/motif/mdi/lib/XsMoveOutline.h b/src/motif/mdi/lib/XsMoveOutline.h deleted file mode 100644 index 01e24087c4..0000000000 --- a/src/motif/mdi/lib/XsMoveOutline.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - Copyright (C) 1996 Scott W. Sadler - All rights reserved. -*/ - -/* - XsMoveOutline.h - - History - 03-Mar-96 1.0; Scott W. Sadler (ssadler@cisco.com) - Created -*/ - -#ifndef XSMOVEOUTLINE_H -#define XSMOVEOUTLINE_H - -// Includes - -#include "XsOutline.h" - -// XsMoveOutline class - -class XsMoveOutline : public XsOutline { - - public: - -// Constructor/Destructor - - XsMoveOutline (Widget w); - virtual ~XsMoveOutline ( ); - - protected: - -// Motion handler - - virtual void _motionHandler (XEvent*); - -// Moving cursor - - virtual Cursor _getCursor ( ) const; - - private: - -// Implementation - - int _rootX; - int _rootY; - - static Cursor _fleur; -}; - -#endif diff --git a/src/motif/mdi/lib/XsOutline.C b/src/motif/mdi/lib/XsOutline.C deleted file mode 100644 index 3301065180..0000000000 --- a/src/motif/mdi/lib/XsOutline.C +++ /dev/null @@ -1,241 +0,0 @@ -/* - Copyright (C) 1996 Scott W. Sadler - All rights reserved. -*/ - -/* - XsOutline.C - - History - 03-Mar-96 1.0; Scott W. Sadler (ssadler@cisco.com) - Created -*/ - -// Includes - -#include -#include -#include "XsOutline.h" - -// Constructor - -XsOutline::XsOutline (Widget w) -{ - assert (w != 0); - -// Initialize - - _w = w; - -// Get window dimensions - - unsigned int moreJunk; - unsigned int uw, uh; - Window junk; - - XGetGeometry (XtDisplay (_w), XtWindow (_w), &junk, &_x, &_y, &uw, &uh, &moreJunk, &moreJunk); - - _width = uw; - _height = uh; - -// Get initial settings - - _savedX = _x; - _savedY = _y; - _savedH = _savedW = 0; - -// Create the graphics context - - XGCValues values; - unsigned long valuemask; - - Display *dpy = XtDisplay (_w); - - valuemask = GCFunction | GCLineWidth | GCSubwindowMode; - values.function = GXinvert; - values.line_width = 0; - values.subwindow_mode = IncludeInferiors; - - _gc = XCreateGC (dpy, XtWindow (_w), valuemask, &values); -} - -// Destructor - -XsOutline::~XsOutline ( ) -{ - XFreeGC (XtDisplay (_w), _gc); -} - -// go - -Boolean XsOutline::go (Boolean drawInitial) -{ - XtAppContext appContext = XtWidgetToApplicationContext (_w); - XEvent event; - int done = 0; - -// Grab the pointer - - if (_grabPointer ( ) == False) - return (False); - -// Draw the initial box (if requested) - - if (drawInitial) - _drawOutline (False); - -// Process the events locally - - while (!done) - { - XtAppNextEvent (appContext, &event); - - switch (event.type) - { - case ButtonRelease: - { - -// Clear the outline and break - - _drawOutline (True); - done = 1; - break; - } - case MotionNotify: - { - XEvent next; - -// Process only the last motion event - - while (XPending (XtDisplay (_w)) > 0) - { - XPeekEvent (XtDisplay (_w), &next); - if (next.type != MotionNotify) - break; - XtAppNextEvent (appContext, &event); - } - -// Send this event - - _motionHandler (&event); - - break; - } - default: - { - XtDispatchEvent (&event); - break; - } - } - } - -// Ungrab the pointer - - _ungrabPointer ( ); - - return (True); -} - -// _drawOutline - -void XsOutline::_drawOutline (Boolean clear) -{ - -// Clear the current outline - - if (_savedH || _savedW) - _drawIt (_savedX, _savedY, _savedW, _savedH); - -// Save current values - - _savedX = _x; _savedY = _y; - _savedW = _width; _savedH = _height; - -// Draw the new outline (unless flagged to just clear) - - if (!clear) - _drawIt (_x, _y, _width, _height); -} - -// _getCursor - -Cursor XsOutline::_getCursor ( ) const -{ - return (None); -} - -// _grabPointer - -Boolean XsOutline::_grabPointer ( ) -{ - -// Sync everything up before being grabby - - XSync (XtDisplay (_w), False); - -// Grab the pointer - - if (XGrabPointer (XtDisplay (_w), XtWindow (_w), False, GrabEventMask, - GrabModeAsync, GrabModeAsync, XtWindow (XtParent (_w)), _getCursor ( ), - CurrentTime) != GrabSuccess) - { - XBell (XtDisplay (_w), 100); - return (False); - } - - return (True); -} - -// _ungrabPointer - -void XsOutline::_ungrabPointer ( ) -{ - -// Ungrab the pointer - - XUngrabPointer (XtDisplay (_w), CurrentTime); -} - -// _drawIt - -void XsOutline::_drawIt (int x, int y, int w, int h) -{ - const int nsegs = 8; - XSegment segs[nsegs]; - -// Across the top - - segs[0].x1 = x; segs[0].y1 = y; - segs[0].x2 = x + w - 1; segs[0].y2 = y; - - segs[1].x1 = x + BorderSize; segs[1].y1 = y + BorderSize; - segs[1].x2 = x + w - BorderSize - 1; segs[1].y2 = y + BorderSize; - -// Down the left - - segs[2].x1 = x + w - 1; segs[2].y1 = y + 1; - segs[2].x2 = x + w - 1; segs[2].y2 = y + h - 1; - - segs[3].x1 = x + w - BorderSize - 1; segs[3].y1 = y + BorderSize + 1; - segs[3].x2 = x + w - BorderSize - 1; segs[3].y2 = y + h - BorderSize - 1; - -// Across the bottom - - segs[4].x1 = x + 1; segs[4].y1 = y + h - 1; - segs[4].x2 = x + w - 2; segs[4].y2 = y + h - 1; - - segs[5].x1 = x + BorderSize + 1; segs[5].y1 = y + h - BorderSize - 1; - segs[5].x2 = x + w - BorderSize - 2; segs[5].y2 = y + h - BorderSize - 1; - -// Up the left - - segs[6].x1 = x; segs[6].y1 = y + h - 1; - segs[6].x2 = x; segs[6].y2 = y + 1; - - segs[7].x1 = x + BorderSize; segs[7].y1 = y + h - BorderSize - 1; - segs[7].x2 = x + BorderSize; segs[7].y2 = y + BorderSize + 1; - -// Draw the segments - - XDrawSegments (XtDisplay (_w), XtWindow (XtParent (_w)), _gc, segs, nsegs); -} diff --git a/src/motif/mdi/lib/XsOutline.h b/src/motif/mdi/lib/XsOutline.h deleted file mode 100644 index 2bfc4b73f9..0000000000 --- a/src/motif/mdi/lib/XsOutline.h +++ /dev/null @@ -1,109 +0,0 @@ -/* - Copyright (C) 1996 Scott W. Sadler - All rights reserved. -*/ - -/* - XsOutline.h - - History - 03-Mar-96 1.0; Scott W. Sadler (ssadler@cisco.com) - Created -*/ - -#ifndef XSOUTLINE_H -#define XSOUTLINE_H - -// Includes - -#include - -// XsOutline class - -class XsOutline { - - public: - -// Constructor/Destructor - - XsOutline (Widget w); - virtual ~XsOutline ( ); - -// Event handler - - Boolean go (Boolean drawInitial = False); - -// Utilities - - int width ( ) const; - int height ( ) const; - int x ( ) const; - int y ( ) const; - - protected: - -// Enumerations - - enum { BorderSize = 6 }; - enum { GrabEventMask = (unsigned int)(ButtonPressMask | ButtonReleaseMask | PointerMotionMask) }; - -// Components - - Widget _w; - -// Graphics context - - GC _gc; - -// Current dimensions - - int _x, _y; - int _width; - int _height; - -// Outline utilities - - virtual void _motionHandler (XEvent*) = 0; - virtual Cursor _getCursor ( ) const; - void _drawOutline (Boolean); - - private: - -// Pointer grabs - - Boolean _grabPointer ( ); - void _ungrabPointer ( ); - -// Save dimensions - - int _savedX, _savedY; - int _savedW, _savedH; - -// Drawing - - void _drawIt (int, int, int, int); -}; - -// Inline member functions - -inline int XsOutline::width ( ) const -{ - return (_width); -} - -inline int XsOutline::height ( ) const -{ - return (_height); -} - -inline int XsOutline::x ( ) const -{ - return (_x); -} - -inline int XsOutline::y ( ) const -{ - return (_y); -} - -#endif diff --git a/src/motif/mdi/lib/XsResizeOutline.C b/src/motif/mdi/lib/XsResizeOutline.C deleted file mode 100644 index 6ccbcf9d86..0000000000 --- a/src/motif/mdi/lib/XsResizeOutline.C +++ /dev/null @@ -1,231 +0,0 @@ -/* - Copyright (C) 1996 Scott W. Sadler - All rights reserved. -*/ - -/* - XsResizeOutline.C - - History - 03-Mar-96 1.0; Scott W. Sadler (ssadler@cisco.com) - Created -*/ - -// Includes - -#include -#include -#include "XsResizeOutline.h" - -// Static definitions - -Cursor XsResizeOutline::_cursors[XsResizeOutline::NumCursors]; -int XsResizeOutline::_mutex = 0; - -// Constructor - -XsResizeOutline::XsResizeOutline (Widget w, int direction) : XsOutline (w) -{ - -// Initialize - - _minWidth = 5; - _minHeight = 5; - _direction = direction; - -// Translate current window location to root coordinates - - Position xpos, ypos; - - XtTranslateCoords (XtParent (_w), (Position)_x, (Position)_y, &xpos, &ypos); - - _rootX = (int)xpos; - _rootY = (int)ypos; - -// Save the original window position and size - - _origX = _x; - _origY = _y; - _origW = _width; - _origH = _height; - - _origRootX = _rootX; - _origRootY = _rootY; - -// Create the cursors (if necessary) - - if (_mutex == 0) - { - Display *dpy = XtDisplay (_w); - -// Create cursors - - _cursors[TopCursor] = XCreateFontCursor (dpy, XC_top_side); - _cursors[BottomCursor] = XCreateFontCursor (dpy, XC_bottom_side); - _cursors[LeftCursor] = XCreateFontCursor (dpy, XC_left_side); - _cursors[RightCursor] = XCreateFontCursor (dpy, XC_right_side); - _cursors[TopLeftCursor] = XCreateFontCursor (dpy, XC_top_left_corner); - _cursors[TopRightCursor] = XCreateFontCursor (dpy, XC_top_right_corner); - _cursors[BottomLeftCursor] = XCreateFontCursor (dpy, XC_bottom_left_corner); - _cursors[BottomRightCursor] = XCreateFontCursor (dpy, XC_bottom_right_corner); - _cursors[Fleur] = XCreateFontCursor (dpy, XC_fleur); - _mutex = 1; - } -} - -// Destructor - -XsResizeOutline::~XsResizeOutline ( ) -{ - // Empty -} - -// setMinSize - -void XsResizeOutline::setMinSize (int minWidth, int minHeight) -{ - assert (minWidth > 0); - assert (minHeight > 0); - - _minWidth = minWidth; - _minHeight = minHeight; -} - -// _motionHandler - -void XsResizeOutline::_motionHandler (XEvent *event) -{ - int curX, curY; - int diff; - int x, y, w, h; - -// Get current mouse position - - curX = event->xbutton.x_root; - curY = event->xbutton.y_root; - - if (_direction & Undetermined) - { - -/* - Just let the mouse roam around until it crosses the outline. - When it does so, lock in the direction, change the cursor, and let - it rip. -*/ - - if (((curX <= _origRootX) || (curX >= (_origRootX + _origW))) - || ((curY <= _origRootY) || (curY >= (_origRootY + _origH)))) - { - - const int CornerOffset = 30; - -// Crossed box. Figure out where and set direction - - _direction = 0; - - if (curY <= (_origRootY + CornerOffset)) - _direction |= Up; - else if (curY >= (_origRootY + _origH - CornerOffset)) - _direction |= Down; - - if (curX <= (_origRootX + CornerOffset)) - _direction |= Left; - else if (curX >= (_origRootX + _origW - CornerOffset)) - _direction |= Right; - -// Get the new cursor - - XChangeActivePointerGrab (XtDisplay (_w), GrabEventMask, - _getCursor ( ), CurrentTime); - } - else - return; - } - -// Get the current values - - x = _x; y = _y; w = _width; h = _height; - -// Process the motion - - if (_direction & Up) - { - if (curY < (_origRootY + _origH - 1 - _minHeight)) - { - diff = _rootY - curY; - _rootY = curY; - _y -= diff; - _height = _origRootY + _origH - curY; - } - else - { - _rootY = _origRootY + _origH - 1 - _minHeight; - _y = _origY + _origH - 1 - _minHeight; - _height = _minHeight; - } - } - else if (_direction & Down) - { - if (curY > (_origRootY + _minHeight)) - _height = curY - _origRootY - 1; - else - _height = _minHeight; - } - - if (_direction & Left) - { - if (curX < (_origRootX + _origW - 1 - _minWidth)) - { - diff = _rootX - curX; - _rootX = curX; - _x -= diff; - _width = _origRootX + _origW - curX; - } - else - { - _rootX = _origRootX + _origW - 1 - _minWidth; - _x = _origX + _origW - 1 - _minWidth; - _width = _minWidth; - } - } - else if (_direction & Right) - { - if (curX > (_origRootX + _minWidth)) - _width = curX - _origRootX - 1; - else - _width = _minWidth; - } - -// Check if the values have "really" changed - - if ((w != _width) || (h != _height) || (x != _x) || (y != _y)) - _drawOutline (False); -} - -// _getCursor - -Cursor XsResizeOutline::_getCursor ( ) const -{ - if (_direction == Up) - return (_cursors[TopCursor]); - if (_direction == Down) - return (_cursors[BottomCursor]); - if (_direction == Left) - return (_cursors[LeftCursor]); - if (_direction == Right) - return (_cursors[RightCursor]); - if (_direction == (Up | Left)) - return (_cursors[TopLeftCursor]); - if (_direction == (Up | Right)) - return (_cursors[TopRightCursor]); - if (_direction == (Down | Left)) - return (_cursors[BottomLeftCursor]); - if (_direction == (Down | Right)) - return (_cursors[BottomRightCursor]); - if (_direction == Undetermined) - return (_cursors[Fleur]); - - assert (0); - return (None); -} - diff --git a/src/motif/mdi/lib/XsResizeOutline.h b/src/motif/mdi/lib/XsResizeOutline.h deleted file mode 100644 index 009035a6db..0000000000 --- a/src/motif/mdi/lib/XsResizeOutline.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - Copyright (C) 1996 Scott W. Sadler - All rights reserved. -*/ - -/* - XsResizeOutline.h - - History - 03-Mar-96 1.0; Scott W. Sadler (ssadler@cisco.com) - Created -*/ - -#ifndef XSRESIZEOUTLINE_H -#define XSRESIZEOUTLINE_H - -// Includes - -#include "XsOutline.h" - -class XsResizeOutline : public XsOutline { - - public: - -// Enumerations - - enum { Up = 0x0001, Right = 0x0002, Down = 0x0004, Left = 0x0008, - Undetermined = 0x0010 }; - - enum Cursors { - TopCursor = 0, BottomCursor, LeftCursor, RightCursor, TopLeftCursor, - TopRightCursor, BottomLeftCursor, BottomRightCursor, Fleur, - NumCursors }; - -// Constructor/Destructor - - XsResizeOutline (Widget w, int direction); - virtual ~XsResizeOutline ( ); - - void setMinSize (int minWidth, int minHeight); - - protected: - -// Motion handler - - virtual void _motionHandler (XEvent*); - -// Resize cursor - - virtual Cursor _getCursor ( ) const; - - private: - -// Implementation - - int _rootX, _rootY; // Root coordinates - int _origRootX, _origRootY; - - int _origX, _origY; // Window coordinates - int _origW, _origH; - - int _minWidth, _minHeight; - - int _direction; - - static Cursor _cursors[NumCursors]; - static int _mutex; -}; - -#endif diff --git a/src/motif/mdi/lib/xs_motif_icon.xbm b/src/motif/mdi/lib/xs_motif_icon.xbm deleted file mode 100644 index 2f7c75ef25..0000000000 --- a/src/motif/mdi/lib/xs_motif_icon.xbm +++ /dev/null @@ -1,27 +0,0 @@ -/* - Copyright (C) 1996 Scott W. Sadler - All rights reserved. -*/ - -/* - xs_motif_icon.xbm - - History - 03-Mar-96 1.0; Scott W. Sadler (ssadler@cisco.com) - Created -*/ - -#define xs_motif_icon_width 32 -#define xs_motif_icon_height 32 -static char xs_motif_icon_bits[] = { - 0xff, 0x00, 0x00, 0xc0, 0xfe, 0x01, 0x00, 0xc0, 0xfc, 0x03, 0x00, 0x60, - 0xf8, 0x07, 0x00, 0x30, 0xf8, 0x07, 0x00, 0x18, 0xf0, 0x0f, 0x00, 0x0c, - 0xe0, 0x1f, 0x00, 0x06, 0xc0, 0x3f, 0x00, 0x06, 0xc0, 0x3f, 0x00, 0x03, - 0x80, 0x7f, 0x80, 0x01, 0x00, 0xff, 0xc0, 0x00, 0x00, 0xfe, 0x61, 0x00, - 0x00, 0xfe, 0x31, 0x00, 0x00, 0xfc, 0x33, 0x00, 0x00, 0xf8, 0x1b, 0x00, - 0x00, 0xf0, 0x0d, 0x00, 0x00, 0xf0, 0x0e, 0x00, 0x00, 0x60, 0x1f, 0x00, - 0x00, 0xb0, 0x3f, 0x00, 0x00, 0x98, 0x7f, 0x00, 0x00, 0x98, 0x7f, 0x00, - 0x00, 0x0c, 0xff, 0x00, 0x00, 0x06, 0xfe, 0x01, 0x00, 0x03, 0xfc, 0x03, - 0x80, 0x01, 0xfc, 0x03, 0xc0, 0x00, 0xf8, 0x07, 0xc0, 0x00, 0xf0, 0x0f, - 0x60, 0x00, 0xe0, 0x1f, 0x30, 0x00, 0xe0, 0x1f, 0x18, 0x00, 0xc0, 0x3f, - 0x0c, 0x00, 0x80, 0x7f, 0x06, 0x00, 0x00, 0xff}; diff --git a/src/motif/mdi/test/Imakefile b/src/motif/mdi/test/Imakefile deleted file mode 100644 index a9af9f4b85..0000000000 --- a/src/motif/mdi/test/Imakefile +++ /dev/null @@ -1,25 +0,0 @@ -#include "../config/MDI.tmpl" - -SRCS = MDItest.C - -OBJS = MDItest.o - -STD_INCLUDES = -I/usr/include - -INCLUDES = -I../lib - -DEPLIBS = ../lib/libXsw.a - -#if defined(SunArchitecture) - SYSLIBS = -lgen -#endif - -LOCAL_LIBRARIES = ../lib/libXsw.a -SYSTEM_LIBRARIES = -lXm -lXt -lX11 $(SYSLIBS) - -PROGRAM = MDItest - -AllTarget($(PROGRAM)) -NormalProgramTarget($(PROGRAM),$(OBJS),$(DEPLIBS),$(LOCAL_LIBRARIES),$(SYSTEM_LIBRARIES)) -DependTarget() -CxxRules() diff --git a/src/motif/mdi/test/MDItest.C b/src/motif/mdi/test/MDItest.C deleted file mode 100644 index e615970d24..0000000000 --- a/src/motif/mdi/test/MDItest.C +++ /dev/null @@ -1,391 +0,0 @@ -/* - Copyright (C) 1996 Scott W. Sadler - All rights reserved. -*/ - -/* - MDItest.c - - History - 03-Mar-96 1.0; Scott W. Sadler (sws@iti-oh.com) - Created -*/ - -// Includes - -#include -#include -#include -#include -#include -#include -#include -#include -#include "XsMDICanvas.h" -#include "XsMotifWindow.h" - -// Fallback resources - -static char *fallbacks[] = { - "*MDItest.height: 500", - "*MDItest.width: 500", - "*MDIinner.width: 300", - "*MDIinner.height: 300", - - "*fileMenu.labelString: File", - "*fileMenu.mnemonic: F", - "*openMenuItem.labelString: Open...", - "*openMenuItem.mnemonic: O", - "*newMenuItem.labelString: New...", - "*newMenuItem.mnemonic: N", - "*editMenu.labelString: Edit", - "*editMenu.mnemonic: E", - "*cutMenuItem.labelString: Cut", - "*cutMenuItem.mnemonic: t", - "*copyMenuItem.labelString: Copy", - "*copyMenuItem.mnemonic: C", - "*pasteMenuItem.labelString: Paste", - "*pasteMenuItem.mnemonic: P", - "*helpMenu.labelString: Help", - "*helpMenu.mnemonic: H", - "*aboutMenuItem.labelString: About", - "*aboutMenuItem.mnemonic: A", - "*scrolledText.rows: 10", - "*scrolledText.columns: 30", - - "*background: grey", - "*fontList: -*-helvetica-medium-r-normal-*-14-*-*-*-*-*-iso8859-1", - - NULL -}; - -/* - ---------------------------------------------------------------------------- - MyDocument class -*/ - -class MyDocument : public XsMotifWindow { - - public: - -// Constructor/Destructor - - MyDocument (const char *name, XsMDICanvas *canvas); - virtual ~MyDocument ( ); - - protected: - -// This member function is called to create the document contents - - virtual void _buildClientArea (Widget); - -// Implementation - - XsMDICanvas *_canvas; - -// Callbacks - - void _newWindow ( ); - void _doNothing ( ); - - private: - -// Callbacks - - static void _newWindowCallback (Widget, XtPointer, XtPointer); - static void _doNothingCallback (Widget, XtPointer, XtPointer); -}; - -// Constructor - -MyDocument::MyDocument (const char *name, XsMDICanvas *canvas) : - XsMotifWindow (name) -{ - assert (canvas != 0); - -// Initialize - - _canvas = canvas; -} - -// Destructor - -MyDocument::~MyDocument ( ) -{ - // Empty -} - -// _buildClientArea (called to create document contents) - -void MyDocument::_buildClientArea (Widget parent) -{ - assert (parent != 0); - - Widget pulldown; - Widget cascade; - Widget button; - -// Create a main window with some dummy menus - - Widget mainW = XtVaCreateWidget ("mainWin", xmMainWindowWidgetClass, parent, - XmNtopAttachment, XmATTACH_FORM, XmNbottomAttachment, XmATTACH_FORM, - XmNleftAttachment, XmATTACH_FORM, XmNrightAttachment, XmATTACH_FORM, - NULL); - -// Create a menubar - - Widget menuBar = XmCreateMenuBar (mainW, "menuBar", NULL, 0); - -// Create the "file" menu - - pulldown = XmCreatePulldownMenu (menuBar, "pulldown", NULL, 0); - cascade = XtVaCreateManagedWidget ("fileMenu", xmCascadeButtonGadgetClass, - menuBar, XmNsubMenuId, pulldown, NULL); - - button = XtVaCreateManagedWidget ("openMenuItem", xmPushButtonGadgetClass, - pulldown, NULL); - XtAddCallback (button, XmNactivateCallback, _doNothingCallback, (XtPointer)this); - - button = XtVaCreateManagedWidget ("newMenuItem", xmPushButtonGadgetClass, - pulldown, NULL); - XtAddCallback (button, XmNactivateCallback, _newWindowCallback, (XtPointer)this); - -// Create the "edit" menu - - pulldown = XmCreatePulldownMenu (menuBar, "pulldown", NULL, 0); - cascade = XtVaCreateManagedWidget ("editMenu", xmCascadeButtonGadgetClass, - menuBar, XmNsubMenuId, pulldown, NULL); - - button = XtVaCreateManagedWidget ("cutMenuItem", xmPushButtonGadgetClass, - pulldown, NULL); - XtAddCallback (button, XmNactivateCallback, _doNothingCallback, (XtPointer)this); - - button = XtVaCreateManagedWidget ("copyMenuItem", xmPushButtonGadgetClass, - pulldown, NULL); - XtAddCallback (button, XmNactivateCallback, _doNothingCallback, (XtPointer)this); - - button = XtVaCreateManagedWidget ("pasteMenuItem", xmPushButtonGadgetClass, - pulldown, NULL); - XtAddCallback (button, XmNactivateCallback, _doNothingCallback, (XtPointer)this); - -// Create the help menu - - pulldown = XmCreatePulldownMenu (menuBar, "pulldown", NULL, 0); - cascade = XtVaCreateManagedWidget ("helpMenu", xmCascadeButtonGadgetClass, - menuBar, XmNsubMenuId, pulldown, NULL); - - button = XtVaCreateManagedWidget ("aboutMenuItem", xmPushButtonGadgetClass, - pulldown, NULL); - XtAddCallback (button, XmNactivateCallback, _doNothingCallback, (XtPointer)this); - - XtVaSetValues (menuBar, XmNmenuHelpWidget, cascade, NULL); - -// Manage the menubar - - XtManageChild (menuBar); - -// Create the work area - - const int nargs = 8; - Arg args[nargs]; - int n; - - n = 0; - XtSetArg (args[n], XmNscrollingPolicy, XmAUTOMATIC); n++; - XtSetArg (args[n], XmNhighlightThickness, (Dimension)0); n++; - XtSetArg (args[n], XmNeditMode, XmMULTI_LINE_EDIT); n++; - XtSetArg (args[n], XmNeditable, True); n++; - XtSetArg (args[n], XmNwordWrap, False); n++; - XtSetArg (args[n], XmNcursorPositionVisible, True); n++; - XtSetArg (args[n], XmNverifyBell, True); n++; - - assert (n <= nargs); - - Widget scrolledText = XmCreateScrolledText (mainW, "scrolledText", args, n); - XtManageChild (scrolledText); - -// Set the main window area - - XtVaSetValues (mainW, XmNmenuBar, menuBar, XmNworkWindow, - XtParent (scrolledText), NULL); - - XtManageChild (mainW); -} - -// _newWindow - -void MyDocument::_newWindow ( ) -{ - -// Create a new document (this will leak, but who cares?) - - MyDocument *newDoc = new MyDocument ("Document", _canvas); - -// Add it to the canvas - - _canvas->add (newDoc); -} - -// _newWindowCallback - -void MyDocument::_newWindowCallback (Widget, XtPointer clientData, XtPointer) -{ - MyDocument *obj = (MyDocument*)clientData; - obj->_newWindow ( ); -} - -// _doNothingCallback - -void MyDocument::_doNothingCallback (Widget w, XtPointer, XtPointer) -{ - XBell (XtDisplayOfObject (w), 100); -} - -/* - ---------------------------------------------------------------------------- - MyDocument2 class -*/ - -class MyDocument2 : public XsMotifWindow { - - public: - -// Constructor/Destructor - - MyDocument2 (const char *name); - virtual ~MyDocument2 ( ); - - protected: - -// This member function is called to create the document contents - - virtual void _buildClientArea (Widget); - -// Implementation - - XsMDICanvas *_canvas; - MyDocument *_win1; -}; - -// Constructor - -MyDocument2::MyDocument2 (const char *name) : XsMotifWindow (name) -{ - _canvas = 0; - _win1 = 0; -} - -// Destructor - -MyDocument2::~MyDocument2 ( ) -{ - delete _canvas; - delete _win1; -} - -// _buildClientArea - -void MyDocument2::_buildClientArea (Widget parent) -{ - assert (parent != 0); - -// Create a nested MDI canvas - - _canvas = new XsMDICanvas ("MDIinner", parent); - -// Attach it up - - XtVaSetValues (_canvas->base ( ), XmNtopAttachment, XmATTACH_FORM, - XmNbottomAttachment, XmATTACH_FORM, XmNleftAttachment, XmATTACH_FORM, - XmNrightAttachment, XmATTACH_FORM, NULL); - -// Create a document - - _win1 = new MyDocument ("InnerWin", _canvas); - -// Add the document to the canvas - - _canvas->add (_win1); - -// Show the canvas - - _canvas->show ( ); -} - -/* - ---------------------------------------------------------------------------- - main -*/ - -static void _destroyCallback (Widget, XtPointer clientData, XtPointer) -{ - Boolean *quit = (Boolean*)clientData; - *quit = True; -} - -int main (int argc, char **argv) -{ - XtAppContext appContext; - Widget topLevel; - Boolean quit = False; - -// Initialize toolkit - - topLevel = XtVaAppInitialize (&appContext, "MDI", NULL, 0, &argc, argv, - fallbacks, XmNdeleteResponse, XmDO_NOTHING, NULL); - - Display *dpy = XtDisplay (topLevel); - -// Add protocols - - Atom WM_DELETE_WINDOW = XmInternAtom (dpy, "WM_DELETE_WINDOW", False); - - XmAddWMProtocolCallback (topLevel, WM_DELETE_WINDOW, _destroyCallback, - &quit); - -// Create the MDI canvas - - XsMDICanvas *canvas = new XsMDICanvas ("MDItest", topLevel); - -// Create the MDI documents - - MyDocument *win1 = new MyDocument ("Document", canvas); - MyDocument2 *win2 = new MyDocument2 ("Document 2"); - -// Add documents to MDI canvas - - canvas->add (win1); - canvas->add (win2); - -// Show the canvas - - canvas->show ( ); - -// Realize everything - - XtRealizeWidget (topLevel); - -// Let 'er rip - - XEvent event; - - while (!quit) - { - XtAppNextEvent (appContext, &event); - XtDispatchEvent (&event); - } - -// Cleanup - - delete win1; - delete win2; - delete canvas; - -// Close the X connection - - XtDestroyWidget (topLevel); - XtCloseDisplay (dpy); - XtDestroyApplicationContext (appContext); - - return (0); -} diff --git a/src/motif/menu.cpp b/src/motif/menu.cpp deleted file mode 100644 index 2ee35df7c2..0000000000 --- a/src/motif/menu.cpp +++ /dev/null @@ -1,1131 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: menu.cpp -// Purpose: wxMenu, wxMenuBar, wxMenuItem -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -// ============================================================================ -// headers & declarations -// ============================================================================ - -// wxWindows headers -// ----------------- - -#ifdef __GNUG__ -#pragma implementation "menu.h" -#pragma implementation "menuitem.h" -#endif - -#include "wx/menu.h" -#include "wx/menuitem.h" -#include "wx/log.h" -#include "wx/utils.h" -#include "wx/app.h" -#include "wx/frame.h" -#include "wx/settings.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "wx/motif/private.h" - -// other standard headers -// ---------------------- -#include - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxMenu, wxEvtHandler) -IMPLEMENT_DYNAMIC_CLASS(wxMenuBar, wxEvtHandler) -#endif - -// ============================================================================ -// implementation -// ============================================================================ - -// Menus - -// Construct a menu with optional title (then use append) -wxMenu::wxMenu(const wxString& title, const wxFunction func) -{ - m_title = title; - m_parent = (wxEvtHandler*) NULL; - m_eventHandler = this; - m_noItems = 0; - m_menuBar = NULL; - - //// Motif-specific members - m_numColumns = 1; - m_menuWidget = (WXWidget) NULL; - m_popupShell = (WXWidget) NULL; - m_buttonWidget = (WXWidget) NULL; - m_menuId = 0; - m_topLevelMenu = (wxMenu*) NULL; - m_ownedByMenuBar = FALSE; - m_menuParent = (wxMenu*) NULL; - m_clientData = (void*) NULL; - - if (m_title != "") - { - Append(ID_SEPARATOR, m_title) ; - AppendSeparator() ; - } - m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_MENU); - m_foregroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_MENUTEXT); - m_font = wxSystemSettings::GetSystemFont(wxSYS_DEFAULT_GUI_FONT); - - Callback(func); -} - -// The wxWindow destructor will take care of deleting the submenus. -wxMenu::~wxMenu() -{ - if (m_menuWidget) - { - if (m_menuParent) - DestroyMenu(TRUE); - else - DestroyMenu(FALSE); - } - - // Not sure if this is right - if (m_menuParent && m_menuBar) - { - m_menuParent = NULL; - // m_menuBar = NULL; - } - - wxNode *node = m_menuItems.First(); - while (node) - { - wxMenuItem *item = (wxMenuItem *)node->Data(); - - /* - if (item->GetSubMenu()) - item->DeleteSubMenu(); - */ - - wxNode *next = node->Next(); - delete item; - delete node; - node = next; - } -} - -void wxMenu::Break() -{ - m_numColumns ++; -} - -// function appends a new item or submenu to the menu -void wxMenu::Append(wxMenuItem *pItem) -{ - wxCHECK_RET( pItem != NULL, "can't append NULL item to the menu" ); - - m_menuItems.Append(pItem); - - if (m_menuWidget) - pItem->CreateItem (m_menuWidget, m_menuBar, m_topLevelMenu); // this is a dynamic Append - - m_noItems++; -} - -void wxMenu::AppendSeparator() -{ - Append(new wxMenuItem(this, ID_SEPARATOR)); -} - -// Pullright item -// N.B.: difference between old and new code. -// Old code stores subMenu in 'children' for later deletion, -// as well as in m_menuItems, whereas we only store it in -// m_menuItems here. What implications does this have? - -void wxMenu::Append(int id, const wxString& label, wxMenu *subMenu, - const wxString& helpString) -{ - Append(new wxMenuItem(this, id, label, helpString, FALSE, subMenu)); - - subMenu->m_topLevelMenu = m_topLevelMenu; -} - -// Ordinary menu item -void wxMenu::Append(int id, const wxString& label, - const wxString& helpString, bool checkable) -{ - // 'checkable' parameter is useless for Windows. - Append(new wxMenuItem(this, id, label, helpString, checkable)); -} - -void wxMenu::Delete(int id) -{ - wxNode *node; - wxMenuItem *item; - int pos; - - for (pos = 0, node = m_menuItems.First(); node; node = node->Next(), pos++) - { - item = (wxMenuItem *)node->Data(); - if (item->GetId() == id) - break; - } - - if (!node) - return; - - item->DestroyItem(TRUE); - - // See also old code - don't know if this is needed (seems redundant). - /* - if (item->GetSubMenu()) { - item->subMenu->top_level_menu = item->GetSubMenu(); - item->subMenu->window_parent = NULL; - children->DeleteObject(item->GetSubMenu()); - } - */ - - m_menuItems.DeleteNode(node); - delete item; -} - -void wxMenu::Enable(int id, bool flag) -{ - wxMenuItem *item = FindItemForId(id); - wxCHECK_RET( item != NULL, "can't enable non-existing menu item" ); - - item->Enable(flag); -} - -bool wxMenu::Enabled(int Id) const -{ - wxMenuItem *item = FindItemForId(Id); - wxCHECK( item != NULL, FALSE ); - - return item->IsEnabled(); -} - -void wxMenu::Check(int Id, bool Flag) -{ - wxMenuItem *item = FindItemForId(Id); - wxCHECK_RET( item != NULL, "can't get status of non-existing menu item" ); - - item->Check(Flag); -} - -bool wxMenu::Checked(int id) const -{ - wxMenuItem *item = FindItemForId(id); - wxCHECK( item != NULL, FALSE ); - - return item->IsChecked(); -} - -void wxMenu::SetTitle(const wxString& label) -{ - m_title = label ; - - wxNode *node = m_menuItems.First (); - if (!node) - return; - - wxMenuItem *item = (wxMenuItem *) node->Data (); - Widget widget = (Widget) item->GetButtonWidget(); - if (!widget) - return; - - XmString title_str = XmStringCreateSimple ((char*) (const char*) label); - XtVaSetValues (widget, - XmNlabelString, title_str, - NULL); - // TODO: should we delete title_str now? -} - -const wxString wxMenu::GetTitle() const -{ - return m_title; -} - -void wxMenu::SetLabel(int id, const wxString& label) -{ - wxMenuItem *item = FindItemForId(id); - if (item == (wxMenuItem*) NULL) - return; - - item->SetLabel(label); -} - -wxString wxMenu::GetLabel(int id) const -{ - wxMenuItem *it = NULL; - WXWidget w = FindMenuItem (id, &it); - if (w) - { - XmString text; - char *s; - XtVaGetValues ((Widget) w, - XmNlabelString, &text, - NULL); - - if (XmStringGetLtoR (text, XmSTRING_DEFAULT_CHARSET, &s)) - { - wxString str(s); - XtFree (s); - return str; - } - else - { - XmStringFree (text); - return wxEmptyString; - } - } - else - return wxEmptyString; -} - -// Finds the item id matching the given string, -1 if not found. -int wxMenu::FindItem (const wxString& itemString) const -{ - char buf1[200]; - char buf2[200]; - wxStripMenuCodes ((char *)(const char *)itemString, buf1); - - for (wxNode * node = m_menuItems.First (); node; node = node->Next ()) - { - wxMenuItem *item = (wxMenuItem *) node->Data (); - if (item->GetSubMenu()) - { - int ans = item->GetSubMenu()->FindItem(itemString); - if (ans > -1) - return ans; - } - if ( !item->IsSeparator() ) - { - wxStripMenuCodes((char *)item->GetName().c_str(), buf2); - if (strcmp(buf1, buf2) == 0) - return item->GetId(); - } - } - - return -1; -} - -wxMenuItem *wxMenu::FindItemForId(int itemId, wxMenu ** itemMenu) const -{ - if (itemMenu) - *itemMenu = NULL; - for (wxNode * node = m_menuItems.First (); node; node = node->Next ()) - { - wxMenuItem *item = (wxMenuItem *) node->Data (); - - if (item->GetId() == itemId) - { - if (itemMenu) - *itemMenu = (wxMenu *) this; - return item; - } - - if (item->GetSubMenu()) - { - wxMenuItem *ans = item->GetSubMenu()->FindItemForId (itemId, itemMenu); - if (ans) - return ans; - } - } - - if (itemMenu) - *itemMenu = NULL; - return NULL; -} - -void wxMenu::SetHelpString(int itemId, const wxString& helpString) -{ - wxMenuItem *item = FindItemForId (itemId); - if (item) - item->SetHelp(helpString); -} - -wxString wxMenu::GetHelpString (int itemId) const -{ - wxMenuItem *item = FindItemForId (itemId); - wxString str(""); - return (item == NULL) ? str : item->GetHelp(); -} - -void wxMenu::ProcessCommand(wxCommandEvent & event) -{ - bool processed = FALSE; - - // Try a callback - if (m_callback) - { - (void) (*(m_callback)) (*this, event); - processed = TRUE; - } - - // Try the menu's event handler - if ( !processed && GetEventHandler()) - { - processed = GetEventHandler()->ProcessEvent(event); - } - /* TODO - // Try the window the menu was popped up from (and up - // through the hierarchy) - if ( !processed && GetInvokingWindow()) - processed = GetInvokingWindow()->ProcessEvent(event); - */ -} - -bool wxWindow::PopupMenu(wxMenu *menu, int x, int y) -{ - Widget widget = (Widget) GetMainWidget(); - - /* The menuId field seems to be usused, so we'll use it to - indicate whether a menu is popped up or not: - 0: Not currently created as a popup - -1: Created as a popup, but not active - 1: Active popup. - */ - - if (menu->GetParent() && (menu->GetId() != -1)) - return FALSE; - - if (menu->GetMainWidget()) { - menu->DestroyMenu(TRUE); - } - - wxWindow *parent = this; - - menu->SetId(1); /* Mark as popped-up */ - menu->CreateMenu(NULL, widget, menu); - // menu->SetParent(parent); - // parent->children->Append(menu); // Store menu for later deletion - - Widget menuWidget = (Widget) menu->GetMainWidget(); - - int rootX = 0; - int rootY = 0; - - int deviceX = x; - int deviceY = y; - /* - if (this->IsKindOf(CLASSINFO(wxCanvas))) - { - wxCanvas *canvas = (wxCanvas *) this; - deviceX = canvas->GetDC ()->LogicalToDeviceX (x); - deviceY = canvas->GetDC ()->LogicalToDeviceY (y); - } - */ - - Display *display = XtDisplay (widget); - Window rootWindow = RootWindowOfScreen (XtScreen((Widget)widget)); - Window thisWindow = XtWindow (widget); - Window childWindow; - XTranslateCoordinates (display, thisWindow, rootWindow, (int) deviceX, (int) deviceY, - &rootX, &rootY, &childWindow); - - XButtonPressedEvent event; - event.type = ButtonPress; - event.button = 1; - - event.x = deviceX; - event.y = deviceY; - - event.x_root = rootX; - event.y_root = rootY; - - XmMenuPosition (menuWidget, &event); - XtManageChild (menuWidget); - - return TRUE; -} - -// Menu Bar -wxMenuBar::wxMenuBar() -{ - m_eventHandler = this; - m_menuCount = 0; - m_menus = NULL; - m_titles = NULL; - m_menuBarFrame = NULL; - m_mainWidget = (WXWidget) NULL; - m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_MENU); - m_foregroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_MENUTEXT); - m_font = wxSystemSettings::GetSystemFont(wxSYS_DEFAULT_GUI_FONT); -} - -wxMenuBar::wxMenuBar(int n, wxMenu *menus[], const wxString titles[]) -{ - m_eventHandler = this; - m_menuCount = n; - m_menus = menus; - m_titles = new wxString[n]; - int i; - for ( i = 0; i < n; i++ ) - m_titles[i] = titles[i]; - m_menuBarFrame = NULL; - m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_MENU); - m_foregroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_MENUTEXT); - m_font = wxSystemSettings::GetSystemFont(wxSYS_DEFAULT_GUI_FONT); -} - -wxMenuBar::~wxMenuBar() -{ - int i; - for (i = 0; i < m_menuCount; i++) - { - delete m_menus[i]; - } - delete[] m_menus; - delete[] m_titles; -} - -// Must only be used AFTER menu has been attached to frame, -// otherwise use individual menus to enable/disable items -void wxMenuBar::Enable(int id, bool flag) -{ - wxMenu *itemMenu = NULL; - wxMenuItem *item = FindItemForId(id, &itemMenu) ; - if (!item) - return; - item->Enable(flag); -} - -void wxMenuBar::EnableTop(int pos, bool flag) -{ - // TODO -} - -// Must only be used AFTER menu has been attached to frame, -// otherwise use individual menus -void wxMenuBar::Check(int id, bool flag) -{ - wxMenu *itemMenu = NULL; - wxMenuItem *item = FindItemForId(id, &itemMenu) ; - if (!item) - return; - - if (!item->IsCheckable()) - return ; - - item->Check(flag); -} - -bool wxMenuBar::Checked(int id) const -{ - wxMenu *itemMenu = NULL; - wxMenuItem *item = FindItemForId(id, &itemMenu) ; - if (!item) - return FALSE; - - return item->IsChecked(); -} - -bool wxMenuBar::Enabled(int id) const -{ - wxMenu *itemMenu = NULL; - wxMenuItem *item = FindItemForId(id, &itemMenu) ; - if (!item) - return FALSE; - - return item->IsEnabled(); -} - -void wxMenuBar::SetLabel(int id, const wxString& label) -{ - wxMenu *itemMenu = NULL; - wxMenuItem *item = FindItemForId(id, &itemMenu) ; - - if (!item) - return; - - item->SetLabel(label); -} - -wxString wxMenuBar::GetLabel(int id) const -{ - wxMenu *itemMenu = NULL; - wxMenuItem *item = FindItemForId(id, &itemMenu) ; - - if (!item) - return wxString(""); - - return item->GetLabel(); -} - -void wxMenuBar::SetLabelTop(int pos, const wxString& label) -{ - wxASSERT( (pos < m_menuCount) ); - - Widget w = (Widget) m_menus[pos]->GetButtonWidget(); - if (w) - { - XmString label_str = XmStringCreateSimple ((char*) (const char*) label); - XtVaSetValues (w, - XmNlabelString, label_str, - NULL); - XmStringFree (label_str); - } -} - -wxString wxMenuBar::GetLabelTop(int pos) const -{ - wxASSERT( (pos < m_menuCount) ); - - Widget w = (Widget) m_menus[pos]->GetButtonWidget(); - if (w) - { - XmString text; - char *s; - XtVaGetValues (w, - XmNlabelString, &text, - NULL); - - if (XmStringGetLtoR (text, XmSTRING_DEFAULT_CHARSET, &s)) - { - wxString str(s); - XtFree (s); - return str; - } - else - { - return wxEmptyString; - } - } - else - return wxEmptyString; - -} - -bool wxMenuBar::OnDelete(wxMenu *menu, int pos) -{ - // Only applies to dynamic deletion (when set in frame) - if (!m_menuBarFrame) - return TRUE; - - menu->DestroyMenu(TRUE); - return TRUE; -} - -bool wxMenuBar::OnAppend(wxMenu *menu, const char *title) -{ - // Only applies to dynamic append (when set in frame) - if (!m_menuBarFrame) - return TRUE; - - // Probably should be an assert here - if (menu->GetParent()) - return FALSE; - - // Has already been appended - if (menu->GetButtonWidget()) - return FALSE; - - WXWidget w = menu->CreateMenu(this, GetMainWidget(), menu, title, TRUE); - menu->SetButtonWidget(w); - - return TRUE; -} - -void wxMenuBar::Append (wxMenu * menu, const wxString& title) -{ - if (!OnAppend(menu, title)) - return; - - m_menuCount ++; - wxMenu **new_menus = new wxMenu *[m_menuCount]; - wxString *new_titles = new wxString[m_menuCount]; - int i; - - for (i = 0; i < m_menuCount - 1; i++) - { - new_menus[i] = m_menus[i]; - m_menus[i] = NULL; - new_titles[i] = m_titles[i]; - m_titles[i] = ""; - } - if (m_menus) - { - delete[]m_menus; - delete[]m_titles; - } - m_menus = new_menus; - m_titles = new_titles; - - m_menus[m_menuCount - 1] = (wxMenu *)menu; - m_titles[m_menuCount - 1] = title; - - menu->SetMenuBar(this); - menu->SetParent(this); -} - -void wxMenuBar::Delete(wxMenu * menu, int i) -{ - int j; - int ii = (int) i; - - if (menu != 0) - { - for (ii = 0; ii < m_menuCount; ii++) - { - if (m_menus[ii] == menu) - break; - } - if (ii >= m_menuCount) - return; - } else - { - if (ii < 0 || ii >= m_menuCount) - return; - menu = m_menus[ii]; - } - - if (!OnDelete(menu, ii)) - return; - - menu->SetParent((wxEvtHandler*) NULL); - - -- m_menuCount; - for (j = ii; j < m_menuCount; j++) - { - m_menus[j] = m_menus[j + 1]; - m_titles[j] = m_titles[j + 1]; - } -} - -// Find the menu menuString, item itemString, and return the item id. -// Returns -1 if none found. -int wxMenuBar::FindMenuItem (const wxString& menuString, const wxString& itemString) const -{ - char buf1[200]; - char buf2[200]; - wxStripMenuCodes ((char *)(const char *)menuString, buf1); - int i; - for (i = 0; i < m_menuCount; i++) - { - wxStripMenuCodes ((char *)(const char *)m_titles[i], buf2); - if (strcmp (buf1, buf2) == 0) - return m_menus[i]->FindItem (itemString); - } - return -1; -} - -wxMenuItem *wxMenuBar::FindItemForId (int id, wxMenu ** itemMenu) const -{ - if (itemMenu) - *itemMenu = NULL; - - wxMenuItem *item = NULL; - int i; - for (i = 0; i < m_menuCount; i++) - if ((item = m_menus[i]->FindItemForId (id, itemMenu))) - return item; - return NULL; -} - -void wxMenuBar::SetHelpString (int id, const wxString& helpString) -{ - int i; - for (i = 0; i < m_menuCount; i++) - { - if (m_menus[i]->FindItemForId (id)) - { - m_menus[i]->SetHelpString (id, helpString); - return; - } - } -} - -wxString wxMenuBar::GetHelpString (int id) const -{ - int i; - for (i = 0; i < m_menuCount; i++) - { - if (m_menus[i]->FindItemForId (id)) - return wxString(m_menus[i]->GetHelpString (id)); - } - return wxString(""); -} - -// Create menubar -bool wxMenuBar::CreateMenuBar(wxFrame* parent) -{ - if (m_mainWidget) - { - XtVaSetValues((Widget) parent->GetMainWindowWidget(), XmNmenuBar, (Widget) m_mainWidget, NULL); - /* - if (!XtIsManaged((Widget) m_mainWidget)) - XtManageChild((Widget) m_mainWidget); - */ - XtMapWidget((Widget) m_mainWidget); - return TRUE; - } - - Widget menuBarW = XmCreateMenuBar ((Widget) parent->GetMainWindowWidget(), "MenuBar", NULL, 0); - m_mainWidget = (WXWidget) menuBarW; - - int i; - for (i = 0; i < GetMenuCount(); i++) - { - wxMenu *menu = GetMenu(i); - wxString title(m_titles[i]); - menu->SetButtonWidget(menu->CreateMenu (this, menuBarW, menu, title, TRUE)); - - /* - * COMMENT THIS OUT IF YOU DON'T LIKE A RIGHT-JUSTIFIED HELP MENU - */ - wxStripMenuCodes ((char*) (const char*) title, wxBuffer); - - if (strcmp (wxBuffer, "Help") == 0) - XtVaSetValues ((Widget) menuBarW, XmNmenuHelpWidget, (Widget) menu->GetButtonWidget(), NULL); - } - - SetBackgroundColour(m_backgroundColour); - SetForegroundColour(m_foregroundColour); - SetFont(m_font); - - XtVaSetValues((Widget) parent->GetMainWindowWidget(), XmNmenuBar, (Widget) m_mainWidget, NULL); - XtRealizeWidget ((Widget) menuBarW); - XtManageChild ((Widget) menuBarW); - SetMenuBarFrame(parent); - - return TRUE; -} - -// Destroy menubar, but keep data structures intact so we can recreate it. -bool wxMenuBar::DestroyMenuBar() -{ - if (!m_mainWidget) - { - SetMenuBarFrame((wxFrame*) NULL); - return FALSE; - } - - XtUnmanageChild ((Widget) m_mainWidget); - XtUnrealizeWidget ((Widget) m_mainWidget); - - int i; - for (i = 0; i < GetMenuCount(); i++) - { - wxMenu *menu = GetMenu(i); - menu->DestroyMenu(TRUE); - - } - XtDestroyWidget((Widget) m_mainWidget); - m_mainWidget = (WXWidget) 0; - - SetMenuBarFrame((wxFrame*) NULL); - - return TRUE; -} - -//// Motif-specific - -extern wxApp *wxTheApp; -static XtWorkProcId WorkProcMenuId; - -/* Since PopupMenu under Motif stills grab right mouse button events -* after it was closed, we need to delete the associated widgets to -* allow next PopUpMenu to appear... -*/ - -int PostDeletionOfMenu( XtPointer* clientData ) -{ - XtRemoveWorkProc(WorkProcMenuId); - wxMenu *menu = (wxMenu *)clientData; - - if (menu->GetMainWidget()) { - if (menu->GetParent()) - { - wxList& list = menu->GetParent()->GetItems(); - list.DeleteObject(menu); - } - menu->DestroyMenu(TRUE); - } - /* Mark as no longer popped up */ - menu->m_menuId = -1; - return TRUE; -} - -void -wxMenuPopdownCallback(Widget w, XtPointer clientData, - XtPointer ptr) -{ - wxMenu *menu = (wxMenu *)clientData; - - // Added by JOREL Jean-Charles - /* Since Callbacks of MenuItems are not yet processed, we put a - * background job which will be done when system will be idle. - * What awful hack!! :( - */ - - WorkProcMenuId = XtAppAddWorkProc( - (XtAppContext) wxTheApp->GetAppContext(), - (XtWorkProc) PostDeletionOfMenu, - (XtPointer) menu ); - // Apparently not found in Motif headers - // XtVaSetValues( w, XmNpopupEnabled, XmPOPUP_DISABLED, NULL ); -} - -/* -* Create a popup or pulldown menu. -* Submenus of a popup will be pulldown. -* -*/ - -WXWidget wxMenu::CreateMenu (wxMenuBar * menuBar, WXWidget parent, wxMenu * topMenu, const wxString& title, bool pullDown) -{ - Widget menu = (Widget) 0; - Widget buttonWidget = (Widget) 0; - Arg args[5]; - XtSetArg (args[0], XmNnumColumns, m_numColumns); - XtSetArg (args[1], XmNpacking, XmPACK_COLUMN); - - if (!pullDown) - { - menu = XmCreatePopupMenu ((Widget) parent, "popup", args, 2); - XtAddCallback(menu, - XmNunmapCallback, - (XtCallbackProc)wxMenuPopdownCallback, - (XtPointer)this); - } - else - { - char mnem = wxFindMnemonic (title); - wxStripMenuCodes ((char*) (const char*) title, wxBuffer); - - menu = XmCreatePulldownMenu ((Widget) parent, "pulldown", args, 2); - - XmString label_str = XmStringCreateSimple (wxBuffer); - buttonWidget = XtVaCreateManagedWidget (wxBuffer, -#if wxUSE_GADGETS - xmCascadeButtonGadgetClass, (Widget) parent, -#else - xmCascadeButtonWidgetClass, (Widget) parent, -#endif - XmNlabelString, label_str, - XmNsubMenuId, menu, - NULL); - - if (mnem != 0) - XtVaSetValues (buttonWidget, XmNmnemonic, mnem, NULL); - - XmStringFree (label_str); - } - - m_menuWidget = (WXWidget) menu; - - m_menuBar = menuBar; - m_topLevelMenu = topMenu; - - for (wxNode * node = m_menuItems.First (); node; node = node->Next ()) - { - wxMenuItem *item = (wxMenuItem *) node->Data (); - item->CreateItem (menu, menuBar, topMenu); - } - - SetBackgroundColour(m_backgroundColour); - SetForegroundColour(m_foregroundColour); - SetFont(m_font); - - return buttonWidget; -} - -// Destroys the Motif implementation of the menu, -// but maintains the wxWindows data structures so we can -// do a CreateMenu again. -void wxMenu::DestroyMenu (bool full) -{ - for (wxNode * node = m_menuItems.First (); node; node = node->Next ()) - { - wxMenuItem *item = (wxMenuItem *) node->Data (); - item->SetMenuBar((wxMenuBar*) NULL); - - item->DestroyItem(full); - } // for() - - if (m_buttonWidget) - { - if (full) - { - XtVaSetValues((Widget) m_buttonWidget, XmNsubMenuId, NULL, NULL); - XtDestroyWidget ((Widget) m_buttonWidget); - m_buttonWidget = (WXWidget) 0; - } - } - if (m_menuWidget && full) - { - XtDestroyWidget((Widget) m_menuWidget); - m_menuWidget = (WXWidget) NULL; - } -} - -WXWidget wxMenu::FindMenuItem (int id, wxMenuItem ** it) const -{ - if (id == m_menuId) - { - if (it) - *it = (wxMenuItem*) NULL; - return m_buttonWidget; - } - - for (wxNode * node = m_menuItems.First (); node; node = node->Next ()) - { - wxMenuItem *item = (wxMenuItem *) node->Data (); - if (item->GetId() == id) - { - if (it) - *it = item; - return item->GetButtonWidget(); - } - - if (item->GetSubMenu()) - { - WXWidget w = item->GetSubMenu()->FindMenuItem (id, it); - if (w) - { - return w; - } - } - } // for() - - if (it) - *it = (wxMenuItem*) NULL; - return (WXWidget) NULL; -} - -void wxMenu::SetBackgroundColour(const wxColour& col) -{ - m_backgroundColour = col; - if (m_menuWidget) - wxDoChangeBackgroundColour(m_menuWidget, (wxColour&) col); - if (m_buttonWidget) - wxDoChangeBackgroundColour(m_buttonWidget, (wxColour&) col, TRUE); - - wxNode* node = m_menuItems.First(); - while (node) - { - wxMenuItem* item = (wxMenuItem*) node->Data(); - if (item->GetButtonWidget()) - { - // This crashes because it uses gadgets - // wxDoChangeBackgroundColour(item->GetButtonWidget(), (wxColour&) col, TRUE); - } - if (item->GetSubMenu()) - item->GetSubMenu()->SetBackgroundColour((wxColour&) col); - node = node->Next(); - } -} - -void wxMenu::SetForegroundColour(const wxColour& col) -{ - m_foregroundColour = col; - if (m_menuWidget) - wxDoChangeForegroundColour(m_menuWidget, (wxColour&) col); - if (m_buttonWidget) - wxDoChangeForegroundColour(m_buttonWidget, (wxColour&) col); - - wxNode* node = m_menuItems.First(); - while (node) - { - wxMenuItem* item = (wxMenuItem*) node->Data(); - if (item->GetButtonWidget()) - { - // This crashes because it uses gadgets - // wxDoChangeForegroundColour(item->GetButtonWidget(), (wxColour&) col); - } - if (item->GetSubMenu()) - item->GetSubMenu()->SetForegroundColour((wxColour&) col); - node = node->Next(); - } -} - -void wxMenu::ChangeFont(bool keepOriginalSize) -{ - // lesstif 0.87 hangs when setting XmNfontList -#ifndef LESSTIF_VERSION - if (!m_font.Ok() || !m_menuWidget) - return; - - XmFontList fontList = (XmFontList) m_font.GetFontList(1.0, XtDisplay((Widget) m_menuWidget)); - - XtVaSetValues ((Widget) m_menuWidget, - XmNfontList, fontList, - NULL); - if (m_buttonWidget) - { - XtVaSetValues ((Widget) m_buttonWidget, - XmNfontList, fontList, - NULL); - } - wxNode* node = m_menuItems.First(); - while (node) - { - wxMenuItem* item = (wxMenuItem*) node->Data(); - if (m_menuWidget && item->GetButtonWidget() && m_font.Ok()) - { - XtVaSetValues ((Widget) item->GetButtonWidget(), - XmNfontList, fontList, - NULL); - } - if (item->GetSubMenu()) - item->GetSubMenu()->ChangeFont(keepOriginalSize); - node = node->Next(); - } -#endif -} - -void wxMenu::SetFont(const wxFont& font) -{ - m_font = font; - ChangeFont(); -} - -void wxMenuBar::SetBackgroundColour(const wxColour& col) -{ - - m_backgroundColour = col; - if (m_mainWidget) - wxDoChangeBackgroundColour(m_mainWidget, (wxColour&) col); - int i; - for (i = 0; i < m_menuCount; i++) - m_menus[i]->SetBackgroundColour((wxColour&) col); -} - -void wxMenuBar::SetForegroundColour(const wxColour& col) -{ - m_foregroundColour = col; - if (m_mainWidget) - wxDoChangeForegroundColour(m_mainWidget, (wxColour&) col); - - int i; - for (i = 0; i < m_menuCount; i++) - m_menus[i]->SetForegroundColour((wxColour&) col); -} - -void wxMenuBar::ChangeFont(bool keepOriginalSize) -{ - // Nothing to do for menubar, fonts are kept in wxMenus -} - -void wxMenuBar::SetFont(const wxFont& font) -{ - m_font = font; - ChangeFont(); - - int i; - for (i = 0; i < m_menuCount; i++) - m_menus[i]->SetFont(font); -} - diff --git a/src/motif/menuitem.cpp b/src/motif/menuitem.cpp deleted file mode 100644 index 800ebb8df2..0000000000 --- a/src/motif/menuitem.cpp +++ /dev/null @@ -1,363 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: menuitem.cpp -// Purpose: wxMenuItem implementation -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -// ============================================================================ -// headers & declarations -// ============================================================================ - -#include "wx/menu.h" -#include "wx/menuitem.h" -#include "wx/utils.h" -#include "wx/frame.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "wx/motif/private.h" - -void wxMenuItemCallback (Widget w, XtPointer clientData, - XtPointer ptr); -void wxMenuItemArmCallback (Widget w, XtPointer clientData, - XtPointer ptr); -void wxMenuItemDisarmCallback (Widget w, XtPointer clientData, - XtPointer ptr); - -// ============================================================================ -// implementation -// ============================================================================ - -// ---------------------------------------------------------------------------- -// dynamic classes implementation -// ---------------------------------------------------------------------------- - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxMenuItem, wxObject) -#endif //USE_SHARED_LIBRARY - -// ---------------------------------------------------------------------------- -// wxMenuItem -// ---------------------------------------------------------------------------- - -// ctor & dtor -// ----------- - -wxMenuItem::wxMenuItem(wxMenu *pParentMenu, int id, - const wxString& strName, const wxString& strHelp, - bool bCheckable, - wxMenu *pSubMenu) : -m_strHelp(strHelp), -m_bCheckable(bCheckable), -m_strName(strName) -{ - wxASSERT( pParentMenu != NULL ); - - m_pParentMenu = pParentMenu; - m_pSubMenu = pSubMenu; - m_idItem = id; - m_bEnabled = TRUE; - m_bChecked = FALSE; - - //// Motif-specific - m_menuBar = NULL; - m_buttonWidget = (WXWidget) NULL; - m_topMenu = NULL; -} - -wxMenuItem::~wxMenuItem() -{ -} - -// misc -// ---- - -// delete the sub menu -void wxMenuItem::DeleteSubMenu() -{ - wxASSERT( m_pSubMenu != NULL ); - - delete m_pSubMenu; - m_pSubMenu = NULL; -} - -// change item state -// ----------------- - -void wxMenuItem::Enable(bool bDoEnable) -{ - if ( m_bEnabled != bDoEnable ) - { - if ( m_pSubMenu == NULL ) - { // normal menu item - if (m_buttonWidget) - XtSetSensitive( (Widget) m_buttonWidget, (Boolean) bDoEnable); - } - else // submenu - { - // Maybe we should apply this to all items in the submenu? - // Or perhaps it works anyway. - if (m_buttonWidget) - XtSetSensitive( (Widget) m_buttonWidget, (Boolean) bDoEnable); - } - - m_bEnabled = bDoEnable; - } -} - -void wxMenuItem::Check(bool bDoCheck) -{ - wxCHECK_RET( IsCheckable(), "only checkable items may be checked" ); - - if ( m_bChecked != bDoCheck ) - { - if (m_buttonWidget && XtIsSubclass ((Widget) m_buttonWidget, xmToggleButtonGadgetClass)) - { - XtVaSetValues ( (Widget) m_buttonWidget, XmNset, (Boolean) bDoCheck, NULL); - } - m_bChecked = bDoCheck; - } -} - -//// Motif-specific - -void wxMenuItem::CreateItem (WXWidget menu, wxMenuBar * menuBar, wxMenu * topMenu) -{ - m_menuBar = menuBar; - m_topMenu = topMenu; - - if (GetId() == -2) - { - // Id=-2 identifies a Title item. - wxStripMenuCodes ((char*) (const char*) m_strName, wxBuffer); - m_buttonWidget = (WXWidget) XtVaCreateManagedWidget (wxBuffer, - xmLabelGadgetClass, (Widget) menu, NULL); - } - else if ((!m_strName.IsNull() && m_strName != "") && (!m_pSubMenu)) - { - wxStripMenuCodes ((char*) (const char*) m_strName, wxBuffer); - if (IsCheckable()) - { - m_buttonWidget = (WXWidget) XtVaCreateManagedWidget (wxBuffer, - xmToggleButtonGadgetClass, (Widget) menu, - NULL); - XtVaSetValues ((Widget) m_buttonWidget, XmNset, (Boolean) IsChecked(), NULL); - } - else - m_buttonWidget = (WXWidget) XtVaCreateManagedWidget (wxBuffer, - xmPushButtonGadgetClass, (Widget) menu, - NULL); - char mnem = wxFindMnemonic (m_strName); - if (mnem != 0) - XtVaSetValues ((Widget) m_buttonWidget, XmNmnemonic, mnem, NULL); - - //// TODO: proper accelerator treatment. What does wxFindAccelerator - //// look for? - strcpy(wxBuffer, (char*) (const char*) m_strName); - char *accel = wxFindAccelerator (wxBuffer); - if (accel) - XtVaSetValues ((Widget) m_buttonWidget, XmNaccelerator, accel, NULL); - - // TODO: What does this do? - strcpy(wxBuffer, (char*) (const char*) m_strName); - XmString accel_str = wxFindAcceleratorText (wxBuffer); - if (accel_str) - { - XtVaSetValues ((Widget) m_buttonWidget, XmNacceleratorText, accel_str, NULL); - XmStringFree (accel_str); - } - - if (IsCheckable()) - XtAddCallback ((Widget) m_buttonWidget, - XmNvalueChangedCallback, - (XtCallbackProc) wxMenuItemCallback, - (XtPointer) this); - else - XtAddCallback ((Widget) m_buttonWidget, - XmNactivateCallback, - (XtCallbackProc) wxMenuItemCallback, - (XtPointer) this); - XtAddCallback ((Widget) m_buttonWidget, - XmNarmCallback, - (XtCallbackProc) wxMenuItemArmCallback, - (XtPointer) this); - XtAddCallback ((Widget) m_buttonWidget, - XmNdisarmCallback, - (XtCallbackProc) wxMenuItemDisarmCallback, - (XtPointer) this); - } - else if (GetId() == -1) - { - m_buttonWidget = (WXWidget) XtVaCreateManagedWidget ("separator", - xmSeparatorGadgetClass, (Widget) menu, NULL); - } - else if (m_pSubMenu) - { - m_buttonWidget = m_pSubMenu->CreateMenu (menuBar, menu, topMenu, m_strName, TRUE); - m_pSubMenu->SetButtonWidget(m_buttonWidget); - XtAddCallback ((Widget) m_buttonWidget, - XmNcascadingCallback, - (XtCallbackProc) wxMenuItemArmCallback, - (XtPointer) this); - } - if (m_buttonWidget) - XtSetSensitive ((Widget) m_buttonWidget, (Boolean) IsEnabled()); -} - -void wxMenuItem::DestroyItem(bool full) -{ - if (GetId() == -2) - { - ; // Nothing - - } - else if ((!m_strName.IsNull() && (m_strName != "")) && !m_pSubMenu) - { - if (m_buttonWidget) - { - if (IsCheckable()) - XtRemoveCallback ((Widget) m_buttonWidget, XmNvalueChangedCallback, - wxMenuItemCallback, (XtPointer) this); - else - XtRemoveCallback ((Widget) m_buttonWidget, XmNactivateCallback, - wxMenuItemCallback, (XtPointer) this); - XtRemoveCallback ((Widget) m_buttonWidget, XmNarmCallback, - wxMenuItemArmCallback, (XtPointer) this); - XtRemoveCallback ((Widget) m_buttonWidget, XmNdisarmCallback, - wxMenuItemDisarmCallback, (XtPointer) this); - } - } - else if (GetId() == -1) - { - ; // Nothing - - } - else if (GetSubMenu()) - { - if (m_buttonWidget) - { - XtRemoveCallback ((Widget) m_buttonWidget, XmNcascadingCallback, - wxMenuItemArmCallback, (XtPointer) this); - } - m_pSubMenu->DestroyMenu(full); - if (full) - m_buttonWidget = NULL; - } - - if (m_buttonWidget && full) - { - XtDestroyWidget ((Widget) m_buttonWidget); - m_buttonWidget = (WXWidget) 0; - } -} - -void wxMenuItem::SetLabel(const wxString& label) -{ - char mnem = wxFindMnemonic (label); - wxStripMenuCodes ((char*) (const char*) label, wxBuffer); - - m_strName = label; - - if (m_buttonWidget) - { - XmString label_str = XmStringCreateSimple (wxBuffer); - XtVaSetValues ((Widget) m_buttonWidget, - XmNlabelString, label_str, - NULL); - XmStringFree (label_str); - if (mnem != 0) - XtVaSetValues ((Widget) m_buttonWidget, XmNmnemonic, mnem, NULL); - strcpy(wxBuffer, (char*) (const char*) label); - char *accel = wxFindAccelerator (wxBuffer); - if (accel) - XtVaSetValues ((Widget) m_buttonWidget, XmNaccelerator, accel, NULL); - - strcpy(wxBuffer, (char*) (const char*) label); - XmString accel_str = wxFindAcceleratorText (wxBuffer); - if (accel_str) - { - XtVaSetValues ((Widget) m_buttonWidget, XmNacceleratorText, accel_str, NULL); - XmStringFree (accel_str); - } - } -} - -void wxMenuItemCallback (Widget w, XtPointer clientData, - XtPointer ptr) -{ - wxMenuItem *item = (wxMenuItem *) clientData; - if (item) - { - if (item->IsCheckable()) - { - Boolean isChecked = FALSE; - XtVaGetValues ((Widget) item->GetButtonWidget(), XmNset, & isChecked, NULL); - item->SetChecked(isChecked); - } - if (item->GetMenuBar() && item->GetMenuBar()->GetMenuBarFrame()) - { - wxCommandEvent commandEvent(wxEVT_COMMAND_MENU_SELECTED, item->GetId()); - commandEvent.SetEventObject(item->GetMenuBar()->GetMenuBarFrame()); - commandEvent.SetInt( item->GetId() ); - - item->GetMenuBar()->GetMenuBarFrame()->GetEventHandler()->ProcessEvent(commandEvent); - } - else if (item->GetTopMenu()) - { - wxCommandEvent event (wxEVT_COMMAND_MENU_SELECTED, item->GetId()); - event.SetEventObject(item->GetTopMenu()); - event.SetInt( item->GetId() ); - - item->GetTopMenu()->ProcessCommand (event); - } - } -} - -void wxMenuItemArmCallback (Widget w, XtPointer clientData, - XtPointer ptr) -{ - wxMenuItem *item = (wxMenuItem *) clientData; - if (item) - { - if (item->GetMenuBar() && item->GetMenuBar()->GetMenuBarFrame()) - { - wxMenuEvent menuEvent(wxEVT_MENU_HIGHLIGHT, item->GetId()); - menuEvent.SetEventObject(item->GetMenuBar()->GetMenuBarFrame()); - - item->GetMenuBar()->GetMenuBarFrame()->GetEventHandler()->ProcessEvent(menuEvent); - } - } -} - -void -wxMenuItemDisarmCallback (Widget w, XtPointer clientData, - XtPointer ptr) -{ - wxMenuItem *item = (wxMenuItem *) clientData; - if (item) - { - if (item->GetMenuBar() && item->GetMenuBar()->GetMenuBarFrame()) - { - // TODO: not sure this is correct, since -1 means something - // special to event system - wxMenuEvent menuEvent(wxEVT_MENU_HIGHLIGHT, -1); - menuEvent.SetEventObject(item->GetMenuBar()->GetMenuBarFrame()); - - item->GetMenuBar()->GetMenuBarFrame()->GetEventHandler()->ProcessEvent(menuEvent); - } - } -} - diff --git a/src/motif/metafile.cpp b/src/motif/metafile.cpp deleted file mode 100644 index 7380a03402..0000000000 --- a/src/motif/metafile.cpp +++ /dev/null @@ -1,239 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: metafile.cpp -// Purpose: wxMetaFile, wxMetaFileDC etc. These classes are optional. -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "metafile.h" -#endif - -#include "wx/object.h" -#include "wx/string.h" -#include "wx/dc.h" -#include "wx/motif/metafile.h" -#include "wx/clipbrd.h" - -extern bool wxClipboardIsOpen; - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxMetaFile, wxObject) -IMPLEMENT_ABSTRACT_CLASS(wxMetaFileDC, wxDC) -#endif - -wxMetaFile::wxMetaFile(const wxString& file) -{ - // TODO -} - -wxMetaFile::~wxMetaFile() -{ - // TODO -} - -bool wxMetaFile::SetClipboard(int width, int height) -{ - bool alreadyOpen=wxClipboardOpen(); - if (!alreadyOpen) - { - wxOpenClipboard(); - if (!wxEmptyClipboard()) return FALSE; - } - bool success = wxSetClipboardData(wxDF_METAFILE,this, width,height); - if (!alreadyOpen) wxCloseClipboard(); - return (bool) success; -} - -bool wxMetaFile::Play(wxDC *dc) -{ - // TODO - return FALSE; -} - -/* - * Metafile device context - * - */ - -// Original constructor that does not takes origin and extent. If you use this, -// *DO* give origin/extent arguments to wxMakeMetaFilePlaceable. -wxMetaFileDC::wxMetaFileDC(const wxString& file) -{ - // TODO -} - -// New constructor that takes origin and extent. If you use this, don't -// give origin/extent arguments to wxMakeMetaFilePlaceable. -wxMetaFileDC::wxMetaFileDC(const wxString& file, int xext, int yext, int xorg, int yorg) -{ - // TODO -} - -wxMetaFileDC::~wxMetaFileDC() -{ -} - -void wxMetaFileDC::GetTextExtent(const wxString& string, float *x, float *y, - float *descent, float *externalLeading, wxFont *theFont, bool use16bit) -{ - // TODO -} - -wxMetaFile *wxMetaFileDC::Close() -{ - // TODO - return NULL; -} - -void wxMetaFileDC::SetMapMode(int mode) -{ - // TODO -} - -#if 0 - -#ifdef __WIN32__ -struct RECT32 -{ - short left; - short top; - short right; - short bottom; -}; - -struct mfPLACEABLEHEADER { - DWORD key; - short hmf; - RECT32 bbox; - WORD inch; - DWORD reserved; - WORD checksum; -}; -#else -struct mfPLACEABLEHEADER { - DWORD key; - HANDLE hmf; - RECT bbox; - WORD inch; - DWORD reserved; - WORD checksum; -}; -#endif - -/* - * Pass filename of existing non-placeable metafile, and bounding box. - * Adds a placeable metafile header, sets the mapping mode to anisotropic, - * and sets the window origin and extent to mimic the MM_TEXT mapping mode. - * - */ - -bool wxMakeMetaFilePlaceable(const wxString& filename, float scale) -{ - return wxMakeMetaFilePlaceable(filename, 0, 0, 0, 0, scale, FALSE); -} - -bool wxMakeMetaFilePlaceable(const wxString& filename, int x1, int y1, int x2, int y2, float scale, bool useOriginAndExtent) -{ - // I'm not sure if this is the correct way of suggesting a scale - // to the client application, but it's the only way I can find. - int unitsPerInch = (int)(576/scale); - - mfPLACEABLEHEADER header; - header.key = 0x9AC6CDD7L; - header.hmf = 0; - header.bbox.left = (int)(x1); - header.bbox.top = (int)(y1); - header.bbox.right = (int)(x2); - header.bbox.bottom = (int)(y2); - header.inch = unitsPerInch; - header.reserved = 0; - - // Calculate checksum - WORD *p; - mfPLACEABLEHEADER *pMFHead = &header; - for (p =(WORD *)pMFHead,pMFHead -> checksum = 0; - p < (WORD *)&pMFHead ->checksum; ++p) - pMFHead ->checksum ^= *p; - - FILE *fd = fopen((char *)(const char *)filename, "rb"); - if (!fd) return FALSE; - - char tempFileBuf[256]; - wxGetTempFileName("mf", tempFileBuf); - FILE *fHandle = fopen(tempFileBuf, "wb"); - if (!fHandle) - return FALSE; - fwrite((void *)&header, sizeof(unsigned char), sizeof(mfPLACEABLEHEADER), fHandle); - - // Calculate origin and extent - int originX = x1; - int originY = y1; - int extentX = x2 - x1; - int extentY = (y2 - y1); - - // Read metafile header and write - METAHEADER metaHeader; - fread((void *)&metaHeader, sizeof(unsigned char), sizeof(metaHeader), fd); - - if (useOriginAndExtent) - metaHeader.mtSize += 15; - else - metaHeader.mtSize += 5; - - fwrite((void *)&metaHeader, sizeof(unsigned char), sizeof(metaHeader), fHandle); - - // Write SetMapMode, SetWindowOrigin and SetWindowExt records - char modeBuffer[8]; - char originBuffer[10]; - char extentBuffer[10]; - METARECORD *modeRecord = (METARECORD *)&modeBuffer; - - METARECORD *originRecord = (METARECORD *)&originBuffer; - METARECORD *extentRecord = (METARECORD *)&extentBuffer; - - modeRecord->rdSize = 4; - modeRecord->rdFunction = META_SETMAPMODE; - modeRecord->rdParm[0] = MM_ANISOTROPIC; - - originRecord->rdSize = 5; - originRecord->rdFunction = META_SETWINDOWORG; - originRecord->rdParm[0] = originY; - originRecord->rdParm[1] = originX; - - extentRecord->rdSize = 5; - extentRecord->rdFunction = META_SETWINDOWEXT; - extentRecord->rdParm[0] = extentY; - extentRecord->rdParm[1] = extentX; - - fwrite((void *)modeBuffer, sizeof(char), 8, fHandle); - - if (useOriginAndExtent) - { - fwrite((void *)originBuffer, sizeof(char), 10, fHandle); - fwrite((void *)extentBuffer, sizeof(char), 10, fHandle); - } - - int ch = -2; - while (ch != EOF) - { - ch = getc(fd); - if (ch != EOF) - { - putc(ch, fHandle); - } - } - fclose(fHandle); - fclose(fd); - wxRemoveFile(filename); - wxCopyFile(tempFileBuf, filename); - wxRemoveFile(tempFileBuf); - return TRUE; -} - -#endif - diff --git a/src/motif/minifram.cpp b/src/motif/minifram.cpp deleted file mode 100644 index bf6c50b350..0000000000 --- a/src/motif/minifram.cpp +++ /dev/null @@ -1,22 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: minifram.cpp -// Purpose: wxMiniFrame. Optional; identical to wxFrame if not supported. -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "minifram.h" -#endif - -#include "wx/minifram.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxMiniFrame, wxFrame) -#endif - - diff --git a/src/motif/msgdlg.cpp b/src/motif/msgdlg.cpp deleted file mode 100644 index 2c4a2369e1..0000000000 --- a/src/motif/msgdlg.cpp +++ /dev/null @@ -1,36 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: msgdlg.cpp -// Purpose: wxMessageDialog -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "msgdlg.h" -#endif - -#include "wx/motif/msgdlg.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_CLASS(wxMessageDialog, wxDialog) -#endif - -wxMessageDialog::wxMessageDialog(wxWindow *parent, const wxString& message, const wxString& caption, - long style, const wxPoint& pos) -{ - m_caption = caption; - m_message = message; - m_dialogStyle = style; - m_parent = parent; -} - -int wxMessageDialog::ShowModal() -{ - // TODO - return wxID_CANCEL; -} - diff --git a/src/motif/palette.cpp b/src/motif/palette.cpp deleted file mode 100644 index 450c691097..0000000000 --- a/src/motif/palette.cpp +++ /dev/null @@ -1,353 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: palette.cpp -// Purpose: wxPalette -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -/* - * Colour map - * - * When constructed with the default constructor, we start from - * the wxApp::GetMainColormap, allocating additional read-only cells - * in Create(). The cells are freed on the next call to Create() - * or when the destructor is called. - */ - -/* Wolfram Gloger -I have implemented basic colormap support for the X11 versions of -wxWindows, notably wxPalette::Create(). The way I did it is to -allocate additional read-only color cells in the default colormap. In -general you will get arbitrary pixel values assigned to these new -cells and therefore I added a method wxColourMap::TransferBitmap() -which maps the pixel values 0..n to the real ones obtained with -Create(). This is only implemented for the popular case of 8-bit -depth. - -Allocating read-write color cells would involve installing a private -X11 colormap for a particular window, and AFAIK this is not -recommended; only the window manager should do this... Also, it is -not the functionality that wxPalette::Create() aims to provide. - */ - -#ifdef __GNUG__ -#pragma implementation "palette.h" -#endif - -#include "wx/palette.h" -#include "wx/window.h" -#include "wx/app.h" -#include "wx/utils.h" - -#include -#include "wx/motif/private.h" - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxPalette, wxGDIObject) -IMPLEMENT_DYNAMIC_CLASS(wxXPalette, wxObject) -#endif - -/* -* Palette -* -*/ - -wxXPalette::wxXPalette() -{ - m_cmap = (WXColormap) 0; - m_pix_array_n = 0; - m_pix_array = (unsigned long*) 0; - m_display = (WXDisplay*) 0; - m_destroyable = FALSE; -} - -wxPaletteRefData::wxPaletteRefData() -{ -} - -wxPaletteRefData::~wxPaletteRefData() -{ - XColor xcol; - Display *display = (Display*) NULL; - - wxNode *node, *next; - - for (node = m_palettes.First(); node; node = next) { - wxXPalette *c = (wxXPalette *)node->Data(); - unsigned long *pix_array = c->m_pix_array; - Colormap cmap = (Colormap) c->m_cmap; - bool destroyable = c->m_destroyable; - int pix_array_n = c->m_pix_array_n; - display = (Display*) c->m_display; - - if (pix_array_n > 0) - { - // XFreeColors(display, cmap, pix_array, pix_array_n, 0); - // Be careful not to free '0' pixels... - int i, j; - for(i=j=0; i i) XFreeColors(display, cmap, &pix_array[i], j-i, 0); - while(jNext(); - m_palettes.DeleteNode(node); - delete c; - } -} - -wxPalette::wxPalette() -{ -} - -wxPalette::wxPalette(int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue) -{ - Create(n, red, green, blue); -} - -wxPalette::~wxPalette() -{ -} - -bool wxPalette::Create(int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue) -{ - UnRef(); - - if (!n) { - return FALSE; - } - - m_refData = new wxPaletteRefData; - - XColor xcol; - Display* display = (Display*) wxGetDisplay(); - - unsigned long *pix_array; - Colormap cmap; - int pix_array_n; - - cmap = (Colormap) wxTheApp->GetMainColormap(display); - - pix_array = new unsigned long[n]; - if (!pix_array) - return FALSE; - - pix_array_n = n; - xcol.flags = DoRed | DoGreen | DoBlue; - for(int i = 0; i < n; i++) { - xcol.red = (unsigned short)red[i] << 8; - xcol.green = (unsigned short)green[i] << 8; - xcol.blue = (unsigned short)blue[i] << 8; - pix_array[i] = (XAllocColor(display, cmap, &xcol) == 0) ? 0 : xcol.pixel; - } - - wxXPalette *c = new wxXPalette; - - c->m_pix_array_n = pix_array_n; - c->m_pix_array = pix_array; - c->m_cmap = (WXColormap) cmap; - c->m_display = (WXDisplay*) display; - c->m_destroyable = FALSE; - M_PALETTEDATA->m_palettes.Append(c); - - return TRUE; -} - -int wxPalette::GetPixel(const unsigned char red, const unsigned char green, const unsigned char blue) const -{ - if ( !m_refData ) - return FALSE; - - // TODO - return FALSE; -} - -bool wxPalette::GetRGB(int index, unsigned char *red, unsigned char *green, unsigned char *blue) const -{ - if ( !m_refData ) - return FALSE; - - if (index < 0 || index > 255) - return FALSE; - - // TODO - return FALSE; -} - -WXColormap wxPalette::GetXColormap(WXDisplay* display) const -{ - if (!M_PALETTEDATA || (M_PALETTEDATA->m_palettes.Number() == 0)) - return wxTheApp->GetMainColormap(display); - - wxNode* node = M_PALETTEDATA->m_palettes.First(); - if (!display && node) - { - wxXPalette* p = (wxXPalette*) node->Data(); - return p->m_cmap; - } - while (node) - { - wxXPalette* p = (wxXPalette*) node->Data(); - if (p->m_display == display) - return p->m_cmap; - - node = node->Next(); - } - - /* Make a new one: */ - wxXPalette *c = new wxXPalette; - wxXPalette *first = (wxXPalette *)M_PALETTEDATA->m_palettes.First()->Data(); - XColor xcol; - int pix_array_n = first->m_pix_array_n; - - c->m_pix_array_n = pix_array_n; - c->m_pix_array = new unsigned long[pix_array_n]; - c->m_display = display; - c->m_cmap = wxTheApp->GetMainColormap(display); - c->m_destroyable = FALSE; - - xcol.flags = DoRed | DoGreen | DoBlue; - int i; - for (i = 0; i < pix_array_n; i++) - { - xcol.pixel = first->m_pix_array[i]; - XQueryColor((Display*) first->m_display, (Colormap) first->m_cmap, &xcol); - c->m_pix_array[i] = - (XAllocColor((Display*) display, (Colormap) c->m_cmap, &xcol) == 0) ? 0 : xcol.pixel; - } - - // wxPalette* nonConstThis = (wxPalette*) this; - - M_PALETTEDATA->m_palettes.Append(c); - - return c->m_cmap; -} - -bool wxPalette::TransferBitmap(void *data, int depth, int size) -{ - switch(depth) { - case 8: - { - unsigned char *uptr = (unsigned char *)data; - int pix_array_n; - unsigned long *pix_array = GetXPixArray((Display*) wxGetDisplay(), &pix_array_n); - while(size-- > 0) - { - if((int)*uptr < pix_array_n) - *uptr = (unsigned char)pix_array[*uptr]; - uptr++; - } - - return TRUE; - } - default: - return FALSE; - } -} - -bool wxPalette::TransferBitmap8(unsigned char *data, unsigned long sz, - void *dest, unsigned int bpp) -{ - int pix_array_n; - unsigned long *pix_array = GetXPixArray((Display*) wxGetDisplay(), &pix_array_n); - switch(bpp) { - case 8: { - unsigned char *dptr = (unsigned char *)dest; - while(sz-- > 0) { - if((int)*data < pix_array_n) - *dptr = (unsigned char)pix_array[*data]; - data++; - dptr++; - } - break; - } - case 16: { - unsigned short *dptr = (unsigned short *)dest; - while(sz-- > 0) { - if((int)*data < pix_array_n) - *dptr = (unsigned short)pix_array[*data]; - data++; - dptr++; - } - break; - } - case 24: { - struct rgb24 { unsigned char r, g, b; } *dptr = (struct rgb24 *)dest; - while(sz-- > 0) { - if((int)*data < pix_array_n) { - dptr->r = pix_array[*data] & 0xFF; - dptr->g = (pix_array[*data] >> 8) & 0xFF; - dptr->b = (pix_array[*data] >> 16) & 0xFF; - } - data++; - dptr++; - } - break; - } - case 32: { - unsigned long *dptr = (unsigned long *)dest; - while(sz-- > 0) { - if((int)*data < pix_array_n) - *dptr = pix_array[*data]; - data++; - dptr++; - } - break; - } - default: - return FALSE; - } - return TRUE; -} - -unsigned long *wxPalette::GetXPixArray(WXDisplay *display, int *n) -{ - if (!M_PALETTEDATA) - return (unsigned long*) 0; - wxNode *node; - - for (node = M_PALETTEDATA->m_palettes.First(); node; node = node->Next()) - { - wxXPalette *c = (wxXPalette *)node->Data(); - if (c->m_display == display) - { - if (n) - *n = c->m_pix_array_n; - return c->m_pix_array; - } - } - - /* Not found; call GetXColormap, which will create it, then this again */ - if (GetXColormap(display)) - return GetXPixArray(display, n); - else - return (unsigned long*) 0; -} - -void wxPalette::PutXColormap(WXDisplay* display, WXColormap cm, bool dp) -{ - UnRef(); - - m_refData = new wxPaletteRefData; - - wxXPalette *c = new wxXPalette; - - c->m_pix_array_n = 0; - c->m_pix_array = (unsigned long*) NULL; - c->m_display = display; - c->m_cmap = cm; - c->m_destroyable = dp; - - M_PALETTEDATA->m_palettes.Append(c); -} - diff --git a/src/motif/pen.cpp b/src/motif/pen.cpp deleted file mode 100644 index ab5fa85049..0000000000 --- a/src/motif/pen.cpp +++ /dev/null @@ -1,194 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: pen.cpp -// Purpose: wxPen -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "pen.h" -#endif - -#include "wx/setup.h" -#include "wx/utils.h" -#include "wx/pen.h" - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxPen, wxGDIObject) -#endif - -wxPenRefData::wxPenRefData() -{ - m_style = wxSOLID; - m_width = 1; - m_join = wxJOIN_ROUND ; - m_cap = wxCAP_ROUND ; - m_nbDash = 0 ; - m_dash = 0 ; -} - -wxPenRefData::wxPenRefData(const wxPenRefData& data) -{ - m_style = data.m_style; - m_width = data.m_width; - m_join = data.m_join; - m_cap = data.m_cap; - m_nbDash = data.m_nbDash; - m_dash = data.m_dash; - m_colour = data.m_colour; -} - -wxPenRefData::~wxPenRefData() -{ -} - -// Pens - -wxPen::wxPen() -{ - if ( wxThePenList ) - wxThePenList->AddPen(this); -} - -wxPen::~wxPen() -{ - if (wxThePenList) - wxThePenList->RemovePen(this); -} - -// Should implement Create -wxPen::wxPen(const wxColour& col, int Width, int Style) -{ - m_refData = new wxPenRefData; - - M_PENDATA->m_colour = col; - M_PENDATA->m_width = Width; - M_PENDATA->m_style = Style; - M_PENDATA->m_join = wxJOIN_ROUND ; - M_PENDATA->m_cap = wxCAP_ROUND ; - M_PENDATA->m_nbDash = 0 ; - M_PENDATA->m_dash = 0 ; - - RealizeResource(); - - if ( wxThePenList ) - wxThePenList->AddPen(this); -} - -wxPen::wxPen(const wxBitmap& stipple, int Width) -{ - m_refData = new wxPenRefData; - - M_PENDATA->m_stipple = stipple; - M_PENDATA->m_width = Width; - M_PENDATA->m_style = wxSTIPPLE; - M_PENDATA->m_join = wxJOIN_ROUND ; - M_PENDATA->m_cap = wxCAP_ROUND ; - M_PENDATA->m_nbDash = 0 ; - M_PENDATA->m_dash = 0 ; - - RealizeResource(); - - if ( wxThePenList ) - wxThePenList->AddPen(this); -} - -void wxPen::Unshare() -{ - // Don't change shared data - if (!m_refData) - { - m_refData = new wxPenRefData(); - } - else - { - wxPenRefData* ref = new wxPenRefData(*(wxPenRefData*)m_refData); - UnRef(); - m_refData = ref; - } -} - -void wxPen::SetColour(const wxColour& col) -{ - Unshare(); - - M_PENDATA->m_colour = col; - - RealizeResource(); -} - -void wxPen::SetColour(unsigned char r, unsigned char g, unsigned char b) -{ - Unshare(); - - M_PENDATA->m_colour.Set(r, g, b); - - RealizeResource(); -} - -void wxPen::SetWidth(int Width) -{ - Unshare(); - - M_PENDATA->m_width = Width; - - RealizeResource(); -} - -void wxPen::SetStyle(int Style) -{ - Unshare(); - - M_PENDATA->m_style = Style; - - RealizeResource(); -} - -void wxPen::SetStipple(const wxBitmap& Stipple) -{ - Unshare(); - - M_PENDATA->m_stipple = Stipple; - M_PENDATA->m_style = wxSTIPPLE; - - RealizeResource(); -} - -void wxPen::SetDashes(int nb_dashes, const wxDash *Dash) -{ - Unshare(); - - M_PENDATA->m_nbDash = nb_dashes; - M_PENDATA->m_dash = (wxDash *)Dash; - - RealizeResource(); -} - -void wxPen::SetJoin(int Join) -{ - Unshare(); - - M_PENDATA->m_join = Join; - - RealizeResource(); -} - -void wxPen::SetCap(int Cap) -{ - Unshare(); - - M_PENDATA->m_cap = Cap; - - RealizeResource(); -} - -bool wxPen::RealizeResource() -{ - // Nothing more to do - return TRUE; -} - diff --git a/src/motif/printdlg.cpp b/src/motif/printdlg.cpp deleted file mode 100644 index 7136ec67a7..0000000000 --- a/src/motif/printdlg.cpp +++ /dev/null @@ -1,115 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: printdlg.cpp -// Purpose: wxPrintDialog, wxPageSetupDialog -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "printdlg.h" -#endif - -#include "wx/object.h" -#include "wx/motif/printdlg.h" -#include "wx/dcprint.h" - -// Use generic page setup dialog: use your own native one if one exists. -#include "wx/generic/prntdlgg.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxPrintDialog, wxDialog) -IMPLEMENT_CLASS(wxPageSetupDialog, wxDialog) -#endif - -wxPrintDialog::wxPrintDialog(): - wxDialog() -{ - m_dialogParent = NULL; - m_printerDC = NULL; -} - -wxPrintDialog::wxPrintDialog(wxWindow *p, wxPrintData* data): - wxDialog() -{ - Create(p, data); -} - -bool wxPrintDialog::Create(wxWindow *p, wxPrintData* data) -{ - m_dialogParent = p; - m_printerDC = NULL; - - if ( data ) - m_printData = *data; - - return TRUE; -} - -wxPrintDialog::~wxPrintDialog() -{ - if (m_printerDC) - delete m_printerDC; -} - -int wxPrintDialog::ShowModal() -{ - // TODO - return wxID_CANCEL; -} - -wxDC *wxPrintDialog::GetPrintDC() -{ - if (m_printerDC) - { - wxDC* dc = m_printerDC; - m_printerDC = NULL; - return dc; - } - else - return NULL; -} - -/* - * wxPageSetupDialog - */ - -wxPageSetupDialog::wxPageSetupDialog(): - wxDialog() -{ - m_dialogParent = NULL; -} - -wxPageSetupDialog::wxPageSetupDialog(wxWindow *p, wxPageSetupData *data): - wxDialog() -{ - Create(p, data); -} - -bool wxPageSetupDialog::Create(wxWindow *p, wxPageSetupData *data) -{ - m_dialogParent = p; - - if (data) - m_pageSetupData = (*data); - - return TRUE; -} - -wxPageSetupDialog::~wxPageSetupDialog() -{ -} - -int wxPageSetupDialog::ShowModal() -{ - // Uses generic page setup dialog - wxGenericPageSetupDialog *genericPageSetupDialog = new wxGenericPageSetupDialog(GetParent(), & m_pageSetupData); - int ret = genericPageSetupDialog->ShowModal(); - m_pageSetupData = genericPageSetupDialog->GetPageSetupData(); - genericPageSetupDialog->Close(TRUE); - return ret; -} - diff --git a/src/motif/radiobox.cpp b/src/motif/radiobox.cpp deleted file mode 100644 index feb57fe5d4..0000000000 --- a/src/motif/radiobox.cpp +++ /dev/null @@ -1,494 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: radiobox.cpp -// Purpose: wxRadioBox -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "radiobox.h" -#endif - -#include "wx/radiobox.h" -#include "wx/utils.h" - -#include -#include -#include -#include -#include -#include -#include - -#include - -void wxRadioBoxCallback (Widget w, XtPointer clientData, - XmToggleButtonCallbackStruct * cbs); - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxRadioBox, wxControl) -#endif - -// Radio box item -wxRadioBox::wxRadioBox() -{ - m_selectedButton = -1; - m_noItems = 0; - m_noRowsOrCols = 0; - m_majorDim = 0 ; - - m_formWidget = (WXWidget) 0; - m_frameWidget = (WXWidget) 0; - m_labelWidget = (WXWidget) 0; - m_radioButtons = (WXWidget*) NULL; - m_radioButtonLabels = (wxString*) NULL; -} - -bool wxRadioBox::Create(wxWindow *parent, wxWindowID id, const wxString& title, - const wxPoint& pos, const wxSize& size, - int n, const wxString choices[], - int majorDim, long style, - const wxValidator& val, const wxString& name) -{ - m_selectedButton = -1; - m_noItems = n; - m_formWidget = (WXWidget) 0; - m_frameWidget = (WXWidget) 0; - m_labelWidget = (WXWidget) 0; - m_radioButtons = (WXWidget*) NULL; - m_radioButtonLabels = (wxString*) NULL; - m_backgroundColour = parent->GetBackgroundColour(); - m_foregroundColour = parent->GetForegroundColour(); - m_windowFont = parent->GetFont(); - - SetName(name); - SetValidator(val); - - parent->AddChild(this); - - m_windowStyle = (long&)style; - - if (id == -1) - m_windowId = NewControlId(); - else - m_windowId = id; - - m_noRowsOrCols = majorDim; - - if (majorDim==0) - m_majorDim = n ; - else - m_majorDim = majorDim ; - - Widget parentWidget = (Widget) parent->GetClientWidget(); - - wxString label1(wxStripMenuCodes(title)); - - XmString text = XmStringCreateSimple ((char*) (const char*) label1); - - Widget formWidget = XtVaCreateManagedWidget ((char*) (const char*) name, - xmFormWidgetClass, parentWidget, - XmNmarginHeight, 0, - XmNmarginWidth, 0, - NULL); - - m_formWidget = (WXWidget) formWidget; - - XmFontList fontList = (XmFontList) m_windowFont.GetFontList(1.0, XtDisplay(parentWidget)); - if (label1 != "") - { - text = XmStringCreateSimple ((char*) (const char*) label1); - Widget labelWidget = XtVaCreateManagedWidget ((char*) (const char*) label1, -#if wxUSE_GADGETS - style & wxCOLOURED ? - xmLabelWidgetClass : xmLabelGadgetClass, - formWidget, -#else - xmLabelWidgetClass, formWidget, -#endif - XmNfontList, fontList, - XmNlabelString, text, - NULL); - - XmStringFree (text); - } - - Widget frameWidget = XtVaCreateManagedWidget ("frame", - xmFrameWidgetClass, formWidget, - XmNshadowType, XmSHADOW_IN, -// XmNmarginHeight, 0, -// XmNmarginWidth, 0, - NULL); - - m_frameWidget = (WXWidget) frameWidget; - - Arg args[3]; - - majorDim = (n + majorDim - 1) / majorDim; - - XtSetArg (args[0], XmNorientation, ((style & wxHORIZONTAL) == wxHORIZONTAL ? - XmHORIZONTAL : XmVERTICAL)); - XtSetArg (args[1], XmNnumColumns, majorDim); - - Widget radioBoxWidget = XmCreateRadioBox (frameWidget, "radioBoxWidget", args, 2); - m_mainWidget = (WXWidget) radioBoxWidget; - - - if (m_labelWidget) - XtVaSetValues ((Widget) m_labelWidget, - XmNtopAttachment, XmATTACH_FORM, - XmNleftAttachment, XmATTACH_FORM, - XmNalignment, XmALIGNMENT_BEGINNING, - NULL); - - XtVaSetValues (radioBoxWidget, - XmNtopAttachment, m_labelWidget ? XmATTACH_WIDGET : XmATTACH_FORM, - XmNtopWidget, m_labelWidget ? (Widget) m_labelWidget : formWidget, - XmNbottomAttachment, XmATTACH_FORM, - XmNleftAttachment, XmATTACH_FORM, - XmNrightAttachment, XmATTACH_FORM, - NULL); - - // if (style & wxFLAT) - // XtVaSetValues (radioBoxWidget, XmNborderWidth, 1, NULL); - - m_radioButtons = new WXWidget[n]; - m_radioButtonLabels = new wxString[n]; - int i; - for (i = 0; i < n; i++) - { - wxString str(wxStripMenuCodes(choices[i])); - m_radioButtonLabels[i] = str; - m_radioButtons[i] = (WXWidget) XtVaCreateManagedWidget ((char*) (const char*) str, -#if wxUSE_GADGETS - xmToggleButtonGadgetClass, radioBoxWidget, -#else - xmToggleButtonWidgetClass, radioBoxWidget, -#endif - XmNfontList, fontList, - NULL); - XtAddCallback ((Widget) m_radioButtons[i], XmNvalueChangedCallback, (XtCallbackProc) wxRadioBoxCallback, - (XtCallbackProc) this); - - } - SetSelection (0); - - m_windowFont = parent->GetFont(); - ChangeFont(FALSE); - - // XtManageChild((Widget) m_formWidget); - XtManageChild (radioBoxWidget); - - SetCanAddEventHandler(TRUE); - AttachWidget (parent, m_mainWidget, m_formWidget, pos.x, pos.y, size.x, size.y); - - ChangeBackgroundColour(); - - return TRUE; -} - - -wxRadioBox::~wxRadioBox() -{ - delete[] m_radioButtonLabels; - delete[] m_radioButtons; - - DetachWidget(m_formWidget); - DetachWidget(m_mainWidget); - - if (m_labelWidget) - XtDestroyWidget((Widget) m_labelWidget); - XtDestroyWidget((Widget) m_mainWidget); - XtDestroyWidget((Widget) m_formWidget); - - m_mainWidget = (WXWidget) 0; - m_formWidget = (WXWidget) 0; - m_labelWidget = (WXWidget) 0; -} - -wxString wxRadioBox::GetLabel(int item) const -{ - if (item < 0 || item >= m_noItems) - return wxEmptyString; - - Widget widget = (Widget) m_radioButtons[item]; - XmString text; - char *s; - XtVaGetValues (widget, - XmNlabelString, &text, - NULL); - - if (XmStringGetLtoR (text, XmSTRING_DEFAULT_CHARSET, &s)) - { - // Should we free 'text'??? - XmStringFree(text); - wxString str(s); - XtFree (s); - return str; - } - else - { - XmStringFree(text); - return wxEmptyString; - } -} - -void wxRadioBox::SetLabel(int item, const wxString& label) -{ - if (item < 0 || item >= m_noItems) - return; - - Widget widget = (Widget) m_radioButtons[item]; - if (label != "") - { - wxString label1(wxStripMenuCodes(label)); - XmString text = XmStringCreateSimple ((char*) (const char*) label1); - XtVaSetValues (widget, - XmNlabelString, text, - XmNlabelType, XmSTRING, - NULL); - XmStringFree (text); - } -} - -int wxRadioBox::FindString(const wxString& s) const -{ - int i; - for (i = 0; i < m_noItems; i++) - if (s == m_radioButtonLabels[i]) - return i; - return -1; -} - -void wxRadioBox::SetSelection(int n) -{ - if ((n < 0) || (n >= m_noItems)) - return; - - m_selectedButton = n; - - m_inSetValue = TRUE; - - XmToggleButtonSetState ((Widget) m_radioButtons[n], TRUE, FALSE); - - int i; - for (i = 0; i < m_noItems; i++) - if (i != n) - XmToggleButtonSetState ((Widget) m_radioButtons[i], FALSE, FALSE); - - m_inSetValue = FALSE; -} - -// Get single selection, for single choice list items -int wxRadioBox::GetSelection() const -{ - return m_selectedButton; -} - -// Find string for position -wxString wxRadioBox::GetString(int n) const -{ - if ((n < 0) || (n >= m_noItems)) - return wxEmptyString; - return m_radioButtonLabels[n]; -} - -void wxRadioBox::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - bool managed = XtIsManaged((Widget) m_formWidget); - - if (managed) - XtUnmanageChild ((Widget) m_formWidget); - - int xx = x; int yy = y; - AdjustForParentClientOrigin(xx, yy, sizeFlags); - - if (x > -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) - XtVaSetValues ((Widget) m_formWidget, XmNleftAttachment, XmATTACH_SELF, - XmNx, xx, NULL); - if (y > -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) - XtVaSetValues ((Widget) m_formWidget, XmNtopAttachment, XmATTACH_SELF, - XmNy, yy, NULL); - - // Must set the actual RadioBox to be desired size MINUS label size - Dimension labelWidth = 0, labelHeight = 0, actualWidth = 0, actualHeight = 0; - - if (m_labelWidget) - XtVaGetValues ((Widget) m_labelWidget, XmNwidth, &labelWidth, XmNheight, &labelHeight, NULL); - - actualWidth = width; - actualHeight = height - labelHeight; - - if (width > -1) - { - XtVaSetValues ((Widget) m_mainWidget, XmNwidth, actualWidth, NULL); - } - if (height > -1) - { - XtVaSetValues ((Widget) m_mainWidget, XmNheight, actualHeight, NULL); - } - if (managed) - XtManageChild ((Widget) m_formWidget); -} - -// Enable a specific button -void wxRadioBox::Enable(int n, bool enable) -{ - if ((n < 0) || (n >= m_noItems)) - return; - - XtSetSensitive ((Widget) m_radioButtons[n], (Boolean) enable); -} - -// Enable all controls -void wxRadioBox::Enable(bool enable) -{ - wxControl::Enable(enable); - - int i; - for (i = 0; i < m_noItems; i++) - XtSetSensitive ((Widget) m_radioButtons[i], (Boolean) enable); -} - -bool wxRadioBox::Show(bool show) -{ - // TODO: show/hide all children - return wxControl::Show(show); -} - -// Show a specific button -void wxRadioBox::Show(int n, bool show) -{ - // This method isn't complete, and we try do do our best... - // It's main purpose isn't for allowing Show/Unshow dynamically, - // but rather to provide a way to design wxRadioBox such: - // - // o Val1 o Val2 o Val3 - // o Val4 o Val6 - // o Val7 o Val8 o Val9 - // - // In my case, this is a 'direction' box, and the Show(5,False) is - // coupled with an Enable(5,False) - // - if ((n < 0) || (n >= m_noItems)) - return; - - XtVaSetValues ((Widget) m_radioButtons[n], - XmNindicatorOn, (unsigned char) show, - NULL); - - // Please note that this is all we can do: removing the label - // if switching to unshow state. However, when switching - // to the on state, it's the prog. resp. to call SetLabel(item,...) - // after this call!! - if (!show) - wxRadioBox::SetLabel (n, " "); -} - -// For single selection items only -wxString wxRadioBox::GetStringSelection () const -{ - int sel = GetSelection (); - if (sel > -1) - return this->GetString (sel); - else - return wxString(""); -} - -bool wxRadioBox::SetStringSelection (const wxString& s) -{ - int sel = FindString (s); - if (sel > -1) - { - SetSelection (sel); - return TRUE; - } - else - return FALSE; -} - -void wxRadioBox::Command (wxCommandEvent & event) -{ - SetSelection (event.m_commandInt); - ProcessCommand (event); -} - -void wxRadioBox::ChangeFont(bool keepOriginalSize) -{ - wxWindow::ChangeFont(keepOriginalSize); - - XmFontList fontList = (XmFontList) m_windowFont.GetFontList(1.0, XtDisplay((Widget) GetTopWidget())); - - int i; - for (i = 0; i < m_noItems; i++) - { - WXWidget radioButton = m_radioButtons[i]; - - XtVaSetValues ((Widget) radioButton, - XmNfontList, fontList, - XmNtopAttachment, XmATTACH_FORM, - NULL); - } -} - -void wxRadioBox::ChangeBackgroundColour() -{ - wxWindow::ChangeBackgroundColour(); - - DoChangeBackgroundColour((Widget) m_frameWidget, m_backgroundColour); - - int selectPixel = wxBLACK->AllocColour(wxGetDisplay()); - - int i; - for (i = 0; i < m_noItems; i++) - { - WXWidget radioButton = m_radioButtons[i]; - - DoChangeBackgroundColour(radioButton, m_backgroundColour, TRUE); - - XtVaSetValues ((Widget) radioButton, - XmNselectColor, selectPixel, - NULL); - } -} - -void wxRadioBox::ChangeForegroundColour() -{ - wxWindow::ChangeForegroundColour(); - - int i; - for (i = 0; i < m_noItems; i++) - { - WXWidget radioButton = m_radioButtons[i]; - - DoChangeForegroundColour(radioButton, m_foregroundColour); - } -} - -void wxRadioBoxCallback (Widget w, XtPointer clientData, - XmToggleButtonCallbackStruct * cbs) -{ - if (!cbs->set) - return; - - wxRadioBox *item = (wxRadioBox *) clientData; - int sel = -1; - int i; - for (i = 0; i < item->Number(); i++) - if (item->GetRadioButtons() && ((Widget) (item->GetRadioButtons()[i]) == w)) - sel = i; - item->SetSel(sel); - - if (item->InSetValue()) - return; - - wxCommandEvent event (wxEVT_COMMAND_RADIOBOX_SELECTED, item->GetId()); - event.m_commandInt = sel; - event.SetEventObject(item); - item->ProcessCommand (event); -} - diff --git a/src/motif/radiobut.cpp b/src/motif/radiobut.cpp deleted file mode 100644 index 7fe7f99d31..0000000000 --- a/src/motif/radiobut.cpp +++ /dev/null @@ -1,153 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: radiobut.cpp -// Purpose: wxRadioButton -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "radiobut.h" -#endif - -#include "wx/radiobut.h" -#include "wx/utils.h" - -#include -#include -#include -#include -#include -#include - -#include - -void wxRadioButtonCallback (Widget w, XtPointer clientData, - XmToggleButtonCallbackStruct * cbs); - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxRadioButton, wxControl) -#endif - -wxRadioButton::wxRadioButton() -{ -} - -bool wxRadioButton::Create(wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); - SetValidator(validator); - m_backgroundColour = parent->GetBackgroundColour(); - m_foregroundColour = parent->GetForegroundColour(); - m_windowFont = parent->GetFont(); - - if (parent) parent->AddChild(this); - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - m_windowStyle = style ; - - Widget parentWidget = (Widget) parent->GetClientWidget(); - - wxString label1(wxStripMenuCodes(label)); - - XmString text = XmStringCreateSimple ((char*) (const char*) label1); - - XmFontList fontList = (XmFontList) m_windowFont.GetFontList(1.0, XtDisplay(parentWidget)); - - Widget radioButtonWidget = XtVaCreateManagedWidget ("toggle", -#if wxUSE_GADGETS - xmToggleButtonGadgetClass, parentWidget, -#else - xmToggleButtonWidgetClass, parentWidget, -#endif - XmNfontList, fontList, - XmNlabelString, text, - XmNfillOnSelect, True, - XmNindicatorType, XmONE_OF_MANY, // diamond-shape - NULL); - XmStringFree (text); - - XtAddCallback (radioButtonWidget, XmNvalueChangedCallback, (XtCallbackProc) wxRadioButtonCallback, - (XtCallbackProc) this); - - m_mainWidget = (WXWidget) radioButtonWidget; - - XtManageChild (radioButtonWidget); - - SetCanAddEventHandler(TRUE); - AttachWidget (parent, m_mainWidget, (WXWidget) NULL, pos.x, pos.y, size.x, size.y); - - ChangeBackgroundColour(); - - return TRUE; -} - -void wxRadioButton::SetValue(bool value) -{ - m_inSetValue = TRUE; - XmToggleButtonSetState ((Widget) m_mainWidget, (Boolean) value, FALSE); - m_inSetValue = FALSE; -} - -// Get single selection, for single choice list items -bool wxRadioButton::GetValue() const -{ - return (XmToggleButtonGetState ((Widget) m_mainWidget) != 0); -} - -void wxRadioButton::Command (wxCommandEvent & event) -{ - SetValue ( (event.m_commandInt != 0) ); - ProcessCommand (event); -} - -void wxRadioButton::ChangeFont(bool keepOriginalSize) -{ - wxWindow::ChangeFont(keepOriginalSize); -} - -void wxRadioButton::ChangeBackgroundColour() -{ - wxWindow::ChangeBackgroundColour(); - - // What colour should this be? - int selectPixel = wxBLACK->AllocColour(wxGetDisplay()); - - XtVaSetValues ((Widget) GetMainWidget(), - XmNselectColor, selectPixel, - NULL); -} - -void wxRadioButton::ChangeForegroundColour() -{ - wxWindow::ChangeForegroundColour(); -} - -void wxRadioButtonCallback (Widget w, XtPointer clientData, - XmToggleButtonCallbackStruct * cbs) -{ - if (!cbs->set) - return; - - wxRadioButton *item = (wxRadioButton *) clientData; - if (item->InSetValue()) - return; - - wxCommandEvent event (wxEVT_COMMAND_RADIOBUTTON_SELECTED, item->GetId()); - event.SetEventObject(item); - - item->ProcessCommand (event); -} - diff --git a/src/motif/region.cpp b/src/motif/region.cpp deleted file mode 100644 index d4ced6405d..0000000000 --- a/src/motif/region.cpp +++ /dev/null @@ -1,399 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// File: region.cpp -// Purpose: Region class -// Author: Markus Holzem/Julian Smart -// Created: Fri Oct 24 10:46:34 MET 1997 -// RCS-ID: $Id$ -// Copyright: (c) 1997 Markus Holzem/Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "region.h" -#endif - -#include "wx/region.h" -#include "wx/gdicmn.h" - -#include -// #include "wx/motif/private.h" - -#if !USE_SHARED_LIBRARY - IMPLEMENT_DYNAMIC_CLASS(wxRegion, wxGDIObject) - IMPLEMENT_DYNAMIC_CLASS(wxRegionIterator, wxObject) -#endif - -//----------------------------------------------------------------------------- -// wxRegionRefData implementation -//----------------------------------------------------------------------------- - -class WXDLLEXPORT wxRegionRefData : public wxGDIRefData { -public: - wxRegionRefData() - { - m_region = XCreateRegion(); - } - - wxRegionRefData(const wxRegionRefData& data) - { - m_region = XCreateRegion(); - XUnionRegion(m_region, data.m_region, m_region); - } - - ~wxRegionRefData() - { - XDestroyRegion(m_region); - } - Region m_region; -}; - -#define M_REGION (((wxRegionRefData*)m_refData)->m_region) - -//----------------------------------------------------------------------------- -// wxRegion -//----------------------------------------------------------------------------- - -/*! - * Create an empty region. - */ -wxRegion::wxRegion() -{ -} - -wxRegion::wxRegion(long x, long y, long w, long h) -{ - m_refData = new wxRegionRefData; - - XRectangle rect; - rect.x = x; - rect.y = y; - rect.width = w; - rect.height = h; - XUnionRectWithRegion(&rect, M_REGION, M_REGION); -} - -wxRegion::wxRegion(const wxPoint& topLeft, const wxPoint& bottomRight) -{ - m_refData = new wxRegionRefData; - - XRectangle rect; - rect.x = topLeft.x; - rect.y = topLeft.y; - rect.width = bottomRight.x - topLeft.x; - rect.height = bottomRight.y - topLeft.y; - XUnionRectWithRegion(&rect, M_REGION, M_REGION); -} - -wxRegion::wxRegion(const wxRect& rect) -{ - m_refData = new wxRegionRefData; - - XRectangle rect1; - rect1.x = rect.x; - rect1.y = rect.y; - rect1.width = rect.width; - rect1.height = rect.height; - XUnionRectWithRegion(&rect1, M_REGION, M_REGION); -} - -/*! - * Destroy the region. - */ -wxRegion::~wxRegion() -{ - // m_refData unrefed in ~wxObject -} - -// Get the internal region handle -WXRegion wxRegion::GetXRegion() const -{ - wxASSERT( m_refData !=NULL ); - - return (WXRegion) ((wxRegionRefData*)m_refData)->m_region; -} - -//----------------------------------------------------------------------------- -//# Modify region -//----------------------------------------------------------------------------- - -//! Clear current region -void wxRegion::Clear() -{ - UnRef(); -} - -//! Combine rectangle (x, y, w, h) with this. -bool wxRegion::Combine(long x, long y, long width, long height, wxRegionOp op) -{ - // Don't change shared data - if (!m_refData) { - m_refData = new wxRegionRefData(); - } else if (m_refData->GetRefCount() > 1) { - wxRegionRefData* ref = (wxRegionRefData*)m_refData; - UnRef(); - m_refData = new wxRegionRefData(*ref); - } - // If ref count is 1, that means it's 'ours' anyway so no action. - - Region rectRegion = XCreateRegion(); - - XRectangle rect; - rect.x = x; - rect.y = y; - rect.width = width; - rect.height = height; - XUnionRectWithRegion(&rect, rectRegion, rectRegion); - - int mode = 0; // TODO platform-specific code - switch (op) - { - case wxRGN_AND: - XIntersectRegion(M_REGION, rectRegion, M_REGION); - break ; - case wxRGN_OR: - XUnionRegion(M_REGION, rectRegion, M_REGION); - break ; - case wxRGN_XOR: - // TODO - break ; - case wxRGN_DIFF: - // TODO - break ; - case wxRGN_COPY: // Don't have to do this one - default: - // TODO - break ; - } - - return FALSE; -} - -//! Union /e region with this. -bool wxRegion::Combine(const wxRegion& region, wxRegionOp op) -{ - if (region.Empty()) - return FALSE; - - // Don't change shared data - if (!m_refData) { - m_refData = new wxRegionRefData(); - } else if (m_refData->GetRefCount() > 1) { - wxRegionRefData* ref = (wxRegionRefData*)m_refData; - UnRef(); - m_refData = new wxRegionRefData(*ref); - } - - int mode = 0; // TODO platform-specific code - switch (op) - { - case wxRGN_AND: - XIntersectRegion(M_REGION, ((wxRegionRefData*)region.m_refData)->m_region, - M_REGION); - break ; - case wxRGN_OR: - XUnionRegion(M_REGION, ((wxRegionRefData*)region.m_refData)->m_region, - M_REGION); - break ; - case wxRGN_XOR: - // TODO - break ; - case wxRGN_DIFF: - // TODO - break ; - case wxRGN_COPY: // Don't have to do this one - default: - // TODO - break ; - } - - return FALSE; -} - -bool wxRegion::Combine(const wxRect& rect, wxRegionOp op) -{ - return Combine(rect.GetLeft(), rect.GetTop(), rect.GetWidth(), rect.GetHeight(), op); -} - -//----------------------------------------------------------------------------- -//# Information on region -//----------------------------------------------------------------------------- - -// Outer bounds of region -void wxRegion::GetBox(long& x, long& y, long&w, long &h) const -{ - if (m_refData) { - XRectangle rect; - XClipBox(M_REGION, &rect); - x = rect.x; - y = rect.y; - w = rect.width; - h = rect.height; - } else { - x = y = w = h = 0; - } -} - -wxRect wxRegion::GetBox() const -{ - long x, y, w, h; - GetBox(x, y, w, h); - return wxRect(x, y, w, h); -} - -// Is region empty? -bool wxRegion::Empty() const -{ - return m_refData ? XEmptyRegion(M_REGION) : TRUE; -} - -//----------------------------------------------------------------------------- -//# Tests -//----------------------------------------------------------------------------- - -// Does the region contain the point (x,y)? -wxRegionContain wxRegion::Contains(long x, long y) const -{ - if (!m_refData) - return wxOutRegion; - - // TODO. Return wxInRegion if within region. - if (0) - return wxInRegion; - return wxOutRegion; -} - -// Does the region contain the point pt? -wxRegionContain wxRegion::Contains(const wxPoint& pt) const -{ - if (!m_refData) - return wxOutRegion; - - return XPointInRegion(M_REGION, pt.x, pt.y) ? wxInRegion : wxOutRegion; -} - -// Does the region contain the rectangle (x, y, w, h)? -wxRegionContain wxRegion::Contains(long x, long y, long w, long h) const -{ - if (!m_refData) - return wxOutRegion; - - switch (XRectInRegion(M_REGION, x, y, w, h)) { - case RectangleIn: return wxInRegion; - case RectanglePart: return wxPartRegion; - } - return wxOutRegion; -} - -// Does the region contain the rectangle rect -wxRegionContain wxRegion::Contains(const wxRect& rect) const -{ - if (!m_refData) - return wxOutRegion; - - long x, y, w, h; - x = rect.x; - y = rect.y; - w = rect.GetWidth(); - h = rect.GetHeight(); - return Contains(x, y, w, h); -} - -/////////////////////////////////////////////////////////////////////////////// -// // -// wxRegionIterator // -// // -/////////////////////////////////////////////////////////////////////////////// - -/*! - * Initialize empty iterator - */ -wxRegionIterator::wxRegionIterator() : m_current(0), m_numRects(0), m_rects(NULL) -{ -} - -wxRegionIterator::~wxRegionIterator() -{ - if (m_rects) - delete[] m_rects; -} - -/*! - * Initialize iterator for region - */ -wxRegionIterator::wxRegionIterator(const wxRegion& region) -{ - m_rects = NULL; - - Reset(region); -} - -/*! - * Reset iterator for a new /e region. - */ -void wxRegionIterator::Reset(const wxRegion& region) -{ - m_current = 0; - m_region = region; - - if (m_rects) - delete[] m_rects; - - m_rects = NULL; - - if (m_region.Empty()) - m_numRects = 0; - else - { - // TODO create m_rects and fill with rectangles for this region - m_numRects = 0; - } -} - -/*! - * Increment iterator. The rectangle returned is the one after the - * incrementation. - */ -void wxRegionIterator::operator ++ () -{ - if (m_current < m_numRects) - ++m_current; -} - -/*! - * Increment iterator. The rectangle returned is the one before the - * incrementation. - */ -void wxRegionIterator::operator ++ (int) -{ - if (m_current < m_numRects) - ++m_current; -} - -long wxRegionIterator::GetX() const -{ - if (m_current < m_numRects) - return m_rects[m_current].x; - return 0; -} - -long wxRegionIterator::GetY() const -{ - if (m_current < m_numRects) - return m_rects[m_current].y; - return 0; -} - -long wxRegionIterator::GetW() const -{ - if (m_current < m_numRects) - return m_rects[m_current].width ; - return 0; -} - -long wxRegionIterator::GetH() const -{ - if (m_current < m_numRects) - return m_rects[m_current].height; - return 0; -} - diff --git a/src/motif/scrolbar.cpp b/src/motif/scrolbar.cpp deleted file mode 100644 index 5bd38a4ee5..0000000000 --- a/src/motif/scrolbar.cpp +++ /dev/null @@ -1,242 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: scrolbar.cpp -// Purpose: wxScrollBar -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "scrolbar.h" -#endif - -#include "wx/scrolbar.h" - -#include -#include -#include -#include - -#include - -static void wxScrollBarCallback(Widget widget, XtPointer clientData, - XmScaleCallbackStruct *cbs); - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxScrollBar, wxControl) -#endif - -// Scrollbar -bool wxScrollBar::Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - if (!parent) - return FALSE; - parent->AddChild(this); - SetName(name); - m_backgroundColour = parent->GetBackgroundColour(); - m_foregroundColour = parent->GetForegroundColour(); - SetValidator(validator); - - m_windowStyle = style; - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - int x = pos.x; - int y = pos.y; - int width = size.x; - int height = size.y; - - if (width == -1) - { - if (style & wxHORIZONTAL) - width = 140; - else - width = 12; - } - if (height == -1) - { - if (style & wxVERTICAL) - height = 140; - else - height = 12; - } - - Widget parentWidget = (Widget) parent->GetClientWidget(); - int direction = (style & wxHORIZONTAL) ? XmHORIZONTAL: XmVERTICAL; - - Widget scrollBarWidget = XtVaCreateManagedWidget("scrollBarWidget", - xmScrollBarWidgetClass, parentWidget, - XmNorientation, direction, - NULL); - - m_mainWidget = (Widget) scrollBarWidget; - - // This will duplicate other events - // XtAddCallback(scrollBarWidget, XmNvalueChangedCallback, (XtCallbackProc)wxScrollBarCallback, (XtPointer)this); - XtAddCallback(scrollBarWidget, XmNdragCallback, (XtCallbackProc)wxScrollBarCallback, (XtPointer)this); - XtAddCallback(scrollBarWidget, XmNdecrementCallback, (XtCallbackProc)wxScrollBarCallback, (XtPointer)this); - XtAddCallback(scrollBarWidget, XmNincrementCallback, (XtCallbackProc)wxScrollBarCallback, (XtPointer)this); - XtAddCallback(scrollBarWidget, XmNpageDecrementCallback, (XtCallbackProc)wxScrollBarCallback, (XtPointer)this); - XtAddCallback(scrollBarWidget, XmNpageIncrementCallback, (XtCallbackProc)wxScrollBarCallback, (XtPointer)this); - XtAddCallback(scrollBarWidget, XmNtoTopCallback, (XtCallbackProc)wxScrollBarCallback, (XtPointer)this); - XtAddCallback(scrollBarWidget, XmNtoBottomCallback, (XtCallbackProc)wxScrollBarCallback, (XtPointer)this); - - SetCanAddEventHandler(TRUE); - AttachWidget (parent, m_mainWidget, (WXWidget) NULL, x, y, width, height); - ChangeBackgroundColour(); - - return TRUE; -} - -wxScrollBar::~wxScrollBar() -{ -} - -void wxScrollBar::SetThumbPosition(int pos) -{ - if (m_mainWidget) - { - XtVaSetValues ((Widget) m_mainWidget, - XmNvalue, pos, - NULL); - } -} - -int wxScrollBar::GetThumbPosition() const -{ - if (m_mainWidget) - { - int pos; - XtVaGetValues((Widget) m_mainWidget, - XmNvalue, &pos, NULL); - return pos; - } - else - return 0; -} - -void wxScrollBar::SetScrollbar(int position, int thumbSize, int range, int pageSize, - bool refresh) -{ - m_viewSize = pageSize; - m_pageSize = thumbSize; - m_objectSize = range; - - if (range == 0) - range = 1; - if (thumbSize == 0) - thumbSize = 1; - - XtVaSetValues((Widget) m_mainWidget, - XmNvalue, position, - XmNminimum, 0, - XmNmaximum, range, - XmNsliderSize, thumbSize, - XmNpageIncrement, pageSize, - NULL); -} - -void wxScrollBar::Command(wxCommandEvent& event) -{ - SetThumbPosition(event.m_commandInt); - ProcessCommand(event); -} - -void wxScrollBar::ChangeFont(bool keepOriginalSize) -{ - // TODO - // Do anything for a scrollbar? A font will never be seen. -} - -void wxScrollBar::ChangeBackgroundColour() -{ - wxWindow::ChangeBackgroundColour(); - - XtVaSetValues ((Widget) GetMainWidget(), - XmNtroughColor, m_backgroundColour.AllocColour(XtDisplay((Widget) GetMainWidget())), - NULL); -} - -void wxScrollBar::ChangeForegroundColour() -{ - wxWindow::ChangeForegroundColour(); -} - -static void wxScrollBarCallback(Widget widget, XtPointer clientData, - XmScaleCallbackStruct *cbs) -{ - wxScrollBar *scrollBar = (wxScrollBar *)clientData; - - wxEventType eventType = wxEVT_NULL; - switch (cbs->reason) - { - case XmCR_INCREMENT: - { - eventType = wxEVT_SCROLL_LINEDOWN; - break; - } - case XmCR_DECREMENT: - { - eventType = wxEVT_SCROLL_LINEUP; - break; - } - case XmCR_DRAG: - { - eventType = wxEVT_SCROLL_THUMBTRACK; - break; - } - case XmCR_VALUE_CHANGED: - { - // TODO: Should this be intercepted too, or will it cause - // duplicate events? - eventType = wxEVT_SCROLL_THUMBTRACK; - break; - } - case XmCR_PAGE_INCREMENT: - { - eventType = wxEVT_SCROLL_PAGEDOWN; - break; - } - case XmCR_PAGE_DECREMENT: - { - eventType = wxEVT_SCROLL_PAGEUP; - break; - } - case XmCR_TO_TOP: - { - eventType = wxEVT_SCROLL_TOP; - break; - } - case XmCR_TO_BOTTOM: - { - eventType = wxEVT_SCROLL_BOTTOM; - break; - } - default: - { - // Should never get here - wxFAIL_MSG("Unknown scroll event."); - break; - } - } - - wxScrollEvent event(eventType, scrollBar->GetId()); - event.SetEventObject(scrollBar); - event.SetPosition(cbs->value); - scrollBar->GetEventHandler()->ProcessEvent(event); -/* - if (!scrollBar->inSetValue) - scrollBar->ProcessCommand(event); -*/ -} - diff --git a/src/motif/settings.cpp b/src/motif/settings.cpp deleted file mode 100644 index 7a473fb234..0000000000 --- a/src/motif/settings.cpp +++ /dev/null @@ -1,227 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: settings.cpp -// Purpose: wxSettings -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -// TODO: these settings should probably be configurable from some central or -// per-user file, which can be edited using a Windows-control-panel clone. -// Also they should be documented better. Some are very MS Windows-ish. - -#ifdef __GNUG__ -#pragma implementation "settings.h" -#endif - -#include "wx/settings.h" -#include "wx/gdicmn.h" - -wxColour wxSystemSettings::GetSystemColour(int index) -{ - switch (index) - { - case wxSYS_COLOUR_SCROLLBAR: - // case wxSYS_COLOUR_DESKTOP: // Same as wxSYS_COLOUR_BACKGROUND - case wxSYS_COLOUR_BACKGROUND: - case wxSYS_COLOUR_ACTIVECAPTION: - case wxSYS_COLOUR_INACTIVECAPTION: - case wxSYS_COLOUR_MENU: - case wxSYS_COLOUR_WINDOW: - case wxSYS_COLOUR_WINDOWFRAME: - case wxSYS_COLOUR_ACTIVEBORDER: - case wxSYS_COLOUR_INACTIVEBORDER: - case wxSYS_COLOUR_BTNFACE: - // case wxSYS_COLOUR_3DFACE: // Same as wxSYS_COLOUR_BTNFACE - case wxSYS_COLOUR_GRAYTEXT: - { - return wxColour("LIGHT GREY"); - } - case wxSYS_COLOUR_BTNSHADOW: - // case wxSYS_COLOUR_3DSHADOW: // Same as wxSYS_COLOUR_BTNSHADOW - { - return wxColour("GREY"); - } - case wxSYS_COLOUR_3DDKSHADOW: - { - return *wxBLACK; - } - case wxSYS_COLOUR_HIGHLIGHT: - case wxSYS_COLOUR_BTNHIGHLIGHT: - // case wxSYS_COLOUR_3DHIGHLIGHT: // Same as wxSYS_COLOUR_BTNHIGHLIGHT - { - return *wxWHITE; - } - case wxSYS_COLOUR_3DLIGHT: - { - return wxColour("LIGHT GREY"); - } - case wxSYS_COLOUR_MENUTEXT: - case wxSYS_COLOUR_WINDOWTEXT: - case wxSYS_COLOUR_CAPTIONTEXT: - case wxSYS_COLOUR_INACTIVECAPTIONTEXT: - case wxSYS_COLOUR_INFOTEXT: - { - return *wxBLACK; - } - case wxSYS_COLOUR_HIGHLIGHTTEXT: - { - return *wxBLUE; - } - case wxSYS_COLOUR_INFOBK: - case wxSYS_COLOUR_APPWORKSPACE: - { - return wxColour("LIGHT GREY"); - // return *wxWHITE; - } - } - return *wxWHITE; -} - -wxFont wxSystemSettings::GetSystemFont(int index) -{ - switch (index) - { - case wxSYS_SYSTEM_FIXED_FONT: - { - return wxFont(12, wxMODERN, wxNORMAL, wxNORMAL, FALSE); - break; - } - case wxSYS_DEVICE_DEFAULT_FONT: - case wxSYS_SYSTEM_FONT: - case wxSYS_DEFAULT_GUI_FONT: - default: - { - return wxFont(12, wxSWISS, wxNORMAL, wxNORMAL, FALSE); - break; - } - } - - return wxFont(); -} - -// Get a system metric, e.g. scrollbar size -int wxSystemSettings::GetSystemMetric(int index) -{ - switch ( index) - { - case wxSYS_MOUSE_BUTTONS: - // TODO - return 0; - case wxSYS_BORDER_X: - // TODO - return 0; - case wxSYS_BORDER_Y: - // TODO - return 0; - case wxSYS_CURSOR_X: - // TODO - return 0; - case wxSYS_CURSOR_Y: - // TODO - return 0; - case wxSYS_DCLICK_X: - // TODO - return 0; - case wxSYS_DCLICK_Y: - // TODO - return 0; - case wxSYS_DRAG_X: - // TODO - return 0; - case wxSYS_DRAG_Y: - // TODO - return 0; - case wxSYS_EDGE_X: - // TODO - return 0; - case wxSYS_EDGE_Y: - // TODO - return 0; - case wxSYS_HSCROLL_ARROW_X: - // TODO - return 0; - case wxSYS_HSCROLL_ARROW_Y: - // TODO - return 0; - case wxSYS_HTHUMB_X: - // TODO - return 0; - case wxSYS_ICON_X: - // TODO - return 0; - case wxSYS_ICON_Y: - // TODO - return 0; - case wxSYS_ICONSPACING_X: - // TODO - return 0; - case wxSYS_ICONSPACING_Y: - // TODO - return 0; - case wxSYS_WINDOWMIN_X: - // TODO - return 0; - case wxSYS_WINDOWMIN_Y: - // TODO - return 0; - case wxSYS_SCREEN_X: - // TODO - return 0; - case wxSYS_SCREEN_Y: - // TODO - return 0; - case wxSYS_FRAMESIZE_X: - // TODO - return 0; - case wxSYS_FRAMESIZE_Y: - // TODO - return 0; - case wxSYS_SMALLICON_X: - // TODO - return 0; - case wxSYS_SMALLICON_Y: - // TODO - return 0; - case wxSYS_HSCROLL_Y: - // TODO - return 0; - case wxSYS_VSCROLL_X: - // TODO - return 0; - case wxSYS_VSCROLL_ARROW_X: - // TODO - return 0; - case wxSYS_VSCROLL_ARROW_Y: - // TODO - return 0; - case wxSYS_VTHUMB_Y: - // TODO - return 0; - case wxSYS_CAPTION_Y: - // TODO - return 0; - case wxSYS_MENU_Y: - // TODO - return 0; - case wxSYS_NETWORK_PRESENT: - // TODO - return 0; - case wxSYS_PENWINDOWS_PRESENT: - // TODO - return 0; - case wxSYS_SHOW_SOUNDS: - // TODO - return 0; - case wxSYS_SWAP_BUTTONS: - // TODO - return 0; - default: - return 0; - } - return 0; -} - diff --git a/src/motif/slider.cpp b/src/motif/slider.cpp deleted file mode 100644 index 3e47c9a424..0000000000 --- a/src/motif/slider.cpp +++ /dev/null @@ -1,293 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: slider.cpp -// Purpose: wxSlider -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "slider.h" -#endif - -#include "wx/slider.h" -#include "wx/utils.h" - -#include -#include -#include -#include -#include - -#include - -void wxSliderCallback (Widget widget, XtPointer clientData, XmScaleCallbackStruct * cbs); - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxSlider, wxControl) - -BEGIN_EVENT_TABLE(wxSlider, wxControl) -END_EVENT_TABLE() -#endif - - - -// Slider -wxSlider::wxSlider() -{ - m_pageSize = 1; - m_lineSize = 1; - m_rangeMax = 0; - m_rangeMin = 0; - m_tickFreq = 0; -} - -bool wxSlider::Create(wxWindow *parent, wxWindowID id, - int value, int minValue, int maxValue, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); - SetValidator(validator); - m_backgroundColour = parent->GetBackgroundColour(); - m_foregroundColour = parent->GetForegroundColour(); - - if (parent) parent->AddChild(this); - - m_lineSize = 1; - m_windowStyle = style; - m_tickFreq = 0; - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - m_rangeMax = maxValue; - m_rangeMin = minValue; - - // Not used in Motif, I think - m_pageSize = (int)((maxValue-minValue)/10); - - Widget parentWidget = (Widget) parent->GetClientWidget(); - - Widget sliderWidget = XtVaCreateManagedWidget ("sliderWidget", - xmScaleWidgetClass, parentWidget, - XmNorientation, - (((m_windowStyle & wxSL_VERTICAL) == wxSL_VERTICAL) ? XmVERTICAL : XmHORIZONTAL), - XmNprocessingDirection, - (((m_windowStyle & wxSL_VERTICAL) == wxSL_VERTICAL) ? XmMAX_ON_TOP : XmMAX_ON_RIGHT), - XmNmaximum, maxValue, - XmNminimum, minValue, - XmNvalue, value, - XmNshowValue, True, - NULL); - - m_mainWidget = (WXWidget) sliderWidget; - - if(style & wxSL_NOTIFY_DRAG) - XtAddCallback (sliderWidget, XmNdragCallback, - (XtCallbackProc) wxSliderCallback, (XtPointer) this); - else - XtAddCallback (sliderWidget, XmNvalueChangedCallback, - (XtCallbackProc) wxSliderCallback, (XtPointer) this); - - XtAddCallback (sliderWidget, XmNdragCallback, (XtCallbackProc) wxSliderCallback, (XtPointer) this); - - m_windowFont = parent->GetFont(); - - ChangeFont(FALSE); - SetCanAddEventHandler(TRUE); - AttachWidget (parent, m_mainWidget, (WXWidget) NULL, pos.x, pos.y, size.x, size.y); - - ChangeBackgroundColour(); - - return TRUE; -} - -wxSlider::~wxSlider() -{ -} - -int wxSlider::GetValue() const -{ - int val; - XtVaGetValues ((Widget) m_mainWidget, XmNvalue, &val, NULL); - return val; -} - -void wxSlider::SetValue(int value) -{ - XtVaSetValues ((Widget) m_mainWidget, XmNvalue, value, NULL); -} - -void wxSlider::GetSize(int *width, int *height) const -{ - wxControl::GetSize(width, height); -} - -void wxSlider::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - Widget widget = (Widget) m_mainWidget; - - bool managed = XtIsManaged(widget); - - if (managed) - XtUnmanageChild (widget); - - if (((m_windowStyle & wxHORIZONTAL) == wxHORIZONTAL) && (width > -1)) - { - XtVaSetValues (widget, XmNscaleWidth, wxMax (width, 10), NULL); - } - - if (((m_windowStyle & wxVERTICAL) == wxVERTICAL) && (height > -1)) - { - XtVaSetValues (widget, XmNscaleHeight, wxMax (height, 10), NULL); - } - - int xx = x; int yy = y; - AdjustForParentClientOrigin(xx, yy, sizeFlags); - - if (x > -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) - XtVaSetValues (widget, XmNx, xx, NULL); - if (y > -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) - XtVaSetValues (widget, XmNy, yy, NULL); - - if (managed) - XtManageChild (widget); -} - -void wxSlider::SetRange(int minValue, int maxValue) -{ - m_rangeMin = minValue; - m_rangeMax = maxValue; - - XtVaSetValues ((Widget) m_mainWidget, XmNminimum, minValue, XmNmaximum, maxValue, NULL); -} - -// For trackbars only -void wxSlider::SetTickFreq(int n, int pos) -{ - // Not implemented in Motif - m_tickFreq = n; -} - -void wxSlider::SetPageSize(int pageSize) -{ - // Not implemented in Motif - m_pageSize = pageSize; -} - -int wxSlider::GetPageSize() const -{ - return m_pageSize; -} - -void wxSlider::ClearSel() -{ - // Not implemented in Motif -} - -void wxSlider::ClearTicks() -{ - // Not implemented in Motif -} - -void wxSlider::SetLineSize(int lineSize) -{ - // Not implemented in Motif - m_lineSize = lineSize; -} - -int wxSlider::GetLineSize() const -{ - // Not implemented in Motif - return m_lineSize; -} - -int wxSlider::GetSelEnd() const -{ - // Not implemented in Motif - return 0; -} - -int wxSlider::GetSelStart() const -{ - // Not implemented in Motif - return 0; -} - -void wxSlider::SetSelection(int WXUNUSED(minPos), int WXUNUSED(maxPos)) -{ - // Not implemented in Motif -} - -void wxSlider::SetThumbLength(int WXUNUSED(len)) -{ - // Not implemented in Motif (?) -} - -int wxSlider::GetThumbLength() const -{ - // Not implemented in Motif (?) - return 0; -} - -void wxSlider::SetTick(int WXUNUSED(tickPos)) -{ - // Not implemented in Motif -} - -void wxSlider::Command (wxCommandEvent & event) -{ - SetValue (event.GetInt()); - ProcessCommand (event); -} - -void wxSlider::ChangeFont(bool keepOriginalSize) -{ - wxWindow::ChangeFont(keepOriginalSize); -} - -void wxSlider::ChangeBackgroundColour() -{ - wxWindow::ChangeBackgroundColour(); -} - -void wxSlider::ChangeForegroundColour() -{ - wxWindow::ChangeForegroundColour(); -} - -void wxSliderCallback (Widget widget, XtPointer clientData, XmScaleCallbackStruct * cbs) -{ - wxSlider *slider = (wxSlider *) clientData; - switch (cbs->reason) - { - case XmCR_VALUE_CHANGED: - case XmCR_DRAG: - default: - { - // TODO: the XmCR_VALUE_CHANGED case should be handled - // differently (it's not sent continually as the slider moves). - // In which case we need a similar behaviour for other platforms. - - wxScrollEvent event(wxEVT_SCROLL_THUMBTRACK, slider->GetId()); - XtVaGetValues (widget, XmNvalue, &event.m_commandInt, NULL); - event.SetEventObject(slider); - slider->ProcessCommand(event); - - // Also send a wxCommandEvent for compatibility. - wxCommandEvent event2(wxEVT_COMMAND_SLIDER_UPDATED, slider->GetId()); - event2.SetEventObject(slider); - slider->ProcessCommand(event2); - break; - } - } -} - diff --git a/src/motif/spinbutt.cpp b/src/motif/spinbutt.cpp deleted file mode 100644 index 73cedd396d..0000000000 --- a/src/motif/spinbutt.cpp +++ /dev/null @@ -1,93 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: spinbutt.cpp -// Purpose: wxSpinButton -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "spinbutt.h" -#endif - -#include "wx/spinbutt.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxSpinButton, wxControl) -#endif - -wxSpinButton::wxSpinButton() -{ - m_min = 0; - m_max = 100; -} - -bool wxSpinButton::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, - long style, const wxString& name) -{ - SetName(name); - - m_windowStyle = style; - - if (parent) parent->AddChild(this); - - m_min = 0; - m_max = 100; - - m_windowId = (id == -1) ? NewControlId() : id; - - // TODO create spin button - return FALSE; -} - -wxSpinButton::~wxSpinButton() -{ -} - -// Attributes -//////////////////////////////////////////////////////////////////////////// - -int wxSpinButton::GetValue() const -{ - // TODO - return 0; -} - -void wxSpinButton::SetValue(int val) -{ - // TODO -} - -void wxSpinButton::SetRange(int minVal, int maxVal) -{ - m_min = minVal; - m_max = maxVal; - // TODO -} - -void wxSpinButton::ChangeFont(bool keepOriginalSize) -{ - // TODO -} - -void wxSpinButton::ChangeBackgroundColour() -{ - // TODO -} - -void wxSpinButton::ChangeForegroundColour() -{ - // TODO -} - -// Spin event -IMPLEMENT_DYNAMIC_CLASS(wxSpinEvent, wxScrollEvent) - -wxSpinEvent::wxSpinEvent(wxEventType commandType, int id): - wxScrollEvent(commandType, id) -{ -} - diff --git a/src/motif/statbmp.cpp b/src/motif/statbmp.cpp deleted file mode 100644 index 20d46299d5..0000000000 --- a/src/motif/statbmp.cpp +++ /dev/null @@ -1,137 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: statbmp.cpp -// Purpose: wxStaticBitmap -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "statbmp.h" -#endif - -#include "wx/statbmp.h" - -#include -#include -#include -#include - -#include - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxStaticBitmap, wxControl) -#endif - -/* - * wxStaticBitmap - */ - -bool wxStaticBitmap::Create(wxWindow *parent, wxWindowID id, - const wxBitmap& bitmap, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - m_messageBitmap = bitmap; - SetName(name); - m_backgroundColour = parent->GetBackgroundColour(); - m_foregroundColour = parent->GetForegroundColour(); - if (parent) parent->AddChild(this); - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - m_windowStyle = style; - - Widget parentWidget = (Widget) parent->GetClientWidget(); - - m_mainWidget = (WXWidget) XtVaCreateManagedWidget ("staticBitmap", -#if USE_GADGETS - xmLabelGadgetClass, parentWidget, -#else - xmLabelWidgetClass, parentWidget, -#endif - XmNalignment, XmALIGNMENT_BEGINNING, - NULL); - - XtVaSetValues ((Widget) m_mainWidget, - XmNlabelPixmap, (Pixmap) ((wxBitmap&)bitmap).GetLabelPixmap (m_mainWidget), - XmNlabelType, XmPIXMAP, - NULL); - - m_windowFont = parent->GetFont(); - ChangeFont(FALSE); - - SetCanAddEventHandler(TRUE); - AttachWidget (parent, m_mainWidget, (WXWidget) NULL, pos.x, pos.y, size.x, size.y); - - ChangeBackgroundColour (); - - return TRUE; -} - -wxStaticBitmap::~wxStaticBitmap() -{ - SetBitmap(wxNullBitmap); -} - -void wxStaticBitmap::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - wxControl::SetSize(x, y, width, height, sizeFlags); -} - -void wxStaticBitmap::SetBitmap(const wxBitmap& bitmap) -{ - m_messageBitmap = bitmap; - - Widget widget = (Widget) m_mainWidget; - int x, y, w1, h1, w2, h2; - - GetPosition(&x, &y); - - if (bitmap.Ok()) - { - w2 = bitmap.GetWidth(); - h2 = bitmap.GetHeight(); - XtVaSetValues (widget, - XmNlabelPixmap, ((wxBitmap&)bitmap).GetLabelPixmap (widget), - XmNlabelType, XmPIXMAP, - NULL); - GetSize(&w1, &h1); - - if (! (w1 == w2) && (h1 == h2)) - SetSize(x, y, w2, h2); - } - else - { - // Null bitmap: must not use current pixmap - // since it is no longer valid. - XtVaSetValues (widget, - XmNlabelType, XmSTRING, - XmNlabelPixmap, XmUNSPECIFIED_PIXMAP, - NULL); - } -} - -void wxStaticBitmap::ChangeFont(bool keepOriginalSize) -{ - wxWindow::ChangeFont(keepOriginalSize); -} - -void wxStaticBitmap::ChangeBackgroundColour() -{ - wxWindow::ChangeBackgroundColour(); -} - -void wxStaticBitmap::ChangeForegroundColour() -{ - wxWindow::ChangeForegroundColour(); -} - diff --git a/src/motif/statbox.cpp b/src/motif/statbox.cpp deleted file mode 100644 index 3e590bae1d..0000000000 --- a/src/motif/statbox.cpp +++ /dev/null @@ -1,221 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: statbox.cpp -// Purpose: wxStaticBox -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "statbox.h" -#endif - -#include "wx/statbox.h" -#include "wx/utils.h" - -#include -#include -#include -#include - -#include - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxStaticBox, wxControl) - -BEGIN_EVENT_TABLE(wxStaticBox, wxControl) - EVT_ERASE_BACKGROUND(wxStaticBox::OnEraseBackground) -END_EVENT_TABLE() - -#endif - -/* - * Static box - */ - -wxStaticBox::wxStaticBox() -{ - m_formWidget = (WXWidget) 0; - m_labelWidget = (WXWidget) 0; -} - -bool wxStaticBox::Create(wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - m_formWidget = (WXWidget) 0; - m_labelWidget = (WXWidget) 0; - m_backgroundColour = parent->GetBackgroundColour(); - m_foregroundColour = parent->GetForegroundColour(); - m_windowFont = parent->GetFont(); - - SetName(name); - - if (parent) parent->AddChild(this); - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - m_windowStyle = style; - - bool hasLabel = (!label.IsNull() && !label.IsEmpty()) ; - - Widget parentWidget = (Widget) parent->GetClientWidget(); - - Widget formWidget = XtVaCreateManagedWidget ((char*) (const char*) name, - xmFormWidgetClass, parentWidget, - XmNmarginHeight, 0, - XmNmarginWidth, 0, - NULL); - - - if (hasLabel) - { - XmFontList fontList = (XmFontList) m_windowFont.GetFontList(1.0, XtDisplay(parentWidget)); - - wxString label1(wxStripMenuCodes(label)); - XmString text = XmStringCreateSimple ((char*) (const char*) label1); - m_labelWidget = (WXWidget) XtVaCreateManagedWidget ((char*) (const char*) label1, - xmLabelWidgetClass, formWidget, - XmNfontList, fontList, - XmNlabelString, text, - NULL); - XmStringFree (text); - } - - Widget frameWidget = XtVaCreateManagedWidget ("frame", - xmFrameWidgetClass, formWidget, - XmNshadowType, XmSHADOW_IN, -// XmNmarginHeight, 0, -// XmNmarginWidth, 0, - NULL); - - if (hasLabel) - XtVaSetValues ((Widget) m_labelWidget, - XmNtopAttachment, XmATTACH_FORM, - XmNleftAttachment, XmATTACH_FORM, - XmNrightAttachment, XmATTACH_FORM, - XmNalignment, XmALIGNMENT_BEGINNING, - NULL); - - XtVaSetValues (frameWidget, - XmNtopAttachment, hasLabel ? XmATTACH_WIDGET : XmATTACH_FORM, - XmNtopWidget, hasLabel ? (Widget) m_labelWidget : formWidget, - XmNbottomAttachment, XmATTACH_FORM, - XmNleftAttachment, XmATTACH_FORM, - XmNrightAttachment, XmATTACH_FORM, - NULL); - - m_mainWidget = (WXWidget) frameWidget; - m_formWidget = (WXWidget) formWidget; - - SetCanAddEventHandler(TRUE); - AttachWidget (parent, (WXWidget) frameWidget, (WXWidget) formWidget, pos.x, pos.y, size.x, size.y); - ChangeBackgroundColour(); - - return TRUE; -} - -wxStaticBox::~wxStaticBox() -{ - DetachWidget(m_formWidget); - DetachWidget(m_mainWidget); - XtDestroyWidget((Widget) m_mainWidget); - if (m_labelWidget) - XtDestroyWidget((Widget) m_labelWidget); - XtDestroyWidget((Widget) m_formWidget); - - m_mainWidget = (WXWidget) 0; - m_labelWidget = (WXWidget) 0; - m_formWidget = (WXWidget) 0; -} - -void wxStaticBox::SetLabel(const wxString& label) -{ - if (!m_labelWidget) - return; - - if (!label.IsNull()) - { - wxString label1(wxStripMenuCodes(label)); - - XmString text = XmStringCreateSimple ((char*) (const char*) label1); - XtVaSetValues ((Widget) m_labelWidget, - XmNlabelString, text, - XmNlabelType, XmSTRING, - NULL); - XmStringFree (text); - } -} - -wxString wxStaticBox::GetLabel() const -{ - if (!m_labelWidget) - return wxEmptyString; - - XmString text = 0; - char *s; - XtVaGetValues ((Widget) m_labelWidget, - XmNlabelString, &text, - NULL); - - if (!text) - return wxEmptyString; - - if (XmStringGetLtoR (text, XmSTRING_DEFAULT_CHARSET, &s)) - { - wxString str(s); - XtFree (s); - return str; - } - else - { - return wxEmptyString; - } -} - -void wxStaticBox::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - wxControl::SetSize (x, y, width, height, sizeFlags); - - if (m_labelWidget) - { - Dimension xx, yy; - XtVaGetValues ((Widget) m_labelWidget, XmNwidth, &xx, XmNheight, &yy, NULL); - - if (width > -1) - XtVaSetValues ((Widget) m_mainWidget, XmNwidth, width, - NULL); - if (height > -1) - XtVaSetValues ((Widget) m_mainWidget, XmNheight, height - yy, - NULL); - } -} - -void wxStaticBox::ChangeFont(bool keepOriginalSize) -{ - wxWindow::ChangeFont(keepOriginalSize); -} - -void wxStaticBox::ChangeBackgroundColour() -{ - wxWindow::ChangeBackgroundColour(); - if (m_labelWidget) - DoChangeBackgroundColour(m_labelWidget, m_backgroundColour); -} - -void wxStaticBox::ChangeForegroundColour() -{ - wxWindow::ChangeForegroundColour(); - if (m_labelWidget) - DoChangeForegroundColour(m_labelWidget, m_foregroundColour); -} - diff --git a/src/motif/stattext.cpp b/src/motif/stattext.cpp deleted file mode 100644 index 996cf9315e..0000000000 --- a/src/motif/stattext.cpp +++ /dev/null @@ -1,96 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: stattext.cpp -// Purpose: wxStaticText -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "stattext.h" -#endif - -#include "wx/app.h" -#include "wx/stattext.h" - -#include - -#include -#include -#include - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxStaticText, wxControl) -#endif - -bool wxStaticText::Create(wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - SetName(name); - if (parent) parent->AddChild(this); - - m_backgroundColour = parent->GetBackgroundColour(); - m_foregroundColour = parent->GetForegroundColour(); - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - m_windowStyle = style; - m_windowFont = parent->GetFont(); - - char* label1 = (label.IsNull() ? "" : (char*) (const char*) label); - - Widget parentWidget = (Widget) parent->GetClientWidget(); - - // Use XmStringCreateLtoR(), since XmStringCreateSimple - // doesn't obey separators. -// XmString text = XmStringCreateSimple (label1); - XmString text = XmStringCreateLtoR (label1, XmSTRING_DEFAULT_CHARSET); - - XmFontList fontList = (XmFontList) m_windowFont.GetFontList(1.0, XtDisplay(parentWidget)); - - m_mainWidget = (WXWidget) XtVaCreateManagedWidget ((char*) (const char*) name, - xmLabelWidgetClass, - parentWidget, - XmNfontList, fontList, - XmNlabelString, text, - XmNalignment, - ((style & wxALIGN_RIGHT) ? XmALIGNMENT_END : - ((style & wxALIGN_CENTRE) ? XmALIGNMENT_CENTER : - XmALIGNMENT_BEGINNING)), - NULL); - - XmStringFree (text); - - SetCanAddEventHandler(TRUE); - AttachWidget (parent, m_mainWidget, (WXWidget) NULL, pos.x, pos.y, size.x, size.y); - - ChangeBackgroundColour (); - - return TRUE; -} - -void wxStaticText::ChangeFont(bool keepOriginalSize) -{ - wxWindow::ChangeFont(keepOriginalSize); -} - -void wxStaticText::ChangeBackgroundColour() -{ - wxWindow::ChangeBackgroundColour(); -} - -void wxStaticText::ChangeForegroundColour() -{ - wxWindow::ChangeForegroundColour(); -} - diff --git a/src/motif/tabctrl.cpp b/src/motif/tabctrl.cpp deleted file mode 100644 index 07216d262a..0000000000 --- a/src/motif/tabctrl.cpp +++ /dev/null @@ -1,201 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: tabctrl.cpp -// Purpose: wxTabCtrl -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "tabctrl.h" -#endif - -#include "wx/control.h" -#include "wx/tabctrl.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxTabCtrl, wxControl) - -BEGIN_EVENT_TABLE(wxTabCtrl, wxControl) -END_EVENT_TABLE() -#endif - -wxTabCtrl::wxTabCtrl() -{ - m_imageList = NULL; -} - -bool wxTabCtrl::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, - long style, const wxString& name) -{ - m_imageList = NULL; - - SetName(name); - - m_windowStyle = style; - - SetParent(parent); - - m_windowId = (id < 0 ? NewControlId() : id); - - if (parent) parent->AddChild(this); - - // TODO: create tab control - return FALSE; -} - -wxTabCtrl::~wxTabCtrl() -{ -} - -void wxTabCtrl::Command(wxCommandEvent& event) -{ -} - -// Delete all items -bool wxTabCtrl::DeleteAllItems() -{ - // TODO - return FALSE; -} - -// Delete an item -bool wxTabCtrl::DeleteItem(int item) -{ - // TODO - return FALSE; -} - -// Get the selection -int wxTabCtrl::GetSelection() const -{ - // TODO - return 0; -} - -// Get the tab with the current keyboard focus -int wxTabCtrl::GetCurFocus() const -{ - // TODO - return 0; -} - -// Get the associated image list -wxImageList* wxTabCtrl::GetImageList() const -{ - return m_imageList; -} - -// Get the number of items -int wxTabCtrl::GetItemCount() const -{ - // TODO - return 0; -} - -// Get the rect corresponding to the tab -bool wxTabCtrl::GetItemRect(int item, wxRect& wxrect) const -{ - // TODO - return FALSE; -} - -// Get the number of rows -int wxTabCtrl::GetRowCount() const -{ - // TODO - return 0; -} - -// Get the item text -wxString wxTabCtrl::GetItemText(int item) const -{ - // TODO - return wxString(""); -} - -// Get the item image -int wxTabCtrl::GetItemImage(int item) const -{ - // TODO - return 0; -} - -// Get the item data -void* wxTabCtrl::GetItemData(int item) const -{ - // TODO - return NULL; -} - -// Hit test -int wxTabCtrl::HitTest(const wxPoint& pt, long& flags) -{ - // TODO - return 0; -} - -// Insert an item -bool wxTabCtrl::InsertItem(int item, const wxString& text, int imageId, void* data) -{ - // TODO - return FALSE; -} - -// Set the selection -int wxTabCtrl::SetSelection(int item) -{ - // TODO - return 0; -} - -// Set the image list -void wxTabCtrl::SetImageList(wxImageList* imageList) -{ - // TODO -} - -// Set the text for an item -bool wxTabCtrl::SetItemText(int item, const wxString& text) -{ - // TODO - return FALSE; -} - -// Set the image for an item -bool wxTabCtrl::SetItemImage(int item, int image) -{ - // TODO - return FALSE; -} - -// Set the data for an item -bool wxTabCtrl::SetItemData(int item, void* data) -{ - // TODO - return FALSE; -} - -// Set the size for a fixed-width tab control -void wxTabCtrl::SetItemSize(const wxSize& size) -{ - // TODO -} - -// Set the padding between tabs -void wxTabCtrl::SetPadding(const wxSize& padding) -{ - // TODO -} - -// Tab event -IMPLEMENT_DYNAMIC_CLASS(wxTabEvent, wxCommandEvent) - -wxTabEvent::wxTabEvent(wxEventType commandType, int id): - wxCommandEvent(commandType, id) -{ -} - diff --git a/src/motif/taskbar.cpp b/src/motif/taskbar.cpp deleted file mode 100644 index 75f12c0d58..0000000000 --- a/src/motif/taskbar.cpp +++ /dev/null @@ -1,70 +0,0 @@ -///////////////////////////////////////////////////////////////////////// -// File: taskbar.cpp -// Purpose: Implements wxTaskBarIcon class for manipulating icons on -// the task bar. Optional. -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "taskbar.h" -#endif - -#include - -wxTaskBarIcon::wxTaskBarIcon() -{ - // TODO -} - -wxTaskBarIcon::~wxTaskBarIcon() -{ - // TODO -} - -// Operations -bool wxTaskBarIcon::SetIcon(const wxIcon& icon, const wxString& tooltip) -{ - // TODO - return FALSE; -} - -bool wxTaskBarIcon::RemoveIcon() -{ - // TODO - return FALSE; -} - -// Overridables -void wxTaskBarIcon::OnMouseMove() -{ -} - -void wxTaskBarIcon::OnLButtonDown() -{ -} - -void wxTaskBarIcon::OnLButtonUp() -{ -} - -void wxTaskBarIcon::OnRButtonDown() -{ -} - -void wxTaskBarIcon::OnRButtonUp() -{ -} - -void wxTaskBarIcon::OnLButtonDClick() -{ -} - -void wxTaskBarIcon::OnRButtonDClick() -{ -} - diff --git a/src/motif/textctrl.cpp b/src/motif/textctrl.cpp deleted file mode 100644 index bb1a996c02..0000000000 --- a/src/motif/textctrl.cpp +++ /dev/null @@ -1,898 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: textctrl.cpp -// Purpose: wxTextCtrl -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "textctrl.h" -#endif - -#include -#include -#include - -#include "wx/textctrl.h" -#include "wx/settings.h" -#include "wx/filefn.h" -#include "wx/utils.h" - -#if defined(__BORLANDC__) && !defined(__WIN32__) -#include -#else -#ifndef __GNUWIN32__ -#include -#endif -#endif - -#include -#include -#include -#include - -#include "wx/motif/private.h" - -static void -wxTextWindowChangedProc (Widget w, XtPointer clientData, XtPointer ptr); -static void -wxTextWindowModifyProc (Widget w, XtPointer clientData, XmTextVerifyCallbackStruct *cbs); -static void -wxTextWindowGainFocusProc (Widget w, XtPointer clientData, XmAnyCallbackStruct *cbs); -static void -wxTextWindowLoseFocusProc (Widget w, XtPointer clientData, XmAnyCallbackStruct *cbs); -static void wxTextWindowActivateProc(Widget w, XtPointer clientData, - XmAnyCallbackStruct *ptr); - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxTextCtrl, wxControl) - -BEGIN_EVENT_TABLE(wxTextCtrl, wxControl) -EVT_DROP_FILES(wxTextCtrl::OnDropFiles) -EVT_CHAR(wxTextCtrl::OnChar) -END_EVENT_TABLE() -#endif - -// Text item -wxTextCtrl::wxTextCtrl() -#ifndef NO_TEXT_WINDOW_STREAM -:streambuf() -#endif -{ - m_fileName = ""; - m_tempCallbackStruct = (void*) NULL; - m_modified = FALSE; - m_processedDefault = FALSE; -} - -bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id, - const wxString& value, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - m_tempCallbackStruct = (void*) NULL; - m_modified = FALSE; - m_processedDefault = FALSE; - m_fileName = ""; - // m_backgroundColour = parent->GetBackgroundColour(); - m_backgroundColour = * wxWHITE; - m_foregroundColour = parent->GetForegroundColour(); - - SetName(name); - SetValidator(validator); - if (parent) parent->AddChild(this); - - m_windowStyle = style; - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - Widget parentWidget = (Widget) parent->GetClientWidget(); - - bool wantHorizScrolling = ((m_windowStyle & wxHSCROLL) != 0); - - // If we don't have horizontal scrollbars, we want word wrap. - bool wantWordWrap = !wantHorizScrolling; - - if (m_windowStyle & wxTE_MULTILINE) - { - Arg args[2]; - XtSetArg (args[0], XmNscrollHorizontal, wantHorizScrolling ? True : False); - XtSetArg (args[1], XmNwordWrap, wantWordWrap ? True : False); - - m_mainWidget = (WXWidget) XmCreateScrolledText (parentWidget, (char*) (const char*) name, args, 2); - - XtVaSetValues ((Widget) m_mainWidget, - XmNeditable, ((style & wxTE_READONLY) ? False : True), - XmNeditMode, XmMULTI_LINE_EDIT, - NULL); - XtManageChild ((Widget) m_mainWidget); - } - else - { - m_mainWidget = (WXWidget) XtVaCreateManagedWidget ((char*) (const char*) name, - xmTextWidgetClass, parentWidget, - NULL); - - // TODO: Is this relevant? What does it do? - int noCols = 2; - if (!value.IsNull() && (value.Length() > (unsigned int) noCols)) - noCols = value.Length(); - XtVaSetValues ((Widget) m_mainWidget, - XmNcolumns, noCols, - NULL); - } - - if (!value.IsNull()) - XmTextSetString ((Widget) m_mainWidget, (char*) (const char*) value); - - XtAddCallback((Widget) m_mainWidget, XmNvalueChangedCallback, (XtCallbackProc)wxTextWindowChangedProc, (XtPointer)this); - - XtAddCallback((Widget) m_mainWidget, XmNmodifyVerifyCallback, (XtCallbackProc)wxTextWindowModifyProc, (XtPointer)this); - - XtAddCallback((Widget) m_mainWidget, XmNactivateCallback, (XtCallbackProc)wxTextWindowActivateProc, (XtPointer)this); - - XtAddCallback((Widget) m_mainWidget, XmNfocusCallback, (XtCallbackProc)wxTextWindowGainFocusProc, (XtPointer)this); - - XtAddCallback((Widget) m_mainWidget, XmNlosingFocusCallback, (XtCallbackProc)wxTextWindowLoseFocusProc, (XtPointer)this); - - m_windowFont = parent->GetFont(); - ChangeFont(FALSE); - - SetCanAddEventHandler(TRUE); - AttachWidget (parent, m_mainWidget, (WXWidget) NULL, pos.x, pos.y, size.x, size.y); - - ChangeBackgroundColour(); - - return TRUE; -} - -WXWidget wxTextCtrl::GetTopWidget() const -{ - return ((m_windowStyle & wxTE_MULTILINE) ? (WXWidget) XtParent((Widget) m_mainWidget) : m_mainWidget); -} - -wxString wxTextCtrl::GetValue() const -{ - if (m_windowStyle & wxTE_PASSWORD) - return m_value; - else - { - char *s = XmTextGetString ((Widget) m_mainWidget); - if (s) - { - wxString str(s); - XtFree (s); - return str; - } - else - { - return wxEmptyString; - } - } -} - -void wxTextCtrl::SetValue(const wxString& value) -{ - // This assert is wrong -- means that you can't set an empty - // string (IsNull == IsEmpty). - // wxASSERT_MSG( (!value.IsNull()), "Must not pass a null string to wxTextCtrl::SetValue." ) ; - m_inSetValue = TRUE; - - XmTextSetString ((Widget) m_mainWidget, (char*) (const char*) value); - - m_inSetValue = FALSE; -} - -// Clipboard operations -void wxTextCtrl::Copy() -{ - XmTextCopy((Widget) m_mainWidget, CurrentTime); -} - -void wxTextCtrl::Cut() -{ - XmTextCut((Widget) m_mainWidget, CurrentTime); -} - -void wxTextCtrl::Paste() -{ - XmTextPaste((Widget) m_mainWidget); -} - -void wxTextCtrl::SetEditable(bool editable) -{ - XmTextSetEditable((Widget) m_mainWidget, (Boolean) editable); -} - -void wxTextCtrl::SetInsertionPoint(long pos) -{ - XmTextSetInsertionPosition ((Widget) m_mainWidget, (XmTextPosition) pos); -} - -void wxTextCtrl::SetInsertionPointEnd() -{ - long pos = GetLastPosition(); - SetInsertionPoint(pos); -} - -long wxTextCtrl::GetInsertionPoint() const -{ - return (long) XmTextGetInsertionPosition ((Widget) m_mainWidget); -} - -long wxTextCtrl::GetLastPosition() const -{ - return (long) XmTextGetLastPosition ((Widget) m_mainWidget); -} - -void wxTextCtrl::Replace(long from, long to, const wxString& value) -{ - XmTextReplace ((Widget) m_mainWidget, (XmTextPosition) from, (XmTextPosition) to, - (char*) (const char*) value); -} - -void wxTextCtrl::Remove(long from, long to) -{ - XmTextSetSelection ((Widget) m_mainWidget, (XmTextPosition) from, (XmTextPosition) to, - (Time) 0); - XmTextRemove ((Widget) m_mainWidget); -} - -void wxTextCtrl::SetSelection(long from, long to) -{ - XmTextSetSelection ((Widget) m_mainWidget, (XmTextPosition) from, (XmTextPosition) to, - (Time) 0); -} - -bool wxTextCtrl::LoadFile(const wxString& file) -{ - if (!wxFileExists(file)) - return FALSE; - - m_fileName = file; - - Clear(); - - Widget textWidget = (Widget) m_mainWidget; - FILE *fp; - - struct stat statb; - if ((stat ((char*) (const char*) file, &statb) == -1) || (statb.st_mode & S_IFMT) != S_IFREG || - !(fp = fopen ((char*) (const char*) file, "r"))) - { - return FALSE; - } - else - { - long len = statb.st_size; - char *text; - if (!(text = XtMalloc ((unsigned) (len + 1)))) - { - fclose (fp); - return FALSE; - } - if (fread (text, sizeof (char), len, fp) != (size_t) len) - { - } - fclose (fp); - - text[len] = 0; - XmTextSetString (textWidget, text); - // m_textPosition = len; - XtFree (text); - m_modified = FALSE; - return TRUE; - } -} - -// If file is null, try saved file name first -// Returns TRUE if succeeds. -bool wxTextCtrl::SaveFile(const wxString& file) -{ - wxString theFile(file); - if (theFile == "") - theFile = m_fileName; - if (theFile == "") - return FALSE; - m_fileName = theFile; - - Widget textWidget = (Widget) m_mainWidget; - FILE *fp; - - if (!(fp = fopen ((char*) (const char*) theFile, "w"))) - { - return FALSE; - } - else - { - char *text = XmTextGetString (textWidget); - long len = XmTextGetLastPosition (textWidget); - - if (fwrite (text, sizeof (char), len, fp) != (size_t) len) - { - // Did not write whole file - } - // Make sure newline terminates the file - if (text[len - 1] != '\n') - fputc ('\n', fp); - - fclose (fp); - XtFree (text); - m_modified = FALSE; - return TRUE; - } -} - -void wxTextCtrl::WriteText(const wxString& text) -{ - long textPosition = GetInsertionPoint() + strlen (text); - XmTextInsert ((Widget) m_mainWidget, GetInsertionPoint(), (char*) (const char*) text); - XtVaSetValues ((Widget) m_mainWidget, XmNcursorPosition, textPosition, NULL); - SetInsertionPoint(textPosition); - XmTextShowPosition ((Widget) m_mainWidget, textPosition); - m_modified = TRUE; -} - -void wxTextCtrl::Clear() -{ - XmTextSetString ((Widget) m_mainWidget, ""); - m_modified = FALSE; -} - -bool wxTextCtrl::IsModified() const -{ - return m_modified; -} - -// Makes 'unmodified' -void wxTextCtrl::DiscardEdits() -{ - XmTextSetString ((Widget) m_mainWidget, ""); - m_modified = FALSE; -} - -int wxTextCtrl::GetNumberOfLines() const -{ - // HIDEOUSLY inefficient, but we have no choice. - char *s = XmTextGetString ((Widget) m_mainWidget); - if (s) - { - long i = 0; - int currentLine = 0; - bool finished = FALSE; - while (!finished) - { - int ch = s[i]; - if (ch == '\n') - { - currentLine++; - i++; - } - else if (ch == 0) - { - finished = TRUE; - } - else - i++; - } - - XtFree (s); - return currentLine; - } - return 0; -} - -long wxTextCtrl::XYToPosition(long x, long y) const -{ -/* It seems, that there is a bug in some versions of the Motif library, - so the original wxWin-Code doesn't work. */ - /* - Widget textWidget = (Widget) handle; - return (long) XmTextXYToPos (textWidget, (Position) x, (Position) y); - */ - /* Now a little workaround: */ - long r=0; - for (int i=0; i 0) - { - LoadFile(event.GetFiles()[0]); - } -} - -// The streambuf code was partly taken from chapter 3 by Jerry Schwarz of -// AT&T's "C++ Lanuage System Release 3.0 Library Manual" - Stein Somers - -//========================================================================= -// Called then the buffer is full (gcc 2.6.3) -// or when "endl" is output (Borland 4.5) -//========================================================================= -// Class declaration using multiple inheritance doesn't work properly for -// Borland. See note in wb_text.h. -#ifndef NO_TEXT_WINDOW_STREAM -int wxTextCtrl::overflow(int c) -{ - // Make sure there is a holding area - if ( allocate()==EOF ) - { - wxError("Streambuf allocation failed","Internal error"); - return EOF; - } - - // Verify that there are no characters in get area - if ( gptr() && gptr() < egptr() ) - { - wxError("wxTextCtrl::overflow: Who's trespassing my get area?","Internal error"); - return EOF; - } - - // Reset get area - setg(0,0,0); - - // Make sure there is a put area - if ( ! pptr() ) - { - /* This doesn't seem to be fatal so comment out error message */ - // wxError("Put area not opened","Internal error"); - setp( base(), base() ); - } - - // Determine how many characters have been inserted but no consumed - int plen = pptr() - pbase(); - - // Now Jerry relies on the fact that the buffer is at least 2 chars - // long, but the holding area "may be as small as 1" ??? - // And we need an additional \0, so let's keep this inefficient but - // safe copy. - - // If c!=EOF, it is a character that must also be comsumed - int xtra = c==EOF? 0 : 1; - - // Write temporary C-string to wxTextWindow - { - char *txt = new char[plen+xtra+1]; - memcpy(txt, pbase(), plen); - txt[plen] = (char)c; // append c - txt[plen+xtra] = '\0'; // append '\0' or overwrite c - // If the put area already contained \0, output will be truncated there - WriteText(txt); - delete[] txt; - } - - // Reset put area - setp(pbase(), epptr()); - -#if defined(__WATCOMC__) - return __NOT_EOF; -#elif defined(zapeof) // HP-UX (all cfront based?) - return zapeof(c); -#else - return c!=EOF ? c : 0; // this should make everybody happy -#endif -} - -//========================================================================= -// called then "endl" is output (gcc) or then explicit sync is done (Borland) -//========================================================================= -int wxTextCtrl::sync() -{ - // Verify that there are no characters in get area - if ( gptr() && gptr() < egptr() ) - { - wxError("Who's trespassing my get area?","Internal error"); - return EOF; - } - - if ( pptr() && pptr() > pbase() ) return overflow(EOF); - - return 0; - /* OLD CODE - int len = pptr() - pbase(); - char *txt = new char[len+1]; - strncpy(txt, pbase(), len); - txt[len] = '\0'; - (*this) << txt; - setp(pbase(), epptr()); - delete[] txt; - return 0; - */ -} - -//========================================================================= -// Should not be called by a "ostream". Used by a "istream" -//========================================================================= -int wxTextCtrl::underflow() -{ - return EOF; -} -#endif - -wxTextCtrl& wxTextCtrl::operator<<(const wxString& s) -{ - WriteText(s); - return *this; -} - -wxTextCtrl& wxTextCtrl::operator<<(float f) -{ - wxString str; - str.Printf("%.2f", f); - WriteText(str); - return *this; -} - -wxTextCtrl& wxTextCtrl::operator<<(double d) -{ - wxString str; - str.Printf("%.2f", d); - WriteText(str); - return *this; -} - -wxTextCtrl& wxTextCtrl::operator<<(int i) -{ - wxString str; - str.Printf("%d", i); - WriteText(str); - return *this; -} - -wxTextCtrl& wxTextCtrl::operator<<(long i) -{ - wxString str; - str.Printf("%ld", i); - WriteText(str); - return *this; -} - -wxTextCtrl& wxTextCtrl::operator<<(const char c) -{ - char buf[2]; - - buf[0] = c; - buf[1] = 0; - WriteText(buf); - return *this; -} - -void wxTextCtrl::OnChar(wxKeyEvent& event) -{ - // Indicates that we should generate a normal command, because - // we're letting default behaviour happen (otherwise it's vetoed - // by virtue of overriding OnChar) - m_processedDefault = TRUE; - - if (m_tempCallbackStruct) - { - XmTextVerifyCallbackStruct *textStruct = - (XmTextVerifyCallbackStruct *) m_tempCallbackStruct; - textStruct->doit = True; - if (isascii(event.m_keyCode) && (textStruct->text->length == 1)) - { - textStruct->text->ptr[0] = ((event.m_keyCode == WXK_RETURN) ? 10 : event.m_keyCode); - } - } -} - -void wxTextCtrl::ChangeFont(bool keepOriginalSize) -{ - wxWindow::ChangeFont(keepOriginalSize); -} - -void wxTextCtrl::ChangeBackgroundColour() -{ - wxWindow::ChangeBackgroundColour(); - - /* TODO: should scrollbars be affected? Should probably have separate - * function to change them (by default, taken from wxSystemSettings) - */ - if (m_windowStyle & wxTE_MULTILINE) - { - Widget parent = XtParent ((Widget) m_mainWidget); - Widget hsb, vsb; - - XtVaGetValues (parent, - XmNhorizontalScrollBar, &hsb, - XmNverticalScrollBar, &vsb, - NULL); - wxColour backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE); - if (hsb) - DoChangeBackgroundColour((WXWidget) hsb, backgroundColour, TRUE); - if (vsb) - DoChangeBackgroundColour((WXWidget) vsb, backgroundColour, TRUE); - - DoChangeBackgroundColour((WXWidget) parent, m_backgroundColour, TRUE); - } -} - -void wxTextCtrl::ChangeForegroundColour() -{ - wxWindow::ChangeForegroundColour(); - - if (m_windowStyle & wxTE_MULTILINE) - { - Widget parent = XtParent ((Widget) m_mainWidget); - Widget hsb, vsb; - - XtVaGetValues (parent, - XmNhorizontalScrollBar, &hsb, - XmNverticalScrollBar, &vsb, - NULL); - - /* TODO: should scrollbars be affected? Should probably have separate - * function to change them (by default, taken from wxSystemSettings) - if (hsb) - DoChangeForegroundColour((WXWidget) hsb, m_foregroundColour); - if (vsb) - DoChangeForegroundColour((WXWidget) vsb, m_foregroundColour); - */ - DoChangeForegroundColour((WXWidget) parent, m_foregroundColour); - } -} - -static void wxTextWindowChangedProc (Widget w, XtPointer clientData, XtPointer ptr) -{ - if (!wxGetWindowFromTable(w)) - // Widget has been deleted! - return; - - wxTextCtrl *tw = (wxTextCtrl *) clientData; - tw->SetModified(TRUE); -} - -static void -wxTextWindowModifyProc (Widget w, XtPointer clientData, XmTextVerifyCallbackStruct *cbs) -{ - wxTextCtrl *tw = (wxTextCtrl *) clientData; - tw->m_processedDefault = FALSE; - - // First, do some stuff if it's a password control. - // (What does this do exactly?) - - if (tw->GetWindowStyleFlag() & wxTE_PASSWORD) - { - /* _sm_ - * At least on my system (SunOS 4.1.3 + Motif 1.2), you need to think of - * every event as a replace event. cbs->text->ptr gives the replacement - * text, cbs->startPos gives the index of the first char affected by the - * replace, and cbs->endPos gives the index one more than the last char - * affected by the replace (startPos == endPos implies an empty range). - * Hence, a deletion is represented by replacing all input text with a - * blank string ("", *not* NULL!). A simple insertion that does not - * overwrite any text has startPos == endPos. - */ - - if (tw->m_value.IsNull()) - { - tw->m_value = cbs->text->ptr; - } - else - { - char * passwd = (char*) (const char*) tw->m_value; // Set up a more convenient alias. - - int len = passwd ? strlen(passwd) : 0; // Enough room for old text - len += strlen(cbs->text->ptr) + 1; // + new text (if any) + NUL - len -= cbs->endPos - cbs->startPos; // - text from affected region. - - char * newS = new char [len]; - char * p = passwd, * dest = newS, * insert = cbs->text->ptr; - - // Copy (old) text from passwd, up to the start posn of the change. - int i; - for (i = 0; i < cbs->startPos; ++i) - *dest++ = *p++; - - // Copy the text to be inserted). - while (*insert) - *dest++ = *insert++; - - // Finally, copy into newS any remaining text from passwd[endPos] on. - for (p = passwd + cbs->endPos; *p; ) - *dest++ = *p++; - *dest = 0; - - tw->m_value = newS; - - delete[] newS; - } - - if (cbs->text->length>0) - { - int i; - for (i = 0; i < cbs->text->length; ++i) - cbs->text->ptr[i] = '*'; - cbs->text->ptr[i] = 0; - } - } - - // If we're already within an OnChar, return: probably - // a programmatic insertion. - if (tw->m_tempCallbackStruct) - return; - - // Check for a backspace - if (cbs->startPos == (cbs->currInsert - 1)) - { - tw->m_tempCallbackStruct = (void*) cbs; - - wxKeyEvent event (wxEVT_CHAR); - event.SetId(tw->GetId()); - event.m_keyCode = WXK_DELETE; - event.SetEventObject(tw); - - // Only if wxTextCtrl::OnChar is called - // will this be set to True (and the character - // passed through) - cbs->doit = False; - - tw->GetEventHandler()->ProcessEvent(event); - - tw->m_tempCallbackStruct = NULL; - - if (tw->InSetValue()) - return; - - if (tw->m_processedDefault) - { - // Can generate a command - wxCommandEvent commandEvent(wxEVT_COMMAND_TEXT_UPDATED, tw->GetId()); - commandEvent.SetEventObject(tw); - tw->ProcessCommand(commandEvent); - } - - return; - } - - // Pasting operation: let it through without - // calling OnChar - if (cbs->text->length > 1) - return; - - // Something other than text - if (cbs->text->ptr == NULL) - return; - - tw->m_tempCallbackStruct = (void*) cbs; - - wxKeyEvent event (wxEVT_CHAR); - event.SetId(tw->GetId()); - event.SetEventObject(tw); - event.m_keyCode = (cbs->text->ptr[0] == 10 ? 13 : cbs->text->ptr[0]); - - // Only if wxTextCtrl::OnChar is called - // will this be set to True (and the character - // passed through) - cbs->doit = False; - - tw->GetEventHandler()->ProcessEvent(event); - - tw->m_tempCallbackStruct = NULL; - - if (tw->InSetValue()) - return; - - if (tw->m_processedDefault) - { - // Can generate a command - wxCommandEvent commandEvent(wxEVT_COMMAND_TEXT_UPDATED, tw->GetId()); - commandEvent.SetEventObject(tw); - tw->ProcessCommand(commandEvent); - } -} - -static void -wxTextWindowGainFocusProc (Widget w, XtPointer clientData, XmAnyCallbackStruct *cbs) -{ - if (!wxGetWindowFromTable(w)) - return; - - wxTextCtrl *tw = (wxTextCtrl *) clientData; - wxFocusEvent event(wxEVT_SET_FOCUS, tw->GetId()); - event.SetEventObject(tw); - tw->GetEventHandler()->ProcessEvent(event); -} - -static void -wxTextWindowLoseFocusProc (Widget w, XtPointer clientData, XmAnyCallbackStruct *cbs) -{ - if (!wxGetWindowFromTable(w)) - return; - - wxTextCtrl *tw = (wxTextCtrl *) clientData; - wxFocusEvent event(wxEVT_KILL_FOCUS, tw->GetId()); - event.SetEventObject(tw); - tw->GetEventHandler()->ProcessEvent(event); -} - -static void wxTextWindowActivateProc(Widget w, XtPointer clientData, - XmAnyCallbackStruct *ptr) -{ - if (!wxGetWindowFromTable(w)) - return; - - wxTextCtrl *tw = (wxTextCtrl *) clientData; - /* - case XmCR_ACTIVATE: - type_event = wxEVENT_TYPE_TEXT_ENTER_COMMAND ; - break; - default: - type_event = wxEVENT_TYPE_TEXT_COMMAND ; - break; - } - */ - - if (tw->InSetValue()) - return; - - wxCommandEvent event(wxEVT_COMMAND_TEXT_ENTER); - event.SetId(tw->GetId()); - event.SetEventObject(tw); - tw->ProcessCommand(event); -} diff --git a/src/motif/thread.cpp b/src/motif/thread.cpp deleted file mode 100644 index 96d7af417a..0000000000 --- a/src/motif/thread.cpp +++ /dev/null @@ -1,447 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: thread.cpp -// Purpose: wxThread Implementation for Posix threads -// Author: Original from Wolfram Gloger/Guilhem Lavaux -// Modified by: Robert Roebling -// Created: 04/22/98 -// RCS-ID: $Id$ -// Copyright: (c) Wolfram Gloger (1996, 1997); Guilhem Lavaux (1998) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "thread.h" -#endif - -#include "wx/defs.h" - -#if wxUSE_THREADS - -#include "wx/module.h" -#include "wx/thread.h" -#include "wx/utils.h" -#include "wx/log.h" - -#include -#include -#include -#include - -#include -#include - -// for select() -#include -#include -#ifdef __sgi -#include -#endif - -//-------------------------------------------------------------------- -// constants -//-------------------------------------------------------------------- - -enum thread_state -{ - STATE_IDLE = 0, - STATE_RUNNING, - STATE_PAUSING, - STATE_PAUSED, - STATE_CANCELED, - STATE_EXITED -}; - -//-------------------------------------------------------------------- -// global data -//-------------------------------------------------------------------- - -static pthread_t p_mainid; - -wxMutex *wxMainMutex = (wxMutex*) NULL; /* controls access to all GUI functions */ - -/* TODO for Xt */ - -static int p_thrd_pipe[2] = { -1, -1 }; - -//------------------------------------------------------------------------- -// global functions -//------------------------------------------------------------------------- - -static void wxThreadGuiInit() -{ -/* TODO for Xt */ -} - -static void wxThreadGuiExit() -{ -/* TODO for Xt */ -} - -void wxMutexGuiEnter() -{ - if (wxMainMutex) - wxMainMutex->Lock(); -} - -void wxMutexGuiLeave() -{ - if (wxMainMutex) - wxMainMutex->Unlock(); -} - -//-------------------------------------------------------------------- -// wxMutex (Posix implementation) -//-------------------------------------------------------------------- - -class wxMutexInternal -{ -public: - pthread_mutex_t p_mutex; -}; - -wxMutex::wxMutex() -{ - p_internal = new wxMutexInternal; - pthread_mutex_init(&(p_internal->p_mutex), NULL); - m_locked = 0; -} - -wxMutex::~wxMutex() -{ - if (m_locked > 0) - wxLogDebug( "wxMutex warning: freeing a locked mutex (%d locks)\n", m_locked ); - - pthread_mutex_destroy(&(p_internal->p_mutex)); - delete p_internal; -} - -wxMutexError wxMutex::Lock() -{ - int err; - - err = pthread_mutex_lock(&(p_internal->p_mutex)); - if (err == EDEADLK) - return wxMUTEX_DEAD_LOCK; - - m_locked++; - return wxMUTEX_NO_ERROR; -} - -wxMutexError wxMutex::TryLock() -{ - int err; - - if (m_locked) - return wxMUTEX_BUSY; - - err = pthread_mutex_trylock(&(p_internal->p_mutex)); - switch (err) - { - case EBUSY: return wxMUTEX_BUSY; - } - m_locked++; - return wxMUTEX_NO_ERROR; -} - -wxMutexError wxMutex::Unlock() -{ - if (m_locked > 0) - m_locked--; - else - return wxMUTEX_UNLOCKED; - - pthread_mutex_unlock(&(p_internal->p_mutex)); - return wxMUTEX_NO_ERROR; -} - -//-------------------------------------------------------------------- -// wxCondition (Posix implementation) -//-------------------------------------------------------------------- - -class wxConditionInternal -{ -public: - pthread_cond_t p_condition; -}; - -wxCondition::wxCondition() -{ - p_internal = new wxConditionInternal; - pthread_cond_init(&(p_internal->p_condition), NULL); -} - -wxCondition::~wxCondition() -{ - pthread_cond_destroy(&(p_internal->p_condition)); - delete p_internal; -} - -void wxCondition::Wait(wxMutex& mutex) -{ - pthread_cond_wait(&(p_internal->p_condition), &(mutex.p_internal->p_mutex)); -} - -bool wxCondition::Wait(wxMutex& mutex, unsigned long sec, unsigned long nsec) -{ - struct timespec tspec; - - tspec.tv_sec = time(NULL)+sec; - tspec.tv_nsec = nsec; - return (pthread_cond_timedwait(&(p_internal->p_condition), &(mutex.p_internal->p_mutex), &tspec) != ETIMEDOUT); -} - -void wxCondition::Signal() -{ - pthread_cond_signal(&(p_internal->p_condition)); -} - -void wxCondition::Broadcast() -{ - pthread_cond_broadcast(&(p_internal->p_condition)); -} - -//-------------------------------------------------------------------- -// wxThread (Posix implementation) -//-------------------------------------------------------------------- - -class wxThreadInternal -{ -public: - wxThreadInternal() { state = STATE_IDLE; } - ~wxThreadInternal() {} - static void *PthreadStart(void *ptr); - pthread_t thread_id; - int state; - int prio; - int defer_destroy; -}; - -void *wxThreadInternal::PthreadStart(void *ptr) -{ - wxThread *thread = (wxThread *)ptr; - - // Call the main entry - pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL); - void* status = thread->Entry(); - - thread->Exit(status); - - return NULL; -} - -wxThreadError wxThread::Create() -{ - pthread_attr_t a; - int min_prio, max_prio, p; - struct sched_param sp; - - if (p_internal->state != STATE_IDLE) - return wxTHREAD_RUNNING; - - // Change thread priority - pthread_attr_init(&a); - pthread_attr_getschedpolicy(&a, &p); - - min_prio = sched_get_priority_min(p); - max_prio = sched_get_priority_max(p); - - pthread_attr_getschedparam(&a, &sp); - sp.sched_priority = min_prio + - (p_internal->prio*(max_prio-min_prio))/100; - pthread_attr_setschedparam(&a, &sp); - - // this is the point of no return - p_internal->state = STATE_RUNNING; - if (pthread_create(&p_internal->thread_id, &a, - wxThreadInternal::PthreadStart, (void *)this) != 0) - { - p_internal->state = STATE_IDLE; - pthread_attr_destroy(&a); - return wxTHREAD_NO_RESOURCE; - } - pthread_attr_destroy(&a); - - return wxTHREAD_NO_ERROR; -} - -void wxThread::SetPriority(int prio) -{ - if (p_internal->state == STATE_RUNNING) - return; - - if (prio > 100) prio = 100; - - if (prio < 0) prio = 0; - - p_internal->prio = prio; -} - -int wxThread::GetPriority() const -{ - return p_internal->prio; -} - -void wxThread::DeferDestroy(bool on) -{ - if (on) - pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, NULL); - else - pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL); -} - -wxThreadError wxThread::Destroy() -{ - int res = 0; - - if (p_internal->state == STATE_RUNNING) - { - res = pthread_cancel(p_internal->thread_id); - if (res == 0) - p_internal->state = STATE_CANCELED; - } - - return wxTHREAD_NO_ERROR; -} - -wxThreadError wxThread::Pause() -{ - if (p_internal->state != STATE_RUNNING) - return wxTHREAD_NOT_RUNNING; - - if (!p_internal->defer_destroy) - return wxTHREAD_MISC_ERROR; - - p_internal->state = STATE_PAUSING; - return wxTHREAD_NO_ERROR; -} - -wxThreadError wxThread::Resume() -{ - if (p_internal->state == STATE_PAUSING || p_internal->state == STATE_PAUSED) - p_internal->state = STATE_RUNNING; - - return wxTHREAD_NO_ERROR; -} - -void *wxThread::Join() -{ - void* status = 0; - - if (p_internal->state != STATE_IDLE) - { - bool do_unlock = wxThread::IsMain(); - - while (p_internal->state == STATE_RUNNING) - wxYield(); - - if (do_unlock) wxMainMutex->Unlock(); - - pthread_join(p_internal->thread_id, &status); - - if (do_unlock) wxMainMutex->Lock(); - - p_internal->state = STATE_IDLE; - } - - return status; -} - -unsigned long wxThread::GetID() const -{ - return p_internal->thread_id; -} - -void wxThread::Exit(void *status) -{ - wxThread* ptr = this; - -/* THREAD_SEND_EXIT_MSG(ptr); TODO for Xt */ - - p_internal->state = STATE_EXITED; - pthread_exit(status); -} - -void wxThread::TestDestroy() -{ - if (p_internal->state == STATE_PAUSING) - { - p_internal->state = STATE_PAUSED; - while (p_internal->state == STATE_PAUSED) - { - pthread_testcancel(); - usleep(1); - } - } - pthread_testcancel(); -} - -bool wxThread::IsMain() -{ - return (bool)pthread_equal(pthread_self(), p_mainid); -} - -bool wxThread::IsRunning() const -{ - return (p_internal->state == STATE_RUNNING); -} - -bool wxThread::IsAlive() const -{ - return (p_internal->state == STATE_RUNNING) || - (p_internal->state == STATE_PAUSING) || - (p_internal->state == STATE_PAUSED); -} - -wxThread::wxThread() -{ - p_internal = new wxThreadInternal(); -} - -wxThread::~wxThread() -{ - Destroy(); - Join(); - delete p_internal; -} - -// The default callback just joins the thread and throws away the result. -void wxThread::OnExit() -{ - Join(); -} - -//-------------------------------------------------------------------- -// wxThreadModule -//-------------------------------------------------------------------- - -class wxThreadModule : public wxModule -{ -public: - virtual bool OnInit(); - virtual void OnExit(); - -private: - DECLARE_DYNAMIC_CLASS(wxThreadModule) -}; - -IMPLEMENT_DYNAMIC_CLASS(wxThreadModule, wxModule) - -bool wxThreadModule::OnInit() -{ - wxMainMutex = new wxMutex(); - wxThreadGuiInit(); - p_mainid = pthread_self(); - wxMainMutex->Lock(); - - return TRUE; -} - -void wxThreadModule::OnExit() -{ - wxMainMutex->Unlock(); - wxThreadGuiExit(); - delete wxMainMutex; -}; - -#endif - // wxUSE_THREADS diff --git a/src/motif/timer.cpp b/src/motif/timer.cpp deleted file mode 100644 index 69b4917557..0000000000 --- a/src/motif/timer.cpp +++ /dev/null @@ -1,92 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: timer.cpp -// Purpose: wxTimer implementation -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "timer.h" -#endif - -#include "wx/timer.h" -#include "wx/app.h" -#include "wx/list.h" - -#include - -#include "wx/motif/private.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_ABSTRACT_CLASS(wxTimer, wxObject) -#endif - -static wxList wxTimerList(wxKEY_INTEGER); - -void wxTimerCallback (wxTimer * timer) -{ - // Check to see if it's still on - if (!wxTimerList.Find((long)timer)) - return; - - if (timer->m_id == 0) - return; // Avoid to process spurious timer events - - if (!timer->m_oneShot) - timer->m_id = XtAppAddTimeOut ((XtAppContext) wxTheApp->GetAppContext(), timer->m_milli, - (XtTimerCallbackProc) wxTimerCallback, (XtPointer) timer); - else - timer->m_id = 0; - timer->Notify (); -} - -wxTimer::wxTimer() -{ - m_id = 0; - m_milli = 0 ; - m_id = 0; - m_oneShot = FALSE; -} - -wxTimer::~wxTimer() -{ - Stop(); - wxTimerList.DeleteObject(this); -} - -bool wxTimer::Start(int milliseconds, bool mode) -{ - Stop(); - - m_oneShot = mode; - if (milliseconds < 0) - milliseconds = m_lastMilli; - - if (milliseconds <= 0) - return FALSE; - - m_lastMilli = m_milli = milliseconds; - - if (!wxTimerList.Find((long)this)) - wxTimerList.Append((long)this, this); - - m_id = XtAppAddTimeOut ((XtAppContext) wxTheApp->GetAppContext(), milliseconds, - (XtTimerCallbackProc) wxTimerCallback, (XtPointer) this); - return TRUE; -} - -void wxTimer::Stop() -{ - if (m_id > 0) - { - XtRemoveTimeOut (m_id); - m_id = 0; - } - m_milli = 0 ; -} - - diff --git a/src/motif/toolbar.cpp b/src/motif/toolbar.cpp deleted file mode 100644 index 8b3a4d47a1..0000000000 --- a/src/motif/toolbar.cpp +++ /dev/null @@ -1,786 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: toolbar.cpp -// Purpose: wxToolBar -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "toolbar.h" -#endif - -#include "wx/wx.h" -#include "wx/app.h" -#include "wx/timer.h" -#include "wx/toolbar.h" - -#include -#include -#include -#include -#include -#include -#include - -#include "wx/motif/private.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxToolBar, wxToolBarBase) - -BEGIN_EVENT_TABLE(wxToolBar, wxToolBarBase) -END_EVENT_TABLE() -#endif - -static void wxToolButtonCallback (Widget w, XtPointer clientData, - XtPointer ptr); -static void wxToolButtonPopupCallback (Widget w, XtPointer client_data, - XEvent *event, Boolean *continue_to_dispatch); - -class wxToolBarTimer: public wxTimer -{ -public: - wxToolBarTimer() { } - virtual void Notify(); - - static Widget help_popup; - static Widget buttonWidget; - static wxString helpString; -}; - -static wxToolBarTimer* wxTheToolBarTimer = (wxToolBarTimer*) NULL; - -Widget wxToolBarTimer::help_popup = (Widget) 0; -Widget wxToolBarTimer::buttonWidget = (Widget) 0; -wxString wxToolBarTimer::helpString = ""; - -wxToolBar::wxToolBar(): - m_widgets(wxKEY_INTEGER) -{ - m_maxWidth = -1; - m_maxHeight = -1; - m_defaultWidth = 24; - m_defaultHeight = 22; -} - -bool wxToolBar::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, - long style, const wxString& name) -{ - m_maxWidth = -1; - m_maxHeight = -1; - - m_defaultWidth = 24; - m_defaultHeight = 22; - SetName(name); - m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE); - m_foregroundColour = parent->GetForegroundColour(); - m_windowStyle = style; - - SetParent(parent); - - if (parent) parent->AddChild(this); - - Widget parentWidget = (Widget) parent->GetClientWidget(); - - Widget toolbar = XtVaCreateManagedWidget("toolbar", - xmBulletinBoardWidgetClass, (Widget) parentWidget, - XmNmarginWidth, 0, - XmNmarginHeight, 0, - XmNresizePolicy, XmRESIZE_NONE, - NULL); -/* - Widget toolbar = XtVaCreateManagedWidget("toolbar", - xmFormWidgetClass, (Widget) m_clientWidget, - XmNtraversalOn, False, - XmNhorizontalSpacing, 0, - XmNverticalSpacing, 0, - XmNleftOffset, 0, - XmNrightOffset, 0, - XmNmarginWidth, 0, - XmNmarginHeight, 0, - NULL); -*/ - - m_mainWidget = (WXWidget) toolbar; - - m_windowFont = parent->GetFont(); - ChangeFont(FALSE); - - SetCanAddEventHandler(TRUE); - AttachWidget (parent, m_mainWidget, (WXWidget) NULL, pos.x, pos.y, size.x, size.y); - - ChangeBackgroundColour(); - - return TRUE; -} - -wxToolBar::~wxToolBar() -{ - delete wxTheToolBarTimer; - wxTheToolBarTimer = NULL; - ClearTools(); - DestroyPixmaps(); -} - -bool wxToolBar::CreateTools() -{ - if (m_tools.Number() == 0) - return FALSE; - - // Separator spacing - const int separatorSize = GetToolSeparation(); // 8; - wxSize margins = GetToolMargins(); - int marginX = margins.x; - int marginY = margins.y; - - int currentX = marginX; - int currentY = marginY; - - int buttonHeight = 0; - - int currentSpacing = 0; - - m_widgets.Clear(); - Widget prevButton = (Widget) 0; - wxNode* node = m_tools.First(); - while (node) - { - wxToolBarTool *tool = (wxToolBarTool *)node->Data(); - - if (tool->m_toolStyle == wxTOOL_STYLE_SEPARATOR) - currentX += separatorSize; - else if (tool->m_bitmap1.Ok()) - { - Widget button = (Widget) 0; - - if (tool->m_isToggle) - { - button = XtVaCreateWidget("toggleButton", - xmToggleButtonWidgetClass, (Widget) m_mainWidget, - XmNx, currentX, XmNy, currentY, - // XmNpushButtonEnabled, True, - XmNmultiClick, XmMULTICLICK_KEEP, - XmNlabelType, XmPIXMAP, - NULL); - XtAddCallback ((Widget) button, XmNvalueChangedCallback, (XtCallbackProc) wxToolButtonCallback, - (XtPointer) this); - } - else - { - button = XtVaCreateWidget("button", - xmPushButtonWidgetClass, (Widget) m_mainWidget, - XmNx, currentX, XmNy, currentY, - XmNpushButtonEnabled, True, - XmNmultiClick, XmMULTICLICK_KEEP, - XmNlabelType, XmPIXMAP, - NULL); - XtAddCallback (button, - XmNactivateCallback, (XtCallbackProc) wxToolButtonCallback, - (XtPointer) this); - } - - DoChangeBackgroundColour((WXWidget) button, m_backgroundColour, TRUE); - - // For each button, if there is a mask, we must create - // a new wxBitmap that has the correct background colour - // for the button. Otherwise the background will just be - // e.g. black if a transparent XPM has been loaded. - wxBitmap originalBitmap = tool->m_bitmap1; - - if (tool->m_bitmap1.GetMask()) - { - int backgroundPixel; - XtVaGetValues(button, XmNbackground, &backgroundPixel, - NULL); - - - wxColour col; - col.SetPixel(backgroundPixel); - - wxBitmap newBitmap = wxCreateMaskedBitmap(tool->m_bitmap1, col); - - tool->m_bitmap1 = newBitmap; - } - - // Create a selected/toggled bitmap. If there isn't a m_bitmap2, - // we need to create it (with a darker, selected background) - int backgroundPixel; - if (tool->m_isToggle) - XtVaGetValues(button, XmNselectColor, &backgroundPixel, - NULL); - else - XtVaGetValues(button, XmNarmColor, &backgroundPixel, - NULL); - - wxColour col; - col.SetPixel(backgroundPixel); - - if (tool->m_bitmap2.Ok() && tool->m_bitmap2.GetMask()) - { - // Use what's there - wxBitmap newBitmap = wxCreateMaskedBitmap(tool->m_bitmap2, col); - tool->m_bitmap2 = newBitmap; - } - else - { - // Use unselected bitmap - if (originalBitmap.GetMask()) - { - wxBitmap newBitmap = wxCreateMaskedBitmap(originalBitmap, col); - tool->m_bitmap2 = newBitmap; - } - else - tool->m_bitmap2 = tool->m_bitmap1; - } - - Pixmap pixmap = (Pixmap) tool->m_bitmap1.GetPixmap(); - Pixmap insensPixmap = (Pixmap) tool->m_bitmap1.GetInsensPixmap(); - - if (tool->m_isToggle) - { - // Toggle button - Pixmap pixmap2 = (Pixmap) 0; - Pixmap insensPixmap2 = (Pixmap) 0; - - // If there's a bitmap for the toggled state, use it, - // otherwise generate one. - if (tool->m_bitmap2.Ok()) - { - pixmap2 = (Pixmap) tool->m_bitmap2.GetPixmap(); - insensPixmap2 = (Pixmap) tool->m_bitmap2.GetInsensPixmap(); - } - else - { - pixmap2 = (Pixmap) tool->m_bitmap1.GetArmPixmap(button); - insensPixmap2 = XCreateInsensitivePixmap((Display*) wxGetDisplay(), pixmap2); - m_pixmaps.Append((wxObject*) insensPixmap2); // Store for later deletion - } - XtVaSetValues (button, - XmNindicatorOn, False, - XmNshadowThickness, 2, - // XmNborderWidth, 0, - // XmNspacing, 0, - XmNmarginWidth, 0, - XmNmarginHeight, 0, - XmNfillOnSelect, True, - XmNlabelPixmap, pixmap, - XmNselectPixmap, pixmap2, - XmNlabelInsensitivePixmap, insensPixmap, - XmNselectInsensitivePixmap, insensPixmap2, - XmNlabelType, XmPIXMAP, - NULL); - } - else - { - Pixmap pixmap2 = (Pixmap) 0; - - // If there's a bitmap for the armed state, use it, - // otherwise generate one. - if (tool->m_bitmap2.Ok()) - { - pixmap2 = (Pixmap) tool->m_bitmap2.GetPixmap(); - } - else - { - pixmap2 = (Pixmap) tool->m_bitmap1.GetArmPixmap(button); - - } - // Normal button - XtVaSetValues(button, - XmNlabelPixmap, pixmap, - XmNlabelInsensitivePixmap, insensPixmap, - XmNarmPixmap, pixmap2, - NULL); - } - XtManageChild(button); - - Dimension width, height; - XtVaGetValues(button, XmNwidth, & width, XmNheight, & height, - NULL); - currentX += width + marginX; - buttonHeight = wxMax(buttonHeight, height); - - XtAddEventHandler (button, EnterWindowMask | LeaveWindowMask, - False, wxToolButtonPopupCallback, (XtPointer) this); - m_widgets.Append(tool->m_index, (wxObject*) button); - - prevButton = button; - currentSpacing = 0; - } - node = node->Next(); - } - - SetSize(-1, -1, currentX, buttonHeight + 2*marginY); - - return TRUE; -} - -// Old version, assuming we use a form. Now we use -// a bulletin board, so we can create controls on the toolbar. -#if 0 -bool wxToolBar::CreateTools() -{ - if (m_tools.Number() == 0) - return FALSE; - - // Separator spacing - const int separatorSize = GetToolSeparation(); // 8; - - int currentSpacing = 0; - - m_widgets.Clear(); - Widget prevButton = (Widget) 0; - wxNode* node = m_tools.First(); - while (node) - { - wxToolBarTool *tool = (wxToolBarTool *)node->Data(); - - if (tool->m_toolStyle == wxTOOL_STYLE_SEPARATOR) - currentSpacing = separatorSize; - else if (tool->m_bitmap1.Ok()) - { - Widget button = (Widget) 0; - - if (tool->m_isToggle) - { - button = XtVaCreateManagedWidget("toggleButton", - xmToggleButtonWidgetClass, (Widget) m_mainWidget, - XmNleftAttachment, (prevButton == (Widget) 0) ? XmATTACH_FORM : XmATTACH_WIDGET, - XmNleftWidget, (prevButton == (Widget) 0) ? NULL : prevButton, - XmNleftOffset, currentSpacing, - XmNtopAttachment, XmATTACH_FORM, - // XmNpushButtonEnabled, True, - XmNmultiClick, XmMULTICLICK_KEEP, - XmNlabelType, XmPIXMAP, - NULL); - XtAddCallback ((Widget) button, XmNvalueChangedCallback, (XtCallbackProc) wxToolButtonCallback, - (XtPointer) this); - } - else - { - button = XtVaCreateManagedWidget("button", - xmPushButtonWidgetClass, (Widget) m_mainWidget, - XmNleftAttachment, (prevButton == (Widget) 0) ? XmATTACH_FORM : XmATTACH_WIDGET, - XmNleftWidget, (prevButton == (Widget) 0) ? NULL : prevButton, - XmNleftOffset, currentSpacing, - XmNtopAttachment, XmATTACH_FORM, - XmNpushButtonEnabled, True, - XmNmultiClick, XmMULTICLICK_KEEP, - XmNlabelType, XmPIXMAP, - NULL); - XtAddCallback (button, - XmNactivateCallback, (XtCallbackProc) wxToolButtonCallback, - (XtPointer) this); - } - - // For each button, if there is a mask, we must create - // a new wxBitmap that has the correct background colour - // for the button. Otherwise the background will just be - // e.g. black if a transparent XPM has been loaded. - wxBitmap originalBitmap = tool->m_bitmap1; - - if (tool->m_bitmap1.GetMask()) - { - int backgroundPixel; - XtVaGetValues(button, XmNbackground, &backgroundPixel, - NULL); - - - wxColour col; - col.SetPixel(backgroundPixel); - - wxBitmap newBitmap = wxCreateMaskedBitmap(tool->m_bitmap1, col); - - tool->m_bitmap1 = newBitmap; - } - - // Create a selected/toggled bitmap. If there isn't a m_bitmap2, - // we need to create it (with a darker, selected background) - int backgroundPixel; - if (tool->m_isToggle) - XtVaGetValues(button, XmNselectColor, &backgroundPixel, - NULL); - else - XtVaGetValues(button, XmNarmColor, &backgroundPixel, - NULL); - - wxColour col; - col.SetPixel(backgroundPixel); - - if (tool->m_bitmap2.Ok() && tool->m_bitmap2.GetMask()) - { - // Use what's there - wxBitmap newBitmap = wxCreateMaskedBitmap(tool->m_bitmap2, col); - tool->m_bitmap2 = newBitmap; - } - else - { - // Use unselected bitmap - if (originalBitmap.GetMask()) - { - wxBitmap newBitmap = wxCreateMaskedBitmap(originalBitmap, col); - tool->m_bitmap2 = newBitmap; - } - else - tool->m_bitmap2 = tool->m_bitmap1; - } - - Pixmap pixmap = (Pixmap) tool->m_bitmap1.GetPixmap(); - Pixmap insensPixmap = (Pixmap) tool->m_bitmap1.GetInsensPixmap(); - - if (tool->m_isToggle) - { - // Toggle button - Pixmap pixmap2 = (Pixmap) 0; - Pixmap insensPixmap2 = (Pixmap) 0; - - // If there's a bitmap for the toggled state, use it, - // otherwise generate one. - if (tool->m_bitmap2.Ok()) - { - pixmap2 = (Pixmap) tool->m_bitmap2.GetPixmap(); - insensPixmap2 = (Pixmap) tool->m_bitmap2.GetInsensPixmap(); - } - else - { - pixmap2 = (Pixmap) tool->m_bitmap1.GetArmPixmap(button); - insensPixmap2 = XCreateInsensitivePixmap((Display*) wxGetDisplay(), pixmap2); - m_pixmaps.Append((wxObject*) insensPixmap2); // Store for later deletion - } - XtVaSetValues (button, - XmNindicatorOn, False, - XmNshadowThickness, 2, - // XmNborderWidth, 0, - // XmNspacing, 0, - XmNmarginWidth, 0, - XmNmarginHeight, 0, - XmNfillOnSelect, True, - XmNlabelPixmap, pixmap, - XmNselectPixmap, pixmap2, - XmNlabelInsensitivePixmap, insensPixmap, - XmNselectInsensitivePixmap, insensPixmap2, - XmNlabelType, XmPIXMAP, - NULL); - } - else - { - Pixmap pixmap2 = (Pixmap) 0; - - // If there's a bitmap for the armed state, use it, - // otherwise generate one. - if (tool->m_bitmap2.Ok()) - { - pixmap2 = (Pixmap) tool->m_bitmap2.GetPixmap(); - } - else - { - pixmap2 = (Pixmap) tool->m_bitmap1.GetArmPixmap(button); - - } - // Normal button - XtVaSetValues(button, - XmNlabelPixmap, pixmap, - XmNlabelInsensitivePixmap, insensPixmap, - XmNarmPixmap, pixmap2, - NULL); - } - - XtAddEventHandler (button, EnterWindowMask | LeaveWindowMask, - False, wxToolButtonPopupCallback, (XtPointer) this); - m_widgets.Append(tool->m_index, (wxObject*) button); - - prevButton = button; - currentSpacing = 0; - } - node = node->Next(); - } - - return TRUE; -} -#endif - -void wxToolBar::SetToolBitmapSize(const wxSize& size) -{ - // TODO not necessary? - m_defaultWidth = size.x; m_defaultHeight = size.y; -} - -wxSize wxToolBar::GetMaxSize() const -{ - int w, h; - GetSize(& w, & h); - - return wxSize(w, h); -} - -// The button size is bigger than the bitmap size -wxSize wxToolBar::GetToolSize() const -{ - // TODO not necessary? - return wxSize(m_defaultWidth + 8, m_defaultHeight + 7); -} - -void wxToolBar::EnableTool(int toolIndex, bool enable) -{ - wxNode *node = m_tools.Find((long)toolIndex); - if (node) - { - wxToolBarTool *tool = (wxToolBarTool *)node->Data(); - tool->m_enabled = enable; - - WXWidget widget = FindWidgetForIndex(tool->m_index); - if (widget == (WXWidget) 0) - return; - - XtSetSensitive((Widget) widget, (Boolean) enable); - } -} - -void wxToolBar::ToggleTool(int toolIndex, bool toggle) -{ - wxNode *node = m_tools.Find((long)toolIndex); - if (node) - { - wxToolBarTool *tool = (wxToolBarTool *)node->Data(); - if (tool->m_isToggle) - { - tool->m_toggleState = toggle; - - WXWidget widget = FindWidgetForIndex(tool->m_index); - if (widget == (WXWidget) 0) - return; - - XmToggleButtonSetState((Widget) widget, (Boolean) toggle, False); - } - } -} - -void wxToolBar::ClearTools() -{ - wxNode* node = m_widgets.First(); - while (node) - { - Widget button = (Widget) node->Data(); - XtDestroyWidget(button); - node = node->Next(); - } - m_widgets.Clear(); - DestroyPixmaps(); - - wxToolBarBase::ClearTools(); -} - -void wxToolBar::DestroyPixmaps() -{ - wxNode* node = m_pixmaps.First(); - while (node) - { - Pixmap pixmap = (Pixmap) node->Data(); - XmDestroyPixmap (DefaultScreenOfDisplay ((Display*) GetXDisplay()), pixmap); - node = node->Next(); - } - m_pixmaps.Clear(); -} - -// If pushedBitmap is NULL, a reversed version of bitmap is -// created and used as the pushed/toggled image. -// If toggle is TRUE, the button toggles between the two states. - -wxToolBarTool *wxToolBar::AddTool(int index, const wxBitmap& bitmap, const wxBitmap& pushedBitmap, - bool toggle, long xPos, long yPos, wxObject *clientData, const wxString& helpString1, const wxString& helpString2) -{ - wxToolBarTool *tool = new wxToolBarTool(index, bitmap, wxNullBitmap, toggle, xPos, yPos, helpString1, helpString2); - tool->m_clientData = clientData; - - if (xPos > -1) - tool->m_x = xPos; - else - tool->m_x = m_xMargin; - - if (yPos > -1) - tool->m_y = yPos; - else - tool->m_y = m_yMargin; - - wxSize& size = GetToolSize(); - tool->SetSize(size.x, size.y); - - m_tools.Append((long)index, tool); - return tool; -} - -int wxToolBar::FindIndexForWidget(WXWidget w) -{ - wxNode* node = m_widgets.First(); - while (node) - { - WXWidget widget = (WXWidget) node->Data(); - if (widget == w) - return (int) node->GetKeyInteger(); - node = node->Next(); - } - return -1; -} - -WXWidget wxToolBar::FindWidgetForIndex(int index) -{ - wxNode* node = m_widgets.Find((long) index); - if (!node) - return (WXWidget) 0; - else - return (WXWidget) node->Data(); -} - -WXWidget wxToolBar::GetTopWidget() const -{ - return m_mainWidget; -} - -WXWidget wxToolBar::GetClientWidget() const -{ - return m_mainWidget; -} - -WXWidget wxToolBar::GetMainWidget() const -{ - return m_mainWidget; -} - - -void wxToolButtonCallback (Widget w, XtPointer clientData, - XtPointer ptr) -{ - wxToolBar *toolBar = (wxToolBar *) clientData; - int index = toolBar->FindIndexForWidget((WXWidget) w); - - if (index != -1) - { - wxNode *node = toolBar->GetTools().Find((long)index); - if (!node) - return; - wxToolBarTool *tool = (wxToolBarTool *)node->Data(); - if (tool->m_isToggle) - tool->m_toggleState = toolBar->GetToolState(index); - - (void) toolBar->OnLeftClick(index, tool->m_toggleState); - } - -} - - -static void wxToolButtonPopupCallback (Widget w, XtPointer client_data, - XEvent *event, Boolean *continue_to_dispatch) -{ - // TODO: retrieve delay before popping up tooltip from wxSystemSettings. - int delayMilli = 800; - wxToolBar* toolBar = (wxToolBar*) client_data; - - int index = toolBar->FindIndexForWidget((WXWidget) w); - - if (index != -1) - { - wxNode *node = toolBar->GetTools().Find((long)index); - if (!node) - return; - wxToolBarTool *tool = (wxToolBarTool *)node->Data(); - wxString str(toolBar->GetToolShortHelp(index)); - if (str.IsNull() || str == "") - return; - - if (!wxTheToolBarTimer) - wxTheToolBarTimer = new wxToolBarTimer; - - wxToolBarTimer::buttonWidget = w; - wxToolBarTimer::helpString = str; - - - /************************************************************/ - /* Popup help label */ - /************************************************************/ - if (event->type == EnterNotify) - { - if (wxToolBarTimer::help_popup != (Widget) 0) - { - XtDestroyWidget (wxToolBarTimer::help_popup); - XtPopdown (wxToolBarTimer::help_popup); - } - wxToolBarTimer::help_popup = (Widget) 0; - - // One shot - wxTheToolBarTimer->Start(delayMilli, TRUE); - - } - /************************************************************/ - /* Popdown help label */ - /************************************************************/ - else if (event->type == LeaveNotify) - { - if (wxTheToolBarTimer) - wxTheToolBarTimer->Stop(); - if (wxToolBarTimer::help_popup != (Widget) 0) - { - XtDestroyWidget (wxToolBarTimer::help_popup); - XtPopdown (wxToolBarTimer::help_popup); - } - wxToolBarTimer::help_popup = (Widget) 0; - } - } -} - -void wxToolBarTimer::Notify() -{ - Position x, y; - - /************************************************************/ - /* Create shell without window decorations */ - /************************************************************/ - help_popup = XtVaCreatePopupShell ("shell", - overrideShellWidgetClass, (Widget) wxTheApp->GetTopLevelWidget(), - NULL); - - /************************************************************/ - /* Get absolute position on display of toolbar button */ - /************************************************************/ - XtTranslateCoords (buttonWidget, - (Position) 0, - (Position) 0, - &x, &y); - - // Move the tooltip more or less above the button - int yOffset = 20; // TODO: What should be really? - y -= yOffset; - if (y < yOffset) y = 0; - - /************************************************************/ - /* Set the position of the help popup */ - /************************************************************/ - XtVaSetValues (help_popup, - XmNx, (Position) x, - XmNy, (Position) y, - NULL); - - /************************************************************/ - /* Create help label */ - /************************************************************/ - XmString text = XmStringCreateSimple ((char*) (const char*) helpString); - XtVaCreateManagedWidget ("help_label", - xmLabelWidgetClass, help_popup, - XmNlabelString, text, - XtVaTypedArg, - XmNforeground, XtRString, "black", - strlen("black")+1, - XtVaTypedArg, - XmNbackground, XtRString, "LightGoldenrod", - strlen("LightGoldenrod")+1, - NULL); - XmStringFree (text); - - /************************************************************/ - /* Popup help label */ - /************************************************************/ - XtPopup (help_popup, XtGrabNone); -} - diff --git a/src/motif/utils.cpp b/src/motif/utils.cpp deleted file mode 100644 index 1e026d61b3..0000000000 --- a/src/motif/utils.cpp +++ /dev/null @@ -1,1282 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: utils.cpp -// Purpose: Various utilities -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -// Note: this is done in utilscmn.cpp now. -// #pragma implementation -// #pragma implementation "utils.h" -#endif - -#include "wx/setup.h" -#include "wx/utils.h" -#include "wx/app.h" -#include "wx/msgdlg.h" -#include "wx/cursor.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if defined(__SVR4__) && !defined(__HPUX__) -#include -#endif - -#if (defined(__SUNCC__) || defined(__CLCC__)) -#include -#endif - -#include - -#include "wx/motif/private.h" - -// Yuck this is really BOTH site and platform dependent -// so we should use some other strategy! -#ifdef sun -# define DEFAULT_XRESOURCE_DIR "/usr/openwin/lib/app-defaults" -#else -# define DEFAULT_XRESOURCE_DIR "/usr/lib/X11/app-defaults" -#endif - -static char *GetIniFile (char *dest, const char *filename); - -extern wxList wxTopLevelWindows; - -// Get full hostname (eg. DoDo.BSn-Germany.crg.de) -bool wxGetHostName(char *buf, int maxSize) -{ -#if defined(__SVR4__) && !defined(__HPUX__) - return (sysinfo (SI_HOSTNAME, buf, maxSize) != -1); -#else /* BSD Sockets */ - char name[255]; - struct hostent *h; - - // Get hostname - if (gethostname (name, sizeof (name) / sizeof (char) - 1) == -1) - return FALSE; - // Get official full name of host - strncpy (buf - ,(h = gethostbyname (name)) != NULL ? h->h_name : name - ,maxSize - 1); - return TRUE; -#endif -} - -// Get user ID e.g. jacs -bool wxGetUserId(char *buf, int maxSize) -{ -#ifdef VMS - *buf = '\0'; // return empty string - return FALSE; -#else - struct passwd *who; - - if ((who = getpwuid (getuid ())) != NULL) - { - strncpy (buf, who->pw_name, maxSize - 1); - return TRUE; - } - return FALSE; -#endif -} - -// Get user name e.g. Julian Smart -bool wxGetUserName(char *buf, int maxSize) -{ -#ifdef VMS - *buf = '\0'; // return empty string - return FALSE; -#else - struct passwd *who; - - if ((who = getpwuid (getuid ())) != NULL) - { - strncpy (buf, who->pw_gecos, maxSize - 1); - return TRUE; - } - return FALSE; -#endif -} - -int wxKill(long pid, int sig) -{ - int unixSignal = 0; - switch (sig) - { - case wxSIGTERM: - default: - unixSignal = SIGTERM; - } - return kill( (int)pid, unixSignal); -} - -// -// Execute a program in an Interactive Shell -// -bool wxShell(const wxString& command) -{ -#ifdef VMS - return(FALSE); -#else -#if defined(sun) || defined(__ultrix) || defined(__bsdi__) - pid_t pid = vfork (); -#else - pid_t pid = fork (); -#endif - switch( pid ) { - case -1: /* error */ - return(FALSE); - case 0: /* child */ - // Generic X windows terminal window - if (command != "") - execlp("xterm", "-e", (char *) (const char*) command, NULL); - else - execlp("xterm", NULL); - _exit(127); - } - return TRUE; -#endif - // End VMS -} - -// Get free memory in bytes, or -1 if cannot determine amount (e.g. on UNIX) -long wxGetFreeMemory() -{ - return -1; -} - -void wxSleep(int nSecs) -{ - sleep(nSecs); -} - -// Consume all events until no more left -void wxFlushEvents() -{ - Display *display = (Display*) wxGetDisplay(); - - XSync (display, FALSE); - XEvent event; - // XtAppPending returns availability of events AND timers/inputs, which - // are processed via callbacks, so XtAppNextEvent will not return if - // there are no events. So added '& XtIMXEvent' - Sergey. - while (XtAppPending ((XtAppContext) wxTheApp->GetAppContext()) & XtIMXEvent) - { - XFlush (XtDisplay ((Widget) wxTheApp->GetTopLevelWidget())); - // Jan Lessner: works better when events are non-X events - XtAppProcessEvent((XtAppContext) wxTheApp->GetAppContext(), XtIMXEvent); - } -} - -// Output a debug message, in a system dependent fashion. -void wxDebugMsg(const char *fmt ...) -{ - va_list ap; - char buffer[BUFSIZ]; - - if (!wxTheApp->GetWantDebugOutput()) - return ; - - va_start (ap, fmt); - - vsprintf (buffer, fmt, ap); - cerr << buffer; - - va_end (ap); -} - -// Non-fatal error: pop up message box and (possibly) continue -void wxError(const wxString& msg, const wxString& title) -{ - cerr << (const char*) title << ": " << (const char*) msg << "\n"; -} - -// Fatal error: pop up message box and abort -void wxFatalError(const wxString& msg, const wxString& title) -{ - cerr << (const char*) title << ": " << (const char*) msg << "\n"; - exit (1); -} - -// Emit a beeeeeep -void wxBell() -{ - // Use current setting for the bell - XBell ((Display*) wxGetDisplay(), 0); -} - -int wxGetOsVersion(int *majorVsn, int *minorVsn) -{ - // TODO - // This code is WRONG!! Does NOT return the - // Motif version of the libs but the X protocol - // version! @@@@@ Fix ME!!!!!!!!! - Display *display = XtDisplay ((Widget) wxTheApp->GetTopLevelWidget()); - if (majorVsn) - *majorVsn = ProtocolVersion (display); - if (minorVsn) - *minorVsn = ProtocolRevision (display); - return wxMOTIF_X; -} - -// Reading and writing resources (eg WIN.INI, .Xdefaults) -#if wxUSE_RESOURCES - -static char *GetResourcePath(char *buf, const char *name, bool create = FALSE) -{ - if (create && wxFileExists (name) ) { - strcpy(buf, name); - return buf; // Exists so ... - } - - if (*name == '/') - strcpy(buf, name); - else { - // Put in standard place for resource files if not absolute - strcpy (buf, DEFAULT_XRESOURCE_DIR); - strcat (buf, "/"); - strcat (buf, (const char*) wxFileNameFromPath (name)); - } - - if (create) { - // Touch the file to create it - FILE *fd = fopen (buf, "w"); - if (fd) fclose (fd); - } - return buf; -} - -/* -* We have a cache for writing different resource files, -* which will only get flushed when we call wxFlushResources(). -* Build up a list of resource databases waiting to be written. -* -*/ - -wxList wxResourceCache (wxKEY_STRING); - -void -wxFlushResources (void) -{ - char nameBuffer[512]; - - wxNode *node = wxResourceCache.First (); - while (node) - { - const char *file = node->GetKeyString(); - // If file doesn't exist, create it first. - (void)GetResourcePath(nameBuffer, file, TRUE); - - XrmDatabase database = (XrmDatabase) node->Data (); - XrmPutFileDatabase (database, nameBuffer); - XrmDestroyDatabase (database); - wxNode *next = node->Next (); - delete node; - node = next; - } -} - -static XrmDatabase wxResourceDatabase = 0; - -void wxXMergeDatabases (wxApp * theApp, Display * display); - -bool wxWriteResource(const wxString& section, const wxString& entry, const wxString& value, const wxString& file) -{ - char buffer[500]; - - (void) GetIniFile (buffer, file); - - XrmDatabase database; - wxNode *node = wxResourceCache.Find (buffer); - if (node) - database = (XrmDatabase) node->Data (); - else - { - database = XrmGetFileDatabase (buffer); - wxResourceCache.Append (buffer, (wxObject *) database); - } - - char resName[300]; - strcpy (resName, (const char*) section); - strcat (resName, "."); - strcat (resName, (const char*) entry); - - XrmPutStringResource (&database, resName, value); - return TRUE; -} - -bool wxWriteResource(const wxString& section, const wxString& entry, float value, const wxString& file) -{ - char buf[50]; - sprintf(buf, "%.4f", value); - return wxWriteResource(section, entry, buf, file); -} - -bool wxWriteResource(const wxString& section, const wxString& entry, long value, const wxString& file) -{ - char buf[50]; - sprintf(buf, "%ld", value); - return wxWriteResource(section, entry, buf, file); -} - -bool wxWriteResource(const wxString& section, const wxString& entry, int value, const wxString& file) -{ - char buf[50]; - sprintf(buf, "%d", value); - return wxWriteResource(section, entry, buf, file); -} - -bool wxGetResource(const wxString& section, const wxString& entry, char **value, const wxString& file) -{ - if (!wxResourceDatabase) - { - Display *display = (Display*) wxGetDisplay(); - wxXMergeDatabases (wxTheApp, display); - } - - XrmDatabase database; - - if (file != "") - { - char buffer[500]; - - // Is this right? Trying to get it to look in the user's - // home directory instead of current directory -- JACS - (void) GetIniFile (buffer, file); - - wxNode *node = wxResourceCache.Find (buffer); - if (node) - database = (XrmDatabase) node->Data (); - else - { - database = XrmGetFileDatabase (buffer); - wxResourceCache.Append (buffer, (wxObject *) database); - } - } - else - database = wxResourceDatabase; - - XrmValue xvalue; - char *str_type[20]; - char buf[150]; - strcpy (buf, section); - strcat (buf, "."); - strcat (buf, entry); - - Bool success = XrmGetResource (database, buf, "*", str_type, - &xvalue); - // Try different combinations of upper/lower case, just in case... - if (!success) - { - buf[0] = (isupper (buf[0]) ? tolower (buf[0]) : toupper (buf[0])); - success = XrmGetResource (database, buf, "*", str_type, - &xvalue); - } - if (success) - { - if (*value) - delete[] *value; - - *value = new char[xvalue.size + 1]; - strncpy (*value, xvalue.addr, (int) xvalue.size); - return TRUE; - } - return FALSE; -} - -bool wxGetResource(const wxString& section, const wxString& entry, float *value, const wxString& file) -{ - char *s = NULL; - bool succ = wxGetResource(section, entry, (char **)&s, file); - if (succ) - { - *value = (float)strtod(s, NULL); - delete[] s; - return TRUE; - } - else return FALSE; -} - -bool wxGetResource(const wxString& section, const wxString& entry, long *value, const wxString& file) -{ - char *s = NULL; - bool succ = wxGetResource(section, entry, (char **)&s, file); - if (succ) - { - *value = strtol(s, NULL, 10); - delete[] s; - return TRUE; - } - else return FALSE; -} - -bool wxGetResource(const wxString& section, const wxString& entry, int *value, const wxString& file) -{ - char *s = NULL; - bool succ = wxGetResource(section, entry, (char **)&s, file); - if (succ) - { - // Handle True, False here - // True, Yes, Enables, Set or Activated - if (*s == 'T' || *s == 'Y' || *s == 'E' || *s == 'S' || *s == 'A') - *value = TRUE; - // False, No, Disabled, Reset, Cleared, Deactivated - else if (*s == 'F' || *s == 'N' || *s == 'D' || *s == 'R' || *s == 'C') - *value = FALSE; - // Handle as Integer - else - *value = (int) strtol (s, NULL, 10); - delete[] s; - return TRUE; - } - else - return FALSE; -} - -void wxXMergeDatabases (wxApp * theApp, Display * display) -{ - XrmDatabase homeDB, serverDB, applicationDB; - char filenamebuf[1024]; - - char *filename = &filenamebuf[0]; - char *environment; - wxString classname = theApp->GetClassName(); - char name[256]; - (void) strcpy (name, "/usr/lib/X11/app-defaults/"); - (void) strcat (name, (const char*) classname); - - /* Get application defaults file, if any */ - applicationDB = XrmGetFileDatabase (name); - (void) XrmMergeDatabases (applicationDB, &wxResourceDatabase); - - /* Merge server defaults, created by xrdb, loaded as a property of the root - * window when the server initializes and loaded into the display - * structure on XOpenDisplay; - * if not defined, use .Xdefaults - */ - - if (XResourceManagerString (display) != NULL) - { - serverDB = XrmGetStringDatabase (XResourceManagerString (display)); - } - else - { - (void) GetIniFile (filename, NULL); - serverDB = XrmGetFileDatabase (filename); - } - XrmMergeDatabases (serverDB, &wxResourceDatabase); - - /* Open XENVIRONMENT file, or if not defined, the .Xdefaults, - * and merge into existing database - */ - - if ((environment = getenv ("XENVIRONMENT")) == NULL) - { - size_t len; - environment = GetIniFile (filename, NULL); - len = strlen (environment); -#if defined(__SVR4__) && !defined(__HPUX__) - (void) sysinfo (SI_HOSTNAME, environment + len, 1024 - len); -#else - (void) gethostname (environment + len, 1024 - len); -#endif - } - homeDB = XrmGetFileDatabase (environment); - XrmMergeDatabases (homeDB, &wxResourceDatabase); -} - -#if 0 - -/* -* Not yet used but may be useful. -* -*/ -void -wxSetDefaultResources (const Widget w, const char **resourceSpec, const char *name) -{ - int i; - Display *dpy = XtDisplay (w); // Retrieve the display pointer - - XrmDatabase rdb = NULL; // A resource data base - - // Create an empty resource database - rdb = XrmGetStringDatabase (""); - - // Add the Component resources, prepending the name of the component - - i = 0; - while (resourceSpec[i] != NULL) - { - char buf[1000]; - - sprintf (buf, "*%s%s", name, resourceSpec[i++]); - XrmPutLineResource (&rdb, buf); - } - - // Merge them into the Xt database, with lowest precendence - - if (rdb) - { -#if (XlibSpecificationRelease>=5) - XrmDatabase db = XtDatabase (dpy); - XrmCombineDatabase (rdb, &db, FALSE); -#else - XrmMergeDatabases (dpy->db, &rdb); - dpy->db = rdb; -#endif - } -} -#endif -// 0 - -#endif // wxUSE_RESOURCES - -static int wxBusyCursorCount = 0; - -// Helper function -static void -wxXSetBusyCursor (wxWindow * win, wxCursor * cursor) -{ - Display *display = (Display*) win->GetXDisplay(); - - Window xwin = (Window) win->GetXWindow(); - XSetWindowAttributes attrs; - - if (cursor) - { - attrs.cursor = (Cursor) cursor->GetXCursor(display); - } - else - { - // Restore old cursor - if (win->GetCursor()->Ok()) - attrs.cursor = (Cursor) win->GetCursor()->GetXCursor(display); - else - attrs.cursor = None; - } - if (xwin) - XChangeWindowAttributes (display, xwin, CWCursor, &attrs); - - XFlush (display); - - for(wxNode *node = win->GetChildren().First (); node; node = node->Next()) - { - wxWindow *child = (wxWindow *) node->Data (); - wxXSetBusyCursor (child, cursor); - } -} - -// Set the cursor to the busy cursor for all windows -void wxBeginBusyCursor(wxCursor *cursor) -{ - wxBusyCursorCount++; - if (wxBusyCursorCount == 1) - { - for(wxNode *node = wxTopLevelWindows.First (); node; node = node->Next()) - { - wxWindow *win = (wxWindow *) node->Data (); - wxXSetBusyCursor (win, cursor); - } - } -} - -// Restore cursor to normal -void wxEndBusyCursor() -{ - if (wxBusyCursorCount == 0) - return; - - wxBusyCursorCount--; - if (wxBusyCursorCount == 0) - { - for(wxNode *node = wxTopLevelWindows.First (); node; node = node->Next()) - { - wxWindow *win = (wxWindow *) node->Data (); - wxXSetBusyCursor (win, NULL); - } - } -} - -// TRUE if we're between the above two calls -bool wxIsBusy() -{ - return (wxBusyCursorCount > 0); -} - -const char* wxGetHomeDir( wxString *home ) -{ - *home = wxGetUserHome( wxString() ); - if (home->IsNull()) *home = "/"; - return *home; -}; - -char *wxGetUserHome (const wxString& user) -{ -#ifdef VMS - return(NULL); -#else - struct passwd *who = NULL; - - if (user == "") { - register char *ptr; - - if ((ptr = getenv("HOME")) != NULL) - return ptr; - if ((ptr = getenv("USER")) != NULL || - (ptr = getenv("LOGNAME")) != NULL) - { - who = getpwnam( ptr ); - } - // We now make sure the the user exists! - if (who == NULL) - who = getpwuid( getuid() ); - } else - who = getpwnam ((const char*) user); - - return who ? who->pw_dir : (char*) NULL; -#endif - // ifdef VMS -} - -// Check whether this window wants to process messages, e.g. Stop button -// in long calculations. -bool wxCheckForInterrupt(wxWindow *wnd) -{ - if(wnd){ - Display *dpy=(Display*) wnd->GetXDisplay(); - Window win=(Window) wnd->GetXWindow(); - XEvent event; - XFlush(dpy); - if(wnd->GetMainWidget()){ - XmUpdateDisplay((Widget)(wnd->GetMainWidget())); - } - while(XCheckMaskEvent(dpy, - ButtonPressMask|ButtonReleaseMask|ButtonMotionMask| - PointerMotionMask|KeyPressMask|KeyReleaseMask, - &event)){ - if(event.xany.window==win) - XtDispatchEvent(&event); - // else - // XBell(dpy,50); - } - return TRUE;//*** temporary? - } - else{ - wxMessageBox("wnd==NULL !!!"); - return FALSE;//*** temporary? - } -} - -void wxGetMousePosition( int* x, int* y ) -{ - XMotionEvent xev; - Window root, child; - XQueryPointer((Display*) wxGetDisplay(), - DefaultRootWindow((Display*) wxGetDisplay()), &root, &child, - &(xev.x_root), &(xev.y_root), - &(xev.x), &(xev.y), - &(xev.state)); - *x = xev.x_root; - *y = xev.y_root; -}; - -// Return TRUE if we have a colour display -bool wxColourDisplay() -{ - Display *dpy = (Display*) wxGetDisplay(); - - if (DefaultDepth (dpy, DefaultScreen (dpy)) < 2) - return FALSE; - else - return TRUE; -} - -// Returns depth of screen -int wxDisplayDepth() -{ - Display *dpy = (Display*) wxGetDisplay(); - return DefaultDepth (dpy, DefaultScreen (dpy)); -} - -// Get size of display -void wxDisplaySize(int *width, int *height) -{ - Display *dpy = (Display*) wxGetDisplay(); - - *width = DisplayWidth (dpy, DefaultScreen (dpy)); - *height = DisplayHeight (dpy, DefaultScreen (dpy)); -} - -/* Configurable display in Motif */ -static WXDisplay *gs_currentDisplay = NULL; -static wxString gs_displayName; - -WXDisplay *wxGetDisplay() -{ - if (gs_currentDisplay) - return gs_currentDisplay; - - if (wxTheApp && wxTheApp->GetTopLevelWidget()) - return XtDisplay ((Widget) wxTheApp->GetTopLevelWidget()); - else if (wxTheApp) - return wxTheApp->GetInitialDisplay(); - else - return (WXDisplay*) NULL; -} - -bool wxSetDisplay(const wxString& display_name) -{ - gs_displayName = display_name; - - if (display_name.IsNull() || display_name.IsEmpty()) - { - gs_currentDisplay = NULL; - return TRUE; - } - else - { - Cardinal argc = 0; - - Display *display = XtOpenDisplay((XtAppContext) wxTheApp->GetAppContext(), - (const char*) display_name, - (const char*) wxTheApp->GetAppName(), - (const char*) wxTheApp->GetClassName(), - NULL, -# if XtSpecificationRelease < 5 - 0, &argc, NULL); -# else - 0, (int *)&argc, NULL); -# endif - - if (display) - { - gs_currentDisplay = (WXDisplay*) display; - return TRUE; - } else - return FALSE; - } - return FALSE; -} - -wxString wxGetDisplayName() -{ - return gs_displayName; -} - -// Find the letter corresponding to the mnemonic, for Motif -char wxFindMnemonic (const char *s) -{ - char mnem = 0; - int len = strlen (s); - int i; - for (i = 0; i < len; i++) - { - if (s[i] == '&') - { - // Carefully handle && - if ((i + 1) <= len && s[i + 1] == '&') - i++; - else - { - mnem = s[i + 1]; - break; - } - } - } - return mnem; -} - -char * wxFindAccelerator (char *s) -{ - // The accelerator text is after the \t char. - while (*s && *s != '\t') - s++; - if (*s == '\0') - return (NULL); - s++; - /* - Now we need to format it as X standard: - - input output - - F7 --> F7 - Ctrl+N --> CtrlN - Alt+k --> Metak - Ctrl+Shift+A --> Ctrl ShiftA - - */ - - wxBuffer[0] = '\0'; - char *tmp = copystring (s); - s = tmp; - char *p = s; - - while (1) - { - while (*p && *p != '+') - p++; - if (*p) - { - *p = '\0'; - if (wxBuffer[0]) - strcat (wxBuffer, " "); - if (strcmp (s, "Alt")) - strcat (wxBuffer, s); - else - strcat (wxBuffer, "Meta"); - s = p + 1; - p = s; - } - else - { - strcat (wxBuffer, ""); - strcat (wxBuffer, s); - break; - } - } - delete[]tmp; - return wxBuffer; -} - -XmString wxFindAcceleratorText (char *s) -{ - // The accelerator text is after the \t char. - while (*s && *s != '\t') - s++; - if (*s == '\0') - return (NULL); - s++; - XmString text = XmStringCreateSimple (s); - return text; -} - -#include - -int wxCharCodeXToWX(KeySym keySym) -{ - int id; - switch (keySym) { - case XK_Shift_L: - case XK_Shift_R: - id = WXK_SHIFT; break; - case XK_Control_L: - case XK_Control_R: - id = WXK_CONTROL; break; - case XK_BackSpace: - id = WXK_BACK; break; - case XK_Delete: - id = WXK_DELETE; break; - case XK_Clear: - id = WXK_CLEAR; break; - case XK_Tab: - id = WXK_TAB; break; - case XK_numbersign: - id = '#'; break; - case XK_Return: - id = WXK_RETURN; break; - case XK_Escape: - id = WXK_ESCAPE; break; - case XK_Pause: - case XK_Break: - id = WXK_PAUSE; break; - case XK_Num_Lock: - id = WXK_NUMLOCK; break; - case XK_Scroll_Lock: - id = WXK_SCROLL; break; - - case XK_Home: - id = WXK_HOME; break; - case XK_End: - id = WXK_END; break; - case XK_Left: - id = WXK_LEFT; break; - case XK_Right: - id = WXK_RIGHT; break; - case XK_Up: - id = WXK_UP; break; - case XK_Down: - id = WXK_DOWN; break; - case XK_Next: - id = WXK_NEXT; break; - case XK_Prior: - id = WXK_PRIOR; break; - case XK_Menu: - id = WXK_MENU; break; - case XK_Select: - id = WXK_SELECT; break; - case XK_Cancel: - id = WXK_CANCEL; break; - case XK_Print: - id = WXK_PRINT; break; - case XK_Execute: - id = WXK_EXECUTE; break; - case XK_Insert: - id = WXK_INSERT; break; - case XK_Help: - id = WXK_HELP; break; - - case XK_KP_Multiply: - id = WXK_MULTIPLY; break; - case XK_KP_Add: - id = WXK_ADD; break; - case XK_KP_Subtract: - id = WXK_SUBTRACT; break; - case XK_KP_Divide: - id = WXK_DIVIDE; break; - case XK_KP_Decimal: - id = WXK_DECIMAL; break; - case XK_KP_Equal: - id = '='; break; - case XK_KP_Space: - id = ' '; break; - case XK_KP_Tab: - id = WXK_TAB; break; - case XK_KP_Enter: - id = WXK_RETURN; break; - case XK_KP_0: - id = WXK_NUMPAD0; break; - case XK_KP_1: - id = WXK_NUMPAD1; break; - case XK_KP_2: - id = WXK_NUMPAD2; break; - case XK_KP_3: - id = WXK_NUMPAD3; break; - case XK_KP_4: - id = WXK_NUMPAD4; break; - case XK_KP_5: - id = WXK_NUMPAD5; break; - case XK_KP_6: - id = WXK_NUMPAD6; break; - case XK_KP_7: - id = WXK_NUMPAD7; break; - case XK_KP_8: - id = WXK_NUMPAD8; break; - case XK_KP_9: - id = WXK_NUMPAD9; break; - case XK_F1: - id = WXK_F1; break; - case XK_F2: - id = WXK_F2; break; - case XK_F3: - id = WXK_F3; break; - case XK_F4: - id = WXK_F4; break; - case XK_F5: - id = WXK_F5; break; - case XK_F6: - id = WXK_F6; break; - case XK_F7: - id = WXK_F7; break; - case XK_F8: - id = WXK_F8; break; - case XK_F9: - id = WXK_F9; break; - case XK_F10: - id = WXK_F10; break; - case XK_F11: - id = WXK_F11; break; - case XK_F12: - id = WXK_F12; break; - case XK_F13: - id = WXK_F13; break; - case XK_F14: - id = WXK_F14; break; - case XK_F15: - id = WXK_F15; break; - case XK_F16: - id = WXK_F16; break; - case XK_F17: - id = WXK_F17; break; - case XK_F18: - id = WXK_F18; break; - case XK_F19: - id = WXK_F19; break; - case XK_F20: - id = WXK_F20; break; - case XK_F21: - id = WXK_F21; break; - case XK_F22: - id = WXK_F22; break; - case XK_F23: - id = WXK_F23; break; - case XK_F24: - id = WXK_F24; break; - default: - id = (keySym <= 255) ? (int)keySym : -1; - } // switch - return id; -} - -KeySym wxCharCodeWXToX(int id) -{ - KeySym keySym; - - switch (id) { - case WXK_CANCEL: keySym = XK_Cancel; break; - case WXK_BACK: keySym = XK_BackSpace; break; - case WXK_TAB: keySym = XK_Tab; break; - case WXK_CLEAR: keySym = XK_Clear; break; - case WXK_RETURN: keySym = XK_Return; break; - case WXK_SHIFT: keySym = XK_Shift_L; break; - case WXK_CONTROL: keySym = XK_Control_L; break; - case WXK_MENU : keySym = XK_Menu; break; - case WXK_PAUSE: keySym = XK_Pause; break; - case WXK_ESCAPE: keySym = XK_Escape; break; - case WXK_SPACE: keySym = ' '; break; - case WXK_PRIOR: keySym = XK_Prior; break; - case WXK_NEXT : keySym = XK_Next; break; - case WXK_END: keySym = XK_End; break; - case WXK_HOME : keySym = XK_Home; break; - case WXK_LEFT : keySym = XK_Left; break; - case WXK_UP: keySym = XK_Up; break; - case WXK_RIGHT: keySym = XK_Right; break; - case WXK_DOWN : keySym = XK_Down; break; - case WXK_SELECT: keySym = XK_Select; break; - case WXK_PRINT: keySym = XK_Print; break; - case WXK_EXECUTE: keySym = XK_Execute; break; - case WXK_INSERT: keySym = XK_Insert; break; - case WXK_DELETE: keySym = XK_Delete; break; - case WXK_HELP : keySym = XK_Help; break; - case WXK_NUMPAD0: keySym = XK_KP_0; break; - case WXK_NUMPAD1: keySym = XK_KP_1; break; - case WXK_NUMPAD2: keySym = XK_KP_2; break; - case WXK_NUMPAD3: keySym = XK_KP_3; break; - case WXK_NUMPAD4: keySym = XK_KP_4; break; - case WXK_NUMPAD5: keySym = XK_KP_5; break; - case WXK_NUMPAD6: keySym = XK_KP_6; break; - case WXK_NUMPAD7: keySym = XK_KP_7; break; - case WXK_NUMPAD8: keySym = XK_KP_8; break; - case WXK_NUMPAD9: keySym = XK_KP_9; break; - case WXK_MULTIPLY: keySym = XK_KP_Multiply; break; - case WXK_ADD: keySym = XK_KP_Add; break; - case WXK_SUBTRACT: keySym = XK_KP_Subtract; break; - case WXK_DECIMAL: keySym = XK_KP_Decimal; break; - case WXK_DIVIDE: keySym = XK_KP_Divide; break; - case WXK_F1: keySym = XK_F1; break; - case WXK_F2: keySym = XK_F2; break; - case WXK_F3: keySym = XK_F3; break; - case WXK_F4: keySym = XK_F4; break; - case WXK_F5: keySym = XK_F5; break; - case WXK_F6: keySym = XK_F6; break; - case WXK_F7: keySym = XK_F7; break; - case WXK_F8: keySym = XK_F8; break; - case WXK_F9: keySym = XK_F9; break; - case WXK_F10: keySym = XK_F10; break; - case WXK_F11: keySym = XK_F11; break; - case WXK_F12: keySym = XK_F12; break; - case WXK_F13: keySym = XK_F13; break; - case WXK_F14: keySym = XK_F14; break; - case WXK_F15: keySym = XK_F15; break; - case WXK_F16: keySym = XK_F16; break; - case WXK_F17: keySym = XK_F17; break; - case WXK_F18: keySym = XK_F18; break; - case WXK_F19: keySym = XK_F19; break; - case WXK_F20: keySym = XK_F20; break; - case WXK_F21: keySym = XK_F21; break; - case WXK_F22: keySym = XK_F22; break; - case WXK_F23: keySym = XK_F23; break; - case WXK_F24: keySym = XK_F24; break; - case WXK_NUMLOCK: keySym = XK_Num_Lock; break; - case WXK_SCROLL: keySym = XK_Scroll_Lock; break; - default: keySym = id <= 255 ? (KeySym)id : 0; - } // switch - return keySym; -} - -// Read $HOME for what it says is home, if not -// read $USER or $LOGNAME for user name else determine -// the Real User, then determine the Real home dir. -static char * GetIniFile (char *dest, const char *filename) -{ - char *home = NULL; - if (filename && wxIsAbsolutePath(filename)) - { - strcpy(dest, filename); - } - else if ((home = wxGetUserHome("")) != NULL) - { - strcpy(dest, home); - if (dest[strlen(dest) - 1] != '/') - strcat (dest, "/"); - if (filename == NULL) - { - if ((filename = getenv ("XENVIRONMENT")) == NULL) - filename = ".Xdefaults"; - } - else if (*filename != '.') - strcat (dest, "."); - strcat (dest, filename); - } else - { - dest[0] = '\0'; - } - return dest; -} - -/* -* Some colour manipulation routines -*/ - -void wxHSVToXColor(wxHSV *hsv,XColor *rgb) -{ - int h = hsv->h; - int s = hsv->s; - int v = hsv->v; - int r, g, b; - int i, f; - int p, q, t; - s = (s * wxMAX_RGB) / wxMAX_SV; - v = (v * wxMAX_RGB) / wxMAX_SV; - if (h == 360) h = 0; - if (s == 0) { h = 0; r = g = b = v; } - i = h / 60; - f = h % 60; - p = v * (wxMAX_RGB - s) / wxMAX_RGB; - q = v * (wxMAX_RGB - s * f / 60) / wxMAX_RGB; - t = v * (wxMAX_RGB - s * (60 - f) / 60) / wxMAX_RGB; - switch (i) - { - case 0: r = v, g = t, b = p; break; - case 1: r = q, g = v, b = p; break; - case 2: r = p, g = v, b = t; break; - case 3: r = p, g = q, b = v; break; - case 4: r = t, g = p, b = v; break; - case 5: r = v, g = p, b = q; break; - } - rgb->red = r << 8; - rgb->green = g << 8; - rgb->blue = b << 8; -} - -void wxXColorToHSV(wxHSV *hsv,XColor *rgb) -{ - int r = rgb->red >> 8; - int g = rgb->green >> 8; - int b = rgb->blue >> 8; - int maxv = wxMax3(r, g, b); - int minv = wxMin3(r, g, b); - int h, s, v; - v = maxv; - if (maxv) s = (maxv - minv) * wxMAX_RGB / maxv; - else s = 0; - if (s == 0) h = 0; - else - { - int rc, gc, bc, hex; - rc = (maxv - r) * wxMAX_RGB / (maxv - minv); - gc = (maxv - g) * wxMAX_RGB / (maxv - minv); - bc = (maxv - b) * wxMAX_RGB / (maxv - minv); - if (r == maxv) { h = bc - gc, hex = 0; } - else if (g == maxv) { h = rc - bc, hex = 2; } - else if (b == maxv) { h = gc - rc, hex = 4; } - h = hex * 60 + (h * 60 / wxMAX_RGB); - if (h < 0) h += 360; - } - hsv->h = h; - hsv->s = (s * wxMAX_SV) / wxMAX_RGB; - hsv->v = (v * wxMAX_SV) / wxMAX_RGB; -} - -void wxAllocNearestColor(Display *d,Colormap cmp,XColor *xc) -{ - int llp; - - int screen = DefaultScreen(d); - int num_colors = DisplayCells(d,screen); - - XColor *color_defs = new XColor[num_colors]; - for(llp = 0;llp < num_colors;llp++) color_defs[llp].pixel = llp; - XQueryColors(d,cmp,color_defs,num_colors); - - wxHSV hsv_defs, hsv; - wxXColorToHSV(&hsv,xc); - - int diff, min_diff, pixel = 0; - - for(llp = 0;llp < num_colors;llp++) - { - wxXColorToHSV(&hsv_defs,&color_defs[llp]); - diff = wxSIGN(wxH_WEIGHT * (hsv.h - hsv_defs.h)) + - wxSIGN(wxS_WEIGHT * (hsv.s - hsv_defs.s)) + - wxSIGN(wxV_WEIGHT * (hsv.v - hsv_defs.v)); - if (llp == 0) min_diff = diff; - if (min_diff > diff) { min_diff = diff; pixel = llp; } - if (min_diff == 0) break; - } - - xc -> red = color_defs[pixel].red; - xc -> green = color_defs[pixel].green; - xc -> blue = color_defs[pixel].blue; - xc -> flags = DoRed | DoGreen | DoBlue; - if (!XAllocColor(d,cmp,xc)) - cout << "wxAllocNearestColor : Warning : Cannot find nearest color !\n"; - - delete[] color_defs; -} - -void wxAllocColor(Display *d,Colormap cmp,XColor *xc) -{ - if (!XAllocColor(d,cmp,xc)) - { - // cout << "wxAllocColor : Warning : Can not allocate color, attempt find nearest !\n"; - wxAllocNearestColor(d,cmp,xc); - } -} - - -// These functions duplicate those in wxWindow, but are needed -// for use outside of wxWindow (e.g. wxMenu, wxMenuBar). - -// Change a widget's foreground and background colours. - -void wxDoChangeForegroundColour(WXWidget widget, wxColour& foregroundColour) -{ - // When should we specify the foreground, if it's calculated - // by wxComputeColours? - // Solution: say we start with the default (computed) foreground colour. - // If we call SetForegroundColour explicitly for a control or window, - // then the foreground is changed. - // Therefore SetBackgroundColour computes the foreground colour, and - // SetForegroundColour changes the foreground colour. The ordering is - // important. - - XtVaSetValues ((Widget) widget, - XmNforeground, foregroundColour.AllocColour(XtDisplay((Widget) widget)), - NULL); -} - -void wxDoChangeBackgroundColour(WXWidget widget, wxColour& backgroundColour, bool changeArmColour) -{ - wxComputeColours (XtDisplay((Widget) widget), & backgroundColour, - (wxColour*) NULL); - - XtVaSetValues ((Widget) widget, - XmNbackground, g_itemColors[wxBACK_INDEX].pixel, - XmNtopShadowColor, g_itemColors[wxTOPS_INDEX].pixel, - XmNbottomShadowColor, g_itemColors[wxBOTS_INDEX].pixel, - XmNforeground, g_itemColors[wxFORE_INDEX].pixel, - NULL); - - if (changeArmColour) - XtVaSetValues ((Widget) widget, - XmNarmColor, g_itemColors[wxSELE_INDEX].pixel, - NULL); -} - - diff --git a/src/motif/utilsexc.cpp b/src/motif/utilsexc.cpp deleted file mode 100644 index ed134bd874..0000000000 --- a/src/motif/utilsexc.cpp +++ /dev/null @@ -1,217 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: utilsexec.cpp -// Purpose: Execution-related utilities -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -// #pragma implementation -#endif - -#include "wx/utils.h" -#include "wx/app.h" - -#include -#include -#include -#include - -#ifdef VMS -/*steve*/ -#ifdef __HIDE_FORBIDDEN_NAMES -#undefine __HIDE_FORBIDDEN_NAMES -#endif -#include -#ifdef VAX -/*because 'noshare' is not valid in vax C++*/ -#define CC$VAXCSHR 1 -#endif -#include -#define unlink DELETE - -#else - -#if defined(__AIX__) || defined(__xlC__) -#include -#include -#else -#ifndef __DATA_GENERAL__ -#include -#endif -#endif - -#include -#include -#include -#include - -#endif - -#ifdef __SVR4__ -#include -#endif - -#ifdef __SOLARIS__ -// somehow missing from sys/wait.h but in the system's docs -extern "C" -{ - pid_t wait4(pid_t pid, int *statusp, int options, struct rusage - *rusage); -} -#endif - -#include -#include - -#include - -struct wxLocalProcessData -{ - int pid, end_process; - wxProcess *process; -}; - -#ifdef __SOLARIS__ -// somehow missing from sys/wait.h but in the system's docs -extern "C" -{ - pid_t wait4(pid_t pid, int *statusp, int options, struct rusage - *rusage); -} -#endif - -void xt_notify_end_process(XtPointer client, int *fid, - XtInputId *id) -{ - wxLocalProcessData *process_data = (wxLocalProcessData *)client; - - int pid; - - pid = (process_data->pid > 0) ? process_data->pid : -(process_data->pid); - - /* wait4 is not part of any standard, use at own risk - * not sure what wait4 does, but wait3 seems to be closest, whats a digit ;-) - * --- offer@sgi.com */ -#if !defined(__sgi) && !defined(__SGI__) && !defined(__ALPHA__) && !defined(__SUNCC__) - wait4(process_data->pid, NULL, 0, NULL); -#else - wait3((int *) NULL, 0, (rusage *) NULL); -#endif - - XtRemoveInput(*id); - if (process_data->process) - process_data->process->OnTerminate(process_data->pid); - - process_data->end_process = TRUE; - - if (process_data->pid > 0) - delete process_data; - else - process_data->pid = 0; -} - -long wxExecute(char **argv, bool sync, wxProcess *handler) -{ -#ifdef VMS - return(0); -#else - if (*argv == NULL) - return 0; // Nothing??? - - int proc_link[2]; - if (pipe(proc_link)) - return 0; - - /* fork the process */ -#if defined(sun) || defined(__ultrix) || defined(__bsdi__) - pid_t pid = vfork (); -#else - pid_t pid = fork (); -#endif - - if (pid == -1) - { - return 0; - } - else if (pid == 0) - { - /* GUILHEM: Close all fds when sync == 0 */ - if (sync == 0) - for (int fd=0;fdend_process = 0; - process_data->process = handler; - process_data->pid = (sync) ? pid : -pid; - - close(proc_link[1]); - XtAppAddInput((XtAppContext) wxTheApp->GetAppContext(), proc_link[0], - (XtPointer *) XtInputReadMask, - (XtInputCallbackProc) xt_notify_end_process, - (XtPointer) process_data); - - if (sync) { - while (!process_data->end_process) - XtAppProcessEvent((XtAppContext) wxTheApp->GetAppContext(), XtIMAll); - - if (WIFEXITED(process_data->end_process) != 0) - return WEXITSTATUS(process_data->end_process); - } - - delete process_data; - - return pid; -#endif - // end VMS -} - -long wxExecute (const wxString& command, bool sync, wxProcess* handler) -{ -#ifdef VMS - return(0); -#else - if (command.IsNull() || command == "") - return 0; // Nothing to do - - // Run a program the recomended way under X (XView) - int argc = 0; - char *argv[127]; - char tmp[1024]; - const char *IFS = " \t\n"; - - // Build argument vector - strncpy (tmp, (const char*) command, sizeof (tmp) / sizeof (char) - 1); - tmp[sizeof (tmp) / sizeof (char) - 1] = '\0'; - argv[argc++] = strtok (tmp, IFS); - while ((argv[argc++] = strtok (NULL, IFS)) != NULL) - /* loop */ ; - - return wxExecute(argv, sync, handler); -#endif - // VMS -} diff --git a/src/motif/verti.xbm b/src/motif/verti.xbm deleted file mode 100644 index 2dd9dc4c05..0000000000 --- a/src/motif/verti.xbm +++ /dev/null @@ -1,6 +0,0 @@ -#define verti_width 15 -#define verti_height 15 -static char verti_bits[] = { - 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, - 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, - 0x84, 0x10, 0x84, 0x10, 0x84, 0x10}; diff --git a/src/motif/wave.cpp b/src/motif/wave.cpp deleted file mode 100644 index 5368adbdd0..0000000000 --- a/src/motif/wave.cpp +++ /dev/null @@ -1,61 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: wave.cpp -// Purpose: wxWave class implementation: optional -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "wave.h" -#endif - -#include "wx/object.h" -#include "wx/string.h" -#include "wx/motif/wave.h" - -wxWave::wxWave() - : m_waveData(NULL), m_waveLength(0), m_isResource(FALSE) -{ -} - -wxWave::wxWave(const wxString& sFileName, bool isResource) - : m_waveData(NULL), m_waveLength(0), m_isResource(FALSE) -{ - Create(sFileName, isResource); -} - - -wxWave::~wxWave() -{ - Free(); -} - -bool wxWave::Create(const wxString& fileName, bool isResource) -{ - Free(); - - // TODO - - return FALSE; -} - -bool wxWave::Play(bool async, bool looped) const -{ - if (!IsOk()) - return FALSE; - - // TODO - return FALSE; -} - -bool wxWave::Free() -{ - // TODO - return FALSE; -} - - diff --git a/src/motif/window.cpp b/src/motif/window.cpp deleted file mode 100644 index 139f5cced4..0000000000 --- a/src/motif/window.cpp +++ /dev/null @@ -1,3517 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: windows.cpp -// Purpose: wxWindow -// Author: Julian Smart -// Modified by: -// Created: 17/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "window.h" -#endif - -#include "wx/setup.h" -#include "wx/menu.h" -#include "wx/dc.h" -#include "wx/dcclient.h" -#include "wx/utils.h" -#include "wx/app.h" -#include "wx/panel.h" -#include "wx/layout.h" -#include "wx/dialog.h" -#include "wx/listbox.h" -#include "wx/button.h" -#include "wx/settings.h" -#include "wx/msgdlg.h" -#include "wx/frame.h" - -#include "wx/menuitem.h" -#include "wx/log.h" - -#if wxUSE_DRAG_AND_DROP -#include "wx/dnd.h" -#endif - -#include - -#include -#include -#include -#include -#include - -#include "wx/motif/private.h" - -#include - -#define SCROLL_MARGIN 4 -void wxCanvasRepaintProc (Widget, XtPointer, XmDrawingAreaCallbackStruct * cbs); -void wxCanvasInputEvent (Widget drawingArea, XtPointer data, XmDrawingAreaCallbackStruct * cbs); -void wxCanvasMotionEvent (Widget, XButtonEvent * event); -void wxCanvasEnterLeave (Widget drawingArea, XtPointer clientData, XCrossingEvent * event); -static void wxScrollBarCallback(Widget widget, XtPointer clientData, - XmScaleCallbackStruct *cbs); -void wxPanelItemEventHandler (Widget wid, - XtPointer client_data, - XEvent* event, - Boolean *continueToDispatch); - -#define event_left_is_down(x) ((x)->xbutton.state & Button1Mask) -#define event_middle_is_down(x) ((x)->xbutton.state & Button2Mask) -#define event_right_is_down(x) ((x)->xbutton.state & Button3Mask) - -extern wxList wxPendingDelete; - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxWindow, wxEvtHandler) - -BEGIN_EVENT_TABLE(wxWindow, wxEvtHandler) -EVT_CHAR(wxWindow::OnChar) -EVT_KEY_DOWN(wxWindow::OnKeyDown) -EVT_KEY_UP(wxWindow::OnKeyUp) -EVT_ERASE_BACKGROUND(wxWindow::OnEraseBackground) -EVT_SYS_COLOUR_CHANGED(wxWindow::OnSysColourChanged) -EVT_INIT_DIALOG(wxWindow::OnInitDialog) -EVT_IDLE(wxWindow::OnIdle) -END_EVENT_TABLE() - -#endif - - -// Constructor -wxWindow::wxWindow() -{ - // Generic - m_windowId = 0; - m_windowStyle = 0; - m_windowParent = NULL; - m_windowEventHandler = this; - m_windowName = ""; - m_windowCursor = *wxSTANDARD_CURSOR; - m_children = new wxList; - m_constraints = NULL; - m_constraintsInvolvedIn = NULL; - m_windowSizer = NULL; - m_sizerParent = NULL; - m_autoLayout = FALSE; - m_windowValidator = NULL; - m_defaultItem = NULL; - m_returnCode = 0; - m_caretWidth = 0; m_caretHeight = 0; - m_caretEnabled = FALSE; - m_caretShown = FALSE; - // m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOW) ; ; - m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE) ; - m_foregroundColour = *wxBLACK; - -#if wxUSE_DRAG_AND_DROP - m_pDropTarget = NULL; -#endif - m_clientObject = (wxClientData*) NULL; - m_clientData = NULL; - - /// Motif-specific - m_mainWidget = (WXWidget) 0; - m_button1Pressed = FALSE; - m_button2Pressed = FALSE; - m_button3Pressed = FALSE; - m_winCaptured = FALSE; - m_isShown = TRUE; - m_hScrollBar = (WXWidget) 0; - m_vScrollBar = (WXWidget) 0; - m_borderWidget = (WXWidget) 0; - m_scrolledWindow = (WXWidget) 0; - m_drawingArea = (WXWidget) 0; - m_hScroll = FALSE; - m_vScroll = FALSE; - m_backingPixmap = (WXPixmap) 0; - m_pixmapWidth = 0; - m_pixmapHeight = 0; - m_pixmapOffsetX = 0; - m_pixmapOffsetY = 0; - m_lastTS = 0; - m_lastButton = 0; - m_canAddEventHandler = FALSE; - m_scrollPosX = 0; - m_scrollPosY = 0; -} - -// Destructor -wxWindow::~wxWindow() -{ - //// Motif-specific - - if (GetMainWidget()) - DetachWidget(GetMainWidget()); // Removes event handlers - - // If m_drawingArea, we're a fully-fledged window with drawing area, scrollbars etc. (what wxCanvas used to be) - if (m_drawingArea) - { - // Destroy children before destroying self - DestroyChildren(); - - if (m_backingPixmap) - XFreePixmap (XtDisplay ((Widget) GetMainWidget()), (Pixmap) m_backingPixmap); - - Widget w = (Widget) m_drawingArea; - wxDeleteWindowFromTable(w); - - if (w) - XtDestroyWidget(w); - m_mainWidget = (WXWidget) 0; - - // Only if we're _really_ a canvas (not a dialog box/panel) - if (m_scrolledWindow) - { - wxDeleteWindowFromTable((Widget) m_scrolledWindow); - } - - if (m_hScrollBar) - { - XtUnmanageChild ((Widget) m_hScrollBar); - XtDestroyWidget ((Widget) m_hScrollBar); - } - if (m_vScrollBar) - { - XtUnmanageChild ((Widget) m_vScrollBar); - XtDestroyWidget ((Widget) m_vScrollBar); - } - if (m_scrolledWindow) - { - XtUnmanageChild ((Widget) m_scrolledWindow); - XtDestroyWidget ((Widget) m_scrolledWindow); - } - - if (m_borderWidget) - { - XtDestroyWidget ((Widget) m_borderWidget); - m_borderWidget = (WXWidget) 0; - } - } - - //// Generic stuff - - // Have to delete constraints/sizer FIRST otherwise - // sizers may try to look at deleted windows as they - // delete themselves. -#if wxUSE_CONSTRAINTS - DeleteRelatedConstraints(); - if (m_constraints) - { - // This removes any dangling pointers to this window - // in other windows' constraintsInvolvedIn lists. - UnsetConstraints(m_constraints); - delete m_constraints; - m_constraints = NULL; - } - if (m_windowSizer) - { - delete m_windowSizer; - m_windowSizer = NULL; - } - // If this is a child of a sizer, remove self from parent - if (m_sizerParent) - m_sizerParent->RemoveChild((wxWindow *)this); -#endif - - if (m_windowParent) - m_windowParent->RemoveChild(this); - - DestroyChildren(); - - // Destroy the window - if (GetMainWidget()) - { - wxDeleteWindowFromTable((Widget) GetMainWidget()); - XtDestroyWidget((Widget) GetMainWidget()); - SetMainWidget((WXWidget) NULL); - } - - delete m_children; - m_children = NULL; - - // Just in case the window has been Closed, but - // we're then deleting immediately: don't leave - // dangling pointers. - wxPendingDelete.DeleteObject(this); - - if ( m_windowValidator ) delete m_windowValidator; - if (m_clientObject) delete m_clientObject; - - ClearUpdateRects(); -} - -// Destroy the window (delayed, if a managed window) -bool wxWindow::Destroy() -{ - delete this; - return TRUE; -} - -// Constructor -bool wxWindow::Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - // Generic - m_windowId = 0; - m_windowStyle = 0; - m_windowParent = NULL; - m_windowEventHandler = this; - m_windowName = ""; - m_windowCursor = *wxSTANDARD_CURSOR; - m_constraints = NULL; - m_constraintsInvolvedIn = NULL; - m_windowSizer = NULL; - m_sizerParent = NULL; - m_autoLayout = FALSE; - m_windowValidator = NULL; -#if wxUSE_DRAG_AND_DROP - m_pDropTarget = NULL; -#endif - m_caretWidth = 0; m_caretHeight = 0; - m_caretEnabled = FALSE; - m_caretShown = FALSE; - m_minSizeX = -1; - m_minSizeY = -1; - m_maxSizeX = -1; - m_maxSizeY = -1; - m_defaultItem = NULL; - m_windowParent = NULL; - m_clientObject = (wxClientData*) NULL; - m_clientData = NULL; - - // Motif-specific - m_canAddEventHandler = FALSE; - m_mainWidget = (WXWidget) 0; - m_button1Pressed = FALSE; - m_button2Pressed = FALSE; - m_button3Pressed = FALSE; - m_winCaptured = FALSE; - m_isShown = TRUE; - m_hScrollBar = (WXWidget) 0; - m_vScrollBar = (WXWidget) 0; - m_borderWidget = (WXWidget) 0; - m_scrolledWindow = (WXWidget) 0; - m_drawingArea = (WXWidget) 0; - m_hScroll = FALSE; - m_vScroll = FALSE; - m_backingPixmap = (WXPixmap) 0; - m_pixmapWidth = 0; - m_pixmapHeight = 0; - m_pixmapOffsetX = 0; - m_pixmapOffsetY = 0; - m_scrollPosX = 0; - m_scrollPosY = 0; - - if (!parent) - return FALSE; - - if (parent) parent->AddChild(this); - - m_returnCode = 0; - - SetName(name); - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - // m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOW) ; ; - m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE) ; - m_foregroundColour = *wxBLACK; - - m_windowStyle = style; - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - //// TODO: we should probably optimize by only creating a - //// a drawing area if we have one or more scrollbars (wxVSCROLL/wxHSCROLL). - //// But for now, let's simplify things by always creating the - //// drawing area, since otherwise the translations are different. - - // New translations for getting mouse motion feedback - String translations = - ": wxCanvasMotionEvent() DrawingAreaInput() ManagerGadgetButtonMotion()\n\ -: wxCanvasMotionEvent() DrawingAreaInput() ManagerGadgetButtonMotion()\n\ -: wxCanvasMotionEvent() DrawingAreaInput() ManagerGadgetButtonMotion()\n\ -: wxCanvasMotionEvent() DrawingAreaInput() ManagerGadgetButtonMotion()\n\ -: DrawingAreaInput() ManagerGadgetArm()\n\ -: DrawingAreaInput() ManagerGadgetArm()\n\ -: DrawingAreaInput() ManagerGadgetArm()\n\ -: DrawingAreaInput() ManagerGadgetActivate()\n\ -: DrawingAreaInput() ManagerGadgetActivate()\n\ -: DrawingAreaInput() ManagerGadgetActivate()\n\ -: wxCanvasMotionEvent() DrawingAreaInput()\n\ -: wxCanvasMotionEvent() DrawingAreaInput()\n\ -: wxCanvasMotionEvent() DrawingAreaInput()\n\ -: DrawingAreaInput()"; - - XtActionsRec actions[1]; - actions[0].string = "wxCanvasMotionEvent"; - actions[0].proc = (XtActionProc) wxCanvasMotionEvent; - XtAppAddActions ((XtAppContext) wxTheApp->GetAppContext(), actions, 1); - - Widget parentWidget = (Widget) parent->GetClientWidget(); - if (style & wxBORDER) - m_borderWidget = (WXWidget) XtVaCreateManagedWidget ("canvasBorder", - xmFrameWidgetClass, parentWidget, - XmNshadowType, XmSHADOW_IN, - NULL); - - m_scrolledWindow = (WXWidget) XtVaCreateManagedWidget ("scrolledWindow", - xmScrolledWindowWidgetClass, m_borderWidget ? (Widget) m_borderWidget : parentWidget, - XmNresizePolicy, XmRESIZE_NONE, - XmNspacing, 0, - XmNscrollingPolicy, XmAPPLICATION_DEFINED, - // XmNscrollBarDisplayPolicy, XmAS_NEEDED, - NULL); - - XtTranslations ptr; - m_drawingArea = (WXWidget) XtVaCreateWidget ((char*) (const char*) name, - xmDrawingAreaWidgetClass, (Widget) m_scrolledWindow, - XmNunitType, XmPIXELS, - // XmNresizePolicy, XmRESIZE_ANY, - XmNresizePolicy, XmRESIZE_NONE, - XmNmarginHeight, 0, - XmNmarginWidth, 0, - XmNtranslations, ptr = XtParseTranslationTable (translations), - NULL); - /* - if (GetWindowStyleFlag() & wxOVERRIDE_KEY_TRANSLATIONS) - { - XtFree ((char *) ptr); - ptr = XtParseTranslationTable (": DrawingAreaInput()"); - XtOverrideTranslations ((Widget) m_drawingArea, ptr); - XtFree ((char *) ptr); - } - */ - - wxAddWindowToTable((Widget) m_drawingArea, this); - wxAddWindowToTable((Widget) m_scrolledWindow, this); - - /* - * This order is very important in Motif 1.2.1 - * - */ - - XtRealizeWidget ((Widget) m_scrolledWindow); - XtRealizeWidget ((Widget) m_drawingArea); - XtManageChild ((Widget) m_drawingArea); - - XtOverrideTranslations ((Widget) m_drawingArea, - ptr = XtParseTranslationTable (": resize()")); - XtFree ((char *) ptr); - - XtAddCallback ((Widget) m_drawingArea, XmNexposeCallback, (XtCallbackProc) wxCanvasRepaintProc, (XtPointer) this); - XtAddCallback ((Widget) m_drawingArea, XmNinputCallback, (XtCallbackProc) wxCanvasInputEvent, (XtPointer) this); - - /* TODO? - display = XtDisplay (scrolledWindow); - xwindow = XtWindow (drawingArea); - */ - - XtAddEventHandler ((Widget) m_drawingArea, PointerMotionHintMask | EnterWindowMask | LeaveWindowMask | FocusChangeMask, - False, (XtEventHandler) wxCanvasEnterLeave, (XtPointer) this); - - // Scrolled widget needs to have its colour changed or we get - // a little blue square where the scrollbars abutt - wxColour backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE); - DoChangeBackgroundColour(m_scrolledWindow, backgroundColour, TRUE); - DoChangeBackgroundColour(m_drawingArea, backgroundColour, TRUE); - - XmScrolledWindowSetAreas ((Widget) m_scrolledWindow, (Widget) 0, (Widget) 0, (Widget) m_drawingArea); - - /* - if (m_hScrollBar) - XtRealizeWidget ((Widget) m_hScrollBar); - if (m_vScrollBar) - XtRealizeWidget ((Widget) m_vScrollBar); - */ - - // Without this, the cursor may not be restored properly - // (e.g. in splitter sample). - SetCursor(*wxSTANDARD_CURSOR); - SetFont(wxSystemSettings::GetSystemFont(wxSYS_DEFAULT_GUI_FONT)); - SetSize(pos.x, pos.y, size.x, size.y); - - return TRUE; -} - -// Helper function -void wxWindow::CreateScrollbar(int orientation) -{ - if (!m_drawingArea) - return; - - XtVaSetValues((Widget) m_scrolledWindow, XmNresizePolicy, XmRESIZE_NONE, NULL); - - // Add scrollbars if required - if (orientation == wxHORIZONTAL) - { - Widget hScrollBar = XtVaCreateManagedWidget ("hsb", - xmScrollBarWidgetClass, (Widget) m_scrolledWindow, - XmNorientation, XmHORIZONTAL, - NULL); - // XtAddCallback (hScrollBar, XmNvalueChangedCallback, (XtCallbackProc) wxScrollBarCallback, (XtPointer) XmHORIZONTAL); - XtAddCallback (hScrollBar, XmNdragCallback, (XtCallbackProc) wxScrollBarCallback, (XtPointer) XmHORIZONTAL); - XtAddCallback (hScrollBar, XmNincrementCallback, (XtCallbackProc) wxScrollBarCallback, (XtPointer) XmHORIZONTAL); - XtAddCallback (hScrollBar, XmNdecrementCallback, (XtCallbackProc) wxScrollBarCallback, (XtPointer) XmHORIZONTAL); - XtAddCallback (hScrollBar, XmNpageIncrementCallback, (XtCallbackProc) wxScrollBarCallback, (XtPointer) XmHORIZONTAL); - XtAddCallback (hScrollBar, XmNpageDecrementCallback, (XtCallbackProc) wxScrollBarCallback, (XtPointer) XmHORIZONTAL); - XtAddCallback (hScrollBar, XmNtoTopCallback, (XtCallbackProc) wxScrollBarCallback, (XtPointer) XmHORIZONTAL); - XtAddCallback (hScrollBar, XmNtoBottomCallback, (XtCallbackProc) wxScrollBarCallback, (XtPointer) XmHORIZONTAL); - - XtVaSetValues (hScrollBar, - XmNincrement, 1, - XmNvalue, 0, - NULL); - - m_hScrollBar = (WXWidget) hScrollBar; - - wxColour backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE); - DoChangeBackgroundColour(m_hScrollBar, backgroundColour, TRUE); - - XtRealizeWidget(hScrollBar); - - XtVaSetValues((Widget) m_scrolledWindow, - XmNhorizontalScrollBar, (Widget) m_hScrollBar, - NULL); - - m_hScroll = TRUE; - } - - if (orientation == wxVERTICAL) - { - Widget vScrollBar = XtVaCreateManagedWidget ("vsb", - xmScrollBarWidgetClass, (Widget) m_scrolledWindow, - XmNorientation, XmVERTICAL, - NULL); - // XtAddCallback (vScrollBar, XmNvalueChangedCallback, (XtCallbackProc) wxScrollBarCallback, (XtPointer) XmVERTICAL); - XtAddCallback (vScrollBar, XmNdragCallback, (XtCallbackProc) wxScrollBarCallback, (XtPointer) XmVERTICAL); - XtAddCallback (vScrollBar, XmNincrementCallback, (XtCallbackProc) wxScrollBarCallback, (XtPointer) XmVERTICAL); - XtAddCallback (vScrollBar, XmNdecrementCallback, (XtCallbackProc) wxScrollBarCallback, (XtPointer) XmVERTICAL); - XtAddCallback (vScrollBar, XmNpageIncrementCallback, (XtCallbackProc) wxScrollBarCallback, (XtPointer) XmVERTICAL); - XtAddCallback (vScrollBar, XmNpageDecrementCallback, (XtCallbackProc) wxScrollBarCallback, (XtPointer) XmVERTICAL); - XtAddCallback (vScrollBar, XmNtoTopCallback, (XtCallbackProc) wxScrollBarCallback, (XtPointer) XmVERTICAL); - XtAddCallback (vScrollBar, XmNtoBottomCallback, (XtCallbackProc) wxScrollBarCallback, (XtPointer) XmVERTICAL); - - XtVaSetValues (vScrollBar, - XmNincrement, 1, - XmNvalue, 0, - NULL); - - m_vScrollBar = (WXWidget) vScrollBar; - wxColour backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE); - DoChangeBackgroundColour(m_vScrollBar, backgroundColour, TRUE); - - XtRealizeWidget(vScrollBar); - - XtVaSetValues((Widget) m_scrolledWindow, - XmNverticalScrollBar, (Widget) m_vScrollBar, - NULL); - - m_vScroll = TRUE; - } - - XtVaSetValues((Widget) m_scrolledWindow, XmNresizePolicy, XmRESIZE_ANY, NULL); -} -void wxWindow::DestroyScrollbar(int orientation) -{ - if (!m_drawingArea) - return; - - XtVaSetValues((Widget) m_scrolledWindow, XmNresizePolicy, XmRESIZE_NONE, NULL); - // Add scrollbars if required - if (orientation == wxHORIZONTAL) - { - if (m_hScrollBar) - { - XtDestroyWidget((Widget) m_hScrollBar); - } - m_hScrollBar = (WXWidget) 0; - m_hScroll = FALSE; - - XtVaSetValues((Widget) m_scrolledWindow, - XmNhorizontalScrollBar, (Widget) 0, - NULL); - - } - - if (orientation == wxVERTICAL) - { - if (m_vScrollBar) - { - XtDestroyWidget((Widget) m_vScrollBar); - } - m_vScrollBar = (WXWidget) 0; - m_vScroll = TRUE; - - XtVaSetValues((Widget) m_scrolledWindow, - XmNverticalScrollBar, (Widget) 0, - NULL); - - } - XtVaSetValues((Widget) m_scrolledWindow, XmNresizePolicy, XmRESIZE_ANY, NULL); -} - -void wxWindow::SetFocus() -{ - XmProcessTraversal((Widget) GetMainWidget(), XmTRAVERSE_CURRENT); - XmProcessTraversal((Widget) GetMainWidget(), XmTRAVERSE_CURRENT); -} - -void wxWindow::Enable(bool enable) -{ - if (GetMainWidget()) - { - XtSetSensitive((Widget) GetMainWidget(), enable); - XmUpdateDisplay((Widget) GetMainWidget()); - } -} - -void wxWindow::CaptureMouse() -{ - if (m_winCaptured) - return; - - if (GetMainWidget()) - XtAddGrab((Widget) GetMainWidget(), TRUE, FALSE); - - m_winCaptured = TRUE; -} - -void wxWindow::ReleaseMouse() -{ - if (!m_winCaptured) - return; - - if (GetMainWidget()) - XtRemoveGrab((Widget) GetMainWidget()); - m_winCaptured = FALSE; -} - -// Push/pop event handler (i.e. allow a chain of event handlers -// be searched) -void wxWindow::PushEventHandler(wxEvtHandler *handler) -{ - handler->SetNextHandler(GetEventHandler()); - SetEventHandler(handler); -} - -wxEvtHandler *wxWindow::PopEventHandler(bool deleteHandler) -{ - if ( GetEventHandler() ) - { - wxEvtHandler *handlerA = GetEventHandler(); - wxEvtHandler *handlerB = handlerA->GetNextHandler(); - handlerA->SetNextHandler(NULL); - SetEventHandler(handlerB); - if ( deleteHandler ) - { - delete handlerA; - return NULL; - } - else - return handlerA; - } - else - return NULL; -} - -#if wxUSE_DRAG_AND_DROP - -void wxWindow::SetDropTarget(wxDropTarget *pDropTarget) -{ - if ( m_pDropTarget != 0 ) { - delete m_pDropTarget; - } - - m_pDropTarget = pDropTarget; - if ( m_pDropTarget != 0 ) - { - // TODO - } -} - -#endif - -// Old style file-manager drag&drop -void wxWindow::DragAcceptFiles(bool accept) -{ - // TODO -} - -// Get total size -void wxWindow::GetSize(int *x, int *y) const -{ - if (m_drawingArea) - { - CanvasGetSize(x, y); - return; - } - - Widget widget = (Widget) GetTopWidget(); - Dimension xx, yy; - XtVaGetValues(widget, XmNwidth, &xx, XmNheight, &yy, NULL); - *x = xx; *y = yy; -} - -void wxWindow::GetPosition(int *x, int *y) const -{ - if (m_drawingArea) - { - CanvasGetPosition(x, y); - return; - } - Widget widget = (Widget) GetTopWidget(); - Position xx, yy; - XtVaGetValues(widget, XmNx, &xx, XmNy, &yy, NULL); - - // We may be faking the client origin. - // So a window that's really at (0, 30) may appear - // (to wxWin apps) to be at (0, 0). - if (GetParent()) - { - wxPoint pt(GetParent()->GetClientAreaOrigin()); - xx -= pt.x; - yy -= pt.y; - } - - *x = xx; *y = yy; -} - -void wxWindow::ScreenToClient(int *x, int *y) const -{ - Widget widget = (Widget) GetClientWidget(); - Display *display = XtDisplay((Widget) GetMainWidget()); - Window rootWindow = RootWindowOfScreen(XtScreen(widget)); - Window thisWindow = XtWindow(widget); - - Window childWindow; - int xx = *x; - int yy = *y; - XTranslateCoordinates(display, rootWindow, thisWindow, xx, yy, x, y, &childWindow); -} - -void wxWindow::ClientToScreen(int *x, int *y) const -{ - Widget widget = (Widget) GetClientWidget(); - Display *display = XtDisplay(widget); - Window rootWindow = RootWindowOfScreen(XtScreen(widget)); - Window thisWindow = XtWindow(widget); - - Window childWindow; - int xx = *x; - int yy = *y; - XTranslateCoordinates(display, thisWindow, rootWindow, xx, yy, x, y, &childWindow); -} - -void wxWindow::SetCursor(const wxCursor& cursor) -{ - m_windowCursor = cursor; - if (m_windowCursor.Ok()) - { - WXDisplay *dpy = GetXDisplay(); - WXCursor x_cursor = ((wxCursor&)cursor).GetXCursor(dpy); - - Widget w = (Widget) GetMainWidget(); - Window win = XtWindow(w); - XDefineCursor((Display*) dpy, win, (Cursor) x_cursor); - } -} - - -// Get size *available for subwindows* i.e. excluding menu bar etc. -void wxWindow::GetClientSize(int *x, int *y) const -{ - Widget widget = (Widget) GetClientWidget(); - Dimension xx, yy; - XtVaGetValues(widget, XmNwidth, &xx, XmNheight, &yy, NULL); - *x = xx; *y = yy; -} - -void wxWindow::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // A bit of optimization to help sort out the flickers. - int oldX, oldY, oldW, oldH; - GetSize(& oldW, & oldH); - GetPosition(& oldX, & oldY); - - bool useOldPos = FALSE; - bool useOldSize = FALSE; - - if ((x == -1) && (x == -1) && ((sizeFlags & wxSIZE_ALLOW_MINUS_ONE) == 0)) - useOldPos = TRUE; - else if (x == oldX && y == oldY) - useOldPos = TRUE; - - if ((width == -1) && (height == -1)) - useOldSize = TRUE; - else if (width == oldW && height == oldH) - useOldSize = TRUE; - - if (!wxNoOptimize::CanOptimize()) - { - useOldSize = FALSE; useOldPos = FALSE; - } - - if (useOldPos && useOldSize) - return; - - if (m_drawingArea) - { - CanvasSetSize(x, y, width, height, sizeFlags); - return; - } - Widget widget = (Widget) GetTopWidget(); - if (!widget) - return; - - bool managed = XtIsManaged( widget ); - if (managed) - XtUnmanageChild(widget); - - int xx = x; int yy = y; - AdjustForParentClientOrigin(xx, yy, sizeFlags); - - if (!useOldPos) - { - if (x > -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) - XtVaSetValues(widget, XmNx, xx, NULL); - if (y > -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) - XtVaSetValues(widget, XmNy, yy, NULL); - } - if (!useOldSize) - { - if (width > -1) - XtVaSetValues(widget, XmNwidth, width, NULL); - if (height > -1) - XtVaSetValues(widget, XmNheight, height, NULL); - } - - if (managed) - XtManageChild(widget); - - // How about this bit. Maybe we don't need to generate size events - // all the time -- they'll be generated when the window is sized anyway. - /* - wxSizeEvent sizeEvent(wxSize(width, height), GetId()); - sizeEvent.SetEventObject(this); - - GetEventHandler()->ProcessEvent(sizeEvent); - */ -} - -void wxWindow::SetClientSize(int width, int height) -{ - if (m_drawingArea) - { - CanvasSetClientSize(width, height); - return; - } - - Widget widget = (Widget) GetTopWidget(); - - if (width > -1) - XtVaSetValues(widget, XmNwidth, width, NULL); - if (height > -1) - XtVaSetValues(widget, XmNheight, height, NULL); - - wxSizeEvent sizeEvent(wxSize(width, height), GetId()); - sizeEvent.SetEventObject(this); - - GetEventHandler()->ProcessEvent(sizeEvent); -} - -// For implementation purposes - sometimes decorations make the client area -// smaller -wxPoint wxWindow::GetClientAreaOrigin() const -{ - return wxPoint(0, 0); -} - -// Makes an adjustment to the window position (for example, a frame that has -// a toolbar that it manages itself). -void wxWindow::AdjustForParentClientOrigin(int& x, int& y, int sizeFlags) -{ - if (((sizeFlags & wxSIZE_NO_ADJUSTMENTS) == 0) && GetParent()) - { - wxPoint pt(GetParent()->GetClientAreaOrigin()); - x += pt.x; y += pt.y; - } -} - -bool wxWindow::Show(bool show) -{ - if (show) - { - if (m_borderWidget || m_scrolledWindow) - { - if (m_drawingArea) - XtMapWidget((Widget) m_drawingArea); - XtMapWidget(m_borderWidget ? (Widget) m_borderWidget : (Widget) m_scrolledWindow); - } - else - { - WXWidget topWidget = GetTopWidget(); - if (GetTopWidget()) - XtMapWidget((Widget) GetTopWidget()); - else if (GetMainWidget()) - XtMapWidget((Widget) GetMainWidget()); - } - } - else - { - if (m_borderWidget || m_scrolledWindow) - { - if (m_drawingArea) - XtUnmapWidget((Widget) m_drawingArea); - XtUnmapWidget(m_borderWidget ? (Widget) m_borderWidget : (Widget) m_scrolledWindow); - } - else - { - if (GetTopWidget()) - XtUnmapWidget((Widget) GetTopWidget()); - else if (GetMainWidget()) - XtUnmapWidget((Widget) GetMainWidget()); - } - } - - /* - Window xwin = (Window) GetXWindow(); - Display *xdisp = (Display*) GetXDisplay(); - if (show) - XMapWindow(xdisp, xwin); - else - XUnmapWindow(xdisp, xwin); - */ - - m_isShown = show; - - return TRUE; -} - -bool wxWindow::IsShown() const -{ - return m_isShown; -} - -int wxWindow::GetCharHeight() const -{ - if (!m_windowFont.Ok()) - return 0; - - WXFontStructPtr pFontStruct = m_windowFont.GetFontStruct(1.0, GetXDisplay()); - - int direction, ascent, descent; - XCharStruct overall; - XTextExtents ((XFontStruct*) pFontStruct, "x", 1, &direction, &ascent, - &descent, &overall); - // return (overall.ascent + overall.descent); - return (ascent + descent); -} - -int wxWindow::GetCharWidth() const -{ - if (!m_windowFont.Ok()) - return 0; - - WXFontStructPtr pFontStruct = m_windowFont.GetFontStruct(1.0, GetXDisplay()); - - int direction, ascent, descent; - XCharStruct overall; - XTextExtents ((XFontStruct*) pFontStruct, "x", 1, &direction, &ascent, - &descent, &overall); - return overall.width; -} - -/* Helper function for 16-bit fonts */ -static int str16len(const char *s) -{ - int count = 0; - - while (s[0] && s[1]) { - count++; - s += 2; - } - - return count; -} - -void wxWindow::GetTextExtent(const wxString& string, int *x, int *y, - int *descent, int *externalLeading, const wxFont *theFont, bool use16) const -{ - wxFont *fontToUse = (wxFont *)theFont; - if (!fontToUse) - fontToUse = (wxFont *) & m_windowFont; - - if (!fontToUse->Ok()) - return; - - WXFontStructPtr pFontStruct = theFont->GetFontStruct(1.0, GetXDisplay()); - - int direction, ascent, descent2; - XCharStruct overall; - int slen; - - if (use16) slen = str16len(string); else slen = strlen(string); - - if (use16) - XTextExtents16((XFontStruct*) pFontStruct, (XChar2b *) (char*) (const char*) string, slen, &direction, - &ascent, &descent2, &overall); - else - XTextExtents((XFontStruct*) pFontStruct, (char*) (const char*) string, slen, &direction, - &ascent, &descent2, &overall); - - *x = (overall.width); - *y = (ascent + descent2); - if (descent) - *descent = descent2; - if (externalLeading) - *externalLeading = 0; -} - -void wxWindow::Refresh(bool eraseBack, const wxRect *rect) -{ - Display *display = XtDisplay((Widget) GetMainWidget()); - Window thisWindow = XtWindow((Widget) GetMainWidget()); - - XExposeEvent dummyEvent; - int width, height; - GetSize(&width, &height); - - dummyEvent.type = Expose; - dummyEvent.display = display; - dummyEvent.send_event = True; - dummyEvent.window = thisWindow; - if (rect) - { - dummyEvent.x = rect->x; - dummyEvent.y = rect->y; - dummyEvent.width = rect->width; - dummyEvent.height = rect->height; - } - else - { - dummyEvent.x = 0; - dummyEvent.y = 0; - dummyEvent.width = width; - dummyEvent.height = height; - } - dummyEvent.count = 0; - - if (eraseBack) - { - wxClientDC dc(this); - wxBrush backgroundBrush(GetBackgroundColour(), wxSOLID); - dc.SetBackground(backgroundBrush); - if (rect) - dc.Clear(*rect); - else - dc.Clear(); - } - - XSendEvent(display, thisWindow, False, ExposureMask, (XEvent *)&dummyEvent); -} - -// Responds to colour changes: passes event on to children. -void wxWindow::OnSysColourChanged(wxSysColourChangedEvent& event) -{ - wxNode *node = GetChildren().First(); - while ( node ) - { - // Only propagate to non-top-level windows - wxWindow *win = (wxWindow *)node->Data(); - if ( win->GetParent() ) - { - wxSysColourChangedEvent event2; - event.m_eventObject = win; - win->GetEventHandler()->ProcessEvent(event2); - } - - node = node->Next(); - } -} - -// This can be called by the app (or wxWindows) to do default processing for the current -// event. Save message/event info in wxWindow so they can be used in this function. -long wxWindow::Default() -{ - // TODO - return 0; -} - -void wxWindow::InitDialog() -{ - wxInitDialogEvent event(GetId()); - event.SetEventObject( this ); - GetEventHandler()->ProcessEvent(event); -} - -// Default init dialog behaviour is to transfer data to window -void wxWindow::OnInitDialog(wxInitDialogEvent& event) -{ - TransferDataToWindow(); -} - -// Caret manipulation -void wxWindow::CreateCaret(int w, int h) -{ - m_caretWidth = w; - m_caretHeight = h; - m_caretEnabled = TRUE; -} - -void wxWindow::CreateCaret(const wxBitmap *WXUNUSED(bitmap)) -{ - // TODO -} - -void wxWindow::ShowCaret(bool show) -{ - // TODO -} - -void wxWindow::DestroyCaret() -{ - // TODO - m_caretEnabled = FALSE; -} - -void wxWindow::SetCaretPos(int x, int y) -{ - // TODO -} - -void wxWindow::GetCaretPos(int *x, int *y) const -{ - // TODO -} - -wxWindow *wxGetActiveWindow() -{ - // TODO - return NULL; -} - -void wxWindow::SetSizeHints(int minW, int minH, int maxW, int maxH, int incW, int incH) -{ - m_minSizeX = minW; - m_minSizeY = minH; - m_maxSizeX = maxW; - m_maxSizeY = maxH; - - if (!this->IsKindOf(CLASSINFO(wxFrame))) - return; - - wxFrame *frame = (wxFrame *)this; - Widget widget = (Widget) frame->GetShellWidget(); - - if (minW > -1) - XtVaSetValues(widget, XmNminWidth, minW, NULL); - if (minH > -1) - XtVaSetValues(widget, XmNminHeight, minH, NULL); - if (maxW > -1) - XtVaSetValues(widget, XmNmaxWidth, maxW, NULL); - if (maxH > -1) - XtVaSetValues(widget, XmNmaxHeight, maxH, NULL); - if (incW > -1) - XtVaSetValues(widget, XmNwidthInc, incW, NULL); - if (incH > -1) - XtVaSetValues(widget, XmNheightInc, incH, NULL); -} - -void wxWindow::Centre(int direction) -{ - int x, y, width, height, panel_width, panel_height, new_x, new_y; - - wxWindow *father = (wxWindow *)GetParent(); - if (!father) - return; - - father->GetClientSize(&panel_width, &panel_height); - GetSize(&width, &height); - GetPosition(&x, &y); - - new_x = -1; - new_y = -1; - - if (direction & wxHORIZONTAL) - new_x = (int)((panel_width - width)/2); - - if (direction & wxVERTICAL) - new_y = (int)((panel_height - height)/2); - - SetSize(new_x, new_y, -1, -1); - -} - -// Coordinates relative to the window -void wxWindow::WarpPointer (int x, int y) -{ - XWarpPointer (XtDisplay((Widget) GetClientWidget()), None, XtWindow((Widget) GetClientWidget()), 0, 0, 0, 0, x, y); -} - -void wxWindow::OnEraseBackground(wxEraseEvent& event) -{ - // TODO - Default(); -} - -int wxWindow::GetScrollPos(int orient) const -{ - if (orient == wxHORIZONTAL) - return m_scrollPosX; - else - return m_scrollPosY; - /* - Widget scrollBar = (Widget) ((orient == wxHORIZONTAL) ? m_hScrollBar : m_vScrollBar); - if (scrollBar) - { - int pos; - XtVaGetValues(scrollBar, - XmNvalue, &pos, NULL); - return pos; - } - else - return 0; - */ -} - -// This now returns the whole range, not just the number -// of positions that we can scroll. -int wxWindow::GetScrollRange(int orient) const -{ - Widget scrollBar = (Widget) ((orient == wxHORIZONTAL) ? m_hScrollBar : m_vScrollBar); - if (scrollBar) - { - int range; - XtVaGetValues(scrollBar, - XmNmaximum, &range, NULL); - return range; - } - else - return 0; -} - -int wxWindow::GetScrollThumb(int orient) const -{ - Widget scrollBar = (Widget) ((orient == wxHORIZONTAL) ? m_hScrollBar : m_vScrollBar); - if (scrollBar) - { - int thumb; - XtVaGetValues(scrollBar, - XmNsliderSize, &thumb, NULL); - return thumb; - } - else - return 0; -} - -void wxWindow::SetScrollPos(int orient, int pos, bool WXUNUSED(refresh)) -{ - Widget scrollBar = (Widget) ((orient == wxHORIZONTAL) ? m_hScrollBar : m_vScrollBar); - if (scrollBar) - { - XtVaSetValues (scrollBar, - XmNvalue, pos, - NULL); - } - if (orient == wxHORIZONTAL) - m_scrollPosX = pos; - else - m_scrollPosY = pos; - -} - -// New function that will replace some of the above. -void wxWindow::SetScrollbar(int orient, int pos, int thumbVisible, - int range, bool WXUNUSED(refresh)) -{ - int oldW, oldH; - GetSize(& oldW, & oldH); - - if (range == 0) - range = 1; - if (thumbVisible == 0) - thumbVisible = 1; - - if (thumbVisible > range) - thumbVisible = range; - - // Save the old state to see if it changed - WXWidget oldScrollBar = ((orient == wxHORIZONTAL) ? m_hScrollBar : m_vScrollBar ); - - if (orient == wxHORIZONTAL) - { - if (thumbVisible == range) - { - if (m_hScrollBar) - DestroyScrollbar(wxHORIZONTAL); - } - else - { - if (!m_hScrollBar) - CreateScrollbar(wxHORIZONTAL); - } - } - if (orient == wxVERTICAL) - { - if (thumbVisible == range) - { - if (m_vScrollBar) - DestroyScrollbar(wxVERTICAL); - } - else - { - if (!m_vScrollBar) - CreateScrollbar(wxVERTICAL); - } - } - WXWidget newScrollBar = ((orient == wxHORIZONTAL) ? m_hScrollBar : m_vScrollBar ); - - if (oldScrollBar != newScrollBar) - { - // This is important! Without it, scrollbars misbehave - // badly. - XtUnrealizeWidget((Widget) m_scrolledWindow); - XmScrolledWindowSetAreas ((Widget) m_scrolledWindow, (Widget) m_hScrollBar, (Widget) m_vScrollBar, (Widget) m_drawingArea); - XtRealizeWidget((Widget) m_scrolledWindow); - XtManageChild((Widget) m_scrolledWindow); - } - - if (newScrollBar) - XtVaSetValues((Widget) newScrollBar, - XmNvalue, pos, - XmNminimum, 0, - XmNmaximum, range, - XmNsliderSize, thumbVisible, - NULL); - - if (orient == wxHORIZONTAL) - m_scrollPosX = pos; - else - m_scrollPosY = pos; - - int newW, newH; - GetSize(& newW, & newH); - - // Adjusting scrollbars can resize the canvas accidentally - if (newW != oldW || newH != oldH) - SetSize(-1, -1, oldW, oldH); -} - -// Does a physical scroll -void wxWindow::ScrollWindow(int dx, int dy, const wxRect *rect) -{ - // cerr << "Scrolling. delta = " << dx << ", " << dy << endl; - int x, y, w, h; - if (rect) - { - // Use specified rectangle - x = rect->x; y = rect->y; w = rect->width; h = rect->height; - } - else - { - // Use whole client area - x = 0; y = 0; - GetClientSize(& w, & h); - } - - int x1 = (dx >= 0) ? x : x - dx ; - int y1 = (dy >= 0) ? y : y - dy; - int w1 = w - abs(dx); - int h1 = h - abs(dy); - int x2 = (dx >= 0) ? x + dx : x; - int y2 = (dy >= 0) ? y + dy : y; - - wxClientDC dc(this); - - dc.SetLogicalFunction (wxCOPY); - - Widget widget = (Widget) GetMainWidget(); - Window window = XtWindow(widget); - Display* display = XtDisplay(widget); - - XCopyArea(display, window, - window, (GC) dc.GetGC(), - x1, y1, - w1, h1, - x2, y2); - - dc.SetAutoSetting(TRUE); - wxBrush brush(GetBackgroundColour(), wxSOLID); - dc.SetBrush(brush); // ?? - - // We'll add rectangles to the list of update rectangles - // according to which bits we've exposed. - wxList updateRects; - - if (dx > 0) - { - wxRect *rect = new wxRect; - rect->x = x; - rect->y = y; - rect->width = dx; - rect->height = h; - - XFillRectangle(display, window, - (GC) dc.GetGC(), rect->x, rect->y, rect->width, rect->height); - - rect->x = rect->x; - rect->y = rect->y; - rect->width = rect->width; - rect->height = rect->height; - - updateRects.Append((wxObject*) rect); - } - else if (dx < 0) - { - wxRect *rect = new wxRect; - - rect->x = x + w + dx; - rect->y = y; - rect->width = -dx; - rect->height = h; - - XFillRectangle(display, window, - (GC) dc.GetGC(), rect->x, rect->y, rect->width, - rect->height); - - rect->x = rect->x; - rect->y = rect->y; - rect->width = rect->width; - rect->height = rect->height; - - updateRects.Append((wxObject*) rect); - } - if (dy > 0) - { - wxRect *rect = new wxRect; - - rect->x = x; - rect->y = y; - rect->width = w; - rect->height = dy; - - XFillRectangle(display, window, - (GC) dc.GetGC(), rect->x, rect->y, rect->width, rect->height); - - rect->x = rect->x; - rect->y = rect->y; - rect->width = rect->width; - rect->height = rect->height; - - updateRects.Append((wxObject*) rect); - } - else if (dy < 0) - { - wxRect *rect = new wxRect; - - rect->x = x; - rect->y = y + h + dy; - rect->width = w; - rect->height = -dy; - - XFillRectangle(display, window, - (GC) dc.GetGC(), rect->x, rect->y, rect->width, rect->height); - - rect->x = rect->x; - rect->y = rect->y; - rect->width = rect->width; - rect->height = rect->height; - - updateRects.Append((wxObject*) rect); - } - dc.SetBrush(wxNullBrush); - - // Now send expose events - - wxNode* node = updateRects.First(); - while (node) - { - wxRect* rect = (wxRect*) node->Data(); - XExposeEvent event; - - event.type = Expose; - event.display = display; - event.send_event = True; - event.window = window; - - event.x = rect->x; - event.y = rect->y; - event.width = rect->width; - event.height = rect->height; - - event.count = 0; - - XSendEvent(display, window, False, ExposureMask, (XEvent *)&event); - - node = node->Next(); - - } - - // Delete the update rects - node = updateRects.First(); - while (node) - { - wxRect* rect = (wxRect*) node->Data(); - delete rect; - node = node->Next(); - } - -} - -void wxWindow::OnChar(wxKeyEvent& event) -{ -/* ?? -if ( event.KeyCode() == WXK_TAB ) { -// propagate the TABs to the parent - it's up to it to decide what -// to do with it -if ( GetParent() ) { -if ( GetParent()->ProcessEvent(event) ) -return; -} -} - */ -} - -void wxWindow::OnKeyDown(wxKeyEvent& event) -{ - Default(); -} - -void wxWindow::OnKeyUp(wxKeyEvent& event) -{ - Default(); -} - -void wxWindow::OnPaint(wxPaintEvent& event) -{ - Default(); -} - -bool wxWindow::IsEnabled() const -{ - // TODO. Is this right? - // return XtGetSensitive((Widget) GetMainWidget()); - return FALSE; -} - -// Dialog support: override these and call -// base class members to add functionality -// that can't be done using validators. -// NOTE: these functions assume that controls -// are direct children of this window, not grandchildren -// or other levels of descendant. - -// Transfer values to controls. If returns FALSE, -// it's an application error (pops up a dialog) -bool wxWindow::TransferDataToWindow() -{ - wxNode *node = GetChildren().First(); - while ( node ) - { - wxWindow *child = (wxWindow *)node->Data(); - if ( child->GetValidator() && - !child->GetValidator()->TransferToWindow() ) - { - wxLogError("Could not transfer data to window."); - return FALSE; - } - - node = node->Next(); - } - return TRUE; -} - -// Transfer values from controls. If returns FALSE, -// validation failed: don't quit -bool wxWindow::TransferDataFromWindow() -{ - wxNode *node = GetChildren().First(); - while ( node ) - { - wxWindow *child = (wxWindow *)node->Data(); - if ( child->GetValidator() && !child->GetValidator()->TransferFromWindow() ) - { - return FALSE; - } - - node = node->Next(); - } - return TRUE; -} - -bool wxWindow::Validate() -{ - wxNode *node = GetChildren().First(); - while ( node ) - { - wxWindow *child = (wxWindow *)node->Data(); - if ( child->GetValidator() && /* child->GetValidator()->Ok() && */ !child->GetValidator()->Validate(this) ) - { - return FALSE; - } - - node = node->Next(); - } - return TRUE; -} - -// Get the window with the focus -wxWindow *wxWindow::FindFocus() -{ - // TODO - return NULL; -} - -void wxWindow::AddChild(wxWindow *child) -{ - GetChildren().Append(child); - child->m_windowParent = this; -} - -void wxWindow::RemoveChild(wxWindow *child) -{ - GetChildren().DeleteObject(child); - child->m_windowParent = NULL; -} - -// Reparents this window to have the new parent. -bool wxWindow::Reparent(wxWindow* WXUNUSED(parent)) -{ - // For now, we indicate that this isn't implemented. - return FALSE; -} - -void wxWindow::DestroyChildren() -{ - wxNode *node = GetChildren().First(); - while (node) - { - wxNode* next = node->Next(); - wxWindow* child = (wxWindow*) node->Data(); - delete child; - node = next; - } - GetChildren().Clear(); -#if 0 - wxNode *node; - while ((node = GetChildren().First()) != (wxNode *)NULL) { - wxWindow *child; - if ((child = (wxWindow *)node->Data()) != (wxWindow *)NULL) { - delete child; - if ( GetChildren().Member(child) ) - delete node; - } - } /* while */ -#endif -} - -void wxWindow::MakeModal(bool modal) -{ - // Disable all other windows - if (this->IsKindOf(CLASSINFO(wxDialog)) || this->IsKindOf(CLASSINFO(wxFrame))) - { - wxNode *node = wxTopLevelWindows.First(); - while (node) - { - wxWindow *win = (wxWindow *)node->Data(); - if (win != this) - win->Enable(!modal); - - node = node->Next(); - } - } -} - -// If nothing defined for this, try the parent. -// E.g. we may be a button loaded from a resource, with no callback function -// defined. -void wxWindow::OnCommand(wxWindow& win, wxCommandEvent& event) -{ - if (GetEventHandler()->ProcessEvent(event) ) - return; - if (m_windowParent) - m_windowParent->GetEventHandler()->OnCommand(win, event); -} - -void wxWindow::SetConstraints(wxLayoutConstraints *c) -{ - if (m_constraints) - { - UnsetConstraints(m_constraints); - delete m_constraints; - } - m_constraints = c; - if (m_constraints) - { - // Make sure other windows know they're part of a 'meaningful relationship' - if (m_constraints->left.GetOtherWindow() && (m_constraints->left.GetOtherWindow() != this)) - m_constraints->left.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->top.GetOtherWindow() && (m_constraints->top.GetOtherWindow() != this)) - m_constraints->top.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->right.GetOtherWindow() && (m_constraints->right.GetOtherWindow() != this)) - m_constraints->right.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->bottom.GetOtherWindow() && (m_constraints->bottom.GetOtherWindow() != this)) - m_constraints->bottom.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->width.GetOtherWindow() && (m_constraints->width.GetOtherWindow() != this)) - m_constraints->width.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->height.GetOtherWindow() && (m_constraints->height.GetOtherWindow() != this)) - m_constraints->height.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->centreX.GetOtherWindow() && (m_constraints->centreX.GetOtherWindow() != this)) - m_constraints->centreX.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->centreY.GetOtherWindow() && (m_constraints->centreY.GetOtherWindow() != this)) - m_constraints->centreY.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - } -} - -// This removes any dangling pointers to this window -// in other windows' constraintsInvolvedIn lists. -void wxWindow::UnsetConstraints(wxLayoutConstraints *c) -{ - if (c) - { - if (c->left.GetOtherWindow() && (c->top.GetOtherWindow() != this)) - c->left.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->top.GetOtherWindow() && (c->top.GetOtherWindow() != this)) - c->top.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->right.GetOtherWindow() && (c->right.GetOtherWindow() != this)) - c->right.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->bottom.GetOtherWindow() && (c->bottom.GetOtherWindow() != this)) - c->bottom.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->width.GetOtherWindow() && (c->width.GetOtherWindow() != this)) - c->width.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->height.GetOtherWindow() && (c->height.GetOtherWindow() != this)) - c->height.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->centreX.GetOtherWindow() && (c->centreX.GetOtherWindow() != this)) - c->centreX.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->centreY.GetOtherWindow() && (c->centreY.GetOtherWindow() != this)) - c->centreY.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - } -} - -// Back-pointer to other windows we're involved with, so if we delete -// this window, we must delete any constraints we're involved with. -void wxWindow::AddConstraintReference(wxWindow *otherWin) -{ - if (!m_constraintsInvolvedIn) - m_constraintsInvolvedIn = new wxList; - if (!m_constraintsInvolvedIn->Member(otherWin)) - m_constraintsInvolvedIn->Append(otherWin); -} - -// REMOVE back-pointer to other windows we're involved with. -void wxWindow::RemoveConstraintReference(wxWindow *otherWin) -{ - if (m_constraintsInvolvedIn) - m_constraintsInvolvedIn->DeleteObject(otherWin); -} - -// Reset any constraints that mention this window -void wxWindow::DeleteRelatedConstraints() -{ - if (m_constraintsInvolvedIn) - { - wxNode *node = m_constraintsInvolvedIn->First(); - while (node) - { - wxWindow *win = (wxWindow *)node->Data(); - wxNode *next = node->Next(); - wxLayoutConstraints *constr = win->GetConstraints(); - - // Reset any constraints involving this window - if (constr) - { - constr->left.ResetIfWin((wxWindow *)this); - constr->top.ResetIfWin((wxWindow *)this); - constr->right.ResetIfWin((wxWindow *)this); - constr->bottom.ResetIfWin((wxWindow *)this); - constr->width.ResetIfWin((wxWindow *)this); - constr->height.ResetIfWin((wxWindow *)this); - constr->centreX.ResetIfWin((wxWindow *)this); - constr->centreY.ResetIfWin((wxWindow *)this); - } - delete node; - node = next; - } - delete m_constraintsInvolvedIn; - m_constraintsInvolvedIn = NULL; - } -} - -void wxWindow::SetSizer(wxSizer *sizer) -{ - m_windowSizer = sizer; - if (sizer) - sizer->SetSizerParent((wxWindow *)this); -} - -/* -* New version -*/ - -bool wxWindow::Layout() -{ - if (GetConstraints()) - { - int w, h; - GetClientSize(&w, &h); - GetConstraints()->width.SetValue(w); - GetConstraints()->height.SetValue(h); - } - - // If top level (one sizer), evaluate the sizer's constraints. - if (GetSizer()) - { - int noChanges; - GetSizer()->ResetConstraints(); // Mark all constraints as unevaluated - GetSizer()->LayoutPhase1(&noChanges); - GetSizer()->LayoutPhase2(&noChanges); - GetSizer()->SetConstraintSizes(); // Recursively set the real window sizes - return TRUE; - } - else - { - // Otherwise, evaluate child constraints - ResetConstraints(); // Mark all constraints as unevaluated - DoPhase(1); // Just one phase need if no sizers involved - DoPhase(2); - SetConstraintSizes(); // Recursively set the real window sizes - } - return TRUE; -} - - -// Do a phase of evaluating constraints: -// the default behaviour. wxSizers may do a similar -// thing, but also impose their own 'constraints' -// and order the evaluation differently. -bool wxWindow::LayoutPhase1(int *noChanges) -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - return constr->SatisfyConstraints((wxWindow *)this, noChanges); - } - else - return TRUE; -} - -bool wxWindow::LayoutPhase2(int *noChanges) -{ - *noChanges = 0; - - // Layout children - DoPhase(1); - DoPhase(2); - return TRUE; -} - -// Do a phase of evaluating child constraints -bool wxWindow::DoPhase(int phase) -{ - int noIterations = 0; - int maxIterations = 500; - int noChanges = 1; - int noFailures = 0; - wxList succeeded; - while ((noChanges > 0) && (noIterations < maxIterations)) - { - noChanges = 0; - noFailures = 0; - wxNode *node = GetChildren().First(); - while (node) - { - wxWindow *child = (wxWindow *)node->Data(); - if (!child->IsKindOf(CLASSINFO(wxFrame)) && !child->IsKindOf(CLASSINFO(wxDialog))) - { - wxLayoutConstraints *constr = child->GetConstraints(); - if (constr) - { - if (succeeded.Member(child)) - { - } - else - { - int tempNoChanges = 0; - bool success = ( (phase == 1) ? child->LayoutPhase1(&tempNoChanges) : child->LayoutPhase2(&tempNoChanges) ) ; - noChanges += tempNoChanges; - if (success) - { - succeeded.Append(child); - } - } - } - } - node = node->Next(); - } - noIterations ++; - } - return TRUE; -} - -void wxWindow::ResetConstraints() -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - constr->left.SetDone(FALSE); - constr->top.SetDone(FALSE); - constr->right.SetDone(FALSE); - constr->bottom.SetDone(FALSE); - constr->width.SetDone(FALSE); - constr->height.SetDone(FALSE); - constr->centreX.SetDone(FALSE); - constr->centreY.SetDone(FALSE); - } - wxNode *node = GetChildren().First(); - while (node) - { - wxWindow *win = (wxWindow *)node->Data(); - if (!win->IsKindOf(CLASSINFO(wxFrame)) && !win->IsKindOf(CLASSINFO(wxDialog))) - win->ResetConstraints(); - node = node->Next(); - } -} - -// Need to distinguish between setting the 'fake' size for -// windows and sizers, and setting the real values. -void wxWindow::SetConstraintSizes(bool recurse) -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr && constr->left.GetDone() && constr->right.GetDone() && - constr->width.GetDone() && constr->height.GetDone()) - { - int x = constr->left.GetValue(); - int y = constr->top.GetValue(); - int w = constr->width.GetValue(); - int h = constr->height.GetValue(); - - // If we don't want to resize this window, just move it... - if ((constr->width.GetRelationship() != wxAsIs) || - (constr->height.GetRelationship() != wxAsIs)) - { - // Calls Layout() recursively. AAAGH. How can we stop that. - // Simply take Layout() out of non-top level OnSizes. - SizerSetSize(x, y, w, h); - } - else - { - SizerMove(x, y); - } - } - else if (constr) - { - char *windowClass = this->GetClassInfo()->GetClassName(); - - wxString winName; - if (GetName() == "") - winName = "unnamed"; - else - winName = GetName(); - wxDebugMsg("Constraint(s) not satisfied for window of type %s, name %s:\n", (const char *)windowClass, (const char *)winName); - if (!constr->left.GetDone()) - wxDebugMsg(" unsatisfied 'left' constraint.\n"); - if (!constr->right.GetDone()) - wxDebugMsg(" unsatisfied 'right' constraint.\n"); - if (!constr->width.GetDone()) - wxDebugMsg(" unsatisfied 'width' constraint.\n"); - if (!constr->height.GetDone()) - wxDebugMsg(" unsatisfied 'height' constraint.\n"); - wxDebugMsg("Please check constraints: try adding AsIs() constraints.\n"); - } - - if (recurse) - { - wxNode *node = GetChildren().First(); - while (node) - { - wxWindow *win = (wxWindow *)node->Data(); - if (!win->IsKindOf(CLASSINFO(wxFrame)) && !win->IsKindOf(CLASSINFO(wxDialog))) - win->SetConstraintSizes(); - node = node->Next(); - } - } -} - -// This assumes that all sizers are 'on' the same -// window, i.e. the parent of this window. -void wxWindow::TransformSizerToActual(int *x, int *y) const -{ - if (!m_sizerParent || m_sizerParent->IsKindOf(CLASSINFO(wxDialog)) || - m_sizerParent->IsKindOf(CLASSINFO(wxFrame)) ) - return; - - int xp, yp; - m_sizerParent->GetPosition(&xp, &yp); - m_sizerParent->TransformSizerToActual(&xp, &yp); - *x += xp; - *y += yp; -} - -void wxWindow::SizerSetSize(int x, int y, int w, int h) -{ - int xx = x; - int yy = y; - TransformSizerToActual(&xx, &yy); - SetSize(xx, yy, w, h); -} - -void wxWindow::SizerMove(int x, int y) -{ - int xx = x; - int yy = y; - TransformSizerToActual(&xx, &yy); - Move(xx, yy); -} - -// Only set the size/position of the constraint (if any) -void wxWindow::SetSizeConstraint(int x, int y, int w, int h) -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - if (x != -1) - { - constr->left.SetValue(x); - constr->left.SetDone(TRUE); - } - if (y != -1) - { - constr->top.SetValue(y); - constr->top.SetDone(TRUE); - } - if (w != -1) - { - constr->width.SetValue(w); - constr->width.SetDone(TRUE); - } - if (h != -1) - { - constr->height.SetValue(h); - constr->height.SetDone(TRUE); - } - } -} - -void wxWindow::MoveConstraint(int x, int y) -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - if (x != -1) - { - constr->left.SetValue(x); - constr->left.SetDone(TRUE); - } - if (y != -1) - { - constr->top.SetValue(y); - constr->top.SetDone(TRUE); - } - } -} - -void wxWindow::GetSizeConstraint(int *w, int *h) const -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - *w = constr->width.GetValue(); - *h = constr->height.GetValue(); - } - else - GetSize(w, h); -} - -void wxWindow::GetClientSizeConstraint(int *w, int *h) const -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - *w = constr->width.GetValue(); - *h = constr->height.GetValue(); - } - else - GetClientSize(w, h); -} - -void wxWindow::GetPositionConstraint(int *x, int *y) const -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - *x = constr->left.GetValue(); - *y = constr->top.GetValue(); - } - else - GetPosition(x, y); -} - -bool wxWindow::Close(bool force) -{ - wxCloseEvent event(wxEVT_CLOSE_WINDOW, m_windowId); - event.SetEventObject(this); - event.SetForce(force); - - return GetEventHandler()->ProcessEvent(event); -} - -wxObject* wxWindow::GetChild(int number) const -{ - // Return a pointer to the Nth object in the window - wxNode *node = GetChildren().First(); - int n = number; - while (node && n--) - node = node->Next() ; - if (node) - { - wxObject *obj = (wxObject *)node->Data(); - return(obj) ; - } - else - return NULL ; -} - -void wxWindow::OnDefaultAction(wxControl *initiatingItem) -{ - // Obsolete function -} - -void wxWindow::Clear() -{ - wxClientDC dc(this); - wxBrush brush(GetBackgroundColour(), wxSOLID); - dc.SetBackground(brush); - dc.Clear(); -} - -// Fits the panel around the items -void wxWindow::Fit() -{ - int maxX = 0; - int maxY = 0; - wxNode *node = GetChildren().First(); - while ( node ) - { - wxWindow *win = (wxWindow *)node->Data(); - int wx, wy, ww, wh; - win->GetPosition(&wx, &wy); - win->GetSize(&ww, &wh); - if ( wx + ww > maxX ) - maxX = wx + ww; - if ( wy + wh > maxY ) - maxY = wy + wh; - - node = node->Next(); - } - SetClientSize(maxX + 5, maxY + 5); -} - -void wxWindow::SetValidator(const wxValidator& validator) -{ - if ( m_windowValidator ) - delete m_windowValidator; - m_windowValidator = validator.Clone(); - - if ( m_windowValidator ) - m_windowValidator->SetWindow(this) ; -} - -void wxWindow::SetClientObject( wxClientData *data ) -{ - if (m_clientObject) delete m_clientObject; - m_clientObject = data; -} - -wxClientData *wxWindow::GetClientObject() -{ - return m_clientObject; -} - -void wxWindow::SetClientData( void *data ) -{ - m_clientData = data; -} - -void *wxWindow::GetClientData() -{ - return m_clientData; -} - -// Find a window by id or name -wxWindow *wxWindow::FindWindow(long id) -{ - if ( GetId() == id) - return this; - - wxNode *node = GetChildren().First(); - while ( node ) - { - wxWindow *child = (wxWindow *)node->Data(); - wxWindow *found = child->FindWindow(id); - if ( found ) - return found; - node = node->Next(); - } - return NULL; -} - -wxWindow *wxWindow::FindWindow(const wxString& name) -{ - if ( GetName() == name) - return this; - - wxNode *node = GetChildren().First(); - while ( node ) - { - wxWindow *child = (wxWindow *)node->Data(); - wxWindow *found = child->FindWindow(name); - if ( found ) - return found; - node = node->Next(); - } - return NULL; -} - -void wxWindow::OnIdle(wxIdleEvent& event) -{ - // This calls the UI-update mechanism (querying windows for - // menu/toolbar/control state information) - UpdateWindowUI(); -} - -// Raise the window to the top of the Z order -void wxWindow::Raise() -{ - Window window = XtWindow((Widget) GetTopWidget()); - XRaiseWindow(XtDisplay((Widget) GetTopWidget()), window); -} - -// Lower the window to the bottom of the Z order -void wxWindow::Lower() -{ - Window window = XtWindow((Widget) GetTopWidget()); - XLowerWindow(XtDisplay((Widget) GetTopWidget()), window); -} - -bool wxWindow::AcceptsFocus() const -{ - return IsShown() && IsEnabled(); -} - -// Update region access -wxRegion& wxWindow::GetUpdateRegion() const -{ - return (wxRegion&) m_updateRegion; -} - -bool wxWindow::IsExposed(int x, int y, int w, int h) const -{ - return (m_updateRegion.Contains(x, y, w, h) != wxOutRegion); -} - -bool wxWindow::IsExposed(const wxPoint& pt) const -{ - return (m_updateRegion.Contains(pt) != wxOutRegion); -} - -bool wxWindow::IsExposed(const wxRect& rect) const -{ - return (m_updateRegion.Contains(rect) != wxOutRegion); -} - -/* -* Allocates control IDs -*/ - -int wxWindow::NewControlId() -{ - static int s_controlId = 0; - s_controlId ++; - return s_controlId; -} - -void wxWindow::SetAcceleratorTable(const wxAcceleratorTable& accel) -{ - m_acceleratorTable = accel; -} - -// All widgets should have this as their resize proc. -// OnSize sent to wxWindow via client data. -void wxWidgetResizeProc(Widget w, XConfigureEvent *event, String args[], int *num_args) -{ - wxWindow *win = (wxWindow *)wxWidgetHashTable->Get((long)w); - if (!win) - return; - - if (win->PreResize()) - { - int width, height; - win->GetSize(&width, &height); - wxSizeEvent sizeEvent(wxSize(width, height), win->GetId()); - sizeEvent.SetEventObject(win); - win->GetEventHandler()->ProcessEvent(sizeEvent); - } -} - -bool wxAddWindowToTable(Widget w, wxWindow *win) -{ - wxWindow *oldItem = NULL; - // printf("Adding widget %ld, name = %s\n", w, win->GetClassInfo()->GetClassName()); - if ((oldItem = (wxWindow *)wxWidgetHashTable->Get ((long) w))) - { - wxLogError("Widget table clash: new widget is %ld, %s", (long)w, win->GetClassInfo()->GetClassName()); - return FALSE; - } - - wxWidgetHashTable->Put ((long) w, win); - return TRUE; -} - -wxWindow *wxGetWindowFromTable(Widget w) -{ - return (wxWindow *)wxWidgetHashTable->Get ((long) w); -} - -void wxDeleteWindowFromTable(Widget w) -{ - wxWidgetHashTable->Delete((long)w); -} - -// Get the underlying X window and display -WXWindow wxWindow::GetXWindow() const -{ - return (WXWindow) XtWindow((Widget) GetMainWidget()); -} - -WXDisplay *wxWindow::GetXDisplay() const -{ - return (WXDisplay*) XtDisplay((Widget) GetMainWidget()); -} - -WXWidget wxWindow::GetMainWidget() const -{ - if (m_drawingArea) - return m_drawingArea; - else - return m_mainWidget; -} - -WXWidget wxWindow::GetClientWidget() const -{ - if (m_drawingArea != (WXWidget) 0) - return m_drawingArea; - else - return GetMainWidget(); -} - -WXWidget wxWindow::GetTopWidget() const -{ - return GetMainWidget(); -} - -void wxCanvasRepaintProc (Widget drawingArea, XtPointer clientData, - XmDrawingAreaCallbackStruct * cbs) -{ - if (!wxWidgetHashTable->Get ((long) (Widget) drawingArea)) - return; - - XEvent * event = cbs->event; - wxWindow * win = (wxWindow *) clientData; - Display * display = (Display *) win->GetXDisplay(); - - switch (event->type) - { - case Expose: - { - wxRect* rect = new wxRect(event->xexpose.x, event->xexpose.y, - event->xexpose.width, event->xexpose.height); - /* - cout << "Expose proc. wxRect: " << rect->x << ", " << rect->y << ", "; - cout << rect->width << ", " << rect->height << "\n\n"; - */ - - win->m_updateRects.Append((wxObject*) rect); - - if (event -> xexpose.count == 0) - { - wxPaintEvent event(win->GetId()); - event.SetEventObject(win); - win->GetEventHandler()->ProcessEvent(event); - - win->ClearUpdateRects(); - } - break; - } - default: - { - cout << "\n\nNew Event ! is = " << event -> type << "\n"; - break; - } - } -} - -// Unable to deal with Enter/Leave without a separate EventHandler (Motif 1.1.4) -void -wxCanvasEnterLeave (Widget drawingArea, XtPointer clientData, XCrossingEvent * event) -{ - XmDrawingAreaCallbackStruct cbs; - XEvent ev; - - //if (event->mode!=NotifyNormal) - // return ; - - // ev = *((XEvent *) event); // Causes Purify error (copying too many bytes) - ((XCrossingEvent &) ev) = *event; - - cbs.reason = XmCR_INPUT; - cbs.event = &ev; - - wxCanvasInputEvent (drawingArea, (XtPointer) NULL, &cbs); -} - -// Fix to make it work under Motif 1.0 (!) -void wxCanvasMotionEvent (Widget drawingArea, XButtonEvent * event) -{ -#if XmVersion<=1000 - - XmDrawingAreaCallbackStruct cbs; - XEvent ev; - - //ev.xbutton = *event; - ev = *((XEvent *) event); - cbs.reason = XmCR_INPUT; - cbs.event = &ev; - - wxCanvasInputEvent (drawingArea, (XtPointer) NULL, &cbs); -#endif -} - -void wxCanvasInputEvent (Widget drawingArea, XtPointer data, XmDrawingAreaCallbackStruct * cbs) -{ - wxWindow *canvas = (wxWindow *) wxWidgetHashTable->Get ((long) (Widget) drawingArea); - XEvent local_event; - - if (canvas==NULL) - return ; - - if (cbs->reason != XmCR_INPUT) - return; - - local_event = *(cbs->event); // We must keep a copy! - - /* - switch (local_event.xany.type) - { - case EnterNotify: - cout << "EnterNotify\n"; - break; - case LeaveNotify: - cout << "LeaveNotify\n"; - break; - case ButtonPress: - cout << "ButtonPress\n"; - break; - case ButtonRelease: - cout << "ButtonRelease\n"; - break; - case MotionNotify: - cout << "MotionNotify\n"; - break; - default: - cout << "Something else\n"; - break; - } - */ - - switch (local_event.xany.type) - { - case EnterNotify: - case LeaveNotify: - case ButtonPress: - case ButtonRelease: - case MotionNotify: - { - wxEventType eventType = wxEVT_NULL; - - if (local_event.xany.type == EnterNotify) - { - //if (local_event.xcrossing.mode!=NotifyNormal) - // return ; // Ignore grab events - eventType = wxEVT_ENTER_WINDOW; - // canvas->GetEventHandler()->OnSetFocus(); - } - else if (local_event.xany.type == LeaveNotify) - { - //if (local_event.xcrossing.mode!=NotifyNormal) - // return ; // Ignore grab events - eventType = wxEVT_LEAVE_WINDOW; - // canvas->GetEventHandler()->OnKillFocus(); - } - else if (local_event.xany.type == MotionNotify) - { - eventType = wxEVT_MOTION; - if (local_event.xmotion.is_hint == NotifyHint) - { - Window root, child; - Display *dpy = XtDisplay (drawingArea); - - XQueryPointer (dpy, XtWindow (drawingArea), - &root, &child, - &local_event.xmotion.x_root, - &local_event.xmotion.y_root, - &local_event.xmotion.x, - &local_event.xmotion.y, - &local_event.xmotion.state); - } - else - { - } - } - - else if (local_event.xany.type == ButtonPress) - { - if (local_event.xbutton.button == Button1) - { - eventType = wxEVT_LEFT_DOWN; - canvas->m_button1Pressed = TRUE; - } - else if (local_event.xbutton.button == Button2) - { - eventType = wxEVT_MIDDLE_DOWN; - canvas->m_button2Pressed = TRUE; - } - else if (local_event.xbutton.button == Button3) - { - eventType = wxEVT_RIGHT_DOWN; - canvas->m_button3Pressed = TRUE; - } - } - else if (local_event.xany.type == ButtonRelease) - { - if (local_event.xbutton.button == Button1) - { - eventType = wxEVT_LEFT_UP; - canvas->m_button1Pressed = FALSE; - } - else if (local_event.xbutton.button == Button2) - { - eventType = wxEVT_MIDDLE_UP; - canvas->m_button2Pressed = FALSE; - } - else if (local_event.xbutton.button == Button3) - { - eventType = wxEVT_RIGHT_UP; - canvas->m_button3Pressed = FALSE; - } - } - - wxMouseEvent wxevent (eventType); - wxevent.m_eventHandle = (char *) &local_event; - - wxevent.m_leftDown = ((eventType == wxEVT_LEFT_DOWN) - || (event_left_is_down (&local_event) - && (eventType != wxEVT_LEFT_UP))); - wxevent.m_middleDown = ((eventType == wxEVT_MIDDLE_DOWN) - || (event_middle_is_down (&local_event) - && (eventType != wxEVT_MIDDLE_UP))); - wxevent.m_rightDown = ((eventType == wxEVT_RIGHT_DOWN) - || (event_right_is_down (&local_event) - && (eventType != wxEVT_RIGHT_UP))); - - wxevent.m_shiftDown = local_event.xbutton.state & ShiftMask; - wxevent.m_controlDown = local_event.xbutton.state & ControlMask; - wxevent.m_altDown = local_event.xbutton.state & Mod3Mask; - wxevent.m_metaDown = local_event.xbutton.state & Mod1Mask; - wxevent.SetTimestamp(local_event.xbutton.time); - - // Now check if we need to translate this event into a double click - if (TRUE) // canvas->doubleClickAllowed) - { - if (wxevent.ButtonDown()) - { - long dclickTime = XtGetMultiClickTime((Display*) wxGetDisplay()) ; - - // get button and time-stamp - int button = 0; - if (wxevent.LeftDown()) button = 1; - else if (wxevent.MiddleDown()) button = 2; - else if (wxevent.RightDown()) button = 3; - long ts = wxevent.GetTimestamp(); - // check, if single or double click - if (canvas->m_lastButton && canvas->m_lastButton==button && (ts - canvas->m_lastTS) < dclickTime) - { - // I have a dclick - canvas->m_lastButton = 0; - switch ( eventType ) - { - case wxEVT_LEFT_DOWN: - wxevent.SetEventType(wxEVT_LEFT_DCLICK); - break; - case wxEVT_MIDDLE_DOWN: - wxevent.SetEventType(wxEVT_MIDDLE_DCLICK); - break; - case wxEVT_RIGHT_DOWN: - wxevent.SetEventType(wxEVT_RIGHT_DCLICK); - break; - - default : - break; - } - - } - else - { - // not fast enough or different button - canvas->m_lastTS = ts; - canvas->m_lastButton = button; - } - } - } - - wxevent.SetId(canvas->GetId()); - wxevent.SetEventObject(canvas); - wxevent.m_x = local_event.xbutton.x; - wxevent.m_y = local_event.xbutton.y; - canvas->GetEventHandler()->ProcessEvent (wxevent); - /* - if (eventType == wxEVT_ENTER_WINDOW || - eventType == wxEVT_LEAVE_WINDOW || - eventType == wxEVT_MOTION - ) - return; - */ - break; - } - case KeyPress: - { - KeySym keySym; - // XComposeStatus compose; - // (void) XLookupString ((XKeyEvent *) & local_event, wxBuffer, 20, &keySym, &compose); - (void) XLookupString ((XKeyEvent *) & local_event, wxBuffer, 20, &keySym, NULL); - int id = wxCharCodeXToWX (keySym); - - wxEventType eventType = wxEVT_CHAR; - - // TODO: Is this the correct criterion for wxEVT_KEY_DOWN down versus wxEVT_CHAR? - if (id > WXK_START) // Non-ASCII values - eventType = wxEVT_KEY_DOWN; - - wxKeyEvent event (eventType); - - if (local_event.xkey.state & ShiftMask) - event.m_shiftDown = TRUE; - if (local_event.xkey.state & ControlMask) - event.m_controlDown = TRUE; - if (local_event.xkey.state & Mod3Mask) - event.m_altDown = TRUE; - if (local_event.xkey.state & Mod1Mask) - event.m_metaDown = TRUE; - event.SetEventObject(canvas); - event.m_keyCode = id; - event.SetTimestamp(local_event.xkey.time); - - if (id > -1) - { - // Implement wxFrame::OnCharHook by checking ancestor. - wxWindow *parent = canvas->GetParent(); - while (parent && !parent->IsKindOf(CLASSINFO(wxFrame))) - parent = parent->GetParent(); - - if (parent) - { - event.SetEventType(wxEVT_CHAR_HOOK); - if (parent->GetEventHandler()->ProcessEvent(event)) - return; - event.SetEventType(wxEVT_CHAR); - } - - canvas->GetEventHandler()->ProcessEvent (event); - } - break; - } - case KeyRelease: - { - KeySym keySym; - (void) XLookupString ((XKeyEvent *) & local_event, wxBuffer, 20, &keySym, NULL); - int id = wxCharCodeXToWX (keySym); - - wxKeyEvent event (wxEVT_KEY_UP); - - if (local_event.xkey.state & ShiftMask) - event.m_shiftDown = TRUE; - if (local_event.xkey.state & ControlMask) - event.m_controlDown = TRUE; - if (local_event.xkey.state & Mod3Mask) - event.m_altDown = TRUE; - if (local_event.xkey.state & Mod1Mask) - event.m_metaDown = TRUE; - event.SetEventObject(canvas); - event.m_keyCode = id; - event.SetTimestamp(local_event.xkey.time); - - if (id > -1) - { - canvas->GetEventHandler()->ProcessEvent (event); - } - break; - } - case FocusIn: - { - if (local_event.xfocus.detail != NotifyPointer) - { - wxFocusEvent event(wxEVT_SET_FOCUS, canvas->GetId()); - event.SetEventObject(canvas); - canvas->GetEventHandler()->ProcessEvent(event); - } - break; - } - case FocusOut: - { - if (local_event.xfocus.detail != NotifyPointer) - { - wxFocusEvent event(wxEVT_KILL_FOCUS, canvas->GetId()); - event.SetEventObject(canvas); - canvas->GetEventHandler()->ProcessEvent(event); - } - break; - } - default: - break; - } -} - -void wxWindow::DoPaint() -{ - //TODO : make a temporary gc so we can do the XCopyArea below - if (0) // m_backingPixmap) - { - /* - Widget drawingArea = (Widget) m_drawingArea; - // int orig = GetDC()->GetLogicalFunction(); - // GetDC()->SetLogicalFunction (wxCOPY); - - // TODO: it may not be necessary to store m_pixmapOffsetX/Y; we - // should be able to calculate them. - XCopyArea (XtDisplay (drawingArea), m_backingPixmap, XtWindow (drawingArea), GetDC ()->gc, - m_pixmapOffsetX, m_pixmapOffsetY, - m_pixmapWidth, m_pixmapHeight, - 0, 0); - - // GetDC()->SetLogicalFunction (orig); - */ - } - else - { - wxPaintEvent event(GetId()); - event.SetEventObject(this); - GetEventHandler()->ProcessEvent(event); - } -} - -// SetSize, but as per old wxCanvas (with drawing widget etc.) -void wxWindow::CanvasSetSize (int x, int y, int w, int h, int sizeFlags) -{ - // A bit of optimization to help sort out the flickers. - int oldX, oldY, oldW, oldH; - GetSize(& oldW, & oldH); - GetPosition(& oldX, & oldY); - - bool useOldPos = FALSE; - bool useOldSize = FALSE; - - if ((x == -1) && (x == -1) && ((sizeFlags & wxSIZE_ALLOW_MINUS_ONE) == 0)) - useOldPos = TRUE; - else if (x == oldX && y == oldY) - useOldPos = TRUE; - - if ((w == -1) && (h == -1)) - useOldSize = TRUE; - else if (w == oldW && h == oldH) - useOldSize = TRUE; - - if (!wxNoOptimize::CanOptimize()) - { - useOldSize = FALSE; useOldPos = FALSE; - } - - if (useOldPos && useOldSize) - return; - - Widget drawingArea = (Widget) m_drawingArea; - bool managed = XtIsManaged(m_borderWidget ? (Widget) m_borderWidget : (Widget) m_scrolledWindow); - - if (managed) - XtUnmanageChild (m_borderWidget ? (Widget) m_borderWidget : (Widget) m_scrolledWindow); - XtVaSetValues((Widget) m_drawingArea, XmNresizePolicy, XmRESIZE_ANY, NULL); - - int xx = x; int yy = y; - AdjustForParentClientOrigin(xx, yy, sizeFlags); - - if (!useOldPos) - { - if (x > -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) - { - XtVaSetValues (m_borderWidget ? (Widget) m_borderWidget : (Widget) m_scrolledWindow, - XmNx, xx, NULL); - } - - if (y > -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) - { - XtVaSetValues (m_borderWidget ? (Widget) m_borderWidget : (Widget) m_scrolledWindow, - XmNy, yy, NULL); - } - } - - if (!useOldSize) - { - - if (w > -1) - { - if (m_borderWidget) - { - XtVaSetValues ((Widget) m_borderWidget, XmNwidth, w, NULL); - short thick, margin; - XtVaGetValues ((Widget) m_borderWidget, - XmNshadowThickness, &thick, - XmNmarginWidth, &margin, - NULL); - w -= 2 * (thick + margin); - } - - XtVaSetValues ((Widget) m_scrolledWindow, XmNwidth, w, NULL); - - Dimension spacing; - Widget sbar; - XtVaGetValues ((Widget) m_scrolledWindow, - XmNspacing, &spacing, - XmNverticalScrollBar, &sbar, - NULL); - Dimension wsbar; - if (sbar) - XtVaGetValues (sbar, XmNwidth, &wsbar, NULL); - else - wsbar = 0; - - w -= (spacing + wsbar); - - // XtVaSetValues ((Widget) m_drawingArea, XmNwidth, w, NULL); - } - if (h > -1) - { - if (m_borderWidget) - { - XtVaSetValues ((Widget) m_borderWidget, XmNheight, h, NULL); - short thick, margin; - XtVaGetValues ((Widget) m_borderWidget, - XmNshadowThickness, &thick, - XmNmarginHeight, &margin, - NULL); - h -= 2 * (thick + margin); - } - - XtVaSetValues ((Widget) m_scrolledWindow, XmNheight, h, NULL); - - Dimension spacing; - Widget sbar; - XtVaGetValues ((Widget) m_scrolledWindow, - XmNspacing, &spacing, - XmNhorizontalScrollBar, &sbar, - NULL); - Dimension wsbar; - if (sbar) - XtVaGetValues (sbar, XmNheight, &wsbar, NULL); - else - wsbar = 0; - - h -= (spacing + wsbar); - - // XtVaSetValues ((Widget) m_drawingArea, XmNheight, h, NULL); - - } - } - - if (managed) - XtManageChild (m_borderWidget ? (Widget) m_borderWidget : (Widget) m_scrolledWindow); - XtVaSetValues((Widget) m_drawingArea, XmNresizePolicy, XmRESIZE_NONE, NULL); - - /* - int ww, hh; - GetClientSize (&ww, &hh); - wxSizeEvent sizeEvent(wxSize(ww, hh), GetId()); - sizeEvent.SetEventObject(this); - - GetEventHandler()->ProcessEvent(sizeEvent); - */ - -} - -void wxWindow::CanvasSetClientSize (int w, int h) -{ - Widget drawingArea = (Widget) m_drawingArea; - - XtVaSetValues((Widget) m_drawingArea, XmNresizePolicy, XmRESIZE_ANY, NULL); - - if (w > -1) - XtVaSetValues ((Widget) m_drawingArea, XmNwidth, w, NULL); - if (h > -1) - XtVaSetValues ((Widget) m_drawingArea, XmNheight, h, NULL); - /* TODO: is this necessary? - allowRepainting = FALSE; - - XSync (XtDisplay (drawingArea), FALSE); - XEvent event; - while (XtAppPending (wxTheApp->appContext)) - { - XFlush (XtDisplay (drawingArea)); - XtAppNextEvent (wxTheApp->appContext, &event); - XtDispatchEvent (&event); - } - */ - - XtVaSetValues((Widget) m_drawingArea, XmNresizePolicy, XmRESIZE_NONE, NULL); - - /* TODO - allowRepainting = TRUE; - DoRefresh (); - */ - - /* - wxSizeEvent sizeEvent(wxSize(w, h), GetId()); - sizeEvent.SetEventObject(this); - - GetEventHandler()->ProcessEvent(sizeEvent); - */ -} - -void wxWindow::CanvasGetClientSize (int *w, int *h) const -{ - // Must return the same thing that was set via SetClientSize - Dimension xx, yy; - XtVaGetValues ((Widget) m_drawingArea, XmNwidth, &xx, XmNheight, &yy, NULL); - *w = xx; - *h = yy; -} - -void wxWindow::CanvasGetSize (int *w, int *h) const -{ - Dimension xx, yy; - if ((Widget) m_borderWidget) - XtVaGetValues ((Widget) m_borderWidget, XmNwidth, &xx, XmNheight, &yy, NULL); - else if ((Widget) m_scrolledWindow) - XtVaGetValues ((Widget) m_scrolledWindow, XmNwidth, &xx, XmNheight, &yy, NULL); - else - XtVaGetValues ((Widget) m_drawingArea, XmNwidth, &xx, XmNheight, &yy, NULL); - - *w = xx; - *h = yy; -} - -void wxWindow::CanvasGetPosition (int *x, int *y) const -{ - Position xx, yy; - XtVaGetValues (m_borderWidget ? (Widget) m_borderWidget : (Widget) m_scrolledWindow, XmNx, &xx, XmNy, &yy, NULL); - - // We may be faking the client origin. - // So a window that's really at (0, 30) may appear - // (to wxWin apps) to be at (0, 0). - if (GetParent()) - { - wxPoint pt(GetParent()->GetClientAreaOrigin()); - xx -= pt.x; - yy -= pt.y; - } - - *x = xx; - *y = yy; -} - -// Add to hash table, add event handler -bool wxWindow::AttachWidget (wxWindow* parent, WXWidget mainWidget, - WXWidget formWidget, int x, int y, int width, int height) -{ - wxAddWindowToTable((Widget) mainWidget, this); - if (CanAddEventHandler()) - { - XtAddEventHandler((Widget) mainWidget, - ButtonPressMask | ButtonReleaseMask | PointerMotionMask, // | KeyPressMask, - False, - wxPanelItemEventHandler, - (XtPointer) this); - } - - if (!formWidget) - { - XtTranslations ptr; - XtOverrideTranslations ((Widget) mainWidget, - ptr = XtParseTranslationTable (": resize()")); - XtFree ((char *) ptr); - } - - // Some widgets have a parent form widget, e.g. wxRadioBox - if (formWidget) - { - if (!wxAddWindowToTable((Widget) formWidget, this)) - return FALSE; - - XtTranslations ptr; - XtOverrideTranslations ((Widget) formWidget, - ptr = XtParseTranslationTable (": resize()")); - XtFree ((char *) ptr); - } - - if (x == -1) - x = 0; - if (y == -1) - y = 0; - SetSize (x, y, width, height); - - return TRUE; -} - -// Remove event handler, remove from hash table -bool wxWindow::DetachWidget(WXWidget widget) -{ - if (CanAddEventHandler()) - { - XtRemoveEventHandler((Widget) widget, - ButtonPressMask | ButtonReleaseMask | PointerMotionMask, // | KeyPressMask, - False, - wxPanelItemEventHandler, - (XtPointer)this); - } - - wxDeleteWindowFromTable((Widget) widget); - return TRUE; -} - -void wxPanelItemEventHandler (Widget wid, - XtPointer client_data, - XEvent* event, - Boolean *continueToDispatch) -{ - // Widget can be a label or the actual widget. - - wxWindow *window = (wxWindow *)wxWidgetHashTable->Get((long)wid); - if (window) - { - wxMouseEvent wxevent(0); - if (wxTranslateMouseEvent(wxevent, window, wid, event)) - { - window->GetEventHandler()->ProcessEvent(wxevent); - } - } - // TODO: probably the key to allowing default behaviour - // to happen. - // Say we set a m_doDefault flag to FALSE at the start of this - // function. Then in e.g. wxWindow::OnMouseEvent we can - // call Default() which sets this flag to TRUE, indicating - // that default processing can happen. Thus, behaviour can appear - // to be overridden just by adding an event handler and not calling - // wxWindow::OnWhatever. - // ALSO, maybe we can use this instead of the current way of handling - // drawing area events, to simplify things. - *continueToDispatch = True; -} - -static void wxScrollBarCallback(Widget scrollbar, XtPointer clientData, - XmScaleCallbackStruct *cbs) -{ - Widget scrolledWindow = XtParent (scrollbar); - wxWindow *win = (wxWindow *) wxWidgetHashTable->Get ((long) scrolledWindow); - int orientation = (int) clientData; - - wxEventType eventType = wxEVT_NULL; - switch (cbs->reason) - { - case XmCR_INCREMENT: - { - eventType = wxEVT_SCROLL_LINEDOWN; - break; - } - case XmCR_DECREMENT: - { - eventType = wxEVT_SCROLL_LINEUP; - break; - } - case XmCR_DRAG: - { - eventType = wxEVT_SCROLL_THUMBTRACK; - break; - } - case XmCR_VALUE_CHANGED: - { - // TODO: Should this be intercepted too, or will it cause - // duplicate events? - eventType = wxEVT_SCROLL_THUMBTRACK; - break; - } - case XmCR_PAGE_INCREMENT: - { - eventType = wxEVT_SCROLL_PAGEDOWN; - break; - } - case XmCR_PAGE_DECREMENT: - { - eventType = wxEVT_SCROLL_PAGEUP; - break; - } - case XmCR_TO_TOP: - { - eventType = wxEVT_SCROLL_TOP; - break; - } - case XmCR_TO_BOTTOM: - { - eventType = wxEVT_SCROLL_BOTTOM; - break; - } - default: - { - // Should never get here - wxFAIL_MSG("Unknown scroll event."); - break; - } - } - - wxScrollEvent event(eventType, win->GetId()); - event.SetEventObject(win); - event.SetPosition(cbs->value); - event.SetOrientation( (orientation == XmHORIZONTAL) ? wxHORIZONTAL : wxVERTICAL ); - - win->GetEventHandler()->ProcessEvent(event); -} - -bool wxTranslateMouseEvent(wxMouseEvent& wxevent, wxWindow *win, Widget widget, XEvent *xevent) -{ - switch (xevent->xany.type) - { - case EnterNotify: - case LeaveNotify: - case ButtonPress: - case ButtonRelease: - case MotionNotify: - { - wxEventType eventType = wxEVT_NULL; - - if (xevent->xany.type == LeaveNotify) - { - win->m_button1Pressed = FALSE; - win->m_button2Pressed = FALSE; - win->m_button3Pressed = FALSE; - return FALSE; - } - else if (xevent->xany.type == MotionNotify) - { - eventType = wxEVT_MOTION; - } - else if (xevent->xany.type == ButtonPress) - { - if (xevent->xbutton.button == Button1) - { - eventType = wxEVT_LEFT_DOWN; - win->m_button1Pressed = TRUE; - } - else if (xevent->xbutton.button == Button2) - { - eventType = wxEVT_MIDDLE_DOWN; - win->m_button2Pressed = TRUE; - } - else if (xevent->xbutton.button == Button3) - { - eventType = wxEVT_RIGHT_DOWN; - win->m_button3Pressed = TRUE; - } - } - else if (xevent->xany.type == ButtonRelease) - { - if (xevent->xbutton.button == Button1) - { - eventType = wxEVT_LEFT_UP; - win->m_button1Pressed = FALSE; - } - else if (xevent->xbutton.button == Button2) - { - eventType = wxEVT_MIDDLE_UP; - win->m_button2Pressed = FALSE; - } - else if (xevent->xbutton.button == Button3) - { - eventType = wxEVT_RIGHT_UP; - win->m_button3Pressed = FALSE; - } - else return FALSE; - } - else return FALSE; - - wxevent.m_eventHandle = (char *)xevent; - wxevent.SetEventType(eventType); - - Position x1, y1; - XtVaGetValues(widget, XmNx, &x1, XmNy, &y1, NULL); - - int x2, y2; - win->GetPosition(&x2, &y2); - - // The button x/y must be translated to wxWindows - // window space - the widget might be a label or button, - // within a form. - int dx = 0; - int dy = 0; - if (widget != (Widget)win->GetMainWidget()) - { - dx = x1; - dy = y1; - } - - wxevent.m_x = xevent->xbutton.x + dx; - wxevent.m_y = xevent->xbutton.y + dy; - - wxevent.m_leftDown = ((eventType == wxEVT_LEFT_DOWN) - || (event_left_is_down (xevent) - && (eventType != wxEVT_LEFT_UP))); - wxevent.m_middleDown = ((eventType == wxEVT_MIDDLE_DOWN) - || (event_middle_is_down (xevent) - && (eventType != wxEVT_MIDDLE_UP))); - wxevent.m_rightDown = ((eventType == wxEVT_RIGHT_DOWN) - || (event_right_is_down (xevent) - && (eventType != wxEVT_RIGHT_UP))); - - wxevent.m_shiftDown = xevent->xbutton.state & ShiftMask; - wxevent.m_controlDown = xevent->xbutton.state & ControlMask; - return TRUE; - } - } - return FALSE; -} - -bool wxTranslateKeyEvent(wxKeyEvent& wxevent, wxWindow *win, Widget widget, XEvent *xevent) -{ - switch (xevent->xany.type) - { - case KeyPress: - { - char buf[20]; - - KeySym keySym; - // XComposeStatus compose; - // (void) XLookupString ((XKeyEvent *) xevent, buf, 20, &keySym, &compose); - (void) XLookupString ((XKeyEvent *) xevent, buf, 20, &keySym, NULL); - int id = wxCharCodeXToWX (keySym); - - if (xevent->xkey.state & ShiftMask) - wxevent.m_shiftDown = TRUE; - if (xevent->xkey.state & ControlMask) - wxevent.m_controlDown = TRUE; - if (xevent->xkey.state & Mod3Mask) - wxevent.m_altDown = TRUE; - if (xevent->xkey.state & Mod1Mask) - wxevent.m_metaDown = TRUE; - wxevent.SetEventObject(win); - wxevent.m_keyCode = id; - wxevent.SetTimestamp(xevent->xkey.time); - - wxevent.m_x = xevent->xbutton.x; - wxevent.m_y = xevent->xbutton.y; - - if (id > -1) - return TRUE; - else - return FALSE; - break; - } - default: - break; - } - return FALSE; -} - -#define YAllocColor XAllocColor -XColor g_itemColors[5]; -int wxComputeColours (Display *display, wxColour * back, wxColour * fore) -{ - int result; - static XmColorProc colorProc; - - result = wxNO_COLORS; - - if (back) - { - g_itemColors[0].red = (((long) back->Red ()) << 8); - g_itemColors[0].green = (((long) back->Green ()) << 8); - g_itemColors[0].blue = (((long) back->Blue ()) << 8); - g_itemColors[0].flags = DoRed | DoGreen | DoBlue; - if (colorProc == (XmColorProc) NULL) - { - // Get a ptr to the actual function - colorProc = XmSetColorCalculation ((XmColorProc) NULL); - // And set it back to motif. - XmSetColorCalculation (colorProc); - } - (*colorProc) (&g_itemColors[wxBACK_INDEX], - &g_itemColors[wxFORE_INDEX], - &g_itemColors[wxSELE_INDEX], - &g_itemColors[wxTOPS_INDEX], - &g_itemColors[wxBOTS_INDEX]); - result = wxBACK_COLORS; - } - if (fore) - { - g_itemColors[wxFORE_INDEX].red = (((long) fore->Red ()) << 8); - g_itemColors[wxFORE_INDEX].green = (((long) fore->Green ()) << 8); - g_itemColors[wxFORE_INDEX].blue = (((long) fore->Blue ()) << 8); - g_itemColors[wxFORE_INDEX].flags = DoRed | DoGreen | DoBlue; - if (result == wxNO_COLORS) - result = wxFORE_COLORS; - } - - Display *dpy = display; - Colormap cmap = (Colormap) wxTheApp->GetMainColormap((WXDisplay*) dpy); - - if (back) - { - /* 5 Colours to allocate */ - for (int i = 0; i < 5; i++) - if (!YAllocColor (dpy, cmap, &g_itemColors[i])) - result = wxNO_COLORS; - } - else if (fore) - { - /* Only 1 colour to allocate */ - if (!YAllocColor (dpy, cmap, &g_itemColors[wxFORE_INDEX])) - result = wxNO_COLORS; - } - - return (result); - -} - -// Changes the foreground and background colours to be derived -// from the current background colour. -// To change the foreground colour, you must call SetForegroundColour -// explicitly. -void wxWindow::ChangeBackgroundColour() -{ - if (GetMainWidget()) - DoChangeBackgroundColour(GetMainWidget(), m_backgroundColour); - - // This not necessary -#if 0 - - if (m_scrolledWindow && (GetMainWidget() != m_scrolledWindow)) - { - DoChangeBackgroundColour(m_scrolledWindow, m_backgroundColour); - // Have to set the scrollbar colours back since - // the scrolled window seemed to change them - wxColour backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE) ; - - if (m_hScrollBar) - DoChangeBackgroundColour(m_hScrollBar, backgroundColour); - if (m_vScrollBar) - DoChangeBackgroundColour(m_vScrollBar, backgroundColour); - } -#endif -} - -void wxWindow::ChangeForegroundColour() -{ - if (GetMainWidget()) - DoChangeForegroundColour(GetMainWidget(), m_foregroundColour); - if (m_scrolledWindow && (GetMainWidget() != m_scrolledWindow)) - DoChangeForegroundColour(m_scrolledWindow, m_foregroundColour); -} - -// Change a widget's foreground and background colours. - -void wxWindow::DoChangeForegroundColour(WXWidget widget, wxColour& foregroundColour) -{ - // When should we specify the foreground, if it's calculated - // by wxComputeColours? - // Solution: say we start with the default (computed) foreground colour. - // If we call SetForegroundColour explicitly for a control or window, - // then the foreground is changed. - // Therefore SetBackgroundColour computes the foreground colour, and - // SetForegroundColour changes the foreground colour. The ordering is - // important. - - XtVaSetValues ((Widget) widget, - XmNforeground, foregroundColour.AllocColour(XtDisplay((Widget) widget)), - NULL); -} - -void wxWindow::DoChangeBackgroundColour(WXWidget widget, wxColour& backgroundColour, bool changeArmColour) -{ - wxComputeColours (XtDisplay((Widget) widget), & backgroundColour, - (wxColour*) NULL); - - XtVaSetValues ((Widget) widget, - XmNbackground, g_itemColors[wxBACK_INDEX].pixel, - XmNtopShadowColor, g_itemColors[wxTOPS_INDEX].pixel, - XmNbottomShadowColor, g_itemColors[wxBOTS_INDEX].pixel, - XmNforeground, g_itemColors[wxFORE_INDEX].pixel, - NULL); - - if (changeArmColour) - XtVaSetValues ((Widget) widget, - XmNarmColor, g_itemColors[wxSELE_INDEX].pixel, - NULL); -} - -void wxWindow::SetBackgroundColour(const wxColour& col) -{ - m_backgroundColour = col; - ChangeBackgroundColour(); -} - -void wxWindow::SetForegroundColour(const wxColour& col) -{ - m_foregroundColour = col; - ChangeForegroundColour(); -} - -void wxWindow::ChangeFont(bool keepOriginalSize) -{ - // Note that this causes the widget to be resized back - // to its original size! We therefore have to set the size - // back again. TODO: a better way in Motif? - Widget w = (Widget) GetLabelWidget(); // Usually the main widget - if (w && m_windowFont.Ok()) - { - int width, height, width1, height1; - GetSize(& width, & height); - - // lesstif 0.87 hangs here -#ifndef LESSTIF_VERSION - XtVaSetValues (w, - XmNfontList, (XmFontList) m_windowFont.GetFontList(1.0, XtDisplay(w)), - NULL); -#endif - - GetSize(& width1, & height1); - if (keepOriginalSize && (width != width1 || height != height1)) - { - SetSize(-1, -1, width, height); - } - } -} - -void wxWindow::SetFont(const wxFont& font) -{ - m_windowFont = font; - ChangeFont(); -} - -void wxWindow::ClearUpdateRects() -{ - wxNode* node = m_updateRects.First(); - while (node) - { - wxRect* rect = (wxRect*) node->Data(); - delete rect; - node = node->Next(); - } - m_updateRects.Clear(); -} - -bool wxWindow::ProcessAccelerator(wxKeyEvent& event) -{ - if (!m_acceleratorTable.Ok()) - return FALSE; - - int count = m_acceleratorTable.GetCount(); - wxAcceleratorEntry* entries = m_acceleratorTable.GetEntries(); - int i; - for (i = 0; i < count; i++) - { - wxAcceleratorEntry* entry = & (entries[i]); - if (entry->MatchesEvent(event)) - { - // Bingo, we have a match. Now find a control - // that matches the entry command id. - - // Need to go up to the top of the window hierarchy, - // since it might be e.g. a menu item - wxWindow* parent = this; - while (parent && !parent->IsKindOf(CLASSINFO(wxFrame)) && !parent->IsKindOf(CLASSINFO(wxDialog))) - parent = parent->GetParent(); - - if (!parent) - return FALSE; - - if (parent->IsKindOf(CLASSINFO(wxFrame))) - { - // Try for a menu command - wxFrame* frame = (wxFrame*) parent; - if (frame->GetMenuBar()) - { - wxMenuItem* item = frame->GetMenuBar()->FindItemForId(entry->GetCommand()); - if (item) - { - wxCommandEvent commandEvent(wxEVT_COMMAND_MENU_SELECTED, entry->GetCommand()); - commandEvent.SetEventObject(frame); - - // If ProcessEvent returns TRUE (it was handled), then - // the calling code will skip the event handling. - return frame->GetEventHandler()->ProcessEvent(commandEvent); - } - } - } - - // Find a child matching the command id - wxWindow* child = parent->FindWindow(entry->GetCommand()); - - // No such child - if (!child) - return FALSE; - - // Now we process those kinds of windows that we can. - // For now, only buttons. - if (child->IsKindOf(CLASSINFO(wxButton))) - { - wxCommandEvent commandEvent (wxEVT_COMMAND_BUTTON_CLICKED, child->GetId()); - commandEvent.SetEventObject(child); - return child->GetEventHandler()->ProcessEvent(commandEvent); - } - - return FALSE; - } // matches event - }// for - - // We didn't match the key event against an accelerator. - return FALSE; -} - -/* -* wxNoOptimize: switch off size optimization -*/ - -int wxNoOptimize::m_count = 0; - -wxNoOptimize::wxNoOptimize() -{ - m_count ++; -} - -wxNoOptimize::~wxNoOptimize() -{ - m_count --; -} - -bool wxNoOptimize::CanOptimize() -{ - return (m_count == 0); -} - diff --git a/src/motif/wxwin.xbm b/src/motif/wxwin.xbm deleted file mode 100644 index 9c70498190..0000000000 --- a/src/motif/wxwin.xbm +++ /dev/null @@ -1,46 +0,0 @@ -#define wxwin.xbm_width 64 -#define wxwin.xbm_height 64 -static char wxwin.xbm_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, - 0xff, 0xff, 0x1f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, - 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x40, 0x80, 0xc7, 0x19, - 0x8e, 0x01, 0x50, 0x00, 0x40, 0x00, 0xc7, 0x39, 0xcf, 0x01, 0x70, 0x00, - 0x40, 0x00, 0xc7, 0x31, 0x3c, 0x00, 0x50, 0x00, 0x40, 0x00, 0xc7, 0x21, - 0x1c, 0x00, 0x70, 0x00, 0x40, 0x80, 0xe3, 0x20, 0x38, 0x00, 0x50, 0x00, - 0x40, 0x80, 0xe3, 0x30, 0x3c, 0x00, 0x70, 0x00, 0x40, 0x80, 0xe3, 0x78, - 0x76, 0x01, 0x50, 0x00, 0x40, 0x00, 0xdf, 0xff, 0xf3, 0x20, 0x70, 0x00, - 0x40, 0x00, 0x8e, 0xff, 0x61, 0x70, 0x50, 0x00, 0x40, 0x00, 0x00, 0xfc, - 0x01, 0xf8, 0x70, 0x00, 0x40, 0x00, 0x00, 0xfc, 0x01, 0xfc, 0x51, 0x00, - 0x40, 0x00, 0x00, 0xfe, 0x03, 0xfc, 0x73, 0x00, 0x40, 0x00, 0x00, 0xff, - 0x03, 0xf8, 0x51, 0x00, 0x40, 0x00, 0x00, 0xff, 0x07, 0xf0, 0x70, 0x00, - 0x40, 0x00, 0x80, 0xff, 0x07, 0x60, 0x50, 0x00, 0x40, 0x00, 0x80, 0xff, - 0x0f, 0xfc, 0x70, 0x00, 0x40, 0x00, 0xc0, 0xff, 0x1f, 0xfc, 0x50, 0x00, - 0x40, 0x00, 0xe0, 0xff, 0x1f, 0xfc, 0x70, 0x00, 0x40, 0x00, 0xf0, 0x0f, - 0x00, 0xfc, 0x50, 0x00, 0x40, 0x00, 0xf0, 0x07, 0x00, 0xfc, 0x70, 0x00, - 0x40, 0x00, 0xf8, 0x07, 0x00, 0xfc, 0x50, 0x00, 0x40, 0x00, 0xfc, 0x03, - 0x00, 0xfc, 0x70, 0x00, 0x40, 0x00, 0xfc, 0x01, 0x00, 0xfc, 0x50, 0x00, - 0x40, 0x00, 0xfe, 0x00, 0x00, 0xfc, 0x70, 0x00, 0x40, 0x00, 0xfe, 0x00, - 0x00, 0xfc, 0x50, 0x00, 0x40, 0x00, 0x7f, 0x00, 0x00, 0xfc, 0x70, 0x00, - 0x40, 0x80, 0x7f, 0x00, 0x00, 0xfc, 0x50, 0x00, 0x40, 0x80, 0x3f, 0x00, - 0x00, 0xfc, 0x70, 0x00, 0x40, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x50, 0x00, - 0x40, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x70, 0x00, 0x40, 0xe0, 0xff, 0xff, - 0xff, 0xff, 0x50, 0x00, 0x40, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x70, 0x00, - 0x40, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x50, 0x00, 0x40, 0xf0, 0xff, 0xff, - 0xff, 0xff, 0x70, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, - 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x40, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x50, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, - 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5f, 0x00, 0x80, 0xaa, 0xaa, 0xaa, - 0xaa, 0xaa, 0x6a, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/src/motif/xmcombo/combobox.doc b/src/motif/xmcombo/combobox.doc deleted file mode 100644 index 41ec4ac5e1..0000000000 --- a/src/motif/xmcombo/combobox.doc +++ /dev/null @@ -1,220 +0,0 @@ -Welcome to the ComboBox widget for Motif 1.1 or 1.2 (maybe even 2.0...)! -This is now version 1.32. -THERE ARE A LOT OF NEW RESOURCES AVAILABLE SO PLEASE READ THE -DOCUMENTATION (in ComboBox_eng.dvi)!!! - -If you're in doubt, the primary source of this widget is - ftp.informatik.rwth-aachen.de (137.226.112.172) - The source is in: /pub/packages/ComboBox/ComboBox.tar.gz -This is our campus server in Aachen, Germany. From outside Europe -please also contact: - ftp.x.org (198.112.44.100) - There you'll find the source in: - /contrib/widgets/motif/ComboBox/ComboBox.tar.gz -There are many local ftp servers that mirror the /contrib directory. Thus -with a delay of one or two days you'll also find the source on many other -ftp sites. - -PLEASE READ THIS INFORMATION CAREFULLY. IT ALWAYS CONTAINS THE MOST -RECENT INFORMATION. - -Whats new? (changes since the last version are marked with an asterisk) - * Some minor changes concerning the drop down list layout have been made in - order to correct some minor quirks. - * Updated files for VMS users (hellooooo -- where are you?!!) - - A real man page for use with troff/groff. It's in ComboBox.groff. - - Some applications like GUI development tools or TclMotif were unable to - get notice of these special resources because they were implemented - through the core's setValues method. Thus they don't appeared in the - resource list because there aren't any instance variables connected to - them. These mirror resources instead belong to child widgets. With 1.23 - the resource list (which can be queried by XtGetResourceList()) contains - entries for all mirror resources although the initial value setting is - always zero. But this should'nt matter. You can switch off these entries - by setting -DDONT_LOOK_IN_THE_MIRROR when compiling ComboBox.c. - - The selection policies XmSINGLE_SELECT and XmBROWSE_SELECT are now - supported. - - A new resource called XmNstaticList has been added, which switches the combo - box into a new mode with the drop down list statically displayed. - - Support of XmNautomaticSelection (like the resource known from XmList). - - New callbacks XmNunselectionCallback, XmNdefaultActionCallback, - XmNmodifyVerifyCallback, XmNmotionVerifyCallback and XmNvalueChangedCallback - added (don't know whether I forgot to mention one...). - - New convenience function XmComboBoxClearItemSelection() for deselecting - any selection in the combo box (if XmNselectionPolicy is XmSINGLE_SELECT). - - New demo app called FontSel. It shows how to realize a full blown - font selection dialog (even for scalable fonts) using combo boxes. - - Some additional casting has been added to the source, so it seems - now really to be ANSI compliant. - - can be compiled with Motif 1.2. (Tested on Sun & HP yet) - - many new resources & a callback that is called whenever the drop down - list gets dropped down or hidden. - - corrected a few minor typos in the header files (mis-spelled function - prototypes) and some minor quirks in the source. - - A FULL-BLOWN ENGLISH DOCUMENTATION (dvi file) - If you can't process dvi files you can download a post script variant - from ftp.informatik.rwth-aachen.de (137.226.112.172) as - /pub/packages/ComboBox/ComboBox_eng.ps.gz - - The XmNitems and XmNitemCount resources can now be set at any time (not - only when creating the ComboBox widget). - - Corrected some minor memory leaks in the source as well as some typos and - errors in the documentation. - - Drag'n'Drop is now supported with Motif 1.2. - - fvwm's handling of FocusOut events supported. - - -Well - if you never heard of ComboBoxes you'll have to figure out -yourself what these strange widgets really are. The following text -will only explain how to include it into your own code. (Just as a little -hint: combo boxes are well known from M$ Windoze. A combo box consists -of a text input field with an arrow button besides it. When you click -on the arrow button the combo box pops up a list just below its input -area. You can now browse in it or pop it down by pressing the arrow button -again.) - -The source code is now in (wide public) use for nearly a year. -(before this time it was tested for half a year in the Institut fuer -Geometrie und Praktische Mathematik, where I'm working). So you get a well -tested piece of widget magic. Please feel free to report any trouble you -have using the ComboBox widget. But be patient - I'm just a student. In the -meantime I've received a couple of reports and hopefully the widget now can -be used on many well known systems as well as with Motif 1.1 and 1.2. I've -heard of people using the ComboBox widget with Motif 2.0, because they need -the many features... But there seems to be problems with the subclassing -mechanism, so the sanity check CheckComboBox() fails. This check is now -disabled if the source detects a Motif 2.0 release. - -BTW - I'm collecting picture postcards...if you have one with a nice picture of -the place you're living in, don't hesitate... 8-) - -1. To compile you will need at least Motif :-) - (or :-( depending on your point of view...) - and an *ANSI* c compiler (the code is completely ANSI - - no more mess with the old K&R style)! - To compile, try something like - $ cc -DFUNCPROTO -c ComboBox.c - this should do it's work. -DFUNCPROTO is needed because the function - prototypes would be K&R style without it. In addition you often need - to specify to the compiler that the source is ANSI. (-ansi with gcc) - -2. Place a - #include "ComboBox.h" - at the top of your source file and create the widget just like any - other ordinary widget. The class is xmComboBoxWidgetClass. There is - no convenience function since it's hardly ever needed with this - widget. - - To compile the short demo: - $ cc -DFUNCPROTO ComboBoxDemo.c -o ComboBoxDemo ComboBox.o \ - -lXm -lXt -lX11 - On some machines you'll need to link additional libs (like network - and socket libs). - Or use the makefile (first edit it accordingly to your needs): - $ make demo - Run the demo with: - $ ./ComboBoxDemo - - I don't provide a makefile for every system/compiler combination - because this widget is intended to be placed seamless into the - existing Motif widget set. Thus, compile it and if all is ok, then - copy the includes to the Xm directory and the object file to a - suitable place in your file system -- but don't even think of - /dev/null as a good destination ;-) - - To compile the FontSel demo: - Edit the makefile (if you haven't already done so), then do a: - $ make FontSel - And run the Font Selector demo: - $ ./FontSel - - If you also have the ButtonFace Library you may want to do a - $ make FontSelX - instead. This will use my pictural push buttons for okay, cancel and help. - -3. The ComboBox consists primarily of a XmManager descendant - the - widget you'll get from XtCreateWidget(). This widget contains several - more widgets as its childs: a XmTextField and some other widgets. - You *must* not modify any resources of the TextField directly - this - leads sooner or later to trouble. Instead all the necessary instance - variables of the TextField are accessible through the main widget - (the one XtCreateWidget() returned). - There are many (convenience) functions like the ones for XmTextFields - and XmLists to set the TextField's text, add items to the drop down - list and and and... please see ComboBox.h for details (you know: - the documentation is under work...) - -4. There is one special resource called "persistentDropDown". It - defaults to "False". Its purpose it not easy to explain since that - has to do with the way your window manager is set up. If you're - using the explicit focus methode (that is: you move the keyboard - focus from application to application by clicking on the top level - window) you're lucky - don't ever think of this resource. For all - those other people (like me): if the window manager is set up to - give the keyboard focus to the top level window the mouse cursor - is over you'll notice one annoying "feature". (It's really *not* - a bug ;-) ) If you drop down the ComboBox's list (by clicking on - the arrow right beside the text field) and move the mouse cursor - out of the window the ComboBox resides in the list immediatly - disappears. That happens because the ComboBox looses the keyboard - focus. You can try to bypass that behavior by setting - "persistentDropDown" to "True" if you like. In the application's - resource file a line like - *YourApp*ComboBox.persistentDropDown: True - should do the job. But remember: whether this will work depends - on the window manager you're using. I have testet this with - Silicon Graphics' 4dwm (a mwm clone). - -5. On some window managers the drop down list gets hidden as soon as - the user moves the mouse cursor into the list. If this happens try - to set the resource "twmHandlingOn" to "True". You can do this - on the command line: - ComboBoxDemo -xrm "*.twmHandlingOn: True" - This should do it's job with twm as well as fvwm. With olwm you shouldn't - need to set one of the special resources. - -6. The combo box has been reported to run sucessfully on: - Silicon Graphics, Sun, HP, IBM RS6000, PC, even VMS! - Linux, of course...! - Attention VMS folks! You'll find two files called "motif11.opt" or - "motif12.opt" and "vmsmake.com" in this packages. They are provided by - Vincent Li. You'll hopefully know what to do with these two - files. They are provided "as is" with no warranty. Please read the file - "readme.vms". - -42. Known bugs: you will need a german dictionary to understand all the - jokes in the source and in the german documentation. - -That's it! Enjoy using this ComboBox widget. -(More than 160 downloads yet within the first 3 weeks -- seems that I've -filled in a real gap in Motif. Thanks to all who encouraged me to do -further work on the ComboBox widget -- especially Chris Marotz!) - -You may also want to visit my "Motif Programming Cornor" at - file://ftp.igpm.rwth-aachen.de/arc/pub/unix/html/motifcorner.html -with tips & tricks about Motif. - -I really don't understand why the folks at OSF didn't implemented -something like the M$ Windoze ComboBox in Motif. Maybe they have -had their moti"f"es... (Rumor has spread it that the mysterious -Motif 2.0 will have one - whow! after many years, the OSF folk got it!) - -P.S.: This software is Free Software. Please refer to the file - COPYING, which you should have received together this - file and the source code of the combo box widget. - However if you find this widget to be usefull, you are encouraged - to donate a reasonable amount to a charitable institution -- - there are enough people out there who need help! Sometimes I got - the strong impression that programmers tend to get lost in their - own "virtual reality" - sitting in front of their screen, hacking - new algorithms and forget about everything around them. So please - don't forget about people who need help. - -(c) 1993, 1994 Harald Albrecht -Institut fuer Geometrie und Praktische Mathematik -Rheinisch-Westfaelische Technische Universitaet Aachen, -D-52056 Aachen, Germany -albrecht@igpm.rwth-aachen.de - -Bad Aachen -- Die Stadt der Printe. Warum Aachen ein Kurbad ist? --- Wieso Kurbad? "Bad" heisst doch nur, dass es hier staendig regnet (wenn -es eben 'mal nicht schneit...) diff --git a/src/motif/xmcombo/combobox.man b/src/motif/xmcombo/combobox.man deleted file mode 100644 index 026f0a31f1..0000000000 --- a/src/motif/xmcombo/combobox.man +++ /dev/null @@ -1,1386 +0,0 @@ - - - -XmComboBox(3Xm) Harry's Motif Tools XmComboBox(3Xm) - - -NNAAMMEE - XmComboBox - The Combo Box widget class - -SSYYNNOOPPSSIISS - ##iinncclluuddee <> - - Depending on your system's configuration the place of this - include file may vary. In doubt, contact your local system - administrator. Or run in circles and shout. - - -DDEESSCCRRIIPPTTIIOONN - The ComboBox widget allows the user to select elements - from a list of choices, and enter their own values in a - text widget. To conserve screen space, the list of choices - is shown only when the user selects the down arrow button. - The choices may then be selected from this list. The list - will automatically by removed when the user selects an - item in the list. When the list is removed, the item that - was selected will be placed in the text widget. Typing the - escape key when the list is up, cancels the list popup. - - CCllaasssseess - ComboBox inherits behaviour and resources from CCoorree and - CCoommppoossiittee, CCoonnssttrraaiinntt and XXmmMMaannaaggeerr classes. - - The class pointer is xxmmCCoommbbooBBooxxWWiiddggeettCCllaassss. - - The class name is XXmmCCoommbbooBBooxx. - - NNeeww RReessoouurrcceess - The following table defines a set of widget resources used - by the programmer to specify data. The programmer can also - set the resource values for the inherited classes to set - attributes for this widget. To reference a resource by - name or by class in a .Xdefaults file, remove the XXmmNN or - XXmmCC prefix and use the remaining letters. To specify one - of the defined values for a resource in a .Xdefaults file, - remove the XXmm prefix and use the remaining letters (in - either lowercase or uppercase, but include any underscores - between words). The codes in the access column indicate if - the given resource can be set at creation time (C), set by - using XXttSSeettVVaalluueess (S), retrieved by using XXttGGeettVVaalluueess (G), - or is not applicable (N/A). - - XXmmCCoommbbooBBooxx RReessoouurrccee SSeett - ----------------------------------------------------------------- - NNaammee DDeeffaauulltt AAcccceessss - CCllaassss TTyyppee - ----------------------------------------------------------------- - XmNactivateCallback NULL C - XmCCallback XtCallbackList - ----------------------------------------------------------------- - - - - -Version 1.31 20 March 1995 1 - - - - - -XmComboBox(3Xm) Harry's Motif Tools XmComboBox(3Xm) - - - XmNalignment XmALIGNMENT_CENTER CSG - XmCAlignment unsigned char - ----------------------------------------------------------------- - XmNarrowSpacingOn False CSG - XmNCArrowSpacingOn Boolean - ----------------------------------------------------------------- - XmNautomaticSelection False CSG - XmCAutomaticSelection Boolean - ----------------------------------------------------------------- - XmNblinkRate 500 CSG - XmCBlinkRate int - ----------------------------------------------------------------- - XmNcolumns dynamic CSG - XmCColumns short - ----------------------------------------------------------------- - XmNcursorPosition 0 CSG - XmCCursorPosition XmTextPosition - ----------------------------------------------------------------- - XmNcursorPositionVisible True CSG - XmCCursorPositionVisible Boolean - ----------------------------------------------------------------- - XmNdefaultActionCallback NULL CSG - XmCCallback XtCallbackList - ----------------------------------------------------------------- - XmNdropDownCallback NULL CSG - XmCDropDownCallback XtCallbackList - ----------------------------------------------------------------- - XmNdropDownCursor center_ptr CSG - XmCDropDownCursor Cursor - ----------------------------------------------------------------- - XmNdropDownOffset dynamic CSG - XmCDropDownOffset Position - ----------------------------------------------------------------- - XmNeditable False CG - XmCEditable Boolean - ----------------------------------------------------------------- - XmNfontList dynamic CSG - XmCFontList XmFontList - ----------------------------------------------------------------- - XmNitemCount 0 CSG - XmCItemCount int - ----------------------------------------------------------------- - XmNitems NULL CSG - XmCItems XmStringTable - ----------------------------------------------------------------- - XmNlabelFontList dynamic CSG - XmCLabelFontList XmFontList - ----------------------------------------------------------------- - XmNlabelInsensitivePixmap XmUNSPECIFIED_PIXMAP CSG - XmCLabelInsensitivePixmap Pixmap - ----------------------------------------------------------------- - XmNlabelMarginBottom 0 CSG - - - - - -Version 1.31 20 March 1995 2 - - - - - -XmComboBox(3Xm) Harry's Motif Tools XmComboBox(3Xm) - - - XmCLabelMarginBottom Dimension - ----------------------------------------------------------------- - XmNlabelMarginHeight 2 CSG - XmCLabelMarginHeight Dimension - ----------------------------------------------------------------- - XmNlabelMarginLeft 0 CSG - XmCLabelMarginLeft Dimension - ----------------------------------------------------------------- - XmNlabelMarginRight 0 CSG - XmCLabelMarginRight Dimension - ----------------------------------------------------------------- - XmNlabelMarginTop 0 CSG - XmCLabelMarginTop Dimension - ----------------------------------------------------------------- - XmNlabelMarginWidth 0 CSG - XmCLabelMarginWidth Dimension - ----------------------------------------------------------------- - XmNlabelPixmap XmUNSPECIFIED_PIXMAP CSG - XmCLabelPixmap Pixmap - ----------------------------------------------------------------- - XmNlabelString dynamic CSG - XmCXmString XmString - ----------------------------------------------------------------- - XmNlabelType XmSTRING CSG - XmCLabelType unsigned char - ----------------------------------------------------------------- - XmNlistMarginHeight 0 CSG - XmCListMarginHeight Dimension - ----------------------------------------------------------------- - XmNlistMarginWidth 0 CSG - XmCListMarginWidth Dimension - ----------------------------------------------------------------- - XmNlistSizePolicy XmVARIABLE CG - XmCListSizePolicy unsigned char - ----------------------------------------------------------------- - XmNlistSpacing 0 CSG - XmCListSpacing Dimension - ----------------------------------------------------------------- - XmNmarginHeight 5 CSG - XmCMarginHeight Dimension - ----------------------------------------------------------------- - XmNmarginWidth 5 CSG - XmCMarginWidth Dimension - ----------------------------------------------------------------- - XmNmaxLength largest integer CSG - XmCMaxLength int - ----------------------------------------------------------------- - XmNmodifyVerifyCallback NULL CSG - XmCCallback XtCallbackList - ----------------------------------------------------------------- - XmNmotionVerifyCallback NULL CSG - XmCCallback XtCallbackList - ----------------------------------------------------------------- - - - - -Version 1.31 20 March 1995 3 - - - - - -XmComboBox(3Xm) Harry's Motif Tools XmComboBox(3Xm) - - - XmNpersistentDropDown False CSG - XmCPersistentDropDown Boolean - ----------------------------------------------------------------- - XmNscrollBarDisplayPolicy XmAS_NEEDED CSG - XmCScrollBarDisplayPolicy unsigned char - ----------------------------------------------------------------- - XmNselectionCallback NULL CSG - XmCCallback XtCallbackList - ----------------------------------------------------------------- - XmNselectionPolicy XmBROWSE_SELECT CG - XmCSelectionPolicy unsigned char - ----------------------------------------------------------------- - XmNselectThreshold 5 CSG - XmCSelectThreshold int - ----------------------------------------------------------------- - XmNshowLabel False CG - XmCShowLabel Boolean - ----------------------------------------------------------------- - XmNsorted False CSG - XmCSorted Boolean - ----------------------------------------------------------------- - XmNsortingCallback NULL CSG - XmCCallback XtCallbackList - ----------------------------------------------------------------- - XmNsquareArrow False CSG - XmCSquareArrow Boolean - ----------------------------------------------------------------- - XmNstaticList False CSG - XmCStaticList Boolean - ----------------------------------------------------------------- - XmNstringDirection dynamic CSG - XmCStringDirection XmStringDirection - ----------------------------------------------------------------- - XmNtwmHandlingOn False CSG - XmCTwmHandlingOn Boolean - ----------------------------------------------------------------- - XmNtopItemPostion 1 G - XmCTopItemPostion int - ----------------------------------------------------------------- - XmNunselectionCallback NULL CSG - XmCCallback XtCallbackList - ----------------------------------------------------------------- - XmNvalue "" CSG - XmCValue String - ----------------------------------------------------------------- - XmNvalueChangedCallback NULL CSG - XmCCallback XtCallbackList - ----------------------------------------------------------------- - XmNvisibleItemCount 8 CSG - XmCVisibleItemCount Int - ----------------------------------------------------------------- - - XXmmNNaaccttiivvaatteeCCaallllbbaacckk - Specifies a list of callbacks to be called when the - - - -Version 1.31 20 March 1995 4 - - - - - -XmComboBox(3Xm) Harry's Motif Tools XmComboBox(3Xm) - - - user presses either the key "Enter" or "Activate". - The type of the structure passed to this callback - is XXmmAAnnyyCCaallllbbaacckkSSttrruucctt and the reason is - XXmmCCRR__AACCTTIIVVAATTEE. - - XXmmNNaalliiggnnmmeenntt - The alignment (left to right) for the label's text - or pixmap. Possible values are XXmmAALLIIGGNN-- - MMEENNTT__BBEEGGIINNNNIINNGG, XXmmAALLIIGGNNMMEENNTT__CCEENNTTEERR, and XXmmAALLIIGGNN-- - MMEENNTT__EENNDD. - - XXmmNNaauuttoommaattiiccSSeelleeccttiioonn - Indicates whether the XXmmNNsseelleeccttiioonnCCaallllbbaacckk is - invoked each time the user moves into a new item if - XXmmNNaauuttoommaattiiccSSeelleeccttiioonn is TTrruuee and the selection - mode is XXmmBBRROOWWSSEE__SSEELLEECCTT. If set to FFaallssee the XXmmNNss-- - eelleeccttiioonnCCaallllbbaacckk is not invoked until the user - releases the mouse button. - - XXmmNNaarrrroowwSSppaacciinnggOOnn - Indicates whether a gap is displayed between the - arrow button and the text input field if this - resource is set to TTrruuee and XXmmNNeeddiittaabbllee is also set - to TTrruuee. If this resource is set to FFaallssee the - combo box widget will never display a gab between - the arrow button and the text area, irrespective of - the setting of XXmmNNeeddiittaabbllee. Note that setting - XXmmNNaarrrroowwSSppaacciinnggOOnn to FFaallssee doesn not conform to - common GUI styles. And it prevents the user from - easily recognizing whether the combo box is - editable or not. - - XXmmNNbblliinnkkRRaattee - The time in milliseconds that the cursor spends - being visible or invisible. A value of 0 prevents - the cursor from blinking. - - XXmmNNbboorrddeerrWWiiddtthh - That's no new resource but is already introduced in - the core class. This class overrides the default - value and sets it to zero. You can however override - it again if you're dissatisfied with the new - default setting. - - XXmmNNccoolluummnnss - Specifies the initial width of the input field mea- - sured in character spaces. The default value - depends on the value of the width of the combo box. - - XXmmNNccuurrssoorrPPoossiittiioonn - Indicates the position in the text where the insert - cursor is to be located. Its position is the offset - of characters and it starts with offset 0 at the - beginning of the text. - - - -Version 1.31 20 March 1995 5 - - - - - -XmComboBox(3Xm) Harry's Motif Tools XmComboBox(3Xm) - - - XXmmNNccuurrssoorrPPoossiittiioonnVViissiibbllee - Flags whether the insert cursor position is marked - by a blinking cursor. - - XXmmNNddeeffaauullttAAccttiioonnCCaallllbbaacckk - Specifies a list of callbacks that is called every - time an item is double clicked. The reason is - XXmmCCRR__DDEEFFAAUULLTT__AACCTTIIOONN. Please remember that you - can't use this callback if XXmmNNssttaattiiccLLiisstt is FFaallssee - because the list is immediatly hidden after the - user selected an item from the list. Thus the user - can't double click on any item within the list. - - XXmmNNddrrooppDDoowwnnCCaallllbbaacckk - This is a list of callbacks to be called when the - list is about to be shown or hidden. The reasons - are XXmmCCRR__SSHHOOWW__LLIISSTT or XXmmCCRR__HHIIDDEE__LLIISSTT. - - XXmmNNddrrooppDDoowwnnCCuurrssoorr - Specifies the cursor to be used whenever the mouse - cursor is within the drop down list. - - XXmmNNddrrooppDDoowwnnOOffffsseett - Specifies the distance between the left border of - the list and the left border of the input field. - The default value is set to the width of the arrow - button. Only positive values are allowed for XXmmNN-- - ddrrooppDDoowwnnOOffffsseett, negative ones will be ignored. - - XXmmNNeeddiittaabbllee - Specifies the type of combo box. If set to True, - the combo box contains an editable input field. - Therefore, the user is free to select entries out - of the list and to enter new text or modify it. In - the other case, with XmNeditable set to False the - user can solely browse in and select entries out of - the list. - - XXmmNNffoonnttLLiisstt - Indicates the font list to be used for the input - field and the list. If the value is NULL at ini- - tialization, it is initialized by looking up the - parent hierarchy of the widget for an ancestor that - is a subclass of XXmmBBuulllleettiinnBBooaarrdd, XXmmVVeennddoorrSShheellll or - XXmmMMeennuuSShheellll. If such an ancestor is found, it's - font list will be taken by the combo box widget. - - XXmmNNiitteemmCCoouunntt - Specifies the total number of items in the list. - - XXmmNNiitteemmss - Points to an array of compound strings representing - the items to be displayed in the list. By means of - this a program can find out what items the list - - - -Version 1.31 20 March 1995 6 - - - - - -XmComboBox(3Xm) Harry's Motif Tools XmComboBox(3Xm) - - - contains. It is also possible to set the contents - of the list box in one step by setting this - resource to a new array of compound strings. Please - remember: always set XXmmNNiitteemmss and XXmmNNiitteemmCCoouunntt - together in the same call to XXttSSeettVVaalluueess or - XXttVVaaSSeettVVaalluueess. If you ignore this rule the combo - box will ignore you and your attempt to set these - resources. - - XXmmNNllaabbeellIInnsseennssiittiivveePPiixxmmaapp - Specifies a pixmap used as the button face if XXmmNN-- - llaabbeellTTyyppee is set to XXmmPPIIXXMMAAPP and the combo box wid- - get is insensitive. - - XXmmNNllaabbeellPPiixxmmaapp - Specifies a pixmap to be displayed to the left of - the input field if XXmmNNllaabbeellTTyyppee is XXmmPPIIXXMMAAPP and - XXmmNNsshhoowwLLaabbeell is True (of course). - - XXmmNNllaabbeellSSttrriinngg - Specifies the the compound string to be displayed - if XXmmNNllaabbeellTTyyppee is set to XXmmSSTTRRIINNGG and XXmmNNsshhoowwLLaabbeell - is True. - - XXmmNNllaabbeellTTyyppee - The type of label (either string or pixmap). Possi- - ble values are XXmmPPIIXXMMAAPP and XXmmSSTTRRIINNGG. - - XXmmNNllaabbeellMMaarrggiinnTToopp,, XXmmNNllaabbeellMMaarrggiinnBBoottttoomm - XXmmNNllaabbeellMMaarrggiinnLLeefftt,, XXmmNNllaabbeellMMaarrggiinnRRiigghhtt - The amount of space between one side of the label - and the nearest margin. - - XXmmNNllaabbeellMMaarrggiinnHHeeiigghhtt,, XXmmNNllaabbeellMMaarrggiinnWWiiddtthh - The spacing between one side of the label and the - nearest edge of a shadow. - - XXmmNNlliissttMMaarrggiinnHHeeiigghhtt,, XXmmNNlliissttMMaarrggiinnWWiiddtthh - The height or width of the margin between the bor- - der of the list and the items in the list. - - XXmmNNlliissttSSiizzeePPoolliiccyy - Controls the reaction of the list when an item - grows horizontally beyond the current width of the - list and XXmmNNssttaattiiccLLiisstt is set to TTrruuee. If set to - XXmmCCOONNSSTTAANNTT, the list does not grow, and a horizon- - tal scroll bar is shown. If this resource is set to - XXmmVVAARRIIAABBLLEE, the list instead trys to grow such that - it match the size of the longest item, thus no hor- - izontal scroll bar will appear. When XXmmNNlliisstt-- - SSiizzeePPoolliiccyy is the list will again try to grow but - in case the width of the longest item in the list - is wider than the viewing area of the list a hori- - zontal scroll bar appears. - - - -Version 1.31 20 March 1995 7 - - - - - -XmComboBox(3Xm) Harry's Motif Tools XmComboBox(3Xm) - - - XXmmNNlliissttSSppaacciinngg - The spacing between items in the list. - - XXmmNNmmaarrggiinnHHeeiigghhtt - Specifies the distance between the top and the bot- - tom of the widget window and the text displayed in - the input field. - - XXmmNNmmaarrggiinnWWiiddtthh - Like XmNmarginHeight this resource specifies the - distance between the left and the right border of - the widget window and the text. - - XXmmNNmmaaxxLLeennggtthh - Specifies the maximum length of the text string - that can be entered from the keyboard into the - input field of the combo box. Strings that are put - into the input field using XXmmCCoommbbooBBooxxSSeettSSttrriinngg - ignore this resource. - - XXmmNNmmooddiiffyyVVeerriiffyyCCaallllbbaacckk - Contains a list of callbacks called before text is - deleted from or inserted into the text area of the - combo box widget. The callbacks are called only if - XXmmNNeeddiittaabbllee is set to TTrruuee. The reason is - XXmmCCRR__MMOODDIIFFYYIINNGG__TTEEXXTT__VVAALLUUEE and the type of the - structure passed to this callback is XXmmCCoommbbooBBooxx-- - TTeexxttVVeerriiffyyCCaallllbbaacckkSSttrruucctt. - - XXmmNNmmoottiioonnVVeerriiffyyCCaallllbbaacckk - Specifies the list of callbacks that is called - before the insert cursor gets moved to another - position. The reason is XXmmCCRR__MMOOVVIINNGG__IINNSSEERRTT__CCUURRSSOORR - and the type of the structure whose address is - passed to the callback is XXmmCCoommbbooBBooxxTTeexxttVVeerriiffyyCCaallll-- - bbaacckk--SSttrruucctt. - - XXmmNNssccrroollllBBaarrDDiissppllaayyPPoolliiccyy - Controls the display of the vertical scroll bar in - the list when XXmmNNssttaattiiccLLiisstt is set to TTrruuee..When - XXmmNNssccrroollllBBaarrDDiissppllaayyPPoolliiccyy is set to XXmmAASS__NNEEEEDDEEDD, - the vertical scroll bar is displayed only when the - list contains more items than can be currently dis- - played. If set to XXmmSSTTAATTIICC the vertical scroll bar - is always displayed. - - XXmmNNppeerrssiisstteennttDDrrooppDDoowwnn - Welcome to the sad section in the life of X11 - applications. This resource and the inherent prob- - lems are due to the focus policy of the window man- - ager you're using. See the further details in the - later sections. - - - - - -Version 1.31 20 March 1995 8 - - - - - -XmComboBox(3Xm) Harry's Motif Tools XmComboBox(3Xm) - - - XXmmNNsseelleeccttiioonnCCaallllbbaacckk - Specifies a list of callbacks that is called when - an item is selected. The reason is - XXmmCCRR__SSIINNGGLLEE__SSEELLEECCTT. The callbacks are NOT called - when the user browses through the items in the - list. - - XXmmNNsseelleeccttiioonnPPoolliiccyy - This resource controls whether the user can dese- - lect the currently selected item within a combo - box. The default value is XXmmBBRROOWWSSEE__SSEELLEECCTT, so - always one item gets selected if the combo box is - editable. In the case of XXmmSSIINNGGLLEE__SSEELLEECCTT the user - may deselect the current item either by clicking on - it in the drop down list or pressing the key - "Delete". Other values for XXmmNNsseelleeccttiioonnPPoolliiccyy are - currently not allowed. (Multiple selections will be - probably availabe with the next release.) - - XXmmNNsseelleeccttTThhrreesshhoolldd - Specifies the amount of pixels the mouse must move - until the selection of text is recognized in click - and drag mode. - - XXmmNNsshhoowwLLaabbeell - Specifies, whether a label containing text or a - pixmap should be displayed on the left side of the - combo box. This resource can only be specified dur- - ing the creation of the combo box, afterwards it - will have no effect. - - XXmmNNssoorrtteedd - Specifies whether the items in the list are sorted - or not In an unsorted list, the items are shown in - the order in which they're put into the list. When - adding an item to a sorted list, this item will be - put at the right place (alphabetically sorted). - - XXmmNNssoorrttiinnggCCaallllbbaacckk - Contains a list of callbacks that is called when- - ever a new item is added to the combo box widget - and XXmmNNssoorrtteedd is TTrruuee. The reason is XXmmCCRR__SSOORRTTIINNGG - and the type of the structure whose address is - passed to the callback is XXmmCCoommbbooBBooxxSSoorrttiinnggCCaallll-- - bbaacckk--SSttrruucctt. For detailed information see the fol- - lowing sections. - - XXmmNNssqquuaarreeAArrrrooww - Controls the width of the arrow button in respect - to its height. If this resource is TTrruuee the arrow - button is always layed out square. Otherwise the - arrow button's width will be approximatly 4/5th of - its height. - - - - -Version 1.31 20 March 1995 9 - - - - - -XmComboBox(3Xm) Harry's Motif Tools XmComboBox(3Xm) - - - XXmmNNssttaattiiccLLiisstt - Controls whether the list is always statically dis- - played right below the text input area of the combo - box if set to TTrruuee. If you use a combo box with - XXmmNNssttaattiiccLLiisstt set to TTrruuee and XXmmNNeeddiittaabbllee set to - FFaallssee you should consider using a simple list wid- - get instead. - - XXmmNNssttrriinnggDDiirreeccttiioonn - Specifies the initial direction to draw the string - (from the left to the right or in the opposite - direction). The whole story seems to be incompre- - hensible... therefore this resource is provided for - completeness only. - - XXmmNNttwwmmHHaannddlliinnggOOnn - If you have trouble with the list then this - resource may help you. Set it to True, if the list - gets hidden at the moment the mouse cursor enters - the list. - - XXmmNNttooppIItteemmPPoossiittiioonn - This resource is intended as an informal hint. It - specifies the index of the item which is displayed - at the visible top of the list. - - XXmmNNvvaalluuee - Contains the text of the input field. This also - concerns combo boxes which are not editable ( - XXmmNNeeddiittaabbllee set to False). - - XXmmNNuunnsseelleeccttiioonnCCaallllbbaacckk - Specifies a list of callbacks that is called when- - ever the currently selected item is deselected and - no other item gets selected. This callback is acti- - vated only when XXmmNNsseelleeccttiioonnPPoolliiccyy is XXmmSSIINN-- - GGLLEE__SSEELLEECCTT. The reason is XXmmCCRR__UUNNSSEELLEECCTT. The type - of the structure whose address is passed to this - callback is XXmmAAnnyyCCaallllbbaacckkSSttrruucctt. - - XXmmNNvvaalluuee - Contains the text of the input field. This also - concerns combo boxes which are not editable ( - XXmmNNeeddiittaabbllee set to FFaallssee). - - XXmmNNvvaalluueeCChhaannggeeddCCaallllbbaacckk - Specifies a list of callbacks to be called after - text is deleted from or inserted into the text area - of the combo box widget. The reason is - XXmmCCRR__VVAALLUUEE__CCHHAANNGGEEDD. The type of the structure - whose address is passed to this callback is XXmmAAnnyy-- - CCaallllbbaacckkSSttrruucctt. - - - - - -Version 1.31 20 March 1995 10 - - - - - -XmComboBox(3Xm) Harry's Motif Tools XmComboBox(3Xm) - - - XXmmNNvviissiibblleeIItteemmCCoouunntt - Specifies the number of items that can fit in the - visible space of the list. The combo box uses this - value to determine the height of its list. - - IInnhheerriitteedd RReessoouurrcceess - XmComboBox inherits behaviour and resources from the fol- - lowing superclasses. For a complete description of each - resource, refer to the man page for that superclass. - - CCaallllbbaacckk IInnffoorrmmaattiioonn - A pointer to the following structure is passed to the - XXmmNNddrrooppDDoowwnnCCaallllbbaacckk callback: - - ttyyppeeddeeff ssttrruucctt {{ - iinntt _r_e_a_s_o_n;; - XXEEvveenntt **_e_v_e_n_t;; - }} XXmmCCoommbbooBBooxxDDrrooppDDoowwnnCCaallllbbaacckkSSttrruucctt;; - - _r_e_a_s_o_n Within this structure, _r_e_a_s_o_n indicates the - reason why the callback was activated. This - can be XXmmCCRR__SSHHOOWW__LLIISSTT as well as - XXmmCCRR__HHIIDDEE__LLIISSTT. A callback is called with - the reason XXmmCCRR__SSHHOOWW__LLIISSTT just before the - list is dropped down, whereas the callback - is called with XXmmCCRR__HHIIDDEE__LLIISSTT after the - list is hidden. - - - _e_v_e_n_t Points to the XXEEvveenntt, which triggered the - callback. May be NNUULLLL if the callback is - triggered by a call to XXmmCCoommbbooBBooxxSShhoowwLLiisstt - or XXmmCCoommbbooBBooxxHHiiddeeLLiisstt. - - A pointer to the following structure is passed to the - XXmmNNaaccttiivvaatteeCCaallllbbaacckk callback: - - ttyyppeeddeeff ssttrruucctt {{ - iinntt _r_e_a_s_o_n;; - XXEEvveenntt **_e_v_e_n_t;; - }} XXmmAAnnyyCCaallllbbaacckkSSttrruucctt;; - - _r_e_a_s_o_n Indicates why the callback was invoked. - This is XXmmCCRR__AACCTTIIVVAATTEE for XXmmNNaaccttiivvaatteeCCaallll-- - bbaacckk. - - _e_v_e_n_t Points to the XXEEvveenntt, which triggered the - callback. - - A pointer to the following structure is passed to the - XXmmNNsseelleeccttiioonnCCaallllbbaacckk and XXmmNNddeeffaauullttAAccttiioonnCCaallllbbaacckk: - - ttyyppeeddeeff ssttrruucctt {{ - iinntt _r_e_a_s_o_n;; - - - -Version 1.31 20 March 1995 11 - - - - - -XmComboBox(3Xm) Harry's Motif Tools XmComboBox(3Xm) - - - XXEEvveenntt **_e_v_e_n_t;; - XXmmSSttrriinngg _v_a_l_u_e;; - iinntt _i_n_d_e_x;; - }} XXmmCCoommbbooBBooxxSSeelleeccttiioonnCCaallllbbaacckkSSttrruucctt,, XXmmCCoommbbooBBooxxDDeeffaauullttAAcc-- - ttiioonnCCaallllbbaacckkSSttrruucctt;; - - _r_e_a_s_o_n Within this structure, _r_e_a_s_o_n indicates the - reason why the callback was activated. At - this time, the reason can be either - XXmmCCRR__SSIINNGGLLEE__SSEELLEECCTT or XXmmCCRR__BBRROOWWSSEE__SSEELLEECCTT - depending on the setting of XXmmNNsseelleeccttiioonn-- - PPoolliiccyy. It indicates that the user - selected a (potentially new) item in the - list. Whether this callback is activated - every time the user moves into a new item - of the list or only when the user releases - the mouse button is controlled through the - setting of XXmmNNaauuttoommaattiiccSSeelleeccttiioonn. - - _e_v_e_n_t Points to the XXEEvveenntt, which triggered the - callback. - - _v_a_l_u_e Points to a XXmmSSttrriinngg, which contains the - text of the current selected item. This - XXmmSSttrriinngg must never be freed or changed by - the called program code! - - _i_n_d_e_x Index (starting from 1) of the currently - selected item in the list. - - A pointer to the following structure is passed to the - XXmmNNuunnsseelleeccttiioonnCCaallllbbaacckk callback: - - ttyyppeeddeeff ssttrruucctt {{ - iinntt _r_e_a_s_o_n;; - XXEEvveenntt **_e_v_e_n_t;; - }} XXmmCCoommbbooBBooxxUUnnsseelleeccttiioonnCCaallllbbaacckkSSttrruucctt;; - - _r_e_a_s_o_n Indicates why the callback was invoked. - This is XXmmCCRR__UUNNSSEELLEECCTT. - - _e_v_e_n_t Points to the XXEEvveenntt, which triggered the - callback. - - A pointer to the following structure is passed to the - XXmmNNmmooddiiffyyVVeerriiffyyCCaallllbbaacckk and XXmmNNmmoottiioonnVVeerriiffyyCCaallllbbaacckk call- - backs: - - ttyyppeeddeeff ssttrruucctt {{ - iinntt _r_e_a_s_o_n;; - XXEEvveenntt **_e_v_e_n_t;; - BBoooolleeaann _d_o_i_t;; - PPoossiittiioonn _c_u_r_r_I_n_s_e_r_t_, _n_e_w_I_n_s_e_r_t;; - PPoossiittiioonn _s_t_a_r_t_P_o_s_, _e_n_d_P_o_s;; - - - -Version 1.31 20 March 1995 12 - - - - - -XmComboBox(3Xm) Harry's Motif Tools XmComboBox(3Xm) - - - XXmmTTeexxttBBlloocckk _t_e_x_t;; - }} XXmmCCoommbbooBBooxxTTeexxttVVeerriiffyyCCaallllbbaacckkSSttrruucctt,, **XXmmCCoommbbooBBooxxTTeexxttVVeerrii-- - ffyyPPttrr;; - - _r_e_a_s_o_n Indicates the reason why the callback was - activated. This can be either - XXmmCCRR__MMOODDIIFFYYIINNGG__TTEEXXTT__VVAALLUUEE or - XXmmCCRR__MMOOVVIINNGG__IINNSSEERRTT__CCUURRSSOORR. - - _e_v_e_n_t Points to the XXEEvveenntt, which triggered the - callback. - - _d_o_i_t Indicates whether the offending action - should be performed. Setting this field of - the callback structure to FFaallssee denies the - action. - - _c_u_r_r_I_n_s_e_r_t Specifies the current position of the - insert cursor. - - Indicates the position at which the user - attempts to position the cursor. - - _s_t_a_r_t_P_o_s Indicates the starting position of the text - to modify. If the reason is - XXmmCCRR__MMOOVVIINNGG__IINNSSEERRTT__CCUURRSSOORR this value is the - same as ccuurrrrIInnsseerrtt. - - _e_n_d_P_o_s Specifies the ending position of the text - to modify. If no text is replaced or - deleted, then the value will be the same as - ssttaarrttPPooss. If the reason is - XXmmCCRR__MMOODDIIFFYYIINNGG__TTEEXXTT__VVAALLUUEE this value is the - same as _c_u_r_r_I_n_s_e_r_t. - - _t_e_x_t Holds the address of a structure of type - XXmmTTeexxttBBlloocckkRReecc which holds the textual - information to be inserted. - - The following table describes the reasons why the individ- - ual verification callback structure fields are valid. - - RReeaassoonn VVaalliidd FFiieellddss - ----------------------------------------------------- - XXmmCCRR__MMOODDIIFFYYIINNGG__TTEEXXTT__VVAALLUUEE _r_e_a_s_o_n, _e_v_e_n_t, _d_o_i_t, - _s_t_a_r_t_P_o_s, _e_n_d_P_o_s, _t_e_x_t - - XXmmCCRR__MMOOVVIINNGG__IINNSSEERRTT__CCUURRSSOORR _r_e_a_s_o_n, _e_v_e_n_t, _d_o_i_t, - _c_u_r_r_I_n_s_e_r_t, _n_e_w_I_n_s_e_r_t, - - A pointer to the following structure is passed to the XXmmNN-- - ssoorrttiinnggCCaallllbbaacckk callback: ttyyppeeddeeff ssttrruucctt {{ - iinntt _r_e_a_s_o_n;; - XXEEvveenntt **_e_v_e_n_t;; - - - -Version 1.31 20 March 1995 13 - - - - - -XmComboBox(3Xm) Harry's Motif Tools XmComboBox(3Xm) - - - iinntt _o_p_e_r_a_t_i_o_n;; - vvooiidd **_i_t_e_m___i_n_t_e_r_n_a_l;; - XXmmSSttrriinngg _i_t_e_m;; - iinntt _r_e_s_u_l_t;; - }} XXmmCCoommbbooBBooxxSSoorrttiinnggCCaallllbbaacckkSSttrruucctt,, **XXmmCCoommbbooBBooxxSSoorrttiinnggPPttrr;; - - _r_e_a_s_o_n Indicates the reason why the callback was - activated. This is XXmmCCRR__SSOORRTTIINNGG. - - _e_v_e_n_t Contains always NNUULLLL and is just there for - compatibility reasons. - - _o_p_e_r_a_t_i_o_n Indicates the operation to carry out and - can be either XXmmOOPP__IINNIITT,XXmmOOPP__DDOONNEE or - XXmmOOPP__CCOOMMPPAARREE. - - _i_t_e_m___i_n_t_e_r_n_a_l Must be set during the XXmmOOPP__IINNIITT operation - to a suitable representation of the new - item which is to be added to the list. In - all subsequent calls to this callback with - XXmmOOPP__CCOOMMPPAARREEorXXmmOOPP__DDOONNEE this field will - contain whatever you've put into it during - XXmmOOPP__IINNIITT. For detailed information refer - to the documentation "_T_h_e _C_o_m_b_o_B_o_x _W_i_d_g_e_t". - - _i_t_e_m During XXmmOOPP__IINNIITT this field points to the - item to be added to the list. When sorting - the list ( XXmmOOPP__CCOOMMPPAARREE) the field contains - the address of an item in the list which - should be compared against the new item (as - remembered in _i_t_e_m___i_n_t_e_r_n_a_l). - - _r_e_s_u_l_t When comparing an item (out of the list) in - _i_t_e_m with the new item (as remembered in - _i_t_e_m___i_n_t_e_r_n_a_l) the result has to be stored - into this structure's field. - - The following table describes which individual callback - structure fields are valid during which operations. - - RReeaassoonn VVaalliidd FFiieellddss - --------------------------------------------- - XXmmOOPP__IINNIITT _r_e_a_s_o_n, _e_v_e_n_t, _o_p_e_r_a_t_i_o_n, - _i_t_e_m, _i_t_e_m___i_n_t_e_r_n_a_l - XXmmOOPP__DDOONNEE _r_e_a_s_o_n, _e_v_e_n_t, _o_p_e_r_a_t_i_o_n, - _i_t_e_m___i_n_t_e_r_n_a_l - XXmmOOPP__CCOOMMPPAARREE _r_e_a_s_o_n, _e_v_e_n_t, _o_p_e_r_a_t_i_o_n, - _i_t_e_m, _i_t_e_m___i_n_t_e_r_n_a_l, _r_e_s_u_l_t - - For more information about controlling the sorting order - see the acompanying documentation "_T_h_e _C_o_m_b_o_B_o_x _W_i_d_g_e_t". - - CCoonnvveenniieennccee rroouuttiinneess - ComboBox has a number of convenience routines to control - - - -Version 1.31 20 March 1995 14 - - - - - -XmComboBox(3Xm) Harry's Motif Tools XmComboBox(3Xm) - - - the behavior and contents of its children. - - vvooiidd XXmmCCoommbbooBBooxxAAddddIItteemm((WWiiddggeett ww,, XXmmSSttrriinngg iitteemm,, iinntt ppooss)) - Add a new item to the list's contents. If XXmmNNssoorrtteedd - is set to True, the new item is inserted alphabeti- - cally. If the list is unsorted, the same assump- - tions can be applied as with XXmmLLiissttAAddddIItteemm. - - - vvooiidd XXmmCCoommbbooBBooxxAAddddIItteemmss((WWiiddggeett ww,, XXmmSSttrriinngg **iitteemmss,, - iinntt iitteemm__ccoouunntt,, iinntt ppooss)) - Similar to XXmmCCoommbbooBBooxxAAddddIItteemm. Also see XXmmLLiissttAAdd-- - ddIItteemmss. - - - vvooiidd XXmmCCoommbbooBBooxxAAddddIItteemmUUnnsseelleecctteedd((WWiiddggeett ww,, XXmmSSttrriinngg - iitteemm,, iinntt ppooss)) - See XXmmLLiissttAAddddIItteemmUUnnsseelleecctteedd. - - - vvooiidd XXmmCCoommbbooBBooxxCClleeaarrIItteemmSSeelleeccttiioonn((WWiiddggeett ww)) - Deselects all currently selected items when - XXmmNNsseelleeccttiioonnPPoolliiccyy is XXmmSSIINNGGLLEE__SSEELLEECCTT. - - - vvooiidd XXmmCCoommbbooBBooxxDDeelleetteeIItteemm((WWiiddggeett ww,, XXmmSSttrriinngg iitteemm)) - See XXmmLLiissttDDeelleetteeIItteemm. - - - vvooiidd XXmmCCoommbbooBBooxxDDeelleetteeIItteemmss((WWiiddggeett ww,, XXmmSSttrriinngg - **iitteemmss,, iinntt iitteemm__ccoouunntt)) - See XXmmLLiissttDDeelleetteeIItteemmss. - - - vvooiidd XXmmCCoommbbooBBooxxDDeelleetteePPooss((WWiiddggeett ww,, iinntt ppooss)) - See XXmmLLiissttDDeelleetteePPooss. - - - vvooiidd XXmmCCoommbbooBBooxxDDeelleetteeIItteemmssPPooss((WWiiddggeett ww,, iinntt iitteemm__ccoouunntt,, - iinntt ppooss)) - See XXmmLLiissttDDeelleetteeIItteemmssPPooss. - - - vvooiidd XXmmCCoommbbooBBooxxDDeelleetteeAAllllIItteemmss((WWiiddggeett ww)) - See XXmmLLiissttDDeelleetteeAAllllIItteemmss. - - - vvooiidd XXmmCCoommbbooBBooxxRReeppllaacceeIItteemmss((WWiiddggeett ww,, XXmmSSttrriinngg - **oolldd__iitteemmss,, iinntt iitteemm__ccoouunntt,, XXmmSSttrriinngg **nneeww__iitteemmss)) - See XXmmLLiissttRReeppllaacceeIItteemmss. - - - vvooiidd XXmmCCoommbbooBBooxxRReeppllaacceeIItteemmssPPooss((WWiiddggeett ww,, XXmmSSttrriinngg - **nneeww__iitteemmss,, iinntt iitteemm__ccoouunntt,, iinntt ppoossiittiioonn)) - - - -Version 1.31 20 March 1995 15 - - - - - -XmComboBox(3Xm) Harry's Motif Tools XmComboBox(3Xm) - - - See XXmmLLiissttRReeppllaacceeIItteemmssPPooss. - - - BBoooolleeaann XXmmCCoommbbooBBooxxIItteemmEExxiissttss((WWiiddggeett ww,, XXmmSSttrriinngg iitteemm)) - See XXmmLLiissttIItteemmEExxiissttss. - - - iinntt XXmmCCoommbbooBBooxxIItteemmPPooss((WWiiddggeett ww,, XXmmSSttrriinngg iitteemm)) - See XXmmLLiissttIItteemmPPooss. - - - BBoooolleeaann XXmmCCoommbbooBBooxxGGeettMMaattcchhPPooss((WWiiddggeett ww,, XXmmSSttrriinngg - iitteemm,, iinntt ****ppooss__lliisstt,, iinntt **ppooss__ccoouunntt)) - See XXmmLLiissttGGeettMMaattcchhPPooss. - - - vvooiidd XXmmCCoommbbooBBooxxSSeelleeccttPPooss((WWiiddggeett ww,, iinntt ppooss,, BBoooolleeaann - nnoottiiffyy)) - See XXmmLLiissttSSeelleeccttPPooss. - - - vvooiidd XXmmCCoommbbooBBooxxSSeelleeccttIItteemm((WWiiddggeett ww,, XXmmSSttrriinngg iitteemm,, - BBoooolleeaann nnoottiiffyy)) - See XXmmLLiissttSSeelleeccttIItteemm. - - - iinntt XXmmCCoommbbooBBooxxGGeettSSeelleecctteeddPPooss((WWiiddggeett ww)) - This function differs from XXmmLLiissttGGeettSSeelleecctteeddPPooss. - The list in a combo box can contain only one - selected item. Therefore this function returns the - index of the selected item in the list or zero, if - none is currently selected. - - - vvooiidd XXmmCCoommbbooBBooxxCClleeaarrSSeelleeccttiioonn((WWiiddggeett ww,, TTiimmee ttiimmee)) - See XXmmTTeexxttFFiieellddCClleeaarrSSeelleeccttiioonn. - - - BBoooolleeaann XXmmCCoommbbooBBooxxCCooppyy((WWiiddggeett ww,, TTiimmee ttiimmee)) - See XXmmTTeexxttFFiieellddCCooppyy. - - - BBoooolleeaann XXmmCCoommbbooBBooxxCCuutt((WWiiddggeett ww,, TTiimmee ttiimmee)) - See XXmmTTeexxttFFiieellddCCuutt. - - - XXmmTTeexxttPPoossiittiioonn XXmmCCoommbbooBBooxxGGeettIInnsseerrttiioonnPPoossiittiioonn((WWiiddggeett ww)) - See XXmmTTeexxttFFiieellddGGeettIInnsseerrttiioonnPPoossiittiioonn. - - - XXmmTTeexxttPPoossiittiioonn XXmmCCoommbbooBBooxxGGeettLLaassttPPoossiittiioonn((WWiiddggeett ww)) - See XXmmTTeexxttFFiieellddGGeettLLaassttPPoossiittiioonn. - - - - - -Version 1.31 20 March 1995 16 - - - - - -XmComboBox(3Xm) Harry's Motif Tools XmComboBox(3Xm) - - - iinntt XXmmCCoommbbooBBooxxGGeettMMaaxxLLeennggtthh((WWiiddggeett ww)) - See XXmmTTeexxttFFiieellddGGeettMMaaxxLLeennggtthh. - - - cchhaarr **XXmmCCoommbbooBBooxxGGeettSSeelleeccttiioonn((WWiiddggeett ww)) - See XXmmTTeexxttFFiieellddGGeettSSeelleeccttiioonn. - - - BBoooolleeaann XXmmCCoommbbooBBooxxGGeettSSeelleeccttiioonnPPoossiittiioonn((WWiiddggeett ww,, - XXmmTTeexxttPPoossiittiioonn **lleefftt,, XXmmTTeexxttPPoossiittiioonn **rriigghhtt)) - See XXmmTTeexxttFFiieellddGGeettSSeelleeccttiioonnPPoossiittiioonn. - - - cchhaarr **XXmmCCoommbbooBBooxxGGeettSSttrriinngg((WWiiddggeett ww)) - See XXmmTTeexxttFFiieellddGGeettSSttrriinngg. - - - vvooiidd XXmmCCoommbbooBBooxxIInnsseerrtt((WWiiddggeett ww,, XXmmTTeexxttPPoossiittiioonn - ppoossiittiioonn,, cchhaarr **vvaalluuee)) - See XXmmTTeexxttFFiieellddIInnsseerrtt. - - - BBoooolleeaann XXmmCCoommbbooBBooxxPPaassttee((WWiiddggeett ww)) - See XXmmTTeexxttFFiieellddPPaassttee. - - - BBoooolleeaann XXmmCCoommbbooBBooxxRReemmoovvee((WWiiddggeett ww)) - See XXmmTTeexxttFFiieellddRReemmoovvee. - - - vvooiidd XXmmCCoommbbooBBooxxRReeppllaaccee((WWiiddggeett ww,, XXmmTTeexxttPPoossiittiioonn - ffrroomm__ppooss,, XXmmTTeexxttPPoossiittiioonn ttoo__ppooss,, cchhaarr **vvaalluuee)) - See XXmmTTeexxttFFiieellddRReeppllaaccee. - - - vvooiidd XXmmCCoommbbooBBooxxSSeettAAddddMMooddee((WWiiddggeett ww,, BBoooolleeaann ssttaattee)) - See XXmmTTeexxttFFiieellddSSeettAAddddMMooddee. - - - vvooiidd XXmmCCoommbbooBBooxxSSeettHHiigghhlliigghhtt((WWiiddggeett ww,, XXmmTTeexxttPPoossiittiioonn - lleefftt,, XXmmTTeexxttPPoossiittiioonn rriigghhtt,, XXmmHHiigghhlliigghhttMMooddee mmooddee)) - See XXmmTTeexxttFFiieellddSSeettHHiigghhlliigghhtt. - - - vvooiidd XXmmCCoommbbooBBooxxSSeettIInnsseerrttiioonnPPoossiittiioonn((WWiiddggeett ww,, - XXmmTTeexxttPPoossiittiioonn ppoossiittiioonn)) - See XXmmTTeexxttFFiieellddSSeettIInnsseerrttiioonnPPoossiittiioonn. - - - vvooiidd XXmmCCoommbbooBBooxxSSeettMMaaxxLLeennggtthh((WWiiddggeett ww,, iinntt mmaaxx__lleennggtthh)) - See XXmmTTeexxttFFiieellddSSeettMMaaxxLLeennggtthh. - - - - - - -Version 1.31 20 March 1995 17 - - - - - -XmComboBox(3Xm) Harry's Motif Tools XmComboBox(3Xm) - - - vvooiidd XXmmCCoommbbooBBooxxSSeettSSeelleeccttiioonn((WWiiddggeett ww,, XXmmTTeexxttPPoossiittiioonn - ffiirrsstt,, XXmmTTeexxttPPoossiittiioonn llaasstt,, TTiimmee ttiimmee)) - See XXmmTTeexxttFFiieellddSSeettSSeelleeccttiioonn. - - - vvooiidd XXmmCCoommbbooBBooxxSSeettSSttrriinngg((WWiiddggeett ww,, cchhaarr **vvaalluuee)) - At least Motif 1.1 contains a very anoying bug. If - you try to set the contents of an XmTextField to an - empty string (""), you'll get garbage, when asking - the XmTextField for its contents afterwards. This - interface function provides a work around. Also see - XXmmTTeexxttFFiieellddSSeettSSttrriinngg. - - - vvooiidd XXmmCCoommbbooBBooxxSShhoowwPPoossiittiioonn((WWiiddggeett ww,, XXmmTTeexxttPPoossiittiioonn ppoossii-- - ttiioonn)) - See XXmmTTeexxttFFiieellddSShhoowwPPoossiittiioonn. - - - TThhee DDiisslliikkeedd KKeeyybbooaarrdd FFooccuuss - Now I'll annotate a somewhat tricky subject. If the - resource XXmmNNppeerrssiisstteennttDDrrooppDDoowwnn defaults to its initial - value of FFaallssee, one can observe the following effect (this - may be annoying). - - When the user drops down the list and then moves the mouse - cursor out of the window where the combo box resides in, - the list will be hidden. This is because the widget lost - the keyboard focus. Some users are irritated because they - didn't expect that behavior, because they just moved the - mouse to get it out of the way. If your window manager's - focus policy is "pointer focus", i.e. if you move the - pointer into another window, that window will automati- - cally get the keyboard focus. On the other hand, if your - window manager's focus policy is "explicit", you have to - move the pointer into another window and click a mouse - button to give that window the keyboard focus. This is - often referred to as the "click-to-type" method. In - "explicit" mode, you will never see the list's annoying - behavior. - - To bypass this behavior on some window managers a really - dirty hack was used. The user can activate that hack, if - he sets XXmmNNppeerrssiisstteennttDDrrooppDDoowwnn to TTrruuee in the application's - resources. Sorry, on some window managers this will not - fix the annoying behavior. - - Try it if you like - but don't complain at me if it - doesn't work as expected. But at least it worked on the - author's machine: a cute little SGI Indigo running 4dwm as - the window manager. - - On some other window managers like twm you will face - another problem: the list gets hidden as soon as the mouse - - - -Version 1.31 20 March 1995 18 - - - - - -XmComboBox(3Xm) Harry's Motif Tools XmComboBox(3Xm) - - - cursor enters the list. Try to set XXmmNNttwwmmHHaannddlliinnggOOnn to - TTrruuee. This resource will also work with other window man- - agers. - - - CCrreeaattiinngg aa CCoommbbooBBooxx - Using the combo box in your own programs is easy. Just - create the widget with one of the innumerable X toolkit - functions (like XXttCCrreeaatteeMMaannaaggeeddWWiiddggeett or XXttVVaaCCrreeaatteeMMaann-- - aaggeeddWWiiddggeett). - - - Specify as the widget class xmComboBoxWidgetClass - that's - all. There is also a so-called creation convenience func- - tion called XXmmCCrreeaatteeCCoommbbooBBooxx, but it isn't really needed. - - WWiiddggeett XXmmCCrreeaatteeCCoommbbooBBooxx((_p_a_r_e_n_t_, _n_a_m_e_, _a_r_g_l_i_s_t_, _a_r_g_c_o_u_n_t)) - WWiiddggeett _p_a_r_e_n_t; - SSttrriinngg _n_a_m_e; - AArrggLLiisstt _a_r_g_l_i_s_t; - CCaarrddiinnaall _a_r_g_c_o_u_n_t; - - Somewhere in your program you'll need something like the - following code fragment: - - - Widget ComboBox; - - ComboBox = XtVaCreateManagedWidget("combobox", - xmComboBoxWidgetClass, Parent, - XmNeditable, True or False, - other Resources... - NULL); - - - Setting the resource XXmmNNeeddiittaabbllee is not absolutely neces- - sary, but it's better to do so. - - After creation, items can be added to the combo box's list - by means of interface functions like XXmmCCoommbbooBBooxxAAdd-- - ddIItteemm((......)). Which item the user selected can be deter- - mined by calling XXmmCCoommbbooBBooxxGGeettSSttrriinngg((......)). - - - If you want to preselect an item (that is setting a - default item to the input field of the combo box) you can - use several convenience functions. On a combo box with a - non editable input field there are two ways to select an - item: - - - XmComboBoxSelectPos(ComboBox, item #, False); - - or: - - - -Version 1.31 20 March 1995 19 - - - - - -XmComboBox(3Xm) Harry's Motif Tools XmComboBox(3Xm) - - - XmComboBoxSelectItem(ComboBox, itemString, False); - - The third parameter in these two function calls indicates - whether the XXmmNNsseelleeccttiioonnCCaallllbbaacckk should be called. The - only difference between these functions is the first one - is expecting an item number whereas the second one expects - a XmString. The list is then searched for this string and - if it is found the input field will be updated. - - On a combo box with XXmmNNeeddiittaabbllee set to TTrruuee use another - function: - - XmComboBoxSetString(ComboBox, string); - - This sets the contents of the text input field to string. - - - -BBUUGGSS - Not more than currently available in Motif 1.2.3 or Motif - 1.2.4, but less than in the upcomming Motif 2.0. Report - bugs to albrecht@igpm.rwth-aachen.de. Include a thoroughly - description, and say which version of the ComboBox widget - you are using. - - - -CCOOPPYYRRIIGGHHTT - Copyright 1993, 1994 Harald Albrecht. - - The ComboBox widget is free software; you can redistribute - it and/or modify it under the terms of the GNU General - Public License as published by the Free Software Founda- - tion; either version 2, or (at your option) any later ver- - sion. - - - -AAVVAAIILLAABBIILLIITTYY - The most recent released version of the ComboBox widget is - always available for anonymous ftp from either - - ftp.x.org (198.112.44.100) - /contrib/widgets/motif/ComboBox - - or from - - ftp.informatik.rwth-aachen.de (137.226.112.172) - /pub/packages/ComboBox - - - -AAUUTTHHOORR - Author of Software & Documentation: - - - -Version 1.31 20 March 1995 20 - - - - - -XmComboBox(3Xm) Harry's Motif Tools XmComboBox(3Xm) - - - Harald Albrecht - Institut fuer Geometrie und Praktische Mathematik - RWTH Aachen, Bundesrepublik Deutschland - e-mail: albrecht@igpm.rwth-aachen.de - - English Documentation: - Chris Marotz - Sterling Software ITD - e-mail: marotz@itd.sterling.com - - - -RREELLAATTEEDD IINNFFOORRMMAATTIIOONN - "_T_h_e _C_o_m_b_o_B_o_x _W_i_d_g_e_t" documentation - CCoorree((33XX)), XXmmCCoommppoossiittee((33XX)), XXmmLLiisstt((33XX)), XXmmTTeexxttFFiieelldd((33XX)) - _D_o_u_g_l_a_s _A_d_a_m_s_: _T_h_e _H_i_t_c_h_h_i_k_e_r_'_s _G_u_i_d_e _t_o _t_h_e _G_a_l_a_x_y_. - ffiillee::////113344..113300..116611..3300//aarrcc//ppuubb//uunniixx//hhttmmll//mmoottiiffccoorrnneerr..hhttmmll - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Version 1.31 20 March 1995 21 - - diff --git a/src/motif/xmcombo/combop.h b/src/motif/xmcombo/combop.h deleted file mode 100644 index 3e1c8591f8..0000000000 --- a/src/motif/xmcombo/combop.h +++ /dev/null @@ -1,131 +0,0 @@ -/* - * ComboBoxP.h - Das schon lange schmerzlich vermisste Combo-Box- - * Widget -- nun endlich auf fuer Motif! - * Wahlweise Motif 1.1 oder 1.2. - * - * Letzte Modifikation: 04.10.1995 Revisionsstand: 1.32a - * - * (c) 1993, 1994 Harald Albrecht - * Institut fuer Geometrie und Praktische Mathematik - * RWTH Aachen, Germany - * albrecht@igpm.rwth-aachen.de - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program (see the file COPYING for more details); - * if not, write to the Free Software Foundation, Inc., 675 Mass Ave, - * Cambridge, MA 02139, USA. - * - */ -#ifndef __ComboBoxWidgetP_h -#define __ComboBoxWidgetP_h - -#include "xmcombo.h" -#include -#if (XmVersion > 1001) /* sounds like tales from 1000 and 1 night.... */ -#include -#endif - -/********************************************************************* - * Klassendefinition - *********************************************************************/ -/* Neue Datenfelder fuer den Klassenrecord der Center-Widgetklasse */ -typedef struct _XmComboBoxClassPart { - int Just_to_keep_the_compiler_happy; /* Der Name ist Programm */ -} XmComboBoxClassPart; -/* - * Nun folgt die vollstaendige Klassenstruktur, mit all' den Felder, - * die bereits von den Vorfahren geerbt wurden. - */ -typedef struct _XmComboBoxClassRec { - CoreClassPart core_class; - CompositeClassPart composite_class; - ConstraintClassPart constraint_class; - XmManagerClassPart manager_class; - XmComboBoxClassPart combobox_class; -} XmComboBoxClassRec; -extern XmComboBoxClassRec xmComboBoxClassRec; - -/********************************************************************* - *Instanzdefinition - *********************************************************************/ -typedef struct _XmComboBoxPart { -/* Resourcen ... hierauf darf von aussen zugegriffen werden! */ - Boolean Editable; /* Editierbare Eingabezeile ? */ - Boolean StaticList; /* Liste immer dargestellt? */ - unsigned char SelectionPolicy; /* Was geht hier ab?! */ - unsigned char ScrollBarDisplayPolicy; - unsigned char ListSizePolicy; /* Rollbalken! */ - Boolean AutomaticSelection; /* Wann Callbacks aufrufen? */ - Boolean Sorted; /* Liste sortiert */ - XtCallbackList SortingCBL; /* Wie wird extern sortiert? */ - int VisibleItemCount; /* Anz dargstellte Eintraege */ - XmFontList Font; /* verwendete Fonts */ - XtCallbackList SelectionCBL; /* Auswahl aus Liste */ - XtCallbackList UnselectionCBL; /* Auswahl zurueckgenommen */ - XtCallbackList DefaultActionCBL; /* bei Doppelklick */ - XtCallbackList DropDownCBL; /* Liste angezeigt/versteckt */ - XtCallbackList ModifyVerifyCBL; /* Vor Aenderung im Textfeld */ - XtCallbackList ValueChangedCBL; /* Danach... */ - XtCallbackList MotionVerifyCBL; /* Der Cursor bewegt sich doch*/ - XtCallbackList ActivateCBL; /* Eingabe beendet? */ - Boolean SquareArrow; /* Quadratischer Pfeil? */ - Boolean ArrowSpacingOn; /* Abstand zw. Pfeil und Text */ - Boolean Persistent; /* Liste & Focus-Out */ - Boolean TwmHandlingOn; /* dto. */ - Boolean ShowLabel; /* Label anzeigen? */ - Position DropDownOffset; /* delta Ecke Eingabefeld, - Liste */ - -/* Ab hier wird's privat! */ - Widget EditCtrl; /* Editorzeile */ - Widget ArrowCtrl; /* Pfeil nach unten */ - Widget LabelCtrl; /* Text links neben dem Eingabefeld */ - - Widget PopupShell; /* Shell, in der die Liste liegt */ - Widget ListCtrl; /* Listenfeld */ - - Widget MyNextShell; - - Cursor ArrowCursor; - Boolean InInit; - - int LastSelection; - - Boolean ListVisible; - Boolean IgnoreFocusOut; - Boolean PendingFocusOut; - Boolean PendingOverrideInOut; - XtWorkProcId WorkProcID; - XEvent xevent; - - Boolean PassVerification; - Boolean ConvertBitmapToPixmap, - ConvertBitmapToPixmapInsensitive; - Pixmap LabelPixmap, LabelInsensitivePixmap; - - XtPointer Dummy; -} XmComboBoxPart; - -/* - * vollstaengige Instanzenstruktur - */ -typedef struct _XmComboBoxRec { - CorePart core; - CompositePart composite; - ConstraintPart constraint; - XmManagerPart manager; - XmComboBoxPart combobox; -} XmComboBoxRec; - -#endif -/* Ende von ComboBoxP.h */ diff --git a/src/motif/xmcombo/copying.txt b/src/motif/xmcombo/copying.txt deleted file mode 100644 index e77696ae8d..0000000000 --- a/src/motif/xmcombo/copying.txt +++ /dev/null @@ -1,339 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 675 Mass Ave, Cambridge, MA 02139, USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) 19yy - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) 19yy name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff --git a/src/motif/xmcombo/demo.c b/src/motif/xmcombo/demo.c deleted file mode 100644 index 797f62bb64..0000000000 --- a/src/motif/xmcombo/demo.c +++ /dev/null @@ -1,214 +0,0 @@ -/* - * demo.c -- Example how to use a ComboBox - * - * compile and link with: - * $ cc -DFUNCPROTO ComboBoxDemo.c ComboBox.o -o ComboBoxDemo \ - * -lXm -lXt -lX11 - * then run: - * $ ./ComboBoxDemo - * - * (c) 1993, 1994 Harald Albrecht - * Institut fuer Geometrie und Praktische Mathematik - * RWTH Aachen, Germany - * albrecht@igpm.rwth-aachen.de - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program (see the file COPYING for more details); - * if not, write to the Free Software Foundation, Inc., 675 Mass Ave, - * Cambridge, MA 02139, USA. - * - */ -#include -#include -#include -#include -#include -#include -#include "combobox.h" - -Widget TopLevel, Form, Button, Text, Sepp, ComboBox1, ComboBox2, ComboBox3, Label; - -void QuitCB(Widget w, caddr_t pClientData, caddr_t pCallData) -{ - char *text; - - text = XmComboBoxGetString(ComboBox1); - fprintf(stderr, "You choosed \"%s\" out of the first ComboBox\n", text); - XtFree(text); - text = XmComboBoxGetString(ComboBox2); - fprintf(stderr, "You entered \"%s\" into the second ComboBox\n", text); - XtFree(text); - fprintf(stderr, "Bye! ... have fun with XmComboBox!\n"); - exit(0); -} /* QuitCB */ - -int main(int argc, String argv[]) -{ - XmString str; - Boolean Trav; - XtAppContext AppContext; - -#if (XmREVISION > 1) - XtSetLanguageProc(NULL,NULL,NULL); -#endif - TopLevel = XtAppInitialize(&AppContext, "XFontSelDemo", NULL, 0, -#if (XmREVISION > 1) - &argc, -#else - (Cardinal *) &argc, -#endif - argv, NULL, NULL, 0); - - Form = XtVaCreateManagedWidget("form", xmFormWidgetClass, TopLevel, NULL); - str = XmStringCreateLtoR("Click to quit", XmSTRING_DEFAULT_CHARSET); - Button = XtVaCreateManagedWidget("quit", xmPushButtonWidgetClass, Form, - XmNlabelString, str, - XmNleftAttachment, XmATTACH_FORM, - XmNleftOffset, 8, - XmNtopAttachment, XmATTACH_FORM, - XmNtopOffset, 8, - NULL); - XmStringFree(str); - XtAddCallback(Button, XmNactivateCallback, (XtCallbackProc) QuitCB, NULL); - - Sepp = XtVaCreateManagedWidget("separator1", xmSeparatorWidgetClass, Form, - XmNleftAttachment, XmATTACH_FORM, - XmNrightAttachment, XmATTACH_FORM, - XmNtopAttachment, XmATTACH_WIDGET, - XmNtopOffset, 8, - XmNtopWidget, Button, - NULL); - - str = XmStringCreateLtoR("Choose one:", XmSTRING_DEFAULT_CHARSET); - ComboBox1 = XtVaCreateManagedWidget("combobox1", xmComboBoxWidgetClass, Form, - XmNeditable, False, - XmNsorted, True, - XmNleftAttachment, XmATTACH_FORM, - XmNleftOffset, 8, - XmNrightAttachment, XmATTACH_FORM, - XmNrightOffset, 8, - XmNtopAttachment, XmATTACH_WIDGET, - XmNtopOffset, 8, - XmNtopWidget, Sepp, - XmNshowLabel, True, - XmNlabelString, str, - NULL); - XmStringFree(str); - /* Put string unordered into the combo box! They'll get sorted - * by the box. - */ - str = XmStringCreateLtoR("William the conquerior", XmSTRING_DEFAULT_CHARSET); - XmComboBoxAddItem(ComboBox1, str, 0); XmStringFree(str); - str = XmStringCreateLtoR("Karl der Gro\337e", XmSTRING_DEFAULT_CHARSET); - XmComboBoxAddItem(ComboBox1, str, 0); XmStringFree(str); - str = XmStringCreateLtoR("Henry VIII & his chicken band", XmSTRING_DEFAULT_CHARSET); - XmComboBoxAddItem(ComboBox1, str, 0); XmStringFree(str); - str = XmStringCreateLtoR("Louis XIV", XmSTRING_DEFAULT_CHARSET); - XmComboBoxAddItem(ComboBox1, str, 0); XmStringFree(str); - str = XmStringCreateLtoR("Louis de Funes", XmSTRING_DEFAULT_CHARSET); - XmComboBoxAddItem(ComboBox1, str, 0); XmStringFree(str); - str = XmStringCreateLtoR("Helmut Kohl", XmSTRING_DEFAULT_CHARSET); - XmComboBoxAddItem(ComboBox1, str, 0); XmStringFree(str); - str = XmStringCreateLtoR("James Major", XmSTRING_DEFAULT_CHARSET); - XmComboBoxAddItem(ComboBox1, str, 0); XmStringFree(str); - str = XmStringCreateLtoR("James Bond", XmSTRING_DEFAULT_CHARSET); - XmComboBoxAddItem(ComboBox1, str, 0); XmStringFree(str); - str = XmStringCreateLtoR("Billy Boy (M$ Windoze)", XmSTRING_DEFAULT_CHARSET); - XmComboBoxAddItem(ComboBox1, str, 0); XmStringFree(str); - str = XmStringCreateLtoR("Francois Mitterand", XmSTRING_DEFAULT_CHARSET); - XmComboBoxAddItem(ComboBox1, str, 0); - XmComboBoxSelectItem(ComboBox1, str, False); - XmStringFree(str); - - str = XmStringCreateLtoR("Choose/edit:", XmSTRING_DEFAULT_CHARSET); - ComboBox2 = XtVaCreateManagedWidget("combobox2", xmComboBoxWidgetClass, Form, - XmNeditable, True, - XmNsorted, True, - XmNleftAttachment, XmATTACH_FORM, - XmNleftOffset, 8, - XmNrightAttachment, XmATTACH_FORM, - XmNrightOffset, 8, - XmNtopAttachment, XmATTACH_WIDGET, - XmNtopOffset, 8, - XmNtopWidget, ComboBox1, - XmNshowLabel, True, - XmNlabelString, str, - NULL); - str = XmStringCreateLtoR("item can be edited after choosing it", XmSTRING_DEFAULT_CHARSET); - XmComboBoxAddItem(ComboBox2, str, 0); XmStringFree(str); - str = XmStringCreateLtoR("just to fill the list", XmSTRING_DEFAULT_CHARSET); - XmComboBoxAddItem(ComboBox2, str, 0); XmStringFree(str); - str = XmStringCreateLtoR("so it contains more entries", XmSTRING_DEFAULT_CHARSET); - XmComboBoxAddItem(ComboBox2, str, 0); XmStringFree(str); - - str = XmStringCreateLtoR("Static ComboBox:", XmSTRING_DEFAULT_CHARSET); - ComboBox3 = XtVaCreateManagedWidget("combobox3", xmComboBoxWidgetClass, Form, - XmNeditable, True, - XmNstaticList, True, - XmNsorted, False, - XmNcolumns, 30, - XmNleftAttachment, XmATTACH_FORM, - XmNleftOffset, 8, - XmNrightAttachment, XmATTACH_FORM, - XmNrightOffset, 8, - XmNtopAttachment, XmATTACH_WIDGET, - XmNtopOffset, 8, - XmNtopWidget, ComboBox2, - XmNshowLabel, True, - XmNlabelString, str, - NULL); - XmStringFree(str); - str = XmStringCreateLtoR("ComboBox (noneditable)", XmSTRING_DEFAULT_CHARSET); - XmComboBoxAddItem(ComboBox3, str, 0); XmStringFree(str); - str = XmStringCreateLtoR("ComboBox (editable)", XmSTRING_DEFAULT_CHARSET); - XmComboBoxAddItem(ComboBox3, str, 0); XmStringFree(str); - str = XmStringCreateLtoR("ComboBox (editable & static List)", XmSTRING_DEFAULT_CHARSET); - XmComboBoxAddItem(ComboBox3, str, 0); XmStringFree(str); - str = XmStringCreateLtoR("Center widget", XmSTRING_DEFAULT_CHARSET); - XmComboBoxAddItem(ComboBox3, str, 0); XmStringFree(str); - str = XmStringCreateLtoR("The ButtonFace Library", XmSTRING_DEFAULT_CHARSET); - XmComboBoxAddItem(ComboBox3, str, 0); XmStringFree(str); - - Sepp = XtVaCreateManagedWidget("separator", xmSeparatorWidgetClass, Form, - XmNleftAttachment, XmATTACH_FORM, - XmNrightAttachment, XmATTACH_FORM, - XmNtopAttachment, XmATTACH_WIDGET, - XmNtopOffset, 8, - XmNtopWidget, ComboBox3, - NULL); - - str = XmStringCreateLtoR( -"xmComboBoxWidgetClass Demo\n\nby Harald Albrecht\n\n\ -albrecht@igpm.rwth-aachen.de", XmSTRING_DEFAULT_CHARSET); - Label = XtVaCreateManagedWidget("label", xmLabelWidgetClass, Form, - XmNlabelString, str, - XmNleftAttachment, XmATTACH_FORM, - XmNleftOffset, 80, - XmNrightAttachment, XmATTACH_FORM, - XmNrightOffset, 80, - XmNbottomAttachment, XmATTACH_FORM, - XmNbottomOffset, 24, - XmNtopAttachment, XmATTACH_WIDGET, - XmNtopWidget, Sepp, - XmNtopOffset, 24, - NULL); - XmStringFree(str); - - XtRealizeWidget(TopLevel); - - XtAppMainLoop(AppContext); - return 0; /* Never will reach this */ -} /* main */ - - -/* End of ComboBoxDemo.c */ diff --git a/src/motif/xmcombo/xmcombo.c b/src/motif/xmcombo/xmcombo.c deleted file mode 100644 index f612df4e95..0000000000 --- a/src/motif/xmcombo/xmcombo.c +++ /dev/null @@ -1,3543 +0,0 @@ -/* - * ComboBox.c - Das schon lange schmerzlich vermisste Combo-Box- - * Widget -- nun endlich auf fuer Motif! - * - * Version 1.32a -- 04.10.95 - * - * Letzte Modifikation: - * 04.10.1995 Layoutfehler behoben, der bei angezeigter horizontaler Liste - * dazu fuehrt, dass das Listenfeld schrumpft. Daneben wird - * jetzt auch der Fall beruecksichtigt, dass das Listenfeld am - * unteren Bildschirmrand abgeschnitten wuerde. In diesem Fall - * erscheint das Listenfeld oberhalb des Eingabefeldes. - * 20.03.1995 XmNscrollbarDisplayPolicy,... koennen nun immer vom Pro- - * grammierer gesetzt werden, statische Liste hin und her. - * 21.10.1994 Fehler in SetValues behoben, der auftritt, wenn man versucht, - * XmNitems und XmNitemCount zu setzen. - * 01.10.1994 Externe Sortierung wird nun unterstuetzt sowie seitenweises - * Rollen in der Liste mittels PgUp und PgDn. - * 25.09.1994 Unterstuetzung fuer XmNautomaticSelection implementiert. - * Damit wird die Sache noch ein bischen runder in der Bedienung. - * Des weiteren sind etliche Callbacks neu hinzugekommen. - * 04.09.1994 Erweiterungen fuer XmSINGLE_SELECT eingebaut. Ausserdem - * kann die Liste jetzt auch statisch unterhalb des Eingabe- - * felds erscheinen. Damit sind wir nun noch kompatibler ge- - * worden -- fragt sich nur, zu was?! - * 29.08.1994 Alle Mirror-Ressourcen tauchen nun auch in der Ressourcen- - * liste der ComboBox-Klasse auf. Allerdings stehen keine - * sinnvollen Werte fuer die Initialisierung 'drin. Weiterhin - * den GeometryManager so veraendert, dass ab sofort das - * Label in der Breite wachsen oder schrumpfen darf. - * 07.06.1994 XmNmnemonic und XmNmnemonicCharSet implementiert. - * 29.05.1994 XmNsensitive angepasst. XmNcursorPositionVisible ist nun - * False, falls die ComboBox nicht editierbar ist. - * 07.05.1994 Drag'n'Drop funktioniert endlich!!! Zudem Anpassung an - * den fvwm ausgefuehrt ('st vom Focus-Verhalten ja ein halber - * twm). Hach', so'ne Linux-Box mit Motif 1.2 macht doch - * einfach Spass... vor allem geht hier so richtig die Post ab. - * Das kann man ja von M$ Windoze (Windoze for Mondays) nicht - * behaupten! - * 14.04.1994 Ein paar Speicherlecks korrigiert. - * 21.02.1994 Die Resourcen XmNitems und XmNitemCount lassen sich nun - * auch von einer Resourcendatei aus initialisieren. ACHTUNG: - * diese beiden Resourcen mussen immer beide beim Aufruf von - * XtSetValues zugleich angegeben werden, ansonsten werden - * diese Angaben ignoriert. - * 03.02.1994 Convenience-Funktionen auf Vordermann gebracht und noch - * einen Callback eingebaut, der immer dann aufgerufen wird, - * wenn die List angezeigt oder wieder versteckt wird. - * 01.02.1994 Motif 1.2-fest!!! Das wird aber heute abend gefeiert!! - * Endlich EIN Alptraum weniger! Naja, Drag'n'Drop bleibt - * noch zu loesen. Spaeter... - * 31.01.1994 VAX-fest (mit Hilfe von Vincenct Li) - * owlm sollte man abschaffen! Aber es scheint so, als ob - * ich jetzt doch noch das FocusOut-Problem geknackt habe. - * Ebenso die OSF...mit viel Arbeit habe ich nun auch noch - * eine anstaendige Initialisierung der Fontliste des Label- - * Kinds erreicht. - * 12.01.1994 Revisionsstand: 1.10a - * nun wirklich voll ANSI-faehiger C-Code - * Pixmaps werden ggf. aufgeraeumt; Druckrichtung - * wird vom Vater erfragt und an das Label weiter- - * gegeben. - * ESC-Behandlung implementiert. - * Spiegel-Ressourcen-Initialisierung aus Ressourcen-Daten- - * bank implementiert. - * Weitergabe von neu gesetzten Farben an die Kinder - * implementiert. - * Combo-Box kann jetzt wahlweise auch links neben dem - * Eingabefeld ein Label anzeigen. - * 09.12.1993 Revisionsstand: 1.00 - * erste oeffentlich zugaengliche Version der Combo-Box - * - * (c) 1993, 1994, 1995 Harald Albrecht - * Institut fuer Geometrie und Praktische Mathematik - * RWTH Aachen, Germany - * albrecht@igpm.rwth-aachen.de - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program (see the file COPYING for more details); - * if not, write to the Free Software Foundation, Inc., 675 Mass Ave, - * Cambridge, MA 02139, USA. - * - */ - -#include -#include -#include -#include -#ifdef VMS /* Huch, wo gibt's denn noch sowas ... ?! */ - /* Bitte keine Mail bzgl. dieser Bemerkung schicken... - * Ich weiss, das ist ein Vorurteil...aber es gibt - * ja auch wahre Vorurteile.... - */ -#include -#else -#include -#endif -#include -#include -#include -#include -#include -#include /* define toupper */ -#include "combop.h" - -#include - -/* --- Systemspezifische Definitionen */ -#ifdef VMS -#define strcasecmp(s1, s2) strcmp(s1, s2) -#endif - -/* --- sonstiger Quark */ -/* #ifdef DEBUG */ -#if 0 -#define LOG(p1) fprintf(stderr, p1); -#define LOG2(p1, p2) fprintf(stderr, p1, p2); -#define LOG3(p1, p2, p3) fprintf(stderr, p1, p2, p3); -#else -#define LOG(p1) -#define LOG2(p1, p2) -#define LOG3(p1, p2, p3) -#endif - -/* --------------------------------------------------------------------------- - * Resourcen-Liste... - * Hier werden diejenigen Resourcen definiert, die von "aussen" - also fuer - * den Programmierer oder Anwender - benutzbar und veraenderbar sind. - * - * Der Aufbau der einzelnen Eintraege ist immer wieder gleich: - * Resourcen-Name XmN... oder XtN - * Resourcen-Klasse XmC... oder XtC - * Resourcen-Type XmR... oder XtR (Datentyp der Variable in der - * struct der jeweiligen Widgetinstanz) - * Resourcen-Groesse aktuelle Groesse dieses Datentyps - * Resourcen-Offset Lage der Variable innerhalb der struct der - * Widgetinstanz - * Defaultwert-Type Typ des Defaultwertes - * Defaultwert (normalerweise) Zeiger auf den Defaultwert - */ -#define offset(field) XtOffsetOf(XmComboBoxRec, field) -static XtResource resources[] = { - { /* Eingabefeld kann veraendert werden, oder aber es sind nur - * die Vorgaben aus der Liste auswaehlbar. - */ - XmNeditable, XmCEditable, XmRBoolean, sizeof(Boolean), - offset(combobox.Editable), XmRString, "False" - }, - { /* Liste wird automatisch sortiert -- wie konnten die bei - * der OSF denn SOETWAS nur vergessen ?? - */ - XmNsorted, XmCSorted, XmRBoolean, sizeof(Boolean), - offset(combobox.Sorted), XmRString, "False" - }, - { /* externe Sortierreihenfolge */ - XmNsortingCallback, XmCSortingCallback, XmRCallback, - sizeof(XtCallbackList), - offset(combobox.SortingCBL), XmRCallback, NULL - }, - { /* Anzahl auf einmal sichtbarer Eintraege in der Liste (ent- - * spricht damit der Listenhoehe. - */ - XmNvisibleItemCount, XmCVisibleItemCount, XmRInt, sizeof(int), - offset(combobox.VisibleItemCount), XmRImmediate, (caddr_t) 8 - }, - { /* Fuer das Eingabefeld sowie die Liste verwandte Fonts */ - XmNfontList, XmCFontList, XmRFontList, sizeof(XmFontList), - offset(combobox.Font), XmRImmediate, NULL - }, - { /* Rueckruf bei Anwahl */ - XmNselectionCallback, XmCSelectionCallback, XmRCallback, - sizeof(XtCallbackList), - offset(combobox.SelectionCBL), XmRCallback, NULL - }, - { /* Gegenteil zum vorherigen Callback! */ - XmNunselectionCallback, XmCUnselectionCallback, XmRCallback, - sizeof(XtCallbackList), - offset(combobox.UnselectionCBL), XmRCallback, NULL - }, - { /* Doppelklick in der Liste */ - XmNdefaultActionCallback, XmCCallback, XmRCallback, - sizeof(XtCallbackList), - offset(combobox.DefaultActionCBL), XmRCallback, NULL - }, - { /* Rueckruf bei Liste ausklappen/verstecken */ - XmNdropDownCallback, XmCDropDownCallback, XmRCallback, - sizeof(XtCallbackList), - offset(combobox.DropDownCBL), XmRCallback, NULL - }, - { /* Eingabe abchecken... */ - XmNmodifyVerifyCallback, XmCCallback, XmRCallback, - sizeof(XtCallbackList), - offset(combobox.ModifyVerifyCBL), XmRCallback, NULL - }, - { - XmNvalueChangedCallback, XmCCallback, XmRCallback, - sizeof(XtCallbackList), - offset(combobox.ValueChangedCBL), XmRCallback, NULL - }, - { - XmNactivateCallback, XmCCallback, XmRCallback, - sizeof(XtCallbackList), - offset(combobox.ActivateCBL), XmRCallback, NULL - }, - { - XmNmotionVerifyCallback, XmCCallback, XmRCallback, - sizeof(XtCallbackList), - offset(combobox.MotionVerifyCBL), XmRCallback, NULL - }, - { /* Verhalten der ausgeklappten Liste bei Focus-Out */ - XmNpersistentDropDown, XmCPersistentDropDown, XmRBoolean, - sizeof(Boolean), - offset(combobox.Persistent), XmRString, "False" - }, - { /* Wie verhaelt sich der Window-Manager? */ - XmNtwmHandlingOn, XmCTwmHandlingOn, XmRBoolean, sizeof(Boolean), - offset(combobox.TwmHandlingOn), XmRString, "False" - }, - { /* Label anzeigen oder nicht? */ - XmNshowLabel, XmCShowLabel, XmRBoolean, sizeof(Boolean), - offset(combobox.ShowLabel), XmRString, "False" - }, - { /* Abstand zw. linkem Rand Eingabefeld und linkem Rand Liste */ - XmNdropDownOffset, XmCDropDownOffset, XmRPosition, - sizeof(Position), offset(combobox.DropDownOffset), - XmRImmediate, (caddr_t) -1 - }, - { /* Neue Voreinstellung bzgl. des Randes */ - XmNborderWidth, XmCBorderWidth, XmRDimension, sizeof(Dimension), - offset(core.border_width), XmRImmediate, (caddr_t) 0 - }, - { /* welcher Cursor soll in der Dropdown-Liste benutzt werden? */ - XmNdropDownCursor, XmCDropDownCursor, XmRCursor, sizeof(Cursor), - offset(combobox.ArrowCursor), XmRString, "center_ptr" - }, - { /* wie lassen sich Eintraege auswaehlen? */ - XmNselectionPolicy, XmCSelectionPolicy, XmRSelectionPolicy, sizeof(unsigned char), - offset(combobox.SelectionPolicy), XmRImmediate, (caddr_t) XmBROWSE_SELECT - }, - { /* Wann werden die Callbacks aufgerufen? */ - XmNautomaticSelection, XmCAutomaticSelection, XmRBoolean, sizeof(Boolean), - offset(combobox.AutomaticSelection), XmRString, "False" - }, - { /* erscheint die Liste staendig? */ - XmNstaticList, XmCStaticList, XmRBoolean, sizeof(Boolean), - offset(combobox.StaticList), XmRString, "False" - }, - { - XmNscrollBarDisplayPolicy, XmCScrollBarDisplayPolicy, XmRScrollBarDisplayPolicy, sizeof(unsigned char), - offset(combobox.ScrollBarDisplayPolicy), XmRImmediate, (caddr_t) XmAS_NEEDED - }, - { - XmNlistSizePolicy, XmCListSizePolicy, XmRListSizePolicy, sizeof(unsigned char), - offset(combobox.ListSizePolicy), XmRImmediate, (caddr_t) XmVARIABLE - }, - { - XmNsquareArrow, XmCSquareArrow, XmRBoolean, sizeof(Boolean), - offset(combobox.SquareArrow), XmRString, "False" - }, - { - XmNarrowSpacingOn, XmCArrowSpacingOn, XmRBoolean, sizeof(Boolean), - offset(combobox.ArrowSpacingOn), XmRString, "True" - }, -#ifndef DONT_LOOK_IN_THE_MIRROR - /* Mirror-Ressourcen, Adressen sind ungueltig!!!! */ - { - XmNalignment, XmCAlignment, XmRAlignment, sizeof(unsigned char), - offset(combobox.Dummy), XmRImmediate, (caddr_t) 0 - }, - { - XmNblinkRate, XmCBlinkRate, XmRInt, sizeof(int), - offset(combobox.Dummy), XmRImmediate, (caddr_t) 0 - }, - { - XmNcolumns, XmCColumns, XmRShort, sizeof(short), - offset(combobox.Dummy), XmRImmediate, (caddr_t) 0 - }, - { - XmNcursorPosition, XmCCursorPosition, XmRTextPosition, sizeof(XmTextPosition), - offset(combobox.Dummy), XmRImmediate, (caddr_t) 0 - }, - { - XmNitemCount, XmCItemCount, XmRInt, sizeof(int), - offset(combobox.Dummy), XmRImmediate, (caddr_t) 0 - }, - { - XmNitems, XmCItems, XmRXmStringTable, sizeof(XmStringTable), - offset(combobox.Dummy), XmRImmediate, (caddr_t) 0 - }, - { - XmNlabelFontList, XmCLabelFontList, XmRFontList, sizeof(XmFontList), - offset(combobox.Dummy), XmRImmediate, (caddr_t) 0 - }, - { - XmNlabelInsensitivePixmap, XmCLabelInsensitivePixmap, XmRPixmap, sizeof(Pixmap), - offset(combobox.Dummy), XmRImmediate, (caddr_t) 0 - }, - { - XmNlabelMarginBottom, XmCLabelMarginBottom, XmRDimension, sizeof(Dimension), - offset(combobox.Dummy), XmRImmediate, (caddr_t) 0 - }, - { - XmNlabelMarginHeight, XmCLabelMarginHeight, XmRDimension, sizeof(Dimension), - offset(combobox.Dummy), XmRImmediate, (caddr_t) 0 - }, - { - XmNlabelMarginLeft, XmCLabelMarginLeft, XmRDimension, sizeof(Dimension), - offset(combobox.Dummy), XmRImmediate, (caddr_t) 0 - }, - { - XmNlabelMarginRight, XmCLabelMarginRight, XmRDimension, sizeof(Dimension), - offset(combobox.Dummy), XmRImmediate, (caddr_t) 0 - }, - { - XmNlabelMarginTop, XmCLabelMarginTop, XmRDimension, sizeof(Dimension), - offset(combobox.Dummy), XmRImmediate, (caddr_t) 0 - }, - { - XmNlabelMarginWidth, XmCLabelMarginWidth, XmRDimension, sizeof(Dimension), - offset(combobox.Dummy), XmRImmediate, (caddr_t) 0 - }, - { - XmNlabelPixmap, XmCLabelPixmap, XmRPixmap, sizeof(Pixmap), - offset(combobox.Dummy), XmRImmediate, (caddr_t) 0 - }, - { - XmNlabelString, XmCLabelString, XmRString, sizeof(XmString), - offset(combobox.Dummy), XmRImmediate, (caddr_t) 0 - }, - { - XmNlabelType, XmCLabelType, XmRLabelType, sizeof(unsigned char), - offset(combobox.Dummy), XmRImmediate, (caddr_t) 0 - }, - { - XmNlistMarginHeight, XmCListMarginHeight, XmRDimension, sizeof(Dimension), - offset(combobox.Dummy), XmRImmediate, (caddr_t) 0 - }, - { - XmNlistMarginWidth, XmCListMarginWidth, XmRDimension, sizeof(Dimension), - offset(combobox.Dummy), XmRImmediate, (caddr_t) 0 - }, - { - XmNlistSpacing, XmCListSpacing, XmRDimension, sizeof(Dimension), - offset(combobox.Dummy), XmRImmediate, (caddr_t) 0 - }, - { - XmNmarginHeight, XmCMarginHeight, XmRDimension, sizeof(Dimension), - offset(combobox.Dummy), XmRImmediate, (caddr_t) 0 - }, - { - XmNmarginWidth, XmCMarginWidth, XmRDimension, sizeof(Dimension), - offset(combobox.Dummy), XmRImmediate, (caddr_t) 0 - }, - { - XmNmaxLength, XmCMaxLength, XmRInt, sizeof(int), - offset(combobox.Dummy), XmRImmediate, (caddr_t) 0 - }, - { - XmNselectThreshold, XmCSelectThreshold, XmRInt, sizeof(int), - offset(combobox.Dummy), XmRImmediate, (caddr_t) 0 - }, - { - XmNstringDirection, XmCStringDirection, XmRStringDirection, sizeof(XmStringDirection), - offset(combobox.Dummy), XmRImmediate, (caddr_t) 0 - }, - { - XmNtopItemPosition, XmCTopItemPosition, XmRInt, sizeof(int), - offset(combobox.Dummy), XmRImmediate, (caddr_t) 0 - }, - { - XmNvalue, XmCValue, XmRString, sizeof(String), - offset(combobox.Dummy), XmRImmediate, (caddr_t) 0 - }, - { - XmNvalue, XmCValue, XmRInt, sizeof(int), - offset(combobox.Dummy), XmRImmediate, (caddr_t) 0 - }, -#endif -}; /* resources[] */ - -/* --------------------------------------------------------------------------- - * Funktions-Prototypen fuer die 'Methoden' des ComboBox-Widgets. Diese - * 'Methoden' werden vom Xt-Toolkit aufgerufen und sorgen dafuer, dass eine - * ComboBox sich wie ein anstaendiges Widget verhaelt. - */ -static void Initialize (Widget, XmComboBoxWidget, ArgList, - Cardinal *); -static void Destroy (XmComboBoxWidget); -static void Resize (XmComboBoxWidget); -static Boolean SetValues (XmComboBoxWidget, XmComboBoxWidget, - XmComboBoxWidget, ArgList, Cardinal *); -static void GetValuesAlmost(XmComboBoxWidget, ArgList, Cardinal *); -static XtGeometryResult QueryGeometry (XmComboBoxWidget, XtWidgetGeometry *, - XtWidgetGeometry *); -static XtGeometryResult GeometryManager(Widget, XtWidgetGeometry *, - XtWidgetGeometry *); -static void ClassInit (); -static void Realize (XmComboBoxWidget, Mask *, - XSetWindowAttributes *); -/* --------------------------------------------------------------------------- - * diverse restliche Prototypen... naja, hier halt etwas mager! Hierbei - */ -static void ShowHideDropDownList (XmComboBoxWidget w, XEvent *event, - Boolean Show); -static void ShellCallback (Widget w, XtPointer cbw, - XEvent *event, Boolean *ContDispatch); -static void DoLayout (XmComboBoxWidget w); -/* -------------------------------------------------------------------- - * Klassen-Definition - */ -XmComboBoxClassRec xmComboBoxClassRec = { - { /*** core-Klasse ***/ - /* superclass */ (WidgetClass) &xmManagerClassRec, - /* class_name */ "XmComboBox", - /* widget_size */ sizeof(XmComboBoxRec), - /* class_initialize */ (XtProc) ClassInit, - /* class_part_initialize */ NULL, - /* class_inited */ False, /* IMMER mit FALSE initialisieren !! */ - /* initialize */ (XtInitProc) Initialize, - /* initialize_hook */ NULL, - /* realize */ (XtRealizeProc) Realize, - /* actions */ NULL, - /* num_actions */ 0, - /* resources */ resources, - /* num_resources */ XtNumber(resources), - /* xrm_class */ NULLQUARK, - /* compress_motion */ True, - /* compress_exposure */ XtExposeCompressMultiple, - /* compress_enterleave */ True, - /* visible_interest */ False, - /* destroy */ (XtWidgetProc) Destroy, - /* resize */ (XtWidgetProc) Resize, - /* expose */ NULL, - /* set_values */ (XtSetValuesFunc) SetValues, - /* set_values_hook */ NULL, - /* set_values_almost */ XtInheritSetValuesAlmost, - /* get_values_hook */ (XtArgsProc) GetValuesAlmost, - /* accept_focus */ NULL, - /* version */ XtVersion, - /* callback_private */ NULL, - /* tm_table */ NULL, - /* query_geometry */ (XtGeometryHandler) QueryGeometry, - /* display_accelerator */ XtInheritDisplayAccelerator, - /* extension */ NULL - }, - { /*** composite-Klasse ***/ - /* geometry_manager */ (XtGeometryHandler) GeometryManager, - /* change_managed */ XtInheritChangeManaged, - /* insert_child */ XtInheritInsertChild, - /* delete_child */ XtInheritDeleteChild, - /* extension */ NULL - }, - { /*** constraint-Klasse ***/ - /* resources */ NULL, - /* num_resources */ 0, - /* constraint_size */ sizeof(XmManagerConstraintPart), - /* initialize */ NULL, - /* destroy */ NULL, - /* set_values */ NULL, - /* extension */ NULL - }, - { /*** xmManager-Klasse ***/ - /* translations */ XtInheritTranslations, - /* syn_resources */ NULL, - /* num_syn_resources */ 0, - /* syn_constraint_resources */ NULL, - /* num_syn_constraint_resources */ 0, - /* parent_process */ XmInheritParentProcess, - /* extension */ NULL - }, - { /*** combobox-Klasse ***/ - /* */ 0 - } -}; /* xmComboBoxClassRec */ -WidgetClass xmComboBoxWidgetClass = (WidgetClass) &xmComboBoxClassRec; - -/* -------------------------------------------------------------------- - * -------------------------------------------------------------------- - * Translation-Tabelle (hier allerdings fuer das Eingabefeld!) - * Tjaja....mit der Reihenfolge von Translations ist das schon so eine - * ziemlich boese Sache! - */ -static char newEditTranslations[] = - "AltosfDown: ComboBox-Manager(show-hide-list) \n\ - MetaosfDown: ComboBox-Manager(show-hide-list) \n\ - AltosfUp: ComboBox-Manager(hide-list) \n\ - MetaosfUp: ComboBox-Manager(hide-list) \n\ - osfUp: ComboBox-Manager(up) \n\ - osfDown: ComboBox-Manager(down) \n\ - osfPageUp: ComboBox-Manager(page-up) \n\ - osfPageDown: ComboBox-Manager(page-down) \n\ - osfCancel: ComboBox-Manager(cancel) \n\ - Return: ComboBox-Manager(activate) activate()" - ; -/* speziell bei der nicht editierbaren Combo-Box sind noch einige - * andere Tasten belegt, die sonst dem Eingabefeld alleine gehoeren. - * Die dazugehoerigen neuen Translations befinden sich in dieser - * zusaetzlichen Tabelle, das Anhaengsel ...NE ist dabei die Ab- - * kuerzung fuer "non editable". - */ -static char newEditTranslationsNE[] = - "osfDelete: ComboBox-Manager(wipe-out) \n\ - osfBeginLine: ComboBox-Manager(top) \n\ - osfEndLine: ComboBox-Manager(bottom) " - ; -/* Momentan gibt es noch Aerger mit dem Drag'n'Drop-Mechanismus - * von Motif 1.2. Legen wir ihn deshalb erst einmal still, solange - * bis ich weiss, warum, und eine Loesung parat habe. NEU: Nur wenn - * Sie mit einer libXm geschlagen sind, die partout nicht funktionieren - * will, muessen Sie Drag'n'Drop stillegen, ansonsten klappts doch! - */ -#ifdef NODRAGNDROP -static char newListTranslations[] = - ": ComboBox-Manager(no-operation) "; -#endif -static char newListTranslationsE[] = - "osfPageUp: ComboBox-Manager(page-up) \n\ - osfPageDown: ComboBox-Manager(page-down) "; - -/* --------------------------------------------------------------------------- - * --------------------------------------------------------------------------- - * Aktionen-Tabelle: Hierdurch werden den einzelnen Translations die dazuge- - * hoerigen C-Routinen zugeordnet. Da wir hier ein anstaendiges ANSI-C be- - * nutzen, werden hier zuerst einmal die Prototypen faellig... Ach ja, noch - * ein Hinweis in eigener Sache... der ComboBox-Manager muss applikationsweit - * registriert werden, da er auch von Translationen in den Kindern der Combo- - * Box aktiviert wird. Bei diesem Namen der 'Aktion' steht aber nicht zu be- - * fuerchten, dass er anderweitig bereits in Anwendung ist. - */ -static void CBoxManager(Widget w, XEvent *event, String *params, - Cardinal *num_params); - -static XtActionsRec actions[] = { - { "ComboBox-Manager", CBoxManager }, - { NULL, NULL } -}; /* actions */ - - -/* -------------------------------------------------------------------- - * Eine Instanz dieser Widget-Klasse wird erstmalig in Betrieb ge- - * nommen, daher sind noch Vorbereitungen notwendig, die nun hier - * durchgefuehrt werden. - */ -static XtTranslations NewEditTranslations, NewEditTranslationsNE, - NewListTranslations, NewListTranslationsE; - -static XtConvertArgRec ConverterScreenConvertArg[] = { - { XtBaseOffset, (XtPointer) XtOffset(Widget, core.screen), - sizeof(Screen *) } -}; - -static void ClassInit() -{ - NewEditTranslations = - XtParseTranslationTable(newEditTranslations); - NewEditTranslationsNE = - XtParseTranslationTable(newEditTranslationsNE); -#ifdef NODRAGNDROP - NewListTranslations = - XtParseTranslationTable(newListTranslations); -#endif - NewListTranslationsE = - XtParseTranslationTable(newListTranslationsE); - XtAddConverter(XtRString, XtRBitmap, - XmuCvtStringToBitmap, - ConverterScreenConvertArg, - XtNumber(ConverterScreenConvertArg)); -} /* ClassInit */ - -/* --------------------------------------------------------------------------- - * Weil es sich bei diesem Widget um ein etwas komplizierteres zusammengesetz- - * tes Widget handelt, muessen wir hier - wo eigentlich nur das die Combobox - * bildende Fenster auf dem X-Server erzeugt wird - noch einmal das Layout - * auf Vordermann bringen. Den Aerger loest dabei das Listenfeld der OSF aus, - * das einfach keine Geometrie-Nachfragen verschickt, solange es nicht - * 'realized' ist!!! Nicht, dass ich mich ueber so einen Sauhaufen aufregen - * wuerde...ich doch nicht! ABER MACHT IHR DENN NUR SO'N MIST...? WARUM KOENNT - * IHR DENN NICHT EINMAL DIESES ****(BIEP)**** MOTIF TOOLKIT ANSTAENDIG - * DOKUMENTIEREN! Ich glaub', ich kann mich nach dem Chaos eigentlich nur noch - * hemmungslos besaufen... Die Suche nach der Ursache (bzw. Urheber = OSF) hat - * mich doch einige Tage gekostet (jaja...die Mannstunden!). - */ -static void Realize(XmComboBoxWidget w, Mask *ValueMask, - XSetWindowAttributes *Attributes) -{ - /* - * Also: wenn die Liste staendig sichtbar ist, dann zuerst noch einmal - * das Layout berechnen. Sonst wird vorne und hinten 'was abgeschnitten. - */ - if ( w->combobox.StaticList ) - DoLayout(w); - (*w->core.widget_class->core_class.superclass->core_class.realize) - ((Widget) w, ValueMask, Attributes); -} /* Realize */ - -/* --------------------------------------------------------------------------- - * Suche dasjenige Fenster, in dem unsere Shell liegt, in der wiederum die - * Combo-Box steckt. Diese Information wird benoetigt, um die Drop-Down-Liste - * innerhalb des Fensterstacks immer direkt oberhalb der Shell mit der Combo- - * Box zu halten. Jajaja -- ich muss halt davon ausgehen, dass der Fenster- - * manager ein sog. "reparenting wm" ist; also die Dekorationen in einem - * Fenster dargestellt werden und unsere Shell in dieses Fenster hineingepackt - * ist. Die Dekoration ist damit ein Kind des 'root window' - wie die Shell, - * in der die Drop-Down-Liste steckt. Und da nur Geschwisterfenster (sibling - * windows) im gleichen Stapel stecken, reicht das Shellfenster nicht aus. - * Alle gaengigen Fenstermanager sind solche "reparenting wm's", so dass ich - * hier zu diesem Trick greifen kann, um die Drop-Down-Liste immer ueber der - * ComboBox zu halten. - * - * Parameter: - * w Diejenige Combo-Box, fuer die wir dasjenige - * Fenster des Window-Managers ermitteln sollen, - * dass direkt unterhalb des Root-Fensters liegt. - * Ergebnis: - * besagtes zu suchendes Fenster, dass die Dekoration enthaelt (hoffentlich - * nur echte Bruesseler Spitze!) - */ -static Window GetDecorationWindow(XmComboBoxWidget w) -{ - Window Root, Parent, AWindow; - Window *Children; - unsigned int NumChildren; - - Parent = XtWindow((Widget) w); - /* Suche nach dem Dekorationsfenster des Window-Managers */ - do { - AWindow = Parent; - XQueryTree(XtDisplay((Widget) w), AWindow, - &Root, &Parent, &Children, &NumChildren); - XFree((char *) Children); - } while ( Parent != Root ); - return AWindow; -} /* GetDecorationWindow */ - -/* -------------------------------------------------------------------- - * Eine Combo-Box aus dem Wege raeumen... - * Momentan muessen wir hier nur den Cursor wieder los werden sowie - * eventuell reservierte Pixmaps. - * Ups -- natuerlich muss auch wieder der Callback entfernt werden, - * der noch an der Shell haengt. - */ -static void Destroy(XmComboBoxWidget w) -{ -/* fprintf(stderr, "Destroy: %08X\n", w->core.window);*/ - if ( w->combobox.ConvertBitmapToPixmap ) - XFreePixmap(XtDisplay((Widget) w), - w->combobox.LabelPixmap); - if ( w->combobox.ConvertBitmapToPixmapInsensitive ) - XFreePixmap(XtDisplay((Widget) w), - w->combobox.LabelInsensitivePixmap); - if ( w->combobox.PendingFocusOut ) - XtRemoveWorkProc(w->combobox.WorkProcID); - XtRemoveEventHandler(w->combobox.MyNextShell, - StructureNotifyMask | FocusChangeMask, - True, (XtEventHandler) ShellCallback, - (XtPointer) w); -} /* Destroy */ - -/* --------------------------------------------------------------------------- - * Ueberpruefe, ob fuer die Ressource "DropDownOffset" ein gueltiger Wert vom - * Benutzer angegeben wurde. Diese Ressource gibt an, wie weit die Drop-Down- - * Liste nach rechts gegenueber dem Eingabefeld eingerueckt sein soll. Wenn - * hierfuer ein negativer Wert angegeben ist, so berechne statt dessen einen - * Standardwert: dieser entspricht der Breite der Pfeilschaltflaeche, was - * optisch ganz gut wirkt (jedenfall nach meinem Dafuerhalten). - */ -static void CheckDropDownOffset(XmComboBoxWidget w) -{ - if ( w->combobox.DropDownOffset < 0 ) { - XtWidgetGeometry ArrowGeom; - - XtQueryGeometry(w->combobox.ArrowCtrl, NULL, &ArrowGeom); - w->combobox.DropDownOffset = ArrowGeom.width; - } -} /* CheckDropDownOffset */ - -/* -------------------------------------------------------------------- - * Berechne die voreinzustellende Groesse, die diese Combo-Box be- - * sitzen muss, um ausreichenden Raum fuer das Eingabefeld und den - * Pfeil rechts daneben zur Verfuegung zu stellen. Bei einer - * editierbaren Combo-Box ist zwischen dem Eingabefeld und dem Pfeil - * noch ein Angst-Rasen von der halben Breite eines Pfeiles vorhanden. - * Wird das Listenfeld staendig dargestellt, so entfallen sowohl Pfeil - * als auch der Angstrasen, dafuer muss aber die Hoehe des Listenfelds - * beruecksichtigt werden. - */ -static void DefaultGeometry(XmComboBoxWidget w, - Dimension *TotalWidth, - Dimension *TotalHeight, - Dimension *EditCtrlWidth, - Dimension *LabelCtrlWidth) -{ - XtWidgetGeometry EditGeom, ArrowGeom, LabelGeom, ListGeom; - - XtQueryGeometry(w->combobox.EditCtrl, NULL, &EditGeom); - XtQueryGeometry(w->combobox.ArrowCtrl, NULL, &ArrowGeom); - XtQueryGeometry(w->combobox.LabelCtrl, NULL, &LabelGeom); - - /* - * Soll die Pfeilschaltflaeche quadratisch, praktisch, gut sein? - */ - if ( w->combobox.SquareArrow ) - ArrowGeom.width = ArrowGeom.height; - else - ArrowGeom.width = (ArrowGeom.height * 4) / 5; - - /* - * Zuerst einmal ein paar einfache Werte ermitteln und zurueckgeben... - */ - *TotalHeight = EditGeom.height; - *EditCtrlWidth = EditGeom.width; - *LabelCtrlWidth = LabelGeom.width; - - /* - * Ermittele nun die Breite, welche die Combobox benoetigt. Je nach- - * dem, ob das Eingabefeld oder die Liste breiter sind, wird der - * entsprechende Wert genommen. Diese Auswahl zwischen der Breite von - * Eingabefeld und Liste findet aber nur statt, wenn die Liste auch - * wirklich staendig sichtbar ist. Waehrend der Initialisierung hat - * allerdings XmNcolumns, so dass in diesem Moment die List nicht - * mehr die Breite kontrollieren kann! - */ - if ( w->combobox.StaticList ) { - /* - * Beachte: Frage nicht die Listbox, sondern das ScrolledWindow, - * in welchem die Liste eingebettet ist. - */ - CheckDropDownOffset(w); - XtQueryGeometry(XtParent(w->combobox.ListCtrl), NULL, &ListGeom); - if ( w->combobox.InInit ) { - *TotalWidth = EditGeom.width; - } else { - if ( EditGeom.width < (Dimension) - (ListGeom.width + w->combobox.DropDownOffset) ) - *TotalWidth = ListGeom.width + w->combobox.DropDownOffset; - else - *TotalWidth = EditGeom.width; - } - *TotalHeight += ListGeom.height; - } else { - /* - * Das Listenfeld interessiert uns hier nicht. Degegen sollte noch - * die Breite fuer den Pfeil und ein evtl. Angstrasen beachtet - * werden. - */ - *TotalWidth = EditGeom.width + ArrowGeom.width; - if ( w->combobox.Editable && w->combobox.ArrowSpacingOn ) - *TotalWidth += ArrowGeom.width/2; - } - - /* - * Vergiss nicht, auch noch ein evtl. sichtbares Schriftfeld zu berueck- - * sichtigen! - */ - if ( w->combobox.ShowLabel ) - *TotalWidth += LabelGeom.width; - -} /* DefaultGeometry */ - -/* -------------------------------------------------------------------- - * Anhand eines Widgets ermittele darueber die Screennummer desjenigen - * Screens, auf dem das Widget erscheint. - * Parameter: - * w betroffenes Widget. - * Ergebnis: - * Nummer desjenigen Screens, auf dem das Widget angezeigt wird. - */ -static int WidgetToScreen(Widget w) -{ - Screen *screen; - Display *display; - int NumScreens, i; - - screen = XtScreen(w); NumScreens = ScreenCount(XtDisplay(w)); - display = DisplayOfScreen(screen); - for ( i = 0; i < NumScreens; ++i ) - if ( ScreenOfDisplay(display, i) == screen ) - return i; - XtError("WidgetToScreen: data structures are destroyed."); -} /* WidgetToScreen */ - -/* -------------------------------------------------------------------- - * Positioniere die DropDown-Liste (soweit sie natuerlich auch momentan - * sichtbar ist) so auf dem Bildschirm, dass sie sich unterhalb des - * Eingabefeldes anschliesst. - */ -static void DoDropDownLayout(XmComboBoxWidget w) -{ - Position abs_x, abs_y; - Dimension ArrowWidth, ListWidth, ListHeight; - Dimension ScreenHeight, LabelWidth; - Window Decoration; - XWindowChanges WindowChanges; - - /* - * etwa nicht sichtbar ?!! Oder etwa immer sichtbar ?!! - * Dann sind wir jetzt sofort fertig. - */ - if ( !w->combobox.ListVisible || w->combobox.StaticList ) return; - /* - * Finde zuerst einmal heraus, wo wir uns denn auf dem Bildschirm be- - * finden sollen... Beachte dabei auch, dass eventuell die Liste zu schmal - * werden koennte und gib' ihr dann ggf. eine Mindestbreite, damit es - * keinen core-Dump gibt. - */ - XtVaGetValues(w->combobox.ArrowCtrl, XmNwidth, &ArrowWidth, NULL); - XtTranslateCoords((Widget) w, 0, w->core.height, &abs_x, &abs_y); - CheckDropDownOffset(w); - ListWidth = w->core.width - w->combobox.DropDownOffset - 2; - abs_x += w->combobox.DropDownOffset; - if ( w->combobox.ShowLabel ) { - XtVaGetValues(w->combobox.LabelCtrl, XmNwidth, &LabelWidth, NULL); - ListWidth -= LabelWidth; - abs_x += LabelWidth; - } - if ( ListWidth < 20 ) ListWidth = 20; - XtVaGetValues(XtParent(w->combobox.ListCtrl), XmNheight, &ListHeight, NULL); - /* - * Hier ueberpruefen wir noch, ob die Liste unten aus dem Bildschirm - * herausfallen wuerde. In dem Fall klappen wir die Liste oberhalb des - * Eingabefeldes auf. - */ - ScreenHeight = DisplayHeight(XtDisplay((Widget) w), - WidgetToScreen((Widget) w)); - if ( abs_y + ListHeight + 2 > ScreenHeight ) { - int y; - - y = ((int) abs_y) - ListHeight - w->core.height - 1; - if ( y < 0 ) y = 0; - abs_y = (Position) y; - } - XtConfigureWidget(w->combobox.PopupShell, - abs_x, abs_y, ListWidth, ListHeight, 1); - /* - * So...das hier dient der Kosmetik: hier sorgen wir dafuer, dass die - * Liste auch wirklich immer direkt ueber der ComboBox innerhalb des - * Fensterstapels schwebt. Siehe dazu auch die Erlaeuterungen und An- - * merkungen in GetDecorationWindow(). - */ - if ( XtIsRealized((Widget) w) ) { - WindowChanges.sibling = GetDecorationWindow(w); - WindowChanges.stack_mode = Above; - XReconfigureWMWindow(XtDisplay((Widget) w), - XtWindow(w->combobox.PopupShell), - WidgetToScreen(w->combobox.PopupShell), - CWSibling | CWStackMode, &WindowChanges); - } -} /* DoDropDownLayout */ - -/* -------------------------------------------------------------------- - * Naja... diese Routine scheint ja bereits zu einer Institution beim - * Schreiben von Composite-Widgets geworden zu sein. - * - * Hier beim ComboBox-Widget ist die Aufgabe ziemlich einfach: es - * genuegt, die Eingabezeile und den Pfeil-Button entsprechend inner- - * halb des ComboBox-Widgets zu plazieren. Seit allerdings noch das - * Textlabel hinzukommt, wird's langsam aufwendiger. Nun ja - da sich - * das Listenfeld wahlweise auch statisch einblenden laesst, ist nun - * noch mehr zu beruecksichtigen, wenn die Kinder-Widgets an ihre - * Plaetze geschoben werden. - */ -static void DoLayout(XmComboBoxWidget w) -{ - Dimension EditCtrlWidth, ArrowCtrlWidth, LabelCtrlWidth; - Dimension ComboBoxHeight; - Dimension BorderWidth; - Dimension HighlightThickness; - Position EditX; - - XtVaGetValues(w->combobox.ArrowCtrl, - XmNheight, &ArrowCtrlWidth, NULL); - if ( !w->combobox.SquareArrow ) - ArrowCtrlWidth = (ArrowCtrlWidth * 4) / 5; - XtVaGetValues(w->combobox.LabelCtrl, - XmNwidth, &LabelCtrlWidth, NULL); - - /* - * In Abhaengigkeit davon, ob die ComboBox editierbar ist und ob das - * Listenfeld staendig sichtbar sein soll, hier die Breite einzelner - * Widgets bestimmen. - */ - if ( w->combobox.StaticList ) { - ComboBoxHeight = w->combobox.EditCtrl->core.height; - EditCtrlWidth = w->core.width; - } else { - ComboBoxHeight = w->core.height; - EditCtrlWidth = w->core.width - ArrowCtrlWidth; - if ( w->combobox.Editable && w->combobox.ArrowSpacingOn ) - EditCtrlWidth -= ArrowCtrlWidth/2; - } - /* Beruecksichtige noch ein evtl. ebenfalls anzuzeigendes Schriftfeld - * neben dem Eingabefeld. - */ - if ( w->combobox.ShowLabel ) { - EditX = LabelCtrlWidth; - EditCtrlWidth -= LabelCtrlWidth; - } else - EditX = 0; - if ( EditCtrlWidth < 20 ) EditCtrlWidth = 20; -/* Plaziere nun das Eingabefeld... */ - XtVaGetValues(w->combobox.EditCtrl, - XmNborderWidth, &BorderWidth, - XmNhighlightThickness, &HighlightThickness, - NULL); - XtConfigureWidget(w->combobox.EditCtrl, - EditX, 0, - EditCtrlWidth, ComboBoxHeight, BorderWidth); -/* ...und nun den Pfeil... */ - XtVaGetValues(w->combobox.ArrowCtrl, - XtNborderWidth, &BorderWidth, NULL); - XtConfigureWidget(w->combobox.ArrowCtrl, - w->core.width-ArrowCtrlWidth, HighlightThickness, - ArrowCtrlWidth, - ComboBoxHeight - 2 * HighlightThickness, - BorderWidth); -/* ...und ggf. das Textlabel. */ - if ( w->combobox.ShowLabel ) { - XtVaGetValues(w->combobox.LabelCtrl, - XmNborderWidth, &BorderWidth, - NULL); - XtConfigureWidget(w->combobox.LabelCtrl, - 0, 0, - LabelCtrlWidth, ComboBoxHeight, - BorderWidth); - } -/* Falls da noch die Liste herumgurkt... */ - if ( w->combobox.StaticList ) { - Dimension Width, Height; - - if ( w->core.height > ComboBoxHeight ) - Height = w->core.height - ComboBoxHeight; - else - Height = 10; - - if ( w->core.width > (Dimension)(ArrowCtrlWidth + EditX) ) - Width = w->core.width - ArrowCtrlWidth - EditX; - else - Width = 10; - - XtConfigureWidget(XtParent(w->combobox.ListCtrl), - EditX + ArrowCtrlWidth, ComboBoxHeight, Width, Height, 0); - } else if ( w->combobox.ListVisible ) - DoDropDownLayout(w); -} /* DoLayout */ - -/* -------------------------------------------------------------------- - * Pappi fragt nach, wie gross wir denn sein wollen. - * Die hier benutzte Vorgehensweise zur Ermittlung der Groesse: - * Sobald der Vater uns eine Breite (oder aber Hoehe) vorschlaegt, - * die fuer uns eigentlich zu klein ist, meckern wir und schlagen - * die von uns benoetigte Breite (Hoehe) vor. - * Soweit also zur Theorie... leider sieht es beispielsweise das - * Motif Form-Widget ueberhaupt nicht ein, uns auch nur ein einziges - * Mal nach unseren Wuenschen zu fragen! Damit es bei derart unum- - * gaenglichen Widgets dann doch noch geht, muss ChangedManaged die - * Kohlen wieder aus dem Feuer holen mit einer Sondertour. - * Parameter: - * *Request Vom Vater vorgeschlagene Geometrie - * Ergebnis: - * *Reply Unsere Antwort auf die vorgeschlagene Geometrie - * sowie XtGeometryYes oder XtGeometryAlmost, je nachdem, wie gut - * uns Pappis Vorschlag in den Kram passt. - */ -static XtGeometryResult QueryGeometry(XmComboBoxWidget w, - XtWidgetGeometry *Request, - XtWidgetGeometry *Reply) -{ - XtGeometryResult result = XtGeometryYes; - Dimension minW, minH, editW, labelW; - -/* Elternteil will nichts weiter aendern, also ist uns das - * recht so. - */ - Request->request_mode &= CWWidth | CWHeight; - if ( Request->request_mode == 0 ) return result; - - DefaultGeometry(w, &minW, &minH, &editW, &labelW); - -/* Ueberpruefe, ob uns das in der Breite passt, was Pappi moechte... */ - if ( Request->request_mode & CWWidth ) { - if ( Request->width < minW ) { -/* Wenn Pappi uns etwas vorschlaegt, was im wahrsten Sinne des Wortes - * vorn und hinten nicht reicht, dann versuchen wir ihn entsprechend - * zu korrigieren. ("Versuchen" deshalb, weil er diesen Vorschlag auch - * voellig ignorieren kann.) - */ - result = XtGeometryAlmost; - Reply->width = minW; - Reply->request_mode |= CWWidth; - } - } -/* Die ganze Chose nun noch vertikal */ - if ( Request->request_mode & CWHeight ) { - if ( Request->height < minH ) { - result = XtGeometryAlmost; - Reply->height = minH; - Reply->request_mode |= CWHeight; - } - } - return result; -} /* QueryGeometry */ - -/* -------------------------------------------------------------------- - * Die Groesse des ComboBox-Widgets hat sich veraendert und deshalb - * mussen alle Kinder neu positioniert werden. - * Letzten Endes laeuft hier alles auf ein ordinaeres DoLayout() - * hinaus, um die Kinder umher zu schieben. - * Parameter: - * w Die bereits hinlaenglich bekannte Instanz dieses - * Widgets - */ -static void Resize(XmComboBoxWidget w) -{ - DoLayout(w); -} /* Resize */ - -/* -------------------------------------------------------------------- - * Dieses Widget hat sich in irgendeiner Form bewegt (und das nicht - * nur relativ zum Vater, sondern moeglicherweise auch der Vater - * selbst!) bzw. die Shell, in der sich irgendwo unsere Combo-Box - * befindet, hat soeben den Fokus verschusselt und kann ihn nicht - * mehr wiederfinden. Daneben kann es auch sein, dass die Shell - * ikonisiert wurde. (Welch' Vielfalt! Dieses ist hier halt eine - * multifunktionale Routine.) - * - * Parameter: - * w Die naechste Shell in Reichweite ueber unserer - * Combo-Box. - * cbw Diese Combo-Box. - * event ^ auf den Event, enthaelt genauerere Informationen - * (naja... sieht so aus, als ob Motif hier auch - * schon 'mal Schrott 'reinpackt...) - * ContDispatch Auf True setzen, damit dieser Event noch weiter- - * gereicht wird an all' die anderen, die auch noch - * mithoeren. - */ -static void ShellCallback(Widget w, XtPointer pClientData, - XEvent *event, Boolean *ContDispatch) -{ - XmComboBoxWidget cbw = (XmComboBoxWidget) pClientData; - - switch ( event->type ) { - case ConfigureNotify: - case CirculateNotify: - DoDropDownLayout((XmComboBoxWidget) cbw); - break; - case FocusOut: - LOG3("ShellCallback: FocusOut, mode: %i, detail: %i\n", - (int)event->xfocus.mode, (int)event->xfocus.detail); - if ( cbw->combobox.Persistent ) - cbw->combobox.IgnoreFocusOut = True; - else if ( (event->xfocus.mode == NotifyGrab) && - cbw->combobox.ListVisible ) - cbw->combobox.IgnoreFocusOut = True; - break; - case UnmapNotify: - ShowHideDropDownList((XmComboBoxWidget) cbw, - event, False); - break; - } - *ContDispatch = True; -} /* ShellCallback */ - -/* -------------------------------------------------------------------- - * Diese Routine sorgt dafuer, dass die Liste nicht irrtuemlich bei - * manchen Window Managern vom Bildschirm genommen wird, bloss weil - * diese der OverrideShell den Tastaturfocus schenken bzw. diesen - * dem Combo-Box-Widget wegnehmen, sobald der Mauszeiger in die Liste - * bewegt wird. - */ -static void OverrideShellCallback(Widget w, XtPointer pClientData, - XEvent *event, Boolean *ContDispatch) - -{ - XmComboBoxWidget cbw = (XmComboBoxWidget) pClientData; - switch ( event->type ) { - case EnterNotify: - LOG2("OverrideShellCallback: EnterNotify, PendingFO: %s\n", - cbw->combobox.PendingFocusOut ? "True" : "False"); - if ( cbw->combobox.PendingFocusOut ) - cbw->combobox.IgnoreFocusOut = True; - if ( cbw->combobox.TwmHandlingOn ) - cbw->combobox.PendingOverrideInOut = True; - break; - case LeaveNotify: - LOG("OverrideShellCallback: LeaveNotify\n"); - if ( cbw->combobox.TwmHandlingOn ) - cbw->combobox.PendingOverrideInOut = True; - break; - } -} /* OverrideShellCallback */ - -/* -------------------------------------------------------------------- - * Ha! Anscheinend kann man das Problem mit der einklappenden Liste, - * sobald man den Arrow-Button anklickt, doch loesen! Allerdings geht - * das auch nur von hinten durch die Brust in's Auge. Hier war die - * Reihenfolge der Events bislang das Problem: Klickt man den Arrow- - * Button an, so verliert das Eingabefeld den Focus, dann wird leider - * schon die WorkProc aktiviert und laesst die Liste verschwinden. - * Danach erst kommt der Arrow-Button-Callback an die Reihe. Um dieses - * Dilemma doch noch zu loesen, wird hier darauf gelauert, wann und - * welcher LeaveNotify kommt. Klickt der Benutzer den Pfeil an, so - * kommt hier noch rechtzeitig ein LeaveNotify vorbei, der aber durch - * einen Grab ausgeloest wurde. Und das ist eben nur beim Anklicken - * der Fall. Damit wissen wir, das der FocusOut getrost ignoriert - * werden darf. - * Puhhh -- ist das ein kompliziertes Chaos. - * Uebrigends...auch wenn manche Befehle zuerst ueberfluessig er- - * scheinen...sie sind erforderlich, damit die ComboBox auch mit unter- - * schiedlichen Window Managern zurechtkommt! - */ -static void ArrowCrossingCallback(Widget w, XtPointer pClientData, - XEvent *event, Boolean *ContDispatch) - -{ - XmComboBoxWidget cbw = (XmComboBoxWidget) pClientData; - switch ( event->type ) { - case LeaveNotify: - LOG2("ArrowCrossingCallback: LeaveNotify, mode: %i\n", - event->xcrossing.mode); - if ( event->xcrossing.mode == NotifyGrab ) - cbw->combobox.IgnoreFocusOut = True; - else - cbw->combobox.IgnoreFocusOut = False; - break; - } -} /* ArrowCrossingCallback */ - -/* -------------------------------------------------------------------- - * Alle Hilfeaufrufe innerhalb der Kinder gehen an das eigentliche - * Combo-Box-Widget weiter, so dass auch hier nach aussen hin die - * Kinder-Widgets nicht in Erscheinung treten. - */ -static void HelpCallback(Widget w, XtPointer cbw, XtPointer CallData) -{ - XtCallCallbacks((Widget) cbw, XmNhelpCallback, CallData); -} /* HelpCallback */ - -/* -------------------------------------------------------------------- - * Wenn der Benutzer im Eingabefeld osfActivate drueckt, dann dieses - * Ereignis offiziell bekanntgeben. - */ -static void ActivateCallback(Widget w, XtPointer cbw, XtPointer CallData) -{ - XtCallCallbacks((Widget) cbw, XmNactivateCallback, CallData); -} /* ActivateCallback */ - -/* -------------------------------------------------------------------- - * Ein Kind moechte sein Groesse veraendern und fragt deshalb hier bei - * uns an. - * Parameter: - * w Naja... - * *Request Vorschlag des Kindes - * Ergebnis: - * *Reply Unsere Antwort darauf - * XtGeometryNo, da es uns bislang grundsaetzlich nie passt, es sei - * denn, es ist das Label... Naja, jetzt darf auch schon einmal das - * Listenfeld quengeln (aber nur, wenn es staendig sichtbar ist, - * ansonsten wird es nicht beruecksichtigt!). - */ -static XtGeometryResult GeometryManager(Widget w, - XtWidgetGeometry *Request, - XtWidgetGeometry *Reply) -{ - XmComboBoxWidget cbw = (XmComboBoxWidget) XtParent(w); - XtGeometryResult Result = XtGeometryNo; - - /* - * Falls das Listenfeld statisch dargestellt wird, muessen wir seine - * Wuensche doch beruecksichtigen. Was fuer ein Aufwand... - */ - if ( (w == XtParent(cbw->combobox.ListCtrl)) && cbw->combobox.StaticList ) { - Dimension TotalWidth, TotalHeight, EditWidth, LabelWidth; - XtWidgetGeometry MyRequest, YourReply, EditGeom; - - XtQueryGeometry(cbw->combobox.EditCtrl, NULL, &EditGeom); - DefaultGeometry(cbw, &TotalWidth, &TotalHeight, - &EditWidth, &LabelWidth); - CheckDropDownOffset(cbw); - - if ( Request->request_mode && CWWidth ) - if ( (Dimension)(LabelWidth + cbw->combobox.DropDownOffset + - Request->width) > TotalWidth ) - TotalWidth = LabelWidth + cbw->combobox.DropDownOffset + - Request->width; - - if ( Request->request_mode && CWHeight ) - TotalHeight = EditGeom.height + Request->height; - /* - * Bastele nun eine Anfrage an Pappi zusammen und geh' ihm damit auf den - * Keks. Wenn er zustimmt, ist sofort alles gut, wir muessen dann nur - * noch das Layout aufpolieren, damit das Listenfeld die neue Groesse - * bekommt. Wenn Pappi nur halb zustimmt, akzeptieren wir das und fragen - * ihn damit noch einmal.... - */ - MyRequest.request_mode = CWWidth | CWHeight; - MyRequest.width = TotalWidth; - MyRequest.height = TotalHeight; - Result = XtMakeGeometryRequest((Widget) cbw, &MyRequest, &YourReply); - if ( Result == XtGeometryAlmost ) { - MyRequest.width = YourReply.width; - MyRequest.height = YourReply.height; - Result = XtMakeGeometryRequest((Widget) cbw, &MyRequest, &YourReply); - } - if ( Result == XtGeometryYes ) - DoLayout(cbw); - } else - /* - * Ansonsten darf nur noch das Schriftfeld Ansprueche anmelden. - */ - if ( w != cbw->combobox.LabelCtrl ) - return XtGeometryNo; /* Was ICH hier vorgegeben habe, gilt! */ - else if ( cbw->combobox.ShowLabel ) { /* Naja, 'mal schauen! */ - Dimension TotalWidth, TotalHeight, EditWidth, LabelWidth; - XtWidgetGeometry MyRequest; - - if ( Request->request_mode & CWWidth ) { - DefaultGeometry(cbw, &TotalWidth, &TotalHeight, - &EditWidth, &LabelWidth); - TotalWidth = TotalWidth - LabelWidth + - Request->width; - - MyRequest.request_mode = CWWidth; - MyRequest.width = TotalWidth; - Result = XtMakeGeometryRequest((Widget) cbw, &MyRequest, NULL); - - if ( Result == XtGeometryYes ) - DoLayout(cbw); - } - } - return Result; -} /* GeometryManager */ - -/* -------------------------------------------------------------------- - * Hier werden auf Wunsch diejenigen Farben, die bei der Combo-Box neu - * gesetzt wurden, an alle Kinder weitergegeben. - */ -#define BOTTOMSHADOWCOLOR 0x0001 -#define TOPSHADOWCOLOR 0x0002 -#define FOREGROUND 0x0004 -#define BACKGROUND 0x0008 - -static struct { String Resource; int Flag; } - ColorResources[] = { - { XmNbottomShadowColor, BOTTOMSHADOWCOLOR }, - { XmNtopShadowColor, TOPSHADOWCOLOR }, - { XmNforeground, FOREGROUND }, - { XmNbackground, BACKGROUND } - }; - -static UpdateColors(XmComboBoxWidget w, int flags) -{ - Pixel Color; - int i, size = XtNumber(ColorResources); - Widget ScrolledWin, ScrollBar; - - ScrolledWin = XtParent(w->combobox.ListCtrl); - XtVaGetValues(ScrolledWin, XmNverticalScrollBar, &ScrollBar, NULL); - for ( i=0; icombobox.ListCtrl, - ColorResources[i].Resource, Color, NULL); - XtVaSetValues(ScrolledWin, - ColorResources[i].Resource, Color, NULL); - XtVaSetValues(ScrollBar, - ColorResources[i].Resource, Color, NULL); - XtVaSetValues(w->combobox.EditCtrl, - ColorResources[i].Resource, Color, NULL); - XtVaSetValues(w->combobox.LabelCtrl, - ColorResources[i].Resource, Color, NULL); - XtVaSetValues(w->combobox.ArrowCtrl, - ColorResources[i].Resource, Color, NULL); - if ( ColorResources[i].Flag & BACKGROUND ) - XtVaSetValues(ScrollBar, XmNtroughColor, Color, NULL); - } - - return 1; -} /* UpdateColors */ - -/* -------------------------------------------------------------------- - * Liste aller vorgespiegelten Resourcen, die automatisch verarbeitet - * werden koennen, ohne weiter darueber nachdenken zu muessen... - */ -typedef enum { EDITCTRL, LISTCTRL, LABELCTRL } CHILDCTRL; -typedef enum { RO, RW, RWS, RWL, RWI, RWIGNORE } aUniqueName; -typedef struct { - String rsc; - CHILDCTRL ctrl; -/* enum { RO, RW, RWS, RWL, RWI, RWIGNORE } dir; */ - aUniqueName dir; - /* nur lesen, lesen&schreiben, lesen&schreiben spezial, - lesen&schreiben label, lesen&schreiben items */ -} MIRROR; - -/* Alle mit !!! gekennzeichneten Eintraege werden auf die richtigen - * Namen des entsprechenden Widgets umgesetzt. - */ -static MIRROR MirroredResources[] = { - { XmNitems, LISTCTRL, RWI }, /* Urgs! */ - { XmNitemCount, LISTCTRL, RWIGNORE }, /* dto. */ - { XmNlistMarginHeight, LISTCTRL, RW }, - { XmNlistMarginWidth, LISTCTRL, RW }, - { XmNlistSpacing, LISTCTRL, RW }, - { XmNstringDirection, LISTCTRL, RO }, /* Naja? */ - { XmNtopItemPosition, LISTCTRL, RO }, - - { XmNblinkRate, EDITCTRL, RW }, - { XmNcolumns, EDITCTRL, RW }, - { XmNcursorPosition, EDITCTRL, RW }, - { XmNcursorPositionVisible, EDITCTRL, RW }, - { XmNmarginHeight, EDITCTRL, RW }, - { XmNmarginWidth, EDITCTRL, RW }, - { XmNmaxLength, EDITCTRL, RW }, - { XmNselectThreshold, EDITCTRL, RW }, - { XmNvalue, EDITCTRL, RWS }, - - { XmNalignment, LABELCTRL, RW }, - { XmNmnemonic, LABELCTRL, RW }, - { XmNmnemonicCharSet, LABELCTRL, RW }, - { XmNlabelPixmap, LABELCTRL, RW }, - { XmNlabelInsensitivePixmap, LABELCTRL, RW }, - { XmNlabelString, LABELCTRL, RW }, - { XmNlabelType, LABELCTRL, RW }, - { XmNlabelMarginBottom, LABELCTRL, RWL }, /* !!! */ - { XmNlabelMarginHeight, LABELCTRL, RWL }, /* !!! */ - { XmNlabelMarginLeft, LABELCTRL, RWL }, /* !!! */ - { XmNlabelMarginRight, LABELCTRL, RWL }, /* !!! */ - { XmNlabelMarginTop, LABELCTRL, RWL }, /* !!! */ - { XmNlabelMarginWidth, LABELCTRL, RWL }, /* !!! */ - { XmNlabelFontList, LABELCTRL, RWL }, /* !!! */ -}; - -typedef struct { - char *from, *to; -} TRANSFORMATION; -static TRANSFORMATION Transformations[] = { - { XmNlabelMarginBottom, XmNmarginBottom }, - { XmNlabelMarginHeight, XmNmarginHeight }, - { XmNlabelMarginLeft, XmNmarginLeft }, - { XmNlabelMarginRight, XmNmarginRight }, - { XmNlabelMarginTop, XmNmarginTop }, - { XmNlabelMarginWidth, XmNmarginWidth }, - { XmNlabelFontList, XmNfontList }, -}; - -/* -------------------------------------------------------------------- - * Sobald irgendeine Resource veraendert wird, erfolgt der Aufruf - * hierin als Benachrichtigung, einmal nach dem rechten zu sehen. - * Parameter: - * current Kopie der Widget-Instanz, bevor irgendwelche - * Resourcen veraendert oder set_values()-Methoden - * aufgerufen wurden. - * req Kopie der Widget-Instanz, aber bereits mit den - * durch XtSetValues veraenderten Werten - * new aktuellster Zustand der Widget-Instanz mit - * veraenderten Werten (entweder durch XtSetValues - * oder set_values()-Methoden der Superklasse) - * args Argumentenliste beim Aufruf von XtSetValues() - * NumArgs Anzahl der Argumente in der Liste - * Ergebnis: - * True, falls Widget neu gezeichnet werden soll. - */ -static Boolean SetValues(XmComboBoxWidget current, XmComboBoxWidget req, - XmComboBoxWidget newW, - ArgList args, Cardinal *NumArgs) -{ - Boolean Update = False; - int i, j, MirrorSize = XtNumber(MirroredResources); - int k, TransformationSize = XtNumber(Transformations); - Arg arg; - int Flags; - -/* - * Alle Resourcen, die nicht mehr nach dem Erstellen der Widget-Instanz - * veraendert werden koennen. - */ - newW->combobox.Editable = current->combobox.Editable; - newW->combobox.ListCtrl = current->combobox.ListCtrl; - newW->combobox.EditCtrl = current->combobox.EditCtrl; - newW->combobox.LabelCtrl = current->combobox.LabelCtrl; - newW->combobox.SelectionPolicy = current->combobox.SelectionPolicy; - newW->combobox.ListSizePolicy = current->combobox.ListSizePolicy; - newW->combobox.StaticList = current->combobox.StaticList; - -/* - * Kontrolliere nun alle Resourcen, die sich veraendert haben koennten - * und gebe die neuen Einstellungen entsprechend weiter... - * - * Hat sich der Sensitive-Zustand veraendert? Dann muessen wir hier dafuer - * sorgen, dass alle Kinder ebenfalls den neuen Zustand annehmen. - */ - if ( current->core.sensitive != newW->core.sensitive ) { - XtSetSensitive(newW->combobox.ListCtrl, newW->core.sensitive); - XtSetSensitive(newW->combobox.EditCtrl, newW->core.sensitive); - XtSetSensitive(newW->combobox.ArrowCtrl, newW->core.sensitive); - XtSetSensitive(newW->combobox.ListCtrl, newW->core.sensitive); - if ( !newW->core.sensitive ) - ShowHideDropDownList(newW, NULL, False); - } -/* - * Die ScrollBarPolicy kann nur dann geaendert werden, wenn das Listenfeld - * dauerhaft dargestellt wird. - */ - if ( newW->combobox.ScrollBarDisplayPolicy != - current->combobox.ScrollBarDisplayPolicy ) - if ( newW->combobox.StaticList ) - XtVaSetValues(newW->combobox.ListCtrl, - XmNscrollBarDisplayPolicy, newW->combobox.ScrollBarDisplayPolicy, - NULL); - else - XtWarning( -"XmComboBox: ScrollBarDisplayPolicy can not be changed when StaticList == False." - ); -/* Anzahl der in der Liste gleichzeitig darstellbaren Eintraege */ - if ( current->combobox.VisibleItemCount != - newW->combobox.VisibleItemCount ) { - XtVaSetValues(newW->combobox.ListCtrl, - XmNvisibleItemCount, newW->combobox.VisibleItemCount, - NULL); - Update = True; - } - if ( current->combobox.AutomaticSelection != - newW->combobox.AutomaticSelection ) - XtVaSetValues(newW->combobox.ListCtrl, - XmNautomaticSelection, newW->combobox.AutomaticSelection, - NULL); - -/* - * benutzter Font: hier erhalten Liste und Eingabefeld jeweils die - * gleiche Fontliste, wohingegen das Label getrennt behandelt wird. - * Das macht auch Sinn, denn Liste und Eingabefeld beinhalten gleich- - * artigen Text, so dass hier auch tunlichst der gleiche Font zu - * benutzen ist. - */ - if ( current->combobox.Font != newW->combobox.Font ) { - XtVaSetValues(newW->combobox.ListCtrl, - XmNfontList, newW->combobox.Font, NULL); - XtVaSetValues(newW->combobox.EditCtrl, - XmNfontList, newW->combobox.Font, NULL); - Update = True; - } - - Flags = 0; - if ( newW->manager.top_shadow_color != - current->manager.top_shadow_color ) Flags |= TOPSHADOWCOLOR; - if ( newW->manager.bottom_shadow_color != - current->manager.bottom_shadow_color ) Flags |= BOTTOMSHADOWCOLOR; - if ( newW->manager.foreground != - current->manager.foreground ) Flags |= FOREGROUND; - if ( newW->core.background_pixel != - current->core.background_pixel ) Flags |= BACKGROUND; - if ( Flags ) { UpdateColors(newW, Flags); Update = True; } - - - if ( newW->combobox.ArrowCursor != current->combobox.ArrowCursor ) { - if ( newW->combobox.ListVisible ) - XDefineCursor(XtDisplay(newW->combobox.PopupShell), - XtWindow(newW->combobox.PopupShell), - newW->combobox.ArrowCursor); - } -/* Hier werden die vorgespiegelten Resourcen verwaltet, die in - * Wirklichkeit zu einem unserer Kinder gehoeren. - */ - for ( i = 0; i < *NumArgs; i++ ) { -/* Ist es eine vorgespiegelte Resource ? Wenn ja, dann leite die - * Anfrage an das entsprechende Kind-Widget weiter. - */ - for ( j = 0; j < MirrorSize; j++ ) { - if ( (strcmp(args[i].name, MirroredResources[j].rsc) == 0) ) { - switch ( MirroredResources[j].dir ) { - case RW: /* schreibender Zugriff erlaubt */ - XtSetValues(MirroredResources[j].ctrl == LISTCTRL ? - newW->combobox.ListCtrl : - (MirroredResources[j].ctrl == EDITCTRL ? - newW->combobox.EditCtrl : - newW->combobox.LabelCtrl), - &(args[i]), 1); - break; - case RWS: /* schreibender Zugriff unter Kontrolle */ - if ( strcmp(args[i].name, XmNvalue) == 0 ) { - if ( newW->combobox.Editable ) - XtSetValues(newW->combobox.EditCtrl, - &(args[i]), 1); - } - break; - case RWL: /* Transformation in andere Resource beim - Label-Widget */ - for ( k = 0; k < TransformationSize; k++ ) - if ( strcmp(args[i].name, Transformations[k].from) == 0 ) { - arg.value = args[i].value; - arg.name = Transformations[k].to; - XtSetValues(newW->combobox.LabelCtrl, - &arg, 1); - break; - } - break; - case RWIGNORE: /* Zugriff auf XmNitemCount */ - /* Wird von XmNitems erledigt! */ - break; - case RWI: /* Zugriff auf XmNitems */ - for ( k = 0; k < *NumArgs; k++ ) - if ( strcmp(args[k].name, XmNitemCount) == 0 ) { - Arg MyArgs[2]; - - MyArgs[0].name = XmNitems; - MyArgs[0].value = args[i].value; - MyArgs[1].name = XmNitemCount; - MyArgs[1].value = args[k].value; - XtSetValues(newW->combobox.ListCtrl, - args, 2); - /*XtVaSetValues(newW->combobox.ListCtrl, - XmNitems, args[i].value, - XmNitemCount, args[k].value, - NULL);*/ - break; - } - break; - case RO: - break; - } /* case write mode */ - goto ScanForNextResource; - } /* if entry found */ - } /* for every mirrored entry */ - ScanForNextResource: ; - } /* for every Arg */ - - if ( (newW->combobox.SquareArrow != current->combobox.SquareArrow) || - (newW->combobox.ArrowSpacingOn != current->combobox.ArrowSpacingOn) ) { - Update = False; - DoLayout(newW); - } - - return Update; -} /* SetValues */ - -/* -------------------------------------------------------------------- - * Werden irgendwelche Resourcen abgefragt, so muessen wir hier erst - * noch vor der Rueckkehr zum Frager klaeren, ob davon eine Resource - * betroffen ist, die nur vorgespiegelt ist, da sie eigentlich einem - * der Widgets gehoert, die von uns hier verwaltet werden, um daraus - * eine ordentliche Combo-Box zu machen. - * Parameter: - * w Widget-Instanz - * args Abgefragte Resourcen - * NumArgs Anzahl der abgefragten Resourcen - */ -static void GetValuesAlmost(XmComboBoxWidget w, ArgList args, - Cardinal *NumArgs) -{ - int i, j, MirrorSize = XtNumber(MirroredResources); - int k, TransformationSize = XtNumber(Transformations); - Arg arg; - - for ( i = 0; i < *NumArgs; i++ ) { -/* Ist es eine vorgespiegelte Resource ? Wenn ja, dann leite die - * Anfrage an das entsprechende Kind-Widget weiter. - */ - for ( j = 0; j < MirrorSize; j++ ) { - if ( strcmp(args[i].name, MirroredResources[j].rsc) == 0 ) { - switch ( MirroredResources[j].dir ) { - case RO: - case RW: - case RWS: - case RWI: - XtGetValues(MirroredResources[j].ctrl == LISTCTRL ? - w->combobox.ListCtrl : - MirroredResources[j].ctrl == EDITCTRL ? - w->combobox.EditCtrl : - w->combobox.LabelCtrl, - &(args[i]), 1); - break; - case RWL: /* Umzuleitende Resource bei Label-Widget */ - for ( k = 0; k < TransformationSize; k++ ) - if ( strcmp(args[i].name, Transformations[k].from) == 0 ) { - arg.value = args[i].value; - arg.name = Transformations[k].to; - XtGetValues(w->combobox.LabelCtrl, - (ArgList) &arg, 1); - break; - } - break; - } /* case read mode */ - } /* if entry found */ - } /* for every mirrored entry */ - } /* for every Arg */ -} /* GetValuesAlmost */ - -/* -------------------------------------------------------------------- - * Zeige beziehungsweise verstecke die Drop-Down-Liste der Combo-Box. - * Falls die Liste bereits den entsprechenden Zustand hat, geht's - * sofort zum Aufrufer zurueck. - * Parameter: - * w Her Royal Majesty ComboBox - * Show True, falls anzuzeigen, andernfalls False - */ -static void ShowHideDropDownList(XmComboBoxWidget w, XEvent *event, - Boolean Show) -{ - XmComboBoxDropDownCallbackStruct info; - - if ( w->combobox.StaticList || - (Show == w->combobox.ListVisible) ) return; - w->combobox.ListVisible = Show; - if ( Show ) { /* Klapp' die Liste aus! */ - DoDropDownLayout(w); - info.reason = XmCR_SHOW_LIST; - info.event = event; - XtCallCallbacks((Widget) w, XmNdropDownCallback, - (XtPointer) &info); - XDefineCursor(XtDisplay(w->combobox.PopupShell), - XtWindow(w->combobox.PopupShell), - w->combobox.ArrowCursor); - XtPopup(w->combobox.PopupShell, XtGrabNone); - XtVaSetValues(w->combobox.ArrowCtrl, - XmNarrowDirection, XmARROW_UP, NULL); - } else { /* Klapp' die Liste wieder ein... */ - XtPopdown(w->combobox.PopupShell); - XtVaSetValues(w->combobox.ArrowCtrl, - XmNarrowDirection, XmARROW_DOWN, NULL); - info.reason = XmCR_HIDE_LIST; - info.event = event; - XtCallCallbacks((Widget) w, XmNdropDownCallback, - (XtPointer) &info); - } -} /* ShowHideDropDownList */ - -/* -------------------------------------------------------------------- - * Hier laeuft die Nachricht auf, dass der Pfeil ausgeloest wurde... - * (Daraufhin sollte die Liste aus- oder eingeklappt werden) - * ...oder dass der Benutzer da draussen auf der anderen Seite der - * Mattscheibe den Pfeil bereits anklickte ohne aber bereits losge- - * gelassen zu haben. Bereits hier bekommt das Eingabefeld den Fokus - * vor den Latz geknallt, denn sonst kann es passieren, dass zwar die - * Liste ausgeklappt ist, aber das Eingabefeld noch keinen Tastatur- - * fokus erhalten hat. Das sollte aber nicht so sein, denn es ist dann - * keine konsequente Tastaturbedienung. - */ -static void ArrowCallback(Widget w, XtPointer pClientData, - XmAnyCallbackStruct *info) -{ - XmComboBoxWidget cbw = (XmComboBoxWidget) XtParent(w); - - switch ( info->reason ) { - case XmCR_ARM: - LOG("ArrowCallback: XmCR_ARM\n"); - XmProcessTraversal(cbw->combobox.EditCtrl, XmTRAVERSE_CURRENT); - if ( cbw->combobox.TwmHandlingOn && cbw->combobox.ListVisible ) - cbw->combobox.IgnoreFocusOut = True; - break; - case XmCR_ACTIVATE: - XmProcessTraversal(cbw->combobox.EditCtrl, XmTRAVERSE_CURRENT); - ShowHideDropDownList(cbw, info->event, - (Boolean)(!cbw->combobox.ListVisible)); - break; - } -} /* ArrowCallback */ - -/* -------------------------------------------------------------------- - * Diese Benachrichtigung moechte uns nur mitteilen, dass wir soeben - * den Fokus verloren haben (Ohhhh!) Sollte allerdings der Fokus nur - * aus dem Grunde perdue sein, dass der Anwender den Mauszeiger ausser- - * halb des Applikationsfensters plaziert hat, so koennen wir diese - * Nachricht uebergehen. Erst wenn der Fokus an ein anderes Widget in - * unserer Applikation verlorenging, muessen wir auf diese Information - * reagieren. - * Und jetzt zu noch einem total beknackten Problem - alles nur wegen - * Motif und den diversen Window-Managern (bspw. olwm)... Leider kommt - * beim FocusOut kein richtiger Hinweis auf den tatsaechlichen Event, - * der dieses Callback ausloeste -- warum liefert denn dann Motif ueber- - * haupt noch den Event???? Und ueberhauupt, die Geschichte mit dem - * Fokus ist schon der reinste Horror. Aktueller Ausweg: wenn wir die - * Benachrichtigung ueber den Focusabgang bekommen, registrieren wir - * eine Work-Prozedur, die, sobald der Rechner wieder Luft hat, auf- - * gerufen wird. Sie kann dann nachschauen, ob nicht inzwischen die - * OverrideShell den Focus bekahm. Wenn ja, koennen wir den FocusOut - * uebergehen, ansonsten muessen wir ihn beruecksichtigen. - * -- Ist das eine ^@#$^*(#$^&! (Meine gute Erziehung hindert mich - * daran, diesen Begriff hier zu nennen.) - */ -static Boolean DelayedFocusOutWorkProc(XtPointer pClientData) -{ - XmComboBoxWidget cbw = (XmComboBoxWidget) pClientData; - LOG2("DelayedFocusOutWorkProc: IgnoreFocusOut: %s\n", - cbw->combobox.IgnoreFocusOut ? "True" : "False"); - if ( !cbw->combobox.IgnoreFocusOut ) - ShowHideDropDownList(cbw, &(cbw->combobox.xevent), False); - cbw->combobox.IgnoreFocusOut = False; - cbw->combobox.PendingFocusOut = False; - return True; /* diese Routine wird nicht mehr benoetigt. */ -} /* DelayedFocusOutWorkProc */ - -static void EditFocusCallback(Widget w, XtPointer pClientData, - XmAnyCallbackStruct *info) -{ - XmComboBoxWidget cbw = (XmComboBoxWidget) XtParent(w); - - if ( cbw->combobox.StaticList ) return; - - if ( info->reason == XmCR_LOSING_FOCUS ) { - LOG2("EditFocusCallback: PendingFocusOut: %s, ", - cbw->combobox.PendingFocusOut ? "True" : "False"); - LOG3("mode: %i, detail: %i, ", (int)info->event->xcrossing.mode, - (int)info->event->xcrossing.detail); - LOG2("PendingOverrideInOut: %s\n", - cbw->combobox.PendingOverrideInOut ? "True" : "False"); - if ( !cbw->combobox.PendingFocusOut && - !cbw->combobox.PendingOverrideInOut ) { - /* Normalerweise duerfen aber keine NULL-Events hier - * vorbeikommen...aber man weiss ja nie so genau und - * sicher ist sicher. Defensiv programmieren! - */ - if ( info->event ) - cbw->combobox.xevent = *info->event; - cbw->combobox.WorkProcID = XtAppAddWorkProc( - XtWidgetToApplicationContext((Widget) cbw), - (XtWorkProc) DelayedFocusOutWorkProc, - (XtPointer) cbw); - cbw->combobox.PendingFocusOut = True; - } - cbw->combobox.PendingOverrideInOut = False; - } -} /* EditFocusCallback */ - -/* -------------------------------------------------------------------- - * Hier wird der angegebene Eintrag in der Listbox der Combo-Box - * markiert und zudem in den sichtbaren Bereich gerollt, sollte er - * sich ausserhalb des dargestellten Bereichs der Liste befinden. - * Parameter: - * w Die Combo-Box (ueblicher Parameter) - * Index Index des neu zu markierenden Eintrages. - * Notify Schickt Mitteilung via Callback - * Ergebnis: - * Index des markierten Eintrages oder 0, falls die Listbox leer - * war und deshalb auch kein Eintrag markiert werden konnte. - */ -static int SetSelectionPos(XmComboBoxWidget w, int Index, Boolean Notify) -{ - Widget ListBox = w->combobox.ListCtrl; - int ItemCount; /* Anzahl Eintraege in Listbox */ - int TopItem, VisibleItems; - - XtVaGetValues(ListBox, XmNitemCount, &ItemCount, - XmNtopItemPosition, &TopItem, - XmNvisibleItemCount, &VisibleItems, - NULL); - if ( Index < 1 ) Index = 1; - if ( Index > ItemCount ) Index = ItemCount; - if ( Index != 0 && ItemCount != 0 ) { - if ( Index < TopItem ) - XmListSetPos(ListBox, Index); - if ( Index >= TopItem + VisibleItems ) - XmListSetBottomPos(ListBox, Index); - XmListSelectPos(ListBox, Index, Notify); - return Index; - } else - return 0; -} /* SetSelectionPos */ - -/* -------------------------------------------------------------------- - * Diese Routine kuemmert sich darum, denjenigen Eintrag aus der List- - * box mit der angegebenen Nummer herauszufischen und an die Eingabe- - * zeile zu uebergeben. Dabei wird der Index auf den Eintrag auto- - * matisch auf den zulaessigen Bereich begrenzt. Zugleich wird auch - * noch der angegebene Eintrag in der Listbox markiert. - */ -static void TransferToEditCtrl(XmComboBoxWidget w, int SelectionIndex, - Boolean MayWipeOut) -{ - Widget ListBox = w->combobox.ListCtrl; - XmStringTable Items; - char *pItemText; - - XtVaGetValues(ListBox, XmNitems, &Items, NULL); - - if ( MayWipeOut && - (SelectionIndex == w->combobox.LastSelection) && - (w->combobox.SelectionPolicy == XmSINGLE_SELECT) ) { - SelectionIndex = 0; - } - - if ( (SelectionIndex == 0) && - (w->combobox.SelectionPolicy == XmSINGLE_SELECT) ) { - XmListDeselectAllItems(w->combobox.ListCtrl); - w->combobox.PassVerification = True; - XmTextFieldSetString(w->combobox.EditCtrl, ""); - } else { - SelectionIndex = SetSelectionPos(w, SelectionIndex, False); - if ( SelectionIndex > 0 ) { - XmStringGetLtoR(Items[SelectionIndex-1], - XmSTRING_DEFAULT_CHARSET, &pItemText); - w->combobox.PassVerification = True; - XmTextFieldSetString(w->combobox.EditCtrl, pItemText); - XtFree(pItemText); - } - } - w->combobox.LastSelection = SelectionIndex; -} /* TransferToEditCtrl */ - -/* -------------------------------------------------------------------- - * Alle registrierten Callbacks bei Anwahl eines neuen Eintrages in - * der Listbox aktivieren. - */ -static void CallSelectionCBL(XmComboBoxWidget w, XEvent *Event) -{ - int index; - - index = XmComboBoxGetSelectedPos((Widget) w); - /* - * Wenn momentan KEIN Eintrag selektiert ist, dann rufe den neuen - * XmNunselectionCallback auf! - */ - if ( index == 0 ) { - XmComboBoxUnselectionCallbackStruct info; - - info.reason = XmCR_UNSELECT; - info.event = Event; - XtCallCallbacks((Widget) w, XmNunselectionCallback, (XtPointer) &info); - } else { - /* - * Ansonsten den ueblichen SelectionCallback! - */ - XmComboBoxSelectionCallbackStruct info; - XmStringTable Items; - - info.reason = w->combobox.SelectionPolicy == XmSINGLE_SELECT ? - XmCR_SINGLE_SELECT : XmCR_BROWSE_SELECT; - info.event = Event; - info.index = index; - XtVaGetValues(w->combobox.ListCtrl, XmNitems, &Items, NULL); - info.value = Items[info.index-1]; - XtCallCallbacks((Widget) w, XmNselectionCallback, (XtPointer) &info); - } -} /* CallSelectionCBL */ - -/* -------------------------------------------------------------------- - * Hier laeuft das Tastatur-Management fuer die ComboBox zusammen. - * ACHTUNG: Der 'w'-Parameter wird nur benoetigt, um das eigentliche - * ComboBox-Widget zu ermitteln. Er muss daher die ID eines direkten - * Kinds der ComboBox enthalten! - */ -static void CBoxManager(Widget w, XEvent *Event, String *params, - Cardinal *num_params) -{ - XmComboBoxWidget cbw; - Widget ListBox; - int *SelectionList; - int SelectionCount; - int SelectionIndex; /* Wer denn nun markiert wird... */ - int ItemCount; /* Anzahl Eintraege in Listbox */ - int VisibleItems; /* Hoehe der Liste in Eintraegen */ - char opt; - - /* - * Nur wenn eine der Translationen page-up und page-down direkt im - * Listenfeld ausgeloest wurden, wird auch als "w" die Liste ueber- - * geben. Bei allen anderen Faellen ist dieses zumeist das TextField. - */ - if ( XtClass(w) == xmListWidgetClass ) - cbw = (XmComboBoxWidget) XtParent(XtParent(w)); - else - cbw = (XmComboBoxWidget) XtParent(w); - ListBox = cbw->combobox.ListCtrl; - - switch ( *(params[0]) ) { -/* -------------------------------------------------------------------- - * Klappe die Liste auf Wunsch des Benutzers aus oder wieder ein. - */ - case 's': /* show-hide-list */ - ShowHideDropDownList(cbw, Event, - (Boolean)(!cbw->combobox.ListVisible)); - break; - case 'h': /* hide-list */ - ShowHideDropDownList(cbw, Event, False); - break; -/* -------------------------------------------------------------------- - * Hier werden die Bewegungen in der Listbox behandelt. - */ - case 'u': /* up */ - case 'd': /* down */ - case 't': /* top */ - case 'b': /* bottom */ - case 'p': /* page-up/page-down */ - opt = *(params[0]); - XtVaGetValues(ListBox, XmNitemCount, &ItemCount, - XmNvisibleItemCount, &VisibleItems, NULL); - if ( XmListGetSelectedPos(ListBox, - &SelectionList, &SelectionCount) ) { - SelectionIndex = *SelectionList; - XtFree((char *)SelectionList); - switch ( opt ) { - case 'u': SelectionIndex--; break; - case 'd': SelectionIndex++; break; - case 't': SelectionIndex = 1; break; - case 'b': SelectionIndex = ItemCount; break; - case 'p': if ( *(params[0]+5) == 'u' ) - SelectionIndex -= VisibleItems; - else - SelectionIndex += VisibleItems; - break; - } - } else { /* momentan noch kein Eintrag in der Liste ausgewaehlt */ - if ( opt == 'b' ) SelectionIndex = ItemCount; - else SelectionIndex = 1; /* nun ersten Eintrag nehmen */ - } - TransferToEditCtrl(cbw, SelectionIndex, False); - CallSelectionCBL(cbw, Event); - break; -/* -------------------------------------------------------------------- - * Der Benutzer hat die Eingabetaste gedrueckt oder einen Eintrag in - * der Listbox angeklickt. - */ - case 'a': /* Return = activate */ - case 'S': /* Selection */ - if ( !cbw->combobox.StaticList && !cbw->combobox.ListVisible ) break; - XtVaGetValues(ListBox, XmNitemCount, &ItemCount, NULL); - if ( ItemCount == 0 ) break; - if ( XmListGetSelectedPos(ListBox, - &SelectionList, &SelectionCount) ) { - SelectionIndex = *SelectionList; - XtFree((char *)SelectionList); - } else { - if ( cbw->combobox.SelectionPolicy != XmSINGLE_SELECT ) - SelectionIndex = 1; - else - SelectionIndex = 0; - } - - TransferToEditCtrl(cbw, SelectionIndex, - *(params[0]) == 'S'); - CallSelectionCBL(cbw, Event); - ShowHideDropDownList(cbw, Event, (Boolean) - (*(params[0]) == 'S' ? True : False)); - break; -/* -------------------------------------------------------------------- - * Der Benutzer hat die ESC-Taste gedrueckt. Ist die Liste zu diesem - * Zeitpunkt noch ausgeklappt, so wird sie einfach nur eingeklappt und - * weiter passiert nichts. Ist die Liste jedoch eingeklappt, so wird - * das ESC an die normale Action-Routine des Eingabefeldes weiter- - * gegeben, damit damit bspw. Dialog u.a. abgebrochen werden koennen. - */ - case 'c': /* Cancel */ - if ( cbw->combobox.ListVisible ) - ShowHideDropDownList(cbw, Event, False); - else - XtCallActionProc(cbw->combobox.EditCtrl, - "process-cancel", Event, NULL, 0); - break; -/* -------------------------------------------------------------------- - * Wenn es erlaubt ist, dass auch einmal kein Eintrag in einer ComboBox - * mit nicht editierbarem Eingabefeld ausgewaehlt ist, dann darf der - * Anwender mittels osfDelete den aktuellen Eintrag deselektieren. - */ - case 'w': /* wipe */ - if ( cbw->combobox.SelectionPolicy == XmSINGLE_SELECT ) { - TransferToEditCtrl(cbw, 0, True); - CallSelectionCBL(cbw, Event); - } - break; -/* -------------------------------------------------------------------- - * Dummy-Operation - */ - case 'n': /* no-operation */ - break; - } -} /* CBoxManager */ - -/* -------------------------------------------------------------------- - * Der Benutzer hat einen Eintrag in der Listbox angeklickt. Der Ein- - * fachkeit halber wird einfach nur ein Druecken der Eingabetaste - * simuliert. - */ -static void ListSelectionCallback(Widget w, XtPointer pClientData, - XmAnyCallbackStruct *info) -{ - String paramsMouse[1] = { "a" }, paramsKeyboard[1] = { "S" }; - Cardinal NumParams = 1; - XmComboBoxWidget cbw = (XmComboBoxWidget) pClientData; -/* - * Wurde der Event durch die Tastatur oder einen Mausklick - * ausgeloest? Wenn es ein Mausklick auf das Listenfeld war und es - * sich um ein staendig angezeigtes Listenfeld einer nicht editierbaren - * ComboBox handelt, dann gib' dem Eingabefeld den Tastaturfokus. - */ - if ( info->event == NULL ) - CBoxManager(cbw->combobox.EditCtrl, info->event, - paramsKeyboard, &NumParams); - else { - CBoxManager(cbw->combobox.EditCtrl, info->event, - paramsMouse, &NumParams); - if ( !cbw->combobox.StaticList || - (cbw->combobox.StaticList && !cbw->combobox.Editable) ) - XmProcessTraversal(cbw->combobox.EditCtrl, - XmTRAVERSE_CURRENT); - } -} /* ListSelectionCallback */ - -/* -------------------------------------------------------------------- - * Nach einem Doppelklick innerhalb des Listenfelds wird diese Routine - * aufgerufen. Zunaechst einmal wird ganz normal wie bei einem ein- - * fachen Anklicken vorgegangen, danach aber noch der ein spezieller - * Callback aufgerufen. - */ -static void ListDefaultActionCallback(Widget w, XtPointer pClientData, - XmAnyCallbackStruct *OldInfo) -{ - XmComboBoxWidget cbw = (XmComboBoxWidget) pClientData; - XmComboBoxDefaultActionCallbackStruct info; - XmStringTable Items; - - ListSelectionCallback(w, pClientData, OldInfo); - info.reason = XmCR_DEFAULT_ACTION; - info.event = OldInfo->event; - info.index = XmComboBoxGetSelectedPos((Widget) cbw); - XtVaGetValues(cbw->combobox.ListCtrl, XmNitems, &Items, NULL); - info.value = Items[info.index-1]; - XtCallCallbacks((Widget) cbw, XmNdefaultActionCallback, (XtPointer) &info); -} /* ListDefaultActionCallback */ - - -/* -------------------------------------------------------------------- - * Ohweh!! Diese Routine wurde erforderlich, um XmNautomaticSelection - * zu unterstuetzen. Denn wenn der Benutzer in der Liste herumsucht und - * automaticSelection 'True' ist, kommt kein Callback-Aufruf mehr, wenn - * die Maustaste losgelassen wird. Und damit wuessten wir sonst nicht, - * wann die Liste einzuklappen ist! Irgendwie wird das alles mit der - * Zeit immer konfuser und aufwendiger. Wenn das Chaos gequantelt - * sein sollte, dann muss das Chaos-Quant (sog. 'Chaotonen') aber jede - * Menge Chaos transportieren!!! - */ -static void Button1UpInList(Widget w, XtPointer pClientData, - XEvent *Event, Boolean *ContDispatch) -{ - XmComboBoxWidget cbw = (XmComboBoxWidget) pClientData; - - if ( Event->xbutton.button == Button1 ) { - if ( cbw->combobox.AutomaticSelection ) - ShowHideDropDownList(cbw, Event, False); - } -} /* Button1UpInList */ - -/* -------------------------------------------------------------------- - * Sobald sich irgendetwas im Eingabefeld veraenderte, kommt das - * TextField-Widget zuerst zu uns gelaufen, um sich unser Okay zu - * holen. Bei einer nicht editierbaren Combo-Box wird hierueber die - * Schnellsuche realisiert. - */ -static void EditVerifyCallback(Widget w, XtPointer pClientData, - XmTextVerifyCallbackStruct *info) -{ - XmComboBoxWidget cbw = (XmComboBoxWidget) XtParent(w); - -/* - * Sollte gerade dem Eingabefeld Text aus der Listbox einverleibt - * werden, so duerfen wir hier darueber natuerlich nicht meckern, - * sondern unser <> dazu geben. (D.h. in diesem Fall haben wir - * kein Recht, zu intervenieren.) - */ - if ( cbw->combobox.PassVerification ) { - cbw->combobox.PassVerification = False; - info->doit = True; - return; - } -/* - * Ist es eine Combo-Box, in die kein Text vom Benutzer eingegeben - * werden kann, so wird bei der Eingabe von Zeichen die Schnellsuche - * ausgeloest. - */ - if ( !cbw->combobox.Editable ) { - Widget ListBox = cbw->combobox.ListCtrl; - char WarpCharLow, WarpCharHigh; - XmString Item; - XmStringTable Items; - int *SelectionList; - int SelectionCount; - int i, ItemCount, Start, End; - char *pItem; - Boolean Ignore; - - info->doit = False; - if ( (info->text == NULL ) || - (info->text->length == 0 ) ) return; /* Hoppala! */ -/* - * Nun aus dem Zeichen einen String (Motif-like) basteln und - * in der Listbox danach auf die Suche gehen. - */ - if ( info->text->length > 1 ) { - /* Das ist nun endweder ein normaler Paste, oder aber - * das Ergebnis einer Drag'n'Drop-Operation. - */ - Item = XmStringCreateSimple(info->text->ptr); - XmComboBoxSelectItem((Widget) cbw, Item, True); - XmStringFree(Item); - } else { - /* Ansonsten soll nur eine Schnellsuche ausgefuehrt - * werden, der entsprechende Buchstabe ist das einzige - * Zeichen im dem Callback uebergebenen Text. - */ - WarpCharLow = tolower(*(info->text->ptr)); - WarpCharHigh = toupper(WarpCharLow); - - XtVaGetValues(ListBox, XmNitemCount, &ItemCount, - XmNitems, &Items, - NULL); - if ( ItemCount < 1 ) return; - /* Ermittele, wo's los geht mit der Suche... */ - if ( XmListGetSelectedPos(ListBox, - &SelectionList, &SelectionCount) ) { - Start = *SelectionList; i = Start + 1; - XtFree((char *)SelectionList); - } else i = Start = 1; - - if ( i > ItemCount ) i = 1; - Ignore = True; - while ( i != Start || Ignore ) { - Ignore = False; - XmStringGetLtoR(Items[i-1], XmSTRING_DEFAULT_CHARSET, - &pItem); - if ( (strchr(pItem, WarpCharLow ) == pItem) || - (strchr(pItem, WarpCharHigh) == pItem) ) { - XtFree(pItem); - TransferToEditCtrl(cbw, i, False); - CallSelectionCBL(cbw, info->event); - break; - } - XtFree(pItem); - if ( ++i > ItemCount ) i = 1; - } - } - } else { -/* - * Wenn das Eingabefeld editierbar ist, dann fragen wir ueber die Callbacks - * nach, ob es genehm ist, den neuen Text einzufuegen. - */ - XtCallCallbacks((Widget) cbw, XmNmodifyVerifyCallback, - (XtPointer) info); - } -} /* EditVerifyCallback */ - -/* -------------------------------------------------------------------- - * Dieser Callback wird immer dann aufgerufen, wenn in einer ComboBox - * mit einem veraenderlichem Eingabefeld der Eingabetext veraendert - * wurde. In diesem Fall suchen wir hier nach einem passenden gleich- - * lautenden Eintrag. Wenn wir einen finden, heben wir ihn in der Liste - * sogleich hervor, ansonsten ist kein Eintrag hervorgehoben. - */ -static void EditChangedCallback(Widget w, XtPointer pClientDate, - XmAnyCallbackStruct *info) -{ - XmComboBoxWidget cbw = (XmComboBoxWidget) XtParent(w); - XmStringTable Items; - int ItemCount, i; - XmString EditStr; - String EditLine; - - /* - * Zuerst nach einem passenden Eintrag zum Eingabefeld in der Liste - * suchen... - */ - XtVaGetValues(cbw->combobox.EditCtrl, XmNvalue, &EditLine, NULL); - XtVaGetValues(cbw->combobox.ListCtrl, - XmNitemCount, &ItemCount, - XmNitems, &Items, - NULL); - EditStr = XmStringCreateSimple(EditLine); - XtVaSetValues(cbw->combobox.ListCtrl, XmNselectedItemCount, 0, NULL); - if ( ItemCount < 1 ) return; - for ( i = 0; i < ItemCount; i++ ) - if ( XmStringCompare(Items[i], EditStr) ) { - SetSelectionPos(cbw, i+1, False); - break; - } - XmStringFree(EditStr); - /* - * Zum Abschluss noch den Callback aufrufen... - */ - XtCallCallbacks((Widget) cbw, XmNvalueChangedCallback, (XtPointer) info); -} /* EditChangedCallback */ - -/* -------------------------------------------------------------------- - * Dieser Callback wird immer dann aufgerufen, wenn in einer ComboBox - * mit einem veraenderlichem Eingabefeld der Cursor bewegt wurde. - * Dieser Callback ist nur fuer echte Fans von Callbacks da... - */ -static void MotionVerifyCallback(Widget w, XtPointer pClientDate, - XmTextVerifyCallbackStruct *info) -{ - XmComboBoxWidget cbw = (XmComboBoxWidget) XtParent(w); - - XtCallCallbacks((Widget) cbw, XmNmotionVerifyCallback, (XtPointer) info); -} /* MotionVerifyCallback */ - -/* -------------------------------------------------------------------- - * Bastele einen vollstaendigen Namens- und Klassenbezeichner anhand - * des angegebenen Widgets zusammen. - */ -static void MakeNameAndClass(Widget w, char *NameBuff, char *ClassBuff) -{ - Widget Parent = XtParent(w); - - if ( Parent ) MakeNameAndClass(Parent, NameBuff, ClassBuff); - if ( XtIsSubclass(w, applicationShellWidgetClass) ) { - /* Wenn wir ganz oben angekommen sind, holen wir uns den - * Namen und die Klasse der Applikation selbst und nicht die - * des Widgets. - */ - String AppName, AppClass; - XtGetApplicationNameAndClass( - XtDisplayOfObject(w), &AppName, &AppClass); - strcpy(NameBuff, AppName); - strcpy(ClassBuff, AppClass); - } else { - /* Ansonsten sind wir noch mitten irgendwo in der Hierarchie - * und besorgen uns den Namen und die Klasse dieses Widgets - */ - strcat(NameBuff, "."); - strcat(NameBuff, XtName(w)); - strcat(ClassBuff, "."); - strcat(ClassBuff, ((CoreClassRec *) XtClass(w))->core_class.class_name); - } -} /* MakeNameAndClass */ - -/* -------------------------------------------------------------------- - * Eine einzelne Resource aus der Datenbank herausholen. Diese Resource - * kommt im Allgemeinen immer als String zurueck und muss daher erst - * noch in das gewuenschte Zielformat konvertiert werden. - */ -static Boolean FetchResource(Widget w, - char *FullName, char *FullClass, - char *RscName, char *RscClass, - XrmValue *RscValue, - String *RepresentationType) -{ - Boolean ok; - char *EndOfName = FullName + strlen(FullName); - char *EndOfClass = FullClass + strlen(FullClass); - - strcat(FullName, "."); strcat(FullName, RscName); - strcat(FullClass, "."); strcat(FullClass, RscClass); - ok = XrmGetResource( - XtDatabase(XtDisplayOfObject(w)), - FullName, FullClass, RepresentationType, RscValue); - /* Wieder den alten Namens- und Klassenrumpf herstellen */ - *EndOfName = 0; *EndOfClass = 0; - return ok; -} /* FetchResource */ - -/* -------------------------------------------------------------------- - * Nun folgen diejenigen Routinen, mit denen die Konvertierung in das - * gewuenschte Zielformat einer Resource moeglich ist. - * Verfuegbar: - * String --> Int - * String --> Short - * String XmPIXMAP / XmSTRING --> unsigned char - * String --> Dimension - * String --> XmString - * String --> XmStringTable - * String --> XmFontList - * String --> Pixmap (genauer: Bitmap) - * String --> String - * String --> KeySym - */ -static Boolean FetchIntResource(Widget w, - char *FullName, char *FullClass, - char *RscName, char *RscClass, - int *pInt) -{ - XrmValue RscValue, RscDest; - String RepresentationType; - - if ( FetchResource(w, FullName, FullClass, - RscName, RscClass, - &RscValue, &RepresentationType) ) { - RscDest.size = sizeof(int); - RscDest.addr = (caddr_t) pInt; - if ( XtConvertAndStore(w, RepresentationType, &RscValue, - XtRInt, &RscDest) ) - return True; - } - return False; -} /* FetchIntResource */ - -static Boolean FetchShortResource(Widget w, - char *FullName, char *FullClass, - char *RscName, char *RscClass, - short *pShort) -{ - XrmValue RscValue, RscDest; - String RepresentationType; - - if ( FetchResource(w, FullName, FullClass, - RscName, RscClass, - &RscValue, &RepresentationType) ) { - RscDest.size = sizeof(short); - RscDest.addr = (caddr_t) pShort; - if ( XtConvertAndStore(w, RepresentationType, &RscValue, - XtRShort, &RscDest) ) - return True; - } - return False; -} /* FetchShortResource */ - -static Boolean FetchLabelTypeResource(Widget w, - char *FullName, char *FullClass, - char *RscName, char *RscClass, - unsigned char *pUChar) -{ - XrmValue RscValue, RscDest; - String RepresentationType; - int AInt; - - if ( FetchResource(w, FullName, FullClass, - RscName, RscClass, - &RscValue, &RepresentationType) ) { - if ( strcasecmp((char *) RscValue.addr, "XmPIXMAP") == 0 ) - *pUChar = XmPIXMAP; - else - *pUChar = XmSTRING; - return True; - } - return False; -} /* FetchLabelTypeResource */ - -static Boolean FetchDimensionResource(Widget w, - char *FullName, char *FullClass, - char *RscName, char *RscClass, - Dimension *pDimension) -{ - XrmValue RscValue, RscDest; - String RepresentationType; - - if ( FetchResource(w, FullName, FullClass, - RscName, RscClass, - &RscValue, &RepresentationType) ) { - RscDest.size = sizeof(Dimension); - RscDest.addr = (caddr_t) pDimension; - if ( XtConvertAndStore(w, RepresentationType, &RscValue, - XtRDimension, &RscDest) ) - return True; - } - return False; -} /* FetchDimensionResource */ - -static Boolean FetchStringResource(Widget w, - char *FullName, char *FullClass, - char *RscName, char *RscClass, - String *pString) -{ - XrmValue RscValue; - String RepresentationType; - - if ( FetchResource(w, FullName, FullClass, - RscName, RscClass, - &RscValue, &RepresentationType) ) { - *pString = (char *) RscValue.addr; - return True; - } - return False; -} /* FetchStringResource */ - -static Boolean FetchKeySymResource(Widget w, - char *FullName, char *FullClass, - char *RscName, char *RscClass, - KeySym *pKeySym) -{ - XrmValue RscValue, RscDest; - String RepresentationType; - - if ( FetchResource(w, FullName, FullClass, - RscName, RscClass, - &RscValue, &RepresentationType) ) { - RscDest.size = sizeof(KeySym); - RscDest.addr = (caddr_t) pKeySym; - if ( XtConvertAndStore(w, RepresentationType, &RscValue, - XmRKeySym, &RscDest) ) - return True; - } - return False; -} /* FetchKeySymResource */ - -static Boolean FetchXmStringResource(Widget w, - char *FullName, char *FullClass, - char *RscName, char *RscClass, - XmString *pString) -{ - XrmValue RscValue; - String RepresentationType; - - if ( FetchResource(w, FullName, FullClass, - RscName, RscClass, - &RscValue, &RepresentationType) ) { - *pString = XmCvtCTToXmString((char *) RscValue.addr); - return True; - } - return False; -} /* FetchXmStringResource */ - -static Boolean FetchXmStringTableResource(Widget w, - char *FullName, char *FullClass, - char *RscName, char *RscClass, - XmStringTable *pStringTable, - int *pTableSize) -{ - XrmValue RscValue; - String RepresentationType; - String TmpList, p, pStart; - int Entries, Entry; - - if ( FetchResource(w, FullName, FullClass, - RscName, RscClass, - &RscValue, &RepresentationType) ) { - /* - * Zuerst eine Kopie erzeugen und dann daraus die Liste - * zusammenbasteln. - */ - TmpList = XtNewString((String)RscValue.addr); - if ( TmpList == NULL ) return False; - if ( *TmpList == 0 ) { XtFree(TmpList); return False; } - /* Ermittele, wieviele Eintrage in der Liste sind und - * erstelle dann daraus die Liste. - */ - Entries = 1; p = TmpList; - while ( *p ) - if ( *p++ == ',' ) ++Entries; - *pStringTable = (XmStringTable) - XtMalloc(Entries * sizeof(XmString)); - - p = TmpList; - for ( Entry = 0; Entry < Entries; ++Entry ) { - pStart = p; - while ( (*p != 0) && (*p != ',') ) ++p; - *p++ = 0; - (*pStringTable)[Entry] = (XmString) - XmStringCreateSimple(pStart); - } - /* Hier geht ausnahmsweise einmal Rueckgabe vor - * Entschaedigung... hey, das war doch nur ein - * (wenn auch ziemlich miserabler) Scherz - */ - XtFree(TmpList); - *pTableSize = Entries; - return True; - } - return False; -} /* FetchXmStringTableResource */ - -static Boolean FetchXmFontListResource(Widget w, - char *FullName, char *FullClass, - char *RscName, char *RscClass, - XmFontList *pFontList) -{ - XrmValue RscValue, RscDest; - String RepresentationType; - - if ( FetchResource(w, FullName, FullClass, - RscName, RscClass, - &RscValue, &RepresentationType) ) { - RscDest.size = sizeof(XmFontList); - RscDest.addr = (caddr_t) pFontList; - if ( XtConvertAndStore(w, RepresentationType, &RscValue, - XmRFontList, &RscDest) ) - return True; - } - return False; -} /* FetchXmFontListResource */ - -static Boolean FetchPixmapResource(Widget w, - char *FullName, char *FullClass, - char *RscName, char *RscClass, - Pixmap *pPixmap) -{ - XrmValue RscValue, RscDest; - String RepresentationType; - - if ( FetchResource(w, FullName, FullClass, - RscName, RscClass, - &RscValue, &RepresentationType) ) { - RscDest.size = sizeof(Pixmap); - RscDest.addr = (caddr_t) pPixmap; - if ( XtConvertAndStore(w, RepresentationType, &RscValue, - XtRBitmap, &RscDest) ) - return True; - } - return False; -} /* FetchPixmapResource */ - -/* -------------------------------------------------------------------- - * Waehrend der Initialisierung alle gespiegelten Resourcen, fuer die - * Eintraege in der Resourcen-Datenbank existieren an die passenden - * Kinder-Widgets weiterleiten. Der Trick an der Sache: wir setzen - * die betroffenen Resourcen vie XtSetValues mit uns selbst als Ziel. - * Dadurch bekommt SetValues die Arbeit aufgehalst, die Resourcen den - * richtigen Kindern zuzuordnen... - */ - -#define RInt 0 -#define RShort 1 -#define RLType 2 -#define RDimension 3 -#define RXmString 4 -#define RPixmap 5 -#define RXmFontList 6 -#define RKeySym 7 -#define RString 8 -#define RXmStringTable 9 -#define RXmItemCount 10 - - -typedef struct -{ - String Name, Class; - - int Converter; - -} RESOURCEMIRROR; - -static RESOURCEMIRROR ResourceMirror[] = { - { XmNblinkRate, XmCBlinkRate, RInt, }, - { XmNcolumns, XmCColumns, RShort, }, - { XmNmaxLength, XmCMaxLength, RInt, }, - { XmNmarginHeight, XmCMarginHeight, RDimension }, - { XmNmarginWidth, XmCMarginWidth, RDimension }, - { XmNselectThreshold, XmCSelectThreshold, RInt }, - - { XmNlistMarginHeight, XmCListMarginHeight, RDimension }, - { XmNlistMarginWidth, XmCListMarginWidth, RDimension }, - { XmNlistSpacing, XmCListSpacing, RDimension }, - { XmNitems, XmCItems, RXmStringTable }, - { XmNitemCount, XmCItemCount, RXmItemCount }, - - { XmNmnemonic, XmCMnemonic, RKeySym }, - { XmNmnemonicCharSet, XmCMnemonicCharSet, RString }, - { XmNlabelString, XmCLabelString, RXmString }, - { XmNlabelMarginBottom, XmCLabelMarginBottom, RDimension }, - { XmNlabelMarginHeight, XmCLabelMarginHeight, RDimension }, - { XmNlabelMarginLeft, XmCLabelMarginLeft, RDimension }, - { XmNlabelMarginRight, XmCLabelMarginRight, RDimension }, - { XmNlabelMarginTop, XmCLabelMarginTop, RDimension }, - { XmNlabelMarginWidth, XmCLabelMarginWidth, RDimension }, - { XmNlabelPixmap, XmCLabelPixmap, RPixmap }, - { XmNlabelInsensitivePixmap, XmCLabelInsensitivePixmap, RPixmap }, - { XmNlabelType, XmCLabelType, RLType }, - { XmNlabelFontList, XmCLabelFontList, RXmFontList }, -}; - -static void InitMirrorResources(XmComboBoxWidget w) -{ - char FullName[1024], FullClass[1024]; - int AInt, TableSize; - short AShort; - unsigned char AUChar; - Dimension ADimension; - XmString AXmString; - XmStringTable AStringTable; - Pixmap APixmap; - XmFontList AFontList; - XrmValue RscValue; - String AString; - KeySym AKeySym; - int i, size = XtNumber(ResourceMirror); - - FullName[0] = 0; FullClass[0] = 0; - MakeNameAndClass((Widget) w, FullName, FullClass); - - for ( i=0; i < size; i++ ) { - switch ( ResourceMirror[i].Converter ) { - case RInt: - if ( FetchIntResource((Widget) w, - FullName, FullClass, - ResourceMirror[i].Name, ResourceMirror[i].Class, - &AInt) ) - XtVaSetValues((Widget) w, ResourceMirror[i].Name, - AInt, NULL); - break; - case RXmItemCount: - if ( FetchIntResource((Widget) w, - FullName, FullClass, - ResourceMirror[i].Name, ResourceMirror[i].Class, - &AInt) && ( AInt != 0) ) - XtVaSetValues((Widget) w, ResourceMirror[i].Name, - AInt, NULL); - break; - case RShort: - if ( FetchShortResource((Widget) w, - FullName, FullClass, - ResourceMirror[i].Name, ResourceMirror[i].Class, - &AShort) ) - XtVaSetValues((Widget) w, ResourceMirror[i].Name, - AShort, NULL); - break; - case RLType: - if ( FetchLabelTypeResource((Widget) w, - FullName, FullClass, - ResourceMirror[i].Name, ResourceMirror[i].Class, - &AUChar) ) - XtVaSetValues((Widget) w, ResourceMirror[i].Name, - AUChar, NULL); - break; - case RDimension: - if ( FetchDimensionResource((Widget) w, - FullName, FullClass, - ResourceMirror[i].Name, ResourceMirror[i].Class, - &ADimension) ) - XtVaSetValues((Widget) w, ResourceMirror[i].Name, - ADimension, NULL); - break; - case RXmString: - if ( FetchXmStringResource((Widget) w, - FullName, FullClass, - ResourceMirror[i].Name, ResourceMirror[i].Class, - &AXmString) ) - XtVaSetValues((Widget) w, ResourceMirror[i].Name, - AXmString, NULL); - break; - case RXmStringTable: - if ( FetchXmStringTableResource((Widget) w, - FullName, FullClass, - ResourceMirror[i].Name, ResourceMirror[i].Class, - &AStringTable, &TableSize) ) { - XtVaSetValues((Widget) w, - XmNitems, (XtPointer) AStringTable, - XmNitemCount, TableSize, NULL); - } - break; - case RKeySym: - if ( FetchKeySymResource((Widget) w, - FullName, FullClass, - ResourceMirror[i].Name, ResourceMirror[i].Class, - &AKeySym) ) - XtVaSetValues((Widget) w, ResourceMirror[i].Name, - AKeySym, NULL); - break; - case RString: - if ( FetchStringResource((Widget) w, - FullName, FullClass, - ResourceMirror[i].Name, ResourceMirror[i].Class, - &AString) ) - XtVaSetValues((Widget) w, ResourceMirror[i].Name, - AString, NULL); - break; - case RPixmap: - if ( FetchPixmapResource((Widget) w, - FullName, FullClass, - ResourceMirror[i].Name, ResourceMirror[i].Class, - &APixmap) ) { - XtVaSetValues((Widget) w, ResourceMirror[i].Name, - APixmap, NULL); - if ( strcmp(ResourceMirror[i].Name, XmNlabelPixmap) == 0 ) - w->combobox.ConvertBitmapToPixmap = True; - else - w->combobox.ConvertBitmapToPixmapInsensitive = True; - } - break; - case RXmFontList: - if ( FetchXmFontListResource((Widget) w, - FullName, FullClass, - ResourceMirror[i].Name, ResourceMirror[i].Class, - &AFontList) ) - XtVaSetValues((Widget) w, ResourceMirror[i].Name, - AFontList, NULL); - break; - } - } -} /* InitMirrorResources */ - -/* -------------------------------------------------------------------- - * Wandelt ein 1-Bit tiefes Bitmap in ein n-Bit tiefes Pixmap um, dass - * die gleiche Tiefe besitzt, wie der Bildschirm, auf dem das Pixmap - * spaeter erscheinen soll. - */ -static Pixmap BitmapToPixmap(XmComboBoxWidget w, - String Resource, GC ColorGC) -{ - Pixmap LabelPixmap, LabelBitmap; - Display *display = XtDisplay(w); - Window root; - int PixX, PixY; - unsigned int PixW, PixH, PixBW, PixDepth; - - XtVaGetValues(w->combobox.LabelCtrl, Resource, &LabelBitmap, NULL); - XGetGeometry(display, LabelBitmap, &root, - &PixX, &PixY, &PixW, &PixH, &PixBW, &PixDepth); - LabelPixmap = XCreatePixmap( - display, RootWindowOfScreen(XtScreen(w)), - PixW, PixH, - (w->combobox.LabelCtrl)->core.depth); - XCopyPlane(display, LabelBitmap, LabelPixmap, - ColorGC, 0, 0, PixW, PixH, 0, 0, 1); - XtVaSetValues(w->combobox.LabelCtrl, Resource, LabelPixmap, NULL); - XFreePixmap(display, LabelBitmap); - return LabelPixmap; -} /* BitmapToPixmap */ - -/* -------------------------------------------------------------------- - * Alles initialisieren, sobald das Widget eingerichtet wird. Das sagt - * sich hier so einfach, ist es aber *definitiv* nicht!!!! - */ -static void Initialize(Widget request, XmComboBoxWidget newW, - ArgList wargs, Cardinal *ArgCount) -{ - Dimension width, height, dummy; - Widget w; - Arg args[10]; - int n = 0; - XmString xmstr; - Pixel BackgroundColor; - -/* - * Da zu allem Ueberfluss die einzelnen Instanzen einer XmComboBox - * auf verschiedenen Displays auftauchen koennen, wird hier: - * 1. pro Widget ein eigener Cursor erzeugt (benoetigt fuer die Liste) - * 2. pro Widget (hier = pro Applikation) die benoetigte Action-Routine - * registiert. Doppelte Registrierung macht dem Toolkit nichts aus, da es - * dann eine evtl. aeltere Definition loescht. - */ - XtAppAddActions(XtWidgetToApplicationContext((Widget) newW), - actions, XtNumber(actions)); - -/* Allgemeine Initialisierungen... */ - newW->combobox.ConvertBitmapToPixmap = False; - newW->combobox.ConvertBitmapToPixmapInsensitive = False; - - newW->combobox.LastSelection = 0; - - newW->combobox.InInit = True; - -/* - * Das folgende Problem mit der Kontrolle, ob sich das Widget absolut auf - * dem Bildschirm verschoben hat, trifft uns nur, wenn die Liste nicht - * dauernd auf dem Bildschirm erscheint: - * Lass' dich benachrichtigen, sobald dieses Widget in irgendeiner - * Form bewegt wird -- und sei es nur, dass das gesamte Applikations- - * fenster umhergeschoben wurde. Um die Benachrichtigung ueberhaupt - * zu erreichen, ist es erforderlich, sich benachrichtigen zu lassen, - * sobald die naechste Shell (oder ein Nachkomme) im Widget-Instanzen- - * Baum verschoben wurde. - */ - if ( !newW->combobox.StaticList ) { - w = (Widget) newW; - while ( !XtIsSubclass(w, shellWidgetClass) ) - w = XtParent(w); - newW->combobox.MyNextShell = w; - XtAddEventHandler(w, - StructureNotifyMask | FocusChangeMask, - False, (XtEventHandler) ShellCallback, - (XtPointer) newW); - } - -/* Richte nun alle zu diesem Widget gehoerenden Kinder ein, als da - * waeren: - * 1 x editierbares Eingabefeld - * 1 x ein Pfeil nach unten - * 1 x ein Schriftfeld - */ - newW->combobox.EditCtrl = XtVaCreateManagedWidget( - "edit", xmTextFieldWidgetClass, (Widget) newW, - XmNverifyBell, False, - NULL); - XtAddCallback(newW->combobox.EditCtrl, - XmNlosingFocusCallback, - (XtCallbackProc) EditFocusCallback, NULL); - XtAddCallback(newW->combobox.EditCtrl, - XmNmodifyVerifyCallback, - (XtCallbackProc) EditVerifyCallback, NULL); - XtAddCallback(newW->combobox.EditCtrl, - XmNvalueChangedCallback, - (XtCallbackProc) EditChangedCallback, NULL); - XtAddCallback(newW->combobox.EditCtrl, - XmNhelpCallback, - (XtCallbackProc) HelpCallback, - (XtPointer) newW); - XtAddCallback(newW->combobox.EditCtrl, - XmNactivateCallback, - (XtCallbackProc) ActivateCallback, - (XtPointer) newW); - if ( newW->combobox.Editable ) - XtAddCallback(newW->combobox.EditCtrl, - XmNmotionVerifyCallback, - (XtCallbackProc) MotionVerifyCallback, - (XtPointer) newW); -/* Neue Translations fuer das Eingabefeld aufnehmen */ - XtOverrideTranslations(newW->combobox.EditCtrl, - NewEditTranslations); - if ( !newW->combobox.Editable ) { - XtOverrideTranslations(newW->combobox.EditCtrl, - NewEditTranslationsNE); - XtVaSetValues(newW->combobox.EditCtrl, - XmNcursorPositionVisible, False, NULL); - } -#ifdef NODRAGNDROP - XtOverrideTranslations(newW->combobox.EditCtrl, - NewListTranslations); /* Btn2Dwn aus! */ -#endif - -/* --- */ - newW->combobox.ArrowCtrl = XtVaCreateManagedWidget( - "arrow", xmArrowButtonWidgetClass, (Widget) newW, - XmNarrowDirection, XmARROW_DOWN, - XmNtraversalOn, False, - XmNnavigationType, XmNONE, - XmNborderWidth, 0, - XmNhighlightThickness, 0, - NULL); - XmRemoveTabGroup(newW->combobox.ArrowCtrl); - if ( newW->combobox.StaticList ) { - XtVaSetValues(newW->combobox.ArrowCtrl, - XmNmappedWhenManaged, False, NULL); - } else { - XtAddEventHandler(newW->combobox.ArrowCtrl, - EnterWindowMask | LeaveWindowMask, - False, (XtEventHandler) ArrowCrossingCallback, - (XtPointer) newW); - XtAddCallback(newW->combobox.ArrowCtrl, - XmNactivateCallback, - (XtCallbackProc) ArrowCallback, NULL); - XtAddCallback(newW->combobox.ArrowCtrl, - XmNarmCallback, - (XtCallbackProc) ArrowCallback, NULL); - XtAddCallback(newW->combobox.ArrowCtrl, - XmNhelpCallback, - (XtCallbackProc) HelpCallback, - (XtPointer) newW); - } - -/* --- */ - newW->combobox.LabelCtrl = XtVaCreateWidget( - "label", xmLabelWidgetClass, (Widget) newW, - XmNstringDirection, newW->manager.string_direction, - NULL); - if ( newW->combobox.ShowLabel ) { - XtManageChild((Widget) newW->combobox.LabelCtrl); - XtAddCallback(newW->combobox.LabelCtrl, - XmNhelpCallback, - (XtCallbackProc) HelpCallback, - (XtPointer) newW); - } - -/* - * Zuerst noch die Shell erzeugen, die so einfach mir nichts dir nichts - * frei auf dem Bildschirm herumschweben kann und damit das Ausklappen - * der Liste erst ermoeglicht -- und uns allerhand Scherereien bereitet! - * War das ein bloeder Fehler in Motif 1.2! Diese Version vertraegt ab- - * solut keine ShellWidgetClass noch overrideShellWidgetClass!!!! Naja, - * mit einer vendorShellWidgetClass laesst sich aber exakt der gleiche - * Effekt erreichen. NEU: vor allem funktioniert dann endlich auch - * Drag'n'Drop!!! - * Noch neuer: Wenn die Liste dauerhaft angezeigt werden muss, entfaellt - * diese Shell zwangslaeufig. Dann ist das Listenfeld ein direktes Kind - * der ComboBox. - */ - if ( !newW->combobox.StaticList ) { - newW->combobox.PopupShell = XtVaCreateWidget( - "combobox_shell", vendorShellWidgetClass, (Widget) newW, - XmNoverrideRedirect, True, - XmNsaveUnder, False, - XmNallowShellResize, True, - NULL); - XtAddEventHandler(newW->combobox.PopupShell, - EnterWindowMask | LeaveWindowMask, - False, (XtEventHandler) OverrideShellCallback, - (XtPointer) newW); - } else { - /* - * Sieht ja pervers nach einer Rekursion aus...daher: OBACHT! - */ - newW->combobox.PopupShell = (Widget) newW; - } - -/* - * Nun kommt die Drop-Down-Liste an die Reihe. Die Liste muss dabei - * mit einer Convenience-Funktion erstellt werden, damit ein Rollbalken - * 'dran ist und das Ganze wird dann in eine Override-Shell gepackt. - * Nicht zu vergessen ist der XtManageChild-Aufruf, damit die Liste - * sofort nach dem Aufklappen der Shell sichtbar wird. - */ - XtSetArg(args[n], XmNselectionPolicy, newW->combobox.SelectionPolicy); n++; - - if ( !newW->combobox.StaticList ) { - /* - * Es gibt halt so eine ganze Reihe von Einstellungen, die koennen nicht - * veraendert werden, wenn das Listenfeld nur bei Bedarf ausgeklappt wird. - */ - XtSetArg(args[n], XmNhighlightThickness, 0); n++; - } - XtSetArg(args[n], XmNlistSizePolicy, - newW->combobox.ListSizePolicy); n++; - XtSetArg(args[n], XmNscrollBarDisplayPolicy, - newW->combobox.ScrollBarDisplayPolicy); n++; - - XtSetArg(args[n], XmNautomaticSelection, - newW->combobox.AutomaticSelection); n++; - XtSetArg(args[n], XmNvisibleItemCount, - newW->combobox.VisibleItemCount); n++; - newW->combobox.ListCtrl = XmCreateScrolledList( - newW->combobox.PopupShell, "list", - args, n); - -/* - * Fuer den Fall, dass die Liste in einer eigenen Shell steckt und daher frei - * auf dem Bildschirm herumschweben kann, sollten wir sicherheitshalber die - * Tastaturbedienung (Fokus) abschalten, um Probleme zu vermeiden (jedenfalls - * hoffentlich...!) - */ - if ( !newW->combobox.StaticList ) { - XtVaSetValues(newW->combobox.ListCtrl, - XmNtraversalOn, False, NULL); - XtVaSetValues(XtParent(newW->combobox.ListCtrl), - XmNtraversalOn, False, NULL); - } else { - if ( !newW->combobox.Editable ) { - XtVaSetValues(XtParent(newW->combobox.ListCtrl), - XmNtraversalOn, False, NULL); - XmRemoveTabGroup(newW->combobox.ListCtrl); - } - } - - XtManageChild(newW->combobox.ListCtrl); - XtAddCallback(newW->combobox.ListCtrl, - XmNsingleSelectionCallback, - (XtCallbackProc) ListSelectionCallback, - (XtPointer) newW); - XtAddCallback(newW->combobox.ListCtrl, - XmNbrowseSelectionCallback, - (XtCallbackProc) ListSelectionCallback, - (XtPointer) newW); - XtAddCallback(newW->combobox.ListCtrl, - XmNdefaultActionCallback, - (XtCallbackProc) ListDefaultActionCallback, - (XtPointer) newW); - XtAddCallback(newW->combobox.ListCtrl, - XmNhelpCallback, - (XtCallbackProc) HelpCallback, - (XtPointer) newW); - - XtAddEventHandler(newW->combobox.ListCtrl, - ButtonReleaseMask, - False, (XtEventHandler) Button1UpInList, - (XtPointer) newW); - -#ifdef NODRAGNDROP - XtOverrideTranslations(newW->combobox.ListCtrl, - NewListTranslations); -#endif - if ( newW->combobox.StaticList && newW->combobox.Editable ) - XtOverrideTranslations(newW->combobox.ListCtrl, - NewListTranslationsE); - -/* Jetzt wird es dann erst richtig spannend... Zuerst alle evtl. - * in der Resource-Datenbank abgelegten Resourcen an die Kinder - * weitergeben. Danach die uebergebenen Parameter ebenfalls an - * die Kinder weiterreichen und schliesslich das Layout ermitteln. - */ - InitMirrorResources(newW); - UpdateColors(newW, -1); - SetValues(newW, newW, newW, wargs, ArgCount); - - if ( newW->combobox.ConvertBitmapToPixmap ) - newW->combobox.LabelPixmap = - BitmapToPixmap(newW, XmNlabelPixmap, - ((XmLabelRec *) newW->combobox.LabelCtrl)-> - label.normal_GC); - if ( newW->combobox.ConvertBitmapToPixmapInsensitive ) - newW->combobox.LabelInsensitivePixmap = - BitmapToPixmap(newW, XmNlabelInsensitivePixmap, - ((XmLabelRec *) newW->combobox.LabelCtrl)-> - label.insensitive_GC); - - DefaultGeometry(newW, &width, &height, &dummy, &dummy); - if ( newW->core.width == 0 ) - newW->core.width = width; - if ( newW->core.height == 0 ) - newW->core.height = height; - -/* - * Falls wir keine Fontliste besitzen, dann nehmen wir die von - * dem Eingabefeld... - */ - if ( newW->combobox.Font == NULL ) { - XtVaGetValues(newW->combobox.EditCtrl, - XmNfontList, &newW->combobox.Font, NULL); - XtVaSetValues(newW->combobox.ListCtrl, - XmNfontList, newW->combobox.Font, NULL); - } else { - XtVaSetValues(newW->combobox.ListCtrl, - XmNfontList, newW->combobox.Font, NULL); - XtVaSetValues(newW->combobox.EditCtrl, - XmNfontList, newW->combobox.Font, NULL); - } - -/* - * Initialisiere alle Statusflaggen, die mit diesem unseligen Focus- - * problem zu tun haben... - */ - newW->combobox.ListVisible = False; - newW->combobox.IgnoreFocusOut = False; - newW->combobox.PendingFocusOut = False; - newW->combobox.PendingOverrideInOut = False; - - newW->combobox.PassVerification = False; - -/* - * Jooa... bei der OSF pennen die wohl komplett?! Zusammen mit Form- - * Widgets gibt das wohl immer Aerger...daher hier ein DoLayout() - * aufrufen, damit Eingabefeld und Pfeil sowie das Listenfeld an der - * richtigen Stelle sitzen! - */ - DoLayout(newW); -/* - * Endlich fertig mit der Initialisierung. Das hier ist aber auch - * wirklich viel Arbeit fuer so ein Widget! - */ - newW->combobox.InInit = False; -} /* Initialize */ - -/* -------------------------------------------------------------------- - * Diese Funktionen bitte nur im aeussersten Notfall benutzen, da sie - * die Abstraktion dieser neuen Klasse umgehen und Informationen ueber - * den internen Aufbau voraussetzen. - */ -Widget XmComboBoxGetEditWidget(Widget w) -{ - return ((XmComboBoxWidget) w)->combobox.EditCtrl; -} /* XmComboBoxGetEditWidget */ - -Widget XmComboBoxGetListWidget(Widget w) -{ - return ((XmComboBoxWidget) w)->combobox.ListCtrl; -} /* XmComboBoxGetListWidget */ - -Widget XmComboBoxGetLabelWidget(Widget w) -{ - return ((XmComboBoxWidget) w)->combobox.LabelCtrl; -} /* XmComboBoxGetLabelWidget */ - - -/* -------------------------------------------------------------------- - * Sobald sich im Listenfeld Eintraege veraenderten, sei es, dass sie - * geloescht wurden, sei es, dass sie veraendert wurden, so muss hier - * gegebenenfalls auch der Text im Eingabefeld angepasst werden. - * Letzteres betrifft aber nur Combo-Boxen mit nicht editierbarem - * Eingabefeld. In jedem Fall wird aber bei jeder Combo-Box-Type in - * dem Fall, dass ein Eintrag geloescht wird, der darauffolgende - * Eintrag markiert. Eigentlich ist dieses nur eine nette Geste - * gegenueber dem Benutzer... - * - * Parameter: - * w Combo-Box-Widget - * Index Index auf denjenigen Eintrag der sich geaendert - * hat, oder der geloescht wurde. - * Deleted Zeigt an, ob der Eintrag geloescht wurde (True) - * oder sich nur veraenderte (False) - */ -static UpdateComboBox(XmComboBoxWidget w, int Index, Boolean Deleted) -{ - int OldIndex, ItemCount; - - OldIndex = XmComboBoxGetSelectedPos((Widget) w); - if ( OldIndex == Index ) { -/* Es betrifft den Eintrag, der auch momentan ausgewaehlt ist. - * Sollte er geloescht werden, so nimm' (soweit vorhanden) den - * naechsten Eintrag, wurde er ausgetauscht, so lass ihn ausge- - * waehlt. - */ - if ( Deleted ) { - XtVaGetValues(w->combobox.ListCtrl, - XmNitemCount, &ItemCount, NULL); - if ( ItemCount != 0 ) { - if ( Index >= ItemCount ) Index = ItemCount; - /* Markieren des Eintrags, ohne jedoch jetzt schon - * den Eintrag in die Eingabezeile zu kopieren. - */ - SetSelectionPos(w, Index, False); - } - } - } -/* Das Problem betrifft uns nur bei nicht editierbaren Combo-Boxen - * im vollen Umfang. Denn dann muss auch der Text im Eingabefeld - * veraendert werden. - */ - if ( !w->combobox.Editable ) { - TransferToEditCtrl(w, Index, False); - } - - return 1; -} /* UpdateComboBox */ - - -/* -------------------------------------------------------------------- - * Die Eintragsposition finden, an der der Eintrag sortiert stehen - * muesste. Naja, es wurde ja 'mal langsam Zeit, diese Routine etwas - * aufzupolieren, damit sie schneller wird. - */ -static int FindSortedItemPos(XmComboBoxWidget w, XmString item) -{ - Widget ListBox = w->combobox.ListCtrl; - XmStringTable Items; - int ItemCount, index, Left, Right, Result; - char *pItemText, *pCompareText; - Boolean ExternSort; - XmComboBoxSortingCallbackStruct data; - - XtVaGetValues(ListBox, XmNitems, &Items, - XmNitemCount, &ItemCount, NULL); - if ( ItemCount == 0 ) return 1; - - /* - * Moechte das Programm die Kontrolle ueber den Sortiervorgang - * uebernehmen? Dann bereite alles vor... - */ - ExternSort = XtHasCallbacks((Widget) w, XmNsortingCallback) == - XtCallbackHasSome; - if ( ExternSort ) { - data.reason = XmCR_SORTING; - data.event = NULL; - data.operation = XmOP_INIT; - data.item = item; - XtCallCallbacks((Widget) w, XmNsortingCallback, (XtPointer) &data); - } else - XmStringGetLtoR(item, XmSTRING_DEFAULT_CHARSET, &pCompareText); - - Left = 0; Right = ItemCount - 1; - do { - index = (Left + Right) / 2; - if ( ExternSort ) { - data.operation = XmOP_COMPARE; - data.item = Items[index]; - data.result = 1; - XtCallCallbacks((Widget) w, XmNsortingCallback, (XtPointer) &data); - Result = data.result; - } else { - XmStringGetLtoR(Items[index], XmSTRING_DEFAULT_CHARSET, &pItemText); - Result = strcmp(pCompareText, pItemText); - XtFree(pItemText); - } - if ( Result < 0 ) Right = index - 1; - else if ( Result > 0 ) Left = index + 1; - } while ( (Result != 0) && (Left <= Right) ); - - /* - * Nach Gebrauch wieder alles aufraeumen (bei einer externen Sortierung - * muss das das Programm uebernehmen!) - */ - if ( ExternSort ) { - data.operation = XmOP_DONE; - XtCallCallbacks((Widget) w, XmNsortingCallback, (XtPointer) &data); - } else - XtFree(pCompareText); - - if ( Result < 0 ) - return index + 1; /* Beachte, dass Indizes mit 1 beginnen! */ - else - return index + 2; /* Beachte, dass Indizes mit 1 beginnen! */ -} /* FindSortedItemPos */ - -/* -------------------------------------------------------------------- - * Kontrolliere, ob es sich ueberhaupt um eine Combo-Box (bzw. einen - * hypothetischen Nachkommen) handelt -- ansonsten mecker kraeftig - * herum! - * Ergebnis: - * True, falls wir hier ein falsches Widget untergejubelt bekommen! - */ -static Boolean CheckComboBox(Widget w, char *pFuncName) -{ - char buff[256]; - char *pWName; - -#if (XmVersion >= 2000) - return False; /* temporary workaround */ -#else - if ( XmIsComboBox(w) ) return False; - pWName = XrmQuarkToString(w->core.xrm_name); - sprintf(buff, -"Warning: %s called on widget named %s beeing \ -not a descendant of class XmComboBox!", - pFuncName, pWName); - XtWarning(buff); - return True; -#endif -} /* CheckComboBox */ - -/* -------------------------------------------------------------------- - * Saemtliche Interface-Routinen zur Combo-Box - */ -/* Zunaechst alles fuer die Listbox */ -#define ListBox (((XmComboBoxWidget) w)->combobox.ListCtrl) -#define EditBox (((XmComboBoxWidget) w)->combobox.EditCtrl) -#define ComboBox ((XmComboBoxWidget) w) - -/* !!! - * So angepasst, dass bei doppelt auftretenden Eintraegen, der - * alte Eintrag weiterhin markiert bleibt. Diese Massnahme soll - * eigentlich nur verhindern, dass zufaellig zwei Eintraege - * markiert sind, falls nach der Anwahl eines Eintrages ein zweiter - * gleichlautender Eintrag hinzugefuegt wurde. - * Was hier die reine Lehre (oder war das die Leere?) anbetrifft: - * in einer Combo-Box sollten sich sowieso nie gleichlautende - * Eintraege befinden, da sie dort unsinnig sind und den Benutzer - * nur verwirren... - */ -void XmComboBoxAddItem(Widget w, XmString item, int pos) -{ - int OldIndex = XmComboBoxGetSelectedPos(w); - - if ( CheckComboBox(w, "XmComboBoxAddItem") ) return; - if ( ComboBox->combobox.Sorted ) - pos = FindSortedItemPos(ComboBox, item); - XmListAddItem(ListBox, item, pos); - if ( OldIndex != XmComboBoxGetSelectedPos(w) ) - /* Hier SetSelectionPos() statt XmComboBoxSelectPos(), - * da der Text nicht in das Eingabefeld uebertragen werden - * soll! - */ - SetSelectionPos(ComboBox, OldIndex, False); -} /* XmComboBoxAddItem */ -/* !!! - * Hier gilt das bereits oben gesagte (siehe XmComboBoxAddItem). - * Bei sortierten Listboxen wird die Sortierung beim Gebrauch dieser - * Funktion zerstoert! - */ -void XmComboBoxAddItems(Widget w, XmString *items, int item_count, int pos) -{ - int OldIndex = XmComboBoxGetSelectedPos(w); - - if ( CheckComboBox(w, "XmComboBoxAddItems") ) return; - XmListAddItems(ListBox, items, item_count, pos); - if ( OldIndex != XmComboBoxGetSelectedPos(w) ) - /* Siehe Anmerkung in XmComboBoxAddItem */ - SetSelectionPos(ComboBox, OldIndex, False); -} /* XmComboBoxAddItems */ - -void XmComboBoxAddItemUnselected(Widget w, XmString item, int pos) -{ XmListAddItemUnselected(ListBox, item, pos); } - -/* !!! - * Da bei den folgenden Routinen jeweils ein oder mehrere Eintraege - * geloescht oder veraendert werden, muss gegebenefalls das Eingabe- - * feld bei nicht editierbaren Combo-Boxen auf Vordermann gebracht - * werden. - */ -void XmComboBoxDeleteItem(Widget w, XmString item) -{ - int Index = XmListItemPos(ListBox, item); - - if ( CheckComboBox(w, "XmComboBoxDeleteItem") ) return; - if ( Index ) XmComboBoxDeletePos(w, Index); -} /* XmComboBoxDeleteItem */ - -void XmComboBoxDeleteItems(Widget w, XmString *items, int item_count) -{ - int i; - - if ( CheckComboBox(w, "XmComboBoxDeleteItems") ) return; - for ( i = 0; i < item_count; i++ ) - XmListDeleteItem(w, items[i]); -} /* XmComboBoxDeleteItems */ - -void XmComboBoxDeletePos(Widget w, int pos) -{ - int OldIndex = XmComboBoxGetSelectedPos(w); - - if ( CheckComboBox(w, "XmComboBoxDeletePos") ) return; - XmListDeletePos(ListBox, pos); - if ( pos == OldIndex ) UpdateComboBox(ComboBox, pos, True); -} /* XmComboBoxDeletePos */ - -void XmComboBoxDeleteItemsPos(Widget w, int item_count, int pos) -{ - int i; - - if ( CheckComboBox(w, "XmComboBoxDeleteItemsPos") ) return; - for ( i = 0; i < item_count; i++ ) - XmComboBoxDeletePos(w, pos++); -} /* XmComboBoxDeleteItemsPos */ - -void XmComboBoxDeleteAllItems(Widget w) -{ - if ( CheckComboBox(w, "XmComboBoxAllDeleteItems") ) return; - XmListDeleteAllItems(ListBox); - UpdateComboBox(ComboBox, 0, True); -} /* XmComboBoxDeleteAllItems */ - -/* !!! - * Werden Eintraege ausgetauscht, so heisst es fuer uns, auch hierbei - * auf der Hut zu sein. - */ -void XmComboBoxReplaceItems(Widget w, XmString *old_items, int item_count, XmString *new_items) -{ - if ( CheckComboBox(w, "XmComboBoxReplaceItems") ) return; - XmListReplaceItems(ListBox, old_items, item_count, new_items); - UpdateComboBox(ComboBox, XmComboBoxGetSelectedPos(w), False); -} /* XmComboBoxReplaceItems */ - -void XmComboBoxReplaceItemsPos(Widget w, XmString *new_items, int item_count, int position) -{ - int OldIndex = XmComboBoxGetSelectedPos(w); - - if ( CheckComboBox(w, "XmComboBoxReplaceItemsPos") ) return; - XmListReplaceItemsPos(ListBox, new_items, item_count, position); - if ( (OldIndex >= position) && (OldIndex < position + item_count) ) - UpdateComboBox(ComboBox, OldIndex, False); -} /* XmComboBoxReplaceItemsPos */ - -Boolean XmComboBoxItemExists(Widget w, XmString item) -{ - if ( CheckComboBox(w, "XmComboBoxItemExists") ) return False; - return XmListItemExists(ListBox, item); -} /* XmComboBoxItemExists */ - -int XmComboBoxItemPos(Widget w, XmString item) -{ - if ( CheckComboBox(w, "XmComboBoxItemPos") ) return 0; - return XmListItemPos(ListBox, item); -} /* XmComboBoxItemPos */ - -Boolean XmComboBoxGetMatchPos(Widget w, XmString item, int **pos_list, int *pos_count) -{ - if ( CheckComboBox(w, "XmComboBoxGetMatchPos") ) return False; - return XmListGetMatchPos(ListBox, item, pos_list, pos_count); -} /* XmComboBoxGetMatchPos */ - -/* !!! - * Sobald ein anderer Eintrag in der Listbox ausgewaehlt werden soll, - * muessen wir hier helfend eingreifen. - */ -void XmComboBoxSelectPos(Widget w, int pos, Boolean notify) -{ - int index; - - if ( CheckComboBox(w, "XmComboBoxSelectPos") ) return; - index = SetSelectionPos(ComboBox, pos, notify); - if ( index ) TransferToEditCtrl(ComboBox, index, False); -} /* XmComboBoxSelectPos */ - -/* !!! - * dto. analog zu XmComboBoxSelectPos, nur statt des Index wird der - * Eintragstext angegeben, um einen Eintrag in der Listbox zu - * markieren. - */ -void XmComboBoxSelectItem(Widget w, XmString item, Boolean notify) -{ - int index; - - if ( CheckComboBox(w, "XmComboBoxSelectItem") ) return; - XmListSelectItem(ListBox, item, notify); - index = SetSelectionPos(ComboBox, XmComboBoxGetSelectedPos(w), False); - if ( index ) TransferToEditCtrl(ComboBox, index, False); -} /* XmComboBoxSelectItem */ - -/* !!! - * Geaendert gegenueber dem ListBox-Pendant! Da in einer Combo-Box die - * Liste nur maximal einen ausgewaehlten Eintrag besitzt, macht die - * 'alte' Funktionalitaet von XmListGetSelectedPos ziemlich wenig Sinn. - * Die neue Routine liefert statt dessen direkt den Index des aus- - * gewaehlten Eintrages oder 0 zurueck. - */ -int XmComboBoxGetSelectedPos(Widget w) -{ - int *SelectionList, SelectionCount, SelectionIndex; - - if ( CheckComboBox(w, "XmComboBoxGetSelectedPos") ) return 0; - if ( XmListGetSelectedPos(ListBox, - &SelectionList, &SelectionCount) ) { - SelectionIndex = *SelectionList; - XtFree((char *)SelectionList); - } else SelectionIndex = 0; - return SelectionIndex; -} /* XmComboBoxGetSelectedPos */ - - - -void XmComboBoxClearSelection(Widget w, Time time) -{ - XmTextFieldClearSelection(EditBox, time); -} /* XmComboBoxClearSelection */ - -Boolean XmComboBoxCopy(Widget w, Time time) -{ - return XmTextFieldCopy(EditBox, time); -} /* XmComboBoxCopy */ - -Boolean XmComboBoxCut(Widget w, Time time) -{ - return XmTextFieldCut(EditBox, time); -} /* XmComboBoxCut */ - -XmTextPosition XmComboBoxGetInsertionPosition(Widget w) -{ - return XmTextFieldGetInsertionPosition(EditBox); -} /* XmComboBoxGetInsertionPosition */ - -XmTextPosition XmComboBoxGetLastPosition(Widget w) -{ - return XmTextFieldGetLastPosition(EditBox); -} /* XmComboBoxGetLastPosition */ - -int XmComboBoxGetMaxLength(Widget w) -{ - return XmTextFieldGetMaxLength(EditBox); -} /* XmComboBoxGetMaxLength */ - -char * XmComboBoxGetSelection(Widget w) -{ - return XmTextFieldGetSelection(EditBox); -} /* XmComboBoxGetSelection */ - -Boolean XmComboBoxGetSelectionPosition(Widget w, XmTextPosition *left, - XmTextPosition *right) -{ - return XmTextFieldGetSelectionPosition(EditBox, left, right); -} /* XmComboBoxGetSelectionPosition */ - -char * XmComboBoxGetString(Widget w) -{ - return XmTextFieldGetString(EditBox); -} /* XmComboBoxGetString */ - -void XmComboBoxInsert(Widget w, XmTextPosition position, char *value) -{ - XmTextFieldInsert(EditBox, position, value); -} /* XmComboBoxInsert */ - -Boolean XmComboBoxPaste(Widget w) -{ - return XmTextFieldPaste(EditBox); -} /* XmComboBoxPaste */ - -Boolean XmComboBoxRemove(Widget w) -{ - return XmTextFieldRemove(EditBox); -} /* XmComboBoxRemove */ - -void XmComboBoxReplace(Widget w, XmTextPosition from_pos, - XmTextPosition to_pos, char *value) -{ - XmTextFieldReplace(EditBox, from_pos, to_pos, value); -} /* XmComboBoxReplace */ - -void XmComboBoxSetAddMode(Widget w, Boolean state) -{ - XmTextFieldSetAddMode(EditBox, state); -} /* XmComboBoxSetAddMode */ - -void XmComboBoxSetHighlight(Widget w, XmTextPosition left, - XmTextPosition right, XmHighlightMode mode) -{ - XmTextFieldSetHighlight(EditBox, left, right, mode); -} /* XmComboBoxSetHighlight */ - -void XmComboBoxSetInsertionPosition(Widget w, XmTextPosition position) -{ - XmTextFieldSetInsertionPosition(EditBox, position); -} /* XmComboBoxSetInsertionPosition */ - -void XmComboBoxSetMaxLength(Widget w, int max_length) -{ - XmTextFieldSetMaxLength(EditBox, max_length); -} /* XmComboBoxSetMaxLength */ - -void XmComboBoxSetSelection(Widget w, XmTextPosition first, - XmTextPosition last, Time time) -{ - XmTextFieldSetSelection(EditBox, first, last, time); -} /* XmComboBoxSetSelection */ - -void XmComboBoxSetString(Widget w, char *value) -{ -/* Liebe OSF...ihr ^&*#%$*&)*(@$(*^(*&%# habt doch einen ziemlich gemeinen - * Fehler in XmTextFieldSetString() drin... wenn man einen leeren String - * (also "") angiebt, gibt's nur noch Aerger, wenn man spaeter wieder an - * den Inhalt des Eingabefeldes heranwill. - */ - if ( (value == NULL) || (*value == 0) ) - XtVaSetValues(w, XmNvalue, "", NULL); - else - XmTextFieldSetString(EditBox, value); -} /* XmComboBoxSetString */ - -void XmComboBoxShowPosition(Widget w, XmTextPosition position) -{ - XmTextFieldShowPosition(EditBox, position); -} /* XmComboBoxShowPosition */ - -/* - * Loescht einen evtl. noch ausgewaehlten Eintrag in einer Combo Box, - * wenn diese eine SelectionPolicy von XmSINGLE_SELECT hat. - */ -void XmComboBoxClearItemSelection(Widget w) -{ - int index; - - if ( CheckComboBox(w, "XmComboBoxClearItemSelection") ) return; - - /* - * Wenn bereits kein Eintrag markiert ist, dann loeschen wir nur noch - * eben das Eingabefeld. - */ - index = XmComboBoxGetSelectedPos(w); - if ( index == 0 ) { - XmComboBoxSetString(w, ""); - } else { - /* - * Ansonsten aktuellen Eintrag entsorgen (wie bei der Methode wipe-out) - */ - TransferToEditCtrl(ComboBox, 0, True); - CallSelectionCBL(ComboBox, NULL); - } -} /* XmComboBoxClearItemSelection */ - -/* Die Drop-Down-Liste ein oder ausklappen */ -void XmComboBoxShowList(Widget w) -{ - if ( CheckComboBox(w, "XmComboBoxShowList") ) return; - ShowHideDropDownList((XmComboBoxWidget) w, NULL, False); -} /* XmComboBoxShowList */ - -void XmComboBoxHideList(Widget w) -{ - if ( CheckComboBox(w, "XmComboBoxHideList") ) return; - ShowHideDropDownList((XmComboBoxWidget) w, NULL, True); -} /* XmComboBoxShowList */ - -/* - * Naja, ich komm' ja doch nicht um diese olle Funktion herum... - */ -Widget XmCreateComboBox(Widget parent, String name, ArgList arglist, - Cardinal argcount) -{ - return XtCreateWidget(name, xmComboBoxWidgetClass, parent, - arglist, argcount); -} /* XmCreateComboBox */ - -/* Ende von ComboBox.c */ diff --git a/src/motif/xmcombo/xmcombo.h b/src/motif/xmcombo/xmcombo.h deleted file mode 100644 index 3a7a10a447..0000000000 --- a/src/motif/xmcombo/xmcombo.h +++ /dev/null @@ -1,223 +0,0 @@ -/* - * ComboBox.h - Das schon lange schmerzlich vermisste Combo-Box- - * Widget -- nun endlich auf fuer Motif! - * - * Letzte Modifikation: 04.10.1995 Revisionsstand: 1.32a - * - * (c) 1993, 1994 Harald Albrecht - * Institut fuer Geometrie und Praktische Mathematik - * RWTH Aachen, Germany - * albrecht@igpm.rwth-aachen.de - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program (see the file COPYING for more details); - * if not, write to the Free Software Foundation, Inc., 675 Mass Ave, - * Cambridge, MA 02139, USA. - * - */ -#ifndef __ComboBoxWidget_h -#define __ComboBoxWidget_h - -#include - -#if defined(__cplusplus) || defined(c_plusplus) -extern "C" { -#endif - -#define XmNselectionCallback "selectionCallback" -#define XmCSelectionCallback "SelectionCallback" -#define XmNunselectionCallback "unselectionCallback" -#define XmCUnselectionCallback "UnselectionCallback" -#define XmNdropDownCallback "dropDownCallback" -#define XmCDropDownCallback "DropDownCallback" - -#define XmNdropDownCursor "dropDownCursor" -#define XmCDropDownCursor "DropDownCursor" - -/* ICH GLAUB' ES JA EINFACH NICHT! DIESE @#$!%^ BEI DER OSF HABEN - * DOCH TATSAECHLICH VERGESSEN, DASS DIE EINTRAEGE IN DER LISTBOX - * VIELLEICHT AUCH SORTIERT SEIN SOLLEN -- MUSS MAN DENN ALLES - * SELBST MACHEN?! - */ -#define XmNsorted "sorted" -#define XmCSorted "Sorted" -#define XmNsortingCallback "sortingCallback" -#define XmCSortingCallback "SortingCallback" - -#define XmNstaticList "staticList" -#define XmCStaticList "StaticList" - -#define XmNsquareArrow "squareArrow" -#define XmCSquareArrow "SquareArrow" -#define XmNarrowSpacingOn "arrowSpacingOn" -#define XmCArrowSpacingOn "ArrowSpacingOn" - -/* - * Wie verhaeltsich die Liste, wenn der Focus verloren geht, sobald - * der Mauszeiger aus dem Dialog herausbewegt wird? - */ -#define XmNpersistentDropDown "persistentDropDown" -#define XmCPersistentDropDown "PersistentDropDown" -#define XmNtwmHandlingOn "twmHandlingOn" -#define XmCTwmHandlingOn "TwmHandlingOn" -/* - * alles fuer das Label... - */ -#define XmNshowLabel "showLabel" -#define XmCShowLabel "ShowLabel" -#define XmNdropDownOffset "dropDownOffset" -#define XmCDropDownOffset "DropDownOffset" - -#define XmNlabelMarginBottom "labelMarginBottom" -#define XmCLabelMarginBottom "LabelMarginBottom" -#define XmNlabelMarginHeight "labelMarginHeight" -#define XmCLabelMarginHeight "LabelMarginHeight" -#define XmNlabelMarginLeft "labelMarginLeft" -#define XmCLabelMarginLeft "LabelMarginLeft" -#define XmNlabelMarginRight "labelMarginRight" -#define XmCLabelMarginRight "LabelMarginRight" -#define XmNlabelMarginTop "labelMarginTop" -#define XmCLabelMarginTop "LabelMarginTop" -#define XmNlabelMarginWidth "labelMarginWidth" -#define XmCLabelMarginWidth "LabelMarginWidth" - -/* Callback reasons: (part. predefined) - * - * XmCR_SINGLE_SELECT user selected item in the list - */ - -typedef struct { - int reason; /* Grund */ - XEvent *event; /* Ausloesender Event */ - XmString value; /* Ausgewaehlter Eintrag */ - int index; /* Index dieses Eintrages */ -} XmComboBoxSelectionCallbackStruct,XmComboBoxDefaultActionCallbackStruct; - -typedef struct { - int reason; - XEvent *event; - Boolean doit; - Position currInsert, newInsert; - Position startPos, endPos; - XmTextBlock text; -} XmComboBoxTextVerifyCallbackStruct, *XmComboBoxTextVerifyPtr; - -/* Callback reasons: new - * - * XmCR_SHOW_LIST list is dropping down - * XmCR_HIDE_LIST list is getting hidden - * - * XmCR_UNSELECT unselecting item from list or osfDelete - */ -#define XmCR_SHOW_LIST 4200 /* ten times "42", that should */ -#define XmCR_HIDE_LIST 4201 /* explain everything of live... */ -#define XmCR_UNSELECT 4202 -typedef struct { - int reason; /* Grund */ - XEvent *event; /* Ausloesender Event */ -} XmComboBoxDropDownCallbackStruct, XmComboBoxUnselectionCallbackStruct; - -#define XmCR_SORTING 4203 -#define XmOP_INIT 1 -#define XmOP_DONE 2 -#define XmOP_COMPARE 3 -typedef struct { - int reason; - XEvent *event; /* IMMER NULL!! */ - int operation; - void *item_internal; - XmString item; - int result; -} XmComboBoxSortingCallbackStruct, *XmComboBoxSortingPtr; - -/* Alle Funktionen, um auf die Liste der Combo-Box zuzugreifen. - * Bitte immer diese Funktionen dazu benutzen und nicht direkt - * auf das entsprechende Widget in der Combo-Box zugreifen! - * Aus diesem Grunde sind auch nicht alle Funktionen einer Listbox - * verfuegbar, da sich einige Funktionen mit der Verwaltung der - * Combo-Box beissen wuerden. - */ -extern void XmComboBoxAddItem(Widget w, XmString item, int pos); -extern void XmComboBoxAddItems(Widget w, XmString *items, int item_count, int pos); -extern void XmComboBoxAddItemUnselected(Widget w, XmString item, int pos); -extern void XmComboBoxDeleteItem(Widget w, XmString item); -extern void XmComboBoxDeleteItems(Widget w, XmString *items, int item_count); -extern void XmComboBoxDeletePos(Widget w, int pos); -extern void XmComboBoxDeleteItemsPos(Widget w, int item_count, int pos); -extern void XmComboBoxDeleteAllItems(Widget w); -extern void XmComboBoxReplaceItems(Widget w, XmString *old_items, int item_count, XmString *new_items); -extern void XmComboBoxReplaceItemsPos(Widget w, XmString *new_items, int item_count, int position); -extern Boolean XmComboBoxItemExists(Widget w, XmString item); -extern int XmComboBoxItemPos(Widget w, XmString item); -extern Boolean XmComboBoxGetMatchPos(Widget w, XmString item, int **pos_list, int *pos_count); -extern void XmComboBoxSelectPos(Widget w, int pos, Boolean notify); -extern void XmComboBoxSelectItem(Widget w, XmString item, Boolean notify); -/* Etwas anders als bei der Listbox, da es sowieso nur einen ausge- - * waehlten Eintrag in der Listbox geben kann! - * Liefert Index des ausgewaehlten Eintrages oder 0. - */ -extern int XmComboBoxGetSelectedPos(Widget w); -extern void XmComboBoxClearItemSelection(Widget w); -/* - * Nun alle Funktionen, die auf das Eingabefeld zugreifen... - * Auch hier gilt wieder, es gibt 'was auf die Finger, wenn jemand - * versucht, direkt auf das Eingabefeld direkt zuzugreifen! - */ -extern void XmComboBoxClearSelection(Widget w, Time time); -extern Boolean XmComboBoxCopy(Widget w, Time time); -extern Boolean XmComboBoxCut(Widget w, Time time); -extern XmTextPosition XmComboBoxGetInsertionPosition(Widget w); -extern XmTextPosition XmComboBoxGetLastPosition(Widget w); -extern int XmComboBoxGetMaxLength(Widget w); -extern char * XmComboBoxGetSelection(Widget w); -extern Boolean XmComboBoxGetSelectionPosition(Widget w, XmTextPosition *left, - XmTextPosition *right); -extern char * XmComboBoxGetString(Widget w); -extern void XmComboBoxInsert(Widget w, XmTextPosition position, char *value); -extern Boolean XmComboBoxPaste(Widget w); -extern Boolean XmComboBoxRemove(Widget w); -extern void XmComboBoxReplace(Widget w, XmTextPosition from_pos, - XmTextPosition to_pos, char *value); -extern void XmComboBoxSetAddMode(Widget w, Boolean state); -extern void XmComboBoxSetHighlight(Widget w, XmTextPosition left, - XmTextPosition right, XmHighlightMode mode); -extern void XmComboBoxSetInsertionPosition(Widget w, XmTextPosition position); -extern void XmComboBoxSetMaxLength(Widget w, int max_length); -extern void XmComboBoxSetSelection(Widget w, XmTextPosition first, - XmTextPosition last, Time time); -extern void XmComboBoxSetString(Widget w, char *value); -extern void XmComboBoxShowPosition(Widget w, XmTextPosition position); - -extern WidgetClass xmComboBoxWidgetClass; /* Die Klasse hoechstselbst */ - -#ifndef XmIsComboBox -#define XmIsComboBox(w) XtIsSubclass(w, xmComboBoxWidgetClass) -#endif /* XmIsComboBox */ - -typedef struct _XmComboBoxClassRec *XmComboBoxWidgetClass; -typedef struct _XmComboBoxRec *XmComboBoxWidget; - -extern Widget XmCreateComboBox(Widget parent, String name, ArgList arglist, - Cardinal argcount); - -/* PLEASE do not use this functions if you really not need to do so !!! */ -extern Widget XmComboBoxGetEditWidget(Widget w); -extern Widget XmComboBoxGetListWidget(Widget w); -extern Widget XmComboBoxGetLabelWidget(Widget w); - -#if defined(__cplusplus) || defined(c_plusplus) -} -#endif - -#endif /* __ComboBoxWidget_h */ -/* Ende von ComboBox.h */ diff --git a/src/msw/accel.cpp b/src/msw/accel.cpp deleted file mode 100644 index 0cc095c666..0000000000 --- a/src/msw/accel.cpp +++ /dev/null @@ -1,160 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: accel.cpp -// Purpose: wxAcceleratorTable -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "accel.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include -#include "wx/setup.h" -#include "wx/window.h" -#endif - -#include "wx/msw/accel.h" - -#include "wx/msw/private.h" - -#ifdef LoadAccelerators -#undef LoadAccelerators -#endif - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxAcceleratorTable, wxObject) -#endif - -class WXDLLEXPORT wxAcceleratorRefData: public wxObjectRefData -{ - friend class WXDLLEXPORT wxAcceleratorTable; -public: - wxAcceleratorRefData(void); - ~wxAcceleratorRefData(void); - - inline HACCEL GetHACCEL() const { return m_hAccel; } -protected: - HACCEL m_hAccel; - bool m_ok; -}; - -#define M_ACCELDATA ((wxAcceleratorRefData *)m_refData) - -wxAcceleratorRefData::wxAcceleratorRefData() -{ - m_ok = FALSE; - m_hAccel = 0; -} - -wxAcceleratorRefData::~wxAcceleratorRefData() -{ - if (m_hAccel) - { - // This function not available in WIN16 -#if !defined(__WIN16__) && !defined(__TWIN32__) - DestroyAcceleratorTable((HACCEL) m_hAccel); -#endif - } - m_hAccel = 0 ; -} - -wxAcceleratorTable::wxAcceleratorTable() -{ - m_refData = NULL; -} - -wxAcceleratorTable::~wxAcceleratorTable() -{ -} - -// Load from .rc resource -wxAcceleratorTable::wxAcceleratorTable(const wxString& resource) -{ - m_refData = new wxAcceleratorRefData; - - HACCEL hAccel = -#if defined(__WIN32__) && !defined(__TWIN32__) -#ifdef UNICODE - ::LoadAcceleratorsW(wxGetInstance(), (const char *)resource); -#else - ::LoadAcceleratorsA(wxGetInstance(), (const char *)resource); -#endif -#else - ::LoadAccelerators(wxGetInstance(), (const char *)resource); -#endif - M_ACCELDATA->m_hAccel = hAccel; - M_ACCELDATA->m_ok = (hAccel != 0); -} - -extern int wxCharCodeWXToMSW(int id, bool *isVirtual); - -// Create from an array -wxAcceleratorTable::wxAcceleratorTable(int n, const wxAcceleratorEntry entries[]) -{ - // Not available in WIN16 -#if !defined(__WIN16__) && !defined(__TWIN32__) - m_refData = new wxAcceleratorRefData; - - ACCEL* arr = new ACCEL[n]; - int i; - for (i = 0; i < n; i++) - { - BYTE fVirt = 0; - if (entries[i].m_flags & wxACCEL_ALT) - fVirt |= FALT; - if (entries[i].m_flags & wxACCEL_SHIFT) - fVirt |= FSHIFT; - if (entries[i].m_flags & wxACCEL_CTRL) - fVirt |= FCONTROL; - - bool isVirtual; - WORD key = wxCharCodeWXToMSW(entries[i].m_keyCode, & isVirtual); - fVirt |= FVIRTKEY; - - WORD cmd = entries[i].m_command; - - arr[i].fVirt = fVirt; - arr[i].key = key; - arr[i].cmd = cmd; - } - - M_ACCELDATA->m_hAccel = ::CreateAcceleratorTable(arr, n); - delete[] arr; - - M_ACCELDATA->m_ok = (M_ACCELDATA->m_hAccel != 0); -#endif -} - -bool wxAcceleratorTable::Ok(void) const -{ - return (M_ACCELDATA && (M_ACCELDATA->m_ok)); -} - -void wxAcceleratorTable::SetHACCEL(WXHACCEL hAccel) -{ - if (!M_ACCELDATA) - m_refData = new wxAcceleratorRefData; - - M_ACCELDATA->m_hAccel = (HACCEL) hAccel; -} - -WXHACCEL wxAcceleratorTable::GetHACCEL() const -{ - if (!M_ACCELDATA) - return 0; - return (WXHACCEL) M_ACCELDATA->m_hAccel; -} - diff --git a/src/msw/app.cpp b/src/msw/app.cpp deleted file mode 100644 index de98ccfba2..0000000000 --- a/src/msw/app.cpp +++ /dev/null @@ -1,1157 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: app.cpp -// Purpose: wxApp -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "app.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#if defined(__BORLANDC__) -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP - #include "wx/frame.h" - #include "wx/app.h" - #include "wx/utils.h" - #include "wx/gdicmn.h" - #include "wx/pen.h" - #include "wx/brush.h" - #include "wx/cursor.h" - #include "wx/icon.h" - #include "wx/palette.h" - #include "wx/dc.h" - #include "wx/dialog.h" - #include "wx/msgdlg.h" - #include "wx/intl.h" - #include "wx/dynarray.h" -#endif - -#include "wx/msw/private.h" -#include "wx/log.h" -#include "wx/module.h" - -#if wxUSE_THREADS - #include "wx/thread.h" - - // define the array of MSG strutures - WX_DECLARE_OBJARRAY(MSG, wxMsgArray); - - #include "wx/arrimpl.cpp" - - WX_DEFINE_OBJARRAY(wxMsgArray); -#endif // wxUSE_THREADS - -#if wxUSE_WX_RESOURCES - #include "wx/resource.h" -#endif - -// To UG: there's no point in putting this #if here -// if you don't do the same for the Ole calls further down. -// Also, OLE is used not just for drag and drop (it's used by automatn.cpp). -// #if wxUSE_DRAG_AND_DROP -#if !defined(__GNUWIN32__) && !defined(__SC__) && !defined(__SALFORDC__) -#include -#endif - -// #endif - -#include -#include - -#if (defined(__WIN95__) && !defined(__GNUWIN32__)) || defined(__TWIN32__) - #include -#endif - -// use debug CRT functions for memory leak detections in VC++ if we're not -// using wxWindows own methods -#if defined(__WXDEBUG__) && defined(_MSC_VER) && !wxUSE_GLOBAL_MEMORY_OPERATORS && !defined(__NO_VC_CRTDBG__) - #define wxUSE_VC_CRTDBG -#else - #undef wxUSE_VC_CRTDBG -#endif - -#ifdef wxUSE_VC_CRTDBG - // VC++ uses this macro as debug/release mode indicator - #ifndef _DEBUG - #define _DEBUG - #endif - - /* Need to undef new if including crtdbg.h */ - #ifdef new - #undef new - #endif - - #include - - #if defined(__WXDEBUG__) && wxUSE_GLOBAL_MEMORY_OPERATORS && wxUSE_DEBUG_NEW_ALWAYS - #define new new(__FILE__,__LINE__) - #endif -#endif // wxUSE_VC_CRTDBG - -extern char *wxBuffer; -extern char *wxOsVersion; -extern wxList *wxWinHandleList; -extern wxList WXDLLEXPORT wxPendingDelete; -extern void wxSetKeyboardHook(bool doIt); -extern wxCursor *g_globalCursor; - -HINSTANCE wxhInstance = 0; -static MSG s_currentMsg; -wxApp *wxTheApp = NULL; - -// @@ why not const? and not static? -char wxFrameClassName[] = "wxFrameClass"; -char wxMDIFrameClassName[] = "wxMDIFrameClass"; -char wxMDIChildFrameClassName[] = "wxMDIChildFrameClass"; -char wxPanelClassName[] = "wxPanelClass"; -char wxCanvasClassName[] = "wxCanvasClass"; - -HICON wxSTD_FRAME_ICON = (HICON) NULL; -HICON wxSTD_MDICHILDFRAME_ICON = (HICON) NULL; -HICON wxSTD_MDIPARENTFRAME_ICON = (HICON) NULL; - -HICON wxDEFAULT_FRAME_ICON = (HICON) NULL; -HICON wxDEFAULT_MDICHILDFRAME_ICON = (HICON) NULL; -HICON wxDEFAULT_MDIPARENTFRAME_ICON = (HICON) NULL; - -HBRUSH wxDisableButtonBrush = (HBRUSH) 0; - -LRESULT APIENTRY wxWndProc(HWND, UINT, WPARAM, LPARAM); - -#if !USE_SHARED_LIBRARY - IMPLEMENT_DYNAMIC_CLASS(wxApp, wxEvtHandler) - - BEGIN_EVENT_TABLE(wxApp, wxEvtHandler) - EVT_IDLE(wxApp::OnIdle) - EVT_END_SESSION(wxApp::OnEndSession) - EVT_QUERY_END_SESSION(wxApp::OnQueryEndSession) - END_EVENT_TABLE() -#endif - -long wxApp::sm_lastMessageTime = 0; - -#if defined(__WIN95__) && !defined(__TWIN32__) -#define wxUSE_RICHEDIT 1 -#else -#define wxUSE_RICHEDIT 0 -#endif - -#if wxUSE_RICHEDIT - static HINSTANCE gs_hRichEdit = (HINSTANCE) NULL; -#endif - -//// Initialize - -bool wxApp::Initialize() -{ - // Some people may wish to use this, but - // probably it shouldn't be here by default. -#ifdef __WXDEBUG__ -// wxRedirectIOToConsole(); -#endif - - wxBuffer = new char[1500]; - -#ifdef wxUSE_VC_CRTDBG - // do check for memory leaks on program exit - // (another useful flag is _CRTDBG_DELAY_FREE_MEM_DF which doesn't free - // deallocated memory which may be used to simulate low-memory condition) - _CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF); -#endif // debug build under MS VC++ - - wxClassInfo::InitializeClasses(); - -#if wxUSE_RESOURCES - wxGetResource("wxWindows", "OsVersion", &wxOsVersion); -#endif - - wxTheColourDatabase = new wxColourDatabase(wxKEY_STRING); - wxTheColourDatabase->Initialize(); - - wxInitializeStockLists(); - wxInitializeStockObjects(); - -#if wxUSE_WX_RESOURCES - wxInitializeResourceSystem(); -#endif - - wxBitmap::InitStandardHandlers(); - -#if defined(__WIN95__) - InitCommonControls(); - -#if wxUSE_RICHEDIT - gs_hRichEdit = LoadLibrary("RICHED32.DLL"); - - if (gs_hRichEdit == (HINSTANCE) NULL) - { - wxMessageBox("Could not initialise Rich Edit DLL"); - } -#endif - -#endif - - int iMsg = 96; - - // for OLE, enlarge message queue to be as large as possible - while (!SetMessageQueue(iMsg) && (iMsg -= 8)); - -/* - DWORD dwOleVer; - dwOleVer = CoBuildVersion(); - - // check the OLE library version - if (rmm != HIWORD(dwOleVer)) - { - wxMessageBox("Incorrect version of OLE libraries."); - return FALSE; - } -*/ - -#if !defined(__GNUWIN32__) && !defined(__SC__) && !defined(__SALFORDC__) - // we need to initialize OLE library - if ( FAILED(::OleInitialize(NULL)) ) - wxFatalError(_("Cannot initialize OLE")); -#endif - -#if CTL3D - if (!Ctl3dRegister(wxhInstance)) - wxFatalError("Cannot register CTL3D"); - - Ctl3dAutoSubclass(wxhInstance); -#endif - - g_globalCursor = new wxCursor; - - wxSTD_FRAME_ICON = LoadIcon(wxhInstance, "wxSTD_FRAME"); - wxSTD_MDIPARENTFRAME_ICON = LoadIcon(wxhInstance, "wxSTD_MDIPARENTFRAME"); - wxSTD_MDICHILDFRAME_ICON = LoadIcon(wxhInstance, "wxSTD_MDICHILDFRAME"); - - wxDEFAULT_FRAME_ICON = LoadIcon(wxhInstance, "wxDEFAULT_FRAME"); - wxDEFAULT_MDIPARENTFRAME_ICON = LoadIcon(wxhInstance, "wxDEFAULT_MDIPARENTFRAME"); - wxDEFAULT_MDICHILDFRAME_ICON = LoadIcon(wxhInstance, "wxDEFAULT_MDICHILDFRAME"); - - RegisterWindowClasses(); - - // Create the brush for disabling bitmap buttons - - LOGBRUSH lb ; - lb.lbStyle = BS_PATTERN; - lb.lbHatch = (int)LoadBitmap( wxhInstance, "wxDISABLE_BUTTON_BITMAP" ) ; - wxDisableButtonBrush = ::CreateBrushIndirect( & lb ) ; - ::DeleteObject( (HGDIOBJ)lb.lbHatch ) ; - -#if wxUSE_PENWINDOWS - wxRegisterPenWin(); -#endif - - wxWinHandleList = new wxList(wxKEY_INTEGER); - - // This is to foil optimizations in Visual C++ that - // throw out dummy.obj. - // PLEASE DO NOT ALTER THIS. -#if defined(_MSC_VER) && !defined(WXMAKINGDLL) - extern char wxDummyChar; - if (wxDummyChar) wxDummyChar++; -#endif - - wxSetKeyboardHook(TRUE); - - wxModule::RegisterModules(); - if (!wxModule::InitializeModules()) - return FALSE; - return TRUE; -} - -//// RegisterWindowClasses - -bool wxApp::RegisterWindowClasses() -{ -/////////////////////////////////////////////////////////////////////// -// Register the frame window class. - WNDCLASS wndclass; // Structure used to register Windows class. - - wndclass.style = CS_HREDRAW | CS_VREDRAW; - wndclass.lpfnWndProc = (WNDPROC)wxWndProc; - wndclass.cbClsExtra = 0; - wndclass.cbWndExtra = sizeof( DWORD ); // was 4 - wndclass.hInstance = wxhInstance; - wndclass.hIcon = (HICON) NULL; // wxSTD_FRAME_ICON; - wndclass.hCursor = LoadCursor( (HINSTANCE) NULL, IDC_ARROW ); - wndclass.hbrBackground = (HBRUSH)(COLOR_APPWORKSPACE+1) ; -// wndclass.hbrBackground = GetStockObject( WHITE_BRUSH ); - wndclass.lpszMenuName = NULL; -#ifdef _MULTIPLE_INSTANCES - sprintf( wxFrameClassName,"wxFrameClass%d", wxhInstance ); -#endif - wndclass.lpszClassName = wxFrameClassName; - - if (!RegisterClass( &wndclass )) - { - // wxFatalError("Can't register Frame Window class"); - } - -/////////////////////////////////////////////////////////////////////// -// Register the MDI frame window class. - WNDCLASS wndclass1; // Structure used to register Windows class. - - wndclass1.style = CS_HREDRAW | CS_VREDRAW; - wndclass1.lpfnWndProc = (WNDPROC)wxWndProc; - wndclass1.cbClsExtra = 0; - wndclass1.cbWndExtra = sizeof( DWORD ); // was 4 - wndclass1.hInstance = wxhInstance; - wndclass1.hIcon = (HICON) NULL; // wxSTD_MDIPARENTFRAME_ICON; - wndclass1.hCursor = LoadCursor( (HINSTANCE) NULL, IDC_ARROW ); -// wndclass1.hbrBackground = (HBRUSH)(COLOR_APPWORKSPACE+1) ; - wndclass1.hbrBackground = (HBRUSH) NULL; - wndclass1.lpszMenuName = NULL; - - wndclass1.lpszClassName = wxMDIFrameClassName; - if (!RegisterClass( &wndclass1 )) - { -// wxFatalError("Can't register MDI Frame window class"); -// return FALSE; - } - -/////////////////////////////////////////////////////////////////////// -// Register the MDI child frame window class. - WNDCLASS wndclass4; // Structure used to register Windows class. - - wndclass4.style = CS_HREDRAW | CS_VREDRAW; - wndclass4.lpfnWndProc = (WNDPROC)wxWndProc; - wndclass4.cbClsExtra = 0; - wndclass4.cbWndExtra = sizeof( DWORD ); // was 4 - wndclass4.hInstance = wxhInstance; - wndclass4.hIcon = (HICON) NULL; // wxSTD_MDICHILDFRAME_ICON; - wndclass4.hCursor = LoadCursor( (HINSTANCE) NULL, IDC_ARROW ); - // TODO: perhaps this should be NULL so that Windows doesn't - // paint the background itself (would OnEraseBackground duplicate - // this?) - wndclass4.hbrBackground = (HBRUSH)(COLOR_WINDOW+1) ; -// wndclass4.hbrBackground = NULL; - wndclass4.lpszMenuName = NULL; - wndclass4.lpszClassName = wxMDIChildFrameClassName; - - if (!RegisterClass( &wndclass4 )) - { -// wxFatalError("Can't register MDI child frame window class"); -// return FALSE; - } - -/////////////////////////////////////////////////////////////////////// -// Register the panel window class. - WNDCLASS wndclass2; // Structure used to register Windows class. - memset(&wndclass2, 0, sizeof(WNDCLASS)); // start with NULL defaults - // Use CS_OWNDC to avoid messing about restoring the context - // for every graphic operation. - wndclass2.style = CS_HREDRAW | CS_VREDRAW; - wndclass2.lpfnWndProc = (WNDPROC)wxWndProc; - wndclass2.cbClsExtra = 0; - wndclass2.cbWndExtra = sizeof( DWORD ); // was 4 - wndclass2.hInstance = wxhInstance; - wndclass2.hIcon = (HICON) NULL; - wndclass2.hCursor = (HCURSOR) NULL; -// wndclass2.hbrBackground = (HBRUSH)(COLOR_BTNFACE+1) ; - wndclass2.hbrBackground = (HBRUSH) GetStockObject( LTGRAY_BRUSH ); - wndclass2.lpszMenuName = NULL; - wndclass2.lpszClassName = wxPanelClassName; - if (!RegisterClass( &wndclass2 )) - { -// wxFatalError("Can't register Panel Window class"); -// return FALSE; - } - -/////////////////////////////////////////////////////////////////////// -// Register the canvas and textsubwindow class name - WNDCLASS wndclass3; // Structure used to register Windows class. - memset(&wndclass3, 0, sizeof(WNDCLASS)); // start with NULL defaults - // Use CS_OWNDC to avoid messing about restoring the context - // for every graphic operation. -// wndclass3.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC | CS_DBLCLKS ; - // wxWin 2.0 - wndclass3.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS ; - wndclass3.lpfnWndProc = (WNDPROC)wxWndProc; - wndclass3.cbClsExtra = 0; - wndclass3.cbWndExtra = sizeof( DWORD ); // was 4 - wndclass3.hInstance = wxhInstance; - wndclass3.hIcon = (HICON) NULL; - wndclass3.hCursor = (HCURSOR) NULL; -// wndclass3.hbrBackground = (HBRUSH)(COLOR_WINDOW+1) ; - wndclass3.hbrBackground = (HBRUSH) NULL; - wndclass3.lpszMenuName = NULL; - wndclass3.lpszClassName = wxCanvasClassName; - if (!RegisterClass( &wndclass3)) - { -// wxFatalError("Can't register Canvas class"); -// return FALSE; - } - - return TRUE; -} - -//// Convert Windows to argc, argv style - -void wxApp::ConvertToStandardCommandArgs(char* lpCmdLine) -{ - wxStringList args; - - wxString cmdLine(lpCmdLine); - int count = 0; - - // Get application name - char name[260]; // 260 is MAX_PATH value from windef.h - ::GetModuleFileName(wxhInstance, name, WXSIZEOF(name)); - - // GNUWIN32 already fills in the first arg with the application name. -#if !defined(__GNUWIN32__) - args.Add(name); - count ++; -#endif - - strcpy(name, wxFileNameFromPath(name)); - wxStripExtension(name); - wxTheApp->SetAppName(name); - - // Break up string - // Treat strings enclosed in double-quotes as single arguments - int i = 0; - int len = cmdLine.Length(); - while (i < len) - { - // Skip whitespace - while ((i < len) && isspace(cmdLine.GetChar(i))) - i ++; - - if (i < len) - { - if (cmdLine.GetChar(i) == '"') // We found the start of a string - { - i ++; - int first = i; - while ((i < len) && (cmdLine.GetChar(i) != '"')) - i ++; - - wxString arg(cmdLine.Mid(first, (i - first))); - - args.Add(arg); - count ++; - - if (i < len) - i ++; // Skip past 2nd quote - } - else // Unquoted argument - { - int first = i; - while ((i < len) && !isspace(cmdLine.GetChar(i))) - i ++; - - wxString arg(cmdLine.Mid(first, (i - first))); - - args.Add(arg); - count ++; - } - } - } - - wxTheApp->argv = new char*[count + 1]; - for (i = 0; i < count; i++) - { - wxString arg(args[i]); - wxTheApp->argv[i] = copystring((const char*)arg); - } - wxTheApp->argv[count] = NULL; // argv[] is a NULL-terminated list - wxTheApp->argc = count; -} - -//// Cleans up any wxWindows internal structures left lying around - -void wxApp::CleanUp() -{ - //// COMMON CLEANUP - wxModule::CleanUpModules(); - -#if wxUSE_WX_RESOURCES - wxCleanUpResourceSystem(); - -// wxDefaultResourceTable->ClearTable(); -#endif - - // Indicate that the cursor can be freed, - // so that cursor won't be deleted by deleting - // the bitmap list before g_globalCursor goes out - // of scope (double deletion of the cursor). - wxSetCursor(wxNullCursor); - delete g_globalCursor; - - wxDeleteStockObjects() ; - - // Destroy all GDI lists, etc. - wxDeleteStockLists(); - - delete wxTheColourDatabase; - wxTheColourDatabase = NULL; - - wxBitmap::CleanUpHandlers(); - - delete[] wxBuffer; - wxBuffer = NULL; - - //// WINDOWS-SPECIFIC CLEANUP - - wxSetKeyboardHook(FALSE); - -#ifdef __WIN95__ - -#if wxUSE_RICHEDIT - if (gs_hRichEdit != (HINSTANCE) NULL) - FreeLibrary(gs_hRichEdit); -#endif - -#endif - -#if wxUSE_PENWINDOWS - wxCleanUpPenWin(); -#endif - - if (wxSTD_FRAME_ICON) - DestroyIcon(wxSTD_FRAME_ICON); - if (wxSTD_MDICHILDFRAME_ICON) - DestroyIcon(wxSTD_MDICHILDFRAME_ICON); - if (wxSTD_MDIPARENTFRAME_ICON) - DestroyIcon(wxSTD_MDIPARENTFRAME_ICON); - - if (wxDEFAULT_FRAME_ICON) - DestroyIcon(wxDEFAULT_FRAME_ICON); - if (wxDEFAULT_MDICHILDFRAME_ICON) - DestroyIcon(wxDEFAULT_MDICHILDFRAME_ICON); - if (wxDEFAULT_MDIPARENTFRAME_ICON) - DestroyIcon(wxDEFAULT_MDIPARENTFRAME_ICON); - - if ( wxDisableButtonBrush ) - ::DeleteObject( wxDisableButtonBrush ) ; - -#if !defined(__GNUWIN32__) && !defined(__SC__) && !defined(__SALFORDC__) - ::OleUninitialize(); -#endif - -#if CTL3D - Ctl3dUnregister(wxhInstance); -#endif - - if (wxWinHandleList) - delete wxWinHandleList ; - - wxClassInfo::CleanUpClasses(); - - delete wxTheApp; - wxTheApp = NULL; - -#if (defined(__WXDEBUG__) && wxUSE_MEMORY_TRACING) || wxUSE_DEBUG_CONTEXT - // At this point we want to check if there are any memory - // blocks that aren't part of the wxDebugContext itself, - // as a special case. Then when dumping we need to ignore - // wxDebugContext, too. - if (wxDebugContext::CountObjectsLeft() > 0) - { - wxLogDebug("There were memory leaks."); - wxDebugContext::Dump(); - wxDebugContext::PrintStatistics(); - } -// wxDebugContext::SetStream(NULL, NULL); -#endif - - // do it as the very last thing because everything else can log messages - wxLog::DontCreateOnDemand(); - delete wxLog::SetActiveTarget(NULL); -} - -#if !defined(_WINDLL) || (defined(_WINDLL) && defined(WXMAKINGDLL)) - -// temporarily disable this warning -#ifdef _MSC_VER - #pragma warning(disable: 4715) // not all control paths return a value -#endif // Visual C++ - -//// Main wxWindows entry point -int wxEntry(WXHINSTANCE hInstance, - WXHINSTANCE WXUNUSED(hPrevInstance), - char *lpCmdLine, - int nCmdShow, - bool enterLoop) -{ - // take everything into a try-except block in release build - // FIXME other compilers must support Win32 SEH (structured exception - // handling) too, just find the appropriate keyword in their docs! - // Please note that it's _not_ the same as C++ exceptions! -#if !defined(__WXDEBUG__) && defined(_MSC_VER) - #define CATCH_PROGRAM_EXCEPTIONS - - __try { -#else - #undef CATCH_PROGRAM_EXCEPTIONS -#endif - - wxhInstance = (HINSTANCE) hInstance; - - if (!wxApp::Initialize()) - return 0; - - // create the application object or ensure that one already exists - if (!wxTheApp) - { - // The app may have declared a global application object, but we recommend - // the IMPLEMENT_APP macro is used instead, which sets an initializer - // function for delayed, dynamic app object construction. - wxCHECK_MSG( wxApp::GetInitializerFunction(), 0, - "No initializer - use IMPLEMENT_APP macro." ); - - wxTheApp = (*wxApp::GetInitializerFunction()) (); - } - - wxCHECK_MSG( wxTheApp, 0, "You have to define an instance of wxApp!" ); - - // save the WinMain() parameters - wxTheApp->ConvertToStandardCommandArgs(lpCmdLine); - wxTheApp->m_nCmdShow = nCmdShow; - - // GUI-specific initialisation. In fact on Windows we don't have any, - // but this call is provided for compatibility across platforms. - wxTheApp->OnInitGui() ; - - int retValue = 0; - - if ( wxTheApp->OnInit() ) - { - if ( enterLoop ) - { - retValue = wxTheApp->OnRun(); - } - } - //else: app initialization failed, so we skipped OnRun() - - wxWindow *topWindow = wxTheApp->GetTopWindow(); - if ( topWindow ) - { - // Forcibly delete the window. - if ( topWindow->IsKindOf(CLASSINFO(wxFrame)) || - topWindow->IsKindOf(CLASSINFO(wxDialog)) ) - { - topWindow->Close(TRUE); - wxTheApp->DeletePendingObjects(); - } - else - { - delete topWindow; - wxTheApp->SetTopWindow(NULL); - } - } - - wxTheApp->OnExit(); - - // flush the logged messages if any - wxLog *pLog = wxLog::GetActiveTarget(); - if ( pLog != NULL && pLog->HasPendingMessages() ) - pLog->Flush(); - - - wxApp::CleanUp(); - - return retValue; - -#ifdef CATCH_PROGRAM_EXCEPTIONS - } - __except ( EXCEPTION_EXECUTE_HANDLER ) { - /* - if ( wxTheApp ) - wxTheApp->OnFatalException(); - */ - - ::ExitProcess(3); // the same exit code as abort() - - // NOTREACHED - } -#endif // CATCH_PROGRAM_EXCEPTIONS -} - -// restore warning state -#ifdef _MSC_VER - #pragma warning(default: 4715) // not all control paths return a value -#endif // Visual C++ - -#else /* _WINDLL */ - -//// Entry point for DLLs - -int wxEntry(WXHINSTANCE hInstance) -{ - wxhInstance = (HINSTANCE) hInstance; - wxApp::Initialize(); - - // The app may have declared a global application object, but we recommend - // the IMPLEMENT_APP macro is used instead, which sets an initializer function - // for delayed, dynamic app object construction. - - if (!wxTheApp) - { - if (!wxApp::GetInitializerFunction()) - { - MessageBox(NULL, "No initializer - use IMPLEMENT_APP macro.", "wxWindows Error", MB_APPLMODAL | MB_ICONSTOP | MB_OK); - return 0; - } - - wxTheApp = (* wxApp::GetInitializerFunction()) (); - } - - if (!wxTheApp) { - MessageBox(NULL, "You have to define an instance of wxApp!", "wxWindows Error", MB_APPLMODAL | MB_ICONSTOP | MB_OK); - return 0; - } - - wxTheApp->argc = 0; - wxTheApp->argv = NULL; - - wxTheApp->OnInitGui(); - - wxTheApp->OnInit(); - - if (wxTheApp->GetTopWindow() && wxTheApp->GetTopWindow()->GetHWND()) { - wxTheApp->GetTopWindow()->Show(TRUE); - } - - return 1; -} -#endif // _WINDLL - -//// Static member initialization - -wxAppInitializerFunction wxApp::m_appInitFn = (wxAppInitializerFunction) NULL; - -wxApp::wxApp() -{ - m_topWindow = NULL; - wxTheApp = this; - m_className = ""; - m_wantDebugOutput = TRUE ; - m_appName = ""; - argc = 0; - argv = NULL; -#ifdef __WXMSW__ - m_printMode = wxPRINT_WINDOWS; -#else - m_printMode = wxPRINT_POSTSCRIPT; -#endif - m_exitOnFrameDelete = TRUE; - m_auto3D = TRUE; -} - -wxApp::~wxApp() -{ - // Delete command-line args - int i; - for (i = 0; i < argc; i++) - { - delete[] argv[i]; - } - delete[] argv; -} - -bool wxApp::Initialized() -{ -#ifndef _WINDLL - if (GetTopWindow()) - return TRUE; - else - return FALSE; -#endif -#ifdef _WINDLL // Assume initialized if DLL (no way of telling) - return TRUE; -#endif -} - -/* - * Get and process a message, returning FALSE if WM_QUIT - * received (and also set the flag telling the app to exit the main loop) - * - */ -bool wxApp::DoMessage() -{ - BOOL rc = ::GetMessage(&s_currentMsg, (HWND) NULL, 0, 0); - if ( rc == 0 ) - { - // got WM_QUIT - m_keepGoing = FALSE; - - return FALSE; - } - else if ( rc == -1 ) - { - // should never happen, but let's test for it nevertheless - wxLogLastError("GetMessage"); - } - else - { -#if wxUSE_THREADS - wxASSERT_MSG( wxThread::IsMain(), - "only the main thread can process Windows messages" ); - - static bool s_hadGuiLock = TRUE; - static wxMsgArray s_aSavedMessages; - - // if a secondary thread owns is doing GUI calls, save all messages for - // later processing - we can't process them right now because it will - // lead to recursive library calls (and we're not reentrant) - if ( !wxGuiOwnedByMainThread() ) - { - s_hadGuiLock = FALSE; - - // leave out WM_COMMAND messages: too dangerous, sometimes - // the message will be processed twice - if ( !wxIsWaitingForThread() || - s_currentMsg.message != WM_COMMAND ) - { - s_aSavedMessages.Add(s_currentMsg); - } - - return TRUE; - } - else - { - // have we just regained the GUI lock? if so, post all of the saved - // messages - // - // FIXME of course, it's not _exactly_ the same as processing the - // messages normally - expect some things to break... - if ( !s_hadGuiLock ) - { - s_hadGuiLock = TRUE; - - size_t count = s_aSavedMessages.Count(); - for ( size_t n = 0; n < count; n++ ) - { - MSG& msg = s_aSavedMessages[n]; - - if ( !ProcessMessage((WXMSG *)&msg) ) - { - ::TranslateMessage(&msg); - ::DispatchMessage(&msg); - } - } - - s_aSavedMessages.Empty(); - } - } -#endif // wxUSE_THREADS - - // Process the message - if ( !ProcessMessage((WXMSG *)&s_currentMsg) ) - { - ::TranslateMessage(&s_currentMsg); - wxApp::sm_lastMessageTime = s_currentMsg.time; /* MATTHEW: timeStamp impl. */ - ::DispatchMessage(&s_currentMsg); - } - } - - return TRUE; -} - -/* - * Keep trying to process messages until WM_QUIT - * received. - * - * If there are messages to be processed, they will all be - * processed and OnIdle will not be called. - * When there are no more messages, OnIdle is called. - * If OnIdle requests more time, - * it will be repeatedly called so long as there are no pending messages. - * A 'feature' of this is that once OnIdle has decided that no more processing - * is required, then it won't get processing time until further messages - * are processed (it'll sit in DoMessage). - */ - -int wxApp::MainLoop() -{ - m_keepGoing = TRUE; - - while ( m_keepGoing ) - { - #if wxUSE_THREADS - wxMutexGuiLeaveOrEnter(); - #endif // wxUSE_THREADS - - while ( !::PeekMessage(&s_currentMsg, 0, 0, 0, PM_NOREMOVE) && - ProcessIdle() ) - { - } - - DoMessage(); - } - - return s_currentMsg.wParam; -} - -// Returns TRUE if more time is needed. -bool wxApp::ProcessIdle() -{ - wxIdleEvent event; - event.SetEventObject(this); - ProcessEvent(event); - - return event.MoreRequested(); -} - -void wxApp::ExitMainLoop() -{ - m_keepGoing = FALSE; -} - -bool wxApp::Pending() -{ - return (::PeekMessage(&s_currentMsg, 0, 0, 0, PM_NOREMOVE) != 0) ; -} - -void wxApp::Dispatch() -{ - DoMessage(); -} - -/* - * Give all windows a chance to preprocess - * the message. Some may have accelerator tables, or have - * MDI complications. - */ -bool wxApp::ProcessMessage(WXMSG *Msg) -{ - MSG *msg = (MSG *)Msg; - - HWND hWnd; - - // Try translations first; find the youngest window with - // a translation table. - for (hWnd = msg->hwnd; hWnd != (HWND) NULL; hWnd = ::GetParent(hWnd)) - { - wxWindow *wnd = wxFindWinFromHandle((WXHWND) hWnd); - if (wnd) - { - if (wnd->MSWTranslateMessage(Msg)) - return TRUE; - } - } - - // Anyone for a non-translation message? Try youngest descendants first. - for (hWnd = msg->hwnd; hWnd != (HWND) NULL; hWnd = ::GetParent(hWnd)) - { - wxWindow *wnd = wxFindWinFromHandle((WXHWND) hWnd); - if (wnd) - { - if (wnd->MSWProcessMessage(Msg)) - return TRUE; - } - } - return FALSE; -} - -void wxApp::OnIdle(wxIdleEvent& event) -{ - static bool s_inOnIdle = FALSE; - - // Avoid recursion (via ProcessEvent default case) - if ( s_inOnIdle ) - return; - - s_inOnIdle = TRUE; - - // 'Garbage' collection of windows deleted with Close(). - DeletePendingObjects(); - - // flush the logged messages if any - wxLog *pLog = wxLog::GetActiveTarget(); - if ( pLog != NULL && pLog->HasPendingMessages() ) - pLog->Flush(); - - // Send OnIdle events to all windows - if ( SendIdleEvents() ) - { - // SendIdleEvents() returns TRUE if at least one window requested more - // idle events - event.RequestMore(TRUE); - } - - s_inOnIdle = FALSE; -} - -// Send idle event to all top-level windows -bool wxApp::SendIdleEvents() -{ - bool needMore = FALSE; - wxNode* node = wxTopLevelWindows.First(); - while (node) - { - wxWindow* win = (wxWindow*) node->Data(); - if (SendIdleEvents(win)) - needMore = TRUE; - - node = node->Next(); - } - - return needMore; -} - -// Send idle event to window and all subwindows -bool wxApp::SendIdleEvents(wxWindow* win) -{ - bool needMore = FALSE; - - wxIdleEvent event; - event.SetEventObject(win); - win->GetEventHandler()->ProcessEvent(event); - - if (event.MoreRequested()) - needMore = TRUE; - - wxNode* node = win->GetChildren().First(); - while (node) - { - wxWindow* win = (wxWindow*) node->Data(); - if (SendIdleEvents(win)) - needMore = TRUE; - - node = node->Next(); - } - return needMore ; -} - -void wxApp::DeletePendingObjects() -{ - wxNode *node = wxPendingDelete.First(); - while (node) - { - wxObject *obj = (wxObject *)node->Data(); - - delete obj; - - if (wxPendingDelete.Member(obj)) - delete node; - - // Deleting one object may have deleted other pending - // objects, so start from beginning of list again. - node = wxPendingDelete.First(); - } -} - -void wxApp::OnEndSession(wxCloseEvent& WXUNUSED(event)) -{ - if (GetTopWindow()) - GetTopWindow()->Close(TRUE); -} - -// Default behaviour: close the application with prompts. The -// user can veto the close, and therefore the end session. -void wxApp::OnQueryEndSession(wxCloseEvent& event) -{ - if (GetTopWindow()) - { - if (!GetTopWindow()->Close(!event.CanVeto())) - event.Veto(TRUE); - } -} - -wxLog* wxApp::CreateLogTarget() -{ - return new wxLogGui; -} - -wxWindow* wxApp::GetTopWindow() const -{ - if (m_topWindow) - return m_topWindow; - else if (wxTopLevelWindows.Number() > 0) - return (wxWindow*) wxTopLevelWindows.First()->Data(); - else - return NULL; -} - -int wxApp::GetComCtl32Version() const -{ - // have we loaded COMCTL32 yet? - HMODULE theModule = ::GetModuleHandle("COMCTL32"); - int version = 0; - - // if so, then we can check for the version - if (theModule) - { - // InitCommonControlsEx is unique to 4.7 and later - FARPROC theProc = ::GetProcAddress(theModule, "InitCommonControlsEx"); - - if (! theProc) - { // not found, must be 4.00 - version = 400; - } - else - { - // The following symbol are unique to 4.71 - // DllInstall - // FlatSB_EnableScrollBar FlatSB_GetScrollInfo FlatSB_GetScrollPos - // FlatSB_GetScrollProp FlatSB_GetScrollRange FlatSB_SetScrollInfo - // FlatSB_SetScrollPos FlatSB_SetScrollProp FlatSB_SetScrollRange - // FlatSB_ShowScrollBar - // _DrawIndirectImageList _DuplicateImageList - // InitializeFlatSB - // UninitializeFlatSB - // we could check for any of these - I chose DllInstall - FARPROC theProc = ::GetProcAddress(theModule, "DllInstall"); - if (! theProc) - { - // not found, must be 4.70 - version = 470; - } - else - { // found, must be 4.71 - version = 471; - } - } - } - return version; -} - -void wxExit() -{ - wxApp::CleanUp(); - FatalAppExit(0, "Fatal error: exiting"); -} - -// Yield to incoming messages -bool wxYield() -{ - MSG msg; - // We want to go back to the main message loop - // if we see a WM_QUIT. (?) - while (PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE) && msg.message != WM_QUIT) - { - if ( !wxTheApp->DoMessage() ) - break; - } - - return TRUE; -} - -HINSTANCE wxGetInstance() -{ - return wxhInstance; -} - -// For some reason, with MSVC++ 1.5, WinMain isn't linked in properly -// if in a separate file. So include it here to ensure it's linked. -#if (defined(_MSC_VER) && !defined(__WIN32__)) || (defined(__GNUWIN32__) && !defined(__TWIN32__)) - #include "main.cpp" -#endif diff --git a/src/msw/bitmap.cpp b/src/msw/bitmap.cpp deleted file mode 100644 index 948d339184..0000000000 --- a/src/msw/bitmap.cpp +++ /dev/null @@ -1,779 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: bitmap.cpp -// Purpose: wxBitmap -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "bitmap.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include -#include "wx/setup.h" -#include "wx/list.h" -#include "wx/utils.h" -#include "wx/app.h" -#include "wx/palette.h" -#include "wx/dcmemory.h" -#include "wx/bitmap.h" -#include "wx/icon.h" -#endif - -#include "wx/msw/private.h" -#include "wx/log.h" - -#include "assert.h" - -#include "wx/msw/dib.h" - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxBitmap, wxGDIObject) -IMPLEMENT_DYNAMIC_CLASS(wxMask, wxObject) -#endif - -wxBitmapRefData::wxBitmapRefData(void) -{ - m_ok = FALSE; - m_width = 0; - m_height = 0; - m_depth = 0; - m_quality = 0; - m_hBitmap = 0 ; - m_selectedInto = NULL; - m_numColors = 0; - m_bitmapMask = NULL; -} - -wxBitmapRefData::~wxBitmapRefData(void) -{ - if (m_selectedInto) - { - char buf[200]; - sprintf(buf, "Bitmap was deleted without selecting out of wxMemoryDC %X.", (unsigned int) m_selectedInto); - wxFatalError(buf); - } - if (m_hBitmap) - { - DeleteObject((HBITMAP) m_hBitmap); - } - m_hBitmap = 0 ; - - if (m_bitmapMask) - delete m_bitmapMask; - m_bitmapMask = NULL; - -} - -wxList wxBitmap::sm_handlers; - -wxBitmap::wxBitmap(void) -{ - if ( wxTheBitmapList ) - wxTheBitmapList->AddBitmap(this); -} - -wxBitmap::~wxBitmap(void) -{ - if (wxTheBitmapList) - wxTheBitmapList->DeleteObject(this); -} - -bool wxBitmap::FreeResource(bool WXUNUSED(force)) -{ - if ( !M_BITMAPDATA ) - return FALSE; - - if (M_BITMAPDATA->m_selectedInto) - { - char buf[200]; - sprintf(buf, "Bitmap %X was deleted without selecting out of wxMemoryDC %X.", (unsigned int) this, (unsigned int) M_BITMAPDATA->m_selectedInto); - wxFatalError(buf); - } - if (M_BITMAPDATA->m_hBitmap) - { - DeleteObject((HBITMAP) M_BITMAPDATA->m_hBitmap); - } - M_BITMAPDATA->m_hBitmap = 0 ; - -/* - if (M_BITMAPDATA->m_bitmapPalette) - delete M_BITMAPDATA->m_bitmapPalette; - - M_BITMAPDATA->m_bitmapPalette = NULL ; -*/ - - return TRUE; -} - - -wxBitmap::wxBitmap(const char bits[], int the_width, int the_height, int no_bits) -{ - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_width = the_width ; - M_BITMAPDATA->m_height = the_height ; - M_BITMAPDATA->m_depth = no_bits ; - M_BITMAPDATA->m_numColors = 0; - - M_BITMAPDATA->m_hBitmap = (WXHBITMAP) CreateBitmap(the_width, the_height, 1, no_bits, bits); - - if (M_BITMAPDATA->m_hBitmap) - M_BITMAPDATA->m_ok = TRUE; - else - M_BITMAPDATA->m_ok = FALSE; - - M_BITMAPDATA->m_selectedInto = NULL; - - if ( wxTheBitmapList ) - wxTheBitmapList->AddBitmap(this); -} - -// Create from XPM data -wxBitmap::wxBitmap(char **data, wxItem *WXUNUSED(anItem)) -{ - (void) Create((void *)data, wxBITMAP_TYPE_XPM_DATA, 0, 0, 0); -} - -wxBitmap::wxBitmap(int w, int h, int d) -{ - (void)Create(w, h, d); - - if ( wxTheBitmapList ) - wxTheBitmapList->AddBitmap(this); -} - -wxBitmap::wxBitmap(void *data, long type, int width, int height, int depth) -{ - (void) Create(data, type, width, height, depth); - - if ( wxTheBitmapList ) - wxTheBitmapList->AddBitmap(this); -} - -wxBitmap::wxBitmap(const wxString& filename, long type) -{ - LoadFile(filename, (int)type); - - if ( wxTheBitmapList ) - wxTheBitmapList->AddBitmap(this); -} - -bool wxBitmap::Create(int w, int h, int d) -{ - UnRef(); - - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_width = w; - M_BITMAPDATA->m_height = h; - M_BITMAPDATA->m_depth = d; - - if (d > 0) - { - M_BITMAPDATA->m_hBitmap = (WXHBITMAP) CreateBitmap(w, h, 1, d, NULL); - } - else - { - HDC dc = GetDC((HWND) NULL); - M_BITMAPDATA->m_hBitmap = (WXHBITMAP) CreateCompatibleBitmap(dc, w, h); - ReleaseDC((HWND) NULL, dc); - M_BITMAPDATA->m_depth = wxDisplayDepth(); - } - if (M_BITMAPDATA->m_hBitmap) - M_BITMAPDATA->m_ok = TRUE; - else - M_BITMAPDATA->m_ok = FALSE; - return M_BITMAPDATA->m_ok; -} - -bool wxBitmap::LoadFile(const wxString& filename, long type) -{ - UnRef(); - - m_refData = new wxBitmapRefData; - - wxBitmapHandler *handler = FindHandler(type); - - if ( handler == NULL ) { - wxLogWarning("no bitmap handler for type %d defined.", type); - - return FALSE; - } - - return handler->LoadFile(this, filename, type, -1, -1); -} - -bool wxBitmap::Create(void *data, long type, int width, int height, int depth) -{ - UnRef(); - - m_refData = new wxBitmapRefData; - - wxBitmapHandler *handler = FindHandler(type); - - if ( handler == NULL ) { - wxLogWarning("no bitmap handler for type %d defined.", type); - - return FALSE; - } - - return handler->Create(this, data, type, width, height, depth); -} - -bool wxBitmap::SaveFile(const wxString& filename, int type, const wxPalette *palette) -{ - wxBitmapHandler *handler = FindHandler(type); - - if ( handler == NULL ) { - wxLogWarning("no bitmap handler for type %d defined.", type); - - return FALSE; - } - - return handler->SaveFile(this, filename, type, palette); -} - -void wxBitmap::SetWidth(int w) -{ - if (!M_BITMAPDATA) - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_width = w; -} - -void wxBitmap::SetHeight(int h) -{ - if (!M_BITMAPDATA) - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_height = h; -} - -void wxBitmap::SetDepth(int d) -{ - if (!M_BITMAPDATA) - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_depth = d; -} - -void wxBitmap::SetQuality(int q) -{ - if (!M_BITMAPDATA) - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_quality = q; -} - -void wxBitmap::SetOk(bool isOk) -{ - if (!M_BITMAPDATA) - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_ok = isOk; -} - -void wxBitmap::SetPalette(const wxPalette& palette) -{ - if (!M_BITMAPDATA) - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_bitmapPalette = palette ; -} - -void wxBitmap::SetMask(wxMask *mask) -{ - if (!M_BITMAPDATA) - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_bitmapMask = mask ; -} - -void wxBitmap::SetHBITMAP(WXHBITMAP bmp) -{ - if (!M_BITMAPDATA) - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_hBitmap = bmp; -} - -void wxBitmap::AddHandler(wxBitmapHandler *handler) -{ - sm_handlers.Append(handler); -} - -void wxBitmap::InsertHandler(wxBitmapHandler *handler) -{ - sm_handlers.Insert(handler); -} - -bool wxBitmap::RemoveHandler(const wxString& name) -{ - wxBitmapHandler *handler = FindHandler(name); - if ( handler ) - { - sm_handlers.DeleteObject(handler); - return TRUE; - } - else - return FALSE; -} - -wxBitmapHandler *wxBitmap::FindHandler(const wxString& name) -{ - wxNode *node = sm_handlers.First(); - while ( node ) - { - wxBitmapHandler *handler = (wxBitmapHandler *)node->Data(); - if ( (handler->GetName().Cmp(name) == 0) ) - return handler; - node = node->Next(); - } - return NULL; -} - -wxBitmapHandler *wxBitmap::FindHandler(const wxString& extension, long bitmapType) -{ - wxNode *node = sm_handlers.First(); - while ( node ) - { - wxBitmapHandler *handler = (wxBitmapHandler *)node->Data(); - if ( (handler->GetExtension().Cmp(extension) == 0) && - (bitmapType == -1 || (handler->GetType() == bitmapType)) ) - return handler; - node = node->Next(); - } - return NULL; -} - -wxBitmapHandler *wxBitmap::FindHandler(long bitmapType) -{ - wxNode *node = sm_handlers.First(); - while ( node ) - { - wxBitmapHandler *handler = (wxBitmapHandler *)node->Data(); - if (handler->GetType() == bitmapType) - return handler; - node = node->Next(); - } - return NULL; -} - -// New Create/FreeDIB functions since ones in dibutils.cpp are confusing -static long createDIB(long xSize, long ySize, long bitsPerPixel, - HPALETTE hPal, LPBITMAPINFO* lpDIBHeader); -static long freeDIB(LPBITMAPINFO lpDIBHeader); - -// Creates a bitmap that matches the device context, from -// an arbitray bitmap. At present, the original bitmap must have an -// associated palette. TODO: use a default palette if no palette exists. -// Contributed by Frederic Villeneuve -wxBitmap wxBitmap::GetBitmapForDC(wxDC& dc) const -{ - wxMemoryDC memDC; - wxBitmap tmpBitmap(this->GetWidth(), this->GetHeight(), dc.GetDepth()); - HPALETTE hPal = (HPALETTE) NULL; - LPBITMAPINFO lpDib; - void *lpBits = (void*) NULL; - -/* - wxASSERT( this->GetPalette() && this->GetPalette()->Ok() && (this->GetPalette()->GetHPALETTE() != 0) ); - - tmpBitmap.SetPalette(this->GetPalette()); - memDC.SelectObject(tmpBitmap); - memDC.SetPalette(this->GetPalette()); - - hPal = (HPALETTE) this->GetPalette()->GetHPALETTE(); -*/ - if( this->GetPalette() && this->GetPalette()->Ok() && (this->GetPalette()->GetHPALETTE() != 0) ) - { - tmpBitmap.SetPalette(* this->GetPalette()); - memDC.SelectObject(tmpBitmap); - memDC.SetPalette(* this->GetPalette()); - hPal = (HPALETTE) this->GetPalette()->GetHPALETTE(); - } - else - { - hPal = (HPALETTE) ::GetStockObject(DEFAULT_PALETTE); - wxPalette palette; - palette.SetHPALETTE( (WXHPALETTE)hPal ); - tmpBitmap.SetPalette( palette ); - memDC.SelectObject(tmpBitmap); - memDC.SetPalette( palette ); - } - - // set the height negative because in a DIB the order of the lines is reversed - createDIB(this->GetWidth(), -this->GetHeight(), this->GetDepth(), hPal, &lpDib); - - lpBits = malloc(lpDib->bmiHeader.biSizeImage); - - ::GetBitmapBits((HBITMAP)GetHBITMAP(), lpDib->bmiHeader.biSizeImage, lpBits); - - ::SetDIBitsToDevice((HDC) memDC.GetHDC(), 0, 0, this->GetWidth(), this->GetHeight(), - 0, 0, 0, this->GetHeight(), lpBits, lpDib, DIB_RGB_COLORS); - - free(lpBits); - - freeDIB(lpDib); - return (tmpBitmap); -} - -/* - * wxMask - */ - -wxMask::wxMask(void) -{ - m_maskBitmap = 0; -} - -// Construct a mask from a bitmap and a colour indicating -// the transparent area -wxMask::wxMask(const wxBitmap& bitmap, const wxColour& colour) -{ - m_maskBitmap = 0; - Create(bitmap, colour); -} - -// Construct a mask from a bitmap and a palette index indicating -// the transparent area -wxMask::wxMask(const wxBitmap& bitmap, int paletteIndex) -{ - m_maskBitmap = 0; - Create(bitmap, paletteIndex); -} - -// Construct a mask from a mono bitmap (copies the bitmap). -wxMask::wxMask(const wxBitmap& bitmap) -{ - m_maskBitmap = 0; - Create(bitmap); -} - -wxMask::~wxMask(void) -{ - if ( m_maskBitmap ) - ::DeleteObject((HBITMAP) m_maskBitmap); -} - -// Create a mask from a mono bitmap (copies the bitmap). -bool wxMask::Create(const wxBitmap& bitmap) -{ - if ( m_maskBitmap ) - { - ::DeleteObject((HBITMAP) m_maskBitmap); - m_maskBitmap = 0; - } - if (!bitmap.Ok() || bitmap.GetDepth() != 1) - { - return FALSE; - } - m_maskBitmap = (WXHBITMAP) CreateBitmap( - bitmap.GetWidth(), - bitmap.GetHeight(), - 1, 1, 0 - ); - HDC srcDC = CreateCompatibleDC(0); - SelectObject(srcDC, (HBITMAP) bitmap.GetHBITMAP()); - HDC destDC = CreateCompatibleDC(0); - SelectObject(destDC, (HBITMAP) m_maskBitmap); - BitBlt(destDC, 0, 0, bitmap.GetWidth(), bitmap.GetHeight(), srcDC, 0, 0, SRCCOPY); - SelectObject(srcDC, 0); - DeleteDC(srcDC); - SelectObject(destDC, 0); - DeleteDC(destDC); - return TRUE; -} - -// Create a mask from a bitmap and a palette index indicating -// the transparent area -bool wxMask::Create(const wxBitmap& bitmap, int paletteIndex) -{ - if ( m_maskBitmap ) - { - ::DeleteObject((HBITMAP) m_maskBitmap); - m_maskBitmap = 0; - } - if (bitmap.Ok() && bitmap.GetPalette()->Ok()) - { - unsigned char red, green, blue; - if (bitmap.GetPalette()->GetRGB(paletteIndex, &red, &green, &blue)) - { - wxColour transparentColour(red, green, blue); - return Create(bitmap, transparentColour); - } - } - return FALSE; -} - -// Create a mask from a bitmap and a colour indicating -// the transparent area -bool wxMask::Create(const wxBitmap& bitmap, const wxColour& colour) -{ - if ( m_maskBitmap ) - { - ::DeleteObject((HBITMAP) m_maskBitmap); - m_maskBitmap = 0; - } - if (!bitmap.Ok()) - { - return FALSE; - } - - // scan the bitmap for the transparent colour and set - // the corresponding pixels in the mask to BLACK and - // the rest to WHITE - COLORREF maskColour = RGB(colour.Red(), colour.Green(), colour.Blue()); - m_maskBitmap = (WXHBITMAP) ::CreateBitmap( - bitmap.GetWidth(), - bitmap.GetHeight(), - 1, 1, 0 - ); - HDC srcDC = ::CreateCompatibleDC(0); - ::SelectObject(srcDC, (HBITMAP) bitmap.GetHBITMAP()); - HDC destDC = ::CreateCompatibleDC(0); - ::SelectObject(destDC, (HBITMAP) m_maskBitmap); - - // this is not very efficient, but I can't think - // of a better way of doing it - for (int w = 0; w < bitmap.GetWidth(); w++) - { - for (int h = 0; h < bitmap.GetHeight(); h++) - { - COLORREF col = GetPixel(srcDC, w, h); - if (col == maskColour) - { - ::SetPixel(destDC, w, h, RGB(0, 0, 0)); - } - else - { - ::SetPixel(destDC, w, h, RGB(255, 255, 255)); - } - } - } - ::SelectObject(srcDC, 0); - ::DeleteDC(srcDC); - ::SelectObject(destDC, 0); - ::DeleteDC(destDC); - return TRUE; -} - -/* - * wxBitmapHandler - */ - -IMPLEMENT_DYNAMIC_CLASS(wxBitmapHandler, wxObject) - -bool wxBitmapHandler::Create(wxBitmap *WXUNUSED(bitmap), void *WXUNUSED(data), long WXUNUSED(type), int WXUNUSED(width), int WXUNUSED(height), int WXUNUSED(depth)) -{ - return FALSE; -} - -bool wxBitmapHandler::LoadFile(wxBitmap *WXUNUSED(bitmap), const wxString& WXUNUSED(name), long WXUNUSED(type), - int WXUNUSED(desiredWidth), int WXUNUSED(desiredHeight)) -{ - return FALSE; -} - -bool wxBitmapHandler::SaveFile(wxBitmap *WXUNUSED(bitmap), const wxString& WXUNUSED(name), int WXUNUSED(type), const wxPalette *WXUNUSED(palette)) -{ - return FALSE; -} - -/* - * Standard handlers - */ - -class WXDLLEXPORT wxBMPResourceHandler: public wxBitmapHandler -{ - DECLARE_DYNAMIC_CLASS(wxBMPResourceHandler) -public: - inline wxBMPResourceHandler(void) - { - m_name = "Windows bitmap resource"; - m_extension = ""; - m_type = wxBITMAP_TYPE_BMP_RESOURCE; - }; - - virtual bool LoadFile(wxBitmap *bitmap, const wxString& name, long flags, - int desiredWidth, int desiredHeight); -}; -IMPLEMENT_DYNAMIC_CLASS(wxBMPResourceHandler, wxBitmapHandler) - -bool wxBMPResourceHandler::LoadFile(wxBitmap *bitmap, const wxString& name, long WXUNUSED(flags), - int WXUNUSED(desiredWidth), int WXUNUSED(desiredHeight)) -{ - // TODO: load colourmap. - M_BITMAPHANDLERDATA->m_hBitmap = (WXHBITMAP) ::LoadBitmap(wxGetInstance(), name); - if (M_BITMAPHANDLERDATA->m_hBitmap) - { - M_BITMAPHANDLERDATA->m_ok = TRUE; - BITMAP bm; - GetObject((HBITMAP) M_BITMAPHANDLERDATA->m_hBitmap, sizeof(BITMAP), (LPSTR) &bm); - M_BITMAPHANDLERDATA->m_width = bm.bmWidth; - M_BITMAPHANDLERDATA->m_height = bm.bmHeight; - M_BITMAPHANDLERDATA->m_depth = bm.bmBitsPixel; - return TRUE; - } - - // it's probably not found - wxLogError("Can't load bitmap '%s' from resources! Check .rc file.", name.c_str()); - - return FALSE; -} - -class WXDLLEXPORT wxBMPFileHandler: public wxBitmapHandler -{ - DECLARE_DYNAMIC_CLASS(wxBMPFileHandler) -public: - inline wxBMPFileHandler(void) - { - m_name = "Windows bitmap file"; - m_extension = "bmp"; - m_type = wxBITMAP_TYPE_BMP; - }; - - virtual bool LoadFile(wxBitmap *bitmap, const wxString& name, long flags, - int desiredWidth, int desiredHeight); - virtual bool SaveFile(wxBitmap *bitmap, const wxString& name, int type, const wxPalette *palette = NULL); -}; -IMPLEMENT_DYNAMIC_CLASS(wxBMPFileHandler, wxBitmapHandler) - -bool wxBMPFileHandler::LoadFile(wxBitmap *bitmap, const wxString& name, long WXUNUSED(flags), - int WXUNUSED(desiredWidth), int WXUNUSED(desiredHeight)) -{ -#if wxUSE_IMAGE_LOADING_IN_MSW - wxPalette *palette = NULL; - bool success = FALSE; -/* - if (type & wxBITMAP_DISCARD_COLOURMAP) - success = wxLoadIntoBitmap(WXSTRINGCAST name, bitmap); - else -*/ - success = (wxLoadIntoBitmap(WXSTRINGCAST name, bitmap, &palette) != 0); - if (!success && palette) - { - delete palette; - palette = NULL; - } - if (palette) - M_BITMAPHANDLERDATA->m_bitmapPalette = *palette; - return success; -#else - return FALSE; -#endif -} - -bool wxBMPFileHandler::SaveFile(wxBitmap *bitmap, const wxString& name, int WXUNUSED(type), const wxPalette *pal) -{ -#if wxUSE_IMAGE_LOADING_IN_MSW - wxPalette *actualPalette = (wxPalette *)pal; - if (!actualPalette && (!M_BITMAPHANDLERDATA->m_bitmapPalette.IsNull())) - actualPalette = & (M_BITMAPHANDLERDATA->m_bitmapPalette); - return (wxSaveBitmap(WXSTRINGCAST name, bitmap, actualPalette) != 0); -#else - return FALSE; -#endif -} - -void wxBitmap::CleanUpHandlers(void) -{ - wxNode *node = sm_handlers.First(); - while ( node ) - { - wxBitmapHandler *handler = (wxBitmapHandler *)node->Data(); - wxNode *next = node->Next(); - delete handler; - delete node; - node = next; - } -} - -void wxBitmap::InitStandardHandlers(void) -{ - AddHandler(new wxBMPResourceHandler); - AddHandler(new wxBMPFileHandler); - - // Not added by default: include xpmhand.h in your app - // and call these in your wxApp::OnInit. -// AddHandler(new wxXPMFileHandler); -// AddHandler(new wxXPMDataHandler); - - AddHandler(new wxICOResourceHandler); - AddHandler(new wxICOFileHandler); -} - -static long createDIB(long xSize, long ySize, long bitsPerPixel, - HPALETTE hPal, LPBITMAPINFO* lpDIBHeader) -{ - unsigned long i, headerSize; - LPBITMAPINFO lpDIBheader = NULL; - LPPALETTEENTRY lpPe = NULL; - - - // Allocate space for a DIB header - headerSize = (sizeof(BITMAPINFOHEADER) + (256 * sizeof(PALETTEENTRY))); - lpDIBheader = (BITMAPINFO *) malloc(headerSize); - lpPe = (PALETTEENTRY *)((BYTE*)lpDIBheader + sizeof(BITMAPINFOHEADER)); - - GetPaletteEntries(hPal, 0, 256, lpPe); - - - memset(lpDIBheader, 0x00, sizeof(BITMAPINFOHEADER)); - - - // Fill in the static parts of the DIB header - lpDIBheader->bmiHeader.biSize = sizeof(BITMAPINFOHEADER); - lpDIBheader->bmiHeader.biWidth = xSize; - lpDIBheader->bmiHeader.biHeight = ySize; - lpDIBheader->bmiHeader.biPlanes = 1; - - // this value must be 1, 4, 8 or 24 so PixelDepth can only be - lpDIBheader->bmiHeader.biBitCount = (WORD)(bitsPerPixel); - lpDIBheader->bmiHeader.biCompression = BI_RGB; - lpDIBheader->bmiHeader.biSizeImage = xSize * abs(ySize) * bitsPerPixel >> -3; - lpDIBheader->bmiHeader.biClrUsed = 256; - - - // Initialize the DIB palette - for (i = 0; i < 256; i++) { - lpDIBheader->bmiColors[i].rgbReserved = lpPe[i].peFlags; - lpDIBheader->bmiColors[i].rgbRed = lpPe[i].peRed; - lpDIBheader->bmiColors[i].rgbGreen = lpPe[i].peGreen; - lpDIBheader->bmiColors[i].rgbBlue = lpPe[i].peBlue; - } - - *lpDIBHeader = lpDIBheader; - - - return (0); - -} - - - -static long freeDIB(LPBITMAPINFO lpDIBHeader) -{ - - if (lpDIBHeader != NULL) { - free(lpDIBHeader); - } - - return (0); -} - - diff --git a/src/msw/bmpbuttn.cpp b/src/msw/bmpbuttn.cpp deleted file mode 100644 index 6af2e7c60d..0000000000 --- a/src/msw/bmpbuttn.cpp +++ /dev/null @@ -1,269 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: bmpbuttn.cpp -// Purpose: wxBitmapButton -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "bmpbuttn.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/bmpbuttn.h" -#endif - -#include "wx/msw/private.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxBitmapButton, wxButton) -#endif - -#define BUTTON_HEIGHT_FACTOR (EDIT_CONTROL_FACTOR * 1.1) - -bool wxBitmapButton::Create(wxWindow *parent, wxWindowID id, const wxBitmap& bitmap, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - m_buttonBitmap = bitmap; - SetName(name); - SetValidator(validator); - - parent->AddChild(this); - - m_backgroundColour = parent->GetBackgroundColour() ; - m_foregroundColour = parent->GetForegroundColour() ; - m_windowStyle = style; - m_marginX = 0; - m_marginY = 0; - - if ( style & wxBU_AUTODRAW ) - { - m_marginX = wxDEFAULT_BUTTON_MARGIN; - m_marginY = wxDEFAULT_BUTTON_MARGIN; - } - - int x = pos.x; - int y = pos.y; - int width = size.x; - int height = size.y; - - if (id == -1) - m_windowId = NewControlId(); - else - m_windowId = id; - - if ( width == -1 && bitmap.Ok()) - width = bitmap.GetWidth() + 2*m_marginX; - - if ( height == -1 && bitmap.Ok()) - height = bitmap.GetHeight() + 2*m_marginY; - - HWND wx_button = - CreateWindowEx(0, "BUTTON", "", BS_OWNERDRAW | WS_TABSTOP | WS_CHILD, - 0, 0, 0, 0, (HWND) parent->GetHWND(), (HMENU)m_windowId, - wxGetInstance(), NULL); - - m_hWnd = (WXHWND)wx_button; - - // Subclass again for purposes of dialog editing mode - SubclassWin((WXHWND)wx_button); - - SetFont(parent->GetFont()) ; - - SetSize(x, y, width, height); - ShowWindow(wx_button, SW_SHOW); - - return TRUE; -} - -void wxBitmapButton::SetBitmapLabel(const wxBitmap& bitmap) -{ - m_buttonBitmap = bitmap; -} - -bool wxBitmapButton::MSWOnDraw(WXDRAWITEMSTRUCT *item) -{ -#if defined(__WIN95__) - long style = GetWindowLong((HWND) GetHWND(), GWL_STYLE); - if (style & BS_BITMAP) - { - // Should we call Default() here? -// Default(); - - // Let default procedure draw the bitmap, which is defined - // in the Windows resource. - return FALSE; - } -#endif - - LPDRAWITEMSTRUCT lpDIS = (LPDRAWITEMSTRUCT) item; - - wxBitmap* bitmap = &m_buttonBitmap; - - UINT state = lpDIS->itemState; - if ((state & ODS_SELECTED) && m_buttonBitmapSelected.Ok()) - bitmap = &m_buttonBitmapSelected; - else if ((state & ODS_FOCUS) && m_buttonBitmapFocus.Ok()) - bitmap = &m_buttonBitmapFocus; - else if ((state & ODS_DISABLED) && m_buttonBitmapDisabled.Ok()) - bitmap = &m_buttonBitmapDisabled; - - if ( !bitmap->Ok() ) - return FALSE; - - HDC hDC = lpDIS->hDC; - HDC memDC = ::CreateCompatibleDC(hDC); - - HBITMAP old = (HBITMAP) ::SelectObject(memDC, (HBITMAP) bitmap->GetHBITMAP()); - - if (!old) - return FALSE; - - int x = lpDIS->rcItem.left; - int y = lpDIS->rcItem.top; - int width = lpDIS->rcItem.right - x; - int height = lpDIS->rcItem.bottom - y; - - // Draw the face, if auto-drawing - if ( GetWindowStyleFlag() & wxBU_AUTODRAW ) - DrawFace((WXHDC) hDC, lpDIS->rcItem.left, lpDIS->rcItem.top, lpDIS->rcItem.right, lpDIS->rcItem.bottom, - ((state & ODS_SELECTED) == ODS_SELECTED)); - - // Centre the bitmap in the control area - int x1 = (int) (x + ((width - bitmap->GetWidth()) / 2)); - int y1 = (int) (y + ((height - bitmap->GetHeight()) / 2)); - - if ( (state & ODS_SELECTED) && (GetWindowStyleFlag() & wxBU_AUTODRAW) ) - { - x1 ++; - y1 ++; - } - - ::BitBlt(hDC, x1, y1, bitmap->GetWidth(), bitmap->GetHeight(), memDC, 0, 0, SRCCOPY); - - if ( (state & ODS_DISABLED) && (GetWindowStyleFlag() & wxBU_AUTODRAW) ) - DrawButtonDisable( (WXHDC) hDC, lpDIS->rcItem.left, lpDIS->rcItem.top, lpDIS->rcItem.right, lpDIS->rcItem.bottom, TRUE ) ; - else if ( (state & ODS_FOCUS) && (GetWindowStyleFlag() & wxBU_AUTODRAW) ) - DrawButtonFocus( (WXHDC) hDC, lpDIS->rcItem.left, lpDIS->rcItem.top, lpDIS->rcItem.right, lpDIS->rcItem.bottom, ((state & ODS_SELECTED) == ODS_SELECTED)); - - ::SelectObject(memDC, old); - - ::DeleteDC(memDC); - - return TRUE; -} - -void wxBitmapButton::DrawFace( WXHDC dc, int left, int top, int right, int bottom, bool sel ) -{ - HPEN oldp; - HBRUSH oldb ; - - HPEN penBorder; - HPEN penLight; - HPEN penShadow; - HBRUSH brushFace; - COLORREF ms_color; - - ms_color = GetSysColor(COLOR_WINDOWFRAME) ; - penBorder = CreatePen(PS_SOLID,0,ms_color) ; - - ms_color = GetSysColor(COLOR_BTNSHADOW) ; - penShadow = CreatePen(PS_SOLID,0,ms_color) ; - - ms_color = GetSysColor(COLOR_BTNHIGHLIGHT) ; - penLight = CreatePen(PS_SOLID,0,ms_color) ; - - ms_color = GetSysColor(COLOR_BTNFACE) ; - brushFace = CreateSolidBrush(ms_color) ; - - oldp = (HPEN) SelectObject( (HDC) dc, GetStockObject( NULL_PEN ) ) ; - oldb = (HBRUSH) SelectObject( (HDC) dc, brushFace ) ; - Rectangle( (HDC) dc, left, top, right, bottom ) ; - SelectObject( (HDC) dc, penBorder) ; - MoveToEx((HDC) dc,left+1,top,NULL);LineTo((HDC) dc,right-1,top); - MoveToEx((HDC) dc,left,top+1,NULL);LineTo((HDC) dc,left,bottom-1); - MoveToEx((HDC) dc,left+1,bottom-1,NULL);LineTo((HDC) dc,right-1,bottom-1); - MoveToEx((HDC) dc,right-1,top+1,NULL);LineTo((HDC) dc,right-1,bottom-1); - - SelectObject( (HDC) dc, penShadow) ; - if (sel) - { - MoveToEx((HDC) dc,left+1 ,bottom-2 ,NULL) ; - LineTo((HDC) dc, left+1 ,top+1) ; - LineTo((HDC) dc, right-2 ,top+1) ; - } - else - { - MoveToEx((HDC) dc,left+1 ,bottom-2 ,NULL) ; - LineTo((HDC) dc, right-2 ,bottom-2) ; - LineTo((HDC) dc, right-2 ,top) ; - MoveToEx((HDC) dc,left+2 ,bottom-3 ,NULL) ; - LineTo((HDC) dc, right-3 ,bottom-3) ; - LineTo((HDC) dc, right-3 ,top+1) ; - - SelectObject( (HDC) dc, penLight) ; - - MoveToEx((HDC) dc,left+1 ,bottom-2 ,NULL) ; - LineTo((HDC) dc, left+1 ,top+1) ; - LineTo((HDC) dc, right-2 ,top+1) ; - } - SelectObject((HDC) dc,oldp) ; - SelectObject((HDC) dc,oldb) ; - - DeleteObject(penBorder); - DeleteObject(penLight); - DeleteObject(penShadow); - DeleteObject(brushFace); -} - -#define FOCUS_MARGIN 6 - -void wxBitmapButton::DrawButtonFocus( WXHDC dc, int left, int top, int right, int bottom, bool sel ) -{ - RECT rect; - rect.left = left; - rect.top = top; - rect.right = right; - rect.bottom = bottom; - InflateRect( &rect, - FOCUS_MARGIN, - FOCUS_MARGIN ) ; - if ( sel ) - OffsetRect( &rect, 1, 1 ) ; - DrawFocusRect( (HDC) dc, &rect ) ; -} - -extern HBRUSH wxDisableButtonBrush; -void wxBitmapButton::DrawButtonDisable( WXHDC dc, int left, int top, int right, int bottom, bool with_marg ) -{ - HBRUSH old = (HBRUSH) SelectObject( (HDC) dc, wxDisableButtonBrush ) ; - - if ( with_marg ) - ::PatBlt( (HDC) dc, left + m_marginX, top + m_marginY, - right - 2 * m_marginX, bottom - 2 * m_marginY, -#ifdef __SALFORDC__ - 0xfa0089L ) ; -#else - 0xfa0089UL ) ; -#endif - else ::PatBlt( (HDC) dc, left, top, right, bottom, -#ifdef __SALFORDC__ - 0xfa0089L ) ; -#else - 0xfa0089UL ) ; -#endif - ::SelectObject( (HDC) dc, old ) ; -} - diff --git a/src/msw/brush.cpp b/src/msw/brush.cpp deleted file mode 100644 index 9c33fc9edd..0000000000 --- a/src/msw/brush.cpp +++ /dev/null @@ -1,239 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: brush.cpp -// Purpose: wxBrush -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "brush.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include -#include "wx/setup.h" -#include "wx/list.h" -#include "wx/utils.h" -#include "wx/app.h" -#include "wx/brush.h" -#endif - -#include "wx/msw/private.h" - -#include "assert.h" - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxBrush, wxGDIObject) -#endif - -wxBrushRefData::wxBrushRefData(void) -{ - m_style = wxSOLID; - m_hBrush = 0; -} - -wxBrushRefData::wxBrushRefData(const wxBrushRefData& data) -{ - m_style = data.m_style; - m_stipple = data.m_stipple; - m_colour = data.m_colour; - m_hBrush = 0; -} - -wxBrushRefData::~wxBrushRefData(void) -{ - if ( m_hBrush ) - ::DeleteObject((HBRUSH) m_hBrush); -} - -// Brushes -wxBrush::wxBrush(void) -{ - if ( wxTheBrushList ) - wxTheBrushList->AddBrush(this); -} - -wxBrush::~wxBrush() -{ - if (wxTheBrushList) - wxTheBrushList->RemoveBrush(this); -} - -wxBrush::wxBrush(const wxColour& col, int Style) -{ - m_refData = new wxBrushRefData; - - M_BRUSHDATA->m_colour = col; - M_BRUSHDATA->m_style = Style; - M_BRUSHDATA->m_hBrush = 0; - - RealizeResource(); - - if ( wxTheBrushList ) - wxTheBrushList->AddBrush(this); -} - -wxBrush::wxBrush(const wxBitmap& stipple) -{ - m_refData = new wxBrushRefData; - - M_BRUSHDATA->m_style = wxSTIPPLE; - M_BRUSHDATA->m_stipple = stipple; - M_BRUSHDATA->m_hBrush = 0; - - RealizeResource(); - - if ( wxTheBrushList ) - wxTheBrushList->AddBrush(this); -} - -bool wxBrush::RealizeResource(void) -{ - if (M_BRUSHDATA && (M_BRUSHDATA->m_hBrush == 0)) - { - if (M_BRUSHDATA->m_style==wxTRANSPARENT) - { - M_BRUSHDATA->m_hBrush = (WXHBRUSH) ::GetStockObject(NULL_BRUSH); - return TRUE; - } - COLORREF ms_colour = 0 ; - - ms_colour = M_BRUSHDATA->m_colour.GetPixel() ; - - switch (M_BRUSHDATA->m_style) - { -/**** - // Don't reset cbrush, wxTRANSPARENT is handled by wxBrush::SelectBrush() - // this could save (many) time if frequently switching from - // wxSOLID to wxTRANSPARENT, because Create... is not always called!! - // - // NB August 95: now create and select a Null brush instead. - // This could be optimized as above. - case wxTRANSPARENT: - M_BRUSHDATA->m_hBrush = NULL; // Must always select a suitable background brush - // - could choose white always for a quick solution - break; -***/ - case wxBDIAGONAL_HATCH: - M_BRUSHDATA->m_hBrush = (WXHBRUSH) CreateHatchBrush(HS_BDIAGONAL,ms_colour) ; - break ; - case wxCROSSDIAG_HATCH: - M_BRUSHDATA->m_hBrush = (WXHBRUSH) CreateHatchBrush(HS_DIAGCROSS,ms_colour) ; - break ; - case wxFDIAGONAL_HATCH: - M_BRUSHDATA->m_hBrush = (WXHBRUSH) CreateHatchBrush(HS_FDIAGONAL,ms_colour) ; - break ; - case wxCROSS_HATCH: - M_BRUSHDATA->m_hBrush = (WXHBRUSH) CreateHatchBrush(HS_CROSS,ms_colour) ; - break ; - case wxHORIZONTAL_HATCH: - M_BRUSHDATA->m_hBrush = (WXHBRUSH) CreateHatchBrush(HS_HORIZONTAL,ms_colour) ; - break ; - case wxVERTICAL_HATCH: - M_BRUSHDATA->m_hBrush = (WXHBRUSH) CreateHatchBrush(HS_VERTICAL,ms_colour) ; - break ; - case wxSTIPPLE: - if (M_BRUSHDATA->m_stipple.Ok()) - M_BRUSHDATA->m_hBrush = (WXHBRUSH) CreatePatternBrush((HBITMAP) M_BRUSHDATA->m_stipple.GetHBITMAP()) ; - else - M_BRUSHDATA->m_hBrush = (WXHBRUSH) CreateSolidBrush(ms_colour) ; - break ; - case wxSOLID: - default: - M_BRUSHDATA->m_hBrush = (WXHBRUSH) CreateSolidBrush(ms_colour) ; - break; - } -#ifdef WXDEBUG_CREATE - if (M_BRUSHDATA->m_hBrush==NULL) wxError("Cannot create brush","Internal error") ; -#endif - return TRUE; - } - else - return FALSE; -} - -WXHANDLE wxBrush::GetResourceHandle(void) -{ - return (WXHANDLE) M_BRUSHDATA->m_hBrush; -} - -bool wxBrush::FreeResource(bool WXUNUSED(force)) -{ - if (M_BRUSHDATA && (M_BRUSHDATA->m_hBrush != 0)) - { - DeleteObject((HBRUSH) M_BRUSHDATA->m_hBrush); - M_BRUSHDATA->m_hBrush = 0; - return TRUE; - } - else return FALSE; -} - -bool wxBrush::IsFree(void) -{ - return (M_BRUSHDATA && (M_BRUSHDATA->m_hBrush == 0)); -} - -void wxBrush::Unshare() -{ - // Don't change shared data - if (!m_refData) - { - m_refData = new wxBrushRefData(); - } - else - { - wxBrushRefData* ref = new wxBrushRefData(*(wxBrushRefData*)m_refData); - UnRef(); - m_refData = ref; - } -} - - -void wxBrush::SetColour(const wxColour& col) -{ - Unshare(); - - M_BRUSHDATA->m_colour = col; - - RealizeResource(); -} - -void wxBrush::SetColour(unsigned char r, unsigned char g, unsigned char b) -{ - Unshare(); - - M_BRUSHDATA->m_colour.Set(r, g, b); - - RealizeResource(); -} - -void wxBrush::SetStyle(int Style) -{ - Unshare(); - - M_BRUSHDATA->m_style = Style; - - RealizeResource(); -} - -void wxBrush::SetStipple(const wxBitmap& Stipple) -{ - Unshare(); - - M_BRUSHDATA->m_stipple = Stipple; - - RealizeResource(); -} - - diff --git a/src/msw/button.cpp b/src/msw/button.cpp deleted file mode 100644 index fce544bd25..0000000000 --- a/src/msw/button.cpp +++ /dev/null @@ -1,201 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: button.cpp -// Purpose: wxButton -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "button.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/button.h" -#include "wx/brush.h" -#endif - -#include "wx/msw/private.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxButton, wxControl) -#endif - -#define BUTTON_HEIGHT_FROM_CHAR_HEIGHT(cy) (11*EDIT_HEIGHT_FROM_CHAR_HEIGHT(cy)/10) - -// Buttons - -bool wxButton::MSWCommand(WXUINT param, WXWORD id) -{ - if (param == BN_CLICKED || (param == 1)) // 1 for accelerator - { - wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED, id); - event.SetEventObject(this); - ProcessCommand(event); - return TRUE; - } - else return FALSE; -} - -bool wxButton::Create(wxWindow *parent, wxWindowID id, const wxString& label, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); - SetValidator(validator); - - parent->AddChild((wxButton *)this); - m_backgroundColour = parent->GetBackgroundColour() ; - m_foregroundColour = parent->GetForegroundColour() ; - - m_windowStyle = (long&)style; - - int x = pos.x; - int y = pos.y; - int width = size.x; - int height = size.y; - - if (id == -1) - m_windowId = NewControlId(); - else - m_windowId = id; - - DWORD exStyle = MakeExtendedStyle(m_windowStyle); - HWND wx_button = - CreateWindowEx(exStyle, "BUTTON", label, BS_PUSHBUTTON | WS_TABSTOP | WS_CHILD, - 0, 0, 0, 0, (HWND) parent->GetHWND(), (HMENU)m_windowId, - wxGetInstance(), NULL); - -#if CTL3D -// if (!(GetParent()->GetWindowStyleFlag() & wxUSER_COLOURS)) -// Ctl3dSubclassCtl(wx_button); -#endif - - m_hWnd = (WXHWND)wx_button; - - // Subclass again for purposes of dialog editing mode - SubclassWin((WXHWND)wx_button); - - SetFont(parent->GetFont()); - - SetSize(x, y, width, height); - ShowWindow(wx_button, SW_SHOW); - - return TRUE; -} - -void wxButton::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - int currentX, currentY; - GetPosition(¤tX, ¤tY); - int x1 = x; - int y1 = y; - if (x == -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) - x1 = currentX; - if (y == -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) - y1 = currentY; - - AdjustForParentClientOrigin(x1, y1, sizeFlags); - - int actualWidth = width; - int actualHeight = height; - int ww, hh; - GetSize(&ww, &hh); - - int current_width; - int cyf; - char buf[300]; - GetWindowText((HWND) GetHWND(), buf, 300); - GetTextExtent(buf, ¤t_width, &cyf,NULL,NULL, - & this->GetFont()); - - // If we're prepared to use the existing width, then... - if (width == -1 && ((sizeFlags & wxSIZE_AUTO_WIDTH) != wxSIZE_AUTO_WIDTH)) - actualWidth = ww; - else if (width == -1) - { - int cx; - int cy; - wxGetCharSize(GetHWND(), &cx, &cy, & this->GetFont()); - actualWidth = (int)(current_width + 3*cx) ; - } - - // If we're prepared to use the existing height, then... - if (height == -1 && ((sizeFlags & wxSIZE_AUTO_HEIGHT) != wxSIZE_AUTO_HEIGHT)) - actualHeight = hh; - else if (height == -1) - { - actualHeight = BUTTON_HEIGHT_FROM_CHAR_HEIGHT(cyf); - } - - MoveWindow((HWND) GetHWND(), x1, y1, actualWidth, actualHeight, TRUE); -} - -void wxButton::SetDefault(void) -{ - wxWindow *parent = (wxWindow *)GetParent(); - if (parent) - parent->SetDefaultItem(this); - - if (parent) - { - SendMessage((HWND)parent->GetHWND(), DM_SETDEFID, m_windowId, 0L); - } - - SendMessage((HWND)GetHWND(), BM_SETSTYLE, BS_DEFPUSHBUTTON, 1L); -} - -wxString wxButton::GetLabel(void) const -{ - GetWindowText((HWND) GetHWND(), wxBuffer, 300); - return wxString(wxBuffer); -} - -void wxButton::SetLabel(const wxString& label) -{ - SetWindowText((HWND) GetHWND(), (const char *) label); -} - -WXHBRUSH wxButton::OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor, - WXUINT message, WXWPARAM wParam, WXLPARAM lParam) -{ -/* - WXHBRUSH hBrush = (WXHBRUSH) MSWDefWindowProc(message, wParam, lParam); -// ::SetTextColor((HDC) pDC, GetSysColor(COLOR_BTNTEXT)); - ::SetTextColor((HDC) pDC, RGB(GetForegroundColour().Red(), GetForegroundColour().Green(), - GetForegroundColour().Blue())); - - return hBrush; -*/ - // This doesn't in fact seem to make any difference at all - buttons are always - // the same colour. - ::SetBkColor((HDC) pDC, RGB(GetBackgroundColour().Red(), GetBackgroundColour().Green(), GetBackgroundColour().Blue())); - ::SetTextColor((HDC) pDC, RGB(GetForegroundColour().Red(), GetForegroundColour().Green(), GetForegroundColour().Blue())); - - wxBrush *backgroundBrush = wxTheBrushList->FindOrCreateBrush(GetBackgroundColour(), wxSOLID); - - // Note that this will be cleaned up in wxApp::OnIdle, if backgroundBrush - // has a zero usage count. - // NOT NOW; CHANGED. -// backgroundBrush->RealizeResource(); - return (WXHBRUSH) backgroundBrush->GetResourceHandle(); -} - -void wxButton::Command (wxCommandEvent & event) -{ - ProcessCommand (event); -} - - diff --git a/src/msw/checkbox.cpp b/src/msw/checkbox.cpp deleted file mode 100644 index 1461cf6f4f..0000000000 --- a/src/msw/checkbox.cpp +++ /dev/null @@ -1,315 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: checkbox.cpp -// Purpose: wxCheckBox -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "checkbox.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/checkbox.h" -#include "wx/brush.h" -#endif - -#include "wx/msw/private.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxCheckBox, wxControl) -IMPLEMENT_DYNAMIC_CLASS(wxBitmapCheckBox, wxCheckBox) -#endif - -bool wxCheckBox::MSWCommand(WXUINT WXUNUSED(param), WXWORD WXUNUSED(id)) -{ - wxCommandEvent event(wxEVT_COMMAND_CHECKBOX_CLICKED, m_windowId); - event.SetInt(GetValue()); - event.SetEventObject(this); - ProcessCommand(event); - return TRUE; -} - -// Single check box item -bool wxCheckBox::Create(wxWindow *parent, wxWindowID id, const wxString& label, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); - SetValidator(validator); - if (parent) parent->AddChild(this); - - SetBackgroundColour(parent->GetBackgroundColour()) ; - SetForegroundColour(parent->GetForegroundColour()) ; - - m_windowStyle = style; - - wxString Label = label; - if (Label == "") - Label = " "; // Apparently needed or checkbox won't show - - if ( id == -1 ) - m_windowId = NewControlId(); - else - m_windowId = id; - - int x = pos.x; - int y = pos.y; - int width = size.x; - int height = size.y; - - long msStyle = BS_AUTOCHECKBOX | WS_TABSTOP | WS_CHILD | WS_VISIBLE; - if ( style & wxALIGN_RIGHT ) - msStyle |= BS_LEFTTEXT; - - // We perhaps have different concepts of 3D here - a 3D border, - // versus a 3D button. - // So we only wish to give a border if this is specified - // in the style. - bool want3D; - WXDWORD exStyle = Determine3DEffects(0, &want3D) ; - - // Even with extended styles, need to combine with WS_BORDER - // for them to look right. -/* - if ( want3D || wxStyleHasBorder(m_windowStyle) ) - msStyle |= WS_BORDER; -*/ - - m_hWnd = (WXHWND)CreateWindowEx(exStyle, "BUTTON", Label, - msStyle, - 0, 0, 0, 0, - (HWND)parent->GetHWND(), (HMENU)m_windowId, - wxGetInstance(), NULL); - -#if CTL3D - if (want3D) - { - Ctl3dSubclassCtl((HWND)m_hWnd); - m_useCtl3D = TRUE; - } -#endif - - // Subclass again for purposes of dialog editing mode - SubclassWin(m_hWnd); - - SetFont(parent->GetFont()); - - SetSize(x, y, width, height); - - return TRUE; -} - -void wxCheckBox::SetLabel(const wxString& label) -{ - SetWindowText((HWND)GetHWND(), label); -} - -void wxCheckBox::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - int currentX, currentY; - GetPosition(¤tX, ¤tY); - int x1 = x; - int y1 = y; - int w1 = width; - int h1 = height; - - if (x == -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) - x1 = currentX; - if (y == -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) - y1 = currentY; - - AdjustForParentClientOrigin(x1, y1, sizeFlags); - - int current_width, cyf; - HWND button = (HWND) GetHWND(); - - int nLen = GetWindowTextLength(button); - wxString str; - GetWindowText(button, str.GetWriteBuf(nLen), nLen); - str.UngetWriteBuf(); - - if ( !str.IsEmpty() ) - { - GetTextExtent(str, ¤t_width, &cyf, NULL, NULL, & this->GetFont()); - if (w1 < 0) - w1 = (int)(current_width + RADIO_SIZE); - if (h1 < 0) - { - h1 = (int)(cyf); - if (h1 < RADIO_SIZE) - h1 = RADIO_SIZE; - } - } - else - { - if (w1 < 0) - w1 = RADIO_SIZE; - if (h1 < 0) - h1 = RADIO_SIZE; - } - - MoveWindow(button, x1, y1, w1, h1, TRUE); -} - -void wxCheckBox::SetValue(bool val) -{ - SendMessage((HWND) GetHWND(), BM_SETCHECK, val, 0); -} - -#ifndef BST_CHECKED -#define BST_CHECKED 0x0001 -#endif - -bool wxCheckBox::GetValue(void) const -{ -#ifdef __WIN32__ - return (SendMessage((HWND) GetHWND(), BM_GETCHECK, 0, 0) == BST_CHECKED); -#else - return ((0x003 & SendMessage((HWND) GetHWND(), BM_GETCHECK, 0, 0)) == 0x003); -#endif -} - -WXHBRUSH wxCheckBox::OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor, - WXUINT message, WXWPARAM wParam, WXLPARAM lParam) -{ -#if CTL3D - if ( m_useCtl3D ) - { - HBRUSH hbrush = Ctl3dCtlColorEx(message, wParam, lParam); - - return (WXHBRUSH) hbrush; - } -#endif - - if (GetParent()->GetTransparentBackground()) - SetBkMode((HDC) pDC, TRANSPARENT); - else - SetBkMode((HDC) pDC, OPAQUE); - - ::SetBkColor((HDC) pDC, RGB(GetBackgroundColour().Red(), GetBackgroundColour().Green(), GetBackgroundColour().Blue())); - ::SetTextColor((HDC) pDC, RGB(GetForegroundColour().Red(), GetForegroundColour().Green(), GetForegroundColour().Blue())); - - wxBrush *backgroundBrush = wxTheBrushList->FindOrCreateBrush(GetBackgroundColour(), wxSOLID); - - // Note that this will be cleaned up in wxApp::OnIdle, if backgroundBrush - // has a zero usage count. -// backgroundBrush->RealizeResource(); - return (WXHBRUSH) backgroundBrush->GetResourceHandle(); -} - -void wxCheckBox::Command (wxCommandEvent & event) -{ - SetValue ((event.GetInt() != 0)); - ProcessCommand (event); -} - -bool wxBitmapCheckBox::Create(wxWindow *parent, wxWindowID id, const wxBitmap *label, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); - SetValidator(validator); - if (parent) parent->AddChild(this); - - SetBackgroundColour(parent->GetBackgroundColour()) ; - SetForegroundColour(parent->GetForegroundColour()) ; - m_windowStyle = style; - - if ( id == -1 ) - m_windowId = NewControlId(); - else - m_windowId = id; - - int x = pos.x; - int y = pos.y; - int width = size.x; - int height = size.y; - - checkWidth = -1 ; - checkHeight = -1 ; - long msStyle = CHECK_FLAGS; - - HWND wx_button = CreateWindowEx(MakeExtendedStyle(m_windowStyle), CHECK_CLASS, "toggle", - msStyle, - 0, 0, 0, 0, (HWND) parent->GetHWND(), (HMENU)m_windowId, - wxGetInstance(), NULL); - -#if CTL3D - if (!(GetParent()->GetWindowStyleFlag() & wxUSER_COLOURS)) - { - Ctl3dSubclassCtl(wx_button); - m_useCtl3D = TRUE; - } -#endif - - m_hWnd = (WXHWND)wx_button; - - // Subclass again for purposes of dialog editing mode - SubclassWin((WXHWND)wx_button); - -// SetFont(parent->GetFont()); - - SetSize(x, y, width, height); - - ShowWindow(wx_button, SW_SHOW); - return TRUE; -} - -void wxBitmapCheckBox::SetLabel(const wxBitmap *bitmap) -{ -} - -void wxBitmapCheckBox::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - int currentX, currentY; - GetPosition(¤tX, ¤tY); - - int x1 = x; - int y1 = y; - int w1 = width; - int h1 = height; - - if (x == -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) - x1 = currentX; - if (y == -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) - y1 = currentY; - - AdjustForParentClientOrigin(x1, y1, sizeFlags); - - HWND button = (HWND) GetHWND(); -/* - if (w1<0) - w1 = checkWidth + FB_MARGIN ; - if (h1<0) - h1 = checkHeight + FB_MARGIN ; -*/ - MoveWindow(button, x1, y1, w1, h1, TRUE); -} - -void wxBitmapCheckBox::SetValue(bool val) -{ - SendMessage((HWND) GetHWND(), BM_SETCHECK, val, 0); -} - -bool wxBitmapCheckBox::GetValue(void) const -{ - return ((0x003 & SendMessage((HWND) GetHWND(), BM_GETCHECK, 0, 0)) == 0x003); -} - - diff --git a/src/msw/checklst.cpp b/src/msw/checklst.cpp deleted file mode 100644 index 9ab8c3ceb7..0000000000 --- a/src/msw/checklst.cpp +++ /dev/null @@ -1,317 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: msw/checklst.cpp -// Purpose: implementation of wxCheckListBox class -// Author: Vadim Zeitlin -// Modified by: -// Created: 16.11.97 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows license -/////////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "checklst.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#if wxUSE_OWNER_DRAWN - -#include "wx/object.h" -#include "wx/colour.h" -#include "wx/font.h" -#include "wx/bitmap.h" -#include "wx/window.h" -#include "wx/listbox.h" -#include "wx/ownerdrw.h" -#include "wx/settings.h" -#include "wx/dcmemory.h" -#include "wx/msw/checklst.h" - -#include - -// ============================================================================ -// implementation -// ============================================================================ - -#if !USE_SHARED_LIBRARY - IMPLEMENT_DYNAMIC_CLASS(wxCheckListBox, wxListBox) -#endif - -// ---------------------------------------------------------------------------- -// declaration and implementation of wxCheckListBoxItem class -// ---------------------------------------------------------------------------- - -class wxCheckListBoxItem : public wxOwnerDrawn -{ -public: - // ctor - wxCheckListBoxItem(wxCheckListBox *pParent, size_t nIndex); - - // drawing functions - virtual bool OnDrawItem(wxDC& dc, const wxRect& rc, wxODAction act, wxODStatus stat); - - // simple accessors - bool IsChecked() const { return m_bChecked; } - void Check(bool bCheck) { m_bChecked = bCheck; } - void Toggle(); - -private: - bool m_bChecked; - wxCheckListBox *m_pParent; - size_t m_nIndex; -}; - -wxCheckListBoxItem::wxCheckListBoxItem(wxCheckListBox *pParent, size_t nIndex) - : wxOwnerDrawn("", TRUE) // checkable -{ - m_bChecked = FALSE; - m_pParent = pParent; - m_nIndex = nIndex; - - // we don't initialize m_nCheckHeight/Width vars because it's - // done in OnMeasure while they are used only in OnDraw and we - // know that there will always be OnMeasure before OnDraw - - // fix appearance - SetFont(wxSystemSettings::GetSystemFont(wxSYS_ANSI_VAR_FONT)); - SetMarginWidth(GetDefaultMarginWidth()); -} - -/* - * JACS - I've got the owner-draw stuff partially working with WIN16, - * with a really horrible-looking cross for wxCheckListBox instead of a - * check - could use a bitmap check-mark instead, defined in wx.rc. - * Also there's a refresh problem whereby it doesn't always draw the - * check until you click to the right of it, which is OK for WIN32. - */ - -bool wxCheckListBoxItem::OnDrawItem(wxDC& dc, const wxRect& rc, - wxODAction act, wxODStatus stat) -{ - if ( IsChecked() ) - stat = (wxOwnerDrawn::wxODStatus)(stat | wxOwnerDrawn::wxODChecked); - - if ( wxOwnerDrawn::OnDrawItem(dc, rc, act, stat) ) { - // ## using native API for performance and precision - size_t nCheckWidth = GetDefaultMarginWidth(), - nCheckHeight = m_pParent->GetItemHeight(); - - int x = rc.GetX(), - y = rc.GetY(); - - HDC hdc = (HDC)dc.GetHDC(); - - // create pens - HPEN hpenBack = CreatePen(PS_SOLID, 0, GetSysColor(COLOR_WINDOW)), - hpenGray = CreatePen(PS_SOLID, 0, RGB(128, 128, 128)), - hpenPrev = (HPEN)SelectObject(hdc, hpenBack); - - // we erase the 1-pixel border - Rectangle(hdc, x, y, x + nCheckWidth, y + nCheckHeight); - - // shift check mark 1 pixel to the right (it looks better like this) - x++; - - if ( IsChecked() ) { - // first create a monochrome bitmap in a memory DC - HDC hdcMem = CreateCompatibleDC(hdc); - HBITMAP hbmpCheck = CreateBitmap(nCheckWidth, nCheckHeight, 1, 1, 0); - HBITMAP hbmpOld = (HBITMAP)SelectObject(hdcMem, hbmpCheck); - - // then draw a check mark into it - RECT rect = { 0, 0, nCheckWidth, nCheckHeight }; - -#ifdef __WIN32__ -#ifndef __SC__ - DrawFrameControl(hdcMem, &rect, DFC_MENU, DFCS_MENUCHECK); -#endif -#else - // In WIN16, draw a cross - HPEN blackPen = CreatePen(PS_SOLID, 1, RGB(0, 0, 0)); - HPEN whiteBrush = GetStockObject(WHITE_BRUSH); - HPEN hPenOld = ::SelectObject(hdcMem, blackPen); - HPEN hBrushOld = ::SelectObject(hdcMem, whiteBrush); - ::SetROP2(hdcMem, R2_COPYPEN); - Rectangle(hdcMem, 0, 0, nCheckWidth, nCheckHeight); - MoveTo(hdcMem, 0, 0); - LineTo(hdcMem, nCheckWidth, nCheckHeight); - MoveTo(hdcMem, nCheckWidth, 0); - LineTo(hdcMem, 0, nCheckHeight); - ::SelectObject(hdcMem, hPenOld); - ::SelectObject(hdcMem, hBrushOld); - ::DeleteObject(blackPen); -#endif - - // finally copy it to screen DC and clean up - BitBlt(hdc, x, y, nCheckWidth - 1, nCheckHeight, - hdcMem, 0, 0, SRCCOPY); - - SelectObject(hdcMem, hbmpOld); - DeleteObject(hbmpCheck); - DeleteDC(hdcMem); - } - - // now we draw the smaller rectangle - y++; - nCheckWidth -= 2; - nCheckHeight -= 2; - - // draw hollow gray rectangle - (void)SelectObject(hdc, hpenGray); - HBRUSH hbrPrev = (HBRUSH)SelectObject(hdc, GetStockObject(NULL_BRUSH)); - Rectangle(hdc, x, y, x + nCheckWidth, y + nCheckHeight); - - // clean up - (void)SelectObject(hdc, hpenPrev); - (void)SelectObject(hdc, hbrPrev); - - DeleteObject(hpenBack); - DeleteObject(hpenGray); - - /* - dc.DrawRectangle(x, y, nCheckWidth, nCheckHeight); - - if ( IsChecked() ) { - dc.DrawLine(x, y, x + nCheckWidth, y + nCheckHeight); - dc.DrawLine(x, y + nCheckHeight, x + nCheckWidth, y); - } - */ - - return TRUE; - } - - return FALSE; -} - -// change the state of the item and redraw it -void wxCheckListBoxItem::Toggle() -{ - m_bChecked = !m_bChecked; - - size_t nHeight = m_pParent->GetItemHeight(); - size_t y = m_nIndex * nHeight; - RECT rcUpdate = { 0, y, GetDefaultMarginWidth(), y + nHeight}; - InvalidateRect((HWND)m_pParent->GetHWND(), &rcUpdate, FALSE); - - wxCommandEvent event(wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, m_pParent->GetId()); - event.SetInt(m_nIndex); - event.SetEventObject(m_pParent); - m_pParent->ProcessCommand(event); -} - -// ---------------------------------------------------------------------------- -// implementation of wxCheckListBox class -// ---------------------------------------------------------------------------- - -// define event table -// ------------------ -BEGIN_EVENT_TABLE(wxCheckListBox, wxListBox) - EVT_CHAR(wxCheckListBox::OnChar) - EVT_LEFT_DOWN(wxCheckListBox::OnLeftClick) -END_EVENT_TABLE() - -// control creation -// ---------------- - -// def ctor: use Create() to really create the control -wxCheckListBox::wxCheckListBox() : wxListBox() -{ -} - -// ctor which creates the associated control -wxCheckListBox::wxCheckListBox(wxWindow *parent, wxWindowID id, - const wxPoint& pos, const wxSize& size, - int nStrings, const wxString choices[], - long style, const wxValidator& val, - const wxString& name) // , const wxFont& font) - // don't use ctor with arguments! we must call Create() - // ourselves from here. - : wxListBox() -// , m_font(font) -{ - Create(parent, id, pos, size, nStrings, choices, style|wxLB_OWNERDRAW, val, name); -} - -// create/retrieve item -// -------------------- - -// create a check list box item -wxOwnerDrawn *wxCheckListBox::CreateItem(size_t nIndex) -{ - wxCheckListBoxItem *pItem = new wxCheckListBoxItem(this, nIndex); - if ( m_windowFont.Ok() ) - pItem->SetFont(m_windowFont); - - return pItem; -} - -// get item (converted to right type) -#define GetItem(n) ((wxCheckListBoxItem *)(GetItem(n))) - -// return item size -// ---------------- -bool wxCheckListBox::MSWOnMeasure(WXMEASUREITEMSTRUCT *item) -{ - if ( wxListBox::MSWOnMeasure(item) ) { - MEASUREITEMSTRUCT *pStruct = (MEASUREITEMSTRUCT *)item; - - // save item height - m_nItemHeight = pStruct->itemHeight; - - // add place for the check mark - pStruct->itemWidth += wxOwnerDrawn::GetDefaultMarginWidth(); - - return TRUE; - } - - return FALSE; -} - -// check items -// ----------- - -bool wxCheckListBox::IsChecked(size_t uiIndex) const -{ - return GetItem(uiIndex)->IsChecked(); -} - -void wxCheckListBox::Check(size_t uiIndex, bool bCheck) -{ - GetItem(uiIndex)->Check(bCheck); -} - -// process events -// -------------- - -void wxCheckListBox::OnChar(wxKeyEvent& event) -{ - if ( event.KeyCode() == WXK_SPACE ) - GetItem(GetSelection())->Toggle(); - else - wxListBox::OnChar(event); -} - -void wxCheckListBox::OnLeftClick(wxMouseEvent& event) -{ - // clicking on the item selects it, clicking on the checkmark toggles - if ( event.GetX() <= wxOwnerDrawn::GetDefaultMarginWidth() ) { - // # better use LB_ITEMFROMPOINT perhaps? - size_t nItem = ((size_t)event.GetY()) / m_nItemHeight; - if ( nItem < (size_t)m_noItems ) - GetItem(nItem)->Toggle(); - //else: it's not an error, just click outside of client zone - } - else { - // implement default behaviour: clicking on the item selects it - event.Skip(); - } -} - -#endif - diff --git a/src/msw/choice.cpp b/src/msw/choice.cpp deleted file mode 100644 index 26b67c9d36..0000000000 --- a/src/msw/choice.cpp +++ /dev/null @@ -1,351 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: choice.cpp -// Purpose: wxChoice -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "choice.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/choice.h" -#include "wx/utils.h" -#endif - -#include "wx/msw/private.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxChoice, wxControl) -#endif - -bool wxChoice::MSWCommand(WXUINT param, WXWORD WXUNUSED(id)) -{ - if (param == CBN_SELCHANGE) - { - wxCommandEvent event(wxEVT_COMMAND_CHOICE_SELECTED, m_windowId); - event.SetInt(GetSelection()); - event.SetEventObject(this); - event.SetString(copystring(GetStringSelection())); - ProcessCommand(event); - delete[] event.GetString(); - return TRUE; - } - else return FALSE; -} - -bool wxChoice::Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos, - const wxSize& size, - int n, const wxString choices[], - long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); - SetValidator(validator); - if (parent) parent->AddChild(this); - SetBackgroundColour(parent->GetBackgroundColour()) ; - SetForegroundColour(parent->GetForegroundColour()) ; - m_noStrings = n; - - m_windowStyle = style; - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - int x = pos.x; - int y = pos.y; - int width = size.x; - int height = size.y; - - long msStyle = WS_CHILD | CBS_DROPDOWNLIST | WS_HSCROLL | WS_VSCROLL - | WS_TABSTOP | WS_VISIBLE; - if (m_windowStyle & wxCB_SORT) - msStyle |= CBS_SORT; - - bool want3D; - WXDWORD exStyle = Determine3DEffects(WS_EX_CLIENTEDGE, &want3D) ; - - // Even with extended styles, need to combine with WS_BORDER - // for them to look right. - if ( want3D || wxStyleHasBorder(m_windowStyle) ) - msStyle |= WS_BORDER; - - m_hWnd = (WXHWND)::CreateWindowEx(exStyle, "COMBOBOX", NULL, - msStyle, - 0, 0, 0, 0, (HWND) parent->GetHWND(), (HMENU)m_windowId, - wxGetInstance(), NULL); - - wxCHECK_MSG( m_hWnd, FALSE, "Failed to create combobox" ); - -/* -#if CTL3D - if (want3D) - { - m_useCtl3D = TRUE; - Ctl3dSubclassCtl(wx_combo); // Does CTL3D affect the combobox? I think not. - } -#endif -*/ - - // Subclass again for purposes of dialog editing mode - SubclassWin(m_hWnd); - - SetFont(parent->GetFont()); - - int i; - for (i = 0; i < n; i++) - { - Append(choices[i]); - } - SetSelection(n); - - SetSize(x, y, width, height); - - return TRUE; -} - -void wxChoice::Append(const wxString& item) -{ - SendMessage((HWND) GetHWND(), CB_ADDSTRING, 0, (LONG)(const char *)item); - - m_noStrings ++; -} - -void wxChoice::Delete(int n) -{ - m_noStrings = (int)SendMessage((HWND) GetHWND(), CB_DELETESTRING, n, 0); -} - -void wxChoice::Clear(void) -{ - SendMessage((HWND) GetHWND(), CB_RESETCONTENT, 0, 0); - - m_noStrings = 0; -} - - -int wxChoice::GetSelection(void) const -{ - return (int)SendMessage((HWND) GetHWND(), CB_GETCURSEL, 0, 0); -} - -void wxChoice::SetSelection(int n) -{ - SendMessage((HWND) GetHWND(), CB_SETCURSEL, n, 0); -} - -int wxChoice::FindString(const wxString& s) const -{ -#if defined(__WATCOMC__) && defined(__WIN386__) - // For some reason, Watcom in WIN386 mode crashes in the CB_FINDSTRINGEXACT message. - // Do it the long way instead. - char buf[512]; - for (int i = 0; i < Number(); i++) - { - int len = (int)SendMessage((HWND) GetHWND(), CB_GETLBTEXT, i, (LPARAM)(LPSTR)buf); - buf[len] = 0; - if (strcmp(buf, (const char *)s) == 0) - return i; - } - return -1; -#else - int pos = (int)SendMessage((HWND) GetHWND(), CB_FINDSTRINGEXACT, (WPARAM)-1, (LPARAM)(LPSTR)(const char *)s); - if (pos == LB_ERR) - return -1; - else - return pos; -#endif -} - -wxString wxChoice::GetString(int n) const -{ - int len = (int)SendMessage((HWND) GetHWND(), CB_GETLBTEXT, n, (long)wxBuffer); - wxBuffer[len] = 0; - return wxString(wxBuffer); -} - -void wxChoice::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - int currentX, currentY; - GetPosition(¤tX, ¤tY); - - int x1 = x; - int y1 = y; - int w1 = width; - int h1 = height; - - if (x == -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) - x1 = currentX; - if (y == -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) - y1 = currentY; - - AdjustForParentClientOrigin(x1, y1, sizeFlags); - - // If we're prepared to use the existing size, then... - if (width == -1 && height == -1 && ((sizeFlags & wxSIZE_AUTO) != wxSIZE_AUTO)) - { - GetSize(&w1, &h1); - } - - int cx; // button font dimensions - int cy; - wxGetCharSize(GetHWND(), &cx, &cy, & this->GetFont()); - - int control_width, control_height; - - // Ignore height parameter because height doesn't - // mean 'initially displayed' height, it refers to the - // drop-down menu as well. The wxWindows interpretation - // is different; also, getting the size returns the - // _displayed_ size (NOT the drop down menu size) - // so setting-getting-setting size would not work. - h1 = -1; - - // Deal with default size (using -1 values) - if (width <= 0) - { - // Find the longest string - if (m_noStrings == 0) - { - control_width = 100; - } - else - { - int len, ht; - int longest = 0; - int i; - for (i = 0; i < m_noStrings; i++) - { - wxString str(GetString(i)); - GetTextExtent(str, &len, &ht, NULL, NULL, & this->GetFont()); - if ( len > longest) - longest = len; - } - - control_width = longest + cx*5; - } - } - else - { - // If non-default width... - control_width = w1; - } - - - // Choice drop-down list depends on number of items (limited to 10) - if (h1 <= 0) - { - if (m_noStrings == 0) - h1 = EDIT_HEIGHT_FROM_CHAR_HEIGHT(cy)*10; - else - h1 = EDIT_HEIGHT_FROM_CHAR_HEIGHT(cy)*(wxMin(10, m_noStrings) + 1); - } - - control_height = h1; - - // Calculations may have made text size too small - if (control_height <= 0) - control_height = EDIT_HEIGHT_FROM_CHAR_HEIGHT(cy); - - if (control_width <= 0) - control_width = 100; - - MoveWindow((HWND)GetHWND(), x1, y1, - control_width, control_height, TRUE); -} - -WXHBRUSH wxChoice::OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor, - WXUINT message, WXWPARAM wParam, WXLPARAM lParam) -{ - return 0; -} - -long wxChoice::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) -{ - switch (nMsg) - { -/* - case WM_GETDLGCODE: - { - if (GetWindowStyleFlag() & wxPROCESS_ENTER) - return DLGC_WANTALLKEYS; - break; - } -*/ -/* - case WM_CHAR: // Always an ASCII character - { - if (wParam == VK_RETURN) - { - wxCommandEvent event(wxEVENT_TYPE_TEXT_ENTER_COMMAND); - event.commandString = ((wxTextCtrl *)item)->GetValue(); - event.eventObject = item; - item->ProcessCommand(event); - return FALSE; - } - break; - } -*/ - case WM_LBUTTONUP: - { - int x = (int)LOWORD(lParam); - int y = (int)HIWORD(lParam); - - // Ok, this is truly weird, but if a panel with a wxChoice loses the - // focus, then you get a *fake* WM_LBUTTONUP message - // with x = 65535 and y = 65535. - // Filter out this nonsense. - if (x == 65535 && y == 65535) - return Default(); - break; - } - } - - return wxWindow::MSWWindowProc(nMsg, wParam, lParam); -} - -wxString wxChoice::GetStringSelection (void) const -{ - int sel = GetSelection (); - if (sel > -1) - return wxString(this->GetString (sel)); - else - return wxString(""); -} - -bool wxChoice::SetStringSelection (const wxString& s) -{ - int sel = FindString (s); - if (sel > -1) - { - SetSelection (sel); - return TRUE; - } - else - return FALSE; -} - -void wxChoice::Command(wxCommandEvent & event) -{ - SetSelection (event.GetInt()); - ProcessCommand (event); -} - - - diff --git a/src/msw/clipbrd.cpp b/src/msw/clipbrd.cpp deleted file mode 100644 index efca97a0bb..0000000000 --- a/src/msw/clipbrd.cpp +++ /dev/null @@ -1,510 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: clipbrd.cpp -// Purpose: Clipboard functionality -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "clipbrd.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/setup.h" -#endif - -#if wxUSE_CLIPBOARD - -#ifndef WX_PRECOMP -#include "wx/object.h" -#include "wx/event.h" -#include "wx/app.h" -#include "wx/frame.h" -#include "wx/bitmap.h" -#include "wx/utils.h" -#endif - -#if wxUSE_METAFILE -#include "wx/metafile.h" -#endif - -#include "wx/clipbrd.h" - -#include - -HICON myIcon; - -#include "wx/msw/private.h" -#include "wx/msw/dib.h" - -// wxDataObject is tied to OLE/drag and drop implementation, -// therefore so is wxClipboard :-( -#if wxUSE_DRAG_AND_DROP -#include "wx/dataobj.h" -#endif - -#include - -bool wxClipboardIsOpen = FALSE; - -bool wxOpenClipboard(void) -{ - if (wxTheApp->GetTopWindow() && !wxClipboardIsOpen) - { - wxClipboardIsOpen = (::OpenClipboard((HWND) wxTheApp->GetTopWindow()->GetHWND()) != 0); - return wxClipboardIsOpen; - } - else return FALSE; -} - -bool wxCloseClipboard(void) -{ - if (wxClipboardIsOpen) - { - wxClipboardIsOpen = FALSE; - } - return (::CloseClipboard() != 0); -} - -bool wxEmptyClipboard(void) -{ - return (::EmptyClipboard() != 0); -} - -bool wxClipboardOpen(void) -{ - return wxClipboardIsOpen; -} - -bool wxIsClipboardFormatAvailable(wxDataFormat dataFormat) -{ - return (::IsClipboardFormatAvailable(dataFormat) != 0); -} - -bool wxSetClipboardData(wxDataFormat dataFormat, wxObject *obj, int width, int height) -{ - switch (dataFormat) - { - case wxDF_BITMAP: - { - wxBitmap *wxBM = (wxBitmap *)obj; - - HDC hdcMem = CreateCompatibleDC((HDC) NULL); - HDC hdcSrc = CreateCompatibleDC((HDC) NULL); - HBITMAP old = (HBITMAP) ::SelectObject(hdcSrc, (HBITMAP) wxBM->GetHBITMAP()); - HBITMAP hBitmap = CreateCompatibleBitmap(hdcSrc, - wxBM->GetWidth(), wxBM->GetHeight()); - if (!hBitmap) - { - SelectObject(hdcSrc, old); - DeleteDC(hdcMem); - DeleteDC(hdcSrc); - return FALSE; - } - HBITMAP old1 = (HBITMAP) SelectObject(hdcMem, hBitmap); - BitBlt(hdcMem, 0, 0, wxBM->GetWidth(), wxBM->GetHeight(), - hdcSrc, 0, 0, SRCCOPY); - - // Select new bitmap out of memory DC - SelectObject(hdcMem, old1); - - // Set the data - bool success = (bool)(::SetClipboardData(CF_BITMAP, hBitmap) != 0); - - // Clean up - SelectObject(hdcSrc, old); - DeleteDC(hdcSrc); - DeleteDC(hdcMem); - return success; - break; - } - case wxDF_DIB: - { -#if wxUSE_IMAGE_LOADING_IN_MSW - HBITMAP hBitmap=(HBITMAP) ((wxBitmap *)obj)->GetHBITMAP(); - HANDLE hDIB=BitmapToDIB(hBitmap,(HPALETTE) NULL); // NULL==uses system palette - bool success = (::SetClipboardData(CF_DIB,hDIB) != 0); -#else - bool success=FALSE; -#endif - return success; - break; - } -#if wxUSE_METAFILE - case wxDF_METAFILE: - { - wxMetafile *wxMF = (wxMetafile *)obj; - HANDLE data = GlobalAlloc(GHND, sizeof(METAFILEPICT) + 1); -#ifdef __WINDOWS_386__ - METAFILEPICT *mf = (METAFILEPICT *)MK_FP32(GlobalLock(data)); -#else - METAFILEPICT *mf = (METAFILEPICT *)GlobalLock(data); -#endif - - mf->mm = wxMF->GetWindowsMappingMode(); - mf->xExt = width; - mf->yExt = height; - mf->hMF = (HMETAFILE) wxMF->GetHMETAFILE(); - GlobalUnlock(data); - wxMF->SetHMETAFILE((WXHANDLE) NULL); - - return (SetClipboardData(CF_METAFILEPICT, data) != 0); - break; - } -#endif - case CF_SYLK: - case CF_DIF: - case CF_TIFF: - case CF_PALETTE: - { - return FALSE; - break; - } - case wxDF_OEMTEXT: - dataFormat = wxDF_TEXT; - case wxDF_TEXT: - width = strlen((char *)obj) + 1; - height = 1; - default: - { - char *s = (char *)obj; - DWORD l; - - l = (width * height); - HANDLE hGlobalMemory = GlobalAlloc(GHND, l); - if (!hGlobalMemory) - return FALSE; - -#ifdef __WINDOWS_386__ - LPSTR lpGlobalMemory = (LPSTR)MK_FP32(GlobalLock(hGlobalMemory)); -#else - LPSTR lpGlobalMemory = (LPSTR)GlobalLock(hGlobalMemory); -#endif - -#ifdef __WIN32__ - memcpy(lpGlobalMemory, s, l); -#elif defined(__WATCOMC__) && defined(__WINDOWS_386__) - memcpy(lpGlobalMemory, s, l); -#else - hmemcpy(lpGlobalMemory, s, l); -#endif - - GlobalUnlock(hGlobalMemory); - HANDLE success = SetClipboardData(dataFormat, hGlobalMemory); - return (success != 0); - break; - } - } - return FALSE; -} - -wxObject *wxGetClipboardData(wxDataFormat dataFormat, long *len) -{ - switch (dataFormat) - { - case wxDF_BITMAP: - { - BITMAP bm; - HBITMAP hBitmap = (HBITMAP) GetClipboardData(CF_BITMAP); - if (!hBitmap) - return NULL; - - HDC hdcMem = CreateCompatibleDC((HDC) NULL); - HDC hdcSrc = CreateCompatibleDC((HDC) NULL); - - HBITMAP old = (HBITMAP) ::SelectObject(hdcSrc, hBitmap); - GetObject(hBitmap, sizeof(BITMAP), (LPSTR)&bm); - - HBITMAP hNewBitmap = CreateBitmapIndirect(&bm); - - if (!hNewBitmap) - { - SelectObject(hdcSrc, old); - DeleteDC(hdcMem); - DeleteDC(hdcSrc); - return NULL; - } - - HBITMAP old1 = (HBITMAP) SelectObject(hdcMem, hNewBitmap); - BitBlt(hdcMem, 0, 0, bm.bmWidth, bm.bmHeight, - hdcSrc, 0, 0, SRCCOPY); - - // Select new bitmap out of memory DC - SelectObject(hdcMem, old1); - - // Clean up - SelectObject(hdcSrc, old); - DeleteDC(hdcSrc); - DeleteDC(hdcMem); - - // Create and return a new wxBitmap - wxBitmap *wxBM = new wxBitmap; - wxBM->SetHBITMAP((WXHBITMAP) hNewBitmap); - wxBM->SetWidth(bm.bmWidth); - wxBM->SetHeight(bm.bmHeight); - wxBM->SetDepth(bm.bmPlanes); - wxBM->SetOk(TRUE); - return (wxObject *)wxBM; - break; - } - case wxDF_METAFILE: - case CF_SYLK: - case CF_DIF: - case CF_TIFF: - case CF_PALETTE: - case wxDF_DIB: - { - return FALSE; - break; - } - case wxDF_OEMTEXT: - dataFormat = wxDF_TEXT; - case wxDF_TEXT: - default: - { - HANDLE hGlobalMemory = GetClipboardData(dataFormat); - if (!hGlobalMemory) - return NULL; - - int hsize = (int)GlobalSize(hGlobalMemory); - if (len) - *len = hsize; - - char *s = new char[hsize]; - if (!s) - return NULL; - -#ifdef __WINDOWS_386__ - LPSTR lpGlobalMemory = (LPSTR)MK_FP32(GlobalLock(hGlobalMemory)); -#else - LPSTR lpGlobalMemory = (LPSTR)GlobalLock(hGlobalMemory); -#endif - -#ifdef __WIN32__ - memcpy(s, lpGlobalMemory, GlobalSize(hGlobalMemory)); -#elif __WATCOMC__ && defined(__WINDOWS_386__) - memcpy(s, lpGlobalMemory, GlobalSize(hGlobalMemory)); -#else - hmemcpy(s, lpGlobalMemory, GlobalSize(hGlobalMemory)); -#endif - - GlobalUnlock(hGlobalMemory); - - return (wxObject *)s; - break; - } - } - return NULL; -} - -wxDataFormat wxEnumClipboardFormats(wxDataFormat dataFormat) -{ - return (wxDataFormat) ::EnumClipboardFormats(dataFormat); -} - -int wxRegisterClipboardFormat(char *formatName) -{ - return ::RegisterClipboardFormat(formatName); -} - -bool wxGetClipboardFormatName(wxDataFormat dataFormat, char *formatName, int maxCount) -{ - return (::GetClipboardFormatName((int) dataFormat, formatName, maxCount) > 0); -} - -//----------------------------------------------------------------------------- -// wxClipboard -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxClipboard,wxObject) - -wxClipboard* wxTheClipboard = (wxClipboard*) NULL; - -wxClipboard::wxClipboard() -{ - m_open = FALSE; -} - -wxClipboard::~wxClipboard() -{ - Clear(); -} - -void wxClipboard::Clear() -{ -#if wxUSE_DRAG_AND_DROP - wxNode* node = m_data.First(); - while (node) - { - wxDataObject* data = (wxDataObject*) node->Data(); - delete data; - node = node->Next(); - } - m_data.Clear(); -#endif -} - -bool wxClipboard::Open() -{ - wxCHECK_MSG( !m_open, FALSE, "clipboard already open" ); - - m_open = TRUE; - - return wxOpenClipboard(); -} - -bool wxClipboard::SetData( wxDataObject *data ) -{ -#if wxUSE_DRAG_AND_DROP - wxCHECK_MSG( data, FALSE, "data is invalid" ); - wxCHECK_MSG( m_open, FALSE, "clipboard not open" ); - - switch (data->GetFormat()) - { - case wxDF_TEXT: - case wxDF_OEMTEXT: - { - wxTextDataObject* textDataObject = (wxTextDataObject*) data; - wxString str(textDataObject->GetText()); - return wxSetClipboardData(data->GetFormat(), (wxObject*) (const char*) str); - break; - } - case wxDF_BITMAP: - case wxDF_DIB: - { - wxBitmapDataObject* bitmapDataObject = (wxBitmapDataObject*) data; - wxBitmap bitmap(bitmapDataObject->GetBitmap()); - return wxSetClipboardData(data->GetFormat(), & bitmap); - break; - } -#if wxUSE_METAFILE - case wxDF_METAFILE: - { - wxMetafileDataObject* metaFileDataObject = (wxMetafileDataObject*) data; - wxMetafile metaFile = metaFileDataObject->GetMetafile(); - return wxSetClipboardData(wxDF_METAFILE, & metaFile, metaFileDataObject->GetWidth(), metaFileDataObject->GetHeight()); - break; - } -#endif - default: - { - return FALSE; - } - } - - return FALSE; -#else - return FALSE; -#endif -} - -void wxClipboard::Close() -{ - wxCHECK_RET( m_open, "clipboard not open" ); - - m_open = FALSE; - wxCloseClipboard(); -} - -bool wxClipboard::IsSupportedFormat( wxDataFormat format, const wxString& WXUNUSED(id) ) -{ - return wxIsClipboardFormatAvailable(format); -} - -bool wxClipboard::GetData( wxDataObject *data ) -{ - wxCHECK_MSG( m_open, FALSE, "clipboard not open" ); - -#if wxUSE_DRAG_AND_DROP - switch (data->GetFormat()) - { - case wxDF_TEXT: - case wxDF_OEMTEXT: - { - wxTextDataObject* textDataObject = (wxTextDataObject*) data; - char* s = (char*) wxGetClipboardData(data->GetFormat()); - if (s) - { - textDataObject->SetText(s); - delete[] s; - return TRUE; - } - else - return FALSE; - break; - } - case wxDF_BITMAP: - case wxDF_DIB: - { - wxBitmapDataObject* bitmapDataObject = (wxBitmapDataObject*) data; - wxBitmap* bitmap = (wxBitmap*) wxGetClipboardData(data->GetFormat()); - if (bitmap) - { - bitmapDataObject->SetBitmap(* bitmap); - delete bitmap; - return TRUE; - } - else - return FALSE; - break; - } -#if wxUSE_METAFILE - case wxDF_METAFILE: - { - wxMetafileDataObject* metaFileDataObject = (wxMetafileDataObject*) data; - wxMetafile* metaFile = (wxMetafile*) wxGetClipboardData(wxDF_METAFILE); - if (metaFile) - { - metaFileDataObject->SetMetafile(* metaFile); - delete metaFile; - return TRUE; - } - else - return FALSE; - - break; - } -#endif - default: - { - return FALSE; - } - } - return FALSE; -#else - return FALSE; -#endif -} - -//----------------------------------------------------------------------------- -// wxClipboardModule -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxClipboardModule,wxModule) - -bool wxClipboardModule::OnInit() -{ - wxTheClipboard = new wxClipboard(); - - return TRUE; -} - -void wxClipboardModule::OnExit() -{ - if (wxTheClipboard) delete wxTheClipboard; - wxTheClipboard = (wxClipboard*) NULL; -} - -#endif // wxUSE_CLIPBOARD - diff --git a/src/msw/colordlg.cpp b/src/msw/colordlg.cpp deleted file mode 100644 index 78a01e7dde..0000000000 --- a/src/msw/colordlg.cpp +++ /dev/null @@ -1,126 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: colordlg.cpp -// Purpose: wxColourDialog class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "colordlg.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include -#include "wx/defs.h" -#include "wx/bitmap.h" -#include "wx/pen.h" -#include "wx/brush.h" -#include "wx/colour.h" -#include "wx/gdicmn.h" -#include "wx/utils.h" -#include "wx/frame.h" -#include "wx/dialog.h" -#include "wx/msgdlg.h" -#endif - -#include - -#if !defined(__WIN32__) || defined(__SALFORDC__) -#include -#endif - -#include "wx/msw/private.h" -#include "wx/colordlg.h" -#include "wx/cmndata.h" - -#include -#include -#include - -#define wxDIALOG_DEFAULT_X 300 -#define wxDIALOG_DEFAULT_Y 300 - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxColourDialog, wxDialog) -#endif - -/* - * wxColourDialog - */ - -wxColourDialog::wxColourDialog(void) -{ - m_dialogParent = NULL; -} - -wxColourDialog::wxColourDialog(wxWindow *parent, wxColourData *data) -{ - Create(parent, data); -} - -bool wxColourDialog::Create(wxWindow *parent, wxColourData *data) -{ - m_dialogParent = parent; - - if (data) - m_colourData = *data; - return TRUE; -} - -int wxColourDialog::ShowModal(void) -{ - CHOOSECOLOR chooseColorStruct; - COLORREF custColours[16]; - memset(&chooseColorStruct, 0, sizeof(CHOOSECOLOR)); - - int i; - for (i = 0; i < 16; i++) - custColours[i] = RGB(m_colourData.custColours[i].Red(), m_colourData.custColours[i].Green(), m_colourData.custColours[i].Blue()); - - chooseColorStruct.lStructSize = sizeof(CHOOSECOLOR); - chooseColorStruct.hwndOwner = (HWND) (m_dialogParent ? (HWND) m_dialogParent->GetHWND() : (HWND) NULL); - chooseColorStruct.rgbResult = RGB(m_colourData.dataColour.Red(), m_colourData.dataColour.Green(), m_colourData.dataColour.Blue()); - chooseColorStruct.lpCustColors = custColours; - - chooseColorStruct.Flags = CC_RGBINIT; - - if (!m_colourData.GetChooseFull()) - chooseColorStruct.Flags |= CC_PREVENTFULLOPEN; - - // Do the modal dialog - bool success = (ChooseColor(&(chooseColorStruct)) != 0); - - // Try to highlight the correct window (the parent) - HWND hWndParent = 0; - if (GetParent()) - { - hWndParent = (HWND) GetParent()->GetHWND(); - if (hWndParent) - ::BringWindowToTop(hWndParent); - } - - - // Restore values - for (i = 0; i < 16; i++) - { - m_colourData.custColours[i].Set(GetRValue(custColours[i]), GetGValue(custColours[i]), - GetBValue(custColours[i])); - } - - m_colourData.dataColour.Set(GetRValue(chooseColorStruct.rgbResult), GetGValue(chooseColorStruct.rgbResult), - GetBValue(chooseColorStruct.rgbResult)); - - return success ? wxID_OK : wxID_CANCEL; -} - diff --git a/src/msw/colour.cpp b/src/msw/colour.cpp deleted file mode 100644 index ed446cbaba..0000000000 --- a/src/msw/colour.cpp +++ /dev/null @@ -1,111 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: colour.cpp -// Purpose: wxColour class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "colour.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#include "wx/gdicmn.h" - -#include -#include - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxColour, wxObject) -#endif - -// Colour - -wxColour::wxColour () -{ - m_isInit = FALSE; - m_pixel = 0; - m_red = m_blue = m_green = 0; -} - -wxColour::wxColour (unsigned char r, unsigned char g, unsigned char b) -{ - m_red = r; - m_green = g; - m_blue = b; - m_isInit = TRUE; - m_pixel = PALETTERGB (m_red, m_green, m_blue); -} - -wxColour::wxColour (const wxColour& col) -{ - m_red = col.m_red; - m_green = col.m_green; - m_blue = col.m_blue; - m_isInit = col.m_isInit; - m_pixel = col.m_pixel; -} - -wxColour& wxColour::operator =(const wxColour& col) -{ - m_red = col.m_red; - m_green = col.m_green; - m_blue = col.m_blue; - m_isInit = col.m_isInit; - m_pixel = col.m_pixel; - return *this; -} - -void wxColour::InitFromName(const wxString& col) -{ - wxColour *the_colour = wxTheColourDatabase->FindColour (col); - if (the_colour) - { - m_red = the_colour->Red (); - m_green = the_colour->Green (); - m_blue = the_colour->Blue (); - m_isInit = TRUE; - } - else - { - m_red = 0; - m_green = 0; - m_blue = 0; - m_isInit = FALSE; - } - m_pixel = PALETTERGB (m_red, m_green, m_blue); -} - -wxColour::~wxColour() -{ -} - -void wxColour::Set (unsigned char r, unsigned char g, unsigned char b) -{ - m_red = r; - m_green = g; - m_blue = b; - m_isInit = TRUE; - m_pixel = PALETTERGB (m_red, m_green, m_blue); -} - -// Obsolete -#if WXWIN_COMPATIBILITY -void wxColour::Get (unsigned char *r, unsigned char *g, unsigned char *b) const -{ - *r = m_red; - *g = m_green; - *b = m_blue; -} -#endif - diff --git a/src/msw/combobox.cpp b/src/msw/combobox.cpp deleted file mode 100644 index abd740fa2b..0000000000 --- a/src/msw/combobox.cpp +++ /dev/null @@ -1,327 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: combobox.cpp -// Purpose: wxComboBox class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "combobox.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/setup.h" -#endif - -#if wxUSE_COMBOBOX - -#include "wx/combobox.h" -#include "wx/clipbrd.h" -#include "wx/msw/private.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxComboBox, wxControl) -#endif - -bool wxComboBox::MSWCommand(WXUINT param, WXWORD WXUNUSED(id)) -{ - if (param == CBN_SELCHANGE) - { - wxCommandEvent event(wxEVT_COMMAND_COMBOBOX_SELECTED, m_windowId); - event.SetInt(GetSelection()); - event.SetEventObject(this); - event.SetString(copystring(GetStringSelection())); - ProcessCommand(event); - delete[] event.GetString(); - return TRUE; - } - else if (param == CBN_EDITCHANGE) - { - wxCommandEvent event(wxEVT_COMMAND_TEXT_UPDATED, m_windowId); - event.SetString(copystring(GetValue())); - event.SetEventObject(this); - ProcessCommand(event); - delete[] event.GetString(); - return TRUE; - } - else return FALSE; -} - -bool wxComboBox::Create(wxWindow *parent, wxWindowID id, - const wxString& value, - const wxPoint& pos, - const wxSize& size, - int n, const wxString choices[], - long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); - SetValidator(validator); - if (parent) parent->AddChild(this); - SetBackgroundColour(parent->GetBackgroundColour()) ; - SetForegroundColour(parent->GetForegroundColour()) ; - m_noStrings = n; - - m_windowStyle = style; - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - int x = pos.x; - int y = pos.y; - int width = size.x; - int height = size.y; - - long msStyle = WS_CHILD | WS_HSCROLL | WS_VSCROLL | - WS_TABSTOP | WS_VISIBLE | CBS_NOINTEGRALHEIGHT; - - if (m_windowStyle & wxCB_READONLY) - msStyle |= CBS_DROPDOWNLIST; - else if (m_windowStyle & wxCB_SIMPLE) - msStyle |= CBS_SIMPLE; // A list (shown always) and edit control - else - msStyle |= CBS_DROPDOWN; - - if (m_windowStyle & wxCB_SORT) - msStyle |= CBS_SORT; - - bool want3D; - WXDWORD exStyle = Determine3DEffects(WS_EX_CLIENTEDGE, &want3D) ; - - // Even with extended styles, need to combine with WS_BORDER - // for them to look right. - if ( want3D || wxStyleHasBorder(m_windowStyle) ) - msStyle |= WS_BORDER; - - m_hWnd = (WXHWND)::CreateWindowEx(exStyle, "COMBOBOX", NULL, - msStyle, - 0, 0, 0, 0, (HWND) parent->GetHWND(), (HMENU)m_windowId, - wxGetInstance(), NULL); - - wxCHECK_MSG( m_hWnd, FALSE, "Failed to create combobox" ); - -/* -#if CTL3D - if (want3D) - { - Ctl3dSubclassCtl(wx_combo); - m_useCtl3D = TRUE; - } -#endif -*/ - - // Subclass again for purposes of dialog editing mode - SubclassWin(m_hWnd); - - SetFont(parent->GetFont()); - int i; - for (i = 0; i < n; i++) - { - Append(choices[i]); - } - - SetSelection(i); - - SetSize(x, y, width, height); - if ( !value.IsEmpty() ) - { - SetValue(value); - } - - return TRUE; -} - -wxString wxComboBox::GetValue() const -{ - return wxGetWindowText(GetHWND()); -} - -void wxComboBox::SetValue(const wxString& value) -{ - // If newlines are denoted by just 10, must stick 13 in front. - int singletons = 0; - int len = value.Length(); - int i; - for (i = 0; i < len; i ++) - { - if ((i > 0) && (value[i] == 10) && (value[i-1] != 13)) - singletons ++; - } - if (singletons > 0) - { - char *tmp = new char[len + singletons + 1]; - int j = 0; - for (i = 0; i < len; i ++) - { - if ((i > 0) && (value[i] == 10) && (value[i-1] != 13)) - { - tmp[j] = 13; - j ++; - } - tmp[j] = value[i]; - j ++; - } - tmp[j] = 0; - SetWindowText((HWND) GetHWND(), tmp); - delete[] tmp; - } - else - SetWindowText((HWND) GetHWND(), (const char *)value); -} - -// Clipboard operations -void wxComboBox::Copy() -{ - HWND hWnd = (HWND) GetHWND(); - SendMessage(hWnd, WM_COPY, 0, 0L); -} - -void wxComboBox::Cut() -{ - HWND hWnd = (HWND) GetHWND(); - SendMessage(hWnd, WM_CUT, 0, 0L); -} - -void wxComboBox::Paste() -{ - HWND hWnd = (HWND) GetHWND(); - SendMessage(hWnd, WM_PASTE, 0, 0L); -} - -void wxComboBox::SetEditable(bool editable) -{ - // Can't implement in MSW? -// HWND hWnd = (HWND) GetHWND(); -// SendMessage(hWnd, EM_SETREADONLY, (WPARAM)!editable, (LPARAM)0L); -} - -void wxComboBox::SetInsertionPoint(long pos) -{ -/* - HWND hWnd = (HWND) GetHWND(); -#ifdef __WIN32__ - SendMessage(hWnd, EM_SETSEL, pos, pos); - SendMessage(hWnd, EM_SCROLLCARET, (WPARAM)0, (LPARAM)0); -#else - SendMessage(hWnd, EM_SETSEL, 0, MAKELPARAM(pos, pos)); -#endif - char *nothing = ""; - SendMessage(hWnd, EM_REPLACESEL, 0, (LPARAM)nothing); -*/ -} - -void wxComboBox::SetInsertionPointEnd() -{ -/* - long pos = GetLastPosition(); - SetInsertionPoint(pos); -*/ -} - -long wxComboBox::GetInsertionPoint() const -{ -/* - DWORD Pos=(DWORD)SendMessage((HWND) GetHWND(), EM_GETSEL, 0, 0L); - return Pos&0xFFFF; -*/ - return 0; -} - -long wxComboBox::GetLastPosition() const -{ -/* - HWND hWnd = (HWND) GetHWND(); - - // Will always return a number > 0 (according to docs) - int noLines = (int)SendMessage(hWnd, EM_GETLINECOUNT, (WPARAM)0, (LPARAM)0L); - - // This gets the char index for the _beginning_ of the last line - int charIndex = (int)SendMessage(hWnd, EM_LINEINDEX, (WPARAM)(noLines-1), (LPARAM)0L); - - // Get number of characters in the last line. We'll add this to the character - // index for the last line, 1st position. - int lineLength = (int)SendMessage(hWnd, EM_LINELENGTH, (WPARAM)charIndex, (LPARAM)0L); - - return (long)(charIndex + lineLength); -*/ - return 0; -} - -void wxComboBox::Replace(long from, long to, const wxString& value) -{ -#if wxUSE_CLIPBOARD - HWND hWnd = (HWND) GetHWND(); - long fromChar = from; - long toChar = to; - - // Set selection and remove it -#ifdef __WIN32__ - SendMessage(hWnd, CB_SETEDITSEL, fromChar, toChar); -#else - SendMessage(hWnd, CB_SETEDITSEL, (WPARAM)0, (LPARAM)MAKELONG(fromChar, toChar)); -#endif - SendMessage(hWnd, WM_CUT, (WPARAM)0, (LPARAM)0); - - // Now replace with 'value', by pasting. - wxSetClipboardData(wxDF_TEXT, (wxObject *)(const char *)value, 0, 0); - - // Paste into edit control - SendMessage(hWnd, WM_PASTE, (WPARAM)0, (LPARAM)0L); -#endif -} - -void wxComboBox::Remove(long from, long to) -{ - HWND hWnd = (HWND) GetHWND(); - long fromChar = from; - long toChar = to; - - // Cut all selected text -#ifdef __WIN32__ - SendMessage(hWnd, CB_SETEDITSEL, fromChar, toChar); -#else - SendMessage(hWnd, CB_SETEDITSEL, (WPARAM)0, (LPARAM)MAKELONG(fromChar, toChar)); -#endif - SendMessage(hWnd, WM_CUT, (WPARAM)0, (LPARAM)0); -} - -void wxComboBox::SetSelection(long from, long to) -{ - HWND hWnd = (HWND) GetHWND(); - long fromChar = from; - long toChar = to; - // if from and to are both -1, it means - // (in wxWindows) that all text should be selected. - // This translates into Windows convention - if ((from == -1) && (to == -1)) - { - fromChar = 0; - toChar = -1; - } - -#ifdef __WIN32__ - SendMessage(hWnd, CB_SETEDITSEL, (WPARAM)fromChar, (LPARAM)toChar); -// SendMessage(hWnd, EM_SCROLLCARET, (WPARAM)0, (LPARAM)0); -#else - // WPARAM is 0: selection is scrolled into view - SendMessage(hWnd, CB_SETEDITSEL, (WPARAM)0, (LPARAM)MAKELONG(fromChar, toChar)); -#endif -} - -#endif - // wxUSE_COMBOBOX - diff --git a/src/msw/control.cpp b/src/msw/control.cpp deleted file mode 100644 index a0bcf8dff2..0000000000 --- a/src/msw/control.cpp +++ /dev/null @@ -1,335 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: control.cpp -// Purpose: wxControl class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "control.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/event.h" -#include "wx/app.h" -#include "wx/dcclient.h" -#endif - -#include "wx/control.h" - -#include "wx/msw/private.h" - -#if (defined(__WIN95__) && !defined(__GNUWIN32__)) || defined(__TWIN32__) -#include -#endif - -#ifdef GetCharWidth -#undef GetCharWidth -#undef GetWindowProc -#endif - -#if !USE_SHARED_LIBRARY -IMPLEMENT_ABSTRACT_CLASS(wxControl, wxWindow) - -BEGIN_EVENT_TABLE(wxControl, wxWindow) - EVT_ERASE_BACKGROUND(wxControl::OnEraseBackground) -END_EVENT_TABLE() -#endif - -// Item members -wxControl::wxControl(void) -{ - m_backgroundColour = *wxWHITE; - m_foregroundColour = *wxBLACK; - m_callback = 0; -} - -wxControl::~wxControl(void) -{ - m_isBeingDeleted = TRUE; - - // If we delete an item, we should initialize the parent panel, - // because it could now be invalid. - wxWindow *parent = (wxWindow *)GetParent(); - if (parent) - { - if (parent->GetDefaultItem() == (wxButton*) this) - parent->SetDefaultItem(NULL); - } -} - -void wxControl::SetLabel(const wxString& label) -{ - if (GetHWND()) - SetWindowText((HWND) GetHWND(), (const char *)label); -} - -wxString wxControl::GetLabel(void) const -{ - wxBuffer[0] = 0; - if (GetHWND()) - { - int len = GetWindowText((HWND)GetHWND(), wxBuffer, 256); - wxBuffer[len] = 0; - } - - return wxString(wxBuffer); -} - -// Call this repeatedly for several wnds to find the overall size -// of the widget. -// Call it initially with -1 for all values in rect. -// Keep calling for other widgets, and rect will be modified -// to calculate largest bounding rectangle. -void wxFindMaxSize(WXHWND wnd, RECT *rect) -{ - int left = rect->left; - int right = rect->right; - int top = rect->top; - int bottom = rect->bottom; - - GetWindowRect((HWND) wnd, rect); - - if (left < 0) - return; - - if (left < rect->left) - rect->left = left; - - if (right > rect->right) - rect->right = right; - - if (top < rect->top) - rect->top = top; - - if (bottom > rect->bottom) - rect->bottom = bottom; - -} - -/* -// Not currently used -void wxConvertDialogToPixels(wxWindow *control, int *x, int *y) -{ - if (control->m_windowParent && control->m_windowParent->is_dialog) - { - DWORD word = GetDialogBaseUnits(); - int xs = LOWORD(word); - int ys = HIWORD(word); - *x = (int)(*x * xs/4); - *y = (int)(*y * ys/8); - } - else - { - *x = *x; - *y = *y; - } -} -*/ - -void wxControl::MSWOnMouseMove(int x, int y, WXUINT flags) -{ -/* - // Trouble with this is that it sets the cursor for controls too :-( - if (m_windowCursor.Ok() && !wxIsBusy()) - ::SetCursor(m_windowCursor.GetHCURSOR()); -*/ - - if (!m_mouseInWindow) - { - // Generate an ENTER event - m_mouseInWindow = TRUE; - MSWOnMouseEnter(x, y, flags); - } - - wxMouseEvent event(wxEVT_MOTION); - - event.m_x = x; event.m_y = y; - event.m_shiftDown = ((flags & MK_SHIFT) != 0); - event.m_controlDown = ((flags & MK_CONTROL) != 0); - event.m_leftDown = ((flags & MK_LBUTTON) != 0); - event.m_middleDown = ((flags & MK_MBUTTON) != 0); - event.m_rightDown = ((flags & MK_RBUTTON) != 0); - event.SetTimestamp(wxApp::sm_lastMessageTime); - event.SetEventObject( this ); - - // Window gets a click down message followed by a mouse move - // message even if position isn't changed! We want to discard - // the trailing move event if x and y are the same. - if ((m_lastEvent == wxEVT_RIGHT_DOWN || m_lastEvent == wxEVT_LEFT_DOWN || - m_lastEvent == wxEVT_MIDDLE_DOWN) && - (m_lastXPos == event.GetX() && m_lastYPos == event.GetY())) - { - m_lastXPos = event.GetX(); m_lastYPos = event.GetY(); - m_lastEvent = wxEVT_MOTION; - return; - } - - m_lastEvent = wxEVT_MOTION; - m_lastXPos = event.GetX(); m_lastYPos = event.GetY(); - - if (!GetEventHandler()->ProcessEvent(event)) - Default(); -} - -long wxControl::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) -{ - return wxWindow::MSWWindowProc(nMsg, wParam, lParam); -} - -bool wxControl::MSWNotify(WXWPARAM wParam, WXLPARAM lParam, - WXLPARAM* WXUNUSED(result)) -{ -#if defined(__WIN95__) - wxCommandEvent event(wxEVT_NULL, m_windowId); - wxEventType eventType = wxEVT_NULL; - NMHDR *hdr1 = (NMHDR*) lParam; - switch ( hdr1->code ) - { - case NM_CLICK: - { - eventType = wxEVT_COMMAND_LEFT_CLICK; - break; - } - case NM_DBLCLK: - { - eventType = wxEVT_COMMAND_LEFT_DCLICK; - break; - } - case NM_RCLICK: - { - eventType = wxEVT_COMMAND_RIGHT_CLICK; - break; - } - case NM_RDBLCLK: - { - eventType = wxEVT_COMMAND_RIGHT_DCLICK; - break; - } - case NM_SETFOCUS: - { - eventType = wxEVT_COMMAND_SET_FOCUS; - break; - } - case NM_KILLFOCUS: - { - eventType = wxEVT_COMMAND_KILL_FOCUS; - break; - } - case NM_RETURN: - { - eventType = wxEVT_COMMAND_ENTER; - break; - } -/* Not implemented - case NM_OUTOFMEMORY: - { - eventType = wxEVT_COMMAND_OUT_OF_MEMORY; - break; - } -*/ - default: - return FALSE; - } - - event.SetEventType(eventType); - event.SetEventObject(this); - - if ( !GetEventHandler()->ProcessEvent(event) ) - return FALSE; - return TRUE; -#else // !Win95 - return FALSE; -#endif -} - -/* - * Allocates control IDs within the appropriate range - */ - - -int NewControlId(void) -{ - static int controlId = 0; - controlId ++; - return controlId; -} - -void wxControl::ProcessCommand (wxCommandEvent & event) -{ - // Tries: - // 1) A callback function (to become obsolete) - // 2) OnCommand, starting at this window and working up parent hierarchy - // 3) OnCommand then calls ProcessEvent to search the event tables. - if (m_callback) - { - (void) (*(m_callback)) (*this, event); - } - else - { - GetEventHandler()->OnCommand(*this, event); - } -} - -void wxControl::OnEraseBackground(wxEraseEvent& event) -{ - // In general, you don't want to erase the background of a control, - // or you'll get a flicker. - // TODO: move this 'null' function into each control that - // might flicker. - - RECT rect; - ::GetClientRect((HWND) GetHWND(), &rect); - - HBRUSH hBrush = ::CreateSolidBrush(PALETTERGB(GetBackgroundColour().Red(), GetBackgroundColour().Green(), GetBackgroundColour().Blue())); - int mode = ::SetMapMode((HDC) event.GetDC()->GetHDC(), MM_TEXT); - - ::FillRect ((HDC) event.GetDC()->GetHDC(), &rect, hBrush); - ::DeleteObject(hBrush); - ::SetMapMode((HDC) event.GetDC()->GetHDC(), mode); -} - -void wxControl::SetClientSize (int width, int height) -{ - SetSize (-1, -1, width, height); -} - -void wxControl::Centre (int direction) -{ - int x, y, width, height, panel_width, panel_height, new_x, new_y; - - wxWindow *parent = (wxWindow *) GetParent (); - if (!parent) - return; - - parent->GetClientSize (&panel_width, &panel_height); - GetSize (&width, &height); - GetPosition (&x, &y); - - new_x = x; - new_y = y; - - if (direction & wxHORIZONTAL) - new_x = (int) ((panel_width - width) / 2); - - if (direction & wxVERTICAL) - new_y = (int) ((panel_height - height) / 2); - - SetSize (new_x, new_y, width, height); - int temp_x, temp_y; - GetPosition (&temp_x, &temp_y); - GetPosition (&temp_x, &temp_y); -} - - diff --git a/src/msw/ctl3d/borland/makefile.b32 b/src/msw/ctl3d/borland/makefile.b32 deleted file mode 100644 index 1783689b82..0000000000 --- a/src/msw/ctl3d/borland/makefile.b32 +++ /dev/null @@ -1,25 +0,0 @@ -# -# File: makefile.b32 -# Author: Andre Beltman -# Created: 1995 -# Updated: -# Copyright: (c) 1995, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile : Imports 32bit ctl3d library for Windows 95 -# and Borland C++ 4.x - -WXDIR = $(WXWIN) -WXLIB = $(WXDIR)\lib - -LIBTARGET= $(WXLIB)\ctl3d32.lib - -all: $(LIBTARGET) - -$(LIBTARGET): - erase $(LIBTARGET) - implib $(LIBTARGET) ..\ctl3d32.dll - -clean: - -erase $(LIBTARGET) diff --git a/src/msw/ctl3d/borland/makefile.bcc b/src/msw/ctl3d/borland/makefile.bcc deleted file mode 100644 index 6a0bcdb158..0000000000 --- a/src/msw/ctl3d/borland/makefile.bcc +++ /dev/null @@ -1,25 +0,0 @@ -# -# File: makefile.b32 -# Author: Andre Beltman -# Created: 1995 -# Updated: -# Copyright: (c) 1995, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile : Imports ctl3d library -# and Borland C++ 4.x - -WXDIR = $(WXWIN) -WXLIB = $(WXDIR)\lib - -LIBTARGET= $(WXLIB)\ctl3dv2.lib - -all: $(LIBTARGET) - -$(LIBTARGET): - erase $(LIBTARGET) - implib $(LIBTARGET) ..\ctl3dv2.dll - -clean: - -erase $(LIBTARGET) diff --git a/src/msw/ctl3d/ctl3d.dll b/src/msw/ctl3d/ctl3d.dll deleted file mode 100644 index 8e1b74c3a8a1d96c0803d4f427bd2e67d81ddf72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 255 zcmeZ`l4N9JU|?VY;{X2{75$ z>!tvXoOGDih;HJKX=7SLL1KbwOsYiLy2@?Rv}geVr9T9lRuI|_l8$V!HPwLI=lkv) zUt7vF@$WA2-Fx5n{eIu~_xs*`>)w6L!x;18XPS&1!jrC~xPSSrfaTgnzpZ5l=f1l5 zkgN06#XY&LyJ9=@JGSIEJrsLj)AsEth^4-5Pk}NjP;4Jn=uzAZnj8BFIGZ;kSe&a zj0;5g-@nKj+7QOhGxjPWyw2D@3D0T9HqNEhD=!x_e1N^kSoF%JuP|SsZQiYce#I)> zAfM3Hmb=0>29Z|WziSuGTe@&lXms^efO%HrAKavEVoV}~KvtoA5>LmKgi}{oXzcHV zSH_QQum(TJl_Y*!Ekt3P*Rklwuib%!VUqARTX@2j=K&-g?!wP;C28OMuKWXl2^&vi zK>SE2$CVU%Y~Hp5h&?s503pdYy)>>~$*Ux;uKj=Xzgd8{%if`~?unO2p(TRzPbcSnkAZ@&5nr3m#%V&m6y#Yj_;!KS$@kH!t);H-N_9l7T@h3-E zUnXA8jt~L~?7N+kcUbj`}8`H)-OA+YYT}U)TdZsOds8f&uu-I_BEU6(9ej1SB zPFcz!P5M%1Bq=bUdQ4G2#rh|hD-KzOwtX9lVQ(g{6q;EKr<`IbmN_Cl$ zKY|6H;eIawt#<|V?~RBhGjbja*@1)tc%LUH(kdVgf)O!><6Yce zBr_uo;HGeYCs0$ljdiR~^_r1$017@%b%{RQErJF{G>&{`n&2k$9y!K)I>e&(_zF@G;YT}@W3e&>)V%cM?Aua60aF5YkqKf;SCr>REkQBrH^Q!o{iVy zxOd?50wDRR96gM~misH{Lf>?5G0H#R>E$8b5m@#bPfDp}#~?RU=z=j{#4Z&A=odf? zFQJnXdfvkWLp|Wj`(-(mF(Ze8%BP{~QiM*3dw92(e@800_}V}zsIQF5RThNw(DM%O{EnFWzJ8m( z2~P`r-Q>c;rG=WWaA}e52c8yG%(IgwV*dxX+k+oj68NuFib1JOXekcC4vZqNq6I03oHD2_A(&lN{hoAY*PM8{Z^JQ( z6%(X4(<^fXT&Vb(>*6@|Mw+Mimrosf4qwKX{S zJeG?`!^u@*p?@kf(uox%7rF%%)Mr&t9D0LK0FOtAn7n-SJ$GsEkI5EX*yrfG?$Y5B z@vP1VOJv3oA~|~AePXac1}D`kpwhv@{#lArVi4n!|1sQ6A&adK1%3wLW^d+cf{r?h2HaDDyP*bSYWsDGNv+B-R0R5v`TYs@Vbo3#Vs1ifT4-c9B+lpq*qgyEX(#Gb0igpv_ zX%io+Xq? z8~Z-7mD1@vk0ROYp#sF)V(}9Prgzk7X=;t(pZkYlSuPxYS~xtB zg#IHcWF0v60={19g8Unyw{0?N6!lu# z&+7czj)f7NkzUI(S1cfk!*pJu`w3GTe+2&lnF1UyJIg7})8=VN8pbhu9+>>(z`F&O z3=LeOdvIt1uqE^bgD+T$W@|YOk@x8vFI@an@iW(r<>az+W`v!Bv1hPJluX|Pt`zr> zK6W$SO4J}$V(Ofmd*nvd4Urlk5yNvSJ(Y|RM8cvOYeY>^P1Qturho+?Q8h?idMaZ~ zA-=9g;ePTdwcTTIFxDGj9qRF;JXEUViWe^fT#z&R&jj&9w7?#McNzX*&@3`{j55^=m=E>^ATR&p;K#cq)h_C#rzSLl~(R|W?^ zfeL0s0`Qj@74#N0l-m!)oP?W-rQKLM;S(KcRa@%RL@RJ))vo)Ig%rY3`h-R5nYZ=A77?|9NhdDtQtf=v`e zFj@<5CUd21N~qB0#0uM3j`gU+JQc0_VZ#rWP-6hqc7leVQv=<+`7PuHH417i&d}hm zXGDQ6n%;-q@iOXHVjEBokP*zYi49OxkAT71L;)wC?ys5$2c8u_b`c5={sFIlxt-XR zH_PB*p2;3)0h=r}+RxJ3daMzYK2izj69moKQ2L;h+h|RS37WC&0s4Xz9GrwZ1i^dc z7sV!^t|`}1A)pxusC5bsK2st184+kU0e#&NY_7+?>MiEkr|GTH_!>Tys4k-)x}w07 zv=;&S9W^jVI?>ngM2@UiGn}3(dElNTTh7ZuUx(}WQ*O3Rwx?=hirs##L7M+c+FNQkLqeCQIv4v?hC!iqYF4v3i zf%!>8|C?!MiwUwk)9S46eY`nU|X+HT~d<nc+60149Bs55r}Kn+!@ocglbr%EaNsz`_Pp#O%VL$l$=E$l$>+$2CB9j_WCw pYXSkX*96|N8nG5~8L_f3Ff}lOO><+5XE5M7{v5;+fQl_;0|0hWEt>!U diff --git a/src/msw/ctl3d/msvc/ctl3d.h b/src/msw/ctl3d/msvc/ctl3d.h deleted file mode 100644 index de7e67aa50..0000000000 --- a/src/msw/ctl3d/msvc/ctl3d.h +++ /dev/null @@ -1,61 +0,0 @@ -/*----------------------------------------------------------------------- -| CTL3D.DLL -| -| Adds 3d effects to Windows controls -| -| See ctl3d.doc for info -| ------------------------------------------------------------------------*/ -#ifdef __cplusplus -extern "C" { -#endif - - -BOOL WINAPI Ctl3dSubclassDlg(HWND, WORD); -BOOL WINAPI Ctl3dSubclassDlgEx(HWND, DWORD); -WORD WINAPI Ctl3dGetVer(void); -BOOL WINAPI Ctl3dEnabled(void); -HBRUSH WINAPI Ctl3dCtlColor(HDC, LONG); // ARCHAIC, use Ctl3dCtlColorEx -HBRUSH WINAPI Ctl3dCtlColorEx(UINT wm, WPARAM wParam, LPARAM lParam); -BOOL WINAPI Ctl3dColorChange(void); -BOOL WINAPI Ctl3dSubclassCtl(HWND); -LONG WINAPI Ctl3dDlgFramePaint(HWND, UINT, WPARAM, LPARAM); - -BOOL WINAPI Ctl3dAutoSubclass(HANDLE); - -BOOL WINAPI Ctl3dRegister(HANDLE); -BOOL WINAPI Ctl3dUnregister(HANDLE); - -//begin DBCS: far east short cut key support -VOID WINAPI Ctl3dWinIniChange(void); -//end DBCS - - -/* Ctl3dSubclassDlg3d flags */ -#define CTL3D_BUTTONS 0x0001 -#define CTL3D_LISTBOXES 0x0002 -#define CTL3D_EDITS 0x0004 -#define CTL3D_COMBOS 0x0008 -#define CTL3D_STATICTEXTS 0x0010 -#define CTL3D_STATICFRAMES 0x0020 - -#define CTL3D_NODLGWINDOW 0x00010000 -#define CTL3D_ALL 0xffff - -#define WM_DLGBORDER (WM_USER+3567) -/* WM_DLGBORDER *(int FAR *)lParam return codes */ -#define CTL3D_NOBORDER 0 -#define CTL3D_BORDER 1 - -#define WM_DLGSUBCLASS (WM_USER+3568) -/* WM_DLGSUBCLASS *(int FAR *)lParam return codes */ -#define CTL3D_NOSUBCLASS 0 -#define CTL3D_SUBCLASS 1 - -/* Resource ID for 3dcheck.bmp (for .lib version of ctl3d) */ -#define CTL3D_3DCHECK 26567 - - -#ifdef __cplusplus -} -#endif diff --git a/src/msw/ctl3d/msvc/ctl3d.lib b/src/msw/ctl3d/msvc/ctl3d.lib deleted file mode 100644 index 3fe7168589c1e16df4725f4413b2b29f5b3e2ddd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 338 zcmeys#lXPEz`(=+1r4kW%;By93>|_D3=0?;L2Op%k{sid7t9P@a8)qX3=9oi4BTLO z_tcWG)FOrsNw7X-F^GOf2JHHU7zDujgG-Z=a}tY-U2@VHI^@8HU`Rkr0=fd>k_L4B zK*O->2TDNnGo$F|XW#ckOo_hDhkobf~*q~1`T`+JYfBQq_hbf65Vy#_zosMo=bfLrz3wm zEx5M}()`o^o7*{jm5DZp)@bnr1B{B^2|zdIicU28VGamN&%3S=n&5?6srf~=omtNk2+Kd=0|RF?ew z)AC)PJ2;Z$X%)`(#Q8gcph6|_w>@j%+9L`N#hw!3E@a(Aas86K^=x@#J6*pDfWr%m z`{(@E#_M~d&eR`XCi%4p-)7>A_s9LWM~+c|MgJ)kgsm(gVE=zH6f~B_V;LyxsB)q>-|H8x1_z%45R$w zfAXd=VUa(hgTXfr+hc!&YVzIH-1xWy6rM>3%MmcDV8rK-?@e?9(&uj>!c~I{+gJ5- z5pvSnFBIzf6CISgro{8>+NNt>T|T^eeo*1%f0d+nnO~FY(m$7aJGCZu$8tPF;kgW8 zMF^y3mh{_G03K$^+^8kZONGGO`-6x5^d0Zsb8tcResl!1ebBz&lUe`YH=d3>yq@U! E0n3p@*Z=?k diff --git a/src/msw/ctl3d/readme.txt b/src/msw/ctl3d/readme.txt deleted file mode 100644 index 58c656ba7d..0000000000 --- a/src/msw/ctl3d/readme.txt +++ /dev/null @@ -1,31 +0,0 @@ - -CTL3D ------ - -CTL3D gives 3D controls to 16-bit Windows 3.1 applications. -Its use in wxWindows is controlled by the CTL3D symbol -in include/base/wx_setup.h. - -If using a 16-bit compiler, copy ctl3dv2.lib to your compiler -library directory, and remember to distribute ctl3dv2.dll -with your applications. The DLL should be copied to -windows/system and DELETED from the application installation -directory. - -If using Watcom C++ in 386 mode, things are slightly more complex: you need -to link with Patrick Halke's ctl3d32.obj which provides an interface -from 32-bits to the 16-bit CTL3DV2 library. Link your application -with ctl3d32.obj file instead of ctl3dv2.lib, distributing -ctl3dv2.dll as above. - -ctl3d.dll ; Version 1 of the CTL3D library DLL: obsolete -ctl3dv2.dll ; Version 2 of the CTL3D library DLL -readme.txt ; This file - -msvc/ctl3d.h ; Header file for either version of CTL3D -msvc/ctl3d.lib ; Import library for 16-bit compilers -watcom/import32.zip ; Import libraries for Watcom WIN32 compilation -wat386/ ; Source & objects for Watcom 386 object file to - ; interface 16<->32 bit modes -borland/ ; Makefiles for making import libraries for Borland - diff --git a/src/msw/ctl3d/wat32/import32.zip b/src/msw/ctl3d/wat32/import32.zip deleted file mode 100644 index ca983075203df5c36a6ee46516b5bbe0f9466d26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 567 zcmV-70?7SPO9KQH000080PlQ3AN)@cRG9++03Znf015yA08&LkL`_95R9IB)Rl#oD zHW0lF&_B$r3ZlqsZ;c}E#p${&HZWqKUUVwR!gD8=pMO zvp<4`t8#S;&NIlfcTGeOgxMLPt+ofKbfhISg0rxp_5Kn46N0E*A7_5BE<)%#PLM)g z6rk-~L+ffRU<-}5!Vu(v<1jLGR0v)lRLryJg**nRMuHzL!tZ?uXbcR>K`UzFp5OxP zwf*f}n6b>W9YI-?7y|t#@(_J5qjq-EtQAMDODxIH@r^c^XN{*70eAQJFrY`MdeXY) z3OK>Ur_gliG<@HoSE38^cAm|MwUd2|HVP(%=v+ZKk?NMNH?{qa$w(U=%U5i~PHBP& zL>o{#+VE&l1O(SGEWJGUzMypqh`J@xK}Q8o=)+b)HexDS{MnbtTLAF(yVC&ALwi z7%M7ARW-exZ5fo7Dp4D4kLdGk=|Ivxby@+s#BvTyiEg21Wh}HKh^{kQCb>(1Z3Cn0 zQ?7Z|TaUq+CuCV0veZh}j}NqB1dFs09bm1w3Kz{G;>W2aLY@gJov*b$P^BW-BRz_U FFSWXz1{DAR diff --git a/src/msw/ctl3d/wat386/ctl3d.h b/src/msw/ctl3d/wat386/ctl3d.h deleted file mode 100644 index de7e67aa50..0000000000 --- a/src/msw/ctl3d/wat386/ctl3d.h +++ /dev/null @@ -1,61 +0,0 @@ -/*----------------------------------------------------------------------- -| CTL3D.DLL -| -| Adds 3d effects to Windows controls -| -| See ctl3d.doc for info -| ------------------------------------------------------------------------*/ -#ifdef __cplusplus -extern "C" { -#endif - - -BOOL WINAPI Ctl3dSubclassDlg(HWND, WORD); -BOOL WINAPI Ctl3dSubclassDlgEx(HWND, DWORD); -WORD WINAPI Ctl3dGetVer(void); -BOOL WINAPI Ctl3dEnabled(void); -HBRUSH WINAPI Ctl3dCtlColor(HDC, LONG); // ARCHAIC, use Ctl3dCtlColorEx -HBRUSH WINAPI Ctl3dCtlColorEx(UINT wm, WPARAM wParam, LPARAM lParam); -BOOL WINAPI Ctl3dColorChange(void); -BOOL WINAPI Ctl3dSubclassCtl(HWND); -LONG WINAPI Ctl3dDlgFramePaint(HWND, UINT, WPARAM, LPARAM); - -BOOL WINAPI Ctl3dAutoSubclass(HANDLE); - -BOOL WINAPI Ctl3dRegister(HANDLE); -BOOL WINAPI Ctl3dUnregister(HANDLE); - -//begin DBCS: far east short cut key support -VOID WINAPI Ctl3dWinIniChange(void); -//end DBCS - - -/* Ctl3dSubclassDlg3d flags */ -#define CTL3D_BUTTONS 0x0001 -#define CTL3D_LISTBOXES 0x0002 -#define CTL3D_EDITS 0x0004 -#define CTL3D_COMBOS 0x0008 -#define CTL3D_STATICTEXTS 0x0010 -#define CTL3D_STATICFRAMES 0x0020 - -#define CTL3D_NODLGWINDOW 0x00010000 -#define CTL3D_ALL 0xffff - -#define WM_DLGBORDER (WM_USER+3567) -/* WM_DLGBORDER *(int FAR *)lParam return codes */ -#define CTL3D_NOBORDER 0 -#define CTL3D_BORDER 1 - -#define WM_DLGSUBCLASS (WM_USER+3568) -/* WM_DLGSUBCLASS *(int FAR *)lParam return codes */ -#define CTL3D_NOSUBCLASS 0 -#define CTL3D_SUBCLASS 1 - -/* Resource ID for 3dcheck.bmp (for .lib version of ctl3d) */ -#define CTL3D_3DCHECK 26567 - - -#ifdef __cplusplus -} -#endif diff --git a/src/msw/ctl3d/wat386/ctl3d32.c b/src/msw/ctl3d/wat386/ctl3d32.c deleted file mode 100644 index 67f845071e..0000000000 --- a/src/msw/ctl3d/wat386/ctl3d32.c +++ /dev/null @@ -1,285 +0,0 @@ -/* - * File: ctl3d32.c - * Purpose: 32bit interface to CTL3D functions for Watcom C/C++ - * Author: Patrick Halke - * Created: 1995 - * Updated: - * Copyright: (c) 1995 - */ - -#include - -#include - -#include "ctl3d.h" - -#if defined(__WINDOWS_386__) - -#ifdef __cplusplus -extern "C" { -#endif - -#undef FAR -#define FAR - -#define INDIR_INT INDIR_WORD -#define INDIR_UINT INDIR_WORD -#define INDIR_WPARAM INDIR_UINT -#define INDIR_LPARAM INDIR_DWORD -#define INDIR_LONG INDIR_DWORD -#define INDIR_ULONG INDIR_DWORD - -#ifdef STRICT -#define INDIR_HANDLE INDIR_PTR -#define INDIR_HWND INDIR_PTR -#define INDIR_HDC INDIR_PTR -#else -#define INDIR_HANDLE INDIR_UINT -#define INDIR_HWND INDIR_UINT -#define INDIR_HDC INDIR_UINT -#endif - -typedef struct tagCTL3DFUNCTIONS { - HINSTANCE dll; - /* Function Handles */ - HINDIR _Ctl3dSubclassDlg; - HINDIR _Ctl3dSubclassDlgEx; - HINDIR _Ctl3dGetVer; - HINDIR _Ctl3dEnabled; - HINDIR _Ctl3dCtlColor; - HINDIR _Ctl3dCtlColorEx; - HINDIR _Ctl3dColorChange; - HINDIR _Ctl3dSubclassCtl; - HINDIR _Ctl3dDlgFramePaint; - HINDIR _Ctl3dAutoSubclass; - HINDIR _Ctl3dRegister; - HINDIR _Ctl3dUnregister; - HINDIR _Ctl3dWinIniChange; -} CTL3DFUNCTIONS; - -static CTL3DFUNCTIONS Ctl3dFunc = { 0 }; - -static BOOL load_functions( CTL3DFUNCTIONS* functions ) -{ - FARPROC proc; - HINSTANCE dll; - - dll = LoadLibrary( "CTL3D.DLL" ); - if( dll < HINSTANCE_ERROR ) { - return( FALSE ); - } - - /* Function thunks */ - - proc = GetProcAddress(dll, "Ctl3dSubclassDlg"); - functions->_Ctl3dSubclassDlg = GetIndirectFunctionHandle( proc, - INDIR_HWND, - INDIR_WORD, - INDIR_ENDLIST ); - - proc = GetProcAddress( dll, "Ctl3dSubclassDlgEx" ); - functions->_Ctl3dSubclassDlgEx = GetIndirectFunctionHandle( proc, - INDIR_HWND, - INDIR_DWORD, - INDIR_ENDLIST ); - - proc = GetProcAddress( dll, "Ctl3dGetVer" ); - functions->_Ctl3dGetVer = GetIndirectFunctionHandle( proc, - INDIR_ENDLIST ); - - proc = GetProcAddress( dll, "Ctl3dEnabled" ); - functions->_Ctl3dEnabled = GetIndirectFunctionHandle( proc, - INDIR_ENDLIST ); - - proc = GetProcAddress( dll, "Ctl3dCtlColor" ); - functions->_Ctl3dCtlColor = GetIndirectFunctionHandle( proc, - INDIR_HDC, - INDIR_LONG, - INDIR_ENDLIST ); - - proc = GetProcAddress( dll, "Ctl3dCtlColorEx" ); - functions->_Ctl3dCtlColorEx = GetIndirectFunctionHandle( proc, - INDIR_UINT, - INDIR_WPARAM, - INDIR_LPARAM, - INDIR_ENDLIST ); - - proc = GetProcAddress( dll, "Ctl3dColorChange" ); - functions->_Ctl3dColorChange = GetIndirectFunctionHandle( proc, - INDIR_ENDLIST ); - - proc = GetProcAddress( dll, "Ctl3dSubclassCtl" ); - functions->_Ctl3dSubclassCtl = GetIndirectFunctionHandle( proc, - INDIR_HWND, - INDIR_ENDLIST ); - - proc = GetProcAddress( dll, "Ctl3dDlgFramePaint" ); - functions->_Ctl3dDlgFramePaint = GetIndirectFunctionHandle( proc, - INDIR_HWND, - INDIR_UINT, - INDIR_WPARAM, - INDIR_LPARAM, - INDIR_ENDLIST ); - - proc = GetProcAddress( dll, "Ctl3dAutoSubclass" ); - functions->_Ctl3dAutoSubclass = GetIndirectFunctionHandle( proc, - INDIR_HANDLE, - INDIR_ENDLIST ); - - proc = GetProcAddress( dll, "Ctl3dRegister" ); - functions->_Ctl3dRegister = GetIndirectFunctionHandle( proc, - INDIR_HANDLE, - INDIR_ENDLIST ); - - proc = GetProcAddress( dll, "Ctl3dUnregister" ); - functions->_Ctl3dUnregister = GetIndirectFunctionHandle( proc, - INDIR_HANDLE, - INDIR_ENDLIST ); - - proc = GetProcAddress( dll, "Ctl3dWinIniChange" ); - functions->_Ctl3dWinIniChange = GetIndirectFunctionHandle( proc, - INDIR_ENDLIST ); - - functions->dll = dll; - return( TRUE ); -} - -static void unload_functions( CTL3DFUNCTIONS * functions ) -{ - FreeLibrary( functions->dll ); - functions->dll = 0; -} - -/* Function Definitions */ - -BOOL WINAPI Ctl3dSubclassDlg(HWND hwnd, WORD w) -{ - if (!Ctl3dFunc.dll) - if (!load_functions(&Ctl3dFunc)) - return FALSE; - - return (BOOL)InvokeIndirectFunction(Ctl3dFunc._Ctl3dSubclassDlg, - hwnd, w); -} - -BOOL WINAPI Ctl3dSubclassDlgEx(HWND hwnd, DWORD dw) -{ - if (!Ctl3dFunc.dll) - if (!load_functions(&Ctl3dFunc)) - return FALSE; - - return (BOOL)InvokeIndirectFunction(Ctl3dFunc._Ctl3dSubclassDlgEx, - hwnd, dw); -} - -WORD WINAPI Ctl3dGetVer(void) -{ - if (!Ctl3dFunc.dll) - if (!load_functions(&Ctl3dFunc)) - return FALSE; - - return (WORD)InvokeIndirectFunction(Ctl3dFunc._Ctl3dGetVer); -} - -BOOL WINAPI Ctl3dEnabled(void) -{ - if (!Ctl3dFunc.dll) - if (!load_functions(&Ctl3dFunc)) - return FALSE; - - return (BOOL)InvokeIndirectFunction(Ctl3dFunc._Ctl3dEnabled); -} - -HBRUSH WINAPI Ctl3dCtlColor(HDC hdc, LONG l) -{ - if (!Ctl3dFunc.dll) - if (!load_functions(&Ctl3dFunc)) - return FALSE; - - return (HBRUSH)InvokeIndirectFunction(Ctl3dFunc._Ctl3dCtlColor, - hdc, l); -} - -HBRUSH WINAPI Ctl3dCtlColorEx(UINT ui, WPARAM wp, LPARAM lp) -{ - if (!Ctl3dFunc.dll) - if (!load_functions(&Ctl3dFunc)) - return FALSE; - - return (HBRUSH)InvokeIndirectFunction(Ctl3dFunc._Ctl3dCtlColorEx, - ui, wp, lp); -} - -BOOL WINAPI Ctl3dColorChange(void) -{ - if (!Ctl3dFunc.dll) - if (!load_functions(&Ctl3dFunc)) - return FALSE; - - return (BOOL)InvokeIndirectFunction(Ctl3dFunc._Ctl3dColorChange); -} - -BOOL WINAPI Ctl3dSubclassCtl(HWND hwnd) -{ - if (!Ctl3dFunc.dll) - if (!load_functions(&Ctl3dFunc)) - return FALSE; - - return (BOOL)InvokeIndirectFunction(Ctl3dFunc._Ctl3dSubclassCtl, - hwnd); -} - -LONG WINAPI Ctl3dDlgFramePaint(HWND hwnd, UINT ui, WPARAM wp, LPARAM lp) -{ - if (!Ctl3dFunc.dll) - if (!load_functions(&Ctl3dFunc)) - return FALSE; - - return (LONG)InvokeIndirectFunction(Ctl3dFunc._Ctl3dDlgFramePaint, - hwnd, ui, wp, lp); -} - -BOOL WINAPI Ctl3dAutoSubclass(HANDLE hnd) -{ - if (!Ctl3dFunc.dll) - if (!load_functions(&Ctl3dFunc)) - return FALSE; - - return (BOOL)InvokeIndirectFunction(Ctl3dFunc._Ctl3dAutoSubclass, - hnd); -} - -BOOL WINAPI Ctl3dRegister(HANDLE hnd) -{ - if (!Ctl3dFunc.dll) - if (!load_functions(&Ctl3dFunc)) - return FALSE; - - return (BOOL)InvokeIndirectFunction(Ctl3dFunc._Ctl3dRegister, - hnd); -} - -BOOL WINAPI Ctl3dUnregister(HANDLE hnd) -{ - if (!Ctl3dFunc.dll) - if (!load_functions(&Ctl3dFunc)) - return FALSE; - - return (BOOL)InvokeIndirectFunction(Ctl3dFunc._Ctl3dUnregister, - hnd); -} - -VOID WINAPI Ctl3dWinIniChange(void) -{ - if (!Ctl3dFunc.dll) - if (!load_functions(&Ctl3dFunc)) - return; - - InvokeIndirectFunction(Ctl3dFunc._Ctl3dWinIniChange); -} - -#ifdef __cplusplus -} -#endif - -#endif // __WINDOWS_386__ diff --git a/src/msw/ctl3d/wat386/ctl3d32.lnk b/src/msw/ctl3d/wat386/ctl3d32.lnk deleted file mode 100644 index 2ada8d2a55..0000000000 --- a/src/msw/ctl3d/wat386/ctl3d32.lnk +++ /dev/null @@ -1 +0,0 @@ -+-ctl3d32.obj diff --git a/src/msw/ctl3d/wat386/ctl3d32.obj b/src/msw/ctl3d/wat386/ctl3d32.obj deleted file mode 100644 index 11c666054f2b054089a53163be2bc7226d7e579d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1597 zcma)6O^@4D6n%~pJIRbDo}^3~&8UPnh%b?LCZdoL8-KWkg=r*9QAs9sq-ioF zP6x4?W%vV;TG&Jgsjx(dvZDM3B-9m1EQ&Z}=*)scR{|N^wQ=+u?DgQ`sxGf1D)I*%!py+q))BM0ECXrAtnpvgoPC z@oF%66`lRM>;G`+fAsogvJGP7Jlx5(_x;g{f77NuXwwl(CAjL|ea2S>gfbgk?5BHa zB%H_2`SbXB0^f_le!Wc`I4yCyeB;c(mz#m#ZQH|PtSNB!~b4GE2UxB5q&Vmr7w zlq6}~U&)gaHwp&Ba8rVs1s(x{#P|APM#?>dAx&mcf^}Km(^-@n^*%gmg=<+Po-(Qx z0+>7rhn-%x+X_YL+MPkK!`CvIERtMZ#)j-VE>R!OzDDAg%rvY;Aq2CYN|Wkv7Y~W6 zNh_m|2mM>AEP7631QRqYo5Gy@p(DF;U6gpH0HA;)0NfO?t9uPhc_R%4JB~+P=&)n6 z05FK3$Mbj%>R!N(8WA}lt~ksGZ{&b@5ib$}y1eAT*eA2EkoX>l5N`+|eg!j-H!eW@ zn#24-427@bMN$Cbs)LDL$&RBvu~03-Q2jr08_)!8ziz8nhGQH zW=*q*au9`zMeDK?xpQBv~8bUws@4=jLND#65cbz?P#Wf?W- ztlNz`v&Y3SkGk*o;^U~2Yj@7W0i=!)paVf^TK+J ry0NSQ%8(V}Qr0taerRjaO6nkq0t>!IaNxjH8?Hy( -#include - -#ifndef __TWIN32__ -#ifdef __GNUWIN32__ -#include "wx/msw/gnuwin32/extra.h" -#endif -#endif - -#include "wx/msw/curicop.h" -#include "wx/msw/curico.h" - -//***************************************************************************** -//* Function : ReadIconFile() * -//* Purpose : Reads an icon resource file and creates an icon based on that * -//* information. * -//* Parameters : char *szFileName - The icon resource file. * -//* Returns : A handle to an icon. The handle will be NULL if an icon cannot * -//* be created for any reason. * -//***************************************************************************** - -HICON ReadIconFile( char *szFileName, HINSTANCE hInst, int *W, int *H) -{ HICON hIcon; - HANDLE hDIB; - - if( (hDIB = ReadIcon(szFileName, W, H)) == (HANDLE) NULL) - // read the icon DIB from file - return (HICON) NULL; - hIcon = MakeIcon( hDIB, hInst); // create an icon from DIB - GlobalFree( hDIB); - return hIcon; -} - -//***************************************************************************** -//* Function : CursorToIcon() * -//* Purpose : Reads a cursor resource file and creates an icon based on that * -//* information. * -//* Parameters : char *szFileName - The cursor resource file. * -//* Returns : A handle to an icon. The handle will be NULL if an icon cannot * -//* be created for any reason. * -//* Comments : A cursor is monochrome. So, the resulting icon will also be * -//* monochrome. * -//***************************************************************************** - -HICON CursorToIcon( char *szFileName, HINSTANCE hInst, int *W, int *H) -{ HANDLE hDIB; // Handle to DIB memory - HICON hIcon; // Handle to Icon - - if( (hDIB = ReadCur( szFileName, NULL, W, H)) == (HANDLE) NULL) - // Read cursor DIB - return (HICON) NULL; - hIcon = MakeIcon( hDIB, hInst); // make icon from cursor DIB - GlobalFree( hDIB); - return hIcon; -} - -//***************************************************************************** -//* Function : ReadIcon() * -//* Purpose : Reads an icon resource file and extracts the DIB information. * -//* Parameters : char *szFileName - The icon resource file. * -//* Returns : A handle to a DIB. The handle will be NULL if the resource file* -//* is corrupt or if memory cannot be allocated for the DIB info. * -//***************************************************************************** - -HANDLE ReadIcon( char *szFileName, int *W, int *H) -{ ICONFILEHEADER iconFileHead; // ICON file header structure - ICONFILERES iconFileRes; // ICON file resource - WORD cbHead, - cbRes, - cbBits; // Used for reading in file - int hFile; // File handle - LPBITMAPINFO lpDIB; // Pointer to DIB memory - HANDLE hDIB; - int nWidth = GetSystemMetrics( SM_CXICON), - nHeight = GetSystemMetrics( SM_CYICON), - nDirEntries = 0; - - // Open and read the .ICO file header and the first ICONFILERES - hFile = _lopen( szFileName, OF_READ); - cbHead = _lread( hFile, (LPSTR)&iconFileHead, sizeof(ICONFILEHEADER)); - cbRes = _lread( hFile, (LPSTR)&iconFileRes, sizeof(ICONFILERES)); - ++nDirEntries; - - if((cbHead != sizeof( ICONFILEHEADER)) || (cbRes != sizeof( ICONFILERES))) - return (HANDLE) NULL; - // Verify that it's an .ICON file - if( iconFileHead.wResourceType != 1) - return (HANDLE) NULL; - - // inserted by P.S. - while( (nDirEntries < iconFileHead.wResourceCount) && - ((iconFileRes.bWidth != nWidth) || (iconFileRes.bHeight != nHeight))) - { - cbRes = _lread( hFile, (LPSTR )&iconFileRes, sizeof( ICONFILERES)); - if(cbRes != sizeof( ICONFILERES)) - return (HANDLE) NULL; - else - ++nDirEntries; - } - - if(W != 0) - *W = iconFileRes.bWidth; - if(H != 0) - *H = iconFileRes.bHeight; - - // Allocate and lock memory to read in the DIB - hDIB = GlobalAlloc(GHND, iconFileRes.dwDIBSize); - if(hDIB == (HANDLE) NULL) - return (HANDLE) NULL; - -#ifdef __WINDOWS_386__ - lpDIB = (LPBITMAPINFO)MK_FP32(GlobalLock(hDIB)); -#else - lpDIB = (LPBITMAPINFO)GlobalLock(hDIB); -#endif - - // Now read the DIB portion of the file, which follows the - // end of icon resource table - _llseek( hFile, iconFileRes.dwDIBOffset, 0); - cbBits = _lread( hFile, (LPSTR )lpDIB, (WORD )iconFileRes.dwDIBSize); - - // Done reading file - _lclose(hFile); - - GlobalUnlock( hDIB); - - if( (DWORD )cbBits != iconFileRes.dwDIBSize) - { - GlobalFree( hDIB); - return (HANDLE) NULL; - } - return hDIB; -} - -//***************************************************************************** -//* Function : MakeIcon() * -//* Purpose : Creates an icon based on the DIB info. returned by ReadIcon. * -//* Parameters : HANDLE hDIB - A handle to the icon's DIB information. * -//* Returns : A handle to an Icon. NULL is returned if an icon cannot be * -//* successfully created. * -//* Comments : The steps involved in making an icon from a DIB are very * -//* similar to those involved in making a cursor from a DIB. * -//* Steps : 1) Obtain a pointer to the Icon's DIB bits. * -//* 2) Divide the DIB'd height with 2 to account for the fact that the* -//* DIB stores both the XOR and the AND masks, one after the other.* -//* 3) Determine the offset to the XOR bits. * -//* 4) Determine the offset to the AND bits. * -//* 5) Create a device dependent bitmap with the XOR bits. * -//* 6) Obtain the device dependent XOR bitmask and save in memory. * -//* The AND bitmask is monochrome. Monochrome bits are identical * -//* in both the device dependent bitmaps and device independent * -//* bitmaps. So, no need to convert the AND bitmask. * -//* 7) Since a DIB is stored upside down, flip the monochrome AND bits* -//* by scanlines. * -//* 8) Use the XOR and AND bits and create an icon with CreateIcon. * -//***************************************************************************** - -HICON MakeIcon( HANDLE hDIB, HINSTANCE hInst) -{ LPSTR lpXORbits, - lpANDbits; // Pointer to XOR and AND bits - HBITMAP hbmXor; // handle to XOR bitmap - BITMAP bmpXor; // Used to manipulate XOR bitmap - DWORD dwBmpSize; // Size of XOR bitmap - HANDLE hXorDDB; - LPSTR lpXorDDB; - LONG szFlip[32]; - int j, - k; - HDC hDC; - HICON hIcon; - LPBITMAPINFO lpDIB; - - // 1) Obtain a pointer to the Icon's DIB bits. -#ifdef __WINDOWS_386__ - lpDIB = (LPBITMAPINFO )MK_FP32(GlobalLock( hDIB)); -#else - lpDIB = (LPBITMAPINFO )GlobalLock( hDIB); -#endif - - // 2) Divide the DIB'd height with 2 to account for the fact that the - // DIB stores both the XOR and the AND masks, one after the other. - lpDIB->bmiHeader.biHeight /= 2; - - // 3) Determine the offset to the XOR bits. - // To obtain this value, we have to skip the header, and color table - lpXORbits = (LPSTR )lpDIB + (int )lpDIB->bmiHeader.biSize + - (DIBNumColors( (LPSTR )lpDIB) * sizeof( RGBQUAD)); - - // 4) Determine the offset to the AND bits. - // To obtain this value, skip the XOR bits - lpANDbits = lpXORbits + (int )(lpDIB->bmiHeader.biHeight * - (WIDTHBYTES ( lpDIB->bmiHeader.biWidth * - lpDIB->bmiHeader.biBitCount))); - - // Get a hDC so we can create a bitmap compatible with it - hDC = CreateDC( "DISPLAY", NULL, NULL, NULL); - - // 5) Create a device dependent bitmap with the XOR bits. - hbmXor = CreateDIBitmap( hDC, (LPBITMAPINFOHEADER)&(lpDIB->bmiHeader), - CBM_INIT, lpXORbits, lpDIB, DIB_RGB_COLORS); - - GetObject( hbmXor, sizeof(BITMAP), (LPSTR)&bmpXor); - - dwBmpSize = (DWORD )(bmpXor.bmWidthBytes * bmpXor.bmHeight * bmpXor.bmPlanes); - hXorDDB = GlobalAlloc( GHND, dwBmpSize); - if(hXorDDB == (HANDLE) NULL) - { - // clean up before quitting - DeleteObject( hbmXor); - DeleteDC( hDC); - GlobalUnlock( hDIB); - return (HICON) NULL; - } - -#ifdef __WINDOWS_386__ - lpXorDDB = (LPSTR)MK_FP32(GlobalLock( hXorDDB)); -#else - lpXorDDB = (LPSTR)GlobalLock( hXorDDB); -#endif - - // 6) Obtain the device dependent XOR bitmask and save in memory. - // The AND bitmask is monochrome. Monochrome bits are identical - // in both the device dependent bitmaps and device independent - // bitmaps. So, no need to convert the AND bitmask. - GetBitmapBits( hbmXor, dwBmpSize, lpXorDDB); - - // 7) Since a DIB is stored upside down, flip the monochrome AND bits by scanlines. - k = (int )lpDIB->bmiHeader.biHeight; - for( j = 0 ; j < k ; j++, lpANDbits += sizeof(DWORD)) - szFlip[(k - 1) - j] = *(DWORD FAR *)lpANDbits; - - // 8) Use the XOR and AND bits and create an icon with CreateIcon. - hIcon = CreateIcon( hInst, bmpXor.bmWidth, bmpXor.bmHeight, bmpXor.bmPlanes, - bmpXor.bmBitsPixel, (const BYTE *)szFlip, (const BYTE *)lpXorDDB); - - // Clean up before exiting. - DeleteObject( hbmXor); - GlobalUnlock( hXorDDB); - GlobalFree( hXorDDB); - DeleteDC( hDC); - GlobalUnlock( hDIB); - - return hIcon; -} - -// ************************************************************************** - -//***************************************************************************** -//* Function : ReadCursorFile() * -//* Purpose : Reads a cursor resource file and creates a cursor based on that* -//* information. * -//* Parameters : char *szFileName - The cursor resource file. * -//* Returns : A handle to a cursor. The handle will be NULL if a cursor can't* -//* be created for any reason. * -//***************************************************************************** - -HCURSOR ReadCursorFile( char *szFileName, HINSTANCE hInst, int *W, int *H, - int *XHot, int *YHot) -{ HANDLE hDIB; // Handle to DIB memory - HCURSOR hCursor; - POINT ptHotSpot; - - // read cur DIB from file - if( (hDIB = ReadCur( szFileName, (LPPOINT )&ptHotSpot, W, H)) == (HANDLE) NULL) - return (HCURSOR) NULL; - hCursor = MakeCursor( hDIB, (LPPOINT )&ptHotSpot, hInst);//create cur from DIB - if(XHot != 0) - *XHot = ptHotSpot.x; - if(YHot != 0) - *YHot = ptHotSpot.y; - GlobalFree( hDIB); - return ( hCursor); -} - -//***************************************************************************** -//* Function : IconToCursor() * -//* Purpose : Reads an icon resource file and creates a cursor based on that * -//* information. * -//* Parameters : char *szFileName - The icon resource file. * -//* Returns : A handle to a cursor. The handle will be NULL if a cursor can't* -//* be created for any reason. * -//* Comments : An icon may be in color. So, the DIB has to be forced to be * -//* monochrome. * -//***************************************************************************** - -HCURSOR IconToCursor( char *szFileName, HINSTANCE hInst, int XHot, int YHot, - int *W, int *H) -{ HCURSOR hCursor; - HANDLE hDIB; - POINT ptHotSpot; - - if( (hDIB = ReadIcon( szFileName, W, H)) == (HANDLE) NULL) - //read icon file to get icon DIB - return (HCURSOR) NULL; - // Set the hot spot of the cursor - ptHotSpot.x = XHot; - ptHotSpot.y = YHot; - hCursor = MakeCursor( hDIB, (LPPOINT )&ptHotSpot, hInst); - //create cursor from DIB - GlobalFree( hDIB); - return hCursor; -} - -//***************************************************************************** -//* Function : ReadCur() * -//* Purpose : Reads a cursor resource file and extracts the DIB information. * -//* Parameters : LPSTR szFileName - The cursor resource file. * -//* Returns : A handle to a DIB. The handle will be NULL if the resource file* -//* is corrupt or if memory cannot be allocated for the DIB info. * -//***************************************************************************** - -HANDLE ReadCur( char *szFileName, LPPOINT lpptHotSpot, int *W, int *H) -{ CURFILEHEADER curFileHead; // CURSOR file header structure - CURFILERES curFileRes; // CURSOR file resource - WORD cbHead, - cbRes, - cbBits; // Used for reading in file - LPBITMAPINFO lpDIB; // Pointer to DIB memory - int hFile; // Handle to File - HANDLE hDIB; - int nWidth = GetSystemMetrics( SM_CXCURSOR), - nHeight = GetSystemMetrics( SM_CYCURSOR), - nDirEntries = 0; - - // Open and read the .ICO file header and the first ICONFILERES - hFile = _lopen( szFileName, OF_READ); - cbHead = _lread( hFile, (LPSTR )&curFileHead, sizeof( CURFILEHEADER)); - cbRes = _lread( hFile, (LPSTR )&curFileRes, sizeof( CURFILERES)); - ++nDirEntries; - - if((cbHead != sizeof( CURFILEHEADER)) || (cbRes != sizeof( CURFILERES))) - return (HANDLE) NULL; - - // Verify that it's an .CUR file - if ((curFileRes.bReserved1 != 0) || (curFileHead.wResourceType != 2)) - return (HANDLE) NULL; - - // following added by P.S. - while( (nDirEntries < curFileHead.wResourceCount) && - ((curFileRes.bWidth != nWidth) || (curFileRes.bHeight != nHeight))) - { - cbRes = _lread( hFile, (LPSTR )&curFileRes, sizeof( CURFILERES)); - if(cbRes != sizeof( CURFILERES)) - return (HANDLE) NULL; - else - ++nDirEntries; - } - if(W != 0) - *W = curFileRes.bWidth; - if(H != 0) - *H = curFileRes.bHeight; - - - // Allocate & lock memory to read in the DIB - hDIB = GlobalAlloc(GHND, curFileRes.dwDIBSize); - if(hDIB == (HANDLE) NULL) - return (HANDLE) NULL; - -#ifdef __WINDOWS_386__ - lpDIB = (LPBITMAPINFO )MK_FP32(GlobalLock(hDIB)); -#else - lpDIB = (LPBITMAPINFO )GlobalLock(hDIB); -#endif - - // Now read the DIB portion of the file, which follows the - // end of icon resource table - _llseek( hFile, curFileRes.dwDIBOffset, 0); - cbBits = _lread( hFile, (LPSTR )lpDIB, (WORD )curFileRes.dwDIBSize); - - // Done reading file - _lclose(hFile); - - if((DWORD)cbBits != curFileRes.dwDIBSize) - { - GlobalUnlock( hDIB); - GlobalFree( hDIB); - return (HANDLE) NULL; - } - if(lpptHotSpot != (LPPOINT) NULL) // If it is necessary to know the hot spot - { - lpptHotSpot->x = (int )curFileRes.wXHotspot; - lpptHotSpot->y = (int )curFileRes.wYHotspot; - } - GlobalUnlock( hDIB); - return( hDIB); -} - -//***************************************************************************** -//* Function : ColorDDBToMonoDDB() * -//* Purpose : Converts a color bitmap to a monochrome bitmap. * -//* Parameters : HBITMAP hbm - The color bitmap. * -//* Returns : A handle to a monochrome bitmap. * -//***************************************************************************** -HBITMAP ColorDDBToMonoDDB ( HBITMAP hbm) -{ BITMAP bm; - BITMAPINFOHEADER bi; - LPBITMAPINFOHEADER lpbi; - DWORD dwLen; - HANDLE hdib; - HANDLE h; - HDC hdc; - HBITMAP hbmMono; - - GetObject( hbm, sizeof( bm), (LPSTR )&bm); - - bi.biSize = sizeof( BITMAPINFOHEADER); // size of this structure - bi.biWidth = bm.bmWidth; // bitmap width in pixels - bi.biHeight = bm.bmHeight; // bitmap height in pixels - bi.biPlanes = 1; // # of planes always 1 for DIBs - bi.biBitCount = bm.bmPlanes * bm.bmBitsPixel; // color bits per pixel - bi.biCompression = BI_RGB; // no compression - bi.biSizeImage = 0; // 0 means default size - bi.biXPelsPerMeter = 0; // not used - bi.biYPelsPerMeter = 0; // not used - bi.biClrUsed = 0; // 0 means default colors - bi.biClrImportant = 0; // 0 means defaults - - dwLen = bi.biSize + PaletteSize((LPSTR)&bi); - - hdc = GetDC( (HWND) NULL); - - hdib = GlobalAlloc( GHND, dwLen); - if (hdib == (HANDLE) NULL) - { - ReleaseDC( (HWND) NULL, hdc); - return (HBITMAP) NULL; - } - -#ifdef __WINDOWS_386__ - lpbi = (LPBITMAPINFOHEADER )MK_FP32(GlobalLock( hdib)); -#else - lpbi = (LPBITMAPINFOHEADER )GlobalLock( hdib); -#endif - - *lpbi = bi; - - // Call GetDIBits with a NULL lpBits parameter; it will calculate - // the biSizeImage field. - GetDIBits( hdc, hbm, 0, (WORD)bi.biHeight, - NULL, (LPBITMAPINFO)lpbi, DIB_RGB_COLORS); - - bi = *lpbi; - GlobalUnlock( hdib); - - // If the driver did not fill in the biSizeImage field, make one up. - if(bi.biSizeImage == 0) - bi.biSizeImage = WIDTHBYTES( (DWORD )bm.bmWidth * bi.biBitCount) * bm.bmHeight; - - // Reallocate the buffer big enough to hold all the bits. - dwLen = bi.biSize + PaletteSize((LPSTR)&bi) + bi.biSizeImage; - if( (h = GlobalReAlloc( hdib, dwLen, 0)) != 0) - hdib = h; - else - { - GlobalFree( hdib); - ReleaseDC( (HWND) NULL, hdc); - return (HBITMAP) NULL; - } - - // Call GetDIBits with a NON-NULL lpBits parameter, to actually - // get the bits this time. - -#ifdef __WINDOWS_386__ - lpbi = (LPBITMAPINFOHEADER )MK_FP32(GlobalLock( hdib)); -#else - lpbi = (LPBITMAPINFOHEADER )GlobalLock( hdib); -#endif - - if( GetDIBits( hdc, hbm, 0, (WORD)bi.biHeight, - (LPSTR)lpbi + (WORD)lpbi->biSize + PaletteSize((LPSTR)lpbi), - (LPBITMAPINFO)lpbi, DIB_RGB_COLORS) == 0) - { - GlobalUnlock( hdib); - hdib = (HANDLE) NULL; - ReleaseDC( (HWND) NULL, hdc); - return (HBITMAP) NULL; - } - - // Finally, create a monochrome DDB, and put the DIB into - // it. SetDIBits does smart color conversion. - hbmMono = CreateBitmap((WORD)lpbi->biWidth, (WORD)lpbi->biHeight, 1, 1, NULL); - SetDIBits( hdc, hbmMono, (WORD)0, (WORD)lpbi->biHeight, - (LPSTR)lpbi + (int )lpbi->biSize + PaletteSize((LPSTR)lpbi), - (LPBITMAPINFO)lpbi, DIB_RGB_COLORS); - - bi = *lpbi; - GlobalUnlock( hdib); - GlobalFree( hdib); - - ReleaseDC((HWND) NULL, hdc); - return hbmMono; -} - -//***************************************************************************** -//* Function : MakeCursor() * -//* Purpose : Creates a cursor based on the DIB info. returned by ReadCursor.* -//* Parameters : HANDLE hDIB - A handle to the cursor's DIB information. * -//* LPPOINT lppt - A pointer to a point struct. indicating the * -//* location of the Cursor's hot spot. * -//* Returns : A handle to a cursor. NULL is returned if a cursor cannot be * -//* successfully created. * -//* Comments : The steps involved in making a cursor from a DIB are very * -//* similar to those involved in making an icon from a DIB. * -//* Steps : 1) Obtain a pointer to the Cursor's DIB bits. * -//* 2) Divide the DIB's height with 2 to account for the fact that the* -//* DIB stores both the XOR and the AND masks, one after the other.* -//* 3) Determine the offset to the XOR bits. * -//* 4) Determine the offset to the AND bits. * -//* 5) Create a device dependent bitmap with the XOR bits. * -//* 6) Obtain the device dependent XOR bitmask and save in memory. * -//* The AND bitmask is monochrome. Monochrome bits are identical * -//* in both the device dependent bitmaps and device independent * -//* bitmaps. So, no need to convert the AND bitmask. * -//* 7) Since a DIB is stored upside down, flip the monochrome AND bits* -//* by scanlines. * -//* 8) Use the XOR and AND bits and create a cursor with CreateCursor.* -//***************************************************************************** - -HCURSOR MakeCursor( HANDLE hDIB, LPPOINT lpptHotSpot, HINSTANCE hInst) -{ LPSTR lpXORbits, - lpANDbits; // Pointer to XOR and AND bits - HBITMAP hbmXor; // handle to XOR bitmap - BITMAP bmpXor; // Used to manipulate XOR bitmap - DWORD dwBmpSize; // Size of XOR bitmap - HCURSOR hCursor; - HANDLE hXorDDB; - LPSTR lpXorDDB; - LONG szFlip[32]; - int j, - k; - HDC hDC; - LPBITMAPINFO lpDIB; - - // 1) Obtain a pointer to the Cursor's DIB bits. -#ifdef __WINDOWS_386__ - lpDIB = (LPBITMAPINFO )MK_FP32(GlobalLock( hDIB)); -#else - lpDIB = (LPBITMAPINFO )GlobalLock( hDIB); -#endif - - // 2) Divide the DIB's height with 2 to account for the fact that the - // DIB stores both the XOR and the AND masks, one after the other. - lpDIB->bmiHeader.biHeight /= 2; - - // 3) Determine the offset to the XOR bits. - // To obtain this value, we have to skip the header, and color table - lpXORbits = (LPSTR )lpDIB + (int )lpDIB->bmiHeader.biSize + - (DIBNumColors((LPSTR)lpDIB) * sizeof(RGBQUAD)); - - // 4) Determine the offset to the AND bits - // To obtain this value, skip the XOR bits - lpANDbits = lpXORbits + (int )( lpDIB->bmiHeader.biHeight * - (WIDTHBYTES( lpDIB->bmiHeader.biWidth * - lpDIB->bmiHeader.biBitCount))); - - // Get a hDC so we can create a bitmap compatible with it - hDC = CreateDC( "DISPLAY", NULL, NULL, NULL); - - // 5) Create a device dependent bitmap with the XOR bits. - hbmXor = CreateBitmap( (int )lpDIB->bmiHeader.biWidth, - (int )lpDIB->bmiHeader.biHeight, 1, 1, NULL); - SetDIBits( hDC, hbmXor, 0, (WORD)lpDIB->bmiHeader.biHeight, lpXORbits, - lpDIB, DIB_RGB_COLORS); - GetObject( hbmXor, sizeof( BITMAP), (LPSTR )&bmpXor); - - dwBmpSize = (DWORD )(bmpXor.bmWidthBytes * bmpXor.bmHeight * bmpXor.bmPlanes); - hXorDDB = GlobalAlloc( GHND, dwBmpSize); - if(hXorDDB == (HANDLE) NULL) - { // clean up before quitting - DeleteObject( hbmXor); - DeleteDC( hDC); - GlobalUnlock( hDIB); - return (HCURSOR) NULL; - } -#ifdef __WINDOWS_386__ - lpXorDDB = (LPSTR)MK_FP32(GlobalLock( hXorDDB)); -#else - lpXorDDB = (LPSTR)GlobalLock( hXorDDB); -#endif - - // 6) Obtain the device dependent XOR bitmask and save in memory. - // The AND bitmask is monochrome. Monochrome bits are identical - // in both the device dependent bitmaps and device independent - // bitmaps. So, no need to convert the AND bitmask. - GetBitmapBits( hbmXor, dwBmpSize, lpXorDDB); - - // 7) Since a DIB is stored upside down, flip the monochrome AND bits by scanlines. - k = (int)lpDIB->bmiHeader.biHeight; - for( j = 0 ; j < k; j++, lpANDbits += sizeof( DWORD)) - szFlip[(k - 1) - j] = *(DWORD FAR *)lpANDbits; - - // 8) Use the XOR and AND bits and create a cursor with CreateCursor. - hCursor = CreateCursor( hInst, lpptHotSpot->x, lpptHotSpot->y, - bmpXor.bmWidth, bmpXor.bmHeight, (LPSTR)szFlip, lpXorDDB); - - // Clean up before exiting. - DeleteObject( hbmXor); - GlobalUnlock( hXorDDB); - GlobalFree( hXorDDB); - DeleteDC( hDC); - GlobalUnlock( hDIB); - - return hCursor; -} - -//***************************************************************************** -//* Function : PaletteSize() * -//* Purpose : Calculates the palette size in bytes. If the info. block is of * -//* the BITMAPCOREHEADER type, the number of colors is multiplied * -//* by sizeof(RGBTRIPLE) to give the palette size, otherwise the * -//* number of colors is multiplied by sizeof(RGBQUAD). * -//* Parameters : LPSTR pv - pointer to the BITMAPINFOHEADER * -//* Returns : The size of the palette. * -//***************************************************************************** - -WORD PaletteSize( LPSTR pv) -{ LPBITMAPINFOHEADER lpbi; - WORD NumColors; - - lpbi = (LPBITMAPINFOHEADER )pv; - NumColors = DIBNumColors((LPSTR )lpbi); - - if(lpbi->biSize == sizeof( BITMAPCOREHEADER)) // OS/2 style DIBs - return NumColors * sizeof( RGBTRIPLE); - else - return NumColors * sizeof( RGBQUAD); -} - -//***************************************************************************** -//* Function : DIBNumColors() * -//* Purpose : This function calculates the number of colors in the DIB's * -//* color table by finding the bits per pixel for the DIB (whether * -//* Win3.0 or OS/2-style DIB). If bits per pixel is 1: colors=2, * -//* if 4: colors=16, if 8: colors=256, if 24, no colors in color * -//* table. * -//* Parameters : LPSTR lpbi - pointer to packed-DIB memory block. * -//* Returns : The number of colors in the color table. * -//***************************************************************************** - -WORD DIBNumColors ( LPSTR pv) -{ int bits; - BITMAPINFOHEADER *lpbi; - BITMAPCOREHEADER *lpbc; - - lpbi = ((BITMAPINFOHEADER* )pv); // assume win 3.0 style DIBs - lpbc = ((BITMAPCOREHEADER* )pv); // assume OS/2 style DIBs - - // With the BITMAPINFO format headers, the size of the palette - // is in biClrUsed, whereas in the BITMAPCORE - style headers, it - // is dependent on the bits per pixel ( = 2 raised to the power of - // bits/pixel). - - if(lpbi->biSize != sizeof( BITMAPCOREHEADER)) - { - if(lpbi->biClrUsed != 0) - return (WORD)lpbi->biClrUsed; - bits = lpbi->biBitCount; - } - else - bits = lpbc->bcBitCount; - - switch( bits) - { - case 1: - return 2; - case 4: - return 16; - case 8: - return 256; - default: - // A 24 bitcount DIB has no color table - return 0; - } -} - -#if 0 -// ****************************************************************** -BOOL fGetXPixmap( BOOL fIsIcon, char *szFileName, HINSTANCE hInst, - char cData[], int &width, int &height) -{ HDC hdc, - hdcMemory; - HBITMAP hbmp, - holdbmp; - int i, - j, - w, - h; - BYTE *s, - cByte, - cMask; - COLORREF rgb; - HCURSOR hIconOrCursor = fIsIcon ? - IconToCursor( szFileName, hInst, 0, 0, &w, &h) - : ReadCursorFile( szFileName, hInst, &w, &h, 0, 0); - int sum; - - if(hIconOrCursor == 0) - return FALSE; - - hdc = GetDC( GetDesktopWindow()); - hdcMemory = CreateCompatibleDC( hdc); - hbmp = CreateCompatibleBitmap( hdc, w, h); - holdbmp = SelectObject( hdcMemory, hbmp); - PatBlt( hdcMemory, 0, 0, w, h, BLACKNESS); // or use WHITENESS?? - DrawIcon( hdcMemory, 0, 0, hIconOrCursor); //using HCURSOR with DrawIcon is OK - - // the data retrieval follows: - width = w; - height = h; - for( j = 0, s = (BYTE *)cData ; j < h ; ++j) - for( i = 0 ; i < w ; ++i, cMask >>= 1) - { - if( (i % 8) == 0) - { - cByte = 0; - cMask = 0x80; - } - rgb = GetPixel( hdcMemory, i, j); - sum = (int )(rgb & 0xFFL); - sum += (int )((rgb & 0xFF00L) >> 8); - sum += (int )((rgb & 0xFF0000L) >> 16); - if(sum > 381) - cByte = cByte | cMask; - if( (i % 8) == 7) - { - *s = cByte; - ++s; - } - } - SelectObject( hdcMemory, holdbmp); - DeleteDC( hdcMemory); - ReleaseDC( GetDesktopWindow(), hdc); - DestroyCursor( hIconOrCursor); - DeleteObject( hbmp); - return TRUE; -} -#endif - -// Added from scavenged internet code, JACS 23/6/95 -HCURSOR MakeCursorFromBitmap(HINSTANCE hInst, HBITMAP hBitmap, POINT *pPoint) -{ - HDC hDCColor, hDCMono; - HDC hDC; - HBITMAP hBmpOld; - HBITMAP hAndBmp; - HBITMAP hXorBmp; - HCURSOR hNewCursor; - BITMAP bm; - DWORD dwBytes; - NPSTR andBits; - NPSTR xorBits; - - hDC = GetDC((HWND) NULL); - hDCColor = CreateCompatibleDC(hDC); - hDCMono = CreateCompatibleDC(hDC); - hAndBmp = CreateCompatibleBitmap(hDCMono, 32, 32); - hXorBmp = CreateCompatibleBitmap(hDCMono, 32, 32); - - hBmpOld = (HBITMAP) SelectObject(hDCColor, hBitmap); - SelectObject(hDCMono, hAndBmp); - SetBkColor(hDCColor, RGB(191, 191, 191)); - - BitBlt(hDCMono, 0, 0, 32, 32, hDCColor, 0, 0, SRCCOPY); - - // Now we have the AND Mask - - GetObject(hAndBmp, sizeof(BITMAP), (LPSTR) &bm); - dwBytes = (bm.bmWidthBytes * bm.bmHeight); - andBits = (NPSTR) LocalAlloc(LPTR, dwBytes); - GetBitmapBits(hAndBmp, dwBytes, andBits); - - SelectObject(hDCMono, hXorBmp); - SetBkColor(hDCColor, RGB(0, 0, 0)); - - BitBlt(hDCMono, 0, 0, 32, 32, hDCColor, 0, 0, SRCCOPY); - - // Now we have the XOR Mask - - GetObject(hXorBmp, sizeof(BITMAP), (LPSTR) &bm); - dwBytes = (bm.bmWidthBytes * bm.bmHeight); - xorBits = (NPSTR) LocalAlloc(LPTR, dwBytes); - GetBitmapBits(hXorBmp, dwBytes, xorBits); - - if (pPoint->x > 32) - pPoint->x = 32; - if (pPoint->y > 32) - pPoint->y = 32; - - hNewCursor = CreateCursor(hInst, - pPoint->x, pPoint->y, 32, 32, andBits, xorBits); - - SelectObject(hDCColor, hBmpOld); - SelectObject(hDCMono, hBmpOld); - DeleteDC(hDCColor); - DeleteDC(hDCMono); - DeleteObject(hAndBmp); - DeleteObject(hXorBmp); - ReleaseDC(NULL, hDC); -#ifndef __WIN32__ - LocalUnlock(LocalHandle((WORD) andBits)); - LocalUnlock(LocalHandle((WORD) xorBits)); - LocalFree(LocalHandle((WORD) andBits)); - LocalFree(LocalHandle((WORD) xorBits)); -#else - LocalUnlock(LocalHandle((LPCVOID) andBits)); - LocalUnlock(LocalHandle((LPCVOID) xorBits)); - LocalFree(LocalHandle((LPCVOID) andBits)); - LocalFree(LocalHandle((LPCVOID) xorBits)); -#endif - return hNewCursor; -} - -/* - * This doesn't work: just gives us a grey square. Ideas, anyone? - */ - -HICON MakeIconFromBitmap(HINSTANCE hInst, HBITMAP hBitmap) -{ - HDC hDCColor, hDCMono; - HDC hDC; - HBITMAP hBmpOld; - HBITMAP hAndBmp; - HBITMAP hXorBmp; - HICON hNewIcon; - BITMAP bm; - DWORD dwBytes; - NPSTR andBits; - NPSTR xorBits; - - hDC = GetDC((HWND) NULL); - hDCColor = CreateCompatibleDC(hDC); - hDCMono = CreateCompatibleDC(hDC); - hAndBmp = CreateCompatibleBitmap(hDCMono, 32, 32); - hXorBmp = CreateCompatibleBitmap(hDCMono, 32, 32); - - hBmpOld = (HBITMAP) SelectObject(hDCColor, hBitmap); - SelectObject(hDCMono, hAndBmp); - SetBkColor(hDCColor, RGB(191, 191, 191)); - - BitBlt(hDCMono, 0, 0, 32, 32, hDCColor, 0, 0, SRCCOPY); - - // Now we have the AND Mask - - GetObject(hAndBmp, sizeof(BITMAP), (LPSTR) &bm); - dwBytes = (bm.bmWidthBytes * bm.bmHeight); - andBits = (NPSTR) LocalAlloc(LPTR, dwBytes); - GetBitmapBits(hAndBmp, dwBytes, andBits); - - SelectObject(hDCMono, hXorBmp); - SetBkColor(hDCColor, RGB(0, 0, 0)); - - BitBlt(hDCMono, 0, 0, 32, 32, hDCColor, 0, 0, SRCCOPY); - - // Now we have the XOR Mask - - GetObject(hXorBmp, sizeof(BITMAP), (LPSTR) &bm); - dwBytes = (bm.bmWidthBytes * bm.bmHeight); - xorBits = (NPSTR) LocalAlloc(LPTR, dwBytes); - GetBitmapBits(hXorBmp, dwBytes, xorBits); - - hNewIcon = CreateIcon(hInst, 1, 4, 32, 32, (unsigned char *)andBits, (unsigned char *)xorBits); - - SelectObject(hDCColor, hBmpOld); - SelectObject(hDCMono, hBmpOld); - DeleteDC(hDCColor); - DeleteDC(hDCMono); - DeleteObject(hAndBmp); - DeleteObject(hXorBmp); - ReleaseDC((HWND) NULL, hDC); -#ifndef __WIN32__ - LocalUnlock(LocalHandle((WORD) andBits)); - LocalUnlock(LocalHandle((WORD) xorBits)); - LocalFree(LocalHandle((WORD) andBits)); - LocalFree(LocalHandle((WORD) xorBits)); -#else - LocalUnlock(LocalHandle((LPCVOID) andBits)); - LocalUnlock(LocalHandle((LPCVOID) xorBits)); - LocalFree(LocalHandle((LPCVOID) andBits)); - LocalFree(LocalHandle((LPCVOID) xorBits)); -#endif - return hNewIcon; -} - diff --git a/src/msw/cursor.cpp b/src/msw/cursor.cpp deleted file mode 100644 index 6e8fc77ee2..0000000000 --- a/src/msw/cursor.cpp +++ /dev/null @@ -1,274 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: cursor.cpp -// Purpose: wxCursor class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "cursor.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include -#include "wx/setup.h" -#include "wx/list.h" -#include "wx/utils.h" -#include "wx/app.h" -#include "wx/cursor.h" -#endif - -#include "wx/msw/private.h" -#include "wx/msw/dib.h" - -#include "assert.h" - -#if wxUSE_RESOURCE_LOADING_IN_MSW -#include "wx/msw/curico.h" -#include "wx/msw/curicop.h" -#endif - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxCursor, wxBitmap) -#endif - -wxCursorRefData::wxCursorRefData(void) -{ - m_width = 32; m_height = 32; - m_hCursor = 0 ; - m_destroyCursor = FALSE; -} - -wxCursorRefData::~wxCursorRefData(void) -{ - if ( m_hCursor && m_destroyCursor) - ::DestroyCursor((HICON) m_hCursor); -} - -// Cursors -wxCursor::wxCursor(void) -{ -} - -wxCursor::wxCursor(const char WXUNUSED(bits)[], int WXUNUSED(width), int WXUNUSED(height), - int WXUNUSED(hotSpotX), int WXUNUSED(hotSpotY), const char WXUNUSED(maskBits)[]) -{ -} - -wxCursor::wxCursor(const wxString& cursor_file, long flags, int hotSpotX, int hotSpotY) -{ - m_refData = new wxIconRefData; - - M_CURSORDATA->m_destroyCursor = FALSE; - M_CURSORDATA->m_hCursor = 0; - M_CURSORDATA->m_ok = FALSE; - if (flags & wxBITMAP_TYPE_CUR_RESOURCE) - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), cursor_file); - if (M_CURSORDATA->m_hCursor) - M_CURSORDATA->m_ok = TRUE; - else - M_CURSORDATA->m_ok = FALSE; - } - else if (flags & wxBITMAP_TYPE_CUR) - { -#if wxUSE_RESOURCE_LOADING_IN_MSW - M_CURSORDATA->m_hCursor = (WXHCURSOR) ReadCursorFile((char *)(const char *)cursor_file, wxGetInstance(), &M_CURSORDATA->m_width, &M_CURSORDATA->m_height); - M_CURSORDATA->m_destroyCursor = TRUE; -#endif - } - else if (flags & wxBITMAP_TYPE_ICO) - { -#if wxUSE_RESOURCE_LOADING_IN_MSW - M_CURSORDATA->m_hCursor = (WXHCURSOR) IconToCursor((char *)(const char *)cursor_file, wxGetInstance(), hotSpotX, hotSpotY, &M_CURSORDATA->m_width, &M_CURSORDATA->m_height); - M_CURSORDATA->m_destroyCursor = TRUE; -#endif - } - else if (flags & wxBITMAP_TYPE_BMP) - { -#if wxUSE_RESOURCE_LOADING_IN_MSW - HBITMAP hBitmap = 0; - HPALETTE hPalette = 0; - bool success = ReadDIB((char *)(const char *)cursor_file, &hBitmap, &hPalette) != 0; - if (!success) - return; - if (hPalette) - DeleteObject(hPalette); - POINT pnt; - pnt.x = hotSpotX; - pnt.y = hotSpotY; - M_CURSORDATA->m_hCursor = (WXHCURSOR) MakeCursorFromBitmap(wxGetInstance(), hBitmap, &pnt); - M_CURSORDATA->m_destroyCursor = TRUE; - DeleteObject(hBitmap); - if (M_CURSORDATA->m_hCursor) - M_CURSORDATA->m_ok = TRUE; -#endif - } -} - -// Cursors by stock number -wxCursor::wxCursor(int cursor_type) -{ - m_refData = new wxIconRefData; - - switch (cursor_type) - { - case wxCURSOR_WAIT: - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor((HINSTANCE) NULL, IDC_WAIT); - break; - case wxCURSOR_IBEAM: - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor((HINSTANCE) NULL, IDC_IBEAM); - break; - case wxCURSOR_CROSS: - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor((HINSTANCE) NULL, IDC_CROSS); - break; - case wxCURSOR_SIZENWSE: - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor((HINSTANCE) NULL, IDC_SIZENWSE); - break; - case wxCURSOR_SIZENESW: - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor((HINSTANCE) NULL, IDC_SIZENESW); - break; - case wxCURSOR_SIZEWE: - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor((HINSTANCE) NULL, IDC_SIZEWE); - break; - case wxCURSOR_SIZENS: - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor((HINSTANCE) NULL, IDC_SIZENS); - break; - case wxCURSOR_CHAR: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor((HINSTANCE) NULL, IDC_ARROW); - break; - } - case wxCURSOR_HAND: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_HAND"); - break; - } - case wxCURSOR_BULLSEYE: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_BULLSEYE"); - break; - } - case wxCURSOR_PENCIL: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_PENCIL"); - break; - } - case wxCURSOR_MAGNIFIER: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_MAGNIFIER"); - break; - } - case wxCURSOR_NO_ENTRY: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_NO_ENTRY"); - break; - } - case wxCURSOR_LEFT_BUTTON: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor((HINSTANCE) NULL, IDC_ARROW); - break; - } - case wxCURSOR_RIGHT_BUTTON: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor((HINSTANCE) NULL, IDC_ARROW); - break; - } - case wxCURSOR_MIDDLE_BUTTON: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor((HINSTANCE) NULL, IDC_ARROW); - break; - } - case wxCURSOR_SIZING: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_SIZING"); - break; - } - case wxCURSOR_WATCH: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_WATCH"); - break; - } - case wxCURSOR_SPRAYCAN: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_ROLLER"); - break; - } - case wxCURSOR_PAINT_BRUSH: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_PBRUSH"); - break; - } - case wxCURSOR_POINT_LEFT: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_PLEFT"); - break; - } - case wxCURSOR_POINT_RIGHT: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_PRIGHT"); - break; - } - case wxCURSOR_QUESTION_ARROW: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_QARROW"); - break; - } - case wxCURSOR_BLANK: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_BLANK"); - break; - } - default: - case wxCURSOR_ARROW: - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor((HINSTANCE) NULL, IDC_ARROW); - break; - } -} - -wxCursor::~wxCursor(void) -{ -// FreeResource(TRUE); -} - -bool wxCursor::FreeResource(bool WXUNUSED(force)) -{ - if (M_CURSORDATA && M_CURSORDATA->m_hCursor && M_CURSORDATA->m_destroyCursor) - { - DestroyCursor((HCURSOR) M_CURSORDATA->m_hCursor); - M_CURSORDATA->m_hCursor = 0; - } - return TRUE; -} - -void wxCursor::SetHCURSOR(WXHCURSOR cursor) -{ - if ( !M_CURSORDATA ) - m_refData = new wxCursorRefData; - - M_CURSORDATA->m_hCursor = cursor; -} - -// Global cursor setting -void wxSetCursor(const wxCursor& cursor) -{ - extern wxCursor *g_globalCursor; - if ( g_globalCursor ) - (*g_globalCursor) = cursor; - - if (cursor.Ok() && cursor.GetHCURSOR()) - ::SetCursor((HCURSOR) cursor.GetHCURSOR()); -} - - diff --git a/src/msw/data.cpp b/src/msw/data.cpp deleted file mode 100644 index 3e02e57e59..0000000000 --- a/src/msw/data.cpp +++ /dev/null @@ -1,781 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: data.cpp -// Purpose: Various data -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "data.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#define _MAXPATHLEN 500 - -// Useful buffer, initialized in wxCommonInit -char *wxBuffer = NULL; - -// Windows List -wxList wxTopLevelWindows; - -// List of windows pending deletion -wxList WXDLLEXPORT wxPendingDelete; - -// Current cursor, in order to hang on to -// cursor handle when setting the cursor globally -wxCursor *g_globalCursor = NULL; - -// Message Strings for Internationalization -char **wx_msg_str = (char**)NULL; - -// Custom OS version, as optionally placed in wx.ini/.wxrc -// Currently this can be Win95, Windows, Win32s, WinNT. -// For some systems, you can't tell until run-time what services you -// have. See wxGetOsVersion, which uses this string if present. -char *wxOsVersion = NULL; - -int wxPageNumber; - -// GDI Object Lists -wxBrushList *wxTheBrushList = NULL; -wxPenList *wxThePenList = NULL; -wxFontList *wxTheFontList = NULL; -wxBitmapList *wxTheBitmapList = NULL; - -wxColourDatabase *wxTheColourDatabase = NULL; - -// Stock objects -wxFont *wxNORMAL_FONT; -wxFont *wxSMALL_FONT; -wxFont *wxITALIC_FONT; -wxFont *wxSWISS_FONT; -wxPen *wxRED_PEN; - -wxPen *wxCYAN_PEN; -wxPen *wxGREEN_PEN; -wxPen *wxBLACK_PEN; -wxPen *wxWHITE_PEN; -wxPen *wxTRANSPARENT_PEN; -wxPen *wxBLACK_DASHED_PEN; -wxPen *wxGREY_PEN; -wxPen *wxMEDIUM_GREY_PEN; -wxPen *wxLIGHT_GREY_PEN; - -wxBrush *wxBLUE_BRUSH; -wxBrush *wxGREEN_BRUSH; -wxBrush *wxWHITE_BRUSH; -wxBrush *wxBLACK_BRUSH; -wxBrush *wxTRANSPARENT_BRUSH; -wxBrush *wxCYAN_BRUSH; -wxBrush *wxRED_BRUSH; -wxBrush *wxGREY_BRUSH; -wxBrush *wxMEDIUM_GREY_BRUSH; -wxBrush *wxLIGHT_GREY_BRUSH; - -wxColour *wxBLACK; -wxColour *wxWHITE; -wxColour *wxRED; -wxColour *wxBLUE; -wxColour *wxGREEN; -wxColour *wxCYAN; -wxColour *wxLIGHT_GREY; - -wxCursor *wxSTANDARD_CURSOR = NULL; -wxCursor *wxHOURGLASS_CURSOR = NULL; -wxCursor *wxCROSS_CURSOR = NULL; - -// 'Null' objects -wxAcceleratorTable wxNullAcceleratorTable; -wxBitmap wxNullBitmap; -wxIcon wxNullIcon; -wxCursor wxNullCursor; -wxPen wxNullPen; -wxBrush wxNullBrush; -wxPalette wxNullPalette; -wxFont wxNullFont; -wxColour wxNullColour; - -// Default window names -const char *wxButtonNameStr = "button"; -const char *wxCanvasNameStr = "canvas"; -const char *wxCheckBoxNameStr = "check"; -const char *wxChoiceNameStr = "choice"; -const char *wxComboBoxNameStr = "comboBox"; -const char *wxDialogNameStr = "dialog"; -const char *wxFrameNameStr = "frame"; -const char *wxGaugeNameStr = "gauge"; -const char *wxStaticBoxNameStr = "groupBox"; -const char *wxListBoxNameStr = "listBox"; -const char *wxStaticTextNameStr = "message"; -const char *wxStaticBitmapNameStr = "message"; -const char *wxMultiTextNameStr = "multitext"; -const char *wxPanelNameStr = "panel"; -const char *wxRadioBoxNameStr = "radioBox"; -const char *wxRadioButtonNameStr = "radioButton"; -const char *wxBitmapRadioButtonNameStr = "radioButton"; -const char *wxScrollBarNameStr = "scrollBar"; -const char *wxSliderNameStr = "slider"; -const char *wxStaticNameStr = "static"; -const char *wxTextCtrlWindowNameStr = "textWindow"; -const char *wxTextCtrlNameStr = "text"; -const char *wxVirtListBoxNameStr = "virtListBox"; -const char *wxButtonBarNameStr = "buttonbar"; -const char *wxEnhDialogNameStr = "Shell"; -const char *wxToolBarNameStr = "toolbar"; -const char *wxStatusLineNameStr = "status_line"; -const char *wxEmptyString = ""; -const char *wxGetTextFromUserPromptStr = "Input Text"; -const char *wxMessageBoxCaptionStr = "Message"; -const char *wxFileSelectorPromptStr = "Select a file"; -const char *wxFileSelectorDefaultWildcardStr = "*.*"; -const char *wxInternalErrorStr = "wxWindows Internal Error"; -const char *wxFatalErrorStr = "wxWindows Fatal Error"; -const char *wxTreeCtrlNameStr = "treeCtrl"; - -// See wx/utils.h -const char *wxFloatToStringStr = "%.2f"; -const char *wxDoubleToStringStr = "%.2f"; - -#ifdef __WXMSW__ -const char *wxUserResourceStr = "TEXT"; -#endif - -#if wxUSE_POSTSCRIPT -class wxPrintPaperDatabase; -wxPrintPaperDatabase* wxThePrintPaperDatabase = NULL; -#endif - -#if wxUSE_SHARED_LIBRARY -/* - * For wxWindows to be made into a dynamic library (e.g. Sun), - * all IMPLEMENT_... macros must be in one place. - * But normally, the definitions are in the appropriate places. - */ - -// Hand-coded IMPLEMENT... macro for wxObject (define static data) -wxClassInfo wxObject::classwxObject("wxObject", NULL, NULL, sizeof(wxObject), NULL); -wxClassInfo *wxClassInfo::first = NULL; -wxClassInfo wxClassInfo::classTable(wxKEY_STRING); - -#include "wx/button.h" -#include "wx/bmpbuttn.h" -IMPLEMENT_DYNAMIC_CLASS(wxButton, wxControl) -IMPLEMENT_DYNAMIC_CLASS(wxBitmapButton, wxButton) - -#include "wx/checkbox.h" -IMPLEMENT_DYNAMIC_CLASS(wxCheckBox, wxControl) -IMPLEMENT_DYNAMIC_CLASS(wxBitmapCheckBox, wxCheckBox) - -#include "wx/choice.h" -IMPLEMENT_DYNAMIC_CLASS(wxChoice, wxControl) - -#if wxUSE_CLIPBOARD -#include "wx/clipbrd.h" -IMPLEMENT_DYNAMIC_CLASS(wxClipboard, wxObject) -IMPLEMENT_ABSTRACT_CLASS(wxClipboardClient, wxObject) -#endif - -#if wxUSE_COMBOBOX -#include "wx/combobox.h" -IMPLEMENT_DYNAMIC_CLASS(wxComboBox, wxControl) -#endif - -#include "wx/dc.h" -#include "wx/dcmemory.h" -#include "wx/dcclient.h" -#include "wx/dcscreen.h" -IMPLEMENT_ABSTRACT_CLASS(wxDC, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxWindowDC, wxDC) -IMPLEMENT_DYNAMIC_CLASS(wxPaintDC, wxWindowDC) -IMPLEMENT_DYNAMIC_CLASS(wxClientDC, wxWindowDC) -IMPLEMENT_DYNAMIC_CLASS(wxScreenDC, wxWindowDC) -IMPLEMENT_DYNAMIC_CLASS(wxMemoryDC, wxDC) - -#if defined(__WXMSW__) -#include "wx/dcprint.h" -IMPLEMENT_CLASS(wxPrinterDC, wxDC) -#endif - -#include "wx/dialog.h" -IMPLEMENT_DYNAMIC_CLASS(wxDialog, wxWindow) - -#include "wx/frame.h" -IMPLEMENT_DYNAMIC_CLASS(wxFrame, wxWindow) - -#include "wx/mdi.h" -IMPLEMENT_DYNAMIC_CLASS(wxMDIParentFrame, wxFrame) -IMPLEMENT_DYNAMIC_CLASS(wxMDIChildFrame, wxFrame) -IMPLEMENT_DYNAMIC_CLASS(wxMDIClientWindow, wxWindow) - -#include "wx/cmndata.h" -IMPLEMENT_DYNAMIC_CLASS(wxColourData, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxFontData, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxPrintData, wxObject) - -#include "wx/colordlg.h" -#include "wx/fontdlg.h" - -#if !defined(__WXMSW__) || wxUSE_GENERIC_DIALOGS_IN_MSW -#include "wx/generic/colordlg.h" -#include "wx/generic/fontdlg.h" -IMPLEMENT_DYNAMIC_CLASS(wxGenericColourDialog, wxDialog) -IMPLEMENT_DYNAMIC_CLASS(wxGenericFontDialog, wxDialog) -#endif - -// X defines wxColourDialog to be wxGenericColourDialog -#ifndef __X__ -IMPLEMENT_DYNAMIC_CLASS(wxColourDialog, wxDialog) -IMPLEMENT_DYNAMIC_CLASS(wxFontDialog, wxDialog) -#endif - -#include "wx/gdicmn.h" -#include "wx/pen.h" -#include "wx/brush.h" -#include "wx/font.h" -#include "wx/palette.h" -#include "wx/icon.h" -#include "wx/cursor.h" - -IMPLEMENT_DYNAMIC_CLASS(wxColour, wxObject) -IMPLEMENT_CLASS(wxColourDatabase, wxList) -IMPLEMENT_DYNAMIC_CLASS(wxFontList, wxList) -IMPLEMENT_DYNAMIC_CLASS(wxPenList, wxList) -IMPLEMENT_DYNAMIC_CLASS(wxBrushList, wxList) -IMPLEMENT_DYNAMIC_CLASS(wxBitmapList, wxList) - -/* -#if (!USE_TYPEDEFS) -IMPLEMENT_DYNAMIC_CLASS(wxPoint, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxRealPoint, wxObject) -#endif -*/ - -#include "wx/hash.h" -IMPLEMENT_DYNAMIC_CLASS(wxHashTable, wxObject) - -#include "wx/helpbase.h" -IMPLEMENT_CLASS(wxHelpControllerBase, wxObject) - -#if wxUSE_HELP - -#ifdef __WXMSW__ -#include "wx/msw/helpwin.h" -IMPLEMENT_DYNAMIC_CLASS(wxWinHelpController, wxHelpControllerBase) -#endif - -// Generic wxHelp controller -IMPLEMENT_CLASS(wxXLPHelpController, wxHelpControllerBase) - -#ifdef __WXMSW__ -IMPLEMENT_CLASS(wxXLPHelpClient, wxDDEClient) -IMPLEMENT_CLASS(wxXLPHelpConnection, wxDDEConnection) -#else -IMPLEMENT_CLASS(wxXLPHelpClient, wxTCPClient) -IMPLEMENT_CLASS(wxXLPHelpConnection, wxTCPConnection) -#endif - -#endif - -IMPLEMENT_DYNAMIC_CLASS(wxString, wxObject) - -#include "wx/list.h" -IMPLEMENT_DYNAMIC_CLASS(wxNode, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxList, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxStringList, wxList) - -#if wxUSE_PRINTING_ARCHITECTURE -#include "wx/print.h" -IMPLEMENT_DYNAMIC_CLASS(wxPrintDialog, wxDialog) -IMPLEMENT_DYNAMIC_CLASS(wxPrinterBase, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxPostScriptPrinter, wxPrinterBase) -IMPLEMENT_DYNAMIC_CLASS(wxWindowsPrinter, wxPrinterBase) -IMPLEMENT_ABSTRACT_CLASS(wxPrintout, wxObject) -IMPLEMENT_CLASS(wxPreviewCanvas, wxWindow) -IMPLEMENT_CLASS(wxPreviewControlBar, wxWindow) -IMPLEMENT_CLASS(wxPreviewFrame, wxFrame) -IMPLEMENT_CLASS(wxPrintPreviewBase, wxObject) -IMPLEMENT_CLASS(wxPostScriptPrintPreview, wxPrintPreviewBase) -IMPLEMENT_CLASS(wxWindowsPrintPreview, wxPrintPreviewBase) -IMPLEMENT_CLASS(wxGenericPrintDialog, wxDialog) -IMPLEMENT_CLASS(wxGenericPrintSetupDialog, wxDialog) -#endif - -#if wxUSE_POSTSCRIPT -#include "wx/dcps.h" -IMPLEMENT_DYNAMIC_CLASS(wxPostScriptDC, wxDC) -IMPLEMENT_DYNAMIC_CLASS(wxPrintSetupData, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxPageSetupData, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxPrintPaperType, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxPrintPaperDatabase, wxList) -#endif - -#if wxUSE_WX_RESOURCES -#include "wx/resource.h" -IMPLEMENT_DYNAMIC_CLASS(wxItemResource, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxResourceTable, wxHashTable) -#endif - -#include "wx/event.h" -IMPLEMENT_DYNAMIC_CLASS(wxEvtHandler, wxObject) -IMPLEMENT_ABSTRACT_CLASS(wxEvent, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxCommandEvent, wxEvent) -IMPLEMENT_DYNAMIC_CLASS(wxNotifyEvent, wxCommandEvent) -IMPLEMENT_DYNAMIC_CLASS(wxScrollEvent, wxCommandEvent) -IMPLEMENT_DYNAMIC_CLASS(wxMouseEvent, wxEvent) -IMPLEMENT_DYNAMIC_CLASS(wxKeyEvent, wxEvent) -IMPLEMENT_DYNAMIC_CLASS(wxSizeEvent, wxEvent) -IMPLEMENT_DYNAMIC_CLASS(wxPaintEvent, wxEvent) -IMPLEMENT_DYNAMIC_CLASS(wxEraseEvent, wxEvent) -IMPLEMENT_DYNAMIC_CLASS(wxMoveEvent, wxEvent) -IMPLEMENT_DYNAMIC_CLASS(wxFocusEvent, wxEvent) -IMPLEMENT_DYNAMIC_CLASS(wxCloseEvent, wxEvent) -IMPLEMENT_DYNAMIC_CLASS(wxShowEvent, wxEvent) -IMPLEMENT_DYNAMIC_CLASS(wxMaximizeEvent, wxEvent) -IMPLEMENT_DYNAMIC_CLASS(wxIconizeEvent, wxEvent) -IMPLEMENT_DYNAMIC_CLASS(wxMenuEvent, wxEvent) -IMPLEMENT_DYNAMIC_CLASS(wxJoystickEvent, wxEvent) -IMPLEMENT_DYNAMIC_CLASS(wxDropFilesEvent, wxEvent) -IMPLEMENT_DYNAMIC_CLASS(wxActivateEvent, wxEvent) -IMPLEMENT_DYNAMIC_CLASS(wxInitDialogEvent, wxEvent) -IMPLEMENT_DYNAMIC_CLASS(wxSysColourChangedEvent, wxEvent) -IMPLEMENT_DYNAMIC_CLASS(wxIdleEvent, wxEvent) -IMPLEMENT_DYNAMIC_CLASS(wxUpdateUIEvent, wxEvent) -IMPLEMENT_DYNAMIC_CLASS(wxProcessEvent, wxEvent) - -#include "wx/utils.h" -IMPLEMENT_DYNAMIC_CLASS(wxPathList, wxList) - -// IMPLEMENT_DYNAMIC_CLASS(wxRect, wxObject) - -#include "wx/process.h" -IMPLEMENT_DYNAMIC_CLASS(wxProcess, wxEvtHandler) - -#if wxUSE_TIMEDATE -#include "wx/date.h" -IMPLEMENT_DYNAMIC_CLASS(wxDate, wxObject) -#endif - -#if wxUSE_DOC_VIEW_ARCHITECTURE -#include "wx/docview.h" -//IMPLEMENT_ABSTRACT_CLASS(wxDocItem, wxObject) -IMPLEMENT_ABSTRACT_CLASS(wxDocument, wxEvtHandler) -IMPLEMENT_ABSTRACT_CLASS(wxView, wxEvtHandler) -IMPLEMENT_ABSTRACT_CLASS(wxDocTemplate, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxDocManager, wxEvtHandler) -IMPLEMENT_CLASS(wxDocChildFrame, wxFrame) -IMPLEMENT_CLASS(wxDocParentFrame, wxFrame) -#if wxUSE_PRINTING_ARCHITECTURE -IMPLEMENT_DYNAMIC_CLASS(wxDocPrintout, wxPrintout) -#endif -IMPLEMENT_CLASS(wxCommand, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxCommandProcessor, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxFileHistory, wxObject) -#endif - -#if wxUSE_CONSTRAINTS -#include "wx/layout.h" -IMPLEMENT_DYNAMIC_CLASS(wxIndividualLayoutConstraint, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxLayoutConstraints, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxSizer, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxRowColSizer, wxSizer) -#endif - -#if wxUSE_TOOLBAR -#include "wx/tbarbase.h" -IMPLEMENT_DYNAMIC_CLASS(wxToolBarTool, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxToolBarBase, wxControl) - -#include "wx/tbarsmpl.h" -IMPLEMENT_DYNAMIC_CLASS(wxToolBarSimple, wxToolBarBase) - -#ifdef __WXMSW__ -#include "wx/tbarmsw.h" -IMPLEMENT_DYNAMIC_CLASS(wxToolBarMSW, wxToolBarBase) - -#include "wx/tbar95.h" -IMPLEMENT_DYNAMIC_CLASS(wxToolBar95, wxToolBarBase) -#endif - -#endif - -#include "wx/sckaddr.h" - -IMPLEMENT_DYNAMIC_CLASS(wxIPV4address, wxSockAddress) -#ifdef ENABLE_IPV6 -IMPLEMENT_DYNAMIC_CLASS(wxIPV6address, wxSockAddress) -#endif -#ifndef __UNIX__ -IMPLEMENT_DYNAMIC_CLASS(wxUNIXaddress, wxSockAddress) -#endif - -#include "wx/socket.h" - -IMPLEMENT_CLASS(wxSocketBase, wxEvtHandler) -IMPLEMENT_CLASS(wxSocketClient, wxSocketBase) -IMPLEMENT_CLASS(wxSocketServer, wxSocketBase) -IMPLEMENT_CLASS(wxSocketHandler, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxSocketEvent, wxEvent) - -#include "wx/url.h" - -IMPLEMENT_CLASS(wxProtoInfo, wxObject) -IMPLEMENT_CLASS(wxURL, wxObject) - -#include "wx/protocol/http.h" - -IMPLEMENT_DYNAMIC_CLASS(wxHTTP, wxProtocol) -IMPLEMENT_PROTOCOL(wxHTTP, "http", "80", TRUE) - -#include "wx/protocol/ftp.h" - -IMPLEMENT_DYNAMIC_CLASS(wxFTP, wxProtocol) -IMPLEMENT_PROTOCOL(wxFTP, "ftp", "21", TRUE) - -#include "wx/protocol/sckfile.h" - -IMPLEMENT_DYNAMIC_CLASS(wxFileProto, wxProtocol) -IMPLEMENT_PROTOCOL(wxFileProto, "file", NULL, FALSE) - -#include "wx/sckipc.h" - -IMPLEMENT_DYNAMIC_CLASS(wxTCPServer, wxServerBase) -IMPLEMENT_DYNAMIC_CLASS(wxTCPClient, wxClientBase) -IMPLEMENT_DYNAMIC_CLASS(wxTCPConnection, wxConnectionBase) - -#include "wx/statusbr.h" - -IMPLEMENT_DYNAMIC_CLASS(wxStatusBar, wxWindow) - -BEGIN_EVENT_TABLE(wxStatusBar, wxWindow) - EVT_PAINT(wxStatusBar::OnPaint) - EVT_SYS_COLOUR_CHANGED(wxStatusBar::OnSysColourChanged) -END_EVENT_TABLE() - -#if wxUSE_TIMEDATE -#include "wx/time.h" -IMPLEMENT_DYNAMIC_CLASS(wxTime, wxObject) -#endif - -#if !USE_GNU_WXSTRING -#include "wx/string.h" -IMPLEMENT_DYNAMIC_CLASS(wxString, wxObject) -#endif - -#ifdef __WXMOTIF__ -IMPLEMENT_DYNAMIC_CLASS(wxXColormap, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxXFont, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxXCursor, wxObject) -#endif -IMPLEMENT_DYNAMIC_CLASS(wxFont, wxGDIObject) -IMPLEMENT_DYNAMIC_CLASS(wxPalette, wxGDIObject) -IMPLEMENT_DYNAMIC_CLASS(wxPen, wxGDIObject) -IMPLEMENT_DYNAMIC_CLASS(wxBrush, wxGDIObject) -IMPLEMENT_DYNAMIC_CLASS(wxIcon, wxBitmap) -IMPLEMENT_DYNAMIC_CLASS(wxCursor, wxBitmap) -IMPLEMENT_DYNAMIC_CLASS(wxBitmap, wxGDIObject) -IMPLEMENT_DYNAMIC_CLASS(wxMask, wxObject) - -// This will presumably be implemented on other platforms too -#ifdef __WXMSW__ -IMPLEMENT_DYNAMIC_CLASS(wxBitmapHandler, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxBMPResourceHandler, wxBitmapHandler) -IMPLEMENT_DYNAMIC_CLASS(wxBMPFileHandler, wxBitmapHandler) -IMPLEMENT_DYNAMIC_CLASS(wxXPMFileHandler, wxBitmapHandler) -IMPLEMENT_DYNAMIC_CLASS(wxXPMDataHandler, wxBitmapHandler) -IMPLEMENT_DYNAMIC_CLASS(wxICOFileHandler, wxBitmapHandler) -IMPLEMENT_DYNAMIC_CLASS(wxICOResourceHandler, wxBitmapHandler) -#endif - -#include "wx/statbox.h" -IMPLEMENT_DYNAMIC_CLASS(wxStaticBox, wxControl) - -#if wxUSE_IPC -#include "wx/dde.h" -IMPLEMENT_CLASS(wxServerBase, wxObject) -IMPLEMENT_CLASS(wxClientBase, wxObject) -IMPLEMENT_CLASS(wxConnectionBase, wxObject) - -IMPLEMENT_DYNAMIC_CLASS(wxDDEServer, wxServerBase) -IMPLEMENT_DYNAMIC_CLASS(wxDDEClient, wxClientBase) -IMPLEMENT_CLASS(wxDDEConnection, wxConnectionBase) -#endif - -IMPLEMENT_ABSTRACT_CLASS(wxControl, wxWindow) - -#include "wx/listbox.h" -IMPLEMENT_DYNAMIC_CLASS(wxListBox, wxControl) - -#include "wx/checklst.h" -IMPLEMENT_DYNAMIC_CLASS(wxCheckListBox, wxListBox) - -IMPLEMENT_DYNAMIC_CLASS(wxApp, wxEvtHandler) - -#include "wx/menu.h" -IMPLEMENT_DYNAMIC_CLASS(wxMenu, wxEvtHandler) -IMPLEMENT_DYNAMIC_CLASS(wxMenuItem, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxMenuBar, wxEvtHandler) - -#include "wx/stattext.h" -#include "wx/statbmp.h" -IMPLEMENT_DYNAMIC_CLASS(wxStaticText, wxControl) -IMPLEMENT_DYNAMIC_CLASS(wxStaticBitmap, wxControl) - -#if wxUSE_METAFILE -#include "wx/metafile.h" -IMPLEMENT_DYNAMIC_CLASS(wxMetaFile, wxObject) -IMPLEMENT_ABSTRACT_CLASS(wxMetaFileDC, wxDC) -#endif - -#include "wx/radiobox.h" -#include "wx/radiobut.h" -IMPLEMENT_DYNAMIC_CLASS(wxRadioBox, wxControl) - -IMPLEMENT_DYNAMIC_CLASS(wxRadioButton, wxControl) -// IMPLEMENT_DYNAMIC_CLASS(wxBitmapRadioButton, wxRadioButton) - -#include "wx/scrolbar.h" -IMPLEMENT_DYNAMIC_CLASS(wxScrollBar, wxControl) - -#if WXWIN_COMPATIBILITY -BEGIN_EVENT_TABLE(wxScrollBar, wxControl) - EVT_SCROLL(wxScrollBar::OnScroll) -END_EVENT_TABLE() -#endif - -#include "wx/slider.h" -IMPLEMENT_DYNAMIC_CLASS(wxSlider, wxControl) - -#if WXWIN_COMPATIBILITY -BEGIN_EVENT_TABLE(wxSlider, wxControl) - EVT_SCROLL(wxSlider::OnScroll) -END_EVENT_TABLE() -#endif - -#include "wx/timer.h" -IMPLEMENT_ABSTRACT_CLASS(wxTimer, wxObject) - -#include "wx/textctrl.h" -IMPLEMENT_DYNAMIC_CLASS(wxTextCtrl, wxControl) - -#include "wx/window.h" -IMPLEMENT_DYNAMIC_CLASS(wxWindow, wxEvtHandler) - -#include "wx/scrolwin.h" -IMPLEMENT_DYNAMIC_CLASS(wxScrolledWindow, wxWindow) - -#include "wx/panel.h" -IMPLEMENT_DYNAMIC_CLASS(wxPanel, wxWindow) - -#include "wx/msgbxdlg.h" -#include "wx/textdlg.h" -#include "wx/filedlg.h" -#include "wx/dirdlg.h" -#include "wx/choicdlg.h" - -#if !defined(__WXMSW__) || wxUSE_GENERIC_DIALOGS_IN_MSW -#include "wx/generic/msgdlgg.h" -IMPLEMENT_CLASS(wxGenericMessageDialog, wxDialog) -#endif - -IMPLEMENT_CLASS(wxTextEntryDialog, wxDialog) -IMPLEMENT_CLASS(wxSingleChoiceDialog, wxDialog) -IMPLEMENT_CLASS(wxFileDialog, wxDialog) -IMPLEMENT_CLASS(wxDirDialog, wxDialog) - -#ifdef __WXMSW__ -IMPLEMENT_CLASS(wxMessageDialog) -#endif - -#if wxUSE_GAUGE -#ifdef __WXMOTIF__ -#include "../../contrib/xmgauge/gauge.h" -#endif -#include "wx_gauge.h" -IMPLEMENT_DYNAMIC_CLASS(wxGauge, wxControl) -#endif - -#include "wx/grid.h" -IMPLEMENT_DYNAMIC_CLASS(wxGenericGrid, wxPanel) - -///// Event tables (also must be in one, statically-linked file for shared libraries) - -// This is the base, wxEvtHandler 'bootstrap' code which is expanded manually here -const wxEventTable *wxEvtHandler::GetEventTable() const { return &wxEvtHandler::sm_eventTable; } - -const wxEventTable wxEvtHandler::sm_eventTable = - { NULL, &wxEvtHandler::sm_eventTableEntries[0] }; - -const wxEventTableEntry wxEvtHandler::sm_eventTableEntries[] = { { 0, 0, 0, NULL } }; - -BEGIN_EVENT_TABLE(wxFrame, wxWindow) - EVT_ACTIVATE(wxFrame::OnActivate) - EVT_SIZE(wxFrame::OnSize) - EVT_MENU_HIGHLIGHT_ALL(wxFrame::OnMenuHighlight) - EVT_SYS_COLOUR_CHANGED(wxFrame::OnSysColourChanged) - EVT_IDLE(wxFrame::OnIdle) - EVT_CLOSE(wxFrame::OnCloseWindow) -END_EVENT_TABLE() - -BEGIN_EVENT_TABLE(wxDialog, wxPanel) - EVT_BUTTON(wxID_OK, wxDialog::OnOK) - EVT_BUTTON(wxID_APPLY, wxDialog::OnApply) - EVT_BUTTON(wxID_CANCEL, wxDialog::OnCancel) - EVT_CHAR_HOOK(wxDialog::OnCharHook) - EVT_SYS_COLOUR_CHANGED(wxDialog::OnSysColourChanged) - EVT_CLOSE(wxDialog::OnCloseWindow) -END_EVENT_TABLE() - -BEGIN_EVENT_TABLE(wxWindow, wxEvtHandler) - EVT_CHAR(wxWindow::OnChar) - EVT_SIZE(wxWindow::Size) - EVT_ERASE_BACKGROUND(wxWindow::OnEraseBackground) - EVT_SYS_COLOUR_CHANGED(wxWindow::OnSysColourChanged) - EVT_INIT_DIALOG(wxWindow::OnInitDialog) - EVT_IDLE(wxWindow::OnIdle) -END_EVENT_TABLE() - -BEGIN_EVENT_TABLE(wxScrolledWindow, wxWindow) - EVT_SCROLL(wxScrolledWindow::OnScroll) - EVT_SIZE(wxScrolledWindow::OnSize) - EVT_PAINT(wxScrolledWindow::OnPaint) -END_EVENT_TABLE() - -BEGIN_EVENT_TABLE(wxPanel, wxWindow) - EVT_SYS_COLOUR_CHANGED(wxPanel::OnSysColourChanged) -END_EVENT_TABLE() - -BEGIN_EVENT_TABLE(wxTextCtrl, wxControl) - EVT_CHAR(wxTextCtrl::OnChar) - EVT_DROP_FILES(wxTextCtrl::OnDropFiles) - EVT_ERASE_BACKGROUND(wxTextCtrl::OnEraseBackground) -END_EVENT_TABLE() - -#ifdef __WXMSW__ -BEGIN_EVENT_TABLE(wxMDIParentWindow, wxFrame) - EVT_SIZE(wxMDIParentWindow::OnSize) - EVT_ACTIVATE(wxMDIParentWindow::OnActivate) - EVT_SYS_COLOUR_CHANGED(wxMDIParentWindow::OnSysColourChanged) -END_EVENT_TABLE() - -BEGIN_EVENT_TABLE(wxMDIClientWindow, wxWindow) - EVT_SCROLL(wxMDIClientWindow::OnScroll) -END_EVENT_TABLE() -#endif - -BEGIN_EVENT_TABLE(wxToolBarBase, wxControl) - EVT_SCROLL(wxToolBarBase::OnScroll) - EVT_SIZE(wxToolBarBase::OnSize) - EVT_IDLE(wxToolBarBase::OnIdle) -END_EVENT_TABLE() - -BEGIN_EVENT_TABLE(wxToolBarSimple, wxToolBarBase) - EVT_SIZE(wxToolBarSimple::OnSize) - EVT_PAINT(wxToolBarSimple::OnPaint) - EVT_KILL_FOCUS(wxToolBarSimple::OnKillFocus) - EVT_MOUSE_EVENTS(wxToolBarSimple::OnMouseEvent) -END_EVENT_TABLE() - -#ifdef __WXMSW__ -BEGIN_EVENT_TABLE(wxToolBarMSW, wxToolBarBase) - EVT_SIZE(wxToolBarMSW::OnSize) - EVT_PAINT(wxToolBarMSW::OnPaint) - EVT_MOUSE_EVENTS(wxToolBarMSW::OnMouseEvent) -END_EVENT_TABLE() - -BEGIN_EVENT_TABLE(wxToolBar95, wxToolBarBase) - EVT_SIZE(wxToolBar95::OnSize) - EVT_PAINT(wxToolBar95::OnPaint) - EVT_KILL_FOCUS(wxToolBar95::OnKillFocus) - EVT_MOUSE_EVENTS(wxToolBar95::OnMouseEvent) - EVT_SYS_COLOUR_CHANGED(wxToolBar95::OnSysColourChanged) -END_EVENT_TABLE() -#endif - -BEGIN_EVENT_TABLE(wxGenericGrid, wxPanel) - EVT_SIZE(wxGenericGrid::OnSize) - EVT_PAINT(wxGenericGrid::OnPaint) - EVT_MOUSE_EVENTS(wxGenericGrid::OnMouseEvent) - EVT_TEXT(wxGRID_TEXT_CTRL, wxGenericGrid::OnText) - EVT_COMMAND_SCROLL(wxGRID_HSCROLL, wxGenericGrid::OnGridScroll) - EVT_COMMAND_SCROLL(wxGRID_VSCROLL, wxGenericGrid::OnGridScroll) -END_EVENT_TABLE() - -BEGIN_EVENT_TABLE(wxControl, wxWindow) - EVT_ERASE_BACKGROUND(wxControl::OnEraseBackground) -END_EVENT_TABLE() - -#if !defined(__WXMSW__) || wxUSE_GENERIC_DIALOGS_IN_MSW -BEGIN_EVENT_TABLE(wxGenericMessageDialog, wxDialog) - EVT_BUTTON(wxID_YES, wxGenericMessageDialog::OnYes) - EVT_BUTTON(wxID_NO, wxGenericMessageDialog::OnNo) - EVT_BUTTON(wxID_CANCEL, wxGenericMessageDialog::OnCancel) -END_EVENT_TABLE() - -BEGIN_EVENT_TABLE(wxGenericColourDialog, wxDialog) - EVT_BUTTON(wxID_ADD_CUSTOM, wxGenericColourDialog::OnAddCustom) - EVT_SLIDER(wxID_RED_SLIDER, wxGenericColourDialog::OnRedSlider) - EVT_SLIDER(wxID_GREEN_SLIDER, wxGenericColourDialog::OnGreenSlider) - EVT_SLIDER(wxID_BLUE_SLIDER, wxGenericColourDialog::OnBlueSlider) - EVT_PAINT(wxGenericColourDialog::OnPaint) - EVT_MOUSE_EVENTS(wxGenericColourDialog::OnMouseEvent) -END_EVENT_TABLE() - -BEGIN_EVENT_TABLE(wxGenericFontDialog, wxDialog) - EVT_CHECKBOX(wxID_FONT_UNDERLINE, wxGenericFontDialog::OnChangeFont) - EVT_CHOICE(wxID_FONT_STYLE, wxGenericFontDialog::OnChangeFont) - EVT_CHOICE(wxID_FONT_WEIGHT, wxGenericFontDialog::OnChangeFont) - EVT_CHOICE(wxID_FONT_FAMILY, wxGenericFontDialog::OnChangeFont) - EVT_CHOICE(wxID_FONT_COLOUR, wxGenericFontDialog::OnChangeFont) - EVT_CHOICE(wxID_FONT_SIZE, wxGenericFontDialog::OnChangeFont) - EVT_PAINT(wxGenericFontDialog::OnPaint) -END_EVENT_TABLE() - -BEGIN_EVENT_TABLE(wxGenericPrintDialog, wxDialog) - EVT_BUTTON(wxID_OK, wxGenericPrintDialog::OnOK) - EVT_BUTTON(wxPRINTID_SETUP, wxGenericPrintDialog::OnSetup) - EVT_RADIOBOX(wxPRINTID_RANGE, wxGenericPrintDialog::OnRange) -END_EVENT_TABLE() - -#endif - -BEGIN_EVENT_TABLE(wxTextEntryDialog, wxDialog) - EVT_BUTTON(wxID_OK, wxTextEntryDialog::OnOK) -END_EVENT_TABLE() - -BEGIN_EVENT_TABLE(wxSingleChoiceDialog, wxDialog) - EVT_BUTTON(wxID_OK, wxSingleChoiceDialog::OnOK) -END_EVENT_TABLE() - -#include "wx/prntbase.h" - -BEGIN_EVENT_TABLE(wxPrintAbortDialog, wxDialog) - EVT_BUTTON(wxID_CANCEL, wxPrintAbortDialog::OnCancel) -END_EVENT_TABLE() - -BEGIN_EVENT_TABLE(wxPreviewControlBar, wxWindow) - EVT_BUTTON(wxID_PREVIEW_CLOSE, wxPreviewControlBar::OnClose) - EVT_BUTTON(wxID_PREVIEW_PRINT, wxPreviewControlBar::OnPrint) - EVT_BUTTON(wxID_PREVIEW_PREVIOUS, wxPreviewControlBar::OnPrevious) - EVT_BUTTON(wxID_PREVIEW_NEXT, wxPreviewControlBar::OnNext) - EVT_CHOICE(wxID_PREVIEW_ZOOM, wxPreviewControlBar::OnZoom) -END_EVENT_TABLE() - -#endif - - -const wxSize wxDefaultSize(-1, -1); -const wxPoint wxDefaultPosition(-1, -1); diff --git a/src/msw/dc.cpp b/src/msw/dc.cpp deleted file mode 100644 index 73f3390952..0000000000 --- a/src/msw/dc.cpp +++ /dev/null @@ -1,1720 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dc.cpp -// Purpose: wxDC class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dc.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/frame.h" -#include "wx/dc.h" -#include "wx/utils.h" -#include "wx/dialog.h" -#include "wx/app.h" -#include "wx/bitmap.h" -#include "wx/dcmemory.h" -#endif - -#include "wx/dcprint.h" -#include "wx/msw/private.h" - -#include -#include - -#if wxUSE_COMMON_DIALOGS -#include -#endif - -#ifndef __WIN32__ -#include -#endif - -#ifdef DrawText -#undef DrawText -#endif - -#ifdef GetCharWidth -#undef GetCharWidth -#endif - -#ifdef StartDoc -#undef StartDoc -#endif - -#if !USE_SHARED_LIBRARY -IMPLEMENT_ABSTRACT_CLASS(wxDC, wxObject) -#endif - -// Declarations local to this file - -#define YSCALE(y) (yorigin - (y)) - -// #define wx_round(a) (int)((a)+.5) - -// Default constructor -wxDC::wxDC(void) -{ - m_minX = 0; m_minY = 0; m_maxX = 0; m_maxY = 0; - m_clipping = FALSE; - - m_filename = ""; - m_canvas = NULL; - m_oldBitmap = 0; - m_oldPen = 0; - m_oldBrush = 0; - m_oldFont = 0; - m_oldPalette = 0; - m_minX = 0; m_minY = 0; m_maxX = 0; m_maxY = 0; - m_logicalOriginX = 0; - m_logicalOriginY = 0; - m_deviceOriginX = 0; - m_deviceOriginY = 0; - m_logicalScaleX = 1.0; - m_logicalScaleY = 1.0; - m_userScaleX = 1.0; - m_userScaleY = 1.0; - m_signX = 1; - m_signY = 1; - m_systemScaleX = 1.0; - m_systemScaleY = 1.0; - m_mappingMode = MM_TEXT; - m_bOwnsDC = FALSE; - m_hDC = 0; - m_clipping = FALSE; - m_ok = TRUE; - m_windowExtX = VIEWPORT_EXTENT; - m_windowExtY = VIEWPORT_EXTENT; - m_logicalFunction = -1; - - m_backgroundBrush = *wxWHITE_BRUSH; - - m_textForegroundColour = *wxBLACK; - m_textBackgroundColour = *wxWHITE; - - m_colour = wxColourDisplay(); - - m_hDCCount = 0; -} - - -wxDC::~wxDC(void) -{ - if ( m_hDC != 0 ) { - SelectOldObjects(m_hDC); - if ( m_bOwnsDC ) { - if ( m_canvas == NULL ) - ::DeleteDC((HDC)m_hDC); - else - ::ReleaseDC((HWND)m_canvas->GetHWND(), (HDC)m_hDC); - } - } - -} - -// This will select current objects out of the DC, -// which is what you have to do before deleting the -// DC. -void wxDC::SelectOldObjects(WXHDC dc) -{ - if (dc) - { - if (m_oldBitmap) - { - ::SelectObject((HDC) dc, (HBITMAP) m_oldBitmap); - if (m_selectedBitmap.Ok()) - { - m_selectedBitmap.SetSelectedInto(NULL); - } - } - m_oldBitmap = 0 ; - if (m_oldPen) - { - ::SelectObject((HDC) dc, (HPEN) m_oldPen); - } - m_oldPen = 0 ; - if (m_oldBrush) - { - ::SelectObject((HDC) dc, (HBRUSH) m_oldBrush); - } - m_oldBrush = 0 ; - if (m_oldFont) - { - ::SelectObject((HDC) dc, (HFONT) m_oldFont); - } - m_oldFont = 0 ; - if (m_oldPalette) - { - ::SelectPalette((HDC) dc, (HPALETTE) m_oldPalette, TRUE); - } - m_oldPalette = 0 ; - } - - m_brush = wxNullBrush ; - m_pen = wxNullPen; - m_palette = wxNullPalette; - m_font = wxNullFont; - m_backgroundBrush = wxNullBrush; - m_selectedBitmap = wxNullBitmap; -} - -void wxDC::SetClippingRegion(long cx, long cy, long cw, long ch) -{ - m_clipping = TRUE; - m_clipX1 = (int)cx; - m_clipY1 = (int)cy; - m_clipX2 = (int)(cx + cw); - m_clipY2 = (int)(cy + ch); - - DoClipping((WXHDC) m_hDC); -} - -void wxDC::SetClippingRegion(const wxRegion& region) -{ - if (!region.GetHRGN()) - return; - - wxRect box = region.GetBox(); - - m_clipping = TRUE; - m_clipX1 = box.x; - m_clipY1 = box.y; - m_clipX2 = box.x + box.width; - m_clipY2 = box.y + box.height; - -#ifdef __WIN16__ - SelectClipRgn((HDC) m_hDC, (HRGN) region.GetHRGN()); -#else - ExtSelectClipRgn((HDC) m_hDC, (HRGN) region.GetHRGN(), RGN_AND); -#endif -} - -void wxDC::DoClipping(WXHDC dc) -{ - if (m_clipping && dc) - { - IntersectClipRect((HDC) dc, XLOG2DEV(m_clipX1), YLOG2DEV(m_clipY1), - XLOG2DEV(m_clipX2), YLOG2DEV(m_clipY2)); - } -} - -void wxDC::DestroyClippingRegion(void) -{ - if (m_clipping && m_hDC) - { - // TODO: this should restore the previous clipping region, - // so that OnPaint processing works correctly, and the update clipping region - // doesn't get destroyed after the first DestroyClippingRegion. - HRGN rgn = CreateRectRgn(0, 0, 32000, 32000); - SelectClipRgn((HDC) m_hDC, rgn); - DeleteObject(rgn); - } - m_clipping = FALSE; -} - -bool wxDC::CanDrawBitmap(void) const -{ - return TRUE; -} - -bool wxDC::CanGetTextExtent(void) const -{ - // What sort of display is it? - int technology = ::GetDeviceCaps((HDC) m_hDC, TECHNOLOGY); - - bool ok; - - if (technology != DT_RASDISPLAY && technology != DT_RASPRINTER) - ok = FALSE; - else ok = TRUE; - - return ok; -} - -void wxDC::SetPalette(const wxPalette& palette) -{ - // Set the old object temporarily, in case the assignment deletes an object - // that's not yet selected out. - if (m_oldPalette) - { - ::SelectPalette((HDC) m_hDC, (HPALETTE) m_oldPalette, TRUE); - m_oldPalette = 0; - } - - m_palette = palette; - - if (!m_palette.Ok()) - { - // Setting a NULL colourmap is a way of restoring - // the original colourmap - if (m_oldPalette) - { - ::SelectPalette((HDC) m_hDC, (HPALETTE) m_oldPalette, TRUE); - m_oldPalette = 0; - } - - return; - } - - if (m_palette.Ok() && m_palette.GetHPALETTE()) - { - HPALETTE oldPal = ::SelectPalette((HDC) m_hDC, (HPALETTE) m_palette.GetHPALETTE(), TRUE); - if (!m_oldPalette) - m_oldPalette = (WXHPALETTE) oldPal; - - ::RealizePalette((HDC) m_hDC); - } -} - -void wxDC::Clear(void) -{ - RECT rect; - if (m_canvas) - GetClientRect((HWND) m_canvas->GetHWND(), &rect); - else if (m_selectedBitmap.Ok()) - { - rect.left = 0; rect.top = 0; - rect.right = m_selectedBitmap.GetWidth(); - rect.bottom = m_selectedBitmap.GetHeight(); - } - (void) ::SetMapMode((HDC) m_hDC, MM_TEXT); - - DWORD colour = GetBkColor((HDC) m_hDC); - HBRUSH brush = CreateSolidBrush(colour); - FillRect((HDC) m_hDC, &rect, brush); - DeleteObject(brush); - - ::SetMapMode((HDC) m_hDC, MM_ANISOTROPIC); - ::SetViewportExtEx((HDC) m_hDC, VIEWPORT_EXTENT, VIEWPORT_EXTENT, NULL); - ::SetWindowExtEx((HDC) m_hDC, m_windowExtX, m_windowExtY, NULL); - ::SetViewportOrgEx((HDC) m_hDC, (int)m_deviceOriginX, (int)m_deviceOriginY, NULL); - ::SetWindowOrgEx((HDC) m_hDC, (int)m_logicalOriginX, (int)m_logicalOriginY, NULL); -} - -void wxDC::FloodFill(long x, long y, const wxColour& col, int style) -{ - (void)ExtFloodFill((HDC) m_hDC, XLOG2DEV(x), YLOG2DEV(y), - col.GetPixel(), - style==wxFLOOD_SURFACE? - FLOODFILLSURFACE:FLOODFILLBORDER - ); - - CalcBoundingBox(x, y); -} - -bool wxDC::GetPixel(long x, long y, wxColour *col) const -{ - // added by steve 29.12.94 (copied from DrawPoint) - // returns TRUE for pixels in the color of the current pen - // and FALSE for all other pixels colors - // if col is non-NULL return the color of the pixel - - // get the color of the pixel - COLORREF pixelcolor = ::GetPixel((HDC) m_hDC, XLOG2DEV(x), YLOG2DEV(y)); - // get the color of the pen - COLORREF pencolor = 0x00ffffff; - if (m_pen.Ok()) - { - pencolor = m_pen.GetColour().GetPixel() ; - } - - // return the color of the pixel - if(col) - col->Set(GetRValue(pixelcolor),GetGValue(pixelcolor),GetBValue(pixelcolor)); - - // check, if color of the pixels is the same as the color - // of the current pen - return(pixelcolor==pencolor); -} - -void wxDC::CrossHair(long x, long y) -{ - // We suppose that our screen is 2000x2000 max. - long x1 = x-2000; - long y1 = y-2000; - long x2 = x+2000; - long y2 = y+2000; - - (void)MoveToEx((HDC) m_hDC, XLOG2DEV(x1), YLOG2DEV(y), NULL); - (void)LineTo((HDC) m_hDC, XLOG2DEV(x2), YLOG2DEV(y)); - - (void)MoveToEx((HDC) m_hDC, XLOG2DEV(x), YLOG2DEV(y1), NULL); - (void)LineTo((HDC) m_hDC, XLOG2DEV(x), YLOG2DEV(y2)); - - CalcBoundingBox(x1, y1); - CalcBoundingBox(x2, y2); -} - -void wxDC::DrawLine(long x1, long y1, long x2, long y2) -{ - (void)MoveToEx((HDC) m_hDC, XLOG2DEV(x1), YLOG2DEV(y1), NULL); - (void)LineTo((HDC) m_hDC, XLOG2DEV(x2), YLOG2DEV(y2)); - - /* MATTHEW: [6] New normalization */ -#if WX_STANDARD_GRAPHICS - (void)LineTo((HDC) m_hDC, XLOG2DEV(x2) + 1, YLOG2DEV(y2)); -#endif - - CalcBoundingBox(x1, y1); - CalcBoundingBox(x2, y2); -} - -void wxDC::DrawArc(long x1,long y1,long x2,long y2, long xc, long yc) -{ - double dx = xc-x1 ; - double dy = yc-y1 ; - double radius = (double)sqrt(dx*dx+dy*dy) ;; - if (x1==x2 && x2==y2) - { - DrawEllipse(xc,yc,(long)(radius*2.0),(long)(radius*2.0)) ; - return ; - } - - long xx1 = XLOG2DEV(x1) ; - long yy1 = YLOG2DEV(y1) ; - long xx2 = XLOG2DEV(x2) ; - long yy2 = YLOG2DEV(y2) ; - long xxc = XLOG2DEV(xc) ; - long yyc = YLOG2DEV(yc) ; - long ray = (long) sqrt(double((xxc-xx1)*(xxc-xx1)+(yyc-yy1)*(yyc-yy1))) ; - - (void)MoveToEx((HDC) m_hDC, (int) xx1, (int) yy1, NULL); - long xxx1 = (long) (xxc-ray); - long yyy1 = (long) (yyc-ray); - long xxx2 = (long) (xxc+ray); - long yyy2 = (long) (yyc+ray); - if (m_brush.Ok() && m_brush.GetStyle() !=wxTRANSPARENT) - { - // Have to add 1 to bottom-right corner of rectangle - // to make semi-circles look right (crooked line otherwise). - // Unfortunately this is not a reliable method, depends - // on the size of shape. - // TODO: figure out why this happens! - Pie((HDC) m_hDC,xxx1,yyy1,xxx2+1,yyy2+1, - xx1,yy1,xx2,yy2) ; - } - else - Arc((HDC) m_hDC,xxx1,yyy1,xxx2,yyy2, - xx1,yy1,xx2,yy2) ; - - CalcBoundingBox((xc-radius), (yc-radius)); - CalcBoundingBox((xc+radius), (yc+radius)); -} - -void wxDC::DrawPoint(long x, long y) -{ - COLORREF color = 0x00ffffff; - if (m_pen.Ok()) - { - color = m_pen.GetColour().GetPixel() ; - } - - SetPixel((HDC) m_hDC, XLOG2DEV(x), YLOG2DEV(y), color); - - CalcBoundingBox(x, y); -} - -void wxDC::DrawPolygon(int n, wxPoint points[], long xoffset, long yoffset,int fillStyle) -{ - // Do things less efficiently if we have offsets - if (xoffset != 0 || yoffset != 0) - { - POINT *cpoints = new POINT[n]; - int i; - for (i = 0; i < n; i++) - { - cpoints[i].x = (int)(points[i].x + xoffset); - cpoints[i].y = (int)(points[i].y + yoffset); - - CalcBoundingBox(cpoints[i].x, cpoints[i].y); - } - int prev = SetPolyFillMode((HDC) m_hDC,fillStyle==wxODDEVEN_RULE?ALTERNATE:WINDING) ; - (void)Polygon((HDC) m_hDC, cpoints, n); - SetPolyFillMode((HDC) m_hDC,prev) ; - delete[] cpoints; - } - else - { - int i; - for (i = 0; i < n; i++) - CalcBoundingBox(points[i].x, points[i].y); - - int prev = SetPolyFillMode((HDC) m_hDC,fillStyle==wxODDEVEN_RULE?ALTERNATE:WINDING) ; - (void)Polygon((HDC) m_hDC, (POINT*) points, n); - SetPolyFillMode((HDC) m_hDC,prev) ; - } -} - -void wxDC::DrawLines(int n, wxPoint points[], long xoffset, long yoffset) -{ - // Do things less efficiently if we have offsets - if (xoffset != 0 || yoffset != 0) - { - POINT *cpoints = new POINT[n]; - int i; - for (i = 0; i < n; i++) - { - cpoints[i].x = (int)(points[i].x + xoffset); - cpoints[i].y = (int)(points[i].y + yoffset); - - CalcBoundingBox(cpoints[i].x, cpoints[i].y); - } - (void)Polyline((HDC) m_hDC, cpoints, n); - delete[] cpoints; - } - else - { - int i; - for (i = 0; i < n; i++) - CalcBoundingBox(points[i].x, points[i].y); - - (void)Polyline((HDC) m_hDC, (POINT*) points, n); - } -} - -void wxDC::DrawRectangle(long x, long y, long width, long height) -{ - long x2 = x + width; - long y2 = y + height; - -/* MATTHEW: [6] new normalization */ -#if WX_STANDARD_GRAPHICS - bool do_brush, do_pen; - - do_brush = m_brush.Ok() && m_brush.GetStyle() != wxTRANSPARENT; - do_pen = m_pen.Ok() && m_pen.GetStyle() != wxTRANSPARENT; - - if (do_brush) { - HPEN orig_pen = NULL; - - if (do_pen || !m_pen.Ok()) - orig_pen = (HPEN) ::SelectObject((HDC) m_hDC, (HPEN) ::GetStockObject(NULL_PEN)); - - (void)Rectangle((HDC) m_hDC, XLOG2DEV(x), YLOG2DEV(y), - XLOG2DEV(x2) + 1, YLOG2DEV(y2) + 1); - - if (do_pen || !m_pen.Ok()) - ::SelectObject((HDC) m_hDC , orig_pen); - } - if (do_pen) { - HBRUSH orig_brush = NULL; - - if (do_brush || !m_brush.Ok()) - orig_brush = (HBRUSH) ::SelectObject((HDC) m_hDC, (HBRUSH) ::GetStockObject(NULL_BRUSH)); - - (void)Rectangle((HDC) m_hDC, XLOG2DEV(x), YLOG2DEV(y), - XLOG2DEV(x2), YLOG2DEV(y2)); - - if (do_brush || !m_brush.Ok()) - ::SelectObject((HDC) m_hDC, orig_brush); - } -#else - (void)Rectangle((HDC) m_hDC, XLOG2DEV(x), YLOG2DEV(y), XLOG2DEV(x2), YLOG2DEV(y2)); -#endif - - CalcBoundingBox(x, y); - CalcBoundingBox(x2, y2); -} - -void wxDC::DrawRoundedRectangle(long x, long y, long width, long height, double radius) -{ - // Now, a negative radius value is interpreted to mean - // 'the proportion of the smallest X or Y dimension' - - if (radius < 0.0) - { - double smallest = 0.0; - if (width < height) - smallest = width; - else - smallest = height; - radius = (- radius * smallest); - } - - long x2 = (x+width); - long y2 = (y+height); - - (void)RoundRect((HDC) m_hDC, XLOG2DEV(x), YLOG2DEV(y), XLOG2DEV(x2), - YLOG2DEV(y2), 2*XLOG2DEV(radius), 2*YLOG2DEV(radius)); - - CalcBoundingBox(x, y); - CalcBoundingBox(x2, y2); -} - -void wxDC::DrawEllipse(long x, long y, long width, long height) -{ - long x2 = (x+width); - long y2 = (y+height); - - (void)Ellipse((HDC) m_hDC, XLOG2DEV(x), YLOG2DEV(y), XLOG2DEV(x2), YLOG2DEV(y2)); - - CalcBoundingBox(x, y); - CalcBoundingBox(x2, y2); -} - -// Chris Breeze 20/5/98: first implementation of DrawEllipticArc on Windows -void wxDC::DrawEllipticArc(long x,long y,long w,long h,double sa,double ea) -{ - long x2 = (x+w); - long y2 = (y+h); - - const double deg2rad = 3.14159265359 / 180.0; - int rx1 = XLOG2DEV(x+w/2); - int ry1 = YLOG2DEV(y+h/2); - int rx2 = rx1; - int ry2 = ry1; - rx1 += (int)(100.0 * abs(w) * cos(sa * deg2rad)); - ry1 -= (int)(100.0 * abs(h) * m_signY * sin(sa * deg2rad)); - rx2 += (int)(100.0 * abs(w) * cos(ea * deg2rad)); - ry2 -= (int)(100.0 * abs(h) * m_signY * sin(ea * deg2rad)); - - // draw pie with NULL_PEN first and then outline otherwise a line is - // drawn from the start and end points to the centre - HPEN orig_pen = (HPEN) ::SelectObject((HDC) m_hDC, (HPEN) ::GetStockObject(NULL_PEN)); - if (m_signY > 0) - { - (void)Pie((HDC) m_hDC, XLOG2DEV(x), YLOG2DEV(y), XLOG2DEV(x2)+1, YLOG2DEV(y2)+1, - rx1, ry1, rx2, ry2); - } - else - { - (void)Pie((HDC) m_hDC, XLOG2DEV(x), YLOG2DEV(y)-1, XLOG2DEV(x2)+1, YLOG2DEV(y2), - rx1, ry1-1, rx2, ry2-1); - } - ::SelectObject((HDC) m_hDC, orig_pen); - (void)Arc((HDC) m_hDC, XLOG2DEV(x), YLOG2DEV(y), XLOG2DEV(x2), YLOG2DEV(y2), - rx1, ry1, rx2, ry2); - - CalcBoundingBox(x, y); - CalcBoundingBox(x2, y2); -} - -void wxDC::DrawIcon(const wxIcon& icon, long x, long y) -{ -#if defined(__WIN32__) && !defined(__SC__) && !defined(__TWIN32__) - ::DrawIconEx((HDC) m_hDC, XLOG2DEV(x), YLOG2DEV(y), (HICON) icon.GetHICON(), - icon.GetWidth(), icon.GetHeight(), 0, 0, DI_NORMAL); -#else - ::DrawIcon((HDC) m_hDC, XLOG2DEV(x), YLOG2DEV(y), (HICON) icon.GetHICON()); -#endif - - CalcBoundingBox(x, y); - CalcBoundingBox(x+icon.GetWidth(), y+icon.GetHeight()); -} - -void wxDC::DrawBitmap( const wxBitmap &bmp, long x, long y, bool useMask ) -{ - if (!bmp.Ok()) - return; - - // If we're not drawing transparently, and not drawing to a printer, - // optimize this function to use Windows functions. - if (!useMask && !IsKindOf(CLASSINFO(wxPrinterDC))) - { - HDC cdc = (HDC)m_hDC; - HDC memdc = ::CreateCompatibleDC( cdc ); - HBITMAP hbitmap = (HBITMAP) bmp.GetHBITMAP( ); - ::SelectObject( memdc, hbitmap ); - ::BitBlt( cdc, x, y, bmp.GetWidth(), bmp.GetHeight(), memdc, 0, 0, SRCCOPY); - ::SelectObject( memdc, 0 ); - ::DeleteDC( memdc ); - } - else - { - // Rather than reproduce wxDC::Blit, let's do it at the wxWin API level - wxMemoryDC memDC; - memDC.SelectObject(bmp); - - /* Not sure if we need this. The mask should leave the - * masked areas as per the original background of this DC. - */ -/* - // There might be transparent areas, so make these - // the same colour as this DC - memDC.SetBackground(* GetBackground()); - memDC.Clear(); -*/ - - Blit(x, y, bmp.GetWidth(), bmp.GetHeight(), & memDC, 0, 0, wxCOPY, useMask); - - memDC.SelectObject(wxNullBitmap); - } -} - -void wxDC::SetFont(const wxFont& the_font) -{ - // Set the old object temporarily, in case the assignment deletes an object - // that's not yet selected out. - if (m_oldFont) - { - ::SelectObject((HDC) m_hDC, (HFONT) m_oldFont); - m_oldFont = 0; - } - - m_font = the_font; - - if (!the_font.Ok()) - { - if (m_oldFont) - ::SelectObject((HDC) m_hDC, (HFONT) m_oldFont); - m_oldFont = 0 ; - } - - if (m_font.Ok() && m_font.GetResourceHandle()) - { - HFONT f = (HFONT) ::SelectObject((HDC) m_hDC, (HFONT) m_font.GetResourceHandle()); - if (f == (HFONT) NULL) - { - wxDebugMsg("::SelectObject failed in wxDC::SetFont."); - } - if (!m_oldFont) - m_oldFont = (WXHFONT) f; - } -} - -void wxDC::SetPen(const wxPen& pen) -{ - // Set the old object temporarily, in case the assignment deletes an object - // that's not yet selected out. - if (m_oldPen) - { - ::SelectObject((HDC) m_hDC, (HPEN) m_oldPen); - m_oldPen = 0; - } - - m_pen = pen; - - if (!m_pen.Ok()) - { - if (m_oldPen) - ::SelectObject((HDC) m_hDC, (HPEN) m_oldPen); - m_oldPen = 0 ; - } - - if (m_pen.Ok()) - { - if (m_pen.GetResourceHandle()) - { - HPEN p = (HPEN) ::SelectObject((HDC) m_hDC, (HPEN)m_pen.GetResourceHandle()) ; - if (!m_oldPen) - m_oldPen = (WXHPEN) p; - } - } -} - -void wxDC::SetBrush(const wxBrush& brush) -{ - // Set the old object temporarily, in case the assignment deletes an object - // that's not yet selected out. - if (m_oldBrush) - { - ::SelectObject((HDC) m_hDC, (HBRUSH) m_oldBrush); - m_oldBrush = 0; - } - - m_brush = brush; - - if (!m_brush.Ok()) - { - if (m_oldBrush) - ::SelectObject((HDC) m_hDC, (HBRUSH) m_oldBrush); - m_oldBrush = 0 ; - } - - if (m_brush.Ok()) - { - if (m_brush.GetResourceHandle()) - { - HBRUSH b = 0; - b = (HBRUSH) ::SelectObject((HDC) m_hDC, (HBRUSH)m_brush.GetResourceHandle()) ; - if (!m_oldBrush) - m_oldBrush = (WXHBRUSH) b; - } - } -} - -void wxDC::DrawText(const wxString& text, long x, long y, bool use16bit) -{ - // Should be unnecessary: SetFont should have done this already. -#if 0 - if (m_font.Ok() && m_font.GetResourceHandle()) - { - HFONT f = (HFONT) ::SelectObject((HDC) m_hDC, (HFONT) m_font.GetResourceHandle()); - if (!m_oldFont) - m_oldFont = (WXHFONT) f; - } -#endif - - if (m_textForegroundColour.Ok()) - SetTextColor((HDC) m_hDC, m_textForegroundColour.GetPixel() ) ; - - DWORD old_background = 0; - if (m_textBackgroundColour.Ok()) - { - old_background = SetBkColor((HDC) m_hDC, m_textBackgroundColour.GetPixel() ) ; - } - - if (m_backgroundMode == wxTRANSPARENT) - SetBkMode((HDC) m_hDC, TRANSPARENT); - else - SetBkMode((HDC) m_hDC, OPAQUE); - - (void)TextOut((HDC) m_hDC, XLOG2DEV(x), YLOG2DEV(y), (char *) (const char *)text, strlen((const char *)text)); - - if (m_textBackgroundColour.Ok()) - (void)SetBkColor((HDC) m_hDC, old_background); - - CalcBoundingBox(x, y); - - long w, h; - GetTextExtent(text, &w, &h); - CalcBoundingBox((x + w), (y + h)); -} - -void wxDC::SetBackground(const wxBrush& brush) -{ - m_backgroundBrush = brush; - - if (!m_backgroundBrush.Ok()) - return; - - if (m_canvas) - { - bool customColours = TRUE; - // If we haven't specified wxUSER_COLOURS, don't allow the panel/dialog box to - // change background colours from the control-panel specified colours. - if (m_canvas->IsKindOf(CLASSINFO(wxWindow)) && ((m_canvas->GetWindowStyleFlag() & wxUSER_COLOURS) != wxUSER_COLOURS)) - customColours = FALSE; - - if (customColours) - { - if (m_backgroundBrush.GetStyle()==wxTRANSPARENT) - { - m_canvas->m_backgroundTransparent = TRUE; - } - else - { - m_canvas->SetBackgroundColour(m_backgroundBrush.GetColour()); - m_canvas->m_backgroundTransparent = FALSE; - } - } - } - COLORREF new_color = m_backgroundBrush.GetColour().GetPixel() ; - { - (void)SetBkColor((HDC) m_hDC, new_color); - } -} - -void wxDC::SetBackgroundMode(int mode) -{ - m_backgroundMode = mode; - - if (m_backgroundMode == wxTRANSPARENT) - ::SetBkMode((HDC) m_hDC, TRANSPARENT); - else - ::SetBkMode((HDC) m_hDC, OPAQUE); -} - -void wxDC::SetLogicalFunction(int function) -{ - m_logicalFunction = function; - - SetRop((WXHDC) m_hDC); -} - -void wxDC::SetRop(WXHDC dc) -{ - if (!dc || m_logicalFunction < 0) - return; - - int c_rop; - // These may be wrong - switch (m_logicalFunction) - { -// case wxXOR: c_rop = R2_XORPEN; break; - case wxXOR: c_rop = R2_NOTXORPEN; break; - case wxINVERT: c_rop = R2_NOT; break; - case wxOR_REVERSE: c_rop = R2_MERGEPENNOT; break; - case wxAND_REVERSE: c_rop = R2_MASKPENNOT; break; - case wxCLEAR: c_rop = R2_WHITE; break; - case wxSET: c_rop = R2_BLACK; break; - case wxSRC_INVERT: c_rop = R2_NOTCOPYPEN; break; - case wxOR_INVERT: c_rop = R2_MERGENOTPEN; break; - case wxAND: c_rop = R2_MASKPEN; break; - case wxOR: c_rop = R2_MERGEPEN; break; - case wxAND_INVERT: c_rop = R2_MASKNOTPEN; break; - case wxEQUIV: - case wxNAND: - case wxCOPY: - default: - c_rop = R2_COPYPEN; break; - } - SetROP2((HDC) dc, c_rop); -} - -bool wxDC::StartDoc(const wxString& message) -{ - if (!this->IsKindOf(CLASSINFO(wxPrinterDC))) - return TRUE; - - DOCINFO docinfo; - docinfo.cbSize = sizeof(DOCINFO); - docinfo.lpszDocName = (const char *)message; - - if (m_filename.IsEmpty()) - docinfo.lpszOutput = NULL; - else - docinfo.lpszOutput = (const char *)m_filename; - -#if defined(__WIN95__) - docinfo.lpszDatatype = NULL; - docinfo.fwType = 0; -#endif - - if (!m_hDC) - return FALSE; - - int ret = -#ifndef __WIN32__ - ::StartDoc((HDC) m_hDC, &docinfo); -#else -#ifdef UNICODE - ::StartDocW((HDC) m_hDC, &docinfo); -#else -#ifdef __TWIN32__ - ::StartDoc((HDC) m_hDC, &docinfo); -#else - ::StartDocA((HDC) m_hDC, &docinfo); -#endif -#endif -#endif - -#ifndef __WIN16__ - if (ret <= 0) - { - DWORD lastError = GetLastError(); - wxDebugMsg("wxDC::StartDoc failed with error: %d\n", lastError); - } -#endif - - return (ret > 0); -} - -void wxDC::EndDoc(void) -{ - if (!this->IsKindOf(CLASSINFO(wxPrinterDC))) - return; - if (m_hDC) ::EndDoc((HDC) m_hDC); -} - -void wxDC::StartPage(void) -{ - if (!this->IsKindOf(CLASSINFO(wxPrinterDC))) - return; - if (m_hDC) - ::StartPage((HDC) m_hDC); -} - -void wxDC::EndPage(void) -{ - if (!this->IsKindOf(CLASSINFO(wxPrinterDC))) - return; - if (m_hDC) - ::EndPage((HDC) m_hDC); -} - -long wxDC::GetCharHeight(void) const -{ - TEXTMETRIC lpTextMetric; - - GetTextMetrics((HDC) m_hDC, &lpTextMetric); - - return YDEV2LOGREL(lpTextMetric.tmHeight); -} - -long wxDC::GetCharWidth(void) const -{ - TEXTMETRIC lpTextMetric; - - GetTextMetrics((HDC) m_hDC, &lpTextMetric); - - return XDEV2LOGREL(lpTextMetric.tmAveCharWidth); -} - -void wxDC::GetTextExtent(const wxString& string, long *x, long *y, - long *descent, long *externalLeading, wxFont *theFont, bool use16bit) const -{ - wxFont *fontToUse = (wxFont*) theFont; - if (!fontToUse) - fontToUse = (wxFont*) &m_font; - - SIZE sizeRect; - TEXTMETRIC tm; - - GetTextExtentPoint((HDC) m_hDC, (char *)(const char *) string, strlen((char *)(const char *) string), &sizeRect); - GetTextMetrics((HDC) m_hDC, &tm); - - if (x) *x = XDEV2LOGREL(sizeRect.cx); - if (y) *y = YDEV2LOGREL(sizeRect.cy); - if (descent) *descent = tm.tmDescent; - if (externalLeading) *externalLeading = tm.tmExternalLeading; -} - -void wxDC::SetMapMode(int mode) -{ - m_mappingMode = mode; - - int pixel_width = 0; - int pixel_height = 0; - int mm_width = 0; - int mm_height = 0; - - pixel_width = GetDeviceCaps((HDC) m_hDC, HORZRES); - pixel_height = GetDeviceCaps((HDC) m_hDC, VERTRES); - mm_width = GetDeviceCaps((HDC) m_hDC, HORZSIZE); - mm_height = GetDeviceCaps((HDC) m_hDC, VERTSIZE); - - if ((pixel_width == 0) || (pixel_height == 0) || (mm_width == 0) || (mm_height == 0)) - { - return; - } - - double mm2pixelsX = pixel_width/mm_width; - double mm2pixelsY = pixel_height/mm_height; - - switch (mode) - { - case MM_TWIPS: - { - m_logicalScaleX = (twips2mm * mm2pixelsX); - m_logicalScaleY = (twips2mm * mm2pixelsY); - break; - } - case MM_POINTS: - { - m_logicalScaleX = (pt2mm * mm2pixelsX); - m_logicalScaleY = (pt2mm * mm2pixelsY); - break; - } - case MM_METRIC: - { - m_logicalScaleX = mm2pixelsX; - m_logicalScaleY = mm2pixelsY; - break; - } - case MM_LOMETRIC: - { - m_logicalScaleX = (mm2pixelsX/10.0); - m_logicalScaleY = (mm2pixelsY/10.0); - break; - } - default: - case MM_TEXT: - { - m_logicalScaleX = 1.0; - m_logicalScaleY = 1.0; - break; - } - } - - if (::GetMapMode((HDC) m_hDC) != MM_ANISOTROPIC) - ::SetMapMode((HDC) m_hDC, MM_ANISOTROPIC); - - SetViewportExtEx((HDC) m_hDC, VIEWPORT_EXTENT, VIEWPORT_EXTENT, NULL); - m_windowExtX = (int)MS_XDEV2LOGREL(VIEWPORT_EXTENT); - m_windowExtY = (int)MS_YDEV2LOGREL(VIEWPORT_EXTENT); - ::SetWindowExtEx((HDC) m_hDC, m_windowExtX, m_windowExtY, NULL); - ::SetViewportOrgEx((HDC) m_hDC, (int)m_deviceOriginX, (int)m_deviceOriginY, NULL); - ::SetWindowOrgEx((HDC) m_hDC, (int)m_logicalOriginX, (int)m_logicalOriginY, NULL); -} - -void wxDC::SetUserScale(double x, double y) -{ - m_userScaleX = x; - m_userScaleY = y; - - SetMapMode(m_mappingMode); -} - -void wxDC::SetAxisOrientation(bool xLeftRight, bool yBottomUp) -{ - m_signX = xLeftRight ? 1 : -1; - m_signY = yBottomUp ? -1 : 1; - - SetMapMode(m_mappingMode); -} - -void wxDC::SetSystemScale(double x, double y) -{ - m_systemScaleX = x; - m_systemScaleY = y; - - SetMapMode(m_mappingMode); -} - -void wxDC::SetLogicalOrigin(long x, long y) -{ - m_logicalOriginX = x; - m_logicalOriginY = y; - - ::SetWindowOrgEx((HDC) m_hDC, (int)m_logicalOriginX, (int)m_logicalOriginY, NULL); -} - -void wxDC::SetDeviceOrigin(long x, long y) -{ - m_deviceOriginX = x; - m_deviceOriginY = y; - - ::SetViewportOrgEx((HDC) m_hDC, (int)m_deviceOriginX, (int)m_deviceOriginY, NULL); -} - -long wxDC::DeviceToLogicalX(long x) const -{ - return (long) (((x) - m_deviceOriginX)/(m_logicalScaleX*m_userScaleX*m_signX*m_systemScaleX) - m_logicalOriginX) ; -} - -long wxDC::DeviceToLogicalXRel(long x) const -{ - return (long) ((x)/(m_logicalScaleX*m_userScaleX*m_signX*m_systemScaleX)) ; -} - -long wxDC::DeviceToLogicalY(long y) const -{ - return (long) (((y) - m_deviceOriginY)/(m_logicalScaleY*m_userScaleY*m_signY*m_systemScaleY) - m_logicalOriginY) ; -} - -long wxDC::DeviceToLogicalYRel(long y) const -{ - return (long) ((y)/(m_logicalScaleY*m_userScaleY*m_signY*m_systemScaleY)) ; -} - -long wxDC::LogicalToDeviceX(long x) const -{ - return (long) (floor((x) - m_logicalOriginX)*m_logicalScaleX*m_userScaleX*m_signX*m_systemScaleX + m_deviceOriginX) ; -} - -long wxDC::LogicalToDeviceXRel(long x) const -{ - return (long) (floor(x)*m_logicalScaleX*m_userScaleX*m_signX*m_systemScaleX) ; -} - -long wxDC::LogicalToDeviceY(long y) const -{ - return (long) (floor((y) - m_logicalOriginY)*m_logicalScaleY*m_userScaleY*m_signY*m_systemScaleY + m_deviceOriginY); -} - -long wxDC::LogicalToDeviceYRel(long y) const -{ - return (long) (floor(y)*m_logicalScaleY*m_userScaleY*m_signY*m_systemScaleY) ; -} - -// This group of functions may not do any conversion -// if m_scaleGDI is TRUE, since the HDC does the -// conversion automatically. - -long wxDC::ImplDeviceToLogicalX(long x) const -{ -// return (m_scaleGDI ? x : DeviceToLogicalX(x)); - return x; -} - -long wxDC::ImplDeviceToLogicalY(long y) const -{ -// return (m_scaleGDI ? y : DeviceToLogicalY(y)); - return y; -} - -long wxDC::ImplDeviceToLogicalXRel(long x) const -{ -// return (m_scaleGDI ? x : DeviceToLogicalXRel(x)); - return x; -} - -long wxDC::ImplDeviceToLogicalYRel(long y) const -{ -// return (m_scaleGDI ? y : DeviceToLogicalYRel(y)); - return y; -} - -long wxDC::ImplLogicalToDeviceX(long x) const -{ -// return (m_scaleGDI ? (floor(double(x))) : LogicalToDeviceX(x)); - return x; -} - -long wxDC::ImplLogicalToDeviceY(long y) const -{ -// return (m_scaleGDI ? (floor(double(y))) : LogicalToDeviceY(y)); - return y; -} - -long wxDC::ImplLogicalToDeviceXRel(long x) const -{ -// return (m_scaleGDI ? (floor(double(x))) : LogicalToDeviceXRel(x)); - return x; -} - -long wxDC::ImplLogicalToDeviceYRel(long y) const -{ -// return (m_scaleGDI ? (floor(double(y))) : LogicalToDeviceYRel(y)); - return y; -} - -bool wxDC::Blit(long xdest, long ydest, long width, long height, - wxDC *source, long xsrc, long ysrc, int rop, bool useMask) -{ - long xdest1 = xdest; - long ydest1 = ydest; - long xsrc1 = xsrc; - long ysrc1 = ysrc; - - // Chris Breeze 18/5/98: use text foreground/background colours - // when blitting from 1-bit bitmaps - COLORREF old_textground = ::GetTextColor((HDC)m_hDC); - COLORREF old_background = ::GetBkColor((HDC)m_hDC); - if (m_textForegroundColour.Ok()) - { - ::SetTextColor((HDC) m_hDC, m_textForegroundColour.GetPixel() ) ; - } - if (m_textBackgroundColour.Ok()) - { - ::SetBkColor((HDC) m_hDC, m_textBackgroundColour.GetPixel() ) ; - } - - DWORD dwRop = rop == wxCOPY ? SRCCOPY : - rop == wxCLEAR ? WHITENESS : - rop == wxSET ? BLACKNESS : - rop == wxINVERT ? DSTINVERT : - rop == wxAND ? MERGECOPY : - rop == wxOR ? MERGEPAINT : - rop == wxSRC_INVERT ? NOTSRCCOPY : - rop == wxXOR ? SRCINVERT : - rop == wxOR_REVERSE ? MERGEPAINT : - rop == wxAND_REVERSE ? SRCERASE : - rop == wxSRC_OR ? SRCPAINT : - rop == wxSRC_AND ? SRCAND : - SRCCOPY; - - bool success = TRUE; - if (useMask && source->m_selectedBitmap.Ok() && source->m_selectedBitmap.GetMask()) - { - -#if 0 // __WIN32__ - // Not implemented under Win95 (or maybe a specific device?) - if (MaskBlt((HDC) m_hDC, xdest1, ydest1, (int)width, (int)height, - (HDC) source->m_hDC, xsrc1, ysrc1, (HBITMAP) source->m_selectedBitmap.GetMask()->GetMaskBitmap(), - 0, 0, 0xAACC0020)) - { - // Success - } - else -#endif - { - // Old code -#if 0 - HDC dc_mask = CreateCompatibleDC((HDC) source->m_hDC); - ::SelectObject(dc_mask, (HBITMAP) source->m_selectedBitmap.GetMask()->GetMaskBitmap()); - success = (BitBlt((HDC) m_hDC, xdest1, ydest1, (int)width, (int)height, - dc_mask, xsrc1, ysrc1, 0x00220326 /* NOTSRCAND */) != 0); - success = (BitBlt((HDC) m_hDC, xdest1, ydest1, (int)width, (int)height, - (HDC) source->m_hDC, xsrc1, ysrc1, SRCPAINT) != 0); - ::SelectObject(dc_mask, 0); - ::DeleteDC(dc_mask); -#endif - // New code from Chris Breeze, 15/7/98 - // Blit bitmap with mask - - if (IsKindOf(CLASSINFO(wxPrinterDC))) - { - // If we are printing source colours are screen colours - // not printer colours and so we need copy the bitmap - // pixel by pixel. - RECT rect; - HDC dc_mask = ::CreateCompatibleDC((HDC) source->m_hDC); - HDC dc_src = (HDC) source->m_hDC; - - ::SelectObject(dc_mask, (HBITMAP) source->m_selectedBitmap.GetMask()->GetMaskBitmap()); - for (int x = 0; x < width; x++) - { - for (int y = 0; y < height; y++) - { - COLORREF cref = ::GetPixel(dc_mask, x, y); - if (cref) - { - HBRUSH brush = ::CreateSolidBrush(::GetPixel(dc_src, x, y)); - rect.left = xdest1 + x; rect.right = rect.left + 1; - rect.top = ydest1 + y; rect.bottom = rect.top + 1; - ::FillRect((HDC) m_hDC, &rect, brush); - ::DeleteObject(brush); - } - } - } - ::SelectObject(dc_mask, 0); - ::DeleteDC(dc_mask); - } - else - { - // create a temp buffer bitmap and DCs to access it and the mask - HDC dc_mask = ::CreateCompatibleDC((HDC) source->m_hDC); - HDC dc_buffer = ::CreateCompatibleDC((HDC) m_hDC); - HBITMAP buffer_bmap = ::CreateCompatibleBitmap((HDC) m_hDC, width, height); - ::SelectObject(dc_mask, (HBITMAP) source->m_selectedBitmap.GetMask()->GetMaskBitmap()); - ::SelectObject(dc_buffer, buffer_bmap); - - // copy dest to buffer - ::BitBlt(dc_buffer, 0, 0, (int)width, (int)height, - (HDC) m_hDC, xdest1, ydest1, SRCCOPY); - - // copy src to buffer using selected raster op - ::BitBlt(dc_buffer, 0, 0, (int)width, (int)height, - (HDC) source->m_hDC, xsrc1, ysrc1, dwRop); - - // set masked area in buffer to BLACK (pixel value 0) - COLORREF prevBkCol = ::SetBkColor((HDC) m_hDC, RGB(255, 255, 255)); - COLORREF prevCol = ::SetTextColor((HDC) m_hDC, RGB(0, 0, 0)); - ::BitBlt(dc_buffer, 0, 0, (int)width, (int)height, - dc_mask, xsrc1, ysrc1, SRCAND); - - // set unmasked area in dest to BLACK - ::SetBkColor((HDC) m_hDC, RGB(0, 0, 0)); - ::SetTextColor((HDC) m_hDC, RGB(255, 255, 255)); - ::BitBlt((HDC) m_hDC, xdest1, ydest1, (int)width, (int)height, - dc_mask, xsrc1, ysrc1, SRCAND); - ::SetBkColor((HDC) m_hDC, prevBkCol); // restore colours to original values - ::SetTextColor((HDC) m_hDC, prevCol); - - // OR buffer to dest - success = (::BitBlt((HDC) m_hDC, xdest1, ydest1, (int)width, (int)height, - dc_buffer, 0, 0, SRCPAINT) != 0); - - // tidy up temporary DCs and bitmap - ::SelectObject(dc_mask, 0); - ::DeleteDC(dc_mask); - ::SelectObject(dc_buffer, 0); - ::DeleteDC(dc_buffer); - ::DeleteObject(buffer_bmap); - } - } - } - else - { - if (IsKindOf(CLASSINFO(wxPrinterDC))) - { - // If we are printing, source colours are screen colours - // not printer colours and so we need copy the bitmap - // pixel by pixel. - HDC dc_src = (HDC) source->m_hDC; - RECT rect; - for (int x = 0; x < width; x++) - { - for (int y = 0; y < height; y++) - { - HBRUSH brush = ::CreateSolidBrush(::GetPixel(dc_src, x, y)); - rect.left = xdest1 + x; rect.right = rect.left + 1; - rect.top = ydest1 + y; rect.bottom = rect.top + 1; - ::FillRect((HDC) m_hDC, &rect, brush); - ::DeleteObject(brush); - } - } - } - else - { - success = (BitBlt((HDC) m_hDC, xdest1, ydest1, (int)width, (int)height, (HDC) source->m_hDC, - xsrc1, ysrc1, dwRop) != 0); - } - } - ::SetTextColor((HDC)m_hDC, old_textground); - ::SetBkColor((HDC)m_hDC, old_background); - - return success; -} - -void wxDC::GetSize(int* width, int* height) const -{ - long w=::GetDeviceCaps((HDC) m_hDC,HORZRES); - long h=::GetDeviceCaps((HDC) m_hDC,VERTRES); - *width = w; - *height = h; -} - -void wxDC::GetSizeMM(long *width, long *height) const -{ - long w=::GetDeviceCaps((HDC) m_hDC,HORZSIZE); - long h=::GetDeviceCaps((HDC) m_hDC,VERTSIZE); - *width = w; - *height = h; -} - -void wxDC::DrawPolygon(wxList *list, long xoffset, long yoffset,int fillStyle) -{ - int n = list->Number(); - wxPoint *points = new wxPoint[n]; - - int i = 0; - for(wxNode *node = list->First(); node; node = node->Next()) { - wxPoint *point = (wxPoint *)node->Data(); - points[i].x = point->x; - points[i++].y = point->y; - } - DrawPolygon(n, points, xoffset, yoffset,fillStyle); - delete[] points; -} - -void wxDC::DrawLines(wxList *list, long xoffset, long yoffset) -{ - int n = list->Number(); - wxPoint *points = new wxPoint[n]; - - int i = 0; - for(wxNode *node = list->First(); node; node = node->Next()) { - wxPoint *point = (wxPoint *)node->Data(); - points[i].x = point->x; - points[i++].y = point->y; - } - DrawLines(n, points, xoffset, yoffset); - delete []points; -} - -void wxDC::SetTextForeground(const wxColour& colour) -{ - m_textForegroundColour = colour; -} - -void wxDC::SetTextBackground(const wxColour& colour) -{ - m_textBackgroundColour = colour; -} - -// For use by wxWindows only, unless custom units are required. -void wxDC::SetLogicalScale(double x, double y) -{ - m_logicalScaleX = x; - m_logicalScaleY = y; -} - -void wxDC::CalcBoundingBox(long x, long y) -{ - if (x < m_minX) m_minX = x; - if (y < m_minY) m_minY = y; - if (x > m_maxX) m_maxX = x; - if (y > m_maxY) m_maxY = y; -} - -void wxDC::GetClippingBox(long *x,long *y,long *w,long *h) const -{ - if (m_clipping) - { - *x = m_clipX1 ; - *y = m_clipY1 ; - *w = (m_clipX2 - m_clipX1) ; - *h = (m_clipY2 - m_clipY1) ; - } - else - *x = *y = *w = *h = 0 ; -} - -#if WXWIN_COMPATIBILITY -void wxDC::GetTextExtent(const wxString& string, float *x, float *y, - float *descent, float *externalLeading, - wxFont *theFont, bool use16bit) const -{ - long x1, y1, descent1, externalLeading1; - GetTextExtent(string, & x1, & y1, & descent1, & externalLeading1, theFont, use16bit); - *x = x1; *y = y1; - if (descent) - *descent = descent1; - if (externalLeading) - *externalLeading = externalLeading1; -} -#endif - -int wxDC::GetDepth(void) const -{ - return (int) ::GetDeviceCaps((HDC) m_hDC,BITSPIXEL); -} - -#if wxUSE_SPLINES - -// Make a 3-point spline -void wxDC::DrawSpline(long x1, long y1, long x2, long y2, long x3, long y3) -{ - wxList *point_list = new wxList; - - wxPoint *point1 = new wxPoint; - point1->x = x1; point1->y = y1; - point_list->Append((wxObject*)point1); - - wxPoint *point2 = new wxPoint; - point2->x = x2; point2->y = y2; - point_list->Append((wxObject*)point2); - - wxPoint *point3 = new wxPoint; - point3->x = x3; point3->y = y3; - point_list->Append((wxObject*)point3); - - DrawSpline(point_list); - - for(wxNode *node = point_list->First(); node; node = node->Next()) { - wxPoint *p = (wxPoint *)node->Data(); - delete p; - } - delete point_list; -} - -////#define wx_round(a) (int)((a)+.5) -//#define wx_round(a) (a) - -class wxSpline: public wxObject -{ - public: - int type; - wxList *points; - - wxSpline(wxList *list); - void DeletePoints(void); - - // Doesn't delete points - ~wxSpline(void); -}; - -void wxDC::DrawSpline(int n, wxPoint points[]) -{ - wxList list; - int i; - for (i =0; i < n; i++) - list.Append((wxObject*)&points[i]); - DrawSpline((wxList *)&list); -} - -void wx_draw_open_spline(wxDC *dc, wxSpline *spline); - -void wx_quadratic_spline(double a1, double b1, double a2, double b2, - double a3, double b3, double a4, double b4); -void wx_clear_stack(void); -int wx_spline_pop(double *x1, double *y1, double *x2, double *y2, double *x3, - double *y3, double *x4, double *y4); -void wx_spline_push(double x1, double y1, double x2, double y2, double x3, double y3, - double x4, double y4); -static bool wx_spline_add_point(double x, double y); -static void wx_spline_draw_point_array(wxDC *dc); -wxSpline *wx_make_spline(int x1, int y1, int x2, int y2, int x3, int y3); - -void wxDC::DrawSpline(wxList *list) -{ - wxSpline spline(list); - - wx_draw_open_spline(this, &spline); -} - - -wxList wx_spline_point_list; - -void wx_draw_open_spline(wxDC *dc, wxSpline *spline) -{ - wxPoint *p; - double cx1, cy1, cx2, cy2, cx3, cy3, cx4, cy4; - double x1, y1, x2, y2; - - wxNode *node = spline->points->First(); - p = (wxPoint *)node->Data(); - - x1 = p->x; - y1 = p->y; - - node = node->Next(); - p = (wxPoint *)node->Data(); - - x2 = p->x; - y2 = p->y; - cx1 = (double)((x1 + x2) / 2); - cy1 = (double)((y1 + y2) / 2); - cx2 = (double)((cx1 + x2) / 2); - cy2 = (double)((cy1 + y2) / 2); - - wx_spline_add_point(x1, y1); - - while ((node = node->Next()) != NULL) - { - p = (wxPoint *)node->Data(); - x1 = x2; - y1 = y2; - x2 = p->x; - y2 = p->y; - cx4 = (double)(x1 + x2) / 2; - cy4 = (double)(y1 + y2) / 2; - cx3 = (double)(x1 + cx4) / 2; - cy3 = (double)(y1 + cy4) / 2; - - wx_quadratic_spline(cx1, cy1, cx2, cy2, cx3, cy3, cx4, cy4); - - cx1 = cx4; - cy1 = cy4; - cx2 = (double)(cx1 + x2) / 2; - cy2 = (double)(cy1 + y2) / 2; - } - - wx_spline_add_point((double)wx_round(cx1), (double)wx_round(cy1)); - wx_spline_add_point(x2, y2); - - wx_spline_draw_point_array(dc); - -} - -/********************* CURVES FOR SPLINES ***************************** - - The following spline drawing routine is from - - "An Algorithm for High-Speed Curve Generation" - by George Merrill Chaikin, - Computer Graphics and Image Processing, 3, Academic Press, - 1974, 346-349. - - and - - "On Chaikin's Algorithm" by R. F. Riesenfeld, - Computer Graphics and Image Processing, 4, Academic Press, - 1975, 304-310. - -***********************************************************************/ - -#define half(z1, z2) ((z1+z2)/2.0) -#define THRESHOLD 5 - -/* iterative version */ - -void wx_quadratic_spline(double a1, double b1, double a2, double b2, double a3, double b3, double a4, - double b4) -{ - register double xmid, ymid; - double x1, y1, x2, y2, x3, y3, x4, y4; - - wx_clear_stack(); - wx_spline_push(a1, b1, a2, b2, a3, b3, a4, b4); - - while (wx_spline_pop(&x1, &y1, &x2, &y2, &x3, &y3, &x4, &y4)) { - xmid = (double)half(x2, x3); - ymid = (double)half(y2, y3); - if (fabs(x1 - xmid) < THRESHOLD && fabs(y1 - ymid) < THRESHOLD && - fabs(xmid - x4) < THRESHOLD && fabs(ymid - y4) < THRESHOLD) { - wx_spline_add_point((double)wx_round(x1), (double)wx_round(y1)); - wx_spline_add_point((double)wx_round(xmid), (double)wx_round(ymid)); - } else { - wx_spline_push(xmid, ymid, (double)half(xmid, x3), (double)half(ymid, y3), - (double)half(x3, x4), (double)half(y3, y4), x4, y4); - wx_spline_push(x1, y1, (double)half(x1, x2), (double)half(y1, y2), - (double)half(x2, xmid), (double)half(y2, ymid), xmid, ymid); - } - } -} - - -/* utilities used by spline drawing routines */ - - -typedef struct wx_spline_stack_struct { - double x1, y1, x2, y2, x3, y3, x4, y4; -} - Stack; - -#define SPLINE_STACK_DEPTH 20 -static Stack wx_spline_stack[SPLINE_STACK_DEPTH]; -static Stack *wx_stack_top; -static int wx_stack_count; - -void wx_clear_stack(void) -{ - wx_stack_top = wx_spline_stack; - wx_stack_count = 0; -} - -void wx_spline_push(double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4) -{ - wx_stack_top->x1 = x1; - wx_stack_top->y1 = y1; - wx_stack_top->x2 = x2; - wx_stack_top->y2 = y2; - wx_stack_top->x3 = x3; - wx_stack_top->y3 = y3; - wx_stack_top->x4 = x4; - wx_stack_top->y4 = y4; - wx_stack_top++; - wx_stack_count++; -} - -int wx_spline_pop(double *x1, double *y1, double *x2, double *y2, - double *x3, double *y3, double *x4, double *y4) -{ - if (wx_stack_count == 0) - return (0); - wx_stack_top--; - wx_stack_count--; - *x1 = wx_stack_top->x1; - *y1 = wx_stack_top->y1; - *x2 = wx_stack_top->x2; - *y2 = wx_stack_top->y2; - *x3 = wx_stack_top->x3; - *y3 = wx_stack_top->y3; - *x4 = wx_stack_top->x4; - *y4 = wx_stack_top->y4; - return (1); -} - -static bool wx_spline_add_point(double x, double y) -{ - wxPoint *point = new wxPoint ; - point->x = (int) x; - point->y = (int) y; - wx_spline_point_list.Append((wxObject*)point); - return TRUE; -} - -static void wx_spline_draw_point_array(wxDC *dc) -{ - dc->DrawLines(&wx_spline_point_list, 0, 0); - wxNode *node = wx_spline_point_list.First(); - while (node) - { - wxPoint *point = (wxPoint *)node->Data(); - delete point; - delete node; - node = wx_spline_point_list.First(); - } -} - -wxSpline::wxSpline(wxList *list) -{ - points = list; -} - -wxSpline::~wxSpline(void) -{ -} - -void wxSpline::DeletePoints(void) -{ - for(wxNode *node = points->First(); node; node = points->First()) - { - wxPoint *point = (wxPoint *)node->Data(); - delete point; - delete node; - } - delete points; -} - - -#endif // wxUSE_SPLINES - diff --git a/src/msw/dcclient.cpp b/src/msw/dcclient.cpp deleted file mode 100644 index e1cd97a1ad..0000000000 --- a/src/msw/dcclient.cpp +++ /dev/null @@ -1,145 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcclient.cpp -// Purpose: wxClientDC class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dcclient.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#endif - -#include "wx/dcclient.h" -#include "wx/log.h" - -#include - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxWindowDC, wxDC) -IMPLEMENT_DYNAMIC_CLASS(wxClientDC, wxWindowDC) -IMPLEMENT_DYNAMIC_CLASS(wxPaintDC, wxWindowDC) -#endif - -/* - * wxWindowDC - */ - -wxWindowDC::wxWindowDC(void) -{ - m_canvas = NULL; -} - -wxWindowDC::wxWindowDC(wxWindow *the_canvas) -{ - m_canvas = the_canvas; -// m_hDC = (WXHDC) ::GetDCEx((HWND) the_canvas->GetHWND(), NULL, DCX_WINDOW); - m_hDC = (WXHDC) ::GetWindowDC((HWND) the_canvas->GetHWND() ); - m_hDCCount ++; -} - -wxWindowDC::~wxWindowDC(void) -{ - if (m_canvas && m_hDC) - { - SelectOldObjects(m_hDC); - - ::ReleaseDC((HWND) m_canvas->GetHWND(), (HDC) m_hDC); - m_hDC = 0; - } - m_hDCCount --; -} - -/* - * wxClientDC - */ - -wxClientDC::wxClientDC(void) -{ - m_canvas = NULL; -} - -wxClientDC::wxClientDC(wxWindow *the_canvas) -{ - m_canvas = the_canvas; -// BeginDrawing(); - m_hDC = (WXHDC) ::GetDC((HWND) the_canvas->GetHWND()); -} - -wxClientDC::~wxClientDC(void) -{ -// EndDrawing(); - - if (m_canvas && (HDC) m_hDC) - { - SelectOldObjects(m_hDC); - - ::ReleaseDC((HWND) m_canvas->GetHWND(), (HDC) m_hDC); - m_hDC = 0; - } -} - -/* - * wxPaintDC - */ - -wxPaintDC::wxPaintDC(void) -{ - m_canvas = NULL; -} - -static PAINTSTRUCT g_paintStruct; - -// Don't call Begin/EndPaint if it's already been called: -// for example, if calling a base class OnPaint. - -WXHDC wxPaintDC::ms_PaintHDC = 0; -size_t wxPaintDC::ms_PaintCount = 0; // count of ms_PaintHDC usage - -wxPaintDC::wxPaintDC(wxWindow *canvas) -{ - wxCHECK_RET( canvas, "NULL canvas in wxPaintDC ctor" ); - - m_canvas = canvas; - if ( ms_PaintCount > 0 ) { - // it means that we've already called BeginPaint and so we must just - // reuse the same HDC (BeginPaint shouldn't be called more than once) - wxASSERT( ms_PaintHDC ); - - m_hDC = ms_PaintHDC; - ms_PaintCount++; - } - else { - ms_PaintHDC = - m_hDC = (WXHDC)::BeginPaint((HWND)m_canvas->GetHWND(), &g_paintStruct); - ms_PaintCount = 1; - m_hDCCount++; - } -} - -wxPaintDC::~wxPaintDC() -{ - if ( m_hDC ) { - if ( !--ms_PaintCount ) { - ::EndPaint((HWND)m_canvas->GetHWND(), &g_paintStruct); - m_hDCCount--; - m_hDC = (WXHDC) NULL; - ms_PaintHDC = (WXHDC) NULL; - } - else { }//: ms_PaintHDC still in use - } -} - diff --git a/src/msw/dcmemory.cpp b/src/msw/dcmemory.cpp deleted file mode 100644 index dd76ffcd3a..0000000000 --- a/src/msw/dcmemory.cpp +++ /dev/null @@ -1,129 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcmemory.cpp -// Purpose: wxMemoryDC class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dcmemory.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/utils.h" -#endif - -#include "wx/dcmemory.h" - -#include - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxMemoryDC, wxDC) -#endif - -/* - * Memory DC - * - */ - -wxMemoryDC::wxMemoryDC(void) -{ - m_hDC = (WXHDC) ::CreateCompatibleDC((HDC) NULL); - m_ok = (m_hDC != 0); - m_bOwnsDC = TRUE; - - SetBrush(*wxWHITE_BRUSH); - SetPen(*wxBLACK_PEN); -} - -wxMemoryDC::wxMemoryDC(wxDC *old_dc) -{ - old_dc->BeginDrawing(); - - m_hDC = (WXHDC) ::CreateCompatibleDC((HDC) old_dc->GetHDC()); - m_ok = (m_hDC != 0); - - old_dc->EndDrawing(); - - SetBrush(*wxWHITE_BRUSH); - SetPen(*wxBLACK_PEN); -} - -wxMemoryDC::~wxMemoryDC(void) -{ -} - -void wxMemoryDC::SelectObject(const wxBitmap& bitmap) -{ - // Select old bitmap out of the device context - if (m_oldBitmap) - { - ::SelectObject((HDC) m_hDC, (HBITMAP) m_oldBitmap); - if (m_selectedBitmap.Ok()) - { - m_selectedBitmap.SetSelectedInto(NULL); - m_selectedBitmap = wxNullBitmap; - } - } - - // Do own check for whether the bitmap is already selected into - // a device context - if (bitmap.GetSelectedInto() && (bitmap.GetSelectedInto() != this)) - { - wxFatalError("Error in wxMemoryDC::SelectObject\nBitmap is selected in another wxMemoryDC.\nDelete the first wxMemoryDC or use SelectObject(NULL)"); - return; - } - - // Check if the bitmap has the correct depth for this device context -// if (bitmap.Ok() && (bitmap.GetDepth() != GetDepth())) - // JACS 11/12/98: disabling this since the Forty Thieves sample - // shows this not working properly. In fact, if loading from a resource, - // the depth should become the screen depth, so why was it being called? - if (0) - { - // Make a new bitmap that has the correct depth. - wxBitmap newBitmap = bitmap.GetBitmapForDC(* this); - - m_selectedBitmap = newBitmap ; - } - else - { - m_selectedBitmap = bitmap; - } - - if (!m_selectedBitmap.Ok()) - return; - - m_selectedBitmap.SetSelectedInto(this); - HBITMAP bm = (HBITMAP) ::SelectObject((HDC) m_hDC, (HBITMAP) m_selectedBitmap.GetHBITMAP()); - - if (bm == ERROR) - { - wxFatalError("Error in wxMemoryDC::SelectObject\nBitmap may not be loaded, or may be selected in another wxMemoryDC.\nDelete the first wxMemoryDC to deselect bitmap."); - } - else if (!m_oldBitmap) - m_oldBitmap = (WXHBITMAP) bm; -} - -void wxMemoryDC::GetSize(int *width, int *height) const -{ - if (!m_selectedBitmap.Ok()) - { - *width = 0; *height = 0; - return; - } - *width = m_selectedBitmap.GetWidth(); - *height = m_selectedBitmap.GetHeight(); -} - diff --git a/src/msw/dcprint.cpp b/src/msw/dcprint.cpp deleted file mode 100644 index 43a6be9b8d..0000000000 --- a/src/msw/dcprint.cpp +++ /dev/null @@ -1,206 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcprint.cpp -// Purpose: wxPrinterDC class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dcprint.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#endif - -#include "wx/dcprint.h" -#include "math.h" - -#include - -#if wxUSE_COMMON_DIALOGS -#include -#endif - -#ifndef __WIN32__ -#include -#endif - -#ifdef DrawText -#undef DrawText -#endif - -#ifdef GetCharWidth -#undef GetCharWidth -#endif - -#ifdef StartDoc -#undef StartDoc -#endif - -#if !USE_SHARED_LIBRARY -IMPLEMENT_CLASS(wxPrinterDC, wxDC) -#endif - -wxPrinterDC::wxPrinterDC(const wxString& driver_name, const wxString& device_name, const wxString& file, bool interactive, int orientation) -{ - m_isInteractive = interactive; - - if (!file.IsNull() && file != "") - m_filename = file; - -#if wxUSE_COMMON_DIALOGS - if (interactive) - { - PRINTDLG pd; - - pd.lStructSize = sizeof( PRINTDLG ); - pd.hwndOwner=(HWND) NULL; - pd.hDevMode=(HANDLE)NULL; - pd.hDevNames=(HANDLE)NULL; - pd.Flags=PD_RETURNDC | PD_NOSELECTION | PD_NOPAGENUMS; - pd.nFromPage=0; - pd.nToPage=0; - pd.nMinPage=0; - pd.nMaxPage=0; - pd.nCopies=1; - pd.hInstance=(HINSTANCE)NULL; - - if ( PrintDlg( &pd ) != 0 ) - { - m_hDC = (WXHDC) pd.hDC; - m_ok = TRUE; - } - else - { - m_ok = FALSE; - return; - } - -// m_dontDelete = TRUE; - } - else -#endif - if ((!driver_name.IsNull() && driver_name != "") && - (!device_name.IsNull() && device_name != "") && - (!file.IsNull() && file != "")) - { - m_hDC = (WXHDC) CreateDC((char *) (const char *) driver_name, (char *) (const char *) device_name, (char *) (const char *) file, NULL); - m_ok = m_hDC ? TRUE: FALSE; - } - else - { - m_hDC = wxGetPrinterDC(orientation); - m_ok = m_hDC ? TRUE: FALSE; - } - - if (m_hDC) - { -// int width = GetDeviceCaps(m_hDC, VERTRES); -// int height = GetDeviceCaps(m_hDC, HORZRES); - SetMapMode(MM_TEXT); - } - SetBrush(*wxBLACK_BRUSH); - SetPen(*wxBLACK_PEN); -} - -wxPrinterDC::wxPrinterDC(WXHDC theDC) -{ - m_isInteractive = FALSE; - - m_hDC = theDC; - m_ok = TRUE; - if (m_hDC) - { -// int width = GetDeviceCaps(m_hDC, VERTRES); -// int height = GetDeviceCaps(m_hDC, HORZRES); - SetMapMode(MM_TEXT); - } - SetBrush(*wxBLACK_BRUSH); - SetPen(*wxBLACK_PEN); -} - -wxPrinterDC::~wxPrinterDC(void) -{ -} - -WXHDC wxGetPrinterDC(int orientation) -{ - HDC hDC; - LPDEVMODE lpDevMode = NULL; - LPDEVNAMES lpDevNames; - LPSTR lpszDriverName; - LPSTR lpszDeviceName; - LPSTR lpszPortName; - - PRINTDLG pd; - // __GNUWIN32__ has trouble believing PRINTDLG is 66 bytes - thinks it is 68 - pd.lStructSize = 66; // sizeof(PRINTDLG); - pd.hwndOwner = (HWND)NULL; - pd.hDevMode = NULL; // Will be created by PrintDlg - pd.hDevNames = NULL; // Ditto - pd.Flags = PD_RETURNDEFAULT; - pd.nCopies = 1; - - if (!PrintDlg((LPPRINTDLG)&pd)) - { - if ( pd.hDevMode ) - GlobalFree(pd.hDevMode); - if (pd.hDevNames) - GlobalFree(pd.hDevNames); - - return(0); - } - - if (!pd.hDevNames) - { - if ( pd.hDevMode ) - GlobalFree(pd.hDevMode); - } - - lpDevNames = (LPDEVNAMES)GlobalLock(pd.hDevNames); - lpszDriverName = (LPSTR)lpDevNames + lpDevNames->wDriverOffset; - lpszDeviceName = (LPSTR)lpDevNames + lpDevNames->wDeviceOffset; - lpszPortName = (LPSTR)lpDevNames + lpDevNames->wOutputOffset; - GlobalUnlock(pd.hDevNames); - - if ( pd.hDevMode ) - { - lpDevMode = (DEVMODE*) GlobalLock(pd.hDevMode); - lpDevMode->dmOrientation = orientation; - lpDevMode->dmFields |= DM_ORIENTATION; - } - -#ifdef __WIN32__ - hDC = CreateDC(lpszDriverName, lpszDeviceName, lpszPortName, (DEVMODE *)lpDevMode); -#else - hDC = CreateDC(lpszDriverName, lpszDeviceName, lpszPortName, (LPSTR)lpDevMode); -#endif - - if (pd.hDevMode && lpDevMode) - GlobalUnlock(pd.hDevMode); - - if (pd.hDevNames) - { - GlobalFree(pd.hDevNames); - pd.hDevNames=NULL; - } - if (pd.hDevMode) - { - GlobalFree(pd.hDevMode); - pd.hDevMode=NULL; - } - return (WXHDC) hDC; -} - - diff --git a/src/msw/dcscreen.cpp b/src/msw/dcscreen.cpp deleted file mode 100644 index 7960fbd3e8..0000000000 --- a/src/msw/dcscreen.cpp +++ /dev/null @@ -1,48 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcscreen.cpp -// Purpose: wxScreenDC class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dcscreen.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#endif - -#include "wx/dcscreen.h" - -#include - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxScreenDC, wxWindowDC) -#endif - -// Create a DC representing the whole screen -wxScreenDC::wxScreenDC(void) -{ - m_hDC = (WXHDC) ::GetDC((HWND) NULL); - m_hDCCount ++; -} - -wxScreenDC::~wxScreenDC(void) -{ - SelectOldObjects(m_hDC); - ::ReleaseDC((HWND) NULL, (HDC) m_hDC); - m_hDC = 0; - m_hDCCount --; -} - diff --git a/src/msw/dde.cpp b/src/msw/dde.cpp deleted file mode 100644 index f2af16d924..0000000000 --- a/src/msw/dde.cpp +++ /dev/null @@ -1,803 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dde.cpp -// Purpose: DDE classes -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dde.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/defs.h" -#endif - -#if wxUSE_IPC - -#ifndef WX_PRECOMP -#include "wx/utils.h" -#include "wx/app.h" -#endif - -#include "wx/module.h" -#include "wx/dde.h" - -#ifndef __TWIN32__ -#ifdef __GNUWIN32__ -#include "wx/msw/gnuwin32/extra.h" -#endif -#endif - -#include "wx/msw/private.h" -#include -#include -#include - -#ifdef __WIN32__ -#define _EXPORT /**/ -#else -#define _EXPORT _export -#endif - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxDDEServer, wxServerBase) -IMPLEMENT_DYNAMIC_CLASS(wxDDEClient, wxClientBase) -IMPLEMENT_CLASS(wxDDEConnection, wxConnectionBase) -#endif - -static wxDDEConnection *DDEFindConnection(HCONV hConv); -static void DDEDeleteConnection(HCONV hConv); -static wxDDEServer *DDEFindServer(const wxString& s); - -extern "C" HDDEDATA EXPENTRY _EXPORT _DDECallback( -WORD wType, -WORD wFmt, -HCONV hConv, -HSZ hsz1, -HSZ hsz2, -HDDEDATA hData, -DWORD lData1, -DWORD lData2); - -// Add topic name to atom table before using in conversations -static HSZ DDEAddAtom(const wxString& string); -static HSZ DDEGetAtom(const wxString& string); -static void DDEPrintError(void); - -static DWORD DDEIdInst = 0L; -static wxDDEConnection *DDECurrentlyConnecting = NULL; - -static wxList wxAtomTable(wxKEY_STRING); -static wxList wxDDEClientObjects; -static wxList wxDDEServerObjects; - -char *DDEDefaultIPCBuffer = NULL; -int DDEDefaultIPCBufferSize = 0; - -/* - * Initialization - * - */ - -static bool DDEInitialized = FALSE; - -void wxDDEInitialize() -{ - if (DDEInitialized) - return; - DDEInitialized = TRUE; - - // Should insert filter flags - DdeInitialize(&DDEIdInst, (PFNCALLBACK)MakeProcInstance( - (FARPROC)_DDECallback, wxGetInstance()), - APPCLASS_STANDARD, - 0L); -} - -/* - * CleanUp - */ - -void wxDDECleanUp() -{ - if (DDEIdInst != 0) - { - DdeUninitialize(DDEIdInst); - DDEIdInst = 0; - } - if (DDEDefaultIPCBuffer) - delete [] DDEDefaultIPCBuffer ; -} - -// A module to allow DDE initialization/cleanup -// without calling these functions from app.cpp or from -// the user's application. - -class wxDDEModule: public wxModule -{ -DECLARE_DYNAMIC_CLASS(wxDDEModule) -public: - wxDDEModule() {} - bool OnInit() { wxDDEInitialize(); return TRUE; }; - void OnExit() { wxDDECleanUp(); }; -}; - -IMPLEMENT_DYNAMIC_CLASS(wxDDEModule, wxModule) - -// Global find connection -static wxDDEConnection *DDEFindConnection(HCONV hConv) -{ - wxNode *node = wxDDEServerObjects.First(); - wxDDEConnection *found = NULL; - while (node && !found) - { - wxDDEServer *object = (wxDDEServer *)node->Data(); - found = object->FindConnection((WXHCONV) hConv); - node = node->Next(); - } - if (found) - return found; - - node = wxDDEClientObjects.First(); - while (node && !found) - { - wxDDEClient *object = (wxDDEClient *)node->Data(); - found = object->FindConnection((WXHCONV) hConv); - node = node->Next(); - } - return found; -} - -// Global delete connection -static void DDEDeleteConnection(HCONV hConv) -{ - wxNode *node = wxDDEServerObjects.First(); - bool found = FALSE; - while (node && !found) - { - wxDDEServer *object = (wxDDEServer *)node->Data(); - found = object->DeleteConnection((WXHCONV) hConv); - node = node->Next(); - } - if (found) - return; - - node = wxDDEServerObjects.First(); - while (node && !found) - { - wxDDEClient *object = (wxDDEClient *)node->Data(); - found = object->DeleteConnection((WXHCONV) hConv); - node = node->Next(); - } -} - -// Find a server from a service name -static wxDDEServer *DDEFindServer(const wxString& s) -{ - wxNode *node = wxDDEServerObjects.First(); - wxDDEServer *found = NULL; - while (node && !found) - { - wxDDEServer *object = (wxDDEServer *)node->Data(); - - if (object->GetServiceName() == s) - found = object; - else node = node->Next(); - } - return found; -} - -/* - * Server - * - */ - -wxDDEServer::wxDDEServer(void) -{ - m_serviceName = ""; - wxDDEServerObjects.Append(this); -} - -bool wxDDEServer::Create(const wxString& server_name) -{ - m_serviceName = server_name; - HSZ serviceName = DdeCreateStringHandle(DDEIdInst, (char*) (const char *)server_name, CP_WINANSI); - - if (DdeNameService(DDEIdInst, serviceName, (HSZ) NULL, DNS_REGISTER) == 0) - { - DDEPrintError(); - return FALSE; - } - return TRUE; -} - -wxDDEServer::~wxDDEServer(void) -{ - if (m_serviceName != "") - { - HSZ serviceName = DdeCreateStringHandle(DDEIdInst, (char*) (const char *)m_serviceName, CP_WINANSI); - if (DdeNameService(DDEIdInst, serviceName, NULL, DNS_UNREGISTER) == 0) - { - DDEPrintError(); - } - } - wxDDEServerObjects.DeleteObject(this); - - wxNode *node = m_connections.First(); - while (node) - { - wxDDEConnection *connection = (wxDDEConnection *)node->Data(); - wxNode *next = node->Next(); - connection->OnDisconnect(); // May delete the node implicitly - node = next; - } - - // If any left after this, delete them - node = m_connections.First(); - while (node) - { - wxDDEConnection *connection = (wxDDEConnection *)node->Data(); - wxNode *next = node->Next(); - delete connection; - node = next; - } -} - -wxConnectionBase *wxDDEServer::OnAcceptConnection(const wxString& /* topic */) -{ - return new wxDDEConnection; -} - -wxDDEConnection *wxDDEServer::FindConnection(WXHCONV conv) -{ - wxNode *node = m_connections.First(); - wxDDEConnection *found = NULL; - while (node && !found) - { - wxDDEConnection *connection = (wxDDEConnection *)node->Data(); - if (connection->m_hConv == conv) - found = connection; - else node = node->Next(); - } - return found; -} - -// Only delete the entry in the map, not the actual connection -bool wxDDEServer::DeleteConnection(WXHCONV conv) -{ - wxNode *node = m_connections.First(); - bool found = FALSE; - while (node && !found) - { - wxDDEConnection *connection = (wxDDEConnection *)node->Data(); - if (connection->m_hConv == conv) - { - found = TRUE; - delete node; - } - else node = node->Next(); - } - return found; -} - - -/* - * Client - * - */ - - -wxDDEClient::wxDDEClient(void) -{ - wxDDEClientObjects.Append(this); -} - -wxDDEClient::~wxDDEClient(void) -{ - wxDDEClientObjects.DeleteObject(this); - wxNode *node = m_connections.First(); - while (node) - { - wxDDEConnection *connection = (wxDDEConnection *)node->Data(); - delete connection; // Deletes the node implicitly (see ~wxDDEConnection) - node = m_connections.First(); - } -} - -bool wxDDEClient::ValidHost(const wxString& /* host */) -{ - return TRUE; -} - -wxConnectionBase *wxDDEClient::MakeConnection(const wxString& /* host */, const wxString& server_name, const wxString& topic) -{ - HSZ serviceName = DdeCreateStringHandle(DDEIdInst, (char*) (const char *)server_name, CP_WINANSI); - HSZ topic_atom = DdeCreateStringHandle(DDEIdInst, (char*) (const char *)topic, CP_WINANSI); - - HCONV hConv = DdeConnect(DDEIdInst, serviceName, topic_atom, (PCONVCONTEXT)NULL); - if (hConv == (HCONV) NULL) - return (wxConnectionBase*) NULL; - else - { - wxDDEConnection *connection = (wxDDEConnection*) OnMakeConnection(); - if (connection) - { - connection->m_hConv = (WXHCONV) hConv; - connection->m_topicName = topic; - connection->m_client = this; - m_connections.Append(connection); - return connection; - } - else return (wxConnectionBase*) NULL; - } -} - -wxConnectionBase *wxDDEClient::OnMakeConnection(void) -{ - return new wxDDEConnection; -} - -wxDDEConnection *wxDDEClient::FindConnection(WXHCONV conv) -{ - wxNode *node = m_connections.First(); - wxDDEConnection *found = NULL; - while (node && !found) - { - wxDDEConnection *connection = (wxDDEConnection *)node->Data(); - if (connection->m_hConv == conv) - found = connection; - else node = node->Next(); - } - return found; -} - -// Only delete the entry in the map, not the actual connection -bool wxDDEClient::DeleteConnection(WXHCONV conv) -{ - wxNode *node = m_connections.First(); - bool found = FALSE; - while (node && !found) - { - wxDDEConnection *connection = (wxDDEConnection *)node->Data(); - if (connection->m_hConv == conv) - { - found = TRUE; - delete node; - } - else node = node->Next(); - } - return found; -} - -/* - * Connection - */ - -wxDDEConnection::wxDDEConnection(char *buffer, int size) -{ - if (buffer == NULL) - { - if (DDEDefaultIPCBuffer == NULL) - DDEDefaultIPCBuffer = new char[DDEDefaultIPCBufferSize]; - m_bufPtr = DDEDefaultIPCBuffer; - m_bufSize = DDEDefaultIPCBufferSize; - } - else - { - m_bufPtr = buffer; - m_bufSize = size; - } - - m_topicName = ""; - - m_client = NULL; - m_server = NULL; - - m_hConv = 0; - m_sendingData = NULL; -} - -wxDDEConnection::wxDDEConnection(void) -{ - m_hConv = 0; - m_sendingData = NULL; - m_server = NULL; - m_client = NULL; - if (DDEDefaultIPCBuffer == NULL) - DDEDefaultIPCBuffer = new char[DDEDefaultIPCBufferSize]; - - m_bufPtr = DDEDefaultIPCBuffer; - m_bufSize = DDEDefaultIPCBufferSize; - m_topicName = ""; -} - -wxDDEConnection::~wxDDEConnection(void) -{ - if (m_server) - m_server->GetConnections().DeleteObject(this); - else - m_client->GetConnections().DeleteObject(this); -} - -// Calls that CLIENT can make -bool wxDDEConnection::Disconnect(void) -{ - DDEDeleteConnection((HCONV) m_hConv); - return (DdeDisconnect((HCONV) m_hConv) != 0); -} - -bool wxDDEConnection::Execute(char *data, int size, wxIPCFormat format) -{ - DWORD result; - if (size < 0) - size = strlen(data); - - size ++; - - return (DdeClientTransaction((LPBYTE)data, size, (HCONV) m_hConv, - NULL, format, XTYP_EXECUTE, 5000, &result) ? TRUE : FALSE); -} - -char *wxDDEConnection::Request(const wxString& item, int *size, wxIPCFormat format) -{ - DWORD result; - HSZ atom = DDEGetAtom(item); - - HDDEDATA returned_data = DdeClientTransaction(NULL, 0, (HCONV) m_hConv, - atom, format, XTYP_REQUEST, 5000, &result); - - DWORD len = DdeGetData(returned_data, (LPBYTE)(m_bufPtr), m_bufSize, 0); - - DdeFreeDataHandle(returned_data); - - if (size) *size = (int)len; - if (len > 0) - { - return m_bufPtr; - } - else return NULL; -} - -bool wxDDEConnection::Poke(const wxString& item, char *data, int size, wxIPCFormat format) -{ - DWORD result; - if (size < 0) - size = strlen(data); - - size ++; - - HSZ item_atom = DDEGetAtom(item); - return (DdeClientTransaction((LPBYTE)data, size, (HCONV) m_hConv, - item_atom, format, XTYP_POKE, 5000, &result) ? TRUE : FALSE); -} - -bool wxDDEConnection::StartAdvise(const wxString& item) -{ - DWORD result; - HSZ atom = DDEGetAtom(item); - - return (DdeClientTransaction(NULL, 0, (HCONV) m_hConv, - atom, CF_TEXT, XTYP_ADVSTART, 5000, &result) ? TRUE : FALSE); -} - -bool wxDDEConnection::StopAdvise(const wxString& item) -{ - DWORD result; - HSZ atom = DDEGetAtom(item); - - return (DdeClientTransaction(NULL, 0, (HCONV) m_hConv, - atom, CF_TEXT, XTYP_ADVSTOP, 5000, &result) ? TRUE : FALSE); -} - -// Calls that SERVER can make -bool wxDDEConnection::Advise(const wxString& item, char *data, int size, wxIPCFormat format) -{ - if (size < 0) - size = strlen(data); - - size ++; - - HSZ item_atom = DDEGetAtom(item); - HSZ topic_atom = DDEGetAtom(m_topicName); - m_sendingData = data; - m_dataSize = size; - m_dataType = format; - return (DdePostAdvise(DDEIdInst, topic_atom, item_atom) != 0); -} - -bool wxDDEConnection::OnDisconnect(void) -{ - delete this; - return TRUE; -} - - -#define DDERETURN HDDEDATA - -HDDEDATA EXPENTRY _EXPORT _DDECallback( -WORD wType, -WORD wFmt, -HCONV hConv, -HSZ hsz1, -HSZ hsz2, -HDDEDATA hData, -DWORD /* lData1 */, -DWORD /* lData2 */) -{ - switch (wType) - { - case XTYP_CONNECT: - { - char topic_buf[100]; - char server_buf[100]; - DdeQueryString(DDEIdInst, hsz1, (LPSTR)topic_buf, sizeof(topic_buf), - CP_WINANSI); - DdeQueryString(DDEIdInst, hsz2, (LPSTR)server_buf, sizeof(topic_buf), - CP_WINANSI); - wxDDEServer *server = DDEFindServer(server_buf); - if (server) - { - wxDDEConnection *connection = - (wxDDEConnection*) server->OnAcceptConnection(wxString(topic_buf)); - if (connection) - { - connection->m_server = server; - server->GetConnections().Append(connection); - connection->m_hConv = 0; - connection->m_topicName = topic_buf; - DDECurrentlyConnecting = connection; - return (DDERETURN)TRUE; - } - } - else return (DDERETURN)0; - break; - } - - case XTYP_CONNECT_CONFIRM: - { - if (DDECurrentlyConnecting) - { - DDECurrentlyConnecting->m_hConv = (WXHCONV) hConv; - DDECurrentlyConnecting = NULL; - return (DDERETURN)TRUE; - } - else return 0; - break; - } - - case XTYP_DISCONNECT: - { - wxDDEConnection *connection = DDEFindConnection(hConv); - if (connection && connection->OnDisconnect()) - { - DDEDeleteConnection(hConv); // Delete mapping: hConv => connection - return (DDERETURN)TRUE; - } - else return (DDERETURN)0; - break; - } - - case XTYP_EXECUTE: - { - wxDDEConnection *connection = DDEFindConnection(hConv); - - if (connection) - { - DWORD len = DdeGetData(hData, (LPBYTE)(connection->m_bufPtr), connection->m_bufSize, 0); - DdeFreeDataHandle(hData); - if (connection->OnExecute(connection->m_topicName, connection->m_bufPtr, (int)len, (wxIPCFormat) wFmt)) - return (DDERETURN)DDE_FACK; - else - return (DDERETURN)DDE_FNOTPROCESSED; - } else return (DDERETURN)DDE_FNOTPROCESSED; - break; - } - - case XTYP_REQUEST: - { - wxDDEConnection *connection = DDEFindConnection(hConv); - - if (connection) - { - char item_name[200]; - DdeQueryString(DDEIdInst, hsz2, (LPSTR)item_name, sizeof(item_name), - CP_WINANSI); - - int user_size = -1; - char *data = connection->OnRequest(connection->m_topicName, wxString(item_name), &user_size, (wxIPCFormat) wFmt); - if (data) - { - if (user_size < 0) user_size = strlen(data); - - HDDEDATA handle = DdeCreateDataHandle(DDEIdInst, - (LPBYTE)data, user_size + 1, 0, hsz2, wFmt, 0); - return (DDERETURN)handle; - } else return (DDERETURN)0; - } else return (DDERETURN)0; - break; - } - - case XTYP_POKE: - { - wxDDEConnection *connection = DDEFindConnection(hConv); - - if (connection) - { - char item_name[200]; - DdeQueryString(DDEIdInst, hsz2, (LPSTR)item_name, sizeof(item_name), - CP_WINANSI); - DWORD len = DdeGetData(hData, (LPBYTE)(connection->m_bufPtr), connection->m_bufSize, 0); - DdeFreeDataHandle(hData); - connection->OnPoke(connection->m_topicName, wxString(item_name), connection->m_bufPtr, (int)len, (wxIPCFormat) wFmt); - return (DDERETURN)DDE_FACK; - } else return (DDERETURN)DDE_FNOTPROCESSED; - break; - } - - case XTYP_ADVSTART: - { - wxDDEConnection *connection = DDEFindConnection(hConv); - - if (connection) - { - char item_name[200]; - DdeQueryString(DDEIdInst, hsz2, (LPSTR)item_name, sizeof(item_name), - CP_WINANSI); - - return (DDERETURN)connection->OnStartAdvise(connection->m_topicName, wxString(item_name)); - } else return (DDERETURN)0; - break; - } - - case XTYP_ADVSTOP: - { - wxDDEConnection *connection = DDEFindConnection(hConv); - - if (connection) - { - char item_name[200]; - DdeQueryString(DDEIdInst, hsz2, (LPSTR)item_name, sizeof(item_name), - CP_WINANSI); - return (DDERETURN)connection->OnStopAdvise(connection->m_topicName, wxString(item_name)); - } else return (DDERETURN)0; - break; - } - - case XTYP_ADVREQ: - { - wxDDEConnection *connection = DDEFindConnection(hConv); - - if (connection && connection->m_sendingData) - { - HDDEDATA data = DdeCreateDataHandle(DDEIdInst, - (LPBYTE)connection->m_sendingData, - connection->m_dataSize, 0, hsz2, connection->m_dataType, 0); - connection->m_sendingData = NULL; - return (DDERETURN)data; - } else return (DDERETURN)NULL; - break; - } - - case XTYP_ADVDATA: - { - wxDDEConnection *connection = DDEFindConnection(hConv); - - if (connection) - { - char item_name[200]; - DdeQueryString(DDEIdInst, hsz2, (LPSTR)item_name, sizeof(item_name), - CP_WINANSI); - - DWORD len = DdeGetData(hData, (LPBYTE)(connection->m_bufPtr), connection->m_bufSize, 0); - DdeFreeDataHandle(hData); - if (connection->OnAdvise(connection->m_topicName, wxString(item_name), connection->m_bufPtr, (int)len, (wxIPCFormat) wFmt)) - return (DDERETURN)DDE_FACK; - else - return (DDERETURN)DDE_FNOTPROCESSED; - } else return (DDERETURN)DDE_FNOTPROCESSED; - break; - } - } - return 0; -} - -// Atom table stuff -static HSZ DDEAddAtom(const wxString& string) -{ - HSZ atom = DdeCreateStringHandle(DDEIdInst, (char*) (const char *)string, CP_WINANSI); - wxAtomTable.Append(string, (wxObject *)atom); - return atom; -} - -static HSZ DDEGetAtom(const wxString& string) -{ - wxNode *node = wxAtomTable.Find(string); - if (node) - return (HSZ)node->Data(); - else - { - DDEAddAtom(string); - return (HSZ)(wxAtomTable.Find(string)->Data()); - } -} - -void DDEPrintError(void) -{ - char *err = NULL; - switch (DdeGetLastError(DDEIdInst)) - { - case DMLERR_ADVACKTIMEOUT: - err = "A request for a synchronous advise transaction has timed out."; - break; - case DMLERR_BUSY: - err = "The response to the transaction caused the DDE_FBUSY bit to be set."; - break; - case DMLERR_DATAACKTIMEOUT: - err = "A request for a synchronous data transaction has timed out."; - break; - case DMLERR_DLL_NOT_INITIALIZED: - err = "A DDEML function was called without first calling the DdeInitialize function,\n\ror an invalid instance identifier\n\rwas passed to a DDEML function."; - break; - case DMLERR_DLL_USAGE: - err = "An application initialized as APPCLASS_MONITOR has\n\rattempted to perform a DDE transaction,\n\ror an application initialized as APPCMD_CLIENTONLY has \n\rattempted to perform server transactions."; - break; - case DMLERR_EXECACKTIMEOUT: - err = "A request for a synchronous execute transaction has timed out."; - break; - case DMLERR_INVALIDPARAMETER: - err = "A parameter failed to be validated by the DDEML."; - break; - case DMLERR_LOW_MEMORY: - err = "A DDEML application has created a prolonged race condition."; - break; - case DMLERR_MEMORY_ERROR: - err = "A memory allocation failed."; - break; - case DMLERR_NO_CONV_ESTABLISHED: - err = "A client's attempt to establish a conversation has failed."; - break; - case DMLERR_NOTPROCESSED: - err = "A transaction failed."; - break; - case DMLERR_POKEACKTIMEOUT: - err = "A request for a synchronous poke transaction has timed out."; - break; - case DMLERR_POSTMSG_FAILED: - err = "An internal call to the PostMessage function has failed. "; - break; - case DMLERR_REENTRANCY: - err = "Reentrancy problem."; - break; - case DMLERR_SERVER_DIED: - err = "A server-side transaction was attempted on a conversation\n\rthat was terminated by the client, or the server\n\rterminated before completing a transaction."; - break; - case DMLERR_SYS_ERROR: - err = "An internal error has occurred in the DDEML."; - break; - case DMLERR_UNADVACKTIMEOUT: - err = "A request to end an advise transaction has timed out."; - break; - case DMLERR_UNFOUND_QUEUE_ID: - err = "An invalid transaction identifier was passed to a DDEML function.\n\rOnce the application has returned from an XTYP_XACT_COMPLETE callback,\n\rthe transaction identifier for that callback is no longer valid."; - break; - default: - err = "Unrecognised error type."; - break; - } - MessageBox((HWND) NULL, (LPCSTR)err, "DDE Error", MB_OK | MB_ICONINFORMATION); -} - -#endif - // wxUSE_IPC diff --git a/src/msw/dialog.cpp b/src/msw/dialog.cpp deleted file mode 100644 index d5f08d2412..0000000000 --- a/src/msw/dialog.cpp +++ /dev/null @@ -1,622 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dialog.cpp -// Purpose: wxDialog class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dialog.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/dialog.h" -#include "wx/utils.h" -#include "wx/frame.h" -#include "wx/app.h" -#include "wx/settings.h" -#endif - -#include "wx/msw/private.h" - -#if wxUSE_COMMON_DIALOGS -#include -#endif - -#define wxDIALOG_DEFAULT_X 300 -#define wxDIALOG_DEFAULT_Y 300 - -// Lists to keep track of windows, so we can disable/enable them -// for modal dialogs -wxList wxModalDialogs; -wxList wxModelessWindows; // Frames and modeless dialogs -extern wxList WXDLLEXPORT wxPendingDelete; - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxDialog, wxPanel) - -BEGIN_EVENT_TABLE(wxDialog, wxPanel) - EVT_SIZE(wxDialog::OnSize) - EVT_BUTTON(wxID_OK, wxDialog::OnOK) - EVT_BUTTON(wxID_APPLY, wxDialog::OnApply) - EVT_BUTTON(wxID_CANCEL, wxDialog::OnCancel) - EVT_CHAR_HOOK(wxDialog::OnCharHook) - EVT_SYS_COLOUR_CHANGED(wxDialog::OnSysColourChanged) - EVT_CLOSE(wxDialog::OnCloseWindow) -END_EVENT_TABLE() - -#endif - -long wxDialog::MSWDefWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) -{ - return ::CallWindowProc(CASTWNDPROC m_oldWndProc, (HWND) GetHWND(), (UINT) nMsg, (WPARAM) wParam, (LPARAM) lParam); -} - -bool wxDialog::MSWProcessMessage(WXMSG* pMsg) -{ - return (::IsDialogMessage((HWND) GetHWND(), (MSG*)pMsg) != 0); -} - -bool wxDialog::MSWOnClose(void) -{ - return Close(); -} - -wxDialog::wxDialog(void) -{ - m_isShown = FALSE; - m_modalShowing = FALSE; - - SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE)); -} - -bool wxDialog::Create(wxWindow *parent, wxWindowID id, - const wxString& title, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE)); - SetName(name); - - if (!parent) - wxTopLevelWindows.Append(this); - -// windowFont = wxTheFontList->FindOrCreateFont(11, wxSWISS, wxNORMAL, wxNORMAL); - - if (parent) parent->AddChild(this); - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - int x = pos.x; - int y = pos.y; - int width = size.x; - int height = size.y; - - if (x < 0) x = wxDIALOG_DEFAULT_X; - if (y < 0) y = wxDIALOG_DEFAULT_Y; - - m_windowStyle = style; - - m_isShown = FALSE; - m_modalShowing = FALSE; - - if (width < 0) - width = 500; - if (height < 0) - height = 500; - - WXDWORD extendedStyle = MakeExtendedStyle(m_windowStyle); - if (m_windowStyle & wxSTAY_ON_TOP) - extendedStyle |= WS_EX_TOPMOST; - - // Allows creation of dialogs with & without captions under MSWindows - if(style & wxCAPTION){ - MSWCreate(m_windowId, (wxWindow *)parent, NULL, this, NULL, x, y, width, height, 0, "wxCaptionDialog", - extendedStyle); - } - else{ - MSWCreate(m_windowId, (wxWindow *)parent, NULL, this, NULL, x, y, width, height, 0, "wxNoCaptionDialog", - extendedStyle); - } - - SubclassWin(GetHWND()); - - SetWindowText((HWND) GetHWND(), (const char *)title); - SetFont(wxSystemSettings::GetSystemFont(wxSYS_DEFAULT_GUI_FONT)); - - return TRUE; -} - -void wxDialog::SetModal(bool flag) -{ - if ( flag ) - m_windowStyle |= wxDIALOG_MODAL ; - else - if ( m_windowStyle & wxDIALOG_MODAL ) - m_windowStyle -= wxDIALOG_MODAL ; - - wxModelessWindows.DeleteObject(this); - if (!flag) - wxModelessWindows.Append(this); -} - -wxDialog::~wxDialog() -{ - m_isBeingDeleted = TRUE; - - wxTopLevelWindows.DeleteObject(this); - - if (m_modalShowing) - { - Show(FALSE); - // For some reason, wxWindows can activate another task altogether - // when a frame is destroyed after a modal dialog has been invoked. - // Try to bring the parent to the top. - // dfgg: I moved this following line from end of function - - // must not call if another window is on top!! - // This can often happen with Close() and delayed deleting - if (GetParent() && GetParent()->GetHWND()) - ::BringWindowToTop((HWND) GetParent()->GetHWND()); - } - - m_modalShowing = FALSE; - if ( GetHWND() ) - ShowWindow((HWND) GetHWND(), SW_HIDE); - - if ( (GetWindowStyleFlag() & wxDIALOG_MODAL) != wxDIALOG_MODAL ) - wxModelessWindows.DeleteObject(this); - - UnsubclassWin(); - - // If this is the last top-level window, exit. - if (wxTheApp && (wxTopLevelWindows.Number() == 0)) - { - wxTheApp->SetTopWindow(NULL); - - if (wxTheApp->GetExitOnFrameDelete()) - { - PostQuitMessage(0); - } - } -} - -// By default, pressing escape cancels the dialog -void wxDialog::OnCharHook(wxKeyEvent& event) -{ - if (GetHWND()) - { - if (event.m_keyCode == WXK_ESCAPE) - { - // Behaviour changed in 2.0: we'll send a Cancel message - // to the dialog instead of Close. - wxCommandEvent cancelEvent(wxEVT_COMMAND_BUTTON_CLICKED, wxID_CANCEL); - cancelEvent.SetEventObject( this ); - GetEventHandler()->ProcessEvent(cancelEvent); - - return; - } - } - // We didn't process this event. - event.Skip(); -} - -void wxDialog::OnPaint(wxPaintEvent& event) -{ - // No: if you call the default procedure, it makes - // the following painting code not work. -// wxWindow::OnPaint(event); -} - -void wxDialog::Fit(void) -{ - wxWindow::Fit(); -} - -void wxDialog::Iconize(bool WXUNUSED(iconize)) -{ - // Windows dialog boxes can't be iconized -} - -bool wxDialog::IsIconized(void) const -{ - return FALSE; -} - -void wxDialog::SetClientSize(int width, int height) -{ - HWND hWnd = (HWND) GetHWND(); - RECT rect; - GetClientRect(hWnd, &rect); - - RECT rect2; - GetWindowRect(hWnd, &rect2); - - // Find the difference between the entire window (title bar and all) - // and the client area; add this to the new client size to move the - // window - int actual_width = rect2.right - rect2.left - rect.right + width; - int actual_height = rect2.bottom - rect2.top - rect.bottom + height; - - MoveWindow(hWnd, rect2.left, rect2.top, actual_width, actual_height, TRUE); - - wxSizeEvent event(wxSize(actual_width, actual_height), m_windowId); - event.SetEventObject( this ); - GetEventHandler()->ProcessEvent(event); -} - -void wxDialog::GetPosition(int *x, int *y) const -{ - HWND hWnd = (HWND) GetHWND(); - RECT rect; - GetWindowRect(hWnd, &rect); - - *x = rect.left; - *y = rect.top; -} - -bool wxDialog::IsShown(void) const -{ - return m_isShown; -} - -bool wxDialog::Show(bool show) -{ - m_isShown = show; - - if (show) - InitDialog(); - - bool modal = ((GetWindowStyleFlag() & wxDIALOG_MODAL) == wxDIALOG_MODAL) ; - -#if WXGARBAGE_COLLECTION_ON /* MATTHEW: GC */ - if (!modal) { - if (show) { - if (!wxModelessWindows.Member(this)) - wxModelessWindows.Append(this); - } else - wxModelessWindows.DeleteObject(this); - } - if (show) { - if (!wxTopLevelWindows.Member(this)) - wxTopLevelWindows.Append(this); - } else - wxTopLevelWindows.DeleteObject(this); -#endif - - if (modal) - { - if (show) - { - m_hwndOldFocus = (WXHWND)::GetFocus(); - - if (m_modalShowing) - { - BringWindowToTop((HWND) GetHWND()); - return TRUE; - } - - m_modalShowing = TRUE; - wxNode *node = wxModalDialogs.First(); - while (node) - { - wxDialog *box = (wxDialog *)node->Data(); - if (box != this) - ::EnableWindow((HWND) box->GetHWND(), FALSE); - node = node->Next(); - } - - // if we don't do it, some window might be deleted while we have pointers - // to them in our disabledWindows list and the program will crash when it - // will try to reenable them after the modal dialog end - wxTheApp->DeletePendingObjects(); - wxList disabledWindows; - - node = wxModelessWindows.First(); - while (node) - { - wxWindow *win = (wxWindow *)node->Data(); - if (::IsWindowEnabled((HWND) win->GetHWND())) - { - ::EnableWindow((HWND) win->GetHWND(), FALSE); - disabledWindows.Append(win); - } - node = node->Next(); - } - - ShowWindow((HWND) GetHWND(), SW_SHOW); - EnableWindow((HWND) GetHWND(), TRUE); - BringWindowToTop((HWND) GetHWND()); - - if (!wxModalDialogs.Member(this)) - wxModalDialogs.Append(this); - - MSG msg; - // Must test whether this dialog still exists: we may not process - // a message before the deletion. - while (wxModalDialogs.Member(this) && m_modalShowing && GetMessage(&msg, NULL, 0, 0)) - { - if (m_acceleratorTable.Ok() && - ::TranslateAccelerator((HWND) GetHWND(), (HACCEL) m_acceleratorTable.GetHACCEL(), &msg)) - { - // Have processed the message - } - else if (!IsDialogMessage((HWND) GetHWND(), &msg)) - { - TranslateMessage(&msg); - DispatchMessage(&msg); - } - - // If we get crashes (as per George Tasker's message) with nested modal dialogs, - // we should try removing the m_modalShowing test - - if (m_modalShowing && !::PeekMessage(&msg, 0, 0, 0, PM_NOREMOVE)) - // dfgg: NB MUST test m_modalShowing again as the message loop could have triggered - // a Show(FALSE) in the mean time!!! - // Without the test, we might delete the dialog before the end of modal showing. - { - while (wxTheApp->ProcessIdle() && m_modalShowing) - { - // Keep going until we decide we've done enough - } - } - } - // dfgg: now must specifically re-enable all other app windows that we disabled earlier - node=disabledWindows.First(); - while(node) { - wxWindow* win = (wxWindow*) node->Data(); - if (wxModalDialogs.Member(win) || wxModelessWindows.Member(win)) - { - HWND hWnd = (HWND) win->GetHWND(); - if (::IsWindow(hWnd)) - ::EnableWindow(hWnd,TRUE); - } - node=node->Next(); - } - } - else // !show - { - ::SetFocus((HWND)m_hwndOldFocus); - - wxModalDialogs.DeleteObject(this); - - wxNode *last = wxModalDialogs.Last(); - - // If there's still a modal dialog active, we - // enable it, else we enable all modeless windows - if (last) - { - wxDialog *box = (wxDialog *)last->Data(); - HWND hwnd = (HWND) box->GetHWND(); - if (box->m_winEnabled) - EnableWindow(hwnd, TRUE); - BringWindowToTop(hwnd); - } - else - { - wxNode *node = wxModelessWindows.First(); - while (node) - { - wxWindow *win = (wxWindow *)node->Data(); - HWND hwnd = (HWND) win->GetHWND(); - // Only enable again if not user-disabled. - if (win->IsUserEnabled()) - EnableWindow(hwnd, TRUE); - node = node->Next(); - } - } - // Try to highlight the correct window (the parent) - HWND hWndParent = 0; - if (GetParent()) - { - hWndParent = (HWND) GetParent()->GetHWND(); - if (hWndParent) - ::BringWindowToTop(hWndParent); - } - ShowWindow((HWND) GetHWND(), SW_HIDE); - m_modalShowing = FALSE; - } - } - else // !modal - { - if (show) - { - ShowWindow((HWND) GetHWND(), SW_SHOW); - BringWindowToTop((HWND) GetHWND()); - } - else - { - // Try to highlight the correct window (the parent) - HWND hWndParent = 0; - if (GetParent()) - { - hWndParent = (HWND) GetParent()->GetHWND(); - if (hWndParent) - ::BringWindowToTop(hWndParent); - } - ShowWindow((HWND) GetHWND(), SW_HIDE); - } - } - return TRUE; -} - -void wxDialog::SetTitle(const wxString& title) -{ - SetWindowText((HWND) GetHWND(), (const char *)title); -} - -wxString wxDialog::GetTitle(void) const -{ - GetWindowText((HWND) GetHWND(), wxBuffer, 1000); - return wxString(wxBuffer); -} - -void wxDialog::Centre(int direction) -{ - int x_offset,y_offset ; - int display_width, display_height; - int width, height, x, y; - wxWindow *parent = GetParent(); - if ((direction & wxCENTER_FRAME) && parent) - { - parent->GetPosition(&x_offset,&y_offset) ; - parent->GetSize(&display_width,&display_height) ; - } - else - { - wxDisplaySize(&display_width, &display_height); - x_offset = 0 ; - y_offset = 0 ; - } - - GetSize(&width, &height); - GetPosition(&x, &y); - - if (direction & wxHORIZONTAL) - x = (int)((display_width - width)/2); - if (direction & wxVERTICAL) - y = (int)((display_height - height)/2); - - SetSize(x+x_offset, y+y_offset, width, height); -} - -// Replacement for Show(TRUE) for modal dialogs - returns return code -int wxDialog::ShowModal(void) -{ - m_windowStyle |= wxDIALOG_MODAL; - Show(TRUE); - return GetReturnCode(); -} - -void wxDialog::EndModal(int retCode) -{ - SetReturnCode(retCode); - Show(FALSE); -} - -// Define for each class of dialog and control -WXHBRUSH wxDialog::OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor, - WXUINT message, WXWPARAM wParam, WXLPARAM lParam) -{ -#if CTL3D - HBRUSH hbrush = Ctl3dCtlColorEx(message, wParam, lParam); - return (WXHBRUSH) hbrush; -#else - return 0; -#endif -} - -// Standard buttons -void wxDialog::OnOK(wxCommandEvent& event) -{ - if ( Validate() && TransferDataFromWindow() ) - { - if ( IsModal() ) - EndModal(wxID_OK); - else - { - SetReturnCode(wxID_OK); - this->Show(FALSE); - } - } -} - -void wxDialog::OnApply(wxCommandEvent& event) -{ - if (Validate()) - TransferDataFromWindow(); - // TODO probably need to disable the Apply button until things change again -} - -void wxDialog::OnCancel(wxCommandEvent& event) -{ - if ( IsModal() ) - EndModal(wxID_CANCEL); - else - { - SetReturnCode(wxID_CANCEL); - this->Show(FALSE); - } -} - -bool wxDialog::OnClose(void) -{ - // Behaviour changed in 2.0: we'll send a Cancel message by default, - // which may close the dialog. - // Check for looping if the Cancel event handler calls Close() - - static wxList closing; - - if ( closing.Member(this) ) - return FALSE; - - closing.Append(this); - - wxCommandEvent cancelEvent(wxEVT_COMMAND_BUTTON_CLICKED, wxID_CANCEL); - cancelEvent.SetEventObject( this ); - GetEventHandler()->ProcessEvent(cancelEvent); - - closing.DeleteObject(this); - - return FALSE; -} - -void wxDialog::OnSize(wxSizeEvent& WXUNUSED(event)) -{ - // if we're using constraints - do use them - #if wxUSE_CONSTRAINTS - if ( GetAutoLayout() ) { - Layout(); - } - #endif -} - -void wxDialog::OnCloseWindow(wxCloseEvent& event) -{ - // Compatibility - if ( GetEventHandler()->OnClose() || event.GetForce()) - { - this->Destroy(); - } - else - event.Veto(TRUE); -} - -// Destroy the window (delayed, if a managed window) -bool wxDialog::Destroy(void) -{ - if (!wxPendingDelete.Member(this)) - wxPendingDelete.Append(this); - return TRUE; -} - -void wxDialog::OnSysColourChanged(wxSysColourChangedEvent& event) -{ -#if CTL3D - Ctl3dColorChange(); -#else - SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE)); - Refresh(); -#endif -} - -long wxDialog::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam) -{ - return wxWindow::MSWWindowProc(message, wParam, lParam); -} - diff --git a/src/msw/dib.cpp b/src/msw/dib.cpp deleted file mode 100644 index bd573f2791..0000000000 --- a/src/msw/dib.cpp +++ /dev/null @@ -1,941 +0,0 @@ -/******************************************************************************* - * * - * MODULE : DIB.CC * - * * - * DESCRIPTION : Routines for dealing with Device Independent Bitmaps. * - * * - * FUNCTIONS : * - * * - * ReadDIB() - Reads a DIB * - * * - * WriteDIB() - Writes a global handle in CF_DIB format* - * to a file. * - * * - * PaletteSize() - Calculates the palette size in bytes * - * of given DIB * - * * - * DibNumColors() - Determines the number of colors in DIB * - * * - * DibFromBitmap() - Creates a DIB repr. the DDB passed in. * - * * - * * - * lread() - Private routine to read more than 64k * - * * - * lwrite() - Private routine to write more than 64k * - * * - *******************************************************************************/ - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#if defined(__BORLANDC__) -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/setup.h" -#include "wx/defs.h" -#include "wx/bitmap.h" -#endif - -#include -#include -#include - -#if !defined(__MWERKS__) && !defined(__SALFORDC__) -#include -#endif - -#include "wx/msw/dib.h" - -#ifndef __TWIN32__ -#ifdef __GNUWIN32__ -#include "wx/msw/gnuwin32/extra.h" -#endif -#endif - -#ifndef SEEK_CUR -/* flags for _lseek */ -#define SEEK_CUR 1 -#define SEEK_END 2 -#define SEEK_SET 0 -#endif - -#define MAXREAD 32768 /* Number of bytes to be read during */ - /* each read operation. */ - -/* Header signatutes for various resources */ -#define BFT_ICON 0x4349 /* 'IC' */ -#define BFT_BITMAP 0x4d42 /* 'BM' */ -#define BFT_CURSOR 0x5450 /* 'PT' */ - -/* macro to determine if resource is a DIB */ -#define ISDIB(bft) ((bft) == BFT_BITMAP) - -/* Macro to align given value to the closest DWORD (unsigned long ) */ -#define ALIGNULONG(i) ((i+3)/4*4) - -/* Macro to determine to round off the given value to the closest byte */ -#define WIDTHBYTES(i) ((i+31)/32*4) - -#define PALVERSION 0x300 -#define MAXPALETTE 256 /* max. # supported palette entries */ - -DWORD PASCAL lread(int fh, VOID FAR *pv, DWORD ul); -DWORD PASCAL lwrite(int fh, VOID FAR *pv, DWORD ul); - -BOOL WriteDIB (LPSTR szFile,HANDLE hdib); -WORD PaletteSize (VOID FAR * pv); -WORD DibNumColors (VOID FAR * pv); -// HANDLE DibFromBitmap (HBITMAP hbm, DWORD biStyle, WORD biBits, HPALETTE hpal); -BOOL PASCAL MakeBitmapAndPalette(HDC,HANDLE,HPALETTE *,HBITMAP *); -HPALETTE MakeDIBPalette(LPBITMAPINFOHEADER); -BOOL ReadDIB(LPSTR lpFileName, HBITMAP *bitmap, HPALETTE *palette); - -/**************************************************************************** - * * - * FUNCTION : WriteDIB(LPSTR szFile,HANDLE hdib) * - * * - * PURPOSE : Write a global handle in CF_DIB format to a file. * - * * - * RETURNS : TRUE - if successful. * - * FALSE - otherwise * - * * - ****************************************************************************/ - -BOOL WriteDIB(LPSTR szFile, HANDLE hdib) -{ - BITMAPFILEHEADER hdr; - LPBITMAPINFOHEADER lpbi; - int fh; - OFSTRUCT of; - - if (!hdib) - return FALSE; - - fh = OpenFile(szFile, &of, OF_CREATE | OF_READWRITE); - if (fh == -1) - return FALSE; - -#ifdef __WINDOWS_386__ - lpbi = (LPBITMAPINFOHEADER) MK_FP32(GlobalLock(hdib)); -#else - lpbi = (LPBITMAPINFOHEADER) GlobalLock(hdib); -#endif - /* Fill in the fields of the file header */ - hdr.bfType = BFT_BITMAP; - hdr.bfSize = GlobalSize(hdib) + sizeof(BITMAPFILEHEADER); - hdr.bfReserved1 = 0; - hdr.bfReserved2 = 0; - hdr.bfOffBits = (DWORD) sizeof(BITMAPFILEHEADER) + lpbi->biSize + - PaletteSize(lpbi); - - /* Write the file header */ - _lwrite(fh, (LPSTR) &hdr, sizeof(BITMAPFILEHEADER)); - - /* Write the DIB header and the bits */ - lwrite(fh, (LPSTR) lpbi, GlobalSize(hdib)); - - GlobalUnlock(hdib); - _lclose(fh); - return TRUE; -} - -/**************************************************************************** - * * - * FUNCTION : PaletteSize(VOID FAR * pv) * - * * - * PURPOSE : Calculates the palette size in bytes. If the info. block * - * is of the BITMAPCOREHEADER type, the number of colors is * - * multiplied by 3 to give the palette size, otherwise the * - * number of colors is multiplied by 4. * - * * - * RETURNS : Palette size in number of bytes. * - * * - ****************************************************************************/ - -WORD PaletteSize(VOID FAR * pv) -{ - LPBITMAPINFOHEADER lpbi; - WORD NumColors; - - lpbi = (LPBITMAPINFOHEADER) pv; - NumColors = DibNumColors(lpbi); - - if (lpbi->biSize == sizeof(BITMAPCOREHEADER)) - return NumColors * sizeof(RGBTRIPLE); - else - return NumColors * sizeof(RGBQUAD); -} - -/**************************************************************************** - * * - * FUNCTION : DibNumColors(VOID FAR * pv) * - * * - * PURPOSE : Determines the number of colors in the DIB by looking at * - * the BitCount filed in the info block. * - * * - * RETURNS : The number of colors in the DIB. * - * * - ****************************************************************************/ - -WORD DibNumColors(VOID FAR *pv) -{ - int bits; - BITMAPINFOHEADER *lpbi; - BITMAPCOREHEADER *lpbc; - - lpbi = ((BITMAPINFOHEADER*) pv); - lpbc = ((BITMAPCOREHEADER*) pv); - - /* With the BITMAPINFO format headers, the size of the palette - * is in biClrUsed, whereas in the BITMAPCORE - style headers, it - * is dependent on the bits per pixel ( = 2 raised to the power of - * bits/pixel). - */ - if (lpbi->biSize != sizeof(BITMAPCOREHEADER)) { - if (lpbi->biClrUsed != 0) - return (WORD) lpbi->biClrUsed; - bits = lpbi->biBitCount; - } - else - bits = lpbc->bcBitCount; - - switch (bits) { - case 1: - return 2; - case 4: - return 16; - case 8: - return 256; - default: - /* A 24 bitcount DIB has no color table */ - return 0; - } -} - -/**************************************************************************** - * * - * FUNCTION : DibFromBitmap() * - * * - * PURPOSE : Will create a global memory block in DIB format that * - * represents the Device-dependent bitmap (DDB) passed in. * - * * - * RETURNS : A handle to the DIB * - * * - ****************************************************************************/ - -#if NOTHING -HANDLE DibFromBitmap(HBITMAP hbm, DWORD biStyle, WORD biBits, HPALETTE hpal) -{ - BITMAP bm; - BITMAPINFOHEADER bi; - BITMAPINFOHEADER FAR *lpbi; - DWORD dwLen; - HANDLE hdib; - HANDLE h; - HDC hdc; - - if (!hbm) - return NULL; - - if (hpal == NULL) - hpal = GetStockObject(DEFAULT_PALETTE); - - GetObject(hbm, sizeof (bm), (LPSTR) &bm); - - if (biBits == 0) - biBits = bm.bmPlanes * bm.bmBitsPixel; - - bi.biSize = sizeof(BITMAPINFOHEADER); - bi.biWidth = bm.bmWidth; - bi.biHeight = bm.bmHeight; - bi.biPlanes = 1; - bi.biBitCount = biBits; - bi.biCompression = biStyle; - bi.biSizeImage = 0; - bi.biXPelsPerMeter = 0; - bi.biYPelsPerMeter = 0; - bi.biClrUsed = 0; - bi.biClrImportant = 0; - - dwLen = bi.biSize + PaletteSize(&bi); - - hdc = GetDC((HWND) NULL); - hpal = SelectPalette(hdc, hpal, FALSE); - RealizePalette(hdc); - - hdib = GlobalAlloc(GHND, dwLen); - - if (!hdib) { - SelectPalette(hdc, hpal, FALSE); - ReleaseDC(NULL, hdc); - return NULL; - } - -#ifdef __WINDOWS_386__ - lpbi = (BITMAPINFOHEADER FAR *) MK_FP32(GlobalLock(hdib)); -#else - lpbi = (BITMAPINFOHEADER FAR *) GlobalLock(hdib); -#endif - - *lpbi = bi; - - /* call GetDIBits with a NULL lpBits param, so it will calculate the - * biSizeImage field for us - */ - GetDIBits(hdc, hbm, 0, (WORD) bi.biHeight, - NULL, (LPBITMAPINFO) lpbi, DIB_RGB_COLORS); - - bi = *lpbi; - GlobalUnlock(hdib); - - /* If the driver did not fill in the biSizeImage field, make one up */ - if (bi.biSizeImage == 0) { - bi.biSizeImage = WIDTHBYTES((DWORD)bm.bmWidth * biBits) * bm.bmHeight; - - if (biStyle != BI_RGB) - bi.biSizeImage = (bi.biSizeImage * 3) / 2; - } - - /* realloc the buffer big enough to hold all the bits */ - dwLen = bi.biSize + PaletteSize(&bi) + bi.biSizeImage; - if (h = GlobalReAlloc(hdib, dwLen, 0)) - hdib = h; - else { - GlobalFree(hdib); - hdib = NULL; - - SelectPalette(hdc, hpal, FALSE); - ReleaseDC(NULL, hdc); - return hdib; - } - - /* call GetDIBits with a NON-NULL lpBits param, and actualy get the - * bits this time - */ -#ifdef __WINDOWS_386__ - lpbi = (BITMAPINFOHEADER FAR *) MK_FP32(GlobalLock(hdib)); -#else - lpbi = (BITMAPINFOHEADER FAR *) GlobalLock(hdib); -#endif - - if (GetDIBits(hdc, - hbm, - 0, - (WORD) bi.biHeight, - (LPSTR) lpbi + (WORD) lpbi->biSize + PaletteSize(lpbi), - (LPBITMAPINFO) lpbi, DIB_RGB_COLORS) == 0) { - GlobalUnlock(hdib); - hdib = NULL; - SelectPalette(hdc, hpal, FALSE); - ReleaseDC((HWND) NULL, hdc); - return NULL; - } - - bi = *lpbi; - GlobalUnlock(hdib); - - SelectPalette(hdc, hpal, FALSE); - ReleaseDC(NULL, hdc); - return hdib; -} -#endif - - /************* PRIVATE ROUTINES TO READ/WRITE MORE THAN 64K ***************/ -/**************************************************************************** - * * - * FUNCTION : lread(int fh, VOID FAR *pv, DWORD ul) * - * * - * PURPOSE : Reads data in steps of 32k till all the data has been read.* - * * - * RETURNS : 0 - If read did not proceed correctly. * - * number of bytes read otherwise. * - * * - ****************************************************************************/ - -DWORD PASCAL lread(int fh, void far *pv, DWORD ul) -{ - DWORD ulT = ul; -#if defined(WINNT) || defined(__WIN32__) || defined(__WIN32__) - BYTE *hp = (BYTE *) pv; -#else - BYTE huge *hp = (BYTE huge *) pv; -#endif - while (ul > (DWORD) MAXREAD) { - if (_lread(fh, (LPSTR) hp, (WORD) MAXREAD) != MAXREAD) - return 0; - ul -= MAXREAD; - hp += MAXREAD; - } - if (_lread(fh, (LPSTR) hp, (WORD) ul) != (WORD) ul) - return 0; - return ulT; -} - -/**************************************************************************** - * * - * FUNCTION : lwrite(int fh, VOID FAR *pv, DWORD ul) * - * * - * PURPOSE : Writes data in steps of 32k till all the data is written. * - * * - * RETURNS : 0 - If write did not proceed correctly. * - * number of bytes written otherwise. * - * * - ****************************************************************************/ - -DWORD PASCAL lwrite(int fh, VOID FAR *pv, DWORD ul) -{ - DWORD ulT = ul; -#if defined(WINNT) || defined(__WIN32__) || defined(__WIN32__) - BYTE *hp = (BYTE *) pv; -#else - BYTE huge *hp = (BYTE huge *) pv; -#endif - while (ul > MAXREAD) { - if (_lwrite(fh, (LPSTR) hp, (WORD) MAXREAD) != MAXREAD) - return 0; - ul -= MAXREAD; - hp += MAXREAD; - } - if (_lwrite(fh, (LPSTR) hp, (WORD) ul) != (WORD) ul) - return 0; - return ulT; -} - -/**************************************************************************** - * - * FUNCTION : ReadDIB(hWnd) - * - * PURPOSE : Reads a DIB from a file, obtains a handle to its - * BITMAPINFO struct. and loads the DIB. Once the DIB - * is loaded, the function also creates a bitmap and - * palette out of the DIB for a device-dependent form. - * - * RETURNS : TRUE - DIB loaded and bitmap/palette created - * The DIBINIT structure pointed to by pInfo is - * filled with the appropriate handles. - * FALSE - otherwise - * - ****************************************************************************/ -BOOL ReadDIB(LPSTR lpFileName, HBITMAP *bitmap, HPALETTE *palette) -{ - int fh; - LPBITMAPINFOHEADER lpbi; - OFSTRUCT of; - BITMAPFILEHEADER bf; - WORD nNumColors; - BOOL result = FALSE; - char str[128]; - WORD offBits; - HDC hDC; - BOOL bCoreHead = FALSE; - HANDLE hDIB = 0; - - /* Open the file and get a handle to it's BITMAPINFO */ - - fh = OpenFile (lpFileName, &of, OF_READ); - if (fh == -1) { - wsprintf(str,"Can't open file '%ls'", (LPSTR)lpFileName); - MessageBox(NULL, str, "Error", MB_ICONSTOP | MB_OK); - return (0); - } - - hDIB = GlobalAlloc(GHND, (DWORD)(sizeof(BITMAPINFOHEADER) + - 256 * sizeof(RGBQUAD))); - if (!hDIB) - return(0); - -#ifdef __WINDOWS_386__ - lpbi = (LPBITMAPINFOHEADER)MK_FP32(GlobalLock(hDIB)); -#else - lpbi = (LPBITMAPINFOHEADER)GlobalLock(hDIB); -#endif - - /* read the BITMAPFILEHEADER */ - if (sizeof (bf) != _lread (fh, (LPSTR)&bf, sizeof (bf))) - goto ErrExit; - - if (bf.bfType != 0x4d42) /* 'BM' */ - goto ErrExit; - - if (sizeof(BITMAPCOREHEADER) != _lread (fh, (LPSTR)lpbi, sizeof(BITMAPCOREHEADER))) - goto ErrExit; - - if (lpbi->biSize == sizeof(BITMAPCOREHEADER)) - { - lpbi->biSize = sizeof(BITMAPINFOHEADER); - lpbi->biBitCount = ((LPBITMAPCOREHEADER)lpbi)->bcBitCount; - lpbi->biPlanes = ((LPBITMAPCOREHEADER)lpbi)->bcPlanes; - lpbi->biHeight = ((LPBITMAPCOREHEADER)lpbi)->bcHeight; - lpbi->biWidth = ((LPBITMAPCOREHEADER)lpbi)->bcWidth; - bCoreHead = TRUE; - } - else - { - // get to the start of the header and read INFOHEADER - _llseek(fh,sizeof(BITMAPFILEHEADER),SEEK_SET); - if (sizeof(BITMAPINFOHEADER) != _lread (fh, (LPSTR)lpbi, sizeof(BITMAPINFOHEADER))) - goto ErrExit; - } - - nNumColors = (WORD)lpbi->biClrUsed; - if ( nNumColors == 0 ) - { - /* no color table for 24-bit, default size otherwise */ - if (lpbi->biBitCount != 24) - nNumColors = 1 << lpbi->biBitCount; /* standard size table */ - } - - /* fill in some default values if they are zero */ - if (lpbi->biClrUsed == 0) - lpbi->biClrUsed = nNumColors; - - if (lpbi->biSizeImage == 0) - { - lpbi->biSizeImage = ((((lpbi->biWidth * (DWORD)lpbi->biBitCount) + 31) & ~31) >> 3) - * lpbi->biHeight; - } - - /* get a proper-sized buffer for header, color table and bits */ - GlobalUnlock(hDIB); - hDIB = GlobalReAlloc(hDIB, lpbi->biSize + - nNumColors * sizeof(RGBQUAD) + - lpbi->biSizeImage, 0); - if (!hDIB) /* can't resize buffer for loading */ - goto ErrExit2; - -#ifdef __WINDOWS_386__ - lpbi = (LPBITMAPINFOHEADER)MK_FP32(GlobalLock(hDIB)); -#else - lpbi = (LPBITMAPINFOHEADER)GlobalLock(hDIB); -#endif - - /* read the color table */ - if (!bCoreHead) - _lread(fh, (LPSTR)(lpbi) + lpbi->biSize, nNumColors * sizeof(RGBQUAD)); - else - { - signed int i; - RGBQUAD FAR *pQuad; - RGBTRIPLE FAR *pTriple; - - _lread(fh, (LPSTR)(lpbi) + lpbi->biSize, nNumColors * sizeof(RGBTRIPLE)); - - pQuad = (RGBQUAD FAR *)((LPSTR)lpbi + lpbi->biSize); - pTriple = (RGBTRIPLE FAR *) pQuad; - for (i = nNumColors - 1; i >= 0; i--) - { - pQuad[i].rgbRed = pTriple[i].rgbtRed; - pQuad[i].rgbBlue = pTriple[i].rgbtBlue; - pQuad[i].rgbGreen = pTriple[i].rgbtGreen; - pQuad[i].rgbReserved = 0; - } - } - - /* offset to the bits from start of DIB header */ - offBits = (WORD)lpbi->biSize + nNumColors * sizeof(RGBQUAD); - - if (bf.bfOffBits != 0L) - { - _llseek(fh,bf.bfOffBits,SEEK_SET); - } - - if (lpbi->biSizeImage == lread(fh, (LPSTR)lpbi + offBits, lpbi->biSizeImage)) - { - GlobalUnlock(hDIB); - - hDC = GetDC(NULL); - if (!MakeBitmapAndPalette(hDC, hDIB, palette, - bitmap)) - { - ReleaseDC(NULL,hDC); - goto ErrExit2; - } - else - { - ReleaseDC(NULL,hDC); - GlobalFree(hDIB); - result = TRUE; - } - } - else - { -ErrExit: - GlobalUnlock(hDIB); -ErrExit2: - GlobalFree(hDIB); - } - - _lclose(fh); - return(result); -} - -/**************************************************************************** - * - * FUNCTION : MakeBitmapAndPalette - * - * PURPOSE : Given a DIB, creates a bitmap and corresponding palette - * to be used for a device-dependent representation of - * of the image. - * - * RETURNS : TRUE --> success. phPal and phBitmap are filled with - * appropriate handles. Caller is responsible - * for freeing objects. - * FALSE --> unable to create objects. both pointer are - * not valid - * - ****************************************************************************/ -BOOL PASCAL MakeBitmapAndPalette(HDC hDC, HANDLE hDIB, - HPALETTE * phPal, HBITMAP * phBitmap) -{ - LPBITMAPINFOHEADER lpInfo; - BOOL result = FALSE; - HBITMAP hBitmap; - HPALETTE hPalette, hOldPal; - LPSTR lpBits; - -#ifdef __WINDOWS_386__ - lpInfo = (LPBITMAPINFOHEADER) MK_FP32(GlobalLock(hDIB)); -#else - lpInfo = (LPBITMAPINFOHEADER) GlobalLock(hDIB); -#endif - - hPalette = MakeDIBPalette(lpInfo); - if ( hPalette ) - { - // Need to realize palette for converting DIB to bitmap. - hOldPal = SelectPalette(hDC, hPalette, TRUE); - RealizePalette(hDC); - - lpBits = (LPSTR)lpInfo + (WORD)lpInfo->biSize + - (WORD)lpInfo->biClrUsed * sizeof(RGBQUAD); - hBitmap = CreateDIBitmap(hDC, lpInfo, CBM_INIT, lpBits, - (LPBITMAPINFO)lpInfo, DIB_RGB_COLORS); - - SelectPalette(hDC, hOldPal, TRUE); - RealizePalette(hDC); - - if (!hBitmap) - DeleteObject(hPalette); - else - { - *phBitmap = hBitmap; - *phPal = hPalette; - result = TRUE; - } - } - return(result); -} - -/**************************************************************************** - * * - * FUNCTION : MakeDIBPalette(lpInfo) * - * * - * PURPOSE : Given a BITMAPINFOHEADER, create a palette based on - * the color table. - * - * * - * RETURNS : non-zero - handle of a corresponding palette - * zero - unable to create palette - * * - ****************************************************************************/ -HPALETTE MakeDIBPalette(LPBITMAPINFOHEADER lpInfo) -{ - NPLOGPALETTE npPal; - RGBQUAD far *lpRGB; - HPALETTE hLogPal; - WORD i; - - /* since biClrUsed field was filled during the loading of the DIB, - ** we know it contains the number of colors in the color table. - */ - if (lpInfo->biClrUsed) - { -/* - npPal = (NPLOGPALETTE)LocalAlloc(LMEM_FIXED, sizeof(LOGPALETTE) + - (WORD)lpInfo->biClrUsed * sizeof(PALETTEENTRY)); -*/ - npPal = (NPLOGPALETTE)malloc(sizeof(LOGPALETTE) + - (WORD)lpInfo->biClrUsed * sizeof(PALETTEENTRY)); - - if (!npPal) - return(FALSE); - - npPal->palVersion = 0x300; - npPal->palNumEntries = (WORD)lpInfo->biClrUsed; - - /* get pointer to the color table */ - lpRGB = (RGBQUAD FAR *)((LPSTR)lpInfo + lpInfo->biSize); - - /* copy colors from the color table to the LogPalette structure */ - for (i = 0; i < lpInfo->biClrUsed; i++, lpRGB++) - { - npPal->palPalEntry[i].peRed = lpRGB->rgbRed; - npPal->palPalEntry[i].peGreen = lpRGB->rgbGreen; - npPal->palPalEntry[i].peBlue = lpRGB->rgbBlue; - npPal->palPalEntry[i].peFlags = 0; - } - - hLogPal = CreatePalette((LPLOGPALETTE)npPal); -// LocalFree((HANDLE)npPal); - free(npPal); - - return(hLogPal); - } - - /* 24-bit DIB with no color table. return default palette. Another - ** option would be to create a 256 color "rainbow" palette to provide - ** some good color choices. - */ - else - return((HPALETTE) GetStockObject(DEFAULT_PALETTE)); -} - -bool wxLoadIntoBitmap(char *filename, wxBitmap *bitmap, wxPalette **pal) -{ - HBITMAP hBitmap; - HPALETTE hPalette; - - bool success = (ReadDIB(filename, &hBitmap, &hPalette) != 0); - - if (!success) - { - DeleteObject(hPalette); - return FALSE; - } - - if (hPalette) - { - if (pal) - { - *pal = new wxPalette; - (*pal)->SetHPALETTE((WXHPALETTE) hPalette); - } - else - DeleteObject(hPalette); - } - else if (pal) - *pal = NULL; - - if (hBitmap) - { - BITMAP bm; - GetObject(hBitmap, sizeof(bm), (LPSTR)&bm); - - bitmap->SetHBITMAP((WXHBITMAP) hBitmap); - bitmap->SetWidth(bm.bmWidth); - bitmap->SetHeight(bm.bmHeight); - bitmap->SetDepth(bm.bmPlanes * bm.bmBitsPixel); - bitmap->SetOk(TRUE); - return TRUE; - } - else return FALSE; -} - -wxBitmap *wxLoadBitmap(char *filename, wxPalette **pal) -{ - wxBitmap *bitmap = new wxBitmap; - if (wxLoadIntoBitmap(filename, bitmap, pal)) - return bitmap; - else - { - delete bitmap; - return NULL; - } -} - -//--------------------------------------------------------------------- -// -// Function: InitBitmapInfoHeader -// -// Purpose: Does a "standard" initialization of a BITMAPINFOHEADER, -// given the Width, Height, and Bits per Pixel for the -// DIB. -// -// By standard, I mean that all the relevant fields are set -// to the specified values. biSizeImage is computed, the -// biCompression field is set to "no compression," and all -// other fields are 0. -// -// Note that DIBs only allow BitsPixel values of 1, 4, 8, or -// 24. This routine makes sure that one of these values is -// used (whichever is most appropriate for the specified -// nBPP). -// -// Parms: lpBmInfoHdr == Far pointer to a BITMAPINFOHEADER structure -// to be filled in. -// dwWidth == Width of DIB (not in Win 3.0 & 3.1, high -// word MUST be 0). -// dwHeight == Height of DIB (not in Win 3.0 & 3.1, high -// word MUST be 0). -// nBPP == Bits per Pixel for the DIB. -// -// History: Date Reason -// 11/07/91 Created -// -//--------------------------------------------------------------------- - -void InitBitmapInfoHeader (LPBITMAPINFOHEADER lpBmInfoHdr, - DWORD dwWidth, - DWORD dwHeight, - int nBPP) -{ -// _fmemset (lpBmInfoHdr, 0, sizeof (BITMAPINFOHEADER)); - memset (lpBmInfoHdr, 0, sizeof (BITMAPINFOHEADER)); - - lpBmInfoHdr->biSize = sizeof (BITMAPINFOHEADER); - lpBmInfoHdr->biWidth = dwWidth; - lpBmInfoHdr->biHeight = dwHeight; - lpBmInfoHdr->biPlanes = 1; - - if (nBPP <= 1) - nBPP = 1; - else if (nBPP <= 4) - nBPP = 4; - else if (nBPP <= 8) - nBPP = 8; -/* Doesn't work - else if (nBPP <= 16) - nBPP = 16; -*/ - else - nBPP = 24; - - lpBmInfoHdr->biBitCount = nBPP; - lpBmInfoHdr->biSizeImage = WIDTHBYTES (dwWidth * nBPP) * dwHeight; -} - - - - -LPSTR FindDIBBits (LPSTR lpbi) -{ - return (lpbi + *(LPDWORD)lpbi + PaletteSize (lpbi)); -} - -//--------------------------------------------------------------------- -// -// Function: BitmapToDIB -// -// Purpose: Given a device dependent bitmap and a palette, returns -// a handle to global memory with a DIB spec in it. The -// DIB is rendered using the colors of the palette passed in. -// -// Stolen almost verbatim from ShowDIB. -// -// Parms: hBitmap == Handle to device dependent bitmap compatible -// with default screen display device. -// hPal == Palette to render the DDB with. If it's NULL, -// use the default palette. -// -// History: Date Reason -// 6/01/91 Created -// -//--------------------------------------------------------------------- - -HANDLE BitmapToDIB (HBITMAP hBitmap, HPALETTE hPal) -{ - BITMAP Bitmap; - BITMAPINFOHEADER bmInfoHdr; - LPBITMAPINFOHEADER lpbmInfoHdr; - LPSTR lpBits; - HDC hMemDC; - HANDLE hDIB; - HPALETTE hOldPal = NULL; - - // Do some setup -- make sure the Bitmap passed in is valid, - // get info on the bitmap (like its height, width, etc.), - // then setup a BITMAPINFOHEADER. - - if (!hBitmap) - return NULL; - - if (!GetObject (hBitmap, sizeof (Bitmap), (LPSTR) &Bitmap)) - return NULL; - - InitBitmapInfoHeader (&bmInfoHdr, - Bitmap.bmWidth, - Bitmap.bmHeight, - Bitmap.bmPlanes * Bitmap.bmBitsPixel); - - - // Now allocate memory for the DIB. Then, set the BITMAPINFOHEADER - // into this memory, and find out where the bitmap bits go. - - hDIB = GlobalAlloc (GHND, sizeof (BITMAPINFOHEADER) + - PaletteSize ((LPSTR) &bmInfoHdr) + bmInfoHdr.biSizeImage); - - if (!hDIB) - return NULL; - -#ifdef __WINDOWS_386__ - lpbmInfoHdr = (LPBITMAPINFOHEADER) MK_FP32(GlobalLock (hDIB)); -#else - lpbmInfoHdr = (LPBITMAPINFOHEADER) GlobalLock (hDIB); -#endif - - *lpbmInfoHdr = bmInfoHdr; - lpBits = FindDIBBits ((LPSTR) lpbmInfoHdr); - - - // Now, we need a DC to hold our bitmap. If the app passed us - // a palette, it should be selected into the DC. - - hMemDC = GetDC (NULL); - - if (hPal) - { - hOldPal = SelectPalette (hMemDC, hPal, FALSE); - RealizePalette (hMemDC); - } - - - - // We're finally ready to get the DIB. Call the driver and let - // it party on our bitmap. It will fill in the color table, - // and bitmap bits of our global memory block. - - if (!GetDIBits (hMemDC, - hBitmap, - 0, - Bitmap.bmHeight, - lpBits, - (LPBITMAPINFO) lpbmInfoHdr, - DIB_RGB_COLORS)) - { - GlobalUnlock (hDIB); - GlobalFree (hDIB); - hDIB = NULL; - } - else - GlobalUnlock (hDIB); - - - // Finally, clean up and return. - - if (hOldPal) - SelectPalette (hMemDC, hOldPal, FALSE); - - ReleaseDC (NULL, hMemDC); - - return hDIB; -} - -bool wxSaveBitmap(char *filename, wxBitmap *bitmap, wxPalette *colourmap) -{ - HPALETTE hPalette = 0; - if (colourmap) - hPalette = (HPALETTE) colourmap->GetHPALETTE(); - - HANDLE dibHandle = BitmapToDIB((HBITMAP) bitmap->GetHBITMAP(), hPalette); - if (dibHandle) - { - bool success = (WriteDIB(filename, dibHandle) != 0); - GlobalFree(dibHandle); - return success; - } - else return FALSE; -} - - diff --git a/src/msw/dibutils.cpp b/src/msw/dibutils.cpp deleted file mode 100644 index 6921a92472..0000000000 --- a/src/msw/dibutils.cpp +++ /dev/null @@ -1,697 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dibutils.cpp -// Purpose: Utilities for DIBs -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Microsoft, Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dibutils.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include -#include "wx/setup.h" -#include "wx/defs.h" -#endif - -#include -#include -#include -#include - -#if defined(__WIN32__) -#if !defined(__MWERKS__) && !defined(__SALFORDC__) - #include // for _fmemcpy() -#endif - #define _huge -#ifndef hmemcpy - #define hmemcpy memcpy -#endif -#endif - -#define BFT_ICON 0x4349 /* 'IC' */ -#define BFT_BITMAP 0x4d42 /* 'BM' */ -#define BFT_CURSOR 0x5450 /* 'PT' */ - -/* flags for _lseek */ -#define SEEK_CUR 1 -#define SEEK_END 2 -#define SEEK_SET 0 - - -/* - * Clear the System Palette so that we can ensure an identity palette - * mapping for fast performance. - */ - -void ClearSystemPalette(void) -{ - //*** A dummy palette setup - struct - { - WORD Version; - WORD NumberOfEntries; - PALETTEENTRY aEntries[256]; - } Palette = - { - 0x300, - 256 - }; - - HPALETTE ScreenPalette = 0; - HDC ScreenDC; - int Counter; - UINT nMapped = 0; - BOOL bOK = FALSE; - int nOK = 0; - - //*** Reset everything in the system palette to black - for(Counter = 0; Counter < 256; Counter++) - { - Palette.aEntries[Counter].peRed = 0; - Palette.aEntries[Counter].peGreen = 0; - Palette.aEntries[Counter].peBlue = 0; - Palette.aEntries[Counter].peFlags = PC_NOCOLLAPSE; - } - - //*** Create, select, realize, deselect, and delete the palette - ScreenDC = GetDC(NULL); - ScreenPalette = CreatePalette((LOGPALETTE *)&Palette); - - if (ScreenPalette) - { - ScreenPalette = SelectPalette(ScreenDC,ScreenPalette,FALSE); - nMapped = RealizePalette(ScreenDC); - ScreenPalette = SelectPalette(ScreenDC,ScreenPalette,FALSE); - bOK = DeleteObject(ScreenPalette); - } - - nOK = ReleaseDC(NULL, ScreenDC); - - return; -} - - -/* - * Open a DIB file and return a MEMORY DIB, a memory handle containing.. - * - * BITMAP INFO bi - * palette data - * bits.... - */ - -int DibWriteFile(LPSTR szFile, LPBITMAPINFOHEADER lpbi) -{ - HFILE fh; - OFSTRUCT of; - - fh = OpenFile(szFile, &of, OF_WRITE | OF_CREATE); - - if (!fh) { -// printf("la regamos0"); - return 0; - } - - long size = DibSize(lpbi); - - // write file header - BITMAPFILEHEADER bmf; - bmf.bfType = 'BM'; - bmf.bfSize = sizeof(bmf) + size; - bmf.bfReserved1 = 0; - bmf.bfReserved2 = 0; - bmf.bfOffBits = sizeof(bmf) + (char far*)(DibPtr(lpbi)) - (char far*)lpbi; -#if defined( __WATCOMC__) || defined(_MSC_VER) || defined(__SC__) || defined(__SALFORDC__) - if (_hwrite(fh, (LPCSTR)(&bmf), sizeof(bmf))<0 || - _hwrite(fh, (LPCSTR)lpbi, size)<0) { - _lclose(fh); -// printf("la regamos1"); - return 0; - } -#else - if (_hwrite(fh, (LPBYTE)(&bmf), sizeof(bmf))<0 || - _hwrite(fh, (LPBYTE)lpbi, size)<0) { - _lclose(fh); -// printf("la regamos1"); - return 0; - } -#endif - - _lclose(fh); - return 1; -} - -PDIB DibOpenFile(LPSTR szFile) -{ - HFILE fh; - DWORD dwLen; - DWORD dwBits; - PDIB pdib; - LPVOID p; - OFSTRUCT of; - -#if defined(WIN32) || defined(_WIN32) - #define GetCurrentInstance() GetModuleHandle(NULL) -#else - #define GetCurrentInstance() (HINSTANCE)SELECTOROF((LPVOID)&of) -#endif - - fh = OpenFile(szFile, &of, OF_READ); - - if (fh == -1) - { - HRSRC h; - - // TODO: Unicode version -#ifdef __WIN16__ - h = FindResource(GetCurrentInstance(), szFile, RT_BITMAP); -#else - h = FindResourceA(GetCurrentInstance(), szFile, RT_BITMAP); -#endif - -#if defined(__WIN32__) - //!!! can we call GlobalFree() on this? is it the right format. - //!!! can we write to this resource? - if (h) - return (PDIB)LockResource(LoadResource(GetCurrentInstance(), h)); -#else - if (h) - fh = AccessResource(GetCurrentInstance(), h); -#endif - } - - if (fh == -1) - return NULL; - - pdib = DibReadBitmapInfo(fh); - - if (!pdib) - return NULL; - - /* How much memory do we need to hold the DIB */ - - dwBits = pdib->biSizeImage; - dwLen = pdib->biSize + DibPaletteSize(pdib) + dwBits; - - /* Can we get more memory? */ - - p = GlobalReAllocPtr(pdib,dwLen,0); - - if (!p) - { - GlobalFreePtr(pdib); - pdib = NULL; - } - else - { - pdib = (PDIB)p; - } - - if (pdib) - { - /* read in the bits */ - _hread(fh, (LPBYTE)pdib + (UINT)pdib->biSize + DibPaletteSize(pdib), dwBits); - } - - _lclose(fh); - - return pdib; -} - - -/* - * ReadDibBitmapInfo() - * - * Will read a file in DIB format and return a global HANDLE to its - * BITMAPINFO. This function will work with both "old" and "new" - * bitmap formats, but will always return a "new" BITMAPINFO. - */ - -PDIB DibReadBitmapInfo(HFILE fh) -{ - DWORD off; - HANDLE hbi = NULL; - int size; - int i; - int nNumColors; - - RGBQUAD FAR *pRgb; - BITMAPINFOHEADER bi; - BITMAPCOREHEADER bc; - BITMAPFILEHEADER bf; - PDIB pdib; - - if (fh == -1) - return NULL; - - off = _llseek(fh,0L,SEEK_CUR); - - if (sizeof(bf) != _lread(fh,(LPSTR)&bf,sizeof(bf))) - return FALSE; - - /* - * do we have a RC HEADER? - */ - if (bf.bfType != BFT_BITMAP) - { - bf.bfOffBits = 0L; - _llseek(fh,off,SEEK_SET); - } - - if (sizeof(bi) != _lread(fh,(LPSTR)&bi,sizeof(bi))) - return FALSE; - - /* - * what type of bitmap info is this? - */ - switch (size = (int)bi.biSize) - { - default: - case sizeof(BITMAPINFOHEADER): - break; - - case sizeof(BITMAPCOREHEADER): - bc = *(BITMAPCOREHEADER*)&bi; - bi.biSize = sizeof(BITMAPINFOHEADER); - bi.biWidth = (DWORD)bc.bcWidth; - bi.biHeight = (DWORD)bc.bcHeight; - bi.biPlanes = (UINT)bc.bcPlanes; - bi.biBitCount = (UINT)bc.bcBitCount; - bi.biCompression = BI_RGB; - bi.biSizeImage = 0; - bi.biXPelsPerMeter = 0; - bi.biYPelsPerMeter = 0; - bi.biClrUsed = 0; - bi.biClrImportant = 0; - - _llseek(fh,(LONG)sizeof(BITMAPCOREHEADER)-sizeof(BITMAPINFOHEADER),SEEK_CUR); - - break; - } - - nNumColors = DibNumColors(&bi); - -#if 0 - if (bi.biSizeImage == 0) - bi.biSizeImage = DibSizeImage(&bi); - - if (bi.biClrUsed == 0) - bi.biClrUsed = DibNumColors(&bi); -#else - FixBitmapInfo(&bi); -#endif - - pdib = (PDIB)GlobalAllocPtr(GMEM_MOVEABLE,(LONG)bi.biSize + nNumColors * sizeof(RGBQUAD)); - - if (!pdib) - return NULL; - - *pdib = bi; - - pRgb = DibColors(pdib); - - if (nNumColors) - { - if (size == sizeof(BITMAPCOREHEADER)) - { - /* - * convert a old color table (3 byte entries) to a new - * color table (4 byte entries) - */ - _lread(fh,(LPVOID)pRgb,nNumColors * sizeof(RGBTRIPLE)); - - for (i=nNumColors-1; i>=0; i--) - { - RGBQUAD rgb; - - rgb.rgbRed = ((RGBTRIPLE FAR *)pRgb)[i].rgbtRed; - rgb.rgbBlue = ((RGBTRIPLE FAR *)pRgb)[i].rgbtBlue; - rgb.rgbGreen = ((RGBTRIPLE FAR *)pRgb)[i].rgbtGreen; - rgb.rgbReserved = (BYTE)0; - - pRgb[i] = rgb; - } - } - else - { - _lread(fh,(LPVOID)pRgb,nNumColors * sizeof(RGBQUAD)); - } - } - - if (bf.bfOffBits != 0L) - _llseek(fh,off + bf.bfOffBits,SEEK_SET); - - return pdib; -} - -/* - * DibSetUsage(hdib,hpal,wUsage) - * - * Modifies the color table of the passed DIB for use with the wUsage - * parameter specifed. - * - * if wUsage is DIB_PAL_COLORS the DIB color table is set to 0-256 - * if wUsage is DIB_RGB_COLORS the DIB color table is set to the RGB values - * in the passed palette - */ - -BOOL DibSetUsage(PDIB pdib, HPALETTE hpal,UINT wUsage) -{ - PALETTEENTRY ape[256]; - RGBQUAD FAR * pRgb; - WORD FAR * pw; - int nColors; - int n; - - if (hpal == NULL) - hpal = (HPALETTE)GetStockObject(DEFAULT_PALETTE); - - if (!pdib) - return FALSE; - - nColors = DibNumColors(pdib); - - if (nColors == 3 && DibCompression(pdib) == BI_BITFIELDS) - nColors = 0; - - if (nColors > 0) - { - pRgb = DibColors(pdib); - - switch (wUsage) - { - // - // Set the DIB color table to palette indexes - // - case DIB_PAL_COLORS: - for (pw = (WORD FAR*)pRgb,n=0; nbiSize = sizeof(BITMAPINFOHEADER) ; - lpbi->biWidth = dx; - lpbi->biHeight = dy; - lpbi->biPlanes = 1; - lpbi->biBitCount = bits ; - lpbi->biCompression = BI_RGB ; - lpbi->biSizeImage = dwSizeImage; - lpbi->biXPelsPerMeter = 0 ; - lpbi->biYPelsPerMeter = 0 ; - lpbi->biClrUsed = 0 ; - lpbi->biClrImportant = 0 ; - - if (bits == 4) - lpbi->biClrUsed = 16; - - else if (bits == 8) - lpbi->biClrUsed = 256; - - pdw = (DWORD FAR *)((LPBYTE)lpbi+(int)lpbi->biSize); - - for (i=0; i<(int)lpbi->biClrUsed/16; i++) - { - *pdw++ = 0x00000000; // 0000 black - *pdw++ = 0x00800000; // 0001 dark red - *pdw++ = 0x00008000; // 0010 dark green - *pdw++ = 0x00808000; // 0011 mustard - *pdw++ = 0x00000080; // 0100 dark blue - *pdw++ = 0x00800080; // 0101 purple - *pdw++ = 0x00008080; // 0110 dark turquoise - *pdw++ = 0x00C0C0C0; // 1000 gray - *pdw++ = 0x00808080; // 0111 dark gray - *pdw++ = 0x00FF0000; // 1001 red - *pdw++ = 0x0000FF00; // 1010 green - *pdw++ = 0x00FFFF00; // 1011 yellow - *pdw++ = 0x000000FF; // 1100 blue - *pdw++ = 0x00FF00FF; // 1101 pink (magenta) - *pdw++ = 0x0000FFFF; // 1110 cyan - *pdw++ = 0x00FFFFFF; // 1111 white - } - - return (PDIB)lpbi; -} - -static void xlatClut8(BYTE FAR *pb, DWORD dwSize, BYTE FAR *xlat) -{ - DWORD dw; - -#ifdef __cplusplus - for (dw = 0; dw < dwSize; dw++, ((BYTE _huge *&)pb)++) -#else - for (dw = 0; dw < dwSize; dw++, ((BYTE _huge *)pb)++) -#endif - *pb = xlat[*pb]; -} - -static void xlatClut4(BYTE FAR *pb, DWORD dwSize, BYTE FAR *xlat) -{ - DWORD dw; - -#ifdef __cplusplus - for (dw = 0; dw < dwSize; dw++, ((BYTE _huge *&)pb)++) -#else - for (dw = 0; dw < dwSize; dw++, ((BYTE _huge *)pb)++) -#endif - *pb = (BYTE)(xlat[*pb & 0x0F] | (xlat[(*pb >> 4) & 0x0F] << 4)); -} - -#define RLE_ESCAPE 0 -#define RLE_EOL 0 -#define RLE_EOF 1 -#define RLE_JMP 2 - -static void xlatRle8(BYTE FAR *pb, DWORD dwSize, BYTE FAR *xlat) -{ - BYTE cnt; - BYTE b; - BYTE _huge *prle = pb; - - for(;;) - { - cnt = *prle++; - b = *prle; - - if (cnt == RLE_ESCAPE) - { - prle++; - - switch (b) - { - case RLE_EOF: - return; - - case RLE_EOL: - break; - - case RLE_JMP: - prle++; // skip dX - prle++; // skip dY - break; - - default: - cnt = b; - for (b=0; bbiSizeImage) == 0) - SizeImage = DibSizeImage(lpbi); - - // - // build a xlat table. from the current DIB colors to the given - // palette. - // - for (n=0; nbiClrUsed = nPalColors; - - // - // re-size the DIB - // - if (nPalColors > nDibColors) - { - GlobalReAllocPtr(lpbi, lpbi->biSize + nPalColors*sizeof(RGBQUAD) + SizeImage, 0); - hmemmove((BYTE _huge *)DibPtr(lpbi), (BYTE _huge *)lpBits, SizeImage); - lpBits = (LPBYTE)DibPtr(lpbi); - } - else if (nPalColors < nDibColors) - { - hmemcpy(DibPtr(lpbi), lpBits, SizeImage); - GlobalReAllocPtr(lpbi, lpbi->biSize + nPalColors*sizeof(RGBQUAD) + SizeImage, 0); - lpBits = (LPBYTE)DibPtr(lpbi); - } - - // - // translate the DIB bits - // - switch (lpbi->biCompression) - { - case BI_RLE8: - xlatRle8(lpBits, SizeImage, xlat); - break; - - case BI_RLE4: - xlatRle4(lpBits, SizeImage, xlat); - break; - - case BI_RGB: - if (lpbi->biBitCount == 8) - xlatClut8(lpBits, SizeImage, xlat); - else - xlatClut4(lpBits, SizeImage, xlat); - break; - } - - // - // Now copy the RGBs in the logical palette to the dib color table - // - for (n=0; nbmiColors; - - WORD nColors = Info->bmiHeader.biClrUsed; - if (nColors) { - LOGPALETTE* logPal = (LOGPALETTE*) - new BYTE[sizeof(LOGPALETTE) + (nColors-1)*sizeof(PALETTEENTRY)]; - - logPal->palVersion = 0x300; // Windows 3.0 version - logPal->palNumEntries = nColors; - for (short n = 0; n < nColors; n++) { - logPal->palPalEntry[n].peRed = rgb[n].rgbRed; - logPal->palPalEntry[n].peGreen = rgb[n].rgbGreen; - logPal->palPalEntry[n].peBlue = rgb[n].rgbBlue; - logPal->palPalEntry[n].peFlags = (BYTE)flags; - } - hPalette = ::CreatePalette(logPal); - delete logPal; - } else - hPalette = 0; - - return hPalette; -} - diff --git a/src/msw/dirdlg.cpp b/src/msw/dirdlg.cpp deleted file mode 100644 index ecfac092c5..0000000000 --- a/src/msw/dirdlg.cpp +++ /dev/null @@ -1,131 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dirdlg.cpp -// Purpose: wxDirDialog -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dirdlg.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include -#include "wx/defs.h" -#include "wx/utils.h" -#include "wx/dialog.h" -#include "wx/dirdlg.h" -#endif - -#if defined(__WIN95__) && !defined(__GNUWIN32__) -#include "shlobj.h" // Win95 shell -#endif - -#include "wx/msw/private.h" -#include "wx/cmndata.h" - -#include -#include -#include - -#define wxDIALOG_DEFAULT_X 300 -#define wxDIALOG_DEFAULT_Y 300 - -#if !USE_SHARED_LIBRARY -IMPLEMENT_CLASS(wxDirDialog, wxDialog) -#endif - -wxDirDialog::wxDirDialog(wxWindow *parent, const wxString& message, -// const wxString& caption, - const wxString& defaultPath, - long style, const wxPoint& pos) -{ - m_message = message; -// m_caption = caption; - m_dialogStyle = style; - m_parent = parent; - m_path = defaultPath; -} - -int wxDirDialog::ShowModal(void) -{ - // Unfortunately Gnu-Win32 doesn't yet have COM support -#if defined(__WIN95__) && !defined(__GNUWIN32__) - HWND hWnd = 0; - if (m_parent) hWnd = (HWND) m_parent->GetHWND(); - - BROWSEINFO bi; - LPSTR lpBuffer; -// LPITEMIDLIST pidlPrograms; // PIDL for Programs folder - LPITEMIDLIST pidlBrowse; // PIDL selected by user - LPMALLOC pMalloc = NULL; - - HRESULT result = ::SHGetMalloc(&pMalloc); - - if (result != NOERROR) - return wxID_CANCEL; - - // Allocate a buffer to receive browse information. - if ((lpBuffer = (LPSTR) pMalloc->Alloc(MAX_PATH)) == NULL) - { - pMalloc->Release(); - return wxID_CANCEL; - } - -/* - // Get the PIDL for the Programs folder. - if (!SUCCEEDED(SHGetSpecialFolderLocation( - parent->GetSafeHwnd(), CSIDL_PROGRAMS, &pidlPrograms))) { - pMalloc->Free(lpBuffer); - pMalloc->Release(); - return wxID_CANCEL; - } -*/ - - // Fill in the BROWSEINFO structure. - bi.hwndOwner = hWnd; - bi.pidlRoot = NULL; // pidlPrograms; - bi.pszDisplayName = lpBuffer; - bi.lpszTitle = (LPCTSTR) (const char *) m_message; - bi.ulFlags = 0; - bi.lpfn = NULL; - bi.lParam = 0; - - // Browse for a folder and return its PIDL. - pidlBrowse = SHBrowseForFolder(&bi); - - int id = wxID_OK; - if (pidlBrowse != NULL) { - - // Show the display name, title, and file system path. - if (SHGetPathFromIDList(pidlBrowse, lpBuffer)) - m_path = lpBuffer; - - // Free the PIDL returned by SHBrowseForFolder. - pMalloc->Free(pidlBrowse); - } - else - id = wxID_CANCEL; - - // Clean up. -// pMalloc->Free(pidlPrograms); - pMalloc->Free(lpBuffer); - pMalloc->Release(); - - return id; -#else - return wxID_CANCEL; -#endif -} - diff --git a/src/msw/dummy.cpp b/src/msw/dummy.cpp deleted file mode 100644 index 83850c956c..0000000000 --- a/src/msw/dummy.cpp +++ /dev/null @@ -1,68 +0,0 @@ -/* - * File: dummy.cc - * Purpose: See below - * Author: Julian Smart - * Created: 1993 - * Updated: - * Copyright: (c) 1993, AIAI, University of Edinburgh - */ - -/* static const char sccsid[] = "@(#)dummy.cc 1.2 5/9/94"; */ - -/* A dummy file to include wx.h. If precompiling wx.h, I - * always start by compiling this and producing the PCH file. - * Then subsequent source files use the PCH file. - * - * If precompiling wx.h for wxWindows and derived apps, - * link dummy.obj with your program (the MSC 7 linker complains otherwise). - * - * This is the only convenient way I found to use precompiled headers - * under MSC 7. - * - * This will produce a big PCH file. - */ - - - -#if defined(__BORLANDC__) -#if !(defined(__WIN32__) || defined(__NT__) || defined(__WIN32__)) -#pragma hdrfile "c:\wx\src\msw\wx.pch" -#endif - -#pragma hdrstart -#endif - -#include "wx/wxprec.h" -#include "windows.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -// Foils optimizations in Visual C++ (see also app.cpp). Without it, -// dummy.obj isn't linked and we get a linker error. -#if defined(_MSC_VER) -char wxDummyChar=0; -#endif - -#if defined(WXUSINGDLL) - -// NT defines APIENTRY, 3.x not -#if !defined(APIENTRY) -#define APIENTRY FAR PASCAL -#endif - -#ifdef __WATCOMC__ -int PASCAL -#else -int APIENTRY -#endif - - WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR m_lpCmdLine, - int nCmdShow ) -{ - return wxEntry((WXHINSTANCE) hInstance, (WXHINSTANCE) hPrevInstance, m_lpCmdLine, nCmdShow); -} -#endif - - diff --git a/src/msw/dummydll.cpp b/src/msw/dummydll.cpp deleted file mode 100644 index 94d3a94a5f..0000000000 --- a/src/msw/dummydll.cpp +++ /dev/null @@ -1,25 +0,0 @@ -/* - * File: dummydll.cc - * Purpose: - * Author: Julian Smart - * Created: 1993 - * Updated: - * Copyright: (c) 1993, AIAI, University of Edinburgh - */ - -/* static const char sccsid[] = "@(#)dummydll.cc 1.2 5/9/94"; */ - -/* - * A dummy file to include wx.h. If precompiling wx.h, I - * always start by compiling this and producing the PCH file. - * Then subsequent source files use the PCH file. - */ - -#include "wx/wxprec.h" - -// Foils optimizations in Visual C++ (see also app.cpp). Without it, -// dummy.obj isn't linked and we get a linker error. -#if defined(_MSC_VER) && defined(__WIN16__) -char wxDummyChar=0; -#endif - diff --git a/src/msw/filedlg.cpp b/src/msw/filedlg.cpp deleted file mode 100644 index c596792816..0000000000 --- a/src/msw/filedlg.cpp +++ /dev/null @@ -1,378 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: filedlg.cpp -// Purpose: wxFileDialog -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ - #pragma implementation "filedlg.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ - #pragma hdrstop -#endif - -#ifndef WX_PRECOMP - #include - #include "wx/defs.h" - #include "wx/utils.h" - #include "wx/msgdlg.h" - #include "wx/dialog.h" - #include "wx/filedlg.h" - #include "wx/intl.h" -#endif - -#include - -#if !defined(__WIN32__) || defined(__SALFORDC__) - #include -#endif - -#include "wx/msw/private.h" - -#include -#include -#include - -#if !USE_SHARED_LIBRARY - IMPLEMENT_CLASS(wxFileDialog, wxDialog) -#endif - -wxString wxFileSelector(const char *title, - const char *defaultDir, - const char *defaultFileName, - const char *defaultExtension, - const char *filter, - int flags, - wxWindow *parent, - int x, int y) -{ - // In the original implementation, defaultExtension is passed to the - // lpstrDefExt member of OPENFILENAME. This extension, if non-NULL, is - // appended to the filename if the user fails to type an extension. The new - // implementation (taken from wxFileSelectorEx) appends the extension - // automatically, by looking at the filter specification. In fact this - // should be better than the native Microsoft implementation because - // Windows only allows *one* default extension, whereas here we do the - // right thing depending on the filter the user has chosen. - - // If there's a default extension specified but no filter, we create a - // suitable filter. - - wxString filter2; - if ( defaultExtension && !filter ) - filter2 = wxString("*.") + defaultExtension; - else if ( filter ) - filter2 = filter; - - wxString defaultDirString; - if (defaultDir) - defaultDirString = defaultDir; - - wxString defaultFilenameString; - if (defaultFileName) - defaultFilenameString = defaultFileName; - - wxFileDialog fileDialog(parent, title, defaultDirString, - defaultFilenameString, filter2, - flags, wxPoint(x, y)); - if( Strlen(defaultExtension) != 0 ) - { - int filterFind = 1, - filterIndex = 0; - - for( unsigned int i = 0; i < filter2.Len(); i++ ) - { - if( filter2.GetChar(i) == '|' ) - { - // save the start index of the new filter - unsigned int is = i++; - filterIndex++; - - // find the end of the filter - for( ; i < filter2.Len(); i++ ) - { - if(filter2[i] == '|') - break; - } - - if( i-is-1 > 0 && is+1 < filter2.Len() ) - { - if( filter2.Mid(is+1,i-is-1).Contains(defaultExtension) ) -// if( filter2.Mid(is+1,i-is-1) == defaultExtension ) - { - filterFind = filterIndex; - break; - } - } - } - } - - fileDialog.SetFilterIndex(filterFind); - } - - if ( fileDialog.ShowModal() == wxID_OK ) - { - strcpy(wxBuffer, (const char *)fileDialog.GetPath()); - return wxBuffer; - } - else - return wxGetEmptyString(); -} - -# if __BORLANDC__ -# include // for MAXPATH etc. ( Borland 3.1 ) -# endif - -# ifndef MAXPATH -# define MAXPATH 400 -# endif - -# ifndef MAXDRIVE -# define MAXDRIVE 3 -# endif - -# ifndef MAXFILE -# define MAXFILE 9 -# endif - -# ifndef MAXEXT -# define MAXEXT 5 -# endif - - -wxString wxFileSelectorEx(const char *title, - const char *defaultDir, - const char *defaultFileName, - int* defaultFilterIndex, - const char *filter, - int flags, - wxWindow* parent, - int x, - int y) - -{ - wxFileDialog fileDialog(parent, title ? title : "", defaultDir ? defaultDir : "", - defaultFileName ? defaultFileName : "", filter ? filter : "", flags, wxPoint(x, y)); - - if ( fileDialog.ShowModal() == wxID_OK ) - { - *defaultFilterIndex = fileDialog.GetFilterIndex(); - strcpy(wxBuffer, (const char *)fileDialog.GetPath()); - return wxBuffer; - } - else - return wxGetEmptyString(); -} - -wxFileDialog::wxFileDialog(wxWindow *parent, const wxString& message, - const wxString& defaultDir, const wxString& defaultFileName, const wxString& wildCard, - long style, const wxPoint& pos) -{ - m_message = message; - m_dialogStyle = style; - m_parent = parent; - m_path = ""; - m_fileName = defaultFileName; - m_dir = defaultDir; - m_wildCard = wildCard; - m_filterIndex = 1; -} - -int wxFileDialog::ShowModal(void) -{ - HWND hWnd = 0; - if (m_parent) hWnd = (HWND) m_parent->GetHWND(); - - static char fileNameBuffer [ MAXPATH ]; // the file-name - char titleBuffer [ MAXFILE+1+MAXEXT ]; // the file-name, without path - - *fileNameBuffer = '\0'; - *titleBuffer = '\0'; - - long msw_flags = 0; - if ( (m_dialogStyle & wxHIDE_READONLY) || (m_dialogStyle & wxSAVE) ) - msw_flags |= OFN_HIDEREADONLY; - if ( m_dialogStyle & wxFILE_MUST_EXIST ) - msw_flags |= OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST; - - OPENFILENAME of; - memset(&of, 0, sizeof(OPENFILENAME)); - - of.lpstrCustomFilter = NULL; // system should not save custom filter - of.nMaxCustFilter = 0L; - - of.nFileOffset = 0; // 0-based pointer to filname in lpstFile - of.nFileExtension = 0; // 0-based pointer to extension in lpstrFile - of.lpstrDefExt = NULL; // no default extension - - of.lStructSize = sizeof(OPENFILENAME); - of.hwndOwner = hWnd; - of.lpstrTitle = (char *)(const char *)m_message; - - - of.lpstrFileTitle = titleBuffer; - of.nMaxFileTitle = MAXFILE + 1 + MAXEXT; // Windows 3.0 and 3.1 - - of.lpstrInitialDir = (const char *) m_dir; - - of.Flags = msw_flags; - - - - //=== Like Alejandro Sierra's wildcard modification >>=================== - /* - In wxFileSelector you can put, instead of a single wild_card, - pairs of strings separated by '|'. - The first string is a description, and the - second is the wild card. You can put any number of pairs. - - eg. "description1 (*.ex1)|*.ex1|description2 (*.ex2)|*.ex2" - - If you put a single wild card, it works as before the modification. - */ - //======================================================================= - - wxString theFilter = ( Strlen(m_wildCard) == 0 ) ? wxString("*.*") : m_wildCard; - wxString filterBuffer; - - if ( !strchr( theFilter, '|' ) ) { // only one filter ==> default text - filterBuffer.Printf(_("Files (%s)|%s"), - theFilter.c_str(), theFilter.c_str()); - } - else { // more then one filter - filterBuffer = theFilter; - - } - - filterBuffer += "|"; - // Replace | with \0 - for ( unsigned int i = 0; i < filterBuffer.Len(); i++ ) { - if ( filterBuffer.GetChar(i) == '|' ) { - filterBuffer[i] = '\0'; - } - } - - of.lpstrFilter = (LPSTR)(const char *)filterBuffer; - of.nFilterIndex = m_filterIndex; - - //=== Setting defaultFileName >>========================================= - - strncpy( fileNameBuffer, (const char *)m_fileName, MAXPATH-1 ); - fileNameBuffer[ MAXPATH-1 ] = '\0'; - - of.lpstrFile = fileNameBuffer; // holds returned filename - of.nMaxFile = MAXPATH; - - //== Execute FileDialog >>================================================= - - bool success = (m_dialogStyle & wxSAVE) ? (GetSaveFileName(&of) != 0) - : (GetOpenFileName(&of) != 0); - - if ( success ) - { - const char* extension = NULL; - - //=== Adding the correct extension >>================================= - - m_filterIndex = (int)of.nFilterIndex; - - if ( of.nFileExtension && fileNameBuffer[ of.nFileExtension-1] != '.' ) - { // user has typed an filename - // without an extension: - - int maxFilter = (int)(of.nFilterIndex*2L-1L); - extension = filterBuffer; - - for( int i = 0; i < maxFilter; i++ ) { // get extension - extension = extension + strlen( extension ) +1; - } - - extension = strrchr( extension, '.' ); - if ( extension // != "blabla" - && !strrchr( extension, '*' ) // != "blabla.*" - && !strrchr( extension, '?' ) // != "blabla.?" - && extension[1] // != "blabla." - && extension[1] != ' ' ) // != "blabla. " - { - // now concat extension to the fileName: - m_fileName = wxString(fileNameBuffer) + extension; - - int len = strlen( fileNameBuffer ); - strncpy( fileNameBuffer + len, extension, MAXPATH - len ); - fileNameBuffer[ MAXPATH -1 ] = '\0'; - } - } - - m_path = fileNameBuffer; - m_fileName = wxFileNameFromPath(fileNameBuffer); - - - //=== Simulating the wxOVERWRITE_PROMPT >>============================ - - if ( (m_dialogStyle & wxOVERWRITE_PROMPT) && - ::wxFileExists( fileNameBuffer ) ) - { - wxString messageText; - messageText.Printf(_("Replace file '%s'?"), fileNameBuffer); - - if ( wxMessageBox(messageText, m_message, wxYES_NO ) != wxYES ) - { - success = FALSE; - } - } - - } // END: if ( success ) - - return (success ? wxID_OK : wxID_CANCEL) ; - -} - -// Generic file load/save dialog (for internal use only) -static -wxString wxDefaultFileSelector(bool load, - const char *what, - const char *extension, - const char *default_name, - wxWindow *parent) -{ - wxString prompt; - wxString str = load ? _("Load %s file") : _("Save %s file"); - prompt.Printf(str, what); - - const char *ext = extension; - if (*ext == '.') - ext++; - - wxString wild; - wild.Printf("*.%s", ext); - - return wxFileSelector (prompt, NULL, default_name, ext, wild, 0, parent); -} - -// Generic file load dialog -WXDLLEXPORT wxString wxLoadFileSelector(const char *what, - const char *extension, - const char *default_name, - wxWindow *parent) -{ - return wxDefaultFileSelector(TRUE, what, extension, default_name, parent); -} - -// Generic file save dialog -WXDLLEXPORT wxString wxSaveFileSelector(const char *what, - const char *extension, - const char *default_name, - wxWindow *parent) -{ - return wxDefaultFileSelector(FALSE, what, extension, default_name, parent); -} - diff --git a/src/msw/font.cpp b/src/msw/font.cpp deleted file mode 100644 index 1ef70b48b4..0000000000 --- a/src/msw/font.cpp +++ /dev/null @@ -1,382 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: font.cpp -// Purpose: wxFont class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "font.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include -#include "wx/setup.h" -#include "wx/list.h" -#include "wx/utils.h" -#include "wx/app.h" -#include "wx/font.h" -#endif - -#include "wx/msw/private.h" -#include - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxFont, wxGDIObject) - -#if wxUSE_PORTABLE_FONTS_IN_MSW -IMPLEMENT_DYNAMIC_CLASS(wxFontNameDirectory, wxObject) -#endif - -#endif - -wxFontRefData::wxFontRefData(void) -{ - m_style = 0; - m_temporary = FALSE; - m_pointSize = 0; - m_family = 0; - m_fontId = 0; - m_style = 0; - m_weight = 0; - m_underlined = 0; - m_faceName = ""; - m_hFont = 0; -} - -wxFontRefData::wxFontRefData(const wxFontRefData& data) -{ - m_style = data.m_style; - m_temporary = FALSE; - m_pointSize = data.m_pointSize; - m_family = data.m_family; - m_fontId = data.m_fontId; - m_style = data.m_style; - m_weight = data.m_weight; - m_underlined = data.m_underlined; - m_faceName = data.m_faceName; - m_hFont = 0; -} - -wxFontRefData::~wxFontRefData(void) -{ - if ( m_hFont ) - ::DeleteObject((HFONT) m_hFont); -} - -wxFont::wxFont(void) -{ - if ( wxTheFontList ) - wxTheFontList->Append(this); -} - -/* Constructor for a font. Note that the real construction is done - * in wxDC::SetFont, when information is available about scaling etc. - */ -wxFont::wxFont(int pointSize, int family, int style, int weight, bool underlined, const wxString& faceName) -{ - Create(pointSize, family, style, weight, underlined, faceName); - - if ( wxTheFontList ) - wxTheFontList->Append(this); -} - -bool wxFont::Create(int pointSize, int family, int style, int weight, bool underlined, const wxString& faceName) -{ - UnRef(); - m_refData = new wxFontRefData; - - M_FONTDATA->m_family = family; - M_FONTDATA->m_style = style; - M_FONTDATA->m_weight = weight; - M_FONTDATA->m_pointSize = pointSize; - M_FONTDATA->m_underlined = underlined; - M_FONTDATA->m_faceName = faceName; - - RealizeResource(); - - return TRUE; -} - -wxFont::~wxFont() -{ - if (wxTheFontList) - wxTheFontList->DeleteObject(this); -} - -bool wxFont::RealizeResource(void) -{ - if (M_FONTDATA && !M_FONTDATA->m_hFont) - { - BYTE ff_italic; - int ff_weight = 0; - int ff_family = 0; - wxString ff_face(""); - - switch (M_FONTDATA->m_family) - { - case wxSCRIPT: ff_family = FF_SCRIPT ; - ff_face = "Script" ; - break ; - case wxDECORATIVE: ff_family = FF_DECORATIVE; - break; - case wxROMAN: ff_family = FF_ROMAN; - ff_face = "Times New Roman" ; - break; - case wxTELETYPE: - case wxMODERN: ff_family = FF_MODERN; - ff_face = "Courier New" ; - break; - case wxSWISS: ff_family = FF_SWISS; - ff_face = "Arial"; - break; - case wxDEFAULT: - default: ff_family = FF_SWISS; - ff_face = "Arial" ; - } - - if (M_FONTDATA->m_style == wxITALIC || M_FONTDATA->m_style == wxSLANT) - ff_italic = 1; - else - ff_italic = 0; - - if (M_FONTDATA->m_weight == wxNORMAL) - ff_weight = FW_NORMAL; - else if (M_FONTDATA->m_weight == wxLIGHT) - ff_weight = FW_LIGHT; - else if (M_FONTDATA->m_weight == wxBOLD) - ff_weight = FW_BOLD; - - const char* pzFace = (const char*) ff_face; - if (!M_FONTDATA->m_faceName.IsNull()) - pzFace = (const char*) M_FONTDATA->m_faceName ; - -/* Always calculate fonts using the screen DC (is this the best strategy?) - * There may be confusion if a font is selected into a printer - * DC (say), because the height will be calculated very differently. - // What sort of display is it? - int technology = ::GetDeviceCaps(dc, TECHNOLOGY); - - int nHeight; - - if (technology != DT_RASDISPLAY && technology != DT_RASPRINTER) - { - // Have to get screen DC Caps, because a metafile will return 0. - HDC dc2 = ::GetDC(NULL); - nHeight = M_FONTDATA->m_pointSize*GetDeviceCaps(dc2, LOGPIXELSY)/72; - ::ReleaseDC(NULL, dc2); - } - else - { - nHeight = M_FONTDATA->m_pointSize*GetDeviceCaps(dc, LOGPIXELSY)/72; - } -*/ - // Have to get screen DC Caps, because a metafile will return 0. - HDC dc2 = ::GetDC(NULL); - int ppInch = ::GetDeviceCaps(dc2, LOGPIXELSY); - ::ReleaseDC(NULL, dc2); - - // New behaviour: apparently ppInch varies according to - // Large/Small Fonts setting in Windows. This messes - // up fonts. So, set ppInch to a constant 96 dpi. - ppInch = 96; - -#if FONT_SIZE_COMPATIBILITY - // Incorrect, but compatible with old wxWindows behaviour - int nHeight = (M_FONTDATA->m_pointSize*ppInch/72); -#else - // Correct for Windows compatibility - int nHeight = - (M_FONTDATA->m_pointSize*ppInch/72); -#endif - - bool ff_underline = M_FONTDATA->m_underlined; - - M_FONTDATA->m_hFont = (WXHFONT) CreateFont(nHeight, 0, 0, 0,ff_weight,ff_italic,(BYTE)ff_underline, - 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, - PROOF_QUALITY, DEFAULT_PITCH | ff_family, pzFace); -#ifdef WXDEBUG_CREATE - if (m_hFont==NULL) wxError("Cannot create font","Internal Error") ; -#endif - return (M_FONTDATA->m_hFont != (WXHFONT) NULL); - } - return FALSE; -} - -bool wxFont::FreeResource(bool force) -{ - if (M_FONTDATA && M_FONTDATA->m_hFont) - { - ::DeleteObject((HFONT) M_FONTDATA->m_hFont); - M_FONTDATA->m_hFont = 0; - return TRUE; - } - return FALSE; -} - -WXHANDLE wxFont::GetResourceHandle() -{ - if ( !M_FONTDATA ) - return 0; - else - return (WXHANDLE)M_FONTDATA->m_hFont ; -} - -bool wxFont::IsFree() -{ - return (M_FONTDATA && (M_FONTDATA->m_hFont == 0)); -} - -void wxFont::Unshare() -{ - // Don't change shared data - if (!m_refData) - { - m_refData = new wxFontRefData(); - } - else - { - wxFontRefData* ref = new wxFontRefData(*(wxFontRefData*)m_refData); - UnRef(); - m_refData = ref; - } -} - -void wxFont::SetPointSize(int pointSize) -{ - Unshare(); - - M_FONTDATA->m_pointSize = pointSize; - - RealizeResource(); -} - -void wxFont::SetFamily(int family) -{ - Unshare(); - - M_FONTDATA->m_family = family; - - RealizeResource(); -} - -void wxFont::SetStyle(int style) -{ - Unshare(); - - M_FONTDATA->m_style = style; - - RealizeResource(); -} - -void wxFont::SetWeight(int weight) -{ - Unshare(); - - M_FONTDATA->m_weight = weight; - - RealizeResource(); -} - -void wxFont::SetFaceName(const wxString& faceName) -{ - Unshare(); - - M_FONTDATA->m_faceName = faceName; - - RealizeResource(); -} - -void wxFont::SetUnderlined(bool underlined) -{ - Unshare(); - - M_FONTDATA->m_underlined = underlined; - - RealizeResource(); -} - -wxString wxFont::GetFamilyString(void) const -{ - wxString fam(""); - switch (GetFamily()) - { - case wxDECORATIVE: - fam = "wxDECORATIVE"; - break; - case wxROMAN: - fam = "wxROMAN"; - break; - case wxSCRIPT: - fam = "wxSCRIPT"; - break; - case wxSWISS: - fam = "wxSWISS"; - break; - case wxMODERN: - fam = "wxMODERN"; - break; - case wxTELETYPE: - fam = "wxTELETYPE"; - break; - default: - fam = "wxDEFAULT"; - break; - } - return fam; -} - -wxString wxFont::GetFaceName(void) const -{ - wxString str(""); - if (M_FONTDATA) - str = M_FONTDATA->m_faceName ; - return str; -} - -wxString wxFont::GetStyleString(void) const -{ - wxString styl(""); - switch (GetStyle()) - { - case wxITALIC: - styl = "wxITALIC"; - break; - case wxSLANT: - styl = "wxSLANT"; - break; - default: - styl = "wxNORMAL"; - break; - } - return styl; -} - -wxString wxFont::GetWeightString(void) const -{ - wxString w(""); - switch (GetWeight()) - { - case wxBOLD: - w = "wxBOLD"; - break; - case wxLIGHT: - w = "wxLIGHT"; - break; - default: - w = "wxNORMAL"; - break; - } - return w; -} - diff --git a/src/msw/fontdlg.cpp b/src/msw/fontdlg.cpp deleted file mode 100644 index 69a1daa467..0000000000 --- a/src/msw/fontdlg.cpp +++ /dev/null @@ -1,281 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: fontdlg.cpp -// Purpose: wxFontDialog class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "fontdlg.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include -#include "wx/defs.h" -#include "wx/utils.h" -#include "wx/dialog.h" -#endif - -#include "wx/fontdlg.h" - -#include - -#if !defined(__WIN32__) || defined(__SALFORDC__) -#include -#endif - -#include "wx/msw/private.h" -#include "wx/cmndata.h" - -#include -#include -#include - -#define wxDIALOG_DEFAULT_X 300 -#define wxDIALOG_DEFAULT_Y 300 - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxFontDialog, wxDialog) -#endif - -/* - * wxFontDialog - */ - - -wxFontDialog::wxFontDialog(void) -{ - m_dialogParent = NULL; -} - -wxFontDialog::wxFontDialog(wxWindow *parent, wxFontData *data) -{ - Create(parent, data); -} - -bool wxFontDialog::Create(wxWindow *parent, wxFontData *data) -{ - m_dialogParent = parent; - - if (data) - m_fontData = *data; - return TRUE; -} - -int wxFontDialog::ShowModal(void) -{ - CHOOSEFONT chooseFontStruct; - LOGFONT logFont; - - DWORD flags = CF_TTONLY | CF_SCREENFONTS | CF_NOSIMULATIONS; - - memset(&chooseFontStruct, 0, sizeof(CHOOSEFONT)); - - chooseFontStruct.lStructSize = sizeof(CHOOSEFONT); - chooseFontStruct.hwndOwner = (HWND) (m_dialogParent ? (HWND) m_dialogParent->GetHWND() : NULL); - chooseFontStruct.lpLogFont = &logFont; - - if (m_fontData.initialFont.Ok()) - { - flags |= CF_INITTOLOGFONTSTRUCT; - wxFillLogFont(&logFont, & m_fontData.initialFont); - } - - chooseFontStruct.iPointSize = 0; - chooseFontStruct.rgbColors = RGB((BYTE)m_fontData.fontColour.Red(), (BYTE)m_fontData.fontColour.Green(), (BYTE)m_fontData.fontColour.Blue()); - - if (!m_fontData.GetAllowSymbols()) - flags |= CF_ANSIONLY; - if (m_fontData.GetEnableEffects()) - flags |= CF_EFFECTS; - if (m_fontData.GetShowHelp()) - flags |= CF_SHOWHELP; - if (!(m_fontData.minSize == 0 && m_fontData.maxSize == 0)) - { - chooseFontStruct.nSizeMin = m_fontData.minSize; - chooseFontStruct.nSizeMax = m_fontData.maxSize; - flags |= CF_LIMITSIZE; - } - - chooseFontStruct.Flags = flags; - chooseFontStruct.nFontType = SCREEN_FONTTYPE; - bool success = (ChooseFont(&(chooseFontStruct)) != 0); - - // Restore values - if (success) - { - m_fontData.fontColour.Set(GetRValue(chooseFontStruct.rgbColors), GetGValue(chooseFontStruct.rgbColors), - GetBValue(chooseFontStruct.rgbColors)); - m_fontData.chosenFont = wxCreateFontFromLogFont(&logFont); - } - - return success ? wxID_OK : wxID_CANCEL; -} - -void wxFillLogFont(LOGFONT *logFont, wxFont *font) -{ - BYTE ff_italic; - int ff_weight = 0; - int ff_family = 0; - wxString ff_face(""); - - switch (font->GetFamily()) - { - case wxSCRIPT: ff_family = FF_SCRIPT ; - ff_face = "Script" ; - break ; - case wxDECORATIVE: ff_family = FF_DECORATIVE; - break; - case wxROMAN: ff_family = FF_ROMAN; - ff_face = "Times New Roman" ; - break; - case wxTELETYPE: - case wxMODERN: ff_family = FF_MODERN; - ff_face = "Courier New" ; - break; - case wxSWISS: ff_family = FF_SWISS; - ff_face = "Arial"; - break; - case wxDEFAULT: - default: ff_family = FF_SWISS; - ff_face = "MS Sans Serif" ; - } - - if (font->GetStyle() == wxITALIC || font->GetStyle() == wxSLANT) - ff_italic = 1; - else - ff_italic = 0; - - if (font->GetWeight() == wxNORMAL) - ff_weight = FW_NORMAL; - else if (font->GetWeight() == wxLIGHT) - ff_weight = FW_LIGHT; - else if (font->GetWeight() == wxBOLD) - ff_weight = FW_BOLD; - - // Have to get screen DC Caps, because a metafile will return 0. - HDC dc2 = ::GetDC(NULL); - int ppInch = ::GetDeviceCaps(dc2, LOGPIXELSY); - ::ReleaseDC(NULL, dc2); - - // New behaviour: apparently ppInch varies according to - // Large/Small Fonts setting in Windows. This messes - // up fonts. So, set ppInch to a constant 96 dpi. - ppInch = 96; - -#if FONT_SIZE_COMPATIBILITY - // Incorrect, but compatible with old wxWindows behaviour - int nHeight = (font->GetPointSize()*ppInch/72); -#else - // Correct for Windows compatibility - int nHeight = - (font->GetPointSize()*ppInch/72); -#endif - - bool ff_underline = font->GetUnderlined(); - - ff_face = font->GetFaceName(); - - logFont->lfHeight = nHeight; - logFont->lfWidth = 0; - logFont->lfEscapement = 0; - logFont->lfOrientation = 0; - logFont->lfWeight = ff_weight; - logFont->lfItalic = ff_italic; - logFont->lfUnderline = (BYTE)ff_underline; - logFont->lfStrikeOut = 0; - logFont->lfCharSet = ANSI_CHARSET; - logFont->lfOutPrecision = OUT_DEFAULT_PRECIS; - logFont->lfClipPrecision = CLIP_DEFAULT_PRECIS; - logFont->lfQuality = PROOF_QUALITY; - logFont->lfPitchAndFamily = DEFAULT_PITCH | ff_family; - strcpy(logFont->lfFaceName, ff_face); -} - -wxFont wxCreateFontFromLogFont(LOGFONT *logFont) // , bool createNew) -{ - int fontFamily = wxSWISS; - int fontStyle = wxNORMAL; - int fontWeight = wxNORMAL; - int fontPoints = 10; - bool fontUnderline = FALSE; - char *fontFace = NULL; - -// int lfFamily = logFont->lfPitchAndFamily & 0xF0; - int lfFamily = logFont->lfPitchAndFamily; - if (lfFamily & FIXED_PITCH) - lfFamily -= FIXED_PITCH; - if (lfFamily & VARIABLE_PITCH) - lfFamily -= VARIABLE_PITCH; - - switch (lfFamily) - { - case FF_ROMAN: - fontFamily = wxROMAN; - break; - case FF_SWISS: - fontFamily = wxSWISS; - break; - case FF_SCRIPT: - fontFamily = wxSCRIPT; - break; - case FF_MODERN: - fontFamily = wxMODERN; - break; - case FF_DECORATIVE: - fontFamily = wxDECORATIVE; - break; - default: - fontFamily = wxSWISS; - break; - } - switch (logFont->lfWeight) - { - case FW_LIGHT: - fontWeight = wxLIGHT; - break; - case FW_NORMAL: - fontWeight = wxNORMAL; - break; - case FW_BOLD: - fontWeight = wxBOLD; - break; - default: - fontWeight = wxNORMAL; - break; - } - if (logFont->lfItalic) - fontStyle = wxITALIC; - else - fontStyle = wxNORMAL; - - if (logFont->lfUnderline) - fontUnderline = TRUE; - - if (logFont->lfFaceName) - fontFace = logFont->lfFaceName; - - HDC dc2 = ::GetDC(NULL); - - if ( logFont->lfHeight < 0 ) - logFont->lfHeight = - logFont->lfHeight; - fontPoints = abs(72*logFont->lfHeight/GetDeviceCaps(dc2, LOGPIXELSY)); - ::ReleaseDC(NULL, dc2); - -// if ( createNew ) - return wxFont(fontPoints, fontFamily, fontStyle, fontWeight, fontUnderline, fontFace); -// else -// return wxTheFontList->FindOrCreateFont(fontPoints, fontFamily, fontStyle, fontWeight, fontUnderline, fontFace); -} - - diff --git a/src/msw/frame.cpp b/src/msw/frame.cpp deleted file mode 100644 index 090bf260e2..0000000000 --- a/src/msw/frame.cpp +++ /dev/null @@ -1,1063 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: frame.cpp -// Purpose: wxFrame -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "frame.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/setup.h" -#include "wx/frame.h" -#include "wx/menu.h" -#include "wx/app.h" -#include "wx/utils.h" -#include "wx/dialog.h" -#include "wx/settings.h" -#include "wx/dcclient.h" -#endif - -#include "wx/msw/private.h" -#include "wx/statusbr.h" -#include "wx/toolbar.h" -#include "wx/menuitem.h" - -#ifdef LoadAccelerators -#undef LoadAccelerators -#endif - -#if wxUSE_NATIVE_STATUSBAR -#include -#endif - -extern wxList wxModelessWindows; -extern wxList WXDLLEXPORT wxPendingDelete; -extern char wxFrameClassName[]; -extern wxMenu *wxCurrentPopupMenu; - -#if !USE_SHARED_LIBRARY -BEGIN_EVENT_TABLE(wxFrame, wxWindow) - EVT_SIZE(wxFrame::OnSize) - EVT_ACTIVATE(wxFrame::OnActivate) - EVT_MENU_HIGHLIGHT_ALL(wxFrame::OnMenuHighlight) - EVT_SYS_COLOUR_CHANGED(wxFrame::OnSysColourChanged) - EVT_IDLE(wxFrame::OnIdle) - EVT_CLOSE(wxFrame::OnCloseWindow) -END_EVENT_TABLE() - -IMPLEMENT_DYNAMIC_CLASS(wxFrame, wxWindow) -#endif - -#if wxUSE_NATIVE_STATUSBAR -bool wxFrame::m_useNativeStatusBar = TRUE; -#else -bool wxFrame::m_useNativeStatusBar = FALSE; -#endif - -wxFrame::wxFrame(void) -{ - m_frameToolBar = NULL ; - m_frameMenuBar = NULL; - m_frameStatusBar = NULL; - - m_windowParent = NULL; - m_iconized = FALSE; -} - -bool wxFrame::Create(wxWindow *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - if (!parent) - wxTopLevelWindows.Append(this); - - SetName(name); -// m_modalShowing = FALSE; - m_windowStyle = style; - m_frameMenuBar = NULL; - m_frameToolBar = NULL ; - m_frameStatusBar = NULL; - - SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE)); - -// m_icon = NULL; - if ( id > -1 ) - m_windowId = id; - else - m_windowId = (int)NewControlId(); - - if (parent) parent->AddChild(this); - - int x = pos.x; - int y = pos.y; - int width = size.x; - int height = size.y; - - m_iconized = FALSE; - - // we pass NULL as parent to MSWCreate because frames with parents behave - // very strangely under Win95 shell - MSWCreate(m_windowId, NULL, wxFrameClassName, this, title, - x, y, width, height, style); - - wxModelessWindows.Append(this); - return TRUE; -} - -wxFrame::~wxFrame(void) -{ - m_isBeingDeleted = TRUE; - wxTopLevelWindows.DeleteObject(this); - - if (m_frameStatusBar) - delete m_frameStatusBar; - if (m_frameMenuBar) - delete m_frameMenuBar; - -/* New behaviour March 1998: check if it's the last top-level window */ -// if (wxTheApp && (this == wxTheApp->GetTopWindow())) - - if (wxTheApp && (wxTopLevelWindows.Number() == 0)) - { - wxTheApp->SetTopWindow(NULL); - - if (wxTheApp->GetExitOnFrameDelete()) - { - PostQuitMessage(0); - } - } - - wxModelessWindows.DeleteObject(this); - - // For some reason, wxWindows can activate another task altogether - // when a frame is destroyed after a modal dialog has been invoked. - // Try to bring the parent to the top. - if (GetParent() && GetParent()->GetHWND()) - ::BringWindowToTop((HWND) GetParent()->GetHWND()); -} - -WXHMENU wxFrame::GetWinMenu(void) const -{ - return m_hMenu; -} - -// Get size *available for subwindows* i.e. excluding menu bar, toolbar etc. -void wxFrame::GetClientSize(int *x, int *y) const -{ - RECT rect; - GetClientRect((HWND) GetHWND(), &rect); - - if ( GetStatusBar() ) - { - int statusX, statusY; - GetStatusBar()->GetClientSize(&statusX, &statusY); - rect.bottom -= statusY; - } - - wxPoint pt(GetClientAreaOrigin()); - rect.bottom -= pt.y; - rect.right -= pt.x; - - *x = rect.right; - *y = rect.bottom; -} - -// Set the client size (i.e. leave the calculation of borders etc. -// to wxWindows) -void wxFrame::SetClientSize(int width, int height) -{ - HWND hWnd = (HWND) GetHWND(); - - RECT rect; - GetClientRect(hWnd, &rect); - - RECT rect2; - GetWindowRect(hWnd, &rect2); - - // Find the difference between the entire window (title bar and all) - // and the client area; add this to the new client size to move the - // window - int actual_width = rect2.right - rect2.left - rect.right + width; - int actual_height = rect2.bottom - rect2.top - rect.bottom + height; - - if ( GetStatusBar() ) - { - int statusX, statusY; - GetStatusBar()->GetClientSize(&statusX, &statusY); - actual_height += statusY; - } - - wxPoint pt(GetClientAreaOrigin()); - actual_width += pt.y; - actual_height += pt.x; - - POINT point; - point.x = rect2.left; - point.y = rect2.top; - - MoveWindow(hWnd, point.x, point.y, actual_width, actual_height, (BOOL)TRUE); - - wxSizeEvent event(wxSize(width, height), m_windowId); - event.SetEventObject( this ); - GetEventHandler()->ProcessEvent(event); -} - -void wxFrame::GetSize(int *width, int *height) const -{ - RECT rect; - GetWindowRect((HWND) GetHWND(), &rect); - *width = rect.right - rect.left; - *height = rect.bottom - rect.top; -} - -void wxFrame::GetPosition(int *x, int *y) const -{ - RECT rect; - GetWindowRect((HWND) GetHWND(), &rect); - POINT point; - point.x = rect.left; - point.y = rect.top; - - *x = point.x; - *y = point.y; -} - -void wxFrame::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - int currentX, currentY; - int x1 = x; - int y1 = y; - int w1 = width; - int h1 = height; - - GetPosition(¤tX, ¤tY); - if (x == -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) - x1 = currentX; - if (y == -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) - y1 = currentY; - - int ww,hh ; - GetSize(&ww,&hh) ; - if (width == -1) w1 = ww ; - if (height==-1) h1 = hh ; - - MoveWindow((HWND) GetHWND(), x1, y1, w1, h1, (BOOL)TRUE); - - wxSizeEvent event(wxSize(width, height), m_windowId); - event.SetEventObject( this ); - GetEventHandler()->ProcessEvent(event); -} - -bool wxFrame::Show(bool show) -{ - int cshow; - if (show) - cshow = SW_SHOW; - else - cshow = SW_HIDE; - - if (!show) - { - // Try to highlight the correct window (the parent) - HWND hWndParent = 0; - if (GetParent()) - { - hWndParent = (HWND) GetParent()->GetHWND(); - if (hWndParent) - ::BringWindowToTop(hWndParent); - } - } - - ShowWindow((HWND) GetHWND(), (BOOL)cshow); - if (show) - { - BringWindowToTop((HWND) GetHWND()); - - wxActivateEvent event(wxEVT_ACTIVATE, TRUE, m_windowId); - event.SetEventObject( this ); - GetEventHandler()->ProcessEvent(event); - } - return TRUE; -} - -void wxFrame::Iconize(bool iconize) -{ - if (!iconize) - Show(TRUE); - - int cshow; - if (iconize) - cshow = SW_MINIMIZE; - else - cshow = SW_RESTORE; - ShowWindow((HWND) GetHWND(), (BOOL)cshow); - m_iconized = iconize; -} - -// Equivalent to maximize/restore in Windows -void wxFrame::Maximize(bool maximize) -{ - Show(TRUE); - int cshow; - if (maximize) - cshow = SW_MAXIMIZE; - else - cshow = SW_RESTORE; - ShowWindow((HWND) GetHWND(), cshow); - m_iconized = FALSE; -} - -bool wxFrame::IsIconized(void) const -{ - ((wxFrame *)this)->m_iconized = (::IsIconic((HWND) GetHWND()) != 0); - return m_iconized; -} - -// Is it maximized? -bool wxFrame::IsMaximized(void) const -{ - return (::IsZoomed((HWND) GetHWND()) != 0) ; -} - -void wxFrame::SetTitle(const wxString& title) -{ - SetWindowText((HWND) GetHWND(), (const char *)title); -} - -wxString wxFrame::GetTitle(void) const -{ - GetWindowText((HWND) GetHWND(), wxBuffer, 1000); - return wxString(wxBuffer); -} - -void wxFrame::SetIcon(const wxIcon& icon) -{ - m_icon = icon; -#if defined(__WIN95__) - if ( m_icon.Ok() ) - SendMessage((HWND) GetHWND(), WM_SETICON, - (WPARAM)TRUE, (LPARAM)(HICON) m_icon.GetHICON()); -#endif -} - -wxStatusBar *wxFrame::OnCreateStatusBar(int number, long style, wxWindowID id, - const wxString& name) -{ - wxStatusBar *statusBar = NULL; - -#if wxUSE_NATIVE_STATUSBAR - if (UsesNativeStatusBar()) - { - statusBar = new wxStatusBar95(this, id, style); - } - else -#endif - { - statusBar = new wxStatusBar(this, id, wxPoint(0, 0), wxSize(100, 20), - style, name); - - // Set the height according to the font and the border size - wxClientDC dc(statusBar); - dc.SetFont(statusBar->GetFont()); - - long x, y; - dc.GetTextExtent("X", &x, &y); - - int height = (int)( (y * 1.1) + 2* statusBar->GetBorderY()); - - statusBar->SetSize(-1, -1, 100, height); - } - - statusBar->SetFieldsCount(number); - return statusBar; -} - -wxStatusBar* wxFrame::CreateStatusBar(int number, long style, wxWindowID id, - const wxString& name) -{ - // VZ: calling CreateStatusBar twice is an error - why anyone would do it? - wxCHECK_MSG( m_frameStatusBar == NULL, FALSE, - "recreating status bar in wxFrame" ); - - m_frameStatusBar = OnCreateStatusBar(number, style, id, - name); - if ( m_frameStatusBar ) - { - PositionStatusBar(); - return m_frameStatusBar; - } - else - return NULL; -} - -void wxFrame::SetStatusText(const wxString& text, int number) -{ - wxCHECK_RET( m_frameStatusBar != NULL, "no statusbar to set text for" ); - - m_frameStatusBar->SetStatusText(text, number); -} - -void wxFrame::SetStatusWidths(int n, const int widths_field[]) -{ - wxCHECK_RET( m_frameStatusBar != NULL, "no statusbar to set widths for" ); - - m_frameStatusBar->SetStatusWidths(n, widths_field); - PositionStatusBar(); -} - -void wxFrame::PositionStatusBar(void) -{ - // native status bar positions itself - if (m_frameStatusBar -#if wxUSE_NATIVE_STATUSBAR - && !m_frameStatusBar->IsKindOf(CLASSINFO(wxStatusBar95)) -#endif - ) - { - int w, h; - GetClientSize(&w, &h); - int sw, sh; - m_frameStatusBar->GetSize(&sw, &sh); - - // Since we wish the status bar to be directly under the client area, - // we use the adjusted sizes without using wxSIZE_NO_ADJUSTMENTS. - m_frameStatusBar->SetSize(0, h, w, sh); - } -} - -void wxFrame::SetMenuBar(wxMenuBar *menu_bar) -{ - if (!menu_bar) - { - m_frameMenuBar = NULL; - return; - } - - if (menu_bar->m_menuBarFrame) - return; - - int i; - HMENU menu = CreateMenu(); - - for (i = 0; i < menu_bar->m_menuCount; i ++) - { - HMENU popup = (HMENU)menu_bar->m_menus[i]->m_hMenu; - // - // After looking Bounds Checker result, it seems that all - // menus must be individually destroyed. So, don't reset m_hMenu, - // to allow ~wxMenu to do the job. - // - menu_bar->m_menus[i]->m_savehMenu = (WXHMENU) popup; - // Uncommenting for the moment... JACS - menu_bar->m_menus[i]->m_hMenu = 0; - AppendMenu(menu, MF_POPUP | MF_STRING, (UINT)popup, menu_bar->m_titles[i]); - } - - menu_bar->m_hMenu = (WXHMENU)menu; - if (m_frameMenuBar) - delete m_frameMenuBar; - - this->m_hMenu = (WXHMENU) menu; - - DWORD err = 0; - if (!SetMenu((HWND) GetHWND(), menu)) - { -#ifdef __WIN32__ - err = GetLastError(); -#endif - } - - m_frameMenuBar = menu_bar; - menu_bar->m_menuBarFrame = this; -} - -#if 0 -bool wxFrame::LoadAccelerators(const wxString& table) -{ - m_acceleratorTable = (WXHANDLE) -#ifdef __WIN32__ -#ifdef UNICODE - ::LoadAcceleratorsW(wxGetInstance(), (const char *)table); -#else - ::LoadAcceleratorsA(wxGetInstance(), (const char *)table); -#endif -#else - ::LoadAccelerators(wxGetInstance(), (const char *)table); -#endif - - // The above is necessary because LoadAccelerators is a macro - // which we have undefed earlier in the file to avoid confusion - // with wxFrame::LoadAccelerators. Ugh! - - return (m_acceleratorTable != (WXHANDLE) NULL); -} -#endif - -void wxFrame::Fit(void) -{ - // Work out max. size - wxNode *node = GetChildren().First(); - int max_width = 0; - int max_height = 0; - while (node) - { - // Find a child that's a subwindow, but not a dialog box. - wxWindow *win = (wxWindow *)node->Data(); - - if (!win->IsKindOf(CLASSINFO(wxFrame)) && - !win->IsKindOf(CLASSINFO(wxDialog))) - { - int width, height; - int x, y; - win->GetSize(&width, &height); - win->GetPosition(&x, &y); - - if ((x + width) > max_width) - max_width = x + width; - if ((y + height) > max_height) - max_height = y + height; - } - node = node->Next(); - } - SetClientSize(max_width, max_height); -} - -// Responds to colour changes, and passes event on to children. -void wxFrame::OnSysColourChanged(wxSysColourChangedEvent& event) -{ - SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE)); - Refresh(); - - if ( m_frameStatusBar ) - { - wxSysColourChangedEvent event2; - event2.SetEventObject( m_frameStatusBar ); - m_frameStatusBar->GetEventHandler()->ProcessEvent(event2); - } - - // Propagate the event to the non-top-level children - wxWindow::OnSysColourChanged(event); -} - -/* - * Frame window - * - */ - -void wxFrame::MSWCreate(int id, wxWindow *parent, const char *wclass, wxWindow *wx_win, const char *title, - int x, int y, int width, int height, long style) - -{ - m_defaultIcon = (WXHICON) (wxSTD_FRAME_ICON ? wxSTD_FRAME_ICON : wxDEFAULT_FRAME_ICON); - - // If child windows aren't properly drawn initially, WS_CLIPCHILDREN - // could be the culprit. But without it, you can get a lot of flicker. - - DWORD msflags = 0; - if ((style & wxCAPTION) == wxCAPTION) - msflags = WS_OVERLAPPED; - else - msflags = WS_POPUP; - - if (style & wxMINIMIZE_BOX) - msflags |= WS_MINIMIZEBOX; - if (style & wxMAXIMIZE_BOX) - msflags |= WS_MAXIMIZEBOX; - if (style & wxTHICK_FRAME) - msflags |= WS_THICKFRAME; - if (style & wxSYSTEM_MENU) - msflags |= WS_SYSMENU; - if ((style & wxMINIMIZE) || (style & wxICONIZE)) - msflags |= WS_MINIMIZE; - if (style & wxMAXIMIZE) - msflags |= WS_MAXIMIZE; - if (style & wxCAPTION) - msflags |= WS_CAPTION; - if (style & wxCLIP_CHILDREN) - msflags |= WS_CLIPCHILDREN; - - // Keep this in wxFrame because it saves recoding this function - // in wxTinyFrame -#if wxUSE_ITSY_BITSY - if (style & wxTINY_CAPTION_VERT) - msflags |= IBS_VERTCAPTION; - if (style & wxTINY_CAPTION_HORIZ) - msflags |= IBS_HORZCAPTION; -#else - if (style & wxTINY_CAPTION_VERT) - msflags |= WS_CAPTION; - if (style & wxTINY_CAPTION_HORIZ) - msflags |= WS_CAPTION; -#endif - if ((style & wxTHICK_FRAME) == 0) - msflags |= WS_BORDER; - - WXDWORD extendedStyle = MakeExtendedStyle(style); - -#if !defined(__WIN16__) && !defined(__SC__) - if (style & wxFRAME_TOOL_WINDOW) - extendedStyle |= WS_EX_TOOLWINDOW; -#endif - - if (style & wxSTAY_ON_TOP) - extendedStyle |= WS_EX_TOPMOST; - - m_iconized = FALSE; - wxWindow::MSWCreate(id, parent, wclass, wx_win, title, x, y, width, height, - msflags, NULL, extendedStyle); - // Seems to be necessary if we use WS_POPUP - // style instead of WS_OVERLAPPED - if (width > -1 && height > -1) - ::PostMessage((HWND) GetHWND(), WM_SIZE, SIZE_RESTORED, MAKELPARAM(width, height)); -} - -bool wxFrame::MSWOnPaint(void) -{ - RECT rect; - if (GetUpdateRect((HWND) GetHWND(), &rect, FALSE)) - { - if (m_iconized) - { - HICON the_icon; - if (m_icon.Ok()) - the_icon = (HICON) m_icon.GetHICON(); - else - the_icon = (HICON) m_defaultIcon; - - PAINTSTRUCT ps; - // Hold a pointer to the dc so long as the OnPaint() message - // is being processed - HDC cdc = BeginPaint((HWND) GetHWND(), &ps); - - // Erase background before painting or we get white background - this->MSWDefWindowProc(WM_ICONERASEBKGND,(WORD)(LONG) ps.hdc,0L); - - if (the_icon) - { - RECT rect; - GetClientRect((HWND) GetHWND(), &rect); - int icon_width = 32; - int icon_height = 32; - int icon_x = (int)((rect.right - icon_width)/2); - int icon_y = (int)((rect.bottom - icon_height)/2); - DrawIcon(cdc, icon_x, icon_y, the_icon); - } - - EndPaint((HWND) GetHWND(), &ps); - } - else - { - wxPaintEvent event(m_windowId); - event.m_eventObject = this; - if (!GetEventHandler()->ProcessEvent(event)) - Default(); - } - return 0; - } - return 1; -} - -WXHICON wxFrame::MSWOnQueryDragIcon(void) -{ - if (m_icon.Ok() && (m_icon.GetHICON() != 0)) - return m_icon.GetHICON(); - else - return m_defaultIcon; -} - -void wxFrame::MSWOnSize(int x, int y, WXUINT id) -{ - switch (id) - { - case SIZENORMAL: - // only do it it if we were iconized before, otherwise resizing the - // parent frame has a curious side effect of bringing it under it's - // children - if ( !m_iconized ) - break; - - // restore all child frames too - IconizeChildFrames(FALSE); - - // fall through - - case SIZEFULLSCREEN: - m_iconized = FALSE; - break; - - case SIZEICONIC: - // iconize all child frames too - IconizeChildFrames(TRUE); - - m_iconized = TRUE; - break; - } - - if (!m_iconized) - { - // forward WM_SIZE to status bar control -#if wxUSE_NATIVE_STATUSBAR - if (m_frameStatusBar && m_frameStatusBar->IsKindOf(CLASSINFO(wxStatusBar95))) - { - wxSizeEvent event(wxSize(x, y), m_frameStatusBar->GetId()); - event.SetEventObject( m_frameStatusBar ); - - ((wxStatusBar95 *)m_frameStatusBar)->OnSize(event); - } -#endif - - PositionStatusBar(); - PositionToolBar(); - - wxSizeEvent event(wxSize(x, y), m_windowId); - event.SetEventObject( this ); - if (!GetEventHandler()->ProcessEvent(event)) - Default(); - } -} - -bool wxFrame::MSWOnClose(void) -{ - return Close(); -} - -bool wxFrame::MSWOnCommand(WXWORD id, WXWORD cmd, WXHWND control) -{ - if (cmd == 0 || cmd == 1 ) // Can be either a menu command or an accelerator. - { - // In case it's e.g. a toolbar. - wxWindow *win = wxFindWinFromHandle(control); - if (win) - return win->MSWCommand(cmd, id); - - if (wxCurrentPopupMenu) - { - wxMenu *popupMenu = wxCurrentPopupMenu; - wxCurrentPopupMenu = NULL; - if (popupMenu->MSWCommand(cmd, id)) - return TRUE; - } - - if (GetMenuBar() && GetMenuBar()->FindItemForId(id)) - { - ProcessCommand(id); - return TRUE; - } - else - return FALSE; - } - else - return FALSE; -} - -void wxFrame::MSWOnMenuHighlight(WXWORD nItem, WXWORD nFlags, WXHMENU hSysMenu) -{ - if (nFlags == 0xFFFF && hSysMenu == 0) - { - wxMenuEvent event(wxEVT_MENU_HIGHLIGHT, -1); - event.SetEventObject( this ); - GetEventHandler()->ProcessEvent(event); - } - else if (nFlags != MF_SEPARATOR) - { - wxMenuEvent event(wxEVT_MENU_HIGHLIGHT, nItem); - event.SetEventObject( this ); - GetEventHandler()->ProcessEvent(event); - } -} - -bool wxFrame::MSWProcessMessage(WXMSG* pMsg) -{ - return FALSE; -} - -bool wxFrame::MSWTranslateMessage(WXMSG* pMsg) -{ - if (m_acceleratorTable.Ok() && - ::TranslateAccelerator((HWND) GetHWND(), (HACCEL) m_acceleratorTable.GetHACCEL(), (MSG *)pMsg)) - return TRUE; - - return FALSE; -} - -// Default resizing behaviour - if only ONE subwindow, -// resize to client rectangle size -void wxFrame::OnSize(wxSizeEvent& event) -{ - // if we're using constraints - do use them - #if wxUSE_CONSTRAINTS - if ( GetAutoLayout() ) { - Layout(); - return; - } - #endif - - // do we have _exactly_ one child? - wxWindow *child = NULL; - for ( wxNode *node = GetChildren().First(); node; node = node->Next() ) - { - wxWindow *win = (wxWindow *)node->Data(); - if ( !win->IsKindOf(CLASSINFO(wxFrame)) && - !win->IsKindOf(CLASSINFO(wxDialog)) && - (win != GetStatusBar()) && - (win != GetToolBar()) ) - { - if ( child ) - return; // it's our second subwindow - nothing to do - child = win; - } - } - - if ( child ) { - // we have exactly one child - set it's size to fill the whole frame - int clientW, clientH; - GetClientSize(&clientW, &clientH); - - int x = 0; - int y = 0; - - child->SetSize(x, y, clientW, clientH); - } -} - -// Default activation behaviour - set the focus for the first child -// subwindow found. -void wxFrame::OnActivate(wxActivateEvent& event) -{ - for(wxNode *node = GetChildren().First(); node; node = node->Next()) - { - // Find a child that's a subwindow, but not a dialog box. - wxWindow *child = (wxWindow *)node->Data(); - if (!child->IsKindOf(CLASSINFO(wxFrame)) && - !child->IsKindOf(CLASSINFO(wxDialog))) - { - child->SetFocus(); - return; - } - } -} - -// The default implementation for the close window event - calls -// OnClose for backward compatibility. - -void wxFrame::OnCloseWindow(wxCloseEvent& event) -{ - // Compatibility - if ( GetEventHandler()->OnClose() || event.GetForce()) - { - this->Destroy(); - } - else - event.Veto(TRUE); -} - -bool wxFrame::OnClose(void) -{ - return TRUE; -} - -// Destroy the window (delayed, if a managed window) -bool wxFrame::Destroy(void) -{ - if (!wxPendingDelete.Member(this)) - wxPendingDelete.Append(this); - return TRUE; -} - -// Default menu selection behaviour - display a help string -void wxFrame::OnMenuHighlight(wxMenuEvent& event) -{ - if (GetStatusBar()) - { - if (event.GetMenuId() == -1) - SetStatusText(""); - else - { - wxMenuBar *menuBar = GetMenuBar(); - if (menuBar) - { -// #ifndef __SALFORDC__ - int menuId = event.GetMenuId(); - wxString helpString; - // This causes a spurious access violation with Salford C++ - helpString = menuBar->GetHelpString(menuId); - if (helpString != "") - SetStatusText(helpString); -// #endif - } - } - } -} - -wxMenuBar *wxFrame::GetMenuBar(void) const -{ - return m_frameMenuBar; -} - -void wxFrame::Centre(int direction) -{ - int display_width, display_height, width, height, x, y; - wxDisplaySize(&display_width, &display_height); - - GetSize(&width, &height); - GetPosition(&x, &y); - - if (direction & wxHORIZONTAL) - x = (int)((display_width - width)/2); - if (direction & wxVERTICAL) - y = (int)((display_height - height)/2); - - SetSize(x, y, width, height); -} - -// Call this to simulate a menu command -void wxFrame::Command(int id) -{ - ProcessCommand(id); -} - -void wxFrame::ProcessCommand(int id) -{ - wxCommandEvent commandEvent(wxEVT_COMMAND_MENU_SELECTED, id); - commandEvent.SetInt( id ); - commandEvent.SetEventObject( this ); - - wxMenuBar *bar = GetMenuBar() ; - if (!bar) - return; - - wxMenuItem *item = bar->FindItemForId(id) ; - if (item && item->IsCheckable()) - { - bar->Check(id,!bar->Checked(id)) ; - } - GetEventHandler()->ProcessEvent(commandEvent); -} - -// Checks if there is a toolbar, and returns the first free client position -wxPoint wxFrame::GetClientAreaOrigin() const -{ - wxPoint pt(0, 0); - if (GetToolBar()) - { - int w, h; - GetToolBar()->GetSize(& w, & h); - - if (GetToolBar()->GetWindowStyleFlag() & wxTB_VERTICAL) - { - pt.x += w; - } - else - { - pt.y += h; - } - } - return pt; -} - -void wxFrame::ScreenToClient(int *x, int *y) const -{ - wxWindow::ScreenToClient(x, y); - - // We may be faking the client origin. - // So a window that's really at (0, 30) may appear - // (to wxWin apps) to be at (0, 0). - wxPoint pt(GetClientAreaOrigin()); - *x -= pt.x; - *y -= pt.y; -} - -void wxFrame::ClientToScreen(int *x, int *y) const -{ - // We may be faking the client origin. - // So a window that's really at (0, 30) may appear - // (to wxWin apps) to be at (0, 0). - wxPoint pt1(GetClientAreaOrigin()); - *x += pt1.x; - *y += pt1.y; - - wxWindow::ClientToScreen(x, y); -} - -wxToolBar* wxFrame::CreateToolBar(long style, wxWindowID id, const wxString& name) -{ - wxCHECK_MSG( m_frameToolBar == NULL, FALSE, - "recreating toolbar in wxFrame" ); - - wxToolBar* toolBar = OnCreateToolBar(style, id, name); - if (toolBar) - { - SetToolBar(toolBar); - PositionToolBar(); - return toolBar; - } - else - { - return NULL; - } -} - -wxToolBar* wxFrame::OnCreateToolBar(long style, wxWindowID id, const wxString& name) -{ - return new wxToolBar(this, id, wxDefaultPosition, wxDefaultSize, style, name); -} - -void wxFrame::PositionToolBar(void) -{ - RECT rect; - ::GetClientRect((HWND) GetHWND(), &rect); - - if ( GetStatusBar() ) - { - int statusX, statusY; - GetStatusBar()->GetClientSize(&statusX, &statusY); - rect.bottom -= statusY; - } - - if (GetToolBar()) - { - int tw, th; - GetToolBar()->GetSize(& tw, & th); - - if (GetToolBar()->GetWindowStyleFlag() & wxTB_VERTICAL) - { - // Use the 'real' MSW position - GetToolBar()->SetSize(0, 0, tw, rect.bottom, wxSIZE_NO_ADJUSTMENTS); - } - else - { - // Use the 'real' MSW position - GetToolBar()->SetSize(0, 0, rect.right, th, wxSIZE_NO_ADJUSTMENTS); - } - } -} - -// propagate our state change to all child frames -void wxFrame::IconizeChildFrames(bool bIconize) -{ - for ( wxNode *node = GetChildren().First(); node; node = node->Next() ) { - wxWindow *win = (wxWindow *)node->Data(); - if ( win->IsKindOf(CLASSINFO(wxFrame)) ) { - ((wxFrame *)win)->Iconize(bIconize); - } - } -} - diff --git a/src/msw/gauge95.cpp b/src/msw/gauge95.cpp deleted file mode 100644 index 3f934a58c0..0000000000 --- a/src/msw/gauge95.cpp +++ /dev/null @@ -1,181 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: gauge95.cpp -// Purpose: wxGauge95 class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "gauge95.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/defs.h" -#endif - -#if wxUSE_GAUGE && defined(__WIN95__) - -#include "wx/msw/gauge95.h" -#include "wx/msw/private.h" - -#if (defined(__WIN95__) && !defined(__GNUWIN32__)) || defined(__TWIN32__) -#include -#endif - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxGauge95, wxControl) -#endif - -bool wxGauge95::Create(wxWindow *parent, wxWindowID id, - int range, - const wxPoint& pos, - const wxSize& size, - long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); - SetValidator(validator); - - if (parent) parent->AddChild(this); - m_rangeMax = range; - m_gaugePos = 0; - - SetBackgroundColour(parent->GetBackgroundColour()) ; - SetForegroundColour(parent->GetForegroundColour()) ; - - m_windowStyle = style; - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - int x = pos.x; - int y = pos.y; - int width = size.x; - int height = size.y; - - long msFlags = WS_CHILD | WS_VISIBLE | WS_TABSTOP; - - HWND wx_button = - CreateWindowEx(MakeExtendedStyle(m_windowStyle), PROGRESS_CLASS, NULL, msFlags, - 0, 0, 0, 0, (HWND) parent->GetHWND(), (HMENU)m_windowId, - wxGetInstance(), NULL); - - m_hWnd = (WXHWND)wx_button; - - // Subclass again for purposes of dialog editing mode - SubclassWin((WXHWND) wx_button); - - SendMessage((HWND) GetHWND(), PBM_SETRANGE, 0, MAKELPARAM(0, range)); - - SetFont(parent->GetFont()); - - if (width == -1) - width = 50; - if (height == -1) - height = 28; - SetSize(x, y, width, height); - - ShowWindow((HWND) GetHWND(), SW_SHOW); - - return TRUE; -} - -void wxGauge95::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - int currentX, currentY; - GetPosition(¤tX, ¤tY); - int x1 = x; - int y1 = y; - int w1 = width; - int h1 = height; - - if (x == -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) - x1 = currentX; - if (y == -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) - y1 = currentY; - - AdjustForParentClientOrigin(x1, y1, sizeFlags); - - // If we're prepared to use the existing size, then... - if (width == -1 && height == -1 && ((sizeFlags & wxSIZE_AUTO) != wxSIZE_AUTO)) - { - GetSize(&w1, &h1); - } - - // Deal with default size (using -1 values) - if (w1<=0) - w1 = DEFAULT_ITEM_WIDTH; - - if (h1<=0) - h1 = DEFAULT_ITEM_HEIGHT; - - MoveWindow((HWND) GetHWND(), x1, y1, w1, h1, TRUE); -} - -void wxGauge95::SetShadowWidth(int w) -{ -} - -void wxGauge95::SetBezelFace(int w) -{ -} - -void wxGauge95::SetRange(int r) -{ - m_rangeMax = r; - - SendMessage((HWND) GetHWND(), PBM_SETRANGE, 0, MAKELPARAM(0, r)); -} - -void wxGauge95::SetValue(int pos) -{ - m_gaugePos = pos; - - SendMessage((HWND) GetHWND(), PBM_SETPOS, pos, 0); -} - -int wxGauge95::GetShadowWidth(void) const -{ - return 0; -} - -int wxGauge95::GetBezelFace(void) const -{ - return 0; -} - -int wxGauge95::GetRange(void) const -{ - return m_rangeMax; -} - -int wxGauge95::GetValue(void) const -{ - return m_gaugePos; -} - -void wxGauge95::SetForegroundColour(const wxColour& col) -{ - m_foregroundColour = col ; -} - -void wxGauge95::SetBackgroundColour(const wxColour& col) -{ - m_backgroundColour = col ; -} - -#endif // wxUSE_GAUGE diff --git a/src/msw/gaugemsw.cpp b/src/msw/gaugemsw.cpp deleted file mode 100644 index 515dbe7b5d..0000000000 --- a/src/msw/gaugemsw.cpp +++ /dev/null @@ -1,1175 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: gaugemsw.cpp -// Purpose: wxGaugeMSW class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "gauge.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/defs.h" -#include "wx/utils.h" -#endif - -#if wxUSE_GAUGE - -#include "wx/msw/gaugemsw.h" -#include "wx/msw/private.h" - -/* gas gauge graph control messages--class "zYzGauge" */ -#define ZYZG_SETRANGE (WM_USER + 0) -#define ZYZG_GETRANGE (WM_USER + 1) -#define ZYZG_SETPOSITION (WM_USER + 2) -#define ZYZG_GETPOSITION (WM_USER + 3) -#define ZYZG_SETORIENTATION (WM_USER + 4) -#define ZYZG_GETORIENTATION (WM_USER + 5) -#define ZYZG_SETFGCOLOR (WM_USER + 6) -#define ZYZG_GETFGCOLOR (WM_USER + 7) -#define ZYZG_SETBKCOLOR (WM_USER + 8) -#define ZYZG_GETBKCOLOR (WM_USER + 9) -#define ZYZG_SETWIDTH3D (WM_USER + 10) -#define ZYZG_GETWIDTH3D (WM_USER + 11) -#define ZYZG_SETBEZELFACE (WM_USER + 12) -#define ZYZG_GETBEZELFACE (WM_USER + 13) -#define ZYZG_SETDELTAPOS (WM_USER + 14) - - -/* orientations for ZYZG_WW_ORIENTATION */ -#define ZYZG_ORIENT_LEFTTORIGHT 0 -#define ZYZG_ORIENT_RIGHTTOLEFT 1 -#define ZYZG_ORIENT_BOTTOMTOTOP 2 -#define ZYZG_ORIENT_TOPTOBOTTOM 3 - -/* gauge styles */ -#define ZYZGS_3D 0x8000L /* control will be 3D */ - -/* public function prototypes */ -BOOL FAR PASCAL gaugeInit(HINSTANCE hInstance); - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxGaugeMSW, wxControl) -#endif - -bool wxGaugeMSW::Create(wxWindow *parent, wxWindowID id, - int range, - const wxPoint& pos, - const wxSize& size, - long style, - const wxValidator& validator, - const wxString& name) -{ - static bool wxGaugeMSWInitialised = FALSE; - - if ( !wxGaugeMSWInitialised ) - { - if (!gaugeInit((HINSTANCE) wxGetInstance())) - wxFatalError("Cannot initalize Gauge library"); - wxGaugeMSWInitialised = TRUE; - } - - SetName(name); - SetValidator(validator); - - if (parent) parent->AddChild(this); - m_rangeMax = range; - m_gaugePos = 0; - - SetBackgroundColour(parent->GetBackgroundColour()) ; - SetForegroundColour(parent->GetForegroundColour()) ; - - m_windowStyle = style; - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - int x = pos.x; - int y = pos.y; - int width = size.x; - int height = size.y; - - long msFlags = WS_CHILD | WS_VISIBLE | WS_TABSTOP; - msFlags |= ZYZGS_3D; - - HWND wx_button = - CreateWindowEx(MakeExtendedStyle(m_windowStyle), "zYzGauge", NULL, msFlags, - 0, 0, 0, 0, (HWND) parent->GetHWND(), (HMENU)m_windowId, - wxGetInstance(), NULL); - - m_hWnd = (WXHWND)wx_button; - - // Subclass again for purposes of dialog editing mode - SubclassWin((WXHWND)wx_button); - - int wOrient = 0; - - if (m_windowStyle & wxGA_HORIZONTAL) - wOrient = ZYZG_ORIENT_LEFTTORIGHT; - else - wOrient = ZYZG_ORIENT_BOTTOMTOTOP; - - SendMessage(wx_button, ZYZG_SETORIENTATION, wOrient, 0); - SendMessage(wx_button, ZYZG_SETRANGE, range, 0); - - SendMessage((HWND) GetHWND(), ZYZG_SETFGCOLOR, 0, RGB(GetForegroundColour().Red(), GetForegroundColour().Green(), GetForegroundColour().Blue())); - SendMessage((HWND) GetHWND(), ZYZG_SETBKCOLOR, 0, RGB(GetBackgroundColour().Red(), GetBackgroundColour().Green(), GetBackgroundColour().Blue())); - - SetFont(parent->GetFont()); - - if (width == -1) - width = 50; - if (height == -1) - height = 50; - SetSize(x, y, width, height); - - ShowWindow((HWND) GetHWND(), SW_SHOW); - - return TRUE; -} - -void wxGaugeMSW::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - int currentX, currentY; - GetPosition(¤tX, ¤tY); - int x1 = x; - int y1 = y; - int w1 = width; - int h1 = height; - - if (x == -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) - x1 = currentX; - if (y == -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) - y1 = currentY; - - AdjustForParentClientOrigin(x1, y1, sizeFlags); - - // If we're prepared to use the existing size, then... - if (width == -1 && height == -1 && ((sizeFlags & wxSIZE_AUTO) != wxSIZE_AUTO)) - { - GetSize(&w1, &h1); - } - - // Deal with default size (using -1 values) - if (w1<=0) - w1 = DEFAULT_ITEM_WIDTH; - - if (h1<=0) - h1 = DEFAULT_ITEM_HEIGHT; - - MoveWindow((HWND) GetHWND(), x1, y1, w1, h1, TRUE); -} - -void wxGaugeMSW::SetShadowWidth(int w) -{ - SendMessage((HWND) GetHWND(), ZYZG_SETWIDTH3D, w, 0); -} - -void wxGaugeMSW::SetBezelFace(int w) -{ - SendMessage((HWND) GetHWND(), ZYZG_SETBEZELFACE, w, 0); -} - -void wxGaugeMSW::SetRange(int r) -{ - m_rangeMax = r; - - SendMessage((HWND) GetHWND(), ZYZG_SETRANGE, r, 0); -} - -void wxGaugeMSW::SetValue(int pos) -{ - m_gaugePos = pos; - - SendMessage((HWND) GetHWND(), ZYZG_SETPOSITION, pos, 0); -} - -int wxGaugeMSW::GetShadowWidth(void) const -{ - return (int) SendMessage((HWND) GetHWND(), ZYZG_GETWIDTH3D, 0, 0); -} - -int wxGaugeMSW::GetBezelFace(void) const -{ - return (int) SendMessage((HWND) GetHWND(), ZYZG_GETBEZELFACE, 0, 0); -} - -int wxGaugeMSW::GetRange(void) const -{ - return (int) SendMessage((HWND) GetHWND(), ZYZG_GETRANGE, 0, 0); -} - -int wxGaugeMSW::GetValue(void) const -{ - return (int) SendMessage((HWND) GetHWND(), ZYZG_GETPOSITION, 0, 0); -} - -void wxGaugeMSW::SetForegroundColour(const wxColour& col) -{ - m_foregroundColour = col ; - SendMessage((HWND) GetHWND(), ZYZG_SETFGCOLOR, 0, RGB(col.Red(), col.Green(), col.Blue())); -} - -void wxGaugeMSW::SetBackgroundColour(const wxColour& col) -{ - m_backgroundColour = col ; - SendMessage((HWND) GetHWND(), ZYZG_SETBKCOLOR, 0, RGB(col.Red(), col.Green(), col.Blue())); -} - - -/** zyz3d.c - * - * DESCRIPTION: - * This module contains functions for creating nifty 3D borders - * around controls like zYzGauge. - * - * HISTORY: - * 3/14/91 cjp put in this comment - * 6/19/92 cjp touched it a bit - * - ** cjp */ -// COPYRIGHT: -// -// (C) Copyright Microsoft Corp. 1992. All rights reserved. -// -// You have a royalty-free right to use, modify, reproduce and -// distribute the Sample Files (and/or any modified version) in -// any way you find useful, provided that you agree that -// Microsoft has no warranty obligations or liability for any -// Sample Application Files which are modified. -// - - -/* get the includes we need */ -#include - -/* misc. control flag defines */ -#define DRAW3D_IN 0x0001 -#define DRAW3D_OUT 0x0002 - -#define DRAW3D_TOPLINE 0x0004 -#define DRAW3D_BOTTOMLINE 0x0008 -#define DRAW3D_LEFTLINE 0x0010 -#define DRAW3D_RIGHTLINE 0x0020 - - -/* public function prototypes */ -void FAR PASCAL Draw3DFaceFrame(HDC, LPRECT, WORD); -void FAR PASCAL Draw3DRect(HDC, LPRECT, WORD, WORD); -void FAR PASCAL Draw3DLine(HDC, WORD, WORD, WORD, WORD, WORD); - - -/** void FAR PASCAL Draw3DFaceFrame(HDC hdc, LPRECT rc, WORD wWidth) - * - * DESCRIPTION: - * This function draws a flat frame with the current button-face - * color. - * - * ARGUMENTS: - * HDC hdc : The DC to draw into. - * - * LPRECT rc : The containing rect for the new frame. - * - * WORD wWidth : The width of the frame to draw. - * - * RETURN (void FAR PASCAL): - * The frame will have been drawn into the DC. - * - * NOTES: - * - ** cjp */ - -void FAR PASCAL Draw3DFaceFrame(HDC hdc, LPRECT rc, WORD wWidth) -{ - RECT rc1; - DWORD rgbOld; - - /* don't go through a bunch of work if we don't have to */ - if (!wWidth) - return; - - /* set up color to be button-face color--so it may not be gray */ - rgbOld = SetBkColor(hdc, GetSysColor(COLOR_BTNFACE)); - - /* perform CopyRect w/o bloody windows style overhead */ - rc1 = *rc; - - /* top */ - rc1.top = rc->top; - rc1.left = rc->left; - rc1.bottom = rc->top + wWidth; - rc1.right = rc->right; - - /* blast it out */ - ExtTextOut(hdc, rc1.left, rc1.top, ETO_OPAQUE, &rc1, NULL, 0, NULL); - - /* right */ - rc1.left = rc->right - wWidth; - rc1.bottom = rc->bottom; - - /* blast this part now */ - ExtTextOut(hdc, rc1.left, rc1.top, ETO_OPAQUE, &rc1, NULL, 0, NULL); - - /* left */ - rc1.left = rc->left; - rc1.right = rc->left + wWidth; - - /* and another part */ - ExtTextOut(hdc, rc1.left, rc1.top, ETO_OPAQUE, &rc1, NULL, 0, NULL); - - /* bottom */ - rc1.right = rc->right; - rc1.top = rc->bottom - wWidth; - - /* finish it off */ - ExtTextOut(hdc, rc1.left, rc1.top, ETO_OPAQUE, &rc1, NULL, 0, NULL); - - /* restore the old bk color */ - SetBkColor(hdc, rgbOld); -} /* Draw3DFaceFrame() */ - - -/** void FAR PASCAL Draw3DRect(HDC, LPRECT, WORD, WORD) - * - * DESCRIPTION: - * Draws a 3D rectangle that is shaded. wFlags can be used to - * control how the rectangle looks. - * - * ARGUMENTS: - * HDC hdc : Handle to the device context that will be - * used to display the rectangle. - * - * RECT rect : A rectangle describing the dimensions of - * the rectangle in device coordinates. - * - * WORD wShadowWidth : Width of the shadow in device coordinates. - * - * WORD wFlags : The following flags may be passed to describe - * the style of the rectangle: - * - * DRAW3D_IN : The shadow is drawn such that - * the box appears to be sunk in to the screen. - * This is default if 0 is passed. - * - * DRAW3D_OUT : The shadow is drawn such that - * the box appears to be sticking out of the - * screen. - * - * RETURN (void FAR PASCAL): - * The 3D looking rectangle will have been drawn into the DC. - * - * NOTES: - * - ** cjp */ - -void FAR PASCAL Draw3DRect(HDC hdc, LPRECT lpRect, - WORD wShadowWidth, WORD wFlags) -{ - /* sanity check--don't work if you don't have to! */ - if (!wShadowWidth || !RectVisible(hdc, lpRect)) - return; - - /* draw the top line */ - Draw3DLine(hdc, lpRect->left, lpRect->top, - lpRect->right - lpRect->left, - wShadowWidth, DRAW3D_TOPLINE | wFlags); - - /* right line */ - Draw3DLine(hdc, lpRect->right, lpRect->top, - lpRect->bottom - lpRect->top, - wShadowWidth, DRAW3D_RIGHTLINE | wFlags); - - /* bottom line */ - Draw3DLine(hdc, lpRect->left, lpRect->bottom, - lpRect->right - lpRect->left, - wShadowWidth, DRAW3D_BOTTOMLINE | wFlags); - - /* left line */ - Draw3DLine(hdc, lpRect->left, lpRect->top, - lpRect->bottom - lpRect->top, - wShadowWidth, DRAW3D_LEFTLINE | wFlags); -} /* Draw3DRect() */ - - -/** void FAR PASCAL Draw3DLine(HDC hdc, WORD x, WORD y, WORD nLen, - * - * DESCRIPTION: - * Draws a 3D line that can be used to make a 3D box. - * - * ARGUMENTS: - * HDC hdc : Handle to the device context that will be - * used to display the 3D line. - * - * WORD x, y : Coordinates of the beginning of the line. - * These coordinates are in device units and - * represent the _outside_ most point. Horiz- - * ontal lines are drawn from left to right and - * vertical lines are drawn from top to bottom. - * - * WORD wShadowWidth : Width of the shadow in device coordinates. - * - * WORD wFlags : The following flags may be passed to - * describe the style of the 3D line: - * - * DRAW3D_IN : The shadow is drawn such that - * the box appears to be sunk in to the screen. - * This is default if 0 is passed. - * - * DRAW3D_OUT : The shadow is drawn such that - * the box appears to be sticking out of the - * screen. - * - * DRAW3D_TOPLINE, _BOTTOMLINE, _LEFTLINE, and - * _RIGHTLINE : Specifies that a "top", - * "Bottom", "Left", or"Right" line is to be - * drawn. - * - * RETURN (void FAR PASCAL): - * The line will have been drawn into the DC. - * - * NOTES: - * - ** cjp */ - -void FAR PASCAL Draw3DLine(HDC hdc, WORD x, WORD y, WORD nLen, - WORD wShadowWidth, WORD wFlags) -{ - HBRUSH hOldBrush; - HPEN hOldPen; - BOOL fDark; - POINT Point[ 4 ]; /* define a polgon with 4 points */ - - /* if width is zero, don't do nothin'! */ - if (!wShadowWidth) - return; - - /* define shape of polygon--origin is always the same */ - Point[0].x = x; - Point[0].y = y; - - /* To do this we'll simply draw a polygon with four sides, using - * the appropriate brush. I dare you to ask me why this isn't a - * switch/case! - */ - if (wFlags & DRAW3D_TOPLINE) - { - /* across to right */ - Point[1].x = x + nLen - (wShadowWidth == 1 ? 1 : 0); - Point[1].y = y; - - /* down/left */ - Point[2].x = x + nLen - wShadowWidth; - Point[2].y = y + wShadowWidth; - - /* accross to left */ - Point[3].x = x + wShadowWidth; - Point[3].y = y + wShadowWidth; - - /* select 'dark' brush if 'in'--'light' for 'out' */ - fDark = (wFlags & DRAW3D_IN) ? TRUE : FALSE; - } - - /* possibly the bottom? */ - else if (wFlags & DRAW3D_BOTTOMLINE) - { - /* across to right */ - Point[1].x = x + nLen; - Point[1].y = y; - - /* up/left */ - Point[2].x = x + nLen - wShadowWidth; - Point[2].y = y - wShadowWidth; - - /* accross to left */ - Point[3].x = x + wShadowWidth; - Point[3].y = y - wShadowWidth; - - /* select 'light' brush if 'in' */ - fDark = (wFlags & DRAW3D_IN) ? FALSE : TRUE; - } - - /* ok, it's gotta be left? */ - else if (wFlags & DRAW3D_LEFTLINE) - { - /* down */ - Point[1].x = x; - Point[1].y = y + nLen - (wShadowWidth == 1 ? 1 : 0); - - /* up/right */ - Point[2].x = x + wShadowWidth; - Point[2].y = y + nLen - wShadowWidth; - - /* down */ - Point[3].x = x + wShadowWidth; - Point[3].y = y + wShadowWidth; - - /* select 'dark' brush if 'in'--'light' for 'out' */ - fDark = (wFlags & DRAW3D_IN) ? TRUE : FALSE; - } - - /* well maybe it's for the right side? */ - else if (wFlags & DRAW3D_RIGHTLINE) - { - /* down */ - Point[1].x = x; - Point[1].y = y + nLen; - - /* up/left */ - Point[2].x = x - wShadowWidth; - Point[2].y = y + nLen - wShadowWidth; - - /* up */ - Point[3].x = x - wShadowWidth; - Point[3].y = y + wShadowWidth; - - /* select 'light' brush if 'in' */ - fDark = (wFlags & DRAW3D_IN) ? FALSE : TRUE; - } - - /* bad drugs? */ - else return; - - /* select NULL_PEN for no borders */ - hOldPen = (HPEN) SelectObject(hdc, GetStockObject(NULL_PEN)); - - /* select the appropriate color for the fill */ - if (fDark) - hOldBrush = (HBRUSH) SelectObject(hdc, GetStockObject(GRAY_BRUSH)); - else - hOldBrush = (HBRUSH) SelectObject(hdc, GetStockObject(WHITE_BRUSH)); - - /* finally, draw the dern thing */ - Polygon(hdc, (LPPOINT)&Point, 4); - - /* restore what we killed */ - SelectObject(hdc, hOldBrush); - SelectObject(hdc, hOldPen); -} /* Draw3DLine() */ - -/** EOF: zyz3d.c **/ - -/** zyzgauge.c - * - * DESCRIPTION: - * Yet another 'Gas Gauge Custom Control.' This control gives you - * a 'progress bar' class (named zYzGauge) for use in your applications. - * You can set the range, position, font, color, orientation, and 3d - * effect of the gauge by sending messages to the control. - * - * Before you can use this control, you MUST first export the window - * procedure for the control (or define it with the _export keyword): - * - * EXPORTS gaugeWndProc - * - * You then need initialize the class before you use it: - * - * if (!gaugeInit(hInstance)) - * die a horrible death - * else - * you are good to go - * - * The colors used by the control default to black and white if you - * are running on a mono-display. They default to blue and white - * if you are on a color display. You enable the 3D effect by setting - * the ZYZGS_3D style flag in the styles field of the control (like - * any other control). - * - * To select your own colors, you can send the ZYZG_SETFGCOLOR and - * ZYZG_SETBKCOLOR messages to set the foreground (percent done) and - * background (percent not done) colors. The lParam is the RGB() - * value--wParam is ignored. - * - * In all of the following ZYZG_??? messages, the arguments are - * WORDS. If you are setting parameters, the value is sent as - * the wParam (lParam is ignored). If you are getting parameters, - * the value is returned as a LONG and should be cast to a *signed* - * integer. - * - * To set the depth of the 3D effect (if enabled), you can send the - * ZYZG_SETBEZELFACE and ZYZG_SETWIDTH3D messages. The bezel face - * is the flat top on the 3D border--its color will be that of the - * button-face. The 3D width is the width of the bezel itself; inside - * and outside. The light color is white, the dark color is gray. - * Both widths *can* be zero--both default to 2 which looks to me. - * - * The range of the control can be set by sending the ZYZG_SETRANGE - * message to the control. It can be any integer from 1 to 32767. - * What this specifies is the number of pieces that create a whole. - * The default is 100. You can get the current range setting by - * sending the ZYZG_GETRANGE message to the control. - * - * The position (number of pieces out of the whole have been used) is - * set with the ZYZG_SETPOSITION message. It can be any integer from - * 0 to the current range setting of the control--it will be clipped - * if the position is out of bounds. The default position is 0. You - * can get the current position at any time with the ZYZG_GETPOSITION - * message. - * - * You can also set the range using a delta from the current range. - * This is done by sending the ZYZG_SETDELTAPOS message with wParam - * set to a _signed_ integer value within the range of the control. - * - * The font used for the percentage text can be set using the standard - * WM_SETFONT message. You can get the current font at any time with - * the WM_GETFONT message. - * - * The orientation can be left to right, right to left, bottom to top, - * or top to bottom. Whatever suits your needs. You set this by - * sending the ZYZG_ORIENTATION message to the control with one of - * the following values (default is ZYZG_ORIENT_LEFTTORIGHT): - * - * ZYZG_ORIENT_LEFTTORIGHT (0) - * ZYZG_ORIENT_RIGHTTOLEFT (1) - * ZYZG_ORIENT_BOTTOMTOTOP (2) - * ZYZG_ORIENT_TOPTOBOTTOM (3) - * - * HISTORY: - * 3/12/91 cjp put in this comment - * 6/19/92 cjp touched it a bit - * - ** cjp */ -// COPYRIGHT: -// -// (C) Copyright Microsoft Corp. 1992. All rights reserved. -// -// You have a royalty-free right to use, modify, reproduce and -// distribute the Sample Files (and/or any modified version) in -// any way you find useful, provided that you agree that -// Microsoft has no warranty obligations or liability for any -// Sample Application Files which are modified. -// - - -/* get the includes we need */ -#if !defined(__GNUWIN32__) && !defined(__SALFORDC__) -#include -#endif -#include -#include -#include -// #include "zyz3d.h" -// #include "zyzgauge.h" - - -/* static global variables */ -static char gszzYzGaugeClass[] = "zYzGauge"; - - -/* window word position definitions */ -#define ZYZG_WW_PZYZGAUGE 0 -/* #define ZYZG_WW_EXTRABYTES 2 */ -#define ZYZG_WW_EXTRABYTES 4 - - -/* control block structure typedef */ -typedef struct tZYZGAUGE -{ - WORD wRange; - WORD wPosition; - WORD wOrientation; - WORD wWidth3D; - WORD wWidthBezelFace; - HFONT hFont; - DWORD rgbTextColor; - DWORD rgbBkColor; - -} ZYZGAUGE, *PZYZGAUGE, FAR *LPZYZGAUGE; - - -/* some default values for the control */ -#define ZYZG_DEF_RANGE 100 -#define ZYZG_DEF_POSITION 0 -#define ZYZG_DEF_ORIENTATION ZYZG_ORIENT_LEFTTORIGHT -#define ZYZG_DEF_WIDTH3D 2 -#define ZYZG_DEF_BEZELFACE 2 - - - -/* the default settings for drawing colors--display dependent */ -static DWORD rgbDefTextColor; -static DWORD rgbDefBkColor; -static BOOL fSupport3D; - -#if !defined(APIENTRY) // NT defines APIENTRY, 3.x not -#define APIENTRY FAR PASCAL -#endif - -#ifdef __WIN32__ -#define _EXPORT /**/ -#else -#define _EXPORT _export -typedef signed short int SHORT ; -#endif - -/* internal function prototypes */ -static void PASCAL gaugePaint(HWND, HDC); -/* LRESULT FAR PASCAL */ -LRESULT APIENTRY _EXPORT gaugeWndProc(HWND, UINT, WPARAM, LPARAM); - - - -/** BOOL FAR PASCAL gaugeInit(HINSTANCE hInstance) - * - * DESCRIPTION: - * Registers the window class for the zYzGauge control. Performs - * other initialization for the zYzGauge text control. This must - * be done before the zYzGauge control is used--or it will fail - * and your dialog box will not open! - * - * ARGUMENTS: - * HINSTANCE hInstance : Instance handle to register class with. - * - * RETURN (BOOL FAR): - * The return value is TRUE if the zYzGauge class was successfully - * registered. It is FALSE if the initialization fails. - * - * NOTES: - * - ** cjp */ - -//#pragma alloc_text(init, gaugeInit) - -BOOL FAR PASCAL gaugeInit(HINSTANCE hInstance) -{ - static BOOL fRegistered = FALSE; - WNDCLASS wc; - HDC hdc; - - /* assume already registered if not first instance */ - if (fRegistered) - return (TRUE); - - /* fill in the class structure for the zyzgauge control */ - wc.hCursor = LoadCursor(NULL, IDC_ARROW); - wc.hIcon = NULL; - wc.lpszMenuName = NULL; - wc.lpszClassName = gszzYzGaugeClass; - wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); - wc.hInstance = hInstance; - -#ifdef ZYZGAUGE_DLL - wc.style = CS_GLOBALCLASS | CS_HREDRAW | CS_VREDRAW; -#else - wc.style = CS_HREDRAW | CS_VREDRAW; -#endif - - wc.lpfnWndProc = gaugeWndProc; - wc.cbClsExtra = 0; - wc.cbWndExtra = ZYZG_WW_EXTRABYTES; - - /* attempt to register it--return FALSE if fail */ - if (!RegisterClass(&wc)) - return (FALSE); - - /* Get a DC to determine whether device is mono or not, and set - * default foreground/background colors as appropriate. - */ - if ((hdc = CreateIC("DISPLAY", NULL, NULL, 0L))) - { - /* check for mono-display */ - if ((GetDeviceCaps(hdc, BITSPIXEL) == 1) && - (GetDeviceCaps(hdc, PLANES) == 1)) - { - /* using a mono DC--white foreground, black background */ - rgbDefTextColor = RGB(255, 255, 255); - rgbDefBkColor = RGB(0, 0, 0); - } - - /* good! we have color: blue foreground, white background */ - else - { - rgbDefTextColor = RGB(0, 0, 255); - rgbDefBkColor = RGB(255, 255, 255); - } - - /* need at _least_ 8 for two shades of gray (>=VGA) */ - fSupport3D = (GetDeviceCaps(hdc, NUMCOLORS) >= 8) ? TRUE : FALSE; - - /* get rid of the DC (IC) */ - DeleteDC(hdc); - } - - /* uh-oh... can't get DC (IC)... fail */ - else - { - /* unregister the class */ - UnregisterClass(gszzYzGaugeClass, hInstance); - return (FALSE); - } - - /* return success */ - return (fRegistered = TRUE); -} /* gaugeInit() */ - - -/** static void PASCAL gaugePaint(HWND hwnd, HDC hdc) - * - * DESCRIPTION: - * This function is responsible for painting the zYzGauge control. - * - * ARGUMENTS: - * HWND hwnd : The window handle for the gauge. - * - * HDC hdc : The DC for the gauge's window. - * - * RETURN (void): - * The control will have been painted. - * - * NOTES: - * - ** cjp */ - -static void PASCAL gaugePaint(HWND hwnd, HDC hdc) -{ - PZYZGAUGE pgauge; - WORD iRange, iPos; - WORD Offset = 1; - DWORD dwExtent; - RECT rc1, rc2; - HFONT hFont; - char ach[ 6 ]; - WORD dx, dy, wGomerX, wGomerY; -/* Win32s has no GetTextExtent(); let's try GetTextExtentPoint() instead, - * which needs a SIZE* parameter */ -#if defined(__WIN32__) - SIZE size; -#endif - - /* get pointer to the control's control block */ -// pgauge = (PZYZGAUGE)GetWindowWord(hwnd, ZYZG_WW_PZYZGAUGE); - pgauge = (PZYZGAUGE)GetWindowLong(hwnd, ZYZG_WW_PZYZGAUGE); - - /* set the colors into for the gauge into the control */ - SetTextColor(hdc, pgauge->rgbTextColor); - SetBkColor(hdc, pgauge->rgbBkColor); - - /* draw black rectangle for gauge */ - GetClientRect(hwnd, &rc1); - - /* draw a black border on the _outside_ */ - FrameRect(hdc, &rc1, (HBRUSH) GetStockObject(BLACK_BRUSH)); - - /* we want to draw _just inside_ the black border */ - InflateRect(&rc1, -1, -1); - - /* one line thick so far... */ -// Offset = (WORD) 1; - - /* for 3D stuff, we need to have at least two shades of gray */ - if ((GetWindowLong(hwnd, GWL_STYLE) & ZYZGS_3D) && fSupport3D) - { - Draw3DRect(hdc, &rc1, pgauge->wWidth3D, DRAW3D_OUT); - InflateRect(&rc1, ~(pgauge->wWidth3D), ~(pgauge->wWidth3D)); - - Draw3DFaceFrame(hdc, &rc1, pgauge->wWidthBezelFace); - InflateRect(&rc1, ~(pgauge->wWidthBezelFace), ~(pgauge->wWidthBezelFace)); - - Draw3DRect(hdc, &rc1, pgauge->wWidth3D, DRAW3D_IN); - InflateRect(&rc1, ~(pgauge->wWidth3D), ~(pgauge->wWidth3D)); - - /* draw a black border on the _inside_ */ - FrameRect(hdc, &rc1, (HBRUSH) GetStockObject(BLACK_BRUSH)); - - /* we want to draw _just inside_ the black border */ - InflateRect(&rc1, -1, -1); - - /* add all the other pixels into the border width */ - Offset += (2 * pgauge->wWidth3D) + pgauge->wWidthBezelFace + 1; - } - - /* dup--one rc for 'how much filled', one rc for 'how much empty' */ - rc2 = rc1; - - /* get the range--make sure it's a valid range */ - if ((iRange = pgauge->wRange) <= 0) - iRange = 1; - - /* get the position--greater than 100% would be bad */ - if ((iPos = pgauge->wPosition) > iRange) - iPos = iRange; - - /* compute the actual size of the gauge */ - dx = rc1.right - rc1.left; - dy = rc1.bottom - rc1.top; - wGomerX = (WORD)((DWORD)iPos * dx / iRange); - wGomerY = (WORD)((DWORD)iPos * dy / iRange); - - /* get the orientation and munge rects accordingly */ - switch (pgauge->wOrientation) - { - case ZYZG_ORIENT_RIGHTTOLEFT: - rc1.left = rc2.right = rc1.right - wGomerX; - break; - - case ZYZG_ORIENT_BOTTOMTOTOP: - rc1.top = rc2.bottom = rc1.bottom - wGomerY; - break; - - case ZYZG_ORIENT_TOPTOBOTTOM: - rc1.bottom = rc2.top += wGomerY; - break; - - default: - rc1.right = rc2.left += wGomerX; - break; - } /* switch () */ - - /* select the correct font */ - hFont = (HFONT) SelectObject(hdc, pgauge->hFont); - - /* build up a string to blit out--ie the meaning of life: "42%" */ - wsprintf(ach, "%3d%%", (WORD)((DWORD)iPos * 100 / iRange)); -/* Win32s has no GetTextExtent(); let's try GetTextExtentPoint() instead */ -#if defined(__WIN32__) - GetTextExtentPoint(hdc, ach, wGomerX = lstrlen(ach), &size); - dwExtent = size.cx; -#else - dwExtent = GetTextExtent(hdc, ach, wGomerX = lstrlen(ach)); -#endif - - - /* Draw the finished (ie the percent done) side of box. If - * ZYZG_WW_POSITION is 42, (in range of 0 to 100) this ExtTextOut - * draws the meaning of life (42%) bar. - */ - ExtTextOut(hdc, (dx - LOWORD(dwExtent)) / 2 + Offset, - (dy - HIWORD(dwExtent)) / 2 + Offset, - ETO_OPAQUE | ETO_CLIPPED, &rc2, ach, wGomerX, NULL); - - /* Reverse fore and back colors for drawing the undone (ie the non- - * finished) side of the box. - */ - SetBkColor(hdc, pgauge->rgbTextColor); - SetTextColor(hdc, pgauge->rgbBkColor); - - ExtTextOut(hdc, (dx - LOWORD(dwExtent)) / 2 + Offset, - (dy - HIWORD(dwExtent)) / 2 + Offset, - ETO_OPAQUE | ETO_CLIPPED, &rc1, ach, wGomerX, NULL); - - /* unselect the font */ - SelectObject(hdc, hFont); -} /* gaugePaint() */ - - -/** LRESULT FAR PASCAL gaugeWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) - * - * DESCRIPTION: - * This is the control's window procedure. Its purpose is to handle - * special messages for this custom control. - * - * The special control messages for the gauge control are: - * - * ZYZG_SETRANGE : Sets the range of the gauge. In other - * words, the number of parts that make a - * whole. - * - * ZYZG_GETRANGE : Returns the current range of the gauge. - * - * ZYZG_SETORIENTATION : Sets the orientation of the gauge. This - * can be one of the ZYZG_ORIENT_?? msgs. - * - * ZYZG_GETORIENTATION : Gets the current orientation of the - * gauge. - * - * ZYZG_SETPOSITION : Sets the current position of the gauge. - * In other words, how many pieces of the - * whole have been used. - * - * ZYZG_GETPOSITION : Gets the current position of the gauge. - * - * ZYZG_SETDELTAPOS : Sets the position of the gauge +/- the - * specified amount. - * - * ZYZG_SETFGCOLOR : Sets the foreground (percent done) color. - * - * ZYZG_GETFGCOLOR : Gets the foreground (percent done) color. - * - * ZYZG_SETBKCOLOR : Sets the background (percent not done) - * color. - * - * ZYZG_GETBKCOLOR : Gets the background (percent not done) - * color. - * - * WM_SETFONT : Sets the font to use for the percentage - * text of the gauge. - * - * WM_GETFONT : Gets the current font in use by the - * gauge. - * - * NOTES: - * - ** cjp */ - -/* LRESULT FAR PASCAL */ - -LRESULT APIENTRY _EXPORT gaugeWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) -{ - HFONT hFont; - PAINTSTRUCT ps; - PZYZGAUGE pgauge; - RECT rc; - -// pgauge = (PZYZGAUGE)GetWindowWord(hwnd, ZYZG_WW_PZYZGAUGE); - pgauge = (PZYZGAUGE)GetWindowLong(hwnd, ZYZG_WW_PZYZGAUGE); - - /* break to get DefWindowProc() */ - switch (uMsg) - { - case WM_CREATE: - /* need to allocate a control block */ -// pgauge = (PZYZGAUGE)LocalAlloc(LPTR, sizeof(ZYZGAUGE)); - pgauge = (PZYZGAUGE)malloc(sizeof(ZYZGAUGE)); - if (!pgauge) - return (0L); - - /* hang on to this control block */ -// SetWindowWord(hwnd, ZYZG_WW_PZYZGAUGE, (WORD)pgauge); - SetWindowLong(hwnd, ZYZG_WW_PZYZGAUGE, (LONG)pgauge); - - /* fill control block with defaults */ - pgauge->wRange = ZYZG_DEF_RANGE; - pgauge->wPosition = ZYZG_DEF_POSITION; - pgauge->wOrientation = ZYZG_DEF_ORIENTATION; - pgauge->wWidth3D = ZYZG_DEF_WIDTH3D; - pgauge->wWidthBezelFace = ZYZG_DEF_BEZELFACE; - pgauge->rgbTextColor = rgbDefTextColor; - pgauge->rgbBkColor = rgbDefBkColor; - - /* use system font */ - SendMessage(hwnd, WM_SETFONT, (WPARAM)NULL, 0L); - - /* go to DefWindowProc() to finish the job */ - break; - - case WM_DESTROY: - /* get rid of the control's memory */ - if (pgauge) -// LocalFree((HANDLE)pgauge); - free(pgauge); - break; - - case ZYZG_GETPOSITION: - return (pgauge->wPosition); - - case ZYZG_GETRANGE: - return (pgauge->wRange); - - case ZYZG_GETORIENTATION: - return (pgauge->wOrientation); - - case ZYZG_GETWIDTH3D: - return (pgauge->wWidth3D); - - case ZYZG_GETBEZELFACE: - return (pgauge->wWidthBezelFace); - - case ZYZG_GETBKCOLOR: - return (pgauge->rgbTextColor); - - case ZYZG_GETFGCOLOR: - return (pgauge->rgbBkColor); - - case ZYZG_SETBKCOLOR: - pgauge->rgbBkColor = lParam; - return (0L); - - case ZYZG_SETFGCOLOR: - pgauge->rgbTextColor = lParam; - return (0L); - - - case ZYZG_SETPOSITION: - pgauge->wPosition = wParam; - -zyzgForceRepaint: - GetClientRect(hwnd, &rc); - if ((GetWindowLong(hwnd, GWL_STYLE) & ZYZGS_3D) && fSupport3D) - { - wParam = (2 * pgauge->wWidth3D) + - pgauge->wWidthBezelFace + 2; - } - - else - wParam = 1; - - InflateRect(&rc, ~(wParam), ~(wParam)); - InvalidateRect(hwnd, &rc, FALSE); - UpdateWindow(hwnd); - return (0L); - - case ZYZG_SETRANGE: - pgauge->wRange = wParam; - goto zyzgForceRepaint; - - case ZYZG_SETORIENTATION: - pgauge->wOrientation = wParam; - goto zyzgForceRepaint; - - case ZYZG_SETWIDTH3D: - pgauge->wWidth3D = wParam; - -zyzgForceRepaint3D: - InvalidateRect(hwnd, NULL, FALSE); - UpdateWindow(hwnd); - return (0L); - - case ZYZG_SETBEZELFACE: - pgauge->wWidthBezelFace = wParam; - goto zyzgForceRepaint3D; - - case ZYZG_SETDELTAPOS: -/* Watcom doesn't like the following line so removing typecasts */ -/* (int)pgauge->wPosition += (int)wParam; */ - pgauge->wPosition += wParam; - goto zyzgForceRepaint; - - case WM_PAINT: - BeginPaint(hwnd, &ps); - gaugePaint(hwnd, ps.hdc); - EndPaint(hwnd, &ps); - return (0L); - - case WM_GETFONT: - hFont = pgauge->hFont; - - /* if system font, then return NULL handle */ - return (long)((hFont == GetStockObject(SYSTEM_FONT)) ? NULL : hFont); - - case WM_SETFONT: - /* if NULL hFont, use system font */ - if (!(hFont = (HFONT)wParam)) - hFont = (HFONT) GetStockObject(SYSTEM_FONT); - - pgauge->hFont = hFont; - - /* redraw if indicated in message */ - if ((BOOL)lParam) - { - InvalidateRect(hwnd, NULL, TRUE); - UpdateWindow(hwnd); - } - return (0L); - } /* switch () */ - - /* let the dialog mangler take care of this message */ - return (DefWindowProc(hwnd, uMsg, wParam, lParam)); -} /* gaugeWndProc() */ - - -/** EOF: zyzgauge.c **/ - -#endif // wxUSE_GAUGE diff --git a/src/msw/gdiobj.cpp b/src/msw/gdiobj.cpp deleted file mode 100644 index 3a10a3fefe..0000000000 --- a/src/msw/gdiobj.cpp +++ /dev/null @@ -1,68 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: gdiobj.cpp -// Purpose: wxGDIObject class -// Author: Julian Smart -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "gdiobj.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include -#include "wx/setup.h" -#include "wx/list.h" -#include "wx/utils.h" -#include "wx/app.h" -#endif - -#include "wx/gdiobj.h" -#include "wx/msw/private.h" -#include "assert.h" - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxGDIObject, wxObject) -#endif - -/* -void wxGDIObject::IncrementResourceUsage(void) -{ - if ( !M_GDIDATA ) - return; - -// wxDebugMsg("Object %ld about to be incremented: %d\n", (long)this, m_usageCount); - M_GDIDATA->m_usageCount ++; -}; - -void wxGDIObject::DecrementResourceUsage(void) -{ - if ( !M_GDIDATA ) - return; - - M_GDIDATA->m_usageCount --; - if (wxTheApp) - wxTheApp->SetPendingCleanup(TRUE); -// wxDebugMsg("Object %ld decremented: %d\n", (long)this, M_GDIDATA->m_usageCount); - if (M_GDIDATA->m_usageCount < 0) - { - char buf[80]; - sprintf(buf, "Object %ld usage count is %d\n", (long)this, M_GDIDATA->m_usageCount); - wxDebugMsg(buf); - } -// assert(M_GDIDATA->m_usageCount >= 0); -}; - -*/ - diff --git a/src/msw/helpwin.cpp b/src/msw/helpwin.cpp deleted file mode 100644 index 068165f21e..0000000000 --- a/src/msw/helpwin.cpp +++ /dev/null @@ -1,148 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: helpwin.cpp -// Purpose: Help system: WinHelp implementation -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "helpwin.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/defs.h" -#endif - -#include "wx/msw/helpwin.h" - -#if wxUSE_HELP -#include - -#ifdef __WXMSW__ -#include -#endif - -#include - -// MAX path length -#define _MAXPATHLEN 500 - -// MAX length of Help descriptor -#define _MAX_HELP_LEN 500 - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxWinHelpController, wxHelpControllerBase) -#endif - -wxWinHelpController::wxWinHelpController(void) -{ - m_helpFile = ""; -} - -wxWinHelpController::~wxWinHelpController(void) -{ -} - -bool wxWinHelpController::Initialize(const wxString& filename) -{ - m_helpFile = filename; - return TRUE; -} - -bool wxWinHelpController::LoadFile(const wxString& file) -{ - m_helpFile = file; - return TRUE; -} - -bool wxWinHelpController::DisplayContents(void) -{ - if (m_helpFile == "") return FALSE; - - char buf[_MAXPATHLEN]; - strcpy(buf, (const char*) m_helpFile); - size_t len = strlen(buf); - if (!(buf[len-1] == 'p' && buf[len-2] == 'l' && buf[len-3] == 'h' && buf[len-4] == '.')) - strcat(buf, ".hlp"); - if (wxTheApp->GetTopWindow()) - { -#if defined(__WIN95__) - WinHelp((HWND) wxTheApp->GetTopWindow()->GetHWND(), buf, HELP_FINDER, 0L); -#else - WinHelp((HWND) wxTheApp->GetTopWindow()->GetHWND(), buf, HELP_CONTENTS, 0L); -#endif - return TRUE; - } - return FALSE; -} - -bool wxWinHelpController::DisplaySection(int section) -{ - // No WinHelp equivalent for this - return FALSE; -} - -bool wxWinHelpController::DisplayBlock(long block) -{ - // Use context number -- a very rough equivalent to block id! - if (m_helpFile == "") return FALSE; - - char buf[_MAXPATHLEN]; - strcpy(buf, m_helpFile); - size_t len = strlen(buf); - if (!(buf[len-1] == 'p' && buf[len-2] == 'l' && buf[len-3] == 'h' && buf[len-4] == '.')) - strcat(buf, ".hlp"); - if (wxTheApp->GetTopWindow()) - { - WinHelp((HWND) wxTheApp->GetTopWindow()->GetHWND(), buf, HELP_CONTEXT, (DWORD)block); - return TRUE; - } - return FALSE; -} - -bool wxWinHelpController::KeywordSearch(const wxString& k) -{ - if (m_helpFile == "") return FALSE; - - char buf[_MAXPATHLEN]; - strcpy(buf, m_helpFile); - size_t len = strlen(buf); - if (!(buf[len-1] == 'p' && buf[len-2] == 'l' && buf[len-3] == 'h' && buf[len-4] == '.')) - strcat(buf, ".hlp"); - if (wxTheApp->GetTopWindow()) - { - WinHelp((HWND) wxTheApp->GetTopWindow()->GetHWND(), buf, HELP_PARTIALKEY, (DWORD)(const char*) k); - return TRUE; - } - return FALSE; -} - -// Can't close the help window explicitly in WinHelp -bool wxWinHelpController::Quit(void) -{ - if (wxTheApp->GetTopWindow()) - { - WinHelp((HWND) wxTheApp->GetTopWindow()->GetHWND(), 0, HELP_QUIT, 0L); - return TRUE; - } - else - return FALSE; -} - -// Don't get notified of WinHelp quitting -void wxWinHelpController::OnQuit(void) -{ -} - -#endif // wxUSE_HELP diff --git a/src/msw/icon.cpp b/src/msw/icon.cpp deleted file mode 100644 index 36ce690043..0000000000 --- a/src/msw/icon.cpp +++ /dev/null @@ -1,189 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: icon.cpp -// Purpose: wxIcon class -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "icon.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include -#include "wx/setup.h" -#include "wx/list.h" -#include "wx/utils.h" -#include "wx/app.h" -#include "wx/icon.h" -#endif - -#include "wx/msw/private.h" -#include "assert.h" - -#if wxUSE_RESOURCE_LOADING_IN_MSW -#include "wx/msw/curico.h" -#include "wx/msw/curicop.h" -#endif - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxIcon, wxBitmap) -IMPLEMENT_DYNAMIC_CLASS(wxICOFileHandler, wxBitmapHandler) -IMPLEMENT_DYNAMIC_CLASS(wxICOResourceHandler, wxBitmapHandler) -#endif - -/* - * Icons - */ - - -wxIconRefData::wxIconRefData(void) -{ - m_hIcon = (WXHICON) NULL ; -} - -wxIconRefData::~wxIconRefData(void) -{ - if ( m_hIcon ) - ::DestroyIcon((HICON) m_hIcon); -} - -wxIcon::wxIcon(void) -{ -} - -wxIcon::wxIcon(const char WXUNUSED(bits)[], int WXUNUSED(width), int WXUNUSED(height)) -{ -} - -wxIcon::wxIcon(const wxString& icon_file, long flags, - int desiredWidth, int desiredHeight) - -{ - LoadFile(icon_file, flags, desiredWidth, desiredHeight); -} - -wxIcon::~wxIcon(void) -{ -} - -bool wxIcon::FreeResource(bool force) -{ - if (M_ICONDATA && M_ICONDATA->m_hIcon) - { - DestroyIcon((HICON) M_ICONDATA->m_hIcon); - M_ICONDATA->m_hIcon = (WXHICON) NULL; - } - return TRUE; -} - -bool wxIcon::LoadFile(const wxString& filename, long type, - int desiredWidth, int desiredHeight) -{ - UnRef(); - - m_refData = new wxIconRefData; - - wxBitmapHandler *handler = FindHandler(type); - - if ( handler ) - return handler->LoadFile(this, filename, type, desiredWidth, desiredHeight); - else - return FALSE; -} - -void wxIcon::SetHICON(WXHICON ico) -{ - if ( !M_ICONDATA ) - m_refData = new wxIconRefData; - - M_ICONDATA->m_hIcon = ico; -} - -bool wxICOFileHandler::LoadFile(wxBitmap *bitmap, const wxString& name, long flags, - int desiredWidth, int desiredHeight) -{ -#if wxUSE_RESOURCE_LOADING_IN_MSW - if ( bitmap->IsKindOf(CLASSINFO(wxIcon)) ) - { - wxIcon *icon = (wxIcon *)bitmap; - wxIconRefData *data = (wxIconRefData *)icon->GetRefData(); - data->m_hIcon = (WXHICON)ReadIconFile((char *)name.c_str(), wxGetInstance(), - &data->m_width, &data->m_height); - - data->m_ok = data->m_hIcon != 0; - return data->m_ok; - } - else - return FALSE; -#else - return FALSE; -#endif -} - -bool wxICOResourceHandler::LoadFile(wxBitmap *bitmap, const wxString& name, long flags, - int desiredWidth, int desiredHeight) -{ - if ( bitmap->IsKindOf(CLASSINFO(wxIcon)) ) - { -#if defined(__WIN32__) && !defined(__SC__) - if (desiredWidth > -1 && desiredHeight > -1) - { - M_ICONHANDLERDATA->m_hIcon = (WXHICON) ::LoadImage(wxGetInstance(), name, IMAGE_ICON, desiredWidth, desiredHeight, LR_DEFAULTCOLOR); - } - else -#endif - { - M_ICONHANDLERDATA->m_hIcon = (WXHICON) ::LoadIcon(wxGetInstance(), name); - } - -#ifdef __WIN32__ - // Win32s doesn't have GetIconInfo function... - if (M_ICONHANDLERDATA->m_hIcon && wxGetOsVersion()!=wxWIN32S) - { - ICONINFO info ; - if (::GetIconInfo((HICON) M_ICONHANDLERDATA->m_hIcon, &info)) - { - HBITMAP ms_bitmap = info.hbmMask ; - if (ms_bitmap) - { - BITMAP bm; - ::GetObject(ms_bitmap, sizeof(BITMAP), (LPSTR) &bm); - M_ICONHANDLERDATA->m_width = bm.bmWidth; - M_ICONHANDLERDATA->m_height = bm.bmHeight; - } - if (info.hbmMask) - ::DeleteObject(info.hbmMask) ; - if (info.hbmColor) - ::DeleteObject(info.hbmColor) ; - } - } -#else - M_ICONHANDLERDATA->m_width = 32; - M_ICONHANDLERDATA->m_height = 32; -#endif - // Override the found values with desired values - if (desiredWidth > -1 && desiredHeight > -1) - { - M_ICONHANDLERDATA->m_width = desiredWidth; - M_ICONHANDLERDATA->m_height = desiredHeight; - } - - M_ICONHANDLERDATA->m_ok = (M_ICONHANDLERDATA->m_hIcon != 0); - return M_ICONHANDLERDATA->m_ok; - } - else - return FALSE; -} - diff --git a/src/msw/imaglist.cpp b/src/msw/imaglist.cpp deleted file mode 100644 index 494ff86607..0000000000 --- a/src/msw/imaglist.cpp +++ /dev/null @@ -1,230 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: imaglist.cpp -// Purpose: wxImageList -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "imaglist.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#if defined(__WIN95__) - -#ifndef WX_PRECOMP -#include -#include "wx/setup.h" -#include "wx/window.h" -#include "wx/dcclient.h" -#endif - -#include "wx/log.h" -#include "wx/intl.h" - -#include "wx/msw/imaglist.h" -#include "wx/msw/private.h" - -#if (defined(__WIN95__) && !defined(__GNUWIN32__)) || defined(__TWIN32__) -#include -#endif - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxImageList, wxObject) -#endif - -wxImageList::wxImageList(void) -{ - m_hImageList = 0; -} - -wxImageList::~wxImageList(void) -{ - if ( m_hImageList ) - ImageList_Destroy((HIMAGELIST) m_hImageList); - m_hImageList = 0; -} - - -// Attributes -//////////////////////////////////////////////////////////////////////////// - -// Returns the number of images in the image list. -int wxImageList::GetImageCount(void) const -{ - return ImageList_GetImageCount((HIMAGELIST) m_hImageList); -} - -// Operations -//////////////////////////////////////////////////////////////////////////// - -// Creates an image list -bool wxImageList::Create(int width, int height, bool mask, int initial) -{ - UINT flags = 0; - if ( mask ) - flags |= ILC_MASK; - - // Grow by 1, I guess this is reasonable behaviour most of the time - m_hImageList = (WXHIMAGELIST) ImageList_Create(width, height, flags, initial, 1); - return (m_hImageList != 0); -} - -// Adds a bitmap, and optionally a mask bitmap. -// Note that wxImageList creates new bitmaps, so you may delete -// 'bitmap' and 'mask'. -int wxImageList::Add(const wxBitmap& bitmap, const wxBitmap& mask) -{ - HBITMAP hBitmap1 = (HBITMAP) bitmap.GetHBITMAP(); - HBITMAP hBitmap2 = 0; - if ( mask.Ok() ) - hBitmap2 = (HBITMAP) mask.GetHBITMAP(); - - int index = ImageList_Add((HIMAGELIST) GetHIMAGELIST(), hBitmap1, hBitmap2); - if ( index == -1 ) - { - wxLogError(_("Couldn't add an image to the image list.")); - } - - return index; -} - -// Adds a bitmap, using the specified colour to create the mask bitmap -// Note that wxImageList creates new bitmaps, so you may delete -// 'bitmap'. -int wxImageList::Add(const wxBitmap& bitmap, const wxColour& maskColour) -{ -#ifdef __TWIN32__ - wxFAIL_MSG("ImageList_AddMasked not implemented in TWIN32"); - return -1; -#else - HBITMAP hBitmap1 = (HBITMAP) bitmap.GetHBITMAP(); - COLORREF colorRef = PALETTERGB(maskColour.Red(), maskColour.Green(), maskColour.Blue()); - return ImageList_AddMasked((HIMAGELIST) GetHIMAGELIST(), hBitmap1, colorRef); -#endif -} - -// Adds a bitmap and mask from an icon. -int wxImageList::Add(const wxIcon& icon) -{ - HICON hIcon = (HICON) icon.GetHICON(); - return ImageList_AddIcon((HIMAGELIST) GetHIMAGELIST(), hIcon); -} - -// Replaces a bitmap, optionally passing a mask bitmap. -// Note that wxImageList creates new bitmaps, so you may delete -// 'bitmap' and 'mask'. -bool wxImageList::Replace(int index, const wxBitmap& bitmap, const wxBitmap& mask) -{ -#ifdef __TWIN32__ - wxFAIL_MSG("ImageList_Replace not implemented in TWIN32"); - return FALSE; -#else - HBITMAP hBitmap1 = (HBITMAP) bitmap.GetHBITMAP(); - HBITMAP hBitmap2 = 0; - if ( mask.Ok() ) - hBitmap2 = (HBITMAP) mask.GetHBITMAP(); - return (ImageList_Replace((HIMAGELIST) GetHIMAGELIST(), index, hBitmap1, hBitmap2) != 0); -#endif -} - -/* Not supported by Win95 -// Replacing a bitmap, using the specified colour to create the mask bitmap -// Note that wxImageList creates new bitmaps, so you may delete -// 'bitmap'. -bool wxImageList::Replace(int index, const wxBitmap& bitmap, const wxColour& maskColour) -{ - HBITMAP hBitmap1 = (HBITMAP) bitmap.GetHBITMAP(); - COLORREF colorRef = PALETTERGB(maskColour.Red(), maskColour.Green(), maskColour.Blue()); - return (bool) ImageList_ReplaceMasked((HIMAGELIST) GetHIMAGELIST(), index, hBitmap1, colorRef); -} -*/ - -// Replaces a bitmap and mask from an icon. -bool wxImageList::Replace(int index, const wxIcon& icon) -{ - HICON hIcon = (HICON) icon.GetHICON(); - return (ImageList_ReplaceIcon((HIMAGELIST) GetHIMAGELIST(), index, hIcon) != 0); -} - -// Removes the image at the given index. -bool wxImageList::Remove(int index) -{ -#ifdef __TWIN32__ - wxFAIL_MSG("ImageList_Replace not implemented in TWIN32"); - return FALSE; -#else - return (ImageList_Remove((HIMAGELIST) GetHIMAGELIST(), index) != 0); -#endif -} - -// Remove all images -bool wxImageList::RemoveAll(void) -{ - // TODO: Is this correct? - while ( GetImageCount() > 0 ) - { - Remove(0); - } - return TRUE; -} - -// Draws the given image on a dc at the specified position. -// If 'solidBackground' is TRUE, Draw sets the image list background -// colour to the background colour of the wxDC, to speed up -// drawing by eliminating masked drawing where possible. -bool wxImageList::Draw(int index, wxDC& dc, int x, int y, - int flags, bool solidBackground) -{ -#ifdef __TWIN32__ - wxFAIL_MSG("ImageList_Replace not implemented in TWIN32"); - return FALSE; -#else - HDC hDC = (HDC) dc.GetHDC(); - if ( !hDC ) - return FALSE; - - if ( solidBackground ) - { - wxBrush *brush = & dc.GetBackground(); - if ( brush && brush->Ok()) - { - wxColour col(brush->GetColour()); - ImageList_SetBkColor((HIMAGELIST) GetHIMAGELIST(), - PALETTERGB(col.Red(), col.Green(), col.Blue())); - } - else - ImageList_SetBkColor((HIMAGELIST) GetHIMAGELIST(), - CLR_NONE); - } - else - ImageList_SetBkColor((HIMAGELIST) GetHIMAGELIST(), - CLR_NONE); - - UINT style = 0; - if ( flags & wxIMAGELIST_DRAW_NORMAL ) - style |= ILD_NORMAL; - if ( flags & wxIMAGELIST_DRAW_TRANSPARENT ) - style |= ILD_TRANSPARENT; - if ( flags & wxIMAGELIST_DRAW_SELECTED ) - style |= ILD_SELECTED; - if ( flags & wxIMAGELIST_DRAW_FOCUSED ) - style |= ILD_FOCUS; - - return (ImageList_Draw((HIMAGELIST) GetHIMAGELIST(), index, hDC, - x, y, style) != 0); -#endif -} - -#endif - diff --git a/src/msw/iniconf.cpp b/src/msw/iniconf.cpp deleted file mode 100644 index c249619a24..0000000000 --- a/src/msw/iniconf.cpp +++ /dev/null @@ -1,481 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: src/msw/iniconf.cpp -// Purpose: implementation of wxIniConfig class -// Author: Vadim Zeitlin -// Modified by: -// Created: 27.07.98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows license -/////////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "iniconf.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP - #include - #include - #include - #include - #include -#endif //WX_PRECOMP - -#include -#include -#include - -#include - -// _WINDOWS_ is defined when windows.h is included, -// __WXMSW__ is defined for MS Windows compilation -#if defined(__WXMSW__) && !defined(_WINDOWS_) - #include -#endif //windows.h - -// ---------------------------------------------------------------------------- -// constants -// ---------------------------------------------------------------------------- - -// we replace all path separators with this character -#define PATH_SEP_REPLACE '_' - -// ============================================================================ -// implementation -// ============================================================================ - -// ---------------------------------------------------------------------------- -// ctor & dtor -// ---------------------------------------------------------------------------- - -wxIniConfig::wxIniConfig(const wxString& strAppName, const wxString& strVendor, - const wxString& localFilename, const wxString& globalFilename, long style): - wxConfigBase(strAppName, strVendor, localFilename, globalFilename, style) -{ - if ( GetAppName().IsEmpty() ) - { - wxString app; - if (wxTheApp) - app = wxTheApp->GetAppName(); - wxASSERT( !app.IsEmpty() ); - SetAppName(app); - } - - // Vendor name is required in wxIniConfig. - // TODO: should it be required? Why isn't appName used instead? -- JACS - if ( GetVendorName().IsEmpty() ) - { - wxString vendor; - if (wxTheApp) - vendor = wxTheApp->GetVendorName(); - else - vendor = strAppName; - SetVendorName(vendor); - } - - m_strLocalFilename = localFilename; - if (m_strLocalFilename.IsEmpty()) - { - m_strLocalFilename = GetAppName() + ".ini"; - } - - // append the extension if none given and it's not an absolute file name - // (otherwise we assume that they know what they're doing) - if ( !wxIsPathSeparator(m_strLocalFilename[0u]) && - m_strLocalFilename.Find('.') == wxNOT_FOUND ) - { - m_strLocalFilename << ".ini"; - } - - // set root path - SetPath(""); -} - -wxIniConfig::~wxIniConfig() -{ -} - -// ---------------------------------------------------------------------------- -// path management -// ---------------------------------------------------------------------------- - -void wxIniConfig::SetPath(const wxString& strPath) -{ - wxArrayString aParts; - - if ( strPath.IsEmpty() ) { - // nothing - } - else if ( strPath[0u] == wxCONFIG_PATH_SEPARATOR ) { - // absolute path - wxSplitPath(aParts, strPath); - } - else { - // relative path, combine with current one - wxString strFullPath = GetPath(); - strFullPath << wxCONFIG_PATH_SEPARATOR << strPath; - wxSplitPath(aParts, strFullPath); - } - - size_t nPartsCount = aParts.Count(); - m_strPath.Empty(); - if ( nPartsCount == 0 ) { - // go to the root - m_strGroup = PATH_SEP_REPLACE; - } - else { - // translate - m_strGroup = aParts[0u]; - for ( size_t nPart = 1; nPart < nPartsCount; nPart++ ) { - if ( nPart > 1 ) - m_strPath << PATH_SEP_REPLACE; - m_strPath << aParts[nPart]; - } - } - - // other functions assume that all this is true, i.e. there are no trailing - // underscores at the end except if the group is the root one - wxASSERT( (m_strPath.IsEmpty() || m_strPath.Last() != PATH_SEP_REPLACE) && - (m_strGroup == wxString(PATH_SEP_REPLACE) || - m_strGroup.Last() != PATH_SEP_REPLACE) ); -} - -const wxString& wxIniConfig::GetPath() const -{ - static wxString s_str; - - // always return abs path - s_str = wxCONFIG_PATH_SEPARATOR; - - if ( m_strGroup == wxString(PATH_SEP_REPLACE) ) { - // we're at the root level, nothing to do - } - else { - s_str << m_strGroup; - if ( !m_strPath.IsEmpty() ) - s_str << wxCONFIG_PATH_SEPARATOR; - for ( const char *p = m_strPath; *p != '\0'; p++ ) { - s_str << (*p == PATH_SEP_REPLACE ? wxCONFIG_PATH_SEPARATOR : *p); - } - } - - return s_str; -} - -wxString wxIniConfig::GetPrivateKeyName(const wxString& szKey) const -{ - wxString strKey; - - if ( !m_strPath.IsEmpty() ) - strKey << m_strPath << PATH_SEP_REPLACE; - - strKey << szKey; - - return strKey; -} - -wxString wxIniConfig::GetKeyName(const wxString& szKey) const -{ - wxString strKey; - - if ( m_strGroup != wxString(PATH_SEP_REPLACE) ) - strKey << m_strGroup << PATH_SEP_REPLACE; - if ( !m_strPath.IsEmpty() ) - strKey << m_strPath << PATH_SEP_REPLACE; - - strKey << szKey; - - return strKey; -} - -// ---------------------------------------------------------------------------- -// enumeration -// ---------------------------------------------------------------------------- - -// not implemented -bool wxIniConfig::GetFirstGroup(wxString& str, long& lIndex) const -{ - wxFAIL_MSG("not implemented"); - - return FALSE; -} - -bool wxIniConfig::GetNextGroup (wxString& str, long& lIndex) const -{ - wxFAIL_MSG("not implemented"); - - return FALSE; -} - -bool wxIniConfig::GetFirstEntry(wxString& str, long& lIndex) const -{ - wxFAIL_MSG("not implemented"); - - return FALSE; -} - -bool wxIniConfig::GetNextEntry (wxString& str, long& lIndex) const -{ - wxFAIL_MSG("not implemented"); - - return FALSE; -} - -// ---------------------------------------------------------------------------- -// misc info -// ---------------------------------------------------------------------------- - -// not implemented -size_t wxIniConfig::GetNumberOfEntries(bool bRecursive) const -{ - wxFAIL_MSG("not implemented"); - - return (size_t)-1; -} - -size_t wxIniConfig::GetNumberOfGroups(bool bRecursive) const -{ - wxFAIL_MSG("not implemented"); - - return (size_t)-1; -} - -bool wxIniConfig::HasGroup(const wxString& strName) const -{ - wxFAIL_MSG("not implemented"); - - return FALSE; -} - -bool wxIniConfig::HasEntry(const wxString& strName) const -{ - wxFAIL_MSG("not implemented"); - - return FALSE; -} - -// is current group empty? -bool wxIniConfig::IsEmpty() const -{ - char szBuf[1024]; - - GetPrivateProfileString(m_strGroup, NULL, "", - szBuf, WXSIZEOF(szBuf), m_strLocalFilename); - if ( !::IsEmpty(szBuf) ) - return FALSE; - - GetProfileString(m_strGroup, NULL, "", szBuf, WXSIZEOF(szBuf)); - if ( !::IsEmpty(szBuf) ) - return FALSE; - - return TRUE; -} - -// ---------------------------------------------------------------------------- -// read/write -// ---------------------------------------------------------------------------- - -bool wxIniConfig::Read(const wxString& szKey, wxString *pstr) const -{ - wxConfigPathChanger path(this, szKey); - wxString strKey = GetPrivateKeyName(path.Name()); - - char szBuf[1024]; // @@ should dynamically allocate memory... - - // first look in the private INI file - - // NB: the lpDefault param to GetPrivateProfileString can't be NULL - GetPrivateProfileString(m_strGroup, strKey, "", - szBuf, WXSIZEOF(szBuf), m_strLocalFilename); - if ( ::IsEmpty(szBuf) ) { - // now look in win.ini - wxString strKey = GetKeyName(path.Name()); - GetProfileString(m_strGroup, strKey, "", szBuf, WXSIZEOF(szBuf)); - } - - if ( ::IsEmpty(szBuf) ) { - return FALSE; - } - else { - return TRUE; - } -} - -bool wxIniConfig::Read(const wxString& szKey, wxString *pstr, - const wxString& szDefault) const -{ - wxConfigPathChanger path(this, szKey); - wxString strKey = GetPrivateKeyName(path.Name()); - - char szBuf[1024]; // @@ should dynamically allocate memory... - - // first look in the private INI file - - // NB: the lpDefault param to GetPrivateProfileString can't be NULL - GetPrivateProfileString(m_strGroup, strKey, "", - szBuf, WXSIZEOF(szBuf), m_strLocalFilename); - if ( ::IsEmpty(szBuf) ) { - // now look in win.ini - wxString strKey = GetKeyName(path.Name()); - GetProfileString(m_strGroup, strKey, "", szBuf, WXSIZEOF(szBuf)); - } - - if ( ::IsEmpty(szBuf) ) { - *pstr = szDefault; - return FALSE; - } - else { - return TRUE; - } -} - -bool wxIniConfig::Read(const wxString& szKey, long *pl) const -{ - wxConfigPathChanger path(this, szKey); - wxString strKey = GetPrivateKeyName(path.Name()); - - // hack: we have no mean to know if it really found the default value or - // didn't find anything, so we call it twice - - static const int nMagic = 17; // 17 is some "rare" number - static const int nMagic2 = 28; // arbitrary number != nMagic - long lVal = GetPrivateProfileInt(m_strGroup, strKey, nMagic, m_strLocalFilename); - if ( lVal != nMagic ) { - // the value was read from the file - *pl = lVal; - return TRUE; - } - - // is it really nMagic? - lVal = GetPrivateProfileInt(m_strGroup, strKey, nMagic2, m_strLocalFilename); - if ( lVal == nMagic ) { - // the nMagic it returned was indeed read from the file - *pl = lVal; - return TRUE; - } - - // no, it was just returning the default value, so now look in win.ini - *pl = GetProfileInt(GetVendorName(), GetKeyName(szKey), *pl); - - return TRUE; -} - -bool wxIniConfig::Write(const wxString& szKey, const wxString& szValue) -{ - wxConfigPathChanger path(this, szKey); - wxString strKey = GetPrivateKeyName(path.Name()); - - bool bOk = WritePrivateProfileString(m_strGroup, strKey, - szValue, m_strLocalFilename) != 0; - - if ( !bOk ) - wxLogLastError("WritePrivateProfileString"); - - return bOk; -} - -bool wxIniConfig::Write(const wxString& szKey, long lValue) -{ - // ltoa() is not ANSI :-( - char szBuf[40]; // should be good for sizeof(long) <= 16 (128 bits) - sprintf(szBuf, "%ld", lValue); - - return Write(szKey, szBuf); -} - -bool wxIniConfig::Flush(bool /* bCurrentOnly */) -{ - // this is just the way it works - return WritePrivateProfileString(NULL, NULL, NULL, m_strLocalFilename) != 0; -} - -// ---------------------------------------------------------------------------- -// delete -// ---------------------------------------------------------------------------- - -bool wxIniConfig::DeleteEntry(const wxString& szKey, bool bGroupIfEmptyAlso) -{ - // passing NULL as value to WritePrivateProfileString deletes the key -// if ( !Write(szKey, (const char *)NULL) ) -// return FALSE; - wxConfigPathChanger path(this, szKey); - wxString strKey = GetPrivateKeyName(path.Name()); - - if (WritePrivateProfileString(m_strGroup, szKey, - (const char*) NULL, m_strLocalFilename) == 0) - return FALSE; - - if ( !bGroupIfEmptyAlso || !IsEmpty() ) - return TRUE; - - // delete the current group too - bool bOk = WritePrivateProfileString(m_strGroup, NULL, - NULL, m_strLocalFilename) != 0; - - if ( !bOk ) - wxLogLastError("WritePrivateProfileString"); - - return bOk; -} - -bool wxIniConfig::DeleteGroup(const wxString& szKey) -{ - wxConfigPathChanger path(this, szKey); - - // passing NULL as section name to WritePrivateProfileString deletes the - // whole section according to the docs - bool bOk = WritePrivateProfileString(path.Name(), NULL, - NULL, m_strLocalFilename) != 0; - - if ( !bOk ) - wxLogLastError("WritePrivateProfileString"); - - return bOk; -} - -#ifndef MAX_PATH -#define MAX_PATH 256 -#endif - -bool wxIniConfig::DeleteAll() -{ - // first delete our group in win.ini - WriteProfileString(GetVendorName(), NULL, NULL); - - // then delete our own ini file - char szBuf[MAX_PATH]; - size_t nRc = GetWindowsDirectory(szBuf, WXSIZEOF(szBuf)); - if ( nRc == 0 ) - wxLogLastError("GetWindowsDirectory"); - else if ( nRc > WXSIZEOF(szBuf) ) - wxFAIL_MSG("buffer is too small for Windows directory."); - - wxString strFile = szBuf; - strFile << '\\' << m_strLocalFilename; - - if ( !wxRemoveFile(strFile) ) { - wxLogSysError(_("Can't delete the INI file '%s'"), strFile.c_str()); - return FALSE; - } - - return TRUE; -} - -bool wxIniConfig::RenameEntry(const wxString& oldName, const wxString& newName) -{ - // Not implemented - return FALSE; -} - -bool wxIniConfig::RenameGroup(const wxString& oldName, const wxString& newName) -{ - // Not implemented - return FALSE; -} diff --git a/src/msw/joystick.cpp b/src/msw/joystick.cpp deleted file mode 100644 index 5fa69fd9ce..0000000000 --- a/src/msw/joystick.cpp +++ /dev/null @@ -1,544 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: joystick.cpp -// Purpose: wxJoystick class -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "joystick.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#include - -#ifndef __GNUWIN32__ -#include -#endif - -#if !defined(__WIN32__) && !defined(_MMRESULT_) -typedef UINT MMRESULT; -#endif - -#ifndef __TWIN32__ -#ifdef __GNUWIN32__ -#include -#endif -#endif - -// Why doesn't BC++ have joyGetPosEx? -#if !defined(__WIN32__) || defined(__BORLANDC__) || defined(__TWIN32__) -#define NO_JOYGETPOSEX -#endif - -#include -#include - -IMPLEMENT_DYNAMIC_CLASS(wxJoystick, wxObject) - -// Attributes -//////////////////////////////////////////////////////////////////////////// - -wxPoint wxJoystick::GetPosition(void) const -{ - JOYINFO joyInfo; - MMRESULT res = joyGetPos(m_joystick, & joyInfo); - if (res == JOYERR_NOERROR ) - return wxPoint(joyInfo.wXpos, joyInfo.wYpos); - else - return wxPoint(0, 0); -} - -int wxJoystick::GetZPosition(void) const -{ - JOYINFO joyInfo; - MMRESULT res = joyGetPos(m_joystick, & joyInfo); - if (res == JOYERR_NOERROR ) - return joyInfo.wZpos; - else - return 0; -} - -int wxJoystick::GetButtonState(void) const -{ - JOYINFO joyInfo; - MMRESULT res = joyGetPos(m_joystick, & joyInfo); - if (res == JOYERR_NOERROR ) - { - int buttons = 0; - - if (joyInfo.wButtons & JOY_BUTTON1) - buttons |= wxJOY_BUTTON1; - if (joyInfo.wButtons & JOY_BUTTON2) - buttons |= wxJOY_BUTTON2; - if (joyInfo.wButtons & JOY_BUTTON3) - buttons |= wxJOY_BUTTON3; - if (joyInfo.wButtons & JOY_BUTTON4) - buttons |= wxJOY_BUTTON4; - return buttons; - } - else - return 0; -} - -int wxJoystick::GetPOVPosition(void) const -{ -#ifndef NO_JOYGETPOSEX - JOYINFOEX joyInfo; - joyInfo.dwFlags = JOY_RETURNPOV; - MMRESULT res = joyGetPosEx(m_joystick, & joyInfo); - if (res == JOYERR_NOERROR ) - { - return joyInfo.dwPOV; - } - else - return 0; -#else - return 0; -#endif -} - -int wxJoystick::GetPOVCTSPosition(void) const -{ -#ifndef NO_JOYGETPOSEX - JOYINFOEX joyInfo; - joyInfo.dwFlags = JOY_RETURNPOVCTS; - MMRESULT res = joyGetPosEx(m_joystick, & joyInfo); - if (res == JOYERR_NOERROR ) - { - return joyInfo.dwPOV; - } - else - return 0; -#else - return 0; -#endif -} - -int wxJoystick::GetRudderPosition(void) const -{ -#ifndef NO_JOYGETPOSEX - JOYINFOEX joyInfo; - joyInfo.dwFlags = JOY_RETURNR; - MMRESULT res = joyGetPosEx(m_joystick, & joyInfo); - if (res == JOYERR_NOERROR ) - { - return joyInfo.dwRpos; - } - else - return 0; -#else - return 0; -#endif -} - -int wxJoystick::GetUPosition(void) const -{ -#ifndef NO_JOYGETPOSEX - JOYINFOEX joyInfo; - joyInfo.dwFlags = JOY_RETURNU; - MMRESULT res = joyGetPosEx(m_joystick, & joyInfo); - if (res == JOYERR_NOERROR ) - { - return joyInfo.dwUpos; - } - else - return 0; -#else - return 0; -#endif -} - -int wxJoystick::GetVPosition(void) const -{ -#ifndef NO_JOYGETPOSEX - JOYINFOEX joyInfo; - joyInfo.dwFlags = JOY_RETURNV; - MMRESULT res = joyGetPosEx(m_joystick, & joyInfo); - if (res == JOYERR_NOERROR ) - { - return joyInfo.dwVpos; - } - else - return 0; -#else - return 0; -#endif -} - -int wxJoystick::GetMovementThreshold(void) const -{ - UINT thresh = 0; - MMRESULT res = joyGetThreshold(m_joystick, & thresh); - if (res == JOYERR_NOERROR ) - { - return thresh; - } - else - return 0; -} - -void wxJoystick::SetMovementThreshold(int threshold) -{ - UINT thresh = threshold; - joySetThreshold(m_joystick, thresh); -} - -// Capabilities -//////////////////////////////////////////////////////////////////////////// - -bool wxJoystick::IsOk(void) const -{ - JOYINFO joyInfo; - MMRESULT res = joyGetPos(m_joystick, & joyInfo); - return ((joyGetNumDevs() > 0) || (res == JOYERR_NOERROR)); -} - -int wxJoystick::GetNumberJoysticks(void) const -{ - return joyGetNumDevs(); -} - -int wxJoystick::GetManufacturerId(void) const -{ - JOYCAPS joyCaps; - if (joyGetDevCaps(m_joystick, & joyCaps, sizeof(JOYCAPS)) != JOYERR_NOERROR) - return 0; - else - return joyCaps.wMid; -} - -int wxJoystick::GetProductId(void) const -{ - JOYCAPS joyCaps; - if (joyGetDevCaps(m_joystick, & joyCaps, sizeof(JOYCAPS)) != JOYERR_NOERROR) - return 0; - else - return joyCaps.wPid; -} - -wxString wxJoystick::GetProductName(void) const -{ - JOYCAPS joyCaps; - if (joyGetDevCaps(m_joystick, & joyCaps, sizeof(JOYCAPS)) != JOYERR_NOERROR) - return wxString(""); - else - return wxString(joyCaps.szPname); -} - -int wxJoystick::GetXMin(void) const -{ - JOYCAPS joyCaps; - if (joyGetDevCaps(m_joystick, & joyCaps, sizeof(JOYCAPS)) != JOYERR_NOERROR) - return 0; - else - return joyCaps.wXmin; -} - -int wxJoystick::GetYMin(void) const -{ - JOYCAPS joyCaps; - if (joyGetDevCaps(m_joystick, & joyCaps, sizeof(JOYCAPS)) != JOYERR_NOERROR) - return 0; - else - return joyCaps.wYmin; -} - -int wxJoystick::GetZMin(void) const -{ - JOYCAPS joyCaps; - if (joyGetDevCaps(m_joystick, & joyCaps, sizeof(JOYCAPS)) != JOYERR_NOERROR) - return 0; - else - return joyCaps.wZmin; -} - -int wxJoystick::GetXMax(void) const -{ - JOYCAPS joyCaps; - if (joyGetDevCaps(m_joystick, & joyCaps, sizeof(JOYCAPS)) != JOYERR_NOERROR) - return 0; - else - return joyCaps.wXmax; -} - -int wxJoystick::GetYMax(void) const -{ - JOYCAPS joyCaps; - if (joyGetDevCaps(m_joystick, & joyCaps, sizeof(JOYCAPS)) != JOYERR_NOERROR) - return 0; - else - return joyCaps.wYmax; -} - -int wxJoystick::GetZMax(void) const -{ - JOYCAPS joyCaps; - if (joyGetDevCaps(m_joystick, & joyCaps, sizeof(JOYCAPS)) != JOYERR_NOERROR) - return 0; - else - return joyCaps.wZmax; -} - -int wxJoystick::GetNumberButtons(void) const -{ - JOYCAPS joyCaps; - if (joyGetDevCaps(m_joystick, & joyCaps, sizeof(JOYCAPS)) != JOYERR_NOERROR) - return 0; - else - return joyCaps.wNumButtons; -} - -int wxJoystick::GetNumberAxes(void) const -{ -#if defined(__WIN32__) && !defined(__TWIN32__) - JOYCAPS joyCaps; - if (joyGetDevCaps(m_joystick, & joyCaps, sizeof(JOYCAPS)) != JOYERR_NOERROR) - return 0; - else - return joyCaps.wNumAxes; -#else - return 0; -#endif -} - -int wxJoystick::GetMaxButtons(void) const -{ -#if defined(__WIN32__) && !defined(__TWIN32__) - JOYCAPS joyCaps; - if (joyGetDevCaps(m_joystick, & joyCaps, sizeof(JOYCAPS)) != JOYERR_NOERROR) - return 0; - else - return joyCaps.wMaxButtons; -#else - return 0; -#endif -} - -int wxJoystick::GetMaxAxes(void) const -{ -#if defined(__WIN32__) && !defined(__TWIN32__) - JOYCAPS joyCaps; - if (joyGetDevCaps(m_joystick, & joyCaps, sizeof(JOYCAPS)) != JOYERR_NOERROR) - return 0; - else - return joyCaps.wMaxAxes; -#else - return 0; -#endif -} - -int wxJoystick::GetPollingMin(void) const -{ - JOYCAPS joyCaps; - if (joyGetDevCaps(m_joystick, & joyCaps, sizeof(JOYCAPS)) != JOYERR_NOERROR) - return 0; - else - return joyCaps.wPeriodMin; -} - -int wxJoystick::GetPollingMax(void) const -{ - JOYCAPS joyCaps; - if (joyGetDevCaps(m_joystick, & joyCaps, sizeof(JOYCAPS)) != JOYERR_NOERROR) - return 0; - else - return joyCaps.wPeriodMax; -} - -int wxJoystick::GetRudderMin(void) const -{ -#if defined(__WIN32__) && !defined(__TWIN32__) - JOYCAPS joyCaps; - if (joyGetDevCaps(m_joystick, & joyCaps, sizeof(JOYCAPS)) != JOYERR_NOERROR) - return 0; - else - return joyCaps.wRmin; -#else - return 0; -#endif -} - -int wxJoystick::GetRudderMax(void) const -{ -#if defined(__WIN32__) && !defined(__TWIN32__) - JOYCAPS joyCaps; - if (joyGetDevCaps(m_joystick, & joyCaps, sizeof(JOYCAPS)) != JOYERR_NOERROR) - return 0; - else - return joyCaps.wRmax; -#else - return 0; -#endif -} - -int wxJoystick::GetUMin(void) const -{ -#if defined(__WIN32__) && !defined(__TWIN32__) - JOYCAPS joyCaps; - if (joyGetDevCaps(m_joystick, & joyCaps, sizeof(JOYCAPS)) != JOYERR_NOERROR) - return 0; - else - return joyCaps.wUmin; -#else - return 0; -#endif -} - -int wxJoystick::GetUMax(void) const -{ -#if defined(__WIN32__) && !defined(__TWIN32__) - JOYCAPS joyCaps; - if (joyGetDevCaps(m_joystick, & joyCaps, sizeof(JOYCAPS)) != JOYERR_NOERROR) - return 0; - else - return joyCaps.wUmax; -#else - return 0; -#endif -} - -int wxJoystick::GetVMin(void) const -{ -#if defined(__WIN32__) && !defined(__TWIN32__) - JOYCAPS joyCaps; - if (joyGetDevCaps(m_joystick, & joyCaps, sizeof(JOYCAPS)) != JOYERR_NOERROR) - return 0; - else - return joyCaps.wVmin; -#else - return 0; -#endif -} - -int wxJoystick::GetVMax(void) const -{ -#if defined(__WIN32__) && !defined(__TWIN32__) - JOYCAPS joyCaps; - if (joyGetDevCaps(m_joystick, & joyCaps, sizeof(JOYCAPS)) != JOYERR_NOERROR) - return 0; - else - return joyCaps.wVmax; -#else - return 0; -#endif -} - - -bool wxJoystick::HasRudder(void) const -{ -#if defined(__WIN32__) && !defined(__TWIN32__) - JOYCAPS joyCaps; - if (joyGetDevCaps(m_joystick, & joyCaps, sizeof(JOYCAPS)) != JOYERR_NOERROR) - return FALSE; - else - return ((joyCaps.wCaps & JOYCAPS_HASR) == JOYCAPS_HASR); -#else - return FALSE; -#endif -} - -bool wxJoystick::HasZ(void) const -{ -#if defined(__WIN32__) && !defined(__TWIN32__) - JOYCAPS joyCaps; - if (joyGetDevCaps(m_joystick, & joyCaps, sizeof(JOYCAPS)) != JOYERR_NOERROR) - return FALSE; - else - return ((joyCaps.wCaps & JOYCAPS_HASZ) == JOYCAPS_HASZ); -#else - return FALSE; -#endif -} - -bool wxJoystick::HasU(void) const -{ -#if defined(__WIN32__) && !defined(__TWIN32__) - JOYCAPS joyCaps; - if (joyGetDevCaps(m_joystick, & joyCaps, sizeof(JOYCAPS)) != JOYERR_NOERROR) - return FALSE; - else - return ((joyCaps.wCaps & JOYCAPS_HASU) == JOYCAPS_HASU); -#else - return FALSE; -#endif -} - -bool wxJoystick::HasV(void) const -{ -#if defined(__WIN32__) && !defined(__TWIN32__) - JOYCAPS joyCaps; - if (joyGetDevCaps(m_joystick, & joyCaps, sizeof(JOYCAPS)) != JOYERR_NOERROR) - return FALSE; - else - return ((joyCaps.wCaps & JOYCAPS_HASV) == JOYCAPS_HASV); -#else - return FALSE; -#endif -} - -bool wxJoystick::HasPOV(void) const -{ -#if defined(__WIN32__) && !defined(__TWIN32__) - JOYCAPS joyCaps; - if (joyGetDevCaps(m_joystick, & joyCaps, sizeof(JOYCAPS)) != JOYERR_NOERROR) - return FALSE; - else - return ((joyCaps.wCaps & JOYCAPS_HASPOV) == JOYCAPS_HASPOV); -#else - return FALSE; -#endif -} - -bool wxJoystick::HasPOV4Dir(void) const -{ -#if defined(__WIN32__) && !defined(__TWIN32__) - JOYCAPS joyCaps; - if (joyGetDevCaps(m_joystick, & joyCaps, sizeof(JOYCAPS)) != JOYERR_NOERROR) - return FALSE; - else - return ((joyCaps.wCaps & JOYCAPS_POV4DIR) == JOYCAPS_POV4DIR); -#else - return FALSE; -#endif -} - -bool wxJoystick::HasPOVCTS(void) const -{ -#if defined(__WIN32__) && !defined(__TWIN32__) - JOYCAPS joyCaps; - if (joyGetDevCaps(m_joystick, & joyCaps, sizeof(JOYCAPS)) != JOYERR_NOERROR) - return FALSE; - else - return ((joyCaps.wCaps & JOYCAPS_POVCTS) == JOYCAPS_POVCTS); -#else - return FALSE; -#endif -} - -// Operations -//////////////////////////////////////////////////////////////////////////// - -bool wxJoystick::SetCapture(wxWindow* win, int pollingFreq) -{ - BOOL changed = (pollingFreq == 0); - MMRESULT res = joySetCapture((HWND) win->GetHWND(), m_joystick, pollingFreq, changed); - return (res == JOYERR_NOERROR); -} - -bool wxJoystick::ReleaseCapture(void) -{ - MMRESULT res = joyReleaseCapture(m_joystick); - return (res == JOYERR_NOERROR); -} - diff --git a/src/msw/listbox.cpp b/src/msw/listbox.cpp deleted file mode 100644 index 29eda8f233..0000000000 --- a/src/msw/listbox.cpp +++ /dev/null @@ -1,826 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: listbox.cpp -// Purpose: wxListBox -// Author: Julian Smart -// Modified by: Vadim Zeitlin (owner drawn stuff) -// Created: -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows license -/////////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "listbox.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/listbox.h" -#include "wx/settings.h" -#include "wx/brush.h" -#include "wx/font.h" -#include "wx/dc.h" -#endif - -#include "wx/msw/private.h" - -#include -#include - -#ifndef __TWIN32__ -#ifdef __GNUWIN32__ -#include -#endif -#endif - -#ifdef GetCharWidth -#undef GetCharWidth -#endif - -#if wxUSE_OWNER_DRAWN - #include "wx/ownerdrw.h" -#endif - -#include "wx/dynarray.h" -#include "wx/log.h" - -#if !USE_SHARED_LIBRARY - IMPLEMENT_DYNAMIC_CLASS(wxListBox, wxControl) -#endif - -// ============================================================================ -// list box item declaration and implementation -// ============================================================================ - -#if wxUSE_OWNER_DRAWN - -class wxListBoxItem : public wxOwnerDrawn -{ -public: - wxListBoxItem(const wxString& str = ""); -}; - -wxListBoxItem::wxListBoxItem(const wxString& str) : wxOwnerDrawn(str, FALSE) -{ - // no bitmaps/checkmarks - SetMarginWidth(0); -} - -wxOwnerDrawn *wxListBox::CreateItem(size_t n) -{ - return new wxListBoxItem(); -} - -#endif //USE_OWNER_DRAWN - -// ============================================================================ -// list box control implementation -// ============================================================================ - -// this macro is dangerous but still better than tons of (HWND)GetHWND() -#define hwnd (HWND)GetHWND() - -bool wxListBox::MSWCommand(WXUINT param, WXWORD WXUNUSED(id)) -{ -/* - if (param == LBN_SELCANCEL) - { - event.extraLong = FALSE; - } -*/ - if (param == LBN_SELCHANGE) - { - wxCommandEvent event(wxEVT_COMMAND_LISTBOX_SELECTED, m_windowId); - wxArrayInt aSelections; - int count = GetSelections(aSelections); - if ( count > 0 ) - { - event.m_commandInt = aSelections[0] ; - event.m_clientData = GetClientData(event.m_commandInt); - wxString str(GetString(event.m_commandInt)); - if (str != "") - event.m_commandString = copystring((char *)(const char *)str); - } - else - { - event.m_commandInt = -1 ; - event.m_commandString = copystring("") ; - } - - event.SetEventObject( this ); - ProcessCommand(event); - if (event.m_commandString) - delete[] event.m_commandString ; - return TRUE; - } - else if (param == LBN_DBLCLK) - { - wxCommandEvent event(wxEVT_COMMAND_LISTBOX_DOUBLECLICKED, m_windowId); - event.SetEventObject( this ); - GetEventHandler()->ProcessEvent(event) ; - return TRUE; -/* - { -#if WXWIN_COMPATIBILITY - wxWindow *parent = (wxWindow *)GetParent(); - if (parent) - parent->GetEventHandler()->OnDefaultAction(this); -#endif - return TRUE; - } - */ - } - return FALSE; -} - -// Listbox item -wxListBox::wxListBox(void) -{ - m_noItems = 0; - m_selected = 0; -} - -bool wxListBox::Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos, - const wxSize& size, - int n, const wxString choices[], - long style, - const wxValidator& validator, - const wxString& name) -{ - m_noItems = 0; - m_hWnd = 0; - m_selected = 0; - - SetName(name); - SetValidator(validator); - - if (parent) parent->AddChild(this); - - wxSystemSettings settings; - SetBackgroundColour(settings.GetSystemColour(wxSYS_COLOUR_WINDOW)); - SetForegroundColour(parent->GetForegroundColour()); - - m_windowId = ( id == -1 ) ? (int)NewControlId() : id; - - int x = pos.x; - int y = pos.y; - int width = size.x; - int height = size.y; - m_windowStyle = style; - - DWORD wstyle = WS_VSCROLL | WS_TABSTOP | LBS_NOTIFY | LBS_HASSTRINGS; - if (m_windowStyle & wxLB_MULTIPLE) - wstyle |= LBS_MULTIPLESEL; - else if (m_windowStyle & wxLB_EXTENDED) - wstyle |= LBS_EXTENDEDSEL; - - if (m_windowStyle & wxLB_ALWAYS_SB) - wstyle |= LBS_DISABLENOSCROLL ; - if (m_windowStyle & wxLB_HSCROLL) - wstyle |= WS_HSCROLL; - if (m_windowStyle & wxLB_SORT) - wstyle |= LBS_SORT; - -#if wxUSE_OWNER_DRAWN - if ( m_windowStyle & wxLB_OWNERDRAW ) { - // we don't support LBS_OWNERDRAWVARIABLE yet - wstyle |= LBS_OWNERDRAWFIXED; - } -#endif - // Without this style, you get unexpected heights, so e.g. constraint layout - // doesn't work properly - wstyle |= LBS_NOINTEGRALHEIGHT; - - bool want3D; - WXDWORD exStyle = Determine3DEffects(WS_EX_CLIENTEDGE, &want3D) ; - - // Even with extended styles, need to combine with WS_BORDER - // for them to look right. - if ( want3D || wxStyleHasBorder(m_windowStyle) ) - { - wstyle |= WS_BORDER; - } - - m_hWnd = (WXHWND)::CreateWindowEx(exStyle, "LISTBOX", NULL, - wstyle | WS_CHILD, - 0, 0, 0, 0, - (HWND)parent->GetHWND(), (HMENU)m_windowId, - wxGetInstance(), NULL); - - wxCHECK_MSG( m_hWnd, FALSE, "Failed to create listbox" ); - -#if CTL3D - if (want3D) - { - Ctl3dSubclassCtl(hwnd); - m_useCtl3D = TRUE; - } -#endif - - // Subclass again to catch messages - SubclassWin(m_hWnd); - - size_t ui; - for (ui = 0; ui < (size_t)n; ui++) { - Append(choices[ui]); - } - - /* Not needed -- done in Append -#if wxUSE_OWNER_DRAWN - if ( m_windowStyle & wxLB_OWNERDRAW ) { - for (ui = 0; ui < (size_t)n; ui++) { - // create new item which will process WM_{DRAW|MEASURE}ITEM messages - wxOwnerDrawn *pNewItem = CreateItem(ui); - pNewItem->SetName(choices[ui]); - m_aItems.Add(pNewItem); - ListBox_SetItemData(hwnd, ui, pNewItem); - } - } -#endif -*/ - - if ( (m_windowStyle & wxLB_MULTIPLE) == 0 ) - SendMessage(hwnd, LB_SETCURSEL, 0, 0); - - SetFont(parent->GetFont()); - - SetSize(x, y, width, height); - - Show(TRUE); - - return TRUE; -} - -wxListBox::~wxListBox(void) -{ -#if wxUSE_OWNER_DRAWN - size_t uiCount = m_aItems.Count(); - while ( uiCount-- != 0 ) { - delete m_aItems[uiCount]; - } -#endif -} - -void wxListBox::SetupColours(void) -{ - SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOW)); - SetForegroundColour(GetParent()->GetForegroundColour()); -} - -void wxListBox::SetFirstItem(int N) -{ - SendMessage(hwnd,LB_SETTOPINDEX,(WPARAM)N,(LPARAM)0) ; -} - -void wxListBox::SetFirstItem(const wxString& s) -{ - int N = FindString(s) ; - - if (N>=0) - SetFirstItem(N) ; -} - -void wxListBox::Delete(int N) -{ - SendMessage(hwnd, LB_DELETESTRING, N, 0); - m_noItems --; - SetHorizontalExtent(""); -} - -void wxListBox::Append(const wxString& item) -{ - int index = ListBox_AddString(hwnd, item); - m_noItems ++; - -#if wxUSE_OWNER_DRAWN - if ( m_windowStyle & wxLB_OWNERDRAW ) { - wxOwnerDrawn *pNewItem = CreateItem(index); // dummy argument - pNewItem->SetName(item); - m_aItems.Add(pNewItem); - ListBox_SetItemData(hwnd, index, pNewItem); - } -#endif - - SetHorizontalExtent(item); -} - -void wxListBox::Append(const wxString& item, char *Client_data) -{ - int index = ListBox_AddString(hwnd, item); - m_noItems ++; - -#if wxUSE_OWNER_DRAWN - if ( m_windowStyle & wxLB_OWNERDRAW ) { - // client data must be pointer to wxOwnerDrawn, otherwise we would crash - // in OnMeasure/OnDraw. - wxFAIL_MSG("Can't use client data with owner-drawn listboxes"); - } - else -#endif - ListBox_SetItemData(hwnd, index, Client_data); - - SetHorizontalExtent(item); -} - -void wxListBox::Set(int n, const wxString *choices, char** clientData) -{ - ShowWindow(hwnd, SW_HIDE); - ListBox_ResetContent(hwnd); - int i; - for (i = 0; i < n; i++) - { - ListBox_AddString(hwnd, choices[i]); - if ( clientData ) - ListBox_SetItemData(hwnd, i, clientData[i]); - } - m_noItems = n; - -#if wxUSE_OWNER_DRAWN - if ( m_windowStyle & wxLB_OWNERDRAW ) { - // first delete old items - size_t ui = m_aItems.Count(); - while ( ui-- != 0 ) { - delete m_aItems[ui]; - } - m_aItems.Empty(); - - // then create new ones - for (ui = 0; ui < (size_t)n; ui++) { - wxOwnerDrawn *pNewItem = CreateItem(ui); - pNewItem->SetName(choices[ui]); - m_aItems.Add(pNewItem); - ListBox_SetItemData(hwnd, ui, pNewItem); - - wxASSERT_MSG(clientData[ui] == NULL, - "Can't use client data with owner-drawn listboxes"); - } - } -#endif - - SetHorizontalExtent(""); - ShowWindow(hwnd, SW_SHOW); -} - -int wxListBox::FindString(const wxString& s) const -{ - int pos = ListBox_FindStringExact(hwnd, (WPARAM)-1, s); - if (pos == LB_ERR) - return -1; - else - return pos; -} - -void wxListBox::Clear(void) -{ - ListBox_ResetContent(hwnd); - - m_noItems = 0; - ListBox_GetHorizontalExtent(hwnd); -} - -void wxListBox::SetSelection(int N, bool select) -{ - if ((m_windowStyle & wxLB_MULTIPLE) || (m_windowStyle & wxLB_EXTENDED)) - SendMessage(hwnd, LB_SETSEL, select, N); - else - { - int N1 = N; - if (!select) - N1 = -1; - SendMessage(hwnd, LB_SETCURSEL, N1, 0); - } -} - -bool wxListBox::Selected(int N) const -{ - return SendMessage(hwnd, LB_GETSEL, N, 0) == 0 ? FALSE : TRUE; -} - -void wxListBox::Deselect(int N) -{ - if ((m_windowStyle & wxLB_MULTIPLE) || (m_windowStyle & wxLB_EXTENDED)) - SendMessage(hwnd, LB_SETSEL, FALSE, N); -} - -char *wxListBox::GetClientData(int N) const -{ - return (char *)SendMessage(hwnd, LB_GETITEMDATA, N, 0); -} - -void wxListBox::SetClientData(int N, char *Client_data) -{ - if ( ListBox_SetItemData(hwnd, N, Client_data) == LB_ERR ) - wxLogDebug("LB_SETITEMDATA failed"); -} - -// Return number of selections and an array of selected integers -int wxListBox::GetSelections(wxArrayInt& aSelections) const -{ - aSelections.Empty(); - - if ((m_windowStyle & wxLB_MULTIPLE) || (m_windowStyle & wxLB_EXTENDED)) - { - int no_sel = ListBox_GetSelCount(hwnd); - if (no_sel != 0) { - int *selections = new int[no_sel]; - if ( ListBox_GetSelItems(hwnd, no_sel, selections) == LB_ERR ) { - wxFAIL_MSG("This listbox can't have single-selection style!"); - } - - aSelections.Alloc(no_sel); - for ( int n = 0; n < no_sel; n++ ) - aSelections.Add(selections[n]); - - delete [] selections; - } - - return no_sel; - } - else // single-selection listbox - { - aSelections.Add(ListBox_GetCurSel(hwnd)); - - return 1; - } -} - -// Get single selection, for single choice list items -int wxListBox::GetSelection() const -{ - wxCHECK_MSG( !(m_windowStyle & wxLB_MULTIPLE) && - !(m_windowStyle & wxLB_EXTENDED), - -1, - "GetSelection() can't be used with multiple-selection " - "listboxes, use GetSelections() instead." ); - - return ListBox_GetCurSel(hwnd); -} - -// Find string for position -wxString wxListBox::GetString(int N) const -{ - if (N < 0 || N > m_noItems) - return wxString(""); - - int len = (int)SendMessage(hwnd, LB_GETTEXT, N, (LONG)wxBuffer); - wxBuffer[len] = 0; - return wxString(wxBuffer); -} - -void wxListBox::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - int currentX, currentY; - GetPosition(¤tX, ¤tY); - - int x1 = x; - int y1 = y; - int w1 = width; - int h1 = height; - - if (x == -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) - x1 = currentX; - if (y == -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) - y1 = currentY; - - AdjustForParentClientOrigin(x1, y1, sizeFlags); - - // If we're prepared to use the existing size, then... - if (width == -1 && height == -1 && ((sizeFlags & wxSIZE_AUTO) != wxSIZE_AUTO)) - { - GetSize(&w1, &h1); - } - - int cx; // button font dimensions - int cy; - - wxGetCharSize(GetHWND(), &cx, &cy, & this->GetFont()); - - float control_width, control_height, control_x, control_y; - - // Deal with default size (using -1 values) - if (w1<=0) - w1 = DEFAULT_ITEM_WIDTH; - - if (h1<=0) - h1 = DEFAULT_ITEM_HEIGHT; - - control_x = (float)x1; - control_y = (float)y1; - control_width = (float)w1; - control_height = (float)h1; - - // Calculations may have made size too small - if (control_height <= 0) - control_height = (float)DEFAULT_ITEM_HEIGHT; - - if (control_width <= 0) - control_width = (float)DEFAULT_ITEM_WIDTH; - -// wxDebugMsg("About to set the listbox height to %d", (int)control_height); - MoveWindow(hwnd, (int)control_x, (int)control_y, - (int)control_width, (int)control_height, TRUE); - -} - -// Windows-specific code to set the horizontal extent of -// the listbox, if necessary. If s is non-NULL, it's -// used to calculate the horizontal extent. -// Otherwise, all strings are used. -void wxListBox::SetHorizontalExtent(const wxString& s) -{ - // Only necessary if we want a horizontal scrollbar - if (!(m_windowStyle & wxHSCROLL)) - return; - TEXTMETRIC lpTextMetric; - - if (s != "") - { - int existingExtent = (int)SendMessage(hwnd, LB_GETHORIZONTALEXTENT, 0, 0L); - HDC dc = GetWindowDC(hwnd); - HFONT oldFont = 0; - if (GetFont().Ok() && GetFont().GetResourceHandle()) - oldFont = (HFONT) ::SelectObject(dc, (HFONT) GetFont().GetResourceHandle()); - - GetTextMetrics(dc, &lpTextMetric); - SIZE extentXY; - ::GetTextExtentPoint(dc, (LPSTR) (const char *)s, s.Length(), &extentXY); - int extentX = (int)(extentXY.cx + lpTextMetric.tmAveCharWidth); - - if (oldFont) - ::SelectObject(dc, oldFont); - - ReleaseDC(hwnd, dc); - if (extentX > existingExtent) - SendMessage(hwnd, LB_SETHORIZONTALEXTENT, LOWORD(extentX), 0L); - return; - } - else - { - int largestExtent = 0; - HDC dc = GetWindowDC(hwnd); - HFONT oldFont = 0; - if (GetFont().Ok() && GetFont().GetResourceHandle()) - oldFont = (HFONT) ::SelectObject(dc, (HFONT) GetFont().GetResourceHandle()); - - GetTextMetrics(dc, &lpTextMetric); - int i; - for (i = 0; i < m_noItems; i++) - { - int len = (int)SendMessage(hwnd, LB_GETTEXT, i, (LONG)wxBuffer); - wxBuffer[len] = 0; - SIZE extentXY; - ::GetTextExtentPoint(dc, (LPSTR)wxBuffer, len, &extentXY); - int extentX = (int)(extentXY.cx + lpTextMetric.tmAveCharWidth); - if (extentX > largestExtent) - largestExtent = extentX; - } - if (oldFont) - ::SelectObject(dc, oldFont); - - ReleaseDC(hwnd, dc); - SendMessage(hwnd, LB_SETHORIZONTALEXTENT, LOWORD(largestExtent), 0L); - } -} - -void -wxListBox::InsertItems(int nItems, const wxString items[], int pos) -{ - int i; - for (i = 0; i < nItems; i++) - ListBox_InsertString(hwnd, i + pos, items[i]); - m_noItems += nItems; - - #if wxUSE_OWNER_DRAWN - if ( m_windowStyle & wxLB_OWNERDRAW ) { - for ( i = 0; i < nItems; i++ ) { - wxOwnerDrawn *pNewItem = CreateItem((size_t)(pos + i)); - pNewItem->SetName(items[i]); - m_aItems.Insert(pNewItem, (size_t)(pos + i)); - ListBox_SetItemData(hwnd, i, pNewItem); - } - } - #endif - - SetHorizontalExtent(""); -} - -void wxListBox::SetString(int N, const wxString& s) -{ - int sel = -1; - if (!(m_windowStyle & wxLB_MULTIPLE) && !(m_windowStyle & wxLB_EXTENDED)) - sel = GetSelection(); - - char *oldData = (char *)wxListBox::GetClientData(N); - - SendMessage(hwnd, LB_DELETESTRING, N, 0); - - int newN = N; - if (N == (m_noItems - 1)) - newN = -1; - - SendMessage(hwnd, LB_INSERTSTRING, newN, (LPARAM) (const char *)s); - if (oldData) - wxListBox::SetClientData(N, oldData); - - // Selection may have changed - if (sel >= 0) - SetSelection(sel); - -#if wxUSE_OWNER_DRAWN - if ( m_windowStyle & wxLB_OWNERDRAW ) - // update item's text - m_aItems[N]->SetName(s); -#endif //USE_OWNER_DRAWN -} - -int wxListBox::Number (void) const -{ - return m_noItems; -} - -// For single selection items only -wxString wxListBox::GetStringSelection (void) const -{ - int sel = GetSelection (); - if (sel > -1) - return this->GetString (sel); - else - return wxString(""); -} - -bool wxListBox::SetStringSelection (const wxString& s, bool flag) -{ - int sel = FindString (s); - if (sel > -1) - { - SetSelection (sel, flag); - return TRUE; - } - else - return FALSE; -} - -// Is this the right thing? Won't setselection generate a command -// event too? No! It'll just generate a setselection event. -// But we still can't have this being called whenever a real command -// is generated, because it sets the selection, which will already -// have been done! (Unless we have an optional argument for calling -// by the actual window system, or a separate function, ProcessCommand) -void wxListBox::Command (wxCommandEvent & event) -{ - if (event.m_extraLong) - SetSelection (event.m_commandInt); - else - { - Deselect (event.m_commandInt); - return; - } - ProcessCommand (event); -} - -WXHBRUSH wxListBox::OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor, - WXUINT message, WXWPARAM wParam, WXLPARAM lParam) -{ -#if CTL3D - if ( m_useCtl3D ) - { - HBRUSH hbrush = Ctl3dCtlColorEx(message, wParam, lParam); - return (WXHBRUSH) hbrush; - } -#endif - - if (GetParent()->GetTransparentBackground()) - SetBkMode((HDC) pDC, TRANSPARENT); - else - SetBkMode((HDC) pDC, OPAQUE); - - ::SetBkColor((HDC) pDC, RGB(GetBackgroundColour().Red(), GetBackgroundColour().Green(), GetBackgroundColour().Blue())); - ::SetTextColor((HDC) pDC, RGB(GetForegroundColour().Red(), GetForegroundColour().Green(), GetForegroundColour().Blue())); - - wxBrush *backgroundBrush = wxTheBrushList->FindOrCreateBrush(GetBackgroundColour(), wxSOLID); - - // Note that this will be cleaned up in wxApp::OnIdle, if backgroundBrush - // has a zero usage count. - backgroundBrush->RealizeResource(); - return (WXHBRUSH) backgroundBrush->GetResourceHandle(); -} - -long wxListBox::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) -{ -#if 0 - switch (nMsg) - { - case WM_INITDIALOG: - case WM_ACTIVATE: - case WM_SETFOCUS: - case WM_KILLFOCUS: - case WM_CREATE: - case WM_PAINT: - case WM_QUERYDRAGICON: - case WM_SIZE: - case WM_RBUTTONDOWN: - case WM_RBUTTONUP: - case WM_RBUTTONDBLCLK: - case WM_MBUTTONDOWN: - case WM_MBUTTONUP: - case WM_MBUTTONDBLCLK: - case WM_LBUTTONDOWN: - case WM_LBUTTONUP: - case WM_LBUTTONDBLCLK: - case WM_MOUSEMOVE: - case WM_COMMAND: - case WM_NOTIFY: - case WM_DESTROY: - case WM_MENUSELECT: - case WM_INITMENUPOPUP: - case WM_DRAWITEM: - case WM_MEASUREITEM: - case WM_KEYDOWN: - case WM_KEYUP: - case WM_CHAR: // Always an ASCII character - case WM_HSCROLL: - case WM_VSCROLL: - case WM_CTLCOLORBTN: - case WM_CTLCOLORDLG: - case WM_CTLCOLORLISTBOX: - case WM_CTLCOLORMSGBOX: - case WM_CTLCOLORSCROLLBAR: - case WM_CTLCOLORSTATIC: - case WM_CTLCOLOREDIT: - case WM_SYSCOLORCHANGE: - case WM_ERASEBKGND: - case WM_MDIACTIVATE: - case WM_DROPFILES: - case WM_QUERYENDSESSION: - case WM_CLOSE: - case WM_GETMINMAXINFO: - case WM_NCHITTEST: - return MSWDefWindowProc(nMsg, wParam, lParam ); - } -#endif - - return wxControl::MSWWindowProc(nMsg, wParam, lParam); -} - -#if wxUSE_OWNER_DRAWN - -// drawing -// ------- - -// space beneath/above each row in pixels -// "standard" checklistbox use 1 here, some might prefer 2. 0 is ugly. -#define OWNER_DRAWN_LISTBOX_EXTRA_SPACE (1) - -// the height is the same for all items -// ## should be changed for LBS_OWNERDRAWVARIABLE style listboxes -// NB: can't forward this to wxListBoxItem because LB_SETITEMDATA -// message is not yet sent when we get here! -bool wxListBox::MSWOnMeasure(WXMEASUREITEMSTRUCT *item) -{ - // only owner-drawn control should receive this message - wxCHECK( ((m_windowStyle & wxLB_OWNERDRAW) == wxLB_OWNERDRAW), FALSE ); - - MEASUREITEMSTRUCT *pStruct = (MEASUREITEMSTRUCT *)item; - - wxDC dc; - dc.SetHDC((WXHDC)CreateIC("DISPLAY", NULL, NULL, 0)); - dc.SetFont(wxSystemSettings::GetSystemFont(wxSYS_ANSI_VAR_FONT)); - - pStruct->itemHeight = dc.GetCharHeight() + 2*OWNER_DRAWN_LISTBOX_EXTRA_SPACE; - pStruct->itemWidth = dc.GetCharWidth(); - - return TRUE; -} - -// forward the message to the appropriate item -bool wxListBox::MSWOnDraw(WXDRAWITEMSTRUCT *item) -{ - // only owner-drawn control should receive this message - wxCHECK( ((m_windowStyle & wxLB_OWNERDRAW) == wxLB_OWNERDRAW), FALSE ); - - DRAWITEMSTRUCT *pStruct = (DRAWITEMSTRUCT *)item; - wxListBoxItem *pItem = (wxListBoxItem *)SendMessage(hwnd, LB_GETITEMDATA, - pStruct->itemID, 0); - - wxCHECK( (int)pItem != LB_ERR, FALSE ); - - wxDC dc; - dc.SetHDC((WXHDC)pStruct->hDC, FALSE); - wxRect rect(pStruct->rcItem.left, pStruct->rcItem.top, - pStruct->rcItem.right - pStruct->rcItem.left, - pStruct->rcItem.bottom - pStruct->rcItem.top); - - return pItem->OnDrawItem(dc, rect, - (wxOwnerDrawn::wxODAction)pStruct->itemAction, - (wxOwnerDrawn::wxODStatus)pStruct->itemState); -} - -#endif - // wxUSE_OWNER_DRAWN diff --git a/src/msw/listctrl.cpp b/src/msw/listctrl.cpp deleted file mode 100644 index f19fcfb670..0000000000 --- a/src/msw/listctrl.cpp +++ /dev/null @@ -1,1450 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: listctrl.cpp -// Purpose: wxListCtrl -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "listctrl.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#if defined(__WIN95__) - -#include "wx/listctrl.h" -#include "wx/log.h" - -#include "wx/msw/private.h" - -#if (defined(__WIN95__) && !defined(__GNUWIN32__)) || defined(__TWIN32__) -#include -#endif - -#ifndef __TWIN32__ -#ifdef __GNUWIN32__ -#include "wx/msw/gnuwin32/extra.h" -#endif -#endif - -static void wxConvertToMSWListItem(const wxListCtrl *ctrl, wxListItem& info, LV_ITEM& tvItem); -static void wxConvertFromMSWListItem(const wxListCtrl *ctrl, wxListItem& info, LV_ITEM& tvItem, HWND getFullInfo = 0); - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxListCtrl, wxControl) -IMPLEMENT_DYNAMIC_CLASS(wxListItem, wxObject) - -#endif - -wxListCtrl::wxListCtrl(void) -{ - m_imageListNormal = NULL; - m_imageListSmall = NULL; - m_imageListState = NULL; - m_baseStyle = 0; - m_colCount = 0; - m_textCtrl = NULL; -} - -bool wxListCtrl::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, - long style, const wxValidator& validator, const wxString& name) -{ - m_imageListNormal = NULL; - m_imageListSmall = NULL; - m_imageListState = NULL; - m_textCtrl = NULL; - m_colCount = 0; - - SetValidator(validator); - SetName(name); - - int x = pos.x; - int y = pos.y; - int width = size.x; - int height = size.y; - - m_windowStyle = style; - - SetParent(parent); - - if (width <= 0) - width = 100; - if (height <= 0) - height = 30; - if (x < 0) - x = 0; - if (y < 0) - y = 0; - - m_windowId = (id == -1) ? NewControlId() : id; - - DWORD wstyle = WS_VISIBLE | WS_CHILD | WS_TABSTOP; - - bool want3D; - WXDWORD exStyle = Determine3DEffects(WS_EX_CLIENTEDGE, &want3D) ; - - // Even with extended styles, need to combine with WS_BORDER - // for them to look right. - if ( want3D || wxStyleHasBorder(m_windowStyle) ) - wstyle |= WS_BORDER; - - wstyle |= LVS_SHAREIMAGELISTS | LVS_SHOWSELALWAYS ; - m_baseStyle = wstyle; - - long oldStyle = 0; // Dummy - wstyle |= ConvertToMSWStyle(oldStyle, m_windowStyle); - - // Create the ListView control. - m_hWnd = (WXHWND)CreateWindowEx(exStyle, - WC_LISTVIEW, - "", - wstyle, - x, y, width, height, - (HWND) parent->GetHWND(), - (HMENU)m_windowId, - wxGetInstance(), - NULL); - - if ( !m_hWnd ) { - wxLogError("Can't create list control window."); - - return FALSE; - } - - wxSystemSettings settings; - SetBackgroundColour(settings.GetSystemColour(wxSYS_COLOUR_WINDOW)); - SetForegroundColour(parent->GetForegroundColour()); - - if (parent) parent->AddChild(this); - - SubclassWin((WXHWND) m_hWnd); - - return TRUE; -} - -wxListCtrl::~wxListCtrl(void) -{ - if (m_textCtrl) - { - m_textCtrl->UnsubclassWin(); - m_textCtrl->SetHWND(0); - delete m_textCtrl; - m_textCtrl = NULL; - } -} - -// Add or remove a single window style -void wxListCtrl::SetSingleStyle(long style, bool add) -{ - long flag = GetWindowStyleFlag(); - - // Get rid of conflicting styles - if ( add ) - { - if ( style & wxLC_MASK_TYPE) - flag = flag & ~wxLC_MASK_TYPE ; - if ( style & wxLC_MASK_ALIGN ) - flag = flag & ~wxLC_MASK_ALIGN ; - if ( style & wxLC_MASK_SORT ) - flag = flag & ~wxLC_MASK_SORT ; - } - - if ( flag & style ) - { - if ( !add ) - flag -= style; - } - else - { - if ( add ) - { - flag |= style; - } - } - - m_windowStyle = flag; - - RecreateWindow(); -} - -// Set the whole window style -void wxListCtrl::SetWindowStyleFlag(long flag) -{ - m_windowStyle = flag; - - RecreateWindow(); -} - -void wxListCtrl::RecreateWindow(void) -{ - if ( GetHWND() ) - { - long oldStyle = 0; - long style = ConvertToMSWStyle(oldStyle, m_windowStyle); - style |= m_baseStyle; -// ::SetWindowLong((HWND) GetHWND(), GWL_STYLE, style); - - // The following recreation of the window appears to be necessary - // because SetWindowLong doesn't seem to do it. - - int x, y, width, height; - GetPosition(&x, &y); - GetSize(&width, &height); - - UnsubclassWin(); - ::DestroyWindow((HWND) GetHWND()); - - // Experimental - // Recreate the ListView control: unfortunately I can't - // make it work by using SetWindowLong. - bool want3D; - WXDWORD exStyle = Determine3DEffects(WS_EX_CLIENTEDGE, &want3D) ; - HWND hWndListControl = CreateWindowEx(exStyle, - WC_LISTVIEW, - "", - style, - x, y, width, height, - (HWND) GetParent()->GetHWND(), - (HMENU)m_windowId, - wxGetInstance(), - NULL ); - - m_hWnd = (WXHWND) hWndListControl; - SubclassWin((WXHWND) m_hWnd); - - if ( m_imageListNormal ) - SetImageList(m_imageListNormal, wxIMAGE_LIST_NORMAL); - if ( m_imageListSmall ) - SetImageList(m_imageListSmall, wxIMAGE_LIST_SMALL); - if ( m_imageListState ) - SetImageList(m_imageListState, wxIMAGE_LIST_STATE); - } -} - -// Can be just a single style, or a bitlist -long wxListCtrl::ConvertToMSWStyle(long& oldStyle, long style) const -{ - long wstyle = 0; - if ( style & wxLC_ICON ) - { - if ( (oldStyle & LVS_TYPEMASK) == LVS_SMALLICON ) - oldStyle -= LVS_SMALLICON; - if ( (oldStyle & LVS_TYPEMASK) == LVS_REPORT ) - oldStyle -= LVS_REPORT; - if ( (oldStyle & LVS_TYPEMASK) == LVS_LIST ) - oldStyle -= LVS_LIST; - wstyle |= LVS_ICON; - } - - if ( style & wxLC_SMALL_ICON ) - { - if ( (oldStyle & LVS_TYPEMASK) == LVS_ICON ) - oldStyle -= LVS_ICON; - if ( (oldStyle & LVS_TYPEMASK) == LVS_REPORT ) - oldStyle -= LVS_REPORT; - if ( (oldStyle & LVS_TYPEMASK) == LVS_LIST ) - oldStyle -= LVS_LIST; - wstyle |= LVS_SMALLICON; - } - - if ( style & wxLC_LIST ) - { - if ( (oldStyle & LVS_TYPEMASK) == LVS_ICON ) - oldStyle -= LVS_ICON; - if ( (oldStyle & LVS_TYPEMASK) == LVS_REPORT ) - oldStyle -= LVS_REPORT; - if ( (oldStyle & LVS_TYPEMASK) == LVS_SMALLICON ) - oldStyle -= LVS_SMALLICON; - wstyle |= LVS_LIST; - } - - if ( style & wxLC_REPORT ) - { - if ( (oldStyle & LVS_TYPEMASK) == LVS_ICON ) - oldStyle -= LVS_ICON; - if ( (oldStyle & LVS_TYPEMASK) == LVS_LIST ) - oldStyle -= LVS_LIST; - if ( (oldStyle & LVS_TYPEMASK) == LVS_SMALLICON ) - oldStyle -= LVS_SMALLICON; - wstyle |= LVS_REPORT; - } - - if ( style & wxLC_ALIGN_LEFT ) - { - if ( oldStyle & LVS_ALIGNTOP ) - oldStyle -= LVS_ALIGNTOP; - wstyle |= LVS_ALIGNLEFT; - } - - if ( style & wxLC_ALIGN_TOP ) - { - if ( oldStyle & LVS_ALIGNLEFT ) - oldStyle -= LVS_ALIGNLEFT; - wstyle |= LVS_ALIGNTOP; - } - - if ( style & wxLC_AUTOARRANGE ) - wstyle |= LVS_AUTOARRANGE; - - // Apparently, no such style (documentation wrong?) -/* - if ( style & wxLC_BUTTON ) - wstyle |= LVS_BUTTON; -*/ - - if ( style & wxLC_NO_SORT_HEADER ) - wstyle |= LVS_NOSORTHEADER; - - if ( style & wxLC_NO_HEADER ) - wstyle |= LVS_NOCOLUMNHEADER; - - if ( style & wxLC_EDIT_LABELS ) - wstyle |= LVS_EDITLABELS; - - if ( style & wxLC_SINGLE_SEL ) - wstyle |= LVS_SINGLESEL; - - if ( style & wxLC_SORT_ASCENDING ) - { - if ( oldStyle & LVS_SORTDESCENDING ) - oldStyle -= LVS_SORTDESCENDING; - wstyle |= LVS_SORTASCENDING; - } - - if ( style & wxLC_SORT_DESCENDING ) - { - if ( oldStyle & LVS_SORTASCENDING ) - oldStyle -= LVS_SORTASCENDING; - wstyle |= LVS_SORTDESCENDING; - } - - return wstyle; -} - -// Sets the background colour (GetBackgroundColour already implicit in -// wxWindow class) -void wxListCtrl::SetBackgroundColour(const wxColour& col) -{ - wxWindow::SetBackgroundColour(col); - - ListView_SetBkColor((HWND) GetHWND(), PALETTERGB(col.Red(), col.Green(), col.Blue())); -} - -// Gets information about this column -bool wxListCtrl::GetColumn(int col, wxListItem& item) const -{ - LV_COLUMN lvCol; - lvCol.mask = 0; - lvCol.fmt = 0; - lvCol.pszText = NULL; - - if ( item.m_mask & wxLIST_MASK_TEXT ) - { - lvCol.mask |= LVCF_TEXT; - lvCol.pszText = new char[513]; - lvCol.cchTextMax = 512; - } - - bool success = (ListView_GetColumn((HWND) GetHWND(), col, & lvCol) != 0); - -// item.m_subItem = lvCol.iSubItem; - item.m_width = lvCol.cx; - - if ( (item.m_mask & wxLIST_MASK_TEXT) && lvCol.pszText ) - { - item.m_text = lvCol.pszText; - delete[] lvCol.pszText; - } - - if ( item.m_mask & wxLIST_MASK_FORMAT ) - { - if (lvCol.fmt == LVCFMT_LEFT) - item.m_format = wxLIST_FORMAT_LEFT; - else if (lvCol.fmt == LVCFMT_RIGHT) - item.m_format = wxLIST_FORMAT_RIGHT; - else if (lvCol.fmt == LVCFMT_CENTER) - item.m_format = wxLIST_FORMAT_CENTRE; - } - - return success; -} - -// Sets information about this column -bool wxListCtrl::SetColumn(int col, wxListItem& item) -{ - LV_COLUMN lvCol; - lvCol.mask = 0; - lvCol.fmt = 0; - lvCol.pszText = NULL; - - if ( item.m_mask & wxLIST_MASK_TEXT ) - { - lvCol.mask |= LVCF_TEXT; - lvCol.pszText = WXSTRINGCAST item.m_text; - lvCol.cchTextMax = 0; // Ignored - } - if ( item.m_mask & wxLIST_MASK_FORMAT ) - { - lvCol.mask |= LVCF_FMT; - - if ( item.m_format == wxLIST_FORMAT_LEFT ) - lvCol.fmt = LVCFMT_LEFT; - if ( item.m_format == wxLIST_FORMAT_RIGHT ) - lvCol.fmt = LVCFMT_RIGHT; - if ( item.m_format == wxLIST_FORMAT_CENTRE ) - lvCol.fmt = LVCFMT_CENTER; - } - - if ( item.m_mask & wxLIST_MASK_WIDTH ) - { - lvCol.mask |= LVCF_WIDTH; - lvCol.cx = item.m_width; - - if ( lvCol.cx == wxLIST_AUTOSIZE) - lvCol.cx = LVSCW_AUTOSIZE; - else if ( lvCol.cx == wxLIST_AUTOSIZE_USEHEADER) - lvCol.cx = LVSCW_AUTOSIZE_USEHEADER; - } - lvCol.mask |= LVCF_SUBITEM; - lvCol.iSubItem = col; - return (ListView_SetColumn((HWND) GetHWND(), col, & lvCol) != 0); -} - -// Gets the column width -int wxListCtrl::GetColumnWidth(int col) const -{ - return ListView_GetColumnWidth((HWND) GetHWND(), col); -} - -// Sets the column width -bool wxListCtrl::SetColumnWidth(int col, int width) -{ - int col2 = col; - if ( m_windowStyle & wxLC_LIST ) - col2 = -1; - - int width2 = width; - if ( width2 == wxLIST_AUTOSIZE) - width2 = LVSCW_AUTOSIZE; - else if ( width2 == wxLIST_AUTOSIZE_USEHEADER) - width2 = LVSCW_AUTOSIZE_USEHEADER; - - return (ListView_SetColumnWidth((HWND) GetHWND(), col2, width2) != 0); -} - -// 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) -int wxListCtrl::GetCountPerPage(void) const -{ - return ListView_GetCountPerPage((HWND) GetHWND()); -} - -// Gets the edit control for editing labels. -wxTextCtrl* wxListCtrl::GetEditControl(void) const -{ - return m_textCtrl; -} - -// Gets information about the item -bool wxListCtrl::GetItem(wxListItem& info) const -{ - LV_ITEM lvItem; -#ifdef __MINGW32__ - memset(&lvItem, 0, sizeof(lvItem)); -#else - ZeroMemory(&lvItem, sizeof(lvItem)); // must set all fields to 0 -#endif - - lvItem.iItem = info.m_itemId; - - if ( info.m_mask & wxLIST_MASK_TEXT ) - { - lvItem.mask |= LVIF_TEXT; - lvItem.pszText = new char[513]; - lvItem.cchTextMax = 512; - } - else - { - lvItem.pszText = NULL; - } - - if (info.m_mask & wxLIST_MASK_DATA) - lvItem.mask |= LVIF_PARAM ; - - if ( info.m_mask & wxLIST_MASK_STATE ) - { - lvItem.mask |= LVIF_STATE; - // the other bits are hardly interesting anyhow - lvItem.stateMask = LVIS_SELECTED | LVIS_FOCUSED; - } - - bool success = ListView_GetItem((HWND)GetHWND(), &lvItem) != 0; - if ( !success ) - { - wxLogError(_("Couldn't retrieve information about list control item %d."), - lvItem.iItem); - } - else - { - wxConvertFromMSWListItem(this, info, lvItem); - } - - if (lvItem.pszText) - delete[] lvItem.pszText; - - return success; -} - -// Sets information about the item -bool wxListCtrl::SetItem(wxListItem& info) -{ - LV_ITEM item; - wxConvertToMSWListItem(this, info, item); - item.cchTextMax = 0; - return (ListView_SetItem((HWND) GetHWND(), &item) != 0); -} - -long wxListCtrl::SetItem(long index, int col, const wxString& label, int imageId) -{ - wxListItem info; - info.m_text = label; - info.m_mask = wxLIST_MASK_TEXT; - info.m_itemId = index; - info.m_col = col; - if ( imageId > -1 ) - { - info.m_image = imageId; - info.m_mask |= wxLIST_MASK_IMAGE; - } - return SetItem(info); -} - - -// Gets the item state -int wxListCtrl::GetItemState(long item, long stateMask) const -{ - wxListItem info; - - info.m_mask = wxLIST_MASK_STATE ; - info.m_stateMask = stateMask; - info.m_itemId = item; - - if (!GetItem(info)) - return 0; - - return info.m_state; -} - -// Sets the item state -bool wxListCtrl::SetItemState(long item, long state, long stateMask) -{ - wxListItem info; - - info.m_mask = wxLIST_MASK_STATE ; - info.m_state = state; - info.m_stateMask = stateMask; - info.m_itemId = item; - - return SetItem(info); -} - -// Sets the item image -bool wxListCtrl::SetItemImage(long item, int image, int selImage) -{ - wxListItem info; - - info.m_mask = wxLIST_MASK_IMAGE ; - info.m_image = image; - info.m_itemId = item; - - return SetItem(info); -} - -// Gets the item text -wxString wxListCtrl::GetItemText(long item) const -{ - wxListItem info; - - info.m_mask = wxLIST_MASK_TEXT ; - info.m_itemId = item; - - if (!GetItem(info)) - return wxString(""); - return info.m_text; -} - -// Sets the item text -void wxListCtrl::SetItemText(long item, const wxString& str) -{ - wxListItem info; - - info.m_mask = wxLIST_MASK_TEXT ; - info.m_itemId = item; - info.m_text = str; - - SetItem(info); -} - -// Gets the item data -long wxListCtrl::GetItemData(long item) const -{ - wxListItem info; - - info.m_mask = wxLIST_MASK_DATA ; - info.m_itemId = item; - - if (!GetItem(info)) - return 0; - return info.m_data; -} - -// Sets the item data -bool wxListCtrl::SetItemData(long item, long data) -{ - wxListItem info; - - info.m_mask = wxLIST_MASK_DATA ; - info.m_itemId = item; - info.m_data = data; - - return SetItem(info); -} - -// Gets the item rectangle -bool wxListCtrl::GetItemRect(long item, wxRect& rect, int code) const -{ - RECT rect2; - - int code2 = LVIR_BOUNDS; - if ( code == wxLIST_RECT_BOUNDS ) - code2 = LVIR_BOUNDS; - else if ( code == wxLIST_RECT_ICON ) - code2 = LVIR_ICON; - else if ( code == wxLIST_RECT_LABEL ) - code2 = LVIR_LABEL; - - bool success = (ListView_GetItemRect((HWND) GetHWND(), (int) item, &rect2, code2) != 0); - - rect.x = rect2.left; - rect.y = rect2.top; - rect.width = rect2.right - rect2.left; - rect.height = rect2.bottom - rect2.left; - return success; -} - -// Gets the item position -bool wxListCtrl::GetItemPosition(long item, wxPoint& pos) const -{ - POINT pt; - - bool success = (ListView_GetItemPosition((HWND) GetHWND(), (int) item, &pt) != 0); - - pos.x = pt.x; pos.y = pt.y; - return success; -} - -// Sets the item position. -bool wxListCtrl::SetItemPosition(long item, const wxPoint& pos) -{ - return (ListView_SetItemPosition((HWND) GetHWND(), (int) item, pos.x, pos.y) != 0); -} - -// Gets the number of items in the list control -int wxListCtrl::GetItemCount(void) const -{ - return ListView_GetItemCount((HWND) GetHWND()); -} - -// Retrieves the spacing between icons in pixels. -// If small is TRUE, gets the spacing for the small icon -// view, otherwise the large icon view. -int wxListCtrl::GetItemSpacing(bool isSmall) const -{ - return ListView_GetItemSpacing((HWND) GetHWND(), (BOOL) isSmall); -} - -// Gets the number of selected items in the list control -int wxListCtrl::GetSelectedItemCount(void) const -{ - return ListView_GetSelectedCount((HWND) GetHWND()); -} - -// Gets the text colour of the listview -wxColour wxListCtrl::GetTextColour(void) const -{ - COLORREF ref = ListView_GetTextColor((HWND) GetHWND()); - wxColour col(GetRValue(ref), GetGValue(ref), GetBValue(ref)); - return col; -} - -// Sets the text colour of the listview -void wxListCtrl::SetTextColour(const wxColour& col) -{ - ListView_SetTextColor((HWND) GetHWND(), PALETTERGB(col.Red(), col.Blue(), col.Green())); -} - -// Gets the index of the topmost visible item when in -// list or report view -long wxListCtrl::GetTopItem(void) const -{ - return (long) ListView_GetTopIndex((HWND) GetHWND()); -} - -// Searches for an item, starting from 'item'. -// 'geometry' is one of -// wxLIST_NEXT_ABOVE/ALL/BELOW/LEFT/RIGHT. -// 'state' is a state bit flag, one or more of -// wxLIST_STATE_DROPHILITED/FOCUSED/SELECTED/CUT. -// item can be -1 to find the first item that matches the -// specified flags. -// Returns the item or -1 if unsuccessful. -long wxListCtrl::GetNextItem(long item, int geom, int state) const -{ - long flags = 0; - - if ( geom == wxLIST_NEXT_ABOVE ) - flags |= LVNI_ABOVE; - if ( geom == wxLIST_NEXT_ALL ) - flags |= LVNI_ALL; - if ( geom == wxLIST_NEXT_BELOW ) - flags |= LVNI_BELOW; - if ( geom == wxLIST_NEXT_LEFT ) - flags |= LVNI_TOLEFT; - if ( geom == wxLIST_NEXT_RIGHT ) - flags |= LVNI_TORIGHT; - - if ( state & wxLIST_STATE_CUT ) - flags |= LVNI_CUT; - if ( state & wxLIST_STATE_DROPHILITED ) - flags |= LVNI_DROPHILITED; - if ( state & wxLIST_STATE_FOCUSED ) - flags |= LVNI_FOCUSED; - if ( state & wxLIST_STATE_SELECTED ) - flags |= LVNI_SELECTED; - - return (long) ListView_GetNextItem((HWND) GetHWND(), item, flags); -} - - -wxImageList *wxListCtrl::GetImageList(int which) const -{ - if ( which == wxIMAGE_LIST_NORMAL ) - { - return m_imageListNormal; - } - else if ( which == wxIMAGE_LIST_SMALL ) - { - return m_imageListSmall; - } - else if ( which == wxIMAGE_LIST_STATE ) - { - return m_imageListState; - } - return NULL; -} - -void wxListCtrl::SetImageList(wxImageList *imageList, int which) -{ - int flags = 0; - if ( which == wxIMAGE_LIST_NORMAL ) - { - flags = LVSIL_NORMAL; - m_imageListNormal = imageList; - } - else if ( which == wxIMAGE_LIST_SMALL ) - { - flags = LVSIL_SMALL; - m_imageListSmall = imageList; - } - else if ( which == wxIMAGE_LIST_STATE ) - { - flags = LVSIL_STATE; - m_imageListState = imageList; - } - ListView_SetImageList((HWND) GetHWND(), (HIMAGELIST) imageList ? imageList->GetHIMAGELIST() : 0, flags); -} - -// Operations -//////////////////////////////////////////////////////////////////////////// - -// Arranges the items -bool wxListCtrl::Arrange(int flag) -{ - UINT code = 0; - if ( flag == wxLIST_ALIGN_LEFT ) - code = LVA_ALIGNLEFT; - else if ( flag == wxLIST_ALIGN_TOP ) - code = LVA_ALIGNTOP; - else if ( flag == wxLIST_ALIGN_DEFAULT ) - code = LVA_DEFAULT; - else if ( flag == wxLIST_ALIGN_SNAP_TO_GRID ) - code = LVA_SNAPTOGRID; - - return (ListView_Arrange((HWND) GetHWND(), code) != 0); -} - -// Deletes an item -bool wxListCtrl::DeleteItem(long item) -{ - return (ListView_DeleteItem((HWND) GetHWND(), (int) item) != 0); -} - -// Deletes all items -bool wxListCtrl::DeleteAllItems(void) -{ - return (ListView_DeleteAllItems((HWND) GetHWND()) != 0); -} - -// Deletes all items -bool wxListCtrl::DeleteAllColumns(void) -{ - int i; - for ( i = 0; i < m_colCount; i++) - { - if (ListView_DeleteColumn((HWND) GetHWND(), 0) != 0) - m_colCount --; - } - return (m_colCount == 0); -} - -// Deletes a column -bool wxListCtrl::DeleteColumn(int col) -{ - bool success = (ListView_DeleteColumn((HWND) GetHWND(), col) != 0); - - if ( success && (m_colCount > 0) ) - m_colCount --; - return success; -} - -// Clears items, and columns if there are any. -void wxListCtrl::ClearAll(void) -{ - DeleteAllItems(); - if ( m_colCount > 0 ) - DeleteAllColumns(); -} - -wxTextCtrl* wxListCtrl::EditLabel(long item, wxClassInfo* textControlClass) -{ - wxASSERT( (textControlClass->IsKindOf(CLASSINFO(wxTextCtrl))) ); - - HWND hWnd = (HWND) ListView_EditLabel((HWND) GetHWND(), item); - - if (m_textCtrl) - { - m_textCtrl->UnsubclassWin(); - m_textCtrl->SetHWND(0); - delete m_textCtrl; - m_textCtrl = NULL; - } - - m_textCtrl = (wxTextCtrl*) textControlClass->CreateObject(); - m_textCtrl->SetHWND((WXHWND) hWnd); - m_textCtrl->SubclassWin((WXHWND) hWnd); - - return m_textCtrl; -} - -// End label editing, optionally cancelling the edit -bool wxListCtrl::EndEditLabel(bool cancel) -{ - wxFAIL; - -/* I don't know how to implement this: there's no such macro as ListView_EndEditLabelNow. - * ??? - bool success = (ListView_EndEditLabelNow((HWND) GetHWND(), cancel) != 0); - - if (m_textCtrl) - { - m_textCtrl->UnsubclassWin(); - m_textCtrl->SetHWND(0); - delete m_textCtrl; - m_textCtrl = NULL; - } - return success; -*/ - return FALSE; -} - - -// Ensures this item is visible -bool wxListCtrl::EnsureVisible(long item) -{ - return (ListView_EnsureVisible((HWND) GetHWND(), (int) item, FALSE) != 0); -} - -// Find an item whose label matches this string, starting from the item after 'start' -// or the beginning if 'start' is -1. -long wxListCtrl::FindItem(long start, const wxString& str, bool partial) -{ - LV_FINDINFO findInfo; - - findInfo.flags = LVFI_STRING; - if ( partial ) - findInfo.flags |= LVFI_STRING; - findInfo.psz = WXSTRINGCAST str; - - return ListView_FindItem((HWND) GetHWND(), (int) start, & findInfo); -} - -// Find an item whose data matches this data, starting from the item after 'start' -// or the beginning if 'start' is -1. -long wxListCtrl::FindItem(long start, long data) -{ - LV_FINDINFO findInfo; - - findInfo.flags = LVFI_PARAM; - findInfo.lParam = data; - - return ListView_FindItem((HWND) GetHWND(), (int) start, & findInfo); -} - -// Find an item nearest this position in the specified direction, starting from -// the item after 'start' or the beginning if 'start' is -1. -long wxListCtrl::FindItem(long start, const wxPoint& pt, int direction) -{ - LV_FINDINFO findInfo; - - findInfo.flags = LVFI_NEARESTXY; - findInfo.pt.x = pt.x; - findInfo.pt.y = pt.y; - findInfo.vkDirection = VK_RIGHT; - - if ( direction == wxLIST_FIND_UP ) - findInfo.vkDirection = VK_UP; - else if ( direction == wxLIST_FIND_DOWN ) - findInfo.vkDirection = VK_DOWN; - else if ( direction == wxLIST_FIND_LEFT ) - findInfo.vkDirection = VK_LEFT; - else if ( direction == wxLIST_FIND_RIGHT ) - findInfo.vkDirection = VK_RIGHT; - - return ListView_FindItem((HWND) GetHWND(), (int) start, & findInfo); -} - -// Determines which item (if any) is at the specified point, -// giving details in 'flags' (see wxLIST_HITTEST_... flags above) -long wxListCtrl::HitTest(const wxPoint& point, int& flags) -{ - LV_HITTESTINFO hitTestInfo; - hitTestInfo.pt.x = (int) point.x; - hitTestInfo.pt.y = (int) point.y; - - ListView_HitTest((HWND) GetHWND(), & hitTestInfo); - - flags = 0; - if ( hitTestInfo.flags & LVHT_ABOVE ) - flags |= wxLIST_HITTEST_ABOVE; - if ( hitTestInfo.flags & LVHT_BELOW ) - flags |= wxLIST_HITTEST_BELOW; - if ( hitTestInfo.flags & LVHT_NOWHERE ) - flags |= wxLIST_HITTEST_NOWHERE; - if ( hitTestInfo.flags & LVHT_ONITEMICON ) - flags |= wxLIST_HITTEST_ONITEMICON; - if ( hitTestInfo.flags & LVHT_ONITEMLABEL ) - flags |= wxLIST_HITTEST_ONITEMLABEL; - if ( hitTestInfo.flags & LVHT_ONITEMSTATEICON ) - flags |= wxLIST_HITTEST_ONITEMSTATEICON; - if ( hitTestInfo.flags & LVHT_TOLEFT ) - flags |= wxLIST_HITTEST_TOLEFT; - if ( hitTestInfo.flags & LVHT_TORIGHT ) - flags |= wxLIST_HITTEST_TORIGHT; - - return (long) hitTestInfo.iItem ; -} - -// Inserts an item, returning the index of the new item if successful, -// -1 otherwise. -long wxListCtrl::InsertItem(wxListItem& info) -{ - LV_ITEM item; - wxConvertToMSWListItem(this, info, item); - - return (long) ListView_InsertItem((HWND) GetHWND(), & item); -} - -long wxListCtrl::InsertItem(long index, const wxString& label) -{ - wxListItem info; - info.m_text = label; - info.m_mask = wxLIST_MASK_TEXT; - info.m_itemId = index; - return InsertItem(info); -} - -// Inserts an image item -long wxListCtrl::InsertItem(long index, int imageIndex) -{ - wxListItem info; - info.m_image = imageIndex; - info.m_mask = wxLIST_MASK_IMAGE; - info.m_itemId = index; - return InsertItem(info); -} - -// Inserts an image/string item -long wxListCtrl::InsertItem(long index, const wxString& label, int imageIndex) -{ - wxListItem info; - info.m_image = imageIndex; - info.m_text = label; - info.m_mask = wxLIST_MASK_IMAGE | wxLIST_MASK_TEXT; - info.m_itemId = index; - return InsertItem(info); -} - -// For list view mode (only), inserts a column. -long wxListCtrl::InsertColumn(long col, wxListItem& item) -{ - LV_COLUMN lvCol; - lvCol.mask = 0; - lvCol.fmt = 0; - lvCol.pszText = NULL; - - if ( item.m_mask & wxLIST_MASK_TEXT ) - { - lvCol.mask |= LVCF_TEXT; - lvCol.pszText = WXSTRINGCAST item.m_text; - lvCol.cchTextMax = 0; // Ignored - } - if ( item.m_mask & wxLIST_MASK_FORMAT ) - { - lvCol.mask |= LVCF_FMT; - - if ( item.m_format == wxLIST_FORMAT_LEFT ) - lvCol.fmt = LVCFMT_LEFT; - if ( item.m_format == wxLIST_FORMAT_RIGHT ) - lvCol.fmt = LVCFMT_RIGHT; - if ( item.m_format == wxLIST_FORMAT_CENTRE ) - lvCol.fmt = LVCFMT_CENTER; - } - - if ( item.m_mask & wxLIST_MASK_WIDTH ) - { - lvCol.mask |= LVCF_WIDTH; - lvCol.cx = item.m_width; - - if ( lvCol.cx == wxLIST_AUTOSIZE) - lvCol.cx = LVSCW_AUTOSIZE; - else if ( lvCol.cx == wxLIST_AUTOSIZE_USEHEADER) - lvCol.cx = LVSCW_AUTOSIZE_USEHEADER; - } - lvCol.mask |= LVCF_SUBITEM; - lvCol.iSubItem = col; - - bool success = (ListView_InsertColumn((HWND) GetHWND(), col, & lvCol) != 0); - if ( success ) - m_colCount ++; - return success; -} - -long wxListCtrl::InsertColumn(long col, const wxString& heading, int format, - int width) -{ - wxListItem item; - item.m_mask = wxLIST_MASK_TEXT | wxLIST_MASK_FORMAT; - item.m_text = heading; - if ( width > -1 ) - { - item.m_mask |= wxLIST_MASK_WIDTH; - item.m_width = width; - } - item.m_format = format; - - return InsertColumn(col, item); -} - -// Scrolls the list control. If in icon, small icon or report view mode, -// x specifies the number of pixels to scroll. If in list view mode, x -// specifies the number of columns to scroll. -// If in icon, small icon or list view mode, y specifies the number of pixels -// to scroll. If in report view mode, y specifies the number of lines to scroll. -bool wxListCtrl::ScrollList(int dx, int dy) -{ - return (ListView_Scroll((HWND) GetHWND(), dx, dy) != 0); -} - -// Sort items. - -// 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. -bool wxListCtrl::SortItems(wxListCtrlCompare fn, long data) -{ - return (ListView_SortItems((HWND) GetHWND(), (PFNLVCOMPARE) fn, data) != 0); -} - -bool wxListCtrl::MSWCommand(WXUINT cmd, WXWORD id) -{ - if (cmd == EN_UPDATE) - { - wxCommandEvent event(wxEVT_COMMAND_TEXT_UPDATED, id); - event.SetEventObject( this ); - ProcessCommand(event); - return TRUE; - } - else if (cmd == EN_KILLFOCUS) - { - wxCommandEvent event(wxEVT_KILL_FOCUS, id); - event.SetEventObject( this ); - ProcessCommand(event); - return TRUE; - } - else return FALSE; -} - -bool wxListCtrl::MSWNotify(WXWPARAM wParam, WXLPARAM lParam, WXLPARAM *result) -{ - wxListEvent event(wxEVT_NULL, m_windowId); - wxEventType eventType = wxEVT_NULL; - NMHDR *hdr1 = (NMHDR *) lParam; - switch ( hdr1->code ) - { - case LVN_BEGINRDRAG: - eventType = wxEVT_COMMAND_LIST_BEGIN_RDRAG; - // fall through - - case LVN_BEGINDRAG: - if ( eventType == wxEVT_NULL ) - { - eventType = wxEVT_COMMAND_LIST_BEGIN_DRAG; - } - - { - NM_LISTVIEW *hdr = (NM_LISTVIEW *)lParam; - event.m_itemIndex = hdr->iItem; - event.m_pointDrag.x = hdr->ptAction.x; - event.m_pointDrag.y = hdr->ptAction.y; - } - break; - - case LVN_BEGINLABELEDIT: - { - eventType = wxEVT_COMMAND_LIST_BEGIN_LABEL_EDIT; - LV_DISPINFO *info = (LV_DISPINFO *)lParam; - wxConvertFromMSWListItem(this, event.m_item, info->item, (HWND) GetHWND()); - break; - } - - case LVN_COLUMNCLICK: - { - eventType = wxEVT_COMMAND_LIST_COL_CLICK; - NM_LISTVIEW* hdr = (NM_LISTVIEW*)lParam; - event.m_itemIndex = -1; - event.m_col = hdr->iSubItem; - break; - } - case LVN_DELETEALLITEMS: - { - eventType = wxEVT_COMMAND_LIST_DELETE_ALL_ITEMS; -// NM_LISTVIEW* hdr = (NM_LISTVIEW*)lParam; - event.m_itemIndex = -1; - break; - } - case LVN_DELETEITEM: - { - eventType = wxEVT_COMMAND_LIST_DELETE_ITEM; - NM_LISTVIEW* hdr = (NM_LISTVIEW*)lParam; - event.m_itemIndex = hdr->iItem; - break; - } - case LVN_ENDLABELEDIT: - { - eventType = wxEVT_COMMAND_LIST_END_LABEL_EDIT; - LV_DISPINFO *info = (LV_DISPINFO *)lParam; - wxConvertFromMSWListItem(this, event.m_item, info->item, (HWND) GetHWND()); - if ( info->item.pszText == NULL || info->item.iItem == -1 ) - event.m_cancelled = TRUE; - break; - } - case LVN_GETDISPINFO: - { -// return FALSE; - // TODO: some text buffering here, I think - // TODO: API for getting Windows to retrieve values - // on demand. - eventType = wxEVT_COMMAND_LIST_GET_INFO; - LV_DISPINFO *info = (LV_DISPINFO *)lParam; - wxConvertFromMSWListItem(this, event.m_item, info->item, (HWND) GetHWND()); - break; - } - case LVN_INSERTITEM: - { - eventType = wxEVT_COMMAND_LIST_INSERT_ITEM; - NM_LISTVIEW* hdr = (NM_LISTVIEW*)lParam; - event.m_itemIndex = hdr->iItem; - break; - } - case LVN_ITEMCHANGED: - { - // This needs to be sent to wxListCtrl as a rather more - // concrete event. For now, just detect a selection - // or deselection. - NM_LISTVIEW* hdr = (NM_LISTVIEW*)lParam; - if ( (hdr->uNewState & LVIS_SELECTED) && !(hdr->uOldState & LVIS_SELECTED) ) - { - eventType = wxEVT_COMMAND_LIST_ITEM_SELECTED; - event.m_itemIndex = hdr->iItem; - } - else if ( !(hdr->uNewState & LVIS_SELECTED) && (hdr->uOldState & LVIS_SELECTED) ) - { - eventType = wxEVT_COMMAND_LIST_ITEM_DESELECTED; - event.m_itemIndex = hdr->iItem; - } - else - return FALSE; - break; - } - case LVN_KEYDOWN: - { - eventType = wxEVT_COMMAND_LIST_KEY_DOWN; - LV_KEYDOWN *info = (LV_KEYDOWN *)lParam; - event.m_code = wxCharCodeMSWToWX(info->wVKey); - break; - } - case LVN_SETDISPINFO: - { - eventType = wxEVT_COMMAND_LIST_SET_INFO; - LV_DISPINFO *info = (LV_DISPINFO *)lParam; - wxConvertFromMSWListItem(this, event.m_item, info->item, (HWND) GetHWND()); - break; - } - - default : - return wxControl::MSWNotify(wParam, lParam, result); - } - - event.SetEventObject( this ); - event.SetEventType(eventType); - - if ( !GetEventHandler()->ProcessEvent(event) ) - return FALSE; - - if (hdr1->code == LVN_GETDISPINFO) - { - LV_DISPINFO *info = (LV_DISPINFO *)lParam; - if ( info->item.mask & LVIF_TEXT ) - { - if ( !event.m_item.m_text.IsNull() ) - { - info->item.pszText = AddPool(event.m_item.m_text); - info->item.cchTextMax = strlen(info->item.pszText) + 1; - } - } -// wxConvertToMSWListItem(this, event.m_item, info->item); - } - - *result = !event.IsAllowed(); - - return TRUE; -} - -char *wxListCtrl::AddPool(const wxString& str) -{ - // Remove the first element if 3 strings exist - if ( m_stringPool.Number() == 3 ) - { - wxNode *node = m_stringPool.First(); - delete[] (char *)node->Data(); - delete node; - } - wxNode *node = m_stringPool.Add((char *) (const char *)str); - return (char *)node->Data(); -} - -// List item structure -wxListItem::wxListItem(void) -{ - m_mask = 0; - m_itemId = 0; - m_col = 0; - m_state = 0; - m_stateMask = 0; - m_image = 0; - m_data = 0; - - m_format = wxLIST_FORMAT_CENTRE; - m_width = 0; -} - -static void wxConvertFromMSWListItem(const wxListCtrl *ctrl, wxListItem& info, LV_ITEM& lvItem, HWND getFullInfo) -{ - info.m_data = lvItem.lParam; - info.m_mask = 0; - info.m_state = 0; - info.m_stateMask = 0; - info.m_itemId = lvItem.iItem; - - long oldMask = lvItem.mask; - - bool needText = FALSE; - if (getFullInfo != 0) - { - if ( lvItem.mask & LVIF_TEXT ) - needText = FALSE; - else - needText = TRUE; - - if ( needText ) - { - lvItem.pszText = new char[513]; - lvItem.cchTextMax = 512; - } -// lvItem.mask |= TVIF_HANDLE | TVIF_STATE | TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_CHILDREN | TVIF_PARAM ; - lvItem.mask |= LVIF_TEXT | LVIF_IMAGE | LVIF_PARAM ; - ::SendMessage(getFullInfo, LVM_GETITEM, 0, (LPARAM)& lvItem) ; - } - - if ( lvItem.mask & LVIF_STATE ) - { - info.m_mask |= wxLIST_MASK_STATE; - - if ( lvItem.stateMask & LVIS_CUT) - { - info.m_stateMask |= wxLIST_STATE_CUT ; - if ( lvItem.state & LVIS_CUT ) - info.m_state |= wxLIST_STATE_CUT ; - } - if ( lvItem.stateMask & LVIS_DROPHILITED) - { - info.m_stateMask |= wxLIST_STATE_DROPHILITED ; - if ( lvItem.state & LVIS_DROPHILITED ) - info.m_state |= wxLIST_STATE_DROPHILITED ; - } - if ( lvItem.stateMask & LVIS_FOCUSED) - { - info.m_stateMask |= wxLIST_STATE_FOCUSED ; - if ( lvItem.state & LVIS_FOCUSED ) - info.m_state |= wxLIST_STATE_FOCUSED ; - } - if ( lvItem.stateMask & LVIS_SELECTED) - { - info.m_stateMask |= wxLIST_STATE_SELECTED ; - if ( lvItem.state & LVIS_SELECTED ) - info.m_state |= wxLIST_STATE_SELECTED ; - } - } - - if ( lvItem.mask & LVIF_TEXT ) - { - info.m_mask |= wxLIST_MASK_TEXT; - info.m_text = lvItem.pszText; - } - if ( lvItem.mask & LVIF_IMAGE ) - { - info.m_mask |= wxLIST_MASK_IMAGE; - info.m_image = lvItem.iImage; - } - if ( lvItem.mask & LVIF_PARAM ) - info.m_mask |= wxLIST_MASK_DATA; - if ( lvItem.mask & LVIF_DI_SETITEM ) - info.m_mask |= wxLIST_SET_ITEM; - info.m_col = lvItem.iSubItem; - - if (needText) - { - if (lvItem.pszText) - delete[] lvItem.pszText; - } - lvItem.mask = oldMask ; -} - -static void wxConvertToMSWListItem(const wxListCtrl *ctrl, wxListItem& info, LV_ITEM& lvItem) -{ - lvItem.iItem = (int) info.m_itemId ; - - lvItem.iImage = info.m_image ; - lvItem.lParam = info.m_data; - lvItem.stateMask = 0; - lvItem.state = 0; - lvItem.mask = 0; - lvItem.iSubItem = info.m_col; - - if (info.m_mask & wxLIST_MASK_STATE) - { - lvItem.mask |= LVIF_STATE ; - if (info.m_stateMask & wxLIST_STATE_CUT) - { - lvItem.stateMask |= LVIS_CUT ; - if (info.m_state & wxLIST_STATE_CUT) - lvItem.state |= LVIS_CUT; - } - if (info.m_stateMask & wxLIST_STATE_DROPHILITED) - { - lvItem.stateMask |= LVIS_DROPHILITED; - if (info.m_state & wxLIST_STATE_DROPHILITED) - lvItem.state |= LVIS_DROPHILITED; - } - if (info.m_stateMask & wxLIST_STATE_FOCUSED) - { - lvItem.stateMask |= LVIS_FOCUSED; - if (info.m_state & wxLIST_STATE_FOCUSED) - lvItem.state |= LVIS_FOCUSED; - } - if (info.m_stateMask & wxLIST_STATE_SELECTED) - { - lvItem.stateMask |= LVIS_SELECTED; - if (info.m_state & wxLIST_STATE_SELECTED) - lvItem.state |= LVIS_SELECTED; - } - } - - if (info.m_mask & wxLIST_MASK_TEXT) - { - lvItem.mask |= LVIF_TEXT ; - if ( ctrl->GetWindowStyleFlag() & wxLC_USER_TEXT ) - { - lvItem.pszText = LPSTR_TEXTCALLBACK; - } - else - { - lvItem.pszText = (char *) (const char *)info.m_text ; - if ( lvItem.pszText ) - lvItem.cchTextMax = info.m_text.Length(); - else - lvItem.cchTextMax = 0; - } - } - if (info.m_mask & wxLIST_MASK_IMAGE) - lvItem.mask |= LVIF_IMAGE ; - if (info.m_mask & wxLIST_MASK_DATA) - lvItem.mask |= LVIF_PARAM ; -} - -// List event -IMPLEMENT_DYNAMIC_CLASS(wxListEvent, wxNotifyEvent) - -wxListEvent::wxListEvent(wxEventType commandType, int id) - : wxNotifyEvent(commandType, id) -{ - m_code = 0; - m_itemIndex = 0; - m_col = 0; - m_cancelled = FALSE; -} - -#endif - diff --git a/src/msw/main.cpp b/src/msw/main.cpp deleted file mode 100644 index 45db41d119..0000000000 --- a/src/msw/main.cpp +++ /dev/null @@ -1,102 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: main.cpp -// Purpose: Main/DllMain -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#include "wx/event.h" -#include "wx/app.h" -#include - -// May wish not to have a DllMain or WinMain, e.g. if we're programming -// a Netscape plugin. -#ifndef NOMAIN - -// NT defines APIENTRY, 3.x not -#if !defined(APIENTRY) -#define APIENTRY FAR PASCAL -#endif - -///////////////////////////////////////////////////////////////////////////////// -// WinMain -// Note that WinMain is also defined in dummy.obj, which is linked to -// an application that is using the DLL version of wxWindows. - -#if !defined(_WINDLL) - -#ifdef __TWIN32__ - -extern "C" -BOOL PASCAL WinMain(HANDLE hInstance, HANDLE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) - -#else - -#ifdef __WATCOMC__ -int PASCAL -#else -int APIENTRY -#endif - - WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) -#endif -// __TWIN32__ - -{ - return wxEntry((WXHINSTANCE) hInstance, (WXHINSTANCE) hPrevInstance, lpCmdLine, nCmdShow); -} -#endif - -///////////////////////////////////////////////////////////////////////////////// -// DllMain - -#if defined(_WINDLL) - -// DLL entry point - -extern "C" -#ifdef __BORLANDC__ -// SCD: I don't know why, but also OWL uses this function -BOOL WINAPI DllEntryPoint (HANDLE hModule, DWORD fdwReason, LPVOID lpReserved) -#else -BOOL WINAPI DllMain (HANDLE hModule, DWORD fdwReason, LPVOID lpReserved) -#endif -{ - switch (fdwReason) - { - case DLL_PROCESS_ATTACH: - // Only call wxEntry if the application itself is part of the DLL. - // If only the wxWindows library is in the DLL, then the initialisation - // will be called when the application implicitly calls WinMain. - -#if !defined(WXMAKINGDLL) - return wxEntry((WXHINSTANCE) hModule); -#endif - break; - - case DLL_PROCESS_DETACH: - default: - break; - } - return TRUE; -} - -#endif - -#endif - diff --git a/src/msw/makefile.b32 b/src/msw/makefile.b32 deleted file mode 100644 index 49f7945204..0000000000 --- a/src/msw/makefile.b32 +++ /dev/null @@ -1,721 +0,0 @@ -# -# File: makefile.b32 -# Author: Julian Smart -# Created: 1998 -# Updated: -# Copyright: -# -# "%W% %G%" -# -# Makefile : Builds wxWindows library wx.lib for MS Windows, -# and Borland C++ (32-bit). - -!if "$(BCCDIR)" == "" -!error You must define the BCCDIR variable in autoexec.bat, e.g. BCCDIR=d:\bc4 -!endif - -!if "$(WXWIN)" == "" -!error You must define the WXWIN variable in autoexec.bat, e.g. WXWIN=c:\wx -!endif - -WXDIR = $(WXWIN) - -# Set all these to 1 if you want to build a dynamic library -!if "$(DLL)" == "1" -WXMAKINGDLL=1 -WXBUILDDLL=1 -!endif - -!include $(WXDIR)\src\makeb32.env - -# Please set these according to the settings in wx_setup.h, so we can include -# the appropriate libraries in wx.lib -USE_CTL3D=0 -USE_XPM_IN_MSW=0 - -PERIPH_LIBS= -PERIPH_TARGET= -PERIPH_CLEAN_TARGET= - -!if "$(USE_CTL3D)" == "1" -#Use WIN32S/WIN95 32 bit version ctl3d32.dll under win95 (Andre Beltman) -PERIPH_LIBS=$(WXDIR)\lib\ctl3d32.lib $(PERIPH_LIBS) -PERIPH_TARGET=ctl3d $(PERIPH_TARGET) -PERIPH_CLEAN_TARGET=clean_ctl3d $(PERIPH_CLEAN_TARGET) -!endif - -!if "$(USE_XPM_IN_MSW)" == "1" -PERIPH_LIBS=$(WXLIB)\xpm.lib $(PERIPH_LIBS) -PERIPH_TARGET=xpm $(PERIPH_TARGET) -PERIPH_CLEAN_TARGET=clean_xpm $(PERIPH_CLEAN_TARGET) -!endif - -PERIPH_LIBS=$(WXDIR)\lib\zlib.lib $(WXDIR)\lib\winpng.lib $(PERIPH_LIBS) -PERIPH_TARGET=zlib png $(PERIPH_TARGET) -PERIPH_CLEAN_TARGET=clean_zlib clean_png $(PERIPH_CLEAN_TARGET) - -!if "$(DLL)" == "0" -DUMMY=dummy -!else -DUMMY=dummydll -LIBS= cw32 import32 ole2w32 -!endif - -LIBTARGET=$(WXLIB) - -GENDIR=..\generic -COMMDIR=..\common -OLEDIR=.\ole -MSWDIR=. - -DOCDIR = $(WXDIR)\docs - -GENERICOBJS= \ - $(MSWDIR)\choicdgg.obj \ - $(MSWDIR)\gridg.obj \ - $(MSWDIR)\imaglist.obj \ - $(MSWDIR)\laywin.obj \ - $(MSWDIR)\panelg.obj \ - $(MSWDIR)\prop.obj \ - $(MSWDIR)\proplist.obj \ - $(MSWDIR)\propform.obj \ - $(MSWDIR)\sashwin.obj \ - $(MSWDIR)\scrolwin.obj \ - $(MSWDIR)\splitter.obj \ - $(MSWDIR)\statusbr.obj \ - $(MSWDIR)\tabg.obj \ - $(MSWDIR)\textdlgg.obj \ - -# Not needed: -# $(MSWDIR)\colrdlgg.obj \ -# $(MSWDIR)\fontdlgg.obj \ -# $(MSWDIR)\helpxlp.obj \ -# $(MSWDIR)\msgdlgg.obj \ -# $(MSWDIR)\printps.obj \ -# $(MSWDIR)\prntdlgg.obj \ -# $(MSWDIR)\listctrl.obj \ -# $(MSWDIR)\notebook.obj \ -# $(MSWDIR)\treectrl.obj - -COMMONOBJS = \ - $(MSWDIR)\config.obj \ - $(MSWDIR)\cmndata.obj \ - $(MSWDIR)\docview.obj \ - $(MSWDIR)\docmdi.obj \ - $(MSWDIR)\dynarray.obj \ - $(MSWDIR)\event.obj \ - $(MSWDIR)\file.obj \ - $(MSWDIR)\fileconf.obj \ - $(MSWDIR)\filefn.obj \ - $(MSWDIR)\framecmn.obj \ - $(MSWDIR)\gdicmn.obj \ - $(MSWDIR)\helpbase.obj \ - $(MSWDIR)\image.obj \ - $(MSWDIR)\intl.obj \ - $(MSWDIR)\ipcbase.obj \ - $(MSWDIR)\log.obj \ - $(MSWDIR)\layout.obj \ - $(MSWDIR)\memory.obj \ - $(MSWDIR)\mimetype.obj \ - $(MSWDIR)\module.obj \ - $(MSWDIR)\object.obj \ - $(MSWDIR)\prntbase.obj \ - $(MSWDIR)\resource.obj \ - $(MSWDIR)\tbarbase.obj \ - $(MSWDIR)\tbarsmpl.obj \ - $(MSWDIR)\textfile.obj \ - $(MSWDIR)\timercmn.obj \ - $(MSWDIR)\utilscmn.obj \ - $(MSWDIR)\validate.obj \ - $(MSWDIR)\valtext.obj \ - $(MSWDIR)\variant.obj \ - $(MSWDIR)\date.obj \ - $(MSWDIR)\hash.obj \ - $(MSWDIR)\list.obj \ - $(MSWDIR)\string.obj \ - $(MSWDIR)\time.obj \ - $(MSWDIR)\wxexpr.obj \ - $(MSWDIR)\y_tab.obj \ - $(MSWDIR)\stream.obj \ - $(MSWDIR)\wfstream.obj \ - $(MSWDIR)\mstream.obj \ - $(MSWDIR)\zstream.obj \ - $(MSWDIR)\datstrm.obj \ - $(MSWDIR)\sckstrm.obj \ - $(MSWDIR)\extended.obj \ - $(MSWDIR)\wincmn.obj \ - $(MSWDIR)\objstrm.obj \ - $(MSWDIR)\dynlib.obj \ - $(MSWDIR)\tokenzr.obj \ - $(MSWDIR)\socket.obj \ - $(MSWDIR)\sckaddr.obj \ - $(MSWDIR)\protocol.obj \ - $(MSWDIR)\url.obj \ - $(MSWDIR)\http.obj \ - $(MSWDIR)\ftp.obj \ - $(MSWDIR)\sckfile.obj \ - $(MSWDIR)\sckipc.obj - -# $(MSWDIR)\odbc.obj \ -# $(MSWDIR)\matrix.obj \ - -MSWOBJS = \ - $(MSWDIR)\accel.obj \ - $(MSWDIR)\app.obj \ - $(MSWDIR)\bitmap.obj \ - $(MSWDIR)\bmpbuttn.obj \ - $(MSWDIR)\brush.obj \ - $(MSWDIR)\button.obj \ - $(MSWDIR)\checkbox.obj \ - $(MSWDIR)\checklst.obj \ - $(MSWDIR)\choice.obj \ - $(MSWDIR)\clipbrd.obj \ - $(MSWDIR)\colordlg.obj \ - $(MSWDIR)\colour.obj \ - $(MSWDIR)\combobox.obj \ - $(MSWDIR)\control.obj \ - $(MSWDIR)\curico.obj \ - $(MSWDIR)\cursor.obj \ - $(MSWDIR)\data.obj \ - $(MSWDIR)\dc.obj \ - $(MSWDIR)\dcmemory.obj \ - $(MSWDIR)\dcclient.obj \ - $(MSWDIR)\dcprint.obj \ - $(MSWDIR)\dcscreen.obj \ - $(MSWDIR)\dde.obj \ - $(MSWDIR)\dialog.obj \ - $(MSWDIR)\dib.obj \ - $(MSWDIR)\dibutils.obj \ - $(MSWDIR)\dirdlg.obj \ - $(MSWDIR)\filedlg.obj \ - $(MSWDIR)\font.obj \ - $(MSWDIR)\fontdlg.obj \ - $(MSWDIR)\frame.obj \ - $(MSWDIR)\gauge95.obj \ - $(MSWDIR)\gaugemsw.obj \ - $(MSWDIR)\gdiobj.obj \ - $(MSWDIR)\helpwin.obj \ - $(MSWDIR)\icon.obj \ - $(MSWDIR)\imaglist.obj \ - $(MSWDIR)\joystick.obj \ - $(MSWDIR)\listbox.obj \ - $(MSWDIR)\listctrl.obj \ - $(MSWDIR)\main.obj \ - $(MSWDIR)\mdi.obj \ - $(MSWDIR)\menu.obj \ - $(MSWDIR)\menuitem.obj \ - $(MSWDIR)\metafile.obj \ - $(MSWDIR)\minifram.obj \ - $(MSWDIR)\msgdlg.obj \ - $(MSWDIR)\nativdlg.obj \ - $(MSWDIR)\notebook.obj \ - $(MSWDIR)\ownerdrw.obj \ - $(MSWDIR)\palette.obj \ - $(MSWDIR)\pen.obj \ - $(MSWDIR)\penwin.obj \ - $(MSWDIR)\pnghand.obj \ - $(MSWDIR)\printdlg.obj \ - $(MSWDIR)\printwin.obj \ - $(MSWDIR)\radiobox.obj \ - $(MSWDIR)\radiobut.obj \ - $(MSWDIR)\region.obj \ - $(MSWDIR)\registry.obj \ - $(MSWDIR)\regconf.obj \ - $(MSWDIR)\scrolbar.obj \ - $(MSWDIR)\settings.obj \ - $(MSWDIR)\slidrmsw.obj \ - $(MSWDIR)\slider95.obj \ - $(MSWDIR)\spinbutt.obj \ - $(MSWDIR)\statbmp.obj \ - $(MSWDIR)\statbox.obj \ - $(MSWDIR)\stattext.obj \ - $(MSWDIR)\statbr95.obj \ - $(MSWDIR)\tabctrl.obj \ - $(MSWDIR)\tbarmsw.obj \ - $(MSWDIR)\textctrl.obj \ - $(MSWDIR)\thread.obj \ - $(MSWDIR)\timer.obj \ - $(MSWDIR)\treectrl.obj \ - $(MSWDIR)\taskbar.obj \ - $(MSWDIR)\tbar95.obj \ - $(MSWDIR)\utils.obj \ - $(MSWDIR)\utilsexc.obj \ - $(MSWDIR)\wave.obj \ - $(MSWDIR)\window.obj \ - $(MSWDIR)\xpmhand.obj \ - $(MSWDIR)\droptgt.obj \ - $(MSWDIR)\dropsrc.obj \ - $(MSWDIR)\oleutils.obj \ - $(MSWDIR)\dataobj.obj \ - $(MSWDIR)\uuid.obj - -# Unfortunately this causes a crash when the oleauto sample starts. -# $(MSWDIR)\automtn.obj - -OBJECTS = $(COMMONOBJS) $(GENERICOBJS) $(MSWOBJS) - -default: wx - -wx: $(CFG) $(DUMMY).obj $(OBJECTS) $(PERIPH_TARGET) $(LIBTARGET) - -all: all_libs all_execs - -!if "$(DLL)" == "0" - -$(LIBTARGET): $(DUMMY).obj $(OBJECTS) - erase $(LIBTARGET) - tlib $(LIBTARGET) /P512 @&&! --+$(OBJECTS:.obj =.obj -+) -+$(PERIPH_LIBS:.lib =.lib -+) -! - -!else - -$(LIBTARGET): $(DUMMY).obj $(OBJECTS) - erase $(LIBTARGET) - erase $(WXLIBDIR)\wx.dll - tlink32 $(LINK_FLAGS) /v @&&! -c0d32.obj $(OBJECTS) -$(WXLIBDIR)\wx -nul -$(PERIPH_LIBS) $(LIBS) -wxb32 -! - implib -c $(LIBTARGET) $(WXLIBDIR)\wx.dll - -!endif - -dummy.obj: dummy.$(SRCSUFF) $(LOCALHEADERS) $(BASEHEADERS) $(WXDIR)\include\wx\wx.h -dummydll.obj: dummydll.$(SRCSUFF) $(LOCALHEADERS) $(BASEHEADERS) $(WXDIR)\include\wx\wx.h - -$(MSWDIR)\y_tab.obj: $(COMMDIR)\y_tab.c $(COMMDIR)\lex_yy.c - -# cl @<< -#$(CPPFLAGS2) /c $*.c -DUSE_DEFINE -DYY_USE_PROTOS /Fo$@ -#<< - -$(COMMDIR)\y_tab.c: $(COMMDIR)\dosyacc.c - copy $(COMMDIR)\dosyacc.c $(COMMDIR)\y_tab.c - -$(COMMDIR)\lex_yy.c: $(COMMDIR)\doslex.c - copy $(COMMDIR)\doslex.c $(COMMDIR)\lex_yy.c - -#$(OBJECTS): $(WXDIR)\include\wx\setup.h - -$(MSWDIR)\accel.obj: $(MSWDIR)\accel.$(SRCSUFF) - -$(MSWDIR)\app.obj: $(MSWDIR)\app.$(SRCSUFF) - -$(MSWDIR)\bitmap.obj: $(MSWDIR)\bitmap.$(SRCSUFF) - -$(MSWDIR)\bmpbuttn.obj: $(MSWDIR)\bmpbuttn.$(SRCSUFF) - -$(MSWDIR)\brush.obj: $(MSWDIR)\brush.$(SRCSUFF) - -$(MSWDIR)\button.obj: $(MSWDIR)\button.$(SRCSUFF) - -$(MSWDIR)\choice.obj: $(MSWDIR)\choice.$(SRCSUFF) - -$(MSWDIR)\checkbox.obj: $(MSWDIR)\checkbox.$(SRCSUFF) - -$(MSWDIR)\checklst.obj: $(MSWDIR)\checklst.$(SRCSUFF) - -$(MSWDIR)\clipbrd.obj: $(MSWDIR)\clipbrd.$(SRCSUFF) - -$(MSWDIR)\colordlg.obj: $(MSWDIR)\colordlg.$(SRCSUFF) - -$(MSWDIR)\colour.obj: $(MSWDIR)\colour.$(SRCSUFF) - -$(MSWDIR)\combobox.obj: $(MSWDIR)\combobox.$(SRCSUFF) - -$(MSWDIR)\control.obj: $(MSWDIR)\control.$(SRCSUFF) - -$(MSWDIR)\curico.obj: $(MSWDIR)\curico.$(SRCSUFF) - -$(MSWDIR)\cursor.obj: $(MSWDIR)\cursor.$(SRCSUFF) - -$(MSWDIR)\data.obj: $(MSWDIR)\data.$(SRCSUFF) - -$(MSWDIR)\dde.obj: $(MSWDIR)\dde.$(SRCSUFF) - -$(MSWDIR)\dc.obj: $(MSWDIR)\dc.$(SRCSUFF) - -$(MSWDIR)\dcmemory.obj: $(MSWDIR)\dcmemory.$(SRCSUFF) - -$(MSWDIR)\dcclient.obj: $(MSWDIR)\dcclient.$(SRCSUFF) - -$(MSWDIR)\dcprint.obj: $(MSWDIR)\dcprint.$(SRCSUFF) - -$(MSWDIR)\dcscreen.obj: $(MSWDIR)\dcscreen.$(SRCSUFF) - -$(MSWDIR)\dialog.obj: $(MSWDIR)\dialog.$(SRCSUFF) - -$(MSWDIR)\dib.obj: $(MSWDIR)\dib.$(SRCSUFF) - -$(MSWDIR)\dirdlg.obj: $(MSWDIR)\dirdlg.$(SRCSUFF) - -$(MSWDIR)\filedlg.obj: $(MSWDIR)\filedlg.$(SRCSUFF) - -$(MSWDIR)\font.obj: $(MSWDIR)\font.$(SRCSUFF) - -$(MSWDIR)\fontdlg.obj: $(MSWDIR)\fontdlg.$(SRCSUFF) - -$(MSWDIR)\frame.obj: $(MSWDIR)\frame.$(SRCSUFF) - -$(MSWDIR)\gaugemsw.obj: $(MSWDIR)\gaugemsw.$(SRCSUFF) - -$(MSWDIR)\gauge95.obj: $(MSWDIR)\gauge95.$(SRCSUFF) - -$(MSWDIR)\gdiobj.obj: $(MSWDIR)\gdiobj.$(SRCSUFF) - -$(MSWDIR)\icon.obj: $(MSWDIR)\icon.$(SRCSUFF) - -$(MSWDIR)\imaglist.obj: $(MSWDIR)\imaglist.$(SRCSUFF) - -$(MSWDIR)\joystick.obj: $(MSWDIR)\joystick.$(SRCSUFF) - -$(MSWDIR)\listbox.obj: $(MSWDIR)\listbox.$(SRCSUFF) - -$(MSWDIR)\listctrl.obj: $(MSWDIR)\listctrl.$(SRCSUFF) - -$(MSWDIR)\main.obj: $(MSWDIR)\main.$(SRCSUFF) - -$(MSWDIR)\mdi.obj: $(MSWDIR)\mdi.$(SRCSUFF) - -$(MSWDIR)\menu.obj: $(MSWDIR)\menu.$(SRCSUFF) - -$(MSWDIR)\menuitem.obj: $(MSWDIR)\menu.$(SRCSUFF) - -$(MSWDIR)\metafile.obj: $(MSWDIR)\metafile.$(SRCSUFF) - -$(MSWDIR)\minifram.obj: $(MSWDIR)\minifram.$(SRCSUFF) - -$(MSWDIR)\msgdlg.obj: $(MSWDIR)\msgdlg.$(SRCSUFF) - -$(MSWDIR)\nativdlg.obj: $(MSWDIR)\nativdlg.$(SRCSUFF) - -$(MSWDIR)\notebook.obj: $(MSWDIR)\notebook.$(SRCSUFF) - -$(MSWDIR)\ownerdrw.obj: $(MSWDIR)\ownerdrw.$(SRCSUFF) - -$(MSWDIR)\palette.obj: $(MSWDIR)\palette.$(SRCSUFF) - -$(MSWDIR)\pen.obj: $(MSWDIR)\pen.$(SRCSUFF) - -$(MSWDIR)\penwin.obj: $(MSWDIR)\penwin.$(SRCSUFF) - -$(MSWDIR)\printdlg.obj: $(MSWDIR)\printdlg.$(SRCSUFF) - -$(MSWDIR)\printwin.obj: $(MSWDIR)\printwin.$(SRCSUFF) - -$(MSWDIR)\radiobox.obj: $(MSWDIR)\radiobox.$(SRCSUFF) - -$(MSWDIR)\radiobut.obj: $(MSWDIR)\radiobut.$(SRCSUFF) - -$(MSWDIR)\region.obj: $(MSWDIR)\region.$(SRCSUFF) - -$(MSWDIR)\registry.obj: $(MSWDIR)\registry.$(SRCSUFF) - -$(MSWDIR)\regconf.obj: $(MSWDIR)\regconf.$(SRCSUFF) - -$(MSWDIR)\scrolbar.obj: $(MSWDIR)\scrolbar.$(SRCSUFF) - -$(MSWDIR)\settings.obj: $(MSWDIR)\settings.$(SRCSUFF) - -$(MSWDIR)\slidrmsw.obj: $(MSWDIR)\slidrmsw.$(SRCSUFF) - -$(MSWDIR)\slider95.obj: $(MSWDIR)\slider95.$(SRCSUFF) - -$(MSWDIR)\spinbutt.obj: $(MSWDIR)\spinbutt.$(SRCSUFF) - -$(MSWDIR)\statbmp.obj: $(MSWDIR)\statbmp.$(SRCSUFF) - -$(MSWDIR)\statbox.obj: $(MSWDIR)\statbox.$(SRCSUFF) - -$(MSWDIR)\statbr95.obj: $(MSWDIR)\statbr95.$(SRCSUFF) - -$(MSWDIR)\stattext.obj: $(MSWDIR)\stattext.$(SRCSUFF) - -$(MSWDIR)\tabctrl.obj: $(MSWDIR)\tabctrl.$(SRCSUFF) - -$(MSWDIR)\taskbar.obj: $(MSWDIR)\taskbar.$(SRCSUFF) - -$(MSWDIR)\tbar95.obj: $(MSWDIR)\tbar95.$(SRCSUFF) - -$(MSWDIR)\tbarmsw.obj: $(MSWDIR)\tbarmsw.$(SRCSUFF) - -$(MSWDIR)\textctrl.obj: $(MSWDIR)\textctrl.$(SRCSUFF) - -$(MSWDIR)\thread.obj: $(MSWDIR)\thread.$(SRCSUFF) - -$(MSWDIR)\timer.obj: $(MSWDIR)\timer.$(SRCSUFF) - -$(MSWDIR)\treectrl.obj: $(MSWDIR)\treectrl.$(SRCSUFF) - -$(MSWDIR)\utils.obj: $(MSWDIR)\utils.$(SRCSUFF) - -$(MSWDIR)\utilsexc.obj: $(MSWDIR)\utilsexc.$(SRCSUFF) - -$(MSWDIR)\wave.obj: $(MSWDIR)\wave.$(SRCSUFF) - -$(MSWDIR)\window.obj: $(MSWDIR)\window.$(SRCSUFF) - -$(MSWDIR)\droptgt.obj: $(OLEDIR)\droptgt.$(SRCSUFF) - -$(MSWDIR)\dropsrc.obj: $(OLEDIR)\dropsrc.$(SRCSUFF) - -$(MSWDIR)\dataobj.obj: $(OLEDIR)\dataobj.$(SRCSUFF) - -$(MSWDIR)\oleutils.obj: $(OLEDIR)\oleutils.$(SRCSUFF) - -$(MSWDIR)\uuid.obj: $(OLEDIR)\uuid.$(SRCSUFF) - -$(MSWDIR)\automtn.obj: $(OLEDIR)\automtn.$(SRCSUFF) - -######################################################## -# Common objects (always compiled) - -$(MSWDIR)\config.obj: $(COMMDIR)\config.$(SRCSUFF) - -$(MSWDIR)\cmndata.obj: $(COMMDIR)\cmndata.$(SRCSUFF) - -$(MSWDIR)\docview.obj: $(COMMDIR)\docview.$(SRCSUFF) - -$(MSWDIR)\docmdi.obj: $(COMMDIR)\docmdi.$(SRCSUFF) - -$(MSWDIR)\dynarray.obj: $(COMMDIR)\dynarray.$(SRCSUFF) - -$(MSWDIR)\dynlib.obj: $(COMMDIR)\dynlib.$(SRCSUFF) - -$(MSWDIR)\event.obj: $(COMMDIR)\event.$(SRCSUFF) - -$(MSWDIR)\file.obj: $(COMMDIR)\file.$(SRCSUFF) - -$(MSWDIR)\fileconf.obj: $(COMMDIR)\fileconf.$(SRCSUFF) - -$(MSWDIR)\filefn.obj: $(COMMDIR)\filefn.$(SRCSUFF) - -$(MSWDIR)\framecmn.obj: $(COMMDIR)\framecmn.$(SRCSUFF) - -$(MSWDIR)\gdicmn.obj: $(COMMDIR)\gdicmn.$(SRCSUFF) - -$(MSWDIR)\image.obj: $(COMMDIR)\image.$(SRCSUFF) - -$(MSWDIR)\intl.obj: $(COMMDIR)\intl.$(SRCSUFF) - -$(MSWDIR)\ipcbase.obj: $(COMMDIR)\ipcbase.$(SRCSUFF) - -$(MSWDIR)\helpbase.obj: $(COMMDIR)\helpbase.$(SRCSUFF) - -$(MSWDIR)\layout.obj: $(COMMDIR)\layout.$(SRCSUFF) - -$(MSWDIR)\log.obj: $(COMMDIR)\log.$(SRCSUFF) - -$(MSWDIR)\memory.obj: $(COMMDIR)\memory.$(SRCSUFF) - -$(MSWDIR)\mimetype.obj: $(COMMDIR)\mimetype.$(SRCSUFF) - -$(MSWDIR)\module.obj: $(COMMDIR)\module.$(SRCSUFF) - -$(MSWDIR)\object.obj: $(COMMDIR)\object.$(SRCSUFF) - -$(MSWDIR)\odbc.obj: $(COMMDIR)\odbc.$(SRCSUFF) - -$(MSWDIR)\prntbase.obj: $(COMMDIR)\prntbase.$(SRCSUFF) - -$(MSWDIR)\resource.obj: $(COMMDIR)\resource.$(SRCSUFF) - -$(MSWDIR)\tbarbase.obj: $(COMMDIR)\tbarbase.$(SRCSUFF) - -$(MSWDIR)\tbarsmpl.obj: $(COMMDIR)\tbarsmpl.$(SRCSUFF) - -$(MSWDIR)\textfile.obj: $(COMMDIR)\textfile.$(SRCSUFF) - -$(MSWDIR)\timercmn.obj: $(COMMDIR)\timercmn.$(SRCSUFF) - -$(MSWDIR)\utilscmn.obj: $(COMMDIR)\utilscmn.$(SRCSUFF) - -$(MSWDIR)\validate.obj: $(COMMDIR)\validate.$(SRCSUFF) - -$(MSWDIR)\valtext.obj: $(COMMDIR)\valtext.$(SRCSUFF) - -$(MSWDIR)\date.obj: $(COMMDIR)\date.$(SRCSUFF) - -$(MSWDIR)\wxexpr.obj: $(COMMDIR)\wxexpr.$(SRCSUFF) - -$(MSWDIR)\hash.obj: $(COMMDIR)\hash.$(SRCSUFF) - -$(MSWDIR)\list.obj: $(COMMDIR)\list.$(SRCSUFF) - -$(MSWDIR)\string.obj: $(COMMDIR)\string.$(SRCSUFF) - -$(MSWDIR)\variant.obj: $(COMMDIR)\variant.$(SRCSUFF) - -$(MSWDIR)\matrix.obj: $(COMMDIR)\matrix.$(SRCSUFF) - -$(MSWDIR)\time.obj: $(COMMDIR)\time.$(SRCSUFF) - -$(MSWDIR)\datstrm.obj: $(COMMDIR)\datstrm.$(SRCSUFF) - -$(MSWDIR)\sckstrm.obj: $(COMMDIR)\sckstrm.$(SRCSUFF) - -$(MSWDIR)\mstream.obj: $(COMMDIR)\mstream.$(SRCSUFF) - -$(MSWDIR)\zstream.obj: $(COMMDIR)\zstream.$(SRCSUFF) - -$(MSWDIR)\wfstream.obj: $(COMMDIR)\wfstream.$(SRCSUFF) - -$(MSWDIR)\stream.obj: $(COMMDIR)\stream.$(SRCSUFF) - -$(MSWDIR)\objstrm.obj: $(COMMDIR)\objstrm.$(SRCSUFF) - -$(MSWDIR)\wincmn.obj: $(COMMDIR)\wincmn.$(SRCSUFF) - -$(MSWDIR)\extended.obj: $(COMMDIR)\extended.c - -$(MSWDIR)\tokenzr.obj: $(COMMDIR)\tokenzr.$(SRCSUFF) - -$(MSWDIR)\socket.obj: $(COMMDIR)\socket.$(SRCSUFF) - -$(MSWDIR)\sckaddr.obj: $(COMMDIR)\sckaddr.$(SRCSUFF) - -$(MSWDIR)\protocol.obj: $(COMMDIR)\protocol.$(SRCSUFF) - -$(MSWDIR)\url.obj: $(COMMDIR)\url.$(SRCSUFF) - -$(MSWDIR)\http.obj: $(COMMDIR)\http.$(SRCSUFF) - -$(MSWDIR)\ftp.obj: $(COMMDIR)\ftp.$(SRCSUFF) - -$(MSWDIR)\sckfile.obj: $(COMMDIR)\sckfile.$(SRCSUFF) - -$(MSWDIR)\sckipc.obj: $(COMMDIR)\sckipc.$(SRCSUFF) - -######################################################## -# Generic objects (not always compiled, depending on -# whether platforms have native implementations) - -$(MSWDIR)\choicdgg.obj: $(GENDIR)\choicdgg.$(SRCSUFF) - -$(MSWDIR)\colrdlgg.obj: $(GENDIR)\colrdlgg.$(SRCSUFF) - -$(MSWDIR)\fontdlgg.obj: $(GENDIR)\fontdlgg.$(SRCSUFF) - -$(MSWDIR)\gridg.obj: $(GENDIR)\gridg.$(SRCSUFF) - -$(MSWDIR)\helpxlp.obj: $(GENDIR)\helpxlp.$(SRCSUFF) - -$(MSWDIR)\laywin.obj: $(GENDIR)\laywin.$(SRCSUFF) - -$(MSWDIR)\msgdlgg.obj: $(GENDIR)\msgdlgg.$(SRCSUFF) - -$(MSWDIR)\panelg.obj: $(GENDIR)\panelg.$(SRCSUFF) - -$(MSWDIR)\prop.obj: $(GENDIR)\prop.$(SRCSUFF) - -$(MSWDIR)\proplist.obj: $(GENDIR)\proplist.$(SRCSUFF) - -$(MSWDIR)\propform.obj: $(GENDIR)\propform.$(SRCSUFF) - -$(MSWDIR)\printps.obj: $(GENDIR)\printps.$(SRCSUFF) - -$(MSWDIR)\prntdlgg.obj: $(GENDIR)\prntdlgg.$(SRCSUFF) - -$(MSWDIR)\sashwin.obj: $(GENDIR)\sashwin.$(SRCSUFF) - -$(MSWDIR)\scrolwin.obj: $(GENDIR)\scrolwin.$(SRCSUFF) - -$(MSWDIR)\splitter.obj: $(GENDIR)\splitter.$(SRCSUFF) - -$(MSWDIR)\statusbr.obj: $(GENDIR)\statusbr.$(SRCSUFF) - -$(MSWDIR)\textdlgg.obj: $(GENDIR)\textdlgg.$(SRCSUFF) - -$(MSWDIR)\tabg.obj: $(GENDIR)\tabg.$(SRCSUFF) - -all_utils: - cd $(WXDIR)\utils - make -f makefile.b32 - cd $(WXDIR)\src\msw - -all_samples: - cd $(WXDIR)\samples - make -f makefile.b32 - cd $(WXDIR)\src\msw - -all_execs: - cd $(WXDIR)\utils - make -f makefile.b32 all_execs - cd $(WXDIR)\src\msw - -wxxpm: $(CFG) - cd $(WXDIR)\src\xpm - make -f makefile.b32 -DCFG=$(CFG) -DFINAL=$(FINAL) -DWXWIN=$(WXDIR) -DDEBUG=$(DEBUG) - cd $(WXDIR)\src\msw - -clean_wxxpm: $(CFG) - cd $(WXDIR)\src\xpm - make -f makefile.b32 clean - cd $(WXDIR)\src\msw - -png: $(CFG) - cd $(WXDIR)\src\png - make -f makefile.b32 - cd $(WXDIR)\src\msw - -clean_png: - cd $(WXDIR)\src\png - make -f makefile.b32 clean - cd $(WXDIR)\src\msw - -zlib: $(CFG) - cd $(WXDIR)\src\zlib - make -f makefile.b32 lib - cd $(WXDIR)\src\msw - -clean_zlib: - cd $(WXDIR)\src\zlib - make -f makefile.b32 clean - cd $(WXDIR)\src\msw - -$(CFG): makefile.b32 - copy &&! --H=$(WXDIR)\src\msw\wx32.csm --3 --P --d --w-hid --w-par --w-pia --w-aus --w-rch --WE --tWM - --I$(WXINC);$(BCCDIR)\include;$(WXDIR)/src/png;$(WXDIR)/src/zlib;$(WXDIR)/src/xpm --I$(WXDIR)\include\wx\msw\gnuwin32 - --L$(BCCDIR)\lib --D__WXWIN__ --D__WXMSW__ --D__WINDOWS__ --DWIN32 -$(OPT) -$(DEBUG_FLAGS) -$(WIN95FLAG) -! $(CFG) - -#-I$(WXDIR)\src\common\wxxpm\libxpm.34b\lib -# -Oxt - -clean: $(PERIPH_CLEAN_TARGET) - erase $(LIBTARGET) - erase *.obj - erase *.pch - erase *.csm - erase *.cfg - erase ..\common\y_tab.c - erase ..\common\lex_yy.c - -cleanall: clean - - diff --git a/src/msw/makefile.bcc b/src/msw/makefile.bcc deleted file mode 100644 index f4a4898606..0000000000 --- a/src/msw/makefile.bcc +++ /dev/null @@ -1,736 +0,0 @@ -# -# File: makefile.bcc -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile : Builds wxWindows library wx.lib for Windows 3.1 -# and Borland C++ 3.1 - -!if "$(BCCDIR)" == "" -!error You must define the BCCDIR variable in autoexec.bat, e.g. BCCDIR=d:\bc4 -!endif - -!if "$(WXWIN)" == "" -!error You must define the WXWIN variable in autoexec.bat, e.g. WXWIN=c:\wx -!endif - -!if "$(CFG)" == "" -#!error You must start compiling from wx\src, not wx\src\msw. -!endif - -!ifndef DEBUG -DEBUG=0 -!endif - -WXDIR = $(WXWIN) - -!include $(WXDIR)\src\makebcc.env - -THISDIR = $(WXDIR)\src\msw - -# Please set these according to the settings in wx_setup.h, so we can include -# the appropriate libraries in wx.lib -USE_CTL3D=1 -USE_XPM_IN_MSW=0 - -PERIPH_LIBS= -PERIPH_TARGET= -PERIPH_CLEAN_TARGET= - -!if "$(USE_CTL3D)" == "1" -PERIPH_LIBS=$(BCCDIR)\lib\ctl3dv2.lib $(PERIPH_LIBS) -!endif - -!if "$(USE_XPM_IN_MSW)" == "1" -PERIPH_LIBS=$(WXDIR)\xpm.lib $(PERIPH_LIBS) -PERIPH_TARGET=xpm $(PERIPH_TARGET) -PERIPH_CLEAN_TARGET=clean_xpm $(PERIPH_CLEAN_TARGET) -!endif - -# TODO: add these libraries -# PERIPH_LIBS=$(WXDIR)\lib\zlib.lib $(WXDIR)\lib\winpng.lib $(PERIPH_LIBS) -# PERIPH_TARGET=zlib png $(PERIPH_TARGET) -# PERIPH_CLEAN_TARGET=clean_zlib clean_png $(PERIPH_CLEAN_TARGET) - -CPPFLAGS=$(DEBUG_FLAGS) $(OPT) @$(CFG) - -LIBTARGET= $(WXLIBDIR)\wx.lib -DUMMY=dummy - -GENDIR=..\generic -COMMDIR=..\common -OLEDIR=.\ole -MSWDIR=. - -DOCDIR = $(WXDIR)\docs - -GENERICOBJS= \ - $(MSWDIR)\choicdgg.obj \ - $(MSWDIR)\colrdlgg.obj \ - $(MSWDIR)\fontdlgg.obj \ - $(MSWDIR)\gridg.obj \ - $(MSWDIR)\imaglist.obj \ - $(MSWDIR)\helpxlp.obj \ - $(MSWDIR)\laywin.obj \ - $(MSWDIR)\listctrl.obj \ - $(MSWDIR)\msgdlgg.obj \ - $(MSWDIR)\notebook.obj \ - $(MSWDIR)\panelg.obj \ - $(MSWDIR)\prop.obj \ - $(MSWDIR)\propform.obj \ - $(MSWDIR)\proplist.obj \ - $(MSWDIR)\sashwin.obj \ - $(MSWDIR)\scrolwin.obj \ - $(MSWDIR)\splitter.obj \ - $(MSWDIR)\statusbr.obj \ - $(MSWDIR)\tabg.obj \ - $(MSWDIR)\textdlgg.obj \ - $(MSWDIR)\treectrl.obj - -# $(MSWDIR)\printps.obj \ -# $(MSWDIR)\prntdlgg.obj \ - -COMMONOBJS = \ - $(MSWDIR)\config.obj \ - $(MSWDIR)\cmndata.obj \ - $(MSWDIR)\docview.obj \ - $(MSWDIR)\docmdi.obj \ - $(MSWDIR)\dynarray.obj \ - $(MSWDIR)\event.obj \ - $(MSWDIR)\file.obj \ - $(MSWDIR)\fileconf.obj \ - $(MSWDIR)\filefn.obj \ - $(MSWDIR)\framecmn.obj \ - $(MSWDIR)\gdicmn.obj \ - $(MSWDIR)\helpbase.obj \ - $(MSWDIR)\image.obj \ - $(MSWDIR)\intl.obj \ - $(MSWDIR)\ipcbase.obj \ - $(MSWDIR)\log.obj \ - $(MSWDIR)\layout.obj \ - $(MSWDIR)\memory.obj \ - $(MSWDIR)\module.obj \ - $(MSWDIR)\object.obj \ - $(MSWDIR)\postscrp.obj \ - $(MSWDIR)\prntbase.obj \ - $(MSWDIR)\resource.obj \ - $(MSWDIR)\resourc2.obj \ - $(MSWDIR)\tbarbase.obj \ - $(MSWDIR)\tbarsmpl.obj \ - $(MSWDIR)\textfile.obj \ - $(MSWDIR)\timercmn.obj \ - $(MSWDIR)\utilscmn.obj \ - $(MSWDIR)\validate.obj \ - $(MSWDIR)\valtext.obj \ - $(MSWDIR)\variant.obj \ - $(MSWDIR)\date.obj \ - $(MSWDIR)\hash.obj \ - $(MSWDIR)\list.obj \ - $(MSWDIR)\string.obj \ - $(MSWDIR)\time.obj \ - $(MSWDIR)\wxexpr.obj \ - $(MSWDIR)\y_tab.obj \ - $(MSWDIR)\stream.obj \ - $(MSWDIR)\wfstream.obj \ - $(MSWDIR)\mstream.obj \ - $(MSWDIR)\zstream.obj \ - $(MSWDIR)\datstrm.obj \ - $(MSWDIR)\sckstrm.obj \ - $(MSWDIR)\extended.obj \ - $(MSWDIR)\wincmn.obj \ - $(MSWDIR)\objstrm.obj \ - $(MSWDIR)\dynlib.obj \ - $(MSWDIR)\tokenzr.obj - -# Don't compile for WIN16 -# $(MSWDIR)\socket.obj \ -# $(MSWDIR)\sckaddr.obj \ -# $(MSWDIR)\protocol.obj \ -# $(MSWDIR)\url.obj \ -# $(MSWDIR)\http.obj \ -# $(MSWDIR)\ftp.obj \ -# $(MSWDIR)\sckfile.obj \ -# $(MSWDIR)\sckipc.obj \ - -# Needs extra files (sql*.h) so not compiled by default. -# $(MSWDIR)\odbc.obj \ - -# Uses WIN32 registry functions -# $(MSWDIR)\mimetype.obj \ - -MSWOBJS = \ - $(MSWDIR)\accel.obj \ - $(MSWDIR)\app.obj \ - $(MSWDIR)\bitmap.obj \ - $(MSWDIR)\bmpbuttn.obj \ - $(MSWDIR)\brush.obj \ - $(MSWDIR)\button.obj \ - $(MSWDIR)\checkbox.obj \ - $(MSWDIR)\checklst.obj \ - $(MSWDIR)\choice.obj \ - $(MSWDIR)\clipbrd.obj \ - $(MSWDIR)\colordlg.obj \ - $(MSWDIR)\colour.obj \ - $(MSWDIR)\combobox.obj \ - $(MSWDIR)\control.obj \ - $(MSWDIR)\curico.obj \ - $(MSWDIR)\cursor.obj \ - $(MSWDIR)\data.obj \ - $(MSWDIR)\dc.obj \ - $(MSWDIR)\dcmemory.obj \ - $(MSWDIR)\dcclient.obj \ - $(MSWDIR)\dcprint.obj \ - $(MSWDIR)\dcscreen.obj \ - $(MSWDIR)\dde.obj \ - $(MSWDIR)\dialog.obj \ - $(MSWDIR)\dib.obj \ - $(MSWDIR)\dibutils.obj \ - $(MSWDIR)\dirdlg.obj \ - $(MSWDIR)\filedlg.obj \ - $(MSWDIR)\font.obj \ - $(MSWDIR)\fontdlg.obj \ - $(MSWDIR)\frame.obj \ - $(MSWDIR)\gaugemsw.obj \ - $(MSWDIR)\gdiobj.obj \ - $(MSWDIR)\helpwin.obj \ - $(MSWDIR)\icon.obj \ - $(MSWDIR)\iniconf.obj \ - $(MSWDIR)\joystick.obj \ - $(MSWDIR)\listbox.obj \ - $(MSWDIR)\main.obj \ - $(MSWDIR)\mdi.obj \ - $(MSWDIR)\menu.obj \ - $(MSWDIR)\menuitem.obj \ - $(MSWDIR)\metafile.obj \ - $(MSWDIR)\minifram.obj \ - $(MSWDIR)\msgdlg.obj \ - $(MSWDIR)\nativdlg.obj \ - $(MSWDIR)\ownerdrw.obj \ - $(MSWDIR)\palette.obj \ - $(MSWDIR)\pen.obj \ - $(MSWDIR)\penwin.obj \ - $(MSWDIR)\pnghand.obj \ - $(MSWDIR)\printdlg.obj \ - $(MSWDIR)\printwin.obj \ - $(MSWDIR)\radiobox.obj \ - $(MSWDIR)\radiobut.obj \ - $(MSWDIR)\region.obj \ - $(MSWDIR)\scrolbar.obj \ - $(MSWDIR)\settings.obj \ - $(MSWDIR)\slidrmsw.obj \ - $(MSWDIR)\spinbutt.obj \ - $(MSWDIR)\statbmp.obj \ - $(MSWDIR)\statbox.obj \ - $(MSWDIR)\stattext.obj \ - $(MSWDIR)\tbarmsw.obj \ - $(MSWDIR)\textctrl.obj \ - $(MSWDIR)\timer.obj \ - $(MSWDIR)\utils.obj \ - $(MSWDIR)\utilsexc.obj \ - $(MSWDIR)\wave.obj \ - $(MSWDIR)\window.obj \ - $(MSWDIR)\xpmhand.obj - -# Unfortunately this causes a crash when the oleauto sample starts. -# $(MSWDIR)\automtn.obj - -# Not used for 16-bit compilation -# $(MSWDIR)\gauge95.obj \ -# $(MSWDIR)\treectrl.obj \ -# $(MSWDIR)\oleutils.obj \ -# $(MSWDIR)\dataobj.obj \ -# $(MSWDIR)\uuid.obj -# $(MSWDIR)\droptgt.obj \ -# $(MSWDIR)\dropsrc.obj \ -# $(MSWDIR)\imaglist.obj \ -# $(MSWDIR)\notebook.obj \ -# $(MSWDIR)\listctrl.obj \ -# $(MSWDIR)\tabctrl.obj \ -# $(MSWDIR)\taskbar.obj \ -# $(MSWDIR)\tbar95.obj \ -# $(MSWDIR)\thread.obj \ -# $(MSWDIR)\slider95.obj \ -# $(MSWDIR)\statbr95.obj \ -# $(MSWDIR)\registry.obj \ -# $(MSWDIR)\regconf.obj \ - -OBJECTS = $(COMMONOBJS) $(GENERICOBJS) $(MSWOBJS) - -default: wx - -wx: $(CFG) $(DUMMY).obj $(OBJECTS) $(PERIPH_TARGET) $(LIBTARGET) - -$(LIBTARGET): $(DUMMY).obj $(OBJECTS) $(PERIPH_LIBS) - erase $(LIBTARGET) - tlib $(LIBTARGET) /P1024 @&&! -+$(OBJECTS:.obj =.obj +) +$(PERIPH_LIBS:.lib =.lib +) -! - -dummy.obj: dummy.$(SRCSUFF) $(LOCALHEADERS) $(BASEHEADERS) $(WXDIR)\include\wx\wx.h -dummydll.obj: dummydll.$(SRCSUFF) $(LOCALHEADERS) $(BASEHEADERS) $(WXDIR)\include\wx\wx.h - -$(MSWDIR)\y_tab.obj: $(COMMDIR)\y_tab.c $(COMMDIR)\lex_yy.c - -# cl @<< -#$(CPPFLAGS2) /c $*.c -DUSE_DEFINE -DYY_USE_PROTOS /Fo$@ -#<< - -$(COMMDIR)\y_tab.c: $(COMMDIR)\dosyacc.c - copy $(COMMDIR)\dosyacc.c $(COMMDIR)\y_tab.c - -$(COMMDIR)\lex_yy.c: $(COMMDIR)\doslex.c - copy $(COMMDIR)\doslex.c $(COMMDIR)\lex_yy.c - -#$(OBJECTS): $(WXDIR)\include\wx\setup.h - -$(MSWDIR)\accel.obj: $(MSWDIR)\accel.$(SRCSUFF) - -$(MSWDIR)\app.obj: $(MSWDIR)\app.$(SRCSUFF) - -$(MSWDIR)\bitmap.obj: $(MSWDIR)\bitmap.$(SRCSUFF) - -$(MSWDIR)\bmpbuttn.obj: $(MSWDIR)\bmpbuttn.$(SRCSUFF) - -$(MSWDIR)\brush.obj: $(MSWDIR)\brush.$(SRCSUFF) - -$(MSWDIR)\button.obj: $(MSWDIR)\button.$(SRCSUFF) - -$(MSWDIR)\choice.obj: $(MSWDIR)\choice.$(SRCSUFF) - -$(MSWDIR)\checkbox.obj: $(MSWDIR)\checkbox.$(SRCSUFF) - -$(MSWDIR)\checklst.obj: $(MSWDIR)\checklst.$(SRCSUFF) - -$(MSWDIR)\clipbrd.obj: $(MSWDIR)\clipbrd.$(SRCSUFF) - -$(MSWDIR)\colordlg.obj: $(MSWDIR)\colordlg.$(SRCSUFF) - -$(MSWDIR)\colour.obj: $(MSWDIR)\colour.$(SRCSUFF) - -$(MSWDIR)\combobox.obj: $(MSWDIR)\combobox.$(SRCSUFF) - -$(MSWDIR)\control.obj: $(MSWDIR)\control.$(SRCSUFF) - -$(MSWDIR)\curico.obj: $(MSWDIR)\curico.$(SRCSUFF) - -$(MSWDIR)\cursor.obj: $(MSWDIR)\cursor.$(SRCSUFF) - -$(MSWDIR)\data.obj: $(MSWDIR)\data.$(SRCSUFF) - -$(MSWDIR)\dde.obj: $(MSWDIR)\dde.$(SRCSUFF) - -$(MSWDIR)\dc.obj: $(MSWDIR)\dc.$(SRCSUFF) - -$(MSWDIR)\dcmemory.obj: $(MSWDIR)\dcmemory.$(SRCSUFF) - -$(MSWDIR)\dcclient.obj: $(MSWDIR)\dcclient.$(SRCSUFF) - -$(MSWDIR)\dcprint.obj: $(MSWDIR)\dcprint.$(SRCSUFF) - -$(MSWDIR)\dcscreen.obj: $(MSWDIR)\dcscreen.$(SRCSUFF) - -$(MSWDIR)\dialog.obj: $(MSWDIR)\dialog.$(SRCSUFF) - -$(MSWDIR)\dib.obj: $(MSWDIR)\dib.$(SRCSUFF) - -$(MSWDIR)\dirdlg.obj: $(MSWDIR)\dirdlg.$(SRCSUFF) - -$(MSWDIR)\filedlg.obj: $(MSWDIR)\filedlg.$(SRCSUFF) - -$(MSWDIR)\font.obj: $(MSWDIR)\font.$(SRCSUFF) - -$(MSWDIR)\fontdlg.obj: $(MSWDIR)\fontdlg.$(SRCSUFF) - -$(MSWDIR)\frame.obj: $(MSWDIR)\frame.$(SRCSUFF) - -$(MSWDIR)\gaugemsw.obj: $(MSWDIR)\gaugemsw.$(SRCSUFF) - -$(MSWDIR)\gauge95.obj: $(MSWDIR)\gauge95.$(SRCSUFF) - -$(MSWDIR)\gdiobj.obj: $(MSWDIR)\gdiobj.$(SRCSUFF) - -$(MSWDIR)\icon.obj: $(MSWDIR)\icon.$(SRCSUFF) - -# $(MSWDIR)\imaglist.obj: $(MSWDIR)\imaglist.$(SRCSUFF) - -$(MSWDIR)\joystick.obj: $(MSWDIR)\joystick.$(SRCSUFF) - -$(MSWDIR)\listbox.obj: $(MSWDIR)\listbox.$(SRCSUFF) - -# $(MSWDIR)\listctrl.obj: $(MSWDIR)\listctrl.$(SRCSUFF) - -$(MSWDIR)\main.obj: $(MSWDIR)\main.$(SRCSUFF) - -$(MSWDIR)\mdi.obj: $(MSWDIR)\mdi.$(SRCSUFF) - -$(MSWDIR)\menu.obj: $(MSWDIR)\menu.$(SRCSUFF) - -$(MSWDIR)\menuitem.obj: $(MSWDIR)\menu.$(SRCSUFF) - -$(MSWDIR)\metafile.obj: $(MSWDIR)\metafile.$(SRCSUFF) - -$(MSWDIR)\minifram.obj: $(MSWDIR)\minifram.$(SRCSUFF) - -$(MSWDIR)\msgdlg.obj: $(MSWDIR)\msgdlg.$(SRCSUFF) - -$(MSWDIR)\nativdlg.obj: $(MSWDIR)\nativdlg.$(SRCSUFF) - -# $(MSWDIR)\notebook.obj: $(MSWDIR)\notebook.$(SRCSUFF) - -$(MSWDIR)\ownerdrw.obj: $(MSWDIR)\ownerdrw.$(SRCSUFF) - -$(MSWDIR)\palette.obj: $(MSWDIR)\palette.$(SRCSUFF) - -$(MSWDIR)\pen.obj: $(MSWDIR)\pen.$(SRCSUFF) - -$(MSWDIR)\penwin.obj: $(MSWDIR)\penwin.$(SRCSUFF) - -$(MSWDIR)\printdlg.obj: $(MSWDIR)\printdlg.$(SRCSUFF) - -$(MSWDIR)\printwin.obj: $(MSWDIR)\printwin.$(SRCSUFF) - -$(MSWDIR)\radiobox.obj: $(MSWDIR)\radiobox.$(SRCSUFF) - -$(MSWDIR)\radiobut.obj: $(MSWDIR)\radiobut.$(SRCSUFF) - -$(MSWDIR)\region.obj: $(MSWDIR)\region.$(SRCSUFF) - -$(MSWDIR)\registry.obj: $(MSWDIR)\registry.$(SRCSUFF) - -$(MSWDIR)\regconf.obj: $(MSWDIR)\regconf.$(SRCSUFF) - -$(MSWDIR)\scrolbar.obj: $(MSWDIR)\scrolbar.$(SRCSUFF) - -$(MSWDIR)\settings.obj: $(MSWDIR)\settings.$(SRCSUFF) - -$(MSWDIR)\slidrmsw.obj: $(MSWDIR)\slidrmsw.$(SRCSUFF) - -$(MSWDIR)\slider95.obj: $(MSWDIR)\slider95.$(SRCSUFF) - -$(MSWDIR)\spinbutt.obj: $(MSWDIR)\spinbutt.$(SRCSUFF) - -$(MSWDIR)\statbmp.obj: $(MSWDIR)\statbmp.$(SRCSUFF) - -$(MSWDIR)\statbox.obj: $(MSWDIR)\statbox.$(SRCSUFF) - -$(MSWDIR)\statbr95.obj: $(MSWDIR)\statbr95.$(SRCSUFF) - -$(MSWDIR)\stattext.obj: $(MSWDIR)\stattext.$(SRCSUFF) - -$(MSWDIR)\tabctrl.obj: $(MSWDIR)\tabctrl.$(SRCSUFF) - -$(MSWDIR)\taskbar.obj: $(MSWDIR)\taskbar.$(SRCSUFF) - -$(MSWDIR)\tbar95.obj: $(MSWDIR)\tbar95.$(SRCSUFF) - -$(MSWDIR)\tbarmsw.obj: $(MSWDIR)\tbarmsw.$(SRCSUFF) - -$(MSWDIR)\textctrl.obj: $(MSWDIR)\textctrl.$(SRCSUFF) - -$(MSWDIR)\thread.obj: $(MSWDIR)\thread.$(SRCSUFF) - -$(MSWDIR)\timer.obj: $(MSWDIR)\timer.$(SRCSUFF) - -# $(MSWDIR)\treectrl.obj: $(MSWDIR)\treectrl.$(SRCSUFF) - -$(MSWDIR)\utils.obj: $(MSWDIR)\utils.$(SRCSUFF) - -$(MSWDIR)\utilsexc.obj: $(MSWDIR)\utilsexc.$(SRCSUFF) - -$(MSWDIR)\wave.obj: $(MSWDIR)\wave.$(SRCSUFF) - -$(MSWDIR)\window.obj: $(MSWDIR)\window.$(SRCSUFF) - -$(MSWDIR)\droptgt.obj: $(OLEDIR)\droptgt.$(SRCSUFF) - -$(MSWDIR)\dropsrc.obj: $(OLEDIR)\dropsrc.$(SRCSUFF) - -$(MSWDIR)\dataobj.obj: $(OLEDIR)\dataobj.$(SRCSUFF) - -$(MSWDIR)\oleutils.obj: $(OLEDIR)\oleutils.$(SRCSUFF) - -$(MSWDIR)\uuid.obj: $(OLEDIR)\uuid.$(SRCSUFF) - -$(MSWDIR)\automtn.obj: $(OLEDIR)\automtn.$(SRCSUFF) - -######################################################## -# Common objects (always compiled) - -$(MSWDIR)\config.obj: $(COMMDIR)\config.$(SRCSUFF) - -$(MSWDIR)\cmndata.obj: $(COMMDIR)\cmndata.$(SRCSUFF) - -$(MSWDIR)\docview.obj: $(COMMDIR)\docview.$(SRCSUFF) - -$(MSWDIR)\docmdi.obj: $(COMMDIR)\docmdi.$(SRCSUFF) - -$(MSWDIR)\dynarray.obj: $(COMMDIR)\dynarray.$(SRCSUFF) - -$(MSWDIR)\dynlib.obj: $(COMMDIR)\dynlib.$(SRCSUFF) - -$(MSWDIR)\event.obj: $(COMMDIR)\event.$(SRCSUFF) - -$(MSWDIR)\file.obj: $(COMMDIR)\file.$(SRCSUFF) - -$(MSWDIR)\fileconf.obj: $(COMMDIR)\fileconf.$(SRCSUFF) - -$(MSWDIR)\filefn.obj: $(COMMDIR)\filefn.$(SRCSUFF) - -$(MSWDIR)\framecmn.obj: $(COMMDIR)\framecmn.$(SRCSUFF) - -$(MSWDIR)\gdicmn.obj: $(COMMDIR)\gdicmn.$(SRCSUFF) - -$(MSWDIR)\image.obj: $(COMMDIR)\image.$(SRCSUFF) - -$(MSWDIR)\intl.obj: $(COMMDIR)\intl.$(SRCSUFF) - -$(MSWDIR)\ipcbase.obj: $(COMMDIR)\ipcbase.$(SRCSUFF) - -$(MSWDIR)\helpbase.obj: $(COMMDIR)\helpbase.$(SRCSUFF) - -$(MSWDIR)\layout.obj: $(COMMDIR)\layout.$(SRCSUFF) - -$(MSWDIR)\log.obj: $(COMMDIR)\log.$(SRCSUFF) - -$(MSWDIR)\memory.obj: $(COMMDIR)\memory.$(SRCSUFF) - -$(MSWDIR)\mimetype.obj: $(COMMDIR)\mimetype.$(SRCSUFF) - -$(MSWDIR)\module.obj: $(COMMDIR)\module.$(SRCSUFF) - -$(MSWDIR)\object.obj: $(COMMDIR)\object.$(SRCSUFF) - -$(MSWDIR)\odbc.obj: $(COMMDIR)\odbc.$(SRCSUFF) - -$(MSWDIR)\postscrp.obj: $(COMMDIR)\postscrp.$(SRCSUFF) - -$(MSWDIR)\prntbase.obj: $(COMMDIR)\prntbase.$(SRCSUFF) - -$(MSWDIR)\resource.obj: $(COMMDIR)\resource.$(SRCSUFF) - -$(MSWDIR)\resourc2.obj: $(COMMDIR)\resourc2.$(SRCSUFF) - -$(MSWDIR)\tbarbase.obj: $(COMMDIR)\tbarbase.$(SRCSUFF) - -$(MSWDIR)\tbarsmpl.obj: $(COMMDIR)\tbarsmpl.$(SRCSUFF) - -$(MSWDIR)\textfile.obj: $(COMMDIR)\textfile.$(SRCSUFF) - -$(MSWDIR)\timercmn.obj: $(COMMDIR)\timercmn.$(SRCSUFF) - -$(MSWDIR)\utilscmn.obj: $(COMMDIR)\utilscmn.$(SRCSUFF) - -$(MSWDIR)\validate.obj: $(COMMDIR)\validate.$(SRCSUFF) - -$(MSWDIR)\valtext.obj: $(COMMDIR)\valtext.$(SRCSUFF) - -$(MSWDIR)\date.obj: $(COMMDIR)\date.$(SRCSUFF) - -$(MSWDIR)\wxexpr.obj: $(COMMDIR)\wxexpr.$(SRCSUFF) - -$(MSWDIR)\hash.obj: $(COMMDIR)\hash.$(SRCSUFF) - -$(MSWDIR)\list.obj: $(COMMDIR)\list.$(SRCSUFF) - -$(MSWDIR)\string.obj: $(COMMDIR)\string.$(SRCSUFF) - -$(MSWDIR)\variant.obj: $(COMMDIR)\variant.$(SRCSUFF) - -$(MSWDIR)\matrix.obj: $(COMMDIR)\matrix.$(SRCSUFF) - -$(MSWDIR)\time.obj: $(COMMDIR)\time.$(SRCSUFF) - -$(MSWDIR)\datstrm.obj: $(COMMDIR)\datstrm.$(SRCSUFF) - -$(MSWDIR)\sckstrm.obj: $(COMMDIR)\sckstrm.$(SRCSUFF) - -$(MSWDIR)\mstream.obj: $(COMMDIR)\mstream.$(SRCSUFF) - -$(MSWDIR)\zstream.obj: $(COMMDIR)\zstream.$(SRCSUFF) - -$(MSWDIR)\wfstream.obj: $(COMMDIR)\wfstream.$(SRCSUFF) - -$(MSWDIR)\stream.obj: $(COMMDIR)\stream.$(SRCSUFF) - -$(MSWDIR)\objstrm.obj: $(COMMDIR)\objstrm.$(SRCSUFF) - -$(MSWDIR)\wincmn.obj: $(COMMDIR)\wincmn.$(SRCSUFF) - -$(MSWDIR)\extended.obj: $(COMMDIR)\extended.c - -$(MSWDIR)\tokenzr.obj: $(COMMDIR)\tokenzr.$(SRCSUFF) - -$(MSWDIR)\socket.obj: $(COMMDIR)\socket.$(SRCSUFF) - -$(MSWDIR)\sckaddr.obj: $(COMMDIR)\sckaddr.$(SRCSUFF) - -$(MSWDIR)\protocol.obj: $(COMMDIR)\protocol.$(SRCSUFF) - -$(MSWDIR)\url.obj: $(COMMDIR)\url.$(SRCSUFF) - -$(MSWDIR)\http.obj: $(COMMDIR)\http.$(SRCSUFF) - -$(MSWDIR)\ftp.obj: $(COMMDIR)\ftp.$(SRCSUFF) - -$(MSWDIR)\sckfile.obj: $(COMMDIR)\sckfile.$(SRCSUFF) - -$(MSWDIR)\sckipc.obj: $(COMMDIR)\sckipc.$(SRCSUFF) - -######################################################## -# Generic objects (not always compiled, depending on -# whether platforms have native implementations) - -$(MSWDIR)\choicdgg.obj: $(GENDIR)\choicdgg.$(SRCSUFF) - -$(MSWDIR)\colrdlgg.obj: $(GENDIR)\colrdlgg.$(SRCSUFF) - -$(MSWDIR)\fontdlgg.obj: $(GENDIR)\fontdlgg.$(SRCSUFF) - -$(MSWDIR)\gridg.obj: $(GENDIR)\gridg.$(SRCSUFF) - -$(MSWDIR)\helpxlp.obj: $(GENDIR)\helpxlp.$(SRCSUFF) - -$(MSWDIR)\laywin.obj: $(GENDIR)\laywin.$(SRCSUFF) - -$(MSWDIR)\msgdlgg.obj: $(GENDIR)\msgdlgg.$(SRCSUFF) - -$(MSWDIR)\panelg.obj: $(GENDIR)\panelg.$(SRCSUFF) - -$(MSWDIR)\printps.obj: $(GENDIR)\printps.$(SRCSUFF) - -$(MSWDIR)\prntdlgg.obj: $(GENDIR)\prntdlgg.$(SRCSUFF) - -$(MSWDIR)\prop.obj: $(GENDIR)\prop.$(SRCSUFF) - -$(MSWDIR)\proplist.obj: $(GENDIR)\proplist.$(SRCSUFF) - -$(MSWDIR)\propform.obj: $(GENDIR)\propform.$(SRCSUFF) - -$(MSWDIR)\sashwin.obj: $(GENDIR)\sashwin.$(SRCSUFF) - -$(MSWDIR)\scrolwin.obj: $(GENDIR)\scrolwin.$(SRCSUFF) - -$(MSWDIR)\splitter.obj: $(GENDIR)\splitter.$(SRCSUFF) - -$(MSWDIR)\statusbr.obj: $(GENDIR)\statusbr.$(SRCSUFF) - -$(MSWDIR)\textdlgg.obj: $(GENDIR)\textdlgg.$(SRCSUFF) - -$(MSWDIR)\tabg.obj: $(GENDIR)\tabg.$(SRCSUFF) - -$(MSWDIR)\treectrl.obj: $(GENDIR)\treectrl.$(SRCSUFF) - -$(MSWDIR)\listctrl.obj: $(GENDIR)\listctrl.$(SRCSUFF) - -$(MSWDIR)\imaglist.obj: $(GENDIR)\imaglist.$(SRCSUFF) - -$(MSWDIR)\notebook.obj: $(GENDIR)\notebook.$(SRCSUFF) - -all_utils: - cd $(WXDIR)\utils - make -f makefile.b32 - cd $(WXDIR)\src\msw - -all_samples: - cd $(WXDIR)\samples - make -f makefile.b32 - cd $(WXDIR)\src\msw - -all_execs: - cd $(WXDIR)\utils - make -f makefile.b32 all_execs - cd $(WXDIR)\src\msw - -all_libs: - cd $(WXDIR)\src\msw - make -f makefile.b32 ctl3d dib fafa gauge hytext itsy prologio rcparser wx wxgraph\ - wxstring wxtree mfutils # wxxpm - -all_contribs: - cd $(WXDIR)\src\msw - make -f makefile.b32 ctl3d fafa wxstring itsy gauge # wxxpm - -# CONTRIB -ctl3d: $(CFG) - cd $(WXDIR)\src\msw\ctl3d\borland - make -f makefile.b32 -DCFG=$(CFG) - cd $(WXDIR)\src\msw - -wxxpm: $(CFG) - cd $(WXDIR)\src\xpm - make -f makefile.b32 -DCFG=$(CFG) -DFINAL=$(FINAL) -DWXWIN=$(WXDIR) -DDEBUG=$(DEBUG) - cd $(WXDIR)\src\msw - -png: $(CFG) - cd $(WXDIR)\src\png - make -f makefile.b32 - cd $(WXDIR)\src\msw - -clean_png: - cd $(WXDIR)\src\png - make -f makefile.b32 clean - cd $(WXDIR)\src\msw - -zlib: $(CFG) - cd $(WXDIR)\src\zlib - make -f makefile.b32 lib - cd $(WXDIR)\src\msw - -clean_zlib: - cd $(WXDIR)\src\zlib - make -f makefile.b32 clean - cd $(WXDIR)\src\msw - -$(CFG): makefile.bcc - copy &&! --H=$(WXDIR)\src\msw\borland.pch --2 --P --d --w-hid --w-par --w-pia --w-aus --w-rch --ml --Od --WE --Fs- --Vf --Ff=4 --I$(WXINC);$(BCCDIR)\include;$(WXDIR)/src/png;$(WXDIR)/src/zlib --I$(WXDIR)\include\wx\msw\gnuwin32 --L$(BCCDIR)\lib --D__WXWIN__ --D__WXMSW__ --D__WINDOWS__ --D__WIN16__ -! $(CFG) -!if "$(BOR_VER)" == "3.1" - echo -Ff=4 >>$(CFG) -!elif "$(BOR_VER)" == "4" - echo -Ff=512 >>$(CFG) - echo -dc >>$(CFG) -!else - echo -Ff=512 >>$(CFG) - echo -dc >>$(CFG) -!endif - -# -O was: -Oxt - -clean: $(PERIPH_CLEAN_TARGET) - erase $(LIBTARGET) - erase *.obj - erase *.pch - erase *.csm - erase *.cfg - erase ..\common\y_tab.c - erase ..\common\lex_yy.c - -cleanall: clean - - diff --git a/src/msw/makefile.dos b/src/msw/makefile.dos deleted file mode 100644 index b2810c50e9..0000000000 --- a/src/msw/makefile.dos +++ /dev/null @@ -1,1081 +0,0 @@ -# -# File: makefile.dos -# Author: Julian Smart -# Created: 1997 -# Updated: -# Copyright: (c) 1997, Julian Smart -# -# "%W% %G%" -# -# Makefile : Builds wxWindows library wx.lib for VC++ (16-bit) -# Arguments: -# -# FINAL=1 argument to nmake to build version with no debugging info. -# -!include <..\makemsc.env> - -LIBTARGET=$(WXLIB) -DUMMYOBJ=dummy.obj - -# Please set these according to the settings in wx_setup.h, so we can include -# the appropriate libraries in wx.lib - -# This one overrides the others, to be consistent with the settings in wx_setup.h -MINIMAL_WXWINDOWS_SETUP=0 - -USE_XPM_IN_MSW=0 -USE_CTL3D=1 - -!if "$(MINIMAL_WXWINDOWS_SETUP)" == "1" -USE_CTL3D=0 -USE_XPM_IN_MSW=0 -!endif - -PERIPH_LIBS= -PERIPH_TARGET= -PERIPH_CLEAN_TARGET= - -# !if "$(USE_CTL3D)" == "1" -# PERIPH_LIBS=d:\msdev\lib\ctl3d32.lib $(PERIPH_LIBS) -# !endif - -!if "$(USE_XPM_IN_MSW)" == "1" -PERIPH_LIBS=$(WXDIR)\contrib\wxxpm\xpm.lib $(PERIPH_LIBS) -PERIPH_TARGET=xpm $(PERIPH_TARGET) -PERIPH_CLEAN_TARGET=clean_xpm $(PERIPH_CLEAN_TARGET) -!endif - -GENDIR=..\generic -COMMDIR=..\common -OLEDIR=.\ole -MSWDIR=. - -GENERICOBJS= \ - $(GENDIR)\choicdgg.obj \ - $(GENDIR)\dirdlgg.obj \ - $(GENDIR)\gridg.obj \ - $(GENDIR)\imaglist.obj \ - $(GENDIR)\listctrl.obj \ - $(GENDIR)\notebook.obj \ - $(GENDIR)\panelg.obj \ - $(GENDIR)\prop.obj \ - $(GENDIR)\propform.obj \ - $(GENDIR)\proplist.obj \ - $(GENDIR)\scrolwin.obj \ - $(GENDIR)\splitter.obj \ - $(GENDIR)\statusbr.obj \ - $(GENDIR)\tabg.obj \ - $(GENDIR)\textdlgg.obj\ - $(GENDIR)\treectrl.obj - -# Don't need these generic objects for Windows -# $(GENDIR)\msgdlgg.obj \ -# $(GENDIR)\fontdlgg.obj \ -# $(GENDIR)\colrdlgg.obj \ -# $(GENDIR)\printps.obj \ -# $(GENDIR)\prntdlgg.obj \ -# $(GENDIR)\helpxlp.obj \ - -COMMONOBJS = \ - $(COMMDIR)\config.obj \ - $(COMMDIR)\cmndata.obj \ - $(COMMDIR)\docview.obj \ - $(COMMDIR)\docmdi.obj \ - $(COMMDIR)\dynarray.obj \ - $(COMMDIR)\event.obj \ - $(COMMDIR)\file.obj \ - $(COMMDIR)\filefn.obj \ - $(COMMDIR)\framecmn.obj \ - $(COMMDIR)\gdicmn.obj \ - $(COMMDIR)\intl.obj \ - $(COMMDIR)\helpbase.obj \ - $(COMMDIR)\ipcbase.obj \ - $(COMMDIR)\layout.obj \ - $(COMMDIR)\log.obj \ - $(COMMDIR)\memory.obj \ - $(COMMDIR)\module.obj \ - $(COMMDIR)\object.obj \ - $(COMMDIR)\odbc.obj \ - $(COMMDIR)\process.obj \ - $(COMMDIR)\prntbase.obj \ - $(COMMDIR)\resource.obj \ - $(COMMDIR)\tbarbase.obj \ - $(COMMDIR)\tbarsmpl.obj \ - $(COMMDIR)\textfile.obj \ - $(COMMDIR)\timercmn.obj \ - $(COMMDIR)\utilscmn.obj \ - $(COMMDIR)\validate.obj \ - $(COMMDIR)\valtext.obj \ - $(COMMDIR)\date.obj \ - $(COMMDIR)\wxexpr.obj \ - $(COMMDIR)\hash.obj \ - $(COMMDIR)\list.obj \ - $(COMMDIR)\variant.obj \ - $(COMMDIR)\string.obj \ - $(COMMDIR)\time.obj \ - $(COMMDIR)\y_tab.obj \ - $(COMMDIR)\stream.obj \ - $(COMMDIR)\wfstream.obj \ - $(COMMDIR)\mstream.obj \ - $(COMMDIR)\zstream.obj \ - $(COMMDIR)\datstrm.obj \ - $(COMMDIR)\extended.obj \ - $(COMMDIR)\wincmn.obj - -# Doesn't compile (nested classes) -# $(COMMDIR)\fileconf.obj\ - -# Uses WIN32 registry functions -# $(COMMDIR)\mimetype.obj \ - -# Fails when including png.h, on jmp_buf. -# $(COMMDIR)\image.obj \ - -MSWOBJS = \ - $(MSWDIR)\accel.obj \ - $(MSWDIR)\app.obj \ - $(MSWDIR)\bitmap.obj \ - $(MSWDIR)\bmpbuttn.obj \ - $(MSWDIR)\brush.obj \ - $(MSWDIR)\button.obj \ - $(MSWDIR)\checkbox.obj \ - $(MSWDIR)\checklst.obj \ - $(MSWDIR)\choice.obj \ - $(MSWDIR)\clipbrd.obj \ - $(MSWDIR)\colordlg.obj \ - $(MSWDIR)\colour.obj \ - $(MSWDIR)\combobox.obj \ - $(MSWDIR)\control.obj \ - $(MSWDIR)\curico.obj \ - $(MSWDIR)\cursor.obj \ - $(MSWDIR)\data.obj \ - $(MSWDIR)\dc.obj \ - $(MSWDIR)\dcmemory.obj \ - $(MSWDIR)\dcclient.obj \ - $(MSWDIR)\dcprint.obj \ - $(MSWDIR)\dcscreen.obj \ - $(MSWDIR)\dde.obj \ - $(MSWDIR)\dialog.obj \ - $(MSWDIR)\dib.obj \ - $(MSWDIR)\filedlg.obj \ - $(MSWDIR)\font.obj \ - $(MSWDIR)\fontdlg.obj \ - $(MSWDIR)\frame.obj \ - $(MSWDIR)\gaugemsw.obj \ - $(MSWDIR)\gdiobj.obj \ - $(MSWDIR)\helpwin.obj \ - $(MSWDIR)\icon.obj \ - $(MSWDIR)\iniconf.obj\ - $(MSWDIR)\joystick.obj \ - $(MSWDIR)\listbox.obj \ - $(MSWDIR)\main.obj \ - $(MSWDIR)\mdi.obj \ - $(MSWDIR)\menu.obj\ - $(MSWDIR)\menuitem.obj \ - $(MSWDIR)\metafile.obj \ - $(MSWDIR)\minifram.obj \ - $(MSWDIR)\msgdlg.obj \ - $(MSWDIR)\nativdlg.obj \ - $(MSWDIR)\ownerdrw.obj \ - $(MSWDIR)\palette.obj \ - $(MSWDIR)\pen.obj \ - $(MSWDIR)\penwin.obj \ - $(MSWDIR)\printdlg.obj \ - $(MSWDIR)\printwin.obj \ - $(MSWDIR)\radiobox.obj \ - $(MSWDIR)\radiobut.obj \ - $(MSWDIR)\region.obj \ - $(MSWDIR)\scrolbar.obj \ - $(MSWDIR)\settings.obj \ - $(MSWDIR)\slidrmsw.obj \ - $(MSWDIR)\spinbutt.obj \ - $(MSWDIR)\statbmp.obj \ - $(MSWDIR)\statbox.obj \ - $(MSWDIR)\stattext.obj \ - $(MSWDIR)\tbarmsw.obj \ - $(MSWDIR)\textctrl.obj \ - $(MSWDIR)\timer.obj \ - $(MSWDIR)\utils.obj \ - $(MSWDIR)\utilsexc.obj \ - $(MSWDIR)\wave.obj \ - $(MSWDIR)\window.obj \ - $(OLEDIR)\dropsrc.obj \ - $(OLEDIR)\droptgt.obj - -# $(OLEDIR)\automtn.obj \ -# $(OLEDIR)\dataobj.obj \ -# $(OLEDIR)\oleutils.obj \ -# $(OLEDIR)\uuid.obj - -# TODO: Implement XPM and PNG targets in this makefile! -# $(OLEDIR)\xpmhand \ -# $(OLEDIR)\pnghand \ - -# Not appropriate for 16-bit Windows -# $(MSWDIR)\registry.obj \ -# $(MSWDIR)\dirdlg.obj \ -# $(MSWDIR)\treectrl.obj \ -# $(MSWDIR)\listctrl.obj \ - -OBJECTS = $(COMMONOBJS) $(GENERICOBJS) $(MSWOBJS) - -# Normal, static library -all: $(DUMMYOBJ) $(WXDIR)\lib\wx1.lib $(WXDIR)\lib\wx2.lib $(WXDIR)\lib\wx3.lib - - -#$(WXDIR)\lib\wx.lib: dummy.obj $(OBJECTS) $(PERIPH_LIBS) -# -erase $(LIBTARGET) -# lib /PAGESIZE:128 @<< -#$(LIBTARGET) -#y -#$(OBJECTS) $(PERIPH_LIBS) -#nul -#; -#<< - -$(WXDIR)\lib\wx1.lib: $(COMMONOBJS) $(PERIPH_LIBS) - -erase $(WXDIR)\lib\wx1.lib - lib /PAGESIZE:128 @<< -$(WXDIR)\lib\wx1.lib -y -$(COMMONOBJS) $(PERIPH_LIBS) -nul -; -<< - -$(WXDIR)\lib\wx2.lib: $(GENERICOBJS) - -erase $(WXDIR)\lib\wx2.lib - lib /PAGESIZE:128 @<< -$(WXDIR)\lib\wx2.lib -y -$(GENERICOBJS) -nul -; -<< - -$(WXDIR)\lib\wx3.lib: $(MSWOBJS) - -erase $(WXDIR)\lib\wx3.lib - lib /PAGESIZE:128 @<< -$(WXDIR)\lib\wx3.lib -y -$(MSWOBJS) -nul -; -<< - -######################################################## -# Windows-specific objects - -dummy.obj: dummy.$(SRCSUFF) $(WXDIR)\include\wx\wx.h - cl @<< - cl $(CPPFLAGS) /YcWX/WXPREC.H $(DEBUG_FLAGS) /c /Tp $*.$(SRCSUFF) -<< - -#dummy.obj: dummy.$(SRCSUFF) $(WXDIR)\include\wx\wx.h -# cl $(CPPFLAGS) /YcWX/WXPREC.H $(DEBUG_FLAGS) /c /Tp $*.$(SRCSUFF) - -dummydll.obj: dummydll.$(SRCSUFF) $(WXDIR)\include\wx\wx.h - cl @<< -$(CPPFLAGS) /YcWX/WXPREC.H /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/accel.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/app.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/bitmap.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/bmpbuttn.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/brush.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/button.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/choice.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/checkbox.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/checklst.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/clipbrd.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/colordlg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/colour.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/combobox.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/control.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/curico.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/cursor.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/data.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/dc.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/dde.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/dcmemory.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/dcclient.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/dcprint.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/dcscreen.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/dialog.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/dib.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/dirdlg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/filedlg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/font.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/fontdlg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/frame.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/gaugemsw.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/gdiobj.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/helpwin.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/icon.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/iniconf.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/imaglist.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/joystick.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/listbox.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/listctrl.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/main.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/mdi.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/menu.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/menuitem.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/metafile.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/minifram.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/msgdlg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/nativdlg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/ownerdrw.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/palette.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/pen.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/penwin.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/printdlg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/printwin.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/radiobox.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/radiobut.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/region.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/registry.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/scrolbar.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/settings.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/slidrmsw.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/spinbutt.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/statbmp.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/statbox.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/stattext.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/tbarmsw.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/textctrl.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/timer.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/treectrl.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/utils.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/utilsexc.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/wave.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/window.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(OLEDIR)/droptgt.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(OLEDIR)/dropsrc.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(OLEDIR)/dataobj.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(OLEDIR)/oleutils.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(OLEDIR)/uuid.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(OLEDIR)/automtn.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -######################################################## -# Common objects (always compiled) - -$(COMMDIR)/config.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(COMMDIR)/cmndata.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(COMMDIR)/docview.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(COMMDIR)/docmdi.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(COMMDIR)/dynarray.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(COMMDIR)/event.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(COMMDIR)/file.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(COMMDIR)/fileconf.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(COMMDIR)/filefn.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(COMMDIR)/framecmn.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(COMMDIR)/gdicmn.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(COMMDIR)/helpbase.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(COMMDIR)/image.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(COMMDIR)/intl.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(COMMDIR)/ipcbase.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(COMMDIR)/layout.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(COMMDIR)/log.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(COMMDIR)/memory.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(COMMDIR)/mimetype.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(COMMDIR)/module.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(COMMDIR)/object.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(COMMDIR)/odbc.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(COMMDIR)/process.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(COMMDIR)/prntbase.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(COMMDIR)/resource.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(COMMDIR)/tbarbase.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(COMMDIR)/tbarsmpl.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(COMMDIR)/textfile.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(COMMDIR)/timercmn.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(COMMDIR)/utilscmn.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(COMMDIR)/validate.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(COMMDIR)/valtext.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(COMMDIR)/date.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(COMMDIR)/wxexpr.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(COMMDIR)/hash.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(COMMDIR)/list.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(COMMDIR)/variant.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(COMMDIR)/string.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(COMMDIR)/matrix.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(COMMDIR)/wxstrgnu/wxstrgnu.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS2) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(COMMDIR)/wxstrgnu/wxregex.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS2) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(COMMDIR)/time.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(COMMDIR)/stream.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(COMMDIR)/wfstream.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(COMMDIR)/mstream.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(COMMDIR)/zstream.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(COMMDIR)/datstrm.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(COMMDIR)/extended.obj: $*.c - cl @<< -$(CPPFLAGS2) /Fo$@ /c /Tp $*.c -<< - -$(COMMDIR)/wincmn.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(COMMDIR)/y_tab.obj: $*.c $(COMMDIR)/lex_yy.c - cl @<< -$(CPPFLAGS2) -DUSE_DEFINE -DYY_USE_PROTOS /Fo$@ /I ..\common /c $*.c -<< - -$(COMMDIR)/y_tab.c: $(COMMDIR)/dosyacc.c - copy $(COMMDIR)\dosyacc.c $(COMMDIR)\y_tab.c - -$(COMMDIR)/lex_yy.c: $(COMMDIR)/doslex.c - copy $(COMMDIR)\doslex.c $(COMMDIR)\lex_yy.c - -######################################################## -# Generic objects (not always compiled, depending on -# whether platforms have native implementations) - -$(GENDIR)/choicdgg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(GENDIR)/colrdlgg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(GENDIR)/dirdlgg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(GENDIR)/fontdlgg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(GENDIR)/gridg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(GENDIR)/imaglist.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(GENDIR)/listctrl.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(GENDIR)/notebook.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(GENDIR)/helpxlp.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(GENDIR)/msgdlgg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(GENDIR)/panelg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(GENDIR)/printps.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(GENDIR)/prntdlgg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(GENDIR)/prop.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(GENDIR)/propform.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(GENDIR)/proplist.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(GENDIR)/scrolwin.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(GENDIR)/splitter.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(GENDIR)/statusbr.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(GENDIR)/tabg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(GENDIR)/textdlgg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(GENDIR)/treectrl.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(OBJECTS): $(WXDIR)/include/wx/setup.h - -# Peripheral components - -xpm: - cd $(WXDIR)\contrib\wxxpm - nmake -f makefile.dos FINAL=$(FINAL) - cd $(WXDIR)\src\msw - -clean_xpm: - cd $(WXDIR)\contrib\wxxpm - nmake -f makefile.dos clean - cd $(WXDIR)\src\msw - -clean: $(PERIPH_CLEAN_TARGET) - -erase *.obj - -erase ..\lib\*.lib - -erase *.pdb - -erase *.sbr - -erase *.pch - cd $(WXDIR)\src\generic - -erase *.pdb - -erase *.sbr - -erase *.obj - cd $(WXDIR)\src\common - -erase *.pdb - -erase *.sbr - -erase *.obj - cd $(WXDIR)\src\msw\ole - -erase *.pdb - -erase *.sbr - -erase *.obj - cd $(WXDIR)\src\msw - -cleanall: clean - - diff --git a/src/msw/makefile.g95 b/src/msw/makefile.g95 deleted file mode 100644 index 4cd5a40d0e..0000000000 --- a/src/msw/makefile.g95 +++ /dev/null @@ -1,320 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "@(#)makefile.unx 1.2 5/9/94" -# -# Makefile for libwx.a - -# Replace this with your own path if necessary -WXDIR = ../.. - -# All common UNIX compiler flags and options are now in -# this central makefile. -include $(WXDIR)/src/makeg95.env - -# IMPORTANT: if you want to link in subsidiary libraries, -# required for some optional parts of wxWindows, you must -# set EXTRATARGETS and EXTRAOBJS to match the settings in wx_setup.h. -# Having done this, you won't have to worry about linking them -# into each application. -# -# Here's the full list. -# prologio: Required if using the wxWindows resource facility -# USE_WX_RESOURCES should be 1 -# xmgauge: Gauge class (required for Motif only) -# USE_GAUGE should be 1 -# xpm: XPM pixmap support -# USE_XPM_IN_X should be 1 -# wxstring: string class -# USE_GNU_WXSTRING should be 1 -# -# Unfortunately, 'ar' doesn't like combining objects and libraries, -# so we must identify all the objects from the subordinate libraries. Yuck! -XPMSRC=../../contrib/wxxpm/objects$(GUISUFFIX) -XPMOBJS=$(XPMSRC)/crbuffri.$(OBJSUFF) $(XPMSRC)/crbuffrp.$(OBJSUFF) $(XPMSRC)/crdatfri.$(OBJSUFF) $(XPMSRC)/crdatfrp.$(OBJSUFF)\ - $(XPMSRC)/create.$(OBJSUFF) $(XPMSRC)/crifrbuf.$(OBJSUFF) $(XPMSRC)/crifrdat.$(OBJSUFF) $(XPMSRC)/crpfrbuf.$(OBJSUFF) $(XPMSRC)/crpfrdat.$(OBJSUFF)\ - $(XPMSRC)/data.$(OBJSUFF) $(XPMSRC)/hashtab.$(OBJSUFF) $(XPMSRC)/misc.$(OBJSUFF) $(XPMSRC)/parse.$(OBJSUFF) $(XPMSRC)/rdftodat.$(OBJSUFF)\ - $(XPMSRC)/rdftoi.$(OBJSUFF) $(XPMSRC)/rdftop.$(OBJSUFF) $(XPMSRC)/rgb.$(OBJSUFF) $(XPMSRC)/scan.$(OBJSUFF) $(XPMSRC)/simx.$(OBJSUFF)\ - $(XPMSRC)/wrffrdat.$(OBJSUFF) $(XPMSRC)/wrffri.$(OBJSUFF) $(XPMSRC)/wrffrp.$(OBJSUFF) - -# Subordinate library possibilities - -EXTRAOBJS= - -GENDIR=../generic -COMMDIR=../common -XPMDIR=../xpm -OLEDIR=ole -MSWDIR=. - -GENERICOBJDIR=../generic/$(OBJDIR) -COMMOBJDIR=../common/$(OBJDIR) -OLEOBJDIR=ole/$(OBJDIR) -MSWDIR=$(OBJDIR) - -DOCDIR = $(WXDIR)\docs - -GENERICOBJS= \ - $(GENDIR)/choicdgg.$(OBJSUFF) \ - $(GENDIR)/dirdlgg.$(OBJSUFF) \ - $(GENDIR)/gridg.$(OBJSUFF) \ - $(GENDIR)/laywin.$(OBJSUFF) \ - $(GENDIR)/panelg.$(OBJSUFF) \ - $(GENDIR)/prop.$(OBJSUFF) \ - $(GENDIR)/propform.$(OBJSUFF) \ - $(GENDIR)/proplist.$(OBJSUFF) \ - $(GENDIR)/sashwin.$(OBJSUFF) \ - $(GENDIR)/scrolwin.$(OBJSUFF) \ - $(GENDIR)/splitter.$(OBJSUFF) \ - $(GENDIR)/statusbr.$(OBJSUFF) \ - $(GENDIR)/tabg.$(OBJSUFF) \ - $(GENDIR)/textdlgg.$(OBJSUFF) - -# $(GENDIR)/colrdlgg.$(OBJSUFF) \ -# $(GENDIR)/fontdlgg.$(OBJSUFF) \ -# $(GENDIR)/prntdlgg.$(OBJSUFF) \ -# $(GENDIR)/printps.$(OBJSUFF) \ -# $(GENDIR)/msgdlgg.$(OBJSUFF) \ - -COMMONOBJS = \ - $(COMMDIR)/config.$(OBJSUFF) \ - $(COMMDIR)/cmndata.$(OBJSUFF) \ - $(COMMDIR)/docview.$(OBJSUFF) \ - $(COMMDIR)/docmdi.$(OBJSUFF) \ - $(COMMDIR)/dynarray.$(OBJSUFF) \ - $(COMMDIR)/event.$(OBJSUFF) \ - $(COMMDIR)/file.$(OBJSUFF) \ - $(COMMDIR)/fileconf.$(OBJSUFF) \ - $(COMMDIR)/filefn.$(OBJSUFF) \ - $(COMMDIR)/framecmn.$(OBJSUFF) \ - $(COMMDIR)/gdicmn.$(OBJSUFF) \ - $(COMMDIR)/helpbase.$(OBJSUFF) \ - $(COMMDIR)/image.$(OBJSUFF) \ - $(COMMDIR)/intl.$(OBJSUFF) \ - $(COMMDIR)/layout.$(OBJSUFF) \ - $(COMMDIR)/log.$(OBJSUFF) \ - $(COMMDIR)/memory.$(OBJSUFF) \ - $(COMMDIR)/module.$(OBJSUFF) \ - $(COMMDIR)/mimetype.$(OBJSUFF) \ - $(COMMDIR)/object.$(OBJSUFF) \ - $(COMMDIR)/odbc.$(OBJSUFF) \ - $(COMMDIR)/process.$(OBJSUFF) \ - $(COMMDIR)/prntbase.$(OBJSUFF) \ - $(COMMDIR)/resource.$(OBJSUFF) \ - $(COMMDIR)/tbarbase.$(OBJSUFF) \ - $(COMMDIR)/tbarsmpl.$(OBJSUFF) \ - $(COMMDIR)/textfile.$(OBJSUFF) \ - $(COMMDIR)/timercmn.$(OBJSUFF) \ - $(COMMDIR)/utilscmn.$(OBJSUFF) \ - $(COMMDIR)/validate.$(OBJSUFF) \ - $(COMMDIR)/valtext.$(OBJSUFF) \ - $(COMMDIR)/date.$(OBJSUFF) \ - $(COMMDIR)/wxexpr.$(OBJSUFF) \ - $(COMMDIR)/hash.$(OBJSUFF) \ - $(COMMDIR)/list.$(OBJSUFF) \ - $(COMMDIR)/variant.$(OBJSUFF) \ - $(COMMDIR)/string.$(OBJSUFF) \ - $(COMMDIR)/time.$(OBJSUFF) \ - $(COMMDIR)/tokenzr.$(OBJSUFF) \ - $(COMMDIR)/y_tab.$(OBJSUFF) \ - $(COMMDIR)/stream.$(OBJSUFF) \ - $(COMMDIR)/wfstream.$(OBJSUFF) \ - $(COMMDIR)/mstream.$(OBJSUFF) \ - $(COMMDIR)/zstream.$(OBJSUFF) \ - $(COMMDIR)/datstrm.$(OBJSUFF) \ - $(COMMDIR)/objstrm.$(OBJSUFF) \ - $(COMMDIR)/extended.$(OBJSUFF) \ - $(COMMDIR)/wincmn.$(OBJSUFF) - -# $(COMMDIR)/postscrp.$(OBJSUFF) \ - -# NOTE: if the socket-related files fail with a syntax error in Sockets.h, -# remove the files (probably all GnuWin32 releases < b20). Cygwin b20 is OK, -# Mingw32 may still have problems. -# $(COMMDIR)/socket.$(OBJSUFF) \ -# $(COMMDIR)/sckaddr.$(OBJSUFF) \ -# $(COMMDIR)/sckfile.$(OBJSUFF) \ -# $(COMMDIR)/sckipc.$(OBJSUFF) \ -# $(COMMDIR)/sckstrm.$(OBJSUFF) \ -# $(COMMDIR)/protocol.$(OBJSUFF) \ -# $(COMMDIR)/http.$(OBJSUFF) \ -# $(COMMDIR)/ftp.$(OBJSUFF) \ -# $(COMMDIR)/url.$(OBJSUFF) \ - -MSWOBJS = \ - accel.$(OBJSUFF) \ - app.$(OBJSUFF) \ - bitmap.$(OBJSUFF) \ - bmpbuttn.$(OBJSUFF) \ - brush.$(OBJSUFF) \ - button.$(OBJSUFF) \ - checkbox.$(OBJSUFF) \ - checklst.$(OBJSUFF) \ - choice.$(OBJSUFF) \ - clipbrd.$(OBJSUFF) \ - colordlg.$(OBJSUFF) \ - colour.$(OBJSUFF) \ - combobox.$(OBJSUFF) \ - control.$(OBJSUFF) \ - curico.$(OBJSUFF) \ - cursor.$(OBJSUFF) \ - data.$(OBJSUFF) \ - dc.$(OBJSUFF) \ - dcmemory.$(OBJSUFF) \ - dcclient.$(OBJSUFF) \ - dcprint.$(OBJSUFF) \ - dcscreen.$(OBJSUFF) \ - dde.$(OBJSUFF) \ - dialog.$(OBJSUFF) \ - dib.$(OBJSUFF) \ - filedlg.$(OBJSUFF) \ - font.$(OBJSUFF) \ - fontdlg.$(OBJSUFF) \ - frame.$(OBJSUFF) \ - gaugemsw.$(OBJSUFF) \ - gauge95.$(OBJSUFF) \ - gdiobj.$(OBJSUFF) \ - helpwin.$(OBJSUFF) \ - icon.$(OBJSUFF) \ - imaglist.$(OBJSUFF) \ - joystick.$(OBJSUFF) \ - listbox.$(OBJSUFF) \ - listctrl.$(OBJSUFF) \ - main.$(OBJSUFF) \ - mdi.$(OBJSUFF) \ - menu.$(OBJSUFF) \ - menuitem.$(OBJSUFF) \ - metafile.$(OBJSUFF) \ - minifram.$(OBJSUFF) \ - msgdlg.$(OBJSUFF) \ - nativdlg.$(OBJSUFF) \ - notebook.$(OBJSUFF) \ - ownerdrw.$(OBJSUFF) \ - palette.$(OBJSUFF) \ - pen.$(OBJSUFF) \ - penwin.$(OBJSUFF) \ - printdlg.$(OBJSUFF) \ - printwin.$(OBJSUFF) \ - radiobox.$(OBJSUFF) \ - radiobut.$(OBJSUFF) \ - region.$(OBJSUFF) \ - registry.$(OBJSUFF) \ - regconf.$(OBJSUFF) \ - scrolbar.$(OBJSUFF) \ - settings.$(OBJSUFF) \ - slidrmsw.$(OBJSUFF) \ - slider95.$(OBJSUFF) \ - spinbutt.$(OBJSUFF) \ - statbmp.$(OBJSUFF) \ - statbox.$(OBJSUFF) \ - statbr95.$(OBJSUFF) \ - stattext.$(OBJSUFF) \ - tabctrl.$(OBJSUFF) \ - taskbar.$(OBJSUFF) \ - tbar95.$(OBJSUFF) \ - tbarmsw.$(OBJSUFF) \ - textctrl.$(OBJSUFF) \ - thread.$(OBJSUFF) \ - timer.$(OBJSUFF) \ - treectrl.$(OBJSUFF) \ - utils.$(OBJSUFF) \ - utilsexc.$(OBJSUFF) \ - wave.$(OBJSUFF) \ - window.$(OBJSUFF) \ - xpmhand.$(OBJSUFF) - -# Native wxDirDlg can't be compiled due to GnuWin32/OLE limitations -# dirdlg.$(OBJSUFF) \ - -# OLE not supported yet by GnuWin32 -# $(OLEDIR)/droptgt.$(OBJSUFF) \ -# $(OLEDIR)/dropsrc.$(OBJSUFF) \ -# $(OLEDIR)/dataobj.$(OBJSUFF) \ -# $(OLEDIR)/oleutils.$(OBJSUFF) \ -# $(OLEDIR)/uuid.$(OBJSUFF) \ -# $(OLEDIR)/automtn.$(OBJSUFF) - -XPMOBJECTS = $(XPMDIR)/crbuffri.o\ - $(XPMDIR)/crdatfri.o\ - $(XPMDIR)/create.o $(XPMDIR)/crifrbuf.o\ - $(XPMDIR)/crifrdat.o\ - $(XPMDIR)/data.o\ - $(XPMDIR)/hashtab.o $(XPMDIR)/misc.o\ - $(XPMDIR)/parse.o $(XPMDIR)/rdftodat.o\ - $(XPMDIR)/rdftoi.o\ - $(XPMDIR)/rgb.o $(XPMDIR)/scan.o\ - $(XPMDIR)/simx.o $(XPMDIR)/wrffrdat.o\ - $(XPMDIR)/wrffrp.o $(XPMDIR)/wrffri.o - -OBJECTS = $(MSWOBJS) $(COMMONOBJS) $(GENERICOBJS) # $(XPMOBJECTS) - -all: $(OBJECTS) $(WXLIB) - -base: - cd $(WXDIR)/src/common; $(MAKE) -f makefile.g95 GUI=$(GUI) GUISUFFIX=$(GUISUFFIX) CC=$(CC)\ - OPTIONS='$(OPTIONS)' DEBUG='$(DEBUG)' DEBUGFLAGS='$(DEBUGFLAGS)' WARN='$(WARN)' XLIB='$(XLIB)' XINCLUDE='$(XINCLUDE)' - - -$(WXLIB): $(OBJECTS) $(EXTRAOBJS) - ar $(AROPTIONS) $@ $(EXTRAOBJS) $(OBJECTS) - $(RANLIB) $@ - -#$(MSWOBJDIR): -# mkdir $(OBJDIR) - -#$(COMMOBJDIR): -# mkdir $(COMMDIR)/$(OBJDIR) - -#$(GENERICOBJDIR): -# mkdir $(GENDIR)/$(OBJDIR) - -$(OBJECTS): $(WXINC)/wx/defs.h $(WXINC)/wx/object.h $(WXINC)/wx/setup.h - -$(COMMDIR)/y_tab.$(OBJSUFF): $(COMMDIR)/y_tab.c $(COMMDIR)/lex_yy.c - $(CCLEX) -c $(CPPFLAGS) -o $@ $(COMMDIR)/y_tab.c - -# Replace lex with flex if you run into compilation -# problems with lex_yy.c. See also note about LEX_SCANNER -# above. -$(COMMDIR)/lex_yy.c: $(COMMDIR)/lexer.l - $(LEX) $(COMMDIR)/lexer.l > $(COMMDIR)/lex_yy.c - -# The following may be required for some versions of LEX/FLEX -# $(LEX) -o$(COMMDIR)/lex_yy.c $(COMMDIR)/lexer.l - -# sed -e "s/BUFSIZ/5000/g" < lex.yy.c | \ -# sed -e "s/yyoutput(c)/void yyoutput(c)/g" | \ -# sed -e "s/YYLMAX 200/YYLMAX 5000/g" > lex_yy.c -# rm -f lex.yy.c - -# Replace yacc with bison if you run into compilation -# problems with y_tab.c. - -$(COMMDIR)/y_tab.c: $(COMMDIR)/parser.y - $(YACC) -o $(COMMDIR)/y_tab.c $(COMMDIR)/parser.y - -# If you use e.g. gcc on Unix, uncomment these lines -# and comment out the above. - -#$(COMMDIR)/y_tab.c: $(COMMDIR)/parser.y -# $(YACC) $(COMMDIR)/parser.y -# mv y.tab.c $(COMMDIR)/y_tab.c - -# Extra targets -rcparser: - cd $(WXDIR)/utils/rcparser/src; $(MAKE) -f makefile.g95 - cd $(WXDIR)/src/msw - -clean_rcp: - cd $(WXDIR)/utils/rcparser/src; $(MAKE) -f makefile.g95 clean - cd $(WXDIR)/src/msw - -clean: - rm -f $(OBJECTS) $(EXTRAOBJS) ../common/y_tab.c ../common/lex_yy.c $(WXDIR)/lib/libwx$(GUISUFFIX).a core - -cleanall: clean - diff --git a/src/msw/makefile.sc b/src/msw/makefile.sc deleted file mode 100644 index 1c20c8c0e1..0000000000 --- a/src/msw/makefile.sc +++ /dev/null @@ -1,252 +0,0 @@ -# Symantec C++ makefile for the msw objects -# called from src\makefile.sc - -# configuration section (see src\makefile.sc) ########################### - -WXDIR = $(WXWIN) - -include ..\makesc.env - -DEBUG=0 - -LIBTARGET = $(LIBDIR)\wx.lib - -OPTIONS= - -# end of configuration section ########################################## - -GENDIR=$(WXDIR)\src\generic -COMMDIR=$(WXDIR)\src\common -XPMDIR=$(WXDIR)\src\xpm -OLEDIR=ole -MSWDIR=$(WXDIR)\src\msw - -GENERICOBJS= \ - $(GENDIR)\choicdgg.obj \ - $(GENDIR)\gridg.obj \ - $(GENDIR)\laywin.obj \ - $(GENDIR)\panelg.obj \ - $(GENDIR)\prop.obj \ - $(GENDIR)\propform.obj \ - $(GENDIR)\proplist.obj \ - $(GENDIR)\sashwin.obj \ - $(GENDIR)\scrolwin.obj \ - $(GENDIR)\splitter.obj \ - $(GENDIR)\statusbr.obj \ - $(GENDIR)\tabg.obj \ - $(GENDIR)\textdlgg.obj - -# $(GENDIR)\imaglist.obj \ -# $(GENDIR)\treectrl.obj \ -# $(GENDIR)\listctrl.obj \ -# $(GENDIR)\notebook.obj \ - -# These are generic things that don't need to be compiled on MSW, -# but sometimes it's useful to do so for testing purposes. -NONESSENTIALOBJS= \ - $(GENDIR)\printps.obj \ - $(GENDIR)\prntdlgg.obj \ - $(GENDIR)\msgdlgg.obj \ - $(GENDIR)\helpxlp.obj \ - $(GENDIR)\colrdlgg.obj \ - $(GENDIR)\fontdlgg.obj - -COMMONOBJS = \ - $(COMMDIR)\cmndata.obj \ - $(COMMDIR)\config.obj \ - $(COMMDIR)\docview.obj \ - $(COMMDIR)\docmdi.obj \ - $(COMMDIR)\dynarray.obj \ - $(COMMDIR)\dynlib.obj \ - $(COMMDIR)\event.obj \ - $(COMMDIR)\file.obj \ - $(COMMDIR)\filefn.obj \ - $(COMMDIR)\fileconf.obj \ - $(COMMDIR)\framecmn.obj \ - $(COMMDIR)\gdicmn.obj \ - $(COMMDIR)\image.obj \ - $(COMMDIR)\intl.obj \ - $(COMMDIR)\ipcbase.obj \ - $(COMMDIR)\helpbase.obj \ - $(COMMDIR)\layout.obj \ - $(COMMDIR)\log.obj \ - $(COMMDIR)\memory.obj \ - $(COMMDIR)\mimetype.obj \ - $(COMMDIR)\module.obj \ - $(COMMDIR)\object.obj \ - $(COMMDIR)\prntbase.obj \ - $(COMMDIR)\resource.obj \ - $(COMMDIR)\resourc2.obj \ - $(COMMDIR)\tbarbase.obj \ - $(COMMDIR)\tbarsmpl.obj \ - $(COMMDIR)\textfile.obj \ - $(COMMDIR)\timercmn.obj \ - $(COMMDIR)\utilscmn.obj \ - $(COMMDIR)\validate.obj \ - $(COMMDIR)\valtext.obj \ - $(COMMDIR)\date.obj \ - $(COMMDIR)\hash.obj \ - $(COMMDIR)\list.obj \ - $(COMMDIR)\string.obj \ - $(COMMDIR)\time.obj \ - $(COMMDIR)\tokenzr.obj \ - $(COMMDIR)\wxexpr.obj \ - $(COMMDIR)\y_tab.obj \ - $(COMMDIR)\extended.obj \ - $(COMMDIR)\process.obj \ - $(COMMDIR)\wfstream.obj \ - $(COMMDIR)\mstream.obj \ - $(COMMDIR)\zstream.obj \ - $(COMMDIR)\stream.obj \ - $(COMMDIR)\datstrm.obj \ - $(COMMDIR)\objstrm.obj \ - $(COMMDIR)\variant.obj \ - $(COMMDIR)\wincmn.obj - -# Don't compile for WIN16 -# $(COMMDIR)\socket.obj \ -# $(COMMDIR)\sckaddr.obj \ -# $(COMMDIR)\sckfile.obj \ -# $(COMMDIR)\sckipc.obj \ -# $(COMMDIR)\sckstrm.obj \ -# $(COMMDIR)\url.obj \ -# $(COMMDIR)\http.obj \ -# $(COMMDIR)\protocol.obj \ - -# Don't compile -# $(COMMDIR)\db.obj \ -# $(COMMDIR)\dbtable.obj \ -# $(COMMDIR)\odbc.obj \ - -MSWOBJS = \ - $(MSWDIR)\accel.obj \ - $(MSWDIR)\app.obj \ - $(MSWDIR)\bitmap.obj \ - $(MSWDIR)\bmpbuttn.obj \ - $(MSWDIR)\brush.obj \ - $(MSWDIR)\button.obj \ - $(MSWDIR)\checkbox.obj \ - $(MSWDIR)\checklst.obj \ - $(MSWDIR)\choice.obj \ - $(MSWDIR)\clipbrd.obj \ - $(MSWDIR)\colordlg.obj \ - $(MSWDIR)\colour.obj \ - $(MSWDIR)\combobox.obj \ - $(MSWDIR)\control.obj \ - $(MSWDIR)\curico.obj \ - $(MSWDIR)\cursor.obj \ - $(MSWDIR)\data.obj \ - $(MSWDIR)\dc.obj \ - $(MSWDIR)\dcmemory.obj \ - $(MSWDIR)\dcclient.obj \ - $(MSWDIR)\dcprint.obj \ - $(MSWDIR)\dcscreen.obj \ - $(MSWDIR)\dde.obj \ - $(MSWDIR)\dialog.obj \ - $(MSWDIR)\dib.obj \ - $(MSWDIR)\dibutils.obj \ - $(MSWDIR)\dirdlg.obj \ - $(MSWDIR)\filedlg.obj \ - $(MSWDIR)\font.obj \ - $(MSWDIR)\fontdlg.obj \ - $(MSWDIR)\frame.obj \ - $(MSWDIR)\gauge95.obj \ - $(MSWDIR)\gaugemsw.obj \ - $(MSWDIR)\gdiobj.obj \ - $(MSWDIR)\helpwin.obj \ - $(MSWDIR)\icon.obj \ - $(MSWDIR)\iniconf.obj \ - $(MSWDIR)\listbox.obj \ - $(MSWDIR)\main.obj \ - $(MSWDIR)\mdi.obj \ - $(MSWDIR)\menu.obj \ - $(MSWDIR)\menuitem.obj \ - $(MSWDIR)\metafile.obj \ - $(MSWDIR)\minifram.obj \ - $(MSWDIR)\msgdlg.obj \ - $(MSWDIR)\nativdlg.obj \ - $(MSWDIR)\ownerdrw.obj \ - $(MSWDIR)\palette.obj \ - $(MSWDIR)\pen.obj \ - $(MSWDIR)\penwin.obj \ - $(MSWDIR)\printdlg.obj \ - $(MSWDIR)\printwin.obj \ - $(MSWDIR)\radiobox.obj \ - $(MSWDIR)\radiobut.obj \ - $(MSWDIR)\region.obj \ - $(MSWDIR)\registry.obj \ - $(MSWDIR)\regconf.obj \ - $(MSWDIR)\scrolbar.obj \ - $(MSWDIR)\settings.obj \ - $(MSWDIR)\slidrmsw.obj \ - $(MSWDIR)\slider95.obj \ - $(MSWDIR)\spinbutt.obj \ - $(MSWDIR)\statbmp.obj \ - $(MSWDIR)\statbox.obj \ - $(MSWDIR)\statbr95.obj \ - $(MSWDIR)\stattext.obj \ - $(MSWDIR)\tabctrl.obj \ - $(MSWDIR)\taskbar.obj \ - $(MSWDIR)\tbar95.obj \ - $(MSWDIR)\tbarmsw.obj \ - $(MSWDIR)\textctrl.obj \ - $(MSWDIR)\thread.obj \ - $(MSWDIR)\timer.obj \ - $(MSWDIR)\utils.obj \ - $(MSWDIR)\utilsexc.obj \ - $(MSWDIR)\wave.obj \ - $(MSWDIR)\window.obj \ - $(MSWDIR)\xpmhand.obj - -# Need Win95 support for these -# $(MSWDIR)\notebook.obj \ -# $(MSWDIR)\listctrl.obj \ -# $(MSWDIR)\imaglist.obj \ -# $(MSWDIR)\treectrl.obj \ -# $(OLEDIR)\droptgt.obj \ -# $(OLEDIR)\dropsrc.obj \ -# $(OLEDIR)\dataobj.obj \ -# $(OLEDIR)\oleutils.obj \ -# $(OLEDIR)\uuid.obj \ -# $(OLEDIR)\automtn.obj - -# Doesn't compile with SC++ 6 -# $(MSWDIR)\joystick.obj \ -# $(MSWDIR)\pnghand.obj \ - -XPMOBJECTS = $(XPMDIR)\crbuffri.obj\ - $(XPMDIR)\crdatfri.obj\ - $(XPMDIR)\create.obj $(XPMDIR)\crifrbuf.obj\ - $(XPMDIR)\crifrdat.obj\ - $(XPMDIR)\data.obj\ - $(XPMDIR)\hashtab.obj $(XPMDIR)\misc.obj\ - $(XPMDIR)\parse.obj $(XPMDIR)\rdftodat.obj\ - $(XPMDIR)\rdftoi.obj\ - $(XPMDIR)\rgb.obj $(XPMDIR)\scan.obj\ - $(XPMDIR)\simx.obj $(XPMDIR)\wrffrdat.obj\ - $(XPMDIR)\wrffrp.obj $(XPMDIR)\wrffri.obj - -# Add $(NONESSENTIALOBJS) if wanting generic dialogs, PostScript etc. -OBJECTS = $(COMMONOBJS) $(GENERICOBJS) $(MSWOBJS) # $(XPMOBJECTS) - -all: $(LIBTARGET) - -$(LIBTARGET): $(OBJECTS) - -del $(LIBTARGET) - *lib /PAGESIZE:512 $(LIBTARGET) y $(OBJECTS), nul; - -clean: - -del *.obj - -del $(LIBTARGET) - -$(COMMDIR)\y_tab.obj: $(COMMDIR)\y_tab.c $(COMMDIR)\lex_yy.c - -$(COMMDIR)\y_tab.c: $(COMMDIR)\dosyacc.c - copy $(COMMDIR)\dosyacc.c $(COMMDIR)\y_tab.c - -$(COMMDIR)\lex_yy.c: $(COMMDIR)\doslex.c - copy $(COMMDIR)\doslex.c $(COMMDIR)\lex_yy.c - -#$(COMMDIR)\cmndata.obj: $(COMMDIR)\cmndata.cpp -# *$(CC) -c $(CFLAGS) -I$(INCLUDE) $(OPTIONS) $(COMMDIR)\cmndata.cpp -o$(COMMDIR)\cmndata.obj - diff --git a/src/msw/makefile.sl b/src/msw/makefile.sl deleted file mode 100644 index 1a08e2b644..0000000000 --- a/src/msw/makefile.sl +++ /dev/null @@ -1,900 +0,0 @@ -# -# File: makefile.wat -# Author: Julian Smart -# Created: 1998 -# -# Makefile : Builds wxWindows library for Salford C++, WIN32 - -include ..\makesl.env - -LIBTARGET = $(WXLIB)\wx.lib -EXTRATARGETS = # xpm png zlib -EXTRATARGETSCLEAN = # clean_xpm clean_png clean_zlib -GENDIR=$(WXDIR)\src\generic -COMMDIR=$(WXDIR)\src\common -XPMDIR=$(WXDIR)\src\xpm -OLEDIR=ole -MSWDIR=$(WXDIR)\src\msw - -GENERICOBJS= choicdgg.obj \ - dirdlgg.obj \ - gridg.obj \ - laywin.obj \ - panelg.obj \ - prop.obj \ - propform.obj \ - proplist.obj \ - sashwin.obj \ - scrolwin.obj \ - splitter.obj \ - statusbr.obj \ - tabg.obj \ - textdlgg.obj - -# These are generic things that don't need to be compiled on MSW, -# but sometimes it's useful to do so for testing purposes. -NONESSENTIALOBJS= printps.obj \ - prntdlgg.obj \ - msgdlgg.obj \ - helpxlp.obj \ - colrdlgg.obj \ - fontdlgg.obj - -COMMONOBJS = cmndata.obj \ - config.obj \ - docview.obj \ - docmdi.obj \ - dynarray.obj \ - dynlib.obj \ - event.obj \ - file.obj \ - filefn.obj \ - fileconf.obj \ - framecmn.obj \ - gdicmn.obj \ - image.obj \ - intl.obj \ - ipcbase.obj \ - helpbase.obj \ - layout.obj \ - log.obj \ - memory.obj \ - module.obj \ - object.obj \ - prntbase.obj \ - resource.obj \ - tbarbase.obj \ - tbarsmpl.obj \ - textfile.obj \ - timercmn.obj \ - utilscmn.obj \ - validate.obj \ - valtext.obj \ - date.obj \ - hash.obj \ - list.obj \ - string.obj \ - socket.obj \ - sckaddr.obj \ - sckfile.obj \ - sckipc.obj \ - sckstrm.obj \ - url.obj \ - http.obj \ - protocol.obj \ - time.obj \ - tokenzr.obj \ - wxexpr.obj \ - y_tab.obj \ - extended.obj \ - process.obj \ - wfstream.obj \ - mstream.obj \ - zstream.obj \ - stream.obj \ - datstrm.obj \ - objstrm.obj \ - variant.obj \ - wincmn.obj - -# Can't compile these yet under Salford C++ -# mimetype.obj \ -# odbc.obj \ -# db.obj \ -# dbtable.obj \ - -MSWOBJS = \ - accel.obj \ - app.obj \ - bitmap.obj \ - bmpbuttn.obj \ - brush.obj \ - button.obj \ - checkbox.obj \ - checklst.obj \ - choice.obj \ - clipbrd.obj \ - colordlg.obj \ - colour.obj \ - combobox.obj \ - control.obj \ - curico.obj \ - cursor.obj \ - data.obj \ - dc.obj \ - dcmemory.obj \ - dcclient.obj \ - dcprint.obj \ - dcscreen.obj \ - dde.obj \ - dialog.obj \ - dib.obj \ - dibutils.obj \ - filedlg.obj \ - font.obj \ - fontdlg.obj \ - frame.obj \ - gauge95.obj \ - gaugemsw.obj \ - gdiobj.obj \ - helpwin.obj \ - icon.obj \ - imaglist.obj \ - iniconf.obj \ - joystick.obj \ - listbox.obj \ - listctrl.obj \ - main.obj \ - mdi.obj \ - menu.obj \ - menuitem.obj \ - metafile.obj \ - minifram.obj \ - msgdlg.obj \ - nativdlg.obj \ - notebook.obj \ - ownerdrw.obj \ - palette.obj \ - pen.obj \ - penwin.obj \ - printdlg.obj \ - printwin.obj \ - radiobox.obj \ - radiobut.obj \ - region.obj \ - registry.obj \ - regconf.obj \ - scrolbar.obj \ - settings.obj \ - slidrmsw.obj \ - slider95.obj \ - spinbutt.obj \ - statbmp.obj \ - statbox.obj \ - statbr95.obj \ - stattext.obj \ - tabctrl.obj \ - taskbar.obj \ - tbar95.obj \ - tbarmsw.obj \ - textctrl.obj \ - thread.obj \ - timer.obj \ - treectrl.obj \ - utils.obj \ - utilsexc.obj \ - wave.obj \ - window.obj - -# No OLE functions for wxDirDialog: use generic one instead -# dirdlg.obj \ -# pnghand.obj \ -# xpmhand.obj \ - -OLEOBJS = \ - droptgt.obj \ - dropsrc.obj \ - dataobj.obj \ - oleutils.obj \ - uuid.obj \ - automtn.obj - -# Add $(NONESSENTIALOBJS) if wanting generic dialogs, PostScript etc. -OBJECTS = $(COMMONOBJS) $(GENERICOBJS) $(MSWOBJS) # $(OLEOBJS) - -all: $(OBJECTS) $(LIBTARGET) $(EXTRATARGETS) - -$(LIBTARGET) : $(OBJECTS) - slink $$salford.lnk - -clean: $(EXTRATARGETSCLEAN) - -erase *.obj - -erase $(LIBTARGET) - -erase *.pch - -erase *.err - -cleanall: clean - -test: test.obj - -test.obj: test.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) test.cpp - -accel.obj: $(MSWDIR)\accel.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\accel.cpp /BINARY accel.obj - -app.obj: $(MSWDIR)\app.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\app.cpp /BINARY app.obj - -bitmap.obj: $(MSWDIR)\bitmap.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\bitmap.cpp /BINARY bitmap.obj - -bmpbuttn.obj: $(MSWDIR)\bmpbuttn.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\bmpbuttn.cpp /BINARY bmpbuttn.obj - -brush.obj: $(MSWDIR)\brush.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\brush.cpp /BINARY brush.obj - -button.obj: $(MSWDIR)\button.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\button.cpp /BINARY button.obj - -choice.obj: $(MSWDIR)\choice.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\choice.cpp /BINARY choice.obj - -checkbox.obj: $(MSWDIR)\checkbox.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\checkbox.cpp /BINARY checkbox.obj - -checklst.obj: $(MSWDIR)\checklst.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\checklst.cpp /BINARY checklst.obj - -clipbrd.obj: $(MSWDIR)\clipbrd.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\clipbrd.cpp /BINARY clipbrd.obj - -colordlg.obj: $(MSWDIR)\colordlg.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\colordlg.cpp /BINARY colordlg.obj - -colour.obj: $(MSWDIR)\colour.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\colour.cpp /BINARY colour.obj - -combobox.obj: $(MSWDIR)\combobox.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\combobox.cpp /BINARY combobox.obj - -control.obj: $(MSWDIR)\control.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\control.cpp /BINARY control.obj - -curico.obj: $(MSWDIR)\curico.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\curico.cpp /BINARY curico.obj - -cursor.obj: $(MSWDIR)\cursor.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\cursor.cpp /BINARY cursor.obj - -data.obj: $(MSWDIR)\data.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\data.cpp /BINARY data.obj - -dde.obj: $(MSWDIR)\dde.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\dde.cpp /BINARY dde.obj - -dc.obj: $(MSWDIR)\dc.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\dc.cpp /BINARY dc.obj - -dcmemory.obj: $(MSWDIR)\dcmemory.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\dcmemory.cpp /BINARY dcmemory.obj - -dcclient.obj: $(MSWDIR)\dcclient.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\dcclient.cpp /BINARY dcclient.obj - -dcprint.obj: $(MSWDIR)\dcprint.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\dcprint.cpp /BINARY dcprint.obj - -dcscreen.obj: $(MSWDIR)\dcscreen.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\dcscreen.cpp /BINARY dcscreen.obj - -dialog.obj: $(MSWDIR)\dialog.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\dialog.cpp /BINARY dialog.obj - -dib.obj: $(MSWDIR)\dib.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\dib.cpp /BINARY dib.obj - -dibutils.obj: $(MSWDIR)\dibutils.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\dibutils.cpp /BINARY dibutils.obj - -dirdlg.obj: $(MSWDIR)\dirdlg.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\dirdlg.cpp /BINARY dirdlg.obj - -filedlg.obj: $(MSWDIR)\filedlg.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\filedlg.cpp /BINARY filedlg.obj - -font.obj: $(MSWDIR)\font.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\font.cpp /BINARY font.obj - -fontdlg.obj: $(MSWDIR)\fontdlg.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\fontdlg.cpp /BINARY fontdlg.obj - -frame.obj: $(MSWDIR)\frame.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\frame.cpp /BINARY frame.obj - -gauge95.obj: $(MSWDIR)\gauge95.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\gauge95.cpp /BINARY gauge95.obj - -gaugemsw.obj: $(MSWDIR)\gaugemsw.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\gaugemsw.cpp /BINARY gaugemsw.obj - -gdiobj.obj: $(MSWDIR)\gdiobj.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\gdiobj.cpp /BINARY gdiobj.obj - -helpwin.obj: $(MSWDIR)\helpwin.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\helpwin.cpp /BINARY helpwin.obj - -icon.obj: $(MSWDIR)\icon.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\icon.cpp /BINARY icon.obj - -imaglist.obj: $(MSWDIR)\imaglist.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\imaglist.cpp /BINARY imaglist.obj - -iniconf.obj: $(MSWDIR)\iniconf.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\iniconf.cpp /BINARY iniconf.obj - -joystick.obj: $(MSWDIR)\joystick.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\joystick.cpp /BINARY joystick.obj - -listbox.obj: $(MSWDIR)\listbox.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\listbox.cpp /BINARY listbox.obj - -listctrl.obj: $(MSWDIR)\listctrl.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\listctrl.cpp /BINARY listctrl.obj - -main.obj: $(MSWDIR)\main.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\main.cpp /BINARY main.obj - -mdi.obj: $(MSWDIR)\mdi.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\mdi.cpp /BINARY mdi.obj - -menu.obj: $(MSWDIR)\menu.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\menu.cpp /BINARY menu.obj - -menuitem.obj: $(MSWDIR)\menuitem.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\menuitem.cpp /BINARY menuitem.obj - -metafile.obj: $(MSWDIR)\metafile.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\metafile.cpp /BINARY metafile.obj - -minifram.obj: $(MSWDIR)\minifram.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\minifram.cpp /BINARY minifram.obj - -msgdlg.obj: $(MSWDIR)\msgdlg.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\msgdlg.cpp /BINARY msgdlg.obj - -nativdlg.obj: $(MSWDIR)\nativdlg.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\nativdlg.cpp /BINARY nativdlg.obj - -notebook.obj: $(MSWDIR)\notebook.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\notebook.cpp /BINARY notebook.obj - -ownerdrw.obj: $(MSWDIR)\ownerdrw.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\ownerdrw.cpp /BINARY ownerdrw.obj - -palette.obj: $(MSWDIR)\palette.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\palette.cpp /BINARY palette.obj - -pen.obj: $(MSWDIR)\pen.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\pen.cpp /BINARY pen.obj - -penwin.obj: $(MSWDIR)\penwin.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\penwin.cpp /BINARY penwin.obj - -pnghand.obj: $(MSWDIR)\pnghand.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\pnghand.cpp /BINARY pnghand.obj - -printdlg.obj: $(MSWDIR)\printdlg.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\printdlg.cpp /BINARY printdlg.obj - -printwin.obj: $(MSWDIR)\printwin.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\printwin.cpp /BINARY printwin.obj - -radiobox.obj: $(MSWDIR)\radiobox.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\radiobox.cpp /BINARY radiobox.obj - -radiobut.obj: $(MSWDIR)\radiobut.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\radiobut.cpp /BINARY radiobut.obj - -region.obj: $(MSWDIR)\region.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\region.cpp /BINARY region.obj - -registry.obj: $(MSWDIR)\registry.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\registry.cpp /BINARY registry.obj - -regconf.obj: $(MSWDIR)\regconf.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\regconf.cpp /BINARY regconf.obj - -scrolbar.obj: $(MSWDIR)\scrolbar.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\scrolbar.cpp /BINARY scrolbar.obj - -settings.obj: $(MSWDIR)\settings.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\settings.cpp /BINARY settings.obj - -slidrmsw.obj: $(MSWDIR)\slidrmsw.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\slidrmsw.cpp /BINARY slidrmsw.obj - -slider95.obj: $(MSWDIR)\slider95.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\slider95.cpp /BINARY slider95.obj - -spinbutt.obj: $(MSWDIR)\spinbutt.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\spinbutt.cpp /BINARY spinbutt.obj - -statbmp.obj: $(MSWDIR)\statbmp.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\statbmp.cpp /BINARY statbmp.obj - -statbox.obj: $(MSWDIR)\statbox.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\statbox.cpp /BINARY statbox.obj - -statbr95.obj: $(MSWDIR)\statbr95.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\statbr95.cpp /BINARY statbr95.obj - -stattext.obj: $(MSWDIR)\stattext.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\stattext.cpp /BINARY stattext.obj - -tabctrl.obj: $(MSWDIR)\tabctrl.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\tabctrl.cpp /BINARY tabctrl.obj - -taskbar.obj: $(MSWDIR)\taskbar.cpp - cl @<< - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\taskbar.cpp /BINARY taskbar.obj - -tbar95.obj: $(MSWDIR)\tbar95.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\tbar95.cpp /BINARY tbar95.obj - -tbarmsw.obj: $(MSWDIR)\tbarmsw.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\tbarmsw.cpp /BINARY tbarmsw.obj - -textctrl.obj: $(MSWDIR)\textctrl.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\textctrl.cpp /BINARY textctrl.obj - -thread.obj: $(MSWDIR)\thread.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\thread.cpp /BINARY thread.obj - -timer.obj: $(MSWDIR)\timer.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\timer.cpp /BINARY timer.obj - -treectrl.obj: $(MSWDIR)\treectrl.cpp - cl @<< - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\treectrl.cpp /BINARY treectrl.obj - -utils.obj: $(MSWDIR)\utils.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\utils.cpp /BINARY utils.obj - -utilsexc.obj: $(MSWDIR)\utilsexc.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\utilsexc.cpp /BINARY utilsexc.obj - -wave.obj: $(MSWDIR)\wave.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\wave.cpp /BINARY wave.obj - -window.obj: $(MSWDIR)\window.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\window.cpp /BINARY window.obj - -xpmhand.obj: $(MSWDIR)\xpmhand.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\xpmhand.cpp /BINARY xpmhand.obj - -droptgt.obj: $(OLEDIR)\droptgt.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(OLEDIR)\droptgt.cpp /BINARY droptgt.obj - -dropsrc.obj: $(OLEDIR)\dropsrc.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(OLEDIR)\dropsrc.cpp /BINARY dropsrc.obj - -dataobj.obj: $(OLEDIR)\dataobj.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(OLEDIR)\dataobj.cpp /BINARY dataobj.obj - -oleutils.obj: $(OLEDIR)\oleutils.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(OLEDIR)\oleutils.cpp /BINARY oleutils.obj - -uuid.obj: $(OLEDIR)\uuid.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(OLEDIR)\uuid.cpp /BINARY uuid.obj - -automtn.obj: $(OLEDIR)\automtn.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(OLEDIR)\automtn.cpp /BINARY automtn.obj - -######################################################## -# Common objects (always compiled) - -cmndata.obj: $(COMMDIR)\cmndata.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\cmndata.cpp /BINARY cmndata.obj - -config.obj: $(COMMDIR)\config.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\config.cpp /BINARY config.obj - -db.obj: $(COMMDIR)\db.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\db.cpp /BINARY db.obj - -dbtable.obj: $(COMMDIR)\dbtable.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\dbtable.cpp /BINARY dbtable.obj - -docview.obj: $(COMMDIR)\docview.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\docview.cpp /BINARY docview.obj - -docmdi.obj: $(COMMDIR)\docmdi.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\docmdi.cpp /BINARY docmdi.obj - -dynarray.obj: $(COMMDIR)\dynarray.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\dynarray.cpp /BINARY dynarray.obj - -dynlib.obj: $(COMMDIR)\dynlib.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\dynlib.cpp /BINARY dynlib.obj - -event.obj: $(COMMDIR)\event.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\event.cpp /BINARY event.obj - -file.obj: $(COMMDIR)\file.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\file.cpp /BINARY file.obj - -fileconf.obj: $(COMMDIR)\fileconf.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\fileconf.cpp /BINARY fileconf.obj - -filefn.obj: $(COMMDIR)\filefn.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\filefn.cpp /BINARY filefn.obj - -framecmn.obj: $(COMMDIR)\framecmn.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\framecmn.cpp /BINARY framecmn.obj - -gdicmn.obj: $(COMMDIR)\gdicmn.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\gdicmn.cpp /BINARY gdicmn.obj - -image.obj: $(COMMDIR)\image.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\image.cpp /BINARY image.obj - -intl.obj: $(COMMDIR)\intl.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\intl.cpp /BINARY intl.obj - -ipcbase.obj: $(COMMDIR)\ipcbase.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\ipcbase.cpp /BINARY ipcbase.obj - -helpbase.obj: $(COMMDIR)\helpbase.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\helpbase.cpp /BINARY helpbase.obj - -layout.obj: $(COMMDIR)\layout.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\layout.cpp /BINARY layout.obj - -log.obj: $(COMMDIR)\log.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\log.cpp /BINARY log.obj - -memory.obj: $(COMMDIR)\memory.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\memory.cpp /BINARY memory.obj - -mimetype.obj: $(COMMDIR)\mimetype.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\mimetype.cpp /BINARY mimetype.obj - -module.obj: $(COMMDIR)\module.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\module.cpp /BINARY module.obj - -object.obj: $(COMMDIR)\object.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\object.cpp /BINARY object.obj - -odbc.obj: $(COMMDIR)\odbc.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\odbc.cpp /BINARY odbc.obj - -postscrp.obj: $(COMMDIR)\postcrp.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\postcrp.cpp /BINARY postscrp.obj - -prntbase.obj: $(COMMDIR)\prntbase.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\prntbase.cpp /BINARY prntbase.obj - -resource.obj: $(COMMDIR)\resource.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\resource.cpp /BINARY resource.obj - -tbarbase.obj: $(COMMDIR)\tbarbase.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\tbarbase.cpp /BINARY tbarbase.obj - -tbarsmpl.obj: $(COMMDIR)\tbarsmpl.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\tbarsmpl.cpp /BINARY tbarsmpl.obj - -textfile.obj: $(COMMDIR)\textfile.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\textfile.cpp /BINARY textfile.obj - -timercmn.obj: $(COMMDIR)\timercmn.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\timercmn.cpp /BINARY timercmn.obj - -utilscmn.obj: $(COMMDIR)\utilscmn.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\utilscmn.cpp /BINARY utilscmn.obj - -validate.obj: $(COMMDIR)\validate.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\validate.cpp /BINARY validate.obj - -valtext.obj: $(COMMDIR)\valtext.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\valtext.cpp /BINARY valtext.obj - -date.obj: $(COMMDIR)\date.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\date.cpp /BINARY date.obj - -wxexpr.obj: $(COMMDIR)\wxexpr.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\wxexpr.cpp /BINARY wxexpr.obj - -hash.obj: $(COMMDIR)\hash.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\hash.cpp /BINARY hash.obj - -list.obj: $(COMMDIR)\list.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\list.cpp /BINARY list.obj - -string.obj: $(COMMDIR)\string.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\string.cpp /BINARY string.obj - -socket.obj: $(COMMDIR)\socket.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\socket.cpp /BINARY socket.obj - -sckaddr.obj: $(COMMDIR)\sckaddr.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\sckaddr.cpp /BINARY sckaddr.obj - -sckfile.obj: $(COMMDIR)\sckfile.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\sckfile.cpp /BINARY sckfile.obj - -sckipc.obj: $(COMMDIR)\sckipc.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\sckipc.cpp /BINARY sckipc.obj - -sckstrm.obj: $(COMMDIR)\sckstrm.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\sckstrm.cpp /BINARY sckstrm.obj - -url.obj: $(COMMDIR)\url.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\url.cpp /BINARY url.obj - -http.obj: $(COMMDIR)\http.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\http.cpp /BINARY http.obj - -protocol.obj: $(COMMDIR)\protocol.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\protocol.cpp /BINARY protocol.obj - -tokenzr.obj: $(COMMDIR)\tokenzr.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\tokenzr.cpp /BINARY tokenzr.obj - -matrix.obj: $(COMMDIR)\matrix.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\matrix.cpp /BINARY matrix.obj - -time.obj: $(COMMDIR)\time.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\time.cpp /BINARY time.obj - -stream.obj: $(COMMDIR)\stream.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\stream.cpp /BINARY stream.obj - -wfstream.obj: $(COMMDIR)\wfstream.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\wfstream.cpp /BINARY wfstream.obj - -mstream.obj: $(COMMDIR)\mstream.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\mstream.cpp /BINARY mstream.obj - -zstream.obj: $(COMMDIR)\zstream.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\zstream.cpp /BINARY zstream.obj - -datstrm.obj: $(COMMDIR)\datstrm.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\datstrm.cpp /BINARY datstrm.obj - -objstrm.obj: $(COMMDIR)\objstrm.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\objstrm.cpp /BINARY objstrm.obj - -extended.obj: $(COMMDIR)\extended.c - $(CC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\extended.c /BINARY extended.obj - -process.obj: $(COMMDIR)\process.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\process.cpp /BINARY process.obj - -variant.obj: $(COMMDIR)\variant.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\variant.cpp /BINARY variant.obj - -wincmn.obj: $(COMMDIR)\wincmn.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\wincmn.cpp /BINARY wincmn.obj - -######################################################## -# Generic objects (not always compiled, depending on -# whether platforms have native implementations) - -choicdgg.obj: $(GENDIR)\choicdgg.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\choicdgg.cpp /BINARY choicdgg.obj - -colrdlgg.obj: $(GENDIR)\colrdgg.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\colrdgg.cpp /BINARY colordgg.obj - -dirdlgg.obj: $(GENDIR)\dirdlgg.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\dirdlgg.cpp /BINARY dirdlgg.obj - -fontdlgg.obj: $(GENDIR)\fontdlgg.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\fontdlgg.cpp /BINARY fontdlgg.obj - -gridg.obj: $(GENDIR)\gridg.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\gridg.cpp /BINARY gridg.obj - -helpxlp.obj: $(GENDIR)\helpxlp.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\helpxlp.cpp /BINARY helpxlp.obj - -laywin.obj: $(GENDIR)\laywin.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\laywin.cpp /BINARY laywin.obj - -msgdlgg.obj: $(GENDIR)\msgdlgg.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\msgdlgg.cpp /BINARY msgdlgg.obj - -panelg.obj: $(GENDIR)\panelg.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\panelg.cpp /BINARY panelg.obj - -printps.obj: $(GENDIR)\printps.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\printps.cpp /BINARY printps.obj - -prop.obj: $(GENDIR)\prop.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\prop.cpp /BINARY prop.obj - -propform.obj: $(GENDIR)\propform.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\propform.cpp /BINARY propform.obj - -proplist.obj: $(GENDIR)\proplist.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\proplist.cpp /BINARY proplist.obj - -prntdlgg.obj: $(GENDIR)\prntdlgg.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\prntdlgg.cpp /BINARY prntdlgg.obj - -sashwin.obj: $(GENDIR)\sashwin.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\sashwin.cpp /BINARY sashwin.obj - -scrolwin.obj: $(GENDIR)\scrolwin.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\scrolwin.cpp /BINARY scrolwin.obj - -splitter.obj: $(GENDIR)\splitter.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\splitter.cpp /BINARY splitter.obj - -statusbr.obj: $(GENDIR)\statusbr.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\statusbr.cpp /BINARY statusbr.obj - -tabg.obj: $(GENDIR)\tabg.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\tabg.cpp /BINARY tabg.obj - -textdlgg.obj: $(GENDIR)\textdlgg.cpp - $(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\textdlgg.cpp /BINARY textdlgg.obj - -crbuffri.obj: $(XPMDIR)\crbuffri.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\crbuffri.c - -crbuffrp.obj: $(XPMDIR)\crbuffrp.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\crbuffrp.c - -crdatfri.obj: $(XPMDIR)\crdatfri.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\crdatfri.c - -crdatfrp.obj: $(XPMDIR)\crdatfrp.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\crdatfrp.c - -create.obj: $(XPMDIR)\create.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\create.c - -crifrbuf.obj: $(XPMDIR)\crifrbuf.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\crifrbuf.c - -crifrdat.obj: $(XPMDIR)\crifrdat.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\crifrdat.c - -crpfrbuf.obj: $(XPMDIR)\crpfrbuf.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\crpfrbuf.c - -crpfrdat.obj: $(XPMDIR)\crpfrdat.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\crpfrdat.c - -dataxpm.obj: $(XPMDIR)\data.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\data.c /BINARY dataxpm.obj - -hashtab.obj: $(XPMDIR)\hashtab.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\hashtab.c - -misc.obj: $(XPMDIR)\misc.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\misc.c - -parse.obj: $(XPMDIR)\parse.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\parse.c - -rdftodat.obj: $(XPMDIR)\rdftodat.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\rdftodat.c - -rdftoi.obj: $(XPMDIR)\rdftoi.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\rdftoi.c - -rdftop.obj: $(XPMDIR)\rdftop.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\rdftop.c - -rgb.obj: $(XPMDIR)\rgb.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\rgb.c - -scan.obj: $(XPMDIR)\scan.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\scan.c - -simx.obj: $(XPMDIR)\simx.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\simx.c - -wrffrdat.obj: $(XPMDIR)\wrffrdat.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\wrffrdat.c - -wrffri.obj: $(XPMDIR)\wrffri.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\wrffri.c - -wrffrp.obj: $(XPMDIR)\wrffrp.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\wrffrp.c - -OBJ1 = adler32$(O) compress$(O) crc32$(O) gzio$(O) uncompr$(O) deflate$(O) \ - trees$(O) -OBJ2 = zutil$(O) inflate$(O) infblock$(O) inftrees$(O) infcodes$(O) \ - infutil$(O) inffast$(O) - -adler32.obj: adler32.c zutil.h zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - -compress.obj: compress.c zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - -crc32.obj: crc32.c zutil.h zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - -deflate.obj: deflate.c deflate.h zutil.h zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - -gzio.obj: gzio.c zutil.h zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - -infblock.obj: infblock.c zutil.h zlib.h zconf.h infblock.h inftrees.h\ - infcodes.h infutil.h - $(CC) -c $(CFLAGS) $*.c - -infcodes.obj: infcodes.c zutil.h zlib.h zconf.h inftrees.h infutil.h\ - infcodes.h inffast.h - $(CC) -c $(CFLAGS) $*.c - -inflate.obj: inflate.c zutil.h zlib.h zconf.h infblock.h - $(CC) -c $(CFLAGS) $*.c - -inftrees.obj: inftrees.c zutil.h zlib.h zconf.h inftrees.h - $(CC) -c $(CFLAGS) $*.c - -infutil.obj: infutil.c zutil.h zlib.h zconf.h inftrees.h infutil.h - $(CC) -c $(CFLAGS) $*.c - -inffast.obj: inffast.c zutil.h zlib.h zconf.h inftrees.h infutil.h inffast.h - $(CC) -c $(CFLAGS) $*.c - -trees.obj: trees.c deflate.h zutil.h zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - -uncompr.obj: uncompr.c zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - -zutil.obj: zutil.c zutil.h zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - - -y_tab.obj: $(COMMDIR)\y_tab.c $(COMMDIR)\lex_yy.c - $(CC) /ANSI_C $(CPPFLAGS) $(IFLAGS) /DEFINE USE_DEFINE $(COMMDIR)\y_tab.c /BINARY y_tab.obj - -$(COMMDIR)\y_tab.c: $(COMMDIR)\dosyacc.c - copy $(COMMDIR)\dosyacc.c $(COMMDIR)\y_tab.c - -$(COMMDIR)\lex_yy.c: $(COMMDIR)\doslex.c - copy $(COMMDIR)\doslex.c $(COMMDIR)\lex_yy.c - -xpm: - cd $(WXDIR)\src\xpm - wmake -f makefile.wat all - cd $(WXDIR)\src\msw - -clean_xpm: - cd $(WXDIR)\src\xpm - wmake -f makefile.wat clean - cd $(WXDIR)\src\msw - -png: - cd $(WXDIR)\src\png - wmake -f makefile.wat all - cd $(WXDIR)\src\msw - -clean_png: - cd $(WXDIR)\src\png - wmake -f makefile.wat clean - cd $(WXDIR)\src\msw - -zlib: - cd $(WXDIR)\src\zlib - wmake -f makefile.wat all - cd $(WXDIR)\src\msw - -clean_zlib: - cd $(WXDIR)\src\zlib - wmake -f makefile.wat clean - cd $(WXDIR)\src\msw - - diff --git a/src/msw/makefile.twn b/src/msw/makefile.twn deleted file mode 100644 index af50b79e87..0000000000 --- a/src/msw/makefile.twn +++ /dev/null @@ -1,315 +0,0 @@ -# -# File: makefile.twn -# Author: Julian Smart -# Created: 1993 -# Updated: -# -# Makefile for libwx.a, tagetting TWIN32 - -# Replace this with your own path if necessary -WXDIR = ../.. - -# All common UNIX compiler flags and options are now in -# this central makefile. -include $(WXDIR)/src/maketwin.env - -# IMPORTANT: if you want to link in subsidiary libraries, -# required for some optional parts of wxWindows, you must -# set EXTRATARGETS and EXTRAOBJS to match the settings in wx_setup.h. -# Having done this, you won't have to worry about linking them -# into each application. -# -# Here's the full list. -# prologio: Required if using the wxWindows resource facility -# USE_WX_RESOURCES should be 1 -# xmgauge: Gauge class (required for Motif only) -# USE_GAUGE should be 1 -# xpm: XPM pixmap support -# USE_XPM_IN_X should be 1 -# wxstring: string class -# USE_GNU_WXSTRING should be 1 -# -# Unfortunately, 'ar' doesn't like combining objects and libraries, -# so we must identify all the objects from the subordinate libraries. Yuck! -XPMSRC=../../contrib/wxxpm/objects$(GUISUFFIX) -XPMOBJS=$(XPMSRC)/crbuffri.$(OBJSUFF) $(XPMSRC)/crbuffrp.$(OBJSUFF) $(XPMSRC)/crdatfri.$(OBJSUFF) $(XPMSRC)/crdatfrp.$(OBJSUFF)\ - $(XPMSRC)/create.$(OBJSUFF) $(XPMSRC)/crifrbuf.$(OBJSUFF) $(XPMSRC)/crifrdat.$(OBJSUFF) $(XPMSRC)/crpfrbuf.$(OBJSUFF) $(XPMSRC)/crpfrdat.$(OBJSUFF)\ - $(XPMSRC)/data.$(OBJSUFF) $(XPMSRC)/hashtab.$(OBJSUFF) $(XPMSRC)/misc.$(OBJSUFF) $(XPMSRC)/parse.$(OBJSUFF) $(XPMSRC)/rdftodat.$(OBJSUFF)\ - $(XPMSRC)/rdftoi.$(OBJSUFF) $(XPMSRC)/rdftop.$(OBJSUFF) $(XPMSRC)/rgb.$(OBJSUFF) $(XPMSRC)/scan.$(OBJSUFF) $(XPMSRC)/simx.$(OBJSUFF)\ - $(XPMSRC)/wrffrdat.$(OBJSUFF) $(XPMSRC)/wrffri.$(OBJSUFF) $(XPMSRC)/wrffrp.$(OBJSUFF) - -# Subordinate library possibilities - -EXTRAOBJS= - -GENDIR=../generic -COMMDIR=../common -XPMDIR=../xpm -OLEDIR=ole -MSWDIR=. - -GENERICOBJDIR=../generic/$(OBJDIR) -COMMOBJDIR=../common/$(OBJDIR) -OLEOBJDIR=ole/$(OBJDIR) -MSWDIR=$(OBJDIR) - -DOCDIR = $(WXDIR)\docs - -GENERICOBJS= \ - $(GENDIR)/choicdgg.$(OBJSUFF) \ - $(GENDIR)/dirdlgg.$(OBJSUFF) \ - $(GENDIR)/gridg.$(OBJSUFF) \ - $(GENDIR)/laywin.$(OBJSUFF) \ - $(GENDIR)/panelg.$(OBJSUFF) \ - $(GENDIR)/prop.$(OBJSUFF) \ - $(GENDIR)/propform.$(OBJSUFF) \ - $(GENDIR)/proplist.$(OBJSUFF) \ - $(GENDIR)/sashwin.$(OBJSUFF) \ - $(GENDIR)/scrolwin.$(OBJSUFF) \ - $(GENDIR)/splitter.$(OBJSUFF) \ - $(GENDIR)/statusbr.$(OBJSUFF) \ - $(GENDIR)/tabg.$(OBJSUFF) \ - $(GENDIR)/textdlgg.$(OBJSUFF) - -# $(GENDIR)/colrdlgg.$(OBJSUFF) \ -# $(GENDIR)/fontdlgg.$(OBJSUFF) \ -# $(GENDIR)/prntdlgg.$(OBJSUFF) \ -# $(GENDIR)/printps.$(OBJSUFF) \ -# $(GENDIR)/msgdlgg.$(OBJSUFF) \ - -COMMONOBJS = \ - $(COMMDIR)/config.$(OBJSUFF) \ - $(COMMDIR)/cmndata.$(OBJSUFF) \ - $(COMMDIR)/docview.$(OBJSUFF) \ - $(COMMDIR)/docmdi.$(OBJSUFF) \ - $(COMMDIR)/dynarray.$(OBJSUFF) \ - $(COMMDIR)/event.$(OBJSUFF) \ - $(COMMDIR)/file.$(OBJSUFF) \ - $(COMMDIR)/fileconf.$(OBJSUFF) \ - $(COMMDIR)/filefn.$(OBJSUFF) \ - $(COMMDIR)/framecmn.$(OBJSUFF) \ - $(COMMDIR)/gdicmn.$(OBJSUFF) \ - $(COMMDIR)/helpbase.$(OBJSUFF) \ - $(COMMDIR)/image.$(OBJSUFF) \ - $(COMMDIR)/intl.$(OBJSUFF) \ - $(COMMDIR)/layout.$(OBJSUFF) \ - $(COMMDIR)/log.$(OBJSUFF) \ - $(COMMDIR)/memory.$(OBJSUFF) \ - $(COMMDIR)/module.$(OBJSUFF) \ - $(COMMDIR)/mimetype.$(OBJSUFF) \ - $(COMMDIR)/object.$(OBJSUFF) \ - $(COMMDIR)/odbc.$(OBJSUFF) \ - $(COMMDIR)/process.$(OBJSUFF) \ - $(COMMDIR)/prntbase.$(OBJSUFF) \ - $(COMMDIR)/resource.$(OBJSUFF) \ - $(COMMDIR)/tbarbase.$(OBJSUFF) \ - $(COMMDIR)/tbarsmpl.$(OBJSUFF) \ - $(COMMDIR)/textfile.$(OBJSUFF) \ - $(COMMDIR)/timercmn.$(OBJSUFF) \ - $(COMMDIR)/utilscmn.$(OBJSUFF) \ - $(COMMDIR)/validate.$(OBJSUFF) \ - $(COMMDIR)/valtext.$(OBJSUFF) \ - $(COMMDIR)/date.$(OBJSUFF) \ - $(COMMDIR)/wxexpr.$(OBJSUFF) \ - $(COMMDIR)/hash.$(OBJSUFF) \ - $(COMMDIR)/list.$(OBJSUFF) \ - $(COMMDIR)/variant.$(OBJSUFF) \ - $(COMMDIR)/string.$(OBJSUFF) \ - $(COMMDIR)/time.$(OBJSUFF) \ - $(COMMDIR)/tokenzr.$(OBJSUFF) \ - $(COMMDIR)/y_tab.$(OBJSUFF) \ - $(COMMDIR)/stream.$(OBJSUFF) \ - $(COMMDIR)/wfstream.$(OBJSUFF) \ - $(COMMDIR)/mstream.$(OBJSUFF) \ - $(COMMDIR)/zstream.$(OBJSUFF) \ - $(COMMDIR)/datstrm.$(OBJSUFF) \ - $(COMMDIR)/objstrm.$(OBJSUFF) \ - $(COMMDIR)/extended.$(OBJSUFF) \ - $(COMMDIR)/wincmn.$(OBJSUFF) - -# NOTE: if the socket-related files fail with a syntax error in Sockets.h, -# remove the files (probably all GnuWin32 releases < b20). Cygwin b20 is OK, -# Mingw32 may still have problems. -# $(COMMDIR)/socket.$(OBJSUFF) \ -# $(COMMDIR)/sckaddr.$(OBJSUFF) \ -# $(COMMDIR)/sckfile.$(OBJSUFF) \ -# $(COMMDIR)/sckipc.$(OBJSUFF) \ -# $(COMMDIR)/sckstrm.$(OBJSUFF) \ -# $(COMMDIR)/protocol.$(OBJSUFF) \ -# $(COMMDIR)/http.$(OBJSUFF) \ -# $(COMMDIR)/ftp.$(OBJSUFF) \ -# $(COMMDIR)/url.$(OBJSUFF) \ - -MSWOBJS = \ - accel.$(OBJSUFF) \ - app.$(OBJSUFF) \ - bitmap.$(OBJSUFF) \ - bmpbuttn.$(OBJSUFF) \ - brush.$(OBJSUFF) \ - button.$(OBJSUFF) \ - checkbox.$(OBJSUFF) \ - checklst.$(OBJSUFF) \ - choice.$(OBJSUFF) \ - clipbrd.$(OBJSUFF) \ - colordlg.$(OBJSUFF) \ - colour.$(OBJSUFF) \ - combobox.$(OBJSUFF) \ - control.$(OBJSUFF) \ - curico.$(OBJSUFF) \ - cursor.$(OBJSUFF) \ - data.$(OBJSUFF) \ - dc.$(OBJSUFF) \ - dcmemory.$(OBJSUFF) \ - dcclient.$(OBJSUFF) \ - dcprint.$(OBJSUFF) \ - dcscreen.$(OBJSUFF) \ - dde.$(OBJSUFF) \ - dialog.$(OBJSUFF) \ - dib.$(OBJSUFF) \ - filedlg.$(OBJSUFF) \ - font.$(OBJSUFF) \ - fontdlg.$(OBJSUFF) \ - frame.$(OBJSUFF) \ - gaugemsw.$(OBJSUFF) \ - gauge95.$(OBJSUFF) \ - gdiobj.$(OBJSUFF) \ - helpwin.$(OBJSUFF) \ - icon.$(OBJSUFF) \ - imaglist.$(OBJSUFF) \ - joystick.$(OBJSUFF) \ - listbox.$(OBJSUFF) \ - listctrl.$(OBJSUFF) \ - main.$(OBJSUFF) \ - mdi.$(OBJSUFF) \ - menu.$(OBJSUFF) \ - menuitem.$(OBJSUFF) \ - metafile.$(OBJSUFF) \ - minifram.$(OBJSUFF) \ - msgdlg.$(OBJSUFF) \ - nativdlg.$(OBJSUFF) \ - notebook.$(OBJSUFF) \ - ownerdrw.$(OBJSUFF) \ - palette.$(OBJSUFF) \ - pen.$(OBJSUFF) \ - penwin.$(OBJSUFF) \ - printdlg.$(OBJSUFF) \ - printwin.$(OBJSUFF) \ - radiobox.$(OBJSUFF) \ - radiobut.$(OBJSUFF) \ - region.$(OBJSUFF) \ - registry.$(OBJSUFF) \ - regconf.$(OBJSUFF) \ - scrolbar.$(OBJSUFF) \ - settings.$(OBJSUFF) \ - slidrmsw.$(OBJSUFF) \ - slider95.$(OBJSUFF) \ - spinbutt.$(OBJSUFF) \ - statbmp.$(OBJSUFF) \ - statbox.$(OBJSUFF) \ - statbr95.$(OBJSUFF) \ - stattext.$(OBJSUFF) \ - tabctrl.$(OBJSUFF) \ - taskbar.$(OBJSUFF) \ - tbar95.$(OBJSUFF) \ - tbarmsw.$(OBJSUFF) \ - textctrl.$(OBJSUFF) \ - thread.$(OBJSUFF) \ - timer.$(OBJSUFF) \ - treectrl.$(OBJSUFF) \ - utils.$(OBJSUFF) \ - utilsexc.$(OBJSUFF) \ - wave.$(OBJSUFF) \ - window.$(OBJSUFF) \ - xpmhand.$(OBJSUFF) - -# Native wxDirDlg can't be compiled due to GnuWin32/OLE limitations -# dirdlg.$(OBJSUFF) \ - -# OLE not supported yet by GnuWin32 -# $(OLEDIR)/droptgt.$(OBJSUFF) \ -# $(OLEDIR)/dropsrc.$(OBJSUFF) \ -# $(OLEDIR)/dataobj.$(OBJSUFF) \ -# $(OLEDIR)/oleutils.$(OBJSUFF) \ -# $(OLEDIR)/uuid.$(OBJSUFF) \ -# $(OLEDIR)/automtn.$(OBJSUFF) - -XPMOBJECTS = $(XPMDIR)/crbuffri.o\ - $(XPMDIR)/crdatfri.o\ - $(XPMDIR)/create.o $(XPMDIR)/crifrbuf.o\ - $(XPMDIR)/crifrdat.o\ - $(XPMDIR)/data.o\ - $(XPMDIR)/hashtab.o $(XPMDIR)/misc.o\ - $(XPMDIR)/parse.o $(XPMDIR)/rdftodat.o\ - $(XPMDIR)/rdftoi.o\ - $(XPMDIR)/rgb.o $(XPMDIR)/scan.o\ - $(XPMDIR)/simx.o $(XPMDIR)/wrffrdat.o\ - $(XPMDIR)/wrffrp.o $(XPMDIR)/wrffri.o - -OBJECTS = $(MSWOBJS) $(COMMONOBJS) $(GENERICOBJS) # $(XPMOBJECTS) - -all: $(OBJECTS) $(WXLIB) - -base: - cd $(WXDIR)/src/common; $(MAKE) -f makefile.g95 GUI=$(GUI) GUISUFFIX=$(GUISUFFIX) CC=$(CC)\ - OPTIONS='$(OPTIONS)' DEBUG='$(DEBUG)' DEBUGFLAGS='$(DEBUGFLAGS)' WARN='$(WARN)' XLIB='$(XLIB)' XINCLUDE='$(XINCLUDE)' - - -$(WXLIB): $(OBJECTS) $(EXTRAOBJS) - ar $(AROPTIONS) $@ $(EXTRAOBJS) $(OBJECTS) - $(RANLIB) $@ - -#$(MSWOBJDIR): -# mkdir $(OBJDIR) - -#$(COMMOBJDIR): -# mkdir $(COMMDIR)/$(OBJDIR) - -#$(GENERICOBJDIR): -# mkdir $(GENDIR)/$(OBJDIR) - -$(OBJECTS): $(WXINC)/wx/defs.h $(WXINC)/wx/object.h $(WXINC)/wx/setup.h - -$(COMMDIR)/y_tab.$(OBJSUFF): $(COMMDIR)/y_tab.c $(COMMDIR)/lex_yy.c - $(CCLEX) -c $(CPPFLAGS) -o $@ $(COMMDIR)/y_tab.c - -# Replace lex with flex if you run into compilation -# problems with lex_yy.c. See also note about LEX_SCANNER -# above. -$(COMMDIR)/lex_yy.c: $(COMMDIR)/lexer.l - $(LEX) $(COMMDIR)/lexer.l > $(COMMDIR)/lex_yy.c - -# The following may be required for some versions of LEX/FLEX -# $(LEX) -o$(COMMDIR)/lex_yy.c $(COMMDIR)/lexer.l - -# sed -e "s/BUFSIZ/5000/g" < lex.yy.c | \ -# sed -e "s/yyoutput(c)/void yyoutput(c)/g" | \ -# sed -e "s/YYLMAX 200/YYLMAX 5000/g" > lex_yy.c -# rm -f lex.yy.c - -# Replace yacc with bison if you run into compilation -# problems with y_tab.c. - -#$(COMMDIR)/y_tab.c: $(COMMDIR)/parser.y -# $(YACC) -o $(COMMDIR)/y_tab.c $(COMMDIR)/parser.y - -# If you use e.g. gcc on Unix, uncomment these lines -# and comment out the above. - -$(COMMDIR)/y_tab.c: $(COMMDIR)/parser.y - $(YACC) $(COMMDIR)/parser.y - mv y.tab.c $(COMMDIR)/y_tab.c - -# Extra targets -rcparser: - cd $(WXDIR)/utils/rcparser/src; $(MAKE) -f makefile.g95 - cd $(WXDIR)/src/msw - -clean_rcp: - cd $(WXDIR)/utils/rcparser/src; $(MAKE) -f makefile.g95 clean - cd $(WXDIR)/src/msw - -clean: - rm -f $(OBJECTS) $(EXTRAOBJS) ../common/y_tab.c ../common/lex_yy.c $(WXDIR)/lib/libwx$(GUISUFFIX).a core - -cleanall: clean - diff --git a/src/msw/makefile.vc b/src/msw/makefile.vc deleted file mode 100644 index b197ff7de3..0000000000 --- a/src/msw/makefile.vc +++ /dev/null @@ -1,1606 +0,0 @@ -# -# File: makefile.nt -# Author: Julian Smart -# Created: 1997 -# Updated: -# Copyright: (c) 1997, Julian Smart -# -# "%W% %G%" -# -# Makefile : Builds wxWindows library wx.lib for VC++ (32-bit) -# Arguments: -# -# FINAL=1 argument to nmake to build version with no debugging info. -# dll builds a library (wxdll.lib) suitable for creating DLLs -# * Note that the dll target is experimental - see docs/dll.txt. -# -!include <..\makevc.env> - -THISDIR=$(WXWIN)\src\msw - -!if "$(WXMAKINGDLL)" == "1" -LIBTARGET=$(WXDIR)\lib\wx200.dll -DUMMYOBJ=dummydll.obj -!else -LIBTARGET=$(WXLIB) -DUMMYOBJ=dummy.obj -!endif - -# Please set these according to the settings in wx_setup.h, so we can include -# the appropriate libraries in wx.lib - -# This one overrides the others, to be consistent with the settings in wx_setup.h -MINIMAL_WXWINDOWS_SETUP=0 - -PERIPH_LIBS= -PERIPH_TARGET= -PERIPH_CLEAN_TARGET= - -# These are absolute paths, so that the compiler -# generates correct __FILE__ symbols for debugging. -# Otherwise you don't be able to double-click on a memory -# error to load that file. -GENDIR=$(WXDIR)\src\generic -COMMDIR=$(WXDIR)\src\common -XPMDIR=$(WXDIR)\src\xpm -OLEDIR=ole -MSWDIR=$(WXDIR)\src\msw - -DOCDIR = $(WXDIR)\docs - -GENERICOBJS= \ - $(GENDIR)\choicdgg.obj \ - $(GENDIR)\gridg.obj \ - $(GENDIR)\laywin.obj \ - $(GENDIR)\panelg.obj \ - $(GENDIR)\prop.obj \ - $(GENDIR)\propform.obj \ - $(GENDIR)\proplist.obj \ - $(GENDIR)\sashwin.obj \ - $(GENDIR)\scrolwin.obj \ - $(GENDIR)\splitter.obj \ - $(GENDIR)\statusbr.obj \ - $(GENDIR)\tabg.obj \ - $(GENDIR)\textdlgg.obj - -# $(GENDIR)\imaglist.obj \ -# $(GENDIR)\treectrl.obj \ -# $(GENDIR)\listctrl.obj \ -# $(GENDIR)\notebook.obj \ - -# These are generic things that don't need to be compiled on MSW, -# but sometimes it's useful to do so for testing purposes. -NONESSENTIALOBJS= \ - $(GENDIR)\printps.obj \ - $(GENDIR)\prntdlgg.obj \ - $(GENDIR)\msgdlgg.obj \ - $(GENDIR)\helpxlp.obj \ - $(GENDIR)\colrdlgg.obj \ - $(GENDIR)\fontdlgg.obj \ - $(COMMDIR)\postscrp.obj - -COMMONOBJS = \ - $(COMMDIR)\cmndata.obj \ - $(COMMDIR)\config.obj \ - $(COMMDIR)\db.obj \ - $(COMMDIR)\dbtable.obj \ - $(COMMDIR)\docview.obj \ - $(COMMDIR)\docmdi.obj \ - $(COMMDIR)\dynarray.obj \ - $(COMMDIR)\dynlib.obj \ - $(COMMDIR)\event.obj \ - $(COMMDIR)\file.obj \ - $(COMMDIR)\filefn.obj \ - $(COMMDIR)\fileconf.obj \ - $(COMMDIR)\framecmn.obj \ - $(COMMDIR)\gdicmn.obj \ - $(COMMDIR)\image.obj \ - $(COMMDIR)\intl.obj \ - $(COMMDIR)\ipcbase.obj \ - $(COMMDIR)\helpbase.obj \ - $(COMMDIR)\layout.obj \ - $(COMMDIR)\log.obj \ - $(COMMDIR)\memory.obj \ - $(COMMDIR)\mimetype.obj \ - $(COMMDIR)\module.obj \ - $(COMMDIR)\odbc.obj \ - $(COMMDIR)\object.obj \ - $(COMMDIR)\prntbase.obj \ - $(COMMDIR)\resource.obj \ - $(COMMDIR)\tbarbase.obj \ - $(COMMDIR)\tbarsmpl.obj \ - $(COMMDIR)\textfile.obj \ - $(COMMDIR)\timercmn.obj \ - $(COMMDIR)\utilscmn.obj \ - $(COMMDIR)\validate.obj \ - $(COMMDIR)\valtext.obj \ - $(COMMDIR)\date.obj \ - $(COMMDIR)\hash.obj \ - $(COMMDIR)\list.obj \ - $(COMMDIR)\string.obj \ - $(COMMDIR)\socket.obj \ - $(COMMDIR)\sckaddr.obj \ - $(COMMDIR)\sckfile.obj \ - $(COMMDIR)\sckipc.obj \ - $(COMMDIR)\sckstrm.obj \ - $(COMMDIR)\url.obj \ - $(COMMDIR)\http.obj \ - $(COMMDIR)\protocol.obj \ - $(COMMDIR)\time.obj \ - $(COMMDIR)\tokenzr.obj \ - $(COMMDIR)\wxexpr.obj \ - $(COMMDIR)\y_tab.obj \ - $(COMMDIR)\extended.obj \ - $(COMMDIR)\process.obj \ - $(COMMDIR)\wfstream.obj \ - $(COMMDIR)\mstream.obj \ - $(COMMDIR)\zstream.obj \ - $(COMMDIR)\stream.obj \ - $(COMMDIR)\datstrm.obj \ - $(COMMDIR)\objstrm.obj \ - $(COMMDIR)\variant.obj \ - $(COMMDIR)\wincmn.obj - -MSWOBJS = \ - $(MSWDIR)\accel.obj \ - $(MSWDIR)\app.obj \ - $(MSWDIR)\bitmap.obj \ - $(MSWDIR)\bmpbuttn.obj \ - $(MSWDIR)\brush.obj \ - $(MSWDIR)\button.obj \ - $(MSWDIR)\checkbox.obj \ - $(MSWDIR)\checklst.obj \ - $(MSWDIR)\choice.obj \ - $(MSWDIR)\clipbrd.obj \ - $(MSWDIR)\colordlg.obj \ - $(MSWDIR)\colour.obj \ - $(MSWDIR)\combobox.obj \ - $(MSWDIR)\control.obj \ - $(MSWDIR)\curico.obj \ - $(MSWDIR)\cursor.obj \ - $(MSWDIR)\data.obj \ - $(MSWDIR)\dc.obj \ - $(MSWDIR)\dcmemory.obj \ - $(MSWDIR)\dcclient.obj \ - $(MSWDIR)\dcprint.obj \ - $(MSWDIR)\dcscreen.obj \ - $(MSWDIR)\dde.obj \ - $(MSWDIR)\dialog.obj \ - $(MSWDIR)\dib.obj \ - $(MSWDIR)\dibutils.obj \ - $(MSWDIR)\dirdlg.obj \ - $(MSWDIR)\filedlg.obj \ - $(MSWDIR)\font.obj \ - $(MSWDIR)\fontdlg.obj \ - $(MSWDIR)\frame.obj \ - $(MSWDIR)\gauge95.obj \ - $(MSWDIR)\gaugemsw.obj \ - $(MSWDIR)\gdiobj.obj \ - $(MSWDIR)\helpwin.obj \ - $(MSWDIR)\icon.obj \ - $(MSWDIR)\iniconf.obj \ - $(MSWDIR)\joystick.obj \ - $(MSWDIR)\imaglist.obj \ - $(MSWDIR)\listbox.obj \ - $(MSWDIR)\listctrl.obj \ - $(MSWDIR)\main.obj \ - $(MSWDIR)\mdi.obj \ - $(MSWDIR)\menu.obj \ - $(MSWDIR)\menuitem.obj \ - $(MSWDIR)\metafile.obj \ - $(MSWDIR)\minifram.obj \ - $(MSWDIR)\msgdlg.obj \ - $(MSWDIR)\nativdlg.obj \ - $(MSWDIR)\notebook.obj \ - $(MSWDIR)\ownerdrw.obj \ - $(MSWDIR)\palette.obj \ - $(MSWDIR)\pen.obj \ - $(MSWDIR)\penwin.obj \ - $(MSWDIR)\pnghand.obj \ - $(MSWDIR)\printdlg.obj \ - $(MSWDIR)\printwin.obj \ - $(MSWDIR)\radiobox.obj \ - $(MSWDIR)\radiobut.obj \ - $(MSWDIR)\region.obj \ - $(MSWDIR)\registry.obj \ - $(MSWDIR)\regconf.obj \ - $(MSWDIR)\scrolbar.obj \ - $(MSWDIR)\settings.obj \ - $(MSWDIR)\slidrmsw.obj \ - $(MSWDIR)\slider95.obj \ - $(MSWDIR)\spinbutt.obj \ - $(MSWDIR)\statbmp.obj \ - $(MSWDIR)\statbox.obj \ - $(MSWDIR)\statbr95.obj \ - $(MSWDIR)\stattext.obj \ - $(MSWDIR)\tabctrl.obj \ - $(MSWDIR)\taskbar.obj \ - $(MSWDIR)\tbar95.obj \ - $(MSWDIR)\tbarmsw.obj \ - $(MSWDIR)\textctrl.obj \ - $(MSWDIR)\thread.obj \ - $(MSWDIR)\timer.obj \ - $(MSWDIR)\treectrl.obj \ - $(MSWDIR)\utils.obj \ - $(MSWDIR)\utilsexc.obj \ - $(OLEDIR)\uuid.obj \ - $(MSWDIR)\wave.obj \ - $(MSWDIR)\window.obj \ - $(MSWDIR)\xpmhand.obj \ - $(OLEDIR)\dataobj.obj \ - $(OLEDIR)\automtn.obj \ - $(OLEDIR)\droptgt.obj \ - $(OLEDIR)\dropsrc.obj \ - $(OLEDIR)\oleutils.obj - -# Add $(NONESSENTIALOBJS) if wanting generic dialogs, PostScript etc. -OBJECTS = $(COMMONOBJS) $(GENERICOBJS) $(MSWOBJS) - -# Normal, static library -all: $(DUMMYOBJ) $(OBJECTS) $(PERIPH_TARGET) png zlib xpm $(LIBTARGET) - -# wxWindows library as DLL -dll: - nmake -f makefile.vc all FINAL=$(FINAL) DLL=1 WXMAKINGDLL=1 - -# wxWindows + app as DLL. Only affects main.cpp. -dllapp: - nmake -f makefile.vc all FINAL=$(FINAL) DLL=1 - -# wxWindows + app as DLL, for Netscape plugin - remove DllMain. -dllnp: - nmake -f makefile.vc all NOMAIN=1 FINAL=$(FINAL) DLL=1 - -# Use this to make dummy.obj and generate a PCH. -# You might use the dll target, then the pch target, in order to -# generate a DLL, then a PCH/dummy.obj for compiling your applications with. -# -# Explanation: Normally, when compiling a static version of wx.lib, your dummy.obj/PCH -# are associated with wx.lib. When using a DLL version of wxWindows, however, -# the DLL is compiled without a PCH, so you only need it for compiling the app. -# In fact headers are compiled differently depending on whether a DLL is being made -# or an app is calling the DLL exported functionality (WXDLLEXPORT is different -# in each case) so you couldn't use the same PCH. -pch: - nmake -f makefile.vc pch1 WXUSINGDLL=1 - -pch1: $(DUMMYOBJ) - -$(WXDIR)\lib\wx.lib: dummy.obj $(OBJECTS) $(PERIPH_LIBS) - -erase $(LIBTARGET) - $(implib) @<< --out:$@ --machine:$(CPU) -$(OBJECTS) $(PERIPH_LIBS) -<< - -# Update the import library -$(WXDIR)\lib\wx200.lib: $(DUMMYOBJ) $(OBJECTS) - $(implib) @<< - -machine:$(CPU) - -def:wx.def - $(DUMMYOBJ) $(OBJECTS) - -out:$(WXDIR)\lib\wx200.lib -<< - -# Update the dynamic link library -$(WXDIR)\lib\wx200.dll: $(DUMMYOBJ) $(OBJECTS) $(WXDIR)\lib\wx200.lib - $(link) @<< - $(LINKFLAGS) - -out:$(WXDIR)\lib\wx200.dll - $(DUMMYOBJ) $(OBJECTS) $(guilibsdll) shell32.lib comctl32.lib ctl3d32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib odbc32.lib advapi32.lib winmm.lib $(WXDIR)\lib\winpng.lib $(WXDIR)\lib\zlib.lib $(WXDIR)\lib\xpm.lib -<< - -######################################################## -# Windows-specific objects - -dummy.obj: dummy.$(SRCSUFF) $(WXDIR)\include\wx\wx.h - cl $(CPPFLAGS) $(MAKEPRECOMP) /c /Tp $*.$(SRCSUFF) - -dummydll.obj: dummydll.$(SRCSUFF) $(WXDIR)\include\wx\wx.h - cl @<< -$(CPPFLAGS) $(MAKEPRECOMP) /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/accel.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/app.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /D__NO_VC_CRTDBG__ /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/bitmap.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/bmpbuttn.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/brush.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/button.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/choice.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/checkbox.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/checklst.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/clipbrd.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/colordlg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/colour.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/combobox.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/control.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/curico.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/cursor.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/data.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/dde.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/dc.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/dcmemory.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/dcclient.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/dcprint.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/dcscreen.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/dialog.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/dib.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/dibutils.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/dirdlg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/filedlg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/font.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/fontdlg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/frame.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/gauge95.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/gaugemsw.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/gdiobj.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/icon.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/imaglist.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/joystick.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/listbox.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/listctrl.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(MSWDIR)/main.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/mdi.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/menu.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/menuitem.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/metafile.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/minifram.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/msgdlg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/nativdlg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/notebook.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/ownerdrw.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/palette.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/pen.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/penwin.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/pnghand.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/xpmhand.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/printdlg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/printwin.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/radiobox.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/radiobut.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/region.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/registry.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/regconf.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/scrolbar.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/settings.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/slidrmsw.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/slider95.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/spinbutt.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/statbmp.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/statbox.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/statbr95.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/stattext.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/tabctrl.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/taskbar.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/tbar95.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/tbarmsw.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/textctrl.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/thread.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/timer.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/treectrl.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/utils.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/utilsexc.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/wave.obj: $*.$(SRCSUFF) - echo $(CPPFLAGS) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(MSWDIR)/window.obj: $*.$(SRCSUFF) - echo $(CPPFLAGS) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(OLEDIR)/droptgt.obj: $*.$(SRCSUFF) - echo $(CPPFLAGS) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(OLEDIR)/dropsrc.obj: $*.$(SRCSUFF) - echo $(CPPFLAGS) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(OLEDIR)/dataobj.obj: $*.$(SRCSUFF) - echo $(CPPFLAGS) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(OLEDIR)/oleutils.obj: $*.$(SRCSUFF) - echo $(CPPFLAGS) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(OLEDIR)/uuid.obj: $*.$(SRCSUFF) - echo $(CPPFLAGS) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(OLEDIR)/automtn.obj: $*.$(SRCSUFF) - echo $(CPPFLAGS) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -######################################################## -# Common objects (always compiled) - -$(COMMDIR)/cmndata.obj: $*.$(SRCSUFF) - echo $(CPPFLAGS) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/config.obj: $*.$(SRCSUFF) - echo $(CPPFLAGS) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/db.obj: $*.$(SRCSUFF) - echo $(CPPFLAGS) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/dbtable.obj: $*.$(SRCSUFF) - echo $(CPPFLAGS) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/docview.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/docmdi.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/dynarray.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/dynlib.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/event.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/file.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/fileconf.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/filefn.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/framecmn.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/gdicmn.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/image.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/intl.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/ipcbase.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/helpbase.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/layout.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/log.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/memory.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/mimetype.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/module.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/object.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/odbc.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/postscrp.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/prntbase.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/resource.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/tbarbase.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/tbarsmpl.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/textfile.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/timercmn.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/utilscmn.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/validate.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/valtext.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/date.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/wxexpr.obj: $*.$(SRCSUFF) - echo $(CPPFLAGS) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/hash.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/list.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/string.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/socket.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/sckaddr.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/sckfile.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/sckipc.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/sckstrm.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/url.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/http.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/protocol.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/tokenzr.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/matrix.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/time.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)\stream.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)\wfstream.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)\mstream.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)\zstream.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)\datstrm.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)\objstrm.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/extended.obj: $*.c - cl @<< -$(CPPFLAGS2) /c $*.c /Fo$@ -<< - -$(COMMDIR)/process.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/variant.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/wincmn.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/y_tab.obj: $*.c $(COMMDIR)/lex_yy.c - cl @<< -$(CPPFLAGS2) /c $*.c -DUSE_DEFINE -DYY_USE_PROTOS /Fo$@ -<< - -$(COMMDIR)/y_tab.c: $(COMMDIR)/dosyacc.c - copy $(COMMDIR)\dosyacc.c $(COMMDIR)\y_tab.c - -$(COMMDIR)/lex_yy.c: $(COMMDIR)/doslex.c - copy $(COMMDIR)\doslex.c $(COMMDIR)\lex_yy.c - -######################################################## -# Generic objects (not always compiled, depending on -# whether platforms have native implementations) - -$(GENDIR)/choicdgg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/colrdlgg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/fontdlgg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/gridg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/helpxlp.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/laywin.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/msgdlgg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/panelg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/prop.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/propform.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/proplist.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/printps.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/prntdlgg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/sashwin.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/scrolwin.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/splitter.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/statusbr.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/tabg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/textdlgg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/treectrl.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/imaglist.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/listctrl.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/notebook.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(OBJECTS): $(WXDIR)/include/wx/setup.h - -# Peripheral components - -png: - cd $(WXDIR)\src\png - nmake -f makefile.vc FINAL=$(FINAL) DLL=$(DLL) WXMAKINGDLL=$(WXMAKINGDLL) - cd $(WXDIR)\src\msw - -clean_png: - cd $(WXDIR)\src\png - nmake -f makefile.vc clean - cd $(WXDIR)\src\msw - -zlib: - cd $(WXDIR)\src\zlib - nmake -f makefile.vc FINAL=$(FINAL) DLL=$(DLL) WXMAKINGDLL=$(WXMAKINGDLL) - cd $(WXDIR)\src\msw - -clean_zlib: - cd $(WXDIR)\src\zlib - nmake -f makefile.vc clean - cd $(WXDIR)\src\msw - -xpm: - cd $(WXDIR)\src\xpm - nmake -f makefile.vc FINAL=$(FINAL) DLL=$(DLL) WXMAKINGDLL=$(WXMAKINGDLL) - cd $(WXDIR)\src\msw - -clean_xpm: - cd $(WXDIR)\src\xpm - nmake -f makefile.vc clean - cd $(WXDIR)\src\msw - -rcparser: - cd $(WXDIR)\utils\rcparser\src - nmake -f makefile.vc FINAL=$(FINAL) - cd $(WXDIR)\src\msw - -clean: $(PERIPH_CLEAN_TARGET) clean_png clean_zlib clean_xpm - -erase *.obj - -erase $(LIBTARGET) - -erase $(WXDIR)\lib\*.pdb - -erase ..\..\lib\wx200.dll - -erase ..\..\lib\wx200.lib - -erase ..\..\lib\wx200.exp - -erase ..\..\lib\wx200.pdb - -erase ..\..\lib\wx200.ilk - -erase *.pdb - -erase *.sbr - -erase *.pch - cd $(WXDIR)\src\msw - cd $(GENDIR) - -erase *.pdb - -erase *.sbr - -erase *.obj - cd $(WXDIR)\src\msw - cd $(COMMDIR) - -erase *.pdb - -erase *.sbr - -erase *.obj - -erase y_tab.c - -erase lex_yy.c - cd $(WXDIR)\src\msw - cd $(OLEDIR) - -erase *.pdb - -erase *.sbr - -erase *.obj - cd $(WXDIR)\src\msw -# -erase ..\common\wxstrgnu\*.obj -# -erase ..\common\lex_yy.c -# -erase ..\common\y_tab.c - -cleanall: clean - -# Making documents -docs: allhlp allhtml allpdfrtf -alldocs: docs -hlp: wxhlp portinghlp # faqhlp -wxhlp: $(DOCDIR)/winhelp/wx.hlp -prophlp: $(DOCDIR)/winhelp/prop.hlp -faqhlp: $(DOCDIR)/winhelp/faq.hlp -refhlp: $(DOCDIR)/winhelp/techref.hlp -rtf: $(DOCDIR)/winhelp/wx.rtf -faqrtf: $(DOCDIR)/winhelp/faq.rtf -proprtf: $(DOCDIR)/winhelp/prop.rtf -pdfrtf: $(DOCDIR)/pdf/wx.rtf -faqpdfrtf: $(DOCDIR)/pdf/faq.rtf -proppdfrtf: $(DOCDIR)/pdf/prop.rtf -refpdfrtf: $(DOCDIR)/pdf/techref.rtf -html: wxhtml # faqhtml -wxhtml: $(DOCDIR)\html\wx\wx.htm -faqhtml: $(DOCDIR)\html\faq\faq.htm -prophtml: $(DOCDIR)\html\proplist\prop.htm -ps: wxps referencps # faqps -wxps: $(WXDIR)\docs\ps\wx.ps -propps: $(WXDIR)\docs\ps\prop.ps -faqps: $(WXDIR)\docs\ps\faq.ps -referencps: $(WXDIR)\docs\ps\referenc.ps - -portinghtml: $(DOCDIR)\html\porting\port.htm -portingrtf: $(DOCDIR)/winhelp/porting.rtf -portinghlp: $(DOCDIR)/winhelp/porting.hlp -portingpdfrtf: $(DOCDIR)/pdf/porting.rtf -portingps: $(WXDIR)\docs\ps\porting.ps - -allhlp: wxhlp portinghlp prop # faqhlp - cd $(WXDIR)\utils\dialoged\src - nmake -f makefile.vc hlp - cd $(THISDIR) - -# cd $(WXDIR)\utils\wxhelp\src -# nmake -f makefile.vc hlp -# cd $(WXDIR)\utils\wxhelp2\src -# nmake -f makefile.vc hlp -# cd $(WXDIR)\utils\prologio\src -# nmake -f makefile.vc hlp -# cd $(WXDIR)\utils\tex2rtf\src -# nmake -f makefile.vc hlp -# cd $(WXDIR)\utils\wxgraph\src -# nmake -f makefile.vc hlp -# cd $(WXDIR)\utils\wxchart\src -# nmake -f makefile.vc hlp -# cd $(WXDIR)\utils\wxtree\src -# nmake -f makefile.vc hlp -# cd $(WXDIR)\utils\wxbuild\src -# nmake -f makefile.vc hlp -# cd $(WXDIR)\utils\wxgrid\src -# nmake -f makefile.vc hlp -# cd $(WXDIR)\utils\wxtab\src -# nmake -f makefile.vc hlp - -# cd $(WXDIR)\utils\wxclips\src -# nmake -f makefile.vc hlp -# cd $(WXDIR)\utils\clips2c\src -# nmake -f makefile.vc hlp - -allhtml: wxhtml portinghtml prophtml # faqhtml - cd $(WXDIR)\utils\dialoged\src - nmake -f makefile.vc html - cd $(THISDIR) - -# nmake -f makefile.vc html -# cd $(WXDIR)\utils\dialoged\src -# nmake -f makefile.vc html -# cd $(WXDIR)\utils\hytext\src -# nmake -f makefile.vc html -# cd $(WXDIR)\utils\wxhelp\src -# nmake -f makefile.vc html -# cd $(WXDIR)\utils\wxhelp2\src -# nmake -f makefile.vc html -# cd $(WXDIR)\utils\prologio\src -# nmake -f makefile.vc html -# cd $(WXDIR)\utils\tex2rtf\src -# nmake -f makefile.vc html -# cd $(WXDIR)\utils\wxgraph\src -# nmake -f makefile.vc html -# cd $(WXDIR)\utils\wxchart\src -# nmake -f makefile.vc html -# cd $(WXDIR)\utils\wxtree\src -# nmake -f makefile.vc html -# cd $(WXDIR)\utils\wxtab\src -# nmake -f makefile.vc html - -# cd $(WXDIR)\utils\wxclips\src -# nmake -f makefile.vc html -# cd $(WXDIR)\utils\clips2c\src -# nmake -f makefile.vc html - -allps: wxps referencps portingps propps # faqps - cd $(WXDIR)\utils\dialoged\src - nmake -f makefile.vc ps - cd $(THISDIR) - -allpdfrtf: pdfrtf portingpdfrtf proppdfrtf # faqpdfrtf - cd $(WXDIR)\utils\dialoged\src - nmake -f makefile.vc pdfrtf - cd $(THISDIR) - -# cd $(WXDIR)\utils\wxhelp\src -# nmake -f makefile.vc ps -# cd $(WXDIR)\utils\wxhelp2\src -# nmake -f makefile.vc ps -# cd $(WXDIR)\utils\tex2rtf\src -# nmake -f makefile.vc ps -# cd $(WXDIR)\utils\wxgraph\src -# nmake -f makefile.vc ps -# cd $(WXDIR)\utils\wxchart\src -# nmake -f makefile.vc ps -# cd $(WXDIR)\utils\wxtree\src -# nmake -f makefile.vc ps -# cd $(THISDIR) - -# cd $(WXDIR)\utils\wxtab\src -# nmake -f makefile.vc ps -# cd $(WXDIR)\utils\prologio\src -# nmake -f makefile.vc ps -# cd $(WXDIR)\utils\wxclips\src -# nmake -f makefile.vc ps -# cd $(WXDIR)\utils\clips2c\src -# nmake -f makefile.vc ps - -$(DOCDIR)/winhelp/wx.hlp: $(DOCDIR)/latex/wx/wx.rtf $(DOCDIR)/latex/wx/wx.hpj - cd $(DOCDIR)/latex/wx - -erase wx.ph - hc wx - move wx.hlp $(DOCDIR)\winhelp\wx.hlp - move wx.cnt $(DOCDIR)\winhelp\wx.cnt - cd $(THISDIR) - -$(DOCDIR)/winhelp/porting.hlp: $(DOCDIR)/latex/porting/porting.rtf $(DOCDIR)/latex/porting/porting.hpj - cd $(DOCDIR)/latex/porting - -erase porting.ph - hc porting - move porting.hlp $(DOCDIR)\winhelp\porting.hlp - move porting.cnt $(DOCDIR)\winhelp\porting.cnt - cd $(THISDIR) - -$(DOCDIR)/winhelp/faq.hlp: $(DOCDIR)/latex/faq/faq.rtf $(DOCDIR)/latex/faq/faq.hpj - cd $(DOCDIR)/latex/faq - -erase faq.ph - hc faq - move faq.hlp $(DOCDIR)\winhelp\faq.hlp - move faq.cnt $(DOCDIR)\winhelp\faq.cnt - cd $(THISDIR) - -$(DOCDIR)/winhelp/prop.hlp: $(DOCDIR)/latex/proplist/prop.rtf $(DOCDIR)/latex/proplist/prop.hpj - cd $(DOCDIR)/latex/proplist - -erase prop.ph - hc prop - move prop.hlp $(DOCDIR)\winhelp\prop.hlp - move prop.cnt $(DOCDIR)\winhelp\prop.cnt - cd $(THISDIR) - -$(DOCDIR)/winhelp/techref.hlp: $(DOCDIR)/latex/techref/techref.rtf $(DOCDIR)/latex/techref/techref.hpj - cd $(DOCDIR)/latex/techref - -erase techref.ph - hc techref - move techref.hlp $(DOCDIR)\winhelp\techref.hlp - move techref.cnt $(DOCDIR)\winhelp\techref.cnt - cd $(THISDIR) - -$(DOCDIR)/latex/wx/wx.rtf: $(DOCDIR)/latex/wx/classes.tex $(DOCDIR)/latex/wx/body.tex $(DOCDIR)/latex/wx/topics.tex $(DOCDIR)/latex/wx/manual.tex - cd $(DOCDIR)\latex\wx - -start /w tex2rtf $(DOCDIR)/latex/wx/manual.tex $(DOCDIR)/latex/wx/wx.rtf -twice -winhelp - cd $(THISDIR) - -$(DOCDIR)/latex/porting/porting.rtf: $(DOCDIR)/latex/porting/porting.tex - cd $(DOCDIR)\latex\porting - -start /w tex2rtf $(DOCDIR)/latex/porting/porting.tex $(DOCDIR)/latex/porting/porting.rtf -twice -winhelp - cd $(THISDIR) - -$(DOCDIR)/latex/faq/faq.rtf: $(DOCDIR)/latex/faq/faq.tex - cd $(DOCDIR)\latex\faq - -start /w tex2rtf $(DOCDIR)/latex/faq/faq.tex $(DOCDIR)/latex/faq/faq.rtf -twice -winhelp - cd $(THISDIR) - -$(DOCDIR)/latex/proplist/prop.rtf: $(DOCDIR)/latex/proplist/prop.tex $(DOCDIR)/latex/proplist/body.tex $(DOCDIR)/latex/proplist/classes.tex $(DOCDIR)/latex/proplist/changes.tex - cd $(DOCDIR)\latex\proplist - -start /w tex2rtf $(DOCDIR)/latex/proplist/prop.tex $(DOCDIR)/latex/proplist/prop.rtf -twice -winhelp - cd $(THISDIR) - -$(DOCDIR)/latex/techref/techref.rtf: $(DOCDIR)/latex/techref/techref.tex - cd $(DOCDIR)\latex\techref - -start /w tex2rtf $(DOCDIR)/latex/techref/techref.tex $(DOCDIR)/latex/techref/techref.rtf -twice -winhelp - cd $(THISDIR) - -$(DOCDIR)/pdf/wx.rtf: $(DOCDIR)/latex/wx/classes.tex $(DOCDIR)/latex/wx/body.tex $(DOCDIR)/latex/wx/topics.tex $(DOCDIR)/latex/wx/manual.tex - cd $(DOCDIR)\latex\wx - -copy *.bmp *.wmf $(DOCDIR)\pdf - -start /w tex2rtf $(DOCDIR)/latex/wx/manual.tex $(DOCDIR)/pdf/wx.rtf -twice -rtf - cd $(THISDIR) - -$(DOCDIR)/pdf/porting.rtf: $(DOCDIR)/latex/porting/porting.tex - cd $(DOCDIR)\latex\porting - -copy *.bmp *.wmf $(DOCDIR)\pdf - -start /w tex2rtf $(DOCDIR)/latex/porting/porting.tex $(DOCDIR)/pdf/porting.rtf -twice -rtf - cd $(THISDIR) - -$(DOCDIR)/pdf/faq.rtf: $(DOCDIR)/latex/faq/faq.tex - cd $(DOCDIR)\latex\faq - -copy *.bmp *.wmf $(DOCDIR)\pdf - -start /w tex2rtf $(DOCDIR)/latex/faq/faq.tex $(DOCDIR)/pdf/faq.rtf -twice -rtf - cd $(THISDIR) - -$(DOCDIR)/pdf/prop.rtf: $(DOCDIR)/latex/proplist/proplist.tex $(DOCDIR)/latex/proplist/body.tex $(DOCDIR)/latex/proplist/classes.tex $(DOCDIR)/latex/proplist/changes.tex - cd $(DOCDIR)\latex\proplist - -copy *.bmp *.wmf $(DOCDIR)\pdf - -start /w tex2rtf $(DOCDIR)/latex/proplist/prop.tex $(DOCDIR)/pdf/prop.rtf -twice -rtf - cd $(THISDIR) - -$(DOCDIR)/pdf/techref.rtf: $(DOCDIR)/latex/techref/techref.tex - cd $(DOCDIR)\latex\techref - -copy *.bmp *.wmf $(DOCDIR)\pdf - -start /w tex2rtf $(DOCDIR)/latex/techref/techref.tex $(DOCDIR)/pdf/techref.rtf -twice -rtf - cd $(THISDIR) - -$(DOCDIR)\html\wx\wx.htm: $(DOCDIR)\latex\wx\classes.tex $(DOCDIR)\latex\wx\body.tex $(DOCDIR)/latex/wx/topics.tex $(DOCDIR)\latex\wx\manual.tex - cd $(DOCDIR)\latex\wx - -mkdir $(DOCDIR)\html\wx - -start /w tex2rtf $(DOCDIR)\latex\wx\manual.tex $(DOCDIR)\html\wx\wx.htm -twice -html - -erase $(DOCDIR)\html\wx\*.con - -erase $(DOCDIR)\html\wx\*.ref - -erase $(DOCDIR)\latex\wx\*.con - -erase $(DOCDIR)\latex\wx\*.ref - cd $(THISDIR) - -$(DOCDIR)\html\porting\port.htm: $(DOCDIR)\latex\porting\porting.tex - cd $(DOCDIR)\latex\porting - -mkdir $(DOCDIR)\html\porting - -start /w tex2rtf $(DOCDIR)\latex\porting\porting.tex $(DOCDIR)\html\porting\port.htm -twice -html - -erase $(DOCDIR)\html\porting\*.con - -erase $(DOCDIR)\html\porting\*.ref - -erase $(DOCDIR)\latex\porting\*.con - -erase $(DOCDIR)\latex\porting\*.ref - cd $(THISDIR) - -$(DOCDIR)\html\faq\faq.htm: $(DOCDIR)\latex\faq\faq.tex - cd $(DOCDIR)\latex\faq - -mkdir $(DOCDIR)\html\faq - -start /w tex2rtf $(DOCDIR)\latex\faq\faq.tex $(DOCDIR)\html\faq\faq.htm -twice -html - -erase $(DOCDIR)\html\faq\*.con - -erase $(DOCDIR)\html\faq\*.ref - -erase $(DOCDIR)\latex\faq\*.con - -erase $(DOCDIR)\latex\faq\*.ref - cd $(THISDIR) - -$(DOCDIR)\html\proplist\prop.htm: $(DOCDIR)\latex\proplist\prop.tex $(DOCDIR)\latex\proplist\body.tex $(DOCDIR)\latex\proplist\classes.tex $(DOCDIR)\latex\proplist\changes.tex - cd $(DOCDIR)\latex\proplist - -mkdir $(DOCDIR)\html\proplist - -start /w tex2rtf $(DOCDIR)\latex\proplist\prop.tex $(DOCDIR)\html\proplist\prop.htm -twice -html - -erase $(DOCDIR)\html\proplist\*.con - -erase $(DOCDIR)\html\proplist\*.ref - -erase $(DOCDIR)\latex\proplist\*.con - -erase $(DOCDIR)\latex\proplist\*.ref - cd $(THISDIR) - -$(WXDIR)\docs\latex\wx\manual.dvi: $(DOCDIR)/latex/wx/body.tex $(DOCDIR)/latex/wx/manual.tex - cd $(WXDIR)\docs\latex\wx - -latex manual - -latex manual - -makeindx manual - -bibtex manual - -latex manual - -latex manual - cd $(THISDIR) - -$(WXDIR)\docs\latex\porting\porting.dvi: $(DOCDIR)/latex/porting/porting.tex - cd $(WXDIR)\docs\latex\porting - -latex porting - -latex porting - -makeindx porting - -bibtex porting - -latex porting - -latex porting - cd $(THISDIR) - -$(WXDIR)\docs\ps\wx.ps: $(WXDIR)\docs\latex\wx\manual.dvi - cd $(WXDIR)\docs\latex\wx - -dvips32 -o wx.ps manual - move wx.ps $(WXDIR)\docs\ps\wx.ps - cd $(THISDIR) - -$(WXDIR)\docs\ps\porting.ps: $(WXDIR)\docs\latex\porting\porting.dvi - cd $(WXDIR)\docs\latex\porting - -dvips32 -o porting.ps porting - move porting.ps $(WXDIR)\docs\ps\porting.ps - cd $(THISDIR) - -$(WXDIR)\docs\latex\wx\referenc.dvi: $(DOCDIR)/latex/wx/classes.tex $(DOCDIR)/latex/wx/topics.tex $(DOCDIR)/latex/wx/referenc.tex - cd $(WXDIR)\docs\latex\wx - -latex referenc - -latex referenc - -makeindx referenc - -bibtex referenc - -latex referenc - -latex referenc - cd $(THISDIR) - -$(WXDIR)\docs\ps\referenc.ps: $(WXDIR)\docs\latex\wx\referenc.dvi - cd $(WXDIR)\docs\latex\wx - -dvips32 -o referenc.ps referenc - move referenc.ps $(WXDIR)\docs\ps\referenc.ps - cd $(THISDIR) - -$(WXDIR)\docs\latex\faq\faq.dvi: $(DOCDIR)/latex/faq/faq.tex - cd $(WXDIR)\docs\latex\faq - -latex faq - -latex faq - -makeindx faq - -latex faq - -latex faq - cd $(THISDIR) - -$(WXDIR)\docs\ps\faq.ps: $(WXDIR)\docs\latex\faq\faq.dvi - cd $(WXDIR)\docs\latex\faq - -dvips32 -o faq.ps faq - move faq.ps $(WXDIR)\docs\ps\faq.ps - cd $(THISDIR) - -# In order to force document reprocessing -touchmanual: - -touch $(WXDIR)\docs\latex\wx\manual.tex - -updatedocs: touchmanual alldocs - -# Start Word, running the GeneratePDF macro. MakeManual.dot should be in the -# Office StartUp folder, and PDFMaker should be installed. -updatepdf: # touchmanual pdfrtf - start /w "winword d:\wx2\wxWindows\docs\latex\pdf\wx.rtf /mGeneratePDF" - diff --git a/src/msw/makefile.wat b/src/msw/makefile.wat deleted file mode 100644 index 9315e3d1b3..0000000000 --- a/src/msw/makefile.wat +++ /dev/null @@ -1,911 +0,0 @@ -#!/binb/wmake.exe -# -# File: makefile.wat -# Author: Julian Smart -# Created: 1998 -# -# Makefile : Builds wxWindows library for Watcom C++, WIN32 - -WXDIR = ..\.. - -!include $(WXDIR)\src\makewat.env - -WXLIB = $(WXDIR)\lib - -LIBTARGET = $(WXLIB)\wx.lib -DUMMY=dummydll -# ODBCLIB = ..\..\contrib\odbc\odbc32.lib - -EXTRATARGETS = xpm png zlib -EXTRATARGETSCLEAN = clean_xpm clean_png clean_zlib -GENDIR=$(WXDIR)\src\generic -COMMDIR=$(WXDIR)\src\common -XPMDIR=$(WXDIR)\src\xpm -OLEDIR=ole -MSWDIR=$(WXDIR)\src\msw - -DOCDIR = $(WXDIR)\docs - -GENERICOBJS= choicdgg.obj & - gridg.obj & - laywin.obj & - panelg.obj & - prop.obj & - propform.obj & - proplist.obj & - sashwin.obj & - scrolwin.obj & - splitter.obj & - statusbr.obj & - tabg.obj & - textdlgg.obj - -# These are generic things that don't need to be compiled on MSW, -# but sometimes it's useful to do so for testing purposes. -NONESSENTIALOBJS= printps.obj & - prntdlgg.obj & - msgdlgg.obj & - helpxlp.obj & - colrdlgg.obj & - fontdlgg.obj - -COMMONOBJS = cmndata.obj & - config.obj & - docview.obj & - docmdi.obj & - dynarray.obj & - dynlib.obj & - event.obj & - file.obj & - filefn.obj & - fileconf.obj & - framecmn.obj & - gdicmn.obj & - image.obj & - intl.obj & - ipcbase.obj & - helpbase.obj & - layout.obj & - log.obj & - memory.obj & - mimetype.obj & - module.obj & - object.obj & - prntbase.obj & - resource.obj & - tbarbase.obj & - tbarsmpl.obj & - textfile.obj & - timercmn.obj & - utilscmn.obj & - validate.obj & - valtext.obj & - date.obj & - hash.obj & - list.obj & - string.obj & - socket.obj & - sckaddr.obj & - sckfile.obj & - sckipc.obj & - sckstrm.obj & - url.obj & - http.obj & - protocol.obj & - time.obj & - tokenzr.obj & - wxexpr.obj & - y_tab.obj & - extended.obj & - process.obj & - wfstream.obj & - mstream.obj & - zstream.obj & - stream.obj & - datstrm.obj & - objstrm.obj & - variant.obj & - wincmn.obj - -# Can't compile these yet under Watcom C++ -# odbc.obj & -# db.obj & -# dbtable.obj & - -MSWOBJS = & - accel.obj & - app.obj & - bitmap.obj & - bmpbuttn.obj & - brush.obj & - button.obj & - checkbox.obj & - checklst.obj & - choice.obj & - clipbrd.obj & - colordlg.obj & - colour.obj & - combobox.obj & - control.obj & - curico.obj & - cursor.obj & - data.obj & - dc.obj & - dcmemory.obj & - dcclient.obj & - dcprint.obj & - dcscreen.obj & - dde.obj & - dialog.obj & - dib.obj & - dibutils.obj & - dirdlg.obj & - filedlg.obj & - font.obj & - fontdlg.obj & - frame.obj & - gauge95.obj & - gaugemsw.obj & - gdiobj.obj & - helpwin.obj & - icon.obj & - imaglist.obj & - iniconf.obj & - joystick.obj & - listbox.obj & - listctrl.obj & - main.obj & - mdi.obj & - menu.obj & - menuitem.obj & - metafile.obj & - minifram.obj & - msgdlg.obj & - nativdlg.obj & - notebook.obj & - ownerdrw.obj & - palette.obj & - pen.obj & - penwin.obj & - printdlg.obj & - printwin.obj & - radiobox.obj & - radiobut.obj & - region.obj & - registry.obj & - regconf.obj & - scrolbar.obj & - settings.obj & - slidrmsw.obj & - slider95.obj & - spinbutt.obj & - statbmp.obj & - statbox.obj & - statbr95.obj & - stattext.obj & - tabctrl.obj & - taskbar.obj & - tbar95.obj & - tbarmsw.obj & - textctrl.obj & - thread.obj & - timer.obj & - treectrl.obj & - utils.obj & - utilsexc.obj & - wave.obj & - window.obj & - xpmhand.obj - -# pnghand.obj & - -OLEOBJS = & - droptgt.obj & - dropsrc.obj & - dataobj.obj & - oleutils.obj & - uuid.obj & - automtn.obj - -# Add $(NONESSENTIALOBJS) if wanting generic dialogs, PostScript etc. -OBJECTS = $(COMMONOBJS) $(GENERICOBJS) $(MSWOBJS) $(OLEOBJS) - -all: $(OBJECTS) $(LIBTARGET) $(EXTRATARGETS) - -$(LIBTARGET) : $(OBJECTS) - %create tmp.lbc - @for %i in ( $(OBJECTS) ) do @%append tmp.lbc +%i - wlib /b /c /n /p=512 $^@ @tmp.lbc - -#test : $(OBJECTS) -# %create tmp.lbc -# @for %i in ( $(OBJECTS) ) do @%append tmp.lbc +%i -# wlib /b /c /n /p=512 $^@ @tmp.lbc - - -clean: $(EXTRATARGETSCLEAN) - -erase *.obj - -erase $(LIBTARGET) - -erase *.pch - -erase *.err - -erase *.lbc - -cleanall: clean - -accel.obj: $(MSWDIR)\accel.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -app.obj: $(MSWDIR)\app.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -bitmap.obj: $(MSWDIR)\bitmap.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -bmpbuttn.obj: $(MSWDIR)\bmpbuttn.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -brush.obj: $(MSWDIR)\brush.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -button.obj: $(MSWDIR)\button.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -choice.obj: $(MSWDIR)\choice.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -checkbox.obj: $(MSWDIR)\checkbox.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -checklst.obj: $(MSWDIR)\checklst.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -clipbrd.obj: $(MSWDIR)\clipbrd.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -colordlg.obj: $(MSWDIR)\colordlg.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -colour.obj: $(MSWDIR)\colour.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -combobox.obj: $(MSWDIR)\combobox.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -control.obj: $(MSWDIR)\control.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -curico.obj: $(MSWDIR)\curico.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -cursor.obj: $(MSWDIR)\cursor.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -data.obj: $(MSWDIR)\data.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -dde.obj: $(MSWDIR)\dde.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -dc.obj: $(MSWDIR)\dc.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -dcmemory.obj: $(MSWDIR)\dcmemory.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -dcclient.obj: $(MSWDIR)\dcclient.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -dcprint.obj: $(MSWDIR)\dcprint.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -dcscreen.obj: $(MSWDIR)\dcscreen.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -dialog.obj: $(MSWDIR)\dialog.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -dib.obj: $(MSWDIR)\dib.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -dibutils.obj: $(MSWDIR)\dibutils.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -dirdlg.obj: $(MSWDIR)\dirdlg.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -filedlg.obj: $(MSWDIR)\filedlg.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -font.obj: $(MSWDIR)\font.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -fontdlg.obj: $(MSWDIR)\fontdlg.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -frame.obj: $(MSWDIR)\frame.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -gauge95.obj: $(MSWDIR)\gauge95.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -gaugemsw.obj: $(MSWDIR)\gaugemsw.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -gdiobj.obj: $(MSWDIR)\gdiobj.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -helpwin.obj: $(MSWDIR)\helpwin.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -icon.obj: $(MSWDIR)\icon.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -imaglist.obj: $(MSWDIR)\imaglist.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -iniconf.obj: $(MSWDIR)\iniconf.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -joystick.obj: $(MSWDIR)\joystick.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -listbox.obj: $(MSWDIR)\listbox.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -listctrl.obj: $(MSWDIR)\listctrl.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -main.obj: $(MSWDIR)\main.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -mdi.obj: $(MSWDIR)\mdi.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -menu.obj: $(MSWDIR)\menu.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -menuitem.obj: $(MSWDIR)\menuitem.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -metafile.obj: $(MSWDIR)\metafile.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -minifram.obj: $(MSWDIR)\minifram.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -msgdlg.obj: $(MSWDIR)\msgdlg.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -nativdlg.obj: $(MSWDIR)\nativdlg.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -notebook.obj: $(MSWDIR)\notebook.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -ownerdrw.obj: $(MSWDIR)\ownerdrw.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -palette.obj: $(MSWDIR)\palette.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -pen.obj: $(MSWDIR)\pen.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -penwin.obj: $(MSWDIR)\penwin.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -pnghand.obj: $(MSWDIR)\pnghand.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -printdlg.obj: $(MSWDIR)\printdlg.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -printwin.obj: $(MSWDIR)\printwin.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -radiobox.obj: $(MSWDIR)\radiobox.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -radiobut.obj: $(MSWDIR)\radiobut.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -region.obj: $(MSWDIR)\region.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -registry.obj: $(MSWDIR)\registry.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -regconf.obj: $(MSWDIR)\regconf.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -scrolbar.obj: $(MSWDIR)\scrolbar.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -settings.obj: $(MSWDIR)\settings.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -slidrmsw.obj: $(MSWDIR)\slidrmsw.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -slider95.obj: $(MSWDIR)\slider95.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -spinbutt.obj: $(MSWDIR)\spinbutt.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -statbmp.obj: $(MSWDIR)\statbmp.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -statbox.obj: $(MSWDIR)\statbox.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -statbr95.obj: $(MSWDIR)\statbr95.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -stattext.obj: $(MSWDIR)\stattext.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -tabctrl.obj: $(MSWDIR)\tabctrl.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -taskbar.obj: $(MSWDIR)\taskbar.cpp - cl @<< - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -tbar95.obj: $(MSWDIR)\tbar95.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -tbarmsw.obj: $(MSWDIR)\tbarmsw.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -textctrl.obj: $(MSWDIR)\textctrl.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -thread.obj: $(MSWDIR)\thread.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -timer.obj: $(MSWDIR)\timer.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -treectrl.obj: $(MSWDIR)\treectrl.cpp - cl @<< - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -utils.obj: $(MSWDIR)\utils.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -utilsexc.obj: $(MSWDIR)\utilsexc.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -wave.obj: $(MSWDIR)\wave.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -window.obj: $(MSWDIR)\window.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -xpmhand.obj: $(MSWDIR)\xpmhand.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -droptgt.obj: $(OLEDIR)\droptgt.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -dropsrc.obj: $(OLEDIR)\dropsrc.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -dataobj.obj: $(OLEDIR)\dataobj.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -oleutils.obj: $(OLEDIR)\oleutils.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -uuid.obj: $(OLEDIR)\uuid.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -automtn.obj: $(OLEDIR)\automtn.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -######################################################## -# Common objects (always compiled) - -cmndata.obj: $(COMMDIR)\cmndata.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -config.obj: $(COMMDIR)\config.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -db.obj: $(COMMDIR)\db.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -dbtable.obj: $(COMMDIR)\dbtable.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -docview.obj: $(COMMDIR)\docview.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -docmdi.obj: $(COMMDIR)\docmdi.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -dynarray.obj: $(COMMDIR)\dynarray.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -dynlib.obj: $(COMMDIR)\dynlib.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -event.obj: $(COMMDIR)\event.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -file.obj: $(COMMDIR)\file.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -fileconf.obj: $(COMMDIR)\fileconf.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -filefn.obj: $(COMMDIR)\filefn.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -framecmn.obj: $(COMMDIR)\framecmn.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -gdicmn.obj: $(COMMDIR)\gdicmn.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -image.obj: $(COMMDIR)\image.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -intl.obj: $(COMMDIR)\intl.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -ipcbase.obj: $(COMMDIR)\ipcbase.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -helpbase.obj: $(COMMDIR)\helpbase.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -layout.obj: $(COMMDIR)\layout.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -log.obj: $(COMMDIR)\log.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -memory.obj: $(COMMDIR)\memory.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -mimetype.obj: $(COMMDIR)\mimetype.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -module.obj: $(COMMDIR)\module.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -object.obj: $(COMMDIR)\object.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -odbc.obj: $(COMMDIR)\odbc.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -postscrp.obj: $(COMMDIR)\postcrp.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -prntbase.obj: $(COMMDIR)\prntbase.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -resource.obj: $(COMMDIR)\resource.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -tbarbase.obj: $(COMMDIR)\tbarbase.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -tbarsmpl.obj: $(COMMDIR)\tbarsmpl.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -textfile.obj: $(COMMDIR)\textfile.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -timercmn.obj: $(COMMDIR)\timercmn.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -utilscmn.obj: $(COMMDIR)\utilscmn.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -validate.obj: $(COMMDIR)\validate.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -valtext.obj: $(COMMDIR)\valtext.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -date.obj: $(COMMDIR)\date.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -wxexpr.obj: $(COMMDIR)\wxexpr.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -hash.obj: $(COMMDIR)\hash.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -list.obj: $(COMMDIR)\list.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -string.obj: $(COMMDIR)\string.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -socket.obj: $(COMMDIR)\socket.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -sckaddr.obj: $(COMMDIR)\sckaddr.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -sckfile.obj: $(COMMDIR)\sckfile.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -sckipc.obj: $(COMMDIR)\sckipc.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -sckstrm.obj: $(COMMDIR)\sckstrm.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -url.obj: $(COMMDIR)\url.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -http.obj: $(COMMDIR)\http.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -protocol.obj: $(COMMDIR)\protocol.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -tokenzr.obj: $(COMMDIR)\tokenzr.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -matrix.obj: $(COMMDIR)\matrix.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -time.obj: $(COMMDIR)\time.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -stream.obj: $(COMMDIR)\stream.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -wfstream.obj: $(COMMDIR)\wfstream.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -mstream.obj: $(COMMDIR)\mstream.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -zstream.obj: $(COMMDIR)\zstream.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -datstrm.obj: $(COMMDIR)\datstrm.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -objstrm.obj: $(COMMDIR)\objstrm.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -extended.obj: $(COMMDIR)\extended.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\extended.c - -process.obj: $(COMMDIR)\process.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -variant.obj: $(COMMDIR)\variant.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -wincmn.obj: $(COMMDIR)\wincmn.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -y_tab.obj: $(COMMDIR)\y_tab.c $(COMMDIR)\lex_yy.c - *$(CC) $(CPPFLAGS) $(IFLAGS) -DUSE_DEFINE $(COMMDIR)\y_tab.c - -# *$(CC) $(CPPFLAGS) $(IFLAGS) -DUSE_DEFINE -DYY_USE_PROTOS $(COMMDIR)\y_tab.c - -$(COMMDIR)\y_tab.c: $(COMMDIR)\dosyacc.c - copy $(COMMDIR)\dosyacc.c $(COMMDIR)\y_tab.c - -$(COMMDIR)\lex_yy.c: $(COMMDIR)\doslex.c - copy $(COMMDIR)\doslex.c $(COMMDIR)\lex_yy.c - -######################################################## -# Generic objects (not always compiled, depending on -# whether platforms have native implementations) - -choicdgg.obj: $(GENDIR)\choicdgg.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -colrdlgg.obj: $(GENDIR)\colrdgg.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -fontdlgg.obj: $(GENDIR)\fontdlgg.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -gridg.obj: $(GENDIR)\gridg.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -helpxlp.obj: $(GENDIR)\helpxlp.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -laywin.obj: $(GENDIR)\laywin.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -msgdlgg.obj: $(GENDIR)\msgdlgg.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -panelg.obj: $(GENDIR)\panelg.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -printps.obj: $(GENDIR)\printps.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -prop.obj: $(GENDIR)\prop.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -propform.obj: $(GENDIR)\propform.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -proplist.obj: $(GENDIR)\proplist.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -prntdlgg.obj: $(GENDIR)\prntdlgg.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -sashwin.obj: $(GENDIR)\sashwin.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -scrolwin.obj: $(GENDIR)\scrolwin.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -splitter.obj: $(GENDIR)\splitter.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -statusbr.obj: $(GENDIR)\statusbr.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -tabg.obj: $(GENDIR)\tabg.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -textdlgg.obj: $(GENDIR)\textdlgg.cpp - *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - -crbuffri.obj: $(XPMDIR)\crbuffri.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $< - -crbuffrp.obj: $(XPMDIR)\crbuffrp.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $< - -crdatfri.obj: $(XPMDIR)\crdatfri.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $< - -crdatfrp.obj: $(XPMDIR)\crdatfrp.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $< - -create.obj: $(XPMDIR)\create.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $< - -crifrbuf.obj: $(XPMDIR)\crifrbuf.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $< - -crifrdat.obj: $(XPMDIR)\crifrdat.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $< - -crpfrbuf.obj: $(XPMDIR)\crpfrbuf.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $< - -crpfrdat.obj: $(XPMDIR)\crpfrdat.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $< - -# TODO: what to do about this clash of filename???? -#data.obj: $(XPMDIR)\data.c -# *$(CC) $(CPPFLAGS) $(IFLAGS) $< - -hashtab.obj: $(XPMDIR)\hashtab.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $< - -misc.obj: $(XPMDIR)\misc.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $< - -parse.obj: $(XPMDIR)\parse.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $< - -rdftodat.obj: $(XPMDIR)\rdftodat.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $< - -rdftoi.obj: $(XPMDIR)\rdftoi.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $< - -rdftop.obj: $(XPMDIR)\rdftop.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $< - -rgb.obj: $(XPMDIR)\rgb.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $< - -scan.obj: $(XPMDIR)\scan.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $< - -simx.obj: $(XPMDIR)\simx.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $< - -wrffrdat.obj: $(XPMDIR)\wrffrdat.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $< - -wrffri.obj: $(XPMDIR)\wrffri.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $< - -wrffrp.obj: $(XPMDIR)\wrffrp.c - *$(CC) $(CPPFLAGS) $(IFLAGS) $< - -OBJ1 = adler32$(O) compress$(O) crc32$(O) gzio$(O) uncompr$(O) deflate$(O) \ - trees$(O) -OBJ2 = zutil$(O) inflate$(O) infblock$(O) inftrees$(O) infcodes$(O) \ - infutil$(O) inffast$(O) - -adler32.obj: adler32.c zutil.h zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - -compress.obj: compress.c zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - -crc32.obj: crc32.c zutil.h zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - -deflate.obj: deflate.c deflate.h zutil.h zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - -gzio.obj: gzio.c zutil.h zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - -infblock.obj: infblock.c zutil.h zlib.h zconf.h infblock.h inftrees.h\ - infcodes.h infutil.h - $(CC) -c $(CFLAGS) $*.c - -infcodes.obj: infcodes.c zutil.h zlib.h zconf.h inftrees.h infutil.h\ - infcodes.h inffast.h - $(CC) -c $(CFLAGS) $*.c - -inflate.obj: inflate.c zutil.h zlib.h zconf.h infblock.h - $(CC) -c $(CFLAGS) $*.c - -inftrees.obj: inftrees.c zutil.h zlib.h zconf.h inftrees.h - $(CC) -c $(CFLAGS) $*.c - -infutil.obj: infutil.c zutil.h zlib.h zconf.h inftrees.h infutil.h - $(CC) -c $(CFLAGS) $*.c - -inffast.obj: inffast.c zutil.h zlib.h zconf.h inftrees.h infutil.h inffast.h - $(CC) -c $(CFLAGS) $*.c - -trees.obj: trees.c deflate.h zutil.h zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - -uncompr.obj: uncompr.c zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - -zutil.obj: zutil.c zutil.h zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - -xpm: .SYMBOLIC - cd $(WXDIR)\src\xpm - wmake -f makefile.wat all - cd $(WXDIR)\src\msw - -clean_xpm: .SYMBOLIC - cd $(WXDIR)\src\xpm - wmake -f makefile.wat clean - cd $(WXDIR)\src\msw - -png: .SYMBOLIC - cd $(WXDIR)\src\png - wmake -f makefile.wat all - cd $(WXDIR)\src\msw - -clean_png: .SYMBOLIC - cd $(WXDIR)\src\png - wmake -f makefile.wat clean - cd $(WXDIR)\src\msw - -zlib: .SYMBOLIC - cd $(WXDIR)\src\zlib - wmake -f makefile.wat all - cd $(WXDIR)\src\msw - -clean_zlib: .SYMBOLIC - cd $(WXDIR)\src\zlib - wmake -f makefile.wat clean - cd $(WXDIR)\src\msw - - diff --git a/src/msw/mdi.cpp b/src/msw/mdi.cpp deleted file mode 100644 index 61653c10fe..0000000000 --- a/src/msw/mdi.cpp +++ /dev/null @@ -1,1213 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: mdi.cpp -// Purpose: MDI classes -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "mdi.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/setup.h" -#include "wx/frame.h" -#include "wx/menu.h" -#include "wx/app.h" -#include "wx/utils.h" -#include "wx/dialog.h" -#include "wx/statusbr.h" -#include "wx/settings.h" -#endif - -#include "wx/mdi.h" -#include "wx/msw/private.h" - -#if wxUSE_NATIVE_STATUSBAR -#include -#endif - -#include - -extern wxList wxModelessWindows; -extern wxMenu *wxCurrentPopupMenu; - -#define IDM_WINDOWTILE 4001 -#define IDM_WINDOWCASCADE 4002 -#define IDM_WINDOWICONS 4003 -#define IDM_WINDOWNEXT 4004 -// This range gives a maximum of 500 -// MDI children. Should be enough :-) -#define wxFIRST_MDI_CHILD 4100 -#define wxLAST_MDI_CHILD 4600 - -// Status border dimensions -#define wxTHICK_LINE_BORDER 3 -#define wxTHICK_LINE_WIDTH 1 - -extern char wxMDIFrameClassName[]; -extern char wxMDIChildFrameClassName[]; -extern wxWindow *wxWndHook; - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxMDIParentFrame, wxFrame) -IMPLEMENT_DYNAMIC_CLASS(wxMDIChildFrame, wxFrame) -IMPLEMENT_DYNAMIC_CLASS(wxMDIClientWindow, wxWindow) - -BEGIN_EVENT_TABLE(wxMDIParentFrame, wxFrame) - EVT_SIZE(wxMDIParentFrame::OnSize) - EVT_ACTIVATE(wxMDIParentFrame::OnActivate) - EVT_SYS_COLOUR_CHANGED(wxMDIParentFrame::OnSysColourChanged) -END_EVENT_TABLE() - -BEGIN_EVENT_TABLE(wxMDIClientWindow, wxWindow) - EVT_SCROLL(wxMDIClientWindow::OnScroll) -END_EVENT_TABLE() - -#endif - -wxMDIParentFrame::wxMDIParentFrame(void) -{ - m_clientWindow = NULL; - m_currentChild = NULL; - m_windowMenu = 0; - m_parentFrameActive = TRUE; -} - -bool wxMDIParentFrame::Create(wxWindow *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - m_defaultIcon = (WXHICON) (wxSTD_MDIPARENTFRAME_ICON ? wxSTD_MDIPARENTFRAME_ICON : wxDEFAULT_MDIPARENTFRAME_ICON); - - m_clientWindow = NULL; - m_currentChild = NULL; - m_windowMenu = 0; - m_parentFrameActive = TRUE; - - if (!parent) - wxTopLevelWindows.Append(this); - - SetName(name); - m_windowStyle = style; - - if (parent) parent->AddChild(this); - - if ( id > -1 ) - m_windowId = id; - else - m_windowId = (int)NewControlId(); - - int x = pos.x; - int y = pos.y; - int width = size.x; - int height = size.y; - - m_windowMenu = (WXHMENU) ::LoadMenu(wxGetInstance(), "wxWindowMenu"); - - DWORD msflags = WS_OVERLAPPED ; - if (style & wxMINIMIZE_BOX) - msflags |= WS_MINIMIZEBOX; - if (style & wxMAXIMIZE_BOX) - msflags |= WS_MAXIMIZEBOX; - if (style & wxTHICK_FRAME) - msflags |= WS_THICKFRAME; - if (style & wxSYSTEM_MENU) - msflags |= WS_SYSMENU; - if ((style & wxMINIMIZE) || (style & wxICONIZE)) - msflags |= WS_MINIMIZE; - if (style & wxMAXIMIZE) - msflags |= WS_MAXIMIZE; - if (style & wxCAPTION) - msflags |= WS_CAPTION; - - // Adding WS_CLIPCHILDREN causes children not to be properly - // drawn when first displaying them. -// if (style & wxCLIP_CHILDREN) -// msflags |= WS_CLIPCHILDREN; - - wxWindow::MSWCreate(m_windowId, parent, wxMDIFrameClassName, this, title, x, y, width, height, - msflags); - - wxModelessWindows.Append(this); - - return TRUE; -} - -wxMDIParentFrame::~wxMDIParentFrame(void) -{ - DestroyChildren(); - - DestroyMenu((HMENU) m_windowMenu); // Destroy dummy "Window" menu - m_windowMenu = 0; - - if (m_clientWindow->MSWGetOldWndProc()) - m_clientWindow->UnsubclassWin(); - - m_clientWindow->m_hWnd = 0; - delete m_clientWindow; -} - -// Get size *available for subwindows* i.e. excluding menu bar. -void wxMDIParentFrame::GetClientSize(int *x, int *y) const -{ - RECT rect; - GetClientRect((HWND) GetHWND(), &rect); - - int cwidth = rect.right; - int cheight = rect.bottom; - - if ( GetStatusBar() ) - { - int sw, sh; - GetStatusBar()->GetSize(&sw, &sh); - cheight -= sh; - } - - wxPoint pt(GetClientAreaOrigin()); - cheight -= pt.y; - cwidth -= pt.x; - - *x = cwidth; - *y = cheight; -} - -void wxMDIParentFrame::SetMenuBar(wxMenuBar *menu_bar) -{ - if (!menu_bar) - { - m_frameMenuBar = NULL; - return; - } - - if (menu_bar->m_menuBarFrame) - return; - - int i; - HMENU menu = CreateMenu(); - - for (i = 0; i < menu_bar->m_menuCount; i ++) - { - HMENU popup = (HMENU)menu_bar->m_menus[i]->m_hMenu; - // - // After looking Bounds Checker result, it seems that all - // menus must be individually destroyed. So, don't reset m_hMenu, - // to allow ~wxMenu to do the job. - // - menu_bar->m_menus[i]->m_savehMenu = (WXHMENU) popup; - // Uncommenting for the moment... JACS - menu_bar->m_menus[i]->m_hMenu = (WXHMENU) NULL; - AppendMenu(menu, MF_POPUP | MF_STRING, (UINT)popup, menu_bar->m_titles[i]); - } - - menu_bar->m_hMenu = (WXHMENU)menu; - if (m_frameMenuBar) - delete m_frameMenuBar; - - this->m_hMenu = (WXHMENU) menu; - - // MDI parent-specific code follows - - HMENU subMenu = GetSubMenu((HMENU) m_windowMenu, 0); - - // Try to insert Window menu in front of Help, otherwise append it. - int N = GetMenuItemCount(menu); - bool success = FALSE; - for (i = 0; i < N; i++) - { - char buf[100]; - int chars = GetMenuString(menu, i, buf, 100, MF_BYPOSITION); - if ((chars > 0) && (strcmp(buf, "&Help") == 0 || - strcmp(buf, "Help") == 0)) - { - success = TRUE; - InsertMenu(menu, i, MF_BYPOSITION | MF_POPUP | MF_STRING, - (UINT)subMenu, "&Window"); - break; - } - } - if (!success) - AppendMenu(menu, MF_POPUP, - (UINT)subMenu, - "&Window"); - m_parentFrameActive = TRUE; -#ifdef __WIN32__ - SendMessage((HWND) GetClientWindow()->GetHWND(), WM_MDISETMENU, - (WPARAM)menu, - (LPARAM)subMenu); -#else - SendMessage((HWND) GetClientWindow()->GetHWND(), WM_MDISETMENU, 0, - MAKELPARAM(menu, subMenu)); -#endif - DrawMenuBar((HWND) GetHWND()); - - m_frameMenuBar = menu_bar; - menu_bar->m_menuBarFrame = this; -} - -void wxMDIParentFrame::OnSize(wxSizeEvent& event) -{ -#if wxUSE_CONSTRAINTS - if (GetAutoLayout()) - Layout(); -#endif - int x = 0; - int y = 0; - int width, height; - GetClientSize(&width, &height); - - if ( GetClientWindow() ) - GetClientWindow()->SetSize(x, y, width, height); - -/* Already done in MSWOnSize - // forward WM_SIZE to status bar control -#if wxUSE_NATIVE_STATUSBAR - if (m_frameStatusBar && m_frameStatusBar->IsKindOf(CLASSINFO(wxStatusBar95))) - ((wxStatusBar95 *)m_frameStatusBar)->OnSize(event); -#endif -*/ - -} - -void wxMDIParentFrame::OnActivate(wxActivateEvent& event) -{ - // Do nothing -} - -#if WXWIN_COMPATIBILITY -/* -void wxMDIParentFrame::OldOnSize(int x, int y) -{ -#if WXWIN_COMPATIBILITY == 1 - wxSizeEvent event(wxSize(x, y), m_windowId); - event.SetEventObject( this ); - GetEventHandler()->ProcessEvent(event); -#else - -#if wxUSE_CONSTRAINTS - if (GetAutoLayout()) - Layout(); -#endif - int x = 0; - int y = 0; - int width, height; - GetClientSize(&width, &height); - if ( GetToolBar() ) - { - int wt, ht; - GetToolBar()->GetSize(&wt, &ht); - height -= ht; - y += ht; - } - - if ( GetClientWindow() ) - GetClientWindow()->SetSize(x, y, width, height); - -#endif -} - -// Default activation behaviour - nothing. -// Default activation behaviour - override dedault wxFrame behaviour -void wxMDIParentFrame::OldOnActivate(bool flag) -{ -#if WXWIN_COMPATIBILITY == 1 - wxActivateEvent event(wxEVT_ACTIVATE, flag, m_windowId); - event.SetEventObject( this ); - GetEventHandler()->ProcessEvent(event); -#else -#endif -} -*/ - -#endif - -// Returns the active MDI child window -wxMDIChildFrame *wxMDIParentFrame::GetActiveChild(void) const -{ -// HWND hWnd = (HWND)LOWORD(SendMessage((HWND) GetClientWindow()->GetHWND(), WM_MDIGETACTIVE, 0, 0L)); - HWND hWnd = (HWND)SendMessage((HWND) GetClientWindow()->GetHWND(), WM_MDIGETACTIVE, 0, 0L); - if (hWnd == 0) - return NULL; - else - return (wxMDIChildFrame *)wxFindWinFromHandle((WXHWND) hWnd); -} - -// Create the client window class (don't Create the window, -// just return a new class) -wxMDIClientWindow *wxMDIParentFrame::OnCreateClient(void) -{ - return new wxMDIClientWindow ; -} - -// Responds to colour changes, and passes event on to children. -void wxMDIParentFrame::OnSysColourChanged(wxSysColourChangedEvent& event) -{ - if ( m_clientWindow ) - { - m_clientWindow->SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE)); - m_clientWindow->Refresh(); - } -/* - if ( m_frameToolBar ) - { - wxSysColourChangedEvent event2; - event2.eventObject = m_frameToolBar; - m_frameToolBar->GetEventHandler()->ProcessEvent(event2); - } -*/ - - // Propagate the event to the non-top-level children - wxFrame::OnSysColourChanged(event); -} - -// MDI operations -void wxMDIParentFrame::Cascade(void) -{ - ::SendMessage( (HWND) GetClientWindow()->GetHWND(), WM_MDICASCADE, 0, 0); -} - -void wxMDIParentFrame::Tile(void) -{ - ::SendMessage( (HWND) GetClientWindow()->GetHWND(), WM_MDITILE, MDITILE_HORIZONTAL, 0); -} - -void wxMDIParentFrame::ArrangeIcons(void) -{ - ::SendMessage( (HWND) GetClientWindow()->GetHWND(), WM_MDIICONARRANGE, 0, 0); -} - -void wxMDIParentFrame::ActivateNext(void) -{ - ::SendMessage( (HWND) GetClientWindow()->GetHWND(), WM_MDINEXT, 0, 0); -} - -void wxMDIParentFrame::ActivatePrevious(void) -{ - ::SendMessage( (HWND) GetClientWindow()->GetHWND(), WM_MDINEXT, 0, 1); -} - - -/* -// Returns a style for the client window - usually 0 -// or, for example, wxHSCROLL | wxVSCROLL -long wxMDIParentFrame::GetClientStyle(void) const -{ - return wxHSCROLL | wxVSCROLL ; -} -*/ - -bool wxMDIParentFrame::MSWOnDestroy(void) -{ - return FALSE; -} - -void wxMDIParentFrame::MSWOnCreate(WXLPCREATESTRUCT WXUNUSED(cs)) -{ - m_clientWindow = OnCreateClient(); - // Uses own style for client style - m_clientWindow->CreateClient(this, GetWindowStyleFlag()); -} - -void wxMDIParentFrame::MSWOnSize(int x, int y, WXUINT id) -{ - switch (id) - { - case SIZEFULLSCREEN: - case SIZENORMAL: - m_iconized = FALSE; - break; - case SIZEICONIC: - m_iconized = TRUE; - break; - } - - if (!m_iconized) - { - // forward WM_SIZE to status bar control -#if wxUSE_NATIVE_STATUSBAR - if (m_frameStatusBar && m_frameStatusBar->IsKindOf(CLASSINFO(wxStatusBar95))) - { - wxSizeEvent event(wxSize(x, y), m_frameStatusBar->GetId()); - event.SetEventObject( m_frameStatusBar ); - - ((wxStatusBar95 *)m_frameStatusBar)->OnSize(event); - } -#endif - - PositionStatusBar(); - PositionToolBar(); - - wxSizeEvent event(wxSize(x, y), m_windowId); - event.SetEventObject( this ); - if (!GetEventHandler()->ProcessEvent(event)) - Default(); - } -} - -bool wxMDIParentFrame::MSWOnActivate(int state, bool minimized, WXHWND activate) -{ - wxWindow::MSWOnActivate(state, minimized, activate); - - // If this window is an MDI parent, we must also send an OnActivate message - // to the current child. - if ((m_currentChild != NULL) && ((state == WA_ACTIVE) || (state == WA_CLICKACTIVE))) - { - wxActivateEvent event(wxEVT_ACTIVATE, TRUE, m_currentChild->GetId()); - event.SetEventObject( m_currentChild ); - m_currentChild->GetEventHandler()->ProcessEvent(event); - } - return 0; -} - -bool wxMDIParentFrame::MSWOnCommand(WXWORD id, WXWORD cmd, WXHWND control) -{ -// if (cmd == 0) // Why did I do this test? - { - // In case it's e.g. a toolbar. - wxWindow *win = wxFindWinFromHandle(control); - if (win) - return win->MSWCommand(cmd, id); - -/* - if (wxCurrentPopupMenu) - { - wxMenu *popupMenu = wxCurrentPopupMenu; - wxCurrentPopupMenu = NULL; - if (!popupMenu->MSWCommand(cmd, id)) - return TRUE; - } -*/ - - switch (id) - { - case IDM_WINDOWCASCADE: - SendMessage((HWND) GetClientWindow()->GetHWND(), WM_MDICASCADE, MDITILE_SKIPDISABLED, 0); - return TRUE; - case IDM_WINDOWTILE: - SendMessage((HWND) GetClientWindow()->GetHWND(), WM_MDITILE, MDITILE_HORIZONTAL, 0); - return TRUE; - case IDM_WINDOWICONS: - SendMessage((HWND) GetClientWindow()->GetHWND(), WM_MDIICONARRANGE, 0, 0); - return TRUE; - case IDM_WINDOWNEXT: - SendMessage((HWND) GetClientWindow()->GetHWND(), WM_MDINEXT, 0, 0); - return TRUE; - default: - break; - } - if (id >= 0xF000) - { - return FALSE; // Get WndProc to call default proc - } - - if (m_parentFrameActive && (id < wxFIRST_MDI_CHILD || id > wxLAST_MDI_CHILD)) - { - ProcessCommand(id); - return TRUE; - } - else if (m_currentChild && (id < wxFIRST_MDI_CHILD || id > wxLAST_MDI_CHILD)) - { - return m_currentChild->MSWOnCommand(id, cmd, control); - } - } - if (id >= wxFIRST_MDI_CHILD && id <= wxLAST_MDI_CHILD) - { - wxNode* node = GetChildren().First(); - while (node) - { - wxWindow* child = (wxWindow*) node->Data(); - if (child->GetHWND()) - { -#ifdef __WIN32__ - long childId = GetWindowLong((HWND) child->GetHWND(), GWL_ID); -#else - long childId = GetWindowWord((HWND) child->GetHWND(), GWW_ID); -#endif - if (childId == id) - { - ::SendMessage( (HWND) GetClientWindow()->GetHWND(), WM_MDIACTIVATE, (WPARAM) (HWND) child->GetHWND(), 0); - return TRUE; - } - } - node = node->Next(); - } -/* - wxWindow* child = FindItem(id); - if (child) - { - ::SendMessage( (HWND) GetClientWindow()->GetHWND(), WM_MDIACTIVATE, (WPARAM) (HWND) child->GetHWND(), 0); - return TRUE; - } -*/ - } - - return FALSE; -} - -void wxMDIParentFrame::MSWOnMenuHighlight(WXWORD nItem, WXWORD nFlags, WXHMENU hSysMenu) -{ - if (m_parentFrameActive) - { - if (nFlags == 0xFFFF && hSysMenu == (WXHMENU) NULL) - { - wxMenuEvent event(wxEVT_MENU_HIGHLIGHT, -1); - event.SetEventObject( this ); - GetEventHandler()->ProcessEvent(event); - } - else if (nFlags != MF_SEPARATOR) - { - wxMenuEvent event(wxEVT_MENU_HIGHLIGHT, nItem); - event.SetEventObject( this ); - GetEventHandler()->ProcessEvent(event); - } - } - else if (m_currentChild) - { - m_currentChild->MSWOnMenuHighlight(nItem, nFlags, hSysMenu); - } -} - -long wxMDIParentFrame::MSWDefWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam) -{ - WXHWND clientWnd; - if ( GetClientWindow() ) - clientWnd = GetClientWindow()->GetHWND(); - else - clientWnd = 0; - - return DefFrameProc((HWND) GetHWND(), (HWND) clientWnd, message, wParam, lParam); -} - -bool wxMDIParentFrame::MSWProcessMessage(WXMSG* msg) -{ - if ((m_currentChild != (wxWindow *)NULL) && (m_currentChild->GetHWND() != (WXHWND) NULL) && m_currentChild->MSWProcessMessage(msg)) - return TRUE; - - return FALSE; -} - -bool wxMDIParentFrame::MSWTranslateMessage(WXMSG* msg) -{ - MSG *pMsg = (MSG *)msg; - - if ((m_currentChild != (wxWindow *)NULL) && (m_currentChild->GetHWND() != (WXHWND) NULL) && m_currentChild->MSWTranslateMessage(msg)) - return TRUE; - - if (m_acceleratorTable.Ok() && - ::TranslateAccelerator((HWND) GetHWND(), (HACCEL) m_acceleratorTable.GetHACCEL(), pMsg)) - return TRUE; - - if (pMsg->message == WM_KEYDOWN || pMsg->message == WM_SYSKEYDOWN) - { - if (::TranslateMDISysAccel((HWND) GetClientWindow()->GetHWND(), pMsg)) - return TRUE; - } - - return FALSE; -} - - -bool wxMDIParentFrame::MSWOnEraseBkgnd(WXHDC WXUNUSED(pDC)) -{ - return TRUE; -} - -extern wxWindow *wxWndHook; -extern wxList *wxWinHandleList; - -wxMDIChildFrame::wxMDIChildFrame(void) -{ -// m_active = FALSE; -} - -bool wxMDIChildFrame::Create(wxMDIParentFrame *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - m_defaultIcon = (WXHICON) (wxSTD_MDICHILDFRAME_ICON ? wxSTD_MDICHILDFRAME_ICON : wxDEFAULT_MDICHILDFRAME_ICON); - - SetName(name); - - if ( id > -1 ) - m_windowId = id; - else - m_windowId = (int)NewControlId(); - - if (parent) parent->AddChild(this); - - wxWndHook = this; - - int x = pos.x; - int y = pos.y; - int width = size.x; - int height = size.y; - - MDICREATESTRUCT mcs; - - mcs.szClass = wxMDIChildFrameClassName; - mcs.szTitle = title; - mcs.hOwner = wxGetInstance(); - if (x > -1) mcs.x = x; - else mcs.x = CW_USEDEFAULT; - - if (y > -1) mcs.y = y; - else mcs.y = CW_USEDEFAULT; - - if (width > -1) mcs.cx = width; - else mcs.cx = CW_USEDEFAULT; - - if (height > -1) mcs.cy = height; - else mcs.cy = CW_USEDEFAULT; - - DWORD msflags = WS_OVERLAPPED | WS_CLIPCHILDREN ; - if (style & wxMINIMIZE_BOX) - msflags |= WS_MINIMIZEBOX; - if (style & wxMAXIMIZE_BOX) - msflags |= WS_MAXIMIZEBOX; - if (style & wxTHICK_FRAME) - msflags |= WS_THICKFRAME; - if (style & wxSYSTEM_MENU) - msflags |= WS_SYSMENU; - if ((style & wxMINIMIZE) || (style & wxICONIZE)) - msflags |= WS_MINIMIZE; - if (style & wxMAXIMIZE) - msflags |= WS_MAXIMIZE; - if (style & wxCAPTION) - msflags |= WS_CAPTION; - - mcs.style = msflags; - - mcs.lParam = 0; - - DWORD Return = SendMessage((HWND) parent->GetClientWindow()->GetHWND(), - WM_MDICREATE, 0, (LONG)(LPSTR)&mcs); - - //handle = (HWND)LOWORD(Return); - // Must be the DWORRD for WIN32. And in 16 bits, HIWORD=0 (says Microsoft) - m_hWnd = (WXHWND)Return; - - // This gets reassigned so can't be stored -// m_windowId = GetWindowLong((HWND) m_hWnd, GWL_ID); - - wxWndHook = NULL; - wxWinHandleList->Append((long)GetHWND(), this); - - SetWindowLong((HWND) GetHWND(), 0, (long)this); - - wxModelessWindows.Append(this); - return TRUE; -} - -wxMDIChildFrame::~wxMDIChildFrame(void) -{ - MSWDestroyWindow(); - - ResetWindowStyle(NULL); -} - -// Set the client size (i.e. leave the calculation of borders etc. -// to wxWindows) -void wxMDIChildFrame::SetClientSize(int width, int height) -{ - HWND hWnd = (HWND) GetHWND(); - - RECT rect; - GetClientRect(hWnd, &rect); - - RECT rect2; - GetWindowRect(hWnd, &rect2); - - // Find the difference between the entire window (title bar and all) - // and the client area; add this to the new client size to move the - // window - int actual_width = rect2.right - rect2.left - rect.right + width; - int actual_height = rect2.bottom - rect2.top - rect.bottom + height; - - if (GetStatusBar()) - { - int sx, sy; - GetStatusBar()->GetSize(&sx, &sy); - actual_height += sy; - } - - POINT point; - point.x = rect2.left; - point.y = rect2.top; - - // If there's an MDI parent, must subtract the parent's top left corner - // since MoveWindow moves relative to the parent - wxMDIParentFrame *mdiParent = (wxMDIParentFrame *)GetParent(); - ::ScreenToClient((HWND) mdiParent->GetClientWindow()->GetHWND(), &point); - - MoveWindow(hWnd, point.x, point.y, actual_width, actual_height, (BOOL)TRUE); - - wxSizeEvent event(wxSize(width, height), m_windowId); - event.SetEventObject( this ); - GetEventHandler()->ProcessEvent(event); -} - -void wxMDIChildFrame::GetPosition(int *x, int *y) const -{ - RECT rect; - GetWindowRect((HWND) GetHWND(), &rect); - POINT point; - point.x = rect.left; - point.y = rect.top; - - // Since we now have the absolute screen coords, - // if there's a parent we must subtract its top left corner - wxMDIParentFrame *mdiParent = (wxMDIParentFrame *)GetParent(); - ::ScreenToClient((HWND) mdiParent->GetClientWindow()->GetHWND(), &point); - - *x = point.x; - *y = point.y; -} - -void wxMDIChildFrame::SetMenuBar(wxMenuBar *menu_bar) -{ - if (!menu_bar) - { - m_frameMenuBar = NULL; - return; - } - - if (menu_bar->m_menuBarFrame) - return; - - int i; - HMENU menu = CreateMenu(); - - for (i = 0; i < menu_bar->m_menuCount; i ++) - { - HMENU popup = (HMENU)menu_bar->m_menus[i]->m_hMenu; - // - // After looking Bounds Checker result, it seems that all - // menus must be individually destroyed. So, don't reset m_hMenu, - // to allow ~wxMenu to do the job. - // - menu_bar->m_menus[i]->m_savehMenu = (WXHMENU) popup; - // Uncommenting for the moment... JACS - menu_bar->m_menus[i]->m_hMenu = 0; - ::AppendMenu((HMENU) menu, MF_POPUP | MF_STRING, (UINT)popup, menu_bar->m_titles[i]); - } - - menu_bar->m_hMenu = (WXHMENU)menu; - if (m_frameMenuBar) - delete m_frameMenuBar; - - this->m_hMenu = (WXHMENU) menu; - - wxMDIParentFrame *parent = (wxMDIParentFrame *)GetParent(); - - parent->m_parentFrameActive = FALSE; - HMENU subMenu = GetSubMenu((HMENU) parent->GetWindowMenu(), 0); - - // Try to insert Window menu in front of Help, otherwise append it. - int N = GetMenuItemCount(menu); - bool success = FALSE; - for (i = 0; i < N; i++) - { - char buf[100]; - int chars = GetMenuString(menu, i, buf, 100, MF_BYPOSITION); - if ((chars > 0) && (strcmp(buf, "&Help") == 0 || - strcmp(buf, "Help") == 0)) - { - success = TRUE; - InsertMenu(menu, i, MF_BYPOSITION | MF_POPUP | MF_STRING, - (UINT)subMenu, "&Window"); - break; - } - } - if (!success) - AppendMenu(menu, MF_POPUP, - (UINT)subMenu, - "&Window"); -#ifdef __WIN32__ - SendMessage((HWND) parent->GetClientWindow()->GetHWND(), WM_MDISETMENU, - (WPARAM)menu, - (LPARAM)subMenu); -#else - SendMessage((HWND) parent->GetClientWindow()->GetHWND(), WM_MDISETMENU, 0, - MAKELPARAM(menu, subMenu)); -#endif - - DrawMenuBar((HWND) parent->GetHWND()); - m_frameMenuBar = menu_bar; - menu_bar->m_menuBarFrame = this; -} - -// MDI operations -void wxMDIChildFrame::Maximize(void) -{ - wxMDIParentFrame *parent = (wxMDIParentFrame *)GetParent(); - if ( parent && parent->GetClientWindow() ) - ::SendMessage( (HWND) parent->GetClientWindow()->GetHWND(), WM_MDIMAXIMIZE, (WPARAM) (HWND) GetHWND(), 0); -} - -void wxMDIChildFrame::Restore(void) -{ - wxMDIParentFrame *parent = (wxMDIParentFrame *)GetParent(); - if ( parent && parent->GetClientWindow() ) - ::SendMessage( (HWND) parent->GetClientWindow()->GetHWND(), WM_MDIRESTORE, (WPARAM) (HWND) GetHWND(), 0); -} - -void wxMDIChildFrame::Activate(void) -{ - wxMDIParentFrame *parent = (wxMDIParentFrame *)GetParent(); - if ( parent && parent->GetClientWindow() ) - ::SendMessage( (HWND) parent->GetClientWindow()->GetHWND(), WM_MDIACTIVATE, (WPARAM) (HWND) GetHWND(), 0); -} - -static HWND invalidHandle = 0; -void wxMDIChildFrame::MSWOnSize(int x, int y, WXUINT id) -{ - if (!GetHWND()) return; - - if (invalidHandle == (HWND) GetHWND()) - { - return; - } - - (void)MSWDefWindowProc(m_lastMsg, m_lastWParam, m_lastLParam); - - switch (id) - { - case SIZEFULLSCREEN: - case SIZENORMAL: - m_iconized = FALSE; - break; - case SIZEICONIC: - m_iconized = TRUE; - break; - } - - if (!m_iconized) - { - // forward WM_SIZE to status bar control -#if wxUSE_NATIVE_STATUSBAR - if (m_frameStatusBar && m_frameStatusBar->IsKindOf(CLASSINFO(wxStatusBar95))) - { - wxSizeEvent event(wxSize(x, y), m_frameStatusBar->GetId()); - event.SetEventObject( m_frameStatusBar ); - - ((wxStatusBar95 *)m_frameStatusBar)->OnSize(event); - } -#endif - - PositionStatusBar(); - PositionToolBar(); - - wxWindow::MSWOnSize(x, y, id); - } -} - -bool wxMDIChildFrame::MSWOnCommand(WXWORD id, WXWORD cmd, WXHWND control) -{ -// if ((cmd == 0) && GetHWND()) - if (GetHWND()) - { - // In case it's e.g. a toolbar. - wxWindow *win = wxFindWinFromHandle(control); - if (win) - return win->MSWCommand(cmd, id); - - if (wxCurrentPopupMenu) - { - wxMenu *popupMenu = wxCurrentPopupMenu; - wxCurrentPopupMenu = NULL; - if (popupMenu->MSWCommand(cmd, id)) - return TRUE; - } - - if (GetMenuBar() && GetMenuBar()->FindItemForId(id)) - { - ProcessCommand(id); - return TRUE; - } - else - return FALSE; - return TRUE; - } - else - return FALSE; -} - -long wxMDIChildFrame::MSWDefWindowProc(WXUINT message, WXUINT wParam, WXLPARAM lParam) -{ - if (GetHWND()) - return DefMDIChildProc((HWND) GetHWND(), (UINT) message, (WPARAM) wParam, (LPARAM) lParam); - else return 0; -} - -bool wxMDIChildFrame::MSWProcessMessage(WXMSG *msg) -{ - return FALSE; -} - -bool wxMDIChildFrame::MSWTranslateMessage(WXMSG* msg) -{ - MSG *pMsg = (MSG *)msg; - if (m_acceleratorTable.Ok()) - { - wxFrame *parent = (wxFrame *)GetParent(); - HWND parent_hwnd = (HWND) parent->GetHWND(); - return (::TranslateAccelerator(parent_hwnd, (HACCEL) m_acceleratorTable.GetHACCEL(), pMsg) != 0); - } - - return FALSE; -} - -long wxMDIChildFrame::MSWOnMDIActivate(long activate, WXHWND WXUNUSED(one), WXHWND WXUNUSED(two)) -{ - wxMDIParentFrame *parent = (wxMDIParentFrame *)GetParent(); - HMENU parent_menu = (HMENU) parent->GetWinMenu(); - HMENU child_menu = (HMENU) GetWinMenu(); - - if (activate) - { -// m_active = TRUE; - parent->m_currentChild = this; - if (child_menu) - { - parent->m_parentFrameActive = FALSE; - HMENU subMenu = GetSubMenu((HMENU) parent->GetWindowMenu(), 0); -#ifdef __WIN32__ - ::SendMessage((HWND) parent->GetClientWindow()->GetHWND(), WM_MDISETMENU, - (WPARAM)child_menu, - (LPARAM)subMenu); -#else - ::SendMessage((HWND) parent->GetClientWindow()->GetHWND(), WM_MDISETMENU, 0, - MAKELONG(child_menu, subMenu)); -#endif - - ::DrawMenuBar((HWND) parent->GetHWND()); - } - wxActivateEvent event(wxEVT_ACTIVATE, TRUE, m_windowId); - event.SetEventObject( this ); - GetEventHandler()->ProcessEvent(event); - } - else - { - if (parent->m_currentChild == this) - parent->m_currentChild = NULL; - - wxActivateEvent event(wxEVT_ACTIVATE, FALSE, m_windowId); - event.SetEventObject( this ); - GetEventHandler()->ProcessEvent(event); - -// m_active = FALSE; - if (parent_menu) - { - parent->m_parentFrameActive = TRUE; - HMENU subMenu = GetSubMenu((HMENU) parent->GetWindowMenu(), 0); -#ifdef __WIN32__ - ::SendMessage((HWND) parent->GetClientWindow()->GetHWND(), WM_MDISETMENU, - (WPARAM)parent_menu, - (LPARAM)subMenu); -#else - ::SendMessage((HWND) parent->GetClientWindow()->GetHWND(), WM_MDISETMENU, 0, - MAKELONG(parent_menu, subMenu)); -#endif - - ::DrawMenuBar((HWND) parent->GetHWND()); - } - } - bool flag = (activate != 0); - wxActivateEvent event(wxEVT_ACTIVATE, flag, m_windowId); - event.SetEventObject( this ); - GetEventHandler()->ProcessEvent(event); - return 0; -} - -void wxMDIChildFrame::MSWDestroyWindow(void) -{ - MSWDetachWindowMenu(); - invalidHandle = (HWND) GetHWND(); - - wxMDIParentFrame *parent = (wxMDIParentFrame *)GetParent(); - - // Must make sure this handle is invalidated (set to NULL) - // since all sorts of things could happen after the - // child client is destroyed, but before the wxFrame is - // destroyed. - - HWND oldHandle = (HWND)GetHWND(); -#ifdef __WIN32__ - SendMessage((HWND) parent->GetClientWindow()->GetHWND(), WM_MDIDESTROY, (WPARAM)oldHandle, (LPARAM)0); -#else - SendMessage((HWND) parent->GetClientWindow()->GetHWND(), WM_MDIDESTROY, (HWND)oldHandle, 0); -#endif - invalidHandle = 0; - - if (m_hMenu) - { - ::DestroyMenu((HMENU) m_hMenu); - m_hMenu = 0; - } - m_hWnd = 0; -} - -// Change the client window's extended style so we don't -// get a client edge style when a child is maximised (a double -// border looks silly.) -bool wxMDIChildFrame::ResetWindowStyle(void *vrect) -{ -#if defined(__WIN95__) - RECT *rect = (RECT *)vrect; - wxMDIParentFrame* pFrameWnd = (wxMDIParentFrame *)GetParent(); - wxMDIChildFrame* pChild = pFrameWnd->GetActiveChild(); - if (!pChild || (pChild == this)) - { - DWORD dwStyle = ::GetWindowLong((HWND) pFrameWnd->GetClientWindow()->GetHWND(), GWL_EXSTYLE); - DWORD dwThisStyle = ::GetWindowLong((HWND) GetHWND(), GWL_STYLE); - DWORD dwNewStyle = dwStyle; - if (pChild != NULL && (dwThisStyle & WS_MAXIMIZE)) - dwNewStyle &= ~(WS_EX_CLIENTEDGE); - else - dwNewStyle |= WS_EX_CLIENTEDGE; - - if (dwStyle != dwNewStyle) - { - ::RedrawWindow((HWND) pFrameWnd->GetClientWindow()->GetHWND(), NULL, NULL, RDW_INVALIDATE | RDW_ALLCHILDREN); - ::SetWindowLong((HWND) pFrameWnd->GetClientWindow()->GetHWND(), GWL_EXSTYLE, dwNewStyle); - ::SetWindowPos((HWND) pFrameWnd->GetClientWindow()->GetHWND(), NULL, 0, 0, 0, 0, - SWP_FRAMECHANGED | SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_NOCOPYBITS); - if (rect) - ::GetClientRect((HWND) pFrameWnd->GetClientWindow()->GetHWND(), rect); - return TRUE; - } - } - return FALSE; -#else - return FALSE; -#endif -} - -void wxMDIChildFrame::MSWOnWindowPosChanging(void *pos) -{ - WINDOWPOS *lpPos = (WINDOWPOS *)pos; -#if defined(__WIN95__) - if (!(lpPos->flags & SWP_NOSIZE)) - { - RECT rectClient; - DWORD dwExStyle = ::GetWindowLong((HWND) GetHWND(), GWL_EXSTYLE); - DWORD dwStyle = ::GetWindowLong((HWND) GetHWND(), GWL_STYLE); - if (ResetWindowStyle((void *) & rectClient) && (dwStyle & WS_MAXIMIZE)) - { - ::AdjustWindowRectEx(&rectClient, dwStyle, FALSE, dwExStyle); - lpPos->x = rectClient.left; - lpPos->y = rectClient.top; - lpPos->cx = rectClient.right - rectClient.left; - lpPos->cy = rectClient.bottom - rectClient.top; - } - wxMDIParentFrame* pFrameWnd = (wxMDIParentFrame *)GetParent(); - if (pFrameWnd && pFrameWnd->GetToolBar()) - { - pFrameWnd->GetToolBar()->Refresh(); - } - } -#endif - Default(); -} - -// Client window -wxMDIClientWindow::wxMDIClientWindow(void) -{ - m_scrollX = 0; - m_scrollY = 0; -} - -wxMDIClientWindow::~wxMDIClientWindow(void) -{ -} - -bool wxMDIClientWindow::CreateClient(wxMDIParentFrame *parent, long style) -{ - m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE); - - CLIENTCREATESTRUCT ccs; - m_windowStyle = style; - m_windowParent = parent; - - ccs.hWindowMenu = (HMENU) parent->GetWindowMenu(); - ccs.idFirstChild = wxFIRST_MDI_CHILD; - - DWORD msStyle = WS_VISIBLE | WS_CHILD | WS_CLIPCHILDREN ; - if ( parent->GetWindowStyleFlag() & wxHSCROLL ) - msStyle |= WS_HSCROLL; - if ( parent->GetWindowStyleFlag() & wxVSCROLL ) - msStyle |= WS_VSCROLL ; - -#if defined(__WIN95__) - DWORD exStyle = WS_EX_CLIENTEDGE; -#else - DWORD exStyle = 0; -#endif - - wxWndHook = this; - m_hWnd = (WXHWND) ::CreateWindowEx(exStyle, "mdiclient", NULL, - msStyle, 0, 0, 0, 0, (HWND) parent->GetHWND(), NULL, - wxGetInstance(), (LPSTR)(LPCLIENTCREATESTRUCT)&ccs); - SubclassWin(m_hWnd); - wxWndHook = NULL; - - return (m_hWnd != 0) ; -} - -// Window procedure: here for debugging purposes -long wxMDIClientWindow::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) -{ - return wxWindow::MSWWindowProc(nMsg, wParam, lParam); -// return MSWDefWindowProc(nMsg, wParam, lParam); -} - -long wxMDIClientWindow::MSWDefWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) -{ - if ( MSWGetOldWndProc() != 0) - return ::CallWindowProc(CASTWNDPROC MSWGetOldWndProc(), (HWND) GetHWND(), (UINT) nMsg, (WPARAM) wParam, (LPARAM) lParam); - else - return ::DefWindowProc((HWND) m_hWnd, (UINT) nMsg, (WPARAM) wParam, (LPARAM) lParam); -} - -// Explicitly call default scroll behaviour -void wxMDIClientWindow::OnScroll(wxScrollEvent& event) -{ - // Note: for client windows, the scroll position is not set in - // WM_HSCROLL, WM_VSCROLL, so we can't easily determine what - // scroll position we're at. - // This makes it hard to paint patterns or bitmaps in the background, - // and have the client area scrollable as well. - - if ( event.GetOrientation() == wxHORIZONTAL ) - m_scrollX = event.GetPosition(); // Always returns zero! - else - m_scrollY = event.GetPosition(); // Always returns zero! - - Default(); -} - -// Should hand the message to the default proc -long wxMDIClientWindow::MSWOnMDIActivate(long bActivate, WXHWND, WXHWND) -{ - return Default(); -} - diff --git a/src/msw/menu.cpp b/src/msw/menu.cpp deleted file mode 100644 index 2278e11d3f..0000000000 --- a/src/msw/menu.cpp +++ /dev/null @@ -1,947 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: menu.cpp -// Purpose: wxMenu, wxMenuBar, wxMenuItem -// Author: Julian Smart -// Modified by: Vadim Zeitlin -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "menu.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/frame.h" -#include "wx/menu.h" -#include "wx/utils.h" -#endif - -#if wxUSE_OWNER_DRAWN - #include "wx/ownerdrw.h" -#endif - -#include "wx/msw/private.h" -#include "wx/msw/menu.h" -#include "wx/menuitem.h" -#include "wx/log.h" - -// other standard headers -// ---------------------- -#include - -// ---------------------------------------------------------------------------- -// constants -// ---------------------------------------------------------------------------- - -// the (popup) menu title has this special id -static const int idMenuTitle = -2; - -// ---------------------------------------------------------------------------- -// wxWindows macros -// ---------------------------------------------------------------------------- -#if !USE_SHARED_LIBRARY - IMPLEMENT_DYNAMIC_CLASS(wxMenu, wxEvtHandler) - IMPLEMENT_DYNAMIC_CLASS(wxMenuBar, wxEvtHandler) -#endif - -// ============================================================================ -// implementation -// ============================================================================ - -// Menus - -// Construct a menu with optional title (then use append) -wxMenu::wxMenu(const wxString& Title, const wxFunction func) -{ - m_title = Title; - m_parent = NULL; - m_eventHandler = this; - m_pInvokingWindow = NULL; - m_doBreak = FALSE ; - m_noItems = 0; - m_menuBar = NULL; - m_hMenu = (WXHMENU) CreatePopupMenu(); - m_savehMenu = 0 ; - m_topLevelMenu = this; - m_clientData = (void*) NULL; - - if (m_title != "") - { - Append(idMenuTitle, m_title) ; - AppendSeparator() ; - } - - Callback(func); -} - -// The wxWindow destructor will take care of deleting the submenus. -wxMenu::~wxMenu() -{ - if (m_hMenu) - DestroyMenu((HMENU) m_hMenu); - m_hMenu = 0; - - // Windows seems really bad on Menu de-allocation... - // After many try, here is what I do: RemoveMenu() will ensure - // that popup are "disconnected" from their parent; then call - // delete method on each child (which in turn do a recursive job), - // and finally, DestroyMenu() - // - // With that, BoundCheckers is happy, and no complaints... -/* - int N = 0 ; - if (m_hMenu) - N = GetMenuItemCount(m_hMenu); - int i; - for (i = N-1; i >= 0; i--) - RemoveMenu(m_hMenu, i, MF_BYPOSITION); -*/ - - // How is deleting submenus in this loop any different from deleting - // the submenus in the children list, via ~wxWindow ? - // I'll reinstate this deletion for now and remove addition - // from children list (which doesn't exist now) - // Julian 1/3/97 - wxNode *node = m_menuItems.First(); - while (node) - { - wxMenuItem *item = (wxMenuItem *)node->Data(); - - // Delete child menus. - // Beware: they must not be appended to children list!!! - // (because order of delete is significant) - if (item->GetSubMenu()) - item->DeleteSubMenu(); - - wxNode *next = node->Next(); - delete item; - delete node; - node = next; - } -/* - if (m_hMenu) - DestroyMenu(m_hMenu); - m_hMenu = 0; -*/ -} - -void wxMenu::Break() -{ - m_doBreak = TRUE ; -} - -// function appends a new item or submenu to the menu -void wxMenu::Append(wxMenuItem *pItem) -{ - wxCHECK_RET( pItem != NULL, "can't append NULL item to the menu" ); - - m_menuItems.Append(pItem); - - UINT flags = 0; - - if ( m_doBreak ) { - flags |= MF_MENUBREAK; - m_doBreak = FALSE; - } - - if ( pItem->IsSeparator() ) { - flags |= MF_SEPARATOR; - } - - // id is the numeric id for normal menu items and HMENU for submenus - UINT id; - wxMenu *SubMenu = pItem->GetSubMenu(); - if ( SubMenu != NULL ) { - wxASSERT( SubMenu->m_hMenu != (WXHMENU) NULL ); - - id = (UINT)SubMenu->m_hMenu; - - SubMenu->m_topLevelMenu = m_topLevelMenu; - SubMenu->m_parent = this; - SubMenu->m_savehMenu = (WXHMENU)id; - SubMenu->m_hMenu = 0; - - flags |= MF_POPUP; - } - else { - id = pItem->GetId(); - } - - LPCSTR pData; - -#if wxUSE_OWNER_DRAWN - if ( pItem->IsOwnerDrawn() ) { // want to get {Measure|Draw}Item messages? - // item draws itself, pass pointer to it in data parameter - flags |= MF_OWNERDRAW; - pData = (LPCSTR)pItem; - } - else -#endif - { - // menu is just a normal string (passed in data parameter) - flags |= MF_STRING; - pData = pItem->GetName(); - } - - // visually select the menu title - if ( id == idMenuTitle ) - { - // TODO use SetMenuItemInfo(MFS_DEFAULT) to put it in bold face - } - - HMENU hMenu = (HMENU)((m_hMenu == 0) ? m_savehMenu : m_hMenu); - if ( !AppendMenu(hMenu, flags, id, pData) ) - { - wxLogLastError("AppendMenu"); - } - - m_noItems++; -} - -void wxMenu::AppendSeparator() -{ - Append(new wxMenuItem(this, ID_SEPARATOR)); -} - -// Pullright item -void wxMenu::Append(int Id, const wxString& label, wxMenu *SubMenu, - const wxString& helpString) -{ - Append(new wxMenuItem(this, Id, label, helpString, FALSE, SubMenu)); -} - -// Ordinary menu item -void wxMenu::Append(int Id, const wxString& label, - const wxString& helpString, bool checkable) -{ - // 'checkable' parameter is useless for Windows. - Append(new wxMenuItem(this, Id, label, helpString, checkable)); -} - -void wxMenu::Delete(int id) -{ - wxNode *node; - int pos; - HMENU menu; - - wxMenuItem *item = NULL; - for (pos = 0, node = m_menuItems.First(); node; node = node->Next(), pos++) { - item = (wxMenuItem *)node->Data(); - if (item->GetId() == id) - break; - } - - if (!node) - return; - - menu = (HMENU)(m_hMenu ? m_hMenu : m_savehMenu); - - wxMenu *pSubMenu = item->GetSubMenu(); - if ( pSubMenu != NULL ) { - RemoveMenu(menu, (UINT)pos, MF_BYPOSITION); - pSubMenu->m_hMenu = pSubMenu->m_savehMenu; - pSubMenu->m_savehMenu = 0; - pSubMenu->m_parent = NULL; - // RemoveChild(item->subMenu); - pSubMenu->m_topLevelMenu = NULL; - // TODO: Why isn't subMenu deleted here??? - // Will put this in for now. Assuming this is supposed - // to delete the menu, not just remove it. - item->DeleteSubMenu(); - } - else { - DeleteMenu(menu, (UINT)pos, MF_BYPOSITION); - } - - m_menuItems.DeleteNode(node); - delete item; -} - -void wxMenu::Enable(int Id, bool Flag) -{ - wxMenuItem *item = FindItemForId(Id); - wxCHECK_RET( item != NULL, "can't enable non-existing menu item" ); - - item->Enable(Flag); -} - -bool wxMenu::Enabled(int Id) const -{ - wxMenuItem *item = FindItemForId(Id); - wxCHECK( item != NULL, FALSE ); - - return item->IsEnabled(); -} - -void wxMenu::Check(int Id, bool Flag) -{ - wxMenuItem *item = FindItemForId(Id); - wxCHECK_RET( item != NULL, "can't get status of non-existing menu item" ); - - item->Check(Flag); -} - -bool wxMenu::Checked(int Id) const -{ - wxMenuItem *item = FindItemForId(Id); - wxCHECK( item != NULL, FALSE ); - - return item->IsChecked(); -} - -void wxMenu::SetTitle(const wxString& label) -{ - bool hasNoTitle = m_title.IsEmpty(); - m_title = label; - - HMENU hMenu = (HMENU)((m_hMenu == 0) ? m_savehMenu : m_hMenu); - - if ( hasNoTitle ) - { - if ( !label.IsEmpty() ) - { - if ( !InsertMenu(hMenu, 0u, MF_BYPOSITION | MF_STRING, - (unsigned)idMenuTitle, m_title) || - !InsertMenu(hMenu, 1u, MF_BYPOSITION, (unsigned)-1, NULL) ) - { - wxLogLastError("InsertMenu"); - } - } - } - else - { - if ( label.IsEmpty() ) - { - // remove the title and the separator after it - if ( !RemoveMenu(hMenu, 0, MF_BYPOSITION) || - !RemoveMenu(hMenu, 0, MF_BYPOSITION) ) - { - wxLogLastError("RemoveMenu"); - } - } - else - { - // modify the title - if ( !ModifyMenu(hMenu, 0u, - MF_BYPOSITION | MF_STRING, - (unsigned)idMenuTitle, m_title) ) - { - wxLogLastError("ModifyMenu"); - } - } - } - - // TODO use SetMenuItemInfo(MFS_DEFAULT) to put it in bold face -} - -const wxString wxMenu::GetTitle() const -{ - return m_title; -} - -void wxMenu::SetLabel(int Id, const wxString& label) -{ - wxMenuItem *item = FindItemForId(Id) ; - if (item==NULL) - return; - - if (item->GetSubMenu()==NULL) - { - if (m_hMenu) - { - UINT was_flag = GetMenuState((HMENU)m_hMenu,Id,MF_BYCOMMAND) ; - ModifyMenu((HMENU)m_hMenu,Id,MF_BYCOMMAND|MF_STRING|was_flag,Id,(const char *)label) ; - } - else if (m_savehMenu) - { - UINT was_flag = GetMenuState((HMENU)m_savehMenu,Id,MF_BYCOMMAND) ; - ModifyMenu((HMENU)m_savehMenu,Id,MF_BYCOMMAND|MF_STRING|was_flag,Id,(const char *)label) ; - } - } - else - { - wxMenu *father = item->GetSubMenu()->m_topLevelMenu ; - wxNode *node = father->m_menuItems.First() ; - int i = 0 ; - while (node) - { - wxMenuItem *matched = (wxMenuItem*)node->Data() ; - if (matched==item) - break ; - i++ ; - node = node->Next() ; - } - // Here, we have the position. - ModifyMenu((HMENU)father->m_savehMenu,i, - MF_BYPOSITION|MF_STRING|MF_POPUP, - (UINT)item->GetSubMenu()->m_savehMenu,(const char *)label) ; - } - item->SetName(label); -} - -wxString wxMenu::GetLabel(int id) const -{ -/* - static char tmp[128] ; - int len; - if (m_hMenu) - len = GetMenuString((HMENU)m_hMenu,Id,tmp,WXSIZEOF(tmp) - 1,MF_BYCOMMAND); - else if (m_savehMenu) - len = GetMenuString((HMENU)m_savehMenu,Id,tmp,WXSIZEOF(tmp) - 1,MF_BYCOMMAND); - else - len = 0 ; - tmp[len] = '\0' ; - return wxString(tmp) ; - -*/ - wxMenuItem *pItem = FindItemForId(id) ; - if (pItem) - return pItem->GetName() ; - else - return wxEmptyString; -} - -bool wxMenu::MSWCommand(WXUINT WXUNUSED(param), WXWORD id) -{ - wxCommandEvent event(wxEVT_COMMAND_MENU_SELECTED); - event.SetEventObject( this ); - event.SetId( id ); - event.SetInt( id ); - ProcessCommand(event); - return TRUE; -} - -// Finds the item id matching the given string, -1 if not found. -int wxMenu::FindItem (const wxString& itemString) const -{ - char buf1[200]; - char buf2[200]; - wxStripMenuCodes ((char *)(const char *)itemString, buf1); - - for (wxNode * node = m_menuItems.First (); node; node = node->Next ()) - { - wxMenuItem *item = (wxMenuItem *) node->Data (); - if (item->GetSubMenu()) - { - int ans = item->GetSubMenu()->FindItem(itemString); - if (ans > -1) - return ans; - } - if ( !item->IsSeparator() ) - { - wxStripMenuCodes((char *)item->GetName().c_str(), buf2); - if (strcmp(buf1, buf2) == 0) - return item->GetId(); - } - } - - return -1; -} - -wxMenuItem *wxMenu::FindItemForId(int itemId, wxMenu ** itemMenu) const -{ - if (itemMenu) - *itemMenu = NULL; - for (wxNode * node = m_menuItems.First (); node; node = node->Next ()) - { - wxMenuItem *item = (wxMenuItem *) node->Data (); - - if (item->GetId() == itemId) - { - if (itemMenu) - *itemMenu = (wxMenu *) this; - return item; - } - - if (item->GetSubMenu()) - { - wxMenuItem *ans = item->GetSubMenu()->FindItemForId (itemId, itemMenu); - if (ans) - return ans; - } - } - - if (itemMenu) - *itemMenu = NULL; - return NULL; -} - -void wxMenu::SetHelpString(int itemId, const wxString& helpString) -{ - wxMenuItem *item = FindItemForId (itemId); - if (item) - item->SetHelp(helpString); -} - -wxString wxMenu::GetHelpString (int itemId) const -{ - wxMenuItem *item = FindItemForId (itemId); - if (item) - return item->GetHelp(); - else - return wxEmptyString; -} - -void wxMenu::ProcessCommand(wxCommandEvent & event) -{ - bool processed = FALSE; - - // Try a callback - if (m_callback) - { - (void)(*(m_callback))(*this, event); - processed = TRUE; - } - - // Try the menu's event handler - if ( !processed && GetEventHandler()) - { - processed = GetEventHandler()->ProcessEvent(event); - } - - // Try the window the menu was popped up from (and up - // through the hierarchy) - if ( !processed && GetInvokingWindow()) - processed = GetInvokingWindow()->GetEventHandler()->ProcessEvent(event); -} - -extern wxMenu *wxCurrentPopupMenu; -bool wxWindow::PopupMenu(wxMenu *menu, int x, int y) -{ - menu->SetInvokingWindow(this); - - HWND hWnd = (HWND) GetHWND(); - HMENU hMenu = (HMENU)menu->m_hMenu; - POINT point; - point.x = x; - point.y = y; - ::ClientToScreen(hWnd, &point); - wxCurrentPopupMenu = menu; - ::TrackPopupMenu(hMenu, TPM_RIGHTBUTTON, point.x, point.y, 0, hWnd, NULL); - wxYield(); - wxCurrentPopupMenu = NULL; - - menu->SetInvokingWindow(NULL); - - return TRUE; -} - -// Menu Bar -wxMenuBar::wxMenuBar() -{ - m_eventHandler = this; - - m_menuCount = 0; - m_menus = NULL; - m_titles = NULL; - m_menuBarFrame = NULL; - m_hMenu = 0; -} - -wxMenuBar::wxMenuBar(int N, wxMenu *Menus[], const wxString Titles[]) -{ - m_eventHandler = this; - m_menuCount = N; - m_menus = Menus; - m_titles = new wxString[N]; - int i; - for ( i = 0; i < N; i++ ) - m_titles[i] = Titles[i]; - m_menuBarFrame = NULL; - for (i = 0; i < N; i++) - m_menus[i]->m_menuBar = (wxMenuBar *) this; - - m_hMenu = 0; -} - -wxMenuBar::~wxMenuBar() -{ - // In fact, don't want menu to be destroyed before MDI - // shuffling has taken place. Let it be destroyed - // automatically when the window is destroyed. - -// DestroyMenu(menu); -// m_hMenu = NULL; - - int i; -/* - // See remarks in ::~wxMenu() method - // BEWARE - this may interfere with MDI fixes, so - // may need to remove - int N = 0 ; - - if (m_menuBarFrame && ((m_menuBarFrame->GetWindowStyleFlag() & wxSDI) == wxSDI)) - { - if (menu) - N = GetMenuItemCount(menu) ; - for (i = N-1; i >= 0; i--) - RemoveMenu(menu, i, MF_BYPOSITION); - } -*/ - for (i = 0; i < m_menuCount; i++) - { - delete m_menus[i]; - } - delete[] m_menus; - delete[] m_titles; - -/* Don't destroy menu here, in case we're MDI and - need to do some shuffling with VALID menu handles. - if (menu) - DestroyMenu(menu); - m_hMenu = 0; -*/ -} - -// Must only be used AFTER menu has been attached to frame, -// otherwise use individual menus to enable/disable items -void wxMenuBar::Enable(int Id, bool Flag) -{ - int ms_flag; - if (Flag) - ms_flag = MF_ENABLED; - else - ms_flag = MF_GRAYED; - - wxMenu *itemMenu = NULL; - wxMenuItem *item = FindItemForId(Id, &itemMenu) ; - if (!item) - return; - - if (itemMenu->m_hMenu) - EnableMenuItem((HMENU)itemMenu->m_hMenu, Id, MF_BYCOMMAND | ms_flag); - else if (itemMenu->m_savehMenu) - EnableMenuItem((HMENU)itemMenu->m_savehMenu, Id, MF_BYCOMMAND | ms_flag); - -} - -void wxMenuBar::EnableTop(int pos, bool flag) -{ - int ms_flag; - if (flag) - ms_flag = MF_ENABLED; - else - ms_flag = MF_GRAYED; - - EnableMenuItem((HMENU)m_hMenu, pos, MF_BYPOSITION | ms_flag); - DrawMenuBar((HWND) m_menuBarFrame->GetHWND()) ; -} - -// Must only be used AFTER menu has been attached to frame, -// otherwise use individual menus -void wxMenuBar::Check(int Id, bool Flag) -{ - wxMenu *itemMenu = NULL; - wxMenuItem *item = FindItemForId(Id, &itemMenu) ; - if (!item) - return; - - if (!item->IsCheckable()) - return ; - int ms_flag; - if (Flag) - ms_flag = MF_CHECKED; - else - ms_flag = MF_UNCHECKED; - - if (itemMenu->m_hMenu) - CheckMenuItem((HMENU)itemMenu->m_hMenu, Id, MF_BYCOMMAND | ms_flag); - else if (itemMenu->m_savehMenu) - CheckMenuItem((HMENU)itemMenu->m_savehMenu, Id, MF_BYCOMMAND | ms_flag); - -// CheckMenuItem((HMENU)m_hMenu, Id, MF_BYCOMMAND | ms_flag); -} - -bool wxMenuBar::Checked(int Id) const -{ - wxMenu *itemMenu = NULL; - wxMenuItem *item = FindItemForId(Id, &itemMenu) ; - if (!item) - return FALSE; - - int Flag = 0; - - if (itemMenu->m_hMenu) - Flag=GetMenuState((HMENU)itemMenu->m_hMenu, Id, MF_BYCOMMAND) ; - else if (itemMenu->m_savehMenu) - Flag=GetMenuState((HMENU)itemMenu->m_savehMenu, Id, MF_BYCOMMAND) ; - -// Flag=GetMenuState((HMENU)m_hMenu, Id, MF_BYCOMMAND) ; - - if (Flag&MF_CHECKED) - return TRUE ; - else - return FALSE ; -} - -bool wxMenuBar::Enabled(int Id) const -{ - wxMenu *itemMenu = NULL; - wxMenuItem *item = FindItemForId(Id, &itemMenu) ; - if (!item) - return FALSE; - - int Flag ; - - if (itemMenu->m_hMenu) - Flag=GetMenuState((HMENU)itemMenu->m_hMenu, Id, MF_BYCOMMAND) ; - else if (itemMenu->m_savehMenu) - Flag=GetMenuState((HMENU)itemMenu->m_savehMenu, Id, MF_BYCOMMAND) ; - - if (Flag&MF_ENABLED) - return TRUE ; - else - return FALSE ; -} - - -void wxMenuBar::SetLabel(int Id, const wxString& label) -{ - wxMenu *itemMenu = NULL; - wxMenuItem *item = FindItemForId(Id, &itemMenu) ; - - if (!item) - return; - - if (itemMenu->m_hMenu) - { - UINT was_flag = GetMenuState((HMENU)itemMenu->m_hMenu,Id,MF_BYCOMMAND) ; - ModifyMenu((HMENU)itemMenu->m_hMenu,Id,MF_BYCOMMAND|MF_STRING|was_flag,Id,(const char *)label) ; - } - else if (itemMenu->m_savehMenu) - { - UINT was_flag = GetMenuState((HMENU)itemMenu->m_savehMenu,Id,MF_BYCOMMAND) ; - ModifyMenu((HMENU)itemMenu->m_savehMenu,Id,MF_BYCOMMAND|MF_STRING|was_flag,Id,(const char *)label) ; - } -} - -wxString wxMenuBar::GetLabel(int Id) const -{ - wxMenu *itemMenu = NULL; - wxMenuItem *item = FindItemForId(Id, &itemMenu) ; - - if (!item) - return wxString(""); - - static char tmp[128] ; - int len = 0; - if (itemMenu->m_hMenu) - { - len = GetMenuString((HMENU)itemMenu->m_hMenu,Id,tmp,127,MF_BYCOMMAND) ; - } - else if (itemMenu->m_savehMenu) - { - len = GetMenuString((HMENU)itemMenu->m_savehMenu,Id,tmp,127,MF_BYCOMMAND) ; - } - -// int len = GetMenuString((HMENU)m_hMenu,Id,tmp,127,MF_BYCOMMAND) ; - tmp[len] = '\0' ; - return wxString(tmp) ; -} - -void wxMenuBar::SetLabelTop(int pos, const wxString& label) -{ - UINT was_flag = GetMenuState((HMENU)m_hMenu,pos,MF_BYPOSITION) ; - if (was_flag&MF_POPUP) - { - was_flag &= 0xff ; - HMENU popup = GetSubMenu((HMENU)m_hMenu,pos) ; - ModifyMenu((HMENU)m_hMenu,pos,MF_BYPOSITION|MF_STRING|was_flag,(UINT)popup,(const char *)label) ; - } - else - ModifyMenu((HMENU)m_hMenu,pos,MF_BYPOSITION|MF_STRING|was_flag,pos,(const char *)label) ; -} - -wxString wxMenuBar::GetLabelTop(int pos) const -{ - static char tmp[128] ; - int len = GetMenuString((HMENU)m_hMenu,pos,tmp,127,MF_BYPOSITION) ; - tmp[len] = '\0' ; - return wxString(tmp); -} - -bool wxMenuBar::OnDelete(wxMenu *a_menu, int pos) -{ - if (!m_menuBarFrame) - return TRUE; - - if (RemoveMenu((HMENU)m_hMenu, (UINT)pos, MF_BYPOSITION)) { - m_menus[pos]->m_hMenu = m_menus[pos]->m_savehMenu; - m_menus[pos]->m_savehMenu = 0; - - if (m_menuBarFrame) { - DrawMenuBar((HWND) m_menuBarFrame->GetHWND()) ; - } - - return TRUE; - } - - return FALSE; -} - -bool wxMenuBar::OnAppend(wxMenu *a_menu, const char *title) -{ - if (!a_menu->m_hMenu) - return FALSE; - - if (!m_menuBarFrame) - return TRUE; - - a_menu->m_savehMenu = a_menu->m_hMenu; - a_menu->m_hMenu = 0; - - AppendMenu((HMENU)m_hMenu, MF_POPUP | MF_STRING, (UINT)a_menu->m_savehMenu, title); - - DrawMenuBar((HWND) m_menuBarFrame->GetHWND()); - - return TRUE; -} - -void wxMenuBar::Append (wxMenu * menu, const wxString& title) -{ - if (!OnAppend(menu, title)) - return; - - m_menuCount ++; - wxMenu **new_menus = new wxMenu *[m_menuCount]; - wxString *new_titles = new wxString[m_menuCount]; - int i; - - for (i = 0; i < m_menuCount - 1; i++) - { - new_menus[i] = m_menus[i]; - m_menus[i] = NULL; - new_titles[i] = m_titles[i]; - m_titles[i] = ""; - } - if (m_menus) - { - delete[]m_menus; - delete[]m_titles; - } - m_menus = new_menus; - m_titles = new_titles; - - m_menus[m_menuCount - 1] = (wxMenu *)menu; - m_titles[m_menuCount - 1] = title; - - ((wxMenu *)menu)->m_menuBar = (wxMenuBar *) this; - ((wxMenu *)menu)->SetParent(this); -} - -void wxMenuBar::Delete(wxMenu * menu, int i) -{ - int j; - int ii = (int) i; - - if (menu != 0) { - for (ii = 0; ii < m_menuCount; ii++) { - if (m_menus[ii] == menu) - break; - } - if (ii >= m_menuCount) - return; - } else { - if (ii < 0 || ii >= m_menuCount) - return; - menu = m_menus[ii]; - } - - if (!OnDelete(menu, ii)) - return; - - menu->SetParent(NULL); - - -- m_menuCount; - for (j = ii; j < m_menuCount; j++) { - m_menus[j] = m_menus[j + 1]; - m_titles[j] = m_titles[j + 1]; - } -} - -// Find the menu menuString, item itemString, and return the item id. -// Returns -1 if none found. -int wxMenuBar::FindMenuItem (const wxString& menuString, const wxString& itemString) const -{ - char buf1[200]; - char buf2[200]; - wxStripMenuCodes ((char *)(const char *)menuString, buf1); - int i; - for (i = 0; i < m_menuCount; i++) - { - wxStripMenuCodes ((char *)(const char *)m_titles[i], buf2); - if (strcmp (buf1, buf2) == 0) - return m_menus[i]->FindItem (itemString); - } - return -1; -} - -wxMenuItem *wxMenuBar::FindItemForId (int Id, wxMenu ** itemMenu) const -{ - if (itemMenu) - *itemMenu = NULL; - - wxMenuItem *item = NULL; - int i; - for (i = 0; i < m_menuCount; i++) - { - item = m_menus[i]->FindItemForId (Id, itemMenu); - if (item) - return item; - } - return NULL; -} - -void wxMenuBar::SetHelpString (int Id, const wxString& helpString) -{ - int i; - for (i = 0; i < m_menuCount; i++) - { - if (m_menus[i]->FindItemForId (Id)) - { - m_menus[i]->SetHelpString (Id, helpString); - return; - } - } -} - -wxString wxMenuBar::GetHelpString (int Id) const -{ - int i; - for (i = 0; i < m_menuCount; i++) - { - if (m_menus[i]->FindItemForId (Id)) - return wxString(m_menus[i]->GetHelpString (Id)); - } - return wxString(""); -} - -wxWindow *wxMenu::GetWindow() const -{ - if ( m_pInvokingWindow != NULL ) - return m_pInvokingWindow; - if ( m_menuBar != NULL) - return m_menuBar->m_menuBarFrame; - return NULL; -} - -WXHMENU wxMenu::GetHMenu() const -{ - if ( m_hMenu != 0 ) - return m_hMenu; - else if ( m_savehMenu != 0 ) - return m_savehMenu; - - return 0; -} - diff --git a/src/msw/menuitem.cpp b/src/msw/menuitem.cpp deleted file mode 100644 index 916819d272..0000000000 --- a/src/msw/menuitem.cpp +++ /dev/null @@ -1,157 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: menuitem.cpp -// Purpose: wxMenuItem implementation -// Author: Vadim Zeitlin -// Modified by: -// Created: 11.11.97 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows license -/////////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "menuitem.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/menu.h" -#include "wx/font.h" -#include "wx/bitmap.h" -#include "wx/settings.h" -#include "wx/font.h" -#endif - -#include "wx/ownerdrw.h" -#include "wx/menuitem.h" - -#include - -#ifdef GetClassInfo -#undef GetClassInfo -#endif - -#ifdef GetClassName -#undef GetClassName -#endif - -// ============================================================================ -// implementation -// ============================================================================ - -// ---------------------------------------------------------------------------- -// dynamic classes implementation -// ---------------------------------------------------------------------------- - -#if !defined(USE_SHARED_LIBRARY) || !USE_SHARED_LIBRARY -#if wxUSE_OWNER_DRAWN - IMPLEMENT_DYNAMIC_CLASS2(wxMenuItem, wxObject, wxOwnerDrawn) -#else //!USE_OWNER_DRAWN - IMPLEMENT_DYNAMIC_CLASS(wxMenuItem, wxObject) -#endif //USE_OWNER_DRAWN - -#endif //USE_SHARED_LIBRARY - -// ---------------------------------------------------------------------------- -// wxMenuItem -// ---------------------------------------------------------------------------- - -// ctor & dtor -// ----------- - -wxMenuItem::wxMenuItem(wxMenu *pParentMenu, int id, - const wxString& strName, const wxString& strHelp, - bool bCheckable, - wxMenu *pSubMenu) : -#if wxUSE_OWNER_DRAWN - wxOwnerDrawn(strName, bCheckable), -#else //no owner drawn support - m_bCheckable(bCheckable), - m_strName(strName), -#endif //owner drawn - m_strHelp(strHelp) -{ - wxASSERT( pParentMenu != NULL ); - -#if wxUSE_OWNER_DRAWN - // set default menu colors - #define SYS_COLOR(c) (wxSystemSettings::GetSystemColour(wxSYS_COLOUR_##c)) - - SetTextColour(SYS_COLOR(MENUTEXT)); - SetBackgroundColour(SYS_COLOR(MENU)); - - // we don't want normal items be owner-drawn - ResetOwnerDrawn(); - - #undef SYS_COLOR -#endif - - m_pParentMenu = pParentMenu; - m_pSubMenu = pSubMenu; - m_idItem = id; - m_bEnabled = TRUE; -} - -wxMenuItem::~wxMenuItem() -{ -} - -// misc -// ---- - -// delete the sub menu -void wxMenuItem::DeleteSubMenu() -{ - wxASSERT( m_pSubMenu != NULL ); - - delete m_pSubMenu; - m_pSubMenu = NULL; -} - -// change item state -// ----------------- - -void wxMenuItem::Enable(bool bDoEnable) -{ - if ( m_bEnabled != bDoEnable ) { - if ( m_pSubMenu == NULL ) { // normal menu item - EnableMenuItem((HMENU)m_pParentMenu->GetHMenu(), m_idItem, - MF_BYCOMMAND | (bDoEnable ? MF_ENABLED: MF_GRAYED)); - } - else // submenu - { - wxMenu *father = m_pSubMenu->m_topLevelMenu ; - wxNode *node = father->m_menuItems.First() ; - int i = 0 ; - while (node) { - wxMenuItem *matched = (wxMenuItem*)node->Data(); - if ( matched == this) - break; - i++; - node = node->Next(); - } - EnableMenuItem((HMENU)father->m_savehMenu, i, - MF_BYPOSITION | (bDoEnable ? MF_ENABLED: MF_GRAYED)); - } - - m_bEnabled = bDoEnable; - } -} - -void wxMenuItem::Check(bool bDoCheck) -{ - wxCHECK_RET( IsCheckable(), "only checkable items may be checked" ); - - if ( m_bChecked != bDoCheck ) { - CheckMenuItem((HMENU)m_pParentMenu->GetHMenu(), m_idItem, - MF_BYCOMMAND | (bDoCheck ? MF_CHECKED : MF_UNCHECKED)); - - m_bChecked = bDoCheck; - } -} \ No newline at end of file diff --git a/src/msw/metafile.cpp b/src/msw/metafile.cpp deleted file mode 100644 index d750762bb6..0000000000 --- a/src/msw/metafile.cpp +++ /dev/null @@ -1,415 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: metafile.cpp -// Purpose: wxMetafileDC etc. -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "metafile.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/setup.h" -#endif - -#if wxUSE_METAFILE - -#ifndef WX_PRECOMP -#include "wx/utils.h" -#include "wx/app.h" -#endif - -#include "wx/metafile.h" -#include "wx/clipbrd.h" -#include "wx/msw/private.h" - -#include -#include - -extern bool wxClipboardIsOpen; - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxMetafile, wxObject) -IMPLEMENT_ABSTRACT_CLASS(wxMetafileDC, wxDC) -#endif - -/* - * Metafiles - * Currently, the only purpose for making a metafile is to put - * it on the clipboard. - */ - -wxMetafileRefData::wxMetafileRefData(void) -{ - m_metafile = 0; - m_windowsMappingMode = MM_ANISOTROPIC; -} - -wxMetafileRefData::~wxMetafileRefData(void) -{ - if (m_metafile) - { - DeleteMetaFile((HMETAFILE) m_metafile); - m_metafile = 0; - } -} - -wxMetafile::wxMetafile(const wxString& file) -{ - m_refData = new wxMetafileRefData; - - M_METAFILEDATA->m_windowsMappingMode = MM_ANISOTROPIC; - M_METAFILEDATA->m_metafile = 0; - if (!file.IsNull() && (file.Cmp("") == 0)) - M_METAFILEDATA->m_metafile = (WXHANDLE) GetMetaFile(file); -} - -wxMetafile::~wxMetafile(void) -{ -} - -bool wxMetafile::SetClipboard(int width, int height) -{ - if (!m_refData) - return FALSE; - - bool alreadyOpen=wxClipboardOpen(); - if (!alreadyOpen) - { - wxOpenClipboard(); - if (!wxEmptyClipboard()) return FALSE; - } - bool success = wxSetClipboardData(wxDF_METAFILE, this, width,height); - if (!alreadyOpen) wxCloseClipboard(); - return (bool) success; -} - -bool wxMetafile::Play(wxDC *dc) -{ - if (!m_refData) - return FALSE; - - dc->BeginDrawing(); - - if (dc->GetHDC() && M_METAFILEDATA->m_metafile) - PlayMetaFile((HDC) dc->GetHDC(), (HMETAFILE) M_METAFILEDATA->m_metafile); - - dc->EndDrawing(); - - return TRUE; -} - -void wxMetafile::SetHMETAFILE(WXHANDLE mf) -{ - if (m_refData) - m_refData = new wxMetafileRefData; - - M_METAFILEDATA->m_metafile = mf; -} - -void wxMetafile::SetWindowsMappingMode(int mm) -{ - if (m_refData) - m_refData = new wxMetafileRefData; - - M_METAFILEDATA->m_windowsMappingMode = mm; -} - -/* - * Metafile device context - * - */ - -// Original constructor that does not takes origin and extent. If you use this, -// *DO* give origin/extent arguments to wxMakeMetafilePlaceable. -wxMetafileDC::wxMetafileDC(const wxString& file) -{ - m_metaFile = NULL; - m_minX = 10000; - m_minY = 10000; - m_maxX = -10000; - m_maxY = -10000; -// m_title = NULL; - - if (!file.IsNull() && wxFileExists(file)) - wxRemoveFile(file); - - if (!file.IsNull() && (file != "")) - m_hDC = (WXHDC) CreateMetaFile(file); - else - m_hDC = (WXHDC) CreateMetaFile(NULL); - - m_ok = (m_hDC != (WXHDC) 0) ; - - // Actual Windows mapping mode, for future reference. - m_windowsMappingMode = MM_TEXT; - - SetMapMode(MM_TEXT); // NOTE: does not set HDC mapmode (this is correct) -} - -// New constructor that takes origin and extent. If you use this, don't -// give origin/extent arguments to wxMakeMetafilePlaceable. -wxMetafileDC::wxMetafileDC(const wxString& file, int xext, int yext, int xorg, int yorg) -{ - m_minX = 10000; - m_minY = 10000; - m_maxX = -10000; - m_maxY = -10000; - if (file != "" && wxFileExists(file)) wxRemoveFile(file); - m_hDC = (WXHDC) CreateMetaFile(file); - - m_ok = TRUE; - - ::SetWindowOrgEx((HDC) m_hDC,xorg,yorg, NULL); - ::SetWindowExtEx((HDC) m_hDC,xext,yext, NULL); - - // Actual Windows mapping mode, for future reference. - m_windowsMappingMode = MM_ANISOTROPIC; - - SetMapMode(MM_TEXT); // NOTE: does not set HDC mapmode (this is correct) -} - -wxMetafileDC::~wxMetafileDC(void) -{ - m_hDC = 0; -} - -void wxMetafileDC::GetTextExtent(const wxString& string, long *x, long *y, - long *descent, long *externalLeading, wxFont *theFont, bool use16bit) const -{ - wxFont *fontToUse = theFont; - if (!fontToUse) - fontToUse = (wxFont*) &m_font; - - HDC dc = GetDC(NULL); - - SIZE sizeRect; - TEXTMETRIC tm; - GetTextExtentPoint(dc, (char *)(const char *) string, strlen((char *)(const char *) string), &sizeRect); - GetTextMetrics(dc, &tm); - - ReleaseDC(NULL, dc); - - *x = XDEV2LOGREL(sizeRect.cx); - *y = YDEV2LOGREL(sizeRect.cy); - if (descent) *descent = tm.tmDescent; - if (externalLeading) *externalLeading = tm.tmExternalLeading; -} - -wxMetafile *wxMetafileDC::Close(void) -{ - SelectOldObjects(m_hDC); - HANDLE mf = CloseMetaFile((HDC) m_hDC); - m_hDC = 0; - if (mf) - { - wxMetafile *wx_mf = new wxMetafile; - wx_mf->SetHMETAFILE((WXHANDLE) mf); - wx_mf->SetWindowsMappingMode(m_windowsMappingMode); - return wx_mf; - } - return NULL; -} - -void wxMetafileDC::SetMapMode(int mode) -{ - m_mappingMode = mode; - -// int pixel_width = 0; -// int pixel_height = 0; -// int mm_width = 0; -// int mm_height = 0; - - float mm2pixelsX = 10.0; - float mm2pixelsY = 10.0; - - switch (mode) - { - case MM_TWIPS: - { - m_logicalScaleX = (float)(twips2mm * mm2pixelsX); - m_logicalScaleY = (float)(twips2mm * mm2pixelsY); - break; - } - case MM_POINTS: - { - m_logicalScaleX = (float)(pt2mm * mm2pixelsX); - m_logicalScaleY = (float)(pt2mm * mm2pixelsY); - break; - } - case MM_METRIC: - { - m_logicalScaleX = mm2pixelsX; - m_logicalScaleY = mm2pixelsY; - break; - } - case MM_LOMETRIC: - { - m_logicalScaleX = (float)(mm2pixelsX/10.0); - m_logicalScaleY = (float)(mm2pixelsY/10.0); - break; - } - default: - case MM_TEXT: - { - m_logicalScaleX = 1.0; - m_logicalScaleY = 1.0; - break; - } - } - m_windowExtX = 100; - m_windowExtY = 100; -} - -#ifdef __WIN32__ -struct RECT32 -{ - short left; - short top; - short right; - short bottom; -}; - -struct mfPLACEABLEHEADER { - DWORD key; - short hmf; - RECT32 bbox; - WORD inch; - DWORD reserved; - WORD checksum; -}; -#else -struct mfPLACEABLEHEADER { - DWORD key; - HANDLE hmf; - RECT bbox; - WORD inch; - DWORD reserved; - WORD checksum; -}; -#endif - -/* - * Pass filename of existing non-placeable metafile, and bounding box. - * Adds a placeable metafile header, sets the mapping mode to anisotropic, - * and sets the window origin and extent to mimic the MM_TEXT mapping mode. - * - */ - -bool wxMakeMetafilePlaceable(const wxString& filename, float scale) -{ - return wxMakeMetafilePlaceable(filename, 0, 0, 0, 0, scale, FALSE); -} - -bool wxMakeMetafilePlaceable(const wxString& filename, int x1, int y1, int x2, int y2, float scale, bool useOriginAndExtent) -{ - // I'm not sure if this is the correct way of suggesting a scale - // to the client application, but it's the only way I can find. - int unitsPerInch = (int)(576/scale); - - mfPLACEABLEHEADER header; - header.key = 0x9AC6CDD7L; - header.hmf = 0; - header.bbox.left = (int)(x1); - header.bbox.top = (int)(y1); - header.bbox.right = (int)(x2); - header.bbox.bottom = (int)(y2); - header.inch = unitsPerInch; - header.reserved = 0; - - // Calculate checksum - WORD *p; - mfPLACEABLEHEADER *pMFHead = &header; - for (p =(WORD *)pMFHead,pMFHead -> checksum = 0; - p < (WORD *)&pMFHead ->checksum; ++p) - pMFHead ->checksum ^= *p; - - FILE *fd = fopen((char *)(const char *)filename, "rb"); - if (!fd) return FALSE; - - char tempFileBuf[256]; - wxGetTempFileName("mf", tempFileBuf); - FILE *fHandle = fopen(tempFileBuf, "wb"); - if (!fHandle) - return FALSE; - fwrite((void *)&header, sizeof(unsigned char), sizeof(mfPLACEABLEHEADER), fHandle); - - // Calculate origin and extent - int originX = x1; - int originY = y1; - int extentX = x2 - x1; - int extentY = (y2 - y1); - - // Read metafile header and write - METAHEADER metaHeader; - fread((void *)&metaHeader, sizeof(unsigned char), sizeof(metaHeader), fd); - - if (useOriginAndExtent) - metaHeader.mtSize += 15; - else - metaHeader.mtSize += 5; - - fwrite((void *)&metaHeader, sizeof(unsigned char), sizeof(metaHeader), fHandle); - - // Write SetMapMode, SetWindowOrigin and SetWindowExt records - char modeBuffer[8]; - char originBuffer[10]; - char extentBuffer[10]; - METARECORD *modeRecord = (METARECORD *)&modeBuffer; - - METARECORD *originRecord = (METARECORD *)&originBuffer; - METARECORD *extentRecord = (METARECORD *)&extentBuffer; - - modeRecord->rdSize = 4; - modeRecord->rdFunction = META_SETMAPMODE; - modeRecord->rdParm[0] = MM_ANISOTROPIC; - - originRecord->rdSize = 5; - originRecord->rdFunction = META_SETWINDOWORG; - originRecord->rdParm[0] = originY; - originRecord->rdParm[1] = originX; - - extentRecord->rdSize = 5; - extentRecord->rdFunction = META_SETWINDOWEXT; - extentRecord->rdParm[0] = extentY; - extentRecord->rdParm[1] = extentX; - - fwrite((void *)modeBuffer, sizeof(char), 8, fHandle); - - if (useOriginAndExtent) - { - fwrite((void *)originBuffer, sizeof(char), 10, fHandle); - fwrite((void *)extentBuffer, sizeof(char), 10, fHandle); - } - - int ch = -2; - while (ch != EOF) - { - ch = getc(fd); - if (ch != EOF) - { - putc(ch, fHandle); - } - } - fclose(fHandle); - fclose(fd); - wxRemoveFile(filename); - wxCopyFile(tempFileBuf, filename); - wxRemoveFile(tempFileBuf); - return TRUE; -} - -#endif // wxUSE_METAFILE - diff --git a/src/msw/minifram.cpp b/src/msw/minifram.cpp deleted file mode 100644 index 282ae2bbdd..0000000000 --- a/src/msw/minifram.cpp +++ /dev/null @@ -1,1604 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: minifram.cpp -// Purpose: wxMiniFrame -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "minifram.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/setup.h" -#include "wx/event.h" -#include "wx/app.h" -#include "wx/utils.h" -#endif - -#if wxUSE_ITSY_BITSY - -#include "wx/minifram.h" -#include "wx/msw/private.h" - -#ifndef __TWIN32__ -#ifdef __GNUWIN32__ -#include "wx/msw/gnuwin32/extra.h" -#endif -#endif - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxMiniFrame, wxFrame) -#endif - -long wxMiniFrame::MSWDefWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) -{ - if ((GetWindowStyleFlag() & wxTINY_CAPTION_HORIZ) || - (GetWindowStyleFlag() & wxTINY_CAPTION_VERT)) - return ::ibDefWindowProc((HWND) GetHWND(), nMsg, wParam, lParam); - else if ( m_oldWndProc ) - return ::CallWindowProc(CASTWNDPROC m_oldWndProc, (HWND) GetHWND(), (UINT) nMsg, (WPARAM) wParam, (LPARAM) lParam); - else - return ::DefWindowProc((HWND) GetHWND(), nMsg, wParam, lParam); -} - -wxMiniFrame::~wxMiniFrame(void) -{ -} - -///////////////////////////////////////////////////////////////////////// -// -// Project: ItsyBitsy window support module -// Module: itsybits.c -// -// -// ItsyBitsy is a support module that allows you to create windows -// that look and act very much like a popup window witha system -// menu and caption bar, except everything is scaled to about 2/3 -// scale. -// -// For documentation on how to use ItsyBits, read the document -// ITSYBITS.DOC. -// -// Revisions: -// 9/27/91 Charlie Kindel (cek/ckindel) -// Wrote and documented it. -// -// 1/14/93 cek -// 2/23/93 cek Added minimize/maximize buttons. -// 3/18/93 cek Fixed system menu bug where system menu -// popped back up if you clicked on the -// icon again while it was up. -// 3/24/93 cek More comments. Fixed DS_MODALDIALOG style -// problem. Use auto precompiled headers -// in MSVC. -// -////////////////////////////////////////////////////////////////////////// - -#include -#include - -#include - -#if !defined( __WATCOMC__ ) && !defined( __MWERKS__ ) && !defined(__SALFORDC__) -#include -#endif - -#include - -#ifndef _RGB_H_ -#define _RGB_H_ - - // Some mildly useful macros for the standard 16 colors - #define RGBBLACK RGB(0,0,0) - #define RGBRED RGB(128,0,0) - #define RGBGREEN RGB(0,128,0) - #define RGBBLUE RGB(0,0,128) - - #define RGBBROWN RGB(128,128,0) - #define RGBMAGENTA RGB(128,0,128) - #define RGBCYAN RGB(0,128,128) - #define RGBLTGRAY RGB(192,192,192) - - #define RGBGRAY RGB(128,128,128) - #define RGBLTRED RGB(255,0,0) - #define RGBLTGREEN RGB(0,255,0) - #define RGBLTBLUE RGB(0,0,255) - - #define RGBYELLOW RGB(255,255,0) - #define RGBLTMAGENTA RGB(255,0,255) - #define RGBLTCYAN RGB(0,255,255) - #define RGBWHITE RGB(255,255,255) -#endif - -#ifndef GlobalAllocPtr -#define GlobalPtrHandle(lp) \ - ((HGLOBAL)GlobalHandle(lp)) - -#define GlobalLockPtr(lp) \ - ((BOOL)GlobalLock(GlobalPtrHandle(lp))) -#define GlobalUnlockPtr(lp) \ - GlobalUnlock(GlobalPtrHandle(lp)) - -#define GlobalAllocPtr(flags, cb) \ - (GlobalLock(GlobalAlloc((flags), (cb)))) -#define GlobalReAllocPtr(lp, cbNew, flags) \ - (GlobalUnlockPtr(lp), GlobalLock(GlobalReAlloc(GlobalPtrHandle(lp) , (cbNew), (flags)))) -#define GlobalFreePtr(lp) \ - (GlobalUnlockPtr(lp), (BOOL)GlobalFree(GlobalPtrHandle(lp))) -#endif - -#if defined(__BORLANDC__) || defined(__WATCOMC__) -#define max(a,b) (((a) > (b)) ? (a) : (b)) -#define min(a,b) (((a) < (b)) ? (a) : (b)) -#endif - -// CAPTIONXY is the default size of the system menu icon. This -// determines the height/width of the caption. -// -// The value that results from the following formula works out -// nicely for the veritcal caption on VGA, 8514 (Large Fonts), -// 8514 (Small Fonts), XGA (Small Fonts), XGA (Large Fonts), -// and TIGA (Small Fonts). It may not be good on other displays. -// -// The problem is that TT fonts turn into bitmap fonts when they -// are sized below a certain threshold. The idea is to make the -// size of the caption just big enough to get the smallest TT -// (scalable) font to fit. -// -#define CAPTIONXY (GetSystemMetrics( SM_CYCAPTION ) / 2 + 1) - -#define TestWinStyle( hWnd, dwStyleBit ) \ - (((DWORD)GetWindowLong( hWnd, GWL_STYLE ) & (DWORD)dwStyleBit) ? TRUE : FALSE ) -#define HASCAPTION( hwnd ) (TestWinStyle( hwnd, IBS_VERTCAPTION ) ||\ - TestWinStyle( hwnd, IBS_HORZCAPTION )) - -#define SETCAPTIONSIZE(h,i) (UINT)SetProp(h,"ibSize",(HANDLE)i) -#define GETCAPTIONSIZE(h) (UINT)GetProp(h,"ibSize") -#define FREECAPTIONSIZE(h) RemoveProp(h,"ibSize") - -#define SETMENUWASUPFLAG(h,i) (UINT)SetProp(h,"ibFlag",(HANDLE)i) -#define GETMENUWASUPFLAG(h) (UINT)GetProp(h,"ibFlag") -#define FREEMENUWASUPFLAG(h) RemoveProp(h,"ibFlag") - -///////////////////////////////////////////////////////////////////// -// Little known fact: -// ExtTextOut() is the fastest way to draw a filled rectangle -// in Windows (if you don't want dithered colors or borders). -// -// Unfortunately there is a bug in the Windows 3.0 8514 driver -// in using ExtTextOut() to a memory DC. If you are drawing -// to an off screen bitmap, then blitting that bitmap to the -// display, do not #define wxUSE_EXTTEXTOUT below. -// -// The following macro (DRAWFASTRECT) draws a filled rectangle -// with no border and a solid color. It uses the current back- -// ground color as the fill color. -////////////////////////////////////////////////////////////////////// -#define wxUSE_EXTTEXTOUT -#ifdef wxUSE_EXTTEXTOUT - #define DRAWFASTRECT(hdc,lprc) ExtTextOut(hdc,0,0,ETO_OPAQUE,lprc,NULL,0,NULL) -#else - #define DRAWFASTRECT(hdc,lprc) {\ - HBRUSH hbr = CreateSolidBrush( GetBkColor( hdc ) ) ;\ - hbr = SelectObject(hdc, hbr) ;\ - PatBlt(hdc,(lprc)->left,(lprc)->top,(lprc)->right-(lprc)->left,(lprc)->bottom-(lprc)->top,PATCOPY) ;\ - hbr = SelectObject(hdc, hbr) ;\ - DeleteObject( hbr ) ;\ - } -#endif - -// The DrawArrow function takes the following to indicate what -// kind of arrow to draw. -// -#define ARROW_UP 0 -#define ARROW_DOWN 1 -#define ARROW_RESTORE 2 - -BOOL PASCAL DepressMinMaxButton( HWND hWnd, UINT uiHT, LPRECT ) ; -BOOL PASCAL DoMenu( HWND hWnd ) ; -void PASCAL SetupSystemMenu( HWND hWnd, HMENU hMenu ) ; -BOOL PASCAL GetCaptionRect( HWND hWnd, LPRECT lprc ) ; -BOOL PASCAL GetIconRect( HWND hWnd, LPRECT lprc ) ; -BOOL PASCAL GetButtonRect( HWND hWnd, UINT nPos, LPRECT lprc ) ; -BOOL PASCAL GetMinButtonRect( HWND hWnd, LPRECT lprc ) ; -BOOL PASCAL GetMaxButtonRect( HWND hWnd, LPRECT lprc ) ; -BOOL PASCAL DrawCaption( HDC hDC, HWND hWnd, LPRECT lprc, - BOOL fVert, BOOL fSysMenu, - BOOL fMin, BOOL fMax, BOOL fActive ) ; -void PASCAL DrawSysMenu( HDC hDC, HWND hWnd, BOOL fInvert ) ; -void PASCAL DrawButton( HDC hDC, HWND hWnd, BOOL fMin, BOOL fDepressed ) ; -void PASCAL DrawArrow( HDC hdc, LPRECT lprc, UINT uiStyle ) ; - -// Global vars -// -static BOOL fWin31 ; - -/////////////////////////////////////////////////////////////////////// -// External/Public functions -/////////////////////////////////////////////////////////////////////// - -///////////////////////////////////////////////////////////////// -// UINT WINAPI ibGetCaptionSize( HWND hWnd ) -// -// Description: -// -// Gets the size of the caption (height if horz, width if -// vertical). -// -// Comments: -// -/////////////////////////////////////////////////////////////// -UINT WINAPI ibGetCaptionSize( HWND hWnd ) -{ - return GETCAPTIONSIZE( hWnd ) + 1 ; -} // ibSetCaptionSize() - -///////////////////////////////////////////////////////////////// -// UINT WINAPI ibSetCaptionSize( HWND hWnd, UINT nSize ) -// -// Description: -// -// Changes the size of the caption (height if horz, width if -// vertical). -// -// Comments: -// -////////////////////////////////////////////////////////////////// -UINT WINAPI ibSetCaptionSize( HWND hWnd, UINT nSize ) -{ - UINT ui ; - - if (nSize <= 0) - return 0 ; - - nSize-- ; - ui = SETCAPTIONSIZE( hWnd, nSize ) ; - - // Once we change the window style, we need a WM_NCCALCRECT - // to be generated. - // - // SWP_FRAMECHANGED is not documented in the 3.1 SDK docs, - // but *is* in WINDOWS.H. - // - SetWindowPos( hWnd, NULL, 0, 0, 0, 0, SWP_FRAMECHANGED | - SWP_NOSIZE | SWP_NOMOVE | - SWP_NOACTIVATE | SWP_NOZORDER) ; - - return ui ; - -} // ibSetCaptionSize() - -///////////////////////////////////////////////////////////////// -// LRESULT WINAPI ibDefWindowProc( HWND hWnd, UINT uiMsg, WPARAM wParam, LPARAM lParam ) -// -// Description: -// -// This function should be called instead of DefWindowProc() for -// windows that want to have itsybitsy captions. -// -// Comments: -// -////////////////////////////////////////////////////////////////// -LRESULT WINAPI ibDefWindowProc( HWND hWnd, UINT uiMsg, WPARAM wParam, LPARAM lParam ) -{ - LRESULT lRet ; - UINT nCapSize ; - - switch( uiMsg ) - { - case WM_SYSCHAR: - // If ALT-SPACE - // was hit then pop up the menu - // - if (HASCAPTION( hWnd ) && (wParam == VK_SPACE)) - { - DoMenu( hWnd ) ; - break ; - } - - // FALL THROUGH!!!! - // - - case WM_SYSKEYDOWN: - case WM_SYSKEYUP: - case WM_KEYDOWN: - case WM_KEYUP: - { - DWORD dw = GetWindowLong( hWnd, GWL_STYLE ) ; - - // Fool DefWindowProc into thinking we do not have - // a system menu. Otherwise it will try to - // pop up its own. - // - SetWindowLong( hWnd, GWL_STYLE, dw &~WS_SYSMENU ) ; - lRet = DefWindowProc( hWnd, uiMsg, wParam, lParam ) ; - SetWindowLong( hWnd, GWL_STYLE, dw ) ; - return lRet ; - } - break ; - - case WM_COMMAND: - // The menu that is poped up for the system menu with - // TrackPopupMenu() sends it's notifications as WM_COMMAND - // messages. We need to translate these into - // WM_SYSCOMMAND messages. All standard WM_SYSCOMMAND - // ids are greater than 0xF000. - // - // This could be a possible cause of confusion if the - // itsybitsy window had children that used SC_MOVE or SC_CLOSE - // as their IDs. Take note and be careful. - // - // Also, because ibDefWindowProc looks at WM_COMMAND messages, - // you will need to be careful to call ibDefWindowProc() for - // any wm_command messages that you would normally ignore. - // Otherwise the system menu won't work. - // - if (wParam >= 0xF000) - // Call PostMessage() here instead of SendMessage! - // Here's why: - // Our menu was created by TrackPopupMenu(). TPM() does - // not return until after the menu has been destroyed - // (and thus the command associated with the menu selection - // sent). Therefore when we get here, we are still - // *inside* TPM(). If we Send WM_SYSCOMMAND, SC_CLOSE - // to the window, the window will be destroyed before - // TPM() returns to our code within DoMenu() below. Wel... - // We do stuff with the window handle after DoMenu() - // returns (namely GetProp()). Since the window has - // been destroyed,this is bad. - PostMessage( hWnd, WM_SYSCOMMAND, wParam, lParam ) ; - - return DefWindowProc( hWnd, uiMsg, wParam, lParam ) ; - - case WM_GETMINMAXINFO: - { - nCapSize = GETCAPTIONSIZE( hWnd ) ; - if (HASCAPTION( hWnd ) && TestWinStyle( hWnd, WS_THICKFRAME )) - { - LPPOINT lppt = (LPPOINT)lParam ; - RECT rcMenu ; - RECT rcMin ; - RECT rcMax ; - int nX ; - int cx, cy ; // window frame/border width - - if (TestWinStyle( hWnd, WS_THICKFRAME )) - { - cx = GetSystemMetrics( SM_CXFRAME ) ; - cy = GetSystemMetrics( SM_CYFRAME ) ; - } - else if (TestWinStyle(hWnd, WS_BORDER )) - { - cx = GetSystemMetrics( SM_CXBORDER ) ; - cy = GetSystemMetrics( SM_CYBORDER ) ; - } - else - { - // VZ: I don't know what should be here, but the vars must - // be inited! - wxFAIL_MSG("don't know how to initialize cx, cy"); - - cx = cy = 0; - } - - GetIconRect( hWnd, &rcMenu ) ; - GetMinButtonRect( hWnd, &rcMin ) ; - GetMaxButtonRect( hWnd, &rcMax ) ; - nX = (rcMenu.right-rcMenu.left) + - (rcMin.right-rcMin.left) + - (rcMin.right-rcMin.left) ; - - - if (TestWinStyle( hWnd, IBS_VERTCAPTION ) ) - { - lppt[3].x = nCapSize + cx * 2 - 1 ; - lppt[3].y = nX + (2* nCapSize) ; - } - else - { - lppt[3].x = nX + (2* nCapSize) ; - lppt[3].y = nCapSize + cy * 2 - 1 ; - } - } - return DefWindowProc( hWnd, uiMsg, wParam, lParam ) ; - } - break ; - - ///////////////////////////////////////////////////////////////////// - // Non-client area messages. These are used to allow the - // minature caption bar to be handled correctly. - // - case WM_NCCREATE: - { - DWORD dwStyle ; - - // We have two things that we need to store somewhere: - // 1) The caption height (width). - // and 2) A flag indicating whether the sysmenu was - // just up or not. - // - // CAPTIONXY is a macro that calls GetSystemMetrics. - // - SETCAPTIONSIZE( hWnd, CAPTIONXY ) ; - - // Set our flag that tells us whether the system menu was - // 'just up'. - // - SETMENUWASUPFLAG( hWnd, FALSE ) ; - - // Are we in 3.1? If so we have some neat features - // we can use like rotated TrueType fonts. - // - fWin31 = (BOOL)(LOWORD( GetVersion() ) >= 0x030A) ; - - // If IBS_????CAPTION was specified and the WS_DLGFRAME (or - // WS_DLGFRAME 'cause it == WS_CAPTION | WS_BORDER) - // was specified the creator made a mistake. Things get really - // ugly if DefWindowProc sees WS_DLGFRAME, so we strip - // the WS_DLGFRAME part off! - // - dwStyle = GetWindowLong( hWnd, GWL_STYLE ) ; - if ((dwStyle & IBS_VERTCAPTION || dwStyle & IBS_HORZCAPTION) && - dwStyle & WS_DLGFRAME) - { - dwStyle &= (DWORD)~WS_DLGFRAME ; - SetWindowLong( hWnd, GWL_STYLE, dwStyle ) ; - } - } - return DefWindowProc( hWnd, uiMsg, wParam, lParam ) ; - - case WM_NCDESTROY: - // We store the caption size in a window prop. so we - // must remove props. - // - FREECAPTIONSIZE( hWnd ) ; - FREEMENUWASUPFLAG( hWnd ) ; - return DefWindowProc( hWnd, uiMsg, wParam, lParam ) ; - - case WM_NCCALCSIZE: - // This is sent when the window manager wants to find out - // how big our client area is to be. If we have a mini-caption - // then we trap this message and calculate the cleint area rect, - // which is the client area rect calculated by DefWindowProc() - // minus the width/height of the mini-caption bar - // - lRet = DefWindowProc( hWnd, uiMsg, wParam, lParam ) ; - if (!IsIconic( hWnd ) && HASCAPTION( hWnd )) - { - nCapSize = GETCAPTIONSIZE( hWnd ) ; - - if (TestWinStyle( hWnd, IBS_VERTCAPTION ) ) - ((LPRECT)lParam)->left += nCapSize ; - else - ((LPRECT)lParam)->top += nCapSize ; - } - return lRet ; - - case WM_NCHITTEST: - // This message is sent whenever the mouse moves over us. - // We will depend on DefWindowProc for everything unless - // there is a mini-caption, in which case we will - // return HTCAPTION or HTSYSMENU. When the user clicks - // or double clicks, NC_LBUTTON/ message are sent with - // wParam equal to what we return here. - // This means that this is an ideal place to figure out - // where we are! - // - // let defwindowproc handle the standard borders etc... - // - lRet = DefWindowProc( hWnd, uiMsg, wParam, lParam ) ; - if (!IsIconic( hWnd ) && HASCAPTION( hWnd ) && lRet == HTNOWHERE) - { - RECT rc ; - RECT rcMenu ; - RECT rcMinButton ; - RECT rcMaxButton ; - POINT pt ; - - nCapSize = GETCAPTIONSIZE( hWnd ) ; - - // if DefWindowProc returned HTCAPTION then we have to - // refine the area and return HTSYSMENU if appropriate - // - pt.x = LOWORD( lParam ) ; - pt.y = HIWORD( lParam ) ; - - GetCaptionRect( hWnd, &rc ) ; // window coords - if (PtInRect( &rc, pt )) - { - lRet = HTCAPTION ; - - // rely on the fact that Get???Rect() return an invalid - // (empty) rectangle if the menu/buttons don't exist - // - GetIconRect( hWnd, &rcMenu ) ; - GetMinButtonRect( hWnd, &rcMinButton ) ; - GetMaxButtonRect( hWnd, &rcMaxButton ) ; - - if (PtInRect( &rcMenu, pt )) - lRet = HTSYSMENU ; - - if (PtInRect( &rcMinButton, pt )) - lRet = HTMINBUTTON ; - else - if (PtInRect( &rcMaxButton, pt )) - lRet = HTMAXBUTTON ; - } - } - if (lRet != HTSYSMENU) - SETMENUWASUPFLAG( hWnd, FALSE ) ; - return lRet ; - - case WM_NCLBUTTONDBLCLK: - // Windows recieve WM_NC?BUTTONDBLCLK messages whether they - // have CS_DBLCLKS or not. We watch for one of these - // to see if the user double clicked on the system menu (to - // close the window) or on the caption (to maximize the window). - // - if (!IsIconic( hWnd ) && HASCAPTION( hWnd ) && wParam == HTSYSMENU) - { - SendMessage( hWnd, WM_CLOSE, 0, 0L ) ; - break ; - } - return DefWindowProc( hWnd, uiMsg, wParam, lParam ) ; - - case WM_NCLBUTTONDOWN: - { - RECT rc ; - - // If we're iconic or we don't have a caption then - // DefWindowProc will do the job just fine. - // - if (IsIconic( hWnd ) || !HASCAPTION( hWnd )) - return DefWindowProc( hWnd, uiMsg, wParam, lParam ) ; - - // Here's were we handle the system menu, the min and max buttons. - // If you wanted to change the behavior of the min/max buttons - // do something like swap tool palettes or something, you - // would change the SendMessage() calls below. - // - switch (wParam) - { - case HTSYSMENU: - if (GETMENUWASUPFLAG( hWnd ) == FALSE && DoMenu( hWnd )) - SETMENUWASUPFLAG( hWnd, TRUE ) ; - else - SETMENUWASUPFLAG( hWnd, FALSE ) ; - break ; - - case HTMINBUTTON: - GetMinButtonRect( hWnd, &rc ) ; - // Note that DepressMinMaxButton() goes into - // a PeekMessage() loop waiting for the mouse - // to come back up. - // - if (DepressMinMaxButton( hWnd, wParam, &rc )) - SendMessage( hWnd, WM_SYSCOMMAND, SC_MINIMIZE, lParam ) ; - break ; - - case HTMAXBUTTON: - GetMaxButtonRect( hWnd, &rc ) ; - // Note that DepressMinMaxButton() goes into - // a PeekMessage() loop waiting for the mouse - // to come back up. - // - if (DepressMinMaxButton( hWnd, wParam, &rc )) - { - if (IsZoomed(hWnd)) - SendMessage( hWnd, WM_SYSCOMMAND, SC_RESTORE, lParam ) ; - else - SendMessage( hWnd, WM_SYSCOMMAND, SC_MAXIMIZE, lParam ) ; - } - break ; - - default: - // Well, it appears as though the user clicked somewhere other - // than the buttons. We let DefWindowProc do it's magic. - // This is where things like dragging and sizing the - // window happen. - // - return DefWindowProc( hWnd, uiMsg, wParam, lParam ) ; - } - } - break ; - - case WM_NCPAINT: - case WM_NCACTIVATE: - if (IsIconic( hWnd )) - return DefWindowProc( hWnd, uiMsg, wParam, lParam ) ; - - // Paint the non-client area here. We will call DefWindowProc - // after we are done so it can paint the borders and so - // forth... - // - lRet = DefWindowProc( hWnd, uiMsg, wParam, lParam ) ; - if (HASCAPTION( hWnd )) - { - RECT rcCap ; - RECT rc ; - HDC hDC = GetWindowDC( hWnd ) ; - BOOL fActive ; - - GetCaptionRect( hWnd, &rcCap ) ; // Convert to window coords - GetWindowRect( hWnd, &rc ) ; - OffsetRect( &rcCap, -rc.left, -rc.top ) ; - - if (uiMsg == WM_NCPAINT) - fActive = (hWnd == GetActiveWindow()) ; - else - fActive = wParam ; - - DrawCaption( hDC, hWnd, &rcCap, - TestWinStyle(hWnd, IBS_VERTCAPTION), - TestWinStyle(hWnd, WS_SYSMENU), - TestWinStyle(hWnd, WS_MINIMIZEBOX), - TestWinStyle(hWnd, WS_MAXIMIZEBOX), - fActive ) ; - - ReleaseDC( hWnd, hDC ) ; - } - return lRet; - break; - - default: - return DefWindowProc( hWnd, uiMsg, wParam, lParam ) ; - } - - return 0L ; - -} // ibDefWindowProc() - -// ibAdjustWindowRect( HWND hWnd, LPRECT lprc ) -// -// Does the same thing as the USER function AdjustWindowRect(), -// but knows about itsybitsy windows. AdjustWindowRect() is -// bogus for stuff like this. -// -void WINAPI ibAdjustWindowRect( HWND hWnd, LPRECT lprc ) -{ - short cx = 0, cy = 0 ; - UINT nCapSize ; - - nCapSize = GETCAPTIONSIZE( hWnd ) ; - - // First check Windows's styles, then our own. - // - if (TestWinStyle( hWnd, WS_THICKFRAME )) - { - cx = GetSystemMetrics( SM_CXFRAME ) ; - cy = GetSystemMetrics( SM_CYFRAME ) ; - } - else - if (TestWinStyle(hWnd, DS_MODALFRAME )) - { - cx = GetSystemMetrics( SM_CXDLGFRAME ) + GetSystemMetrics( SM_CXBORDER ) ; - cy = GetSystemMetrics( SM_CYDLGFRAME ) + GetSystemMetrics( SM_CYBORDER ) ; - } - else - if (TestWinStyle(hWnd, WS_BORDER )) - { - cx = GetSystemMetrics( SM_CXBORDER ) ; - cy = GetSystemMetrics( SM_CYBORDER ) ; - } - - InflateRect( lprc, cx, cy ) ; - - if (TestWinStyle( hWnd, IBS_VERTCAPTION )) - lprc->left -= nCapSize ; - else - if (TestWinStyle( hWnd, IBS_HORZCAPTION )) - lprc->top -= nCapSize ; - -} // ibAdjustWindowRect() - - -/////////////////////////////////////////////////////////////////////// -// Internal functions -/////////////////////////////////////////////////////////////////////// - -// DepressMinMaxButton() -// -// This function is called when the user has pressed either the min or -// max button (i.e. WM_NCLBUTTONDOWN). We go into a Peekmessage() loop, -// waiting for the mouse to come back up. This allows us to make the -// button change up/down state like a real button does. -// -// lprc points to the rectangle that describes the button the -// user has clicked on. -// -BOOL PASCAL DepressMinMaxButton( HWND hWnd, UINT uiHT, LPRECT lprc ) -{ - BOOL fDepressed = TRUE ; - MSG msg ; - - // Draw button in down state - DrawButton( NULL, hWnd, uiHT == HTMINBUTTON, fDepressed ) ; - SetCapture( hWnd ) ; - - while (TRUE) - { - if (PeekMessage((LPMSG)&msg, NULL, WM_MOUSEFIRST, WM_MOUSELAST, PM_REMOVE)) - { - switch (msg.message) - { - case WM_LBUTTONUP: - if (fDepressed) - DrawButton( NULL, hWnd, uiHT == HTMINBUTTON, !fDepressed ) ; - ReleaseCapture(); - return PtInRect( lprc, msg.pt ) ; - - case WM_MOUSEMOVE: - if (PtInRect( lprc, msg.pt )) - { - if (!fDepressed) - DrawButton( NULL, hWnd, uiHT == HTMINBUTTON, fDepressed = TRUE ) ; - } - else - { - if (fDepressed) - DrawButton( NULL, hWnd, uiHT == HTMINBUTTON, fDepressed = FALSE ) ; - } - break; - } - } - } - -} // DepressMinMaxButton() - -// DrawCaption( HDC hDC, HWND hWnd, LPRECT lprc, -// BOOL fVert, BOOL fSysMenu, BOOL fActive ) -// -// This function draws an itsy bitsy caption bar with or -// without system menu to the dc specified by hDC. The -// caption is drawn to fit within the lprc RECT and is -// drawn//withOut/ borders. -// -BOOL PASCAL DrawCaption( HDC hDC, HWND hWnd, LPRECT lprc, - BOOL fVert, BOOL fSysMenu, BOOL fMin, - BOOL fMax, BOOL fActive ) -{ - RECT rc ; - RECT rcCap ; - COLORREF rgbCaptionBG ; - COLORREF rgbText ; - COLORREF rgbWindowFrame ; - HBRUSH hbrCaption ; - UINT ui ; - UINT nCapSize ; - - nCapSize = GETCAPTIONSIZE( hWnd ) ; - - // Get the colors. - // - rgbWindowFrame = GetSysColor( COLOR_WINDOWFRAME ) ; - - // if we have focus use the active caption color - // otherwise use the inactive caption color - // - if (fActive) - { - rgbText = GetSysColor( COLOR_CAPTIONTEXT ) ; - rgbCaptionBG = GetSysColor( COLOR_ACTIVECAPTION ) ; - } - else - { - if (fWin31) - rgbText = GetSysColor( COLOR_INACTIVECAPTIONTEXT ) ; - else - rgbText = GetSysColor( COLOR_CAPTIONTEXT ) ; - - rgbCaptionBG = GetSysColor( COLOR_INACTIVECAPTION ) ; - } - - SetBkMode( hDC, TRANSPARENT ) ; - SelectObject( hDC, GetStockObject( NULL_BRUSH ) ) ; - SelectObject( hDC, GetStockObject( NULL_PEN ) ) ; - - rcCap = *lprc ; - - if (fSysMenu) - { - if (fVert) - rcCap.top += nCapSize ; - else - rcCap.left += nCapSize ; - } - - if (fMax) - { - if (fVert) - rcCap.bottom -= nCapSize ; - else - rcCap.right -= nCapSize ; - } - - if (fMin) - { - if (fVert) - rcCap.bottom -= nCapSize ; - else - rcCap.right -= nCapSize ; - } - - if (fVert) - { - rc.left = lprc->right - 1 ; - rc.right = lprc->right ; - rc.top = lprc->top ; - rc.bottom = lprc->bottom ; - } - else - { - rc.left = lprc->left ; - rc.right = lprc->right ; - rc.bottom = lprc->bottom ; - rc.top = rc.bottom - 1 ; - } - - SetBkColor( hDC, rgbWindowFrame ) ; - DRAWFASTRECT( hDC, &rc ) ; - - hbrCaption = CreateSolidBrush( rgbCaptionBG ) ; - hbrCaption = (HBRUSH) SelectObject( hDC, hbrCaption ) ; - SelectObject( hDC, (HPEN) GetStockObject( NULL_PEN ) ) ; - if (fVert) - Rectangle( hDC, rcCap.left, rcCap.top, rcCap.right, rcCap.bottom + 1 ) ; - else - Rectangle( hDC, rcCap.left, rcCap.top, rcCap.right+1, rcCap.bottom ) ; - hbrCaption = (HBRUSH) SelectObject( hDC, hbrCaption ) ; - DeleteObject( hbrCaption ) ; - - - // Draw caption text here. Only do it in 3.1 'cause 3.1 gives - // us 'small fonts'. - // - ui = GetWindowTextLength( hWnd ) ; - if (fWin31) - { - HFONT hFont ; - LPSTR lpsz ; - LOGFONT lf ; - TEXTMETRIC tm ; - int cx ; - int cy ; - SIZE Size ; - - lpsz = (char*)GlobalAllocPtr( GHND, ui + 2 ); - if (lpsz) - { - UINT nBkMode ; - - GetWindowText( hWnd, lpsz, ui + 1 ) ; - nBkMode = SetBkMode( hDC, TRANSPARENT ) ; - rgbText = SetTextColor( hDC, rgbText ) ; - - memset( &lf, '\0', sizeof(LOGFONT) ) ; - - lf.lfHeight = -(int)(nCapSize - 3) ; - lf.lfCharSet = ANSI_CHARSET ; - lf.lfQuality = DEFAULT_QUALITY ; - lf.lfClipPrecision = CLIP_LH_ANGLES | CLIP_STROKE_PRECIS ; - if (nCapSize >= 20) - { - lf.lfWeight = FW_BOLD ; - } - - if (fVert) - { - // Can only rotate true type fonts (well, ok, we could - // try and use "modern"). - strcpy( lf.lfFaceName, "Arial" ) ; - lf.lfPitchAndFamily = FF_SWISS | 0x04; - lf.lfEscapement = 900 ; - - // Note: The Win 3.1 documentation for CreateFont() say's - // that the lfOrientation member is ignored. It appears, - // that on Windows 16 3.1 this is true, but when running - // as a 16 bit WinApp on WindowsNT 3.1 the lfOrientation - // must be set or the text does not rotate! - // - lf.lfOrientation = 900 ; - - hFont = CreateFontIndirect( &lf ) ; - hFont = (HFONT) SelectObject( hDC, hFont ) ; - - GetTextExtentPoint( hDC, lpsz, ui, &Size ) ; - cx = rcCap.bottom - ((rcCap.bottom - rcCap.top - Size.cx) / 2) ; - cy = rcCap.left - 1 + ((rcCap.right - rcCap.left - Size.cy) / 2) ; - - // Make sure we got a rotatable font back. - // - GetTextMetrics( hDC, &tm ) ; - if (tm.tmPitchAndFamily & TMPF_VECTOR || - tm.tmPitchAndFamily & TMPF_TRUETYPE) - { - ExtTextOut( hDC, - cy, - min( (long)cx, rcCap.bottom), - ETO_CLIPPED, &rcCap, - lpsz, ui, NULL ) ; - } - - hFont = (HFONT) SelectObject( hDC, hFont ) ; - DeleteObject( hFont ) ; - } - else - { - // Use small fonts always for the horizontal. Cause it looks - // more like "System" than Arial. - // - lf.lfPitchAndFamily = FF_SWISS ; - - hFont = CreateFontIndirect( &lf ) ; - hFont = (HFONT) SelectObject( hDC, hFont ) ; - - GetTextExtentPoint( hDC, lpsz, ui, &Size ) ; - cx = rcCap.left + ((rcCap.right - rcCap.left - Size.cx) / 2) ; - cy = rcCap.top + ((rcCap.bottom - rcCap.top - Size.cy) / 2) ; - - // Figger out how big the string is - // - ExtTextOut( hDC, - max( (long)cx, rcCap.left ), - cy, - ETO_CLIPPED, &rcCap, - lpsz, ui, NULL ) ; - - hFont = (HFONT) SelectObject( hDC, hFont ) ; - DeleteObject( hFont ) ; - } - - // Unsetup the DC - // - rgbText = SetTextColor( hDC, rgbText ) ; - SetBkMode( hDC, nBkMode ) ; - - GlobalFreePtr( lpsz ) ; - } - } - - if (fSysMenu) - DrawSysMenu( hDC, hWnd, FALSE ) ; - - if (fMin) - DrawButton( hDC, hWnd, TRUE, FALSE ) ; - - if (fMax) - DrawButton( hDC, hWnd, FALSE, FALSE ) ; - - return TRUE ; - -} // DrawCaption() - - -// DrawSysMenu( HDC hDC, hWnd, BOOL fInvert ) -// -// Draws the little system menu icon. -// -void PASCAL DrawSysMenu( HDC hDC, HWND hWnd, BOOL fInvert ) -{ - RECT rcIcon ; - RECT rcTemp ; - RECT rc ; - COLORREF rgbIconFace ; - COLORREF rgbWindowFrame ; - BOOL fDC ; - UINT nCapSize ; - - nCapSize = GETCAPTIONSIZE( hWnd ) ; - - if (!hDC) - { - fDC = TRUE ; - hDC = GetWindowDC( hWnd ) ; - } - else - fDC = FALSE ; - - if (hDC) - { - rgbIconFace = GetNearestColor( hDC, RGBLTGRAY ) ; - rgbWindowFrame = GetSysColor( COLOR_WINDOWFRAME ) ; - - GetIconRect( hWnd, &rcIcon ) ; - GetWindowRect( hWnd, &rc ) ; - - OffsetRect( &rcIcon, -rc.left, -rc.top ) ; - - rcTemp = rcIcon ; - - if (TestWinStyle( hWnd, IBS_VERTCAPTION )) - { - rc = rcIcon ; // separator line - rc.top = ++rc.bottom - 1 ; - } - else - { - rc = rcIcon ; // separator line - rc.left = ++rc.right - 1 ; - } - - // Fill - SetBkColor( hDC, rgbIconFace ) ; - DRAWFASTRECT( hDC, &rcTemp ) ; - - // Draw separator line - SetBkColor( hDC, rgbWindowFrame ) ; - DRAWFASTRECT( hDC, &rc ) ; - - if (nCapSize > 4) - { - // Draw the little horizontal doo-hickey - // - rcTemp.top = rcIcon.top + ((nCapSize-1) / 2) ; - rcTemp.bottom = rcTemp.top + 3 ; - rcTemp.left = rcTemp.left + 3 ; - rcTemp.right = rcTemp.right - 1 ; - - SetBkColor( hDC, RGBGRAY ) ; - DRAWFASTRECT( hDC, &rcTemp ) ; - - rc = rcTemp ; - OffsetRect( &rc, -1, -1 ) ; - SetBkColor( hDC, RGBBLACK ) ; - DRAWFASTRECT( hDC, &rc ) ; - - InflateRect( &rc, -1, -1 ) ; - SetBkColor( hDC, RGBWHITE ) ; - DRAWFASTRECT( hDC, &rc ) ; - } - - if (fInvert) - InvertRect( hDC, &rcIcon ) ; - - if (fDC) - ReleaseDC( hWnd, hDC ) ; - } - -} // DrawSysMenu() - -// DoMenu( HWND hWnd ) -// -// Pops up the system menu. -// -BOOL PASCAL DoMenu( HWND hWnd ) -{ - HDC hDC ; - RECT rcIcon ; - RECT rc ; - POINT pt ; - HMENU hMenu ; - DWORD dw ; - - if (!TestWinStyle(hWnd, WS_SYSMENU)) - return FALSE ; - - hDC = GetWindowDC( hWnd ); - if (hDC) - { - // Invert the icon - // - DrawSysMenu( hDC, hWnd, TRUE ) ; - - // Pop up the menu - // - if (TestWinStyle( hWnd, IBS_VERTCAPTION )) - { - pt.x = -1 ; - pt.y = 0 ; - } - else - { - pt.x = 0 ; - pt.y = -1 ; - } - - GetIconRect( hWnd, &rcIcon ) ; - GetWindowRect( hWnd, &rc ) ; - OffsetRect( &rcIcon, -rc.left, -rc.top ) ; - - ClientToScreen( hWnd, &pt ) ; - ClientToScreen( hWnd, (LPPOINT)&rc.right ) ; - - dw = GetWindowLong( hWnd, GWL_STYLE ) ; - SetWindowLong( hWnd, GWL_STYLE, dw | WS_SYSMENU ) ; - - hMenu = GetSystemMenu( hWnd, FALSE ) ; - SetupSystemMenu( hWnd, hMenu ) ; - - SetWindowLong( hWnd, GWL_STYLE, dw ) ; - - TrackPopupMenu( hMenu, 0, //TPM_LEFTALIGN, - pt.x, - pt.y, - 0, - hWnd, - &rc ) ; - - DrawSysMenu( hDC, hWnd, FALSE ) ; - ReleaseDC( hWnd, hDC ) ; - } - return TRUE ; - -} // DoMenu() - -// SetupSystemMenu( HWND hWnd, HMENU hMenu ) -// -// Enables/Disables the appropriate menu items on the -// menu passed for the window passed. -// -void PASCAL SetupSystemMenu( HWND hWnd, HMENU hMenu ) -{ - UINT wMove ; - UINT wSize ; - UINT wMinBox ; - UINT wMaxBox ; - UINT wRestore ; - - // Assume all should be grayed. - // - wSize = wMove = wMinBox = wMaxBox = wRestore = MF_GRAYED ; - - if (TestWinStyle( hWnd, WS_MAXIMIZEBOX ) || IsIconic( hWnd )) - wMaxBox = MF_ENABLED ; - - if (TestWinStyle( hWnd, WS_MINIMIZEBOX )) - wMinBox = MF_ENABLED ; - - if (IsZoomed( hWnd )) - wRestore = MF_ENABLED ; - - if (TestWinStyle( hWnd, WS_THICKFRAME ) && - !(IsIconic( hWnd ) || IsZoomed( hWnd ))) - wSize = MF_ENABLED ; - - if (!IsZoomed( hWnd ) && - !IsIconic( hWnd ) && - TestWinStyle( hWnd, WS_CAPTION ) ) - wMove = MF_ENABLED ; - - EnableMenuItem( hMenu, SC_MOVE, wMove ) ; - EnableMenuItem( hMenu, SC_SIZE, wSize ) ; - EnableMenuItem( hMenu, SC_MINIMIZE, wMinBox ) ; - EnableMenuItem( hMenu, SC_MAXIMIZE, wMaxBox ) ; - EnableMenuItem( hMenu, SC_RESTORE, wRestore ) ; - -} // SetupSystemMenu() - -// GetCaptionRect( HWND hWnd, LPRECT lprc ) -// -// calcluales the rectangle of the mini-caption in screen coords. -// -BOOL PASCAL GetCaptionRect( HWND hWnd, LPRECT lprc ) -{ - UINT nCapSize ; - - nCapSize = GETCAPTIONSIZE( hWnd ) ; - - if (!HASCAPTION( hWnd )) - { - SetRectEmpty( lprc ) ; - return FALSE ; - } - - GetWindowRect( hWnd, lprc ) ; - - // the window might have other non-client components like - // borders - // - if (TestWinStyle( hWnd, WS_THICKFRAME )) - { - lprc->left += GetSystemMetrics( SM_CXFRAME ) ; - lprc->top += GetSystemMetrics( SM_CYFRAME ) ; - lprc->right -= GetSystemMetrics( SM_CXFRAME ) ; - lprc->bottom -= GetSystemMetrics( SM_CYFRAME ) ; - } - else - if (TestWinStyle( hWnd, DS_MODALFRAME )) // if it's a dialog box - { - lprc->left += GetSystemMetrics( SM_CXDLGFRAME ) + GetSystemMetrics( SM_CXBORDER ) ; - lprc->top += GetSystemMetrics( SM_CYDLGFRAME ) + GetSystemMetrics( SM_CYBORDER ) ; - lprc->right -= GetSystemMetrics( SM_CXDLGFRAME ) + GetSystemMetrics( SM_CXBORDER ) ; - lprc->bottom -= GetSystemMetrics( SM_CYDLGFRAME ) + GetSystemMetrics( SM_CYBORDER ) ; - } - else - if (TestWinStyle( hWnd, WS_BORDER )) - { - lprc->left += GetSystemMetrics( SM_CXBORDER ) ; - lprc->top += GetSystemMetrics( SM_CYBORDER ) ; - lprc->right -= GetSystemMetrics( SM_CXBORDER ) ; - lprc->bottom -= GetSystemMetrics( SM_CYBORDER ) ; - } - - if (TestWinStyle( hWnd, IBS_VERTCAPTION )) - lprc->right = lprc->left + nCapSize ; - else - lprc->bottom = lprc->top + nCapSize ; - - return TRUE ; -} // GetCaptionRect() - -// GetIconRect( HWND hWnd, LPRECT lprc ) -// -// Calculates the rect of the icon in screen coordinates. -// -BOOL PASCAL GetIconRect( HWND hWnd, LPRECT lprc ) -{ - UINT nCapSize ; - BOOL fMenu, fVert ; - - fMenu= TestWinStyle( hWnd, WS_SYSMENU ) ; - fVert = TestWinStyle( hWnd, IBS_VERTCAPTION ) ; - - if (!GetCaptionRect( hWnd, lprc )) // window coords - return FALSE ; - - if (!fMenu) - { - SetRectEmpty( lprc ) ; - return FALSE ; - } - - nCapSize = GETCAPTIONSIZE( hWnd ) ; - - if (fVert) - lprc->bottom = lprc->top + nCapSize ; - else - lprc->right = lprc->left + nCapSize ; - - lprc->bottom-- ; - lprc->right-- ; - - return TRUE ; - -} // GetIconRect() - -// GetMinButtonRect() -// -// Calculates the rect of the minimize button in screen -// coordinates. -// -// For horizontal captions, we have the following situation ('Y' is minimize -// and '^' is maximize or restore): -// -// +---------------------------------+ -// | - | | Y | ^ | -// +---------------------------------+ -// | |.......| <-- This is the width (nSize) -// -// For vertical captions, we have the following: -// -// | | -// | | -// | | -// | | -// | | -// | | -// |--|-- -// | Y| . -// |--| . <-- This is the height of the rectangle (nSize) -// | ^| . -// +--+-- -// -// In order to figure out where the minimize button goes, we first need -// to know if there is a maximize button. If so, use GetMaxButtonRect() -// to place... -// -BOOL PASCAL GetMinButtonRect( HWND hWnd, LPRECT lprc ) -{ - if (!TestWinStyle( hWnd, WS_MINIMIZEBOX )) - { - SetRectEmpty( lprc ) ; - return FALSE ; - } - - // The minimize button can be in either position 1 or 2. If there - // is a maximize button, it's in position 2. - // - if (TestWinStyle( hWnd, WS_MAXIMIZEBOX )) - return GetButtonRect( hWnd, 2, lprc ) ; - else - return GetButtonRect( hWnd, 1, lprc ) ; -} - -// GetMaxButtonRect() -// -// Calculates the rect of the maximize button in screen -// coordinates. -// -// The maximize button, if present, is always to the far right -// or bottom. -// -BOOL PASCAL GetMaxButtonRect( HWND hWnd, LPRECT lprc ) -{ - //The maximize button can only be in position 1. - // - if (TestWinStyle( hWnd, WS_MAXIMIZEBOX )) - return GetButtonRect( hWnd, 1, lprc ) ; - else - { - SetRectEmpty( lprc ) ; - return FALSE ; - } -} - -// Get the rect where a button would go. -// -// This function does not care if it's a min or max, just whether -// it is the first from the right/bottom or second from the right/bottom -// and so on.. -// -BOOL PASCAL GetButtonRect( HWND hWnd, UINT nPos, LPRECT lprc ) -{ - UINT nSize = 0 ; - - if (!GetCaptionRect( hWnd, lprc )) //window coords - return FALSE ; - - nSize = GETCAPTIONSIZE( hWnd ) ; - - if (TestWinStyle( hWnd, IBS_VERTCAPTION )) - { - lprc->bottom -= nSize * (nPos-1) ; - lprc->top = lprc->bottom - nSize + 1 ; - } - else - { - lprc->right -= nSize * (nPos-1) ; - lprc->left = lprc->right - nSize + 1 ; - } - - return TRUE ; -} // GetButtonRect() - -// DrawButton( HDC hDC, HWND hWnd, BOOL fMin, BOOL fDepressed ) -// -// Draws either the min, max, or restore buttons. If fMin is FALSE then it -// will draw either the Max or Restore button. If fDepressed is TRUE it will -// draw the button in a down state. -// -void PASCAL DrawButton( HDC hDC, HWND hWnd, BOOL fMin, BOOL fDepressed) -{ - RECT rcButton ; - RECT rc ; - COLORREF rgbWindowFrame ; - BOOL fDC ; - UINT nCapSize ; - UINT nOffset ; - int n ; - - nCapSize = GETCAPTIONSIZE( hWnd ) ; - - // If you look at the standard Windows' min/max buttons, you will notice - // that they have two pixels of 'shadow' to the bottom and right. Since - // our buttons can be really, really small, we only want one pixel of - // shadow when they are small. I arbitrarily decided that if the - // caption size is greater than or equal to 20 we will use two - // pixels. That's what this THREASHOLD stuff does. - // - #define THRESHOLD 20 - nOffset = (nCapSize >= THRESHOLD) ? 2 : 1 ; - - if (!hDC) - { - fDC = TRUE ; - hDC = GetWindowDC( hWnd ) ; - } - else - fDC = FALSE ; - - if (hDC) - { - rgbWindowFrame = GetSysColor( COLOR_WINDOWFRAME ) ; - - if (fMin) - GetMinButtonRect( hWnd, &rcButton ) ; - else - GetMaxButtonRect( hWnd, &rcButton ) ; - - GetWindowRect( hWnd, &rc ) ; - OffsetRect( &rcButton, -rc.left, -rc.top ) ; - - rc = rcButton ; - if (TestWinStyle( hWnd, IBS_VERTCAPTION )) - { - rc = rcButton ; //separator line - rc.bottom = --rc.top + 1 ; - rcButton.right-- ; - } - else - { - rc = rcButton ; //separator line - rc.right = --rc.left + 1 ; - rcButton.bottom-- ; - } - - //Draw separator line - SetBkColor( hDC, rgbWindowFrame ) ; - DRAWFASTRECT( hDC, &rc ) ; - - //Fill - SetBkColor( hDC, RGBLTGRAY ) ; - DRAWFASTRECT( hDC, &rcButton ) ; - - if (!fDepressed) - { - //The normal min/max buttons have one pixel on the top and left - //sides for the highlight, and two pixels on the bottom and - //right side for the shadow. - // - //When our caption is 'small' we only use one pixel on all - //sides. - // - SetBkColor( hDC, RGBWHITE ) ; - //Draw left side - rc = rcButton ; - rc.right = rc.left + 1 ; - DRAWFASTRECT( hDC, &rc ) ; - - //Draw Top - rc = rcButton ; - rc.bottom = rc.top + 1 ; - DRAWFASTRECT( hDC, &rc ) ; - - SetBkColor( hDC, RGBGRAY ) ; - //Draw right side - rc = rcButton ; - rc.left = rc.right - 1 ; - DRAWFASTRECT( hDC, &rc ) ; - if (nCapSize > THRESHOLD) - { - rc.left-- ; - rc.top++ ; - DRAWFASTRECT( hDC, &rc ) ; - } - - //Draw bottom - rc = rcButton ; - rc.top = rc.bottom - 1 ; - DRAWFASTRECT( hDC, &rc ) ; - if (nCapSize > THRESHOLD) - { - rc.top-- ; - rc.left++ ; - DRAWFASTRECT( hDC, &rc ) ; - } - - rcButton.left++ ; - rcButton.top++ ; - rcButton.right -= nOffset ; - rcButton.bottom -= nOffset ; - } - else - { - //Draw depressed state - - SetBkColor( hDC, RGBGRAY ) ; - //Draw left side - rc = rcButton ; - rc.right = rc.left + nOffset ; - DRAWFASTRECT( hDC, &rc ) ; - - //Draw Top - rc = rcButton ; - rc.bottom = rc.top + nOffset ; - DRAWFASTRECT( hDC, &rc ) ; - - rcButton.left += 2 * nOffset ; - rcButton.top += 2 * nOffset ; - } - - // Now draw the arrows. We do not want the - // arrows to grow too large when we have a bigger than - // normal caption, so we restrict their size. - // - // rcButton now represents where we can place our - // arrows. - // - // The maximum size of our arrows (i.e. the width of rcButton) - // has been empirically determined to be SM_CYCAPTION / 2 - // - n = ((GetSystemMetrics( SM_CYCAPTION )) / 2) - - (rcButton.right - rcButton.left) ; - if (n < 1) - InflateRect( &rcButton, n/2-1, n/2-1 ) ; - - if (fMin) - DrawArrow( hDC, &rcButton, ARROW_DOWN ) ; - else - if (IsZoomed( hWnd )) - { - DrawArrow( hDC, &rcButton, ARROW_RESTORE ) ; - } - else - DrawArrow( hDC, &rcButton, ARROW_UP ) ; - - if (fDC) - ReleaseDC( hWnd, hDC ) ; - } - -} // DrawButton() - - -// DrawArrow -// -// Draws either a up or down arrow. The arrow is bound by the rectangle -// -void PASCAL DrawArrow( HDC hdc, LPRECT lprc, UINT uiStyle ) -{ - int row ; - int xTip ; - int yTip ; - RECT rc ; - int nMax = (lprc->bottom - lprc->top) >> 1 ; - - SetBkColor( hdc, RGBBLACK ) ; - - // We draw the arrow by drawing a series of horizontal lines - // - xTip = lprc->left + ((lprc->right - lprc->left+1) >> 1) ; - switch (uiStyle) - { - case ARROW_UP: - yTip = lprc->top + ((lprc->bottom - lprc->top-1) >> 2) ; - for (row = 1 ; row <= nMax ; row++ ) - { - rc.left = xTip - row ; - rc.right = xTip + row - 1 ; - rc.top = yTip + row ; - rc.bottom = rc.top + 1 ; - DRAWFASTRECT( hdc, &rc ) ; - } - break ; - - case ARROW_DOWN: - yTip = lprc->bottom - ((lprc->bottom - lprc->top-1) >> 2) ; - for ( row = nMax ; row > 0 ; row-- ) - { - rc.left = xTip - row ; - rc.right = xTip + row - 1 ; - rc.top = yTip - row ; - rc.bottom = rc.top + 1 ; - DRAWFASTRECT( hdc, &rc ) ; - } - break ; - - case ARROW_RESTORE: - default: - yTip = lprc->top + ((lprc->bottom - lprc->top-1) >> 3) - 2; - for (row = 1 ; row <= nMax ; row++ ) - { - rc.left = xTip - row ; - rc.right = xTip + row - 1 ; - rc.top = yTip + row ; - rc.bottom = rc.top + 1 ; - DRAWFASTRECT( hdc, &rc ) ; - } - - yTip += (nMax+1) * 2 ; - for ( row = nMax ; row > 0 ; row-- ) - { - rc.left = xTip - row ; - rc.right = xTip + row - 1 ; - rc.top = yTip - row ; - rc.bottom = rc.top + 1 ; - DRAWFASTRECT( hdc, &rc ) ; - } - break ; - } - -} // DrawArrow() - -#endif // wxUSE_ITSY_BITSY diff --git a/src/msw/msgdlg.cpp b/src/msw/msgdlg.cpp deleted file mode 100644 index 5abe1042a5..0000000000 --- a/src/msw/msgdlg.cpp +++ /dev/null @@ -1,105 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: msgdlg.cpp -// Purpose: wxMessageDialog -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "msgdlg.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include -#include "wx/defs.h" -#include "wx/utils.h" -#include "wx/dialog.h" -#include "wx/msgdlg.h" -#endif - -#include "wx/msw/private.h" - -#include -#include -#include - -#define wxDIALOG_DEFAULT_X 300 -#define wxDIALOG_DEFAULT_Y 300 - -#if !USE_SHARED_LIBRARY -IMPLEMENT_CLASS(wxMessageDialog, wxDialog) -#endif - -wxMessageDialog::wxMessageDialog(wxWindow *parent, const wxString& message, const wxString& caption, - long style, const wxPoint& pos) -{ - m_caption = caption; - m_message = message; - m_dialogStyle = style; - m_parent = parent; -} - -int wxMessageDialog::ShowModal(void) -{ - HWND hWnd = 0; - if (m_parent) hWnd = (HWND) m_parent->GetHWND(); - unsigned int msStyle = MB_OK; - if (m_dialogStyle & wxYES_NO) - { - if (m_dialogStyle & wxCANCEL) - msStyle = MB_YESNOCANCEL; - else - msStyle = MB_YESNO; - } - if (m_dialogStyle & wxOK) - { - if (m_dialogStyle & wxCANCEL) - msStyle = MB_OKCANCEL; - else - msStyle = MB_OK; - } - if (m_dialogStyle & wxICON_EXCLAMATION) - msStyle |= MB_ICONEXCLAMATION; - else if (m_dialogStyle & wxICON_HAND) - msStyle |= MB_ICONHAND; - else if (m_dialogStyle & wxICON_INFORMATION) - msStyle |= MB_ICONINFORMATION; - else if (m_dialogStyle & wxICON_QUESTION) - msStyle |= MB_ICONQUESTION; - - if (hWnd) - msStyle |= MB_APPLMODAL; - else - msStyle |= MB_TASKMODAL; - - int msAns = MessageBox(hWnd, (LPCSTR)(const char *)m_message, (LPCSTR)(const char *)m_caption, msStyle); - int ans = wxOK; - switch (msAns) - { - case IDCANCEL: - ans = wxID_CANCEL; - break; - case IDOK: - ans = wxID_OK; - break; - case IDYES: - ans = wxID_YES; - break; - case IDNO: - ans = wxID_NO; - break; - } - return ans; -} - diff --git a/src/msw/nativdlg.cpp b/src/msw/nativdlg.cpp deleted file mode 100644 index a99be6dbf8..0000000000 --- a/src/msw/nativdlg.cpp +++ /dev/null @@ -1,293 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: nativdlg.cpp -// Purpose: Native dialog loading code (part of wxWindow) -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include -#include "wx/wx.h" -#endif - -#include "wx/spinbutt.h" -#include "wx/msw/private.h" - -extern wxWindow *wxWndHook; -extern LONG APIENTRY _EXPORT wxDlgProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); - -bool wxWindow::LoadNativeDialog(wxWindow* parent, wxWindowID& id) -{ - m_windowId = id; - wxWndHook = this; - m_hWnd = (WXHWND) ::CreateDialog((HINSTANCE) wxGetInstance(), MAKEINTRESOURCE(id), - (HWND) (parent ? parent->GetHWND() : (WXHWND) NULL), (DLGPROC) wxDlgProc); - wxWndHook = NULL; - - if ( !m_hWnd ) - return FALSE; - - SubclassWin(GetHWND()); - - if (!parent) - wxTopLevelWindows.Append(this); - - if ( parent ) - parent->AddChild(this); - - // Enumerate all children - HWND hWndNext; - hWndNext = ::GetWindow((HWND) m_hWnd, GW_CHILD); - - wxWindow* child = NULL; - if (hWndNext) - child = CreateWindowFromHWND(this, (WXHWND) hWndNext); - - while (hWndNext != (HWND) NULL) - { - hWndNext = ::GetWindow(hWndNext, GW_HWNDNEXT); - if (hWndNext) - child = CreateWindowFromHWND(this, (WXHWND) hWndNext); - } - - return TRUE; -} - -bool wxWindow::LoadNativeDialog(wxWindow* parent, const wxString& name) -{ - SetName(name); - - wxWndHook = this; - m_hWnd = (WXHWND) ::CreateDialog((HINSTANCE) wxGetInstance(), (const char *) name, - (HWND) (parent ? parent->GetHWND() : (WXHWND) NULL), (DLGPROC) wxDlgProc); - wxWndHook = NULL; - - if ( !m_hWnd ) - return FALSE; - - SubclassWin(GetHWND()); - - if (!parent) - wxTopLevelWindows.Append(this); - - if ( parent ) - parent->AddChild(this); - - return TRUE; -} - -wxWindow* wxWindow::GetWindowChild1(wxWindowID& id) -{ - if ( m_windowId == id ) - return this; - - wxNode *node = GetChildren().First(); - while ( node ) - { - wxWindow* child = (wxWindow*) node->Data(); - wxWindow* win = child->GetWindowChild1(id); - if ( win ) - return win; - node = node->Next(); - } - - return NULL; -} - -wxWindow* wxWindow::GetWindowChild(wxWindowID& id) -{ - wxWindow* win = GetWindowChild1(id); - if ( !win ) - { - HWND hWnd = ::GetDlgItem((HWND) GetHWND(), id); - - if (hWnd) - { - wxWindow* child = CreateWindowFromHWND(this, (WXHWND) hWnd); - if (child) - { - child->AddChild(this); - return child; - } - } - } - return NULL; -} - - -wxWindow* wxWindow::CreateWindowFromHWND(wxWindow* parent, WXHWND hWnd) -{ - char buf[256]; - -#ifndef __WIN32__ - GetClassName((HWND) hWnd, buf, 256); -#else -#ifdef UNICODE - GetClassNameW((HWND) hWnd, buf, 256); -#else -#ifdef __TWIN32__ - GetClassName((HWND) hWnd, buf, 256); -#else - GetClassNameA((HWND) hWnd, buf, 256); -#endif -#endif -#endif - - wxString str(buf); - str.UpperCase(); - -#ifndef __WIN32__ - long id = (long) GetWindowWord((HWND) hWnd, GWW_ID); -#else - long id = GetWindowLong((HWND) hWnd, GWL_ID); -#endif - - long style = GetWindowLong((HWND) hWnd, GWL_STYLE); - - wxWindow* win = NULL; - - if (str == "BUTTON") - { - int style1 = (style & 0xFF); - if ((style1 == BS_3STATE) || (style1 == BS_AUTO3STATE) || (style1 == BS_AUTOCHECKBOX) || - (style1 == BS_CHECKBOX)) - { - win = new wxCheckBox; - } - else if ((style1 == BS_AUTORADIOBUTTON) || (style1 == BS_RADIOBUTTON)) - { - win = new wxRadioButton; - } -#if defined(__WIN32__) && defined(BS_BITMAP) - else if (style & BS_BITMAP) - { - // TODO: how to find the bitmap? - win = new wxBitmapButton; - wxLogError("Have not yet implemented bitmap button as BS_BITMAP button."); - } -#endif - else if (style1 == BS_OWNERDRAW) - { - // TODO: how to find the bitmap? - // TODO: can't distinguish between bitmap button and bitmap static. - // Change implementation of wxStaticBitmap to SS_BITMAP. - // PROBLEM: this assumes that we're using resource-based bitmaps. - // So maybe need 2 implementations of bitmap buttons/static controls, - // with a switch in the drawing code. Call default proc if BS_BITMAP. - win = new wxBitmapButton; - } - else if ((style1 == BS_PUSHBUTTON) || (style1 == BS_DEFPUSHBUTTON)) - { - win = new wxButton; - } - else if (style1 == BS_GROUPBOX) - { - win = new wxStaticBox; - } - else - { - char buf[256]; - sprintf(buf, "Don't know what kind of button this is: id = %d", (int) id); - wxLogError(buf); - } - } - else if (str == "COMBOBOX") - { - win = new wxComboBox; - } - // TODO: Problem if the user creates a multiline - but not rich text - text control, - // since wxWin assumes RichEdit control for this. Should have m_isRichText in - // wxTextCtrl. Also, convert as much of the window style as is necessary - // for correct functioning. - // Could have wxWindow::AdoptAttributesFromHWND(WXHWND) - // to be overridden by each control class. - else if (str == "EDIT") - { - win = new wxTextCtrl; - } - else if (str == "LISTBOX") - { - win = new wxListBox; - } - else if (str == "SCROLLBAR") - { - win = new wxScrollBar; - } -#if defined(__WIN95__) && !defined(__TWIN32__) - else if (str == "MSCTLS_UPDOWN32") - { - win = new wxSpinButton; - } -#endif - else if (str == "MSCTLS_TRACKBAR32") - { - // Need to ascertain if it's horiz or vert - win = new wxSlider; - } - else if (str == "STATIC") - { - int style1 = (style & 0xFF); - - if ((style1 == SS_LEFT) || (style1 == SS_RIGHT) || (style1 == SS_SIMPLE)) - win = new wxStaticText; -#if defined(__WIN32__) && defined(BS_BITMAP) - else if (style1 == SS_BITMAP) - { - win = new wxStaticBitmap; - - // Help! this doesn't correspond with the wxWin implementation. - wxLogError("Please make SS_BITMAP statics into owner-draw buttons."); - } -#endif - } - else - { - wxString msg("Don't know how to convert from Windows class "); - msg += str; - wxLogError(msg); - } - - if (win) - { - parent->AddChild(win); - win->SetEventHandler(win); - win->SetHWND(hWnd); - win->SetId(id); - win->SubclassWin(hWnd); - win->AdoptAttributesFromHWND(); - win->SetupColours(); - - return win; - } - else - return NULL; -} - -// Make sure the window style (etc.) reflects the HWND style (roughly) -void wxWindow::AdoptAttributesFromHWND(void) -{ - HWND hWnd = (HWND) GetHWND(); - long style = GetWindowLong((HWND) hWnd, GWL_STYLE); - - if (style & WS_VSCROLL) - m_windowStyle |= wxVSCROLL; - if (style & WS_HSCROLL) - m_windowStyle |= wxHSCROLL; -} - - diff --git a/src/msw/notebook.cpp b/src/msw/notebook.cpp deleted file mode 100644 index 07112916d4..0000000000 --- a/src/msw/notebook.cpp +++ /dev/null @@ -1,525 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: msw/notebook.cpp -// Purpose: implementation of wxNotebook -// Author: Vadim Zeitlin -// Modified by: -// Created: 11.06.98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows license -/////////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "notebook.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -// wxWindows -#ifndef WX_PRECOMP - #include -#endif // WX_PRECOMP - -#include -#include -#include -#include -#include - -#include - -// Windows standard headers -#ifndef __WIN95__ - #error "wxNotebook is only supported Windows 95 and above" -#endif //Win95 - -#include // for SetWindowFont - -#ifndef __TWIN32__ -#ifdef __GNUWIN32__ - #include "wx/msw/gnuwin32/extra.h" -#endif -#endif - -#if !defined(__GNUWIN32__) || defined(__TWIN32__) - #include -#endif - -// ---------------------------------------------------------------------------- -// macros -// ---------------------------------------------------------------------------- - -// check that the page index is valid -#define IS_VALID_PAGE(nPage) (((nPage) >= 0) && ((nPage) < GetPageCount())) - -// hide the ugly cast -#define m_hwnd (HWND)GetHWND() - -// ---------------------------------------------------------------------------- -// event table -// ---------------------------------------------------------------------------- - -#if !USE_SHARED_LIBRARIES - BEGIN_EVENT_TABLE(wxNotebook, wxControl) - EVT_NOTEBOOK_PAGE_CHANGED(-1, wxNotebook::OnSelChange) - - EVT_SIZE(wxNotebook::OnSize) - EVT_ERASE_BACKGROUND(wxNotebook::OnEraseBackground) - EVT_SET_FOCUS(wxNotebook::OnSetFocus) - EVT_NAVIGATION_KEY(wxNotebook::OnNavigationKey) - END_EVENT_TABLE() - - IMPLEMENT_DYNAMIC_CLASS(wxNotebook, wxControl) - IMPLEMENT_DYNAMIC_CLASS(wxNotebookEvent, wxNotifyEvent) -#endif - -// ============================================================================ -// implementation -// ============================================================================ - -// ---------------------------------------------------------------------------- -// wxNotebook construction -// ---------------------------------------------------------------------------- - -// common part of all ctors -void wxNotebook::Init() -{ - m_pImageList = NULL; - m_nSelection = -1; -} - -// default for dynamic class -wxNotebook::wxNotebook() -{ - Init(); -} - -// the same arguments as for wxControl -wxNotebook::wxNotebook(wxWindow *parent, - wxWindowID id, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - Init(); - - Create(parent, id, pos, size, style, name); -} - -// Create() function -bool wxNotebook::Create(wxWindow *parent, - wxWindowID id, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - // base init - SetName(name); - SetParent(parent); - - m_windowId = id == -1 ? NewControlId() : id; - - // colors and font - m_backgroundColour = wxColour(GetSysColor(COLOR_BTNFACE)); - m_foregroundColour = *wxBLACK ; - - // style - m_windowStyle = style | wxTAB_TRAVERSAL; - - long tabStyle = WS_CHILD | WS_VISIBLE | WS_TABSTOP | TCS_TABS; - if ( m_windowStyle & wxTC_MULTILINE ) - tabStyle |= TCS_MULTILINE; - if ( m_windowStyle & wxBORDER ) - tabStyle &= WS_BORDER; - - // create the tab control. - m_hWnd = (WXHWND)CreateWindowEx - ( - 0, // extended style - WC_TABCONTROL, // class name for the tab control - "", // no caption - tabStyle, // style - pos.x, pos.y, size.x, size.y, // size and position - (HWND)parent->GetHWND(), // parent window - (HMENU)m_windowId, // child id - wxGetInstance(), // current instance - NULL // no class data - ); - - if ( m_hWnd == 0 ) { - wxLogSysError("Can't create the notebook control"); - return FALSE; - } - - // Not all compilers recognise SetWindowFont -// SetWindowFont((HWND)m_hwnd, ::GetStockObject(DEFAULT_GUI_FONT), FALSE); - ::SendMessage((HWND) m_hwnd, WM_SETFONT, - (WPARAM)::GetStockObject(DEFAULT_GUI_FONT),TRUE); - - - if ( parent != NULL ) - parent->AddChild(this); - - SubclassWin(m_hWnd); - - return TRUE; -} - -// dtor -wxNotebook::~wxNotebook() -{ -} - -// ---------------------------------------------------------------------------- -// wxNotebook accessors -// ---------------------------------------------------------------------------- -int wxNotebook::GetPageCount() const -{ - // consistency check - wxASSERT( (int)m_aPages.Count() == TabCtrl_GetItemCount(m_hwnd) ); - - return m_aPages.Count(); -} - -int wxNotebook::GetRowCount() const -{ - return TabCtrl_GetRowCount(m_hwnd); -} - -int wxNotebook::SetSelection(int nPage) -{ - wxCHECK_MSG( IS_VALID_PAGE(nPage), -1, "notebook page out of range" ); - - ChangePage(m_nSelection, nPage); - - return TabCtrl_SetCurSel(m_hwnd, nPage); -} - -void wxNotebook::AdvanceSelection(bool bForward) -{ - int nSel = GetSelection(); - int nMax = GetPageCount() - 1; - if ( bForward ) - SetSelection(nSel == nMax ? 0 : nSel + 1); - else - SetSelection(nSel == 0 ? nMax : nSel - 1); -} - -bool wxNotebook::SetPageText(int nPage, const wxString& strText) -{ - wxCHECK_MSG( IS_VALID_PAGE(nPage), FALSE, "notebook page out of range" ); - - TC_ITEM tcItem; - tcItem.mask = TCIF_TEXT; - tcItem.pszText = (char *)strText.c_str(); - - return TabCtrl_SetItem(m_hwnd, nPage, &tcItem) != 0; -} - -wxString wxNotebook::GetPageText(int nPage) const -{ - wxCHECK_MSG( IS_VALID_PAGE(nPage), "", "notebook page out of range" ); - - char buf[256]; - TC_ITEM tcItem; - tcItem.mask = TCIF_TEXT; - tcItem.pszText = buf; - tcItem.cchTextMax = WXSIZEOF(buf); - - wxString str; - if ( TabCtrl_GetItem(m_hwnd, nPage, &tcItem) ) - str = tcItem.pszText; - - return str; -} - -int wxNotebook::GetPageImage(int nPage) const -{ - wxCHECK_MSG( IS_VALID_PAGE(nPage), -1, "notebook page out of range" ); - - TC_ITEM tcItem; - tcItem.mask = TCIF_IMAGE; - - return TabCtrl_GetItem(m_hwnd, nPage, &tcItem) ? tcItem.iImage : -1; -} - -bool wxNotebook::SetPageImage(int nPage, int nImage) -{ - wxCHECK_MSG( IS_VALID_PAGE(nPage), FALSE, "notebook page out of range" ); - - TC_ITEM tcItem; - tcItem.mask = TCIF_IMAGE; - tcItem.iImage = nImage; - - return TabCtrl_SetItem(m_hwnd, nPage, &tcItem) != 0; -} - -void wxNotebook::SetImageList(wxImageList* imageList) -{ - m_pImageList = imageList; - TabCtrl_SetImageList(m_hwnd, (HIMAGELIST)imageList->GetHIMAGELIST()); -} - -// ---------------------------------------------------------------------------- -// wxNotebook operations -// ---------------------------------------------------------------------------- - -// remove one page from the notebook -bool wxNotebook::DeletePage(int nPage) -{ - wxCHECK_MSG( IS_VALID_PAGE(nPage), FALSE, "notebook page out of range" ); - - TabCtrl_DeleteItem(m_hwnd, nPage); - - delete m_aPages[nPage]; - m_aPages.Remove(nPage); - - return TRUE; -} - -// remove one page from the notebook, without deleting -bool wxNotebook::RemovePage(int nPage) -{ - wxCHECK_MSG( IS_VALID_PAGE(nPage), FALSE, "notebook page out of range" ); - - TabCtrl_DeleteItem(m_hwnd, nPage); - - m_aPages.Remove(nPage); - - return TRUE; -} - -// remove all pages -bool wxNotebook::DeleteAllPages() -{ - TabCtrl_DeleteAllItems(m_hwnd); - - int nPageCount = GetPageCount(); - int nPage; - for ( nPage = 0; nPage < nPageCount; nPage++ ) - delete m_aPages[nPage]; - - m_aPages.Clear(); - - return TRUE; -} - -// add a page to the notebook -bool wxNotebook::AddPage(wxNotebookPage *pPage, - const wxString& strText, - bool bSelect, - int imageId) -{ - return InsertPage(GetPageCount(), pPage, strText, bSelect, imageId); -} - -// same as AddPage() but does it at given position -bool wxNotebook::InsertPage(int nPage, - wxNotebookPage *pPage, - const wxString& strText, - bool bSelect, - int imageId) -{ - wxASSERT( pPage != NULL ); - wxCHECK( IS_VALID_PAGE(nPage) || nPage == GetPageCount(), FALSE ); - - // add the tab to the control - TC_ITEM tcItem; - tcItem.mask = TCIF_TEXT | TCIF_IMAGE; - tcItem.pszText = (char *)strText.c_str(); - tcItem.iImage = imageId; - - if ( TabCtrl_InsertItem(m_hwnd, nPage, &tcItem) == -1 ) { - wxLogError("Can't create the notebook page '%s'.", strText.c_str()); - return FALSE; - } - - // save the pointer to the page - m_aPages.Insert(pPage, nPage); - - // some page must be selected: either this one or the first one if there is - // still no selection - if ( bSelect ) - m_nSelection = nPage; - else if ( m_nSelection == -1 ) - m_nSelection = 0; - - // don't show pages by default (we'll need to adjust their size first) - HWND hwnd = (HWND)pPage->GetHWND(); - SetWindowLong(hwnd, GWL_STYLE, GetWindowLong(hwnd, GWL_STYLE) & ~WS_VISIBLE); - - return TRUE; -} - -// ---------------------------------------------------------------------------- -// wxNotebook callbacks -// ---------------------------------------------------------------------------- - -void wxNotebook::OnSize(wxSizeEvent& event) -{ - // emulate page change (it's esp. important to do it first time because - // otherwise our page would stay invisible) - int nSel = m_nSelection; - m_nSelection = -1; - SetSelection(nSel); - - // fit the notebook page to the tab control's display area - RECT rc; - rc.left = rc.top = 0; - GetSize((int *)&rc.right, (int *)&rc.bottom); - - TabCtrl_AdjustRect(m_hwnd, FALSE, &rc); - size_t nCount = m_aPages.Count(); - for ( size_t nPage = 0; nPage < nCount; nPage++ ) { - wxNotebookPage *pPage = m_aPages[nPage]; - pPage->SetSize(rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top); - if ( pPage->GetAutoLayout() ) - pPage->Layout(); - } - - event.Skip(); -} - -void wxNotebook::OnSelChange(wxNotebookEvent& event) -{ - // is it our tab control? - if ( event.GetEventObject() == this ) - ChangePage(event.GetOldSelection(), event.GetSelection()); - - // we want to give others a chance to process this message as well - event.Skip(); -} - -void wxNotebook::OnSetFocus(wxFocusEvent& event) -{ - // set focus to the currently selected page if any - if ( m_nSelection != -1 ) - m_aPages[m_nSelection]->SetFocus(); - - event.Skip(); -} - -void wxNotebook::OnNavigationKey(wxNavigationKeyEvent& event) -{ - if ( event.IsWindowChange() ) { - // change pages - AdvanceSelection(event.GetDirection()); - } - else { - // pass to the parent - if ( GetParent() ) { - event.SetCurrentFocus(this); - GetParent()->GetEventHandler()->ProcessEvent(event); - } - } -} - -// ---------------------------------------------------------------------------- -// wxNotebook base class virtuals -// ---------------------------------------------------------------------------- - -// override these 2 functions to do nothing: everything is done in OnSize - -void wxNotebook::SetConstraintSizes(bool /* recurse */) -{ - // don't set the sizes of the pages - their correct size is not yet known - wxControl::SetConstraintSizes(FALSE); -} - -bool wxNotebook::DoPhase(int /* nPhase */) -{ - return TRUE; -} - -void wxNotebook::Command(wxCommandEvent& event) -{ - wxFAIL_MSG("wxNotebook::Command not implemented"); -} - -bool wxNotebook::MSWNotify(WXWPARAM wParam, WXLPARAM lParam, WXLPARAM* result) -{ - wxNotebookEvent event(wxEVT_NULL, m_windowId); - - NMHDR* hdr = (NMHDR *)lParam; - switch ( hdr->code ) { - case TCN_SELCHANGE: - event.SetEventType(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED); - break; - - case TCN_SELCHANGING: - event.SetEventType(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING); - break; - - default: - return wxControl::MSWNotify(wParam, lParam, result); - } - - event.SetSelection(TabCtrl_GetCurSel(m_hwnd)); - event.SetOldSelection(m_nSelection); - event.SetEventObject(this); - event.SetInt(LOWORD(wParam)); // ctrl id - - bool processed = GetEventHandler()->ProcessEvent(event); - *result = !event.IsAllowed(); - return processed; -} - -// ---------------------------------------------------------------------------- -// wxNotebook helper functions -// ---------------------------------------------------------------------------- - -// hide the currently active panel and show the new one -void wxNotebook::ChangePage(int nOldSel, int nSel) -{ - // MT-FIXME should use a real semaphore - static bool s_bInsideChangePage = FALSE; - - // when we call ProcessEvent(), our own OnSelChange() is called which calls - // this function - break the infinite loop - if ( s_bInsideChangePage ) - return; - - // it's not an error (the message may be generated by the tab control itself) - // and it may happen - just do nothing - if ( nSel == nOldSel ) - return; - - s_bInsideChangePage = TRUE; - - wxNotebookEvent event(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING, m_windowId); - event.SetSelection(nSel); - event.SetOldSelection(nOldSel); - event.SetEventObject(this); - if ( ProcessEvent(event) && !event.IsAllowed() ) - { - // program doesn't allow the page change - s_bInsideChangePage = FALSE; - return; - } - - if ( nOldSel != -1 ) - m_aPages[nOldSel]->Show(FALSE); - - wxNotebookPage *pPage = m_aPages[nSel]; - pPage->Show(TRUE); - pPage->SetFocus(); - - event.SetEventType(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED); - ProcessEvent(event); - - m_nSelection = nSel; - s_bInsideChangePage = FALSE; -} - -void wxNotebook::OnEraseBackground(wxEraseEvent& event) -{ - Default(); -} - diff --git a/src/msw/ole/automtn.cpp b/src/msw/ole/automtn.cpp deleted file mode 100644 index e16be59a32..0000000000 --- a/src/msw/ole/automtn.cpp +++ /dev/null @@ -1,1119 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: automtn.cpp -// Purpose: OLE automation utilities -// Author: Julian Smart -// Modified by: -// Created: 11/6/98 -// RCS-ID: $Id$ -// Copyright: (c) 1998, Julian Smart -// Licence: wxWindows Licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "automtn.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#if defined(__BORLANDC__) -#pragma hdrstop -#endif - -#include "wx/log.h" -#include "wx/msw/ole/automtn.h" - -#include -#include -#include -#include -#include - -// Convert string to Unicode -static BSTR ConvertStringToOle(const wxString& str); - -// Convert string from BSTR to wxString -static wxString ConvertStringFromOle(BSTR bStr); - -// Verifies will fail if the needed buffer size is too large -#define MAX_TIME_BUFFER_SIZE 128 // matches that in timecore.cpp -#define MIN_DATE (-657434L) // about year 100 -#define MAX_DATE 2958465L // about year 9999 - -// Half a second, expressed in days -#define HALF_SECOND (1.0/172800.0) - -// One-based array of days in year at month start -static int rgMonthDays[13] = - {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365}; - -static BOOL OleDateFromTm(WORD wYear, WORD wMonth, WORD wDay, - WORD wHour, WORD wMinute, WORD wSecond, DATE& dtDest); -static BOOL TmFromOleDate(DATE dtSrc, struct tm& tmDest); -static void TmConvertToStandardFormat(struct tm& tmSrc); -static double DoubleFromDate(DATE dt); -static DATE DateFromDouble(double dbl); - -static void ClearVariant(VARIANTARG *pvarg) ; -static void ReleaseVariant(VARIANTARG *pvarg) ; -// static void ShowException(LPOLESTR szMember, HRESULT hr, EXCEPINFO *pexcep, unsigned int uiArgErr); - -/* - * wxAutomationObject - */ - -wxAutomationObject::wxAutomationObject(WXIDISPATCH* dispatchPtr) -{ - m_dispatchPtr = dispatchPtr; -} - -wxAutomationObject::~wxAutomationObject() -{ - if (m_dispatchPtr) - { - ((IDispatch*)m_dispatchPtr)->Release(); - m_dispatchPtr = NULL; - } -} - -#define INVOKEARG(i) (args ? args[i] : *(ptrArgs[i])) - -// For Put/Get, no named arguments are allowed. -bool wxAutomationObject::Invoke(const wxString& member, int action, - wxVariant& retValue, int noArgs, wxVariant args[], const wxVariant* ptrArgs[]) const -{ - if (!m_dispatchPtr) - return FALSE; - - // nonConstMember is necessary because the wxString class doesn't have enough consts... - wxString nonConstMember(member); - - int ch = nonConstMember.Find('.'); - if (ch != -1) - { - // Use dot notation to get the next object - wxString member2(nonConstMember.Left((size_t) ch)); - wxString rest(nonConstMember.Right(nonConstMember.Length() - ch - 1)); - wxAutomationObject obj; - if (!GetObject(obj, member2)) - return FALSE; - return obj.Invoke(rest, action, retValue, noArgs, args, ptrArgs); - } - - VARIANTARG vReturn; - ClearVariant(& vReturn); - - VARIANTARG* vReturnPtr = & vReturn; - - // Find number of names args - int namedArgCount = 0; - int i; - for (i = 0; i < noArgs; i++) - if (!INVOKEARG(i).GetName().IsNull()) - { - namedArgCount ++; - } - - int namedArgStringCount = namedArgCount + 1; - BSTR* argNames = new BSTR[namedArgStringCount]; - argNames[0] = ConvertStringToOle(member); - - // Note that arguments are specified in reverse order - // (all totally logical; hey, we're dealing with OLE here.) - - int j = 0; - for (i = 0; i < namedArgCount; i++) - { - if (!INVOKEARG(i).GetName().IsNull()) - { - argNames[(namedArgCount-j)] = ConvertStringToOle(INVOKEARG(i).GetName()); - j ++; - } - } - - // + 1 for the member name, + 1 again in case we're a 'put' - DISPID* dispIds = new DISPID[namedArgCount + 2]; - - HRESULT hr; - DISPPARAMS dispparams; - unsigned int uiArgErr; - EXCEPINFO excep; - - // Get the IDs for the member and its arguments. GetIDsOfNames expects the - // member name as the first name, followed by argument names (if any). - hr = ((IDispatch*)m_dispatchPtr)->GetIDsOfNames(IID_NULL, argNames, - 1 + namedArgCount, LOCALE_SYSTEM_DEFAULT, dispIds); - if (FAILED(hr)) - { -// ShowException(szMember, hr, NULL, 0); - return FALSE; - } - - // if doing a property put(ref), we need to adjust the first argument to have a - // named arg of DISPID_PROPERTYPUT. - if (action & (DISPATCH_PROPERTYPUT | DISPATCH_PROPERTYPUTREF)) - { - namedArgCount = 1; - dispIds[1] = DISPID_PROPERTYPUT; - vReturnPtr = (VARIANTARG*) NULL; - } - - // Convert the wxVariants to VARIANTARGs - VARIANTARG* oleArgs = new VARIANTARG[noArgs]; - for (i = 0; i < noArgs; i++) - { - // Again, reverse args - if (!ConvertVariantToOle(INVOKEARG((noArgs-1) - i), oleArgs[i])) - return FALSE; // TODO: clean up memory at this point - } - - dispparams.rgdispidNamedArgs = dispIds + 1; - dispparams.rgvarg = oleArgs; - dispparams.cArgs = noArgs; - dispparams.cNamedArgs = namedArgCount; - - excep.pfnDeferredFillIn = NULL; - - hr = ((IDispatch*)m_dispatchPtr)->Invoke(dispIds[0], IID_NULL, LOCALE_SYSTEM_DEFAULT, - action, &dispparams, vReturnPtr, &excep, &uiArgErr); - - for (i = 0; i < namedArgStringCount; i++) - { - SysFreeString(argNames[i]); - } - delete[] argNames; - delete[] dispIds; - - for (i = 0; i < noArgs; i++) - ReleaseVariant(& oleArgs[i]) ; - delete[] oleArgs; - - if (FAILED(hr)) - { - // display the exception information if appropriate: -// ShowException((const char*) member, hr, &excep, uiArgErr); - - // free exception structure information - SysFreeString(excep.bstrSource); - SysFreeString(excep.bstrDescription); - SysFreeString(excep.bstrHelpFile); - - if (vReturnPtr) - ReleaseVariant(vReturnPtr); - return FALSE; - } - else - { - if (vReturnPtr) - { - // Convert result to wxVariant form - ConvertOleToVariant(vReturn, retValue); - // Mustn't release the dispatch pointer - if (vReturn.vt == VT_DISPATCH) - { - vReturn.pdispVal = (IDispatch*) NULL; - } - ReleaseVariant(& vReturn); - } - } - return TRUE; -} - -// Invoke a member function -wxVariant wxAutomationObject::CallMethod(const wxString& member, int noArgs, wxVariant args[]) -{ - wxVariant retVariant; - if (!Invoke(member, DISPATCH_METHOD, retVariant, noArgs, args)) - { - retVariant.MakeNull(); - } - return retVariant; -} - -wxVariant wxAutomationObject::CallMethod(const wxString& member, - const wxVariant& arg1, const wxVariant& arg2, - const wxVariant& arg3, const wxVariant& arg4, - const wxVariant& arg5, const wxVariant& arg6) -{ - const wxVariant** args = new const wxVariant*[6]; - int i = 0; - if (!arg1.IsNull()) - { - args[i] = & arg1; - i ++; - } - if (!arg2.IsNull()) - { - args[i] = & arg2; - i ++; - } - if (!arg3.IsNull()) - { - args[i] = & arg3; - i ++; - } - if (!arg4.IsNull()) - { - args[i] = & arg4; - i ++; - } - if (!arg5.IsNull()) - { - args[i] = & arg5; - i ++; - } - if (!arg6.IsNull()) - { - args[i] = & arg6; - i ++; - } - wxVariant retVariant; - if (!Invoke(member, DISPATCH_METHOD, retVariant, i, NULL, args)) - { - retVariant.MakeNull(); - } - delete[] args; - return retVariant; -} - -// Get/Set property -wxVariant wxAutomationObject::GetProperty(const wxString& property, int noArgs, wxVariant args[]) const -{ - wxVariant retVariant; - if (!Invoke(property, DISPATCH_PROPERTYGET, retVariant, noArgs, args)) - { - retVariant.MakeNull(); - } - return retVariant; -} - -wxVariant wxAutomationObject::GetProperty(const wxString& property, - const wxVariant& arg1, const wxVariant& arg2, - const wxVariant& arg3, const wxVariant& arg4, - const wxVariant& arg5, const wxVariant& arg6) -{ - const wxVariant** args = new const wxVariant*[6]; - int i = 0; - if (!arg1.IsNull()) - { - args[i] = & arg1; - i ++; - } - if (!arg2.IsNull()) - { - args[i] = & arg2; - i ++; - } - if (!arg3.IsNull()) - { - args[i] = & arg3; - i ++; - } - if (!arg4.IsNull()) - { - args[i] = & arg4; - i ++; - } - if (!arg5.IsNull()) - { - args[i] = & arg5; - i ++; - } - if (!arg6.IsNull()) - { - args[i] = & arg6; - i ++; - } - wxVariant retVariant; - if (!Invoke(property, DISPATCH_PROPERTYGET, retVariant, i, NULL, args)) - { - retVariant.MakeNull(); - } - delete[] args; - return retVariant; -} - -bool wxAutomationObject::PutProperty(const wxString& property, int noArgs, wxVariant args[]) -{ - wxVariant retVariant; - if (!Invoke(property, DISPATCH_PROPERTYPUT, retVariant, noArgs, args)) - { - return FALSE; - } - return TRUE; -} - -bool wxAutomationObject::PutProperty(const wxString& property, - const wxVariant& arg1, const wxVariant& arg2, - const wxVariant& arg3, const wxVariant& arg4, - const wxVariant& arg5, const wxVariant& arg6) -{ - const wxVariant** args = new const wxVariant*[6]; - int i = 0; - if (!arg1.IsNull()) - { - args[i] = & arg1; - i ++; - } - if (!arg2.IsNull()) - { - args[i] = & arg2; - i ++; - } - if (!arg3.IsNull()) - { - args[i] = & arg3; - i ++; - } - if (!arg4.IsNull()) - { - args[i] = & arg4; - i ++; - } - if (!arg5.IsNull()) - { - args[i] = & arg5; - i ++; - } - if (!arg6.IsNull()) - { - args[i] = & arg6; - i ++; - } - wxVariant retVariant; - bool ret = Invoke(property, DISPATCH_PROPERTYPUT, retVariant, i, NULL, args); - delete[] args; - return ret; -} - - -// Uses DISPATCH_PROPERTYGET -// and returns a dispatch pointer. The calling code should call Release -// on the pointer, though this could be implicit by constructing an wxAutomationObject -// with it and letting the destructor call Release. -WXIDISPATCH* wxAutomationObject::GetDispatchProperty(const wxString& property, int noArgs, wxVariant args[]) const -{ - wxVariant retVariant; - if (Invoke(property, DISPATCH_PROPERTYGET, retVariant, noArgs, args)) - { - if (retVariant.GetType() == "void*") - { - return (WXIDISPATCH*) retVariant.GetVoidPtr(); - } - else - { - return (WXIDISPATCH*) NULL; - } - } - else - return (WXIDISPATCH*) NULL; -} - -// A way of initialising another wxAutomationObject with a dispatch object -bool wxAutomationObject::GetObject(wxAutomationObject& obj, const wxString& property, int noArgs, wxVariant args[]) const -{ - WXIDISPATCH* dispatch = GetDispatchProperty(property, noArgs, args); - if (dispatch) - { - obj.SetDispatchPtr(dispatch); - return TRUE; - } - else - return FALSE; -} - -// Get a dispatch pointer from the current object associated -// with a class id -bool wxAutomationObject::GetInstance(const wxString& classId) const -{ - if (m_dispatchPtr) - return FALSE; - - CLSID clsId; - IUnknown * pUnk = NULL; - - BasicString unicodeName((const char*) classId); - - if (FAILED(CLSIDFromProgID((BSTR) unicodeName, &clsId))) - { - wxLogWarning("Cannot obtain CLSID from ProgID"); - return FALSE; - } - - if (FAILED(GetActiveObject(clsId, NULL, &pUnk))) - { - wxLogWarning("Cannot find an active object"); - return FALSE; - } - - if (pUnk->QueryInterface(IID_IDispatch, (LPVOID*) &m_dispatchPtr) != S_OK) - { - wxLogWarning("Cannot find IDispatch interface"); - return FALSE; - } - - return TRUE; -} - -// Get a dispatch pointer from a new object associated -// with the given class id -bool wxAutomationObject::CreateInstance(const wxString& classId) const -{ - if (m_dispatchPtr) - return FALSE; - - CLSID clsId; - IUnknown * pUnk = NULL; - - BasicString unicodeName((const char*) classId); - - if (FAILED(CLSIDFromProgID((BSTR) unicodeName, &clsId))) - { - wxLogWarning("Cannot obtain CLSID from ProgID"); - return FALSE; - } - - // start a new copy of Excel, grab the IDispatch interface - if (FAILED(CoCreateInstance(clsId, NULL, CLSCTX_LOCAL_SERVER, IID_IDispatch, (void**)&m_dispatchPtr))) - { - wxLogWarning("Cannot start an instance of this class."); - return FALSE; - } - - return TRUE; -} - - -bool wxAutomationObject::ConvertVariantToOle(const wxVariant& variant, VARIANTARG& oleVariant) -{ - ClearVariant(&oleVariant); - if (variant.IsNull()) - { - oleVariant.vt = VT_NULL; - return TRUE; - } - - wxString type(variant.GetType()); - - if (type == "long") - { - oleVariant.vt = VT_I4; - oleVariant.lVal = variant.GetLong() ; - } - else if (type == "double") - { - oleVariant.vt = VT_R8; - oleVariant.dblVal = variant.GetDouble(); - } - else if (type == "bool") - { - oleVariant.vt = VT_BOOL; -#ifdef __WATCOMC__ - oleVariant.bool = variant.GetBool(); -#else - oleVariant.boolVal = variant.GetBool(); -#endif - } - else if (type == "string") - { - wxString str( variant.GetString() ); - oleVariant.vt = VT_BSTR; - oleVariant.bstrVal = ConvertStringToOle(str); - } - else if (type == "date") - { - wxDate date( variant.GetDate() ); - oleVariant.vt = VT_DATE; - - if (!OleDateFromTm(date.GetYear(), date.GetMonth(), date.GetDay(), - 0, 0, 0, oleVariant.date)) - return FALSE; - } - else if (type == "time") - { - wxTime time( variant.GetTime() ); - oleVariant.vt = VT_DATE; - - if (!OleDateFromTm(time.GetYear(), time.GetMonth(), time.GetDay(), - time.GetHour(), time.GetMinute(), time.GetSecond(), oleVariant.date)) - return FALSE; - } - else if (type == "void*") - { - oleVariant.vt = VT_DISPATCH; - oleVariant.pdispVal = (IDispatch*) variant.GetVoidPtr(); - } - else if (type == "list" || type == "stringlist") - { - oleVariant.vt = VT_VARIANT | VT_ARRAY; - - SAFEARRAY *psa; - SAFEARRAYBOUND saBound; - VARIANTARG *pvargBase; - VARIANTARG *pvarg; - int i, j; - - int iCount = variant.GetCount(); - - saBound.lLbound = 0; - saBound.cElements = iCount; - - psa = SafeArrayCreate(VT_VARIANT, 1, &saBound); - if (psa == NULL) - return FALSE; - - SafeArrayAccessData(psa, (void**)&pvargBase); - - pvarg = pvargBase; - for (i = 0; i < iCount; i++) - { - // copy each string in the list of strings - wxVariant eachVariant(variant[i]); - if (!ConvertVariantToOle(eachVariant, * pvarg)) - { - // memory failure: back out and free strings alloc'ed up to - // now, and then the array itself. - pvarg = pvargBase; - for (j = 0; j < i; j++) - { - SysFreeString(pvarg->bstrVal); - pvarg++; - } - SafeArrayDestroy(psa); - return FALSE; - } - pvarg++; - } - - SafeArrayUnaccessData(psa); - - oleVariant.parray = psa; - } - else - { - oleVariant.vt = VT_NULL; - return FALSE; - } - return TRUE; -} - -#ifndef VT_TYPEMASK -#define VT_TYPEMASK 0xfff -#endif - -bool wxAutomationObject::ConvertOleToVariant(const VARIANTARG& oleVariant, wxVariant& variant) -{ - switch (oleVariant.vt & VT_TYPEMASK) - { - case VT_BSTR: - { - wxString str(ConvertStringFromOle(oleVariant.bstrVal)); - variant = str; - break; - } - case VT_DATE: - { - struct tm tmTemp; - if (!TmFromOleDate(oleVariant.date, tmTemp)) - return FALSE; - - wxDate date(tmTemp.tm_yday, tmTemp.tm_mon, tmTemp.tm_year); - wxTime time(date, tmTemp.tm_hour, tmTemp.tm_min, tmTemp.tm_sec); - - variant = time; - break; - } - case VT_I4: - { - variant = (long) oleVariant.lVal; - break; - } - case VT_I2: - { - variant = (long) oleVariant.iVal; - break; - } - - case VT_BOOL: - { -#ifdef __WATCOMC__ - variant = (bool) (oleVariant.bool != 0); -#else - variant = (bool) (oleVariant.boolVal != 0); -#endif - break; - } - case VT_R8: - { - variant = oleVariant.dblVal; - break; - } - case VT_ARRAY: - { - variant.ClearList(); - - int cDims, cElements, i; - VARIANTARG* pvdata; - - // Iterate the dimensions: number of elements is x*y*z - for (cDims = 0, cElements = 1; - cDims < oleVariant.parray->cDims; cDims ++) - cElements *= oleVariant.parray->rgsabound[cDims].cElements; - - // Get a pointer to the data - HRESULT hr = SafeArrayAccessData(oleVariant.parray, (void HUGEP* FAR*) & pvdata); - if (hr != NOERROR) - return FALSE; - // Iterate the data. - for (i = 0; i < cElements; i++) - { - VARIANTARG& oleElement = pvdata[i]; - wxVariant vElement; - if (!ConvertOleToVariant(oleElement, vElement)) - return FALSE; - - variant.Append(vElement); - } - SafeArrayUnaccessData(oleVariant.parray); - break; - } - case VT_DISPATCH: - { - variant = (void*) oleVariant.pdispVal; - break; - } - case VT_NULL: - { - variant.MakeNull(); - break; - } - case VT_EMPTY: - { - break; // Ignore Empty Variant, used only during destruction of objects - } - default: - { - wxLogError("wxAutomationObject::ConvertOleToVariant: Unknown variant value type"); - return FALSE; - } - } - return TRUE; -} - -static BSTR ConvertStringToOle(const wxString& str) -{ -/* - unsigned int len = strlen((const char*) str); - unsigned short* s = new unsigned short[len*2+2]; - unsigned int i; - memset(s, 0, len*2+2); - for (i=0; i < len; i++) - s[i*2] = str[i]; -*/ - BasicString bstr((const char*) str); - return bstr.Get(); -} - -static wxString ConvertStringFromOle(BSTR bStr) -{ - int len = SysStringLen(bStr) + 1; - char *buf = new char[len]; - int i = wcstombs( buf, bStr, len); - - wxString str(buf); - delete[] buf; - return str; -} - -// ---------------------------------------------------------------------------- -// BasicString -// ---------------------------------------------------------------------------- - -// ctor takes an ANSI string and transforms it to Unicode -BasicString::BasicString(const char *sz) -{ - // get the size of required buffer - UINT lenAnsi = strlen(sz); - UINT lenWide = mbstowcs(NULL, sz, lenAnsi); - - if ( lenWide > 0 ) { - m_wzBuf = new OLECHAR[lenWide + 1]; - mbstowcs(m_wzBuf, sz, lenAnsi); - m_wzBuf[lenWide] = L'\0'; - } - else { - m_wzBuf = NULL; - } -} - -// dtor frees memory -BasicString::~BasicString() -{ - delete [] m_wzBuf; -} - -///////////////////////////////////////////////////////////////////////////// -// COleDateTime class HELPERS - implementation - -BOOL OleDateFromTm(WORD wYear, WORD wMonth, WORD wDay, - WORD wHour, WORD wMinute, WORD wSecond, DATE& dtDest) -{ - // Validate year and month (ignore day of week and milliseconds) - if (wYear > 9999 || wMonth < 1 || wMonth > 12) - return FALSE; - - // Check for leap year and set the number of days in the month - BOOL bLeapYear = ((wYear & 3) == 0) && - ((wYear % 100) != 0 || (wYear % 400) == 0); - - int nDaysInMonth = - rgMonthDays[wMonth] - rgMonthDays[wMonth-1] + - ((bLeapYear && wDay == 29 && wMonth == 2) ? 1 : 0); - - // Finish validating the date - if (wDay < 1 || wDay > nDaysInMonth || - wHour > 23 || wMinute > 59 || - wSecond > 59) - { - return FALSE; - } - - // Cache the date in days and time in fractional days - long nDate; - double dblTime; - - //It is a valid date; make Jan 1, 1AD be 1 - nDate = wYear*365L + wYear/4 - wYear/100 + wYear/400 + - rgMonthDays[wMonth-1] + wDay; - - // If leap year and it's before March, subtract 1: - if (wMonth <= 2 && bLeapYear) - --nDate; - - // Offset so that 12/30/1899 is 0 - nDate -= 693959L; - - dblTime = (((long)wHour * 3600L) + // hrs in seconds - ((long)wMinute * 60L) + // mins in seconds - ((long)wSecond)) / 86400.; - - dtDest = (double) nDate + ((nDate >= 0) ? dblTime : -dblTime); - - return TRUE; -} - -BOOL TmFromOleDate(DATE dtSrc, struct tm& tmDest) -{ - // The legal range does not actually span year 0 to 9999. - if (dtSrc > MAX_DATE || dtSrc < MIN_DATE) // about year 100 to about 9999 - return FALSE; - - long nDays; // Number of days since Dec. 30, 1899 - long nDaysAbsolute; // Number of days since 1/1/0 - long nSecsInDay; // Time in seconds since midnight - long nMinutesInDay; // Minutes in day - - long n400Years; // Number of 400 year increments since 1/1/0 - long n400Century; // Century within 400 year block (0,1,2 or 3) - long n4Years; // Number of 4 year increments since 1/1/0 - long n4Day; // Day within 4 year block - // (0 is 1/1/yr1, 1460 is 12/31/yr4) - long n4Yr; // Year within 4 year block (0,1,2 or 3) - BOOL bLeap4 = TRUE; // TRUE if 4 year block includes leap year - - double dblDate = dtSrc; // tempory serial date - - // If a valid date, then this conversion should not overflow - nDays = (long)dblDate; - - // Round to the second - dblDate += ((dtSrc > 0.0) ? HALF_SECOND : -HALF_SECOND); - - nDaysAbsolute = (long)dblDate + 693959L; // Add days from 1/1/0 to 12/30/1899 - - dblDate = fabs(dblDate); - nSecsInDay = (long)((dblDate - floor(dblDate)) * 86400.); - - // Calculate the day of week (sun=1, mon=2...) - // -1 because 1/1/0 is Sat. +1 because we want 1-based - tmDest.tm_wday = (int)((nDaysAbsolute - 1) % 7L) + 1; - - // Leap years every 4 yrs except centuries not multiples of 400. - n400Years = (long)(nDaysAbsolute / 146097L); - - // Set nDaysAbsolute to day within 400-year block - nDaysAbsolute %= 146097L; - - // -1 because first century has extra day - n400Century = (long)((nDaysAbsolute - 1) / 36524L); - - // Non-leap century - if (n400Century != 0) - { - // Set nDaysAbsolute to day within century - nDaysAbsolute = (nDaysAbsolute - 1) % 36524L; - - // +1 because 1st 4 year increment has 1460 days - n4Years = (long)((nDaysAbsolute + 1) / 1461L); - - if (n4Years != 0) - n4Day = (long)((nDaysAbsolute + 1) % 1461L); - else - { - bLeap4 = FALSE; - n4Day = (long)nDaysAbsolute; - } - } - else - { - // Leap century - not special case! - n4Years = (long)(nDaysAbsolute / 1461L); - n4Day = (long)(nDaysAbsolute % 1461L); - } - - if (bLeap4) - { - // -1 because first year has 366 days - n4Yr = (n4Day - 1) / 365; - - if (n4Yr != 0) - n4Day = (n4Day - 1) % 365; - } - else - { - n4Yr = n4Day / 365; - n4Day %= 365; - } - - // n4Day is now 0-based day of year. Save 1-based day of year, year number - tmDest.tm_yday = (int)n4Day + 1; - tmDest.tm_year = n400Years * 400 + n400Century * 100 + n4Years * 4 + n4Yr; - - // Handle leap year: before, on, and after Feb. 29. - if (n4Yr == 0 && bLeap4) - { - // Leap Year - if (n4Day == 59) - { - /* Feb. 29 */ - tmDest.tm_mon = 2; - tmDest.tm_mday = 29; - goto DoTime; - } - - // Pretend it's not a leap year for month/day comp. - if (n4Day >= 60) - --n4Day; - } - - // Make n4DaY a 1-based day of non-leap year and compute - // month/day for everything but Feb. 29. - ++n4Day; - - // Month number always >= n/32, so save some loop time */ - for (tmDest.tm_mon = (n4Day >> 5) + 1; - n4Day > rgMonthDays[tmDest.tm_mon]; tmDest.tm_mon++); - - tmDest.tm_mday = (int)(n4Day - rgMonthDays[tmDest.tm_mon-1]); - -DoTime: - if (nSecsInDay == 0) - tmDest.tm_hour = tmDest.tm_min = tmDest.tm_sec = 0; - else - { - tmDest.tm_sec = (int)nSecsInDay % 60L; - nMinutesInDay = nSecsInDay / 60L; - tmDest.tm_min = (int)nMinutesInDay % 60; - tmDest.tm_hour = (int)nMinutesInDay / 60; - } - - return TRUE; -} - -void TmConvertToStandardFormat(struct tm& tmSrc) -{ - // Convert afx internal tm to format expected by runtimes (_tcsftime, etc) - tmSrc.tm_year -= 1900; // year is based on 1900 - tmSrc.tm_mon -= 1; // month of year is 0-based - tmSrc.tm_wday -= 1; // day of week is 0-based - tmSrc.tm_yday -= 1; // day of year is 0-based -} - -double DoubleFromDate(DATE dt) -{ - // No problem if positive - if (dt >= 0) - return dt; - - // If negative, must convert since negative dates not continuous - // (examples: -1.25 to -.75, -1.50 to -.50, -1.75 to -.25) - double temp = ceil(dt); - return temp - (dt - temp); -} - -DATE DateFromDouble(double dbl) -{ - // No problem if positive - if (dbl >= 0) - return dbl; - - // If negative, must convert since negative dates not continuous - // (examples: -.75 to -1.25, -.50 to -1.50, -.25 to -1.75) - double temp = floor(dbl); // dbl is now whole part - return temp + (temp - dbl); -} - -/* - * ClearVariant - * - * Zeros a variant structure without regard to current contents - */ -static void ClearVariant(VARIANTARG *pvarg) -{ - pvarg->vt = VT_EMPTY; - pvarg->wReserved1 = 0; - pvarg->wReserved2 = 0; - pvarg->wReserved3 = 0; - pvarg->lVal = 0; -} - -/* - * ReleaseVariant - * - * Clears a particular variant structure and releases any external objects - * or memory contained in the variant. Supports the data types listed above. - */ -static void ReleaseVariant(VARIANTARG *pvarg) -{ - VARTYPE vt; - VARIANTARG _huge *pvargArray; - long lLBound, lUBound, l; - - vt = pvarg->vt & 0xfff; // mask off flags - - // check if an array. If so, free its contents, then the array itself. - if (V_ISARRAY(pvarg)) - { - // variant arrays are all this routine currently knows about. Since a - // variant can contain anything (even other arrays), call ourselves - // recursively. - if (vt == VT_VARIANT) - { - SafeArrayGetLBound(pvarg->parray, 1, &lLBound); - SafeArrayGetUBound(pvarg->parray, 1, &lUBound); - - if (lUBound > lLBound) - { - lUBound -= lLBound; - - SafeArrayAccessData(pvarg->parray, (void**)&pvargArray); - - for (l = 0; l < lUBound; l++) - { - ReleaseVariant(pvargArray); - pvargArray++; - } - - SafeArrayUnaccessData(pvarg->parray); - } - } - else - { - wxLogWarning("ReleaseVariant: Array contains non-variant type"); - } - - // Free the array itself. - SafeArrayDestroy(pvarg->parray); - } - else - { - switch (vt) - { - case VT_DISPATCH: - if (pvarg->pdispVal) - pvarg->pdispVal->Release(); - break; - - case VT_BSTR: - SysFreeString(pvarg->bstrVal); - break; - - case VT_I2: - case VT_BOOL: - case VT_R8: - case VT_ERROR: // to avoid erroring on an error return from Excel - // no work for these types - break; - - default: - wxLogWarning("ReleaseVariant: Unknown type"); - break; - } - } - - ClearVariant(pvarg); -} - -#if 0 - -void ShowException(LPOLESTR szMember, HRESULT hr, EXCEPINFO *pexcep, unsigned int uiArgErr) -{ - TCHAR szBuf[512]; - - switch (GetScode(hr)) - { - case DISP_E_UNKNOWNNAME: - wsprintf(szBuf, L"%s: Unknown name or named argument.", szMember); - break; - - case DISP_E_BADPARAMCOUNT: - wsprintf(szBuf, L"%s: Incorrect number of arguments.", szMember); - break; - - case DISP_E_EXCEPTION: - wsprintf(szBuf, L"%s: Error %d: ", szMember, pexcep->wCode); - if (pexcep->bstrDescription != NULL) - lstrcat(szBuf, pexcep->bstrDescription); - else - lstrcat(szBuf, L"<>"); - break; - - case DISP_E_MEMBERNOTFOUND: - wsprintf(szBuf, L"%s: method or property not found.", szMember); - break; - - case DISP_E_OVERFLOW: - wsprintf(szBuf, L"%s: Overflow while coercing argument values.", szMember); - break; - - case DISP_E_NONAMEDARGS: - wsprintf(szBuf, L"%s: Object implementation does not support named arguments.", - szMember); - break; - - case DISP_E_UNKNOWNLCID: - wsprintf(szBuf, L"%s: The locale ID is unknown.", szMember); - break; - - case DISP_E_PARAMNOTOPTIONAL: - wsprintf(szBuf, L"%s: Missing a required parameter.", szMember); - break; - - case DISP_E_PARAMNOTFOUND: - wsprintf(szBuf, L"%s: Argument not found, argument %d.", szMember, uiArgErr); - break; - - case DISP_E_TYPEMISMATCH: - wsprintf(szBuf, L"%s: Type mismatch, argument %d.", szMember, uiArgErr); - break; - - default: - wsprintf(szBuf, L"%s: Unknown error occured.", szMember); - break; - } - - wxLogWarning(szBuf); -} - -#endif - diff --git a/src/msw/ole/dataobj.cpp b/src/msw/ole/dataobj.cpp deleted file mode 100644 index 2d202e39eb..0000000000 --- a/src/msw/ole/dataobj.cpp +++ /dev/null @@ -1,421 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: msw/ole/dataobj.cpp -// Purpose: implementation of wx[I]DataObject class -// Author: Vadim Zeitlin -// Modified by: -// Created: 10.05.98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows license -/////////////////////////////////////////////////////////////////////////////// - -// ============================================================================ -// declarations -// ============================================================================ - -// ---------------------------------------------------------------------------- -// headers -// ---------------------------------------------------------------------------- - -#ifdef __GNUG__ - #pragma implementation "dataobj.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#if defined(__BORLANDC__) - #pragma hdrstop -#endif - -#include - -#if defined(__WIN32__) && !defined(__GNUWIN32__) - -#include -#include -#include - -#ifndef __WIN32__ - #include - #include -#endif - -// ---------------------------------------------------------------------------- -// functions -// ---------------------------------------------------------------------------- - -static const char *GetTymedName(DWORD tymed); - -// ---------------------------------------------------------------------------- -// wxIEnumFORMATETC interface implementation -// ---------------------------------------------------------------------------- -class wxIEnumFORMATETC : public IEnumFORMATETC -{ -public: - wxIEnumFORMATETC(CLIPFORMAT cf); - - DECLARE_IUNKNOWN_METHODS; - - // IEnumFORMATETC - STDMETHODIMP Next(ULONG celt, FORMATETC *rgelt, ULONG *pceltFetched); - STDMETHODIMP Skip(ULONG celt); - STDMETHODIMP Reset(); - STDMETHODIMP Clone(IEnumFORMATETC **ppenum); - -private: - FORMATETC m_format; // (unique @@@) format we can provide data in - ULONG m_nCurrent; // current enum position (currently either 0 or 1) -}; - -// ---------------------------------------------------------------------------- -// wxIDataObject implementation of IDataObject interface -// ---------------------------------------------------------------------------- -class wxIDataObject : public IDataObject -{ -public: - wxIDataObject(wxDataObject *pDataObject); - - DECLARE_IUNKNOWN_METHODS; - - // IDataObject - STDMETHODIMP GetData(FORMATETC *pformatetcIn, STGMEDIUM *pmedium); - STDMETHODIMP GetDataHere(FORMATETC *pformatetc, STGMEDIUM *pmedium); - STDMETHODIMP QueryGetData(FORMATETC *pformatetc); - STDMETHODIMP GetCanonicalFormatEtc(FORMATETC *In, FORMATETC *pOut); - STDMETHODIMP SetData(FORMATETC *pfetc, STGMEDIUM *pmedium, BOOL fRelease); - STDMETHODIMP EnumFormatEtc(DWORD dwDirection, IEnumFORMATETC **ppenumFEtc); - STDMETHODIMP DAdvise(FORMATETC *pfetc, DWORD ad, IAdviseSink *p, DWORD *pdw); - STDMETHODIMP DUnadvise(DWORD dwConnection); - STDMETHODIMP EnumDAdvise(IEnumSTATDATA **ppenumAdvise); - -private: - wxDataObject *m_pDataObject; // pointer to C++ class we belong to -}; - -// ============================================================================ -// implementation -// ============================================================================ - -// ---------------------------------------------------------------------------- -// wxIEnumFORMATETC -// ---------------------------------------------------------------------------- - -BEGIN_IID_TABLE(wxIEnumFORMATETC) - ADD_IID(Unknown) - ADD_IID(EnumFORMATETC) -END_IID_TABLE; - -IMPLEMENT_IUNKNOWN_METHODS(wxIEnumFORMATETC) - -wxIEnumFORMATETC::wxIEnumFORMATETC(CLIPFORMAT cf) -{ - m_format.cfFormat = cf; - m_format.ptd = NULL; - m_format.dwAspect = DVASPECT_CONTENT; - m_format.lindex = -1; - m_format.tymed = TYMED_HGLOBAL; - m_cRef = 0; - m_nCurrent = 0; -} - -STDMETHODIMP wxIEnumFORMATETC::Next(ULONG celt, - FORMATETC *rgelt, - ULONG *pceltFetched) -{ - wxLogTrace("wxIEnumFORMATETC::Next"); - - if ( celt > 1 ) - return S_FALSE; - - if ( m_nCurrent == 0 ) { - *rgelt = m_format; - m_nCurrent++; - - return S_OK; - } - else - return S_FALSE; -} - -STDMETHODIMP wxIEnumFORMATETC::Skip(ULONG celt) -{ - wxLogTrace("wxIEnumFORMATETC::Skip"); - - if ( m_nCurrent == 0 ) - m_nCurrent++; - - return S_FALSE; -} - -STDMETHODIMP wxIEnumFORMATETC::Reset() -{ - wxLogTrace("wxIEnumFORMATETC::Reset"); - - m_nCurrent = 0; - - return S_OK; -} - -STDMETHODIMP wxIEnumFORMATETC::Clone(IEnumFORMATETC **ppenum) -{ - wxLogTrace("wxIEnumFORMATETC::Clone"); - - wxIEnumFORMATETC *pNew = new wxIEnumFORMATETC(m_format.cfFormat); - pNew->AddRef(); - *ppenum = pNew; - - return S_OK; -} - -// ---------------------------------------------------------------------------- -// wxIDataObject -// ---------------------------------------------------------------------------- - -BEGIN_IID_TABLE(wxIDataObject) - ADD_IID(Unknown) - ADD_IID(DataObject) -END_IID_TABLE; - -IMPLEMENT_IUNKNOWN_METHODS(wxIDataObject) - -wxIDataObject::wxIDataObject(wxDataObject *pDataObject) -{ - m_cRef = 0; - m_pDataObject = pDataObject; -} - -// get data functions -STDMETHODIMP wxIDataObject::GetData(FORMATETC *pformatetcIn, STGMEDIUM *pmedium) -{ - wxLogTrace("wxIDataObject::GetData"); - - // is data is in our format? - HRESULT hr = QueryGetData(pformatetcIn); - if ( FAILED(hr) ) - return hr; - - // alloc memory - HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE | GMEM_SHARE, - m_pDataObject->GetDataSize()); - if ( hGlobal == NULL ) { - wxLogLastError("GlobalAlloc"); - return E_OUTOFMEMORY; - } - - // copy data - pmedium->tymed = TYMED_HGLOBAL; - pmedium->hGlobal = hGlobal; - pmedium->pUnkForRelease = NULL; - - hr = GetDataHere(pformatetcIn, pmedium); - if ( FAILED(hr) ) { - GlobalFree(hGlobal); - return hr; - } - - return S_OK; -} - -STDMETHODIMP wxIDataObject::GetDataHere(FORMATETC *pformatetc, - STGMEDIUM *pmedium) -{ - wxLogTrace("wxIDataObject::GetDataHere"); - - // put data in caller provided medium - if ( pmedium->tymed != TYMED_HGLOBAL ) - return DV_E_TYMED; - - // copy data - void *pBuf = GlobalLock(pmedium->hGlobal); - if ( pBuf == NULL ) { - wxLogLastError("GlobalLock"); - return E_OUTOFMEMORY; - } - - m_pDataObject->GetDataHere(pBuf); - - GlobalUnlock(pmedium->hGlobal); - - return S_OK; -} - -// set data functions (not implemented) -STDMETHODIMP wxIDataObject::SetData(FORMATETC *pformatetc, - STGMEDIUM *pmedium, - BOOL fRelease) -{ - wxLogTrace("wxIDataObject::SetData"); - return E_NOTIMPL; -} - -// information functions -STDMETHODIMP wxIDataObject::QueryGetData(FORMATETC *pformatetc) -{ - // do we accept data in this format? - if ( pformatetc == NULL ) { - wxLogTrace("wxIDataObject::QueryGetData: invalid ptr."); - return E_INVALIDARG; - } - - // the only one allowed by current COM implementation - if ( pformatetc->lindex != -1 ) { - wxLogTrace("wxIDataObject::QueryGetData: bad lindex %d", - pformatetc->lindex); - return DV_E_LINDEX; - } - - // we don't support anything other (THUMBNAIL, ICON, DOCPRINT...) - if ( pformatetc->dwAspect != DVASPECT_CONTENT ) { - wxLogTrace("wxIDataObject::QueryGetData: bad dwAspect %d", - pformatetc->dwAspect); - return DV_E_DVASPECT; - } - - // @@ we only transfer data by global memory (bad for large amounts of it!) - if ( !(pformatetc->tymed & TYMED_HGLOBAL) ) { - wxLogTrace("wxIDataObject::QueryGetData: %s != TYMED_HGLOBAL.", - GetTymedName(pformatetc->tymed)); - return DV_E_TYMED; - } - - // and now check the type of data requested - if ( m_pDataObject->IsSupportedFormat((wxDataFormat) pformatetc->cfFormat) ) { - wxLogTrace("wxIDataObject::QueryGetData: %s ok", - wxDataObject::GetFormatName((wxDataFormat) pformatetc->cfFormat)); - return S_OK; - } - else { - wxLogTrace("wxIDataObject::QueryGetData: %s unsupported", - wxDataObject::GetFormatName((wxDataFormat) pformatetc->cfFormat)); - return DV_E_FORMATETC; - } -} - -STDMETHODIMP wxIDataObject::GetCanonicalFormatEtc(FORMATETC *pFormatetcIn, - FORMATETC *pFormatetcOut) -{ - wxLogTrace("wxIDataObject::GetCanonicalFormatEtc"); - - // @@ implementation is trivial, we might want something better here - if ( pFormatetcOut != NULL ) - pFormatetcOut->ptd = NULL; - return DATA_S_SAMEFORMATETC; -} - -STDMETHODIMP wxIDataObject::EnumFormatEtc(DWORD dwDirection, - IEnumFORMATETC **ppenumFormatEtc) -{ - wxLogTrace("wxIDataObject::EnumFormatEtc"); - - if ( dwDirection == DATADIR_SET ) { - // we don't allow setting of data anyhow - return E_NOTIMPL; - } - - wxIEnumFORMATETC *pEnum = - new wxIEnumFORMATETC(m_pDataObject->GetPreferredFormat()); - pEnum->AddRef(); - *ppenumFormatEtc = pEnum; - - return S_OK; -} - -// advise sink functions (not implemented) -STDMETHODIMP wxIDataObject::DAdvise(FORMATETC *pformatetc, - DWORD advf, - IAdviseSink *pAdvSink, - DWORD *pdwConnection) -{ - return OLE_E_ADVISENOTSUPPORTED; -} - -STDMETHODIMP wxIDataObject::DUnadvise(DWORD dwConnection) -{ - return OLE_E_ADVISENOTSUPPORTED; -} - -STDMETHODIMP wxIDataObject::EnumDAdvise(IEnumSTATDATA **ppenumAdvise) -{ - return OLE_E_ADVISENOTSUPPORTED; -} - -// ---------------------------------------------------------------------------- -// wxDataObject -// ---------------------------------------------------------------------------- - -wxDataObject::wxDataObject() -{ - m_pIDataObject = new wxIDataObject(this); - m_pIDataObject->AddRef(); -} - -wxDataObject::~wxDataObject() -{ - m_pIDataObject->Release(); -} - -const char *wxDataObject::GetFormatName(wxDataFormat format) -{ -#ifdef __WXDEBUG__ - // case 'xxx' is not a valid value for switch of enum 'wxDataFormat' - #ifdef _MSC_VER - #pragma warning(disable:4063) - #endif // VC++ - - static char s_szBuf[128]; - switch ( format ) { - case CF_TEXT: return "CF_TEXT"; - case CF_BITMAP: return "CF_BITMAP"; - case CF_METAFILEPICT: return "CF_METAFILEPICT"; - case CF_SYLK: return "CF_SYLK"; - case CF_DIF: return "CF_DIF"; - case CF_TIFF: return "CF_TIFF"; - case CF_OEMTEXT: return "CF_OEMTEXT"; - case CF_DIB: return "CF_DIB"; - case CF_PALETTE: return "CF_PALETTE"; - case CF_PENDATA: return "CF_PENDATA"; - case CF_RIFF: return "CF_RIFF"; - case CF_WAVE: return "CF_WAVE"; - case CF_UNICODETEXT: return "CF_UNICODETEXT"; - case CF_ENHMETAFILE: return "CF_ENHMETAFILE"; - case CF_HDROP: return "CF_HDROP"; - case CF_LOCALE: return "CF_LOCALE"; - default: - sprintf(s_szBuf, "clipboard format %d (unknown)", format); - return s_szBuf; - } - - #ifdef _MSC_VER - #pragma warning(default:4063) - #endif // VC++ - -#else // !Debug - return ""; -#endif // Debug -} - -// ---------------------------------------------------------------------------- -// private functions -// ---------------------------------------------------------------------------- -static const char *GetTymedName(DWORD tymed) -{ - static char s_szBuf[128]; - switch ( tymed ) { - case TYMED_HGLOBAL: return "TYMED_HGLOBAL"; - case TYMED_FILE: return "TYMED_FILE"; - case TYMED_ISTREAM: return "TYMED_ISTREAM"; - case TYMED_ISTORAGE: return "TYMED_ISTORAGE"; - case TYMED_GDI: return "TYMED_GDI"; - case TYMED_MFPICT: return "TYMED_MFPICT"; - case TYMED_ENHMF: return "TYMED_ENHMF"; - default: - sprintf(s_szBuf, "type of media format %d (unknown)", tymed); - return s_szBuf; - } -} - -// TODO: OLE parts of wxBitmap/File/MetafileDataObject - -#endif - diff --git a/src/msw/ole/dropsrc.cpp b/src/msw/ole/dropsrc.cpp deleted file mode 100644 index e6955bad07..0000000000 --- a/src/msw/ole/dropsrc.cpp +++ /dev/null @@ -1,234 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: msw/ole/dropsrc.cpp -// Purpose: implementation of wxIDropSource and wxDropSource -// Author: Vadim Zeitlin -// Modified by: -// Created: 10.05.98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows license -/////////////////////////////////////////////////////////////////////////////// - -// ============================================================================ -// declarations -// ============================================================================ - -// ---------------------------------------------------------------------------- -// headers -// ---------------------------------------------------------------------------- - -#ifdef __GNUG__ - #pragma implementation "dropsrc.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#if defined(__BORLANDC__) - #pragma hdrstop -#endif - -#include - -#if wxUSE_DRAG_AND_DROP - -#include -#include -#include -#include - -#ifndef __WIN32__ - #include - #include -#endif - -// ---------------------------------------------------------------------------- -// wxIDropSource implementation of IDropSource interface -// ---------------------------------------------------------------------------- - -class wxIDropSource : public IDropSource -{ -public: - wxIDropSource(wxDropSource *pDropSource); - - DECLARE_IUNKNOWN_METHODS; - - // IDropSource - STDMETHODIMP QueryContinueDrag(BOOL fEscapePressed, DWORD grfKeyState); - STDMETHODIMP GiveFeedback(DWORD dwEffect); - -private: - DWORD m_grfInitKeyState; // button which started the d&d operation - wxDropSource *m_pDropSource; // pointer to C++ class we belong to -}; - -// ============================================================================ -// Implementation -// ============================================================================ - -// ---------------------------------------------------------------------------- -// wxIDropSource implementation -// ---------------------------------------------------------------------------- -BEGIN_IID_TABLE(wxIDropSource) - ADD_IID(Unknown) - ADD_IID(DropSource) -END_IID_TABLE; - -IMPLEMENT_IUNKNOWN_METHODS(wxIDropSource) - -wxIDropSource::wxIDropSource(wxDropSource *pDropSource) -{ - wxASSERT( pDropSource != NULL ); - - m_pDropSource = pDropSource; - m_grfInitKeyState = 0; - m_cRef = 0; -} - -// Name : wxIDropSource::QueryContinueDrag -// Purpose : decide if drag operation must be continued or not -// Returns : HRESULT: S_OK if we should continue -// DRAGDROP_S_DROP to drop right now -// DRAGDROP_S_CANCEL to cancel everything -// Params : [in] BOOL fEscapePressed pressed since last call? -// [in] DWORD grfKeyState mask containing state of kbd keys -// Notes : as there is no reasonably simple portable way to implement this -// function, we currently don't give the possibility to override the -// default behaviour implemented here -STDMETHODIMP wxIDropSource::QueryContinueDrag(BOOL fEscapePressed, - DWORD grfKeyState) -{ - if ( fEscapePressed ) - return DRAGDROP_S_CANCEL; - - // initialize ourself with the drag begin button - if ( m_grfInitKeyState == 0 ) { - m_grfInitKeyState = grfKeyState & (MK_LBUTTON | MK_RBUTTON | MK_MBUTTON); - } - - if ( !(grfKeyState & m_grfInitKeyState) ) { - // button which started d&d released, go! - return DRAGDROP_S_DROP; - } - - return S_OK; -} - -// Name : wxIDropSource::GiveFeedback -// Purpose : give UI feedback according to current state of operation -// Returns : STDMETHODIMP -// Params : [in] DWORD dwEffect - what would happen if we dropped now -// Notes : default implementation is ok in more than 99% of cases -STDMETHODIMP wxIDropSource::GiveFeedback(DWORD dwEffect) -{ - wxDragResult effect; - if ( dwEffect & DROPEFFECT_COPY ) - effect = wxDragCopy; - else if ( dwEffect & DROPEFFECT_MOVE ) - effect = wxDragMove; - else - effect = wxDragNone; - - if ( m_pDropSource->GiveFeedback(effect, - (dwEffect & DROPEFFECT_SCROLL) != 0 ) ) - return S_OK; - - return DRAGDROP_S_USEDEFAULTCURSORS; -} - -// ---------------------------------------------------------------------------- -// wxDropSource implementation -// ---------------------------------------------------------------------------- - -// ctors - -// common part of all ctors -void wxDropSource::Init() -{ - m_pIDropSource = new wxIDropSource(this); - m_pIDropSource->AddRef(); -} - -wxDropSource::wxDropSource(wxWindow* WXUNUSED(win)) -{ - Init(); - m_pData = NULL; -} - -wxDropSource::wxDropSource(wxDataObject& data, wxWindow* WXUNUSED(win)) -{ - Init(); - SetData(data); -} - -void wxDropSource::SetData(wxDataObject& data) -{ - m_pData = &data; -} - -wxDropSource::~wxDropSource() -{ - m_pIDropSource->Release(); -} - -// Name : DoDragDrop -// Purpose : start drag and drop operation -// Returns : wxDragResult - the code of performed operation -// Params : [in] bool bAllowMove: if false, only copy is allowed -// Notes : you must call SetData() before if you had used def ctor -wxDragResult wxDropSource::DoDragDrop(bool bAllowMove) -{ - wxCHECK_MSG( m_pData != NULL, wxDragNone, "No data in wxDropSource!" ); - - DWORD dwEffect; - HRESULT hr = ::DoDragDrop(m_pData->GetInterface(), - m_pIDropSource, - bAllowMove ? DROPEFFECT_COPY | DROPEFFECT_MOVE - : DROPEFFECT_COPY, - &dwEffect); - - if ( hr == DRAGDROP_S_CANCEL ) { - return wxDragCancel; - } - else if ( hr == DRAGDROP_S_DROP ) { - if ( dwEffect & DROPEFFECT_COPY ) { - return wxDragCopy; - } - else if ( dwEffect & DROPEFFECT_MOVE ) { - // consistency check: normally, we shouldn't get "move" at all - // here if !bAllowMove, but in practice it does happen quite often - if ( bAllowMove ) - return wxDragMove; - else - return wxDragCopy; - } - else { - // not copy or move - return wxDragNone; - } - } - else { - if ( FAILED(hr) ) { - wxLogApiError("DoDragDrop", hr); - wxLogError("Drag & drop operation failed."); - } - else { - wxLogDebug("Unexpected success return code %08lx from DoDragDrop.", hr); - } - - return wxDragError; - } -} - -// Name : wxDropSource::GiveFeedback -// Purpose : visually inform the user about d&d operation state -// Returns : bool: true if we do all ourselves or false for default feedback -// Params : [in] DragResult effect - what would happen if we dropped now -// [in] bool bScrolling - true if target is scrolling -// Notes : here we just leave this stuff for default implementation -bool wxDropSource::GiveFeedback(wxDragResult effect, bool bScrolling) -{ - return FALSE; -} - -#endif //USE_DRAG_AND_DROP diff --git a/src/msw/ole/droptgt.cpp b/src/msw/ole/droptgt.cpp deleted file mode 100644 index d1c729dbb4..0000000000 --- a/src/msw/ole/droptgt.cpp +++ /dev/null @@ -1,419 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: ole/droptgt.cpp -// Purpose: wxDropTarget implementation -// Author: Vadim Zeitlin -// Modified by: -// Created: -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows license -/////////////////////////////////////////////////////////////////////////////// - -// ============================================================================ -// Declarations -// ============================================================================ - -// ---------------------------------------------------------------------------- -// headers -// ---------------------------------------------------------------------------- - -#ifdef __GNUG__ -#pragma implementation "droptgt.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#if defined(__BORLANDC__) -#pragma hdrstop -#endif - -#include - -#if wxUSE_DRAG_AND_DROP - -#include - -#ifdef __WIN32__ -#ifndef __GNUWIN32__ -#include // for DROPFILES structure -#endif -#else -#include -#endif - -#include - -#ifndef __WIN32__ -#include -#include -#endif - -#include - -// ---------------------------------------------------------------------------- -// IDropTarget interface: forward all interesting things to wxDropTarget -// (the name is unfortunate, but wx_I_DropTarget is not at all the same thing -// as wxDropTarget which is 'public' class, while this one is private) -// ---------------------------------------------------------------------------- - -class wxIDropTarget : public IDropTarget -{ -public: - wxIDropTarget(wxDropTarget *p); - ~wxIDropTarget(); - - // IDropTarget methods - STDMETHODIMP DragEnter(LPDATAOBJECT, DWORD, POINTL, LPDWORD); - STDMETHODIMP DragOver(DWORD, POINTL, LPDWORD); - STDMETHODIMP DragLeave(void); - STDMETHODIMP Drop(LPDATAOBJECT, DWORD, POINTL, LPDWORD); - - // @@ we assume that if QueryGetData() returns S_OK, than we can really - // get data in this format, so we remember here the format for which - // QueryGetData() succeeded - void SetSupportedFormat(wxDataFormat cfFormat) { m_cfFormat = cfFormat; } - - DECLARE_IUNKNOWN_METHODS; - -protected: - IDataObject *m_pIDataObject; // !NULL between DragEnter and DragLeave/Drop - wxDropTarget *m_pTarget; // the real target (we're just a proxy) - - wxDataFormat m_cfFormat; // the format in which to ask for data - -private: - static inline DWORD GetDropEffect(DWORD flags); -}; - -// ============================================================================ -// wxIDropTarget implementation -// ============================================================================ - -// Name : static wxDropTarget::GetDropEffect -// Purpose : determine the drop operation from keyboard/mouse state. -// Returns : DWORD combined from DROPEFFECT_xxx constants -// Params : [in] DWORD flags kbd & mouse flags as passed to -// IDropTarget methods -// Notes : We do "move" normally and "copy" if is pressed, -// which is the standard behaviour (currently there is no -// way to redefine it) -DWORD wxIDropTarget::GetDropEffect(DWORD flags) -{ - return flags & MK_CONTROL ? DROPEFFECT_COPY : DROPEFFECT_MOVE; -} - -wxIDropTarget::wxIDropTarget(wxDropTarget *pTarget) -{ - m_cRef = 0; - m_pTarget = pTarget; - m_cfFormat = (wxDataFormat) 0; - m_pIDataObject = NULL; -} - -wxIDropTarget::~wxIDropTarget() -{ -} - -BEGIN_IID_TABLE(wxIDropTarget) - ADD_IID(Unknown) - ADD_IID(DropTarget) -END_IID_TABLE; - -IMPLEMENT_IUNKNOWN_METHODS(wxIDropTarget) - -// Name : wxIDropTarget::DragEnter -// Purpose : Called when the mouse enters the window (dragging something) -// Returns : S_OK -// Params : [in] IDataObject *pIDataSource : source data -// [in] DWORD grfKeyState : kbd & mouse state -// [in] POINTL pt : mouse coordinates -// [out]DWORD *pdwEffect : effect flag -// Notes : -STDMETHODIMP wxIDropTarget::DragEnter(IDataObject *pIDataSource, - DWORD grfKeyState, - POINTL pt, - DWORD *pdwEffect) -{ - wxLogDebug("IDropTarget::DragEnter"); - - wxASSERT( m_pIDataObject == NULL ); - - if ( !m_pTarget->IsAcceptedData(pIDataSource) ) { - // we don't accept this kind of data - *pdwEffect = DROPEFFECT_NONE; - - return S_OK; - } - - // @@ should check the point also? - - *pdwEffect = GetDropEffect(grfKeyState); - - // get hold of the data object - m_pIDataObject = pIDataSource; - m_pIDataObject->AddRef(); - - // give some visual feedback - m_pTarget->OnEnter(); - - return S_OK; -} - -// Name : wxIDropTarget::DragOver -// Purpose : Indicates that the mouse was moved inside the window represented -// by this drop target. -// Returns : S_OK -// Params : [in] DWORD grfKeyState kbd & mouse state -// [in] POINTL pt mouse coordinates -// [out]LPDWORD pdwEffect effect flag -// Notes : We're called on every WM_MOUSEMOVE, so this function should be -// very efficient. -STDMETHODIMP wxIDropTarget::DragOver(DWORD grfKeyState, - POINTL pt, - LPDWORD pdwEffect) -{ - // there are too many of them... wxLogDebug("IDropTarget::DragOver"); - - *pdwEffect = m_pIDataObject == NULL ? DROPEFFECT_NONE - : GetDropEffect(grfKeyState); - return S_OK; -} - -// Name : wxIDropTarget::DragLeave -// Purpose : Informs the drop target that the operation has left its window. -// Returns : S_OK -// Notes : good place to do any clean-up -STDMETHODIMP wxIDropTarget::DragLeave() -{ - wxLogDebug("IDropTarget::DragLeave"); - - // remove the UI feedback - m_pTarget->OnLeave(); - - // release the held object - RELEASE_AND_NULL(m_pIDataObject); - - return S_OK; -} - -// Name : wxIDropTarget::Drop -// Purpose : Instructs the drop target to paste data that was just now -// dropped on it. -// Returns : S_OK -// Params : [in] IDataObject *pIDataSource the data to paste -// [in] DWORD grfKeyState kbd & mouse state -// [in] POINTL pt where the drop occured? -// [ouy]DWORD *pdwEffect operation effect -// Notes : -STDMETHODIMP wxIDropTarget::Drop(IDataObject *pIDataSource, - DWORD grfKeyState, - POINTL pt, - DWORD *pdwEffect) -{ - wxLogDebug("IDropTarget::Drop"); - - // @@ I don't know why there is this parameter, but so far I assume - // that it's the same we've already got in DragEnter - wxASSERT( m_pIDataObject == pIDataSource ); - - STGMEDIUM stm; - *pdwEffect = DROPEFFECT_NONE; - - // should be set by SetSupportedFormat() call - wxASSERT( m_cfFormat != 0 ); - - FORMATETC fmtMemory; - fmtMemory.cfFormat = m_cfFormat; - fmtMemory.ptd = NULL; - fmtMemory.dwAspect = DVASPECT_CONTENT; - fmtMemory.lindex = -1; - fmtMemory.tymed = TYMED_HGLOBAL; // @@@@ to add other media - - HRESULT hr = pIDataSource->GetData(&fmtMemory, &stm); - if ( SUCCEEDED(hr) ) { - if ( stm.hGlobal != NULL ) { - if ( m_pTarget->OnDrop(pt.x, pt.y, GlobalLock(stm.hGlobal)) ) - *pdwEffect = GetDropEffect(grfKeyState); - //else: DROPEFFECT_NONE - - GlobalUnlock(stm.hGlobal); - ReleaseStgMedium(&stm); - } - } - else - { - // wxLogApiError("GetData", hr); - } - - // release the held object - RELEASE_AND_NULL(m_pIDataObject); - - return S_OK; -} - -// ============================================================================ -// wxDropTarget implementation -// ============================================================================ - -// ---------------------------------------------------------------------------- -// ctor/dtor -// ---------------------------------------------------------------------------- - -wxDropTarget::wxDropTarget() -{ - // create an IDropTarget implementation which will notify us about - // d&d operations. - m_pIDropTarget = new wxIDropTarget(this); - m_pIDropTarget->AddRef(); -} - -wxDropTarget::~wxDropTarget() -{ - ReleaseInterface(m_pIDropTarget); -} - -// ---------------------------------------------------------------------------- -// [un]register drop handler -// ---------------------------------------------------------------------------- - -bool wxDropTarget::Register(WXHWND hwnd) -{ - HRESULT hr = ::CoLockObjectExternal(m_pIDropTarget, TRUE, FALSE); - if ( FAILED(hr) ) { - wxLogApiError("CoLockObjectExternal", hr); - return FALSE; - } - - hr = ::RegisterDragDrop((HWND) hwnd, m_pIDropTarget); - if ( FAILED(hr) ) { - ::CoLockObjectExternal(m_pIDropTarget, FALSE, FALSE); - - wxLogApiError("RegisterDragDrop", hr); - return FALSE; - } - - return TRUE; -} - -void wxDropTarget::Revoke(WXHWND hwnd) -{ - HRESULT hr = ::RevokeDragDrop((HWND) hwnd); - - if ( FAILED(hr) ) { - wxLogApiError("RevokeDragDrop", hr); - } - - ::CoLockObjectExternal(m_pIDropTarget, FALSE, TRUE); -} - -// ---------------------------------------------------------------------------- -// determine if we accept data of this type -// ---------------------------------------------------------------------------- -bool wxDropTarget::IsAcceptedData(IDataObject *pIDataSource) const -{ - // this strucutre describes a data of any type (first field will be - // changing) being passed through global memory block. - static FORMATETC s_fmtMemory = { - 0, - NULL, - DVASPECT_CONTENT, - -1, - TYMED_HGLOBAL - }; - - // cycle thorugh all supported formats - for ( size_t n = 0; n < GetFormatCount(); n++ ) { - s_fmtMemory.cfFormat = GetFormat(n); - // @ don't use SUCCEEDED macro here: QueryGetData returns 1 (whatever it - // means) for file drag and drop - if ( pIDataSource->QueryGetData(&s_fmtMemory) == S_OK ) { - // remember this format: we'll later ask for data in it - m_pIDropTarget->SetSupportedFormat((wxDataFormat) s_fmtMemory.cfFormat); - return TRUE; - } - } - - return FALSE; -} - -// ============================================================================ -// wxTextDropTarget -// ============================================================================ - -bool wxTextDropTarget::OnDrop(long x, long y, const void *pData) -{ - return OnDropText(x, y, (const char *)pData); -} - -size_t wxTextDropTarget::GetFormatCount() const -{ - return 1; -} - -wxDataFormat wxTextDropTarget::GetFormat(size_t WXUNUSED(n)) const -{ - return wxDF_TEXT; -} - -// ============================================================================ -// wxFileDropTarget -// ============================================================================ - -bool wxFileDropTarget::OnDrop(long x, long y, const void *pData) -{ - // the documentation states that the first member of DROPFILES structure - // is a "DWORD offset of double NUL terminated file list". What they mean by - // this (I wonder if you see it immediately) is that the list starts at - // ((char *)&(pDropFiles.pFiles)) + pDropFiles.pFiles. We're also advised to - // use DragQueryFile to work with this structure, but not told where and how - // to get HDROP. - HDROP hdrop = (HDROP)pData; // @@ it works, but I'm not sure about it - - // get number of files (magic value -1) - UINT nFiles = ::DragQueryFile(hdrop, (unsigned)-1, NULL, 0u); - - // for each file get the length, allocate memory and then get the name - char **aszFiles = new char *[nFiles]; - UINT len, n; - for ( n = 0; n < nFiles; n++ ) { - // +1 for terminating NUL - len = ::DragQueryFile(hdrop, n, NULL, 0) + 1; - - aszFiles[n] = new char[len]; - - UINT len2 = ::DragQueryFile(hdrop, n, aszFiles[n], len); - if ( len2 != len - 1 ) { - wxLogDebug("In wxFileDropTarget::OnDrop DragQueryFile returned %d " - "characters, %d expected.", len2, len - 1); - } - } - - bool bResult = OnDropFiles(x, y, nFiles, (const char**) aszFiles); - - // free memory - for ( n = 0; n < nFiles; n++ ) { - delete [] aszFiles[n]; - } - delete [] aszFiles; - - return bResult; -} - -size_t wxFileDropTarget::GetFormatCount() const -{ - return 1; -} - -wxDataFormat wxFileDropTarget::GetFormat(size_t WXUNUSED(n)) const -{ -#ifdef __WIN32__ - return wxDF_FILENAME; -#else - // TODO: how to implement this in WIN16? - return wxDF_TEXT; -#endif -} - -#endif - // wxUSE_DRAG_AND_DROP diff --git a/src/msw/ole/oleutils.cpp b/src/msw/ole/oleutils.cpp deleted file mode 100644 index cb2a9e698b..0000000000 --- a/src/msw/ole/oleutils.cpp +++ /dev/null @@ -1,190 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: ole/oleutils.cpp -// Purpose: implementation of OLE helper functions -// Author: Vadim Zeitlin -// Modified by: -// Created: 19.02.98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows license -/////////////////////////////////////////////////////////////////////////////// - -// ============================================================================ -// Declarations -// ============================================================================ - -// ---------------------------------------------------------------------------- -// headers -// ---------------------------------------------------------------------------- - -#ifdef __GNUG__ -#pragma implementation "oleutils.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#if defined(__BORLANDC__) -#pragma hdrstop -#endif - -#include -#include - -#include - -// OLE -#include -#include - -#if defined(_MSC_VER) && (_MSC_VER > 1000) -#include -#endif - -// ============================================================================ -// Implementation -// ============================================================================ - -// return TRUE if the iid is in the array -bool IsIidFromList(REFIID riid, const IID *aIids[], size_t nCount) -{ - for ( size_t i = 0; i < nCount; i++ ) { - if ( riid == *aIids[i] ) - return TRUE; - } - - return FALSE; -} - -#if wxUSE_DRAG_AND_DROP - -// ---------------------------------------------------------------------------- -// Debug support -// ---------------------------------------------------------------------------- - -#if defined(__WXDEBUG__) && defined(_MSC_VER) && (_MSC_VER > 1000) -const char *GetIidName(REFIID riid) -{ - // an association between symbolic name and numeric value of an IID - struct KNOWN_IID { - const IID *pIid; - const char *szName; - }; - - // construct the table containing all known interfaces - #define ADD_KNOWN_IID(name) { &IID_I##name, #name } - - static const KNOWN_IID aKnownIids[] = { - ADD_KNOWN_IID(AdviseSink), - ADD_KNOWN_IID(AdviseSink2), - ADD_KNOWN_IID(BindCtx), - ADD_KNOWN_IID(ClassFactory), - ADD_KNOWN_IID(ContinueCallback), - ADD_KNOWN_IID(EnumOleDocumentViews), - ADD_KNOWN_IID(OleCommandTarget), - ADD_KNOWN_IID(OleDocument), - ADD_KNOWN_IID(OleDocumentSite), - ADD_KNOWN_IID(OleDocumentView), - ADD_KNOWN_IID(Print), - ADD_KNOWN_IID(DataAdviseHolder), - ADD_KNOWN_IID(DataObject), - ADD_KNOWN_IID(Debug), - ADD_KNOWN_IID(DebugStream), - ADD_KNOWN_IID(DfReserved1), - ADD_KNOWN_IID(DfReserved2), - ADD_KNOWN_IID(DfReserved3), - ADD_KNOWN_IID(Dispatch), - ADD_KNOWN_IID(DropSource), - ADD_KNOWN_IID(DropTarget), - ADD_KNOWN_IID(EnumCallback), - ADD_KNOWN_IID(EnumFORMATETC), - ADD_KNOWN_IID(EnumGeneric), - ADD_KNOWN_IID(EnumHolder), - ADD_KNOWN_IID(EnumMoniker), - ADD_KNOWN_IID(EnumOLEVERB), - ADD_KNOWN_IID(EnumSTATDATA), - ADD_KNOWN_IID(EnumSTATSTG), - ADD_KNOWN_IID(EnumString), - ADD_KNOWN_IID(EnumUnknown), - ADD_KNOWN_IID(EnumVARIANT), - ADD_KNOWN_IID(ExternalConnection), - ADD_KNOWN_IID(InternalMoniker), - ADD_KNOWN_IID(LockBytes), - ADD_KNOWN_IID(Malloc), - ADD_KNOWN_IID(Marshal), - ADD_KNOWN_IID(MessageFilter), - ADD_KNOWN_IID(Moniker), - ADD_KNOWN_IID(OleAdviseHolder), - ADD_KNOWN_IID(OleCache), - ADD_KNOWN_IID(OleCache2), - ADD_KNOWN_IID(OleCacheControl), - ADD_KNOWN_IID(OleClientSite), - ADD_KNOWN_IID(OleContainer), - ADD_KNOWN_IID(OleInPlaceActiveObject), - ADD_KNOWN_IID(OleInPlaceFrame), - ADD_KNOWN_IID(OleInPlaceObject), - ADD_KNOWN_IID(OleInPlaceSite), - ADD_KNOWN_IID(OleInPlaceUIWindow), - ADD_KNOWN_IID(OleItemContainer), - ADD_KNOWN_IID(OleLink), - ADD_KNOWN_IID(OleManager), - ADD_KNOWN_IID(OleObject), - ADD_KNOWN_IID(OlePresObj), - ADD_KNOWN_IID(OleWindow), - ADD_KNOWN_IID(PSFactory), - ADD_KNOWN_IID(ParseDisplayName), - ADD_KNOWN_IID(Persist), - ADD_KNOWN_IID(PersistFile), - ADD_KNOWN_IID(PersistStorage), - ADD_KNOWN_IID(PersistStream), - ADD_KNOWN_IID(ProxyManager), - ADD_KNOWN_IID(RootStorage), - ADD_KNOWN_IID(RpcChannel), - ADD_KNOWN_IID(RpcProxy), - ADD_KNOWN_IID(RpcStub), - ADD_KNOWN_IID(RunnableObject), - ADD_KNOWN_IID(RunningObjectTable), - ADD_KNOWN_IID(StdMarshalInfo), - ADD_KNOWN_IID(Storage), - ADD_KNOWN_IID(Stream), - ADD_KNOWN_IID(StubManager), - ADD_KNOWN_IID(Unknown), - ADD_KNOWN_IID(ViewObject), - ADD_KNOWN_IID(ViewObject2), - }; - - // don't clobber preprocessor name space - #undef ADD_KNOWN_IID - - // try to find the interface in the table - for ( size_t ui = 0; ui < WXSIZEOF(aKnownIids); ui++ ) { - if ( riid == *aKnownIids[ui].pIid ) { - return aKnownIids[ui].szName; - } - } - - // unknown IID, just transform to string - static Uuid s_uuid; - s_uuid.Set(riid); - return s_uuid; -} - -void wxLogQueryInterface(const char *szInterface, REFIID riid) -{ - wxLogTrace("%s::QueryInterface (iid = %s)", szInterface, GetIidName(riid)); -} - -void wxLogAddRef(const char *szInterface, ULONG cRef) -{ - wxLogTrace("After %s::AddRef: m_cRef = %d", szInterface, cRef + 1); -} - -void wxLogRelease(const char *szInterface, ULONG cRef) -{ - wxLogTrace("After %s::Release: m_cRef = %d", szInterface, cRef - 1); -} - -#endif //WXDEBUG - -#endif - // wxUSE_DRAG_AND_DROP diff --git a/src/msw/ole/uuid.cpp b/src/msw/ole/uuid.cpp deleted file mode 100644 index 4df4faa7ba..0000000000 --- a/src/msw/ole/uuid.cpp +++ /dev/null @@ -1,152 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: ole/uuid.cpp -// Purpose: implements Uuid class, see uuid.h for details -// Author: Vadim Zeitlin -// Modified by: -// Created: 12.09.96 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows license -/////////////////////////////////////////////////////////////////////////////// - -// ============================================================================ -// Declarations -// ============================================================================ - -#ifdef __GNUG__ -#pragma implementation "uuid.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#if defined(__BORLANDC__) -#pragma hdrstop -#endif - -#include - -#if wxUSE_DRAG_AND_DROP - -// standard headers -#include // UUID related functions - -#include - - - -// ============================================================================ -// Implementation -// ============================================================================ - -// length of UUID in C format -#define UUID_CSTRLEN 100 // real length is 66 - -// copy ctor -Uuid::Uuid(const Uuid& uuid) -{ - // bitwise copy Ok for UUIDs - m_uuid = uuid.m_uuid; - - // force the string to be allocated by RPC - // (we free it later with RpcStringFree) - UuidToString(&m_uuid, &m_pszUuid); - - // allocate new buffer - m_pszCForm = new char[UUID_CSTRLEN]; - // and fill it - memcpy(m_pszCForm, uuid.m_pszCForm, UUID_CSTRLEN); -} - -// assignment operator -Uuid& Uuid::operator=(const Uuid& uuid) -{ - m_uuid = uuid.m_uuid; - - // force the string to be allocated by RPC - // (we free it later with RpcStringFree) - UuidToString(&m_uuid, &m_pszUuid); - - // allocate new buffer if not done yet - if ( !m_pszCForm ) - m_pszCForm = new char[UUID_CSTRLEN]; - - // and fill it - memcpy(m_pszCForm, uuid.m_pszCForm, UUID_CSTRLEN); - - return *this; -} - -// dtor -Uuid::~Uuid() -{ - // this string must be allocated by RPC! - // (otherwise you get a debug breakpoint deep inside RPC DLL) - if ( m_pszUuid ) - RpcStringFree(&m_pszUuid); - - // perhaps we should just use a static buffer and not bother - // with new and delete? - if ( m_pszCForm ) - delete [] m_pszCForm; -} - -// update string representation of new UUID -void Uuid::Set(const UUID &uuid) -{ - m_uuid = uuid; - - // get string representation - UuidToString(&m_uuid, &m_pszUuid); - - // cache UUID in C format - UuidToCForm(); -} - -// create a new UUID -void Uuid::Create() -{ - UUID uuid; - - // can't fail - UuidCreate(&uuid); - - Set(uuid); -} - -// set the value -bool Uuid::Set(const char *pc) -{ - // get UUID from string - if ( UuidFromString((uchar *)pc, &m_uuid) != RPC_S_OK) - // failed: probably invalid string - return FALSE; - - // transform it back to string to normalize it - UuidToString(&m_uuid, &m_pszUuid); - - // update m_pszCForm - UuidToCForm(); - - return TRUE; -} - -// stores m_uuid in m_pszCForm in a format required by -// DEFINE_GUID macro: i.e. something like -// 0x7D8A2281L,0x4C61,0x11D0,0xBA,0xBD,0x00,0x00,0xC0,0x18,0xBA,0x27 -// m_pszUuid is of the form (no, it's not quite the same UUID :-) -// 6aadc650-67b0-11d0-bac8-0000c018ba27 -void Uuid::UuidToCForm() -{ - if ( m_pszCForm == NULL ) - m_pszCForm = new char[UUID_CSTRLEN]; - - wsprintf(m_pszCForm, "0x%8.8X,0x%4.4X,0x%4.4X,0x%2.2X,0x2.2%X," - "0x2.2%X,0x2.2%X,0x2.2%X,0x2.2%X,0x2.2%X,0x2.2%X", - m_uuid.Data1, m_uuid.Data2, m_uuid.Data3, - m_uuid.Data4[1], m_uuid.Data4[2], m_uuid.Data4[3], m_uuid.Data4[4], - m_uuid.Data4[5], m_uuid.Data4[6], m_uuid.Data4[7], m_uuid.Data4[8]); -} - -#endif - // wxUSE_DRAG_AND_DROP diff --git a/src/msw/ownerdrw.cpp b/src/msw/ownerdrw.cpp deleted file mode 100644 index 232d56c290..0000000000 --- a/src/msw/ownerdrw.cpp +++ /dev/null @@ -1,240 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: msw/ownerdrw.cpp -// Purpose: implementation of wxOwnerDrawn class -// Author: Vadim Zeitlin -// Modified by: -// Created: 13.11.97 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows license -/////////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP - #include "wx/font.h" - #include "wx/bitmap.h" - #include "wx/dcmemory.h" - #include "wx/menu.h" - #include "wx/utils.h" -#endif - -#include "wx/ownerdrw.h" -#include "wx/menuitem.h" - -#include - -#ifdef DrawText -#undef DrawText -#endif - -// ============================================================================ -// implementation of wxOwnerDrawn class -// ============================================================================ - -// ctor -// ---- -wxOwnerDrawn::wxOwnerDrawn(const wxString& str, - bool bCheckable, bool bMenuItem) - : m_strName(str) -{ - m_bCheckable = bCheckable; - m_bOwnerDrawn = FALSE; - m_nHeight = 0; - m_nMarginWidth = ms_nLastMarginWidth; -} - -#if defined(__WXMSW__) && defined(__WIN32__) && defined(SM_CXMENUCHECK) - size_t wxOwnerDrawn::ms_nDefaultMarginWidth = GetSystemMetrics(SM_CXMENUCHECK); -#else // # what is the reasonable default? - size_t wxOwnerDrawn::ms_nDefaultMarginWidth = 15; -#endif - -size_t wxOwnerDrawn::ms_nLastMarginWidth = ms_nDefaultMarginWidth; - -// drawing -// ------- - -// get size of the item -bool wxOwnerDrawn::OnMeasureItem(size_t *pwidth, size_t *pheight) -{ - wxMemoryDC dc; - dc.SetFont(GetFont()); - - // ## ugly... - char *szStripped = new char[m_strName.Len()]; - wxStripMenuCodes((char *)m_strName.c_str(), szStripped); - wxString str = szStripped; - delete [] szStripped; - - // # without this menu items look too tightly packed (at least under Windows) - str += 'W'; // 'W' is typically the widest letter - - dc.GetTextExtent(str, (long *)pwidth, (long *)pheight); - m_nHeight = *pheight; // remember height for use in OnDrawItem - - return TRUE; -} - -// searching for this macro you'll find all the code where I'm using the native -// Win32 GDI functions and not wxWindows ones. Might help to whoever decides to -// port this code to X. (VZ) - -#if defined(__WIN32__) && !defined(__SC__) && !defined(__TWIN32__) -#define O_DRAW_NATIVE_API // comments below explain why I use it -#endif - -// draw the item -bool wxOwnerDrawn::OnDrawItem(wxDC& dc, const wxRect& rc, wxODAction act, wxODStatus st) -{ - // we do nothing on focus change - if ( act == wxODFocusChanged ) - return TRUE; - - // wxColor <-> RGB - #define ToRGB(col) RGB(col.Red(), col.Green(), col.Blue()) - #define UnRGB(col) GetRValue(col), GetGValue(col), GetBValue(col) - - // set the colors - // -------------- - DWORD colBack, colText; - if ( st & wxODSelected ) { - colBack = GetSysColor(COLOR_HIGHLIGHT); - colText = GetSysColor(COLOR_HIGHLIGHTTEXT); - } - else { - // fall back to default colors if none explicitly specified - colBack = m_colBack.Ok() ? ToRGB(m_colBack) : GetSysColor(COLOR_WINDOW); - colText = m_colText.Ok() ? ToRGB(m_colText) : GetSysColor(COLOR_WINDOWTEXT); - } - - #ifdef O_DRAW_NATIVE_API - #define hdc (HDC)dc.GetHDC() - COLORREF colOldText = ::SetTextColor(hdc, colText), - colOldBack = ::SetBkColor(hdc, colBack); - #else - dc.SetTextForeground(wxColor(UnRGB(colText))); - dc.SetTextBackground(wxColor(UnRGB(colBack))); - #endif - - // select the font and draw the text - // --------------------------------- - - // determine where to draw and leave space for a check-mark. - int x = rc.x + GetMarginWidth(); - - // using native API because it reckognizes '&' - #ifdef O_DRAW_NATIVE_API - int nPrevMode = SetBkMode(hdc, TRANSPARENT); - HBRUSH hbr = CreateSolidBrush(colBack), - hPrevBrush = (HBRUSH) SelectObject(hdc, hbr); - - RECT rectAll = { rc.GetLeft(), rc.GetTop(), rc.GetRight(), rc.GetBottom() }; - FillRect(hdc, &rectAll, hbr); - - // use default font if no font set - HFONT hfont; - if ( m_font.Ok() ) { - m_font.RealizeResource(); - hfont = (HFONT)m_font.GetResourceHandle(); - } - else { - hfont = (HFONT)::GetStockObject(SYSTEM_FONT); - } - - HFONT hPrevFont = (HFONT) ::SelectObject(hdc, hfont); - DrawState(hdc, NULL, NULL, - (LPARAM)(const char *)m_strName, m_strName.Length(), - x, rc.y, rc.GetWidth(), rc.GetHeight(), - DST_PREFIXTEXT | ( st & wxODDisabled ? DSS_DISABLED : 0) ); - - (void)SelectObject(hdc, hPrevBrush); - (void)SelectObject(hdc, hPrevFont); - (void)SetBkMode(hdc, nPrevMode); - #else - dc.SetFont(GetFont()); - dc.DrawText(m_strName, x, rc.y); - #endif //O_DRAW_NATIVE_API - - // draw the bitmap - // --------------- - if ( IsCheckable() && !m_bmpChecked.Ok() ) { - if ( st & wxODChecked ) { - // using native APIs for performance and simplicity -#ifdef O_DRAW_NATIVE_API - // what goes on: DrawFrameControl creates a b/w mask, - // then we copy it to screen to have right colors - - // first create a monochrome bitmap in a memory DC - HDC hdcMem = CreateCompatibleDC(hdc); - HBITMAP hbmpCheck = CreateBitmap(GetMarginWidth(), m_nHeight, 1, 1, 0); - SelectObject(hdcMem, hbmpCheck); - - // then draw a check mark into it - RECT rect = { 0, 0, GetMarginWidth(), m_nHeight }; -#ifndef __SC__ - DrawFrameControl(hdcMem, &rect, DFC_MENU, DFCS_MENUCHECK); -#endif - - // finally copy it to screen DC and clean up - BitBlt(hdc, rc.x, rc.y, GetMarginWidth(), m_nHeight, - hdcMem, 0, 0, SRCCOPY); - DeleteDC(hdcMem); -#else - // #### to do: perhaps using Marlett font (create equiv. font under X) -// wxFAIL("not implemented"); -#endif //O_DRAW_NATIVE_API - } - } - else { - // for uncheckable item we use only the 'checked' bitmap - wxBitmap bmp(GetBitmap(IsCheckable() ? ((st & wxODChecked) != 0) : TRUE)); - if ( bmp.Ok() ) { - wxMemoryDC dcMem(&dc); - dcMem.SelectObject(bmp); - - // center bitmap - int nBmpWidth = bmp.GetWidth(), - nBmpHeight = bmp.GetHeight(); - - // there should be enough place! - wxASSERT((nBmpWidth <= rc.GetWidth()) && (nBmpHeight <= rc.GetHeight())); - - dc.Blit(rc.x + (GetMarginWidth() - nBmpWidth) / 2, - rc.y + (m_nHeight - nBmpHeight) /2, - nBmpWidth, nBmpHeight, - &dcMem, 0, 0, wxCOPY); - - if ( st & wxODSelected ) { - #ifdef O_DRAW_NATIVE_API - RECT rectBmp = { rc.GetLeft(), rc.GetTop(), - rc.GetLeft() + GetMarginWidth(), - rc.GetTop() + m_nHeight }; - SetBkColor(hdc, colBack); - DrawEdge(hdc, &rectBmp, EDGE_RAISED, BF_SOFT | BF_RECT); - #else - // ## to write portable DrawEdge - #endif //O_DRAW_NATIVE_API - } - } - } - - #ifdef O_DRAW_NATIVE_API - ::SetTextColor(hdc, colOldText); - ::SetBkColor(hdc, colOldBack); - - #undef hdc - #endif //O_DRAW_NATIVE_API - - return TRUE; -} - diff --git a/src/msw/palette.cpp b/src/msw/palette.cpp deleted file mode 100644 index 5da71182f1..0000000000 --- a/src/msw/palette.cpp +++ /dev/null @@ -1,137 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: palette.cpp -// Purpose: wxPalette -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "palette.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include -#include "wx/setup.h" -#include "wx/palette.h" -#endif - -#include - -#include "assert.h" - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxPalette, wxGDIObject) -#endif - -/* - * Palette - * - */ - -wxPaletteRefData::wxPaletteRefData(void) -{ - m_hPalette = 0; -} - -wxPaletteRefData::~wxPaletteRefData(void) -{ - if ( m_hPalette ) - ::DeleteObject((HPALETTE) m_hPalette); -} - -wxPalette::wxPalette(void) -{ -} - -wxPalette::wxPalette(int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue) -{ - Create(n, red, green, blue); -} - -wxPalette::~wxPalette(void) -{ -// FreeResource(TRUE); -} - -bool wxPalette::FreeResource(bool force) -{ - if ( M_PALETTEDATA && M_PALETTEDATA->m_hPalette) - { - DeleteObject((HPALETTE)M_PALETTEDATA->m_hPalette); - } - return TRUE; -} - -bool wxPalette::Create(int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue) -{ - UnRef(); - - m_refData = new wxPaletteRefData; - - NPLOGPALETTE npPal = (NPLOGPALETTE)LocalAlloc(LMEM_FIXED, sizeof(LOGPALETTE) + - (WORD)n * sizeof(PALETTEENTRY)); - if (!npPal) - return(FALSE); - - npPal->palVersion = 0x300; - npPal->palNumEntries = n; - - int i; - for (i = 0; i < n; i ++) - { - npPal->palPalEntry[i].peRed = red[i]; - npPal->palPalEntry[i].peGreen = green[i]; - npPal->palPalEntry[i].peBlue = blue[i]; - npPal->palPalEntry[i].peFlags = 0; - } - M_PALETTEDATA->m_hPalette = (WXHPALETTE) CreatePalette((LPLOGPALETTE)npPal); - LocalFree((HANDLE)npPal); - return TRUE; -} - -int wxPalette::GetPixel(const unsigned char red, const unsigned char green, const unsigned char blue) const -{ - if ( !m_refData ) - return FALSE; - - return ::GetNearestPaletteIndex((HPALETTE) M_PALETTEDATA->m_hPalette, PALETTERGB(red, green, blue)); -} - -bool wxPalette::GetRGB(int index, unsigned char *red, unsigned char *green, unsigned char *blue) const -{ - if ( !m_refData ) - return FALSE; - - if (index < 0 || index > 255) - return FALSE; - - PALETTEENTRY entry; - if (::GetPaletteEntries((HPALETTE) M_PALETTEDATA->m_hPalette, index, 1, &entry)) - { - *red = entry.peRed; - *green = entry.peGreen; - *blue = entry.peBlue; - return TRUE; - } else - return FALSE; -} - -void wxPalette::SetHPALETTE(WXHPALETTE pal) -{ - if ( !m_refData ) - m_refData = new wxPaletteRefData; - - M_PALETTEDATA->m_hPalette = pal; -} - diff --git a/src/msw/pen.cpp b/src/msw/pen.cpp deleted file mode 100644 index 50f821006a..0000000000 --- a/src/msw/pen.cpp +++ /dev/null @@ -1,419 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: pen.cpp -// Purpose: wxPen -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "pen.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include -#include "wx/setup.h" -#include "wx/list.h" -#include "wx/utils.h" -#include "wx/app.h" -#include "wx/pen.h" -#endif - -#include "wx/msw/private.h" -#include "assert.h" - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxPen, wxGDIObject) -#endif - -wxPenRefData::wxPenRefData() -{ - m_style = wxSOLID; - m_width = 1; - m_join = wxJOIN_ROUND ; - m_cap = wxCAP_ROUND ; - m_nbDash = 0 ; - m_dash = 0 ; - m_hPen = 0; -} - -wxPenRefData::wxPenRefData(const wxPenRefData& data) -{ - m_style = data.m_style; - m_width = data.m_width; - m_join = data.m_join; - m_cap = data.m_cap; - m_nbDash = data.m_nbDash; - m_dash = data.m_dash; - m_colour = data.m_colour; - m_hPen = 0; -} - -wxPenRefData::~wxPenRefData() -{ - if ( m_hPen ) - ::DeleteObject((HPEN) m_hPen); -} - -// Pens - -wxPen::wxPen() -{ - if ( wxThePenList ) - wxThePenList->AddPen(this); -} - -wxPen::~wxPen() -{ - if (wxThePenList) - wxThePenList->RemovePen(this); -} - -// Should implement Create -wxPen::wxPen(const wxColour& col, int Width, int Style) -{ - m_refData = new wxPenRefData; - - M_PENDATA->m_colour = col; -// M_PENDATA->m_stipple = NULL; - M_PENDATA->m_width = Width; - M_PENDATA->m_style = Style; - M_PENDATA->m_join = wxJOIN_ROUND ; - M_PENDATA->m_cap = wxCAP_ROUND ; - M_PENDATA->m_nbDash = 0 ; - M_PENDATA->m_dash = 0 ; - M_PENDATA->m_hPen = 0 ; - -#ifndef __WIN32__ - // In Windows, only a pen of width = 1 can be dotted or dashed! - if ((Style == wxDOT) || (Style == wxLONG_DASH) || - (Style == wxSHORT_DASH) || (Style == wxDOT_DASH) || - (Style == wxUSER_DASH)) - M_PENDATA->m_width = 1; -#else -/*** - DWORD vers = GetVersion() ; - WORD high = HIWORD(vers) ; // high bit=0 for NT, 1 for Win32s - // Win32s doesn't support wide dashed pens - - if ((high&0x8000)!=0) -***/ - if (wxGetOsVersion()==wxWIN32S) - { - // In Windows, only a pen of width = 1 can be dotted or dashed! - if ((Style == wxDOT) || (Style == wxLONG_DASH) || - (Style == wxSHORT_DASH) || (Style == wxDOT_DASH) || - (Style == wxUSER_DASH)) - M_PENDATA->m_width = 1; - } -#endif - RealizeResource(); - - if ( wxThePenList ) - wxThePenList->AddPen(this); -} - -wxPen::wxPen(const wxBitmap& stipple, int Width) -{ - m_refData = new wxPenRefData; - -// M_PENDATA->m_colour = col; - M_PENDATA->m_stipple = stipple; - M_PENDATA->m_width = Width; - M_PENDATA->m_style = wxSTIPPLE; - M_PENDATA->m_join = wxJOIN_ROUND ; - M_PENDATA->m_cap = wxCAP_ROUND ; - M_PENDATA->m_nbDash = 0 ; - M_PENDATA->m_dash = 0 ; - M_PENDATA->m_hPen = 0 ; - - RealizeResource(); - - if ( wxThePenList ) - wxThePenList->AddPen(this); -} - -bool wxPen::RealizeResource() -{ - if (M_PENDATA && (M_PENDATA->m_hPen == 0)) - { - if (M_PENDATA->m_style==wxTRANSPARENT) - { - M_PENDATA->m_hPen = (WXHPEN) ::GetStockObject(NULL_PEN); - return TRUE; - } - - COLORREF ms_colour = 0 ; - ms_colour = M_PENDATA->m_colour.GetPixel() ; - - // Join style, Cap style, Pen Stippling only on Win32. - // Currently no time to find equivalent on Win3.1, sorry - // [if such equiv exist!!] -#ifdef __WIN32__ - if (M_PENDATA->m_join==wxJOIN_ROUND && - M_PENDATA->m_cap==wxCAP_ROUND && - M_PENDATA->m_style!=wxUSER_DASH && - M_PENDATA->m_style!=wxSTIPPLE && - M_PENDATA->m_width <= 1 - ) - M_PENDATA->m_hPen = (WXHPEN) CreatePen(wx2msPenStyle(M_PENDATA->m_style), M_PENDATA->m_width, ms_colour); - else - { - DWORD ms_style = PS_GEOMETRIC|wx2msPenStyle(M_PENDATA->m_style) ; - - LOGBRUSH logb ; - - switch(M_PENDATA->m_join) - { - case wxJOIN_BEVEL: ms_style |= PS_JOIN_BEVEL ; break ; - case wxJOIN_MITER: ms_style |= PS_JOIN_MITER ; break ; - default: - case wxJOIN_ROUND: ms_style |= PS_JOIN_ROUND ; break ; - } - - switch(M_PENDATA->m_cap) - { - case wxCAP_PROJECTING: ms_style |= PS_ENDCAP_SQUARE ; break ; - case wxCAP_BUTT: ms_style |= PS_ENDCAP_FLAT ; break ; - default: - case wxCAP_ROUND: ms_style |= PS_ENDCAP_ROUND ; break ; - } - - switch(M_PENDATA->m_style) - { - case wxSTIPPLE: - logb.lbStyle = BS_PATTERN ; - if (M_PENDATA->m_stipple.Ok()) - logb.lbHatch = (LONG)M_PENDATA->m_stipple.GetHBITMAP() ; - else - logb.lbHatch = (LONG)0 ; - break ; - case wxBDIAGONAL_HATCH: - logb.lbStyle = BS_HATCHED ; - logb.lbHatch = HS_BDIAGONAL ; - break ; - case wxCROSSDIAG_HATCH: - logb.lbStyle = BS_HATCHED ; - logb.lbHatch = HS_DIAGCROSS ; - break ; - case wxFDIAGONAL_HATCH: - logb.lbStyle = BS_HATCHED ; - logb.lbHatch = HS_FDIAGONAL ; - break ; - case wxCROSS_HATCH: - logb.lbStyle = BS_HATCHED ; - logb.lbHatch = HS_CROSS ; - break ; - case wxHORIZONTAL_HATCH: - logb.lbStyle = BS_HATCHED ; - logb.lbHatch = HS_HORIZONTAL ; - break ; - case wxVERTICAL_HATCH: - logb.lbStyle = BS_HATCHED ; - logb.lbHatch = HS_VERTICAL ; - break ; - default: - logb.lbStyle = BS_SOLID ; - break ; - } - logb.lbColor = ms_colour ; - wxDash *real_dash ; - if (M_PENDATA->m_style==wxUSER_DASH && M_PENDATA->m_nbDash && M_PENDATA->m_dash) - { - real_dash = new wxDash[M_PENDATA->m_nbDash] ; - int i; - for (i=0;im_nbDash;i++) - real_dash[i] = M_PENDATA->m_dash[i] * M_PENDATA->m_width ; - } - else - real_dash = 0 ; - - // Win32s doesn't have ExtCreatePen function... - if (wxGetOsVersion()==wxWINDOWS_NT || wxGetOsVersion()==wxWIN95) - M_PENDATA->m_hPen = (WXHPEN) ExtCreatePen(ms_style,M_PENDATA->m_width,&logb, - M_PENDATA->m_style==wxUSER_DASH ? M_PENDATA->m_nbDash:0, (const DWORD *)real_dash); - else - M_PENDATA->m_hPen = (WXHPEN) CreatePen(wx2msPenStyle(M_PENDATA->m_style), M_PENDATA->m_width, ms_colour); - - if (real_dash) - delete [] real_dash ; - } -#else - M_PENDATA->m_hPen = (WXHPEN) CreatePen(wx2msPenStyle(M_PENDATA->m_style), M_PENDATA->m_width, ms_colour); -#endif -#ifdef WXDEBUG_CREATE - if (M_PENDATA->m_hPen==0) - wxError("Cannot create pen","Internal error") ; -#endif - return TRUE; - } - return FALSE; -} - -WXHANDLE wxPen::GetResourceHandle() -{ - if ( !M_PENDATA ) - return 0; - else - return (WXHANDLE)M_PENDATA->m_hPen; -} - -bool wxPen::FreeResource(bool force) -{ - if (M_PENDATA && (M_PENDATA->m_hPen != 0)) - { - DeleteObject((HPEN) M_PENDATA->m_hPen); - M_PENDATA->m_hPen = 0; - return TRUE; - } - else return FALSE; -} - -bool wxPen::IsFree() const -{ - return (M_PENDATA && M_PENDATA->m_hPen == 0); -} - -void wxPen::Unshare() -{ - // Don't change shared data - if (!m_refData) - { - m_refData = new wxPenRefData(); - } - else - { - wxPenRefData* ref = new wxPenRefData(*(wxPenRefData*)m_refData); - UnRef(); - m_refData = ref; - } -} - -void wxPen::SetColour(const wxColour& col) -{ - Unshare(); - - M_PENDATA->m_colour = col; - - RealizeResource(); -} - -void wxPen::SetColour(unsigned char r, unsigned char g, unsigned char b) -{ - Unshare(); - - M_PENDATA->m_colour.Set(r, g, b); - - RealizeResource(); -} - -void wxPen::SetWidth(int Width) -{ - Unshare(); - - M_PENDATA->m_width = Width; - - RealizeResource(); -} - -void wxPen::SetStyle(int Style) -{ - Unshare(); - - M_PENDATA->m_style = Style; - - RealizeResource(); -} - -void wxPen::SetStipple(const wxBitmap& Stipple) -{ - Unshare(); - - M_PENDATA->m_stipple = Stipple; - M_PENDATA->m_style = wxSTIPPLE; - - RealizeResource(); -} - -void wxPen::SetDashes(int nb_dashes, const wxDash *Dash) -{ - Unshare(); - - M_PENDATA->m_nbDash = nb_dashes; - M_PENDATA->m_dash = (wxDash *)Dash; - - RealizeResource(); -} - -void wxPen::SetJoin(int Join) -{ - Unshare(); - - M_PENDATA->m_join = Join; - - RealizeResource(); -} - -void wxPen::SetCap(int Cap) -{ - Unshare(); - - M_PENDATA->m_cap = Cap; - - RealizeResource(); -} - -int wx2msPenStyle(int wx_style) -{ - int cstyle; -/*** -#ifdef __WIN32__ - DWORD vers = GetVersion() ; - WORD high = HIWORD(vers) ; // high bit=0 for NT, 1 for Win32s -#endif -***/ - switch (wx_style) - { - case wxDOT: - cstyle = PS_DOT; - break; - case wxSHORT_DASH: - case wxLONG_DASH: - cstyle = PS_DASH; - break; - case wxTRANSPARENT: - cstyle = PS_NULL; - break; - case wxUSER_DASH: - // User dash style not supported on Win3.1, sorry... -#ifdef __WIN32__ - // Win32s doesn't have PS_USERSTYLE -/*** - if ((high&0x8000)==0) -***/ - if (wxGetOsVersion()==wxWINDOWS_NT) - cstyle = PS_USERSTYLE ; - else - cstyle = PS_DOT ; // We must make a choice... This is mine! -#else - cstyle = PS_DASH ; -#endif - break ; - case wxSOLID: - default: - cstyle = PS_SOLID; - break; - } - return cstyle; -} - diff --git a/src/msw/penwin.cpp b/src/msw/penwin.cpp deleted file mode 100644 index 3545a28bda..0000000000 --- a/src/msw/penwin.cpp +++ /dev/null @@ -1,120 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: penwin.cpp -// Purpose: PenWindows code -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/setup.h" -#include "wx/window.h" -#endif - -#include "wx/msw/private.h" - -#if wxUSE_PENWINDOWS - -#ifdef __BORLANDC__ -#define RPA_DEFAULT 1 -#else -#include -#endif - -HANDLE g_hPenWin = (HANDLE)NULL; -typedef void (CALLBACK * PENREGPROC)(WORD,BOOL); - -// The routine below allows Windows applications (binaries) to -// support Pen input when running under Microsoft Windows for -// Pen Computing 1.0 without need of the PenPalete. -// -// Should masked edit functions be added to wxWindows we would -// be a new class of functions to support BEDIT controls. -// -// (The function is a NOOP for native Windows-NT) -#ifndef __WIN32__ -static void (CALLBACK * RegPenApp) (WORD, BOOL) = NULL; -#endif - -// Where is this called?? -void wxEnablePenAppHooks (bool hook) -{ -#ifndef __WIN32__ - if (hook) - { - if (g_hPenWin) - return; - - /////////////////////////////////////////////////////////////////////// - // If running on a Pen Windows system, register this app so all - // EDIT controls in dialogs are replaced by HEDIT controls. - if ((g_hPenWin = (HANDLE)GetSystemMetrics (SM_PENWINDOWS)) != (HANDLE) NULL) - { - // We do this fancy GetProcAddress simply because we don't - // know if we're running Pen Windows. - if ((RegPenApp = (PENREGPROC)GetProcAddress (g_hPenWin, "RegisterPenApp")) != NULL) - (*RegPenApp) (RPA_DEFAULT, TRUE); - } - } - else - { - /////////////////////////////////////////////////////////////////////// - // If running on a Pen Windows system, unregister - if (g_hPenWin) - { - // Unregister this app - if (RegPenApp != NULL) - (*RegPenApp) (RPA_DEFAULT, FALSE); - g_hPenWin = (HANDLE) NULL; - } - } -#endif /* ! Windows-NT */ -} - -#endif - // End wxUSE_PENWINDOWS - -void wxRegisterPenWin(void) -{ -#if wxUSE_PENWINDOWS -/////////////////////////////////////////////////////////////////////// -// If running on a Pen Windows system, register this app so all -// EDIT controls in dialogs are replaced by HEDIT controls. -// (Notice the CONTROL statement in the RC file is "EDIT", -// RegisterPenApp will automatically change that control to -// an HEDIT. - if ((g_hPenWin = (HANDLE)GetSystemMetrics(SM_PENWINDOWS)) != (HANDLE)NULL) { - // We do this fancy GetProcAddress simply because we don't - // know if we're running Pen Windows. - if ( (RegPenApp = (void (CALLBACK *)(WORD, BOOL))GetProcAddress(g_hPenWin, "RegisterPenApp"))!= NULL) - (*RegPenApp)(RPA_DEFAULT, TRUE); - } -/////////////////////////////////////////////////////////////////////// -#endif -} - -void wxCleanUpPenWin(void) -{ -#if wxUSE_PENWINDOWS - if (g_hPenWin) { - // Unregister this app - if (RegPenApp != NULL) - (*RegPenApp)(RPA_DEFAULT, FALSE); - } -#endif -} - diff --git a/src/msw/pnghand.cpp b/src/msw/pnghand.cpp deleted file mode 100644 index 2f82fa3e10..0000000000 --- a/src/msw/pnghand.cpp +++ /dev/null @@ -1,788 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: pnghand.cpp -// Purpose: Implements a PNG reader class + handler -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "pngread.h" -#pragma implementation "pnghand.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#include -#include -#include - -#if wxUSE_IOSTREAMH -#include -#else -#include -# ifdef _MSC_VER - using namespace std; -# endif -#endif - -#include -#include -#include -#include -#include - -extern "C" { -#include "png.h" -} - -extern "C" void png_read_init PNGARG((png_structp png_ptr)); -extern "C" void png_write_init PNGARG((png_structp png_ptr)); - -#ifndef GlobalAllocPtr -#define GlobalPtrHandle(lp) \ - ((HGLOBAL)GlobalHandle(lp)) - -#define GlobalLockPtr(lp) \ - ((BOOL)GlobalLock(GlobalPtrHandle(lp))) -#define GlobalUnlockPtr(lp) \ - GlobalUnlock(GlobalPtrHandle(lp)) - -#define GlobalAllocPtr(flags, cb) \ - (GlobalLock(GlobalAlloc((flags), (cb)))) -#define GlobalReAllocPtr(lp, cbNew, flags) \ - (GlobalUnlockPtr(lp), GlobalLock(GlobalReAlloc(GlobalPtrHandle(lp) , (cbNew), (flags)))) -#define GlobalFreePtr(lp) \ - (GlobalUnlockPtr(lp), (BOOL)GlobalFree(GlobalPtrHandle(lp))) -#endif - - -void -ima_png_error(png_struct *png_ptr, char *message) -{ -// wxMessageBox(message, "PNG error"); - - longjmp(png_ptr->jmpbuf, 1); -} - - -// static wxGifReaderIter* iter; -wxPalette *wxCopyPalette(const wxPalette *cmap); - -wxPNGReader::wxPNGReader(void) -{ - filetype = 0; - RawImage = NULL; // Image data - - Width = 0; Height = 0; // Dimensions - Depth = 0; // (bits x pixel) - ColorType = 0; // Bit 1 = Palette used - // Bit 2 = Color used - // Bit 3 = Alpha used - - EfeWidth = 0; // Efective Width - - lpbi = NULL; - bgindex = -1; - Palette = 0; - imageOK = FALSE; -} - -wxPNGReader::wxPNGReader ( char* ImageFileName ) -{ - imageOK = FALSE; - filetype = 0; - RawImage = NULL; // Image data - - Width = 0; Height = 0; // Dimensions - Depth = 0; // (bits x pixel) - ColorType = 0; // Bit 1 = Palette used - // Bit 2 = Color used - // Bit 3 = Alpha used - - EfeWidth = 0; // Efective Width - - lpbi = NULL; - bgindex = -1; - Palette = 0; - - imageOK = ReadFile (ImageFileName); -} - -void -wxPNGReader::Create(int width, int height, int depth, int colortype) -{ - Width = width; Height = height; Depth = depth; - ColorType = (colortype>=0) ? colortype: ((Depth>8) ? COLORTYPE_COLOR: 0); - - if (lpbi) { -#ifdef __WIN16__ - GlobalFreePtr((unsigned int) lpbi); -#else - GlobalFreePtr(lpbi); -#endif -// delete Palette; - } - RawImage = 0; - Palette = 0; - if (lpbi = DibCreate(Depth, Width, Height)) { - RawImage = (ImagePointerType)DibPtr(lpbi); - EfeWidth = (long)(((long)Width*Depth + 31) / 32) * 4; - imageOK = TRUE; - } -} - -wxPNGReader::~wxPNGReader ( ) -{ - if (lpbi) { -#ifdef __WIN16__ - GlobalFreePtr((unsigned int) lpbi); -#else - GlobalFreePtr(lpbi); -#endif - delete Palette; - } -} - - -int wxPNGReader::GetIndex(int x, int y) -{ - if (!Inside(x, y) || (Depth>8)) return -1; - - ImagePointerType ImagePointer = RawImage + EfeWidth*y + (x*Depth >> 3); - int index = (int)(*ImagePointer); - return index; -} - -bool wxPNGReader::GetRGB(int x, int y, byte* r, byte* g, byte* b) -{ - if (!Inside(x, y)) return FALSE; - - if (Palette) { - return Palette->GetRGB(GetIndex(x, y), r, g, b); -/* PALETTEENTRY entry; - ::GetPaletteEntries((HPALETTE) Palette->GetHPALETTE(), GetIndex(x, y), 1, &entry); - *r = entry.peRed; - *g = entry.peGreen; - *b = entry.peBlue; */ - } else { - ImagePointerType ImagePointer = RawImage + EfeWidth*y + (x*Depth >> 3); - *b = ImagePointer[0]; - *g = ImagePointer[1]; - *r = ImagePointer[2]; - } - return TRUE; -} - - -bool wxPNGReader::SetIndex(int x, int y, int index) -{ - if (!Inside(x, y) || (Depth>8)) return FALSE; - - ImagePointerType ImagePointer = RawImage + EfeWidth*y + (x*Depth >> 3); - *ImagePointer = index; - - return TRUE; -} - -bool wxPNGReader::SetRGB(int x, int y, byte r, byte g, byte b) -{ - if (!Inside(x, y)) return FALSE; - - if (ColorType & COLORTYPE_PALETTE) - { - if (!Palette) return FALSE; - SetIndex(x, y, Palette->GetPixel(r, g, b)); - - } else { - ImagePointerType ImagePointer = RawImage + EfeWidth*y + (x*Depth >> 3); - ImagePointer[0] = b; - ImagePointer[1] = g; - ImagePointer[2] = r; - } - - return TRUE; -} - -bool wxPNGReader::SetPalette(wxPalette* colourmap) -{ - if (!colourmap) - return FALSE; - ColorType |= (COLORTYPE_PALETTE | COLORTYPE_COLOR); - Palette = colourmap; - return (DibSetUsage(lpbi, (HPALETTE) Palette->GetHPALETTE(), WXIMA_COLORS ) != 0); -} - -bool -wxPNGReader::SetPalette(int n, byte *r, byte *g, byte *b) -{ - Palette = new wxPalette(); - if (!Palette) - return FALSE; - - if (!g) g = r; - if (!b) b = g; - Palette->Create(n, r, g, b); - ColorType |= (COLORTYPE_PALETTE | COLORTYPE_COLOR); - return (DibSetUsage(lpbi, (HPALETTE) Palette->GetHPALETTE(), WXIMA_COLORS ) != 0); -} - -bool -wxPNGReader::SetPalette(int n, rgb_color_struct *rgb_struct) -{ - Palette = new wxPalette(); - if (!Palette) - return FALSE; - - byte r[256], g[256], b[256]; - - for(int i=0; iCreate(n, r, g, b); - ColorType |= (COLORTYPE_PALETTE | COLORTYPE_COLOR); - return (DibSetUsage(lpbi, (HPALETTE) Palette->GetHPALETTE(), WXIMA_COLORS ) != 0); -} - -void wxPNGReader::NullData() -{ - lpbi = NULL; - Palette = NULL; -} - -wxBitmap* wxPNGReader::GetBitmap(void) -{ - wxBitmap *bitmap = new wxBitmap; - if ( InstantiateBitmap(bitmap) ) - return bitmap; - else - { - delete bitmap; - return NULL; - } -} - -bool wxPNGReader::InstantiateBitmap(wxBitmap *bitmap) -{ - HDC dc = ::CreateCompatibleDC(NULL); - - if (dc) - { - // tmpBitmap is a dummy, to satisfy ::CreateCompatibleDC (it - // is a memory dc that must have a bitmap selected into it) - HDC dc2 = GetDC(NULL); - HBITMAP tmpBitmap = ::CreateCompatibleBitmap(dc2, GetWidth(), GetHeight()); - ReleaseDC(NULL, dc2); - HBITMAP oldBitmap = (HBITMAP) ::SelectObject(dc, tmpBitmap); - - if ( Palette ) - { - HPALETTE oldPal = ::SelectPalette(dc, (HPALETTE) Palette->GetHPALETTE(), FALSE); - ::RealizePalette(dc); - } - - HBITMAP hBitmap = ::CreateDIBitmap(dc, lpbi, - CBM_INIT, RawImage, (LPBITMAPINFO) lpbi, DIB_PAL_COLORS); - - ::SelectPalette(dc, NULL, TRUE); - ::SelectObject(dc, oldBitmap); - ::DeleteObject(tmpBitmap); - ::DeleteDC(dc); - - if ( hBitmap ) - { - bitmap->SetHBITMAP((WXHBITMAP) hBitmap); - bitmap->SetWidth(GetWidth()); - bitmap->SetHeight(GetHeight()); - bitmap->SetDepth(GetDepth()); - if ( GetDepth() > 1 && Palette ) - bitmap->SetPalette(*Palette); - bitmap->SetOk(TRUE); - - - // Make a mask if appropriate - if ( bgindex > -1 ) - { - wxMask *mask = CreateMask(); - bitmap->SetMask(mask); - } - return TRUE; - } - else - { - return FALSE; - } - } - else - { - return FALSE; - } -} - -wxPalette *wxCopyPalette(const wxPalette *cmap) -{ - // To get number of entries... - WORD count = 0; - ::GetObject((HPALETTE) cmap->GetHPALETTE(), sizeof(WORD), &count); - - LOGPALETTE* logPal = (LOGPALETTE*) - new BYTE[sizeof(LOGPALETTE) + count*sizeof(PALETTEENTRY)]; - logPal->palVersion = 0x300; - logPal->palNumEntries = count; - ::GetPaletteEntries((HPALETTE) cmap->GetHPALETTE(), 0, count, logPal->palPalEntry); - - HPALETTE hPalette = ::CreatePalette(logPal); - delete[] logPal; - - wxPalette *newCmap = new wxPalette; - newCmap->SetHPALETTE((WXHPALETTE) hPalette); - return newCmap; -} - -wxMask *wxPNGReader::CreateMask(void) -{ - HBITMAP hBitmap = ::CreateBitmap(GetWidth(), GetHeight(), 1, 1, NULL); - - HDC dc = ::CreateCompatibleDC(NULL); - HBITMAP oldBitmap = (HBITMAP) ::SelectObject(dc, hBitmap); - - int bgIndex = GetBGIndex(); - - int x,y; - - for (x=0; xSetMaskBitmap((WXHBITMAP) hBitmap); - return mask; -} - -bool wxPNGReader::ReadFile(char * ImageFileName) -{ - int number_passes; - - if (ImageFileName) - strcpy(filename, ImageFileName); - - FILE *fp; - png_struct *png_ptr; - png_info *info_ptr; - wxPNGReaderIter iter(this); - - /* open the file */ - fp = fopen(filename, "rb"); - if (!fp) - return FALSE; - - /* allocate the necessary structures */ - png_ptr = new (png_struct); - if (!png_ptr) - { - fclose(fp); - return FALSE; - } - - info_ptr = new (png_info); - if (!info_ptr) - { - fclose(fp); - delete(png_ptr); - return FALSE; - } - /* set error handling */ - if (setjmp(png_ptr->jmpbuf)) - { - png_read_destroy(png_ptr, info_ptr, (png_info *)0); - fclose(fp); - delete(png_ptr); - delete(info_ptr); - - /* If we get here, we had a problem reading the file */ - return FALSE; - } - //png_set_error(ima_png_error, NULL); - - /* initialize the structures, info first for error handling */ - png_info_init(info_ptr); - png_read_init(png_ptr); - - /* set up the input control */ - png_init_io(png_ptr, fp); - - /* read the file information */ - png_read_info(png_ptr, info_ptr); - - /* allocate the memory to hold the image using the fields - of png_info. */ - png_color_16 my_background={ 0, 31, 127, 255, 0 }; - - if (info_ptr->valid & PNG_INFO_bKGD) - { - png_set_background(png_ptr, &(info_ptr->background), - PNG_BACKGROUND_GAMMA_FILE, 1, 1.0); - if ( info_ptr->num_palette > 0 ) - bgindex = info_ptr->background.index; - } - else { - png_set_background(png_ptr, &my_background, - PNG_BACKGROUND_GAMMA_SCREEN, 0, 1.0); - - // Added by JACS: guesswork! - if ( info_ptr->num_trans != 0 ) - bgindex = info_ptr->num_trans - 1 ; - } - - /* tell libpng to strip 16 bit depth files down to 8 bits */ - if (info_ptr->bit_depth == 16) - png_set_strip_16(png_ptr); - - int pixel_depth=(info_ptr->pixel_depth<24) ? info_ptr->pixel_depth: 24; - Create(info_ptr->width, info_ptr->height, pixel_depth, - info_ptr->color_type); - - if (info_ptr->num_palette>0) - { - SetPalette((int)info_ptr->num_palette, (rgb_color_struct*)info_ptr->palette); - } - - int row_stride = info_ptr->width * ((pixel_depth+7)>>3); - // printf("P = %d D = %d RS= %d ", info_ptr->num_palette, info_ptr->pixel_depth,row_stride); -// printf("CT = %d TRS = %d BD= %d ", info_ptr->color_type, info_ptr->valid & PNG_INFO_tRNS,info_ptr->bit_depth); - - byte *row_pointers = new byte[row_stride]; - - /* turn on interlace handling */ - if (info_ptr->interlace_type) - number_passes = png_set_interlace_handling(png_ptr); - else - number_passes = 1; -// printf("NP = %d ", number_passes); - - for (int pass=0; pass< number_passes; pass++) { - iter.upset(); - int y=0; - do { -// (unsigned char *)iter.GetRow(); - if (info_ptr->interlace_type) { - if (pass>0) - iter.GetRow(row_pointers, row_stride); - png_read_row(png_ptr, row_pointers, NULL); - } - else - png_read_row(png_ptr, row_pointers, NULL); - - iter.SetRow(row_pointers, row_stride); - y++; - } while(iter.PrevRow()); -// printf("Y=%d ",y); - } - delete[] row_pointers; - - /* read the rest of the file, getting any additional chunks - in info_ptr */ - png_read_end(png_ptr, info_ptr); - - /* clean up after the read, and free any memory allocated */ - png_read_destroy(png_ptr, info_ptr, (png_info *)0); - - /* free the structures */ - delete(png_ptr); - delete(info_ptr); - - /* close the file */ - fclose(fp); - - /* that's it */ - return TRUE; -} - - -/* write a png file */ - -bool wxPNGReader::SaveFile(char * ImageFileName) -{ - if (ImageFileName) - strcpy(filename, ImageFileName); - - wxPNGReaderIter iter(this); - FILE *fp; - png_struct *png_ptr; - png_info *info_ptr; - - /* open the file */ - fp = fopen(filename, "wb"); - if (!fp) - return FALSE; - - /* allocate the necessary structures */ - png_ptr = new (png_struct); - if (!png_ptr) - { - fclose(fp); - return FALSE; - } - - info_ptr = new (png_info); - if (!info_ptr) - { - fclose(fp); - delete(png_ptr); - return FALSE; - } - - /* set error handling */ - if (setjmp(png_ptr->jmpbuf)) - { - png_write_destroy(png_ptr); - fclose(fp); - delete(png_ptr); - delete(info_ptr); - - /* If we get here, we had a problem reading the file */ - return FALSE; - } - //png_set_error(ima_png_error, NULL); - -// printf("writig pg %s ", filename); - /* initialize the structures */ - png_info_init(info_ptr); - png_write_init(png_ptr); - - int row_stride = GetWidth() * ((GetDepth()+7)>>3); - /* set up the output control */ - png_init_io(png_ptr, fp); - - /* set the file information here */ - info_ptr->width = GetWidth(); - info_ptr->height = GetHeight(); - info_ptr->pixel_depth = GetDepth(); - info_ptr->channels = (GetDepth()>8) ? 3: 1; - info_ptr->bit_depth = GetDepth()/info_ptr->channels; - info_ptr->color_type = GetColorType(); - info_ptr->compression_type = info_ptr->filter_type = info_ptr->interlace_type=0; - info_ptr->valid = 0; - info_ptr->rowbytes = row_stride; - - -// printf("P = %d D = %d RS= %d GD= %d CH= %d ", info_ptr->pixel_depth, info_ptr->bit_depth, row_stride, GetDepth(), info_ptr->channels); - /* set the palette if there is one */ - if ((GetColorType() & COLORTYPE_PALETTE) && GetPalette()) - { -// printf("writing paleta[%d %d %x]",GetColorType() ,COLORTYPE_PALETTE, GetPalette()); - info_ptr->valid |= PNG_INFO_PLTE; - info_ptr->palette = new png_color[256]; - info_ptr->num_palette = 256; - for (int i=0; i<256; i++) - GetPalette()->GetRGB(i, &info_ptr->palette[i].red, &info_ptr->palette[i].green, &info_ptr->palette[i].blue); - } -// printf("Paleta [%d %d %x]",GetColorType() ,COLORTYPE_PALETTE, GetPalette()); - - - /* optional significant bit chunk */ -// info_ptr->valid |= PNG_INFO_sBIT; -// info_ptr->sig_bit = true_bit_depth; - - /* optional gamma chunk */ -// info_ptr->valid |= PNG_INFO_gAMA; -// info_ptr->gamma = gamma; - - /* other optional chunks */ - - /* write the file information */ - png_write_info(png_ptr, info_ptr); - - /* set up the transformations you want. Note that these are - all optional. Only call them if you want them */ - - /* shift the pixels up to a legal bit depth and fill in - as appropriate to correctly scale the image */ -// png_set_shift(png_ptr, &(info_ptr->sig_bit)); - - /* pack pixels into bytes */ -// png_set_packing(png_ptr); - - /* flip bgr pixels to rgb */ -// png_set_bgr(png_ptr); - - /* swap bytes of 16 bit files to most significant bit first */ -// png_set_swap(png_ptr); - - /* get rid of filler bytes, pack rgb into 3 bytes */ -// png_set_rgbx(png_ptr); - -/* If you are only writing one row at a time, this works */ - - byte *row_pointers = new byte[row_stride]; - iter.upset(); - do { -// (unsigned char *)iter.GetRow(); - iter.GetRow(row_pointers, row_stride); - png_write_row(png_ptr, row_pointers); - } while(iter.PrevRow()); - - delete[] row_pointers; - -/* write the rest of the file */ - png_write_end(png_ptr, info_ptr); - - /* clean up after the write, and free any memory allocated */ - png_write_destroy(png_ptr); - - /* if you malloced the palette, free it here */ - if (info_ptr->palette) - delete[] (info_ptr->palette); - - /* free the structures */ - delete(png_ptr); - delete(info_ptr); - - /* close the file */ - fclose(fp); - - /* that's it */ - return TRUE; -} - -static int Power(int x, int y) -{ - int z = 1; - int i; - for ( i = 0; i < y; i++) - { - z *= x; - } - return z; -} - -static char hexArray[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', - 'C', 'D', 'E', 'F' }; - -static void DecToHex(int dec, char *buf) -{ - int firstDigit = (int)(dec/16.0); - int secondDigit = (int)(dec - (firstDigit*16.0)); - buf[0] = hexArray[firstDigit]; - buf[1] = hexArray[secondDigit]; - buf[2] = 0; -} - - -bool wxPNGReader::SaveXPM(char *filename, char *name) -{ - char nameStr[256]; - if ( name ) - strcpy(nameStr, name); - else - { - strcpy(nameStr, filename); - wxStripExtension(nameStr); - } - - if ( GetDepth() > 4 ) - { - // Only a depth of 4 and below allowed - return FALSE; - } - - if ( !GetPalette() ) - return FALSE; - - ofstream str(filename); - if ( str.bad() ) - return FALSE; - - int noColours = Power(2, GetDepth()); - - // Output header - str << "/* XPM */\n"; - str << "static char * " << nameStr << "_xpm[] = {\n"; - str << "\"" << GetWidth() << " " << GetHeight() << " " << noColours << " 1\",\n"; - - // Output colourmap - int base = 97 ; // start from 'a' - - unsigned char red, green, blue; - char hexBuf[4]; - int i; - for ( i = 0; i < noColours; i ++) - { - str << "\"" << (char)(base + i) << " c #"; - GetPalette()->GetRGB(i, &red, &green, &blue); - DecToHex(red, hexBuf); - str << hexBuf; - DecToHex(green, hexBuf); - str << hexBuf; - DecToHex(blue, hexBuf); - str << hexBuf; - str << "\",\n"; - } - - // Output the data - int x, y; - for ( y = 0; y < GetHeight(); y++) - { - str << "\""; - for ( x = 0; x < GetWidth(); x++) - { - int index = GetIndex(x, y); - str << (char)(base + index) ; - } - str << "\",\n"; - } - - str << "};\n"; - str.flush(); - - return TRUE; -} - -#include - -IMPLEMENT_DYNAMIC_CLASS(wxPNGFileHandler, wxBitmapHandler) - -bool wxPNGFileHandler::LoadFile(wxBitmap *bitmap, const wxString& name, long flags, - int desiredWidth, int desiredHeight) -{ - wxPNGReader reader; - if (reader.ReadFile((char*) (const char*) name)) - { - return reader.InstantiateBitmap(bitmap); - } - else - return FALSE; -} - -bool wxPNGFileHandler::SaveFile(wxBitmap *bitmap, const wxString& name, int type, const wxPalette *pal) -{ - return FALSE; -} - - diff --git a/src/msw/printdlg.cpp b/src/msw/printdlg.cpp deleted file mode 100644 index c48762e3c2..0000000000 --- a/src/msw/printdlg.cpp +++ /dev/null @@ -1,184 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: printdlg.cpp -// Purpose: wxPrintDialog, wxPageSetupDialog -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "printdlg.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#endif - -#include "wx/printdlg.h" -#include "wx/dcprint.h" - -// Have to emulate page setup dialog for Win16 -#if !defined(__WIN95__) -#include "wx/generic/prntdlgg.h" -#endif - -#include -#include -#include - -#ifndef __WIN32__ -#include -#endif - -// Clash with Windows header files -#ifdef StartDoc -#undef StartDoc -#endif - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxPrintDialog, wxDialog) -IMPLEMENT_CLASS(wxPageSetupDialog, wxDialog) -#endif - -wxPrintDialog::wxPrintDialog(void): - wxDialog() -{ - dialogParent = NULL; - printerDC = NULL; - destroyDC = TRUE; - deviceName = NULL; - driverName = NULL; - portName = NULL; -} - -wxPrintDialog::wxPrintDialog(wxWindow *p, wxPrintData* data): - wxDialog() -{ - Create(p, data); -} - -bool wxPrintDialog::Create(wxWindow *p, wxPrintData* data) -{ - dialogParent = p; - printerDC = NULL; - destroyDC = TRUE; - deviceName = NULL; - driverName = NULL; - portName = NULL; - - if ( data ) - printData = *data; - -#ifdef __WXMSW__ - printData.SetOwnerWindow(p); -#endif - - return TRUE; -} - -wxPrintDialog::~wxPrintDialog(void) -{ - if (destroyDC && printerDC) - delete printerDC; - if (deviceName) delete[] deviceName; - if (driverName) delete[] driverName; - if (portName) delete[] portName; -} - -int wxPrintDialog::ShowModal(void) -{ - printData.ConvertToNative(); - - bool ret = (PrintDlg( (PRINTDLG *)printData.printData ) != 0); - if ( ret != FALSE && ((PRINTDLG *)printData.printData)->hDC) - { - wxPrinterDC *pdc = new wxPrinterDC((WXHDC) ((PRINTDLG *)printData.printData)->hDC); - printerDC = pdc; - printData.ConvertFromNative(); - return wxID_OK; - } - else - { -/* - char buf[256]; - DWORD exError = CommDlgExtendedError(); - sprintf(buf, "ret = %d, ex error = %d", (int) ret, (int) exError); - wxMessageBox(buf); -*/ - return wxID_CANCEL; - } -} - -wxDC *wxPrintDialog::GetPrintDC(void) -{ - if (printerDC) - { - destroyDC = FALSE; - return printerDC; - } - else - return NULL; -} - -/* - * wxPageSetupDialog - */ - -wxPageSetupDialog::wxPageSetupDialog(void): - wxDialog() -{ - m_dialogParent = NULL; -} - -wxPageSetupDialog::wxPageSetupDialog(wxWindow *p, wxPageSetupData *data): - wxDialog() -{ - Create(p, data); -} - -bool wxPageSetupDialog::Create(wxWindow *p, wxPageSetupData *data) -{ - m_dialogParent = p; - - if (data) - m_pageSetupData = (*data); - -#if defined(__WIN95__) - m_pageSetupData.SetOwnerWindow(p); -#endif - return TRUE; -} - -wxPageSetupDialog::~wxPageSetupDialog(void) -{ -} - -int wxPageSetupDialog::ShowModal(void) -{ -#ifdef __WIN95__ - m_pageSetupData.ConvertToNative(); - if (PageSetupDlg( (PAGESETUPDLG *)m_pageSetupData.GetNativeData() )) - { - m_pageSetupData.ConvertFromNative(); - return wxID_OK; - } - else - return wxID_CANCEL; -#else - wxGenericPageSetupDialog *genericPageSetupDialog = new wxGenericPageSetupDialog(GetParent(), & m_pageSetupData); - int ret = genericPageSetupDialog->ShowModal(); - m_pageSetupData = genericPageSetupDialog->GetPageSetupData(); - genericPageSetupDialog->Close(TRUE); - return ret; -#endif -} - diff --git a/src/msw/printwin.cpp b/src/msw/printwin.cpp deleted file mode 100644 index 3171efe667..0000000000 --- a/src/msw/printwin.cpp +++ /dev/null @@ -1,361 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: printwin.cpp -// Purpose: wxWindowsPrinter framework -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "printwin.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#include "wx/defs.h" - -#ifndef WX_PRECOMP -#include "wx/utils.h" -#include "wx/dc.h" -#include "wx/app.h" -#include "wx/msgdlg.h" -#endif - -#include "wx/msw/printwin.h" -#include "wx/dcprint.h" -#include "wx/printdlg.h" -#include "wx/msw/private.h" - -#include -#include -#include - -// Clash with Windows header files -#ifdef StartDoc -#undef StartDoc -#endif - -#ifndef __WIN32__ -#include -#endif - -LONG APIENTRY _EXPORT wxAbortProc(HDC hPr, int Code); - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxWindowsPrinter, wxPrinterBase) -IMPLEMENT_CLASS(wxWindowsPrintPreview, wxPrintPreviewBase) -#endif - -/* - * Printer - */ - -wxWindowsPrinter::wxWindowsPrinter(wxPrintData *data): - wxPrinterBase(data) -{ - m_lpAbortProc = (WXFARPROC) MakeProcInstance((FARPROC) wxAbortProc, wxGetInstance()); -} - -wxWindowsPrinter::~wxWindowsPrinter(void) -{ - FreeProcInstance((FARPROC) m_lpAbortProc); -} - -bool wxWindowsPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt) -{ - sm_abortIt = FALSE; - sm_abortWindow = NULL; - - if (!printout) - return FALSE; - - printout->SetIsPreview(FALSE); - printout->OnPreparePrinting(); - - // Get some parameters from the printout, if defined - int fromPage, toPage; - int minPage, maxPage; - printout->GetPageInfo(&minPage, &maxPage, &fromPage, &toPage); - - if (maxPage == 0) - return FALSE; - - m_printData.SetMinPage(minPage); - m_printData.SetMaxPage(maxPage); - if (fromPage != 0) - m_printData.SetFromPage(fromPage); - if (toPage != 0) - m_printData.SetToPage(toPage); - - if (minPage != 0) - { - m_printData.EnablePageNumbers(TRUE); - if (m_printData.GetFromPage() < m_printData.GetMinPage()) - m_printData.SetFromPage(m_printData.GetMinPage()); - else if (m_printData.GetFromPage() > m_printData.GetMaxPage()) - m_printData.SetFromPage(m_printData.GetMaxPage()); - if (m_printData.GetToPage() > m_printData.GetMaxPage()) - m_printData.SetToPage(m_printData.GetMaxPage()); - else if (m_printData.GetToPage() < m_printData.GetMinPage()) - m_printData.SetToPage(m_printData.GetMinPage()); - } - else - m_printData.EnablePageNumbers(FALSE); - - // Create a suitable device context - wxDC *dc = NULL; - if (prompt) - { - wxPrintDialog dialog(parent, & m_printData); - if (dialog.ShowModal() == wxID_OK) - { - dc = dialog.GetPrintDC(); - m_printData = dialog.GetPrintData(); - } - } - else - { - dc = new wxPrinterDC("", "", "", FALSE, m_printData.GetOrientation()); - } - - // May have pressed cancel. - if (!dc || !dc->Ok()) - { - if (dc) delete dc; - return FALSE; - } - - int logPPIScreenX = 0; - int logPPIScreenY = 0; - int logPPIPrinterX = 0; - int logPPIPrinterY = 0; - - HDC hdc = ::GetDC(NULL); - logPPIScreenX = ::GetDeviceCaps(hdc, LOGPIXELSX); - logPPIScreenY = ::GetDeviceCaps(hdc, LOGPIXELSY); - ::ReleaseDC(NULL, hdc); - - logPPIPrinterX = ::GetDeviceCaps((HDC) dc->GetHDC(), LOGPIXELSX); - logPPIPrinterY = ::GetDeviceCaps((HDC) dc->GetHDC(), LOGPIXELSY); - if (logPPIPrinterX == 0 || logPPIPrinterY == 0) - { - delete dc; - return FALSE; - } - - printout->SetPPIScreen(logPPIScreenX, logPPIScreenY); - printout->SetPPIPrinter(logPPIPrinterX, logPPIPrinterY); - - // Set printout parameters - printout->SetDC(dc); - - int w, h; - long ww, hh; - dc->GetSize(&w, &h); - printout->SetPageSizePixels((int)w, (int)h); - dc->GetSizeMM(&ww, &hh); - printout->SetPageSizeMM((int)ww, (int)hh); - - // Create an abort window - wxBeginBusyCursor(); - - wxWindow *win = CreateAbortWindow(parent, printout); - wxYield(); - -#if defined(__BORLANDC__) || defined(__GNUWIN32__) || defined(__SALFORDC__) || !defined(__WIN32__) - ::SetAbortProc((HDC) dc->GetHDC(), (FARPROC) m_lpAbortProc); -#else - ::SetAbortProc((HDC) dc->GetHDC(), (int (_stdcall *) - // cast it to right type only if required - // @@@ it's really cdecl and we're casting it to stdcall - either there is - // something I don't understand or it will crash at first usage - #ifdef STRICT - (HDC, int) - #else - () - #endif - )m_lpAbortProc); -#endif - - if (!win) - { - wxEndBusyCursor(); - wxMessageBox("Sorry, could not create an abort dialog.", "Print Error", wxOK, parent); - delete dc; - } - sm_abortWindow = win; - sm_abortWindow->Show(TRUE); - wxYield(); - - printout->OnBeginPrinting(); - - bool keepGoing = TRUE; - - int copyCount; - for (copyCount = 1; copyCount <= m_printData.GetNoCopies(); copyCount ++) - { - if (!printout->OnBeginDocument(m_printData.GetFromPage(), m_printData.GetToPage())) - { - wxEndBusyCursor(); - wxMessageBox("Could not start printing.", "Print Error", wxOK, parent); - break; - } - if (sm_abortIt) - break; - - int pn; - for (pn = m_printData.GetFromPage(); keepGoing && (pn <= m_printData.GetToPage()) && printout->HasPage(pn); - pn++) - { - if (sm_abortIt) - { - keepGoing = FALSE; - break; - } - else - { -// int dcID = ::SaveDC(dc->GetHDC()); - dc->StartPage(); - printout->OnPrintPage(pn); - dc->EndPage(); -// ::RestoreDC(dc->GetHDC(), dcID); - } - } - printout->OnEndDocument(); - } - - printout->OnEndPrinting(); - - if (sm_abortWindow) - { - sm_abortWindow->Show(FALSE); - delete sm_abortWindow; - sm_abortWindow = NULL; - } - - wxEndBusyCursor(); - - delete dc; - - return TRUE; -} - -bool wxWindowsPrinter::PrintDialog(wxWindow *parent) -{ - wxPrintDialog dialog(parent, & m_printData); - return (dialog.ShowModal() == wxID_OK); -} - -bool wxWindowsPrinter::Setup(wxWindow *parent) -{ - wxPrintDialog dialog(parent, & m_printData); - dialog.GetPrintData().SetSetupDialog(TRUE); - return (dialog.ShowModal() == wxID_OK); -} - -/* - * Print preview - */ - -wxWindowsPrintPreview::wxWindowsPrintPreview(wxPrintout *printout, wxPrintout *printoutForPrinting, wxPrintData *data): - wxPrintPreviewBase(printout, printoutForPrinting, data) -{ - DetermineScaling(); -} - -wxWindowsPrintPreview::~wxWindowsPrintPreview(void) -{ -} - -bool wxWindowsPrintPreview::Print(bool interactive) -{ - if (!m_printPrintout) - return FALSE; - wxWindowsPrinter printer(&m_printData); - return printer.Print(m_previewFrame, m_printPrintout, interactive); -} - -void wxWindowsPrintPreview::DetermineScaling(void) -{ - HDC dc = ::GetDC(NULL); - int screenWidth = ::GetDeviceCaps(dc, HORZSIZE); -// int screenHeight = ::GetDeviceCaps(dc, VERTSIZE); - int screenXRes = ::GetDeviceCaps(dc, HORZRES); -// int screenYRes = ::GetDeviceCaps(dc, VERTRES); - int logPPIScreenX = ::GetDeviceCaps(dc, LOGPIXELSX); - int logPPIScreenY = ::GetDeviceCaps(dc, LOGPIXELSY); - m_previewPrintout->SetPPIScreen(logPPIScreenX, logPPIScreenY); - - ::ReleaseDC(NULL, dc); - - // Get a device context for the currently selected printer - wxPrinterDC printerDC("", "", "", FALSE, m_printData.GetOrientation()); - - int printerWidth = 150; - int printerHeight = 250; - int printerXRes = 1500; - int printerYRes = 2500; - - if (printerDC.GetHDC()) - { - printerWidth = ::GetDeviceCaps((HDC) printerDC.GetHDC(), HORZSIZE); - printerHeight = ::GetDeviceCaps((HDC) printerDC.GetHDC(), VERTSIZE); - printerXRes = ::GetDeviceCaps((HDC) printerDC.GetHDC(), HORZRES); - printerYRes = ::GetDeviceCaps((HDC) printerDC.GetHDC(), VERTRES); - - int logPPIPrinterX = ::GetDeviceCaps((HDC) printerDC.GetHDC(), LOGPIXELSX); - int logPPIPrinterY = ::GetDeviceCaps((HDC) printerDC.GetHDC(), LOGPIXELSY); - - m_previewPrintout->SetPPIPrinter(logPPIPrinterX, logPPIPrinterY); - m_previewPrintout->SetPageSizeMM(printerWidth, printerHeight); - - if (logPPIPrinterX == 0 || logPPIPrinterY == 0 || printerWidth == 0 || printerHeight == 0) - m_isOk = FALSE; - } - else - m_isOk = FALSE; - - m_pageWidth = printerXRes; - m_pageHeight = printerYRes; - - // At 100%, the page should look about page-size on the screen. - m_previewScale = (float)((float)screenWidth/(float)printerWidth); - m_previewScale = m_previewScale * (float)((float)screenXRes/(float)printerYRes); -} - -/**************************************************************************** - - FUNCTION: wxAbortProc() - - PURPOSE: Processes messages for the Abort Dialog box - -****************************************************************************/ - -LONG APIENTRY _EXPORT wxAbortProc(HDC WXUNUSED(hPr), int WXUNUSED(Code)) -{ - MSG msg; - - if (!wxPrinterBase::sm_abortWindow) /* If the abort dialog isn't up yet */ - return(TRUE); - - /* Process messages intended for the abort dialog box */ - - while (!wxPrinterBase::sm_abortIt && PeekMessage(&msg, 0, 0, 0, TRUE)) - if (!IsDialogMessage((HWND) wxPrinterBase::sm_abortWindow->GetHWND(), &msg)) { - TranslateMessage(&msg); - DispatchMessage(&msg); - } - - /* bAbort is TRUE (return is FALSE) if the user has aborted */ - - return (!wxPrinterBase::sm_abortIt); -} - diff --git a/src/msw/radiobox.cpp b/src/msw/radiobox.cpp deleted file mode 100644 index 2120279d45..0000000000 --- a/src/msw/radiobox.cpp +++ /dev/null @@ -1,769 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: radiobox.cpp -// Purpose: wxRadioBox -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ - #pragma implementation "radiobox.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ - #pragma hdrstop -#endif - -#ifndef WX_PRECOMP - #include - #include "wx/setup.h" - #include "wx/bitmap.h" - #include "wx/brush.h" - #include "wx/radiobox.h" -#endif - -#include "wx/msw/private.h" - -#if !USE_SHARED_LIBRARY - IMPLEMENT_DYNAMIC_CLASS(wxRadioBox, wxControl) -#endif - -bool wxRadioBox::MSWCommand(WXUINT param, WXWORD id) -{ - if (param == BN_CLICKED) - { -#ifdef __WIN32__ - int i; - for (i = 0; i < m_noItems; i++) - if (id == GetWindowLong((HWND) m_radioButtons[i], GWL_ID)) - m_selectedButton = i; -#else - int i; - for (i = 0; i < m_noItems; i++) - if (id == GetWindowWord((HWND) m_radioButtons[i], GWW_ID)) - m_selectedButton = i; -#endif - - wxCommandEvent event(wxEVT_COMMAND_RADIOBOX_SELECTED, m_windowId); - event.SetInt( m_selectedButton ); - event.SetEventObject( this ); - ProcessCommand(event); - return TRUE; - } - else return FALSE; -} - -#if WXWIN_COMPATIBILITY -wxRadioBox::wxRadioBox(wxWindow *parent, wxFunction func, const char *title, - int x, int y, int width, int height, - int n, char **choices, - int majorDim, long style, const char *name) -{ - wxString *choices2 = new wxString[n]; - for ( int i = 0; i < n; i ++) choices2[i] = choices[i]; - Create(parent, -1, title, wxPoint(x, y), wxSize(width, height), n, choices2, majorDim, style, - wxDefaultValidator, name); - Callback(func); - delete choices2; -} - -#endif - -// Radio box item -wxRadioBox::wxRadioBox(void) -{ - m_selectedButton = -1; - m_noItems = 0; - m_noRowsOrCols = 0; - m_radioButtons = NULL; - m_majorDim = 0 ; - m_radioWidth = NULL ; - m_radioHeight = NULL ; -} - -bool wxRadioBox::Create(wxWindow *parent, wxWindowID id, const wxString& title, - const wxPoint& pos, const wxSize& size, - int n, const wxString choices[], - int majorDim, long style, - const wxValidator& val, const wxString& name) -{ - m_selectedButton = -1; - m_noItems = n; - - SetName(name); - SetValidator(val); - - parent->AddChild(this); - m_backgroundColour = parent->GetBackgroundColour() ; - m_foregroundColour = parent->GetForegroundColour() ; - - m_windowStyle = (long&)style; - - int x = pos.x; - int y = pos.y; - int width = size.x; - int height = size.y; - - if (id == -1) - m_windowId = NewControlId(); - else - m_windowId = id; - - m_noRowsOrCols = majorDim; - if (majorDim==0) - m_majorDim = n ; - else // Seemed to make sense to put this 'else' here... (RD) - m_majorDim = majorDim ; - - long msStyle = GROUP_FLAGS; - - bool want3D; - WXDWORD exStyle = Determine3DEffects(0, &want3D) ; - // Even with extended styles, need to combine with WS_BORDER - // for them to look right. - /* - if ( want3D || wxStyleHasBorder(m_windowStyle) ) - msStyle |= WS_BORDER; - */ - - - HWND the_handle = (HWND) parent->GetHWND() ; - - m_hWnd = (WXHWND)::CreateWindowEx - ( - (DWORD)exStyle, - GROUP_CLASS, - title, - msStyle, - 0, 0, 0, 0, - the_handle, - (HMENU)m_windowId, - wxGetInstance(), - NULL - ); - -#if CTL3D - if (want3D) - { - Ctl3dSubclassCtl((HWND)m_hWnd); - m_useCtl3D = TRUE; - } -#endif - - SetFont(parent->GetFont()); - - SubclassWin((WXHWND)m_hWnd); - - // Some radio boxes test consecutive id. - (void)NewControlId() ; - m_radioButtons = new WXHWND[n]; - m_radioWidth = new int[n] ; - m_radioHeight = new int[n] ; - int i; - for (i = 0; i < n; i++) - { - m_radioWidth[i] = m_radioHeight[i] = -1 ; - long groupStyle = 0; - if (i == 0 && style==0) - groupStyle = WS_GROUP; - long newId = NewControlId(); - long msStyle = groupStyle | RADIO_FLAGS; - - m_radioButtons[i] = (WXHWND) CreateWindowEx(exStyle, RADIO_CLASS, choices[i], - msStyle,0,0,0,0, - the_handle, (HMENU)newId, wxGetInstance(), NULL); -#if CTL3D - if (want3D) - { - Ctl3dSubclassCtl((HWND) m_hWnd); - m_useCtl3D = TRUE; - } -#endif - if (GetFont().Ok()) - { - SendMessage((HWND)m_radioButtons[i],WM_SETFONT, - (WPARAM)GetFont().GetResourceHandle(),0L); - } - m_subControls.Append((wxObject *)newId); - } - - // Create a dummy radio control to end the group. - (void)CreateWindowEx(0, RADIO_CLASS, "", WS_GROUP|RADIO_FLAGS, 0,0,0,0, the_handle, (HMENU)NewControlId(), wxGetInstance(), NULL); - - SetSelection(0); - - SetSize(x, y, width, height); - - return TRUE; -} - -#if 0 -bool wxRadioBox::Create(wxWindow *parent, wxWindowID id, const wxString& title, - const wxPoint& pos, const wxSize& size, - int n, const wxBitmap *choices[], - int majorDim, long style, - const wxValidator& val, const wxString& name) -{ - m_selectedButton = -1; - m_noRowsOrCols = 0; - m_noItems = n; - - SetName(name); - SetValidator(val); - - parent->AddChild(this); - m_backgroundColour = parent->GetBackgroundColour() ; - m_foregroundColour = parent->GetForegroundColour() ; - - m_windowStyle = (long&)style; - - int x = pos.x; - int y = pos.y; - int width = size.x; - int height = size.y; - - if (id == -1) - m_windowId = NewControlId(); - else - m_windowId = id; - - - m_noRowsOrCols = majorDim; - if (majorDim==0) - m_majorDim = n ; - m_majorDim = majorDim ; - HWND the_handle ; - - long msStyle = GROUP_FLAGS; - - bool want3D; - WXDWORD exStyle = Determine3DEffects(0, &want3D) ; - // Even with extended styles, need to combine with WS_BORDER - // for them to look right. - if ( want3D || wxStyleHasBorder(m_windowStyle) ) - msStyle |= WS_BORDER; - - m_hWnd = (WXHWND) CreateWindowEx((DWORD) exStyle, GROUP_CLASS, (title == "" ? NULL : (const char *)title), - msStyle, - 0,0,0,0, - (HWND) parent->GetHWND(), (HMENU) m_windowId, wxGetInstance(), NULL) ; - - the_handle = (HWND) parent->GetHWND(); - -#if CTL3D - if (want3D) - { - Ctl3dSubclassCtl((HWND) m_hWnd); - m_useCtl3D = TRUE; - } -#endif - - SetFont(parent->GetFont()); - - // Subclass again for purposes of dialog editing mode - SubclassWin((WXHWND)m_hWnd); - - (void)NewControlId() ; - m_radioButtons = new WXHWND[n]; - m_radioWidth = new int[n] ; - m_radioHeight = new int[n] ; - - int i; - for (i = 0; i < n; i++) - { - long groupStyle = 0; - if (i == 0 && style==0) - groupStyle = WS_GROUP; - long newId = NewControlId(); - m_radioWidth[i] = ((wxBitmap *)choices[i])->GetWidth(); - m_radioHeight[i] = ((wxBitmap *)choices[i])->GetHeight(); - char tmp[32] ; - sprintf(tmp,"Toggle%d",i) ; - long msStyle = groupStyle | RADIO_FLAGS; - m_radioButtons[i] = (WXHWND) CreateWindowEx(exStyle, RADIO_CLASS, tmp, - msStyle,0,0,0,0, - the_handle, (HMENU)newId, wxhInstance, NULL); -#if CTL3D - if (want3D) - { - Ctl3dSubclassCtl((HWND) m_hWnd); - m_useCtl3D = TRUE; - } -#endif - m_subControls.Append((wxObject *)newId); - } - // Create a dummy radio control to end the group. - (void)CreateWindowEx(0, RADIO_CLASS, "", WS_GROUP|RADIO_FLAGS, 0,0,0,0, the_handle, (HMENU)NewControlId(), wxGetInstance(), NULL); - - SetSelection(0); - - SetSize(x, y, width, height); - - return TRUE; -} -#endif - -wxRadioBox::~wxRadioBox(void) -{ - m_isBeingDeleted = TRUE; - - if (m_radioButtons) - { - int i; - for (i = 0; i < m_noItems; i++) - DestroyWindow((HWND) m_radioButtons[i]); - delete[] m_radioButtons; - } - if (m_radioWidth) - delete[] m_radioWidth ; - if (m_radioHeight) - delete[] m_radioHeight ; - if (m_hWnd) - ::DestroyWindow((HWND) m_hWnd) ; - m_hWnd = 0 ; - -} - -wxString wxRadioBox::GetLabel(int item) const -{ - GetWindowText((HWND)m_radioButtons[item], wxBuffer, 300); - return wxString(wxBuffer); -} - -void wxRadioBox::SetLabel(int item, const wxString& label) -{ - m_radioWidth[item] = m_radioHeight[item] = -1 ; - SetWindowText((HWND)m_radioButtons[item], (const char *)label); -} - -void wxRadioBox::SetLabel(int item, wxBitmap *bitmap) -{ - /* - m_radioWidth[item] = bitmap->GetWidth() + FB_MARGIN ; - m_radioHeight[item] = bitmap->GetHeight() + FB_MARGIN ; - */ -} - -int wxRadioBox::FindString(const wxString& s) const -{ - int i; - for (i = 0; i < m_noItems; i++) - { - GetWindowText((HWND) m_radioButtons[i], wxBuffer, 1000); - if (s == wxBuffer) - return i; - } - return -1; -} - -void wxRadioBox::SetSelection(int N) -{ - if ((N < 0) || (N >= m_noItems)) - return; - - // Following necessary for Win32s, because Win32s translate BM_SETCHECK - if (m_selectedButton >= 0 && m_selectedButton < m_noItems) - SendMessage((HWND) m_radioButtons[m_selectedButton], BM_SETCHECK, 0, 0L); - - SendMessage((HWND) m_radioButtons[N], BM_SETCHECK, 1, 0L); - m_selectedButton = N; -} - -// Get single selection, for single choice list items -int wxRadioBox::GetSelection(void) const -{ - return m_selectedButton; -} - -// Find string for position -wxString wxRadioBox::GetString(int N) const -{ - GetWindowText((HWND) m_radioButtons[N], wxBuffer, 1000); - return wxString(wxBuffer); -} - -void wxRadioBox::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - int currentX, currentY; - GetPosition(¤tX, ¤tY); - int xx = x; - int yy = y; - - if (x == -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) - xx = currentX; - if (y == -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) - yy = currentY; - - AdjustForParentClientOrigin(xx, yy, sizeFlags); - - wxString textRadioButton; - - int y_offset = yy; - int x_offset = xx; - int current_width, cyf; - - int cx1,cy1; - wxGetCharSize(m_hWnd, &cx1, &cy1, & this->GetFont()); - - // number of radio boxes in both directions - int nbHor, nbVer; - if (m_windowStyle & wxRA_VERTICAL) - { - nbVer = m_majorDim ; - nbHor = (m_noItems+m_majorDim-1)/m_majorDim ; - } - else - { - nbHor = m_majorDim ; - nbVer = (m_noItems+m_majorDim-1)/m_majorDim ; - } - - // Attempt to have a look coherent with other platforms: - // We compute the biggest toggle dim, then we align all - // items according this value. - int maxWidth = width, - maxHeight = height; - - // if we're given the width or height explicitly do not recalculate it, but - // use what we have - bool calcWidth = maxWidth == -1, - calcHeight = maxHeight == -1; - - if ( calcWidth || calcHeight ) - { - // init vars to avoid compiler warnings, even if we don't use them - int eachWidth = 0, - eachHeight = 0; - - for ( int i = 0 ; i < m_noItems; i++ ) - { - if ( m_radioWidth[i] < 0 ) - { - // It's a labelled toggle - textRadioButton = wxGetWindowText(m_radioButtons[i]); - GetTextExtent(textRadioButton, ¤t_width, &cyf, - NULL,NULL, & this->GetFont()); - - if ( calcWidth ) - eachWidth = (int)(current_width + RADIO_SIZE); - if ( calcHeight ) - eachHeight = (int)((3*cyf)/2); - } - else - { - if ( calcWidth ) - eachWidth = m_radioWidth[i] ; - if ( calcHeight ) - eachHeight = m_radioHeight[i] ; - } - - if ( calcWidth && maxWidth < eachWidth ) - maxWidth = eachWidth; - if ( calcHeight && maxHeight < eachHeight ) - maxHeight = eachHeight; - } - } - else - { - maxHeight = height/nbVer; - maxWidth = width/nbHor; - } - - if (m_hWnd) - { - int totWidth ; - int totHeight; - - // this formula works, but I don't know why. - // Please, be sure what you do if you modify it!! - if (m_radioWidth[0]<0) - totHeight = (nbVer * maxHeight) + cy1/2 ; - else - totHeight = nbVer * (maxHeight+cy1/2) ; - totWidth = nbHor * (maxWidth+cx1) ; - -#if (!CTL3D) - // Requires a bigger group box in plain Windows - MoveWindow((HWND) m_hWnd,x_offset,y_offset,totWidth+cx1,totHeight+(3*cy1)/2,TRUE) ; -#else - MoveWindow((HWND) m_hWnd,x_offset,y_offset,totWidth+cx1,totHeight+cy1,TRUE) ; -#endif - x_offset += cx1; - y_offset += cy1; - } - -#if (!CTL3D) - y_offset += (int)(cy1/2); // Fudge factor since buttons overlapped label - // JACS 2/12/93. CTL3D draws group label quite high. -#endif - int startX = x_offset ; - int startY = y_offset ; - - for ( int i = 0 ; i < m_noItems; i++) - { - // Bidimensional radio adjustment - if (i&&((i%m_majorDim)==0)) // Why is this omitted for i = 0? - { - if (m_windowStyle & wxRA_VERTICAL) - { - y_offset = startY; - x_offset += maxWidth + cx1 ; - } - else - { - x_offset = startX ; - y_offset += maxHeight ; - if (m_radioWidth[0]>0) - y_offset += cy1/2 ; - } - } - int eachWidth ; - int eachHeight ; - if (m_radioWidth[i]<0) - { - // It's a labeled item - textRadioButton = wxGetWindowText(m_radioButtons[i]); - GetTextExtent(textRadioButton, ¤t_width, &cyf, - NULL,NULL, & this->GetFont()); - - // How do we find out radio button bitmap size!! - // By adjusting them carefully, manually :-) - eachWidth = (int)(current_width + RADIO_SIZE); - eachHeight = (int)((3*cyf)/2); - } - else - { - eachWidth = m_radioWidth[i] ; - eachHeight = m_radioHeight[i] ; - } - - MoveWindow((HWND) m_radioButtons[i],x_offset,y_offset,eachWidth,eachHeight,TRUE); - if (m_windowStyle & wxRA_VERTICAL) - { - y_offset += maxHeight; - if (m_radioWidth[0]>0) - y_offset += cy1/2 ; - } - else - x_offset += maxWidth + cx1; - } -} - -void wxRadioBox::GetSize(int *width, int *height) const -{ - RECT rect; - rect.left = -1; rect.right = -1; rect.top = -1; rect.bottom = -1; - - if (m_hWnd) - wxFindMaxSize(m_hWnd, &rect); - - int i; - for (i = 0; i < m_noItems; i++) - wxFindMaxSize(m_radioButtons[i], &rect); - - *width = rect.right - rect.left; - *height = rect.bottom - rect.top; -} - -void wxRadioBox::GetPosition(int *x, int *y) const -{ - wxWindow *parent = GetParent(); - RECT rect; - rect.left = -1; rect.right = -1; rect.top = -1; rect.bottom = -1; - - int i; - for (i = 0; i < m_noItems; i++) - wxFindMaxSize(m_radioButtons[i], &rect); - - if (m_hWnd) - wxFindMaxSize(m_hWnd, &rect); - - // Since we now have the absolute screen coords, - // if there's a parent we must subtract its top left corner - POINT point; - point.x = rect.left; - point.y = rect.top; - if (parent) - { - ::ScreenToClient((HWND) parent->GetHWND(), &point); - } - // We may be faking the client origin. - // So a window that's really at (0, 30) may appear - // (to wxWin apps) to be at (0, 0). - if (GetParent()) - { - wxPoint pt(GetParent()->GetClientAreaOrigin()); - point.x -= pt.x; - point.y -= pt.y; - } - - *x = point.x; - *y = point.y; -} - -wxString wxRadioBox::GetLabel(void) const -{ - if (m_hWnd) - { - GetWindowText((HWND) m_hWnd, wxBuffer, 300); - return wxString(wxBuffer); - } - else return wxString(""); -} - -void wxRadioBox::SetLabel(const wxString& label) -{ - if (m_hWnd) - SetWindowText((HWND) m_hWnd, label); -} - -void wxRadioBox::SetFocus(void) -{ - if (m_noItems > 0) - { - if (m_selectedButton == -1) - ::SetFocus((HWND) m_radioButtons[0]); - else - ::SetFocus((HWND) m_radioButtons[m_selectedButton]); - } - -} - -bool wxRadioBox::Show(bool show) -{ - int cshow; - if (show) - cshow = SW_SHOW; - else - cshow = SW_HIDE; - if (m_hWnd) - ShowWindow((HWND) m_hWnd, cshow); - int i; - for (i = 0; i < m_noItems; i++) - ShowWindow((HWND) m_radioButtons[i], cshow); - return TRUE; -} - -// Enable a specific button -void wxRadioBox::Enable(int item, bool enable) -{ - if (item<0) - wxWindow::Enable(enable) ; - else if (item < m_noItems) - ::EnableWindow((HWND) m_radioButtons[item], enable); -} - -// Enable all controls -void wxRadioBox::Enable(bool enable) -{ - wxControl::Enable(enable); - - int i; - for (i = 0; i < m_noItems; i++) - ::EnableWindow((HWND) m_radioButtons[i], enable); -} - -// Show a specific button -void wxRadioBox::Show(int item, bool show) -{ - if (item<0) - wxRadioBox::Show(show) ; - else if (item < m_noItems) - { - int cshow; - if (show) - cshow = SW_SHOW; - else - cshow = SW_HIDE; - ShowWindow((HWND) m_radioButtons[item], cshow); - } -} - -WXHBRUSH wxRadioBox::OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor, - WXUINT message, WXWPARAM wParam, WXLPARAM lParam) -{ -#if CTL3D - if ( m_useCtl3D ) - { - HBRUSH hbrush = Ctl3dCtlColorEx(message, wParam, lParam); - return (WXHBRUSH) hbrush; - } -#endif - - if (GetParent()->GetTransparentBackground()) - SetBkMode((HDC) pDC, TRANSPARENT); - else - SetBkMode((HDC) pDC, OPAQUE); - - ::SetBkColor((HDC) pDC, RGB(GetBackgroundColour().Red(), GetBackgroundColour().Green(), GetBackgroundColour().Blue())); - ::SetTextColor((HDC) pDC, RGB(GetForegroundColour().Red(), GetForegroundColour().Green(), GetForegroundColour().Blue())); - - wxBrush *backgroundBrush = wxTheBrushList->FindOrCreateBrush(GetBackgroundColour(), wxSOLID); - - // Note that this will be cleaned up in wxApp::OnIdle, if backgroundBrush - // has a zero usage count. - // backgroundBrush->RealizeResource(); - return (WXHBRUSH) backgroundBrush->GetResourceHandle(); -} - -// For single selection items only -wxString wxRadioBox::GetStringSelection (void) const -{ - int sel = GetSelection (); - if (sel > -1) - return this->GetString (sel); - else - return wxString(""); -} - -bool wxRadioBox::SetStringSelection (const wxString& s) -{ - int sel = FindString (s); - if (sel > -1) - { - SetSelection (sel); - return TRUE; - } - else - return FALSE; -} - -bool wxRadioBox::ContainsHWND(WXHWND hWnd) const -{ - int i; - for (i = 0; i < Number(); i++) - if (GetRadioButtons()[i] == hWnd) - return TRUE; - return FALSE; -} - -void wxRadioBox::Command (wxCommandEvent & event) -{ - SetSelection (event.m_commandInt); - ProcessCommand (event); -} - -long wxRadioBox::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) -{ - if (nMsg == WM_NCHITTEST) - { - int xPos = LOWORD(lParam); // horizontal position of cursor - int yPos = HIWORD(lParam); // vertical position of cursor - - ScreenToClient(&xPos, &yPos); - - // Make sure you can drag by the top of the groupbox, but let - // other (enclosed) controls get mouse events also - if (yPos < 10) - return (long)HTCLIENT; - } - - return wxControl::MSWWindowProc(nMsg, wParam, lParam); -} - diff --git a/src/msw/radiobut.cpp b/src/msw/radiobut.cpp deleted file mode 100644 index eb067a09a3..0000000000 --- a/src/msw/radiobut.cpp +++ /dev/null @@ -1,266 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: radiobut.cpp -// Purpose: wxRadioButton -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "radiobut.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include -#include "wx/setup.h" -#include "wx/radiobut.h" -#include "wx/brush.h" -#endif - -#include "wx/msw/private.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxRadioButton, wxControl) -// IMPLEMENT_DYNAMIC_CLASS(wxBitmapRadioButton, wxRadioButton) -#endif - -bool wxRadioButton::MSWCommand(WXUINT param, WXWORD id) -{ - if (param == BN_CLICKED) - { - wxCommandEvent event(wxEVT_COMMAND_RADIOBUTTON_SELECTED, m_windowId); - event.SetEventObject( this ); - ProcessCommand(event); - return TRUE; - } - else return FALSE; -} - -bool wxRadioButton::Create(wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); - SetValidator(validator); - - if (parent) parent->AddChild(this); - - SetBackgroundColour(parent->GetBackgroundColour()); - SetForegroundColour(parent->GetForegroundColour()); - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - int x = pos.x; - int y = pos.y; - int width = size.x; - int height = size.y; - - m_windowStyle = style ; - - long groupStyle = 0; - if (m_windowStyle & wxRB_GROUP) - groupStyle = WS_GROUP; - -// long msStyle = groupStyle | RADIO_FLAGS; - long msStyle = groupStyle | BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE ; - - bool want3D; - WXDWORD exStyle = Determine3DEffects(0, &want3D) ; - - // Even with extended styles, need to combine with WS_BORDER - // for them to look right. -/* - if ( want3D || wxStyleHasBorder(m_windowStyle) ) - msStyle |= WS_BORDER; -*/ - - m_hWnd = (WXHWND) CreateWindowEx(exStyle, RADIO_CLASS, (const char *)label, - msStyle,0,0,0,0, - (HWND) parent->GetHWND(), (HMENU)m_windowId, wxGetInstance(), NULL); - - wxCHECK_MSG( m_hWnd, FALSE, "Failed to create radiobutton" ); - -#if CTL3D - if (want3D) - { - Ctl3dSubclassCtl((HWND) m_hWnd); - m_useCtl3D = TRUE; - } -#endif - - SetFont(parent->GetFont()); - - // Subclass again for purposes of dialog editing mode - SubclassWin((WXHWND)m_hWnd); - -// SetValue(value); - - // start GRW fix - if (label != "") - { - int label_width, label_height; - GetTextExtent(label, &label_width, &label_height, NULL, NULL, & this->GetFont()); - if (width < 0) - width = (int)(label_width + RADIO_SIZE); - if (height<0) - { - height = (int)(label_height); - if (height < RADIO_SIZE) - height = RADIO_SIZE; - } - } - else - { - if (width < 0) - width = RADIO_SIZE; - if (height < 0) - height = RADIO_SIZE; - } - // end GRW fix - - SetSize(x, y, width, height); - - return TRUE; -} - - -void wxRadioButton::SetLabel(const wxString& label) -{ - SetWindowText((HWND) GetHWND(), (const char *)label); -} - -void wxRadioButton::SetValue(bool value) -{ -// Following necessary for Win32s, because Win32s translate BM_SETCHECK - SendMessage((HWND) GetHWND(), BM_SETCHECK, (WPARAM)value, 0L); -} - -// Get single selection -bool wxRadioButton::GetValue(void) const -{ - return (SendMessage((HWND) GetHWND(), BM_GETCHECK, 0, 0L) != 0); -} - -WXHBRUSH wxRadioButton::OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor, - WXUINT message, WXWPARAM wParam, WXLPARAM lParam) -{ -#if CTL3D - if ( m_useCtl3D ) - { - HBRUSH hbrush = Ctl3dCtlColorEx(message, wParam, lParam); - return (WXHBRUSH) hbrush; - } -#endif - - if (GetParent()->GetTransparentBackground()) - SetBkMode((HDC) pDC, TRANSPARENT); - else - SetBkMode((HDC) pDC, OPAQUE); - - ::SetBkColor((HDC) pDC, RGB(GetBackgroundColour().Red(), GetBackgroundColour().Green(), GetBackgroundColour().Blue())); - ::SetTextColor((HDC) pDC, RGB(GetForegroundColour().Red(), GetForegroundColour().Green(), GetForegroundColour().Blue())); - - wxBrush *backgroundBrush = wxTheBrushList->FindOrCreateBrush(GetBackgroundColour(), wxSOLID); - - // Note that this will be cleaned up in wxApp::OnIdle, if backgroundBrush - // has a zero usage count. -// backgroundBrush->RealizeResource(); - return (WXHBRUSH) backgroundBrush->GetResourceHandle(); -} - -void wxRadioButton::Command (wxCommandEvent & event) -{ - SetValue ( (event.m_commandInt != 0) ); - ProcessCommand (event); -} - - -// Not implemented -#if 0 -bool wxBitmapRadioButton::Create(wxWindow *parent, wxWindowID id, - const wxBitmap *bitmap, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); - SetValidator(validator); - - if (parent) parent->AddChild(this); - SetBackgroundColour(parent->GetBackgroundColour()); - SetForegroundColour(parent->GetForegroundColour()); - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - int x = pos.x; - int y = pos.y; - int width = size.x; - int height = size.y; - m_windowStyle = style ; - - long groupStyle = 0; - if (m_windowStyle & wxRB_GROUP) - groupStyle = WS_GROUP; - -// long msStyle = groupStyle | RADIO_FLAGS; - long msStyle = groupStyle | BS_RADIOBUTTON | WS_CHILD | WS_VISIBLE ; - - m_hWnd = (WXHWND) CreateWindowEx(MakeExtendedStyle(m_windowStyle), RADIO_CLASS, "toggle", - msStyle,0,0,0,0, - (HWND) parent->GetHWND(), (HMENU)m_windowId, wxGetInstance(), NULL); - - wxCHECK_MSG( m_hWnd, "Failed to create radio button", FALSE ); - -#if CTL3D - if (!(GetParent()->GetWindowStyleFlag() & wxUSER_COLOURS)) - { - Ctl3dSubclassCtl((HWND) GetHWND()); - m_useCtl3D = TRUE; - } -#endif - - // Subclass again for purposes of dialog editing mode - SubclassWin(GetHWND()); - - SetSize(x, y, width, height); - - return TRUE; -} - -void wxBitmapRadioButton::SetLabel(const wxBitmap *bitmap) -{ -} - -void wxBitmapRadioButton::SetValue(bool value) -{ -// Following necessary for Win32s, because Win32s translate BM_SETCHECK - SendMessage((HWND) GetHWND(), BM_SETCHECK, (WPARAM)value, 0L); -} - -// Get single selection, for single choice list items -bool wxBitmapRadioButton::GetValue(void) const -{ - return (bool)SendMessage((HWND) GetHWND(), BM_GETCHECK, 0, 0L); -} - -#endif diff --git a/src/msw/regconf.cpp b/src/msw/regconf.cpp deleted file mode 100644 index 8943720d8f..0000000000 --- a/src/msw/regconf.cpp +++ /dev/null @@ -1,544 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: msw/regconf.cpp -// Purpose: -// Author: Vadim Zeitlin -// Modified by: -// Created: 27.04.98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows license -/////////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "regconf.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP - #include -#endif //WX_PRECOMP - -#include -#include -#include -#include - -#ifndef __WIN16__ - -#include -#include - -// ---------------------------------------------------------------------------- -// constants -// ---------------------------------------------------------------------------- - -// we put our data in HKLM\SOFTWARE_KEY\appname -#define SOFTWARE_KEY wxString("Software\\") - -// ---------------------------------------------------------------------------- -// global functions -// ---------------------------------------------------------------------------- - -// get the value if the key is opened and it exists -bool TryGetValue(const wxRegKey& key, const wxString& str, wxString& strVal) -{ - return key.IsOpened() && key.HasValue(str) && key.QueryValue(str, strVal); -} - -bool TryGetValue(const wxRegKey& key, const wxString& str, long *plVal) -{ - return key.IsOpened() && key.HasValue(str) && key.QueryValue(str, plVal); -} - -// ============================================================================ -// implementation -// ============================================================================ - -// ---------------------------------------------------------------------------- -// ctor/dtor -// ---------------------------------------------------------------------------- - -// create the config object which stores its data under HKCU\vendor\app and, if -// style & wxCONFIG_USE_GLOBAL_FILE, under HKLM\vendor\app -wxRegConfig::wxRegConfig(const wxString& appName, const wxString& vendorName, - const wxString& strLocal, const wxString& strGlobal, - long style) - : wxConfigBase(appName, vendorName, strLocal, strGlobal, style) -{ - wxString strRoot; - - bool bDoUseGlobal = (style & wxCONFIG_USE_GLOBAL_FILE) != 0; - - // the convention is to put the programs keys under \ - // (but it can be overriden by specifying the pathes explicitly in strLocal - // and/or strGlobal) - if ( strLocal.IsEmpty() || (strGlobal.IsEmpty() && bDoUseGlobal) ) - { - if ( vendorName.IsEmpty() ) - { - if ( wxTheApp ) - strRoot = wxTheApp->GetVendorName(); - } - else - { - strRoot = vendorName; - } - - // no '\\' needed if no vendor name - if ( !strRoot.IsEmpty() ) - { - strRoot += '\\'; - } - - if ( appName.IsEmpty() ) - { - wxCHECK_RET( wxTheApp, "No application name in wxRegConfig ctor!" ); - strRoot << wxTheApp->GetAppName(); - } - else - { - strRoot << appName; - } - } - //else: we don't need to do all the complicated stuff above - - wxString str = strLocal.IsEmpty() ? strRoot : strLocal; - m_keyLocalRoot.SetName(wxRegKey::HKCU, SOFTWARE_KEY + str); - m_keyLocal.SetName(m_keyLocalRoot, ""); - - if ( bDoUseGlobal ) - { - str = strGlobal.IsEmpty() ? strRoot : strGlobal; - m_keyGlobalRoot.SetName(wxRegKey::HKLM, SOFTWARE_KEY + str); - m_keyGlobal.SetName(m_keyGlobalRoot, ""); - } - - // Create() will Open() if key already exists - m_keyLocalRoot.Create(); - - // as it's the same key, Open() shouldn't fail (i.e. no need for Create()) - m_keyLocal.Open(); - - // OTOH, this key may perfectly not exist, so suppress error messages the call - // to Open() might generate - if ( bDoUseGlobal ) - { - wxLogNull nolog; - m_keyGlobalRoot.Open(); - } -} - -wxRegConfig::~wxRegConfig() -{ - // nothing to do - key will be closed in their dtors -} - -// ---------------------------------------------------------------------------- -// path management -// ---------------------------------------------------------------------------- -void wxRegConfig::SetPath(const wxString& strPath) -{ - wxArrayString aParts; - - // because GetPath() returns "" when we're at root, we must understand - // empty string as "/" - if ( strPath.IsEmpty() || (strPath[0] == wxCONFIG_PATH_SEPARATOR) ) { - // absolute path - wxSplitPath(aParts, strPath); - } - else { - // relative path, combine with current one - wxString strFullPath = GetPath(); - strFullPath << wxCONFIG_PATH_SEPARATOR << strPath; - wxSplitPath(aParts, strFullPath); - } - - // recombine path parts in one variable - wxString strRegPath; - m_strPath.Empty(); - for ( size_t n = 0; n < aParts.Count(); n++ ) { - strRegPath << '\\' << aParts[n]; - m_strPath << wxCONFIG_PATH_SEPARATOR << aParts[n]; - } - - // change current key(s) - m_keyLocal.SetName(m_keyLocalRoot, strRegPath); - m_keyGlobal.SetName(m_keyGlobalRoot, strRegPath); - m_keyLocal.Create(); - - wxLogNull nolog; - m_keyGlobal.Open(); -} - -// ---------------------------------------------------------------------------- -// enumeration (works only with current group) -// ---------------------------------------------------------------------------- - -/* - We want to enumerate all local keys/values after the global ones, but, of - course, we don't want to repeat a key which appears locally as well as - globally twice. - - We use the 15th bit of lIndex for distinction between global and local. - */ - -#define LOCAL_MASK 0x8000 -#define IS_LOCAL_INDEX(l) (((l) & LOCAL_MASK) != 0) - -bool wxRegConfig::GetFirstGroup(wxString& str, long& lIndex) const -{ - lIndex = 0; - return GetNextGroup(str, lIndex); -} - -bool wxRegConfig::GetNextGroup(wxString& str, long& lIndex) const -{ - // are we already enumerating local entries? - if ( m_keyGlobal.IsOpened() && !IS_LOCAL_INDEX(lIndex) ) { - // try to find a global entry which doesn't appear locally - do { - if ( !m_keyGlobal.GetNextKey(str, lIndex) ) { - // no more global entries - lIndex |= LOCAL_MASK; - break; - } - } while( m_keyLocal.HasSubKey(str) ); - } - - // much easier with local entries: get the next one we find - // (don't forget to clear our flag bit and set it again later) - lIndex &= ~LOCAL_MASK; - bool bOk = m_keyLocal.GetNextKey(str, lIndex); - lIndex |= LOCAL_MASK; - - return bOk; -} - -bool wxRegConfig::GetFirstEntry(wxString& str, long& lIndex) const -{ - lIndex = 0; - return GetNextEntry(str, lIndex); -} - -bool wxRegConfig::GetNextEntry(wxString& str, long& lIndex) const -{ - // are we already enumerating local entries? - if ( m_keyGlobal.IsOpened() && !IS_LOCAL_INDEX(lIndex) ) { - // try to find a global entry which doesn't appear locally - do { - if ( !m_keyGlobal.GetNextValue(str, lIndex) ) { - // no more global entries - lIndex |= LOCAL_MASK; - break; - } - } while( m_keyLocal.HasValue(str) ); - } - - // much easier with local entries: get the next one we find - // (don't forget to clear our flag bit and set it again later) - lIndex &= ~LOCAL_MASK; - bool bOk = m_keyLocal.GetNextValue(str, lIndex); - lIndex |= LOCAL_MASK; - - return bOk; -} - -size_t wxRegConfig::GetNumberOfEntries(bool bRecursive) const -{ - size_t nEntries = 0; - - // dummy vars - wxString str; - long l; - bool bCont = ((wxRegConfig*)this)->GetFirstEntry(str, l); - while ( bCont ) { - nEntries++; - - bCont = ((wxRegConfig*)this)->GetNextEntry(str, l); - } - - return nEntries; -} - -size_t wxRegConfig::GetNumberOfGroups(bool bRecursive) const -{ - size_t nGroups = 0; - - // dummy vars - wxString str; - long l; - bool bCont = ((wxRegConfig*)this)->GetFirstGroup(str, l); - while ( bCont ) { - nGroups++; - - bCont = ((wxRegConfig*)this)->GetNextGroup(str, l); - } - - return nGroups; -} - -// ---------------------------------------------------------------------------- -// tests for existence -// ---------------------------------------------------------------------------- - -bool wxRegConfig::HasGroup(const wxString& strName) const -{ - return m_keyLocal.HasSubKey(strName) || m_keyGlobal.HasSubKey(strName); -} - -bool wxRegConfig::HasEntry(const wxString& strName) const -{ - return m_keyLocal.HasValue(strName) || m_keyGlobal.HasValue(strName); -} - -// ---------------------------------------------------------------------------- -// reading/writing -// ---------------------------------------------------------------------------- - -bool wxRegConfig::Read(const wxString& key, wxString *pStr) const -{ - wxConfigPathChanger path(this, key); - - bool bQueryGlobal = TRUE; - - // if immutable key exists in global key we must check that it's not - // overriden by the local key with the same name - if ( IsImmutable(path.Name()) ) { - if ( TryGetValue(m_keyGlobal, path.Name(), *pStr) ) { - if ( m_keyLocal.HasValue(path.Name()) ) { - wxLogWarning("User value for immutable key '%s' ignored.", - path.Name().c_str()); - } - *pStr = wxConfigBase::ExpandEnvVars(*pStr); - return TRUE; - } - else { - // don't waste time - it's not there anyhow - bQueryGlobal = FALSE; - } - } - - // first try local key - if ( TryGetValue(m_keyLocal, path.Name(), *pStr) || - (bQueryGlobal && TryGetValue(m_keyGlobal, path.Name(), *pStr)) ) { - // nothing to do - - // TODO: do we return TRUE? Not in original implementation, - // but I don't see why not. -- JACS - *pStr = wxConfigBase::ExpandEnvVars(*pStr); - return TRUE; - } - - return FALSE; -} - -bool wxRegConfig::Read(const wxString& key, wxString *pStr, - const wxString& szDefault) const -{ - wxConfigPathChanger path(this, key); - - bool bQueryGlobal = TRUE; - - // if immutable key exists in global key we must check that it's not - // overriden by the local key with the same name - if ( IsImmutable(path.Name()) ) { - if ( TryGetValue(m_keyGlobal, path.Name(), *pStr) ) { - if ( m_keyLocal.HasValue(path.Name()) ) { - wxLogWarning("User value for immutable key '%s' ignored.", - path.Name().c_str()); - } - - return TRUE; - } - else { - // don't waste time - it's not there anyhow - bQueryGlobal = FALSE; - } - } - - // first try local key - if ( TryGetValue(m_keyLocal, path.Name(), *pStr) || - (bQueryGlobal && TryGetValue(m_keyGlobal, path.Name(), *pStr)) ) { - *pStr = wxConfigBase::ExpandEnvVars(*pStr); - return TRUE; - } - else { - if ( IsRecordingDefaults() ) { - ((wxRegConfig*)this)->Write(key, szDefault); - } - - // default value - *pStr = szDefault; - } - - *pStr = wxConfigBase::ExpandEnvVars(*pStr); - - return FALSE; -} - -bool wxRegConfig::Read(const wxString& key, long *plResult) const -{ - wxConfigPathChanger path(this, key); - - bool bQueryGlobal = TRUE; - - // if immutable key exists in global key we must check that it's not - // overriden by the local key with the same name - if ( IsImmutable(path.Name()) ) { - if ( TryGetValue(m_keyGlobal, path.Name(), plResult) ) { - if ( m_keyLocal.HasValue(path.Name()) ) { - wxLogWarning("User value for immutable key '%s' ignored.", - path.Name().c_str()); - } - - return TRUE; - } - else { - // don't waste time - it's not there anyhow - bQueryGlobal = FALSE; - } - } - - // first try local key - if ( TryGetValue(m_keyLocal, path.Name(), plResult) || - (bQueryGlobal && TryGetValue(m_keyGlobal, path.Name(), plResult)) ) { - return TRUE; - } - return FALSE; -} - -bool wxRegConfig::Write(const wxString& key, const wxString& szValue) -{ - wxConfigPathChanger path(this, key); - - if ( IsImmutable(path.Name()) ) { - wxLogError("Can't change immutable entry '%s'.", path.Name().c_str()); - return FALSE; - } - - return m_keyLocal.SetValue(path.Name(), szValue); -} - -bool wxRegConfig::Write(const wxString& key, long lValue) -{ - wxConfigPathChanger path(this, key); - - if ( IsImmutable(path.Name()) ) { - wxLogError("Can't change immutable entry '%s'.", path.Name().c_str()); - return FALSE; - } - - return m_keyLocal.SetValue(path.Name(), lValue); -} - -// ---------------------------------------------------------------------------- -// renaming -// ---------------------------------------------------------------------------- - -bool wxRegConfig::RenameEntry(const wxString& oldName, const wxString& newName) -{ - // check that the old entry exists... - if ( !HasEntry(oldName) ) - return FALSE; - - // and that the new one doesn't - if ( HasEntry(newName) ) - return FALSE; - - // delete the old entry and create the new one - but do in the reverse - // order to not lose the data if Create() fails - - bool ok; - if ( m_keyLocal.IsNumericValue(oldName) ) - { - long val; - ok = m_keyLocal.QueryValue(oldName, &val) && - m_keyLocal.SetValue(newName, val); - } - else - { - wxString val; - ok = m_keyLocal.QueryValue(oldName, val) && - m_keyLocal.SetValue(newName, val); - } - - if ( !ok ) - return FALSE; - - if ( !m_keyLocal.DeleteValue(oldName) ) - { - m_keyLocal.DeleteValue(newName); - - return FALSE; - } - - return TRUE; -} - -bool wxRegConfig::RenameGroup(const wxString& oldName, const wxString& newName) -{ - // check that the old group exists... - if ( !HasGroup(oldName) ) - return FALSE; - - // and that the new one doesn't - if ( HasGroup(newName) ) - return FALSE; - - // TODO there is no way to rename a registry key - we must do a deep copy - // ourselves - wxFAIL_MSG("Registry key renaming not implemented"); - - return FALSE; -} - -// ---------------------------------------------------------------------------- -// deleting -// ---------------------------------------------------------------------------- -bool wxRegConfig::DeleteEntry(const wxString& value, bool bGroupIfEmptyAlso) -{ - wxConfigPathChanger path(this, value); - - if ( !m_keyLocal.DeleteValue(path.Name()) ) - return FALSE; - - if ( !m_keyLocal.HasSubkeys() ) { - wxString strKey = GetPath().AfterLast(wxCONFIG_PATH_SEPARATOR); - SetPath(".."); // changes m_keyLocal - return m_keyLocal.DeleteKey(strKey); - } - - return TRUE; -} - -bool wxRegConfig::DeleteGroup(const wxString& key) -{ - wxConfigPathChanger path(this, key); - - return m_keyLocal.DeleteKey(path.Name()); -} - -bool wxRegConfig::DeleteAll() -{ - m_keyLocal.Close(); - m_keyGlobal.Close(); - - bool bOk = m_keyLocalRoot.DeleteSelf(); - - // make sure that we opened m_keyGlobalRoot and so it has a reasonable name: - // otherwise we will delete HKEY_CLASSES_ROOT recursively - if ( bOk && m_keyGlobalRoot.IsOpened() ) - bOk = m_keyGlobalRoot.DeleteSelf(); - - return bOk; -} - -#endif - // __WIN16__ - diff --git a/src/msw/region.cpp b/src/msw/region.cpp deleted file mode 100644 index e26d294ce7..0000000000 --- a/src/msw/region.cpp +++ /dev/null @@ -1,427 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: msw/region.cpp -// Purpose: Region handling for wxWindows/X11 -// Author: Markus Holzem -// Modified by: -// Created: Fri Oct 24 10:46:34 MET 1997 -// RCS-ID: $Id$ -// Copyright: (c) 1997 Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "region.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#include "wx/msw/region.h" -#include "wx/gdicmn.h" - -#include - -#if !USE_SHARED_LIBRARY - IMPLEMENT_DYNAMIC_CLASS(wxRegion, wxGDIObject) - IMPLEMENT_DYNAMIC_CLASS(wxRegionIterator, wxObject) -#endif - -//----------------------------------------------------------------------------- -// wxRegionRefData implementation -//----------------------------------------------------------------------------- - -class WXDLLEXPORT wxRegionRefData : public wxGDIRefData { -public: - wxRegionRefData(void) - { - m_region = 0; - } - - wxRegionRefData(const wxRegionRefData& data) - { -#if defined(__WIN32__) - DWORD noBytes = ::GetRegionData(data.m_region, 0, NULL); - RGNDATA *rgnData = (RGNDATA*) new char[noBytes]; - ::GetRegionData(data.m_region, noBytes, rgnData); - m_region = ::ExtCreateRegion(NULL, noBytes, rgnData); - delete[] (char*) rgnData; -#else - RECT rect; - ::GetRgnBox(data.m_region, &rect); - m_region = ::CreateRectRgnIndirect(&rect); -#endif - } - - ~wxRegionRefData(void) - { - ::DeleteObject(m_region); - m_region = 0; - } - - HRGN m_region; -}; - -#define M_REGION (((wxRegionRefData*)m_refData)->m_region) - -//----------------------------------------------------------------------------- -// wxRegion -//----------------------------------------------------------------------------- - -/*! - * Create an empty region. - */ -wxRegion::wxRegion(void) -{ - m_refData = new wxRegionRefData; - M_REGION = ::CreateRectRgn(0, 0, 0, 0); -} - -wxRegion::wxRegion(WXHRGN hRegion) -{ - m_refData = new wxRegionRefData; - M_REGION = (HRGN) hRegion; -} - -wxRegion::wxRegion(long x, long y, long w, long h) -{ - m_refData = new wxRegionRefData; - M_REGION = ::CreateRectRgn(x, y, x + w, y + h); -} - -wxRegion::wxRegion(const wxPoint& topLeft, const wxPoint& bottomRight) -{ - m_refData = new wxRegionRefData; - M_REGION = ::CreateRectRgn(topLeft.x, topLeft.y, bottomRight.x, bottomRight.y); -} - -wxRegion::wxRegion(const wxRect& rect) -{ - m_refData = new wxRegionRefData; - M_REGION = ::CreateRectRgn(rect.GetLeft(), rect.GetTop(), rect.GetRight(), rect.GetBottom()); -} - -/*! - * Destroy the region. - */ -wxRegion::~wxRegion(void) -{ - // m_refData unrefed in ~wxObject -} - -//----------------------------------------------------------------------------- -//# Modify region -//----------------------------------------------------------------------------- - -//! Clear current region -void wxRegion::Clear(void) -{ - UnRef(); -} - -//! Combine rectangle (x, y, w, h) with this. -bool wxRegion::Combine(long x, long y, long width, long height, wxRegionOp op) -{ - // Don't change shared data - if (!m_refData) { - m_refData = new wxRegionRefData(); - } else if (m_refData->GetRefCount() > 1) { - wxRegionRefData* ref = (wxRegionRefData*)m_refData; - UnRef(); - m_refData = new wxRegionRefData(*ref); - } - // If ref count is 1, that means it's 'ours' anyway so no action. - - HRGN rectRegion = ::CreateRectRgn(x, y, x + width, y + height); - - int mode = 0; - switch (op) - { - case wxRGN_AND: mode = RGN_AND; break ; - case wxRGN_OR: mode = RGN_OR; break ; - case wxRGN_XOR: mode = RGN_XOR; break ; - case wxRGN_DIFF: mode = RGN_DIFF; break ; - case wxRGN_COPY: - default: - mode = RGN_COPY; break ; - } - - bool success = (ERROR != ::CombineRgn(M_REGION, M_REGION, rectRegion, mode)); - - ::DeleteObject(rectRegion); - - return success; -} - -//! Union /e region with this. -bool wxRegion::Combine(const wxRegion& region, wxRegionOp op) -{ - if (region.Empty()) - return FALSE; - - // Don't change shared data - if (!m_refData) { - m_refData = new wxRegionRefData(); - } else if (m_refData->GetRefCount() > 1) { - wxRegionRefData* ref = (wxRegionRefData*)m_refData; - UnRef(); - m_refData = new wxRegionRefData(*ref); - } - - int mode = 0; - switch (op) - { - case wxRGN_AND: mode = RGN_AND; break ; - case wxRGN_OR: mode = RGN_OR; break ; - case wxRGN_XOR: mode = RGN_XOR; break ; - case wxRGN_DIFF: mode = RGN_DIFF; break ; - case wxRGN_COPY: - default: - mode = RGN_COPY; break ; - } - - return (ERROR != ::CombineRgn(M_REGION, M_REGION, ((wxRegionRefData*)region.m_refData)->m_region, mode)); -} - -bool wxRegion::Combine(const wxRect& rect, wxRegionOp op) -{ - return Combine(rect.GetLeft(), rect.GetTop(), rect.GetWidth(), rect.GetHeight(), op); -} - -//----------------------------------------------------------------------------- -//# Information on region -//----------------------------------------------------------------------------- - -// Outer bounds of region -void wxRegion::GetBox(long& x, long& y, long&w, long &h) const -{ - if (m_refData) { - RECT rect; - ::GetRgnBox(M_REGION, & rect); - x = rect.left; - y = rect.top; - w = rect.right - rect.left; - h = rect.bottom - rect.top; - } else { - x = y = w = h = 0; - } -} - -wxRect wxRegion::GetBox(void) const -{ - long x, y, w, h; - GetBox(x, y, w, h); - return wxRect(x, y, w, h); -} - -// Is region empty? -bool wxRegion::Empty(void) const -{ - if (M_REGION == 0) - return TRUE; - long x, y, w, h; - GetBox(x, y, w, h); - - return ((w == 0) && (h == 0)); -} - -//----------------------------------------------------------------------------- -//# Tests -//----------------------------------------------------------------------------- - -// Does the region contain the point (x,y)? -wxRegionContain wxRegion::Contains(long x, long y) const -{ - if (!m_refData) - return wxOutRegion; - - if (::PtInRegion(M_REGION, (int) x, (int) y)) - return wxInRegion; - else - return wxOutRegion; -} - -// Does the region contain the point pt? -wxRegionContain wxRegion::Contains(const wxPoint& pt) const -{ - if (!m_refData) - return wxOutRegion; - - if (::PtInRegion(M_REGION, (int) pt.x, (int) pt.y)) - return wxInRegion; - else - return wxOutRegion; -} - -// Does the region contain the rectangle (x, y, w, h)? -wxRegionContain wxRegion::Contains(long x, long y, long w, long h) const -{ - if (!m_refData) - return wxOutRegion; - - RECT rect; - rect.left = x; - rect.top = y; - rect.right = x + w; - rect.bottom = y + h; - - if (::RectInRegion(M_REGION, & rect)) - return wxInRegion; - else - return wxOutRegion; -} - -// Does the region contain the rectangle rect -wxRegionContain wxRegion::Contains(const wxRect& rect) const -{ - if (!m_refData) - return wxOutRegion; - - long x, y, w, h; - x = rect.x; - y = rect.y; - w = rect.GetWidth(); - h = rect.GetHeight(); - return Contains(x, y, w, h); -} - -// Get internal region handle -WXHRGN wxRegion::GetHRGN() const -{ - if (!m_refData) - return (WXHRGN) 0; - return (WXHRGN) M_REGION; -} - -/////////////////////////////////////////////////////////////////////////////// -// // -// wxRegionIterator // -// // -/////////////////////////////////////////////////////////////////////////////// - -/*! - * Initialize empty iterator - */ -wxRegionIterator::wxRegionIterator(void) : m_current(0), m_numRects(0), m_rects(NULL) -{ -} - -wxRegionIterator::~wxRegionIterator(void) -{ - if (m_rects) - delete[] m_rects; -} - -/*! - * Initialize iterator for region - */ -wxRegionIterator::wxRegionIterator(const wxRegion& region) -{ - m_rects = NULL; - - Reset(region); -} - -/*! - * Reset iterator for a new /e region. - */ -void wxRegionIterator::Reset(const wxRegion& region) -{ - m_current = 0; - m_region = region; - - if (m_rects) - delete[] m_rects; - - m_rects = NULL; - - if (m_region.Empty()) - m_numRects = 0; - else - { -#if defined(__WIN32__) - DWORD noBytes = ::GetRegionData(((wxRegionRefData*)region.m_refData)->m_region, 0, NULL); - RGNDATA *rgnData = (RGNDATA*) new char[noBytes]; - ::GetRegionData(((wxRegionRefData*)region.m_refData)->m_region, noBytes, rgnData); - - RGNDATAHEADER* header = (RGNDATAHEADER*) rgnData; - - m_rects = new wxRect[header->nCount]; - - RECT* rect = (RECT*) (rgnData + sizeof(RGNDATAHEADER)) ; - size_t i; - for (i = 0; i < header->nCount; i++) - { - m_rects[i] = wxRect(rect->left, rect->top, - rect->right - rect->left, rect->bottom - rect->top); - rect += sizeof(RECT); - } - - m_numRects = header->nCount; - - delete[] (char*) rgnData; -#else - RECT rect; - ::GetRgnBox(((wxRegionRefData*)region.m_refData)->m_region, &rect); - m_rects = new wxRect[1]; - m_rects[0].x = rect.left; - m_rects[0].y = rect.top; - m_rects[0].width = rect.right - rect.left; - m_rects[0].height = rect.bottom - rect.top; - - m_numRects = 1; -#endif - } -} - -/*! - * Increment iterator. The rectangle returned is the one after the - * incrementation. - */ -void wxRegionIterator::operator ++ (void) -{ - if (m_current < m_numRects) - ++m_current; -} - -/*! - * Increment iterator. The rectangle returned is the one before the - * incrementation. - */ -void wxRegionIterator::operator ++ (int) -{ - if (m_current < m_numRects) - ++m_current; -} - -long wxRegionIterator::GetX(void) const -{ - if (m_current < m_numRects) - return m_rects[m_current].x; - return 0; -} - -long wxRegionIterator::GetY(void) const -{ - if (m_current < m_numRects) - return m_rects[m_current].y; - return 0; -} - -long wxRegionIterator::GetW(void) const -{ - if (m_current < m_numRects) - return m_rects[m_current].width ; - return 0; -} - -long wxRegionIterator::GetH(void) const -{ - if (m_current < m_numRects) - return m_rects[m_current].height; - return 0; -} - diff --git a/src/msw/registry.cpp b/src/msw/registry.cpp deleted file mode 100644 index 5d59c9ee38..0000000000 --- a/src/msw/registry.cpp +++ /dev/null @@ -1,823 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: msw/registry.cpp -// Purpose: implementation of registry classes and functions -// Author: Vadim Zeitlin -// Modified by: -// Created: 03.04.98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows license -// TODO: - parsing of registry key names -// - support of other (than REG_SZ/REG_DWORD) registry types -// - add high level functions (RegisterOleServer, ...) -/////////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "registry.h" -#endif - -// for compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -// other wxWindows headers -#include "wx/string.h" -#include "wx/intl.h" -#include "wx/log.h" -#include "wx/config.h" // for wxExpandEnvVars - -#ifndef __WIN16__ - -// Windows headers -/* -#define STRICT -#define WIN32_LEAN_AND_MEAN -*/ - -#include - -// other std headers -#include // for _MAX_PATH - -#ifndef _MAX_PATH - #define _MAX_PATH 512 -#endif - -// our header -#define HKEY_DEFINED // already defined in windows.h -#include "wx/msw/registry.h" - -// some registry functions don't like signed chars -typedef unsigned char *RegString; - -// ---------------------------------------------------------------------------- -// constants -// ---------------------------------------------------------------------------- - -// the standard key names, short names and handles all bundled together for -// convenient access -static struct -{ - HKEY hkey; - const char *szName; - const char *szShortName; -} -aStdKeys[] = -{ - { HKEY_CLASSES_ROOT, "HKEY_CLASSES_ROOT", "HKCR" }, -#ifdef __WIN32__ - { HKEY_CURRENT_USER, "HKEY_CURRENT_USER", "HKCU" }, - { HKEY_LOCAL_MACHINE, "HKEY_LOCAL_MACHINE", "HKLM" }, - { HKEY_USERS, "HKEY_USERS", "HKU" }, // short name? - { HKEY_PERFORMANCE_DATA, "HKEY_PERFORMANCE_DATA", "HKPD" }, -#if WINVER >= 0x0400 - { HKEY_CURRENT_CONFIG, "HKEY_CURRENT_CONFIG", "HKCC" }, -#ifndef __GNUWIN32__ - { HKEY_DYN_DATA, "HKEY_DYN_DATA", "HKDD" }, // short name? -#endif //GNUWIN32 -#endif //WINVER >= 4.0 -#endif //WIN32 -}; - -// the registry name separator (perhaps one day MS will change it to '/' ;-) -#define REG_SEPARATOR '\\' - -// useful for Windows programmers: makes somewhat more clear all these zeroes -// being passed to Windows APIs -#define RESERVED (NULL) - -// ---------------------------------------------------------------------------- -// macros -// ---------------------------------------------------------------------------- -// @ const_cast<> is not yet supported by all compilers -#define CONST_CAST ((wxRegKey *)this)-> - -#if !USE_MUTABLE - #define m_dwLastError CONST_CAST m_dwLastError -#endif - -// ---------------------------------------------------------------------------- -// non member functions -// ---------------------------------------------------------------------------- - -// removes the trailing backslash from the string if it has one -static inline void RemoveTrailingSeparator(wxString& str); - -// returns TRUE if given registry key exists -static bool KeyExists(WXHKEY hRootKey, const char *szKey); - -// combines value and key name (uses static buffer!) -static const char *GetFullName(const wxRegKey *pKey, - const char *szValue = NULL); - -// ============================================================================ -// implementation of wxRegKey class -// ============================================================================ - -// ---------------------------------------------------------------------------- -// static functions and variables -// ---------------------------------------------------------------------------- - -const size_t wxRegKey::nStdKeys = WXSIZEOF(aStdKeys); - -// @@ should take a `StdKey key', but as it's often going to be used in loops -// it would require casts in user code. -const char *wxRegKey::GetStdKeyName(size_t key) -{ - // return empty string if key is invalid - wxCHECK_MSG( key < nStdKeys, "", "invalid key in wxRegKey::GetStdKeyName" ); - - return aStdKeys[key].szName; -} - -const char *wxRegKey::GetStdKeyShortName(size_t key) -{ - // return empty string if key is invalid - wxCHECK( key < nStdKeys, "" ); - - return aStdKeys[key].szShortName; -} - -wxRegKey::StdKey wxRegKey::ExtractKeyName(wxString& strKey) -{ - wxString strRoot = strKey.Left(REG_SEPARATOR); - - HKEY hRootKey = 0; - size_t ui; - for ( ui = 0; ui < nStdKeys; ui++ ) { - if ( strRoot.CmpNoCase(aStdKeys[ui].szName) == 0 || - strRoot.CmpNoCase(aStdKeys[ui].szShortName) == 0 ) { - hRootKey = aStdKeys[ui].hkey; - break; - } - } - - if ( ui == nStdKeys ) { - wxFAIL_MSG("invalid key prefix in wxRegKey::ExtractKeyName."); - - hRootKey = HKEY_CLASSES_ROOT; - } - else { - strKey = strKey.After(REG_SEPARATOR); - if ( !strKey.IsEmpty() && strKey.Last() == REG_SEPARATOR ) - strKey.Truncate(strKey.Len() - 1); - } - - return (wxRegKey::StdKey)(int)hRootKey; -} - -wxRegKey::StdKey wxRegKey::GetStdKeyFromHkey(WXHKEY hkey) -{ - for ( size_t ui = 0; ui < nStdKeys; ui++ ) { - if ( (int) aStdKeys[ui].hkey == (int) hkey ) - return (StdKey)ui; - } - - wxFAIL_MSG("non root hkey passed to wxRegKey::GetStdKeyFromHkey."); - - return HKCR; -} - -// ---------------------------------------------------------------------------- -// ctors and dtor -// ---------------------------------------------------------------------------- - -wxRegKey::wxRegKey() -{ - m_hKey = 0; - m_hRootKey = (WXHKEY) aStdKeys[HKCR].hkey; - m_dwLastError = 0; -} - -wxRegKey::wxRegKey(const wxString& strKey) : m_strKey(strKey) -{ - m_hRootKey = (WXHKEY) aStdKeys[ExtractKeyName(m_strKey)].hkey; - m_hKey = (WXHKEY) NULL; - m_dwLastError = 0; -} - -// parent is a predefined (and preopened) key -wxRegKey::wxRegKey(StdKey keyParent, const wxString& strKey) : m_strKey(strKey) -{ - RemoveTrailingSeparator(m_strKey); - m_hRootKey = (WXHKEY) aStdKeys[keyParent].hkey; - m_hKey = (WXHKEY) NULL; - m_dwLastError = 0; -} - -// parent is a normal regkey -wxRegKey::wxRegKey(const wxRegKey& keyParent, const wxString& strKey) - : m_strKey(keyParent.m_strKey) -{ - // combine our name with parent's to get the full name - if ( !m_strKey.IsEmpty() && - (strKey.IsEmpty() || strKey[0] != REG_SEPARATOR) ) { - m_strKey += REG_SEPARATOR; - } - - m_strKey += strKey; - RemoveTrailingSeparator(m_strKey); - - m_hRootKey = keyParent.m_hRootKey; - m_hKey = (WXHKEY) NULL; - m_dwLastError = 0; -} - -// dtor closes the key releasing system resource -wxRegKey::~wxRegKey() -{ - Close(); -} - -// ---------------------------------------------------------------------------- -// change the key name/hkey -// ---------------------------------------------------------------------------- - -// set the full key name -void wxRegKey::SetName(const wxString& strKey) -{ - Close(); - - m_strKey = strKey; - m_hRootKey = (WXHKEY) aStdKeys[ExtractKeyName(m_strKey)].hkey; -} - -// the name is relative to the parent key -void wxRegKey::SetName(StdKey keyParent, const wxString& strKey) -{ - Close(); - - m_strKey = strKey; - RemoveTrailingSeparator(m_strKey); - m_hRootKey = (WXHKEY) aStdKeys[keyParent].hkey; -} - -// the name is relative to the parent key -void wxRegKey::SetName(const wxRegKey& keyParent, const wxString& strKey) -{ - Close(); - - // combine our name with parent's to get the full name - m_strKey = keyParent.m_strKey; - if ( !strKey.IsEmpty() && strKey[0] != REG_SEPARATOR ) - m_strKey += REG_SEPARATOR; - m_strKey += strKey; - - RemoveTrailingSeparator(m_strKey); - - m_hRootKey = keyParent.m_hRootKey; -} - -// hKey should be opened and will be closed in wxRegKey dtor -void wxRegKey::SetHkey(WXHKEY hKey) -{ - Close(); - - m_hKey = hKey; -} - -// ---------------------------------------------------------------------------- -// info about the key -// ---------------------------------------------------------------------------- - -// returns TRUE if the key exists -bool wxRegKey::Exists() const -{ - // opened key has to exist, try to open it if not done yet - return IsOpened() ? TRUE : KeyExists(m_hRootKey, m_strKey); -} - -// returns the full name of the key (prefix is abbreviated if bShortPrefix) -wxString wxRegKey::GetName(bool bShortPrefix) const -{ - StdKey key = GetStdKeyFromHkey((StdKey) m_hRootKey); - wxString str = bShortPrefix ? aStdKeys[key].szShortName - : aStdKeys[key].szName; - if ( !m_strKey.IsEmpty() ) - str << "\\" << m_strKey; - - return str; -} - -#ifdef __GNUWIN32__ -bool wxRegKey::GetKeyInfo(size_t* pnSubKeys, - size_t* pnMaxKeyLen, - size_t* pnValues, - size_t* pnMaxValueLen) const -#else -bool wxRegKey::GetKeyInfo(ulong *pnSubKeys, - ulong *pnMaxKeyLen, - ulong *pnValues, - ulong *pnMaxValueLen) const -#endif -{ -#if defined(__WIN32__) && !defined(__TWIN32__) - m_dwLastError = ::RegQueryInfoKey - ( - (HKEY) m_hKey, - NULL, // class name - NULL, // (ptr to) size of class name buffer - RESERVED, - pnSubKeys, // [out] number of subkeys - pnMaxKeyLen, // [out] max length of a subkey name - NULL, // longest subkey class name - pnValues, // [out] number of values - pnMaxValueLen, // [out] max length of a value name - NULL, // longest value data - NULL, // security descriptor - NULL // time of last modification - ); - - if ( m_dwLastError != ERROR_SUCCESS ) { - wxLogSysError(m_dwLastError, _("can't get info about registry key '%s'"), - GetName().c_str()); - return FALSE; - } - else - return TRUE; -#else // Win16 - wxFAIL_MSG("GetKeyInfo() not implemented"); - - return FALSE; -#endif -} - -// ---------------------------------------------------------------------------- -// operations -// ---------------------------------------------------------------------------- - -// opens key (it's not an error to call Open() on an already opened key) -bool wxRegKey::Open() -{ - if ( IsOpened() ) - return TRUE; - - HKEY tmpKey; - m_dwLastError = RegOpenKey((HKEY) m_hRootKey, m_strKey, &tmpKey); - if ( m_dwLastError != ERROR_SUCCESS ) { - wxLogSysError(m_dwLastError, _("can't open registry key '%s'"), - GetName().c_str()); - return FALSE; - } - else - { - m_hKey = (WXHKEY) tmpKey; - return TRUE; - } -} - -// creates key, failing if it exists and !bOkIfExists -bool wxRegKey::Create(bool bOkIfExists) -{ - // check for existence only if asked (i.e. order is important!) - if ( !bOkIfExists && Exists() ) { - return FALSE; - } - - if ( IsOpened() ) - return TRUE; - - HKEY tmpKey; - m_dwLastError = RegCreateKey((HKEY) m_hRootKey, m_strKey, &tmpKey); - if ( m_dwLastError != ERROR_SUCCESS ) { - wxLogSysError(m_dwLastError, _("can't create registry key '%s'"), - GetName().c_str()); - return FALSE; - } - else - { - m_hKey = (WXHKEY) tmpKey; - return TRUE; - } -} - -// close the key, it's not an error to call it when not opened -bool wxRegKey::Close() -{ - if ( IsOpened() ) { - m_dwLastError = RegCloseKey((HKEY) m_hKey); - if ( m_dwLastError != ERROR_SUCCESS ) { - wxLogSysError(m_dwLastError, _("can't close registry key '%s'"), - GetName().c_str()); - - m_hKey = 0; - return FALSE; - } - else { - m_hKey = 0; - } - } - - return TRUE; -} - -// ---------------------------------------------------------------------------- -// delete keys/values -// ---------------------------------------------------------------------------- -bool wxRegKey::DeleteSelf() -{ - { - wxLogNull nolog; - if ( !Open() ) { - // it already doesn't exist - ok! - return TRUE; - } - } - - // prevent a buggy program from erasing one of the root registry keys or an - // immediate subkey (i.e. one which doesn't have '\\' inside) of any other - // key except HKCR (HKCR has some "deleteable" subkeys) - if ( m_strKey.IsEmpty() || (m_hRootKey != HKCR && - m_strKey.Find(REG_SEPARATOR) == wxNOT_FOUND) ) { - wxLogError(_("Registry key '%s' is needed for normal system operation,\n" - "deleting it will leave your system in unusable state:\n" - "operation aborted."), GetFullName(this)); - - return FALSE; - } - - // we can't delete keys while enumerating because it confuses GetNextKey, so - // we first save the key names and then delete them all - wxArrayString astrSubkeys; - - wxString strKey; - long lIndex; - bool bCont = GetFirstKey(strKey, lIndex); - while ( bCont ) { - astrSubkeys.Add(strKey); - - bCont = GetNextKey(strKey, lIndex); - } - - size_t nKeyCount = astrSubkeys.Count(); - for ( size_t nKey = 0; nKey < nKeyCount; nKey++ ) { - wxRegKey key(*this, astrSubkeys[nKey]); - if ( !key.DeleteSelf() ) - return FALSE; - } - - // now delete this key itself - Close(); - - m_dwLastError = RegDeleteKey((HKEY) m_hRootKey, m_strKey); - if ( m_dwLastError != ERROR_SUCCESS ) { - wxLogSysError(m_dwLastError, _("can't delete key '%s'"), - GetName().c_str()); - return FALSE; - } - - return TRUE; -} - -bool wxRegKey::DeleteKey(const char *szKey) -{ - if ( !Open() ) - return FALSE; - - wxRegKey key(*this, szKey); - return key.DeleteSelf(); -} - -bool wxRegKey::DeleteValue(const char *szValue) -{ - if ( !Open() ) - return FALSE; - -#if defined(__WIN32__) && !defined(__TWIN32__) - m_dwLastError = RegDeleteValue((HKEY) m_hKey, (char*) (const char*) szValue); - if ( m_dwLastError != ERROR_SUCCESS ) { - wxLogSysError(m_dwLastError, _("can't delete value '%s' from key '%s'"), - szValue, GetName().c_str()); - return FALSE; - } - #else //WIN16 - // named registry values don't exist in Win16 world - wxASSERT( IsEmpty(szValue) ); - - // just set the (default and unique) value of the key to "" - m_dwLastError = RegSetValue((HKEY) m_hKey, NULL, REG_SZ, "", RESERVED); - if ( m_dwLastError != ERROR_SUCCESS ) { - wxLogSysError(m_dwLastError, _("can't delete value of key '%s'"), - GetName().c_str()); - return FALSE; - } - #endif //WIN16/32 - - return TRUE; -} - -// ---------------------------------------------------------------------------- -// access to values and subkeys -// ---------------------------------------------------------------------------- - -// return TRUE if value exists -bool wxRegKey::HasValue(const char *szValue) const -{ - // this function should be silent, so suppress possible messages from Open() - wxLogNull nolog; - - #ifdef __WIN32__ - if ( CONST_CAST Open() ) { - return RegQueryValueEx((HKEY) m_hKey, (char*) (const char*) szValue, RESERVED, - NULL, NULL, NULL) == ERROR_SUCCESS; - } - else - return FALSE; - #else // WIN16 - // only unnamed value exists - return IsEmpty(szValue); - #endif // WIN16/32 -} - -// returns TRUE if this key has any subkeys -bool wxRegKey::HasSubkeys() const -{ - // suppress possible messages from GetFirstKey() - wxLogNull nolog; - - // just call GetFirstKey with dummy parameters - wxString str; - long l; - return CONST_CAST GetFirstKey(str, l); -} - -// returns TRUE if given subkey exists -bool wxRegKey::HasSubKey(const char *szKey) const -{ - // this function should be silent, so suppress possible messages from Open() - wxLogNull nolog; - - if ( CONST_CAST Open() ) - return KeyExists(m_hKey, szKey); - else - return FALSE; -} - -wxRegKey::ValueType wxRegKey::GetValueType(const char *szValue) const -{ - #ifdef __WIN32__ - if ( ! CONST_CAST Open() ) - return Type_None; - - DWORD dwType; - m_dwLastError = RegQueryValueEx((HKEY) m_hKey, (char*) (const char*) szValue, RESERVED, - &dwType, NULL, NULL); - if ( m_dwLastError != ERROR_SUCCESS ) { - wxLogSysError(m_dwLastError, _("can't read value of key '%s'"), - GetName().c_str()); - return Type_None; - } - - return (ValueType)dwType; - #else //WIN16 - return IsEmpty(szValue) ? Type_String : Type_None; - #endif //WIN16/32 -} - -#ifdef __WIN32__ -bool wxRegKey::SetValue(const char *szValue, long lValue) -{ -#ifdef __TWIN32__ - wxFAIL_MSG("RegSetValueEx not implemented by TWIN32"); - return FALSE; -#else - if ( CONST_CAST Open() ) { - m_dwLastError = RegSetValueEx((HKEY) m_hKey, szValue, (DWORD) RESERVED, REG_DWORD, - (RegString)&lValue, sizeof(lValue)); - if ( m_dwLastError == ERROR_SUCCESS ) - return TRUE; - } - - wxLogSysError(m_dwLastError, _("can't set value of '%s'"), - GetFullName(this, szValue)); - return FALSE; -#endif -} - -bool wxRegKey::QueryValue(const char *szValue, long *plValue) const -{ - if ( CONST_CAST Open() ) { - DWORD dwType, dwSize = sizeof(DWORD); - RegString pBuf = (RegString)plValue; - m_dwLastError = RegQueryValueEx((HKEY) m_hKey, (char*) (const char*) szValue, RESERVED, - &dwType, pBuf, &dwSize); - if ( m_dwLastError != ERROR_SUCCESS ) { - wxLogSysError(m_dwLastError, _("can't read value of key '%s'"), - GetName().c_str()); - return FALSE; - } - else { - // check that we read the value of right type - wxASSERT_MSG( dwType == REG_DWORD, - "Type mismatch in wxRegKey::QueryValue()." ); - - return TRUE; - } - } - else - return FALSE; -} - -#endif //Win32 - -bool wxRegKey::QueryValue(const char *szValue, wxString& strValue) const -{ - if ( CONST_CAST Open() ) { - #ifdef __WIN32__ - // first get the type and size of the data - DWORD dwType, dwSize; - m_dwLastError = RegQueryValueEx((HKEY) m_hKey, (char*) (const char*) szValue, RESERVED, - &dwType, NULL, &dwSize); - if ( m_dwLastError == ERROR_SUCCESS ) { - RegString pBuf = (RegString)strValue.GetWriteBuf(dwSize); - m_dwLastError = RegQueryValueEx((HKEY) m_hKey, (char*) (const char*) szValue, RESERVED, - &dwType, pBuf, &dwSize); - strValue.UngetWriteBuf(); - if ( m_dwLastError == ERROR_SUCCESS ) { - // check that it was the right type - wxASSERT_MSG( dwType == REG_SZ, - "Type mismatch in wxRegKey::QueryValue()." ); - - return TRUE; - } - } - #else //WIN16 - // named registry values don't exist in Win16 - wxASSERT( IsEmpty(szValue) ); - - m_dwLastError = RegQueryValue((HKEY) m_hKey, 0, strValue.GetWriteBuf(256), &l); - strValue.UngetWriteBuf(); - if ( m_dwLastError == ERROR_SUCCESS ) - return TRUE; - #endif //WIN16/32 - } - - wxLogSysError(m_dwLastError, _("can't read value of '%s'"), - GetFullName(this, szValue)); - return FALSE; -} - -bool wxRegKey::SetValue(const char *szValue, const wxString& strValue) -{ - if ( CONST_CAST Open() ) { -#if defined( __WIN32__) && !defined(__TWIN32__) - m_dwLastError = RegSetValueEx((HKEY) m_hKey, szValue, (DWORD) RESERVED, REG_SZ, - (RegString)strValue.c_str(), - strValue.Len() + 1); - if ( m_dwLastError == ERROR_SUCCESS ) - return TRUE; - #else //WIN16 - // named registry values don't exist in Win16 - wxASSERT( IsEmpty(szValue) ); - - m_dwLastError = RegSetValue((HKEY) m_hKey, NULL, REG_SZ, strValue, NULL); - if ( m_dwLastError == ERROR_SUCCESS ) - return TRUE; - #endif //WIN16/32 - } - - wxLogSysError(m_dwLastError, _("can't set value of '%s'"), - GetFullName(this, szValue)); - return FALSE; -} - -wxRegKey::operator wxString() const -{ - wxString str; - QueryValue(NULL, str); - return str; -} - -// ---------------------------------------------------------------------------- -// enumeration -// NB: all these functions require an index variable which allows to have -// several concurrently running indexations on the same key -// ---------------------------------------------------------------------------- - -bool wxRegKey::GetFirstValue(wxString& strValueName, long& lIndex) -{ - if ( !Open() ) - return FALSE; - - lIndex = 0; - return GetNextValue(strValueName, lIndex); -} - -bool wxRegKey::GetNextValue(wxString& strValueName, long& lIndex) const -{ - wxASSERT( IsOpened() ); - - // are we already at the end of enumeration? - if ( lIndex == -1 ) - return FALSE; - -#if defined( __WIN32__) && !defined(__TWIN32__) - char szValueName[1024]; // @@ use RegQueryInfoKey... - DWORD dwValueLen = WXSIZEOF(szValueName); - - lIndex++; - m_dwLastError = RegEnumValue((HKEY) m_hKey, lIndex, - szValueName, &dwValueLen, - RESERVED, - NULL, // [out] type - NULL, // [out] buffer for value - NULL); // [i/o] it's length - - if ( m_dwLastError != ERROR_SUCCESS ) { - if ( m_dwLastError == ERROR_NO_MORE_ITEMS ) { - m_dwLastError = ERROR_SUCCESS; - lIndex = -1; - } - else { - wxLogSysError(m_dwLastError, _("can't enumerate values of key '%s'"), - GetName().c_str()); - } - - return FALSE; - } - - strValueName = szValueName; - #else //WIN16 - // only one unnamed value - wxASSERT( lIndex == 0 ); - - lIndex = -1; - strValueName.Empty(); - #endif - - return TRUE; -} - -bool wxRegKey::GetFirstKey(wxString& strKeyName, long& lIndex) -{ - if ( !Open() ) - return FALSE; - - lIndex = 0; - return GetNextKey(strKeyName, lIndex); -} - -bool wxRegKey::GetNextKey(wxString& strKeyName, long& lIndex) const -{ - wxASSERT( IsOpened() ); - - // are we already at the end of enumeration? - if ( lIndex == -1 ) - return FALSE; - - char szKeyName[_MAX_PATH + 1]; - m_dwLastError = RegEnumKey((HKEY) m_hKey, lIndex++, szKeyName, WXSIZEOF(szKeyName)); - - if ( m_dwLastError != ERROR_SUCCESS ) { - if ( m_dwLastError == ERROR_NO_MORE_ITEMS ) { - m_dwLastError = ERROR_SUCCESS; - lIndex = -1; - } - else { - wxLogSysError(m_dwLastError, _("can't enumerate subkeys of key '%s'"), - GetName().c_str()); - } - - return FALSE; - } - - strKeyName = szKeyName; - return TRUE; -} - -// ============================================================================ -// implementation of global private functions -// ============================================================================ -bool KeyExists(WXHKEY hRootKey, const char *szKey) -{ - HKEY hkeyDummy; - if ( RegOpenKey( (HKEY) hRootKey, szKey, &hkeyDummy) == ERROR_SUCCESS ) { - RegCloseKey(hkeyDummy); - return TRUE; - } - else - return FALSE; -} - -const char *GetFullName(const wxRegKey *pKey, const char *szValue) -{ - static wxString s_str; - s_str = pKey->GetName(); - if ( !IsEmpty(szValue) ) - s_str << "\\" << szValue; - - return s_str.c_str(); -} - -void RemoveTrailingSeparator(wxString& str) -{ - if ( !str.IsEmpty() && str.Last() == REG_SEPARATOR ) - str.Truncate(str.Len() - 1); -} - -#endif - // __WIN16__ - diff --git a/src/msw/salford.lnk b/src/msw/salford.lnk deleted file mode 100644 index 1aab3eb5cc..0000000000 --- a/src/msw/salford.lnk +++ /dev/null @@ -1,152 +0,0 @@ -archive ..\..\lib\wx.lib -addobj accel.obj -addobj app.obj -addobj bitmap.obj -addobj bmpbuttn.obj -addobj brush.obj -addobj button.obj -addobj checkbox.obj -addobj checklst.obj -addobj choicdgg.obj -addobj choice.obj -addobj clipbrd.obj -addobj cmndata.obj -addobj colordlg.obj -addobj colour.obj -addobj combobox.obj -addobj config.obj -addobj control.obj -addobj curico.obj -addobj cursor.obj -addobj data.obj -addobj date.obj -addobj datstrm.obj -addobj dc.obj -addobj dcclient.obj -addobj dcmemory.obj -addobj dcprint.obj -addobj dcscreen.obj -addobj dde.obj -addobj dialog.obj -addobj dib.obj -addobj dibutils.obj -addobj dirdlgg.obj -addobj docmdi.obj -addobj docview.obj -addobj dynarray.obj -addobj dynlib.obj -addobj event.obj -addobj extended.obj -addobj file.obj -addobj fileconf.obj -addobj filedlg.obj -addobj filefn.obj -addobj font.obj -addobj fontdlg.obj -addobj frame.obj -addobj framecmn.obj -addobj gauge95.obj -addobj gaugemsw.obj -addobj gdicmn.obj -addobj gdiobj.obj -addobj gridg.obj -addobj hash.obj -addobj helpbase.obj -addobj helpwin.obj -addobj http.obj -addobj icon.obj -addobj image.obj -addobj imaglist.obj -addobj iniconf.obj -addobj intl.obj -addobj ipcbase.obj -addobj joystick.obj -addobj layout.obj -addobj laywin.obj -addobj list.obj -addobj listbox.obj -addobj listctrl.obj -addobj log.obj -addobj mdi.obj -addobj memory.obj -addobj menu.obj -addobj menuitem.obj -addobj metafile.obj -addobj minifram.obj -addobj module.obj -addobj msgdlg.obj -addobj mstream.obj -addobj nativdlg.obj -addobj notebook.obj -addobj object.obj -addobj objstrm.obj -addobj ownerdrw.obj -addobj palette.obj -addobj panelg.obj -addobj pen.obj -addobj penwin.obj -addobj printdlg.obj -addobj printwin.obj -addobj prntbase.obj -addobj process.obj -addobj prop.obj -addobj propform.obj -addobj proplist.obj -addobj protocol.obj -addobj radiobox.obj -addobj radiobut.obj -addobj regconf.obj -addobj region.obj -addobj registry.obj -addobj resource.obj -addobj sashwin.obj -addobj sckaddr.obj -addobj sckfile.obj -addobj sckstrm.obj -addobj scrolbar.obj -addobj scrolwin.obj -addobj settings.obj -addobj slider95.obj -addobj slidrmsw.obj -addobj socket.obj -addobj spinbutt.obj -addobj splitter.obj -addobj statbmp.obj -addobj statbox.obj -addobj statbr95.obj -addobj stattext.obj -addobj statusbr.obj -addobj stream.obj -addobj string.obj -addobj tabctrl.obj -addobj tabg.obj -addobj taskbar.obj -addobj tbar95.obj -addobj tbarbase.obj -addobj tbarmsw.obj -addobj tbarsmpl.obj -addobj textctrl.obj -addobj textdlgg.obj -addobj textfile.obj -addobj thread.obj -addobj time.obj -addobj timer.obj -addobj timercmn.obj -addobj tokenzr.obj -addobj treectrl.obj -addobj url.obj -addobj utils.obj -addobj utilscmn.obj -addobj utilsexc.obj -addobj validate.obj -addobj valtext.obj -addobj variant.obj -addobj wave.obj -addobj wfstream.obj -addobj wincmn.obj -addobj window.obj -addobj wxexpr.obj -addobj y_tab.obj -addobj zstream.obj -file - diff --git a/src/msw/scrolbar.cpp b/src/msw/scrolbar.cpp deleted file mode 100644 index bac5e67a09..0000000000 --- a/src/msw/scrolbar.cpp +++ /dev/null @@ -1,351 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: scrolbar.cpp -// Purpose: wxScrollBar -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "scrolbar.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/defs.h" -#include "wx/utils.h" -#endif - -#include "wx/scrolbar.h" -#include "wx/msw/private.h" - -// extern wxList wxScrollBarList; -extern void wxFindMaxSize(HWND hwnd, RECT *rect); - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxScrollBar, wxControl) - -BEGIN_EVENT_TABLE(wxScrollBar, wxControl) -#if WXWIN_COMPATIBILITY - EVT_SCROLL(wxScrollBar::OnScroll) -#endif -END_EVENT_TABLE() - -#endif - -// Scrollbar -bool wxScrollBar::Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - if (!parent) - return FALSE; - parent->AddChild(this); - SetName(name); - SetValidator(validator); - - SetBackgroundColour(parent->GetBackgroundColour()) ; - SetForegroundColour(parent->GetForegroundColour()) ; - m_windowStyle = style; - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - int x = pos.x; - int y = pos.y; - int width = size.x; - int height = size.y; - - if (width == -1) - { - if (style & wxHORIZONTAL) - width = 140; - else - width = 14; - } - if (height == -1) - { - if (style & wxVERTICAL) - height = 140; - else - height = 14; - } - - // Now create scrollbar - DWORD _direction = (style & wxHORIZONTAL) ? - SBS_HORZ: SBS_VERT; - HWND scroll_bar = CreateWindowEx(MakeExtendedStyle(style), "SCROLLBAR", "scrollbar", - _direction | WS_CHILD | WS_VISIBLE, - 0, 0, 0, 0, (HWND) parent->GetHWND(), (HMENU)m_windowId, - wxGetInstance(), NULL); - - m_pageSize = 1; - m_viewSize = 1; - m_objectSize = 1; - - ::SetScrollRange(scroll_bar, SB_CTL, 0, 1, FALSE); - ::SetScrollPos(scroll_bar, SB_CTL, 0, FALSE); - ShowWindow(scroll_bar, SW_SHOW); - - SetFont(parent->GetFont()); - - m_hWnd = (WXHWND)scroll_bar; - - // Subclass again for purposes of dialog editing mode - SubclassWin((WXHWND) scroll_bar); - - SetSize(x, y, width, height); - - return TRUE; -} - -wxScrollBar::~wxScrollBar(void) -{ -} - -void wxScrollBar::MSWOnVScroll(WXWORD wParam, WXWORD pos, WXHWND control) -{ - int position = ::GetScrollPos((HWND) control, SB_CTL); - int minPos, maxPos; - ::GetScrollRange((HWND) control, SB_CTL, &minPos, &maxPos); -#if defined(__WIN95__) - // A page size greater than one has the effect of reducing the - // effective range, therefore the range has already been - // boosted artificially - so reduce it again. - if ( m_pageSize > 1 ) - maxPos -= (m_pageSize - 1); -#endif - - wxEventType scrollEvent = wxEVT_NULL; - - int nScrollInc; - switch ( wParam ) - { - case SB_TOP: - nScrollInc = maxPos - position; - scrollEvent = wxEVT_SCROLL_TOP; - break; - - case SB_BOTTOM: - nScrollInc = - position; - scrollEvent = wxEVT_SCROLL_BOTTOM; - break; - - case SB_LINEUP: - nScrollInc = -1; - scrollEvent = wxEVT_SCROLL_LINEUP; - break; - - case SB_LINEDOWN: - nScrollInc = 1; - scrollEvent = wxEVT_SCROLL_LINEDOWN; - break; - - case SB_PAGEUP: - nScrollInc = -GetPageSize(); - scrollEvent = wxEVT_SCROLL_PAGEUP; - break; - - case SB_PAGEDOWN: - nScrollInc = GetPageSize(); - scrollEvent = wxEVT_SCROLL_PAGEDOWN; - break; - - case SB_THUMBTRACK: - case SB_THUMBPOSITION: - nScrollInc = pos - position; - scrollEvent = wxEVT_SCROLL_THUMBTRACK; - break; - - default: - nScrollInc = 0; - } - - if (nScrollInc != 0) - { - int new_pos = position + nScrollInc; - - if (new_pos < 0) - new_pos = 0; - if (new_pos > maxPos) - new_pos = maxPos; - - SetThumbPosition(new_pos); - wxScrollEvent event(scrollEvent, m_windowId); - event.SetPosition(new_pos); - event.SetEventObject( this ); - GetEventHandler()->ProcessEvent(event); - } -} - -void wxScrollBar::MSWOnHScroll(WXWORD wParam, WXWORD pos, WXHWND control) -{ - MSWOnVScroll(wParam, pos, control); -} - -void wxScrollBar::SetThumbPosition(int viewStart) -{ -#if defined(__WIN95__) - SCROLLINFO info; - info.cbSize = sizeof(SCROLLINFO); - info.nPage = 0; - info.nMin = 0; - info.nPos = viewStart; - info.fMask = SIF_POS ; - - ::SetScrollInfo((HWND) GetHWND(), SB_CTL, &info, TRUE); -#else - ::SetScrollPos((HWND) GetHWND(), SB_CTL, viewStart, TRUE); -#endif -} - -int wxScrollBar::GetThumbPosition(void) const -{ - return ::GetScrollPos((HWND)m_hWnd, SB_CTL); -} - -void wxScrollBar::SetScrollbar(int position, int thumbSize, int range, int pageSize, - bool refresh) -{ - m_viewSize = pageSize; - m_pageSize = thumbSize; - m_objectSize = range; - - // The range (number of scroll steps) is the - // object length minus the page size. - int range1 = wxMax((m_objectSize - m_pageSize), 0) ; - -#if defined(__WIN95__) - // Try to adjust the range to cope with page size > 1 - // (see comment for SetPageLength) - if ( m_pageSize > 1 ) - { - range1 += (m_pageSize - 1); - } - - SCROLLINFO info; - info.cbSize = sizeof(SCROLLINFO); - info.nPage = m_pageSize; - info.nMin = 0; - info.nMax = range1; - info.nPos = position; - - info.fMask = SIF_PAGE | SIF_RANGE | SIF_POS; - - ::SetScrollInfo((HWND) GetHWND(), SB_CTL, &info, refresh); -#else - ::SetScrollPos((HWND)m_hWnd, SB_CTL, position, TRUE); - ::SetScrollRange((HWND)m_hWnd, SB_CTL, 0, range1, TRUE); -#endif -} - - -/* From the WIN32 documentation: -In version 4.0 or later, the maximum value that a scroll bar can report -(that is, the maximum scrolling position) depends on the page size. -If the scroll bar has a page size greater than one, the maximum scrolling position -is less than the maximum range value. You can use the following formula to calculate -the maximum scrolling position: - -MaxScrollPos = MaxRangeValue - (PageSize - 1) -*/ - -#if WXWIN_COMPATIBILITY -void wxScrollBar::SetPageSize(int pageLength) -{ - m_pageSize = pageLength; - -#if defined(__WIN95__) - SCROLLINFO info; - info.cbSize = sizeof(SCROLLINFO); - info.nPage = pageLength; - info.fMask = SIF_PAGE ; - - ::SetScrollInfo((HWND) GetHWND(), SB_CTL, &info, TRUE); -#endif -} - -void wxScrollBar::SetObjectLength(int objectLength) -{ - m_objectSize = objectLength; - - // The range (number of scroll steps) is the - // object length minus the view size. - int range = wxMax((objectLength - m_viewSize), 0) ; - -#if defined(__WIN95__) - // Try to adjust the range to cope with page size > 1 - // (see comment for SetPageLength) - if ( m_pageSize > 1 ) - { - range += (m_pageSize - 1); - } - - SCROLLINFO info; - info.cbSize = sizeof(SCROLLINFO); - info.nPage = 0; - info.nMin = 0; - info.nMax = range; - info.nPos = 0; - info.fMask = SIF_RANGE ; - - ::SetScrollInfo((HWND) GetHWND(), SB_CTL, &info, TRUE); -#else - ::SetScrollRange((HWND)m_hWnd, SB_CTL, 0, range, TRUE); -#endif -} - -void wxScrollBar::SetViewLength(int viewLength) -{ - m_viewSize = viewLength; -} - -void wxScrollBar::GetValues(int *viewStart, int *viewLength, int *objectLength, - int *pageLength) const -{ - *viewStart = ::GetScrollPos((HWND)m_hWnd, SB_CTL); - *viewLength = m_viewSize; - *objectLength = m_objectSize; - *pageLength = m_pageSize; -} -#endif - -WXHBRUSH wxScrollBar::OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor, - WXUINT message, WXWPARAM wParam, WXLPARAM lParam) -{ - return 0; -} - -void wxScrollBar::Command(wxCommandEvent& event) -{ - SetThumbPosition(event.m_commandInt); - ProcessCommand(event); -} - -#if WXWIN_COMPATIBILITY -// Backward compatibility -void wxScrollBar::OnScroll(wxScrollEvent& event) -{ - wxEventType oldEvent = event.GetEventType(); - event.SetEventType( wxEVT_COMMAND_SCROLLBAR_UPDATED ); - if ( !GetEventHandler()->ProcessEvent(event) ) - { - event.SetEventType( oldEvent ); - if (!GetParent()->GetEventHandler()->ProcessEvent(event)) - event.Skip(); - } -} -#endif diff --git a/src/msw/settings.cpp b/src/msw/settings.cpp deleted file mode 100644 index e81d059ce0..0000000000 --- a/src/msw/settings.cpp +++ /dev/null @@ -1,167 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: settings.cpp -// Purpose: wxSettings -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "settings.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include -#include "wx/defs.h" -#include "wx/pen.h" -#include "wx/brush.h" -#include "wx/gdicmn.h" -#endif - -#include "wx/settings.h" -#include "wx/window.h" -#include "wx/msw/private.h" - -// TODO: see ::SystemParametersInfo for all sorts of Windows settings. -// Different args are required depending on the id. How does this differ -// from GetSystemMetric, and should it? Perhaps call it GetSystemParameter -// and pass an optional void* arg to get further info. -// Should also have SetSystemParameter. -// Also implement WM_WININICHANGE (NT) / WM_SETTINGCHANGE (Win95) - -wxColour wxSystemSettings::GetSystemColour(int index) -{ - COLORREF ref = ::GetSysColor(index); - wxColour col(GetRValue(ref), GetGValue(ref), GetBValue(ref)); - return col; -} - -wxFont wxSystemSettings::GetSystemFont(int index) -{ - HFONT hFont = (HFONT) ::GetStockObject(index); - if ( hFont != (HFONT) NULL ) - { - LOGFONT lf; - if ( ::GetObject(hFont, sizeof(LOGFONT), &lf) != 0 ) - { - // In fontdlg.cpp - return wxCreateFontFromLogFont(&lf); - } - else - { - return wxNullFont; - } - } - else - { - return wxNullFont; - } -} - -// Get a system metric, e.g. scrollbar size -int wxSystemSettings::GetSystemMetric(int index) -{ - switch ( index) - { -#ifdef __WIN32__ - case wxSYS_MOUSE_BUTTONS: - return ::GetSystemMetrics(SM_CMOUSEBUTTONS); -#endif - - case wxSYS_BORDER_X: - return ::GetSystemMetrics(SM_CXBORDER); - case wxSYS_BORDER_Y: - return ::GetSystemMetrics(SM_CYBORDER); - case wxSYS_CURSOR_X: - return ::GetSystemMetrics(SM_CXCURSOR); - case wxSYS_CURSOR_Y: - return ::GetSystemMetrics(SM_CYCURSOR); - case wxSYS_DCLICK_X: - return ::GetSystemMetrics(SM_CXDOUBLECLK); - case wxSYS_DCLICK_Y: - return ::GetSystemMetrics(SM_CYDOUBLECLK); -#if defined(__WIN32__) && defined(SM_CXDRAG) - case wxSYS_DRAG_X: - return ::GetSystemMetrics(SM_CXDRAG); - case wxSYS_DRAG_Y: - return ::GetSystemMetrics(SM_CYDRAG); - case wxSYS_EDGE_X: - return ::GetSystemMetrics(SM_CXEDGE); - case wxSYS_EDGE_Y: - return ::GetSystemMetrics(SM_CYEDGE); -#endif - case wxSYS_HSCROLL_ARROW_X: - return ::GetSystemMetrics(SM_CXHSCROLL); - case wxSYS_HSCROLL_ARROW_Y: - return ::GetSystemMetrics(SM_CYHSCROLL); - case wxSYS_HTHUMB_X: - return ::GetSystemMetrics(SM_CXHTHUMB); - case wxSYS_ICON_X: - return ::GetSystemMetrics(SM_CXICON); - case wxSYS_ICON_Y: - return ::GetSystemMetrics(SM_CYICON); - case wxSYS_ICONSPACING_X: - return ::GetSystemMetrics(SM_CXICONSPACING); - case wxSYS_ICONSPACING_Y: - return ::GetSystemMetrics(SM_CYICONSPACING); - case wxSYS_WINDOWMIN_X: - return ::GetSystemMetrics(SM_CXMIN); - case wxSYS_WINDOWMIN_Y: - return ::GetSystemMetrics(SM_CYMIN); - case wxSYS_SCREEN_X: - return ::GetSystemMetrics(SM_CXSCREEN); - case wxSYS_SCREEN_Y: - return ::GetSystemMetrics(SM_CYSCREEN); - -#if defined(__WIN32__) && defined(SM_CXSIZEFRAME) - case wxSYS_FRAMESIZE_X: - return ::GetSystemMetrics(SM_CXSIZEFRAME); - case wxSYS_FRAMESIZE_Y: - return ::GetSystemMetrics(SM_CYSIZEFRAME); - case wxSYS_SMALLICON_X: - return ::GetSystemMetrics(SM_CXSMICON); - case wxSYS_SMALLICON_Y: - return ::GetSystemMetrics(SM_CYSMICON); -#endif - case wxSYS_HSCROLL_Y: - return ::GetSystemMetrics(SM_CYHSCROLL); - case wxSYS_VSCROLL_X: - return ::GetSystemMetrics(SM_CXVSCROLL); - case wxSYS_VSCROLL_ARROW_X: - return ::GetSystemMetrics(SM_CXVSCROLL); - case wxSYS_VSCROLL_ARROW_Y: - return ::GetSystemMetrics(SM_CYVSCROLL); - case wxSYS_VTHUMB_Y: - return ::GetSystemMetrics(SM_CYVTHUMB); - case wxSYS_CAPTION_Y: - return ::GetSystemMetrics(SM_CYCAPTION); - case wxSYS_MENU_Y: - return ::GetSystemMetrics(SM_CYMENU); -#if defined(__WIN32__) && defined(SM_NETWORK) - case wxSYS_NETWORK_PRESENT: - return ::GetSystemMetrics(SM_NETWORK) & 0x0001; -#endif - case wxSYS_PENWINDOWS_PRESENT: - return ::GetSystemMetrics(SM_PENWINDOWS); -#if defined(__WIN32__) && defined(SM_SHOWSOUNDS) - case wxSYS_SHOW_SOUNDS: - return ::GetSystemMetrics(SM_SHOWSOUNDS); -#endif - case wxSYS_SWAP_BUTTONS: - return ::GetSystemMetrics(SM_SWAPBUTTON); - default: - return 0; - } - return 0; -} - diff --git a/src/msw/slider95.cpp b/src/msw/slider95.cpp deleted file mode 100644 index 6981d0a1b0..0000000000 --- a/src/msw/slider95.cpp +++ /dev/null @@ -1,644 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: slider95.cpp -// Purpose: wxSlider95, using the Win95 trackbar control -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "slider95.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include -#include -#include -#endif - -#ifdef __WIN95__ - -#include "wx/msw/slider95.h" -#include "wx/msw/private.h" - -#if (defined(__WIN95__) && !defined(__GNUWIN32__)) || defined(__TWIN32__) -#include -#endif - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxSlider95, wxControl) -#endif - -// Slider -wxSlider95::wxSlider95(void) -{ - m_staticValue = 0; - m_staticMin = 0; - m_staticMax = 0; - m_pageSize = 1; - m_lineSize = 1; - m_rangeMax = 0; - m_rangeMin = 0; - m_tickFreq = 0; -} - -bool wxSlider95::Create(wxWindow *parent, wxWindowID id, - int value, int minValue, int maxValue, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); - SetValidator(validator); - - if (parent) parent->AddChild(this); - SetBackgroundColour(parent->GetBackgroundColour()) ; - SetForegroundColour(parent->GetForegroundColour()) ; - - m_staticValue = 0; - m_staticMin = 0; - m_staticMax = 0; - m_pageSize = 1; - m_lineSize = 1; - m_windowStyle = style; - m_tickFreq = 0; - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - int x = pos.x; - int y = pos.y; - int width = size.x; - int height = size.y; - - long msStyle ; - - if ( m_windowStyle & wxSL_LABELS ) - { - msStyle = WS_CHILD | WS_VISIBLE | WS_BORDER | SS_CENTER; - - bool want3D; - WXDWORD exStyle = Determine3DEffects(WS_EX_CLIENTEDGE, &want3D) ; - - m_staticValue = (WXHWND) CreateWindowEx(exStyle, "STATIC", NULL, - msStyle, - 0, 0, 0, 0, (HWND) parent->GetHWND(), (HMENU)NewControlId(), - wxGetInstance(), NULL); - - // Now create min static control - sprintf(wxBuffer, "%d", minValue); - m_staticMin = (WXHWND) CreateWindowEx(0, "STATIC", wxBuffer, - STATIC_FLAGS, - 0, 0, 0, 0, (HWND) parent->GetHWND(), (HMENU)NewControlId(), - wxGetInstance(), NULL); - } - - msStyle = 0; - if (m_windowStyle & wxSL_VERTICAL) - msStyle = TBS_VERT | WS_CHILD | WS_VISIBLE | WS_TABSTOP ; - else - msStyle = TBS_HORZ | WS_CHILD | WS_VISIBLE | WS_TABSTOP ; - - if ( m_windowStyle & wxSL_AUTOTICKS ) - msStyle |= TBS_AUTOTICKS ; - - if ( m_windowStyle & wxSL_LEFT ) - msStyle |= TBS_LEFT; - else if ( m_windowStyle & wxSL_RIGHT ) - msStyle |= TBS_RIGHT; - else if ( m_windowStyle & wxSL_TOP ) - msStyle |= TBS_TOP; - else if ( m_windowStyle & wxSL_BOTTOM ) - msStyle |= TBS_BOTTOM; - else if ( m_windowStyle & wxSL_BOTH ) - msStyle |= TBS_BOTH; - else if ( ! (m_windowStyle & wxSL_AUTOTICKS) ) - msStyle |= TBS_NOTICKS; - - if ( m_windowStyle & wxSL_SELRANGE ) - msStyle |= TBS_ENABLESELRANGE ; - - HWND scroll_bar = CreateWindowEx(MakeExtendedStyle(m_windowStyle), TRACKBAR_CLASS, wxBuffer, - msStyle, - 0, 0, 0, 0, (HWND) parent->GetHWND(), (HMENU)m_windowId, - wxGetInstance(), NULL); - - m_rangeMax = maxValue; - m_rangeMin = minValue; - - m_pageSize = (int)((maxValue-minValue)/10); - - ::SendMessage(scroll_bar, TBM_SETRANGE, TRUE, MAKELONG(minValue, maxValue)); - ::SendMessage(scroll_bar, TBM_SETPOS, TRUE, (LPARAM)value); - ::SendMessage(scroll_bar, TBM_SETPAGESIZE, 0, (LPARAM)m_pageSize); - - m_hWnd = (WXHWND)scroll_bar; - - SubclassWin(GetHWND()); - - SetWindowText((HWND) m_hWnd, ""); - - SetFont(parent->GetFont()); - - if ( m_windowStyle & wxSL_LABELS ) - { - // Finally, create max value static item - sprintf(wxBuffer, "%d", maxValue); - m_staticMax = (WXHWND) CreateWindowEx(0, "STATIC", wxBuffer, - STATIC_FLAGS, - 0, 0, 0, 0, (HWND) parent->GetHWND(), (HMENU)NewControlId(), - wxGetInstance(), NULL); - - - if (GetFont().Ok()) - { - if (GetFont().GetResourceHandle()) - { - if ( m_staticMin ) - SendMessage((HWND)m_staticMin,WM_SETFONT, - (WPARAM)GetFont().GetResourceHandle(),0L); - if ( m_staticMax ) - SendMessage((HWND)m_staticMax,WM_SETFONT, - (WPARAM)GetFont().GetResourceHandle(),0L); - if (m_staticValue) - SendMessage((HWND)m_staticValue,WM_SETFONT, - (WPARAM)GetFont().GetResourceHandle(),0L); - } - } - } - - SetSize(x, y, width, height); - SetValue(value); - - return TRUE; -} - -void wxSlider95::MSWOnVScroll(WXWORD wParam, WXWORD pos, WXHWND control) -{ - int position = 0; // Dummy - not used in this mode - - int nScrollInc; - wxEventType scrollEvent = wxEVT_NULL; - switch ( wParam ) - { - case SB_TOP: - nScrollInc = m_rangeMax - position; - scrollEvent = wxEVT_SCROLL_TOP; - break; - - case SB_BOTTOM: - nScrollInc = - position; - scrollEvent = wxEVT_SCROLL_BOTTOM; - break; - - case SB_LINEUP: - nScrollInc = - GetLineSize(); - scrollEvent = wxEVT_SCROLL_LINEUP; - break; - - case SB_LINEDOWN: - nScrollInc = GetLineSize(); - scrollEvent = wxEVT_SCROLL_LINEDOWN; - break; - - case SB_PAGEUP: - nScrollInc = -GetPageSize(); - scrollEvent = wxEVT_SCROLL_PAGEUP; - break; - - case SB_PAGEDOWN: - nScrollInc = GetPageSize(); - scrollEvent = wxEVT_SCROLL_PAGEDOWN; - break; - - case SB_THUMBTRACK: - case SB_THUMBPOSITION: -#ifdef __WIN32__ - nScrollInc = (signed short)pos - position; -#else - nScrollInc = pos - position; -#endif - scrollEvent = wxEVT_SCROLL_THUMBTRACK; - break; - - default: - nScrollInc = 0; - return; - } - - { - - int newPos = (int)::SendMessage((HWND) control, TBM_GETPOS, 0, 0); - if (!(newPos < GetMin() || newPos > GetMax())) - { - SetValue(newPos); - - wxScrollEvent event(scrollEvent, m_windowId); - event.SetPosition(newPos); - event.SetEventObject( this ); - GetEventHandler()->ProcessEvent(event); - - wxCommandEvent cevent( wxEVT_COMMAND_SLIDER_UPDATED, GetId() ); - cevent.SetEventObject( this ); - GetEventHandler()->ProcessEvent( cevent ); - - } - } -} - -void wxSlider95::MSWOnHScroll(WXWORD wParam, WXWORD pos, WXHWND control) -{ - MSWOnVScroll(wParam, pos, control); -} - -wxSlider95::~wxSlider95(void) -{ - if (m_staticMin) - DestroyWindow((HWND) m_staticMin); - if (m_staticMax) - DestroyWindow((HWND) m_staticMax); - if (m_staticValue) - DestroyWindow((HWND) m_staticValue); -} - -int wxSlider95::GetValue(void) const -{ - return ::SendMessage((HWND) GetHWND(), TBM_GETPOS, 0, 0); -} - -void wxSlider95::SetValue(int value) -{ - ::SendMessage((HWND) GetHWND(), TBM_SETPOS, (WPARAM)TRUE, (LPARAM)value); - if (m_staticValue) - { - sprintf(wxBuffer, "%d", value); - SetWindowText((HWND) m_staticValue, wxBuffer); - } -} - -void wxSlider95::GetSize(int *width, int *height) const -{ - RECT rect; - rect.left = -1; rect.right = -1; rect.top = -1; rect.bottom = -1; - - wxFindMaxSize(GetHWND(), &rect); - - if (m_staticMin) - wxFindMaxSize(m_staticMin, &rect); - if (m_staticMax) - wxFindMaxSize(m_staticMax, &rect); - if (m_staticValue) - wxFindMaxSize(m_staticValue, &rect); - - *width = rect.right - rect.left; - *height = rect.bottom - rect.top; -} - -void wxSlider95::GetPosition(int *x, int *y) const -{ - wxWindow *parent = GetParent(); - RECT rect; - rect.left = -1; rect.right = -1; rect.top = -1; rect.bottom = -1; - - wxFindMaxSize(GetHWND(), &rect); - - if (m_staticMin) - wxFindMaxSize(m_staticMin, &rect); - if (m_staticMax) - wxFindMaxSize(m_staticMax, &rect); - if (m_staticValue) - wxFindMaxSize(m_staticValue, &rect); - - // Since we now have the absolute screen coords, - // if there's a parent we must subtract its top left corner - POINT point; - point.x = rect.left; - point.y = rect.top; - if (parent) - ::ScreenToClient((HWND) parent->GetHWND(), &point); - - // We may be faking the client origin. - // So a window that's really at (0, 30) may appear - // (to wxWin apps) to be at (0, 0). - if (GetParent()) - { - wxPoint pt(GetParent()->GetClientAreaOrigin()); - point.x -= pt.x; - point.y -= pt.y; - } - *x = point.x; - *y = point.y; -} - -void wxSlider95::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - int x1 = x; - int y1 = y; - int w1 = width; - int h1 = height; - - int currentX, currentY; - GetPosition(¤tX, ¤tY); - if (x == -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) - x1 = currentX; - if (y == -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) - y1 = currentY; - - AdjustForParentClientOrigin(x1, y1, sizeFlags); - - char buf[300]; - - int x_offset = x; - int y_offset = y; - - int cx; // slider,min,max sizes - int cy; - int cyf; - - wxGetCharSize(GetHWND(), &cx, &cy, & this->GetFont()); - - if ((m_windowStyle & wxSL_VERTICAL) != wxSL_VERTICAL) - { - if ( m_windowStyle & wxSL_LABELS ) - { - int min_len = 0; - - GetWindowText((HWND) m_staticMin, buf, 300); - GetTextExtent(buf, &min_len, &cyf,NULL,NULL, & this->GetFont()); - - int max_len = 0; - - GetWindowText((HWND) m_staticMax, buf, 300); - GetTextExtent(buf, &max_len, &cyf,NULL,NULL, & this->GetFont()); - if (m_staticValue) - { - int new_width = (int)(wxMax(min_len, max_len)); - int valueHeight = (int)cyf; -#ifdef __WIN32__ - // For some reason, under Win95, the text edit control has - // a lot of space before the first character - new_width += 3*cx; -#endif - // The height needs to be a bit bigger under Win95 if using native - // 3D effects. - valueHeight = (int) (valueHeight * 1.5) ; - MoveWindow((HWND) m_staticValue, x_offset, y_offset, new_width, valueHeight, TRUE); - x_offset += new_width + cx; - } - - MoveWindow((HWND) m_staticMin, x_offset, y_offset, (int)min_len, cy, TRUE); - x_offset += (int)(min_len + cx); - - int slider_length = (int)(w1 - x_offset - max_len - cx); - - int slider_height = h1; - if (slider_height < 0 ) - slider_height = 20; - - // Slider must have a minimum/default length/height - if (slider_length < 100) - slider_length = 100; - - MoveWindow((HWND) GetHWND(), x_offset, y_offset, slider_length, slider_height, TRUE); - x_offset += slider_length + cx; - - MoveWindow((HWND) m_staticMax, x_offset, y_offset, (int)max_len, cy, TRUE); - } - else - { - // No labels - // If we're prepared to use the existing size, then... - if (width == -1 && height == -1 && ((sizeFlags & wxSIZE_AUTO) != wxSIZE_AUTO)) - { - GetSize(&w1, &h1); - } - if ( w1 < 0 ) - w1 = 200; - if ( h1 < 0 ) - h1 = 20; - MoveWindow((HWND) GetHWND(), x1, y1, w1, h1, TRUE); - } - } - else - { - if ( m_windowStyle & wxSL_LABELS ) - { - int min_len; - GetWindowText((HWND) m_staticMin, buf, 300); - GetTextExtent(buf, &min_len, &cyf,NULL,NULL, & this->GetFont()); - - int max_len; - GetWindowText((HWND) m_staticMax, buf, 300); - GetTextExtent(buf, &max_len, &cyf,NULL,NULL, & this->GetFont()); - - if (m_staticValue) - { - int new_width = (int)(wxMax(min_len, max_len)); - int valueHeight = (int)cyf; -/*** Suggested change by George Tasker - remove this block... -#ifdef __WIN32__ - // For some reason, under Win95, the text edit control has - // a lot of space before the first character - new_width += 3*cx; -#endif - ... and replace with following line: */ - new_width += cx; - - // The height needs to be a bit bigger under Win95 if using native - // 3D effects. - valueHeight = (int) (valueHeight * 1.5) ; - - MoveWindow((HWND) m_staticValue, x_offset, y_offset, new_width, valueHeight, TRUE); - y_offset += valueHeight; - } - - MoveWindow((HWND) m_staticMin, x_offset, y_offset, (int)min_len, cy, TRUE); - y_offset += cy; - - int slider_length = (int)(h1 - y_offset - cy - cy); - - int slider_width = w1; - if (slider_width < 0 ) - slider_width = 20; - - // Slider must have a minimum/default length - if (slider_length < 100) - slider_length = 100; - - MoveWindow((HWND) GetHWND(), x_offset, y_offset, slider_width, slider_length, TRUE); - y_offset += slider_length; - - MoveWindow((HWND) m_staticMax, x_offset, y_offset, (int)max_len, cy, TRUE); - } - else - { - // No labels - // If we're prepared to use the existing size, then... - if (width == -1 && height == -1 && ((sizeFlags & wxSIZE_AUTO) != wxSIZE_AUTO)) - { - GetSize(&w1, &h1); - } - if ( w1 < 0 ) - w1 = 20; - if ( h1 < 0 ) - h1 = 200; - MoveWindow((HWND) GetHWND(), x1, y1, w1, h1, TRUE); - } - } -} - -void wxSlider95::SetRange(int minValue, int maxValue) -{ - m_rangeMin = minValue; - m_rangeMax = maxValue; - - ::SendMessage((HWND) GetHWND(), TBM_SETRANGE, TRUE, MAKELONG(minValue, maxValue)); - - char buf[40]; - if ( m_staticMin ) - { - sprintf(buf, "%d", m_rangeMin); - SetWindowText((HWND) m_staticMin, buf); - } - - if ( m_staticMax ) - { - sprintf(buf, "%d", m_rangeMax); - SetWindowText((HWND) m_staticMax, buf); - } -} - -WXHBRUSH wxSlider95::OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor, - WXUINT message, WXWPARAM wParam, WXLPARAM lParam) -{ - if ( nCtlColor == CTLCOLOR_SCROLLBAR ) - return 0; - - // Otherwise, it's a static - if (GetParent()->GetTransparentBackground()) - SetBkMode((HDC) pDC, TRANSPARENT); - else - SetBkMode((HDC) pDC, OPAQUE); - - ::SetBkColor((HDC) pDC, RGB(GetBackgroundColour().Red(), GetBackgroundColour().Green(), GetBackgroundColour().Blue())); - ::SetTextColor((HDC) pDC, RGB(GetForegroundColour().Red(), GetForegroundColour().Green(), GetForegroundColour().Blue())); - - wxBrush *backgroundBrush = wxTheBrushList->FindOrCreateBrush(GetBackgroundColour(), wxSOLID); - return (WXHBRUSH) backgroundBrush->GetResourceHandle(); -} - -// For trackbars only -void wxSlider95::SetTickFreq(int n, int pos) -{ - m_tickFreq = n; - ::SendMessage( (HWND) GetHWND(), TBM_SETTICFREQ, (WPARAM) n, (LPARAM) pos ); -} - -void wxSlider95::SetPageSize(int pageSize) -{ - ::SendMessage( (HWND) GetHWND(), TBM_SETPAGESIZE, (WPARAM) 0, (LPARAM) pageSize ); - m_pageSize = pageSize; -} - -int wxSlider95::GetPageSize(void) const -{ - return m_pageSize; -} - -void wxSlider95::ClearSel(void) -{ - ::SendMessage( (HWND) GetHWND(), TBM_CLEARSEL, (WPARAM) TRUE, (LPARAM) 0 ); -} - -void wxSlider95::ClearTicks(void) -{ - ::SendMessage( (HWND) GetHWND(), TBM_CLEARTICS, (WPARAM) TRUE, (LPARAM) 0 ); -} - -void wxSlider95::SetLineSize(int lineSize) -{ - m_lineSize = lineSize; - ::SendMessage( (HWND) GetHWND(), TBM_SETLINESIZE, (WPARAM) 0, (LPARAM) lineSize ); -} - -int wxSlider95::GetLineSize(void) const -{ - return (int) ::SendMessage( (HWND) GetHWND(), TBM_GETLINESIZE, (WPARAM) 0, (LPARAM) 0 ); -} - -int wxSlider95::GetSelEnd(void) const -{ - return (int) ::SendMessage( (HWND) GetHWND(), TBM_SETSELEND, (WPARAM) 0, (LPARAM) 0 ); -} - -int wxSlider95::GetSelStart(void) const -{ - return (int) ::SendMessage( (HWND) GetHWND(), TBM_GETSELSTART, (WPARAM) 0, (LPARAM) 0 ); -} - -void wxSlider95::SetSelection(int minPos, int maxPos) -{ - ::SendMessage( (HWND) GetHWND(), TBM_SETSEL, (WPARAM) TRUE, (LPARAM) MAKELONG( minPos, maxPos) ); -} - -void wxSlider95::SetThumbLength(int len) -{ - ::SendMessage( (HWND) GetHWND(), TBM_SETTHUMBLENGTH, (WPARAM) len, (LPARAM) 0 ); -} - -int wxSlider95::GetThumbLength(void) const -{ - return (int) ::SendMessage( (HWND) GetHWND(), TBM_GETTHUMBLENGTH, (WPARAM) 0, (LPARAM) 0 ); -} - -void wxSlider95::SetTick(int tickPos) -{ - ::SendMessage( (HWND) GetHWND(), TBM_SETTIC, (WPARAM) 0, (LPARAM) tickPos ); -} - -bool wxSlider95::ContainsHWND(WXHWND hWnd) const -{ - return ( hWnd == GetStaticMin() || hWnd == GetStaticMax() || hWnd == GetEditValue() ); -} - -void wxSlider95::Command (wxCommandEvent & event) -{ - SetValue (event.GetInt()); - ProcessCommand (event); -} - -bool wxSlider95::Show(bool show) -{ - wxWindow::Show(show); - - int cshow; - if (show) - cshow = SW_SHOW; - else - cshow = SW_HIDE; - - if(m_staticValue) - ShowWindow((HWND) m_staticValue, (BOOL)cshow); - if(m_staticMin) - ShowWindow((HWND) m_staticMin, (BOOL)cshow); - if(m_staticMax) - ShowWindow((HWND) m_staticMax, (BOOL)cshow); - return TRUE; -} - -#endif - // __WIN95__ - diff --git a/src/msw/slidrmsw.cpp b/src/msw/slidrmsw.cpp deleted file mode 100644 index 83d4a14846..0000000000 --- a/src/msw/slidrmsw.cpp +++ /dev/null @@ -1,584 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: slidermsw.cpp -// Purpose: wxSliderMSW -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "slidrmsw.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include -#endif - -#include "wx/utils.h" -#include "wx/brush.h" -#include "wx/msw/slidrmsw.h" -#include "wx/msw/private.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxSliderMSW, wxControl) -#endif - -// Slider -wxSliderMSW::wxSliderMSW(void) -{ - m_staticValue = 0; - m_staticMin = 0; - m_staticMax = 0; - m_pageSize = 1; - m_lineSize = 1; - m_rangeMax = 0; - m_rangeMin = 0; - m_tickFreq = 0; -} - -bool wxSliderMSW::Create(wxWindow *parent, wxWindowID id, - int value, int minValue, int maxValue, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); - SetValidator(validator); - - if (parent) parent->AddChild(this); - SetBackgroundColour(parent->GetBackgroundColour()) ; - SetForegroundColour(parent->GetForegroundColour()) ; - - m_staticValue = 0; - m_staticMin = 0; - m_staticMax = 0; - m_pageSize = 1; - m_lineSize = 1; - m_windowStyle = style; - m_tickFreq = 0; - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - int x = pos.x; - int y = pos.y; - int width = size.x; - int height = size.y; - - // non-Win95 implementation - - long msStyle = WS_CHILD | WS_VISIBLE | WS_BORDER | SS_CENTER; - - bool want3D; - WXDWORD exStyle = Determine3DEffects(WS_EX_CLIENTEDGE, &want3D) ; - - m_staticValue = (WXHWND) CreateWindowEx(exStyle, "STATIC", NULL, - msStyle, - 0, 0, 0, 0, (HWND) parent->GetHWND(), (HMENU)NewControlId(), - wxGetInstance(), NULL); - - // Now create min static control - sprintf(wxBuffer, "%d", minValue); - m_staticMin = (WXHWND) CreateWindowEx(0, "STATIC", wxBuffer, - STATIC_FLAGS, - 0, 0, 0, 0, (HWND) parent->GetHWND(), (HMENU)NewControlId(), - wxGetInstance(), NULL); - - // Now create slider - m_windowId = (int)NewControlId(); - - msStyle = 0; - if (m_windowStyle & wxSL_VERTICAL) - msStyle = SBS_VERT | WS_CHILD | WS_VISIBLE | WS_TABSTOP ; - else - msStyle = SBS_HORZ | WS_CHILD | WS_VISIBLE | WS_TABSTOP ; - - HWND scroll_bar = CreateWindowEx(MakeExtendedStyle(m_windowStyle), "SCROLLBAR", wxBuffer, - msStyle, - 0, 0, 0, 0, (HWND) parent->GetHWND(), (HMENU)m_windowId, - wxGetInstance(), NULL); - - m_pageSize = (int)((maxValue-minValue)/10); - m_rangeMax = maxValue; - m_rangeMin = minValue; - - ::SetScrollRange(scroll_bar, SB_CTL, minValue, maxValue, FALSE); - ::SetScrollPos(scroll_bar, SB_CTL, value, FALSE); - ShowWindow(scroll_bar, SW_SHOW); - - m_hWnd = (WXHWND)scroll_bar; - - // Subclass again for purposes of dialog editing mode - SubclassWin(GetHWND()); - - // Finally, create max value static item - sprintf(wxBuffer, "%d", maxValue); - m_staticMax = (WXHWND) CreateWindowEx(0, "STATIC", wxBuffer, - STATIC_FLAGS, - 0, 0, 0, 0, (HWND) parent->GetHWND(), (HMENU)NewControlId(), - wxGetInstance(), NULL); - - SetFont(parent->GetFont()); - - if (GetFont().Ok()) - { -// GetFont()->RealizeResource(); - if (GetFont().GetResourceHandle()) - { - if ( m_staticMin ) - SendMessage((HWND)m_staticMin,WM_SETFONT, - (WPARAM)GetFont().GetResourceHandle(),0L); - if ( m_staticMax ) - SendMessage((HWND)m_staticMax,WM_SETFONT, - (WPARAM)GetFont().GetResourceHandle(),0L); - if (m_staticValue) - SendMessage((HWND)m_staticValue,WM_SETFONT, - (WPARAM)GetFont().GetResourceHandle(),0L); - } - } - - SetSize(x, y, width, height); - SetValue(value); - - return TRUE; -} - -void wxSliderMSW::MSWOnVScroll(WXWORD wParam, WXWORD pos, WXHWND control) -{ - int position = ::GetScrollPos((HWND)control, SB_CTL); - - int nScrollInc; - wxEventType scrollEvent = wxEVT_NULL; - switch ( wParam ) - { - case SB_TOP: - nScrollInc = m_rangeMax - position; - scrollEvent = wxEVT_SCROLL_TOP; - break; - - case SB_BOTTOM: - nScrollInc = - position; - scrollEvent = wxEVT_SCROLL_BOTTOM; - break; - - case SB_LINEUP: - nScrollInc = - GetLineSize(); - scrollEvent = wxEVT_SCROLL_LINEUP; - break; - - case SB_LINEDOWN: - nScrollInc = GetLineSize(); - scrollEvent = wxEVT_SCROLL_LINEDOWN; - break; - - case SB_PAGEUP: - nScrollInc = -GetPageSize(); - scrollEvent = wxEVT_SCROLL_PAGEUP; - break; - - case SB_PAGEDOWN: - nScrollInc = GetPageSize(); - scrollEvent = wxEVT_SCROLL_PAGEDOWN; - break; - - case SB_THUMBTRACK: - case SB_THUMBPOSITION: -#ifdef __WIN32__ - nScrollInc = (signed short)pos - position; -#else - nScrollInc = pos - position; -#endif - scrollEvent = wxEVT_SCROLL_THUMBTRACK; - break; - - default: - nScrollInc = 0; - return; - } - - if (nScrollInc != 0) - { - - int newPos = position + nScrollInc; - - if (!(newPos < GetMin() || newPos > GetMax())) - { - SetValue(newPos); - - wxScrollEvent event(scrollEvent, m_windowId); - event.SetPosition(newPos); - event.SetEventObject( this ); - GetEventHandler()->ProcessEvent(event); - - wxCommandEvent cevent( wxEVT_COMMAND_SLIDER_UPDATED, GetId() ); - cevent.SetEventObject( this ); - GetEventHandler()->ProcessEvent( cevent ); - } - } -} - -void wxSliderMSW::MSWOnHScroll(WXWORD wParam, WXWORD pos, WXHWND control) -{ - MSWOnVScroll(wParam, pos, control); -} - -wxSliderMSW::~wxSliderMSW(void) -{ - if (m_staticMin) - DestroyWindow((HWND) m_staticMin); - if (m_staticMax) - DestroyWindow((HWND) m_staticMax); - if (m_staticValue) - DestroyWindow((HWND) m_staticValue); -} - -int wxSliderMSW::GetValue(void) const -{ - return ::GetScrollPos((HWND) GetHWND(), SB_CTL); -} - -void wxSliderMSW::SetValue(int value) -{ - ::SetScrollPos((HWND) GetHWND(), SB_CTL, value, TRUE); - if (m_staticValue) - { - sprintf(wxBuffer, "%d", value); - SetWindowText((HWND) m_staticValue, wxBuffer); - } -} - -void wxSliderMSW::GetSize(int *width, int *height) const -{ - RECT rect; - rect.left = -1; rect.right = -1; rect.top = -1; rect.bottom = -1; - - wxFindMaxSize(GetHWND(), &rect); - - if (m_staticMin) - wxFindMaxSize(m_staticMin, &rect); - if (m_staticMax) - wxFindMaxSize(m_staticMax, &rect); - if (m_staticValue) - wxFindMaxSize(m_staticValue, &rect); - - *width = rect.right - rect.left; - *height = rect.bottom - rect.top; -} - -void wxSliderMSW::GetPosition(int *x, int *y) const -{ - wxWindow *parent = GetParent(); - RECT rect; - rect.left = -1; rect.right = -1; rect.top = -1; rect.bottom = -1; - - wxFindMaxSize(GetHWND(), &rect); - - if (m_staticMin) - wxFindMaxSize(m_staticMin, &rect); - if (m_staticMax) - wxFindMaxSize(m_staticMax, &rect); - if (m_staticValue) - wxFindMaxSize(m_staticValue, &rect); - - // Since we now have the absolute screen coords, - // if there's a parent we must subtract its top left corner - POINT point; - point.x = rect.left; - point.y = rect.top; - if (parent) - ::ScreenToClient((HWND) parent->GetHWND(), &point); - - // We may be faking the client origin. - // So a window that's really at (0, 30) may appear - // (to wxWin apps) to be at (0, 0). - if (GetParent()) - { - wxPoint pt(GetParent()->GetClientAreaOrigin()); - point.x -= pt.x; - point.y -= pt.y; - } - *x = point.x; - *y = point.y; -} - -void wxSliderMSW::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - int x1 = x; - int y1 = y; - int w1 = width; - int h1 = height; - - int currentX, currentY; - GetPosition(¤tX, ¤tY); - if (x == -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) - x1 = currentX; - if (y == -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) - y1 = currentY; - - AdjustForParentClientOrigin(x1, y1, sizeFlags); - - char buf[300]; - - int x_offset = x; - int y_offset = y; - - int cx; // slider,min,max sizes - int cy; - int cyf; - - wxGetCharSize(GetHWND(), &cx, &cy,& this->GetFont()); - - if ((m_windowStyle & wxSL_VERTICAL) != wxSL_VERTICAL) - { - if ( m_windowStyle & wxSL_LABELS ) - { - int min_len = 0; - - GetWindowText((HWND) m_staticMin, buf, 300); - GetTextExtent(buf, &min_len, &cyf,NULL,NULL, & this->GetFont()); - - int max_len = 0; - - GetWindowText((HWND) m_staticMax, buf, 300); - GetTextExtent(buf, &max_len, &cyf,NULL,NULL, & this->GetFont()); - if (m_staticValue) - { - int new_width = (int)(wxMax(min_len, max_len)); - int valueHeight = (int)cyf; -#ifdef __WIN32__ - // For some reason, under Win95, the text edit control has - // a lot of space before the first character - new_width += 3*cx; -#endif - MoveWindow((HWND) m_staticValue, x_offset, y_offset, new_width, valueHeight, TRUE); - x_offset += new_width + cx; - } - - MoveWindow((HWND) m_staticMin, x_offset, y_offset, (int)min_len, cy, TRUE); - x_offset += (int)(min_len + cx); - - int slider_length = (int)(w1 - x_offset - max_len - cx); - - int slider_height = cy; - - // Slider must have a minimum/default length/height - if (slider_length < 100) - slider_length = 100; - - MoveWindow((HWND) GetHWND(), x_offset, y_offset, slider_length, slider_height, TRUE); - x_offset += slider_length + cx; - - MoveWindow((HWND) m_staticMax, x_offset, y_offset, (int)max_len, cy, TRUE); - } - else - { - // No labels - if ( w1 < 0 ) - w1 = 200; - if ( h1 < 0 ) - h1 = 20; - MoveWindow((HWND) GetHWND(), x1, y1, w1, h1, TRUE); - } - } - else - { - if ( m_windowStyle & wxSL_LABELS ) - { - int min_len; - GetWindowText((HWND) m_staticMin, buf, 300); - GetTextExtent(buf, &min_len, &cyf,NULL,NULL,& this->GetFont()); - - int max_len; - GetWindowText((HWND) m_staticMax, buf, 300); - GetTextExtent(buf, &max_len, &cyf,NULL,NULL, & this->GetFont()); - - if (m_staticValue) - { - int new_width = (int)(wxMax(min_len, max_len)); - int valueHeight = (int)cyf; -/*** Suggested change by George Tasker - remove this block... -#ifdef __WIN32__ - // For some reason, under Win95, the text edit control has - // a lot of space before the first character - new_width += 3*cx; -#endif - ... and replace with following line: */ - new_width += cx; - - MoveWindow((HWND) m_staticValue, x_offset, y_offset, new_width, valueHeight, TRUE); - y_offset += valueHeight; - } - - MoveWindow((HWND) m_staticMin, x_offset, y_offset, (int)min_len, cy, TRUE); - y_offset += cy; - - int slider_length = (int)(h1 - y_offset - cy - cy); - - // Use character height as an estimate of slider width (yes, width) - int slider_width = cy; - - // Slider must have a minimum/default length - if (slider_length < 100) - slider_length = 100; - - MoveWindow((HWND) GetHWND(), x_offset, y_offset, slider_width, slider_length, TRUE); - y_offset += slider_length; - - MoveWindow((HWND) m_staticMax, x_offset, y_offset, (int)max_len, cy, TRUE); - } - else - { - // No labels - if ( w1 < 0 ) - w1 = 20; - if ( h1 < 0 ) - h1 = 200; - MoveWindow((HWND) GetHWND(), x1, y1, w1, h1, TRUE); - } - } -} - -void wxSliderMSW::SetRange(int minValue, int maxValue) -{ - m_rangeMin = minValue; - m_rangeMax = maxValue; - - ::SetScrollRange((HWND) GetHWND(), SB_CTL, m_rangeMin, m_rangeMax, TRUE); - char buf[40]; - if ( m_staticMin ) - { - sprintf(buf, "%d", m_rangeMin); - SetWindowText((HWND) m_staticMin, buf); - } - - if ( m_staticMax ) - { - sprintf(buf, "%d", m_rangeMax); - SetWindowText((HWND) m_staticMax, buf); - } -} - -WXHBRUSH wxSliderMSW::OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor, - WXUINT message, WXWPARAM wParam, WXLPARAM lParam) -{ - if ( nCtlColor == CTLCOLOR_SCROLLBAR ) - return 0; - - // Otherwise, it's a static - if (GetParent()->GetTransparentBackground()) - SetBkMode((HDC) pDC, TRANSPARENT); - else - SetBkMode((HDC) pDC, OPAQUE); - - ::SetBkColor((HDC) pDC, RGB(GetBackgroundColour().Red(), GetBackgroundColour().Green(), GetBackgroundColour().Blue())); - ::SetTextColor((HDC) pDC, RGB(GetForegroundColour().Red(), GetForegroundColour().Green(), GetForegroundColour().Blue())); - - wxBrush *backgroundBrush = wxTheBrushList->FindOrCreateBrush(GetBackgroundColour(), wxSOLID); - - return (WXHBRUSH) backgroundBrush->GetResourceHandle(); -} - -// For trackbars only -void wxSliderMSW::SetTickFreq(int n, int pos) -{ -} - -void wxSliderMSW::SetPageSize(int pageSize) -{ - m_pageSize = pageSize; -} - -int wxSliderMSW::GetPageSize(void) const -{ - return m_pageSize; -} - -void wxSliderMSW::ClearSel(void) -{ -} - -void wxSliderMSW::ClearTicks(void) -{ -} - -void wxSliderMSW::SetLineSize(int lineSize) -{ - m_lineSize = lineSize; -} - -int wxSliderMSW::GetLineSize(void) const -{ - return m_lineSize; -} - -int wxSliderMSW::GetSelEnd(void) const -{ - return 0; -} - -int wxSliderMSW::GetSelStart(void) const -{ - return 0; -} - -void wxSliderMSW::SetSelection(int minPos, int maxPos) -{ -} - -void wxSliderMSW::SetThumbLength(int len) -{ -} - -int wxSliderMSW::GetThumbLength(void) const -{ - return 0; -} - -void wxSliderMSW::SetTick(int tickPos) -{ -} - -bool wxSliderMSW::ContainsHWND(WXHWND hWnd) const -{ - return ( hWnd == GetStaticMin() || hWnd == GetStaticMax() || hWnd == GetEditValue() ); -} - -void wxSliderMSW::Command (wxCommandEvent & event) -{ - SetValue (event.GetInt()); - ProcessCommand (event); -} - -bool wxSliderMSW::Show(bool show) -{ - wxWindow::Show(show); - - int cshow; - if (show) - cshow = SW_SHOW; - else - cshow = SW_HIDE; - - if(m_staticValue) - ShowWindow((HWND) m_staticValue, (BOOL)cshow); - if(m_staticMin) - ShowWindow((HWND) m_staticMin, (BOOL)cshow); - if(m_staticMax) - ShowWindow((HWND) m_staticMax, (BOOL)cshow); - return TRUE; -} - - diff --git a/src/msw/spinbutt.cpp b/src/msw/spinbutt.cpp deleted file mode 100644 index 03657deaa0..0000000000 --- a/src/msw/spinbutt.cpp +++ /dev/null @@ -1,270 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: spinbutt.cpp -// Purpose: wxSpinButton -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "spinbutt.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -// Can't resolve reference to CreateUpDownControl in -// TWIN32, but could probably use normal CreateWindow instead. - -#if defined(__WIN95__) && !defined(__TWIN32__) - -#include "wx/spinbutt.h" -#include "wx/msw/private.h" - -#if !defined(__GNUWIN32__) || defined(__TWIN32__) -#include -#endif - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxSpinButton, wxControl) -#endif - -wxSpinButton::wxSpinButton(void) -{ - m_min = 0; - m_max = 100; -} - -bool wxSpinButton::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, - long style, const wxString& name) -{ - wxSystemSettings settings; - m_backgroundColour = parent->GetBackgroundColour() ; - m_foregroundColour = parent->GetForegroundColour() ; - - SetName(name); - - int x = pos.x; - int y = pos.y; - int width = size.x; - int height = size.y; - - m_windowStyle = style; - - SetParent(parent); - - if (width <= 0) - width = 100; - if (height <= 0) - height = 30; - if (x < 0) - x = 0; - if (y < 0) - y = 0; - - m_min = 0; - m_max = 100; - - m_windowId = (id == -1) ? NewControlId() : id; - - DWORD wstyle = WS_VISIBLE | WS_CHILD | WS_TABSTOP; - - if ( m_windowStyle & wxSP_HORIZONTAL ) - wstyle |= UDS_HORZ; - if ( m_windowStyle & wxSP_ARROW_KEYS ) - wstyle |= UDS_ARROWKEYS; - if ( m_windowStyle & wxSP_WRAP ) - wstyle |= UDS_WRAP; - - // Create the ListView control. - HWND hWndListControl = CreateUpDownControl(wstyle, - x, y, width, height, - (HWND) parent->GetHWND(), - m_windowId, - wxGetInstance(), - 0, - m_min, m_max, m_min); - - m_hWnd = (WXHWND) hWndListControl; - if (parent) parent->AddChild(this); - - // TODO: have this for all controls. - if ( !m_hWnd ) - return FALSE; - - SubclassWin((WXHWND) m_hWnd); - - return TRUE; -} - -wxSpinButton::~wxSpinButton(void) -{ -} - -// Attributes -//////////////////////////////////////////////////////////////////////////// - -int wxSpinButton::GetValue(void) const -{ - return (int) ::SendMessage((HWND) GetHWND(), UDM_GETPOS, 0, 0); -} - -void wxSpinButton::SetValue(int val) -{ - ::SendMessage((HWND) GetHWND(), UDM_SETPOS, 0, (LPARAM) MAKELONG((short) val, 0)); -} - -void wxSpinButton::SetRange(int minVal, int maxVal) -{ - m_min = minVal; - m_max = maxVal; - ::SendMessage((HWND) GetHWND(), UDM_SETRANGE, 0, - (LPARAM) MAKELONG((short)maxVal, (short)minVal)); -} - -void wxSpinButton::MSWOnVScroll(WXWORD wParam, WXWORD pos, WXHWND control) -{ - if (control) - { - wxSpinEvent event(wxEVT_NULL, m_windowId); - event.SetPosition(pos); - event.SetOrientation(wxVERTICAL); - event.SetEventObject( this ); - - switch ( wParam ) - { - case SB_TOP: - event.m_eventType = wxEVT_SCROLL_TOP; - break; - - case SB_BOTTOM: - event.m_eventType = wxEVT_SCROLL_BOTTOM; - break; - - case SB_LINEUP: - event.m_eventType = wxEVT_SCROLL_LINEUP; - break; - - case SB_LINEDOWN: - event.m_eventType = wxEVT_SCROLL_LINEDOWN; - break; - - case SB_PAGEUP: - event.m_eventType = wxEVT_SCROLL_PAGEUP; - break; - - case SB_PAGEDOWN: - event.m_eventType = wxEVT_SCROLL_PAGEDOWN; - break; - - case SB_THUMBTRACK: - case SB_THUMBPOSITION: - event.m_eventType = wxEVT_SCROLL_THUMBTRACK; - break; - - default: - return; - break; - } - if (!GetEventHandler()->ProcessEvent(event)) - Default(); - } -} - -void wxSpinButton::MSWOnHScroll( WXWORD wParam, WXWORD pos, WXHWND control) -{ - if (control) - { - wxSpinEvent event(wxEVT_NULL, m_windowId); - event.SetPosition(pos); - event.SetOrientation(wxHORIZONTAL); - event.SetEventObject( this ); - - switch ( wParam ) - { - case SB_TOP: - event.m_eventType = wxEVT_SCROLL_TOP; - break; - - case SB_BOTTOM: - event.m_eventType = wxEVT_SCROLL_BOTTOM; - break; - - case SB_LINEUP: - event.m_eventType = wxEVT_SCROLL_LINEUP; - break; - - case SB_LINEDOWN: - event.m_eventType = wxEVT_SCROLL_LINEDOWN; - break; - - case SB_PAGEUP: - event.m_eventType = wxEVT_SCROLL_PAGEUP; - break; - - case SB_PAGEDOWN: - event.m_eventType = wxEVT_SCROLL_PAGEDOWN; - break; - - case SB_THUMBTRACK: - case SB_THUMBPOSITION: - event.m_eventType = wxEVT_SCROLL_THUMBTRACK; - break; - - default: - return; - break; - } - if (!GetEventHandler()->ProcessEvent(event)) - Default(); - } -} - -bool wxSpinButton::MSWCommand(WXUINT cmd, WXWORD id) -{ - // No command messages - return FALSE; -} - -bool wxSpinButton::MSWNotify(WXWPARAM wParam, WXLPARAM lParam, WXLPARAM* result) -{ - NMHDR* hdr1 = (NMHDR*) lParam; - switch ( hdr1->code ) - { - /* We don't process this message, currently */ - case UDN_DELTAPOS: - - default : - return wxControl::MSWNotify(wParam, lParam, result); - break; - } -/* - event.eventObject = this; - event.SetEventType(eventType); - - if ( !GetEventHandler()->ProcessEvent(event) ) - return FALSE; -*/ - return TRUE; -} - -// Spin event -IMPLEMENT_DYNAMIC_CLASS(wxSpinEvent, wxScrollEvent) - -wxSpinEvent::wxSpinEvent(wxEventType commandType, int id): - wxScrollEvent(commandType, id) -{ -} - -#endif diff --git a/src/msw/statbmp.cpp b/src/msw/statbmp.cpp deleted file mode 100644 index 89f992643f..0000000000 --- a/src/msw/statbmp.cpp +++ /dev/null @@ -1,200 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: statbmp.cpp -// Purpose: wxStaticBitmap -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "statbmp.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/statbmp.h" -#endif - -#include -#include "wx/msw/private.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxStaticBitmap, wxControl) -#endif - -/* - * wxStaticBitmap - */ - -bool wxStaticBitmap::Create(wxWindow *parent, wxWindowID id, - const wxBitmap& bitmap, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - m_messageBitmap = bitmap; - SetName(name); - if (parent) parent->AddChild(this); - - m_backgroundColour = parent->GetBackgroundColour() ; - m_foregroundColour = parent->GetForegroundColour() ; - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - int x = pos.x; - int y = pos.y; - int width = size.x; - int height = size.y; - - if ( width < 0 && bitmap.Ok() ) - width = bitmap.GetWidth(); - if ( height < 0 && bitmap.Ok() ) - height = bitmap.GetHeight(); - - m_windowStyle = style; - - // Use an ownerdraw button to produce a static bitmap, since there's - // no ownerdraw static. - // TODO: perhaps this should be a static item, with style SS_BITMAP. - m_hWnd = (WXHWND)CreateWindow - ( - "BUTTON", - "", - BS_OWNERDRAW | WS_TABSTOP | WS_CHILD | WS_VISIBLE, - 0, 0, 0, 0, - (HWND)parent->GetHWND(), - (HMENU)m_windowId, - wxGetInstance(), - NULL - ); - - // Subclass again for purposes of dialog editing mode - SubclassWin(m_hWnd); - - SetFont(GetParent()->GetFont()); - - SetSize(x, y, width, height); - return TRUE; -} - -void wxStaticBitmap::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - int currentX, currentY; - GetPosition(¤tX, ¤tY); - int x1 = x; - int y1 = y; - - if (x == -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) - x1 = currentX; - if (y == -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) - y1 = currentY; - - AdjustForParentClientOrigin(x1, y1, sizeFlags); - - int actualWidth = width; - int actualHeight = height; - - int ww, hh; - GetSize(&ww, &hh); - - // If we're prepared to use the existing width, then... - if (width == -1 && ((sizeFlags & wxSIZE_AUTO_WIDTH) != wxSIZE_AUTO_WIDTH)) - actualWidth = ww; - else actualWidth = width; - - // If we're prepared to use the existing height, then... - if (height == -1 && ((sizeFlags & wxSIZE_AUTO_HEIGHT) != wxSIZE_AUTO_HEIGHT)) - actualHeight = hh; - else actualHeight = height; - - MoveWindow((HWND) GetHWND(), x1, y1, actualWidth, actualHeight, TRUE); -} - -void wxStaticBitmap::SetBitmap(const wxBitmap& bitmap) -{ - m_messageBitmap = bitmap; - - int x, y; - int w, h; - GetPosition(&x, &y); - GetSize(&w, &h); - RECT rect; - rect.left = x; rect.top = y; rect.right = x + w; rect.bottom = y + h; - - if ( bitmap.Ok() ) - MoveWindow((HWND) GetHWND(), x, y, bitmap.GetWidth(), bitmap.GetHeight(), - FALSE); - - InvalidateRect((HWND) GetParent()->GetHWND(), &rect, TRUE); -} - -bool wxStaticBitmap::MSWOnDraw(WXDRAWITEMSTRUCT *item) -{ - long style = GetWindowLong((HWND) GetHWND(), GWL_STYLE); -#if defined(__WIN32__) && defined(SS_BITMAP) - if ((style & 0xFF) == SS_BITMAP) - { - // Should we call Default() here? -// Default(); - - // Let default procedure draw the bitmap, which is defined - // in the Windows resource. - return FALSE; - } -#endif - - LPDRAWITEMSTRUCT lpDIS = (LPDRAWITEMSTRUCT) item; - - wxBitmap* bitmap = &m_messageBitmap; - if ( !bitmap->Ok() ) - return FALSE; - - HDC hDC = lpDIS->hDC; - HDC memDC = ::CreateCompatibleDC(hDC); - - HBITMAP old = (HBITMAP) ::SelectObject(memDC, (HBITMAP) bitmap->GetHBITMAP()); - - if (!old) - return FALSE; - - int x = lpDIS->rcItem.left; - int y = lpDIS->rcItem.top; - int width = lpDIS->rcItem.right - x; - int height = lpDIS->rcItem.bottom - y; - - // Centre the bitmap in the control area - int x1 = (int) (x + ((width - bitmap->GetWidth()) / 2)); - int y1 = (int) (y + ((height - bitmap->GetHeight()) / 2)); - - ::BitBlt(hDC, x1, y1, bitmap->GetWidth(), bitmap->GetHeight(), memDC, 0, 0, SRCCOPY); - - ::SelectObject(memDC, old); - - ::DeleteDC(memDC); - - return TRUE; -} - -long wxStaticBitmap::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) -{ - // Ensure that static items get messages. Some controls don't like this - // message to be intercepted (e.g. RichEdit), hence the tests. - if (nMsg == WM_NCHITTEST) - return (long)HTCLIENT; - - return wxWindow::MSWWindowProc(nMsg, wParam, lParam); -} - diff --git a/src/msw/statbox.cpp b/src/msw/statbox.cpp deleted file mode 100644 index 0be462b295..0000000000 --- a/src/msw/statbox.cpp +++ /dev/null @@ -1,229 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: statbox.cpp -// Purpose: wxStaticBox -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "statbox.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/dcclient.h" -#include "wx/app.h" -#endif - -#include "wx/statbox.h" -#include "wx/msw/private.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxStaticBox, wxControl) - -BEGIN_EVENT_TABLE(wxStaticBox, wxControl) - EVT_ERASE_BACKGROUND(wxStaticBox::OnEraseBackground) -END_EVENT_TABLE() - -#endif - -/* - * Group box - */ - -bool wxStaticBox::Create(wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - SetName(name); - - if (parent) parent->AddChild(this); - - SetBackgroundColour(parent->GetBackgroundColour()) ; - SetForegroundColour(parent->GetForegroundColour()) ; - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - int x = pos.x; - int y = pos.y; - int width = size.x; - int height = size.y; - - m_windowStyle = style; - - long msStyle = BS_GROUPBOX | WS_CHILD | WS_VISIBLE ; // GROUP_FLAGS; - - bool want3D; - WXDWORD exStyle = Determine3DEffects(0, &want3D) ; - - HWND wx_button = - CreateWindowEx(exStyle, "BUTTON", (const char *)label, msStyle, - 0, 0, 0, 0, (HWND) parent->GetHWND(), (HMENU)m_windowId, - wxGetInstance(), NULL); -#if CTL3D - if (want3D) - { - Ctl3dSubclassCtl(wx_button); - m_useCtl3D = TRUE; - } -#endif - - m_hWnd = (WXHWND)wx_button; - - // Subclass again for purposes of dialog editing mode - SubclassWin(GetHWND()); - - SetFont(parent->GetFont()); - - SetSize(x, y, width, height); - ShowWindow(wx_button, SW_SHOW); - - return TRUE; -} - -void wxStaticBox::SetLabel(const wxString& label) -{ - SetWindowText((HWND)m_hWnd, (const char *)label); -} - -void wxStaticBox::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - int currentX, currentY; - GetPosition(¤tX, ¤tY); - - int x1 = x; - int y1 = y; - int w1 = width; - int h1 = height; - - if (x == -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) - x1 = currentX; - if (y == -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) - y1 = currentY; - - AdjustForParentClientOrigin(x1, y1, sizeFlags); - - // If we're prepared to use the existing size, then... - if (width == -1 && height == -1 && ((sizeFlags & wxSIZE_AUTO) != wxSIZE_AUTO)) - { - GetSize(&w1, &h1); - } - - int current_width; - - int cx; - int cy; - int cyf; - - wxGetCharSize(GetHWND(), &cx, &cy, & this->GetFont()); - - GetTextExtent(wxGetWindowText(m_hWnd), ¤t_width, &cyf, - NULL,NULL, & this->GetFont()); - if ( w1 < 0 ) - w1 = current_width + 3*cx; - if ( h1 < 0 ) - h1 = EDIT_HEIGHT_FROM_CHAR_HEIGHT(cyf); - - MoveWindow((HWND)m_hWnd, x1, y1, w1, h1, TRUE); -} - -WXHBRUSH wxStaticBox::OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor, - WXUINT message, WXWPARAM wParam, WXLPARAM lParam) -{ -#if CTL3D - if ( m_useCtl3D ) - { - HBRUSH hbrush = Ctl3dCtlColorEx(message, wParam, lParam); - return (WXHBRUSH) hbrush; - } -#endif - - if (GetParent()->GetTransparentBackground()) - SetBkMode((HDC) pDC, TRANSPARENT); - else - SetBkMode((HDC) pDC, OPAQUE); - - ::SetBkColor((HDC) pDC, RGB(GetBackgroundColour().Red(), GetBackgroundColour().Green(), GetBackgroundColour().Blue())); - ::SetTextColor((HDC) pDC, RGB(GetForegroundColour().Red(), GetForegroundColour().Green(), GetForegroundColour().Blue())); - - wxBrush *backgroundBrush = wxTheBrushList->FindOrCreateBrush(GetBackgroundColour(), wxSOLID); - - // Note that this will be cleaned up in wxApp::OnIdle, if backgroundBrush - // has a zero usage count. -// backgroundBrush->RealizeResource(); - return (WXHBRUSH) backgroundBrush->GetResourceHandle(); -} - -// Shouldn't erase the whole window, since the static box must only paint its -// outline. -void wxStaticBox::OnEraseBackground(wxEraseEvent& event) -{ - // If we don't have this (call Default()), we don't paint the background properly. - // If we do have this, we seem to overwrite enclosed controls. - // Is it the WS_CLIPCHILDREN style that's causing the problems? - // Probably - without this style, the background of the window will show through, - // so the control doesn't have to paint it. The window background will always be - // painted before all other controls, therefore there are no problems with - // controls being hidden by the static box. - // So, if we could specify wxCLIP_CHILDREN in window, or not, we could optimise painting better. - // We would assume wxCLIP_CHILDREN in a frame and a scrolled window, but not in a panel. - // Is this too platform-specific?? What else can we do? Not a lot, since we have to pass - // this information from arbitrary wxWindow derivatives, and it depends on what you wish to - // do with the windows. - // Alternatively, just make sure that wxStaticBox is always at the back! There are probably - // few other circumstances where it matters about child clipping. But what about painting onto - // to panel, inside a groupbox? Doesn't appear, because the box wipes it out. - wxWindow *parent = GetParent(); - if ( parent && parent->GetHWND() && (::GetWindowLong((HWND) parent->GetHWND(), GWL_STYLE) & WS_CLIPCHILDREN) ) - { - // TODO: May in fact need to generate a paint event for inside this - // control's rectangle, otherwise all controls are going to be clipped - - // ugh. - HBRUSH hBrush = ::CreateSolidBrush(PALETTERGB(GetBackgroundColour().Red(), GetBackgroundColour().Green(), GetBackgroundColour().Blue())); - int mode = ::SetMapMode((HDC) event.GetDC()->GetHDC(), MM_TEXT); - - RECT rect; - - ::GetClientRect((HWND) GetHWND(), &rect); - ::FillRect ((HDC) event.GetDC()->GetHDC(), &rect, hBrush); - ::DeleteObject(hBrush); - ::SetMapMode((HDC) event.GetDC()->GetHDC(), mode); - } - else - Default(); -} - -long wxStaticBox::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) -{ - if (nMsg == WM_NCHITTEST) - { - int xPos = LOWORD(lParam); // horizontal position of cursor - int yPos = HIWORD(lParam); // vertical position of cursor - - ScreenToClient(&xPos, &yPos); - - // Make sure you can drag by the top of the groupbox, but let - // other (enclosed) controls get mouse events also - if (yPos < 10) - return (long)HTCLIENT; - } - - return wxControl::MSWWindowProc(nMsg, wParam, lParam); -} - diff --git a/src/msw/statbr95.cpp b/src/msw/statbr95.cpp deleted file mode 100644 index 312fabcea2..0000000000 --- a/src/msw/statbr95.cpp +++ /dev/null @@ -1,244 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: msw/statbr95.cpp -// Purpose: native implementation of wxStatusBar -// Author: Vadim Zeitlin -// Modified by: -// Created: 04.04.98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows license -/////////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "statbr95.h" -#endif - -// for compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ - #pragma hdrstop -#endif - -#ifndef WX_PRECOMP - #include "wx/setup.h" - #include "wx/frame.h" - #include "wx/settings.h" - #include "wx/dcclient.h" -#endif - -#ifdef __WIN95__ - -#include "wx/log.h" -#include "wx/generic/statusbr.h" -#include "wx/msw/statbr95.h" - -#include -#include - -#if !defined(__GNUWIN32__) || defined(__TWIN32__) -#include -#endif - -#ifdef GetClassInfo -#undef GetClassInfo -#endif - -#ifdef GetClassName -#undef GetClassName -#endif - -#if wxUSE_NATIVE_STATUSBAR - -#if !USE_SHARED_LIBRARY - IMPLEMENT_DYNAMIC_CLASS(wxStatusBar95, wxStatusBar); - - BEGIN_EVENT_TABLE(wxStatusBar95, wxStatusBar) - EVT_PAINT(wxWindow::OnPaint) - EVT_SIZE(wxStatusBar95::OnSize) - END_EVENT_TABLE() -#endif //USE_SHARED_LIBRARY - - -// ---------------------------------------------------------------------------- -// macros -// ---------------------------------------------------------------------------- - -// windowsx.h and commctrl.h don't define those, so we do it here -#define StatusBar_SetParts(h, n, w) SendMessage(h, SB_SETPARTS, (WPARAM)n, (LPARAM)w) -#define StatusBar_SetText(h, n, t) SendMessage(h, SB_SETTEXT, (WPARAM)n, (LPARAM)(LPCSTR)t) -#define StatusBar_GetTextLen(h, n) LOWORD(SendMessage(h, SB_GETTEXTLENGTH, (WPARAM)n, 0)) -#define StatusBar_GetText(h, n, s) LOWORD(SendMessage(h, SB_GETTEXT, (WPARAM)n, (LPARAM)(LPSTR)s)) - -#define hwnd ((HWND)m_hWnd) - -// ============================================================================ -// implementation -// ============================================================================ - -// ---------------------------------------------------------------------------- -// wxStatusBar95 class -// ---------------------------------------------------------------------------- - -wxStatusBar95::wxStatusBar95() -{ - SetParent(NULL); - m_hWnd = 0; - m_windowId = 0; -} - -wxStatusBar95::wxStatusBar95(wxWindow *parent, wxWindowID id, long style) -{ - Create(parent, id, style); -} - -bool wxStatusBar95::Create(wxWindow *parent, wxWindowID id, long style) -{ - SetParent(parent); - - if (id == -1) - m_windowId = NewControlId(); - else - m_windowId = id; - - DWORD wstyle = WS_CHILD | WS_VISIBLE; - if ( style & wxST_SIZEGRIP ) - wstyle |= SBARS_SIZEGRIP; - - m_hWnd = (WXHWND)CreateStatusWindow(wstyle, - "", - (HWND)parent->GetHWND(), - m_windowId); - if ( m_hWnd == 0 ) { - wxLogSysError("can't create status bar window"); - return FALSE; - } - - // this doesn't work: display problems (white 1-2 pixel borders...) - // SubclassWin(m_hWnd); - - return TRUE; -} - -void wxStatusBar95::CopyFieldsWidth(const int widths[]) -{ - if (widths && !m_statusWidths) - m_statusWidths = new int[m_nFields]; - - if ( widths != NULL ) { - for ( int i = 0; i < m_nFields; i++ ) - m_statusWidths[i] = widths[i]; - } - else { - delete [] m_statusWidths; - m_statusWidths = NULL; - } -} - -void wxStatusBar95::SetFieldsCount(int nFields, const int widths[]) -{ - wxASSERT( (nFields > 0) && (nFields < 255) ); - - m_nFields = nFields; - - CopyFieldsWidth(widths); - SetFieldsWidth(); -} - -void wxStatusBar95::SetStatusWidths(int n, const int widths[]) -{ - // @@ I don't understand what this function is for... - wxASSERT( n == m_nFields ); - - CopyFieldsWidth(widths); - SetFieldsWidth(); -} - -void wxStatusBar95::SetFieldsWidth() -{ - int *pWidths = new int[m_nFields]; - - int nWindowWidth, y; - GetClientSize(&nWindowWidth, &y); - - if ( m_statusWidths == NULL ) { - // default: all fields have the same width - int nWidth = nWindowWidth / m_nFields; - for ( int i = 0; i < m_nFields; i++ ) - pWidths[i] = (i + 1) * nWidth; - } - else { - // -1 doesn't mean the same thing for wxWindows and Win32, recalc - int nTotalWidth = 0, - nVarCount = 0, - i; - for ( i = 0; i < m_nFields; i++ ) { - if ( m_statusWidths[i] == -1 ) - nVarCount++; - else - nTotalWidth += m_statusWidths[i]; - } - - if ( nVarCount == 0 ) { - // wrong! at least one field must be of variable width - wxFAIL; - - nVarCount++; - } - - int nVarWidth = (nWindowWidth - nTotalWidth) / nVarCount; - - // do fill the array - int nCurPos = 0; - for ( i = 0; i < m_nFields; i++ ) { - if ( m_statusWidths[i] == -1 ) - nCurPos += nVarWidth; - else - nCurPos += m_statusWidths[i]; - pWidths[i] = nCurPos; - } - } - - if ( !StatusBar_SetParts(hwnd, m_nFields, pWidths) ) { - wxLogDebug("StatusBar_SetParts failed."); - } - - delete [] pWidths; -} - -void wxStatusBar95::SetStatusText(const wxString& strText, int nField) -{ - if ( !StatusBar_SetText(hwnd, nField, strText) ) { - wxLogDebug("StatusBar_SetText failed"); - } -} - -wxString wxStatusBar95::GetStatusText(int nField) const -{ - wxASSERT( (nField > -1) && (nField < m_nFields) ); - - wxString str(""); - int len = StatusBar_GetTextLen(hwnd, nField); - if (len > 0) - { - StatusBar_GetText(hwnd, nField, str.GetWriteBuf(len)); - str.UngetWriteBuf(); - } - return str; -} - -void wxStatusBar95::OnSize(wxSizeEvent& event) -{ - FORWARD_WM_SIZE(hwnd, SIZE_RESTORED, event.GetSize().x, event.GetSize().y, - SendMessage); - - // adjust fields widths to the new size - SetFieldsWidth(); -} - -#endif // wxUSE_NATIVE_STATUSBAR - -#else - #error "wxStatusBar95 is only available under Windows 95 and later." -#endif // __WIN95__ - diff --git a/src/msw/stattext.cpp b/src/msw/stattext.cpp deleted file mode 100644 index 47638caa1b..0000000000 --- a/src/msw/stattext.cpp +++ /dev/null @@ -1,213 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: stattext.cpp -// Purpose: wxStaticText -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "stattext.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/event.h" -#include "wx/app.h" -#include "wx/brush.h" -#endif - -#include "wx/stattext.h" -#include "wx/msw/private.h" -#include - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxStaticText, wxControl) -#endif - -bool wxStaticText::Create(wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - SetName(name); - if (parent) parent->AddChild(this); - - SetBackgroundColour(parent->GetBackgroundColour()) ; - SetForegroundColour(parent->GetForegroundColour()) ; - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - int x = pos.x; - int y = pos.y; - int width = size.x; - int height = size.y; - - m_windowStyle = style; - - long msStyle = WS_CHILD|WS_VISIBLE; - if (m_windowStyle & wxALIGN_CENTRE) - msStyle |= SS_CENTER; - else if (m_windowStyle & wxALIGN_RIGHT) - msStyle |= SS_RIGHT; - else - msStyle |= SS_LEFT; - - // Even with extended styles, need to combine with WS_BORDER - // for them to look right. - if ( wxStyleHasBorder(m_windowStyle) ) - msStyle |= WS_BORDER; - - m_hWnd = (WXHWND)::CreateWindowEx(MakeExtendedStyle(m_windowStyle), "STATIC", (const char *)label, - msStyle, - 0, 0, 0, 0, (HWND) parent->GetHWND(), (HMENU)m_windowId, - wxGetInstance(), NULL); - - wxCHECK_MSG( m_hWnd, FALSE, "Failed to create static ctrl" ); - -#if CTL3D -/* - if (!(GetParent()->GetWindowStyleFlag() & wxUSER_COLOURS)) - Ctl3dSubclassCtl(static_item); -*/ -#endif - - SubclassWin(m_hWnd); - - SetFont(parent->GetFont()); - SetSize(x, y, width, height); - - return TRUE; -} - -void wxStaticText::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - int currentX, currentY; - GetPosition(¤tX, ¤tY); - int x1 = x; - int y1 = y; - - if (x == -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) - x1 = currentX; - if (y == -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) - y1 = currentY; - - AdjustForParentClientOrigin(x1, y1, sizeFlags); - - int actualWidth = width; - int actualHeight = height; - - char buf[300]; - int current_width; - int cyf; - - ::GetWindowText((HWND) GetHWND(), buf, 300); - GetTextExtent(buf, ¤t_width, &cyf, NULL, NULL, & this->GetFont()); - - int ww, hh; - GetSize(&ww, &hh); - - // If we're prepared to use the existing width, then... - if (width == -1 && ((sizeFlags & wxSIZE_AUTO_WIDTH) != wxSIZE_AUTO_WIDTH)) - actualWidth = ww; - else if (width == -1) - { - int cx; - int cy; - wxGetCharSize(GetHWND(), &cx, &cy, & this->GetFont()); - actualWidth = (int)(current_width + cx) ; - } - - // If we're prepared to use the existing height, then... - if (height == -1 && ((sizeFlags & wxSIZE_AUTO_HEIGHT) != wxSIZE_AUTO_HEIGHT)) - actualHeight = hh; - else if (height == -1) - { - actualHeight = (int)(cyf) ; - } - - MoveWindow((HWND) GetHWND(), x1, y1, actualWidth, actualHeight, TRUE); -} - -void wxStaticText::SetLabel(const wxString& label) -{ - int w, h; - RECT rect; - - wxWindow *parent = GetParent(); - GetWindowRect((HWND) GetHWND(), &rect); - - // Since we now have the absolute screen coords, - // if there's a parent we must subtract its top left corner - POINT point; - point.x = rect.left; - point.y = rect.top; - if (parent) - { - ::ScreenToClient((HWND) parent->GetHWND(), &point); - } - - GetTextExtent(label, &w, &h, NULL, NULL, & this->GetFont()); - MoveWindow((HWND) GetHWND(), point.x, point.y, (int)(w + 10), (int)h, - TRUE); - SetWindowText((HWND) GetHWND(), (const char *)label); -} - -WXHBRUSH wxStaticText::OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor, - WXUINT message, WXWPARAM wParam, WXLPARAM lParam) -{ -/* -#if CTL3D - if ( m_useCtl3D ) - { - HBRUSH hbrush = Ctl3dCtlColorEx(message, wParam, lParam); - - if (hbrush != (HBRUSH) 0) - return hbrush; - else - return (HBRUSH)MSWDefWindowProc(message, wParam, lParam); - } -#endif -*/ - - if (GetParent()->GetTransparentBackground()) - SetBkMode((HDC) pDC, TRANSPARENT); - else - SetBkMode((HDC) pDC, OPAQUE); - - ::SetBkColor((HDC) pDC, RGB(GetBackgroundColour().Red(), GetBackgroundColour().Green(), GetBackgroundColour().Blue())); - ::SetTextColor((HDC) pDC, RGB(GetForegroundColour().Red(), GetForegroundColour().Green(), GetForegroundColour().Blue())); - - wxBrush *backgroundBrush = wxTheBrushList->FindOrCreateBrush(GetBackgroundColour(), wxSOLID); - - // Note that this will be cleaned up in wxApp::OnIdle, if backgroundBrush - // has a zero usage count. -// backgroundBrush->RealizeResource(); - return (WXHBRUSH) backgroundBrush->GetResourceHandle(); -} - -long wxStaticText::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) -{ - // Ensure that static items get messages. Some controls don't like this - // message to be intercepted (e.g. RichEdit), hence the tests. - if (nMsg == WM_NCHITTEST) - return (long)HTCLIENT; - - return wxWindow::MSWWindowProc(nMsg, wParam, lParam); -} - - diff --git a/src/msw/tabctrl.cpp b/src/msw/tabctrl.cpp deleted file mode 100644 index 9537e0fbc9..0000000000 --- a/src/msw/tabctrl.cpp +++ /dev/null @@ -1,475 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: tabctrl.cpp -// Purpose: wxTabCtrl -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "tabctrl.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#if defined(__WIN95__) - -#if !defined(__GNUWIN32__) && !defined(__SALFORDC__) -#include "malloc.h" -#endif - -#include - -#if (defined(__WIN95__) && !defined(__GNUWIN32__)) || defined(__TWIN32__) -#include -#endif - -#ifndef __TWIN32__ -#ifdef __GNUWIN32__ -#include "wx/msw/gnuwin32/extra.h" -#endif -#endif - -#include "wx/msw/dib.h" -#include "wx/msw/tabctrl.h" -#include "wx/app.h" -#include "wx/msw/private.h" -#include "wx/msw/imaglist.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxTabCtrl, wxControl) - -BEGIN_EVENT_TABLE(wxTabCtrl, wxControl) - EVT_SIZE(wxTabCtrl::OnSize) - EVT_PAINT(wxTabCtrl::OnPaint) - EVT_KILL_FOCUS(wxTabCtrl::OnKillFocus) - EVT_MOUSE_EVENTS(wxTabCtrl::OnMouseEvent) - EVT_SYS_COLOUR_CHANGED(wxTabCtrl::OnSysColourChanged) -END_EVENT_TABLE() -#endif - -wxTabCtrl::wxTabCtrl() -{ - m_imageList = NULL; -} - -bool wxTabCtrl::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, - long style, const wxString& name) -{ - m_imageList = NULL; - - m_backgroundColour = wxColour(GetRValue(GetSysColor(COLOR_BTNFACE)), - GetGValue(GetSysColor(COLOR_BTNFACE)), GetBValue(GetSysColor(COLOR_BTNFACE))); - m_foregroundColour = *wxBLACK ; - - SetName(name); - - int x = pos.x; - int y = pos.y; - int width = size.x; - int height = size.y; - - m_windowStyle = style; - - SetFont(* (wxTheFontList->FindOrCreateFont(11, wxSWISS, wxNORMAL, wxNORMAL))); - - SetParent(parent); - - DWORD msflags = 0; - if (style & wxBORDER) - msflags |= WS_BORDER; - msflags |= WS_CHILD | WS_VISIBLE; - - if (width <= 0) - width = 100; - if (height <= 0) - height = 30; - if (x < 0) - x = 0; - if (y < 0) - y = 0; - - m_windowId = (id < 0 ? NewControlId() : id); - - long tabStyle = 0; - if (m_windowStyle & wxTC_MULTILINE) - tabStyle |= TCS_MULTILINE; - if (m_windowStyle & wxTC_RIGHTJUSTIFY) - tabStyle |= TCS_RIGHTJUSTIFY; - if (m_windowStyle & wxTC_FIXEDWIDTH) - tabStyle |= TCS_FIXEDWIDTH; - if (m_windowStyle & wxTC_OWNERDRAW) - tabStyle |= TCS_OWNERDRAWFIXED; - - tabStyle |= TCS_TOOLTIPS; - - // Create the toolbar control. - HWND hWndTabCtrl = CreateWindowEx(0L, // No extended styles. - WC_TABCONTROL, // Class name for the tab control - "", // No default text. - WS_CHILD | WS_BORDER | WS_VISIBLE | tabStyle, // Styles and defaults. - x, y, width, height, // Standard size and position. - (HWND) parent->GetHWND(), // Parent window - (HMENU)m_windowId, // ID. - wxGetInstance(), // Current instance. - NULL ); // No class data. - - m_hWnd = (WXHWND) hWndTabCtrl; - if (parent) parent->AddChild(this); - - SubclassWin((WXHWND) hWndTabCtrl); - - return TRUE; -} - -wxTabCtrl::~wxTabCtrl() -{ - UnsubclassWin(); -} - -void wxTabCtrl::Command(wxCommandEvent& event) -{ -} - -bool wxTabCtrl::MSWCommand(WXUINT cmd, WXWORD id) -{ - return FALSE; -} - -bool wxTabCtrl::MSWNotify(WXWPARAM wParam, WXLPARAM lParam, WXLPARAM *result) -{ - wxTabEvent event(wxEVT_NULL, m_windowId); - wxEventType eventType = wxEVT_NULL; - NMHDR* hdr1 = (NMHDR*) lParam; - switch ( hdr1->code ) - { - case TCN_SELCHANGE: - eventType = wxEVT_COMMAND_TAB_SEL_CHANGED; - break; - - case TCN_SELCHANGING: - eventType = wxEVT_COMMAND_TAB_SEL_CHANGING; - break; - - case TTN_NEEDTEXT: - { - // TODO -// if (tool->m_shortHelpString != "") -// ttText->lpszText = (char *) (const char *)tool->m_shortHelpString; - } - - default : - return wxControl::MSWNotify(wParam, lParam, result); - } - - event.SetEventObject( this ); - event.SetEventType(eventType); - event.SetInt( (int) LOWORD(wParam) ) ; - - return ProcessEvent(event); -} - -// Responds to colour changes, and passes event on to children. -void wxTabCtrl::OnSysColourChanged(wxSysColourChangedEvent& event) -{ - m_backgroundColour = wxColour(GetRValue(GetSysColor(COLOR_BTNFACE)), - GetGValue(GetSysColor(COLOR_BTNFACE)), GetBValue(GetSysColor(COLOR_BTNFACE))); - - // Remap the buttons -// CreateTools(); - - Default(); - - Refresh(); - - // Propagate the event to the non-top-level children - wxWindow::OnSysColourChanged(event); -} - -// Delete all items -bool wxTabCtrl::DeleteAllItems() -{ - return ( TabCtrl_DeleteAllItems( (HWND) GetHWND() ) != FALSE ); -} - -// Delete an item -bool wxTabCtrl::DeleteItem(int item) -{ - return ( TabCtrl_DeleteItem( (HWND) GetHWND(), item) != FALSE ); -} - -// Get the selection -int wxTabCtrl::GetSelection() const -{ - return (int) TabCtrl_GetCurSel( (HWND) GetHWND() ); -} - -// Get the tab with the current keyboard focus -int wxTabCtrl::GetCurFocus() const -{ - return (int) TabCtrl_GetCurFocus( (HWND) GetHWND() ); -} - -// Get the associated image list -wxImageList* wxTabCtrl::GetImageList() const -{ - return m_imageList; -} - -// Get the number of items -int wxTabCtrl::GetItemCount() const -{ - return (int) TabCtrl_GetItemCount( (HWND) GetHWND() ); -} - -// Get the rect corresponding to the tab -bool wxTabCtrl::GetItemRect(int item, wxRect& wxrect) const -{ - RECT rect; - if ( !TabCtrl_GetItemRect( (HWND) GetHWND(), item, & rect) ) - return FALSE; - else - { - wxrect.x = rect.left; wxrect.y = rect.top; - wxrect.width = rect.right - rect.left; - wxrect.height = rect.bottom - rect.top; - return TRUE; - } -} - -// Get the number of rows -int wxTabCtrl::GetRowCount() const -{ - return (int) TabCtrl_GetRowCount( (HWND) GetHWND() ); -} - -// Get the item text -wxString wxTabCtrl::GetItemText(int item) const -{ - char buf[256]; - wxString str(""); - TC_ITEM tcItem; - tcItem.mask = TCIF_TEXT; - tcItem.pszText = buf; - tcItem.cchTextMax = 256; - - if (TabCtrl_GetItem( (HWND) GetHWND(), item, & tcItem) ) - str = tcItem.pszText; - - return str; -} - -// Get the item image -int wxTabCtrl::GetItemImage(int item) const -{ - TC_ITEM tcItem; - tcItem.mask = TCIF_IMAGE; - - if (TabCtrl_GetItem( (HWND) GetHWND(), item, & tcItem) ) - return tcItem.iImage; - else - return -1; -} - -// Get the item data -void* wxTabCtrl::GetItemData(int item) const -{ - TC_ITEM tcItem; - tcItem.mask = TCIF_PARAM; - - if (TabCtrl_GetItem( (HWND) GetHWND(), item, & tcItem) ) - return (void*) tcItem.lParam; - else - return 0; -} - -// Hit test -int wxTabCtrl::HitTest(const wxPoint& pt, long& flags) -{ - TC_HITTESTINFO hitTestInfo; - hitTestInfo.pt.x = pt.x; - hitTestInfo.pt.y = pt.y; - int item = TabCtrl_HitTest( (HWND) GetHWND(), & hitTestInfo ) ; - flags = 0; - - if ((hitTestInfo.flags & TCHT_NOWHERE) == TCHT_NOWHERE) - flags |= wxTAB_HITTEST_NOWHERE; - if ((hitTestInfo.flags & TCHT_ONITEMICON) == TCHT_ONITEMICON) - flags |= wxTAB_HITTEST_ONICON; - if ((hitTestInfo.flags & TCHT_ONITEMLABEL) == TCHT_ONITEMLABEL) - flags |= wxTAB_HITTEST_ONLABEL; - - return item; -} - -// Insert an item -bool wxTabCtrl::InsertItem(int item, const wxString& text, int imageId, void* data) -{ - char buf[256]; - TC_ITEM tcItem; - tcItem.mask = TCIF_PARAM; - tcItem.lParam = (long) data; - if (text != "") - { - tcItem.mask |= TCIF_TEXT; - strcpy(buf, (const char*) text); - tcItem.pszText = buf; - tcItem.cchTextMax = 256; - } - if (imageId != -1) - { - tcItem.mask |= TCIF_IMAGE; - tcItem.iImage = imageId; - } - - return (TabCtrl_InsertItem( (HWND) GetHWND(), item, & tcItem) != -1); -} - -// Set the selection -int wxTabCtrl::SetSelection(int item) -{ - return (int) TabCtrl_SetCurSel( (HWND) GetHWND(), item ); -} - -// Set the image list -void wxTabCtrl::SetImageList(wxImageList* imageList) -{ - m_imageList = imageList; - TabCtrl_SetImageList( (HWND) GetHWND(), (HIMAGELIST) imageList->GetHIMAGELIST() ); -} - -// Set the text for an item -bool wxTabCtrl::SetItemText(int item, const wxString& text) -{ - char buf[256]; - TC_ITEM tcItem; - tcItem.mask = TCIF_TEXT; - strcpy(buf, (const char*) text); - tcItem.pszText = buf; - tcItem.cchTextMax = 256; - - return ( TabCtrl_SetItem( (HWND) GetHWND(), item, & tcItem) != 0 ); -} - -// Set the image for an item -bool wxTabCtrl::SetItemImage(int item, int image) -{ - TC_ITEM tcItem; - tcItem.mask = TCIF_IMAGE; - tcItem.iImage = image; - - return ( TabCtrl_SetItem( (HWND) GetHWND(), item, & tcItem) != 0 ); -} - -// Set the data for an item -bool wxTabCtrl::SetItemData(int item, void* data) -{ - TC_ITEM tcItem; - tcItem.mask = TCIF_PARAM; - tcItem.lParam = (long) data; - - return ( TabCtrl_SetItem( (HWND) GetHWND(), item, & tcItem) != 0 ); -} - -// Set the size for a fixed-width tab control -void wxTabCtrl::SetItemSize(const wxSize& size) -{ - TabCtrl_SetItemSize( (HWND) GetHWND(), size.x, size.y ); -} - -// Set the padding between tabs -void wxTabCtrl::SetPadding(const wxSize& padding) -{ - TabCtrl_SetPadding( (HWND) GetHWND(), padding.x, padding.y ); -} - -#if 0 -// These are the default colors used to map the bitmap colors -// to the current system colors - -#define BGR_BUTTONTEXT (RGB(000,000,000)) // black -#define BGR_BUTTONSHADOW (RGB(128,128,128)) // dark grey -#define BGR_BUTTONFACE (RGB(192,192,192)) // bright grey -#define BGR_BUTTONHILIGHT (RGB(255,255,255)) // white -#define BGR_BACKGROUNDSEL (RGB(255,000,000)) // blue -#define BGR_BACKGROUND (RGB(255,000,255)) // magenta - -void wxMapBitmap(HBITMAP hBitmap, int width, int height) -{ - COLORMAP ColorMap[] = { - {BGR_BUTTONTEXT, COLOR_BTNTEXT}, // black - {BGR_BUTTONSHADOW, COLOR_BTNSHADOW}, // dark grey - {BGR_BUTTONFACE, COLOR_BTNFACE}, // bright grey - {BGR_BUTTONHILIGHT, COLOR_BTNHIGHLIGHT},// white - {BGR_BACKGROUNDSEL, COLOR_HIGHLIGHT}, // blue - {BGR_BACKGROUND, COLOR_WINDOW} // magenta - }; - - int NUM_MAPS = (sizeof(ColorMap)/sizeof(COLORMAP)); - int n; - for ( n = 0; n < NUM_MAPS; n++) - { - ColorMap[n].to = ::GetSysColor(ColorMap[n].to); - } - - HBITMAP hbmOld; - HDC hdcMem = CreateCompatibleDC(NULL); - - if (hdcMem) - { - hbmOld = SelectObject(hdcMem, hBitmap); - - int i, j, k; - for ( i = 0; i < width; i++) - { - for ( j = 0; j < height; j++) - { - COLORREF pixel = ::GetPixel(hdcMem, i, j); -/* - BYTE red = GetRValue(pixel); - BYTE green = GetGValue(pixel); - BYTE blue = GetBValue(pixel); -*/ - - for ( k = 0; k < NUM_MAPS; k ++) - { - if ( ColorMap[k].from == pixel ) - { - /* COLORREF actualPixel = */ ::SetPixel(hdcMem, i, j, ColorMap[k].to); - break; - } - } - } - } - - - SelectObject(hdcMem, hbmOld); - DeleteObject(hdcMem); - } - -} -#endif - -// Tab event -IMPLEMENT_DYNAMIC_CLASS(wxTabEvent, wxCommandEvent) - -wxTabEvent::wxTabEvent(wxEventType commandType, int id): - wxCommandEvent(commandType, id) -{ -} - - -#endif - // __WIN95__ diff --git a/src/msw/taskbar.cpp b/src/msw/taskbar.cpp deleted file mode 100644 index b34e42e02e..0000000000 --- a/src/msw/taskbar.cpp +++ /dev/null @@ -1,350 +0,0 @@ -///////////////////////////////////////////////////////////////////////// -// File: taskbar.cpp -// Purpose: Implements wxTaskBarIcon class for manipulating icons on -// the Windows task bar. -// Author: Julian Smart -// Modified by: -// Created: 24/3/98 -// RCS-ID: $Id$ -// Copyright: (c) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "taskbar.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/defs.h" -#include "wx/window.h" -#include "wx/frame.h" -#include "wx/utils.h" -#endif - -#if defined(__WIN95__) && !defined(__TWIN32__) - -#include -#include -#include -#include - -#ifndef __TWIN32__ -#ifdef __GNUWIN32__ -#include -#endif -#endif - -#ifdef __SALFORDC__ -#include -#endif - -LRESULT APIENTRY _EXPORT wxTaskBarIconWindowProc( HWND hWnd, unsigned msg, - UINT wParam, LONG lParam ); - -char *wxTaskBarWindowClass = "wxTaskBarWindowClass"; - -wxList wxTaskBarIcon::sm_taskBarIcons; -bool wxTaskBarIcon::sm_registeredClass = FALSE; -UINT wxTaskBarIcon::sm_taskbarMsg = 0; - - -#if !USE_SHARED_LIBRARY -BEGIN_EVENT_TABLE(wxTaskBarIcon, wxEvtHandler) - EVT_TASKBAR_MOVE (wxTaskBarIcon::_OnMouseMove) - EVT_TASKBAR_LEFT_DOWN (wxTaskBarIcon::_OnLButtonDown) - EVT_TASKBAR_LEFT_UP (wxTaskBarIcon::_OnLButtonUp) - EVT_TASKBAR_RIGHT_DOWN (wxTaskBarIcon::_OnRButtonDown) - EVT_TASKBAR_RIGHT_UP (wxTaskBarIcon::_OnRButtonUp) - EVT_TASKBAR_LEFT_DCLICK (wxTaskBarIcon::_OnLButtonDClick) - EVT_TASKBAR_RIGHT_DCLICK (wxTaskBarIcon::_OnRButtonDClick) -END_EVENT_TABLE() - - -IMPLEMENT_DYNAMIC_CLASS(wxTaskBarIcon, wxEvtHandler) -#endif - - -wxTaskBarIcon::wxTaskBarIcon(void) -{ - m_hWnd = 0; - m_iconAdded = FALSE; - - AddObject(this); - - if (RegisterWindowClass()) - m_hWnd = CreateTaskBarWindow(); -} - -wxTaskBarIcon::~wxTaskBarIcon(void) -{ - RemoveObject(this); - - if (m_iconAdded) - { - RemoveIcon(); - } - - if (m_hWnd) - { - ::DestroyWindow((HWND) m_hWnd); - m_hWnd = 0; - } -} - -// Operations -bool wxTaskBarIcon::SetIcon(const wxIcon& icon, const wxString& tooltip) -{ - if (!IsOK()) - return FALSE; - - NOTIFYICONDATA notifyData; - - memset(¬ifyData, 0, sizeof(notifyData)); - notifyData.cbSize = sizeof(notifyData); - notifyData.hWnd = (HWND) m_hWnd; - notifyData.uCallbackMessage = sm_taskbarMsg; - notifyData.uFlags = NIF_MESSAGE ; - if (icon.Ok()) - { - notifyData.uFlags |= NIF_ICON; - notifyData.hIcon = (HICON) icon.GetHICON(); - } - - if (((const char*) tooltip != NULL) && (tooltip != "")) - { - notifyData.uFlags |= NIF_TIP ; - lstrcpyn(notifyData.szTip, (char*) (const char*) tooltip, sizeof(notifyData.szTip)); - } - - notifyData.uID = 99; - - if (m_iconAdded) - return (Shell_NotifyIcon(NIM_MODIFY, & notifyData) != 0); - else - { - m_iconAdded = (Shell_NotifyIcon(NIM_ADD, & notifyData) != 0); - return m_iconAdded; - } -} - -bool wxTaskBarIcon::RemoveIcon(void) -{ - if (!m_iconAdded) - return FALSE; - - NOTIFYICONDATA notifyData; - - memset(¬ifyData, 0, sizeof(notifyData)); - notifyData.cbSize = sizeof(notifyData); - notifyData.hWnd = (HWND) m_hWnd; - notifyData.uCallbackMessage = sm_taskbarMsg; - notifyData.uFlags = NIF_MESSAGE; - notifyData.hIcon = 0 ; // hIcon; - notifyData.uID = 99; - m_iconAdded = FALSE; - - return (Shell_NotifyIcon(NIM_DELETE, & notifyData) != 0); -} - -bool wxTaskBarIcon::PopupMenu(wxMenu *menu) //, int x, int y); -{ - bool rval = FALSE; - wxWindow* win; - int x, y; - wxGetMousePosition(&x, &y); - - // is wxFrame the best window type to use??? - win = new wxFrame(NULL, -1, "", wxPoint(x,y), wxSize(-1,-1), 0); - win->PushEventHandler(this); - - rval = win->PopupMenu(menu, 0, 0); - - win->PopEventHandler(FALSE); - win->Destroy(); - return rval; -} - - -// Overridables -void wxTaskBarIcon::OnMouseMove(wxEvent&) -{ -} - -void wxTaskBarIcon::OnLButtonDown(wxEvent&) -{ -} - -void wxTaskBarIcon::OnLButtonUp(wxEvent&) -{ -} - -void wxTaskBarIcon::OnRButtonDown(wxEvent&) -{ -} - -void wxTaskBarIcon::OnRButtonUp(wxEvent&) -{ -} - -void wxTaskBarIcon::OnLButtonDClick(wxEvent&) -{ -} - -void wxTaskBarIcon::OnRButtonDClick(wxEvent&) -{ -} - -void wxTaskBarIcon::_OnMouseMove(wxEvent& e) { OnMouseMove(e); } -void wxTaskBarIcon::_OnLButtonDown(wxEvent& e) { OnLButtonDown(e); } -void wxTaskBarIcon::_OnLButtonUp(wxEvent& e) { OnLButtonUp(e); } -void wxTaskBarIcon::_OnRButtonDown(wxEvent& e) { OnRButtonDown(e); } -void wxTaskBarIcon::_OnRButtonUp(wxEvent& e) { OnRButtonUp(e); } -void wxTaskBarIcon::_OnLButtonDClick(wxEvent& e) { OnLButtonDClick(e); } -void wxTaskBarIcon::_OnRButtonDClick(wxEvent& e) { OnRButtonDClick(e); } - - -wxTaskBarIcon* wxTaskBarIcon::FindObjectForHWND(WXHWND hWnd) -{ - wxNode*node = sm_taskBarIcons.First(); - while (node) - { - wxTaskBarIcon* obj = (wxTaskBarIcon*) node->Data(); - if (obj->GetHWND() == hWnd) - return obj; - node = node->Next(); - } - return NULL; -} - -void wxTaskBarIcon::AddObject(wxTaskBarIcon* obj) -{ - sm_taskBarIcons.Append(obj); -} - -void wxTaskBarIcon::RemoveObject(wxTaskBarIcon* obj) -{ - sm_taskBarIcons.DeleteObject(obj); -} - -bool wxTaskBarIcon::RegisterWindowClass() -{ - if (sm_registeredClass) - return TRUE; - - // Also register the taskbar message here - sm_taskbarMsg = ::RegisterWindowMessage("wxTaskBarIconMessage"); - - WNDCLASS wc; - bool rc; - - HINSTANCE hInstance = GetModuleHandle(NULL); - - /* - * set up and register window class - */ - wc.style = CS_HREDRAW | CS_VREDRAW; - wc.lpfnWndProc = (WNDPROC) wxTaskBarIconWindowProc; - wc.cbClsExtra = 0; - wc.cbWndExtra = 0; - wc.hInstance = hInstance; - wc.hIcon = 0; - wc.hCursor = 0; - wc.hbrBackground = 0; - wc.lpszMenuName = NULL; - wc.lpszClassName = wxTaskBarWindowClass ; - rc = (::RegisterClass( &wc ) != 0); - - sm_registeredClass = (rc != 0); - - return( (rc != 0) ); -} - -WXHWND wxTaskBarIcon::CreateTaskBarWindow() -{ - HINSTANCE hInstance = GetModuleHandle(NULL); - - HWND hWnd = CreateWindowEx (0, wxTaskBarWindowClass, - "wxTaskBarWindow", - WS_OVERLAPPED, - 0, - 0, - 10, - 10, - NULL, - (HMENU) 0, - hInstance, - NULL); - - return (WXHWND) hWnd; -} - -long wxTaskBarIcon::WindowProc( WXHWND hWnd, unsigned int msg, unsigned int wParam, long lParam ) -{ - wxEventType eventType = 0; - - if (msg != sm_taskbarMsg) - return DefWindowProc((HWND) hWnd, msg, wParam, lParam); - - switch (lParam) - { - case WM_LBUTTONDOWN: - eventType = wxEVT_TASKBAR_LEFT_DOWN; - break; - - case WM_LBUTTONUP: - eventType = wxEVT_TASKBAR_LEFT_UP; - break; - - case WM_RBUTTONDOWN: - eventType = wxEVT_TASKBAR_RIGHT_DOWN; - break; - - case WM_RBUTTONUP: - eventType = wxEVT_TASKBAR_RIGHT_UP; - break; - - case WM_LBUTTONDBLCLK: - eventType = wxEVT_TASKBAR_LEFT_DCLICK; - break; - - case WM_RBUTTONDBLCLK: - eventType = wxEVT_TASKBAR_RIGHT_DCLICK; - break; - - case WM_MOUSEMOVE: - eventType = wxEVT_TASKBAR_MOVE; - break; - - default: - break; - } - - if (eventType) { - wxEvent event; - event.SetEventType(eventType); - event.SetEventObject(this); - - ProcessEvent(event); - } - return 0; -} - -LRESULT APIENTRY _EXPORT wxTaskBarIconWindowProc( HWND hWnd, unsigned msg, - UINT wParam, LONG lParam ) -{ - wxTaskBarIcon* obj = wxTaskBarIcon::FindObjectForHWND((WXHWND) hWnd); - if (obj) - return obj->WindowProc((WXHWND) hWnd, msg, wParam, lParam); - else - return DefWindowProc(hWnd, msg, wParam, lParam); -} - -#endif - // __WIN95__ diff --git a/src/msw/tbar95.cpp b/src/msw/tbar95.cpp deleted file mode 100644 index d83469d6a6..0000000000 --- a/src/msw/tbar95.cpp +++ /dev/null @@ -1,626 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: tbar95.cpp -// Purpose: wxToolBar95 -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "tbar95.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#if wxUSE_BUTTONBAR && wxUSE_TOOLBAR && defined(__WIN95__) - -#if !defined(__GNUWIN32__) && !defined(__SALFORDC__) -#include "malloc.h" -#endif - -#include - -#if (defined(__WIN95__) && !defined(__GNUWIN32__)) || defined(__TWIN32__) -#include -#endif - -#ifndef __TWIN32__ -#ifdef __GNUWIN32__ -#include "wx/msw/gnuwin32/extra.h" -#endif -#endif - -#include "wx/msw/dib.h" -#include "wx/tbar95.h" -#include "wx/app.h" -#include "wx/msw/private.h" - -// Styles -#ifndef TBSTYLE_FLAT -#define TBSTYLE_LIST 0x1000 -#define TBSTYLE_FLAT 0x0800 -#define TBSTYLE_TRANSPARENT 0x8000 -#endif - // use TBSTYLE_TRANSPARENT if you use TBSTYLE_FLAT - -// Messages -#ifndef TB_GETSTYLE -#define TB_GETSTYLE (WM_USER + 57) -#define TB_SETSTYLE (WM_USER + 56) -#endif - -/* Hint from a newsgroup for custom flatbar drawing: -Set the TBSTYLE_CUSTOMERASE style, then handle the -NM_CUSTOMDRAW message and do your custom drawing. -*/ - -#define DEFAULTBITMAPX 16 -#define DEFAULTBITMAPY 15 -#define DEFAULTBUTTONX 24 -#define DEFAULTBUTTONY 24 -#define DEFAULTBARHEIGHT 27 - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxToolBar95, wxToolBarBase) -#endif - -BEGIN_EVENT_TABLE(wxToolBar95, wxToolBarBase) - EVT_SIZE(wxToolBar95::OnSize) - EVT_PAINT(wxToolBar95::OnPaint) - EVT_MOUSE_EVENTS(wxToolBar95::OnMouseEvent) - EVT_KILL_FOCUS(wxToolBar95::OnKillFocus) - EVT_SYS_COLOUR_CHANGED(wxToolBar95::OnSysColourChanged) -END_EVENT_TABLE() - -static void wxMapBitmap(HBITMAP hBitmap, int width, int height); - -wxToolBar95::wxToolBar95() -{ - m_maxWidth = -1; - m_maxHeight = -1; - m_hBitmap = 0; - m_defaultWidth = DEFAULTBITMAPX; - m_defaultHeight = DEFAULTBITMAPY; -} - -bool wxToolBar95::Create(wxWindow *parent, - wxWindowID id, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - m_backgroundColour = wxColour(GetRValue(GetSysColor(COLOR_BTNFACE)), - GetGValue(GetSysColor(COLOR_BTNFACE)), - GetBValue(GetSysColor(COLOR_BTNFACE))); - m_foregroundColour = *wxBLACK ; - - wxASSERT_MSG( (style & wxTB_VERTICAL) == 0, - "Sorry, wxToolBar95 under Windows 95 only " - "supports horizontal orientation." ); - - m_maxWidth = -1; - m_maxHeight = -1; - - m_hBitmap = 0; - - m_defaultWidth = DEFAULTBITMAPX; - m_defaultHeight = DEFAULTBITMAPY; - SetName(name); - - m_windowStyle = style; - - SetFont(wxSystemSettings::GetSystemFont(wxSYS_DEFAULT_GUI_FONT)); - SetParent(parent); - - int x = pos.x; - int y = pos.y; - int width = size.x; - int height = size.y; - - if (width <= 0) - width = 100; - if (height <= 0) - height = 30; - if (x < 0) - x = 0; - if (y < 0) - y = 0; - - m_windowId = (id < 0 ? NewControlId() : id); - DWORD msflags = 0; - if (style & wxBORDER) - msflags |= WS_BORDER; - msflags |= WS_CHILD | WS_VISIBLE | TBSTYLE_TOOLTIPS; - - if (style & wxTB_FLAT) - { - if (wxTheApp->GetComCtl32Version() > 400) - msflags |= TBSTYLE_FLAT; - } - - // Create the toolbar control. - HWND hWndToolbar = CreateWindowEx - ( - 0L, // No extended styles. - TOOLBARCLASSNAME, // Class name for the toolbar. - "", // No default text. - msflags, // Styles - x, y, width, height, // Standard toolbar size and position. - (HWND) parent->GetHWND(), // Parent window of the toolbar. - (HMENU)m_windowId, // Toolbar ID. - wxGetInstance(), // Current instance. - NULL // No class data. - ); - - wxCHECK_MSG( hWndToolbar, FALSE, "Toolbar creation failed" ); - - // Toolbar-specific initialisation - ::SendMessage(hWndToolbar, TB_BUTTONSTRUCTSIZE, - (WPARAM)sizeof(TBBUTTON), (LPARAM)0); - - m_hWnd = (WXHWND) hWndToolbar; - if (parent) - parent->AddChild(this); - - SubclassWin((WXHWND)hWndToolbar); - - return TRUE; -} - -wxToolBar95::~wxToolBar95() -{ - UnsubclassWin(); - - if (m_hBitmap) - { - ::DeleteObject((HBITMAP) m_hBitmap); - m_hBitmap = 0; - } -} - -bool wxToolBar95::CreateTools() -{ - if (m_tools.Number() == 0) - return FALSE; - - HBITMAP oldToolBarBitmap = (HBITMAP) m_hBitmap; - - int totalBitmapWidth = (int)(m_defaultWidth * m_tools.Number()); - int totalBitmapHeight = (int)m_defaultHeight; - - // Create a bitmap for all the tool bitmaps - HDC dc = ::GetDC(NULL); - m_hBitmap = (WXHBITMAP) ::CreateCompatibleBitmap(dc, totalBitmapWidth, totalBitmapHeight); - ::ReleaseDC(NULL, dc); - - // Now blit all the tools onto this bitmap - HDC memoryDC = ::CreateCompatibleDC(NULL); - HBITMAP oldBitmap = (HBITMAP) ::SelectObject(memoryDC, (HBITMAP) m_hBitmap); - - HDC memoryDC2 = ::CreateCompatibleDC(NULL); - int x = 0; - wxNode *node = m_tools.First(); - int noButtons = 0; - while (node) - { - wxToolBarTool *tool = (wxToolBarTool *)node->Data(); - if ((tool->m_toolStyle != wxTOOL_STYLE_SEPARATOR) && tool->m_bitmap1.Ok() && tool->m_bitmap1.GetHBITMAP()) - { -// wxPalette *palette = tool->m_bitmap1->GetPalette(); - - HBITMAP oldBitmap2 = (HBITMAP) ::SelectObject(memoryDC2, (HBITMAP) tool->m_bitmap1.GetHBITMAP()); - /* int bltResult = */ - BitBlt(memoryDC, x, 0, (int) m_defaultWidth, (int) m_defaultHeight, memoryDC2, - 0, 0, SRCCOPY); - ::SelectObject(memoryDC2, oldBitmap2); - x += (int)m_defaultWidth; - noButtons ++; - } - node = node->Next(); - } - ::SelectObject(memoryDC, oldBitmap); - ::DeleteDC(memoryDC); - ::DeleteDC(memoryDC2); - - // Map to system colours - wxMapBitmap((HBITMAP) m_hBitmap, totalBitmapWidth, totalBitmapHeight); - - if ( oldToolBarBitmap ) - { - TBREPLACEBITMAP replaceBitmap; - replaceBitmap.hInstOld = NULL; - replaceBitmap.hInstNew = NULL; - replaceBitmap.nIDOld = (UINT) oldToolBarBitmap; - replaceBitmap.nIDNew = (UINT) (HBITMAP) m_hBitmap; - replaceBitmap.nButtons = noButtons; - if (::SendMessage((HWND) GetHWND(), TB_REPLACEBITMAP, (WPARAM) 0, (LPARAM) &replaceBitmap) == -1) - wxMessageBox("Could not add bitmap to toolbar"); - - ::DeleteObject((HBITMAP) oldToolBarBitmap); - - // Now delete all the buttons - int i = 0; - while ( TRUE ) - { - // TODO: What about separators???? They don't have an id! - if ( ! ::SendMessage( (HWND) GetHWND(), TB_DELETEBUTTON, i, 0 ) ) - break; - } - } - else - { - TBADDBITMAP addBitmap; - addBitmap.hInst = 0; - addBitmap.nID = (UINT)m_hBitmap; - if (::SendMessage((HWND) GetHWND(), TB_ADDBITMAP, (WPARAM) noButtons, (LPARAM) &addBitmap) == -1) - wxMessageBox("Could not add bitmap to toolbar"); - } - - // Now add the buttons. - TBBUTTON buttons[50]; - - node = m_tools.First(); - int i = 0; - int bitmapId = 0; - while (node) - { - wxToolBarTool *tool = (wxToolBarTool *)node->Data(); - if (tool->m_toolStyle == wxTOOL_STYLE_SEPARATOR) - { - buttons[i].iBitmap = 0; - buttons[i].idCommand = 0; - - buttons[i].fsState = TBSTATE_ENABLED; - buttons[i].fsStyle = TBSTYLE_SEP; - buttons[i].dwData = 0L; - buttons[i].iString = 0; - } - else - { - buttons[i].iBitmap = bitmapId; - buttons[i].idCommand = tool->m_index; - - buttons[i].fsState = 0; - if (tool->m_enabled) - buttons[i].fsState |= TBSTATE_ENABLED; - if (tool->m_toggleState) - buttons[i].fsState |= TBSTATE_CHECKED; - buttons[i].fsStyle = tool->m_isToggle ? TBSTYLE_CHECK : TBSTYLE_BUTTON; - buttons[i].dwData = 0L; - buttons[i].iString = 0; - - bitmapId ++; - } - - i ++; - node = node->Next(); - } - - long rc = ::SendMessage((HWND) GetHWND(), TB_ADDBUTTONS, (WPARAM)i, (LPARAM)& buttons); - - wxCHECK_MSG( rc, FALSE, "failed to add buttons to the toolbar" ); - - (void)::SendMessage((HWND) GetHWND(), TB_AUTOSIZE, (WPARAM)0, (LPARAM) 0); - - SetRows(m_maxRows); - - return TRUE; -} - -bool wxToolBar95::MSWCommand(WXUINT cmd, WXWORD id) -{ - wxNode *node = m_tools.Find((long)id); - if (!node) - return FALSE; - wxToolBarTool *tool = (wxToolBarTool *)node->Data(); - if (tool->m_isToggle) - tool->m_toggleState = (1 == (1 & (int)::SendMessage((HWND) GetHWND(), TB_GETSTATE, (WPARAM) id, (LPARAM) 0))); - - BOOL ret = OnLeftClick((int)id, tool->m_toggleState); - if (ret == FALSE && tool->m_isToggle) - { - tool->m_toggleState = !tool->m_toggleState; - ::SendMessage((HWND) GetHWND(), TB_CHECKBUTTON, (WPARAM)id, (LPARAM)MAKELONG(tool->m_toggleState, 0)); - } - return TRUE; -} - -bool wxToolBar95::MSWNotify(WXWPARAM WXUNUSED(wParam), - WXLPARAM lParam, - WXLPARAM *result) -{ - // First check if this applies to us - NMHDR *hdr = (NMHDR *)lParam; - - // the tooltips control created by the toolbar is sometimes Unicode, even in - // an ANSI application - if ( (hdr->code != TTN_NEEDTEXTA) && (hdr->code != TTN_NEEDTEXTW) ) - return FALSE; - - HWND toolTipWnd = (HWND)::SendMessage((HWND)GetHWND(), TB_GETTOOLTIPS, 0, 0); - if ( toolTipWnd != hdr->hwndFrom ) - return FALSE; - - LPTOOLTIPTEXT ttText = (LPTOOLTIPTEXT)lParam; - int id = (int)ttText->hdr.idFrom; - wxNode *node = m_tools.Find((long)id); - if (!node) - return FALSE; - - wxToolBarTool *tool = (wxToolBarTool *)node->Data(); - - if ( tool->m_shortHelpString != "" ) - { - if ( hdr->code == TTN_NEEDTEXTA ) - { - ttText->lpszText = (char *)(const char *)tool->m_shortHelpString; - } -#if (_WIN32_IE >= 0x0300) - else - { - // FIXME this is a temp hack only until I understand better what - // must be done in both ANSI and Unicode builds - size_t lenAnsi = tool->m_shortHelpString.Len(); - size_t lenUnicode = mbstowcs(NULL, tool->m_shortHelpString, lenAnsi); - wchar_t *pwz = new wchar_t[lenUnicode + 1]; - mbstowcs(pwz, tool->m_shortHelpString, lenAnsi + 1); - memcpy(ttText->szText, pwz, - (sizeof(ttText->szText) - 1)/sizeof(ttText->szText[0])); - ttText->szText[WXSIZEOF(ttText->szText)] = 0; - - delete [] pwz; - } -#endif // _WIN32_IE >= 0x0300 - } - - // For backward compatibility... - OnMouseEnter(tool->m_index); - - return TRUE; -} - -void wxToolBar95::SetToolBitmapSize(const wxSize& size) -{ - m_defaultWidth = size.x; - m_defaultHeight = size.y; - ::SendMessage((HWND) GetHWND(), TB_SETBITMAPSIZE, 0, (LPARAM) MAKELONG ((int)size.x, (int)size.y)); -} - -void wxToolBar95::SetRows(int nRows) -{ - RECT rect; - ::SendMessage((HWND) GetHWND(), TB_SETROWS, MAKEWPARAM(nRows, TRUE), (LPARAM) & rect); - m_maxWidth = (rect.right - rect.left + 2); - m_maxHeight = (rect.bottom - rect.top + 2); -} - -wxSize wxToolBar95::GetMaxSize() const -{ - if ((m_maxWidth == -1) || (m_maxHeight == -1)) - { - RECT rect; - ::SendMessage((HWND) GetHWND(), TB_SETROWS, MAKEWPARAM(m_maxRows, TRUE), (LPARAM) & rect); - ((wxToolBar95 *)this)->m_maxWidth = (rect.right - rect.left + 2); // ??? - ((wxToolBar95 *)this)->m_maxHeight = (rect.bottom - rect.top + 2); // ??? - } - return wxSize(m_maxWidth, m_maxHeight); -} - -void wxToolBar95::GetSize(int *w, int *h) const -{ - wxWindow::GetSize(w, h); - // For some reason, the returned height is several pixels bigger than that - // displayed! - *h -= 2; -} - -// The button size is bigger than the bitmap size -wxSize wxToolBar95::GetToolSize() const -{ - return wxSize(m_defaultWidth + 8, m_defaultHeight + 7); -} - -void wxToolBar95::EnableTool(int toolIndex, bool enable) -{ - wxNode *node = m_tools.Find((long)toolIndex); - if (node) - { - wxToolBarTool *tool = (wxToolBarTool *)node->Data(); - tool->m_enabled = enable; - ::SendMessage((HWND) GetHWND(), TB_ENABLEBUTTON, (WPARAM)toolIndex, (LPARAM)MAKELONG(enable, 0)); - } -} - -void wxToolBar95::ToggleTool(int toolIndex, bool toggle) -{ - wxNode *node = m_tools.Find((long)toolIndex); - if (node) - { - wxToolBarTool *tool = (wxToolBarTool *)node->Data(); - if (tool->m_isToggle) - { - tool->m_toggleState = toggle; - ::SendMessage((HWND) GetHWND(), TB_CHECKBUTTON, (WPARAM)toolIndex, (LPARAM)MAKELONG(toggle, 0)); - } - } -} - -bool wxToolBar95::GetToolState(int toolIndex) const -{ - return (::SendMessage((HWND) GetHWND(), TB_ISBUTTONCHECKED, (WPARAM)toolIndex, (LPARAM)0) != 0); -} - -void wxToolBar95::ClearTools() -{ - // TODO: Don't know how to reset the toolbar bitmap, as yet. - // But adding tools and calling CreateTools should probably - // recreate a buttonbar OK. - wxToolBarBase::ClearTools(); -} - -// If pushedBitmap is NULL, a reversed version of bitmap is -// created and used as the pushed/toggled image. -// If toggle is TRUE, the button toggles between the two states. -wxToolBarTool *wxToolBar95::AddTool(int index, const wxBitmap& bitmap, const wxBitmap& pushedBitmap, - bool toggle, long xPos, long yPos, wxObject *clientData, const wxString& helpString1, const wxString& helpString2) -{ - wxToolBarTool *tool = new wxToolBarTool(index, bitmap, wxNullBitmap, toggle, xPos, yPos, helpString1, helpString2); - tool->m_clientData = clientData; - - if (xPos > -1) - tool->m_x = xPos; - else - tool->m_x = m_xMargin; - - if (yPos > -1) - tool->m_y = yPos; - else - tool->m_y = m_yMargin; - - tool->SetSize(GetToolSize().x, GetToolSize().y); - - m_tools.Append((long)index, tool); - return tool; -} - -// Responds to colour changes, and passes event on to children. -void wxToolBar95::OnSysColourChanged(wxSysColourChangedEvent& event) -{ - m_backgroundColour = wxColour(GetRValue(GetSysColor(COLOR_BTNFACE)), - GetGValue(GetSysColor(COLOR_BTNFACE)), GetBValue(GetSysColor(COLOR_BTNFACE))); - - // Remap the buttons - CreateTools(); - - Default(); - - Refresh(); - - // Propagate the event to the non-top-level children - wxWindow::OnSysColourChanged(event); -} - -void wxToolBar95::OnMouseEvent(wxMouseEvent& event) -{ - if (event.RightDown()) - { - // For now, we don't have an id. Later we could - // try finding the tool. - OnRightClick((int)-1, event.GetX(), event.GetY()); - } - else - { - Default(); - } -} - -// These are the default colors used to map the bitmap colors -// to the current system colors - -#define BGR_BUTTONTEXT (RGB(000,000,000)) // black -#define BGR_BUTTONSHADOW (RGB(128,128,128)) // dark grey -#define BGR_BUTTONFACE (RGB(192,192,192)) // bright grey -#define BGR_BUTTONHILIGHT (RGB(255,255,255)) // white -#define BGR_BACKGROUNDSEL (RGB(255,000,000)) // blue -#define BGR_BACKGROUND (RGB(255,000,255)) // magenta - -void wxMapBitmap(HBITMAP hBitmap, int width, int height) -{ - COLORMAP ColorMap[] = { - {BGR_BUTTONTEXT, COLOR_BTNTEXT}, // black - {BGR_BUTTONSHADOW, COLOR_BTNSHADOW}, // dark grey - {BGR_BUTTONFACE, COLOR_BTNFACE}, // bright grey - {BGR_BUTTONHILIGHT, COLOR_BTNHIGHLIGHT},// white - {BGR_BACKGROUNDSEL, COLOR_HIGHLIGHT}, // blue - {BGR_BACKGROUND, COLOR_WINDOW} // magenta - }; - - int NUM_MAPS = (sizeof(ColorMap)/sizeof(COLORMAP)); - int n; - for ( n = 0; n < NUM_MAPS; n++) - { - ColorMap[n].to = ::GetSysColor(ColorMap[n].to); - } - - HBITMAP hbmOld; - HDC hdcMem = CreateCompatibleDC(NULL); - - if (hdcMem) - { - hbmOld = (HBITMAP) SelectObject(hdcMem, hBitmap); - - int i, j, k; - for ( i = 0; i < width; i++) - { - for ( j = 0; j < height; j++) - { - COLORREF pixel = ::GetPixel(hdcMem, i, j); -/* - BYTE red = GetRValue(pixel); - BYTE green = GetGValue(pixel); - BYTE blue = GetBValue(pixel); -*/ - - for ( k = 0; k < NUM_MAPS; k ++) - { - if ( ColorMap[k].from == pixel ) - { - /* COLORREF actualPixel = */ ::SetPixel(hdcMem, i, j, ColorMap[k].to); - break; - } - } - } - } - - - SelectObject(hdcMem, hbmOld); - DeleteObject(hdcMem); - } - -} - -// Some experiments... -#if 0 - // What we want to do is create another bitmap which has a depth of 4, - // and set the bits. So probably we want to convert this HBITMAP into a - // DIB, then call SetDIBits. - // AAAGH. The stupid thing is that if newBitmap has a depth of 4 (less than that of - // the screen), then SetDIBits fails. - HBITMAP newBitmap = ::CreateBitmap(totalBitmapWidth, totalBitmapHeight, 1, 4, NULL); - HANDLE newDIB = ::BitmapToDIB((HBITMAP) m_hBitmap, NULL); - LPBITMAPINFOHEADER lpbmi = (LPBITMAPINFOHEADER) GlobalLock(newDIB); - - dc = ::GetDC(NULL); -// LPBITMAPINFOHEADER lpbmi = (LPBITMAPINFOHEADER) newDIB; - - int result = ::SetDIBits(dc, newBitmap, 0, lpbmi->biHeight, FindDIBBits((LPSTR)lpbmi), (LPBITMAPINFO)lpbmi, - DIB_PAL_COLORS); - DWORD err = GetLastError(); - - ::ReleaseDC(NULL, dc); - - // Delete the DIB - GlobalUnlock (newDIB); - GlobalFree (newDIB); - -// WXHBITMAP hBitmap2 = wxCreateMappedBitmap((WXHINSTANCE) wxGetInstance(), (WXHBITMAP) m_hBitmap); - // Substitute our new bitmap for the old one - ::DeleteObject((HBITMAP) m_hBitmap); - m_hBitmap = (WXHBITMAP) newBitmap; -#endif - - -#endif diff --git a/src/msw/tbarmsw.cpp b/src/msw/tbarmsw.cpp deleted file mode 100644 index 625cfafd02..0000000000 --- a/src/msw/tbarmsw.cpp +++ /dev/null @@ -1,955 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: tbarmsw.cpp -// Purpose: wxToolBarMSW -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "tbarmsw.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#if wxUSE_BUTTONBAR && wxUSE_TOOLBAR - -#if !defined(__GNUWIN32__) && !defined(__SALFORDC__) -#include "malloc.h" -#endif - -#if !defined(__MWERKS__) && !defined(__SALFORDC__) -#include -#endif - -#include - -#include "wx/tbarmsw.h" -#include "wx/event.h" -#include "wx/app.h" -#include "wx/bitmap.h" -#include "wx/msw/private.h" -#include "wx/msw/dib.h" - -#define DEFAULTBITMAPX 16 -#define DEFAULTBITMAPY 15 -#define DEFAULTBUTTONX 24 -#define DEFAULTBUTTONY 22 -#define DEFAULTBARHEIGHT 27 - -/////// Non-Windows 95 implementation - -#if !wxUSE_IMAGE_LOADING_IN_MSW -#error If wxUSE_IMAGE_LOADING_IN_MSW is set to 0, then wxUSE_BUTTONBAR must be set to 0 too. -#endif - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxToolBarMSW, wxToolBarBase) - -BEGIN_EVENT_TABLE(wxToolBarMSW, wxToolBarBase) - EVT_SIZE(wxToolBarMSW::OnSize) - EVT_PAINT(wxToolBarMSW::OnPaint) - EVT_MOUSE_EVENTS(wxToolBarMSW::OnMouseEvent) -END_EVENT_TABLE() -#endif - -wxToolBarMSW::wxToolBarMSW(void) -{ - m_hbrDither = 0; - m_rgbFace = 0; - m_rgbShadow = 0; - m_rgbHilight = 0; - m_rgbFrame = 0; - m_hdcMono = 0; - m_hbmMono = 0; - m_hbmDefault = 0; - m_defaultWidth = DEFAULTBITMAPX; - m_defaultHeight = DEFAULTBITMAPY; -} - -bool wxToolBarMSW::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, - long style, const wxString& name) -{ - if ( ! wxWindow::Create(parent, id, pos, size, style, name) ) - return FALSE; - - if ( style & wxTB_HORIZONTAL ) - { m_lastX = 3; m_lastY = 7; } - else - { m_lastX = 7; m_lastY = 3; } - m_maxWidth = m_maxHeight = 0; - m_pressedTool = m_currentTool = -1; - m_xMargin = 0; - m_yMargin = 0; - m_toolPacking = 1; - m_toolSeparation = 5; - - // Set it to grey - SetBackgroundColour(wxColour(192, 192, 192)); - - m_hbrDither = 0; - m_rgbFace = 0; - m_rgbShadow = 0; - m_rgbHilight = 0; - m_rgbFrame = 0; - m_hdcMono = 0; - m_hbmMono = 0; - m_hbmDefault = 0; - m_defaultWidth = DEFAULTBITMAPX; - m_defaultHeight = DEFAULTBITMAPY; - - InitGlobalObjects(); - - return TRUE; -} - -wxToolBarMSW::~wxToolBarMSW(void) -{ - FreeGlobalObjects(); -} - -void wxToolBarMSW::SetToolBitmapSize(const wxSize& size) -{ - m_defaultWidth = size.x; m_defaultHeight = size.y; - FreeGlobalObjects(); - InitGlobalObjects(); -} - -// The button size is bigger than the bitmap size -wxSize wxToolBarMSW::GetToolSize(void) const -{ - return wxSize(m_defaultWidth + 8, m_defaultHeight + 7); -} - -void wxToolBarMSW::OnPaint(wxPaintEvent& event) -{ - wxPaintDC dc(this); - - static int wxOnPaintCount = 0; - - // Prevent reentry of OnPaint which would cause - // wxMemoryDC errors. - if (wxOnPaintCount > 0) - return; - wxOnPaintCount ++; - - wxNode *node = m_tools.First(); - while (node) - { - wxToolBarTool *tool = (wxToolBarTool *)node->Data(); - if (tool->m_toolStyle != wxTOOL_STYLE_SEPARATOR) - { - int state = wxTBSTATE_ENABLED; - if (!tool->m_enabled) - state = 0; - if (tool->m_isToggle && tool->m_toggleState) - state |= wxTBSTATE_CHECKED; - DrawTool(dc, tool, state); - } - node = node->Next(); - } - wxOnPaintCount --; -} - -void wxToolBarMSW::OnSize(wxSizeEvent& event) -{ - wxToolBarBase::OnSize(event); -} - -// If a Button is disabled, then NO function (besides leaving -// or entering) should be carried out. Therefore the additions -// of 'enabled' testing (Stefan Hammes). -void wxToolBarMSW::OnMouseEvent(wxMouseEvent& event) -{ - static wxToolBarTool *eventCurrentTool = NULL; - wxClientDC dc(this); - - if (event.Leaving()) - { - m_currentTool = -1; - if (eventCurrentTool && eventCurrentTool->m_enabled) - { - ::ReleaseCapture(); - int state = wxTBSTATE_ENABLED; - if (eventCurrentTool->m_toggleState) - state |= wxTBSTATE_CHECKED; - DrawTool(dc, eventCurrentTool, state); - eventCurrentTool = NULL; - } - OnMouseEnter(-1); - return; - } - - long x, y; - event.Position(&x, &y); - wxToolBarTool *tool = FindToolForPosition(x, y); - - if (!tool) - { - if (eventCurrentTool && eventCurrentTool->m_enabled) - { - ::ReleaseCapture(); - - int state = wxTBSTATE_ENABLED; - if (eventCurrentTool->m_toggleState) - state |= wxTBSTATE_CHECKED; - DrawTool(dc, eventCurrentTool, state); - eventCurrentTool = NULL; - } - if (m_currentTool > -1) - { - m_currentTool = -1; - OnMouseEnter(-1); - } - return; - } - - if (!event.Dragging() && !event.IsButton()) - { - if (tool->m_index != m_currentTool) - { - OnMouseEnter(tool->m_index); - m_currentTool = tool->m_index; - return; - } - } - if (event.Dragging() && tool->m_enabled) - { - if (eventCurrentTool) - { - // Might have dragged outside tool - if (eventCurrentTool != tool) - { - int state = wxTBSTATE_ENABLED; - if (tool->m_toggleState) - state |= wxTBSTATE_CHECKED; - DrawTool(dc, tool, state); - eventCurrentTool = NULL; - return; - } - } - else - { - if (tool && event.LeftIsDown() && tool->m_enabled) - { - eventCurrentTool = tool; - ::SetCapture((HWND) GetHWND()); - int state = wxTBSTATE_ENABLED|wxTBSTATE_PRESSED; - if (tool->m_toggleState) - state |= wxTBSTATE_CHECKED; - DrawTool(dc, tool, state); - } - } - } - if (event.LeftDown() && tool->m_enabled) - { - eventCurrentTool = tool; - ::SetCapture((HWND) GetHWND()); - int state = wxTBSTATE_ENABLED|wxTBSTATE_PRESSED; - if (tool->m_toggleState) - state |= wxTBSTATE_CHECKED; - DrawTool(dc, tool, state); - } - else if (event.LeftUp() && tool->m_enabled) - { - if (eventCurrentTool) - ::ReleaseCapture(); - if (eventCurrentTool == tool) - { - if (tool->m_isToggle) - { - tool->m_toggleState = !tool->m_toggleState; - if (!OnLeftClick(tool->m_index, tool->m_toggleState)) - { - tool->m_toggleState = !tool->m_toggleState; - } - int state = wxTBSTATE_ENABLED; - if (tool->m_toggleState) - state |= wxTBSTATE_CHECKED; - DrawTool(dc, tool, state); - } - else - { - int state = wxTBSTATE_ENABLED; - if (tool->m_toggleState) - state |= wxTBSTATE_CHECKED; - DrawTool(dc, tool, state); - OnLeftClick(tool->m_index, tool->m_toggleState); - } - } - eventCurrentTool = NULL; - } - else if (event.RightDown() && tool->m_enabled) - { - OnRightClick(tool->m_index, x, y); - } -} - -// This function enables/disables a toolbar tool and redraws it. -// If that would not be done, the enabling/disabling wouldn't be -// visible on the screen. -void wxToolBarMSW::EnableTool(int toolIndex, bool enable) -{ - wxNode *node = m_tools.Find((long)toolIndex); - if (node) - { - wxClientDC dc(this); - - // at first do the enabling/disabling in the base class - wxToolBarBase::EnableTool(toolIndex,enable); - // then calculate the state of the tool and draw it - wxToolBarTool *tool = (wxToolBarTool *)node->Data(); - int state = 0; - if(tool->m_toggleState) state |= wxTBSTATE_CHECKED; - if(tool->m_enabled) state |= wxTBSTATE_ENABLED; - // how can i access the PRESSED state??? - DrawTool(dc, tool,state); - } -} - -void wxToolBarMSW::DrawTool(wxDC& dc, wxToolBarTool *tool, int state) -{ - DrawButton(dc.GetHDC(), (int)tool->m_x, (int)tool->m_y, (int)tool->GetWidth(), (int)tool->GetHeight(), tool, state); -} - -void wxToolBarMSW::DrawTool(wxDC& dc, wxMemoryDC& , wxToolBarTool *tool) -{ - int state = wxTBSTATE_ENABLED; - if (!tool->m_enabled) - state = 0; - if (tool->m_toggleState) - state |= wxTBSTATE_CHECKED; - DrawTool(dc, tool, state); -} - -// If pushedBitmap is NULL, a reversed version of bitmap is -// created and used as the pushed/toggled image. -// If toggle is TRUE, the button toggles between the two states. -wxToolBarTool *wxToolBarMSW::AddTool(int index, const wxBitmap& bitmap, const wxBitmap& pushedBitmap, - bool toggle, long xPos, long yPos, wxObject *clientData, const wxString& helpString1, const wxString& helpString2) -{ - // Using bitmap2 can cause problems (don't know why!) - - // TODO: use the mapping code from wxToolBar95 to get it right in this class -#if !defined(__WIN32__) && !defined(__WIN386__) - wxBitmap bitmap2; - if (toggle) - { - bitmap2.SetHBITMAP( (WXHBITMAP) CreateMappedBitmap(wxGetInstance(), (HBITMAP) ((wxBitmap& )bitmap).GetHBITMAP())); - } - - wxToolBarTool *tool = new wxToolBarTool(index, bitmap, bitmap2, toggle, xPos, yPos, helpString1, helpString2); -#else - wxToolBarTool *tool = new wxToolBarTool(index, bitmap, wxNullBitmap, toggle, xPos, yPos, helpString1, helpString2); -#endif - - tool->m_clientData = clientData; - - if (xPos > -1) - tool->m_x = xPos; - else - tool->m_x = m_xMargin; - - if (yPos > -1) - tool->m_y = yPos; - else - tool->m_y = m_yMargin; - - tool->m_deleteSecondBitmap = TRUE; - tool->SetSize(GetToolSize().x, GetToolSize().y); - - // Calculate reasonable max size in case Layout() not called - if ((tool->m_x + bitmap.GetWidth() + m_xMargin) > m_maxWidth) - m_maxWidth = (tool->m_x + tool->GetWidth() + m_xMargin); - - if ((tool->m_y + bitmap.GetHeight() + m_yMargin) > m_maxHeight) - m_maxHeight = (tool->m_y + tool->GetHeight() + m_yMargin); - - m_tools.Append((long)index, tool); - return tool; -} - -void wxToolBarMSW::Layout(void) -{ - m_currentRowsOrColumns = 0; - m_lastX = m_xMargin; - m_lastY = m_yMargin; - int maxToolWidth = 0; - int maxToolHeight = 0; - m_maxWidth = 0; - m_maxHeight = 0; - - // Find the maximum tool width and height - wxNode *node = m_tools.First(); - while (node) - { - wxToolBarTool *tool = (wxToolBarTool *)node->Data(); - if (tool->GetWidth() > maxToolWidth) - maxToolWidth = (int)tool->GetWidth(); - if (tool->GetHeight() > maxToolHeight) - maxToolHeight = (int)tool->GetHeight(); - node = node->Next(); - } - - int separatorSize = m_toolSeparation; - - node = m_tools.First(); - while (node) - { - wxToolBarTool *tool = (wxToolBarTool *)node->Data(); - if (tool->m_toolStyle == wxTOOL_STYLE_SEPARATOR) - { - if ( GetWindowStyleFlag() & wxTB_HORIZONTAL ) - { - if (m_currentRowsOrColumns >= m_maxCols) - m_lastY += separatorSize; - else - m_lastX += separatorSize; - } - else - { - if (m_currentRowsOrColumns >= m_maxRows) - m_lastX += separatorSize; - else - m_lastY += separatorSize; - } - } - else if (tool->m_toolStyle == wxTOOL_STYLE_BUTTON) - { - if ( GetWindowStyleFlag() & wxTB_HORIZONTAL ) - { - if (m_currentRowsOrColumns >= m_maxCols) - { - m_currentRowsOrColumns = 0; - m_lastX = m_xMargin; - m_lastY += maxToolHeight + m_toolPacking; - } - tool->m_x = (long) (m_lastX + (maxToolWidth - tool->GetWidth())/2.0); - tool->m_y = (long) (m_lastY + (maxToolHeight - tool->GetHeight())/2.0); - - m_lastX += maxToolWidth + m_toolPacking; - } - else - { - if (m_currentRowsOrColumns >= m_maxRows) - { - m_currentRowsOrColumns = 0; - m_lastX += (maxToolWidth + m_toolPacking); - m_lastY = m_yMargin; - } - tool->m_x = (long) (m_lastX + (maxToolWidth - tool->GetWidth())/2.0); - tool->m_y = (long) (m_lastY + (maxToolHeight - tool->GetHeight())/2.0); - - m_lastY += maxToolHeight + m_toolPacking; - } - m_currentRowsOrColumns ++; - } - - if (m_lastX > m_maxWidth) - m_maxWidth = m_lastX; - if (m_lastY > m_maxHeight) - m_maxHeight = m_lastY; - - node = node->Next(); - } - if ( GetWindowStyleFlag() & wxTB_HORIZONTAL ) - m_maxWidth += maxToolWidth; - else - m_maxHeight += maxToolHeight; - - m_maxWidth += m_xMargin; - m_maxHeight += m_yMargin; -} - - -bool wxToolBarMSW::InitGlobalObjects(void) -{ - GetSysColors(); - if (!CreateDitherBrush()) - return FALSE; - - m_hdcMono = (WXHDC) CreateCompatibleDC(NULL); - if (!m_hdcMono) - return FALSE; - - m_hbmMono = (WXHBITMAP) CreateBitmap((int)GetToolSize().x, (int)GetToolSize().y, 1, 1, NULL); - if (!m_hbmMono) - return FALSE; - - m_hbmDefault = (WXHBITMAP) SelectObject((HDC) m_hdcMono, (HBITMAP) m_hbmMono); - return TRUE; -} - -void wxToolBarMSW::FreeGlobalObjects(void) -{ - FreeDitherBrush(); - - if (m_hdcMono) { - if (m_hbmDefault) - { - SelectObject((HDC) m_hdcMono, (HBITMAP) m_hbmDefault); - m_hbmDefault = 0; - } - DeleteDC((HDC) m_hdcMono); // toast the DCs - } - m_hdcMono = 0; - - if (m_hbmMono) - DeleteObject((HBITMAP) m_hbmMono); - m_hbmMono = 0; -} - - -void wxToolBarMSW::PatB(WXHDC hdc,int x,int y,int dx,int dy, long rgb) -{ - RECT rc; - - rc.left = x; - rc.top = y; - rc.right = x + dx; - rc.bottom = y + dy; - - SetBkColor((HDC) hdc,rgb); - ExtTextOut((HDC) hdc,0,0,ETO_OPAQUE,&rc,NULL,0,NULL); -} - - -// create a mono bitmap mask: -// 1's where color == COLOR_BTNFACE || COLOR_HILIGHT -// 0's everywhere else - -void wxToolBarMSW::CreateMask(WXHDC hdc, int xoffset, int yoffset, int dx, int dy) -{ - HDC globalDC = ::GetDC(NULL); - HDC hdcGlyphs = CreateCompatibleDC((HDC) globalDC); - ReleaseDC(NULL, (HDC) globalDC); - - // krj - create a new bitmap and copy the image from hdc. - //HBITMAP bitmapOld = SelectObject(hdcGlyphs, hBitmap); - HBITMAP hBitmap = CreateCompatibleBitmap((HDC) hdc, dx, dy); - HBITMAP bitmapOld = (HBITMAP) SelectObject(hdcGlyphs, hBitmap); - BitBlt(hdcGlyphs, 0,0, dx, dy, (HDC) hdc, 0, 0, SRCCOPY); - - // initalize whole area with 1's - PatBlt((HDC) m_hdcMono, 0, 0, dx, dy, WHITENESS); - - // create mask based on color bitmap - // convert this to 1's - SetBkColor(hdcGlyphs, m_rgbFace); - BitBlt((HDC) m_hdcMono, xoffset, yoffset, (int)GetToolBitmapSize().x, (int)GetToolBitmapSize().y, - hdcGlyphs, 0, 0, SRCCOPY); - // convert this to 1's - SetBkColor(hdcGlyphs, m_rgbHilight); - // OR in the new 1's - BitBlt((HDC) m_hdcMono, xoffset, yoffset, (int)GetToolBitmapSize().x, (int)GetToolBitmapSize().y, - hdcGlyphs, 0, 0, SRCPAINT); - - SelectObject(hdcGlyphs, bitmapOld); - DeleteObject(hBitmap); - DeleteDC(hdcGlyphs); -} - -void wxToolBarMSW::DrawBlankButton(WXHDC hdc, int x, int y, int dx, int dy, int state) -{ - // face color - PatB(hdc, x, y, dx, dy, m_rgbFace); - - if (state & wxTBSTATE_PRESSED) { - PatB(hdc, x + 1, y, dx - 2, 1, m_rgbFrame); - PatB(hdc, x + 1, y + dy - 1, dx - 2, 1, m_rgbFrame); - PatB(hdc, x, y + 1, 1, dy - 2, m_rgbFrame); - PatB(hdc, x + dx - 1, y +1, 1, dy - 2, m_rgbFrame); - PatB(hdc, x + 1, y + 1, 1, dy-2, m_rgbShadow); - PatB(hdc, x + 1, y + 1, dx-2, 1, m_rgbShadow); - } - else { - PatB(hdc, x + 1, y, dx - 2, 1, m_rgbFrame); - PatB(hdc, x + 1, y + dy - 1, dx - 2, 1, m_rgbFrame); - PatB(hdc, x, y + 1, 1, dy - 2, m_rgbFrame); - PatB(hdc, x + dx - 1, y + 1, 1, dy - 2, m_rgbFrame); - dx -= 2; - dy -= 2; - PatB(hdc, x + 1, y + 1, 1, dy - 1, m_rgbHilight); - PatB(hdc, x + 1, y + 1, dx - 1, 1, m_rgbHilight); - PatB(hdc, x + dx, y + 1, 1, dy, m_rgbShadow); - PatB(hdc, x + 1, y + dy, dx, 1, m_rgbShadow); - PatB(hdc, x + dx - 1, y + 2, 1, dy - 2, m_rgbShadow); - PatB(hdc, x + 2, y + dy - 1, dx - 2, 1, m_rgbShadow); - } -} - -void wxToolBarMSW::DrawButton(WXHDC hdc, int x, int y, int dx, int dy, wxToolBarTool *tool, int state) -{ - int yOffset; - HBRUSH hbrOld, hbr; - BOOL bMaskCreated = FALSE; - int xButton = 0; // assume button is down - int dxFace, dyFace; - int xCenterOffset; - - dxFace = dx; - dyFace = dy; - -// HBITMAP hBitmap = (HBITMAP) tool->m_bitmap1.GetHBITMAP(); - HDC globalDC = ::GetDC(NULL); - HDC hdcGlyphs = CreateCompatibleDC(globalDC); - ReleaseDC(NULL, globalDC); - - // get the proper button look - up or down. - if (!(state & (wxTBSTATE_PRESSED | wxTBSTATE_CHECKED))) { - xButton = dx; // use 'up' version of button - dxFace -= 2; - dyFace -= 2; // extents to ignore button highlight - } - - DrawBlankButton(hdc, x, y, dx, dy, state); - - - // move coordinates inside border and away from upper left highlight. - // the extents change accordingly. - x += 2; - y += 2; - dxFace -= 3; - dyFace -= 3; - - // Using bitmap2 can cause problems (don't know why!) -#if !defined(__WIN32__) && !defined(__WIN386__) - HBITMAP bitmapOld; - if (tool->m_bitmap2.Ok()) - bitmapOld = (HBITMAP) SelectObject(hdcGlyphs, (HBITMAP) tool->m_bitmap2.GetHBITMAP()); - else - bitmapOld = (HBITMAP) SelectObject(hdcGlyphs, (HBITMAP) tool->m_bitmap1.GetHBITMAP()); -#else - HBITMAP bitmapOld = (HBITMAP) SelectObject(hdcGlyphs, (HBITMAP) tool->m_bitmap1.GetHBITMAP()); -#endif - - // calculate offset of face from (x,y). y is always from the top, - // so the offset is easy. x needs to be centered in face. - yOffset = 1; - xCenterOffset = (dxFace - (int)GetToolBitmapSize().x)/2; - if (state & (wxTBSTATE_PRESSED | wxTBSTATE_CHECKED)) - { - // pressed state moves down and to the right - // (x moves automatically as face size grows) - yOffset++; - } - - // now put on the face - if (state & wxTBSTATE_ENABLED) { - // regular version - BitBlt((HDC) hdc, x+xCenterOffset, y + yOffset, (int)GetToolBitmapSize().x, (int)GetToolBitmapSize().y, - hdcGlyphs, 0, 0, SRCCOPY); - } else { - // disabled version (or indeterminate) - bMaskCreated = TRUE; - CreateMask((WXHDC) hdcGlyphs, xCenterOffset, yOffset, dxFace, dyFace); -// CreateMask(hBitmap, xCenterOffset, yOffset, dxFace, dyFace); - - SetTextColor((HDC) hdc, 0L); // 0's in mono -> 0 (for ROP) - SetBkColor((HDC) hdc, 0x00FFFFFF); // 1's in mono -> 1 - - // draw glyph's white understrike - if (!(state & wxTBSTATE_INDETERMINATE)) { - hbr = CreateSolidBrush(m_rgbHilight); - if (hbr) { - hbrOld = (HBRUSH) SelectObject((HDC) hdc, hbr); - if (hbrOld) { - // draw hilight color where we have 0's in the mask - BitBlt((HDC) hdc, x + 1, y + 1, dxFace, dyFace, (HDC) m_hdcMono, 0, 0, 0x00B8074A); - SelectObject((HDC) hdc, hbrOld); - } - DeleteObject(hbr); - } - } - - // gray out glyph - hbr = CreateSolidBrush(m_rgbShadow); - if (hbr) { - hbrOld = (HBRUSH) SelectObject((HDC) hdc, hbr); - if (hbrOld) { - // draw the shadow color where we have 0's in the mask - BitBlt((HDC) hdc, x, y, dxFace, dyFace, (HDC) m_hdcMono, 0, 0, 0x00B8074A); - SelectObject((HDC) hdc, hbrOld); - } - DeleteObject(hbr); - } - - if (state & wxTBSTATE_CHECKED) { - BitBlt((HDC) m_hdcMono, 1, 1, dxFace - 1, dyFace - 1, (HDC) m_hdcMono, 0, 0, SRCAND); - } - } - - if (state & (wxTBSTATE_CHECKED | wxTBSTATE_INDETERMINATE)) { - - hbrOld = (HBRUSH) SelectObject((HDC) hdc, (HBRUSH) m_hbrDither); - if (hbrOld) { - - if (!bMaskCreated) - CreateMask((WXHDC) hdcGlyphs, xCenterOffset, yOffset, dxFace, dyFace); -// CreateMask(hBitmap, xCenterOffset, yOffset, dxFace, dyFace); - - SetTextColor((HDC) hdc, 0L); // 0 -> 0 - SetBkColor((HDC) hdc, 0x00FFFFFF); // 1 -> 1 - - // only draw the dither brush where the mask is 1's - BitBlt((HDC) hdc, x, y, dxFace, dyFace, (HDC) m_hdcMono, 0, 0, 0x00E20746); - - SelectObject((HDC) hdc, hbrOld); - } - } - SelectObject(hdcGlyphs, bitmapOld); - DeleteDC(hdcGlyphs); -} - -void wxToolBarMSW::GetSysColors(void) -{ - static COLORREF rgbSaveFace = 0xffffffffL, - rgbSaveShadow = 0xffffffffL, - rgbSaveHilight = 0xffffffffL, - rgbSaveFrame = 0xffffffffL; - - // For now, override these because the colour replacement isn't working, - // and we get inconsistent colours. Assume all buttons are grey for the moment. - -// m_rgbFace = GetSysColor(COLOR_BTNFACE); - m_rgbFace = RGB(192,192,192); -// m_rgbShadow = GetSysColor(COLOR_BTNSHADOW); - m_rgbShadow = RGB(128,128,128); -// m_rgbHilight = GetSysColor(COLOR_BTNHIGHLIGHT); - m_rgbHilight = RGB(255, 255, 255); - - m_rgbFrame = GetSysColor(COLOR_WINDOWFRAME); - - if (rgbSaveFace!=m_rgbFace || rgbSaveShadow!=m_rgbShadow - || rgbSaveHilight!=m_rgbHilight || rgbSaveFrame!=m_rgbFrame) - { - rgbSaveFace = m_rgbFace; - rgbSaveShadow = m_rgbShadow; - rgbSaveHilight = m_rgbHilight; - rgbSaveFrame = m_rgbFrame; - - // Update the brush for pushed-in buttons - CreateDitherBrush(); - } -} - -WXHBITMAP wxToolBarMSW::CreateDitherBitmap() -{ - BITMAPINFO* pbmi; - HBITMAP hbm; - HDC hdc; - int i; - long patGray[8]; - DWORD rgb; - - pbmi = (BITMAPINFO *)malloc(sizeof(BITMAPINFOHEADER) + 16*sizeof(RGBQUAD)); - memset(pbmi, 0, (sizeof(BITMAPINFOHEADER) + 16*sizeof(RGBQUAD))); - - pbmi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER); - pbmi->bmiHeader.biWidth = 8; - pbmi->bmiHeader.biHeight = 8; - pbmi->bmiHeader.biPlanes = 1; - pbmi->bmiHeader.biBitCount = 1; - pbmi->bmiHeader.biCompression = BI_RGB; - -// rgb = GetSysColor(COLOR_BTNFACE); - rgb = RGB(192,192,192); - - pbmi->bmiColors[0].rgbBlue = GetBValue(rgb); - pbmi->bmiColors[0].rgbGreen = GetGValue(rgb); - pbmi->bmiColors[0].rgbRed = GetRValue(rgb); - pbmi->bmiColors[0].rgbReserved = 0; - -// rgb = GetSysColor(COLOR_BTNHIGHLIGHT); - rgb = RGB(255, 255, 255); - - pbmi->bmiColors[1].rgbBlue = GetBValue(rgb); - pbmi->bmiColors[1].rgbGreen = GetGValue(rgb); - pbmi->bmiColors[1].rgbRed = GetRValue(rgb); - pbmi->bmiColors[1].rgbReserved = 0; - - /* initialize the brushes */ - - for (i = 0; i < 8; i++) - if (i & 1) - patGray[i] = 0xAAAA5555L; // 0x11114444L; // lighter gray - else - patGray[i] = 0x5555AAAAL; // 0x11114444L; // lighter gray - - hdc = ::GetDC(NULL); - - hbm = CreateDIBitmap(hdc, &pbmi->bmiHeader, CBM_INIT, patGray, pbmi, DIB_RGB_COLORS); - - ReleaseDC(NULL, hdc); - free(pbmi); - - return (WXHBITMAP)hbm; -} - -bool wxToolBarMSW::CreateDitherBrush(void) -{ - HBITMAP hbmGray; - HBRUSH hbrSave; - if (m_hbrDither) - return TRUE; - hbmGray = (HBITMAP) CreateDitherBitmap(); - - if (hbmGray) - { - hbrSave = (HBRUSH) m_hbrDither; - m_hbrDither = (WXHBRUSH) CreatePatternBrush(hbmGray); - DeleteObject(hbmGray); - if (m_hbrDither) - { - if (hbrSave) - { - DeleteObject(hbrSave); - } - return TRUE; - } - else - { - m_hbrDither = (WXHBRUSH) hbrSave; - } - } - - return FALSE; -} - -bool wxToolBarMSW::FreeDitherBrush(void) -{ - if (m_hbrDither) - DeleteObject((HBRUSH) m_hbrDither); - m_hbrDither = 0; - return TRUE; -} - -typedef struct tagCOLORMAP2 -{ - COLORREF bgrfrom; - COLORREF bgrto; - COLORREF sysColor; -} COLORMAP2; - -// these are the default colors used to map the dib colors -// to the current system colors - -#define BGR_BUTTONTEXT (RGB(000,000,000)) // black -#define BGR_BUTTONSHADOW (RGB(128,128,128)) // dark grey -#define BGR_BUTTONFACE (RGB(192,192,192)) // bright grey -#define BGR_BUTTONHILIGHT (RGB(255,255,255)) // white -#define BGR_BACKGROUNDSEL (RGB(255,000,000)) // blue -#define BGR_BACKGROUND (RGB(255,000,255)) // magenta -#define FlipColor(rgb) (RGB(GetBValue(rgb), GetGValue(rgb), GetRValue(rgb))) - -WXHBITMAP wxToolBarMSW::CreateMappedBitmap(WXHINSTANCE WXUNUSED(hInstance), void *info) -{ - LPBITMAPINFOHEADER lpBitmapInfo = (LPBITMAPINFOHEADER)info; - HDC hdc, hdcMem = NULL; - - DWORD FAR *p; - LPSTR lpBits; - HBITMAP hbm = NULL, hbmOld; - int numcolors, i; - int wid, hgt; - static COLORMAP2 ColorMap[] = { - {BGR_BUTTONTEXT, BGR_BUTTONTEXT, COLOR_BTNTEXT}, // black - {BGR_BUTTONSHADOW, BGR_BUTTONSHADOW, COLOR_BTNSHADOW}, // dark grey - {BGR_BUTTONFACE, BGR_BUTTONFACE, COLOR_BTNFACE}, // bright grey - {BGR_BUTTONHILIGHT, BGR_BUTTONHILIGHT, COLOR_BTNHIGHLIGHT},// white - {BGR_BACKGROUNDSEL, BGR_BACKGROUNDSEL, COLOR_HIGHLIGHT}, // blue - {BGR_BACKGROUND, BGR_BACKGROUND, COLOR_WINDOW} // magenta - }; - - #define NUM_MAPS (sizeof(ColorMap)/sizeof(COLORMAP2)) - - if (!lpBitmapInfo) - return 0; - - // - // So what are the new colors anyway ? - // - for (i=0; i < (int) NUM_MAPS; i++) { - ColorMap[i].bgrto = (long unsigned int) FlipColor(GetSysColor((int)ColorMap[i].sysColor)); - } - - p = (DWORD FAR *)(((LPSTR)lpBitmapInfo) + lpBitmapInfo->biSize); - - /* Replace button-face and button-shadow colors with the current values - */ - numcolors = 16; - - while (numcolors-- > 0) { - for (i = 0; i < (int) NUM_MAPS; i++) { - if (*p == ColorMap[i].bgrfrom) { - *p = ColorMap[i].bgrto; - break; - } - } - p++; - } - - /* First skip over the header structure */ - lpBits = (LPSTR)(lpBitmapInfo + 1); - - /* Skip the color table entries, if any */ - lpBits += (1 << (lpBitmapInfo->biBitCount)) * sizeof(RGBQUAD); - - /* Create a color bitmap compatible with the display device */ - i = wid = (int)lpBitmapInfo->biWidth; - hgt = (int)lpBitmapInfo->biHeight; - hdc = ::GetDC(NULL); - - hdcMem = CreateCompatibleDC(hdc); - if (hdcMem) { -// hbm = CreateDiscardableBitmap(hdc, i, hgt); - hbm = CreateCompatibleBitmap(hdc, i, hgt); - if (hbm) { - hbmOld = (HBITMAP) SelectObject(hdcMem, hbm); - - // set the main image - StretchDIBits(hdcMem, 0, 0, wid, hgt, 0, 0, wid, hgt, lpBits, - (LPBITMAPINFO)lpBitmapInfo, DIB_RGB_COLORS, SRCCOPY); - - SelectObject(hdcMem, hbmOld); - } - - DeleteObject(hdcMem); - } - - ReleaseDC(NULL, hdc); - - return (WXHBITMAP) hbm; -} - -WXHBITMAP wxToolBarMSW::CreateMappedBitmap(WXHINSTANCE hInstance, WXHBITMAP hBitmap) -{ - HANDLE hDIB = BitmapToDIB((HBITMAP) hBitmap, 0); - if (hDIB) - { -#ifdef __WINDOWS_386__ - LPBITMAPINFOHEADER lpbmInfoHdr = (LPBITMAPINFOHEADER)MK_FP32(GlobalLock(hDIB)); -#else - LPBITMAPINFOHEADER lpbmInfoHdr = (LPBITMAPINFOHEADER)GlobalLock(hDIB); -#endif - HBITMAP newBitmap = (HBITMAP) CreateMappedBitmap((WXHINSTANCE) wxGetInstance(), lpbmInfoHdr); - GlobalUnlock(hDIB); - GlobalFree(hDIB); - return (WXHBITMAP) newBitmap; - } - return 0; -} - -#endif diff --git a/src/msw/textctrl.cpp b/src/msw/textctrl.cpp deleted file mode 100644 index 17cd5ae0c6..0000000000 --- a/src/msw/textctrl.cpp +++ /dev/null @@ -1,1136 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: textctrl.cpp -// Purpose: wxTextCtrl -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "textctrl.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/textctrl.h" -#include "wx/settings.h" -#include "wx/brush.h" -#include "wx/utils.h" -#include "wx/log.h" -#endif - -#if wxUSE_CLIPBOARD -#include "wx/app.h" -#include "wx/clipbrd.h" -#endif - -#include "wx/msw/private.h" - -#include -#include - -#if wxUSE_IOSTREAMH -#include -#else -#include -# ifdef _MSC_VER - using namespace std; -# endif -#endif - -#include -#ifndef __MWERKS__ -#include -#else -#include -#endif -#if defined(__BORLANDC__) && !defined(__WIN32__) -#include -#else -#if !defined(__GNUWIN32__) && !defined(__SALFORDC__) -#include -#endif -#define farmalloc malloc -#define farfree free -#endif -#include - -#include - -#if defined(__WIN95__) && !defined(__TWIN32__) -#define wxUSE_RICHEDIT 1 -#else -#define wxUSE_RICHEDIT 0 -#endif - -#if wxUSE_RICHEDIT && !defined(__GNUWIN32__) -#include -#endif - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxTextCtrl, wxControl) - -BEGIN_EVENT_TABLE(wxTextCtrl, wxControl) - EVT_CHAR(wxTextCtrl::OnChar) - EVT_DROP_FILES(wxTextCtrl::OnDropFiles) - EVT_ERASE_BACKGROUND(wxTextCtrl::OnEraseBackground) -END_EVENT_TABLE() - -#endif - -// Text item -wxTextCtrl::wxTextCtrl(void) -#ifndef NO_TEXT_WINDOW_STREAM - :streambuf() -#endif -{ - m_fileName = ""; - m_isRich = FALSE; -} - -bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id, - const wxString& value, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - m_fileName = ""; - SetName(name); - SetValidator(validator); - if (parent) parent->AddChild(this); - - m_windowStyle = style; - - // Should this be taken from the system colours? -// SetBackgroundColour(wxColour(255, 255, 255)); - - SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOW)); - - SetForegroundColour(parent->GetForegroundColour()) ; - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - int x = pos.x; - int y = pos.y; - int width = size.x; - int height = size.y; - -#ifdef __WIN32__ - WXHGLOBAL m_globalHandle = 0; -#else - // Obscure method from the MS Developer's Network Disk for - // using global memory instead of the local heap, which - // runs out far too soon. Solves the problem with - // failing to appear. - - // Doesn't seem to work for Win95, so removing. - m_globalHandle=0; -// if ((wxGetOsVersion() != wxWINDOWS_NT) && (wxGetOsVersion() != wxWIN95)) -// m_globalHandle = (WXHGLOBAL) GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT, -// 256L); -#endif - - long msStyle = ES_LEFT | WS_VISIBLE | WS_CHILD | WS_TABSTOP; - if (m_windowStyle & wxTE_MULTILINE) - msStyle |= ES_MULTILINE | ES_WANTRETURN | WS_VSCROLL ; // WS_BORDER - else - msStyle |= ES_AUTOHSCROLL ; - - if (m_windowStyle & wxTE_READONLY) - msStyle |= ES_READONLY; - - if (m_windowStyle & wxHSCROLL) - msStyle |= (WS_HSCROLL | ES_AUTOHSCROLL) ; - if (m_windowStyle & wxTE_PASSWORD) // hidden input - msStyle |= ES_PASSWORD; - - char *windowClass = "EDIT"; -#if wxUSE_RICHEDIT - if ( m_windowStyle & wxTE_MULTILINE ) - { - msStyle |= ES_AUTOVSCROLL; - m_isRich = TRUE; - windowClass = "RichEdit" ; - } - else -#endif - m_isRich = FALSE; - - bool want3D; - WXDWORD exStyle = Determine3DEffects(WS_EX_CLIENTEDGE, &want3D) ; - - // If we're in Win95, and we want a simple 2D border, - // then make it an EDIT control instead. -#if wxUSE_RICHEDIT - if (m_windowStyle & wxSIMPLE_BORDER) - { - windowClass = "EDIT"; - m_isRich = FALSE; - } -#endif - - // Even with extended styles, need to combine with WS_BORDER - // for them to look right. - if ( want3D || wxStyleHasBorder(m_windowStyle) ) - msStyle |= WS_BORDER; - - m_hWnd = (WXHWND)::CreateWindowEx(exStyle, windowClass, NULL, - msStyle, - 0, 0, 0, 0, (HWND) ((wxWindow*)parent)->GetHWND(), (HMENU)m_windowId, - m_globalHandle ? (HINSTANCE) m_globalHandle : wxGetInstance(), NULL); - - wxCHECK_MSG( m_hWnd, FALSE, "Failed to create text ctrl" ); - -#if CTL3D - if ( want3D ) - { - Ctl3dSubclassCtl((HWND)m_hWnd); - m_useCtl3D = TRUE; - } -#endif - -#if wxUSE_RICHEDIT - if (m_isRich) - { - // Have to enable events - ::SendMessage((HWND)m_hWnd, EM_SETEVENTMASK, 0, - ENM_CHANGE | ENM_DROPFILES | ENM_SELCHANGE | ENM_UPDATE); - } -#endif - - SubclassWin(GetHWND()); - - if ( parent->GetFont().Ok() && parent->GetFont().Ok() ) - { - SetFont(parent->GetFont()); - } - else - { - SetFont(wxSystemSettings::GetSystemFont(wxSYS_SYSTEM_FONT)); - } - - SetSize(x, y, width, height); - - // Causes a crash for Symantec C++ and WIN32 for some reason -#if !(defined(__SC__) && defined(__WIN32__)) - if ( !value.IsEmpty() ) - { - SetValue(value); - } -#endif - - return TRUE; -} - -// Make sure the window style (etc.) reflects the HWND style (roughly) -void wxTextCtrl::AdoptAttributesFromHWND(void) -{ - wxWindow::AdoptAttributesFromHWND(); - - HWND hWnd = (HWND) GetHWND(); - long style = GetWindowLong((HWND) hWnd, GWL_STYLE); - - char buf[256]; - -#ifndef __WIN32__ - GetClassName((HWND) hWnd, buf, 256); -#else -#ifdef UNICODE - GetClassNameW((HWND) hWnd, buf, 256); -#else -#ifdef __TWIN32__ - GetClassName((HWND) hWnd, buf, 256); -#else - GetClassNameA((HWND) hWnd, buf, 256); -#endif -#endif -#endif - - wxString str(buf); - str.UpperCase(); - - if (str == "EDIT") - m_isRich = FALSE; - else - m_isRich = TRUE; - - if (style & ES_MULTILINE) - m_windowStyle |= wxTE_MULTILINE; - if (style & ES_PASSWORD) - m_windowStyle |= wxTE_PASSWORD; - if (style & ES_READONLY) - m_windowStyle |= wxTE_READONLY; - if (style & ES_WANTRETURN) - m_windowStyle |= wxTE_PROCESS_ENTER; -} - -void wxTextCtrl::SetupColours(void) -{ - SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOW)); - SetForegroundColour(GetParent()->GetForegroundColour()); -} - -wxString wxTextCtrl::GetValue(void) const -{ - int length = GetWindowTextLength((HWND) GetHWND()); - char *s = new char[length+1]; - GetWindowText((HWND) GetHWND(), s, length+1); - wxString str(s); - delete[] s; - return str; -} - -void wxTextCtrl::SetValue(const wxString& value) -{ - // If newlines are denoted by just 10, must stick 13 in front. - int singletons = 0; - int len = value.Length(); - int i; - for (i = 0; i < len; i ++) - { - if ((i > 0) && (value[i] == 10) && (value[i-1] != 13)) - singletons ++; - } - if (singletons > 0) - { - char *tmp = new char[len + singletons + 1]; - int j = 0; - for (i = 0; i < len; i ++) - { - if ((i > 0) && (value[i] == 10) && (value[i-1] != 13)) - { - tmp[j] = 13; - j ++; - } - tmp[j] = value[i]; - j ++; - } - tmp[j] = 0; - SetWindowText((HWND) GetHWND(), tmp); - delete[] tmp; - } - else - SetWindowText((HWND) GetHWND(), (const char *)value); -} - -void wxTextCtrl::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - int currentX, currentY; - GetPosition(¤tX, ¤tY); - int x1 = x; - int y1 = y; - int w1 = width; - int h1 = height; - - if (x == -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) - x1 = currentX; - if (y == -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) - y1 = currentY; - - AdjustForParentClientOrigin(x1, y1, sizeFlags); - - int cx; // button font dimensions - int cy; - - wxGetCharSize(GetHWND(), &cx, &cy, & this->GetFont()); - - int control_width, control_height, control_x, control_y; - - // If we're prepared to use the existing size, then... - if (width == -1 && height == -1 && ((sizeFlags & wxSIZE_AUTO) != wxSIZE_AUTO)) - { - GetSize(&w1, &h1); - } - - // Deal with default size (using -1 values) - if (w1<=0) - w1 = DEFAULT_ITEM_WIDTH; - - control_x = x1; - control_y = y1; - control_width = w1; - control_height = h1; - - // Calculations may have made text size too small - if (control_height <= 0) - control_height = EDIT_HEIGHT_FROM_CHAR_HEIGHT(cy); - - if (control_width <= 0) - control_width = DEFAULT_ITEM_WIDTH; - - MoveWindow((HWND) GetHWND(), (int)control_x, (int)control_y, - (int)control_width, (int)control_height, TRUE); -} - -// Clipboard operations -void wxTextCtrl::Copy(void) -{ - HWND hWnd = (HWND) GetHWND(); - SendMessage(hWnd, WM_COPY, 0, 0L); -} - -void wxTextCtrl::Cut(void) -{ - HWND hWnd = (HWND) GetHWND(); - SendMessage(hWnd, WM_CUT, 0, 0L); -} - -void wxTextCtrl::Paste(void) -{ - HWND hWnd = (HWND) GetHWND(); - SendMessage(hWnd, WM_PASTE, 0, 0L); -} - -void wxTextCtrl::SetEditable(bool editable) -{ - HWND hWnd = (HWND) GetHWND(); - SendMessage(hWnd, EM_SETREADONLY, (WPARAM)!editable, (LPARAM)0L); -} - -void wxTextCtrl::SetInsertionPoint(long pos) -{ - HWND hWnd = (HWND) GetHWND(); -#ifdef __WIN32__ -#if wxUSE_RICHEDIT - if ( m_isRich) - { - CHARRANGE range; - range.cpMin = pos; - range.cpMax = pos; - SendMessage(hWnd, EM_EXSETSEL, 0, (LPARAM) &range); - SendMessage(hWnd, EM_SCROLLCARET, (WPARAM)0, (LPARAM)0); - } - else -#endif - { - SendMessage(hWnd, EM_SETSEL, pos, pos); - SendMessage(hWnd, EM_SCROLLCARET, (WPARAM)0, (LPARAM)0); - } -#else - SendMessage(hWnd, EM_SETSEL, 0, MAKELPARAM(pos, pos)); -#endif - char *nothing = ""; - SendMessage(hWnd, EM_REPLACESEL, 0, (LPARAM)nothing); -} - -void wxTextCtrl::SetInsertionPointEnd(void) -{ - long pos = GetLastPosition(); - SetInsertionPoint(pos); -} - -long wxTextCtrl::GetInsertionPoint(void) const -{ -#if wxUSE_RICHEDIT - if (m_isRich) - { - CHARRANGE range; - range.cpMin = 0; - range.cpMax = 0; - SendMessage((HWND) GetHWND(), EM_EXGETSEL, 0, (LPARAM) &range); - return range.cpMin; - } -#endif - - DWORD Pos=(DWORD)SendMessage((HWND) GetHWND(), EM_GETSEL, 0, 0L); - return Pos&0xFFFF; -} - -long wxTextCtrl::GetLastPosition(void) const -{ - HWND hWnd = (HWND) GetHWND(); - - // Will always return a number > 0 (according to docs) - int noLines = (int)SendMessage(hWnd, EM_GETLINECOUNT, (WPARAM)0, (LPARAM)0L); - - // This gets the char index for the _beginning_ of the last line - int charIndex = (int)SendMessage(hWnd, EM_LINEINDEX, (WPARAM)(noLines-1), (LPARAM)0L); - - // Get number of characters in the last line. We'll add this to the character - // index for the last line, 1st position. - int lineLength = (int)SendMessage(hWnd, EM_LINELENGTH, (WPARAM)charIndex, (LPARAM)0L); - - return (long)(charIndex + lineLength); -} - -void wxTextCtrl::Replace(long from, long to, const wxString& value) -{ - HWND hWnd = (HWND) GetHWND(); - long fromChar = from; - long toChar = to; - - // Set selection and remove it -#ifdef __WIN32__ - SendMessage(hWnd, EM_SETSEL, fromChar, toChar); -#else - SendMessage(hWnd, EM_SETSEL, (WPARAM)0, (LPARAM)MAKELONG(fromChar, toChar)); -#endif - SendMessage(hWnd, WM_CUT, (WPARAM)0, (LPARAM)0); - - // Now replace with 'value', by pasting. - wxSetClipboardData(wxDF_TEXT, (wxObject *) (const char *)value, 0, 0); - - // Paste into edit control - SendMessage(hWnd, WM_PASTE, (WPARAM)0, (LPARAM)0L); -} - -void wxTextCtrl::Remove(long from, long to) -{ - HWND hWnd = (HWND) GetHWND(); - long fromChar = from; - long toChar = to; - - // Cut all selected text -#ifdef __WIN32__ - SendMessage(hWnd, EM_SETSEL, fromChar, toChar); -#else - SendMessage(hWnd, EM_SETSEL, (WPARAM)0, (LPARAM)MAKELONG(fromChar, toChar)); -#endif - SendMessage(hWnd, WM_CUT, (WPARAM)0, (LPARAM)0); -} - -void wxTextCtrl::SetSelection(long from, long to) -{ - HWND hWnd = (HWND) GetHWND(); - long fromChar = from; - long toChar = to; - // if from and to are both -1, it means - // (in wxWindows) that all text should be selected. - // This translates into Windows convention - if ((from == -1) && (to == -1)) - { - fromChar = 0; - toChar = -1; - } - -#ifdef __WIN32__ - SendMessage(hWnd, EM_SETSEL, (WPARAM)fromChar, (LPARAM)toChar); - SendMessage(hWnd, EM_SCROLLCARET, (WPARAM)0, (LPARAM)0); -#else - // WPARAM is 0: selection is scrolled into view - SendMessage(hWnd, EM_SETSEL, (WPARAM)0, (LPARAM)MAKELONG(fromChar, toChar)); -#endif -} - -bool wxTextCtrl::LoadFile(const wxString& file) -{ - if (!wxFileExists(WXSTRINGCAST file)) - return FALSE; - - m_fileName = file; - - Clear(); - -// ifstream input(WXSTRINGCAST file, ios::nocreate | ios::in); - ifstream input(WXSTRINGCAST file, ios::in); - - if (!input.bad()) - { - // Previously a SETSEL/REPLACESEL call-pair were done to insert - // line by line into the control. Apart from being very slow this - // was limited to 32K of text by the external interface presenting - // positions as signed shorts. Now load in one chunk... - // Note use of 'farmalloc' as in Borland 3.1 'size_t' is 16-bits... - -#ifdef __SALFORDC__ - struct _stat stat_buf; - if (stat((char*) (const char*) file, &stat_buf) < 0) - return FALSE; -#else - struct stat stat_buf; - if (stat(file, &stat_buf) < 0) - return FALSE; -#endif - -// char *tmp_buffer = (char*)farmalloc(stat_buf.st_size+1); - // This may need to be a bigger buffer than the file size suggests, - // if it's a UNIX file. Give it an extra 1000 just in case. - char *tmp_buffer = (char*)farmalloc((size_t)(stat_buf.st_size+1+1000)); - long no_lines = 0; - long pos = 0; - while (!input.eof() && input.peek() != EOF) - { - input.getline(wxBuffer, 500); - int len = strlen(wxBuffer); - wxBuffer[len] = 13; - wxBuffer[len+1] = 10; - wxBuffer[len+2] = 0; - strcpy(tmp_buffer+pos, wxBuffer); - pos += strlen(wxBuffer); - no_lines++; - } - -// SendMessage((HWND) GetHWND(), WM_SETTEXT, 0, (LPARAM)tmp_buffer); - SetWindowText((HWND) GetHWND(), tmp_buffer); - SendMessage((HWND) GetHWND(), EM_SETMODIFY, FALSE, 0L); - farfree(tmp_buffer); - - return TRUE; - } - return FALSE; -} - -// If file is null, try saved file name first -// Returns TRUE if succeeds. -bool wxTextCtrl::SaveFile(const wxString& file) -{ - wxString theFile(file); - if (theFile == "") - theFile = m_fileName; - if (theFile == "") - return FALSE; - m_fileName = theFile; - - ofstream output((char*) (const char*) theFile); - if (output.bad()) - return FALSE; - - // This will only save 64K max - unsigned long nbytes = SendMessage((HWND) GetHWND(), WM_GETTEXTLENGTH, 0, 0); - char *tmp_buffer = (char*)farmalloc((size_t)(nbytes+1)); - SendMessage((HWND) GetHWND(), WM_GETTEXT, (WPARAM)(nbytes+1), (LPARAM)tmp_buffer); - char *pstr = tmp_buffer; - - // Convert \r\n to just \n - while (*pstr) - { - if (*pstr != '\r') - output << *pstr; - pstr++; - } - - farfree(tmp_buffer); - SendMessage((HWND) GetHWND(), EM_SETMODIFY, FALSE, 0L); - - return TRUE; -} - -void wxTextCtrl::WriteText(const wxString& text) -{ - // Covert \n to \r\n - int len = text.Length(); - char *newtext = new char[(len*2)+1]; - int i = 0; - int j = 0; - while (i < len) - { - if (text[i] == '\n') - { - newtext[j] = '\r'; - j ++; - } - newtext[j] = text[i]; - i ++; - j ++; - } - newtext[j] = 0; - SendMessage((HWND) GetHWND(), EM_REPLACESEL, 0, (LPARAM)newtext); - delete[] newtext; -} - -void wxTextCtrl::Clear(void) -{ -// SendMessage((HWND) GetHWND(), WM_SETTEXT, 0, (LPARAM)""); - SetWindowText((HWND) GetHWND(), ""); -} - -bool wxTextCtrl::IsModified(void) const -{ - return (SendMessage((HWND) GetHWND(), EM_GETMODIFY, 0, 0) != 0); -} - -// Makes 'unmodified' -void wxTextCtrl::DiscardEdits(void) -{ - SendMessage((HWND) GetHWND(), EM_SETMODIFY, FALSE, 0L); -} - -/* - * Some of the following functions are yet to be implemented - * - */ - -int wxTextCtrl::GetNumberOfLines(void) const -{ - return (int)SendMessage((HWND) GetHWND(), EM_GETLINECOUNT, (WPARAM)0, (LPARAM)0); -} - -long wxTextCtrl::XYToPosition(long x, long y) const -{ - HWND hWnd = (HWND) GetHWND(); - - // This gets the char index for the _beginning_ of this line - int charIndex = (int)SendMessage(hWnd, EM_LINEINDEX, (WPARAM)y, (LPARAM)0); - return (long)(x + charIndex); -} - -void wxTextCtrl::PositionToXY(long pos, long *x, long *y) const -{ - HWND hWnd = (HWND) GetHWND(); - - // This gets the line number containing the character - int lineNo = (int)SendMessage(hWnd, EM_LINEFROMCHAR, (WPARAM)pos, (LPARAM)0); - // This gets the char index for the _beginning_ of this line - int charIndex = (int)SendMessage(hWnd, EM_LINEINDEX, (WPARAM)lineNo, (LPARAM)0); - // The X position must therefore be the different between pos and charIndex - *x = (long)(pos - charIndex); - *y = (long)lineNo; -} - -void wxTextCtrl::ShowPosition(long pos) -{ - HWND hWnd = (HWND) GetHWND(); - - // To scroll to a position, we pass the number of lines and characters - // to scroll *by*. This means that we need to: - // (1) Find the line position of the current line. - // (2) Find the line position of pos. - // (3) Scroll by (pos - current). - // For now, ignore the horizontal scrolling. - - // Is this where scrolling is relative to - the line containing the caret? - // Or is the first visible line??? Try first visible line. -// int currentLineLineNo1 = (int)SendMessage(hWnd, EM_LINEFROMCHAR, (WPARAM)-1, (LPARAM)0L); - - int currentLineLineNo = (int)SendMessage(hWnd, EM_GETFIRSTVISIBLELINE, (WPARAM)0, (LPARAM)0L); - - int specifiedLineLineNo = (int)SendMessage(hWnd, EM_LINEFROMCHAR, (WPARAM)pos, (LPARAM)0L); - - int linesToScroll = specifiedLineLineNo - currentLineLineNo; - -/* - wxDebugMsg("Caret line: %d; Current visible line: %d; Specified line: %d; lines to scroll: %d\n", - currentLineLineNo1, currentLineLineNo, specifiedLineLineNo, linesToScroll); -*/ - - if (linesToScroll != 0) - (void)SendMessage(hWnd, EM_LINESCROLL, (WPARAM)0, (LPARAM)MAKELPARAM(linesToScroll, 0)); -} - -int wxTextCtrl::GetLineLength(long lineNo) const -{ - long charIndex = XYToPosition(0, lineNo); - HWND hWnd = (HWND) GetHWND(); - int len = (int)SendMessage(hWnd, EM_LINELENGTH, (WPARAM)charIndex, (LPARAM)0); - return len; -} - -wxString wxTextCtrl::GetLineText(long lineNo) const -{ - HWND hWnd = (HWND) GetHWND(); - *(WORD *)wxBuffer = 512; - int noChars = (int)SendMessage(hWnd, EM_GETLINE, (WPARAM)lineNo, (LPARAM)wxBuffer); - wxBuffer[noChars] = 0; - return wxString(wxBuffer); -} - -/* - * Text item - */ - -void wxTextCtrl::Command(wxCommandEvent & event) -{ - SetValue (event.GetString()); - ProcessCommand (event); -} - -void wxTextCtrl::OnDropFiles(wxDropFilesEvent& event) -{ - // By default, load the first file into the text window. - if (event.GetNumberOfFiles() > 0) - { - LoadFile(event.GetFiles()[0]); - } -} - -// The streambuf code was partly taken from chapter 3 by Jerry Schwarz of -// AT&T's "C++ Lanuage System Release 3.0 Library Manual" - Stein Somers - -//========================================================================= -// Called then the buffer is full (gcc 2.6.3) -// or when "endl" is output (Borland 4.5) -//========================================================================= -// Class declaration using multiple inheritance doesn't work properly for -// Borland. See note in textctrl.h. -#ifndef NO_TEXT_WINDOW_STREAM -int wxTextCtrl::overflow(int c) -{ - // Make sure there is a holding area - // this is not needed in usage as it automagically allocates - // it, but does someone want to emulate it for safety's sake? -#if wxUSE_IOSTREAMH - if ( allocate()==EOF ) - { - wxLogError("Streambuf allocation failed"); - return EOF; - } -#endif - - // Verify that there are no characters in get area - if ( gptr() && gptr() < egptr() ) - { - wxError("Who's trespassing my get area?","Internal error"); - return EOF; - } - - // Reset get area - setg(0,0,0); - - // Make sure there is a put area - if ( ! pptr() ) - { -/* This doesn't seem to be fatal so comment out error message */ -// wxError("Put area not opened","Internal error"); - -#if wxUSE_IOSTREAMH - setp( base(), base() ); -#else - setp( pbase(), pbase() ); -#endif - } - - // Determine how many characters have been inserted but no consumed - int plen = pptr() - pbase(); - - // Now Jerry relies on the fact that the buffer is at least 2 chars - // long, but the holding area "may be as small as 1" ??? - // And we need an additional \0, so let's keep this inefficient but - // safe copy. - - // If c!=EOF, it is a character that must also be comsumed - int xtra = c==EOF? 0 : 1; - - // Write temporary C-string to wxTextWindow - { - char *txt = new char[plen+xtra+1]; - memcpy(txt, pbase(), plen); - txt[plen] = (char)c; // append c - txt[plen+xtra] = '\0'; // append '\0' or overwrite c - // If the put area already contained \0, output will be truncated there - WriteText(txt); - delete[] txt; - } - - // Reset put area - setp(pbase(), epptr()); - -#if defined(__WATCOMC__) - return __NOT_EOF; -#elif defined(zapeof) // HP-UX (all cfront based?) - return zapeof(c); -#else - return c!=EOF ? c : 0; // this should make everybody happy -#endif - -/* OLD CODE - int len = pptr() - pbase(); - char *txt = new char[len+1]; - strncpy(txt, pbase(), len); - txt[len] = '\0'; - (*this) << txt; - setp(pbase(), epptr()); - delete[] txt; - return EOF; -*/ -} - -//========================================================================= -// called then "endl" is output (gcc) or then explicit sync is done (Borland) -//========================================================================= -int wxTextCtrl::sync(void) -{ - // Verify that there are no characters in get area - if ( gptr() && gptr() < egptr() ) - { - wxError("Who's trespassing my get area?","Internal error"); - return EOF; - } - - if ( pptr() && pptr() > pbase() ) return overflow(EOF); - - return 0; -/* OLD CODE - int len = pptr() - pbase(); - char *txt = new char[len+1]; - strncpy(txt, pbase(), len); - txt[len] = '\0'; - (*this) << txt; - setp(pbase(), epptr()); - delete[] txt; - return 0; -*/ -} - -//========================================================================= -// Should not be called by a "ostream". Used by a "istream" -//========================================================================= -int wxTextCtrl::underflow(void) -{ - return EOF; -} -#endif - -wxTextCtrl& wxTextCtrl::operator<<(const wxString& s) -{ - WriteText(s); - return *this; -} - -wxTextCtrl& wxTextCtrl::operator<<(float f) -{ - wxString str; - str.Printf("%.2f", f); - WriteText(str); - return *this; -} - -wxTextCtrl& wxTextCtrl::operator<<(double d) -{ - wxString str; - str.Printf("%.2f", d); - WriteText(str); - return *this; -} - -wxTextCtrl& wxTextCtrl::operator<<(int i) -{ - wxString str; - str.Printf("%d", i); - WriteText(str); - return *this; -} - -wxTextCtrl& wxTextCtrl::operator<<(long i) -{ - wxString str; - str.Printf("%ld", i); - WriteText(str); - return *this; -} - -wxTextCtrl& wxTextCtrl::operator<<(const char c) -{ - char buf[2]; - - buf[0] = c; - buf[1] = 0; - WriteText(buf); - return *this; -} - -WXHBRUSH wxTextCtrl::OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor, - WXUINT message, WXWPARAM wParam, WXLPARAM lParam) -{ -#if CTL3D - if ( m_useCtl3D ) - { - HBRUSH hbrush = Ctl3dCtlColorEx(message, wParam, lParam); - return (WXHBRUSH) hbrush; - } -#endif - - if (GetParent()->GetTransparentBackground()) - SetBkMode((HDC) pDC, TRANSPARENT); - else - SetBkMode((HDC) pDC, OPAQUE); - - ::SetBkColor((HDC) pDC, RGB(GetBackgroundColour().Red(), GetBackgroundColour().Green(), GetBackgroundColour().Blue())); - ::SetTextColor((HDC) pDC, RGB(GetForegroundColour().Red(), GetForegroundColour().Green(), GetForegroundColour().Blue())); - - wxBrush *backgroundBrush = wxTheBrushList->FindOrCreateBrush(GetBackgroundColour(), wxSOLID); - - // Note that this will be cleaned up in wxApp::OnIdle, if backgroundBrush - // has a zero usage count. - // NOT NOW - will be cleaned up at end of app. -// backgroundBrush->RealizeResource(); - return (WXHBRUSH) backgroundBrush->GetResourceHandle(); -} - -void wxTextCtrl::OnChar(wxKeyEvent& event) -{ - // Fix by Marcel Rasche to allow Alt-Ctrl insertion of special characters - switch(event.KeyCode()) - { - case '{': - case '}': - case '[': - case ']': - case '|': - case '~': - case '\\': - { - char c=(char)event.KeyCode(); - *this << c; - } - break; - } - if ( (event.KeyCode() == WXK_RETURN) && (m_windowStyle & wxPROCESS_ENTER)) - { - wxCommandEvent event(wxEVT_COMMAND_TEXT_ENTER, m_windowId); - event.SetEventObject( this ); - if ( GetEventHandler()->ProcessEvent(event) ) - return; - } - else if ( event.KeyCode() == WXK_TAB ) { - wxNavigationKeyEvent event; - event.SetDirection(!(::GetKeyState(VK_SHIFT) & 0x100)); - event.SetWindowChange(FALSE); - event.SetEventObject(this); - - if ( GetEventHandler()->ProcessEvent(event) ) - return; - } - - event.Skip(); -} - -long wxTextCtrl::MSWGetDlgCode() -{ - long lRc = DLGC_WANTCHARS | DLGC_WANTARROWS; - if ( m_windowStyle & wxTE_PROCESS_ENTER ) - lRc |= DLGC_WANTMESSAGE; - else if ( m_windowStyle & wxTE_MULTILINE ) - lRc |= DLGC_WANTMESSAGE; - // ?? - if ( m_windowStyle & wxTE_PROCESS_TAB ) - lRc |= DLGC_WANTTAB; - - return lRc; -} - -void wxTextCtrl::OnEraseBackground(wxEraseEvent& event) -{ - if ( m_windowStyle & wxTE_MULTILINE ) - { - // No flicker - only problem is we probably can't change the background - Default(); -/* - RECT rect; - ::GetClientRect((HWND) GetHWND(), &rect); - - HBRUSH hBrush = ::CreateSolidBrush(PALETTERGB(GetBackgroundColour().Red(), GetBackgroundColour().Green(), GetBackgroundColour().Blue())); - int mode = ::SetMapMode((HDC) event.GetDC()->GetHDC(), MM_TEXT); - - ::FillRect ((HDC) event.GetDC()->GetHDC(), &rect, hBrush); - ::DeleteObject(hBrush); - ::SetMapMode((HDC) event.GetDC()->GetHDC(), mode); -*/ - } -// wxWindow::OnEraseBackground(event); -} - -bool wxTextCtrl::MSWCommand(WXUINT param, WXWORD WXUNUSED(id)) -{ -/* - // Debugging - wxDebugMsg("Edit control %d: ", (int)id); - switch (param) - { - case EN_SETFOCUS: - wxDebugMsg("EN_SETFOCUS\n"); - break; - case EN_KILLFOCUS: - wxDebugMsg("EN_KILLFOCUS\n"); - break; - case EN_CHANGE: - wxDebugMsg("EN_CHANGE\n"); - break; - case EN_UPDATE: - wxDebugMsg("EN_UPDATE\n"); - break; - case EN_ERRSPACE: - wxDebugMsg("EN_ERRSPACE\n"); - break; - case EN_MAXTEXT: - wxDebugMsg("EN_MAXTEXT\n"); - break; - case EN_HSCROLL: - wxDebugMsg("EN_HSCROLL\n"); - break; - case EN_VSCROLL: - wxDebugMsg("EN_VSCROLL\n"); - break; - default: - wxDebugMsg("Unknown EDIT notification\n"); - break; - } -*/ - switch (param) - { - case EN_SETFOCUS: - case EN_KILLFOCUS: - { - wxFocusEvent event(param == EN_KILLFOCUS ? wxEVT_KILL_FOCUS - : wxEVT_SET_FOCUS, - m_windowId); - event.SetEventObject( this ); - GetEventHandler()->ProcessEvent(event); - } - break; - - case EN_CHANGE: - { - wxCommandEvent event(wxEVT_COMMAND_TEXT_UPDATED, m_windowId); - wxString val(GetValue()); - if ( !val.IsNull() ) - event.m_commandString = WXSTRINGCAST val; - event.SetEventObject( this ); - ProcessCommand(event); - } - break; - - // the other notification messages are not processed - case EN_UPDATE: - case EN_ERRSPACE: - case EN_MAXTEXT: - case EN_HSCROLL: - case EN_VSCROLL: - default: - return FALSE; - } - - // processed - return TRUE; -} - - -// For Rich Edit controls. Do we need it? -#if 0 -#if wxUSE_RICHEDIT -bool wxTextCtrl::MSWNotify(WXWPARAM wParam, WXLPARAM lParam) -{ - wxCommandEvent event(0, m_windowId); - int eventType = 0; - NMHDR *hdr1 = (NMHDR *) lParam; - switch ( hdr1->code ) - { - // Insert case code here - default : - return wxControl::MSWNotify(wParam, lParam); - break; - } - - event.SetEventObject( this ); - event.SetEventType(eventType); - - if ( !GetEventHandler()->ProcessEvent(event) ) - return FALSE; - - return TRUE; -} -#endif -#endif - diff --git a/src/msw/thread.cpp b/src/msw/thread.cpp deleted file mode 100644 index 1e642fd8e8..0000000000 --- a/src/msw/thread.cpp +++ /dev/null @@ -1,853 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: thread.cpp -// Purpose: wxThread Implementation -// Author: Original from Wolfram Gloger/Guilhem Lavaux -// Modified by: Vadim Zeitlin to make it work :-) -// Created: 04/22/98 -// RCS-ID: $Id$ -// Copyright: (c) Wolfram Gloger (1996, 1997); Guilhem Lavaux (1998), -// Vadim Zeitlin (1999) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ - #pragma implementation "thread.h" -#endif - -// ---------------------------------------------------------------------------- -// headers -// ---------------------------------------------------------------------------- - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#if defined(__BORLANDC__) - #pragma hdrstop -#endif - -#ifndef WX_PRECOMP - #include "wx/wx.h" -#endif - -#if wxUSE_THREADS - -#include - -#include - -#include "wx/module.h" -#include "wx/thread.h" - -// the possible states of the thread ("=>" shows all possible transitions from -// this state) -enum wxThreadState -{ - STATE_NEW, // didn't start execution yet (=> RUNNING) - STATE_RUNNING, // thread is running (=> PAUSED, CANCELED) - STATE_PAUSED, // thread is temporarily suspended (=> RUNNING) - STATE_CANCELED, // thread should terminate a.s.a.p. (=> EXITED) - STATE_EXITED // thread is terminating -}; - -// ---------------------------------------------------------------------------- -// static variables -// ---------------------------------------------------------------------------- - -// TLS index of the slot where we store the pointer to the current thread -static DWORD s_tlsThisThread = 0xFFFFFFFF; - -// id of the main thread - the one which can call GUI functions without first -// calling wxMutexGuiEnter() -static DWORD s_idMainThread = 0; - -// if it's FALSE, some secondary thread is holding the GUI lock -static bool s_bGuiOwnedByMainThread = TRUE; - -// critical section which controls access to all GUI functions: any secondary -// thread (i.e. except the main one) must enter this crit section before doing -// any GUI calls -static wxCriticalSection *s_critsectGui = NULL; - -// critical section which protects s_nWaitingForGui variable -static wxCriticalSection *s_critsectWaitingForGui = NULL; - -// number of threads waiting for GUI in wxMutexGuiEnter() -static size_t s_nWaitingForGui = 0; - -// are we waiting for a thread termination? -static bool s_waitingForThread = FALSE; - -// ============================================================================ -// Windows implementation of thread classes -// ============================================================================ - -// ---------------------------------------------------------------------------- -// wxMutex implementation -// ---------------------------------------------------------------------------- -class wxMutexInternal -{ -public: - HANDLE p_mutex; -}; - -wxMutex::wxMutex() -{ - p_internal = new wxMutexInternal; - p_internal->p_mutex = CreateMutex(NULL, FALSE, NULL); - if ( !p_internal->p_mutex ) - { - wxLogSysError(_("Can not create mutex.")); - } - - m_locked = 0; -} - -wxMutex::~wxMutex() -{ - if (m_locked > 0) - wxLogDebug("Warning: freeing a locked mutex (%d locks).", m_locked); - CloseHandle(p_internal->p_mutex); -} - -wxMutexError wxMutex::Lock() -{ - DWORD ret; - - ret = WaitForSingleObject(p_internal->p_mutex, INFINITE); - switch ( ret ) - { - case WAIT_ABANDONED: - return wxMUTEX_BUSY; - - case WAIT_OBJECT_0: - // ok - break; - - case WAIT_FAILED: - wxLogSysError(_("Couldn't acquire a mutex lock")); - return wxMUTEX_MISC_ERROR; - - case WAIT_TIMEOUT: - default: - wxFAIL_MSG("impossible return value in wxMutex::Lock"); - } - - m_locked++; - return wxMUTEX_NO_ERROR; -} - -wxMutexError wxMutex::TryLock() -{ - DWORD ret; - - ret = WaitForSingleObject(p_internal->p_mutex, 0); - if (ret == WAIT_TIMEOUT || ret == WAIT_ABANDONED) - return wxMUTEX_BUSY; - - m_locked++; - return wxMUTEX_NO_ERROR; -} - -wxMutexError wxMutex::Unlock() -{ - if (m_locked > 0) - m_locked--; - - BOOL ret = ReleaseMutex(p_internal->p_mutex); - if ( ret == 0 ) - { - wxLogSysError(_("Couldn't release a mutex")); - return wxMUTEX_MISC_ERROR; - } - - return wxMUTEX_NO_ERROR; -} - -// ---------------------------------------------------------------------------- -// wxCondition implementation -// ---------------------------------------------------------------------------- - -class wxConditionInternal -{ -public: - HANDLE event; - int waiters; -}; - -wxCondition::wxCondition() -{ - p_internal = new wxConditionInternal; - p_internal->event = CreateEvent(NULL, FALSE, FALSE, NULL); - if ( !p_internal->event ) - { - wxLogSysError(_("Can not create event object.")); - } - - p_internal->waiters = 0; -} - -wxCondition::~wxCondition() -{ - CloseHandle(p_internal->event); -} - -void wxCondition::Wait(wxMutex& mutex) -{ - mutex.Unlock(); - p_internal->waiters++; - WaitForSingleObject(p_internal->event, INFINITE); - p_internal->waiters--; - mutex.Lock(); -} - -bool wxCondition::Wait(wxMutex& mutex, - unsigned long sec, - unsigned long nsec) -{ - DWORD ret; - - mutex.Unlock(); - p_internal->waiters++; - ret = WaitForSingleObject(p_internal->event, (sec*1000)+(nsec/1000000)); - p_internal->waiters--; - mutex.Lock(); - - return (ret != WAIT_TIMEOUT); -} - -void wxCondition::Signal() -{ - SetEvent(p_internal->event); -} - -void wxCondition::Broadcast() -{ - int i; - - for (i=0;iwaiters;i++) - { - if ( SetEvent(p_internal->event) == 0 ) - { - wxLogSysError(_("Couldn't change the state of event object.")); - } - } -} - -// ---------------------------------------------------------------------------- -// wxCriticalSection implementation -// ---------------------------------------------------------------------------- - -class wxCriticalSectionInternal -{ -public: - // init the critical section object - wxCriticalSectionInternal() - { ::InitializeCriticalSection(&m_data); } - - // implicit cast to the associated data - operator CRITICAL_SECTION *() { return &m_data; } - - // free the associated ressources - ~wxCriticalSectionInternal() - { ::DeleteCriticalSection(&m_data); } - -private: - CRITICAL_SECTION m_data; -}; - -wxCriticalSection::wxCriticalSection() -{ - m_critsect = new wxCriticalSectionInternal; -} - -wxCriticalSection::~wxCriticalSection() -{ - delete m_critsect; -} - -void wxCriticalSection::Enter() -{ - ::EnterCriticalSection(*m_critsect); -} - -void wxCriticalSection::Leave() -{ - ::LeaveCriticalSection(*m_critsect); -} - -// ---------------------------------------------------------------------------- -// wxThread implementation -// ---------------------------------------------------------------------------- - -// wxThreadInternal class -// ---------------------- - -class wxThreadInternal -{ -public: - wxThreadInternal() - { - m_hThread = 0; - m_state = STATE_NEW; - m_priority = WXTHREAD_DEFAULT_PRIORITY; - } - - // create a new (suspended) thread (for the given thread object) - bool Create(wxThread *thread); - - // suspend/resume/terminate - bool Suspend(); - bool Resume(); - void Cancel() { m_state = STATE_CANCELED; } - - // thread state - void SetState(wxThreadState state) { m_state = state; } - wxThreadState GetState() const { return m_state; } - - // thread priority - void SetPriority(unsigned int priority) { m_priority = priority; } - unsigned int GetPriority() const { return m_priority; } - - // thread handle and id - HANDLE GetHandle() const { return m_hThread; } - DWORD GetId() const { return m_tid; } - - // thread function - static DWORD WinThreadStart(wxThread *thread); - -private: - HANDLE m_hThread; // handle of the thread - wxThreadState m_state; // state, see wxThreadState enum - unsigned int m_priority; // thread priority in "wx" units - DWORD m_tid; // thread id -}; - -DWORD wxThreadInternal::WinThreadStart(wxThread *thread) -{ - // store the thread object in the TLS - if ( !::TlsSetValue(s_tlsThisThread, thread) ) - { - wxLogSysError(_("Can not start thread: error writing TLS.")); - - return (DWORD)-1; - } - - DWORD ret = (DWORD)thread->Entry(); - thread->p_internal->SetState(STATE_EXITED); - thread->OnExit(); - - delete thread; - - return ret; -} - -bool wxThreadInternal::Create(wxThread *thread) -{ - m_hThread = ::CreateThread - ( - NULL, // default security - 0, // default stack size - (LPTHREAD_START_ROUTINE) // thread entry point - wxThreadInternal::WinThreadStart, // - (LPVOID)thread, // parameter - CREATE_SUSPENDED, // flags - &m_tid // [out] thread id - ); - - if ( m_hThread == NULL ) - { - wxLogSysError(_("Can't create thread")); - - return FALSE; - } - - // translate wxWindows priority to the Windows one - int win_priority; - if (m_priority <= 20) - win_priority = THREAD_PRIORITY_LOWEST; - else if (m_priority <= 40) - win_priority = THREAD_PRIORITY_BELOW_NORMAL; - else if (m_priority <= 60) - win_priority = THREAD_PRIORITY_NORMAL; - else if (m_priority <= 80) - win_priority = THREAD_PRIORITY_ABOVE_NORMAL; - else if (m_priority <= 100) - win_priority = THREAD_PRIORITY_HIGHEST; - else - { - wxFAIL_MSG("invalid value of thread priority parameter"); - win_priority = THREAD_PRIORITY_NORMAL; - } - - if ( ::SetThreadPriority(m_hThread, win_priority) == 0 ) - { - wxLogSysError(_("Can't set thread priority")); - } - - return TRUE; -} - -bool wxThreadInternal::Suspend() -{ - DWORD nSuspendCount = ::SuspendThread(m_hThread); - if ( nSuspendCount == (DWORD)-1 ) - { - wxLogSysError(_("Can not suspend thread %x"), m_hThread); - - return FALSE; - } - - m_state = STATE_PAUSED; - - return TRUE; -} - -bool wxThreadInternal::Resume() -{ - DWORD nSuspendCount = ::ResumeThread(m_hThread); - if ( nSuspendCount == (DWORD)-1 ) - { - wxLogSysError(_("Can not resume thread %x"), m_hThread); - - return FALSE; - } - - m_state = STATE_RUNNING; - - return TRUE; -} - -// static functions -// ---------------- - -wxThread *wxThread::This() -{ - wxThread *thread = (wxThread *)::TlsGetValue(s_tlsThisThread); - - // be careful, 0 may be a valid return value as well - if ( !thread && (::GetLastError() != NO_ERROR) ) - { - wxLogSysError(_("Couldn't get the current thread pointer")); - - // return NULL... - } - - return thread; -} - -bool wxThread::IsMain() -{ - return ::GetCurrentThreadId() == s_idMainThread; -} - -void wxThread::Yield() -{ - // 0 argument to Sleep() is special - ::Sleep(0); -} - -void wxThread::Sleep(unsigned long milliseconds) -{ - ::Sleep(milliseconds); -} - -// create/start thread -// ------------------- - -wxThreadError wxThread::Create() -{ - if ( !p_internal->Create(this) ) - return wxTHREAD_NO_RESOURCE; - - return wxTHREAD_NO_ERROR; -} - -wxThreadError wxThread::Run() -{ - wxCriticalSectionLocker lock(m_critsect); - - if ( p_internal->GetState() != STATE_NEW ) - { - // actually, it may be almost any state at all, not only STATE_RUNNING - return wxTHREAD_RUNNING; - } - - return Resume(); -} - -// suspend/resume thread -// --------------------- - -wxThreadError wxThread::Pause() -{ - wxCriticalSectionLocker lock(m_critsect); - - return p_internal->Suspend() ? wxTHREAD_NO_ERROR : wxTHREAD_MISC_ERROR; -} - -wxThreadError wxThread::Resume() -{ - wxCriticalSectionLocker lock(m_critsect); - - return p_internal->Resume() ? wxTHREAD_NO_ERROR : wxTHREAD_MISC_ERROR; -} - -// stopping thread -// --------------- - -wxThread::ExitCode wxThread::Delete() -{ - ExitCode rc = 0; - - // Delete() is always safe to call, so consider all possible states - if ( IsPaused() ) - Resume(); - - if ( IsRunning() ) - { - if ( IsMain() ) - { - // set flag for wxIsWaitingForThread() - s_waitingForThread = TRUE; - - wxBeginBusyCursor(); - } - - HANDLE hThread; - { - wxCriticalSectionLocker lock(m_critsect); - - p_internal->Cancel(); - hThread = p_internal->GetHandle(); - } - - // we can't just wait for the thread to terminate because it might be - // calling some GUI functions and so it will never terminate before we - // process the Windows messages that result from these functions - DWORD result; - do - { - result = ::MsgWaitForMultipleObjects - ( - 1, // number of objects to wait for - &hThread, // the objects - FALSE, // don't wait for all objects - INFINITE, // no timeout - QS_ALLEVENTS // return as soon as there are any events - ); - - switch ( result ) - { - case 0xFFFFFFFF: - // error - wxLogSysError(_("Can not wait for thread termination")); - Kill(); - return (ExitCode)-1; - - case WAIT_OBJECT_0: - // thread we're waiting for terminated - break; - - case WAIT_OBJECT_0 + 1: - // new message arrived, process it - if ( !wxTheApp->DoMessage() ) - { - // WM_QUIT received: kill the thread - Kill(); - - return (ExitCode)-1; - } - - if ( IsMain() ) - { - // give the thread we're waiting for chance to exit - // from the GUI call it might have been in - if ( (s_nWaitingForGui > 0) && wxGuiOwnedByMainThread() ) - { - wxMutexGuiLeave(); - } - } - - break; - - default: - wxFAIL_MSG("unexpected result of MsgWaitForMultipleObject"); - } - } while ( result != WAIT_OBJECT_0 ); - - if ( IsMain() ) - { - s_waitingForThread = FALSE; - - wxEndBusyCursor(); - } - - if ( !::GetExitCodeThread(hThread, (LPDWORD)&rc) ) - { - wxLogLastError("GetExitCodeThread"); - - rc = (ExitCode)-1; - } - - wxASSERT_MSG( (LPVOID)rc != (LPVOID)STILL_ACTIVE, - "thread must be already terminated." ); - - ::CloseHandle(hThread); - } - - return rc; -} - -wxThreadError wxThread::Kill() -{ - if ( !IsRunning() ) - return wxTHREAD_NOT_RUNNING; - - if ( !::TerminateThread(p_internal->GetHandle(), (DWORD)-1) ) - { - wxLogSysError(_("Couldn't terminate thread")); - - return wxTHREAD_MISC_ERROR; - } - - delete this; - - return wxTHREAD_NO_ERROR; -} - -void wxThread::Exit(void *status) -{ - delete this; - - ::ExitThread((DWORD)status); - - wxFAIL_MSG("Couldn't return from ExitThread()!"); -} - -void wxThread::SetPriority(unsigned int prio) -{ - wxCriticalSectionLocker lock(m_critsect); - - p_internal->SetPriority(prio); -} - -unsigned int wxThread::GetPriority() const -{ - wxCriticalSectionLocker lock((wxCriticalSection &)m_critsect); - - return p_internal->GetPriority(); -} - -unsigned long wxThread::GetID() const -{ - wxCriticalSectionLocker lock((wxCriticalSection &)m_critsect); - - return (unsigned long)p_internal->GetId(); -} - -bool wxThread::IsRunning() const -{ - wxCriticalSectionLocker lock((wxCriticalSection &)m_critsect); - - return p_internal->GetState() == STATE_RUNNING; -} - -bool wxThread::IsAlive() const -{ - wxCriticalSectionLocker lock((wxCriticalSection &)m_critsect); - - return (p_internal->GetState() == STATE_RUNNING) || - (p_internal->GetState() == STATE_PAUSED); -} - -bool wxThread::TestDestroy() -{ - wxCriticalSectionLocker lock((wxCriticalSection &)m_critsect); - - return p_internal->GetState() == STATE_CANCELED; -} - -wxThread::wxThread() -{ - p_internal = new wxThreadInternal(); -} - -wxThread::~wxThread() -{ - delete p_internal; -} - -// ---------------------------------------------------------------------------- -// Automatic initialization for thread module -// ---------------------------------------------------------------------------- - -class wxThreadModule : public wxModule -{ -public: - virtual bool OnInit(); - virtual void OnExit(); - -private: - DECLARE_DYNAMIC_CLASS(wxThreadModule) -}; - -IMPLEMENT_DYNAMIC_CLASS(wxThreadModule, wxModule) - -bool wxThreadModule::OnInit() -{ - // allocate TLS index for storing the pointer to the current thread - s_tlsThisThread = ::TlsAlloc(); - if ( s_tlsThisThread == 0xFFFFFFFF ) - { - // in normal circumstances it will only happen if all other - // TLS_MINIMUM_AVAILABLE (>= 64) indices are already taken - in other - // words, this should never happen - wxLogSysError(_("Thread module initialization failed: " - "impossible to allocate index in thread " - "local storage")); - - return FALSE; - } - - // main thread doesn't have associated wxThread object, so store 0 in the - // TLS instead - if ( !::TlsSetValue(s_tlsThisThread, (LPVOID)0) ) - { - ::TlsFree(s_tlsThisThread); - s_tlsThisThread = 0xFFFFFFFF; - - wxLogSysError(_("Thread module initialization failed: " - "can not store value in thread local storage")); - - return FALSE; - } - - s_critsectWaitingForGui = new wxCriticalSection(); - - s_critsectGui = new wxCriticalSection(); - s_critsectGui->Enter(); - - // no error return for GetCurrentThreadId() - s_idMainThread = ::GetCurrentThreadId(); - - return TRUE; -} - -void wxThreadModule::OnExit() -{ - if ( !::TlsFree(s_tlsThisThread) ) - { - wxLogLastError("TlsFree failed."); - } - - if ( s_critsectGui ) - { - s_critsectGui->Leave(); - delete s_critsectGui; - s_critsectGui = NULL; - } - - wxDELETE(s_critsectWaitingForGui); -} - -// ---------------------------------------------------------------------------- -// under Windows, these functions are implemented usign a critical section and -// not a mutex, so the names are a bit confusing -// ---------------------------------------------------------------------------- - -void WXDLLEXPORT wxMutexGuiEnter() -{ - // this would dead lock everything... - wxASSERT_MSG( !wxThread::IsMain(), - "main thread doesn't want to block in wxMutexGuiEnter()!" ); - - // the order in which we enter the critical sections here is crucial!! - - // set the flag telling to the main thread that we want to do some GUI - { - wxCriticalSectionLocker enter(*s_critsectWaitingForGui); - - s_nWaitingForGui++; - } - - wxWakeUpMainThread(); - - // now we may block here because the main thread will soon let us in - // (during the next iteration of OnIdle()) - s_critsectGui->Enter(); -} - -void WXDLLEXPORT wxMutexGuiLeave() -{ - wxCriticalSectionLocker enter(*s_critsectWaitingForGui); - - if ( wxThread::IsMain() ) - { - s_bGuiOwnedByMainThread = FALSE; - } - else - { - // decrement the number of waiters now - wxASSERT_MSG( s_nWaitingForGui > 0, - "calling wxMutexGuiLeave() without entering it first?" ); - - s_nWaitingForGui--; - - wxWakeUpMainThread(); - } - - s_critsectGui->Leave(); -} - -void WXDLLEXPORT wxMutexGuiLeaveOrEnter() -{ - wxASSERT_MSG( wxThread::IsMain(), - "only main thread may call wxMutexGuiLeaveOrEnter()!" ); - - wxCriticalSectionLocker enter(*s_critsectWaitingForGui); - - if ( s_nWaitingForGui == 0 ) - { - // no threads are waiting for GUI - so we may acquire the lock without - // any danger (but only if we don't already have it) - if ( !wxGuiOwnedByMainThread() ) - { - s_critsectGui->Enter(); - - s_bGuiOwnedByMainThread = TRUE; - } - //else: already have it, nothing to do - } - else - { - // some threads are waiting, release the GUI lock if we have it - if ( wxGuiOwnedByMainThread() ) - { - wxMutexGuiLeave(); - } - //else: some other worker thread is doing GUI - } -} - -bool WXDLLEXPORT wxGuiOwnedByMainThread() -{ - return s_bGuiOwnedByMainThread; -} - -// wake up the main thread if it's in ::GetMessage() -void WXDLLEXPORT wxWakeUpMainThread() -{ - // sending any message would do - hopefully WM_NULL is harmless enough - if ( !::PostThreadMessage(s_idMainThread, WM_NULL, 0, 0) ) - { - // should never happen - wxLogLastError("PostThreadMessage(WM_NULL)"); - } -} - -bool WXDLLEXPORT wxIsWaitingForThread() -{ - return s_waitingForThread; -} - -#endif // wxUSE_THREADS diff --git a/src/msw/timer.cpp b/src/msw/timer.cpp deleted file mode 100644 index 0842be5308..0000000000 --- a/src/msw/timer.cpp +++ /dev/null @@ -1,149 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: timer.cpp -// Purpose: wxTimer implementation -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ - #pragma implementation "timer.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ - #pragma hdrstop -#endif - -#ifndef WX_PRECOMP - #include "wx/setup.h" - #include "wx/list.h" - #include "wx/event.h" - #include "wx/app.h" -#endif - -#include "wx/intl.h" -#include "wx/log.h" - -#include "wx/timer.h" -#include "wx/msw/private.h" - -#include -#include - -#if !defined(__SC__) && !defined(__GNUWIN32__) && !defined(__MWERKS__) - #include -#endif - -// ---------------------------------------------------------------------------- -// private functions -// ---------------------------------------------------------------------------- - -wxList wxTimerList(wxKEY_INTEGER); -UINT WINAPI _EXPORT wxTimerProc(HWND hwnd, WORD, int idTimer, DWORD); - -// ---------------------------------------------------------------------------- -// macros -// ---------------------------------------------------------------------------- - -#ifdef __WIN32__ - #define _EXPORT /**/ -#else - #define _EXPORT _export -#endif - -#if !USE_SHARED_LIBRARY - IMPLEMENT_ABSTRACT_CLASS(wxTimer, wxObject) -#endif - -// ============================================================================ -// implementation -// ============================================================================ - -// ---------------------------------------------------------------------------- -// wxTimer class -// ---------------------------------------------------------------------------- -wxTimer::wxTimer(void) -{ - milli = 0 ; - lastMilli = -1 ; - id = 0; -} - -wxTimer::~wxTimer(void) -{ - Stop(); - - wxTimerList.DeleteObject(this); -} - -bool wxTimer::Start(int milliseconds, bool mode) -{ - oneShot = mode ; - if (milliseconds < 0) - milliseconds = lastMilli; - - wxCHECK_MSG( milliseconds > 0, FALSE, "invalid value for timer timeour" ); - - lastMilli = milli = milliseconds; - - wxTimerList.DeleteObject(this); - TIMERPROC wxTimerProcInst = (TIMERPROC) - MakeProcInstance((FARPROC)wxTimerProc, wxGetInstance()); - - id = SetTimer(NULL, (UINT)(id ? id : 1), - (UINT)milliseconds, wxTimerProcInst); - if (id > 0) - { - wxTimerList.Append(id, this); - - return TRUE; - } - else - { - wxLogSysError(_("Couldn't create a timer")); - - return FALSE; - } -} - -void wxTimer::Stop(void) -{ - if (id) { - KillTimer(NULL, (UINT)id); - wxTimerList.DeleteObject(this); /* @@@@ */ - } - id = 0 ; - milli = 0 ; -} - -// ---------------------------------------------------------------------------- -// private functions -// ---------------------------------------------------------------------------- -void wxProcessTimer(wxTimer& timer) -{ - // Avoid to process spurious timer events - if ( timer.id == 0) - return; - - if ( timer.oneShot ) - timer.Stop(); - - timer.Notify(); -} - -UINT WINAPI _EXPORT wxTimerProc(HWND WXUNUSED(hwnd), WORD, int idTimer, DWORD) -{ - wxNode *node = wxTimerList.Find((long)idTimer); - - wxCHECK_MSG( node, 0, "bogus timer id in wxTimerProc" ); - - wxProcessTimer(*(wxTimer *)node->Data()); - - return 0; -} diff --git a/src/msw/treectrl.cpp b/src/msw/treectrl.cpp deleted file mode 100644 index f174a3d021..0000000000 --- a/src/msw/treectrl.cpp +++ /dev/null @@ -1,1047 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: treectrl.cpp -// Purpose: wxTreeCtrl -// Author: Julian Smart -// Modified by: Vadim Zeitlin to be less MSW-specific on 10.10.98 -// Created: 1997 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -// ============================================================================ -// declarations -// ============================================================================ - -// ---------------------------------------------------------------------------- -// headers -// ---------------------------------------------------------------------------- -#ifdef __GNUG__ - #pragma implementation "treectrl.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ - #pragma hdrstop -#endif - -#ifndef WX_PRECOMP - #include "wx/wx.h" -#endif - -#if defined(__WIN95__) - -#include "wx/log.h" -#include "wx/dynarray.h" -#include "wx/imaglist.h" -#include "wx/msw/treectrl.h" - -#include "wx/msw/private.h" - -#if (defined(__WIN95__) && !defined(__GNUWIN32__)) || defined(__TWIN32__) - #include -#endif - -#ifdef GetFirstChild -#undef GetFirstChild -#endif - -#ifdef GetNextChild -#undef GetNextChild -#endif - -#ifdef GetNextSibling -#undef GetNextSibling -#endif - -#ifdef GetClassInfo -#undef GetClassInfo -#endif - -// Bug in headers, sometimes -#ifndef TVIS_FOCUSED - #define TVIS_FOCUSED 0x0001 -#endif - -// ---------------------------------------------------------------------------- -// private classes -// ---------------------------------------------------------------------------- - -// a convenient wrapper around TV_ITEM struct which adds a ctor -struct wxTreeViewItem : public TV_ITEM -{ - wxTreeViewItem(const wxTreeItemId& item, - UINT mask_, UINT stateMask_ = 0) - { - mask = mask_; - stateMask = stateMask_; - hItem = (HTREEITEM) (WXHTREEITEM) item; - } -}; - -// ---------------------------------------------------------------------------- -// macros -// ---------------------------------------------------------------------------- - -#if !USE_SHARED_LIBRARY - IMPLEMENT_DYNAMIC_CLASS(wxTreeCtrl, wxControl) -#endif - -// hide the ugly cast (of course, the macro is _quite_ ugly too...) -#define wxhWnd ((HWND)m_hWnd) - -// ---------------------------------------------------------------------------- -// variables -// ---------------------------------------------------------------------------- - -// handy table for sending events -static const wxEventType g_events[2][2] = -{ - { wxEVT_COMMAND_TREE_ITEM_COLLAPSED, wxEVT_COMMAND_TREE_ITEM_COLLAPSING }, - { wxEVT_COMMAND_TREE_ITEM_EXPANDED, wxEVT_COMMAND_TREE_ITEM_EXPANDING } -}; - -// ============================================================================ -// implementation -// ============================================================================ - -// ---------------------------------------------------------------------------- -// construction and destruction -// ---------------------------------------------------------------------------- - -void wxTreeCtrl::Init() -{ - m_imageListNormal = NULL; - m_imageListState = NULL; - m_textCtrl = NULL; -} - -bool wxTreeCtrl::Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos, const wxSize& size, - long style, const wxValidator& validator, - const wxString& name) -{ - Init(); - - wxSystemSettings settings; - - SetName(name); - SetValidator(validator); - - m_windowStyle = style; - - SetParent(parent); - - m_windowId = (id == -1) ? NewControlId() : id; - - DWORD wstyle = WS_VISIBLE | WS_CHILD | WS_TABSTOP | TVS_HASLINES; - - bool want3D; - WXDWORD exStyle = Determine3DEffects(WS_EX_CLIENTEDGE, &want3D) ; - - // Even with extended styles, need to combine with WS_BORDER - // for them to look right. - if ( want3D || wxStyleHasBorder(m_windowStyle) ) - { - wstyle |= WS_BORDER; - } - - if ( m_windowStyle & wxTR_HAS_BUTTONS ) - wstyle |= TVS_HASBUTTONS; - - if ( m_windowStyle & wxTR_EDIT_LABELS ) - wstyle |= TVS_EDITLABELS; - - if ( m_windowStyle & wxTR_LINES_AT_ROOT ) - wstyle |= TVS_LINESATROOT; - - // Create the tree control. - m_hWnd = (WXHWND)::CreateWindowEx - ( - exStyle, - WC_TREEVIEW, - "", - wstyle, - pos.x, pos.y, size.x, size.y, - (HWND)parent->GetHWND(), - (HMENU)m_windowId, - wxGetInstance(), - NULL - ); - - wxCHECK_MSG( m_hWnd, FALSE, "Failed to create tree ctrl" ); - - if ( parent ) - parent->AddChild(this); - - SubclassWin(m_hWnd); - - return TRUE; -} - -wxTreeCtrl::~wxTreeCtrl() -{ - DeleteTextCtrl(); - - // delete user data to prevent memory leaks - DeleteAllItems(); -} - -// ---------------------------------------------------------------------------- -// accessors -// ---------------------------------------------------------------------------- - -// simple wrappers which add error checking in debug mode - -bool wxTreeCtrl::DoGetItem(wxTreeViewItem* tvItem) const -{ - if ( !TreeView_GetItem(wxhWnd, tvItem) ) - { - wxLogLastError("TreeView_GetItem"); - - return FALSE; - } - - return TRUE; -} - -void wxTreeCtrl::DoSetItem(wxTreeViewItem* tvItem) -{ - if ( TreeView_SetItem(wxhWnd, tvItem) == -1 ) - { - wxLogLastError("TreeView_SetItem"); - } -} - -size_t wxTreeCtrl::GetCount() const -{ - return (size_t)TreeView_GetCount(wxhWnd); -} - -unsigned int wxTreeCtrl::GetIndent() const -{ - return TreeView_GetIndent(wxhWnd); -} - -void wxTreeCtrl::SetIndent(unsigned int indent) -{ - TreeView_SetIndent(wxhWnd, indent); -} - -wxImageList *wxTreeCtrl::GetImageList() const -{ - return m_imageListNormal; -} - -wxImageList *wxTreeCtrl::GetStateImageList() const -{ - return m_imageListNormal; -} - -void wxTreeCtrl::SetAnyImageList(wxImageList *imageList, int which) -{ - // no error return - TreeView_SetImageList(wxhWnd, - imageList ? imageList->GetHIMAGELIST() : 0, - which); -} - -void wxTreeCtrl::SetImageList(wxImageList *imageList) -{ - SetAnyImageList(m_imageListNormal = imageList, TVSIL_NORMAL); -} - -void wxTreeCtrl::SetStateImageList(wxImageList *imageList) -{ - SetAnyImageList(m_imageListState = imageList, TVSIL_STATE); -} - -size_t wxTreeCtrl::GetChildrenCount(const wxTreeItemId& item, bool recursively) -{ - long cookie; - - size_t result = 0; - - wxArrayLong children; - wxTreeItemId child = GetFirstChild(item, cookie); - while ( child.IsOk() ) - { - if ( recursively ) - { - // recursive call - result += GetChildrenCount(child, TRUE); - } - - // add the child to the result in any case - result++; - - child = GetNextChild(item, cookie); - } - - return result; -} - -// ---------------------------------------------------------------------------- -// Item access -// ---------------------------------------------------------------------------- - -wxString wxTreeCtrl::GetItemText(const wxTreeItemId& item) const -{ - char buf[512]; // the size is arbitrary... - - wxTreeViewItem tvItem(item, TVIF_TEXT); - tvItem.pszText = buf; - tvItem.cchTextMax = WXSIZEOF(buf); - if ( !DoGetItem(&tvItem) ) - { - // don't return some garbage which was on stack, but an empty string - buf[0] = '\0'; - } - - return wxString(buf); -} - -void wxTreeCtrl::SetItemText(const wxTreeItemId& item, const wxString& text) -{ - wxTreeViewItem tvItem(item, TVIF_TEXT); - tvItem.pszText = (char *)text.c_str(); // conversion is ok - DoSetItem(&tvItem); -} - -int wxTreeCtrl::GetItemImage(const wxTreeItemId& item) const -{ - wxTreeViewItem tvItem(item, TVIF_IMAGE); - DoGetItem(&tvItem); - - return tvItem.iImage; -} - -void wxTreeCtrl::SetItemImage(const wxTreeItemId& item, int image) -{ - wxTreeViewItem tvItem(item, TVIF_IMAGE); - tvItem.iImage = image; - DoSetItem(&tvItem); -} - -int wxTreeCtrl::GetItemSelectedImage(const wxTreeItemId& item) const -{ - wxTreeViewItem tvItem(item, TVIF_SELECTEDIMAGE); - DoGetItem(&tvItem); - - return tvItem.iSelectedImage; -} - -void wxTreeCtrl::SetItemSelectedImage(const wxTreeItemId& item, int image) -{ - wxTreeViewItem tvItem(item, TVIF_SELECTEDIMAGE); - tvItem.iSelectedImage = image; - DoSetItem(&tvItem); -} - -wxTreeItemData *wxTreeCtrl::GetItemData(const wxTreeItemId& item) const -{ - wxTreeViewItem tvItem(item, TVIF_PARAM); - if ( !DoGetItem(&tvItem) ) - { - return NULL; - } - - return (wxTreeItemData *)tvItem.lParam; -} - -void wxTreeCtrl::SetItemData(const wxTreeItemId& item, wxTreeItemData *data) -{ - wxTreeViewItem tvItem(item, TVIF_PARAM); - tvItem.lParam = (LPARAM)data; - DoSetItem(&tvItem); -} - -void wxTreeCtrl::SetItemHasChildren(const wxTreeItemId& item, bool has) -{ - wxTreeViewItem tvItem(item, TVIF_CHILDREN); - tvItem.cChildren = (int)has; - DoSetItem(&tvItem); -} - -void wxTreeCtrl::SetItemBold(const wxTreeItemId& item, bool bold) -{ - wxTreeViewItem tvItem(item, TVIF_STATE, TVIS_BOLD); - tvItem.state = bold ? TVIS_BOLD : 0; - DoSetItem(&tvItem); -} - -// ---------------------------------------------------------------------------- -// Item status -// ---------------------------------------------------------------------------- - -bool wxTreeCtrl::IsVisible(const wxTreeItemId& item) const -{ - // Bug in Gnu-Win32 headers, so don't use the macro TreeView_GetItemRect - RECT rect; - return SendMessage(wxhWnd, TVM_GETITEMRECT, FALSE, (LPARAM)&rect) != 0; - -} - -bool wxTreeCtrl::ItemHasChildren(const wxTreeItemId& item) const -{ - wxTreeViewItem tvItem(item, TVIF_CHILDREN); - DoGetItem(&tvItem); - - return tvItem.cChildren != 0; -} - -bool wxTreeCtrl::IsExpanded(const wxTreeItemId& item) const -{ - // probably not a good idea to put it here - //wxASSERT( ItemHasChildren(item) ); - - wxTreeViewItem tvItem(item, TVIF_STATE, TVIS_EXPANDED); - DoGetItem(&tvItem); - - return (tvItem.state & TVIS_EXPANDED) != 0; -} - -bool wxTreeCtrl::IsSelected(const wxTreeItemId& item) const -{ - wxTreeViewItem tvItem(item, TVIF_STATE, TVIS_SELECTED); - DoGetItem(&tvItem); - - return (tvItem.state & TVIS_SELECTED) != 0; -} - -bool wxTreeCtrl::IsBold(const wxTreeItemId& item) const -{ - wxTreeViewItem tvItem(item, TVIF_STATE, TVIS_BOLD); - DoGetItem(&tvItem); - - return (tvItem.state & TVIS_BOLD) != 0; -} - -// ---------------------------------------------------------------------------- -// navigation -// ---------------------------------------------------------------------------- - -wxTreeItemId wxTreeCtrl::GetRootItem() const -{ - return wxTreeItemId((WXHTREEITEM) TreeView_GetRoot(wxhWnd)); -} - -wxTreeItemId wxTreeCtrl::GetSelection() const -{ - return wxTreeItemId((WXHTREEITEM) TreeView_GetSelection(wxhWnd)); -} - -wxTreeItemId wxTreeCtrl::GetParent(const wxTreeItemId& item) const -{ - return wxTreeItemId((WXHTREEITEM) TreeView_GetParent(wxhWnd, (HTREEITEM) (WXHTREEITEM) item)); -} - -wxTreeItemId wxTreeCtrl::GetFirstChild(const wxTreeItemId& item, - long& _cookie) const -{ - // remember the last child returned in 'cookie' - _cookie = (long)TreeView_GetChild(wxhWnd, (HTREEITEM) (WXHTREEITEM)item); - - return wxTreeItemId((WXHTREEITEM)_cookie); -} - -wxTreeItemId wxTreeCtrl::GetNextChild(const wxTreeItemId& WXUNUSED(item), - long& _cookie) const -{ - wxTreeItemId l = wxTreeItemId((WXHTREEITEM)TreeView_GetNextSibling(wxhWnd, - (HTREEITEM)(WXHTREEITEM)_cookie)); - _cookie = (long)l; - - return l; -} - -wxTreeItemId wxTreeCtrl::GetLastChild(const wxTreeItemId& item) const -{ - // can this be done more efficiently? - long cookie; - - wxTreeItemId childLast, - child = GetFirstChild(item, cookie); - while ( child.IsOk() ) - { - childLast = child; - child = GetNextChild(item, cookie); - } - - return childLast; -} - -wxTreeItemId wxTreeCtrl::GetNextSibling(const wxTreeItemId& item) const -{ - return wxTreeItemId((WXHTREEITEM) TreeView_GetNextSibling(wxhWnd, (HTREEITEM) (WXHTREEITEM) item)); -} - -wxTreeItemId wxTreeCtrl::GetPrevSibling(const wxTreeItemId& item) const -{ - return wxTreeItemId((WXHTREEITEM) TreeView_GetPrevSibling(wxhWnd, (HTREEITEM) (WXHTREEITEM) item)); -} - -wxTreeItemId wxTreeCtrl::GetFirstVisibleItem() const -{ - return wxTreeItemId((WXHTREEITEM) TreeView_GetFirstVisible(wxhWnd)); -} - -wxTreeItemId wxTreeCtrl::GetNextVisible(const wxTreeItemId& item) const -{ - wxASSERT_MSG( IsVisible(item), "The item you call GetNextVisible() " - "for must be visible itself!"); - - return wxTreeItemId((WXHTREEITEM) TreeView_GetNextVisible(wxhWnd, (HTREEITEM) (WXHTREEITEM) item)); -} - -wxTreeItemId wxTreeCtrl::GetPrevVisible(const wxTreeItemId& item) const -{ - wxASSERT_MSG( IsVisible(item), "The item you call GetPrevVisible() " - "for must be visible itself!"); - - return wxTreeItemId((WXHTREEITEM) TreeView_GetPrevVisible(wxhWnd, (HTREEITEM) (WXHTREEITEM) item)); -} - -// ---------------------------------------------------------------------------- -// Usual operations -// ---------------------------------------------------------------------------- - -wxTreeItemId wxTreeCtrl::DoInsertItem(const wxTreeItemId& parent, - wxTreeItemId hInsertAfter, - const wxString& text, - int image, int selectedImage, - wxTreeItemData *data) -{ - TV_INSERTSTRUCT tvIns; - tvIns.hParent = (HTREEITEM) (WXHTREEITEM)parent; - tvIns.hInsertAfter = (HTREEITEM) (WXHTREEITEM) hInsertAfter; - UINT mask = 0; - if ( !text.IsEmpty() ) - { - mask |= TVIF_TEXT; - tvIns.item.pszText = (char *)text.c_str(); // cast is ok - } - - if ( image != -1 ) - { - mask |= TVIF_IMAGE; - tvIns.item.iImage = image; - - if ( selectedImage == -1 ) - { - // take the same image for selected icon if not specified - selectedImage = image; - } - } - - if ( selectedImage != -1 ) - { - mask |= TVIF_SELECTEDIMAGE; - tvIns.item.iSelectedImage = selectedImage; - } - - if ( data != NULL ) - { - mask |= TVIF_PARAM; - tvIns.item.lParam = (LPARAM)data; - } - - tvIns.item.mask = mask; - - HTREEITEM id = (HTREEITEM) TreeView_InsertItem(wxhWnd, &tvIns); - if ( id == 0 ) - { - wxLogLastError("TreeView_InsertItem"); - } - - if ( data != NULL ) - { - // associate the application tree item with Win32 tree item handle - data->SetId((WXHTREEITEM)id); - } - - return wxTreeItemId((WXHTREEITEM)id); -} - -// for compatibility only -wxTreeItemId wxTreeCtrl::InsertItem(const wxTreeItemId& parent, - const wxString& text, - int image, int selImage, - long insertAfter) -{ - return DoInsertItem(parent, (WXHTREEITEM)insertAfter, text, - image, selImage, NULL); -} - -wxTreeItemId wxTreeCtrl::AddRoot(const wxString& text, - int image, int selectedImage, - wxTreeItemData *data) -{ - return DoInsertItem(wxTreeItemId((WXHTREEITEM) 0), (WXHTREEITEM) 0, - text, image, selectedImage, data); -} - -wxTreeItemId wxTreeCtrl::PrependItem(const wxTreeItemId& parent, - const wxString& text, - int image, int selectedImage, - wxTreeItemData *data) -{ - return DoInsertItem(parent, (WXHTREEITEM) TVI_FIRST, - text, image, selectedImage, data); -} - -wxTreeItemId wxTreeCtrl::InsertItem(const wxTreeItemId& parent, - const wxTreeItemId& idPrevious, - const wxString& text, - int image, int selectedImage, - wxTreeItemData *data) -{ - return DoInsertItem(parent, idPrevious, text, image, selectedImage, data); -} - -wxTreeItemId wxTreeCtrl::AppendItem(const wxTreeItemId& parent, - const wxString& text, - int image, int selectedImage, - wxTreeItemData *data) -{ - return DoInsertItem(parent, (WXHTREEITEM) TVI_LAST, - text, image, selectedImage, data); -} - -void wxTreeCtrl::Delete(const wxTreeItemId& item) -{ - if ( !TreeView_DeleteItem(wxhWnd, (HTREEITEM)(WXHTREEITEM)item) ) - { - wxLogLastError("TreeView_DeleteItem"); - } -} - -// delete all children (but don't delete the item itself) -void wxTreeCtrl::DeleteChildren(const wxTreeItemId& item) -{ - long cookie; - - wxArrayLong children; - wxTreeItemId child = GetFirstChild(item, cookie); - while ( child.IsOk() ) - { - children.Add((long)(WXHTREEITEM)child); - - child = GetNextChild(item, cookie); - } - - size_t nCount = children.Count(); - for ( size_t n = 0; n < nCount; n++ ) - { - if ( !TreeView_DeleteItem(wxhWnd, (HTREEITEM)children[n]) ) - { - wxLogLastError("TreeView_DeleteItem"); - } - } -} - -void wxTreeCtrl::DeleteAllItems() -{ - if ( !TreeView_DeleteAllItems(wxhWnd) ) - { - wxLogLastError("TreeView_DeleteAllItems"); - } -} - -void wxTreeCtrl::DoExpand(const wxTreeItemId& item, int flag) -{ - wxASSERT_MSG( flag == TVE_COLLAPSE || flag == TVE_COLLAPSERESET || - flag == TVE_EXPAND || flag == TVE_TOGGLE, - "Unknown flag in wxTreeCtrl::DoExpand" ); - - // TreeView_Expand doesn't send TVN_ITEMEXPAND(ING) messages, so we must - // emulate them - if ( TreeView_Expand(wxhWnd, (HTREEITEM) (WXHTREEITEM) item, flag) != 0 ) - { - wxTreeEvent event(wxEVT_NULL, m_windowId); - event.m_item = item; - - bool isExpanded = IsExpanded(item); - - event.SetEventObject(this); - - // @@@ return values of {EXPAND|COLLAPS}ING event handler is discarded - event.SetEventType(g_events[isExpanded][TRUE]); - GetEventHandler()->ProcessEvent(event); - - event.SetEventType(g_events[isExpanded][FALSE]); - GetEventHandler()->ProcessEvent(event); - } - else - { - // I wonder if it really ever happens... - wxLogDebug("TreeView_Expand: change didn't took place."); - } -} - -void wxTreeCtrl::Expand(const wxTreeItemId& item) -{ - DoExpand(item, TVE_EXPAND); -} - -void wxTreeCtrl::Collapse(const wxTreeItemId& item) -{ - DoExpand(item, TVE_COLLAPSE); -} - -void wxTreeCtrl::CollapseAndReset(const wxTreeItemId& item) -{ - DoExpand(item, TVE_COLLAPSERESET); -} - -void wxTreeCtrl::Toggle(const wxTreeItemId& item) -{ - DoExpand(item, TVE_TOGGLE); -} - -void wxTreeCtrl::ExpandItem(const wxTreeItemId& item, int action) -{ - DoExpand(item, action); -} - -void wxTreeCtrl::Unselect() -{ - SelectItem(wxTreeItemId((WXHTREEITEM) 0)); -} - -void wxTreeCtrl::SelectItem(const wxTreeItemId& item) -{ - if ( !TreeView_SelectItem(wxhWnd, (HTREEITEM) (WXHTREEITEM) item) ) - { - wxLogLastError("TreeView_SelectItem"); - } -} - -void wxTreeCtrl::EnsureVisible(const wxTreeItemId& item) -{ - // no error return - TreeView_EnsureVisible(wxhWnd, (HTREEITEM) (WXHTREEITEM) item); -} - -void wxTreeCtrl::ScrollTo(const wxTreeItemId& item) -{ - if ( !TreeView_SelectSetFirstVisible(wxhWnd, (HTREEITEM) (WXHTREEITEM) item) ) - { - wxLogLastError("TreeView_SelectSetFirstVisible"); - } -} - -wxTextCtrl* wxTreeCtrl::GetEditControl() const -{ - return m_textCtrl; -} - -void wxTreeCtrl::DeleteTextCtrl() -{ - if ( m_textCtrl ) - { - m_textCtrl->UnsubclassWin(); - m_textCtrl->SetHWND(0); - delete m_textCtrl; - m_textCtrl = NULL; - } -} - -wxTextCtrl* wxTreeCtrl::EditLabel(const wxTreeItemId& item, - wxClassInfo* textControlClass) -{ - wxASSERT( textControlClass->IsKindOf(CLASSINFO(wxTextCtrl)) ); - - HWND hWnd = (HWND) TreeView_EditLabel(wxhWnd, (HTREEITEM) (WXHTREEITEM) item); - - wxCHECK_MSG( hWnd, NULL, "Can't edit tree ctrl label" ); - - DeleteTextCtrl(); - - m_textCtrl = (wxTextCtrl *)textControlClass->CreateObject(); - m_textCtrl->SetHWND((WXHWND)hWnd); - m_textCtrl->SubclassWin((WXHWND)hWnd); - - return m_textCtrl; -} - -// End label editing, optionally cancelling the edit -void wxTreeCtrl::EndEditLabel(const wxTreeItemId& item, bool discardChanges) -{ - TreeView_EndEditLabelNow(wxhWnd, discardChanges); - - DeleteTextCtrl(); -} - -wxTreeItemId wxTreeCtrl::HitTest(const wxPoint& point, int& flags) -{ - TV_HITTESTINFO hitTestInfo; - hitTestInfo.pt.x = (int)point.x; - hitTestInfo.pt.y = (int)point.y; - - TreeView_HitTest(wxhWnd, &hitTestInfo); - - flags = 0; - - // avoid repetition - #define TRANSLATE_FLAG(flag) if ( hitTestInfo.flags & TVHT_##flag ) \ - flags |= wxTREE_HITTEST_##flag - - TRANSLATE_FLAG(ABOVE); - TRANSLATE_FLAG(BELOW); - TRANSLATE_FLAG(NOWHERE); - TRANSLATE_FLAG(ONITEMBUTTON); - TRANSLATE_FLAG(ONITEMICON); - TRANSLATE_FLAG(ONITEMINDENT); - TRANSLATE_FLAG(ONITEMLABEL); - TRANSLATE_FLAG(ONITEMRIGHT); - TRANSLATE_FLAG(ONITEMSTATEICON); - TRANSLATE_FLAG(TOLEFT); - TRANSLATE_FLAG(TORIGHT); - - #undef TRANSLATE_FLAG - - return wxTreeItemId((WXHTREEITEM) hitTestInfo.hItem); -} - -// ---------------------------------------------------------------------------- -// sorting stuff -// ---------------------------------------------------------------------------- -static int CALLBACK TreeView_CompareCallback(wxTreeItemData *pItem1, - wxTreeItemData *pItem2, - wxTreeCtrl *tree) -{ - return tree->OnCompareItems(pItem1->GetId(), pItem2->GetId()); -} - -int wxTreeCtrl::OnCompareItems(const wxTreeItemId& item1, - const wxTreeItemId& item2) -{ - return strcmp(GetItemText(item1), GetItemText(item2)); -} - -void wxTreeCtrl::SortChildren(const wxTreeItemId& item) -{ - // rely on the fact that TreeView_SortChildren does the same thing as our - // default behaviour, i.e. sorts items alphabetically and so call it - // directly if we're not in derived class (much more efficient!) - if ( GetClassInfo() == CLASSINFO(wxTreeCtrl) ) - { - TreeView_SortChildren(wxhWnd, (HTREEITEM)(WXHTREEITEM)item, 0); - } - else - { - TV_SORTCB tvSort; - tvSort.hParent = (HTREEITEM)(WXHTREEITEM)item; - tvSort.lpfnCompare = (PFNTVCOMPARE)TreeView_CompareCallback; - tvSort.lParam = (LPARAM)this; - TreeView_SortChildrenCB(wxhWnd, &tvSort, 0 /* reserved */); - } -} - -// ---------------------------------------------------------------------------- -// implementation -// ---------------------------------------------------------------------------- - -bool wxTreeCtrl::MSWCommand(WXUINT cmd, WXWORD id) -{ - if ( cmd == EN_UPDATE ) - { - wxCommandEvent event(wxEVT_COMMAND_TEXT_UPDATED, id); - event.SetEventObject( this ); - ProcessCommand(event); - } - else if ( cmd == EN_KILLFOCUS ) - { - wxCommandEvent event(wxEVT_KILL_FOCUS, id); - event.SetEventObject( this ); - ProcessCommand(event); - } - else - { - // nothing done - return FALSE; - } - - // command processed - return TRUE; -} - -// process WM_NOTIFY Windows message -bool wxTreeCtrl::MSWNotify(WXWPARAM wParam, WXLPARAM lParam, WXLPARAM *result) -{ - wxTreeEvent event(wxEVT_NULL, m_windowId); - wxEventType eventType = wxEVT_NULL; - NMHDR *hdr = (NMHDR *)lParam; - - switch ( hdr->code ) - { - case TVN_BEGINDRAG: - eventType = wxEVT_COMMAND_TREE_BEGIN_DRAG; - // fall through - - case TVN_BEGINRDRAG: - { - if ( eventType == wxEVT_NULL ) - eventType = wxEVT_COMMAND_TREE_BEGIN_RDRAG; - //else: left drag, already set above - - NM_TREEVIEW *tv = (NM_TREEVIEW *)lParam; - - event.m_item = (WXHTREEITEM) tv->itemNew.hItem; - event.m_pointDrag = wxPoint(tv->ptDrag.x, tv->ptDrag.y); - break; - } - - case TVN_BEGINLABELEDIT: - { - eventType = wxEVT_COMMAND_TREE_BEGIN_LABEL_EDIT; - TV_DISPINFO *info = (TV_DISPINFO *)lParam; - - event.m_item = (WXHTREEITEM) info->item.hItem; - break; - } - - case TVN_DELETEITEM: - { - eventType = wxEVT_COMMAND_TREE_DELETE_ITEM; - NM_TREEVIEW *tv = (NM_TREEVIEW *)lParam; - - event.m_item = (WXHTREEITEM) tv->itemOld.hItem; - break; - } - - case TVN_ENDLABELEDIT: - { - eventType = wxEVT_COMMAND_TREE_END_LABEL_EDIT; - TV_DISPINFO *info = (TV_DISPINFO *)lParam; - - event.m_item = (WXHTREEITEM) info->item.hItem; - break; - } - - case TVN_GETDISPINFO: - eventType = wxEVT_COMMAND_TREE_GET_INFO; - // fall through - - case TVN_SETDISPINFO: - { - if ( eventType == wxEVT_NULL ) - eventType = wxEVT_COMMAND_TREE_SET_INFO; - //else: get, already set above - - TV_DISPINFO *info = (TV_DISPINFO *)lParam; - - event.m_item = (WXHTREEITEM) info->item.hItem; - break; - } - - case TVN_ITEMEXPANDING: - event.m_code = FALSE; - // fall through - - case TVN_ITEMEXPANDED: - { - NM_TREEVIEW* tv = (NM_TREEVIEW*)lParam; - - bool expand = FALSE; - switch ( tv->action ) - { - case TVE_EXPAND: - expand = TRUE; - break; - - case TVE_COLLAPSE: - expand = FALSE; - break; - - default: - wxLogDebug("unexpected code %d in TVN_ITEMEXPAND " - "message", tv->action); - } - - bool ing = (hdr->code == TVN_ITEMEXPANDING); - eventType = g_events[expand][ing]; - - event.m_item = (WXHTREEITEM) tv->itemNew.hItem; - break; - } - - case TVN_KEYDOWN: - { - eventType = wxEVT_COMMAND_TREE_KEY_DOWN; - TV_KEYDOWN *info = (TV_KEYDOWN *)lParam; - - event.m_code = wxCharCodeMSWToWX(info->wVKey); - - // a separate event for this case - if ( info->wVKey == VK_SPACE || info->wVKey == VK_RETURN ) - { - wxTreeEvent event2(wxEVT_COMMAND_TREE_ITEM_ACTIVATED, - m_windowId); - event2.SetEventObject(this); - - GetEventHandler()->ProcessEvent(event2); - } - break; - } - - case TVN_SELCHANGED: - eventType = wxEVT_COMMAND_TREE_SEL_CHANGED; - // fall through - - case TVN_SELCHANGING: - { - if ( eventType == wxEVT_NULL ) - eventType = wxEVT_COMMAND_TREE_SEL_CHANGING; - //else: already set above - - NM_TREEVIEW* tv = (NM_TREEVIEW *)lParam; - - event.m_item = (WXHTREEITEM) tv->itemNew.hItem; - event.m_itemOld = (WXHTREEITEM) tv->itemOld.hItem; - break; - } - - default: - return wxControl::MSWNotify(wParam, lParam, result); - } - - event.SetEventObject(this); - event.SetEventType(eventType); - - bool processed = GetEventHandler()->ProcessEvent(event); - - // post processing - if ( hdr->code == TVN_DELETEITEM ) - { - // NB: we might process this message using wxWindows event tables, but - // due to overhead of wxWin event system we prefer to do it here - // (otherwise deleting a tree with many items is just too slow) - NM_TREEVIEW* tv = (NM_TREEVIEW *)lParam; - wxTreeItemData *data = (wxTreeItemData *)tv->itemOld.lParam; - delete data; // may be NULL, ok - } - - *result = !event.IsAllowed(); - - return processed; -} - -// ---------------------------------------------------------------------------- -// Tree event -// ---------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxTreeEvent, wxNotifyEvent) - -wxTreeEvent::wxTreeEvent(wxEventType commandType, int id) - : wxNotifyEvent(commandType, id) -{ - m_code = 0; - m_itemOld = 0; -} - -#endif // __WIN95__ - diff --git a/src/msw/utils.cpp b/src/msw/utils.cpp deleted file mode 100644 index a42f71bca7..0000000000 --- a/src/msw/utils.cpp +++ /dev/null @@ -1,1157 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: utils.cpp -// Purpose: Various utilities -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -// #pragma implementation "utils.h" // Note: this is done in utilscmn.cpp now. -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/setup.h" -#include "wx/utils.h" -#include "wx/app.h" -#include "wx/cursor.h" -#endif //WX_PRECOMP - -#include "wx/msw/private.h" -#include "wx/timer.h" -#include "wx/intl.h" - -#include - -#include - -#if !defined(__GNUWIN32__) && !defined(__SALFORDC__) -#include - -#ifndef __MWERKS__ -#include -#endif -#endif //GNUWIN32 - -#if defined(__GNUWIN32__) && !defined(__TWIN32__) -#include -#include -#endif //GNUWIN32 - -#include "wx/log.h" - -#ifdef __BORLANDC__ // Please someone tell me which version of Borland needs - // this (3.1 I believe) and how to test for it. - // If this works for Borland 4.0 as well, then no worries. -#include -#endif - -#ifdef __WIN32__ -#include - -#ifndef __GNUWIN32__ -#include -#endif -#endif - -#include -#include -#include -#ifndef __WATCOMC__ -#if !(defined(_MSC_VER) && (_MSC_VER > 800)) -#include -#endif -#endif -#include - -//// BEGIN for console support: VC++ only - -#if defined(__WXDEBUG__) && !defined(__WIN16__) && defined(_MSC_VER) && !defined(__NO_VC_CRTDBG__) - #define wxUSE_VC_CRTDBG -#else - #undef wxUSE_VC_CRTDBG -#endif - -#ifdef wxUSE_VC_CRTDBG - // VC++ uses this macro as debug/release mode indicator - #ifndef _DEBUG - #define _DEBUG - #endif - - #include - -#if wxUSE_IOSTREAMH -// N.B. BC++ doesn't have istream.h, ostream.h -# include -# include -# include - -#else -# include -# include -# include -# ifdef _MSC_VER - using namespace std; -# endif -#endif - -/* Need to undef new if including crtdbg.h */ -# ifdef new -# undef new -# endif - -#ifndef __WIN16__ -# include -#endif - -# if defined(__WXDEBUG__) && wxUSE_GLOBAL_MEMORY_OPERATORS && wxUSE_DEBUG_NEW_ALWAYS -# define new new(__FILE__,__LINE__) -# endif - -#endif - -/// END for console support - -// In the WIN.INI file -static const char WX_SECTION[] = "wxWindows"; -static const char eHOSTNAME[] = "HostName"; -static const char eUSERID[] = "UserId"; -static const char eUSERNAME[] = "UserName"; - -// For the following functions we SHOULD fill in support -// for Windows-NT (which I don't know) as I assume it begin -// a POSIX Unix (so claims MS) that it has some special -// functions beyond those provided by WinSock - -// Get full hostname (eg. DoDo.BSn-Germany.crg.de) -bool wxGetHostName(char *buf, int maxSize) -{ -#if defined(__WIN32__) && !defined(__TWIN32__) - DWORD nSize = maxSize; - return (::GetComputerName(buf, &nSize) != 0); -#else - char *sysname; - const char *default_host = "noname"; - - if ((sysname = getenv("SYSTEM_NAME")) == NULL) { - GetProfileString(WX_SECTION, eHOSTNAME, default_host, buf, maxSize - 1); - } else - strncpy(buf, sysname, maxSize - 1); - buf[maxSize] = '\0'; - return *buf ? TRUE : FALSE; -#endif -} - -// Get user ID e.g. jacs -bool wxGetUserId(char *buf, int maxSize) -{ -#if defined(__WIN32__) && !defined(__win32s__) && !defined(__TWIN32__) - - // VZ: why should it be so complicated?? -#if 0 - // Gets the current user's full name according to the MS article PSS ID - // Number: Q119670 - // Seems to be the same as the login name for me? - char *UserName = new char[256]; - char *Domain = new char[256]; - DWORD maxCharacters = 255; - GetUserName( UserName, &maxCharacters ); - GetComputerName( Domain, &maxCharacters ); - - WCHAR wszUserName[256]; // Unicode user name - WCHAR wszDomain[256]; - LPBYTE ComputerName; - - struct _SERVER_INFO_100 *si100; // Server structure - struct _USER_INFO_2 *ui; // User structure - - // Convert ASCII user name and domain to Unicode. - - MultiByteToWideChar( CP_ACP, 0, UserName, - strlen(UserName)+1, wszUserName, sizeof(wszUserName) ); - MultiByteToWideChar( CP_ACP, 0, Domain, - strlen(Domain)+1, wszDomain, sizeof(wszDomain) ); - - // Get the computer name of a DC for the specified domain. - // >If you get a link error on this, include netapi32.lib< - - NetGetDCName( NULL, wszDomain, &ComputerName ); - - // Look up the user on the DC. - - if(NetUserGetInfo( (LPWSTR) ComputerName, - (LPWSTR) &wszUserName, 2, (LPBYTE *) &ui)) - { - printf( "Error getting user information.\n" ); - return( FALSE ); - } - - // Convert the Unicode full name to ASCII. - - WideCharToMultiByte( CP_ACP, 0, ui->usri2_full_name, - -1, buf, 256, NULL, NULL ); - } - return( TRUE ); -#else // 1 - DWORD nSize = maxSize; - if ( ::GetUserName(buf, &nSize) == 0 ) - { - wxLogSysError("Can not get user name"); - - return FALSE; - } - - return TRUE; -#endif // 0/1 - -#else // Win16 or Win32s - char *user; - const char *default_id = "anonymous"; - - // Can't assume we have NIS (PC-NFS) or some other ID daemon - // So we ... - if ( (user = getenv("USER")) == NULL && - (user = getenv("LOGNAME")) == NULL ) { - // Use wxWindows configuration data (comming soon) - GetProfileString(WX_SECTION, eUSERID, default_id, buf, maxSize - 1); - } else - strncpy(buf, user, maxSize - 1); - return *buf ? TRUE : FALSE; -#endif -} - -// Get user name e.g. Julian Smart -bool wxGetUserName(char *buf, int maxSize) -{ -#if wxUSE_PENWINDOWS && !defined(__WATCOMC__) && !defined(__GNUWIN32__) - extern HANDLE g_hPenWin; // PenWindows Running? - if (g_hPenWin) - { - // PenWindows Does have a user concept! - // Get the current owner of the recognizer - GetPrivateProfileString("Current", "User", default_name, wxBuffer, maxSize - 1, "PENWIN.INI"); - strncpy(buf, wxBuffer, maxSize - 1); - } - else -#endif - { - // Could use NIS, MS-Mail or other site specific programs - // Use wxWindows configuration data - bool ok = GetProfileString(WX_SECTION, eUSERNAME, "", buf, maxSize - 1) != 0; - if ( !ok ) - { - ok = wxGetUserId(buf, maxSize); - } - - if ( !ok ) - { - strncpy(buf, "Unknown User", maxSize); - } - } - - return TRUE; -} - -int wxKill(long pid, int sig) -{ - return 0; -} - -// -// Execute a program in an Interactive Shell -// -bool -wxShell(const wxString& command) -{ - char *shell; - if ((shell = getenv("COMSPEC")) == NULL) - shell = "\\COMMAND.COM"; - - char tmp[255]; - if (command != "") - sprintf(tmp, "%s /c %s", shell, WXSTRINGCAST command); - else - strcpy(tmp, shell); - - return (wxExecute((char *)tmp, FALSE) != 0); -} - -// Get free memory in bytes, or -1 if cannot determine amount (e.g. on UNIX) -long wxGetFreeMemory(void) -{ -#if defined(__WIN32__) && !defined(__BORLANDC__) && !defined(__TWIN32__) - MEMORYSTATUS memStatus; - memStatus.dwLength = sizeof(MEMORYSTATUS); - GlobalMemoryStatus(&memStatus); - return memStatus.dwAvailPhys; -#else - return (long)GetFreeSpace(0); -#endif -} - -// Sleep for nSecs seconds. Attempt a Windows implementation using timers. -static bool inTimer = FALSE; -class wxSleepTimer: public wxTimer -{ - public: - inline void Notify(void) - { - inTimer = FALSE; - Stop(); - } -}; - -static wxTimer *wxTheSleepTimer = NULL; - -void wxSleep(int nSecs) -{ -#if 0 // WIN32 hangs app - Sleep( 1000*nSecs ); -#else - if (inTimer) - return; - - wxTheSleepTimer = new wxSleepTimer; - inTimer = TRUE; - wxTheSleepTimer->Start(nSecs*1000); - while (inTimer) - { - if (wxTheApp->Pending()) - wxTheApp->Dispatch(); - } - delete wxTheSleepTimer; - wxTheSleepTimer = NULL; -#endif -} - -// Consume all events until no more left -void wxFlushEvents(void) -{ -// wxYield(); -} - -// Output a debug mess., in a system dependent fashion. -void wxDebugMsg(const char *fmt ...) -{ - va_list ap; - static char buffer[512]; - - if (!wxTheApp->GetWantDebugOutput()) - return ; - - va_start(ap, fmt); - - wvsprintf(buffer,fmt,ap) ; - OutputDebugString((LPCSTR)buffer) ; - - va_end(ap); -} - -// Non-fatal error: pop up message box and (possibly) continue -void wxError(const wxString& msg, const wxString& title) -{ - sprintf(wxBuffer, "%s\nContinue?", WXSTRINGCAST msg); - if (MessageBox(NULL, (LPCSTR)wxBuffer, (LPCSTR)WXSTRINGCAST title, - MB_ICONSTOP | MB_YESNO) == IDNO) - wxExit(); -} - -// Fatal error: pop up message box and abort -void wxFatalError(const wxString& msg, const wxString& title) -{ - sprintf(wxBuffer, "%s: %s", WXSTRINGCAST title, WXSTRINGCAST msg); - FatalAppExit(0, (LPCSTR)wxBuffer); -} - -// Emit a beeeeeep -void wxBell(void) -{ - // Removed by RD because IHMO syncronous sound is a Bad Thing. MessageBeep - // will do a similar thing anyway if there is no sound card... -//#ifdef __WIN32__ -// Beep(1000,1000) ; // 1kHz during 1 sec. -//#else - MessageBeep((UINT)-1) ; -//#endif -} - -// Chris Breeze 27/5/98: revised WIN32 code to -// detect WindowsNT correctly -int wxGetOsVersion(int *majorVsn, int *minorVsn) -{ - extern char *wxOsVersion; - if (majorVsn) *majorVsn = 0; - if (minorVsn) *minorVsn = 0; - -#if defined(__WIN32__) && !defined(__SC__) - OSVERSIONINFO info; - memset(&info, 0, sizeof(OSVERSIONINFO)); - info.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); - if (GetVersionEx(&info)) - { - if (majorVsn) *majorVsn = info.dwMajorVersion; - if (minorVsn) *minorVsn = info.dwMinorVersion; - switch (info.dwPlatformId) - { - case VER_PLATFORM_WIN32s: - return wxWIN32S; - break; - case VER_PLATFORM_WIN32_WINDOWS: - return wxWIN95; - break; - case VER_PLATFORM_WIN32_NT: - return wxWINDOWS_NT; - break; - } - } - return wxWINDOWS; // error if we get here, return generic value -#else - // Win16 code... - int retValue = 0; -# ifdef __WINDOWS_386__ - retValue = wxWIN386; -# else -# if !defined(__WATCOMC__) && !defined(GNUWIN32) && wxUSE_PENWINDOWS - extern HANDLE g_hPenWin; - retValue = g_hPenWin ? wxPENWINDOWS : wxWINDOWS ; -# endif -# endif - // @@@@ To be completed. I don't have the manual here... - if (majorVsn) *majorVsn = 3 ; - if (minorVsn) *minorVsn = 1 ; - return retValue ; -#endif -} - -// Reading and writing resources (eg WIN.INI, .Xdefaults) -#if wxUSE_RESOURCES -bool wxWriteResource(const wxString& section, const wxString& entry, const wxString& value, const wxString& file) -{ - if (file != "") - return (WritePrivateProfileString((LPCSTR)WXSTRINGCAST section, (LPCSTR)WXSTRINGCAST entry, (LPCSTR)value, (LPCSTR)WXSTRINGCAST file) != 0); - else - return (WriteProfileString((LPCSTR)WXSTRINGCAST section, (LPCSTR)WXSTRINGCAST entry, (LPCSTR)WXSTRINGCAST value) != 0); -} - -bool wxWriteResource(const wxString& section, const wxString& entry, float value, const wxString& file) -{ - char buf[50]; - sprintf(buf, "%.4f", value); - return wxWriteResource(section, entry, buf, file); -} - -bool wxWriteResource(const wxString& section, const wxString& entry, long value, const wxString& file) -{ - char buf[50]; - sprintf(buf, "%ld", value); - return wxWriteResource(section, entry, buf, file); -} - -bool wxWriteResource(const wxString& section, const wxString& entry, int value, const wxString& file) -{ - char buf[50]; - sprintf(buf, "%d", value); - return wxWriteResource(section, entry, buf, file); -} - -bool wxGetResource(const wxString& section, const wxString& entry, char **value, const wxString& file) -{ - static const char defunkt[] = "$$default"; - if (file != "") - { - int n = GetPrivateProfileString((LPCSTR)WXSTRINGCAST section, (LPCSTR)WXSTRINGCAST entry, (LPCSTR)defunkt, - (LPSTR)wxBuffer, 1000, (LPCSTR)WXSTRINGCAST file); - if (n == 0 || strcmp(wxBuffer, defunkt) == 0) - return FALSE; - } - else - { - int n = GetProfileString((LPCSTR)WXSTRINGCAST section, (LPCSTR)WXSTRINGCAST entry, (LPCSTR)defunkt, - (LPSTR)wxBuffer, 1000); - if (n == 0 || strcmp(wxBuffer, defunkt) == 0) - return FALSE; - } - if (*value) delete[] (*value); - *value = copystring(wxBuffer); - return TRUE; - } - -bool wxGetResource(const wxString& section, const wxString& entry, float *value, const wxString& file) -{ - char *s = NULL; - bool succ = wxGetResource(section, entry, (char **)&s, file); - if (succ) - { - *value = (float)strtod(s, NULL); - delete[] s; - return TRUE; - } - else return FALSE; -} - -bool wxGetResource(const wxString& section, const wxString& entry, long *value, const wxString& file) -{ - char *s = NULL; - bool succ = wxGetResource(section, entry, (char **)&s, file); - if (succ) - { - *value = strtol(s, NULL, 10); - delete[] s; - return TRUE; - } - else return FALSE; -} - -bool wxGetResource(const wxString& section, const wxString& entry, int *value, const wxString& file) -{ - char *s = NULL; - bool succ = wxGetResource(section, entry, (char **)&s, file); - if (succ) - { - *value = (int)strtol(s, NULL, 10); - delete[] s; - return TRUE; - } - else return FALSE; -} -#endif // wxUSE_RESOURCES - -// Old cursor -static HCURSOR wxBusyCursorOld = 0; -static int wxBusyCursorCount = 0; - -// Set the cursor to the busy cursor for all windows -void wxBeginBusyCursor(wxCursor *cursor) -{ - wxBusyCursorCount ++; - if (wxBusyCursorCount == 1) - { - wxBusyCursorOld = ::SetCursor((HCURSOR) cursor->GetHCURSOR()); - } - else - { - (void)::SetCursor((HCURSOR) cursor->GetHCURSOR()); - } -} - -// Restore cursor to normal -void wxEndBusyCursor(void) -{ - if (wxBusyCursorCount == 0) - return; - - wxBusyCursorCount --; - if (wxBusyCursorCount == 0) - { - ::SetCursor(wxBusyCursorOld); - wxBusyCursorOld = 0; - } -} - -// TRUE if we're between the above two calls -bool wxIsBusy(void) -{ - return (wxBusyCursorCount > 0); -} - -const char* wxGetHomeDir(wxString *pstr) -{ - wxString& strDir = *pstr; - - #if defined(__UNIX__) && !defined(__TWIN32__) - const char *szHome = getenv("HOME"); - if ( szHome == NULL ) { - // we're homeless... - wxLogWarning(_("can't find user's HOME, using current directory.")); - strDir = "."; - } - else - strDir = szHome; - - // add a trailing slash if needed - if ( strDir.Last() != '/' ) - strDir << '/'; - #else // Windows - #ifdef __WIN32__ - const char *szHome = getenv("HOMEDRIVE"); - if ( szHome != NULL ) - strDir << szHome; - szHome = getenv("HOMEPATH"); - if ( szHome != NULL ) { - strDir << szHome; - - // the idea is that under NT these variables have default values - // of "%systemdrive%:" and "\\". As we don't want to create our - // config files in the root directory of the system drive, we will - // create it in our program's dir. However, if the user took care - // to set HOMEPATH to something other than "\\", we suppose that he - // knows what he is doing and use the supplied value. - if ( strcmp(szHome, "\\") != 0 ) - return strDir.c_str(); - } - - #else // Win16 - // Win16 has no idea about home, so use the working directory instead - #endif // WIN16/32 - - // 260 was taken from windef.h - #ifndef MAX_PATH - #define MAX_PATH 260 - #endif - - wxString strPath; - ::GetModuleFileName(::GetModuleHandle(NULL), - strPath.GetWriteBuf(MAX_PATH), MAX_PATH); - strPath.UngetWriteBuf(); - - // extract the dir name - wxSplitPath(strPath, &strDir, NULL, NULL); - - #endif // UNIX/Win - - return strDir.c_str(); -} - -// Hack for MS-DOS -char *wxGetUserHome (const wxString& user) -{ - char *home; - wxString user1(user); - - if (user1 != "") { - char tmp[64]; - if (wxGetUserId(tmp, sizeof(tmp)/sizeof(char))) { - // Guests belong in the temp dir - if (Stricmp(tmp, "annonymous") == 0) { - if ((home = getenv("TMP")) != NULL || - (home = getenv("TMPDIR")) != NULL || - (home = getenv("TEMP")) != NULL) - return *home ? home : "\\"; - } - if (Stricmp(tmp, WXSTRINGCAST user1) == 0) - user1 = ""; - } - } - if (user1 == "") - if ((home = getenv("HOME")) != NULL) - { - strcpy(wxBuffer, home); - Unix2DosFilename(wxBuffer); - return wxBuffer; - } - return NULL; // No home known! -} - -// Check whether this window wants to process messages, e.g. Stop button -// in long calculations. -bool wxCheckForInterrupt(wxWindow *wnd) -{ - if(wnd){ - MSG msg; - HWND win= (HWND) wnd->GetHWND(); - while(PeekMessage(&msg,win,0,0,PM_REMOVE)){ - TranslateMessage(&msg); - DispatchMessage(&msg); - } - return TRUE;//*** temporary? - } - else{ - wxError("wnd==NULL !!!"); - return FALSE;//*** temporary? - } -} - -// MSW only: get user-defined resource from the .res file. -// Returns NULL or newly-allocated memory, so use delete[] to clean up. - -#ifdef __WXMSW__ -char *wxLoadUserResource(const wxString& resourceName, const wxString& resourceType) -{ - char *s = NULL; -#if !defined(__WIN32__) || defined(__TWIN32__) - HRSRC hResource = ::FindResource(wxGetInstance(), WXSTRINGCAST resourceName, WXSTRINGCAST resourceType); -#else -#ifdef UNICODE - HRSRC hResource = ::FindResourceW(wxGetInstance(), WXSTRINGCAST resourceName, WXSTRINGCAST resourceType); -#else - HRSRC hResource = ::FindResourceA(wxGetInstance(), WXSTRINGCAST resourceName, WXSTRINGCAST resourceType); -#endif -#endif - - if (hResource == 0) - return NULL; - HGLOBAL hData = ::LoadResource(wxGetInstance(), hResource); - if (hData == 0) - return NULL; - char *theText = (char *)LockResource(hData); - if (!theText) - return NULL; - - s = copystring(theText); - - // Obsolete in WIN32 -#ifndef __WIN32__ - UnlockResource(hData); -#endif - - // No need?? -// GlobalFree(hData); - - return s; -} -#endif - -void wxGetMousePosition( int* x, int* y ) -{ - POINT pt; - GetCursorPos( & pt ); - *x = pt.x; - *y = pt.y; -}; - -// Return TRUE if we have a colour display -bool wxColourDisplay(void) -{ - HDC dc = ::GetDC((HWND) NULL); - bool flag; - int noCols = GetDeviceCaps(dc, NUMCOLORS); - if ((noCols == -1) || (noCols > 2)) - flag = TRUE; - else - flag = FALSE; - ReleaseDC((HWND) NULL, dc); - return flag; -} - -// Returns depth of screen -int wxDisplayDepth(void) -{ - HDC dc = ::GetDC((HWND) NULL); - int planes = GetDeviceCaps(dc, PLANES); - int bitsPerPixel = GetDeviceCaps(dc, BITSPIXEL); - int depth = planes*bitsPerPixel; - ReleaseDC((HWND) NULL, dc); - return depth; -} - -// Get size of display -void wxDisplaySize(int *width, int *height) -{ - HDC dc = ::GetDC((HWND) NULL); - *width = GetDeviceCaps(dc, HORZRES); *height = GetDeviceCaps(dc, VERTRES); - ReleaseDC((HWND) NULL, dc); -} - -bool wxDirExists(const wxString& dir) -{ - /* MATTHEW: [6] Always use same code for Win32, call FindClose */ -#if defined(__WIN32__) - WIN32_FIND_DATA fileInfo; -#else -#ifdef __BORLANDC__ - struct ffblk fileInfo; -#else - struct find_t fileInfo; -#endif -#endif - -#if defined(__WIN32__) - HANDLE h = FindFirstFile((LPTSTR) WXSTRINGCAST dir,(LPWIN32_FIND_DATA)&fileInfo); - - if (h==INVALID_HANDLE_VALUE) - return FALSE; - else { - FindClose(h); - return ((fileInfo.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY); - } -#else - // In Borland findfirst has a different argument - // ordering from _dos_findfirst. But _dos_findfirst - // _should_ be ok in both MS and Borland... why not? -#ifdef __BORLANDC__ - return ((findfirst(WXSTRINGCAST dir, &fileInfo, _A_SUBDIR) == 0 && (fileInfo.ff_attrib & _A_SUBDIR) != 0)); -#else - return (((_dos_findfirst(WXSTRINGCAST dir, _A_SUBDIR, &fileInfo) == 0) && (fileInfo.attrib & _A_SUBDIR)) != 0); -#endif -#endif -} - -wxString WXDLLEXPORT wxGetWindowText(WXHWND hWnd) -{ - wxString str; - int len = GetWindowTextLength((HWND)hWnd) + 1; - GetWindowText((HWND)hWnd, str.GetWriteBuf(len), len); - str.UngetWriteBuf(); - - return str; -} - -#if 0 -//------------------------------------------------------------------------ -// wild character routines -//------------------------------------------------------------------------ - -bool wxIsWild( const wxString& pattern ) -{ - wxString tmp = pattern; - char *pat = WXSTRINGCAST(tmp); - while (*pat) { - switch (*pat++) { - case '?': case '*': case '[': case '{': - return TRUE; - case '\\': - if (!*pat++) - return FALSE; - } - } - return FALSE; -}; - - -bool wxMatchWild( const wxString& pat, const wxString& text, bool dot_special ) -{ - wxString tmp1 = pat; - char *pattern = WXSTRINGCAST(tmp1); - wxString tmp2 = text; - char *str = WXSTRINGCAST(tmp2); - char c; - char *cp; - bool done = FALSE, ret_code, ok; - // Below is for vi fans - const char OB = '{', CB = '}'; - - // dot_special means '.' only matches '.' - if (dot_special && *str == '.' && *pattern != *str) - return FALSE; - - while ((*pattern != '\0') && (!done) - && (((*str=='\0')&&((*pattern==OB)||(*pattern=='*')))||(*str!='\0'))) { - switch (*pattern) { - case '\\': - pattern++; - if (*pattern != '\0') - pattern++; - break; - case '*': - pattern++; - ret_code = FALSE; - while ((*str!='\0') - && (!(ret_code=wxMatchWild(pattern, str++, FALSE)))) - /*loop*/; - if (ret_code) { - while (*str != '\0') - str++; - while (*pattern != '\0') - pattern++; - } - break; - case '[': - pattern++; - repeat: - if ((*pattern == '\0') || (*pattern == ']')) { - done = TRUE; - break; - } - if (*pattern == '\\') { - pattern++; - if (*pattern == '\0') { - done = TRUE; - break; - } - } - if (*(pattern + 1) == '-') { - c = *pattern; - pattern += 2; - if (*pattern == ']') { - done = TRUE; - break; - } - if (*pattern == '\\') { - pattern++; - if (*pattern == '\0') { - done = TRUE; - break; - } - } - if ((*str < c) || (*str > *pattern)) { - pattern++; - goto repeat; - } - } else if (*pattern != *str) { - pattern++; - goto repeat; - } - pattern++; - while ((*pattern != ']') && (*pattern != '\0')) { - if ((*pattern == '\\') && (*(pattern + 1) != '\0')) - pattern++; - pattern++; - } - if (*pattern != '\0') { - pattern++, str++; - } - break; - case '?': - pattern++; - str++; - break; - case OB: - pattern++; - while ((*pattern != CB) && (*pattern != '\0')) { - cp = str; - ok = TRUE; - while (ok && (*cp != '\0') && (*pattern != '\0') - && (*pattern != ',') && (*pattern != CB)) { - if (*pattern == '\\') - pattern++; - ok = (*pattern++ == *cp++); - } - if (*pattern == '\0') { - ok = FALSE; - done = TRUE; - break; - } else if (ok) { - str = cp; - while ((*pattern != CB) && (*pattern != '\0')) { - if (*++pattern == '\\') { - if (*++pattern == CB) - pattern++; - } - } - } else { - while (*pattern!=CB && *pattern!=',' && *pattern!='\0') { - if (*++pattern == '\\') { - if (*++pattern == CB || *pattern == ',') - pattern++; - } - } - } - if (*pattern != '\0') - pattern++; - } - break; - default: - if (*str == *pattern) { - str++, pattern++; - } else { - done = TRUE; - } - } - } - while (*pattern == '*') - pattern++; - return ((*str == '\0') && (*pattern == '\0')); -}; - -#endif - -#if defined(__WIN95__) && defined(__WXDEBUG__) && wxUSE_DBWIN32 - -/* -When I started programming with Visual C++ v4.0, I missed one of my favorite -tools -- DBWIN. Finding the code for a simple debug trace utility, DBMON, -on MSDN was a step in the right direction, but it is a console application -and thus has limited features and extensibility. DBWIN32 is my creation -to solve this problem. - -The code is essentially a merging of a stripped down version of the DBWIN code -from VC 1.5 and DBMON.C with a few 32 bit changes. - -As of version 1.2B, DBWIN32 supports both Win95 and NT. The NT support is -built into the operating system and works just by running DBWIN32. The Win95 -team decided not to support this hook, so I have provided code that will do -this for you. See the file WIN95.TXT for instructions on installing this. - -If you have questions, problems or suggestions about DBWIN32, I welcome your -feedback and plan to actively maintain the code. - -Andrew Tucker -ast@halcyon.com - -To download dbwin32, see e.g.: - -http://ftp.digital.com/pub/micro/NT/WinSite/programr/dbwin32.zip -*/ - -#if !defined(__MWERKS__) && !defined(__SALFORDC__) && !defined(__TWIN32__) -#include -#endif - -void OutputDebugStringW95(const char* lpOutputString, ...) -{ - HANDLE heventDBWIN; /* DBWIN32 synchronization object */ - HANDLE heventData; /* data passing synch object */ - HANDLE hSharedFile; /* memory mapped file shared data */ - LPSTR lpszSharedMem; - char achBuffer[500]; - - /* create the output buffer */ - va_list args; - va_start(args, lpOutputString); - vsprintf(achBuffer, lpOutputString, args); - va_end(args); - - /* - Do a regular OutputDebugString so that the output is - still seen in the debugger window if it exists. - - This ifdef is necessary to avoid infinite recursion - from the inclusion of W95TRACE.H - */ -#ifdef _UNICODE - ::OutputDebugStringW(achBuffer); -#else -#ifdef __TWIN32__ - ::OutputDebugString(achBuffer); -#else - ::OutputDebugStringA(achBuffer); -#endif -#endif - - /* bail if it's not Win95 */ - { - OSVERSIONINFO VerInfo; - VerInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); - GetVersionEx(&VerInfo); - if ( VerInfo.dwPlatformId != VER_PLATFORM_WIN32_WINDOWS ) - return; - } - - /* make sure DBWIN is open and waiting */ - heventDBWIN = OpenEvent(EVENT_MODIFY_STATE, FALSE, "DBWIN_BUFFER_READY"); - if ( !heventDBWIN ) - { - //MessageBox(NULL, "DBWIN_BUFFER_READY nonexistent", NULL, MB_OK); - return; - } - - /* get a handle to the data synch object */ - heventData = OpenEvent(EVENT_MODIFY_STATE, FALSE, "DBWIN_DATA_READY"); - if ( !heventData ) - { - // MessageBox(NULL, "DBWIN_DATA_READY nonexistent", NULL, MB_OK); - CloseHandle(heventDBWIN); - return; - } - - hSharedFile = CreateFileMapping((HANDLE)-1, NULL, PAGE_READWRITE, 0, 4096, "DBWIN_BUFFER"); - if (!hSharedFile) - { - //MessageBox(NULL, "DebugTrace: Unable to create file mapping object DBWIN_BUFFER", "Error", MB_OK); - CloseHandle(heventDBWIN); - CloseHandle(heventData); - return; - } - - lpszSharedMem = (LPSTR)MapViewOfFile(hSharedFile, FILE_MAP_WRITE, 0, 0, 512); - if (!lpszSharedMem) - { - //MessageBox(NULL, "DebugTrace: Unable to map shared memory", "Error", MB_OK); - CloseHandle(heventDBWIN); - CloseHandle(heventData); - return; - } - - /* wait for buffer event */ - WaitForSingleObject(heventDBWIN, INFINITE); - - /* write it to the shared memory */ -#if defined( __BORLANDC__ ) || defined( __MWERKS__ ) || defined(__SALFORDC__) - *((LPDWORD)lpszSharedMem) = getpid(); -#else - *((LPDWORD)lpszSharedMem) = _getpid(); -#endif - - wsprintf(lpszSharedMem + sizeof(DWORD), "%s", achBuffer); - - /* signal data ready event */ - SetEvent(heventData); - - /* clean up handles */ - CloseHandle(hSharedFile); - CloseHandle(heventData); - CloseHandle(heventDBWIN); - - return; -} - - -#endif - - -#ifdef wxUSE_VC_CRTDBG - -// maximum mumber of lines the output console should have -static const WORD MAX_CONSOLE_LINES = 500; - -BOOL WINAPI MyConsoleHandler( DWORD dwCtrlType ) { // control signal type - FreeConsole(); - return TRUE; -} - -void wxRedirectIOToConsole() -{ - int hConHandle; - long lStdHandle; - CONSOLE_SCREEN_BUFFER_INFO coninfo; - FILE *fp; - - // allocate a console for this app - AllocConsole(); - - // set the screen buffer to be big enough to let us scroll text - GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), - &coninfo); - coninfo.dwSize.Y = MAX_CONSOLE_LINES; - SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), - coninfo.dwSize); - - // redirect unbuffered STDOUT to the console - lStdHandle = (long)GetStdHandle(STD_OUTPUT_HANDLE); - hConHandle = _open_osfhandle(lStdHandle, _O_TEXT); - if(hConHandle <= 0) return; - fp = _fdopen( hConHandle, "w" ); - *stdout = *fp; - setvbuf( stdout, NULL, _IONBF, 0 ); - - // redirect unbuffered STDIN to the console - lStdHandle = (long)GetStdHandle(STD_INPUT_HANDLE); - hConHandle = _open_osfhandle(lStdHandle, _O_TEXT); - if(hConHandle <= 0) return; - fp = _fdopen( hConHandle, "r" ); - *stdin = *fp; - setvbuf( stdin, NULL, _IONBF, 0 ); - - // redirect unbuffered STDERR to the console - lStdHandle = (long)GetStdHandle(STD_ERROR_HANDLE); - hConHandle = _open_osfhandle(lStdHandle, _O_TEXT); - if(hConHandle <= 0) return; - fp = _fdopen( hConHandle, "w" ); - *stderr = *fp; - setvbuf( stderr, NULL, _IONBF, 0 ); - - // make cout, wcout, cin, wcin, wcerr, cerr, wclog and clog - // point to console as well - ios::sync_with_stdio(); - - SetConsoleCtrlHandler(MyConsoleHandler, TRUE); - -} -#else -// Not supported -void wxRedirectIOToConsole() -{ -} -#endif - - diff --git a/src/msw/utilsexc.cpp b/src/msw/utilsexc.cpp deleted file mode 100644 index e74411c229..0000000000 --- a/src/msw/utilsexc.cpp +++ /dev/null @@ -1,219 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: utilsexec.cpp -// Purpose: Various utilities -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/setup.h" -#include "wx/utils.h" -#include "wx/app.h" -#include "wx/intl.h" -#endif - -#include "wx/log.h" -#include "wx/msw/private.h" -#include - -#include - -#if !defined(__GNUWIN32__) && !defined(__SALFORDC__) -#include -#ifndef __MWERKS__ -#include -#endif -#endif - -#ifdef __GNUWIN32__ -#ifndef __TWIN32__ -#include -#include -#endif -#endif - -#ifdef __WIN32__ -#include - -#ifndef __GNUWIN32__ -#include -#endif -#endif - -#include -#include -#include -#ifndef __WATCOMC__ -#if !(defined(_MSC_VER) && (_MSC_VER > 800)) -#include -#endif -#endif -#include - -#define wxEXECUTE_WIN_MESSAGE 10000 - -struct wxExecuteData { - HWND window; - HINSTANCE process; - wxProcess *handler; - char state; -}; - - -#ifdef __WIN32__ -static DWORD wxExecuteThread(wxExecuteData *data) -{ - WaitForSingleObject(data->process, INFINITE); - - // Send an implicit message to the window - SendMessage(data->window, wxEXECUTE_WIN_MESSAGE, 0, (LPARAM)data); - - return 0; -} -#endif - - -LRESULT APIENTRY _EXPORT wxExecuteWindowCbk(HWND hWnd, UINT message, - WPARAM wParam, LPARAM lParam) -{ - wxExecuteData *data = (wxExecuteData *)lParam; - - if (message == wxEXECUTE_WIN_MESSAGE) { - DestroyWindow(hWnd); - if (data->handler) - data->handler->OnTerminate((int)data->process); - - if (data->state) - data->state = 0; - else - delete data; - } - return 0; -} - -extern char wxPanelClassName[]; - -long wxExecute(const wxString& command, bool sync, wxProcess *handler) -{ - if (command == "") - return 0; - -#if defined(__WIN32__) && !defined(__TWIN32__) - char * cl; - char * argp; - int clen; - HINSTANCE result; - DWORD dresult; - HWND window; - wxExecuteData *data; - DWORD tid; - - // copy the command line - clen = command.Length(); - if (!clen) return -1; - cl = (char *) calloc( 1, 256); - if (!cl) return -1; - strcpy( cl, WXSTRINGCAST command); - - // isolate command and arguments - argp = strchr( cl, ' '); - if (argp) - *argp++ = '\0'; - -#ifdef __GNUWIN32__ - result = ShellExecute((HWND) (wxTheApp->GetTopWindow() ? (HWND) wxTheApp->GetTopWindow()->GetHWND() : NULL), - (const wchar_t) "open", (const wchar_t) cl, (const wchar_t) argp, - (const wchar_t) NULL, SW_SHOWNORMAL); -#else - result = ShellExecute( (HWND) (wxTheApp->GetTopWindow() ? wxTheApp->GetTopWindow()->GetHWND() : NULL), - "open", cl, argp, NULL, SW_SHOWNORMAL); -#endif - - if (((long)result) <= 32) { - free(cl); - - wxLogSysError(_("Can't execute command '%s'"), command.c_str()); - return 0; - } - - // Alloc data - data = new wxExecuteData; - - // Create window - window = CreateWindow(wxPanelClassName, NULL, 0, 0, 0, 0, 0, NULL, - (HMENU) NULL, wxGetInstance(), 0); - - FARPROC ExecuteWindowInstance = MakeProcInstance((FARPROC) wxExecuteWindowCbk, - wxGetInstance()); - - SetWindowLong(window, GWL_WNDPROC, (LONG) ExecuteWindowInstance); - SetWindowLong(window, GWL_USERDATA, (LONG) data); - - data->process = result; - data->window = window; - data->state = sync; - data->handler = (sync) ? NULL : handler; - - dresult = (DWORD)CreateThread(NULL, 0, - (LPTHREAD_START_ROUTINE)wxExecuteThread, - (void *)data, 0, &tid); - if (dresult == 0) { - wxDebugMsg("wxExecute PANIC: I can't create the waiting thread !"); - DestroyWindow(window); - return (long)result; - } - - if (!sync) - { - free(cl); - return (long)result; - } - - // waiting until command executed - while (data->state) - wxYield(); - - free(cl); - return 0; -#else - long instanceID = WinExec((LPCSTR) WXSTRINGCAST command, SW_SHOW); - if (instanceID < 32) return(0); - - if (sync) { - int running; - do { - wxYield(); - running = GetModuleUsage((HANDLE)instanceID); - } while (running); - } - return(instanceID); -#endif -} - -long wxExecute(char **argv, bool sync, wxProcess *handler) -{ - wxString command = ""; - - while (*argv != NULL) { - command += *argv; - command += ' '; - argv++; - } - command.RemoveLast(); - return wxExecute(command, sync, handler); -} diff --git a/src/msw/wave.cpp b/src/msw/wave.cpp deleted file mode 100644 index 805a64fa0e..0000000000 --- a/src/msw/wave.cpp +++ /dev/null @@ -1,168 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: wave.cpp -// Purpose: wxWave -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "wave.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#if defined(__BORLANDC__) -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include "wx/file.h" -#include "wx/msw/wave.h" -#include "wx/msw/private.h" - -#include -#include - -#ifndef __GNUWIN32__ -#include -#endif - -#ifndef __TWIN32__ -#ifdef __GNUWIN32__ -#include "wx/msw/gnuwin32/extra.h" -#endif -#endif - -wxWave::wxWave() - : m_waveData(NULL), m_waveLength(0), m_isResource(FALSE) -{ -} - -wxWave::wxWave(const wxString& sFileName, bool isResource) - : m_waveData(NULL), m_waveLength(0), m_isResource(isResource) -{ - Create(sFileName, isResource); -} - -wxWave::wxWave(int size, const wxByte* data) - : m_waveData(NULL), m_waveLength(0), m_isResource(FALSE) -{ - Create(size, data); -} - -wxWave::~wxWave() -{ - Free(); -} - -bool wxWave::Create(const wxString& fileName, bool isResource) -{ - Free(); - - if (isResource) - { - m_isResource = TRUE; - - HRSRC hresInfo; -#if defined(__WIN32__) && !defined(__TWIN32__) - hresInfo = ::FindResourceA((HMODULE) wxhInstance, fileName, "WAVE"); -#else - hresInfo = ::FindResource((HMODULE) wxhInstance, fileName, "WAVE"); -#endif - if (!hresInfo) - return FALSE; - - HGLOBAL waveData = ::LoadResource((HMODULE) wxhInstance, hresInfo); - - if (waveData) - { - m_waveData= (wxByte*)::LockResource(waveData); - m_waveLength = (int) ::SizeofResource((HMODULE) wxhInstance, hresInfo); - } - - return (m_waveData ? TRUE : FALSE); - } - else - { - m_isResource = FALSE; - - wxFile fileWave; - if (!fileWave.Open(fileName, wxFile::read)) - return FALSE; - - m_waveLength = (int) fileWave.Length(); - - m_waveData = (wxByte*)::GlobalLock(::GlobalAlloc(GMEM_MOVEABLE | GMEM_SHARE, m_waveLength)); - if (!m_waveData) - return FALSE; - - fileWave.Read(m_waveData, m_waveLength); - - return TRUE; - } -} - -bool wxWave::Create(int size, const wxByte* data) -{ - Free(); - m_isResource = FALSE; - m_waveLength=size; - m_waveData = (wxByte*)::GlobalLock(::GlobalAlloc(GMEM_MOVEABLE | GMEM_SHARE, m_waveLength)); - if (!m_waveData) - return FALSE; - - for (int i=0; i -#include "wx/setup.h" -#include "wx/menu.h" -#include "wx/dc.h" -#include "wx/dcclient.h" -#include "wx/utils.h" -#include "wx/app.h" -#include "wx/panel.h" -#include "wx/layout.h" -#include "wx/dialog.h" -#include "wx/frame.h" -#include "wx/listbox.h" -#include "wx/button.h" -#include "wx/settings.h" -#include "wx/msgdlg.h" -#endif - -#if wxUSE_OWNER_DRAWN - #include "wx/ownerdrw.h" -#endif - -#if wxUSE_DRAG_AND_DROP - #include "wx/msw/ole/droptgt.h" -#endif - -#include "wx/menuitem.h" -#include "wx/log.h" -#include "wx/msw/private.h" - -#include - -#ifndef __GNUWIN32__ -#include -#include -#endif - -#ifdef __WIN32__ -#include -#endif - -#ifndef __TWIN32__ -#ifdef __GNUWIN32__ -#include -#endif -#endif - -#ifdef GetCharWidth -#undef GetCharWidth -#endif - -#ifdef FindWindow -#undef FindWindow -#endif - -#ifdef GetClassName -#undef GetClassName -#endif - -#ifdef GetClassInfo -#undef GetClassInfo -#endif - -#ifdef __WXDEBUG__ - const char *wxGetMessageName(int message); -#endif //__WXDEBUG__ - -#define WINDOW_MARGIN 3 // This defines sensitivity of Leave events - -wxMenu *wxCurrentPopupMenu = NULL; -extern wxList WXDLLEXPORT wxPendingDelete; - -void wxRemoveHandleAssociation(wxWindow *win); -void wxAssociateWinWithHandle(HWND hWnd, wxWindow *win); -wxWindow *wxFindWinFromHandle(WXHWND hWnd); - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxWindow, wxEvtHandler) -#endif - -BEGIN_EVENT_TABLE(wxWindow, wxEvtHandler) - EVT_CHAR(wxWindow::OnChar) - EVT_KEY_DOWN(wxWindow::OnKeyDown) - EVT_KEY_UP(wxWindow::OnKeyUp) - EVT_ERASE_BACKGROUND(wxWindow::OnEraseBackground) - EVT_SYS_COLOUR_CHANGED(wxWindow::OnSysColourChanged) - EVT_INIT_DIALOG(wxWindow::OnInitDialog) - EVT_IDLE(wxWindow::OnIdle) -END_EVENT_TABLE() - -// Find an item given the MS Windows id -wxWindow *wxWindow::FindItem(int id) const -{ -// if (!GetChildren()) -// return NULL; - wxNode *current = GetChildren().First(); - while (current) - { - wxWindow *childWin = (wxWindow *)current->Data(); - - wxWindow *wnd = childWin->FindItem(id) ; - if (wnd) - return wnd ; - - if (childWin->IsKindOf(CLASSINFO(wxControl))) - { - wxControl *item = (wxControl *)childWin; - if (item->GetId() == id) - return item; - else - { - // In case it's a 'virtual' control (e.g. radiobox) - if (item->GetSubcontrols().Member((wxObject *)id)) - return item; - } - } - current = current->Next(); - } - return NULL; -} - -// Find an item given the MS Windows handle -wxWindow *wxWindow::FindItemByHWND(WXHWND hWnd, bool controlOnly) const -{ -// if (!GetChildren()) -// return NULL; - wxNode *current = GetChildren().First(); - while (current) - { - wxObject *obj = (wxObject *)current->Data() ; - // Do a recursive search. - wxWindow *parent = (wxWindow *)obj ; - wxWindow *wnd = parent->FindItemByHWND(hWnd) ; - if (wnd) - return wnd ; - - if ((!controlOnly) || obj->IsKindOf(CLASSINFO(wxControl))) - { - wxWindow *item = (wxWindow *)current->Data(); - if ((HWND)(item->GetHWND()) == (HWND) hWnd) - return item; - else - { - if ( item->ContainsHWND(hWnd) ) - return item; - } - } - current = current->Next(); - } - return NULL; -} - -// Default command handler -bool wxWindow::MSWCommand(WXUINT WXUNUSED(param), WXWORD WXUNUSED(id)) -{ - return FALSE; -} - -bool wxWindow::MSWNotify(WXWPARAM WXUNUSED(wParam), - WXLPARAM WXUNUSED(lParam), - WXLPARAM* WXUNUSED(result)) -{ - return FALSE; -} - -void wxWindow::PreDelete(WXHDC WXUNUSED(dc)) -{ -} - -WXHWND wxWindow::GetHWND(void) const -{ - return (WXHWND) m_hWnd; -} - -void wxWindow::SetHWND(WXHWND hWnd) -{ - m_hWnd = hWnd; -} - -// ---------------------------------------------------------------------------- -// constructors and such -// ---------------------------------------------------------------------------- - -void wxWindow::Init() -{ - // Generic - m_windowId = 0; - m_isShown = TRUE; - m_windowStyle = 0; - m_windowParent = NULL; - m_windowEventHandler = this; - m_windowCursor = *wxSTANDARD_CURSOR; - m_children = new wxList; - m_doubleClickAllowed = 0 ; - m_winCaptured = FALSE; - m_constraints = NULL; - m_constraintsInvolvedIn = NULL; - m_windowSizer = NULL; - m_sizerParent = NULL; - m_autoLayout = FALSE; - m_windowValidator = NULL; - - // MSW-specific - m_hWnd = 0; - m_winEnabled = TRUE; - m_caretWidth = m_caretHeight = 0; - m_caretEnabled = - m_caretShown = FALSE; - m_inOnSize = FALSE; - m_minSizeX = - m_minSizeY = - m_maxSizeX = - m_maxSizeY = -1; - - m_isBeingDeleted = FALSE; - m_oldWndProc = 0; -#ifndef __WIN32__ - m_globalHandle = 0; -#endif - m_useCtl3D = FALSE; - m_mouseInWindow = FALSE; - - m_windowParent = NULL; - m_defaultItem = NULL; - - wxSystemSettings settings; - - m_backgroundColour = settings.GetSystemColour(wxSYS_COLOUR_3DFACE) ; - m_foregroundColour = *wxBLACK; - - // wxWnd - m_lastMsg = 0; - m_lastWParam = 0; - m_lastLParam = 0; - m_hMenu = 0; - - m_xThumbSize = 0; - m_yThumbSize = 0; - m_backgroundTransparent = FALSE; - - m_lastXPos = (float)-1.0; - m_lastYPos = (float)-1.0; - m_lastEvent = -1; - m_returnCode = 0; - -#if wxUSE_DRAG_AND_DROP - m_pDropTarget = NULL; -#endif -} - -wxWindow::wxWindow() -{ - Init(); -} - -// Destructor -wxWindow::~wxWindow() -{ - m_isBeingDeleted = TRUE; - - // JACS - if behaviour is odd, restore this - // to the start of ~wxWindow. Vadim has changed - // it to nearer the end. Unsure of side-effects - // e.g. when deleting associated global data. - // Restore old Window proc, if required - // UnsubclassWin(); - - // Have to delete constraints/sizer FIRST otherwise - // sizers may try to look at deleted windows as they - // delete themselves. -#if wxUSE_CONSTRAINTS - DeleteRelatedConstraints(); - if (m_constraints) - { - // This removes any dangling pointers to this window - // in other windows' constraintsInvolvedIn lists. - UnsetConstraints(m_constraints); - delete m_constraints; - m_constraints = NULL; - } - if (m_windowSizer) - { - delete m_windowSizer; - m_windowSizer = NULL; - } - // If this is a child of a sizer, remove self from parent - if (m_sizerParent) - m_sizerParent->RemoveChild((wxWindow *)this); -#endif - - // wxWnd - MSWDetachWindowMenu(); - - if (m_windowParent) - m_windowParent->RemoveChild(this); - - DestroyChildren(); - - if (m_hWnd) - ::DestroyWindow((HWND)m_hWnd); - - wxRemoveHandleAssociation(this); - m_hWnd = 0; -#ifndef __WIN32__ - if (m_globalHandle) - { - GlobalFree((HGLOBAL) m_globalHandle); - m_globalHandle = 0; - } -#endif - - delete m_children; - m_children = NULL; - - // Just in case the window has been Closed, but - // we're then deleting immediately: don't leave - // dangling pointers. - wxPendingDelete.DeleteObject(this); - - // Just in case we've loaded a top-level window via - // wxWindow::LoadNativeDialog but we weren't a dialog - // class - wxTopLevelWindows.DeleteObject(this); - - if ( m_windowValidator ) - delete m_windowValidator; - - // Restore old Window proc, if required - // and remove hWnd <-> wxWindow association - UnsubclassWin(); -} - -// Destroy the window (delayed, if a managed window) -bool wxWindow::Destroy() -{ - delete this; - return TRUE; -} - -extern char wxCanvasClassName[]; - -// real construction (Init() must have been called before!) -bool wxWindow::Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - wxCHECK_MSG( parent, FALSE, "can't create wxWindow without parent" ); - - parent->AddChild(this); - - SetName(name); - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - int x = pos.x; - int y = pos.y; - int width = size.x; - int height = size.y; - - // To be consistent with wxGTK - if (width == -1) - width = 20; - if (height == -1) - height = 20; - - wxSystemSettings settings; - - m_windowStyle = style; - - DWORD msflags = 0; - if (style & wxBORDER) - msflags |= WS_BORDER; - if (style & wxTHICK_FRAME) - msflags |= WS_THICKFRAME; - - msflags |= WS_CHILD | WS_VISIBLE; - if (style & wxCLIP_CHILDREN) - msflags |= WS_CLIPCHILDREN; - - bool want3D; - WXDWORD exStyle = Determine3DEffects(WS_EX_CLIENTEDGE, &want3D) ; - - // Even with extended styles, need to combine with WS_BORDER - // for them to look right. - if (want3D || (m_windowStyle & wxSIMPLE_BORDER) || (m_windowStyle & wxRAISED_BORDER) || - (m_windowStyle & wxSUNKEN_BORDER) || (m_windowStyle & wxDOUBLE_BORDER)) - msflags |= WS_BORDER; - - MSWCreate(m_windowId, parent, wxCanvasClassName, this, NULL, - x, y, width, height, msflags, NULL, exStyle); - - return TRUE; -} - -void wxWindow::SetFocus() -{ - HWND hWnd = (HWND) GetHWND(); - if (hWnd) - ::SetFocus(hWnd); -} - -void wxWindow::Enable(bool enable) -{ - m_winEnabled = enable; - HWND hWnd = (HWND) GetHWND(); - if (hWnd) - ::EnableWindow(hWnd, (BOOL)enable); -} - -void wxWindow::CaptureMouse() -{ - HWND hWnd = (HWND) GetHWND(); - if (hWnd && !m_winCaptured) - { - SetCapture(hWnd); - m_winCaptured = TRUE; - } -} - -void wxWindow::ReleaseMouse() -{ - if (m_winCaptured) - { - ReleaseCapture(); - m_winCaptured = FALSE; - } -} - -void wxWindow::SetAcceleratorTable(const wxAcceleratorTable& accel) -{ - m_acceleratorTable = accel; -} - - -// Push/pop event handler (i.e. allow a chain of event handlers -// be searched) -void wxWindow::PushEventHandler(wxEvtHandler *handler) -{ - handler->SetNextHandler(GetEventHandler()); - SetEventHandler(handler); -} - -wxEvtHandler *wxWindow::PopEventHandler(bool deleteHandler) -{ - if ( GetEventHandler() ) - { - wxEvtHandler *handlerA = GetEventHandler(); - wxEvtHandler *handlerB = handlerA->GetNextHandler(); - handlerA->SetNextHandler(NULL); - SetEventHandler(handlerB); - if ( deleteHandler ) - { - delete handlerA; - return NULL; - } - else - return handlerA; - } - else - return NULL; -} - -#if wxUSE_DRAG_AND_DROP - -void wxWindow::SetDropTarget(wxDropTarget *pDropTarget) -{ - if ( m_pDropTarget != 0 ) { - m_pDropTarget->Revoke(m_hWnd); - delete m_pDropTarget; - } - - m_pDropTarget = pDropTarget; - if ( m_pDropTarget != 0 ) - m_pDropTarget->Register(m_hWnd); -} - -#endif - -//old style file-manager drag&drop support -// I think we should retain the old-style -// DragAcceptFiles in parallel with SetDropTarget. -// JACS -void wxWindow::DragAcceptFiles(bool accept) -{ - HWND hWnd = (HWND) GetHWND(); - if (hWnd) - ::DragAcceptFiles(hWnd, (BOOL)accept); -} - -// Get total size -void wxWindow::GetSize(int *x, int *y) const -{ - HWND hWnd = (HWND) GetHWND(); - RECT rect; - GetWindowRect(hWnd, &rect); - *x = rect.right - rect.left; - *y = rect.bottom - rect.top; -} - -void wxWindow::GetPosition(int *x, int *y) const -{ - HWND hWnd = (HWND) GetHWND(); - HWND hParentWnd = 0; - if (GetParent()) - hParentWnd = (HWND) GetParent()->GetHWND(); - - RECT rect; - GetWindowRect(hWnd, &rect); - - // Since we now have the absolute screen coords, - // if there's a parent we must subtract its top left corner - POINT point; - point.x = rect.left; - point.y = rect.top; - if (hParentWnd) - { - ::ScreenToClient(hParentWnd, &point); - } - - // We may be faking the client origin. - // So a window that's really at (0, 30) may appear - // (to wxWin apps) to be at (0, 0). - if (GetParent()) - { - wxPoint pt(GetParent()->GetClientAreaOrigin()); - point.x -= pt.x; - point.y -= pt.y; - } - *x = point.x; - *y = point.y; -} - -void wxWindow::ScreenToClient(int *x, int *y) const -{ - HWND hWnd = (HWND) GetHWND(); - POINT pt; - pt.x = *x; - pt.y = *y; - - ::ScreenToClient(hWnd, &pt); - - *x = pt.x; - *y = pt.y; -} - -void wxWindow::ClientToScreen(int *x, int *y) const -{ - HWND hWnd = (HWND) GetHWND(); - POINT pt; - pt.x = *x; - pt.y = *y; - - ::ClientToScreen(hWnd, &pt); - - *x = pt.x; - *y = pt.y; -} - -void wxWindow::SetCursor(const wxCursor& cursor) -{ - m_windowCursor = cursor; - if (m_windowCursor.Ok()) - { - HWND hWnd = (HWND) GetHWND(); - - // Change the cursor NOW if we're within the correct window - POINT point; - ::GetCursorPos(&point); - - RECT rect; - ::GetWindowRect(hWnd, &rect); - - if (::PtInRect(&rect, point) && !wxIsBusy()) - ::SetCursor((HCURSOR) m_windowCursor.GetHCURSOR()); - } - - // This will cause big reentrancy problems if wxFlushEvents is implemented. - // wxFlushEvents(); - // return old_cursor; -} - - -// Get size *available for subwindows* i.e. excluding menu bar etc. -void wxWindow::GetClientSize(int *x, int *y) const -{ - HWND hWnd = (HWND) GetHWND(); - RECT rect; - GetClientRect(hWnd, &rect); - *x = rect.right; - *y = rect.bottom; -} - -void wxWindow::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - int currentX, currentY; - GetPosition(¤tX, ¤tY); - int currentW,currentH; - GetSize(¤tW, ¤tH); - - if (x == currentX && y == currentY && width == currentW && height == currentH) - return; - - int actualWidth = width; - int actualHeight = height; - int actualX = x; - int actualY = y; - if (x == -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) - actualX = currentX; - if (y == -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) - actualY = currentY; - - AdjustForParentClientOrigin(actualX, actualY, sizeFlags); - - if (width == -1) - actualWidth = currentW ; - if (height == -1) - actualHeight = currentH ; - - HWND hWnd = (HWND) GetHWND(); - if (hWnd) - MoveWindow(hWnd, actualX, actualY, actualWidth, actualHeight, (BOOL)TRUE); -} - -void wxWindow::SetClientSize(int width, int height) -{ - wxWindow *parent = GetParent(); - HWND hWnd = (HWND) GetHWND(); - HWND hParentWnd = (HWND) (HWND) parent->GetHWND(); - - RECT rect; - GetClientRect(hWnd, &rect); - - RECT rect2; - GetWindowRect(hWnd, &rect2); - - // Find the difference between the entire window (title bar and all) - // and the client area; add this to the new client size to move the - // window - int actual_width = rect2.right - rect2.left - rect.right + width; - int actual_height = rect2.bottom - rect2.top - rect.bottom + height; - - // If there's a parent, must subtract the parent's top left corner - // since MoveWindow moves relative to the parent - - POINT point; - point.x = rect2.left; - point.y = rect2.top; - if (parent) - { - ::ScreenToClient(hParentWnd, &point); - } - - MoveWindow(hWnd, point.x, point.y, actual_width, actual_height, (BOOL)TRUE); - - wxSizeEvent event(wxSize(width, height), m_windowId); - event.SetEventObject(this); - GetEventHandler()->ProcessEvent(event); -} - -// For implementation purposes - sometimes decorations make the client area -// smaller -wxPoint wxWindow::GetClientAreaOrigin() const -{ - return wxPoint(0, 0); -} - -// Makes an adjustment to the window position (for example, a frame that has -// a toolbar that it manages itself). -void wxWindow::AdjustForParentClientOrigin(int& x, int& y, int sizeFlags) -{ - if (((sizeFlags & wxSIZE_NO_ADJUSTMENTS) == 0) && GetParent()) - { - wxPoint pt(GetParent()->GetClientAreaOrigin()); - x += pt.x; y += pt.y; - } -} - -bool wxWindow::Show(bool show) -{ - HWND hWnd = (HWND) GetHWND(); - int cshow; - if (show) - cshow = SW_SHOW; - else - cshow = SW_HIDE; - ShowWindow(hWnd, (BOOL)cshow); - if (show) - { - BringWindowToTop(hWnd); - // Next line causes a crash on NT, apparently. - // UpdateWindow(hWnd); // Should this be here or will it cause inefficiency? - } - return TRUE; -} - -bool wxWindow::IsShown(void) const -{ - return (::IsWindowVisible((HWND) GetHWND()) != 0); -} - -int wxWindow::GetCharHeight(void) const -{ - TEXTMETRIC lpTextMetric; - HWND hWnd = (HWND) GetHWND(); - HDC dc = ::GetDC(hWnd); - - GetTextMetrics(dc, &lpTextMetric); - ::ReleaseDC(hWnd, dc); - - return lpTextMetric.tmHeight; -} - -int wxWindow::GetCharWidth(void) const -{ - TEXTMETRIC lpTextMetric; - HWND hWnd = (HWND) GetHWND(); - HDC dc = ::GetDC(hWnd); - - GetTextMetrics(dc, &lpTextMetric); - ::ReleaseDC(hWnd, dc); - - return lpTextMetric.tmAveCharWidth; -} - -void wxWindow::GetTextExtent(const wxString& string, int *x, int *y, - int *descent, int *externalLeading, const wxFont *theFont, bool) const -{ - wxFont *fontToUse = (wxFont *)theFont; - if (!fontToUse) - fontToUse = (wxFont *) & m_windowFont; - - HWND hWnd = (HWND) GetHWND(); - HDC dc = ::GetDC(hWnd); - - HFONT fnt = 0; - HFONT was = 0; - if (fontToUse && fontToUse->Ok()) - { - fnt = (HFONT)fontToUse->GetResourceHandle(); - if ( fnt ) - was = (HFONT) SelectObject(dc,fnt) ; - } - - SIZE sizeRect; - TEXTMETRIC tm; - GetTextExtentPoint(dc, (const char *)string, (int)string.Length(), &sizeRect); - GetTextMetrics(dc, &tm); - - if (fontToUse && fnt && was) - SelectObject(dc,was) ; - - ReleaseDC(hWnd, dc); - - *x = sizeRect.cx; - *y = sizeRect.cy; - if (descent) *descent = tm.tmDescent; - if (externalLeading) *externalLeading = tm.tmExternalLeading; - - // if (fontToUse) - // fontToUse->ReleaseResource(); -} - -void wxWindow::Refresh(bool eraseBack, const wxRect *rect) -{ - HWND hWnd = (HWND) GetHWND(); - if (hWnd) - { - if (rect) - { - RECT mswRect; - mswRect.left = rect->x; - mswRect.top = rect->y; - mswRect.right = rect->x + rect->width; - mswRect.bottom = rect->y + rect->height; - - ::InvalidateRect(hWnd, &mswRect, eraseBack); - } - else - ::InvalidateRect(hWnd, NULL, eraseBack); - } -} - -bool wxWindow::ProcessEvent(wxEvent& event) -{ - // we save here the information about the last message because it might be - // overwritten if the event handler sends any messages to our window (case - // in point: wxNotebook::OnSize) - and then if we call Default() later - // (which is done quite often if the message is not processed) it will use - // incorrect values for m_lastXXX variables - WXUINT lastMsg = m_lastMsg; - WXWPARAM lastWParam = m_lastWParam; - WXLPARAM lastLParam = m_lastLParam; - - // call the base version - bool bProcessed = wxEvtHandler::ProcessEvent(event); - - // restore - m_lastMsg = lastMsg; - m_lastWParam = lastWParam; - m_lastLParam = lastLParam; - - return bProcessed; -} - -// Hook for new window just as it's being created, -// when the window isn't yet associated with the handle -wxWindow *wxWndHook = NULL; - -// Main window proc -LRESULT APIENTRY _EXPORT wxWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) -{ - wxWindow *wnd = wxFindWinFromHandle((WXHWND) hWnd); - - if (!wnd && wxWndHook) - { - wxAssociateWinWithHandle(hWnd, wxWndHook); - wnd = wxWndHook; - wxWndHook = NULL; - wnd->m_hWnd = (WXHWND) hWnd; - } - - // Stop right here if we don't have a valid handle - // in our wxWnd object. - if (wnd && !wnd->m_hWnd) { - // wxDebugMsg("Warning: could not find a valid handle, wx_win.cc/wxWndProc.\n"); - wnd->m_hWnd = (WXHWND) hWnd; - long res = wnd->MSWDefWindowProc(message, wParam, lParam ); - wnd->m_hWnd = 0; - return res; - } - - if (wnd) { - wnd->m_lastMsg = message; - wnd->m_lastWParam = wParam; - wnd->m_lastLParam = lParam; - } - if (wnd) - return wnd->MSWWindowProc(message, wParam, lParam); - else - return DefWindowProc( hWnd, message, wParam, lParam ); -} - -// Should probably have a test for 'genuine' NT -#if defined(__WIN32__) - #define DIMENSION_TYPE short -#else - #define DIMENSION_TYPE int -#endif - -// Main Windows 3 window proc -long wxWindow::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam) -{ - wxASSERT( m_lastMsg == message && - m_lastWParam == wParam && m_lastLParam == lParam ); - -#ifdef __WXDEBUG__ - wxLogTrace(wxTraceMessages, "Processing %s(%lx, %lx)", - wxGetMessageName(message), wParam, lParam); -#endif // __WXDEBUG__ - - HWND hWnd = (HWND)m_hWnd; - - switch (message) - { - case WM_ACTIVATE: - { -#ifdef __WIN32__ - WORD state = LOWORD(wParam); - WORD minimized = HIWORD(wParam); - HWND hwnd = (HWND)lParam; -#else - WORD state = (WORD)wParam; - WORD minimized = LOWORD(lParam); - HWND hwnd = (HWND)HIWORD(lParam); -#endif - MSWOnActivate(state, (minimized != 0), (WXHWND) hwnd); - return 0; - break; - } - case WM_SETFOCUS: - { - HWND hwnd = (HWND)wParam; - // return OnSetFocus(hwnd); - - if (MSWOnSetFocus((WXHWND) hwnd)) - return 0; - else return MSWDefWindowProc(message, wParam, lParam ); - break; - } - case WM_KILLFOCUS: - { - HWND hwnd = (HWND)lParam; - // return OnKillFocus(hwnd); - if (MSWOnKillFocus((WXHWND) hwnd)) - return 0; - else - return MSWDefWindowProc(message, wParam, lParam ); - break; - } - case WM_CREATE: - { - MSWOnCreate((WXLPCREATESTRUCT) (LPCREATESTRUCT)lParam); - return 0; - break; - } - case WM_SHOWWINDOW: - { - MSWOnShow((wParam != 0), (int) lParam); - break; - } - case WM_PAINT: - { - if (MSWOnPaint()) - return 0; - else return MSWDefWindowProc(message, wParam, lParam ); - break; - } - case WM_QUERYDRAGICON: - { - HICON hIcon = (HICON)MSWOnQueryDragIcon(); - if ( hIcon ) - return (long)hIcon; - else - return MSWDefWindowProc(message, wParam, lParam ); - break; - } - - case WM_SIZE: - { - int width = LOWORD(lParam); - int height = HIWORD(lParam); - MSWOnSize(width, height, wParam); - break; - } - - case WM_MOVE: - { - wxMoveEvent event(wxPoint(LOWORD(lParam), HIWORD(lParam)), - m_windowId); - event.SetEventObject(this); - if ( !GetEventHandler()->ProcessEvent(event) ) - Default(); - } - break; - - case WM_WINDOWPOSCHANGING: - { - MSWOnWindowPosChanging((void *)lParam); - break; - } - - case WM_RBUTTONDOWN: - { - int x = (DIMENSION_TYPE) LOWORD(lParam); - int y = (DIMENSION_TYPE) HIWORD(lParam); - MSWOnRButtonDown(x, y, wParam); - break; - } - case WM_RBUTTONUP: - { - int x = (DIMENSION_TYPE) LOWORD(lParam); - int y = (DIMENSION_TYPE) HIWORD(lParam); - MSWOnRButtonUp(x, y, wParam); - break; - } - case WM_RBUTTONDBLCLK: - { - int x = (DIMENSION_TYPE) LOWORD(lParam); - int y = (DIMENSION_TYPE) HIWORD(lParam); - MSWOnRButtonDClick(x, y, wParam); - break; - } - case WM_MBUTTONDOWN: - { - int x = (DIMENSION_TYPE) LOWORD(lParam); - int y = (DIMENSION_TYPE) HIWORD(lParam); - MSWOnMButtonDown(x, y, wParam); - break; - } - case WM_MBUTTONUP: - { - int x = (DIMENSION_TYPE) LOWORD(lParam); - int y = (DIMENSION_TYPE) HIWORD(lParam); - MSWOnMButtonUp(x, y, wParam); - break; - } - case WM_MBUTTONDBLCLK: - { - int x = (DIMENSION_TYPE) LOWORD(lParam); - int y = (DIMENSION_TYPE) HIWORD(lParam); - MSWOnMButtonDClick(x, y, wParam); - break; - } - case WM_LBUTTONDOWN: - { - int x = (DIMENSION_TYPE) LOWORD(lParam); - int y = (DIMENSION_TYPE) HIWORD(lParam); - MSWOnLButtonDown(x, y, wParam); - break; - } - case WM_LBUTTONUP: - { - int x = (DIMENSION_TYPE) LOWORD(lParam); - int y = (DIMENSION_TYPE) HIWORD(lParam); - MSWOnLButtonUp(x, y, wParam); - break; - } - case WM_LBUTTONDBLCLK: - { - int x = (DIMENSION_TYPE) LOWORD(lParam); - int y = (DIMENSION_TYPE) HIWORD(lParam); - MSWOnLButtonDClick(x, y, wParam); - break; - } - case WM_MOUSEMOVE: - { - int x = (DIMENSION_TYPE) LOWORD(lParam); - int y = (DIMENSION_TYPE) HIWORD(lParam); - MSWOnMouseMove(x, y, wParam); - break; - } - case MM_JOY1BUTTONDOWN: - { - int x = LOWORD(lParam); - int y = HIWORD(lParam); - MSWOnJoyDown(wxJOYSTICK1, x, y, wParam); - break; - } - case MM_JOY2BUTTONDOWN: - { - int x = LOWORD(lParam); - int y = HIWORD(lParam); - MSWOnJoyDown(wxJOYSTICK2, x, y, wParam); - break; - } - case MM_JOY1BUTTONUP: - { - int x = LOWORD(lParam); - int y = HIWORD(lParam); - MSWOnJoyUp(wxJOYSTICK1, x, y, wParam); - break; - } - case MM_JOY2BUTTONUP: - { - int x = LOWORD(lParam); - int y = HIWORD(lParam); - MSWOnJoyUp(wxJOYSTICK2, x, y, wParam); - break; - } - case MM_JOY1MOVE: - { - int x = LOWORD(lParam); - int y = HIWORD(lParam); - MSWOnJoyMove(wxJOYSTICK1, x, y, wParam); - break; - } - case MM_JOY2MOVE: - { - int x = LOWORD(lParam); - int y = HIWORD(lParam); - MSWOnJoyMove(wxJOYSTICK2, x, y, wParam); - break; - } - case MM_JOY1ZMOVE: - { - int z = LOWORD(lParam); - MSWOnJoyZMove(wxJOYSTICK1, z, wParam); - break; - } - case MM_JOY2ZMOVE: - { - int z = LOWORD(lParam); - MSWOnJoyZMove(wxJOYSTICK2, z, wParam); - break; - } - case WM_DESTROY: - { - if (MSWOnDestroy()) - return 0; - else return MSWDefWindowProc(message, wParam, lParam ); - break; - } - case WM_SYSCOMMAND: - { - return MSWOnSysCommand(wParam, lParam); - break; - } - case WM_COMMAND: - { -#ifdef __WIN32__ - WORD id = LOWORD(wParam); - HWND hwnd = (HWND)lParam; - WORD cmd = HIWORD(wParam); -#else - WORD id = (WORD)wParam; - HWND hwnd = (HWND)LOWORD(lParam) ; - WORD cmd = HIWORD(lParam); -#endif - if (!MSWOnCommand(id, cmd, (WXHWND) hwnd)) - return MSWDefWindowProc(message, wParam, lParam ); - break; - } -#if defined(__WIN95__) - case WM_NOTIFY: - { - // for some messages (TVN_ITEMEXPANDING for example), the return - // value of WM_NOTIFY handler is important, so don't just return 0 - // if we processed the message - return MSWOnNotify(wParam, lParam); - } -#endif - case WM_MENUSELECT: - { -#ifdef __WIN32__ - WORD flags = HIWORD(wParam); - HMENU sysmenu = (HMENU)lParam; -#else - WORD flags = LOWORD(lParam); - HMENU sysmenu = (HMENU)HIWORD(lParam); -#endif - MSWOnMenuHighlight((WORD)wParam, flags, (WXHMENU) sysmenu); - break; - } - case WM_INITMENUPOPUP: - { - MSWOnInitMenuPopup((WXHMENU) (HMENU)wParam, (int)LOWORD(lParam), (HIWORD(lParam) != 0)); - break; - } - case WM_DRAWITEM: - { - return MSWOnDrawItem((int)wParam, (WXDRAWITEMSTRUCT *)lParam); - break; - } - case WM_MEASUREITEM: - { - return MSWOnMeasureItem((int)wParam, (WXMEASUREITEMSTRUCT *)lParam); - break; - } - - case WM_KEYDOWN: - { - MSWOnKeyDown((WORD) wParam, lParam); -#if 0 - // we consider these message "not interesting" - if ( wParam == VK_SHIFT || wParam == VK_CONTROL ) - return Default(); - - // Avoid duplicate messages to OnChar - if ( (wParam != VK_ESCAPE) && (wParam != VK_SPACE) && - (wParam != VK_RETURN) && (wParam != VK_BACK) && - (wParam != VK_TAB) ) - { - MSWOnChar((WORD)wParam, lParam); - if ( ::GetKeyState(VK_CONTROL) & 0x100 ) - return Default(); - } - else if ( ::GetKeyState(VK_CONTROL) & 0x100 ) - MSWOnChar((WORD)wParam, lParam); - else - return Default(); -#endif - break; - } - - case WM_KEYUP: - { - MSWOnKeyUp((WORD) wParam, lParam); - break; - } - case WM_CHAR: // Always an ASCII character - { - MSWOnChar((WORD)wParam, lParam, TRUE); - break; - } - - case WM_HSCROLL: - { -#ifdef __WIN32__ - WORD code = LOWORD(wParam); - WORD pos = HIWORD(wParam); - HWND control = (HWND)lParam; -#else - WORD code = (WORD)wParam; - WORD pos = LOWORD(lParam); - HWND control = (HWND)HIWORD(lParam); -#endif - MSWOnHScroll(code, pos, (WXHWND) control); - break; - } - case WM_VSCROLL: - { -#ifdef __WIN32__ - WORD code = LOWORD(wParam); - WORD pos = HIWORD(wParam); - HWND control = (HWND)lParam; -#else - WORD code = (WORD)wParam; - WORD pos = LOWORD(lParam); - HWND control = (HWND)HIWORD(lParam); -#endif - MSWOnVScroll(code, pos, (WXHWND) control); - break; - } -#ifdef __WIN32__ - case WM_CTLCOLORBTN: - { - int nCtlColor = CTLCOLOR_BTN; - HWND control = (HWND)lParam; - HDC pDC = (HDC)wParam; - return (DWORD)MSWOnCtlColor((WXHDC) pDC, (WXHWND) control, nCtlColor, - message, wParam, lParam); - break; - } - case WM_CTLCOLORDLG: - { - int nCtlColor = CTLCOLOR_DLG; - HWND control = (HWND)lParam; - HDC pDC = (HDC)wParam; - return (DWORD)MSWOnCtlColor((WXHDC) pDC, (WXHWND) control, nCtlColor, - message, wParam, lParam);\ - break; - } - case WM_CTLCOLORLISTBOX: - { - int nCtlColor = CTLCOLOR_LISTBOX; - HWND control = (HWND)lParam; - HDC pDC = (HDC)wParam; - return (DWORD)MSWOnCtlColor((WXHDC) pDC, (WXHWND) control, nCtlColor, - message, wParam, lParam); - break; - } - case WM_CTLCOLORMSGBOX: - { - int nCtlColor = CTLCOLOR_MSGBOX; - HWND control = (HWND)lParam; - HDC pDC = (HDC)wParam; - return (DWORD)MSWOnCtlColor((WXHDC) pDC, (WXHWND) control, nCtlColor, - message, wParam, lParam); - break; - } - case WM_CTLCOLORSCROLLBAR: - { - int nCtlColor = CTLCOLOR_SCROLLBAR; - HWND control = (HWND)lParam; - HDC pDC = (HDC)wParam; - return (DWORD)MSWOnCtlColor((WXHDC) pDC, (WXHWND) control, nCtlColor, - message, wParam, lParam); - break; - } - case WM_CTLCOLORSTATIC: - { - int nCtlColor = CTLCOLOR_STATIC; - HWND control = (HWND)lParam; - HDC pDC = (HDC)wParam; - return (DWORD)MSWOnCtlColor((WXHDC) pDC, (WXHWND) control, nCtlColor, - message, wParam, lParam); - break; - } - case WM_CTLCOLOREDIT: - { - int nCtlColor = CTLCOLOR_EDIT; - HWND control = (HWND)lParam; - HDC pDC = (HDC)wParam; - return (DWORD)MSWOnCtlColor((WXHDC) pDC, (WXHWND) control, nCtlColor, - message, wParam, lParam); - break; - } -#else - case WM_CTLCOLOR: - { - HWND control = (HWND)LOWORD(lParam); - int nCtlColor = (int)HIWORD(lParam); - HDC pDC = (HDC)wParam; - return (DWORD)MSWOnCtlColor((WXHDC) pDC, (WXHWND) control, nCtlColor, - message, wParam, lParam); - break; - } -#endif - case WM_SYSCOLORCHANGE: - { - // Return value of 0 means, we processed it. - if (MSWOnColorChange((WXHWND) hWnd, message, wParam, lParam) == 0) - return 0; - else - return MSWDefWindowProc(message, wParam, lParam ); - break; - } - case WM_PALETTECHANGED: - { - return MSWOnPaletteChanged((WXHWND) (HWND) wParam); - break; - } - case WM_QUERYNEWPALETTE: - { - return MSWOnQueryNewPalette(); - break; - } - case WM_ERASEBKGND: - { - // Prevents flicker when dragging - if (IsIconic(hWnd)) return 1; - - if (!MSWOnEraseBkgnd((WXHDC) (HDC)wParam)) - return 0; // Default(); MSWDefWindowProc(message, wParam, lParam ); - else return 1; - break; - } - case WM_MDIACTIVATE: - { -#ifdef __WIN32__ - HWND hWndActivate = GET_WM_MDIACTIVATE_HWNDACTIVATE(wParam,lParam); - HWND hWndDeactivate = GET_WM_MDIACTIVATE_HWNDDEACT(wParam,lParam); - BOOL activate = GET_WM_MDIACTIVATE_FACTIVATE(hWnd,wParam,lParam); - return MSWOnMDIActivate((long) activate, (WXHWND) hWndActivate, (WXHWND) hWndDeactivate); -#else - return MSWOnMDIActivate((BOOL)wParam, (HWND)LOWORD(lParam), - (HWND)HIWORD(lParam)); -#endif - } - case WM_DROPFILES: - { - MSWOnDropFiles(wParam); - break; - } - case WM_INITDIALOG: - { - return 0; // MSWOnInitDialog((WXHWND)(HWND)wParam); - break; - } - case WM_QUERYENDSESSION: - { - // Same as WM_CLOSE, but inverted results. Thx Microsoft :-) - // return MSWOnClose(); - - return MSWOnQueryEndSession(lParam); - break; - } - case WM_ENDSESSION: - { - // Same as WM_CLOSE, but inverted results. Thx Microsoft :-) - MSWOnEndSession((wParam != 0), lParam); - return 0L; - break; - } - case WM_CLOSE: - { - if (MSWOnClose()) - return 0L; - else - return 1L; - break; - } - - case WM_GETMINMAXINFO: - { - MINMAXINFO *info = (MINMAXINFO *)lParam; - if (m_minSizeX != -1) - info->ptMinTrackSize.x = (int)m_minSizeX; - if (m_minSizeY != -1) - info->ptMinTrackSize.y = (int)m_minSizeY; - if (m_maxSizeX != -1) - info->ptMaxTrackSize.x = (int)m_maxSizeX; - if (m_maxSizeY != -1) - info->ptMaxTrackSize.y = (int)m_maxSizeY; - return MSWDefWindowProc(message, wParam, lParam ); - break; - } - - case WM_GETDLGCODE: - return MSWGetDlgCode(); - - default: - return MSWDefWindowProc(message, wParam, lParam ); - } - return 0; // Success: we processed this command. -} - -// Dialog window proc -LONG APIENTRY _EXPORT -wxDlgProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) -{ - return 0; -} - -wxList *wxWinHandleList = NULL; -wxWindow *wxFindWinFromHandle(WXHWND hWnd) -{ - wxNode *node = wxWinHandleList->Find((long)hWnd); - if (!node) - return NULL; - return (wxWindow *)node->Data(); -} - -void wxAssociateWinWithHandle(HWND hWnd, wxWindow *win) -{ - // adding NULL hWnd is (first) surely a result of an error and - // (secondly) breaks menu command processing - wxCHECK_RET( hWnd != (HWND) NULL, "attempt to add a NULL hWnd to window list" ); - - if ( !wxWinHandleList->Find((long)hWnd) ) - wxWinHandleList->Append((long)hWnd, win); -} - -void wxRemoveHandleAssociation(wxWindow *win) -{ - wxWinHandleList->DeleteObject(win); -} - -// Default destroyer - override if you destroy it in some other way -// (e.g. with MDI child windows) -void wxWindow::MSWDestroyWindow() -{ -} - -void wxWindow::MSWCreate(int id, wxWindow *parent, const char *wclass, wxWindow *wx_win, const char *title, - int x, int y, int width, int height, - WXDWORD style, const char *dialog_template, WXDWORD extendedStyle) -{ - bool is_dialog = (dialog_template != NULL); - int x1 = CW_USEDEFAULT; - int y1 = 0; - int width1 = CW_USEDEFAULT; - int height1 = 100; - - // Find parent's size, if it exists, to set up a possible default - // panel size the size of the parent window - RECT parent_rect; - if (parent) - { - // Was GetWindowRect: JACS 5/5/95 - ::GetClientRect((HWND) parent->GetHWND(), &parent_rect); - - width1 = parent_rect.right - parent_rect.left; - height1 = parent_rect.bottom - parent_rect.top; - } - - if (x > -1) x1 = x; - if (y > -1) y1 = y; - if (width > -1) width1 = width; - if (height > -1) height1 = height; - - HWND hParent = NULL; - if (parent) - hParent = (HWND) parent->GetHWND(); - - wxWndHook = this; - - if (is_dialog) - { - // MakeProcInstance doesn't seem to be needed in C7. Is it needed for - // other compilers??? - // VZ: it's always needed for Win16 and never for Win32 -#ifdef __WIN32__ - m_hWnd = (WXHWND) ::CreateDialog(wxGetInstance(), dialog_template, hParent, - (DLGPROC)wxDlgProc); -#else - // N.B.: if we _don't_ use this form, - // then with VC++ 1.5, it crashes horribly. -#if 1 - m_hWnd = (WXHWND) ::CreateDialog(wxGetInstance(), dialog_template, hParent, - (DLGPROC)wxDlgProc); -#else - // Crashes when we use this. - DLGPROC dlgproc = (DLGPROC)MakeProcInstance((DLGPROC)wxWndProc, wxGetInstance()); - - m_hWnd = (WXHWND) ::CreateDialog(wxGetInstance(), dialog_template, hParent, - (DLGPROC)dlgproc); -#endif -#endif - - if (m_hWnd == 0) - MessageBox(NULL, "Can't find dummy dialog template!\nCheck resource include path for finding wx.rc.", - "wxWindows Error", MB_ICONEXCLAMATION | MB_OK); - else MoveWindow((HWND) m_hWnd, x1, y1, width1, height1, FALSE); - } - else - { - int controlId = 0; - if (style & WS_CHILD) - controlId = id; - if (!title) - title = ""; - - m_hWnd = (WXHWND)CreateWindowEx(extendedStyle, wclass, - title, - style, - x1, y1, - width1, height1, - hParent, (HMENU)controlId, wxGetInstance(), - NULL); - - if ( !m_hWnd ) { - wxLogError("Can't create window of class %s!\n" - "Possible Windows 3.x compatibility problem?", wclass); - } - } - - wxWndHook = NULL; - wxWinHandleList->Append((long)m_hWnd, this); -} - -void wxWindow::MSWOnCreate(WXLPCREATESTRUCT WXUNUSED(cs)) -{ -} - -bool wxWindow::MSWOnClose() -{ - return FALSE; -} - -// Some compilers don't define this -#ifndef ENDSESSION_LOGOFF -#define ENDSESSION_LOGOFF 0x80000000 -#endif - -// Return TRUE to end session, FALSE to veto end session. -bool wxWindow::MSWOnQueryEndSession(long logOff) -{ - wxCloseEvent event(wxEVT_QUERY_END_SESSION, -1); - event.SetEventObject(wxTheApp); - event.SetCanVeto(TRUE); - event.SetLoggingOff( (logOff == ENDSESSION_LOGOFF) ); - if ((this == wxTheApp->GetTopWindow()) && // Only send once - wxTheApp->ProcessEvent(event) && event.GetVeto()) - { - return FALSE; // Veto! - } - else - { - return TRUE; // Don't veto - } -} - -bool wxWindow::MSWOnEndSession(bool endSession, long logOff) -{ - wxCloseEvent event(wxEVT_END_SESSION, -1); - event.SetEventObject(wxTheApp); - event.SetCanVeto(FALSE); - event.SetLoggingOff( (logOff == ENDSESSION_LOGOFF) ); - if (endSession && // No need to send if the session isn't ending - (this == wxTheApp->GetTopWindow()) && // Only send once - wxTheApp->ProcessEvent(event)) - { - } - return TRUE; -} - -bool wxWindow::MSWOnDestroy() -{ - // delete our drop target if we've got one -#if wxUSE_DRAG_AND_DROP - if ( m_pDropTarget != NULL ) { - m_pDropTarget->Revoke(m_hWnd); - - delete m_pDropTarget; - m_pDropTarget = NULL; - } -#endif - - return TRUE; -} - -// Deal with child commands from buttons etc. - -long wxWindow::MSWOnNotify(WXWPARAM wParam, WXLPARAM lParam) -{ -#if defined(__WIN95__) - // Find a child window to send the notification to, e.g. a toolbar. - // There's a problem here. NMHDR::hwndFrom doesn't give us the - // handle of the toolbar; it's probably the handle of the tooltip - // window (anyway, it's parent is also the toolbar's parent). - // So, since we don't know which hWnd or wxWindow originated the - // WM_NOTIFY, we'll need to go through all the children of this window - // trying out MSWNotify. - // This won't work now, though, because any number of controls - // could respond to the same generic messages :-( - - /* This doesn't work for toolbars, but try for other controls first. - */ - NMHDR *hdr = (NMHDR *)lParam; - HWND hWnd = (HWND)hdr->hwndFrom; - wxWindow *win = wxFindWinFromHandle((WXHWND) hWnd); - - WXLPARAM result = 0; - - if ( win ) - { - if ( win->MSWNotify(wParam, lParam, &result) ) - return result; - } - else - { - // Rely on MSWNotify to check whether the message - // belongs to the window or not - wxNode *node = GetChildren().First(); - while (node) - { - wxWindow *child = (wxWindow *)node->Data(); - if ( child->MSWNotify(wParam, lParam, &result) ) - return result; - node = node->Next(); - } - - // finally try this window too (catches toolbar case) - if ( MSWNotify(wParam, lParam, &result) ) - return result; - } -#endif // Win95 - - // not processed - return FALSE; -} - -void wxWindow::MSWOnMenuHighlight(WXWORD WXUNUSED(item), WXWORD WXUNUSED(flags), WXHMENU WXUNUSED(sysmenu)) -{ -} - -void wxWindow::MSWOnInitMenuPopup(WXHMENU menu, int pos, bool isSystem) -{ -} - -bool wxWindow::MSWOnActivate(int state, bool WXUNUSED(minimized), WXHWND WXUNUSED(activate)) -{ - wxActivateEvent event(wxEVT_ACTIVATE, ((state == WA_ACTIVE) || (state == WA_CLICKACTIVE)), - m_windowId); - event.SetEventObject(this); - GetEventHandler()->ProcessEvent(event); - return 0; -} - -bool wxWindow::MSWOnSetFocus(WXHWND WXUNUSED(hwnd)) -{ - // Deal with caret - if (m_caretEnabled && (m_caretWidth > 0) && (m_caretHeight > 0)) - { - ::CreateCaret((HWND) GetHWND(), NULL, m_caretWidth, m_caretHeight); - if (m_caretShown) - ::ShowCaret((HWND) GetHWND()); - } - - wxFocusEvent event(wxEVT_SET_FOCUS, m_windowId); - event.SetEventObject(this); - if (!GetEventHandler()->ProcessEvent(event)) - Default(); - return TRUE; -} - -bool wxWindow::MSWOnKillFocus(WXHWND WXUNUSED(hwnd)) -{ - // Deal with caret - if (m_caretEnabled) - { - ::DestroyCaret(); - } - - wxFocusEvent event(wxEVT_KILL_FOCUS, m_windowId); - event.SetEventObject(this); - if (!GetEventHandler()->ProcessEvent(event)) - Default(); - return TRUE; -} - -void wxWindow::MSWOnDropFiles(WXWPARAM wParam) -{ - - HDROP hFilesInfo = (HDROP) wParam; - POINT dropPoint; - DragQueryPoint(hFilesInfo, (LPPOINT) &dropPoint); - - // Get the total number of files dropped - WORD gwFilesDropped = (WORD)DragQueryFile ((HDROP)hFilesInfo, - (UINT)-1, - (LPSTR)0, - (UINT)0); - - wxString *files = new wxString[gwFilesDropped]; - int wIndex; - for (wIndex=0; wIndex < (int)gwFilesDropped; wIndex++) - { - DragQueryFile (hFilesInfo, wIndex, (LPSTR) wxBuffer, 1000); - files[wIndex] = wxBuffer; - } - DragFinish (hFilesInfo); - - wxDropFilesEvent event(wxEVT_DROP_FILES, gwFilesDropped, files); - event.m_eventObject = this; - event.m_pos.x = dropPoint.x; event.m_pos.x = dropPoint.y; - - if (!GetEventHandler()->ProcessEvent(event)) - Default(); - - delete[] files; -} - -bool wxWindow::MSWOnDrawItem(int id, WXDRAWITEMSTRUCT *itemStruct) -{ -#if wxUSE_OWNER_DRAWN - if ( id == 0 ) { // is it a menu item? - DRAWITEMSTRUCT *pDrawStruct = (DRAWITEMSTRUCT *)itemStruct; - wxMenuItem *pMenuItem = (wxMenuItem *)(pDrawStruct->itemData); - wxCHECK( pMenuItem->IsKindOf(CLASSINFO(wxMenuItem)), FALSE ); - - // prepare to call OnDrawItem() - wxDC dc; - dc.SetHDC((WXHDC)pDrawStruct->hDC, FALSE); - wxRect rect(pDrawStruct->rcItem.left, pDrawStruct->rcItem.top, - pDrawStruct->rcItem.right - pDrawStruct->rcItem.left, - pDrawStruct->rcItem.bottom - pDrawStruct->rcItem.top); - return pMenuItem->OnDrawItem( - dc, rect, - (wxOwnerDrawn::wxODAction)pDrawStruct->itemAction, - (wxOwnerDrawn::wxODStatus)pDrawStruct->itemState - ); - } -#endif // owner-drawn menus - - wxWindow *item = FindItem(id); -#if wxUSE_DYNAMIC_CLASSES - if (item && item->IsKindOf(CLASSINFO(wxControl))) - { - return ((wxControl *)item)->MSWOnDraw(itemStruct); - } - else -#endif - return FALSE; -} - -bool wxWindow::MSWOnMeasureItem(int id, WXMEASUREITEMSTRUCT *itemStruct) -{ -#if wxUSE_OWNER_DRAWN - if ( id == 0 ) { // is it a menu item? - MEASUREITEMSTRUCT *pMeasureStruct = (MEASUREITEMSTRUCT *)itemStruct; - wxMenuItem *pMenuItem = (wxMenuItem *)(pMeasureStruct->itemData); - wxCHECK( pMenuItem->IsKindOf(CLASSINFO(wxMenuItem)), FALSE ); - - return pMenuItem->OnMeasureItem(&pMeasureStruct->itemWidth, - &pMeasureStruct->itemHeight); - } -#endif // owner-drawn menus - - wxWindow *item = FindItem(id); -#if wxUSE_DYNAMIC_CLASSES - if (item && item->IsKindOf(CLASSINFO(wxControl))) - { - return ((wxControl *)item)->MSWOnMeasure(itemStruct); - } - else -#endif - return FALSE; -} - -WXHBRUSH wxWindow::MSWOnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor, - WXUINT message, WXWPARAM wParam, WXLPARAM lParam) -{ - if (nCtlColor == CTLCOLOR_DLG) - { - return OnCtlColor(pDC, pWnd, nCtlColor, message, wParam, lParam); - } - - wxControl *item = (wxControl *)FindItemByHWND(pWnd, TRUE); - - WXHBRUSH hBrush = 0; - - if ( item ) - hBrush = item->OnCtlColor(pDC, pWnd, nCtlColor, message, wParam, lParam); - - // I think that even for dialogs, we may need to call DefWindowProc (?) - // Or maybe just rely on the usual default behaviour. - if ( !hBrush ) - hBrush = (WXHBRUSH) MSWDefWindowProc(message, wParam, lParam); - - return hBrush ; -} - -// Define for each class of dialog and control -WXHBRUSH wxWindow::OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor, - WXUINT message, WXWPARAM wParam, WXLPARAM lParam) -{ - return (WXHBRUSH) MSWDefWindowProc(message, wParam, lParam); -} - -bool wxWindow::MSWOnColorChange(WXHWND hWnd, WXUINT message, WXWPARAM wParam, WXLPARAM lParam) -{ - wxSysColourChangedEvent event; - event.SetEventObject(this); - - // Check if app handles this. - if (GetEventHandler()->ProcessEvent(event)) - return 0; - - // We didn't process it - return 1; -} - -long wxWindow::MSWOnPaletteChanged(WXHWND hWndPalChange) -{ - wxPaletteChangedEvent event(GetId()); - event.SetEventObject(this); - event.SetChangedWindow(wxFindWinFromHandle(hWndPalChange)); - GetEventHandler()->ProcessEvent(event); - return 0; -} - -long wxWindow::MSWOnQueryNewPalette() -{ - wxQueryNewPaletteEvent event(GetId()); - event.SetEventObject(this); - if (!GetEventHandler()->ProcessEvent(event) || !event.GetPaletteRealized()) - { - return (long) FALSE; - } - else - return (long) TRUE; -} - -// Responds to colour changes: passes event on to children. -void wxWindow::OnSysColourChanged(wxSysColourChangedEvent& event) -{ - wxNode *node = GetChildren().First(); - while ( node ) - { - // Only propagate to non-top-level windows - wxWindow *win = (wxWindow *)node->Data(); - if ( win->GetParent() ) - { - wxSysColourChangedEvent event2; - event.m_eventObject = win; - win->GetEventHandler()->ProcessEvent(event2); - } - - node = node->Next(); - } -} - -long wxWindow::MSWDefWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) -{ - if ( m_oldWndProc ) - return ::CallWindowProc(CASTWNDPROC m_oldWndProc, (HWND) GetHWND(), (UINT) nMsg, (WPARAM) wParam, (LPARAM) lParam); - else - return ::DefWindowProc((HWND) GetHWND(), nMsg, wParam, lParam); -} - -long wxWindow::Default() -{ - // Ignore 'fake' events (perhaps generated as a result of a separate real event) - if (m_lastMsg == 0) - return 0; - -#ifdef __WXDEBUG__ - wxLogTrace(wxTraceMessages, "Forwarding %s to DefWindowProc.", - wxGetMessageName(m_lastMsg)); -#endif // __WXDEBUG__ - - return this->MSWDefWindowProc(m_lastMsg, m_lastWParam, m_lastLParam); -} - -bool wxWindow::MSWProcessMessage(WXMSG* pMsg) -{ - if ( m_hWnd != 0 && (GetWindowStyleFlag() & wxTAB_TRAVERSAL) ) { - // intercept dialog navigation keys - MSG *msg = (MSG *)pMsg; - bool bProcess = TRUE; - if ( msg->message != WM_KEYDOWN ) - bProcess = FALSE; - - if ( (HIWORD(msg->lParam) & KF_ALTDOWN) == KF_ALTDOWN ) - bProcess = FALSE; - - bool bCtrlDown = (::GetKeyState(VK_CONTROL) & 0x100) != 0; - - // WM_GETDLGCODE: if the control wants it for itself, don't process it - // (except for Ctrl-Tab combination which is always processed) - LONG lDlgCode = 0; - if ( bProcess && !bCtrlDown ) { - lDlgCode = ::SendMessage(msg->hwnd, WM_GETDLGCODE, 0, 0); - } - - bool bForward = TRUE; - if ( bProcess ) { - switch ( msg->wParam ) { - case VK_TAB: - if ( lDlgCode & DLGC_WANTTAB ) // FALSE for Ctrl-Tab - bProcess = FALSE; - else - bForward = !(::GetKeyState(VK_SHIFT) & 0x100); - break; - - case VK_UP: - case VK_LEFT: - if ( (lDlgCode & DLGC_WANTARROWS) || bCtrlDown ) - bProcess = FALSE; - else - bForward = FALSE; - break; - - case VK_DOWN: - case VK_RIGHT: - if ( (lDlgCode & DLGC_WANTARROWS) || bCtrlDown ) - bProcess = FALSE; - break; - - default: - bProcess = FALSE; - } - } - - if ( bProcess ) { - wxNavigationKeyEvent event; - event.SetDirection(bForward); - event.SetWindowChange(bCtrlDown); - event.SetEventObject(this); - - if ( GetEventHandler()->ProcessEvent(event) ) - return TRUE; - } - - return ::IsDialogMessage((HWND)GetHWND(), msg) != 0; - } - - return FALSE; -} - -bool wxWindow::MSWTranslateMessage(WXMSG* pMsg) -{ - if (m_acceleratorTable.Ok() && - ::TranslateAccelerator((HWND) GetHWND(), (HACCEL) m_acceleratorTable.GetHACCEL(), (MSG *)pMsg)) - return TRUE; - else - return FALSE; -} - -long wxWindow::MSWOnMDIActivate(long WXUNUSED(flag), WXHWND WXUNUSED(activate), WXHWND WXUNUSED(deactivate)) -{ - return 1; -} - -void wxWindow::MSWDetachWindowMenu() -{ - if (m_hMenu) - { - int N = GetMenuItemCount((HMENU) m_hMenu); - int i; - for (i = 0; i < N; i++) - { - char buf[100]; - int chars = GetMenuString((HMENU) m_hMenu, i, buf, 100, MF_BYPOSITION); - if ((chars > 0) && (strcmp(buf, "&Window") == 0)) - { - RemoveMenu((HMENU) m_hMenu, i, MF_BYPOSITION); - break; - } - } - } -} - -bool wxWindow::MSWOnPaint() -{ -#ifdef __WIN32__ - HRGN hRegion = ::CreateRectRgn(0, 0, 0, 0); // Dummy call to get a handle - ::GetUpdateRgn((HWND) GetHWND(), hRegion, FALSE); - - m_updateRegion = wxRegion((WXHRGN) hRegion); -#else - RECT updateRect; - ::GetUpdateRect((HWND) GetHWND(), & updateRect, FALSE); - - m_updateRegion = wxRegion(updateRect.left, updateRect.top, - updateRect.right - updateRect.left, updateRect.bottom - updateRect.top); -#endif - - wxPaintEvent event(m_windowId); - event.SetEventObject(this); - if (!GetEventHandler()->ProcessEvent(event)) - Default(); - return TRUE; -} - -void wxWindow::MSWOnSize(int w, int h, WXUINT WXUNUSED(flag)) -{ - if (m_inOnSize) - return; - - if (!m_hWnd) - return; - - m_inOnSize = TRUE; - - wxSizeEvent event(wxSize(w, h), m_windowId); - event.SetEventObject(this); - if (!GetEventHandler()->ProcessEvent(event)) - Default(); - - m_inOnSize = FALSE; -} - -void wxWindow::MSWOnWindowPosChanging(void *WXUNUSED(lpPos)) -{ - Default(); -} - -// Deal with child commands from buttons etc. -bool wxWindow::MSWOnCommand(WXWORD id, WXWORD cmd, WXHWND control) -{ - if (wxCurrentPopupMenu) - { - wxMenu *popupMenu = wxCurrentPopupMenu; - wxCurrentPopupMenu = NULL; - bool succ = popupMenu->MSWCommand(cmd, id); - return succ; - } - - wxWindow *item = FindItem(id); - if (item) - { - bool value = item->MSWCommand(cmd, id); - return value; - } - else - { - wxWindow *win = wxFindWinFromHandle(control); - if (win) - return win->MSWCommand(cmd, id); - } - return FALSE; -} - -long wxWindow::MSWOnSysCommand(WXWPARAM wParam, WXLPARAM lParam) -{ - switch (wParam) - { - case SC_MAXIMIZE: - { - wxMaximizeEvent event(m_windowId); - event.SetEventObject(this); - if (!GetEventHandler()->ProcessEvent(event)) - return Default(); - else - return 0; - break; - } - case SC_MINIMIZE: - { - wxIconizeEvent event(m_windowId); - event.SetEventObject(this); - if (!GetEventHandler()->ProcessEvent(event)) - return Default(); - else - return 0; - break; - } - default: - return Default(); - } - return 0; -} - -void wxWindow::MSWOnLButtonDown(int x, int y, WXUINT flags) -{ - wxMouseEvent event(wxEVT_LEFT_DOWN); - - event.m_x = x; event.m_y = y; - event.m_shiftDown = ((flags & MK_SHIFT) != 0); - event.m_controlDown = ((flags & MK_CONTROL) != 0); - event.m_leftDown = ((flags & MK_LBUTTON) != 0); - event.m_middleDown = ((flags & MK_MBUTTON) != 0); - event.m_rightDown = ((flags & MK_RBUTTON) != 0); - event.SetTimestamp(wxApp::sm_lastMessageTime); - event.m_eventObject = this; - - m_lastXPos = event.m_x; m_lastYPos = event.m_y; m_lastEvent = wxEVT_LEFT_DOWN; - - if (!GetEventHandler()->ProcessEvent(event)) - Default(); -} - -void wxWindow::MSWOnLButtonUp(int x, int y, WXUINT flags) -{ - wxMouseEvent event(wxEVT_LEFT_UP); - - event.m_x = x; event.m_y = y; - event.m_shiftDown = ((flags & MK_SHIFT) != 0); - event.m_controlDown = ((flags & MK_CONTROL) != 0); - event.m_leftDown = ((flags & MK_LBUTTON) != 0); - event.m_middleDown = ((flags & MK_MBUTTON) != 0); - event.m_rightDown = ((flags & MK_RBUTTON) != 0); - event.SetTimestamp(wxApp::sm_lastMessageTime); - event.m_eventObject = this; - - m_lastXPos = event.m_x; m_lastYPos = event.m_y; m_lastEvent = wxEVT_LEFT_UP; - - if (!GetEventHandler()->ProcessEvent(event)) - Default(); -} - -void wxWindow::MSWOnLButtonDClick(int x, int y, WXUINT flags) -{ - wxMouseEvent event(wxEVT_LEFT_DCLICK); - - event.m_x = x; event.m_y = y; - event.m_shiftDown = ((flags & MK_SHIFT) != 0); - event.m_controlDown = ((flags & MK_CONTROL) != 0); - event.m_leftDown = ((flags & MK_LBUTTON) != 0); - event.m_middleDown = ((flags & MK_MBUTTON) != 0); - event.m_rightDown = ((flags & MK_RBUTTON) != 0); - event.SetTimestamp(wxApp::sm_lastMessageTime); - event.m_eventObject = this; - - m_lastXPos = event.m_x; m_lastYPos = event.m_y; m_lastEvent = wxEVT_LEFT_DCLICK; - - if (!GetEventHandler()->ProcessEvent(event)) - Default(); -} - -void wxWindow::MSWOnMButtonDown(int x, int y, WXUINT flags) -{ - wxMouseEvent event(wxEVT_MIDDLE_DOWN); - - event.m_x = x; event.m_y = y; - event.m_shiftDown = ((flags & MK_SHIFT) != 0); - event.m_controlDown = ((flags & MK_CONTROL) != 0); - event.m_leftDown = ((flags & MK_LBUTTON) != 0); - event.m_middleDown = ((flags & MK_MBUTTON) != 0); - event.m_rightDown = ((flags & MK_RBUTTON) != 0); - event.SetTimestamp(wxApp::sm_lastMessageTime); - event.m_eventObject = this; - - m_lastXPos = event.m_x; m_lastYPos = event.m_y; m_lastEvent = wxEVT_MIDDLE_DOWN; - - if (!GetEventHandler()->ProcessEvent(event)) - Default(); -} - -void wxWindow::MSWOnMButtonUp(int x, int y, WXUINT flags) -{ - //wxDebugMsg("MButtonUp\n") ; - wxMouseEvent event(wxEVT_MIDDLE_UP); - - event.m_x = x; event.m_y = y; - event.m_shiftDown = ((flags & MK_SHIFT) != 0); - event.m_controlDown = ((flags & MK_CONTROL) != 0); - event.m_leftDown = ((flags & MK_LBUTTON) != 0); - event.m_middleDown = ((flags & MK_MBUTTON) != 0); - event.m_rightDown = ((flags & MK_RBUTTON) != 0); - event.SetTimestamp(wxApp::sm_lastMessageTime); - event.m_eventObject = this; - - m_lastXPos = event.m_x; m_lastYPos = event.m_y; m_lastEvent = wxEVT_MIDDLE_UP; - - if (!GetEventHandler()->ProcessEvent(event)) - Default(); -} - -void wxWindow::MSWOnMButtonDClick(int x, int y, WXUINT flags) -{ - wxMouseEvent event(wxEVT_MIDDLE_DCLICK); - - event.m_x = x; event.m_y = y; - event.m_shiftDown = ((flags & MK_SHIFT) != 0); - event.m_controlDown = ((flags & MK_CONTROL) != 0); - event.m_leftDown = ((flags & MK_LBUTTON) != 0); - event.m_middleDown = ((flags & MK_MBUTTON) != 0); - event.m_rightDown = ((flags & MK_RBUTTON) != 0); - event.SetTimestamp(wxApp::sm_lastMessageTime); - event.m_eventObject = this; - - m_lastXPos = event.m_x; m_lastYPos = event.m_y; m_lastEvent = wxEVT_MIDDLE_DCLICK; - - if (!GetEventHandler()->ProcessEvent(event)) - Default(); -} - -void wxWindow::MSWOnRButtonDown(int x, int y, WXUINT flags) -{ - wxMouseEvent event(wxEVT_RIGHT_DOWN); - - event.m_x = x; event.m_y = y; - event.m_shiftDown = ((flags & MK_SHIFT) != 0); - event.m_controlDown = ((flags & MK_CONTROL) != 0); - event.m_leftDown = ((flags & MK_LBUTTON) != 0); - event.m_middleDown = ((flags & MK_MBUTTON) != 0); - event.m_rightDown = ((flags & MK_RBUTTON) != 0); - event.SetTimestamp(wxApp::sm_lastMessageTime); - event.m_eventObject = this; - - m_lastXPos = event.m_x; m_lastYPos = event.m_y; m_lastEvent = wxEVT_RIGHT_DOWN; - - if (!GetEventHandler()->ProcessEvent(event)) - Default(); -} - -void wxWindow::MSWOnRButtonUp(int x, int y, WXUINT flags) -{ - wxMouseEvent event(wxEVT_RIGHT_UP); - - event.m_x = x; event.m_y = y; - event.m_shiftDown = ((flags & MK_SHIFT) != 0); - event.m_controlDown = ((flags & MK_CONTROL) != 0); - event.m_leftDown = ((flags & MK_LBUTTON) != 0); - event.m_middleDown = ((flags & MK_MBUTTON) != 0); - event.m_rightDown = ((flags & MK_RBUTTON) != 0); - event.m_eventObject = this; - event.SetTimestamp(wxApp::sm_lastMessageTime); - - m_lastXPos = event.m_x; m_lastYPos = event.m_y; m_lastEvent = wxEVT_RIGHT_UP; - - if (!GetEventHandler()->ProcessEvent(event)) - Default(); -} - -void wxWindow::MSWOnRButtonDClick(int x, int y, WXUINT flags) -{ - wxMouseEvent event(wxEVT_RIGHT_DCLICK); - - event.m_x = x; event.m_y = y; - event.m_shiftDown = ((flags & MK_SHIFT) != 0); - event.m_controlDown = ((flags & MK_CONTROL) != 0); - event.m_leftDown = ((flags & MK_LBUTTON) != 0); - event.m_middleDown = ((flags & MK_MBUTTON) != 0); - event.m_rightDown = ((flags & MK_RBUTTON) != 0); - event.SetTimestamp(wxApp::sm_lastMessageTime); - event.m_eventObject = this; - - m_lastXPos = event.m_x; m_lastYPos = event.m_y; m_lastEvent = wxEVT_RIGHT_DCLICK; - - if (!GetEventHandler()->ProcessEvent(event)) - Default(); -} - -void wxWindow::MSWOnMouseMove(int x, int y, WXUINT flags) -{ - // 'normal' move event... - // Set cursor, but only if we're not in 'busy' mode - - // Trouble with this is that it sets the cursor for controls too :-( - if (m_windowCursor.Ok() && !wxIsBusy()) - ::SetCursor((HCURSOR) m_windowCursor.GetHCURSOR()); - - if (!m_mouseInWindow) - { - // Generate an ENTER event - m_mouseInWindow = TRUE; - MSWOnMouseEnter(x, y, flags); - } - - wxMouseEvent event(wxEVT_MOTION); - - event.m_x = x; event.m_y = y; - event.m_shiftDown = ((flags & MK_SHIFT) != 0); - event.m_controlDown = ((flags & MK_CONTROL) != 0); - event.m_leftDown = ((flags & MK_LBUTTON) != 0); - event.m_middleDown = ((flags & MK_MBUTTON) != 0); - event.m_rightDown = ((flags & MK_RBUTTON) != 0); - event.SetTimestamp(wxApp::sm_lastMessageTime); - event.m_eventObject = this; - - // Window gets a click down message followed by a mouse move - // message even if position isn't changed! We want to discard - // the trailing move event if x and y are the same. - if ((m_lastEvent == wxEVT_RIGHT_DOWN || m_lastEvent == wxEVT_LEFT_DOWN || - m_lastEvent == wxEVT_MIDDLE_DOWN) && - (m_lastXPos == event.m_x && m_lastYPos == event.m_y)) - { - m_lastXPos = event.m_x; m_lastYPos = event.m_y; - m_lastEvent = wxEVT_MOTION; - return; - } - - m_lastEvent = wxEVT_MOTION; - m_lastXPos = event.m_x; m_lastYPos = event.m_y; - - if (!GetEventHandler()->ProcessEvent(event)) - Default(); -} - -void wxWindow::MSWOnMouseEnter(int x, int y, WXUINT flags) -{ - wxMouseEvent event(wxEVT_ENTER_WINDOW); - - event.m_x = x; event.m_y = y; - event.m_shiftDown = ((flags & MK_SHIFT) != 0); - event.m_controlDown = ((flags & MK_CONTROL) != 0); - event.m_leftDown = ((flags & MK_LBUTTON) != 0); - event.m_middleDown = ((flags & MK_MBUTTON) != 0); - event.m_rightDown = ((flags & MK_RBUTTON) != 0); - event.SetTimestamp(wxApp::sm_lastMessageTime); - event.m_eventObject = this; - - m_lastEvent = wxEVT_ENTER_WINDOW; - m_lastXPos = event.m_x; m_lastYPos = event.m_y; - // No message - ensure we don't try to call the default behaviour accidentally. - m_lastMsg = 0; - GetEventHandler()->ProcessEvent(event); -} - -void wxWindow::MSWOnMouseLeave(int x, int y, WXUINT flags) -{ - wxMouseEvent event(wxEVT_LEAVE_WINDOW); - - event.m_x = x; event.m_y = y; - event.m_shiftDown = ((flags & MK_SHIFT) != 0); - event.m_controlDown = ((flags & MK_CONTROL) != 0); - event.m_leftDown = ((flags & MK_LBUTTON) != 0); - event.m_middleDown = ((flags & MK_MBUTTON) != 0); - event.m_rightDown = ((flags & MK_RBUTTON) != 0); - event.SetTimestamp(wxApp::sm_lastMessageTime); - event.m_eventObject = this; - - m_lastEvent = wxEVT_LEAVE_WINDOW; - m_lastXPos = event.m_x; m_lastYPos = event.m_y; - // No message - ensure we don't try to call the default behaviour accidentally. - m_lastMsg = 0; - GetEventHandler()->ProcessEvent(event); -} - -void wxWindow::MSWOnChar(WXWORD wParam, WXLPARAM lParam, bool isASCII) -{ - int id; - bool tempControlDown = FALSE; - if (isASCII) - { - // If 1 -> 26, translate to CTRL plus a letter. - id = wParam; - if ((id > 0) && (id < 27)) - { - switch (id) - { - case 13: - { - id = WXK_RETURN; - break; - } - case 8: - { - id = WXK_BACK; - break; - } - case 9: - { - id = WXK_TAB; - break; - } - default: - { - tempControlDown = TRUE; - id = id + 96; - } - } - } - } - else if ((id = wxCharCodeMSWToWX(wParam)) == 0) { - // it's ASCII and will be processed here only when called from - // WM_CHAR (i.e. when isASCII = TRUE) - id = -1; - } - - if (id != -1) - { - wxKeyEvent event(wxEVT_CHAR); - event.m_shiftDown = (::GetKeyState(VK_SHIFT)&0x100?TRUE:FALSE); - event.m_controlDown = (::GetKeyState(VK_CONTROL)&0x100?TRUE:FALSE); - if ((HIWORD(lParam) & KF_ALTDOWN) == KF_ALTDOWN) - event.m_altDown = TRUE; - - event.m_eventObject = this; - event.m_keyCode = id; - event.SetTimestamp(wxApp::sm_lastMessageTime); - - POINT pt ; - GetCursorPos(&pt) ; - RECT rect ; - GetWindowRect((HWND) GetHWND(),&rect) ; - pt.x -= rect.left ; - pt.y -= rect.top ; - - event.m_x = pt.x; event.m_y = pt.y; - - if (!GetEventHandler()->ProcessEvent(event)) - Default(); - } -} - -void wxWindow::MSWOnKeyDown(WXWORD wParam, WXLPARAM lParam, bool isASCII) -{ - int id; - - if ((id = wxCharCodeMSWToWX(wParam)) == 0) { - id = wParam; - } - - if (id != -1) - { - wxKeyEvent event(wxEVT_KEY_DOWN); - event.m_shiftDown = (::GetKeyState(VK_SHIFT)&0x100?TRUE:FALSE); - event.m_controlDown = (::GetKeyState(VK_CONTROL)&0x100?TRUE:FALSE); - if ((HIWORD(lParam) & KF_ALTDOWN) == KF_ALTDOWN) - event.m_altDown = TRUE; - - event.m_eventObject = this; - event.m_keyCode = id; - event.SetTimestamp(wxApp::sm_lastMessageTime); - - POINT pt ; - GetCursorPos(&pt) ; - RECT rect ; - GetWindowRect((HWND) GetHWND(),&rect) ; - pt.x -= rect.left ; - pt.y -= rect.top ; - - event.m_x = pt.x; event.m_y = pt.y; - - if (!GetEventHandler()->ProcessEvent(event)) - Default(); - } -} - -void wxWindow::MSWOnKeyUp(WXWORD wParam, WXLPARAM lParam, bool isASCII) -{ - int id; - - if ((id = wxCharCodeMSWToWX(wParam)) == 0) { - id = wParam; - } - - if (id != -1) - { - wxKeyEvent event(wxEVT_KEY_UP); - event.m_shiftDown = (::GetKeyState(VK_SHIFT)&0x100?TRUE:FALSE); - event.m_controlDown = (::GetKeyState(VK_CONTROL)&0x100?TRUE:FALSE); - if ((HIWORD(lParam) & KF_ALTDOWN) == KF_ALTDOWN) - event.m_altDown = TRUE; - - event.m_eventObject = this; - event.m_keyCode = id; - event.SetTimestamp(wxApp::sm_lastMessageTime); - - POINT pt ; - GetCursorPos(&pt) ; - RECT rect ; - GetWindowRect((HWND) GetHWND(),&rect) ; - pt.x -= rect.left ; - pt.y -= rect.top ; - - event.m_x = pt.x; event.m_y = pt.y; - - if (!GetEventHandler()->ProcessEvent(event)) - Default(); - } -} - -void wxWindow::MSWOnJoyDown(int joystick, int x, int y, WXUINT flags) -{ - int buttons = 0; - int change = 0; - if (flags & JOY_BUTTON1CHG) - change = wxJOY_BUTTON1; - if (flags & JOY_BUTTON2CHG) - change = wxJOY_BUTTON2; - if (flags & JOY_BUTTON3CHG) - change = wxJOY_BUTTON3; - if (flags & JOY_BUTTON4CHG) - change = wxJOY_BUTTON4; - - if (flags & JOY_BUTTON1) - buttons |= wxJOY_BUTTON1; - if (flags & JOY_BUTTON2) - buttons |= wxJOY_BUTTON2; - if (flags & JOY_BUTTON3) - buttons |= wxJOY_BUTTON3; - if (flags & JOY_BUTTON4) - buttons |= wxJOY_BUTTON4; - - wxJoystickEvent event(wxEVT_JOY_BUTTON_DOWN, buttons, joystick, change); - event.SetPosition(wxPoint(x, y)); - event.SetEventObject(this); - - GetEventHandler()->ProcessEvent(event); -} - -void wxWindow::MSWOnJoyUp(int joystick, int x, int y, WXUINT flags) -{ - int buttons = 0; - int change = 0; - if (flags & JOY_BUTTON1CHG) - change = wxJOY_BUTTON1; - if (flags & JOY_BUTTON2CHG) - change = wxJOY_BUTTON2; - if (flags & JOY_BUTTON3CHG) - change = wxJOY_BUTTON3; - if (flags & JOY_BUTTON4CHG) - change = wxJOY_BUTTON4; - - if (flags & JOY_BUTTON1) - buttons |= wxJOY_BUTTON1; - if (flags & JOY_BUTTON2) - buttons |= wxJOY_BUTTON2; - if (flags & JOY_BUTTON3) - buttons |= wxJOY_BUTTON3; - if (flags & JOY_BUTTON4) - buttons |= wxJOY_BUTTON4; - - wxJoystickEvent event(wxEVT_JOY_BUTTON_UP, buttons, joystick, change); - event.SetPosition(wxPoint(x, y)); - event.SetEventObject(this); - - GetEventHandler()->ProcessEvent(event); -} - -void wxWindow::MSWOnJoyMove(int joystick, int x, int y, WXUINT flags) -{ - int buttons = 0; - if (flags & JOY_BUTTON1) - buttons |= wxJOY_BUTTON1; - if (flags & JOY_BUTTON2) - buttons |= wxJOY_BUTTON2; - if (flags & JOY_BUTTON3) - buttons |= wxJOY_BUTTON3; - if (flags & JOY_BUTTON4) - buttons |= wxJOY_BUTTON4; - - wxJoystickEvent event(wxEVT_JOY_MOVE, buttons, joystick, 0); - event.SetPosition(wxPoint(x, y)); - event.SetEventObject(this); - - GetEventHandler()->ProcessEvent(event); -} - -void wxWindow::MSWOnJoyZMove(int joystick, int z, WXUINT flags) -{ - int buttons = 0; - if (flags & JOY_BUTTON1) - buttons |= wxJOY_BUTTON1; - if (flags & JOY_BUTTON2) - buttons |= wxJOY_BUTTON2; - if (flags & JOY_BUTTON3) - buttons |= wxJOY_BUTTON3; - if (flags & JOY_BUTTON4) - buttons |= wxJOY_BUTTON4; - - wxJoystickEvent event(wxEVT_JOY_ZMOVE, buttons, joystick, 0); - event.SetZPosition(z); - event.SetEventObject(this); - - GetEventHandler()->ProcessEvent(event); -} - -void wxWindow::MSWOnVScroll(WXWORD wParam, WXWORD pos, WXHWND control) -{ - if (control) - { - wxWindow *child = wxFindWinFromHandle(control); - if ( child ) - child->MSWOnVScroll(wParam, pos, control); - return; - } - - wxScrollEvent event; - event.SetPosition(pos); - event.SetOrientation(wxVERTICAL); - event.m_eventObject = this; - - switch ( wParam ) - { - case SB_TOP: - event.m_eventType = wxEVT_SCROLL_TOP; - break; - - case SB_BOTTOM: - event.m_eventType = wxEVT_SCROLL_BOTTOM; - break; - - case SB_LINEUP: - event.m_eventType = wxEVT_SCROLL_LINEUP; - break; - - case SB_LINEDOWN: - event.m_eventType = wxEVT_SCROLL_LINEDOWN; - break; - - case SB_PAGEUP: - event.m_eventType = wxEVT_SCROLL_PAGEUP; - break; - - case SB_PAGEDOWN: - event.m_eventType = wxEVT_SCROLL_PAGEDOWN; - break; - - case SB_THUMBTRACK: - case SB_THUMBPOSITION: - event.m_eventType = wxEVT_SCROLL_THUMBTRACK; - break; - - default: - return; - break; - } - - if (!GetEventHandler()->ProcessEvent(event)) - Default(); -} - -void wxWindow::MSWOnHScroll( WXWORD wParam, WXWORD pos, WXHWND control) -{ - if (control) - { - wxWindow *child = wxFindWinFromHandle(control); - if ( child ) { - child->MSWOnHScroll(wParam, pos, control); - - return; - } - } - else { - wxScrollEvent event; - event.SetPosition(pos); - event.SetOrientation(wxHORIZONTAL); - event.m_eventObject = this; - - switch ( wParam ) - { - case SB_TOP: - event.m_eventType = wxEVT_SCROLL_TOP; - break; - - case SB_BOTTOM: - event.m_eventType = wxEVT_SCROLL_BOTTOM; - break; - - case SB_LINEUP: - event.m_eventType = wxEVT_SCROLL_LINEUP; - break; - - case SB_LINEDOWN: - event.m_eventType = wxEVT_SCROLL_LINEDOWN; - break; - - case SB_PAGEUP: - event.m_eventType = wxEVT_SCROLL_PAGEUP; - break; - - case SB_PAGEDOWN: - event.m_eventType = wxEVT_SCROLL_PAGEDOWN; - break; - - case SB_THUMBTRACK: - case SB_THUMBPOSITION: - event.m_eventType = wxEVT_SCROLL_THUMBTRACK; - break; - - default: - return; - } - - if ( GetEventHandler()->ProcessEvent(event) ) - return; - } - - // call the default WM_HSCROLL handler: it's non trivial in some common - // controls (up-down control for example) - Default(); -} - -void wxWindow::MSWOnShow(bool show, int status) -{ - wxShowEvent event(GetId(), show); - event.m_eventObject = this; - GetEventHandler()->ProcessEvent(event); -} - -bool wxWindow::MSWOnInitDialog(WXHWND WXUNUSED(hWndFocus)) -{ - wxInitDialogEvent event(GetId()); - event.m_eventObject = this; - GetEventHandler()->ProcessEvent(event); - return TRUE; -} - -void wxWindow::InitDialog() -{ - wxInitDialogEvent event(GetId()); - event.SetEventObject( this ); - GetEventHandler()->ProcessEvent(event); -} - -// Default init dialog behaviour is to transfer data to window -void wxWindow::OnInitDialog(wxInitDialogEvent& event) -{ - TransferDataToWindow(); -} - -void wxGetCharSize(WXHWND wnd, int *x, int *y,wxFont *the_font) -{ - TEXTMETRIC tm; - HDC dc = ::GetDC((HWND) wnd); - HFONT fnt =0; - HFONT was = 0; - if (the_font) - { - // the_font->UseResource(); - // the_font->RealizeResource(); - fnt = (HFONT)the_font->GetResourceHandle(); - if ( fnt ) - was = (HFONT) SelectObject(dc,fnt) ; - } - GetTextMetrics(dc, &tm); - if (the_font && fnt && was) - { - SelectObject(dc,was) ; - } - ReleaseDC((HWND)wnd, dc); - *x = tm.tmAveCharWidth; - *y = tm.tmHeight + tm.tmExternalLeading; - - // if (the_font) - // the_font->ReleaseResource(); -} - -// Returns 0 if was a normal ASCII value, not a special key. This indicates that -// the key should be ignored by WM_KEYDOWN and processed by WM_CHAR instead. -int wxCharCodeMSWToWX(int keySym) -{ - int id = 0; - switch (keySym) - { - case VK_CANCEL: id = WXK_CANCEL; break; - case VK_BACK: id = WXK_BACK; break; - case VK_TAB: id = WXK_TAB; break; - case VK_CLEAR: id = WXK_CLEAR; break; - case VK_RETURN: id = WXK_RETURN; break; - case VK_SHIFT: id = WXK_SHIFT; break; - case VK_CONTROL: id = WXK_CONTROL; break; - case VK_MENU : id = WXK_MENU; break; - case VK_PAUSE: id = WXK_PAUSE; break; - case VK_SPACE: id = WXK_SPACE; break; - case VK_ESCAPE: id = WXK_ESCAPE; break; - case VK_PRIOR: id = WXK_PRIOR; break; - case VK_NEXT : id = WXK_NEXT; break; - case VK_END: id = WXK_END; break; - case VK_HOME : id = WXK_HOME; break; - case VK_LEFT : id = WXK_LEFT; break; - case VK_UP: id = WXK_UP; break; - case VK_RIGHT: id = WXK_RIGHT; break; - case VK_DOWN : id = WXK_DOWN; break; - case VK_SELECT: id = WXK_SELECT; break; - case VK_PRINT: id = WXK_PRINT; break; - case VK_EXECUTE: id = WXK_EXECUTE; break; - case VK_INSERT: id = WXK_INSERT; break; - case VK_DELETE: id = WXK_DELETE; break; - case VK_HELP : id = WXK_HELP; break; - case VK_NUMPAD0: id = WXK_NUMPAD0; break; - case VK_NUMPAD1: id = WXK_NUMPAD1; break; - case VK_NUMPAD2: id = WXK_NUMPAD2; break; - case VK_NUMPAD3: id = WXK_NUMPAD3; break; - case VK_NUMPAD4: id = WXK_NUMPAD4; break; - case VK_NUMPAD5: id = WXK_NUMPAD5; break; - case VK_NUMPAD6: id = WXK_NUMPAD6; break; - case VK_NUMPAD7: id = WXK_NUMPAD7; break; - case VK_NUMPAD8: id = WXK_NUMPAD8; break; - case VK_NUMPAD9: id = WXK_NUMPAD9; break; - case VK_MULTIPLY: id = WXK_MULTIPLY; break; - case VK_ADD: id = WXK_ADD; break; - case VK_SUBTRACT: id = WXK_SUBTRACT; break; - case VK_DECIMAL: id = WXK_DECIMAL; break; - case VK_DIVIDE: id = WXK_DIVIDE; break; - case VK_F1: id = WXK_F1; break; - case VK_F2: id = WXK_F2; break; - case VK_F3: id = WXK_F3; break; - case VK_F4: id = WXK_F4; break; - case VK_F5: id = WXK_F5; break; - case VK_F6: id = WXK_F6; break; - case VK_F7: id = WXK_F7; break; - case VK_F8: id = WXK_F8; break; - case VK_F9: id = WXK_F9; break; - case VK_F10: id = WXK_F10; break; - case VK_F11: id = WXK_F11; break; - case VK_F12: id = WXK_F12; break; - case VK_F13: id = WXK_F13; break; - case VK_F14: id = WXK_F14; break; - case VK_F15: id = WXK_F15; break; - case VK_F16: id = WXK_F16; break; - case VK_F17: id = WXK_F17; break; - case VK_F18: id = WXK_F18; break; - case VK_F19: id = WXK_F19; break; - case VK_F20: id = WXK_F20; break; - case VK_F21: id = WXK_F21; break; - case VK_F22: id = WXK_F22; break; - case VK_F23: id = WXK_F23; break; - case VK_F24: id = WXK_F24; break; - case VK_NUMLOCK: id = WXK_NUMLOCK; break; - case VK_SCROLL: id = WXK_SCROLL; break; - default: - { - return 0; - } - } - return id; -} - -int wxCharCodeWXToMSW(int id, bool *isVirtual) -{ - *isVirtual = TRUE; - int keySym = 0; - switch (id) - { - case WXK_CANCEL: keySym = VK_CANCEL; break; - case WXK_CLEAR: keySym = VK_CLEAR; break; - case WXK_SHIFT: keySym = VK_SHIFT; break; - case WXK_CONTROL: keySym = VK_CONTROL; break; - case WXK_MENU : keySym = VK_MENU; break; - case WXK_PAUSE: keySym = VK_PAUSE; break; - case WXK_PRIOR: keySym = VK_PRIOR; break; - case WXK_NEXT : keySym = VK_NEXT; break; - case WXK_END: keySym = VK_END; break; - case WXK_HOME : keySym = VK_HOME; break; - case WXK_LEFT : keySym = VK_LEFT; break; - case WXK_UP: keySym = VK_UP; break; - case WXK_RIGHT: keySym = VK_RIGHT; break; - case WXK_DOWN : keySym = VK_DOWN; break; - case WXK_SELECT: keySym = VK_SELECT; break; - case WXK_PRINT: keySym = VK_PRINT; break; - case WXK_EXECUTE: keySym = VK_EXECUTE; break; - case WXK_INSERT: keySym = VK_INSERT; break; - case WXK_DELETE: keySym = VK_DELETE; break; - case WXK_HELP : keySym = VK_HELP; break; - case WXK_NUMPAD0: keySym = VK_NUMPAD0; break; - case WXK_NUMPAD1: keySym = VK_NUMPAD1; break; - case WXK_NUMPAD2: keySym = VK_NUMPAD2; break; - case WXK_NUMPAD3: keySym = VK_NUMPAD3; break; - case WXK_NUMPAD4: keySym = VK_NUMPAD4; break; - case WXK_NUMPAD5: keySym = VK_NUMPAD5; break; - case WXK_NUMPAD6: keySym = VK_NUMPAD6; break; - case WXK_NUMPAD7: keySym = VK_NUMPAD7; break; - case WXK_NUMPAD8: keySym = VK_NUMPAD8; break; - case WXK_NUMPAD9: keySym = VK_NUMPAD9; break; - case WXK_MULTIPLY: keySym = VK_MULTIPLY; break; - case WXK_ADD: keySym = VK_ADD; break; - case WXK_SUBTRACT: keySym = VK_SUBTRACT; break; - case WXK_DECIMAL: keySym = VK_DECIMAL; break; - case WXK_DIVIDE: keySym = VK_DIVIDE; break; - case WXK_F1: keySym = VK_F1; break; - case WXK_F2: keySym = VK_F2; break; - case WXK_F3: keySym = VK_F3; break; - case WXK_F4: keySym = VK_F4; break; - case WXK_F5: keySym = VK_F5; break; - case WXK_F6: keySym = VK_F6; break; - case WXK_F7: keySym = VK_F7; break; - case WXK_F8: keySym = VK_F8; break; - case WXK_F9: keySym = VK_F9; break; - case WXK_F10: keySym = VK_F10; break; - case WXK_F11: keySym = VK_F11; break; - case WXK_F12: keySym = VK_F12; break; - case WXK_F13: keySym = VK_F13; break; - case WXK_F14: keySym = VK_F14; break; - case WXK_F15: keySym = VK_F15; break; - case WXK_F16: keySym = VK_F16; break; - case WXK_F17: keySym = VK_F17; break; - case WXK_F18: keySym = VK_F18; break; - case WXK_F19: keySym = VK_F19; break; - case WXK_F20: keySym = VK_F20; break; - case WXK_F21: keySym = VK_F21; break; - case WXK_F22: keySym = VK_F22; break; - case WXK_F23: keySym = VK_F23; break; - case WXK_F24: keySym = VK_F24; break; - case WXK_NUMLOCK: keySym = VK_NUMLOCK; break; - case WXK_SCROLL: keySym = VK_SCROLL; break; - default: - { - *isVirtual = FALSE; - keySym = id; - break; - } - } - return keySym; -} - -// Caret manipulation -void wxWindow::CreateCaret(int w, int h) -{ - m_caretWidth = w; - m_caretHeight = h; - m_caretEnabled = TRUE; -} - -void wxWindow::CreateCaret(const wxBitmap *WXUNUSED(bitmap)) -{ - // Not implemented -} - -void wxWindow::ShowCaret(bool show) -{ - if (m_caretEnabled) - { - if (show) - ::ShowCaret((HWND) GetHWND()); - else - ::HideCaret((HWND) GetHWND()); - m_caretShown = show; - } -} - -void wxWindow::DestroyCaret() -{ - m_caretEnabled = FALSE; -} - -void wxWindow::SetCaretPos(int x, int y) -{ - ::SetCaretPos(x, y); -} - -void wxWindow::GetCaretPos(int *x, int *y) const -{ - POINT point; - ::GetCaretPos(&point); - *x = point.x; - *y = point.y; -} - -wxWindow *wxGetActiveWindow() -{ - HWND hWnd = GetActiveWindow(); - if (hWnd != 0) - { - return wxFindWinFromHandle((WXHWND) hWnd); - } - return NULL; -} - -// Windows keyboard hook. Allows interception of e.g. F1, ESCAPE -// in active frames and dialogs, regardless of where the focus is. -static HHOOK wxTheKeyboardHook = 0; -static FARPROC wxTheKeyboardHookProc = 0; -int APIENTRY _EXPORT -wxKeyboardHook(int nCode, WORD wParam, DWORD lParam); - -void wxSetKeyboardHook(bool doIt) -{ - if (doIt) - { - wxTheKeyboardHookProc = MakeProcInstance((FARPROC) wxKeyboardHook, wxGetInstance()); - wxTheKeyboardHook = SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC) wxTheKeyboardHookProc, wxGetInstance(), -#if defined(__WIN32__) && !defined(__TWIN32__) - GetCurrentThreadId()); - // (DWORD)GetCurrentProcess()); // This is another possibility. Which is right? -#else - GetCurrentTask()); -#endif - } - else - { - UnhookWindowsHookEx(wxTheKeyboardHook); - FreeProcInstance(wxTheKeyboardHookProc); - } -} - -int APIENTRY _EXPORT -wxKeyboardHook(int nCode, WORD wParam, DWORD lParam) -{ - DWORD hiWord = HIWORD(lParam); - if (nCode != HC_NOREMOVE && ((hiWord & KF_UP) == 0)) - { - int id; - if ((id = wxCharCodeMSWToWX(wParam)) != 0) - { - wxKeyEvent event(wxEVT_CHAR_HOOK); - if ((HIWORD(lParam) & KF_ALTDOWN) == KF_ALTDOWN) - event.m_altDown = TRUE; - - event.m_eventObject = NULL; - event.m_keyCode = id; - /* begin Albert's fix for control and shift key 26.5 */ - event.m_shiftDown = (::GetKeyState(VK_SHIFT)&0x100?TRUE:FALSE); - event.m_controlDown = (::GetKeyState(VK_CONTROL)&0x100?TRUE:FALSE); - /* end Albert's fix for control and shift key 26.5 */ - event.SetTimestamp(wxApp::sm_lastMessageTime); - - wxWindow *win = wxGetActiveWindow(); - if (win) - { - if (win->GetEventHandler()->ProcessEvent(event)) - return 1; - } - else - { - if ( wxTheApp && wxTheApp->ProcessEvent(event) ) - return 1; - } - } - } - return (int)CallNextHookEx(wxTheKeyboardHook, nCode, wParam, lParam); -} - -void wxWindow::SetSizeHints(int minW, int minH, int maxW, int maxH, int WXUNUSED(incW), int WXUNUSED(incH)) -{ - m_minSizeX = minW; - m_minSizeY = minH; - m_maxSizeX = maxW; - m_maxSizeY = maxH; -} - -void wxWindow::Centre(int direction) -{ - int x, y, width, height, panel_width, panel_height, new_x, new_y; - - wxWindow *father = (wxWindow *)GetParent(); - if (!father) - return; - - father->GetClientSize(&panel_width, &panel_height); - GetSize(&width, &height); - GetPosition(&x, &y); - - new_x = -1; - new_y = -1; - - if (direction & wxHORIZONTAL) - new_x = (int)((panel_width - width)/2); - - if (direction & wxVERTICAL) - new_y = (int)((panel_height - height)/2); - - SetSize(new_x, new_y, -1, -1); - -} - -/* TODO (maybe) -void wxWindow::OnPaint() -{ -PaintSelectionHandles(); -} -*/ - -void wxWindow::WarpPointer (int x_pos, int y_pos) -{ - // Move the pointer to (x_pos,y_pos) coordinates. They are expressed in - // pixel coordinates, relatives to the canvas -- So, we first need to - // substract origin of the window, then convert to screen position - - int x = x_pos; int y = y_pos; - RECT rect; - GetWindowRect ((HWND) GetHWND(), &rect); - - x += rect.left; - y += rect.top; - - SetCursorPos (x, y); -} - -void wxWindow::MSWDeviceToLogical (float *x, float *y) const -{ -} - -bool wxWindow::MSWOnEraseBkgnd (WXHDC pDC) -{ - wxDC dc ; - - dc.SetHDC(pDC); - dc.SetWindow(this); - dc.BeginDrawing(); - - wxEraseEvent event(m_windowId, &dc); - event.m_eventObject = this; - if (!GetEventHandler()->ProcessEvent(event)) - { - dc.EndDrawing(); - dc.SelectOldObjects(pDC); - return FALSE; - } - else - { - dc.EndDrawing(); - dc.SelectOldObjects(pDC); - } - - dc.SetHDC((WXHDC) NULL); - return TRUE; -} - -void wxWindow::OnEraseBackground(wxEraseEvent& event) -{ - if (!GetHWND()) - return; - - RECT rect; - ::GetClientRect((HWND) GetHWND(), &rect); - - COLORREF ref = PALETTERGB(m_backgroundColour.Red(), m_backgroundColour.Green(), m_backgroundColour.Blue()) ; - HBRUSH hBrush = ::CreateSolidBrush(ref); - int mode = ::SetMapMode((HDC) event.GetDC()->GetHDC(), MM_TEXT); - - // ::GetClipBox((HDC) event.GetDC()->GetHDC(), &rect); - ::FillRect ((HDC) event.GetDC()->GetHDC(), &rect, hBrush); - ::DeleteObject(hBrush); - ::SetMapMode((HDC) event.GetDC()->GetHDC(), mode); - /* - // Less efficient version (and doesn't account for scrolling) - int w, h; - GetClientSize(& w, & h); - wxBrush *brush = wxTheBrushList->FindOrCreateBrush(& GetBackgroundColour(), wxSOLID); - event.GetDC()->SetBrush(brush); - event.GetDC()->SetPen(wxTRANSPARENT_PEN); - - event.GetDC()->DrawRectangle(0, 0, w+1, h+1); - */ -} - -#if WXWIN_COMPATIBILITY -void wxWindow::SetScrollRange(int orient, int range, bool refresh) -{ -#if defined(__WIN95__) - - int range1 = range; - - // Try to adjust the range to cope with page size > 1 - // - a Windows API quirk - int pageSize = GetScrollPage(orient); - if ( pageSize > 1 && range > 0) - { - range1 += (pageSize - 1); - } - - SCROLLINFO info; - int dir; - - if (orient == wxHORIZONTAL) { - dir = SB_HORZ; - } else { - dir = SB_VERT; - } - - info.cbSize = sizeof(SCROLLINFO); - info.nPage = pageSize; // Have to set this, or scrollbar goes awry - info.nMin = 0; - info.nMax = range1; - info.nPos = 0; - info.fMask = SIF_RANGE | SIF_PAGE; - - HWND hWnd = (HWND) GetHWND(); - if (hWnd) - ::SetScrollInfo(hWnd, dir, &info, refresh); -#else - int wOrient ; - if (orient == wxHORIZONTAL) - wOrient = SB_HORZ; - else - wOrient = SB_VERT; - - HWND hWnd = (HWND) GetHWND(); - if (hWnd) - ::SetScrollRange(hWnd, wOrient, 0, range, refresh); -#endif -} - -void wxWindow::SetScrollPage(int orient, int page, bool refresh) -{ -#if defined(__WIN95__) - SCROLLINFO info; - int dir; - - if (orient == wxHORIZONTAL) { - dir = SB_HORZ; - m_xThumbSize = page; - } else { - dir = SB_VERT; - m_yThumbSize = page; - } - - info.cbSize = sizeof(SCROLLINFO); - info.nPage = page; - info.nMin = 0; - info.fMask = SIF_PAGE ; - - HWND hWnd = (HWND) GetHWND(); - if (hWnd) - ::SetScrollInfo(hWnd, dir, &info, refresh); -#else - if (orient == wxHORIZONTAL) - m_xThumbSize = page; - else - m_yThumbSize = page; -#endif -} - -int wxWindow::OldGetScrollRange(int orient) const -{ - int wOrient ; - if (orient == wxHORIZONTAL) - wOrient = SB_HORZ; - else - wOrient = SB_VERT; - -#if __WATCOMC__ && defined(__WINDOWS_386__) - short minPos, maxPos; -#else - int minPos, maxPos; -#endif - HWND hWnd = (HWND) GetHWND(); - if (hWnd) - { - ::GetScrollRange(hWnd, wOrient, &minPos, &maxPos); -#if defined(__WIN95__) - // Try to adjust the range to cope with page size > 1 - // - a Windows API quirk - int pageSize = GetScrollPage(orient); - if ( pageSize > 1 ) - { - maxPos -= (pageSize - 1); - } -#endif - return maxPos; - } - else - return 0; -} - -int wxWindow::GetScrollPage(int orient) const -{ - if (orient == wxHORIZONTAL) - return m_xThumbSize; - else - return m_yThumbSize; -} -#endif - -int wxWindow::GetScrollPos(int orient) const -{ - int wOrient ; - if (orient == wxHORIZONTAL) - wOrient = SB_HORZ; - else - wOrient = SB_VERT; - HWND hWnd = (HWND) GetHWND(); - if (hWnd) - { - return ::GetScrollPos(hWnd, wOrient); - } - else - return 0; -} - -// This now returns the whole range, not just the number -// of positions that we can scroll. -int wxWindow::GetScrollRange(int orient) const -{ - int wOrient ; - if (orient == wxHORIZONTAL) - wOrient = SB_HORZ; - else - wOrient = SB_VERT; - -#if __WATCOMC__ && defined(__WINDOWS_386__) - short minPos, maxPos; -#else - int minPos, maxPos; -#endif - HWND hWnd = (HWND) GetHWND(); - if (hWnd) - { - ::GetScrollRange(hWnd, wOrient, &minPos, &maxPos); -#if defined(__WIN95__) - // Try to adjust the range to cope with page size > 1 - // - a Windows API quirk - int pageSize = GetScrollThumb(orient); - if ( pageSize > 1 ) - { - maxPos -= (pageSize - 1); - } - // October 10th: new range concept. - maxPos += pageSize; -#endif - - return maxPos; - } - else - return 0; -} - -int wxWindow::GetScrollThumb(int orient) const -{ - if (orient == wxHORIZONTAL) - return m_xThumbSize; - else - return m_yThumbSize; -} - -void wxWindow::SetScrollPos(int orient, int pos, bool refresh) -{ -#if defined(__WIN95__) - SCROLLINFO info; - int dir; - - if (orient == wxHORIZONTAL) { - dir = SB_HORZ; - } else { - dir = SB_VERT; - } - - info.cbSize = sizeof(SCROLLINFO); - info.nPage = 0; - info.nMin = 0; - info.nPos = pos; - info.fMask = SIF_POS ; - - HWND hWnd = (HWND) GetHWND(); - if (hWnd) - ::SetScrollInfo(hWnd, dir, &info, refresh); -#else - int wOrient ; - if (orient == wxHORIZONTAL) - wOrient = SB_HORZ; - else - wOrient = SB_VERT; - - HWND hWnd = (HWND) GetHWND(); - if (hWnd) - ::SetScrollPos(hWnd, wOrient, pos, refresh); -#endif -} - -// New function that will replace some of the above. -void wxWindow::SetScrollbar(int orient, int pos, int thumbVisible, - int range, bool refresh) -{ -/* -SetScrollPage(orient, thumbVisible, FALSE); - - int oldRange = range - thumbVisible ; - SetScrollRange(orient, oldRange, FALSE); - - SetScrollPos(orient, pos, refresh); - */ -#if defined(__WIN95__) - int oldRange = range - thumbVisible ; - - int range1 = oldRange; - - // Try to adjust the range to cope with page size > 1 - // - a Windows API quirk - int pageSize = thumbVisible; - if ( pageSize > 1 && range > 0) - { - range1 += (pageSize - 1); - } - - SCROLLINFO info; - int dir; - - if (orient == wxHORIZONTAL) { - dir = SB_HORZ; - } else { - dir = SB_VERT; - } - - info.cbSize = sizeof(SCROLLINFO); - info.nPage = pageSize; // Have to set this, or scrollbar goes awry - info.nMin = 0; - info.nMax = range1; - info.nPos = pos; - info.fMask = SIF_RANGE | SIF_PAGE | SIF_POS; - - HWND hWnd = (HWND) GetHWND(); - if (hWnd) - ::SetScrollInfo(hWnd, dir, &info, refresh); -#else - int wOrient ; - if (orient == wxHORIZONTAL) - wOrient = SB_HORZ; - else - wOrient = SB_VERT; - - HWND hWnd = (HWND) GetHWND(); - if (hWnd) - { - ::SetScrollRange(hWnd, wOrient, 0, range, FALSE); - ::SetScrollPos(hWnd, wOrient, pos, refresh); - } -#endif - if (orient == wxHORIZONTAL) { - m_xThumbSize = thumbVisible; - } else { - m_yThumbSize = thumbVisible; - } -} - -void wxWindow::ScrollWindow(int dx, int dy, const wxRect *rect) -{ - RECT rect2; - if ( rect ) - { - rect2.left = rect->x; - rect2.top = rect->y; - rect2.right = rect->x + rect->width; - rect2.bottom = rect->y + rect->height; - } - - if ( rect ) - ::ScrollWindow((HWND) GetHWND(), dx, dy, &rect2, NULL); - else - ::ScrollWindow((HWND) GetHWND(), dx, dy, NULL, NULL); -} - -void wxWindow::SetFont(const wxFont& font) -{ - m_windowFont = font; - - if (!m_windowFont.Ok()) - return; - - HWND hWnd = (HWND) GetHWND(); - if (hWnd != 0) - { - if (m_windowFont.GetResourceHandle()) - SendMessage(hWnd, WM_SETFONT, - (WPARAM)m_windowFont.GetResourceHandle(),TRUE); - } -} - -void wxWindow::SubclassWin(WXHWND hWnd) -{ - wxASSERT_MSG( !m_oldWndProc, "subclassing window twice?" ); - - wxAssociateWinWithHandle((HWND)hWnd, this); - - m_oldWndProc = (WXFARPROC) GetWindowLong((HWND) hWnd, GWL_WNDPROC); - SetWindowLong((HWND) hWnd, GWL_WNDPROC, (LONG) wxWndProc); -} - -void wxWindow::UnsubclassWin() -{ - wxRemoveHandleAssociation(this); - - // Restore old Window proc - if ((HWND) GetHWND()) - { - FARPROC farProc = (FARPROC) GetWindowLong((HWND) GetHWND(), GWL_WNDPROC); - if ((m_oldWndProc != 0) && (farProc != (FARPROC) m_oldWndProc)) - { - SetWindowLong((HWND) GetHWND(), GWL_WNDPROC, (LONG) m_oldWndProc); - m_oldWndProc = 0; - } - } -} - -// Make a Windows extended style from the given wxWindows window style -WXDWORD wxWindow::MakeExtendedStyle(long style, bool eliminateBorders) -{ - WXDWORD exStyle = 0; - if ( style & wxTRANSPARENT_WINDOW ) - exStyle |= WS_EX_TRANSPARENT ; - - if ( !eliminateBorders ) - { - if ( style & wxSUNKEN_BORDER ) - exStyle |= WS_EX_CLIENTEDGE ; - if ( style & wxDOUBLE_BORDER ) - exStyle |= WS_EX_DLGMODALFRAME ; -#if defined(__WIN95__) - if ( style & wxRAISED_BORDER ) - exStyle |= WS_EX_WINDOWEDGE ; - if ( style & wxSTATIC_BORDER ) - exStyle |= WS_EX_STATICEDGE ; -#endif - } - return exStyle; -} - -// Determines whether native 3D effects or CTL3D should be used, -// applying a default border style if required, and returning an extended -// style to pass to CreateWindowEx. -WXDWORD wxWindow::Determine3DEffects(WXDWORD defaultBorderStyle, bool *want3D) -{ - // If matches certain criteria, then assume no 3D effects - // unless specifically requested (dealt with in MakeExtendedStyle) - if ( !GetParent() || !IsKindOf(CLASSINFO(wxControl)) || (m_windowStyle & wxNO_BORDER) ) - { - *want3D = FALSE; - return MakeExtendedStyle(m_windowStyle, FALSE); - } - - // Determine whether we should be using 3D effects or not. - bool nativeBorder = FALSE; // by default, we don't want a Win95 effect - - // 1) App can specify global 3D effects - *want3D = wxTheApp->GetAuto3D(); - - // 2) If the parent is being drawn with user colours, or simple border specified, - // switch effects off. TODO: replace wxUSER_COLOURS with wxNO_3D - if (GetParent() && (GetParent()->GetWindowStyleFlag() & wxUSER_COLOURS) || (m_windowStyle & wxSIMPLE_BORDER)) - *want3D = FALSE; - - // 3) Control can override this global setting by defining - // a border style, e.g. wxSUNKEN_BORDER - if (m_windowStyle & wxSUNKEN_BORDER ) - *want3D = TRUE; - - // 4) If it's a special border, CTL3D can't cope so we want a native border - if ( (m_windowStyle & wxDOUBLE_BORDER) || (m_windowStyle & wxRAISED_BORDER) || - (m_windowStyle & wxSTATIC_BORDER) ) - { - *want3D = TRUE; - nativeBorder = TRUE; - } - - // 5) If this isn't a Win95 app, and we are using CTL3D, remove border - // effects from extended style -#if CTL3D - if ( *want3D ) - nativeBorder = FALSE; -#endif - - DWORD exStyle = MakeExtendedStyle(m_windowStyle, !nativeBorder); - - // If we want 3D, but haven't specified a border here, - // apply the default border style specified. - // TODO what about non-Win95 WIN32? Does it have borders? -#if defined(__WIN95__) && !CTL3D - if (defaultBorderStyle && (*want3D) && ! ((m_windowStyle & wxDOUBLE_BORDER) || (m_windowStyle & wxRAISED_BORDER) || - (m_windowStyle & wxSTATIC_BORDER) || (m_windowStyle & wxSIMPLE_BORDER) )) - exStyle |= defaultBorderStyle; // WS_EX_CLIENTEDGE ; -#endif - - return exStyle; -} - -void wxWindow::OnChar(wxKeyEvent& event) -{ -/* I'm commenting this out because otherwise, we lose tabs in e.g. a text window (see MDI sample) - * (JACS, 14/01/99) - if ( event.KeyCode() == WXK_TAB ) { - // propagate the TABs to the parent - it's up to it to decide what - // to do with it - if ( GetParent() ) { - if ( GetParent()->GetEventHandler()->ProcessEvent(event) ) - return; - } - } -*/ - - bool isVirtual; - int id = wxCharCodeWXToMSW((int)event.KeyCode(), &isVirtual); - - if ( id == -1 ) - id= m_lastWParam; - - if ( !event.ControlDown() ) - (void) MSWDefWindowProc(m_lastMsg, (WPARAM) id, m_lastLParam); -} - -void wxWindow::OnKeyDown(wxKeyEvent& event) -{ - Default(); -} - -void wxWindow::OnKeyUp(wxKeyEvent& event) -{ - Default(); -} - -void wxWindow::OnPaint(wxPaintEvent& event) -{ - Default(); -} - -bool wxWindow::IsEnabled(void) const -{ - return (::IsWindowEnabled((HWND) GetHWND()) != 0); -} - -// Dialog support: override these and call -// base class members to add functionality -// that can't be done using validators. -// NOTE: these functions assume that controls -// are direct children of this window, not grandchildren -// or other levels of descendant. - -// Transfer values to controls. If returns FALSE, -// it's an application error (pops up a dialog) -bool wxWindow::TransferDataToWindow() -{ - wxNode *node = GetChildren().First(); - while ( node ) - { - wxWindow *child = (wxWindow *)node->Data(); - if ( child->GetValidator() && /* child->GetValidator()->Ok() && */ - !child->GetValidator()->TransferToWindow() ) - { - wxMessageBox("Application Error", "Could not transfer data to window", wxOK|wxICON_EXCLAMATION); - return FALSE; - } - - node = node->Next(); - } - return TRUE; -} - -// Transfer values from controls. If returns FALSE, -// validation failed: don't quit -bool wxWindow::TransferDataFromWindow() -{ - wxNode *node = GetChildren().First(); - while ( node ) - { - wxWindow *child = (wxWindow *)node->Data(); - if ( child->GetValidator() && /* child->GetValidator()->Ok() && */ !child->GetValidator()->TransferFromWindow() ) - { - return FALSE; - } - - node = node->Next(); - } - return TRUE; -} - -bool wxWindow::Validate() -{ - wxNode *node = GetChildren().First(); - while ( node ) - { - wxWindow *child = (wxWindow *)node->Data(); - if ( child->GetValidator() && /* child->GetValidator()->Ok() && */ !child->GetValidator()->Validate(this) ) - { - return FALSE; - } - - node = node->Next(); - } - return TRUE; -} - -// Get the window with the focus -wxWindow *wxWindow::FindFocus() -{ - HWND hWnd = ::GetFocus(); - if ( hWnd ) - { - return wxFindWinFromHandle((WXHWND) hWnd); - } - return NULL; -} - -void wxWindow::AddChild(wxWindow *child) -{ - GetChildren().Append(child); - child->m_windowParent = this; -} - -void wxWindow::RemoveChild(wxWindow *child) -{ -// if (GetChildren()) - GetChildren().DeleteObject(child); - child->m_windowParent = NULL; -} - -void wxWindow::DestroyChildren() -{ - wxNode *node; - while ((node = GetChildren().First()) != (wxNode *)NULL) { - wxWindow *child; - if ((child = (wxWindow *)node->Data()) != (wxWindow *)NULL) { - delete child; - if ( GetChildren().Member(child) ) - delete node; - } - } /* while */ -} - -void wxWindow::MakeModal(bool modal) -{ - // Disable all other windows - if (this->IsKindOf(CLASSINFO(wxDialog)) || this->IsKindOf(CLASSINFO(wxFrame))) - { - wxNode *node = wxTopLevelWindows.First(); - while (node) - { - wxWindow *win = (wxWindow *)node->Data(); - if (win != this) - win->Enable(!modal); - - node = node->Next(); - } - } -} - -// If nothing defined for this, try the parent. -// E.g. we may be a button loaded from a resource, with no callback function -// defined. -void wxWindow::OnCommand(wxWindow& win, wxCommandEvent& event) -{ - if (GetEventHandler()->ProcessEvent(event) ) - return; - if (m_windowParent) - m_windowParent->GetEventHandler()->OnCommand(win, event); -} - -void wxWindow::SetConstraints(wxLayoutConstraints *c) -{ - if (m_constraints) - { - UnsetConstraints(m_constraints); - delete m_constraints; - } - m_constraints = c; - if (m_constraints) - { - // Make sure other windows know they're part of a 'meaningful relationship' - if (m_constraints->left.GetOtherWindow() && (m_constraints->left.GetOtherWindow() != this)) - m_constraints->left.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->top.GetOtherWindow() && (m_constraints->top.GetOtherWindow() != this)) - m_constraints->top.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->right.GetOtherWindow() && (m_constraints->right.GetOtherWindow() != this)) - m_constraints->right.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->bottom.GetOtherWindow() && (m_constraints->bottom.GetOtherWindow() != this)) - m_constraints->bottom.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->width.GetOtherWindow() && (m_constraints->width.GetOtherWindow() != this)) - m_constraints->width.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->height.GetOtherWindow() && (m_constraints->height.GetOtherWindow() != this)) - m_constraints->height.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->centreX.GetOtherWindow() && (m_constraints->centreX.GetOtherWindow() != this)) - m_constraints->centreX.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->centreY.GetOtherWindow() && (m_constraints->centreY.GetOtherWindow() != this)) - m_constraints->centreY.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - } -} - -// This removes any dangling pointers to this window -// in other windows' constraintsInvolvedIn lists. -void wxWindow::UnsetConstraints(wxLayoutConstraints *c) -{ - if (c) - { - if (c->left.GetOtherWindow() && (c->top.GetOtherWindow() != this)) - c->left.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->top.GetOtherWindow() && (c->top.GetOtherWindow() != this)) - c->top.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->right.GetOtherWindow() && (c->right.GetOtherWindow() != this)) - c->right.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->bottom.GetOtherWindow() && (c->bottom.GetOtherWindow() != this)) - c->bottom.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->width.GetOtherWindow() && (c->width.GetOtherWindow() != this)) - c->width.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->height.GetOtherWindow() && (c->height.GetOtherWindow() != this)) - c->height.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->centreX.GetOtherWindow() && (c->centreX.GetOtherWindow() != this)) - c->centreX.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->centreY.GetOtherWindow() && (c->centreY.GetOtherWindow() != this)) - c->centreY.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - } -} - -// Back-pointer to other windows we're involved with, so if we delete -// this window, we must delete any constraints we're involved with. -void wxWindow::AddConstraintReference(wxWindow *otherWin) -{ - if (!m_constraintsInvolvedIn) - m_constraintsInvolvedIn = new wxList; - if (!m_constraintsInvolvedIn->Member(otherWin)) - m_constraintsInvolvedIn->Append(otherWin); -} - -// REMOVE back-pointer to other windows we're involved with. -void wxWindow::RemoveConstraintReference(wxWindow *otherWin) -{ - if (m_constraintsInvolvedIn) - m_constraintsInvolvedIn->DeleteObject(otherWin); -} - -// Reset any constraints that mention this window -void wxWindow::DeleteRelatedConstraints() -{ - if (m_constraintsInvolvedIn) - { - wxNode *node = m_constraintsInvolvedIn->First(); - while (node) - { - wxWindow *win = (wxWindow *)node->Data(); - wxNode *next = node->Next(); - wxLayoutConstraints *constr = win->GetConstraints(); - - // Reset any constraints involving this window - if (constr) - { - constr->left.ResetIfWin((wxWindow *)this); - constr->top.ResetIfWin((wxWindow *)this); - constr->right.ResetIfWin((wxWindow *)this); - constr->bottom.ResetIfWin((wxWindow *)this); - constr->width.ResetIfWin((wxWindow *)this); - constr->height.ResetIfWin((wxWindow *)this); - constr->centreX.ResetIfWin((wxWindow *)this); - constr->centreY.ResetIfWin((wxWindow *)this); - } - delete node; - node = next; - } - delete m_constraintsInvolvedIn; - m_constraintsInvolvedIn = NULL; - } -} - -void wxWindow::SetSizer(wxSizer *sizer) -{ - m_windowSizer = sizer; - if (sizer) - sizer->SetSizerParent((wxWindow *)this); -} - -/* -* New version -*/ - -bool wxWindow::Layout() -{ - if (GetConstraints()) - { - int w, h; - GetClientSize(&w, &h); - GetConstraints()->width.SetValue(w); - GetConstraints()->height.SetValue(h); - } - - // If top level (one sizer), evaluate the sizer's constraints. - if (GetSizer()) - { - int noChanges; - GetSizer()->ResetConstraints(); // Mark all constraints as unevaluated - GetSizer()->LayoutPhase1(&noChanges); - GetSizer()->LayoutPhase2(&noChanges); - GetSizer()->SetConstraintSizes(); // Recursively set the real window sizes - return TRUE; - } - else - { - // Otherwise, evaluate child constraints - ResetConstraints(); // Mark all constraints as unevaluated - DoPhase(1); // Just one phase need if no sizers involved - DoPhase(2); - SetConstraintSizes(); // Recursively set the real window sizes - } - return TRUE; -} - - -// Do a phase of evaluating constraints: -// the default behaviour. wxSizers may do a similar -// thing, but also impose their own 'constraints' -// and order the evaluation differently. -bool wxWindow::LayoutPhase1(int *noChanges) -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - return constr->SatisfyConstraints((wxWindow *)this, noChanges); - } - else - return TRUE; -} - -bool wxWindow::LayoutPhase2(int *noChanges) -{ - *noChanges = 0; - - // Layout children - DoPhase(1); - DoPhase(2); - return TRUE; -} - -// Do a phase of evaluating child constraints -bool wxWindow::DoPhase(int phase) -{ - int noIterations = 0; - int maxIterations = 500; - int noChanges = 1; - int noFailures = 0; - wxList succeeded; - while ((noChanges > 0) && (noIterations < maxIterations)) - { - noChanges = 0; - noFailures = 0; - wxNode *node = GetChildren().First(); - while (node) - { - wxWindow *child = (wxWindow *)node->Data(); - if (!child->IsKindOf(CLASSINFO(wxFrame)) && !child->IsKindOf(CLASSINFO(wxDialog))) - { - wxLayoutConstraints *constr = child->GetConstraints(); - if (constr) - { - if (succeeded.Member(child)) - { - } - else - { - int tempNoChanges = 0; - bool success = ( (phase == 1) ? child->LayoutPhase1(&tempNoChanges) : child->LayoutPhase2(&tempNoChanges) ) ; - noChanges += tempNoChanges; - if (success) - { - succeeded.Append(child); - } - } - } - } - node = node->Next(); - } - noIterations ++; - } - return TRUE; -} - -void wxWindow::ResetConstraints() -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - constr->left.SetDone(FALSE); - constr->top.SetDone(FALSE); - constr->right.SetDone(FALSE); - constr->bottom.SetDone(FALSE); - constr->width.SetDone(FALSE); - constr->height.SetDone(FALSE); - constr->centreX.SetDone(FALSE); - constr->centreY.SetDone(FALSE); - } - wxNode *node = GetChildren().First(); - while (node) - { - wxWindow *win = (wxWindow *)node->Data(); - if (!win->IsKindOf(CLASSINFO(wxFrame)) && !win->IsKindOf(CLASSINFO(wxDialog))) - win->ResetConstraints(); - node = node->Next(); - } -} - -// Need to distinguish between setting the 'fake' size for -// windows and sizers, and setting the real values. -void wxWindow::SetConstraintSizes(bool recurse) -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr && constr->left.GetDone() && constr->right.GetDone() && - constr->width.GetDone() && constr->height.GetDone()) - { - int x = constr->left.GetValue(); - int y = constr->top.GetValue(); - int w = constr->width.GetValue(); - int h = constr->height.GetValue(); - - // If we don't want to resize this window, just move it... - if ((constr->width.GetRelationship() != wxAsIs) || - (constr->height.GetRelationship() != wxAsIs)) - { - // Calls Layout() recursively. AAAGH. How can we stop that. - // Simply take Layout() out of non-top level OnSizes. - SizerSetSize(x, y, w, h); - } - else - { - SizerMove(x, y); - } - } - else if (constr) - { - char *windowClass = this->GetClassInfo()->GetClassName(); - - wxString winName; - if (GetName() == "") - winName = "unnamed"; - else - winName = GetName(); - wxDebugMsg("Constraint(s) not satisfied for window of type %s, name %s:\n", (const char *)windowClass, (const char *)winName); - if (!constr->left.GetDone()) - wxDebugMsg(" unsatisfied 'left' constraint.\n"); - if (!constr->right.GetDone()) - wxDebugMsg(" unsatisfied 'right' constraint.\n"); - if (!constr->width.GetDone()) - wxDebugMsg(" unsatisfied 'width' constraint.\n"); - if (!constr->height.GetDone()) - wxDebugMsg(" unsatisfied 'height' constraint.\n"); - wxDebugMsg("Please check constraints: try adding AsIs() constraints.\n"); - } - - if (recurse) - { - wxNode *node = GetChildren().First(); - while (node) - { - wxWindow *win = (wxWindow *)node->Data(); - if (!win->IsKindOf(CLASSINFO(wxFrame)) && !win->IsKindOf(CLASSINFO(wxDialog))) - win->SetConstraintSizes(); - node = node->Next(); - } - } -} - -// This assumes that all sizers are 'on' the same -// window, i.e. the parent of this window. -void wxWindow::TransformSizerToActual(int *x, int *y) const -{ - if (!m_sizerParent || m_sizerParent->IsKindOf(CLASSINFO(wxDialog)) || - m_sizerParent->IsKindOf(CLASSINFO(wxFrame)) ) - return; - - int xp, yp; - m_sizerParent->GetPosition(&xp, &yp); - m_sizerParent->TransformSizerToActual(&xp, &yp); - *x += xp; - *y += yp; -} - -void wxWindow::SizerSetSize(int x, int y, int w, int h) -{ - int xx = x; - int yy = y; - TransformSizerToActual(&xx, &yy); - SetSize(xx, yy, w, h); -} - -void wxWindow::SizerMove(int x, int y) -{ - int xx = x; - int yy = y; - TransformSizerToActual(&xx, &yy); - Move(xx, yy); -} - -// Only set the size/position of the constraint (if any) -void wxWindow::SetSizeConstraint(int x, int y, int w, int h) -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - if (x != -1) - { - constr->left.SetValue(x); - constr->left.SetDone(TRUE); - } - if (y != -1) - { - constr->top.SetValue(y); - constr->top.SetDone(TRUE); - } - if (w != -1) - { - constr->width.SetValue(w); - constr->width.SetDone(TRUE); - } - if (h != -1) - { - constr->height.SetValue(h); - constr->height.SetDone(TRUE); - } - } -} - -void wxWindow::MoveConstraint(int x, int y) -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - if (x != -1) - { - constr->left.SetValue(x); - constr->left.SetDone(TRUE); - } - if (y != -1) - { - constr->top.SetValue(y); - constr->top.SetDone(TRUE); - } - } -} - -void wxWindow::GetSizeConstraint(int *w, int *h) const -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - *w = constr->width.GetValue(); - *h = constr->height.GetValue(); - } - else - GetSize(w, h); -} - -void wxWindow::GetClientSizeConstraint(int *w, int *h) const -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - *w = constr->width.GetValue(); - *h = constr->height.GetValue(); - } - else - GetClientSize(w, h); -} - -void wxWindow::GetPositionConstraint(int *x, int *y) const -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - *x = constr->left.GetValue(); - *y = constr->top.GetValue(); - } - else - GetPosition(x, y); -} - -bool wxWindow::Close(bool force) -{ - wxCloseEvent event(wxEVT_CLOSE_WINDOW, m_windowId); - event.SetEventObject(this); - event.SetForce(force); - event.SetCanVeto(!force); - - return (GetEventHandler()->ProcessEvent(event) && !event.GetVeto()); -} - -wxObject* wxWindow::GetChild(int number) const -{ - // Return a pointer to the Nth object in the Panel -// if (!GetChildren()) -// return(NULL) ; - wxNode *node = GetChildren().First(); - int n = number; - while (node && n--) - node = node->Next() ; - if (node) - { - wxObject *obj = (wxObject *)node->Data(); - return(obj) ; - } - else - return NULL ; -} - -void wxWindow::OnDefaultAction(wxControl *initiatingItem) -{ -/* This is obsolete now; if we wish to intercept listbox double-clicks, -* we explicitly intercept the wxEVT_COMMAND_LISTBOX_DOUBLECLICKED -* event. - - if (initiatingItem->IsKindOf(CLASSINFO(wxListBox))) - { - wxListBox *lbox = (wxListBox *)initiatingItem; - wxCommandEvent event(wxEVT_COMMAND_LEFT_DCLICK); - event.m_commandInt = -1; - if ((lbox->GetWindowStyleFlag() & wxLB_MULTIPLE) == 0) - { - event.m_commandString = copystring(lbox->GetStringSelection()); - event.m_commandInt = lbox->GetSelection(); - event.m_clientData = lbox->wxListBox::GetClientData(event.m_commandInt); - } - event.m_eventObject = lbox; - - lbox->ProcessCommand(event); - - if (event.m_commandString) - delete[] event.m_commandString; - return; - } - - wxButton *but = GetDefaultItem(); - if (but) - { - wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED); - event.SetEventObject(but); - but->Command(event); - } - */ -} - -void wxWindow::Clear() -{ - wxClientDC dc(this); - wxBrush brush(GetBackgroundColour(), wxSOLID); - dc.SetBackground(brush); - dc.Clear(); -} - -// Fits the panel around the items -void wxWindow::Fit() -{ - int maxX = 0; - int maxY = 0; - wxNode *node = GetChildren().First(); - while ( node ) - { - wxWindow *win = (wxWindow *)node->Data(); - int wx, wy, ww, wh; - win->GetPosition(&wx, &wy); - win->GetSize(&ww, &wh); - if ( wx + ww > maxX ) - maxX = wx + ww; - if ( wy + wh > maxY ) - maxY = wy + wh; - - node = node->Next(); - } - SetClientSize(maxX + 5, maxY + 5); -} - -void wxWindow::SetValidator(const wxValidator& validator) -{ - if ( m_windowValidator ) - delete m_windowValidator; - m_windowValidator = validator.Clone(); - - if ( m_windowValidator ) - m_windowValidator->SetWindow(this) ; -} - -// Find a window by id or name -wxWindow *wxWindow::FindWindow(long id) -{ - if ( GetId() == id) - return this; - - wxNode *node = GetChildren().First(); - while ( node ) - { - wxWindow *child = (wxWindow *)node->Data(); - wxWindow *found = child->FindWindow(id); - if ( found ) - return found; - node = node->Next(); - } - return NULL; -} - -wxWindow *wxWindow::FindWindow(const wxString& name) -{ - if ( GetName() == name) - return this; - - wxNode *node = GetChildren().First(); - while ( node ) - { - wxWindow *child = (wxWindow *)node->Data(); - wxWindow *found = child->FindWindow(name); - if ( found ) - return found; - node = node->Next(); - } - return NULL; -} - -/* TODO -// Default input behaviour for a scrolling canvas should be to scroll -// according to the cursor keys pressed -void wxWindow::OnChar(wxKeyEvent& event) -{ -int x_page = 0; -int y_page = 0; -int start_x = 0; -int start_y = 0; -// Bugfix Begin -int v_width = 0; -int v_height = 0; -int y_pages = 0; -// Bugfix End - - GetScrollUnitsPerPage(&x_page, &y_page); - // Bugfix Begin - GetVirtualSize(&v_width,&v_height); - // Bugfix End - ViewStart(&start_x, &start_y); - // Bugfix begin - if (vert_units) - y_pages = (int)(v_height/vert_units) - y_page; - - #ifdef __WXMSW__ - int y = 0; - #else - int y = y_page-1; - #endif - // Bugfix End - switch (event.keyCode) - { - case WXK_PRIOR: - { - // BugFix Begin - if (y_page > 0) - { - if (start_y - y_page > 0) - Scroll(start_x, start_y - y_page); - else - Scroll(start_x, 0); - } - // Bugfix End - break; - } - case WXK_NEXT: - { - // Bugfix Begin - if ((y_page > 0) && (start_y <= y_pages-y-1)) - { - if (y_pages + y < start_y + y_page) - Scroll(start_x, y_pages + y); - else - Scroll(start_x, start_y + y_page); - } - // Bugfix End - break; - } - case WXK_UP: - { - if ((y_page > 0) && (start_y >= 1)) - Scroll(start_x, start_y - 1); - break; - } - case WXK_DOWN: - { - // Bugfix Begin - if ((y_page > 0) && (start_y <= y_pages-y-1)) - // Bugfix End - { - Scroll(start_x, start_y + 1); - } - break; - } - case WXK_LEFT: - { - if ((x_page > 0) && (start_x >= 1)) - Scroll(start_x - 1, start_y); - break; - } - case WXK_RIGHT: - { - if (x_page > 0) - Scroll(start_x + 1, start_y); - break; - } - case WXK_HOME: - { - Scroll(0, 0); - break; - } - // This is new - case WXK_END: - { - Scroll(start_x, y_pages+y); - break; - } - // end - } - } -*/ - -// Setup background and foreground colours correctly -void wxWindow::SetupColours() -{ - if (GetParent()) - SetBackgroundColour(GetParent()->GetBackgroundColour()); -} - -void wxWindow::OnIdle(wxIdleEvent& event) -{ - // Check if we need to send a LEAVE event - if (m_mouseInWindow) - { - POINT pt; - ::GetCursorPos(&pt); - if (::WindowFromPoint(pt) != (HWND) GetHWND()) - { - // Generate a LEAVE event - m_mouseInWindow = FALSE; - - int state = 0; - if (::GetKeyState(VK_SHIFT) != 0) - state |= MK_SHIFT; - if (::GetKeyState(VK_CONTROL) != 0) - state |= MK_CONTROL; - - // Unfortunately the mouse button and keyboard state may have changed - // by the time the OnIdle function is called, so 'state' may be - // meaningless. - - MSWOnMouseLeave(pt.x, pt.y, state); - } - } - UpdateWindowUI(); -} - -// Raise the window to the top of the Z order -void wxWindow::Raise() -{ - ::BringWindowToTop((HWND) GetHWND()); -} - -// Lower the window to the bottom of the Z order -void wxWindow::Lower() -{ - ::SetWindowPos((HWND) GetHWND(), HWND_BOTTOM, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE|SWP_NOACTIVATE); -} - -long wxWindow::MSWGetDlgCode() -{ - // default: just forward to def window proc (the msg has no parameters) - return MSWDefWindowProc(WM_GETDLGCODE, 0, 0); -} - -bool wxWindow::AcceptsFocus() const -{ - return IsShown() && IsEnabled(); -} - -// Update region access -wxRegion wxWindow::GetUpdateRegion() const -{ - return m_updateRegion; -} - -bool wxWindow::IsExposed(int x, int y, int w, int h) const -{ - return (m_updateRegion.Contains(x, y, w, h) != wxOutRegion); -} - -bool wxWindow::IsExposed(const wxPoint& pt) const -{ - return (m_updateRegion.Contains(pt) != wxOutRegion); -} - -bool wxWindow::IsExposed(const wxRect& rect) const -{ - return (m_updateRegion.Contains(rect) != wxOutRegion); -} - -// Set this window to be the child of 'parent'. -bool wxWindow::Reparent(wxWindow *parent) -{ - if (parent == GetParent()) - return TRUE; - - // Unlink this window from the existing parent. - if (GetParent()) - { - GetParent()->RemoveChild(this); - } - else - wxTopLevelWindows.DeleteObject(this); - - HWND hWndParent = 0; - HWND hWndChild = (HWND) GetHWND(); - if (parent != (wxWindow*) NULL) - { - parent->AddChild(this); - hWndParent = (HWND) parent->GetHWND(); - } - else - wxTopLevelWindows.Append(this); - - ::SetParent(hWndChild, hWndParent); - - return TRUE; -} - -#ifdef __WXDEBUG__ -const char *wxGetMessageName(int message) -{ - switch ( message ) { - case 0x0000: return "WM_NULL"; - case 0x0001: return "WM_CREATE"; - case 0x0002: return "WM_DESTROY"; - case 0x0003: return "WM_MOVE"; - case 0x0005: return "WM_SIZE"; - case 0x0006: return "WM_ACTIVATE"; - case 0x0007: return "WM_SETFOCUS"; - case 0x0008: return "WM_KILLFOCUS"; - case 0x000A: return "WM_ENABLE"; - case 0x000B: return "WM_SETREDRAW"; - case 0x000C: return "WM_SETTEXT"; - case 0x000D: return "WM_GETTEXT"; - case 0x000E: return "WM_GETTEXTLENGTH"; - case 0x000F: return "WM_PAINT"; - case 0x0010: return "WM_CLOSE"; - case 0x0011: return "WM_QUERYENDSESSION"; - case 0x0012: return "WM_QUIT"; - case 0x0013: return "WM_QUERYOPEN"; - case 0x0014: return "WM_ERASEBKGND"; - case 0x0015: return "WM_SYSCOLORCHANGE"; - case 0x0016: return "WM_ENDSESSION"; - case 0x0017: return "WM_SYSTEMERROR"; - case 0x0018: return "WM_SHOWWINDOW"; - case 0x0019: return "WM_CTLCOLOR"; - case 0x001A: return "WM_WININICHANGE"; - case 0x001B: return "WM_DEVMODECHANGE"; - case 0x001C: return "WM_ACTIVATEAPP"; - case 0x001D: return "WM_FONTCHANGE"; - case 0x001E: return "WM_TIMECHANGE"; - case 0x001F: return "WM_CANCELMODE"; - case 0x0020: return "WM_SETCURSOR"; - case 0x0021: return "WM_MOUSEACTIVATE"; - case 0x0022: return "WM_CHILDACTIVATE"; - case 0x0023: return "WM_QUEUESYNC"; - case 0x0024: return "WM_GETMINMAXINFO"; - case 0x0026: return "WM_PAINTICON"; - case 0x0027: return "WM_ICONERASEBKGND"; - case 0x0028: return "WM_NEXTDLGCTL"; - case 0x002A: return "WM_SPOOLERSTATUS"; - case 0x002B: return "WM_DRAWITEM"; - case 0x002C: return "WM_MEASUREITEM"; - case 0x002D: return "WM_DELETEITEM"; - case 0x002E: return "WM_VKEYTOITEM"; - case 0x002F: return "WM_CHARTOITEM"; - case 0x0030: return "WM_SETFONT"; - case 0x0031: return "WM_GETFONT"; - case 0x0037: return "WM_QUERYDRAGICON"; - case 0x0039: return "WM_COMPAREITEM"; - case 0x0041: return "WM_COMPACTING"; - case 0x0044: return "WM_COMMNOTIFY"; - case 0x0046: return "WM_WINDOWPOSCHANGING"; - case 0x0047: return "WM_WINDOWPOSCHANGED"; - case 0x0048: return "WM_POWER"; - -#ifdef __WIN32__ - case 0x004A: return "WM_COPYDATA"; - case 0x004B: return "WM_CANCELJOURNAL"; - case 0x004E: return "WM_NOTIFY"; - case 0x0050: return "WM_INPUTLANGCHANGEREQUEST"; - case 0x0051: return "WM_INPUTLANGCHANGE"; - case 0x0052: return "WM_TCARD"; - case 0x0053: return "WM_HELP"; - case 0x0054: return "WM_USERCHANGED"; - case 0x0055: return "WM_NOTIFYFORMAT"; - case 0x007B: return "WM_CONTEXTMENU"; - case 0x007C: return "WM_STYLECHANGING"; - case 0x007D: return "WM_STYLECHANGED"; - case 0x007E: return "WM_DISPLAYCHANGE"; - case 0x007F: return "WM_GETICON"; - case 0x0080: return "WM_SETICON"; -#endif //WIN32 - - case 0x0081: return "WM_NCCREATE"; - case 0x0082: return "WM_NCDESTROY"; - case 0x0083: return "WM_NCCALCSIZE"; - case 0x0084: return "WM_NCHITTEST"; - case 0x0085: return "WM_NCPAINT"; - case 0x0086: return "WM_NCACTIVATE"; - case 0x0087: return "WM_GETDLGCODE"; - case 0x00A0: return "WM_NCMOUSEMOVE"; - case 0x00A1: return "WM_NCLBUTTONDOWN"; - case 0x00A2: return "WM_NCLBUTTONUP"; - case 0x00A3: return "WM_NCLBUTTONDBLCLK"; - case 0x00A4: return "WM_NCRBUTTONDOWN"; - case 0x00A5: return "WM_NCRBUTTONUP"; - case 0x00A6: return "WM_NCRBUTTONDBLCLK"; - case 0x00A7: return "WM_NCMBUTTONDOWN"; - case 0x00A8: return "WM_NCMBUTTONUP"; - case 0x00A9: return "WM_NCMBUTTONDBLCLK"; - case 0x0100: return "WM_KEYDOWN"; - case 0x0101: return "WM_KEYUP"; - case 0x0102: return "WM_CHAR"; - case 0x0103: return "WM_DEADCHAR"; - case 0x0104: return "WM_SYSKEYDOWN"; - case 0x0105: return "WM_SYSKEYUP"; - case 0x0106: return "WM_SYSCHAR"; - case 0x0107: return "WM_SYSDEADCHAR"; - case 0x0108: return "WM_KEYLAST"; - -#ifdef __WIN32__ - case 0x010D: return "WM_IME_STARTCOMPOSITION"; - case 0x010E: return "WM_IME_ENDCOMPOSITION"; - case 0x010F: return "WM_IME_COMPOSITION"; -#endif //WIN32 - - case 0x0110: return "WM_INITDIALOG"; - case 0x0111: return "WM_COMMAND"; - case 0x0112: return "WM_SYSCOMMAND"; - case 0x0113: return "WM_TIMER"; - case 0x0114: return "WM_HSCROLL"; - case 0x0115: return "WM_VSCROLL"; - case 0x0116: return "WM_INITMENU"; - case 0x0117: return "WM_INITMENUPOPUP"; - case 0x011F: return "WM_MENUSELECT"; - case 0x0120: return "WM_MENUCHAR"; - case 0x0121: return "WM_ENTERIDLE"; - case 0x0200: return "WM_MOUSEMOVE"; - case 0x0201: return "WM_LBUTTONDOWN"; - case 0x0202: return "WM_LBUTTONUP"; - case 0x0203: return "WM_LBUTTONDBLCLK"; - case 0x0204: return "WM_RBUTTONDOWN"; - case 0x0205: return "WM_RBUTTONUP"; - case 0x0206: return "WM_RBUTTONDBLCLK"; - case 0x0207: return "WM_MBUTTONDOWN"; - case 0x0208: return "WM_MBUTTONUP"; - case 0x0209: return "WM_MBUTTONDBLCLK"; - case 0x0210: return "WM_PARENTNOTIFY"; - case 0x0211: return "WM_ENTERMENULOOP"; - case 0x0212: return "WM_EXITMENULOOP"; - -#ifdef __WIN32__ - case 0x0213: return "WM_NEXTMENU"; - case 0x0214: return "WM_SIZING"; - case 0x0215: return "WM_CAPTURECHANGED"; - case 0x0216: return "WM_MOVING"; - case 0x0218: return "WM_POWERBROADCAST"; - case 0x0219: return "WM_DEVICECHANGE"; -#endif //WIN32 - - case 0x0220: return "WM_MDICREATE"; - case 0x0221: return "WM_MDIDESTROY"; - case 0x0222: return "WM_MDIACTIVATE"; - case 0x0223: return "WM_MDIRESTORE"; - case 0x0224: return "WM_MDINEXT"; - case 0x0225: return "WM_MDIMAXIMIZE"; - case 0x0226: return "WM_MDITILE"; - case 0x0227: return "WM_MDICASCADE"; - case 0x0228: return "WM_MDIICONARRANGE"; - case 0x0229: return "WM_MDIGETACTIVE"; - case 0x0230: return "WM_MDISETMENU"; - case 0x0233: return "WM_DROPFILES"; - -#ifdef __WIN32__ - case 0x0281: return "WM_IME_SETCONTEXT"; - case 0x0282: return "WM_IME_NOTIFY"; - case 0x0283: return "WM_IME_CONTROL"; - case 0x0284: return "WM_IME_COMPOSITIONFULL"; - case 0x0285: return "WM_IME_SELECT"; - case 0x0286: return "WM_IME_CHAR"; - case 0x0290: return "WM_IME_KEYDOWN"; - case 0x0291: return "WM_IME_KEYUP"; -#endif //WIN32 - - case 0x0300: return "WM_CUT"; - case 0x0301: return "WM_COPY"; - case 0x0302: return "WM_PASTE"; - case 0x0303: return "WM_CLEAR"; - case 0x0304: return "WM_UNDO"; - case 0x0305: return "WM_RENDERFORMAT"; - case 0x0306: return "WM_RENDERALLFORMATS"; - case 0x0307: return "WM_DESTROYCLIPBOARD"; - case 0x0308: return "WM_DRAWCLIPBOARD"; - case 0x0309: return "WM_PAINTCLIPBOARD"; - case 0x030A: return "WM_VSCROLLCLIPBOARD"; - case 0x030B: return "WM_SIZECLIPBOARD"; - case 0x030C: return "WM_ASKCBFORMATNAME"; - case 0x030D: return "WM_CHANGECBCHAIN"; - case 0x030E: return "WM_HSCROLLCLIPBOARD"; - case 0x030F: return "WM_QUERYNEWPALETTE"; - case 0x0310: return "WM_PALETTEISCHANGING"; - case 0x0311: return "WM_PALETTECHANGED"; - -#ifdef __WIN32__ - // common controls messages - although they're not strictly speaking - // standard, it's nice to decode them nevertheless - - // listview - case 0x1000 + 0: return "LVM_GETBKCOLOR"; - case 0x1000 + 1: return "LVM_SETBKCOLOR"; - case 0x1000 + 2: return "LVM_GETIMAGELIST"; - case 0x1000 + 3: return "LVM_SETIMAGELIST"; - case 0x1000 + 4: return "LVM_GETITEMCOUNT"; - case 0x1000 + 5: return "LVM_GETITEMA"; - case 0x1000 + 75: return "LVM_GETITEMW"; - case 0x1000 + 6: return "LVM_SETITEMA"; - case 0x1000 + 76: return "LVM_SETITEMW"; - case 0x1000 + 7: return "LVM_INSERTITEMA"; - case 0x1000 + 77: return "LVM_INSERTITEMW"; - case 0x1000 + 8: return "LVM_DELETEITEM"; - case 0x1000 + 9: return "LVM_DELETEALLITEMS"; - case 0x1000 + 10: return "LVM_GETCALLBACKMASK"; - case 0x1000 + 11: return "LVM_SETCALLBACKMASK"; - case 0x1000 + 12: return "LVM_GETNEXTITEM"; - case 0x1000 + 13: return "LVM_FINDITEMA"; - case 0x1000 + 83: return "LVM_FINDITEMW"; - case 0x1000 + 14: return "LVM_GETITEMRECT"; - case 0x1000 + 15: return "LVM_SETITEMPOSITION"; - case 0x1000 + 16: return "LVM_GETITEMPOSITION"; - case 0x1000 + 17: return "LVM_GETSTRINGWIDTHA"; - case 0x1000 + 87: return "LVM_GETSTRINGWIDTHW"; - case 0x1000 + 18: return "LVM_HITTEST"; - case 0x1000 + 19: return "LVM_ENSUREVISIBLE"; - case 0x1000 + 20: return "LVM_SCROLL"; - case 0x1000 + 21: return "LVM_REDRAWITEMS"; - case 0x1000 + 22: return "LVM_ARRANGE"; - case 0x1000 + 23: return "LVM_EDITLABELA"; - case 0x1000 + 118: return "LVM_EDITLABELW"; - case 0x1000 + 24: return "LVM_GETEDITCONTROL"; - case 0x1000 + 25: return "LVM_GETCOLUMNA"; - case 0x1000 + 95: return "LVM_GETCOLUMNW"; - case 0x1000 + 26: return "LVM_SETCOLUMNA"; - case 0x1000 + 96: return "LVM_SETCOLUMNW"; - case 0x1000 + 27: return "LVM_INSERTCOLUMNA"; - case 0x1000 + 97: return "LVM_INSERTCOLUMNW"; - case 0x1000 + 28: return "LVM_DELETECOLUMN"; - case 0x1000 + 29: return "LVM_GETCOLUMNWIDTH"; - case 0x1000 + 30: return "LVM_SETCOLUMNWIDTH"; - case 0x1000 + 31: return "LVM_GETHEADER"; - case 0x1000 + 33: return "LVM_CREATEDRAGIMAGE"; - case 0x1000 + 34: return "LVM_GETVIEWRECT"; - case 0x1000 + 35: return "LVM_GETTEXTCOLOR"; - case 0x1000 + 36: return "LVM_SETTEXTCOLOR"; - case 0x1000 + 37: return "LVM_GETTEXTBKCOLOR"; - case 0x1000 + 38: return "LVM_SETTEXTBKCOLOR"; - case 0x1000 + 39: return "LVM_GETTOPINDEX"; - case 0x1000 + 40: return "LVM_GETCOUNTPERPAGE"; - case 0x1000 + 41: return "LVM_GETORIGIN"; - case 0x1000 + 42: return "LVM_UPDATE"; - case 0x1000 + 43: return "LVM_SETITEMSTATE"; - case 0x1000 + 44: return "LVM_GETITEMSTATE"; - case 0x1000 + 45: return "LVM_GETITEMTEXTA"; - case 0x1000 + 115: return "LVM_GETITEMTEXTW"; - case 0x1000 + 46: return "LVM_SETITEMTEXTA"; - case 0x1000 + 116: return "LVM_SETITEMTEXTW"; - case 0x1000 + 47: return "LVM_SETITEMCOUNT"; - case 0x1000 + 48: return "LVM_SORTITEMS"; - case 0x1000 + 49: return "LVM_SETITEMPOSITION32"; - case 0x1000 + 50: return "LVM_GETSELECTEDCOUNT"; - case 0x1000 + 51: return "LVM_GETITEMSPACING"; - case 0x1000 + 52: return "LVM_GETISEARCHSTRINGA"; - case 0x1000 + 117: return "LVM_GETISEARCHSTRINGW"; - case 0x1000 + 53: return "LVM_SETICONSPACING"; - case 0x1000 + 54: return "LVM_SETEXTENDEDLISTVIEWSTYLE"; - case 0x1000 + 55: return "LVM_GETEXTENDEDLISTVIEWSTYLE"; - case 0x1000 + 56: return "LVM_GETSUBITEMRECT"; - case 0x1000 + 57: return "LVM_SUBITEMHITTEST"; - case 0x1000 + 58: return "LVM_SETCOLUMNORDERARRAY"; - case 0x1000 + 59: return "LVM_GETCOLUMNORDERARRAY"; - case 0x1000 + 60: return "LVM_SETHOTITEM"; - case 0x1000 + 61: return "LVM_GETHOTITEM"; - case 0x1000 + 62: return "LVM_SETHOTCURSOR"; - case 0x1000 + 63: return "LVM_GETHOTCURSOR"; - case 0x1000 + 64: return "LVM_APPROXIMATEVIEWRECT"; - case 0x1000 + 65: return "LVM_SETWORKAREA"; - - // tree view - case 0x1100 + 0: return "TVM_INSERTITEMA"; - case 0x1100 + 50: return "TVM_INSERTITEMW"; - case 0x1100 + 1: return "TVM_DELETEITEM"; - case 0x1100 + 2: return "TVM_EXPAND"; - case 0x1100 + 4: return "TVM_GETITEMRECT"; - case 0x1100 + 5: return "TVM_GETCOUNT"; - case 0x1100 + 6: return "TVM_GETINDENT"; - case 0x1100 + 7: return "TVM_SETINDENT"; - case 0x1100 + 8: return "TVM_GETIMAGELIST"; - case 0x1100 + 9: return "TVM_SETIMAGELIST"; - case 0x1100 + 10: return "TVM_GETNEXTITEM"; - case 0x1100 + 11: return "TVM_SELECTITEM"; - case 0x1100 + 12: return "TVM_GETITEMA"; - case 0x1100 + 62: return "TVM_GETITEMW"; - case 0x1100 + 13: return "TVM_SETITEMA"; - case 0x1100 + 63: return "TVM_SETITEMW"; - case 0x1100 + 14: return "TVM_EDITLABELA"; - case 0x1100 + 65: return "TVM_EDITLABELW"; - case 0x1100 + 15: return "TVM_GETEDITCONTROL"; - case 0x1100 + 16: return "TVM_GETVISIBLECOUNT"; - case 0x1100 + 17: return "TVM_HITTEST"; - case 0x1100 + 18: return "TVM_CREATEDRAGIMAGE"; - case 0x1100 + 19: return "TVM_SORTCHILDREN"; - case 0x1100 + 20: return "TVM_ENSUREVISIBLE"; - case 0x1100 + 21: return "TVM_SORTCHILDRENCB"; - case 0x1100 + 22: return "TVM_ENDEDITLABELNOW"; - case 0x1100 + 23: return "TVM_GETISEARCHSTRINGA"; - case 0x1100 + 64: return "TVM_GETISEARCHSTRINGW"; - case 0x1100 + 24: return "TVM_SETTOOLTIPS"; - case 0x1100 + 25: return "TVM_GETTOOLTIPS"; - - // header - case 0x1200 + 0: return "HDM_GETITEMCOUNT"; - case 0x1200 + 1: return "HDM_INSERTITEMA"; - case 0x1200 + 10: return "HDM_INSERTITEMW"; - case 0x1200 + 2: return "HDM_DELETEITEM"; - case 0x1200 + 3: return "HDM_GETITEMA"; - case 0x1200 + 11: return "HDM_GETITEMW"; - case 0x1200 + 4: return "HDM_SETITEMA"; - case 0x1200 + 12: return "HDM_SETITEMW"; - case 0x1200 + 5: return "HDM_LAYOUT"; - case 0x1200 + 6: return "HDM_HITTEST"; - case 0x1200 + 7: return "HDM_GETITEMRECT"; - case 0x1200 + 8: return "HDM_SETIMAGELIST"; - case 0x1200 + 9: return "HDM_GETIMAGELIST"; - case 0x1200 + 15: return "HDM_ORDERTOINDEX"; - case 0x1200 + 16: return "HDM_CREATEDRAGIMAGE"; - case 0x1200 + 17: return "HDM_GETORDERARRAY"; - case 0x1200 + 18: return "HDM_SETORDERARRAY"; - case 0x1200 + 19: return "HDM_SETHOTDIVIDER"; - - // tab control - case 0x1300 + 2: return "TCM_GETIMAGELIST"; - case 0x1300 + 3: return "TCM_SETIMAGELIST"; - case 0x1300 + 4: return "TCM_GETITEMCOUNT"; - case 0x1300 + 5: return "TCM_GETITEMA"; - case 0x1300 + 60: return "TCM_GETITEMW"; - case 0x1300 + 6: return "TCM_SETITEMA"; - case 0x1300 + 61: return "TCM_SETITEMW"; - case 0x1300 + 7: return "TCM_INSERTITEMA"; - case 0x1300 + 62: return "TCM_INSERTITEMW"; - case 0x1300 + 8: return "TCM_DELETEITEM"; - case 0x1300 + 9: return "TCM_DELETEALLITEMS"; - case 0x1300 + 10: return "TCM_GETITEMRECT"; - case 0x1300 + 11: return "TCM_GETCURSEL"; - case 0x1300 + 12: return "TCM_SETCURSEL"; - case 0x1300 + 13: return "TCM_HITTEST"; - case 0x1300 + 14: return "TCM_SETITEMEXTRA"; - case 0x1300 + 40: return "TCM_ADJUSTRECT"; - case 0x1300 + 41: return "TCM_SETITEMSIZE"; - case 0x1300 + 42: return "TCM_REMOVEIMAGE"; - case 0x1300 + 43: return "TCM_SETPADDING"; - case 0x1300 + 44: return "TCM_GETROWCOUNT"; - case 0x1300 + 45: return "TCM_GETTOOLTIPS"; - case 0x1300 + 46: return "TCM_SETTOOLTIPS"; - case 0x1300 + 47: return "TCM_GETCURFOCUS"; - case 0x1300 + 48: return "TCM_SETCURFOCUS"; - case 0x1300 + 49: return "TCM_SETMINTABWIDTH"; - case 0x1300 + 50: return "TCM_DESELECTALL"; - - // toolbar - case WM_USER+1: return "TB_ENABLEBUTTON"; - case WM_USER+2: return "TB_CHECKBUTTON"; - case WM_USER+3: return "TB_PRESSBUTTON"; - case WM_USER+4: return "TB_HIDEBUTTON"; - case WM_USER+5: return "TB_INDETERMINATE"; - case WM_USER+9: return "TB_ISBUTTONENABLED"; - case WM_USER+10: return "TB_ISBUTTONCHECKED"; - case WM_USER+11: return "TB_ISBUTTONPRESSED"; - case WM_USER+12: return "TB_ISBUTTONHIDDEN"; - case WM_USER+13: return "TB_ISBUTTONINDETERMINATE"; - case WM_USER+17: return "TB_SETSTATE"; - case WM_USER+18: return "TB_GETSTATE"; - case WM_USER+19: return "TB_ADDBITMAP"; - case WM_USER+20: return "TB_ADDBUTTONS"; - case WM_USER+21: return "TB_INSERTBUTTON"; - case WM_USER+22: return "TB_DELETEBUTTON"; - case WM_USER+23: return "TB_GETBUTTON"; - case WM_USER+24: return "TB_BUTTONCOUNT"; - case WM_USER+25: return "TB_COMMANDTOINDEX"; - case WM_USER+26: return "TB_SAVERESTOREA"; - case WM_USER+76: return "TB_SAVERESTOREW"; - case WM_USER+27: return "TB_CUSTOMIZE"; - case WM_USER+28: return "TB_ADDSTRINGA"; - case WM_USER+77: return "TB_ADDSTRINGW"; - case WM_USER+29: return "TB_GETITEMRECT"; - case WM_USER+30: return "TB_BUTTONSTRUCTSIZE"; - case WM_USER+31: return "TB_SETBUTTONSIZE"; - case WM_USER+32: return "TB_SETBITMAPSIZE"; - case WM_USER+33: return "TB_AUTOSIZE"; - case WM_USER+35: return "TB_GETTOOLTIPS"; - case WM_USER+36: return "TB_SETTOOLTIPS"; - case WM_USER+37: return "TB_SETPARENT"; - case WM_USER+39: return "TB_SETROWS"; - case WM_USER+40: return "TB_GETROWS"; - case WM_USER+42: return "TB_SETCMDID"; - case WM_USER+43: return "TB_CHANGEBITMAP"; - case WM_USER+44: return "TB_GETBITMAP"; - case WM_USER+45: return "TB_GETBUTTONTEXTA"; - case WM_USER+75: return "TB_GETBUTTONTEXTW"; - case WM_USER+46: return "TB_REPLACEBITMAP"; - case WM_USER+47: return "TB_SETINDENT"; - case WM_USER+48: return "TB_SETIMAGELIST"; - case WM_USER+49: return "TB_GETIMAGELIST"; - case WM_USER+50: return "TB_LOADIMAGES"; - case WM_USER+51: return "TB_GETRECT"; - case WM_USER+52: return "TB_SETHOTIMAGELIST"; - case WM_USER+53: return "TB_GETHOTIMAGELIST"; - case WM_USER+54: return "TB_SETDISABLEDIMAGELIST"; - case WM_USER+55: return "TB_GETDISABLEDIMAGELIST"; - case WM_USER+56: return "TB_SETSTYLE"; - case WM_USER+57: return "TB_GETSTYLE"; - case WM_USER+58: return "TB_GETBUTTONSIZE"; - case WM_USER+59: return "TB_SETBUTTONWIDTH"; - case WM_USER+60: return "TB_SETMAXTEXTROWS"; - case WM_USER+61: return "TB_GETTEXTROWS"; - case WM_USER+41: return "TB_GETBITMAPFLAGS"; - -#endif //WIN32 - - default: - static char s_szBuf[128]; - sprintf(s_szBuf, "", message); - return s_szBuf; - } -} -#endif //__WXDEBUG__ diff --git a/src/msw/wx.def b/src/msw/wx.def deleted file mode 100644 index 28df1caa12..0000000000 --- a/src/msw/wx.def +++ /dev/null @@ -1,11 +0,0 @@ -LIBRARY WX - -DESCRIPTION "wxWindows DLL" - -VERSION 1.0 - -CODE READ SHARED EXECUTE -DATA READ WRITE - - - diff --git a/src/msw/wxb32.def b/src/msw/wxb32.def deleted file mode 100644 index 3733ab22b6..0000000000 --- a/src/msw/wxb32.def +++ /dev/null @@ -1,9 +0,0 @@ -LIBRARY WX - -DESCRIPTION 'wxWindows DLL' - -CODE EXECUTEREAD MOVEABLE LOADONCALL -DATA READWRITE - - - diff --git a/src/msw/xpmhand.cpp b/src/msw/xpmhand.cpp deleted file mode 100644 index 0432f686b9..0000000000 --- a/src/msw/xpmhand.cpp +++ /dev/null @@ -1,182 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: xpmhand.cpp -// Purpose: wxBitmap: XPM handler and constructors -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "xpmhand.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include -#include "wx/setup.h" -#include "wx/list.h" -#include "wx/utils.h" -#include "wx/app.h" -#include "wx/palette.h" -#include "wx/dcmemory.h" -#include "wx/bitmap.h" -#include "wx/icon.h" -#endif - -#include "wx/msw/private.h" -#include "wx/log.h" - -#include "assert.h" - -#if wxUSE_XPM_IN_MSW -#define FOR_MSW 1 -#include "../src/xpm/xpm34.h" -#endif - -#include "wx/xpmhand.h" -#include "wx/msw/dib.h" - -IMPLEMENT_DYNAMIC_CLASS(wxXPMFileHandler, wxBitmapHandler) - -bool wxXPMFileHandler::LoadFile(wxBitmap *bitmap, const wxString& name, long flags, - int desiredWidth, int desiredHeight) -{ -#if wxUSE_XPM_IN_MSW - XImage *ximage; - XpmAttributes xpmAttr; - HDC dc; - - M_BITMAPHANDLERDATA->m_ok = FALSE; - dc = CreateCompatibleDC(NULL); - if (dc) - { - xpmAttr.valuemask = XpmReturnPixels; - int errorStatus = XpmReadFileToImage(&dc, WXSTRINGCAST name, &ximage, (XImage **) NULL, &xpmAttr); - DeleteDC(dc); - if (errorStatus == XpmSuccess) - { - M_BITMAPHANDLERDATA->m_hBitmap = (WXHBITMAP) ximage->bitmap; - - BITMAP bm; - GetObject((HBITMAP)M_BITMAPHANDLERDATA->m_hBitmap, sizeof(bm), (LPSTR) & bm); - - M_BITMAPHANDLERDATA->m_width = (bm.bmWidth); - M_BITMAPHANDLERDATA->m_height = (bm.bmHeight); - M_BITMAPHANDLERDATA->m_depth = (bm.bmPlanes * bm.bmBitsPixel); - M_BITMAPHANDLERDATA->m_numColors = xpmAttr.npixels; - XpmFreeAttributes(&xpmAttr); - XImageFree(ximage); - - M_BITMAPHANDLERDATA->m_ok = TRUE; - return TRUE; - } - else - { - M_BITMAPHANDLERDATA->m_ok = FALSE; - return FALSE; - } - } -#endif - - return FALSE; -} - -bool wxXPMFileHandler::SaveFile(wxBitmap *bitmap, const wxString& name, int type, const wxPalette *palette) -{ -#if wxUSE_XPM_IN_MSW - HDC dc = NULL; - - XImage ximage; - - dc = CreateCompatibleDC(NULL); - if (dc) - { - if (SelectObject(dc, (HBITMAP) M_BITMAPHANDLERDATA->m_hBitmap)) - { - /* for following SetPixel */ - /* fill the XImage struct 'by hand' */ - ximage.width = M_BITMAPHANDLERDATA->m_width; - ximage.height = M_BITMAPHANDLERDATA->m_height; - ximage.depth = M_BITMAPHANDLERDATA->m_depth; - ximage.bitmap = (HBITMAP)M_BITMAPHANDLERDATA->m_hBitmap; - int errorStatus = XpmWriteFileFromImage(&dc, WXSTRINGCAST name, - &ximage, (XImage *) NULL, (XpmAttributes *) NULL); - - if (dc) - DeleteDC(dc); - - if (errorStatus == XpmSuccess) - return TRUE; /* no error */ - else - return FALSE; - } else return FALSE; - } else return FALSE; -#else - return FALSE; -#endif -} - -IMPLEMENT_DYNAMIC_CLASS(wxXPMDataHandler, wxBitmapHandler) - -bool wxXPMDataHandler::Create(wxBitmap *bitmap, void *data, long flags, int width, int height, int depth) -{ -#if wxUSE_XPM_IN_MSW - XImage *ximage; - int ErrorStatus; - XpmAttributes xpmAttr; - HDC dc; - - M_BITMAPHANDLERDATA->m_ok = FALSE; - M_BITMAPHANDLERDATA->m_numColors = 0; - - dc = CreateCompatibleDC(NULL); /* memory DC */ - - if (dc) - { - xpmAttr.valuemask = XpmReturnInfos; /* get infos back */ - ErrorStatus = XpmCreateImageFromData(&dc, (char **)data, - &ximage, (XImage **) NULL, &xpmAttr); - - if (ErrorStatus == XpmSuccess) - { - /* ximage is malloced and contains bitmap and attributes */ - M_BITMAPHANDLERDATA->m_hBitmap = (WXHBITMAP) ximage->bitmap; - - BITMAP bm; - GetObject((HBITMAP) M_BITMAPHANDLERDATA->m_hBitmap, sizeof(bm), (LPSTR) & bm); - - M_BITMAPHANDLERDATA->m_width = (bm.bmWidth); - M_BITMAPHANDLERDATA->m_height = (bm.bmHeight); - M_BITMAPHANDLERDATA->m_depth = (bm.bmPlanes * bm.bmBitsPixel); - M_BITMAPHANDLERDATA->m_numColors = xpmAttr.npixels; - XpmFreeAttributes(&xpmAttr); - - XImageFree(ximage); // releases the malloc, but does not detroy - // the bitmap - M_BITMAPHANDLERDATA->m_ok = TRUE; - DeleteDC(dc); - - return TRUE; - } - else - { - M_BITMAPHANDLERDATA->m_ok = FALSE; -// XpmDebugError(ErrorStatus, NULL); - DeleteDC(dc); - return FALSE; - } - } -#endif - - return FALSE; -} - diff --git a/src/ntwxwin.mak b/src/ntwxwin.mak deleted file mode 100644 index 28cbb18dcc..0000000000 --- a/src/ntwxwin.mak +++ /dev/null @@ -1,3 +0,0 @@ -# Compatibility only: use makevc.env - -!include $(WXWIN)\src\makevc.env diff --git a/src/png/CHANGES b/src/png/CHANGES deleted file mode 100644 index 9cb33a1e89..0000000000 --- a/src/png/CHANGES +++ /dev/null @@ -1,288 +0,0 @@ -CHANGES - changes for libpng - -version 0.2 - added reader into png.h - fixed small problems in stub file -version 0.3 - added pull reader - split up pngwrite.c to several files - added pnglib.txt - added example.c - cleaned up writer, adding a few new tranformations - fixed some bugs in writer - interfaced with zlib 0.5 - added K&R support - added check for 64 KB blocks for 16 bit machines -version 0.4 - cleaned up code and commented code - simplified time handling into png_time - created png_color_16 and png_color_8 to handle color needs - cleaned up color type defines - fixed various bugs - made various names more consistant - interfaced with zlib 0.71 - cleaned up zTXt reader and writer (using zlib's Reset functions) - split transformations into pngrtran.c and pngwtran.c -version 0.5 - interfaced with zlib 0.8 - fixed many reading and writing bugs - saved using 3 spaces instead of tabs -version 0.6 - added png_large_malloc() and png_large_free() - added png_size_t - cleaned up some compiler warnings - added png_start_read_image() -version 0.7 - cleaned up lots of bugs - finished dithering and other stuff - added test program - changed name from pnglib to libpng -version 0.71 [June, 1995] - changed pngtest.png for zlib 0.93 - fixed error in libpng.txt and example.c -version 0.8 - cleaned up some bugs - added png_set_filler() - split up pngstub.c into pngmem.c, pngio.c, and pngerror.c - added #define's to remove unwanted code - moved png_info_init() to png.c - added old_size into png_realloc() - added functions to manually set filtering and compression info - changed compression parameters based on image type - optimized filter selection code - added version info - changed external functions passing floats to doubles (k&r problems?) - put all the configurable stuff in pngconf.h - enabled png_set_shift to work with paletted images on read - added png_read_update_info() - updates info structure with - transformations -version 0.81 [August, 1995] - incorporated Tim Wegner's medium model code (thanks, Tim) -version 0.82 [September, 1995] - [unspecified changes] -version 0.85 [December, 1995] - added more medium model code (almost everything's a far) - added i/o, error, and memory callback functions - fixed some bugs (16 bit, 4 bit interlaced, etc.) - added first run progressive reader (barely tested) -version 0.86 [January, 1996] - fixed bugs - improved documentation -version 0.87 [January, 1996] - fixed medium model bugs - fixed other bugs introduced in 0.85 and 0.86 - added some minor documentation -version 0.88 [January, 1996] - fixed progressive bugs - replaced tabs with spaces - cleaned up documentation - added callbacks for read/write and warning/error functions -version 0.89 [July, 1996] - added new initialization API to make libpng work better with shared libs - we now have png_create_read_struct(), png_create_write_struct(), - png_create_info_struct(), png_destroy_read_struct(), and - png_destroy_write_struct() instead of the separate calls to - malloc and png_read_init(), png_info_init(), and png_write_init() - changed warning/error callback functions to fix bug - this means you - should use the new initialization API if you were using the old - png_set_message_fn() calls, and that the old API no longer exists - so that people are aware that they need to change their code - changed filter selection API to allow selection of multiple filters - since it didn't work in previous versions of libpng anyways - optimized filter selection code - fixed png_set_background() to allow using an arbitrary RGB color for - paletted images - fixed gamma and background correction for paletted images, so - png_correct_palette is not needed unless you are correcting an - external palette (you will need to #define PNG_CORRECT_PALETTE_SUPPORTED - in pngconf.h) - if nobody uses this, it may disappear in the future. - fixed bug with Borland 64K memory allocation (Alexander Lehmann) - fixed bug in interlace handling (Smarasderagd, I think) - added more error checking for writing and image to reduce invalid files - separated read and write functions so that they won't both be linked - into a binary when only reading or writing functionality is used - new pngtest image also has interlacing and zTXt - updated documentation to reflect new API -version 0.90 [January, 1997] - made CRC errors/warnings on critical and ancillary chunks configurable - libpng will use the zlib CRC routines by (compile-time) default - changed DOS small/medium model memory support - needs zlib 1.04 (Tim Wegner) - added external C++ wrapper statements to png.h (Gilles Dauphin) - allow PNG file to be read when some or all of file signature has already - been read from the beginning of the stream. ****This affects the size - of info_struct and invalidates all programs that use a shared libpng**** - fixed png_filler() declarations - fixed? background color conversions - fixed order of error function pointers to match documentation - current chunk name is now available in png_struct to reduce the number - of nearly identical error messages (will simplify multi-lingual - support when available) - try to get ready for unknown-chunk callback functions: - - previously read critical chunks are flagged, so the chunk handling - routines can determine if the chunk is in the right place - - all chunk handling routines have the same prototypes, so we will - be able to handle all chunks via a callback mechanism - try to fix Linux "setjmp" buffer size problems -version 0.95 [March, 1997] - fixed bug in pngwutil.c allocating "up_row" twice and "avg_row" never - fixed bug in PNG file signature compares when start != 0 - changed parameter type of png_set_filler(...filler...) from png_byte - to png_uint_32 - added test for MACOS to ensure that both math.h and fp.h are not #included - added macros for libpng to be compiled as a Windows DLL (Andreas Kupries) - added "packswap" transformation, which changes the endianness of - packed-pixel bytes (Kevin Bracey) - added "strip_alpha" transformation, which removes the alpha channel of - input images without using it (not neccesarily a good idea) - added "swap_alpha" transformation, which puts the alpha channel in front - of the color bytes instead of after - removed all implicit variable tests which assume NULL == 0 (I think) - changed several variables to "png_size_t" to show 16/32-bit limitations - added new pCAL chunk read/write support - added experimental filter selection weighting (Greg Roelofs) - removed old png_set_rgbx() and png_set_xrgb() functions that have been - obsolete for about 2 years now (use png_set_filler() instead) - added macros to read 16- and 32-bit ints directly from buffer, to be - used only on those systems that support it (namely PowerPC and 680x0) - With some testing, this may become the default for MACOS/PPC systems. - only calculate CRC on data if we are going to use it - added macros for zTXt compression type PNG_zTXt_COMPRESSION_??? - added macros for simple libpng debugging output selectable at compile time - removed PNG_READ_END_MODE in progressive reader (Smarasderagd) - more description of info_struct in libpng.txt and png.h - more instructions in example.c - more chunk types tested in pngtest.c - renamed pngrcb.c to pngset.c, and all png_read_ functions to be - png_set_. We now have corresponding png_get_ - functions in pngget.c to get infomation in info_ptr. This isolates - the application from the internal organization of png_info_struct - (good for shared library implementations). -version 0.96 [May, 1997] - fixed serious bug with < 8bpp images introduced in 0.95 - fixed 256-color transparency bug (Greg Roelofs) - fixed up documentation (Greg Roelofs, Laszlo Nyul) - fixed "error" in pngconf.h for Linux setjmp() behaviour - fixed DOS medium model support (Tim Wegner) - fixed png_check_keyword() for case with error in static string text - added read of CRC after IEND chunk for embedded PNGs (Laszlo Nyul) - added typecasts to quiet compiler errors - added more debugging info -version 0.97 [January, 1998] - removed PNG_USE_OWN_CRC capability - relocated png_set_crc_action from pngrutil.c to pngrtran.c - fixed typecasts of "new_key", etc. (Andreas Dilger) - added RFC 1152 [sic] date support - fixed bug in gamma handling of 4-bit grayscale - added 2-bit grayscale gamma handling (Glenn R-P) - added more typecasts. 65536L becomes (png_uint_32)65536L, etc. (Glenn R-P) - minor corrections in libpng.txt - added simple sRGB support (Glenn R-P) - easier conditional compiling, e.g. define PNG_READ/WRITE_NOT_FULLY_SUPPORTED; - all configurable options can be selected from command-line instead - of having to edit pngconf.h (Glenn R-P) - fixed memory leak in pngwrite.c (free info_ptr->text) (Glenn R-P) - added more conditions for png_do_background, to avoid changing - black pixels to background when a background is supplied and - no pixels are transparent - repaired PNG_NO_STDIO behaviour - tested NODIV support and made it default behaviour (Greg Roelofs) - added "-m" option and PNGTEST_DEBUG_MEMORY to pngtest (John Bowler) - regularized version numbering scheme and bumped shared-library major - version number to 2 to avoid problems with libpng 0.89 apps (Greg Roelofs) -version 0.98 [January, 1998] - cleaned up some typos in libpng.txt and in code documentation - fixed memory leaks in pCAL chunk processing (Glenn R-P and John Bowler) - cosmetic change "display_gamma" to "screen_gamma" in pngrtran.c - changed recommendation about file_gamma for PC images to .51 from .45, - in example.c and libpng.txt, added comments to distinguish between - screen_gamma, viewing_gamma, and display_gamma. - changed all references to RFC1152 to read RFC1123 and changed the - PNG_TIME_RFC1152_SUPPORTED macro to PNG_TIME_RFC1123_SUPPORTED - added png_invert_alpha capability (Glenn R-P -- suggestion by Jon Vincent) - changed srgb_intent from png_byte to int to avoid compiler bugs -version 0.99 [January 30, 1998] - free info_ptr->text instead of end_info_ptr->text in pngread.c (John Bowler) - fixed a longstanding "packswap" bug in pngtrans.c - fixed some inconsistencies in pngconf.h that prevented compiling with - PNG_READ_GAMMA_SUPPORTED and PNG_READ_hIST_SUPPORTED undefined - fixed some typos and made other minor rearrangement of libpng.txt (Andreas) - changed recommendation about file_gamma for PC images to .50 from .51 in - example.c and libpng.txt, and changed file_gamma for sRGB images to .45 - added a number of functions to access information from the png structure - png_get_image_height(), etc. (Glenn R-P, suggestion by Brad Pettit) - added TARGET_MACOS similar to zlib-1.0.8 - define PNG_ALWAYS_EXTERN when __MWERKS__ && WIN32 are defined - added type casting to all png_malloc() function calls -version 0.99a [January 31, 1998] - Added type casts and parentheses to all returns that return a value.(Tim W.) -version 0.99b [February 4, 1998] - Added type cast png_uint_32 on malloc function calls where needed. - Changed type of num_hist from png_uint_32 to int (same as num_palette). - Added checks for rowbytes overflow, in case png_size_t is less than 32 bits. - Renamed makefile.elf to makefile.lnx. -version 0.99c [February 7, 1998] - More type casting. Removed erroneous overflow test in pngmem.c. - Added png_buffered_memcpy() and png_buffered_memset(), apply them to rowbytes. - Added UNIX manual pages libpng.3 (incorporating libpng.txt) and png.5. -version 0.99d [February 11, 1998] - Renamed "far_to_near()" "png_far_to_near()" - Revised libpng.3 - Version 99c "buffered" operations didn't work as intended. Replaced them - with png_memcpy_check() and png_memset_check(). - Added many "if (png_ptr == NULL) return" to quell compiler warnings about - unused png_ptr, mostly in pngget.c and pngset.c. - Check for overlength tRNS chunk present when indexed-color PLTE is read. - Cleaned up spelling errors in libpng.3/libpng.txt - Corrected a problem with png_get_tRNS() which returned undefined trans array -version 0.99e [February 28, 1998] - Corrected png_get_tRNS() again. - Add parentheses for easier reading of pngget.c, fixed "||" should be "&&". - Touched up example.c to make more of it compileable, although the entire - file still can't be compiled (Willem van Schaik) - Fixed a bug in png_do_shift() (Bryan Tsai) - Added a space in png.h prototype for png_write_chunk_start() - Replaced pngtest.png with one created with zlib 1.1.1 - Changed pngtest to report PASS even when file size is different (Jean-loup G.) - Corrected some logic errors in png_do_invert_alpha() (Chris Patterson) -version 0.99f [March 5, 1998] - Corrected a bug in pngpread() introduced in version 99c (Kevin Bracey) - Moved makefiles into a "scripts" directory, and added INSTALL instruction file - Added makefile.os2 and pngos2.def (A. Zabolotny) and makefile.s2x (W. Sebok) - Added pointers to "note on libpng versions" in makefile.lnx and README - Added row callback feature when reading and writing nonprogressive rows - and added a test of this feature in pngtest.c - Added user transform callbacks, with test of the feature in pngtest.c -version 0.99g [March 6, 1998, morning] - Minor changes to pngtest.c to suppress compiler warnings. - Removed "beta" language from documentation. -version 0.99h [March 6, 1998, evening] - Minor changes to previous minor changes to pngtest.c - Changed PNG_READ_NOT_FULLY_SUPPORTED to PNG_READ_TRANSFORMS_NOT_SUPPORTED - and added PNG_PROGRESSIVE_READ_NOT_SUPPORTED macro -version 1.00 [March 7, 1998] - Changed several typedefs in pngrutil.c - Added makefile.wat (Pawel Mrochen), updated makefile.tc3 (Willem van Schaik) - replaced "while(1)" with "for(;;)" - added PNGARG() to prototypes in pngtest.c and removed some prototypes - updated some of the makefiles (Tom Lane) - changed some typedefs (s_start, etc.) in pngrutil.c - fixed dimensions of "short_months" array in pngwrite.c - Replaced ansi2knr.c with the one from jpeg-v6 -version 1.0.0 [March 8, 1998] - Changed name from 1.00 to 1.0.0 (Adam Costello) - Added smakefile.ppc (with SCOPTIONS.ppc) for Amiga PPC (Andreas Kleinert) -version 1.0.0a [March 9, 1998] - Fixed three bugs in pngrtran.c to make gamma+background handling consistent - (Greg Roelofs) - Changed format of the PNG_LIBPNG_VER integer to xyyzz instead of xyz - for major, minor, and bugfix releases. This is 10001. (Adam Costello, - Tom Lane) - Make months range from 1-12 in png_convert_to_rfc1123 -version 1.0.0b [March 13, 1998] - Quieted compiler complaints about two empty "for" loops in pngrutil.c - Minor changes to makefile.s2x - Removed #ifdef/#endif around a png_free() in pngread.c -version 1.0.1 [March 14, 1998] - Changes makefile.s2x to reduce security risk of using a relative pathname - Fixed some typos in the documentation (Greg). - Fixed a problem with value of "channels" returned by png_read_update_info() diff --git a/src/png/INSTALL b/src/png/INSTALL deleted file mode 100644 index 4978740993..0000000000 --- a/src/png/INSTALL +++ /dev/null @@ -1,87 +0,0 @@ - -Installing libpng version 1.0.1 March 15, 1998 - -Before installing libpng, you must first install zlib. zlib -can usually be found wherever you got libpng. zlib can be -placed in another directory, at the same level as libpng. -Note that your system might already have a preinstalled -zlib, but you will still need to have access to the -zlib.h and zconf.h include files that correspond to the -version of zlib that's installed. - -You can rename the directories that you downloaded (they -might be called "libpng-1.0.1 or "lpng100" and "zlib-1.1.1" -or "zlib111") so that you have directories called "zlib" and "libpng". - -Your directory structure should look like this: - - .. (the parent directory) - libpng (this directory) - INSTALL (this file) - README - *.h - *.c - scripts - makefile.* - pngtest.png - etc. - zlib - README - *.h - *.c - contrib - etc. - -First enter the zlib directory and follow the instructions -in zlib/README. Then come back here and choose the -appropriate makefile.sys in the scripts directory. -The files that are presently available in the scripts directory -include - - descrip.mms => VMS makefile for MMS or MMK - makefile.std => Generic UNIX makefile - makefile.knr => Archaic UNIX Makefile that converts files with ansi2knr - makefile.dec => DEC Alpha UNIX makefile - makefile.sgi => Silicon Graphics IRIX makefile - makefile.sun => Sun makefile - makefile.s2x => Solaris 2.X makefile (gcc, creates libpng.so.2.1.0) - makefile.lnx => Linux/ELF makefile (gcc, creates libpng.so.2.1.0) - makefile.mip => MIPS makefile - makefile.aco => Acorn makefile - makefile.ama => Amiga makefile - smakefile.ppc => AMIGA smakefile for SAS C V6.58/7.00 PPC compiler - (Requires SCOPTIONS, copied from scripts/SCOPTIONS.ppc) - makefile.atr => Atari makefile - makefile.bor => Borland makefile - build.bat => MS-DOS batch file for Borland compiler - makefile.dj2 => DJGPP 2 makefile - makefile.msc => Microsoft C makefile - makefile.tc3 => Turbo C 3.0 makefile - makefile.os2 => OS/2 Makefile (gcc and emx, requires pngos2.def) - pngos2.def => OS/2 module definition file used by makefile.os2 - makefile.wat => Watcom 10a+ Makefile, 32-bit flat memory model - makevms.com => VMS build script - -Copy the file (or files) that you need from the -scripts directory into this directory, for example - - MSDOS example: copy scripts\makefile.msd makefile - UNIX example: cp scripts/makefile.std makefile - -Read the makefile to see if you need to change any source or -target directories to match your preferences. - -Then read pngconf.h to see if you want to make any configuration -changes. - -Then just run "make test" which will create the libpng library in -this directory and run a quick test that reads the "pngtest.png" -file and writes a "pngout.png" file that should be identical to it. - -Most of the makefiles will allow you to run "make install" to -put the library in its final resting place (if you want to -do that, run "make install" in the zlib directory first if necessary). - -Further information can be found in the README and libpng.txt -files, in the individual makefiles, and in png.h, and the manual -pages libpng.3 and png.5. diff --git a/src/png/README b/src/png/README deleted file mode 100644 index ea463cd9c5..0000000000 --- a/src/png/README +++ /dev/null @@ -1,194 +0,0 @@ -README for libpng 1.0.1 (shared library 2.1) -See the note about version numbers near the top of png.h - -See INSTALL for instructions on how to install libpng. - -This is the first official release of libpng. Don't let the fact that -it's the first release fool you. The libpng library has been in -extensive use and testing for about two and a half years. However, it's -finally gotten to the stage where there haven't been significant -changes to the API in some time, and people have a bad feeling about -libraries with versions < 1.0. - -**** -Note that some of the changes to the png_info structure render this -version of the library binary incompatible with libpng-0.89 or -earlier versions if you are using a shared library. The type of the -"filler" parameter for png_set_filler() has changed from png_byte to -png_uint_32, which will affect shared-library applications that use -this function. - -To avoid problems with changes to the internals of png_info_struct, -new APIs have been made available in 0.95 to avoid direct application -access to info_ptr. These functions are the png_set_ and -png_get_ functions. These functions should be used when -accessing/storing the info_struct data, rather than manipulating it -directly, to avoid such problems in the future. - -It is important to note that the APIs do not make current programs -that access the info struct directly incompatible with the new -library. However, it is strongly suggested that new programs use -the new APIs (as shown in example.c), and older programs be converted -to the new format, to facilitate upgrades in the future. -**** - -Additions since 0.90 include the ability to compile libpng as a -Windows DLL, and new APIs for accessing data in the info struct. -Experimental functions include the ability to set weighting and cost -factors for row filter selection, direct reads of integers from buffers -on big-endian processors that support misaligned data access, faster -methods of doing alpha composition, and more accurate 16->8 bit color -conversion. - -The additions since 0.89 include the ability to read from a PNG stream -which has had some (or all) of the signature bytes read by the calling -application. This also allows the reading of embedded PNG streams that -do not have the PNG file signature. As well, it is now possible to set -the library action on the detection of chunk CRC errors. It is possible -to set different actions based on whether the CRC error occurred in a -critical or an ancillary chunk. - -The changes made to the library, and bugs fixed are based on discussions -on the PNG implementation mailing list -and not on material submitted to Guy. - -For a detailed description on using libpng, read libpng.txt. For -examples of libpng in a program, see example.c and pngtest.c. For usage -information and restrictions (what little they are) on libpng, see -png.h. For a description on using zlib (the compression library used by -libpng) and zlib's restrictions, see zlib.h - -I have included a general makefile, as well as several machine and -compiler specific ones, but you may have to modify one for your own needs. - -You should use zlib 1.0.4 or later to run this, but it MAY work with -versions as old as zlib 0.95. Even so, there are bugs in older zlib -versions which can cause the output of invalid compression streams for -some images. You will definitely need zlib 1.0.4 or later if you are -taking advantage of the MS-DOS "far" structure allocation for the small -and medium memory models. You should also note that zlib is a -compression library that is useful for more things than just PNG files. -You can use zlib as a drop-in replacement for fread() and fwrite() if -you are so inclined. - -zlib should be available at the same place that libpng is. -If not, it should be at ftp.uu.net in /graphics/png -Eventually, it will be at ftp.uu.net in /pub/archiving/zip/zlib - -You may also want a copy of the PNG specification. It is available -as an RFC and a W3C Recommendation. Failing -these resources you can try ftp.uu.net in the /graphics/png directory. - -This code is currently being archived at ftp.uu.net in the -/graphics/png directory, and on CompuServe, Lib 20 (PNG SUPPORT) -at GO GRAPHSUP. If you can't find it in any of those places, -e-mail me, and I'll help you find it. - -If you have any code changes, requests, problems, etc., please e-mail -them to me. Also, I'd appreciate any make files or project files, -and any modifications you needed to make to get libpng to compile, -along with a #define variable to tell what compiler/system you are on. -If you needed to add transformations to libpng, or wish libpng would -provide the image in a different way, drop me a note (and code, if -possible), so I can consider supporting the transformation. -Finally, if you get any warning messages when compiling libpng -(note: not zlib), and they are easy to fix, I'd appreciate the -fix. Please mention "libpng" somewhere in the subject line. Thanks. - -This release was created and will be supported by myself (of course -based in a large way on Guy's and Andreas' earlier work), and the PNG group. - -randeg@alumni.rpi.edu -png-implement@dworkin.wustl.edu - -You can't reach Guy, the original libpng author, at the addresses -given in previous versions of this document. He and Andreas will read mail -addressed to the png-implement list, however. - -Please do not send general questions about PNG. Send them to -the address in the specification (png-group@w3.org). At the same -time, please do not send libpng questions to that address, send them to me -or to png-implement@dworkin.wustl.edu. I'll -get them in the end anyway. If you have a question about something -in the PNG specification that is related to using libpng, send it -to me. Send me any questions that start with "I was using libpng, -and ...". If in doubt, send questions to me. I'll bounce them -to others, if necessary. - -Please do not send suggestions on how to change PNG. We have -been discussing PNG for three years now, and it is official and -finished. If you have suggestions for libpng, however, I'll -gladly listen. Even if your suggestion is not used for version -1.0, it may be used later. - -Files in this distribution: - - CHANGES => Description of changes between libpng versions - README => This file - TODO => Things not implemented in the current library - ansi2knr.1 => Manual page for ansi2knr - ansi2knr.c => Converts files to K&R style function declarations - build.bat => MS-DOS batch file for Borland compiler - descrip.mms => VMS project file - example.c => Example code for using libpng functions - libpng.3 => manual page for libpng - libpng.txt => Description of libpng and its functions - libpngpf.3 => manual page for libpng's private functions - png.5 => manual page for the PNG format - png.c => Basic interface functions common to library - png.h => Library function and interface declarations - pngconf.h => System specific library configuration - pngerror.c => Error/warning message I/O functions - pngget.c => Functions for retrieving info from struct - pngmem.c => Memory handling functions - pngpread.c => Progressive reading functions - pngread.c => Read data/helper high-level functions - pngrio.c => Lowest-level data read I/O functions - pngrtran.c => Read data transformation functions - pngrutil.c => Read data utility functions - pngset.c => Functions for storing data into the info_struct - pngtest.c => Library test program - pngtest.png => Library test sample image - pngtrans.c => Common data transformation functions - pngwio.c => Lowest-level write I/O functions - pngwrite.c => High-level write functions - pngwtran.c => Write data transformations - pngwutil.c => Write utility functions - scripts => Directory containing scripts for building libpng: - descrip.mms => VMS makefile for MMS or MMK - makefile.std => Generic UNIX makefile - makefile.knr => Archaic UNIX Makefile that converts files with ansi2knr - makefile.dec => DEC Alpha UNIX makefile - makefile.sgi => Silicon Graphics IRIX makefile - makefile.sun => Sun makefile - makefile.s2x => Solaris 2.X makefile (gcc, creates libpng.so.2.1.0) - makefile.lnx => Linux/ELF makefile (gcc, creates libpng.so.2.1.0) - makefile.mip => MIPS makefile - makefile.aco => Acorn makefile - makefile.ama => Amiga makefile - smakefile.ppc => AMIGA smakefile for SAS C V6.58/7.00 PPC compiler - (Requires SCOPTIONS, copied from scripts/SCOPTIONS.ppc) - makefile.atr => Atari makefile - makefile.bor => Borland makefile - build.bat => MS-DOS batch file for Borland compiler - makefile.dj2 => DJGPP 2 makefile - makefile.msc => Microsoft C makefile - makefile.tc3 => Turbo C 3.0 makefile - makefile.os2 => OS/2 Makefile (gcc and emx, requires pngos2.def) - makefile.wat => Watcom 10a+ Makefile, 32-bit flat memory model - pngos2.def => OS/2 module definition file used by makefile.os2 - makevms.com => VMS build script - -Good luck, and happy coding. - --Glenn Randers-Pehrson - Internet: randeg@alumni.rpi.edu - Web: http://www.rpi.edu/~randeg/index.html - --Andreas Eric Dilger - Internet: adilger@enel.ucalgary.ca - Web: http://www-mddsp.enel.ucalgary.ca/People/adilger/ - --Guy Eric Schalnat - (formerly of Group 42, Inc) - Internet: gschal@infinet.com diff --git a/src/png/TODO b/src/png/TODO deleted file mode 100644 index 562859a22f..0000000000 --- a/src/png/TODO +++ /dev/null @@ -1,22 +0,0 @@ -TODO - list of things to do for libpng - -fix problem with C++ and EXTERN "C" -add "grayscale->palette" transformation and "palette->grayscale" detection -add "grayscale" -> "grayscale+alpha" and "grayscale+FILLER" transformations -improved dithering -multi-lingual error and warning message support -sPLT chunk handling -cHRM transformation -complete sRGB transformation (presently it simply uses gamma=0.45) -man pages for function calls -high-level API for reading images -final bug fixes -better documentation -better filter selection - (counting huffman bits/precompression? filter inertia? filter costs?) -optional palette creation -histogram creation -support for application-defined chunk handlers -keep up with public chunks -better C++ wrapper/full C++ implementation? -text conversion between different code pages (Latin-1 -> Mac and DOS) diff --git a/src/png/ansi2knr.1 b/src/png/ansi2knr.1 deleted file mode 100644 index f9ee5a631c..0000000000 --- a/src/png/ansi2knr.1 +++ /dev/null @@ -1,36 +0,0 @@ -.TH ANSI2KNR 1 "19 Jan 1996" -.SH NAME -ansi2knr \- convert ANSI C to Kernighan & Ritchie C -.SH SYNOPSIS -.I ansi2knr -[--varargs] input_file [output_file] -.SH DESCRIPTION -If no output_file is supplied, output goes to stdout. -.br -There are no error messages. -.sp -.I ansi2knr -recognizes function definitions by seeing a non-keyword identifier at the left -margin, followed by a left parenthesis, with a right parenthesis as the last -character on the line, and with a left brace as the first token on the -following line (ignoring possible intervening comments). It will recognize a -multi-line header provided that no intervening line ends with a left or right -brace or a semicolon. These algorithms ignore whitespace and comments, except -that the function name must be the first thing on the line. -.sp -The following constructs will confuse it: -.br - - Any other construct that starts at the left margin and follows the -above syntax (such as a macro or function call). -.br - - Some macros that tinker with the syntax of the function header. -.sp -The --varargs switch is obsolete, and is recognized only for -backwards compatibility. The present version of -.I ansi2knr -will always attempt to convert a ... argument to va_alist and va_dcl. -.SH AUTHOR -L. Peter Deutsch wrote the original ansi2knr and -continues to maintain the current version; most of the code in the current -version is his work. ansi2knr also includes contributions by Francois -Pinard and Jim Avera . diff --git a/src/png/ansi2knr.c b/src/png/ansi2knr.c deleted file mode 100644 index 4e05fc2d32..0000000000 --- a/src/png/ansi2knr.c +++ /dev/null @@ -1,693 +0,0 @@ -/* ansi2knr.c */ -/* Convert ANSI C function definitions to K&R ("traditional C") syntax */ - -/* -ansi2knr is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY. No author or distributor accepts responsibility to anyone for the -consequences of using it or for whether it serves any particular purpose or -works at all, unless he says so in writing. Refer to the GNU General Public -License (the "GPL") for full details. - -Everyone is granted permission to copy, modify and redistribute ansi2knr, -but only under the conditions described in the GPL. A copy of this license -is supposed to have been given to you along with ansi2knr so you can know -your rights and responsibilities. It should be in a file named COPYLEFT. -[In the IJG distribution, the GPL appears below, not in a separate file.] -Among other things, the copyright notice and this notice must be preserved -on all copies. - -We explicitly state here what we believe is already implied by the GPL: if -the ansi2knr program is distributed as a separate set of sources and a -separate executable file which are aggregated on a storage medium together -with another program, this in itself does not bring the other program under -the GPL, nor does the mere fact that such a program or the procedures for -constructing it invoke the ansi2knr executable bring any other part of the -program under the GPL. -*/ - -/* ----------- Here is the GNU GPL file COPYLEFT, referred to above ---------- ------ These terms do NOT apply to the JPEG software itself; see README ------ - - GHOSTSCRIPT GENERAL PUBLIC LICENSE - (Clarified 11 Feb 1988) - - Copyright (C) 1988 Richard M. Stallman - Everyone is permitted to copy and distribute verbatim copies of this - license, but changing it is not allowed. You can also use this wording - to make the terms for other programs. - - The license agreements of most software companies keep you at the -mercy of those companies. By contrast, our general public license is -intended to give everyone the right to share Ghostscript. To make sure -that you get the rights we want you to have, we need to make -restrictions that forbid anyone to deny you these rights or to ask you -to surrender the rights. Hence this license agreement. - - Specifically, we want to make sure that you have the right to give -away copies of Ghostscript, that you receive source code or else can get -it if you want it, that you can change Ghostscript or use pieces of it -in new free programs, and that you know you can do these things. - - To make sure that everyone has such rights, we have to forbid you to -deprive anyone else of these rights. For example, if you distribute -copies of Ghostscript, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must tell them their rights. - - Also, for our own protection, we must make certain that everyone finds -out that there is no warranty for Ghostscript. If Ghostscript is -modified by someone else and passed on, we want its recipients to know -that what they have is not what we distributed, so that any problems -introduced by others will not reflect on our reputation. - - Therefore we (Richard M. Stallman and the Free Software Foundation, -Inc.) make the following terms which say what you must do to be allowed -to distribute or change Ghostscript. - - - COPYING POLICIES - - 1. You may copy and distribute verbatim copies of Ghostscript source -code as you receive it, in any medium, provided that you conspicuously -and appropriately publish on each copy a valid copyright and license -notice "Copyright (C) 1989 Aladdin Enterprises. All rights reserved. -Distributed by Free Software Foundation, Inc." (or with whatever year is -appropriate); keep intact the notices on all files that refer to this -License Agreement and to the absence of any warranty; and give any other -recipients of the Ghostscript program a copy of this License Agreement -along with the program. You may charge a distribution fee for the -physical act of transferring a copy. - - 2. You may modify your copy or copies of Ghostscript or any portion of -it, and copy and distribute such modifications under the terms of -Paragraph 1 above, provided that you also do the following: - - a) cause the modified files to carry prominent notices stating - that you changed the files and the date of any change; and - - b) cause the whole of any work that you distribute or publish, - that in whole or in part contains or is a derivative of Ghostscript - or any part thereof, to be licensed at no charge to all third - parties on terms identical to those contained in this License - Agreement (except that you may choose to grant more extensive - warranty protection to some or all third parties, at your option). - - c) You may charge a distribution fee for the physical act of - transferring a copy, and you may at your option offer warranty - protection in exchange for a fee. - -Mere aggregation of another unrelated program with this program (or its -derivative) on a volume of a storage or distribution medium does not bring -the other program under the scope of these terms. - - 3. You may copy and distribute Ghostscript (or a portion or derivative -of it, under Paragraph 2) in object code or executable form under the -terms of Paragraphs 1 and 2 above provided that you also do one of the -following: - - a) accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of - Paragraphs 1 and 2 above; or, - - b) accompany it with a written offer, valid for at least three - years, to give any third party free (except for a nominal - shipping charge) a complete machine-readable copy of the - corresponding source code, to be distributed under the terms of - Paragraphs 1 and 2 above; or, - - c) accompany it with the information you received as to where the - corresponding source code may be obtained. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form alone.) - -For an executable file, complete source code means all the source code for -all modules it contains; but, as a special exception, it need not include -source code for modules which are standard libraries that accompany the -operating system on which the executable file runs. - - 4. You may not copy, sublicense, distribute or transfer Ghostscript -except as expressly provided under this License Agreement. Any attempt -otherwise to copy, sublicense, distribute or transfer Ghostscript is -void and your rights to use the program under this License agreement -shall be automatically terminated. However, parties who have received -computer software programs from you with this License Agreement will not -have their licenses terminated so long as such parties remain in full -compliance. - - 5. If you wish to incorporate parts of Ghostscript into other free -programs whose distribution conditions are different, write to the Free -Software Foundation at 675 Mass Ave, Cambridge, MA 02139. We have not -yet worked out a simple rule that can be stated here, but we will often -permit this. We will be guided by the two goals of preserving the free -status of all derivatives of our free software and of promoting the -sharing and reuse of software. - -Your comments and suggestions about our licensing policies and our -software are welcome! Please contact the Free Software Foundation, -Inc., 675 Mass Ave, Cambridge, MA 02139, or call (617) 876-3296. - - NO WARRANTY - - BECAUSE GHOSTSCRIPT IS LICENSED FREE OF CHARGE, WE PROVIDE ABSOLUTELY -NO WARRANTY, TO THE EXTENT PERMITTED BY APPLICABLE STATE LAW. EXCEPT -WHEN OTHERWISE STATED IN WRITING, FREE SOFTWARE FOUNDATION, INC, RICHARD -M. STALLMAN, ALADDIN ENTERPRISES, L. PETER DEUTSCH, AND/OR OTHER PARTIES -PROVIDE GHOSTSCRIPT "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER -EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE -ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF GHOSTSCRIPT IS WITH -YOU. SHOULD GHOSTSCRIPT PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL -NECESSARY SERVICING, REPAIR OR CORRECTION. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW WILL RICHARD M. -STALLMAN, THE FREE SOFTWARE FOUNDATION, INC., L. PETER DEUTSCH, ALADDIN -ENTERPRISES, AND/OR ANY OTHER PARTY WHO MAY MODIFY AND REDISTRIBUTE -GHOSTSCRIPT AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING -ANY LOST PROFITS, LOST MONIES, OR OTHER SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE -(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED -INACCURATE OR LOSSES SUSTAINED BY THIRD PARTIES OR A FAILURE OF THE -PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS) GHOSTSCRIPT, EVEN IF YOU -HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, OR FOR ANY CLAIM -BY ANY OTHER PARTY. - --------------------- End of file COPYLEFT ------------------------------ -*/ - -/* - * Usage: - ansi2knr input_file [output_file] - * If no output_file is supplied, output goes to stdout. - * There are no error messages. - * - * ansi2knr recognizes function definitions by seeing a non-keyword - * identifier at the left margin, followed by a left parenthesis, - * with a right parenthesis as the last character on the line, - * and with a left brace as the first token on the following line - * (ignoring possible intervening comments). - * It will recognize a multi-line header provided that no intervening - * line ends with a left or right brace or a semicolon. - * These algorithms ignore whitespace and comments, except that - * the function name must be the first thing on the line. - * The following constructs will confuse it: - * - Any other construct that starts at the left margin and - * follows the above syntax (such as a macro or function call). - * - Some macros that tinker with the syntax of the function header. - */ - -/* - * The original and principal author of ansi2knr is L. Peter Deutsch - * . Other authors are noted in the change history - * that follows (in reverse chronological order): - lpd 96-01-21 added code to cope with not HAVE_CONFIG_H and with - compilers that don't understand void, as suggested by - Tom Lane - lpd 96-01-15 changed to require that the first non-comment token - on the line following a function header be a left brace, - to reduce sensitivity to macros, as suggested by Tom Lane - - lpd 95-06-22 removed #ifndefs whose sole purpose was to define - undefined preprocessor symbols as 0; changed all #ifdefs - for configuration symbols to #ifs - lpd 95-04-05 changed copyright notice to make it clear that - including ansi2knr in a program does not bring the entire - program under the GPL - lpd 94-12-18 added conditionals for systems where ctype macros - don't handle 8-bit characters properly, suggested by - Francois Pinard ; - removed --varargs switch (this is now the default) - lpd 94-10-10 removed CONFIG_BROKETS conditional - lpd 94-07-16 added some conditionals to help GNU `configure', - suggested by Francois Pinard ; - properly erase prototype args in function parameters, - contributed by Jim Avera ; - correct error in writeblanks (it shouldn't erase EOLs) - lpd 89-xx-xx original version - */ - -/* Most of the conditionals here are to make ansi2knr work with */ -/* or without the GNU configure machinery. */ - -#if HAVE_CONFIG_H -# include -#endif - -#include -#include - -#if HAVE_CONFIG_H - -/* - For properly autoconfiguring ansi2knr, use AC_CONFIG_HEADER(config.h). - This will define HAVE_CONFIG_H and so, activate the following lines. - */ - -# if STDC_HEADERS || HAVE_STRING_H -# include -# else -# include -# endif - -#else /* not HAVE_CONFIG_H */ - -/* Otherwise do it the hard way */ - -# ifdef BSD -# include -# else -# ifdef VMS - extern int strlen(), strncmp(); -# else -# include -# endif -# endif - -#endif /* not HAVE_CONFIG_H */ - -#if STDC_HEADERS -# include -#else -/* - malloc and free should be declared in stdlib.h, - but if you've got a K&R compiler, they probably aren't. - */ -# ifdef MSDOS -# include -# else -# ifdef VMS - extern char *malloc(); - extern void free(); -# else - extern char *malloc(); - extern int free(); -# endif -# endif - -#endif - -/* - * The ctype macros don't always handle 8-bit characters correctly. - * Compensate for this here. - */ -#ifdef isascii -# undef HAVE_ISASCII /* just in case */ -# define HAVE_ISASCII 1 -#else -#endif -#if STDC_HEADERS || !HAVE_ISASCII -# define is_ascii(c) 1 -#else -# define is_ascii(c) isascii(c) -#endif - -#define is_space(c) (is_ascii(c) && isspace(c)) -#define is_alpha(c) (is_ascii(c) && isalpha(c)) -#define is_alnum(c) (is_ascii(c) && isalnum(c)) - -/* Scanning macros */ -#define isidchar(ch) (is_alnum(ch) || (ch) == '_') -#define isidfirstchar(ch) (is_alpha(ch) || (ch) == '_') - -/* Forward references */ -char *skipspace(); -int writeblanks(); -int test1(); -int convert1(); - -/* The main program */ -int -main(argc, argv) - int argc; - char *argv[]; -{ FILE *in, *out; -#define bufsize 5000 /* arbitrary size */ - char *buf; - char *line; - char *more; - /* - * In previous versions, ansi2knr recognized a --varargs switch. - * If this switch was supplied, ansi2knr would attempt to convert - * a ... argument to va_alist and va_dcl; if this switch was not - * supplied, ansi2knr would simply drop any such arguments. - * Now, ansi2knr always does this conversion, and we only - * check for this switch for backward compatibility. - */ - int convert_varargs = 1; - - if ( argc > 1 && argv[1][0] == '-' ) - { if ( !strcmp(argv[1], "--varargs") ) - { convert_varargs = 1; - argc--; - argv++; - } - else - { fprintf(stderr, "Unrecognized switch: %s\n", argv[1]); - exit(1); - } - } - switch ( argc ) - { - default: - printf("Usage: ansi2knr input_file [output_file]\n"); - exit(0); - case 2: - out = stdout; - break; - case 3: - out = fopen(argv[2], "w"); - if ( out == NULL ) - { fprintf(stderr, "Cannot open output file %s\n", argv[2]); - exit(1); - } - } - in = fopen(argv[1], "r"); - if ( in == NULL ) - { fprintf(stderr, "Cannot open input file %s\n", argv[1]); - exit(1); - } - fprintf(out, "#line 1 \"%s\"\n", argv[1]); - buf = malloc(bufsize); - line = buf; - while ( fgets(line, (unsigned)(buf + bufsize - line), in) != NULL ) - { -test: line += strlen(line); - switch ( test1(buf) ) - { - case 2: /* a function header */ - convert1(buf, out, 1, convert_varargs); - break; - case 1: /* a function */ - /* Check for a { at the start of the next line. */ - more = ++line; -f: if ( line >= buf + (bufsize - 1) ) /* overflow check */ - goto wl; - if ( fgets(line, (unsigned)(buf + bufsize - line), in) == NULL ) - goto wl; - switch ( *skipspace(more, 1) ) - { - case '{': - /* Definitely a function header. */ - convert1(buf, out, 0, convert_varargs); - fputs(more, out); - break; - case 0: - /* The next line was blank or a comment: */ - /* keep scanning for a non-comment. */ - line += strlen(line); - goto f; - default: - /* buf isn't a function header, but */ - /* more might be. */ - fputs(buf, out); - strcpy(buf, more); - line = buf; - goto test; - } - break; - case -1: /* maybe the start of a function */ - if ( line != buf + (bufsize - 1) ) /* overflow check */ - continue; - /* falls through */ - default: /* not a function */ -wl: fputs(buf, out); - break; - } - line = buf; - } - if ( line != buf ) - fputs(buf, out); - free(buf); - fclose(out); - fclose(in); - return 0; -} - -/* Skip over space and comments, in either direction. */ -char * -skipspace(p, dir) - register char *p; - register int dir; /* 1 for forward, -1 for backward */ -{ for ( ; ; ) - { while ( is_space(*p) ) - p += dir; - if ( !(*p == '/' && p[dir] == '*') ) - break; - p += dir; p += dir; - while ( !(*p == '*' && p[dir] == '/') ) - { if ( *p == 0 ) - return p; /* multi-line comment?? */ - p += dir; - } - p += dir; p += dir; - } - return p; -} - -/* - * Write blanks over part of a string. - * Don't overwrite end-of-line characters. - */ -int -writeblanks(start, end) - char *start; - char *end; -{ char *p; - for ( p = start; p < end; p++ ) - if ( *p != '\r' && *p != '\n' ) - *p = ' '; - return 0; -} - -/* - * Test whether the string in buf is a function definition. - * The string may contain and/or end with a newline. - * Return as follows: - * 0 - definitely not a function definition; - * 1 - definitely a function definition; - * 2 - definitely a function prototype (NOT USED); - * -1 - may be the beginning of a function definition, - * append another line and look again. - * The reason we don't attempt to convert function prototypes is that - * Ghostscript's declaration-generating macros look too much like - * prototypes, and confuse the algorithms. - */ -int -test1(buf) - char *buf; -{ register char *p = buf; - char *bend; - char *endfn; - int contin; - - if ( !isidfirstchar(*p) ) - return 0; /* no name at left margin */ - bend = skipspace(buf + strlen(buf) - 1, -1); - switch ( *bend ) - { - case ';': contin = 0 /*2*/; break; - case ')': contin = 1; break; - case '{': return 0; /* not a function */ - case '}': return 0; /* not a function */ - default: contin = -1; - } - while ( isidchar(*p) ) - p++; - endfn = p; - p = skipspace(p, 1); - if ( *p++ != '(' ) - return 0; /* not a function */ - p = skipspace(p, 1); - if ( *p == ')' ) - return 0; /* no parameters */ - /* Check that the apparent function name isn't a keyword. */ - /* We only need to check for keywords that could be followed */ - /* by a left parenthesis (which, unfortunately, is most of them). */ - { static char *words[] = - { "asm", "auto", "case", "char", "const", "double", - "extern", "float", "for", "if", "int", "long", - "register", "return", "short", "signed", "sizeof", - "static", "switch", "typedef", "unsigned", - "void", "volatile", "while", 0 - }; - char **key = words; - char *kp; - int len = endfn - buf; - - while ( (kp = *key) != 0 ) - { if ( strlen(kp) == len && !strncmp(kp, buf, len) ) - return 0; /* name is a keyword */ - key++; - } - } - return contin; -} - -/* Convert a recognized function definition or header to K&R syntax. */ -int -convert1(buf, out, header, convert_varargs) - char *buf; - FILE *out; - int header; /* Boolean */ - int convert_varargs; /* Boolean */ -{ char *endfn; - register char *p; - char **breaks; - unsigned num_breaks = 2; /* for testing */ - char **btop; - char **bp; - char **ap; - char *vararg = 0; - - /* Pre-ANSI implementations don't agree on whether strchr */ - /* is called strchr or index, so we open-code it here. */ - for ( endfn = buf; *(endfn++) != '('; ) - ; -top: p = endfn; - breaks = (char **)malloc(sizeof(char *) * num_breaks * 2); - if ( breaks == 0 ) - { /* Couldn't allocate break table, give up */ - fprintf(stderr, "Unable to allocate break table!\n"); - fputs(buf, out); - return -1; - } - btop = breaks + num_breaks * 2 - 2; - bp = breaks; - /* Parse the argument list */ - do - { int level = 0; - char *lp = NULL; - char *rp; - char *end = NULL; - - if ( bp >= btop ) - { /* Filled up break table. */ - /* Allocate a bigger one and start over. */ - free((char *)breaks); - num_breaks <<= 1; - goto top; - } - *bp++ = p; - /* Find the end of the argument */ - for ( ; end == NULL; p++ ) - { switch(*p) - { - case ',': - if ( !level ) end = p; - break; - case '(': - if ( !level ) lp = p; - level++; - break; - case ')': - if ( --level < 0 ) end = p; - else rp = p; - break; - case '/': - p = skipspace(p, 1) - 1; - break; - default: - ; - } - } - /* Erase any embedded prototype parameters. */ - if ( lp ) - writeblanks(lp + 1, rp); - p--; /* back up over terminator */ - /* Find the name being declared. */ - /* This is complicated because of procedure and */ - /* array modifiers. */ - for ( ; ; ) - { p = skipspace(p - 1, -1); - switch ( *p ) - { - case ']': /* skip array dimension(s) */ - case ')': /* skip procedure args OR name */ - { int level = 1; - while ( level ) - switch ( *--p ) - { - case ']': case ')': level++; break; - case '[': case '(': level--; break; - case '/': p = skipspace(p, -1) + 1; break; - default: ; - } - } - if ( *p == '(' && *skipspace(p + 1, 1) == '*' ) - { /* We found the name being declared */ - while ( !isidfirstchar(*p) ) - p = skipspace(p, 1) + 1; - goto found; - } - break; - default: - goto found; - } - } -found: if ( *p == '.' && p[-1] == '.' && p[-2] == '.' ) - { if ( convert_varargs ) - { *bp++ = "va_alist"; - vararg = p-2; - } - else - { p++; - if ( bp == breaks + 1 ) /* sole argument */ - writeblanks(breaks[0], p); - else - writeblanks(bp[-1] - 1, p); - bp--; - } - } - else - { while ( isidchar(*p) ) p--; - *bp++ = p+1; - } - p = end; - } - while ( *p++ == ',' ); - *bp = p; - /* Make a special check for 'void' arglist */ - if ( bp == breaks+2 ) - { p = skipspace(breaks[0], 1); - if ( !strncmp(p, "void", 4) ) - { p = skipspace(p+4, 1); - if ( p == breaks[2] - 1 ) - { bp = breaks; /* yup, pretend arglist is empty */ - writeblanks(breaks[0], p + 1); - } - } - } - /* Put out the function name and left parenthesis. */ - p = buf; - while ( p != endfn ) putc(*p, out), p++; - /* Put out the declaration. */ - if ( header ) - { fputs(");", out); - for ( p = breaks[0]; *p; p++ ) - if ( *p == '\r' || *p == '\n' ) - putc(*p, out); - } - else - { for ( ap = breaks+1; ap < bp; ap += 2 ) - { p = *ap; - while ( isidchar(*p) ) - putc(*p, out), p++; - if ( ap < bp - 1 ) - fputs(", ", out); - } - fputs(") ", out); - /* Put out the argument declarations */ - for ( ap = breaks+2; ap <= bp; ap += 2 ) - (*ap)[-1] = ';'; - if ( vararg != 0 ) - { *vararg = 0; - fputs(breaks[0], out); /* any prior args */ - fputs("va_dcl", out); /* the final arg */ - fputs(bp[0], out); - } - else - fputs(breaks[0], out); - } - free((char *)breaks); - return 0; -} diff --git a/src/png/example.c b/src/png/example.c deleted file mode 100644 index 4b22852ee2..0000000000 --- a/src/png/example.c +++ /dev/null @@ -1,688 +0,0 @@ - -/* example.c - an example of using libpng */ - -/* This is an example of how to use libpng to read and write PNG files. - * The file libpng.txt is much more verbose then this. If you have not - * read it, do so first. This was designed to be a starting point of an - * implementation. This is not officially part of libpng, and therefore - * does not require a copyright notice. - * - * This file does not currently compile, because it is missing certain - * parts, like allocating memory to hold an image. You will have to - * supply these parts to get it to compile. For an example of a minimal - * working PNG reader/writer, see pngtest.c, included in this distribution. - */ - -#include "../png/png.h" - -/* Check to see if a file is a PNG file using png_sig_cmp(). Returns - * non-zero if the image is a PNG, and 0 if it isn't a PNG. - * - * If this call is successful, and you are going to keep the file open, - * you should call png_set_sig_bytes(png_ptr, PNG_BYTES_TO_CHECK); once - * you have created the png_ptr, so that libpng knows your application - * has read that many bytes from the start of the file. Make sure you - * don't call png_set_sig_bytes() with more than 8 bytes read or give it - * an incorrect number of bytes read, or you will either have read too - * many bytes (your fault), or you are telling libpng to read the wrong - * number of magic bytes (also your fault). - * - * Many applications already read the first 2 or 4 bytes from the start - * of the image to determine the file type, so it would be easiest just - * to pass the bytes to png_sig_cmp() or even skip that if you know - * you have a PNG file, and call png_set_sig_bytes(). - */ -#define PNG_BYTES_TO_CHECK 4 -int check_if_png(char *file_name, FILE **fp) -{ - char buf[PNG_BYTES_TO_CHECK]; - - /* Open the prospective PNG file. */ - if ((*fp = fopen(file_name, "rb")) != NULL); - return 0; - - /* Read in the signature bytes */ - if (fread(buf, 1, PNG_BYTES_TO_CHECK, *fp) != PNG_BYTES_TO_CHECK) - return 0; - - /* Compare the first PNG_BYTES_TO_CHECK bytes of the signature. */ - return(png_sig_cmp(buf, (png_size_t)0, PNG_BYTES_TO_CHECK)); -} - -/* Read a PNG file. You may want to return an error code if the read - * fails (depending upon the failure). There are two "prototypes" given - * here - one where we are given the filename, and we need to open the - * file, and the other where we are given an open file (possibly with - * some or all of the magic bytes read - see comments above). - */ -#ifdef open_file /* prototype 1 */ -void read_png(char *file_name) /* We need to open the file */ -{ - png_structp png_ptr; - png_infop info_ptr; - unsigned int sig_read = 0; - png_uint_32 width, height; - int bit_depth, color_type, interlace_type; - FILE *fp; - - if ((fp = fopen(file_name, "rb")) == NULL) - return; -#else no_open_file /* prototype 2 */ -void read_png(FILE *fp, unsigned int sig_read) /* file is already open */ -{ - png_structp png_ptr; - png_infop info_ptr; - png_uint_32 width, height; - int bit_depth, color_type, interlace_type; -#endif no_open_file /* only use one prototype! */ - - /* Create and initialize the png_struct with the desired error handler - * functions. If you want to use the default stderr and longjump method, - * you can supply NULL for the last three parameters. We also supply the - * the compiler header file version, so that we know if the application - * was compiled with a compatible version of the library. REQUIRED - */ - png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, - (void *)user_error_ptr, user_error_fn, user_warning_fn); - - if (png_ptr == NULL) - { - fclose(fp); - return; - } - - /* Allocate/initialize the memory for image information. REQUIRED. */ - info_ptr = png_create_info_struct(png_ptr); - if (info_ptr == NULL) - { - fclose(fp); - png_destroy_read_struct(&png_ptr, (png_infopp)NULL, (png_infopp)NULL); - return; - } - - /* Set error handling if you are using the setjmp/longjmp method (this is - * the normal method of doing things with libpng). REQUIRED unless you - * set up your own error handlers in the png_create_read_struct() earlier. - */ - if (setjmp(png_ptr->jmpbuf)) - { - /* Free all of the memory associated with the png_ptr and info_ptr */ - png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL); - fclose(fp); - /* If we get here, we had a problem reading the file */ - return; - } - - /* One of the following I/O initialization methods is REQUIRED */ -#ifdef streams /* PNG file I/O method 1 */ - /* Set up the input control if you are using standard C streams */ - png_init_io(png_ptr, fp); - -#else no_streams /* PNG file I/O method 2 */ - /* If you are using replacement read functions, instead of calling - * png_init_io() here you would call: - */ - png_set_read_fn(png_ptr, (void *)user_io_ptr, user_read_fn); - /* where user_io_ptr is a structure you want available to the callbacks */ -#endif no_streams /* Use only one I/O method! */ - - /* If we have already read some of the signature */ - png_set_sig_bytes(png_ptr, sig_read); - - /* The call to png_read_info() gives us all of the information from the - * PNG file before the first IDAT (image data chunk). REQUIRED - */ - png_read_info(png_ptr, info_ptr); - - png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, &color_type, - &interlace_type, NULL, NULL); - -/**** Set up the data transformations you want. Note that these are all - **** optional. Only call them if you want/need them. Many of the - **** transformations only work on specific types of images, and many - **** are mutually exclusive. - ****/ - - /* tell libpng to strip 16 bit/color files down to 8 bits/color */ - png_set_strip_16(png_ptr); - - /* Strip alpha bytes from the input data without combining with th - * background (not recommended). - */ - png_set_strip_alpha(png_ptr); - - /* Extract multiple pixels with bit depths of 1, 2, and 4 from a single - * byte into separate bytes (useful for paletted and grayscale images). - */ - png_set_packing(png_ptr); - - /* Change the order of packed pixels to least significant bit first - * (not useful if you are using png_set_packing). */ - png_set_packswap(png_ptr); - - /* Expand paletted colors into true RGB triplets */ - if (color_type == PNG_COLOR_TYPE_PALETTE) - png_set_expand(png_ptr); - - /* Expand grayscale images to the full 8 bits from 1, 2, or 4 bits/pixel */ - if (color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8) - png_set_expand(png_ptr); - - /* Expand paletted or RGB images with transparency to full alpha channels - * so the data will be available as RGBA quartets. - */ - if (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)) - png_set_expand(png_ptr); - - /* Set the background color to draw transparent and alpha images over. - * It is possible to set the red, green, and blue components directly - * for paletted images instead of supplying a palette index. Note that - * even if the PNG file supplies a background, you are not required to - * use it - you should use the (solid) application background if it has one. - */ - - png_color_16 my_background, *image_background; - - if (png_get_bKGD(png_ptr, info_ptr, &image_background)) - png_set_background(png_ptr, image_background, - PNG_BACKGROUND_GAMMA_FILE, 1, 1.0); - else - png_set_background(png_ptr, &my_background, - PNG_BACKGROUND_GAMMA_SCREEN, 0, 1.0); - - /* Some suggestions as to how to get a screen gamma value */ - - /* Note that screen gamma is (display_gamma/viewing_gamma) */ - if (/* We have a user-defined screen gamma value */) - { - screen_gamma = user-defined screen_gamma; - } - /* This is one way that applications share the same screen gamma value */ - else if ((gamma_str = getenv("SCREEN_GAMMA")) != NULL) - { - screen_gamma = atof(gamma_str); - } - /* If we don't have another value */ - else - { - screen_gamma = 2.2; /* A good guess for a PC monitors in a dimly - lit room */ - screen_gamma = 1.7 or 1.0; /* A good guess for Mac systems */ - } - - /* Tell libpng to handle the gamma conversion for you. The second call - * is a good guess for PC generated images, but it should be configurable - * by the user at run time by the user. It is strongly suggested that - * your application support gamma correction. - */ - - int intent; - - if (png_get_sRGB(png_ptr, info_ptr, &intent)) - png_set_sRGB(png_ptr, intent, 0); - else - if (png_get_gAMA(png_ptr, info_ptr, &image_gamma)) - png_set_gamma(png_ptr, screen_gamma, image_gamma); - else - png_set_gamma(png_ptr, screen_gamma, 0.50); - - /* Dither RGB files down to 8 bit palette or reduce palettes - * to the number of colors available on your screen. - */ - if (color_type & PNG_COLOR_MASK_COLOR) - { - png_uint_32 num_palette; - png_colorp palette; - - /* This reduces the image to the application supplied palette */ - if (/* we have our own palette */) - { - /* An array of colors to which the image should be dithered */ - png_color std_color_cube[MAX_SCREEN_COLORS]; - - png_set_dither(png_ptr, std_color_cube, MAX_SCREEN_COLORS, - MAX_SCREEN_COLORS, NULL, 0); - } - /* This reduces the image to the palette supplied in the file */ - else if (png_get_PLTE(png_ptr, info_ptr, &palette, &num_palette)) - { - png_color16p histogram; - - png_get_hIST(png_ptr, info_ptr, &histogram); - - png_set_dither(png_ptr, palette, num_palette, - max_screen_colors, histogram, 0); - } - } - - /* invert monocrome files to have 0 as white and 1 as black */ - png_set_invert_mono(png_ptr); - - /* If you want to shift the pixel values from the range [0,255] or - * [0,65535] to the original [0,7] or [0,31], or whatever range the - * colors were originally in: - */ - if (png_get_valid(png_ptr, info_ptr, PNG_INFO_sBIT)) - { - png_color8p sig_bit; - - png_get_sBIT(png_ptr, info_ptr, &sig_bit); - png_set_shift(png_ptr, sig_bit); - } - - /* flip the RGB pixels to BGR (or RGBA to BGRA) */ - png_set_bgr(png_ptr); - - /* swap the RGBA or GA data to ARGB or AG (or BGRA to ABGR) */ - png_set_swap_alpha(png_ptr); - - /* swap bytes of 16 bit files to least significant byte first */ - png_set_swap(png_ptr); - - /* Add filler (or alpha) byte (before/after each RGB triplet) */ - png_set_filler(png_ptr, 0xff, PNG_FILLER_AFTER); - - /* Turn on interlace handling. REQUIRED if you are not using - * png_read_image(). To see how to handle interlacing passes, - * see the png_read_row() method below: - */ - number_passes = png_set_interlace_handling(png_ptr); - - /* Optional call to gamma correct and add the background to the palette - * and update info structure. REQUIRED if you are expecting libpng to - * update the palette for you (ie you selected such a transform above). - */ - png_read_update_info(png_ptr, info_ptr); - - /* Allocate the memory to hold the image using the fields of info_ptr. */ - - /* The easiest way to read the image: */ - png_bytep row_pointers[height]; - - for (row = 0; row < height; row++) - { - row_pointers[row] = malloc(png_get_rowbytes(png_ptr, info_ptr)); - } - - /* Now it's time to read the image. One of these methods is REQUIRED */ -#ifdef entire /* Read the entire image in one go */ - png_read_image(png_ptr, row_pointers); - -#else no_entire /* Read the image one or more scanlines at a time */ - /* The other way to read images - deal with interlacing: */ - - for (pass = 0; pass < number_passes; pass++) - { -#ifdef single /* Read the image a single row at a time */ - for (y = 0; y < height; y++) - { - png_bytep row_pointers = row[y]; - png_read_rows(png_ptr, &row_pointers, NULL, 1); - } - -#else no_single /* Read the image several rows at a time */ - for (y = 0; y < height; y += number_of_rows) - { -#ifdef sparkle /* Read the image using the "sparkle" effect. */ - png_read_rows(png_ptr, row_pointers, NULL, number_of_rows); - -#else no_sparkle /* Read the image using the "rectangle" effect */ - png_read_rows(png_ptr, NULL, row_pointers, number_of_rows); -#endif no_sparkle /* use only one of these two methods */ - } - - /* if you want to display the image after every pass, do - so here */ -#endif no_single /* use only one of these two methods */ - } -#endif no_entire /* use only one of these two methods */ - - /* read rest of file, and get additional chunks in info_ptr - REQUIRED */ - png_read_end(png_ptr, info_ptr); - - /* clean up after the read, and free any memory allocated - REQUIRED */ - png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL); - - /* close the file */ - fclose(fp); - - /* that's it */ - return; -} - -/* progressively read a file */ - -int -initialize_png_reader(png_structp *png_ptr, png_infop *info_ptr) -{ - /* Create and initialize the png_struct with the desired error handler - * functions. If you want to use the default stderr and longjump method, - * you can supply NULL for the last three parameters. We also check that - * the library version is compatible in case we are using dynamically - * linked libraries. - */ - *png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, - (void *)user_error_ptr, user_error_fn, user_warning_fn); - - if (*png_ptr == NULL) - { - *info_ptr = NULL; - return ERROR; - } - - *info_ptr = png_create_info_struct(png_ptr); - - if (*info_ptr == NULL) - { - png_destroy_read_struct(png_ptr, info_ptr, (png_infopp)NULL); - return ERROR; - } - - if (setjmp((*png_ptr)->jmpbuf)) - { - png_destroy_read_struct(png_ptr, info_ptr, (png_infopp)NULL); - return ERROR; - } - - /* this one's new. You will need to provide all three - * function callbacks, even if you aren't using them all. - * These functions shouldn't be dependent on global or - * static variables if you are decoding several images - * simultaneously. You should store stream specific data - * in a separate struct, given as the second parameter, - * and retrieve the pointer from inside the callbacks using - * the function png_get_progressive_ptr(png_ptr). - */ - png_set_progressive_read_fn(*png_ptr, (void *)stream_data, - info_callback, row_callback, end_callback); - - return OK; -} - -int -process_data(png_structp *png_ptr, png_infop *info_ptr, - png_bytep buffer, png_uint_32 length) -{ - if (setjmp((*png_ptr)->jmpbuf)) - { - /* Free the png_ptr and info_ptr memory on error */ - png_destroy_read_struct(png_ptr, info_ptr, (png_infopp)NULL); - return ERROR; - } - - /* This one's new also. Simply give it chunks of data as - * they arrive from the data stream (in order, of course). - * On Segmented machines, don't give it any more than 64K. - * The library seems to run fine with sizes of 4K, although - * you can give it much less if necessary (I assume you can - * give it chunks of 1 byte, but I haven't tried with less - * than 256 bytes yet). When this function returns, you may - * want to display any rows that were generated in the row - * callback, if you aren't already displaying them there. - */ - png_process_data(*png_ptr, *info_ptr, buffer, length); - return OK; -} - -info_callback(png_structp png_ptr, png_infop info) -{ -/* do any setup here, including setting any of the transformations - * mentioned in the Reading PNG files section. For now, you _must_ - * call either png_start_read_image() or png_read_update_info() - * after all the transformations are set (even if you don't set - * any). You may start getting rows before png_process_data() - * returns, so this is your last chance to prepare for that. - */ -} - -row_callback(png_structp png_ptr, png_bytep new_row, - png_uint_32 row_num, int pass) -{ -/* this function is called for every row in the image. If the - * image is interlacing, and you turned on the interlace handler, - * this function will be called for every row in every pass. - * Some of these rows will not be changed from the previous pass. - * When the row is not changed, the new_row variable will be NULL. - * The rows and passes are called in order, so you don't really - * need the row_num and pass, but I'm supplying them because it - * may make your life easier. - * - * For the non-NULL rows of interlaced images, you must call - * png_progressive_combine_row() passing in the row and the - * old row. You can call this function for NULL rows (it will - * just return) and for non-interlaced images (it just does the - * memcpy for you) if it will make the code easier. Thus, you - * can just do this for all cases: - */ - - png_progressive_combine_row(png_ptr, old_row, new_row); - -/* where old_row is what was displayed for previous rows. Note - * that the first pass (pass == 0 really) will completely cover - * the old row, so the rows do not have to be initialized. After - * the first pass (and only for interlaced images), you will have - * to pass the current row, and the function will combine the - * old row and the new row. - */ -} - -end_callback(png_structp png_ptr, png_infop info) -{ -/* this function is called when the whole image has been read, - * including any chunks after the image (up to and including - * the IEND). You will usually have the same info chunk as you - * had in the header, although some data may have been added - * to the comments and time fields. - * - * Most people won't do much here, perhaps setting a flag that - * marks the image as finished. - */ -} - -/* write a png file */ -void write_png(char *file_name /* , ... other image information ... */) -{ - FILE *fp; - png_structp png_ptr; - png_infop info_ptr; - - /* open the file */ - fp = fopen(file_name, "wb"); - if (fp == NULL) - return; - - /* Create and initialize the png_struct with the desired error handler - * functions. If you want to use the default stderr and longjump method, - * you can supply NULL for the last three parameters. We also check that - * the library version is compatible with the one used at compile time, - * in case we are using dynamically linked libraries. REQUIRED. - */ - png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, - (void *)user_error_ptr, user_error_fn, user_warning_fn); - - if (png_ptr == NULL) - { - fclose(fp); - return; - } - - /* Allocate/initialize the image information data. REQUIRED */ - info_ptr = png_create_info_struct(png_ptr); - if (info_ptr == NULL) - { - fclose(fp); - png_destroy_write_struct(&png_ptr, (png_infopp)NULL); - return; - } - - /* Set error handling. REQUIRED if you aren't supplying your own - * error hadnling functions in the png_create_write_struct() call. - */ - if (setjmp(png_ptr->jmpbuf)) - { - /* If we get here, we had a problem reading the file */ - fclose(fp); - png_destroy_write_struct(&png_ptr, (png_infopp)NULL); - return; - } - - /* One of the following I/O initialization functions is REQUIRED */ -#ifdef streams /* I/O initialization method 1 */ - /* set up the output control if you are using standard C streams */ - png_init_io(png_ptr, fp); -#else no_streams /* I/O initialization method 2 */ - /* If you are using replacement read functions, instead of calling - * png_init_io() here you would call */ - png_set_write_fn(png_ptr, (void *)user_io_ptr, user_write_fn, - user_IO_flush_function); - /* where user_io_ptr is a structure you want available to the callbacks */ -#endif no_streams /* only use one initialization method */ - - /* Set the image information here. Width and height are up to 2^31, - * bit_depth is one of 1, 2, 4, 8, or 16, but valid values also depend on - * the color_type selected. color_type is one of PNG_COLOR_TYPE_GRAY, - * PNG_COLOR_TYPE_GRAY_ALPHA, PNG_COLOR_TYPE_PALETTE, PNG_COLOR_TYPE_RGB, - * or PNG_COLOR_TYPE_RGB_ALPHA. interlace is either PNG_INTERLACE_NONE or - * PNG_INTERLACE_ADAM7, and the compression_type and filter_type MUST - * currently be PNG_COMPRESSION_TYPE_BASE and PNG_FILTER_TYPE_BASE. REQUIRED - */ - png_set_IHDR(png_ptr, info_ptr, width, height, bit_depth, PNG_COLOR_TYPE_???, - PNG_INTERLACE_????, PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE); - - /* set the palette if there is one. REQUIRED for indexed-color images */ - palette = (png_colorp)png_malloc(png_ptr, 256 * sizeof (png_color)); - /* ... set palette colors ... */ - png_set_PLTE(png_ptr, info_ptr, palette, 256); - - /* optional significant bit chunk */ - /* if we are dealing with a grayscale image then */ - sig_bit.gray = true_bit_depth; - /* otherwise, if we are dealing with a color image then */ - sig_bit.red = true_red_bit_depth; - sig_bit.green = true_green_bit_depth; - sig_bit.blue = true_blue_bit_depth; - /* if the image has an alpha channel then */ - sig_bit.alpha = true_alpha_bit_depth; - png_set_sBIT(png_ptr, info_ptr, sig_bit); - - - /* Optional gamma chunk is strongly suggested if you have any guess - * as to the correct gamma of the image. - */ - png_set_gAMA(png_ptr, info_ptr, gamma); - - /* Optionally write comments into the image */ - text_ptr[0].key = "Title"; - text_ptr[0].text = "Mona Lisa"; - text_ptr[0].compression = PNG_TEXT_COMPRESSION_NONE; - text_ptr[1].key = "Author"; - text_ptr[1].text = "Leonardo DaVinci"; - text_ptr[1].compression = PNG_TEXT_COMPRESSION_NONE; - text_ptr[2].key = "Description"; - text_ptr[2].text = ""; - text_ptr[2].compression = PNG_TEXT_COMPRESSION_zTXt; - png_set_text(png_ptr, info_ptr, text_ptr, 2); - - /* other optional chunks like cHRM, bKGD, tRNS, tIME, oFFs, pHYs, */ - /* note that if sRGB is present the cHRM chunk must be ignored - * on read and must be written in accordance with the sRGB profile */ - - /* Write the file header information. REQUIRED */ - png_write_info(png_ptr, info_ptr); - - /* Once we write out the header, the compression type on the text - * chunks gets changed to PNG_TEXT_COMPRESSION_NONE_WR or - * PNG_TEXT_COMPRESSION_zTXt_WR, so it doesn't get written out again - * at the end. - */ - - /* set up the transformations you want. Note that these are - * all optional. Only call them if you want them. - */ - - /* invert monocrome pixels */ - png_set_invert_mono(png_ptr); - - /* Shift the pixels up to a legal bit depth and fill in - * as appropriate to correctly scale the image. - */ - png_set_shift(png_ptr, &sig_bit); - - /* pack pixels into bytes */ - png_set_packing(png_ptr); - - /* swap location of alpha bytes from ARGB to RGBA */ - png_set_swap_alpha(png_ptr); - - /* Get rid of filler (OR ALPHA) bytes, pack XRGB/RGBX/ARGB/RGBA into - * RGB (4 channels -> 3 channels). The second parameter is not used. - */ - png_set_filler(png_ptr, 0, PNG_FILLER_BEFORE); - - /* flip BGR pixels to RGB */ - png_set_bgr(png_ptr); - - /* swap bytes of 16-bit files to most significant byte first */ - png_set_swap(png_ptr); - - /* swap bits of 1, 2, 4 bit packed pixel formats */ - png_set_packswap(png_ptr); - - /* turn on interlace handling if you are not using png_write_image() */ - if (interlacing) - number_passes = png_set_interlace_handling(png_ptr); - else - number_passes = 1; - - /* The easiest way to write the image (you may have a different memory - * layout, however, so choose what fits your needs best). You need to - * use the first method if you aren't handling interlacing yourself. - */ - png_byte row_pointers[height][width]; - - /* One of the following output methods is REQUIRED */ -#ifdef entire /* write out the entire image data in one call */ - png_write_image(png_ptr, row_pointers); - - /* the other way to write the image - deal with interlacing */ - -#else no_entire /* write out the image data by one or more scanlines */ - /* The number of passes is either 1 for non-interlaced images, - * or 7 for interlaced images. - */ - for (pass = 0; pass < number_passes; pass++) - { - /* Write a few rows at a time. */ - png_write_rows(png_ptr, row_pointers, number_of_rows); - - /* If you are only writing one row at a time, this works */ - for (y = 0; y < height; y++) - { - png_bytep row_pointers = row[y]; - png_write_rows(png_ptr, &row_pointers, 1); - } - } -#endif no_entire /* use only one output method */ - - /* You can write optional chunks like tEXt, zTXt, and tIME at the end - * as well. - */ - - /* It is REQUIRED to call this to finish writing the rest of the file */ - png_write_end(png_ptr, info_ptr); - - /* if you malloced the palette, free it here */ - free(info_ptr->palette); - - /* if you allocated any text comments, free them here */ - - /* clean up after the write, and free any memory allocated */ - png_destroy_write_struct(&png_ptr, (png_infopp)NULL); - - /* close the file */ - fclose(fp); - - /* that's it */ - return; -} - diff --git a/src/png/libpng.3 b/src/png/libpng.3 deleted file mode 100644 index 88d8c9642c..0000000000 --- a/src/png/libpng.3 +++ /dev/null @@ -1,2409 +0,0 @@ -.TH LIBPNG 3 "March 15, 1998" -.SH NAME -libpng \- Portable Network Graphics (PNG) Reference Library -.SH SYNOPSIS - -#include - -int png_check_sig (png_bytep sig, int num); - -void png_chunk_error (png_structp png_ptr, png_const_charp -error); - -void png_chunk_warning (png_structp png_ptr, png_const_charp -message); - -void png_convert_from_struct_tm (png_timep ptime, struct tm FAR -* ttime); - -void png_convert_from_time_t (png_timep ptime, time_t ttime); - -png_charp png_convert_to_rfc1123 (png_structp png_ptr, -png_timep ptime); - -png_infop png_create_info_struct (png_structp png_ptr); - -png_structp png_create_read_struct (png_const_charp -user_png_ver, voidp error_ptr, png_error_ptr error_fn, -png_error_ptr warn_fn); - -png_structp png_create_write_struct (png_const_charp -user_png_ver, voidp error_ptr, png_error_ptr error_fn, -png_error_ptr warn_fn); - -void png_debug_free (png_structp png_ptr, png_voidp ptr); - -png_voidp png_debug_malloc (png_structp png_ptr, png_uint_32 -size); - -void png_destroy_info_struct (png_structp png_ptr, png_infopp -info_ptr_ptr); - -void png_destroy_read_struct (png_structpp png_ptr_ptr, -png_infopp info_ptr_ptr, png_infopp end_info_ptr_ptr); - -void png_destroy_write_struct (png_structpp png_ptr_ptr, -png_infopp info_ptr_ptr); - -void png_error (png_structp png_ptr, png_const_charp error); - -void png_free (png_structp png_ptr, png_voidp ptr); - -png_byte png_get_bit_depth (png_structp png_ptr, png_infop -info_ptr); - -png_uint_32 png_get_bKGD (png_structp png_ptr, png_infop -info_ptr, png_color_16p *background); - -png_byte png_get_channels (png_structp png_ptr, png_infop -info_ptr); - -png_uint_32 png_get_cHRM (png_structp png_ptr, png_infop -info_ptr, double *white_x, double *white_y, double *red_x, -double *red_y, double *green_x, double *green_y, double -*blue_x, double *blue_y); - -png_byte png_get_color_type (png_structp png_ptr, png_infop -info_ptr); - -png_byte png_get_compression_type (png_structp png_ptr, -png_infop info_ptr); - -png_voidp png_get_error_ptr (png_structp png_ptr); - -png_byte png_get_filter_type (png_structp png_ptr, png_infop -info_ptr); - -png_uint_32 png_get_gAMA (png_structp png_ptr, png_infop -info_ptr, double *file_gamma); - -png_uint_32 png_get_hIST (png_structp png_ptr, png_infop -info_ptr, png_uint_16p *hist); - -png_uint_32 png_get_image_height (png_structp png_ptr, -png_infop info_ptr); - -png_uint_32 png_get_image_width (png_structp png_ptr, png_infop -info_ptr); - -png_byte png_get_interlace_type (png_structp png_ptr, png_infop -info_ptr); - -png_voidp png_get_io_ptr (png_structp png_ptr); - -png_uint_32 png_get_IHDR (png_structp png_ptr, png_infop -info_ptr, png_uint_32 *width, png_uint_32 *height, int -*bit_depth, int *color_type, int *interlace_type, int -*compression_type, int *filter_type); - -png_uint_32 png_get_oFFs (png_structp png_ptr, png_infop -info_ptr, png_uint_32 *offset_x, png_uint_32 *offset_y, int -*unit_type); - -png_uint_32 png_get_pCAL (png_structp png_ptr, png_infop -info_ptr, png_charp *purpose, png_int_32 *X0, png_int_32 *X1, -int *type, int *nparams, png_charp *units, png_charpp *params); - -png_uint_32 png_get_pHYs (png_structp png_ptr, png_infop -info_ptr, png_uint_32 *res_x, png_uint_32 *res_y, int -*unit_type); - -float png_get_pixel_aspect_ratio (png_structp png_ptr, -png_infop info_ptr); - -png_uint_32 png_get_pixels_per_meter (png_structp png_ptr, -png_infop info_ptr); - -png_voidp png_get_progressive_ptr (png_structp png_ptr); - -png_uint_32 png_get_PLTE (png_structp png_ptr, png_infop -info_ptr, png_colorp *palette, int *num_palette); - -png_uint_32 png_get_rowbytes (png_structp png_ptr, png_infop -info_ptr); - -png_uint_32 png_get_sBIT (png_structp png_ptr, png_infop -info_ptr, png_color_8p *sig_bit); - -png_bytep png_get_signature (png_structp png_ptr, png_infop -info_ptr); - -png_uint_32 png_get_sRGB (png_structp png_ptr, png_infop -info_ptr, int *intent); - -png_uint_32 png_get_text (png_structp png_ptr, png_infop -info_ptr, png_textp *text_ptr, int *num_text); - -png_uint_32 png_get_tIME (png_structp png_ptr, png_infop -info_ptr, png_timep *mod_time); - -png_uint_32 png_get_tRNS (png_structp png_ptr, png_infop -info_ptr, png_bytep *trans, int *num_trans, png_color_16p -*trans_values); - -png_uint_32 png_get_valid (png_structp png_ptr, png_infop -info_ptr, png_uint_32 flag); - -png_uint_32 png_get_x_offset_microns (png_structp png_ptr, -png_infop info_ptr); - -png_uint_32 png_get_x_offset_pixels (png_structp png_ptr, -png_infop info_ptr); - -png_uint_32 png_get_x_pixels_per_meter (png_structp png_ptr, -png_infop info_ptr); - -png_uint_32 png_get_y_offset_microns (png_structp png_ptr, -png_infop info_ptr); - -png_uint_32 png_get_y_offset_pixels (png_structp png_ptr, -png_infop info_ptr); - -png_uint_32 png_get_y_pixels_per_meter (png_structp png_ptr, -png_infop info_ptr); - -void png_info_init (png_infop info_ptr); - -void png_init_io (png_structp png_ptr, FILE *fp); - -png_voidp png_malloc (png_structp png_ptr, png_uint_32 size); - -voidp png_memcpy (png_voidp s1, png_voidp s2, png_size_t size); - -png_voidp png_memcpy_check (png_structp png_ptr, png_voidp s1, -png_voidp s2, png_uint_32 size); - -voidp png_memset (png_voidp s1, int value, png_size_t size); - -png_voidp png_memset_check (png_structp png_ptr, png_voidp -s1, int value, png_uint_32 size); - -void png_process_data (png_structp png_ptr, png_infop info_ptr, -png_bytep buffer, png_size_t buffer_size); - -void png_progressive_combine_row (png_structp png_ptr, -png_bytep old_row, png_bytep new_row); - -void png_read_destroy (png_structp png_ptr, png_infop info_ptr, -png_infop end_info_ptr); - -void png_read_end (png_structp png_ptr, png_infop info_ptr); - -void png_read_image (png_structp png_ptr, png_bytepp image); - -void png_read_info (png_structp png_ptr, png_infop info_ptr); - -void png_read_row (png_structp png_ptr, png_bytep row, -png_bytep display_row); - -void png_read_rows (png_structp png_ptr, png_bytepp row, -png_bytepp display_row, png_uint_32 num_rows); - -void png_read_update_info (png_structp png_ptr, png_infop -info_ptr); - -void png_set_background (png_structp png_ptr, png_color_16p -background_color, int background_gamma_code, int need_expand, -double background_gamma); - -void png_set_bgr (png_structp png_ptr); - -void png_set_bKGD (png_structp png_ptr, png_infop info_ptr, -png_color_16p background); - -void png_set_cHRM (png_structp png_ptr, png_infop info_ptr, -double white_x, double white_y, double red_x, double red_y, -double green_x, double green_y, double blue_x, double blue_y); - -void png_set_compression_level (png_structp png_ptr, int -level); - -void png_set_compression_mem_level (png_structp png_ptr, int -mem_level); - -void png_set_compression_method (png_structp png_ptr, int -method); - -void png_set_compression_strategy (png_structp png_ptr, int -strategy); - -void png_set_compression_window_bits (png_structp png_ptr, int -window_bits); - -void png_set_crc_action (png_structp png_ptr, int crit_action, -int ancil_action); - -void png_set_dither (png_structp png_ptr, png_colorp palette, -int num_palette, int maximum_colors, png_uint_16p histogram, -int full_dither); - -void png_set_error_fn (png_structp png_ptr, png_voidp -error_ptr, png_error_ptr error_fn, png_error_ptr warning_fn); - -void png_set_expand (png_structp png_ptr); - -void png_set_filler (png_structp png_ptr, png_uint_32 filler, -int flags); - -void png_set_filter (png_structp png_ptr, int method, int -filters); - -void png_set_filter_heuristics (png_structp png_ptr, int -heuristic_method, int num_weights, png_doublep filter_weights, -png_doublep filter_costs); - -void png_set_flush (png_structp png_ptr, int nrows); - -void png_set_gamma (png_structp png_ptr, double screen_gamma, -double default_file_gamma); - -void png_set_gAMA (png_structp png_ptr, png_infop info_ptr, -double file_gamma); - -void png_set_gray_to_rgb (png_structp png_ptr); - -void png_set_hIST (png_structp png_ptr, png_infop info_ptr, -png_uint_16p hist); - -int png_set_interlace_handling (png_structp png_ptr); - -void png_set_invert_alpha (png_structp png_ptr); - -void png_set_invert_mono (png_structp png_ptr); - -void png_set_IHDR (png_structp png_ptr, png_infop info_ptr, -png_uint_32 width, png_uint_32 height, int bit_depth, int -color_type, int interlace_type, int compression_type, int -filter_type); - -void png_set_oFFs (png_structp png_ptr, png_infop info_ptr, -png_uint_32 offset_x, png_uint_32 offset_y, int unit_type); - -void png_set_packing (png_structp png_ptr); - -void png_set_packswap (png_structp png_ptr); - -void png_set_pCAL (png_structp png_ptr, png_infop info_ptr, -png_charp purpose, png_int_32 X0, png_int_32 X1, int type, int -nparams, png_charp units, png_charpp params); - -void png_set_pHYs (png_structp png_ptr, png_infop info_ptr, -png_uint_32 res_x, png_uint_32 res_y, int unit_type); - -void png_set_progressive_read_fn (png_structp png_ptr, -png_voidp progressive_ptr, png_progressive_info_ptr info_fn, -png_progressive_row_ptr row_fn, png_progressive_end_ptr -end_fn); - -void png_set_PLTE (png_structp png_ptr, png_infop info_ptr, -png_colorp palette, int num_palette); - -void png_set_read_fn (png_structp png_ptr, png_voidp io_ptr, -png_rw_ptr read_data_fn); - -void png_set_read_status_fn (png_structp png_ptr, png_read_status_ptr - read_row_fn); - -void png_set_read_user_transform_fn (png_structp png_ptr, - png_user_transform_ptr read_user_transform_fn); - -void png_set_rgb_to_gray (png_structp png_ptr); - -void png_set_sBIT (png_structp png_ptr, png_infop info_ptr, -png_color_8p sig_bit); - -void png_set_shift (png_structp png_ptr, png_color_8p -true_bits); - -void png_set_sig_bytes (png_structp png_ptr, int num_bytes); - -void png_set_sRGB (png_structp png_ptr, png_infop info_ptr, int -intent); - -void png_set_sRGB_gAMA_and_cHRM (png_structp png_ptr, png_infop -info_ptr, int intent); - -void png_set_strip_16 (png_structp png_ptr); - -void png_set_strip_alpha (png_structp png_ptr); - -void png_set_swap (png_structp png_ptr); - -void png_set_swap_alpha (png_structp png_ptr); - -void png_set_text (png_structp png_ptr, png_infop info_ptr, -png_textp text_ptr, int num_text); - -void png_set_tIME (png_structp png_ptr, png_infop info_ptr, -png_timep mod_time); - -void png_set_tRNS (png_structp png_ptr, png_infop info_ptr, -png_bytep trans, int num_trans, png_color_16p trans_values); - -void png_set_write_fn (png_structp png_ptr, png_voidp io_ptr, -png_rw_ptr write_data_fn, png_flush_ptr output_flush_fn); - -void png_set_write_status_fn (png_structp png_ptr, png_write_status_ptr - write_row_fn); - -void png_set_write_user_transform_fn (png_structp png_ptr, - png_user_transform_ptr write_user_transform_fn); - -int png_sig_cmp (png_bytep sig, png_size_t start, png_size_t -num_to_check); - -void png_start_read_image (png_structp png_ptr); - -void png_warning (png_structp png_ptr, png_const_charp -message); - -void png_write_chunk (png_structp png_ptr, png_bytep -chunk_name, png_bytep data, png_size_t length); - -void png_write_chunk_data (png_structp png_ptr, png_bytep data, -png_size_t length); - -void png_write_chunk_end (png_structp png_ptr); - -void png_write_chunk_start (png_structp png_ptr, png_bytep -chunk_name, png_uint_32 length); - -void png_write_destroy (png_structp png_ptr); - -void png_write_destroy_info (png_infop info_ptr); - -void png_write_end (png_structp png_ptr, png_infop info_ptr); - -void png_write_flush (png_structp png_ptr); - -void png_write_image (png_structp png_ptr, png_bytepp image); - -void png_write_info (png_structp png_ptr, png_infop info_ptr); - -void png_write_row (png_structp png_ptr, png_bytep row); - -void png_write_rows (png_structp png_ptr, png_bytepp row, -png_uint_32 num_rows); - -.SH DESCRIPTION -The -.I libpng -library supports encoding, decoding, and various manipulations of -the Portable Network Graphics (PNG) format image files. It uses the -.IR zlib(3) -compression library. -Following is a copy of the libpng.txt file that accompanies libpng. -.SH LIBPNG.TXT -libpng.txt - A description on how to use and modify libpng - - libpng version 1.0.1 March 15, 1998 - Updated and distributed by Glenn Randers-Pehrson - - Copyright (c) 1998, Glenn Randers-Pehrson - For conditions of distribution and use, see copyright - notice in png.h. - - based on: - - libpng 1.0 beta 6 version 0.96 May 28, 1997 - Updated and distributed by Andreas Dilger - Copyright (c) 1996, 1997 Andreas Dilger - - libpng 1.0 beta 2 - version 0.88 January 26, 1996 - For conditions of distribution and use, see copyright - notice in png.h. Copyright (c) 1995, 1996 Guy Eric - Schalnat, Group 42, Inc. - - Updated/rewritten per request in the libpng FAQ - Copyright (c) 1995 Frank J. T. Wojcik - December 18, 1995 && January 20, 1996 - -.SH I. Introduction - -This file describes how to use and modify the PNG reference library -(known as libpng) for your own use. There are five sections to this -file: introduction, structures, reading, writing, and modification and -configuration notes for various special platforms. In addition to this -file, example.c is a good starting point for using the library, as -it is heavily commented and should include everything most people -will need. We assume that libpng is already installed; see the -INSTALL file for instructions on how to install libpng. - -Libpng was written as a companion to the PNG specification, as a way -of reducing the amount of time and effort it takes to support the PNG -file format in application programs. The PNG specification is available -as RFC 2083 and as a -W3C Recommendation . Some -additional chunks are described in the special-purpose public chunks -documents at . Other information -about PNG can be found at the PNG home page, . - -Most users will not have to modify the library significantly; advanced -users may want to modify it more. All attempts were made to make it as -complete as possible, while keeping the code easy to understand. -Currently, this library only supports C. Support for other languages -is being considered. - -Libpng has been designed to handle multiple sessions at one time, -to be easily modifiable, to be portable to the vast majority of -machines (ANSI, K&R, 16-, 32-, and 64-bit) available, and to be easy -to use. The ultimate goal of libpng is to promote the acceptance of -the PNG file format in whatever way possible. While there is still -work to be done (see the TODO file), libpng should cover the -majority of the needs of its users. - -Libpng uses zlib for its compression and decompression of PNG files. -The zlib compression utility is a general purpose utility that is -useful for more than PNG files, and can be used without libpng. -See the documentation delivered with zlib for more details. -You can usually find the source files for the zlib utility wherever you -find the libpng source files. - -Libpng is thread safe, provided the threads are using different -instances of the structures. Each thread should have its own -png_struct and png_info instances, and thus its own image. -Libpng does not protect itself against two threads using the -same instance of a structure. - - -.SH II. Structures - -There are two main structures that are important to libpng, png_struct -and png_info. The first, png_struct, is an internal structure that -will not, for the most part, be used by a user except as the first -variable passed to every libpng function call. - -The png_info structure is designed to provide information about the -PNG file. At one time, the fields of png_info were intended to be -directly accessible to the user. However, this tended to cause problems -with applications using dynamically loaded libraries, and as a result -a set of interface functions for png_info was developed. The fields -of png_info are still available for older applications, but it is -suggested that applications use the new interfaces if at all possible. - -The png.h header file is an invaluable reference for programming with libpng. -And while I'm on the topic, make sure you include the libpng header file: - -#include - -.SH III. Reading - -Reading PNG files: - -We'll now walk you through the possible functions to call when reading -in a PNG file, briefly explaining the syntax and purpose of each one. -See example.c and png.h for more detail. While Progressive reading -is covered in the next section, you will still need some of the -functions discussed in this section to read a PNG file. - -You will want to do the I/O initialization(*) before you get into libpng, -so if it doesn't work, you don't have much to undo. Of course, you -will also want to insure that you are, in fact, dealing with a PNG -file. Libpng provides a simple check to see if a file is a PNG file. -To use it, pass in the first 1 to 8 bytes of the file, and it will -return true or false (1 or 0) depending on whether the bytes could be -part of a PNG file. Of course, the more bytes you pass in, the -greater the accuracy of the prediction. - -If you are intending to keep the file pointer open for use in libpng, -you must ensure you don't read more than 8 bytes from the beginning -of the file, and you also have to make a call to png_set_sig_bytes_read() -with the number of bytes you read from the beginning. Libpng will -then only check the bytes (if any) that your program didn't read. - -(*): If you are not using the standard I/O functions, you will need -to replace them with custom functions. See the discussion under -Customizing libpng. - - - FILE *fp = fopen(file_name, "rb"); - if (!fp) - { - return; - } - fread(header, 1, number, fp); - is_png = png_check_sig(header, 0, number); - if (!is_png) - { - return; - } - - -Next, png_struct and png_info need to be allocated and initialized. In -order to ensure that the size of these structures is correct even with a -dynamically linked libpng, there are functions to initialize and -allocate the structures. We also pass the library version, optional -pointers to error handling functions, and a pointer to a data struct for -use by the error functions, if necessary (the pointer and functions can -be NULL if the default error handlers are to be used). See the section -on Changes to Libpng below regarding the old initialization functions. - - png_structp png_ptr = png_create_read_struct - (PNG_LIBPNG_VER_STRING, (void *)user_error_ptr, - user_error_fn, user_warning_fn); - if (!png_ptr) - return; - - png_infop info_ptr = png_create_info_struct(png_ptr); - if (!info_ptr) - { - png_destroy_read_struct(&png_ptr, - (png_infopp)NULL, (png_infopp)NULL); - return; - } - - png_infop end_info = png_create_info_struct(png_ptr); - if (!end_info) - { - png_destroy_read_struct(&png_ptr, &info_ptr, - (png_infopp)NULL); - return; - } - - -The error handling routines passed to png_create_read_struct() are only -necessary if you are not using the libpng supplied error handling -functions. When libpng encounters an error, it expects to longjmp back -to your routine. Therefore, you will need to call setjmp and pass the -jmpbuf field of your png_struct. If you read the file from different -routines, you will need to update the jmpbuf field every time you enter -a new routine that will call a png_ function. - -See your documentation of setjmp/longjmp for your compiler for more -handling in the Customizing Libpng section below for more information on -the libpng error handling. If an error occurs, and libpng longjmp's -back to your setjmp, you will want to call png_destroy_read_struct() to -free any memory. - - if (setjmp(png_ptr->jmpbuf)) - { - png_destroy_read_struct(&png_ptr, &info_ptr, - &end_info); - fclose(fp); - return; - } - -Now you need to set up the input code. The default for libpng is to -use the C function fread(). If you use this, you will need to pass a -valid FILE * in the function png_init_io(). Be sure that the file is -opened in binary mode. If you wish to handle reading data in another -way, you need not call the png_init_io() function, but you must then -implement the libpng I/O methods discussed in the Customizing Libpng -section below. - - png_init_io(png_ptr, fp); - -If you had previously opened the file and read any of the signature from -the beginning in order to see if this was a PNG file, you need to let -libpng know that there are some bytes missing from the start of the file. - - png_set_sig_bytes(png_ptr, number); - -At this point, you can set up a callback function that will be -called after each row has been read, which you can use to control -a progress meter or the like. It's demonstrated in pngtest.c. -You must supply a function - - void read_row_callback(png_ptr, png_uint_32 row, int pass); - { - /* put your code here */ - } - -(You can give it another name that you like instead of "read_row_callback") - -To inform libpng about your function, use - - png_set_read_status_fn(png_ptr, read_row_callback); - -In PNG files, the alpha channel in an image is the level of opacity. -If you need the alpha channel in an image to be the level of transparency -instead of opacity, you can invert the alpha channel (or the tRNS chunk -data) after it's read, so that 0 is fully opaque and 255 (in 8-bit or -paletted images) or 65535 (in 16-bit images) is fully transparent, with - - png_set_invert_alpha(png_ptr); - -This has to appear here rather than later with the other transformations -because the tRNS chunk data must be modified in the case of paletted images. -If your image is not a paletted image, the tRNS data (which in such cases -represents a single color to be rendered as transparent) won't be changed. - -Finally, you can write your own transformation function if none of -the existing ones meets your needs. This is done by setting a callback -with - - png_set_read_user_transform_fn(png_ptr, - read_transform_fn); - -You must supply the function - - void read_transform_fn(png_ptr ptr, row_info_ptr - row_info, png_bytep data) - -See pngtest.c for a working example. Your function will be called -after all of the other transformations have been processed. - -You are now ready to read all the file information up to the actual -image data. You do this with a call to png_read_info(). - - png_read_info(png_ptr, info_ptr); - -Functions are used to get the information from the info_ptr: - - png_get_IHDR(png_ptr, info_ptr, &width, &height, - &bit_depth, &color_type, &interlace_type, - &compression_type, &filter_type); - - width - holds the width of the image - in pixels (up to 2^31). - height - holds the height of the image - in pixels (up to 2^31). - bit_depth - holds the bit depth of one of the - image channels. (valid values are - 1, 2, 4, 8, 16 and depend also on - the color_type. See also - significant bits (sBIT) below). - color_type - describes which color/alpha channels - are present. - PNG_COLOR_TYPE_GRAY - (bit depths 1, 2, 4, 8, 16) - PNG_COLOR_TYPE_GRAY_ALPHA - (bit depths 8, 16) - PNG_COLOR_TYPE_PALETTE - (bit depths 1, 2, 4, 8) - PNG_COLOR_TYPE_RGB - (bit_depths 8, 16) - PNG_COLOR_TYPE_RGB_ALPHA - (bit_depths 8, 16) - - PNG_COLOR_MASK_PALETTE - PNG_COLOR_MASK_COLOR - PNG_COLOR_MASK_ALPHA - - filter_type - (must be PNG_FILTER_TYPE_BASE - for PNG 1.0) - compression_type - (must be PNG_COMPRESSION_TYPE_BASE - for PNG 1.0) - interlace_type - (PNG_INTERLACE_NONE or - PNG_INTERLACE_ADAM7) - Any or all of interlace_type, compression_type, of - filter_type can be - NULL if you are not interested in their values. - - channels = png_get_channels(png_ptr, info_ptr); - channels - number of channels of info for the - color type (valid values are 1 (GRAY, - PALETTE), 2 (GRAY_ALPHA), 3 (RGB), - 4 (RGB_ALPHA or RGB + filler byte)) - rowbytes = png_get_rowbytes(png_ptr, info_ptr); - rowbytes - number of bytes needed to hold a row - - signature = png_get_signature(png_ptr, info_ptr); - signature - holds the signature read from the - file (if any). The data is kept in - the same offset it would be if the - whole signature were read (i.e. if an - application had already read in 4 - bytes of signature before starting - libpng, the remaining 4 bytes would - be in signature[4] through signature[7] - (see png_set_sig_bytes())). - - - width = png_get_image_width(png_ptr, - info_ptr); - height = png_get_image_height(png_ptr, - info_ptr); - bit_depth = png_get_bit_depth(png_ptr, - info_ptr); - color_type = png_get_color_type(png_ptr, - info_ptr); - filter_type = png_get_filter_type(png_ptr, - info_ptr); - compression_type = png_get_compression_type(png_ptr, - info_ptr); - interlace_type = png_get_interlace_type(png_ptr, - info_ptr); - - -These are also important, but their validity depends on whether the chunk -has been read. The png_get_valid(png_ptr, info_ptr, PNG_INFO_) and -png_get_(png_ptr, info_ptr, ...) functions return non-zero if the -data has been read, or zero if it is missing. The parameters to the -png_get_ are set directly if they are simple data types, or a pointer -into the info_ptr is returned for any complex types. - - png_get_PLTE(png_ptr, info_ptr, &palette, - &num_palette); - palette - the palette for the file - (array of png_color) - num_palette - number of entries in the palette - - png_get_gAMA(png_ptr, info_ptr, &gamma); - gamma - the gamma the file is written - at (PNG_INFO_gAMA) - - png_get_sRGB(png_ptr, info_ptr, &srgb_intent); - srgb_intent - the rendering intent (PNG_INFO_sRGB) - The presence of the sRGB chunk - means that the pixel data is in the - sRGB color space. This chunk also - implies specific values of gAMA and - cHRM. - - png_get_sBIT(png_ptr, info_ptr, &sig_bit); - sig_bit - the number of significant bits for - (PNG_INFO_sBIT) each of the gray, - red, green, and blue channels, - whichever are appropriate for the - given color type (png_color_16) - - png_get_tRNS(png_ptr, info_ptr, &trans, &num_trans, - &trans_values); - trans - array of transparent entries for - palette (PNG_INFO_tRNS) - trans_values - transparent pixel for non-paletted - images (PNG_INFO_tRNS) - num_trans - number of transparent entries - (PNG_INFO_tRNS) - - png_get_hIST(png_ptr, info_ptr, &hist); - (PNG_INFO_hIST) - hist - histogram of palette (array of - png_color_16) - - png_get_tIME(png_ptr, info_ptr, &mod_time); - mod_time - time image was last modified - (PNG_VALID_tIME) - - png_get_bKGD(png_ptr, info_ptr, &background); - background - background color (PNG_VALID_bKGD) - - num_text = png_get_text(png_ptr, info_ptr, &text_ptr); - text_ptr - array of png_text holding image - comments - text_ptr[i]->key - keyword for comment. - text_ptr[i]->text - text comments for current - keyword. - text_ptr[i]->compression - type of compression used - on "text" PNG_TEXT_COMPRESSION_NONE - or PNG_TEXT_COMPRESSION_zTXt - num_text - number of comments - - png_get_oFFs(png_ptr, info_ptr, &offset_x, &offset_y, - &unit_type); - offset_x - positive offset from the left edge - of the screen - offset_y - positive offset from the top edge - of the screen - unit_type - PNG_OFFSET_PIXEL, PNG_OFFSET_MICROMETER - - png_get_pHYs(png_ptr, info_ptr, &res_x, &res_y, - &unit_type); - res_x - pixels/unit physical resolution in - x direction - res_y - pixels/unit physical resolution in - x direction - unit_type - PNG_RESOLUTION_UNKNOWN, - PNG_RESOLUTION_METER - -The data from the pHYs chunk can be retrieved in several convenient -forms: - - res_x = png_get_x_pixels_per_meter(png_ptr, - info_ptr) - res_y = png_get_y_pixels_per_meter(png_ptr, - info_ptr) - res_x_and_y = png_get_pixels_per_meter(png_ptr, - info_ptr) - aspect_ratio = png_get_pixel_aspect_ratio(png_ptr, - info_ptr) - - (Each of these returns 0 [signifying "unknown"] if - the data is not present or if res_x is 0; - res_x_and_y is 0 if res_x != res_y) - -For more information, see the png_info definition in png.h and the -PNG specification for chunk contents. Be careful with trusting -rowbytes, as some of the transformations could increase the space -needed to hold a row (expand, filler, gray_to_rgb, etc.). -See png_read_update_info(), below. - -A quick word about text_ptr and num_text. PNG stores comments in -keyword/text pairs, one pair per chunk, with no limit on the number -of text chunks, and a 2^31 byte limit on their size. While there are -suggested keywords, there is no requirement to restrict the use to these -strings. It is strongly suggested that keywords and text be sensible -to humans (that's the point), so don't use abbreviations. Non-printing -symbols are not allowed. See the PNG specification for more details. -There is also no requirement to have text after the keyword. - -Keywords should be limited to 79 Latin-1 characters without leading or -trailing spaces, but non-consecutive spaces are allowed within the -keyword. It is possible to have the same keyword any number of times. -The text_ptr is an array of png_text structures, each holding pointer -to a keyword and a pointer to a text string. Only the text string may -be null. The keyword/text pairs are put into the array in the order -that they are received. However, some or all of the text chunks may be -after the image, so, to make sure you have read all the text chunks, -don't mess with these until after you read the stuff after the image. -This will be mentioned again below in the discussion that goes with -png_read_end(). - -After you've read the header information, you can set up the library -to handle any special transformations of the image data. The various -ways to transform the data will be described in the order that they -should occur. This is important, as some of these change the color -type and/or bit depth of the data, and some others only work on -certain color types and bit depths. Even though each transformation -checks to see if it has data that it can do something with, you should -make sure to only enable a transformation if it will be valid for the -data. For example, don't swap red and blue on grayscale data. - -The colors used for the background and transparency values should be -supplied in the same format/depth as the current image data. They -are stored in the same format/depth as the image data in a bKGD or tRNS -chunk, so this is what libpng expects for this data. The colors are -transformed to keep in sync with the image data when an application -calls the png_read_update_info() routine (see below). - -Data will be decoded into the supplied row buffers packed into bytes -unless the library has been told to transform it into another format. -For example, 4 bit/pixel paletted or grayscale data will be returned -2 pixels/byte with the leftmost pixel in the high-order bits of the -byte, unless png_set_packing() is called. 8-bit RGB data will be stored -in RGBRGBRGB format unless png_set_filler() is called to insert filler -bytes, either before or after each RGB triplet. 16-bit RGB data will -be returned RRGGBBRRGGBB, with the most significant byte of the color -value first, unless png_set_strip_16() is called to transform it to -regular RGBRGB triplets. - -The following code transforms grayscale images of less than 8 to 8 bits, -changes paletted images to RGB, and adds a full alpha channel if there is -transparency information in a tRNS chunk. This is most useful on -grayscale images with bit depths of 2 or 4 or if there is a multiple-image -viewing application that wishes to treat all images in the same way. - - if (color_type == PNG_COLOR_TYPE_PALETTE && - bit_depth <= 8) png_set_expand(png_ptr); - - if (color_type == PNG_COLOR_TYPE_GRAY && - bit_depth < 8) png_set_expand(png_ptr); - - if (png_get_valid(png_ptr, info_ptr, - PNG_INFO_tRNS)) png_set_expand(png_ptr); - -PNG can have files with 16 bits per channel. If you only can handle -8 bits per channel, this will strip the pixels down to 8 bit. - - if (bit_depth == 16) - png_set_strip_16(png_ptr); - -The png_set_background() function tells libpng to composite images -with alpha or simple transparency against the supplied background -color. If the PNG file contains a bKGD chunk (PNG_INFO_bKGD valid), -you may use this color, or supply another color more suitable for -the current display (e.g., the background color from a web page). You -need to tell libpng whether the color is in the gamma space of the -display (PNG_BACKGROUND_GAMMA_SCREEN for colors you supply), the file -(PNG_BACKGROUND_GAMMA_FILE for colors from the bKGD chunk), or one -that is neither of these gammas (PNG_BACKGROUND_GAMMA_UNIQUE - I don't -know why anyone would use this, but it's here). - -If, for some reason, you don't need the alpha channel on an image, -and you want to remove it rather than combining it with the background -(but the image author certainly had in mind that you *would* combine -it with the background, so that's what you should probably do): - - if (color_type & PNG_COLOR_MASK_ALPHA) - png_set_strip_alpha(png_ptr); - -PNG files pack pixels of bit depths 1, 2, and 4 into bytes as small as -they can, resulting in, for example, 8 pixels per byte for 1 bit -files. This code expands to 1 pixel per byte without changing the -values of the pixels: - - if (bit_depth < 8) - png_set_packing(png_ptr); - -PNG files have possible bit depths of 1, 2, 4, 8, and 16. All pixels -stored in a PNG image have been "scaled" or "shifted" up to the next -higher possible bit depth (e.g. from 5 bits/sample in the range [0,31] to -8 bits/sample in the range [0, 255]). However, it is also possible to -convert the PNG pixel data back to the original bit depth of the image. -This call reduces the pixels back down to the original bit depth: - - png_color_16p sig_bit; - - if (png_get_sBIT(png_ptr, info_ptr, &sig_bit)) - png_set_shift(png_ptr, sig_bit); - -PNG files store 3-color pixels in red, green, blue order. This code -changes the storage of the pixels to blue, green, red: - - if (color_type == PNG_COLOR_TYPE_RGB || - color_type == PNG_COLOR_TYPE_RGB_ALPHA) - png_set_bgr(png_ptr); - -PNG files store RGB pixels packed into 3 bytes. This code expands them -into 4 bytes for windowing systems that need them in this format: - - if (bit_depth == 8 && color_type == - PNG_COLOR_TYPE_RGB) png_set_filler(png_ptr, - filler, PNG_FILLER_BEFORE); - -where "filler" is the number to fill with, and the location is -either PNG_FILLER_BEFORE or PNG_FILLER_AFTER, depending upon whether -you want the filler before the RGB or after. This transformation -does not affect images that already have full alpha channels. - -If you are reading an image with an alpha channel, and you need the -data as ARGB instead of the normal PNG format RGBA: - - if (color_type == PNG_COLOR_TYPE_RGB_ALPHA) - png_set_swap_alpha(png_ptr); - -For some uses, you may want a grayscale image to be represented as -RGB. This code will do that conversion: - - if (color_type == PNG_COLOR_TYPE_GRAY || - color_type == PNG_COLOR_TYPE_GRAY_ALPHA) - png_set_gray_to_rgb(png_ptr); - -If you have a grayscale and you are using png_set_expand() to change to -a higher bit-depth you must indicate if the supplied background gray -is supplied in the original file bit depth (need_expand = 1) or in the -expanded bit depth (need_expand = 0). Similarly, if you are reading -a paletted image, you must indicate if you have supplied the background -as a palette index that needs to be expanded (need_expand = 1). You can -also specify an RGB triplet that isn't in the palette when setting your -background for a paletted image. - - png_color_16 my_background; - png_color_16p image_background; - - if (png_get_bKGD(png_ptr, info_ptr, - &image_background)) - png_set_background(png_ptr, image_background), - PNG_BACKGROUND_GAMMA_FILE, 1, 1.0); - else - png_set_background(png_ptr, &my_background, - PNG_BACKGROUND_GAMMA_SCREEN, 0, 1.0); - -To properly display PNG images on any kind of system, the application needs -to know what the display gamma is. Ideally, the user will know this, and -the application will allow them to set it. One method of allowing the user -to set the display gamma separately for each system is to check for the -DISPLAY_GAMMA and VIEWING_GAMMA environment variables or for a SCREEN_GAMMA -environment variable, which will hopefully be correctly set. - -Note that display_gamma is the gamma of your display, while screen_gamma is -the overall gamma correction required to produce pleasing results, -which depends on the lighting conditions in the surrounding environment. -Screen_gamma is display_gamma/viewing_gamma, where viewing_gamma is -the amount of additional gamma correction needed to compensate for -a (viewing_gamma=1.25) environment. In a dim or brightly lit room, no -compensation other than the display_gamma is needed (viewing_gamma=1.0). - - if (/* We have a user-defined screen - gamma value */) - { - screen_gamma = user_defined_screen_gamma; - } - /* One way that applications can share the same - screen gamma value */ - else if ((gamma_str = getenv("SCREEN_GAMMA")) - != NULL) - { - screen_gamma = atof(gamma_str); - } - /* If we don't have another value */ - else - { - screen_gamma = 2.2; /* A good guess for a - PC monitor in a bright office or a dim room */ - screen_gamma = 2.0; /* A good guess for a - PC monitor in a dark room */ - screen_gamma = 1.7 or 1.0; /* A good - guess for Mac systems */ - } - -The png_set_gamma() function handles gamma transformations of the data. -Pass both the file gamma and the current screen_gamma. If the file does -not have a gamma value, you can pass one anyway if you have an idea what -it is (usually 0.50 is a good guess for GIF images on PCs). Note -that file gammas are inverted from screen gammas. See the discussions -on gamma in the PNG specification for an excellent description of what -gamma is, and why all applications should support it. It is strongly -recommended that PNG viewers support gamma correction. - - if (png_get_gAMA(png_ptr, info_ptr, &gamma)) - png_set_gamma(png_ptr, screen_gamma, gamma); - else - png_set_gamma(png_ptr, screen_gamma, 0.50); - -If you need to reduce an RGB file to a paletted file, or if a paletted -file has more entries then will fit on your screen, png_set_dither() -will do that. Note that this is a simple match dither that merely -finds the closest color available. This should work fairly well with -optimized palettes, and fairly badly with linear color cubes. If you -pass a palette that is larger then maximum_colors, the file will -reduce the number of colors in the palette so it will fit into -maximum_colors. If there is a histogram, it will use it to make -more intelligent choices when reducing the palette. If there is no -histogram, it may not do as good a job. - - if (color_type & PNG_COLOR_MASK_COLOR) - { - if (png_get_valid(png_ptr, info_ptr, - PNG_INFO_PLTE)) - { - png_color_16p histogram; - - png_get_hIST(png_ptr, info_ptr, - &histogram); - png_set_dither(png_ptr, palette, num_palette, - max_screen_colors, histogram, 1); - } - else - { - png_color std_color_cube[MAX_SCREEN_COLORS] = - { ... colors ... }; - - png_set_dither(png_ptr, std_color_cube, - MAX_SCREEN_COLORS, MAX_SCREEN_COLORS, - NULL,0); - } - } - -PNG files describe monochrome as black being zero and white being one. -The following code will reverse this (make black be one and white be -zero): - - if (bit_depth == 1 && color_type == PNG_COLOR_GRAY) - png_set_invert_mono(png_ptr); - -PNG files store 16 bit pixels in network byte order (big-endian, -ie. most significant bits first). This code changes the storage to the -other way (little-endian, i.e. least significant bits first, the -way PCs store them): - - if (bit_depth == 16) - png_set_swap(png_ptr); - -If you are using packed-pixel images (1, 2, or 4 bits/pixel), and you -need to change the order the pixels are packed into bytes, you can use: - - if (bit_depth < 8) - png_set_packswap(png_ptr); - -The last thing to handle is interlacing; this is covered in detail below, -but you must call the function here if you want libpng to handle expansion -of the interlaced image. - - number_of_passes = png_set_interlace_handling(png_ptr); - -After setting the transformations, libpng can update your png_info -structure to reflect any transformations you've requested with this -call. This is most useful to update the info structure's rowbytes -field so you can use it to allocate your image memory. This function -will also update your palette with the correct screen_gamma and -background if these have been given with the calls above. - - png_read_update_info(png_ptr, info_ptr); - -After you call png_read_update_info(), you can allocate any -memory you need to hold the image. The row data is simply -raw byte data for all forms of images. As the actual allocation -varies among applications, no example will be given. If you -are allocating one large chunk, you will need to build an -array of pointers to each row, as it will be needed for some -of the functions below. - -After you've allocated memory, you can read the image data. -The simplest way to do this is in one function call. If you are -allocating enough memory to hold the whole image, you can just -call png_read_image() and libpng will read in all the image data -and put it in the memory area supplied. You will need to pass in -an array of pointers to each row. - -This function automatically handles interlacing, so you don't need -to call png_set_interlace_handling() or call this function multiple -times, or any of that other stuff necessary with png_read_rows(). - - png_read_image(png_ptr, row_pointers); - -where row_pointers is: - - png_bytep row_pointers[height]; - -You can point to void or char or whatever you use for pixels. - -If you don't want to read in the whole image at once, you can -use png_read_rows() instead. If there is no interlacing (check -interlace_type == PNG_INTERLACE_NONE), this is simple: - - png_read_rows(png_ptr, row_pointers, NULL, - number_of_rows); - -where row_pointers is the same as in the png_read_image() call. - -If you are doing this just one row at a time, you can do this with -row_pointers: - - png_bytep row_pointers = row; - png_read_row(png_ptr, &row_pointers, NULL); - -If the file is interlaced (info_ptr->interlace_type != 0), things get -somewhat harder. The only current (PNG Specification version 1.0) -interlacing type for PNG is (interlace_type == PNG_INTERLACE_ADAM7) -is a somewhat complicated 2D interlace scheme, known as Adam7, that -breaks down an image into seven smaller images of varying size, based -on an 8x8 grid. - -libpng can fill out those images or it can give them to you "as is". -If you want them filled out, there are two ways to do that. The one -mentioned in the PNG specification is to expand each pixel to cover -those pixels that have not been read yet (the "rectangle" method). -This results in a blocky image for the first pass, which gradually -smooths out as more pixels are read. The other method is the "sparkle" -method, where pixels are drawn only in their final locations, with the -rest of the image remaining whatever colors they were initialized to -before the start of the read. The first method usually looks better, -but tends to be slower, as there are more pixels to put in the rows. - -If you don't want libpng to handle the interlacing details, just call -png_read_rows() seven times to read in all seven images. Each of the -images is a valid image by itself, or they can all be combined on an -8x8 grid to form a single image (although if you intend to combine them -you would be far better off using the libpng interlace handling). - -The first pass will return an image 1/8 as wide as the entire image -(every 8th column starting in column 0) and 1/8 as high as the original -(every 8th row starting in row 0), the second will be 1/8 as wide -(starting in column 4) and 1/8 as high (also starting in row 0). The -third pass will be 1/4 as wide (every 4th pixel starting in column 0) and -1/8 as high (every 8th row starting in row 4), and the fourth pass will -be 1/4 as wide and 1/4 as high (every 4th column starting in column 2, -and every 4th row starting in row 0). The fifth pass will return an -image 1/2 as wide, and 1/4 as high (starting at column 0 and row 2), -while the sixth pass will be 1/2 as wide and 1/2 as high as the original -(starting in column 1 and row 0). The seventh and final pass will be as -wide as the original, and 1/2 as high, containing all of the odd -numbered scanlines. Phew! - -If you want libpng to expand the images, call this before calling -png_start_read_image() or png_read_update_info(): - - if (interlace_type == PNG_INTERLACE_ADAM7) - number_of_passes - = png_set_interlace_handling(png_ptr); - -This will return the number of passes needed. Currently, this -is seven, but may change if another interlace type is added. -This function can be called even if the file is not interlaced, -where it will return one pass. - -If you are not going to display the image after each pass, but are -going to wait until the entire image is read in, use the sparkle -effect. This effect is faster and the end result of either method -is exactly the same. If you are planning on displaying the image -after each pass, the "rectangle" effect is generally considered the -better looking one. - -If you only want the "sparkle" effect, just call png_read_rows() as -normal, with the third parameter NULL. Make sure you make pass over -the image number_of_passes times, and you don't change the data in the -rows between calls. You can change the locations of the data, just -not the data. Each pass only writes the pixels appropriate for that -pass, and assumes the data from previous passes is still valid. - - png_read_rows(png_ptr, row_pointers, NULL, - number_of_rows); - -If you only want the first effect (the rectangles), do the same as -before except pass the row buffer in the third parameter, and leave -the second parameter NULL. - - png_read_rows(png_ptr, NULL, row_pointers, - number_of_rows); - -After you are finished reading the image, you can finish reading -the file. If you are interested in comments or time, which may be -stored either before or after the image data, you should pass the -separate png_info struct if you want to keep the comments from -before and after the image separate. If you are not interested, you -can pass NULL. - - png_read_end(png_ptr, end_info); - -When you are done, you can free all memory allocated by libpng like this: - - png_destroy_read_struct(&png_ptr, &info_ptr, - &end_info); - -For a more compact example of reading a PNG image, see the file example.c. - - -Reading PNG files progressively: - -The progressive reader is slightly different then the non-progressive -reader. Instead of calling png_read_info(), png_read_rows(), and -png_read_end(), you make one call to png_process_data(), which calls -callbacks when it has the info, a row, or the end of the image. You -set up these callbacks with png_set_progressive_read_fn(). You don't -have to worry about the input/output functions of libpng, as you are -giving the library the data directly in png_process_data(). I will -assume that you have read the section on reading PNG files above, -so I will only highlight the differences (although I will show -all of the code). - -png_structp png_ptr; -png_infop info_ptr; - - /* An example code fragment of how you would - initialize the progressive reader in your - application. */ - int - initialize_png_reader() - { - png_ptr = png_create_read_struct - (PNG_LIBPNG_VER_STRING, (void *)user_error_ptr, - user_error_fn, user_warning_fn); - if (!png_ptr) - return -1; - info_ptr = png_create_info_struct(png_ptr); - if (!info_ptr) - { - png_destroy_read_struct(&png_ptr, (png_infopp)NULL, - (png_infopp)NULL); - return -1; - } - - if (setjmp(png_ptr->jmpbuf)) - { - png_destroy_read_struct(&png_ptr, &info_ptr, - (png_infopp)NULL); - return -1; - } - - /* This one's new. You can provide functions - to be called when the header info is valid, - when each row is completed, and when the image - is finished. If you aren't using all functions, - you can specify a NULL parameter. You can use - any struct as the user_ptr (cast to a void pointer - for the function call), and retrieve the pointer - from inside the callbacks using the function - - png_get_progressive_ptr(png_ptr); - - which will return a void pointer, which you have - to cast appropriately. - */ - png_set_progressive_read_fn(png_ptr, (void *)user_ptr, - info_callback, row_callback, end_callback); - - return 0; - } - - /* A code fragment that you call as you receive blocks - of data */ - int - process_data(png_bytep buffer, png_uint_32 length) - { - if (setjmp(png_ptr->jmpbuf)) - { - png_destroy_read_struct(&png_ptr, &info_ptr, - (png_infopp)NULL); - return -1; - } - - /* This one's new also. Simply give it a chunk - of data from the file stream (in order, of - course). On machines with segmented memory - models machines, don't give it any more than - 64K. The library seems to run fine with sizes - of 4K. Although you can give it much less if - necessary (I assume you can give it chunks of - 1 byte, I haven't tried less then 256 bytes - yet). When this function returns, you may - want to display any rows that were generated - in the row callback if you don't already do - so there. - */ - png_process_data(png_ptr, info_ptr, buffer, length); - return 0; - } - - /* This function is called (as set by - png_set_progressive_fn() above) when enough data - has been supplied so all of the header has been - read. - */ - void - info_callback(png_structp png_ptr, png_infop info) - { - /* Do any setup here, including setting any of - the transformations mentioned in the Reading - PNG files section. For now, you _must_ call - either png_start_read_image() or - png_read_update_info() after all the - transformations are set (even if you don't set - any). You may start getting rows before - png_process_data() returns, so this is your - last chance to prepare for that. - */ - } - - /* This function is called when each row of image - data is complete */ - void - row_callback(png_structp png_ptr, png_bytep new_row, - png_uint_32 row_num, int pass) - { - /* If the image is interlaced, and you turned - on the interlace handler, this function will - be called for every row in every pass. Some - of these rows will not be changed from the - previous pass. When the row is not changed, - the new_row variable will be NULL. The rows - and passes are called in order, so you don't - really need the row_num and pass, but I'm - supplying them because it may make your life - easier. - - For the non-NULL rows of interlaced images, - you must call png_progressive_combine_row() - passing in the row and the old row. You can - call this function for NULL rows (it will just - return) and for non-interlaced images (it just - does the memcpy for you) if it will make the - code easier. Thus, you can just do this for - all cases: - */ - - png_progressive_combine_row(png_ptr, old_row, - new_row); - - /* where old_row is what was displayed for - previous rows. Note that the first pass - (pass == 0, really) will completely cover - the old row, so the rows do not have to be - initialized. After the first pass (and only - for interlaced images), you will have to pass - the current row, and the function will combine - the old row and the new row. - */ - } - - void - end_callback(png_structp png_ptr, png_infop info) - { - /* This function is called after the whole image - has been read, including any chunks after the - image (up to and including the IEND). You - will usually have the same info chunk as you - had in the header, although some data may have - been added to the comments and time fields. - - Most people won't do much here, perhaps setting - a flag that marks the image as finished. - */ - } - -.SH IV. Writing - -Much of this is very similar to reading. However, everything of -importance is repeated here, so you won't have to constantly look -back up in the reading section to understand writing. - -You will want to do the I/O initialization before you get into libpng, -so if it doesn't work, you don't have anything to undo. If you are not -using the standard I/O functions, you will need to replace them with -custom writing functions. See the discussion under Customizing libpng. - - FILE *fp = fopen(file_name, "wb"); - if (!fp) - { - return; - } - -Next, png_struct and png_info need to be allocated and initialized. -As these can be both relatively large, you may not want to store these -on the stack, unless you have stack space to spare. Of course, you -will want to check if they return NULL. If you are also reading, -you won't want to name your read structure and your write structure -both "png_ptr"; you can call them anything you like, such as -"read_ptr" and "write_ptr". Look at pngtest.c, for example. - - png_structp png_ptr = png_create_write_struct - (PNG_LIBPNG_VER_STRING, (void *)user_error_ptr, - user_error_fn, user_warning_fn); - if (!png_ptr) - return; - - png_infop info_ptr = png_create_info_struct(png_ptr); - if (!info_ptr) - { - png_destroy_write_struct(&png_ptr, - (png_infopp)NULL); - return; - } - -After you have these structures, you will need to set up the -error handling. When libpng encounters an error, it expects to -longjmp() back to your routine. Therefore, you will need to call -setjmp and pass the jmpbuf field of your png_struct. If you -write the file from different routines, you will need to update -the jmpbuf field every time you enter a new routine that will -call a png_ function. See your documentation of setjmp/longjmp -for your compiler for more information on setjmp/longjmp. See -the discussion on libpng error handling in the Customizing Libpng -section below for more information on the libpng error handling. - - if (setjmp(png_ptr->jmpbuf)) - { - png_destroy_write_struct(&png_ptr, &info_ptr); - fclose(fp); - return; - } - -Now you need to set up the output code. The default for libpng is to -use the C function fwrite(). If you use this, you will need to pass a -valid FILE * in the function png_init_io(). Be sure that the file is -opened in binary mode. Again, if you wish to handle writing data in -another way, see the discussion on libpng I/O handling in the Customizing -Libpng section below. - - png_init_io(png_ptr, fp); - -At this point, you can set up a callback function that will be -called after each row has been written, which you can use to control -a progress meter or the like. It's demonstrated in pngtest.c. -You must supply a function - - void write_row_callback(png_ptr, png_uint_32 row, int pass); - { - /* put your code here */ - } - -(You can give it another name that you like instead of "write_row_callback") - -To inform libpng about your function, use - - png_set_write_status_fn(png_ptr, write_row_callback); - -You now have the option of modifying how the compression library will -run. The following functions are mainly for testing, but may be useful -in some cases, like if you need to write PNG files extremely fast and -are willing to give up some compression, or if you want to get the -maximum possible compression at the expense of slower writing. If you -have no special needs in this area, let the library do what it wants by -not calling this function at all, as it has been tuned to deliver a good -speed/compression ratio. The second parameter to png_set_filter() is -the filter method, for which the only valid value is '0' (as of the -October 1996 PNG specification, version 1.0). The third parameter is a -flag that indicates -which filter type(s) are to be tested for each scanline. See the -Compression Library for details on the specific filter types. - - - /* turn on or off filtering, and/or choose - specific filters */ - png_set_filter(png_ptr, 0, - PNG_FILTER_NONE | PNG_FILTER_SUB | - PNG_FILTER_PAETH); - -The png_set_compression_???() functions interface to the zlib compression -library, and should mostly be ignored unless you really know what you are -doing. The only generally useful call is png_set_compression_level() -which changes how much time zlib spends on trying to compress the image -data. See the Compression Library for details on the compression levels. - - /* set the zlib compression level */ - png_set_compression_level(png_ptr, - Z_BEST_COMPRESSION); - - /* set other zlib parameters */ - png_set_compression_mem_level(png_ptr, 8); - png_set_compression_strategy(png_ptr, - Z_DEFAULT_STRATEGY); - png_set_compression_window_bits(png_ptr, 15); - png_set_compression_method(png_ptr, 8); - -You now need to fill in the png_info structure with all the data you -wish to write before the actual image. Note that the only thing you -are allowed to write after the image is the text chunks and the time -chunk (as of PNG Specification 1.0, anyway). See png_write_end() and -the latest PNG specification for more information on that. If you -wish to write them before the image, fill them in now, and flag that -data as being valid. If you want to wait until after the data, don't -fill them until png_write_end(). For all the fields in png_info and -their data types, see png.h. For explanations of what the fields -contain, see the PNG specification. - -Some of the more important parts of the png_info are: - - png_set_IHDR(png_ptr, info_ptr, width, height, - bit_depth, color_type, interlace_type, - compression_type, filter_type) - width - holds the width of the image - in pixels (up to 2^31). - height - holds the height of the image - in pixels (up to 2^31). - bit_depth - holds the bit depth of one of the - image channels. - (valid values are 1, 2, 4, 8, 16 - and depend also on the - color_type. See also significant - bits (sBIT) below). - color_type - describes which color/alpha - channels are present. - PNG_COLOR_TYPE_GRAY - (bit depths 1, 2, 4, 8, 16) - PNG_COLOR_TYPE_GRAY_ALPHA - (bit depths 8, 16) - PNG_COLOR_TYPE_PALETTE - (bit depths 1, 2, 4, 8) - PNG_COLOR_TYPE_RGB - (bit_depths 8, 16) - PNG_COLOR_TYPE_RGB_ALPHA - (bit_depths 8, 16) - - PNG_COLOR_MASK_PALETTE - PNG_COLOR_MASK_COLOR - PNG_COLOR_MASK_ALPHA - - interlace_type - PNG_INTERLACE_NONE or - PNG_INTERLACE_ADAM7 - compression_type - (must be - PNG_COMPRESSION_TYPE_DEFAULT) - filter_type - (must be PNG_FILTER_TYPE_DEFAULT) - - png_set_PLTE(png_ptr, info_ptr, palette, - num_palette); - palette - the palette for the file - (array of png_color) - num_palette - number of entries in the palette - - png_set_gAMA(png_ptr, info_ptr, gamma); - gamma - the gamma the image was created - at (PNG_INFO_gAMA) - - png_set_sRGB(png_ptr, info_ptr, srgb_intent); - srgb_intent - the rendering intent - (PNG_INFO_sRGB) The presence of - the sRGB chunk means that the pixel - data is in the sRGB color space. - This chunk also implies specific - values of gAMA and cHRM. Rendering - intent is the CSS-1 property that - has been defined by the International - Color Consortium - (http://www.color.org). - It can be one of - PNG_SRGB_INTENT_SATURATION, - PNG_SRGB_INTENT_PERCEPTUAL, - PNG_SRGB_INTENT_ABSOLUTE, or - PNG_SRGB_INTENT_RELATIVE. - - - png_set_sRGB_gAMA_and_cHRM(png_ptr, info_ptr, - srgb_intent); - srgb_intent - the rendering intent - (PNG_INFO_sRGB) The presence of the - sRGB chunk means that the pixel - data is in the sRGB color space. - This function also causes gAMA and - cHRM chunks with the specific values - that are consistent with sRGB to be - written. - - png_set_sBIT(png_ptr, info_ptr, sig_bit); - sig_bit - the number of significant bits for - (PNG_INFO_sBIT) each of the gray, red, - green, and blue channels, whichever are - appropriate for the given color type - (png_color_16) - - png_set_tRNS(png_ptr, info_ptr, trans, num_trans, - trans_values); - trans - array of transparent entries for - palette (PNG_INFO_tRNS) - trans_values - transparent pixel for non-paletted - images (PNG_INFO_tRNS) - num_trans - number of transparent entries - (PNG_INFO_tRNS) - - png_set_hIST(png_ptr, info_ptr, hist); - (PNG_INFO_hIST) - hist - histogram of palette (array of - png_color_16) - - png_set_tIME(png_ptr, info_ptr, mod_time); - mod_time - time image was last modified - (PNG_VALID_tIME) - - png_set_bKGD(png_ptr, info_ptr, background); - background - background color (PNG_VALID_bKGD) - - png_set_text(png_ptr, info_ptr, text_ptr, num_text); - text_ptr - array of png_text holding image - comments - text_ptr[i]->key - keyword for comment. - text_ptr[i]->text - text comments for current - keyword. - text_ptr[i]->compression - type of compression used - on "text" PNG_TEXT_COMPRESSION_NONE or - PNG_TEXT_COMPRESSION_zTXt - num_text - number of comments in text_ptr - - png_set_oFFs(png_ptr, info_ptr, offset_x, offset_y, - unit_type); - offset_x - positive offset from the left - edge of the screen - offset_y - positive offset from the top - edge of the screen - unit_type - PNG_OFFSET_PIXEL, PNG_OFFSET_MICROMETER - - png_set_pHYs(png_ptr, info_ptr, res_x, res_y, - unit_type); - res_x - pixels/unit physical resolution - in x direction - res_y - pixels/unit physical resolution - in y direction - unit_type - PNG_RESOLUTION_UNKNOWN, - PNG_RESOLUTION_METER - -In PNG files, the alpha channel in an image is the level of opacity. -If your data is supplied as a level of transparency, you can invert the -alpha channel before you write it, so that 0 is fully transparent and 255 -(in 8-bit or paletted images) or 65535 (in 16-bit images) is fully opaque, -with - - png_set_invert_alpha(png_ptr); - -This must appear here instead of later with the other transformations -because in the case of paletted images the tRNS chunk data has to -be inverted before the tRNS chunk is written. If your image is not a -paletted image, the tRNS data (which in such cases represents a single -color to be rendered as transparent) won't be changed. - -A quick word about text and num_text. text is an array of png_text -structures. num_text is the number of valid structures in the array. -If you want, you can use max_text to hold the size of the array, but -libpng ignores it for writing (it does use it for reading). Each -png_text structure holds a keyword-text value, and a compression type. -The compression types have the same valid numbers as the compression -types of the image data. Currently, the only valid number is zero. -However, you can store text either compressed or uncompressed, unlike -images which always have to be compressed. So if you don't want the -text compressed, set the compression type to PNG_TEXT_COMPRESSION_NONE. -Until text gets around 1000 bytes, it is not worth compressing it. -After the text has been written out to the file, the compression type -is set to PNG_TEXT_COMPRESSION_NONE_WR or PNG_TEXT_COMPRESSION_zTXt_WR, -so that it isn't written out again at the end (in case you are calling -png_write_end() with the same struct. - -The keywords that are given in the PNG Specification are: - - Title Short (one line) title or - caption for image - Author Name of image's creator - Description Description of image (possibly long) - Copyright Copyright notice - Creation Time Time of original image creation - (usually RFC 1123 format, see below) - Software Software used to create the image - Disclaimer Legal disclaimer - Warning Warning of nature of content - Source Device used to create the image - Comment Miscellaneous comment; conversion - from other image format - -The keyword-text pairs work like this. Keywords should be short -simple descriptions of what the comment is about. Some typical -keywords are found in the PNG specification, as is some recommendations -on keywords. You can repeat keywords in a file. You can even write -some text before the image and some after. For example, you may want -to put a description of the image before the image, but leave the -disclaimer until after, so viewers working over modem connections -don't have to wait for the disclaimer to go over the modem before -they start seeing the image. Finally, keywords should be full -words, not abbreviations. Keywords and text are in the ISO 8859-1 -(Latin-1) character set (a superset of regular ASCII) and can not -contain NUL characters, and should not contain control or other -unprintable characters. To make the comments widely readable, stick -with basic ASCII, and avoid machine specific character set extensions -like the IBM-PC character set. The keyword must be present, but -you can leave off the text string on non-compressed pairs. -Compressed pairs must have a text string, as only the text string -is compressed anyway, so the compression would be meaningless. - -PNG supports modification time via the png_time structure. Two -conversion routines are proved, png_convert_from_time_t() for -time_t and png_convert_from_struct_tm() for struct tm. The -time_t routine uses gmtime(). You don't have to use either of -these, but if you wish to fill in the png_time structure directly, -you should provide the time in universal time (GMT) if possible -instead of your local time. Note that the year number is the full -year (e.g. 1998, rather than 98 - PNG is year 2000 compliant!), and -that months start with 1. - -If you want to store the time of the original image creation, you should -use a plain tEXt chunk with the "Creation Time" keyword. This is -necessary because the "creation time" of a PNG image is somewhat vague, -depending on whether you mean the PNG file, the time the image was -created in a non-PNG format, a still photo from which the image was -scanned, or possibly the subject matter itself. In order to facilitate -machine-readable dates, it is recommended that the "Creation Time" -tEXt chunk use RFC 1123 format dates (e.g. 22 May 1997 18:07:10 GMT"), -although this isn't a requirement. Unlike the tIME chunk, the -"Creation Time" tEXt chunk is not expected to be automatically changed -by the software. To facilitate the use of RFC 1123 dates, a function -png_convert_to_rfc1123(png_timep) is provided to convert from PNG -time to an RFC 1123 format string. - -You are now ready to write all the file information up to the actual -image data. You do this with a call to png_write_info(). - - png_write_info(png_ptr, info_ptr); - -After you've written the file information, you can set up the library -to handle any special transformations of the image data. The various -ways to transform the data will be described in the order that they -should occur. This is important, as some of these change the color -type and/or bit depth of the data, and some others only work on -certain color types and bit depths. Even though each transformation -checks to see if it has data that it can do something with, you should -make sure to only enable a transformation if it will be valid for the -data. For example, don't swap red and blue on grayscale data. - -PNG files store RGB pixels packed into 3 bytes. This code tells -the library to expect input data with 4 bytes per pixel - - png_set_filler(png_ptr, 0, PNG_FILLER_BEFORE); - -where the 0 is the value that will be put in the 4th byte, and the -location is either PNG_FILLER_BEFORE or PNG_FILLER_AFTER, depending -upon whether the filler byte is stored XRGB or RGBX. - -PNG files pack pixels of bit depths 1, 2, and 4 into bytes as small as -they can, resulting in, for example, 8 pixels per byte for 1 bit files. -If the data is supplied at 1 pixel per byte, use this code, which will -correctly pack the pixels into a single byte: - - png_set_packing(png_ptr); - -PNG files reduce possible bit depths to 1, 2, 4, 8, and 16. If your -data is of another bit depth, you can write an sBIT chunk into the -file so that decoders can get the original data if desired. - - /* Set the true bit depth of the image data */ - if (color_type & PNG_COLOR_MASK_COLOR) - { - sig_bit.red = true_bit_depth; - sig_bit.green = true_bit_depth; - sig_bit.blue = true_bit_depth; - } - else - { - sig_bit.gray = true_bit_depth; - } - if (color_type & PNG_COLOR_MASK_ALPHA) - { - sig_bit.alpha = true_bit_depth; - } - - png_set_sBIT(png_ptr, info_ptr, &sig_bit); - -If the data is stored in the row buffer in a bit depth other than -one supported by PNG (e.g. 3 bit data in the range 0-7 for a 4-bit PNG), -this will scale the values to appear to be the correct bit depth as -is required by PNG. - - png_set_shift(png_ptr, &sig_bit); - -PNG files store 16 bit pixels in network byte order (big-endian, -ie. most significant bits first). This code would be used if they are -supplied the other way (little-endian, i.e. least significant bits -first, the way PCs store them): - - if (bit_depth > 8) - png_set_swap(png_ptr); - -If you are using packed-pixel images (1, 2, or 4 bits/pixel), and you -need to change the order the pixels are packed into bytes, you can use: - - if (bit_depth < 8) - png_set_packswap(png_ptr); - -PNG files store 3 color pixels in red, green, blue order. This code -would be used if they are supplied as blue, green, red: - - png_set_bgr(png_ptr); - -PNG files describe monochrome as black being zero and white being -one. This code would be used if the pixels are supplied with this reversed -(black being one and white being zero): - - png_set_invert_mono(png_ptr); - -Finally, you can write your own transformation function if none of -the existing ones meets your needs. This is done by setting a callback -with - - png_set_write_user_transform_fn(png_ptr, - write_transform_fn); - -You must supply the function - - void write_transform_fn(png_ptr ptr, row_info_ptr - row_info, png_bytep data) - -See pngtest.c for a working example. Your function will be called -before any of the other transformations have been processed. - -It is possible to have libpng flush any pending output, either manually, -or automatically after a certain number of lines have been written. To -flush the output stream a single time call: - - png_write_flush(png_ptr); - -and to have libpng flush the output stream periodically after a certain -number of scanlines have been written, call: - - png_set_flush(png_ptr, nrows); - -Note that the distance between rows is from the last time png_write_flush() -was called, or the first row of the image if it has never been called. -So if you write 50 lines, and then png_set_flush 25, it will flush the -output on the next scanline, and every 25 lines thereafter, unless -png_write_flush() is called before 25 more lines have been written. -If nrows is too small (less than about 10 lines for a 640 pixel wide -RGB image) the image compression may decrease noticeably (although this -may be acceptable for real-time applications). Infrequent flushing will -only degrade the compression performance by a few percent over images -that do not use flushing. - -That's it for the transformations. Now you can write the image data. -The simplest way to do this is in one function call. If have the -whole image in memory, you can just call png_write_image() and libpng -will write the image. You will need to pass in an array of pointers to -each row. This function automatically handles interlacing, so you don't -need to call png_set_interlace_handling() or call this function multiple -times, or any of that other stuff necessary with png_write_rows(). - - png_write_image(png_ptr, row_pointers); - -where row_pointers is: - - png_bytef *row_pointers[height]; - -You can point to void or char or whatever you use for pixels. - -If you can't want to write the whole image at once, you can -use png_write_rows() instead. If the file is not interlaced, -this is simple: - - png_write_rows(png_ptr, row_pointers, - number_of_rows); - -row_pointers is the same as in the png_write_image() call. - -If you are just writing one row at a time, you can do this with -row_pointers: - - png_bytep row_pointer = row; - - png_write_row(png_ptr, &row_pointer); - -When the file is interlaced, things can get a good deal more -complicated. The only currently (as of February 1998 -- PNG Specification -version 1.0, dated October 1996) defined interlacing scheme for PNG files -is the "Adam7" interlace scheme, that breaks down an -image into seven smaller images of varying size. libpng will build -these images for you, or you can do them yourself. If you want to -build them yourself, see the PNG specification for details of which -pixels to write when. - -If you don't want libpng to handle the interlacing details, just -use png_set_interlace_handling() and call png_write_rows() the -correct number of times to write all seven sub-images. - -If you want libpng to build the sub-images, call this before you start -writing any rows: - - number_of_passes = - png_set_interlace_handling(png_ptr); - -This will return the number of passes needed. Currently, this -is seven, but may change if another interlace type is added. - -Then write the complete image number_of_passes times. - - png_write_rows(png_ptr, row_pointers, - number_of_rows); - -As some of these rows are not used, and thus return immediately, -you may want to read about interlacing in the PNG specification, -and only update the rows that are actually used. - -After you are finished writing the image, you should finish writing -the file. If you are interested in writing comments or time, you should -pass an appropriately filled png_info pointer. If you are not interested, -you can pass NULL. - - png_write_end(png_ptr, info_ptr); - -When you are done, you can free all memory used by libpng like this: - - png_destroy_write_struct(&png_ptr, &info_ptr); - -You must free any data you allocated for info_ptr, such as comments, -palette, or histogram, before the call to png_destroy_write_struct(); - -For a more compact example of writing a PNG image, see the file example.c. - - -.SH V. Modifying/Customizing libpng: - -There are two issues here. The first is changing how libpng does -standard things like memory allocation, input/output, and error handling. -The second deals with more complicated things like adding new chunks, -adding new transformations, and generally changing how libpng works. - -All of the memory allocation, input/output, and error handling in libpng -goes through callbacks which are user settable. The default routines are -in pngmem.c, pngrio.c, pngwio.c, and pngerror.c respectively. To change -these functions, call the appropriate png_set_???_fn() function. - -Memory allocation is done through the functions png_large_malloc(), -png_malloc(), png_realloc(), png_large_free(), and png_free(). These -currently just call the standard C functions. The large functions must -handle exactly 64K, but they don't have to handle more than that. If -your pointers can't access more then 64K at a time, you will want to set -MAXSEG_64K in zlib.h. Since it is unlikely that the method of handling -memory allocation on a platform will change between applications, these -functions must be modified in the library at compile time. - -Input/Output in libpng is done through png_read() and png_write(), -which currently just call fread() and fwrite(). The FILE * is stored in -png_struct and is initialized via png_init_io(). If you wish to change -the method of I/O, the library supplies callbacks that you can set -through the function png_set_read_fn() and png_set_write_fn() at run -time, instead of calling the png_init_io() function. These functions -also provide a void pointer that can be retrieved via the function -png_get_io_ptr(). For example: - - png_set_read_fn(png_structp png_ptr, - voidp io_ptr, png_rw_ptr read_data_fn) - - png_set_write_fn(png_structp png_ptr, - voidp io_ptr, png_rw_ptr write_data_fn, - png_flush_ptr output_flush_fn); - - voidp io_ptr = png_get_io_ptr(png_ptr); - -The replacement I/O functions should have prototypes as follows: - - void user_read_data(png_structp png_ptr, - png_bytep data, png_uint_32 length); - void user_write_data(png_structp png_ptr, - png_bytep data, png_uint_32 length); - void user_flush_data(png_structp png_ptr); - -Supplying NULL for the read, write, or flush functions sets them back -to using the default C stream functions. It is an error to read from -a write stream, and vice versa. - -Error handling in libpng is done through png_error() and png_warning(). -Errors handled through png_error() are fatal, meaning that png_error() -should never return to its caller. Currently, this is handled via -setjmp() and longjmp(), but you could change this to do things like -exit() if you should wish. On non-fatal errors, png_warning() is called -to print a warning message, and then control returns to the calling code. -By default png_error() and png_warning() print a message on stderr via -fprintf() unless the library is compiled with PNG_NO_STDIO defined. If -you wish to change the behavior of the error functions, you will need to -set up your own message callbacks. These functions are normally supplied -at the time that the png_struct is created. It is also possible to change -these functions after png_create_???_struct() has been called by calling: - - png_set_error_fn(png_structp png_ptr, - png_voidp error_ptr, png_error_ptr error_fn, - png_error_ptr warning_fn); - - png_voidp error_ptr = png_get_error_ptr(png_ptr); - -If NULL is supplied for either error_fn or warning_fn, then the libpng -default function will be used, calling fprintf() and/or longjmp() if a -problem is encountered. The replacement error functions should have -parameters as follows: - - void user_error_fn(png_structp png_ptr, - png_const_charp error_msg); - void user_warning_fn(png_structp png_ptr, - png_const_charp warning_msg); - -The motivation behind using setjmp() and longjmp() is the C++ throw and -catch exception handling methods. This makes the code much easier to write, -as there is no need to check every return code of every function call. -However, there are some uncertainties about the status of local variables -after a longjmp, so the user may want to be careful about doing anything after -setjmp returns non-zero besides returning itself. Consult your compiler -documentation for more details. - -If you need to read or write custom chunks, you will need to get deeper -into the libpng code, as a mechanism has not yet been supplied for user -callbacks with custom chunks. First, read the PNG specification, and have -a first level of understanding of how it works. Pay particular attention -to the sections that describe chunk names, and look at how other chunks -were designed, so you can do things similarly. Second, check out the -sections of libpng that read and write chunks. Try to find a chunk that -is similar to yours and copy off of it. More details can be found in the -comments inside the code. A way of handling unknown chunks in a generic -method, potentially via callback functions, would be best. - -If you wish to write your own transformation for the data, look through -the part of the code that does the transformations, and check out some of -the simpler ones to get an idea of how they work. Try to find a similar -transformation to the one you want to add and copy off of it. More details -can be found in the comments inside the code itself. - -Configuring for 16 bit platforms: - -You may need to change the png_large_malloc() and png_large_free() -routines in pngmem.c, as these are required to allocate 64K, although -there is already support for many of the common DOS compilers. Also, -you will want to look into zconf.h to tell zlib (and thus libpng) that -it cannot allocate more then 64K at a time. Even if you can, the memory -won't be accessible. So limit zlib and libpng to 64K by defining MAXSEG_64K. - -Configuring for DOS: - -For DOS users which only have access to the lower 640K, you will -have to limit zlib's memory usage via a png_set_compression_mem_level() -call. See zlib.h or zconf.h in the zlib library for more information. - -Configuring for Medium Model: - -Libpng's support for medium model has been tested on most of the popular -compilers. Make sure MAXSEG_64K gets defined, USE_FAR_KEYWORD gets -defined, and FAR gets defined to far in pngconf.h, and you should be -all set. Everything in the library (except for zlib's structure) is -expecting far data. You must use the typedefs with the p or pp on -the end for pointers (or at least look at them and be careful). Make -note that the row's of data are defined as png_bytepp which is a -unsigned char far * far *. - -Configuring for gui/windowing platforms: - -You will need to write new error and warning functions that use the GUI -interface, as described previously, and set them to be the error and -warning functions at the time that png_create_???_struct() is called, -in order to have them available during the structure initialization. -They can be changed later via png_set_error_fn(). On some compilers, -you may also have to change the memory allocators (png_malloc, etc.). - -Configuring for compiler xxx: - -All includes for libpng are in pngconf.h. If you need to add/change/delete -an include, this is the place to do it. The includes that are not -needed outside libpng are protected by the PNG_INTERNAL definition, -which is only defined for those routines inside libpng itself. The -files in libpng proper only include png.h, which includes pngconf.h. - -Configuring zlib: - -There are special functions to configure the compression. Perhaps the -most useful one changes the compression level, which currently uses -input compression values in the range 0 - 9. The library normally -uses the default compression level (Z_DEFAULT_COMPRESSION = 6). Tests -have shown that for a large majority of images, compression values in -the range 3-6 compress nearly as well as higher levels, and do so much -faster. For online applications it may be desirable to have maximum speed -(Z_BEST_SPEED = 1). With versions of zlib after v0.99, you can also -specify no compression (Z_NO_COMPRESSION = 0), but this would create -files larger than just storing the raw bitmap. You can specify the -compression level by calling: - - png_set_compression_level(png_ptr, level); - -Another useful one is to reduce the memory level used by the library. -The memory level defaults to 8, but it can be lowered if you are -short on memory (running DOS, for example, where you only have 640K). - - png_set_compression_mem_level(png_ptr, level); - -The other functions are for configuring zlib. They are not recommended -for normal use and may result in writing an invalid PNG file. See -zlib.h for more information on what these mean. - - png_set_compression_strategy(png_ptr, - strategy); - png_set_compression_window_bits(png_ptr, - window_bits); - png_set_compression_method(png_ptr, method); - -Controlling row filtering: - -If you want to control whether libpng uses filtering or not, which -filters are used, and how it goes about picking row filters, you -can call one of these functions. The selection and configuration -of row filters can have a significant impact on the size and -encoding speed and a somewhat lesser impact on the decoding speed -of an image. Filtering is enabled by default for RGB and grayscale -images (with and without alpha), and for 8-bit paletted images, but -not for paletted images with bit depths less than 8 bits/pixel. - -The 'method' parameter sets the main filtering method, which is -currently only '0' in the PNG 1.0 specification. The 'filters' -parameter sets which filter(s), if any, should be used for each -scanline. Possible values are PNG_ALL_FILTERS and PNG_NO_FILTERS -to turn filtering on and off, respectively. - -Individual filter types are PNG_FILTER_NONE, PNG_FILTER_SUB, -PNG_FILTER_UP, PNG_FILTER_AVG, PNG_FILTER_PAETH, which can be bitwise -ORed together '|' to specify one or more filters to use. These -filters are described in more detail in the PNG specification. If -you intend to change the filter type during the course of writing -the image, you should start with flags set for all of the filters -you intend to use so that libpng can initialize its internal -structures appropriately for all of the filter types. - - filters = PNG_FILTER_NONE | PNG_FILTER_SUB - | PNG_FILTER_UP; - png_set_filter(png_ptr, PNG_FILTER_TYPE_BASE, - filters); - -It is also possible to influence how libpng chooses from among the -available filters. This is done in two ways - by telling it how -important it is to keep the same filter for successive rows, and -by telling it the relative computational costs of the filters. - - double weights[3] = {1.5, 1.3, 1.1}, - costs[PNG_FILTER_VALUE_LAST] = - {1.0, 1.3, 1.3, 1.5, 1.7}; - - png_set_filter_selection(png_ptr, - PNG_FILTER_SELECTION_WEIGHTED, 3, - weights, costs); - -The weights are multiplying factors which indicate to libpng that row -should be the same for successive rows unless another row filter is that -many times better than the previous filter. In the above example, if -the previous 3 filters were SUB, SUB, NONE, the SUB filter could have a -"sum of absolute differences" 1.5 x 1.3 times higher than other filters -and still be chosen, while the NONE filter could have a sum 1.1 times -higher than other filters and still be chosen. Unspecified weights are -taken to be 1.0, and the specified weights should probably be declining -like those above in order to emphasize recent filters over older filters. - -The filter costs specify for each filter type a relative decoding cost -to be considered when selecting row filters. This means that filters -with higher costs are less likely to be chosen over filters with lower -costs, unless their "sum of absolute differences" is that much smaller. -The costs do not necessarily reflect the exact computational speeds of -the various filters, since this would unduly influence the final image -size. - -Note that the numbers above were invented purely for this example and -are given only to help explain the function usage. Little testing has -been done to find optimum values for either the costs or the weights. - -Removing unwanted object code: - -There are a bunch of #define's in pngconf.h that control what parts of -libpng are compiled. All the defines end in _SUPPORTED. If you are -never going to use an ability, you can change the #define to #undef -before recompiling libpng and save yourself code and data space. -You can also turn a number of them off en masse with a compiler directive -that defines PNG_READ[or WRITE]_TRANSFORMS_NOT_SUPPORTED, or -PNG_READ[or WRITE]_ANCILLARY_CHUNKS_NOT_SUPPORTED, or all four, -along with directives to turn on any of the capabilities that you do -want. The PNG_READ[or WRITE]_TRANSFORMS_NOT_SUPPORTED directives disable -the extra transformations but still leave the library fully capable of reading -and writing PNG files with all known public chunks [except for sPLT]. -Use of the PNG_READ[or WRITE]_ANCILLARY_CHUNKS_NOT_SUPPORTED directive -produces a library that is incapable of reading or writing ancillary chunks. -If you are not using the progressive reading capability, you can -turn that off with PNG_PROGRESSIVE_READ_NOT_SUPPORTED (don't confuse -this with the INTERLACING capability, which you'll still have). - -All the reading and writing specific code are in separate files, so the -linker should only grab the files it needs. However, if you want to -make sure, or if you are building a stand alone library, all the -reading files start with pngr and all the writing files start with -pngw. The files that don't match either (like png.c, pngtrans.c, etc.) -are used for both reading and writing, and always need to be included. -The progressive reader is in pngpread.c - -If you are creating or distributing a dynamically linked library (a .so -or DLL file), you should not remove or disable any parts of the library, -as this will cause applications linked with different versions of the -library to fail if they call functions not available in your library. -The size of the library itself should not be an issue, because only -those sections which are actually used will be loaded into memory. - - -Changes to Libpng from version 0.88 - -It should be noted that versions of libpng later than 0.96 are not -distributed by the original libpng author, Guy Schalnat, nor by -Andreas Dilger, who had taken over from Guy during 1996 and 1997, and -distributed versions 0.89 through 0.96, but rather by another member -of the original PNG Group, Glenn Randers-Pehrson. Guy and Andreas are -still alive and well, but they have moved on to other things. - -The old libpng functions png_read_init(), png_write_init(), -png_info_init(), png_read_destroy(), and png_write_destory() have been -moved to PNG_INTERNAL in version 0.95 to discourage their use. The -preferred method of creating and initializing the libpng structures is -via the png_create_read_struct(), png_create_write_struct(), and -png_create_info_struct() because they isolate the size of the structures -from the application, allow version error checking, and also allow the -use of custom error handling routines during the initialization, which -the old functions do not. The functions png_read_destroy() and -png_write_destroy() do not actually free the memory that libpng -allocated for these structs, but just reset the data structures, so they -can be used instead of png_destroy_read_struct() and -png_destroy_write_struct() if you feel there is too much system overhead -allocating and freeing the png_struct for each image read. - -Setting the error callbacks via png_set_message_fn() before -png_read_init() as was suggested in libpng-0.88 is no longer supported -because this caused applications which do not use custom error functions -to fail if the png_ptr was not initialized to zero. It is still possible -to set the error callbacks AFTER png_read_init(), or to change them with -png_set_error_fn(), which is essentially the same function, but with a -new name to force compilation errors with applications that try to use -the old method. - -.SH NOTE - -Note about libpng version numbers: - -Due to various miscommunications, unforeseen code incompatibilities -and occasional factors outside the authors' control, version numbering -on the library has not always been consistent and straightforward. -The following table summarizes matters since version 0.89c, which was -the first widely used release: - - source png.h png.h shared-lib - version string int version - ------- ------ ------ ---------- - 0.89c 0.89 89 1.0.89 - 0.90 0.90 90 0.90 [should be 2.0.90] - 0.95 0.95 95 0.95 [should be 2.0.95] - 0.96 0.96 96 0.96 [should be 2.0.96] - 0.97b 1.00.97 97 1.0.1 [should be 2.0.97] - 0.97c 0.97 97 2.0.97 - 0.98 0.98 98 2.0.98 - 0.99 0.99 98 2.0.99 - 0.99a-m 0.99 99 2.0.99 - 1.00 1.00 100 2.1.0 [int should be 10000] - 1.0.0 1.0.0 100 2.1.0 [int should be 10000] - 1.0.1 1.0.1 10001 2.1.0 - -Henceforth the source version will match the shared-library -minor and patch numbers; the shared-library major version number will be -used for changes in backward compatibility, as it is intended. -The PNG_PNGLIB_VER macro, which is not used within libpng but -is available for applications, is an unsigned integer of the form -xyyzz corresponding to the source version x.y.z (leading zeros in y and z). - -.SH "SEE ALSO" -libpngpf(3), png(5) -.LP -.IR libpng : -.IP -ftp://ftp.uu.net/graphics/png -http://www.cdrom.com/pub/png - -.LP -.IR zlib : -.IP -(generally) at the same location as -.I libpng -or at -.br -ftp://ftp.uu.net/pub/archiving/zip/zlib -.br -http://www.cdrom.com/pub/infozip/zlib - -.LP -.IR PNG specification: RFC 2083 -.IP -(generally) at the same location as -.I libpng -or at -.br -ftp://ds.internic.net/rfc/rfc2083.txt -.br -or (as a W3C Recommendation) at -.br -http://www.w3.org/TR/REC-png.html - -.LP -In the case of any inconsistency between the PNG specification -and this library, the specification takes precedence. - -.SH AUTHORS -This man page: Glenn Randers-Pehrson - - -Contributing Authors: John Bowler, Kevin Bracey, Sam Bushell, Andreas Dilger, -Magnus Holmgren, Tom Lane, Dave Martindale, Glenn Randers-Pehrson, -Greg Roelofs, Guy Eric Schalnat, Paul Schmidt, Tom Tanner, Willem van -Schaik, Tim Wegner. - - -The contributing authors would like to thank all those who helped -with testing, bug fixes, and patience. This wouldn't have been -possible without all of you. - -Thanks to Frank J. T. Wojcik for helping with the documentation. - -Libpng version 1.0.1 March 15, 1998: -Initially created in 1995 by Guy Eric Schalnat, then of Group 42, Inc. -Currently maintained by Glenn Randers-Pehrson (randeg@alumni.rpi.edu). - -Supported by the PNG development group -.br -(png-implement@dworkin.wustl.edu). - -.SH COPYRIGHT NOTICE: - -The PNG Reference Library (libpng) is supplied "AS IS". The Contributing -Authors and Group 42, Inc. disclaim all warranties, expressed or implied, -including, without limitation, the warranties of merchantability and of -fitness for any purpose. The Contributing Authors and Group 42, Inc. -assume no liability for direct, indirect, incidental, special, exemplary, -or consequential damages, which may result from the use of the PNG -Reference Library, even if advised of the possibility of such damage. - -Permission is hereby granted to use, copy, modify, and distribute this -source code, or portions hereof, for any purpose, without fee, subject -to the following restrictions: - - 1. The origin of this source code must not be - misrepresented. - - 2. Altered versions must be plainly marked as such - and must not be misrepresented as being the - original source. - - 3. This Copyright notice may not be removed or - altered from any source or altered source - distribution. - -The Contributing Authors and Group 42, Inc. specifically permit, without -fee, and encourage the use of this source code as a component to -supporting the PNG file format in commercial products. If you use this -source code in a product, acknowledgment is not required but would be -appreciated. - -.\" end of man page - diff --git a/src/png/libpngpf.3 b/src/png/libpngpf.3 deleted file mode 100644 index 7ba582ebe2..0000000000 --- a/src/png/libpngpf.3 +++ /dev/null @@ -1,342 +0,0 @@ -.TH LIBPNGPF 3 "March 15, 1998" -.SH NAME -libpng \- Portable Network Graphics (PNG) Reference Library -(private functions) -.SH SYNOPSIS -#include - -void png_build_gamma_table (png_structp png_ptr); - -void png_build_grayscale_palette (int bit_depth, png_colorp -palette); - -void png_calculate_crc (png_structp png_ptr, png_bytep ptr, -png_size_t length); -void png_check_chunk_name (png_structp png_ptr, png_bytep -chunk_name); - -png_size_t png_check_keyword (png_structp png_ptr, png_charp -key, png_charpp new_key); - -void png_combine_row (png_structp png_ptr, png_bytep row, int -mask); - -void png_correct_palette (png_structp png_ptr, png_colorp -palette, int num_palette); - -int png_crc_error (png_structp png_ptr); - -int png_crc_finish (png_structp png_ptr, png_uint_32 skip); - -void png_crc_read (png_structp png_ptr, png_bytep buf, -png_size_t length); - -png_voidp png_create_struct (int type); - -void png_destroy_struct (png_voidp struct_ptr); - -void png_do_background (png_row_infop row_info, png_bytep row, -png_color_16p trans_values, png_color_16p background, -png_color_16p background_1, png_bytep gamma_table, png_bytep -gamma_from_1, png_bytep gamma_to_1, png_uint_16pp gamma_16, -png_uint_16pp gamma_16_from_1, png_uint_16pp gamma_16_to_1, int -gamma_shift); - -void png_do_bgr (png_row_infop row_info, png_bytep row); - -void png_do_chop (png_row_infop row_info, png_bytep row); - -void png_do_dither (png_row_infop row_info, png_bytep row, -png_bytep palette_lookup, png_bytep dither_lookup); - -void png_do_expand (png_row_infop row_info, png_bytep row, -png_color_16p trans_value); - -void png_do_expand_palette (png_row_infop row_info, png_bytep -row, png_colorp palette, png_bytep trans, int num_trans); - -void png_do_gamma (png_row_infop row_info, png_bytep row, -png_bytep gamma_table, png_uint_16pp gamma_16_table, int -gamma_shift); - -void png_do_gray_to_rgb (png_row_infop row_info, png_bytep -row); - -void png_do_invert (png_row_infop row_info, png_bytep row); - -void png_do_pack (png_row_infop row_info, png_bytep row, -png_uint_32 bit_depth); - -void png_do_packswap (png_row_infop row_info, png_bytep row); - -void png_do_read_filler (png_row_infop row_info, png_bytep row, -png_uint_32 filler, png_uint_32 flags); - -void png_do_read_interlace (png_row_infop row_info, png_bytep -row, int pass, png_uint_32 transformations); - -void png_do_read_invert_alpha (png_row_infop row_info, -png_bytep row); - -void png_do_read_swap_alpha (png_row_infop row_info, png_bytep -row); - -void png_do_read_transformations (png_structp png_ptr); - -void png_do_rgb_to_gray (png_row_infop row_info, png_bytep -row); - -void png_do_shift (png_row_infop row_info, png_bytep row, -png_color_8p bit_depth); - -void png_do_strip_filler (png_row_infop row_info, png_bytep -row, png_uint_32 flags); - -void png_do_swap (png_row_infop row_info, png_bytep row); - -void png_do_unpack (png_row_infop row_info, png_bytep row); - -void png_do_unshift (png_row_infop row_info, png_bytep row, -png_color_8p sig_bits); - -void png_do_write_interlace (png_row_infop row_info, png_bytep -row, int pass); - -void png_do_write_invert_alpha (png_row_infop row_info, -png_bytep row); - -void png_do_write_swap_alpha (png_row_infop row_info, png_bytep -row); - -void png_do_write_transformations (png_structp png_ptr); - -void *png_far_to_near (png_structp png_ptr,png_voidp ptr, -int check); - -void png_flush (png_structp png_ptr); - -png_int_32 png_get_int_32 (png_bytep buf); - -png_uint_16 png_get_uint_16 (png_bytep buf); - -png_uint_32 png_get_uint_32 (png_bytep buf); - -void png_handle_bKGD (png_structp png_ptr, png_infop info_ptr, -png_uint_32 length); - -void png_handle_cHRM (png_structp png_ptr, png_infop info_ptr, -png_uint_32 length); - -void png_handle_gAMA (png_structp png_ptr, png_infop info_ptr, -png_uint_32 length); - -void png_handle_hIST (png_structp png_ptr, png_infop info_ptr, -png_uint_32 length); - -void png_handle_IEND (png_structp png_ptr, png_infop info_ptr, -png_uint_32 length); - -void png_handle_IHDR (png_structp png_ptr, png_infop info_ptr, -png_uint_32 length); - -void png_handle_oFFs (png_structp png_ptr, png_infop info_ptr, -png_uint_32 length); - -void png_handle_pCAL (png_structp png_ptr, png_infop info_ptr, -png_uint_32 length); - -void png_handle_pHYs (png_structp png_ptr, png_infop info_ptr, -png_uint_32 length); - -void png_handle_PLTE (png_structp png_ptr, png_infop info_ptr, -png_uint_32 length); - -void png_handle_sBIT (png_structp png_ptr, png_infop info_ptr, -png_uint_32 length); - -void png_handle_sRGB (png_structp png_ptr, png_infop info_ptr, -png_uint_32 length); - -void png_handle_tEXt (png_structp png_ptr, png_infop info_ptr, -png_uint_32 length); - -void png_handle_tIME (png_structp png_ptr, png_infop info_ptr, -png_uint_32 length); - -void png_handle_tRNS (png_structp png_ptr, png_infop info_ptr, -png_uint_32 length); - -void png_handle_unknown (png_structp png_ptr, png_infop -info_ptr, png_uint_32 length); - -void png_handle_zTXt (png_structp png_ptr, png_infop info_ptr, -png_uint_32 length); - -void png_info_destroy (png_structp png_ptr, png_infop -info_ptr); - -void png_init_read_transformations (png_structp png_ptr); - -void png_process_IDAT_data (png_structp png_ptr, png_bytep -buffer, png_size_t buffer_length); - -void png_process_some_data (png_structp png_ptr, png_infop -info_ptr); - -void png_push_check_crc (png_structp png_ptr); - -void png_push_crc_finish (png_structp png_ptr); - -void png_push_crc_skip (png_structp png_ptr, png_uint_32 -length); - -void png_push_fill_buffer (png_structp png_ptr, png_bytep -buffer, png_size_t length); - -void png_push_handle_tEXt (png_structp png_ptr, png_infop -info_ptr, png_uint_32 length); - -void png_push_handle_unknown (png_structp png_ptr, png_infop -info_ptr, png_uint_32 length); - -void png_push_handle_zTXt (png_structp png_ptr, png_infop -info_ptr, png_uint_32 length); - -void png_push_have_end (png_structp png_ptr, png_infop -info_ptr); - -void png_push_have_info (png_structp png_ptr, png_infop -info_ptr); - -void png_push_have_row (png_structp png_ptr, png_bytep row); - -void png_push_process_row (png_structp png_ptr); - -void png_push_read_chunk (png_structp png_ptr, png_infop -info_ptr); - -void png_push_read_end (png_structp png_ptr, png_infop -info_ptr); - -void png_push_read_IDAT (png_structp png_ptr); - -void png_push_read_sig (png_structp png_ptr, png_infop -info_ptr); - -void png_push_read_tEXt (png_structp png_ptr, png_infop -info_ptr); - -void png_push_read_zTXt (png_structp png_ptr, png_infop -info_ptr); - -void png_push_restore_buffer (png_structp png_ptr, png_bytep -buffer, png_size_t buffer_length); - -void png_push_save_buffer (png_structp png_ptr); - -void png_read_data (png_structp png_ptr, png_bytep data, -png_size_t length); - -void png_read_filter_row (png_structp png_ptr, png_row_infop -row_info, png_bytep row, png_bytep prev_row, int filter); - -void png_read_finish_row (png_structp png_ptr); - -void png_read_init (png_structp png_ptr); - -void png_read_push_finish_row (png_structp png_ptr); - -void png_read_start_row (png_structp png_ptr); - -void png_read_transform_info (png_structp png_ptr, png_infop -info_ptr); - -void png_reset_crc (png_structp png_ptr); - -void png_save_int_32 (png_bytep buf, png_int_32 i); - -void png_save_uint_16 (png_bytep buf, unsigned int i); - -void png_save_uint_32 (png_bytep buf, png_uint_32 i); - -void png_write_bKGD (png_structp png_ptr, png_color_16p values, -int color_type); - -void png_write_cHRM (png_structp png_ptr, double white_x, -double white_y, double red_x, double red_y, double green_x, -double green_y, double blue_x, double blue_y); - -void png_write_data (png_structp png_ptr, png_bytep data, -png_size_t length); -void png_write_filtered_row (png_structp png_ptr, png_bytep -filtered_row); - -void png_write_find_filter (png_structp png_ptr, png_row_infop -row_info); - -void png_write_finish_row (png_structp png_ptr); - -void png_write_gAMA (png_structp png_ptr, double file_gamma); - -void png_write_hIST (png_structp png_ptr, png_uint_16p hist, -int num_hist); - -void png_write_init (png_structp png_ptr); - -void png_write_IDAT (png_structp png_ptr, png_bytep data, -png_size_t length); - -void png_write_IEND (png_structp png_ptr); - -void png_write_IHDR (png_structp png_ptr, png_uint_32 width, -png_uint_32 height, int bit_depth, int color_type, int -compression_type, int filter_type, int interlace_type); - -void png_write_oFFs (png_structp png_ptr, png_uint_32 x_offset, -png_uint_32 y_offset, int unit_type); - -void png_write_pCAL (png_structp png_ptr, png_charp purpose, -png_int_32 X0, png_int_32 X1, int type, int nparams, png_charp -units, png_charpp params); - -void png_write_pHYs (png_structp png_ptr, png_uint_32 -x_pixels_per_unit, png_uint_32 y_pixels_per_unit, int -unit_type); - -void png_write_PLTE (png_structp png_ptr, png_colorp palette, -png_uint_32 num_pal); - -void png_write_sBIT (png_structp png_ptr, png_color_8p sbit, -int color_type); - -void png_write_sig (png_structp png_ptr); - -void png_write_sRGB (png_structp png_ptr, int intent); - -void png_write_start_row (png_structp png_ptr); - -void png_write_tEXt (png_structp png_ptr, png_charp key, -png_charp text, png_size_t text_len); - -void png_write_tIME (png_structp png_ptr, png_timep mod_time); - -void png_write_tRNS (png_structp png_ptr, png_bytep trans, -png_color_16p values, int number, int color_type); - -void png_write_zTXt (png_structp png_ptr, png_charp key, -png_charp text, png_size_t text_len, int compression); - -voidpf png_zalloc (voidpf png_ptr, uInt items, uInt size); - -void png_zfree (voidpf png_ptr, voidpf ptr); - -.SH DESCRIPTION -The functions listed above are used privately by libpng -and are not recommended for use by applications. They -are listed alphabetically here as an aid to libpng maintainers. -See png.h for more information on these functions. - -.SH SEE ALSO -libpng(3), png(5) -.SH AUTHOR -Glenn Randers-Pehrson diff --git a/src/png/makefile.bcc b/src/png/makefile.bcc deleted file mode 100644 index efd3c07795..0000000000 --- a/src/png/makefile.bcc +++ /dev/null @@ -1,107 +0,0 @@ -# This file is special for Widows because setjmp -# is incompatible with the DOS version. -# Alejandro Aguilar, 1995 - -# -# Borland C++ tools -# -IMPLIB = Implib -BCC = Bcc +BccW16.cfg -TLINK = TLink -TLIB = TLib -BRC = Brc -TASM = Tasm - - -# -# Options -# -IDE_LFLAGS = -LC:\BC4\LIB -IDE_RFLAGS = -IC:\BC4\INCLUDE;..\zlib; -LLATW16_winpngdlib = -Twe -RLATW16_winpngdlib = -31 -BLATW16_winpngdlib = -LEAT_winpngdlib = $(LLATW16_winpngdlib) -REAT_winpngdlib = $(RLATW16_winpngdlib) -BEAT_winpngdlib = $(BLATW16_winpngdlib) -ZLIB=..\..\lib\zlib.lib -LOBJECTS = png.obj pngrcb.obj pngread.obj pngrtran.obj pngrutil.obj pngstub.obj\ - pngtrans.obj pngwrite.obj pngwtran.obj pngwutil.obj - -# -# Dependency List -# -Dep_winpng = \ - ..\..\lib\winpng.lib - -winpng : BccW16.cfg $(Dep_winpng) - echo MakeNode winpng - -Dep_winpngdlib = \ - png.obj\ - pngrcb.obj\ - pngread.obj\ - pngrtran.obj\ - pngrutil.obj\ - pngstub.obj\ - pngtrans.obj\ - pngwrite.obj\ - pngwtran.obj\ - pngwutil.obj - -$(ZLIB): - cd ..\zlib - make -fmakefile.bcc - cd ..\png - -winpng.lib : $(Dep_winpngdlib) $(ZLIB) - copy /b $(ZLIB) winpng.lib - $(TLIB) $< $(IDE_BFLAGS) $(BEAT_winpngdlib) @&&| -+$(LOBJECTS:.obj =.obj +) -| - -png.obj : png.c - $(BCC) -P- -c $(CEAT_winpngdlib) -o$@ png.c - -pngrcb.obj : pngrcb.c - $(BCC) -P- -c $(CEAT_winpngdlib) -o$@ pngrcb.c - -pngread.obj : pngread.c - $(BCC) -P- -c $(CEAT_winpngdlib) -o$@ pngread.c - -pngrtran.obj : pngrtran.c - $(BCC) -P- -c $(CEAT_winpngdlib) -o$@ pngrtran.c - -pngrutil.obj : pngrutil.c - $(BCC) -P- -c $(CEAT_winpngdlib) -o$@ pngrutil.c - -pngstub.obj : pngstub.c - $(BCC) -P- -c $(CEAT_winpngdlib) -o$@ pngstub.c - -pngtrans.obj : pngtrans.c - $(BCC) -P- -c $(CEAT_winpngdlib) -o$@ pngtrans.c - -pngwrite.obj : pngwrite.c - $(BCC) -P- -c $(CEAT_winpngdlib) -o$@ pngwrite.c - -pngwtran.obj : pngwtran.c - $(BCC) -P- -c $(CEAT_winpngdlib) -o$@ pngwtran.c - -pngwutil.obj : pngwutil.c - $(BCC) -P- -c $(CEAT_winpngdlib) -o$@ pngwutil.c - -# Compiler configuration file -BccW16.cfg : - Copy &&| --v --vi --X- --H --IC:\BC4\INCLUDE --H=winpng.csm --ml --WS --3 --Ff -| $@ - diff --git a/src/png/makefile.dos b/src/png/makefile.dos deleted file mode 100644 index bbea801c4d..0000000000 --- a/src/png/makefile.dos +++ /dev/null @@ -1,76 +0,0 @@ -# -# File: makefile.dos -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile : Builds winpng.lib library for Windows 3.1 - -# Change WXDIR or WXWIN to wherever wxWindows is found -WXDIR = $(WXWIN) -WXLIB = $(WXDIR)\lib\wx.lib -WXINC = $(WXDIR)\include - -WINPNGDIR = $(WXDIR)\utils\imatest\png -WINPNGINC = $(WINPNGDIR) -WINPNGLIB = ..\..\lib\winpng.lib - -INC = /I..\zlib - -LIBS=$(WXLIB) $(WINPNGLIB) libw llibcew commdlg ddeml shell # ctl3d - -# Set this to nothing if your compiler is MS C++ 7 -ZOPTION= - -!ifndef FINAL -FINAL=0 -!endif - -PRECOMP=/YuWX.H - -!if "$(FINAL)" == "0" -OPT = /Od -CPPFLAGS= /AL /W4 /Gt4 /Zi $(ZOPTION) /G2sw $(OPT) /Dwx_msw $(INC) # $(PRECOMP) /Fp$(WXDIR)\src\msw\wx.pch -CFLAGS= /AL /W4 /Gt4 /Zi /G2sw /Od /Dwx_msw $(INC) -LINKFLAGS=/NOD /CO /ONERROR:NOEXE -!else -# /Ox for real FINAL version -OPT = /Ox -CPPFLAGS= /AL /W4 /Gt4 /Zi /Os /G2sw $(OPT) /Dwx_msw $(INC) # $(PRECOMP) /Fp$(WXDIR)\src\msw\wx.pch -CFLAGS= /AL /W4 /Gt4 /Zi /Os /G2sw /Dwx_msw $(INC) -LINKFLAGS=/NOD /ONERROR:NOEXE -!endif - -OBJECTS = png.obj pngrcb.obj pngread.obj pngrtran.obj pngrutil.obj pngstub.obj \ - pngtrans.obj pngwrite.obj pngwtran.obj pngwutil.obj - -all: $(WINPNGLIB) - -wx: - cd $(WXDIR)\src - nmake -f makefile.dos $(WXLIB) FINAL=$(FINAL) - -$(WINPNGLIB): $(OBJECTS) - erase $(WINPNGLIB) - lib /PAGESIZE:128 @<< -$(WINPNGLIB) -y -$(OBJECTS) -nul -; -<< - -.c.obj: - cl $(CFLAGS) /c $*.c - -clean: - -erase *.obj - -erase *.exe - -erase *.lib - -erase *.sbr - -erase *.pdb - -cleanall: clean diff --git a/src/png/makefile.unx b/src/png/makefile.unx deleted file mode 100644 index 095d6eaf0a..0000000000 --- a/src/png/makefile.unx +++ /dev/null @@ -1,30 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1998 -# Updated: -# Copyright: (c) 1998 -# -# -# Makefile for PNG library, Unix - -include ../make.env - -TARGETLIB=../../lib/libpng.a - -LIB_C_SRC = png.c pngread.c pngrtran.c pngrutil.c \ - pngpread.c pngtrans.c pngwrite.c pngwtran.c pngwutil.c \ - pngerror.c pngmem.c pngwio.c pngrio.c pngget.c pngset.c - -all: $(TARGETLIB) - -# Define library objects -OBJECTS=\ - $(LIB_C_SRC:.c=.o) - -$(TARGETLIB) : $(OBJECTS) - ar $(AROPTIONS) $@ $(OBJECTS) - $(RANLIB) $@ - -clean: - rm -f $(OBJECTS) $(TARGETLIB) diff --git a/src/png/makefile.vc b/src/png/makefile.vc deleted file mode 100644 index 9094b9ee13..0000000000 --- a/src/png/makefile.vc +++ /dev/null @@ -1,66 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile : Builds winpng.lib library for Windows 3.1 - -# Change WXDIR or WXWIN to wherever wxWindows is found -WXDIR = $(WXWIN) -WXLIB = $(WXDIR)\lib\wx.lib -WXINC = $(WXDIR)\include - -WINPNGDIR = ..\png -WINPNGINC = $(WINPNGDIR) -WINPNGLIB = ..\..\lib\winpng.lib - -INC = /I..\zlib - -# Set this to nothing if your compiler is MS C++ 7 -ZOPTION= - -!ifndef FINAL -FINAL=0 -!endif - -PRECOMP=/YuWX.H - -!if "$(FINAL)" == "0" -OPT = /Od -CPPFLAGS= /W4 /Zi /MD /GX $(ZOPTION) $(OPT) /Dwx_msw $(INC) # $(PRECOMP) /Fp$(WXDIR)\src\msw\wx.pch -CFLAGS= /W4 /Zi /MD /GX /Od /Dwx_msw $(INC) -LINKFLAGS=/NOD /CO /ONERROR:NOEXE -!else -# /Ox for real FINAL version -OPT = /O2 -CPPFLAGS= /W4 /MD /GX /Dwx_msw $(INC) # $(PRECOMP) /Fp$(WXDIR)\src\msw\wx.pch -CFLAGS= /W4 /MD /GX /Dwx_msw $(INC) -LINKFLAGS=/NOD /ONERROR:NOEXE -!endif - -OBJECTS = png.obj pngread.obj pngrtran.obj pngrutil.obj \ - pngpread.obj pngtrans.obj pngwrite.obj pngwtran.obj pngwutil.obj \ - pngerror.obj pngmem.obj pngwio.obj pngrio.obj pngget.obj pngset.obj - -all: $(WINPNGLIB) - -$(WINPNGLIB): $(OBJECTS) - erase $(WINPNGLIB) - lib @<< --out:$(WINPNGLIB) -$(OBJECTS) -<< - -.c.obj: - cl -DWIN32 $(OPT) $(CFLAGS) /c $*.c - -clean: - erase *.obj - erase *.exe - erase *.lib - -cleanall: clean diff --git a/src/png/makefile.wat b/src/png/makefile.wat deleted file mode 100644 index f3bc79b584..0000000000 --- a/src/png/makefile.wat +++ /dev/null @@ -1,40 +0,0 @@ -#!/binb/wmake.exe -# -# File: makefile.wat -# Author: Julian Smart -# Created: 1998 -# -# Makefile : Builds PNG library for Watcom C++, WIN32 - -WXDIR = ..\.. - -!include $(WXDIR)\src\makewat.env - -WXLIB = $(WXDIR)\lib - -LIBTARGET = $(WXLIB)\png.lib - -OBJECTS = png.obj pngread.obj pngrtran.obj pngrutil.obj & - pngpread.obj pngtrans.obj pngwrite.obj pngwtran.obj pngwutil.obj & - pngerror.obj pngmem.obj pngwio.obj pngrio.obj pngget.obj pngset.obj - -all: $(OBJECTS) $(LIBTARGET) - -$(LIBTARGET) : $(OBJECTS) - %create tmp.lbc - @for %i in ( $(OBJECTS) ) do @%append tmp.lbc +%i - wlib /b /c /n /p=512 $^@ @tmp.lbc - -clean: .SYMBOLIC - -erase *.obj - -erase $(LIBTARGET) - -erase *.pch - -erase *.err - -erase *.lbc - -cleanall: clean - -#accel.obj: $(MSWDIR)\accel.cpp -# *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - - diff --git a/src/png/png.5 b/src/png/png.5 deleted file mode 100644 index 30244aabb8..0000000000 --- a/src/png/png.5 +++ /dev/null @@ -1,44 +0,0 @@ -.TH PNG 5 "March 15, 1998" -.SH NAME -png \- Portable Network Graphics (PNG) format -.SH DESCRIPTION -PNG (Portable Network Graphics) is an extensible file format for the -lossless, portable, well-compressed storage of raster images. PNG provides -a patent-free replacement for GIF and can also replace many -common uses of TIFF. Indexed-color, grayscale, and truecolor images are -supported, plus an optional alpha channel. Sample depths range from -1 to 16 bits. -.br - -PNG is designed to work well in online viewing applications, such as the -World Wide Web, so it is fully streamable with a progressive display -option. PNG is robust, providing both full file integrity checking and -fast, simple detection of common transmission errors. Also, PNG can store -gamma and chromaticity data for improved color matching on heterogeneous -platforms. - -.SH "SEE ALSO" -.IR libpng(3), zlib(3), deflate(5), and zlib(5) -.LP -PNG specification: -RFC 2083 -.IP -.br -ftp://ds.internic.net/rfc/rfc2083.txt -.br -or (as a W3C Recommendation) at -.br -http://www.w3.org/TR/REC-png.html -.SH AUTHORS -This man page: Glenn Randers-Pehrson -.LP -Portable Network Graphics (PNG) Specification Version 1.0 (October 1, 1996): -Thomas Boutell and others (png-list@dworkin.wustl.edu). -.LP - -.SH COPYRIGHT NOTICE -The PNG specification is copyright (c) 1996 Massachussets Institute of -Technology. See the specification for conditions of use and distribution. -.LP -.\" end of man page - diff --git a/src/png/png.c b/src/png/png.c deleted file mode 100644 index 33009674d6..0000000000 --- a/src/png/png.c +++ /dev/null @@ -1,304 +0,0 @@ - -/* png.c - location for general purpose libpng functions - * - * libpng 1.0.1 - * For conditions of distribution and use, see copyright notice in png.h - * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc. - * Copyright (c) 1996, 1997 Andreas Dilger - * Copyright (c) 1998, Glenn Randers-Pehrson - * March 15, 1998 - */ - -#define PNG_INTERNAL -#define PNG_NO_EXTERN -#include "../png/png.h" - -/* Version information for C files. This had better match the version - * string defined in png.h. - */ -char png_libpng_ver[12] = "1.0.1"; - -/* Place to hold the signature string for a PNG file. */ -png_byte FARDATA png_sig[8] = {137, 80, 78, 71, 13, 10, 26, 10}; - -/* Constant strings for known chunk types. If you need to add a chunk, - * add a string holding the name here. If you want to make the code - * portable to EBCDIC machines, use ASCII numbers, not characters. - */ -png_byte FARDATA png_IHDR[5] = { 73, 72, 68, 82, '\0'}; -png_byte FARDATA png_IDAT[5] = { 73, 68, 65, 84, '\0'}; -png_byte FARDATA png_IEND[5] = { 73, 69, 78, 68, '\0'}; -png_byte FARDATA png_PLTE[5] = { 80, 76, 84, 69, '\0'}; -png_byte FARDATA png_bKGD[5] = { 98, 75, 71, 68, '\0'}; -png_byte FARDATA png_cHRM[5] = { 99, 72, 82, 77, '\0'}; -png_byte FARDATA png_gAMA[5] = {103, 65, 77, 65, '\0'}; -png_byte FARDATA png_hIST[5] = {104, 73, 83, 84, '\0'}; -png_byte FARDATA png_oFFs[5] = {111, 70, 70, 115, '\0'}; -png_byte FARDATA png_pCAL[5] = {112, 67, 65, 76, '\0'}; -png_byte FARDATA png_pHYs[5] = {112, 72, 89, 115, '\0'}; -png_byte FARDATA png_sBIT[5] = {115, 66, 73, 84, '\0'}; -png_byte FARDATA png_sRGB[5] = {115, 82, 71, 66, '\0'}; -png_byte FARDATA png_tEXt[5] = {116, 69, 88, 116, '\0'}; -png_byte FARDATA png_tIME[5] = {116, 73, 77, 69, '\0'}; -png_byte FARDATA png_tRNS[5] = {116, 82, 78, 83, '\0'}; -png_byte FARDATA png_zTXt[5] = {122, 84, 88, 116, '\0'}; - -/* arrays to facilitate easy interlacing - use pass (0 - 6) as index */ - -/* start of interlace block */ -int FARDATA png_pass_start[] = {0, 4, 0, 2, 0, 1, 0}; - -/* offset to next interlace block */ -int FARDATA png_pass_inc[] = {8, 8, 4, 4, 2, 2, 1}; - -/* start of interlace block in the y direction */ -int FARDATA png_pass_ystart[] = {0, 0, 4, 0, 2, 0, 1}; - -/* offset to next interlace block in the y direction */ -int FARDATA png_pass_yinc[] = {8, 8, 8, 4, 4, 2, 2}; - -/* Width of interlace block. This is not currently used - if you need - * it, uncomment it here and in png.h -int FARDATA png_pass_width[] = {8, 4, 4, 2, 2, 1, 1}; -*/ - -/* Height of interlace block. This is not currently used - if you need - * it, uncomment it here and in png.h -int FARDATA png_pass_height[] = {8, 8, 4, 4, 2, 2, 1}; -*/ - -/* Mask to determine which pixels are valid in a pass */ -int FARDATA png_pass_mask[] = {0x80, 0x08, 0x88, 0x22, 0xaa, 0x55, 0xff}; - -/* Mask to determine which pixels to overwrite while displaying */ -int FARDATA png_pass_dsp_mask[] = {0xff, 0x0f, 0xff, 0x33, 0xff, 0x55, 0xff}; - - -/* Tells libpng that we have already handled the first "num_bytes" bytes - * of the PNG file signature. If the PNG data is embedded into another - * stream we can set num_bytes = 8 so that libpng will not attempt to read - * or write any of the magic bytes before it starts on the IHDR. - */ -void -png_set_sig_bytes(png_structp png_ptr, int num_bytes) -{ - png_debug(1, "in png_set_sig_bytes\n"); - if (num_bytes > 8) - png_error(png_ptr, "Too many bytes for PNG signature."); - - png_ptr->sig_bytes = num_bytes < 0 ? 0 : num_bytes; -} - -/* Checks whether the supplied bytes match the PNG signature. We allow - * checking less than the full 8-byte signature so that those apps that - * already read the first few bytes of a file to determine the file type - * can simply check the remaining bytes for extra assurance. Returns - * an integer less than, equal to, or greater than zero if sig is found, - * respectively, to be less than, to match, or be greater than the correct - * PNG signature (this is the same behaviour as strcmp, memcmp, etc). - */ -int -png_sig_cmp(png_bytep sig, png_size_t start, png_size_t num_to_check) -{ - if (num_to_check > 8) - num_to_check = 8; - else if (num_to_check < 1) - return (0); - - if (start > 7) - return (0); - - if (start + num_to_check > 8) - num_to_check = 8 - start; - - return ((int)(png_memcmp(&sig[start], &png_sig[start], num_to_check))); -} - -/* (Obsolete) function to check signature bytes. It does not allow one - * to check a partial signature. This function will be removed in the - * future - use png_sig_cmp(). - */ -int -png_check_sig(png_bytep sig, int num) -{ - return ((int)!png_sig_cmp(sig, (png_size_t)0, (png_size_t)num)); -} - -/* Function to allocate memory for zlib. */ -voidpf -png_zalloc(voidpf png_ptr, uInt items, uInt size) -{ - png_voidp ptr; - png_uint_32 num_bytes; - - num_bytes = (png_uint_32)items * size; - ptr = (png_voidp)png_malloc((png_structp)png_ptr, num_bytes); - if (num_bytes > (png_uint_32)0x8000) - { - png_memset(ptr, 0, (png_size_t)0x8000L); - png_memset((png_bytep)ptr + (png_size_t)0x8000L, 0, - (png_size_t)(num_bytes - (png_uint_32)0x8000L)); - } - else - { - png_memset(ptr, 0, (png_size_t)num_bytes); - } - return ((voidpf)ptr); -} - -/* function to free memory for zlib */ -void -png_zfree(voidpf png_ptr, voidpf ptr) -{ - png_free((png_structp)png_ptr, (png_voidp)ptr); -} - -/* Reset the CRC variable to 32 bits of 1's. Care must be taken - * in case CRC is > 32 bits to leave the top bits 0. - */ -void -png_reset_crc(png_structp png_ptr) -{ - png_ptr->crc = crc32(0, Z_NULL, 0); -} - -/* Calculate the CRC over a section of data. We can only pass as - * much data to this routine as the largest single buffer size. We - * also check that this data will actually be used before going to the - * trouble of calculating it. - */ -void -png_calculate_crc(png_structp png_ptr, png_bytep ptr, png_size_t length) -{ - int need_crc = 1; - - if (png_ptr->chunk_name[0] & 0x20) /* ancillary */ - { - if ((png_ptr->flags & PNG_FLAG_CRC_ANCILLARY_MASK) == - (PNG_FLAG_CRC_ANCILLARY_USE | PNG_FLAG_CRC_ANCILLARY_NOWARN)) - need_crc = 0; - } - else /* critical */ - { - if (png_ptr->flags & PNG_FLAG_CRC_CRITICAL_IGNORE) - need_crc = 0; - } - - if (need_crc) - png_ptr->crc = crc32(png_ptr->crc, ptr, (uInt)length); -} - -/* Allocate the memory for an info_struct for the application. We don't - * really need the png_ptr, but it could potentially be useful in the - * future. This should be used in favour of malloc(sizeof(png_info)) - * and png_info_init() so that applications that want to use a shared - * libpng don't have to be recompiled if png_info changes size. - */ -png_infop -png_create_info_struct(png_structp png_ptr) -{ - png_infop info_ptr; - - png_debug(1, "in png_create_info_struct\n"); - if(png_ptr == NULL) return (NULL); - if ((info_ptr = (png_infop)png_create_struct(PNG_STRUCT_INFO)) != NULL) - { - png_info_init(info_ptr); - } - - return (info_ptr); -} - -/* This function frees the memory associated with a single info struct. - * Normally, one would use either png_destroy_read_struct() or - * png_destroy_write_struct() to free an info struct, but this may be - * useful for some applications. - */ -void -png_destroy_info_struct(png_structp png_ptr, png_infopp info_ptr_ptr) -{ - png_infop info_ptr = NULL; - - png_debug(1, "in png_destroy_info_struct\n"); - if (info_ptr_ptr != NULL) - info_ptr = *info_ptr_ptr; - - if (info_ptr != NULL) - { - png_info_destroy(png_ptr, info_ptr); - - png_destroy_struct((png_voidp)info_ptr); - *info_ptr_ptr = (png_infop)NULL; - } -} - -/* Initialize the info structure. This is now an internal function (0.89) - * and applications using it are urged to use png_create_info_struct() - * instead. - */ -void -png_info_init(png_infop info_ptr) -{ - png_debug(1, "in png_info_init\n"); - /* set everything to 0 */ - png_memset(info_ptr, 0, sizeof (png_info)); -} - -/* This is an internal routine to free any memory that the info struct is - * pointing to before re-using it or freeing the struct itself. Recall - * that png_free() checks for NULL pointers for us. - */ -void -png_info_destroy(png_structp png_ptr, png_infop info_ptr) -{ -#if defined(PNG_READ_tEXt_SUPPORTED) || defined(PNG_READ_zTXt_SUPPORTED) - int i; - - png_debug(1, "in png_info_destroy\n"); - if (info_ptr->text != NULL) - { - for (i = 0; i < info_ptr->num_text; i++) - { - png_free(png_ptr, info_ptr->text[i].key); - } - png_free(png_ptr, info_ptr->text); - } -#endif -#if defined(PNG_READ_pCAL_SUPPORTED) - png_free(png_ptr, info_ptr->pcal_purpose); - png_free(png_ptr, info_ptr->pcal_units); - if (info_ptr->pcal_params != NULL) - { - for (i = 0; i < (int)info_ptr->pcal_nparams; i++) - { - png_free(png_ptr, info_ptr->pcal_params[i]); - } - png_free(png_ptr, info_ptr->pcal_params); - } -#endif - - png_info_init(info_ptr); -} - -/* This function returns a pointer to the io_ptr associated with the user - * functions. The application should free any memory associated with this - * pointer before png_write_destroy() or png_read_destroy() are called. - */ -png_voidp -png_get_io_ptr(png_structp png_ptr) -{ - return (png_ptr->io_ptr); -} - -#if !defined(PNG_NO_STDIO) -/* Initialize the default input/output functions for the PNG file. If you - * use your own read or write routines, you can call either png_set_read_fn() - * or png_set_write_fn() instead of png_init_io(). - */ -void -png_init_io(png_structp png_ptr, FILE *fp) -{ - png_debug(1, "in png_init_io\n"); - png_ptr->io_ptr = (png_voidp)fp; -} -#endif diff --git a/src/png/png.h b/src/png/png.h deleted file mode 100644 index 3c5ad6007e..0000000000 --- a/src/png/png.h +++ /dev/null @@ -1,2063 +0,0 @@ - -/* png.h - header file for PNG reference library - * - * libpng 1.0.1 - * For conditions of distribution and use, see the COPYRIGHT NOTICE below. - * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc. - * Copyright (c) 1996, 1997 Andreas Dilger - * Copyright (c) 1998 Glenn Randers-Pehrson - * March 15, 1998 - * - * Note about libpng version numbers: - * - * Due to various miscommunications, unforeseen code incompatibilities - * and occasional factors outside the authors' control, version numbering - * on the library has not always been consistent and straightforward. - * The following table summarizes matters since version 0.89c, which was - * the first widely used release: - * - * source png.h png.h shared-lib - * version string int version - * ------- ------ ------ ---------- - * 0.89c ("1.0 beta 3") 0.89 89 1.0.89 - * 0.90 ("1.0 beta 4") 0.90 90 0.90 [should have been 2.0.90] - * 0.95 ("1.0 beta 5") 0.95 95 0.95 [should have been 2.0.95] - * 0.96 ("1.0 beta 6") 0.96 96 0.96 [should have been 2.0.96] - * 0.97b ("1.00.97 beta 7") 1.00.97 97 1.0.1 [should have been 2.0.97] - * 0.97c 0.97 97 2.0.97 - * 0.98 0.98 98 2.0.98 - * 0.99 0.99 98 2.0.99 - * 0.99a-m 0.99 99 2.0.99 - * 1.00 1.00 100 2.1.0 [int should be 10000] - * 1.0.0 1.0.0 100 2.1.0 [int should be 10000] - * 1.0.1 1.0.1 10001 2.1.0 - * - * Henceforth the source version will match the shared-library minor - * and patch numbers; the shared-library major version number will be - * used for changes in backward compatibility, as it is intended. - * The PNG_PNGLIB_VER macro, which is not used within libpng but - * is available for applications, is an unsigned integer of the form - * xyyzz corresponding to the source version x.y.z (leading zeros in y and z). - * - * - * See libpng.txt for more information. The PNG specification is available - * as RFC 2083 - * and as a W3C Recommendation - * - * Contributing Authors: - * John Bowler - * Kevin Bracey - * Sam Bushell - * Andreas Dilger - * Magnus Holmgren - * Tom Lane - * Dave Martindale - * Glenn Randers-Pehrson - * Greg Roelofs - * Guy Eric Schalnat - * Paul Schmidt - * Tom Tanner - * Willem van Schaik - * Tim Wegner - * - * The contributing authors would like to thank all those who helped - * with testing, bug fixes, and patience. This wouldn't have been - * possible without all of you. - * - * Thanks to Frank J. T. Wojcik for helping with the documentation. - * - * COPYRIGHT NOTICE: - * - * The PNG Reference Library is supplied "AS IS". The Contributing Authors - * and Group 42, Inc. disclaim all warranties, expressed or implied, - * including, without limitation, the warranties of merchantability and of - * fitness for any purpose. The Contributing Authors and Group 42, Inc. - * assume no liability for direct, indirect, incidental, special, exemplary, - * or consequential damages, which may result from the use of the PNG - * Reference Library, even if advised of the possibility of such damage. - * - * Permission is hereby granted to use, copy, modify, and distribute this - * source code, or portions hereof, for any purpose, without fee, subject - * to the following restrictions: - * 1. The origin of this source code must not be misrepresented. - * 2. Altered versions must be plainly marked as such and must not be - * misrepresented as being the original source. - * 3. This Copyright notice may not be removed or altered from any source or - * altered source distribution. - * - * The Contributing Authors and Group 42, Inc. specifically permit, without - * fee, and encourage the use of this source code as a component to - * supporting the PNG file format in commercial products. If you use this - * source code in a product, acknowledgment is not required but would be - * appreciated. - */ - -#ifndef _PNG_H -#define _PNG_H - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/* This is not the place to learn how to use libpng. The file libpng.txt - * describes how to use libpng, and the file example.c summarizes it - * with some code on which to build. This file is useful for looking - * at the actual function definitions and structure components. - */ - -/* include the compression library's header */ -#include "../zlib/zlib.h" - -/* include all user configurable info */ -#include "../png/pngconf.h" - -/* This file is arranged in several sections. The first section contains - * structure and type definitions. The second section contains the external - * library functions, while the third has the internal library functions, - * which applications aren't expected to use directly. - */ - -/* Version information for png.h - this should match the version in png.c */ -#define PNG_LIBPNG_VER_STRING "1.0.1" - -/* Careful here. At one time, Guy wanted to use 082, but that would be octal. - * We must not include leading zeros. - * Versions 0.7 through 1.0.0 were in the range 0 to 100 here (only - * version 1.0.0 was mis-numbered 100 instead of 10000). From - * version 1.0.1 it's xxyyzz, where x=major, y=minor, z=bugfix */ -#define PNG_LIBPNG_VER 10001 /* 1.0.1 */ - -/* variables declared in png.c - only it needs to define PNG_NO_EXTERN */ -#if !defined(PNG_NO_EXTERN) || defined(PNG_ALWAYS_EXTERN) -/* Version information for C files, stored in png.c. This had better match - * the version above. - */ -extern char png_libpng_ver[12]; /* need room for 99.99.99aa */ - -/* Structures to facilitate easy interlacing. See png.c for more details */ -extern int FARDATA png_pass_start[7]; -extern int FARDATA png_pass_inc[7]; -extern int FARDATA png_pass_ystart[7]; -extern int FARDATA png_pass_yinc[7]; -extern int FARDATA png_pass_mask[7]; -extern int FARDATA png_pass_dsp_mask[7]; -/* These aren't currently used. If you need them, see png.c for more details -extern int FARDATA png_pass_width[7]; -extern int FARDATA png_pass_height[7]; -*/ -#endif /* PNG_NO_EXTERN */ - -/* Three color definitions. The order of the red, green, and blue, (and the - * exact size) is not important, although the size of the fields need to - * be png_byte or png_uint_16 (as defined below). - */ -typedef struct png_color_struct -{ - png_byte red; - png_byte green; - png_byte blue; -} png_color; -typedef png_color FAR * png_colorp; -typedef png_color FAR * FAR * png_colorpp; - -typedef struct png_color_16_struct -{ - png_byte index; /* used for palette files */ - png_uint_16 red; /* for use in red green blue files */ - png_uint_16 green; - png_uint_16 blue; - png_uint_16 gray; /* for use in grayscale files */ -} png_color_16; -typedef png_color_16 FAR * png_color_16p; -typedef png_color_16 FAR * FAR * png_color_16pp; - -typedef struct png_color_8_struct -{ - png_byte red; /* for use in red green blue files */ - png_byte green; - png_byte blue; - png_byte gray; /* for use in grayscale files */ - png_byte alpha; /* for alpha channel files */ -} png_color_8; -typedef png_color_8 FAR * png_color_8p; -typedef png_color_8 FAR * FAR * png_color_8pp; - -/* png_text holds the text in a PNG file, and whether they are compressed - in the PNG file or not. The "text" field points to a regular C string. */ -typedef struct png_text_struct -{ - int compression; /* compression value, see PNG_TEXT_COMPRESSION_ */ - png_charp key; /* keyword, 1-79 character description of "text" */ - png_charp text; /* comment, may be an empty string (ie "") */ - png_size_t text_length; /* length of "text" field */ -} png_text; -typedef png_text FAR * png_textp; -typedef png_text FAR * FAR * png_textpp; - -/* Supported compression types for text in PNG files (tEXt, and zTXt). - * The values of the PNG_TEXT_COMPRESSION_ defines should NOT be changed. */ -#define PNG_TEXT_COMPRESSION_NONE_WR -3 -#define PNG_TEXT_COMPRESSION_zTXt_WR -2 -#define PNG_TEXT_COMPRESSION_NONE -1 -#define PNG_TEXT_COMPRESSION_zTXt 0 -#define PNG_TEXT_COMPRESSION_LAST 1 /* Not a valid value */ - -/* png_time is a way to hold the time in an machine independent way. - * Two conversions are provided, both from time_t and struct tm. There - * is no portable way to convert to either of these structures, as far - * as I know. If you know of a portable way, send it to me. As a side - * note - PNG is Year 2000 compliant! - */ -typedef struct png_time_struct -{ - png_uint_16 year; /* full year, as in, 1995 */ - png_byte month; /* month of year, 1 - 12 */ - png_byte day; /* day of month, 1 - 31 */ - png_byte hour; /* hour of day, 0 - 23 */ - png_byte minute; /* minute of hour, 0 - 59 */ - png_byte second; /* second of minute, 0 - 60 (for leap seconds) */ -} png_time; -typedef png_time FAR * png_timep; -typedef png_time FAR * FAR * png_timepp; - -/* png_info is a structure that holds the information in a PNG file so - * that the application can find out the characteristics of the image. - * If you are reading the file, this structure will tell you what is - * in the PNG file. If you are writing the file, fill in the information - * you want to put into the PNG file, then call png_write_info(). - * The names chosen should be very close to the PNG specification, so - * consult that document for information about the meaning of each field. - * - * With libpng < 0.95, it was only possible to directly set and read the - * the values in the png_info_struct, which meant that the contents and - * order of the values had to remain fixed. With libpng 0.95 and later, - * however, * there are now functions which abstract the contents of - * png_info_struct from the application, so this makes it easier to use - * libpng with dynamic libraries, and even makes it possible to use - * libraries that don't have all of the libpng ancillary chunk-handing - * functionality. - * - * In any case, the order of the parameters in png_info_struct should NOT - * be changed for as long as possible to keep compatibility with applications - * that use the old direct-access method with png_info_struct. - */ -typedef struct png_info_struct -{ - /* the following are necessary for every PNG file */ - png_uint_32 width; /* width of image in pixels (from IHDR) */ - png_uint_32 height; /* height of image in pixels (from IHDR) */ - png_uint_32 valid; /* valid chunk data (see PNG_INFO_ below) */ - png_uint_32 rowbytes; /* bytes needed to hold an untransformed row */ - png_colorp palette; /* array of color values (valid & PNG_INFO_PLTE) */ - png_uint_16 num_palette; /* number of color entries in "palette" (PLTE) */ - png_uint_16 num_trans; /* number of transparent palette color (tRNS) */ - png_byte bit_depth; /* 1, 2, 4, 8, or 16 bits/channel (from IHDR) */ - png_byte color_type; /* see PNG_COLOR_TYPE_ below (from IHDR) */ - png_byte compression_type; /* must be PNG_COMPRESSION_TYPE_BASE (IHDR) */ - png_byte filter_type; /* must be PNG_FILTER_TYPE_BASE (from IHDR) */ - png_byte interlace_type; /* One of PNG_INTERLACE_NONE, PNG_INTERLACE_ADAM7 */ - - /* The following is informational only on read, and not used on writes. */ - png_byte channels; /* number of data channels per pixel (1, 3, 4)*/ - png_byte pixel_depth; /* number of bits per pixel */ - png_byte spare_byte; /* to align the data, and for future use */ - png_byte signature[8]; /* magic bytes read by libpng from start of file */ - - /* The rest of the data is optional. If you are reading, check the - * valid field to see if the information in these are valid. If you - * are writing, set the valid field to those chunks you want written, - * and initialize the appropriate fields below. - */ - -#if defined(PNG_READ_gAMA_SUPPORTED) || defined(PNG_WRITE_gAMA_SUPPORTED) || \ - defined(PNG_READ_GAMMA_SUPPORTED) - /* The gAMA chunk describes the gamma characteristics of the system - * on which the image was created, normally in the range [1.0, 2.5]. - * Data is valid if (valid & PNG_INFO_gAMA) is non-zero. - */ - float gamma; /* gamma value of image, if (valid & PNG_INFO_gAMA) */ -#endif /* PNG_READ_gAMA_SUPPORTED || PNG_WRITE_gAMA_SUPPORTED */ - -#if defined(PNG_READ_sRGB_SUPPORTED) || defined(PNG_WRITE_sRGB_SUPPORTED) - /* GR-P, 0.96a */ - /* Data valid if (valid & PNG_INFO_sRGB) non-zero. */ - png_byte srgb_intent; /* sRGB rendering intent [0, 1, 2, or 3] */ -#endif /* PNG_READ_sRGB_SUPPORTED || PNG_WRITE_sRGB_SUPPORTED */ - -#if defined(PNG_READ_tEXt_SUPPORTED) || defined(PNG_WRITE_tEXt_SUPPORTED) || \ - defined(PNG_READ_zTXt_SUPPORTED) || defined(PNG_WRITE_zTXt_SUPPORTED) - /* The tEXt and zTXt chunks contain human-readable textual data in - * uncompressed and compressed forms, respectively. The data in "text" - * is an array of pointers to uncompressed, null-terminated C strings. - * Each chunk has a keyword which describes the textual data contained - * in that chunk. Keywords are not required to be unique, and the text - * string may be empty. Any number of text chunks may be in an image. - */ - int num_text; /* number of comments read/to write */ - int max_text; /* current size of text array */ - png_textp text; /* array of comments read/to write */ -#endif /* PNG_READ_tEXt/zTXt_SUPPORTED || PNG_WRITE_tEXt/zTXt_SUPPORTED */ -#if defined(PNG_READ_tIME_SUPPORTED) || defined(PNG_WRITE_tIME_SUPPORTED) - /* The tIME chunk holds the last time the displayed image data was - * modified. See the png_time struct for the contents of this struct. - */ - png_time mod_time; -#endif /* PNG_READ_tIME_SUPPORTED || PNG_WRITE_tIME_SUPPORTED */ -#if defined(PNG_READ_sBIT_SUPPORTED) || defined(PNG_WRITE_sBIT_SUPPORTED) - /* The sBIT chunk specifies the number of significant high-order bits - * in the pixel data. Values are in the range [1, bit_depth], and are - * only specified for the channels in the pixel data. The contents of - * the low-order bits is not specified. Data is valid if - * (valid & PNG_INFO_sBIT) is non-zero. - */ - png_color_8 sig_bit; /* significant bits in color channels */ -#endif /* PNG_READ_sBIT_SUPPORTED || PNG_WRITE_sBIT_SUPPORTED */ -#if defined(PNG_READ_tRNS_SUPPORTED) || defined(PNG_WRITE_tRNS_SUPPORTED) - /* The tRNS chunk supplies transparency data for paletted images and - * other image types that don't need a full alpha channel. There are - * "num_trans" transparency values for a paletted image, stored in the - * same order as the palette colors, starting from index 0. Values - * for the data are in the range [0, 255], ranging from fully transparent - * to fully opaque, respectively. For non-paletted images, there is a - * single color specified which should be treated as fully transparent. - * Data is valid if (valid & PNG_INFO_tRNS) is non-zero. - */ - png_bytep trans; /* transparent values for paletted image */ - png_color_16 trans_values; /* transparent color for non-palette image */ -#endif /* PNG_READ_tRNS_SUPPORTED || PNG_WRITE_tRNS_SUPPORTED */ -#if defined(PNG_READ_bKGD_SUPPORTED) || defined(PNG_WRITE_bKGD_SUPPORTED) || \ - defined(PNG_READ_BACKGROUND_SUPPORTED) - /* The bKGD chunk gives the suggested image background color if the - * display program does not have its own background color and the image - * is needs to composited onto a background before display. The colors - * in "background" are normally in the same color space/depth as the - * pixel data. Data is valid if (valid & PNG_INFO_bKGD) is non-zero. - */ - png_color_16 background; -#endif /* PNG_READ_bKGD_SUPPORTED || PNG_WRITE_bKGD_SUPPORTED */ -#if defined(PNG_READ_oFFs_SUPPORTED) || defined(PNG_WRITE_oFFs_SUPPORTED) - /* The oFFs chunk gives the offset in "offset_unit_type" units rightwards - * and downwards from the top-left corner of the display, page, or other - * application-specific co-ordinate space. See the PNG_OFFSET_ defines - * below for the unit types. Valid if (valid & PNG_INFO_oFFs) non-zero. - */ - png_uint_32 x_offset; /* x offset on page */ - png_uint_32 y_offset; /* y offset on page */ - png_byte offset_unit_type; /* offset units type */ -#endif /* PNG_READ_oFFs_SUPPORTED || PNG_WRITE_oFFs_SUPPORTED */ -#if defined(PNG_READ_pHYs_SUPPORTED) || defined(PNG_WRITE_pHYs_SUPPORTED) - /* The pHYs chunk gives the physical pixel density of the image for - * display or printing in "phys_unit_type" units (see PNG_RESOLUTION_ - * defines below). Data is valid if (valid & PNG_INFO_pHYs) is non-zero. - */ - png_uint_32 x_pixels_per_unit; /* horizontal pixel density */ - png_uint_32 y_pixels_per_unit; /* vertical pixel density */ - png_byte phys_unit_type; /* resolution type (see PNG_RESOLUTION_ below) */ -#endif /* PNG_READ_pHYs_SUPPORTED || PNG_WRITE_pHYs_SUPPORTED */ -#if defined(PNG_READ_hIST_SUPPORTED) || defined(PNG_WRITE_hIST_SUPPORTED) - /* The hIST chunk contains the relative frequency or importance of the - * various palette entries, so that a viewer can intelligently select a - * reduced-color palette, if required. Data is an array of "num_palette" - * values in the range [0,65535]. Data valid if (valid & PNG_INFO_hIST) - * is non-zero. - */ - png_uint_16p hist; -#endif /* PNG_READ_hIST_SUPPORTED || PNG_WRITE_hIST_SUPPORTED */ -#if defined(PNG_READ_cHRM_SUPPORTED) || defined(PNG_WRITE_cHRM_SUPPORTED) - /* The cHRM chunk describes the CIE color characteristics of the monitor - * on which the PNG was created. This data allows the viewer to do gamut - * mapping of the input image to ensure that the viewer sees the same - * colors in the image as the creator. Values are in the range - * [0.0, 0.8]. Data valid if (valid & PNG_INFO_cHRM) non-zero. - */ - float x_white; - float y_white; - float x_red; - float y_red; - float x_green; - float y_green; - float x_blue; - float y_blue; -#endif /* PNG_READ_cHRM_SUPPORTED || PNG_WRITE_cHRM_SUPPORTED */ -#if defined(PNG_READ_pCAL_SUPPORTED) || defined(PNG_WRITE_pCAL_SUPPORTED) - /* The pCAL chunk describes a transformation between the stored pixel - * values and original physcical data values used to create the image. - * The integer range [0, 2^bit_depth - 1] maps to the floating-point - * range given by [pcal_X0, pcal_X1], and are further transformed by a - * (possibly non-linear) transformation function given by "pcal_type" - * and "pcal_params" into "pcal_units". Please see the PNG_EQUATION_ - * defines below, and the PNG-Group's Scientific Visualization extension - * chunks document png-scivis-19970203 for a complete description of the - * transformations and how they should be implemented, as well as the - * png-extensions document for a description of the ASCII parameter - * strings. Data values are valid if (valid & PNG_INFO_pCAL) non-zero. - */ - png_charp pcal_purpose; /* pCAL chunk description string */ - png_int_32 pcal_X0; /* minimum value */ - png_int_32 pcal_X1; /* maximum value */ - png_charp pcal_units; /* Latin-1 string giving physical units */ - png_charpp pcal_params; /* ASCII strings containing parameter values */ - png_byte pcal_type; /* equation type (see PNG_EQUATION_ below) */ - png_byte pcal_nparams; /* number of parameters given in pcal_params */ -#endif /* PNG_READ_pCAL_SUPPORTED || PNG_WRITE_pCAL_SUPPORTED */ -} png_info; -typedef png_info FAR * png_infop; -typedef png_info FAR * FAR * png_infopp; - -/* These describe the color_type field in png_info. */ -/* color type masks */ -#define PNG_COLOR_MASK_PALETTE 1 -#define PNG_COLOR_MASK_COLOR 2 -#define PNG_COLOR_MASK_ALPHA 4 - -/* color types. Note that not all combinations are legal */ -#define PNG_COLOR_TYPE_GRAY 0 -#define PNG_COLOR_TYPE_PALETTE (PNG_COLOR_MASK_COLOR | PNG_COLOR_MASK_PALETTE) -#define PNG_COLOR_TYPE_RGB (PNG_COLOR_MASK_COLOR) -#define PNG_COLOR_TYPE_RGB_ALPHA (PNG_COLOR_MASK_COLOR | PNG_COLOR_MASK_ALPHA) -#define PNG_COLOR_TYPE_GRAY_ALPHA (PNG_COLOR_MASK_ALPHA) - -/* This is for compression type. PNG 1.0 only defines the single type. */ -#define PNG_COMPRESSION_TYPE_BASE 0 /* Deflate method 8, 32K window */ -#define PNG_COMPRESSION_TYPE_DEFAULT PNG_COMPRESSION_TYPE_BASE - -/* This is for filter type. PNG 1.0 only defines the single type. */ -#define PNG_FILTER_TYPE_BASE 0 /* Single row per-byte filtering */ -#define PNG_FILTER_TYPE_DEFAULT PNG_FILTER_TYPE_BASE - -/* These are for the interlacing type. These values should NOT be changed. */ -#define PNG_INTERLACE_NONE 0 /* Non-interlaced image */ -#define PNG_INTERLACE_ADAM7 1 /* Adam7 interlacing */ -#define PNG_INTERLACE_LAST 2 /* Not a valid value */ - -/* These are for the oFFs chunk. These values should NOT be changed. */ -#define PNG_OFFSET_PIXEL 0 /* Offset in pixels */ -#define PNG_OFFSET_MICROMETER 1 /* Offset in micrometers (1/10^6 meter) */ -#define PNG_OFFSET_LAST 2 /* Not a valid value */ - -/* These are for the pCAL chunk. These values should NOT be changed. */ -#define PNG_EQUATION_LINEAR 0 /* Linear transformation */ -#define PNG_EQUATION_BASE_E 1 /* Exponential base e transform */ -#define PNG_EQUATION_ARBITRARY 2 /* Arbitrary base exponential transform */ -#define PNG_EQUATION_HYPERBOLIC 3 /* Hyperbolic sine transformation */ -#define PNG_EQUATION_LAST 4 /* Not a valid value */ - -/* These are for the pHYs chunk. These values should NOT be changed. */ -#define PNG_RESOLUTION_UNKNOWN 0 /* pixels/unknown unit (aspect ratio) */ -#define PNG_RESOLUTION_METER 1 /* pixels/meter */ -#define PNG_RESOLUTION_LAST 2 /* Not a valid value */ - -/* These are for the sRGB chunk. These values should NOT be changed. */ -#define PNG_sRGB_INTENT_SATURATION 0 -#define PNG_sRGB_INTENT_PERCEPTUAL 1 -#define PNG_sRGB_INTENT_ABSOLUTE 2 -#define PNG_sRGB_INTENT_RELATIVE 3 -#define PNG_sRGB_INTENT_LAST 4 /* Not a valid value */ - - - -/* These determine if an ancillary chunk's data has been successfully read - * from the PNG header, or if the application has filled in the corresponding - * data in the info_struct to be written into the output file. The values - * of the PNG_INFO_ defines should NOT be changed. - */ -#define PNG_INFO_gAMA 0x0001 -#define PNG_INFO_sBIT 0x0002 -#define PNG_INFO_cHRM 0x0004 -#define PNG_INFO_PLTE 0x0008 -#define PNG_INFO_tRNS 0x0010 -#define PNG_INFO_bKGD 0x0020 -#define PNG_INFO_hIST 0x0040 -#define PNG_INFO_pHYs 0x0080 -#define PNG_INFO_oFFs 0x0100 -#define PNG_INFO_tIME 0x0200 -#define PNG_INFO_pCAL 0x0400 -#define PNG_INFO_sRGB 0x0800 /* GR-P, 0.96a */ - -/* This is used for the transformation routines, as some of them - * change these values for the row. It also should enable using - * the routines for other purposes. - */ -typedef struct png_row_info_struct -{ - png_uint_32 width; /* width of row */ - png_uint_32 rowbytes; /* number of bytes in row */ - png_byte color_type; /* color type of row */ - png_byte bit_depth; /* bit depth of row */ - png_byte channels; /* number of channels (1, 2, 3, or 4) */ - png_byte pixel_depth; /* bits per pixel (depth * channels) */ -} png_row_info; - -typedef png_row_info FAR * png_row_infop; -typedef png_row_info FAR * FAR * png_row_infopp; - -/* These are the function types for the I/O functions, and the functions which - * modify the default I/O functions to user I/O functions. The png_error_ptr - * type should match that of user supplied warning and error functions, while - * the png_rw_ptr type should match that of the user read/write data functions. - */ -typedef struct png_struct_def png_struct; -typedef png_struct FAR * png_structp; - -typedef void (*png_error_ptr) PNGARG((png_structp, png_const_charp)); -typedef void (*png_rw_ptr) PNGARG((png_structp, png_bytep, png_size_t)); -typedef void (*png_flush_ptr) PNGARG((png_structp)); -typedef void (*png_read_status_ptr) PNGARG((png_structp, png_uint_32, int)); -typedef void (*png_write_status_ptr) PNGARG((png_structp, png_uint_32, int)); -#ifdef PNG_PROGRESSIVE_READ_SUPPORTED -typedef void (*png_progressive_info_ptr) PNGARG((png_structp, png_infop)); -typedef void (*png_progressive_end_ptr) PNGARG((png_structp, png_infop)); -typedef void (*png_progressive_row_ptr) PNGARG((png_structp, png_bytep, - png_uint_32, int)); -#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */ - -#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \ - defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) -typedef void (*png_user_transform_ptr) PNGARG((png_structp, - png_row_infop, png_bytep)); -#endif /* PNG_READ|WRITE_USER_TRANSFORM_SUPPORTED */ - -/* The structure that holds the information to read and write PNG files. - * The only people who need to care about what is inside of this are the - * people who will be modifying the library for their own special needs. - * It should NOT be accessed directly by an application, except to store - * the jmp_buf. - */ - -struct png_struct_def -{ - jmp_buf jmpbuf; /* used in png_error */ - - png_error_ptr error_fn; /* function for printing errors and aborting */ - png_error_ptr warning_fn; /* function for printing warnings */ - png_voidp error_ptr; /* user supplied struct for error functions */ - png_rw_ptr write_data_fn; /* function for writing output data */ - png_rw_ptr read_data_fn; /* function for reading input data */ -#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \ - defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) - png_user_transform_ptr read_user_transform_fn; /* user read transform */ - png_user_transform_ptr write_user_transform_fn; /* user write transform */ -#endif - png_voidp io_ptr; /* ptr to application struct for I/O functions*/ - - png_uint_32 mode; /* tells us where we are in the PNG file */ - png_uint_32 flags; /* flags indicating various things to libpng */ - png_uint_32 transformations; /* which transformations to perform */ - - z_stream zstream; /* pointer to decompression structure (below) */ - png_bytep zbuf; /* buffer for zlib */ - png_size_t zbuf_size; /* size of zbuf */ - int zlib_level; /* holds zlib compression level */ - int zlib_method; /* holds zlib compression method */ - int zlib_window_bits; /* holds zlib compression window bits */ - int zlib_mem_level; /* holds zlib compression memory level */ - int zlib_strategy; /* holds zlib compression strategy */ - - png_uint_32 width; /* width of image in pixels */ - png_uint_32 height; /* height of image in pixels */ - png_uint_32 num_rows; /* number of rows in current pass */ - png_uint_32 usr_width; /* width of row at start of write */ - png_uint_32 rowbytes; /* size of row in bytes */ - png_uint_32 irowbytes; /* size of current interlaced row in bytes */ - png_uint_32 iwidth; /* width of current interlaced row in pixels */ - png_uint_32 row_number; /* current row in interlace pass */ - png_bytep prev_row; /* buffer to save previous (unfiltered) row */ - png_bytep row_buf; /* buffer to save current (unfiltered) row */ - png_bytep sub_row; /* buffer to save "sub" row when filtering */ - png_bytep up_row; /* buffer to save "up" row when filtering */ - png_bytep avg_row; /* buffer to save "avg" row when filtering */ - png_bytep paeth_row; /* buffer to save "Paeth" row when filtering */ - png_row_info row_info; /* used for transformation routines */ - - png_uint_32 idat_size; /* current IDAT size for read */ - png_uint_32 crc; /* current chunk CRC value */ - png_colorp palette; /* palette from the input file */ - png_uint_16 num_palette; /* number of color entries in palette */ - png_uint_16 num_trans; /* number of transparency values */ - png_byte chunk_name[5]; /* null-terminated name of current chunk */ - png_byte compression; /* file compression type (always 0) */ - png_byte filter; /* file filter type (always 0) */ - png_byte interlaced; /* PNG_INTERLACE_NONE, PNG_INTERLACE_ADAM7 */ - png_byte pass; /* current interlace pass (0 - 6) */ - png_byte do_filter; /* row filter flags (see PNG_FILTER_ below ) */ - png_byte color_type; /* color type of file */ - png_byte bit_depth; /* bit depth of file */ - png_byte usr_bit_depth; /* bit depth of users row */ - png_byte pixel_depth; /* number of bits per pixel */ - png_byte channels; /* number of channels in file */ - png_byte usr_channels; /* channels at start of write */ - png_byte sig_bytes; /* magic bytes read/written from start of file */ - -#if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED) - png_byte filler; /* filler byte for 24->32-bit pixel expansion */ -#endif /* PNG_READ_FILLER_SUPPORTED */ -#if defined(PNG_READ_bKGD_SUPPORTED) - png_byte background_gamma_type; - float background_gamma; - png_color_16 background; /* background color in screen gamma space */ -#if defined(PNG_READ_GAMMA_SUPPORTED) - png_color_16 background_1; /* background normalized to gamma 1.0 */ -#endif /* PNG_READ_GAMMA && PNG_READ_bKGD_SUPPORTED */ -#endif /* PNG_READ_bKGD_SUPPORTED */ -#if defined(PNG_WRITE_FLUSH_SUPPORTED) - png_flush_ptr output_flush_fn;/* Function for flushing output */ - png_uint_32 flush_dist; /* how many rows apart to flush, 0 - no flush */ - png_uint_32 flush_rows; /* number of rows written since last flush */ -#endif /* PNG_WRITE_FLUSH_SUPPORTED */ -#if defined(PNG_READ_GAMMA_SUPPORTED) - int gamma_shift; /* number of "insignificant" bits 16-bit gamma */ - float gamma; /* file gamma value */ - float screen_gamma; /* screen gamma value (display_gamma/viewing_gamma */ -#endif /* PNG_READ_GAMMA_SUPPORTED */ -#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) - png_bytep gamma_table; /* gamma table for 8 bit depth files */ - png_bytep gamma_from_1; /* converts from 1.0 to screen */ - png_bytep gamma_to_1; /* converts from file to 1.0 */ - png_uint_16pp gamma_16_table; /* gamma table for 16 bit depth files */ - png_uint_16pp gamma_16_from_1; /* converts from 1.0 to screen */ - png_uint_16pp gamma_16_to_1; /* converts from file to 1.0 */ -#endif /* PNG_READ_GAMMA_SUPPORTED || PNG_WRITE_GAMMA_SUPPORTED */ -#if defined(PNG_READ_GAMMA_SUPPORTED) || defined (PNG_READ_sBIT_SUPPORTED) - png_color_8 sig_bit; /* significant bits in each available channel */ -#endif /* PNG_READ_GAMMA_SUPPORTED || PNG_READ_sBIT_SUPPORTED */ -#if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED) - png_color_8 shift; /* shift for significant bit tranformation */ -#endif /* PNG_READ_SHIFT_SUPPORTED || PNG_WRITE_SHIFT_SUPPORTED */ -#if defined(PNG_READ_tRNS_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) - png_bytep trans; /* transparency values for paletted files */ - png_color_16 trans_values; /* transparency values for non-paletted files */ -#endif /* PNG_READ_tRNS_SUPPORTED || PNG_READ_BACKGROUND_SUPPORTED */ - png_read_status_ptr read_row_fn; /* called after each row is decoded */ - png_write_status_ptr write_row_fn; /* called after each row is encoded */ -#ifdef PNG_PROGRESSIVE_READ_SUPPORTED - png_progressive_info_ptr info_fn; /* called after header data fully read */ - png_progressive_row_ptr row_fn; /* called after each prog. row is decoded */ - png_progressive_end_ptr end_fn; /* called after image is complete */ - png_bytep save_buffer_ptr; /* current location in save_buffer */ - png_bytep save_buffer; /* buffer for previously read data */ - png_bytep current_buffer_ptr; /* current location in current_buffer */ - png_bytep current_buffer; /* buffer for recently used data */ - png_uint_32 push_length; /* size of current input chunk */ - png_uint_32 skip_length; /* bytes to skip in input data */ - png_size_t save_buffer_size; /* amount of data now in save_buffer */ - png_size_t save_buffer_max; /* total size of save_buffer */ - png_size_t buffer_size; /* total amount of available input data */ - png_size_t current_buffer_size; /* amount of data now in current_buffer */ - int process_mode; /* what push library is currently doing */ - int cur_palette; /* current push library palette index */ -#if defined(PNG_READ_tEXt_SUPPORTED) || defined(PNG_READ_zTXt_SUPPORTED) - png_size_t current_text_size; /* current size of text input data */ - png_size_t current_text_left; /* how much text left to read in input */ - png_charp current_text; /* current text chunk buffer */ - png_charp current_text_ptr; /* current location in current_text */ -#endif /* PNG_PROGRESSIVE_READ_SUPPORTED && PNG_READ_tEXt/zTXt_SUPPORTED */ -#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */ -#if defined(__TURBOC__) && !defined(_Windows) && !defined(__FLAT__) -/* for the Borland special 64K segment handler */ - png_bytepp offset_table_ptr; - png_bytep offset_table; - png_uint_16 offset_table_number; - png_uint_16 offset_table_count; - png_uint_16 offset_table_count_free; -#endif /* __TURBOC__&&!_Windows&&!__FLAT__ */ -#if defined(PNG_READ_DITHER_SUPPORTED) - png_bytep palette_lookup; /* lookup table for dithering */ - png_bytep dither_index; /* index translation for palette files */ -#endif /* PNG_READ_DITHER_SUPPORTED */ -#if defined(PNG_READ_DITHER_SUPPORTED) || defined(PNG_READ_hIST_SUPPORTED) - png_uint_16p hist; /* histogram */ -#endif -#if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED) - png_byte heuristic_method; /* heuristic for row filter selection */ - png_byte num_prev_filters; /* number of weights for previous rows */ - png_bytep prev_filters; /* filter type(s) of previous row(s) */ - png_uint_16p filter_weights; /* weight(s) for previous line(s) */ - png_uint_16p inv_filter_weights; /* 1/weight(s) for previous line(s) */ - png_uint_16p filter_costs; /* relative filter calculation cost */ - png_uint_16p inv_filter_costs; /* 1/relative filter calculation cost */ -#endif /* PNG_WRITE_WEIGHTED_FILTER_SUPPORTED */ -#if defined(PNG_TIME_RFC1123_SUPPORTED) - png_charp time_buffer; /* String to hold RFC 1123 time text */ -#endif /* PNG_TIME_RFC1123_SUPPORTED */ -}; - -typedef png_struct FAR * FAR * png_structpp; - -/* Here are the function definitions most commonly used. This is not - * the place to find out how to use libpng. See libpng.txt for the - * full explanation, see example.c for the summary. This just provides - * a simple one line of the use of each function. - */ - -/* Tell lib we have already handled the first magic bytes. - * Handling more than 8 bytes from the beginning of the file is an error. - */ -extern PNG_EXPORT(void,png_set_sig_bytes) PNGARG((png_structp png_ptr, - int num_bytes)); - -/* Check sig[start] through sig[start + num_to_check - 1] to see if it's a - * PNG file. Returns zero if the supplied bytes match the 8-byte PNG - * signature, and non-zero otherwise. Having num_to_check == 0 or - * start > 7 will always fail (ie return non-zero). - */ -extern PNG_EXPORT(int,png_sig_cmp) PNGARG((png_bytep sig, png_size_t start, - png_size_t num_to_check)); - -/* Simple signature checking function. This is the same as calling - * png_check_sig(sig, n) := !png_sig_cmp(sig, 0, n). - */ -extern PNG_EXPORT(int,png_check_sig) PNGARG((png_bytep sig, int num)); - -/* Allocate and initialize png_ptr struct for reading, and any other memory. */ -extern PNG_EXPORT(png_structp,png_create_read_struct) - PNGARG((png_const_charp user_png_ver, voidp error_ptr, - png_error_ptr error_fn, png_error_ptr warn_fn)); - -/* Allocate and initialize png_ptr struct for reading, and any other memory */ -extern PNG_EXPORT(png_structp,png_create_write_struct) - PNGARG((png_const_charp user_png_ver, voidp error_ptr, - png_error_ptr error_fn, png_error_ptr warn_fn)); - -/* Write a PNG chunk - size, type, (optional) data, CRC. */ -extern PNG_EXPORT(void,png_write_chunk) PNGARG((png_structp png_ptr, - png_bytep chunk_name, png_bytep data, png_size_t length)); - -/* Write the start of a PNG chunk - length and chunk name. */ -extern PNG_EXPORT(void,png_write_chunk_start) PNGARG((png_structp png_ptr, - png_bytep chunk_name, png_uint_32 length)); - -/* Write the data of a PNG chunk started with png_write_chunk_start(). */ -extern PNG_EXPORT(void,png_write_chunk_data) PNGARG((png_structp png_ptr, - png_bytep data, png_size_t length)); - -/* Finish a chunk started with png_write_chunk_start() (includes CRC). */ -extern PNG_EXPORT(void,png_write_chunk_end) PNGARG((png_structp png_ptr)); - -/* Allocate and initialize the info structure */ -extern PNG_EXPORT(png_infop,png_create_info_struct) - PNGARG((png_structp png_ptr)); - -/* Initialize the info structure (old interface - NOT DLL EXPORTED) */ -extern void png_info_init PNGARG((png_infop info_ptr)); - -/* Writes all the PNG information before the image. */ -extern PNG_EXPORT(void,png_write_info) PNGARG((png_structp png_ptr, - png_infop info_ptr)); - -/* read the information before the actual image data. */ -extern PNG_EXPORT(void,png_read_info) PNGARG((png_structp png_ptr, - png_infop info_ptr)); - -#if defined(PNG_TIME_RFC1123_SUPPORTED) -extern PNG_EXPORT(png_charp,png_convert_to_rfc1123) - PNGARG((png_structp png_ptr, png_timep ptime)); -#endif /* PNG_TIME_RFC1123_SUPPORTED */ - -#if defined(PNG_WRITE_tIME_SUPPORTED) -/* convert from a struct tm to png_time */ -extern PNG_EXPORT(void,png_convert_from_struct_tm) PNGARG((png_timep ptime, - struct tm FAR * ttime)); - -/* convert from time_t to png_time. Uses gmtime() */ -extern PNG_EXPORT(void,png_convert_from_time_t) PNGARG((png_timep ptime, - time_t ttime)); -#endif /* PNG_WRITE_tIME_SUPPORTED */ - -#if defined(PNG_READ_EXPAND_SUPPORTED) -/* Expand data to 24 bit RGB, or 8 bit grayscale, with alpha if available. */ -extern PNG_EXPORT(void,png_set_expand) PNGARG((png_structp png_ptr)); -#endif /* PNG_READ_EXPAND_SUPPORTED */ - -#if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED) -/* Use blue, green, red order for pixels. */ -extern PNG_EXPORT(void,png_set_bgr) PNGARG((png_structp png_ptr)); -#endif /* PNG_READ_BGR_SUPPORTED || PNG_WRITE_BGR_SUPPORTED */ - -#if defined(PNG_READ_GRAY_TO_RGB_SUPPORTED) -/* Expand the grayscale to 24 bit RGB if necessary. */ -extern PNG_EXPORT(void,png_set_gray_to_rgb) PNGARG((png_structp png_ptr)); -#endif /* PNG_READ_GRAY_TO_RGB_SUPPORTED */ - -#if defined(PNG_READ_RGB_TO_GRAY_SUPPORTED) -/* Reduce RGB to grayscale. (Not yet implemented) */ -extern PNG_EXPORT(void,png_set_rgb_to_gray) PNGARG((png_structp png_ptr)); -#endif /* PNG_READ_RGB_TO_GRAY_SUPPORTED */ - -extern PNG_EXPORT(void,png_build_grayscale_palette) PNGARG((int bit_depth, - png_colorp palette)); - -#if defined(PNG_READ_STRIP_ALPHA_SUPPORTED) -extern PNG_EXPORT(void,png_set_strip_alpha) PNGARG((png_structp png_ptr)); -#endif /* PNG_READ_STRIP_ALPHA_SUPPORTED */ - -#if defined(PNG_READ_SWAP_ALPHA_SUPPORTED) || \ - defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED) -extern PNG_EXPORT(void,png_set_swap_alpha) PNGARG((png_structp png_ptr)); -#endif /* PNG_READ_SWAP_ALPHA_SUPPORTED || PNG_WRITE_SWAP_ALPHA_SUPPORTED */ - -#if defined(PNG_READ_INVERT_ALPHA_SUPPORTED) || \ - defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED) -extern PNG_EXPORT(void,png_set_invert_alpha) PNGARG((png_structp png_ptr)); -#endif /* PNG_READ_INVERT_ALPHA_SUPPORTED || PNG_WRITE_INVERT_ALPHA_SUPPORTED */ - -#if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED) -/* Add a filler byte to 24-bit RGB images. */ -extern PNG_EXPORT(void,png_set_filler) PNGARG((png_structp png_ptr, - png_uint_32 filler, int flags)); - -/* The values of the PNG_FILLER_ defines should NOT be changed */ -#define PNG_FILLER_BEFORE 0 -#define PNG_FILLER_AFTER 1 -#endif /* PNG_READ_FILLER_SUPPORTED || PNG_WRITE_FILLER_SUPPORTED */ - -#if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED) -/* Swap bytes in 16 bit depth files. */ -extern PNG_EXPORT(void,png_set_swap) PNGARG((png_structp png_ptr)); -#endif /* PNG_READ_SWAP_SUPPORTED || PNG_WRITE_SWAP_SUPPORTED */ - -#if defined(PNG_READ_PACK_SUPPORTED) || defined(PNG_WRITE_PACK_SUPPORTED) -/* Use 1 byte per pixel in 1, 2, or 4 bit depth files. */ -extern PNG_EXPORT(void,png_set_packing) PNGARG((png_structp png_ptr)); -#endif /* PNG_READ_PACK_SUPPORTED || PNG_WRITE_PACK_SUPPORTED */ - -#if defined(PNG_READ_PACKSWAP_SUPPORTED) || defined(PNG_WRITE_PACKSWAP_SUPPORTED) -/* Swap packing order of pixels in bytes. */ -extern PNG_EXPORT(void,png_set_packswap) PNGARG((png_structp png_ptr)); -#endif /* PNG_READ_PACKSWAP_SUPPORTED || PNG_WRITE_PACKSWAP_SUPPOR */ - -#if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED) -/* Converts files to legal bit depths. */ -extern PNG_EXPORT(void,png_set_shift) PNGARG((png_structp png_ptr, - png_color_8p true_bits)); -#endif /* PNG_READ_SHIFT_SUPPORTED || PNG_WRITE_SHIFT_SUPPORTED */ - -#if defined(PNG_READ_INTERLACING_SUPPORTED) || \ - defined(PNG_WRITE_INTERLACING_SUPPORTED) -/* Have the code handle the interlacing. Returns the number of passes. */ -extern PNG_EXPORT(int,png_set_interlace_handling) PNGARG((png_structp png_ptr)); -#endif /* PNG_READ_INTERLACING_SUPPORTED || PNG_WRITE_INTERLACING_SUPPORTED */ - -#if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED) -/* Invert monocrome files */ -extern PNG_EXPORT(void,png_set_invert_mono) PNGARG((png_structp png_ptr)); -#endif /* PNG_READ_INVERT_SUPPORTED || PNG_WRITE_INVERT_SUPPORTED */ - -#if defined(PNG_READ_BACKGROUND_SUPPORTED) -/* Handle alpha and tRNS by replacing with a background color. */ -extern PNG_EXPORT(void,png_set_background) PNGARG((png_structp png_ptr, - png_color_16p background_color, int background_gamma_code, - int need_expand, double background_gamma)); -#define PNG_BACKGROUND_GAMMA_UNKNOWN 0 -#define PNG_BACKGROUND_GAMMA_SCREEN 1 -#define PNG_BACKGROUND_GAMMA_FILE 2 -#define PNG_BACKGROUND_GAMMA_UNIQUE 3 -#endif /* PNG_READ_BACKGROUND_SUPPORTED */ - -#if defined(PNG_READ_16_TO_8_SUPPORTED) -/* strip the second byte of information from a 16 bit depth file. */ -extern PNG_EXPORT(void,png_set_strip_16) PNGARG((png_structp png_ptr)); -#endif /* PNG_READ_16_TO_8_SUPPORTED */ - -#if defined(PNG_READ_DITHER_SUPPORTED) -/* Turn on dithering, and reduce the palette to the number of colors available. */ -extern PNG_EXPORT(void,png_set_dither) PNGARG((png_structp png_ptr, - png_colorp palette, int num_palette, int maximum_colors, - png_uint_16p histogram, int full_dither)); -#endif /* PNG_READ_DITHER_SUPPORTED */ - -#if defined(PNG_READ_GAMMA_SUPPORTED) -/* Handle gamma correction. Screen_gamma=(display_gamma/viewing_gamma) */ -extern PNG_EXPORT(void,png_set_gamma) PNGARG((png_structp png_ptr, - double screen_gamma, double default_file_gamma)); -#endif /* PNG_READ_GAMMA_SUPPORTED */ - -#if defined(PNG_WRITE_FLUSH_SUPPORTED) -/* Set how many lines between output flushes - 0 for no flushing */ -extern PNG_EXPORT(void,png_set_flush) PNGARG((png_structp png_ptr, int nrows)); - -/* Flush the current PNG output buffer */ -extern PNG_EXPORT(void,png_write_flush) PNGARG((png_structp png_ptr)); -#endif /* PNG_WRITE_FLUSH_SUPPORTED */ - -/* optional update palette with requested transformations */ -extern PNG_EXPORT(void,png_start_read_image) PNGARG((png_structp png_ptr)); - -/* optional call to update the users info structure */ -extern PNG_EXPORT(void,png_read_update_info) PNGARG((png_structp png_ptr, - png_infop info_ptr)); - -/* read a one or more rows of image data.*/ -extern PNG_EXPORT(void,png_read_rows) PNGARG((png_structp png_ptr, - png_bytepp row, png_bytepp display_row, png_uint_32 num_rows)); - -/* read a row of data.*/ -extern PNG_EXPORT(void,png_read_row) PNGARG((png_structp png_ptr, - png_bytep row, - png_bytep display_row)); - -/* read the whole image into memory at once. */ -extern PNG_EXPORT(void,png_read_image) PNGARG((png_structp png_ptr, - png_bytepp image)); - -/* write a row of image data */ -extern PNG_EXPORT(void,png_write_row) PNGARG((png_structp png_ptr, - png_bytep row)); - -/* write a few rows of image data */ -extern PNG_EXPORT(void,png_write_rows) PNGARG((png_structp png_ptr, - png_bytepp row, png_uint_32 num_rows)); - -/* write the image data */ -extern PNG_EXPORT(void,png_write_image) PNGARG((png_structp png_ptr, - png_bytepp image)); - -/* writes the end of the PNG file. */ -extern PNG_EXPORT(void,png_write_end) PNGARG((png_structp png_ptr, - png_infop info_ptr)); - -/* read the end of the PNG file. */ -extern PNG_EXPORT(void,png_read_end) PNGARG((png_structp png_ptr, - png_infop info_ptr)); - -/* free any memory associated with the png_info_struct */ -extern PNG_EXPORT(void,png_destroy_info_struct) PNGARG((png_structp png_ptr, - png_infopp info_ptr_ptr)); - -/* free any memory associated with the png_struct and the png_info_structs */ -extern PNG_EXPORT(void,png_destroy_read_struct) PNGARG((png_structpp - png_ptr_ptr, png_infopp info_ptr_ptr, png_infopp end_info_ptr_ptr)); - -/* free all memory used by the read (old method - NOT DLL EXPORTED) */ -extern void png_read_destroy PNGARG((png_structp png_ptr, png_infop info_ptr, - png_infop end_info_ptr)); - -/* free any memory associated with the png_struct and the png_info_structs */ -extern PNG_EXPORT(void,png_destroy_write_struct) - PNGARG((png_structpp png_ptr_ptr, png_infopp info_ptr_ptr)); - -/* free any memory used in info_ptr struct (old method - NOT DLL EXPORTED) */ -extern void png_write_destroy_info PNGARG((png_infop info_ptr)); - -/* free any memory used in png_ptr struct (old method - NOT DLL EXPORTED) */ -extern void png_write_destroy PNGARG((png_structp png_ptr)); - -/* set the libpng method of handling chunk CRC errors */ -extern PNG_EXPORT(void,png_set_crc_action) PNGARG((png_structp png_ptr, - int crit_action, int ancil_action)); - -/* Values for png_set_crc_action() to say how to handle CRC errors in - * ancillary and critical chunks, and whether to use the data contained - * therein. Note that it is impossible to "discard" data in a critical - * chunk. For versions prior to 0.90, the action was always error/quit, - * whereas in version 0.90 and later, the action for CRC errors in ancillary - * chunks is warn/discard. These values should NOT be changed. - * - * value action:critical action:ancillary - */ -#define PNG_CRC_DEFAULT 0 /* error/quit warn/discard data */ -#define PNG_CRC_ERROR_QUIT 1 /* error/quit error/quit */ -#define PNG_CRC_WARN_DISCARD 2 /* (INVALID) warn/discard data */ -#define PNG_CRC_WARN_USE 3 /* warn/use data warn/use data */ -#define PNG_CRC_QUIET_USE 4 /* quiet/use data quiet/use data */ -#define PNG_CRC_NO_CHANGE 5 /* use current value use current value */ - -/* These functions give the user control over the scan-line filtering in - * libpng and the compression methods used by zlib. These functions are - * mainly useful for testing, as the defaults should work with most users. - * Those users who are tight on memory or want faster performance at the - * expense of compression can modify them. See the compression library - * header file (zlib.h) for an explination of the compression functions. - */ - -/* set the filtering method(s) used by libpng. Currently, the only valid - * value for "method" is 0. - */ -extern PNG_EXPORT(void,png_set_filter) PNGARG((png_structp png_ptr, int method, - int filters)); - -/* Flags for png_set_filter() to say which filters to use. The flags - * are chosen so that they don't conflict with real filter types - * below, in case they are supplied instead of the #defined constants. - * These values should NOT be changed. - */ -#define PNG_NO_FILTERS 0x00 -#define PNG_FILTER_NONE 0x08 -#define PNG_FILTER_SUB 0x10 -#define PNG_FILTER_UP 0x20 -#define PNG_FILTER_AVG 0x40 -#define PNG_FILTER_PAETH 0x80 -#define PNG_ALL_FILTERS (PNG_FILTER_NONE | PNG_FILTER_SUB | PNG_FILTER_UP | \ - PNG_FILTER_AVG | PNG_FILTER_PAETH) - -/* Filter values (not flags) - used in pngwrite.c, pngwutil.c for now. - * These defines should NOT be changed. - */ -#define PNG_FILTER_VALUE_NONE 0 -#define PNG_FILTER_VALUE_SUB 1 -#define PNG_FILTER_VALUE_UP 2 -#define PNG_FILTER_VALUE_AVG 3 -#define PNG_FILTER_VALUE_PAETH 4 -#define PNG_FILTER_VALUE_LAST 5 - -#if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED) /* EXPERIMENTAL */ -/* The "heuristic_method" is given by one of the PNG_FILTER_HEURISTIC_ - * defines, either the default (minimum-sum-of-absolute-differences), or - * the experimental method (weighted-minimum-sum-of-absolute-differences). - * - * Weights are factors >= 1.0, indicating how important it is to keep the - * filter type consistent between rows. Larger numbers mean the current - * filter is that many times as likely to be the same as the "num_weights" - * previous filters. This is cumulative for each previous row with a weight. - * There needs to be "num_weights" values in "filter_weights", or it can be - * NULL if the weights aren't being specified. Weights have no influence on - * the selection of the first row filter. Well chosen weights can (in theory) - * improve the compression for a given image. - * - * Costs are factors >= 1.0 indicating the relative decoding costs of a - * filter type. Higher costs indicate more decoding expense, and are - * therefore less likely to be selected over a filter with lower computational - * costs. There needs to be a value in "filter_costs" for each valid filter - * type (given by PNG_FILTER_VALUE_LAST), or it can be NULL if you aren't - * setting the costs. Costs try to improve the speed of decompression without - * unduly increasing the compressed image size. - * - * A negative weight or cost indicates the default value is to be used, and - * values in the range [0.0, 1.0) indicate the value is to remain unchanged. - * The default values for both weights and costs are currently 1.0, but may - * change if good general weighting/cost heuristics can be found. If both - * the weights and costs are set to 1.0, this degenerates the WEIGHTED method - * to the UNWEIGHTED method, but with added encoding time/computation. - */ -extern PNG_EXPORT(void,png_set_filter_heuristics) PNGARG((png_structp png_ptr, - int heuristic_method, int num_weights, png_doublep filter_weights, - png_doublep filter_costs)); -#endif /* PNG_WRITE_WEIGHTED_FILTER_SUPPORTED */ - -/* Heuristic used for row filter selection. These defines should NOT be - * changed. - */ -#define PNG_FILTER_HEURISTIC_DEFAULT 0 /* Currently "UNWEIGHTED" */ -#define PNG_FILTER_HEURISTIC_UNWEIGHTED 1 /* Used by libpng < 0.95 */ -#define PNG_FILTER_HEURISTIC_WEIGHTED 2 /* Experimental feature */ -#define PNG_FILTER_HEURISTIC_LAST 3 /* Not a valid value */ - -/* Set the library compression level. Currently, valid values range from - * 0 - 9, corresponding directly to the zlib compression levels 0 - 9 - * (0 - no compression, 9 - "maximal" compression). Note that tests have - * shown that zlib compression levels 3-6 usually perform as well as level 9 - * for PNG images, and do considerably fewer caclulations. In the future, - * these values may not correspond directly to the zlib compression levels. - */ -extern PNG_EXPORT(void,png_set_compression_level) PNGARG((png_structp png_ptr, - int level)); - -extern PNG_EXPORT(void,png_set_compression_mem_level) - PNGARG((png_structp png_ptr, int mem_level)); - -extern PNG_EXPORT(void,png_set_compression_strategy) - PNGARG((png_structp png_ptr, int strategy)); - -extern PNG_EXPORT(void,png_set_compression_window_bits) - PNGARG((png_structp png_ptr, int window_bits)); - -extern PNG_EXPORT(void,png_set_compression_method) PNGARG((png_structp png_ptr, - int method)); - -/* These next functions are called for input/output, memory, and error - * handling. They are in the file pngrio.c, pngwio.c, and pngerror.c, - * and call standard C I/O routines such as fread(), fwrite(), and - * fprintf(). These functions can be made to use other I/O routines - * at run time for those applications that need to handle I/O in a - * different manner by calling png_set_???_fn(). See libpng.txt for - * more information. - */ - -#if !defined(PNG_NO_STDIO) -/* Initialize the input/output for the PNG file to the default functions. */ -extern PNG_EXPORT(void,png_init_io) PNGARG((png_structp png_ptr, FILE *fp)); -#endif - -/* Replace the (error and abort), and warning functions with user - * supplied functions. If no messages are to be printed you must still - * write and use replacement functions. The replacement error_fn should - * still do a longjmp to the last setjmp location if you are using this - * method of error handling. If error_fn or warning_fn is NULL, the - * default function will be used. - */ -extern PNG_EXPORT(void,png_set_error_fn) PNGARG((png_structp png_ptr, - png_voidp error_ptr, png_error_ptr error_fn, png_error_ptr warning_fn)); - -/* Return the user pointer associated with the error functions */ -extern PNG_EXPORT(png_voidp,png_get_error_ptr) PNGARG((png_structp png_ptr)); - -/* Replace the default data output functions with a user supplied one(s). - * If buffered output is not used, then output_flush_fn can be set to NULL. - * If PNG_WRITE_FLUSH_SUPPORTED is not defined at libpng compile time - * output_flush_fn will be ignored (and thus can be NULL). - */ -extern PNG_EXPORT(void,png_set_write_fn) PNGARG((png_structp png_ptr, - png_voidp io_ptr, png_rw_ptr write_data_fn, png_flush_ptr output_flush_fn)); - -/* Replace the default data input function with a user supplied one. */ -extern PNG_EXPORT(void,png_set_read_fn) PNGARG((png_structp png_ptr, - png_voidp io_ptr, png_rw_ptr read_data_fn)); - -/* Return the user pointer associated with the I/O functions */ -extern PNG_EXPORT(png_voidp,png_get_io_ptr) PNGARG((png_structp png_ptr)); - -extern PNG_EXPORT(void,png_set_read_status_fn) PNGARG((png_structp png_ptr, - png_read_status_ptr read_row_fn)); - -extern PNG_EXPORT(void,png_set_write_status_fn) PNGARG((png_structp png_ptr, - png_write_status_ptr write_row_fn)); - -#ifdef PNG_READ_USER_TRANSFORM_SUPPORTED -extern PNG_EXPORT(void,png_set_read_user_transform_fn) PNGARG((png_structp - png_ptr, png_user_transform_ptr read_user_transform_fn)); -#endif - -#ifdef PNG_WRITE_USER_TRANSFORM_SUPPORTED -extern PNG_EXPORT(void,png_set_write_user_transform_fn) PNGARG((png_structp - png_ptr, png_user_transform_ptr write_user_transform_fn)); -#endif - -#ifdef PNG_PROGRESSIVE_READ_SUPPORTED -/* Sets the function callbacks for the push reader, and a pointer to a - * user-defined structure available to the callback functions. - */ -extern PNG_EXPORT(void,png_set_progressive_read_fn) PNGARG((png_structp png_ptr, - png_voidp progressive_ptr, - png_progressive_info_ptr info_fn, png_progressive_row_ptr row_fn, - png_progressive_end_ptr end_fn)); - -/* returns the user pointer associated with the push read functions */ -extern PNG_EXPORT(png_voidp,png_get_progressive_ptr) - PNGARG((png_structp png_ptr)); - -/* function to be called when data becomes available */ -extern PNG_EXPORT(void,png_process_data) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_bytep buffer, png_size_t buffer_size)); - -/* function which combines rows. Not very much different than the - * png_combine_row() call. Is this even used????? - */ -extern PNG_EXPORT(void,png_progressive_combine_row) PNGARG((png_structp png_ptr, - png_bytep old_row, png_bytep new_row)); -#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */ - -extern PNG_EXPORT(png_voidp,png_malloc) PNGARG((png_structp png_ptr, - png_uint_32 size)); - -/* frees a pointer allocated by png_malloc() */ -extern PNG_EXPORT(void,png_free) PNGARG((png_structp png_ptr, png_voidp ptr)); - -extern PNG_EXPORT(png_voidp,png_memcpy_check) PNGARG((png_structp png_ptr, - png_voidp s1, png_voidp s2, png_uint_32 size)); - -extern PNG_EXPORT(png_voidp,png_memset_check) PNGARG((png_structp png_ptr, - png_voidp s1, int value, png_uint_32 size)); - -#ifdef PNGTEST_MEMORY_DEBUG -/* debugging versions of png_malloc() and png_free() */ -extern PNG_EXPORT(png_voidp,png_debug_malloc) PNGARG((png_structp png_ptr, - png_uint_32 size)); -extern PNG_EXPORT(void,png_debug_free) PNGARG((png_structp png_ptr, - png_voidp ptr)); -#endif -#if defined(USE_FAR_KEYWORD) /* memory model conversion function */ -extern void *png_far_to_near PNGARG((png_structp png_ptr,png_voidp ptr, - int check)); -#endif /* USE_FAR_KEYWORD */ - -/* Fatal error in PNG image of libpng - can't continue */ -extern PNG_EXPORT(void,png_error) PNGARG((png_structp png_ptr, - png_const_charp error)); - -/* The same, but the chunk name is prepended to the error string. */ -extern PNG_EXPORT(void,png_chunk_error) PNGARG((png_structp png_ptr, - png_const_charp error)); - -/* Non-fatal error in libpng. Can continue, but may have a problem. */ -extern PNG_EXPORT(void,png_warning) PNGARG((png_structp png_ptr, - png_const_charp message)); - -/* Non-fatal error in libpng, chunk name is prepended to message. */ -extern PNG_EXPORT(void,png_chunk_warning) PNGARG((png_structp png_ptr, - png_const_charp message)); - -/* The png_set_ functions are for storing values in the png_info_struct. - * Similarly, the png_get_ calls are used to read values from the - * png_info_struct, either storing the parameters in the passed variables, or - * setting pointers into the png_info_struct where the data is stored. The - * png_get_ functions return a non-zero value if the data was available - * in info_ptr, or return zero and do not change any of the parameters if the - * data was not available. - * - * These functions should be used instead of directly accessing png_info - * to avoid problems with future changes in the size and internal layout of - * png_info_struct. - */ -/* Returns "flag" if chunk data is valid in info_ptr. */ -extern PNG_EXPORT(png_uint_32,png_get_valid) PNGARG((png_structp png_ptr, -png_infop info_ptr, png_uint_32 flag)); - -/* Returns number of bytes needed to hold a transformed row. */ -extern PNG_EXPORT(png_uint_32,png_get_rowbytes) PNGARG((png_structp png_ptr, -png_infop info_ptr)); - -/* Returns number of color channels in image. */ -extern PNG_EXPORT(png_byte,png_get_channels) PNGARG((png_structp png_ptr, -png_infop info_ptr)); - -#ifdef PNG_EASY_ACCESS_SUPPORTED -/* Returns image width in pixels. */ -extern PNG_EXPORT(png_uint_32, png_get_image_width) PNGARG((png_structp -png_ptr, png_infop info_ptr)); - -/* Returns image height in pixels. */ -extern PNG_EXPORT(png_uint_32, png_get_image_height) PNGARG((png_structp -png_ptr, png_infop info_ptr)); - -/* Returns image bit_depth. */ -extern PNG_EXPORT(png_byte, png_get_bit_depth) PNGARG((png_structp -png_ptr, png_infop info_ptr)); - -/* Returns image color_type. */ -extern PNG_EXPORT(png_byte, png_get_color_type) PNGARG((png_structp -png_ptr, png_infop info_ptr)); - -/* Returns image filter_type. */ -extern PNG_EXPORT(png_byte, png_get_filter_type) PNGARG((png_structp -png_ptr, png_infop info_ptr)); - -/* Returns image interlace_type. */ -extern PNG_EXPORT(png_byte, png_get_interlace_type) PNGARG((png_structp -png_ptr, png_infop info_ptr)); - -/* Returns image compression_type. */ -extern PNG_EXPORT(png_byte, png_get_compression_type) PNGARG((png_structp -png_ptr, png_infop info_ptr)); - -/* Returns image resolution in pixels per meter, from pHYs chunk data. */ -extern PNG_EXPORT(png_uint_32, png_get_pixels_per_meter) PNGARG((png_structp -png_ptr, png_infop info_ptr)); -extern PNG_EXPORT(png_uint_32, png_get_x_pixels_per_meter) PNGARG((png_structp -png_ptr, png_infop info_ptr)); -extern PNG_EXPORT(png_uint_32, png_get_y_pixels_per_meter) PNGARG((png_structp -png_ptr, png_infop info_ptr)); - -/* Returns pixel aspect ratio, computed from pHYs chunk data. */ -extern PNG_EXPORT(float, png_get_pixel_aspect_ratio) PNGARG((png_structp -png_ptr, png_infop info_ptr)); - -/* Returns image x, y offset in pixels or microns, from oFFs chunk data. */ -extern PNG_EXPORT(png_uint_32, png_get_x_offset_pixels) PNGARG((png_structp -png_ptr, png_infop info_ptr)); -extern PNG_EXPORT(png_uint_32, png_get_y_offset_pixels) PNGARG((png_structp -png_ptr, png_infop info_ptr)); -extern PNG_EXPORT(png_uint_32, png_get_x_offset_microns) PNGARG((png_structp -png_ptr, png_infop info_ptr)); -extern PNG_EXPORT(png_uint_32, png_get_y_offset_microns) PNGARG((png_structp -png_ptr, png_infop info_ptr)); - -#endif /* PNG_EASY_ACCESS_SUPPORTED */ - -/* Returns pointer to signature string read from PNG header */ -extern PNG_EXPORT(png_bytep,png_get_signature) PNGARG((png_structp png_ptr, -png_infop info_ptr)); - -#if defined(PNG_READ_bKGD_SUPPORTED) -extern PNG_EXPORT(png_uint_32,png_get_bKGD) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_color_16p *background)); -#endif /* PNG_READ_bKGD_SUPPORTED */ - -#if defined(PNG_READ_bKGD_SUPPORTED) || defined(PNG_WRITE_bKGD_SUPPORTED) -extern PNG_EXPORT(void,png_set_bKGD) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_color_16p background)); -#endif /* PNG_READ_bKGD_SUPPORTED || PNG_WRITE_bKGD_SUPPORTED */ - -#if defined(PNG_READ_cHRM_SUPPORTED) -extern PNG_EXPORT(png_uint_32,png_get_cHRM) PNGARG((png_structp png_ptr, - png_infop info_ptr, double *white_x, double *white_y, double *red_x, - double *red_y, double *green_x, double *green_y, double *blue_x, - double *blue_y)); -#endif /* PNG_READ_cHRM_SUPPORTED */ - -#if defined(PNG_READ_cHRM_SUPPORTED) || defined(PNG_WRITE_cHRM_SUPPORTED) -extern PNG_EXPORT(void,png_set_cHRM) PNGARG((png_structp png_ptr, - png_infop info_ptr, double white_x, double white_y, double red_x, - double red_y, double green_x, double green_y, double blue_x, double blue_y)); -#endif /* PNG_READ_cHRM_SUPPORTED || PNG_WRITE_cHRM_SUPPORTED */ - -#if defined(PNG_READ_gAMA_SUPPORTED) -extern PNG_EXPORT(png_uint_32,png_get_gAMA) PNGARG((png_structp png_ptr, - png_infop info_ptr, double *file_gamma)); -#endif /* PNG_READ_gAMA_SUPPORTED */ - -#if defined(PNG_READ_gAMA_SUPPORTED) || defined(PNG_WRITE_gAMA_SUPPORTED) -extern PNG_EXPORT(void,png_set_gAMA) PNGARG((png_structp png_ptr, - png_infop info_ptr, double file_gamma)); -#endif /* PNG_READ_gAMA_SUPPORTED || PNG_WRITE_gAMA_SUPPORTED */ - -#if defined(PNG_READ_hIST_SUPPORTED) -extern PNG_EXPORT(png_uint_32,png_get_hIST) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_uint_16p *hist)); -#endif /* PNG_READ_hIST_SUPPORTED */ - -#if defined(PNG_READ_hIST_SUPPORTED) || defined(PNG_WRITE_hIST_SUPPORTED) -extern PNG_EXPORT(void,png_set_hIST) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_uint_16p hist)); -#endif /* PNG_READ_hIST_SUPPORTED || PNG_WRITE_hIST_SUPPORTED */ - -extern PNG_EXPORT(png_uint_32,png_get_IHDR) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_uint_32 *width, png_uint_32 *height, - int *bit_depth, int *color_type, int *interlace_type, - int *compression_type, int *filter_type)); - -extern PNG_EXPORT(void,png_set_IHDR) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_uint_32 width, png_uint_32 height, int bit_depth, - int color_type, int interlace_type, int compression_type, int filter_type)); - -#if defined(PNG_READ_oFFs_SUPPORTED) -extern PNG_EXPORT(png_uint_32,png_get_oFFs) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_uint_32 *offset_x, png_uint_32 *offset_y, - int *unit_type)); -#endif /* PNG_READ_oFFs_SUPPORTED */ - -#if defined(PNG_READ_oFFs_SUPPORTED) || defined(PNG_WRITE_oFFs_SUPPORTED) -extern PNG_EXPORT(void,png_set_oFFs) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_uint_32 offset_x, png_uint_32 offset_y, - int unit_type)); -#endif /* PNG_READ_oFFs_SUPPORTED || PNG_WRITE_oFFs_SUPPORTED */ - -#if defined(PNG_READ_pCAL_SUPPORTED) -extern PNG_EXPORT(png_uint_32,png_get_pCAL) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_charp *purpose, png_int_32 *X0, png_int_32 *X1, - int *type, int *nparams, png_charp *units, png_charpp *params)); -#endif /* PNG_READ_pCAL_SUPPORTED */ - -#if defined(PNG_READ_pCAL_SUPPORTED) || defined(PNG_WRITE_pCAL_SUPPORTED) -extern PNG_EXPORT(void,png_set_pCAL) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_charp purpose, png_int_32 X0, png_int_32 X1, - int type, int nparams, png_charp units, png_charpp params)); -#endif /* PNG_READ_pCAL_SUPPORTED || PNG_WRITE_pCAL_SUPPORTED */ - -#if defined(PNG_READ_pHYs_SUPPORTED) -extern PNG_EXPORT(png_uint_32,png_get_pHYs) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type)); -#endif /* PNG_READ_pHYs_SUPPORTED */ - -#if defined(PNG_READ_pHYs_SUPPORTED) || defined(PNG_WRITE_pHYs_SUPPORTED) -extern PNG_EXPORT(void,png_set_pHYs) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_uint_32 res_x, png_uint_32 res_y, int unit_type)); -#endif /* PNG_READ_pHYs_SUPPORTED || PNG_WRITE_pHYs_SUPPORTED */ - -extern PNG_EXPORT(png_uint_32,png_get_PLTE) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_colorp *palette, int *num_palette)); - -extern PNG_EXPORT(void,png_set_PLTE) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_colorp palette, int num_palette)); - -#if defined(PNG_READ_sBIT_SUPPORTED) -extern PNG_EXPORT(png_uint_32,png_get_sBIT) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_color_8p *sig_bit)); -#endif /* PNG_READ_sBIT_SUPPORTED */ - -#if defined(PNG_READ_sBIT_SUPPORTED) || defined(PNG_WRITE_sBIT_SUPPORTED) -extern PNG_EXPORT(void,png_set_sBIT) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_color_8p sig_bit)); -#endif /* PNG_READ_sBIT_SUPPORTED || PNG_WRITE_sBIT_SUPPORTED */ - -#if defined(PNG_READ_sRGB_SUPPORTED) -extern PNG_EXPORT(png_uint_32,png_get_sRGB) PNGARG((png_structp png_ptr, - png_infop info_ptr, int *intent)); -#endif /* PNG_READ_sRGB_SUPPORTED */ - -#if defined(PNG_READ_sRGB_SUPPORTED) || defined(PNG_WRITE_sRGB_SUPPORTED) -extern PNG_EXPORT(void,png_set_sRGB) PNGARG((png_structp png_ptr, - png_infop info_ptr, int intent)); -extern PNG_EXPORT(void,png_set_sRGB_gAMA_and_cHRM) PNGARG((png_structp png_ptr, - png_infop info_ptr, int intent)); -#endif /* PNG_READ_sRGB_SUPPORTED || PNG_WRITE_sRGB_SUPPORTED */ - -#if defined(PNG_READ_tEXt_SUPPORTED) || defined(PNG_READ_zTXt_SUPPORTED) -/* png_get_text also returns the number of text chunks in text_ptr */ -extern PNG_EXPORT(png_uint_32,png_get_text) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_textp *text_ptr, int *num_text)); -#endif /* PNG_READ_tEXt_SUPPORTED || PNG_READ_zTXt_SUPPORTED */ - -#if defined(PNG_READ_tEXt_SUPPORTED) || defined(PNG_WRITE_tEXt_SUPPORTED) || \ - defined(PNG_READ_zTXt_SUPPORTED) || defined(PNG_WRITE_zTXt_SUPPORTED) -extern PNG_EXPORT(void,png_set_text) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_textp text_ptr, int num_text)); -#endif /* PNG_READ_tEXt_SUPPORTED || PNG_WRITE_tEXt_SUPPORTED || - PNG_READ_zTXt_SUPPORTED || PNG_WRITE_zTXt_SUPPORTED */ - -#if defined(PNG_READ_tIME_SUPPORTED) -extern PNG_EXPORT(png_uint_32,png_get_tIME) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_timep *mod_time)); -#endif /* PNG_READ_tIME_SUPPORTED */ - -#if defined(PNG_READ_tIME_SUPPORTED) || defined(PNG_WRITE_tIME_SUPPORTED) -extern PNG_EXPORT(void,png_set_tIME) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_timep mod_time)); -#endif /* PNG_READ_tIME_SUPPORTED || PNG_WRITE_tIME_SUPPORTED */ - -#if defined(PNG_READ_tRNS_SUPPORTED) -extern PNG_EXPORT(png_uint_32,png_get_tRNS) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_bytep *trans, int *num_trans, - png_color_16p *trans_values)); -#endif /* PNG_READ_tRNS_SUPPORTED */ - -#if defined(PNG_READ_tRNS_SUPPORTED) || defined(PNG_WRITE_tRNS_SUPPORTED) -extern PNG_EXPORT(void,png_set_tRNS) PNGARG((png_structp png_ptr, - png_infop info_ptr, png_bytep trans, int num_trans, - png_color_16p trans_values)); -#endif /* PNG_READ_tRNS_SUPPORTED || PNG_WRITE_tRNS_SUPPORTED */ - -/* Define PNG_DEBUG at compile time for debugging information. Higher - * numbers for PNG_DEBUG mean more debugging information. This has - * only been added since version 0.95 so it is not implemented throughout - * libpng yet, but more support will be added as needed. - */ -#if (PNG_DEBUG > 0) -#ifdef PNG_NO_STDIO -#include -#endif -#ifndef PNG_DEBUG_FILE -#define PNG_DEBUG_FILE stderr -#endif /* PNG_DEBUG_FILE */ - -#define png_debug(l,m) if (PNG_DEBUG > l) \ - fprintf(PNG_DEBUG_FILE,"%s"m,(l==1 ? "\t" : \ - (l==2 ? "\t\t":(l==3 ? "\t\t\t":"")))) -#define png_debug1(l,m,p1) if (PNG_DEBUG > l) \ - fprintf(PNG_DEBUG_FILE,"%s"m,(l==1 ? "\t" : \ - (l==2 ? "\t\t":(l==3 ? "\t\t\t":""))),p1) -#define png_debug2(l,m,p1,p2) if (PNG_DEBUG > l) \ - fprintf(PNG_DEBUG_FILE,"%s"m,(l==1 ? "\t" : \ - (l==2 ? "\t\t":(l==3 ? "\t\t\t":""))),p1,p2) -#else -#define png_debug(l, m) -#define png_debug1(l, m, p1) -#define png_debug2(l, m, p1, p2) -#endif /* (PNG_DEBUG > 0) */ - -/* These next functions are used internally in the code. They generally - * shouldn't be used unless you are writing code to add or replace some - * functionality in libpng. More information about most functions can - * be found in the files where the functions are located. - */ - -#if defined(PNG_INTERNAL) - -/* Various modes of operation. Note that after an init, mode is set to - * zero automatically when the structure is created. - */ -#define PNG_BEFORE_IHDR 0x00 -#define PNG_HAVE_IHDR 0x01 -#define PNG_HAVE_PLTE 0x02 -#define PNG_HAVE_IDAT 0x04 -#define PNG_AFTER_IDAT 0x08 -#define PNG_HAVE_IEND 0x10 -#define PNG_HAVE_gAMA 0x20 -#define PNG_HAVE_cHRM 0x40 -#define PNG_HAVE_sRGB 0x80 - -/* push model modes */ -#define PNG_READ_SIG_MODE 0 -#define PNG_READ_CHUNK_MODE 1 -#define PNG_READ_IDAT_MODE 2 -#define PNG_SKIP_MODE 3 -#define PNG_READ_tEXt_MODE 4 -#define PNG_READ_zTXt_MODE 5 -#define PNG_READ_DONE_MODE 6 -#define PNG_ERROR_MODE 7 - -/* flags for the transformations the PNG library does on the image data */ -#define PNG_BGR 0x0001 -#define PNG_INTERLACE 0x0002 -#define PNG_PACK 0x0004 -#define PNG_SHIFT 0x0008 -#define PNG_SWAP_BYTES 0x0010 -#define PNG_INVERT_MONO 0x0020 -#define PNG_DITHER 0x0040 -#define PNG_BACKGROUND 0x0080 -#define PNG_BACKGROUND_EXPAND 0x0100 -#define PNG_RGB_TO_GRAY 0x0200 /* Not currently implemented */ -#define PNG_16_TO_8 0x0400 -#define PNG_RGBA 0x0800 -#define PNG_EXPAND 0x1000 -#define PNG_GAMMA 0x2000 -#define PNG_GRAY_TO_RGB 0x4000 -#define PNG_FILLER 0x8000 -#define PNG_PACKSWAP 0x10000L -#define PNG_SWAP_ALPHA 0x20000L -#define PNG_STRIP_ALPHA 0x40000L -#define PNG_INVERT_ALPHA 0x80000L -#define PNG_USER_TRANSFORM 0x100000L - -/* flags for png_create_struct */ -#define PNG_STRUCT_PNG 0x0001 -#define PNG_STRUCT_INFO 0x0002 - -/* Scaling factor for filter heuristic weighting calculations */ -#define PNG_WEIGHT_SHIFT 8 -#define PNG_WEIGHT_FACTOR (1<<(PNG_WEIGHT_SHIFT)) -#define PNG_COST_SHIFT 3 -#define PNG_COST_FACTOR (1<<(PNG_COST_SHIFT)) - -/* flags for the png_ptr->flags rather than declaring a byte for each one */ -#define PNG_FLAG_ZLIB_CUSTOM_STRATEGY 0x0001 -#define PNG_FLAG_ZLIB_CUSTOM_LEVEL 0x0002 -#define PNG_FLAG_ZLIB_CUSTOM_MEM_LEVEL 0x0004 -#define PNG_FLAG_ZLIB_CUSTOM_WINDOW_BITS 0x0008 -#define PNG_FLAG_ZLIB_CUSTOM_METHOD 0x0010 -#define PNG_FLAG_ZLIB_FINISHED 0x0020 -#define PNG_FLAG_ROW_INIT 0x0040 -#define PNG_FLAG_FILLER_AFTER 0x0080 -#define PNG_FLAG_CRC_ANCILLARY_USE 0x0100 -#define PNG_FLAG_CRC_ANCILLARY_NOWARN 0x0200 -#define PNG_FLAG_CRC_CRITICAL_USE 0x0400 -#define PNG_FLAG_CRC_CRITICAL_IGNORE 0x0800 -#define PNG_FLAG_FREE_PALETTE 0x1000 -#define PNG_FLAG_FREE_TRANS 0x2000 -#define PNG_FLAG_FREE_HIST 0x4000 -#define PNG_FLAG_HAVE_CHUNK_HEADER 0x8000L -#define PNG_FLAG_WROTE_tIME 0x10000L - -#define PNG_FLAG_CRC_ANCILLARY_MASK (PNG_FLAG_CRC_ANCILLARY_USE | \ - PNG_FLAG_CRC_ANCILLARY_NOWARN) - -#define PNG_FLAG_CRC_CRITICAL_MASK (PNG_FLAG_CRC_CRITICAL_USE | \ - PNG_FLAG_CRC_CRITICAL_IGNORE) - -#define PNG_FLAG_CRC_MASK (PNG_FLAG_CRC_ANCILLARY_MASK | \ - PNG_FLAG_CRC_CRITICAL_MASK) - -/* save typing and make code easier to understand */ -#define PNG_COLOR_DIST(c1, c2) (abs((int)((c1).red) - (int)((c2).red)) + \ - abs((int)((c1).green) - (int)((c2).green)) + \ - abs((int)((c1).blue) - (int)((c2).blue))) - -/* variables declared in png.c - only it needs to define PNG_NO_EXTERN */ -#if !defined(PNG_NO_EXTERN) || defined(PNG_ALWAYS_EXTERN) -/* place to hold the signature string for a PNG file. */ -extern png_byte FARDATA png_sig[8]; - -/* Constant strings for known chunk types. If you need to add a chunk, - * add a string holding the name here. See png.c for more details. We - * can't selectively include these, since we still check for chunk in the - * wrong locations with these labels. - */ -extern png_byte FARDATA png_IHDR[5]; -extern png_byte FARDATA png_IDAT[5]; -extern png_byte FARDATA png_IEND[5]; -extern png_byte FARDATA png_PLTE[5]; -extern png_byte FARDATA png_bKGD[5]; -extern png_byte FARDATA png_cHRM[5]; -extern png_byte FARDATA png_gAMA[5]; -extern png_byte FARDATA png_hIST[5]; -extern png_byte FARDATA png_oFFs[5]; -extern png_byte FARDATA png_pCAL[5]; -extern png_byte FARDATA png_pHYs[5]; -extern png_byte FARDATA png_sBIT[5]; -extern png_byte FARDATA png_sRGB[5]; -extern png_byte FARDATA png_tEXt[5]; -extern png_byte FARDATA png_tIME[5]; -extern png_byte FARDATA png_tRNS[5]; -extern png_byte FARDATA png_zTXt[5]; - -#endif /* PNG_NO_EXTERN */ - -/* Inline macros to do direct reads of bytes from the input buffer. These - * require that you are using an architecture that uses PNG byte ordering - * (MSB first) and supports unaligned data storage. I think that PowerPC - * in big-endian mode and 680x0 are the only ones that will support this. - * The x86 line of processors definitely do not. The png_get_int_32() - * routine also assumes we are using two's complement format for negative - * values, which is almost certainly true. - */ -#if defined(PNG_READ_BIG_ENDIAN_SUPPORTED) -#if defined(PNG_READ_pCAL_SUPPORTED) -#define png_get_int_32(buf) ( *((png_int_32p) (buf))) -#endif /* PNG_READ_pCAL_SUPPORTED */ -#define png_get_uint_32(buf) ( *((png_uint_32p) (buf))) -#define png_get_uint_16(buf) ( *((png_uint_16p) (buf))) -#else -#if defined(PNG_READ_pCAL_SUPPORTED) -PNG_EXTERN png_int_32 png_get_int_32 PNGARG((png_bytep buf)); -#endif /* PNG_READ_pCAL_SUPPORTED */ -PNG_EXTERN png_uint_32 png_get_uint_32 PNGARG((png_bytep buf)); -PNG_EXTERN png_uint_16 png_get_uint_16 PNGARG((png_bytep buf)); -#endif /* PNG_BIG_ENDIAN_GET_SUPPORTED */ - -/* Initialize png_ptr struct for reading, and allocate any other memory. - * (old interface - NOT DLL EXPORTED). - */ -extern void png_read_init PNGARG((png_structp png_ptr)); - -/* Initialize png_ptr struct for writing, and allocate any other memory. - * (old interface - NOT DLL EXPORTED). - */ -extern void png_write_init PNGARG((png_structp png_ptr)); - -/* allocate memory for an internal libpng struct */ -PNG_EXTERN png_voidp png_create_struct PNGARG((int type)); - -/* free memory from internal libpng struct */ -PNG_EXTERN void png_destroy_struct PNGARG((png_voidp struct_ptr)); - -/* free any memory that info_ptr points to and reset struct. */ -PNG_EXTERN void png_info_destroy PNGARG((png_structp png_ptr, - png_infop info_ptr)); - -/* Function to allocate memory for zlib. */ -PNG_EXTERN voidpf png_zalloc PNGARG((voidpf png_ptr, uInt items, uInt size)); - -/* function to free memory for zlib */ -PNG_EXTERN void png_zfree PNGARG((voidpf png_ptr, voidpf ptr)); - -/* reset the CRC variable */ -PNG_EXTERN void png_reset_crc PNGARG((png_structp png_ptr)); - -/* Write the "data" buffer to whatever output you are using. */ -PNG_EXTERN void png_write_data PNGARG((png_structp png_ptr, png_bytep data, - png_size_t length)); - -/* Read data from whatever input you are using into the "data" buffer */ -PNG_EXTERN void png_read_data PNGARG((png_structp png_ptr, png_bytep data, - png_size_t length)); - -/* read bytes into buf, and update png_ptr->crc */ -PNG_EXTERN void png_crc_read PNGARG((png_structp png_ptr, png_bytep buf, - png_size_t length)); - -/* read "skip" bytes, read the file crc, and (optionally) verify png_ptr->crc */ -PNG_EXTERN int png_crc_finish PNGARG((png_structp png_ptr, png_uint_32 skip)); - -/* read the CRC from the file and compare it to the libpng calculated CRC */ -PNG_EXTERN int png_crc_error PNGARG((png_structp png_ptr)); - -/* Calculate the CRC over a section of data. Note that we are only - * passing a maximum of 64K on systems that have this as a memory limit, - * since this is the maximum buffer size we can specify. - */ -PNG_EXTERN void png_calculate_crc PNGARG((png_structp png_ptr, png_bytep ptr, - png_size_t length)); - -#if defined(PNG_WRITE_FLUSH_SUPPORTED) -PNG_EXTERN void png_flush PNGARG((png_structp png_ptr)); -#endif - -/* Place a 32-bit number into a buffer in PNG byte order (big-endian). - * The only currently known PNG chunk that uses signed numbers is - * the ancillary extension chunk, pCAL. - */ -PNG_EXTERN void png_save_uint_32 PNGARG((png_bytep buf, png_uint_32 i)); - -#if defined(PNG_WRITE_pCAL_SUPPORTED) -PNG_EXTERN void png_save_int_32 PNGARG((png_bytep buf, png_int_32 i)); -#endif - -/* Place a 16 bit number into a buffer in PNG byte order. - * The parameter is declared unsigned int, not png_uint_16, - * just to avoid potential problems on pre-ANSI C compilers. - */ -PNG_EXTERN void png_save_uint_16 PNGARG((png_bytep buf, unsigned int i)); - -/* simple function to write the signature */ -PNG_EXTERN void png_write_sig PNGARG((png_structp png_ptr)); - -/* write various chunks */ - -/* Write the IHDR chunk, and update the png_struct with the necessary - * information. - */ -PNG_EXTERN void png_write_IHDR PNGARG((png_structp png_ptr, png_uint_32 width, - png_uint_32 height, - int bit_depth, int color_type, int compression_type, int filter_type, - int interlace_type)); - -PNG_EXTERN void png_write_PLTE PNGARG((png_structp png_ptr, png_colorp palette, - png_uint_32 num_pal)); - -PNG_EXTERN void png_write_IDAT PNGARG((png_structp png_ptr, png_bytep data, - png_size_t length)); - -PNG_EXTERN void png_write_IEND PNGARG((png_structp png_ptr)); - -#if defined(PNG_WRITE_gAMA_SUPPORTED) -PNG_EXTERN void png_write_gAMA PNGARG((png_structp png_ptr, double file_gamma)); -#endif - -#if defined(PNG_WRITE_sBIT_SUPPORTED) -PNG_EXTERN void png_write_sBIT PNGARG((png_structp png_ptr, png_color_8p sbit, - int color_type)); -#endif - -#if defined(PNG_WRITE_cHRM_SUPPORTED) -PNG_EXTERN void png_write_cHRM PNGARG((png_structp png_ptr, - double white_x, double white_y, - double red_x, double red_y, double green_x, double green_y, - double blue_x, double blue_y)); -#endif - -#if defined(PNG_WRITE_sRGB_SUPPORTED) -PNG_EXTERN void png_write_sRGB PNGARG((png_structp png_ptr, - int intent)); -#endif - -#if defined(PNG_WRITE_tRNS_SUPPORTED) -PNG_EXTERN void png_write_tRNS PNGARG((png_structp png_ptr, png_bytep trans, - png_color_16p values, int number, int color_type)); -#endif - -#if defined(PNG_WRITE_bKGD_SUPPORTED) -PNG_EXTERN void png_write_bKGD PNGARG((png_structp png_ptr, - png_color_16p values, int color_type)); -#endif - -#if defined(PNG_WRITE_hIST_SUPPORTED) -PNG_EXTERN void png_write_hIST PNGARG((png_structp png_ptr, png_uint_16p hist, - int num_hist)); -#endif - -#if defined(PNG_WRITE_tEXt_SUPPORTED) || defined(PNG_WRITE_zTXt_SUPPORTED) -PNG_EXTERN png_size_t png_check_keyword PNGARG((png_structp png_ptr, - png_charp key, png_charpp new_key)); -#endif - -#if defined(PNG_WRITE_tEXt_SUPPORTED) -PNG_EXTERN void png_write_tEXt PNGARG((png_structp png_ptr, png_charp key, - png_charp text, png_size_t text_len)); -#endif - -#if defined(PNG_WRITE_zTXt_SUPPORTED) -PNG_EXTERN void png_write_zTXt PNGARG((png_structp png_ptr, png_charp key, - png_charp text, png_size_t text_len, int compression)); -#endif - -#if defined(PNG_WRITE_oFFs_SUPPORTED) -PNG_EXTERN void png_write_oFFs PNGARG((png_structp png_ptr, - png_uint_32 x_offset, png_uint_32 y_offset, int unit_type)); -#endif - -#if defined(PNG_WRITE_pCAL_SUPPORTED) -PNG_EXTERN void png_write_pCAL PNGARG((png_structp png_ptr, png_charp purpose, - png_int_32 X0, png_int_32 X1, int type, int nparams, - png_charp units, png_charpp params)); -#endif - -#if defined(PNG_WRITE_pHYs_SUPPORTED) -PNG_EXTERN void png_write_pHYs PNGARG((png_structp png_ptr, - png_uint_32 x_pixels_per_unit, png_uint_32 y_pixels_per_unit, - int unit_type)); -#endif - -#if defined(PNG_WRITE_tIME_SUPPORTED) -PNG_EXTERN void png_write_tIME PNGARG((png_structp png_ptr, - png_timep mod_time)); -#endif - -/* Called when finished processing a row of data */ -PNG_EXTERN void png_write_finish_row PNGARG((png_structp png_ptr)); - -/* Internal use only. Called before first row of data */ -PNG_EXTERN void png_write_start_row PNGARG((png_structp png_ptr)); - -#if defined(PNG_READ_GAMMA_SUPPORTED) -PNG_EXTERN void png_build_gamma_table PNGARG((png_structp png_ptr)); -#endif - -/* combine a row of data, dealing with alpha, etc. if requested */ -PNG_EXTERN void png_combine_row PNGARG((png_structp png_ptr, png_bytep row, - int mask)); - -#if defined(PNG_READ_INTERLACING_SUPPORTED) -/* expand an interlaced row */ -PNG_EXTERN void png_do_read_interlace PNGARG((png_row_infop row_info, - png_bytep row, int pass, png_uint_32 transformations)); -#endif - -#if defined(PNG_WRITE_INTERLACING_SUPPORTED) -/* grab pixels out of a row for an interlaced pass */ -PNG_EXTERN void png_do_write_interlace PNGARG((png_row_infop row_info, - png_bytep row, int pass)); -#endif - -/* unfilter a row */ -PNG_EXTERN void png_read_filter_row PNGARG((png_structp png_ptr, - png_row_infop row_info, png_bytep row, png_bytep prev_row, int filter)); - -/* Choose the best filter to use and filter the row data */ -PNG_EXTERN void png_write_find_filter PNGARG((png_structp png_ptr, - png_row_infop row_info)); - -/* Write out the filtered row. */ -PNG_EXTERN void png_write_filtered_row PNGARG((png_structp png_ptr, - png_bytep filtered_row)); -/* finish a row while reading, dealing with interlacing passes, etc. */ -PNG_EXTERN void png_read_finish_row PNGARG((png_structp png_ptr)); - -/* initialize the row buffers, etc. */ -PNG_EXTERN void png_read_start_row PNGARG((png_structp png_ptr)); -/* optional call to update the users info structure */ -PNG_EXTERN void png_read_transform_info PNGARG((png_structp png_ptr, - png_infop info_ptr)); - -/* these are the functions that do the transformations */ -#if defined(PNG_READ_FILLER_SUPPORTED) -PNG_EXTERN void png_do_read_filler PNGARG((png_row_infop row_info, - png_bytep row, png_uint_32 filler, png_uint_32 flags)); -#endif - -#if defined(PNG_READ_SWAP_ALPHA_SUPPORTED) -PNG_EXTERN void png_do_read_swap_alpha PNGARG((png_row_infop row_info, - png_bytep row)); -#endif - -#if defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED) -PNG_EXTERN void png_do_write_swap_alpha PNGARG((png_row_infop row_info, - png_bytep row)); -#endif - -#if defined(PNG_READ_INVERT_ALPHA_SUPPORTED) -PNG_EXTERN void png_do_read_invert_alpha PNGARG((png_row_infop row_info, - png_bytep row)); -#endif - -#if defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED) -PNG_EXTERN void png_do_write_invert_alpha PNGARG((png_row_infop row_info, - png_bytep row)); -#endif - -#if defined(PNG_WRITE_FILLER_SUPPORTED) || \ - defined(PNG_READ_STRIP_ALPHA_SUPPORTED) -PNG_EXTERN void png_do_strip_filler PNGARG((png_row_infop row_info, - png_bytep row, png_uint_32 flags)); -#endif - -#if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED) -PNG_EXTERN void png_do_swap PNGARG((png_row_infop row_info, png_bytep row)); -#endif - -#if defined(PNG_READ_PACKSWAP_SUPPORTED) || defined(PNG_WRITE_PACKSWAP_SUPPORTED) -PNG_EXTERN void png_do_packswap PNGARG((png_row_infop row_info, png_bytep row)); -#endif - -#if defined(PNG_READ_RGB_TO_GRAY_SUPPORTED) -PNG_EXTERN void png_do_rgb_to_gray PNGARG((png_row_infop row_info, - png_bytep row)); -#endif - -#if defined(PNG_READ_GRAY_TO_RGB_SUPPORTED) -PNG_EXTERN void png_do_gray_to_rgb PNGARG((png_row_infop row_info, - png_bytep row)); -#endif - -#if defined(PNG_READ_PACK_SUPPORTED) -PNG_EXTERN void png_do_unpack PNGARG((png_row_infop row_info, png_bytep row)); -#endif - -#if defined(PNG_READ_SHIFT_SUPPORTED) -PNG_EXTERN void png_do_unshift PNGARG((png_row_infop row_info, png_bytep row, - png_color_8p sig_bits)); -#endif - -#if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED) -PNG_EXTERN void png_do_invert PNGARG((png_row_infop row_info, png_bytep row)); -#endif - -#if defined(PNG_READ_16_TO_8_SUPPORTED) -PNG_EXTERN void png_do_chop PNGARG((png_row_infop row_info, png_bytep row)); -#endif - -#if defined(PNG_READ_DITHER_SUPPORTED) -PNG_EXTERN void png_do_dither PNGARG((png_row_infop row_info, - png_bytep row, png_bytep palette_lookup, png_bytep dither_lookup)); - -# if defined(PNG_CORRECT_PALETTE_SUPPORTED) -PNG_EXTERN void png_correct_palette PNGARG((png_structp png_ptr, - png_colorp palette, int num_palette)); -# endif -#endif - -#if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED) -PNG_EXTERN void png_do_bgr PNGARG((png_row_infop row_info, png_bytep row)); -#endif - -#if defined(PNG_WRITE_PACK_SUPPORTED) -PNG_EXTERN void png_do_pack PNGARG((png_row_infop row_info, - png_bytep row, png_uint_32 bit_depth)); -#endif - -#if defined(PNG_WRITE_SHIFT_SUPPORTED) -PNG_EXTERN void png_do_shift PNGARG((png_row_infop row_info, png_bytep row, - png_color_8p bit_depth)); -#endif - -#if defined(PNG_READ_BACKGROUND_SUPPORTED) -PNG_EXTERN void png_do_background PNGARG((png_row_infop row_info, png_bytep row, - png_color_16p trans_values, png_color_16p background, - png_color_16p background_1, - png_bytep gamma_table, png_bytep gamma_from_1, png_bytep gamma_to_1, - png_uint_16pp gamma_16, png_uint_16pp gamma_16_from_1, - png_uint_16pp gamma_16_to_1, int gamma_shift)); -#endif - -#if defined(PNG_READ_GAMMA_SUPPORTED) -PNG_EXTERN void png_do_gamma PNGARG((png_row_infop row_info, png_bytep row, - png_bytep gamma_table, png_uint_16pp gamma_16_table, - int gamma_shift)); -#endif - -#if defined(PNG_READ_EXPAND_SUPPORTED) -PNG_EXTERN void png_do_expand_palette PNGARG((png_row_infop row_info, - png_bytep row, png_colorp palette, png_bytep trans, int num_trans)); -PNG_EXTERN void png_do_expand PNGARG((png_row_infop row_info, - png_bytep row, png_color_16p trans_value)); -#endif - -/* The following decodes the appropriate chunks, and does error correction, - * then calls the appropriate callback for the chunk if it is valid. - */ - -/* decode the IHDR chunk */ -PNG_EXTERN void png_handle_IHDR PNGARG((png_structp png_ptr, png_infop info_ptr, - png_uint_32 length)); -PNG_EXTERN void png_handle_PLTE PNGARG((png_structp png_ptr, png_infop info_ptr, - png_uint_32 length)); -PNG_EXTERN void png_handle_IEND PNGARG((png_structp png_ptr, png_infop info_ptr, - png_uint_32 length)); - -#if defined(PNG_READ_gAMA_SUPPORTED) -PNG_EXTERN void png_handle_gAMA PNGARG((png_structp png_ptr, png_infop info_ptr, - png_uint_32 length)); -#endif - -#if defined(PNG_READ_sBIT_SUPPORTED) -PNG_EXTERN void png_handle_sBIT PNGARG((png_structp png_ptr, png_infop info_ptr, - png_uint_32 length)); -#endif - -#if defined(PNG_READ_cHRM_SUPPORTED) -PNG_EXTERN void png_handle_cHRM PNGARG((png_structp png_ptr, png_infop info_ptr, - png_uint_32 length)); -#endif - -#if defined(PNG_READ_sRGB_SUPPORTED) -PNG_EXTERN void png_handle_sRGB PNGARG((png_structp png_ptr, png_infop info_ptr, - png_uint_32 length)); -#endif - -#if defined(PNG_READ_tRNS_SUPPORTED) -PNG_EXTERN void png_handle_tRNS PNGARG((png_structp png_ptr, png_infop info_ptr, - png_uint_32 length)); -#endif - -#if defined(PNG_READ_bKGD_SUPPORTED) -PNG_EXTERN void png_handle_bKGD PNGARG((png_structp png_ptr, png_infop info_ptr, - png_uint_32 length)); -#endif - -#if defined(PNG_READ_hIST_SUPPORTED) -PNG_EXTERN void png_handle_hIST PNGARG((png_structp png_ptr, png_infop info_ptr, - png_uint_32 length)); -#endif - -#if defined(PNG_READ_oFFs_SUPPORTED) -PNG_EXTERN void png_handle_oFFs PNGARG((png_structp png_ptr, png_infop info_ptr, - png_uint_32 length)); -#endif - -#if defined(PNG_READ_pCAL_SUPPORTED) -PNG_EXTERN void png_handle_pCAL PNGARG((png_structp png_ptr, png_infop info_ptr, - png_uint_32 length)); -#endif - -#if defined(PNG_READ_pHYs_SUPPORTED) -PNG_EXTERN void png_handle_pHYs PNGARG((png_structp png_ptr, png_infop info_ptr, - png_uint_32 length)); -#endif - -#if defined(PNG_READ_tIME_SUPPORTED) -PNG_EXTERN void png_handle_tIME PNGARG((png_structp png_ptr, png_infop info_ptr, - png_uint_32 length)); -#endif - -#if defined(PNG_READ_tEXt_SUPPORTED) -PNG_EXTERN void png_handle_tEXt PNGARG((png_structp png_ptr, png_infop info_ptr, - png_uint_32 length)); -#endif - -#if defined(PNG_READ_zTXt_SUPPORTED) -PNG_EXTERN void png_handle_zTXt PNGARG((png_structp png_ptr, png_infop info_ptr, - png_uint_32 length)); -#endif - -PNG_EXTERN void png_handle_unknown PNGARG((png_structp png_ptr, - png_infop info_ptr, png_uint_32 length)); - -PNG_EXTERN void png_check_chunk_name PNGARG((png_structp png_ptr, - png_bytep chunk_name)); - -/* handle the transformations for reading and writing */ -PNG_EXTERN void png_do_read_transformations PNGARG((png_structp png_ptr)); -PNG_EXTERN void png_do_write_transformations PNGARG((png_structp png_ptr)); - -PNG_EXTERN void png_init_read_transformations PNGARG((png_structp png_ptr)); - -#ifdef PNG_PROGRESSIVE_READ_SUPPORTED -PNG_EXTERN void png_push_read_chunk PNGARG((png_structp png_ptr, - png_infop info_ptr)); -PNG_EXTERN void png_push_read_sig PNGARG((png_structp png_ptr, - png_infop info_ptr)); -PNG_EXTERN void png_push_check_crc PNGARG((png_structp png_ptr)); -PNG_EXTERN void png_push_crc_skip PNGARG((png_structp png_ptr, - png_uint_32 length)); -PNG_EXTERN void png_push_crc_finish PNGARG((png_structp png_ptr)); -PNG_EXTERN void png_push_fill_buffer PNGARG((png_structp png_ptr, - png_bytep buffer, png_size_t length)); -PNG_EXTERN void png_push_save_buffer PNGARG((png_structp png_ptr)); -PNG_EXTERN void png_push_restore_buffer PNGARG((png_structp png_ptr, - png_bytep buffer, png_size_t buffer_length)); -PNG_EXTERN void png_push_read_IDAT PNGARG((png_structp png_ptr)); -PNG_EXTERN void png_process_IDAT_data PNGARG((png_structp png_ptr, - png_bytep buffer, png_size_t buffer_length)); -PNG_EXTERN void png_push_process_row PNGARG((png_structp png_ptr)); -PNG_EXTERN void png_push_handle_unknown PNGARG((png_structp png_ptr, - png_infop info_ptr, png_uint_32 length)); -PNG_EXTERN void png_push_have_info PNGARG((png_structp png_ptr, - png_infop info_ptr)); -PNG_EXTERN void png_push_have_end PNGARG((png_structp png_ptr, - png_infop info_ptr)); -PNG_EXTERN void png_push_have_row PNGARG((png_structp png_ptr, png_bytep row)); -PNG_EXTERN void png_push_read_end PNGARG((png_structp png_ptr, - png_infop info_ptr)); -PNG_EXTERN void png_process_some_data PNGARG((png_structp png_ptr, - png_infop info_ptr)); -PNG_EXTERN void png_read_push_finish_row PNGARG((png_structp png_ptr)); -#if defined(PNG_READ_tEXt_SUPPORTED) -PNG_EXTERN void png_push_handle_tEXt PNGARG((png_structp png_ptr, - png_infop info_ptr, png_uint_32 length)); -PNG_EXTERN void png_push_read_tEXt PNGARG((png_structp png_ptr, - png_infop info_ptr)); -#endif -#if defined(PNG_READ_zTXt_SUPPORTED) -PNG_EXTERN void png_push_handle_zTXt PNGARG((png_structp png_ptr, - png_infop info_ptr, png_uint_32 length)); -PNG_EXTERN void png_push_read_zTXt PNGARG((png_structp png_ptr, - png_infop info_ptr)); -#endif - -#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */ - -#endif /* PNG_INTERNAL */ - -#ifdef __cplusplus -} -#endif - -/* do not put anything past this line */ -#endif /* _PNG_H */ diff --git a/src/png/pngconf.h b/src/png/pngconf.h deleted file mode 100644 index 675f292bab..0000000000 --- a/src/png/pngconf.h +++ /dev/null @@ -1,565 +0,0 @@ - -/* pngconf.h - machine configurable file for libpng - * - * libpng 1.0.1 - * For conditions of distribution and use, see copyright notice in png.h - * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc. - * Copyright (c) 1996, 1997 Andreas Dilger - * Copyright (c) 1998, Glenn Randers-Pehrson - * March 15, 1998 - */ - -/* Any machine specific code is near the front of this file, so if you - * are configuring libpng for a machine, you may want to read the section - * starting here down to where it starts to typedef png_color, png_text, - * and png_info. - */ - -#ifndef PNGCONF_H -#define PNGCONF_H - -/* This is the size of the compression buffer, and thus the size of - * an IDAT chunk. Make this whatever size you feel is best for your - * machine. One of these will be allocated per png_struct. When this - * is full, it writes the data to the disk, and does some other - * calculations. Making this an extremely small size will slow - * the library down, but you may want to experiment to determine - * where it becomes significant, if you are concerned with memory - * usage. Note that zlib allocates at least 32Kb also. For readers, - * this describes the size of the buffer available to read the data in. - * Unless this gets smaller than the size of a row (compressed), - * it should not make much difference how big this is. - */ - -#ifndef PNG_ZBUF_SIZE -#define PNG_ZBUF_SIZE 8192 -#endif - -/* If you are running on a machine where you cannot allocate more - * than 64K of memory at once, uncomment this. While libpng will not - * normally need that much memory in a chunk (unless you load up a very - * large file), zlib needs to know how big of a chunk it can use, and - * libpng thus makes sure to check any memory allocation to verify it - * will fit into memory. -#define PNG_MAX_MALLOC_64K - */ -#if defined(MAXSEG_64K) && !defined(PNG_MAX_MALLOC_64K) -#define PNG_MAX_MALLOC_64K -#endif - -/* This protects us against compilers which run on a windowing system - * and thus don't have or would rather us not use the stdio types: - * stdin, stdout, and stderr. The only one currently used is stderr - * in png_error() and png_warning(). #defining PNG_NO_STDIO will - * prevent these from being compiled and used. - * #define PNG_NO_STDIO - */ - -#ifndef PNG_NO_STDIO -#include -#endif - -/* This macro protects us against machines that don't have function - * prototypes (ie K&R style headers). If your compiler does not handle - * function prototypes, define this macro and use the included ansi2knr. - * I've always been able to use _NO_PROTO as the indicator, but you may - * need to drag the empty declaration out in front of here, or change the - * ifdef to suit your own needs. - */ -#ifndef PNGARG - -#ifdef OF /* zlib prototype munger */ -#define PNGARG(arglist) OF(arglist) -#else - -#ifdef _NO_PROTO -#define PNGARG(arglist) () -#else -#define PNGARG(arglist) arglist -#endif /* _NO_PROTO */ - -#endif /* OF */ - -#endif /* PNGARG */ - -/* Try to determine if we are compiling on a Mac. Note that testing for - * just __MWERKS__ is not good enough, because the Codewarrior is now used - * on non-Mac platforms. - */ -#ifndef MACOS -#if (defined(__MWERKS__) && defined(macintosh)) || defined(applec) || \ - defined(THINK_C) || defined(__SC__) || defined(TARGET_OS_MAC) -#define MACOS -#endif -#endif - -/* enough people need this for various reasons to include it here */ -#if !defined(MACOS) && !defined(RISCOS) -#include -#endif - -/* This is an attempt to force a single setjmp behaviour on Linux. If - * the X config stuff didn't define _BSD_SOURCE we wouldn't need this. - */ -#ifdef __linux__ -#ifdef _BSD_SOURCE -#define _PNG_SAVE_BSD_SOURCE -#undef _BSD_SOURCE -#endif -#ifdef _SETJMP_H -__png.h__ already includes setjmp.h -__dont__ include it again -#endif -#endif /* __linux__ */ - -/* include setjmp.h for error handling */ -#include - -#ifdef __linux__ -#ifdef _PNG_SAVE_BSD_SOURCE -#define _BSD_SOURCE -#undef _PNG_SAVE_BSD_SOURCE -#endif -#endif /* __linux__ */ - -#ifdef BSD -#include -#else -#include -#endif - -/* Other defines for things like memory and the like can go here. */ -#ifdef PNG_INTERNAL -#include - -/* The functions exported by PNG_EXTERN are PNG_INTERNAL functions, which - * aren't usually used outside the library (as far as I know), so it is - * debatable if they should be exported at all. In the future, when it is - * possible to have run-time registry of chunk-handling functions, some of - * these will be made available again. -#define PNG_EXTERN extern - */ -#define PNG_EXTERN - -/* Other defines specific to compilers can go here. Try to keep - * them inside an appropriate ifdef/endif pair for portability. - */ - -#if defined(MACOS) -/* We need to check that hasn't already been included earlier - * as it seems it doesn't agree with , yet we should really use - * if possible. - */ -#if !defined(__MATH_H__) && !defined(__MATH_H) && !defined(__cmath__) -#include -#endif -#else -#include -#endif - -/* Codewarrior on NT has linking problems without this. */ -#if defined(__MWERKS__) && defined(WIN32) -#define PNG_ALWAYS_EXTERN -#endif - -/* For some reason, Borland C++ defines memcmp, etc. in mem.h, not - * stdlib.h like it should (I think). Or perhaps this is a C++ - * "feature"? - */ -#ifdef __TURBOC__ -#include -#include "alloc.h" -#endif - -#ifdef _MSC_VER -#include -#endif - -/* This controls how fine the dithering gets. As this allocates - * a largish chunk of memory (32K), those who are not as concerned - * with dithering quality can decrease some or all of these. - */ -#ifndef PNG_DITHER_RED_BITS -#define PNG_DITHER_RED_BITS 5 -#endif -#ifndef PNG_DITHER_GREEN_BITS -#define PNG_DITHER_GREEN_BITS 5 -#endif -#ifndef PNG_DITHER_BLUE_BITS -#define PNG_DITHER_BLUE_BITS 5 -#endif - -/* This controls how fine the gamma correction becomes when you - * are only interested in 8 bits anyway. Increasing this value - * results in more memory being used, and more pow() functions - * being called to fill in the gamma tables. Don't set this value - * less then 8, and even that may not work (I haven't tested it). - */ - -#ifndef PNG_MAX_GAMMA_8 -#define PNG_MAX_GAMMA_8 11 -#endif - -/* This controls how much a difference in gamma we can tolerate before - * we actually start doing gamma conversion. - */ -#ifndef PNG_GAMMA_THRESHOLD -#define PNG_GAMMA_THRESHOLD 0.05 -#endif - -#endif /* PNG_INTERNAL */ - -/* The following uses const char * instead of char * for error - * and warning message functions, so some compilers won't complain. - * If you do not want to use const, define PNG_NO_CONST here. - */ - -#ifndef PNG_NO_CONST -# define PNG_CONST const -#else -# define PNG_CONST -#endif - -/* The following defines give you the ability to remove code from the - * library that you will not be using. I wish I could figure out how to - * automate this, but I can't do that without making it seriously hard - * on the users. So if you are not using an ability, change the #define - * to and #undef, and that part of the library will not be compiled. If - * your linker can't find a function, you may want to make sure the - * ability is defined here. Some of these depend upon some others being - * defined. I haven't figured out all the interactions here, so you may - * have to experiment awhile to get everything to compile. If you are - * creating or using a shared library, you probably shouldn't touch this, - * as it will affect the size of the structures, and this will cause bad - * things to happen if the library and/or application ever change. - */ - -/* Any transformations you will not be using can be undef'ed here */ - -/* GR-P, 0.96a: Set "*TRANSFORMS_SUPPORTED as default but allow user - to turn it off with "*TRANSFORMS_NOT_SUPPORTED" on the compile line, - then pick and choose which ones to define without having to edit - this file. It is safe to use the *TRANSFORMS_NOT_SUPPORTED if you - only want to have a png-compliant reader/writer but don't need - any of the extra transformations. This saves about 80 kbytes in a - typical installation of the library. - */ - - -#ifndef PNG_READ_TRANSFORMS_NOT_SUPPORTED -#define PNG_READ_TRANSFORMS_SUPPORTED -#endif -#ifndef PNG_WRITE_TRANSFORMS_NOT_SUPPORTED -#define PNG_WRITE_TRANSFORMS_SUPPORTED -#endif - -#ifdef PNG_READ_TRANSFORMS_SUPPORTED -#define PNG_READ_EXPAND_SUPPORTED -#define PNG_READ_SHIFT_SUPPORTED -#define PNG_READ_PACK_SUPPORTED -#define PNG_READ_BGR_SUPPORTED -#define PNG_READ_SWAP_SUPPORTED -#define PNG_READ_PACKSWAP_SUPPORTED -#define PNG_READ_INVERT_SUPPORTED -#define PNG_READ_DITHER_SUPPORTED -#define PNG_READ_BACKGROUND_SUPPORTED -#define PNG_READ_16_TO_8_SUPPORTED -#define PNG_READ_FILLER_SUPPORTED -#define PNG_READ_GAMMA_SUPPORTED -#define PNG_READ_GRAY_TO_RGB_SUPPORTED -#define PNG_READ_SWAP_ALPHA_SUPPORTED -#define PNG_READ_INVERT_ALPHA_SUPPORTED -#define PNG_READ_STRIP_ALPHA_SUPPORTED -#define PNG_READ_USER_TRANSFORM_SUPPORTED -/* the following aren't implemented yet -#define PNG_READ_RGB_TO_GRAY_SUPPORTED - */ -#endif /* PNG_READ_TRANSFORMS_SUPPORTED */ - -#ifndef PNG_PROGRESSIVE_READ_NOT_SUPPORTED /* if you don't do progressive */ -#define PNG_PROGRESSIVE_READ_SUPPORTED /* reading. This is not talking */ -#endif /* about interlacing capability! You'll */ - /* still have interlacing unless you change the following line: */ -#define PNG_READ_INTERLACING_SUPPORTED /* required for PNG-compliant decoders */ -#define PNG_READ_COMPOSITE_NODIV_SUPPORTED /* well tested on Intel and SGI */ - -#ifdef PNG_WRITE_TRANSFORMS_SUPPORTED -#define PNG_WRITE_SHIFT_SUPPORTED -#define PNG_WRITE_PACK_SUPPORTED -#define PNG_WRITE_BGR_SUPPORTED -#define PNG_WRITE_SWAP_SUPPORTED -#define PNG_WRITE_PACKSWAP_SUPPORTED -#define PNG_WRITE_INVERT_SUPPORTED -#define PNG_WRITE_FILLER_SUPPORTED /* This is the same as WRITE_STRIP_ALPHA */ -#define PNG_WRITE_FLUSH_SUPPORTED -#define PNG_WRITE_SWAP_ALPHA_SUPPORTED -#define PNG_WRITE_INVERT_ALPHA_SUPPORTED -#define PNG_WRITE_WEIGHTED_FILTER_SUPPORTED -#define PNG_WRITE_USER_TRANSFORM_SUPPORTED -#endif /* PNG_WRITE_TRANSFORMS_SUPPORTED */ - -#define PNG_WRITE_INTERLACING_SUPPORTED /* not required for PNG-compliant - encoders, but can cause trouble - if left undefined */ - -#if !defined(PNG_NO_STDIO) -#define PNG_TIME_RFC1123_SUPPORTED -#endif - -/* This adds extra functions in pngget.c for accessing data from the - * info pointer (added in version 0.99) - * png_get_image_width() - * png_get_image_height() - * png_get_bit_depth() - * png_get_color_type() - * png_get_compression_type() - * png_get_filter_type() - * png_get_interlace_type() - * png_get_pixel_aspect_ratio() - * png_get_pixels_per_meter() - * png_get_x_offset_pixels() - * png_get_y_offset_pixels() - * png_get_x_offset_microns() - * png_get_y_offset_microns() - */ -#if !defined(PNG_NO_EASY_ACCESS) -#define PNG_EASY_ACCESS_SUPPORTED -#endif - -/* These are currently experimental features, define them if you want */ - -/* very little testing */ -/* -#define PNG_READ_16_TO_8_ACCURATE_SCALE_SUPPORTED -*/ - -/* This is only for PowerPC big-endian and 680x0 systems */ -/* some testing */ -/* -#define PNG_READ_BIG_ENDIAN_SUPPORTED -*/ - -/* These functions are turned off by default, as they will be phased out. */ -/* -#define PNG_USELESS_TESTS_SUPPORTED -#define PNG_CORRECT_PALETTE_SUPPORTED -*/ - -/* Any chunks you are not interested in, you can undef here. The - * ones that allocate memory may be expecially important (hIST, - * tEXt, zTXt, tRNS, pCAL). Others will just save time and make png_info - * a bit smaller. - */ - -#ifndef PNG_READ_ANCILLARY_CHUNKS_NOT_SUPPORTED -#define PNG_READ_ANCILLARY_CHUNKS_SUPPORTED -#endif -#ifndef PNG_WRITE_ANCILLARY_CHUNKS_NOT_SUPPORTED -#define PNG_WRITE_ANCILLARY_CHUNKS_SUPPORTED -#endif - -#ifdef PNG_READ_ANCILLARY_CHUNKS_SUPPORTED -#define PNG_READ_bKGD_SUPPORTED -#define PNG_READ_cHRM_SUPPORTED -#define PNG_READ_gAMA_SUPPORTED -#define PNG_READ_hIST_SUPPORTED -#define PNG_READ_oFFs_SUPPORTED -#define PNG_READ_pCAL_SUPPORTED -#define PNG_READ_pHYs_SUPPORTED -#define PNG_READ_sBIT_SUPPORTED -#define PNG_READ_sRGB_SUPPORTED -#define PNG_READ_tEXt_SUPPORTED -#define PNG_READ_tIME_SUPPORTED -#define PNG_READ_tRNS_SUPPORTED -#define PNG_READ_zTXt_SUPPORTED -#define PNG_READ_OPT_PLTE_SUPPORTED /* only affects support of the optional */ - /* PLTE chunk in RGB and RGBA images */ -#endif /* PNG_READ_ANCILLARY_CHUNKS_SUPPORTED */ - -#ifdef PNG_WRITE_ANCILLARY_CHUNKS_SUPPORTED -#define PNG_WRITE_bKGD_SUPPORTED -#define PNG_WRITE_cHRM_SUPPORTED -#define PNG_WRITE_gAMA_SUPPORTED -#define PNG_WRITE_hIST_SUPPORTED -#define PNG_WRITE_oFFs_SUPPORTED -#define PNG_WRITE_pCAL_SUPPORTED -#define PNG_WRITE_pHYs_SUPPORTED -#define PNG_WRITE_sBIT_SUPPORTED -#define PNG_WRITE_sRGB_SUPPORTED -#define PNG_WRITE_tEXt_SUPPORTED -#define PNG_WRITE_tIME_SUPPORTED -#define PNG_WRITE_tRNS_SUPPORTED -#define PNG_WRITE_zTXt_SUPPORTED -#endif /* PNG_WRITE_ANCILLARY_CHUNKS_SUPPORTED */ - -/* need the time information for reading tIME chunks */ -#if defined(PNG_READ_tIME_SUPPORTED) || defined(PNG_WRITE_tIME_SUPPORTED) -#include -#endif - -/* Some typedefs to get us started. These should be safe on most of the - * common platforms. The typedefs should be at least as large as the - * numbers suggest (a png_uint_32 must be at least 32 bits long), but they - * don't have to be exactly that size. Some compilers dislike passing - * unsigned shorts as function parameters, so you may be better off using - * unsigned int for png_uint_16. Likewise, for 64-bit systems, you may - * want to have unsigned int for png_uint_32 instead of unsigned long. - */ - -typedef unsigned long png_uint_32; -typedef long png_int_32; -typedef unsigned short png_uint_16; -typedef short png_int_16; -typedef unsigned char png_byte; - -/* This is usually size_t. It is typedef'ed just in case you need it to - change (I'm not sure if you will or not, so I thought I'd be safe) */ -typedef size_t png_size_t; - -/* The following is needed for medium model support. It cannot be in the - * PNG_INTERNAL section. Needs modification for other compilers besides - * MSC. Model independent support declares all arrays and pointers to be - * large using the far keyword. The zlib version used must also support - * model independent data. As of version zlib 1.0.4, the necessary changes - * have been made in zlib. The USE_FAR_KEYWORD define triggers other - * changes that are needed. (Tim Wegner) - */ - -/* Separate compiler dependencies (problem here is that zlib.h always - defines FAR. (SJT) */ -#ifdef __BORLANDC__ -#if defined(__LARGE__) || defined(__HUGE__) || defined(__COMPACT__) -#define LDATA 1 -#else -#define LDATA 0 -#endif - -#if !defined(__WIN32__) && !defined(__FLAT__) -#define PNG_MAX_MALLOC_64K -#if (LDATA != 1) -#ifndef FAR -#define FAR __far -#endif -#define USE_FAR_KEYWORD -#endif /* LDATA != 1 */ - -/* Possibly useful for moving data out of default segment. - * Uncomment it if you want. Could also define FARDATA as - * const if your compiler supports it. (SJT) -# define FARDATA FAR - */ -#endif /* __WIN32__, __FLAT__ */ - -#endif /* __BORLANDC__ */ - - -/* Suggest testing for specific compiler first before testing for - * FAR. The Watcom compiler defines both __MEDIUM__ and M_I86MM, - * making reliance oncertain keywords suspect. (SJT) - */ - -/* MSC Medium model */ -#if defined(FAR) -# if defined(M_I86MM) -# define USE_FAR_KEYWORD -# define FARDATA FAR -# include -# endif -#endif - -/* SJT: default case */ -#ifndef FAR -# define FAR -#endif - -/* At this point FAR is always defined */ -#ifndef FARDATA -#define FARDATA -#endif - -/* Add typedefs for pointers */ -typedef void FAR * png_voidp; -typedef png_byte FAR * png_bytep; -typedef png_uint_32 FAR * png_uint_32p; -typedef png_int_32 FAR * png_int_32p; -typedef png_uint_16 FAR * png_uint_16p; -typedef png_int_16 FAR * png_int_16p; -typedef PNG_CONST char FAR * png_const_charp; -typedef char FAR * png_charp; -typedef double FAR * png_doublep; - -/* Pointers to pointers; i.e. arrays */ -typedef png_byte FAR * FAR * png_bytepp; -typedef png_uint_32 FAR * FAR * png_uint_32pp; -typedef png_int_32 FAR * FAR * png_int_32pp; -typedef png_uint_16 FAR * FAR * png_uint_16pp; -typedef png_int_16 FAR * FAR * png_int_16pp; -typedef PNG_CONST char FAR * FAR * png_const_charpp; -typedef char FAR * FAR * png_charpp; -typedef double FAR * FAR * png_doublepp; - -/* Pointers to pointers to pointers; i.e. pointer to array */ -typedef char FAR * FAR * FAR * png_charppp; - -/* libpng typedefs for types in zlib. If zlib changes - * or another compression library is used, then change these. - * Eliminates need to change all the source files. - */ -typedef charf * png_zcharp; -typedef charf * FAR * png_zcharpp; -typedef z_stream FAR * png_zstreamp; - -/* allow for compilation as dll under MS Windows */ -#ifdef __WIN32DLL__ -#define PNG_EXPORT(type,symbol) __declspec(dllexport) type symbol -#endif - -/* allow for compilation as dll with BORLAND C++ 5.0 */ -#if defined(__BORLANDC__) && defined(_Windows) && defined(__DLL__) -# define PNG_EXPORT(type,symbol) type _export symbol -#endif - -/* allow for compilation as shared lib under BeOS */ -#ifdef __BEOSDLL__ -#define PNG_EXPORT(type,symbol) __declspec(export) type symbol -#endif - -#ifndef PNG_EXPORT -#define PNG_EXPORT(type,symbol) type symbol -#endif - - -/* User may want to use these so not in PNG_INTERNAL. Any library functions - * that are passed far data must be model independent. - */ - -#if defined(USE_FAR_KEYWORD) /* memory model independent fns */ -/* use this to make far-to-near assignments */ -# define CHECK 1 -# define NOCHECK 0 -# define CVT_PTR(ptr) (png_far_to_near(png_ptr,ptr,CHECK)) -# define CVT_PTR_NOCHECK(ptr) (png_far_to_near(png_ptr,ptr,NOCHECK)) -# define png_strlen _fstrlen -# define png_memcmp _fmemcmp /* SJT: added */ -# define png_memcpy _fmemcpy -# define png_memset _fmemset -#else /* use the usual functions */ -# define CVT_PTR(ptr) (ptr) -# define CVT_PTR_NOCHECK(ptr) (ptr) -# define png_strlen strlen -# define png_memcmp memcmp /* SJT: added */ -# define png_memcpy memcpy -# define png_memset memset -#endif -/* End of memory model independent support */ - -/* Just a double check that someone hasn't tried to define something - * contradictory. - */ -#if (PNG_ZBUF_SIZE > 65536) && defined(PNG_MAX_MALLOC_64K) -#undef PNG_ZBUF_SIZE -#define PNG_ZBUF_SIZE 65536 -#endif - -#endif /* PNGCONF_H */ - diff --git a/src/png/pngerror.c b/src/png/pngerror.c deleted file mode 100644 index c31201bdf4..0000000000 --- a/src/png/pngerror.c +++ /dev/null @@ -1,174 +0,0 @@ - -/* pngerror.c - stub functions for i/o and memory allocation - * - * libpng 1.0.1 - * For conditions of distribution and use, see copyright notice in png.h - * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc. - * Copyright (c) 1996, 1997 Andreas Dilger - * Copyright (c) 1998, Glenn Randers-Pehrson - * March 15, 1998 - * - * This file provides a location for all error handling. Users which - * need special error handling are expected to write replacement functions - * and use png_set_error_fn() to use those functions. See the instructions - * at each function. - */ - -#define PNG_INTERNAL -#include "../png/png.h" - -static void png_default_error PNGARG((png_structp png_ptr, - png_const_charp message)); -static void png_default_warning PNGARG((png_structp png_ptr, - png_const_charp message)); - -/* This function is called whenever there is a fatal error. This function - * should not be changed. If there is a need to handle errors differently, - * you should supply a replacement error function and use png_set_error_fn() - * to replace the error function at run-time. - */ -void -png_error(png_structp png_ptr, png_const_charp message) -{ - if (png_ptr->error_fn != NULL) - (*(png_ptr->error_fn))(png_ptr, message); - - /* if the following returns or doesn't exist, use the default function, - which will not return */ - png_default_error(png_ptr, message); -} - -/* This function is called whenever there is a non-fatal error. This function - * should not be changed. If there is a need to handle warnings differently, - * you should supply a replacement warning function and use - * png_set_error_fn() to replace the warning function at run-time. - */ -void -png_warning(png_structp png_ptr, png_const_charp message) -{ - if (png_ptr->warning_fn != NULL) - (*(png_ptr->warning_fn))(png_ptr, message); - else - png_default_warning(png_ptr, message); -} - -/* These utilities are used internally to build an error message which relates - * to the current chunk. The chunk name comes from png_ptr->chunk_name, - * this is used to prefix the message. The message is limited in length - * to 63 bytes, the name characters are output as hex digits wrapped in [] - * if the character is invalid. - */ -#define isnonalpha(c) ((c) < 41 || (c) > 122 || ((c) > 90 && (c) < 97)) -static PNG_CONST char png_digit[16] = { - '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' -}; - -static void -png_format_buffer(png_structp png_ptr, png_charp buffer, png_const_charp message) -{ - int iout = 0, iin = 0; - - while (iin < 4) { - int c = png_ptr->chunk_name[iin++]; - if (isnonalpha(c)) { - buffer[iout++] = '['; - buffer[iout++] = png_digit[(c & 0xf0) >> 4]; - buffer[iout++] = png_digit[c & 0xf]; - buffer[iout++] = ']'; - } else { - buffer[iout++] = c; - } - } - - if (message == NULL) - buffer[iout] = 0; - else { - buffer[iout++] = ':'; - buffer[iout++] = ' '; - png_memcpy(buffer+iout, message, 64); - buffer[iout+63] = 0; - } -} - -void -png_chunk_error(png_structp png_ptr, png_const_charp message) -{ - char msg[16+64]; - png_format_buffer(png_ptr, msg, message); - png_error(png_ptr, msg); -} - -void -png_chunk_warning(png_structp png_ptr, png_const_charp message) -{ - char msg[16+64]; - png_format_buffer(png_ptr, msg, message); - png_warning(png_ptr, msg); -} - -/* This is the default error handling function. Note that replacements for - * this function MUST NOT RETURN, or the program will likely crash. This - * function is used by default, or if the program supplies NULL for the - * error function pointer in png_set_error_fn(). - */ -static void -png_default_error(png_structp png_ptr, png_const_charp message) -{ -#ifndef PNG_NO_STDIO - fprintf(stderr, "libpng error: %s\n", message); -#endif - -#ifdef USE_FAR_KEYWORD - { - jmp_buf jmpbuf; - png_memcpy(jmpbuf,png_ptr->jmpbuf,sizeof(jmp_buf)); - longjmp(jmpbuf, 1); - } -#else - longjmp(png_ptr->jmpbuf, 1); -#endif -} - -/* This function is called when there is a warning, but the library thinks - * it can continue anyway. Replacement functions don't have to do anything - * here if you don't want to. In the default configuration, png_ptr is - * not used, but it is passed in case it may be useful. - */ -static void -png_default_warning(png_structp png_ptr, png_const_charp message) -{ - if (png_ptr == NULL) - return; - -#ifndef PNG_NO_STDIO - fprintf(stderr, "libpng warning: %s\n", message); -#endif -} - -/* This function is called when the application wants to use another method - * of handling errors and warnings. Note that the error function MUST NOT - * return to the calling routine or serious problems will occur. The return - * method used in the default routine calls longjmp(png_ptr->jmpbuf, 1) - */ -void -png_set_error_fn(png_structp png_ptr, png_voidp error_ptr, - png_error_ptr error_fn, png_error_ptr warning_fn) -{ - png_ptr->error_ptr = error_ptr; - png_ptr->error_fn = error_fn; - png_ptr->warning_fn = warning_fn; -} - - -/* This function returns a pointer to the error_ptr associated with the user - * functions. The application should free any memory associated with this - * pointer before png_write_destroy and png_read_destroy are called. - */ -png_voidp -png_get_error_ptr(png_structp png_ptr) -{ - return ((png_voidp)png_ptr->error_ptr); -} - - - diff --git a/src/png/pngget.c b/src/png/pngget.c deleted file mode 100644 index f45fa418aa..0000000000 --- a/src/png/pngget.c +++ /dev/null @@ -1,644 +0,0 @@ - -/* pngget.c - retrieval of values from info struct - * - * libpng 1.0.1 - * For conditions of distribution and use, see copyright notice in png.h - * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc. - * Copyright (c) 1996, 1997 Andreas Dilger - * Copyright (c) 1998, Glenn Randers-Pehrson - * March 15, 1998 - */ - -#define PNG_INTERNAL -#include "../png/png.h" - -png_uint_32 -png_get_valid(png_structp png_ptr, png_infop info_ptr, png_uint_32 flag) -{ - if (png_ptr != NULL && info_ptr != NULL) - return(info_ptr->valid & flag); - else - return(0); -} - -png_uint_32 -png_get_rowbytes(png_structp png_ptr, png_infop info_ptr) -{ - if (png_ptr != NULL && info_ptr != NULL) - return(info_ptr->rowbytes); - else - return(0); -} - -#ifdef PNG_EASY_ACCESS_SUPPORTED -/* easy access to info, added in libpng-0.99 */ -png_uint_32 -png_get_image_width(png_structp png_ptr, png_infop info_ptr) -{ - if (png_ptr != NULL && info_ptr != NULL) - { - return info_ptr->width; - } - return (0); -} - -png_uint_32 -png_get_image_height(png_structp png_ptr, png_infop info_ptr) -{ - if (png_ptr != NULL && info_ptr != NULL) - { - return info_ptr->height; - } - return (0); -} - -png_byte -png_get_bit_depth(png_structp png_ptr, png_infop info_ptr) -{ - if (png_ptr != NULL && info_ptr != NULL) - { - return info_ptr->bit_depth; - } - return (0); -} - -png_byte -png_get_color_type(png_structp png_ptr, png_infop info_ptr) -{ - if (png_ptr != NULL && info_ptr != NULL) - { - return info_ptr->color_type; - } - return (0); -} - -png_byte -png_get_filter_type(png_structp png_ptr, png_infop info_ptr) -{ - if (png_ptr != NULL && info_ptr != NULL) - { - return info_ptr->filter_type; - } - return (0); -} - -png_byte -png_get_interlace_type(png_structp png_ptr, png_infop info_ptr) -{ - if (png_ptr != NULL && info_ptr != NULL) - { - return info_ptr->interlace_type; - } - return (0); -} - -png_byte -png_get_compression_type(png_structp png_ptr, png_infop info_ptr) -{ - if (png_ptr != NULL && info_ptr != NULL) - { - return info_ptr->compression_type; - } - return (0); -} - -png_uint_32 -png_get_x_pixels_per_meter(png_structp png_ptr, png_infop info_ptr) -{ -#if defined(PNG_READ_pHYs_SUPPORTED) || defined(PNG_WRITE_pHYs_SUPPORTED) - if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_pHYs)) - { - png_debug1(1, "in %s retrieval function\n", "png_get_x_pixels_per_meter"); - if(info_ptr->phys_unit_type != PNG_RESOLUTION_METER) - return (0); - else return (info_ptr->x_pixels_per_unit); - } - else -#endif - return (0); -} - -png_uint_32 -png_get_y_pixels_per_meter(png_structp png_ptr, png_infop info_ptr) -{ -#if defined(PNG_READ_pHYs_SUPPORTED) || defined(PNG_WRITE_pHYs_SUPPORTED) - if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_pHYs)) - { - png_debug1(1, "in %s retrieval function\n", "png_get_y_pixels_per_meter"); - if(info_ptr->phys_unit_type != PNG_RESOLUTION_METER) - return (0); - else return (info_ptr->y_pixels_per_unit); - } - else -#endif - return (0); -} - -png_uint_32 -png_get_pixels_per_meter(png_structp png_ptr, png_infop info_ptr) -{ -#if defined(PNG_READ_pHYs_SUPPORTED) || defined(PNG_WRITE_pHYs_SUPPORTED) - if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_pHYs)) - { - png_debug1(1, "in %s retrieval function\n", "png_get_pixels_per_meter"); - if(info_ptr->phys_unit_type != PNG_RESOLUTION_METER || - info_ptr->x_pixels_per_unit != info_ptr->y_pixels_per_unit) - return (0); - else return (info_ptr->x_pixels_per_unit); - } - else -#endif - return (0); -} - -float -png_get_pixel_aspect_ratio(png_structp png_ptr, png_infop info_ptr) - { -#if defined(PNG_READ_pHYs_SUPPORTED) || defined(PNG_WRITE_pHYs_SUPPORTED) - if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_pHYs)) - { - png_debug1(1, "in %s retrieval function\n", "png_get_aspect_ratio"); - if (info_ptr->x_pixels_per_unit == 0) - return ((float)0.0); - else - return ((float)info_ptr->y_pixels_per_unit - /(float)info_ptr->x_pixels_per_unit); - } - else -#endif - return ((float)0.0); -} - -png_uint_32 -png_get_x_offset_microns(png_structp png_ptr, png_infop info_ptr) -{ -#if defined(PNG_READ_oFFs_SUPPORTED) || defined(PNG_WRITE_oFFs_SUPPORTED) - if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_oFFs)) - { - png_debug1(1, "in %s retrieval function\n", "png_get_x_offset_microns"); - if(info_ptr->offset_unit_type != PNG_OFFSET_MICROMETER) - return (0); - else return (info_ptr->x_offset); - } - else -#endif - return (0); -} - -png_uint_32 -png_get_y_offset_microns(png_structp png_ptr, png_infop info_ptr) -{ -#if defined(PNG_READ_oFFs_SUPPORTED) || defined(PNG_WRITE_oFFs_SUPPORTED) - if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_oFFs)) - { - png_debug1(1, "in %s retrieval function\n", "png_get_y_offset_microns"); - if(info_ptr->offset_unit_type != PNG_OFFSET_MICROMETER) - return (0); - else return (info_ptr->y_offset); - } - else -#endif - return (0); -} - -png_uint_32 -png_get_x_offset_pixels(png_structp png_ptr, png_infop info_ptr) -{ -#if defined(PNG_READ_oFFs_SUPPORTED) || defined(PNG_WRITE_oFFs_SUPPORTED) - if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_oFFs)) - { - png_debug1(1, "in %s retrieval function\n", "png_get_x_offset_microns"); - if(info_ptr->offset_unit_type != PNG_OFFSET_PIXEL) - return (0); - else return (info_ptr->x_offset); - } - else -#endif - return (0); -} - -png_uint_32 -png_get_y_offset_pixels(png_structp png_ptr, png_infop info_ptr) -{ -#if defined(PNG_READ_oFFs_SUPPORTED) || defined(PNG_WRITE_oFFs_SUPPORTED) - if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_oFFs)) - { - png_debug1(1, "in %s retrieval function\n", "png_get_y_offset_microns"); - if(info_ptr->offset_unit_type != PNG_OFFSET_PIXEL) - return (0); - else return (info_ptr->y_offset); - } - else -#endif - return (0); -} - -#ifdef PNG_INCH_CONVERSIONS -png_uint_32 -png_get_pixels_per_inch(png_structp png_ptr, png_infop info_ptr) -{ - return ((png_uint_32)((float)png_get_pixels_per_meter(png_ptr, info_ptr) - *.03937 +.5) -} - -png_uint_32 -png_get_x_pixels_per_inch(png_structp png_ptr, png_infop info_ptr) -{ - return ((png_uint_32)((float)png_get_x_pixels_per_meter(png_ptr, info_ptr) - *.03937 +.5) -} - -png_uint_32 -png_get_y_pixels_per_inch(png_structp png_ptr, png_infop info_ptr) -{ - return ((png_uint_32)((float)png_get_y_pixels_per_meter(png_ptr, info_ptr) - *.03937 +.5) -} - -float -png_get_x_offset_inches(png_structp png_ptr, png_infop info_ptr) -{ - return ((float)png_get_x_offset_microns(png_ptr, info_ptr) - *.03937/1000000. +.5) -} - -float -png_get_y_offset_inches(png_structp png_ptr, png_infop info_ptr) -{ - return ((float)png_get_y_offset_microns(png_ptr, info_ptr) - *.03937/1000000. +.5) -} - -#if defined(PNG_READ_pHYs_SUPPORTED) -png_uint_32 -png_get_pHYs_dpi(png_structp png_ptr, png_infop info_ptr, - png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type) -{ - png_uint_32 retval = 0; - - if (png_ptr != NULL && info_ptr != NULL && info_ptr->valid & PNG_INFO_pHYs) - { - png_debug1(1, "in %s retrieval function\n", "pHYs"); - if (res_x != NULL) - { - *res_x = info_ptr->x_pixels_per_unit; - retval |= PNG_INFO_pHYs; - } - if (res_y != NULL) - { - *res_y = info_ptr->y_pixels_per_unit; - retval |= PNG_INFO_pHYs; - } - if (unit_type != NULL) - { - *unit_type = (int)info_ptr->phys_unit_type; - retval |= PNG_INFO_pHYs; - if(unit_type == 1) - { - if (res_x != NULL) *res_x = (png_uint_32)(*res_x * 39.37 + .50); - if (res_y != NULL) *res_y = (png_uint_32)(*res_y * 39.37 + .50); - } - } - } - return (retval); -} -#endif - -#endif /* PNG_INCH_CONVERSIONS */ - -/* png_get_channels really belongs in here, too, but it's been around longer */ -#endif /* PNG_EASY_ACCESS_SUPPORTED */ - -png_byte -png_get_channels(png_structp png_ptr, png_infop info_ptr) -{ - if (png_ptr != NULL && info_ptr != NULL) - return(info_ptr->channels); - else - return (0); -} - -png_bytep -png_get_signature(png_structp png_ptr, png_infop info_ptr) -{ - if (png_ptr != NULL && info_ptr != NULL) - return(info_ptr->signature); - else - return (NULL); -} - -#if defined(PNG_READ_bKGD_SUPPORTED) -png_uint_32 -png_get_bKGD(png_structp png_ptr, png_infop info_ptr, - png_color_16p *background) -{ - if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_bKGD) - && background != NULL) - { - png_debug1(1, "in %s retrieval function\n", "bKGD"); - *background = &(info_ptr->background); - return (PNG_INFO_bKGD); - } - return (0); -} -#endif - -#if defined(PNG_READ_cHRM_SUPPORTED) -png_uint_32 -png_get_cHRM(png_structp png_ptr, png_infop info_ptr, - double *white_x, double *white_y, double *red_x, double *red_y, - double *green_x, double *green_y, double *blue_x, double *blue_y) -{ - if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_cHRM)) - { - png_debug1(1, "in %s retrieval function\n", "cHRM"); - if (white_x != NULL) - *white_x = (double)info_ptr->x_white; - if (white_y != NULL) - *white_y = (double)info_ptr->y_white; - if (red_x != NULL) - *red_x = (double)info_ptr->x_red; - if (red_y != NULL) - *red_y = (double)info_ptr->y_red; - if (green_x != NULL) - *green_x = (double)info_ptr->x_green; - if (green_y != NULL) - *green_y = (double)info_ptr->y_green; - if (blue_x != NULL) - *blue_x = (double)info_ptr->x_blue; - if (blue_y != NULL) - *blue_y = (double)info_ptr->y_blue; - return (PNG_INFO_cHRM); - } - return (0); -} -#endif - -#if defined(PNG_READ_gAMA_SUPPORTED) -png_uint_32 -png_get_gAMA(png_structp png_ptr, png_infop info_ptr, double *file_gamma) -{ - if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_gAMA) - && file_gamma != NULL) - { - png_debug1(1, "in %s retrieval function\n", "gAMA"); - *file_gamma = (double)info_ptr->gamma; - return (PNG_INFO_gAMA); - } - return (0); -} -#endif - -#if defined(PNG_READ_sRGB_SUPPORTED) -png_uint_32 -png_get_sRGB(png_structp png_ptr, png_infop info_ptr, int *file_srgb_intent) -{ - if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_sRGB) - && file_srgb_intent != NULL) - { - png_debug1(1, "in %s retrieval function\n", "sRGB"); - *file_srgb_intent = (int)info_ptr->srgb_intent; - return (PNG_INFO_sRGB); - } - return (0); -} -#endif - -#if defined(PNG_READ_hIST_SUPPORTED) -png_uint_32 -png_get_hIST(png_structp png_ptr, png_infop info_ptr, png_uint_16p *hist) -{ - if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_hIST) - && hist != NULL) - { - png_debug1(1, "in %s retrieval function\n", "hIST"); - *hist = info_ptr->hist; - return (PNG_INFO_hIST); - } - return (0); -} -#endif - -png_uint_32 -png_get_IHDR(png_structp png_ptr, png_infop info_ptr, - png_uint_32 *width, png_uint_32 *height, int *bit_depth, - int *color_type, int *interlace_type, int *compression_type, - int *filter_type) - -{ - if (png_ptr != NULL && info_ptr != NULL && width != NULL && height != NULL && - bit_depth != NULL && color_type != NULL) - { - int pixel_depth, channels; - png_uint_32 rowbytes_per_pixel; - - png_debug1(1, "in %s retrieval function\n", "IHDR"); - *width = info_ptr->width; - *height = info_ptr->height; - *bit_depth = info_ptr->bit_depth; - *color_type = info_ptr->color_type; - if (compression_type != NULL) - *compression_type = info_ptr->compression_type; - if (filter_type != NULL) - *filter_type = info_ptr->filter_type; - if (interlace_type != NULL) - *interlace_type = info_ptr->interlace_type; - - /* check for potential overflow of rowbytes */ - if (*color_type == PNG_COLOR_TYPE_PALETTE) - channels = 1; - else if (*color_type & PNG_COLOR_MASK_COLOR) - channels = 3; - else - channels = 1; - if (*color_type & PNG_COLOR_MASK_ALPHA) - channels++; - pixel_depth = *bit_depth * channels; - rowbytes_per_pixel = (pixel_depth + 7) >> 3; - if ((*width > (png_uint_32)2147483647L/rowbytes_per_pixel)) - { - png_warning(png_ptr, - "Width too large for libpng to process image data."); - } - return (1); - } - return (0); -} - -#if defined(PNG_READ_oFFs_SUPPORTED) -png_uint_32 -png_get_oFFs(png_structp png_ptr, png_infop info_ptr, - png_uint_32 *offset_x, png_uint_32 *offset_y, int *unit_type) -{ - if (png_ptr != NULL && info_ptr != NULL && (info_ptr->valid & PNG_INFO_oFFs) - && offset_x != NULL && offset_y != NULL && unit_type != NULL) - { - png_debug1(1, "in %s retrieval function\n", "oFFs"); - *offset_x = info_ptr->x_offset; - *offset_y = info_ptr->y_offset; - *unit_type = (int)info_ptr->offset_unit_type; - return (PNG_INFO_oFFs); - } - return (0); -} -#endif - -#if defined(PNG_READ_pCAL_SUPPORTED) -png_uint_32 -png_get_pCAL(png_structp png_ptr, png_infop info_ptr, - png_charp *purpose, png_int_32 *X0, png_int_32 *X1, int *type, int *nparams, - png_charp *units, png_charpp *params) -{ - if (png_ptr != NULL && info_ptr != NULL && info_ptr->valid & PNG_INFO_pCAL && - purpose != NULL && X0 != NULL && X1 != NULL && type != NULL && - nparams != NULL && units != NULL && params != NULL) - { - png_debug1(1, "in %s retrieval function\n", "pCAL"); - *purpose = info_ptr->pcal_purpose; - *X0 = info_ptr->pcal_X0; - *X1 = info_ptr->pcal_X1; - *type = (int)info_ptr->pcal_type; - *nparams = (int)info_ptr->pcal_nparams; - *units = info_ptr->pcal_units; - *params = info_ptr->pcal_params; - return (PNG_INFO_pCAL); - } - return (0); -} -#endif - -#if defined(PNG_READ_pHYs_SUPPORTED) -png_uint_32 -png_get_pHYs(png_structp png_ptr, png_infop info_ptr, - png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type) -{ - png_uint_32 retval = 0; - - if (png_ptr != NULL && info_ptr != NULL && info_ptr->valid & PNG_INFO_pHYs) - { - png_debug1(1, "in %s retrieval function\n", "pHYs"); - if (res_x != NULL) - { - *res_x = info_ptr->x_pixels_per_unit; - retval |= PNG_INFO_pHYs; - } - if (res_y != NULL) - { - *res_y = info_ptr->y_pixels_per_unit; - retval |= PNG_INFO_pHYs; - } - if (unit_type != NULL) - { - *unit_type = (int)info_ptr->phys_unit_type; - retval |= PNG_INFO_pHYs; - } - } - return (retval); -} -#endif - -png_uint_32 -png_get_PLTE(png_structp png_ptr, png_infop info_ptr, png_colorp *palette, - int *num_palette) -{ - if (png_ptr != NULL && info_ptr != NULL && info_ptr->valid & PNG_INFO_PLTE && - palette != NULL) - { - png_debug1(1, "in %s retrieval function\n", "PLTE"); - *palette = info_ptr->palette; - *num_palette = info_ptr->num_palette; - png_debug1(3, "num_palette = %d\n", *num_palette); - return (PNG_INFO_PLTE); - } - return (0); -} - -#if defined(PNG_READ_sBIT_SUPPORTED) -png_uint_32 -png_get_sBIT(png_structp png_ptr, png_infop info_ptr, png_color_8p *sig_bit) -{ - if (png_ptr != NULL && info_ptr != NULL && info_ptr->valid & PNG_INFO_sBIT && - sig_bit != NULL) - { - png_debug1(1, "in %s retrieval function\n", "sBIT"); - *sig_bit = &(info_ptr->sig_bit); - return (PNG_INFO_sBIT); - } - return (0); -} -#endif - -#if defined(PNG_READ_tEXt_SUPPORTED) || defined(PNG_READ_zTXt_SUPPORTED) -png_uint_32 -png_get_text(png_structp png_ptr, png_infop info_ptr, png_textp *text_ptr, - int *num_text) -{ - if (png_ptr != NULL && info_ptr != NULL && info_ptr->num_text > 0) - { - png_debug1(1, "in %s retrieval function\n", - (png_ptr->chunk_name[0] == '\0' ? "text" - : (png_const_charp)png_ptr->chunk_name)); - if (text_ptr != NULL) - *text_ptr = info_ptr->text; - if (num_text != NULL) - *num_text = info_ptr->num_text; - return ((png_uint_32)info_ptr->num_text); - } - return(0); -} -#endif - -#if defined(PNG_READ_tIME_SUPPORTED) -png_uint_32 -png_get_tIME(png_structp png_ptr, png_infop info_ptr, png_timep *mod_time) -{ - if (png_ptr != NULL && info_ptr != NULL && info_ptr->valid & PNG_INFO_tIME && - mod_time != NULL) - { - png_debug1(1, "in %s retrieval function\n", "tIME"); - *mod_time = &(info_ptr->mod_time); - return (PNG_INFO_tIME); - } - return (0); -} -#endif - -#if defined(PNG_READ_tRNS_SUPPORTED) -png_uint_32 -png_get_tRNS(png_structp png_ptr, png_infop info_ptr, - png_bytep *trans, int *num_trans, png_color_16p *trans_values) -{ - png_uint_32 retval = 0; - if (png_ptr != NULL && info_ptr != NULL && info_ptr->valid & PNG_INFO_tRNS) - { - png_debug1(1, "in %s retrieval function\n", "tRNS"); - if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE) - { - if (trans != NULL) - { - *trans = info_ptr->trans; - retval |= PNG_INFO_tRNS; - } - if (trans_values != NULL) - *trans_values = &(info_ptr->trans_values); - } - else /* if (info_ptr->color_type != PNG_COLOR_TYPE_PALETTE) */ - { - if (trans_values != NULL) - { - *trans_values = &(info_ptr->trans_values); - retval |= PNG_INFO_tRNS; - } - if(trans != NULL) - *trans = NULL; - } - if(num_trans != NULL) - { - *num_trans = info_ptr->num_trans; - retval |= PNG_INFO_tRNS; - } - } - return (retval); -} -#endif - diff --git a/src/png/pngmem.c b/src/png/pngmem.c deleted file mode 100644 index b92fcc8ae0..0000000000 --- a/src/png/pngmem.c +++ /dev/null @@ -1,360 +0,0 @@ - -/* pngmem.c - stub functions for memory allocation - * - * libpng 1.0.1 - * For conditions of distribution and use, see copyright notice in png.h - * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc. - * Copyright (c) 1996, 1997 Andreas Dilger - * Copyright (c) 1998, Glenn Randers-Pehrson - * March 15, 1998 - * - * This file provides a location for all memory allocation. Users which - * need special memory handling are expected to modify the code in this file - * to meet their needs. See the instructions at each function. - */ - -#define PNG_INTERNAL -#include "../png/png.h" - -/* The following "hides" PNG_MALLOC and PNG_FREE thus allowing the pngtest - application to put a wrapper on top of them. */ -#ifdef PNGTEST_MEMORY_DEBUG -#define PNG_MALLOC png_debug_malloc -#define PNG_FREE png_debug_free -#else -#define PNG_MALLOC png_malloc -#define PNG_FREE png_free -#endif - -/* Borland DOS special memory handler */ -#if defined(__TURBOC__) && !defined(_Windows) && !defined(__FLAT__) -/* if you change this, be sure to change the one in png.h also */ - -/* Allocate memory for a png_struct. The malloc and memset can be replaced - by a single call to calloc() if this is thought to improve performance. */ -png_voidp -png_create_struct(int type) -{ - png_size_t size; - png_voidp struct_ptr; - - if (type == PNG_STRUCT_INFO) - size = sizeof(png_info); - else if (type == PNG_STRUCT_PNG) - size = sizeof(png_struct); - else - return ((png_voidp)NULL); - - if ((struct_ptr = (png_voidp)farmalloc(size)) != NULL) - { - png_memset(struct_ptr, 0, size); - } - - return (struct_ptr); -} - - -/* Free memory allocated by a png_create_struct() call */ -void -png_destroy_struct(png_voidp struct_ptr) -{ - if (struct_ptr != NULL) - { - farfree (struct_ptr); - struct_ptr = NULL; - } -} - -/* Allocate memory. For reasonable files, size should never exceed - * 64K. However, zlib may allocate more then 64K if you don't tell - * it not to. See zconf.h and png.h for more information. zlib does - * need to allocate exactly 64K, so whatever you call here must - * have the ability to do that. - * - * Borland seems to have a problem in DOS mode for exactly 64K. - * It gives you a segment with an offset of 8 (perhaps to store it's - * memory stuff). zlib doesn't like this at all, so we have to - * detect and deal with it. This code should not be needed in - * Windows or OS/2 modes, and only in 16 bit mode. This code has - * been updated by Alexander Lehmann for version 0.89 to waste less - * memory. - * - * Note that we can't use png_size_t for the "size" declaration, - * since on some systems a png_size_t is a 16-bit quantity, and as a - * result, we would be truncating potentially larger memory requests - * (which should cause a fatal error) and introducing major problems. - */ -png_voidp -PNG_MALLOC(png_structp png_ptr, png_uint_32 size) -{ - png_voidp ret; - if (png_ptr == NULL || size == 0) - return ((png_voidp)NULL); - -#ifdef PNG_MAX_MALLOC_64K - if (size > (png_uint_32)65536L) - png_error(png_ptr, "Cannot Allocate > 64K"); -#endif - - if (size == (png_uint_32)65536L) - { - if (png_ptr->offset_table == NULL) - { - /* try to see if we need to do any of this fancy stuff */ - ret = farmalloc(size); - if (ret == NULL || ((png_size_t)ret & 0xffff)) - { - int num_blocks; - png_uint_32 total_size; - png_bytep table; - int i; - png_byte huge * hptr; - - if (ret != NULL) - { - farfree(ret); - ret = NULL; - } - - num_blocks = (int)(1 << (png_ptr->zlib_window_bits - 14)); - if (num_blocks < 1) - num_blocks = 1; - if (png_ptr->zlib_mem_level >= 7) - num_blocks += (int)(1 << (png_ptr->zlib_mem_level - 7)); - else - num_blocks++; - - total_size = ((png_uint_32)65536L) * (png_uint_32)num_blocks+16; - - table = farmalloc(total_size); - - if (table == NULL) - { - png_error(png_ptr, "Out Of Memory."); /* Note "O" and "M" */ - } - - if ((png_size_t)table & 0xfff0) - { - png_error(png_ptr, "Farmalloc didn't return normalized pointer"); - } - - png_ptr->offset_table = table; - png_ptr->offset_table_ptr = farmalloc(num_blocks * - sizeof (png_bytep)); - - if (png_ptr->offset_table_ptr == NULL) - { - png_error(png_ptr, "Out Of memory."); - } - - hptr = (png_byte huge *)table; - if ((png_size_t)hptr & 0xf) - { - hptr = (png_byte huge *)((long)(hptr) & 0xfffffff0L); - hptr += 16L; - } - for (i = 0; i < num_blocks; i++) - { - png_ptr->offset_table_ptr[i] = (png_bytep)hptr; - hptr += (png_uint_32)65536L; - } - - png_ptr->offset_table_number = num_blocks; - png_ptr->offset_table_count = 0; - png_ptr->offset_table_count_free = 0; - } - } - - if (png_ptr->offset_table_count >= png_ptr->offset_table_number) - png_error(png_ptr, "Out of Memory."); - - ret = png_ptr->offset_table_ptr[png_ptr->offset_table_count++]; - } - else - ret = farmalloc(size); - - if (ret == NULL) - { - png_error(png_ptr, "Out of memory."); /* Note "o" and "m" */ - } - - return (ret); -} - -/* free a pointer allocated by PNG_MALLOC(). In the default - configuration, png_ptr is not used, but is passed in case it - is needed. If ptr is NULL, return without taking any action. */ -void -PNG_FREE(png_structp png_ptr, png_voidp ptr) -{ - if (png_ptr == NULL || ptr == NULL) - return; - - if (png_ptr->offset_table != NULL) - { - int i; - - for (i = 0; i < png_ptr->offset_table_count; i++) - { - if (ptr == png_ptr->offset_table_ptr[i]) - { - ptr = NULL; - png_ptr->offset_table_count_free++; - break; - } - } - if (png_ptr->offset_table_count_free == png_ptr->offset_table_count) - { - farfree(png_ptr->offset_table); - farfree(png_ptr->offset_table_ptr); - png_ptr->offset_table = NULL; - png_ptr->offset_table_ptr = NULL; - } - } - - if (ptr != NULL) - { - farfree(ptr); - ptr = NULL; - } -} - -#else /* Not the Borland DOS special memory handler */ - -/* Allocate memory for a png_struct or a png_info. The malloc and - memset can be replaced by a single call to calloc() if this is thought - to improve performance noticably.*/ -png_voidp -png_create_struct(int type) -{ - png_size_t size; - png_voidp struct_ptr; - - if (type == PNG_STRUCT_INFO) - size = sizeof(png_info); - else if (type == PNG_STRUCT_PNG) - size = sizeof(png_struct); - else - return ((png_voidp)NULL); - -#if defined(__TURBOC__) && !defined(__FLAT__) - if ((struct_ptr = (png_voidp)farmalloc(size)) != NULL) -#else -# if defined(_MSC_VER) && defined(MAXSEG_64K) - if ((struct_ptr = (png_voidp)halloc(size,1)) != NULL) -# else - if ((struct_ptr = (png_voidp)malloc(size)) != NULL) -# endif -#endif - { - png_memset(struct_ptr, 0, size); - } - - return (struct_ptr); -} - - -/* Free memory allocated by a png_create_struct() call */ -void -png_destroy_struct(png_voidp struct_ptr) -{ - if (struct_ptr != NULL) - { -#if defined(__TURBOC__) && !defined(__FLAT__) - farfree(struct_ptr); -#else -# if defined(_MSC_VER) && defined(MAXSEG_64K) - hfree(struct_ptr); -# else - free(struct_ptr); -# endif -#endif - } -} - - -/* Allocate memory. For reasonable files, size should never exceed - 64K. However, zlib may allocate more then 64K if you don't tell - it not to. See zconf.h and png.h for more information. zlib does - need to allocate exactly 64K, so whatever you call here must - have the ability to do that. */ - -png_voidp -PNG_MALLOC(png_structp png_ptr, png_uint_32 size) -{ - png_voidp ret; - - if (png_ptr == NULL || size == 0) - return ((png_voidp)NULL); - -#ifdef PNG_MAX_MALLOC_64K - if (size > (png_uint_32)65536L) - png_error(png_ptr, "Cannot Allocate > 64K"); -#endif - -#if defined(__TURBOC__) && !defined(__FLAT__) - ret = farmalloc(size); -#else -# if defined(_MSC_VER) && defined(MAXSEG_64K) - ret = halloc(size, 1); -# else - ret = malloc((size_t)size); -# endif -#endif - - if (ret == NULL) - { - png_error(png_ptr, "Out of Memory"); - } - - return (ret); -} - -/* Free a pointer allocated by PNG_MALLOC(). In the default - configuration, png_ptr is not used, but is passed in case it - is needed. If ptr is NULL, return without taking any action. */ -void -PNG_FREE(png_structp png_ptr, png_voidp ptr) -{ - if (png_ptr == NULL || ptr == NULL) - return; - -#if defined(__TURBOC__) && !defined(__FLAT__) - farfree(ptr); -#else -# if defined(_MSC_VER) && defined(MAXSEG_64K) - hfree(ptr); -# else - free(ptr); -# endif -#endif -} - -#endif /* Not Borland DOS special memory handler */ - -png_voidp -png_memcpy_check (png_structp png_ptr, png_voidp s1, png_voidp s2, - png_uint_32 length) -{ - png_size_t size; - - size = (png_size_t)length; - if ((png_uint_32)size != length) - png_error(png_ptr,"Overflow in png_memcpy_check."); - - return(png_memcpy (s1, s2, size)); -} - -png_voidp -png_memset_check (png_structp png_ptr, png_voidp s1, int value, - png_uint_32 length) -{ - png_size_t size; - - size = (png_size_t)length; - if ((png_uint_32)size != length) - png_error(png_ptr,"Overflow in png_memset_check."); - - return (png_memset (s1, value, size)); - -} diff --git a/src/png/pngpread.c b/src/png/pngpread.c deleted file mode 100644 index 897140d9dc..0000000000 --- a/src/png/pngpread.c +++ /dev/null @@ -1,1143 +0,0 @@ - -/* pngpread.c - read a png file in push mode - * - * libpng 1.0.1 - * For conditions of distribution and use, see copyright notice in png.h - * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc. - * Copyright (c) 1996, 1997 Andreas Dilger - * Copyright (c) 1998, Glenn Randers-Pehrson - * March 15, 1998 - */ - -#define PNG_INTERNAL -#include "../png/png.h" - -#ifdef PNG_PROGRESSIVE_READ_SUPPORTED - -void -png_process_data(png_structp png_ptr, png_infop info_ptr, - png_bytep buffer, png_size_t buffer_size) -{ - png_push_restore_buffer(png_ptr, buffer, buffer_size); - - while (png_ptr->buffer_size) - { - png_process_some_data(png_ptr, info_ptr); - } -} - -/* What we do with the incoming data depends on what we were previously - * doing before we ran out of data... - */ -void -png_process_some_data(png_structp png_ptr, png_infop info_ptr) -{ - switch (png_ptr->process_mode) - { - case PNG_READ_SIG_MODE: - { - png_push_read_sig(png_ptr, info_ptr); - break; - } - case PNG_READ_CHUNK_MODE: - { - png_push_read_chunk(png_ptr, info_ptr); - break; - } - case PNG_READ_IDAT_MODE: - { - png_push_read_IDAT(png_ptr); - break; - } -#if defined(PNG_READ_tEXt_SUPPORTED) - case PNG_READ_tEXt_MODE: - { - png_push_read_tEXt(png_ptr, info_ptr); - break; - } -#endif -#if defined(PNG_READ_zTXt_SUPPORTED) - case PNG_READ_zTXt_MODE: - { - png_push_read_zTXt(png_ptr, info_ptr); - break; - } -#endif - case PNG_SKIP_MODE: - { - png_push_crc_finish(png_ptr); - break; - } - default: - { - png_ptr->buffer_size = 0; - break; - } - } -} - -/* Read any remaining signature bytes from the stream and compare them with - * the correct PNG signature. It is possible that this routine is called - * with bytes already read from the signature, whether because they have been - * checked by the calling application, or from multiple calls to this routine. - */ -void -png_push_read_sig(png_structp png_ptr, png_infop info_ptr) -{ - png_size_t num_checked = png_ptr->sig_bytes, - num_to_check = 8 - num_checked; - - if (png_ptr->buffer_size < num_to_check) - { - num_to_check = png_ptr->buffer_size; - } - - png_push_fill_buffer(png_ptr, &(info_ptr->signature[num_checked]), - num_to_check); - png_ptr->sig_bytes += num_to_check; - - if (png_sig_cmp(info_ptr->signature, num_checked, num_to_check)) - { - if (num_checked < 4 && - png_sig_cmp(info_ptr->signature, num_checked, num_to_check - 4)) - png_error(png_ptr, "Not a PNG file"); - else - png_error(png_ptr, "PNG file corrupted by ASCII conversion"); - } - else - { - if (png_ptr->sig_bytes >= 8) - { - png_ptr->process_mode = PNG_READ_CHUNK_MODE; - } - } -} - -void -png_push_read_chunk(png_structp png_ptr, png_infop info_ptr) -{ - /* First we make sure we have enough data for the 4 byte chunk name - * and the 4 byte chunk length before proceeding with decoding the - * chunk data. To fully decode each of these chunks, we also make - * sure we have enough data in the buffer for the 4 byte CRC at the - * end of every chunk (except IDAT, which is handled separately). - */ - if (!(png_ptr->flags & PNG_FLAG_HAVE_CHUNK_HEADER)) - { - png_byte chunk_length[4]; - - if (png_ptr->buffer_size < 8) - { - png_push_save_buffer(png_ptr); - return; - } - - png_push_fill_buffer(png_ptr, chunk_length, 4); - png_ptr->push_length = png_get_uint_32(chunk_length); - png_reset_crc(png_ptr); - png_crc_read(png_ptr, png_ptr->chunk_name, 4); - png_ptr->flags |= PNG_FLAG_HAVE_CHUNK_HEADER; - } - - if (!png_memcmp(png_ptr->chunk_name, png_IHDR, 4)) - { - if (png_ptr->push_length + 4 > png_ptr->buffer_size) - { - png_push_save_buffer(png_ptr); - return; - } - - png_handle_IHDR(png_ptr, info_ptr, png_ptr->push_length); - } - else if (!png_memcmp(png_ptr->chunk_name, png_PLTE, 4)) - { - if (png_ptr->push_length + 4 > png_ptr->buffer_size) - { - png_push_save_buffer(png_ptr); - return; - } - - png_handle_PLTE(png_ptr, info_ptr, png_ptr->push_length); - } - else if (!png_memcmp(png_ptr->chunk_name, png_IDAT, 4)) - { - /* If we reach an IDAT chunk, this means we have read all of the - * header chunks, and we can start reading the image (or if this - * is called after the image has been read - we have an error). - */ - if (png_ptr->mode & PNG_HAVE_IDAT) - { - if (png_ptr->push_length == 0) - return; - - if (png_ptr->mode & PNG_AFTER_IDAT) - png_error(png_ptr, "Too many IDAT's found"); - } - - png_ptr->idat_size = png_ptr->push_length; - png_ptr->mode |= PNG_HAVE_IDAT; - png_ptr->process_mode = PNG_READ_IDAT_MODE; - png_push_have_info(png_ptr, info_ptr); - png_ptr->zstream.avail_out = (uInt)png_ptr->irowbytes; - png_ptr->zstream.next_out = png_ptr->row_buf; - return; - } - else if (!png_memcmp(png_ptr->chunk_name, png_IEND, 4)) - { - if (png_ptr->push_length + 4 > png_ptr->buffer_size) - { - png_push_save_buffer(png_ptr); - return; - } - - png_handle_IEND(png_ptr, info_ptr, png_ptr->push_length); - png_ptr->process_mode = PNG_READ_DONE_MODE; - png_push_have_end(png_ptr, info_ptr); - } -#if defined(PNG_READ_gAMA_SUPPORTED) - else if (!png_memcmp(png_ptr->chunk_name, png_gAMA, 4)) - { - if (png_ptr->push_length + 4 > png_ptr->buffer_size) - { - png_push_save_buffer(png_ptr); - return; - } - - png_handle_gAMA(png_ptr, info_ptr, png_ptr->push_length); - } -#endif -#if defined(PNG_READ_sBIT_SUPPORTED) - else if (!png_memcmp(png_ptr->chunk_name, png_sBIT, 4)) - { - if (png_ptr->push_length + 4 > png_ptr->buffer_size) - { - png_push_save_buffer(png_ptr); - return; - } - - png_handle_sBIT(png_ptr, info_ptr, png_ptr->push_length); - } -#endif -#if defined(PNG_READ_cHRM_SUPPORTED) - else if (!png_memcmp(png_ptr->chunk_name, png_cHRM, 4)) - { - if (png_ptr->push_length + 4 > png_ptr->buffer_size) - { - png_push_save_buffer(png_ptr); - return; - } - - png_handle_cHRM(png_ptr, info_ptr, png_ptr->push_length); - } -#endif -#if defined(PNG_READ_sRGB_SUPPORTED) - else if (!png_memcmp(png_ptr->chunk_name, png_sRGB, 4)) - { - if (png_ptr->push_length + 4 > png_ptr->buffer_size) - { - png_push_save_buffer(png_ptr); - return; - } - - png_handle_sRGB(png_ptr, info_ptr, png_ptr->push_length); - } -#endif -#if defined(PNG_READ_tRNS_SUPPORTED) - else if (!png_memcmp(png_ptr->chunk_name, png_tRNS, 4)) - { - if (png_ptr->push_length + 4 > png_ptr->buffer_size) - { - png_push_save_buffer(png_ptr); - return; - } - - png_handle_tRNS(png_ptr, info_ptr, png_ptr->push_length); - } -#endif -#if defined(PNG_READ_bKGD_SUPPORTED) - else if (!png_memcmp(png_ptr->chunk_name, png_bKGD, 4)) - { - if (png_ptr->push_length + 4 > png_ptr->buffer_size) - { - png_push_save_buffer(png_ptr); - return; - } - - png_handle_bKGD(png_ptr, info_ptr, png_ptr->push_length); - } -#endif -#if defined(PNG_READ_hIST_SUPPORTED) - else if (!png_memcmp(png_ptr->chunk_name, png_hIST, 4)) - { - if (png_ptr->push_length + 4 > png_ptr->buffer_size) - { - png_push_save_buffer(png_ptr); - return; - } - - png_handle_hIST(png_ptr, info_ptr, png_ptr->push_length); - } -#endif -#if defined(PNG_READ_pHYs_SUPPORTED) - else if (!png_memcmp(png_ptr->chunk_name, png_pHYs, 4)) - { - if (png_ptr->push_length + 4 > png_ptr->buffer_size) - { - png_push_save_buffer(png_ptr); - return; - } - - png_handle_pHYs(png_ptr, info_ptr, png_ptr->push_length); - } -#endif -#if defined(PNG_READ_oFFs_SUPPORTED) - else if (!png_memcmp(png_ptr->chunk_name, png_oFFs, 4)) - { - if (png_ptr->push_length + 4 > png_ptr->buffer_size) - { - png_push_save_buffer(png_ptr); - return; - } - - png_handle_oFFs(png_ptr, info_ptr, png_ptr->push_length); - } -#endif -#if defined(PNG_READ_pCAL_SUPPORTED) - else if (!png_memcmp(png_ptr->chunk_name, png_pCAL, 4)) - { - if (png_ptr->push_length + 4 > png_ptr->buffer_size) - { - png_push_save_buffer(png_ptr); - return; - } - - png_handle_pCAL(png_ptr, info_ptr, png_ptr->push_length); - } -#endif -#if defined(PNG_READ_tIME_SUPPORTED) - else if (!png_memcmp(png_ptr->chunk_name, png_tIME, 4)) - { - if (png_ptr->push_length + 4 > png_ptr->buffer_size) - { - png_push_save_buffer(png_ptr); - return; - } - - png_handle_tIME(png_ptr, info_ptr, png_ptr->push_length); - } -#endif -#if defined(PNG_READ_tEXt_SUPPORTED) - else if (!png_memcmp(png_ptr->chunk_name, png_tEXt, 4)) - { - png_push_handle_tEXt(png_ptr, info_ptr, png_ptr->push_length); - } -#endif -#if defined(PNG_READ_zTXt_SUPPORTED) - else if (!png_memcmp(png_ptr->chunk_name, png_zTXt, 4)) - { - png_push_handle_zTXt(png_ptr, info_ptr, png_ptr->push_length); - } -#endif - else - { - png_push_handle_unknown(png_ptr, info_ptr, png_ptr->push_length); - } - - png_ptr->flags &= ~PNG_FLAG_HAVE_CHUNK_HEADER; -} - -void -png_push_crc_skip(png_structp png_ptr, png_uint_32 skip) -{ - png_ptr->process_mode = PNG_SKIP_MODE; - png_ptr->skip_length = skip; -} - -void -png_push_crc_finish(png_structp png_ptr) -{ - if (png_ptr->skip_length && png_ptr->save_buffer_size) - { - png_size_t save_size; - - if (png_ptr->skip_length < (png_uint_32)png_ptr->save_buffer_size) - save_size = (png_size_t)png_ptr->skip_length; - else - save_size = png_ptr->save_buffer_size; - - png_calculate_crc(png_ptr, png_ptr->save_buffer_ptr, save_size); - - png_ptr->skip_length -= save_size; - png_ptr->buffer_size -= save_size; - png_ptr->save_buffer_size -= save_size; - png_ptr->save_buffer_ptr += save_size; - } - if (png_ptr->skip_length && png_ptr->current_buffer_size) - { - png_size_t save_size; - - if (png_ptr->skip_length < (png_uint_32)png_ptr->current_buffer_size) - save_size = (png_size_t)png_ptr->skip_length; - else - save_size = png_ptr->current_buffer_size; - - png_calculate_crc(png_ptr, png_ptr->current_buffer_ptr, save_size); - - png_ptr->skip_length -= save_size; - png_ptr->buffer_size -= save_size; - png_ptr->current_buffer_size -= save_size; - png_ptr->current_buffer_ptr += save_size; - } - if (!png_ptr->skip_length) - { - if (png_ptr->buffer_size < 4) - { - png_push_save_buffer(png_ptr); - return; - } - - png_crc_finish(png_ptr, 0); - png_ptr->process_mode = PNG_READ_CHUNK_MODE; - } -} - -void -png_push_fill_buffer(png_structp png_ptr, png_bytep buffer, png_size_t length) -{ - png_bytep ptr; - - ptr = buffer; - if (png_ptr->save_buffer_size) - { - png_size_t save_size; - - if (length < png_ptr->save_buffer_size) - save_size = length; - else - save_size = png_ptr->save_buffer_size; - - png_memcpy(ptr, png_ptr->save_buffer_ptr, save_size); - length -= save_size; - ptr += save_size; - png_ptr->buffer_size -= save_size; - png_ptr->save_buffer_size -= save_size; - png_ptr->save_buffer_ptr += save_size; - } - if (length && png_ptr->current_buffer_size) - { - png_size_t save_size; - - if (length < png_ptr->current_buffer_size) - save_size = length; - else - save_size = png_ptr->current_buffer_size; - - png_memcpy(ptr, png_ptr->current_buffer_ptr, save_size); - png_ptr->buffer_size -= save_size; - png_ptr->current_buffer_size -= save_size; - png_ptr->current_buffer_ptr += save_size; - } -} - -void -png_push_save_buffer(png_structp png_ptr) -{ - if (png_ptr->save_buffer_size) - { - if (png_ptr->save_buffer_ptr != png_ptr->save_buffer) - { - png_size_t i; - png_bytep sp; - png_bytep dp; - - for (i = 0, sp = png_ptr->save_buffer_ptr, dp = png_ptr->save_buffer; - i < png_ptr->save_buffer_size; - i++, sp++, dp++) - { - *dp = *sp; - } - } - } - if (png_ptr->save_buffer_size + png_ptr->current_buffer_size > - png_ptr->save_buffer_max) - { - png_size_t new_max; - png_bytep old_buffer; - - new_max = png_ptr->save_buffer_size + png_ptr->current_buffer_size + 256; - old_buffer = png_ptr->save_buffer; - png_ptr->save_buffer = (png_bytep)png_malloc(png_ptr, - (png_uint_32)new_max); - png_memcpy(png_ptr->save_buffer, old_buffer, png_ptr->save_buffer_size); - png_free(png_ptr, old_buffer); - png_ptr->save_buffer_max = new_max; - } - if (png_ptr->current_buffer_size) - { - png_memcpy(png_ptr->save_buffer + png_ptr->save_buffer_size, - png_ptr->current_buffer_ptr, png_ptr->current_buffer_size); - png_ptr->save_buffer_size += png_ptr->current_buffer_size; - png_ptr->current_buffer_size = 0; - } - png_ptr->save_buffer_ptr = png_ptr->save_buffer; - png_ptr->buffer_size = 0; -} - -void -png_push_restore_buffer(png_structp png_ptr, png_bytep buffer, - png_size_t buffer_length) -{ - png_ptr->current_buffer = buffer; - png_ptr->current_buffer_size = buffer_length; - png_ptr->buffer_size = buffer_length + png_ptr->save_buffer_size; - png_ptr->current_buffer_ptr = png_ptr->current_buffer; -} - -void -png_push_read_IDAT(png_structp png_ptr) -{ - if (!(png_ptr->flags & PNG_FLAG_HAVE_CHUNK_HEADER)) - { - png_byte chunk_length[4]; - - if (png_ptr->buffer_size < 8) - { - png_push_save_buffer(png_ptr); - return; - } - - png_push_fill_buffer(png_ptr, chunk_length, 4); - png_ptr->push_length = png_get_uint_32(chunk_length); - - png_reset_crc(png_ptr); - png_crc_read(png_ptr, png_ptr->chunk_name, 4); - png_ptr->flags |= PNG_FLAG_HAVE_CHUNK_HEADER; - - if (png_memcmp(png_ptr->chunk_name, png_IDAT, 4)) - { - png_ptr->process_mode = PNG_READ_CHUNK_MODE; - if (!(png_ptr->flags & PNG_FLAG_ZLIB_FINISHED)) - png_error(png_ptr, "Not enough compressed data"); - return; - } - - png_ptr->idat_size = png_ptr->push_length; - } - if (png_ptr->idat_size && png_ptr->save_buffer_size) - { - png_size_t save_size; - - if (png_ptr->idat_size < (png_uint_32)png_ptr->save_buffer_size) - { - save_size = (png_size_t)png_ptr->idat_size; - /* check for overflow */ - if((png_uint_32)save_size != png_ptr->idat_size) - png_error(png_ptr, "save_size overflowed in pngpread"); - } - else - save_size = png_ptr->save_buffer_size; - - png_calculate_crc(png_ptr, png_ptr->save_buffer_ptr, save_size); - png_process_IDAT_data(png_ptr, png_ptr->save_buffer_ptr, save_size); - - png_ptr->idat_size -= save_size; - png_ptr->buffer_size -= save_size; - png_ptr->save_buffer_size -= save_size; - png_ptr->save_buffer_ptr += save_size; - } - if (png_ptr->idat_size && png_ptr->current_buffer_size) - { - png_size_t save_size; - - if (png_ptr->idat_size < (png_uint_32)png_ptr->current_buffer_size) - { - save_size = (png_size_t)png_ptr->idat_size; - /* check for overflow */ - if((png_uint_32)save_size != png_ptr->idat_size) - png_error(png_ptr, "save_size overflowed in pngpread"); - } - else - save_size = png_ptr->current_buffer_size; - - png_calculate_crc(png_ptr, png_ptr->current_buffer_ptr, save_size); - png_process_IDAT_data(png_ptr, png_ptr->current_buffer_ptr, save_size); - - png_ptr->idat_size -= save_size; - png_ptr->buffer_size -= save_size; - png_ptr->current_buffer_size -= save_size; - png_ptr->current_buffer_ptr += save_size; - } - if (!png_ptr->idat_size) - { - if (png_ptr->buffer_size < 4) - { - png_push_save_buffer(png_ptr); - return; - } - - png_crc_finish(png_ptr, 0); - png_ptr->flags &= ~PNG_FLAG_HAVE_CHUNK_HEADER; - } -} - -void -png_process_IDAT_data(png_structp png_ptr, png_bytep buffer, - png_size_t buffer_length) -{ - int ret; - - if ((png_ptr->flags & PNG_FLAG_ZLIB_FINISHED) && buffer_length) - png_error(png_ptr, "Extra compression data"); - - png_ptr->zstream.next_in = buffer; - png_ptr->zstream.avail_in = (uInt)buffer_length; - for(;;) - { - ret = inflate(&png_ptr->zstream, Z_PARTIAL_FLUSH); - if (ret == Z_STREAM_END) - { - if (png_ptr->zstream.avail_in) - png_error(png_ptr, "Extra compressed data"); - if (!(png_ptr->zstream.avail_out)) - { - png_push_process_row(png_ptr); - } - - png_ptr->mode |= PNG_AFTER_IDAT; - png_ptr->flags |= PNG_FLAG_ZLIB_FINISHED; - break; - } - else if (ret == Z_BUF_ERROR) - break; - else if (ret != Z_OK) - png_error(png_ptr, "Decompression Error"); - if (!(png_ptr->zstream.avail_out)) - { - png_push_process_row(png_ptr); - png_ptr->zstream.avail_out = (uInt)png_ptr->irowbytes; - png_ptr->zstream.next_out = png_ptr->row_buf; - } - else - break; - } -} - -void -png_push_process_row(png_structp png_ptr) -{ - png_ptr->row_info.color_type = png_ptr->color_type; - png_ptr->row_info.width = png_ptr->iwidth; - png_ptr->row_info.channels = png_ptr->channels; - png_ptr->row_info.bit_depth = png_ptr->bit_depth; - png_ptr->row_info.pixel_depth = png_ptr->pixel_depth; - - png_ptr->row_info.rowbytes = ((png_ptr->row_info.width * - (png_uint_32)png_ptr->row_info.pixel_depth + 7) >> 3); - - png_read_filter_row(png_ptr, &(png_ptr->row_info), - png_ptr->row_buf + 1, png_ptr->prev_row + 1, - (int)(png_ptr->row_buf[0])); - - png_memcpy_check(png_ptr, png_ptr->prev_row, png_ptr->row_buf, - png_ptr->rowbytes + 1); - - if (png_ptr->transformations) - png_do_read_transformations(png_ptr); - -#if defined(PNG_READ_INTERLACING_SUPPORTED) - /* blow up interlaced rows to full size */ - if (png_ptr->interlaced && (png_ptr->transformations & PNG_INTERLACE)) - { - if (png_ptr->pass < 6) - png_do_read_interlace(&(png_ptr->row_info), - png_ptr->row_buf + 1, png_ptr->pass, png_ptr->transformations); - - switch (png_ptr->pass) - { - case 0: - { - int i; - for (i = 0; i < 8 && png_ptr->pass == 0; i++) - { - png_push_have_row(png_ptr, png_ptr->row_buf + 1); - png_read_push_finish_row(png_ptr); - } - break; - } - case 1: - { - int i; - for (i = 0; i < 8 && png_ptr->pass == 1; i++) - { - png_push_have_row(png_ptr, png_ptr->row_buf + 1); - png_read_push_finish_row(png_ptr); - } - if (png_ptr->pass == 2) - { - for (i = 0; i < 4 && png_ptr->pass == 2; i++) - { - png_push_have_row(png_ptr, NULL); - png_read_push_finish_row(png_ptr); - } - } - break; - } - case 2: - { - int i; - for (i = 0; i < 4 && png_ptr->pass == 2; i++) - { - png_push_have_row(png_ptr, png_ptr->row_buf + 1); - png_read_push_finish_row(png_ptr); - } - for (i = 0; i < 4 && png_ptr->pass == 2; i++) - { - png_push_have_row(png_ptr, NULL); - png_read_push_finish_row(png_ptr); - } - break; - } - case 3: - { - int i; - for (i = 0; i < 4 && png_ptr->pass == 3; i++) - { - png_push_have_row(png_ptr, png_ptr->row_buf + 1); - png_read_push_finish_row(png_ptr); - } - if (png_ptr->pass == 4) - { - for (i = 0; i < 2 && png_ptr->pass == 4; i++) - { - png_push_have_row(png_ptr, NULL); - png_read_push_finish_row(png_ptr); - } - } - break; - } - case 4: - { - int i; - for (i = 0; i < 2 && png_ptr->pass == 4; i++) - { - png_push_have_row(png_ptr, png_ptr->row_buf + 1); - png_read_push_finish_row(png_ptr); - } - for (i = 0; i < 2 && png_ptr->pass == 4; i++) - { - png_push_have_row(png_ptr, NULL); - png_read_push_finish_row(png_ptr); - } - break; - } - case 5: - { - int i; - for (i = 0; i < 2 && png_ptr->pass == 5; i++) - { - png_push_have_row(png_ptr, png_ptr->row_buf + 1); - png_read_push_finish_row(png_ptr); - } - if (png_ptr->pass == 6) - { - png_push_have_row(png_ptr, NULL); - png_read_push_finish_row(png_ptr); - } - break; - } - case 6: - { - png_push_have_row(png_ptr, png_ptr->row_buf + 1); - png_read_push_finish_row(png_ptr); - if (png_ptr->pass != 6) - break; - png_push_have_row(png_ptr, NULL); - png_read_push_finish_row(png_ptr); - } - } - } - else -#endif - { - png_push_have_row(png_ptr, png_ptr->row_buf + 1); - png_read_push_finish_row(png_ptr); - } -} - -void -png_read_push_finish_row(png_structp png_ptr) -{ - png_ptr->row_number++; - if (png_ptr->row_number < png_ptr->num_rows) - return; - - if (png_ptr->interlaced) - { - png_ptr->row_number = 0; - png_memset_check(png_ptr, png_ptr->prev_row, 0, - png_ptr->rowbytes + 1); - do - { - png_ptr->pass++; - if (png_ptr->pass >= 7) - break; - png_ptr->iwidth = (png_ptr->width + - png_pass_inc[png_ptr->pass] - 1 - - png_pass_start[png_ptr->pass]) / - png_pass_inc[png_ptr->pass]; - - png_ptr->irowbytes = ((png_ptr->iwidth * - png_ptr->pixel_depth + 7) >> 3) + 1; - - if (!(png_ptr->transformations & PNG_INTERLACE)) - { - png_ptr->num_rows = (png_ptr->height + - png_pass_yinc[png_ptr->pass] - 1 - - png_pass_ystart[png_ptr->pass]) / - png_pass_yinc[png_ptr->pass]; - if (!(png_ptr->num_rows)) - continue; - } - if (png_ptr->transformations & PNG_INTERLACE) - break; - } while (png_ptr->iwidth == 0); - } -} - -#if defined(PNG_READ_tEXt_SUPPORTED) -void -png_push_handle_tEXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) -{ - if (png_ptr->mode == PNG_BEFORE_IHDR || png_ptr->mode & PNG_HAVE_IEND) - { - png_error(png_ptr, "Out of place tEXt"); - /* to quiet some compiler warnings */ - if(info_ptr == NULL) return; - } - -#ifdef PNG_MAX_MALLOC_64K - png_ptr->skip_length = 0; /* This may not be necessary */ - - if (length > (png_uint_32)65535L) /* Can't hold the entire string in memory */ - { - png_warning(png_ptr, "tEXt chunk too large to fit in memory"); - png_ptr->skip_length = length - (png_uint_32)65535L; - length = (png_uint_32)65535L; - } -#endif - - png_ptr->current_text = (png_charp)png_malloc(png_ptr, - (png_uint_32)(length+1)); - png_ptr->current_text[length] = '\0'; - png_ptr->current_text_ptr = png_ptr->current_text; - png_ptr->current_text_size = (png_size_t)length; - png_ptr->current_text_left = (png_size_t)length; - png_ptr->process_mode = PNG_READ_tEXt_MODE; -} - -void -png_push_read_tEXt(png_structp png_ptr, png_infop info_ptr) -{ - if (png_ptr->buffer_size && png_ptr->current_text_left) - { - png_size_t text_size; - - if (png_ptr->buffer_size < png_ptr->current_text_left) - text_size = png_ptr->buffer_size; - else - text_size = png_ptr->current_text_left; - png_crc_read(png_ptr, (png_bytep)png_ptr->current_text_ptr, text_size); - png_ptr->current_text_left -= text_size; - png_ptr->current_text_ptr += text_size; - } - if (!(png_ptr->current_text_left)) - { - png_textp text_ptr; - png_charp text; - png_charp key; - - if (png_ptr->buffer_size < 4) - { - png_push_save_buffer(png_ptr); - return; - } - - png_push_crc_finish(png_ptr); - -#if defined(PNG_MAX_MALLOC_64K) - if (png_ptr->skip_length) - return; -#endif - - key = png_ptr->current_text; - png_ptr->current_text = 0; - - for (text = key; *text; text++) - /* empty loop */ ; - - if (text != key + png_ptr->current_text_size) - text++; - - text_ptr = (png_textp)png_malloc(png_ptr, (png_uint_32)sizeof(png_text)); - text_ptr->compression = PNG_TEXT_COMPRESSION_NONE; - text_ptr->key = key; - text_ptr->text = text; - - png_set_text(png_ptr, info_ptr, text_ptr, 1); - - png_free(png_ptr, text_ptr); - } -} -#endif - -#if defined(PNG_READ_zTXt_SUPPORTED) -void -png_push_handle_zTXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) -{ - if (png_ptr->mode == PNG_BEFORE_IHDR || png_ptr->mode & PNG_HAVE_IEND) - { - png_error(png_ptr, "Out of place zTXt"); - /* to quiet some compiler warnings */ - if(info_ptr == NULL) return; - } - -#ifdef PNG_MAX_MALLOC_64K - /* We can't handle zTXt chunks > 64K, since we don't have enough space - * to be able to store the uncompressed data. Actually, the threshold - * is probably around 32K, but it isn't as definite as 64K is. - */ - if (length > (png_uint_32)65535L) - { - png_warning(png_ptr, "zTXt chunk too large to fit in memory"); - png_push_crc_skip(png_ptr, length); - return; - } -#endif - - png_ptr->current_text = (png_charp)png_malloc(png_ptr, - (png_uint_32)(length+1)); - png_ptr->current_text[length] = '\0'; - png_ptr->current_text_ptr = png_ptr->current_text; - png_ptr->current_text_size = (png_size_t)length; - png_ptr->current_text_left = (png_size_t)length; - png_ptr->process_mode = PNG_READ_zTXt_MODE; -} - -void -png_push_read_zTXt(png_structp png_ptr, png_infop info_ptr) -{ - if (png_ptr->buffer_size && png_ptr->current_text_left) - { - png_size_t text_size; - - if (png_ptr->buffer_size < (png_uint_32)png_ptr->current_text_left) - text_size = png_ptr->buffer_size; - else - text_size = png_ptr->current_text_left; - png_crc_read(png_ptr, (png_bytep)png_ptr->current_text_ptr, text_size); - png_ptr->current_text_left -= text_size; - png_ptr->current_text_ptr += text_size; - } - if (!(png_ptr->current_text_left)) - { - png_textp text_ptr; - png_charp text; - png_charp key; - int ret; - png_size_t text_size, key_size; - - if (png_ptr->buffer_size < 4) - { - png_push_save_buffer(png_ptr); - return; - } - - png_push_crc_finish(png_ptr); - - key = png_ptr->current_text; - png_ptr->current_text = 0; - - for (text = key; *text; text++) - /* empty loop */ ; - - /* zTXt can't have zero text */ - if (text == key + png_ptr->current_text_size) - { - png_free(png_ptr, key); - return; - } - - text++; - - if (*text != PNG_TEXT_COMPRESSION_zTXt) /* check compression byte */ - { - png_free(png_ptr, key); - return; - } - - text++; - - png_ptr->zstream.next_in = (png_bytep )text; - png_ptr->zstream.avail_in = (uInt)(png_ptr->current_text_size - - (text - key)); - png_ptr->zstream.next_out = png_ptr->zbuf; - png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size; - - key_size = text - key; - text_size = 0; - text = NULL; - ret = Z_STREAM_END; - - while (png_ptr->zstream.avail_in) - { - ret = inflate(&png_ptr->zstream, Z_PARTIAL_FLUSH); - if (ret != Z_OK && ret != Z_STREAM_END) - { - inflateReset(&png_ptr->zstream); - png_ptr->zstream.avail_in = 0; - png_free(png_ptr, key); - png_free(png_ptr, text); - return; - } - if (!(png_ptr->zstream.avail_out) || ret == Z_STREAM_END) - { - if (text == NULL) - { - text = (png_charp)png_malloc(png_ptr, - (png_uint_32)(png_ptr->zbuf_size - png_ptr->zstream.avail_out + - key_size + 1)); - png_memcpy(text + key_size, png_ptr->zbuf, - png_ptr->zbuf_size - png_ptr->zstream.avail_out); - png_memcpy(text, key, key_size); - text_size = key_size + png_ptr->zbuf_size - - png_ptr->zstream.avail_out; - *(text + text_size) = '\0'; - } - else - { - png_charp tmp; - - tmp = text; - text = (png_charp)png_malloc(png_ptr, text_size + - (png_uint_32)(png_ptr->zbuf_size - png_ptr->zstream.avail_out - + 1)); - png_memcpy(text, tmp, text_size); - png_free(png_ptr, tmp); - png_memcpy(text + text_size, png_ptr->zbuf, - png_ptr->zbuf_size - png_ptr->zstream.avail_out); - text_size += png_ptr->zbuf_size - png_ptr->zstream.avail_out; - *(text + text_size) = '\0'; - } - if (ret != Z_STREAM_END) - { - png_ptr->zstream.next_out = png_ptr->zbuf; - png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size; - } - } - else - { - break; - } - - if (ret == Z_STREAM_END) - break; - } - - inflateReset(&png_ptr->zstream); - png_ptr->zstream.avail_in = 0; - - if (ret != Z_STREAM_END) - { - png_free(png_ptr, key); - png_free(png_ptr, text); - return; - } - - png_free(png_ptr, key); - key = text; - text += key_size; - - text_ptr = (png_textp)png_malloc(png_ptr, (png_uint_32)sizeof(png_text)); - text_ptr->compression = PNG_TEXT_COMPRESSION_zTXt; - text_ptr->key = key; - text_ptr->text = text; - - png_set_text(png_ptr, info_ptr, text_ptr, 1); - - png_free(png_ptr, text_ptr); - } -} -#endif - -/* This function is called when we haven't found a handler for this - * chunk. In the future we will have code here which can handle - * user-defined callback functions for unknown chunks before they are - * ignored or cause an error. If there isn't a problem with the - * chunk itself (ie a bad chunk name or a critical chunk), the chunk - * is (currently) silently ignored. - */ -void -png_push_handle_unknown(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) -{ - png_check_chunk_name(png_ptr, png_ptr->chunk_name); - - if (!(png_ptr->chunk_name[0] & 0x20)) - { - png_chunk_error(png_ptr, "unknown critical chunk"); - /* to quiet some compiler warnings */ - if(info_ptr == NULL) return; - } - - png_push_crc_skip(png_ptr, length); -} - -void -png_push_have_info(png_structp png_ptr, png_infop info_ptr) -{ - if (png_ptr->info_fn != NULL) - (*(png_ptr->info_fn))(png_ptr, info_ptr); -} - -void -png_push_have_end(png_structp png_ptr, png_infop info_ptr) -{ - if (png_ptr->end_fn != NULL) - (*(png_ptr->end_fn))(png_ptr, info_ptr); -} - -void -png_push_have_row(png_structp png_ptr, png_bytep row) -{ - if (png_ptr->row_fn != NULL) - (*(png_ptr->row_fn))(png_ptr, row, png_ptr->row_number, - (int)png_ptr->pass); -} - -void -png_progressive_combine_row (png_structp png_ptr, - png_bytep old_row, png_bytep new_row) -{ - if (new_row != NULL) - png_combine_row(png_ptr, old_row, png_pass_dsp_mask[png_ptr->pass]); -} - -void -png_set_progressive_read_fn(png_structp png_ptr, png_voidp progressive_ptr, - png_progressive_info_ptr info_fn, png_progressive_row_ptr row_fn, - png_progressive_end_ptr end_fn) -{ - png_ptr->info_fn = info_fn; - png_ptr->row_fn = row_fn; - png_ptr->end_fn = end_fn; - - png_set_read_fn(png_ptr, progressive_ptr, png_push_fill_buffer); -} - -png_voidp -png_get_progressive_ptr(png_structp png_ptr) -{ - return png_ptr->io_ptr; -} - -#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */ - diff --git a/src/png/pngread.c b/src/png/pngread.c deleted file mode 100644 index 714f5f1429..0000000000 --- a/src/png/pngread.c +++ /dev/null @@ -1,787 +0,0 @@ - -/* pngread.c - read a PNG file - * - * libpng 1.0.1 - * For conditions of distribution and use, see copyright notice in png.h - * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc. - * Copyright (c) 1996, 1997 Andreas Dilger - * Copyright (c) 1998, Glenn Randers-Pehrson - * March 15, 1998 - * - * This file contains routines that an application calls directly to - * read a PNG file or stream. - */ - -#define PNG_INTERNAL -#include "../png/png.h" - -/* Create a PNG structure for reading, and allocate any memory needed. */ -png_structp -png_create_read_struct(png_const_charp user_png_ver, voidp error_ptr, - png_error_ptr error_fn, png_error_ptr warn_fn) -{ - png_structp png_ptr; -#ifdef USE_FAR_KEYWORD - jmp_buf jmpbuf; -#endif - png_debug(1, "in png_create_read_struct\n"); - if ((png_ptr = (png_structp)png_create_struct(PNG_STRUCT_PNG)) == NULL) - { - return (png_structp)NULL; - } -#ifdef USE_FAR_KEYWORD - if (setjmp(jmpbuf)) -#else - if (setjmp(png_ptr->jmpbuf)) -#endif - { - png_free(png_ptr, png_ptr->zbuf); - png_destroy_struct(png_ptr); - return (png_structp)NULL; - } -#ifdef USE_FAR_KEYWORD - png_memcpy(png_ptr->jmpbuf,jmpbuf,sizeof(jmp_buf)); -#endif - png_set_error_fn(png_ptr, error_ptr, error_fn, warn_fn); - - /* Libpng 0.90 and later are binary incompatible with libpng 0.89, so - * we must recompile any applications that use any older library version. - * For versions after libpng 1.0, we will be compatible, so we need - * only check the first digit. - */ - if (user_png_ver == NULL || user_png_ver[0] != png_libpng_ver[0] || - (user_png_ver[0] == '0' && user_png_ver[2] < '9')) - { - png_error(png_ptr, - "Incompatible libpng version in application and library"); - } - - /* initialize zbuf - compression buffer */ - png_ptr->zbuf_size = PNG_ZBUF_SIZE; - png_ptr->zbuf = (png_bytep)png_malloc(png_ptr, - (png_uint_32)png_ptr->zbuf_size); - png_ptr->zstream.zalloc = png_zalloc; - png_ptr->zstream.zfree = png_zfree; - png_ptr->zstream.opaque = (voidpf)png_ptr; - - switch (inflateInit(&png_ptr->zstream)) - { - case Z_OK: /* Do nothing */ break; - case Z_MEM_ERROR: - case Z_STREAM_ERROR: png_error(png_ptr, "zlib memory error"); break; - case Z_VERSION_ERROR: png_error(png_ptr, "zlib version error"); break; - default: png_error(png_ptr, "Unknown zlib error"); - } - - png_ptr->zstream.next_out = png_ptr->zbuf; - png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size; - - png_set_read_fn(png_ptr, NULL, NULL); - - return (png_ptr); -} - -/* Initialize PNG structure for reading, and allocate any memory needed. - This interface is depreciated in favour of the png_create_read_struct(), - and it will eventually disappear. */ -void -png_read_init(png_structp png_ptr) -{ - jmp_buf tmp_jmp; /* to save current jump buffer */ - - png_debug(1, "in png_read_init\n"); - /* save jump buffer and error functions */ - png_memcpy(tmp_jmp, png_ptr->jmpbuf, sizeof (jmp_buf)); - - /* reset all variables to 0 */ - png_memset(png_ptr, 0, sizeof (png_struct)); - - /* restore jump buffer */ - png_memcpy(png_ptr->jmpbuf, tmp_jmp, sizeof (jmp_buf)); - - /* initialize zbuf - compression buffer */ - png_ptr->zbuf_size = PNG_ZBUF_SIZE; - png_ptr->zbuf = (png_bytep)png_malloc(png_ptr, - (png_uint_32)png_ptr->zbuf_size); - png_ptr->zstream.zalloc = png_zalloc; - png_ptr->zstream.zfree = png_zfree; - png_ptr->zstream.opaque = (voidpf)png_ptr; - - switch (inflateInit(&png_ptr->zstream)) - { - case Z_OK: /* Do nothing */ break; - case Z_MEM_ERROR: - case Z_STREAM_ERROR: png_error(png_ptr, "zlib memory"); break; - case Z_VERSION_ERROR: png_error(png_ptr, "zlib version"); break; - default: png_error(png_ptr, "Unknown zlib error"); - } - - png_ptr->zstream.next_out = png_ptr->zbuf; - png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size; - - png_set_read_fn(png_ptr, NULL, NULL); -} - -/* Read the information before the actual image data. This has been - * changed in v0.90 to allow reading a file that already has the magic - * bytes read from the stream. You can tell libpng how many bytes have - * been read from the beginning of the stream (up to the maxumum of 8) - * via png_set_sig_bytes(), and we will only check the remaining bytes - * here. The application can then have access to the signature bytes we - * read if it is determined that this isn't a valid PNG file. - */ -void -png_read_info(png_structp png_ptr, png_infop info_ptr) -{ - png_debug(1, "in png_read_info\n"); - /* save jump buffer and error functions */ - /* If we haven't checked all of the PNG signature bytes, do so now. */ - if (png_ptr->sig_bytes < 8) - { - png_size_t num_checked = png_ptr->sig_bytes, - num_to_check = 8 - num_checked; - - png_read_data(png_ptr, &(info_ptr->signature[num_checked]), num_to_check); - png_ptr->sig_bytes = 8; - - if (png_sig_cmp(info_ptr->signature, num_checked, num_to_check)) - { - if (num_checked < 4 && - png_sig_cmp(info_ptr->signature, num_checked, num_to_check - 4)) - png_error(png_ptr, "Not a PNG file"); - else - png_error(png_ptr, "PNG file corrupted by ASCII conversion"); - } - } - - for(;;) - { - png_byte chunk_length[4]; - png_uint_32 length; - - png_read_data(png_ptr, chunk_length, 4); - length = png_get_uint_32(chunk_length); - - png_reset_crc(png_ptr); - png_crc_read(png_ptr, png_ptr->chunk_name, 4); - - png_debug1(0, "Reading %s chunk.\n", png_ptr->chunk_name); - - /* This should be a binary subdivision search or a hash for - * matching the chunk name rather than a linear search. - */ - if (!png_memcmp(png_ptr->chunk_name, png_IHDR, 4)) - png_handle_IHDR(png_ptr, info_ptr, length); - else if (!png_memcmp(png_ptr->chunk_name, png_PLTE, 4)) - png_handle_PLTE(png_ptr, info_ptr, length); - else if (!png_memcmp(png_ptr->chunk_name, png_IEND, 4)) - png_handle_IEND(png_ptr, info_ptr, length); - else if (!png_memcmp(png_ptr->chunk_name, png_IDAT, 4)) - { - if (!(png_ptr->mode & PNG_HAVE_IHDR)) - png_error(png_ptr, "Missing IHDR before IDAT"); - else if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE && - !(png_ptr->mode & PNG_HAVE_PLTE)) - png_error(png_ptr, "Missing PLTE before IDAT"); - - png_ptr->idat_size = length; - png_ptr->mode |= PNG_HAVE_IDAT; - break; - } -#if defined(PNG_READ_bKGD_SUPPORTED) - else if (!png_memcmp(png_ptr->chunk_name, png_bKGD, 4)) - png_handle_bKGD(png_ptr, info_ptr, length); -#endif -#if defined(PNG_READ_cHRM_SUPPORTED) - else if (!png_memcmp(png_ptr->chunk_name, png_cHRM, 4)) - png_handle_cHRM(png_ptr, info_ptr, length); -#endif -#if defined(PNG_READ_gAMA_SUPPORTED) - else if (!png_memcmp(png_ptr->chunk_name, png_gAMA, 4)) - png_handle_gAMA(png_ptr, info_ptr, length); -#endif -#if defined(PNG_READ_hIST_SUPPORTED) - else if (!png_memcmp(png_ptr->chunk_name, png_hIST, 4)) - png_handle_hIST(png_ptr, info_ptr, length); -#endif -#if defined(PNG_READ_oFFs_SUPPORTED) - else if (!png_memcmp(png_ptr->chunk_name, png_oFFs, 4)) - png_handle_oFFs(png_ptr, info_ptr, length); -#endif -#if defined(PNG_READ_pCAL_SUPPORTED) - else if (!png_memcmp(png_ptr->chunk_name, png_pCAL, 4)) - png_handle_pCAL(png_ptr, info_ptr, length); -#endif -#if defined(PNG_READ_pHYs_SUPPORTED) - else if (!png_memcmp(png_ptr->chunk_name, png_pHYs, 4)) - png_handle_pHYs(png_ptr, info_ptr, length); -#endif -#if defined(PNG_READ_sBIT_SUPPORTED) - else if (!png_memcmp(png_ptr->chunk_name, png_sBIT, 4)) - png_handle_sBIT(png_ptr, info_ptr, length); -#endif -#if defined(PNG_READ_sRGB_SUPPORTED) - else if (!png_memcmp(png_ptr->chunk_name, png_sRGB, 4)) - png_handle_sRGB(png_ptr, info_ptr, length); -#endif -#if defined(PNG_READ_tEXt_SUPPORTED) - else if (!png_memcmp(png_ptr->chunk_name, png_tEXt, 4)) - png_handle_tEXt(png_ptr, info_ptr, length); -#endif -#if defined(PNG_READ_tIME_SUPPORTED) - else if (!png_memcmp(png_ptr->chunk_name, png_tIME, 4)) - png_handle_tIME(png_ptr, info_ptr, length); -#endif -#if defined(PNG_READ_tRNS_SUPPORTED) - else if (!png_memcmp(png_ptr->chunk_name, png_tRNS, 4)) - png_handle_tRNS(png_ptr, info_ptr, length); -#endif -#if defined(PNG_READ_zTXt_SUPPORTED) - else if (!png_memcmp(png_ptr->chunk_name, png_zTXt, 4)) - png_handle_zTXt(png_ptr, info_ptr, length); -#endif - else - png_handle_unknown(png_ptr, info_ptr, length); - } -} - -/* optional call to update the users info_ptr structure */ -void -png_read_update_info(png_structp png_ptr, png_infop info_ptr) -{ - png_debug(1, "in png_read_update_info\n"); - /* save jump buffer and error functions */ - if (!(png_ptr->flags & PNG_FLAG_ROW_INIT)) - png_read_start_row(png_ptr); - png_read_transform_info(png_ptr, info_ptr); -} - -/* Initialize palette, background, etc, after transformations - * are set, but before any reading takes place. This allows - * the user to obtail a gamma corrected palette, for example. - * If the user doesn't call this, we will do it ourselves. - */ -void -png_start_read_image(png_structp png_ptr) -{ - png_debug(1, "in png_start_read_image\n"); - /* save jump buffer and error functions */ - if (!(png_ptr->flags & PNG_FLAG_ROW_INIT)) - png_read_start_row(png_ptr); -} - -void -png_read_row(png_structp png_ptr, png_bytep row, png_bytep dsp_row) -{ - int ret; - png_debug2(1, "in png_read_row (row %d, pass %d)\n", - png_ptr->row_number, png_ptr->pass); - /* save jump buffer and error functions */ - if (!(png_ptr->flags & PNG_FLAG_ROW_INIT)) - png_read_start_row(png_ptr); - -#if defined(PNG_READ_INTERLACING_SUPPORTED) - /* if interlaced and we do not need a new row, combine row and return */ - if (png_ptr->interlaced && (png_ptr->transformations & PNG_INTERLACE)) - { - switch (png_ptr->pass) - { - case 0: - if (png_ptr->row_number & 7) - { - if (dsp_row != NULL) - png_combine_row(png_ptr, dsp_row, - png_pass_dsp_mask[png_ptr->pass]); - png_read_finish_row(png_ptr); - return; - } - break; - case 1: - if ((png_ptr->row_number & 7) || png_ptr->width < 5) - { - if (dsp_row != NULL) - png_combine_row(png_ptr, dsp_row, - png_pass_dsp_mask[png_ptr->pass]); - png_read_finish_row(png_ptr); - return; - } - break; - case 2: - if ((png_ptr->row_number & 7) != 4) - { - if (dsp_row != NULL && (png_ptr->row_number & 4)) - png_combine_row(png_ptr, dsp_row, - png_pass_dsp_mask[png_ptr->pass]); - png_read_finish_row(png_ptr); - return; - } - break; - case 3: - if ((png_ptr->row_number & 3) || png_ptr->width < 3) - { - if (dsp_row != NULL) - png_combine_row(png_ptr, dsp_row, - png_pass_dsp_mask[png_ptr->pass]); - png_read_finish_row(png_ptr); - return; - } - break; - case 4: - if ((png_ptr->row_number & 3) != 2) - { - if (dsp_row != NULL && (png_ptr->row_number & 2)) - png_combine_row(png_ptr, dsp_row, - png_pass_dsp_mask[png_ptr->pass]); - png_read_finish_row(png_ptr); - return; - } - break; - case 5: - if ((png_ptr->row_number & 1) || png_ptr->width < 2) - { - if (dsp_row != NULL) - png_combine_row(png_ptr, dsp_row, - png_pass_dsp_mask[png_ptr->pass]); - png_read_finish_row(png_ptr); - return; - } - break; - case 6: - if (!(png_ptr->row_number & 1)) - { - png_read_finish_row(png_ptr); - return; - } - break; - } - } -#endif - - if (!(png_ptr->mode & PNG_HAVE_IDAT)) - png_error(png_ptr, "Invalid attempt to read row data"); - - png_ptr->zstream.next_out = png_ptr->row_buf; - png_ptr->zstream.avail_out = (uInt)png_ptr->irowbytes; - do - { - if (!(png_ptr->zstream.avail_in)) - { - while (!png_ptr->idat_size) - { - png_byte chunk_length[4]; - - png_crc_finish(png_ptr, 0); - - png_read_data(png_ptr, chunk_length, 4); - png_ptr->idat_size = png_get_uint_32(chunk_length); - - png_reset_crc(png_ptr); - png_crc_read(png_ptr, png_ptr->chunk_name, 4); - if (png_memcmp(png_ptr->chunk_name, png_IDAT, 4)) - png_error(png_ptr, "Not enough image data"); - } - png_ptr->zstream.avail_in = (uInt)png_ptr->zbuf_size; - png_ptr->zstream.next_in = png_ptr->zbuf; - if (png_ptr->zbuf_size > png_ptr->idat_size) - png_ptr->zstream.avail_in = (uInt)png_ptr->idat_size; - png_crc_read(png_ptr, png_ptr->zbuf, - (png_size_t)png_ptr->zstream.avail_in); - png_ptr->idat_size -= png_ptr->zstream.avail_in; - } - ret = inflate(&png_ptr->zstream, Z_PARTIAL_FLUSH); - if (ret == Z_STREAM_END) - { - if (png_ptr->zstream.avail_out || png_ptr->zstream.avail_in || - png_ptr->idat_size) - png_error(png_ptr, "Extra compressed data"); - png_ptr->mode |= PNG_AFTER_IDAT; - png_ptr->flags |= PNG_FLAG_ZLIB_FINISHED; - break; - } - if (ret != Z_OK) - png_error(png_ptr, png_ptr->zstream.msg ? png_ptr->zstream.msg : - "Decompression error"); - - } while (png_ptr->zstream.avail_out); - - png_ptr->row_info.color_type = png_ptr->color_type; - png_ptr->row_info.width = png_ptr->iwidth; - png_ptr->row_info.channels = png_ptr->channels; - png_ptr->row_info.bit_depth = png_ptr->bit_depth; - png_ptr->row_info.pixel_depth = png_ptr->pixel_depth; - { - png_ptr->row_info.rowbytes = ((png_ptr->row_info.width * - (png_uint_32)png_ptr->row_info.pixel_depth + 7) >> 3); - } - - png_read_filter_row(png_ptr, &(png_ptr->row_info), - png_ptr->row_buf + 1, png_ptr->prev_row + 1, - (int)(png_ptr->row_buf[0])); - - png_memcpy_check(png_ptr, png_ptr->prev_row, png_ptr->row_buf, - png_ptr->rowbytes + 1); - - if (png_ptr->transformations) - png_do_read_transformations(png_ptr); - -#if defined(PNG_READ_INTERLACING_SUPPORTED) - /* blow up interlaced rows to full size */ - if (png_ptr->interlaced && - (png_ptr->transformations & PNG_INTERLACE)) - { - if (png_ptr->pass < 6) - png_do_read_interlace(&(png_ptr->row_info), - png_ptr->row_buf + 1, png_ptr->pass, png_ptr->transformations); - - if (dsp_row != NULL) - png_combine_row(png_ptr, dsp_row, - png_pass_dsp_mask[png_ptr->pass]); - if (row != NULL) - png_combine_row(png_ptr, row, - png_pass_mask[png_ptr->pass]); - } - else -#endif - { - if (row != NULL) - png_combine_row(png_ptr, row, 0xff); - if (dsp_row != NULL) - png_combine_row(png_ptr, dsp_row, 0xff); - } - png_read_finish_row(png_ptr); - - if (png_ptr->read_row_fn != NULL) - (*(png_ptr->read_row_fn))(png_ptr, png_ptr->row_number, png_ptr->pass); -} - -/* Read one or more rows of image data. If the image is interlaced, - * and png_set_interlace_handling() has been called, the rows need to - * contain the contents of the rows from the previous pass. If the - * image has alpha or transparency, and png_handle_alpha() has been - * called, the rows contents must be initialized to the contents of the - * screen. - * - * "row" holds the actual image, and pixels are placed in it - * as they arrive. If the image is displayed after each pass, it will - * appear to "sparkle" in. "display_row" can be used to display a - * "chunky" progressive image, with finer detail added as it becomes - * available. If you do not want this "chunky" display, you may pass - * NULL for display_row. If you do not want the sparkle display, and - * you have not called png_handle_alpha(), you may pass NULL for rows. - * If you have called png_handle_alpha(), and the image has either an - * alpha channel or a transparency chunk, you must provide a buffer for - * rows. In this case, you do not have to provide a display_row buffer - * also, but you may. If the image is not interlaced, or if you have - * not called png_set_interlace_handling(), the display_row buffer will - * be ignored, so pass NULL to it. - */ - -void -png_read_rows(png_structp png_ptr, png_bytepp row, - png_bytepp display_row, png_uint_32 num_rows) -{ - png_uint_32 i; - png_bytepp rp; - png_bytepp dp; - - png_debug(1, "in png_read_rows\n"); - /* save jump buffer and error functions */ - rp = row; - dp = display_row; - for (i = 0; i < num_rows; i++) - { - png_bytep rptr; - png_bytep dptr; - - if (rp != NULL) - rptr = *rp; - else - rptr = NULL; - if (dp != NULL) - dptr = *dp; - else - dptr = NULL; - png_read_row(png_ptr, rptr, dptr); - if (row != NULL) - rp++; - if (display_row != NULL) - dp++; - } -} - -/* Read the entire image. If the image has an alpha channel or a tRNS - * chunk, and you have called png_handle_alpha(), you will need to - * initialize the image to the current image that PNG will be overlaying. - * We set the num_rows again here, in case it was incorrectly set in - * png_read_start_row() by a call to png_read_update_info() or - * png_start_read_image() if png_set_interlace_handling() wasn't called - * prior to either of these functions like it should have been. You can - * only call this function once. If you desire to have an image for - * each pass of a interlaced image, use png_read_rows() instead. - */ -void -png_read_image(png_structp png_ptr, png_bytepp image) -{ - png_uint_32 i; - int pass, j; - png_bytepp rp; - - png_debug(1, "in png_read_image\n"); - /* save jump buffer and error functions */ - pass = png_set_interlace_handling(png_ptr); - - png_ptr->num_rows = png_ptr->height; /* Make sure this is set correctly */ - - for (j = 0; j < pass; j++) - { - rp = image; - for (i = 0; i < png_ptr->height; i++) - { - png_read_row(png_ptr, *rp, NULL); - rp++; - } - } -} - -/* Read the end of the PNG file. Will not read past the end of the - * file, will verify the end is accurate, and will read any comments - * or time information at the end of the file, if info is not NULL. - */ -void -png_read_end(png_structp png_ptr, png_infop info_ptr) -{ - png_byte chunk_length[4]; - png_uint_32 length; - - png_debug(1, "in png_read_end\n"); - /* save jump buffer and error functions */ - png_crc_finish(png_ptr, 0); /* Finish off CRC from last IDAT chunk */ - - do - { - png_read_data(png_ptr, chunk_length, 4); - length = png_get_uint_32(chunk_length); - - png_reset_crc(png_ptr); - png_crc_read(png_ptr, png_ptr->chunk_name, 4); - - png_debug1(0, "Reading %s chunk.\n", png_ptr->chunk_name); - - if (!png_memcmp(png_ptr->chunk_name, png_IHDR, 4)) - png_handle_IHDR(png_ptr, info_ptr, length); - else if (!png_memcmp(png_ptr->chunk_name, png_IDAT, 4)) - { - /* Zero length IDATs are legal after the last IDAT has been - * read, but not after other chunks have been read. - */ - if (length > 0 || png_ptr->mode & PNG_AFTER_IDAT) - png_error(png_ptr, "Too many IDAT's found"); - else - png_crc_finish(png_ptr, 0); - } - else if (!png_memcmp(png_ptr->chunk_name, png_PLTE, 4)) - png_handle_PLTE(png_ptr, info_ptr, length); - else if (!png_memcmp(png_ptr->chunk_name, png_IEND, 4)) - png_handle_IEND(png_ptr, info_ptr, length); -#if defined(PNG_READ_bKGD_SUPPORTED) - else if (!png_memcmp(png_ptr->chunk_name, png_bKGD, 4)) - png_handle_bKGD(png_ptr, info_ptr, length); -#endif -#if defined(PNG_READ_cHRM_SUPPORTED) - else if (!png_memcmp(png_ptr->chunk_name, png_cHRM, 4)) - png_handle_cHRM(png_ptr, info_ptr, length); -#endif -#if defined(PNG_READ_gAMA_SUPPORTED) - else if (!png_memcmp(png_ptr->chunk_name, png_gAMA, 4)) - png_handle_gAMA(png_ptr, info_ptr, length); -#endif -#if defined(PNG_READ_hIST_SUPPORTED) - else if (!png_memcmp(png_ptr->chunk_name, png_hIST, 4)) - png_handle_hIST(png_ptr, info_ptr, length); -#endif -#if defined(PNG_READ_oFFs_SUPPORTED) - else if (!png_memcmp(png_ptr->chunk_name, png_oFFs, 4)) - png_handle_oFFs(png_ptr, info_ptr, length); -#endif -#if defined(PNG_READ_pCAL_SUPPORTED) - else if (!png_memcmp(png_ptr->chunk_name, png_pCAL, 4)) - png_handle_pCAL(png_ptr, info_ptr, length); -#endif -#if defined(PNG_READ_pHYs_SUPPORTED) - else if (!png_memcmp(png_ptr->chunk_name, png_pHYs, 4)) - png_handle_pHYs(png_ptr, info_ptr, length); -#endif -#if defined(PNG_READ_sBIT_SUPPORTED) - else if (!png_memcmp(png_ptr->chunk_name, png_sBIT, 4)) - png_handle_sBIT(png_ptr, info_ptr, length); -#endif -#if defined(PNG_READ_sRGB_SUPPORTED) - else if (!png_memcmp(png_ptr->chunk_name, png_sRGB, 4)) - png_handle_sRGB(png_ptr, info_ptr, length); -#endif -#if defined(PNG_READ_tEXt_SUPPORTED) - else if (!png_memcmp(png_ptr->chunk_name, png_tEXt, 4)) - png_handle_tEXt(png_ptr, info_ptr, length); -#endif -#if defined(PNG_READ_tIME_SUPPORTED) - else if (!png_memcmp(png_ptr->chunk_name, png_tIME, 4)) - png_handle_tIME(png_ptr, info_ptr, length); -#endif -#if defined(PNG_READ_tRNS_SUPPORTED) - else if (!png_memcmp(png_ptr->chunk_name, png_tRNS, 4)) - png_handle_tRNS(png_ptr, info_ptr, length); -#endif -#if defined(PNG_READ_zTXt_SUPPORTED) - else if (!png_memcmp(png_ptr->chunk_name, png_zTXt, 4)) - png_handle_zTXt(png_ptr, info_ptr, length); -#endif - else - png_handle_unknown(png_ptr, info_ptr, length); - } while (!(png_ptr->mode & PNG_HAVE_IEND)); -} - -/* free all memory used by the read */ -void -png_destroy_read_struct(png_structpp png_ptr_ptr, png_infopp info_ptr_ptr, - png_infopp end_info_ptr_ptr) -{ - png_structp png_ptr = NULL; - png_infop info_ptr = NULL, end_info_ptr = NULL; - - png_debug(1, "in png_destroy_read_struct\n"); - /* save jump buffer and error functions */ - if (png_ptr_ptr != NULL) - png_ptr = *png_ptr_ptr; - - if (info_ptr_ptr != NULL) - info_ptr = *info_ptr_ptr; - - if (end_info_ptr_ptr != NULL) - end_info_ptr = *end_info_ptr_ptr; - - png_read_destroy(png_ptr, info_ptr, end_info_ptr); - - if (info_ptr != NULL) - { -#if defined(PNG_READ_tEXt_SUPPORTED) || defined(PNG_READ_zTXt_SUPPORTED) - png_free(png_ptr, info_ptr->text); -#endif - png_destroy_struct((png_voidp)info_ptr); - *info_ptr_ptr = (png_infop)NULL; - } - - if (end_info_ptr != NULL) - { -#if defined(PNG_READ_tEXt_SUPPORTED) || defined(PNG_READ_zTXt_SUPPORTED) - png_free(png_ptr, end_info_ptr->text); -#endif - png_destroy_struct((png_voidp)end_info_ptr); - *end_info_ptr_ptr = (png_infop)NULL; - } - - if (png_ptr != NULL) - { - png_destroy_struct((png_voidp)png_ptr); - *png_ptr_ptr = (png_structp)NULL; - } -} - -/* free all memory used by the read (old method) */ -void -png_read_destroy(png_structp png_ptr, png_infop info_ptr, png_infop end_info_ptr) -{ - jmp_buf tmp_jmp; - png_error_ptr error_fn; - png_error_ptr warning_fn; - png_voidp error_ptr; - - png_debug(1, "in png_read_destroy\n"); - /* save jump buffer and error functions */ - if (info_ptr != NULL) - png_info_destroy(png_ptr, info_ptr); - - if (end_info_ptr != NULL) - png_info_destroy(png_ptr, end_info_ptr); - - png_free(png_ptr, png_ptr->zbuf); - png_free(png_ptr, png_ptr->row_buf); - png_free(png_ptr, png_ptr->prev_row); -#if defined(PNG_READ_DITHER_SUPPORTED) - png_free(png_ptr, png_ptr->palette_lookup); - png_free(png_ptr, png_ptr->dither_index); -#endif -#if defined(PNG_READ_GAMMA_SUPPORTED) - png_free(png_ptr, png_ptr->gamma_table); -#endif -#if defined(PNG_READ_BACKGROUND_SUPPORTED) - png_free(png_ptr, png_ptr->gamma_from_1); - png_free(png_ptr, png_ptr->gamma_to_1); -#endif - if (png_ptr->flags & PNG_FLAG_FREE_PALETTE) - png_zfree(png_ptr, png_ptr->palette); - if (png_ptr->flags & PNG_FLAG_FREE_TRANS) - png_free(png_ptr, png_ptr->trans); -#if defined(PNG_READ_hIST_SUPPORTED) - if (png_ptr->flags & PNG_FLAG_FREE_HIST) - png_free(png_ptr, png_ptr->hist); -#endif -#if defined(PNG_READ_GAMMA_SUPPORTED) - if (png_ptr->gamma_16_table != NULL) - { - int i; - for (i = 0; i < (1 << (8 - png_ptr->gamma_shift)); i++) - { - png_free(png_ptr, png_ptr->gamma_16_table[i]); - } - } -#endif -#if defined(PNG_READ_BACKGROUND_SUPPORTED) - png_free(png_ptr, png_ptr->gamma_16_table); - if (png_ptr->gamma_16_from_1 != NULL) - { - int i; - for (i = 0; i < (1 << (8 - png_ptr->gamma_shift)); i++) - { - png_free(png_ptr, png_ptr->gamma_16_from_1[i]); - } - } - png_free(png_ptr, png_ptr->gamma_16_from_1); - if (png_ptr->gamma_16_to_1 != NULL) - { - int i; - for (i = 0; i < (1 << (8 - png_ptr->gamma_shift)); i++) - { - png_free(png_ptr, png_ptr->gamma_16_to_1[i]); - } - } - png_free(png_ptr, png_ptr->gamma_16_to_1); -#endif - - inflateEnd(&png_ptr->zstream); -#ifdef PNG_PROGRESSIVE_READ_SUPPORTED - png_free(png_ptr, png_ptr->save_buffer); -#endif - - /* Save the important info out of the png_struct, in case it is - * being used again. - */ - png_memcpy(tmp_jmp, png_ptr->jmpbuf, sizeof (jmp_buf)); - - error_fn = png_ptr->error_fn; - warning_fn = png_ptr->warning_fn; - error_ptr = png_ptr->error_ptr; - - png_memset(png_ptr, 0, sizeof (png_struct)); - - png_ptr->error_fn = error_fn; - png_ptr->warning_fn = warning_fn; - png_ptr->error_ptr = error_ptr; - - png_memcpy(png_ptr->jmpbuf, tmp_jmp, sizeof (jmp_buf)); -} - -void -png_set_read_status_fn(png_structp png_ptr, png_read_status_ptr read_row_fn) -{ - png_ptr->read_row_fn = read_row_fn; -} diff --git a/src/png/pngrio.c b/src/png/pngrio.c deleted file mode 100644 index 6c6710a46f..0000000000 --- a/src/png/pngrio.c +++ /dev/null @@ -1,145 +0,0 @@ - -/* pngrio.c - functions for data input - * - * libpng 1.0.1 - * For conditions of distribution and use, see copyright notice in png.h - * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc. - * Copyright (c) 1996, 1997 Andreas Dilger - * Copyright (c) 1998, Glenn Randers-Pehrson - * March 15, 1998 - * - * This file provides a location for all input. Users which need - * special handling are expected to write a function which has the same - * arguments as this, and perform a similar function, but possibly has - * a different input method. Note that you shouldn't change this - * function, but rather write a replacement function and then make - * libpng use it at run time with png_set_read_fn(...). - */ - -#define PNG_INTERNAL -#include "../png/png.h" - -/* Read the data from whatever input you are using. The default routine - reads from a file pointer. Note that this routine sometimes gets called - with very small lengths, so you should implement some kind of simple - buffering if you are using unbuffered reads. This should never be asked - to read more then 64K on a 16 bit machine. */ -void -png_read_data(png_structp png_ptr, png_bytep data, png_size_t length) -{ - png_debug1(4,"reading %d bytes\n", length); - if (png_ptr->read_data_fn != NULL) - (*(png_ptr->read_data_fn))(png_ptr, data, length); - else - png_error(png_ptr, "Call to NULL read function"); -} - -#if !defined(PNG_NO_STDIO) -/* This is the function which does the actual reading of data. If you are - not reading from a standard C stream, you should create a replacement - read_data function and use it at run time with png_set_read_fn(), rather - than changing the library. */ -#ifndef USE_FAR_KEYWORD -static void -png_default_read_data(png_structp png_ptr, png_bytep data, png_size_t length) -{ - png_size_t check; - - /* fread() returns 0 on error, so it is OK to store this in a png_size_t - * instead of an int, which is what fread() actually returns. - */ - check = (png_size_t)fread(data, (png_size_t)1, length, - (FILE *)png_ptr->io_ptr); - - if (check != length) - { - png_error(png_ptr, "Read Error"); - } -} -#else -/* this is the model-independent version. Since the standard I/O library - can't handle far buffers in the medium and small models, we have to copy - the data. -*/ - -#define NEAR_BUF_SIZE 1024 -#define MIN(a,b) (a <= b ? a : b) - -static void -png_default_read_data(png_structp png_ptr, png_bytep data, png_size_t length) -{ - int check; - png_byte *n_data; - FILE *io_ptr; - - /* Check if data really is near. If so, use usual code. */ - n_data = (png_byte *)CVT_PTR_NOCHECK(data); - io_ptr = (FILE *)CVT_PTR(png_ptr->io_ptr); - if ((png_bytep)n_data == data) - { - check = fread(n_data, 1, length, io_ptr); - } - else - { - png_byte buf[NEAR_BUF_SIZE]; - png_size_t read, remaining, err; - check = 0; - remaining = length; - do - { - read = MIN(NEAR_BUF_SIZE, remaining); - err = fread(buf, (png_size_t)1, read, io_ptr); - png_memcpy(data, buf, read); /* copy far buffer to near buffer */ - if(err != read) - break; - else - check += err; - data += read; - remaining -= read; - } - while (remaining != 0); - } - if ((png_uint_32)check != (png_uint_32)length) - { - png_error(png_ptr, "read Error"); - } -} -#endif -#endif - -/* This function allows the application to supply a new input function - for libpng if standard C streams aren't being used. - - This function takes as its arguments: - png_ptr - pointer to a png input data structure - io_ptr - pointer to user supplied structure containing info about - the input functions. May be NULL. - read_data_fn - pointer to a new input function which takes as it's - arguments a pointer to a png_struct, a pointer to - a location where input data can be stored, and a 32-bit - unsigned int which is the number of bytes to be read. - To exit and output any fatal error messages the new write - function should call png_error(png_ptr, "Error msg"). */ -void -png_set_read_fn(png_structp png_ptr, png_voidp io_ptr, - png_rw_ptr read_data_fn) -{ - png_ptr->io_ptr = io_ptr; - -#if !defined(PNG_NO_STDIO) - if (read_data_fn != NULL) - png_ptr->read_data_fn = read_data_fn; - else - png_ptr->read_data_fn = png_default_read_data; -#else - png_ptr->read_data_fn = read_data_fn; -#endif - - /* It is an error to write to a read device */ - png_ptr->write_data_fn = NULL; - -#if defined(PNG_WRITE_FLUSH_SUPPORTED) - png_ptr->output_flush_fn = NULL; -#endif /* PNG_WRITE_FLUSH_SUPPORTED */ -} - diff --git a/src/png/pngrtran.c b/src/png/pngrtran.c deleted file mode 100644 index 684bf5f253..0000000000 --- a/src/png/pngrtran.c +++ /dev/null @@ -1,3409 +0,0 @@ - -/* pngrtran.c - transforms the data in a row for PNG readers - * - * libpng 1.0.1 - * For conditions of distribution and use, see copyright notice in png.h - * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc. - * Copyright (c) 1996, 1997 Andreas Dilger - * Copyright (c) 1998, Glenn Randers-Pehrson - * March 15, 1998 - * - * This file contains functions optionally called by an application - * in order to tell libpng how to handle data when reading a PNG. - * Transformations which are used in both reading and writing are - * in pngtrans.c. - */ - -#define PNG_INTERNAL -#include "../png/png.h" - -#ifdef PNG_READ_COMPOSITE_NODIV_SUPPORTED -/* With these routines, we avoid an integer divide, which will be slower on - * many machines. However, it does take more operations than the corresponding - * divide method, so it may be slower on some RISC systems. There are two - * shifts (by 8 or 16 bits) and an addition, versus a single integer divide. - * - * Note that the rounding factors are NOT supposed to be the same! 128 and - * 32768 are correct for the NODIV code; 127 and 32767 are correct for the - * standard method. - * - * [Optimized code by Greg Roelofs and Mark Adler...blame us for bugs. :-) ] - */ - - /* fg and bg should be in `gamma 1.0' space; alpha is the opacity */ -# define png_composite(composite, fg, alpha, bg) \ - { png_uint_16 temp = ((png_uint_16)(fg) * (png_uint_16)(alpha) + \ - (png_uint_16)(bg)*(png_uint_16)(255 - \ - (png_uint_16)(alpha)) + (png_uint_16)128); \ - (composite) = (png_byte)((temp + (temp >> 8)) >> 8); } -# define png_composite_16(composite, fg, alpha, bg) \ - { png_uint_32 temp = ((png_uint_32)(fg) * (png_uint_32)(alpha) + \ - (png_uint_32)(bg)*(png_uint_32)(65535L - \ - (png_uint_32)(alpha)) + (png_uint_32)32768L); \ - (composite) = (png_uint_16)((temp + (temp >> 16)) >> 16); } - -#else /* standard method using integer division */ - - /* fg and bg should be in `gamma 1.0' space; alpha is the opacity */ -# define png_composite(composite, fg, alpha, bg) \ - (composite) = (png_byte)(((png_uint_16)(fg) * (png_uint_16)(alpha) + \ - (png_uint_16)(bg) * (png_uint_16)(255 - (png_uint_16)(alpha)) + \ - (png_uint_16)127) / 255) -# define png_composite_16(composite, fg, alpha, bg) \ - (composite) = (png_uint_16)(((png_uint_32)(fg) * (png_uint_32)(alpha) + \ - (png_uint_32)(bg)*(png_uint_32)(65535L - (png_uint_32)(alpha)) + \ - (png_uint_32)32767) / (png_uint_32)65535L) - -#endif /* ?PNG_READ_COMPOSITE_NODIV_SUPPORTED */ - - -/* Set the action on getting a CRC error for an ancillary or critical chunk. */ -void -png_set_crc_action(png_structp png_ptr, int crit_action, int ancil_action) -{ - png_debug(1, "in png_set_crc_action\n"); - /* Tell libpng how we react to CRC errors in critical chunks */ - switch (crit_action) - { - case PNG_CRC_NO_CHANGE: /* leave setting as is */ - break; - case PNG_CRC_WARN_USE: /* warn/use data */ - png_ptr->flags &= ~PNG_FLAG_CRC_CRITICAL_MASK; - png_ptr->flags |= PNG_FLAG_CRC_CRITICAL_USE; - break; - case PNG_CRC_QUIET_USE: /* quiet/use data */ - png_ptr->flags &= ~PNG_FLAG_CRC_CRITICAL_MASK; - png_ptr->flags |= PNG_FLAG_CRC_CRITICAL_USE | - PNG_FLAG_CRC_CRITICAL_IGNORE; - break; - case PNG_CRC_WARN_DISCARD: /* not a valid action for critical data */ - png_warning(png_ptr, "Can't discard critical data on CRC error."); - case PNG_CRC_ERROR_QUIT: /* error/quit */ - case PNG_CRC_DEFAULT: - default: - png_ptr->flags &= ~PNG_FLAG_CRC_CRITICAL_MASK; - break; - } - - switch (ancil_action) - { - case PNG_CRC_NO_CHANGE: /* leave setting as is */ - break; - case PNG_CRC_WARN_USE: /* warn/use data */ - png_ptr->flags &= ~PNG_FLAG_CRC_ANCILLARY_MASK; - png_ptr->flags |= PNG_FLAG_CRC_ANCILLARY_USE; - break; - case PNG_CRC_QUIET_USE: /* quiet/use data */ - png_ptr->flags &= ~PNG_FLAG_CRC_ANCILLARY_MASK; - png_ptr->flags |= PNG_FLAG_CRC_ANCILLARY_USE | - PNG_FLAG_CRC_ANCILLARY_NOWARN; - break; - case PNG_CRC_ERROR_QUIT: /* error/quit */ - png_ptr->flags &= ~PNG_FLAG_CRC_ANCILLARY_MASK; - png_ptr->flags |= PNG_FLAG_CRC_ANCILLARY_NOWARN; - break; - case PNG_CRC_WARN_DISCARD: /* warn/discard data */ - case PNG_CRC_DEFAULT: - default: - png_ptr->flags &= ~PNG_FLAG_CRC_ANCILLARY_MASK; - break; - } -} - -#if defined(PNG_READ_BACKGROUND_SUPPORTED) -/* handle alpha and tRNS via a background color */ -void -png_set_background(png_structp png_ptr, - png_color_16p background_color, int background_gamma_code, - int need_expand, double background_gamma) -{ - png_debug(1, "in png_set_background\n"); - if (background_gamma_code == PNG_BACKGROUND_GAMMA_UNKNOWN) - { - png_warning(png_ptr, "Application must supply a known background gamma"); - return; - } - - png_ptr->transformations |= PNG_BACKGROUND; - png_memcpy(&(png_ptr->background), background_color, - sizeof(png_color_16)); - png_ptr->background_gamma = (float)background_gamma; - png_ptr->background_gamma_type = (png_byte)(background_gamma_code); - png_ptr->transformations |= (need_expand ? PNG_BACKGROUND_EXPAND : 0); -} -#endif - -#if defined(PNG_READ_16_TO_8_SUPPORTED) -/* strip 16 bit depth files to 8 bit depth */ -void -png_set_strip_16(png_structp png_ptr) -{ - png_debug(1, "in png_set_strip_16\n"); - png_ptr->transformations |= PNG_16_TO_8; -} -#endif - -#if defined(PNG_READ_STRIP_ALPHA_SUPPORTED) -void -png_set_strip_alpha(png_structp png_ptr) -{ - png_debug(1, "in png_set_strip_alpha\n"); - png_ptr->transformations |= PNG_STRIP_ALPHA; -} -#endif - -#if defined(PNG_READ_DITHER_SUPPORTED) -/* Dither file to 8 bit. Supply a palette, the current number - * of elements in the palette, the maximum number of elements - * allowed, and a histogram if possible. If the current number - * of colors is greater then the maximum number, the palette will be - * modified to fit in the maximum number. "full_dither" indicates - * whether we need a dithering cube set up for RGB images, or if we - * simply are reducing the number of colors in a paletted image. - */ - -typedef struct png_dsort_struct -{ - struct png_dsort_struct FAR * next; - png_byte left; - png_byte right; -} png_dsort; -typedef png_dsort FAR * png_dsortp; -typedef png_dsort FAR * FAR * png_dsortpp; - -void -png_set_dither(png_structp png_ptr, png_colorp palette, - int num_palette, int maximum_colors, png_uint_16p histogram, - int full_dither) -{ - png_debug(1, "in png_set_dither\n"); - png_ptr->transformations |= PNG_DITHER; - - if (!full_dither) - { - int i; - - png_ptr->dither_index = (png_bytep)png_malloc(png_ptr, - (png_uint_32)(num_palette * sizeof (png_byte))); - for (i = 0; i < num_palette; i++) - png_ptr->dither_index[i] = (png_byte)i; - } - - if (num_palette > maximum_colors) - { - if (histogram != NULL) - { - /* This is easy enough, just throw out the least used colors. - Perhaps not the best solution, but good enough. */ - - int i; - png_bytep sort; - - /* initialize an array to sort colors */ - sort = (png_bytep)png_malloc(png_ptr, (png_uint_32)(num_palette - * sizeof (png_byte))); - - /* initialize the sort array */ - for (i = 0; i < num_palette; i++) - sort[i] = (png_byte)i; - - /* Find the least used palette entries by starting a - bubble sort, and running it until we have sorted - out enough colors. Note that we don't care about - sorting all the colors, just finding which are - least used. */ - - for (i = num_palette - 1; i >= maximum_colors; i--) - { - int done; /* to stop early if the list is pre-sorted */ - int j; - - done = 1; - for (j = 0; j < i; j++) - { - if (histogram[sort[j]] < histogram[sort[j + 1]]) - { - png_byte t; - - t = sort[j]; - sort[j] = sort[j + 1]; - sort[j + 1] = t; - done = 0; - } - } - if (done) - break; - } - - /* swap the palette around, and set up a table, if necessary */ - if (full_dither) - { - int j; - - /* put all the useful colors within the max, but don't - move the others */ - for (i = 0, j = num_palette; i < maximum_colors; i++) - { - if ((int)sort[i] >= maximum_colors) - { - do - j--; - while ((int)sort[j] >= maximum_colors); - palette[i] = palette[j]; - } - } - } - else - { - int j; - - /* move all the used colors inside the max limit, and - develop a translation table */ - for (i = 0, j = num_palette; i < maximum_colors; i++) - { - /* only move the colors we need to */ - if ((int)sort[i] >= maximum_colors) - { - png_color tmp_color; - - do - j--; - while ((int)sort[j] >= maximum_colors); - - tmp_color = palette[j]; - palette[j] = palette[i]; - palette[i] = tmp_color; - /* indicate where the color went */ - png_ptr->dither_index[j] = (png_byte)i; - png_ptr->dither_index[i] = (png_byte)j; - } - } - - /* find closest color for those colors we are not using */ - for (i = 0; i < num_palette; i++) - { - if ((int)png_ptr->dither_index[i] >= maximum_colors) - { - int min_d, k, min_k, d_index; - - /* find the closest color to one we threw out */ - d_index = png_ptr->dither_index[i]; - min_d = PNG_COLOR_DIST(palette[d_index], palette[0]); - for (k = 1, min_k = 0; k < maximum_colors; k++) - { - int d; - - d = PNG_COLOR_DIST(palette[d_index], palette[k]); - - if (d < min_d) - { - min_d = d; - min_k = k; - } - } - /* point to closest color */ - png_ptr->dither_index[i] = (png_byte)min_k; - } - } - } - png_free(png_ptr, sort); - } - else - { - /* This is much harder to do simply (and quickly). Perhaps - we need to go through a median cut routine, but those - don't always behave themselves with only a few colors - as input. So we will just find the closest two colors, - and throw out one of them (chosen somewhat randomly). - [I don't understand this at all, so if someone wants to - work on improving it, be my guest - AED] - */ - int i; - int max_d; - int num_new_palette; - png_dsortpp hash; - png_bytep index_to_palette; - /* where the original index currently is in the palette */ - png_bytep palette_to_index; - /* which original index points to this palette color */ - - /* initialize palette index arrays */ - index_to_palette = (png_bytep)png_malloc(png_ptr, - (png_uint_32)(num_palette * sizeof (png_byte))); - palette_to_index = (png_bytep)png_malloc(png_ptr, - (png_uint_32)(num_palette * sizeof (png_byte))); - - /* initialize the sort array */ - for (i = 0; i < num_palette; i++) - { - index_to_palette[i] = (png_byte)i; - palette_to_index[i] = (png_byte)i; - } - - hash = (png_dsortpp)png_malloc(png_ptr, (png_uint_32)(769 * - sizeof (png_dsortp))); - for (i = 0; i < 769; i++) - hash[i] = NULL; -/* png_memset(hash, 0, 769 * sizeof (png_dsortp)); */ - - num_new_palette = num_palette; - - /* initial wild guess at how far apart the farthest pixel - pair we will be eliminating will be. Larger - numbers mean more areas will be allocated, Smaller - numbers run the risk of not saving enough data, and - having to do this all over again. - - I have not done extensive checking on this number. - */ - max_d = 96; - - while (num_new_palette > maximum_colors) - { - for (i = 0; i < num_new_palette - 1; i++) - { - int j; - - for (j = i + 1; j < num_new_palette; j++) - { - int d; - - d = PNG_COLOR_DIST(palette[i], palette[j]); - - if (d <= max_d) - { - png_dsortp t; - - t = (png_dsortp)png_malloc(png_ptr, (png_uint_32)(sizeof - (png_dsort))); - t->next = hash[d]; - t->left = (png_byte)i; - t->right = (png_byte)j; - hash[d] = t; - } - } - } - - for (i = 0; i <= max_d; i++) - { - if (hash[i] != NULL) - { - png_dsortp p; - - for (p = hash[i]; p; p = p->next) - { - if ((int)index_to_palette[p->left] < num_new_palette && - (int)index_to_palette[p->right] < num_new_palette) - { - int j, next_j; - - if (num_new_palette & 1) - { - j = p->left; - next_j = p->right; - } - else - { - j = p->right; - next_j = p->left; - } - - num_new_palette--; - palette[index_to_palette[j]] = palette[num_new_palette]; - if (!full_dither) - { - int k; - - for (k = 0; k < num_palette; k++) - { - if (png_ptr->dither_index[k] == - index_to_palette[j]) - png_ptr->dither_index[k] = - index_to_palette[next_j]; - if ((int)png_ptr->dither_index[k] == - num_new_palette) - png_ptr->dither_index[k] = - index_to_palette[j]; - } - } - - index_to_palette[palette_to_index[num_new_palette]] = - index_to_palette[j]; - palette_to_index[index_to_palette[j]] = - palette_to_index[num_new_palette]; - - index_to_palette[j] = (png_byte)num_new_palette; - palette_to_index[num_new_palette] = (png_byte)j; - } - if (num_new_palette <= maximum_colors) - break; - } - if (num_new_palette <= maximum_colors) - break; - } - } - - for (i = 0; i < 769; i++) - { - if (hash[i] != NULL) - { - png_dsortp p; - - p = hash[i]; - while (p) - { - png_dsortp t; - - t = p->next; - png_free(png_ptr, p); - p = t; - } - } - hash[i] = 0; - } - max_d += 96; - } - png_free(png_ptr, hash); - png_free(png_ptr, palette_to_index); - png_free(png_ptr, index_to_palette); - } - num_palette = maximum_colors; - } - if (png_ptr->palette == NULL) - { - png_ptr->palette = palette; - } - png_ptr->num_palette = (png_uint_16)num_palette; - - if (full_dither) - { - int i; - int total_bits, num_red, num_green, num_blue; - png_size_t num_entries; - png_bytep distance; - - total_bits = PNG_DITHER_RED_BITS + PNG_DITHER_GREEN_BITS + - PNG_DITHER_BLUE_BITS; - - num_red = (1 << PNG_DITHER_RED_BITS); - num_green = (1 << PNG_DITHER_GREEN_BITS); - num_blue = (1 << PNG_DITHER_BLUE_BITS); - num_entries = ((png_size_t)1 << total_bits); - - png_ptr->palette_lookup = (png_bytep )png_malloc(png_ptr, - (png_uint_32)(num_entries * sizeof (png_byte))); - - png_memset(png_ptr->palette_lookup, 0, num_entries * sizeof (png_byte)); - - distance = (png_bytep)png_malloc(png_ptr, (png_uint_32)(num_entries * - sizeof(png_byte))); - - png_memset(distance, 0xff, num_entries * sizeof(png_byte)); - - for (i = 0; i < num_palette; i++) - { - int r, g, b, ir, ig, ib; - - r = (palette[i].red >> (8 - PNG_DITHER_RED_BITS)); - g = (palette[i].green >> (8 - PNG_DITHER_GREEN_BITS)); - b = (palette[i].blue >> (8 - PNG_DITHER_BLUE_BITS)); - - for (ir = 0; ir < num_red; ir++) - { - int dr, index_r; - - dr = abs(ir - r); - index_r = (ir << (PNG_DITHER_BLUE_BITS + PNG_DITHER_GREEN_BITS)); - for (ig = 0; ig < num_green; ig++) - { - int dg, dt, dm, index_g; - - dg = abs(ig - g); - dt = dr + dg; - dm = ((dr > dg) ? dr : dg); - index_g = index_r | (ig << PNG_DITHER_BLUE_BITS); - for (ib = 0; ib < num_blue; ib++) - { - int d_index, db, dmax, d; - - d_index = index_g | ib; - db = abs(ib - b); - dmax = ((dm > db) ? dm : db); - d = dmax + dt + db; - - if (d < (int)distance[d_index]) - { - distance[d_index] = (png_byte)d; - png_ptr->palette_lookup[d_index] = (png_byte)i; - } - } - } - } - } - - png_free(png_ptr, distance); - } -} -#endif - -#if defined(PNG_READ_GAMMA_SUPPORTED) -/* Transform the image from the file_gamma to the screen_gamma. We - * only do transformations on images where the file_gamma and screen_gamma - * are not close reciprocals, otherwise it slows things down slightly, and - * also needlessly introduces small errors. - */ -void -png_set_gamma(png_structp png_ptr, double scrn_gamma, double file_gamma) -{ - png_debug(1, "in png_set_gamma\n"); - if (fabs(scrn_gamma * file_gamma - 1.0) > PNG_GAMMA_THRESHOLD) - png_ptr->transformations |= PNG_GAMMA; - png_ptr->gamma = (float)file_gamma; - png_ptr->screen_gamma = (float)scrn_gamma; -} -#endif - -#if defined(PNG_READ_EXPAND_SUPPORTED) -/* Expand paletted images to rgb, expand grayscale images of - * less then 8 bit depth to 8 bit depth, and expand tRNS chunks - * to alpha channels. - */ -void -png_set_expand(png_structp png_ptr) -{ - png_debug(1, "in png_set_expand\n"); - png_ptr->transformations |= PNG_EXPAND; -} -#endif - -#if defined(PNG_READ_GRAY_TO_RGB_SUPPORTED) -void -png_set_gray_to_rgb(png_structp png_ptr) -{ - png_debug(1, "in png_set_gray_to_rgb\n"); - png_ptr->transformations |= PNG_GRAY_TO_RGB; -} -#endif - -#if defined(PNG_READ_RGB_TO_GRAY_SUPPORTED) -/* Convert a RGB image to a grayscale of the given width. This would - * allow us, for example, to convert a 24 bpp RGB image into an 8 or - * 16 bpp grayscale image. (Not yet implemented.) - */ -void -png_set_rgb_to_gray(png_structp png_ptr, int gray_bits) -{ - png_debug(1, "in png_set_rgb_to_gray\n"); - png_ptr->transformations |= PNG_RGB_TO_GRAY; - /* Need to do something with gray_bits here. */ - png_warning(png_ptr, "RGB to GRAY transformation is not yet implemented."); -} -#endif - -#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) -void -png_set_read_user_transform_fn(png_structp png_ptr, png_user_transform_ptr - read_user_transform_fn) -{ - png_debug(1, "in png_set_read_user_transform_fn\n"); - png_ptr->transformations |= PNG_USER_TRANSFORM; - png_ptr->read_user_transform_fn = read_user_transform_fn; -} -#endif - -/* Initialize everything needed for the read. This includes modifying - * the palette. - */ -void -png_init_read_transformations(png_structp png_ptr) -{ - int color_type; - - png_debug(1, "in png_init_read_transformations\n"); - color_type = png_ptr->color_type; - -#if defined(PNG_READ_EXPAND_SUPPORTED) && defined(PNG_READ_BACKGROUND_SUPPORTED) - if (png_ptr->transformations & PNG_BACKGROUND_EXPAND) - { - if (color_type == PNG_COLOR_TYPE_GRAY) - { - /* expand background chunk. */ - switch (png_ptr->bit_depth) - { - case 1: - png_ptr->background.gray *= (png_uint_16)0xff; - png_ptr->background.red = png_ptr->background.green = - png_ptr->background.blue = png_ptr->background.gray; - break; - case 2: - png_ptr->background.gray *= (png_uint_16)0x55; - png_ptr->background.red = png_ptr->background.green = - png_ptr->background.blue = png_ptr->background.gray; - break; - case 4: - png_ptr->background.gray *= (png_uint_16)0x11; - png_ptr->background.red = png_ptr->background.green = - png_ptr->background.blue = png_ptr->background.gray; - break; - case 8: - case 16: - png_ptr->background.red = png_ptr->background.green = - png_ptr->background.blue = png_ptr->background.gray; - break; - } - } - else if (color_type == PNG_COLOR_TYPE_PALETTE) - { - png_ptr->background.red = - png_ptr->palette[png_ptr->background.index].red; - png_ptr->background.green = - png_ptr->palette[png_ptr->background.index].green; - png_ptr->background.blue = - png_ptr->palette[png_ptr->background.index].blue; - -#if defined(PNG_READ_INVERT_ALPHA_SUPPORTED) - if (png_ptr->transformations & PNG_INVERT_ALPHA) - { -#if defined(PNG_READ_EXPAND_SUPPORTED) - if (!(png_ptr->transformations & PNG_EXPAND)) -#endif - { - /* invert the alpha channel (in tRNS) unless the pixels are - going to be expanded, in which case leave it for later */ - int i; - for (i=0; i<(int)png_ptr->num_trans; i++) - png_ptr->trans[i] = 255 - png_ptr->trans[i]; - } - } -#endif - - } - } -#endif - -#if defined(PNG_READ_BACKGROUND_SUPPORTED) - png_ptr->background_1 = png_ptr->background; -#endif -#if defined(PNG_READ_GAMMA_SUPPORTED) - if (png_ptr->transformations & PNG_GAMMA) - { - png_build_gamma_table(png_ptr); -#if defined(PNG_READ_BACKGROUND_SUPPORTED) - if (png_ptr->transformations & PNG_BACKGROUND) - { - if (color_type == PNG_COLOR_TYPE_PALETTE) - { - int num_palette, i; - png_color back, back_1; - png_colorp palette; - - palette = png_ptr->palette; - num_palette = png_ptr->num_palette; - - if (png_ptr->background_gamma_type == PNG_BACKGROUND_GAMMA_FILE) - { - back.red = png_ptr->gamma_table[png_ptr->background.red]; - back.green = png_ptr->gamma_table[png_ptr->background.green]; - back.blue = png_ptr->gamma_table[png_ptr->background.blue]; - - back_1.red = png_ptr->gamma_to_1[png_ptr->background.red]; - back_1.green = png_ptr->gamma_to_1[png_ptr->background.green]; - back_1.blue = png_ptr->gamma_to_1[png_ptr->background.blue]; - } - else - { - double g, gs; - - switch (png_ptr->background_gamma_type) - { - case PNG_BACKGROUND_GAMMA_SCREEN: - g = (png_ptr->screen_gamma); - gs = 1.0; - break; - case PNG_BACKGROUND_GAMMA_FILE: - g = 1.0 / (png_ptr->gamma); - gs = 1.0 / (png_ptr->gamma * png_ptr->screen_gamma); - break; - case PNG_BACKGROUND_GAMMA_UNIQUE: - g = 1.0 / (png_ptr->background_gamma); - gs = 1.0 / (png_ptr->background_gamma * - png_ptr->screen_gamma); - break; - default: - g = 1.0; /* back_1 */ - gs = 1.0; /* back */ - } - - if ( fabs(gs - 1.0) < PNG_GAMMA_THRESHOLD) - { - back.red = (png_byte)png_ptr->background.red; - back.green = (png_byte)png_ptr->background.green; - back.blue = (png_byte)png_ptr->background.blue; - } - else - { - back.red = (png_byte)(pow( - (double)png_ptr->background.red/255, gs) * 255.0 + .5); - back.green = (png_byte)(pow( - (double)png_ptr->background.green/255, gs) * 255.0 + .5); - back.blue = (png_byte)(pow( - (double)png_ptr->background.blue/255, gs) * 255.0 + .5); - } - - back_1.red = (png_byte)(pow( - (double)png_ptr->background.red/255, g) * 255.0 + .5); - back_1.green = (png_byte)(pow( - (double)png_ptr->background.green/255, g) * 255.0 + .5); - back_1.blue = (png_byte)(pow( - (double)png_ptr->background.blue/255, g) * 255.0 + .5); - } - - for (i = 0; i < num_palette; i++) - { - if (i < (int)png_ptr->num_trans && png_ptr->trans[i] != 0xff) - { - if (png_ptr->trans[i] == 0) - { - palette[i] = back; - } - else /* if (png_ptr->trans[i] != 0xff) */ - { - png_byte v, w; - - v = png_ptr->gamma_to_1[palette[i].red]; - png_composite(w, v, png_ptr->trans[i], back_1.red); - palette[i].red = png_ptr->gamma_from_1[w]; - - v = png_ptr->gamma_to_1[palette[i].green]; - png_composite(w, v, png_ptr->trans[i], back_1.green); - palette[i].green = png_ptr->gamma_from_1[w]; - - v = png_ptr->gamma_to_1[palette[i].blue]; - png_composite(w, v, png_ptr->trans[i], back_1.blue); - palette[i].blue = png_ptr->gamma_from_1[w]; - } - } - else - { - palette[i].red = png_ptr->gamma_table[palette[i].red]; - palette[i].green = png_ptr->gamma_table[palette[i].green]; - palette[i].blue = png_ptr->gamma_table[palette[i].blue]; - } - } - } - /* if (png_ptr->background_gamma_type!=PNG_BACKGROUND_GAMMA_UNKNOWN)*/ - else - /* color_type != PNG_COLOR_TYPE_PALETTE */ - { - double g, gs, m; - - m = (double)(((png_uint_32)1 << png_ptr->bit_depth) - 1); - g = 1.0; - gs = 1.0; - - switch (png_ptr->background_gamma_type) - { - case PNG_BACKGROUND_GAMMA_SCREEN: - g = (png_ptr->screen_gamma); - gs = 1.0; - break; - case PNG_BACKGROUND_GAMMA_FILE: - g = 1.0 / (png_ptr->gamma); - gs = 1.0 / (png_ptr->gamma * png_ptr->screen_gamma); - break; - case PNG_BACKGROUND_GAMMA_UNIQUE: - g = 1.0 / (png_ptr->background_gamma); - gs = 1.0 / (png_ptr->background_gamma * - png_ptr->screen_gamma); - break; - } - - if (color_type & PNG_COLOR_MASK_COLOR) - { - /* RGB or RGBA */ - png_ptr->background_1.red = (png_uint_16)(pow( - (double)png_ptr->background.red / m, g) * m + .5); - png_ptr->background_1.green = (png_uint_16)(pow( - (double)png_ptr->background.green / m, g) * m + .5); - png_ptr->background_1.blue = (png_uint_16)(pow( - (double)png_ptr->background.blue / m, g) * m + .5); - png_ptr->background.red = (png_uint_16)(pow( - (double)png_ptr->background.red / m, gs) * m + .5); - png_ptr->background.green = (png_uint_16)(pow( - (double)png_ptr->background.green / m, gs) * m + .5); - png_ptr->background.blue = (png_uint_16)(pow( - (double)png_ptr->background.blue / m, gs) * m + .5); - } - else - { - /* GRAY or GRAY ALPHA */ - png_ptr->background_1.gray = (png_uint_16)(pow( - (double)png_ptr->background.gray / m, g) * m + .5); - png_ptr->background.gray = (png_uint_16)(pow( - (double)png_ptr->background.gray / m, gs) * m + .5); - } - } - } - else - /* transformation does not include PNG_BACKGROUND */ -#endif - if (color_type == PNG_COLOR_TYPE_PALETTE) - { - int num_palette, i; - png_colorp palette; - - palette = png_ptr->palette; - num_palette = png_ptr->num_palette; - - for (i = 0; i < num_palette; i++) - { - palette[i].red = png_ptr->gamma_table[palette[i].red]; - palette[i].green = png_ptr->gamma_table[palette[i].green]; - palette[i].blue = png_ptr->gamma_table[palette[i].blue]; - } - } - } -#if defined(PNG_READ_BACKGROUND_SUPPORTED) - else -#endif -#endif -#if defined(PNG_READ_BACKGROUND_SUPPORTED) - /* No GAMMA transformation */ - if (png_ptr->transformations & PNG_BACKGROUND && - color_type == PNG_COLOR_TYPE_PALETTE) - { - int i; - png_color back; - png_colorp palette; - - palette = png_ptr->palette; - back.red = (png_byte)png_ptr->background.red; - back.green = (png_byte)png_ptr->background.green; - back.blue = (png_byte)png_ptr->background.blue; - - for (i = 0; i < (int)png_ptr->num_trans; i++) - { - if (png_ptr->trans[i] == 0) - { - palette[i] = back; - } - else if (png_ptr->trans[i] != 0xff) - { - png_composite(palette[i].red, palette[i].red, - png_ptr->trans[i], back.red); - png_composite(palette[i].green, palette[i].green, - png_ptr->trans[i], back.green); - png_composite(palette[i].blue, palette[i].blue, - png_ptr->trans[i], back.blue); - } - } - } -#endif - -#if defined(PNG_READ_SHIFT_SUPPORTED) - if ((png_ptr->transformations & PNG_SHIFT) && - color_type == PNG_COLOR_TYPE_PALETTE) - { - png_uint_16 i; - int sr, sg, sb; - - sr = 8 - png_ptr->sig_bit.red; - if (sr < 0 || sr > 8) - sr = 0; - sg = 8 - png_ptr->sig_bit.green; - if (sg < 0 || sg > 8) - sg = 0; - sb = 8 - png_ptr->sig_bit.blue; - if (sb < 0 || sb > 8) - sb = 0; - for (i = 0; i < png_ptr->num_palette; i++) - { - png_ptr->palette[i].red >>= sr; - png_ptr->palette[i].green >>= sg; - png_ptr->palette[i].blue >>= sb; - } - } -#endif -} - -/* Modify the info structure to reflect the transformations. The - * info should be updated so a PNG file could be written with it, - * assuming the transformations result in valid PNG data. - */ -void -png_read_transform_info(png_structp png_ptr, png_infop info_ptr) -{ - png_debug(1, "in png_read_transform_info\n"); -#if defined(PNG_READ_EXPAND_SUPPORTED) - if (png_ptr->transformations & PNG_EXPAND) - { - if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE) - { - if (png_ptr->num_trans) - info_ptr->color_type = PNG_COLOR_TYPE_RGB_ALPHA; - else - info_ptr->color_type = PNG_COLOR_TYPE_RGB; - info_ptr->bit_depth = 8; - info_ptr->num_trans = 0; - } - else - { - if (png_ptr->num_trans) - info_ptr->color_type |= PNG_COLOR_MASK_ALPHA; - if (info_ptr->bit_depth < 8) - info_ptr->bit_depth = 8; - info_ptr->num_trans = 0; - } - } -#endif - -#if defined(PNG_READ_BACKGROUND_SUPPORTED) - if (png_ptr->transformations & PNG_BACKGROUND) - { - info_ptr->color_type &= ~PNG_COLOR_MASK_ALPHA; - info_ptr->num_trans = 0; - info_ptr->background = png_ptr->background; - } -#endif - -#if defined(PNG_READ_16_TO_8_SUPPORTED) - if ((png_ptr->transformations & PNG_16_TO_8) && info_ptr->bit_depth == 16) - info_ptr->bit_depth = 8; -#endif - -#if defined(PNG_READ_DITHER_SUPPORTED) - if (png_ptr->transformations & PNG_DITHER) - { - if (((info_ptr->color_type == PNG_COLOR_TYPE_RGB) || - (info_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA)) && - png_ptr->palette_lookup && info_ptr->bit_depth == 8) - { - info_ptr->color_type = PNG_COLOR_TYPE_PALETTE; - } - } -#endif - -#if defined(PNG_READ_PACK_SUPPORTED) - if ((png_ptr->transformations & PNG_PACK) && info_ptr->bit_depth < 8) - info_ptr->bit_depth = 8; -#endif - -#if defined(PNG_READ_GRAY_TO_RGB_SUPPORTED) - if (png_ptr->transformations & PNG_GRAY_TO_RGB) - info_ptr->color_type |= PNG_COLOR_MASK_COLOR; -#endif - - if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE) - info_ptr->channels = 1; - else if (info_ptr->color_type & PNG_COLOR_MASK_COLOR) - info_ptr->channels = 3; - else - info_ptr->channels = 1; - -#if defined(PNG_READ_STRIP_ALPHA_SUPPORTED) - if (png_ptr->transformations & PNG_STRIP_ALPHA) - info_ptr->color_type &= ~PNG_COLOR_MASK_ALPHA; -#endif - -#if defined(PNG_READ_FILLER_SUPPORTED) - if ((png_ptr->transformations & PNG_FILLER) && - info_ptr->color_type & PNG_COLOR_TYPE_RGB && - info_ptr->channels == 3) - { - info_ptr->channels = 4; - } -#endif - - if (info_ptr->color_type & PNG_COLOR_MASK_ALPHA) - info_ptr->channels++; - info_ptr->pixel_depth = (png_byte)(info_ptr->channels * - info_ptr->bit_depth); - - info_ptr->rowbytes = ((info_ptr->width * info_ptr->pixel_depth + 7) >> 3); -} - -/* Transform the row. The order of transformations is significant, - * and is very touchy. If you add a transformation, take care to - * decide how it fits in with the other transformations here. - */ -void -png_do_read_transformations(png_structp png_ptr) -{ - png_debug(1, "in png_do_read_transformations\n"); -#if !defined(PNG_USELESS_TESTS_SUPPORTED) - if (png_ptr->row_buf == NULL) - { -#if !defined(PNG_NO_STDIO) - char msg[50]; - - sprintf(msg, "NULL row buffer for row %ld, pass %d", png_ptr->row_number, - png_ptr->pass); - png_error(png_ptr, msg); -#else - png_error(png_ptr, "NULL row buffer"); -#endif - } -#endif - -#if defined(PNG_READ_EXPAND_SUPPORTED) - if (png_ptr->transformations & PNG_EXPAND) - { - if (png_ptr->row_info.color_type == PNG_COLOR_TYPE_PALETTE) - { - png_do_expand_palette(&(png_ptr->row_info), png_ptr->row_buf + 1, - png_ptr->palette, png_ptr->trans, png_ptr->num_trans); - } - else if (png_ptr->transformations & PNG_EXPAND) - { - if (png_ptr->num_trans) - png_do_expand(&(png_ptr->row_info), png_ptr->row_buf + 1, - &(png_ptr->trans_values)); - else - png_do_expand(&(png_ptr->row_info), png_ptr->row_buf + 1, - NULL); - } - } -#endif - -#if defined(PNG_READ_STRIP_ALPHA_SUPPORTED) - if (png_ptr->transformations & PNG_STRIP_ALPHA) - png_do_strip_filler(&(png_ptr->row_info), png_ptr->row_buf + 1, - PNG_FLAG_FILLER_AFTER); -#endif - -#if defined(PNG_READ_BACKGROUND_SUPPORTED) - if ((png_ptr->transformations & PNG_BACKGROUND) && - ((png_ptr->num_trans != 0 ) || - (png_ptr->color_type & PNG_COLOR_MASK_ALPHA))) - png_do_background(&(png_ptr->row_info), png_ptr->row_buf + 1, - &(png_ptr->trans_values), &(png_ptr->background), - &(png_ptr->background_1), - png_ptr->gamma_table, png_ptr->gamma_from_1, - png_ptr->gamma_to_1, png_ptr->gamma_16_table, - png_ptr->gamma_16_from_1, png_ptr->gamma_16_to_1, - png_ptr->gamma_shift); -#endif - -#if defined(PNG_READ_GAMMA_SUPPORTED) - if ((png_ptr->transformations & PNG_GAMMA) && - !(png_ptr->transformations & PNG_BACKGROUND) && - (png_ptr->color_type != PNG_COLOR_TYPE_PALETTE)) - png_do_gamma(&(png_ptr->row_info), png_ptr->row_buf + 1, - png_ptr->gamma_table, png_ptr->gamma_16_table, - png_ptr->gamma_shift); -#endif - -#if defined(PNG_READ_RGB_TO_GRAY_SUPPORTED) - if (png_ptr->transformations & PNG_RGB_TO_GRAY) - png_do_rgb_to_gray(&(png_ptr->row_info), png_ptr->row_buf + 1); -#endif - -#if defined(PNG_READ_16_TO_8_SUPPORTED) - if (png_ptr->transformations & PNG_16_TO_8) - png_do_chop(&(png_ptr->row_info), png_ptr->row_buf + 1); -#endif - -#if defined(PNG_READ_DITHER_SUPPORTED) - if (png_ptr->transformations & PNG_DITHER) - { - png_do_dither((png_row_infop)&(png_ptr->row_info), png_ptr->row_buf + 1, - png_ptr->palette_lookup, png_ptr->dither_index); - if(png_ptr->row_info.rowbytes == (png_uint_32)0) - png_error(png_ptr, "png_do_dither returned rowbytes=0"); - } -#endif - -#if defined(PNG_READ_INVERT_SUPPORTED) - if (png_ptr->transformations & PNG_INVERT_MONO) - png_do_invert(&(png_ptr->row_info), png_ptr->row_buf + 1); -#endif - -#if defined(PNG_READ_SHIFT_SUPPORTED) - if (png_ptr->transformations & PNG_SHIFT) - png_do_unshift(&(png_ptr->row_info), png_ptr->row_buf + 1, - &(png_ptr->shift)); -#endif - -#if defined(PNG_READ_PACK_SUPPORTED) - if (png_ptr->transformations & PNG_PACK) - png_do_unpack(&(png_ptr->row_info), png_ptr->row_buf + 1); -#endif - -#if defined(PNG_READ_BGR_SUPPORTED) - if (png_ptr->transformations & PNG_BGR) - png_do_bgr(&(png_ptr->row_info), png_ptr->row_buf + 1); -#endif - -#if defined(PNG_READ_PACKSWAP_SUPPORTED) - if (png_ptr->transformations & PNG_PACKSWAP) - png_do_packswap(&(png_ptr->row_info), png_ptr->row_buf + 1); -#endif - -#if defined(PNG_READ_GRAY_TO_RGB_SUPPORTED) - if (png_ptr->transformations & PNG_GRAY_TO_RGB) - png_do_gray_to_rgb(&(png_ptr->row_info), png_ptr->row_buf + 1); -#endif - -#if defined(PNG_READ_FILLER_SUPPORTED) - if (png_ptr->transformations & PNG_FILLER) - png_do_read_filler(&(png_ptr->row_info), png_ptr->row_buf + 1, - (png_uint_32)png_ptr->filler, png_ptr->flags); -#endif - -#if defined(PNG_READ_INVERT_ALPHA_SUPPORTED) - if (png_ptr->transformations & PNG_INVERT_ALPHA) - png_do_read_invert_alpha(&(png_ptr->row_info), png_ptr->row_buf + 1); -#endif - -#if defined(PNG_READ_SWAP_ALPHA_SUPPORTED) - if (png_ptr->transformations & PNG_SWAP_ALPHA) - png_do_read_swap_alpha(&(png_ptr->row_info), png_ptr->row_buf + 1); -#endif - -#if defined(PNG_READ_SWAP_SUPPORTED) - if (png_ptr->transformations & PNG_SWAP_BYTES) - png_do_swap(&(png_ptr->row_info), png_ptr->row_buf + 1); -#endif - -#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) - if (png_ptr->transformations & PNG_USER_TRANSFORM) - if(png_ptr->read_user_transform_fn != NULL) - (*(png_ptr->read_user_transform_fn)) /* user read transform function */ - (png_ptr, /* png_ptr */ - &(png_ptr->row_info), /* row_info: */ - /* png_uint_32 width; width of row */ - /* png_uint_32 rowbytes; number of bytes in row */ - /* png_byte color_type; color type of pixels */ - /* png_byte bit_depth; bit depth of samples */ - /* png_byte channels; number of channels (1-4) */ - /* png_byte pixel_depth; bits per pixel (depth*channels) */ - png_ptr->row_buf + 1); /* start of pixel data for row */ -#endif - -} - -#if defined(PNG_READ_PACK_SUPPORTED) -/* Unpack pixels of 1, 2, or 4 bits per pixel into 1 byte per pixel, - * without changing the actual values. Thus, if you had a row with - * a bit depth of 1, you would end up with bytes that only contained - * the numbers 0 or 1. If you would rather they contain 0 and 255, use - * png_do_shift() after this. - */ -void -png_do_unpack(png_row_infop row_info, png_bytep row) -{ - png_debug(1, "in png_do_unpack\n"); -#if defined(PNG_USELESS_TESTS_SUPPORTED) - if (row != NULL && row_info != NULL && row_info->bit_depth < 8) -#else - if (row_info->bit_depth < 8) -#endif - { - png_uint_32 shift, i; - png_bytep sp, dp; - - switch (row_info->bit_depth) - { - case 1: - { - sp = row + (png_size_t)((row_info->width - 1) >> 3); - dp = row + (png_size_t)row_info->width - 1; - shift = 7 - (int)((row_info->width + 7) & 7); - for (i = 0; i < row_info->width; i++) - { - *dp = (png_byte)((*sp >> shift) & 0x1); - if (shift == 7) - { - shift = 0; - sp--; - } - else - shift++; - - dp--; - } - break; - } - case 2: - { - - sp = row + (png_size_t)((row_info->width - 1) >> 2); - dp = row + (png_size_t)row_info->width - 1; - shift = (int)((3 - ((row_info->width + 3) & 3)) << 1); - for (i = 0; i < row_info->width; i++) - { - *dp = (png_byte)((*sp >> shift) & 0x3); - if (shift == 6) - { - shift = 0; - sp--; - } - else - shift += 2; - - dp--; - } - break; - } - case 4: - { - sp = row + (png_size_t)((row_info->width - 1) >> 1); - dp = row + (png_size_t)row_info->width - 1; - shift = (int)((1 - ((row_info->width + 1) & 1)) << 2); - for (i = 0; i < row_info->width; i++) - { - *dp = (png_byte)((*sp >> shift) & 0xf); - if (shift == 4) - { - shift = 0; - sp--; - } - else - shift = 4; - - dp--; - } - break; - } - } - row_info->bit_depth = 8; - row_info->pixel_depth = (png_byte)(8 * row_info->channels); - row_info->rowbytes = row_info->width * row_info->channels; - } -} -#endif - -#if defined(PNG_READ_SHIFT_SUPPORTED) -/* Reverse the effects of png_do_shift. This routine merely shifts the - * pixels back to their significant bits values. Thus, if you have - * a row of bit depth 8, but only 5 are significant, this will shift - * the values back to 0 through 31. - */ -void -png_do_unshift(png_row_infop row_info, png_bytep row, png_color_8p sig_bits) -{ - png_debug(1, "in png_do_unshift\n"); - if ( -#if defined(PNG_USELESS_TESTS_SUPPORTED) - row != NULL && row_info != NULL && sig_bits != NULL && -#endif - row_info->color_type != PNG_COLOR_TYPE_PALETTE) - { - int shift[4]; - int channels, c; - png_uint_16 value; - - channels = 0; - if (row_info->color_type & PNG_COLOR_MASK_COLOR) - { - shift[channels++] = row_info->bit_depth - sig_bits->red; - shift[channels++] = row_info->bit_depth - sig_bits->green; - shift[channels++] = row_info->bit_depth - sig_bits->blue; - } - else - { - shift[channels++] = row_info->bit_depth - sig_bits->gray; - } - if (row_info->color_type & PNG_COLOR_MASK_ALPHA) - { - shift[channels++] = row_info->bit_depth - sig_bits->alpha; - } - - value = 0; - - for (c = 0; c < channels; c++) - { - if (shift[c] <= 0) - shift[c] = 0; - else - value = 1; - } - - if (!value) - return; - - switch (row_info->bit_depth) - { - case 2: - { - png_bytep bp; - png_uint_32 i; - - for (bp = row, i = 0; i < row_info->rowbytes; i++, bp++) - { - *bp >>= 1; - *bp &= 0x55; - } - break; - } - case 4: - { - png_bytep bp; - png_byte mask; - png_uint_32 i; - - mask = (png_byte)(((int)0xf0 >> shift[0]) & (int)0xf0) | - (png_byte)((int)0xf >> shift[0]); - for (bp = row, i = 0; i < row_info->rowbytes; i++, bp++) - { - *bp >>= shift[0]; - *bp &= mask; - } - break; - } - case 8: - { - png_bytep bp; - png_uint_32 i; - - for (bp = row, i = 0; i < row_info->width; i++) - { - for (c = 0; c < (int)row_info->channels; c++, bp++) - { - *bp >>= shift[c]; - } - } - break; - } - case 16: - { - png_bytep bp; - png_size_t i; - - for (bp = row, i = 0; i < row_info->width; i++) - { - for (c = 0; c < (int)row_info->channels; c++, bp += 2) - { - value = (png_uint_16)((*bp << 8) + *(bp + 1)); - value >>= shift[c]; - *bp = (png_byte)(value >> 8); - *(bp + 1) = (png_byte)(value & 0xff); - } - } - break; - } - } - } -} -#endif - -#if defined(PNG_READ_16_TO_8_SUPPORTED) -/* chop rows of bit depth 16 down to 8 */ -void -png_do_chop(png_row_infop row_info, png_bytep row) -{ - png_debug(1, "in png_do_chop\n"); -#if defined(PNG_USELESS_TESTS_SUPPORTED) - if (row != NULL && row_info != NULL && row_info->bit_depth == 16) -#else - if (row_info->bit_depth == 16) -#endif - { - png_bytep sp, dp; - png_uint_32 i; - - sp = row; - dp = row; - for (i = 0; i < row_info->width * row_info->channels; i++, sp += 2, dp++) - { -#if defined(PNG_READ_16_TO_8_ACCURATE_SCALE_SUPPORTED) - /* This does a more accurate scaling of the 16-bit color - * value, rather than a simple low-byte truncation. - * - * What the ideal calculation should be: - *dp = (((((png_uint_32)(*sp) << 8) | - (png_uint_32)(*(sp + 1))) * 255 + 127) / (png_uint_32)65535L; - - - * GRR: no, I think this is what it really should be: - *dp = (((((png_uint_32)(*sp) << 8) | - (png_uint_32)(*(sp + 1))) + 128L) / (png_uint_32)257L; - - * GRR: here's the exact calculation with shifts: - temp = (((png_uint_32)(*sp) << 8) | (png_uint_32)(*(sp + 1))) + 128L; - *dp = (temp - (temp >> 8)) >> 8; - - - * Approximate calculation with shift/add instead of multiply/divide: - *dp = ((((png_uint_32)(*sp) << 8) | - (png_uint_32)((int)(*(sp + 1)) - *sp)) + 128) >> 8; - - * What we actually do to avoid extra shifting and conversion: */ - *dp = *sp + ((((int)(*(sp + 1)) - *sp) > 128) ? 1 : 0); -#else - *dp = *sp; -#endif - } - row_info->bit_depth = 8; - row_info->pixel_depth = (png_byte)(8 * row_info->channels); - row_info->rowbytes = row_info->width * row_info->channels; - } -} -#endif - -#if defined(PNG_READ_SWAP_ALPHA_SUPPORTED) -void -png_do_read_swap_alpha(png_row_infop row_info, png_bytep row) -{ - png_debug(1, "in png_do_read_swap_alpha\n"); -#if defined(PNG_USELESS_TESTS_SUPPORTED) - if (row != NULL && row_info != NULL) -#endif - { - if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA) - { - /* This converts from RGBA to ARGB */ - if (row_info->bit_depth == 8) - { - png_bytep sp, dp; - png_byte save; - png_uint_32 i; - - for (i = 0, sp = dp = row + row_info->rowbytes; - i < row_info->width; i++) - { - save = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = save; - } - } - /* This converts from RRGGBBAA to AARRGGBB */ - else - { - png_bytep sp, dp; - png_byte save[2]; - png_uint_32 i; - - for (i = 0, sp = dp = row + row_info->rowbytes; - i < row_info->width; i++) - { - save[0] = *(--sp); - save[1] = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = save[0]; - *(--dp) = save[1]; - } - } - } - else if (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) - { - /* This converts from GA to AG */ - if (row_info->bit_depth == 8) - { - png_bytep sp, dp; - png_byte save; - png_uint_32 i; - - for (i = 0, sp = dp = row + row_info->rowbytes; - i < row_info->width; i++) - { - save = *(--sp); - *(--dp) = *(--sp); - *(--dp) = save; - } - } - /* This converts from GGAA to AAGG */ - else - { - png_bytep sp, dp; - png_byte save[2]; - png_uint_32 i; - - for (i = 0, sp = dp = row + row_info->rowbytes; - i < row_info->width; i++) - { - save[0] = *(--sp); - save[1] = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = save[0]; - *(--dp) = save[1]; - } - } - } - } -} -#endif - -#if defined(PNG_READ_INVERT_ALPHA_SUPPORTED) -void -png_do_read_invert_alpha(png_row_infop row_info, png_bytep row) -{ - png_debug(1, "in png_do_read_invert_alpha\n"); -#if defined(PNG_USELESS_TESTS_SUPPORTED) - if (row != NULL && row_info != NULL) -#endif - { - if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA) - { - /* This inverts the alpha channel in RGBA */ - if (row_info->bit_depth == 8) - { - png_bytep sp, dp; - png_uint_32 i; - - for (i = 0, sp = dp = row + row_info->rowbytes; - i < row_info->width; i++) - { - *(--dp) = 255 - *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - } - } - /* This inverts the alpha channel in RRGGBBAA */ - else - { - png_bytep sp, dp; - png_uint_32 i; - - for (i = 0, sp = dp = row + row_info->rowbytes; - i < row_info->width; i++) - { - *(--dp) = 255 - *(--sp); - *(--dp) = 255 - *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - } - } - } - else if (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) - { - /* This inverts the alpha channel in GA */ - if (row_info->bit_depth == 8) - { - png_bytep sp, dp; - png_uint_32 i; - - for (i = 0, sp = dp = row + row_info->rowbytes; - i < row_info->width; i++) - { - *(--dp) = 255 - *(--sp); - *(--dp) = *(--sp); - } - } - /* This inverts the alpha channel in GGAA */ - else - { - png_bytep sp, dp; - png_uint_32 i; - - for (i = 0, sp = dp = row + row_info->rowbytes; - i < row_info->width; i++) - { - *(--dp) = 255 - *(--sp); - *(--dp) = 255 - *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - } - } - } - } -} -#endif - -#if defined(PNG_READ_FILLER_SUPPORTED) -/* Add filler channel if we have RGB color */ -void -png_do_read_filler(png_row_infop row_info, png_bytep row, - png_uint_32 filler, png_uint_32 flags) -{ - png_bytep sp, dp; - png_uint_32 i; - - png_debug(1, "in png_do_read_filler\n"); - if ( -#if defined(PNG_USELESS_TESTS_SUPPORTED) - row != NULL && row_info != NULL && -#endif - row_info->color_type == PNG_COLOR_TYPE_RGB && row_info->bit_depth == 8) - { - /* This changes the data from RGB to RGBX */ - if (flags & PNG_FLAG_FILLER_AFTER) - { - for (i = 1, sp = row + (png_size_t)row_info->width * 3, - dp = row + (png_size_t)row_info->width * 4; - i < row_info->width; - i++) - { - *(--dp) = (png_byte)filler; - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - } - *(--dp) = (png_byte)filler; - row_info->channels = 4; - row_info->pixel_depth = 32; - row_info->rowbytes = row_info->width * 4; - } - /* This changes the data from RGB to XRGB */ - else - { - for (i = 0, sp = row + (png_size_t)row_info->width * 3, - dp = row + (png_size_t)row_info->width * 4; - i < row_info->width; - i++) - { - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = *(--sp); - *(--dp) = (png_byte)filler; - } - row_info->channels = 4; - row_info->pixel_depth = 32; - row_info->rowbytes = row_info->width * 4; - } - } -} -#endif - -#if defined(PNG_READ_GRAY_TO_RGB_SUPPORTED) -/* expand grayscale files to RGB, with or without alpha */ -void -png_do_gray_to_rgb(png_row_infop row_info, png_bytep row) -{ - png_bytep sp, dp; - png_uint_32 i; - - png_debug(1, "in png_do_gray_to_rgb\n"); - if (row_info->bit_depth >= 8 && -#if defined(PNG_USELESS_TESTS_SUPPORTED) - row != NULL && row_info != NULL && -#endif - !(row_info->color_type & PNG_COLOR_MASK_COLOR)) - { - if (row_info->color_type == PNG_COLOR_TYPE_GRAY) - { - if (row_info->bit_depth == 8) - { - for (i = 0, sp = row + (png_size_t)row_info->width - 1, - dp = row + (png_size_t)row_info->width * 3 - 1; - i < row_info->width; - i++) - { - *(dp--) = *sp; - *(dp--) = *sp; - *(dp--) = *sp; - sp--; - } - } - else - { - for (i = 0, sp = row + (png_size_t)row_info->width * 2 - 1, - dp = row + (png_size_t)row_info->width * 6 - 1; - i < row_info->width; - i++) - { - *(dp--) = *sp; - *(dp--) = *(sp - 1); - *(dp--) = *sp; - *(dp--) = *(sp - 1); - *(dp--) = *sp; - *(dp--) = *(sp - 1); - sp--; - sp--; - } - } - } - else if (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) - { - if (row_info->bit_depth == 8) - { - for (i = 0, sp = row + (png_size_t)row_info->width * 2 - 1, - dp = row + (png_size_t)row_info->width * 4 - 1; - i < row_info->width; - i++) - { - *(dp--) = *(sp--); - *(dp--) = *sp; - *(dp--) = *sp; - *(dp--) = *sp; - sp--; - } - } - else - { - for (i = 0, sp = row + (png_size_t)row_info->width * 4 - 1, - dp = row + (png_size_t)row_info->width * 8 - 1; - i < row_info->width; - i++) - { - *(dp--) = *(sp--); - *(dp--) = *(sp--); - *(dp--) = *sp; - *(dp--) = *(sp - 1); - *(dp--) = *sp; - *(dp--) = *(sp - 1); - *(dp--) = *sp; - *(dp--) = *(sp - 1); - sp--; - sp--; - } - } - } - row_info->channels += (png_byte)2; - row_info->color_type |= PNG_COLOR_MASK_COLOR; - row_info->pixel_depth = (png_byte)(row_info->channels * - row_info->bit_depth); - row_info->rowbytes = ((row_info->width * - row_info->pixel_depth + 7) >> 3); - } -} -#endif - -/* Build a grayscale palette. Palette is assumed to be 1 << bit_depth - * large of png_color. This lets grayscale images be treated as - * paletted. Most useful for gamma correction and simplification - * of code. - */ -void -png_build_grayscale_palette(int bit_depth, png_colorp palette) -{ - int num_palette; - int color_inc; - int i; - int v; - - png_debug(1, "in png_do_build_grayscale_palette\n"); - if (palette == NULL) - return; - - switch (bit_depth) - { - case 1: - num_palette = 2; - color_inc = 0xff; - break; - case 2: - num_palette = 4; - color_inc = 0x55; - break; - case 4: - num_palette = 16; - color_inc = 0x11; - break; - case 8: - num_palette = 256; - color_inc = 1; - break; - default: - num_palette = 0; - color_inc = 0; - break; - } - - for (i = 0, v = 0; i < num_palette; i++, v += color_inc) - { - palette[i].red = (png_byte)v; - palette[i].green = (png_byte)v; - palette[i].blue = (png_byte)v; - } -} - -/* This function is currently unused. Do we really need it? */ -#if defined(PNG_READ_DITHER_SUPPORTED) && defined(PNG_CORRECT_PALETTE_SUPPORTED) -void -png_correct_palette(png_structp png_ptr, png_colorp palette, - int num_palette) -{ - png_debug(1, "in png_correct_palette\n"); -#if defined(PNG_READ_BACKGROUND_SUPPORTED) && defined(PNG_READ_GAMMA_SUPPORTED) - if ((png_ptr->transformations & (PNG_GAMMA)) && - (png_ptr->transformations & (PNG_BACKGROUND))) - { - png_color back, back_1; - - if (png_ptr->background_gamma_type == PNG_BACKGROUND_GAMMA_FILE) - { - back.red = png_ptr->gamma_table[png_ptr->background.red]; - back.green = png_ptr->gamma_table[png_ptr->background.green]; - back.blue = png_ptr->gamma_table[png_ptr->background.blue]; - - back_1.red = png_ptr->gamma_to_1[png_ptr->background.red]; - back_1.green = png_ptr->gamma_to_1[png_ptr->background.green]; - back_1.blue = png_ptr->gamma_to_1[png_ptr->background.blue]; - } - else - { - double g; - - g = 1.0 / (png_ptr->background_gamma * png_ptr->screen_gamma); - - if (png_ptr->background_gamma_type == PNG_BACKGROUND_GAMMA_SCREEN || - fabs(g - 1.0) < PNG_GAMMA_THRESHOLD) - { - back.red = png_ptr->background.red; - back.green = png_ptr->background.green; - back.blue = png_ptr->background.blue; - } - else - { - back.red = - (png_byte)(pow((double)png_ptr->background.red/255, g) * - 255.0 + 0.5); - back.green = - (png_byte)(pow((double)png_ptr->background.green/255, g) * - 255.0 + 0.5); - back.blue = - (png_byte)(pow((double)png_ptr->background.blue/255, g) * - 255.0 + 0.5); - } - - g = 1.0 / png_ptr->background_gamma; - - back_1.red = - (png_byte)(pow((double)png_ptr->background.red/255, g) * - 255.0 + 0.5); - back_1.green = - (png_byte)(pow((double)png_ptr->background.green/255, g) * - 255.0 + 0.5); - back_1.blue = - (png_byte)(pow((double)png_ptr->background.blue/255, g) * - 255.0 + 0.5); - } - - if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) - { - png_uint_32 i; - - for (i = 0; i < (png_uint_32)num_palette; i++) - { - if (i < png_ptr->num_trans && png_ptr->trans[i] == 0) - { - palette[i] = back; - } - else if (i < png_ptr->num_trans && png_ptr->trans[i] != 0xff) - { - png_byte v, w; - - v = png_ptr->gamma_to_1[png_ptr->palette[i].red]; - png_composite(w, v, png_ptr->trans[i], back_1.red); - palette[i].red = png_ptr->gamma_from_1[w]; - - v = png_ptr->gamma_to_1[png_ptr->palette[i].green]; - png_composite(w, v, png_ptr->trans[i], back_1.green); - palette[i].green = png_ptr->gamma_from_1[w]; - - v = png_ptr->gamma_to_1[png_ptr->palette[i].blue]; - png_composite(w, v, png_ptr->trans[i], back_1.blue); - palette[i].blue = png_ptr->gamma_from_1[w]; - } - else - { - palette[i].red = png_ptr->gamma_table[palette[i].red]; - palette[i].green = png_ptr->gamma_table[palette[i].green]; - palette[i].blue = png_ptr->gamma_table[palette[i].blue]; - } - } - } - else - { - int i; - - for (i = 0; i < num_palette; i++) - { - if (palette[i].red == (png_byte)png_ptr->trans_values.gray) - { - palette[i] = back; - } - else - { - palette[i].red = png_ptr->gamma_table[palette[i].red]; - palette[i].green = png_ptr->gamma_table[palette[i].green]; - palette[i].blue = png_ptr->gamma_table[palette[i].blue]; - } - } - } - } - else -#endif -#if defined(PNG_READ_GAMMA_SUPPORTED) - if (png_ptr->transformations & PNG_GAMMA) - { - int i; - - for (i = 0; i < num_palette; i++) - { - palette[i].red = png_ptr->gamma_table[palette[i].red]; - palette[i].green = png_ptr->gamma_table[palette[i].green]; - palette[i].blue = png_ptr->gamma_table[palette[i].blue]; - } - } -#if defined(PNG_READ_BACKGROUND_SUPPORTED) - else -#endif -#endif -#if defined(PNG_READ_BACKGROUND_SUPPORTED) - if (png_ptr->transformations & PNG_BACKGROUND) - { - if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) - { - png_color back; - - back.red = (png_byte)png_ptr->background.red; - back.green = (png_byte)png_ptr->background.green; - back.blue = (png_byte)png_ptr->background.blue; - - for (i = 0; i < (int)png_ptr->num_trans; i++) - { - if (png_ptr->trans[i] == 0) - { - palette[i].red = back.red; - palette[i].green = back.green; - palette[i].blue = back.blue; - } - else if (png_ptr->trans[i] != 0xff) - { - png_composite(palette[i].red, png_ptr->palette[i].red, - png_ptr->trans[i], back.red); - png_composite(palette[i].green, png_ptr->palette[i].green, - png_ptr->trans[i], back.green); - png_composite(palette[i].blue, png_ptr->palette[i].blue, - png_ptr->trans[i], back.blue); - } - } - } - else /* assume grayscale palette (what else could it be?) */ - { - int i; - - for (i = 0; i < num_palette; i++) - { - if (i == (png_byte)png_ptr->trans_values.gray) - { - palette[i].red = (png_byte)png_ptr->background.red; - palette[i].green = (png_byte)png_ptr->background.green; - palette[i].blue = (png_byte)png_ptr->background.blue; - } - } - } - } -#endif -} -#endif - -#if defined(PNG_READ_BACKGROUND_SUPPORTED) -/* Replace any alpha or transparency with the supplied background color. - * "background" is already in the screen gamma, while "background_1" is - * at a gamma of 1.0. Paletted files have already been taken care of. - */ -void -png_do_background(png_row_infop row_info, png_bytep row, - png_color_16p trans_values, png_color_16p background, - png_color_16p background_1, - png_bytep gamma_table, png_bytep gamma_from_1, png_bytep gamma_to_1, - png_uint_16pp gamma_16, png_uint_16pp gamma_16_from_1, - png_uint_16pp gamma_16_to_1, int gamma_shift) -{ - png_bytep sp, dp; - png_uint_32 i; - int shift; - - png_debug(1, "in png_do_background\n"); - if (background != NULL && -#if defined(PNG_USELESS_TESTS_SUPPORTED) - row != NULL && row_info != NULL && -#endif - (!(row_info->color_type & PNG_COLOR_MASK_ALPHA) || - (row_info->color_type != PNG_COLOR_TYPE_PALETTE && trans_values))) - { - switch (row_info->color_type) - { - case PNG_COLOR_TYPE_GRAY: - { - switch (row_info->bit_depth) - { - case 1: - { - sp = row; - shift = 7; - for (i = 0; i < row_info->width; i++) - { - if ((png_uint_16)((*sp >> shift) & 0x1) - == trans_values->gray) - { - *sp &= (png_byte)((0x7f7f >> (7 - shift)) & 0xff); - *sp |= (png_byte)(background->gray << shift); - } - if (!shift) - { - shift = 7; - sp++; - } - else - shift--; - } - break; - } - case 2: - { - sp = row; - shift = 6; - for (i = 0; i < row_info->width; i++) - { - if ((png_uint_16)((*sp >> shift) & 0x3) - == trans_values->gray) - { - *sp &= (png_byte)((0x3f3f >> (6 - shift)) & 0xff); - *sp |= (png_byte)(background->gray << shift); - } - if (!shift) - { - shift = 6; - sp++; - } - else - shift -= 2; - } - break; - } - case 4: - { - sp = row; - shift = 4; - for (i = 0; i < row_info->width; i++) - { - if ((png_uint_16)((*sp >> shift) & 0xf) - == trans_values->gray) - { - *sp &= (png_byte)((0xf0f >> (4 - shift)) & 0xff); - *sp |= (png_byte)(background->gray << shift); - } - if (!shift) - { - shift = 4; - sp++; - } - else - shift -= 4; - } - break; - } - case 8: - { -#if defined(PNG_READ_GAMMA_SUPPORTED) - if (gamma_table != NULL) - { - for (i = 0, sp = row; i < row_info->width; i++, sp++) - { - if (*sp == trans_values->gray) - { - *sp = (png_byte)background->gray; - } - else - { - *sp = gamma_table[*sp]; - } - } - } - else -#endif - { - for (i = 0, sp = row; i < row_info->width; i++, sp++) - { - if (*sp == trans_values->gray) - { - *sp = (png_byte)background->gray; - } - } - } - break; - } - case 16: - { -#if defined(PNG_READ_GAMMA_SUPPORTED) - if (gamma_16 != NULL) - { - for (i = 0, sp = row; i < row_info->width; i++, sp += 2) - { - png_uint_16 v; - - v = ((png_uint_16)(*sp) << 8) + *(sp + 1); - if (v == trans_values->gray) - { - /* background is already in screen gamma */ - *sp = (png_byte)((background->gray >> 8) & 0xff); - *(sp + 1) = (png_byte)(background->gray & 0xff); - } - else - { - v = gamma_16[*(sp + 1) >> gamma_shift][*sp]; - *sp = (png_byte)((v >> 8) & 0xff); - *(sp + 1) = (png_byte)(v & 0xff); - } - } - } - else -#endif - { - for (i = 0, sp = row; i < row_info->width; i++, sp += 2) - { - png_uint_16 v; - - v = ((png_uint_16)(*sp) << 8) + *(sp + 1); - if (v == trans_values->gray) - { - *sp = (png_byte)((background->gray >> 8) & 0xff); - *(sp + 1) = (png_byte)(background->gray & 0xff); - } - } - } - break; - } - } - break; - } - case PNG_COLOR_TYPE_RGB: - { - if (row_info->bit_depth == 8) - { -#if defined(PNG_READ_GAMMA_SUPPORTED) - if (gamma_table != NULL) - { - for (i = 0, sp = row; i < row_info->width; i++, sp += 3) - { - if (*sp == trans_values->red && - *(sp + 1) == trans_values->green && - *(sp + 2) == trans_values->blue) - { - *sp = (png_byte)background->red; - *(sp + 1) = (png_byte)background->green; - *(sp + 2) = (png_byte)background->blue; - } - else - { - *sp = gamma_table[*sp]; - *(sp + 1) = gamma_table[*(sp + 1)]; - *(sp + 2) = gamma_table[*(sp + 2)]; - } - } - } - else -#endif - { - for (i = 0, sp = row; i < row_info->width; i++, sp += 3) - { - if (*sp == trans_values->red && - *(sp + 1) == trans_values->green && - *(sp + 2) == trans_values->blue) - { - *sp = (png_byte)background->red; - *(sp + 1) = (png_byte)background->green; - *(sp + 2) = (png_byte)background->blue; - } - } - } - } - else /* if (row_info->bit_depth == 16) */ - { -#if defined(PNG_READ_GAMMA_SUPPORTED) - if (gamma_16 != NULL) - { - for (i = 0, sp = row; i < row_info->width; i++, sp += 6) - { - png_uint_16 r, g, b; - - r = ((png_uint_16)(*sp) << 8) + *(sp + 1); - g = ((png_uint_16)(*(sp + 2)) << 8) + *(sp + 3); - b = ((png_uint_16)(*(sp + 4)) << 8) + *(sp + 5); - if (r == trans_values->red && g == trans_values->green && - b == trans_values->blue) - { - /* background is already in screen gamma */ - *sp = (png_byte)((background->red >> 8) & 0xff); - *(sp + 1) = (png_byte)(background->red & 0xff); - *(sp + 2) = (png_byte)((background->green >> 8) & 0xff); - *(sp + 3) = (png_byte)(background->green & 0xff); - *(sp + 4) = (png_byte)((background->blue >> 8) & 0xff); - *(sp + 5) = (png_byte)(background->blue & 0xff); - } - else - { - png_uint_16 v; - v = gamma_16[*(sp + 1) >> gamma_shift][*sp]; - *sp = (png_byte)((v >> 8) & 0xff); - *(sp + 1) = (png_byte)(v & 0xff); - v = gamma_16[*(sp + 3) >> gamma_shift][*(sp + 2)]; - *(sp + 2) = (png_byte)((v >> 8) & 0xff); - *(sp + 3) = (png_byte)(v & 0xff); - v = gamma_16[*(sp + 5) >> gamma_shift][*(sp + 4)]; - *(sp + 4) = (png_byte)((v >> 8) & 0xff); - *(sp + 5) = (png_byte)(v & 0xff); - } - } - } - else -#endif - { - for (i = 0, sp = row; i < row_info->width; i++, sp += 6) - { - png_uint_16 r, g, b; - - r = ((png_uint_16)(*sp) << 8) + *(sp + 1); - g = ((png_uint_16)(*(sp + 2)) << 8) + *(sp + 3); - b = ((png_uint_16)(*(sp + 4)) << 8) + *(sp + 5); - if (r == trans_values->red && g == trans_values->green && - b == trans_values->blue) - { - *sp = (png_byte)((background->red >> 8) & 0xff); - *(sp + 1) = (png_byte)(background->red & 0xff); - *(sp + 2) = (png_byte)((background->green >> 8) & 0xff); - *(sp + 3) = (png_byte)(background->green & 0xff); - *(sp + 4) = (png_byte)((background->blue >> 8) & 0xff); - *(sp + 5) = (png_byte)(background->blue & 0xff); - } - } - } - } - break; - } - case PNG_COLOR_TYPE_GRAY_ALPHA: - { - if (row_info->bit_depth == 8) - { -#if defined(PNG_READ_GAMMA_SUPPORTED) - if (gamma_to_1 != NULL && gamma_from_1 != NULL && - gamma_table != NULL) - { - for (i = 0, sp = row, dp = row; - i < row_info->width; i++, sp += 2, dp++) - { - png_uint_16 a; - - a = *(sp + 1); - if (a == 0xff) - { - *dp = gamma_table[*sp]; - } - else if (a == 0) - { - /* background is already in screen gamma */ - *dp = (png_byte)background->gray; - } - else - { - png_byte v, w; - - v = gamma_to_1[*sp]; - png_composite(w, v, a, background_1->gray); - *dp = gamma_from_1[w]; - } - } - } - else -#endif - { - for (i = 0, sp = row, dp = row; - i < row_info->width; i++, sp += 2, dp++) - { - png_byte a; - - a = *(sp + 1); - if (a == 0xff) - { - *dp = *sp; - } - else if (a == 0) - { - *dp = (png_byte)background->gray; - } - else - { - png_composite(*dp, *sp, a, background_1->gray); - } - } - } - } - else /* if (png_ptr->bit_depth == 16) */ - { -#if defined(PNG_READ_GAMMA_SUPPORTED) - if (gamma_16 != NULL && gamma_16_from_1 != NULL && - gamma_16_to_1 != NULL) - { - for (i = 0, sp = row, dp = row; - i < row_info->width; i++, sp += 4, dp += 2) - { - png_uint_16 a; - - a = ((png_uint_16)(*(sp + 2)) << 8) + *(sp + 3); - if (a == (png_uint_16)0xffff) - { - png_uint_16 v; - - v = gamma_16[*(sp + 1) >> gamma_shift][*sp]; - *dp = (png_byte)((v >> 8) & 0xff); - *(dp + 1) = (png_byte)(v & 0xff); - } - else if (a == 0) - { - /* background is already in screen gamma */ - *dp = (png_byte)((background->gray >> 8) & 0xff); - *(dp + 1) = (png_byte)(background->gray & 0xff); - } - else - { - png_uint_16 g, v, w; - - g = gamma_16_to_1[*(sp + 1) >> gamma_shift][*sp]; - png_composite_16(v, g, a, background_1->gray); - w = gamma_16_from_1[(v&0xff) >> gamma_shift][v >> 8]; - *dp = (png_byte)((w >> 8) & 0xff); - *(dp + 1) = (png_byte)(w & 0xff); - } - } - } - else -#endif - { - for (i = 0, sp = row, dp = row; - i < row_info->width; i++, sp += 4, dp += 2) - { - png_uint_16 a; - - a = ((png_uint_16)(*(sp + 2)) << 8) + *(sp + 3); - if (a == (png_uint_16)0xffff) - { - png_memcpy(dp, sp, 2); - } - else if (a == 0) - { - *dp = (png_byte)((background->gray >> 8) & 0xff); - *(dp + 1) = (png_byte)(background->gray & 0xff); - } - else - { - png_uint_16 g, v; - - g = ((png_uint_16)(*sp) << 8) + *(sp + 1); - png_composite_16(v, g, a, background_1->gray); - *dp = (png_byte)((v >> 8) & 0xff); - *(dp + 1) = (png_byte)(v & 0xff); - } - } - } - } - break; - } - case PNG_COLOR_TYPE_RGB_ALPHA: - { - if (row_info->bit_depth == 8) - { -#if defined(PNG_READ_GAMMA_SUPPORTED) - if (gamma_to_1 != NULL && gamma_from_1 != NULL && - gamma_table != NULL) - { - for (i = 0, sp = row, dp = row; - i < row_info->width; i++, sp += 4, dp += 3) - { - png_byte a; - - a = *(sp + 3); - if (a == 0xff) - { - *dp = gamma_table[*sp]; - *(dp + 1) = gamma_table[*(sp + 1)]; - *(dp + 2) = gamma_table[*(sp + 2)]; - } - else if (a == 0) - { - /* background is already in screen gamma */ - *dp = (png_byte)background->red; - *(dp + 1) = (png_byte)background->green; - *(dp + 2) = (png_byte)background->blue; - } - else - { - png_byte v, w; - - v = gamma_to_1[*sp]; - png_composite(w, v, a, background_1->red); - *dp = gamma_from_1[w]; - v = gamma_to_1[*(sp + 1)]; - png_composite(w, v, a, background_1->green); - *(dp + 1) = gamma_from_1[w]; - v = gamma_to_1[*(sp + 2)]; - png_composite(w, v, a, background_1->blue); - *(dp + 2) = gamma_from_1[w]; - } - } - } - else -#endif - { - for (i = 0, sp = row, dp = row; - i < row_info->width; i++, sp += 4, dp += 3) - { - png_byte a; - - a = *(sp + 3); - if (a == 0xff) - { - *dp = *sp; - *(dp + 1) = *(sp + 1); - *(dp + 2) = *(sp + 2); - } - else if (a == 0) - { - *dp = (png_byte)background->red; - *(dp + 1) = (png_byte)background->green; - *(dp + 2) = (png_byte)background->blue; - } - else - { - png_composite(*dp, *sp, a, background->red); - png_composite(*(dp + 1), *(sp + 1), a, - background->green); - png_composite(*(dp + 2), *(sp + 2), a, - background->blue); - } - } - } - } - else /* if (row_info->bit_depth == 16) */ - { -#if defined(PNG_READ_GAMMA_SUPPORTED) - if (gamma_16 != NULL && gamma_16_from_1 != NULL && - gamma_16_to_1 != NULL) - { - for (i = 0, sp = row, dp = row; - i < row_info->width; i++, sp += 8, dp += 6) - { - png_uint_16 a; - - a = (png_uint_16)(((png_uint_16)(*(sp + 6)) << 8) + - (png_uint_16)(*(sp + 7))); - if (a == (png_uint_16)0xffff) - { - png_uint_16 v; - - v = gamma_16[*(sp + 1) >> gamma_shift][*sp]; - *dp = (png_byte)((v >> 8) & 0xff); - *(dp + 1) = (png_byte)(v & 0xff); - v = gamma_16[*(sp + 3) >> gamma_shift][*(sp + 2)]; - *(dp + 2) = (png_byte)((v >> 8) & 0xff); - *(dp + 3) = (png_byte)(v & 0xff); - v = gamma_16[*(sp + 5) >> gamma_shift][*(sp + 4)]; - *(dp + 4) = (png_byte)((v >> 8) & 0xff); - *(dp + 5) = (png_byte)(v & 0xff); - } - else if (a == 0) - { - /* background is already in screen gamma */ - *dp = (png_byte)((background->red >> 8) & 0xff); - *(dp + 1) = (png_byte)(background->red & 0xff); - *(dp + 2) = (png_byte)((background->green >> 8) & 0xff); - *(dp + 3) = (png_byte)(background->green & 0xff); - *(dp + 4) = (png_byte)((background->blue >> 8) & 0xff); - *(dp + 5) = (png_byte)(background->blue & 0xff); - } - else - { - png_uint_16 v, w, x; - - v = gamma_16_to_1[*(sp + 1) >> gamma_shift][*sp]; - png_composite_16(w, v, a, background->red); - x = gamma_16_from_1[((w&0xff) >> gamma_shift)][w >> 8]; - *dp = (png_byte)((x >> 8) & 0xff); - *(dp + 1) = (png_byte)(x & 0xff); - v = gamma_16_to_1[*(sp + 3) >> gamma_shift][*(sp + 2)]; - png_composite_16(w, v, a, background->green); - x = gamma_16_from_1[((w&0xff) >> gamma_shift)][w >> 8]; - *(dp + 2) = (png_byte)((x >> 8) & 0xff); - *(dp + 3) = (png_byte)(x & 0xff); - v = gamma_16_to_1[*(sp + 5) >> gamma_shift][*(sp + 4)]; - png_composite_16(w, v, a, background->blue); - x = gamma_16_from_1[(w & 0xff) >> gamma_shift][w >> 8]; - *(dp + 4) = (png_byte)((x >> 8) & 0xff); - *(dp + 5) = (png_byte)(x & 0xff); - } - } - } - else -#endif - { - for (i = 0, sp = row, dp = row; - i < row_info->width; i++, sp += 8, dp += 6) - { - png_uint_16 a; - - a = (png_uint_16)(((png_uint_16)(*(sp + 6)) << 8) + - (png_uint_16)(*(sp + 7))); - if (a == (png_uint_16)0xffff) - { - png_memcpy(dp, sp, 6); - } - else if (a == 0) - { - *dp = (png_byte)((background->red >> 8) & 0xff); - *(dp + 1) = (png_byte)(background->red & 0xff); - *(dp + 2) = (png_byte)((background->green >> 8) & 0xff); - *(dp + 3) = (png_byte)(background->green & 0xff); - *(dp + 4) = (png_byte)((background->blue >> 8) & 0xff); - *(dp + 5) = (png_byte)(background->blue & 0xff); - } - else - { - png_uint_16 r, g, b, v; - - r = ((png_uint_16)(*sp) << 8) + *(sp + 1); - g = ((png_uint_16)(*(sp + 2)) << 8) + *(sp + 3); - b = ((png_uint_16)(*(sp + 4)) << 8) + *(sp + 5); - - png_composite_16(v, r, a, background->red); - *dp = (png_byte)((v >> 8) & 0xff); - *(dp + 1) = (png_byte)(v & 0xff); - png_composite_16(v, g, a, background->green); - *(dp + 2) = (png_byte)((v >> 8) & 0xff); - *(dp + 3) = (png_byte)(v & 0xff); - png_composite_16(v, b, a, background->blue); - *(dp + 4) = (png_byte)((v >> 8) & 0xff); - *(dp + 5) = (png_byte)(v & 0xff); - } - } - } - } - break; - } - } - - if (row_info->color_type & PNG_COLOR_MASK_ALPHA) - { - row_info->color_type &= ~PNG_COLOR_MASK_ALPHA; - row_info->channels--; - row_info->pixel_depth = (png_byte)(row_info->channels * - row_info->bit_depth); - row_info->rowbytes = ((row_info->width * - row_info->pixel_depth + 7) >> 3); - } - } -} -#endif - -#if defined(PNG_READ_GAMMA_SUPPORTED) -/* Gamma correct the image, avoiding the alpha channel. Make sure - * you do this after you deal with the trasparency issue on grayscale - * or rgb images. If your bit depth is 8, use gamma_table, if it - * is 16, use gamma_16_table and gamma_shift. Build these with - * build_gamma_table(). - */ -void -png_do_gamma(png_row_infop row_info, png_bytep row, - png_bytep gamma_table, png_uint_16pp gamma_16_table, - int gamma_shift) -{ - png_bytep sp; - png_uint_32 i; - - png_debug(1, "in png_do_gamma\n"); - if ( -#if defined(PNG_USELESS_TESTS_SUPPORTED) - row != NULL && row_info != NULL && -#endif - ((row_info->bit_depth <= 8 && gamma_table != NULL) || - (row_info->bit_depth == 16 && gamma_16_table != NULL))) - { - switch (row_info->color_type) - { - case PNG_COLOR_TYPE_RGB: - { - if (row_info->bit_depth == 8) - { - for (i = 0, sp = row; i < row_info->width; i++) - { - *sp = gamma_table[*sp]; - sp++; - *sp = gamma_table[*sp]; - sp++; - *sp = gamma_table[*sp]; - sp++; - } - } - else /* if (row_info->bit_depth == 16) */ - { - for (i = 0, sp = row; i < row_info->width; i++) - { - png_uint_16 v; - - v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp]; - *sp = (png_byte)((v >> 8) & 0xff); - *(sp + 1) = (png_byte)(v & 0xff); - sp += 2; - v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp]; - *sp = (png_byte)((v >> 8) & 0xff); - *(sp + 1) = (png_byte)(v & 0xff); - sp += 2; - v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp]; - *sp = (png_byte)((v >> 8) & 0xff); - *(sp + 1) = (png_byte)(v & 0xff); - sp += 2; - } - } - break; - } - case PNG_COLOR_TYPE_RGB_ALPHA: - { - if (row_info->bit_depth == 8) - { - for (i = 0, sp = row; - i < row_info->width; i++) - { - *sp = gamma_table[*sp]; - sp++; - *sp = gamma_table[*sp]; - sp++; - *sp = gamma_table[*sp]; - sp++; - sp++; - } - } - else /* if (row_info->bit_depth == 16) */ - { - for (i = 0, sp = row; - i < row_info->width; i++) - { - png_uint_16 v; - - v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp]; - *sp = (png_byte)((v >> 8) & 0xff); - *(sp + 1) = (png_byte)(v & 0xff); - sp += 2; - v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp]; - *sp = (png_byte)((v >> 8) & 0xff); - *(sp + 1) = (png_byte)(v & 0xff); - sp += 2; - v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp]; - *sp = (png_byte)((v >> 8) & 0xff); - *(sp + 1) = (png_byte)(v & 0xff); - sp += 4; - } - } - break; - } - case PNG_COLOR_TYPE_GRAY_ALPHA: - { - if (row_info->bit_depth == 8) - { - for (i = 0, sp = row; - i < row_info->width; i++) - { - *sp = gamma_table[*sp]; - sp += 2; - } - } - else /* if (row_info->bit_depth == 16) */ - { - for (i = 0, sp = row; - i < row_info->width; i++) - { - png_uint_16 v; - - v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp]; - *sp = (png_byte)((v >> 8) & 0xff); - *(sp + 1) = (png_byte)(v & 0xff); - sp += 4; - } - } - break; - } - case PNG_COLOR_TYPE_GRAY: - { - if (row_info->bit_depth == 2) - { - for (i = 0, sp = row; i < row_info->width; i += 4) - { - int a = *sp & 0xc0; - int b = *sp & 0x30; - int c = *sp & 0x0c; - int d = *sp & 0x03; - - *sp = ((((int)gamma_table[a|(a>>2)|(a>>4)|(a>>6)]) ) & 0xc0)| - ((((int)gamma_table[(b<<2)|b|(b>>2)|(b>>4)])>>2) & 0x30)| - ((((int)gamma_table[(c<<4)|(c<<2)|c|(c>>2)])>>4) & 0x0c)| - ((((int)gamma_table[(d<<6)|(d<<4)|(d<<2)|d])>>6) ); - sp++; - } - } - if (row_info->bit_depth == 4) - { - for (i = 0, sp = row; i < row_info->width; i += 2) - { - int msb = *sp & 0xf0; - int lsb = *sp & 0x0f; - - *sp = (((int)gamma_table[msb | (msb >> 4)]) & 0xf0) | - (((int)gamma_table[(lsb << 4) | lsb]) >> 4); - sp++; - } - } - else if (row_info->bit_depth == 8) - { - for (i = 0, sp = row; i < row_info->width; i++) - { - *sp = gamma_table[*sp]; - sp++; - } - } - else if (row_info->bit_depth == 16) - { - for (i = 0, sp = row; i < row_info->width; i++) - { - png_uint_16 v; - - v = gamma_16_table[*(sp + 1) >> gamma_shift][*sp]; - *sp = (png_byte)((v >> 8) & 0xff); - *(sp + 1) = (png_byte)(v & 0xff); - sp += 2; - } - } - break; - } - } - } -} -#endif - -#if defined(PNG_READ_EXPAND_SUPPORTED) -/* Expands a palette row to an rgb or rgba row depending - * upon whether you supply trans and num_trans. - */ -void -png_do_expand_palette(png_row_infop row_info, png_bytep row, - png_colorp palette, png_bytep trans, int num_trans) -{ - int shift, value; - png_bytep sp, dp; - png_uint_32 i; - - png_debug(1, "in png_do_expand_palette\n"); - if ( -#if defined(PNG_USELESS_TESTS_SUPPORTED) - row != NULL && row_info != NULL && -#endif - row_info->color_type == PNG_COLOR_TYPE_PALETTE) - { - if (row_info->bit_depth < 8) - { - switch (row_info->bit_depth) - { - case 1: - { - sp = row + (png_size_t)((row_info->width - 1) >> 3); - dp = row + (png_size_t)row_info->width - 1; - shift = 7 - (int)((row_info->width + 7) & 7); - for (i = 0; i < row_info->width; i++) - { - if ((*sp >> shift) & 0x1) - *dp = 1; - else - *dp = 0; - if (shift == 7) - { - shift = 0; - sp--; - } - else - shift++; - - dp--; - } - break; - } - case 2: - { - sp = row + (png_size_t)((row_info->width - 1) >> 2); - dp = row + (png_size_t)row_info->width - 1; - shift = (int)((3 - ((row_info->width + 3) & 3)) << 1); - for (i = 0; i < row_info->width; i++) - { - value = (*sp >> shift) & 0x3; - *dp = (png_byte)value; - if (shift == 6) - { - shift = 0; - sp--; - } - else - shift += 2; - - dp--; - } - break; - } - case 4: - { - sp = row + (png_size_t)((row_info->width - 1) >> 1); - dp = row + (png_size_t)row_info->width - 1; - shift = (int)((row_info->width & 1) << 2); - for (i = 0; i < row_info->width; i++) - { - value = (*sp >> shift) & 0xf; - *dp = (png_byte)value; - if (shift == 4) - { - shift = 0; - sp--; - } - else - shift += 4; - - dp--; - } - break; - } - } - row_info->bit_depth = 8; - row_info->pixel_depth = 8; - row_info->rowbytes = row_info->width; - } - switch (row_info->bit_depth) - { - case 8: - { - if (trans != NULL) - { - sp = row + (png_size_t)row_info->width - 1; - dp = row + (png_size_t)(row_info->width << 2) - 1; - - for (i = 0; i < row_info->width; i++) - { - if ((int)(*sp) >= num_trans) - *dp-- = 0xff; - else - *dp-- = trans[*sp]; - *dp-- = palette[*sp].blue; - *dp-- = palette[*sp].green; - *dp-- = palette[*sp].red; - sp--; - } - row_info->bit_depth = 8; - row_info->pixel_depth = 32; - row_info->rowbytes = row_info->width * 4; - row_info->color_type = 6; - row_info->channels = 4; - } - else - { - sp = row + (png_size_t)row_info->width - 1; - dp = row + (png_size_t)(row_info->width * 3) - 1; - - for (i = 0; i < row_info->width; i++) - { - *dp-- = palette[*sp].blue; - *dp-- = palette[*sp].green; - *dp-- = palette[*sp].red; - sp--; - } - row_info->bit_depth = 8; - row_info->pixel_depth = 24; - row_info->rowbytes = row_info->width * 3; - row_info->color_type = 2; - row_info->channels = 3; - } - break; - } - } - } -} - -/* If the bit depth < 8, it is expanded to 8. Also, if the - * transparency value is supplied, an alpha channel is built. - */ -void -png_do_expand(png_row_infop row_info, png_bytep row, - png_color_16p trans_value) -{ - int shift, value; - png_bytep sp, dp; - png_uint_32 i; - - png_debug(1, "in png_do_expand\n"); -#if defined(PNG_USELESS_TESTS_SUPPORTED) - if (row != NULL && row_info != NULL) -#endif - { - if (row_info->color_type == PNG_COLOR_TYPE_GRAY) - { - png_uint_16 gray = trans_value ? trans_value->gray : 0; - - if (row_info->bit_depth < 8) - { - switch (row_info->bit_depth) - { - case 1: - { - gray *= 0xff; - sp = row + (png_size_t)((row_info->width - 1) >> 3); - dp = row + (png_size_t)row_info->width - 1; - shift = 7 - (int)((row_info->width + 7) & 7); - for (i = 0; i < row_info->width; i++) - { - if ((*sp >> shift) & 0x1) - *dp = 0xff; - else - *dp = 0; - if (shift == 7) - { - shift = 0; - sp--; - } - else - shift++; - - dp--; - } - break; - } - case 2: - { - gray *= 0x55; - sp = row + (png_size_t)((row_info->width - 1) >> 2); - dp = row + (png_size_t)row_info->width - 1; - shift = (int)((3 - ((row_info->width + 3) & 3)) << 1); - for (i = 0; i < row_info->width; i++) - { - value = (*sp >> shift) & 0x3; - *dp = (png_byte)(value | (value << 2) | (value << 4) | - (value << 6)); - if (shift == 6) - { - shift = 0; - sp--; - } - else - shift += 2; - - dp--; - } - break; - } - case 4: - { - gray *= 0x11; - sp = row + (png_size_t)((row_info->width - 1) >> 1); - dp = row + (png_size_t)row_info->width - 1; - shift = (int)((1 - ((row_info->width + 1) & 1)) << 2); - for (i = 0; i < row_info->width; i++) - { - value = (*sp >> shift) & 0xf; - *dp = (png_byte)(value | (value << 4)); - if (shift == 4) - { - shift = 0; - sp--; - } - else - shift = 4; - - dp--; - } - break; - } - } - row_info->bit_depth = 8; - row_info->pixel_depth = 8; - row_info->rowbytes = row_info->width; - } - - if (trans_value != NULL) - { - if (row_info->bit_depth == 8) - { - sp = row + (png_size_t)row_info->width - 1; - dp = row + (png_size_t)(row_info->width << 1) - 1; - for (i = 0; i < row_info->width; i++) - { - if (*sp == gray) - *dp-- = 0; - else - *dp-- = 0xff; - *dp-- = *sp--; - } - } - else if (row_info->bit_depth == 16) - { - sp = row + row_info->rowbytes - 1; - dp = row + (row_info->rowbytes << 1) - 1; - for (i = 0; i < row_info->width; i++) - { - if (((png_uint_16)*(sp) | - ((png_uint_16)*(sp - 1) << 8)) == gray) - { - *dp-- = 0; - *dp-- = 0; - } - else - { - *dp-- = 0xff; - *dp-- = 0xff; - } - *dp-- = *sp--; - *dp-- = *sp--; - } - } - row_info->color_type = PNG_COLOR_TYPE_GRAY_ALPHA; - row_info->channels = 2; - row_info->pixel_depth = (png_byte)(row_info->bit_depth << 1); - row_info->rowbytes = - ((row_info->width * row_info->pixel_depth) >> 3); - } - } - else if (row_info->color_type == PNG_COLOR_TYPE_RGB && trans_value) - { - if (row_info->bit_depth == 8) - { - sp = row + (png_size_t)row_info->rowbytes - 1; - dp = row + (png_size_t)(row_info->width << 2) - 1; - for (i = 0; i < row_info->width; i++) - { - if (*(sp - 2) == trans_value->red && - *(sp - 1) == trans_value->green && - *(sp - 0) == trans_value->blue) - *dp-- = 0; - else - *dp-- = 0xff; - *dp-- = *sp--; - *dp-- = *sp--; - *dp-- = *sp--; - } - } - else if (row_info->bit_depth == 16) - { - sp = row + row_info->rowbytes - 1; - dp = row + (png_size_t)(row_info->width << 3) - 1; - for (i = 0; i < row_info->width; i++) - { - if ((((png_uint_16)*(sp - 4) | - ((png_uint_16)*(sp - 5) << 8)) == trans_value->red) && - (((png_uint_16)*(sp - 2) | - ((png_uint_16)*(sp - 3) << 8)) == trans_value->green) && - (((png_uint_16)*(sp - 0) | - ((png_uint_16)*(sp - 1) << 8)) == trans_value->blue)) - { - *dp-- = 0; - *dp-- = 0; - } - else - { - *dp-- = 0xff; - *dp-- = 0xff; - } - *dp-- = *sp--; - *dp-- = *sp--; - *dp-- = *sp--; - *dp-- = *sp--; - *dp-- = *sp--; - *dp-- = *sp--; - } - } - row_info->color_type = PNG_COLOR_TYPE_RGB_ALPHA; - row_info->channels = 4; - row_info->pixel_depth = (png_byte)(row_info->bit_depth << 2); - row_info->rowbytes = - ((row_info->width * row_info->pixel_depth) >> 3); - } - } -} -#endif - -#if defined(PNG_READ_DITHER_SUPPORTED) -void -png_do_dither(png_row_infop row_info, png_bytep row, - png_bytep palette_lookup, png_bytep dither_lookup) -{ - png_bytep sp, dp; - png_uint_32 i; - - png_debug(1, "in png_do_dither\n"); -#if defined(PNG_USELESS_TESTS_SUPPORTED) - if (row != NULL && row_info != NULL) -#endif - { - if (row_info->color_type == PNG_COLOR_TYPE_RGB && - palette_lookup && row_info->bit_depth == 8) - { - int r, g, b, p; - sp = row; - dp = row; - for (i = 0; i < row_info->width; i++) - { - r = *sp++; - g = *sp++; - b = *sp++; - - /* this looks real messy, but the compiler will reduce - it down to a reasonable formula. For example, with - 5 bits per color, we get: - p = (((r >> 3) & 0x1f) << 10) | - (((g >> 3) & 0x1f) << 5) | - ((b >> 3) & 0x1f); - */ - p = (((r >> (8 - PNG_DITHER_RED_BITS)) & - ((1 << PNG_DITHER_RED_BITS) - 1)) << - (PNG_DITHER_GREEN_BITS + PNG_DITHER_BLUE_BITS)) | - (((g >> (8 - PNG_DITHER_GREEN_BITS)) & - ((1 << PNG_DITHER_GREEN_BITS) - 1)) << - (PNG_DITHER_BLUE_BITS)) | - ((b >> (8 - PNG_DITHER_BLUE_BITS)) & - ((1 << PNG_DITHER_BLUE_BITS) - 1)); - - *dp++ = palette_lookup[p]; - } - row_info->color_type = PNG_COLOR_TYPE_PALETTE; - row_info->channels = 1; - row_info->pixel_depth = row_info->bit_depth; - row_info->rowbytes = - ((row_info->width * row_info->pixel_depth + 7) >> 3); - } - else if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA && - palette_lookup != NULL && row_info->bit_depth == 8) - { - int r, g, b, p; - sp = row; - dp = row; - for (i = 0; i < row_info->width; i++) - { - r = *sp++; - g = *sp++; - b = *sp++; - sp++; - - p = (((r >> (8 - PNG_DITHER_RED_BITS)) & - ((1 << PNG_DITHER_RED_BITS) - 1)) << - (PNG_DITHER_GREEN_BITS + PNG_DITHER_BLUE_BITS)) | - (((g >> (8 - PNG_DITHER_GREEN_BITS)) & - ((1 << PNG_DITHER_GREEN_BITS) - 1)) << - (PNG_DITHER_BLUE_BITS)) | - ((b >> (8 - PNG_DITHER_BLUE_BITS)) & - ((1 << PNG_DITHER_BLUE_BITS) - 1)); - - *dp++ = palette_lookup[p]; - } - row_info->color_type = PNG_COLOR_TYPE_PALETTE; - row_info->channels = 1; - row_info->pixel_depth = row_info->bit_depth; - row_info->rowbytes = - ((row_info->width * row_info->pixel_depth + 7) >> 3); - } - else if (row_info->color_type == PNG_COLOR_TYPE_PALETTE && - dither_lookup && row_info->bit_depth == 8) - { - sp = row; - for (i = 0; i < row_info->width; i++, sp++) - { - *sp = dither_lookup[*sp]; - } - } - } -} -#endif - -#if defined(PNG_READ_GAMMA_SUPPORTED) -static int png_gamma_shift[] = - {0x10, 0x21, 0x42, 0x84, 0x110, 0x248, 0x550, 0xff0}; - -/* We build the 8- or 16-bit gamma tables here. Note that for 16-bit - * tables, we don't make a full table if we are reducing to 8-bit in - * the future. Note also how the gamma_16 tables are segmented so that - * we don't need to allocate > 64K chunks for a full 16-bit table. - */ -void -png_build_gamma_table(png_structp png_ptr) -{ - png_debug(1, "in png_build_gamma_table\n"); - if (png_ptr->bit_depth <= 8) - { - int i; - double g; - - g = 1.0 / (png_ptr->gamma * png_ptr->screen_gamma); - - png_ptr->gamma_table = (png_bytep)png_malloc(png_ptr, - (png_uint_32)256); - - for (i = 0; i < 256; i++) - { - png_ptr->gamma_table[i] = (png_byte)(pow((double)i / 255.0, - g) * 255.0 + .5); - } - -#if defined(PNG_READ_BACKGROUND_SUPPORTED) - if (png_ptr->transformations & PNG_BACKGROUND) - { - g = 1.0 / (png_ptr->gamma); - - png_ptr->gamma_to_1 = (png_bytep)png_malloc(png_ptr, - (png_uint_32)256); - - for (i = 0; i < 256; i++) - { - png_ptr->gamma_to_1[i] = (png_byte)(pow((double)i / 255.0, - g) * 255.0 + .5); - } - - g = 1.0 / (png_ptr->screen_gamma); - - png_ptr->gamma_from_1 = (png_bytep)png_malloc(png_ptr, - (png_uint_32)256); - - for (i = 0; i < 256; i++) - { - png_ptr->gamma_from_1[i] = (png_byte)(pow((double)i / 255.0, - g) * 255.0 + .5); - } - } -#endif /* PNG_BACKGROUND_SUPPORTED */ - } - else - { - double g; - int i, j, shift, num; - int sig_bit; - png_uint_32 ig; - - if (png_ptr->color_type & PNG_COLOR_MASK_COLOR) - { - sig_bit = (int)png_ptr->sig_bit.red; - if ((int)png_ptr->sig_bit.green > sig_bit) - sig_bit = png_ptr->sig_bit.green; - if ((int)png_ptr->sig_bit.blue > sig_bit) - sig_bit = png_ptr->sig_bit.blue; - } - else - { - sig_bit = (int)png_ptr->sig_bit.gray; - } - - if (sig_bit > 0) - shift = 16 - sig_bit; - else - shift = 0; - - if (png_ptr->transformations & PNG_16_TO_8) - { - if (shift < (16 - PNG_MAX_GAMMA_8)) - shift = (16 - PNG_MAX_GAMMA_8); - } - - if (shift > 8) - shift = 8; - if (shift < 0) - shift = 0; - - png_ptr->gamma_shift = (png_byte)shift; - - num = (1 << (8 - shift)); - - g = 1.0 / (png_ptr->gamma * png_ptr->screen_gamma); - - png_ptr->gamma_16_table = (png_uint_16pp)png_malloc(png_ptr, - (png_uint_32)(num * sizeof (png_uint_16p))); - - if ((png_ptr->transformations & PNG_16_TO_8) && - !(png_ptr->transformations & PNG_BACKGROUND)) - { - double fin, fout; - png_uint_32 last, max; - - for (i = 0; i < num; i++) - { - png_ptr->gamma_16_table[i] = (png_uint_16p)png_malloc(png_ptr, - (png_uint_32)(256 * sizeof (png_uint_16))); - } - - g = 1.0 / g; - last = 0; - for (i = 0; i < 256; i++) - { - fout = ((double)i + 0.5) / 256.0; - fin = pow(fout, g); - max = (png_uint_32)(fin * (double)((png_uint_32)num << 8)); - while (last <= max) - { - png_ptr->gamma_16_table[(int)(last & (0xff >> shift))] - [(int)(last >> (8 - shift))] = (png_uint_16)( - (png_uint_16)i | ((png_uint_16)i << 8)); - last++; - } - } - while (last < ((png_uint_32)num << 8)) - { - png_ptr->gamma_16_table[(int)(last & (0xff >> shift))] - [(int)(last >> (8 - shift))] = (png_uint_16)65535L; - last++; - } - } - else - { - for (i = 0; i < num; i++) - { - png_ptr->gamma_16_table[i] = (png_uint_16p)png_malloc(png_ptr, - (png_uint_32)(256 * sizeof (png_uint_16))); - - ig = (((png_uint_32)i * (png_uint_32)png_gamma_shift[shift]) >> 4); - for (j = 0; j < 256; j++) - { - png_ptr->gamma_16_table[i][j] = - (png_uint_16)(pow((double)(ig + ((png_uint_32)j << 8)) / - 65535.0, g) * 65535.0 + .5); - } - } - } - -#if defined(PNG_READ_BACKGROUND_SUPPORTED) - if (png_ptr->transformations & PNG_BACKGROUND) - { - g = 1.0 / (png_ptr->gamma); - - png_ptr->gamma_16_to_1 = (png_uint_16pp)png_malloc(png_ptr, - (png_uint_32)(num * sizeof (png_uint_16p ))); - - for (i = 0; i < num; i++) - { - png_ptr->gamma_16_to_1[i] = (png_uint_16p)png_malloc(png_ptr, - (png_uint_32)(256 * sizeof (png_uint_16))); - - ig = (((png_uint_32)i * - (png_uint_32)png_gamma_shift[shift]) >> 4); - for (j = 0; j < 256; j++) - { - png_ptr->gamma_16_to_1[i][j] = - (png_uint_16)(pow((double)(ig + ((png_uint_32)j << 8)) / - 65535.0, g) * 65535.0 + .5); - } - } - g = 1.0 / (png_ptr->screen_gamma); - - png_ptr->gamma_16_from_1 = (png_uint_16pp)png_malloc(png_ptr, - (png_uint_32)(num * sizeof (png_uint_16p))); - - for (i = 0; i < num; i++) - { - png_ptr->gamma_16_from_1[i] = (png_uint_16p)png_malloc(png_ptr, - (png_uint_32)(256 * sizeof (png_uint_16))); - - ig = (((png_uint_32)i * - (png_uint_32)png_gamma_shift[shift]) >> 4); - for (j = 0; j < 256; j++) - { - png_ptr->gamma_16_from_1[i][j] = - (png_uint_16)(pow((double)(ig + ((png_uint_32)j << 8)) / - 65535.0, g) * 65535.0 + .5); - } - } - } -#endif /* PNG_BACKGROUND_SUPPORTED */ - } -} -#endif - diff --git a/src/png/pngrutil.c b/src/png/pngrutil.c deleted file mode 100644 index e127c87995..0000000000 --- a/src/png/pngrutil.c +++ /dev/null @@ -1,2245 +0,0 @@ - -/* pngrutil.c - utilities to read a PNG file - * - * libpng 1.0.1 - * For conditions of distribution and use, see copyright notice in png.h - * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc. - * Copyright (c) 1996, 1997 Andreas Dilger - * Copyright (c) 1998, Glenn Randers-Pehrson - * March 15, 1998 - * - * This file contains routines which are only called from within - * libpng itself during the course of reading an image. - */ - -#define PNG_INTERNAL -#include "../png/png.h" - -#ifndef PNG_READ_BIG_ENDIAN_SUPPORTED -/* Grab an unsigned 32-bit integer from a buffer in big endian format. */ -png_uint_32 -png_get_uint_32(png_bytep buf) -{ - png_uint_32 i; - - i = ((png_uint_32)(*buf) << 24) + - ((png_uint_32)(*(buf + 1)) << 16) + - ((png_uint_32)(*(buf + 2)) << 8) + - (png_uint_32)(*(buf + 3)); - - return (i); -} - -#if defined(PNG_READ_pCAL_SUPPORTED) -/* Grab a signed 32-bit integer from a buffer in big endian format. The - * data is stored in the PNG file in two's complement format, and it is - * assumed that the machine format for signed integers is the same. */ -png_int_32 -png_get_int_32(png_bytep buf) -{ - png_int_32 i; - - i = ((png_int_32)(*buf) << 24) + - ((png_int_32)(*(buf + 1)) << 16) + - ((png_int_32)(*(buf + 2)) << 8) + - (png_int_32)(*(buf + 3)); - - return (i); -} -#endif /* PNG_READ_pCAL_SUPPORTED */ - -/* Grab an unsigned 16-bit integer from a buffer in big endian format. */ -png_uint_16 -png_get_uint_16(png_bytep buf) -{ - png_uint_16 i; - - i = (png_uint_16)(((png_uint_16)(*buf) << 8) + - (png_uint_16)(*(buf + 1))); - - return (i); -} -#endif /* PNG_READ_BIG_ENDIAN_SUPPORTED */ - -/* Read data, and (optionally) run it through the CRC. */ -void -png_crc_read(png_structp png_ptr, png_bytep buf, png_size_t length) -{ - png_read_data(png_ptr, buf, length); - png_calculate_crc(png_ptr, buf, length); -} - -/* Optionally skip data and then check the CRC. Depending on whether we - are reading a ancillary or critical chunk, and how the program has set - things up, we may calculate the CRC on the data and print a message. - Returns '1' if there was a CRC error, '0' otherwise. */ -int -png_crc_finish(png_structp png_ptr, png_uint_32 skip) -{ - png_uint_32 i; - - for (i = skip; i > (png_uint_32)png_ptr->zbuf_size; i -= png_ptr->zbuf_size) - { - png_crc_read(png_ptr, png_ptr->zbuf, png_ptr->zbuf_size); - } - if (i) - { - png_crc_read(png_ptr, png_ptr->zbuf, (png_size_t)i); - } - - if (png_crc_error(png_ptr)) - { - if ((png_ptr->chunk_name[0] & 0x20 && /* Ancillary */ - !(png_ptr->flags & PNG_FLAG_CRC_ANCILLARY_NOWARN)) || - (!(png_ptr->chunk_name[0] & 0x20) && /* Critical */ - png_ptr->flags & PNG_FLAG_CRC_CRITICAL_USE)) - { - png_chunk_warning(png_ptr, "CRC error"); - } - else - { - png_chunk_error(png_ptr, "CRC error"); - } - return (1); - } - - return (0); -} - -/* Compare the CRC stored in the PNG file with that calculated by libpng from - the data it has read thus far. */ -int -png_crc_error(png_structp png_ptr) -{ - png_byte crc_bytes[4]; - png_uint_32 crc; - int need_crc = 1; - - if (png_ptr->chunk_name[0] & 0x20) /* ancillary */ - { - if ((png_ptr->flags & PNG_FLAG_CRC_ANCILLARY_MASK) == - (PNG_FLAG_CRC_ANCILLARY_USE | PNG_FLAG_CRC_ANCILLARY_NOWARN)) - need_crc = 0; - } - else /* critical */ - { - if (png_ptr->flags & PNG_FLAG_CRC_CRITICAL_IGNORE) - need_crc = 0; - } - - png_read_data(png_ptr, crc_bytes, 4); - - if (need_crc) - { - crc = png_get_uint_32(crc_bytes); - return ((int)(crc != png_ptr->crc)); - } - else - return (0); -} - - -/* read and check the IDHR chunk */ -void -png_handle_IHDR(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) -{ - png_byte buf[13]; - png_uint_32 width, height; - int bit_depth, color_type, compression_type, filter_type; - int interlace_type; - - png_debug(1, "in png_handle_IHDR\n"); - - if (png_ptr->mode != PNG_BEFORE_IHDR) - png_error(png_ptr, "Out of place IHDR"); - - /* check the length */ - if (length != 13) - png_error(png_ptr, "Invalid IHDR chunk"); - - png_ptr->mode |= PNG_HAVE_IHDR; - - png_crc_read(png_ptr, buf, 13); - png_crc_finish(png_ptr, 0); - - width = png_get_uint_32(buf); - height = png_get_uint_32(buf + 4); - bit_depth = buf[8]; - color_type = buf[9]; - compression_type = buf[10]; - filter_type = buf[11]; - interlace_type = buf[12]; - - /* check for width and height valid values */ - if (width == 0 || width > (png_uint_32)2147483647L || height == 0 || - height > (png_uint_32)2147483647L) - png_error(png_ptr, "Invalid image size in IHDR"); - - /* check other values */ - if (bit_depth != 1 && bit_depth != 2 && bit_depth != 4 && - bit_depth != 8 && bit_depth != 16) - png_error(png_ptr, "Invalid bit depth in IHDR"); - - if (color_type < 0 || color_type == 1 || - color_type == 5 || color_type > 6) - png_error(png_ptr, "Invalid color type in IHDR"); - - if ((color_type == PNG_COLOR_TYPE_PALETTE && bit_depth) > 8 || - ((color_type == PNG_COLOR_TYPE_RGB || - color_type == PNG_COLOR_TYPE_GRAY_ALPHA || - color_type == PNG_COLOR_TYPE_RGB_ALPHA) && bit_depth < 8)) - png_error(png_ptr, "Invalid color type/bit depth combination in IHDR"); - - if (interlace_type >= PNG_INTERLACE_LAST) - png_error(png_ptr, "Unknown interlace method in IHDR"); - - if (compression_type != PNG_COMPRESSION_TYPE_BASE) - png_error(png_ptr, "Unknown compression method in IHDR"); - - if (filter_type != PNG_FILTER_TYPE_BASE) - png_error(png_ptr, "Unknown filter method in IHDR"); - - /* set internal variables */ - png_ptr->width = width; - png_ptr->height = height; - png_ptr->bit_depth = (png_byte)bit_depth; - png_ptr->interlaced = (png_byte)interlace_type; - png_ptr->color_type = (png_byte)color_type; - - /* find number of channels */ - switch (png_ptr->color_type) - { - case PNG_COLOR_TYPE_GRAY: - case PNG_COLOR_TYPE_PALETTE: - png_ptr->channels = 1; - break; - case PNG_COLOR_TYPE_RGB: - png_ptr->channels = 3; - break; - case PNG_COLOR_TYPE_GRAY_ALPHA: - png_ptr->channels = 2; - break; - case PNG_COLOR_TYPE_RGB_ALPHA: - png_ptr->channels = 4; - break; - } - - /* set up other useful info */ - png_ptr->pixel_depth = (png_byte)(png_ptr->bit_depth * - png_ptr->channels); - png_ptr->rowbytes = ((png_ptr->width * - (png_uint_32)png_ptr->pixel_depth + 7) >> 3); - png_debug1(3,"bit_depth = %d\n", png_ptr->bit_depth); - png_debug1(3,"channels = %d\n", png_ptr->channels); - png_debug1(3,"rowbytes = %d\n", png_ptr->rowbytes); - png_set_IHDR(png_ptr, info_ptr, width, height, bit_depth, - color_type, interlace_type, compression_type, filter_type); -} - -/* read and check the palette */ -void -png_handle_PLTE(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) -{ - png_colorp palette; - int num, i; - - png_debug(1, "in png_handle_PLTE\n"); - - if (!(png_ptr->mode & PNG_HAVE_IHDR)) - png_error(png_ptr, "Missing IHDR before PLTE"); - else if (png_ptr->mode & PNG_HAVE_IDAT) - { - png_warning(png_ptr, "Invalid PLTE after IDAT"); - png_crc_finish(png_ptr, length); - return; - } - else if (png_ptr->mode & PNG_HAVE_PLTE) - png_error(png_ptr, "Duplicate PLTE chunk"); - - png_ptr->mode |= PNG_HAVE_PLTE; - -#if defined (PNG_READ_tRNS_SUPPORTED) - if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) - { - if (info_ptr != NULL && info_ptr->valid & PNG_INFO_tRNS) - { - if (png_ptr->num_trans > png_ptr->num_palette) - { - png_warning(png_ptr, "Truncating incorrect tRNS chunk length"); - png_ptr->num_trans = png_ptr->num_palette; - } - } - } -#endif - -#if !defined(PNG_READ_OPT_PLTE_SUPPORTED) - if (png_ptr->color_type != PNG_COLOR_TYPE_PALETTE) - { - png_crc_finish(png_ptr, length); - return; - } -#endif - - if (length % 3) - { - if (png_ptr->color_type != PNG_COLOR_TYPE_PALETTE) - { - png_warning(png_ptr, "Invalid palette chunk"); - png_crc_finish(png_ptr, length); - return; - } - else - { - png_error(png_ptr, "Invalid palette chunk"); - } - } - - num = (int)length / 3; - palette = (png_colorp)png_zalloc(png_ptr, (uInt)num, sizeof (png_color)); - png_ptr->flags |= PNG_FLAG_FREE_PALETTE; - for (i = 0; i < num; i++) - { - png_byte buf[3]; - - png_crc_read(png_ptr, buf, 3); - /* don't depend upon png_color being any order */ - palette[i].red = buf[0]; - palette[i].green = buf[1]; - palette[i].blue = buf[2]; - } - - /* If we actually NEED the PLTE chunk (ie for a paletted image), we do - whatever the normal CRC configuration tells us. However, if we - have an RGB image, the PLTE can be considered ancillary, so - we will act as though it is. */ -#if !defined(PNG_READ_OPT_PLTE_SUPPORTED) - if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) -#endif - { - png_crc_finish(png_ptr, 0); - } -#if !defined(PNG_READ_OPT_PLTE_SUPPORTED) - else if (png_crc_error(png_ptr)) /* Only if we have a CRC error */ - { - /* If we don't want to use the data from an ancillary chunk, - we have two options: an error abort, or a warning and we - ignore the data in this chunk (which should be OK, since - it's considered ancillary for a RGB or RGBA image). */ - if (!(png_ptr->flags & PNG_FLAG_CRC_ANCILLARY_USE)) - { - if (png_ptr->flags & PNG_FLAG_CRC_ANCILLARY_NOWARN) - { - png_chunk_error(png_ptr, "CRC error"); - } - else - { - png_chunk_warning(png_ptr, "CRC error"); - png_ptr->flags &= ~PNG_FLAG_FREE_PALETTE; - png_zfree(png_ptr, palette); - return; - } - } - /* Otherwise, we (optionally) emit a warning and use the chunk. */ - else if (!(png_ptr->flags & PNG_FLAG_CRC_ANCILLARY_NOWARN)) - { - png_chunk_warning(png_ptr, "CRC error"); - } - } -#endif - png_ptr->palette = palette; - png_ptr->num_palette = (png_uint_16)num; - png_set_PLTE(png_ptr, info_ptr, palette, num); -} - -void -png_handle_IEND(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) -{ - png_debug(1, "in png_handle_IEND\n"); - - if (!(png_ptr->mode & PNG_HAVE_IHDR) || !(png_ptr->mode & PNG_HAVE_IDAT)) - { - png_error(png_ptr, "No image in file"); - - /* to quiet compiler warnings about unused info_ptr */ - if (info_ptr == NULL) - return; - } - - png_ptr->mode |= PNG_AFTER_IDAT | PNG_HAVE_IEND; - - if (length != 0) - { - png_warning(png_ptr, "Incorrect IEND chunk length"); - } - png_crc_finish(png_ptr, length); -} - -#if defined(PNG_READ_gAMA_SUPPORTED) -void -png_handle_gAMA(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) -{ - png_uint_32 igamma; - float file_gamma; - png_byte buf[4]; - - png_debug(1, "in png_handle_gAMA\n"); - - if (!(png_ptr->mode & PNG_HAVE_IHDR)) - png_error(png_ptr, "Missing IHDR before gAMA"); - else if (png_ptr->mode & PNG_HAVE_IDAT) - { - png_warning(png_ptr, "Invalid gAMA after IDAT"); - png_crc_finish(png_ptr, length); - return; - } - else if (png_ptr->mode & PNG_HAVE_PLTE) - /* Should be an error, but we can cope with it */ - png_warning(png_ptr, "Out of place gAMA chunk"); - - else if (info_ptr != NULL && info_ptr->valid & PNG_INFO_gAMA -#if defined(PNG_READ_sRGB_SUPPORTED) - && !(info_ptr->valid & PNG_INFO_sRGB) -#endif - ) - { - png_warning(png_ptr, "Duplicate gAMA chunk"); - png_crc_finish(png_ptr, length); - return; - } - - if (length != 4) - { - png_warning(png_ptr, "Incorrect gAMA chunk length"); - png_crc_finish(png_ptr, length); - return; - } - - png_crc_read(png_ptr, buf, 4); - if (png_crc_finish(png_ptr, 0)) - return; - - igamma = png_get_uint_32(buf); - /* check for zero gamma */ - if (igamma == 0) - return; - -#if defined(PNG_READ_sRGB_SUPPORTED) - if (info_ptr->valid & PNG_INFO_sRGB) - if(igamma != (png_uint_32)45000L) - { - png_warning(png_ptr, - "Ignoring incorrect gAMA value when sRGB is also present"); -#ifndef PNG_NO_STDIO - fprintf(stderr, "igamma = %lu\n", igamma); -#endif - return; - } -#endif /* PNG_READ_sRGB_SUPPORTED */ - - file_gamma = (float)igamma / (float)100000.0; -#ifdef PNG_READ_GAMMA_SUPPORTED - png_ptr->gamma = file_gamma; -#endif - png_set_gAMA(png_ptr, info_ptr, file_gamma); -} -#endif - -#if defined(PNG_READ_sBIT_SUPPORTED) -void -png_handle_sBIT(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) -{ - png_size_t truelen; - png_byte buf[4]; - - png_debug(1, "in png_handle_sBIT\n"); - - buf[0] = buf[1] = buf[2] = buf[3] = 0; - - if (!(png_ptr->mode & PNG_HAVE_IHDR)) - png_error(png_ptr, "Missing IHDR before sBIT"); - else if (png_ptr->mode & PNG_HAVE_IDAT) - { - png_warning(png_ptr, "Invalid sBIT after IDAT"); - png_crc_finish(png_ptr, length); - return; - } - else if (png_ptr->mode & PNG_HAVE_PLTE) - { - /* Should be an error, but we can cope with it */ - png_warning(png_ptr, "Out of place sBIT chunk"); - } - else if (info_ptr != NULL && info_ptr->valid & PNG_INFO_sBIT) - { - png_warning(png_ptr, "Duplicate sBIT chunk"); - png_crc_finish(png_ptr, length); - return; - } - - if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) - truelen = 3; - else - truelen = (png_size_t)png_ptr->channels; - - if (length != truelen) - { - png_warning(png_ptr, "Incorrect sBIT chunk length"); - png_crc_finish(png_ptr, length); - return; - } - - png_crc_read(png_ptr, buf, truelen); - if (png_crc_finish(png_ptr, 0)) - return; - - if (png_ptr->color_type & PNG_COLOR_MASK_COLOR) - { - png_ptr->sig_bit.red = buf[0]; - png_ptr->sig_bit.green = buf[1]; - png_ptr->sig_bit.blue = buf[2]; - png_ptr->sig_bit.alpha = buf[3]; - } - else - { - png_ptr->sig_bit.gray = buf[0]; - png_ptr->sig_bit.alpha = buf[1]; - } - png_set_sBIT(png_ptr, info_ptr, &(png_ptr->sig_bit)); -} -#endif - -#if defined(PNG_READ_cHRM_SUPPORTED) -void -png_handle_cHRM(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) -{ - png_byte buf[4]; - png_uint_32 val; - float white_x, white_y, red_x, red_y, green_x, green_y, blue_x, blue_y; - - png_debug(1, "in png_handle_cHRM\n"); - - if (!(png_ptr->mode & PNG_HAVE_IHDR)) - png_error(png_ptr, "Missing IHDR before sBIT"); - else if (png_ptr->mode & PNG_HAVE_IDAT) - { - png_warning(png_ptr, "Invalid cHRM after IDAT"); - png_crc_finish(png_ptr, length); - return; - } - else if (png_ptr->mode & PNG_HAVE_PLTE) - /* Should be an error, but we can cope with it */ - png_warning(png_ptr, "Missing PLTE before cHRM"); - - else if (info_ptr != NULL && info_ptr->valid & PNG_INFO_cHRM -#if defined(PNG_READ_sRGB_SUPPORTED) - && !(info_ptr->valid & PNG_INFO_sRGB) -#endif - ) - { - png_warning(png_ptr, "Duplicate cHRM chunk"); - png_crc_finish(png_ptr, length); - return; - } - - if (length != 32) - { - png_warning(png_ptr, "Incorrect cHRM chunk length"); - png_crc_finish(png_ptr, length); - return; - } - - png_crc_read(png_ptr, buf, 4); - val = png_get_uint_32(buf); - white_x = (float)val / (float)100000.0; - - png_crc_read(png_ptr, buf, 4); - val = png_get_uint_32(buf); - white_y = (float)val / (float)100000.0; - - if (white_x < 0 || white_x > 0.8 || white_y < 0 || white_y > 0.8 || - white_x + white_y > 1.0) - { - png_warning(png_ptr, "Invalid cHRM white point"); - png_crc_finish(png_ptr, 24); - return; - } - - png_crc_read(png_ptr, buf, 4); - val = png_get_uint_32(buf); - red_x = (float)val / (float)100000.0; - - png_crc_read(png_ptr, buf, 4); - val = png_get_uint_32(buf); - red_y = (float)val / (float)100000.0; - - if (red_x < 0 || red_x > 0.8 || red_y < 0 || red_y > 0.8 || - red_x + red_y > 1.0) - { - png_warning(png_ptr, "Invalid cHRM red point"); - png_crc_finish(png_ptr, 16); - return; - } - - png_crc_read(png_ptr, buf, 4); - val = png_get_uint_32(buf); - green_x = (float)val / (float)100000.0; - - png_crc_read(png_ptr, buf, 4); - val = png_get_uint_32(buf); - green_y = (float)val / (float)100000.0; - - if (green_x < 0 || green_x > 0.8 || green_y < 0 || green_y > 0.8 || - green_x + green_y > 1.0) - { - png_warning(png_ptr, "Invalid cHRM green point"); - png_crc_finish(png_ptr, 8); - return; - } - - png_crc_read(png_ptr, buf, 4); - val = png_get_uint_32(buf); - blue_x = (float)val / (float)100000.0; - - png_crc_read(png_ptr, buf, 4); - val = png_get_uint_32(buf); - blue_y = (float)val / (float)100000.0; - - if (blue_x < (float)0 || blue_x > (float)0.8 || blue_y < (float)0 || - blue_y > (float)0.8 || blue_x + blue_y > (float)1.0) - { - png_warning(png_ptr, "Invalid cHRM blue point"); - png_crc_finish(png_ptr, 0); - return; - } - - if (png_crc_finish(png_ptr, 0)) - return; - -#if defined(PNG_READ_sRGB_SUPPORTED) - if (info_ptr->valid & PNG_INFO_sRGB) - { - if (fabs(white_x - (float).3127) > (float).001 || - fabs(white_y - (float).3290) > (float).001 || - fabs( red_x - (float).6400) > (float).001 || - fabs( red_y - (float).3300) > (float).001 || - fabs(green_x - (float).3000) > (float).001 || - fabs(green_y - (float).6000) > (float).001 || - fabs( blue_x - (float).1500) > (float).001 || - fabs( blue_y - (float).0600) > (float).001) - { - - png_warning(png_ptr, - "Ignoring incorrect cHRM value when sRGB is also present"); -#ifndef PNG_NO_STDIO - fprintf(stderr,"wx=%f, wy=%f, rx=%f, ry=%f\n", - white_x, white_y, red_x, red_y); - fprintf(stderr,"gx=%f, gy=%f, bx=%f, by=%f\n", - green_x, green_y, blue_x, blue_y); -#endif - } - return; - } -#endif /* PNG_READ_sRGB_SUPPORTED */ - - png_set_cHRM(png_ptr, info_ptr, - white_x, white_y, red_x, red_y, green_x, green_y, blue_x, blue_y); -} -#endif - -#if defined(PNG_READ_sRGB_SUPPORTED) -void -png_handle_sRGB(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) -{ - int intent; - png_byte buf[1]; - - png_debug(1, "in png_handle_sRGB\n"); - - if (!(png_ptr->mode & PNG_HAVE_IHDR)) - png_error(png_ptr, "Missing IHDR before sRGB"); - else if (png_ptr->mode & PNG_HAVE_IDAT) - { - png_warning(png_ptr, "Invalid sRGB after IDAT"); - png_crc_finish(png_ptr, length); - return; - } - else if (png_ptr->mode & PNG_HAVE_PLTE) - /* Should be an error, but we can cope with it */ - png_warning(png_ptr, "Out of place sRGB chunk"); - - else if (info_ptr != NULL && info_ptr->valid & PNG_INFO_sRGB) - { - png_warning(png_ptr, "Duplicate sRGB chunk"); - png_crc_finish(png_ptr, length); - return; - } - - if (length != 1) - { - png_warning(png_ptr, "Incorrect sRGB chunk length"); - png_crc_finish(png_ptr, length); - return; - } - - png_crc_read(png_ptr, buf, 1); - if (png_crc_finish(png_ptr, 0)) - return; - - intent = buf[0]; - /* check for bad intent */ - if (intent >= PNG_sRGB_INTENT_LAST) - { - png_warning(png_ptr, "Unknown sRGB intent"); - return; - } - -#if defined(PNG_READ_gAMA_SUPPORTED) && defined(PNG_READ_GAMMA_SUPPORTED) - if ((info_ptr->valid & PNG_INFO_gAMA)) - if((png_uint_32)(png_ptr->gamma*(float)100000.+.5) != (png_uint_32)45000L) - { - png_warning(png_ptr, - "Ignoring incorrect gAMA value when sRGB is also present"); -#ifndef PNG_NO_STDIO - fprintf(stderr,"gamma=%f\n",png_ptr->gamma); -#endif - } -#endif /* PNG_READ_gAMA_SUPPORTED */ - -#ifdef PNG_READ_cHRM_SUPPORTED - if (info_ptr->valid & PNG_INFO_cHRM) - if (fabs(info_ptr->x_white - (float).3127) > (float).001 || - fabs(info_ptr->y_white - (float).3290) > (float).001 || - fabs( info_ptr->x_red - (float).6400) > (float).001 || - fabs( info_ptr->y_red - (float).3300) > (float).001 || - fabs(info_ptr->x_green - (float).3000) > (float).001 || - fabs(info_ptr->y_green - (float).6000) > (float).001 || - fabs( info_ptr->x_blue - (float).1500) > (float).001 || - fabs( info_ptr->y_blue - (float).0600) > (float).001) - { - png_warning(png_ptr, - "Ignoring incorrect cHRM value when sRGB is also present"); - } -#endif /* PNG_READ_cHRM_SUPPORTED */ - - png_set_sRGB_gAMA_and_cHRM(png_ptr, info_ptr, intent); -} -#endif /* PNG_READ_sRGB_SUPPORTED */ - -#if defined(PNG_READ_tRNS_SUPPORTED) -void -png_handle_tRNS(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) -{ - png_debug(1, "in png_handle_tRNS\n"); - - if (!(png_ptr->mode & PNG_HAVE_IHDR)) - png_error(png_ptr, "Missing IHDR before tRNS"); - else if (png_ptr->mode & PNG_HAVE_IDAT) - { - png_warning(png_ptr, "Invalid tRNS after IDAT"); - png_crc_finish(png_ptr, length); - return; - } - else if (info_ptr != NULL && info_ptr->valid & PNG_INFO_tRNS) - { - png_warning(png_ptr, "Duplicate tRNS chunk"); - png_crc_finish(png_ptr, length); - return; - } - - if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) - { - if (!(png_ptr->mode & PNG_HAVE_PLTE)) - { - /* Should be an error, but we can cope with it */ - png_warning(png_ptr, "Missing PLTE before tRNS"); - } - else if (length > png_ptr->num_palette) - { - png_warning(png_ptr, "Incorrect tRNS chunk length"); - png_crc_finish(png_ptr, length); - return; - } - - png_ptr->trans = (png_bytep)png_malloc(png_ptr, length); - png_ptr->flags |= PNG_FLAG_FREE_TRANS; - png_crc_read(png_ptr, png_ptr->trans, (png_size_t)length); - png_ptr->num_trans = (png_uint_16)length; - } - else if (png_ptr->color_type == PNG_COLOR_TYPE_RGB) - { - png_byte buf[6]; - - if (length != 6) - { - png_warning(png_ptr, "Incorrect tRNS chunk length"); - png_crc_finish(png_ptr, length); - return; - } - - png_crc_read(png_ptr, buf, (png_size_t)length); - png_ptr->num_trans = 1; - png_ptr->trans_values.red = png_get_uint_16(buf); - png_ptr->trans_values.green = png_get_uint_16(buf + 2); - png_ptr->trans_values.blue = png_get_uint_16(buf + 4); - } - else if (png_ptr->color_type == PNG_COLOR_TYPE_GRAY) - { - png_byte buf[6]; - - if (length != 2) - { - png_warning(png_ptr, "Incorrect tRNS chunk length"); - png_crc_finish(png_ptr, length); - return; - } - - png_crc_read(png_ptr, buf, 2); - png_ptr->num_trans = 1; - png_ptr->trans_values.gray = png_get_uint_16(buf); - } - else - { - png_warning(png_ptr, "tRNS chunk not allowed with alpha channel"); - png_crc_finish(png_ptr, length); - return; - } - - if (png_crc_finish(png_ptr, 0)) - return; - - png_set_tRNS(png_ptr, info_ptr, png_ptr->trans, png_ptr->num_trans, - &(png_ptr->trans_values)); -} -#endif - -#if defined(PNG_READ_bKGD_SUPPORTED) -void -png_handle_bKGD(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) -{ - png_size_t truelen; - png_byte buf[6]; - - png_debug(1, "in png_handle_bKGD\n"); - - if (!(png_ptr->mode & PNG_HAVE_IHDR)) - png_error(png_ptr, "Missing IHDR before bKGD"); - else if (png_ptr->mode & PNG_HAVE_IDAT) - { - png_warning(png_ptr, "Invalid bKGD after IDAT"); - png_crc_finish(png_ptr, length); - return; - } - else if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE && - !(png_ptr->mode & PNG_HAVE_PLTE)) - { - png_warning(png_ptr, "Missing PLTE before bKGD"); - png_crc_finish(png_ptr, length); - return; - } - else if (info_ptr != NULL && info_ptr->valid & PNG_INFO_bKGD) - { - png_warning(png_ptr, "Duplicate bKGD chunk"); - png_crc_finish(png_ptr, length); - return; - } - - if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) - truelen = 1; - else if (png_ptr->color_type & PNG_COLOR_MASK_COLOR) - truelen = 6; - else - truelen = 2; - - if (length != truelen) - { - png_warning(png_ptr, "Incorrect bKGD chunk length"); - png_crc_finish(png_ptr, length); - return; - } - - png_crc_read(png_ptr, buf, truelen); - if (png_crc_finish(png_ptr, 0)) - return; - - /* We convert the index value into RGB components so that we can allow - * arbitrary RGB values for background when we have transparency, and - * so it is easy to determine the RGB values of the background color - * from the info_ptr struct. */ - if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) - { - png_ptr->background.index = buf[0]; - png_ptr->background.red = (png_uint_16)png_ptr->palette[buf[0]].red; - png_ptr->background.green = (png_uint_16)png_ptr->palette[buf[0]].green; - png_ptr->background.blue = (png_uint_16)png_ptr->palette[buf[0]].blue; - } - else if (!(png_ptr->color_type & PNG_COLOR_MASK_COLOR)) /* GRAY */ - { - png_ptr->background.red = - png_ptr->background.green = - png_ptr->background.blue = - png_ptr->background.gray = png_get_uint_16(buf); - } - else - { - png_ptr->background.red = png_get_uint_16(buf); - png_ptr->background.green = png_get_uint_16(buf + 2); - png_ptr->background.blue = png_get_uint_16(buf + 4); - } - - png_set_bKGD(png_ptr, info_ptr, &(png_ptr->background)); -} -#endif - -#if defined(PNG_READ_hIST_SUPPORTED) -void -png_handle_hIST(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) -{ - int num, i; - - png_debug(1, "in png_handle_hIST\n"); - - if (!(png_ptr->mode & PNG_HAVE_IHDR)) - png_error(png_ptr, "Missing IHDR before hIST"); - else if (png_ptr->mode & PNG_HAVE_IDAT) - { - png_warning(png_ptr, "Invalid hIST after IDAT"); - png_crc_finish(png_ptr, length); - return; - } - else if (!(png_ptr->mode & PNG_HAVE_PLTE)) - { - png_warning(png_ptr, "Missing PLTE before hIST"); - png_crc_finish(png_ptr, length); - return; - } - else if (info_ptr != NULL && info_ptr->valid & PNG_INFO_hIST) - { - png_warning(png_ptr, "Duplicate hIST chunk"); - png_crc_finish(png_ptr, length); - return; - } - - if (length != (png_uint_32)(2 * png_ptr->num_palette)) - { - png_warning(png_ptr, "Incorrect hIST chunk length"); - png_crc_finish(png_ptr, length); - return; - } - - num = (int)length / 2; - png_ptr->hist = (png_uint_16p)png_malloc(png_ptr, - (png_uint_32)(num * sizeof (png_uint_16))); - png_ptr->flags |= PNG_FLAG_FREE_HIST; - for (i = 0; i < num; i++) - { - png_byte buf[2]; - - png_crc_read(png_ptr, buf, 2); - png_ptr->hist[i] = png_get_uint_16(buf); - } - - if (png_crc_finish(png_ptr, 0)) - return; - - png_set_hIST(png_ptr, info_ptr, png_ptr->hist); -} -#endif - -#if defined(PNG_READ_pHYs_SUPPORTED) -void -png_handle_pHYs(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) -{ - png_byte buf[9]; - png_uint_32 res_x, res_y; - int unit_type; - - png_debug(1, "in png_handle_pHYs\n"); - - if (!(png_ptr->mode & PNG_HAVE_IHDR)) - png_error(png_ptr, "Missing IHDR before pHYS"); - else if (png_ptr->mode & PNG_HAVE_IDAT) - { - png_warning(png_ptr, "Invalid pHYS after IDAT"); - png_crc_finish(png_ptr, length); - return; - } - else if (info_ptr != NULL && info_ptr->valid & PNG_INFO_pHYs) - { - png_warning(png_ptr, "Duplicate pHYS chunk"); - png_crc_finish(png_ptr, length); - return; - } - - if (length != 9) - { - png_warning(png_ptr, "Incorrect pHYs chunk length"); - png_crc_finish(png_ptr, length); - return; - } - - png_crc_read(png_ptr, buf, 9); - if (png_crc_finish(png_ptr, 0)) - return; - - res_x = png_get_uint_32(buf); - res_y = png_get_uint_32(buf + 4); - unit_type = buf[8]; - png_set_pHYs(png_ptr, info_ptr, res_x, res_y, unit_type); -} -#endif - -#if defined(PNG_READ_oFFs_SUPPORTED) -void -png_handle_oFFs(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) -{ - png_byte buf[9]; - png_uint_32 offset_x, offset_y; - int unit_type; - - png_debug(1, "in png_handle_oFFs\n"); - - if (!(png_ptr->mode & PNG_HAVE_IHDR)) - png_error(png_ptr, "Missing IHDR before oFFs"); - else if (png_ptr->mode & PNG_HAVE_IDAT) - { - png_warning(png_ptr, "Invalid oFFs after IDAT"); - png_crc_finish(png_ptr, length); - return; - } - else if (info_ptr != NULL && info_ptr->valid & PNG_INFO_oFFs) - { - png_warning(png_ptr, "Duplicate oFFs chunk"); - png_crc_finish(png_ptr, length); - return; - } - - if (length != 9) - { - png_warning(png_ptr, "Incorrect oFFs chunk length"); - png_crc_finish(png_ptr, length); - return; - } - - png_crc_read(png_ptr, buf, 9); - if (png_crc_finish(png_ptr, 0)) - return; - - offset_x = png_get_uint_32(buf); - offset_y = png_get_uint_32(buf + 4); - unit_type = buf[8]; - png_set_oFFs(png_ptr, info_ptr, offset_x, offset_y, unit_type); -} -#endif - -#if defined(PNG_READ_pCAL_SUPPORTED) -/* read the pCAL chunk (png-scivis-19970203) */ -void -png_handle_pCAL(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) -{ - png_charp purpose; - png_int_32 X0, X1; - png_byte type, nparams; - png_charp buf, units, endptr; - png_charpp params; - png_size_t slength; - int i; - - png_debug(1, "in png_handle_pCAL\n"); - - if (!(png_ptr->mode & PNG_HAVE_IHDR)) - png_error(png_ptr, "Missing IHDR before pCAL"); - else if (png_ptr->mode & PNG_HAVE_IDAT) - { - png_warning(png_ptr, "Invalid pCAL after IDAT"); - png_crc_finish(png_ptr, length); - return; - } - else if (info_ptr != NULL && info_ptr->valid & PNG_INFO_pCAL) - { - png_warning(png_ptr, "Duplicate pCAL chunk"); - png_crc_finish(png_ptr, length); - return; - } - - png_debug1(2, "Allocating and reading pCAL chunk data (%d bytes)\n", - length + 1); - purpose = (png_charp)png_malloc(png_ptr, length + 1); - slength = (png_size_t)length; - png_crc_read(png_ptr, (png_bytep)purpose, slength); - - if (png_crc_finish(png_ptr, 0)) - { - png_free(png_ptr, purpose); - return; - } - - purpose[slength] = 0x00; /* null terminate the last string */ - - png_debug(3, "Finding end of pCAL purpose string\n"); - for (buf = purpose; *buf != '\0'; buf++) - /* empty loop */ ; - - endptr = purpose + slength; - - /* We need to have at least 12 bytes after the purpose string - in order to get the parameter information. */ - if (endptr <= buf + 12) - { - png_warning(png_ptr, "Invalid pCAL data"); - png_free(png_ptr, purpose); - return; - } - - png_debug(3, "Reading pCAL X0, X1, type, nparams, and units\n"); - X0 = png_get_int_32((png_bytep)buf+1); - X1 = png_get_int_32((png_bytep)buf+5); - type = buf[9]; - nparams = buf[10]; - units = buf + 11; - - png_debug(3, "Checking pCAL equation type and number of parameters\n"); - /* Check that we have the right number of parameters for known - equation types. */ - if ((type == PNG_EQUATION_LINEAR && nparams != 2) || - (type == PNG_EQUATION_BASE_E && nparams != 3) || - (type == PNG_EQUATION_ARBITRARY && nparams != 3) || - (type == PNG_EQUATION_HYPERBOLIC && nparams != 4)) - { - png_warning(png_ptr, "Invalid pCAL parameters for equation type"); - png_free(png_ptr, purpose); - return; - } - else if (type >= PNG_EQUATION_LAST) - { - png_warning(png_ptr, "Unrecognized equation type for pCAL chunk"); - } - - for (buf = units; *buf != 0x00; buf++) - /* Empty loop to move past the units string. */ ; - - png_debug(3, "Allocating pCAL parameters array\n"); - params = (png_charpp)png_malloc(png_ptr, (png_uint_32)(nparams - *sizeof(png_charp))) ; - - /* Get pointers to the start of each parameter string. */ - for (i = 0; i < (int)nparams; i++) - { - buf++; /* Skip the null string terminator from previous parameter. */ - - png_debug1(3, "Reading pCAL parameter %d\n", i); - for (params[i] = buf; *buf != 0x00 && buf <= endptr; buf++) - /* Empty loop to move past each parameter string */ ; - - /* Make sure we haven't run out of data yet */ - if (buf > endptr) - { - png_warning(png_ptr, "Invalid pCAL data"); - png_free(png_ptr, purpose); - png_free(png_ptr, params); - return; - } - } - - png_set_pCAL(png_ptr, info_ptr, purpose, X0, X1, type, nparams, - units, params); - - png_free(png_ptr, purpose); - png_free(png_ptr, params); -} -#endif - -#if defined(PNG_READ_tIME_SUPPORTED) -void -png_handle_tIME(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) -{ - png_byte buf[7]; - png_time mod_time; - - png_debug(1, "in png_handle_tIME\n"); - - if (!(png_ptr->mode & PNG_HAVE_IHDR)) - png_error(png_ptr, "Out of place tIME chunk"); - else if (info_ptr != NULL && info_ptr->valid & PNG_INFO_tIME) - { - png_warning(png_ptr, "Duplicate tIME chunk"); - png_crc_finish(png_ptr, length); - return; - } - - if (png_ptr->mode & PNG_HAVE_IDAT) - png_ptr->mode |= PNG_AFTER_IDAT; - - if (length != 7) - { - png_warning(png_ptr, "Incorrect tIME chunk length"); - png_crc_finish(png_ptr, length); - return; - } - - png_crc_read(png_ptr, buf, 7); - if (png_crc_finish(png_ptr, 0)) - return; - - mod_time.second = buf[6]; - mod_time.minute = buf[5]; - mod_time.hour = buf[4]; - mod_time.day = buf[3]; - mod_time.month = buf[2]; - mod_time.year = png_get_uint_16(buf); - - png_set_tIME(png_ptr, info_ptr, &mod_time); -} -#endif - -#if defined(PNG_READ_tEXt_SUPPORTED) -/* Note: this does not properly handle chunks that are > 64K under DOS */ -void -png_handle_tEXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) -{ - png_textp text_ptr; - png_charp key; - png_charp text; - png_uint_32 skip = 0; - png_size_t slength; - - png_debug(1, "in png_handle_tEXt\n"); - - if (!(png_ptr->mode & PNG_HAVE_IHDR)) - png_error(png_ptr, "Missing IHDR before tEXt"); - - if (png_ptr->mode & PNG_HAVE_IDAT) - png_ptr->mode |= PNG_AFTER_IDAT; - -#ifdef PNG_MAX_MALLOC_64K - if (length > (png_uint_32)65535L) - { - png_warning(png_ptr, "tEXt chunk too large to fit in memory"); - skip = length - (png_uint_32)65535L; - length = (png_uint_32)65535L; - } -#endif - - key = (png_charp)png_malloc(png_ptr, length + 1); - slength = (png_size_t)length; - png_crc_read(png_ptr, (png_bytep)key, slength); - - if (png_crc_finish(png_ptr, skip)) - { - png_free(png_ptr, key); - return; - } - - key[slength] = 0x00; - - for (text = key; *text; text++) - /* empty loop to find end of key */ ; - - if (text != key + slength) - text++; - - text_ptr = (png_textp)png_malloc(png_ptr, (png_uint_32)sizeof(png_text)); - text_ptr->compression = PNG_TEXT_COMPRESSION_NONE; - text_ptr->key = key; - text_ptr->text = text; - - png_set_text(png_ptr, info_ptr, text_ptr, 1); - - png_free(png_ptr, text_ptr); -} -#endif - -#if defined(PNG_READ_zTXt_SUPPORTED) -/* note: this does not correctly handle chunks that are > 64K under DOS */ -void -png_handle_zTXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) -{ - static char msg[] = "Error decoding zTXt chunk"; - png_textp text_ptr; - png_charp key; - png_charp text; - int comp_type = PNG_TEXT_COMPRESSION_NONE; - png_size_t slength; - - png_debug(1, "in png_handle_zTXt\n"); - - if (!(png_ptr->mode & PNG_HAVE_IHDR)) - png_error(png_ptr, "Missing IHDR before zTXt"); - - if (png_ptr->mode & PNG_HAVE_IDAT) - png_ptr->mode |= PNG_AFTER_IDAT; - -#ifdef PNG_MAX_MALLOC_64K - /* We will no doubt have problems with chunks even half this size, but - there is no hard and fast rule to tell us where to stop. */ - if (length > (png_uint_32)65535L) - { - png_warning(png_ptr,"zTXt chunk too large to fit in memory"); - png_crc_finish(png_ptr, length); - return; - } -#endif - - key = (png_charp)png_malloc(png_ptr, length + 1); - slength = (png_size_t)length; - png_crc_read(png_ptr, (png_bytep)key, slength); - if (png_crc_finish(png_ptr, 0)) - { - png_free(png_ptr, key); - return; - } - - key[slength] = 0x00; - - for (text = key; *text; text++) - /* empty loop */ ; - - /* zTXt must have some text after the keyword */ - if (text == key + slength) - { - png_warning(png_ptr, "Zero length zTXt chunk"); - } - else if ((comp_type = *(++text)) == PNG_TEXT_COMPRESSION_zTXt) - { - png_size_t text_size, key_size; - text++; - - png_ptr->zstream.next_in = (png_bytep)text; - png_ptr->zstream.avail_in = (uInt)(length - (text - key)); - png_ptr->zstream.next_out = png_ptr->zbuf; - png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size; - - key_size = (png_size_t)(text - key); - text_size = 0; - text = NULL; - - while (png_ptr->zstream.avail_in) - { - int ret; - - ret = inflate(&png_ptr->zstream, Z_PARTIAL_FLUSH); - if (ret != Z_OK && ret != Z_STREAM_END) - { - if (png_ptr->zstream.msg != NULL) - png_warning(png_ptr, png_ptr->zstream.msg); - else - png_warning(png_ptr, msg); - inflateReset(&png_ptr->zstream); - png_ptr->zstream.avail_in = 0; - - if (text == NULL) - { - text_size = key_size + sizeof(msg) + 1; - text = (png_charp)png_malloc(png_ptr, (png_uint_32)text_size); - png_memcpy(text, key, key_size); - } - - text[text_size - 1] = 0x00; - - /* Copy what we can of the error message into the text chunk */ - text_size = (png_size_t)(slength - (text - key) - 1); - text_size = sizeof(msg) > text_size ? text_size : sizeof(msg); - png_memcpy(text + key_size, msg, text_size + 1); - break; - } - if (!png_ptr->zstream.avail_out || ret == Z_STREAM_END) - { - if (text == NULL) - { - text = (png_charp)png_malloc(png_ptr, - (png_uint_32)(png_ptr->zbuf_size - png_ptr->zstream.avail_out - + key_size + 1)); - png_memcpy(text + key_size, png_ptr->zbuf, - png_ptr->zbuf_size - png_ptr->zstream.avail_out); - png_memcpy(text, key, key_size); - text_size = key_size + png_ptr->zbuf_size - - png_ptr->zstream.avail_out; - *(text + text_size) = 0x00; - } - else - { - png_charp tmp; - - tmp = text; - text = (png_charp)png_malloc(png_ptr, (png_uint_32)(text_size + - png_ptr->zbuf_size - png_ptr->zstream.avail_out + 1)); - png_memcpy(text, tmp, text_size); - png_free(png_ptr, tmp); - png_memcpy(text + text_size, png_ptr->zbuf, - (png_ptr->zbuf_size - png_ptr->zstream.avail_out)); - text_size += png_ptr->zbuf_size - png_ptr->zstream.avail_out; - *(text + text_size) = 0x00; - } - if (ret != Z_STREAM_END) - { - png_ptr->zstream.next_out = png_ptr->zbuf; - png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size; - } - else - { - break; - } - } - } - - inflateReset(&png_ptr->zstream); - png_ptr->zstream.avail_in = 0; - - png_free(png_ptr, key); - key = text; - text += key_size; - } - else /* if (comp_type >= PNG_TEXT_COMPRESSION_LAST) */ - { - png_size_t text_size; -#if !defined(PNG_NO_STDIO) - char umsg[50]; - - sprintf(umsg, "Unknown zTXt compression type %d", comp_type); - png_warning(png_ptr, umsg); -#else - png_warning(png_ptr, "Unknown zTXt compression type"); -#endif - - /* Copy what we can of the error message into the text chunk */ - text_size = (png_size_t)(slength - (text - key) - 1); - text_size = sizeof(msg) > text_size ? text_size : sizeof(msg); - png_memcpy(text, msg, text_size + 1); - } - - text_ptr = (png_textp)png_malloc(png_ptr, (png_uint_32)sizeof(png_text)); - text_ptr->compression = comp_type; - text_ptr->key = key; - text_ptr->text = text; - - png_set_text(png_ptr, info_ptr, text_ptr, 1); - - png_free(png_ptr, text_ptr); -} -#endif - -/* This function is called when we haven't found a handler for a - chunk. If there isn't a problem with the chunk itself (ie bad - chunk name, CRC, or a critical chunk), the chunk is silently ignored. */ -void -png_handle_unknown(png_structp png_ptr, png_infop info_ptr, png_uint_32 length) -{ - png_debug(1, "in png_handle_unknown\n"); - - /* In the future we can have code here that calls user-supplied - * callback functions for unknown chunks before they are ignored or - * cause an error. - */ - png_check_chunk_name(png_ptr, png_ptr->chunk_name); - - if (!(png_ptr->chunk_name[0] & 0x20)) - { - png_chunk_error(png_ptr, "unknown critical chunk"); - - /* to quiet compiler warnings about unused info_ptr */ - if (info_ptr == NULL) - return; - } - - if (png_ptr->mode & PNG_HAVE_IDAT) - png_ptr->mode |= PNG_AFTER_IDAT; - - png_crc_finish(png_ptr, length); - -} - -/* This function is called to verify that a chunk name is valid. - This function can't have the "critical chunk check" incorporated - into it, since in the future we will need to be able to call user - functions to handle unknown critical chunks after we check that - the chunk name itself is valid. */ - -#define isnonalpha(c) ((c) < 41 || (c) > 122 || ((c) > 90 && (c) < 97)) - -void -png_check_chunk_name(png_structp png_ptr, png_bytep chunk_name) -{ - png_debug(1, "in png_check_chunk_name\n"); - if (isnonalpha(chunk_name[0]) || isnonalpha(chunk_name[1]) || - isnonalpha(chunk_name[2]) || isnonalpha(chunk_name[3])) - { - png_chunk_error(png_ptr, "invalid chunk type"); - } -} - -/* Combines the row recently read in with the previous row. - This routine takes care of alpha and transparency if requested. - This routine also handles the two methods of progressive display - of interlaced images, depending on the mask value. - The mask value describes which pixels are to be combined with - the row. The pattern always repeats every 8 pixels, so just 8 - bits are needed. A one indicates the pixels is to be combined, - a zero indicates the pixel is to be skipped. This is in addition - to any alpha or transparency value associated with the pixel. If - you want all pixels to be combined, pass 0xff (255) in mask. */ -void -png_combine_row(png_structp png_ptr, png_bytep row, - int mask) -{ - png_debug(1,"in png_combine_row\n"); - if (mask == 0xff) - { - png_memcpy(row, png_ptr->row_buf + 1, - (png_size_t)((png_ptr->width * - png_ptr->row_info.pixel_depth + 7) >> 3)); - } - else - { - switch (png_ptr->row_info.pixel_depth) - { - case 1: - { - png_bytep sp; - png_bytep dp; - int s_inc, s_start, s_end; - int m; - int shift; - png_uint_32 i; - - sp = png_ptr->row_buf + 1; - dp = row; - m = 0x80; -#if defined(PNG_READ_PACKSWAP_SUPPORTED) - if (png_ptr->transformations & PNG_PACKSWAP) - { - s_start = 0; - s_end = 7; - s_inc = 1; - } - else -#endif - { - s_start = 7; - s_end = 0; - s_inc = -1; - } - - shift = s_start; - - for (i = 0; i < png_ptr->width; i++) - { - if (m & mask) - { - int value; - - value = (*sp >> shift) & 0x1; - *dp &= (png_byte)((0x7f7f >> (7 - shift)) & 0xff); - *dp |= (png_byte)(value << shift); - } - - if (shift == s_end) - { - shift = s_start; - sp++; - dp++; - } - else - shift += s_inc; - - if (m == 1) - m = 0x80; - else - m >>= 1; - } - break; - } - case 2: - { - png_bytep sp; - png_bytep dp; - int s_start, s_end, s_inc; - int m; - int shift; - png_uint_32 i; - int value; - - sp = png_ptr->row_buf + 1; - dp = row; - m = 0x80; -#if defined(PNG_READ_PACKSWAP_SUPPORTED) - if (png_ptr->transformations & PNG_PACKSWAP) - { - s_start = 0; - s_end = 6; - s_inc = 2; - } - else -#endif - { - s_start = 6; - s_end = 0; - s_inc = -2; - } - - shift = s_start; - - for (i = 0; i < png_ptr->width; i++) - { - if (m & mask) - { - value = (*sp >> shift) & 0x3; - *dp &= (png_byte)((0x3f3f >> (6 - shift)) & 0xff); - *dp |= (png_byte)(value << shift); - } - - if (shift == s_end) - { - shift = s_start; - sp++; - dp++; - } - else - shift += s_inc; - if (m == 1) - m = 0x80; - else - m >>= 1; - } - break; - } - case 4: - { - png_bytep sp; - png_bytep dp; - int s_start, s_end, s_inc; - int m; - int shift; - png_uint_32 i; - int value; - - sp = png_ptr->row_buf + 1; - dp = row; - m = 0x80; -#if defined(PNG_READ_PACKSWAP_SUPPORTED) - if (png_ptr->transformations & PNG_PACKSWAP) - { - s_start = 0; - s_end = 4; - s_inc = 4; - } - else -#endif - { - s_start = 4; - s_end = 0; - s_inc = -4; - } - shift = s_start; - - for (i = 0; i < png_ptr->width; i++) - { - if (m & mask) - { - value = (*sp >> shift) & 0xf; - *dp &= (png_byte)((0xf0f >> (4 - shift)) & 0xff); - *dp |= (png_byte)(value << shift); - } - - if (shift == s_end) - { - shift = s_start; - sp++; - dp++; - } - else - shift += s_inc; - if (m == 1) - m = 0x80; - else - m >>= 1; - } - break; - } - default: - { - png_bytep sp; - png_bytep dp; - png_size_t pixel_bytes; - png_uint_32 i; - png_byte m; - - pixel_bytes = (png_ptr->row_info.pixel_depth >> 3); - - sp = png_ptr->row_buf + 1; - dp = row; - m = 0x80; - for (i = 0; i < png_ptr->width; i++) - { - if (m & mask) - { - png_memcpy(dp, sp, pixel_bytes); - } - - sp += pixel_bytes; - dp += pixel_bytes; - - if (m == 1) - m = 0x80; - else - m >>= 1; - } - break; - } - } - } -} - -#if defined(PNG_READ_INTERLACING_SUPPORTED) -void -png_do_read_interlace(png_row_infop row_info, png_bytep row, int pass, - png_uint_32 transformations) -{ - png_debug(1,"in png_do_read_interlace\n"); - if (row != NULL && row_info != NULL) - { - png_uint_32 final_width; - - final_width = row_info->width * png_pass_inc[pass]; - - switch (row_info->pixel_depth) - { - case 1: - { - png_bytep sp, dp; - int sshift, dshift; - int s_start, s_end, s_inc; - png_byte v; - png_uint_32 i; - int j; - - sp = row + (png_size_t)((row_info->width - 1) >> 3); - dp = row + (png_size_t)((final_width - 1) >> 3); -#if defined(PNG_READ_PACKSWAP_SUPPORTED) - if (transformations & PNG_PACKSWAP) - { - sshift = (int)((row_info->width + 7) & 7); - dshift = (int)((final_width + 7) & 7); - s_start = 7; - s_end = 0; - s_inc = -1; - } - else -#endif - { - sshift = 7 - (int)((row_info->width + 7) & 7); - dshift = 7 - (int)((final_width + 7) & 7); - s_start = 0; - s_end = 7; - s_inc = 1; - } - - for (i = row_info->width; i; i--) - { - v = (png_byte)((*sp >> sshift) & 0x1); - for (j = 0; j < png_pass_inc[pass]; j++) - { - *dp &= (png_byte)((0x7f7f >> (7 - dshift)) & 0xff); - *dp |= (png_byte)(v << dshift); - if (dshift == s_end) - { - dshift = s_start; - dp--; - } - else - dshift += s_inc; - } - if (sshift == s_end) - { - sshift = s_start; - sp--; - } - else - sshift += s_inc; - } - break; - } - case 2: - { - png_bytep sp, dp; - int sshift, dshift; - int s_start, s_end, s_inc; - png_uint_32 i; - - sp = row + (png_uint_32)((row_info->width - 1) >> 2); - dp = row + (png_uint_32)((final_width - 1) >> 2); -#if defined(PNG_READ_PACKSWAP_SUPPORTED) - if (transformations & PNG_PACKSWAP) - { - sshift = (int)(((row_info->width + 3) & 3) << 1); - dshift = (int)(((final_width + 3) & 3) << 1); - s_start = 6; - s_end = 0; - s_inc = -2; - } - else -#endif - { - sshift = (int)((3 - ((row_info->width + 3) & 3)) << 1); - dshift = (int)((3 - ((final_width + 3) & 3)) << 1); - s_start = 0; - s_end = 6; - s_inc = 2; - } - - for (i = row_info->width; i; i--) - { - png_byte v; - int j; - - v = (png_byte)((*sp >> sshift) & 0x3); - for (j = 0; j < png_pass_inc[pass]; j++) - { - *dp &= (png_byte)((0x3f3f >> (6 - dshift)) & 0xff); - *dp |= (png_byte)(v << dshift); - if (dshift == s_end) - { - dshift = s_start; - dp--; - } - else - dshift += s_inc; - } - if (sshift == s_end) - { - sshift = s_start; - sp--; - } - else - sshift += s_inc; - } - break; - } - case 4: - { - png_bytep sp, dp; - int sshift, dshift; - int s_start, s_end, s_inc; - png_uint_32 i; - - sp = row + (png_size_t)((row_info->width - 1) >> 1); - dp = row + (png_size_t)((final_width - 1) >> 1); -#if defined(PNG_READ_PACKSWAP_SUPPORTED) - if (transformations & PNG_PACKSWAP) - { - sshift = (int)(((row_info->width + 1) & 1) << 2); - dshift = (int)(((final_width + 1) & 1) << 2); - s_start = 4; - s_end = 0; - s_inc = -4; - } - else -#endif - { - sshift = (int)((1 - ((row_info->width + 1) & 1)) << 2); - dshift = (int)((1 - ((final_width + 1) & 1)) << 2); - s_start = 0; - s_end = 4; - s_inc = 4; - } - - for (i = row_info->width; i; i--) - { - png_byte v; - int j; - - v = (png_byte)((*sp >> sshift) & 0xf); - for (j = 0; j < png_pass_inc[pass]; j++) - { - *dp &= (png_byte)((0xf0f >> (4 - dshift)) & 0xff); - *dp |= (png_byte)(v << dshift); - if (dshift == s_end) - { - dshift = s_start; - dp--; - } - else - dshift += s_inc; - } - if (sshift == s_end) - { - sshift = s_start; - sp--; - } - else - sshift += s_inc; - } - break; - } - default: - { - png_bytep sp, dp; - png_uint_32 i; - png_size_t pixel_bytes; - - pixel_bytes = (row_info->pixel_depth >> 3); - - sp = row + (png_size_t)(row_info->width - 1) * pixel_bytes; - dp = row + (png_size_t)(final_width - 1) * pixel_bytes; - for (i = row_info->width; i; i--) - { - png_byte v[8]; - int j; - - png_memcpy(v, sp, pixel_bytes); - for (j = 0; j < png_pass_inc[pass]; j++) - { - png_memcpy(dp, v, pixel_bytes); - dp -= pixel_bytes; - } - sp -= pixel_bytes; - } - break; - } - } - row_info->width = final_width; - row_info->rowbytes = ((final_width * - (png_uint_32)row_info->pixel_depth + 7) >> 3); - } -} -#endif - -void -png_read_filter_row(png_structp png_ptr, png_row_infop row_info, png_bytep row, - png_bytep prev_row, int filter) -{ - png_debug(1, "in png_read_filter_row\n"); - png_debug2(2,"row = %d, filter = %d\n", png_ptr->row_number, filter); - - - switch (filter) - { - case PNG_FILTER_VALUE_NONE: - break; - case PNG_FILTER_VALUE_SUB: - { - png_uint_32 i; - int bpp; - png_bytep rp; - png_bytep lp; - - bpp = (row_info->pixel_depth + 7) / 8; - for (i = (png_uint_32)bpp, rp = row + bpp, lp = row; - i < row_info->rowbytes; i++, rp++, lp++) - { - *rp = (png_byte)(((int)(*rp) + (int)(*lp)) & 0xff); - } - break; - } - case PNG_FILTER_VALUE_UP: - { - png_uint_32 i; - png_bytep rp; - png_bytep pp; - - for (i = 0, rp = row, pp = prev_row; - i < row_info->rowbytes; i++, rp++, pp++) - { - *rp = (png_byte)(((int)(*rp) + (int)(*pp)) & 0xff); - } - break; - } - case PNG_FILTER_VALUE_AVG: - { - png_uint_32 i; - int bpp; - png_bytep rp; - png_bytep pp; - png_bytep lp; - - bpp = (row_info->pixel_depth + 7) / 8; - for (i = 0, rp = row, pp = prev_row; - i < (png_uint_32)bpp; i++, rp++, pp++) - { - *rp = (png_byte)(((int)(*rp) + - ((int)(*pp) / 2)) & 0xff); - } - for (lp = row; i < row_info->rowbytes; i++, rp++, lp++, pp++) - { - *rp = (png_byte)(((int)(*rp) + - (int)(*pp + *lp) / 2) & 0xff); - } - break; - } - case PNG_FILTER_VALUE_PAETH: - { - int bpp; - png_uint_32 i; - png_bytep rp; - png_bytep pp; - png_bytep lp; - png_bytep cp; - - bpp = (row_info->pixel_depth + 7) / 8; - for (i = 0, rp = row, pp = prev_row, - lp = row - bpp, cp = prev_row - bpp; - i < row_info->rowbytes; i++, rp++, pp++, lp++, cp++) - { - int a, b, c, pa, pb, pc, p; - - b = *pp; - if (i >= (png_uint_32)bpp) - { - c = *cp; - a = *lp; - } - else - { - a = c = 0; - } - p = a + b - c; - pa = abs(p - a); - pb = abs(p - b); - pc = abs(p - c); - - if (pa <= pb && pa <= pc) - p = a; - else if (pb <= pc) - p = b; - else - p = c; - - *rp = (png_byte)(((int)(*rp) + p) & 0xff); - } - break; - } - default: - png_error(png_ptr, "Bad adaptive filter type"); - break; - } -} - -void -png_read_finish_row(png_structp png_ptr) -{ - png_debug(1, "in png_read_finish_row\n"); - png_ptr->row_number++; - if (png_ptr->row_number < png_ptr->num_rows) - return; - - if (png_ptr->interlaced) - { - png_ptr->row_number = 0; - png_memset_check(png_ptr, png_ptr->prev_row, 0, png_ptr->rowbytes + 1); - do - { - png_ptr->pass++; - if (png_ptr->pass >= 7) - break; - png_ptr->iwidth = (png_ptr->width + - png_pass_inc[png_ptr->pass] - 1 - - png_pass_start[png_ptr->pass]) / - png_pass_inc[png_ptr->pass]; - png_ptr->irowbytes = ((png_ptr->iwidth * - (png_uint_32)png_ptr->pixel_depth + 7) >> 3) +1; - - if (!(png_ptr->transformations & PNG_INTERLACE)) - { - png_ptr->num_rows = (png_ptr->height + - png_pass_yinc[png_ptr->pass] - 1 - - png_pass_ystart[png_ptr->pass]) / - png_pass_yinc[png_ptr->pass]; - if (!(png_ptr->num_rows)) - continue; - } - if (png_ptr->transformations & PNG_INTERLACE) - break; - } while (png_ptr->iwidth == 0); - - if (png_ptr->pass < 7) - return; - } - - if (!(png_ptr->flags & PNG_FLAG_ZLIB_FINISHED)) - { - char extra; - int ret; - - png_ptr->zstream.next_out = (Byte *)&extra; - png_ptr->zstream.avail_out = (uInt)1; - for(;;) - { - if (!(png_ptr->zstream.avail_in)) - { - while (!png_ptr->idat_size) - { - png_byte chunk_length[4]; - - png_crc_finish(png_ptr, 0); - - png_read_data(png_ptr, chunk_length, 4); - png_ptr->idat_size = png_get_uint_32(chunk_length); - - png_reset_crc(png_ptr); - png_crc_read(png_ptr, png_ptr->chunk_name, 4); - if (png_memcmp(png_ptr->chunk_name, png_IDAT, 4)) - png_error(png_ptr, "Not enough image data"); - - } - png_ptr->zstream.avail_in = (uInt)png_ptr->zbuf_size; - png_ptr->zstream.next_in = png_ptr->zbuf; - if (png_ptr->zbuf_size > png_ptr->idat_size) - png_ptr->zstream.avail_in = (uInt)png_ptr->idat_size; - png_crc_read(png_ptr, png_ptr->zbuf, png_ptr->zstream.avail_in); - png_ptr->idat_size -= png_ptr->zstream.avail_in; - } - ret = inflate(&png_ptr->zstream, Z_PARTIAL_FLUSH); - if (ret == Z_STREAM_END) - { - if (!(png_ptr->zstream.avail_out) || png_ptr->zstream.avail_in || - png_ptr->idat_size) - png_error(png_ptr, "Extra compressed data"); - png_ptr->mode |= PNG_AFTER_IDAT; - png_ptr->flags |= PNG_FLAG_ZLIB_FINISHED; - break; - } - if (ret != Z_OK) - png_error(png_ptr, png_ptr->zstream.msg ? png_ptr->zstream.msg : - "Decompression Error"); - - if (!(png_ptr->zstream.avail_out)) - png_error(png_ptr, "Extra compressed data"); - - } - png_ptr->zstream.avail_out = 0; - } - - if (png_ptr->idat_size || png_ptr->zstream.avail_in) - png_error(png_ptr, "Extra compression data"); - - inflateReset(&png_ptr->zstream); - - png_ptr->mode |= PNG_AFTER_IDAT; -} - -void -png_read_start_row(png_structp png_ptr) -{ - int max_pixel_depth; - png_uint_32 rowbytes; - - png_debug(1, "in png_read_start_row\n"); - png_ptr->zstream.avail_in = 0; - png_init_read_transformations(png_ptr); - if (png_ptr->interlaced) - { - if (!(png_ptr->transformations & PNG_INTERLACE)) - png_ptr->num_rows = (png_ptr->height + png_pass_yinc[0] - 1 - - png_pass_ystart[0]) / png_pass_yinc[0]; - else - png_ptr->num_rows = png_ptr->height; - - png_ptr->iwidth = (png_ptr->width + - png_pass_inc[png_ptr->pass] - 1 - - png_pass_start[png_ptr->pass]) / - png_pass_inc[png_ptr->pass]; - - rowbytes = ((png_ptr->iwidth * - (png_uint_32)png_ptr->pixel_depth + 7) >> 3) +1; - png_ptr->irowbytes = (png_size_t)rowbytes; - if((png_uint_32)png_ptr->irowbytes != rowbytes) - png_error(png_ptr, "Rowbytes overflow in png_read_start_row"); - } - else - { - png_ptr->num_rows = png_ptr->height; - png_ptr->iwidth = png_ptr->width; - png_ptr->irowbytes = png_ptr->rowbytes + 1; - } - max_pixel_depth = png_ptr->pixel_depth; - -#if defined(PNG_READ_PACK_SUPPORTED) - if ((png_ptr->transformations & PNG_PACK) && png_ptr->bit_depth < 8) - max_pixel_depth = 8; -#endif - -#if defined(PNG_READ_EXPAND_SUPPORTED) - if (png_ptr->transformations & PNG_EXPAND) - { - if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) - { - if (png_ptr->num_trans) - max_pixel_depth = 32; - else - max_pixel_depth = 24; - } - else if (png_ptr->color_type == PNG_COLOR_TYPE_GRAY) - { - if (max_pixel_depth < 8) - max_pixel_depth = 8; - if (png_ptr->num_trans) - max_pixel_depth *= 2; - } - else if (png_ptr->color_type == PNG_COLOR_TYPE_RGB) - { - if (png_ptr->num_trans) - { - max_pixel_depth *= 4; - max_pixel_depth /= 3; - } - } - } -#endif - -#if defined(PNG_READ_FILLER_SUPPORTED) - if (png_ptr->transformations & (PNG_FILLER)) - { - if (max_pixel_depth < 32) - max_pixel_depth = 32; - } -#endif - -#if defined(PNG_READ_GRAY_TO_RGB_SUPPORTED) - if (png_ptr->transformations & PNG_GRAY_TO_RGB) - { - if ((png_ptr->num_trans && (png_ptr->transformations & PNG_EXPAND)) || - png_ptr->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) - { - if (max_pixel_depth <= 16) - max_pixel_depth = 32; - else if (max_pixel_depth <= 32) - max_pixel_depth = 64; - } - else - { - if (max_pixel_depth <= 8) - max_pixel_depth = 24; - else if (max_pixel_depth <= 16) - max_pixel_depth = 48; - } - } -#endif - - /* align the width on the next larger 8 pixels. Mainly used - for interlacing */ - rowbytes = ((png_ptr->width + 7) & ~((png_uint_32)7)); - /* calculate the maximum bytes needed, adding a byte and a pixel - for safety sake */ - rowbytes = ((rowbytes * (png_uint_32)max_pixel_depth + 7) >> 3) + - 1 + ((max_pixel_depth + 7) >> 3); -#ifdef PNG_MAX_MALLOC_64K - if (rowbytes > (png_uint_32)65536L) - png_error(png_ptr, "This image requires a row greater than 64KB"); -#endif - png_ptr->row_buf = (png_bytep)png_malloc(png_ptr, rowbytes); - -#ifdef PNG_MAX_MALLOC_64K - if ((png_uint_32)png_ptr->rowbytes + 1 > (png_uint_32)65536L) - png_error(png_ptr, "This image requires a row greater than 64KB"); -#endif - png_ptr->prev_row = (png_bytep)png_malloc(png_ptr, (png_uint_32)( - png_ptr->rowbytes + 1)); - - png_memset_check(png_ptr, png_ptr->prev_row, 0, png_ptr->rowbytes + 1); - - png_debug1(3, "width = %d,\n", png_ptr->width); - png_debug1(3, "height = %d,\n", png_ptr->height); - png_debug1(3, "iwidth = %d,\n", png_ptr->iwidth); - png_debug1(3, "num_rows = %d\n", png_ptr->num_rows); - png_debug1(3, "rowbytes = %d,\n", png_ptr->rowbytes); - png_debug1(3, "irowbytes = %d,\n", png_ptr->irowbytes); - - png_ptr->flags |= PNG_FLAG_ROW_INIT; -} diff --git a/src/png/pngset.c b/src/png/pngset.c deleted file mode 100644 index cb3fbe27b6..0000000000 --- a/src/png/pngset.c +++ /dev/null @@ -1,380 +0,0 @@ - -/* pngset.c - storage of image information into info struct - * - * libpng 1.0.1 - * For conditions of distribution and use, see copyright notice in png.h - * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc. - * Copyright (c) 1996, 1997 Andreas Dilger - * Copyright (c) 1998, Glenn Randers-Pehrson - * March 15, 1998 - * - * The functions here are used during reads to store data from the file - * into the info struct, and during writes to store application data - * into the info struct for writing into the file. This abstracts the - * info struct and allows us to change the structure in the future. - */ - -#define PNG_INTERNAL -#include "../png/png.h" - -#if defined(PNG_READ_bKGD_SUPPORTED) || defined(PNG_WRITE_bKGD_SUPPORTED) -void -png_set_bKGD(png_structp png_ptr, png_infop info_ptr, png_color_16p background) -{ - png_debug1(1, "in %s storage function\n", "bKGD"); - if (png_ptr == NULL || info_ptr == NULL) - return; - - png_memcpy(&(info_ptr->background), background, sizeof(png_color_16)); - info_ptr->valid |= PNG_INFO_bKGD; -} -#endif - -#if defined(PNG_READ_cHRM_SUPPORTED) || defined(PNG_WRITE_cHRM_SUPPORTED) -void -png_set_cHRM(png_structp png_ptr, png_infop info_ptr, - double white_x, double white_y, double red_x, double red_y, - double green_x, double green_y, double blue_x, double blue_y) -{ - png_debug1(1, "in %s storage function\n", "cHRM"); - if (png_ptr == NULL || info_ptr == NULL) - return; - - info_ptr->x_white = (float)white_x; - info_ptr->y_white = (float)white_y; - info_ptr->x_red = (float)red_x; - info_ptr->y_red = (float)red_y; - info_ptr->x_green = (float)green_x; - info_ptr->y_green = (float)green_y; - info_ptr->x_blue = (float)blue_x; - info_ptr->y_blue = (float)blue_y; - info_ptr->valid |= PNG_INFO_cHRM; -} -#endif - -#if defined(PNG_READ_gAMA_SUPPORTED) || defined(PNG_WRITE_gAMA_SUPPORTED) -void -png_set_gAMA(png_structp png_ptr, png_infop info_ptr, double file_gamma) -{ - png_debug1(1, "in %s storage function\n", "gAMA"); - if (png_ptr == NULL || info_ptr == NULL) - return; - - info_ptr->gamma = (float)file_gamma; - info_ptr->valid |= PNG_INFO_gAMA; -} -#endif - -#if defined(PNG_READ_hIST_SUPPORTED) || defined(PNG_WRITE_hIST_SUPPORTED) -void -png_set_hIST(png_structp png_ptr, png_infop info_ptr, png_uint_16p hist) -{ - png_debug1(1, "in %s storage function\n", "hIST"); - if (png_ptr == NULL || info_ptr == NULL) - return; - - info_ptr->hist = hist; - info_ptr->valid |= PNG_INFO_hIST; -} -#endif - -void -png_set_IHDR(png_structp png_ptr, png_infop info_ptr, - png_uint_32 width, png_uint_32 height, int bit_depth, - int color_type, int interlace_type, int compression_type, - int filter_type) -{ - int rowbytes_per_pixel; - png_debug1(1, "in %s storage function\n", "IHDR"); - if (png_ptr == NULL || info_ptr == NULL) - return; - - info_ptr->width = width; - info_ptr->height = height; - info_ptr->bit_depth = (png_byte)bit_depth; - info_ptr->color_type =(png_byte) color_type; - info_ptr->compression_type = (png_byte)compression_type; - info_ptr->filter_type = (png_byte)filter_type; - info_ptr->interlace_type = (png_byte)interlace_type; - if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE) - info_ptr->channels = 1; - else if (info_ptr->color_type & PNG_COLOR_MASK_COLOR) - info_ptr->channels = 3; - else - info_ptr->channels = 1; - if (info_ptr->color_type & PNG_COLOR_MASK_ALPHA) - info_ptr->channels++; - info_ptr->pixel_depth = (png_byte)(info_ptr->channels * info_ptr->bit_depth); - - /* check for overflow */ - rowbytes_per_pixel = (info_ptr->pixel_depth + 7) >> 3; - info_ptr->rowbytes = info_ptr->width * rowbytes_per_pixel; - if (( width > (png_uint_32)2147483647L/rowbytes_per_pixel)) - { - png_warning(png_ptr, - "Width too large to process image data; rowbytes will overflow."); - info_ptr->rowbytes = (png_size_t)0; - } -} - -#if defined(PNG_READ_oFFs_SUPPORTED) || defined(PNG_WRITE_oFFs_SUPPORTED) -void -png_set_oFFs(png_structp png_ptr, png_infop info_ptr, - png_uint_32 offset_x, png_uint_32 offset_y, int unit_type) -{ - png_debug1(1, "in %s storage function\n", "oFFs"); - if (png_ptr == NULL || info_ptr == NULL) - return; - - info_ptr->x_offset = offset_x; - info_ptr->y_offset = offset_y; - info_ptr->offset_unit_type = (png_byte)unit_type; - info_ptr->valid |= PNG_INFO_oFFs; -} -#endif - -#if defined(PNG_READ_pCAL_SUPPORTED) || defined(PNG_WRITE_pCAL_SUPPORTED) -void -png_set_pCAL(png_structp png_ptr, png_infop info_ptr, - png_charp purpose, png_int_32 X0, png_int_32 X1, int type, int nparams, - png_charp units, png_charpp params) -{ - png_uint_32 length; - int i; - - png_debug1(1, "in %s storage function\n", "pCAL"); - if (png_ptr == NULL || info_ptr == NULL) - return; - - length = png_strlen(purpose) + 1; - png_debug1(3, "allocating purpose for info (%d bytes)\n", length); - info_ptr->pcal_purpose = (png_charp)png_malloc(png_ptr, length); - png_memcpy(info_ptr->pcal_purpose, purpose, (png_size_t)length); - - png_debug(3, "storing X0, X1, type, and nparams in info\n"); - info_ptr->pcal_X0 = X0; - info_ptr->pcal_X1 = X1; - info_ptr->pcal_type = (png_byte)type; - info_ptr->pcal_nparams = (png_byte)nparams; - - length = png_strlen(units) + 1; - png_debug1(3, "allocating units for info (%d bytes)\n", length); - info_ptr->pcal_units = (png_charp)png_malloc(png_ptr, length); - png_memcpy(info_ptr->pcal_units, units, (png_size_t)length); - - info_ptr->pcal_params = (png_charpp)png_malloc(png_ptr, - (png_uint_32)((nparams + 1) * sizeof(png_charp))); - info_ptr->pcal_params[nparams] = NULL; - - for (i = 0; i < nparams; i++) - { - length = png_strlen(params[i]) + 1; - png_debug2(3, "allocating parameter %d for info (%d bytes)\n", i, length); - info_ptr->pcal_params[i] = (png_charp)png_malloc(png_ptr, length); - png_memcpy(info_ptr->pcal_params[i], params[i], (png_size_t)length); - } - - info_ptr->valid |= PNG_INFO_pCAL; -} -#endif - -#if defined(PNG_READ_pHYs_SUPPORTED) || defined(PNG_WRITE_pHYs_SUPPORTED) -void -png_set_pHYs(png_structp png_ptr, png_infop info_ptr, - png_uint_32 res_x, png_uint_32 res_y, int unit_type) -{ - png_debug1(1, "in %s storage function\n", "pHYs"); - if (png_ptr == NULL || info_ptr == NULL) - return; - - info_ptr->x_pixels_per_unit = res_x; - info_ptr->y_pixels_per_unit = res_y; - info_ptr->phys_unit_type = (png_byte)unit_type; - info_ptr->valid |= PNG_INFO_pHYs; -} -#endif - -void -png_set_PLTE(png_structp png_ptr, png_infop info_ptr, - png_colorp palette, int num_palette) -{ - png_debug1(1, "in %s storage function\n", "PLTE"); - if (png_ptr == NULL || info_ptr == NULL) - return; - - info_ptr->palette = palette; - info_ptr->num_palette = (png_uint_16)num_palette; - info_ptr->valid |= PNG_INFO_PLTE; -} - -#if defined(PNG_READ_sBIT_SUPPORTED) || defined(PNG_WRITE_sBIT_SUPPORTED) -void -png_set_sBIT(png_structp png_ptr, png_infop info_ptr, - png_color_8p sig_bit) -{ - png_debug1(1, "in %s storage function\n", "sBIT"); - if (png_ptr == NULL || info_ptr == NULL) - return; - - png_memcpy(&(info_ptr->sig_bit), sig_bit, sizeof (png_color_8)); - info_ptr->valid |= PNG_INFO_sBIT; -} -#endif - -#if defined(PNG_READ_sRGB_SUPPORTED) || defined(PNG_WRITE_sRGB_SUPPORTED) -void -png_set_sRGB(png_structp png_ptr, png_infop info_ptr, int intent) -{ - png_debug1(1, "in %s storage function\n", "sRGB"); - if (png_ptr == NULL || info_ptr == NULL) - return; - - info_ptr->srgb_intent = (png_byte)intent; - info_ptr->valid |= PNG_INFO_sRGB; -} -void -png_set_sRGB_gAMA_and_cHRM(png_structp png_ptr, png_infop info_ptr, - int intent) -{ -#if defined(PNG_READ_gAMA_SUPPORTED) || defined(PNG_WRITE_gAMA_SUPPORTED) - float file_gamma; -#endif -#if defined(PNG_READ_cHRM_SUPPORTED) || defined(PNG_WRITE_cHRM_SUPPORTED) - float white_x, white_y, red_x, red_y, green_x, green_y, blue_x, blue_y; -#endif - png_debug1(1, "in %s storage function\n", "sRGB_gAMA_and_cHRM"); - if (png_ptr == NULL || info_ptr == NULL) - return; - - png_set_sRGB(png_ptr, info_ptr, intent); - -#if defined(PNG_READ_gAMA_SUPPORTED) || defined(PNG_WRITE_gAMA_SUPPORTED) - file_gamma = (float).45; - png_set_gAMA(png_ptr, info_ptr, file_gamma); -#endif - -#if defined(PNG_READ_cHRM_SUPPORTED) || defined(PNG_WRITE_cHRM_SUPPORTED) - white_x = (float).3127; - white_y = (float).3290; - red_x = (float).64; - red_y = (float).33; - green_x = (float).30; - green_y = (float).60; - blue_x = (float).15; - blue_y = (float).06; - - png_set_cHRM(png_ptr, info_ptr, - white_x, white_y, red_x, red_y, green_x, green_y, blue_x, blue_y); - -#endif -} -#endif - -#if defined(PNG_READ_tEXt_SUPPORTED) || defined(PNG_WRITE_tEXt_SUPPORTED) || \ - defined(PNG_READ_zTXt_SUPPORTED) || defined(PNG_WRITE_zTXt_SUPPORTED) -void -png_set_text(png_structp png_ptr, png_infop info_ptr, png_textp text_ptr, - int num_text) -{ - int i; - - png_debug1(1, "in %s storage function\n", (png_ptr->chunk_name[0] == '\0' ? - "text" : (png_const_charp)png_ptr->chunk_name)); - - if (png_ptr == NULL || info_ptr == NULL || num_text == 0) - return; - - /* Make sure we have enough space in the "text" array in info_struct - * to hold all of the incoming text_ptr objects. - */ - if (info_ptr->num_text + num_text > info_ptr->max_text) - { - if (info_ptr->text != NULL) - { - png_textp old_text; - int old_max; - - old_max = info_ptr->max_text; - info_ptr->max_text = info_ptr->num_text + num_text + 8; - old_text = info_ptr->text; - info_ptr->text = (png_textp)png_malloc(png_ptr, - (png_uint_32)(info_ptr->max_text * sizeof (png_text))); - png_memcpy(info_ptr->text, old_text, (png_size_t)(old_max * - sizeof(png_text))); - png_free(png_ptr, old_text); - } - else - { - info_ptr->max_text = num_text + 8; - info_ptr->num_text = 0; - info_ptr->text = (png_textp)png_malloc(png_ptr, - (png_uint_32)(info_ptr->max_text * sizeof (png_text))); - } - png_debug1(3, "allocated %d entries for info_ptr->text\n", - info_ptr->max_text); - } - - for (i = 0; i < num_text; i++) - { - png_textp textp = &(info_ptr->text[info_ptr->num_text]); - - if (text_ptr[i].text == NULL) - text_ptr[i].text = (png_charp)""; - - if (text_ptr[i].text[0] == '\0') - { - textp->text_length = 0; - textp->compression = PNG_TEXT_COMPRESSION_NONE; - } - else - { - textp->text_length = png_strlen(text_ptr[i].text); - textp->compression = text_ptr[i].compression; - } - textp->text = text_ptr[i].text; - textp->key = text_ptr[i].key; - info_ptr->num_text++; - png_debug1(3, "transferred text chunk %d\n", info_ptr->num_text); - } -} -#endif - -#if defined(PNG_READ_tIME_SUPPORTED) || defined(PNG_WRITE_tIME_SUPPORTED) -void -png_set_tIME(png_structp png_ptr, png_infop info_ptr, png_timep mod_time) -{ - png_debug1(1, "in %s storage function\n", "tIME"); - if (png_ptr == NULL || info_ptr == NULL) - return; - - png_memcpy(&(info_ptr->mod_time), mod_time, sizeof (png_time)); - info_ptr->valid |= PNG_INFO_tIME; -} -#endif - -#if defined(PNG_READ_tRNS_SUPPORTED) || defined(PNG_WRITE_tRNS_SUPPORTED) -void -png_set_tRNS(png_structp png_ptr, png_infop info_ptr, - png_bytep trans, int num_trans, png_color_16p trans_values) -{ - png_debug1(1, "in %s storage function\n", "tRNS"); - if (png_ptr == NULL || info_ptr == NULL) - return; - - if (trans != NULL) - { - info_ptr->trans = trans; - } - - if (trans_values != NULL) - { - png_memcpy(&(info_ptr->trans_values), trans_values, - sizeof(png_color_16)); - if (num_trans == 0) - num_trans = 1; - } - info_ptr->num_trans = (png_uint_16)num_trans; - info_ptr->valid |= PNG_INFO_tRNS; -} -#endif - diff --git a/src/png/pngtest.c b/src/png/pngtest.c deleted file mode 100644 index 9eae4795ea..0000000000 --- a/src/png/pngtest.c +++ /dev/null @@ -1,1036 +0,0 @@ - -/* pngtest.c - a simple test program to test libpng - * - * libpng 1.0.1 - * For conditions of distribution and use, see copyright notice in png.h - * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc. - * Copyright (c) 1996, 1997 Andreas Dilger - * Copyright (c) 1998, Glenn Randers-Pehrson - * March 15, 1998 - * - * This program reads in a PNG image, writes it out again, and then - * compares the two files. If the files are identical, this shows that - * the basic chunk handling, filtering, and (de)compression code is working - * properly. It does not currently test all of the transforms, although - * it probably should. - * - * The program will fail in certain legitimate cases: - * 1) when the compression level or filter selection method is changed. - * 2) when the chunk size is smaller than 8K. - * 3) unknown ancillary chunks exist in the input file. - * 4) others not listed here... - * In these cases, it is best to check with another tool such as "pngcheck" - * to see what the differences between the two images are. - * - * If a filename is given on the command-line, then this file is used - * for the input, rather than the default "pngtest.png". This allows - * testing a wide variety of files easily. - */ - -#include -#include - -/* Makes pngtest verbose so we can find problems (needs to be before png.h) */ -#ifndef PNG_DEBUG -#define PNG_DEBUG 0 -#endif - -#include "../png/png.h" - -int test_one_file PNGARG((PNG_CONST char *inname, PNG_CONST char *outname)); - -#ifdef __TURBOC__ -#include -#endif - -/* defined so I can write to a file on gui/windowing platforms */ -/* #define STDERR stderr */ -#define STDERR stdout /* for DOS */ - -/* example of using row callbacks to make a simple progress meter */ -static int status_pass=1; -static int status_dots_requested=0; -static int status_dots=1; - -void -read_row_callback(png_structp png_ptr, png_uint_32 row_number, int pass) -{ - if(png_ptr == NULL || row_number > 0x3fffffffL) return; - if(status_pass != pass) - { - fprintf(stdout,"\n Pass %d: ",pass); - status_pass = pass; - status_dots = 30; - } - status_dots--; - if(status_dots == 0) - { - fprintf(stdout, "\n "); - status_dots=30; - } - fprintf(stdout, "r"); -} - -void -write_row_callback(png_structp png_ptr, png_uint_32 row_number, int pass) -{ - if(png_ptr == NULL || row_number > 0x3fffffffL || pass > 7) return; - fprintf(stdout, "w"); -} - - -#if defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) -/* example of using user transform callback (we don't transform anything, - but merely count the black pixels) */ - -static png_uint_32 black_pixels; - -void -count_black_pixels(png_structp png_ptr, png_row_infop row_info, png_bytep data) -{ - png_bytep dp = data; - if(png_ptr == NULL)return; - - /* contents of row_info: - * png_uint_32 width width of row - * png_uint_32 rowbytes number of bytes in row - * png_byte color_type color type of pixels - * png_byte bit_depth bit depth of samples - * png_byte channels number of channels (1-4) - * png_byte pixel_depth bits per pixel (depth*channels) - */ - - /* counts the number of black pixels (or zero pixels if color_type is 3 */ - - if(row_info->color_type == 0 || row_info->color_type == 3) - { - int pos=0; - png_uint_32 n; - for (n=0; nwidth; n++) - { - if(row_info->bit_depth == 1) - if(((*dp << pos++ )& 0x80) == 0) black_pixels++; - if(pos == 8) - { - pos=0; - dp++; - } - if(row_info->bit_depth == 2) - if(((*dp << (pos+=2))& 0xc0) == 0) black_pixels++; - if(pos == 8) - { - pos=0; - dp++; - } - if(row_info->bit_depth == 4) - if(((*dp << (pos+=4))& 0xf0) == 0) black_pixels++; - if(pos == 8) - { - pos=0; - dp++; - } - if(row_info->bit_depth == 8) - if(*dp++ == 0) black_pixels++; - if(row_info->bit_depth == 16) - { - if((*dp | *(dp+1)) == 0) black_pixels++; - dp+=2; - } - } - } - else /* other color types */ - { - png_uint_32 n; - int channel; - int color_channels = row_info->channels; - if(row_info->color_type > 3)color_channels--; - - for (n=0; nwidth; n++) - { - for (channel = 0; channel < color_channels; channel++) - { - if(row_info->bit_depth == 8) - if(*dp++ == 0) black_pixels++; - if(row_info->bit_depth == 16) - { - if((*dp | *(dp+1)) == 0) black_pixels++; - dp+=2; - } - } - if(row_info->color_type > 3) - { - dp++; - if(row_info->bit_depth == 16)dp++; - } - } - } -} -#endif /* PNG_WRITE_USER_TRANSFORM_SUPPORTED */ - -static int verbose = 0; -static int wrote_question = 0; - -#if defined(PNG_NO_STDIO) -/* START of code to validate stdio-free compilation */ -/* These copies of the default read/write functions come from pngrio.c and */ -/* pngwio.c. They allow "don't include stdio" testing of the library. */ -/* This is the function which does the actual reading of data. If you are - not reading from a standard C stream, you should create a replacement - read_data function and use it at run time with png_set_read_fn(), rather - than changing the library. */ -#ifndef USE_FAR_KEYWORD -static void -png_default_read_data(png_structp png_ptr, png_bytep data, png_size_t length) -{ - png_size_t check; - - /* fread() returns 0 on error, so it is OK to store this in a png_size_t - * instead of an int, which is what fread() actually returns. - */ - check = (png_size_t)fread(data, (png_size_t)1, length, - (FILE *)png_ptr->io_ptr); - - if (check != length) - { - png_error(png_ptr, "Read Error"); - } -} -#else -/* this is the model-independent version. Since the standard I/O library - can't handle far buffers in the medium and small models, we have to copy - the data. -*/ - -#define NEAR_BUF_SIZE 1024 -#define MIN(a,b) (a <= b ? a : b) - -static void -png_default_read_data(png_structp png_ptr, png_bytep data, png_size_t length) -{ - int check; - png_byte *n_data; - FILE *io_ptr; - - /* Check if data really is near. If so, use usual code. */ - n_data = (png_byte *)CVT_PTR_NOCHECK(data); - io_ptr = (FILE *)CVT_PTR(png_ptr->io_ptr); - if ((png_bytep)n_data == data) - { - check = fread(n_data, 1, length, io_ptr); - } - else - { - png_byte buf[NEAR_BUF_SIZE]; - png_size_t read, remaining, err; - check = 0; - remaining = length; - do - { - read = MIN(NEAR_BUF_SIZE, remaining); - err = fread(buf, (png_size_t)1, read, io_ptr); - png_memcpy(data, buf, read); /* copy far buffer to near buffer */ - if(err != read) - break; - else - check += err; - data += read; - remaining -= read; - } - while (remaining != 0); - } - if (check != length) - { - png_error(png_ptr, "read Error"); - } -} -#endif /* USE_FAR_KEYWORD */ - -#if defined(PNG_WRITE_FLUSH_SUPPORTED) -static void -png_default_flush(png_structp png_ptr) -{ - FILE *io_ptr; - io_ptr = (FILE *)CVT_PTR((png_ptr->io_ptr)); - if (io_ptr != NULL) - fflush(io_ptr); -} -#endif - -/* This is the function which does the actual writing of data. If you are - not writing to a standard C stream, you should create a replacement - write_data function and use it at run time with png_set_write_fn(), rather - than changing the library. */ -#ifndef USE_FAR_KEYWORD -static void -png_default_write_data(png_structp png_ptr, png_bytep data, png_size_t length) -{ - png_uint_32 check; - - check = fwrite(data, 1, length, (FILE *)(png_ptr->io_ptr)); - if (check != length) - { - png_error(png_ptr, "Write Error"); - } -} -#else -/* this is the model-independent version. Since the standard I/O library - can't handle far buffers in the medium and small models, we have to copy - the data. -*/ - -#define NEAR_BUF_SIZE 1024 -#define MIN(a,b) (a <= b ? a : b) - -static void -png_default_write_data(png_structp png_ptr, png_bytep data, png_size_t length) -{ - png_uint_32 check; - png_byte *near_data; /* Needs to be "png_byte *" instead of "png_bytep" */ - FILE *io_ptr; - - /* Check if data really is near. If so, use usual code. */ - near_data = (png_byte *)CVT_PTR_NOCHECK(data); - io_ptr = (FILE *)CVT_PTR(png_ptr->io_ptr); - if ((png_bytep)near_data == data) - { - check = fwrite(near_data, 1, length, io_ptr); - } - else - { - png_byte buf[NEAR_BUF_SIZE]; - png_size_t written, remaining, err; - check = 0; - remaining = length; - do - { - written = MIN(NEAR_BUF_SIZE, remaining); - png_memcpy(buf, data, written); /* copy far buffer to near buffer */ - err = fwrite(buf, 1, written, io_ptr); - if (err != written) - break; - else - check += err; - data += written; - remaining -= written; - } - while (remaining != 0); - } - if (check != length) - { - png_error(png_ptr, "Write Error"); - } -} - -#endif /* USE_FAR_KEYWORD */ - -/* This function is called when there is a warning, but the library thinks - * it can continue anyway. Replacement functions don't have to do anything - * here if you don't want to. In the default configuration, png_ptr is - * not used, but it is passed in case it may be useful. - */ -static void -png_default_warning(png_structp png_ptr, png_const_charp message) -{ - PNG_CONST char *name = "UNKNOWN (ERROR!)"; - if (png_ptr != NULL && png_ptr->error_ptr != NULL) - name = png_ptr->error_ptr; - fprintf(STDERR, "%s: libpng warning: %s\n", name, message); -} - -/* This is the default error handling function. Note that replacements for - * this function MUST NOT RETURN, or the program will likely crash. This - * function is used by default, or if the program supplies NULL for the - * error function pointer in png_set_error_fn(). - */ -static void -png_default_error(png_structp png_ptr, png_const_charp message) -{ - png_default_warning(png_ptr, message); - /* We can return because png_error calls the default handler which is - * actually ok in this case. */ -} -#endif /* PNG_NO_STDIO */ -/* END of code to validate stdio-free compilation */ - -/* START of code to validate memory allocation and deallocation */ -#ifdef PNGTEST_MEMORY_DEBUG -/* Borland DOS special memory handler */ -#if defined(__TURBOC__) && !defined(_Windows) && !defined(__FLAT__) -ERROR - memory debugging is not supported on this platform -#else - -/* Allocate memory. For reasonable files, size should never exceed - 64K. However, zlib may allocate more then 64K if you don't tell - it not to. See zconf.h and png.h for more information. zlib does - need to allocate exactly 64K, so whatever you call here must - have the ability to do that. - - This piece of code can be compiled to validate max 64K allocations - by setting MAXSEG_64K in zlib zconf.h *or* PNG_MAX_MALLOC_64K. */ -typedef struct memory_information { - png_uint_32 size; - png_voidp pointer; - struct memory_information FAR *next; -} memory_information; -typedef memory_information FAR *memory_infop; - -static memory_infop pinformation = NULL; -static int current_allocation = 0; -static int maximum_allocation = 0; - -extern PNG_EXPORT(png_voidp,png_debug_malloc) PNGARG((png_structp png_ptr, - png_uint_32 size)); -extern PNG_EXPORT(void,png_debug_free) PNGARG((png_structp png_ptr, - png_voidp ptr)); - -png_voidp -png_malloc(png_structp png_ptr, png_uint_32 size) { - if (png_ptr == NULL) { - fprintf(STDERR, "NULL pointer to memory allocator\n"); - return (NULL); - } - if (size == 0) - return (png_voidp)(NULL); - - /* This calls the library allocator twice, once to get the requested - buffer and once to get a new free list entry. */ - { - memory_infop pinfo = png_debug_malloc(png_ptr, sizeof *pinfo); - pinfo->size = size; - current_allocation += size; - if (current_allocation > maximum_allocation) - maximum_allocation = current_allocation; - pinfo->pointer = png_debug_malloc(png_ptr, size); - pinfo->next = pinformation; - pinformation = pinfo; - /* Make sure the caller isn't assuming zeroed memory. */ - png_memset(pinfo->pointer, 0xdd, pinfo->size); - return (png_voidp)(pinfo->pointer); - } -} - -/* Free a pointer. It is removed from the list at the same time. */ -void -png_free(png_structp png_ptr, png_voidp ptr) -{ - if (png_ptr == NULL) - fprintf(STDERR, "NULL pointer to memory allocator\n"); - if (ptr == 0) { -#if 0 /* This happens all the time. */ - fprintf(STDERR, "WARNING: freeing NULL pointer\n"); -#endif - return; - } - - /* Unlink the element from the list. */ - { - memory_infop FAR *ppinfo = &pinformation; - for (;;) { - memory_infop pinfo = *ppinfo; - if (pinfo->pointer == ptr) { - *ppinfo = pinfo->next; - current_allocation -= pinfo->size; - if (current_allocation < 0) - fprintf(STDERR, "Duplicate free of memory\n"); - /* We must free the list element too, but first kill - the memory which is to be freed. */ - memset(ptr, 0x55, pinfo->size); - png_debug_free(png_ptr, pinfo); - break; - } - if (pinfo->next == NULL) { - fprintf(STDERR, "Pointer %x not found\n", ptr); - break; - } - ppinfo = &pinfo->next; - } - } - - /* Finally free the data. */ - png_debug_free(png_ptr, ptr); -} -#endif /* Not Borland DOS special memory handler */ -#endif -/* END of code to test memory allocation/deallocation */ - -/* Test one file */ -int -test_one_file(PNG_CONST char *inname, PNG_CONST char *outname) -{ - static FILE *fpin, *fpout; /* "static" prevents setjmp corruption */ - png_structp read_ptr, write_ptr; - png_infop read_info_ptr, write_info_ptr, end_info_ptr; - png_bytep row_buf; - png_uint_32 y; - png_uint_32 width, height; - int num_pass, pass; - int bit_depth, color_type; -#ifdef USE_FAR_KEYWORD - jmp_buf jmpbuf; -#endif - - char inbuf[256], outbuf[256]; - - row_buf = (png_bytep)NULL; - - if ((fpin = fopen(inname, "rb")) == NULL) - { - fprintf(STDERR, "Could not find input file %s\n", inname); - return (1); - } - - if ((fpout = fopen(outname, "wb")) == NULL) - { - fprintf(STDERR, "Could not open output file %s\n", outname); - fclose(fpin); - return (1); - } - - png_debug(0, "Allocating read and write structures\n"); - read_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, (png_voidp)NULL, - (png_error_ptr)NULL, (png_error_ptr)NULL); -#if defined(PNG_NO_STDIO) - png_set_error_fn(read_ptr, (png_voidp)inname, png_default_error, - png_default_warning); -#endif - write_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, (png_voidp)NULL, - (png_error_ptr)NULL, (png_error_ptr)NULL); -#if defined(PNG_NO_STDIO) - png_set_error_fn(write_ptr, (png_voidp)inname, png_default_error, - png_default_warning); -#endif - png_debug(0, "Allocating read_info, write_info and end_info structures\n"); - read_info_ptr = png_create_info_struct(read_ptr); - write_info_ptr = png_create_info_struct(write_ptr); - end_info_ptr = png_create_info_struct(read_ptr); - - png_debug(0, "Setting jmpbuf for read struct\n"); -#ifdef USE_FAR_KEYWORD - if (setjmp(jmpbuf)) -#else - if (setjmp(read_ptr->jmpbuf)) -#endif - { - fprintf(STDERR, "%s -> %s: libpng read error\n", inname, outname); - png_destroy_read_struct(&read_ptr, &read_info_ptr, &end_info_ptr); - png_destroy_write_struct(&write_ptr, &write_info_ptr); - fclose(fpin); - fclose(fpout); - return (1); - } - - png_debug(0, "Setting jmpbuf for write struct\n"); -#ifdef USE_FAR_KEYWORD - png_memcpy(read_ptr->jmpbuf,jmpbuf,sizeof(jmp_buf)); - if (setjmp(jmpbuf)) -#else - if (setjmp(write_ptr->jmpbuf)) -#endif - { - fprintf(STDERR, "%s -> %s: libpng write error\n", inname, outname); - png_destroy_read_struct(&read_ptr, &read_info_ptr, &end_info_ptr); - png_destroy_write_struct(&write_ptr, &write_info_ptr); - fclose(fpin); - fclose(fpout); - return (1); - } - -#ifdef USE_FAR_KEYWORD - png_memcpy(write_ptr->jmpbuf,jmpbuf,sizeof(jmp_buf)); -#endif - png_debug(0, "Initializing input and output streams\n"); -#if !defined(PNG_NO_STDIO) - png_init_io(read_ptr, fpin); - png_init_io(write_ptr, fpout); -#else - png_set_read_fn(read_ptr, (png_voidp)fpin, png_default_read_data); - png_set_write_fn(write_ptr, (png_voidp)fpout, png_default_write_data, -#if defined(PNG_WRITE_FLUSH_SUPPORTED) - png_default_flush); -#else - NULL); -#endif -#endif - if(status_dots_requested == 1) - { - png_set_write_status_fn(write_ptr, write_row_callback); - png_set_read_status_fn(read_ptr, read_row_callback); - } - else - { - png_set_write_status_fn(write_ptr, NULL); - png_set_read_status_fn(read_ptr, NULL); - } - -# if defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) - black_pixels=0; - png_set_write_user_transform_fn(write_ptr, count_black_pixels); -# endif - - png_debug(0, "Reading info struct\n"); - png_read_info(read_ptr, read_info_ptr); - - png_debug(0, "Transferring info struct\n"); - { - int interlace_type, compression_type, filter_type; - - if (png_get_IHDR(read_ptr, read_info_ptr, &width, &height, &bit_depth, - &color_type, &interlace_type, &compression_type, &filter_type)) - { - png_set_IHDR(write_ptr, write_info_ptr, width, height, bit_depth, -#if defined(PNG_WRITE_INTERLACING_SUPPORTED) - color_type, interlace_type, compression_type, filter_type); -#else - color_type, PNG_INTERLACE_NONE, compression_type, filter_type); -#endif - } - } -#if defined(PNG_READ_bKGD_SUPPORTED) && defined(PNG_WRITE_bKGD_SUPPORTED) - { - png_color_16p background; - - if (png_get_bKGD(read_ptr, read_info_ptr, &background)) - { - png_set_bKGD(write_ptr, write_info_ptr, background); - } - } -#endif -#if defined(PNG_READ_cHRM_SUPPORTED) && defined(PNG_WRITE_cHRM_SUPPORTED) - { - double white_x, white_y, red_x, red_y, green_x, green_y, blue_x, blue_y; - - if (png_get_cHRM(read_ptr, read_info_ptr, &white_x, &white_y, &red_x, - &red_y, &green_x, &green_y, &blue_x, &blue_y)) - { - png_set_cHRM(write_ptr, write_info_ptr, white_x, white_y, red_x, - red_y, green_x, green_y, blue_x, blue_y); - } - } -#endif -#if defined(PNG_READ_gAMA_SUPPORTED) && defined(PNG_WRITE_gAMA_SUPPORTED) - { - double gamma; - - if (png_get_gAMA(read_ptr, read_info_ptr, &gamma)) - { - png_set_gAMA(write_ptr, write_info_ptr, gamma); - } - } -#endif -#if defined(PNG_READ_sRGB_SUPPORTED) && defined(PNG_WRITE_sRGB_SUPPORTED) - { - int intent; - - if (png_get_sRGB(read_ptr, read_info_ptr, &intent)) - { - png_set_sRGB(write_ptr, write_info_ptr, intent); - } - } -#endif -#if defined(PNG_READ_hIST_SUPPORTED) && defined(PNG_WRITE_hIST_SUPPORTED) - { - png_uint_16p hist; - - if (png_get_hIST(read_ptr, read_info_ptr, &hist)) - { - png_set_hIST(write_ptr, write_info_ptr, hist); - } - } -#endif -#if defined(PNG_READ_oFFs_SUPPORTED) && defined(PNG_WRITE_oFFs_SUPPORTED) - { - png_uint_32 offset_x, offset_y; - int unit_type; - - if (png_get_oFFs(read_ptr, read_info_ptr,&offset_x,&offset_y,&unit_type)) - { - png_set_oFFs(write_ptr, write_info_ptr, offset_x, offset_y, unit_type); - } - } -#endif -#if defined(PNG_READ_pCAL_SUPPORTED) && defined(PNG_WRITE_pCAL_SUPPORTED) - { - png_charp purpose, units; - png_charpp params; - png_int_32 X0, X1; - int type, nparams; - - if (png_get_pCAL(read_ptr, read_info_ptr, &purpose, &X0, &X1, &type, - &nparams, &units, ¶ms)) - { - png_set_pCAL(write_ptr, write_info_ptr, purpose, X0, X1, type, - nparams, units, params); - } - } -#endif -#if defined(PNG_READ_pHYs_SUPPORTED) && defined(PNG_WRITE_pHYs_SUPPORTED) - { - png_uint_32 res_x, res_y; - int unit_type; - - if (png_get_pHYs(read_ptr, read_info_ptr, &res_x, &res_y, &unit_type)) - { - png_set_pHYs(write_ptr, write_info_ptr, res_x, res_y, unit_type); - } - } -#endif - { - png_colorp palette; - int num_palette; - - if (png_get_PLTE(read_ptr, read_info_ptr, &palette, &num_palette)) - { - png_set_PLTE(write_ptr, write_info_ptr, palette, num_palette); - } - } -#if defined(PNG_READ_sBIT_SUPPORTED) && defined(PNG_WRITE_sBIT_SUPPORTED) - { - png_color_8p sig_bit; - - if (png_get_sBIT(read_ptr, read_info_ptr, &sig_bit)) - { - png_set_sBIT(write_ptr, write_info_ptr, sig_bit); - } - } -#endif -#if (defined(PNG_READ_tEXt_SUPPORTED) && defined(PNG_WRITE_tEXt_SUPPORTED)) || \ - (defined(PNG_READ_zTXt_SUPPORTED) && defined(PNG_WRITE_zTXt_SUPPORTED)) - { - png_textp text_ptr; - int num_text; - - if (png_get_text(read_ptr, read_info_ptr, &text_ptr, &num_text) > 0) - { - png_debug1(0, "Handling %d tEXt/zTXt chunks\n", num_text); - png_set_text(write_ptr, write_info_ptr, text_ptr, num_text); - } - } -#endif -#if defined(PNG_READ_tIME_SUPPORTED) && defined(PNG_WRITE_tIME_SUPPORTED) - { - png_timep mod_time; - - if (png_get_tIME(read_ptr, read_info_ptr, &mod_time)) - { - png_set_tIME(write_ptr, write_info_ptr, mod_time); - } - } -#endif -#if defined(PNG_READ_tRNS_SUPPORTED) && defined(PNG_WRITE_tRNS_SUPPORTED) - { - png_bytep trans; - int num_trans; - png_color_16p trans_values; - - if (png_get_tRNS(read_ptr, read_info_ptr, &trans, &num_trans, - &trans_values)) - { - png_set_tRNS(write_ptr, write_info_ptr, trans, num_trans, - trans_values); - } - } -#endif - - png_debug(0, "\nWriting info struct\n"); - png_write_info(write_ptr, write_info_ptr); - - png_debug(0, "\nAllocating row buffer \n"); - row_buf = (png_bytep)png_malloc(read_ptr, - png_get_rowbytes(read_ptr, read_info_ptr)); - if (row_buf == NULL) - { - fprintf(STDERR, "No memory to allocate row buffer\n"); - png_destroy_read_struct(&read_ptr, &read_info_ptr, (png_infopp)NULL); - png_destroy_write_struct(&write_ptr, &write_info_ptr); - fclose(fpin); - fclose(fpout); - return (1); - } - png_debug(0, "Writing row data\n"); - - num_pass = png_set_interlace_handling(read_ptr); - png_set_interlace_handling(write_ptr); - - for (pass = 0; pass < num_pass; pass++) - { - png_debug1(0, "Writing row data for pass %d\n",pass); - for (y = 0; y < height; y++) - { - png_read_rows(read_ptr, (png_bytepp)&row_buf, (png_bytepp)NULL, 1); - png_write_rows(write_ptr, (png_bytepp)&row_buf, 1); - } - } - - png_debug(0, "Reading and writing end_info data\n"); - png_read_end(read_ptr, end_info_ptr); - png_write_end(write_ptr, end_info_ptr); - -#ifdef PNG_EASY_ACCESS_SUPPORTED - if(verbose) - { - png_uint_32 iwidth, iheight; - iwidth = png_get_image_width(write_ptr, write_info_ptr); - iheight = png_get_image_height(write_ptr, write_info_ptr); - fprintf(STDERR, "Image width = %lu, height = %lu\n", - iwidth, iheight); - } -#endif - - png_debug(0, "Destroying data structs\n"); - png_free(read_ptr, row_buf); - png_destroy_read_struct(&read_ptr, &read_info_ptr, &end_info_ptr); - png_destroy_write_struct(&write_ptr, &write_info_ptr); - - fclose(fpin); - fclose(fpout); - - png_debug(0, "Opening files for comparison\n"); - if ((fpin = fopen(inname, "rb")) == NULL) - { - fprintf(STDERR, "Could not find file %s\n", inname); - return (1); - } - - if ((fpout = fopen(outname, "rb")) == NULL) - { - fprintf(STDERR, "Could not find file %s\n", outname); - fclose(fpin); - return (1); - } - - for(;;) - { - png_size_t num_in, num_out; - - num_in = fread(inbuf, 1, 1, fpin); - num_out = fread(outbuf, 1, 1, fpout); - - if (num_in != num_out) - { - fprintf(STDERR, "Files %s and %s are of a different size\n", - inname, outname); - if(wrote_question == 0) - { - fprintf(STDERR, - " Was %s written with the same chunk size (8k),",inname); - fprintf(STDERR, - " filtering\n heuristic (libpng default), compression"); - fprintf(STDERR, - " level (zlib default)\n and zlib version (%s)?\n\n", - ZLIB_VERSION); - wrote_question=1; - } - fclose(fpin); - fclose(fpout); - return (0); - } - - if (!num_in) - break; - - if (png_memcmp(inbuf, outbuf, num_in)) - { - fprintf(STDERR, "Files %s and %s are different\n", inname, outname); - if(wrote_question == 0) - { - fprintf(STDERR, - " Was %s written with the same chunk size (8k),",inname); - fprintf(STDERR, - " filtering\n heuristic (libpng default), compression"); - fprintf(STDERR, - " level (zlib default)\n and zlib version (%s)?\n\n", - ZLIB_VERSION); - wrote_question=1; - } - fclose(fpin); - fclose(fpout); - return (0); - } - } - - fclose(fpin); - fclose(fpout); - - return (0); -} - -/* input and output filenames */ -#ifdef RISCOS -PNG_CONST char *inname = "pngtest/png"; -PNG_CONST char *outname = "pngout/png"; -#else -static PNG_CONST char *inname = "pngtest.png"; -static PNG_CONST char *outname = "pngout.png"; -#endif - -int -main(int argc, char *argv[]) -{ - int multiple = 0; - int ierror = 0; - - fprintf(STDERR, "Testing libpng version %s\n", PNG_LIBPNG_VER_STRING); - fprintf(STDERR, " with zlib version %s\n", ZLIB_VERSION); - - /* Do some consistency checking on the memory allocation settings, I'm - not sure this matters, but it is nice to know, the first of these - tests should be impossible because of the way the macros are set - in pngconf.h */ -#if defined(MAXSEG_64K) && !defined(PNG_MAX_MALLOC_64K) - fprintf(STDERR, " NOTE: Zlib compiled for max 64k, libpng not\n"); -#endif - /* I think the following can happen. */ -#if !defined(MAXSEG_64K) && defined(PNG_MAX_MALLOC_64K) - fprintf(STDERR, " NOTE: libpng compiled for max 64k, zlib not\n"); -#endif - - if (strcmp(png_libpng_ver, PNG_LIBPNG_VER_STRING)) - { - fprintf(STDERR, - "Warning: versions are different between png.h and png.c\n"); - fprintf(STDERR, " png.h version: %s\n", PNG_LIBPNG_VER_STRING); - fprintf(STDERR, " png.c version: %s\n\n", png_libpng_ver); - ++ierror; - } - - if (argc > 1) - { - if (strcmp(argv[1], "-m") == 0) - { - multiple = 1; - status_dots_requested = 0; - } - else if (strcmp(argv[1], "-mv") == 0 || - strcmp(argv[1], "-vm") == 0 ) - { - multiple = 1; - verbose = 1; - status_dots_requested = 1; - } - else if (strcmp(argv[1], "-v") == 0) - { - verbose = 1; - status_dots_requested = 1; - inname = argv[2]; - } - else - { - inname = argv[1]; - status_dots_requested = 0; - } - } - - if (!multiple && argc == 3+verbose) - outname = argv[2+verbose]; - - if ((!multiple && argc > 3+verbose) || (multiple && argc < 2)) - { - fprintf(STDERR, - "usage: %s [infile.png] [outfile.png]\n\t%s -m {infile.png}\n", - argv[0], argv[0]); - fprintf(STDERR, - " reads/writes one PNG file (without -m) or multiple files (-m)\n"); - fprintf(STDERR, - " with -m %s is used as a temporary file\n", outname); - exit(1); - } - - if (multiple) - { - int i; -#ifdef PNGTEST_MEMORY_DEBUG - int allocation_now = current_allocation; -#endif - for (i=2; isize, pinfo->pointer); - pinfo = pinfo->next; - } - } -#endif - } -#ifdef PNGTEST_MEMORY_DEBUG - fprintf(STDERR, "Maximum memory allocation: %d bytes\n", - maximum_allocation); -#endif - } - else - { - int i; - for (i=0; i<3; ++i) { - int kerror; -#ifdef PNGTEST_MEMORY_DEBUG - int allocation_now = current_allocation; -#endif - if (i == 1) status_dots_requested = 1; - else if(verbose == 0)status_dots_requested = 0; - if (i == 0 || verbose == 1 || ierror != 0) - fprintf(STDERR, "Testing %s:",inname); - kerror = test_one_file(inname, outname); - if(kerror == 0) - { - if(verbose == 1 || i == 2) -#if defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) - fprintf(STDERR, " PASS (%lu black pixels)\n",black_pixels); -#else - fprintf(STDERR, " PASS\n"); -#endif - } - else - { - if(verbose == 0 && i != 2) - fprintf(STDERR, "Testing %s:",inname); - fprintf(STDERR, " FAIL\n"); - ierror += kerror; - } -#ifdef PNGTEST_MEMORY_DEBUG - if (allocation_now != current_allocation) - fprintf(STDERR, "MEMORY ERROR: %d bytes lost\n", - current_allocation-allocation_now); - if (current_allocation != 0) { - memory_infop pinfo = pinformation; - - fprintf(STDERR, "MEMORY ERROR: %d bytes still allocated\n", - current_allocation); - while (pinfo != NULL) { - fprintf(STDERR, " %d bytes at %x\n", pinfo->size, pinfo->pointer); - pinfo = pinfo->next; - } - } -#endif - } -#ifdef PNGTEST_MEMORY_DEBUG - fprintf(STDERR, "Maximum memory allocation: %d bytes\n", - maximum_allocation); -#endif - } - - if (ierror == 0) - fprintf(STDERR, "libpng passes test\n"); - else - fprintf(STDERR, "libpng FAILS test\n"); - return (int)(ierror != 0); -} diff --git a/src/png/pngtrans.c b/src/png/pngtrans.c deleted file mode 100644 index b28464acb2..0000000000 --- a/src/png/pngtrans.c +++ /dev/null @@ -1,577 +0,0 @@ - -/* pngtrans.c - transforms the data in a row (used by both readers and writers) - * - * libpng 1.0.1 - * For conditions of distribution and use, see copyright notice in png.h - * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc. - * Copyright (c) 1996, 1997 Andreas Dilger - * Copyright (c) 1998, Glenn Randers-Pehrson - * March 15, 1998 - */ - -#define PNG_INTERNAL -#include "../png/png.h" - -#if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED) -/* turn on bgr to rgb mapping */ -void -png_set_bgr(png_structp png_ptr) -{ - png_debug(1, "in png_set_bgr\n"); - png_ptr->transformations |= PNG_BGR; -} -#endif - -#if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED) -/* turn on 16 bit byte swapping */ -void -png_set_swap(png_structp png_ptr) -{ - png_debug(1, "in png_set_swap\n"); - if (png_ptr->bit_depth == 16) - png_ptr->transformations |= PNG_SWAP_BYTES; -} -#endif - -#if defined(PNG_READ_PACK_SUPPORTED) || defined(PNG_WRITE_PACK_SUPPORTED) -/* turn on pixel packing */ -void -png_set_packing(png_structp png_ptr) -{ - png_debug(1, "in png_set_packing\n"); - if (png_ptr->bit_depth < 8) - { - png_ptr->transformations |= PNG_PACK; - png_ptr->usr_bit_depth = 8; - } -} -#endif - -#if defined(PNG_READ_PACKSWAP_SUPPORTED)||defined(PNG_WRITE_PACKSWAP_SUPPORTED) -/* turn on packed pixel swapping */ -void -png_set_packswap(png_structp png_ptr) -{ - png_debug(1, "in png_set_packswap\n"); - if (png_ptr->bit_depth < 8) - png_ptr->transformations |= PNG_PACKSWAP; -} -#endif - -#if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED) -void -png_set_shift(png_structp png_ptr, png_color_8p true_bits) -{ - png_debug(1, "in png_set_shift\n"); - png_ptr->transformations |= PNG_SHIFT; - png_ptr->shift = *true_bits; -} -#endif - -#if defined(PNG_READ_INTERLACING_SUPPORTED) || \ - defined(PNG_WRITE_INTERLACING_SUPPORTED) -int -png_set_interlace_handling(png_structp png_ptr) -{ - png_debug(1, "in png_set_interlace handling\n"); - if (png_ptr->interlaced) - { - png_ptr->transformations |= PNG_INTERLACE; - return (7); - } - - return (1); -} -#endif - -#if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED) -/* Add a filler byte on read, or remove a filler or alpha byte on write. - * The filler type has changed in v0.95 to allow future 2-byte fillers - * for 48-bit input data, as well as avoiding problems with some compilers - * which don't like bytes as parameters. - */ -void -png_set_filler(png_structp png_ptr, png_uint_32 filler, int filler_loc) -{ - png_debug(1, "in png_set_filler\n"); - png_ptr->transformations |= PNG_FILLER; - png_ptr->filler = (png_byte)filler; - if (filler_loc == PNG_FILLER_AFTER) - png_ptr->flags |= PNG_FLAG_FILLER_AFTER; - else - png_ptr->flags &= ~PNG_FLAG_FILLER_AFTER; - - /* This should probably go in the "do_filler" routine */ - if (png_ptr->color_type == PNG_COLOR_TYPE_RGB && png_ptr->bit_depth == 8) - { - png_ptr->usr_channels = 4; - } -} -#endif - -#if defined(PNG_READ_SWAP_ALPHA_SUPPORTED) || \ - defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED) -void -png_set_swap_alpha(png_structp png_ptr) -{ - png_debug(1, "in png_set_swap_alpha\n"); - png_ptr->transformations |= PNG_SWAP_ALPHA; -} -#endif - -#if defined(PNG_READ_INVERT_ALPHA_SUPPORTED) || \ - defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED) -void -png_set_invert_alpha(png_structp png_ptr) -{ - png_debug(1, "in png_set_invert_alpha\n"); - png_ptr->transformations |= PNG_INVERT_ALPHA; -} -#endif - -#if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED) -void -png_set_invert_mono(png_structp png_ptr) -{ - png_debug(1, "in png_set_invert_mono\n"); - png_ptr->transformations |= PNG_INVERT_MONO; -} - -/* invert monocrome grayscale data */ -void -png_do_invert(png_row_infop row_info, png_bytep row) -{ - png_debug(1, "in png_do_invert\n"); - if (row_info->bit_depth == 1 && -#if defined(PNG_USELESS_TESTS_SUPPORTED) - row != NULL && row_info != NULL && -#endif - row_info->color_type == PNG_COLOR_TYPE_GRAY) - { - png_bytep rp; - png_uint_32 i; - - for (i = 0, rp = row; i < row_info->rowbytes; i++, rp++) - { - *rp = (png_byte)(~(*rp)); - } - } -} -#endif - -#if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED) -/* swaps byte order on 16 bit depth images */ -void -png_do_swap(png_row_infop row_info, png_bytep row) -{ - png_debug(1, "in png_do_swap\n"); - if ( -#if defined(PNG_USELESS_TESTS_SUPPORTED) - row != NULL && row_info != NULL && -#endif - row_info->bit_depth == 16) - { - png_bytep rp; - png_byte t; - png_uint_32 i; - - for (i = 0, rp = row; - i < row_info->width * row_info->channels; - i++, rp += 2) - { - t = *rp; - *rp = *(rp + 1); - *(rp + 1) = t; - } - } -} -#endif - -#if defined(PNG_READ_PACKSWAP_SUPPORTED)||defined(PNG_WRITE_PACKSWAP_SUPPORTED) -static png_byte onebppswaptable[256] = { - 0x00, 0x80, 0x40, 0xC0, 0x20, 0xA0, 0x60, 0xE0, - 0x10, 0x90, 0x50, 0xD0, 0x30, 0xB0, 0x70, 0xF0, - 0x08, 0x88, 0x48, 0xC8, 0x28, 0xA8, 0x68, 0xE8, - 0x18, 0x98, 0x58, 0xD8, 0x38, 0xB8, 0x78, 0xF8, - 0x04, 0x84, 0x44, 0xC4, 0x24, 0xA4, 0x64, 0xE4, - 0x14, 0x94, 0x54, 0xD4, 0x34, 0xB4, 0x74, 0xF4, - 0x0C, 0x8C, 0x4C, 0xCC, 0x2C, 0xAC, 0x6C, 0xEC, - 0x1C, 0x9C, 0x5C, 0xDC, 0x3C, 0xBC, 0x7C, 0xFC, - 0x02, 0x82, 0x42, 0xC2, 0x22, 0xA2, 0x62, 0xE2, - 0x12, 0x92, 0x52, 0xD2, 0x32, 0xB2, 0x72, 0xF2, - 0x0A, 0x8A, 0x4A, 0xCA, 0x2A, 0xAA, 0x6A, 0xEA, - 0x1A, 0x9A, 0x5A, 0xDA, 0x3A, 0xBA, 0x7A, 0xFA, - 0x06, 0x86, 0x46, 0xC6, 0x26, 0xA6, 0x66, 0xE6, - 0x16, 0x96, 0x56, 0xD6, 0x36, 0xB6, 0x76, 0xF6, - 0x0E, 0x8E, 0x4E, 0xCE, 0x2E, 0xAE, 0x6E, 0xEE, - 0x1E, 0x9E, 0x5E, 0xDE, 0x3E, 0xBE, 0x7E, 0xFE, - 0x01, 0x81, 0x41, 0xC1, 0x21, 0xA1, 0x61, 0xE1, - 0x11, 0x91, 0x51, 0xD1, 0x31, 0xB1, 0x71, 0xF1, - 0x09, 0x89, 0x49, 0xC9, 0x29, 0xA9, 0x69, 0xE9, - 0x19, 0x99, 0x59, 0xD9, 0x39, 0xB9, 0x79, 0xF9, - 0x05, 0x85, 0x45, 0xC5, 0x25, 0xA5, 0x65, 0xE5, - 0x15, 0x95, 0x55, 0xD5, 0x35, 0xB5, 0x75, 0xF5, - 0x0D, 0x8D, 0x4D, 0xCD, 0x2D, 0xAD, 0x6D, 0xED, - 0x1D, 0x9D, 0x5D, 0xDD, 0x3D, 0xBD, 0x7D, 0xFD, - 0x03, 0x83, 0x43, 0xC3, 0x23, 0xA3, 0x63, 0xE3, - 0x13, 0x93, 0x53, 0xD3, 0x33, 0xB3, 0x73, 0xF3, - 0x0B, 0x8B, 0x4B, 0xCB, 0x2B, 0xAB, 0x6B, 0xEB, - 0x1B, 0x9B, 0x5B, 0xDB, 0x3B, 0xBB, 0x7B, 0xFB, - 0x07, 0x87, 0x47, 0xC7, 0x27, 0xA7, 0x67, 0xE7, - 0x17, 0x97, 0x57, 0xD7, 0x37, 0xB7, 0x77, 0xF7, - 0x0F, 0x8F, 0x4F, 0xCF, 0x2F, 0xAF, 0x6F, 0xEF, - 0x1F, 0x9F, 0x5F, 0xDF, 0x3F, 0xBF, 0x7F, 0xFF -}; - -static png_byte twobppswaptable[256] = { - 0x00, 0x40, 0x80, 0xC0, 0x10, 0x50, 0x90, 0xD0, - 0x20, 0x60, 0xA0, 0xE0, 0x30, 0x70, 0xB0, 0xF0, - 0x04, 0x44, 0x84, 0xC4, 0x14, 0x54, 0x94, 0xD4, - 0x24, 0x64, 0xA4, 0xE4, 0x34, 0x74, 0xB4, 0xF4, - 0x08, 0x48, 0x88, 0xC8, 0x18, 0x58, 0x98, 0xD8, - 0x28, 0x68, 0xA8, 0xE8, 0x38, 0x78, 0xB8, 0xF8, - 0x0C, 0x4C, 0x8C, 0xCC, 0x1C, 0x5C, 0x9C, 0xDC, - 0x2C, 0x6C, 0xAC, 0xEC, 0x3C, 0x7C, 0xBC, 0xFC, - 0x01, 0x41, 0x81, 0xC1, 0x11, 0x51, 0x91, 0xD1, - 0x21, 0x61, 0xA1, 0xE1, 0x31, 0x71, 0xB1, 0xF1, - 0x05, 0x45, 0x85, 0xC5, 0x15, 0x55, 0x95, 0xD5, - 0x25, 0x65, 0xA5, 0xE5, 0x35, 0x75, 0xB5, 0xF5, - 0x09, 0x49, 0x89, 0xC9, 0x19, 0x59, 0x99, 0xD9, - 0x29, 0x69, 0xA9, 0xE9, 0x39, 0x79, 0xB9, 0xF9, - 0x0D, 0x4D, 0x8D, 0xCD, 0x1D, 0x5D, 0x9D, 0xDD, - 0x2D, 0x6D, 0xAD, 0xED, 0x3D, 0x7D, 0xBD, 0xFD, - 0x02, 0x42, 0x82, 0xC2, 0x12, 0x52, 0x92, 0xD2, - 0x22, 0x62, 0xA2, 0xE2, 0x32, 0x72, 0xB2, 0xF2, - 0x06, 0x46, 0x86, 0xC6, 0x16, 0x56, 0x96, 0xD6, - 0x26, 0x66, 0xA6, 0xE6, 0x36, 0x76, 0xB6, 0xF6, - 0x0A, 0x4A, 0x8A, 0xCA, 0x1A, 0x5A, 0x9A, 0xDA, - 0x2A, 0x6A, 0xAA, 0xEA, 0x3A, 0x7A, 0xBA, 0xFA, - 0x0E, 0x4E, 0x8E, 0xCE, 0x1E, 0x5E, 0x9E, 0xDE, - 0x2E, 0x6E, 0xAE, 0xEE, 0x3E, 0x7E, 0xBE, 0xFE, - 0x03, 0x43, 0x83, 0xC3, 0x13, 0x53, 0x93, 0xD3, - 0x23, 0x63, 0xA3, 0xE3, 0x33, 0x73, 0xB3, 0xF3, - 0x07, 0x47, 0x87, 0xC7, 0x17, 0x57, 0x97, 0xD7, - 0x27, 0x67, 0xA7, 0xE7, 0x37, 0x77, 0xB7, 0xF7, - 0x0B, 0x4B, 0x8B, 0xCB, 0x1B, 0x5B, 0x9B, 0xDB, - 0x2B, 0x6B, 0xAB, 0xEB, 0x3B, 0x7B, 0xBB, 0xFB, - 0x0F, 0x4F, 0x8F, 0xCF, 0x1F, 0x5F, 0x9F, 0xDF, - 0x2F, 0x6F, 0xAF, 0xEF, 0x3F, 0x7F, 0xBF, 0xFF -}; - -static png_byte fourbppswaptable[256] = { - 0x00, 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, - 0x80, 0x90, 0xA0, 0xB0, 0xC0, 0xD0, 0xE0, 0xF0, - 0x01, 0x11, 0x21, 0x31, 0x41, 0x51, 0x61, 0x71, - 0x81, 0x91, 0xA1, 0xB1, 0xC1, 0xD1, 0xE1, 0xF1, - 0x02, 0x12, 0x22, 0x32, 0x42, 0x52, 0x62, 0x72, - 0x82, 0x92, 0xA2, 0xB2, 0xC2, 0xD2, 0xE2, 0xF2, - 0x03, 0x13, 0x23, 0x33, 0x43, 0x53, 0x63, 0x73, - 0x83, 0x93, 0xA3, 0xB3, 0xC3, 0xD3, 0xE3, 0xF3, - 0x04, 0x14, 0x24, 0x34, 0x44, 0x54, 0x64, 0x74, - 0x84, 0x94, 0xA4, 0xB4, 0xC4, 0xD4, 0xE4, 0xF4, - 0x05, 0x15, 0x25, 0x35, 0x45, 0x55, 0x65, 0x75, - 0x85, 0x95, 0xA5, 0xB5, 0xC5, 0xD5, 0xE5, 0xF5, - 0x06, 0x16, 0x26, 0x36, 0x46, 0x56, 0x66, 0x76, - 0x86, 0x96, 0xA6, 0xB6, 0xC6, 0xD6, 0xE6, 0xF6, - 0x07, 0x17, 0x27, 0x37, 0x47, 0x57, 0x67, 0x77, - 0x87, 0x97, 0xA7, 0xB7, 0xC7, 0xD7, 0xE7, 0xF7, - 0x08, 0x18, 0x28, 0x38, 0x48, 0x58, 0x68, 0x78, - 0x88, 0x98, 0xA8, 0xB8, 0xC8, 0xD8, 0xE8, 0xF8, - 0x09, 0x19, 0x29, 0x39, 0x49, 0x59, 0x69, 0x79, - 0x89, 0x99, 0xA9, 0xB9, 0xC9, 0xD9, 0xE9, 0xF9, - 0x0A, 0x1A, 0x2A, 0x3A, 0x4A, 0x5A, 0x6A, 0x7A, - 0x8A, 0x9A, 0xAA, 0xBA, 0xCA, 0xDA, 0xEA, 0xFA, - 0x0B, 0x1B, 0x2B, 0x3B, 0x4B, 0x5B, 0x6B, 0x7B, - 0x8B, 0x9B, 0xAB, 0xBB, 0xCB, 0xDB, 0xEB, 0xFB, - 0x0C, 0x1C, 0x2C, 0x3C, 0x4C, 0x5C, 0x6C, 0x7C, - 0x8C, 0x9C, 0xAC, 0xBC, 0xCC, 0xDC, 0xEC, 0xFC, - 0x0D, 0x1D, 0x2D, 0x3D, 0x4D, 0x5D, 0x6D, 0x7D, - 0x8D, 0x9D, 0xAD, 0xBD, 0xCD, 0xDD, 0xED, 0xFD, - 0x0E, 0x1E, 0x2E, 0x3E, 0x4E, 0x5E, 0x6E, 0x7E, - 0x8E, 0x9E, 0xAE, 0xBE, 0xCE, 0xDE, 0xEE, 0xFE, - 0x0F, 0x1F, 0x2F, 0x3F, 0x4F, 0x5F, 0x6F, 0x7F, - 0x8F, 0x9F, 0xAF, 0xBF, 0xCF, 0xDF, 0xEF, 0xFF -}; - -/* swaps pixel packing order within bytes */ -void -png_do_packswap(png_row_infop row_info, png_bytep row) -{ - png_debug(1, "in png_do_packswap\n"); - if ( -#if defined(PNG_USELESS_TESTS_SUPPORTED) - row != NULL && row_info != NULL && -#endif - row_info->bit_depth < 8) - { - png_bytep rp, end, table; - - end = row + row_info->rowbytes; - - if (row_info->bit_depth == 1) - table = onebppswaptable; - else if (row_info->bit_depth == 2) - table = twobppswaptable; - else if (row_info->bit_depth == 4) - table = fourbppswaptable; - else - return; - - for (rp = row; rp < end; rp++) - *rp = table[*rp]; - } -} -#endif /* PNG_READ_PACKSWAP_SUPPORTED or PNG_WRITE_PACKSWAP_SUPPORTED */ - -#if defined(PNG_WRITE_FILLER_SUPPORTED) || \ - defined(PNG_READ_STRIP_ALPHA_SUPPORTED) -/* remove filler or alpha byte(s) */ -void -png_do_strip_filler(png_row_infop row_info, png_bytep row, png_uint_32 flags) -{ - png_debug(1, "in png_do_strip_filler\n"); -#if defined(PNG_USELESS_TESTS_SUPPORTED) - if (row != NULL && row_info != NULL) -#endif - { -/* - if (row_info->color_type == PNG_COLOR_TYPE_RGB || - row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA) -*/ - if (row_info->channels == 4) - { - if (row_info->bit_depth == 8) - { - /* This converts from RGBX or RGBA to RGB */ - if (flags & PNG_FLAG_FILLER_AFTER) - { - png_bytep sp, dp; - png_uint_32 i; - - for (i = 1, sp = row + 4, dp = row + 3; i < row_info->width; i++) - { - *dp++ = *sp++; - *dp++ = *sp++; - *dp++ = *sp++; - sp++; - } - } - /* This converts from XRGB or ARGB to RGB */ - else - { - png_bytep sp, dp; - png_uint_32 i; - - for (i = 0, sp = row, dp = row; i < row_info->width; i++) - { - sp++; - *dp++ = *sp++; - *dp++ = *sp++; - *dp++ = *sp++; - } - } - row_info->pixel_depth = 24; - row_info->rowbytes = row_info->width * 3; - } - else /* if (row_info->bit_depth == 16) */ - { - if (flags & PNG_FLAG_FILLER_AFTER) - { - png_bytep sp, dp; - png_uint_32 i; - - /* This converts from RRGGBBXX or RRGGBBAA to RRGGBB */ - for (i = 1, sp = row + 8, dp = row + 6; i < row_info->width; i++) - { - /* This could be (although memcpy is probably slower): - png_memcpy(dp, sp, 6); - sp += 8; - dp += 6; - */ - *dp++ = *sp++; - *dp++ = *sp++; - *dp++ = *sp++; - *dp++ = *sp++; - *dp++ = *sp++; - *dp++ = *sp++; - sp += 2; - } - } - else - { - png_bytep sp, dp; - png_uint_32 i; - - /* This converts from XXRRGGBB or AARRGGBB to RRGGBB */ - for (i = 0, sp = row + 2, dp = row; i < row_info->width; i++) - { - /* This could be (although memcpy is probably slower): - png_memcpy(dp, sp, 6); - sp += 8; - dp += 6; - */ - *dp++ = *sp++; - *dp++ = *sp++; - *dp++ = *sp++; - *dp++ = *sp++; - *dp++ = *sp++; - *dp++ = *sp++; - } - } - row_info->pixel_depth = 48; - row_info->rowbytes = row_info->width * 6; - } - row_info->channels = 3; - } -/* - else if (row_info->color_type == PNG_COLOR_TYPE_GRAY || - row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) -*/ - else if (row_info->channels == 2) - { - if (row_info->bit_depth == 8) - { - /* This converts from GX or GA to G */ - if (flags & PNG_FLAG_FILLER_AFTER) - { - png_bytep sp, dp; - png_uint_32 i; - - for (i = 1, sp = row + 2, dp = row + 1; i < row_info->width; i++) - { - *dp++ = *sp++; - sp++; - } - } - /* This converts from XG or AG to G */ - else - { - png_bytep sp, dp; - png_uint_32 i; - - for (i = 0, sp = row, dp = row; i < row_info->width; i++) - { - sp++; - *dp++ = *sp++; - } - } - row_info->pixel_depth = 8; - row_info->rowbytes = row_info->width; - } - else /* if (row_info->bit_depth == 16) */ - { - if (flags & PNG_FLAG_FILLER_AFTER) - { - png_bytep sp, dp; - png_uint_32 i; - - /* This converts from GGXX or GGAA to GG */ - for (i = 1, sp = row + 4, dp = row + 2; i < row_info->width; i++) - { - *dp++ = *sp++; - *dp++ = *sp++; - sp += 2; - } - } - else - { - png_bytep sp, dp; - png_uint_32 i; - - /* This converts from XXGG or AAGG to GG */ - for (i = 0, sp = row, dp = row; i < row_info->width; i++) - { - sp += 2; - *dp++ = *sp++; - *dp++ = *sp++; - } - } - row_info->pixel_depth = 16; - row_info->rowbytes = row_info->width * 2; - } - row_info->channels = 1; - } - } -} -#endif - -#if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED) -/* swaps red and blue bytes within a pixel */ -void -png_do_bgr(png_row_infop row_info, png_bytep row) -{ - png_debug(1, "in png_do_bgr\n"); - if ( -#if defined(PNG_USELESS_TESTS_SUPPORTED) - row != NULL && row_info != NULL && -#endif - (row_info->color_type & PNG_COLOR_MASK_COLOR)) - { - if (row_info->bit_depth == 8) - { - if (row_info->color_type == PNG_COLOR_TYPE_RGB) - { - png_bytep rp; - png_byte save; - png_uint_32 i; - - for (i = 0, rp = row; i < row_info->width; i++, rp += 3) - { - save = *rp; - *rp = *(rp + 2); - *(rp + 2) = save; - } - } - else if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA) - { - png_bytep rp; - png_byte save; - png_uint_32 i; - - for (i = 0, rp = row; i < row_info->width; i++, rp += 4) - { - save = *rp; - *rp = *(rp + 2); - *(rp + 2) = save; - } - } - } - else if (row_info->bit_depth == 16) - { - if (row_info->color_type == PNG_COLOR_TYPE_RGB) - { - png_bytep rp; - png_byte save[2]; - png_uint_32 i; - - for (i = 0, rp = row; i < row_info->width; i++, rp += 6) - { - save[0] = *rp; - save[1] = *(rp + 1); - *rp = *(rp + 4); - *(rp + 1) = *(rp + 5); - *(rp + 4) = save[0]; - *(rp + 5) = save[1]; - } - } - else if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA) - { - png_bytep rp; - png_byte save[2]; - png_uint_32 i; - - for (i = 0, rp = row; i < row_info->width; i++, rp += 8) - { - save[0] = *rp; - save[1] = *(rp + 1); - *rp = *(rp + 4); - *(rp + 1) = *(rp + 5); - *(rp + 4) = save[0]; - *(rp + 5) = save[1]; - } - } - } - } -} -#endif /* PNG_READ_BGR_SUPPORTED or PNG_WRITE_BGR_SUPPORTED */ - diff --git a/src/png/pngwio.c b/src/png/pngwio.c deleted file mode 100644 index 6982504691..0000000000 --- a/src/png/pngwio.c +++ /dev/null @@ -1,207 +0,0 @@ - -/* pngwio.c - functions for data output - * - * libpng 1.0.1 - * For conditions of distribution and use, see copyright notice in png.h - * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc. - * Copyright (c) 1996, 1997 Andreas Dilger - * Copyright (c) 1998, Glenn Randers-Pehrson - * March 15, 1998 - * - * This file provides a location for all output. Users which need - * special handling are expected to write functions which have the same - * arguments as these, and perform similar functions, but possibly use - * different output methods. Note that you shouldn't change these - * functions, but rather write replacement functions and then change - * them at run time with png_set_write_fn(...). - */ - -#define PNG_INTERNAL -#include "../png/png.h" - -/* Write the data to whatever output you are using. The default routine - writes to a file pointer. Note that this routine sometimes gets called - with very small lengths, so you should implement some kind of simple - buffering if you are using unbuffered writes. This should never be asked - to write more then 64K on a 16 bit machine. */ - -void -png_write_data(png_structp png_ptr, png_bytep data, png_size_t length) -{ - if (png_ptr->write_data_fn != NULL ) - (*(png_ptr->write_data_fn))(png_ptr, data, length); - else - png_error(png_ptr, "Call to NULL write function"); -} - -#if !defined(PNG_NO_STDIO) -/* This is the function which does the actual writing of data. If you are - not writing to a standard C stream, you should create a replacement - write_data function and use it at run time with png_set_write_fn(), rather - than changing the library. */ -#ifndef USE_FAR_KEYWORD -static void -png_default_write_data(png_structp png_ptr, png_bytep data, png_size_t length) -{ - png_uint_32 check; - - check = fwrite(data, 1, length, (FILE *)(png_ptr->io_ptr)); - if (check != length) - { - png_error(png_ptr, "Write Error"); - } -} -#else -/* this is the model-independent version. Since the standard I/O library - can't handle far buffers in the medium and small models, we have to copy - the data. -*/ - -#define NEAR_BUF_SIZE 1024 -#define MIN(a,b) (a <= b ? a : b) - -static void -png_default_write_data(png_structp png_ptr, png_bytep data, png_size_t length) -{ - png_uint_32 check; - png_byte *near_data; /* Needs to be "png_byte *" instead of "png_bytep" */ - FILE *io_ptr; - - /* Check if data really is near. If so, use usual code. */ - near_data = (png_byte *)CVT_PTR_NOCHECK(data); - io_ptr = (FILE *)CVT_PTR(png_ptr->io_ptr); - if ((png_bytep)near_data == data) - { - check = fwrite(near_data, 1, length, io_ptr); - } - else - { - png_byte buf[NEAR_BUF_SIZE]; - png_size_t written, remaining, err; - check = 0; - remaining = length; - do - { - written = MIN(NEAR_BUF_SIZE, remaining); - png_memcpy(buf, data, written); /* copy far buffer to near buffer */ - err = fwrite(buf, 1, written, io_ptr); - if (err != written) - break; - else - check += err; - data += written; - remaining -= written; - } - while (remaining != 0); - } - if (check != length) - { - png_error(png_ptr, "Write Error"); - } -} - -#endif -#endif - -/* This function is called to output any data pending writing (normally - to disk). After png_flush is called, there should be no data pending - writing in any buffers. */ -#if defined(PNG_WRITE_FLUSH_SUPPORTED) -void -png_flush(png_structp png_ptr) -{ - if (png_ptr->output_flush_fn != NULL) - (*(png_ptr->output_flush_fn))(png_ptr); -} - -#if !defined(PNG_NO_STDIO) -static void -png_default_flush(png_structp png_ptr) -{ - FILE *io_ptr; - io_ptr = (FILE *)CVT_PTR((png_ptr->io_ptr)); - if (io_ptr != NULL) - fflush(io_ptr); -} -#endif -#endif - -/* This function allows the application to supply new output functions for - libpng if standard C streams aren't being used. - - This function takes as its arguments: - png_ptr - pointer to a png output data structure - io_ptr - pointer to user supplied structure containing info about - the output functions. May be NULL. - write_data_fn - pointer to a new output function which takes as its - arguments a pointer to a png_struct, a pointer to - data to be written, and a 32-bit unsigned int which is - the number of bytes to be written. The new write - function should call png_error(png_ptr, "Error msg") - to exit and output any fatal error messages. - flush_data_fn - pointer to a new flush function which takes as its - arguments a pointer to a png_struct. After a call to - the flush function, there should be no data in any buffers - or pending transmission. If the output method doesn't do - any buffering of ouput, a function prototype must still be - supplied although it doesn't have to do anything. If - PNG_WRITE_FLUSH_SUPPORTED is not defined at libpng compile - time, output_flush_fn will be ignored, although it must be - supplied for compatibility. */ -void -png_set_write_fn(png_structp png_ptr, png_voidp io_ptr, - png_rw_ptr write_data_fn, png_flush_ptr output_flush_fn) -{ - png_ptr->io_ptr = io_ptr; - -#if !defined(PNG_NO_STDIO) - if (write_data_fn != NULL) - png_ptr->write_data_fn = write_data_fn; - else - png_ptr->write_data_fn = png_default_write_data; -#else - png_ptr->write_data_fn = write_data_fn; -#endif - -#if defined(PNG_WRITE_FLUSH_SUPPORTED) -#if !defined(PNG_NO_STDIO) - if (output_flush_fn != NULL) - png_ptr->output_flush_fn = output_flush_fn; - else - png_ptr->output_flush_fn = png_default_flush; -#else - png_ptr->output_flush_fn = output_flush_fn; -#endif -#endif /* PNG_WRITE_FLUSH_SUPPORTED */ - - /* It is an error to read while writing a png file */ - png_ptr->read_data_fn = NULL; -} - -#if defined(USE_FAR_KEYWORD) -#if defined(_MSC_VER) -void *png_far_to_near(png_structp png_ptr,png_voidp ptr, int check) -{ - void *near_ptr; - void FAR *far_ptr; - FP_OFF(near_ptr) = FP_OFF(ptr); - far_ptr = (void FAR *)near_ptr; - if(check != 0) - if(FP_SEG(ptr) != FP_SEG(far_ptr)) - png_error(png_ptr,"segment lost in conversion"); - return(near_ptr); -} -# else -void *png_far_to_near(png_structp png_ptr,png_voidp ptr, int check) -{ - void *near_ptr; - void FAR *far_ptr; - near_ptr = (void FAR *)ptr; - far_ptr = (void FAR *)near_ptr; - if(check != 0) - if(far_ptr != ptr) - png_error(png_ptr,"segment lost in conversion"); - return(near_ptr); -} -# endif -# endif diff --git a/src/png/pngwrite.c b/src/png/pngwrite.c deleted file mode 100644 index 699207c04a..0000000000 --- a/src/png/pngwrite.c +++ /dev/null @@ -1,970 +0,0 @@ - -/* pngwrite.c - general routines to write a PNG file - * - * libpng 1.0.1 - * For conditions of distribution and use, see copyright notice in png.h - * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc. - * Copyright (c) 1996, 1997 Andreas Dilger - * Copyright (c) 1998, Glenn Randers-Pehrson - * March 15, 1998 - */ - -/* get internal access to png.h */ -#define PNG_INTERNAL -#include "../png/png.h" - -/* Writes all the PNG information. This is the suggested way to use the - * library. If you have a new chunk to add, make a function to write it, - * and put it in the correct location here. If you want the chunk written - * after the image data, put it in png_write_end(). I strongly encurage - * you to supply a PNG_INFO_ flag, and check info_ptr->valid before writing - * the chunk, as that will keep the code from breaking if you want to just - * write a plain PNG file. If you have long comments, I suggest writing - * them in png_write_end(), and compressing them. - */ -void -png_write_info(png_structp png_ptr, png_infop info_ptr) -{ -#if defined(PNG_WRITE_tEXt_SUPPORTED) || defined(PNG_WRITE_zTXt_SUPPORTED) - int i; -#endif - - png_debug(1, "in png_write_info\n"); - png_write_sig(png_ptr); /* write PNG signature */ - /* write IHDR information. */ - png_write_IHDR(png_ptr, info_ptr->width, info_ptr->height, - info_ptr->bit_depth, info_ptr->color_type, info_ptr->compression_type, - info_ptr->filter_type, -#if defined(PNG_WRITE_INTERLACING_SUPPORTED) - info_ptr->interlace_type); -#else - 0); -#endif - /* the rest of these check to see if the valid field has the appropriate - flag set, and if it does, writes the chunk. */ -#if defined(PNG_WRITE_gAMA_SUPPORTED) - if (info_ptr->valid & PNG_INFO_gAMA) - png_write_gAMA(png_ptr, info_ptr->gamma); -#endif -#if defined(PNG_WRITE_sRGB_SUPPORTED) - if (info_ptr->valid & PNG_INFO_sRGB) - png_write_sRGB(png_ptr, (int)info_ptr->srgb_intent); -#endif -#if defined(PNG_WRITE_sBIT_SUPPORTED) - if (info_ptr->valid & PNG_INFO_sBIT) - png_write_sBIT(png_ptr, &(info_ptr->sig_bit), info_ptr->color_type); -#endif -#if defined(PNG_WRITE_cHRM_SUPPORTED) - if (info_ptr->valid & PNG_INFO_cHRM) - png_write_cHRM(png_ptr, - info_ptr->x_white, info_ptr->y_white, - info_ptr->x_red, info_ptr->y_red, - info_ptr->x_green, info_ptr->y_green, - info_ptr->x_blue, info_ptr->y_blue); -#endif - if (info_ptr->valid & PNG_INFO_PLTE) - png_write_PLTE(png_ptr, info_ptr->palette, - (png_uint_32)info_ptr->num_palette); - else if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE) - png_error(png_ptr, "Valid palette required for paletted images\n"); - -#if defined(PNG_WRITE_tRNS_SUPPORTED) - if (info_ptr->valid & PNG_INFO_tRNS) - { -#if defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED) - /* invert the alpha channel (in tRNS) */ - if (png_ptr->transformations & PNG_INVERT_ALPHA && - info_ptr->color_type == PNG_COLOR_TYPE_PALETTE) - { - int j; - for (j=0; j<(int)info_ptr->num_trans; j++) - info_ptr->trans[j] = 255 - info_ptr->trans[j]; - } -#endif - png_write_tRNS(png_ptr, info_ptr->trans, &(info_ptr->trans_values), - info_ptr->num_trans, info_ptr->color_type); - } -#endif -#if defined(PNG_WRITE_bKGD_SUPPORTED) - if (info_ptr->valid & PNG_INFO_bKGD) - png_write_bKGD(png_ptr, &(info_ptr->background), info_ptr->color_type); -#endif -#if defined(PNG_WRITE_hIST_SUPPORTED) - if (info_ptr->valid & PNG_INFO_hIST) - png_write_hIST(png_ptr, info_ptr->hist, info_ptr->num_palette); -#endif -#if defined(PNG_WRITE_oFFs_SUPPORTED) - if (info_ptr->valid & PNG_INFO_oFFs) - png_write_oFFs(png_ptr, info_ptr->x_offset, info_ptr->y_offset, - info_ptr->offset_unit_type); -#endif -#if defined(PNG_WRITE_pCAL_SUPPORTED) - if (info_ptr->valid & PNG_INFO_pCAL) - png_write_pCAL(png_ptr, info_ptr->pcal_purpose, info_ptr->pcal_X0, - info_ptr->pcal_X1, info_ptr->pcal_type, info_ptr->pcal_nparams, - info_ptr->pcal_units, info_ptr->pcal_params); -#endif -#if defined(PNG_WRITE_pHYs_SUPPORTED) - if (info_ptr->valid & PNG_INFO_pHYs) - png_write_pHYs(png_ptr, info_ptr->x_pixels_per_unit, - info_ptr->y_pixels_per_unit, info_ptr->phys_unit_type); -#endif -#if defined(PNG_WRITE_tIME_SUPPORTED) - if (info_ptr->valid & PNG_INFO_tIME) - { - png_write_tIME(png_ptr, &(info_ptr->mod_time)); - png_ptr->flags |= PNG_FLAG_WROTE_tIME; - } -#endif -#if defined(PNG_WRITE_tEXt_SUPPORTED) || defined(PNG_WRITE_zTXt_SUPPORTED) - /* Check to see if we need to write text chunks */ - for (i = 0; i < info_ptr->num_text; i++) - { - png_debug2(2, "Writing header text chunk %d, type %d\n", i, - info_ptr->text[i].compression); - /* If we want a compressed text chunk */ - if (info_ptr->text[i].compression >= PNG_TEXT_COMPRESSION_zTXt) - { -#if defined(PNG_WRITE_zTXt_SUPPORTED) - /* write compressed chunk */ - png_write_zTXt(png_ptr, info_ptr->text[i].key, - info_ptr->text[i].text, info_ptr->text[i].text_length, - info_ptr->text[i].compression); -#else - png_warning(png_ptr, "Unable to write compressed text\n"); -#endif - /* Mark this chunk as written */ - info_ptr->text[i].compression = PNG_TEXT_COMPRESSION_zTXt_WR; - } - else if (info_ptr->text[i].compression == PNG_TEXT_COMPRESSION_NONE) - { -#if defined(PNG_WRITE_tEXt_SUPPORTED) - /* write uncompressed chunk */ - png_write_tEXt(png_ptr, info_ptr->text[i].key, - info_ptr->text[i].text, info_ptr->text[i].text_length); -#else - png_warning(png_ptr, "Unable to write uncompressed text\n"); -#endif - /* Mark this chunk as written */ - info_ptr->text[i].compression = PNG_TEXT_COMPRESSION_NONE_WR; - } - } -#endif -} - -/* Writes the end of the PNG file. If you don't want to write comments or - * time information, you can pass NULL for info. If you already wrote these - * in png_write_info(), do not write them again here. If you have long - * comments, I suggest writing them here, and compressing them. - */ -void -png_write_end(png_structp png_ptr, png_infop info_ptr) -{ - png_debug(1, "in png_write_end\n"); - if (!(png_ptr->mode & PNG_HAVE_IDAT)) - png_error(png_ptr, "No IDATs written into file"); - - /* see if user wants us to write information chunks */ - if (info_ptr != NULL) - { -#if defined(PNG_WRITE_tEXt_SUPPORTED) || defined(PNG_WRITE_zTXt_SUPPORTED) - int i; /* local index variable */ -#endif -#if defined(PNG_WRITE_tIME_SUPPORTED) - /* check to see if user has supplied a time chunk */ - if (info_ptr->valid & PNG_INFO_tIME && - !(png_ptr->flags & PNG_FLAG_WROTE_tIME)) - png_write_tIME(png_ptr, &(info_ptr->mod_time)); -#endif -#if defined(PNG_WRITE_tEXt_SUPPORTED) || defined(PNG_WRITE_zTXt_SUPPORTED) - /* loop through comment chunks */ - for (i = 0; i < info_ptr->num_text; i++) - { - png_debug2(2, "Writing trailer text chunk %d, type %d\n", i, - info_ptr->text[i].compression); - if (info_ptr->text[i].compression >= PNG_TEXT_COMPRESSION_zTXt) - { -#if defined(PNG_WRITE_zTXt_SUPPORTED) - /* write compressed chunk */ - png_write_zTXt(png_ptr, info_ptr->text[i].key, - info_ptr->text[i].text, info_ptr->text[i].text_length, - info_ptr->text[i].compression); -#else - png_warning(png_ptr, "Unable to write compressed text\n"); -#endif - /* Mark this chunk as written */ - info_ptr->text[i].compression = PNG_TEXT_COMPRESSION_zTXt_WR; - } - else if (info_ptr->text[i].compression == PNG_TEXT_COMPRESSION_NONE) - { -#if defined(PNG_WRITE_tEXt_SUPPORTED) - /* write uncompressed chunk */ - png_write_tEXt(png_ptr, info_ptr->text[i].key, - info_ptr->text[i].text, info_ptr->text[i].text_length); -#else - png_warning(png_ptr, "Unable to write uncompressed text\n"); -#endif - - /* Mark this chunk as written */ - info_ptr->text[i].compression = PNG_TEXT_COMPRESSION_NONE_WR; - } - } -#endif - } - - png_ptr->mode |= PNG_AFTER_IDAT; - - /* write end of PNG file */ - png_write_IEND(png_ptr); -} - -#if defined(PNG_TIME_RFC1123_SUPPORTED) -/* Convert the supplied time into an RFC 1123 string suitable for use in - * a "Creation Time" or other text-based time string. - */ -png_charp -png_convert_to_rfc1123(png_structp png_ptr, png_timep ptime) -{ - static PNG_CONST char short_months[12][4] = - {"Jan", "Feb", "Mar", "Apr", "May", "Jun", - "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}; - - if (png_ptr->time_buffer == NULL) - { - png_ptr->time_buffer = (png_charp)png_malloc(png_ptr, (png_uint_32)(29* - sizeof(char))); - } - -#ifdef USE_FAR_KEYWORD - { - char near_time_buf[29]; - sprintf(near_time_buf, "%d %s %d %02d:%02d:%02d +0000", - ptime->day % 31, short_months[ptime->month - 1], - ptime->year, ptime->hour % 24, ptime->minute % 60, - ptime->second % 61); - png_memcpy(png_ptr->time_buffer, near_time_buf, - 29*sizeof(char)); - } -#else - sprintf(png_ptr->time_buffer, "%d %s %d %02d:%02d:%02d +0000", - ptime->day % 31, short_months[ptime->month - 1], - ptime->year, ptime->hour % 24, ptime->minute % 60, - ptime->second % 61); -#endif - return ((png_charp)png_ptr->time_buffer); -} -#endif /* PNG_TIME_RFC1123_SUPPORTED */ - -#if defined(PNG_WRITE_tIME_SUPPORTED) -void -png_convert_from_struct_tm(png_timep ptime, struct tm FAR * ttime) -{ - png_debug(1, "in png_convert_from_struct_tm\n"); - ptime->year = (png_uint_16)(1900 + ttime->tm_year); - ptime->month = (png_byte)(ttime->tm_mon + 1); - ptime->day = (png_byte)ttime->tm_mday; - ptime->hour = (png_byte)ttime->tm_hour; - ptime->minute = (png_byte)ttime->tm_min; - ptime->second = (png_byte)ttime->tm_sec; -} - -void -png_convert_from_time_t(png_timep ptime, time_t ttime) -{ - struct tm *tbuf; - - png_debug(1, "in png_convert_from_time_t\n"); - tbuf = gmtime(&ttime); - png_convert_from_struct_tm(ptime, tbuf); -} -#endif - -/* Initialize png_ptr structure, and allocate any memory needed */ -png_structp -png_create_write_struct(png_const_charp user_png_ver, voidp error_ptr, - png_error_ptr error_fn, png_error_ptr warn_fn) -{ - png_structp png_ptr; -#ifdef USE_FAR_KEYWORD - jmp_buf jmpbuf; -#endif - png_debug(1, "in png_create_write_struct\n"); - if ((png_ptr = (png_structp)png_create_struct(PNG_STRUCT_PNG)) == NULL) - { - return ((png_structp)NULL); - } -#ifdef USE_FAR_KEYWORD - if (setjmp(jmpbuf)) -#else - if (setjmp(png_ptr->jmpbuf)) -#endif - { - png_free(png_ptr, png_ptr->zbuf); - png_destroy_struct(png_ptr); - return ((png_structp)NULL); - } -#ifdef USE_FAR_KEYWORD - png_memcpy(png_ptr->jmpbuf,jmpbuf,sizeof(jmp_buf)); -#endif - png_set_error_fn(png_ptr, error_ptr, error_fn, warn_fn); - - /* Libpng 0.90 and later are binary incompatible with libpng 0.89, so - * we must recompile any applications that use any older library version. - * For versions after libpng 1.0, we will be compatible, so we need - * only check the first digit. - */ - if (user_png_ver == NULL || user_png_ver[0] != png_libpng_ver[0] || - (png_libpng_ver[0] == '0' && user_png_ver[2] < '9')) - { - png_error(png_ptr, - "Incompatible libpng version in application and library"); - } - - /* initialize zbuf - compression buffer */ - png_ptr->zbuf_size = PNG_ZBUF_SIZE; - png_ptr->zbuf = (png_bytep)png_malloc(png_ptr, - (png_uint_32)png_ptr->zbuf_size); - - png_set_write_fn(png_ptr, NULL, NULL, NULL); - -#if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED) - png_set_filter_heuristics(png_ptr, PNG_FILTER_HEURISTIC_DEFAULT, - 1, NULL, NULL); -#endif - - return ((png_structp)png_ptr); -} - - -/* Initialize png_ptr structure, and allocate any memory needed */ -void -png_write_init(png_structp png_ptr) -{ - jmp_buf tmp_jmp; /* to save current jump buffer */ - - png_debug(1, "in png_write_init\n"); - /* save jump buffer and error functions */ - png_memcpy(tmp_jmp, png_ptr->jmpbuf, sizeof (jmp_buf)); - - /* reset all variables to 0 */ - png_memset(png_ptr, 0, sizeof (png_struct)); - - /* restore jump buffer */ - png_memcpy(png_ptr->jmpbuf, tmp_jmp, sizeof (jmp_buf)); - - /* initialize zbuf - compression buffer */ - png_ptr->zbuf_size = PNG_ZBUF_SIZE; - png_ptr->zbuf = (png_bytep)png_malloc(png_ptr, - (png_uint_32)png_ptr->zbuf_size); - png_set_write_fn(png_ptr, NULL, NULL, NULL); - -#if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED) - png_set_filter_heuristics(png_ptr, PNG_FILTER_HEURISTIC_DEFAULT, - 1, NULL, NULL); -#endif -} - -/* Write a few rows of image data. If the image is interlaced, - * either you will have to write the 7 sub images, or, if you - * have called png_set_interlace_handling(), you will have to - * "write" the image seven times. - */ -void -png_write_rows(png_structp png_ptr, png_bytepp row, - png_uint_32 num_rows) -{ - png_uint_32 i; /* row counter */ - png_bytepp rp; /* row pointer */ - - png_debug(1, "in png_write_rows\n"); - /* loop through the rows */ - for (i = 0, rp = row; i < num_rows; i++, rp++) - { - png_write_row(png_ptr, *rp); - } -} - -/* Write the image. You only need to call this function once, even - * if you are writing an interlaced image. - */ -void -png_write_image(png_structp png_ptr, png_bytepp image) -{ - png_uint_32 i; /* row index */ - int pass, num_pass; /* pass variables */ - png_bytepp rp; /* points to current row */ - - png_debug(1, "in png_write_image\n"); -#if defined(PNG_WRITE_INTERLACING_SUPPORTED) - /* intialize interlace handling. If image is not interlaced, - this will set pass to 1 */ - num_pass = png_set_interlace_handling(png_ptr); -#else - num_pass = 1; -#endif - /* loop through passes */ - for (pass = 0; pass < num_pass; pass++) - { - /* loop through image */ - for (i = 0, rp = image; i < png_ptr->height; i++, rp++) - { - png_write_row(png_ptr, *rp); - } - } -} - -/* called by user to write a row of image data */ -void -png_write_row(png_structp png_ptr, png_bytep row) -{ - png_debug2(1, "in png_write_row (row %ld, pass %d)\n", - png_ptr->row_number, png_ptr->pass); - /* initialize transformations and other stuff if first time */ - if (png_ptr->row_number == 0 && png_ptr->pass == 0) - { - png_write_start_row(png_ptr); - } - -#if defined(PNG_WRITE_INTERLACING_SUPPORTED) - /* if interlaced and not interested in row, return */ - if (png_ptr->interlaced && (png_ptr->transformations & PNG_INTERLACE)) - { - switch (png_ptr->pass) - { - case 0: - if (png_ptr->row_number & 7) - { - png_write_finish_row(png_ptr); - return; - } - break; - case 1: - if ((png_ptr->row_number & 7) || png_ptr->width < 5) - { - png_write_finish_row(png_ptr); - return; - } - break; - case 2: - if ((png_ptr->row_number & 7) != 4) - { - png_write_finish_row(png_ptr); - return; - } - break; - case 3: - if ((png_ptr->row_number & 3) || png_ptr->width < 3) - { - png_write_finish_row(png_ptr); - return; - } - break; - case 4: - if ((png_ptr->row_number & 3) != 2) - { - png_write_finish_row(png_ptr); - return; - } - break; - case 5: - if ((png_ptr->row_number & 1) || png_ptr->width < 2) - { - png_write_finish_row(png_ptr); - return; - } - break; - case 6: - if (!(png_ptr->row_number & 1)) - { - png_write_finish_row(png_ptr); - return; - } - break; - } - } -#endif - - /* set up row info for transformations */ - png_ptr->row_info.color_type = png_ptr->color_type; - png_ptr->row_info.width = png_ptr->usr_width; - png_ptr->row_info.channels = png_ptr->usr_channels; - png_ptr->row_info.bit_depth = png_ptr->usr_bit_depth; - png_ptr->row_info.pixel_depth = (png_byte)(png_ptr->row_info.bit_depth * - png_ptr->row_info.channels); - - png_ptr->row_info.rowbytes = ((png_ptr->row_info.width * - (png_uint_32)png_ptr->row_info.pixel_depth + 7) >> 3); - - png_debug1(3, "row_info->color_type = %d\n", png_ptr->row_info.color_type); - png_debug1(3, "row_info->width = %d\n", png_ptr->row_info.width); - png_debug1(3, "row_info->channels = %d\n", png_ptr->row_info.channels); - png_debug1(3, "row_info->bit_depth = %d\n", png_ptr->row_info.bit_depth); - png_debug1(3, "row_info->pixel_depth = %d\n", png_ptr->row_info.pixel_depth); - png_debug1(3, "row_info->rowbytes = %d\n", png_ptr->row_info.rowbytes); - - /* Copy user's row into buffer, leaving room for filter byte. */ - png_memcpy_check(png_ptr, png_ptr->row_buf + 1, row, - png_ptr->row_info.rowbytes); - -#if defined(PNG_WRITE_INTERLACING_SUPPORTED) - /* handle interlacing */ - if (png_ptr->interlaced && png_ptr->pass < 6 && - (png_ptr->transformations & PNG_INTERLACE)) - { - png_do_write_interlace(&(png_ptr->row_info), - png_ptr->row_buf + 1, png_ptr->pass); - /* this should always get caught above, but still ... */ - if (!(png_ptr->row_info.width)) - { - png_write_finish_row(png_ptr); - return; - } - } -#endif - - /* handle other transformations */ - if (png_ptr->transformations) - png_do_write_transformations(png_ptr); - - /* Find a filter if necessary, filter the row and write it out. */ - png_write_find_filter(png_ptr, &(png_ptr->row_info)); - - if (png_ptr->write_row_fn != NULL) - (*(png_ptr->write_row_fn))(png_ptr, png_ptr->row_number, png_ptr->pass); -} - -#if defined(PNG_WRITE_FLUSH_SUPPORTED) -/* Set the automatic flush interval or 0 to turn flushing off */ -void -png_set_flush(png_structp png_ptr, int nrows) -{ - png_debug(1, "in png_set_flush\n"); - png_ptr->flush_dist = (nrows < 0 ? 0 : nrows); -} - -/* flush the current output buffers now */ -void -png_write_flush(png_structp png_ptr) -{ - int wrote_IDAT; - - png_debug(1, "in png_write_flush\n"); - /* We have already written out all of the data */ - if (png_ptr->row_number >= png_ptr->num_rows) - return; - - do - { - int ret; - - /* compress the data */ - ret = deflate(&png_ptr->zstream, Z_SYNC_FLUSH); - wrote_IDAT = 0; - - /* check for compression errors */ - if (ret != Z_OK) - { - if (png_ptr->zstream.msg != NULL) - png_error(png_ptr, png_ptr->zstream.msg); - else - png_error(png_ptr, "zlib error"); - } - - if (!(png_ptr->zstream.avail_out)) - { - /* write the IDAT and reset the zlib output buffer */ - png_write_IDAT(png_ptr, png_ptr->zbuf, - png_ptr->zbuf_size); - png_ptr->zstream.next_out = png_ptr->zbuf; - png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size; - wrote_IDAT = 1; - } - } while(wrote_IDAT == 1); - - /* If there is any data left to be output, write it into a new IDAT */ - if (png_ptr->zbuf_size != png_ptr->zstream.avail_out) - { - /* write the IDAT and reset the zlib output buffer */ - png_write_IDAT(png_ptr, png_ptr->zbuf, - png_ptr->zbuf_size - png_ptr->zstream.avail_out); - png_ptr->zstream.next_out = png_ptr->zbuf; - png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size; - } - png_ptr->flush_rows = 0; - png_flush(png_ptr); -} -#endif /* PNG_WRITE_FLUSH_SUPPORTED */ - -/* free all memory used by the write */ -void -png_destroy_write_struct(png_structpp png_ptr_ptr, png_infopp info_ptr_ptr) -{ - png_structp png_ptr = NULL; - png_infop info_ptr = NULL; - - png_debug(1, "in png_destroy_write_struct\n"); - if (png_ptr_ptr != NULL) - png_ptr = *png_ptr_ptr; - - if (info_ptr_ptr != NULL) - info_ptr = *info_ptr_ptr; - - if (info_ptr != NULL) - { -#ifdef PNG_WRITE_tEXt_SUPPORTED - png_free(png_ptr, info_ptr->text); -#endif -#if defined(PNG_READ_pCAL_SUPPORTED) - png_free(png_ptr, info_ptr->pcal_purpose); - png_free(png_ptr, info_ptr->pcal_units); - if (info_ptr->pcal_params != NULL) - { - int i; - for (i = 0; i < (int)info_ptr->pcal_nparams; i++) - { - png_free(png_ptr, info_ptr->pcal_params[i]); - } - png_free(png_ptr, info_ptr->pcal_params); - } -#endif - png_destroy_struct((png_voidp)info_ptr); - *info_ptr_ptr = (png_infop)NULL; - } - - if (png_ptr != NULL) - { - png_write_destroy(png_ptr); - png_destroy_struct((png_voidp)png_ptr); - *png_ptr_ptr = (png_structp)NULL; - } -} - - -/* Free any memory used in png_ptr struct (old method) */ -void -png_write_destroy(png_structp png_ptr) -{ - jmp_buf tmp_jmp; /* save jump buffer */ - png_error_ptr error_fn; - png_error_ptr warning_fn; - png_voidp error_ptr; - - png_debug(1, "in png_write_destroy\n"); - /* free any memory zlib uses */ - deflateEnd(&png_ptr->zstream); - - /* free our memory. png_free checks NULL for us. */ - png_free(png_ptr, png_ptr->zbuf); - png_free(png_ptr, png_ptr->row_buf); - png_free(png_ptr, png_ptr->prev_row); - png_free(png_ptr, png_ptr->sub_row); - png_free(png_ptr, png_ptr->up_row); - png_free(png_ptr, png_ptr->avg_row); - png_free(png_ptr, png_ptr->paeth_row); -#if defined(PNG_TIME_RFC1123_SUPPORTED) - png_free(png_ptr, png_ptr->time_buffer); -#endif /* PNG_TIME_RFC1123_SUPPORTED */ -#if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED) - png_free(png_ptr, png_ptr->prev_filters); - png_free(png_ptr, png_ptr->filter_weights); - png_free(png_ptr, png_ptr->inv_filter_weights); - png_free(png_ptr, png_ptr->filter_costs); - png_free(png_ptr, png_ptr->inv_filter_costs); -#endif /* PNG_WRITE_WEIGHTED_FILTER_SUPPORTED */ - - /* reset structure */ - png_memcpy(tmp_jmp, png_ptr->jmpbuf, sizeof (jmp_buf)); - - error_fn = png_ptr->error_fn; - warning_fn = png_ptr->warning_fn; - error_ptr = png_ptr->error_ptr; - - png_memset(png_ptr, 0, sizeof (png_struct)); - - png_ptr->error_fn = error_fn; - png_ptr->warning_fn = warning_fn; - png_ptr->error_ptr = error_ptr; - - png_memcpy(png_ptr->jmpbuf, tmp_jmp, sizeof (jmp_buf)); -} - -/* Allow the application to select one or more row filters to use. */ -void -png_set_filter(png_structp png_ptr, int method, int filters) -{ - png_debug(1, "in png_set_filter\n"); - /* We allow 'method' only for future expansion of the base filter method. */ - if (method == PNG_FILTER_TYPE_BASE) - { - switch (filters & (PNG_ALL_FILTERS | 0x07)) - { - case 5: - case 6: - case 7: png_warning(png_ptr, "Unknown row filter for method 0"); - case PNG_FILTER_VALUE_NONE: png_ptr->do_filter=PNG_FILTER_NONE; break; - case PNG_FILTER_VALUE_SUB: png_ptr->do_filter=PNG_FILTER_SUB; break; - case PNG_FILTER_VALUE_UP: png_ptr->do_filter=PNG_FILTER_UP; break; - case PNG_FILTER_VALUE_AVG: png_ptr->do_filter=PNG_FILTER_AVG; break; - case PNG_FILTER_VALUE_PAETH: png_ptr->do_filter=PNG_FILTER_PAETH;break; - default: png_ptr->do_filter = (png_byte)filters; break; - } - - /* If we have allocated the row_buf, this means we have already started - * with the image and we should have allocated all of the filter buffers - * that have been selected. If prev_row isn't already allocated, then - * it is too late to start using the filters that need it, since we - * will be missing the data in the previous row. If an application - * wants to start and stop using particular filters during compression, - * it should start out with all of the filters, and then add and - * remove them after the start of compression. - */ - if (png_ptr->row_buf != NULL) - { - if (png_ptr->do_filter & PNG_FILTER_SUB && png_ptr->sub_row == NULL) - { - png_ptr->sub_row = (png_bytep)png_malloc(png_ptr, - (png_ptr->rowbytes + 1)); - png_ptr->sub_row[0] = PNG_FILTER_VALUE_SUB; - } - - if (png_ptr->do_filter & PNG_FILTER_UP && png_ptr->up_row == NULL) - { - if (png_ptr->prev_row == NULL) - { - png_warning(png_ptr, "Can't add Up filter after starting"); - png_ptr->do_filter &= ~PNG_FILTER_UP; - } - else - { - png_ptr->up_row = (png_bytep)png_malloc(png_ptr, - (png_ptr->rowbytes + 1)); - png_ptr->up_row[0] = PNG_FILTER_VALUE_UP; - } - } - - if (png_ptr->do_filter & PNG_FILTER_AVG && png_ptr->avg_row == NULL) - { - if (png_ptr->prev_row == NULL) - { - png_warning(png_ptr, "Can't add Average filter after starting"); - png_ptr->do_filter &= ~PNG_FILTER_AVG; - } - else - { - png_ptr->avg_row = (png_bytep)png_malloc(png_ptr, - (png_ptr->rowbytes + 1)); - png_ptr->avg_row[0] = PNG_FILTER_VALUE_AVG; - } - } - - if (png_ptr->do_filter & PNG_FILTER_PAETH && - png_ptr->paeth_row == NULL) - { - if (png_ptr->prev_row == NULL) - { - png_warning(png_ptr, "Can't add Paeth filter after starting"); - png_ptr->do_filter &= ~PNG_FILTER_PAETH; - } - else - { - png_ptr->paeth_row = (png_bytep)png_malloc(png_ptr, - (png_ptr->rowbytes + 1)); - png_ptr->paeth_row[0] = PNG_FILTER_VALUE_PAETH; - } - } - - if (png_ptr->do_filter == PNG_NO_FILTERS) - png_ptr->do_filter = PNG_FILTER_NONE; - } - } - else - png_error(png_ptr, "Unknown custom filter method"); -} - -/* This allows us to influence the way in which libpng chooses the "best" - * filter for the current scanline. While the "minimum-sum-of-absolute- - * differences metric is relatively fast and effective, there is some - * question as to whether it can be improved upon by trying to keep the - * filtered data going to zlib more consistent, hopefully resulting in - * better compression. - */ -#if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED) /* GRR 970116 */ -void -png_set_filter_heuristics(png_structp png_ptr, int heuristic_method, - int num_weights, png_doublep filter_weights, - png_doublep filter_costs) -{ -#if defined(PNG_WRITE_tEXt_SUPPORTED) || defined(PNG_WRITE_zTXt_SUPPORTED) - int i; -#endif - - png_debug(1, "in png_set_filter_heuristics\n"); - if (heuristic_method >= PNG_FILTER_HEURISTIC_LAST) - { - png_warning(png_ptr, "Unknown filter heuristic method"); - return; - } - - if (heuristic_method == PNG_FILTER_HEURISTIC_DEFAULT) - { - heuristic_method = PNG_FILTER_HEURISTIC_UNWEIGHTED; - } - - if (num_weights < 0 || filter_weights == NULL || - heuristic_method == PNG_FILTER_HEURISTIC_UNWEIGHTED) - { - num_weights = 0; - } - - png_ptr->num_prev_filters = num_weights; - png_ptr->heuristic_method = heuristic_method; - - if (num_weights > 0) - { - if (png_ptr->prev_filters == NULL) - { - png_ptr->prev_filters = (png_bytep)png_malloc(png_ptr, - (png_uint_32)(sizeof(png_byte) * num_weights)); - - /* To make sure that the weighting starts out fairly */ - for (i = 0; i < num_weights; i++) - { - png_ptr->prev_filters[i] = 255; - } - } - - if (png_ptr->filter_weights == NULL) - { - png_ptr->filter_weights = (png_uint_16p) png_malloc(png_ptr, - (png_uint_32)(sizeof(png_uint_16) * num_weights)); - - png_ptr->inv_filter_weights = (png_uint_16p) png_malloc(png_ptr, - (png_uint_32)(sizeof(png_uint_16) * num_weights)); - - for (i = 0; i < num_weights; i++) - { - png_ptr->inv_filter_weights[i] = - png_ptr->filter_weights[i] = PNG_WEIGHT_FACTOR; - } - } - - for (i = 0; i < num_weights; i++) - { - if (filter_weights[i] < 0.0) - { - png_ptr->inv_filter_weights[i] = - png_ptr->filter_weights[i] = PNG_WEIGHT_FACTOR; - } - else - { - png_ptr->inv_filter_weights[i] = - (png_uint_16)((double)PNG_WEIGHT_FACTOR*filter_weights[i]+0.5); - png_ptr->filter_weights[i] = - (png_uint_16)((double)PNG_WEIGHT_FACTOR/filter_weights[i]+0.5); - } - } - } - - /* If, in the future, there are other filter methods, this would - * need to be based on png_ptr->filter. - */ - if (png_ptr->filter_costs == NULL) - { - png_ptr->filter_costs = (png_uint_16p) png_malloc(png_ptr, - (png_uint_32)(sizeof(png_uint_16) * PNG_FILTER_VALUE_LAST)); - - png_ptr->inv_filter_costs = (png_uint_16p) png_malloc(png_ptr, - (png_uint_32)(sizeof(png_uint_16) * PNG_FILTER_VALUE_LAST)); - - for (i = 0; i < PNG_FILTER_VALUE_LAST; i++) - { - png_ptr->inv_filter_costs[i] = - png_ptr->filter_costs[i] = PNG_COST_FACTOR; - } - } - - /* Here is where we set the relative costs of the different filters. We - * should take the desired compression level into account when setting - * the costs, so that Paeth, for instance, has a high relative cost at low - * compression levels, while it has a lower relative cost at higher - * compression settings. The filter types are in order of increasing - * relative cost, so it would be possible to do this with an algorithm. - */ - for (i = 0; i < PNG_FILTER_VALUE_LAST; i++) - { - if (filter_costs == NULL || filter_costs[i] < 0.0) - { - png_ptr->inv_filter_costs[i] = - png_ptr->filter_costs[i] = PNG_COST_FACTOR; - } - else if (filter_costs[i] >= 1.0) - { - png_ptr->inv_filter_costs[i] = - (png_uint_16)((double)PNG_COST_FACTOR / filter_costs[i] + 0.5); - png_ptr->filter_costs[i] = - (png_uint_16)((double)PNG_COST_FACTOR * filter_costs[i] + 0.5); - } - } -} -#endif /* PNG_WRITE_WEIGHTED_FILTER_SUPPORTED */ - -void -png_set_compression_level(png_structp png_ptr, int level) -{ - png_debug(1, "in png_set_compression_level\n"); - png_ptr->flags |= PNG_FLAG_ZLIB_CUSTOM_LEVEL; - png_ptr->zlib_level = level; -} - -void -png_set_compression_mem_level(png_structp png_ptr, int mem_level) -{ - png_debug(1, "in png_set_compression_mem_level\n"); - png_ptr->flags |= PNG_FLAG_ZLIB_CUSTOM_MEM_LEVEL; - png_ptr->zlib_mem_level = mem_level; -} - -void -png_set_compression_strategy(png_structp png_ptr, int strategy) -{ - png_debug(1, "in png_set_compression_strategy\n"); - png_ptr->flags |= PNG_FLAG_ZLIB_CUSTOM_STRATEGY; - png_ptr->zlib_strategy = strategy; -} - -void -png_set_compression_window_bits(png_structp png_ptr, int window_bits) -{ - if (window_bits > 15) - png_warning(png_ptr, "Only compression windows <= 32k supported by PNG"); - png_ptr->flags |= PNG_FLAG_ZLIB_CUSTOM_WINDOW_BITS; - png_ptr->zlib_window_bits = window_bits; -} - -void -png_set_compression_method(png_structp png_ptr, int method) -{ - png_debug(1, "in png_set_compression_method\n"); - if (method != 8) - png_warning(png_ptr, "Only compression method 8 is supported by PNG"); - png_ptr->flags |= PNG_FLAG_ZLIB_CUSTOM_METHOD; - png_ptr->zlib_method = method; -} - -void -png_set_write_status_fn(png_structp png_ptr, png_write_status_ptr write_row_fn) -{ - png_ptr->write_row_fn = write_row_fn; -} - -#if defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) -void -png_set_write_user_transform_fn(png_structp png_ptr, png_user_transform_ptr - write_user_transform_fn) -{ - png_debug(1, "in png_set_write_user_transform_fn\n"); - png_ptr->transformations |= PNG_USER_TRANSFORM; - png_ptr->write_user_transform_fn = write_user_transform_fn; -} -#endif - diff --git a/src/png/pngwtran.c b/src/png/pngwtran.c deleted file mode 100644 index df224c88ee..0000000000 --- a/src/png/pngwtran.c +++ /dev/null @@ -1,495 +0,0 @@ - -/* pngwtran.c - transforms the data in a row for PNG writers - * - * libpng 1.0.1 - * For conditions of distribution and use, see copyright notice in png.h - * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc. - * Copyright (c) 1996, 1997 Andreas Dilger - * Copyright (c) 1998, Glenn Randers-Pehrson - * March 15, 1998 - */ - -#define PNG_INTERNAL -#include "../png/png.h" - -/* Transform the data according to the users wishes. The order of - * transformations is significant. - */ -void -png_do_write_transformations(png_structp png_ptr) -{ - png_debug(1, "in png_do_write_transformations\n"); - -#if defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) - if (png_ptr->transformations & PNG_USER_TRANSFORM) - if(png_ptr->write_user_transform_fn != NULL) - (*(png_ptr->write_user_transform_fn)) /* user write transform function */ - (png_ptr, /* png_ptr */ - &(png_ptr->row_info), /* row_info: */ - /* png_uint_32 width; width of row */ - /* png_uint_32 rowbytes; number of bytes in row */ - /* png_byte color_type; color type of pixels */ - /* png_byte bit_depth; bit depth of samples */ - /* png_byte channels; number of channels (1-4) */ - /* png_byte pixel_depth; bits per pixel (depth*channels) */ - png_ptr->row_buf + 1); /* start of pixel data for row */ -#endif -#if defined(PNG_WRITE_FILLER_SUPPORTED) - if (png_ptr->transformations & PNG_FILLER) - png_do_strip_filler(&(png_ptr->row_info), png_ptr->row_buf + 1, - png_ptr->flags); -#endif -#if defined(PNG_WRITE_PACKSWAP_SUPPORTED) - if (png_ptr->transformations & PNG_PACKSWAP) - png_do_packswap(&(png_ptr->row_info), png_ptr->row_buf + 1); -#endif -#if defined(PNG_WRITE_PACK_SUPPORTED) - if (png_ptr->transformations & PNG_PACK) - png_do_pack(&(png_ptr->row_info), png_ptr->row_buf + 1, - (png_uint_32)png_ptr->bit_depth); -#endif -#if defined(PNG_WRITE_SHIFT_SUPPORTED) - if (png_ptr->transformations & PNG_SHIFT) - png_do_shift(&(png_ptr->row_info), png_ptr->row_buf + 1, - &(png_ptr->shift)); -#endif -#if defined(PNG_WRITE_SWAP_SUPPORTED) - if (png_ptr->transformations & PNG_SWAP_BYTES) - png_do_swap(&(png_ptr->row_info), png_ptr->row_buf + 1); -#endif -#if defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED) - if (png_ptr->transformations & PNG_INVERT_ALPHA) - png_do_write_invert_alpha(&(png_ptr->row_info), png_ptr->row_buf + 1); -#endif -#if defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED) - if (png_ptr->transformations & PNG_SWAP_ALPHA) - png_do_write_swap_alpha(&(png_ptr->row_info), png_ptr->row_buf + 1); -#endif -#if defined(PNG_WRITE_BGR_SUPPORTED) - if (png_ptr->transformations & PNG_BGR) - png_do_bgr(&(png_ptr->row_info), png_ptr->row_buf + 1); -#endif -#if defined(PNG_WRITE_INVERT_SUPPORTED) - if (png_ptr->transformations & PNG_INVERT_MONO) - png_do_invert(&(png_ptr->row_info), png_ptr->row_buf + 1); -#endif -} - -#if defined(PNG_WRITE_PACK_SUPPORTED) -/* Pack pixels into bytes. Pass the true bit depth in bit_depth. The - * row_info bit depth should be 8 (one pixel per byte). The channels - * should be 1 (this only happens on grayscale and paletted images). - */ -void -png_do_pack(png_row_infop row_info, png_bytep row, png_uint_32 bit_depth) -{ - png_debug(1, "in png_do_pack\n"); - if (row_info->bit_depth == 8 && -#if defined(PNG_USELESS_TESTS_SUPPORTED) - row != NULL && row_info != NULL && -#endif - row_info->channels == 1) - { - switch ((int)bit_depth) - { - case 1: - { - png_bytep sp, dp; - int mask, v; - png_uint_32 i; - - sp = row; - dp = row; - mask = 0x80; - v = 0; - for (i = 0; i < row_info->width; i++) - { - if (*sp != 0) - v |= mask; - sp++; - if (mask > 1) - mask >>= 1; - else - { - mask = 0x80; - *dp = (png_byte)v; - dp++; - v = 0; - } - } - if (mask != 0x80) - *dp = (png_byte)v; - break; - } - case 2: - { - png_bytep sp, dp; - int shift, v; - png_uint_32 i; - - sp = row; - dp = row; - shift = 6; - v = 0; - for (i = 0; i < row_info->width; i++) - { - png_byte value; - - value = (png_byte)(*sp & 0x3); - v |= (value << shift); - if (shift == 0) - { - shift = 6; - *dp = (png_byte)v; - dp++; - v = 0; - } - else - shift -= 2; - sp++; - } - if (shift != 6) - *dp = (png_byte)v; - break; - } - case 4: - { - png_bytep sp, dp; - int shift, v; - png_uint_32 i; - - sp = row; - dp = row; - shift = 4; - v = 0; - for (i = 0; i < row_info->width; i++) - { - png_byte value; - - value = (png_byte)(*sp & 0xf); - v |= (value << shift); - - if (shift == 0) - { - shift = 4; - *dp = (png_byte)v; - dp++; - v = 0; - } - else - shift -= 4; - - sp++; - } - if (shift != 4) - *dp = (png_byte)v; - break; - } - } - row_info->bit_depth = (png_byte)bit_depth; - row_info->pixel_depth = (png_byte)(bit_depth * row_info->channels); - row_info->rowbytes = - ((row_info->width * row_info->pixel_depth + 7) >> 3); - } -} -#endif - -#if defined(PNG_WRITE_SHIFT_SUPPORTED) -/* Shift pixel values to take advantage of whole range. Pass the - * true number of bits in bit_depth. The row should be packed - * according to row_info->bit_depth. Thus, if you had a row of - * bit depth 4, but the pixels only had values from 0 to 7, you - * would pass 3 as bit_depth, and this routine would translate the - * data to 0 to 15. - */ -void -png_do_shift(png_row_infop row_info, png_bytep row, png_color_8p bit_depth) -{ - png_debug(1, "in png_do_shift\n"); -#if defined(PNG_USELESS_TESTS_SUPPORTED) - if (row != NULL && row_info != NULL && -#else - if ( -#endif - row_info->color_type != PNG_COLOR_TYPE_PALETTE) - { - int shift_start[4], shift_dec[4]; - png_uint_32 channels; - - channels = 0; - if (row_info->color_type & PNG_COLOR_MASK_COLOR) - { - shift_start[channels] = row_info->bit_depth - bit_depth->red; - shift_dec[channels] = bit_depth->red; - channels++; - shift_start[channels] = row_info->bit_depth - bit_depth->green; - shift_dec[channels] = bit_depth->green; - channels++; - shift_start[channels] = row_info->bit_depth - bit_depth->blue; - shift_dec[channels] = bit_depth->blue; - channels++; - } - else - { - shift_start[channels] = row_info->bit_depth - bit_depth->gray; - shift_dec[channels] = bit_depth->gray; - channels++; - } - if (row_info->color_type & PNG_COLOR_MASK_ALPHA) - { - shift_start[channels] = row_info->bit_depth - bit_depth->alpha; - shift_dec[channels] = bit_depth->alpha; - channels++; - } - - /* with low row depths, could only be grayscale, so one channel */ - if (row_info->bit_depth < 8) - { - png_bytep bp; - png_uint_32 i; - png_byte mask; - - if (bit_depth->gray == 1 && row_info->bit_depth == 2) - mask = 0x55; - else if (row_info->bit_depth == 4 && bit_depth->gray == 3) - mask = 0x11; - else - mask = 0xff; - - for (bp = row, i = 0; i < row_info->rowbytes; i++, bp++) - { - png_uint_16 v; - int j; - - v = *bp; - *bp = 0; - for (j = shift_start[0]; j > -shift_dec[0]; j -= shift_dec[0]) - { - if (j > 0) - *bp |= (png_byte)((v << j) & 0xff); - else - *bp |= (png_byte)((v >> (-j)) & mask); - } - } - } - else if (row_info->bit_depth == 8) - { - png_bytep bp; - png_uint_32 i; - - for (bp = row, i = 0; i < row_info->width; i++) - { - png_uint_32 c; - - for (c = 0; c < channels; c++, bp++) - { - png_uint_16 v; - int j; - - v = *bp; - *bp = 0; - for (j = shift_start[c]; j > -shift_dec[c]; j -= shift_dec[c]) - { - if (j > 0) - *bp |= (png_byte)((v << j) & 0xff); - else - *bp |= (png_byte)((v >> (-j)) & 0xff); - } - } - } - } - else - { - png_bytep bp; - png_uint_32 i; - - for (bp = row, i = 0; i < row_info->width * row_info->channels; i++) - { - png_uint_32 c; - - for (c = 0; c < channels; c++, bp += 2) - { - png_uint_16 value, v; - int j; - - v = ((png_uint_16)(*bp) << 8) + *(bp + 1); - value = 0; - for (j = shift_start[c]; j > -shift_dec[c]; j -= shift_dec[c]) - { - if (j > 0) - value |= (png_uint_16)((v << j) & (png_uint_16)0xffff); - else - value |= (png_uint_16)((v >> (-j)) & (png_uint_16)0xffff); - } - *bp = (png_byte)(value >> 8); - *(bp + 1) = (png_byte)(value & 0xff); - } - } - } - } -} -#endif - -#if defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED) -void -png_do_write_swap_alpha(png_row_infop row_info, png_bytep row) -{ - png_debug(1, "in png_do_write_swap_alpha\n"); -#if defined(PNG_USELESS_TESTS_SUPPORTED) - if (row != NULL && row_info != NULL) -#endif - { - if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA) - { - /* This converts from ARGB to RGBA */ - if (row_info->bit_depth == 8) - { - png_bytep sp, dp; - png_byte save; - png_uint_32 i; - - for (i = 0, sp = dp = row; i < row_info->width; i++) - { - save = *(sp++); - *(dp++) = *(sp++); - *(dp++) = *(sp++); - *(dp++) = *(sp++); - *(dp++) = save; - } - } - /* This converts from AARRGGBB to RRGGBBAA */ - else - { - png_bytep sp, dp; - png_byte save[2]; - png_uint_32 i; - - for (i = 0, sp = dp = row; i < row_info->width; i++) - { - save[0] = *(sp++); - save[1] = *(sp++); - *(dp++) = *(sp++); - *(dp++) = *(sp++); - *(dp++) = *(sp++); - *(dp++) = *(sp++); - *(dp++) = *(sp++); - *(dp++) = *(sp++); - *(dp++) = save[0]; - *(dp++) = save[1]; - } - } - } - else if (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) - { - /* This converts from AG to GA */ - if (row_info->bit_depth == 8) - { - png_bytep sp, dp; - png_byte save; - png_uint_32 i; - - for (i = 0, sp = dp = row; i < row_info->width; i++) - { - save = *(sp++); - *(dp++) = *(sp++); - *(dp++) = save; - } - } - /* This converts from AAGG to GGAA */ - else - { - png_bytep sp, dp; - png_byte save[2]; - png_uint_32 i; - - for (i = 0, sp = dp = row; i < row_info->width; i++) - { - save[0] = *(sp++); - save[1] = *(sp++); - *(dp++) = *(sp++); - *(dp++) = *(sp++); - *(dp++) = save[0]; - *(dp++) = save[1]; - } - } - } - } -} -#endif - -#if defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED) -void -png_do_write_invert_alpha(png_row_infop row_info, png_bytep row) -{ - png_debug(1, "in png_do_write_invert_alpha\n"); -#if defined(PNG_USELESS_TESTS_SUPPORTED) - if (row != NULL && row_info != NULL) -#endif - { - if (row_info->color_type == PNG_COLOR_TYPE_RGB_ALPHA) - { - /* This inverts the alpha channel in RGBA */ - if (row_info->bit_depth == 8) - { - png_bytep sp, dp; - png_uint_32 i; - - for (i = 0, sp = dp = row; i < row_info->width; i++) - { - *(dp++) = *(sp++); - *(dp++) = *(sp++); - *(dp++) = *(sp++); - *(dp++) = 255 - *(sp++); - } - } - /* This inverts the alpha channel in RRGGBBAA */ - else - { - png_bytep sp, dp; - png_uint_32 i; - - for (i = 0, sp = dp = row; i < row_info->width; i++) - { - *(dp++) = *(sp++); - *(dp++) = *(sp++); - *(dp++) = *(sp++); - *(dp++) = *(sp++); - *(dp++) = *(sp++); - *(dp++) = *(sp++); - *(dp++) = 255 - *(sp++); - *(dp++) = 255 - *(sp++); - } - } - } - else if (row_info->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) - { - /* This inverts the alpha channel in GA */ - if (row_info->bit_depth == 8) - { - png_bytep sp, dp; - png_uint_32 i; - - for (i = 0, sp = dp = row; i < row_info->width; i++) - { - *(dp++) = *(sp++); - *(dp++) = 255 - *(sp++); - } - } - /* This inverts the alpha channel in GGAA */ - else - { - png_bytep sp, dp; - png_uint_32 i; - - for (i = 0, sp = dp = row; i < row_info->width; i++) - { - *(dp++) = *(sp++); - *(dp++) = *(sp++); - *(dp++) = 255 - *(sp++); - *(dp++) = 255 - *(sp++); - } - } - } - } -} -#endif diff --git a/src/png/pngwutil.c b/src/png/pngwutil.c deleted file mode 100644 index c6ae1a677e..0000000000 --- a/src/png/pngwutil.c +++ /dev/null @@ -1,1934 +0,0 @@ - -/* pngwutil.c - utilities to write a PNG file - * - * libpng 1.0.1 - * For conditions of distribution and use, see copyright notice in png.h - * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc. - * Copyright (c) 1996, 1997 Andreas Dilger - * Copyright (c) 1998, Glenn Randers-Pehrson - * March 15, 1998 - */ - -#define PNG_INTERNAL -#include "../png/png.h" - -/* Place a 32-bit number into a buffer in PNG byte order. We work - * with unsigned numbers for convenience, although one supported - * ancillary chunk uses signed (two's complement) numbers. - */ -void -png_save_uint_32(png_bytep buf, png_uint_32 i) -{ - buf[0] = (png_byte)((i >> 24) & 0xff); - buf[1] = (png_byte)((i >> 16) & 0xff); - buf[2] = (png_byte)((i >> 8) & 0xff); - buf[3] = (png_byte)(i & 0xff); -} - -#if defined(PNG_WRITE_pCAL_SUPPORTED) -/* The png_save_int_32 function assumes integers are stored in two's - * complement format. If this isn't the case, then this routine needs to - * be modified to write data in two's complement format. - */ -void -png_save_int_32(png_bytep buf, png_int_32 i) -{ - buf[0] = (png_byte)((i >> 24) & 0xff); - buf[1] = (png_byte)((i >> 16) & 0xff); - buf[2] = (png_byte)((i >> 8) & 0xff); - buf[3] = (png_byte)(i & 0xff); -} -#endif - -/* Place a 16-bit number into a buffer in PNG byte order. - * The parameter is declared unsigned int, not png_uint_16, - * just to avoid potential problems on pre-ANSI C compilers. - */ -void -png_save_uint_16(png_bytep buf, unsigned int i) -{ - buf[0] = (png_byte)((i >> 8) & 0xff); - buf[1] = (png_byte)(i & 0xff); -} - -/* Write a PNG chunk all at once. The type is an array of ASCII characters - * representing the chunk name. The array must be at least 4 bytes in - * length, and does not need to be null terminated. To be safe, pass the - * pre-defined chunk names here, and if you need a new one, define it - * where the others are defined. The length is the length of the data. - * All the data must be present. If that is not possible, use the - * png_write_chunk_start(), png_write_chunk_data(), and png_write_chunk_end() - * functions instead. - */ -void -png_write_chunk(png_structp png_ptr, png_bytep chunk_name, - png_bytep data, png_size_t length) -{ - png_write_chunk_start(png_ptr, chunk_name, (png_uint_32)length); - png_write_chunk_data(png_ptr, data, length); - png_write_chunk_end(png_ptr); -} - -/* Write the start of a PNG chunk. The type is the chunk type. - * The total_length is the sum of the lengths of all the data you will be - * passing in png_write_chunk_data(). - */ -void -png_write_chunk_start(png_structp png_ptr, png_bytep chunk_name, - png_uint_32 length) -{ - png_byte buf[4]; - png_debug2(0, "Writing %s chunk (%d bytes)\n", chunk_name, length); - - /* write the length */ - png_save_uint_32(buf, length); - png_write_data(png_ptr, buf, (png_size_t)4); - - /* write the chunk name */ - png_write_data(png_ptr, chunk_name, (png_size_t)4); - /* reset the crc and run it over the chunk name */ - png_reset_crc(png_ptr); - png_calculate_crc(png_ptr, chunk_name, (png_size_t)4); -} - -/* Write the data of a PNG chunk started with png_write_chunk_start(). - * Note that multiple calls to this function are allowed, and that the - * sum of the lengths from these calls *must* add up to the total_length - * given to png_write_chunk_start(). - */ -void -png_write_chunk_data(png_structp png_ptr, png_bytep data, png_size_t length) -{ - /* write the data, and run the CRC over it */ - if (data != NULL && length > 0) - { - png_calculate_crc(png_ptr, data, length); - png_write_data(png_ptr, data, length); - } -} - -/* Finish a chunk started with png_write_chunk_start(). */ -void -png_write_chunk_end(png_structp png_ptr) -{ - png_byte buf[4]; - - /* write the crc */ - png_save_uint_32(buf, png_ptr->crc); - - png_write_data(png_ptr, buf, (png_size_t)4); -} - -/* Simple function to write the signature. If we have already written - * the magic bytes of the signature, or more likely, the PNG stream is - * being embedded into another stream and doesn't need its own signature, - * we should call png_set_sig_bytes() to tell libpng how many of the - * bytes have already been written. - */ -void -png_write_sig(png_structp png_ptr) -{ - /* write the rest of the 8 byte signature */ - png_write_data(png_ptr, &png_sig[png_ptr->sig_bytes], - (png_size_t)8 - png_ptr->sig_bytes); -} - -/* Write the IHDR chunk, and update the png_struct with the necessary - * information. Note that the rest of this code depends upon this - * information being correct. - */ -void -png_write_IHDR(png_structp png_ptr, png_uint_32 width, png_uint_32 height, - int bit_depth, int color_type, int compression_type, int filter_type, - int interlace_type) -{ - png_byte buf[13]; /* buffer to store the IHDR info */ - - png_debug(1, "in png_write_IHDR\n"); - /* Check that we have valid input data from the application info */ - switch (color_type) - { - case PNG_COLOR_TYPE_GRAY: - switch (bit_depth) - { - case 1: - case 2: - case 4: - case 8: - case 16: png_ptr->channels = 1; break; - default: png_error(png_ptr,"Invalid bit depth for grayscale image"); - } - break; - case PNG_COLOR_TYPE_RGB: - if (bit_depth != 8 && bit_depth != 16) - png_error(png_ptr, "Invalid bit depth for RGB image"); - png_ptr->channels = 3; - break; - case PNG_COLOR_TYPE_PALETTE: - switch (bit_depth) - { - case 1: - case 2: - case 4: - case 8: png_ptr->channels = 1; break; - default: png_error(png_ptr, "Invalid bit depth for paletted image"); - } - break; - case PNG_COLOR_TYPE_GRAY_ALPHA: - if (bit_depth != 8 && bit_depth != 16) - png_error(png_ptr, "Invalid bit depth for grayscale+alpha image"); - png_ptr->channels = 2; - break; - case PNG_COLOR_TYPE_RGB_ALPHA: - if (bit_depth != 8 && bit_depth != 16) - png_error(png_ptr, "Invalid bit depth for RGBA image"); - png_ptr->channels = 4; - break; - default: - png_error(png_ptr, "Invalid image color type specified"); - } - - if (compression_type != PNG_COMPRESSION_TYPE_BASE) - { - png_warning(png_ptr, "Invalid compression type specified"); - compression_type = PNG_COMPRESSION_TYPE_BASE; - } - - if (filter_type != PNG_FILTER_TYPE_BASE) - { - png_warning(png_ptr, "Invalid filter type specified"); - filter_type = PNG_FILTER_TYPE_BASE; - } - -#ifdef PNG_WRITE_INTERLACING_SUPPORTED - if (interlace_type != PNG_INTERLACE_NONE && - interlace_type != PNG_INTERLACE_ADAM7) - { - png_warning(png_ptr, "Invalid interlace type specified"); - interlace_type = PNG_INTERLACE_ADAM7; - } -#else - interlace_type=PNG_INTERLACE_NONE; -#endif - - /* save off the relevent information */ - png_ptr->bit_depth = (png_byte)bit_depth; - png_ptr->color_type = (png_byte)color_type; - png_ptr->interlaced = (png_byte)interlace_type; - png_ptr->width = width; - png_ptr->height = height; - - png_ptr->pixel_depth = (png_byte)(bit_depth * png_ptr->channels); - png_ptr->rowbytes = ((width * (png_size_t)png_ptr->pixel_depth + 7) >> 3); - /* set the usr info, so any transformations can modify it */ - png_ptr->usr_width = png_ptr->width; - png_ptr->usr_bit_depth = png_ptr->bit_depth; - png_ptr->usr_channels = png_ptr->channels; - - /* pack the header information into the buffer */ - png_save_uint_32(buf, width); - png_save_uint_32(buf + 4, height); - buf[8] = (png_byte)bit_depth; - buf[9] = (png_byte)color_type; - buf[10] = (png_byte)compression_type; - buf[11] = (png_byte)filter_type; - buf[12] = (png_byte)interlace_type; - - /* write the chunk */ - png_write_chunk(png_ptr, png_IHDR, buf, (png_size_t)13); - - /* initialize zlib with PNG info */ - png_ptr->zstream.zalloc = png_zalloc; - png_ptr->zstream.zfree = png_zfree; - png_ptr->zstream.opaque = (voidpf)png_ptr; - if (!(png_ptr->do_filter)) - { - if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE || - png_ptr->bit_depth < 8) - png_ptr->do_filter = PNG_FILTER_NONE; - else - png_ptr->do_filter = PNG_ALL_FILTERS; - } - if (!(png_ptr->flags & PNG_FLAG_ZLIB_CUSTOM_STRATEGY)) - { - if (png_ptr->do_filter != PNG_FILTER_NONE) - png_ptr->zlib_strategy = Z_FILTERED; - else - png_ptr->zlib_strategy = Z_DEFAULT_STRATEGY; - } - if (!(png_ptr->flags & PNG_FLAG_ZLIB_CUSTOM_LEVEL)) - png_ptr->zlib_level = Z_DEFAULT_COMPRESSION; - if (!(png_ptr->flags & PNG_FLAG_ZLIB_CUSTOM_MEM_LEVEL)) - png_ptr->zlib_mem_level = 8; - if (!(png_ptr->flags & PNG_FLAG_ZLIB_CUSTOM_WINDOW_BITS)) - png_ptr->zlib_window_bits = 15; - if (!(png_ptr->flags & PNG_FLAG_ZLIB_CUSTOM_METHOD)) - png_ptr->zlib_method = 8; - deflateInit2(&png_ptr->zstream, png_ptr->zlib_level, - png_ptr->zlib_method, png_ptr->zlib_window_bits, - png_ptr->zlib_mem_level, png_ptr->zlib_strategy); - png_ptr->zstream.next_out = png_ptr->zbuf; - png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size; - - png_ptr->mode = PNG_HAVE_IHDR; -} - -/* write the palette. We are careful not to trust png_color to be in the - * correct order for PNG, so people can redefine it to any convient - * structure. - */ -void -png_write_PLTE(png_structp png_ptr, png_colorp palette, png_uint_32 num_pal) -{ - png_uint_32 i; - png_colorp pal_ptr; - png_byte buf[3]; - - png_debug(1, "in png_write_PLTE\n"); - if (num_pal == 0 || num_pal > 256) - { - if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) - { - png_error(png_ptr, "Invalid number of colors in palette"); - } - else - { - png_warning(png_ptr, "Invalid number of colors in palette"); - return; - } - } - - png_ptr->num_palette = (png_uint_16)num_pal; - png_debug1(3, "num_palette = %d\n", png_ptr->num_palette); - - png_write_chunk_start(png_ptr, png_PLTE, num_pal * 3); - for (i = 0, pal_ptr = palette; i < num_pal; i++, pal_ptr++) - { - buf[0] = pal_ptr->red; - buf[1] = pal_ptr->green; - buf[2] = pal_ptr->blue; - png_write_chunk_data(png_ptr, buf, (png_size_t)3); - } - png_write_chunk_end(png_ptr); - png_ptr->mode |= PNG_HAVE_PLTE; -} - -/* write an IDAT chunk */ -void -png_write_IDAT(png_structp png_ptr, png_bytep data, png_size_t length) -{ - png_debug(1, "in png_write_IDAT\n"); - png_write_chunk(png_ptr, png_IDAT, data, length); - png_ptr->mode |= PNG_HAVE_IDAT; -} - -/* write an IEND chunk */ -void -png_write_IEND(png_structp png_ptr) -{ - png_debug(1, "in png_write_IEND\n"); - png_write_chunk(png_ptr, png_IEND, NULL, (png_size_t)0); - png_ptr->mode |= PNG_HAVE_IEND; -} - -#if defined(PNG_WRITE_gAMA_SUPPORTED) -/* write a gAMA chunk */ -void -png_write_gAMA(png_structp png_ptr, double file_gamma) -{ - png_uint_32 igamma; - png_byte buf[4]; - - png_debug(1, "in png_write_gAMA\n"); - /* file_gamma is saved in 1/1000000ths */ - igamma = (png_uint_32)(file_gamma * 100000.0 + 0.5); - png_save_uint_32(buf, igamma); - png_write_chunk(png_ptr, png_gAMA, buf, (png_size_t)4); -} -#endif - -#if defined(PNG_WRITE_sRGB_SUPPORTED) -/* write a sRGB chunk */ -void -png_write_sRGB(png_structp png_ptr, int srgb_intent) -{ - png_byte buf[1]; - - png_debug(1, "in png_write_sRGB\n"); - if(srgb_intent >= PNG_sRGB_INTENT_LAST) - png_warning(png_ptr, - "Invalid sRGB rendering intent specified"); - buf[0]=(png_byte)srgb_intent; - png_write_chunk(png_ptr, png_sRGB, buf, (png_size_t)1); -} -#endif - -#if defined(PNG_WRITE_sBIT_SUPPORTED) -/* write the sBIT chunk */ -void -png_write_sBIT(png_structp png_ptr, png_color_8p sbit, int color_type) -{ - png_byte buf[4]; - png_size_t size; - - png_debug(1, "in png_write_sBIT\n"); - /* make sure we don't depend upon the order of PNG_COLOR_8 */ - if (color_type & PNG_COLOR_MASK_COLOR) - { - png_byte maxbits; - - maxbits = color_type==PNG_COLOR_TYPE_PALETTE ? 8:png_ptr->usr_bit_depth; - if (sbit->red == 0 || sbit->red > maxbits || - sbit->green == 0 || sbit->green > maxbits || - sbit->blue == 0 || sbit->blue > maxbits) - { - png_warning(png_ptr, "Invalid sBIT depth specified"); - return; - } - buf[0] = sbit->red; - buf[1] = sbit->green; - buf[2] = sbit->blue; - size = 3; - } - else - { - if (sbit->gray == 0 || sbit->gray > png_ptr->usr_bit_depth) - { - png_warning(png_ptr, "Invalid sBIT depth specified"); - return; - } - buf[0] = sbit->gray; - size = 1; - } - - if (color_type & PNG_COLOR_MASK_ALPHA) - { - if (sbit->alpha == 0 || sbit->alpha > png_ptr->usr_bit_depth) - { - png_warning(png_ptr, "Invalid sBIT depth specified"); - return; - } - buf[size++] = sbit->alpha; - } - - png_write_chunk(png_ptr, png_sBIT, buf, size); -} -#endif - -#if defined(PNG_WRITE_cHRM_SUPPORTED) -/* write the cHRM chunk */ -void -png_write_cHRM(png_structp png_ptr, double white_x, double white_y, - double red_x, double red_y, double green_x, double green_y, - double blue_x, double blue_y) -{ - png_uint_32 itemp; - png_byte buf[32]; - - png_debug(1, "in png_write_cHRM\n"); - /* each value is saved int 1/1000000ths */ - if (white_x < 0 || white_x > 0.8 || white_y < 0 || white_y > 0.8 || - white_x + white_y > 1.0) - { - png_warning(png_ptr, "Invalid cHRM white point specified"); - return; - } - itemp = (png_uint_32)(white_x * 100000.0 + 0.5); - png_save_uint_32(buf, itemp); - itemp = (png_uint_32)(white_y * 100000.0 + 0.5); - png_save_uint_32(buf + 4, itemp); - - if (red_x < 0 || red_x > 0.8 || red_y < 0 || red_y > 0.8 || - red_x + red_y > 1.0) - { - png_warning(png_ptr, "Invalid cHRM red point specified"); - return; - } - itemp = (png_uint_32)(red_x * 100000.0 + 0.5); - png_save_uint_32(buf + 8, itemp); - itemp = (png_uint_32)(red_y * 100000.0 + 0.5); - png_save_uint_32(buf + 12, itemp); - - if (green_x < 0 || green_x > 0.8 || green_y < 0 || green_y > 0.8 || - green_x + green_y > 1.0) - { - png_warning(png_ptr, "Invalid cHRM green point specified"); - return; - } - itemp = (png_uint_32)(green_x * 100000.0 + 0.5); - png_save_uint_32(buf + 16, itemp); - itemp = (png_uint_32)(green_y * 100000.0 + 0.5); - png_save_uint_32(buf + 20, itemp); - - if (blue_x < 0 || blue_x > 0.8 || blue_y < 0 || blue_y > 0.8 || - blue_x + blue_y > 1.0) - { - png_warning(png_ptr, "Invalid cHRM blue point specified"); - return; - } - itemp = (png_uint_32)(blue_x * 100000.0 + 0.5); - png_save_uint_32(buf + 24, itemp); - itemp = (png_uint_32)(blue_y * 100000.0 + 0.5); - png_save_uint_32(buf + 28, itemp); - - png_write_chunk(png_ptr, png_cHRM, buf, (png_size_t)32); -} -#endif - -#if defined(PNG_WRITE_tRNS_SUPPORTED) -/* write the tRNS chunk */ -void -png_write_tRNS(png_structp png_ptr, png_bytep trans, png_color_16p tran, - int num_trans, int color_type) -{ - png_byte buf[6]; - - png_debug(1, "in png_write_tRNS\n"); - if (color_type == PNG_COLOR_TYPE_PALETTE) - { - if (num_trans <= 0 || num_trans > (int)png_ptr->num_palette) - { - png_warning(png_ptr,"Invalid number of transparent colors specified"); - return; - } - /* write the chunk out as it is */ - png_write_chunk(png_ptr, png_tRNS, trans, (png_size_t)num_trans); - } - else if (color_type == PNG_COLOR_TYPE_GRAY) - { - /* one 16 bit value */ - png_save_uint_16(buf, tran->gray); - png_write_chunk(png_ptr, png_tRNS, buf, (png_size_t)2); - } - else if (color_type == PNG_COLOR_TYPE_RGB) - { - /* three 16 bit values */ - png_save_uint_16(buf, tran->red); - png_save_uint_16(buf + 2, tran->green); - png_save_uint_16(buf + 4, tran->blue); - png_write_chunk(png_ptr, png_tRNS, buf, (png_size_t)6); - } - else - { - png_warning(png_ptr, "Can't write tRNS with an alpha channel"); - } -} -#endif - -#if defined(PNG_WRITE_bKGD_SUPPORTED) -/* write the background chunk */ -void -png_write_bKGD(png_structp png_ptr, png_color_16p back, int color_type) -{ - png_byte buf[6]; - - png_debug(1, "in png_write_bKGD\n"); - if (color_type == PNG_COLOR_TYPE_PALETTE) - { - if (back->index > png_ptr->num_palette) - { - png_warning(png_ptr, "Invalid background palette index"); - return; - } - buf[0] = back->index; - png_write_chunk(png_ptr, png_bKGD, buf, (png_size_t)1); - } - else if (color_type & PNG_COLOR_MASK_COLOR) - { - png_save_uint_16(buf, back->red); - png_save_uint_16(buf + 2, back->green); - png_save_uint_16(buf + 4, back->blue); - png_write_chunk(png_ptr, png_bKGD, buf, (png_size_t)6); - } - else - { - png_save_uint_16(buf, back->gray); - png_write_chunk(png_ptr, png_bKGD, buf, (png_size_t)2); - } -} -#endif - -#if defined(PNG_WRITE_hIST_SUPPORTED) -/* write the histogram */ -void -png_write_hIST(png_structp png_ptr, png_uint_16p hist, int num_hist) -{ - int i; - png_byte buf[3]; - - png_debug(1, "in png_write_hIST\n"); - if (num_hist > (int)png_ptr->num_palette) - { - png_debug2(3, "num_hist = %d, num_palette = %d\n", num_hist, - png_ptr->num_palette); - png_warning(png_ptr, "Invalid number of histogram entries specified"); - return; - } - - png_write_chunk_start(png_ptr, png_hIST, (png_uint_32)(num_hist * 2)); - for (i = 0; i < num_hist; i++) - { - png_save_uint_16(buf, hist[i]); - png_write_chunk_data(png_ptr, buf, (png_size_t)2); - } - png_write_chunk_end(png_ptr); -} -#endif - -#if defined(PNG_WRITE_tEXt_SUPPORTED) || defined(PNG_WRITE_zTXt_SUPPORTED) -/* Check that the tEXt or zTXt keyword is valid per PNG 1.0 specification, - * and if invalid, correct the keyword rather than discarding the entire - * chunk. The PNG 1.0 specification requires keywords 1-79 characters in - * length, forbids leading or trailing whitespace, multiple internal spaces, - * and the non-break space (0x80) from ISO 8859-1. Returns keyword length. - * - * The new_key is allocated to hold the corrected keyword and must be freed - * by the calling routine. This avoids problems with trying to write to - * static keywords without having to have duplicate copies of the strings. - */ -png_size_t -png_check_keyword(png_structp png_ptr, png_charp key, png_charpp new_key) -{ - png_size_t key_len; - png_charp kp, dp; - int kflag; - - png_debug(1, "in png_check_keyword\n"); - *new_key = NULL; - - if (key == NULL || (key_len = png_strlen(key)) == 0) - { - png_chunk_warning(png_ptr, "zero length keyword"); - return ((png_size_t)0); - } - - png_debug1(2, "Keyword to be checked is '%s'\n", key); - - *new_key = (png_charp)png_malloc(png_ptr, (png_uint_32)(key_len + 1)); - - /* Replace non-printing characters with a blank and print a warning */ - for (kp = key, dp = *new_key; *kp != '\0'; kp++, dp++) - { - if (*kp < 0x20 || (*kp > 0x7E && (png_byte)*kp < 0xA1)) - { -#if !defined(PNG_NO_STDIO) - char msg[40]; - - sprintf(msg, "invalid keyword character 0x%02X", *kp); - png_chunk_warning(png_ptr, msg); -#else - png_chunk_warning(png_ptr, "invalid character in keyword"); -#endif - *dp = ' '; - } - else - { - *dp = *kp; - } - } - *dp = '\0'; - - /* Remove any trailing white space. */ - kp = *new_key + key_len - 1; - if (*kp == ' ') - { - png_chunk_warning(png_ptr, "trailing spaces removed from keyword"); - - while (*kp == ' ') - { - *(kp--) = '\0'; - key_len--; - } - } - - /* Remove any leading white space. */ - kp = *new_key; - if (*kp == ' ') - { - png_chunk_warning(png_ptr, "leading spaces removed from keyword"); - - while (*kp == ' ') - { - kp++; - key_len--; - } - } - - png_debug1(2, "Checking for multiple internal spaces in '%s'\n", kp); - - /* Remove multiple internal spaces. */ - for (kflag = 0, dp = *new_key; *kp != '\0'; kp++) - { - if (*kp == ' ' && kflag == 0) - { - *(dp++) = *kp; - kflag = 1; - } - else if (*kp == ' ') - { - key_len--; - } - else - { - *(dp++) = *kp; - kflag = 0; - } - } - *dp = '\0'; - - if (key_len == 0) - { - png_chunk_warning(png_ptr, "zero length keyword"); - } - - if (key_len > 79) - { - png_chunk_warning(png_ptr, "keyword length must be 1 - 79 characters"); - new_key[79] = '\0'; - key_len = 79; - } - - return (key_len); -} -#endif - -#if defined(PNG_WRITE_tEXt_SUPPORTED) -/* write a tEXt chunk */ -void -png_write_tEXt(png_structp png_ptr, png_charp key, png_charp text, - png_size_t text_len) -{ - png_size_t key_len; - png_charp new_key; - - png_debug(1, "in png_write_tEXt\n"); - if (key == NULL || (key_len = png_check_keyword(png_ptr, key, &new_key))==0) - { - png_warning(png_ptr, "Empty keyword in tEXt chunk"); - return; - } - - if (text == NULL || *text == '\0') - text_len = 0; - - /* make sure we include the 0 after the key */ - png_write_chunk_start(png_ptr, png_tEXt, (png_uint_32)key_len+text_len+1); - png_write_chunk_data(png_ptr, (png_bytep)new_key, key_len + 1); - if (text_len) - png_write_chunk_data(png_ptr, (png_bytep)text, text_len); - - png_write_chunk_end(png_ptr); - png_free(png_ptr, new_key); -} -#endif - -#if defined(PNG_WRITE_zTXt_SUPPORTED) -/* write a compressed text chunk */ -void -png_write_zTXt(png_structp png_ptr, png_charp key, png_charp text, - png_size_t text_len, int compression) -{ - png_size_t key_len; - char buf[1]; - png_charp new_key; - int i, ret; - png_charpp output_ptr = NULL; /* array of pointers to output */ - int num_output_ptr = 0; /* number of output pointers used */ - int max_output_ptr = 0; /* size of output_ptr */ - - png_debug(1, "in png_write_zTXt\n"); - - if (key == NULL || (key_len = png_check_keyword(png_ptr, key, &new_key))==0) - { - png_warning(png_ptr, "Empty keyword in zTXt chunk"); - return; - } - - if (text == NULL || *text == '\0' || compression==PNG_TEXT_COMPRESSION_NONE) - { - png_write_tEXt(png_ptr, new_key, text, (png_size_t)0); - png_free(png_ptr, new_key); - return; - } - - png_free(png_ptr, new_key); - - if (compression >= PNG_TEXT_COMPRESSION_LAST) - { -#if !defined(PNG_NO_STDIO) - char msg[50]; - sprintf(msg, "Unknown zTXt compression type %d", compression); - png_warning(png_ptr, msg); -#else - png_warning(png_ptr, "Unknown zTXt compression type"); -#endif - compression = PNG_TEXT_COMPRESSION_zTXt; - } - - /* We can't write the chunk until we find out how much data we have, - * which means we need to run the compressor first, and save the - * output. This shouldn't be a problem, as the vast majority of - * comments should be reasonable, but we will set up an array of - * malloc'd pointers to be sure. - * - * If we knew the application was well behaved, we could simplify this - * greatly by assuming we can always malloc an output buffer large - * enough to hold the compressed text ((1001 * text_len / 1000) + 12) - * and malloc this directly. The only time this would be a bad idea is - * if we can't malloc more than 64K and we have 64K of random input - * data, or if the input string is incredibly large (although this - * wouldn't cause a failure, just a slowdown due to swapping). - */ - - /* set up the compression buffers */ - png_ptr->zstream.avail_in = (uInt)text_len; - png_ptr->zstream.next_in = (Bytef *)text; - png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size; - png_ptr->zstream.next_out = (Bytef *)png_ptr->zbuf; - - /* this is the same compression loop as in png_write_row() */ - do - { - /* compress the data */ - ret = deflate(&png_ptr->zstream, Z_NO_FLUSH); - if (ret != Z_OK) - { - /* error */ - if (png_ptr->zstream.msg != NULL) - png_error(png_ptr, png_ptr->zstream.msg); - else - png_error(png_ptr, "zlib error"); - } - /* check to see if we need more room */ - if (!png_ptr->zstream.avail_out && png_ptr->zstream.avail_in) - { - /* make sure the output array has room */ - if (num_output_ptr >= max_output_ptr) - { - int old_max; - - old_max = max_output_ptr; - max_output_ptr = num_output_ptr + 4; - if (output_ptr != NULL) - { - png_charpp old_ptr; - - old_ptr = output_ptr; - output_ptr = (png_charpp)png_malloc(png_ptr, - (png_uint_32)(max_output_ptr * sizeof (png_charpp))); - png_memcpy(output_ptr, old_ptr, old_max * sizeof (png_charp)); - png_free(png_ptr, old_ptr); - } - else - output_ptr = (png_charpp)png_malloc(png_ptr, - (png_uint_32)(max_output_ptr * sizeof (png_charp))); - } - - /* save the data */ - output_ptr[num_output_ptr] = (png_charp)png_malloc(png_ptr, - (png_uint_32)png_ptr->zbuf_size); - png_memcpy(output_ptr[num_output_ptr], png_ptr->zbuf, - png_ptr->zbuf_size); - num_output_ptr++; - - /* and reset the buffer */ - png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size; - png_ptr->zstream.next_out = png_ptr->zbuf; - } - /* continue until we don't have anymore to compress */ - } while (png_ptr->zstream.avail_in); - - /* finish the compression */ - do - { - /* tell zlib we are finished */ - ret = deflate(&png_ptr->zstream, Z_FINISH); - if (ret != Z_OK && ret != Z_STREAM_END) - { - /* we got an error */ - if (png_ptr->zstream.msg != NULL) - png_error(png_ptr, png_ptr->zstream.msg); - else - png_error(png_ptr, "zlib error"); - } - - /* check to see if we need more room */ - if (!(png_ptr->zstream.avail_out) && ret == Z_OK) - { - /* check to make sure our output array has room */ - if (num_output_ptr >= max_output_ptr) - { - int old_max; - - old_max = max_output_ptr; - max_output_ptr = num_output_ptr + 4; - if (output_ptr != NULL) - { - png_charpp old_ptr; - - old_ptr = output_ptr; - /* This could be optimized to realloc() */ - output_ptr = (png_charpp)png_malloc(png_ptr, - (png_uint_32)(max_output_ptr * sizeof (png_charpp))); - png_memcpy(output_ptr, old_ptr, old_max * sizeof (png_charp)); - png_free(png_ptr, old_ptr); - } - else - output_ptr = (png_charpp)png_malloc(png_ptr, - (png_uint_32)(max_output_ptr * sizeof (png_charp))); - } - - /* save off the data */ - output_ptr[num_output_ptr] = (png_charp)png_malloc(png_ptr, - (png_uint_32)png_ptr->zbuf_size); - png_memcpy(output_ptr[num_output_ptr], png_ptr->zbuf, - png_ptr->zbuf_size); - num_output_ptr++; - - /* and reset the buffer pointers */ - png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size; - png_ptr->zstream.next_out = png_ptr->zbuf; - } - } while (ret != Z_STREAM_END); - - /* text length is number of buffers plus last buffer */ - text_len = png_ptr->zbuf_size * num_output_ptr; - if (png_ptr->zstream.avail_out < png_ptr->zbuf_size) - text_len += png_ptr->zbuf_size - (png_size_t)png_ptr->zstream.avail_out; - - /* write start of chunk */ - png_write_chunk_start(png_ptr, png_zTXt, (png_uint_32)(key_len+text_len+2)); - /* write key */ - png_write_chunk_data(png_ptr, (png_bytep)key, key_len + 1); - buf[0] = (png_byte)compression; - /* write compression */ - png_write_chunk_data(png_ptr, (png_bytep)buf, (png_size_t)1); - - /* write saved output buffers, if any */ - for (i = 0; i < num_output_ptr; i++) - { - png_write_chunk_data(png_ptr,(png_bytep)output_ptr[i],png_ptr->zbuf_size); - png_free(png_ptr, output_ptr[i]); - } - if (max_output_ptr != 0) - png_free(png_ptr, output_ptr); - /* write anything left in zbuf */ - if (png_ptr->zstream.avail_out < (png_uint_32)png_ptr->zbuf_size) - png_write_chunk_data(png_ptr, png_ptr->zbuf, - png_ptr->zbuf_size - png_ptr->zstream.avail_out); - /* close the chunk */ - png_write_chunk_end(png_ptr); - - /* reset zlib for another zTXt or the image data */ - deflateReset(&png_ptr->zstream); -} -#endif - - -#if defined(PNG_WRITE_oFFs_SUPPORTED) -/* write the oFFs chunk */ -void -png_write_oFFs(png_structp png_ptr, png_uint_32 x_offset, - png_uint_32 y_offset, - int unit_type) -{ - png_byte buf[9]; - - png_debug(1, "in png_write_oFFs\n"); - if (unit_type >= PNG_OFFSET_LAST) - png_warning(png_ptr, "Unrecognized unit type for oFFs chunk"); - - png_save_uint_32(buf, x_offset); - png_save_uint_32(buf + 4, y_offset); - buf[8] = (png_byte)unit_type; - - png_write_chunk(png_ptr, png_oFFs, buf, (png_size_t)9); -} -#endif - -#if defined(PNG_WRITE_pCAL_SUPPORTED) -/* write the pCAL chunk (png-scivis-19970203) */ -void -png_write_pCAL(png_structp png_ptr, png_charp purpose, png_int_32 X0, - png_int_32 X1, int type, int nparams, png_charp units, png_charpp params) -{ - png_size_t purpose_len, units_len, total_len; - png_uint_32p params_len; - png_byte buf[10]; - png_charp new_purpose; - int i; - - png_debug1(1, "in png_write_pCAL (%d parameters)\n", nparams); - if (type >= PNG_EQUATION_LAST) - png_warning(png_ptr, "Unrecognized equation type for pCAL chunk"); - - purpose_len = png_check_keyword(png_ptr, purpose, &new_purpose) + 1; - png_debug1(3, "pCAL purpose length = %d\n", purpose_len); - units_len = png_strlen(units) + (nparams == 0 ? 0 : 1); - png_debug1(3, "pCAL units length = %d\n", units_len); - total_len = purpose_len + units_len + 10; - - params_len = (png_uint_32p)png_malloc(png_ptr, (png_uint_32)(nparams - *sizeof(png_uint_32))); - - /* Find the length of each parameter, making sure we don't count the - null terminator for the last parameter. */ - for (i = 0; i < nparams; i++) - { - params_len[i] = png_strlen(params[i]) + (i == nparams - 1 ? 0 : 1); - png_debug2(3, "pCAL parameter %d length = %d\n", i, params_len[i]); - total_len += (png_size_t)params_len[i]; - } - - png_debug1(3, "pCAL total length = %d\n", total_len); - png_write_chunk_start(png_ptr, png_pCAL, (png_uint_32)total_len); - png_write_chunk_data(png_ptr, (png_bytep)new_purpose, purpose_len); - png_save_int_32(buf, X0); - png_save_int_32(buf + 4, X1); - buf[8] = (png_byte)type; - buf[9] = (png_byte)nparams; - png_write_chunk_data(png_ptr, buf, (png_size_t)10); - png_write_chunk_data(png_ptr, (png_bytep)units, (png_size_t)units_len); - - png_free(png_ptr, new_purpose); - - for (i = 0; i < nparams; i++) - { - png_write_chunk_data(png_ptr, (png_bytep)params[i], - (png_size_t)params_len[i]); - } - - png_free(png_ptr, params_len); - png_write_chunk_end(png_ptr); -} -#endif - -#if defined(PNG_WRITE_pHYs_SUPPORTED) -/* write the pHYs chunk */ -void -png_write_pHYs(png_structp png_ptr, png_uint_32 x_pixels_per_unit, - png_uint_32 y_pixels_per_unit, - int unit_type) -{ - png_byte buf[9]; - - png_debug(1, "in png_write_pHYs\n"); - if (unit_type >= PNG_RESOLUTION_LAST) - png_warning(png_ptr, "Unrecognized unit type for pHYs chunk"); - - png_save_uint_32(buf, x_pixels_per_unit); - png_save_uint_32(buf + 4, y_pixels_per_unit); - buf[8] = (png_byte)unit_type; - - png_write_chunk(png_ptr, png_pHYs, buf, (png_size_t)9); -} -#endif - -#if defined(PNG_WRITE_tIME_SUPPORTED) -/* Write the tIME chunk. Use either png_convert_from_struct_tm() - * or png_convert_from_time_t(), or fill in the structure yourself. - */ -void -png_write_tIME(png_structp png_ptr, png_timep mod_time) -{ - png_byte buf[7]; - - png_debug(1, "in png_write_tIME\n"); - if (mod_time->month > 12 || mod_time->month < 1 || - mod_time->day > 31 || mod_time->day < 1 || - mod_time->hour > 23 || mod_time->second > 60) - { - png_warning(png_ptr, "Invalid time specified for tIME chunk"); - return; - } - - png_save_uint_16(buf, mod_time->year); - buf[2] = mod_time->month; - buf[3] = mod_time->day; - buf[4] = mod_time->hour; - buf[5] = mod_time->minute; - buf[6] = mod_time->second; - - png_write_chunk(png_ptr, png_tIME, buf, (png_size_t)7); -} -#endif - -/* initializes the row writing capability of libpng */ -void -png_write_start_row(png_structp png_ptr) -{ - png_size_t buf_size; - - png_debug(1, "in png_write_start_row\n"); - buf_size = (png_size_t)(((png_ptr->width * png_ptr->usr_channels * - png_ptr->usr_bit_depth + 7) >> 3) + 1); - - /* set up row buffer */ - png_ptr->row_buf = (png_bytep)png_malloc(png_ptr, (png_uint_32)buf_size); - png_ptr->row_buf[0] = PNG_FILTER_VALUE_NONE; - - /* set up filtering buffer, if using this filter */ - if (png_ptr->do_filter & PNG_FILTER_SUB) - { - png_ptr->sub_row = (png_bytep)png_malloc(png_ptr, - (png_ptr->rowbytes + 1)); - png_ptr->sub_row[0] = PNG_FILTER_VALUE_SUB; - } - - /* We only need to keep the previous row if we are using one of these. */ - if (png_ptr->do_filter & (PNG_FILTER_AVG | PNG_FILTER_UP | PNG_FILTER_PAETH)) - { - /* set up previous row buffer */ - png_ptr->prev_row = (png_bytep)png_malloc(png_ptr, (png_uint_32)buf_size); - png_memset(png_ptr->prev_row, 0, buf_size); - - if (png_ptr->do_filter & PNG_FILTER_UP) - { - png_ptr->up_row = (png_bytep )png_malloc(png_ptr, - (png_ptr->rowbytes + 1)); - png_ptr->up_row[0] = PNG_FILTER_VALUE_UP; - } - - if (png_ptr->do_filter & PNG_FILTER_AVG) - { - png_ptr->avg_row = (png_bytep)png_malloc(png_ptr, - (png_ptr->rowbytes + 1)); - png_ptr->avg_row[0] = PNG_FILTER_VALUE_AVG; - } - - if (png_ptr->do_filter & PNG_FILTER_PAETH) - { - png_ptr->paeth_row = (png_bytep )png_malloc(png_ptr, - (png_ptr->rowbytes + 1)); - png_ptr->paeth_row[0] = PNG_FILTER_VALUE_PAETH; - } - } - -#ifdef PNG_WRITE_INTERLACING_SUPPORTED - /* if interlaced, we need to set up width and height of pass */ - if (png_ptr->interlaced) - { - if (!(png_ptr->transformations & PNG_INTERLACE)) - { - png_ptr->num_rows = (png_ptr->height + png_pass_yinc[0] - 1 - - png_pass_ystart[0]) / png_pass_yinc[0]; - png_ptr->usr_width = (png_ptr->width + png_pass_inc[0] - 1 - - png_pass_start[0]) / png_pass_inc[0]; - } - else - { - png_ptr->num_rows = png_ptr->height; - png_ptr->usr_width = png_ptr->width; - } - } - else -#endif - { - png_ptr->num_rows = png_ptr->height; - png_ptr->usr_width = png_ptr->width; - } - png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size; - png_ptr->zstream.next_out = png_ptr->zbuf; -} - -/* Internal use only. Called when finished processing a row of data. */ -void -png_write_finish_row(png_structp png_ptr) -{ - int ret; - - png_debug(1, "in png_write_finish_row\n"); - /* next row */ - png_ptr->row_number++; - - /* see if we are done */ - if (png_ptr->row_number < png_ptr->num_rows) - return; - -#ifdef PNG_WRITE_INTERLACING_SUPPORTED - /* if interlaced, go to next pass */ - if (png_ptr->interlaced) - { - png_ptr->row_number = 0; - if (png_ptr->transformations & PNG_INTERLACE) - { - png_ptr->pass++; - } - else - { - /* loop until we find a non-zero width or height pass */ - do - { - png_ptr->pass++; - if (png_ptr->pass >= 7) - break; - png_ptr->usr_width = (png_ptr->width + - png_pass_inc[png_ptr->pass] - 1 - - png_pass_start[png_ptr->pass]) / - png_pass_inc[png_ptr->pass]; - png_ptr->num_rows = (png_ptr->height + - png_pass_yinc[png_ptr->pass] - 1 - - png_pass_ystart[png_ptr->pass]) / - png_pass_yinc[png_ptr->pass]; - if (png_ptr->transformations & PNG_INTERLACE) - break; - } while (png_ptr->usr_width == 0 || png_ptr->num_rows == 0); - - } - - /* reset the row above the image for the next pass */ - if (png_ptr->pass < 7) - { - if (png_ptr->prev_row != NULL) - png_memset(png_ptr->prev_row, 0, - (png_size_t) (((png_uint_32)png_ptr->usr_channels * - (png_uint_32)png_ptr->usr_bit_depth * - png_ptr->width + 7) >> 3) + 1); - return; - } - } -#endif - - /* if we get here, we've just written the last row, so we need - to flush the compressor */ - do - { - /* tell the compressor we are done */ - ret = deflate(&png_ptr->zstream, Z_FINISH); - /* check for an error */ - if (ret != Z_OK && ret != Z_STREAM_END) - { - if (png_ptr->zstream.msg != NULL) - png_error(png_ptr, png_ptr->zstream.msg); - else - png_error(png_ptr, "zlib error"); - } - /* check to see if we need more room */ - if (!(png_ptr->zstream.avail_out) && ret == Z_OK) - { - png_write_IDAT(png_ptr, png_ptr->zbuf, png_ptr->zbuf_size); - png_ptr->zstream.next_out = png_ptr->zbuf; - png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size; - } - } while (ret != Z_STREAM_END); - - /* write any extra space */ - if (png_ptr->zstream.avail_out < png_ptr->zbuf_size) - { - png_write_IDAT(png_ptr, png_ptr->zbuf, png_ptr->zbuf_size - - png_ptr->zstream.avail_out); - } - - deflateReset(&png_ptr->zstream); -} - -#if defined(PNG_WRITE_INTERLACING_SUPPORTED) -/* Pick out the correct pixels for the interlace pass. - * The basic idea here is to go through the row with a source - * pointer and a destination pointer (sp and dp), and copy the - * correct pixels for the pass. As the row gets compacted, - * sp will always be >= dp, so we should never overwrite anything. - * See the default: case for the easiest code to understand. - */ -void -png_do_write_interlace(png_row_infop row_info, png_bytep row, int pass) -{ - png_debug(1, "in png_do_write_interlace\n"); - /* we don't have to do anything on the last pass (6) */ -#if defined(PNG_USELESS_TESTS_SUPPORTED) - if (row != NULL && row_info != NULL && pass < 6) -#else - if (pass < 6) -#endif - { - /* each pixel depth is handled seperately */ - switch (row_info->pixel_depth) - { - case 1: - { - png_bytep sp; - png_bytep dp; - int shift; - int d; - int value; - png_uint_32 i; - - dp = row; - d = 0; - shift = 7; - for (i = png_pass_start[pass]; i < row_info->width; - i += png_pass_inc[pass]) - { - sp = row + (png_size_t)(i >> 3); - value = (int)(*sp >> (7 - (int)(i & 7))) & 0x1; - d |= (value << shift); - - if (shift == 0) - { - shift = 7; - *dp++ = (png_byte)d; - d = 0; - } - else - shift--; - - } - if (shift != 7) - *dp = (png_byte)d; - break; - } - case 2: - { - png_bytep sp; - png_bytep dp; - int shift; - int d; - int value; - png_uint_32 i; - - dp = row; - shift = 6; - d = 0; - for (i = png_pass_start[pass]; i < row_info->width; - i += png_pass_inc[pass]) - { - sp = row + (png_size_t)(i >> 2); - value = (*sp >> ((3 - (int)(i & 3)) << 1)) & 0x3; - d |= (value << shift); - - if (shift == 0) - { - shift = 6; - *dp++ = (png_byte)d; - d = 0; - } - else - shift -= 2; - } - if (shift != 6) - *dp = (png_byte)d; - break; - } - case 4: - { - png_bytep sp; - png_bytep dp; - int shift; - int d; - int value; - png_uint_32 i; - - dp = row; - shift = 4; - d = 0; - for (i = png_pass_start[pass]; i < row_info->width; - i += png_pass_inc[pass]) - { - sp = row + (png_size_t)(i >> 1); - value = (*sp >> ((1 - (int)(i & 1)) << 2)) & 0xf; - d |= (value << shift); - - if (shift == 0) - { - shift = 4; - *dp++ = (png_byte)d; - d = 0; - } - else - shift -= 4; - } - if (shift != 4) - *dp = (png_byte)d; - break; - } - default: - { - png_bytep sp; - png_bytep dp; - png_uint_32 i; - png_size_t pixel_bytes; - - /* start at the beginning */ - dp = row; - /* find out how many bytes each pixel takes up */ - pixel_bytes = (row_info->pixel_depth >> 3); - /* loop through the row, only looking at the pixels that - matter */ - for (i = png_pass_start[pass]; i < row_info->width; - i += png_pass_inc[pass]) - { - /* find out where the original pixel is */ - sp = row + (png_size_t)i * pixel_bytes; - /* move the pixel */ - if (dp != sp) - png_memcpy(dp, sp, pixel_bytes); - /* next pixel */ - dp += pixel_bytes; - } - break; - } - } - /* set new row width */ - row_info->width = (row_info->width + - png_pass_inc[pass] - 1 - - png_pass_start[pass]) / - png_pass_inc[pass]; - row_info->rowbytes = ((row_info->width * - row_info->pixel_depth + 7) >> 3); - } -} -#endif - -/* This filters the row, chooses which filter to use, if it has not already - * been specified by the application, and then writes the row out with the - * chosen filter. - */ -#define PNG_MAXSUM (~((png_uint_32)0) >> 1) -#define PNG_HISHIFT 10 -#define PNG_LOMASK ((png_uint_32)0xffffL) -#define PNG_HIMASK ((png_uint_32)(~PNG_LOMASK >> PNG_HISHIFT)) -void -png_write_find_filter(png_structp png_ptr, png_row_infop row_info) -{ - png_bytep prev_row, best_row, row_buf; - png_uint_32 mins, bpp; - - png_debug(1, "in png_write_find_filter\n"); - /* find out how many bytes offset each pixel is */ - bpp = (row_info->pixel_depth + 7) / 8; - - prev_row = png_ptr->prev_row; - best_row = row_buf = png_ptr->row_buf; - mins = PNG_MAXSUM; - - /* The prediction method we use is to find which method provides the - * smallest value when summing the absolute values of the distances - * from zero using anything >= 128 as negative numbers. This is known - * as the "minimum sum of absolute differences" heuristic. Other - * heuristics are the "weighted minumum sum of absolute differences" - * (experimental and can in theory improve compression), and the "zlib - * predictive" method (not implemented in libpng 0.95), which does test - * compressions of lines using different filter methods, and then chooses - * the (series of) filter(s) which give minimum compressed data size (VERY - * computationally expensive). - */ - - /* We don't need to test the 'no filter' case if this is the only filter - * that has been chosen, as it doesn't actually do anything to the data. - */ - if (png_ptr->do_filter & PNG_FILTER_NONE && - png_ptr->do_filter != PNG_FILTER_NONE) - { - png_bytep rp; - png_uint_32 sum = 0; - png_uint_32 i; - int v; - - for (i = 0, rp = row_buf + 1; i < row_info->rowbytes; i++, rp++) - { - v = *rp; - sum += (v < 128) ? v : 256 - v; - } - -#if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED) - if (png_ptr->heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED) - { - png_uint_32 sumhi, sumlo; - sumlo = sum & PNG_LOMASK; - sumhi = (sum >> PNG_HISHIFT) & PNG_HIMASK; /* Gives us some footroom */ - - /* Reduce the sum if we match any of the previous rows */ - for (i = 0; i < (png_uint_32)png_ptr->num_prev_filters; i++) - { - if (png_ptr->prev_filters[i] == PNG_FILTER_NONE) - { - sumlo = (sumlo * png_ptr->filter_weights[i]) >> - PNG_WEIGHT_SHIFT; - sumhi = (sumhi * png_ptr->filter_weights[i]) >> - PNG_WEIGHT_SHIFT; - } - } - - /* Factor in the cost of this filter (this is here for completeness, - * but it makes no sense to have a "cost" for the NONE filter, as - * it has the minimum possible computational cost - none). - */ - sumlo = (sumlo * png_ptr->filter_costs[PNG_FILTER_VALUE_NONE]) >> - PNG_COST_SHIFT; - sumhi = (sumhi * png_ptr->filter_costs[PNG_FILTER_VALUE_NONE]) >> - PNG_COST_SHIFT; - - if (sumhi > PNG_HIMASK) - sum = PNG_MAXSUM; - else - sum = (sumhi << PNG_HISHIFT) + sumlo; - } -#endif - mins = sum; - } - - /* sub filter */ - if (png_ptr->do_filter & PNG_FILTER_SUB) - { - png_bytep rp, dp, lp; - png_uint_32 sum = 0, lmins = mins; - png_uint_32 i; - int v; - -#if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED) - /* We temporarily increase the "minumum sum" by the factor we - * would reduce the sum of this filter, so that we can do the - * early exit comparison without scaling the sum each time. - */ - if (png_ptr->heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED) - { - png_uint_32 lmhi, lmlo; - lmlo = lmins & PNG_LOMASK; - lmhi = (lmins >> PNG_HISHIFT) & PNG_HIMASK; - - for (i = 0; i < (png_uint_32)png_ptr->num_prev_filters; i++) - { - if (png_ptr->prev_filters[i] == PNG_FILTER_VALUE_SUB) - { - lmlo = (lmlo * png_ptr->inv_filter_weights[i]) >> - PNG_WEIGHT_SHIFT; - lmhi = (lmhi * png_ptr->inv_filter_weights[i]) >> - PNG_WEIGHT_SHIFT; - } - } - - lmlo = (lmlo * png_ptr->inv_filter_costs[PNG_FILTER_VALUE_SUB]) >> - PNG_COST_SHIFT; - lmhi = (lmhi * png_ptr->inv_filter_costs[PNG_FILTER_VALUE_SUB]) >> - PNG_COST_SHIFT; - - if (lmhi > PNG_HIMASK) - lmins = PNG_MAXSUM; - else - lmins = (lmhi << PNG_HISHIFT) + lmlo; - } -#endif - - for (i = 0, rp = row_buf + 1, dp = png_ptr->sub_row + 1; i < bpp; - i++, rp++, dp++) - { - v = *dp = *rp; - - sum += (v < 128) ? v : 256 - v; - } - for (lp = row_buf + 1; i < row_info->rowbytes; - i++, rp++, lp++, dp++) - { - v = *dp = (png_byte)(((int)*rp - (int)*lp) & 0xff); - - sum += (v < 128) ? v : 256 - v; - - if (sum > lmins) /* We are already worse, don't continue. */ - break; - } - -#if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED) - if (png_ptr->heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED) - { - png_uint_32 sumhi, sumlo; - sumlo = sum & PNG_LOMASK; - sumhi = (sum >> PNG_HISHIFT) & PNG_HIMASK; - - for (i = 0; i < (png_uint_32)png_ptr->num_prev_filters; i++) - { - if (png_ptr->prev_filters[i] == PNG_FILTER_VALUE_SUB) - { - sumlo = (sumlo * png_ptr->inv_filter_weights[i]) >> - PNG_WEIGHT_SHIFT; - sumhi = (sumhi * png_ptr->inv_filter_weights[i]) >> - PNG_WEIGHT_SHIFT; - } - } - - sumlo = (sumlo * png_ptr->inv_filter_costs[PNG_FILTER_VALUE_SUB]) >> - PNG_COST_SHIFT; - sumhi = (sumhi * png_ptr->inv_filter_costs[PNG_FILTER_VALUE_SUB]) >> - PNG_COST_SHIFT; - - if (sumhi > PNG_HIMASK) - sum = PNG_MAXSUM; - else - sum = (sumhi << PNG_HISHIFT) + sumlo; - } -#endif - - if (sum < mins) - { - mins = sum; - best_row = png_ptr->sub_row; - } - } - - /* up filter */ - if (png_ptr->do_filter & PNG_FILTER_UP) - { - png_bytep rp, dp, pp; - png_uint_32 sum = 0, lmins = mins; - png_uint_32 i; - int v; - -#if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED) - if (png_ptr->heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED) - { - png_uint_32 lmhi, lmlo; - lmlo = lmins & PNG_LOMASK; - lmhi = (lmins >> PNG_HISHIFT) & PNG_HIMASK; - - for (i = 0; i < (png_uint_32)png_ptr->num_prev_filters; i++) - { - if (png_ptr->prev_filters[i] == PNG_FILTER_VALUE_UP) - { - lmlo = (lmlo * png_ptr->inv_filter_weights[i]) >> - PNG_WEIGHT_SHIFT; - lmhi = (lmhi * png_ptr->inv_filter_weights[i]) >> - PNG_WEIGHT_SHIFT; - } - } - - lmlo = (lmlo * png_ptr->inv_filter_costs[PNG_FILTER_VALUE_UP]) >> - PNG_COST_SHIFT; - lmhi = (lmhi * png_ptr->inv_filter_costs[PNG_FILTER_VALUE_UP]) >> - PNG_COST_SHIFT; - - if (lmhi > PNG_HIMASK) - lmins = PNG_MAXSUM; - else - lmins = (lmhi << PNG_HISHIFT) + lmlo; - } -#endif - - for (i = 0, rp = row_buf + 1, dp = png_ptr->up_row + 1, - pp = prev_row + 1; i < row_info->rowbytes; - i++, rp++, pp++, dp++) - { - v = *dp = (png_byte)(((int)*rp - (int)*pp) & 0xff); - - sum += (v < 128) ? v : 256 - v; - - if (sum > lmins) /* We are already worse, don't continue. */ - break; - } - -#if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED) - if (png_ptr->heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED) - { - png_uint_32 sumhi, sumlo; - sumlo = sum & PNG_LOMASK; - sumhi = (sum >> PNG_HISHIFT) & PNG_HIMASK; - - for (i = 0; i < (png_uint_32)png_ptr->num_prev_filters; i++) - { - if (png_ptr->prev_filters[i] == PNG_FILTER_UP) - { - sumlo = (sumlo * png_ptr->filter_weights[i]) >> - PNG_WEIGHT_SHIFT; - sumhi = (sumhi * png_ptr->filter_weights[i]) >> - PNG_WEIGHT_SHIFT; - } - } - - sumlo = (sumlo * png_ptr->filter_costs[PNG_FILTER_VALUE_UP]) >> - PNG_COST_SHIFT; - sumhi = (sumhi * png_ptr->filter_costs[PNG_FILTER_VALUE_UP]) >> - PNG_COST_SHIFT; - - if (sumhi > PNG_HIMASK) - sum = PNG_MAXSUM; - else - sum = (sumhi << PNG_HISHIFT) + sumlo; - } -#endif - - if (sum < mins) - { - mins = sum; - best_row = png_ptr->up_row; - } - } - - /* avg filter */ - if (png_ptr->do_filter & PNG_FILTER_AVG) - { - png_bytep rp, dp, pp, lp; - png_uint_32 sum = 0, lmins = mins; - png_uint_32 i; - int v; - -#if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED) - if (png_ptr->heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED) - { - png_uint_32 lmhi, lmlo; - lmlo = lmins & PNG_LOMASK; - lmhi = (lmins >> PNG_HISHIFT) & PNG_HIMASK; - - for (i = 0; i < (png_uint_32)png_ptr->num_prev_filters; i++) - { - if (png_ptr->prev_filters[i] == PNG_FILTER_VALUE_AVG) - { - lmlo = (lmlo * png_ptr->inv_filter_weights[i]) >> - PNG_WEIGHT_SHIFT; - lmhi = (lmhi * png_ptr->inv_filter_weights[i]) >> - PNG_WEIGHT_SHIFT; - } - } - - lmlo = (lmlo * png_ptr->inv_filter_costs[PNG_FILTER_VALUE_AVG]) >> - PNG_COST_SHIFT; - lmhi = (lmhi * png_ptr->inv_filter_costs[PNG_FILTER_VALUE_AVG]) >> - PNG_COST_SHIFT; - - if (lmhi > PNG_HIMASK) - lmins = PNG_MAXSUM; - else - lmins = (lmhi << PNG_HISHIFT) + lmlo; - } -#endif - - for (i = 0, rp = row_buf + 1, dp = png_ptr->avg_row + 1, - pp = prev_row + 1; i < bpp; i++, rp++, pp++, dp++) - { - v = *dp = (png_byte)(((int)*rp - ((int)*pp / 2)) & 0xff); - - sum += (v < 128) ? v : 256 - v; - } - for (lp = row_buf + 1; i < row_info->rowbytes; - i++, rp++, pp++, lp++, dp++) - { - v = *dp = (png_byte)(((int)*rp - (((int)*pp + (int)*lp) / 2)) & 0xff); - - sum += (v < 128) ? v : 256 - v; - - if (sum > lmins) /* We are already worse, don't continue. */ - break; - } - -#if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED) - if (png_ptr->heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED) - { - png_uint_32 sumhi, sumlo; - sumlo = sum & PNG_LOMASK; - sumhi = (sum >> PNG_HISHIFT) & PNG_HIMASK; - - for (i = 0; i < png_ptr->num_prev_filters; i++) - { - if (png_ptr->prev_filters[i] == PNG_FILTER_NONE) - { - sumlo = (sumlo * png_ptr->filter_weights[i]) >> - PNG_WEIGHT_SHIFT; - sumhi = (sumhi * png_ptr->filter_weights[i]) >> - PNG_WEIGHT_SHIFT; - } - } - - sumlo = (sumlo * png_ptr->filter_costs[PNG_FILTER_VALUE_AVG]) >> - PNG_COST_SHIFT; - sumhi = (sumhi * png_ptr->filter_costs[PNG_FILTER_VALUE_AVG]) >> - PNG_COST_SHIFT; - - if (sumhi > PNG_HIMASK) - sum = PNG_MAXSUM; - else - sum = (sumhi << PNG_HISHIFT) + sumlo; - } -#endif - - if (sum < mins) - { - mins = sum; - best_row = png_ptr->avg_row; - } - } - - /* Paeth filter */ - if (png_ptr->do_filter & PNG_FILTER_PAETH) - { - png_bytep rp, dp, pp, cp, lp; - png_uint_32 sum = 0, lmins = mins; - png_uint_32 i; - int v; - -#if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED) - if (png_ptr->heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED) - { - png_uint_32 lmhi, lmlo; - lmlo = lmins & PNG_LOMASK; - lmhi = (lmins >> PNG_HISHIFT) & PNG_HIMASK; - - for (i = 0; i < png_ptr->num_prev_filters; i++) - { - if (png_ptr->prev_filters[i] == PNG_FILTER_VALUE_PAETH) - { - lmlo = (lmlo * png_ptr->inv_filter_weights[i]) >> - PNG_WEIGHT_SHIFT; - lmhi = (lmhi * png_ptr->inv_filter_weights[i]) >> - PNG_WEIGHT_SHIFT; - } - } - - lmlo = (lmlo * png_ptr->inv_filter_costs[PNG_FILTER_VALUE_PAETH]) >> - PNG_COST_SHIFT; - lmhi = (lmhi * png_ptr->inv_filter_costs[PNG_FILTER_VALUE_PAETH]) >> - PNG_COST_SHIFT; - - if (lmhi > PNG_HIMASK) - lmins = PNG_MAXSUM; - else - lmins = (lmhi << PNG_HISHIFT) + lmlo; - } -#endif - - for (i = 0, rp = row_buf + 1, dp = png_ptr->paeth_row + 1, - pp = prev_row + 1; (unsigned)i < bpp; i++, rp++, pp++, dp++) - { - v = *dp = (png_byte)(((int)*rp - (int)*pp) & 0xff); - - sum += (v < 128) ? v : 256 - v; - } - for (lp = row_buf + 1, cp = prev_row + 1; i < row_info->rowbytes; - i++, rp++, pp++, lp++, dp++, cp++) - { - int a, b, c, pa, pb, pc, p; - - b = *pp; - c = *cp; - a = *lp; - - p = a + b - c; - pa = abs(p - a); - pb = abs(p - b); - pc = abs(p - c); - - if (pa <= pb && pa <= pc) - p = a; - else if (pb <= pc) - p = b; - else - p = c; - - v = *dp = (png_byte)(((int)*rp - p) & 0xff); - - sum += (v < 128) ? v : 256 - v; - - if (sum > lmins) /* We are already worse, don't continue. */ - break; - } - -#if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED) - if (png_ptr->heuristic_method == PNG_FILTER_HEURISTIC_WEIGHTED) - { - png_uint_32 sumhi, sumlo; - sumlo = sum & PNG_LOMASK; - sumhi = (sum >> PNG_HISHIFT) & PNG_HIMASK; - - for (i = 0; i < png_ptr->num_prev_filters; i++) - { - if (png_ptr->prev_filters[i] == PNG_FILTER_PAETH) - { - sumlo = (sumlo * png_ptr->filter_weights[i]) >> - PNG_WEIGHT_SHIFT; - sumhi = (sumhi * png_ptr->filter_weights[i]) >> - PNG_WEIGHT_SHIFT; - } - } - - sumlo = (sumlo * png_ptr->filter_costs[PNG_FILTER_VALUE_PAETH]) >> - PNG_COST_SHIFT; - sumhi = (sumhi * png_ptr->filter_costs[PNG_FILTER_VALUE_PAETH]) >> - PNG_COST_SHIFT; - - if (sumhi > PNG_HIMASK) - sum = PNG_MAXSUM; - else - sum = (sumhi << PNG_HISHIFT) + sumlo; - } -#endif - - if (sum < mins) - { - best_row = png_ptr->paeth_row; - } - } - - /* Do the actual writing of the filtered row data from the chosen filter. */ - png_write_filtered_row(png_ptr, best_row); - -#if defined(PNG_WRITE_WEIGHTED_FILTER_SUPPORTED) - /* Save the type of filter we picked this time for future calculations */ - if (png_ptr->num_prev_filters > 0) - { - int i; - - for (i = 1; i < (int)png_ptr->num_prev_filters; i++) - { - png_ptr->prev_filters[i] = png_ptr->prev_filters[i - 1]; - } - png_ptr->prev_filters[i] = best_row[0]; - } -#endif -} - - -/* Do the actual writing of a previously filtered row. */ -void -png_write_filtered_row(png_structp png_ptr, png_bytep filtered_row) -{ - png_debug(1, "in png_write_filtered_row\n"); - png_debug1(2, "filter = %d\n", filtered_row[0]); - /* set up the zlib input buffer */ - png_ptr->zstream.next_in = filtered_row; - png_ptr->zstream.avail_in = (uInt)png_ptr->row_info.rowbytes + 1; - /* repeat until we have compressed all the data */ - do - { - int ret; /* return of zlib */ - - /* compress the data */ - ret = deflate(&png_ptr->zstream, Z_NO_FLUSH); - /* check for compression errors */ - if (ret != Z_OK) - { - if (png_ptr->zstream.msg != NULL) - png_error(png_ptr, png_ptr->zstream.msg); - else - png_error(png_ptr, "zlib error"); - } - - /* see if it is time to write another IDAT */ - if (!(png_ptr->zstream.avail_out)) - { - /* write the IDAT and reset the zlib output buffer */ - png_write_IDAT(png_ptr, png_ptr->zbuf, png_ptr->zbuf_size); - png_ptr->zstream.next_out = png_ptr->zbuf; - png_ptr->zstream.avail_out = (uInt)png_ptr->zbuf_size; - } - /* repeat until all data has been compressed */ - } while (png_ptr->zstream.avail_in); - - /* swap the current and previous rows */ - if (png_ptr->prev_row != NULL) - { - png_bytep tptr; - - tptr = png_ptr->prev_row; - png_ptr->prev_row = png_ptr->row_buf; - png_ptr->row_buf = tptr; - } - - /* finish row - updates counters and flushes zlib if last row */ - png_write_finish_row(png_ptr); - -#if defined(PNG_WRITE_FLUSH_SUPPORTED) - png_ptr->flush_rows++; - - if (png_ptr->flush_dist > 0 && - png_ptr->flush_rows >= png_ptr->flush_dist) - { - png_write_flush(png_ptr); - } -#endif /* PNG_WRITE_FLUSH_SUPPORTED */ -} diff --git a/src/png/scripts/SCOPTIONS.ppc b/src/png/scripts/SCOPTIONS.ppc deleted file mode 100644 index 2c3503e9eb..0000000000 --- a/src/png/scripts/SCOPTIONS.ppc +++ /dev/null @@ -1,7 +0,0 @@ -OPTIMIZE -OPTPEEP -OPTTIME -OPTSCHED -AUTOREGISTER -PARMS=REGISTERS -INCLUDEDIR=hlp:ppc/include diff --git a/src/png/scripts/build.bat b/src/png/scripts/build.bat deleted file mode 100644 index ec34b6f035..0000000000 --- a/src/png/scripts/build.bat +++ /dev/null @@ -1,2 +0,0 @@ -make -fmakefile.bor -B -DMODEL=m %1 %2 %3 libpng >buildm.out -make -fmakefile.bor -B -DMODEL=l %1 %2 %3 libpng >buildl.out diff --git a/src/png/scripts/descrip.mms b/src/png/scripts/descrip.mms deleted file mode 100644 index 3584b0d782..0000000000 --- a/src/png/scripts/descrip.mms +++ /dev/null @@ -1,52 +0,0 @@ - -cc_defs = /inc=$(ZLIBSRC) -c_deb = - -.ifdef __DECC__ -pref = /prefix=all -.endif - - - -OBJS = png.obj, pngset.obj, pngget.obj, pngrutil.obj, pngtrans.obj,\ - pngwutil.obj, pngread.obj, pngmem.obj, pngwrite.obj, pngrtran.obj,\ - pngwtran.obj, pngrio.obj, pngwio.obj, pngerror.obj, pngpread.obj - - -CFLAGS= $(C_DEB) $(CC_DEFS) $(PREF) - -all : pngtest.exe libpng.olb - @ write sys$output " pngtest available" - -libpng.olb : libpng.olb($(OBJS)) - @ write sys$output " Libpng available" - - -pngtest.exe : pngtest.obj libpng.olb - link pngtest,libpng.olb/lib,$(ZLIBSRC)libz.olb/lib - -test : pngtest.exe - run pngtest - -clean : - delete *.obj;*,*.exe;* - - -# Other dependencies. -png.obj : png.h, pngconf.h -pngpread.obj : png.h, pngconf.h -pngset.obj : png.h, pngconf.h -pngget.obj : png.h, pngconf.h -pngread.obj : png.h, pngconf.h -pngrtran.obj : png.h, pngconf.h -pngrutil.obj : png.h, pngconf.h -pngerror.obj : png.h, pngconf.h -pngmem.obj : png.h, pngconf.h -pngrio.obj : png.h, pngconf.h -pngwio.obj : png.h, pngconf.h -pngtest.obj : png.h, pngconf.h -pngtrans.obj : png.h, pngconf.h -pngwrite.obj : png.h, pngconf.h -pngwtran.obj : png.h, pngconf.h -pngwutil.obj : png.h, pngconf.h - diff --git a/src/png/scripts/makefile.aco b/src/png/scripts/makefile.aco deleted file mode 100644 index 2cb089879b..0000000000 --- a/src/png/scripts/makefile.aco +++ /dev/null @@ -1,221 +0,0 @@ -# Project: libpng - - -# Toolflags: -CCflags = -c -depend !Depend -IC:,Zlib: -g -throwback -DRISCOS -fnah -C++flags = -c -depend !Depend -IC: -throwback -Linkflags = -aif -c++ -o $@ -ObjAsmflags = -throwback -NoCache -depend !Depend -CMHGflags = -LibFileflags = -c -l -o $@ -Squeezeflags = -o $@ - - -# Final targets: -@.libpng-lib: @.o.png @.o.pngerror @.o.pngrio @.o.pngwio @.o.pngmem \ - @.o.pngpread @.o.pngset @.o.pngget @.o.pngread @.o.pngrtran \ - @.o.pngrutil @.o.pngtrans @.o.pngwrite @.o.pngwtran @.o.pngwutil - LibFile $(LibFileflags) @.o.png @.o.pngerror @.o.pngrio @.o.pngrtran \ - @.o.pngmem @.o.pngpread @.o.pngset @.o.pngget @.o.pngread @.o.pngwio \ - @.o.pngrutil @.o.pngtrans @.o.pngwrite @.o.pngwtran @.o.pngwutil -@.mm-libpng-lib: @.mm.png @.mm.pngerror @.mm.pngrio @.mm.pngwio @.mm.pngmem \ - @.mm.pngpread @.mm.pngset @.mm.pngget @.mm.pngread @.mm.pngrtran \ - @.mm.pngrutil @.mm.pngtrans @.mm.pngwrite @.mm.pngwtran @.mm.pngwutil - LibFile $(LibFileflags) @.mm.png @.mm.pngerror @.mm.pngrio \ - @.mm.pngwio @.mm.pngmem @.mm.pngpread @.mm.pngset @.mm.pngget \ - @.mm.pngread @.mm.pngrtran @.mm.pngrutil @.mm.pngtrans @.mm.pngwrite \ - @.mm.pngwtran @.mm.pngwutil - - -# User-editable dependencies: -# (C) Copyright 1997 Tom Tanner -Test: @.pngtest - .pngtest - @remove .pngtest - -#It would be nice if you could stop "make" listing from here on! -@.pngtest: @.o.pngtest @.libpng-lib C:o.Stubs Zlib:zlib_lib - Link $(Linkflags) @.o.pngtest @.libpng-lib C:o.Stubs Zlib:zlib_lib - -.SUFFIXES: .o .mm .c - -.c.mm: - MemCheck.CC cc $(ccflags) -o $@ LibPng:$< -.c.o: - cc $(ccflags) -o $@ $< - - -# Static dependencies: - - -# Dynamic dependencies: -o.pngtest: c.pngtest -o.pngtest: h.png -o.pngtest: Zlib:h.zlib -o.pngtest: Zlib:h.zconf -o.pngtest: h.pngconf -mm.png: LibPng:c.png -mm.png: LibPng:h.png -mm.png: Zlib:h.zlib -mm.png: Zlib:h.zconf -mm.png: LibPng:h.pngconf -mm.png: MemCheck:ANSI.h.stdio -mm.pngerror: LibPng:c.pngerror -mm.pngerror: LibPng:h.png -mm.pngerror: Zlib:h.zlib -mm.pngerror: Zlib:h.zconf -mm.pngerror: LibPng:h.pngconf -mm.pngerror: MemCheck:ANSI.h.stdio -mm.pngrio: LibPng:c.pngrio -mm.pngrio: LibPng:h.png -mm.pngrio: Zlib:h.zlib -mm.pngrio: Zlib:h.zconf -mm.pngrio: LibPng:h.pngconf -mm.pngrio: MemCheck:ANSI.h.stdio -mm.pngwio: LibPng:c.pngwio -mm.pngwio: LibPng:h.png -mm.pngwio: Zlib:h.zlib -mm.pngwio: Zlib:h.zconf -mm.pngwio: LibPng:h.pngconf -mm.pngwio: MemCheck:ANSI.h.stdio -mm.pngmem: LibPng:c.pngmem -mm.pngmem: LibPng:h.png -mm.pngmem: Zlib:h.zlib -mm.pngmem: Zlib:h.zconf -mm.pngmem: LibPng:h.pngconf -mm.pngmem: MemCheck:ANSI.h.stdio -mm.pngpread: LibPng:c.pngpread -mm.pngpread: LibPng:h.png -mm.pngpread: Zlib:h.zlib -mm.pngpread: Zlib:h.zconf -mm.pngpread: LibPng:h.pngconf -mm.pngpread: MemCheck:ANSI.h.stdio -mm.pngset: LibPng:c.pngset -mm.pngset: LibPng:h.png -mm.pngset: Zlib:h.zlib -mm.pngset: Zlib:h.zconf -mm.pngset: LibPng:h.pngconf -mm.pngset: MemCheck:ANSI.h.stdio -mm.pngget: LibPng:c.pngget -mm.pngget: LibPng:h.png -mm.pngget: Zlib:h.zlib -mm.pngget: Zlib:h.zconf -mm.pngget: LibPng:h.pngconf -mm.pngget: MemCheck:ANSI.h.stdio -mm.pngread: LibPng:c.pngread -mm.pngread: LibPng:h.png -mm.pngread: Zlib:h.zlib -mm.pngread: Zlib:h.zconf -mm.pngread: LibPng:h.pngconf -mm.pngread: MemCheck:ANSI.h.stdio -mm.pngrtran: LibPng:c.pngrtran -mm.pngrtran: LibPng:h.png -mm.pngrtran: Zlib:h.zlib -mm.pngrtran: Zlib:h.zconf -mm.pngrtran: LibPng:h.pngconf -mm.pngrtran: MemCheck:ANSI.h.stdio -mm.pngrutil: LibPng:c.pngrutil -mm.pngrutil: LibPng:h.png -mm.pngrutil: Zlib:h.zlib -mm.pngrutil: Zlib:h.zconf -mm.pngrutil: LibPng:h.pngconf -mm.pngrutil: MemCheck:ANSI.h.stdio -mm.pngtrans: LibPng:c.pngtrans -mm.pngtrans: LibPng:h.png -mm.pngtrans: Zlib:h.zlib -mm.pngtrans: Zlib:h.zconf -mm.pngtrans: LibPng:h.pngconf -mm.pngtrans: MemCheck:ANSI.h.stdio -mm.pngwrite: LibPng:c.pngwrite -mm.pngwrite: LibPng:h.png -mm.pngwrite: Zlib:h.zlib -mm.pngwrite: Zlib:h.zconf -mm.pngwrite: LibPng:h.pngconf -mm.pngwrite: MemCheck:ANSI.h.stdio -mm.pngwtran: LibPng:c.pngwtran -mm.pngwtran: LibPng:h.png -mm.pngwtran: Zlib:h.zlib -mm.pngwtran: Zlib:h.zconf -mm.pngwtran: LibPng:h.pngconf -mm.pngwtran: MemCheck:ANSI.h.stdio -mm.pngwutil: LibPng:c.pngwutil -mm.pngwutil: LibPng:h.png -mm.pngwutil: Zlib:h.zlib -mm.pngwutil: Zlib:h.zconf -mm.pngwutil: LibPng:h.pngconf -mm.pngwutil: MemCheck:ANSI.h.stdio -o.png: c.png -o.png: h.png -o.png: Zlib:h.zlib -o.png: Zlib:h.zconf -o.png: h.pngconf -o.pngerror: c.pngerror -o.pngerror: h.png -o.pngerror: Zlib:h.zlib -o.pngerror: Zlib:h.zconf -o.pngerror: h.pngconf -o.pngrio: c.pngrio -o.pngrio: h.png -o.pngrio: Zlib:h.zlib -o.pngrio: Zlib:h.zconf -o.pngrio: h.pngconf -o.pngwio: c.pngwio -o.pngwio: h.png -o.pngwio: Zlib:h.zlib -o.pngwio: Zlib:h.zconf -o.pngwio: h.pngconf -o.pngmem: c.pngmem -o.pngmem: h.png -o.pngmem: Zlib:h.zlib -o.pngmem: Zlib:h.zconf -o.pngmem: h.pngconf -o.pngpread: c.pngpread -o.pngpread: h.png -o.pngpread: Zlib:h.zlib -o.pngpread: Zlib:h.zconf -o.pngpread: h.pngconf -o.pngset: c.pngset -o.pngset: h.png -o.pngset: Zlib:h.zlib -o.pngset: Zlib:h.zconf -o.pngset: h.pngconf -o.pngget: c.pngget -o.pngget: h.png -o.pngget: Zlib:h.zlib -o.pngget: Zlib:h.zconf -o.pngget: h.pngconf -o.pngread: c.pngread -o.pngread: h.png -o.pngread: Zlib:h.zlib -o.pngread: Zlib:h.zconf -o.pngread: h.pngconf -o.pngrtran: c.pngrtran -o.pngrtran: h.png -o.pngrtran: Zlib:h.zlib -o.pngrtran: Zlib:h.zconf -o.pngrtran: h.pngconf -o.pngrutil: c.pngrutil -o.pngrutil: h.png -o.pngrutil: Zlib:h.zlib -o.pngrutil: Zlib:h.zconf -o.pngrutil: h.pngconf -o.pngtrans: c.pngtrans -o.pngtrans: h.png -o.pngtrans: Zlib:h.zlib -o.pngtrans: Zlib:h.zconf -o.pngtrans: h.pngconf -o.pngwrite: c.pngwrite -o.pngwrite: h.png -o.pngwrite: Zlib:h.zlib -o.pngwrite: Zlib:h.zconf -o.pngwrite: h.pngconf -o.pngwtran: c.pngwtran -o.pngwtran: h.png -o.pngwtran: Zlib:h.zlib -o.pngwtran: Zlib:h.zconf -o.pngwtran: h.pngconf -o.pngwutil: c.pngwutil -o.pngwutil: h.png -o.pngwutil: Zlib:h.zlib -o.pngwutil: Zlib:h.zconf -o.pngwutil: h.pngconf diff --git a/src/png/scripts/makefile.ama b/src/png/scripts/makefile.ama deleted file mode 100644 index 366524d5c8..0000000000 --- a/src/png/scripts/makefile.ama +++ /dev/null @@ -1,42 +0,0 @@ -# Commodore Amiga Makefile -# makefile for libpng and SAS C V6.55 compiler -# Copyright (C) 1995 Wolf Faust - -#compiler -CC=sc -#compiler flags -# WARNING: a bug in V6.51 causes bad code with OPTGO -# So use V6.55 or set NOOPTGO!!!!!!!!! -CFLAGS= NOSTKCHK PARMS=REG OPTIMIZE OPTGO OPTPEEP OPTINLOCAL OPTINL\ - OPTLOOP OPTRDEP=4 OPTDEP=4 OPTCOMP=4 DEFINE=PNG_INTERNAL -#linker flags -LDFLAGS= SD ND BATCH -#link libs -LDLIBS= libpng.lib libgz.lib LIB:scm.lib LIB:sc.lib Lib:amiga.lib -# linker -LN= slink -# file deletion command -RM= delete quiet -# library (.lib) file creation command -AR= oml -# make directory command -MKDIR= makedir - -OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o pngpread.o \ -pngread.o pngerror.o pngwrite.o pngrtran.o pngwtran.o pngrio.o pngwio.o pngmem.o - -all: libpng.lib pngtest - -libpng.lib: $(OBJS) --$(RM) libpng.lib -$(AR) libpng.lib r $(OBJS) - -pngtest: pngtest.o libpng.lib -$(LN) > pngerrs - -# variables -OBJS1 = png$(O) pngset$(O) pngget$(O) pngrutil$(O) pngtrans$(O) pngwutil$(O) -OBJS2 = pngmem$(O) pngpread$(O) pngread$(O) pngerror$(O) pngwrite$(O) -OBJS3 = pngrtran$(O) pngwtran$(O) pngrio$(O) pngwio$(O) - -all: libpng.lib - -png$(O): png.h pngconf.h - $(CC) -c $(CFLAGS) $*.c $(ERRFILE) - -pngset$(O): png.h pngconf.h - $(CC) -c $(CFLAGS) $*.c $(ERRFILE) - -pngget$(O): png.h pngconf.h - $(CC) -c $(CFLAGS) $*.c $(ERRFILE) - -pngread$(O): png.h pngconf.h - $(CC) -c $(CFLAGS) $*.c $(ERRFILE) - -pngpread$(O): png.h pngconf.h - $(CC) -c $(CFLAGS) $*.c $(ERRFILE) - -pngrtran$(O): png.h pngconf.h - $(CC) -c $(CFLAGS) $*.c $(ERRFILE) - -pngrutil$(O): png.h pngconf.h - $(CC) -c $(CFLAGS) $*.c $(ERRFILE) - -pngerror$(O): png.h pngconf.h - $(CC) -c $(CFLAGS) $*.c $(ERRFILE) - -pngmem$(O): png.h pngconf.h - $(CC) -c $(CFLAGS) $*.c $(ERRFILE) - -pngrio$(O): png.h pngconf.h - $(CC) -c $(CFLAGS) $*.c $(ERRFILE) - -pngwio$(O): png.h pngconf.h - $(CC) -c $(CFLAGS) $*.c $(ERRFILE) - -pngtest$(O): png.h pngconf.h - $(CC) -c $(CFLAGS) $*.c $(ERRFILE) - -pngtrans$(O): png.h pngconf.h - $(CC) -c $(CFLAGS) $*.c $(ERRFILE) - -pngwrite$(O): png.h pngconf.h - $(CC) -c $(CFLAGS) $*.c $(ERRFILE) - -pngwtran$(O): png.h pngconf.h - $(CC) -c $(CFLAGS) $*.c $(ERRFILE) - -pngwutil$(O): png.h pngconf.h - $(CC) -c $(CFLAGS) $*.c $(ERRFILE) - -libpng.lib: $(OBJS1) $(OBJS2) $(OBJS3) - del libpng.lib - lib libpng $(OBJS1); - lib libpng $(OBJS2); - lib libpng $(OBJS3); - -pngtest.exe: pngtest.obj libpng.lib - $(LD) $(LDFLAGS) pngtest.obj,,,libpng.lib ..\zlib\zlib.lib ; - -test: pngtest.exe - pngtest - -# End of makefile for libpng - diff --git a/src/png/scripts/makefile.os2 b/src/png/scripts/makefile.os2 deleted file mode 100644 index a3ff2dcac6..0000000000 --- a/src/png/scripts/makefile.os2 +++ /dev/null @@ -1,69 +0,0 @@ -# makefile for libpng on OS/2 with gcc -# For conditions of distribution and use, see copyright notice in png.h - -# Related files: pngos2.def - -CC=gcc -Zomf -s - -# Where the zlib library and include files are located -ZLIBLIB=../zlib -ZLIBINC=../zlib - -WARNMORE=-Wwrite-strings -Wpointer-arith -Wshadow \ - -Wmissing-declarations -Wtraditional -Wcast-align \ - -Wstrict-prototypes -Wmissing-prototypes #-Wconversion -CFLAGS=-I$(ZLIBINC) -Wall -O6 -funroll-loops -malign-loops=2 \ - -malign-functions=2 #$(WARNMORE) -g -DPNG_DEBUG=5 -LDFLAGS=-L. -L$(ZLIBLIB) -lpng -lzdll -Zcrtdll -AR=emxomfar - -PNGLIB=png.lib -IMPLIB=emximp -SHAREDLIB=png.dll -SHAREDLIBIMP=pngdll.lib - -OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o \ - pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \ - pngwtran.o pngmem.o pngerror.o pngpread.o - -.SUFFIXES: .c .o - -all: $(PNGLIB) $(SHAREDLIB) $(SHAREDLIBIMP) - -$(PNGLIB): $(OBJS) - $(AR) rc $@ $(OBJS) - -$(SHAREDLIB): $(OBJS) pngos2.def - $(CC) $(LDFLAGS) -Zdll -o $@ $^ - -$(SHAREDLIBIMP): pngos2.def - $(IMPLIB) -o $@ $^ - -pngtest.exe: pngtest.o png.dll pngdll.lib - $(CC) -o $@ $(CFLAGS) $< $(LDFLAGS) - -test: pngtest.exe - ./pngtest.exe - -clean: - rm -f *.o $(PNGLIB) png.dll pngdll.lib pngtest.exe pngout.png - -# DO NOT DELETE THIS LINE -- make depend depends on it. - -png.o png.pic.o: png.h pngconf.h -pngerror.o pngerror.pic.o: png.h pngconf.h -pngrio.o pngrio.pic.o: png.h pngconf.h -pngwio.o pngwio.pic.o: png.h pngconf.h -pngmem.o pngmem.pic.o: png.h pngconf.h -pngset.o pngset.pic.o: png.h pngconf.h -pngget.o pngget.pic.o: png.h pngconf.h -pngread.o pngread.pic.o: png.h pngconf.h -pngrtran.o pngrtran.pic.o: png.h pngconf.h -pngrutil.o pngrutil.pic.o: png.h pngconf.h -pngtrans.o pngtrans.pic.o: png.h pngconf.h -pngwrite.o pngwrite.pic.o: png.h pngconf.h -pngwtran.o pngwtran.pic.o: png.h pngconf.h -pngwutil.o pngwutil.pic.o: png.h pngconf.h -pngpread.o pngpread.pic.o: png.h pngconf.h - -pngtest.o: png.h pngconf.h diff --git a/src/png/scripts/makefile.s2x b/src/png/scripts/makefile.s2x deleted file mode 100644 index 163f363826..0000000000 --- a/src/png/scripts/makefile.s2x +++ /dev/null @@ -1,104 +0,0 @@ -# makefile for libpng on Solaris 2.x with gcc -# Contributed by William L. Sebok, based on makefile.lnx -# Copyright (C) 1996, 1997 Andreas Dilger -# Copyright (C) 1998 Greg Roelofs -# For conditions of distribution and use, see copyright notice in png.h - -CC=gcc - -# Where the zlib library and include files are located -# Changing these to ../zlib poses a security risk. If you want -# to have zlib in an adjacent directory, specify the full path instead of "..". -#ZLIBLIB=../zlib -#ZLIBINC=../zlib - -ZLIBLIB=/usr/local/lib -ZLIBINC=/usr/local/include - - -WARNMORE=-Wwrite-strings -Wpointer-arith -Wshadow \ - -Wmissing-declarations -Wtraditional -Wcast-align \ - -Wstrict-prototypes -Wmissing-prototypes #-Wconversion -CFLAGS=-I$(ZLIBINC) -Wall -O3 \ - #$(WARNMORE) -g -DPNG_DEBUG=5 -LDFLAGS=-L. -R. -L$(ZLIBLIB) -R$(ZLIBLIB) -lpng -lz -lm - -#RANLIB=ranlib -RANLIB=echo - -# read libpng.txt or png.h to see why PNGMAJ is 2. You should not -# have to change it. -PNGMAJ = 2 -PNGMIN = 1.0 -PNGVER = $(PNGMAJ).$(PNGMIN) - -# where make install puts libpng.a, libpng.so*, and png.h -prefix=/usr/local -INCPATH=$(prefix)/include -LIBPATH=$(prefix)/lib - -OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o \ - pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \ - pngwtran.o pngmem.o pngerror.o pngpread.o - -OBJSDLL = $(OBJS:.o=.pic.o) - -.SUFFIXES: .c .o .pic.o - -.c.pic.o: - $(CC) -c $(CFLAGS) -fPIC -o $@ $*.c - -all: libpng.a libpng.so pngtest - -libpng.a: $(OBJS) - ar rc $@ $(OBJS) - $(RANLIB) $@ - -libpng.so: libpng.so.$(PNGMAJ) - ln -sf libpng.so.$(PNGMAJ) libpng.so - -libpng.so.$(PNGMAJ): libpng.so.$(PNGVER) - ln -sf libpng.so.$(PNGVER) libpng.so.$(PNGMAJ) - -libpng.so.$(PNGVER): $(OBJSDLL) - $(LD) -G -L$(ZLIBLIB) -R$(ZLIBLIB) -h libpng.so.$(PNGMAJ) \ - -o libpng.so.$(PNGVER) $(OBJSDLL) -lz - -pngtest: pngtest.o libpng.so - $(CC) -o pngtest $(CFLAGS) pngtest.o $(LDFLAGS) - -test: pngtest - ./pngtest - -install: libpng.a libpng.so.$(PNGVER) - -@mkdir $(INCPATH) $(LIBPATH) - cp png.h pngconf.h $(INCPATH) - chmod 644 $(INCPATH)/png.h $(INCPATH)/pngconf.h - cp libpng.a libpng.so.$(PNGVER) $(LIBPATH) - chmod 755 $(LIBPATH)/libpng.so.$(PNGVER) - -@/bin/rm -f $(LIBPATH)/libpng.so.$(PNGMAJ) $(LIBPATH)/libpng.so - (cd $(LIBPATH); ln -sf libpng.so.$(PNGVER) libpng.so.$(PNGMAJ); \ - ln -sf libpng.so.$(PNGMAJ) libpng.so) - -clean: - /bin/rm -f *.o libpng.a libpng.so* pngtest pngout.png - -# DO NOT DELETE THIS LINE -- make depend depends on it. - -png.o png.pic.o: png.h pngconf.h -pngerror.o pngerror.pic.o: png.h pngconf.h -pngrio.o pngrio.pic.o: png.h pngconf.h -pngwio.o pngwio.pic.o: png.h pngconf.h -pngmem.o pngmem.pic.o: png.h pngconf.h -pngset.o pngset.pic.o: png.h pngconf.h -pngget.o pngget.pic.o: png.h pngconf.h -pngread.o pngread.pic.o: png.h pngconf.h -pngrtran.o pngrtran.pic.o: png.h pngconf.h -pngrutil.o pngrutil.pic.o: png.h pngconf.h -pngtrans.o pngtrans.pic.o: png.h pngconf.h -pngwrite.o pngwrite.pic.o: png.h pngconf.h -pngwtran.o pngwtran.pic.o: png.h pngconf.h -pngwutil.o pngwutil.pic.o: png.h pngconf.h -pngpread.o pngpread.pic.o: png.h pngconf.h - -pngtest.o: png.h pngconf.h diff --git a/src/png/scripts/makefile.sgi b/src/png/scripts/makefile.sgi deleted file mode 100644 index 965cf91fd0..0000000000 --- a/src/png/scripts/makefile.sgi +++ /dev/null @@ -1,69 +0,0 @@ -# makefile for libpng -# Copyright (C) 1995 Guy Eric Schalnat, Group 42, Inc. -# For conditions of distribution and use, see copyright notice in png.h - -# Where the zlib library and include files are located -#ZLIBLIB=/usr/local/lib -#ZLIBINC=/usr/local/include -ZLIBLIB=../zlib -ZLIBINC=../zlib - -CC=cc - -CFLAGS=-I$(ZLIBINC) -O -fullwarn # -g -DPNG_DEBUG=1 -LDFLAGS=-L. -L$(ZLIBLIB) -lpng -lz -lm - -RANLIB=echo -#RANLIB=ranlib - -# where make install puts libpng.a and png.h -prefix=/usr/local - -OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o \ - pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \ - pngwtran.o pngmem.o pngerror.o pngpread.o - -all: libpng.a pngtest - -libpng.a: $(OBJS) - ar rc $@ $(OBJS) - $(RANLIB) $@ - -pngtest: pngtest.o libpng.a - $(CC) -o pngtest $(CFLAGS) pngtest.o $(LDFLAGS) - -test: pngtest - ./pngtest - -install: libpng.a - -@mkdir $(prefix)/include - -@mkdir $(prefix)/lib - cp png.h $(prefix)/include - cp pngconf.h $(prefix)/include - chmod 644 $(prefix)/include/png.h - chmod 644 $(prefix)/include/pngconf.h - cp libpng.a $(prefix)/lib - chmod 644 $(prefix)/lib/libpng.a - -clean: - rm -f *.o libpng.a pngtest pngout.png - -# DO NOT DELETE THIS LINE -- make depend depends on it. - -png.o: png.h pngconf.h -pngerror.o: png.h pngconf.h -pngrio.o: png.h pngconf.h -pngwio.o: png.h pngconf.h -pngmem.o: png.h pngconf.h -pngset.o: png.h pngconf.h -pngget.o: png.h pngconf.h -pngread.o: png.h pngconf.h -pngrtran.o: png.h pngconf.h -pngrutil.o: png.h pngconf.h -pngtest.o: png.h pngconf.h -pngtrans.o: png.h pngconf.h -pngwrite.o: png.h pngconf.h -pngwtran.o: png.h pngconf.h -pngwutil.o: png.h pngconf.h -pngpread.o: png.h pngconf.h - diff --git a/src/png/scripts/makefile.std b/src/png/scripts/makefile.std deleted file mode 100644 index 7cc605990a..0000000000 --- a/src/png/scripts/makefile.std +++ /dev/null @@ -1,68 +0,0 @@ -# makefile for libpng -# Copyright (C) 1995 Guy Eric Schalnat, Group 42, Inc. -# For conditions of distribution and use, see copyright notice in png.h - -# Where the zlib library and include files are located -#ZLIBLIB=/usr/local/lib -#ZLIBINC=/usr/local/include -ZLIBLIB=../zlib -ZLIBINC=../zlib - -CC=cc -CFLAGS=-I$(ZLIBINC) -O # -g -DPNG_DEBUG=1 -LDFLAGS=-L. -L$(ZLIBLIB) -lpng -lz -lm - -#RANLIB=echo -RANLIB=ranlib - -# where make install puts libpng.a and png.h -prefix=/usr/local - -OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o \ - pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \ - pngwtran.o pngmem.o pngerror.o pngpread.o - -all: libpng.a pngtest - -libpng.a: $(OBJS) - ar rc $@ $(OBJS) - $(RANLIB) $@ - -pngtest: pngtest.o libpng.a - $(CC) -o pngtest $(CFLAGS) pngtest.o $(LDFLAGS) - -test: pngtest - ./pngtest - -install: libpng.a - -@mkdir $(prefix)/include - -@mkdir $(prefix)/lib - cp png.h $(prefix)/include - cp pngconf.h $(prefix)/include - chmod 644 $(prefix)/include/png.h - chmod 644 $(prefix)/include/pngconf.h - cp libpng.a $(prefix)/lib - chmod 644 $(prefix)/lib/libpng.a - -clean: - rm -f *.o libpng.a pngtest pngout.png - -# DO NOT DELETE THIS LINE -- make depend depends on it. - -png.o: png.h pngconf.h -pngerror.o: png.h pngconf.h -pngrio.o: png.h pngconf.h -pngwio.o: png.h pngconf.h -pngmem.o: png.h pngconf.h -pngset.o: png.h pngconf.h -pngget.o: png.h pngconf.h -pngread.o: png.h pngconf.h -pngrtran.o: png.h pngconf.h -pngrutil.o: png.h pngconf.h -pngtest.o: png.h pngconf.h -pngtrans.o: png.h pngconf.h -pngwrite.o: png.h pngconf.h -pngwtran.o: png.h pngconf.h -pngwutil.o: png.h pngconf.h -pngpread.o: png.h pngconf.h - diff --git a/src/png/scripts/makefile.sun b/src/png/scripts/makefile.sun deleted file mode 100644 index 975ca17232..0000000000 --- a/src/png/scripts/makefile.sun +++ /dev/null @@ -1,72 +0,0 @@ -# makefile for libpng -# Copyright (C) 1995 Guy Eric Schalnat, Group 42, Inc. -# For conditions of distribution and use, see copyright notice in png.h - -# Where the zlib library and include files are located -#ZLIBLIB=/usr/local/lib -#ZLIBINC=/usr/local/include -ZLIBLIB=../zlib -ZLIBINC=../zlib - - -WARNMORE=-Wwrite-strings -Wpointer-arith -Wshadow -Wconversion \ - -Wmissing-declarations -Wtraditional -Wcast-align \ - -Wstrict-prototypes -Wmissing-prototypes -CC=gcc -CFLAGS=-I$(ZLIBINC) -O $(WARNMORE) -DPNG_DEBUG=4 -LDFLAGS=-L. -L$(ZLIBLIB) -lpng -lz -lm - -RANLIB=ranlib -#RANLIB=echo - -# where make install puts libpng.a and png.h -prefix=/usr/local - -OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o \ - pngread.o pngrio.o pngwio.o pngwrite.o pngrtran.o \ - pngwtran.o pngmem.o pngerror.o pngpread.o - -all: libpng.a pngtest - -libpng.a: $(OBJS) - ar rc $@ $(OBJS) - $(RANLIB) $@ - -pngtest: pngtest.o libpng.a - $(CC) -o pngtest $(CFLAGS) pngtest.o $(LDFLAGS) - -test: pngtest - ./pngtest - -install: libpng.a - -@mkdir $(prefix)/include - -@mkdir $(prefix)/lib - cp png.h $(prefix)/include - cp pngconf.h $(prefix)/include - chmod 644 $(prefix)/include/png.h - chmod 644 $(prefix)/include/pngconf.h - cp libpng.a $(prefix)/lib - chmod 644 $(prefix)/lib/libpng.a - -clean: - rm -f *.o libpng.a pngtest pngout.png - -# DO NOT DELETE THIS LINE -- make depend depends on it. - -png.o: png.h pngconf.h -pngerror.o: png.h pngconf.h -pngrio.o: png.h pngconf.h -pngwio.o: png.h pngconf.h -pngmem.o: png.h pngconf.h -pngset.o: png.h pngconf.h -pngget.o: png.h pngconf.h -pngread.o: png.h pngconf.h -pngrtran.o: png.h pngconf.h -pngrutil.o: png.h pngconf.h -pngtest.o: png.h pngconf.h -pngtrans.o: png.h pngconf.h -pngwrite.o: png.h pngconf.h -pngwtran.o: png.h pngconf.h -pngwutil.o: png.h pngconf.h -pngpread.o: png.h pngconf.h - diff --git a/src/png/scripts/makefile.tc3 b/src/png/scripts/makefile.tc3 deleted file mode 100644 index 6f8f36667f..0000000000 --- a/src/png/scripts/makefile.tc3 +++ /dev/null @@ -1,82 +0,0 @@ -# Makefile for libpng -# TurboC++ 3.0 (Note: All modules are compiled in C mode) - -# To use, do "make -fmakefile.tc3" - -# ------------- Turbo C++ 3.0 ------------- -MODEL=-ml -CFLAGS=-O2 -Z $(MODEL) -I..\zlib -CC=tcc -LD=tcc -LIB=tlib -LDFLAGS=$(MODEL) -L..\zlib -O=.obj -E=.exe - -# variables -OBJS1 = png$(O) pngset$(O) pngget$(O) pngrutil$(O) pngtrans$(O) pngwutil$(O) -OBJS2 = pngmem$(O) pngpread$(O) pngread$(O) pngerror$(O) pngwrite$(O) -OBJS3 = pngrtran$(O) pngwtran$(O) pngrio$(O) pngwio$(O) -OBJSL1 = +png$(O) +pngset$(O) +pngget$(O) +pngrutil$(O) +pngtrans$(O) -OBJSL2 = +pngwutil$(O) +pngmem$(O) +pngpread$(O) +pngread$(O) +pngerror$(O) -OBJSL3 = +pngwrite$(O) +pngrtran$(O) +pngwtran$(O) +pngrio$(O) +pngwio$(O) - -all: libpng.lib pngtest.exe - -png$(O): png.h pngconf.h - $(CC) -c $(CFLAGS) $*.c - -pngset$(O): png.h pngconf.h - $(CC) -c $(CFLAGS) $*.c - -pngget$(O): png.h pngconf.h - $(CC) -c $(CFLAGS) $*.c - -pngread$(O): png.h pngconf.h - $(CC) -c $(CFLAGS) $*.c - -pngpread$(O): png.h pngconf.h - $(CC) -c $(CFLAGS) $*.c - -pngrtran$(O): png.h pngconf.h - $(CC) -c $(CFLAGS) $*.c - -pngrutil$(O): png.h pngconf.h - $(CC) -c $(CFLAGS) $*.c - -pngerror$(O): png.h pngconf.h - $(CC) -c $(CFLAGS) $*.c - -pngmem$(O): png.h pngconf.h - $(CC) -c $(CFLAGS) $*.c - -pngrio$(O): png.h pngconf.h - $(CC) -c $(CFLAGS) $*.c - -pngwio$(O): png.h pngconf.h - $(CC) -c $(CFLAGS) $*.c - -pngtest$(O): png.h pngconf.h - $(CC) -c $(CFLAGS) $*.c - -pngtrans$(O): png.h pngconf.h - $(CC) -c $(CFLAGS) $*.c - -pngwrite$(O): png.h pngconf.h - $(CC) -c $(CFLAGS) $*.c - -pngwtran$(O): png.h pngconf.h - $(CC) -c $(CFLAGS) $*.c - -pngwutil$(O): png.h pngconf.h - $(CC) -c $(CFLAGS) $*.c - -libpng.lib: $(OBJS1) $(OBJS2) $(OBJS3) - $(LIB) libpng +$(OBJSL1) - $(LIB) libpng +$(OBJSL2) - $(LIB) libpng +$(OBJSL3) - -pngtest$(E): pngtest$(O) libpng.lib - $(CC) $(LDFLAGS) pngtest.obj libpng.lib zlib.lib - -# End of makefile for libpng diff --git a/src/png/scripts/makefile.wat b/src/png/scripts/makefile.wat deleted file mode 100644 index a715acbcdc..0000000000 --- a/src/png/scripts/makefile.wat +++ /dev/null @@ -1,88 +0,0 @@ -# Makefile for libpng -# Watcom 10a and later 32-bit protected mode flat memory model - -# Adapted by Pawel Mrochen, based on makefile.msc -# For conditions of distribution and use, see copyright notice in png.h -# Assumes that zlib.lib, zconf.h, and zlib.h have been copied to ..\zlib - -# To use, do "wmake -f makefile.wat" - -# ------------- Watcom 10a and later ------------- -MODEL=-mf -CFLAGS= $(MODEL) -fpi87 -fp5 -5r -oaeilmnrt -s -zp4 -i=..\zlib -CC=wcc386 -LD=wcl386 -LIB=wlib -b -c -LDFLAGS= -O=.obj - -#uncomment next to put error messages in a file -#ERRFILE= >> pngerrs - -# variables -OBJS1 = png$(O) pngset$(O) pngget$(O) pngrutil$(O) pngtrans$(O) pngwutil$(O) -OBJS2 = pngmem$(O) pngpread$(O) pngread$(O) pngerror$(O) pngwrite$(O) -OBJS3 = pngrtran$(O) pngwtran$(O) pngrio$(O) pngwio$(O) - -all: test - -png$(O): png.h pngconf.h - $(CC) $(CFLAGS) $*.c $(ERRFILE) - -pngset$(O): png.h pngconf.h - $(CC) $(CFLAGS) $*.c $(ERRFILE) - -pngget$(O): png.h pngconf.h - $(CC) $(CFLAGS) $*.c $(ERRFILE) - -pngread$(O): png.h pngconf.h - $(CC) $(CFLAGS) $*.c $(ERRFILE) - -pngpread$(O): png.h pngconf.h - $(CC) $(CFLAGS) $*.c $(ERRFILE) - -pngrtran$(O): png.h pngconf.h - $(CC) $(CFLAGS) $*.c $(ERRFILE) - -pngrutil$(O): png.h pngconf.h - $(CC) $(CFLAGS) $*.c $(ERRFILE) - -pngerror$(O): png.h pngconf.h - $(CC) $(CFLAGS) $*.c $(ERRFILE) - -pngmem$(O): png.h pngconf.h - $(CC) $(CFLAGS) $*.c $(ERRFILE) - -pngrio$(O): png.h pngconf.h - $(CC) $(CFLAGS) $*.c $(ERRFILE) - -pngwio$(O): png.h pngconf.h - $(CC) $(CFLAGS) $*.c $(ERRFILE) - -pngtest$(O): png.h pngconf.h - $(CC) $(CFLAGS) $*.c $(ERRFILE) - -pngtrans$(O): png.h pngconf.h - $(CC) $(CFLAGS) $*.c $(ERRFILE) - -pngwrite$(O): png.h pngconf.h - $(CC) $(CFLAGS) $*.c $(ERRFILE) - -pngwtran$(O): png.h pngconf.h - $(CC) $(CFLAGS) $*.c $(ERRFILE) - -pngwutil$(O): png.h pngconf.h - $(CC) $(CFLAGS) $*.c $(ERRFILE) - -libpng.lib: $(OBJS1) $(OBJS2) $(OBJS3) - $(LIB) -n libpng.lib +$(OBJS1) - $(LIB) libpng.lib +$(OBJS2) - $(LIB) libpng.lib +$(OBJS3) - -pngtest.exe: pngtest.obj libpng.lib - $(LD) $(LDFLAGS) pngtest.obj libpng.lib ..\zlib\zlib.lib - -test: pngtest.exe - pngtest - -# End of makefile for libpng diff --git a/src/png/scripts/makevms.com b/src/png/scripts/makevms.com deleted file mode 100644 index 15f305a606..0000000000 --- a/src/png/scripts/makevms.com +++ /dev/null @@ -1,125 +0,0 @@ -$! make libpng under VMS -$! -$! -$! Look for the compiler used -$! -$ zlibsrc = "[-.zlib]" -$ ccopt="/include=''zlibsrc'" -$ if f$getsyi("HW_MODEL").ge.1024 -$ then -$ ccopt = "/prefix=all"+ccopt -$ comp = "__decc__=1" -$ if f$trnlnm("SYS").eqs."" then define sys sys$library: -$ else -$ if f$search("SYS$SYSTEM:DECC$COMPILER.EXE").eqs."" -$ then -$ if f$trnlnm("SYS").eqs."" then define sys sys$library: -$ if f$search("SYS$SYSTEM:VAXC.EXE").eqs."" -$ then -$ comp = "__gcc__=1" -$ CC :== GCC -$ else -$ comp = "__vaxc__=1" -$ endif -$ else -$ if f$trnlnm("SYS").eqs."" then define sys decc$library_include: -$ ccopt = "/decc/prefix=all"+ccopt -$ comp = "__decc__=1" -$ endif -$ endif -$! -$! Build the thing plain or with mms -$! -$ write sys$output "Compiling Libpng sources ..." -$ if f$search("SYS$SYSTEM:MMS.EXE").eqs."" -$ then -$ dele pngtest.obj;* -$ CALL MAKE png.OBJ "cc ''CCOPT' png" - - png.c png.h pngconf.h -$ CALL MAKE pngpread.OBJ "cc ''CCOPT' pngpread" - - pngpread.c png.h pngconf.h -$ CALL MAKE pngset.OBJ "cc ''CCOPT' pngset" - - pngset.c png.h pngconf.h -$ CALL MAKE pngget.OBJ "cc ''CCOPT' pngget" - - pngget.c png.h pngconf.h -$ CALL MAKE pngread.OBJ "cc ''CCOPT' pngread" - - pngread.c png.h pngconf.h -$ CALL MAKE pngpread.OBJ "cc ''CCOPT' pngpread" - - pngpread.c png.h pngconf.h -$ CALL MAKE pngrtran.OBJ "cc ''CCOPT' pngrtran" - - pngrtran.c png.h pngconf.h -$ CALL MAKE pngrutil.OBJ "cc ''CCOPT' pngrutil" - - pngrutil.c png.h pngconf.h -$ CALL MAKE pngerror.OBJ "cc ''CCOPT' pngerror" - - pngerror.c png.h pngconf.h -$ CALL MAKE pngmem.OBJ "cc ''CCOPT' pngmem" - - pngmem.c png.h pngconf.h -$ CALL MAKE pngrio.OBJ "cc ''CCOPT' pngrio" - - pngrio.c png.h pngconf.h -$ CALL MAKE pngwio.OBJ "cc ''CCOPT' pngwio" - - pngwio.c png.h pngconf.h -$ CALL MAKE pngtrans.OBJ "cc ''CCOPT' pngtrans" - - pngtrans.c png.h pngconf.h -$ CALL MAKE pngwrite.OBJ "cc ''CCOPT' pngwrite" - - pngwrite.c png.h pngconf.h -$ CALL MAKE pngwtran.OBJ "cc ''CCOPT' pngwtran" - - pngwtran.c png.h pngconf.h -$ CALL MAKE pngwutil.OBJ "cc ''CCOPT' pngwutil" - - pngwutil.c png.h pngconf.h -$ write sys$output "Building Libpng ..." -$ CALL MAKE libpng.OLB "lib/crea libpng.olb *.obj" *.OBJ -$ write sys$output "Building pngtest..." -$ CALL MAKE pngtest.OBJ "cc ''CCOPT' pngtest" - - pngtest.c png.h pngconf.h -$ call make pngtest.exe - - "LINK pngtest,libpng.olb/lib,''zlibsrc'libgz.olb/lib" - - pngtest.obj libpng.olb -$ write sys$output "Testing Libpng..." -$ run pngtest -$ else -$ mms/macro=('comp',zlibsrc='zlibsrc') -$ endif -$ write sys$output "Libpng build completed" -$ exit -$! -$! -$MAKE: SUBROUTINE !SUBROUTINE TO CHECK DEPENDENCIES -$ V = 'F$Verify(0) -$! P1 = What we are trying to make -$! P2 = Command to make it -$! P3 - P8 What it depends on -$ -$ If F$Search(P1) .Eqs. "" Then Goto Makeit -$ Time = F$CvTime(F$File(P1,"RDT")) -$arg=3 -$Loop: -$ Argument = P'arg -$ If Argument .Eqs. "" Then Goto Exit -$ El=0 -$Loop2: -$ File = F$Element(El," ",Argument) -$ If File .Eqs. " " Then Goto Endl -$ AFile = "" -$Loop3: -$ OFile = AFile -$ AFile = F$Search(File) -$ If AFile .Eqs. "" .Or. AFile .Eqs. OFile Then Goto NextEl -$ If F$CvTime(F$File(AFile,"RDT")) .Ges. Time Then Goto Makeit -$ Goto Loop3 -$NextEL: -$ El = El + 1 -$ Goto Loop2 -$EndL: -$ arg=arg+1 -$ If arg .Le. 8 Then Goto Loop -$ Goto Exit -$ -$Makeit: -$ VV=F$VERIFY(0) -$ write sys$output P2 -$ 'P2 -$ VV='F$Verify(VV) -$Exit: -$ If V Then Set Verify -$ENDSUBROUTINE - diff --git a/src/png/scripts/pngos2.def b/src/png/scripts/pngos2.def deleted file mode 100644 index ba2d3e3d38..0000000000 --- a/src/png/scripts/pngos2.def +++ /dev/null @@ -1,286 +0,0 @@ -;---------------------------------------- -; PNGLIB module definition file for OS/2 -;---------------------------------------- - -LIBRARY PNG -DESCRIPTION "PNG image compression library for OS/2" -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE - -EXPORTS - png_set_sig_bytes - png_sig_cmp - png_check_sig - png_create_read_struct - png_create_write_struct - png_write_chunk - png_write_chunk_start - png_write_chunk_data - png_write_chunk_end - png_create_info_struct - png_info_init - png_write_info - png_read_info - png_convert_to_rfc1123 - png_convert_from_struct_tm - png_convert_from_time_t - png_set_expand - png_set_bgr - png_set_gray_to_rgb -; png_set_rgb_to_gray - png_build_grayscale_palette - png_set_strip_alpha - png_set_swap_alpha - png_set_invert_alpha - png_set_filler - png_set_swap - png_set_packing - png_set_packswap - png_set_shift - png_set_interlace_handling - png_set_invert_mono - png_set_background - png_set_strip_16 - png_set_dither - png_set_gamma - png_set_flush - png_write_flush - png_start_read_image - png_read_update_info - png_read_rows - png_read_row - png_read_image - png_write_row - png_write_rows - png_write_image - png_write_end - png_read_end - png_destroy_info_struct - png_destroy_read_struct - png_read_destroy - png_destroy_write_struct -; png_write_destroy_info - png_write_destroy - png_set_crc_action - png_set_filter - png_set_filter_heuristics - png_set_compression_level - png_set_compression_mem_level - png_set_compression_strategy - png_set_compression_window_bits - png_set_compression_method - png_init_io - png_set_error_fn - png_get_error_ptr - png_set_write_fn - png_set_read_fn - png_set_write_status_fn - png_set_read_status_fn - png_get_io_ptr - png_set_progressive_read_fn - png_set_read_status_fn - png_set_read_user_transform_fn - png_set_write_status_fn - png_set_write_user_transform_fn - png_get_progressive_ptr - png_process_data - png_progressive_combine_row - png_malloc - png_free - png_memcpy_check - png_memset_check -; png_debug_malloc -; png_debug_free -; png_far_to_near - png_error - png_chunk_error - png_warning - png_chunk_warning - png_get_valid - png_get_rowbytes - png_get_channels - png_get_image_width - png_get_image_height - png_get_bit_depth - png_get_color_type - png_get_filter_type - png_get_interlace_type - png_get_compression_type - png_get_pixels_per_meter - png_get_pixel_aspect_ratio - png_get_x_offset_pixels - png_get_y_offset_pixels - png_get_x_offset_microns - png_get_y_offset_microns - png_get_signature - png_get_bKGD - png_set_bKGD - png_get_cHRM - png_set_cHRM - png_get_gAMA - png_set_gAMA - png_get_hIST - png_set_hIST - png_get_IHDR - png_set_IHDR - png_get_oFFs - png_set_oFFs - png_get_pCAL - png_set_pCAL - png_get_pHYs - png_set_pHYs - png_get_PLTE - png_set_PLTE - png_get_sBIT - png_set_sBIT - png_get_sRGB - png_set_sRGB - png_set_sRGB_gAMA_and_cHRM - png_get_text - png_set_text - png_get_tIME - png_set_tIME - png_get_tRNS - png_set_tRNS - - png_create_struct - png_destroy_struct - png_info_destroy - png_zalloc - png_zfree - png_reset_crc - png_write_data - png_read_data - png_crc_read - png_crc_finish - png_crc_error - png_calculate_crc - png_flush - png_save_uint_32 - png_save_int_32 - png_save_uint_16 - png_write_sig - png_write_IHDR - png_write_PLTE - png_write_IDAT - png_write_IEND - png_write_gAMA - png_write_sBIT - png_write_cHRM - png_write_sRGB - png_write_tRNS - png_write_bKGD - png_write_hIST - png_check_keyword - png_write_tEXt - png_write_zTXt - png_write_oFFs - png_write_pCAL - png_write_pHYs - png_write_tIME - png_write_finish_row - png_write_start_row - png_build_gamma_table - png_combine_row - png_do_read_interlace - png_do_write_interlace - png_read_filter_row - png_write_find_filter - png_write_filtered_row - png_read_finish_row - png_read_start_row - png_read_transform_info - png_do_read_filler - png_do_read_swap_alpha - png_do_write_swap_alpha - png_do_read_invert_alpha - png_do_write_invert_alpha - png_do_strip_filler - png_do_swap - png_do_packswap -; png_do_rgb_to_gray - png_do_gray_to_rgb - png_do_unpack - png_do_unshift - png_do_invert - png_do_chop - png_do_dither -; png_correct_palette - png_do_bgr - png_do_pack - png_do_shift - png_do_background - png_do_gamma - png_do_expand_palette - png_do_expand - png_handle_IHDR - png_handle_PLTE - png_handle_IEND - png_handle_gAMA - png_handle_sBIT - png_handle_cHRM - png_handle_sRGB - png_handle_tRNS - png_handle_bKGD - png_handle_hIST - png_handle_oFFs - png_handle_pCAL - png_handle_pHYs - png_handle_tIME - png_handle_tEXt - png_handle_zTXt - png_handle_unknown - png_check_chunk_name - png_do_read_transformations - png_do_write_transformations - png_init_read_transformations - png_push_read_chunk - png_push_read_sig -; png_push_check_crc - png_push_crc_skip - png_push_crc_finish - png_push_fill_buffer - png_push_save_buffer - png_push_restore_buffer - png_push_read_IDAT - png_process_IDAT_data - png_push_process_row - png_push_handle_unknown - png_push_have_info - png_push_have_end - png_push_have_row -; png_push_read_end - png_process_some_data - png_read_push_finish_row - png_push_handle_tEXt - png_push_read_tEXt - png_push_handle_zTXt - png_push_read_zTXt - - png_libpng_ver - png_pass_start - png_pass_inc - png_pass_ystart - png_pass_yinc - png_pass_mask - png_pass_dsp_mask -; png_pass_width -; png_pass_height - - png_IHDR - png_IDAT - png_IEND - png_PLTE - png_bKGD - png_cHRM - png_gAMA - png_hIST - png_oFFs - png_pCAL - png_pHYs - png_sBIT - png_sRGB - png_tEXt - png_tIME - png_tRNS - png_zTXt diff --git a/src/png/scripts/smakefile.ppc b/src/png/scripts/smakefile.ppc deleted file mode 100644 index fa3cad44b1..0000000000 --- a/src/png/scripts/smakefile.ppc +++ /dev/null @@ -1,29 +0,0 @@ -# Amiga powerUP (TM) Makefile -# makefile for libpng and SAS C V6.58/7.00 PPC compiler -# Copyright (C) 1998 by Andreas R. Kleinert - -CC = scppc -CFLAGS = NOSTKCHK NOSINT OPTIMIZE OPTGO OPTPEEP OPTINLOCAL OPTINL IDIR /zlib \ - OPTLOOP OPTRDEP=8 OPTDEP=8 OPTCOMP=8 -LIBNAME = libpng.a -AR = ppc-amigaos-ar -AR_FLAGS = cr -RANLIB = ppc-amigaos-ranlib -LDFLAGS = -r -o -LDLIBS = ../zlib/libzip.a LIB:scppc.a -LN = ppc-amigaos-ld -RM = delete quiet -MKDIR = makedir - -OBJS = png.o pngset.o pngget.o pngrutil.o pngtrans.o pngwutil.o pngread.o \ -pngerror.o pngpread.o pngwrite.o pngrtran.o pngwtran.o pngrio.o pngwio.o pngmem.o - -all: $(LIBNAME) pngtest - -$(LIBNAME): $(OBJS) - $(AR) $(AR_FLAGS) $@ $(OBJS) - $(RANLIB) $@ - -pngtest: pngtest.o $(LIBNAME) - $(LN) $(LDFLAGS) pngtest LIB:c_ppc.o pngtest.o $(LIBNAME) $(LDLIBS) \ -LIB:end.o diff --git a/src/qt.inc b/src/qt.inc deleted file mode 100644 index f25c0048b6..0000000000 --- a/src/qt.inc +++ /dev/null @@ -1,106 +0,0 @@ -# needed for unactivated -NONE = - -# define library name -LIB_TARGET=wx_qt -LIB_MAJOR=0 -LIB_MINOR=1 - -# define library sources - -LIB_CPP_SRC=\ -\ - qt/app.cpp \ - qt/bitmap.cpp \ - qt/brush.cpp \ - qt/button.cpp \ - qt/checkbox.cpp \ - qt/choice.cpp \ - qt/colour.cpp \ - qt/control.cpp \ - qt/combobox.cpp \ - qt/cursor.cpp \ - qt/data.cpp \ - qt/dc.cpp \ - qt/dcclient.cpp \ - qt/dcmemory.cpp \ - qt/dcscreen.cpp \ - qt/dnd.cpp \ - qt/dialog.cpp \ - qt/filedlg.cpp \ - qt/font.cpp \ - qt/frame.cpp \ - qt/gauge.cpp \ - qt/gdiobj.cpp \ - qt/icon.cpp \ - qt/listbox.cpp \ - qt/mdi.cpp \ - qt/menu.cpp \ - qt/notebook.cpp \ - qt/palette.cpp \ - qt/pen.cpp \ - qt/radiobox.cpp \ - qt/radiobut.cpp \ - qt/region.cpp \ - qt/scrolbar.cpp \ - qt/settings.cpp \ - qt/slider.cpp \ - qt/statbox.cpp \ - qt/stattext.cpp \ - qt/tbargtk.cpp \ - qt/textctrl.cpp \ - qt/timer.cpp \ - qt/utilsgtk.cpp \ - qt/utilsres.cpp \ - qt/window.cpp \ -\ - - -LIB_C_SRC=\ -\ - png/png.c \ - png/pngset.c \ - png/pngget.c \ - png/pngrutil.c \ - png/pngtrans.c \ - png/pngwutil.c \ - png/pngread.c \ - png/pngrio.c \ - png/pngwio.c \ - png/pngwrite.c \ - png/pngrtran.c \ - png/pngwtran.c \ - png/pngmem.c \ - png/pngerror.c \ - png/pngpread.c \ -\ - zlib/adler32.c \ - zlib/compress.c \ - zlib/crc32.c \ - zlib/gzio.c \ - zlib/uncompr.c \ - zlib/deflate.c \ - zlib/trees.c \ - zlib/zutil.c \ - zlib/inflate.c \ - zlib/infblock.c \ - zlib/inftrees.c \ - zlib/infcodes.c \ - zlib/infutil.c \ - zlib/inffast.c \ -\ - iodbc/dlf.c \ - iodbc/dlproc.c \ - iodbc/herr.c \ - iodbc/henv.c \ - iodbc/hdbc.c \ - iodbc/hstmt.c \ - iodbc/connect.c \ - iodbc/prepare.c \ - iodbc/result.c \ - iodbc/execute.c \ - iodbc/fetch.c \ - iodbc/info.c \ - iodbc/catalog.c \ - iodbc/misc.c \ - iodbc/itrace.c diff --git a/src/qt/app.cpp b/src/qt/app.cpp deleted file mode 100644 index f34b677837..0000000000 --- a/src/qt/app.cpp +++ /dev/null @@ -1,395 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: app.cpp -// Purpose: wxApp -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "app.h" -#endif - -#include "wx/frame.h" -#include "wx/app.h" -#include "wx/utils.h" -#include "wx/gdicmn.h" -#include "wx/pen.h" -#include "wx/brush.h" -#include "wx/cursor.h" -#include "wx/icon.h" -#include "wx/palette.h" -#include "wx/dc.h" -#include "wx/dialog.h" -#include "wx/msgdlg.h" -#include "wx/log.h" -#include "wx/module.h" - -#if wxUSE_WX_RESOURCES -#include "wx/resource.h" -#endif - -#include - -#if defined(__WIN95__) && !defined(__GNUWIN32__) -extern char *wxBuffer; -extern wxList wxPendingDelete; - -wxApp *wxTheApp = NULL; - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxApp, wxEvtHandler) -BEGIN_EVENT_TABLE(wxApp, wxEvtHandler) - EVT_IDLE(wxApp::OnIdle) -END_EVENT_TABLE() -#endif - -long wxApp::sm_lastMessageTime = 0; - -void wxApp::CommonInit() -{ -#ifdef __WXMSW__ - wxBuffer = new char[1500]; -#else - wxBuffer = new char[BUFSIZ + 512]; -#endif - - wxClassInfo::InitializeClasses(); - - wxTheColourDatabase = new wxColourDatabase(wxKEY_STRING); - wxTheColourDatabase->Initialize(); - wxInitializeStockObjects(); - -#if wxUSE_WX_RESOURCES - wxInitializeResourceSystem(); -#endif - - // For PostScript printing -#if wxUSE_POSTSCRIPT - wxInitializePrintSetupData(); - wxThePrintPaperDatabase = new wxPrintPaperDatabase; - wxThePrintPaperDatabase->CreateDatabase(); -#endif - - wxBitmap::InitStandardHandlers(); - - wxModule::RegisterModules(); - wxASSERT( wxModule::InitializeModules() == TRUE ); -} - -void wxApp::CommonCleanUp() -{ - wxModule::CleanUpModules(); - -#if wxUSE_WX_RESOURCES - wxCleanUpResourceSystem(); -#endif - - wxDeleteStockObjects() ; - - // Destroy all GDI lists, etc. - delete wxTheBrushList; - wxTheBrushList = NULL; - - delete wxThePenList; - wxThePenList = NULL; - - delete wxTheFontList; - wxTheFontList = NULL; - - delete wxTheBitmapList; - wxTheBitmapList = NULL; - - delete wxTheColourDatabase; - wxTheColourDatabase = NULL; - -#if wxUSE_POSTSCRIPT - wxInitializePrintSetupData(FALSE); - delete wxThePrintPaperDatabase; - wxThePrintPaperDatabase = NULL; -#endif - - wxBitmap::CleanUpHandlers(); - - delete[] wxBuffer; - wxBuffer = NULL; - - // do it as the very last thing because everything else can log messages - delete wxLog::SetActiveTarget(NULL); -} - -int wxEntry( int argc, char *argv[] ) -{ - wxClassInfo::InitializeClasses(); - -#if (WXDEBUG && wxUSE_MEMORY_TRACING) || wxUSE_DEBUG_CONTEXT - -#if !defined(_WINDLL) - streambuf* sBuf = new wxDebugStreamBuf; -#else - streambuf* sBuf = NULL; -#endif - ostream* oStr = new ostream(sBuf) ; - wxDebugContext::SetStream(oStr, sBuf); - -#endif - - if (!wxTheApp) - { - if (!wxApp::GetInitializerFunction()) - { - printf( "wxWindows error: No initializer - use IMPLEMENT_APP macro.\n" ); - return 0; - }; - - wxTheApp = (* wxApp::GetInitializerFunction()) (); - }; - - if (!wxTheApp) - { - printf( "wxWindows error: wxTheApp == NULL\n" ); - return 0; - }; - - wxTheApp->argc = argc; - wxTheApp->argv = argv; - - // TODO: your platform-specific initialization. - - wxApp::CommonInit(); - - // GUI-specific initialization, such as creating an app context. - wxTheApp->OnInitGui(); - - // Here frames insert themselves automatically - // into wxTopLevelWindows by getting created - // in OnInit(). - - if (!wxTheApp->OnInit()) return 0; - - wxTheApp->m_initialized = (wxTopLevelWindows.Number() > 0); - - int retValue = 0; - - if (wxTheApp->Initialized()) retValue = wxTheApp->OnRun(); - - wxTheApp->DeletePendingObjects(); - - wxTheApp->OnExit(); - - wxApp::CommonCleanUp(); - -#if (WXDEBUG && wxUSE_MEMORY_TRACING) || wxUSE_DEBUG_CONTEXT - // At this point we want to check if there are any memory - // blocks that aren't part of the wxDebugContext itself, - // as a special case. Then when dumping we need to ignore - // wxDebugContext, too. - if (wxDebugContext::CountObjectsLeft() > 0) - { - wxTrace("There were memory leaks.\n"); - wxDebugContext::Dump(); - wxDebugContext::PrintStatistics(); - } - wxDebugContext::SetStream(NULL, NULL); -#endif - - return retValue; -}; - -// Static member initialization -wxAppInitializerFunction wxApp::m_appInitFn = (wxAppInitializerFunction) NULL; - -wxApp::wxApp() -{ - m_topWindow = NULL; - wxTheApp = this; - m_className = ""; - m_wantDebugOutput = TRUE ; - m_appName = ""; - argc = 0; - argv = NULL; -#ifdef __WXMSW__ - m_printMode = wxPRINT_WINDOWS; -#else - m_printMode = wxPRINT_POSTSCRIPT; -#endif - m_exitOnFrameDelete = TRUE; - m_auto3D = TRUE; -} - -bool wxApp::Initialized() -{ - if (GetTopWindow()) - return TRUE; - else - return FALSE; -} - -int wxApp::MainLoop() -{ - m_keepGoing = TRUE; - -/* TODO: implement your main loop here, calling ProcessIdle in idle time. - while (m_keepGoing) - { - while (!::PeekMessage(&s_currentMsg, 0, 0, 0, PM_NOREMOVE) && - ProcessIdle()) {} - if (!DoMessage()) - m_keepGoing = FALSE; - } -*/ - - return 0; -} - -// Returns TRUE if more time is needed. -bool wxApp::ProcessIdle() -{ - wxIdleEvent event; - event.SetEventObject(this); - ProcessEvent(event); - - return event.MoreRequested(); -} - -void wxApp::ExitMainLoop() -{ - m_keepGoing = FALSE; -} - -// Is a message/event pending? -bool wxApp::Pending() -{ -/* TODO. - */ - return FALSE; -} - -// Dispatch a message. -void wxApp::Dispatch() -{ -/* TODO. - */ -} - -void wxApp::OnIdle(wxIdleEvent& event) -{ - static bool inOnIdle = FALSE; - - // Avoid recursion (via ProcessEvent default case) - if (inOnIdle) - return; - - inOnIdle = TRUE; - - // 'Garbage' collection of windows deleted with Close(). - DeletePendingObjects(); - - // flush the logged messages if any - wxLog *pLog = wxLog::GetActiveTarget(); - if ( pLog != NULL && pLog->HasPendingMessages() ) - pLog->Flush(); - - // Send OnIdle events to all windows - bool needMore = SendIdleEvents(); - - if (needMore) - event.RequestMore(TRUE); - - inOnIdle = FALSE; -} - -// Send idle event to all top-level windows -bool wxApp::SendIdleEvents() -{ - bool needMore = FALSE; - wxNode* node = wxTopLevelWindows.First(); - while (node) - { - wxWindow* win = (wxWindow*) node->Data(); - if (SendIdleEvents(win)) - needMore = TRUE; - - node = node->Next(); - } - return needMore; -} - -// Send idle event to window and all subwindows -bool wxApp::SendIdleEvents(wxWindow* win) -{ - bool needMore = FALSE; - - wxIdleEvent event; - event.SetEventObject(win); - win->ProcessEvent(event); - - if (event.MoreRequested()) - needMore = TRUE; - - wxNode* node = win->GetChildren()->First(); - while (node) - { - wxWindow* win = (wxWindow*) node->Data(); - if (SendIdleEvents(win)) - needMore = TRUE; - - node = node->Next(); - } - return needMore ; -} - -void wxApp::DeletePendingObjects() -{ - wxNode *node = wxPendingDelete.First(); - while (node) - { - wxObject *obj = (wxObject *)node->Data(); - - delete obj; - - if (wxPendingDelete.Member(obj)) - delete node; - - // Deleting one object may have deleted other pending - // objects, so start from beginning of list again. - node = wxPendingDelete.First(); - } -} - -wxLog* wxApp::CreateLogTarget() -{ - return new wxLogGui; -} - -wxWindow* wxApp::GetTopWindow() const -{ - if (m_topWindow) - return m_topWindow; - else if (wxTopLevelWindows.Number() > 0) - return (wxWindow*) wxTopLevelWindows.First()->Data(); - else - return NULL; -} - -void wxExit() -{ - wxApp::CommonCleanUp(); -/* - * TODO: Exit in some platform-specific way. Not recommended that the app calls this: - * only for emergencies. - */ -} - -// Yield to other processes -bool wxYield() -{ - /* - * TODO - */ - return TRUE; -} - diff --git a/src/qt/bdiag.xbm b/src/qt/bdiag.xbm deleted file mode 100644 index 9ff0a1822f..0000000000 --- a/src/qt/bdiag.xbm +++ /dev/null @@ -1,6 +0,0 @@ -#define bdiag_width 16 -#define bdiag_height 16 -static char bdiag_bits[] = { - 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x10, 0x08, 0x08, 0x04, 0x04, - 0x02, 0x02, 0x01, 0x01, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x10, - 0x08, 0x08, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01}; diff --git a/src/qt/bitmap.cpp b/src/qt/bitmap.cpp deleted file mode 100644 index 1e6255f551..0000000000 --- a/src/qt/bitmap.cpp +++ /dev/null @@ -1,430 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: bitmap.cpp -// Purpose: wxBitmap -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "bitmap.h" -#endif - -#include "wx/setup.h" -#include "wx/utils.h" -#include "wx/palette.h" -#include "wx/bitmap.h" -#include "wx/icon.h" -#include "wx/log.h" - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxBitmap, wxGDIObject) -IMPLEMENT_DYNAMIC_CLASS(wxMask, wxObject) -#endif - -wxBitmapRefData::wxBitmapRefData() -{ - m_ok = FALSE; - m_width = 0; - m_height = 0; - m_depth = 0; - m_quality = 0; - m_numColors = 0; - m_bitmapMask = NULL; -} - -wxBitmapRefData::~wxBitmapRefData() -{ - /* - * TODO: delete the bitmap data here. - */ - - if (m_bitmapMask) - delete m_bitmapMask; - m_bitmapMask = NULL; -} - -wxList wxBitmap::sm_handlers; - -wxBitmap::wxBitmap() -{ - m_refData = NULL; - - if ( wxTheBitmapList ) - wxTheBitmapList->AddBitmap(this); -} - -wxBitmap::~wxBitmap() -{ - if (wxTheBitmapList) - wxTheBitmapList->DeleteObject(this); -} - -wxBitmap::wxBitmap(const char bits[], int the_width, int the_height, int no_bits) -{ - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_width = the_width ; - M_BITMAPDATA->m_height = the_height ; - M_BITMAPDATA->m_depth = no_bits ; - M_BITMAPDATA->m_numColors = 0; - - /* TODO: create the bitmap from data */ - - if ( wxTheBitmapList ) - wxTheBitmapList->AddBitmap(this); -} - -wxBitmap::wxBitmap(int w, int h, int d) -{ - (void)Create(w, h, d); - - if ( wxTheBitmapList ) - wxTheBitmapList->AddBitmap(this); -} - -wxBitmap::wxBitmap(void *data, long type, int width, int height, int depth) -{ - (void) Create(data, type, width, height, depth); - - if ( wxTheBitmapList ) - wxTheBitmapList->AddBitmap(this); -} - -wxBitmap::wxBitmap(const wxString& filename, long type) -{ - LoadFile(filename, (int)type); - - if ( wxTheBitmapList ) - wxTheBitmapList->AddBitmap(this); -} - -/* TODO: maybe allow creation from XPM -// Create from data -wxBitmap::wxBitmap(const char **data) -{ - (void) Create((void *)data, wxBITMAP_TYPE_XPM_DATA, 0, 0, 0); -} -*/ - -bool wxBitmap::Create(int w, int h, int d) -{ - UnRef(); - - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_width = w; - M_BITMAPDATA->m_height = h; - M_BITMAPDATA->m_depth = d; - - /* TODO: create new bitmap */ - - return M_BITMAPDATA->m_ok; -} - -bool wxBitmap::LoadFile(const wxString& filename, long type) -{ - UnRef(); - - m_refData = new wxBitmapRefData; - - wxBitmapHandler *handler = FindHandler(type); - - if ( handler == NULL ) { - wxLogWarning("no bitmap handler for type %d defined.", type); - - return FALSE; - } - - return handler->LoadFile(this, filename, type, -1, -1); -} - -bool wxBitmap::Create(void *data, long type, int width, int height, int depth) -{ - UnRef(); - - m_refData = new wxBitmapRefData; - - wxBitmapHandler *handler = FindHandler(type); - - if ( handler == NULL ) { - wxLogWarning("no bitmap handler for type %d defined.", type); - - return FALSE; - } - - return handler->Create(this, data, type, width, height, depth); -} - -bool wxBitmap::SaveFile(const wxString& filename, int type, const wxPalette *palette) -{ - wxBitmapHandler *handler = FindHandler(type); - - if ( handler == NULL ) { - wxLogWarning("no bitmap handler for type %d defined.", type); - - return FALSE; - } - - return handler->SaveFile(this, filename, type, palette); -} - -void wxBitmap::SetWidth(int w) -{ - if (!M_BITMAPDATA) - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_width = w; -} - -void wxBitmap::SetHeight(int h) -{ - if (!M_BITMAPDATA) - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_height = h; -} - -void wxBitmap::SetDepth(int d) -{ - if (!M_BITMAPDATA) - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_depth = d; -} - -void wxBitmap::SetQuality(int q) -{ - if (!M_BITMAPDATA) - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_quality = q; -} - -void wxBitmap::SetOk(bool isOk) -{ - if (!M_BITMAPDATA) - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_ok = isOk; -} - -void wxBitmap::SetPalette(const wxPalette& palette) -{ - if (!M_BITMAPDATA) - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_bitmapPalette = palette ; -} - -void wxBitmap::SetMask(wxMask *mask) -{ - if (!M_BITMAPDATA) - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_bitmapMask = mask ; -} - -void wxBitmap::AddHandler(wxBitmapHandler *handler) -{ - sm_handlers.Append(handler); -} - -void wxBitmap::InsertHandler(wxBitmapHandler *handler) -{ - sm_handlers.Insert(handler); -} - -bool wxBitmap::RemoveHandler(const wxString& name) -{ - wxBitmapHandler *handler = FindHandler(name); - if ( handler ) - { - sm_handlers.DeleteObject(handler); - return TRUE; - } - else - return FALSE; -} - -wxBitmapHandler *wxBitmap::FindHandler(const wxString& name) -{ - wxNode *node = sm_handlers.First(); - while ( node ) - { - wxBitmapHandler *handler = (wxBitmapHandler *)node->Data(); - if ( handler->GetName() == name ) - return handler; - node = node->Next(); - } - return NULL; -} - -wxBitmapHandler *wxBitmap::FindHandler(const wxString& extension, long bitmapType) -{ - wxNode *node = sm_handlers.First(); - while ( node ) - { - wxBitmapHandler *handler = (wxBitmapHandler *)node->Data(); - if ( handler->GetExtension() == extension && - (bitmapType == -1 || handler->GetType() == bitmapType) ) - return handler; - node = node->Next(); - } - return NULL; -} - -wxBitmapHandler *wxBitmap::FindHandler(long bitmapType) -{ - wxNode *node = sm_handlers.First(); - while ( node ) - { - wxBitmapHandler *handler = (wxBitmapHandler *)node->Data(); - if (handler->GetType() == bitmapType) - return handler; - node = node->Next(); - } - return NULL; -} - -/* - * wxMask - */ - -wxMask::wxMask() -{ -/* TODO - m_maskBitmap = 0; -*/ -} - -// Construct a mask from a bitmap and a colour indicating -// the transparent area -wxMask::wxMask(const wxBitmap& bitmap, const wxColour& colour) -{ -/* TODO - m_maskBitmap = 0; -*/ - Create(bitmap, colour); -} - -// Construct a mask from a bitmap and a palette index indicating -// the transparent area -wxMask::wxMask(const wxBitmap& bitmap, int paletteIndex) -{ -/* TODO - m_maskBitmap = 0; -*/ - - Create(bitmap, paletteIndex); -} - -// Construct a mask from a mono bitmap (copies the bitmap). -wxMask::wxMask(const wxBitmap& bitmap) -{ -/* TODO - m_maskBitmap = 0; -*/ - - Create(bitmap); -} - -wxMask::~wxMask() -{ -// TODO: delete mask bitmap -} - -// Create a mask from a mono bitmap (copies the bitmap). -bool wxMask::Create(const wxBitmap& bitmap) -{ -// TODO - return FALSE; -} - -// Create a mask from a bitmap and a palette index indicating -// the transparent area -bool wxMask::Create(const wxBitmap& bitmap, int paletteIndex) -{ -// TODO - return FALSE; -} - -// Create a mask from a bitmap and a colour indicating -// the transparent area -bool wxMask::Create(const wxBitmap& bitmap, const wxColour& colour) -{ -// TODO - return FALSE; -} - -/* - * wxBitmapHandler - */ - -IMPLEMENT_DYNAMIC_CLASS(wxBitmapHandler, wxObject) - -bool wxBitmapHandler::Create(wxBitmap *bitmap, void *data, long type, int width, int height, int depth) -{ - return FALSE; -} - -bool wxBitmapHandler::LoadFile(wxBitmap *bitmap, const wxString& name, long type, - int desiredWidth, int desiredHeight) -{ - return FALSE; -} - -bool wxBitmapHandler::SaveFile(wxBitmap *bitmap, const wxString& name, int type, const wxPalette *palette) -{ - return FALSE; -} - -/* - * Standard handlers - */ - -/* TODO: bitmap handlers, a bit like this: -class WXDLLEXPORT wxBMPResourceHandler: public wxBitmapHandler -{ - DECLARE_DYNAMIC_CLASS(wxBMPResourceHandler) -public: - inline wxBMPResourceHandler() - { - m_name = "Windows bitmap resource"; - m_extension = ""; - m_type = wxBITMAP_TYPE_BMP_RESOURCE; - }; - - virtual bool LoadFile(wxBitmap *bitmap, const wxString& name, long flags, - int desiredWidth, int desiredHeight); -}; -IMPLEMENT_DYNAMIC_CLASS(wxBMPResourceHandler, wxBitmapHandler) -*/ - -void wxBitmap::CleanUpHandlers() -{ - wxNode *node = sm_handlers.First(); - while ( node ) - { - wxBitmapHandler *handler = (wxBitmapHandler *)node->Data(); - wxNode *next = node->Next(); - delete handler; - delete node; - node = next; - } -} - -void wxBitmap::InitStandardHandlers() -{ -/* TODO: initialize all standard bitmap or derive class handlers here. - AddHandler(new wxBMPResourceHandler); - AddHandler(new wxBMPFileHandler); - AddHandler(new wxXPMFileHandler); - AddHandler(new wxXPMDataHandler); - AddHandler(new wxICOResourceHandler); - AddHandler(new wxICOFileHandler); -*/ -} diff --git a/src/qt/bmpbuttn.cpp b/src/qt/bmpbuttn.cpp deleted file mode 100644 index 9e46c22b2b..0000000000 --- a/src/qt/bmpbuttn.cpp +++ /dev/null @@ -1,65 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: bmpbuttn.cpp -// Purpose: wxBitmapButton -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "bmpbuttn.h" -#endif - -#include "wx/bmpbuttn.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxBitmapButton, wxButton) -#endif - -bool wxBitmapButton::Create(wxWindow *parent, wxWindowID id, const wxBitmap& bitmap, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - m_buttonBitmap = bitmap; - SetName(name); - SetValidator(validator); - parent->AddChild(this); - - m_backgroundColour = parent->GetDefaultBackgroundColour() ; - m_foregroundColour = parent->GetDefaultForegroundColour() ; - m_windowStyle = style; - m_marginX = 0; - m_marginY = 0; - - int x = pos.x; - int y = pos.y; - int width = size.x; - int height = size.y; - - if (id == -1) - m_windowId = NewControlId(); - else - m_windowId = id; - - if ( width == -1 && bitmap.Ok()) - width = bitmap.GetWidth() + 2*m_marginX; - - if ( height == -1 && bitmap.Ok()) - height = bitmap.GetHeight() + 2*m_marginY; - - /* TODO: create bitmap button - */ - - return FALSE; -} - -void wxBitmapButton::SetBitmapLabel(const wxBitmap& bitmap) -{ - m_buttonBitmap = bitmap; -} - diff --git a/src/qt/brush.cpp b/src/qt/brush.cpp deleted file mode 100644 index 72c12935ff..0000000000 --- a/src/qt/brush.cpp +++ /dev/null @@ -1,162 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: brush.cpp -// Purpose: wxBrush -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "brush.h" -#endif - -#include "wx/setup.h" -#include "wx/utils.h" -#include "wx/brush.h" - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxBrush, wxGDIObject) -#endif - -wxBrushRefData::wxBrushRefData() -{ - m_style = wxSOLID; -// TODO: null data -} - -wxBrushRefData::wxBrushRefData(const wxBrushRefData& data) -{ - m_style = data.m_style; - m_stipple = data.m_stipple; - m_colour = data.m_colour; -/* TODO: null data - m_hBrush = 0; -*/ -} - -wxBrushRefData::~wxBrushRefData() -{ -// TODO: delete data -} - -// Brushes -wxBrush::wxBrush() -{ - if ( wxTheBrushList ) - wxTheBrushList->AddBrush(this); -} - -wxBrush::~wxBrush() -{ - if ( wxTheBrushList ) - wxTheBrushList->RemoveBrush(this); -} - -wxBrush::wxBrush(const wxColour& col, int Style) -{ - m_refData = new wxBrushRefData; - - M_BRUSHDATA->m_colour = col; - M_BRUSHDATA->m_style = Style; - - RealizeResource(); - - if ( wxTheBrushList ) - wxTheBrushList->AddBrush(this); -} - -wxBrush::wxBrush(const wxString& col, int Style) -{ - m_refData = new wxBrushRefData; - - // Implicit conversion from string to wxColour via colour database - M_BRUSHDATA->m_colour = col; - M_BRUSHDATA->m_style = Style; - - RealizeResource(); - - if ( wxTheBrushList ) - wxTheBrushList->AddBrush(this); -} - -wxBrush::wxBrush(const wxBitmap& stipple) -{ - m_refData = new wxBrushRefData; - - M_BRUSHDATA->m_style = wxSTIPPLE; - M_BRUSHDATA->m_stipple = stipple; - - RealizeResource(); - - if ( wxTheBrushList ) - wxTheBrushList->AddBrush(this); -} - -void wxBrush::Unshare() -{ - // Don't change shared data - if (!m_refData) - { - m_refData = new wxBrushRefData(); - } - else - { - wxBrushRefData* ref = new wxBrushRefData(*(wxBrushRefData*)m_refData); - UnRef(); - m_refData = ref; - } -} - -void wxBrush::SetColour(const wxColour& col) -{ - Unshare(); - - M_BRUSHDATA->m_colour = col; - - RealizeResource(); -} - -void wxBrush::SetColour(const wxString& col) -{ - Unshare(); - - M_BRUSHDATA->m_colour = col; - - RealizeResource(); -} - -void wxBrush::SetColour(const unsigned char r, const unsigned char g, const unsigned char b) -{ - Unshare(); - - M_BRUSHDATA->m_colour.Set(r, g, b); - - RealizeResource(); -} - -void wxBrush::SetStyle(int Style) -{ - Unshare(); - - M_BRUSHDATA->m_style = Style; - - RealizeResource(); -} - -void wxBrush::SetStipple(const wxBitmap& Stipple) -{ - Unshare(); - - M_BRUSHDATA->m_stipple = Stipple; - - RealizeResource(); -} - -void wxBrush::RealizeResource() -{ -// TODO: create the brush -} - diff --git a/src/qt/button.cpp b/src/qt/button.cpp deleted file mode 100644 index befd0d7156..0000000000 --- a/src/qt/button.cpp +++ /dev/null @@ -1,75 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: button.cpp -// Purpose: wxButton -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "button.h" -#endif - -#include "wx/button.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxButton, wxControl) -#endif - -// Button - -bool wxButton::Create(wxWindow *parent, wxWindowID id, const wxString& label, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); - SetValidator(validator); - m_windowStyle = style; - - parent->AddChild((wxButton *)this); - - if (id == -1) - m_windowId = NewControlId(); - else - m_windowId = id; - - // TODO: create button - - return FALSE; -} - -void wxButton::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -void wxButton::SetDefault() -{ - wxWindow *parent = (wxWindow *)GetParent(); - if (parent) - parent->SetDefaultItem(this); - - // TODO: make button the default -} - -wxString wxButton::GetLabel() const -{ - // TODO - return wxString(""); -} - -void wxButton::SetLabel(const wxString& label) -{ - // TODO -} - -void wxButton::Command (wxCommandEvent & event) -{ - ProcessCommand (event); -} - diff --git a/src/qt/cdiag.xbm b/src/qt/cdiag.xbm deleted file mode 100644 index 15dc7ba86d..0000000000 --- a/src/qt/cdiag.xbm +++ /dev/null @@ -1,6 +0,0 @@ -#define cdiag_width 16 -#define cdiag_height 16 -static char cdiag_bits[] = { - 0x81, 0x81, 0x42, 0x42, 0x24, 0x24, 0x18, 0x18, 0x18, 0x18, 0x24, 0x24, - 0x42, 0x42, 0x81, 0x81, 0x81, 0x81, 0x42, 0x42, 0x24, 0x24, 0x18, 0x18, - 0x18, 0x18, 0x24, 0x24, 0x42, 0x42, 0x81, 0x81}; diff --git a/src/qt/checkbox.cpp b/src/qt/checkbox.cpp deleted file mode 100644 index dd2e2abe7a..0000000000 --- a/src/qt/checkbox.cpp +++ /dev/null @@ -1,117 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: checkbox.cpp -// Purpose: wxCheckBox -// Author: AUTHOR -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "checkbox.h" -#endif - -#include "wx/checkbox.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxCheckBox, wxControl) -IMPLEMENT_DYNAMIC_CLASS(wxBitmapCheckBox, wxCheckBox) -#endif - -// Single check box item -bool wxCheckBox::Create(wxWindow *parent, wxWindowID id, const wxString& label, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); - SetValidator(validator); - m_windowStyle = style; - - if (parent) parent->AddChild(this); - - if ( id == -1 ) - m_windowId = NewControlId(); - else - m_windowId = id; - - // TODO: create checkbox - - return FALSE; -} - -void wxCheckBox::SetLabel(const wxString& label) -{ - // TODO -} - -void wxCheckBox::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -void wxCheckBox::SetValue(bool val) -{ - // TODO -} - -bool wxCheckBox::GetValue() const -{ - // TODO - return FALSE; -} - -void wxCheckBox::Command (wxCommandEvent & event) -{ - SetValue ((event.GetInt() != 0)); - ProcessCommand (event); -} - -// Bitmap checkbox -bool wxBitmapCheckBox::Create(wxWindow *parent, wxWindowID id, const wxBitmap *label, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); - SetValidator(validator); - m_windowStyle = style; - - if (parent) parent->AddChild(this); - - if ( id == -1 ) - m_windowId = NewControlId(); - else - m_windowId = id; - - // TODO: Create the bitmap checkbox - - return FALSE; -} - -void wxBitmapCheckBox::SetLabel(const wxBitmap *bitmap) -{ - // TODO -} - -void wxBitmapCheckBox::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -void wxBitmapCheckBox::SetValue(bool val) -{ - // TODO -} - -bool wxBitmapCheckBox::GetValue() const -{ - // TODOD - return FALSE; -} - - diff --git a/src/qt/choice.cpp b/src/qt/choice.cpp deleted file mode 100644 index a584d5303f..0000000000 --- a/src/qt/choice.cpp +++ /dev/null @@ -1,119 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: choice.cpp -// Purpose: wxChoice -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "choice.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/choice.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxChoice, wxControl) -#endif - -bool wxChoice::Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos, - const wxSize& size, - int n, const wxString choices[], - long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); - SetValidator(validator); - m_noStrings = n; - m_windowStyle = style; - - if (parent) parent->AddChild(this); - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - // TODO: create choice control - return FALSE; -} - -void wxChoice::Append(const wxString& item) -{ - // TODO - m_noStrings ++; -} - -void wxChoice::Delete(int n) -{ - // TODO - m_noStrings --; -} - -void wxChoice::Clear() -{ - // TODO - m_noStrings = 0; -} - -int wxChoice::GetSelection() const -{ - // TODO - return 0; -} - -void wxChoice::SetSelection(int n) -{ - // TODO -} - -int wxChoice::FindString(const wxString& s) const -{ - // TODO - return 0; -} - -wxString wxChoice::GetString(int n) const -{ - // TODO - return wxString(""); -} - -void wxChoice::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -wxString wxChoice::GetStringSelection () const -{ - int sel = GetSelection (); - if (sel > -1) - return wxString(this->GetString (sel)); - else - return wxString(""); -} - -bool wxChoice::SetStringSelection (const wxString& s) -{ - int sel = FindString (s); - if (sel > -1) - { - SetSelection (sel); - return TRUE; - } - else - return FALSE; -} - -void wxChoice::Command(wxCommandEvent & event) -{ - SetSelection (event.GetInt()); - ProcessCommand (event); -} - diff --git a/src/qt/colour.cpp b/src/qt/colour.cpp deleted file mode 100644 index d342d516de..0000000000 --- a/src/qt/colour.cpp +++ /dev/null @@ -1,126 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: colour.cpp -// Purpose: wxColour class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "colour.h" -#endif - -#include "wx/gdicmn.h" -#include "wx/colour.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxColour, wxObject) -#endif - -// Colour - -wxColour::wxColour () -{ - m_isInit = FALSE; - m_red = m_blue = m_green = 0; -/* TODO - m_pixel = 0; -*/ -} - -wxColour::wxColour (unsigned char r, unsigned char g, unsigned char b) -{ - m_red = r; - m_green = g; - m_blue = b; - m_isInit = TRUE; -/* TODO - m_pixel = PALETTERGB (m_red, m_green, m_blue); -*/ -} - -wxColour::wxColour (const wxColour& col) -{ - m_red = col.m_red; - m_green = col.m_green; - m_blue = col.m_blue; - m_isInit = col.m_isInit; -/* TODO - m_pixel = col.m_pixel; -*/ -} - -wxColour& wxColour::operator =(const wxColour& col) -{ - m_red = col.m_red; - m_green = col.m_green; - m_blue = col.m_blue; - m_isInit = col.m_isInit; -/* TODO - m_pixel = col.m_pixel; -*/ - return *this; -} - -wxColour::wxColour (const wxString& col) -{ - wxColour *the_colour = wxTheColourDatabase->FindColour (col); - if (the_colour) - { - m_red = the_colour->Red (); - m_green = the_colour->Green (); - m_blue = the_colour->Blue (); - m_isInit = TRUE; - } - else - { - m_red = 0; - m_green = 0; - m_blue = 0; - m_isInit = FALSE; - } -/* TODO - m_pixel = PALETTERGB (m_red, m_green, m_blue); -*/ -} - -wxColour::~wxColour () -{ -} - -wxColour& wxColour::operator = (const wxString& col) -{ - wxColour *the_colour = wxTheColourDatabase->FindColour (col); - if (the_colour) - { - m_red = the_colour->Red (); - m_green = the_colour->Green (); - m_blue = the_colour->Blue (); - m_isInit = TRUE; - } - else - { - m_red = 0; - m_green = 0; - m_blue = 0; - m_isInit = FALSE; - } -/* TODO - m_pixel = PALETTERGB (m_red, m_green, m_blue); -*/ - return (*this); -} - -void wxColour::Set (unsigned char r, unsigned char g, unsigned char b) -{ - m_red = r; - m_green = g; - m_blue = b; - m_isInit = TRUE; -/* TODO - m_pixel = PALETTERGB (m_red, m_green, m_blue); -*/ -} diff --git a/src/qt/combobox.cpp b/src/qt/combobox.cpp deleted file mode 100644 index f1bbccaeb0..0000000000 --- a/src/qt/combobox.cpp +++ /dev/null @@ -1,116 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: combobox.cpp -// Purpose: wxComboBox class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "combobox.h" -#endif - -#include "wx/combobox.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxComboBox, wxControl) -#endif - -bool wxComboBox::Create(wxWindow *parent, wxWindowID id, - const wxString& value, - const wxPoint& pos, - const wxSize& size, - int n, const wxString choices[], - long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); - SetValidator(validator); - m_noStrings = n; - m_windowStyle = style; - - if (parent) parent->AddChild(this); - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - // TODO: create combobox control - - return TRUE; -} - -wxString wxComboBox::GetValue() const -{ - // TODO - return wxString(""); -} - -void wxComboBox::SetValue(const wxString& value) -{ - // TODO -} - -// Clipboard operations -void wxComboBox::Copy() -{ - // TODO -} - -void wxComboBox::Cut() -{ - // TODO -} - -void wxComboBox::Paste() -{ - // TODO -} - -void wxComboBox::SetEditable(bool editable) -{ - // TODO -} - -void wxComboBox::SetInsertionPoint(long pos) -{ - // TODO -} - -void wxComboBox::SetInsertionPointEnd() -{ - // TODO -} - -long wxComboBox::GetInsertionPoint() const -{ - // TODO - return 0; -} - -long wxComboBox::GetLastPosition() const -{ - // TODO - return 0; -} - -void wxComboBox::Replace(long from, long to, const wxString& value) -{ - // TODO -} - -void wxComboBox::Remove(long from, long to) -{ - // TODO -} - -void wxComboBox::SetSelection(long from, long to) -{ - // TODO -} - diff --git a/src/qt/control.cpp b/src/qt/control.cpp deleted file mode 100644 index 651b272953..0000000000 --- a/src/qt/control.cpp +++ /dev/null @@ -1,111 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: control.cpp -// Purpose: wxControl class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "control.h" -#endif - -#include "wx/control.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_ABSTRACT_CLASS(wxControl, wxWindow) - -BEGIN_EVENT_TABLE(wxControl, wxWindow) -END_EVENT_TABLE() -#endif - -// Item members -wxControl::wxControl() -{ - m_backgroundColour = *wxWHITE; - m_foregroundColour = *wxBLACK; - m_callback = 0; -} - -wxControl::~wxControl() -{ - // If we delete an item, we should initialize the parent panel, - // because it could now be invalid. - wxWindow *parent = (wxWindow *)GetParent(); - if (parent) - { - if (parent->GetDefaultItem() == this) - parent->SetDefaultItem(NULL); - } -} - -void wxControl::SetLabel(const wxString& label) -{ - // TODO -} - -wxString wxControl::GetLabel() const -{ - // TODO - return wxString(""); -} - -/* - * Allocates control IDs within the appropriate range - */ - -int NewControlId() -{ - static int s_controlId = 0; - s_controlId ++; - return s_controlId; -} - -void wxControl::ProcessCommand (wxCommandEvent & event) -{ - // Tries: - // 1) A callback function (to become obsolete) - // 2) OnCommand, starting at this window and working up parent hierarchy - // 3) OnCommand then calls ProcessEvent to search the event tables. - if (m_callback) - { - (void) (*(m_callback)) (*this, event); - } - else - { - GetEventHandler()->OnCommand(*this, event); - } -} - -void wxControl::SetClientSize (int width, int height) -{ - SetSize (-1, -1, width, height); -} - -void wxControl::Centre (int direction) -{ - int x, y, width, height, panel_width, panel_height, new_x, new_y; - - wxWindow *parent = (wxWindow *) GetParent (); - if (!parent) - return; - - parent->GetClientSize (&panel_width, &panel_height); - GetSize (&width, &height); - GetPosition (&x, &y); - - new_x = x; - new_y = y; - - if (direction & wxHORIZONTAL) - new_x = (int) ((panel_width - width) / 2); - - if (direction & wxVERTICAL) - new_y = (int) ((panel_height - height) / 2); - - SetSize (new_x, new_y, width, height); -} - diff --git a/src/qt/cross.xbm b/src/qt/cross.xbm deleted file mode 100644 index b07cbe7fcd..0000000000 --- a/src/qt/cross.xbm +++ /dev/null @@ -1,6 +0,0 @@ -#define cross_width 15 -#define cross_height 15 -static char cross_bits[] = { - 0x84, 0x10, 0x84, 0x10, 0xff, 0x7f, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, - 0x84, 0x10, 0xff, 0x7f, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, - 0xff, 0x7f, 0x84, 0x10, 0x84, 0x10}; diff --git a/src/qt/cursor.cpp b/src/qt/cursor.cpp deleted file mode 100644 index c856f5e9e0..0000000000 --- a/src/qt/cursor.cpp +++ /dev/null @@ -1,186 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: cursor.cpp -// Purpose: wxCursor class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "cursor.h" -#endif - -#include "wx/cursor.h" - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxCursor, wxBitmap) -#endif - -wxCursorRefData::wxCursorRefData() -{ - m_width = 32; m_height = 32; - -/* TODO - m_hCursor = 0 ; -*/ -} - -wxCursorRefData::~wxCursorRefData() -{ - // TODO: destroy cursor -} - -// Cursors -wxCursor::wxCursor() -{ -} - -wxCursor::wxCursor(const char WXUNUSED(bits)[], int WXUNUSED(width), int WXUNUSED(height), - int WXUNUSED(hotSpotX), int WXUNUSED(hotSpotY), const char WXUNUSED(maskBits)[]) -{ -} - -wxCursor::wxCursor(const wxString& cursor_file, long flags, int hotSpotX, int hotSpotY) -{ - m_refData = new wxIconRefData; - - // TODO: create cursor from a file -} - -// Cursors by stock number -wxCursor::wxCursor(int cursor_type) -{ - m_refData = new wxIconRefData; - -/* TODO - switch (cursor_type) - { - case wxCURSOR_WAIT: - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_WAIT); - break; - case wxCURSOR_IBEAM: - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_IBEAM); - break; - case wxCURSOR_CROSS: - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_CROSS); - break; - case wxCURSOR_SIZENWSE: - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_SIZENWSE); - break; - case wxCURSOR_SIZENESW: - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_SIZENESW); - break; - case wxCURSOR_SIZEWE: - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_SIZEWE); - break; - case wxCURSOR_SIZENS: - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_SIZENS); - break; - case wxCURSOR_CHAR: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_ARROW); - break; - } - case wxCURSOR_HAND: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_HAND"); - break; - } - case wxCURSOR_BULLSEYE: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_BULLSEYE"); - break; - } - case wxCURSOR_PENCIL: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_PENCIL"); - break; - } - case wxCURSOR_MAGNIFIER: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_MAGNIFIER"); - break; - } - case wxCURSOR_NO_ENTRY: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_NO_ENTRY"); - break; - } - case wxCURSOR_LEFT_BUTTON: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_ARROW); - break; - } - case wxCURSOR_RIGHT_BUTTON: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_ARROW); - break; - } - case wxCURSOR_MIDDLE_BUTTON: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_ARROW); - break; - } - case wxCURSOR_SIZING: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_SIZING"); - break; - } - case wxCURSOR_WATCH: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_WATCH"); - break; - } - case wxCURSOR_SPRAYCAN: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_ROLLER"); - break; - } - case wxCURSOR_PAINT_BRUSH: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_PBRUSH"); - break; - } - case wxCURSOR_POINT_LEFT: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_PLEFT"); - break; - } - case wxCURSOR_POINT_RIGHT: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_PRIGHT"); - break; - } - case wxCURSOR_QUESTION_ARROW: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_QARROW"); - break; - } - case wxCURSOR_BLANK: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_BLANK"); - break; - } - default: - case wxCURSOR_ARROW: - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_ARROW); - break; - } -*/ - -} - -wxCursor::~wxCursor() -{ -} - -// Global cursor setting -void wxSetCursor(const wxCursor& cursor) -{ - // TODO (optional on platforms with no global cursor) -} - - diff --git a/src/qt/data.cpp b/src/qt/data.cpp deleted file mode 100644 index 6748ee636f..0000000000 --- a/src/qt/data.cpp +++ /dev/null @@ -1,145 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: data.cpp -// Purpose: Various data -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation -#endif - -#include "wx/wx.h" - -#define _MAXPATHLEN 500 - -// Useful buffer, initialized in CommonInit -char *wxBuffer = NULL; - -// Windows List -wxList wxTopLevelWindows; - -// List of windows pending deletion -wxList wxPendingDelete; - -int wxPageNumber; - -// GDI Object Lists -wxBrushList *wxTheBrushList = NULL; -wxPenList *wxThePenList = NULL; -wxFontList *wxTheFontList = NULL; -wxBitmapList *wxTheBitmapList = NULL; - -wxColourDatabase *wxTheColourDatabase = NULL; - -// Stock objects -wxFont *wxNORMAL_FONT; -wxFont *wxSMALL_FONT; -wxFont *wxITALIC_FONT; -wxFont *wxSWISS_FONT; -wxPen *wxRED_PEN; - -wxPen *wxCYAN_PEN; -wxPen *wxGREEN_PEN; -wxPen *wxBLACK_PEN; -wxPen *wxWHITE_PEN; -wxPen *wxTRANSPARENT_PEN; -wxPen *wxBLACK_DASHED_PEN; -wxPen *wxGREY_PEN; -wxPen *wxMEDIUM_GREY_PEN; -wxPen *wxLIGHT_GREY_PEN; - -wxBrush *wxBLUE_BRUSH; -wxBrush *wxGREEN_BRUSH; -wxBrush *wxWHITE_BRUSH; -wxBrush *wxBLACK_BRUSH; -wxBrush *wxTRANSPARENT_BRUSH; -wxBrush *wxCYAN_BRUSH; -wxBrush *wxRED_BRUSH; -wxBrush *wxGREY_BRUSH; -wxBrush *wxMEDIUM_GREY_BRUSH; -wxBrush *wxLIGHT_GREY_BRUSH; - -wxColour *wxBLACK; -wxColour *wxWHITE; -wxColour *wxRED; -wxColour *wxBLUE; -wxColour *wxGREEN; -wxColour *wxCYAN; -wxColour *wxLIGHT_GREY; - -wxCursor *wxSTANDARD_CURSOR = NULL; -wxCursor *wxHOURGLASS_CURSOR = NULL; -wxCursor *wxCROSS_CURSOR = NULL; - -// 'Null' objects -wxAcceleratorTable wxNullAcceleratorTable; -wxBitmap wxNullBitmap; -wxIcon wxNullIcon; -wxCursor wxNullCursor; -wxPen wxNullPen; -wxBrush wxNullBrush; -wxPalette wxNullPalette; -wxFont wxNullFont; -wxColour wxNullColour; - -// Default window names -const char *wxButtonNameStr = "button"; -const char *wxCanvasNameStr = "canvas"; -const char *wxCheckBoxNameStr = "check"; -const char *wxChoiceNameStr = "choice"; -const char *wxComboBoxNameStr = "comboBox"; -const char *wxDialogNameStr = "dialog"; -const char *wxFrameNameStr = "frame"; -const char *wxGaugeNameStr = "gauge"; -const char *wxStaticBoxNameStr = "groupBox"; -const char *wxListBoxNameStr = "listBox"; -const char *wxStaticTextNameStr = "message"; -const char *wxStaticBitmapNameStr = "message"; -const char *wxMultiTextNameStr = "multitext"; -const char *wxPanelNameStr = "panel"; -const char *wxRadioBoxNameStr = "radioBox"; -const char *wxRadioButtonNameStr = "radioButton"; -const char *wxBitmapRadioButtonNameStr = "radioButton"; -const char *wxScrollBarNameStr = "scrollBar"; -const char *wxSliderNameStr = "slider"; -const char *wxStaticNameStr = "static"; -const char *wxTextCtrlWindowNameStr = "textWindow"; -const char *wxTextCtrlNameStr = "text"; -const char *wxVirtListBoxNameStr = "virtListBox"; -const char *wxButtonBarNameStr = "buttonbar"; -const char *wxEnhDialogNameStr = "Shell"; -const char *wxToolBarNameStr = "toolbar"; -const char *wxStatusLineNameStr = "status_line"; -const char *wxEmptyString = ""; -const char *wxGetTextFromUserPromptStr = "Input Text"; -const char *wxMessageBoxCaptionStr = "Message"; -const char *wxFileSelectorPromptStr = "Select a file"; -const char *wxFileSelectorDefaultWildcardStr = "*.*"; -const char *wxInternalErrorStr = "wxWindows Internal Error"; -const char *wxFatalErrorStr = "wxWindows Fatal Error"; - -// See wx/utils.h -const char *wxFloatToStringStr = "%.2f"; -const char *wxDoubleToStringStr = "%.2f"; - -#if wxUSE_POSTSCRIPT -wxPrintPaperDatabase* wxThePrintPaperDatabase = NULL; -#endif - -///// Event tables (also must be in one, statically-linked file for shared libraries) - -// This is the base, wxEvtHandler 'bootstrap' code which is expanded manually here -const wxEventTable *wxEvtHandler::GetEventTable() const { return &wxEvtHandler::sm_eventTable; } - -const wxEventTable wxEvtHandler::sm_eventTable = - { NULL, &wxEvtHandler::sm_eventTableEntries[0] }; - -const wxEventTableEntry wxEvtHandler::sm_eventTableEntries[] = { { 0, 0, 0, NULL } }; - -const wxSize wxDefaultSize(-1, -1); -const wxPoint wxDefaultPosition(-1, -1); diff --git a/src/qt/dc.cpp b/src/qt/dc.cpp deleted file mode 100644 index 4cfe7305cc..0000000000 --- a/src/qt/dc.cpp +++ /dev/null @@ -1,392 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dc.cpp -// Purpose: wxDC class -// Author: AUTHOR -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dc.h" -#endif - -#include "wx/dc.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_ABSTRACT_CLASS(wxDC, wxObject) -#endif - -//----------------------------------------------------------------------------- -// constants -//----------------------------------------------------------------------------- - -#define mm2inches 0.0393700787402 -#define inches2mm 25.4 -#define mm2twips 56.6929133859 -#define twips2mm 0.0176388888889 -#define mm2pt 2.83464566929 -#define pt2mm 0.352777777778 - -//----------------------------------------------------------------------------- -// wxDC -//----------------------------------------------------------------------------- - -IMPLEMENT_ABSTRACT_CLASS(wxDC,wxObject) - -wxDC::wxDC(void) -{ - m_ok = FALSE; - m_optimize = FALSE; - m_autoSetting = FALSE; - m_colour = TRUE; - m_clipping = FALSE; - - m_mm_to_pix_x = 1.0; - m_mm_to_pix_y = 1.0; - - m_logicalOriginX = 0; - m_logicalOriginY = 0; - m_deviceOriginX = 0; - m_deviceOriginY = 0; - m_internalDeviceOriginX = 0; - m_internalDeviceOriginY = 0; - m_externalDeviceOriginX = 0; - m_externalDeviceOriginY = 0; - - m_logicalScaleX = 1.0; - m_logicalScaleY = 1.0; - m_userScaleX = 1.0; - m_userScaleY = 1.0; - m_scaleX = 1.0; - m_scaleY = 1.0; - - m_mappingMode = MM_TEXT; - m_needComputeScaleX = FALSE; - m_needComputeScaleY = FALSE; - - m_signX = 1; // default x-axis left to right - m_signY = 1; // default y-axis top down - - m_maxX = m_maxY = -100000; - m_minY = m_minY = 100000; - - m_logicalFunction = wxCOPY; -// m_textAlignment = wxALIGN_TOP_LEFT; - m_backgroundMode = wxTRANSPARENT; - - m_textForegroundColour = *wxBLACK; - m_textBackgroundColour = *wxWHITE; - m_pen = *wxBLACK_PEN; - m_font = *wxNORMAL_FONT; - m_brush = *wxTRANSPARENT_BRUSH; - m_backgroundBrush = *wxWHITE_BRUSH; - -// m_palette = wxAPP_COLOURMAP; -}; - -wxDC::~wxDC(void) -{ -}; - -void wxDC::DrawIcon( const wxIcon &WXUNUSED(icon), long WXUNUSED(x), long WXUNUSED(y), bool WXUNUSED(useMask) ) -{ -}; - -void wxDC::DrawPoint( wxPoint& point ) -{ - DrawPoint( point.x, point.y ); -}; - -void wxDC::DrawPolygon( wxList *list, long xoffset, long yoffset, int fillStyle ) -{ - int n = list->Number(); - wxPoint *points = new wxPoint[n]; - - int i = 0; - for( wxNode *node = list->First(); node; node = node->Next() ) - { - wxPoint *point = (wxPoint *)node->Data(); - points[i].x = point->x; - points[i++].y = point->y; - }; - DrawPolygon( n, points, xoffset, yoffset, fillStyle ); - delete[] points; -}; - -void wxDC::DrawLines( wxList *list, long xoffset, long yoffset ) -{ - int n = list->Number(); - wxPoint *points = new wxPoint[n]; - - int i = 0; - for( wxNode *node = list->First(); node; node = node->Next() ) - { - wxPoint *point = (wxPoint *)node->Data(); - points[i].x = point->x; - points[i++].y = point->y; - }; - DrawLines( n, points, xoffset, yoffset ); - delete []points; -}; - -void wxDC::DrawSpline( long x1, long y1, long x2, long y2, long x3, long y3 ) -{ - wxList list; - list.Append( (wxObject*)new wxPoint(x1, y1) ); - list.Append( (wxObject*)new wxPoint(x2, y2) ); - list.Append( (wxObject*)new wxPoint(x3, y3) ); - DrawSpline(&list); - wxNode *node = list.First(); - while (node) - { - wxPoint *p = (wxPoint*)node->Data(); - delete p; - node = node->Next(); - }; -}; - -void wxDC::DrawSpline( wxList *points ) -{ - DrawOpenSpline( points ); -}; - -void wxDC::DrawSpline( int n, wxPoint points[] ) -{ - wxList list; - for (int i = 0; i < n; i++) list.Append( (wxObject*)&points[i] ); - DrawSpline( &list ); -}; - -void wxDC::SetClippingRegion( long x, long y, long width, long height ) -{ - m_clipping = TRUE; - m_clipX1 = x; - m_clipY1 = y; - m_clipX2 = x + width; - m_clipY2 = y + height; -}; - -void wxDC::DestroyClippingRegion(void) -{ - m_clipping = FALSE; -}; - -void wxDC::GetClippingBox( long *x, long *y, long *width, long *height ) const -{ - if (m_clipping) - { - if (x) *x = m_clipX1; - if (y) *y = m_clipY1; - if (width) *width = (m_clipX2 - m_clipX1); - if (height) *height = (m_clipY2 - m_clipY1); - } - else - *x = *y = *width = *height = 0; -}; - -void wxDC::GetSize( int* width, int* height ) const -{ - *width = m_maxX-m_minX; - *height = m_maxY-m_minY; -}; - -void wxDC::GetSizeMM( long* width, long* height ) const -{ - int w = 0; - int h = 0; - GetSize( &w, &h ); - *width = long( double(w) / (m_scaleX*m_mm_to_pix_x) ); - *height = long( double(h) / (m_scaleY*m_mm_to_pix_y) ); -}; - -void wxDC::SetTextForeground( const wxColour &col ) -{ - if (!Ok()) return; - m_textForegroundColour = col; -}; - -void wxDC::SetTextBackground( const wxColour &col ) -{ - if (!Ok()) return; - m_textBackgroundColour = col; -}; - -void wxDC::SetMapMode( int mode ) -{ - switch (mode) - { - case MM_TWIPS: - SetLogicalScale( twips2mm*m_mm_to_pix_x, twips2mm*m_mm_to_pix_y ); - break; - case MM_POINTS: - SetLogicalScale( pt2mm*m_mm_to_pix_x, pt2mm*m_mm_to_pix_y ); - break; - case MM_METRIC: - SetLogicalScale( m_mm_to_pix_x, m_mm_to_pix_y ); - break; - case MM_LOMETRIC: - SetLogicalScale( m_mm_to_pix_x/10.0, m_mm_to_pix_y/10.0 ); - break; - default: - case MM_TEXT: - SetLogicalScale( 1.0, 1.0 ); - break; - }; - if (mode != MM_TEXT) - { - m_needComputeScaleX = TRUE; - m_needComputeScaleY = TRUE; - }; -}; - -void wxDC::SetUserScale( double x, double y ) -{ - // allow negative ? -> no - m_userScaleX = x; - m_userScaleY = y; - ComputeScaleAndOrigin(); -}; - -void wxDC::GetUserScale( double *x, double *y ) -{ - if (x) *x = m_userScaleX; - if (y) *y = m_userScaleY; -}; - -void wxDC::SetLogicalScale( double x, double y ) -{ - // allow negative ? - m_logicalScaleX = x; - m_logicalScaleY = y; - ComputeScaleAndOrigin(); -}; - -void wxDC::GetLogicalScale( double *x, double *y ) -{ - if (x) *x = m_logicalScaleX; - if (y) *y = m_logicalScaleY; -}; - -void wxDC::SetLogicalOrigin( long x, long y ) -{ - m_logicalOriginX = x * m_signX; // is this still correct ? - m_logicalOriginY = y * m_signY; - ComputeScaleAndOrigin(); -}; - -void wxDC::GetLogicalOrigin( long *x, long *y ) -{ - if (x) *x = m_logicalOriginX; - if (y) *y = m_logicalOriginY; -}; - -void wxDC::SetDeviceOrigin( long x, long y ) -{ - m_externalDeviceOriginX = x; - m_externalDeviceOriginY = y; - ComputeScaleAndOrigin(); -}; - -void wxDC::GetDeviceOrigin( long *x, long *y ) -{ -// if (x) *x = m_externalDeviceOriginX; -// if (y) *y = m_externalDeviceOriginY; - if (x) *x = m_deviceOriginX; - if (y) *y = m_deviceOriginY; -}; - -void wxDC::SetInternalDeviceOrigin( long x, long y ) -{ - m_internalDeviceOriginX = x; - m_internalDeviceOriginY = y; - ComputeScaleAndOrigin(); -}; - -void wxDC::GetInternalDeviceOrigin( long *x, long *y ) -{ - if (x) *x = m_internalDeviceOriginX; - if (y) *y = m_internalDeviceOriginY; -}; - -void wxDC::SetAxisOrientation( bool xLeftRight, bool yBottomUp ) -{ - m_signX = (xLeftRight ? 1 : -1); - m_signY = (yBottomUp ? -1 : 1); - ComputeScaleAndOrigin(); -}; - -long wxDC::DeviceToLogicalX(long x) const -{ - return XDEV2LOG(x); -}; - -long wxDC::DeviceToLogicalY(long y) const -{ - return YDEV2LOG(y); -}; - -long wxDC::DeviceToLogicalXRel(long x) const -{ - return XDEV2LOGREL(x); -}; - -long wxDC::DeviceToLogicalYRel(long y) const -{ - return YDEV2LOGREL(y); -}; - -long wxDC::LogicalToDeviceX(long x) const -{ - return XLOG2DEV(x); -}; - -long wxDC::LogicalToDeviceY(long y) const -{ - return YLOG2DEV(y); -}; - -long wxDC::LogicalToDeviceXRel(long x) const -{ - return XLOG2DEVREL(x); -}; - -long wxDC::LogicalToDeviceYRel(long y) const -{ - return YLOG2DEVREL(y); -}; - -void wxDC::CalcBoundingBox( long x, long y ) -{ - if (x < m_minX) m_minX = x; - if (y < m_minY) m_minY = y; - if (x > m_maxX) m_maxX = x; - if (y > m_maxY) m_maxY = y; -}; - -void wxDC::ComputeScaleAndOrigin(void) -{ - // CMB: copy scale to see if it changes - double origScaleX = m_scaleX; - double origScaleY = m_scaleY; - - m_scaleX = m_logicalScaleX * m_userScaleX; - m_scaleY = m_logicalScaleY * m_userScaleY; - - m_deviceOriginX = m_internalDeviceOriginX + m_externalDeviceOriginX; - m_deviceOriginY = m_internalDeviceOriginY + m_externalDeviceOriginY; - - // CMB: if scale has changed call SetPen to recalulate the line width - if (m_scaleX != origScaleX || m_scaleY != origScaleY) - { - // this is a bit artificial, but we need to force wxDC to think - // the pen has changed - wxPen* pen = GetPen(); - wxPen tempPen; - m_pen = tempPen; - SetPen(pen); - } -}; - diff --git a/src/qt/dcclient.cpp b/src/qt/dcclient.cpp deleted file mode 100644 index e25920d94f..0000000000 --- a/src/qt/dcclient.cpp +++ /dev/null @@ -1,620 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcclient.cpp -// Purpose: wxClientDC class -// Author: AUTHOR -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dcclient.h" -#endif - -#include "wx/dcclient.h" -#include "wx/dcmemory.h" -#include - -//----------------------------------------------------------------------------- -// constants -//----------------------------------------------------------------------------- - -#define RAD2DEG 57.2957795131 - -//----------------------------------------------------------------------------- -// wxPaintDC -//----------------------------------------------------------------------------- - -#if !USE_SHARED_LIBRARY -//IMPLEMENT_DYNAMIC_CLASS(wxClientDC, wxDC) -//IMPLEMENT_DYNAMIC_CLASS(wxWindowDC, wxDC) -IMPLEMENT_DYNAMIC_CLASS(wxPaintDC, wxDC) -#endif - - -wxPaintDC::wxPaintDC(void) -{ -}; - -wxPaintDC::wxPaintDC( wxWindow *window ) -{ -}; - -wxPaintDC::~wxPaintDC(void) -{ -}; - -void wxPaintDC::FloodFill( long WXUNUSED(x1), long WXUNUSED(y1), - wxColour *WXUNUSED(col), int WXUNUSED(style) ) -{ -}; - -bool wxPaintDC::GetPixel( long WXUNUSED(x1), long WXUNUSED(y1), wxColour *WXUNUSED(col) ) const -{ - return FALSE; -}; - -void wxPaintDC::DrawLine( long x1, long y1, long x2, long y2 ) -{ - if (!Ok()) return; - -}; - -void wxPaintDC::CrossHair( long x, long y ) -{ - if (!Ok()) return; - -}; - -void wxPaintDC::DrawArc( long x1, long y1, long x2, long y2, double xc, double yc ) -{ - if (!Ok()) return; - - long xx1 = XLOG2DEV(x1); - long yy1 = YLOG2DEV(y1); - long xx2 = XLOG2DEV(x2); - long yy2 = YLOG2DEV(y2); - long xxc = XLOG2DEV((long)xc); - long yyc = YLOG2DEV((long)yc); - double dx = xx1 - xxc; - double dy = yy1 - yyc; - double radius = sqrt(dx*dx+dy*dy); - long r = (long)radius; - double radius1, radius2; - - if (xx1 == xx2 && yy1 == yy2) - { - radius1 = 0.0; - radius2 = 360.0; - } - else - if (radius == 0.0) - { - radius1 = radius2 = 0.0; - } - else - { - radius1 = (xx1 - xxc == 0) ? - (yy1 - yyc < 0) ? 90.0 : -90.0 : - -atan2(double(yy1-yyc), double(xx1-xxc)) * RAD2DEG; - radius2 = (xx2 - xxc == 0) ? - (yy2 - yyc < 0) ? 90.0 : -90.0 : - -atan2(double(yy2-yyc), double(xx2-xxc)) * RAD2DEG; - }; - long alpha1 = long(radius1 * 64.0); - long alpha2 = long((radius2 - radius1) * 64.0); - while (alpha2 <= 0) alpha2 += 360*64; - while (alpha1 > 360*64) alpha1 -= 360*64; - - if (m_brush.GetStyle() != wxTRANSPARENT) {}; - - if (m_pen.GetStyle() != wxTRANSPARENT) {}; - -}; - -void wxPaintDC::DrawEllipticArc( long x, long y, long width, long height, double sa, double ea ) -{ - if (!Ok()) return; - - long xx = XLOG2DEV(x); - long yy = YLOG2DEV(y); - long ww = m_signX * XLOG2DEVREL(width); - long hh = m_signY * YLOG2DEVREL(height); - - // CMB: handle -ve width and/or height - if (ww < 0) { ww = -ww; xx = xx - ww; } - if (hh < 0) { hh = -hh; yy = yy - hh; } - - long start = long(sa * 64.0); - long end = long(ea * 64.0); - if (m_brush.GetStyle() != wxTRANSPARENT) {}; - - if (m_pen.GetStyle() != wxTRANSPARENT) {}; -}; - -void wxPaintDC::DrawPoint( long x, long y ) -{ - if (!Ok()) return; - - if (m_pen.GetStyle() != wxTRANSPARENT) {}; -}; - -void wxPaintDC::DrawLines( int n, wxPoint points[], long xoffset, long yoffset ) -{ - if (!Ok()) return; - - if (m_pen.GetStyle() == wxTRANSPARENT) return; - - for (int i = 0; i < n-1; i++) - { - long x1 = XLOG2DEV(points[i].x + xoffset); - long x2 = XLOG2DEV(points[i+1].x + xoffset); - long y1 = YLOG2DEV(points[i].y + yoffset); // oh, what a waste - long y2 = YLOG2DEV(points[i+1].y + yoffset); - }; -}; - -void wxPaintDC::DrawLines( wxList *points, long xoffset, long yoffset ) -{ - if (!Ok()) return; - - if (m_pen.GetStyle() == wxTRANSPARENT) return; - - wxNode *node = points->First(); - while (node->Next()) - { - wxPoint *point = (wxPoint*)node->Data(); - wxPoint *npoint = (wxPoint*)node->Next()->Data(); - long x1 = XLOG2DEV(point->x + xoffset); - long x2 = XLOG2DEV(npoint->x + xoffset); - long y1 = YLOG2DEV(point->y + yoffset); // and again... - long y2 = YLOG2DEV(npoint->y + yoffset); - node = node->Next(); - }; -}; - -void wxPaintDC::DrawPolygon( int WXUNUSED(n), wxPoint WXUNUSED(points)[], - long WXUNUSED(xoffset), long WXUNUSED(yoffset), int WXUNUSED(fillStyle) ) -{ - if (!Ok()) return; -}; - -void wxPaintDC::DrawPolygon( wxList *WXUNUSED(lines), long WXUNUSED(xoffset), - long WXUNUSED(yoffset), int WXUNUSED(fillStyle) ) -{ - if (!Ok()) return; -}; - -void wxPaintDC::DrawRectangle( long x, long y, long width, long height ) -{ - if (!Ok()) return; - - long xx = XLOG2DEV(x); - long yy = YLOG2DEV(y); - long ww = m_signX * XLOG2DEVREL(width); - long hh = m_signY * YLOG2DEVREL(height); - - // CMB: draw nothing if transformed w or h is 0 - if (ww == 0 || hh == 0) return; - - // CMB: handle -ve width and/or height - if (ww < 0) { ww = -ww; xx = xx - ww; } - if (hh < 0) { hh = -hh; yy = yy - hh; } - - if (m_brush.GetStyle() != wxTRANSPARENT) {}; - - if (m_pen.GetStyle() != wxTRANSPARENT) {}; -}; - -void wxPaintDC::DrawRoundedRectangle( long x, long y, long width, long height, double radius ) -{ - if (!Ok()) return; - - if (radius < 0.0) radius = - radius * ((width < height) ? width : height); - - long xx = XLOG2DEV(x); - long yy = YLOG2DEV(y); - long ww = m_signX * XLOG2DEVREL(width); - long hh = m_signY * YLOG2DEVREL(height); - long rr = XLOG2DEVREL((long)radius); - - // CMB: handle -ve width and/or height - if (ww < 0) { ww = -ww; xx = xx - ww; } - if (hh < 0) { hh = -hh; yy = yy - hh; } - - // CMB: if radius is zero use DrawRectangle() instead to avoid - // X drawing errors with small radii - if (rr == 0) - { - DrawRectangle( x, y, width, height ); - return; - } - - // CMB: draw nothing if transformed w or h is 0 - if (ww == 0 || hh == 0) return; - - // CMB: adjust size if outline is drawn otherwise the result is - // 1 pixel too wide and high - if (m_pen.GetStyle() != wxTRANSPARENT) - { - ww--; - hh--; - } - - // CMB: ensure dd is not larger than rectangle otherwise we - // get an hour glass shape - long dd = 2 * rr; - if (dd > ww) dd = ww; - if (dd > hh) dd = hh; - rr = dd / 2; - - if (m_brush.GetStyle() != wxTRANSPARENT) - { - }; - - if (m_pen.GetStyle() != wxTRANSPARENT) - { - }; -}; - -void wxPaintDC::DrawEllipse( long x, long y, long width, long height ) -{ - if (!Ok()) return; - - long xx = XLOG2DEV(x); - long yy = YLOG2DEV(y); - long ww = m_signX * XLOG2DEVREL(width); - long hh = m_signY * YLOG2DEVREL(height); - - // CMB: handle -ve width and/or height - if (ww < 0) { ww = -ww; xx = xx - ww; } - if (hh < 0) { hh = -hh; yy = yy - hh; } - - if (m_brush.GetStyle() != wxTRANSPARENT) {}; - - if (m_pen.GetStyle() != wxTRANSPARENT) {}; -}; - -bool wxPaintDC::CanDrawBitmap(void) const -{ - return TRUE; -}; - -void wxPaintDC::DrawIcon( const wxIcon &icon, long x, long y, bool useMask ) -{ - if (!Ok()) return; - - if (!icon.Ok()) return; - - int xx = XLOG2DEV(x); - int yy = YLOG2DEV(y); - -}; - -bool wxPaintDC::Blit( long xdest, long ydest, long width, long height, - wxDC *source, long xsrc, long ysrc, int WXUNUSED(logical_func), bool WXUNUSED(useMask) ) -{ - if (!Ok()) return FALSE; - - // CMB 20/5/98: add blitting of bitmaps - if (source->IsKindOf(CLASSINFO(wxMemoryDC))) - { - wxMemoryDC* srcDC = (wxMemoryDC*)source; - /* - GdkBitmap* bmap = srcDC->m_selected.GetBitmap(); - if (bmap) - { - gdk_draw_bitmap ( - m_window, - m_textGC, - bmap, - source->DeviceToLogicalX(xsrc), source->DeviceToLogicalY(ysrc), - XLOG2DEV(xdest), YLOG2DEV(ydest), - source->DeviceToLogicalXRel(width), source->DeviceToLogicalYRel(height) - ); - return TRUE; - } - */ - } - - return TRUE; -}; - -void wxPaintDC::DrawText( const wxString &text, long x, long y, bool -WXUNUSED(use16) ) -{ - if (!Ok()) return; - -}; - - - -bool wxPaintDC::CanGetTextExtent(void) const -{ - return TRUE; -}; - -void wxPaintDC::GetTextExtent( const wxString &string, long *width, long *height, - long *WXUNUSED(descent), long *WXUNUSED(externalLeading), - wxFont *WXUNUSED(theFont), bool WXUNUSED(use16) ) -{ - if (!Ok()) return; - -}; - -long wxPaintDC::GetCharWidth(void) -{ - if (!Ok()) return 0; - -}; - -long wxPaintDC::GetCharHeight(void) -{ - if (!Ok()) return 0; - -}; - -void wxPaintDC::Clear(void) -{ - if (!Ok()) return; - -}; - -void wxPaintDC::SetFont( const wxFont &font ) -{ - if (!Ok()) return; - - m_font = font; -}; - -void wxPaintDC::SetPen( const wxPen &pen ) -{ - if (!Ok()) return; - - if (m_pen == pen) return; - - m_pen = pen; - - if (!m_pen.Ok()) return; -}; - -void wxPaintDC::SetBrush( const wxBrush &brush ) -{ - if (!Ok()) return; - - if (m_brush == brush) return; - - m_brush = brush; - - if (!m_brush.Ok()) return; - -}; - -void wxPaintDC::SetBackground( const wxBrush &brush ) -{ - if (!Ok()) return; - - if (m_backgroundBrush == brush) return; - - m_backgroundBrush = brush; - - if (!m_backgroundBrush.Ok()) return; - -}; - -void wxPaintDC::SetLogicalFunction( int function ) -{ - if (m_logicalFunction == function) return; -}; - -void wxPaintDC::SetTextForeground( const wxColour &col ) -{ - if (!Ok()) return; - - if (m_textForegroundColour == col) return; - - m_textForegroundColour = col; - if (!m_textForegroundColour.Ok()) return; -}; - -void wxPaintDC::SetTextBackground( const wxColour &col ) -{ - if (!Ok()) return; - - if (m_textBackgroundColour == col) return; - - m_textBackgroundColour = col; - if (!m_textBackgroundColour.Ok()) return; -}; - -void wxPaintDC::SetBackgroundMode( int mode ) -{ - m_backgroundMode = mode; - - if (m_brush.GetStyle() != wxSOLID && m_brush.GetStyle() != wxTRANSPARENT) - { - } -}; - -void wxPaintDC::SetPalette( const wxPalette& WXUNUSED(palette) ) -{ -}; - -void wxPaintDC::SetClippingRegion( long x, long y, long width, long height ) -{ - wxDC::SetClippingRegion( x, y, width, height ); - -}; - -void wxPaintDC::DestroyClippingRegion(void) -{ - wxDC::DestroyClippingRegion(); - -}; - -// ----------------------------------- spline code ---------------------------------------- - -void wx_quadratic_spline(double a1, double b1, double a2, double b2, - double a3, double b3, double a4, double b4); -void wx_clear_stack(void); -int wx_spline_pop(double *x1, double *y1, double *x2, double *y2, double *x3, - double *y3, double *x4, double *y4); -void wx_spline_push(double x1, double y1, double x2, double y2, double x3, double y3, - double x4, double y4); -static bool wx_spline_add_point(double x, double y); -static void wx_spline_draw_point_array(wxDC *dc); - -wxList wx_spline_point_list; - -#define half(z1, z2) ((z1+z2)/2.0) -#define THRESHOLD 5 - -/* iterative version */ - -void wx_quadratic_spline(double a1, double b1, double a2, double b2, double a3, double b3, double a4, - double b4) -{ - register double xmid, ymid; - double x1, y1, x2, y2, x3, y3, x4, y4; - - wx_clear_stack(); - wx_spline_push(a1, b1, a2, b2, a3, b3, a4, b4); - - while (wx_spline_pop(&x1, &y1, &x2, &y2, &x3, &y3, &x4, &y4)) { - xmid = (double)half(x2, x3); - ymid = (double)half(y2, y3); - if (fabs(x1 - xmid) < THRESHOLD && fabs(y1 - ymid) < THRESHOLD && - fabs(xmid - x4) < THRESHOLD && fabs(ymid - y4) < THRESHOLD) { - wx_spline_add_point( x1, y1 ); - wx_spline_add_point( xmid, ymid ); - } else { - wx_spline_push(xmid, ymid, (double)half(xmid, x3), (double)half(ymid, y3), - (double)half(x3, x4), (double)half(y3, y4), x4, y4); - wx_spline_push(x1, y1, (double)half(x1, x2), (double)half(y1, y2), - (double)half(x2, xmid), (double)half(y2, ymid), xmid, ymid); - } - } -} - -/* utilities used by spline drawing routines */ - -typedef struct wx_spline_stack_struct { - double x1, y1, x2, y2, x3, y3, x4, y4; -} Stack; - -#define SPLINE_STACK_DEPTH 20 -static Stack wx_spline_stack[SPLINE_STACK_DEPTH]; -static Stack *wx_stack_top; -static int wx_stack_count; - -void wx_clear_stack(void) -{ - wx_stack_top = wx_spline_stack; - wx_stack_count = 0; -} - -void wx_spline_push(double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4) -{ - wx_stack_top->x1 = x1; - wx_stack_top->y1 = y1; - wx_stack_top->x2 = x2; - wx_stack_top->y2 = y2; - wx_stack_top->x3 = x3; - wx_stack_top->y3 = y3; - wx_stack_top->x4 = x4; - wx_stack_top->y4 = y4; - wx_stack_top++; - wx_stack_count++; -} - -int wx_spline_pop(double *x1, double *y1, double *x2, double *y2, - double *x3, double *y3, double *x4, double *y4) -{ - if (wx_stack_count == 0) - return (0); - wx_stack_top--; - wx_stack_count--; - *x1 = wx_stack_top->x1; - *y1 = wx_stack_top->y1; - *x2 = wx_stack_top->x2; - *y2 = wx_stack_top->y2; - *x3 = wx_stack_top->x3; - *y3 = wx_stack_top->y3; - *x4 = wx_stack_top->x4; - *y4 = wx_stack_top->y4; - return (1); -} - -static bool wx_spline_add_point(double x, double y) -{ - wxPoint *point = new wxPoint ; - point->x = (int) x; - point->y = (int) y; - wx_spline_point_list.Append((wxObject*)point); - return TRUE; -} - -static void wx_spline_draw_point_array(wxDC *dc) -{ - dc->DrawLines(&wx_spline_point_list, 0, 0 ); - wxNode *node = wx_spline_point_list.First(); - while (node) - { - wxPoint *point = (wxPoint *)node->Data(); - delete point; - delete node; - node = wx_spline_point_list.First(); - } -} - -void wxPaintDC::DrawOpenSpline( wxList *points ) -{ - wxPoint *p; - double cx1, cy1, cx2, cy2, cx3, cy3, cx4, cy4; - double x1, y1, x2, y2; - - wxNode *node = points->First(); - p = (wxPoint *)node->Data(); - - x1 = p->x; - y1 = p->y; - - node = node->Next(); - p = (wxPoint *)node->Data(); - - x2 = p->x; - y2 = p->y; - cx1 = (double)((x1 + x2) / 2); - cy1 = (double)((y1 + y2) / 2); - cx2 = (double)((cx1 + x2) / 2); - cy2 = (double)((cy1 + y2) / 2); - - wx_spline_add_point(x1, y1); - - while ((node = node->Next()) != NULL) - { - p = (wxPoint *)node->Data(); - x1 = x2; - y1 = y2; - x2 = p->x; - y2 = p->y; - cx4 = (double)(x1 + x2) / 2; - cy4 = (double)(y1 + y2) / 2; - cx3 = (double)(x1 + cx4) / 2; - cy3 = (double)(y1 + cy4) / 2; - - wx_quadratic_spline(cx1, cy1, cx2, cy2, cx3, cy3, cx4, cy4); - - cx1 = cx4; - cy1 = cy4; - cx2 = (double)(cx1 + x2) / 2; - cy2 = (double)(cy1 + y2) / 2; - } - - wx_spline_add_point( cx1, cy1 ); - wx_spline_add_point( x2, y2 ); - - wx_spline_draw_point_array( this ); -}; diff --git a/src/qt/dcmemory.cpp b/src/qt/dcmemory.cpp deleted file mode 100644 index c6066bb1ab..0000000000 --- a/src/qt/dcmemory.cpp +++ /dev/null @@ -1,68 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcmemory.cpp -// Purpose: wxMemoryDC class -// Author: AUTHOR -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dcmemory.h" -#endif - -#include "wx/dcmemory.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxMemoryDC, wxDC) -#endif - -//----------------------------------------------------------------------------- -// wxMemoryDC -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxMemoryDC,wxPaintDC) - -wxMemoryDC::wxMemoryDC(void) -{ - m_ok = FALSE; -}; - -wxMemoryDC::wxMemoryDC( wxDC *WXUNUSED(dc) ) -{ - m_ok = FALSE; -}; - -wxMemoryDC::~wxMemoryDC(void) -{ -}; - -void wxMemoryDC::SelectObject( const wxBitmap& bitmap ) -{ - m_selected = bitmap; - if (m_selected.Ok()) - { - } - else - { - m_ok = FALSE; - }; -}; - -void wxMemoryDC::GetSize( int *width, int *height ) const -{ - if (m_selected.Ok()) - { - if (width) (*width) = m_selected.GetWidth(); - if (height) (*height) = m_selected.GetHeight(); - } - else - { - if (width) (*width) = 0; - if (height) (*height) = 0; - }; -}; - - diff --git a/src/qt/dcscreen.cpp b/src/qt/dcscreen.cpp deleted file mode 100644 index 04bbf4f353..0000000000 --- a/src/qt/dcscreen.cpp +++ /dev/null @@ -1,32 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcscreen.cpp -// Purpose: wxScreenDC class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dcscreen.h" -#endif - -#include "wx/dcscreen.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxScreenDC, wxPaintDC) -#endif - -// Create a DC representing the whole screen -wxScreenDC::wxScreenDC() -{ - // TODO -} - -wxScreenDC::~wxScreenDC() -{ - // TODO -} - diff --git a/src/qt/dialog.cpp b/src/qt/dialog.cpp deleted file mode 100644 index 9b72fb0f69..0000000000 --- a/src/qt/dialog.cpp +++ /dev/null @@ -1,294 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dialog.cpp -// Purpose: wxDialog class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dialog.h" -#endif - -#include "wx/dialog.h" -#include "wx/utils.h" -#include "wx/frame.h" -#include "wx/app.h" -#include "wx/settings.h" - -// Lists to keep track of windows, so we can disable/enable them -// for modal dialogs -wxList wxModalDialogs; -wxList wxModelessWindows; // Frames and modeless dialogs -extern wxList wxPendingDelete; - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxDialog, wxPanel) - -BEGIN_EVENT_TABLE(wxDialog, wxPanel) - EVT_BUTTON(wxID_OK, wxDialog::OnOK) - EVT_BUTTON(wxID_APPLY, wxDialog::OnApply) - EVT_BUTTON(wxID_CANCEL, wxDialog::OnCancel) - EVT_CHAR_HOOK(wxDialog::OnCharHook) - EVT_SYS_COLOUR_CHANGED(wxDialog::OnSysColourChanged) - EVT_CLOSE(wxDialog::OnCloseWindow) -END_EVENT_TABLE() - -#endif - -wxDialog::wxDialog() -{ - SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE)); -} - -bool wxDialog::Create(wxWindow *parent, wxWindowID id, - const wxString& title, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - m_windowStyle = style; - - SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE)); - SetName(name); - - if (!parent) - wxTopLevelWindows.Append(this); - - if (parent) parent->AddChild(this); - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - // TODO: create dialog - - return FALSE; -} - -void wxDialog::SetModal(bool flag) -{ - if ( flag ) - m_windowStyle |= wxDIALOG_MODAL ; - else - if ( m_windowStyle & wxDIALOG_MODAL ) - m_windowStyle -= wxDIALOG_MODAL ; - - wxModelessWindows.DeleteObject(this); - if (!flag) - wxModelessWindows.Append(this); -} - -wxDialog::~wxDialog() -{ - // TODO - wxTopLevelWindows.DeleteObject(this); - - if ( (GetWindowStyleFlag() & wxDIALOG_MODAL) != wxDIALOG_MODAL ) - wxModelessWindows.DeleteObject(this); - - // If this is the last top-level window, exit. - if (wxTheApp && (wxTopLevelWindows.Number() == 0)) - { - wxTheApp->SetTopWindow(NULL); - - if (wxTheApp->GetExitOnFrameDelete()) - { - // TODO: exit - } - } -} - -// By default, pressing escape cancels the dialog -void wxDialog::OnCharHook(wxKeyEvent& event) -{ - if (GetHWND()) - { - if (event.m_keyCode == WXK_ESCAPE) - { - // Behaviour changed in 2.0: we'll send a Cancel message - // to the dialog instead of Close. - wxCommandEvent cancelEvent(wxEVT_COMMAND_BUTTON_CLICKED, wxID_CANCEL); - cancelEvent.SetEventObject( this ); - GetEventHandler()->ProcessEvent(cancelEvent); - - return; - } - } - // We didn't process this event. - event.Skip(); -} - -void wxDialog::Iconize(bool WXUNUSED(iconize)) -{ - // TODO -} - -bool wxDialog::IsIconized() const -{ - // TODO - return FALSE; -} - -void wxDialog::SetClientSize(int width, int height) -{ - // TODO -} - -void wxDialog::GetPosition(int *x, int *y) const -{ - // TODO -} - -bool wxDialog::Show(bool show) -{ - // TODO - return FALSE; -} - -void wxDialog::SetTitle(const wxString& title) -{ - // TODO -} - -wxString wxDialog::GetTitle() const -{ - // TODO - return wxString(""); -} - -void wxDialog::Centre(int direction) -{ - int x_offset,y_offset ; - int display_width, display_height; - int width, height, x, y; - wxFrame *frame ; - if (direction & wxCENTER_FRAME) - { - frame = (wxFrame*)GetParent() ; - if (frame) - { - frame->GetPosition(&x_offset,&y_offset) ; - frame->GetSize(&display_width,&display_height) ; - } - } - else - frame = NULL ; - - if (frame==NULL) - { - wxDisplaySize(&display_width, &display_height); - x_offset = 0 ; - y_offset = 0 ; - } - - GetSize(&width, &height); - GetPosition(&x, &y); - - if (direction & wxHORIZONTAL) - x = (int)((display_width - width)/2); - if (direction & wxVERTICAL) - y = (int)((display_height - height)/2); - - SetSize(x+x_offset, y+y_offset, width, height); -} - -// Replacement for Show(TRUE) for modal dialogs - returns return code -int wxDialog::ShowModal() -{ - m_windowStyle |= wxDIALOG_MODAL; - // TODO: modal showing - Show(TRUE); - return GetReturnCode(); -} - -void wxDialog::EndModal(int retCode) -{ - SetReturnCode(retCode); - // TODO modal un-showing - Show(FALSE); -} - -// Standard buttons -void wxDialog::OnOK(wxCommandEvent& event) -{ - if ( Validate() && TransferDataFromWindow() ) - { - if ( IsModal() ) - EndModal(wxID_OK); - else - { - SetReturnCode(wxID_OK); - this->Show(FALSE); - } - } -} - -void wxDialog::OnApply(wxCommandEvent& event) -{ - if (Validate()) - TransferDataFromWindow(); - // TODO probably need to disable the Apply button until things change again -} - -void wxDialog::OnCancel(wxCommandEvent& event) -{ - if ( IsModal() ) - EndModal(wxID_CANCEL); - else - { - SetReturnCode(wxID_CANCEL); - this->Show(FALSE); - } -} - -bool wxDialog::OnClose() -{ - // Behaviour changed in 2.0: we'll send a Cancel message by default, - // which may close the dialog. - // Check for looping if the Cancel event handler calls Close() - - static wxList closing; - - if ( closing.Member(this) ) - return FALSE; - - closing.Append(this); - - wxCommandEvent cancelEvent(wxEVT_COMMAND_BUTTON_CLICKED, wxID_CANCEL); - cancelEvent.SetEventObject( this ); - GetEventHandler()->ProcessEvent(cancelEvent); - - closing.DeleteObject(this); - - return FALSE; -} - -void wxDialog::OnCloseWindow(wxCloseEvent& event) -{ - // Compatibility - if ( GetEventHandler()->OnClose() || event.GetForce()) - { - this->Destroy(); - } -} - -// Destroy the window (delayed, if a managed window) -bool wxDialog::Destroy() -{ - if (!wxPendingDelete.Member(this)) - wxPendingDelete.Append(this); - return TRUE; -} - -void wxDialog::OnSysColourChanged(wxSysColourChangedEvent& event) -{ - SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE)); - Refresh(); -} - diff --git a/src/qt/dnd.cpp b/src/qt/dnd.cpp deleted file mode 100644 index ec82cb6dc1..0000000000 --- a/src/qt/dnd.cpp +++ /dev/null @@ -1,133 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: dnd.cpp -// Purpose: wxDropTarget, wxDropSource, wxDataObject implementation -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 AUTHOR -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dnd.h" -#endif - -#include "wx/dnd.h" -#include "wx/window.h" -#include "wx/app.h" -#include "wx/gdicmn.h" - -// ---------------------------------------------------------------------------- -// global -// ---------------------------------------------------------------------------- - -// ---------------------------------------------------------------------------- -// wxDropTarget -// ---------------------------------------------------------------------------- - -wxDropTarget::wxDropTarget() -{ -}; - -wxDropTarget::~wxDropTarget() -{ -}; - -// ---------------------------------------------------------------------------- -// wxTextDropTarget -// ---------------------------------------------------------------------------- - -bool wxTextDropTarget::OnDrop( long x, long y, const void *pData ) -{ - OnDropText( x, y, (const char*)pData ); - return TRUE; -}; - -bool wxTextDropTarget::OnDropText( long x, long y, const char *psz ) -{ - printf( "Got dropped text: %s.\n", psz ); - printf( "At x: %d, y: %d.\n", (int)x, (int)y ); - return TRUE; -}; - -size_t wxTextDropTarget::GetFormatCount() const -{ - return 1; -} - -wxDataFormat wxTextDropTarget::GetFormat(size_t WXUNUSED(n)) const -{ - return wxDF_TEXT; -} - -// ---------------------------------------------------------------------------- -// wxFileDropTarget -// ---------------------------------------------------------------------------- - -bool wxFileDropTarget::OnDropFiles( long x, long y, size_t nFiles, const char * const WXUNUSED(aszFiles)[] ) -{ - printf( "Got %d dropped files.\n", (int)nFiles ); - printf( "At x: %d, y: %d.\n", (int)x, (int)y ); - return TRUE; -} - -bool wxFileDropTarget::OnDrop(long x, long y, const void *WXUNUSED(pData) ) -{ - char *str = "/this/is/a/path.txt"; - - return OnDropFiles(x, y, 1, &str ); -} - -size_t wxFileDropTarget::GetFormatCount() const -{ - return 1; -} - -wxDataFormat wxFileDropTarget::GetFormat(size_t WXUNUSED(n)) const -{ - return wxDF_FILENAME; -} - -//------------------------------------------------------------------------- -// wxDropSource -//------------------------------------------------------------------------- - -//----------------------------------------------------------------------------- -// drag request - -wxDropSource::wxDropSource( wxWindow *win ) -{ - // TODO - m_window = win; - m_data = NULL; - - m_defaultCursor = wxCursor( wxCURSOR_NO_ENTRY ); - m_goaheadCursor = wxCursor( wxCURSOR_HAND ); -}; - -wxDropSource::wxDropSource( wxDataObject &data, wxWindow *win ) -{ - // TODO - m_window = win; - m_data = &data; - - m_defaultCursor = wxCursor( wxCURSOR_NO_ENTRY ); - m_goaheadCursor = wxCursor( wxCURSOR_HAND ); -}; - -void wxDropSource::SetData( wxDataObject &data ) -{ - m_data = &data; -}; - -wxDropSource::~wxDropSource(void) -{ -}; - -wxDropSource::DragResult wxDropSource::DoDragDrop( bool WXUNUSED(bAllowMove) ) -{ - // TODO - return Error; -}; - diff --git a/src/qt/fdiag.xbm b/src/qt/fdiag.xbm deleted file mode 100644 index 67d3b4732a..0000000000 --- a/src/qt/fdiag.xbm +++ /dev/null @@ -1,6 +0,0 @@ -#define fdiag_width 16 -#define fdiag_height 16 -static char fdiag_bits[] = { - 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, - 0x40, 0x40, 0x80, 0x80, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, - 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80}; diff --git a/src/qt/filedlg.cpp b/src/qt/filedlg.cpp deleted file mode 100644 index cf096037d6..0000000000 --- a/src/qt/filedlg.cpp +++ /dev/null @@ -1,142 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: filedlg.cpp -// Purpose: wxFileDialog -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "filedlg.h" -#endif - -#include "wx/defs.h" -#include "wx/utils.h" -#include "wx/dialog.h" -#include "wx/filedlg.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_CLASS(wxFileDialog, wxDialog) -#endif - -char *wxFileSelector(const char *title, - const char *defaultDir, const char *defaultFileName, - const char *defaultExtension, const char *filter, int flags, - wxWindow *parent, int x, int y) -{ - // If there's a default extension specified but no filter, we create a suitable - // filter. - - wxString filter2(""); - if ( defaultExtension && !filter ) - filter2 = wxString("*.") + wxString(defaultExtension) ; - else if ( filter ) - filter2 = filter; - - wxString defaultDirString; - if (defaultDir) - defaultDirString = defaultDir; - else - defaultDirString = ""; - - wxString defaultFilenameString; - if (defaultFileName) - defaultFilenameString = defaultFileName; - else - defaultFilenameString = ""; - - wxFileDialog fileDialog(parent, title, defaultDirString, defaultFilenameString, filter2, flags, wxPoint(x, y)); - - if ( fileDialog.ShowModal() == wxID_OK ) - { - strcpy(wxBuffer, (const char *)fileDialog.GetPath()); - return wxBuffer; - } - else - return NULL; -} - -char *wxFileSelectorEx(const char *title, - const char *defaultDir, - const char *defaultFileName, - int* defaultFilterIndex, - const char *filter, - int flags, - wxWindow* parent, - int x, - int y) - -{ - wxFileDialog fileDialog(parent, title ? title : "", defaultDir ? defaultDir : "", - defaultFileName ? defaultFileName : "", filter ? filter : "", flags, wxPoint(x, y)); - - if ( fileDialog.ShowModal() == wxID_OK ) - { - *defaultFilterIndex = fileDialog.GetFilterIndex(); - strcpy(wxBuffer, (const char *)fileDialog.GetPath()); - return wxBuffer; - } - else - return NULL; -} - -wxFileDialog::wxFileDialog(wxWindow *parent, const wxString& message, - const wxString& defaultDir, const wxString& defaultFileName, const wxString& wildCard, - long style, const wxPoint& pos) -{ - m_message = message; - m_dialogStyle = style; - m_parent = parent; - m_path = ""; - m_fileName = defaultFileName; - m_dir = defaultDir; - m_wildCard = wildCard; - m_filterIndex = 1; -} - -int wxFileDialog::ShowModal() -{ - // TODO - wxID_CANCEL; -} - -// Generic file load/save dialog -static char * -wxDefaultFileSelector(bool load, const char *what, const char *extension, const char *default_name, wxWindow *parent) -{ - char *ext = (char *)extension; - - char prompt[50]; - wxString str; - if (load) - str = "Load %s file"; - else - str = "Save %s file"; - sprintf(prompt, wxGetTranslation(str), what); - - if (*ext == '.') ext++; - char wild[60]; - sprintf(wild, "*.%s", ext); - - return wxFileSelector (prompt, NULL, default_name, ext, wild, 0, parent); -} - -// Generic file load dialog -char * -wxLoadFileSelector(const char *what, const char *extension, const char *default_name, wxWindow *parent) -{ - return wxDefaultFileSelector(TRUE, what, extension, default_name, parent); -} - - -// Generic file save dialog -char * -wxSaveFileSelector(const char *what, const char *extension, const char *default_name, wxWindow *parent) -{ - return wxDefaultFileSelector(FALSE, what, extension, default_name, parent); -} - - diff --git a/src/qt/font.cpp b/src/qt/font.cpp deleted file mode 100644 index 5835259696..0000000000 --- a/src/qt/font.cpp +++ /dev/null @@ -1,241 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: font.cpp -// Purpose: wxFont class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "font.h" -#endif - -#include "wx/font.h" - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxFont, wxGDIObject) -#endif - -wxFontRefData::wxFontRefData() -{ - m_style = 0; - m_pointSize = 0; - m_family = 0; - m_style = 0; - m_weight = 0; - m_underlined = 0; - m_faceName = ""; -/* TODO - m_hFont = 0; -*/ -} - -wxFontRefData::wxFontRefData(const wxFontRefData& data) -{ - m_style = data.m_style; - m_pointSize = data.m_pointSize; - m_family = data.m_family; - m_style = data.m_style; - m_weight = data.m_weight; - m_underlined = data.m_underlined; - m_faceName = data.m_faceName; -/* TODO - m_hFont = 0; -*/ -} - -wxFontRefData::~wxFontRefData() -{ - // TODO: delete font data -} - -wxFont::wxFont() -{ - if ( wxTheFontList ) - wxTheFontList->Append(this); -} - -wxFont::wxFont(int pointSize, int family, int style, int weight, bool underlined, const wxString& faceName) -{ - Create(pointSize, family, style, weight, underlined, faceName); - - if ( wxTheFontList ) - wxTheFontList->Append(this); -} - -bool wxFont::Create(int pointSize, int family, int style, int weight, bool underlined, const wxString& faceName) -{ - UnRef(); - m_refData = new wxFontRefData; - - M_FONTDATA->m_family = family; - M_FONTDATA->m_style = style; - M_FONTDATA->m_weight = weight; - M_FONTDATA->m_pointSize = pointSize; - M_FONTDATA->m_underlined = underlined; - M_FONTDATA->m_faceName = faceName; - - RealizeResource(); - - return TRUE; -} - -wxFont::~wxFont() -{ - if (wxTheFontList) - wxTheFontList->DeleteObject(this); -} - -bool wxFont::RealizeResource() -{ - // TODO: create the font (if there is a native font object) - return FALSE; -} - -void wxFont::Unshare() -{ - // Don't change shared data - if (!m_refData) - { - m_refData = new wxFontRefData(); - } - else - { - wxFontRefData* ref = new wxFontRefData(*(wxFontRefData*)m_refData); - UnRef(); - m_refData = ref; - } -} - -void wxFont::SetPointSize(int pointSize) -{ - Unshare(); - - M_FONTDATA->m_pointSize = pointSize; - - RealizeResource(); -} - -void wxFont::SetFamily(int family) -{ - Unshare(); - - M_FONTDATA->m_family = family; - - RealizeResource(); -} - -void wxFont::SetStyle(int style) -{ - Unshare(); - - M_FONTDATA->m_style = style; - - RealizeResource(); -} - -void wxFont::SetWeight(int weight) -{ - Unshare(); - - M_FONTDATA->m_weight = weight; - - RealizeResource(); -} - -void wxFont::SetFaceName(const wxString& faceName) -{ - Unshare(); - - M_FONTDATA->m_faceName = faceName; - - RealizeResource(); -} - -void wxFont::SetUnderlined(bool underlined) -{ - Unshare(); - - M_FONTDATA->m_underlined = underlined; - - RealizeResource(); -} - -wxString wxFont::GetFamilyString() const -{ - wxString fam(""); - switch (GetFamily()) - { - case wxDECORATIVE: - fam = "wxDECORATIVE"; - break; - case wxROMAN: - fam = "wxROMAN"; - break; - case wxSCRIPT: - fam = "wxSCRIPT"; - break; - case wxSWISS: - fam = "wxSWISS"; - break; - case wxMODERN: - fam = "wxMODERN"; - break; - case wxTELETYPE: - fam = "wxTELETYPE"; - break; - default: - fam = "wxDEFAULT"; - break; - } - return fam; -} - -/* New font system */ -wxString wxFont::GetFaceName() const -{ - wxString str(""); - if (M_FONTDATA) - str = M_FONTDATA->m_faceName ; - return str; -} - -wxString wxFont::GetStyleString() const -{ - wxString styl(""); - switch (GetStyle()) - { - case wxITALIC: - styl = "wxITALIC"; - break; - case wxSLANT: - styl = "wxSLANT"; - break; - default: - styl = "wxNORMAL"; - break; - } - return styl; -} - -wxString wxFont::GetWeightString() const -{ - wxString w(""); - switch (GetWeight()) - { - case wxBOLD: - w = "wxBOLD"; - break; - case wxLIGHT: - w = "wxLIGHT"; - break; - default: - w = "wxNORMAL"; - break; - } - return w; -} - diff --git a/src/qt/frame.cpp b/src/qt/frame.cpp deleted file mode 100644 index 56f72c6dfe..0000000000 --- a/src/qt/frame.cpp +++ /dev/null @@ -1,546 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: frame.cpp -// Purpose: wxFrame -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "frame.h" -#endif - -#include "wx/frame.h" -#include "wx/statusbr.h" -#include "wx/toolbar.h" -#include "wx/menuitem.h" - -extern wxList wxModelessWindows; -extern wxList wxPendingDelete; - -#if !USE_SHARED_LIBRARY -BEGIN_EVENT_TABLE(wxFrame, wxWindow) - EVT_SIZE(wxFrame::OnSize) - EVT_ACTIVATE(wxFrame::OnActivate) - EVT_MENU_HIGHLIGHT_ALL(wxFrame::OnMenuHighlight) - EVT_SYS_COLOUR_CHANGED(wxFrame::OnSysColourChanged) - EVT_IDLE(wxFrame::OnIdle) - EVT_CLOSE(wxFrame::OnCloseWindow) -END_EVENT_TABLE() - -IMPLEMENT_DYNAMIC_CLASS(wxFrame, wxWindow) -#endif - -#if wxUSE_NATIVE_STATUSBAR -bool wxFrame::m_useNativeStatusBar = TRUE; -#else -bool wxFrame::m_useNativeStatusBar = FALSE; -#endif - -wxFrame::wxFrame() -{ - m_frameToolBar = NULL ; - m_frameMenuBar = NULL; - m_frameStatusBar = NULL; - - m_windowParent = NULL; - m_iconized = FALSE; -} - -bool wxFrame::Create(wxWindow *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - if (!parent) - wxTopLevelWindows.Append(this); - - SetName(name); - m_windowStyle = style; - m_frameMenuBar = NULL; - m_frameToolBar = NULL ; - m_frameStatusBar = NULL; - - SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE)); - - if ( id > -1 ) - m_windowId = id; - else - m_windowId = (int)NewControlId(); - - if (parent) parent->AddChild(this); - - wxModelessWindows.Append(this); - - // TODO: create frame. - - return FALSE; -} - -wxFrame::~wxFrame() -{ - wxTopLevelWindows.DeleteObject(this); - - if (m_frameStatusBar) - delete m_frameStatusBar; - if (m_frameMenuBar) - delete m_frameMenuBar; - -/* Check if it's the last top-level window */ - - if (wxTheApp && (wxTopLevelWindows.Number() == 0)) - { - wxTheApp->SetTopWindow(NULL); - - if (wxTheApp->GetExitOnFrameDelete()) - { - // TODO signal to the app that we're going to close - } - } - - wxModelessWindows.DeleteObject(this); -} - -// Get size *available for subwindows* i.e. excluding menu bar, toolbar etc. -void wxFrame::GetClientSize(int *x, int *y) const -{ - // TODO -} - -// Set the client size (i.e. leave the calculation of borders etc. -// to wxWindows) -void wxFrame::SetClientSize(int width, int height) -{ - // TODO -} - -void wxFrame::GetSize(int *width, int *height) const -{ - // TODO -} - -void wxFrame::GetPosition(int *x, int *y) const -{ - // TODO -} - -void wxFrame::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -bool wxFrame::Show(bool show) -{ - // TODO - return FALSE; -} - -void wxFrame::Iconize(bool iconize) -{ - // TODO -} - -// Equivalent to maximize/restore in Windows -void wxFrame::Maximize(bool maximize) -{ - // TODO -} - -bool wxFrame::IsIconized() const -{ - // TODO - return FALSE; -} - -void wxFrame::SetTitle(const wxString& title) -{ - // TODO -} - -wxString wxFrame::GetTitle() const -{ - // TODO - return wxString(""); -} - -void wxFrame::SetIcon(const wxIcon& icon) -{ - m_icon = icon; - // TODO -} - -void wxFrame::SetAcceleratorTable(const wxAcceleratorTable& accel) -{ - m_acceleratorTable = accel; -} - -wxStatusBar *wxFrame::OnCreateStatusBar(int number, long style, wxWindowID id, - const wxString& name) -{ - wxStatusBar *statusBar = NULL; - - statusBar = new wxStatusBar(this, id, wxPoint(0, 0), wxSize(100, 20), - style, name); - - // Set the height according to the font and the border size - wxClientDC dc(statusBar); - dc.SetFont(* statusBar->GetFont()); - - long x, y; - dc.GetTextExtent("X", &x, &y); - - int height = (int)( (y * 1.1) + 2* statusBar->GetBorderY()); - - statusBar->SetSize(-1, -1, 100, height); - - statusBar->SetFieldsCount(number); - return statusBar; -} - -wxStatusBar* wxFrame::CreateStatusBar(int number, long style, wxWindowID id, - const wxString& name) -{ - // Calling CreateStatusBar twice is an error. - wxCHECK_MSG( m_frameStatusBar == NULL, FALSE, - "recreating status bar in wxFrame" ); - - m_frameStatusBar = OnCreateStatusBar(number, style, id, - name); - if ( m_frameStatusBar ) - { - PositionStatusBar(); - return m_frameStatusBar; - } - else - return NULL; -} - -void wxFrame::SetStatusText(const wxString& text, int number) -{ - wxCHECK_RET( m_frameStatusBar != NULL, "no statusbar to set text for" ); - - m_frameStatusBar->SetStatusText(text, number); -} - -void wxFrame::SetStatusWidths(int n, const int widths_field[]) -{ - wxCHECK_RET( m_frameStatusBar != NULL, "no statusbar to set widths for" ); - - m_frameStatusBar->SetStatusWidths(n, widths_field); - PositionStatusBar(); -} - -void wxFrame::PositionStatusBar() -{ - int w, h; - GetClientSize(&w, &h); - int sw, sh; - m_frameStatusBar->GetSize(&sw, &sh); - - // Since we wish the status bar to be directly under the client area, - // we use the adjusted sizes without using wxSIZE_NO_ADJUSTMENTS. - m_frameStatusBar->SetSize(0, h, w, sh); -} - -void wxFrame::SetMenuBar(wxMenuBar *menuBar) -{ - if (!menuBar) - { - m_frameMenuBar = NULL; - return; - } - - m_frameMenuBar = menuBar; - - // TODO -} - -void wxFrame::Fit() -{ - // Work out max. size - wxNode *node = GetChildren()->First(); - int max_width = 0; - int max_height = 0; - while (node) - { - // Find a child that's a subwindow, but not a dialog box. - wxWindow *win = (wxWindow *)node->Data(); - - if (!win->IsKindOf(CLASSINFO(wxFrame)) && - !win->IsKindOf(CLASSINFO(wxDialog))) - { - int width, height; - int x, y; - win->GetSize(&width, &height); - win->GetPosition(&x, &y); - - if ((x + width) > max_width) - max_width = x + width; - if ((y + height) > max_height) - max_height = y + height; - } - node = node->Next(); - } - SetClientSize(max_width, max_height); -} - -// Responds to colour changes, and passes event on to children. -void wxFrame::OnSysColourChanged(wxSysColourChangedEvent& event) -{ - SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE)); - Refresh(); - - if ( m_frameStatusBar ) - { - wxSysColourChangedEvent event2; - event2.SetEventObject( m_frameStatusBar ); - m_frameStatusBar->ProcessEvent(event2); - } - - // Propagate the event to the non-top-level children - wxWindow::OnSysColourChanged(event); -} - -// Default resizing behaviour - if only ONE subwindow, -// resize to client rectangle size -void wxFrame::OnSize(wxSizeEvent& event) -{ - // if we're using constraints - do use them - #if wxUSE_CONSTRAINTS - if ( GetAutoLayout() ) { - Layout(); - return; - } - #endif - - // do we have _exactly_ one child? - wxWindow *child = NULL; - for ( wxNode *node = GetChildren()->First(); node; node = node->Next() ) - { - wxWindow *win = (wxWindow *)node->Data(); - if ( !win->IsKindOf(CLASSINFO(wxFrame)) && - !win->IsKindOf(CLASSINFO(wxDialog)) && - (win != GetStatusBar()) && - (win != GetToolBar()) ) - { - if ( child ) - return; // it's our second subwindow - nothing to do - child = win; - } - } - - if ( child ) { - // we have exactly one child - set it's size to fill the whole frame - int clientW, clientH; - GetClientSize(&clientW, &clientH); - - int x = 0; - int y = 0; - - child->SetSize(x, y, clientW, clientH); - } -} - -// Default activation behaviour - set the focus for the first child -// subwindow found. -void wxFrame::OnActivate(wxActivateEvent& event) -{ - for(wxNode *node = GetChildren()->First(); node; node = node->Next()) - { - // Find a child that's a subwindow, but not a dialog box. - wxWindow *child = (wxWindow *)node->Data(); - if (!child->IsKindOf(CLASSINFO(wxFrame)) && - !child->IsKindOf(CLASSINFO(wxDialog))) - { -#if WXDEBUG > 1 - wxDebugMsg("wxFrame::OnActivate: about to set the child's focus.\n"); -#endif - child->SetFocus(); - return; - } - } -} - -// The default implementation for the close window event - calls -// OnClose for backward compatibility. - -void wxFrame::OnCloseWindow(wxCloseEvent& event) -{ - // Compatibility - if ( GetEventHandler()->OnClose() || event.GetForce()) - { - this->Destroy(); - } -} - -bool wxFrame::OnClose() -{ - return TRUE; -} - -// Destroy the window (delayed, if a managed window) -bool wxFrame::Destroy() -{ - if (!wxPendingDelete.Member(this)) - wxPendingDelete.Append(this); - return TRUE; -} - -// Default menu selection behaviour - display a help string -void wxFrame::OnMenuHighlight(wxMenuEvent& event) -{ - if (GetStatusBar()) - { - if (event.GetMenuId() == -1) - SetStatusText(""); - else - { - wxMenuBar *menuBar = GetMenuBar(); - if (menuBar) - { - wxString helpString(menuBar->GetHelpString(event.GetMenuId())); - if (helpString != "") - SetStatusText(helpString); - } - } - } -} - -wxMenuBar *wxFrame::GetMenuBar() const -{ - return m_frameMenuBar; -} - -void wxFrame::Centre(int direction) -{ - int display_width, display_height, width, height, x, y; - wxDisplaySize(&display_width, &display_height); - - GetSize(&width, &height); - GetPosition(&x, &y); - - if (direction & wxHORIZONTAL) - x = (int)((display_width - width)/2); - if (direction & wxVERTICAL) - y = (int)((display_height - height)/2); - - SetSize(x, y, width, height); -} - -// Call this to simulate a menu command -void wxFrame::Command(int id) -{ - ProcessCommand(id); -} - -void wxFrame::ProcessCommand(int id) -{ - wxCommandEvent commandEvent(wxEVENT_TYPE_MENU_COMMAND, id); - commandEvent.SetInt( id ); - commandEvent.SetEventObject( this ); - - wxMenuBar *bar = GetMenuBar() ; - if (!bar) - return; - -/* TODO: check the menu item if required - wxMenuItem *item = bar->FindItemForId(id) ; - if (item && item->IsCheckable()) - { - bar->Check(id,!bar->Checked(id)) ; - } -*/ - - GetEventHandler()->ProcessEvent(commandEvent); -} - -// Checks if there is a toolbar, and returns the first free client position -wxPoint wxFrame::GetClientAreaOrigin() const -{ - wxPoint pt(0, 0); - if (GetToolBar()) - { - int w, h; - GetToolBar()->GetSize(& w, & h); - - if (GetToolBar()->GetWindowStyleFlag() & wxTB_VERTICAL) - { - pt.x += w; - } - else - { - pt.y += h; - } - } - return pt; -} - -wxToolBar* wxFrame::CreateToolBar(long style, wxWindowID id, const wxString& name) -{ - wxCHECK_MSG( m_frameToolBar == NULL, FALSE, - "recreating toolbar in wxFrame" ); - - wxToolBar* toolBar = OnCreateToolBar(style, id, name); - if (toolBar) - { - SetToolBar(toolBar); - PositionToolBar(); - return toolBar; - } - else - { - return NULL; - } -} - -wxToolBar* wxFrame::OnCreateToolBar(long style, wxWindowID id, const wxString& name) -{ - return new wxToolBar(this, id, wxDefaultPosition, wxDefaultSize, style, name); -} - -void wxFrame::PositionToolBar() -{ - int cw, ch; - - // TODO: we actually need to use the low-level client size, before - // the toolbar/status bar were added. - // So DEFINITELY replace the line below with something appropriate. - - wxCHECK_MSG( TRUE, FALSE, - "PositionToolBar not implemented properly, see frame.cpp" ); - - GetClientSize(& cw, &ch); - - if ( GetStatusBar() ) - { - int statusX, statusY; - GetStatusBar()->GetClientSize(&statusX, &statusY); - ch -= statusY; - } - - if (GetToolBar()) - { - int tw, th; - GetToolBar()->GetSize(& tw, & th); - - if (GetToolBar()->GetWindowStyleFlag() & wxTB_VERTICAL) - { - // Use the 'real' position. wxSIZE_NO_ADJUSTMENTS - // means, pretend we don't have toolbar/status bar, so we - // have the original client size. - GetToolBar()->SetSize(0, 0, tw, ch, wxSIZE_NO_ADJUSTMENTS); - } - else - { - // Use the 'real' position - GetToolBar()->SetSize(0, 0, cw, th, wxSIZE_NO_ADJUSTMENTS); - } - } -} - diff --git a/src/qt/gauge.cpp b/src/qt/gauge.cpp deleted file mode 100644 index 8e11c5001b..0000000000 --- a/src/qt/gauge.cpp +++ /dev/null @@ -1,105 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: gauge.cpp -// Purpose: wxGauge class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "gauge.h" -#endif - -#include "wx/gauge.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxGauge, wxControl) -#endif - -bool wxGauge::Create(wxWindow *parent, wxWindowID id, - int range, - const wxPoint& pos, - const wxSize& size, - long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); - SetValidator(validator); - m_rangeMax = range; - m_windowStyle = style; - - if (parent) parent->AddChild(this); - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - - // TODO - return FALSE; -} - -void wxGauge::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -void wxGauge::SetShadowWidth(int w) -{ - // TODO optional -} - -void wxGauge::SetBezelFace(int w) -{ - // TODO optional -} - -void wxGauge::SetRange(int r) -{ - m_rangeMax = r; - // TODO -} - -void wxGauge::SetValue(int pos) -{ - m_gaugePos = pos; - // TODO -} - -int wxGauge::GetShadowWidth() const -{ - // TODO optional - return 0; -} - -int wxGauge::GetBezelFace() const -{ - // TODO optional - return 0; -} - -int wxGauge::GetRange() const -{ - return m_rangeMax; -} - -int wxGauge::GetValue() const -{ - return m_gaugePos; -} - -void wxGauge::SetForegroundColour(const wxColour& col) -{ - m_foregroundColour = col ; -} - -void wxGauge::SetBackgroundColour(const wxColour& col) -{ - m_backgroundColour = col ; -} - diff --git a/src/qt/gdiobj.cpp b/src/qt/gdiobj.cpp deleted file mode 100644 index 63697c8354..0000000000 --- a/src/qt/gdiobj.cpp +++ /dev/null @@ -1,22 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: gdiobj.cpp -// Purpose: wxGDIObject class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "gdiobj.h" -#endif - -#include "wx/gdiobj.h" - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxGDIObject, wxObject) -#endif - -// TODO: Nothing to do, unless you want to. diff --git a/src/qt/horiz.xbm b/src/qt/horiz.xbm deleted file mode 100644 index ff3309bcc4..0000000000 --- a/src/qt/horiz.xbm +++ /dev/null @@ -1,6 +0,0 @@ -#define horiz_width 15 -#define horiz_height 15 -static char horiz_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00}; diff --git a/src/qt/icon.cpp b/src/qt/icon.cpp deleted file mode 100644 index 6deee7dbdc..0000000000 --- a/src/qt/icon.cpp +++ /dev/null @@ -1,70 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: icon.cpp -// Purpose: wxIcon class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "icon.h" -#endif - -#include "wx/icon.h" - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxIcon, wxBitmap) -#endif - -/* - * Icons - */ - - -wxIconRefData::wxIconRefData() -{ - // TODO: init icon handle -} - -wxIconRefData::~wxIconRefData() -{ - // TODO: destroy icon handle -} - -wxIcon::wxIcon() -{ -} - -wxIcon::wxIcon(const char WXUNUSED(bits)[], int WXUNUSED(width), int WXUNUSED(height)) -{ -} - -wxIcon::wxIcon(const wxString& icon_file, long flags, - int desiredWidth, int desiredHeight) - -{ - LoadFile(icon_file, flags, desiredWidth, desiredHeight); -} - -wxIcon::~wxIcon() -{ -} - -bool wxIcon::LoadFile(const wxString& filename, long type, - int desiredWidth, int desiredHeight) -{ - UnRef(); - - m_refData = new wxIconRefData; - - wxBitmapHandler *handler = FindHandler(type); - - if ( handler ) - return handler->LoadFile(this, filename, type, desiredWidth, desiredHeight); - else - return FALSE; -} - diff --git a/src/qt/joystick.cpp b/src/qt/joystick.cpp deleted file mode 100644 index 6677277f48..0000000000 --- a/src/qt/joystick.cpp +++ /dev/null @@ -1,279 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: joystick.cpp -// Purpose: wxJoystick class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "joystick.h" -#endif - -#include - -IMPLEMENT_DYNAMIC_CLASS(wxJoystick, wxObject) - -// Attributes -//////////////////////////////////////////////////////////////////////////// - -wxPoint wxJoystick::GetPosition() const -{ - // TODO - return wxPoint(0, 0); -} - -int wxJoystick::GetZPosition() const -{ - // TODO - return 0; -} - -int wxJoystick::GetButtonState() const -{ - // TODO - return 0; -} - -int wxJoystick::GetPOVPosition() const -{ - // TODO - return 0; -} - -int wxJoystick::GetPOVCTSPosition() const -{ - // TODO - return 0; -} - -int wxJoystick::GetRudderPosition() const -{ - // TODO - return 0; -} - -int wxJoystick::GetUPosition() const -{ - // TODO - return 0; -} - -int wxJoystick::GetVPosition() const -{ - // TODO - return 0; -} - -int wxJoystick::GetMovementThreshold() const -{ - // TODO - return 0; -} - -void wxJoystick::SetMovementThreshold(int threshold) -{ - // TODO -} - -// Capabilities -//////////////////////////////////////////////////////////////////////////// - -bool wxJoystick::IsOk() const -{ - // TODO - return FALSE; -} - -int wxJoystick::GetNumberJoysticks() const -{ - // TODO - return 0; -} - -int wxJoystick::GetManufacturerId() const -{ - // TODO - return 0; -} - -int wxJoystick::GetProductId() const -{ - // TODO - return 0; -} - -wxString wxJoystick::GetProductName() const -{ - // TODO - return wxString(""); -} - -int wxJoystick::GetXMin() const -{ - // TODO - return 0; -} - -int wxJoystick::GetYMin() const -{ - // TODO - return 0; -} - -int wxJoystick::GetZMin() const -{ - // TODO - return 0; -} - -int wxJoystick::GetXMax() const -{ - // TODO - return 0; -} - -int wxJoystick::GetYMax() const -{ - // TODO - return 0; -} - -int wxJoystick::GetZMax() const -{ - // TODO - return 0; -} - -int wxJoystick::GetNumberButtons() const -{ - // TODO - return 0; -} - -int wxJoystick::GetNumberAxes() const -{ - // TODO - return 0; -} - -int wxJoystick::GetMaxButtons() const -{ - // TODO - return 0; -} - -int wxJoystick::GetMaxAxes() const -{ - // TODO - return 0; -} - -int wxJoystick::GetPollingMin() const -{ - // TODO - return 0; -} - -int wxJoystick::GetPollingMax() const -{ - // TODO - return 0; -} - -int wxJoystick::GetRudderMin() const -{ - // TODO - return 0; -} - -int wxJoystick::GetRudderMax() const -{ - // TODO - return 0; -} - -int wxJoystick::GetUMin() const -{ - // TODO - return 0; -} - -int wxJoystick::GetUMax() const -{ - // TODO - return 0; -} - -int wxJoystick::GetVMin() const -{ - // TODO - return 0; -} - -int wxJoystick::GetVMax() const -{ - // TODO - return 0; -} - -bool wxJoystick::HasRudder() const -{ - // TODO - return FALSE; -} - -bool wxJoystick::HasZ() const -{ - // TODO - return FALSE; -} - -bool wxJoystick::HasU() const -{ - // TODO - return FALSE; -} - -bool wxJoystick::HasV() const -{ - // TODO - return FALSE; -} - -bool wxJoystick::HasPOV() const -{ - // TODO - return FALSE; -} - -bool wxJoystick::HasPOV4Dir() const -{ - // TODO - return FALSE; -} - -bool wxJoystick::HasPOVCTS() const -{ - // TODO - return FALSE; -} - -// Operations -//////////////////////////////////////////////////////////////////////////// - -bool wxJoystick::SetCapture(wxWindow* win, int pollingFreq) -{ - // TODO - return FALSE; -} - -bool wxJoystick::ReleaseCapture() -{ - // TODO - return FALSE; -} - diff --git a/src/qt/listbox.cpp b/src/qt/listbox.cpp deleted file mode 100644 index a54523ab3d..0000000000 --- a/src/qt/listbox.cpp +++ /dev/null @@ -1,240 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: listbox.cpp -// Purpose: wxListBox -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "listbox.h" -#endif - -#include "wx/listbox.h" - -#include "wx/dynarray.h" -#include "wx/log.h" - -#if !USE_SHARED_LIBRARY - IMPLEMENT_DYNAMIC_CLASS(wxListBox, wxControl) -#endif - -// ============================================================================ -// list box control implementation -// ============================================================================ - -// Listbox item -wxListBox::wxListBox() -{ - m_noItems = 0; - m_selected = 0; -} - -bool wxListBox::Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos, - const wxSize& size, - int n, const wxString choices[], - long style, - const wxValidator& validator, - const wxString& name) -{ - m_noItems = n; - m_selected = 0; - - SetName(name); - SetValidator(validator); - - if (parent) parent->AddChild(this); - - wxSystemSettings settings; - SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOW)); - - m_windowId = ( id == -1 ) ? (int)NewControlId() : id; - - // TODO create listbox - - return FALSE; -} - -wxListBox::~wxListBox() -{ -} - -void wxListBox::SetupColours() -{ - SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOW)); -} - -void wxListBox::SetFirstItem(int N) -{ - // TODO -} - -void wxListBox::SetFirstItem(const wxString& s) -{ - // TODO -} - -void wxListBox::Delete(int N) -{ - m_noItems --; - // TODO -} - -void wxListBox::Append(const wxString& item) -{ - m_noItems ++; - - // TODO -} - -void wxListBox::Append(const wxString& item, char *Client_data) -{ - m_noItems ++; - - // TODO -} - -void wxListBox::Set(int n, const wxString *choices, char** clientData) -{ - m_noItems = n; - - // TODO -} - -int wxListBox::FindString(const wxString& s) const -{ - // TODO - return -1; -} - -void wxListBox::Clear() -{ - m_noItems = 0; - // TODO -} - -void wxListBox::SetSelection(int N, bool select) -{ - // TODO -} - -bool wxListBox::Selected(int N) const -{ - // TODO - return FALSE; -} - -void wxListBox::Deselect(int N) -{ - // TODO -} - -char *wxListBox::GetClientData(int N) const -{ - // TODO - return (char *)NULL; -} - -void wxListBox::SetClientData(int N, char *Client_data) -{ - // TODO -} - -// Return number of selections and an array of selected integers -int wxListBox::GetSelections(wxArrayInt& aSelections) const -{ - aSelections.Empty(); - -/* TODO - if ((m_windowStyle & wxLB_MULTIPLE) || (m_windowStyle & wxLB_EXTENDED)) - { - int no_sel = ?? - for ( int n = 0; n < no_sel; n++ ) - aSelections.Add(??); - - return no_sel; - } - else // single-selection listbox - { - aSelections.Add(??); - - return 1; - } -*/ - return 0; -} - -// Get single selection, for single choice list items -int wxListBox::GetSelection() const -{ - // TODO - return -1; -} - -// Find string for position -wxString wxListBox::GetString(int N) const -{ - // TODO - return wxString(""); -} - -void wxListBox::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -void wxListBox::InsertItems(int nItems, const wxString items[], int pos) -{ - m_noItems += nItems; - - // TODO -} - -void wxListBox::SetString(int N, const wxString& s) -{ - // TODO -} - -int wxListBox::Number () const -{ - return m_noItems; -} - -// For single selection items only -wxString wxListBox::GetStringSelection () const -{ - int sel = GetSelection (); - if (sel > -1) - return this->GetString (sel); - else - return wxString(""); -} - -bool wxListBox::SetStringSelection (const wxString& s, bool flag) -{ - int sel = FindString (s); - if (sel > -1) - { - SetSelection (sel, flag); - return TRUE; - } - else - return FALSE; -} - -void wxListBox::Command (wxCommandEvent & event) -{ - if (event.m_extraLong) - SetSelection (event.m_commandInt); - else - { - Deselect (event.m_commandInt); - return; - } - ProcessCommand (event); -} - diff --git a/src/qt/mdi.cpp b/src/qt/mdi.cpp deleted file mode 100644 index 3823536063..0000000000 --- a/src/qt/mdi.cpp +++ /dev/null @@ -1,263 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: mdi.cpp -// Purpose: MDI classes -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "mdi.h" -#endif - -#include "wx/mdi.h" - -extern wxList wxModelessWindows; - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxMDIParentFrame, wxFrame) -IMPLEMENT_DYNAMIC_CLASS(wxMDIChildFrame, wxFrame) -IMPLEMENT_DYNAMIC_CLASS(wxMDIClientWindow, wxWindow) - -BEGIN_EVENT_TABLE(wxMDIParentFrame, wxFrame) - EVT_SIZE(wxMDIParentFrame::OnSize) - EVT_ACTIVATE(wxMDIParentFrame::OnActivate) - EVT_SYS_COLOUR_CHANGED(wxMDIParentFrame::OnSysColourChanged) -END_EVENT_TABLE() - -BEGIN_EVENT_TABLE(wxMDIClientWindow, wxWindow) - EVT_SCROLL(wxMDIClientWindow::OnScroll) -END_EVENT_TABLE() - -#endif - -// Parent frame - -wxMDIParentFrame::wxMDIParentFrame() -{ -} - -bool wxMDIParentFrame::Create(wxWindow *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - if (!parent) - wxTopLevelWindows.Append(this); - - SetName(name); - m_windowStyle = style; - - if (parent) parent->AddChild(this); - - if ( id > -1 ) - m_windowId = id; - else - m_windowId = (int)NewControlId(); - - // TODO: create MDI parent frame - - wxModelessWindows.Append(this); - - return TRUE; -} - -wxMDIParentFrame::~wxMDIParentFrame() -{ -} - -// Get size *available for subwindows* i.e. excluding menu bar. -void wxMDIParentFrame::GetClientSize(int *x, int *y) const -{ - // TODO -} - -void wxMDIParentFrame::SetMenuBar(wxMenuBar *menu_bar) -{ - // TODO - if (!menu_bar) - { - m_frameMenuBar = NULL; - return; - } - - if (menu_bar->m_menuBarFrame) - return; - - m_frameMenuBar = menu_bar; -} - -void wxMDIParentFrame::OnSize(wxSizeEvent& event) -{ -#if wxUSE_CONSTRAINTS - if (GetAutoLayout()) - Layout(); -#endif - int x = 0; - int y = 0; - int width, height; - GetClientSize(&width, &height); - - if ( GetClientWindow() ) - GetClientWindow()->SetSize(x, y, width, height); -} - -void wxMDIParentFrame::OnActivate(wxActivateEvent& event) -{ - // Do nothing -} - -// Returns the active MDI child window -wxMDIChildFrame *wxMDIParentFrame::GetActiveChild() const -{ - // TODO - return NULL; -} - -// Create the client window class (don't Create the window, -// just return a new class) -wxMDIClientWindow *wxMDIParentFrame::OnCreateClient() -{ - return new wxMDIClientWindow ; -} - -// Responds to colour changes, and passes event on to children. -void wxMDIParentFrame::OnSysColourChanged(wxSysColourChangedEvent& event) -{ - // TODO - - // Propagate the event to the non-top-level children - wxFrame::OnSysColourChanged(event); -} - -// MDI operations -void wxMDIParentFrame::Cascade() -{ - // TODO -} - -void wxMDIParentFrame::Tile() -{ - // TODO -} - -void wxMDIParentFrame::ArrangeIcons() -{ - // TODO -} - -void wxMDIParentFrame::ActivateNext() -{ - // TODO -} - -void wxMDIParentFrame::ActivatePrevious() -{ - // TODO -} - -// Child frame - -wxMDIChildFrame::wxMDIChildFrame() -{ -} - -bool wxMDIChildFrame::Create(wxMDIParentFrame *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - SetName(name); - - if ( id > -1 ) - m_windowId = id; - else - m_windowId = (int)NewControlId(); - - if (parent) parent->AddChild(this); - - // TODO: create child frame - - wxModelessWindows.Append(this); - return FALSE; -} - -wxMDIChildFrame::~wxMDIChildFrame() -{ -} - -// Set the client size (i.e. leave the calculation of borders etc. -// to wxWindows) -void wxMDIChildFrame::SetClientSize(int width, int height) -{ - // TODO -} - -void wxMDIChildFrame::GetPosition(int *x, int *y) const -{ - // TODO -} - -void wxMDIChildFrame::SetMenuBar(wxMenuBar *menu_bar) -{ - // TODO - if (!menu_bar) - { - m_frameMenuBar = NULL; - return; - } - - if (menu_bar->m_menuBarFrame) - return; - m_frameMenuBar = menu_bar; -} - -// MDI operations -void wxMDIChildFrame::Maximize() -{ - // TODO -} - -void wxMDIChildFrame::Restore() -{ - // TODO -} - -void wxMDIChildFrame::Activate() -{ - // TODO -} - -// Client window - -wxMDIClientWindow::wxMDIClientWindow() -{ -} - -wxMDIClientWindow::~wxMDIClientWindow() -{ -} - -bool wxMDIClientWindow::CreateClient(wxMDIParentFrame *parent, long style) -{ - // TODO create client window - m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE); - - return FALSE; -} - -// Explicitly call default scroll behaviour -void wxMDIClientWindow::OnScroll(wxScrollEvent& event) -{ - Default(); // Default processing -} - diff --git a/src/qt/menu.cpp b/src/qt/menu.cpp deleted file mode 100644 index 217e6c8b88..0000000000 --- a/src/qt/menu.cpp +++ /dev/null @@ -1,568 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: menu.cpp -// Purpose: wxMenu, wxMenuBar, wxMenuItem -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -// ============================================================================ -// headers & declarations -// ============================================================================ - -// wxWindows headers -// ----------------- - -#ifdef __GNUG__ -#pragma implementation "menu.h" -#pragma implementation "menuitem.h" -#endif - -#include "wx/menu.h" -#include "wx/menuitem.h" -#include "wx/log.h" - -// other standard headers -// ---------------------- -#include - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxMenu, wxEvtHandler) -IMPLEMENT_DYNAMIC_CLASS(wxMenuBar, wxEvtHandler) -#endif - -// ============================================================================ -// implementation -// ============================================================================ - -// Menus - -// Construct a menu with optional title (then use append) -wxMenu::wxMenu(const wxString& title, const wxFunction func) -{ - m_title = title; - m_parent = NULL; - m_eventHandler = this; - m_noItems = 0; - m_menuBar = NULL; - if (m_title != "") - { - Append(-2, m_title) ; - AppendSeparator() ; - } - - Callback(func); - - // TODO create menu -} - -// The wxWindow destructor will take care of deleting the submenus. -wxMenu::~wxMenu() -{ - // TODO destroy menu and children - - wxNode *node = m_menuItems.First(); - while (node) - { - wxMenuItem *item = (wxMenuItem *)node->Data(); - - // Delete child menus. - // Beware: they must not be appended to children list!!! - // (because order of delete is significant) - if (item->GetSubMenu()) - item->DeleteSubMenu(); - - wxNode *next = node->Next(); - delete item; - delete node; - node = next; - } -} - -void wxMenu::Break() -{ - // TODO -} - -// function appends a new item or submenu to the menu -void wxMenu::Append(wxMenuItem *pItem) -{ - // TODO - - wxCHECK_RET( pItem != NULL, "can't append NULL item to the menu" ); - - m_menuItems.Append(pItem); - - m_noItems++; -} - -void wxMenu::AppendSeparator() -{ - // TODO - Append(new wxMenuItem(this, ID_SEPARATOR)); -} - -// Pullright item -void wxMenu::Append(int Id, const wxString& label, wxMenu *SubMenu, - const wxString& helpString) -{ - Append(new wxMenuItem(this, Id, label, helpString, FALSE, SubMenu)); -} - -// Ordinary menu item -void wxMenu::Append(int Id, const wxString& label, - const wxString& helpString, bool checkable) -{ - // 'checkable' parameter is useless for Windows. - Append(new wxMenuItem(this, Id, label, helpString, checkable)); -} - -void wxMenu::Delete(int id) -{ - wxNode *node; - wxMenuItem *item; - int pos; - - for (pos = 0, node = m_menuItems.First(); node; node = node->Next(), pos++) { - item = (wxMenuItem *)node->Data(); - if (item->GetId() == id) - break; - } - - if (!node) - return; - - m_menuItems.DeleteNode(node); - delete item; - - // TODO -} - -void wxMenu::Enable(int Id, bool Flag) -{ - wxMenuItem *item = FindItemForId(Id); - wxCHECK_RET( item != NULL, "can't enable non-existing menu item" ); - - item->Enable(Flag); -} - -bool wxMenu::Enabled(int Id) const -{ - wxMenuItem *item = FindItemForId(Id); - wxCHECK( item != NULL, FALSE ); - - return item->IsEnabled(); -} - -void wxMenu::Check(int Id, bool Flag) -{ - wxMenuItem *item = FindItemForId(Id); - wxCHECK_RET( item != NULL, "can't get status of non-existing menu item" ); - - item->Check(Flag); -} - -bool wxMenu::Checked(int Id) const -{ - wxMenuItem *item = FindItemForId(Id); - wxCHECK( item != NULL, FALSE ); - - return item->IsChecked(); -} - -void wxMenu::SetTitle(const wxString& label) -{ - m_title = label ; - // TODO -} - -const wxString& wxMenu::GetTitle() const -{ - return m_title; -} - -void wxMenu::SetLabel(int id, const wxString& label) -{ - wxMenuItem *item = FindItemForId(id) ; - if (item==NULL) - return; - - if (item->GetSubMenu()==NULL) - { - // TODO - } - else - { - // TODO - } - item->SetName(label); -} - -wxString wxMenu::GetLabel(int Id) const -{ - // TODO - return wxString("") ; -} - -// Finds the item id matching the given string, -1 if not found. -int wxMenu::FindItem (const wxString& itemString) const -{ - char buf1[200]; - char buf2[200]; - wxStripMenuCodes ((char *)(const char *)itemString, buf1); - - for (wxNode * node = m_menuItems.First (); node; node = node->Next ()) - { - wxMenuItem *item = (wxMenuItem *) node->Data (); - if (item->GetSubMenu()) - { - int ans = item->GetSubMenu()->FindItem(itemString); - if (ans > -1) - return ans; - } - if ( !item->IsSeparator() ) - { - wxStripMenuCodes((char *)item->GetName().c_str(), buf2); - if (strcmp(buf1, buf2) == 0) - return item->GetId(); - } - } - - return -1; -} - -wxMenuItem *wxMenu::FindItemForId(int itemId, wxMenu ** itemMenu) const -{ - if (itemMenu) - *itemMenu = NULL; - for (wxNode * node = m_menuItems.First (); node; node = node->Next ()) - { - wxMenuItem *item = (wxMenuItem *) node->Data (); - - if (item->GetId() == itemId) - { - if (itemMenu) - *itemMenu = (wxMenu *) this; - return item; - } - - if (item->GetSubMenu()) - { - wxMenuItem *ans = item->GetSubMenu()->FindItemForId (itemId, itemMenu); - if (ans) - return ans; - } - } - - if (itemMenu) - *itemMenu = NULL; - return NULL; -} - -void wxMenu::SetHelpString(int itemId, const wxString& helpString) -{ - wxMenuItem *item = FindItemForId (itemId); - if (item) - item->SetHelp(helpString); -} - -wxString wxMenu::GetHelpString (int itemId) const -{ - wxMenuItem *item = FindItemForId (itemId); - wxString str(""); - return (item == NULL) ? str : item->GetHelp(); -} - -void wxMenu::ProcessCommand(wxCommandEvent & event) -{ - bool processed = FALSE; - - // Try a callback - if (m_callback) - { - (void) (*(m_callback)) (*this, event); - processed = TRUE; - } - - // Try the menu's event handler - if ( !processed && GetEventHandler()) - { - processed = GetEventHandler()->ProcessEvent(event); - } - - // Try the window the menu was popped up from (and up - // through the hierarchy) - if ( !processed && GetInvokingWindow()) - processed = GetInvokingWindow()->ProcessEvent(event); -} - -bool wxWindow::PopupMenu(wxMenu *menu, int x, int y) -{ - // TODO - return FALSE; -} - -// Menu Bar -wxMenuBar::wxMenuBar() -{ - m_eventHandler = this; - m_menuCount = 0; - m_menus = NULL; - m_titles = NULL; - m_menuBarFrame = NULL; - - // TODO -} - -wxMenuBar::wxMenuBar(int n, wxMenu *Mmnus[], const wxString titles[]) -{ - m_eventHandler = this; - m_menuCount = n; - m_menus = menus; - m_titles = new wxString[n]; - int i; - for ( i = 0; i < n; i++ ) - m_titles[i] = titles[i]; - m_menuBarFrame = NULL; - - // TODO -} - -wxMenuBar::~wxMenuBar() -{ - int i; - for (i = 0; i < m_menuCount; i++) - { - delete m_menus[i]; - } - delete[] m_menus; - delete[] m_titles; - - // TODO -} - -// Must only be used AFTER menu has been attached to frame, -// otherwise use individual menus to enable/disable items -void wxMenuBar::Enable(int id, bool flag) -{ - wxMenu *itemMenu = NULL; - wxMenuItem *item = FindItemForId(id, &itemMenu) ; - if (!item) - return; - - // TODO -} - -void wxMenuBar::EnableTop(int pos, bool flag) -{ - // TODO -} - -// Must only be used AFTER menu has been attached to frame, -// otherwise use individual menus -void wxMenuBar::Check(int id, bool flag) -{ - wxMenu *itemMenu = NULL; - wxMenuItem *item = FindItemForId(id, &itemMenu) ; - if (!item) - return; - - if (!item->IsCheckable()) - return ; - - // TODO -} - -bool wxMenuBar::Checked(int id) const -{ - wxMenu *itemMenu = NULL; - wxMenuItem *item = FindItemForId(id, &itemMenu) ; - if (!item) - return FALSE; - - // TODO - return FALSE; -} - -bool wxMenuBar::Enabled(int id) const -{ - wxMenu *itemMenu = NULL; - wxMenuItem *item = FindItemForId(id, &itemMenu) ; - if (!item) - return FALSE; - - // TODO - return FALSE ; -} - - -void wxMenuBar::SetLabel(int id, const wxString& label) -{ - wxMenu *itemMenu = NULL; - wxMenuItem *item = FindItemForId(id, &itemMenu) ; - - if (!item) - return; - - // TODO -} - -wxString wxMenuBar::GetLabel(int id) const -{ - wxMenu *itemMenu = NULL; - wxMenuItem *item = FindItemForId(id, &itemMenu) ; - - if (!item) - return wxString(""); - - // TODO - return wxString("") ; -} - -void wxMenuBar::SetLabelTop(int pos, const wxString& label) -{ - // TODO -} - -wxString wxMenuBar::GetLabelTop(int pos) const -{ - // TODO - return wxString(""); -} - -bool wxMenuBar::OnDelete(wxMenu *a_menu, int pos) -{ - // TODO - return FALSE; -} - -bool wxMenuBar::OnAppend(wxMenu *a_menu, const char *title) -{ - // TODO - return FALSE; -} - -void wxMenuBar::Append (wxMenu * menu, const wxString& title) -{ - if (!OnAppend(menu, title)) - return; - - m_menuCount ++; - wxMenu **new_menus = new wxMenu *[m_menuCount]; - wxString *new_titles = new wxString[m_menuCount]; - int i; - - for (i = 0; i < m_menuCount - 1; i++) - { - new_menus[i] = m_menus[i]; - m_menus[i] = NULL; - new_titles[i] = m_titles[i]; - m_titles[i] = ""; - } - if (m_menus) - { - delete[]m_menus; - delete[]m_titles; - } - m_menus = new_menus; - m_titles = new_titles; - - m_menus[m_menuCount - 1] = (wxMenu *)menu; - m_titles[m_menuCount - 1] = title; - - // TODO -} - -void wxMenuBar::Delete(wxMenu * menu, int i) -{ - int j; - int ii = (int) i; - - if (menu != 0) - { - for (ii = 0; ii < m_menuCount; ii++) - { - if (m_menus[ii] == menu) - break; - } - if (ii >= m_menuCount) - return; - } else - { - if (ii < 0 || ii >= m_menuCount) - return; - menu = m_menus[ii]; - } - - if (!OnDelete(menu, ii)) - return; - - menu->SetParent(NULL); - - -- m_menuCount; - for (j = ii; j < m_menuCount; j++) - { - m_menus[j] = m_menus[j + 1]; - m_titles[j] = m_titles[j + 1]; - } -} - -// Find the menu menuString, item itemString, and return the item id. -// Returns -1 if none found. -int wxMenuBar::FindMenuItem (const wxString& menuString, const wxString& itemString) const -{ - char buf1[200]; - char buf2[200]; - wxStripMenuCodes ((char *)(const char *)menuString, buf1); - int i; - for (i = 0; i < m_menuCount; i++) - { - wxStripMenuCodes ((char *)(const char *)m_titles[i], buf2); - if (strcmp (buf1, buf2) == 0) - return m_menus[i]->FindItem (itemString); - } - return -1; -} - -wxMenuItem *wxMenuBar::FindItemForId (int Id, wxMenu ** itemMenu) const -{ - if (itemMenu) - *itemMenu = NULL; - - wxMenuItem *item = NULL; - int i; - for (i = 0; i < m_menuCount; i++) - if ((item = m_menus[i]->FindItemForId (Id, itemMenu))) - return item; - return NULL; -} - -void wxMenuBar::SetHelpString (int Id, const wxString& helpString) -{ - int i; - for (i = 0; i < m_menuCount; i++) - { - if (m_menus[i]->FindItemForId (Id)) - { - m_menus[i]->SetHelpString (Id, helpString); - return; - } - } -} - -wxString wxMenuBar::GetHelpString (int Id) const -{ - int i; - for (i = 0; i < m_menuCount; i++) - { - if (m_menus[i]->FindItemForId (Id)) - eturn wxString(m_menus[i]->GetHelpString (Id)); - } - return wxString(""); -} - - diff --git a/src/qt/notebook.cpp b/src/qt/notebook.cpp deleted file mode 100644 index aecb879f4b..0000000000 --- a/src/qt/notebook.cpp +++ /dev/null @@ -1,371 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: notebook.cpp -// Purpose: implementation of wxNotebook -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -// ============================================================================ -// declarations -// ============================================================================ - -// ---------------------------------------------------------------------------- -// headers -// ---------------------------------------------------------------------------- -#ifdef __GNUG__ -#pragma implementation "notebook.h" -#endif - -#include -#include -#include -#include - -// ---------------------------------------------------------------------------- -// macros -// ---------------------------------------------------------------------------- - -// check that the page index is valid -#define IS_VALID_PAGE(nPage) (((nPage) >= 0) && ((nPage) < GetPageCount())) - -// ---------------------------------------------------------------------------- -// event table -// ---------------------------------------------------------------------------- - -#if !USE_SHARED_LIBRARIES -BEGIN_EVENT_TABLE(wxNotebook, wxControl) - EVT_NOTEBOOK_PAGE_CHANGED(-1, wxNotebook::OnSelChange) - - EVT_SIZE(wxNotebook::OnSize) - EVT_SET_FOCUS(wxNotebook::OnSetFocus) - EVT_NAVIGATION_KEY(wxNotebook::OnNavigationKey) -END_EVENT_TABLE() - -IMPLEMENT_DYNAMIC_CLASS(wxNotebook, wxControl) -IMPLEMENT_DYNAMIC_CLASS(wxNotebookEvent, wxCommandEvent) -#endif - -// ============================================================================ -// implementation -// ============================================================================ - -// ---------------------------------------------------------------------------- -// wxNotebook construction -// ---------------------------------------------------------------------------- - -// common part of all ctors -void wxNotebook::Init() -{ - m_pImageList = NULL; - m_nSelection = -1; -} - -// default for dynamic class -wxNotebook::wxNotebook() -{ - Init(); -} - -// the same arguments as for wxControl -wxNotebook::wxNotebook(wxWindow *parent, - wxWindowID id, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - Init(); - - Create(parent, id, pos, size, style, name); -} - -// Create() function -bool wxNotebook::Create(wxWindow *parent, - wxWindowID id, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - // base init - SetName(name); - SetParent(parent); - - m_windowId = id == -1 ? NewControlId() : id; - - // colors and font - m_backgroundColour = wxColour(GetSysColor(COLOR_BTNFACE)); - m_foregroundColour = *wxBLACK ; - - // style - m_windowStyle = style; - - if ( parent != NULL ) - parent->AddChild(this); - - // TODO - - return FALSE; -} - -// dtor -wxNotebook::~wxNotebook() -{ -} - -// ---------------------------------------------------------------------------- -// wxNotebook accessors -// ---------------------------------------------------------------------------- -int wxNotebook::GetPageCount() const -{ - return m_aPages.Count(); -} - -int wxNotebook::GetRowCount() const -{ - // TODO - return 0; -} - -int wxNotebook::SetSelection(int nPage) -{ - wxASSERT( IS_VALID_PAGE(nPage) ); - - ChangePage(m_nSelection, nPage); - - // TODO - return 0; -} - -void wxNotebook::AdvanceSelection(bool bForward) -{ - int nSel = GetSelection(); - int nMax = GetPageCount() - 1; - if ( bForward ) - SetSelection(nSel == nMax ? 0 : nSel + 1); - else - SetSelection(nSel == 0 ? nMax : nSel - 1); -} - -bool wxNotebook::SetPageText(int nPage, const wxString& strText) -{ - wxASSERT( IS_VALID_PAGE(nPage) ); - - // TODO - return FALSE; -} - -wxString wxNotebook::GetPageText(int nPage) const -{ - wxASSERT( IS_VALID_PAGE(nPage) ); - - // TODO - return wxString(""); -} - -int wxNotebook::GetPageImage(int nPage) const -{ - wxASSERT( IS_VALID_PAGE(nPage) ); - - // TODO - return 0; -} - -bool wxNotebook::SetPageImage(int nPage, int nImage) -{ - wxASSERT( IS_VALID_PAGE(nPage) ); - - // TODO - return FALSE; -} - -void wxNotebook::SetImageList(wxImageList* imageList) -{ - m_pImageList = imageList; - // TODO -} - -// ---------------------------------------------------------------------------- -// wxNotebook operations -// ---------------------------------------------------------------------------- - -// remove one page from the notebook -bool wxNotebook::DeletePage(int nPage) -{ - wxCHECK( IS_VALID_PAGE(nPage), FALSE ); - - // TODO: delete native widget page - - delete m_aPages[nPage]; - m_aPages.Remove(nPage); - - return TRUE; -} - -// remove all pages -bool wxNotebook::DeleteAllPages() -{ - // TODO: delete native widget pages - - int nPageCount = GetPageCount(); - int nPage; - for ( nPage = 0; nPage < nPageCount; nPage++ ) - delete m_aPages[nPage]; - - m_aPages.Clear(); - - return TRUE; -} - -// add a page to the notebook -bool wxNotebook::AddPage(wxNotebookPage *pPage, - const wxString& strText, - bool bSelect, - int imageId) -{ - return InsertPage(GetPageCount(), pPage, strText, bSelect, imageId); -} - -// same as AddPage() but does it at given position -bool wxNotebook::InsertPage(int nPage, - wxNotebookPage *pPage, - const wxString& strText, - bool bSelect, - int imageId) -{ - wxASSERT( pPage != NULL ); - wxCHECK( IS_VALID_PAGE(nPage) || nPage == GetPageCount(), FALSE ); - - // TODO: insert native widget page - - // save the pointer to the page - m_aPages.Insert(pPage, nPage); - - // some page must be selected: either this one or the first one if there is - // still no selection - if ( bSelect ) - m_nSelection = nPage; - else if ( m_nSelection == -1 ) - m_nSelection = 0; - - return TRUE; -} - -// ---------------------------------------------------------------------------- -// wxNotebook callbacks -// ---------------------------------------------------------------------------- - -// @@@ OnSize() is used for setting the font when it's called for the first -// time because doing it in ::Create() doesn't work (for unknown reasons) -void wxNotebook::OnSize(wxSizeEvent& event) -{ - static bool s_bFirstTime = TRUE; - if ( s_bFirstTime ) { - // TODO: any first-time-size processing. - s_bFirstTime = FALSE; - } - - // TODO: all this may or may not be necessary for your platform - - // emulate page change (it's esp. important to do it first time because - // otherwise our page would stay invisible) - int nSel = m_nSelection; - m_nSelection = -1; - SetSelection(nSel); - - // fit the notebook page to the tab control's display area - int w, hl - GetSize(&w, &h); - - uint nCount = m_aPages.Count(); - for ( uint nPage = 0; nPage < nCount; nPage++ ) { - wxNotebookPage *pPage = m_aPages[nPage]; - pPage->SetSize(0, 0, w, h); - if ( pPage->GetAutoLayout() ) - pPage->Layout(); - } - - // Processing continues to next OnSize - event.Skip(); -} - -void wxNotebook::OnSelChange(wxNotebookEvent& event) -{ - // is it our tab control? - if ( event.GetEventObject() == this ) - ChangePage(event.GetOldSelection(), event.GetSelection()); - - // we want to give others a chance to process this message as well - event.Skip(); -} - -void wxNotebook::OnSetFocus(wxFocusEvent& event) -{ - // set focus to the currently selected page if any - if ( m_nSelection != -1 ) - m_aPages[m_nSelection]->SetFocus(); - - event.Skip(); -} - -void wxNotebook::OnNavigationKey(wxNavigationKeyEvent& event) -{ - if ( event.IsWindowChange() ) { - // change pages - AdvanceSelection(event.GetDirection()); - } - else { - // pass to the parent - if ( GetParent() ) { - event.SetCurrentFocus(this); - GetParent()->ProcessEvent(event); - } - } -} - -// ---------------------------------------------------------------------------- -// wxNotebook base class virtuals -// ---------------------------------------------------------------------------- - -// override these 2 functions to do nothing: everything is done in OnSize - -void wxNotebook::SetConstraintSizes(bool /* recurse */) -{ - // don't set the sizes of the pages - their correct size is not yet known - wxControl::SetConstraintSizes(FALSE); -} - -bool wxNotebook::DoPhase(int /* nPhase */) -{ - return TRUE; -} - -void wxNotebook::Command(wxCommandEvent& event) -{ - wxFAIL_MSG("wxNotebook::Command not implemented"); -} - -// ---------------------------------------------------------------------------- -// wxNotebook helper functions -// ---------------------------------------------------------------------------- - -// hide the currently active panel and show the new one -void wxNotebook::ChangePage(int nOldSel, int nSel) -{ - wxASSERT( nOldSel != nSel ); // impossible - - if ( nOldSel != -1 ) { - m_aPages[nOldSel]->Show(FALSE); - } - - wxNotebookPage *pPage = m_aPages[nSel]; - pPage->Show(TRUE); - pPage->SetFocus(); - - m_nSelection = nSel; -} - diff --git a/src/qt/palette.cpp b/src/qt/palette.cpp deleted file mode 100644 index 445b545f0c..0000000000 --- a/src/qt/palette.cpp +++ /dev/null @@ -1,91 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: palette.cpp -// Purpose: wxPalette -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "palette.h" -#endif - -#include "wx/palette.h" - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxPalette, wxGDIObject) -#endif - -/* - * Palette - * - */ - -wxPaletteRefData::wxPaletteRefData() -{ - // TODO -} - -wxPaletteRefData::~wxPaletteRefData() -{ - // TODO -} - -wxPalette::wxPalette() -{ -} - -wxPalette::wxPalette(int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue) -{ - Create(n, red, green, blue); -} - -wxPalette::~wxPalette() -{ -} - -bool wxPalette::FreeResource(bool force) -{ - if ( M_PALETTEDATA && M_PALETTEDATA->m_hPalette) - { - DeleteObject((HPALETTE)M_PALETTEDATA->m_hPalette); - } - return TRUE; -} - -bool wxPalette::Create(int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue) -{ - UnRef(); - - m_refData = new wxPaletteRefData; - - // TODO - - return FALSE; -} - -int wxPalette::GetPixel(const unsigned char red, const unsigned char green, const unsigned char blue) const -{ - if ( !m_refData ) - return FALSE; - - // TODO - return FALSE; -} - -bool wxPalette::GetRGB(int index, unsigned char *red, unsigned char *green, unsigned char *blue) const -{ - if ( !m_refData ) - return FALSE; - - if (index < 0 || index > 255) - return FALSE; - - // TODO - return FALSE; -} - - diff --git a/src/qt/pen.cpp b/src/qt/pen.cpp deleted file mode 100644 index d7b2ce264c..0000000000 --- a/src/qt/pen.cpp +++ /dev/null @@ -1,229 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: pen.cpp -// Purpose: wxPen -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "pen.h" -#endif - -#include "wx/setup.h" -#include "wx/utils.h" -#include "wx/pen.h" - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxPen, wxGDIObject) -#endif - -wxPenRefData::wxPenRefData() -{ - m_style = wxSOLID; - m_width = 1; - m_join = wxJOIN_ROUND ; - m_cap = wxCAP_ROUND ; - m_nbDash = 0 ; - m_dash = 0 ; -/* TODO: null data - m_hPen = 0; -*/ -} - -wxPenRefData::wxPenRefData(const wxPenRefData& data) -{ - m_style = data.m_style; - m_width = data.m_width; - m_join = data.m_join; - m_cap = data.m_cap; - m_nbDash = data.m_nbDash; - m_dash = data.m_dash; - m_colour = data.m_colour; -/* TODO: null data - m_hPen = 0; -*/ -} - -wxPenRefData::~wxPenRefData() -{ - // TODO: delete data -} - -// Pens - -wxPen::wxPen() -{ - if ( wxThePenList ) - wxThePenList->AddPen(this); -} - -wxPen::~wxPen() -{ - if (wxThePenList) - wxThePenList->RemovePen(this); -} - -// Should implement Create -wxPen::wxPen(const wxColour& col, int Width, int Style) -{ - m_refData = new wxPenRefData; - - M_PENDATA->m_colour = col; - M_PENDATA->m_width = Width; - M_PENDATA->m_style = Style; - M_PENDATA->m_join = wxJOIN_ROUND ; - M_PENDATA->m_cap = wxCAP_ROUND ; - M_PENDATA->m_nbDash = 0 ; - M_PENDATA->m_dash = 0 ; - - RealizeResource(); - - if ( wxThePenList ) - wxThePenList->AddPen(this); -} - -wxPen::wxPen(const wxBitmap& stipple, int Width) -{ - m_refData = new wxPenRefData; - - M_PENDATA->m_stipple = stipple; - M_PENDATA->m_width = Width; - M_PENDATA->m_style = wxSTIPPLE; - M_PENDATA->m_join = wxJOIN_ROUND ; - M_PENDATA->m_cap = wxCAP_ROUND ; - M_PENDATA->m_nbDash = 0 ; - M_PENDATA->m_dash = 0 ; - - RealizeResource(); - - if ( wxThePenList ) - wxThePenList->AddPen(this); -} - -wxPen::wxPen(const wxString& col, int Width, int Style) -{ - m_refData = new wxPenRefData; - - M_PENDATA->m_colour = col; - M_PENDATA->m_width = Width; - M_PENDATA->m_style = Style; - M_PENDATA->m_join = wxJOIN_ROUND ; - M_PENDATA->m_cap = wxCAP_ROUND ; - M_PENDATA->m_nbDash = 0 ; - M_PENDATA->m_dash = 0 ; - - RealizeResource(); - - if ( wxThePenList ) - wxThePenList->AddPen(this); -} - -void wxPen::Unshare() -{ - // Don't change shared data - if (!m_refData) - { - m_refData = new wxPenRefData(); - } - else - { - wxPenRefData* ref = new wxPenRefData(*(wxPenRefData*)m_refData); - UnRef(); - m_refData = ref; - } -} - -void wxPen::SetColour(const wxColour& col) -{ - Unshare(); - - M_PENDATA->m_colour = col; - - RealizeResource(); -} - -void wxPen::SetColour(const wxString& col) -{ - Unshare(); - - M_PENDATA->m_colour = col; - - RealizeResource(); -} - -void wxPen::SetColour(const unsigned char r, const unsigned char g, const unsigned char b) -{ - Unshare(); - - M_PENDATA->m_colour.Set(r, g, b); - - RealizeResource(); -} - -void wxPen::SetWidth(int Width) -{ - Unshare(); - - M_PENDATA->m_width = Width; - - RealizeResource(); -} - -void wxPen::SetStyle(int Style) -{ - Unshare(); - - M_PENDATA->m_style = Style; - - RealizeResource(); -} - -void wxPen::SetStipple(const wxBitmap& Stipple) -{ - Unshare(); - - M_PENDATA->m_stipple = Stipple; - M_PENDATA->m_style = wxSTIPPLE; - - RealizeResource(); -} - -void wxPen::SetDashes(int nb_dashes, const wxDash *Dash) -{ - Unshare(); - - M_PENDATA->m_nbDash = nb_dashes; - M_PENDATA->m_dash = (wxDash *)Dash; - - RealizeResource(); -} - -void wxPen::SetJoin(int Join) -{ - Unshare(); - - M_PENDATA->m_join = Join; - - RealizeResource(); -} - -void wxPen::SetCap(int Cap) -{ - Unshare(); - - M_PENDATA->m_cap = Cap; - - RealizeResource(); -} - -bool wxPen::RealizeResource() -{ - // TODO: create actual pen - return FALSE; -} - - diff --git a/src/qt/radiobox.cpp b/src/qt/radiobox.cpp deleted file mode 100644 index da582d0e52..0000000000 --- a/src/qt/radiobox.cpp +++ /dev/null @@ -1,194 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: radiobox.cpp -// Purpose: wxRadioBox -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "radiobox.h" -#endif - -#include "wx/radiobox.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxRadioBox, wxControl) -#endif - -// Radio box item -wxRadioBox::wxRadioBox() -{ - m_selectedButton = -1; - m_noItems = 0; - m_noRowsOrCols = 0; - m_majorDim = 0 ; -} - -bool wxRadioBox::Create(wxWindow *parent, wxWindowID id, const wxString& title, - const wxPoint& pos, const wxSize& size, - int n, const wxString choices[], - int majorDim, long style, - const wxValidator& val, const wxString& name) -{ - m_selectedButton = -1; - m_noItems = n; - - SetName(name); - SetValidator(val); - - parent->AddChild(this); - - m_windowStyle = (long&)style; - - if (id == -1) - m_windowId = NewControlId(); - else - m_windowId = id; - - m_noRowsOrCols = majorDim; - - if (majorDim==0) - m_majorDim = n ; - else - m_majorDim = majorDim ; - - - // TODO create radiobox - return FALSE; -} - - -wxRadioBox::~wxRadioBox() -{ - // TODO -} - -wxString wxRadioBox::GetLabel(int item) const -{ - // TODO - return wxString(""); -} - -void wxRadioBox::SetLabel(int item, const wxString& label) -{ - // TODO -} - -int wxRadioBox::FindString(const wxString& s) const -{ - // TODO - return -1; -} - -void wxRadioBox::SetSelection(int n) -{ - if ((n < 0) || (n >= m_noItems)) - return; - // TODO - - m_selectedButton = n; -} - -// Get single selection, for single choice list items -int wxRadioBox::GetSelection() const -{ - return m_selectedButton; -} - -// Find string for position -wxString wxRadioBox::GetString(int n) const -{ - // TODO - return wxString(""); -} - -void wxRadioBox::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -void wxRadioBox::GetSize(int *width, int *height) const -{ - // TODO -} - -void wxRadioBox::GetPosition(int *x, int *y) const -{ - // TODO -} - -wxString wxRadioBox::GetLabel() const -{ - // TODO - return wxString(""); -} - -void wxRadioBox::SetLabel(const wxString& label) -{ - // TODO -} - -void wxRadioBox::SetFocus() -{ - // TODO -} - -bool wxRadioBox::Show(bool show) -{ - // TODO - return FALSE; -} - -// Enable a specific button -void wxRadioBox::Enable(int item, bool enable) -{ - // TODO -} - -// Enable all controls -void wxRadioBox::Enable(bool enable) -{ - wxControl::Enable(enable); - - // TODO -} - -// Show a specific button -void wxRadioBox::Show(int item, bool show) -{ - // TODO -} - -// For single selection items only -wxString wxRadioBox::GetStringSelection () const -{ - int sel = GetSelection (); - if (sel > -1) - return this->GetString (sel); - else - return wxString(""); -} - -bool wxRadioBox::SetStringSelection (const wxString& s) -{ - int sel = FindString (s); - if (sel > -1) - { - SetSelection (sel); - return TRUE; - } - else - return FALSE; -} - -void wxRadioBox::Command (wxCommandEvent & event) -{ - SetSelection (event.m_commandInt); - ProcessCommand (event); -} - - diff --git a/src/qt/radiobut.cpp b/src/qt/radiobut.cpp deleted file mode 100644 index 65baab38b6..0000000000 --- a/src/qt/radiobut.cpp +++ /dev/null @@ -1,68 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: radiobut.cpp -// Purpose: wxRadioButton -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "radiobut.h" -#endif - -#include "wx/radiobut.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxRadioButton, wxControl) -#endif - -bool wxRadioButton::Create(wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); - SetValidator(validator); - - if (parent) parent->AddChild(this); - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - m_windowStyle = style ; - - // TODO create radiobutton - return FALSE; -} - -void wxRadioButton::SetLabel(const wxString& label) -{ - // TODO -} - -void wxRadioButton::SetValue(bool value) -{ - // TODO -} - -// Get single selection, for single choice list items -bool wxRadioButton::GetValue() const -{ - // TODO - return FALSE; -} - -void wxRadioButton::Command (wxCommandEvent & event) -{ - SetValue ( (event.m_commandInt != 0) ); - ProcessCommand (event); -} - - diff --git a/src/qt/region.cpp b/src/qt/region.cpp deleted file mode 100644 index d03d8e8020..0000000000 --- a/src/qt/region.cpp +++ /dev/null @@ -1,373 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// File: region.cpp -// Purpose: Region class -// Author: Markus Holzem/Julian Smart/AUTHOR -// Created: Fri Oct 24 10:46:34 MET 1997 -// RCS-ID: $Id$ -// Copyright: (c) 1997 Markus Holzem/Julian Smart/AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "region.h" -#endif - -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#include "wx/msw/region.h" -#include "wx/gdicmn.h" - -#include - -#if !USE_SHARED_LIBRARY - IMPLEMENT_DYNAMIC_CLASS(wxRegion, wxGDIObject) - IMPLEMENT_DYNAMIC_CLASS(wxRegionIterator, wxObject) -#endif - -//----------------------------------------------------------------------------- -// wxRegionRefData implementation -//----------------------------------------------------------------------------- - -class WXDLLEXPORT wxRegionRefData : public wxGDIRefData { -public: - wxRegionRefData() - { - } - - wxRegionRefData(const wxRegionRefData& data) - { - // TODO - } - - ~wxRegionRefData() - { - // TODO - } - - HRGN m_region; -}; - - -//----------------------------------------------------------------------------- -// wxRegion -//----------------------------------------------------------------------------- - -/*! - * Create an empty region. - */ -wxRegion::wxRegion() -{ - m_refData = new wxRegionRefData; - // TODO create empty region -} - -wxRegion::wxRegion(long x, long y, long w, long h) -{ - m_refData = new wxRegionRefData; - // TODO create rect region -} - -wxRegion::wxRegion(const wxPoint& topLeft, const wxPoint& bottomRight) -{ - m_refData = new wxRegionRefData; - // TODO create rect region -} - -wxRegion::wxRegion(const wxRect& rect) -{ - m_refData = new wxRegionRefData; - // TODO create rect region -} - -/*! - * Destroy the region. - */ -wxRegion::~wxRegion() -{ - // m_refData unrefed in ~wxObject -} - -//----------------------------------------------------------------------------- -//# Modify region -//----------------------------------------------------------------------------- - -//! Clear current region -void wxRegion::Clear() -{ - UnRef(); -} - -//! Combine rectangle (x, y, w, h) with this. -bool wxRegion::Combine(long x, long y, long width, long height, wxRegionOp op) -{ - // Don't change shared data - if (!m_refData) { - m_refData = new wxRegionRefData(); - } else if (m_refData->GetRefCount() > 1) { - wxRegionRefData* ref = (wxRegionRefData*)m_refData; - UnRef(); - m_refData = new wxRegionRefData(*ref); - } - // If ref count is 1, that means it's 'ours' anyway so no action. - - // TODO create rect region - - int mode = 0; // TODO platform-specific code - switch (op) - { - case wxRGN_AND: - // TODO - break ; - case wxRGN_OR: - // TODO - break ; - case wxRGN_XOR: - // TODO - break ; - case wxRGN_DIFF: - // TODO - break ; - case wxRGN_COPY: - default: - // TODO - break ; - } - - // TODO do combine region - - return FALSE; -} - -//! Union /e region with this. -bool wxRegion::Combine(const wxRegion& region, wxRegionOp op) -{ - if (region.Empty()) - return FALSE; - - // Don't change shared data - if (!m_refData) { - m_refData = new wxRegionRefData(); - } else if (m_refData->GetRefCount() > 1) { - wxRegionRefData* ref = (wxRegionRefData*)m_refData; - UnRef(); - m_refData = new wxRegionRefData(*ref); - } - - int mode = 0; // TODO platform-specific code - switch (op) - { - case wxRGN_AND: - // TODO - break ; - case wxRGN_OR: - // TODO - break ; - case wxRGN_XOR: - // TODO - break ; - case wxRGN_DIFF: - // TODO - break ; - case wxRGN_COPY: - default: - // TODO - break ; - } - - // TODO combine region - - return FALSE; -} - -bool wxRegion::Combine(const wxRect& rect, wxRegionOp op) -{ - return Combine(rect.GetLeft(), rect.GetTop(), rect.GetWidth(), rect.GetHeight(), op); -} - -//----------------------------------------------------------------------------- -//# Information on region -//----------------------------------------------------------------------------- - -// Outer bounds of region -void wxRegion::GetBox(long& x, long& y, long&w, long &h) const -{ - if (m_refData) { - // TODO get box - } else { - x = y = w = h = 0; - } -} - -wxRect wxRegion::GetBox() const -{ - long x, y, w, h; - GetBox(x, y, w, h); - return wxRect(x, y, w, h); -} - -// Is region empty? -bool wxRegion::Empty() const -{ - // TODO - return FALSE; -} - -//----------------------------------------------------------------------------- -//# Tests -//----------------------------------------------------------------------------- - -// Does the region contain the point (x,y)? -wxRegionContain wxRegion::Contains(long x, long y) const -{ - if (!m_refData) - return wxOutRegion; - - // TODO. Return wxInRegion if within region. - if (0) - return wxInRegion; - return wxOutRegion; -} - -// Does the region contain the point pt? -wxRegionContain wxRegion::Contains(const wxPoint& pt) const -{ - if (!m_refData) - return wxOutRegion; - - // TODO. Return wxInRegion if within region. - if (0) - return wxInRegion; - else - return wxOutRegion; -} - -// Does the region contain the rectangle (x, y, w, h)? -wxRegionContain wxRegion::Contains(long x, long y, long w, long h) const -{ - if (!m_refData) - return wxOutRegion; - - // TODO. Return wxInRegion if within region. - if (0) - return wxInRegion; - else - return wxOutRegion; -} - -// Does the region contain the rectangle rect -wxRegionContain wxRegion::Contains(const wxRect& rect) const -{ - if (!m_refData) - return wxOutRegion; - - long x, y, w, h; - x = rect.x; - y = rect.y; - w = rect.GetWidth(); - h = rect.GetHeight(); - return Contains(x, y, w, h); -} - -/////////////////////////////////////////////////////////////////////////////// -// // -// wxRegionIterator // -// // -/////////////////////////////////////////////////////////////////////////////// - -/*! - * Initialize empty iterator - */ -wxRegionIterator::wxRegionIterator() : m_current(0), m_numRects(0), m_rects(NULL) -{ -} - -wxRegionIterator::~wxRegionIterator() -{ - if (m_rects) - delete[] m_rects; -} - -/*! - * Initialize iterator for region - */ -wxRegionIterator::wxRegionIterator(const wxRegion& region) -{ - m_rects = NULL; - - Reset(region); -} - -/*! - * Reset iterator for a new /e region. - */ -void wxRegionIterator::Reset(const wxRegion& region) -{ - m_current = 0; - m_region = region; - - if (m_rects) - delete[] m_rects; - - m_rects = NULL; - - if (m_region.Empty()) - m_numRects = 0; - else - { - // TODO create m_rects and fill with rectangles for this region - m_numRects = 0; - } -} - -/*! - * Increment iterator. The rectangle returned is the one after the - * incrementation. - */ -void wxRegionIterator::operator ++ () -{ - if (m_current < m_numRects) - ++m_current; -} - -/*! - * Increment iterator. The rectangle returned is the one before the - * incrementation. - */ -void wxRegionIterator::operator ++ (int) -{ - if (m_current < m_numRects) - ++m_current; -} - -long wxRegionIterator::GetX() const -{ - if (m_current < m_numRects) - return m_rects[m_current].x; - return 0; -} - -long wxRegionIterator::GetY() const -{ - if (m_current < m_numRects) - return m_rects[m_current].y; - return 0; -} - -long wxRegionIterator::GetW() const -{ - if (m_current < m_numRects) - return m_rects[m_current].width ; - return 0; -} - -long wxRegionIterator::GetH() const -{ - if (m_current < m_numRects) - return m_rects[m_current].height; - return 0; -} - diff --git a/src/qt/scrolbar.cpp b/src/qt/scrolbar.cpp deleted file mode 100644 index 0058a14f53..0000000000 --- a/src/qt/scrolbar.cpp +++ /dev/null @@ -1,78 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: scrolbar.cpp -// Purpose: wxScrollBar -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "scrolbar.h" -#endif - -#include "wx/scrolbar.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxScrollBar, wxControl) - -#endif - -// Scrollbar -bool wxScrollBar::Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - if (!parent) - return FALSE; - parent->AddChild(this); - SetName(name); - SetValidator(validator); - - m_windowStyle = style; - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - // TODO create scrollbar - return TRUE; -} - -wxScrollBar::~wxScrollBar() -{ -} - -void wxScrollBar::SetPosition(int viewStart) -{ - // TODO -} - -int wxScrollBar::GetPosition() const -{ - // TODO - return 0; -} - -void wxScrollBar::SetScrollbar(int position, int thumbSize, int range, int pageSize, - bool refresh) -{ - m_viewSize = pageSize; - m_pageSize = thumbSize; - m_objectSize = range; - - // TODO -} - - -void wxScrollBar::Command(wxCommandEvent& event) -{ - SetValue(event.m_commandInt); - ProcessCommand(event); -} - diff --git a/src/qt/settings.cpp b/src/qt/settings.cpp deleted file mode 100644 index 0450dbc8e4..0000000000 --- a/src/qt/settings.cpp +++ /dev/null @@ -1,151 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: settings.cpp -// Purpose: wxSettings -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "settings.h" -#endif - -#include "wx/settings.h" - -wxColour wxSystemSettings::GetSystemColour(int index) -{ - // TODO - return col; -} - -wxFont wxSystemSettings::GetSystemFont(int index) -{ - // TODO - return wxFont; -} - -// Get a system metric, e.g. scrollbar size -int wxSystemSettings::GetSystemMetric(int index) -{ - switch ( index) - { - case wxSYS_MOUSE_BUTTONS: - // TODO - return 0; - case wxSYS_BORDER_X: - // TODO - return 0; - case wxSYS_BORDER_Y: - // TODO - return 0; - case wxSYS_CURSOR_X: - // TODO - return 0; - case wxSYS_CURSOR_Y: - // TODO - return 0; - case wxSYS_DCLICK_X: - // TODO - return 0; - case wxSYS_DCLICK_Y: - // TODO - return 0; - case wxSYS_DRAG_X: - // TODO - return 0; - case wxSYS_DRAG_Y: - // TODO - return 0; - case wxSYS_EDGE_X: - // TODO - return 0; - case wxSYS_EDGE_Y: - // TODO - return 0; - case wxSYS_HSCROLL_ARROW_X: - // TODO - return 0; - case wxSYS_HSCROLL_ARROW_Y: - // TODO - return 0; - case wxSYS_HTHUMB_X: - // TODO - return 0; - case wxSYS_ICON_X: - // TODO - return 0; - case wxSYS_ICON_Y: - // TODO - return 0; - case wxSYS_ICONSPACING_X: - // TODO - return 0; - case wxSYS_ICONSPACING_Y: - // TODO - return 0; - case wxSYS_WINDOWMIN_X: - // TODO - return 0; - case wxSYS_WINDOWMIN_Y: - // TODO - return 0; - case wxSYS_SCREEN_X: - // TODO - return 0; - case wxSYS_SCREEN_Y: - // TODO - return 0; - case wxSYS_FRAMESIZE_X: - // TODO - return 0; - case wxSYS_FRAMESIZE_Y: - // TODO - return 0; - case wxSYS_SMALLICON_X: - // TODO - return 0; - case wxSYS_SMALLICON_Y: - // TODO - return 0; - case wxSYS_HSCROLL_Y: - // TODO - return 0; - case wxSYS_VSCROLL_X: - // TODO - return 0; - case wxSYS_VSCROLL_ARROW_X: - // TODO - return 0; - case wxSYS_VSCROLL_ARROW_Y: - // TODO - return 0; - case wxSYS_VTHUMB_Y: - // TODO - return 0; - case wxSYS_CAPTION_Y: - // TODO - return 0; - case wxSYS_MENU_Y: - // TODO - return 0; - case wxSYS_NETWORK_PRESENT: - // TODO - return 0; - case wxSYS_PENWINDOWS_PRESENT: - // TODO - return 0; - case wxSYS_SHOW_SOUNDS: - // TODO - return 0; - case wxSYS_SWAP_BUTTONS: - // TODO - return 0; - default: - return 0; - } - return 0; -} - diff --git a/src/qt/slider.cpp b/src/qt/slider.cpp deleted file mode 100644 index 97c453b989..0000000000 --- a/src/qt/slider.cpp +++ /dev/null @@ -1,185 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: slider.cpp -// Purpose: wxSlider -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "slider.h" -#endif - -#include "wx/msw/slider.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxSlider, wxControl) -#endif - -// Slider -wxSlider::wxSlider() -{ - m_pageSize = 1; - m_lineSize = 1; - m_rangeMax = 0; - m_rangeMin = 0; - m_tickFreq = 0; -} - -bool wxSlider::Create(wxWindow *parent, wxWindowID id, - int value, int minValue, int maxValue, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); - SetValidator(validator); - - if (parent) parent->AddChild(this); - - m_lineSize = 1; - m_windowStyle = style; - m_tickFreq = 0; - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - m_rangeMax = maxValue; - m_rangeMin = minValue; - - m_pageSize = (int)((maxValue-minValue)/10); - - // TODO create slider - - return FALSE; -} - -wxSlider::~wxSlider() -{ -} - -int wxSlider::GetValue() const -{ - // TODO - return 0; -} - -void wxSlider::SetValue(int value) -{ - // TODO -} - -void wxSlider::GetSize(int *width, int *height) const -{ - // TODO -} - -void wxSlider::GetPosition(int *x, int *y) const -{ - // TODO -} - -void wxSlider::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -void wxSlider::SetRange(int minValue, int maxValue) -{ - m_rangeMin = minValue; - m_rangeMax = maxValue; - - // TODO -} - -// For trackbars only -void wxSlider::SetTickFreq(int n, int pos) -{ - // TODO - m_tickFreq = n; -} - -void wxSlider::SetPageSize(int pageSize) -{ - // TODO - m_pageSize = pageSize; -} - -int wxSlider::GetPageSize() const -{ - return m_pageSize; -} - -void wxSlider::ClearSel() -{ - // TODO -} - -void wxSlider::ClearTicks() -{ - // TODO -} - -void wxSlider::SetLineSize(int lineSize) -{ - m_lineSize = lineSize; - // TODO -} - -int wxSlider::GetLineSize() const -{ - // TODO - return 0; -} - -int wxSlider::GetSelEnd() const -{ - // TODO - return 0; -} - -int wxSlider::GetSelStart() const -{ - // TODO - return 0; -} - -void wxSlider::SetSelection(int minPos, int maxPos) -{ - // TODO -} - -void wxSlider::SetThumbLength(int len) -{ - // TODO -} - -int wxSlider::GetThumbLength() const -{ - // TODO - return 0; -} - -void wxSlider::SetTick(int tickPos) -{ - // TODO -} - -void wxSlider::Command (wxCommandEvent & event) -{ - SetValue (event.GetInt()); - ProcessCommand (event); -} - -bool wxSlider::Show(bool show) -{ - // TODO - return TRUE; -} - diff --git a/src/qt/statbmp.cpp b/src/qt/statbmp.cpp deleted file mode 100644 index a67c558465..0000000000 --- a/src/qt/statbmp.cpp +++ /dev/null @@ -1,59 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: statbmp.cpp -// Purpose: wxStaticBitmap -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "statbmp.h" -#endif - -#include "wx/statbmp.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxStaticBitmap, wxControl) -#endif - -/* - * wxStaticBitmap - */ - -bool wxStaticBitmap::Create(wxWindow *parent, wxWindowID id, - const wxBitmap& bitmap, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - m_messageBitmap = bitmap; - SetName(name); - if (parent) parent->AddChild(this); - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - m_windowStyle = style; - - // TODO: create static bitmap control - return FALSE; -} - -void wxStaticBitmap::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -void wxStaticBitmap::SetBitmap(const wxBitmap& bitmap) -{ - m_messageBitmap = bitmap; - - // TODO: redraw bitmap -} - diff --git a/src/qt/statbox.cpp b/src/qt/statbox.cpp deleted file mode 100644 index b239dc738c..0000000000 --- a/src/qt/statbox.cpp +++ /dev/null @@ -1,62 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: statbox.cpp -// Purpose: wxStaticBox -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "statbox.h" -#endif - -#include "wx/statbox.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxStaticBox, wxControl) - -BEGIN_EVENT_TABLE(wxStaticBox, wxControl) - EVT_ERASE_BACKGROUND(wxStaticBox::OnEraseBackground) -END_EVENT_TABLE() - -#endif - -/* - * Static box - */ - -bool wxStaticBox::Create(wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - SetName(name); - - if (parent) parent->AddChild(this); - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - m_windowStyle = style; - - // TODO: create static box - return FALSE; -} - -void wxStaticBox::SetLabel(const wxString& label) -{ - // TODO -} - -void wxStaticBox::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - diff --git a/src/qt/stattext.cpp b/src/qt/stattext.cpp deleted file mode 100644 index 1958826916..0000000000 --- a/src/qt/stattext.cpp +++ /dev/null @@ -1,211 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: stattext.cpp -// Purpose: wxStaticText -// Author: AUTHOR -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "stattext.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/app.h" -#endif - -#include "wx/stattext.h" -#include "wx/msw/private.h" -#include - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxStaticText, wxControl) -#endif - -bool wxStaticText::Create(wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - SetName(name); - if (parent) parent->AddChild(this); - - SetBackgroundColour(parent->GetDefaultBackgroundColour()) ; - SetForegroundColour(parent->GetDefaultForegroundColour()) ; - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - int x = pos.x; - int y = pos.y; - int width = size.x; - int height = size.y; - - m_windowStyle = style; - - long msStyle = WS_CHILD|WS_VISIBLE; - if (m_windowStyle & wxALIGN_CENTRE) - msStyle |= SS_CENTER; - else if (m_windowStyle & wxALIGN_RIGHT) - msStyle |= SS_RIGHT; - else - msStyle |= SS_LEFT; - - // Even with extended styles, need to combine with WS_BORDER - // for them to look right. - if ((m_windowStyle & wxSIMPLE_BORDER) || (m_windowStyle & wxRAISED_BORDER) || - (m_windowStyle & wxSUNKEN_BORDER) || (m_windowStyle & wxDOUBLE_BORDER)) - msStyle |= WS_BORDER; - - HWND static_item = CreateWindowEx(MakeExtendedStyle(m_windowStyle), "STATIC", (const char *)label, - msStyle, - 0, 0, 0, 0, (HWND) parent->GetHWND(), (HMENU)m_windowId, - wxGetInstance(), NULL); - -#if CTL3D -/* - if (!(GetParent()->GetWindowStyleFlag() & wxUSER_COLOURS)) - Ctl3dSubclassCtl(static_item); -*/ -#endif - - m_hWnd = (WXHWND)static_item; - - SubclassWin((WXHWND)static_item); - - SetFont(* parent->GetFont()); - SetSize(x, y, width, height); - return TRUE; -} - -void wxStaticText::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - int currentX, currentY; - GetPosition(¤tX, ¤tY); - int x1 = x; - int y1 = y; - - if (x == -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) - x1 = currentX; - if (y == -1 || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE)) - y1 = currentY; - - AdjustForParentClientOrigin(x1, y1, sizeFlags); - - int actualWidth = width; - int actualHeight = height; - - char buf[300]; - int current_width; - int cyf; - - ::GetWindowText((HWND) GetHWND(), buf, 300); - GetTextExtent(buf, ¤t_width, &cyf, NULL, NULL,GetFont()); - - int ww, hh; - GetSize(&ww, &hh); - - // If we're prepared to use the existing width, then... - if (width == -1 && ((sizeFlags & wxSIZE_AUTO_WIDTH) != wxSIZE_AUTO_WIDTH)) - actualWidth = ww; - else if (width == -1) - { - int cx; - int cy; - wxGetCharSize(GetHWND(), &cx, &cy,GetFont()); - actualWidth = (int)(current_width + cx) ; - } - - // If we're prepared to use the existing height, then... - if (height == -1 && ((sizeFlags & wxSIZE_AUTO_HEIGHT) != wxSIZE_AUTO_HEIGHT)) - actualHeight = hh; - else if (height == -1) - { - actualHeight = (int)(cyf) ; - } - - MoveWindow((HWND) GetHWND(), x1, y1, actualWidth, actualHeight, TRUE); -} - -void wxStaticText::SetLabel(const wxString& label) -{ - int w, h; - RECT rect; - - wxWindow *parent = GetParent(); - GetWindowRect((HWND) GetHWND(), &rect); - - // Since we now have the absolute screen coords, - // if there's a parent we must subtract its top left corner - POINT point; - point.x = rect.left; - point.y = rect.top; - if (parent) - { - ::ScreenToClient((HWND) parent->GetHWND(), &point); - } - - GetTextExtent(label, &w, &h, NULL, NULL, GetFont()); - MoveWindow((HWND) GetHWND(), point.x, point.y, (int)(w + 10), (int)h, - TRUE); - SetWindowText((HWND) GetHWND(), (const char *)label); -} - -WXHBRUSH wxStaticText::OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor, - WXUINT message, WXWPARAM wParam, WXLPARAM lParam) -{ -/* -#if CTL3D - if ( m_useCtl3D ) - { - HBRUSH hbrush = Ctl3dCtlColorEx(message, wParam, lParam); - - if (hbrush != (HBRUSH) 0) - return hbrush; - else - return (HBRUSH)MSWDefWindowProc(message, wParam, lParam); - } -#endif -*/ - - if (GetParent()->GetTransparentBackground()) - SetBkMode((HDC) pDC, TRANSPARENT); - else - SetBkMode((HDC) pDC, OPAQUE); - - ::SetBkColor((HDC) pDC, RGB(GetBackgroundColour().Red(), GetBackgroundColour().Green(), GetBackgroundColour().Blue())); - ::SetTextColor((HDC) pDC, RGB(GetForegroundColour().Red(), GetForegroundColour().Green(), GetForegroundColour().Blue())); - - wxBrush *backgroundBrush = wxTheBrushList->FindOrCreateBrush(GetBackgroundColour(), wxSOLID); - - // Note that this will be cleaned up in wxApp::OnIdle, if backgroundBrush - // has a zero usage count. -// backgroundBrush->RealizeResource(); - return (WXHBRUSH) backgroundBrush->GetResourceHandle(); -} - -long wxStaticText::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) -{ - // Ensure that static items get messages. Some controls don't like this - // message to be intercepted (e.g. RichEdit), hence the tests. - if (nMsg == WM_NCHITTEST) - return (long)HTCLIENT; - - return wxWindow::MSWWindowProc(nMsg, wParam, lParam); -} - - diff --git a/src/qt/tbargtk.cpp b/src/qt/tbargtk.cpp deleted file mode 100644 index f2c8dfcd74..0000000000 --- a/src/qt/tbargtk.cpp +++ /dev/null @@ -1,193 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: tbargtk.cpp -// Purpose: GTK toolbar -// Author: Robert Roebling -// Modified by: -// Created: 01/02/97 -// RCS-ID: -// Copyright: (c) Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "tbargtk.h" -#endif - -#include "wx/toolbar.h" - -//----------------------------------------------------------------------------- -// wxToolBarTool -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxToolBarTool,wxObject) - -wxToolBarTool::wxToolBarTool( wxToolBar *owner, int theIndex, - const wxBitmap& bitmap1, const wxBitmap& bitmap2, - bool toggle, wxObject *clientData, - const wxString& shortHelpString, const wxString& longHelpString ) -{ - m_owner = owner; - m_index = theIndex; - m_bitmap1 = bitmap1; - m_bitmap2 = bitmap2; - m_isToggle = toggle; - m_enabled = TRUE; - m_toggleState = FALSE; - m_shortHelpString = shortHelpString; - m_longHelpString = longHelpString; - m_isMenuCommand = TRUE; - m_clientData = clientData; - m_deleteSecondBitmap = FALSE; -}; - -wxToolBarTool::~wxToolBarTool(void) -{ -}; - -//----------------------------------------------------------------------------- -// wxToolBar -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxToolBar,wxControl) - -BEGIN_EVENT_TABLE(wxToolBar, wxControl) -END_EVENT_TABLE() - -wxToolBar::wxToolBar(void) -{ -}; - -wxToolBar::wxToolBar( wxWindow *parent, wxWindowID id, - const wxPoint& pos, const wxSize& size, - long style, const wxString& name ) -{ - Create( parent, id, pos, size, style, name ); -}; - -wxToolBar::~wxToolBar(void) -{ -}; - -bool wxToolBar::Create( wxWindow *parent, wxWindowID id, - const wxPoint& pos, const wxSize& size, - long style, const wxString& name ) -{ - return TRUE; -}; - -bool wxToolBar::OnLeftClick( int toolIndex, bool toggleDown ) -{ - wxCommandEvent event( wxEVT_COMMAND_TOOL_CLICKED, toolIndex ); - event.SetEventObject(this); - event.SetInt( toolIndex ); - event.SetExtraLong((long) toggleDown); - - GetEventHandler()->ProcessEvent(event); - - return TRUE; -}; - -void wxToolBar::OnRightClick( int toolIndex, float WXUNUSED(x), float WXUNUSED(y) ) -{ - wxCommandEvent event( wxEVT_COMMAND_TOOL_RCLICKED, toolIndex ); - event.SetEventObject( this ); - event.SetInt( toolIndex ); - - GetEventHandler()->ProcessEvent(event); -}; - -void wxToolBar::OnMouseEnter( int toolIndex ) -{ - wxCommandEvent event( wxEVT_COMMAND_TOOL_ENTER, toolIndex ); - event.SetEventObject(this); - event.SetInt( toolIndex ); - - GetEventHandler()->ProcessEvent(event); -}; - -wxToolBarTool *wxToolBar::AddTool( int toolIndex, const wxBitmap& bitmap, - const wxBitmap& pushedBitmap, bool toggle, - float WXUNUSED(xPos), float WXUNUSED(yPos), wxObject *clientData, - const wxString& helpString1, const wxString& helpString2 ) -{ -}; - -void wxToolBar::AddSeparator(void) -{ -}; - -void wxToolBar::ClearTools(void) -{ -}; - -void wxToolBar::Realize(void) -{ -}; - -void wxToolBar::EnableTool(int toolIndex, bool enable) -{ - wxNode *node = m_tools.First(); - while (node) - { - wxToolBarTool *tool = (wxToolBarTool*)node->Data(); - if (tool->m_index == toolIndex) - { - tool->m_enabled = enable; - return; - } - node = node->Next(); - }; -}; - -void wxToolBar::ToggleTool(int WXUNUSED(toolIndex), bool WXUNUSED(toggle) ) -{ -}; - -wxObject *wxToolBar::GetToolClientData(int index) const -{ - wxNode *node = m_tools.First(); - while (node) - { - wxToolBarTool *tool = (wxToolBarTool*)node->Data(); - if (tool->m_index == index) return tool->m_clientData;; - node = node->Next(); - }; - return (wxObject*)NULL; -}; - -bool wxToolBar::GetToolState(int toolIndex) const -{ - wxNode *node = m_tools.First(); - while (node) - { - wxToolBarTool *tool = (wxToolBarTool*)node->Data(); - if (tool->m_index == toolIndex) return tool->m_toggleState; - node = node->Next(); - }; - return FALSE; -}; - -bool wxToolBar::GetToolEnabled(int toolIndex) const -{ - wxNode *node = m_tools.First(); - while (node) - { - wxToolBarTool *tool = (wxToolBarTool*)node->Data(); - if (tool->m_index == toolIndex) return tool->m_enabled; - node = node->Next(); - }; - return FALSE; -}; - -void wxToolBar::SetMargins( int WXUNUSED(x), int WXUNUSED(y) ) -{ -}; - -void wxToolBar::SetToolPacking( int WXUNUSED(packing) ) -{ -}; - -void wxToolBar::SetToolSeparation( int separation ) -{ -}; - diff --git a/src/qt/textctrl.cpp b/src/qt/textctrl.cpp deleted file mode 100644 index fb522df053..0000000000 --- a/src/qt/textctrl.cpp +++ /dev/null @@ -1,439 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: textctrl.cpp -// Purpose: wxTextCtrl -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "textctrl.h" -#endif - -#include -#include -#include - -#include "wx/textctrl.h" -#include "wx/settings.h" - -#if defined(__BORLANDC__) && !defined(__WIN32__) -#include -#else -#ifndef __GNUWIN32__ -#include -#endif -#endif - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxTextCtrl, wxControl) - -BEGIN_EVENT_TABLE(wxTextCtrl, wxControl) - EVT_CHAR(wxTextCtrl::OnChar) - EVT_DROP_FILES(wxTextCtrl::OnDropFiles) - EVT_ERASE_BACKGROUND(wxTextCtrl::OnEraseBackground) -END_EVENT_TABLE() -#endif - -// Text item -wxTextCtrl::wxTextCtrl() -#ifndef NO_TEXT_WINDOW_STREAM - :streambuf() -#endif -{ - m_fileName = ""; -} - -bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id, - const wxString& value, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - m_fileName = ""; - SetName(name); - SetValidator(validator); - if (parent) parent->AddChild(this); - - m_windowStyle = style; - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - return TRUE; -} - -wxString wxTextCtrl::GetValue() const -{ - // TODO - return wxString(""); -} - -void wxTextCtrl::SetValue(const wxString& value) -{ - // TODO -} - -void wxTextCtrl::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -// Clipboard operations -void wxTextCtrl::Copy() -{ - // TODO -} - -void wxTextCtrl::Cut() -{ - // TODO -} - -void wxTextCtrl::Paste() -{ - // TODO -} - -void wxTextCtrl::SetEditable(bool editable) -{ - // TODO -} - -void wxTextCtrl::SetInsertionPoint(long pos) -{ - // TODO -} - -void wxTextCtrl::SetInsertionPointEnd() -{ - long pos = GetLastPosition(); - SetInsertionPoint(pos); -} - -long wxTextCtrl::GetInsertionPoint() const -{ - // TODO - return 0; -} - -long wxTextCtrl::GetLastPosition() const -{ - // TODO - return 0; -} - -void wxTextCtrl::Replace(long from, long to, const wxString& value) -{ - // TODO - return 0; -} - -void wxTextCtrl::Remove(long from, long to) -{ - // TODO -} - -void wxTextCtrl::SetSelection(long from, long to) -{ - // TODO -} - -bool wxTextCtrl::LoadFile(const wxString& file) -{ - if (!wxFileExists(file)) - return FALSE; - - m_fileName = file; - - Clear(); - - ifstream input((char*) (const char*) file, ios::nocreate | ios::in); - - if (!input.bad()) - { - struct stat stat_buf; - if (stat(file, &stat_buf) < 0) - return FALSE; - // This may need to be a bigger buffer than the file size suggests, - // if it's a UNIX file. Give it an extra 1000 just in case. - char *tmp_buffer = (char*)malloc((size_t)(stat_buf.st_size+1+1000)); - long no_lines = 0; - long pos = 0; - while (!input.eof() && input.peek() != EOF) - { - input.getline(wxBuffer, 500); - int len = strlen(wxBuffer); - wxBuffer[len] = 13; - wxBuffer[len+1] = 10; - wxBuffer[len+2] = 0; - strcpy(tmp_buffer+pos, wxBuffer); - pos += strlen(wxBuffer); - no_lines++; - } - - // TODO add line - - free(tmp_buffer); - - return TRUE; - } - return FALSE; -} - -// If file is null, try saved file name first -// Returns TRUE if succeeds. -bool wxTextCtrl::SaveFile(const wxString& file) -{ - wxString theFile(file); - if (theFile == "") - theFile = m_fileName; - if (theFile == "") - return FALSE; - m_fileName = theFile; - - ofstream output((char*) (const char*) theFile); - if (output.bad()) - return FALSE; - - // TODO get and save text - - return FALSE; -} - -void wxTextCtrl::WriteText(const wxString& text) -{ - // TODO write text to control -} - -void wxTextCtrl::Clear() -{ - // TODO -} - -bool wxTextCtrl::IsModified() const -{ - // TODO - return FALSE; -} - -// Makes 'unmodified' -void wxTextCtrl::DiscardEdits() -{ - // TODO -} - -int wxTextCtrl::GetNumberOfLines() const -{ - // TODO - return 0; -} - -long wxTextCtrl::XYToPosition(long x, long y) const -{ - // TODO - return 0; -} - -void wxTextCtrl::PositionToXY(long pos, long *x, long *y) const -{ - // TODO -} - -void wxTextCtrl::ShowPosition(long pos) -{ - // TODO -} - -int wxTextCtrl::GetLineLength(long lineNo) const -{ - // TODO - return 0; -} - -wxString wxTextCtrl::GetLineText(long lineNo) const -{ - // TODO - return wxString(""); -} - -/* - * Text item - */ - -void wxTextCtrl::Command(wxCommandEvent & event) -{ - SetValue (event.GetString()); - ProcessCommand (event); -} - -void wxTextCtrl::OnDropFiles(wxDropFilesEvent& event) -{ - // By default, load the first file into the text window. - if (event.GetNumberOfFiles() > 0) - { - LoadFile(event.GetFiles()[0]); - } -} - -// The streambuf code was partly taken from chapter 3 by Jerry Schwarz of -// AT&T's "C++ Lanuage System Release 3.0 Library Manual" - Stein Somers - -//========================================================================= -// Called then the buffer is full (gcc 2.6.3) -// or when "endl" is output (Borland 4.5) -//========================================================================= -// Class declaration using multiple inheritance doesn't work properly for -// Borland. See note in wb_text.h. -#ifndef NO_TEXT_WINDOW_STREAM -int wxTextCtrl::overflow(int c) -{ - // Make sure there is a holding area - if ( allocate()==EOF ) - { - wxError("Streambuf allocation failed","Internal error"); - return EOF; - } - - // Verify that there are no characters in get area - if ( gptr() && gptr() < egptr() ) - { - wxError("Who's trespassing my get area?","Internal error"); - return EOF; - } - - // Reset get area - setg(0,0,0); - - // Make sure there is a put area - if ( ! pptr() ) - { -/* This doesn't seem to be fatal so comment out error message */ -// wxError("Put area not opened","Internal error"); - setp( base(), base() ); - } - - // Determine how many characters have been inserted but no consumed - int plen = pptr() - pbase(); - - // Now Jerry relies on the fact that the buffer is at least 2 chars - // long, but the holding area "may be as small as 1" ??? - // And we need an additional \0, so let's keep this inefficient but - // safe copy. - - // If c!=EOF, it is a character that must also be comsumed - int xtra = c==EOF? 0 : 1; - - // Write temporary C-string to wxTextWindow - { - char *txt = new char[plen+xtra+1]; - memcpy(txt, pbase(), plen); - txt[plen] = (char)c; // append c - txt[plen+xtra] = '\0'; // append '\0' or overwrite c - // If the put area already contained \0, output will be truncated there - WriteText(txt); - delete[] txt; - } - - // Reset put area - setp(pbase(), epptr()); - -#if defined(__WATCOMC__) - return __NOT_EOF; -#elif defined(zapeof) // HP-UX (all cfront based?) - return zapeof(c); -#else - return c!=EOF ? c : 0; // this should make everybody happy -#endif -} - -//========================================================================= -// called then "endl" is output (gcc) or then explicit sync is done (Borland) -//========================================================================= -int wxTextCtrl::sync() -{ - // Verify that there are no characters in get area - if ( gptr() && gptr() < egptr() ) - { - wxError("Who's trespassing my get area?","Internal error"); - return EOF; - } - - if ( pptr() && pptr() > pbase() ) return overflow(EOF); - - return 0; -/* OLD CODE - int len = pptr() - pbase(); - char *txt = new char[len+1]; - strncpy(txt, pbase(), len); - txt[len] = '\0'; - (*this) << txt; - setp(pbase(), epptr()); - delete[] txt; - return 0; -*/ -} - -//========================================================================= -// Should not be called by a "ostream". Used by a "istream" -//========================================================================= -int wxTextCtrl::underflow() -{ - return EOF; -} -#endif - -wxTextCtrl& wxTextCtrl::operator<<(const wxString& s) -{ - WriteText(s); - return *this; -} - -wxTextCtrl& wxTextCtrl::operator<<(float f) -{ - wxString str; - str.Printf("%.2f", f); - WriteText(str); - return *this; -} - -wxTextCtrl& wxTextCtrl::operator<<(double d) -{ - wxString str; - str.Printf("%.2f", d); - WriteText(str); - return *this; -} - -wxTextCtrl& wxTextCtrl::operator<<(int i) -{ - wxString str; - str.Printf("%d", i); - WriteText(str); - return *this; -} - -wxTextCtrl& wxTextCtrl::operator<<(long i) -{ - wxString str; - str.Printf("%ld", i); - WriteText(str); - return *this; -} - -wxTextCtrl& wxTextCtrl::operator<<(const char c) -{ - char buf[2]; - - buf[0] = c; - buf[1] = 0; - WriteText(buf); - return *this; -} - diff --git a/src/qt/threadgui.inc b/src/qt/threadgui.inc deleted file mode 100644 index 165fef3c01..0000000000 --- a/src/qt/threadgui.inc +++ /dev/null @@ -1,65 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: threadgui.inc -// Purpose: GUI thread manager for GTK -// Author: Original from Wolfram Gloger/Guilhem Lavaux -// Modified by: -// Created: 04/22/98 -// RCS-ID: $Id$ -// Copyright: (c) Wolfram Gloger (1996, 1997); Guilhem Lavaux (1998) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#include -#include - -// for select() -#include -#include -#ifdef __sgi -#include -#endif - -#include - - -///////////////////////////////////////////////////////////////////////////// -// Static variables -///////////////////////////////////////////////////////////////////////////// - -static int p_thrd_pipe[2] = { -1, -1 }; -// WorkProc in GTK -static gint p_thrd_inid; - -#define THREAD_SEND_EXIT_MSG(ptr) write(p_thrd_pipe[1], &ptr, sizeof(ptr)); - -static void -ThreadExitProc(gpointer WXUNUSED(client), gint fid, - GdkInputCondition WXUNUSED(cond)) -{ - wxThread* ptr; - - if (fid != p_thrd_pipe[0]) - return; - if (read(fid, &ptr, sizeof(ptr)) == sizeof(ptr)) { - //fprintf(stderr, "calling OnExit %p\n", ptr); - ptr->OnExit(); - } else { - //fprintf(stderr, "this should never happen\n"); - } -} - -// Global initialization -static void wxThreadGuiInit() -{ - pipe(p_thrd_pipe); - p_thrd_inid = gdk_input_add(p_thrd_pipe[0], GDK_INPUT_READ, - ThreadExitProc, 0); -} - -// Global cleanup -static void wxThreadGuiExit() -{ - gdk_input_remove(p_thrd_inid); - close(p_thrd_pipe[0]); - close(p_thrd_pipe[1]); -} diff --git a/src/qt/threadno.cpp b/src/qt/threadno.cpp deleted file mode 100644 index 8cf94d1e06..0000000000 --- a/src/qt/threadno.cpp +++ /dev/null @@ -1,187 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: thread.cpp -// Purpose: No thread support -// Author: Original from Wolfram Gloger/Guilhem Lavaux -// Modified by: -// Created: 04/22/98 -// RCS-ID: $Id$ -// Copyright: (c) Wolfram Gloger (1996, 1997); Guilhem Lavaux (1998) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation "thread.h" -#endif - -#include "wx/wx.h" -#include "wx/module.h" -#include "wx/thread.h" - -wxMutex::wxMutex() -{ - m_locked = 0; -} - -wxMutex::~wxMutex() -{ - if (m_locked) - wxDebugMsg("wxMutex warning: destroying a locked mutex (%d locks)\n", m_locked); -} - -wxMutexError wxMutex::Lock() -{ - m_locked++; - return MUTEX_NO_ERROR; -} - -wxMutexError wxMutex::TryLock() -{ - if (m_locked > 0) - return MUTEX_BUSY; - m_locked++; - return MUTEX_NO_ERROR; -} - -wxMutexError wxMutex::Unlock() -{ - if (m_locked == 0) - return MUTEX_UNLOCKED; - m_locked--; - return MUTEX_NO_ERROR; -} - -wxCondition::wxCondition() -{ -} - -wxCondition::~wxCondition() -{ -} - -void wxCondition::Wait(wxMutex& WXUNUSED(mutex)) -{ -} - -bool wxCondition::Wait(wxMutex& WXUNUSED(mutex), unsigned long WXUNUSED(sec), - unsigned long WXUNUSED(nsec)) -{ - return FALSE; -} - -void wxCondition::Signal() -{ -} - -void wxCondition::Broadcast() -{ -} - -struct wxThreadInternal { - int thread_id; - void* exit_status; -}; - -wxThreadError wxThread::Create() -{ - p_internal->exit_status = Entry(); - OnExit(); - return THREAD_NO_ERROR; -} - -wxThreadError wxThread::Destroy() -{ - return THREAD_NOT_RUNNING; -} - -wxThreadError wxThread::Pause() -{ - return THREAD_NOT_RUNNING; -} - -wxThreadError wxThread::Resume() -{ - return THREAD_NOT_RUNNING; -} - -void wxThread::DeferDestroy( bool WXUNUSED(on) ) -{ -} - -void wxThread::TestDestroy() -{ -} - -void *wxThread::Join() -{ - return p_internal->exit_status; -} - -unsigned long wxThread::GetID() const -{ - return 0; -} - -wxThread *wxThread::GetThreadFromID(unsigned long WXUNUSED(id)) const -{ - return NULL; -} - -bool wxThread::IsMain() -{ - return TRUE; -} - -bool wxThread::IsRunning() const -{ - return FALSE; -} - -bool wxThread::IsAlive() const -{ - return FALSE; -} - -void wxThread::SetPriority(int WXUNUSED(prio)) { } -int wxThread::GetPriority() const { return 0; } - -wxMutex *wxMainMutex; // controls access to all GUI functions - -wxThread::wxThread() -{ - p_internal = new wxThreadInternal(); -} - -wxThread::~wxThread() -{ - Destroy(); - Join(); - delete p_internal; -} - -// The default callback just joins the thread and throws away the result. -void wxThread::OnExit() -{ - Join(); -} - - -// Automatic initialization -class wxThreadModule : public wxModule { - DECLARE_DYNAMIC_CLASS(wxThreadModule) -public: - bool OnInit(); - void OnExit(); -}; - -bool wxThreadModule::OnInit() { - wxMainMutex = new wxMutex(); - wxMainMutex->Lock(); - return TRUE; -} - -void wxThreadModule::OnExit() -{ - wxMainMutex->Unlock(); - delete wxMainMutex; -} - -IMPLEMENT_DYNAMIC_CLASS(wxThreadModule, wxModule) diff --git a/src/qt/threadpsx.cpp b/src/qt/threadpsx.cpp deleted file mode 100644 index 2d4912c05a..0000000000 --- a/src/qt/threadpsx.cpp +++ /dev/null @@ -1,396 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: threadpsx.cpp -// Purpose: wxThread (Posix) Implementation -// Author: Original from Wolfram Gloger/Guilhem Lavaux -// Modified by: -// Created: 04/22/98 -// RCS-ID: $Id$ -// Copyright: (c) Wolfram Gloger (1996, 1997); Guilhem Lavaux (1998) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation "thread.h" -#endif - -#include -#include -#include -#include -#include "wx/thread.h" -#include "wx/module.h" -#include "wx/utils.h" - -enum thread_state { - STATE_IDLE = 0, - STATE_RUNNING, - STATE_PAUSING, - STATE_PAUSED, - STATE_CANCELED, - STATE_EXITED -}; - -///////////////////////////////////////////////////////////////////////////// -// Static variables -///////////////////////////////////////////////////////////////////////////// - -static pthread_t p_mainid; -static wxMutex p_list_mutex; -static wxList p_threads_list; - -wxMutex *wxMainMutex; // controls access to all GUI functions - -///////////////////////////////////////////////////////////////////////////// -// GUI thread manager -///////////////////////////////////////////////////////////////////////////// -#include "threadgui.inc" - -///////////////////////////////////////////////////////////////////////////// -// wxThread: Posix Thread implementation (Mutex) -///////////////////////////////////////////////////////////////////////////// - -class wxMutexInternal { -public: - pthread_mutex_t p_mutex; -}; - -wxMutex::wxMutex() -{ - p_internal = new wxMutexInternal; - pthread_mutex_init(&(p_internal->p_mutex), NULL); - m_locked = 0; -} - -wxMutex::~wxMutex() -{ - if (m_locked > 0) - wxDebugMsg("wxMutex warning: freeing a locked mutex (%d locks)\n", - m_locked); - - pthread_mutex_destroy(&(p_internal->p_mutex)); - delete p_internal; -} - -wxMutexError wxMutex::Lock() -{ - int err; - - err = pthread_mutex_lock(&(p_internal->p_mutex)); - if (err == EDEADLK) - return MUTEX_DEAD_LOCK; - m_locked++; - return MUTEX_NO_ERROR; -} - -wxMutexError wxMutex::TryLock() -{ - int err; - - if (m_locked) - return MUTEX_BUSY; - err = pthread_mutex_trylock(&(p_internal->p_mutex)); - switch (err) { - case EBUSY: return MUTEX_BUSY; - } - m_locked++; - return MUTEX_NO_ERROR; -} - -wxMutexError wxMutex::Unlock() -{ - if (m_locked > 0) - m_locked--; - else - return MUTEX_UNLOCKED; - pthread_mutex_unlock(&(p_internal->p_mutex)); - return MUTEX_NO_ERROR; -} - -///////////////////////////////////////////////////////////////////////////// -// wxThread: Posix Thread implementation (Condition) -///////////////////////////////////////////////////////////////////////////// - -class wxConditionInternal { -public: - pthread_cond_t p_condition; -}; - -wxCondition::wxCondition() -{ - p_internal = new wxConditionInternal; - pthread_cond_init(&(p_internal->p_condition), NULL); -} - -wxCondition::~wxCondition() -{ - pthread_cond_destroy(&(p_internal->p_condition)); - delete p_internal; -} - -void wxCondition::Wait(wxMutex& mutex) -{ - pthread_cond_wait(&(p_internal->p_condition), &(mutex.p_internal->p_mutex)); -} - -bool wxCondition::Wait(wxMutex& mutex, unsigned long sec, unsigned long nsec) -{ - struct timespec tspec; - - tspec.tv_sec = time(NULL)+sec; - tspec.tv_nsec = nsec; - return (pthread_cond_timedwait(&(p_internal->p_condition), &(mutex.p_internal->p_mutex), &tspec) != ETIMEDOUT); -} - -void wxCondition::Signal() -{ - pthread_cond_signal(&(p_internal->p_condition)); -} - -void wxCondition::Broadcast() -{ - pthread_cond_broadcast(&(p_internal->p_condition)); -} - -///////////////////////////////////////////////////////////////////////////// -// wxThread: Posix Thread implementation (Thread) -///////////////////////////////////////////////////////////////////////////// - -class wxThreadInternal { -public: - wxThreadInternal() { state = STATE_IDLE; } - ~wxThreadInternal() {} - static void *PthreadStart(void *ptr); - pthread_t thread_id; - int state; - int prio; - int defer_destroy; - int id; -}; - -void *wxThreadInternal::PthreadStart(void *ptr) -{ - wxThread *thread = (wxThread *)ptr; - - // Add the current thread to the list - p_list_mutex.Lock(); - thread->p_internal->id = p_threads_list.Number(); - p_threads_list.Append((wxObject *)thread); - p_list_mutex.Unlock(); - - // Call the main entry - pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL); - void* status = thread->Entry(); - - thread->Exit(status); - - return NULL; -} - -wxThreadError wxThread::Create() -{ - pthread_attr_t a; - int min_prio, max_prio, p; - struct sched_param sp; - - if (p_internal->state != STATE_IDLE) - return THREAD_RUNNING; - - // Change thread priority - pthread_attr_init(&a); - pthread_attr_getschedpolicy(&a, &p); - - min_prio = sched_get_priority_min(p); - max_prio = sched_get_priority_max(p); - - pthread_attr_getschedparam(&a, &sp); - sp.sched_priority = min_prio + - (p_internal->prio*(max_prio-min_prio))/100; - pthread_attr_setschedparam(&a, &sp); - - // this is the point of no return - p_internal->state = STATE_RUNNING; - if (pthread_create(&p_internal->thread_id, &a, - wxThreadInternal::PthreadStart, (void *)this) != 0) { - p_internal->state = STATE_IDLE; - pthread_attr_destroy(&a); - return THREAD_NO_RESOURCE; - } - pthread_attr_destroy(&a); - - return THREAD_NO_ERROR; -} - -void wxThread::SetPriority(int prio) -{ - if (p_internal->state == STATE_RUNNING) - return; - - if (prio > 100) - prio = 100; - if (prio < 0) - prio = 0; - p_internal->prio = prio; -} - -int wxThread::GetPriority() const -{ - return p_internal->prio; -} - -void wxThread::DeferDestroy(bool on) -{ - if (on) - pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, NULL); - else - pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL); -} - -wxThreadError wxThread::Destroy() -{ - int res = 0; - - if (p_internal->state == STATE_RUNNING) { - res = pthread_cancel(p_internal->thread_id); - if (res == 0) - p_internal->state = STATE_CANCELED; - } - - return THREAD_NO_ERROR; -} - -wxThreadError wxThread::Pause() -{ - if (p_internal->state != STATE_RUNNING) - return THREAD_NOT_RUNNING; - - if (!p_internal->defer_destroy) - return THREAD_MISC_ERROR; - - p_internal->state = STATE_PAUSING; - return THREAD_NO_ERROR; -} - -wxThreadError wxThread::Resume() -{ - if (p_internal->state == STATE_PAUSING || p_internal->state == STATE_PAUSED) - p_internal->state = STATE_RUNNING; - - return THREAD_NO_ERROR; -} - -void *wxThread::Join() -{ - void* status = 0; - - if (p_internal->state != STATE_IDLE) { - bool do_unlock = wxThread::IsMain(); - - while (p_internal->state == STATE_RUNNING) - wxYield(); - - if (do_unlock) - wxMainMutex->Unlock(); - pthread_join(p_internal->thread_id, &status); - if (do_unlock) - wxMainMutex->Lock(); - - p_list_mutex.Lock(); - delete p_threads_list.Nth(p_internal->id); - p_list_mutex.Unlock(); - - p_internal->state = STATE_IDLE; - } - return status; -} - -unsigned long wxThread::GetID() const -{ - return p_internal->id; -} - -wxThread *wxThread::GetThreadFromID(unsigned long id) -{ - wxNode *node = p_threads_list.Nth(id); - - if (!node) - return NULL; - return (wxThread *)node->Data(); -} - -void wxThread::Exit(void *status) -{ - wxThread* ptr = this; - - THREAD_SEND_EXIT_MSG(ptr); - p_internal->state = STATE_EXITED; - pthread_exit(status); -} - -void wxThread::TestDestroy() -{ - if (p_internal->state == STATE_PAUSING) { - p_internal->state = STATE_PAUSED; - while (p_internal->state == STATE_PAUSED) { - pthread_testcancel(); - usleep(1); - } - } - pthread_testcancel(); -} - -bool wxThread::IsMain() -{ - return (bool)pthread_equal(pthread_self(), p_mainid); -} - -bool wxThread::IsRunning() const -{ - return (p_internal->state == STATE_RUNNING); -} - -bool wxThread::IsAlive() const -{ - return (p_internal->state == STATE_RUNNING) || - (p_internal->state == STATE_PAUSING) || - (p_internal->state == STATE_PAUSED); -} - -wxThread::wxThread() -{ - p_internal = new wxThreadInternal(); -} - -wxThread::~wxThread() -{ - Destroy(); - Join(); - delete p_internal; -} - -// The default callback just joins the thread and throws away the result. -void wxThread::OnExit() -{ - Join(); -} - -// Automatic initialization -class wxThreadModule : public wxModule { - DECLARE_DYNAMIC_CLASS(wxThreadModule) -public: - virtual bool OnInit() { - wxMainMutex = new wxMutex(); - wxThreadGuiInit(); - p_mainid = pthread_self(); - p_threads_list = wxList(wxKEY_INTEGER); - wxMainMutex->Lock(); - - return TRUE; - } - - virtual void OnExit() { - wxMainMutex->Unlock(); - wxThreadGuiExit(); - delete wxMainMutex; - } -}; - -IMPLEMENT_DYNAMIC_CLASS(wxThreadModule, wxModule) diff --git a/src/qt/threadsgi.cpp b/src/qt/threadsgi.cpp deleted file mode 100644 index 66b6b0da7b..0000000000 --- a/src/qt/threadsgi.cpp +++ /dev/null @@ -1,254 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: threadsgi.cpp -// Purpose: wxThread (SGI) Implementation -// Author: Original from Wolfram Gloger/Guilhem Lavaux -// Modified by: -// Created: 04/22/98 -// RCS-ID: $Id$ -// Copyright: (c) Wolfram Gloger (1996, 1997); Guilhem Lavaux (1998) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation "thread.h" -#endif - -#include -#include - -#include -#include -#include -#include "wx/thread.h" -#include "wx/module.h" -#include "wx/utils.h" - -enum thread_state { - STATE_IDLE = 0, - STATE_RUNNING, - STATE_CANCELED, - STATE_EXITED -}; - -///////////////////////////////////////////////////////////////////////////// -// Static variables -///////////////////////////////////////////////////////////////////////////// - -static int p_mainid; -wxMutex *wxMainMutex; - -#include "threadgui.inc" - -///////////////////////////////////////////////////////////////////////////// -// Unix implementations (SGI threads) -///////////////////////////////////////////////////////////////////////////// - -class wxMutexInternal { -public: - abilock_t p_mutex; -}; - -wxMutex::wxMutex() -{ - m_locked = 0; - p_internal = new wxMutexInternal; - init_lock(&(p_internal->p_mutex)); -} - -wxMutex::~wxMutex() -{ - if (m_locked > 0) - wxDebugMsg("wxMutex warning: freeing a locked mutex (%d locks)\n", - m_locked); - delete p_internal; -} - -wxMutexError wxMutex::Lock() -{ - spin_lock(&(p_internal->p_mutex)); - m_locked++; - return MUTEX_NO_ERROR; -} - -wxMutexError wxMutex::TryLock() -{ - if (acquire_lock(&(p_internal->p_mutex)) != 0) - return MUTEX_BUSY; - m_locked++; - return MUTEX_NO_ERROR; -} - -wxMutexError wxMutex::Unlock() -{ - if (m_locked == 0) - return MUTEX_UNLOCKED; - release_lock(&(p_internal->p_mutex)); - m_locked--; - return MUTEX_NO_ERROR; -} - -// GL: Don't know how it works on SGI. Wolfram ? - -wxCondition::wxCondition() {} -wxCondition::~wxCondition() {} -int wxCondition::Wait(wxMutex& WXUNUSED(mutex)) { return 0;} -int wxCondition::Wait(wxMutex& WXUNUSED(mutex), unsigned long WXUNUSED(sec), - unsigned long WXUNUSED(nsec)) { return 0; } -int wxCondition::Signal() { return 0; } -int wxCondition::Broadcast() { return 0; } - -class -wxThreadPrivate { -public: - wxThreadPrivate() { thread_id = 0; state = STATE_IDLE; } - ~wxThreadPrivate() {} - static void SprocStart(void *ptr); - static void SignalHandler(int sig); -public: - int state, thread_id; - void* exit_status; -}; - -void wxThreadPrivate::SprocStart(void *ptr) -{ - void* status; - - wxThread *thr = (wxThread *)ptr; - - thr->p_internal->thread_id = getpid(); - thr->p_internal->exit_status = 0; - status = thr->Entry(); - thr->Exit(status); -} - -void wxThread::Exit(void* status) -{ - wxThread* ptr = this; - THREAD_SEND_EXIT_MSG(ptr); - p_internal->state = STATE_EXITED; - p_internal->exit_status = status; - _exit(0); -} - -wxThreadError wxThread::Create() -{ - if (p_internal->state != STATE_IDLE) - return THREAD_RUNNING; - p_internal->state = STATE_RUNNING; - if (sproc(p_internal->SprocStart, PR_SALL, this) < 0) { - p_internal->state = STATE_IDLE; - return THREAD_NO_RESOURCE; - } - return THREAD_NO_ERROR; -} - -wxThreadError wxThread::Destroy() -{ - if (p_internal->state == STATE_RUNNING) - p_internal->state = STATE_CANCELED; - - return THREAD_NO_ERROR; -} - -wxThreadError wxThread::Pause() -{ - return THREAD_NO_ERROR; -} - -wxThreadError wxThread::Resume() -{ - return THREAD_NO_ERROR; -} - -void *wxThread::Join() -{ - if (p_internal->state != STATE_IDLE) { - bool do_unlock = wxThread::IsMain(); - int stat; - - if (do_unlock) - wxMainMutex->Unlock(); - waitpid(p_internal->thread_id, &stat, 0); - if (do_unlock) - wxMainMutex->Lock(); - if (!WIFEXITED(stat) && !WIFSIGNALED(stat)) - return 0; - p_internal->state = STATE_IDLE; - return p_internal->exit_status; - } - return 0; -} - -unsigned long wxThread::GetID() const -{ - return (unsigned long)p_internal->thread_id; -} - -void wxThread::TestDestroy() -{ - if (p_internal->state == STATE_CANCELED) { - p_internal->exit_status = 0; - _exit(0); - } -} - -void wxThread::SetPriority(int prio) -{ -} - -int wxThread::GetPriority() const -{ - return 0; -} - -bool wxThread::IsMain() -{ - return (int)getpid() == main_id; -} - -bool wxThread::IsAlive() const -{ - return (p_internal->state == STATE_RUNNING); -} - -bool wxThread::IsRunning() const -{ - return (p_internal->state == STATE_RUNNING); -} - -wxThread::wxThread() -{ - p_internal = new wxThreadPrivate(); -} - -wxThread::~wxThread() -{ - Cancel(); - Join(); - delete p_internal; -} - -// The default callback just joins the thread and throws away the result. -void wxThread::OnExit() -{ - Join(); -} - -// Global initialization -class wxThreadModule : public wxModule { - DECLARE_DYNAMIC_CLASS(wxThreadModule) -public: - virtual bool OnInit() { - wxMainMutex = new wxMutex(); - wxThreadGuiInit(); - p_mainid = (int)getpid(); - wxMainMutex->Lock(); - } - - virtual void OnExit() { - wxMainMutex->Unlock(); - wxThreadGuiExit(); - delete wxMainMutex; - } -}; - -IMPLEMENT_DYNAMIC_CLASS(wxThreadModule, wxModule) diff --git a/src/qt/timer.cpp b/src/qt/timer.cpp deleted file mode 100644 index f976056c77..0000000000 --- a/src/qt/timer.cpp +++ /dev/null @@ -1,56 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: timer.cpp -// Purpose: wxTimer implementation -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "timer.h" -#endif - -#include "wx/timer.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_ABSTRACT_CLASS(wxTimer, wxObject) -#endif - -wxTimer::wxTimer() -{ - m_milli = 0 ; - m_lastMilli = -1 ; - m_id = 0; - m_oneShot = FALSE; -} - -wxTimer::~wxTimer() -{ - Stop(); -} - -bool wxTimer::Start(int milliseconds,bool mode) -{ - m_oneShot = mode ; - if (m_milliseconds < 0) - m_milliseconds = lastMilli; - - if (m_milliseconds <= 0) - return FALSE; - - m_lastMilli = m_milli = m_milliseconds; - - // TODO: set the timer going. - return FALSE; -} - -void wxTimer::Stop() -{ - m_id = 0 ; - m_milli = 0 ; -} - - diff --git a/src/qt/utilsgtk.cpp b/src/qt/utilsgtk.cpp deleted file mode 100644 index bf6669325c..0000000000 --- a/src/qt/utilsgtk.cpp +++ /dev/null @@ -1,367 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: utils.cpp -// Purpose: -// Author: Robert Roebling -// Created: 01/02/97 -// Id: -// Copyright: (c) 1998 Robert Roebling, Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -//#ifdef __GNUG__ -//#pragma implementation "utils.h" -//#endif - -#include "wx/utils.h" -#include "wx/string.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef __SVR4__ -#include -#endif - -//------------------------------------------------------------------------ -// misc. -//------------------------------------------------------------------------ - -void wxBell(void) -{ - gdk_beep(); -}; - -void wxSleep(int nSecs) -{ - sleep(nSecs); -}; - -int wxKill(long pid, int sig) -{ - return kill(pid, sig); -}; - -void wxDisplaySize( int *width, int *height ) -{ - if (width) *width = gdk_screen_width(); - if (height) *height = gdk_screen_height(); -} - -//------------------------------------------------------------------------ -// user and home routines -//------------------------------------------------------------------------ - -char* wxGetHomeDir( char *dest ) -{ - wxString tmp = wxGetUserHome( wxString() ); - if (tmp.IsNull()) - strcpy( wxBuffer, "/" ); - else - strcpy( wxBuffer, tmp ); - if (dest) strcpy( dest, WXSTRINGCAST tmp ); - return wxBuffer; -}; - -char *wxGetUserHome( const wxString &user ) -{ - struct passwd *who = NULL; - - if (user.IsNull() || (user== "")) - { - register char *ptr; - - if ((ptr = getenv("HOME")) != NULL) - return ptr; - if ((ptr = getenv("USER")) != NULL - || (ptr = getenv("LOGNAME")) != NULL) { - who = getpwnam(ptr); - } - // We now make sure the the user exists! - if (who == NULL) - who = getpwuid(getuid()); - } - else - who = getpwnam (user); - - return who ? who->pw_dir : (char*)NULL; -}; - -//------------------------------------------------------------------------ -// id routines -//------------------------------------------------------------------------ - -bool wxGetHostName(char *buf, int sz) -{ - *buf = '\0'; -#if defined(__SVR4__) && !defined(__sgi) - return (sysinfo(SI_HOSTNAME, buf, sz) != -1); -#else /* BSD Sockets */ - char name[255]; - struct hostent *h; - // Get hostname - if (gethostname(name, sizeof(name)/sizeof(char)-1) == -1) - return FALSE; - // Get official full name of host - strncpy(buf, (h=gethostbyname(name))!=NULL ? h->h_name : name, sz-1); - return TRUE; -#endif -} - -bool wxGetUserId(char *buf, int sz) -{ - struct passwd *who; - - *buf = '\0'; - if ((who = getpwuid(getuid ())) != NULL) { - strncpy (buf, who->pw_name, sz-1); - return TRUE; - } - return FALSE; -} - -bool wxGetUserName(char *buf, int sz) -{ - struct passwd *who; - - *buf = '\0'; - if ((who = getpwuid (getuid ())) != NULL) { - strncpy (buf, who->pw_gecos, sz - 1); - return TRUE; - } - return FALSE; -} - -//------------------------------------------------------------------------ -// error and debug output routines -//------------------------------------------------------------------------ - -void wxDebugMsg( const char *format, ... ) -{ - va_list ap; - va_start( ap, format ); - vfprintf( stderr, format, ap ); - fflush( stderr ); - va_end(ap); -}; - -void wxError( const wxString &msg, const wxString &title ) -{ - fprintf( stderr, "Error " ); - if (!title.IsNull()) fprintf( stderr, "%s ", WXSTRINGCAST(title) ); - if (!msg.IsNull()) fprintf( stderr, ": %s", WXSTRINGCAST(msg) ); - fprintf( stderr, ".\n" ); -}; - -void wxFatalError( const wxString &msg, const wxString &title ) -{ - fprintf( stderr, "Error " ); - if (!title.IsNull()) fprintf( stderr, "%s ", WXSTRINGCAST(title) ); - if (!msg.IsNull()) fprintf( stderr, ": %s", WXSTRINGCAST(msg) ); - fprintf( stderr, ".\n" ); - exit(1); -}; - -//------------------------------------------------------------------------ -// directory routines -//------------------------------------------------------------------------ - -bool wxDirExists( const wxString& dir ) -{ - char buf[500]; - strcpy( buf, WXSTRINGCAST(dir) ); - struct stat sbuf; - return ((stat(buf, &sbuf) != -1) && S_ISDIR(sbuf.st_mode) ? TRUE : FALSE); -}; - -//------------------------------------------------------------------------ -// wild character routines -//------------------------------------------------------------------------ - -bool wxIsWild( const wxString& pattern ) -{ - wxString tmp = pattern; - char *pat = WXSTRINGCAST(tmp); - while (*pat) { - switch (*pat++) { - case '?': case '*': case '[': case '{': - return TRUE; - case '\\': - if (!*pat++) - return FALSE; - } - } - return FALSE; -}; - - -bool wxMatchWild( const wxString& pat, const wxString& text, bool dot_special ) -{ - wxString tmp1 = pat; - char *pattern = WXSTRINGCAST(tmp1); - wxString tmp2 = text; - char *str = WXSTRINGCAST(tmp2); - char c; - char *cp; - bool done = FALSE, ret_code, ok; - // Below is for vi fans - const char OB = '{', CB = '}'; - - // dot_special means '.' only matches '.' - if (dot_special && *str == '.' && *pattern != *str) - return FALSE; - - while ((*pattern != '\0') && (!done) - && (((*str=='\0')&&((*pattern==OB)||(*pattern=='*')))||(*str!='\0'))) { - switch (*pattern) { - case '\\': - pattern++; - if (*pattern != '\0') - pattern++; - break; - case '*': - pattern++; - ret_code = FALSE; - while ((*str!='\0') - && (!(ret_code=wxMatchWild(pattern, str++, FALSE)))) - /*loop*/; - if (ret_code) { - while (*str != '\0') - str++; - while (*pattern != '\0') - pattern++; - } - break; - case '[': - pattern++; - repeat: - if ((*pattern == '\0') || (*pattern == ']')) { - done = TRUE; - break; - } - if (*pattern == '\\') { - pattern++; - if (*pattern == '\0') { - done = TRUE; - break; - } - } - if (*(pattern + 1) == '-') { - c = *pattern; - pattern += 2; - if (*pattern == ']') { - done = TRUE; - break; - } - if (*pattern == '\\') { - pattern++; - if (*pattern == '\0') { - done = TRUE; - break; - } - } - if ((*str < c) || (*str > *pattern)) { - pattern++; - goto repeat; - } - } else if (*pattern != *str) { - pattern++; - goto repeat; - } - pattern++; - while ((*pattern != ']') && (*pattern != '\0')) { - if ((*pattern == '\\') && (*(pattern + 1) != '\0')) - pattern++; - pattern++; - } - if (*pattern != '\0') { - pattern++, str++; - } - break; - case '?': - pattern++; - str++; - break; - case OB: - pattern++; - while ((*pattern != CB) && (*pattern != '\0')) { - cp = str; - ok = TRUE; - while (ok && (*cp != '\0') && (*pattern != '\0') - && (*pattern != ',') && (*pattern != CB)) { - if (*pattern == '\\') - pattern++; - ok = (*pattern++ == *cp++); - } - if (*pattern == '\0') { - ok = FALSE; - done = TRUE; - break; - } else if (ok) { - str = cp; - while ((*pattern != CB) && (*pattern != '\0')) { - if (*++pattern == '\\') { - if (*++pattern == CB) - pattern++; - } - } - } else { - while (*pattern!=CB && *pattern!=',' && *pattern!='\0') { - if (*++pattern == '\\') { - if (*++pattern == CB || *pattern == ',') - pattern++; - } - } - } - if (*pattern != '\0') - pattern++; - } - break; - default: - if (*str == *pattern) { - str++, pattern++; - } else { - done = TRUE; - } - } - } - while (*pattern == '*') - pattern++; - return ((*str == '\0') && (*pattern == '\0')); -}; - -//------------------------------------------------------------------------ -// subprocess routines -//------------------------------------------------------------------------ - -long wxExecute( char **argv, bool sync, wxProcess *process ) -{ -}; - -long wxExecute( const wxString& command, bool sync, wxProcess *process ) -{ - if (command.IsNull() || command == "") return FALSE; - - int argc = 0; - char *argv[127]; - char tmp[1024]; - const char *IFS = " \t\n"; - - strncpy (tmp, command, sizeof(tmp) / sizeof(char) - 1); - tmp[sizeof (tmp) / sizeof (char) - 1] = '\0'; - argv[argc++] = strtok (tmp, IFS); - while ((argv[argc++] = strtok(NULL, IFS)) != NULL) - /* loop */ ; - return wxExecute(argv, sync, process); -}; - - diff --git a/src/qt/utilsres.cpp b/src/qt/utilsres.cpp deleted file mode 100644 index 562f0f31ca..0000000000 --- a/src/qt/utilsres.cpp +++ /dev/null @@ -1,332 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: utils.cpp -// Purpose: -// Author: Robert Roebling -// Created: 01/02/97 -// Id: -// Copyright: (c) 1998 Robert Roebling, Julian Smart and Markus Holzem -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -//#ifdef __GNUG__ -//#pragma implementation "utils.h" -//#endif - -#include "wx/utils.h" -#include "wx/string.h" -#include "wx/list.h" - -#include -#include -#include -#ifdef __SVR4__ -#include -#endif - -#include -#include -#include - - -//----------------------------------------------------------------------------- -// constants -//----------------------------------------------------------------------------- - -// Yuck this is really BOTH site and platform dependent -// so we should use some other strategy! -#ifdef __SUN__ - #define DEFAULT_XRESOURCE_DIR "/usr/openwin/lib/app-defaults" -#else - #define DEFAULT_XRESOURCE_DIR "/usr/lib/X11/app-defaults" -#endif - -//----------------------------------------------------------------------------- -// glabal data (data.cpp) -//----------------------------------------------------------------------------- - -extern wxList wxResourceCache; -extern XrmDatabase wxResourceDatabase; - -//----------------------------------------------------------------------------- -// utility functions for get/write resources -//----------------------------------------------------------------------------- - -static char *GetResourcePath(char *buf, char *name, bool create) -{ - if (create && FileExists(name)) { - strcpy(buf, name); - return buf; // Exists so ... - } - if (*name == '/') - strcpy(buf, name); - else { - // Put in standard place for resource files if not absolute - strcpy(buf, DEFAULT_XRESOURCE_DIR); - strcat(buf, "/"); - strcat(buf, FileNameFromPath(name)); - } - if (create) { - // Touch the file to create it - FILE *fd = fopen(buf, "w"); - if (fd) fclose(fd); - } - return buf; -} - -// Read $HOME for what it says is home, if not -// read $USER or $LOGNAME for user name else determine -// the Real User, then determine the Real home dir. -static char *GetIniFile(char *dest, const char *filename) -{ - char *home = NULL; - if (filename && wxIsAbsolutePath(filename)) - { - strcpy(dest, filename); - } - else - { - if ((home = wxGetUserHome(wxString())) != NULL) - { - strcpy(dest, home); - if (dest[strlen(dest) - 1] != '/') strcat(dest, "/"); - if (filename == NULL) - { - if ((filename = getenv("XENVIRONMENT")) == NULL) filename = ".Xdefaults"; - } - else - if (*filename != '.') strcat(dest, "."); - strcat(dest, filename); - } - else - { - dest[0] = '\0'; - } - } - return dest; -} - -static void wxXMergeDatabases(void) -{ - XrmDatabase homeDB, serverDB, applicationDB; - char filenamebuf[1024]; - - char *filename = &filenamebuf[0]; - char *environment; -// char *classname = gdk_progclass; // Robert Roebling ?? - printf( "Fixme.\n"); - char name[256]; - (void)strcpy(name, "/usr/lib/X11/app-defaults/"); - (void)strcat(name, classname ? classname : "wxWindows"); - - // Get application defaults file, if any - if ((applicationDB = XrmGetFileDatabase(name))) - (void)XrmMergeDatabases(applicationDB, &wxResourceDatabase); - - // Merge server defaults, created by xrdb, loaded as a property of the root - // window when the server initializes and loaded into the display - // structure on XOpenDisplay; - // if not defined, use .Xdefaults - printf( "Fixme.\n"); -/* if (XResourceManagerString(GDK_DISPLAY()) != NULL) { - serverDB = XrmGetStringDatabase(XResourceManagerString(GDK_DISPLAY())); - } else { - (void)GetIniFile(filename, NULL); - serverDB = XrmGetFileDatabase(filename); - } -*/ - if (serverDB) - XrmMergeDatabases(serverDB, &wxResourceDatabase); - - // Open XENVIRONMENT file, or if not defined, the .Xdefaults, - // and merge into existing database - - if ((environment = getenv("XENVIRONMENT")) == NULL) { - size_t len; - environment = GetIniFile(filename, NULL); - len = strlen(environment); -#if !defined(SVR4) || defined(__sgi) - (void)gethostname(environment + len, 1024 - len); -#else - (void)sysinfo(SI_HOSTNAME, environment + len, 1024 - len); -#endif - } - if ((homeDB = XrmGetFileDatabase(environment))) - XrmMergeDatabases(homeDB, &wxResourceDatabase); -} - -//----------------------------------------------------------------------------- -// called on application exit -//----------------------------------------------------------------------------- - -void wxFlushResources(void) -{ - char nameBuffer[512]; - - wxNode *node = wxResourceCache.First(); - while (node) { - char *file = node->key.string; - // If file doesn't exist, create it first. - (void)GetResourcePath(nameBuffer, file, TRUE); - - XrmDatabase database = (XrmDatabase)node->Data(); - XrmPutFileDatabase(database, nameBuffer); - XrmDestroyDatabase(database); - wxNode *next = node->Next(); - delete node; - node = next; - } -} - -void wxDeleteResources(const char *file) -{ - char buffer[500]; - (void)GetIniFile(buffer, file); - - wxNode *node = wxResourceCache.Find(buffer); - if (node) { - XrmDatabase database = (XrmDatabase)node->Data(); - XrmDestroyDatabase(database); - delete node; - } -} - -//----------------------------------------------------------------------------- -// resource functions -//----------------------------------------------------------------------------- - -bool wxWriteResource(const wxString& section, const wxString& entry, const wxString& value, const wxString& file ) -{ - char buffer[500]; - - if (!entry) return FALSE; - - (void)GetIniFile(buffer, file); - - XrmDatabase database; - wxNode *node = wxResourceCache.Find(buffer); - if (node) - database = (XrmDatabase)node->Data(); - else { - database = XrmGetFileDatabase(buffer); - wxResourceCache.Append(buffer, (wxObject *)database); - } - char resName[300]; - strcpy(resName, !section.IsNull() ? WXSTRINGCAST section : "wxWindows"); - strcat(resName, "."); - strcat(resName, entry); - XrmPutStringResource(&database, resName, value); - return TRUE; -}; - -bool wxWriteResource(const wxString& section, const wxString& entry, float value, const wxString& file ) -{ - char buf[50]; - sprintf(buf, "%.4f", value); - return wxWriteResource(section, entry, buf, file); -}; - -bool wxWriteResource(const wxString& section, const wxString& entry, long value, const wxString& file ) -{ - char buf[50]; - sprintf(buf, "%ld", value); - return wxWriteResource(section, entry, buf, file); -}; - -bool wxWriteResource(const wxString& section, const wxString& entry, int value, const wxString& file ) -{ - char buf[50]; - sprintf(buf, "%d", value); - return wxWriteResource(section, entry, buf, file); -}; - -bool wxGetResource(const wxString& section, const wxString& entry, char **value, const wxString& file ) -{ - if (!wxResourceDatabase) - wxXMergeDatabases(); - - XrmDatabase database; - if (file) { - char buffer[500]; - // Is this right? Trying to get it to look in the user's - // home directory instead of current directory -- JACS - (void)GetIniFile(buffer, file); - - wxNode *node = wxResourceCache.Find(buffer); - if (node) - database = (XrmDatabase)node->Data(); - else { - database = XrmGetFileDatabase(buffer); - wxResourceCache.Append(buffer, (wxObject *)database); - } - } else - database = wxResourceDatabase; - - XrmValue xvalue; - char *str_type[20]; - char buf[150]; - strcpy(buf, section); - strcat(buf, "."); - strcat(buf, entry); - - bool success = XrmGetResource(database, buf, "*", str_type, &xvalue); - // Try different combinations of upper/lower case, just in case... - if (!success) { - buf[0] = (isupper(buf[0]) ? tolower(buf[0]) : toupper(buf[0])); - success = XrmGetResource(database, buf, "*", str_type, &xvalue); - } - if (success) { - if (*value) - delete[] *value; - *value = new char[xvalue.size + 1]; - strncpy(*value, xvalue.addr, (int)xvalue.size); - return TRUE; - } - return FALSE; -}; - -bool wxGetResource(const wxString& section, const wxString& entry, float *value, const wxString& file ) -{ - char *s = NULL; - bool succ = wxGetResource(section, entry, &s, file); - if (succ) { - *value = (float)strtod(s, NULL); - delete[]s; - return TRUE; - } else - return FALSE; -}; - -bool wxGetResource(const wxString& section, const wxString& entry, long *value, const wxString& file ) -{ - char *s = NULL; - bool succ = wxGetResource(section, entry, &s, file); - if (succ) { - *value = strtol(s, NULL, 10); - delete[]s; - return TRUE; - } else - return FALSE; -}; - -bool wxGetResource(const wxString& section, const wxString& entry, int *value, const wxString& file ) -{ - char *s = NULL; - bool succ = wxGetResource(section, entry, &s, file); - if (succ) { - // Handle True, False here - // True, Yes, Enables, Set or Activated - if (*s == 'T' || *s == 'Y' || *s == 'E' || *s == 'S' || *s == 'A') - *value = TRUE; - // False, No, Disabled, Reset, Cleared, Deactivated - else if (*s == 'F' || *s == 'N' || *s == 'D' || *s == 'R' || *s == 'C') - *value = FALSE; - // Handle as Integer - else - *value = (int)strtol(s, NULL, 10); - delete[]s; - return TRUE; - } else - return FALSE; -}; - diff --git a/src/qt/verti.xbm b/src/qt/verti.xbm deleted file mode 100644 index 2dd9dc4c05..0000000000 --- a/src/qt/verti.xbm +++ /dev/null @@ -1,6 +0,0 @@ -#define verti_width 15 -#define verti_height 15 -static char verti_bits[] = { - 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, - 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, - 0x84, 0x10, 0x84, 0x10, 0x84, 0x10}; diff --git a/src/qt/window.cpp b/src/qt/window.cpp deleted file mode 100644 index ed842eb30b..0000000000 --- a/src/qt/window.cpp +++ /dev/null @@ -1,1281 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: windows.cpp -// Purpose: wxWindow -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "window.h" -#endif - -#include "wx/setup.h" -#include "wx/menu.h" -#include "wx/dc.h" -#include "wx/dcclient.h" -#include "wx/utils.h" -#include "wx/app.h" -#include "wx/panel.h" -#include "wx/layout.h" -#include "wx/dialog.h" -#include "wx/listbox.h" -#include "wx/button.h" -#include "wx/settings.h" -#include "wx/msgdlg.h" - -#include "wx/menuitem.h" -#include "wx/log.h" - -#if wxUSE_DRAG_AND_DROP -#include "wx/dnd.h" -#endif - -#include - -extern wxList wxPendingDelete; - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxWindow, wxEvtHandler) - -BEGIN_EVENT_TABLE(wxWindow, wxEvtHandler) - EVT_CHAR(wxWindow::OnChar) - EVT_ERASE_BACKGROUND(wxWindow::OnEraseBackground) - EVT_SYS_COLOUR_CHANGED(wxWindow::OnSysColourChanged) - EVT_INIT_DIALOG(wxWindow::OnInitDialog) - EVT_IDLE(wxWindow::OnIdle) -END_EVENT_TABLE() - -#endif - - -// Constructor -wxWindow::wxWindow() -{ - // Generic - m_windowId = 0; - m_windowStyle = 0; - m_windowParent = NULL; - m_windowEventHandler = this; - m_windowName = ""; - m_windowCursor = *wxSTANDARD_CURSOR; - m_children = new wxList; - m_constraints = NULL; - m_constraintsInvolvedIn = NULL; - m_windowSizer = NULL; - m_sizerParent = NULL; - m_autoLayout = FALSE; - m_windowValidator = NULL; - m_defaultItem = NULL; - m_returnCode = 0; - m_caretWidth = 0; m_caretHeight = 0; - m_caretEnabled = FALSE; - m_caretShown = FALSE; - m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOW) ; ; - m_foregroundColour = *wxBLACK; - m_defaultForegroundColour = *wxBLACK ; - m_defaultBackgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE) ; - -#if wxUSE_DRAG_AND_DROP - m_pDropTarget = NULL; -#endif -} - -// Destructor -wxWindow::~wxWindow() -{ - // Have to delete constraints/sizer FIRST otherwise - // sizers may try to look at deleted windows as they - // delete themselves. -#if wxUSE_CONSTRAINTS - DeleteRelatedConstraints(); - if (m_constraints) - { - // This removes any dangling pointers to this window - // in other windows' constraintsInvolvedIn lists. - UnsetConstraints(m_constraints); - delete m_constraints; - m_constraints = NULL; - } - if (m_windowSizer) - { - delete m_windowSizer; - m_windowSizer = NULL; - } - // If this is a child of a sizer, remove self from parent - if (m_sizerParent) - m_sizerParent->RemoveChild((wxWindow *)this); -#endif - - if (m_windowParent) - m_windowParent->RemoveChild(this); - - DestroyChildren(); - - // TODO: destroy the window - - delete m_children; - m_children = NULL; - - // Just in case the window has been Closed, but - // we're then deleting immediately: don't leave - // dangling pointers. - wxPendingDelete.DeleteObject(this); - - if ( m_windowValidator ) - delete m_windowValidator; -} - -// Destroy the window (delayed, if a managed window) -bool wxWindow::Destroy() -{ - delete this; - return TRUE; -} - -// Constructor -bool wxWindow::Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - // Generic - m_windowId = 0; - m_windowStyle = 0; - m_windowParent = NULL; - m_windowEventHandler = this; - m_windowName = ""; - m_windowCursor = *wxSTANDARD_CURSOR; - m_constraints = NULL; - m_constraintsInvolvedIn = NULL; - m_windowSizer = NULL; - m_sizerParent = NULL; - m_autoLayout = FALSE; - m_windowValidator = NULL; - -#if wxUSE_DRAG_AND_DROP - m_pDropTarget = NULL; -#endif - - m_caretWidth = 0; m_caretHeight = 0; - m_caretEnabled = FALSE; - m_caretShown = FALSE; - m_minSizeX = -1; - m_minSizeY = -1; - m_maxSizeX = -1; - m_maxSizeY = -1; - m_defaultItem = NULL; - m_windowParent = NULL; - if (!parent) - return FALSE; - - if (parent) parent->AddChild(this); - - m_returnCode = 0; - - SetName(name); - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOW) ; ; - m_foregroundColour = *wxBLACK; - m_defaultForegroundColour = *wxBLACK ; - m_defaultBackgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE) ; - - m_windowStyle = style; - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - // TODO: create the window - - return TRUE; -} - -void wxWindow::SetFocus() -{ - // TODO -} - -void wxWindow::Enable(bool enable) -{ - // TODO -} - -void wxWindow::CaptureMouse() -{ - // TODO -} - -void wxWindow::ReleaseMouse() -{ - // TODO -} - -// Push/pop event handler (i.e. allow a chain of event handlers -// be searched) -void wxWindow::PushEventHandler(wxEvtHandler *handler) -{ - handler->SetNextHandler(GetEventHandler()); - SetEventHandler(handler); -} - -wxEvtHandler *wxWindow::PopEventHandler(bool deleteHandler) -{ - if ( GetEventHandler() ) - { - wxEvtHandler *handlerA = GetEventHandler(); - wxEvtHandler *handlerB = handlerA->GetNextHandler(); - handlerA->SetNextHandler(NULL); - SetEventHandler(handlerB); - if ( deleteHandler ) - { - delete handlerA; - return NULL; - } - else - return handlerA; - } - else - return NULL; -} - -#if wxUSE_DRAG_AND_DROP - -void wxWindow::SetDropTarget(wxDropTarget *pDropTarget) -{ - if ( m_pDropTarget != 0 ) { - m_pDropTarget->Revoke(m_hWnd); - delete m_pDropTarget; - } - - m_pDropTarget = pDropTarget; - if ( m_pDropTarget != 0 ) - m_pDropTarget->Register(m_hWnd); -} - -#endif - -// Old style file-manager drag&drop -void wxWindow::DragAcceptFiles(bool accept) -{ - // TODO -} - -// Get total size -void wxWindow::GetSize(int *x, int *y) const -{ - // TODO -} - -void wxWindow::GetPosition(int *x, int *y) const -{ - // TODO -} - -void wxWindow::ScreenToClient(int *x, int *y) const -{ - // TODO -} - -void wxWindow::ClientToScreen(int *x, int *y) const -{ - // TODO -} - -void wxWindow::SetCursor(const wxCursor& cursor) -{ - m_windowCursor = cursor; - if (m_windowCursor.Ok()) - { - // TODO - } -} - - -// Get size *available for subwindows* i.e. excluding menu bar etc. -void wxWindow::GetClientSize(int *x, int *y) const -{ - // TODO -} - -void wxWindow::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -void wxWindow::SetClientSize(int width, int height) -{ - // TODO -} - -// For implementation purposes - sometimes decorations make the client area -// smaller -wxPoint wxWindow::GetClientAreaOrigin() const -{ - return wxPoint(0, 0); -} - -// Makes an adjustment to the window position (for example, a frame that has -// a toolbar that it manages itself). -void wxWindow::AdjustForParentClientOrigin(int& x, int& y, int sizeFlags) -{ - if (((sizeFlags & wxSIZE_NO_ADJUSTMENTS) == 0) && GetParent()) - { - wxPoint pt(GetParent()->GetClientAreaOrigin()); - x += pt.x; y += pt.y; - } -} - -bool wxWindow::Show(bool show) -{ - // TODO - return FALSE; -} - -bool wxWindow::IsShown() const -{ - // TODO - return FALSE; -} - -int wxWindow::GetCharHeight() const -{ - // TODO - return 0; -} - -int wxWindow::GetCharWidth() const -{ - // TODO - return 0; -} - -void wxWindow::GetTextExtent(const wxString& string, int *x, int *y, - int *descent, int *externalLeading, const wxFont *theFont, bool) const -{ - wxFont *fontToUse = (wxFont *)theFont; - if (!fontToUse) - fontToUse = (wxFont *) & m_windowFont; - - // TODO -} - -void wxWindow::Refresh(bool eraseBack, const wxRect *rect) -{ - // TODO -} - -// Responds to colour changes: passes event on to children. -void wxWindow::OnSysColourChanged(wxSysColourChangedEvent& event) -{ - wxNode *node = GetChildren()->First(); - while ( node ) - { - // Only propagate to non-top-level windows - wxWindow *win = (wxWindow *)node->Data(); - if ( win->GetParent() ) - { - wxSysColourChangedEvent event2; - event.m_eventObject = win; - win->GetEventHandler()->ProcessEvent(event2); - } - - node = node->Next(); - } -} - -// This can be called by the app (or wxWindows) to do default processing for the current -// event. Save message/event info in wxWindow so they can be used in this function. -long wxWindow::Default() -{ - // TODO - return 0; -} - -void wxWindow::InitDialog() -{ - wxInitDialogEvent event(GetId()); - event.SetEventObject( this ); - GetEventHandler()->ProcessEvent(event); -} - -// Default init dialog behaviour is to transfer data to window -void wxWindow::OnInitDialog(wxInitDialogEvent& event) -{ - TransferDataToWindow(); -} - -// Caret manipulation -void wxWindow::CreateCaret(int w, int h) -{ - m_caretWidth = w; - m_caretHeight = h; - m_caretEnabled = TRUE; -} - -void wxWindow::CreateCaret(const wxBitmap *WXUNUSED(bitmap)) -{ - // TODO -} - -void wxWindow::ShowCaret(bool show) -{ - // TODO -} - -void wxWindow::DestroyCaret() -{ - // TODO - m_caretEnabled = FALSE; -} - -void wxWindow::SetCaretPos(int x, int y) -{ - // TODO -} - -void wxWindow::GetCaretPos(int *x, int *y) const -{ - // TODO -} - -wxWindow *wxGetActiveWindow() -{ - // TODO - return NULL; -} - -void wxWindow::SetSizeHints(int minW, int minH, int maxW, int maxH, int WXUNUSED(incW), int WXUNUSED(incH)) -{ - m_minSizeX = minW; - m_minSizeY = minH; - m_maxSizeX = maxW; - m_maxSizeY = maxH; -} - -void wxWindow::Centre(int direction) -{ - int x, y, width, height, panel_width, panel_height, new_x, new_y; - - wxWindow *father = (wxWindow *)GetParent(); - if (!father) - return; - - father->GetClientSize(&panel_width, &panel_height); - GetSize(&width, &height); - GetPosition(&x, &y); - - new_x = -1; - new_y = -1; - - if (direction & wxHORIZONTAL) - new_x = (int)((panel_width - width)/2); - - if (direction & wxVERTICAL) - new_y = (int)((panel_height - height)/2); - - SetSize(new_x, new_y, -1, -1); - -} - -// Coordinates relative to the window -void wxWindow::WarpPointer (int x_pos, int y_pos) -{ - // TODO -} - -void wxWindow::OnEraseBackground(wxEraseEvent& event) -{ - // TODO - Default(); -} - -int wxWindow::GetScrollPos(int orient) const -{ - // TODO - return 0; -} - -// This now returns the whole range, not just the number -// of positions that we can scroll. -int wxWindow::GetScrollRange(int orient) const -{ - // TODO - return 0; -} - -int wxWindow::GetScrollThumb(int orient) const -{ - // TODO - return 0; -} - -void wxWindow::SetScrollPos(int orient, int pos, bool refresh) -{ - // TODO - return 0; -} - -// New function that will replace some of the above. -void wxWindow::SetScrollbar(int orient, int pos, int thumbVisible, - int range, bool refresh) -{ - // TODO -} - -// Does a physical scroll -void wxWindow::ScrollWindow(int dx, int dy, const wxRect *rect) -{ - // TODO - return 0; -} - -void wxWindow::SetFont(const wxFont& font) -{ - m_windowFont = font; - - if (!m_windowFont.Ok()) - return; - // TODO -} - -void wxWindow::OnChar(wxKeyEvent& event) -{ - if ( event.KeyCode() == WXK_TAB ) { - // propagate the TABs to the parent - it's up to it to decide what - // to do with it - if ( GetParent() ) { - if ( GetParent()->ProcessEvent(event) ) - return; - } - } -} - -void wxWindow::OnPaint(wxPaintEvent& event) -{ - Default(); -} - -bool wxWindow::IsEnabled() const -{ - // TODO - return FALSE; -} - -// Dialog support: override these and call -// base class members to add functionality -// that can't be done using validators. -// NOTE: these functions assume that controls -// are direct children of this window, not grandchildren -// or other levels of descendant. - -// Transfer values to controls. If returns FALSE, -// it's an application error (pops up a dialog) -bool wxWindow::TransferDataToWindow() -{ - wxNode *node = GetChildren()->First(); - while ( node ) - { - wxWindow *child = (wxWindow *)node->Data(); - if ( child->GetValidator() && - !child->GetValidator()->TransferToWindow() ) - { - wxMessageBox("Application Error", "Could not transfer data to window", wxOK|wxICON_EXCLAMATION); - return FALSE; - } - - node = node->Next(); - } - return TRUE; -} - -// Transfer values from controls. If returns FALSE, -// validation failed: don't quit -bool wxWindow::TransferDataFromWindow() -{ - wxNode *node = GetChildren()->First(); - while ( node ) - { - wxWindow *child = (wxWindow *)node->Data(); - if ( child->GetValidator() && !child->GetValidator()->TransferFromWindow() ) - { - return FALSE; - } - - node = node->Next(); - } - return TRUE; -} - -bool wxWindow::Validate() -{ - wxNode *node = GetChildren()->First(); - while ( node ) - { - wxWindow *child = (wxWindow *)node->Data(); - if ( child->GetValidator() && /* child->GetValidator()->Ok() && */ !child->GetValidator()->Validate(this) ) - { - return FALSE; - } - - node = node->Next(); - } - return TRUE; -} - -// Get the window with the focus -wxWindow *wxWindow::FindFocus() -{ - // TODO - return NULL; -} - -void wxWindow::AddChild(wxWindow *child) -{ - GetChildren()->Append(child); - child->m_windowParent = this; -} - -void wxWindow::RemoveChild(wxWindow *child) -{ - if (GetChildren()) - GetChildren()->DeleteObject(child); - child->m_windowParent = NULL; -} - -void wxWindow::DestroyChildren() -{ - if (GetChildren()) { - wxNode *node; - while ((node = GetChildren()->First()) != (wxNode *)NULL) { - wxWindow *child; - if ((child = (wxWindow *)node->Data()) != (wxWindow *)NULL) { - delete child; - if ( GetChildren()->Member(child) ) - delete node; - } - } /* while */ - } -} - -void wxWindow::MakeModal(bool modal) -{ - // Disable all other windows - if (this->IsKindOf(CLASSINFO(wxDialog)) || this->IsKindOf(CLASSINFO(wxFrame))) - { - wxNode *node = wxTopLevelWindows.First(); - while (node) - { - wxWindow *win = (wxWindow *)node->Data(); - if (win != this) - win->Enable(!modal); - - node = node->Next(); - } - } -} - -// If nothing defined for this, try the parent. -// E.g. we may be a button loaded from a resource, with no callback function -// defined. -void wxWindow::OnCommand(wxWindow& win, wxCommandEvent& event) -{ - if (GetEventHandler()->ProcessEvent(event) ) - return; - if (m_windowParent) - m_windowParent->GetEventHandler()->OnCommand(win, event); -} - -void wxWindow::SetConstraints(wxLayoutConstraints *c) -{ - if (m_constraints) - { - UnsetConstraints(m_constraints); - delete m_constraints; - } - m_constraints = c; - if (m_constraints) - { - // Make sure other windows know they're part of a 'meaningful relationship' - if (m_constraints->left.GetOtherWindow() && (m_constraints->left.GetOtherWindow() != this)) - m_constraints->left.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->top.GetOtherWindow() && (m_constraints->top.GetOtherWindow() != this)) - m_constraints->top.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->right.GetOtherWindow() && (m_constraints->right.GetOtherWindow() != this)) - m_constraints->right.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->bottom.GetOtherWindow() && (m_constraints->bottom.GetOtherWindow() != this)) - m_constraints->bottom.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->width.GetOtherWindow() && (m_constraints->width.GetOtherWindow() != this)) - m_constraints->width.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->height.GetOtherWindow() && (m_constraints->height.GetOtherWindow() != this)) - m_constraints->height.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->centreX.GetOtherWindow() && (m_constraints->centreX.GetOtherWindow() != this)) - m_constraints->centreX.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->centreY.GetOtherWindow() && (m_constraints->centreY.GetOtherWindow() != this)) - m_constraints->centreY.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - } -} - -// This removes any dangling pointers to this window -// in other windows' constraintsInvolvedIn lists. -void wxWindow::UnsetConstraints(wxLayoutConstraints *c) -{ - if (c) - { - if (c->left.GetOtherWindow() && (c->top.GetOtherWindow() != this)) - c->left.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->top.GetOtherWindow() && (c->top.GetOtherWindow() != this)) - c->top.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->right.GetOtherWindow() && (c->right.GetOtherWindow() != this)) - c->right.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->bottom.GetOtherWindow() && (c->bottom.GetOtherWindow() != this)) - c->bottom.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->width.GetOtherWindow() && (c->width.GetOtherWindow() != this)) - c->width.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->height.GetOtherWindow() && (c->height.GetOtherWindow() != this)) - c->height.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->centreX.GetOtherWindow() && (c->centreX.GetOtherWindow() != this)) - c->centreX.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->centreY.GetOtherWindow() && (c->centreY.GetOtherWindow() != this)) - c->centreY.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - } -} - -// Back-pointer to other windows we're involved with, so if we delete -// this window, we must delete any constraints we're involved with. -void wxWindow::AddConstraintReference(wxWindow *otherWin) -{ - if (!m_constraintsInvolvedIn) - m_constraintsInvolvedIn = new wxList; - if (!m_constraintsInvolvedIn->Member(otherWin)) - m_constraintsInvolvedIn->Append(otherWin); -} - -// REMOVE back-pointer to other windows we're involved with. -void wxWindow::RemoveConstraintReference(wxWindow *otherWin) -{ - if (m_constraintsInvolvedIn) - m_constraintsInvolvedIn->DeleteObject(otherWin); -} - -// Reset any constraints that mention this window -void wxWindow::DeleteRelatedConstraints() -{ - if (m_constraintsInvolvedIn) - { - wxNode *node = m_constraintsInvolvedIn->First(); - while (node) - { - wxWindow *win = (wxWindow *)node->Data(); - wxNode *next = node->Next(); - wxLayoutConstraints *constr = win->GetConstraints(); - - // Reset any constraints involving this window - if (constr) - { - constr->left.ResetIfWin((wxWindow *)this); - constr->top.ResetIfWin((wxWindow *)this); - constr->right.ResetIfWin((wxWindow *)this); - constr->bottom.ResetIfWin((wxWindow *)this); - constr->width.ResetIfWin((wxWindow *)this); - constr->height.ResetIfWin((wxWindow *)this); - constr->centreX.ResetIfWin((wxWindow *)this); - constr->centreY.ResetIfWin((wxWindow *)this); - } - delete node; - node = next; - } - delete m_constraintsInvolvedIn; - m_constraintsInvolvedIn = NULL; - } -} - -void wxWindow::SetSizer(wxSizer *sizer) -{ - m_windowSizer = sizer; - if (sizer) - sizer->SetSizerParent((wxWindow *)this); -} - -/* - * New version - */ - -bool wxWindow::Layout() -{ - if (GetConstraints()) - { - int w, h; - GetClientSize(&w, &h); - GetConstraints()->width.SetValue(w); - GetConstraints()->height.SetValue(h); - } - - // If top level (one sizer), evaluate the sizer's constraints. - if (GetSizer()) - { - int noChanges; - GetSizer()->ResetConstraints(); // Mark all constraints as unevaluated - GetSizer()->LayoutPhase1(&noChanges); - GetSizer()->LayoutPhase2(&noChanges); - GetSizer()->SetConstraintSizes(); // Recursively set the real window sizes - return TRUE; - } - else - { - // Otherwise, evaluate child constraints - ResetConstraints(); // Mark all constraints as unevaluated - DoPhase(1); // Just one phase need if no sizers involved - DoPhase(2); - SetConstraintSizes(); // Recursively set the real window sizes - } - return TRUE; -} - - -// Do a phase of evaluating constraints: -// the default behaviour. wxSizers may do a similar -// thing, but also impose their own 'constraints' -// and order the evaluation differently. -bool wxWindow::LayoutPhase1(int *noChanges) -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - return constr->SatisfyConstraints((wxWindow *)this, noChanges); - } - else - return TRUE; -} - -bool wxWindow::LayoutPhase2(int *noChanges) -{ - *noChanges = 0; - - // Layout children - DoPhase(1); - DoPhase(2); - return TRUE; -} - -// Do a phase of evaluating child constraints -bool wxWindow::DoPhase(int phase) -{ - int noIterations = 0; - int maxIterations = 500; - int noChanges = 1; - int noFailures = 0; - wxList succeeded; - while ((noChanges > 0) && (noIterations < maxIterations)) - { - noChanges = 0; - noFailures = 0; - wxNode *node = GetChildren()->First(); - while (node) - { - wxWindow *child = (wxWindow *)node->Data(); - if (!child->IsKindOf(CLASSINFO(wxFrame)) && !child->IsKindOf(CLASSINFO(wxDialog))) - { - wxLayoutConstraints *constr = child->GetConstraints(); - if (constr) - { - if (succeeded.Member(child)) - { - } - else - { - int tempNoChanges = 0; - bool success = ( (phase == 1) ? child->LayoutPhase1(&tempNoChanges) : child->LayoutPhase2(&tempNoChanges) ) ; - noChanges += tempNoChanges; - if (success) - { - succeeded.Append(child); - } - } - } - } - node = node->Next(); - } - noIterations ++; - } - return TRUE; -} - -void wxWindow::ResetConstraints() -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - constr->left.SetDone(FALSE); - constr->top.SetDone(FALSE); - constr->right.SetDone(FALSE); - constr->bottom.SetDone(FALSE); - constr->width.SetDone(FALSE); - constr->height.SetDone(FALSE); - constr->centreX.SetDone(FALSE); - constr->centreY.SetDone(FALSE); - } - wxNode *node = GetChildren()->First(); - while (node) - { - wxWindow *win = (wxWindow *)node->Data(); - if (!win->IsKindOf(CLASSINFO(wxFrame)) && !win->IsKindOf(CLASSINFO(wxDialog))) - win->ResetConstraints(); - node = node->Next(); - } -} - -// Need to distinguish between setting the 'fake' size for -// windows and sizers, and setting the real values. -void wxWindow::SetConstraintSizes(bool recurse) -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr && constr->left.GetDone() && constr->right.GetDone() && - constr->width.GetDone() && constr->height.GetDone()) - { - int x = constr->left.GetValue(); - int y = constr->top.GetValue(); - int w = constr->width.GetValue(); - int h = constr->height.GetValue(); - - // If we don't want to resize this window, just move it... - if ((constr->width.GetRelationship() != wxAsIs) || - (constr->height.GetRelationship() != wxAsIs)) - { - // Calls Layout() recursively. AAAGH. How can we stop that. - // Simply take Layout() out of non-top level OnSizes. - SizerSetSize(x, y, w, h); - } - else - { - SizerMove(x, y); - } - } - else if (constr) - { - char *windowClass = this->GetClassInfo()->GetClassName(); - - wxString winName; - if (GetName() == "") - winName = "unnamed"; - else - winName = GetName(); - wxDebugMsg("Constraint(s) not satisfied for window of type %s, name %s:\n", (const char *)windowClass, (const char *)winName); - if (!constr->left.GetDone()) - wxDebugMsg(" unsatisfied 'left' constraint.\n"); - if (!constr->right.GetDone()) - wxDebugMsg(" unsatisfied 'right' constraint.\n"); - if (!constr->width.GetDone()) - wxDebugMsg(" unsatisfied 'width' constraint.\n"); - if (!constr->height.GetDone()) - wxDebugMsg(" unsatisfied 'height' constraint.\n"); - wxDebugMsg("Please check constraints: try adding AsIs() constraints.\n"); - } - - if (recurse) - { - wxNode *node = GetChildren()->First(); - while (node) - { - wxWindow *win = (wxWindow *)node->Data(); - if (!win->IsKindOf(CLASSINFO(wxFrame)) && !win->IsKindOf(CLASSINFO(wxDialog))) - win->SetConstraintSizes(); - node = node->Next(); - } - } -} - -// This assumes that all sizers are 'on' the same -// window, i.e. the parent of this window. -void wxWindow::TransformSizerToActual(int *x, int *y) const -{ - if (!m_sizerParent || m_sizerParent->IsKindOf(CLASSINFO(wxDialog)) || - m_sizerParent->IsKindOf(CLASSINFO(wxFrame)) ) - return; - - int xp, yp; - m_sizerParent->GetPosition(&xp, &yp); - m_sizerParent->TransformSizerToActual(&xp, &yp); - *x += xp; - *y += yp; -} - -void wxWindow::SizerSetSize(int x, int y, int w, int h) -{ - int xx = x; - int yy = y; - TransformSizerToActual(&xx, &yy); - SetSize(xx, yy, w, h); -} - -void wxWindow::SizerMove(int x, int y) -{ - int xx = x; - int yy = y; - TransformSizerToActual(&xx, &yy); - Move(xx, yy); -} - -// Only set the size/position of the constraint (if any) -void wxWindow::SetSizeConstraint(int x, int y, int w, int h) -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - if (x != -1) - { - constr->left.SetValue(x); - constr->left.SetDone(TRUE); - } - if (y != -1) - { - constr->top.SetValue(y); - constr->top.SetDone(TRUE); - } - if (w != -1) - { - constr->width.SetValue(w); - constr->width.SetDone(TRUE); - } - if (h != -1) - { - constr->height.SetValue(h); - constr->height.SetDone(TRUE); - } - } -} - -void wxWindow::MoveConstraint(int x, int y) -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - if (x != -1) - { - constr->left.SetValue(x); - constr->left.SetDone(TRUE); - } - if (y != -1) - { - constr->top.SetValue(y); - constr->top.SetDone(TRUE); - } - } -} - -void wxWindow::GetSizeConstraint(int *w, int *h) const -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - *w = constr->width.GetValue(); - *h = constr->height.GetValue(); - } - else - GetSize(w, h); -} - -void wxWindow::GetClientSizeConstraint(int *w, int *h) const -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - *w = constr->width.GetValue(); - *h = constr->height.GetValue(); - } - else - GetClientSize(w, h); -} - -void wxWindow::GetPositionConstraint(int *x, int *y) const -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - *x = constr->left.GetValue(); - *y = constr->top.GetValue(); - } - else - GetPosition(x, y); -} - -bool wxWindow::Close(bool force) -{ - wxCloseEvent event(wxEVT_CLOSE_WINDOW, m_windowId); - event.SetEventObject(this); - event.SetForce(force); - - return GetEventHandler()->ProcessEvent(event); -} - -wxObject* wxWindow::GetChild(int number) const -{ - // Return a pointer to the Nth object in the window - if (!GetChildren()) - return(NULL) ; - wxNode *node = GetChildren()->First(); - int n = number; - while (node && n--) - node = node->Next() ; - if (node) - { - wxObject *obj = (wxObject *)node->Data(); - return(obj) ; - } - else - return NULL ; -} - -void wxWindow::OnDefaultAction(wxControl *initiatingItem) -{ - // Obsolete function -} - -void wxWindow::Clear() -{ - wxClientDC dc(this); - wxBrush brush(GetBackgroundColour(), wxSOLID); - dc.SetBackground(brush); - dc.Clear(); -} - -// Fits the panel around the items -void wxWindow::Fit() -{ - int maxX = 0; - int maxY = 0; - wxNode *node = GetChildren()->First(); - while ( node ) - { - wxWindow *win = (wxWindow *)node->Data(); - int wx, wy, ww, wh; - win->GetPosition(&wx, &wy); - win->GetSize(&ww, &wh); - if ( wx + ww > maxX ) - maxX = wx + ww; - if ( wy + wh > maxY ) - maxY = wy + wh; - - node = node->Next(); - } - SetClientSize(maxX + 5, maxY + 5); -} - -void wxWindow::SetValidator(const wxValidator& validator) -{ - if ( m_windowValidator ) - delete m_windowValidator; - m_windowValidator = validator.Clone(); - - if ( m_windowValidator ) - m_windowValidator->SetWindow(this) ; -} - -// Find a window by id or name -wxWindow *wxWindow::FindWindow(long id) -{ - if ( GetId() == id) - return this; - - wxNode *node = GetChildren()->First(); - while ( node ) - { - wxWindow *child = (wxWindow *)node->Data(); - wxWindow *found = child->FindWindow(id); - if ( found ) - return found; - node = node->Next(); - } - return NULL; -} - -wxWindow *wxWindow::FindWindow(const wxString& name) -{ - if ( GetName() == name) - return this; - - wxNode *node = GetChildren()->First(); - while ( node ) - { - wxWindow *child = (wxWindow *)node->Data(); - wxWindow *found = child->FindWindow(name); - if ( found ) - return found; - node = node->Next(); - } - return NULL; -} - -void wxWindow::OnIdle(wxIdleEvent& event) -{ -/* TODO: you may need to do something like this - * if your GUI doesn't generate enter/leave events - - // Check if we need to send a LEAVE event - if (m_mouseInWindow) - { - POINT pt; - ::GetCursorPos(&pt); - if (::WindowFromPoint(pt) != (HWND) GetHWND()) - { - // Generate a LEAVE event - m_mouseInWindow = FALSE; - MSWOnMouseLeave(pt.x, pt.y, 0); - } - } -*/ - - // This calls the UI-update mechanism (querying windows for - // menu/toolbar/control state information) - UpdateWindowUI(); -} - -// Raise the window to the top of the Z order -void wxWindow::Raise() -{ - // TODO -} - -// Lower the window to the bottom of the Z order -void wxWindow::Lower() -{ - // TODO -} - -bool wxWindow::AcceptsFocus() const -{ - return IsShown() && IsEnabled(); -} - -// Update region access -wxRegion wxWindow::GetUpdateRegion() const -{ - return m_updateRegion; -} - -bool wxWindow::IsExposed(int x, int y, int w, int h) const -{ - return (m_updateRegion.Contains(x, y, w, h) != wxOutRegion); -} - -bool wxWindow::IsExposed(const wxPoint& pt) const -{ - return (m_updateRegion.Contains(pt) != wxOutRegion); -} - -bool wxWindow::IsExposed(const wxRect& rect) const -{ - return (m_updateRegion.Contains(rect) != wxOutRegion); -} - - diff --git a/src/stubs.inc b/src/stubs.inc deleted file mode 100644 index 2f63d56891..0000000000 --- a/src/stubs.inc +++ /dev/null @@ -1,201 +0,0 @@ -# needed for unactivated -NONE = - -# define library name -LIB_TARGET=wx_stubs -LIB_MAJOR=1 -LIB_MINOR=0 - -# define library sources - -LIB_CPP_SRC=\ -\ - common/cmndata.cpp \ - common/config.cpp \ - common/date.cpp \ - common/docmdi.cpp \ - common/docview.cpp \ - common/dynarray.cpp \ - common/dynlib.cpp \ - common/event.cpp \ - common/file.cpp \ - common/fileconf.cpp \ - common/filefn.cpp \ - common/gdicmn.cpp \ - common/hash.cpp \ - common/helpbase.cpp \ - common/intl.cpp \ - common/ipcbase.cpp \ - common/layout.cpp \ - common/list.cpp \ - common/log.cpp \ - common/matrix.cpp \ - common/memory.cpp \ - common/module.cpp \ - common/object.cpp \ - common/odbc.cpp \ - common/prntbase.cpp \ - common/resource.cpp \ - common/serbase.cpp \ - common/string.cpp \ - common/textfile.cpp \ - common/time.cpp \ - common/timercmn.cpp \ - common/utilscmn.cpp \ - common/wincmn.cpp \ - common/framecmn.cpp \ - common/stream.cpp \ - common/datstrm.cpp \ - common/wfstream.cpp \ - common/mstream.cpp \ - common/zstream.cpp \ - common/objstrm.cpp \ - common/sckstrm.cpp \ - common/validate.cpp \ - common/valtext.cpp \ - common/variant.cpp \ - common/wxexpr.cpp \ - common/socket.cpp \ - common/sckaddr.cpp \ - common/sckipc.cpp \ - common/protocol.cpp \ - common/ftp.cpp \ - common/http.cpp \ - common/url.cpp \ - common/tokenzr.cpp \ -\ - stubs/accel.cpp \ - stubs/app.cpp \ - stubs/bitmap.cpp \ - stubs/bmpbuttn.cpp \ - stubs/brush.cpp \ - stubs/button.cpp \ - stubs/checkbox.cpp \ - stubs/choice.cpp \ - stubs/clipbrd.cpp \ - stubs/colour.cpp \ - stubs/colordlg.cpp \ - stubs/control.cpp \ - stubs/combobox.cpp \ - stubs/cursor.cpp \ - stubs/data.cpp \ - stubs/dc.cpp \ - stubs/dcclient.cpp \ - stubs/dcmemory.cpp \ - stubs/dcscreen.cpp \ - stubs/dialog.cpp \ - stubs/dirdlg.cpp \ - stubs/dnd.cpp \ - stubs/filedlg.cpp \ - stubs/font.cpp \ - stubs/fontdlg.cpp \ - stubs/frame.cpp \ - stubs/gauge.cpp \ - stubs/gdiobj.cpp \ - stubs/helpxxxx.cpp \ - stubs/icon.cpp \ - stubs/imaglist.cpp \ - stubs/listbox.cpp \ - stubs/joystick.cpp \ - stubs/main.cpp \ - stubs/mdi.cpp \ - stubs/menu.cpp \ - stubs/menuitem.cpp \ - stubs/metafile.cpp \ - stubs/minifram.cpp \ - stubs/msgdlg.cpp \ - stubs/notebook.cpp \ - stubs/palette.cpp \ - stubs/pen.cpp \ - stubs/print.cpp \ - stubs/radiobox.cpp \ - stubs/radiobut.cpp \ - stubs/region.cpp \ - stubs/scrolbar.cpp \ - stubs/settings.cpp \ - stubs/slider.cpp \ - stubs/spinbutt.cpp \ - stubs/statbox.cpp \ - stubs/statbmp.cpp \ - stubs/stattext.cpp \ - stubs/statusbr.cpp \ - stubs/taskbar.cpp \ - stubs/textctrl.cpp \ - stubs/thread.cpp \ - stubs/timer.cpp \ - stubs/toolbar.cpp \ - stubs/treectrl.cpp \ - stubs/utils.cpp \ - stubs/utilsexc.cpp \ - stubs/wave.cpp \ - stubs/window.cpp \ -\ - generic/choicdgg.cpp \ - generic/colrdlgg.cpp \ - generic/dcpsg.cpp \ - generic/fontdlgg.cpp \ - generic/gridg.cpp \ - generic/imaglist.cpp \ - generic/listctrl.cpp \ - generic/laywin.cpp \ - generic/msgdlgg.cpp \ - generic/panelg.cpp \ - generic/printps.cpp \ - generic/prntdlgg.cpp \ - generic/sashwin.cpp \ - generic/scrolwin.cpp \ - generic/splitter.cpp \ - generic/statusbr.cpp \ - generic/tabg.cpp \ - generic/textdlgg.cpp \ - generic/treectrl.cpp - - -LIB_C_SRC=\ - common/extended.c \ - png/png.c \ - png/pngset.c \ - png/pngget.c \ - png/pngrutil.c \ - png/pngtrans.c \ - png/pngwutil.c \ - png/pngread.c \ - png/pngrio.c \ - png/pngwio.c \ - png/pngwrite.c \ - png/pngrtran.c \ - png/pngwtran.c \ - png/pngmem.c \ - png/pngerror.c \ - png/pngpread.c \ -\ - zlib/adler32.c \ - zlib/compress.c \ - zlib/crc32.c \ - zlib/gzio.c \ - zlib/uncompr.c \ - zlib/deflate.c \ - zlib/trees.c \ - zlib/zutil.c \ - zlib/inflate.c \ - zlib/infblock.c \ - zlib/inftrees.c \ - zlib/infcodes.c \ - zlib/infutil.c \ - zlib/inffast.c \ -\ - iodbc/dlf.c \ - iodbc/dlproc.c \ - iodbc/herr.c \ - iodbc/henv.c \ - iodbc/hdbc.c \ - iodbc/hstmt.c \ - iodbc/connect.c \ - iodbc/prepare.c \ - iodbc/result.c \ - iodbc/execute.c \ - iodbc/fetch.c \ - iodbc/info.c \ - iodbc/catalog.c \ - iodbc/misc.c \ - iodbc/itrace.c diff --git a/src/stubs/accel.cpp b/src/stubs/accel.cpp deleted file mode 100644 index b0b8734d55..0000000000 --- a/src/stubs/accel.cpp +++ /dev/null @@ -1,93 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: accel.cpp -// Purpose: wxAcceleratorTable -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "accel.h" -#endif - -#include "wx/setup.h" -#include "wx/accel.h" -#include "wx/string.h" - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxAcceleratorTable, wxObject) -#endif - -class WXDLLEXPORT wxAcceleratorRefData: public wxObjectRefData -{ - friend class WXDLLEXPORT wxAcceleratorTable; -public: - wxAcceleratorRefData(); - ~wxAcceleratorRefData(); - -/* TODO: implementation - inline HACCEL GetHACCEL() const { return m_hAccel; } -protected: - HACCEL m_hAccel; -*/ -}; - -#define M_ACCELDATA ((wxAcceleratorRefData *)m_refData) - -wxAcceleratorRefData::wxAcceleratorRefData() -{ - // TODO -/* - HACCEL m_hAccel; -*/ -} - -wxAcceleratorRefData::~wxAcceleratorRefData() -{ -/* - if (m_hAccel) - { - DestroyAcceleratorTable((HACCEL) m_hAccel); - } - m_hAccel = 0 ; -*/ -} - -wxAcceleratorTable::wxAcceleratorTable() -{ - m_refData = NULL; -} - -wxAcceleratorTable::~wxAcceleratorTable() -{ -} - -// Load from .rc resource -wxAcceleratorTable::wxAcceleratorTable(const wxString& resource) -{ - m_refData = new wxAcceleratorRefData; - -/* TODO: load acelerator from resource, if appropriate for your platform - M_ACCELDATA->m_hAccel = hAccel; - M_ACCELDATA->m_ok = (hAccel != 0); -*/ -} - -// Create from an array -wxAcceleratorTable::wxAcceleratorTable(int n, wxAcceleratorEntry entries[]) -{ - m_refData = new wxAcceleratorRefData; - -/* TODO: create table from entries - */ -} - -bool wxAcceleratorTable::Ok() const -{ - // TODO - return FALSE; -} - diff --git a/src/stubs/app.cpp b/src/stubs/app.cpp deleted file mode 100644 index b04a01bbe2..0000000000 --- a/src/stubs/app.cpp +++ /dev/null @@ -1,391 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: app.cpp -// Purpose: wxApp -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "app.h" -#endif - -#include "wx/frame.h" -#include "wx/app.h" -#include "wx/utils.h" -#include "wx/gdicmn.h" -#include "wx/pen.h" -#include "wx/brush.h" -#include "wx/cursor.h" -#include "wx/icon.h" -#include "wx/palette.h" -#include "wx/dc.h" -#include "wx/dialog.h" -#include "wx/msgdlg.h" -#include "wx/log.h" -#include "wx/module.h" -#include "wx/memory.h" - -#if wxUSE_WX_RESOURCES -#include "wx/resource.h" -#endif - -#include - -extern char *wxBuffer; -extern wxList wxPendingDelete; - -wxApp *wxTheApp = NULL; - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxApp, wxEvtHandler) -BEGIN_EVENT_TABLE(wxApp, wxEvtHandler) - EVT_IDLE(wxApp::OnIdle) -END_EVENT_TABLE() -#endif - -long wxApp::sm_lastMessageTime = 0; - -bool wxApp::Initialize() -{ -#ifdef __WXMSW__ - wxBuffer = new char[1500]; -#else - wxBuffer = new char[BUFSIZ + 512]; -#endif - -/* No longer used -#if (defined(__WXDEBUG__) && wxUSE_MEMORY_TRACING) || wxUSE_DEBUG_CONTEXT - - streambuf* sBuf = new wxDebugStreamBuf; - ostream* oStr = new ostream(sBuf) ; - wxDebugContext::SetStream(oStr, sBuf); -#endif -*/ - - wxClassInfo::InitializeClasses(); - - wxTheColourDatabase = new wxColourDatabase(wxKEY_STRING); - wxTheColourDatabase->Initialize(); - - wxInitializeStockLists(); - wxInitializeStockObjects(); - -#if wxUSE_WX_RESOURCES - wxInitializeResourceSystem(); -#endif - - wxBitmap::InitStandardHandlers(); - - wxModule::RegisterModules(); - wxASSERT( wxModule::InitializeModules() == TRUE ); - - return TRUE; -} - -void wxApp::CleanUp() -{ - wxModule::CleanUpModules(); - -#if wxUSE_WX_RESOURCES - wxCleanUpResourceSystem(); -#endif - - wxDeleteStockObjects() ; - - // Destroy all GDI lists, etc. - - delete wxTheBrushList; - wxTheBrushList = NULL; - - delete wxThePenList; - wxThePenList = NULL; - - delete wxTheFontList; - wxTheFontList = NULL; - - delete wxTheBitmapList; - wxTheBitmapList = NULL; - - delete wxTheColourDatabase; - wxTheColourDatabase = NULL; - - wxBitmap::CleanUpHandlers(); - - delete[] wxBuffer; - wxBuffer = NULL; - - wxClassInfo::CleanUpClasses(); - - delete wxTheApp; - wxTheApp = NULL; - -#if (defined(__WXDEBUG__) && wxUSE_MEMORY_TRACING) || wxUSE_DEBUG_CONTEXT - // At this point we want to check if there are any memory - // blocks that aren't part of the wxDebugContext itself, - // as a special case. Then when dumping we need to ignore - // wxDebugContext, too. - if (wxDebugContext::CountObjectsLeft() > 0) - { - wxTrace("There were memory leaks.\n"); - wxDebugContext::Dump(); - wxDebugContext::PrintStatistics(); - } -// wxDebugContext::SetStream(NULL, NULL); -#endif - - // do it as the very last thing because everything else can log messages - wxLog::DontCreateOnDemand(); - // do it as the very last thing because everything else can log messages - delete wxLog::SetActiveTarget(NULL); -} - -int wxEntry( int argc, char *argv[] ) -{ - if (!wxApp::Initialize()) - return FALSE; - if (!wxTheApp) - { - if (!wxApp::GetInitializerFunction()) - { - printf( "wxWindows error: No initializer - use IMPLEMENT_APP macro.\n" ); - return 0; - }; - - wxTheApp = (wxApp*) (* wxApp::GetInitializerFunction()) (); - }; - - if (!wxTheApp) - { - printf( "wxWindows error: wxTheApp == NULL\n" ); - return 0; - }; - - wxTheApp->argc = argc; - wxTheApp->argv = argv; - - // GUI-specific initialization, such as creating an app context. - wxTheApp->OnInitGui(); - - // Here frames insert themselves automatically - // into wxTopLevelWindows by getting created - // in OnInit(). - - if (!wxTheApp->OnInit()) return 0; - - int retValue = 0; - - if (wxTheApp->Initialized()) retValue = wxTheApp->OnRun(); - - if (wxTheApp->GetTopWindow()) - { - delete wxTheApp->GetTopWindow(); - wxTheApp->SetTopWindow(NULL); - } - - wxTheApp->DeletePendingObjects(); - - wxTheApp->OnExit(); - - wxApp::CleanUp(); - - return retValue; -}; - -// Static member initialization -wxAppInitializerFunction wxApp::m_appInitFn = (wxAppInitializerFunction) NULL; - -wxApp::wxApp() -{ - m_topWindow = NULL; - wxTheApp = this; - m_className = ""; - m_wantDebugOutput = TRUE ; - m_appName = ""; - argc = 0; - argv = NULL; -#ifdef __WXMSW__ - m_printMode = wxPRINT_WINDOWS; -#else - m_printMode = wxPRINT_POSTSCRIPT; -#endif - m_exitOnFrameDelete = TRUE; - m_auto3D = TRUE; -} - -bool wxApp::Initialized() -{ - if (GetTopWindow()) - return TRUE; - else - return FALSE; -} - -int wxApp::MainLoop() -{ - m_keepGoing = TRUE; - -/* TODO: implement your main loop here, calling ProcessIdle in idle time. - while (m_keepGoing) - { - while (!::PeekMessage(&s_currentMsg, 0, 0, 0, PM_NOREMOVE) && - ProcessIdle()) {} - if (!DoMessage()) - m_keepGoing = FALSE; - } -*/ - - return 0; -} - -// Returns TRUE if more time is needed. -bool wxApp::ProcessIdle() -{ - wxIdleEvent event; - event.SetEventObject(this); - ProcessEvent(event); - - return event.MoreRequested(); -} - -void wxApp::ExitMainLoop() -{ - m_keepGoing = FALSE; -} - -// Is a message/event pending? -bool wxApp::Pending() -{ -/* TODO. - */ - return FALSE; -} - -// Dispatch a message. -void wxApp::Dispatch() -{ -/* TODO. - */ -} - -void wxApp::OnIdle(wxIdleEvent& event) -{ - static bool inOnIdle = FALSE; - - // Avoid recursion (via ProcessEvent default case) - if (inOnIdle) - return; - - inOnIdle = TRUE; - - // 'Garbage' collection of windows deleted with Close(). - DeletePendingObjects(); - - // flush the logged messages if any - wxLog *pLog = wxLog::GetActiveTarget(); - if ( pLog != NULL && pLog->HasPendingMessages() ) - pLog->Flush(); - - // Send OnIdle events to all windows - bool needMore = SendIdleEvents(); - - if (needMore) - event.RequestMore(TRUE); - - inOnIdle = FALSE; -} - -// Send idle event to all top-level windows -bool wxApp::SendIdleEvents() -{ - bool needMore = FALSE; - wxNode* node = wxTopLevelWindows.First(); - while (node) - { - wxWindow* win = (wxWindow*) node->Data(); - if (SendIdleEvents(win)) - needMore = TRUE; - - node = node->Next(); - } - return needMore; -} - -// Send idle event to window and all subwindows -bool wxApp::SendIdleEvents(wxWindow* win) -{ - bool needMore = FALSE; - - wxIdleEvent event; - event.SetEventObject(win); - win->ProcessEvent(event); - - if (event.MoreRequested()) - needMore = TRUE; - - wxNode* node = win->GetChildren().First(); - while (node) - { - wxWindow* win = (wxWindow*) node->Data(); - if (SendIdleEvents(win)) - needMore = TRUE; - - node = node->Next(); - } - return needMore ; -} - -void wxApp::DeletePendingObjects() -{ - wxNode *node = wxPendingDelete.First(); - while (node) - { - wxObject *obj = (wxObject *)node->Data(); - - delete obj; - - if (wxPendingDelete.Member(obj)) - delete node; - - // Deleting one object may have deleted other pending - // objects, so start from beginning of list again. - node = wxPendingDelete.First(); - } -} - -wxLog* wxApp::CreateLogTarget() -{ - return new wxLogGui; -} - -wxWindow* wxApp::GetTopWindow() const -{ - if (m_topWindow) - return m_topWindow; - else if (wxTopLevelWindows.Number() > 0) - return (wxWindow*) wxTopLevelWindows.First()->Data(); - else - return NULL; -} - -void wxExit() -{ - wxApp::CleanUp(); -/* - * TODO: Exit in some platform-specific way. Not recommended that the app calls this: - * only for emergencies. - */ -} - -// Yield to other processes -bool wxYield() -{ - /* - * TODO - */ - return TRUE; -} - diff --git a/src/stubs/bitmap.cpp b/src/stubs/bitmap.cpp deleted file mode 100644 index 1e6255f551..0000000000 --- a/src/stubs/bitmap.cpp +++ /dev/null @@ -1,430 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: bitmap.cpp -// Purpose: wxBitmap -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "bitmap.h" -#endif - -#include "wx/setup.h" -#include "wx/utils.h" -#include "wx/palette.h" -#include "wx/bitmap.h" -#include "wx/icon.h" -#include "wx/log.h" - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxBitmap, wxGDIObject) -IMPLEMENT_DYNAMIC_CLASS(wxMask, wxObject) -#endif - -wxBitmapRefData::wxBitmapRefData() -{ - m_ok = FALSE; - m_width = 0; - m_height = 0; - m_depth = 0; - m_quality = 0; - m_numColors = 0; - m_bitmapMask = NULL; -} - -wxBitmapRefData::~wxBitmapRefData() -{ - /* - * TODO: delete the bitmap data here. - */ - - if (m_bitmapMask) - delete m_bitmapMask; - m_bitmapMask = NULL; -} - -wxList wxBitmap::sm_handlers; - -wxBitmap::wxBitmap() -{ - m_refData = NULL; - - if ( wxTheBitmapList ) - wxTheBitmapList->AddBitmap(this); -} - -wxBitmap::~wxBitmap() -{ - if (wxTheBitmapList) - wxTheBitmapList->DeleteObject(this); -} - -wxBitmap::wxBitmap(const char bits[], int the_width, int the_height, int no_bits) -{ - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_width = the_width ; - M_BITMAPDATA->m_height = the_height ; - M_BITMAPDATA->m_depth = no_bits ; - M_BITMAPDATA->m_numColors = 0; - - /* TODO: create the bitmap from data */ - - if ( wxTheBitmapList ) - wxTheBitmapList->AddBitmap(this); -} - -wxBitmap::wxBitmap(int w, int h, int d) -{ - (void)Create(w, h, d); - - if ( wxTheBitmapList ) - wxTheBitmapList->AddBitmap(this); -} - -wxBitmap::wxBitmap(void *data, long type, int width, int height, int depth) -{ - (void) Create(data, type, width, height, depth); - - if ( wxTheBitmapList ) - wxTheBitmapList->AddBitmap(this); -} - -wxBitmap::wxBitmap(const wxString& filename, long type) -{ - LoadFile(filename, (int)type); - - if ( wxTheBitmapList ) - wxTheBitmapList->AddBitmap(this); -} - -/* TODO: maybe allow creation from XPM -// Create from data -wxBitmap::wxBitmap(const char **data) -{ - (void) Create((void *)data, wxBITMAP_TYPE_XPM_DATA, 0, 0, 0); -} -*/ - -bool wxBitmap::Create(int w, int h, int d) -{ - UnRef(); - - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_width = w; - M_BITMAPDATA->m_height = h; - M_BITMAPDATA->m_depth = d; - - /* TODO: create new bitmap */ - - return M_BITMAPDATA->m_ok; -} - -bool wxBitmap::LoadFile(const wxString& filename, long type) -{ - UnRef(); - - m_refData = new wxBitmapRefData; - - wxBitmapHandler *handler = FindHandler(type); - - if ( handler == NULL ) { - wxLogWarning("no bitmap handler for type %d defined.", type); - - return FALSE; - } - - return handler->LoadFile(this, filename, type, -1, -1); -} - -bool wxBitmap::Create(void *data, long type, int width, int height, int depth) -{ - UnRef(); - - m_refData = new wxBitmapRefData; - - wxBitmapHandler *handler = FindHandler(type); - - if ( handler == NULL ) { - wxLogWarning("no bitmap handler for type %d defined.", type); - - return FALSE; - } - - return handler->Create(this, data, type, width, height, depth); -} - -bool wxBitmap::SaveFile(const wxString& filename, int type, const wxPalette *palette) -{ - wxBitmapHandler *handler = FindHandler(type); - - if ( handler == NULL ) { - wxLogWarning("no bitmap handler for type %d defined.", type); - - return FALSE; - } - - return handler->SaveFile(this, filename, type, palette); -} - -void wxBitmap::SetWidth(int w) -{ - if (!M_BITMAPDATA) - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_width = w; -} - -void wxBitmap::SetHeight(int h) -{ - if (!M_BITMAPDATA) - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_height = h; -} - -void wxBitmap::SetDepth(int d) -{ - if (!M_BITMAPDATA) - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_depth = d; -} - -void wxBitmap::SetQuality(int q) -{ - if (!M_BITMAPDATA) - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_quality = q; -} - -void wxBitmap::SetOk(bool isOk) -{ - if (!M_BITMAPDATA) - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_ok = isOk; -} - -void wxBitmap::SetPalette(const wxPalette& palette) -{ - if (!M_BITMAPDATA) - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_bitmapPalette = palette ; -} - -void wxBitmap::SetMask(wxMask *mask) -{ - if (!M_BITMAPDATA) - m_refData = new wxBitmapRefData; - - M_BITMAPDATA->m_bitmapMask = mask ; -} - -void wxBitmap::AddHandler(wxBitmapHandler *handler) -{ - sm_handlers.Append(handler); -} - -void wxBitmap::InsertHandler(wxBitmapHandler *handler) -{ - sm_handlers.Insert(handler); -} - -bool wxBitmap::RemoveHandler(const wxString& name) -{ - wxBitmapHandler *handler = FindHandler(name); - if ( handler ) - { - sm_handlers.DeleteObject(handler); - return TRUE; - } - else - return FALSE; -} - -wxBitmapHandler *wxBitmap::FindHandler(const wxString& name) -{ - wxNode *node = sm_handlers.First(); - while ( node ) - { - wxBitmapHandler *handler = (wxBitmapHandler *)node->Data(); - if ( handler->GetName() == name ) - return handler; - node = node->Next(); - } - return NULL; -} - -wxBitmapHandler *wxBitmap::FindHandler(const wxString& extension, long bitmapType) -{ - wxNode *node = sm_handlers.First(); - while ( node ) - { - wxBitmapHandler *handler = (wxBitmapHandler *)node->Data(); - if ( handler->GetExtension() == extension && - (bitmapType == -1 || handler->GetType() == bitmapType) ) - return handler; - node = node->Next(); - } - return NULL; -} - -wxBitmapHandler *wxBitmap::FindHandler(long bitmapType) -{ - wxNode *node = sm_handlers.First(); - while ( node ) - { - wxBitmapHandler *handler = (wxBitmapHandler *)node->Data(); - if (handler->GetType() == bitmapType) - return handler; - node = node->Next(); - } - return NULL; -} - -/* - * wxMask - */ - -wxMask::wxMask() -{ -/* TODO - m_maskBitmap = 0; -*/ -} - -// Construct a mask from a bitmap and a colour indicating -// the transparent area -wxMask::wxMask(const wxBitmap& bitmap, const wxColour& colour) -{ -/* TODO - m_maskBitmap = 0; -*/ - Create(bitmap, colour); -} - -// Construct a mask from a bitmap and a palette index indicating -// the transparent area -wxMask::wxMask(const wxBitmap& bitmap, int paletteIndex) -{ -/* TODO - m_maskBitmap = 0; -*/ - - Create(bitmap, paletteIndex); -} - -// Construct a mask from a mono bitmap (copies the bitmap). -wxMask::wxMask(const wxBitmap& bitmap) -{ -/* TODO - m_maskBitmap = 0; -*/ - - Create(bitmap); -} - -wxMask::~wxMask() -{ -// TODO: delete mask bitmap -} - -// Create a mask from a mono bitmap (copies the bitmap). -bool wxMask::Create(const wxBitmap& bitmap) -{ -// TODO - return FALSE; -} - -// Create a mask from a bitmap and a palette index indicating -// the transparent area -bool wxMask::Create(const wxBitmap& bitmap, int paletteIndex) -{ -// TODO - return FALSE; -} - -// Create a mask from a bitmap and a colour indicating -// the transparent area -bool wxMask::Create(const wxBitmap& bitmap, const wxColour& colour) -{ -// TODO - return FALSE; -} - -/* - * wxBitmapHandler - */ - -IMPLEMENT_DYNAMIC_CLASS(wxBitmapHandler, wxObject) - -bool wxBitmapHandler::Create(wxBitmap *bitmap, void *data, long type, int width, int height, int depth) -{ - return FALSE; -} - -bool wxBitmapHandler::LoadFile(wxBitmap *bitmap, const wxString& name, long type, - int desiredWidth, int desiredHeight) -{ - return FALSE; -} - -bool wxBitmapHandler::SaveFile(wxBitmap *bitmap, const wxString& name, int type, const wxPalette *palette) -{ - return FALSE; -} - -/* - * Standard handlers - */ - -/* TODO: bitmap handlers, a bit like this: -class WXDLLEXPORT wxBMPResourceHandler: public wxBitmapHandler -{ - DECLARE_DYNAMIC_CLASS(wxBMPResourceHandler) -public: - inline wxBMPResourceHandler() - { - m_name = "Windows bitmap resource"; - m_extension = ""; - m_type = wxBITMAP_TYPE_BMP_RESOURCE; - }; - - virtual bool LoadFile(wxBitmap *bitmap, const wxString& name, long flags, - int desiredWidth, int desiredHeight); -}; -IMPLEMENT_DYNAMIC_CLASS(wxBMPResourceHandler, wxBitmapHandler) -*/ - -void wxBitmap::CleanUpHandlers() -{ - wxNode *node = sm_handlers.First(); - while ( node ) - { - wxBitmapHandler *handler = (wxBitmapHandler *)node->Data(); - wxNode *next = node->Next(); - delete handler; - delete node; - node = next; - } -} - -void wxBitmap::InitStandardHandlers() -{ -/* TODO: initialize all standard bitmap or derive class handlers here. - AddHandler(new wxBMPResourceHandler); - AddHandler(new wxBMPFileHandler); - AddHandler(new wxXPMFileHandler); - AddHandler(new wxXPMDataHandler); - AddHandler(new wxICOResourceHandler); - AddHandler(new wxICOFileHandler); -*/ -} diff --git a/src/stubs/bmpbuttn.cpp b/src/stubs/bmpbuttn.cpp deleted file mode 100644 index 169f0d557a..0000000000 --- a/src/stubs/bmpbuttn.cpp +++ /dev/null @@ -1,65 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: bmpbuttn.cpp -// Purpose: wxBitmapButton -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "bmpbuttn.h" -#endif - -#include "wx/bmpbuttn.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxBitmapButton, wxButton) -#endif - -bool wxBitmapButton::Create(wxWindow *parent, wxWindowID id, const wxBitmap& bitmap, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - m_buttonBitmap = bitmap; - SetName(name); - SetValidator(validator); - parent->AddChild(this); - - m_backgroundColour = parent->GetBackgroundColour() ; - m_foregroundColour = parent->GetForegroundColour() ; - m_windowStyle = style; - m_marginX = 0; - m_marginY = 0; - - int x = pos.x; - int y = pos.y; - int width = size.x; - int height = size.y; - - if (id == -1) - m_windowId = NewControlId(); - else - m_windowId = id; - - if ( width == -1 && bitmap.Ok()) - width = bitmap.GetWidth() + 2*m_marginX; - - if ( height == -1 && bitmap.Ok()) - height = bitmap.GetHeight() + 2*m_marginY; - - /* TODO: create bitmap button - */ - - return FALSE; -} - -void wxBitmapButton::SetBitmapLabel(const wxBitmap& bitmap) -{ - m_buttonBitmap = bitmap; -} - diff --git a/src/stubs/brush.cpp b/src/stubs/brush.cpp deleted file mode 100644 index 4f28e92f53..0000000000 --- a/src/stubs/brush.cpp +++ /dev/null @@ -1,140 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: brush.cpp -// Purpose: wxBrush -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "brush.h" -#endif - -#include "wx/setup.h" -#include "wx/utils.h" -#include "wx/brush.h" - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxBrush, wxGDIObject) -#endif - -wxBrushRefData::wxBrushRefData() -{ - m_style = wxSOLID; -// TODO: null data -} - -wxBrushRefData::wxBrushRefData(const wxBrushRefData& data) -{ - m_style = data.m_style; - m_stipple = data.m_stipple; - m_colour = data.m_colour; -/* TODO: null data - m_hBrush = 0; -*/ -} - -wxBrushRefData::~wxBrushRefData() -{ -// TODO: delete data -} - -// Brushes -wxBrush::wxBrush() -{ - if ( wxTheBrushList ) - wxTheBrushList->AddBrush(this); -} - -wxBrush::~wxBrush() -{ - if ( wxTheBrushList ) - wxTheBrushList->RemoveBrush(this); -} - -wxBrush::wxBrush(const wxColour& col, int Style) -{ - m_refData = new wxBrushRefData; - - M_BRUSHDATA->m_colour = col; - M_BRUSHDATA->m_style = Style; - - RealizeResource(); - - if ( wxTheBrushList ) - wxTheBrushList->AddBrush(this); -} - -wxBrush::wxBrush(const wxBitmap& stipple) -{ - m_refData = new wxBrushRefData; - - M_BRUSHDATA->m_style = wxSTIPPLE; - M_BRUSHDATA->m_stipple = stipple; - - RealizeResource(); - - if ( wxTheBrushList ) - wxTheBrushList->AddBrush(this); -} - -void wxBrush::Unshare() -{ - // Don't change shared data - if (!m_refData) - { - m_refData = new wxBrushRefData(); - } - else - { - wxBrushRefData* ref = new wxBrushRefData(*(wxBrushRefData*)m_refData); - UnRef(); - m_refData = ref; - } -} - -void wxBrush::SetColour(const wxColour& col) -{ - Unshare(); - - M_BRUSHDATA->m_colour = col; - - RealizeResource(); -} - -void wxBrush::SetColour(unsigned char r, unsigned char g, unsigned char b) -{ - Unshare(); - - M_BRUSHDATA->m_colour.Set(r, g, b); - - RealizeResource(); -} - -void wxBrush::SetStyle(int Style) -{ - Unshare(); - - M_BRUSHDATA->m_style = Style; - - RealizeResource(); -} - -void wxBrush::SetStipple(const wxBitmap& Stipple) -{ - Unshare(); - - M_BRUSHDATA->m_stipple = Stipple; - - RealizeResource(); -} - -bool wxBrush::RealizeResource() -{ -// TODO: create the brush - return FALSE; -} - diff --git a/src/stubs/button.cpp b/src/stubs/button.cpp deleted file mode 100644 index befd0d7156..0000000000 --- a/src/stubs/button.cpp +++ /dev/null @@ -1,75 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: button.cpp -// Purpose: wxButton -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "button.h" -#endif - -#include "wx/button.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxButton, wxControl) -#endif - -// Button - -bool wxButton::Create(wxWindow *parent, wxWindowID id, const wxString& label, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); - SetValidator(validator); - m_windowStyle = style; - - parent->AddChild((wxButton *)this); - - if (id == -1) - m_windowId = NewControlId(); - else - m_windowId = id; - - // TODO: create button - - return FALSE; -} - -void wxButton::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -void wxButton::SetDefault() -{ - wxWindow *parent = (wxWindow *)GetParent(); - if (parent) - parent->SetDefaultItem(this); - - // TODO: make button the default -} - -wxString wxButton::GetLabel() const -{ - // TODO - return wxString(""); -} - -void wxButton::SetLabel(const wxString& label) -{ - // TODO -} - -void wxButton::Command (wxCommandEvent & event) -{ - ProcessCommand (event); -} - diff --git a/src/stubs/checkbox.cpp b/src/stubs/checkbox.cpp deleted file mode 100644 index dd2e2abe7a..0000000000 --- a/src/stubs/checkbox.cpp +++ /dev/null @@ -1,117 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: checkbox.cpp -// Purpose: wxCheckBox -// Author: AUTHOR -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "checkbox.h" -#endif - -#include "wx/checkbox.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxCheckBox, wxControl) -IMPLEMENT_DYNAMIC_CLASS(wxBitmapCheckBox, wxCheckBox) -#endif - -// Single check box item -bool wxCheckBox::Create(wxWindow *parent, wxWindowID id, const wxString& label, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); - SetValidator(validator); - m_windowStyle = style; - - if (parent) parent->AddChild(this); - - if ( id == -1 ) - m_windowId = NewControlId(); - else - m_windowId = id; - - // TODO: create checkbox - - return FALSE; -} - -void wxCheckBox::SetLabel(const wxString& label) -{ - // TODO -} - -void wxCheckBox::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -void wxCheckBox::SetValue(bool val) -{ - // TODO -} - -bool wxCheckBox::GetValue() const -{ - // TODO - return FALSE; -} - -void wxCheckBox::Command (wxCommandEvent & event) -{ - SetValue ((event.GetInt() != 0)); - ProcessCommand (event); -} - -// Bitmap checkbox -bool wxBitmapCheckBox::Create(wxWindow *parent, wxWindowID id, const wxBitmap *label, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); - SetValidator(validator); - m_windowStyle = style; - - if (parent) parent->AddChild(this); - - if ( id == -1 ) - m_windowId = NewControlId(); - else - m_windowId = id; - - // TODO: Create the bitmap checkbox - - return FALSE; -} - -void wxBitmapCheckBox::SetLabel(const wxBitmap *bitmap) -{ - // TODO -} - -void wxBitmapCheckBox::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -void wxBitmapCheckBox::SetValue(bool val) -{ - // TODO -} - -bool wxBitmapCheckBox::GetValue() const -{ - // TODOD - return FALSE; -} - - diff --git a/src/stubs/checklst.cpp b/src/stubs/checklst.cpp deleted file mode 100644 index ecabf5408e..0000000000 --- a/src/stubs/checklst.cpp +++ /dev/null @@ -1,74 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: checklst.cpp -// Purpose: implementation of wxCheckListBox class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -// ============================================================================ -// headers & declarations -// ============================================================================ - -#ifdef __GNUG__ -#pragma implementation "checklst.h" -#endif - -#include "wx/checklst.h" - -// ============================================================================ -// implementation -// ============================================================================ - -#if !USE_SHARED_LIBRARY - IMPLEMENT_DYNAMIC_CLASS(wxCheckListBox, wxListBox) -#endif - -// ---------------------------------------------------------------------------- -// implementation of wxCheckListBox class -// ---------------------------------------------------------------------------- - -// define event table -// ------------------ -BEGIN_EVENT_TABLE(wxCheckListBox, wxListBox) -END_EVENT_TABLE() - -// control creation -// ---------------- - -// def ctor: use Create() to really create the control -wxCheckListBox::wxCheckListBox() : wxListBox() -{ -} - -// ctor which creates the associated control -wxCheckListBox::wxCheckListBox(wxWindow *parent, wxWindowID id, - const wxPoint& pos, const wxSize& size, - int nStrings, const wxString choices[], - long style, const wxValidator& val, - const wxString& name) - : wxListBox() -{ - // TODO: you'll probably need a separate Create instead of using - // the wxListBox one as here. - Create(parent, id, pos, size, nStrings, choices, style|wxLB_OWNERDRAW, val, name); -} - -// check items -// ----------- - -bool wxCheckListBox::IsChecked(uint uiIndex) const -{ - // TODO - return FALSE; -} - -void wxCheckListBox::Check(uint uiIndex, bool bCheck) -{ - // TODO -} - - diff --git a/src/stubs/choice.cpp b/src/stubs/choice.cpp deleted file mode 100644 index a584d5303f..0000000000 --- a/src/stubs/choice.cpp +++ /dev/null @@ -1,119 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: choice.cpp -// Purpose: wxChoice -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "choice.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/choice.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxChoice, wxControl) -#endif - -bool wxChoice::Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos, - const wxSize& size, - int n, const wxString choices[], - long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); - SetValidator(validator); - m_noStrings = n; - m_windowStyle = style; - - if (parent) parent->AddChild(this); - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - // TODO: create choice control - return FALSE; -} - -void wxChoice::Append(const wxString& item) -{ - // TODO - m_noStrings ++; -} - -void wxChoice::Delete(int n) -{ - // TODO - m_noStrings --; -} - -void wxChoice::Clear() -{ - // TODO - m_noStrings = 0; -} - -int wxChoice::GetSelection() const -{ - // TODO - return 0; -} - -void wxChoice::SetSelection(int n) -{ - // TODO -} - -int wxChoice::FindString(const wxString& s) const -{ - // TODO - return 0; -} - -wxString wxChoice::GetString(int n) const -{ - // TODO - return wxString(""); -} - -void wxChoice::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -wxString wxChoice::GetStringSelection () const -{ - int sel = GetSelection (); - if (sel > -1) - return wxString(this->GetString (sel)); - else - return wxString(""); -} - -bool wxChoice::SetStringSelection (const wxString& s) -{ - int sel = FindString (s); - if (sel > -1) - { - SetSelection (sel); - return TRUE; - } - else - return FALSE; -} - -void wxChoice::Command(wxCommandEvent & event) -{ - SetSelection (event.GetInt()); - ProcessCommand (event); -} - diff --git a/src/stubs/clipbrd.cpp b/src/stubs/clipbrd.cpp deleted file mode 100644 index 3fe9ebfb72..0000000000 --- a/src/stubs/clipbrd.cpp +++ /dev/null @@ -1,237 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: clipbrd.cpp -// Purpose: Clipboard functionality -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation -#pragma implementation "clipbrd.h" -#endif - -#include "wx/app.h" -#include "wx/frame.h" -#include "wx/bitmap.h" -#include "wx/utils.h" -#include "wx/metafile.h" -#include "wx/clipbrd.h" - -#include - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxClipboard, wxObject) -IMPLEMENT_ABSTRACT_CLASS(wxClipboardClient, wxObject) -#endif - -bool wxOpenClipboard() -{ - // TODO - return FALSE; -} - -bool wxCloseClipboard() -{ - // TODO - return FALSE; -} - -bool wxEmptyClipboard() -{ - // TODO - return FALSE; -} - -bool wxClipboardOpen() -{ - // TODO - return FALSE; -} - -bool wxIsClipboardFormatAvailable(int dataFormat) -{ - // TODO - return FALSE; -} - -bool wxSetClipboardData(int dataFormat, wxObject *obj, int width, int height) -{ - // TODO - return FALSE; -} - -wxObject *wxGetClipboardData(int dataFormat, long *len) -{ - // TODO - return NULL; -} - -int wxEnumClipboardFormats(int dataFormat) -{ - // TODO - return 0; -} - -int wxRegisterClipboardFormat(char *formatName) -{ - // TODO - return 0; -} - -bool wxGetClipboardFormatName(int dataFormat, char *formatName, int maxCount) -{ - // TODO - return FALSE; -} - -/* - * Generalized clipboard implementation by Matthew Flatt - */ - -wxClipboard *wxTheClipboard = NULL; - -void wxInitClipboard() -{ - if (!wxTheClipboard) - wxTheClipboard = new wxClipboard; -} - -wxClipboard::wxClipboard() -{ - clipOwner = NULL; - cbString = NULL; -} - -wxClipboard::~wxClipboard() -{ - if (clipOwner) - clipOwner->BeingReplaced(); - if (cbString) - delete[] cbString; -} - -static int FormatStringToID(char *str) -{ - if (!strcmp(str, "TEXT")) - return wxDF_TEXT; - - return wxRegisterClipboardFormat(str); -} - -void wxClipboard::SetClipboardClient(wxClipboardClient *client, long time) -{ - bool got_selection; - - if (clipOwner) - clipOwner->BeingReplaced(); - clipOwner = client; - if (cbString) { - delete[] cbString; - cbString = NULL; - } - - if (wxOpenClipboard()) { - char **formats, *data; - int i; - int ftype; - long size; - - formats = clipOwner->formats.ListToArray(FALSE); - for (i = clipOwner->formats.Number(); i--; ) { - ftype = FormatStringToID(formats[i]); - data = clipOwner->GetData(formats[i], &size); - if (!wxSetClipboardData(ftype, (wxObject *)data, size, 1)) { - got_selection = FALSE; - break; - } - } - - if (i < 0) - got_selection = wxCloseClipboard(); - } else - got_selection = FALSE; - - got_selection = FALSE; // Assume another process takes over - - if (!got_selection) { - clipOwner->BeingReplaced(); - clipOwner = NULL; - } -} - -wxClipboardClient *wxClipboard::GetClipboardClient() -{ - return clipOwner; -} - -void wxClipboard::SetClipboardString(char *str, long time) -{ - bool got_selection; - - if (clipOwner) { - clipOwner->BeingReplaced(); - clipOwner = NULL; - } - if (cbString) - delete[] cbString; - - cbString = str; - - if (wxOpenClipboard()) { - if (!wxSetClipboardData(wxDF_TEXT, (wxObject *)str)) - got_selection = FALSE; - else - got_selection = wxCloseClipboard(); - } else - got_selection = FALSE; - - got_selection = FALSE; // Assume another process takes over - - if (!got_selection) { - delete[] cbString; - cbString = NULL; - } -} - -char *wxClipboard::GetClipboardString(long time) -{ - char *str; - long length; - - str = GetClipboardData("TEXT", &length, time); - if (!str) { - str = new char[1]; - *str = 0; - } - - return str; -} - -char *wxClipboard::GetClipboardData(char *format, long *length, long time) -{ - if (clipOwner) { - if (clipOwner->formats.Member(format)) - return clipOwner->GetData(format, length); - else - return NULL; - } else if (cbString) { - if (!strcmp(format, "TEXT")) - return copystring(cbString); - else - return NULL; - } else { - if (wxOpenClipboard()) { - receivedString = (char *)wxGetClipboardData(FormatStringToID(format), - length); - wxCloseClipboard(); - } else - receivedString = NULL; - - return receivedString; - } -} - diff --git a/src/stubs/colordlg.cpp b/src/stubs/colordlg.cpp deleted file mode 100644 index 2275a9a39d..0000000000 --- a/src/stubs/colordlg.cpp +++ /dev/null @@ -1,53 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: colordlg.cpp -// Purpose: wxColourDialog class. NOTE: you can use the generic class -// if you wish, instead of implementing this. -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "colordlg.h" -#endif - -#include "wx/stubs/colordlg.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxColourDialog, wxDialog) -#endif - -/* - * wxColourDialog - */ - -wxColourDialog::wxColourDialog() -{ - m_dialogParent = NULL; -} - -wxColourDialog::wxColourDialog(wxWindow *parent, wxColourData *data) -{ - Create(parent, data); -} - -bool wxColourDialog::Create(wxWindow *parent, wxColourData *data) -{ - m_dialogParent = parent; - - if (data) - m_colourData = *data; - return TRUE; -} - -int wxColourDialog::ShowModal() -{ - /* TODO: implement dialog - */ - - return wxID_CANCEL; -} - diff --git a/src/stubs/colour.cpp b/src/stubs/colour.cpp deleted file mode 100644 index 8d0827ef1d..0000000000 --- a/src/stubs/colour.cpp +++ /dev/null @@ -1,103 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: colour.cpp -// Purpose: wxColour class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "colour.h" -#endif - -#include "wx/gdicmn.h" -#include "wx/colour.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxColour, wxObject) -#endif - -// Colour - -wxColour::wxColour () -{ - m_isInit = FALSE; - m_red = m_blue = m_green = 0; -/* TODO - m_pixel = 0; -*/ -} - -wxColour::wxColour (unsigned char r, unsigned char g, unsigned char b) -{ - m_red = r; - m_green = g; - m_blue = b; - m_isInit = TRUE; -/* TODO - m_pixel = PALETTERGB (m_red, m_green, m_blue); -*/ -} - -wxColour::wxColour (const wxColour& col) -{ - m_red = col.m_red; - m_green = col.m_green; - m_blue = col.m_blue; - m_isInit = col.m_isInit; -/* TODO - m_pixel = col.m_pixel; -*/ -} - -wxColour& wxColour::operator =(const wxColour& col) -{ - m_red = col.m_red; - m_green = col.m_green; - m_blue = col.m_blue; - m_isInit = col.m_isInit; -/* TODO - m_pixel = col.m_pixel; -*/ - return *this; -} - -void wxColour::InitFromName(const wxString& col) -{ - wxColour *the_colour = wxTheColourDatabase->FindColour (col); - if (the_colour) - { - m_red = the_colour->Red (); - m_green = the_colour->Green (); - m_blue = the_colour->Blue (); - m_isInit = TRUE; - } - else - { - m_red = 0; - m_green = 0; - m_blue = 0; - m_isInit = FALSE; - } -/* TODO - m_pixel = PALETTERGB (m_red, m_green, m_blue); -*/ -} - -wxColour::~wxColour () -{ -} - -void wxColour::Set (unsigned char r, unsigned char g, unsigned char b) -{ - m_red = r; - m_green = g; - m_blue = b; - m_isInit = TRUE; -/* TODO - m_pixel = PALETTERGB (m_red, m_green, m_blue); -*/ -} diff --git a/src/stubs/combobox.cpp b/src/stubs/combobox.cpp deleted file mode 100644 index 0be841bad4..0000000000 --- a/src/stubs/combobox.cpp +++ /dev/null @@ -1,165 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: combobox.cpp -// Purpose: wxComboBox class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "combobox.h" -#endif - -#include "wx/combobox.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxComboBox, wxControl) -#endif - -bool wxComboBox::Create(wxWindow *parent, wxWindowID id, - const wxString& value, - const wxPoint& pos, - const wxSize& size, - int n, const wxString choices[], - long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); - SetValidator(validator); - m_noStrings = n; - m_windowStyle = style; - - if (parent) parent->AddChild(this); - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - // TODO: create combobox control - - return TRUE; -} - -wxString wxComboBox::GetValue() const -{ - // TODO - return wxString(""); -} - -void wxComboBox::SetValue(const wxString& value) -{ - // TODO -} - -// Clipboard operations -void wxComboBox::Copy() -{ - // TODO -} - -void wxComboBox::Cut() -{ - // TODO -} - -void wxComboBox::Paste() -{ - // TODO -} - -void wxComboBox::SetEditable(bool editable) -{ - // TODO -} - -void wxComboBox::SetInsertionPoint(long pos) -{ - // TODO -} - -void wxComboBox::SetInsertionPointEnd() -{ - // TODO -} - -long wxComboBox::GetInsertionPoint() const -{ - // TODO - return 0; -} - -long wxComboBox::GetLastPosition() const -{ - // TODO - return 0; -} - -void wxComboBox::Replace(long from, long to, const wxString& value) -{ - // TODO -} - -void wxComboBox::Remove(long from, long to) -{ - // TODO -} - -void wxComboBox::SetSelection(long from, long to) -{ - // TODO -} - -void wxComboBox::Append(const wxString& item) -{ - // TODO -} - -void wxComboBox::Delete(int n) -{ - // TODO -} - -void wxComboBox::Clear() -{ - // TODO -} - -int wxComboBox::GetSelection() const -{ - // TODO - return -1; -} - -void wxComboBox::SetSelection(int n) -{ - // TODO -} - -int wxComboBox::FindString(const wxString& s) const -{ - // TODO - return -1; -} - -wxString wxComboBox::GetString(int n) const -{ - // TODO - return wxString(""); -} - -wxString wxComboBox::GetStringSelection() const -{ - // TODO - return wxString(""); -} - -bool wxComboBox::SetStringSelection(const wxString& sel) -{ - // TODO - return FALSE; -} diff --git a/src/stubs/control.cpp b/src/stubs/control.cpp deleted file mode 100644 index b141a80ff1..0000000000 --- a/src/stubs/control.cpp +++ /dev/null @@ -1,95 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: control.cpp -// Purpose: wxControl class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "control.h" -#endif - -#include "wx/control.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_ABSTRACT_CLASS(wxControl, wxWindow) - -BEGIN_EVENT_TABLE(wxControl, wxWindow) -END_EVENT_TABLE() -#endif - -// Item members -wxControl::wxControl() -{ - m_backgroundColour = *wxWHITE; - m_foregroundColour = *wxBLACK; - m_callback = 0; -} - -wxControl::~wxControl() -{ - // If we delete an item, we should initialize the parent panel, - // because it could now be invalid. - wxWindow *parent = (wxWindow *)GetParent(); - if (parent) - { - if (parent->GetDefaultItem() == (wxButton*) this) - parent->SetDefaultItem(NULL); - } -} - -void wxControl::SetLabel(const wxString& label) -{ - // TODO -} - -wxString wxControl::GetLabel() const -{ - // TODO - return wxString(""); -} - -void wxControl::ProcessCommand (wxCommandEvent & event) -{ - // Tries: - // 1) A callback function (to become obsolete) - // 2) OnCommand, starting at this window and working up parent hierarchy - // 3) OnCommand then calls ProcessEvent to search the event tables. - if (m_callback) - { - (void) (*(m_callback)) (*this, event); - } - else - { - GetEventHandler()->OnCommand(*this, event); - } -} - -void wxControl::Centre (int direction) -{ - int x, y, width, height, panel_width, panel_height, new_x, new_y; - - wxWindow *parent = (wxWindow *) GetParent (); - if (!parent) - return; - - parent->GetClientSize (&panel_width, &panel_height); - GetSize (&width, &height); - GetPosition (&x, &y); - - new_x = x; - new_y = y; - - if (direction & wxHORIZONTAL) - new_x = (int) ((panel_width - width) / 2); - - if (direction & wxVERTICAL) - new_y = (int) ((panel_height - height) / 2); - - SetSize (new_x, new_y, width, height); -} - diff --git a/src/stubs/cursor.cpp b/src/stubs/cursor.cpp deleted file mode 100644 index 4333364c93..0000000000 --- a/src/stubs/cursor.cpp +++ /dev/null @@ -1,187 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: cursor.cpp -// Purpose: wxCursor class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "cursor.h" -#endif - -#include "wx/cursor.h" -#include "wx/icon.h" - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxCursor, wxBitmap) -#endif - -wxCursorRefData::wxCursorRefData() -{ - m_width = 32; m_height = 32; - -/* TODO - m_hCursor = 0 ; -*/ -} - -wxCursorRefData::~wxCursorRefData() -{ - // TODO: destroy cursor -} - -// Cursors -wxCursor::wxCursor() -{ -} - -wxCursor::wxCursor(const char WXUNUSED(bits)[], int WXUNUSED(width), int WXUNUSED(height), - int WXUNUSED(hotSpotX), int WXUNUSED(hotSpotY), const char WXUNUSED(maskBits)[]) -{ -} - -wxCursor::wxCursor(const wxString& cursor_file, long flags, int hotSpotX, int hotSpotY) -{ - m_refData = new wxCursorRefData; - - // TODO: create cursor from a file -} - -// Cursors by stock number -wxCursor::wxCursor(int cursor_type) -{ - m_refData = new wxCursorRefData; - -/* TODO - switch (cursor_type) - { - case wxCURSOR_WAIT: - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_WAIT); - break; - case wxCURSOR_IBEAM: - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_IBEAM); - break; - case wxCURSOR_CROSS: - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_CROSS); - break; - case wxCURSOR_SIZENWSE: - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_SIZENWSE); - break; - case wxCURSOR_SIZENESW: - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_SIZENESW); - break; - case wxCURSOR_SIZEWE: - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_SIZEWE); - break; - case wxCURSOR_SIZENS: - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_SIZENS); - break; - case wxCURSOR_CHAR: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_ARROW); - break; - } - case wxCURSOR_HAND: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_HAND"); - break; - } - case wxCURSOR_BULLSEYE: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_BULLSEYE"); - break; - } - case wxCURSOR_PENCIL: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_PENCIL"); - break; - } - case wxCURSOR_MAGNIFIER: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_MAGNIFIER"); - break; - } - case wxCURSOR_NO_ENTRY: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_NO_ENTRY"); - break; - } - case wxCURSOR_LEFT_BUTTON: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_ARROW); - break; - } - case wxCURSOR_RIGHT_BUTTON: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_ARROW); - break; - } - case wxCURSOR_MIDDLE_BUTTON: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_ARROW); - break; - } - case wxCURSOR_SIZING: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_SIZING"); - break; - } - case wxCURSOR_WATCH: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_WATCH"); - break; - } - case wxCURSOR_SPRAYCAN: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_ROLLER"); - break; - } - case wxCURSOR_PAINT_BRUSH: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_PBRUSH"); - break; - } - case wxCURSOR_POINT_LEFT: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_PLEFT"); - break; - } - case wxCURSOR_POINT_RIGHT: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_PRIGHT"); - break; - } - case wxCURSOR_QUESTION_ARROW: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_QARROW"); - break; - } - case wxCURSOR_BLANK: - { - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(wxGetInstance(), "wxCURSOR_BLANK"); - break; - } - default: - case wxCURSOR_ARROW: - M_CURSORDATA->m_hCursor = (WXHCURSOR) LoadCursor(NULL, IDC_ARROW); - break; - } -*/ - -} - -wxCursor::~wxCursor() -{ -} - -// Global cursor setting -void wxSetCursor(const wxCursor& cursor) -{ - // TODO (optional on platforms with no global cursor) -} - - diff --git a/src/stubs/data.cpp b/src/stubs/data.cpp deleted file mode 100644 index 40bcb684e2..0000000000 --- a/src/stubs/data.cpp +++ /dev/null @@ -1,151 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: data.cpp -// Purpose: Various data -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation -#endif - -#include "wx/wx.h" - -#if wxUSE_POSTSCRIPT -#include "wx/dcps.h" -#endif - -#define _MAXPATHLEN 500 - -// Useful buffer, initialized in CommonInit -char *wxBuffer = NULL; - -// Windows List -wxList wxTopLevelWindows; - -// List of windows pending deletion -wxList wxPendingDelete; - -int wxPageNumber; - -// GDI Object Lists -wxBrushList *wxTheBrushList = NULL; -wxPenList *wxThePenList = NULL; -wxFontList *wxTheFontList = NULL; -wxBitmapList *wxTheBitmapList = NULL; - -wxColourDatabase *wxTheColourDatabase = NULL; - -// Stock objects -wxFont *wxNORMAL_FONT; -wxFont *wxSMALL_FONT; -wxFont *wxITALIC_FONT; -wxFont *wxSWISS_FONT; -wxPen *wxRED_PEN; - -wxPen *wxCYAN_PEN; -wxPen *wxGREEN_PEN; -wxPen *wxBLACK_PEN; -wxPen *wxWHITE_PEN; -wxPen *wxTRANSPARENT_PEN; -wxPen *wxBLACK_DASHED_PEN; -wxPen *wxGREY_PEN; -wxPen *wxMEDIUM_GREY_PEN; -wxPen *wxLIGHT_GREY_PEN; - -wxBrush *wxBLUE_BRUSH; -wxBrush *wxGREEN_BRUSH; -wxBrush *wxWHITE_BRUSH; -wxBrush *wxBLACK_BRUSH; -wxBrush *wxTRANSPARENT_BRUSH; -wxBrush *wxCYAN_BRUSH; -wxBrush *wxRED_BRUSH; -wxBrush *wxGREY_BRUSH; -wxBrush *wxMEDIUM_GREY_BRUSH; -wxBrush *wxLIGHT_GREY_BRUSH; - -wxColour *wxBLACK; -wxColour *wxWHITE; -wxColour *wxRED; -wxColour *wxBLUE; -wxColour *wxGREEN; -wxColour *wxCYAN; -wxColour *wxLIGHT_GREY; - -wxCursor *wxSTANDARD_CURSOR = NULL; -wxCursor *wxHOURGLASS_CURSOR = NULL; -wxCursor *wxCROSS_CURSOR = NULL; - -// 'Null' objects -wxAcceleratorTable wxNullAcceleratorTable; -wxBitmap wxNullBitmap; -wxIcon wxNullIcon; -wxCursor wxNullCursor; -wxPen wxNullPen; -wxBrush wxNullBrush; -wxPalette wxNullPalette; -wxFont wxNullFont; -wxColour wxNullColour; - -// Default window names -const char *wxButtonNameStr = "button"; -const char *wxCanvasNameStr = "canvas"; -const char *wxCheckBoxNameStr = "check"; -const char *wxChoiceNameStr = "choice"; -const char *wxComboBoxNameStr = "comboBox"; -const char *wxDialogNameStr = "dialog"; -const char *wxFrameNameStr = "frame"; -const char *wxGaugeNameStr = "gauge"; -const char *wxStaticBoxNameStr = "groupBox"; -const char *wxListBoxNameStr = "listBox"; -const char *wxStaticTextNameStr = "message"; -const char *wxStaticBitmapNameStr = "message"; -const char *wxMultiTextNameStr = "multitext"; -const char *wxPanelNameStr = "panel"; -const char *wxRadioBoxNameStr = "radioBox"; -const char *wxRadioButtonNameStr = "radioButton"; -const char *wxBitmapRadioButtonNameStr = "radioButton"; -const char *wxScrollBarNameStr = "scrollBar"; -const char *wxSliderNameStr = "slider"; -const char *wxStaticNameStr = "static"; -const char *wxTextCtrlWindowNameStr = "textWindow"; -const char *wxTextCtrlNameStr = "text"; -const char *wxVirtListBoxNameStr = "virtListBox"; -const char *wxButtonBarNameStr = "buttonbar"; -const char *wxEnhDialogNameStr = "Shell"; -const char *wxToolBarNameStr = "toolbar"; -const char *wxStatusLineNameStr = "status_line"; -const char *wxEmptyString = ""; -const char *wxGetTextFromUserPromptStr = "Input Text"; -const char *wxMessageBoxCaptionStr = "Message"; -const char *wxFileSelectorPromptStr = "Select a file"; -const char *wxFileSelectorDefaultWildcardStr = "*.*"; -const char *wxInternalErrorStr = "wxWindows Internal Error"; -const char *wxFatalErrorStr = "wxWindows Fatal Error"; - -// See wx/utils.h -const char *wxFloatToStringStr = "%.2f"; -const char *wxDoubleToStringStr = "%.2f"; - -#if wxUSE_POSTSCRIPT -wxPrintPaperDatabase* wxThePrintPaperDatabase = NULL; -#endif - -#if wxUSE_SHARED_LIBRARY -///// Event tables (also must be in one, statically-linked file for shared libraries) - -// This is the base, wxEvtHandler 'bootstrap' code which is expanded manually here -const wxEventTable *wxEvtHandler::GetEventTable() const { return &wxEvtHandler::sm_eventTable; } - -const wxEventTable wxEvtHandler::sm_eventTable = - { NULL, &wxEvtHandler::sm_eventTableEntries[0] }; - -const wxEventTableEntry wxEvtHandler::sm_eventTableEntries[] = { { 0, 0, 0, NULL } }; -#endif - -const wxSize wxDefaultSize(-1, -1); -const wxPoint wxDefaultPosition(-1, -1); diff --git a/src/stubs/dc.cpp b/src/stubs/dc.cpp deleted file mode 100644 index 642dc1edc5..0000000000 --- a/src/stubs/dc.cpp +++ /dev/null @@ -1,385 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dc.cpp -// Purpose: wxDC class -// Author: AUTHOR -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dc.h" -#endif - -#include "wx/dc.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_ABSTRACT_CLASS(wxDC, wxObject) -#endif - -//----------------------------------------------------------------------------- -// constants -//----------------------------------------------------------------------------- - -#define mm2inches 0.0393700787402 -#define inches2mm 25.4 -#define mm2twips 56.6929133859 -#define twips2mm 0.0176388888889 -#define mm2pt 2.83464566929 -#define pt2mm 0.352777777778 - -//----------------------------------------------------------------------------- -// wxDC -//----------------------------------------------------------------------------- - -wxDC::wxDC(void) -{ - m_ok = FALSE; - m_optimize = FALSE; - m_autoSetting = FALSE; - m_colour = TRUE; - m_clipping = FALSE; - - m_mm_to_pix_x = 1.0; - m_mm_to_pix_y = 1.0; - - m_logicalOriginX = 0; - m_logicalOriginY = 0; - m_deviceOriginX = 0; - m_deviceOriginY = 0; - m_internalDeviceOriginX = 0; - m_internalDeviceOriginY = 0; - m_externalDeviceOriginX = 0; - m_externalDeviceOriginY = 0; - - m_logicalScaleX = 1.0; - m_logicalScaleY = 1.0; - m_userScaleX = 1.0; - m_userScaleY = 1.0; - m_scaleX = 1.0; - m_scaleY = 1.0; - - m_mappingMode = MM_TEXT; - m_needComputeScaleX = FALSE; - m_needComputeScaleY = FALSE; - - m_signX = 1; // default x-axis left to right - m_signY = 1; // default y-axis top down - - m_maxX = m_maxY = -100000; - m_minY = m_minY = 100000; - - m_logicalFunction = wxCOPY; -// m_textAlignment = wxALIGN_TOP_LEFT; - m_backgroundMode = wxTRANSPARENT; - - m_textForegroundColour = *wxBLACK; - m_textBackgroundColour = *wxWHITE; - m_pen = *wxBLACK_PEN; - m_font = *wxNORMAL_FONT; - m_brush = *wxTRANSPARENT_BRUSH; - m_backgroundBrush = *wxWHITE_BRUSH; - -// m_palette = wxAPP_COLOURMAP; -}; - -wxDC::~wxDC(void) -{ -}; - -void wxDC::DrawIcon( const wxIcon &WXUNUSED(icon), long WXUNUSED(x), long WXUNUSED(y), bool WXUNUSED(useMask) ) -{ -}; - -void wxDC::DrawPoint( wxPoint& point ) -{ - DrawPoint( point.x, point.y ); -}; - -void wxDC::DrawPolygon( wxList *list, long xoffset, long yoffset, int fillStyle ) -{ - int n = list->Number(); - wxPoint *points = new wxPoint[n]; - - int i = 0; - for( wxNode *node = list->First(); node; node = node->Next() ) - { - wxPoint *point = (wxPoint *)node->Data(); - points[i].x = point->x; - points[i++].y = point->y; - }; - DrawPolygon( n, points, xoffset, yoffset, fillStyle ); - delete[] points; -}; - -void wxDC::DrawLines( wxList *list, long xoffset, long yoffset ) -{ - int n = list->Number(); - wxPoint *points = new wxPoint[n]; - - int i = 0; - for( wxNode *node = list->First(); node; node = node->Next() ) - { - wxPoint *point = (wxPoint *)node->Data(); - points[i].x = point->x; - points[i++].y = point->y; - }; - DrawLines( n, points, xoffset, yoffset ); - delete []points; -}; - -void wxDC::DrawSpline( long x1, long y1, long x2, long y2, long x3, long y3 ) -{ - wxList list; - list.Append( (wxObject*)new wxPoint(x1, y1) ); - list.Append( (wxObject*)new wxPoint(x2, y2) ); - list.Append( (wxObject*)new wxPoint(x3, y3) ); - DrawSpline(&list); - wxNode *node = list.First(); - while (node) - { - wxPoint *p = (wxPoint*)node->Data(); - delete p; - node = node->Next(); - }; -}; - -void wxDC::DrawSpline( int n, wxPoint points[] ) -{ - wxList list; - for (int i = 0; i < n; i++) list.Append( (wxObject*)&points[i] ); - DrawSpline( &list ); -}; - -void wxDC::SetClippingRegion( long x, long y, long width, long height ) -{ - m_clipping = TRUE; - m_clipX1 = x; - m_clipY1 = y; - m_clipX2 = x + width; - m_clipY2 = y + height; -}; - -void wxDC::DestroyClippingRegion(void) -{ - m_clipping = FALSE; -}; - -void wxDC::GetClippingBox( long *x, long *y, long *width, long *height ) const -{ - if (m_clipping) - { - if (x) *x = m_clipX1; - if (y) *y = m_clipY1; - if (width) *width = (m_clipX2 - m_clipX1); - if (height) *height = (m_clipY2 - m_clipY1); - } - else - *x = *y = *width = *height = 0; -}; - -void wxDC::GetSize( int* width, int* height ) const -{ - *width = m_maxX-m_minX; - *height = m_maxY-m_minY; -}; - -void wxDC::GetSizeMM( long* width, long* height ) const -{ - int w = 0; - int h = 0; - GetSize( &w, &h ); - *width = long( double(w) / (m_scaleX*m_mm_to_pix_x) ); - *height = long( double(h) / (m_scaleY*m_mm_to_pix_y) ); -}; - -void wxDC::SetTextForeground( const wxColour &col ) -{ - if (!Ok()) return; - m_textForegroundColour = col; -}; - -void wxDC::SetTextBackground( const wxColour &col ) -{ - if (!Ok()) return; - m_textBackgroundColour = col; -}; - -void wxDC::SetMapMode( int mode ) -{ - switch (mode) - { - case MM_TWIPS: - SetLogicalScale( twips2mm*m_mm_to_pix_x, twips2mm*m_mm_to_pix_y ); - break; - case MM_POINTS: - SetLogicalScale( pt2mm*m_mm_to_pix_x, pt2mm*m_mm_to_pix_y ); - break; - case MM_METRIC: - SetLogicalScale( m_mm_to_pix_x, m_mm_to_pix_y ); - break; - case MM_LOMETRIC: - SetLogicalScale( m_mm_to_pix_x/10.0, m_mm_to_pix_y/10.0 ); - break; - default: - case MM_TEXT: - SetLogicalScale( 1.0, 1.0 ); - break; - }; - if (mode != MM_TEXT) - { - m_needComputeScaleX = TRUE; - m_needComputeScaleY = TRUE; - }; -}; - -void wxDC::SetUserScale( double x, double y ) -{ - // allow negative ? -> no - m_userScaleX = x; - m_userScaleY = y; - ComputeScaleAndOrigin(); -}; - -void wxDC::GetUserScale( double *x, double *y ) -{ - if (x) *x = m_userScaleX; - if (y) *y = m_userScaleY; -}; - -void wxDC::SetLogicalScale( double x, double y ) -{ - // allow negative ? - m_logicalScaleX = x; - m_logicalScaleY = y; - ComputeScaleAndOrigin(); -}; - -void wxDC::GetLogicalScale( double *x, double *y ) -{ - if (x) *x = m_logicalScaleX; - if (y) *y = m_logicalScaleY; -}; - -void wxDC::SetLogicalOrigin( long x, long y ) -{ - m_logicalOriginX = x * m_signX; // is this still correct ? - m_logicalOriginY = y * m_signY; - ComputeScaleAndOrigin(); -}; - -void wxDC::GetLogicalOrigin( long *x, long *y ) -{ - if (x) *x = m_logicalOriginX; - if (y) *y = m_logicalOriginY; -}; - -void wxDC::SetDeviceOrigin( long x, long y ) -{ - m_externalDeviceOriginX = x; - m_externalDeviceOriginY = y; - ComputeScaleAndOrigin(); -}; - -void wxDC::GetDeviceOrigin( long *x, long *y ) -{ -// if (x) *x = m_externalDeviceOriginX; -// if (y) *y = m_externalDeviceOriginY; - if (x) *x = m_deviceOriginX; - if (y) *y = m_deviceOriginY; -}; - -void wxDC::SetInternalDeviceOrigin( long x, long y ) -{ - m_internalDeviceOriginX = x; - m_internalDeviceOriginY = y; - ComputeScaleAndOrigin(); -}; - -void wxDC::GetInternalDeviceOrigin( long *x, long *y ) -{ - if (x) *x = m_internalDeviceOriginX; - if (y) *y = m_internalDeviceOriginY; -}; - -void wxDC::SetAxisOrientation( bool xLeftRight, bool yBottomUp ) -{ - m_signX = (xLeftRight ? 1 : -1); - m_signY = (yBottomUp ? -1 : 1); - ComputeScaleAndOrigin(); -}; - -long wxDC::DeviceToLogicalX(long x) const -{ - return XDEV2LOG(x); -}; - -long wxDC::DeviceToLogicalY(long y) const -{ - return YDEV2LOG(y); -}; - -long wxDC::DeviceToLogicalXRel(long x) const -{ - return XDEV2LOGREL(x); -}; - -long wxDC::DeviceToLogicalYRel(long y) const -{ - return YDEV2LOGREL(y); -}; - -long wxDC::LogicalToDeviceX(long x) const -{ - return XLOG2DEV(x); -}; - -long wxDC::LogicalToDeviceY(long y) const -{ - return YLOG2DEV(y); -}; - -long wxDC::LogicalToDeviceXRel(long x) const -{ - return XLOG2DEVREL(x); -}; - -long wxDC::LogicalToDeviceYRel(long y) const -{ - return YLOG2DEVREL(y); -}; - -void wxDC::CalcBoundingBox( long x, long y ) -{ - if (x < m_minX) m_minX = x; - if (y < m_minY) m_minY = y; - if (x > m_maxX) m_maxX = x; - if (y > m_maxY) m_maxY = y; -}; - -void wxDC::ComputeScaleAndOrigin(void) -{ - // CMB: copy scale to see if it changes - double origScaleX = m_scaleX; - double origScaleY = m_scaleY; - - m_scaleX = m_logicalScaleX * m_userScaleX; - m_scaleY = m_logicalScaleY * m_userScaleY; - - m_deviceOriginX = m_internalDeviceOriginX + m_externalDeviceOriginX; - m_deviceOriginY = m_internalDeviceOriginY + m_externalDeviceOriginY; - - // CMB: if scale has changed call SetPen to recalulate the line width - if (m_scaleX != origScaleX || m_scaleY != origScaleY) - { - // this is a bit artificial, but we need to force wxDC to think - // the pen has changed - wxPen* pen = & GetPen(); - wxPen tempPen; - m_pen = tempPen; - SetPen(* pen); - } -}; - diff --git a/src/stubs/dcclient.cpp b/src/stubs/dcclient.cpp deleted file mode 100644 index 925d9609ee..0000000000 --- a/src/stubs/dcclient.cpp +++ /dev/null @@ -1,635 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcclient.cpp -// Purpose: wxClientDC class -// Author: AUTHOR -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dcclient.h" -#endif - -#include "wx/dcclient.h" -#include "wx/dcmemory.h" -#include "wx/region.h" -#include - -//----------------------------------------------------------------------------- -// constants -//----------------------------------------------------------------------------- - -#define RAD2DEG 57.2957795131 - -//----------------------------------------------------------------------------- -// wxPaintDC -//----------------------------------------------------------------------------- - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxWindowDC, wxDC) -IMPLEMENT_DYNAMIC_CLASS(wxClientDC, wxWindowDC) -IMPLEMENT_DYNAMIC_CLASS(wxPaintDC, wxWindowDC) -#endif - -/* - * wxWindowDC - */ - -wxWindowDC::wxWindowDC(void) -{ -}; - -wxWindowDC::wxWindowDC( wxWindow *window ) -{ -}; - -wxWindowDC::~wxWindowDC(void) -{ -}; - -void wxWindowDC::FloodFill( long WXUNUSED(x1), long WXUNUSED(y1), - const wxColour& WXUNUSED(col), int WXUNUSED(style) ) -{ -}; - -bool wxWindowDC::GetPixel( long WXUNUSED(x1), long WXUNUSED(y1), wxColour *WXUNUSED(col) ) const -{ - return FALSE; -}; - -void wxWindowDC::DrawLine( long x1, long y1, long x2, long y2 ) -{ - if (!Ok()) return; - -}; - -void wxWindowDC::CrossHair( long x, long y ) -{ - if (!Ok()) return; - -}; - -void wxWindowDC::DrawArc( long x1, long y1, long x2, long y2, long xc, long yc ) -{ - if (!Ok()) return; - - long xx1 = XLOG2DEV(x1); - long yy1 = YLOG2DEV(y1); - long xx2 = XLOG2DEV(x2); - long yy2 = YLOG2DEV(y2); - long xxc = XLOG2DEV((long)xc); - long yyc = YLOG2DEV((long)yc); - double dx = xx1 - xxc; - double dy = yy1 - yyc; - double radius = sqrt(dx*dx+dy*dy); - long r = (long)radius; - double radius1, radius2; - - if (xx1 == xx2 && yy1 == yy2) - { - radius1 = 0.0; - radius2 = 360.0; - } - else - if (radius == 0.0) - { - radius1 = radius2 = 0.0; - } - else - { - radius1 = (xx1 - xxc == 0) ? - (yy1 - yyc < 0) ? 90.0 : -90.0 : - -atan2(double(yy1-yyc), double(xx1-xxc)) * RAD2DEG; - radius2 = (xx2 - xxc == 0) ? - (yy2 - yyc < 0) ? 90.0 : -90.0 : - -atan2(double(yy2-yyc), double(xx2-xxc)) * RAD2DEG; - }; - long alpha1 = long(radius1 * 64.0); - long alpha2 = long((radius2 - radius1) * 64.0); - while (alpha2 <= 0) alpha2 += 360*64; - while (alpha1 > 360*64) alpha1 -= 360*64; - - if (m_brush.GetStyle() != wxTRANSPARENT) {}; - - if (m_pen.GetStyle() != wxTRANSPARENT) {}; - -}; - -void wxWindowDC::DrawEllipticArc( long x, long y, long width, long height, double sa, double ea ) -{ - if (!Ok()) return; - - long xx = XLOG2DEV(x); - long yy = YLOG2DEV(y); - long ww = m_signX * XLOG2DEVREL(width); - long hh = m_signY * YLOG2DEVREL(height); - - // CMB: handle -ve width and/or height - if (ww < 0) { ww = -ww; xx = xx - ww; } - if (hh < 0) { hh = -hh; yy = yy - hh; } - - long start = long(sa * 64.0); - long end = long(ea * 64.0); - if (m_brush.GetStyle() != wxTRANSPARENT) {}; - - if (m_pen.GetStyle() != wxTRANSPARENT) {}; -}; - -void wxWindowDC::DrawPoint( long x, long y ) -{ - if (!Ok()) return; - - if (m_pen.GetStyle() != wxTRANSPARENT) {}; -}; - -void wxWindowDC::DrawLines( int n, wxPoint points[], long xoffset, long yoffset ) -{ - if (!Ok()) return; - - if (m_pen.GetStyle() == wxTRANSPARENT) return; - - for (int i = 0; i < n-1; i++) - { - long x1 = XLOG2DEV(points[i].x + xoffset); - long x2 = XLOG2DEV(points[i+1].x + xoffset); - long y1 = YLOG2DEV(points[i].y + yoffset); // oh, what a waste - long y2 = YLOG2DEV(points[i+1].y + yoffset); - }; -}; - -void wxWindowDC::DrawLines( wxList *points, long xoffset, long yoffset ) -{ - if (!Ok()) return; - - if (m_pen.GetStyle() == wxTRANSPARENT) return; - - wxNode *node = points->First(); - while (node->Next()) - { - wxPoint *point = (wxPoint*)node->Data(); - wxPoint *npoint = (wxPoint*)node->Next()->Data(); - long x1 = XLOG2DEV(point->x + xoffset); - long x2 = XLOG2DEV(npoint->x + xoffset); - long y1 = YLOG2DEV(point->y + yoffset); // and again... - long y2 = YLOG2DEV(npoint->y + yoffset); - node = node->Next(); - }; -}; - -void wxWindowDC::DrawPolygon( int WXUNUSED(n), wxPoint WXUNUSED(points)[], - long WXUNUSED(xoffset), long WXUNUSED(yoffset), int WXUNUSED(fillStyle) ) -{ - if (!Ok()) return; -}; - -void wxWindowDC::DrawPolygon( wxList *WXUNUSED(lines), long WXUNUSED(xoffset), - long WXUNUSED(yoffset), int WXUNUSED(fillStyle) ) -{ - if (!Ok()) return; -}; - -void wxWindowDC::DrawRectangle( long x, long y, long width, long height ) -{ - if (!Ok()) return; - - long xx = XLOG2DEV(x); - long yy = YLOG2DEV(y); - long ww = m_signX * XLOG2DEVREL(width); - long hh = m_signY * YLOG2DEVREL(height); - - // CMB: draw nothing if transformed w or h is 0 - if (ww == 0 || hh == 0) return; - - // CMB: handle -ve width and/or height - if (ww < 0) { ww = -ww; xx = xx - ww; } - if (hh < 0) { hh = -hh; yy = yy - hh; } - - if (m_brush.GetStyle() != wxTRANSPARENT) {}; - - if (m_pen.GetStyle() != wxTRANSPARENT) {}; -}; - -void wxWindowDC::DrawRoundedRectangle( long x, long y, long width, long height, double radius ) -{ - if (!Ok()) return; - - if (radius < 0.0) radius = - radius * ((width < height) ? width : height); - - long xx = XLOG2DEV(x); - long yy = YLOG2DEV(y); - long ww = m_signX * XLOG2DEVREL(width); - long hh = m_signY * YLOG2DEVREL(height); - long rr = XLOG2DEVREL((long)radius); - - // CMB: handle -ve width and/or height - if (ww < 0) { ww = -ww; xx = xx - ww; } - if (hh < 0) { hh = -hh; yy = yy - hh; } - - // CMB: if radius is zero use DrawRectangle() instead to avoid - // X drawing errors with small radii - if (rr == 0) - { - DrawRectangle( x, y, width, height ); - return; - } - - // CMB: draw nothing if transformed w or h is 0 - if (ww == 0 || hh == 0) return; - - // CMB: adjust size if outline is drawn otherwise the result is - // 1 pixel too wide and high - if (m_pen.GetStyle() != wxTRANSPARENT) - { - ww--; - hh--; - } - - // CMB: ensure dd is not larger than rectangle otherwise we - // get an hour glass shape - long dd = 2 * rr; - if (dd > ww) dd = ww; - if (dd > hh) dd = hh; - rr = dd / 2; - - if (m_brush.GetStyle() != wxTRANSPARENT) - { - }; - - if (m_pen.GetStyle() != wxTRANSPARENT) - { - }; -}; - -void wxWindowDC::DrawEllipse( long x, long y, long width, long height ) -{ - if (!Ok()) return; - - long xx = XLOG2DEV(x); - long yy = YLOG2DEV(y); - long ww = m_signX * XLOG2DEVREL(width); - long hh = m_signY * YLOG2DEVREL(height); - - // CMB: handle -ve width and/or height - if (ww < 0) { ww = -ww; xx = xx - ww; } - if (hh < 0) { hh = -hh; yy = yy - hh; } - - if (m_brush.GetStyle() != wxTRANSPARENT) {}; - - if (m_pen.GetStyle() != wxTRANSPARENT) {}; -}; - -bool wxWindowDC::CanDrawBitmap(void) const -{ - return TRUE; -}; - -void wxWindowDC::DrawIcon( const wxIcon &icon, long x, long y, bool useMask ) -{ - if (!Ok()) return; - - if (!icon.Ok()) return; - - int xx = XLOG2DEV(x); - int yy = YLOG2DEV(y); - -}; - -bool wxWindowDC::Blit( long xdest, long ydest, long width, long height, - wxDC *source, long xsrc, long ysrc, int WXUNUSED(logical_func), bool WXUNUSED(useMask) ) -{ - if (!Ok()) return FALSE; - - // CMB 20/5/98: add blitting of bitmaps - if (source->IsKindOf(CLASSINFO(wxMemoryDC))) - { - wxMemoryDC* srcDC = (wxMemoryDC*)source; - /* - GdkBitmap* bmap = srcDC->m_selected.GetBitmap(); - if (bmap) - { - gdk_draw_bitmap ( - m_window, - m_textGC, - bmap, - source->DeviceToLogicalX(xsrc), source->DeviceToLogicalY(ysrc), - XLOG2DEV(xdest), YLOG2DEV(ydest), - source->DeviceToLogicalXRel(width), source->DeviceToLogicalYRel(height) - ); - return TRUE; - } - */ - } - - return TRUE; -}; - -void wxWindowDC::DrawText( const wxString &text, long x, long y, bool -WXUNUSED(use16) ) -{ - if (!Ok()) return; - -}; - - - -bool wxWindowDC::CanGetTextExtent(void) const -{ - return TRUE; -}; - -void wxWindowDC::GetTextExtent( const wxString &string, long *width, long *height, - long *WXUNUSED(descent), long *WXUNUSED(externalLeading), - wxFont *WXUNUSED(theFont), bool WXUNUSED(use16) ) -{ - if (!Ok()) return; - -}; - -long wxWindowDC::GetCharWidth(void) -{ - if (!Ok()) return 0; - return 0; -}; - -long wxWindowDC::GetCharHeight(void) -{ - if (!Ok()) return 0; - return 0; -}; - -void wxWindowDC::Clear(void) -{ - if (!Ok()) return; - -}; - -void wxWindowDC::SetFont( const wxFont &font ) -{ - if (!Ok()) return; - - m_font = font; -}; - -void wxWindowDC::SetPen( const wxPen &pen ) -{ - if (!Ok()) return; - - if (m_pen == pen) return; - - m_pen = pen; - - if (!m_pen.Ok()) return; -}; - -void wxWindowDC::SetBrush( const wxBrush &brush ) -{ - if (!Ok()) return; - - if (m_brush == brush) return; - - m_brush = brush; - - if (!m_brush.Ok()) return; - -}; - -void wxWindowDC::SetBackground( const wxBrush &brush ) -{ - if (!Ok()) return; - - if (m_backgroundBrush == brush) return; - - m_backgroundBrush = brush; - - if (!m_backgroundBrush.Ok()) return; - -}; - -void wxWindowDC::SetLogicalFunction( int function ) -{ - if (m_logicalFunction == function) return; -}; - -void wxWindowDC::SetTextForeground( const wxColour &col ) -{ - if (!Ok()) return; - - if (m_textForegroundColour == col) return; - - m_textForegroundColour = col; - if (!m_textForegroundColour.Ok()) return; -}; - -void wxWindowDC::SetTextBackground( const wxColour &col ) -{ - if (!Ok()) return; - - if (m_textBackgroundColour == col) return; - - m_textBackgroundColour = col; - if (!m_textBackgroundColour.Ok()) return; -}; - -void wxWindowDC::SetBackgroundMode( int mode ) -{ - m_backgroundMode = mode; - - if (m_brush.GetStyle() != wxSOLID && m_brush.GetStyle() != wxTRANSPARENT) - { - } -}; - -void wxWindowDC::SetPalette( const wxPalette& WXUNUSED(palette) ) -{ -}; - -void wxWindowDC::SetClippingRegion( long x, long y, long width, long height ) -{ - wxDC::SetClippingRegion( x, y, width, height ); - - // TODO - -}; - -void wxWindowDC::SetClippingRegion( const wxRegion& region ) -{ - wxRect box = region.GetBox(); - - wxDC::SetClippingRegion( box.x, box.y, box.width, box.height ); - - // TODO -} - -void wxWindowDC::DestroyClippingRegion(void) -{ - wxDC::DestroyClippingRegion(); - -}; - -// ----------------------------------- spline code ---------------------------------------- - -void wx_quadratic_spline(double a1, double b1, double a2, double b2, - double a3, double b3, double a4, double b4); -void wx_clear_stack(void); -int wx_spline_pop(double *x1, double *y1, double *x2, double *y2, double *x3, - double *y3, double *x4, double *y4); -void wx_spline_push(double x1, double y1, double x2, double y2, double x3, double y3, - double x4, double y4); -static bool wx_spline_add_point(double x, double y); -static void wx_spline_draw_point_array(wxDC *dc); - -wxList wx_spline_point_list; - -#define half(z1, z2) ((z1+z2)/2.0) -#define THRESHOLD 5 - -/* iterative version */ - -void wx_quadratic_spline(double a1, double b1, double a2, double b2, double a3, double b3, double a4, - double b4) -{ - register double xmid, ymid; - double x1, y1, x2, y2, x3, y3, x4, y4; - - wx_clear_stack(); - wx_spline_push(a1, b1, a2, b2, a3, b3, a4, b4); - - while (wx_spline_pop(&x1, &y1, &x2, &y2, &x3, &y3, &x4, &y4)) { - xmid = (double)half(x2, x3); - ymid = (double)half(y2, y3); - if (fabs(x1 - xmid) < THRESHOLD && fabs(y1 - ymid) < THRESHOLD && - fabs(xmid - x4) < THRESHOLD && fabs(ymid - y4) < THRESHOLD) { - wx_spline_add_point( x1, y1 ); - wx_spline_add_point( xmid, ymid ); - } else { - wx_spline_push(xmid, ymid, (double)half(xmid, x3), (double)half(ymid, y3), - (double)half(x3, x4), (double)half(y3, y4), x4, y4); - wx_spline_push(x1, y1, (double)half(x1, x2), (double)half(y1, y2), - (double)half(x2, xmid), (double)half(y2, ymid), xmid, ymid); - } - } -} - -/* utilities used by spline drawing routines */ - -typedef struct wx_spline_stack_struct { - double x1, y1, x2, y2, x3, y3, x4, y4; -} Stack; - -#define SPLINE_STACK_DEPTH 20 -static Stack wx_spline_stack[SPLINE_STACK_DEPTH]; -static Stack *wx_stack_top; -static int wx_stack_count; - -void wx_clear_stack(void) -{ - wx_stack_top = wx_spline_stack; - wx_stack_count = 0; -} - -void wx_spline_push(double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4) -{ - wx_stack_top->x1 = x1; - wx_stack_top->y1 = y1; - wx_stack_top->x2 = x2; - wx_stack_top->y2 = y2; - wx_stack_top->x3 = x3; - wx_stack_top->y3 = y3; - wx_stack_top->x4 = x4; - wx_stack_top->y4 = y4; - wx_stack_top++; - wx_stack_count++; -} - -int wx_spline_pop(double *x1, double *y1, double *x2, double *y2, - double *x3, double *y3, double *x4, double *y4) -{ - if (wx_stack_count == 0) - return (0); - wx_stack_top--; - wx_stack_count--; - *x1 = wx_stack_top->x1; - *y1 = wx_stack_top->y1; - *x2 = wx_stack_top->x2; - *y2 = wx_stack_top->y2; - *x3 = wx_stack_top->x3; - *y3 = wx_stack_top->y3; - *x4 = wx_stack_top->x4; - *y4 = wx_stack_top->y4; - return (1); -} - -static bool wx_spline_add_point(double x, double y) -{ - wxPoint *point = new wxPoint ; - point->x = (int) x; - point->y = (int) y; - wx_spline_point_list.Append((wxObject*)point); - return TRUE; -} - -static void wx_spline_draw_point_array(wxDC *dc) -{ - dc->DrawLines(&wx_spline_point_list, 0, 0 ); - wxNode *node = wx_spline_point_list.First(); - while (node) - { - wxPoint *point = (wxPoint *)node->Data(); - delete point; - delete node; - node = wx_spline_point_list.First(); - } -} - -void wxWindowDC::DrawSpline( wxList *points ) -{ - wxPoint *p; - double cx1, cy1, cx2, cy2, cx3, cy3, cx4, cy4; - double x1, y1, x2, y2; - - wxNode *node = points->First(); - p = (wxPoint *)node->Data(); - - x1 = p->x; - y1 = p->y; - - node = node->Next(); - p = (wxPoint *)node->Data(); - - x2 = p->x; - y2 = p->y; - cx1 = (double)((x1 + x2) / 2); - cy1 = (double)((y1 + y2) / 2); - cx2 = (double)((cx1 + x2) / 2); - cy2 = (double)((cy1 + y2) / 2); - - wx_spline_add_point(x1, y1); - - while ((node = node->Next()) != NULL) - { - p = (wxPoint *)node->Data(); - x1 = x2; - y1 = y2; - x2 = p->x; - y2 = p->y; - cx4 = (double)(x1 + x2) / 2; - cy4 = (double)(y1 + y2) / 2; - cx3 = (double)(x1 + cx4) / 2; - cy3 = (double)(y1 + cy4) / 2; - - wx_quadratic_spline(cx1, cy1, cx2, cy2, cx3, cy3, cx4, cy4); - - cx1 = cx4; - cy1 = cy4; - cx2 = (double)(cx1 + x2) / 2; - cy2 = (double)(cy1 + y2) / 2; - } - - wx_spline_add_point( cx1, cy1 ); - wx_spline_add_point( x2, y2 ); - - wx_spline_draw_point_array( this ); -}; diff --git a/src/stubs/dcmemory.cpp b/src/stubs/dcmemory.cpp deleted file mode 100644 index 7cbd330821..0000000000 --- a/src/stubs/dcmemory.cpp +++ /dev/null @@ -1,64 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcmemory.cpp -// Purpose: wxMemoryDC class -// Author: AUTHOR -// Modified by: -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dcmemory.h" -#endif - -#include "wx/dcmemory.h" - -//----------------------------------------------------------------------------- -// wxMemoryDC -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxMemoryDC,wxPaintDC) - -wxMemoryDC::wxMemoryDC(void) -{ - m_ok = FALSE; -}; - -wxMemoryDC::wxMemoryDC( wxDC *WXUNUSED(dc) ) -{ - m_ok = FALSE; -}; - -wxMemoryDC::~wxMemoryDC(void) -{ -}; - -void wxMemoryDC::SelectObject( const wxBitmap& bitmap ) -{ - m_selected = bitmap; - if (m_selected.Ok()) - { - } - else - { - m_ok = FALSE; - }; -}; - -void wxMemoryDC::GetSize( int *width, int *height ) const -{ - if (m_selected.Ok()) - { - if (width) (*width) = m_selected.GetWidth(); - if (height) (*height) = m_selected.GetHeight(); - } - else - { - if (width) (*width) = 0; - if (height) (*height) = 0; - }; -}; - - diff --git a/src/stubs/dcscreen.cpp b/src/stubs/dcscreen.cpp deleted file mode 100644 index e03bbac0c8..0000000000 --- a/src/stubs/dcscreen.cpp +++ /dev/null @@ -1,32 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dcscreen.cpp -// Purpose: wxScreenDC class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dcscreen.h" -#endif - -#include "wx/dcscreen.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxScreenDC, wxWindowDC) -#endif - -// Create a DC representing the whole screen -wxScreenDC::wxScreenDC() -{ - // TODO -} - -wxScreenDC::~wxScreenDC() -{ - // TODO -} - diff --git a/src/stubs/dialog.cpp b/src/stubs/dialog.cpp deleted file mode 100644 index 7d6d99744d..0000000000 --- a/src/stubs/dialog.cpp +++ /dev/null @@ -1,287 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dialog.cpp -// Purpose: wxDialog class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dialog.h" -#endif - -#include "wx/dialog.h" -#include "wx/utils.h" -#include "wx/frame.h" -#include "wx/app.h" -#include "wx/settings.h" - -// Lists to keep track of windows, so we can disable/enable them -// for modal dialogs -wxList wxModalDialogs; -wxList wxModelessWindows; // Frames and modeless dialogs -extern wxList wxPendingDelete; - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxDialog, wxPanel) - -BEGIN_EVENT_TABLE(wxDialog, wxPanel) - EVT_BUTTON(wxID_OK, wxDialog::OnOK) - EVT_BUTTON(wxID_APPLY, wxDialog::OnApply) - EVT_BUTTON(wxID_CANCEL, wxDialog::OnCancel) - EVT_CHAR_HOOK(wxDialog::OnCharHook) - EVT_SYS_COLOUR_CHANGED(wxDialog::OnSysColourChanged) - EVT_CLOSE(wxDialog::OnCloseWindow) -END_EVENT_TABLE() - -#endif - -wxDialog::wxDialog() -{ - SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE)); -} - -bool wxDialog::Create(wxWindow *parent, wxWindowID id, - const wxString& title, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - m_windowStyle = style; - - SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE)); - SetName(name); - - if (!parent) - wxTopLevelWindows.Append(this); - - if (parent) parent->AddChild(this); - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - // TODO: create dialog - - return FALSE; -} - -void wxDialog::SetModal(bool flag) -{ - if ( flag ) - m_windowStyle |= wxDIALOG_MODAL ; - else - if ( m_windowStyle & wxDIALOG_MODAL ) - m_windowStyle -= wxDIALOG_MODAL ; - - wxModelessWindows.DeleteObject(this); - if (!flag) - wxModelessWindows.Append(this); -} - -wxDialog::~wxDialog() -{ - // TODO - wxTopLevelWindows.DeleteObject(this); - - if ( (GetWindowStyleFlag() & wxDIALOG_MODAL) != wxDIALOG_MODAL ) - wxModelessWindows.DeleteObject(this); - - // If this is the last top-level window, exit. - if (wxTheApp && (wxTopLevelWindows.Number() == 0)) - { - wxTheApp->SetTopWindow(NULL); - - if (wxTheApp->GetExitOnFrameDelete()) - { - // TODO: exit - } - } -} - -// By default, pressing escape cancels the dialog -void wxDialog::OnCharHook(wxKeyEvent& event) -{ - if (event.m_keyCode == WXK_ESCAPE) - { - // Behaviour changed in 2.0: we'll send a Cancel message - // to the dialog instead of Close. - wxCommandEvent cancelEvent(wxEVT_COMMAND_BUTTON_CLICKED, wxID_CANCEL); - cancelEvent.SetEventObject( this ); - GetEventHandler()->ProcessEvent(cancelEvent); - - return; - } - // We didn't process this event. - event.Skip(); -} - -void wxDialog::Iconize(bool WXUNUSED(iconize)) -{ - // TODO -} - -bool wxDialog::IsIconized() const -{ - // TODO - return FALSE; -} - -void wxDialog::SetClientSize(int width, int height) -{ - // TODO -} - -void wxDialog::GetPosition(int *x, int *y) const -{ - // TODO -} - -bool wxDialog::Show(bool show) -{ - // TODO - return FALSE; -} - -void wxDialog::SetTitle(const wxString& title) -{ - // TODO -} - -wxString wxDialog::GetTitle() const -{ - // TODO - return wxString(""); -} - -void wxDialog::Centre(int direction) -{ - int x_offset,y_offset ; - int display_width, display_height; - int width, height, x, y; - wxWindow *parent = GetParent(); - if ((direction & wxCENTER_FRAME) && parent) - { - parent->GetPosition(&x_offset,&y_offset) ; - parent->GetSize(&display_width,&display_height) ; - } - else - { - wxDisplaySize(&display_width, &display_height); - x_offset = 0 ; - y_offset = 0 ; - } - - GetSize(&width, &height); - GetPosition(&x, &y); - - if (direction & wxHORIZONTAL) - x = (int)((display_width - width)/2); - if (direction & wxVERTICAL) - y = (int)((display_height - height)/2); - - SetSize(x+x_offset, y+y_offset, width, height); -} - -// Replacement for Show(TRUE) for modal dialogs - returns return code -int wxDialog::ShowModal() -{ - m_windowStyle |= wxDIALOG_MODAL; - // TODO: modal showing - Show(TRUE); - return GetReturnCode(); -} - -void wxDialog::EndModal(int retCode) -{ - SetReturnCode(retCode); - // TODO modal un-showing - Show(FALSE); -} - -// Standard buttons -void wxDialog::OnOK(wxCommandEvent& event) -{ - if ( Validate() && TransferDataFromWindow() ) - { - if ( IsModal() ) - EndModal(wxID_OK); - else - { - SetReturnCode(wxID_OK); - this->Show(FALSE); - } - } -} - -void wxDialog::OnApply(wxCommandEvent& event) -{ - if (Validate()) - TransferDataFromWindow(); - // TODO probably need to disable the Apply button until things change again -} - -void wxDialog::OnCancel(wxCommandEvent& event) -{ - if ( IsModal() ) - EndModal(wxID_CANCEL); - else - { - SetReturnCode(wxID_CANCEL); - this->Show(FALSE); - } -} - -bool wxDialog::OnClose() -{ - // Behaviour changed in 2.0: we'll send a Cancel message by default, - // which may close the dialog. - // Check for looping if the Cancel event handler calls Close() - - static wxList closing; - - if ( closing.Member(this) ) - return FALSE; - - closing.Append(this); - - wxCommandEvent cancelEvent(wxEVT_COMMAND_BUTTON_CLICKED, wxID_CANCEL); - cancelEvent.SetEventObject( this ); - GetEventHandler()->ProcessEvent(cancelEvent); - - closing.DeleteObject(this); - - return FALSE; -} - -void wxDialog::OnCloseWindow(wxCloseEvent& event) -{ - // Compatibility - if ( GetEventHandler()->OnClose() || event.GetForce()) - { - this->Destroy(); - } -} - -// Destroy the window (delayed, if a managed window) -bool wxDialog::Destroy() -{ - if (!wxPendingDelete.Member(this)) - wxPendingDelete.Append(this); - return TRUE; -} - -void wxDialog::OnSysColourChanged(wxSysColourChangedEvent& event) -{ - SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE)); - Refresh(); -} - -void wxDialog::Fit() -{ -} diff --git a/src/stubs/dirdlg.cpp b/src/stubs/dirdlg.cpp deleted file mode 100644 index 095621b978..0000000000 --- a/src/stubs/dirdlg.cpp +++ /dev/null @@ -1,42 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dirdlg.cpp -// Purpose: wxDirDialog -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dirdlg.h" -#endif - -#include "wx/defs.h" -#include "wx/utils.h" -#include "wx/dialog.h" -#include "wx/dirdlg.h" - -#include "wx/cmndata.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_CLASS(wxDirDialog, wxDialog) -#endif - -wxDirDialog::wxDirDialog(wxWindow *parent, const wxString& message, - const wxString& defaultPath, - long style, const wxPoint& pos) -{ - m_message = message; - m_dialogStyle = style; - m_parent = parent; - m_path = defaultPath; -} - -int wxDirDialog::ShowModal() -{ - // TODO - return wxID_CANCEL; -} - diff --git a/src/stubs/dnd.cpp b/src/stubs/dnd.cpp deleted file mode 100644 index 32088eef0f..0000000000 --- a/src/stubs/dnd.cpp +++ /dev/null @@ -1,133 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: dnd.cpp -// Purpose: wxDropTarget, wxDropSource, wxDataObject implementation -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 AUTHOR -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dnd.h" -#endif - -#include "wx/dnd.h" -#include "wx/window.h" -#include "wx/app.h" -#include "wx/gdicmn.h" - -// ---------------------------------------------------------------------------- -// global -// ---------------------------------------------------------------------------- - -// ---------------------------------------------------------------------------- -// wxDropTarget -// ---------------------------------------------------------------------------- - -wxDropTarget::wxDropTarget() -{ -}; - -wxDropTarget::~wxDropTarget() -{ -}; - -// ---------------------------------------------------------------------------- -// wxTextDropTarget -// ---------------------------------------------------------------------------- - -bool wxTextDropTarget::OnDrop( long x, long y, const void *pData ) -{ - OnDropText( x, y, (const char*)pData ); - return TRUE; -}; - -bool wxTextDropTarget::OnDropText( long x, long y, const char *psz ) -{ - printf( "Got dropped text: %s.\n", psz ); - printf( "At x: %d, y: %d.\n", (int)x, (int)y ); - return TRUE; -}; - -size_t wxTextDropTarget::GetFormatCount() const -{ - return 1; -} - -wxDataFormat wxTextDropTarget::GetFormat(size_t WXUNUSED(n)) const -{ - return wxDF_TEXT; -} - -// ---------------------------------------------------------------------------- -// wxFileDropTarget -// ---------------------------------------------------------------------------- - -bool wxFileDropTarget::OnDropFiles( long x, long y, size_t nFiles, const char * const WXUNUSED(aszFiles)[] ) -{ - printf( "Got %d dropped files.\n", (int)nFiles ); - printf( "At x: %d, y: %d.\n", (int)x, (int)y ); - return TRUE; -} - -bool wxFileDropTarget::OnDrop(long x, long y, const void *WXUNUSED(pData) ) -{ - char *str = "/this/is/a/path.txt"; - - return OnDropFiles(x, y, 1, &str ); -} - -size_t wxFileDropTarget::GetFormatCount() const -{ - return 1; -} - -wxDataFormat wxFileDropTarget::GetFormat(size_t WXUNUSED(n)) const -{ - return wxDF_FILENAME; -} - -//------------------------------------------------------------------------- -// wxDropSource -//------------------------------------------------------------------------- - -//----------------------------------------------------------------------------- -// drag request - -wxDropSource::wxDropSource( wxWindow *win ) -{ - // TODO - // m_window = win; - m_data = NULL; - - // m_defaultCursor = wxCursor( wxCURSOR_NO_ENTRY ); - // m_goaheadCursor = wxCursor( wxCURSOR_HAND ); -}; - -wxDropSource::wxDropSource( wxDataObject &data, wxWindow *win ) -{ - // TODO - // m_window = win; - m_data = &data; - - // m_defaultCursor = wxCursor( wxCURSOR_NO_ENTRY ); - // m_goaheadCursor = wxCursor( wxCURSOR_HAND ); -}; - -void wxDropSource::SetData( wxDataObject &data ) -{ - m_data = &data; -}; - -wxDropSource::~wxDropSource(void) -{ -}; - -wxDragResult wxDropSource::DoDragDrop( bool WXUNUSED(bAllowMove) ) -{ - // TODO - return wxDragError; -}; - diff --git a/src/stubs/filedlg.cpp b/src/stubs/filedlg.cpp deleted file mode 100644 index 36182617e0..0000000000 --- a/src/stubs/filedlg.cpp +++ /dev/null @@ -1,138 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: filedlg.cpp -// Purpose: wxFileDialog -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "filedlg.h" -#endif - -#include "wx/defs.h" -#include "wx/utils.h" -#include "wx/dialog.h" -#include "wx/filedlg.h" -#include "wx/intl.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_CLASS(wxFileDialog, wxDialog) -#endif - -wxString wxFileSelector(const char *title, - const char *defaultDir, const char *defaultFileName, - const char *defaultExtension, const char *filter, int flags, - wxWindow *parent, int x, int y) -{ - // If there's a default extension specified but no filter, we create a suitable - // filter. - - wxString filter2(""); - if ( defaultExtension && !filter ) - filter2 = wxString("*.") + wxString(defaultExtension) ; - else if ( filter ) - filter2 = filter; - - wxString defaultDirString; - if (defaultDir) - defaultDirString = defaultDir; - else - defaultDirString = ""; - - wxString defaultFilenameString; - if (defaultFileName) - defaultFilenameString = defaultFileName; - else - defaultFilenameString = ""; - - wxFileDialog fileDialog(parent, title, defaultDirString, defaultFilenameString, filter2, flags, wxPoint(x, y)); - - if ( fileDialog.ShowModal() == wxID_OK ) - { - return fileDialog.GetPath(); - } - else - return wxEmptyString; -} - -char *wxFileSelectorEx(const char *title, - const char *defaultDir, - const char *defaultFileName, - int* defaultFilterIndex, - const char *filter, - int flags, - wxWindow* parent, - int x, - int y) - -{ - wxFileDialog fileDialog(parent, title ? title : "", defaultDir ? defaultDir : "", - defaultFileName ? defaultFileName : "", filter ? filter : "", flags, wxPoint(x, y)); - - if ( fileDialog.ShowModal() == wxID_OK ) - { - *defaultFilterIndex = fileDialog.GetFilterIndex(); - return fileDialog.GetPath(); - } - else - return wxEmptyString; -} - -wxFileDialog::wxFileDialog(wxWindow *parent, const wxString& message, - const wxString& defaultDir, const wxString& defaultFileName, const wxString& wildCard, - long style, const wxPoint& pos) -{ - m_message = message; - m_dialogStyle = style; - m_parent = parent; - m_path = ""; - m_fileName = defaultFileName; - m_dir = defaultDir; - m_wildCard = wildCard; - m_filterIndex = 1; -} - -int wxFileDialog::ShowModal() -{ - // TODO - return wxID_CANCEL; -} - -// Generic file load/save dialog -static wxString wxDefaultFileSelector(bool load, const char *what, const char *extension, const char *default_name, wxWindow *parent) -{ - char *ext = (char *)extension; - - char prompt[50]; - wxString str; - if (load) - str = "Load %s file"; - else - str = "Save %s file"; - sprintf(prompt, wxGetTranslation(str), what); - - if (*ext == '.') ext++; - char wild[60]; - sprintf(wild, "*.%s", ext); - - return wxFileSelector (prompt, NULL, default_name, ext, wild, 0, parent); -} - -// Generic file load dialog -wxString wxLoadFileSelector(const char *what, const char *extension, const char *default_name, wxWindow *parent) -{ - return wxDefaultFileSelector(TRUE, what, extension, default_name, parent); -} - - -// Generic file save dialog -wxString wxSaveFileSelector(const char *what, const char *extension, const char *default_name, wxWindow *parent) -{ - return wxDefaultFileSelector(FALSE, what, extension, default_name, parent); -} - - diff --git a/src/stubs/font.cpp b/src/stubs/font.cpp deleted file mode 100644 index 493a6a25ba..0000000000 --- a/src/stubs/font.cpp +++ /dev/null @@ -1,244 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: font.cpp -// Purpose: wxFont class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "font.h" -#endif - -#include "wx/defs.h" -#include "wx/string.h" -#include "wx/font.h" -#include "wx/gdicmn.h" - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxFont, wxGDIObject) -#endif - -wxFontRefData::wxFontRefData() -{ - m_style = 0; - m_pointSize = 0; - m_family = 0; - m_style = 0; - m_weight = 0; - m_underlined = 0; - m_faceName = ""; -/* TODO - m_hFont = 0; -*/ -} - -wxFontRefData::wxFontRefData(const wxFontRefData& data) -{ - m_style = data.m_style; - m_pointSize = data.m_pointSize; - m_family = data.m_family; - m_style = data.m_style; - m_weight = data.m_weight; - m_underlined = data.m_underlined; - m_faceName = data.m_faceName; -/* TODO - m_hFont = 0; -*/ -} - -wxFontRefData::~wxFontRefData() -{ - // TODO: delete font data -} - -wxFont::wxFont() -{ - if ( wxTheFontList ) - wxTheFontList->Append(this); -} - -wxFont::wxFont(int pointSize, int family, int style, int weight, bool underlined, const wxString& faceName) -{ - Create(pointSize, family, style, weight, underlined, faceName); - - if ( wxTheFontList ) - wxTheFontList->Append(this); -} - -bool wxFont::Create(int pointSize, int family, int style, int weight, bool underlined, const wxString& faceName) -{ - UnRef(); - m_refData = new wxFontRefData; - - M_FONTDATA->m_family = family; - M_FONTDATA->m_style = style; - M_FONTDATA->m_weight = weight; - M_FONTDATA->m_pointSize = pointSize; - M_FONTDATA->m_underlined = underlined; - M_FONTDATA->m_faceName = faceName; - - RealizeResource(); - - return TRUE; -} - -wxFont::~wxFont() -{ - if (wxTheFontList) - wxTheFontList->DeleteObject(this); -} - -bool wxFont::RealizeResource() -{ - // TODO: create the font (if there is a native font object) - return FALSE; -} - -void wxFont::Unshare() -{ - // Don't change shared data - if (!m_refData) - { - m_refData = new wxFontRefData(); - } - else - { - wxFontRefData* ref = new wxFontRefData(*(wxFontRefData*)m_refData); - UnRef(); - m_refData = ref; - } -} - -void wxFont::SetPointSize(int pointSize) -{ - Unshare(); - - M_FONTDATA->m_pointSize = pointSize; - - RealizeResource(); -} - -void wxFont::SetFamily(int family) -{ - Unshare(); - - M_FONTDATA->m_family = family; - - RealizeResource(); -} - -void wxFont::SetStyle(int style) -{ - Unshare(); - - M_FONTDATA->m_style = style; - - RealizeResource(); -} - -void wxFont::SetWeight(int weight) -{ - Unshare(); - - M_FONTDATA->m_weight = weight; - - RealizeResource(); -} - -void wxFont::SetFaceName(const wxString& faceName) -{ - Unshare(); - - M_FONTDATA->m_faceName = faceName; - - RealizeResource(); -} - -void wxFont::SetUnderlined(bool underlined) -{ - Unshare(); - - M_FONTDATA->m_underlined = underlined; - - RealizeResource(); -} - -wxString wxFont::GetFamilyString() const -{ - wxString fam(""); - switch (GetFamily()) - { - case wxDECORATIVE: - fam = "wxDECORATIVE"; - break; - case wxROMAN: - fam = "wxROMAN"; - break; - case wxSCRIPT: - fam = "wxSCRIPT"; - break; - case wxSWISS: - fam = "wxSWISS"; - break; - case wxMODERN: - fam = "wxMODERN"; - break; - case wxTELETYPE: - fam = "wxTELETYPE"; - break; - default: - fam = "wxDEFAULT"; - break; - } - return fam; -} - -/* New font system */ -wxString wxFont::GetFaceName() const -{ - wxString str(""); - if (M_FONTDATA) - str = M_FONTDATA->m_faceName ; - return str; -} - -wxString wxFont::GetStyleString() const -{ - wxString styl(""); - switch (GetStyle()) - { - case wxITALIC: - styl = "wxITALIC"; - break; - case wxSLANT: - styl = "wxSLANT"; - break; - default: - styl = "wxNORMAL"; - break; - } - return styl; -} - -wxString wxFont::GetWeightString() const -{ - wxString w(""); - switch (GetWeight()) - { - case wxBOLD: - w = "wxBOLD"; - break; - case wxLIGHT: - w = "wxLIGHT"; - break; - default: - w = "wxNORMAL"; - break; - } - return w; -} - diff --git a/src/stubs/fontdlg.cpp b/src/stubs/fontdlg.cpp deleted file mode 100644 index 60e8e9b987..0000000000 --- a/src/stubs/fontdlg.cpp +++ /dev/null @@ -1,55 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: fontdlg.cpp -// Purpose: wxFontDialog class. NOTE: you can use the generic class -// if you wish, instead of implementing this. -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "fontdlg.h" -#endif - -#include "wx/stubs/fontdlg.h" -#include "wx/cmndata.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxFontDialog, wxDialog) -#endif - -/* - * wxFontDialog - */ - -wxFontDialog::wxFontDialog() -{ - m_dialogParent = NULL; -} - -wxFontDialog::wxFontDialog(wxWindow *parent, wxFontData *data) -{ - Create(parent, data); -} - -bool wxFontDialog::Create(wxWindow *parent, wxFontData *data) -{ - m_dialogParent = parent; - - if (data) - m_fontData = *data; - - // TODO: you may need to do dialog creation here, unless it's - // done in ShowModal. - return TRUE; -} - -int wxFontDialog::ShowModal() -{ - // TODO: show (maybe create) the dialog - return wxID_CANCEL; -} - diff --git a/src/stubs/frame.cpp b/src/stubs/frame.cpp deleted file mode 100644 index 1e8c9e9ae5..0000000000 --- a/src/stubs/frame.cpp +++ /dev/null @@ -1,571 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: frame.cpp -// Purpose: wxFrame -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "frame.h" -#endif - -#include "wx/frame.h" -#include "wx/statusbr.h" -#include "wx/toolbar.h" -#include "wx/menuitem.h" -#include "wx/menu.h" -#include "wx/dcclient.h" -#include "wx/dialog.h" -#include "wx/settings.h" -#include "wx/app.h" - -extern wxList wxModelessWindows; -extern wxList wxPendingDelete; - -#if !USE_SHARED_LIBRARY -BEGIN_EVENT_TABLE(wxFrame, wxWindow) - EVT_SIZE(wxFrame::OnSize) - EVT_ACTIVATE(wxFrame::OnActivate) - EVT_MENU_HIGHLIGHT_ALL(wxFrame::OnMenuHighlight) - EVT_SYS_COLOUR_CHANGED(wxFrame::OnSysColourChanged) - EVT_IDLE(wxFrame::OnIdle) - EVT_CLOSE(wxFrame::OnCloseWindow) -END_EVENT_TABLE() - -IMPLEMENT_DYNAMIC_CLASS(wxFrame, wxWindow) -#endif - -#if wxUSE_NATIVE_STATUSBAR -bool wxFrame::m_useNativeStatusBar = TRUE; -#else -bool wxFrame::m_useNativeStatusBar = FALSE; -#endif - -wxFrame::wxFrame() -{ - m_frameToolBar = NULL ; - m_frameMenuBar = NULL; - m_frameStatusBar = NULL; - - m_windowParent = NULL; - m_iconized = FALSE; -} - -bool wxFrame::Create(wxWindow *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - if (!parent) - wxTopLevelWindows.Append(this); - - SetName(name); - m_windowStyle = style; - m_frameMenuBar = NULL; - m_frameToolBar = NULL ; - m_frameStatusBar = NULL; - - SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE)); - - if ( id > -1 ) - m_windowId = id; - else - m_windowId = (int)NewControlId(); - - if (parent) parent->AddChild(this); - - wxModelessWindows.Append(this); - - // TODO: create frame. - - return FALSE; -} - -wxFrame::~wxFrame() -{ - wxTopLevelWindows.DeleteObject(this); - - if (m_frameStatusBar) - delete m_frameStatusBar; - if (m_frameMenuBar) - delete m_frameMenuBar; - -/* Check if it's the last top-level window */ - - if (wxTheApp && (wxTopLevelWindows.Number() == 0)) - { - wxTheApp->SetTopWindow(NULL); - - if (wxTheApp->GetExitOnFrameDelete()) - { - // TODO signal to the app that we're going to close - } - } - - wxModelessWindows.DeleteObject(this); -} - -// Get size *available for subwindows* i.e. excluding menu bar, toolbar etc. -void wxFrame::GetClientSize(int *x, int *y) const -{ - // TODO -} - -// Set the client size (i.e. leave the calculation of borders etc. -// to wxWindows) -void wxFrame::SetClientSize(int width, int height) -{ - // TODO -} - -void wxFrame::GetSize(int *width, int *height) const -{ - // TODO -} - -void wxFrame::GetPosition(int *x, int *y) const -{ - // TODO -} - -void wxFrame::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -bool wxFrame::Show(bool show) -{ - // TODO - return FALSE; -} - -void wxFrame::Iconize(bool iconize) -{ - // TODO -} - -// Equivalent to maximize/restore in Windows -void wxFrame::Maximize(bool maximize) -{ - // TODO -} - -bool wxFrame::IsIconized() const -{ - // TODO - return FALSE; -} - -// Is the frame maximized? -bool wxFrame::IsMaximized(void) const -{ - // TODO - return FALSE; -} - -void wxFrame::SetTitle(const wxString& title) -{ - // TODO -} - -wxString wxFrame::GetTitle() const -{ - // TODO - return wxString(""); -} - -void wxFrame::SetIcon(const wxIcon& icon) -{ - m_icon = icon; - // TODO -} - -wxStatusBar *wxFrame::OnCreateStatusBar(int number, long style, wxWindowID id, - const wxString& name) -{ - wxStatusBar *statusBar = NULL; - - statusBar = new wxStatusBar(this, id, wxPoint(0, 0), wxSize(100, 20), - style, name); - - // Set the height according to the font and the border size - wxClientDC dc(statusBar); - dc.SetFont(statusBar->GetFont()); - - long x, y; - dc.GetTextExtent("X", &x, &y); - - int height = (int)( (y * 1.1) + 2* statusBar->GetBorderY()); - - statusBar->SetSize(-1, -1, 100, height); - - statusBar->SetFieldsCount(number); - return statusBar; -} - -wxStatusBar* wxFrame::CreateStatusBar(int number, long style, wxWindowID id, - const wxString& name) -{ - // Calling CreateStatusBar twice is an error. - wxCHECK_MSG( m_frameStatusBar == NULL, FALSE, - "recreating status bar in wxFrame" ); - - m_frameStatusBar = OnCreateStatusBar(number, style, id, - name); - if ( m_frameStatusBar ) - { - PositionStatusBar(); - return m_frameStatusBar; - } - else - return NULL; -} - -void wxFrame::SetStatusText(const wxString& text, int number) -{ - wxCHECK_RET( m_frameStatusBar != NULL, "no statusbar to set text for" ); - - m_frameStatusBar->SetStatusText(text, number); -} - -void wxFrame::SetStatusWidths(int n, const int widths_field[]) -{ - wxCHECK_RET( m_frameStatusBar != NULL, "no statusbar to set widths for" ); - - m_frameStatusBar->SetStatusWidths(n, widths_field); - PositionStatusBar(); -} - -void wxFrame::PositionStatusBar() -{ - int w, h; - GetClientSize(&w, &h); - int sw, sh; - m_frameStatusBar->GetSize(&sw, &sh); - - // Since we wish the status bar to be directly under the client area, - // we use the adjusted sizes without using wxSIZE_NO_ADJUSTMENTS. - m_frameStatusBar->SetSize(0, h, w, sh); -} - -void wxFrame::SetMenuBar(wxMenuBar *menuBar) -{ - if (!menuBar) - { - m_frameMenuBar = NULL; - return; - } - - m_frameMenuBar = menuBar; - - // TODO -} - -void wxFrame::Fit() -{ - // Work out max. size - wxNode *node = GetChildren().First(); - int max_width = 0; - int max_height = 0; - while (node) - { - // Find a child that's a subwindow, but not a dialog box. - wxWindow *win = (wxWindow *)node->Data(); - - if (!win->IsKindOf(CLASSINFO(wxFrame)) && - !win->IsKindOf(CLASSINFO(wxDialog))) - { - int width, height; - int x, y; - win->GetSize(&width, &height); - win->GetPosition(&x, &y); - - if ((x + width) > max_width) - max_width = x + width; - if ((y + height) > max_height) - max_height = y + height; - } - node = node->Next(); - } - SetClientSize(max_width, max_height); -} - -// Responds to colour changes, and passes event on to children. -void wxFrame::OnSysColourChanged(wxSysColourChangedEvent& event) -{ - SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE)); - Refresh(); - - if ( m_frameStatusBar ) - { - wxSysColourChangedEvent event2; - event2.SetEventObject( m_frameStatusBar ); - m_frameStatusBar->ProcessEvent(event2); - } - - // Propagate the event to the non-top-level children - wxWindow::OnSysColourChanged(event); -} - -// Default resizing behaviour - if only ONE subwindow, -// resize to client rectangle size -void wxFrame::OnSize(wxSizeEvent& event) -{ - // if we're using constraints - do use them - #if wxUSE_CONSTRAINTS - if ( GetAutoLayout() ) { - Layout(); - return; - } - #endif - - // do we have _exactly_ one child? - wxWindow *child = NULL; - for ( wxNode *node = GetChildren().First(); node; node = node->Next() ) - { - wxWindow *win = (wxWindow *)node->Data(); - if ( !win->IsKindOf(CLASSINFO(wxFrame)) && - !win->IsKindOf(CLASSINFO(wxDialog)) && - (win != GetStatusBar()) && - (win != GetToolBar()) ) - { - if ( child ) - return; // it's our second subwindow - nothing to do - child = win; - } - } - - if ( child ) { - // we have exactly one child - set it's size to fill the whole frame - int clientW, clientH; - GetClientSize(&clientW, &clientH); - - int x = 0; - int y = 0; - - child->SetSize(x, y, clientW, clientH); - } -} - -// Default activation behaviour - set the focus for the first child -// subwindow found. -void wxFrame::OnActivate(wxActivateEvent& event) -{ - for(wxNode *node = GetChildren().First(); node; node = node->Next()) - { - // Find a child that's a subwindow, but not a dialog box. - wxWindow *child = (wxWindow *)node->Data(); - if (!child->IsKindOf(CLASSINFO(wxFrame)) && - !child->IsKindOf(CLASSINFO(wxDialog))) - { - child->SetFocus(); - return; - } - } -} - -// The default implementation for the close window event - calls -// OnClose for backward compatibility. - -void wxFrame::OnCloseWindow(wxCloseEvent& event) -{ - // Compatibility - if ( GetEventHandler()->OnClose() || event.GetForce()) - { - this->Destroy(); - } -} - -bool wxFrame::OnClose() -{ - return TRUE; -} - -// Destroy the window (delayed, if a managed window) -bool wxFrame::Destroy() -{ - if (!wxPendingDelete.Member(this)) - wxPendingDelete.Append(this); - return TRUE; -} - -// Default menu selection behaviour - display a help string -void wxFrame::OnMenuHighlight(wxMenuEvent& event) -{ - if (GetStatusBar()) - { - if (event.GetMenuId() == -1) - SetStatusText(""); - else - { - wxMenuBar *menuBar = GetMenuBar(); - if (menuBar) - { - wxString helpString(menuBar->GetHelpString(event.GetMenuId())); - if (helpString != "") - SetStatusText(helpString); - } - } - } -} - -wxMenuBar *wxFrame::GetMenuBar() const -{ - return m_frameMenuBar; -} - -void wxFrame::Centre(int direction) -{ - int display_width, display_height, width, height, x, y; - wxDisplaySize(&display_width, &display_height); - - GetSize(&width, &height); - GetPosition(&x, &y); - - if (direction & wxHORIZONTAL) - x = (int)((display_width - width)/2); - if (direction & wxVERTICAL) - y = (int)((display_height - height)/2); - - SetSize(x, y, width, height); -} - -// Call this to simulate a menu command -void wxFrame::Command(int id) -{ - ProcessCommand(id); -} - -void wxFrame::ProcessCommand(int id) -{ - wxCommandEvent commandEvent(wxEVENT_TYPE_MENU_COMMAND, id); - commandEvent.SetInt( id ); - commandEvent.SetEventObject( this ); - - wxMenuBar *bar = GetMenuBar() ; - if (!bar) - return; - -/* TODO: check the menu item if required - wxMenuItem *item = bar->FindItemForId(id) ; - if (item && item->IsCheckable()) - { - bar->Check(id,!bar->Checked(id)) ; - } -*/ - - GetEventHandler()->ProcessEvent(commandEvent); -} - -// Checks if there is a toolbar, and returns the first free client position -wxPoint wxFrame::GetClientAreaOrigin() const -{ - wxPoint pt(0, 0); - if (GetToolBar()) - { - int w, h; - GetToolBar()->GetSize(& w, & h); - - if (GetToolBar()->GetWindowStyleFlag() & wxTB_VERTICAL) - { - pt.x += w; - } - else - { - pt.y += h; - } - } - return pt; -} - -void wxFrame::ScreenToClient(int *x, int *y) const -{ - wxWindow::ScreenToClient(x, y); - - // We may be faking the client origin. - // So a window that's really at (0, 30) may appear - // (to wxWin apps) to be at (0, 0). - wxPoint pt(GetClientAreaOrigin()); - *x -= pt.x; - *y -= pt.y; -} - -void wxFrame::ClientToScreen(int *x, int *y) const -{ - // We may be faking the client origin. - // So a window that's really at (0, 30) may appear - // (to wxWin apps) to be at (0, 0). - wxPoint pt1(GetClientAreaOrigin()); - *x += pt1.x; - *y += pt1.y; - - wxWindow::ClientToScreen(x, y); -} - -wxToolBar* wxFrame::CreateToolBar(long style, wxWindowID id, const wxString& name) -{ - wxCHECK_MSG( m_frameToolBar == NULL, FALSE, - "recreating toolbar in wxFrame" ); - - wxToolBar* toolBar = OnCreateToolBar(style, id, name); - if (toolBar) - { - SetToolBar(toolBar); - PositionToolBar(); - return toolBar; - } - else - { - return NULL; - } -} - -wxToolBar* wxFrame::OnCreateToolBar(long style, wxWindowID id, const wxString& name) -{ - return new wxToolBar(this, id, wxDefaultPosition, wxDefaultSize, style, name); -} - -void wxFrame::PositionToolBar() -{ - int cw, ch; - - // TODO: we actually need to use the low-level client size, before - // the toolbar/status bar were added. - // So DEFINITELY replace the line below with something appropriate. - - GetClientSize(& cw, &ch); - - if ( GetStatusBar() ) - { - int statusX, statusY; - GetStatusBar()->GetClientSize(&statusX, &statusY); - ch -= statusY; - } - - if (GetToolBar()) - { - int tw, th; - GetToolBar()->GetSize(& tw, & th); - - if (GetToolBar()->GetWindowStyleFlag() & wxTB_VERTICAL) - { - // Use the 'real' position. wxSIZE_NO_ADJUSTMENTS - // means, pretend we don't have toolbar/status bar, so we - // have the original client size. - GetToolBar()->SetSize(0, 0, tw, ch, wxSIZE_NO_ADJUSTMENTS); - } - else - { - // Use the 'real' position - GetToolBar()->SetSize(0, 0, cw, th, wxSIZE_NO_ADJUSTMENTS); - } - } -} - diff --git a/src/stubs/gauge.cpp b/src/stubs/gauge.cpp deleted file mode 100644 index a85fbc498f..0000000000 --- a/src/stubs/gauge.cpp +++ /dev/null @@ -1,95 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: gauge.cpp -// Purpose: wxGauge class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "gauge.h" -#endif - -#include "wx/gauge.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxGauge, wxControl) -#endif - -bool wxGauge::Create(wxWindow *parent, wxWindowID id, - int range, - const wxPoint& pos, - const wxSize& size, - long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); - SetValidator(validator); - m_rangeMax = range; - m_windowStyle = style; - - if (parent) parent->AddChild(this); - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - - // TODO - return FALSE; -} - -void wxGauge::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -void wxGauge::SetShadowWidth(int w) -{ - // TODO optional -} - -void wxGauge::SetBezelFace(int w) -{ - // TODO optional -} - -void wxGauge::SetRange(int r) -{ - m_rangeMax = r; - // TODO -} - -void wxGauge::SetValue(int pos) -{ - m_gaugePos = pos; - // TODO -} - -int wxGauge::GetShadowWidth() const -{ - // TODO optional - return 0; -} - -int wxGauge::GetBezelFace() const -{ - // TODO optional - return 0; -} - -int wxGauge::GetRange() const -{ - return m_rangeMax; -} - -int wxGauge::GetValue() const -{ - return m_gaugePos; -} - diff --git a/src/stubs/gdiobj.cpp b/src/stubs/gdiobj.cpp deleted file mode 100644 index 63697c8354..0000000000 --- a/src/stubs/gdiobj.cpp +++ /dev/null @@ -1,22 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: gdiobj.cpp -// Purpose: wxGDIObject class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "gdiobj.h" -#endif - -#include "wx/gdiobj.h" - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxGDIObject, wxObject) -#endif - -// TODO: Nothing to do, unless you want to. diff --git a/src/stubs/helpxxxx.cpp b/src/stubs/helpxxxx.cpp deleted file mode 100644 index 086762c646..0000000000 --- a/src/stubs/helpxxxx.cpp +++ /dev/null @@ -1,83 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: helpxxxx.cpp -// Purpose: Help system: native implementation -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "helpxxxx.h" -#endif - -#include "wx/stubs/helpxxxx.h" - -#include - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxXXXXHelpController, wxHelpControllerBase) -#endif - -wxXXXXHelpController::wxXXXXHelpController() -{ - m_helpFile = ""; -} - -wxXXXXHelpController::~wxXXXXHelpController() -{ -} - -bool wxXXXXHelpController::Initialize(const wxString& filename) -{ - m_helpFile = filename; - // TODO any other inits - return TRUE; -} - -bool wxXXXXHelpController::LoadFile(const wxString& file) -{ - m_helpFile = file; - // TODO - return TRUE; -} - -bool wxXXXXHelpController::DisplayContents() -{ - // TODO - return FALSE; -} - -bool wxXXXXHelpController::DisplaySection(int section) -{ - // TODO - return FALSE; -} - -bool wxXXXXHelpController::DisplayBlock(long block) -{ - // TODO - return FALSE; -} - -bool wxXXXXHelpController::KeywordSearch(const wxString& k) -{ - if (m_helpFile == "") return FALSE; - - // TODO - return FALSE; -} - -// Can't close the help window explicitly in WinHelp -bool wxXXXXHelpController::Quit() -{ - // TODO - return FALSE; -} - -void wxXXXXHelpController::OnQuit() -{ -} - diff --git a/src/stubs/icon.cpp b/src/stubs/icon.cpp deleted file mode 100644 index 6deee7dbdc..0000000000 --- a/src/stubs/icon.cpp +++ /dev/null @@ -1,70 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: icon.cpp -// Purpose: wxIcon class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "icon.h" -#endif - -#include "wx/icon.h" - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxIcon, wxBitmap) -#endif - -/* - * Icons - */ - - -wxIconRefData::wxIconRefData() -{ - // TODO: init icon handle -} - -wxIconRefData::~wxIconRefData() -{ - // TODO: destroy icon handle -} - -wxIcon::wxIcon() -{ -} - -wxIcon::wxIcon(const char WXUNUSED(bits)[], int WXUNUSED(width), int WXUNUSED(height)) -{ -} - -wxIcon::wxIcon(const wxString& icon_file, long flags, - int desiredWidth, int desiredHeight) - -{ - LoadFile(icon_file, flags, desiredWidth, desiredHeight); -} - -wxIcon::~wxIcon() -{ -} - -bool wxIcon::LoadFile(const wxString& filename, long type, - int desiredWidth, int desiredHeight) -{ - UnRef(); - - m_refData = new wxIconRefData; - - wxBitmapHandler *handler = FindHandler(type); - - if ( handler ) - return handler->LoadFile(this, filename, type, desiredWidth, desiredHeight); - else - return FALSE; -} - diff --git a/src/stubs/imaglist.cpp b/src/stubs/imaglist.cpp deleted file mode 100644 index 4cb47b4e69..0000000000 --- a/src/stubs/imaglist.cpp +++ /dev/null @@ -1,118 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: imaglist.cpp -// Purpose: wxImageList. You may wish to use the generic version. -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "imaglist.h" -#endif - -#include "wx/stubs/imaglist.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxImageList, wxObject) -#endif - -wxImageList::wxImageList() -{ - // TODO: init image list handle, if any -} - -wxImageList::~wxImageList() -{ - // TODO: destroy image list handle, if any -} - - -// Attributes -//////////////////////////////////////////////////////////////////////////// - -// Returns the number of images in the image list. -int wxImageList::GetImageCount() const -{ - // TODO - return 0; -} - -// Operations -//////////////////////////////////////////////////////////////////////////// - -// Creates an image list -bool wxImageList::Create(int width, int height, bool mask, int initial) -{ - // TODO - return FALSE; -} - -// Adds a bitmap, and optionally a mask bitmap. -// Note that wxImageList creates new bitmaps, so you may delete -// 'bitmap' and 'mask'. -int wxImageList::Add(const wxBitmap& bitmap, const wxBitmap& mask) -{ - // TODO - return 0; -} - -// Adds a bitmap, using the specified colour to create the mask bitmap -// Note that wxImageList creates new bitmaps, so you may delete -// 'bitmap'. -int wxImageList::Add(const wxBitmap& bitmap, const wxColour& maskColour) -{ - // TODO - return 0; -} - -// Adds a bitmap and mask from an icon. -int wxImageList::Add(const wxIcon& icon) -{ - // TODO - return 0; -} - -// Replaces a bitmap, optionally passing a mask bitmap. -// Note that wxImageList creates new bitmaps, so you may delete -// 'bitmap' and 'mask'. -bool wxImageList::Replace(int index, const wxBitmap& bitmap, const wxBitmap& mask) -{ - // TODO - return 0; -} - -// Replaces a bitmap and mask from an icon. -bool wxImageList::Replace(int index, const wxIcon& icon) -{ - // TODO - return 0; -} - -// Removes the image at the given index. -bool wxImageList::Remove(int index) -{ - // TODO - return FALSE; -} - -// Remove all images -bool wxImageList::RemoveAll() -{ - // TODO - return FALSE; -} - -// Draws the given image on a dc at the specified position. -// If 'solidBackground' is TRUE, Draw sets the image list background -// colour to the background colour of the wxDC, to speed up -// drawing by eliminating masked drawing where possible. -bool wxImageList::Draw(int index, wxDC& dc, int x, int y, - int flags, bool solidBackground) -{ - // TODO - return FALSE; -} - diff --git a/src/stubs/joystick.cpp b/src/stubs/joystick.cpp deleted file mode 100644 index 6677277f48..0000000000 --- a/src/stubs/joystick.cpp +++ /dev/null @@ -1,279 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: joystick.cpp -// Purpose: wxJoystick class -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "joystick.h" -#endif - -#include - -IMPLEMENT_DYNAMIC_CLASS(wxJoystick, wxObject) - -// Attributes -//////////////////////////////////////////////////////////////////////////// - -wxPoint wxJoystick::GetPosition() const -{ - // TODO - return wxPoint(0, 0); -} - -int wxJoystick::GetZPosition() const -{ - // TODO - return 0; -} - -int wxJoystick::GetButtonState() const -{ - // TODO - return 0; -} - -int wxJoystick::GetPOVPosition() const -{ - // TODO - return 0; -} - -int wxJoystick::GetPOVCTSPosition() const -{ - // TODO - return 0; -} - -int wxJoystick::GetRudderPosition() const -{ - // TODO - return 0; -} - -int wxJoystick::GetUPosition() const -{ - // TODO - return 0; -} - -int wxJoystick::GetVPosition() const -{ - // TODO - return 0; -} - -int wxJoystick::GetMovementThreshold() const -{ - // TODO - return 0; -} - -void wxJoystick::SetMovementThreshold(int threshold) -{ - // TODO -} - -// Capabilities -//////////////////////////////////////////////////////////////////////////// - -bool wxJoystick::IsOk() const -{ - // TODO - return FALSE; -} - -int wxJoystick::GetNumberJoysticks() const -{ - // TODO - return 0; -} - -int wxJoystick::GetManufacturerId() const -{ - // TODO - return 0; -} - -int wxJoystick::GetProductId() const -{ - // TODO - return 0; -} - -wxString wxJoystick::GetProductName() const -{ - // TODO - return wxString(""); -} - -int wxJoystick::GetXMin() const -{ - // TODO - return 0; -} - -int wxJoystick::GetYMin() const -{ - // TODO - return 0; -} - -int wxJoystick::GetZMin() const -{ - // TODO - return 0; -} - -int wxJoystick::GetXMax() const -{ - // TODO - return 0; -} - -int wxJoystick::GetYMax() const -{ - // TODO - return 0; -} - -int wxJoystick::GetZMax() const -{ - // TODO - return 0; -} - -int wxJoystick::GetNumberButtons() const -{ - // TODO - return 0; -} - -int wxJoystick::GetNumberAxes() const -{ - // TODO - return 0; -} - -int wxJoystick::GetMaxButtons() const -{ - // TODO - return 0; -} - -int wxJoystick::GetMaxAxes() const -{ - // TODO - return 0; -} - -int wxJoystick::GetPollingMin() const -{ - // TODO - return 0; -} - -int wxJoystick::GetPollingMax() const -{ - // TODO - return 0; -} - -int wxJoystick::GetRudderMin() const -{ - // TODO - return 0; -} - -int wxJoystick::GetRudderMax() const -{ - // TODO - return 0; -} - -int wxJoystick::GetUMin() const -{ - // TODO - return 0; -} - -int wxJoystick::GetUMax() const -{ - // TODO - return 0; -} - -int wxJoystick::GetVMin() const -{ - // TODO - return 0; -} - -int wxJoystick::GetVMax() const -{ - // TODO - return 0; -} - -bool wxJoystick::HasRudder() const -{ - // TODO - return FALSE; -} - -bool wxJoystick::HasZ() const -{ - // TODO - return FALSE; -} - -bool wxJoystick::HasU() const -{ - // TODO - return FALSE; -} - -bool wxJoystick::HasV() const -{ - // TODO - return FALSE; -} - -bool wxJoystick::HasPOV() const -{ - // TODO - return FALSE; -} - -bool wxJoystick::HasPOV4Dir() const -{ - // TODO - return FALSE; -} - -bool wxJoystick::HasPOVCTS() const -{ - // TODO - return FALSE; -} - -// Operations -//////////////////////////////////////////////////////////////////////////// - -bool wxJoystick::SetCapture(wxWindow* win, int pollingFreq) -{ - // TODO - return FALSE; -} - -bool wxJoystick::ReleaseCapture() -{ - // TODO - return FALSE; -} - diff --git a/src/stubs/listbox.cpp b/src/stubs/listbox.cpp deleted file mode 100644 index 1dad21e12c..0000000000 --- a/src/stubs/listbox.cpp +++ /dev/null @@ -1,235 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: listbox.cpp -// Purpose: wxListBox -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "listbox.h" -#endif - -#include "wx/listbox.h" -#include "wx/settings.h" -#include "wx/dynarray.h" -#include "wx/log.h" - -#if !USE_SHARED_LIBRARY - IMPLEMENT_DYNAMIC_CLASS(wxListBox, wxControl) -#endif - -// ============================================================================ -// list box control implementation -// ============================================================================ - -// Listbox item -wxListBox::wxListBox() -{ - m_noItems = 0; - m_selected = 0; -} - -bool wxListBox::Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos, - const wxSize& size, - int n, const wxString choices[], - long style, - const wxValidator& validator, - const wxString& name) -{ - m_noItems = n; - m_selected = 0; - - SetName(name); - SetValidator(validator); - - if (parent) parent->AddChild(this); - - wxSystemSettings settings; - SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOW)); - - m_windowId = ( id == -1 ) ? (int)NewControlId() : id; - - // TODO create listbox - - return FALSE; -} - -wxListBox::~wxListBox() -{ -} - -void wxListBox::SetFirstItem(int N) -{ - // TODO -} - -void wxListBox::SetFirstItem(const wxString& s) -{ - // TODO -} - -void wxListBox::Delete(int N) -{ - m_noItems --; - // TODO -} - -void wxListBox::Append(const wxString& item) -{ - m_noItems ++; - - // TODO -} - -void wxListBox::Append(const wxString& item, char *Client_data) -{ - m_noItems ++; - - // TODO -} - -void wxListBox::Set(int n, const wxString *choices, char** clientData) -{ - m_noItems = n; - - // TODO -} - -int wxListBox::FindString(const wxString& s) const -{ - // TODO - return -1; -} - -void wxListBox::Clear() -{ - m_noItems = 0; - // TODO -} - -void wxListBox::SetSelection(int N, bool select) -{ - // TODO -} - -bool wxListBox::Selected(int N) const -{ - // TODO - return FALSE; -} - -void wxListBox::Deselect(int N) -{ - // TODO -} - -char *wxListBox::GetClientData(int N) const -{ - // TODO - return (char *)NULL; -} - -void wxListBox::SetClientData(int N, char *Client_data) -{ - // TODO -} - -// Return number of selections and an array of selected integers -int wxListBox::GetSelections(wxArrayInt& aSelections) const -{ - aSelections.Empty(); - -/* TODO - if ((m_windowStyle & wxLB_MULTIPLE) || (m_windowStyle & wxLB_EXTENDED)) - { - int no_sel = ?? - for ( int n = 0; n < no_sel; n++ ) - aSelections.Add(??); - - return no_sel; - } - else // single-selection listbox - { - aSelections.Add(??); - - return 1; - } -*/ - return 0; -} - -// Get single selection, for single choice list items -int wxListBox::GetSelection() const -{ - // TODO - return -1; -} - -// Find string for position -wxString wxListBox::GetString(int N) const -{ - // TODO - return wxString(""); -} - -void wxListBox::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -void wxListBox::InsertItems(int nItems, const wxString items[], int pos) -{ - m_noItems += nItems; - - // TODO -} - -void wxListBox::SetString(int N, const wxString& s) -{ - // TODO -} - -int wxListBox::Number () const -{ - return m_noItems; -} - -// For single selection items only -wxString wxListBox::GetStringSelection () const -{ - int sel = GetSelection (); - if (sel > -1) - return this->GetString (sel); - else - return wxString(""); -} - -bool wxListBox::SetStringSelection (const wxString& s, bool flag) -{ - int sel = FindString (s); - if (sel > -1) - { - SetSelection (sel, flag); - return TRUE; - } - else - return FALSE; -} - -void wxListBox::Command (wxCommandEvent & event) -{ - if (event.m_extraLong) - SetSelection (event.m_commandInt); - else - { - Deselect (event.m_commandInt); - return; - } - ProcessCommand (event); -} - diff --git a/src/stubs/listctrl.cpp b/src/stubs/listctrl.cpp deleted file mode 100644 index d1d8445652..0000000000 --- a/src/stubs/listctrl.cpp +++ /dev/null @@ -1,596 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: listctrl.cpp -// Purpose: wxListCtrl. See also Robert's generic wxListCtrl -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "listctrl.h" -#endif - -#include "wx/stubs/textctrl.h" -#include "wx/stubs/listctrl.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxListCtrl, wxControl) -IMPLEMENT_DYNAMIC_CLASS(wxListItem, wxObject) - -#endif - -wxListCtrl::wxListCtrl() -{ - m_imageListNormal = NULL; - m_imageListSmall = NULL; - m_imageListState = NULL; - m_baseStyle = 0; - m_colCount = 0; -} - -bool wxListCtrl::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, - long style, const wxValidator& validator, const wxString& name) -{ - m_imageListNormal = NULL; - m_imageListSmall = NULL; - m_imageListState = NULL; - m_colCount = 0; - - SetValidator(validator); - SetName(name); - - m_windowStyle = style; - - SetParent(parent); - - m_windowId = (id == -1) ? NewControlId() : id; - - if (parent) parent->AddChild(this); - - // TODO create list control - return TRUE; -} - -wxListCtrl::~wxListCtrl() -{ -} - -// Add or remove a single window style -void wxListCtrl::SetSingleStyle(long style, bool add) -{ - long flag = GetWindowStyleFlag(); - - // Get rid of conflicting styles - if ( add ) - { - if ( style & wxLC_MASK_TYPE) - flag = flag & ~wxLC_MASK_TYPE ; - if ( style & wxLC_MASK_ALIGN ) - flag = flag & ~wxLC_MASK_ALIGN ; - if ( style & wxLC_MASK_SORT ) - flag = flag & ~wxLC_MASK_SORT ; - } - - if ( flag & style ) - { - if ( !add ) - flag -= style; - } - else - { - if ( add ) - { - flag |= style; - } - } - - m_windowStyle = flag; - - /* TODO RecreateWindow(); */ -} - -// Set the whole window style -void wxListCtrl::SetWindowStyleFlag(long flag) -{ - m_windowStyle = flag; - - /* TODO RecreateWindow(); */ -} - - -// Gets information about this column -bool wxListCtrl::GetColumn(int col, wxListItem& item) const -{ - // TODO - return FALSE; -} - -// Sets information about this column -bool wxListCtrl::SetColumn(int col, wxListItem& item) -{ - // TODO - return FALSE; -} - -// Gets the column width -int wxListCtrl::GetColumnWidth(int col) const -{ - // TODO - return 0; -} - -// Sets the column width -bool wxListCtrl::SetColumnWidth(int col, int width) -{ - // TODO - return FALSE; -} - -// 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) -int wxListCtrl::GetCountPerPage() const -{ - // TODO - return 0; -} - -// Gets the edit control for editing labels. -wxTextCtrl* wxListCtrl::GetEditControl() const -{ - return m_textCtrl; -} - -// Gets information about the item -bool wxListCtrl::GetItem(wxListItem& info) const -{ - // TODO - return FALSE; -} - -// Sets information about the item -bool wxListCtrl::SetItem(wxListItem& info) -{ - // TODO - return FALSE; -} - -long wxListCtrl::SetItem(long index, int col, const wxString& label, int imageId) -{ - wxListItem info; - info.m_text = label; - info.m_mask = wxLIST_MASK_TEXT; - info.m_itemId = index; - info.m_col = col; - if ( imageId > -1 ) - { - info.m_image = imageId; - info.m_mask |= wxLIST_MASK_IMAGE; - } - return SetItem(info); -} - - -// Gets the item state -int wxListCtrl::GetItemState(long item, long stateMask) const -{ - wxListItem info; - - info.m_mask = wxLIST_MASK_STATE ; - info.m_stateMask = stateMask; - info.m_itemId = item; - - if (!GetItem(info)) - return 0; - - return info.m_state; -} - -// Sets the item state -bool wxListCtrl::SetItemState(long item, long state, long stateMask) -{ - wxListItem info; - - info.m_mask = wxLIST_MASK_STATE ; - info.m_state = state; - info.m_stateMask = stateMask; - info.m_itemId = item; - - return SetItem(info); -} - -// Sets the item image -bool wxListCtrl::SetItemImage(long item, int image, int selImage) -{ - wxListItem info; - - info.m_mask = wxLIST_MASK_IMAGE ; - info.m_image = image; - info.m_itemId = item; - - return SetItem(info); -} - -// Gets the item text -wxString wxListCtrl::GetItemText(long item) const -{ - wxListItem info; - - info.m_mask = wxLIST_MASK_TEXT ; - info.m_itemId = item; - - if (!GetItem(info)) - return wxString(""); - return info.m_text; -} - -// Sets the item text -void wxListCtrl::SetItemText(long item, const wxString& str) -{ - wxListItem info; - - info.m_mask = wxLIST_MASK_TEXT ; - info.m_itemId = item; - info.m_text = str; - - SetItem(info); -} - -// Gets the item data -long wxListCtrl::GetItemData(long item) const -{ - wxListItem info; - - info.m_mask = wxLIST_MASK_DATA ; - info.m_itemId = item; - - if (!GetItem(info)) - return 0; - return info.m_data; -} - -// Sets the item data -bool wxListCtrl::SetItemData(long item, long data) -{ - wxListItem info; - - info.m_mask = wxLIST_MASK_DATA ; - info.m_itemId = item; - info.m_data = data; - - return SetItem(info); -} - -// Gets the item rectangle -bool wxListCtrl::GetItemRect(long item, wxRect& rect, int code) const -{ - // TODO - return FALSE; -} - -// Gets the item position -bool wxListCtrl::GetItemPosition(long item, wxPoint& pos) const -{ - // TODO - return FALSE; -} - -// Sets the item position. -bool wxListCtrl::SetItemPosition(long item, const wxPoint& pos) -{ - // TODO - return FALSE; -} - -// Gets the number of items in the list control -int wxListCtrl::GetItemCount() const -{ - // TODO - return FALSE; -} - -// Retrieves the spacing between icons in pixels. -// If small is TRUE, gets the spacing for the small icon -// view, otherwise the large icon view. -int wxListCtrl::GetItemSpacing(bool isSmall) const -{ - // TODO - return FALSE; -} - -// Gets the number of selected items in the list control -int wxListCtrl::GetSelectedItemCount() const -{ - // TODO - return FALSE; -} - -// Gets the text colour of the listview -wxColour wxListCtrl::GetTextColour() const -{ - // TODO - return wxColour(); -} - -// Sets the text colour of the listview -void wxListCtrl::SetTextColour(const wxColour& col) -{ - // TODO -} - -// Gets the index of the topmost visible item when in -// list or report view -long wxListCtrl::GetTopItem() const -{ - // TODO - return 0; -} - -// Searches for an item, starting from 'item'. -// 'geometry' is one of -// wxLIST_NEXT_ABOVE/ALL/BELOW/LEFT/RIGHT. -// 'state' is a state bit flag, one or more of -// wxLIST_STATE_DROPHILITED/FOCUSED/SELECTED/CUT. -// item can be -1 to find the first item that matches the -// specified flags. -// Returns the item or -1 if unsuccessful. -long wxListCtrl::GetNextItem(long item, int geom, int state) const -{ - // TODO - return 0; -} - -wxImageList *wxListCtrl::GetImageList(int which) const -{ - if ( which == wxIMAGE_LIST_NORMAL ) - { - return m_imageListNormal; - } - else if ( which == wxIMAGE_LIST_SMALL ) - { - return m_imageListSmall; - } - else if ( which == wxIMAGE_LIST_STATE ) - { - return m_imageListState; - } - return NULL; -} - -void wxListCtrl::SetImageList(wxImageList *imageList, int which) -{ - int flags = 0; - if ( which == wxIMAGE_LIST_NORMAL ) - { - m_imageListNormal = imageList; - } - else if ( which == wxIMAGE_LIST_SMALL ) - { - m_imageListSmall = imageList; - } - else if ( which == wxIMAGE_LIST_STATE ) - { - m_imageListState = imageList; - } - // TODO set image list -} - -// Operations -//////////////////////////////////////////////////////////////////////////// - -// Arranges the items -bool wxListCtrl::Arrange(int flag) -{ - // TODO - return FALSE; -} - -// Deletes an item -bool wxListCtrl::DeleteItem(long item) -{ - // TODO - return FALSE; -} - -// Deletes all items -bool wxListCtrl::DeleteAllItems() -{ - // TODO - return FALSE; -} - -// Deletes all items -bool wxListCtrl::DeleteAllColumns() -{ - // TODO - return FALSE; -} - -// Deletes a column -bool wxListCtrl::DeleteColumn(int col) -{ - // TODO - return FALSE; -} - -// Clears items, and columns if there are any. -void wxListCtrl::ClearAll() -{ - DeleteAllItems(); - if ( m_colCount > 0 ) - DeleteAllColumns(); -} - -// Edit the label -wxTextCtrl* wxListCtrl::EditLabel(long item, wxClassInfo* textControlClass) -{ - // TODO - return NULL; -} - -// End label editing, optionally cancelling the edit -bool wxListCtrl::EndEditLabel(bool cancel) -{ - // TODO - return FALSE; -} - -// Ensures this item is visible -bool wxListCtrl::EnsureVisible(long item) -{ - // TODO - return FALSE; -} - -// Find an item whose label matches this string, starting from the item after 'start' -// or the beginning if 'start' is -1. -long wxListCtrl::FindItem(long start, const wxString& str, bool partial) -{ - // TODO - return FALSE; -} - -// Find an item whose data matches this data, starting from the item after 'start' -// or the beginning if 'start' is -1. -long wxListCtrl::FindItem(long start, long data) -{ - // TODO - return 0; -} - -// Find an item nearest this position in the specified direction, starting from -// the item after 'start' or the beginning if 'start' is -1. -long wxListCtrl::FindItem(long start, const wxPoint& pt, int direction) -{ - // TODO - return 0; -} - -// Determines which item (if any) is at the specified point, -// giving details in 'flags' (see wxLIST_HITTEST_... flags above) -long wxListCtrl::HitTest(const wxPoint& point, int& flags) -{ - // TODO - return 0; -} - -// Inserts an item, returning the index of the new item if successful, -// -1 otherwise. -long wxListCtrl::InsertItem(wxListItem& info) -{ - // TODO - return 0; -} - -long wxListCtrl::InsertItem(long index, const wxString& label) -{ - wxListItem info; - info.m_text = label; - info.m_mask = wxLIST_MASK_TEXT; - info.m_itemId = index; - return InsertItem(info); -} - -// Inserts an image item -long wxListCtrl::InsertItem(long index, int imageIndex) -{ - wxListItem info; - info.m_image = imageIndex; - info.m_mask = wxLIST_MASK_IMAGE; - info.m_itemId = index; - return InsertItem(info); -} - -// Inserts an image/string item -long wxListCtrl::InsertItem(long index, const wxString& label, int imageIndex) -{ - wxListItem info; - info.m_image = imageIndex; - info.m_text = label; - info.m_mask = wxLIST_MASK_IMAGE | wxLIST_MASK_TEXT; - info.m_itemId = index; - return InsertItem(info); -} - -// For list view mode (only), inserts a column. -long wxListCtrl::InsertColumn(long col, wxListItem& item) -{ - // TODO - return 0; -} - -long wxListCtrl::InsertColumn(long col, const wxString& heading, int format, - int width) -{ - wxListItem item; - item.m_mask = wxLIST_MASK_TEXT | wxLIST_MASK_FORMAT; - item.m_text = heading; - if ( width > -1 ) - { - item.m_mask |= wxLIST_MASK_WIDTH; - item.m_width = width; - } - item.m_format = format; - - return InsertColumn(col, item); -} - -// Scrolls the list control. If in icon, small icon or report view mode, -// x specifies the number of pixels to scroll. If in list view mode, x -// specifies the number of columns to scroll. -// If in icon, small icon or list view mode, y specifies the number of pixels -// to scroll. If in report view mode, y specifies the number of lines to scroll. -bool wxListCtrl::ScrollList(int dx, int dy) -{ - // TODO - return FALSE; -} - -// Sort items. - -// 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. -bool wxListCtrl::SortItems(wxListCtrlCompare fn, long data) -{ - // TODO - return FALSE; -} - -// List item structure -wxListItem::wxListItem() -{ - m_mask = 0; - m_itemId = 0; - m_col = 0; - m_state = 0; - m_stateMask = 0; - m_image = 0; - m_data = 0; - - m_format = wxLIST_FORMAT_CENTRE; - m_width = 0; -} - -// List event -IMPLEMENT_DYNAMIC_CLASS(wxListEvent, wxCommandEvent) - -wxListEvent::wxListEvent(wxEventType commandType, int id): - wxCommandEvent(commandType, id) -{ - m_code = 0; - m_itemIndex = 0; - m_col = 0; - m_cancelled = FALSE; -} - diff --git a/src/stubs/main.cpp b/src/stubs/main.cpp deleted file mode 100644 index 47a9924bae..0000000000 --- a/src/stubs/main.cpp +++ /dev/null @@ -1,18 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: main.cpp -// Purpose: Entry point -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#include "wx/app.h" - -int main(int argc, char* argv[]) -{ - return wxEntry(argc, argv); -} - diff --git a/src/stubs/makefile.unx b/src/stubs/makefile.unx deleted file mode 100644 index abd4765ea4..0000000000 --- a/src/stubs/makefile.unx +++ /dev/null @@ -1,203 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1998 -# Updated: -# Copyright: (c) 1998 -# -# -# Makefile for wxStubs library, Unix - -EXTRACFLAGS=-DLEX_SCANNER - -include ../make.env - -LIB_CPP_SRC=\ -\ - ../common/cmndata.cpp \ - ../common/config.cpp \ - ../common/date.cpp \ - ../common/docmdi.cpp \ - ../common/docview.cpp \ - ../common/dynarray.cpp \ - ../common/dynlib.cpp \ - ../common/event.cpp \ - ../common/file.cpp \ - ../common/fileconf.cpp \ - ../common/filefn.cpp \ - ../common/gdicmn.cpp \ - ../common/hash.cpp \ - ../common/helpbase.cpp \ - ../common/intl.cpp \ - ../common/ipcbase.cpp \ - ../common/layout.cpp \ - ../common/list.cpp \ - ../common/log.cpp \ - ../common/matrix.cpp \ - ../common/memory.cpp \ - ../common/module.cpp \ - ../common/object.cpp \ - ../common/odbc.cpp \ - ../common/prntbase.cpp \ - ../common/resource.cpp \ - ../common/serbase.cpp \ - ../common/string.cpp \ - ../common/textfile.cpp \ - ../common/tbarbase.cpp \ - ../common/tbarsmpl.cpp \ - ../common/timercmn.cpp \ - ../common/utilscmn.cpp \ - ../common/wincmn.cpp \ - ../common/framecmn.cpp \ - ../common/stream.cpp \ - ../common/datstrm.cpp \ - ../common/fstream.cpp \ - ../common/mstream.cpp \ - ../common/zstream.cpp \ - ../common/objstrm.cpp \ - ../common/sckstrm.cpp \ - ../common/validate.cpp \ - ../common/valtext.cpp \ - ../common/variant.cpp \ - ../common/wxexpr.cpp \ - ../common/socket.cpp \ - ../common/sckaddr.cpp \ - ../common/sckipc.cpp \ - ../common/protocol.cpp \ - ../common/ftp.cpp \ - ../common/http.cpp \ - ../common/url.cpp \ - ../common/tokenzr.cpp \ -\ - accel.cpp \ - app.cpp \ - bitmap.cpp \ - bmpbuttn.cpp \ - brush.cpp \ - button.cpp \ - checkbox.cpp \ - choice.cpp \ - clipbrd.cpp \ - colour.cpp \ - colordlg.cpp \ - control.cpp \ - combobox.cpp \ - cursor.cpp \ - data.cpp \ - dc.cpp \ - dcclient.cpp \ - dcmemory.cpp \ - dcscreen.cpp \ - dialog.cpp \ - dnd.cpp \ - filedlg.cpp \ - font.cpp \ - fontdlg.cpp \ - frame.cpp \ - gauge.cpp \ - gdiobj.cpp \ - helpxxxx.cpp \ - icon.cpp \ - listbox.cpp \ - joystick.cpp \ - main.cpp \ - mdi.cpp \ - menu.cpp \ - menuitem.cpp \ - metafile.cpp \ - minifram.cpp \ - msgdlg.cpp \ - notebook.cpp \ - palette.cpp \ - pen.cpp \ - print.cpp \ - radiobox.cpp \ - radiobut.cpp \ - region.cpp \ - scrolbar.cpp \ - settings.cpp \ - slider.cpp \ - spinbutt.cpp \ - statbox.cpp \ - statbmp.cpp \ - stattext.cpp \ - taskbar.cpp \ - textctrl.cpp \ - thread.cpp \ - timer.cpp \ - toolbar.cpp \ - utils.cpp \ - utilsexc.cpp \ - wave.cpp \ - window.cpp \ -\ - ../generic/choicdgg.cpp \ - ../generic/colrdlgg.cpp \ - ../generic/dcpsg.cpp \ - ../generic/dirdlgg.cpp \ - ../generic/fontdlgg.cpp \ - ../generic/gridg.cpp \ - ../generic/imaglist.cpp \ - ../generic/listctrl.cpp \ - ../generic/laywin.cpp \ - ../generic/msgdlgg.cpp \ - ../generic/panelg.cpp \ - ../generic/prop.cpp \ - ../generic/proplist.cpp \ - ../generic/propform.cpp \ - ../generic/printps.cpp \ - ../generic/prntdlgg.cpp \ - ../generic/sashwin.cpp \ - ../generic/scrolwin.cpp \ - ../generic/splitter.cpp \ - ../generic/statusbr.cpp \ - ../generic/tabg.cpp \ - ../generic/textdlgg.cpp \ - ../generic/treectrl.cpp - -# If you're not using the generic ones, you -# may wish to define platform-specific ones -# dirdlg.cpp \ -# treectrl.cpp \ -# listctrl.cpp \ -# imaglist.cpp \ -# statusbr.cpp \ - -LIB_C_SRC=\ -\ - ../common/y_tab.c \ - ../common/extended.c - -all: $(WXLIB) - -# Define library objects -OBJECTS=\ - $(LIB_CPP_SRC:.cpp=.o) $(LIB_C_SRC:.c=.o) - -$(WXLIB) : $(OBJECTS) - ar $(AROPTIONS) $@ $(OBJECTS) - $(RANLIB) $@ - -../common/y_tab.$(OBJSUFF): ../common/y_tab.c ../common/lex_yy.c - $(CCLEX) -c $(CFLAGS) -o $@ ../common/y_tab.c - -# Replace lex with flex if you run into compilation -# problems with lex_yy.c. See also note about LEX_SCANNER -# above. -../common/lex_yy.c: ../common/lexer.l - $(LEX) -o../common/lex.yy.c ../common/lexer.l - sed -e "s/BUFSIZ/5000/g" < ../common/lex.yy.c | \ - sed -e "s/yyoutput(c)/void yyoutput(c)/g" | \ - sed -e "s/YYLMAX 200/YYLMAX 5000/g" > ../common/lex_yy.c - /bin/rm -f ../common/lex.yy.c - -# Replace yacc with bison if you run into compilation -# problems with y_tab.c. -../common/y_tab.c: ../common/parser.y - $(YACC) ../common/parser.y - mv y.tab.c ../common/y_tab.c - - -clean: - rm -f $(OBJECTS) $(WXLIB) - diff --git a/src/stubs/makefile.vc b/src/stubs/makefile.vc deleted file mode 100644 index 18136ec664..0000000000 --- a/src/stubs/makefile.vc +++ /dev/null @@ -1,973 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1997 -# Updated: -# Copyright: (c) 1997, Julian Smart -# -# "%W% %G%" -# -# Makefile : Builds wxWindows stubs library wxstubs.lib for VC++ (32-bit) -# Arguments: -# -# FINAL=1 argument to nmake to build version with no debugging info. -# - -!include - -APPVER=3.50 # 4.0 -# This means 'enable Windows 95 features' (in wxWindows and in VC++ 4.0). -WINVERSION=-DWINVER=0x0400 - -# On Alpha machines, change to CPU=ALPHA -CPU=i386 - -# Suffixes -OBJSUFF=obj -SRCSUFF=cpp - -WINFLAGS=-c -W3 -Dtry=__try -Dexcept=__except -Dleave=__leave -Dfinally=__finally -DCRTAPI1=_cdecl -DCRTAPI2=_cdecl -nologo -D_X86_=1 $(WINVERSION) -D__WIN32__ -D__WINDOWS__ -WINLINKFLAGS=/INCREMENTAL:NO /NOLOGO -align:0x1000 -machine:$(CPU) -subsystem:windows,$(APPVER) -WINLIBS=kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib oldnames.lib\ - comctl32.lib ctl3d32.lib odbc32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib # libci.lib # libci.lib required for VC++ 4.2 - -# Change this to your WXWIN directory -WXDIR=$(WXWIN) - -WXSRC=$(WXDIR)\src\stubs -WXINC=$(WXDIR)\include -WXBASESRC=$(WXDIR)\src\common - -WXLIB=$(WXDIR)\lib\wxstubs.lib - -EXTRADLLFLAGS= - -INC=-I$(WXINC) -I$(WXDIR)/src/png -I$(WXDIR)/src/zlib $(EXTRAINC) -LIBS = $(EXTRALIBS) $(WXLIB) $(WINLIBS) - -!ifndef FINAL -FINAL=0 -DEBUG=1 -!endif - -# Set this to 1 if you don't want to use precompiled headers -NOPCH=1 - -OPTIONS= - -!if "$(FINAL)" == "0" -OPT = /Od /Gy -# ***N.B.*** to save space/time, comment out /FR to avoid browse info (.sbr files) being generated -DEBUG_FLAGS= /Zi # /FR -LINK_DEBUG_FLAGS=-debug:full -debugtype:cv # /PDB:NONE -CRTFLAG=/MD -!else -# /O1 - smallest code -# /O2 - fastest code -OPT = /O1 # /O2 # /Od -DEBUG_FLAGS= -LINK_DEBUG_FLAGS=/RELEASE -CRTFLAG=/MD -!endif - -PCH= -PRECOMP= -MAKEPRECOMP= - -CPPFLAGS=$(WINFLAGS) $(DEBUG_FLAGS) $(PRECOMP) $(EXTRAFLAGS) /D__WXSTUBS__ /DDEBUG=1 $(INC) $(OPT) $(CRTFLAG) /GX /D__WXDEBUG__ /DWXDEBUG=1 -# If you don't include wxprec.h, use CPPFLAGS2 -CPPFLAGS2=$(WINFLAGS) $(DEBUG_FLAGS) /D__WXSTUBS__ /DDEBUG=1 $(INC) $(EXTRAFLAGS) $(OPT) $(CRTFLAG) /GX /D__WXDEBUG__ /DWXDEBUG=1 -LINKFLAGS=$(LINK_DEBUG_FLAGS) $(WINLINKFLAGS) -entry:WinMainCRTStartup - -THISDIR=$(WXWIN)\src\stubs - -LIBTARGET=$(WXLIB) - -# Please set these according to the settings in wx_setup.h, so we can include -# the appropriate libraries in wx.lib - -PERIPH_LIBS= -PERIPH_TARGET= -PERIPH_CLEAN_TARGET= - -GENDIR=..\generic -COMMDIR=..\common -STUBSDIR=. - -DOCDIR = $(WXDIR)\docs - -GENERICOBJS= \ - $(GENDIR)\choicdgg.obj \ - $(GENDIR)\colrdlgg.obj \ - $(GENDIR)\dcpsg.obj \ - $(GENDIR)\fontdlgg.obj \ - $(GENDIR)\gridg.obj \ - $(GENDIR)\msgdlgg.obj \ - $(GENDIR)\panelg.obj \ - $(GENDIR)\prop.obj \ - $(GENDIR)\propform.obj \ - $(GENDIR)\proplist.obj \ - $(GENDIR)\printps.obj \ - $(GENDIR)\prntdlgg.obj \ - $(GENDIR)\scrolwin.obj \ - $(GENDIR)\splitter.obj \ - $(GENDIR)\statusbr.obj \ - $(GENDIR)\tabg.obj \ - $(GENDIR)\textdlgg.obj - -# $(GENDIR)\helpxlp.obj \ - -COMMONOBJS = \ - $(COMMDIR)\cmndata.obj \ - $(COMMDIR)\config.obj \ - $(COMMDIR)\docview.obj \ - $(COMMDIR)\docmdi.obj \ - $(COMMDIR)\dynarray.obj \ - $(COMMDIR)\event.obj \ - $(COMMDIR)\file.obj \ - $(COMMDIR)\filefn.obj \ - $(COMMDIR)\fileconf.obj \ - $(COMMDIR)\framecmn.obj \ - $(COMMDIR)\gdicmn.obj \ - $(COMMDIR)\intl.obj \ - $(COMMDIR)\ipcbase.obj \ - $(COMMDIR)\helpbase.obj \ - $(COMMDIR)\layout.obj \ - $(COMMDIR)\log.obj \ - $(COMMDIR)\memory.obj \ - $(COMMDIR)\module.obj \ - $(COMMDIR)\object.obj \ - $(COMMDIR)\prntbase.obj \ - $(COMMDIR)\resource.obj \ - $(COMMDIR)\tbarbase.obj \ - $(COMMDIR)\tbarsmpl.obj \ - $(COMMDIR)\textfile.obj \ - $(COMMDIR)\timercmn.obj \ - $(COMMDIR)\utilscmn.obj \ - $(COMMDIR)\validate.obj \ - $(COMMDIR)\valtext.obj \ - $(COMMDIR)\date.obj \ - $(COMMDIR)\hash.obj \ - $(COMMDIR)\list.obj \ - $(COMMDIR)\string.obj \ - $(COMMDIR)\time.obj \ - $(COMMDIR)\wxexpr.obj \ - $(COMMDIR)\y_tab.obj \ - $(COMMDIR)\extended.obj \ - $(COMMDIR)\process.obj \ - $(COMMDIR)\fstream.obj \ - $(COMMDIR)\mstream.obj \ - $(COMMDIR)\zstream.obj \ - $(COMMDIR)\stream.obj \ - $(COMMDIR)\datstrm.obj \ - $(COMMDIR)\wincmn.obj - -# $(COMMDIR)\odbc.obj \ - -STUBSOBJS = \ - $(STUBSDIR)\accel.obj \ - $(STUBSDIR)\app.obj \ - $(STUBSDIR)\bitmap.obj \ - $(STUBSDIR)\bmpbuttn.obj \ - $(STUBSDIR)\brush.obj \ - $(STUBSDIR)\button.obj \ - $(STUBSDIR)\checkbox.obj \ - $(STUBSDIR)\checklst.obj \ - $(STUBSDIR)\choice.obj \ - $(STUBSDIR)\clipbrd.obj \ - $(STUBSDIR)\colordlg.obj \ - $(STUBSDIR)\colour.obj \ - $(STUBSDIR)\combobox.obj \ - $(STUBSDIR)\control.obj \ - $(STUBSDIR)\cursor.obj \ - $(STUBSDIR)\data.obj \ - $(STUBSDIR)\dc.obj \ - $(STUBSDIR)\dcmemory.obj \ - $(STUBSDIR)\dcclient.obj \ - $(STUBSDIR)\dcscreen.obj \ - $(STUBSDIR)\dialog.obj \ - $(STUBSDIR)\dirdlg.obj \ - $(STUBSDIR)\filedlg.obj \ - $(STUBSDIR)\font.obj \ - $(STUBSDIR)\fontdlg.obj \ - $(STUBSDIR)\frame.obj \ - $(STUBSDIR)\gauge.obj \ - $(STUBSDIR)\gdiobj.obj \ - $(STUBSDIR)\helpxxxx.obj \ - $(STUBSDIR)\icon.obj \ - $(STUBSDIR)\imaglist.obj \ - $(STUBSDIR)\joystick.obj \ - $(STUBSDIR)\listbox.obj \ - $(STUBSDIR)\listctrl.obj \ - $(STUBSDIR)\main.obj \ - $(STUBSDIR)\mdi.obj \ - $(STUBSDIR)\menu.obj \ - $(STUBSDIR)\menuitem.obj \ - $(STUBSDIR)\metafile.obj \ - $(STUBSDIR)\minifram.obj \ - $(STUBSDIR)\msgdlg.obj \ - $(STUBSDIR)\notebook.obj \ - $(STUBSDIR)\palette.obj \ - $(STUBSDIR)\pen.obj \ - $(STUBSDIR)\printdlg.obj \ - $(STUBSDIR)\print.obj \ - $(STUBSDIR)\radiobox.obj \ - $(STUBSDIR)\radiobut.obj \ - $(STUBSDIR)\region.obj \ - $(STUBSDIR)\scrolbar.obj \ - $(STUBSDIR)\settings.obj \ - $(STUBSDIR)\slider.obj \ - $(STUBSDIR)\spinbutt.obj \ - $(STUBSDIR)\statbmp.obj \ - $(STUBSDIR)\statbox.obj \ - $(STUBSDIR)\statusbr.obj \ - $(STUBSDIR)\stattext.obj \ - $(STUBSDIR)\tabctrl.obj \ - $(STUBSDIR)\taskbar.obj \ - $(STUBSDIR)\toolbar.obj \ - $(STUBSDIR)\textctrl.obj \ - $(STUBSDIR)\thread.obj \ - $(STUBSDIR)\timer.obj \ - $(STUBSDIR)\treectrl.obj \ - $(STUBSDIR)\utils.obj \ - $(STUBSDIR)\utilsexc.obj \ - $(STUBSDIR)\wave.obj \ - $(STUBSDIR)\window.obj - - -OBJECTS = $(COMMONOBJS) $(GENERICOBJS) $(STUBSOBJS) - -# Normal, static library -all: $(OBJECTS) $(PERIPH_TARGET) $(LIBTARGET) - -$(WXDIR)\lib\wxstubs.lib: $(OBJECTS) $(PERIPH_LIBS) - -erase $(LIBTARGET) - $(implib) @<< --out:$@ --machine:$(CPU) -$(OBJECTS) $(PERIPH_LIBS) -<< - -######################################################## -# Windows-specific objects - -$(STUBSDIR)/accel.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/app.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/bitmap.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/bmpbuttn.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/brush.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/button.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/choice.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/checkbox.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/checklst.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/clipbrd.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/colordlg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/colour.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/combobox.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/control.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/cursor.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/data.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/dc.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/dcmemory.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/dcclient.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/dcprint.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/dcscreen.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/dialog.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/dirdlg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/filedlg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/font.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/fontdlg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/frame.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/gauge.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/gdiobj.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/icon.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/imaglist.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/joystick.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/listbox.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(STUBSDIR)/listctrl.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /Fo$@ /c /Tp $*.$(SRCSUFF) -<< - -$(STUBSDIR)/main.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/mdi.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/menu.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/menuitem.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/metafile.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/minifram.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/msgdlg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/notebook.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/palette.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/pen.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/printdlg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/print.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/radiobox.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/radiobut.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/region.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/scrolbar.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/settings.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/slider.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/spinbutt.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/statbmp.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/statbox.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/statusbr.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/stattext.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/tabctrl.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/taskbar.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/toolbar.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/textctrl.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/thread.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/timer.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/treectrl.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/utils.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/utilsexc.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/wave.obj: $*.$(SRCSUFF) - echo $(CPPFLAGS) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(STUBSDIR)/window.obj: $*.$(SRCSUFF) - echo $(CPPFLAGS) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -######################################################## -# Common objects (always compiled) - -$(COMMDIR)/cmndata.obj: $*.$(SRCSUFF) - echo $(CPPFLAGS) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/config.obj: $*.$(SRCSUFF) - echo $(CPPFLAGS) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/db.obj: $*.$(SRCSUFF) - echo $(CPPFLAGS) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/dbtable.obj: $*.$(SRCSUFF) - echo $(CPPFLAGS) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/docview.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/docmdi.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/dynarray.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/event.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/file.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/fileconf.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/filefn.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/framecmn.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/gdicmn.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/intl.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/ipcbase.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/helpbase.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/layout.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/log.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/memory.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/module.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/object.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/odbc.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/prntbase.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/resource.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/tbarbase.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/tbarsmpl.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/textfile.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/timercmn.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/utilscmn.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/validate.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/valtext.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/date.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/wxexpr.obj: $*.$(SRCSUFF) - echo $(CPPFLAGS) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/hash.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/list.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/string.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/matrix.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -#$(COMMDIR)/wxstrgnu/wxstrgnu.obj: $*.$(SRCSUFF) -# cl @<< -#$(CPPFLAGS2) /c /Tp $*.$(SRCSUFF) /Fo$@ -#<< - -#$(COMMDIR)/wxstrgnu/wxregex.obj: $*.$(SRCSUFF) -# cl @<< -#$(CPPFLAGS2) /c /Tp $*.$(SRCSUFF) /Fo$@ -#<< - -$(COMMDIR)/time.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)\stream.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)\fstream.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)\mstream.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)\zstream.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)\datstrm.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/extended.obj: $*.c - cl @<< -$(CPPFLAGS2) /c /Tp $*.c /Fo$@ -<< - -$(COMMDIR)/process.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS2) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/wincmn.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS2) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(COMMDIR)/y_tab.obj: $*.c $(COMMDIR)/lex_yy.c - cl @<< -$(CPPFLAGS2) /c $*.c -DUSE_DEFINE -DYY_USE_PROTOS /Fo$@ -<< - -$(COMMDIR)/y_tab.c: $(COMMDIR)/dosyacc.c - copy $(COMMDIR)\dosyacc.c $(COMMDIR)\y_tab.c - -$(COMMDIR)/lex_yy.c: $(COMMDIR)/doslex.c - copy $(COMMDIR)\doslex.c $(COMMDIR)\lex_yy.c - -######################################################## -# Generic objects (not always compiled, depending on -# whether platforms have native implementations) - -$(GENDIR)/choicdgg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/colrdlgg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/dcpsg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/fontdlgg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/gridg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/helpxlp.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/msgdlgg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/panelg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/prop.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/propform.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/proplist.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/printps.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/prntdlgg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/scrolwin.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/splitter.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/statusbr.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/tabg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(GENDIR)/textdlgg.obj: $*.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ -<< - -$(OBJECTS): $(WXDIR)/include/wx/stubs/setup.h - -clean: $(PERIPH_CLEAN_TARGET) - -erase *.obj - -erase $(LIBTARGET) - -erase $(WXDIR)\lib\*.pdb - -erase *.pdb - -erase *.sbr - -erase *.pch - cd $(WXDIR)\src\stubs - cd $(GENDIR) - -erase *.pdb - -erase *.sbr - -erase *.obj - cd $(WXDIR)\src\stubs - cd $(COMMDIR) - -erase *.pdb - -erase *.sbr - -erase *.obj - -erase y_tab.c - -erase lex_yy.c - cd $(WXDIR)\src\stubs - -cleanall: clean - diff --git a/src/stubs/mdi.cpp b/src/stubs/mdi.cpp deleted file mode 100644 index 4869697cd7..0000000000 --- a/src/stubs/mdi.cpp +++ /dev/null @@ -1,265 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: mdi.cpp -// Purpose: MDI classes -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "mdi.h" -#endif - -#include "wx/mdi.h" -#include "wx/menu.h" -#include "wx/settings.h" - -extern wxList wxModelessWindows; - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxMDIParentFrame, wxFrame) -IMPLEMENT_DYNAMIC_CLASS(wxMDIChildFrame, wxFrame) -IMPLEMENT_DYNAMIC_CLASS(wxMDIClientWindow, wxWindow) - -BEGIN_EVENT_TABLE(wxMDIParentFrame, wxFrame) - EVT_SIZE(wxMDIParentFrame::OnSize) - EVT_ACTIVATE(wxMDIParentFrame::OnActivate) - EVT_SYS_COLOUR_CHANGED(wxMDIParentFrame::OnSysColourChanged) -END_EVENT_TABLE() - -BEGIN_EVENT_TABLE(wxMDIClientWindow, wxWindow) - EVT_SCROLL(wxMDIClientWindow::OnScroll) -END_EVENT_TABLE() - -#endif - -// Parent frame - -wxMDIParentFrame::wxMDIParentFrame() -{ -} - -bool wxMDIParentFrame::Create(wxWindow *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - if (!parent) - wxTopLevelWindows.Append(this); - - SetName(name); - m_windowStyle = style; - - if (parent) parent->AddChild(this); - - if ( id > -1 ) - m_windowId = id; - else - m_windowId = (int)NewControlId(); - - // TODO: create MDI parent frame - - wxModelessWindows.Append(this); - - return TRUE; -} - -wxMDIParentFrame::~wxMDIParentFrame() -{ -} - -// Get size *available for subwindows* i.e. excluding menu bar. -void wxMDIParentFrame::GetClientSize(int *x, int *y) const -{ - // TODO -} - -void wxMDIParentFrame::SetMenuBar(wxMenuBar *menu_bar) -{ - // TODO - if (!menu_bar) - { - m_frameMenuBar = NULL; - return; - } - - if (menu_bar->m_menuBarFrame) - return; - - m_frameMenuBar = menu_bar; -} - -void wxMDIParentFrame::OnSize(wxSizeEvent& event) -{ -#if wxUSE_CONSTRAINTS - if (GetAutoLayout()) - Layout(); -#endif - int x = 0; - int y = 0; - int width, height; - GetClientSize(&width, &height); - - if ( GetClientWindow() ) - GetClientWindow()->SetSize(x, y, width, height); -} - -void wxMDIParentFrame::OnActivate(wxActivateEvent& event) -{ - // Do nothing -} - -// Returns the active MDI child window -wxMDIChildFrame *wxMDIParentFrame::GetActiveChild() const -{ - // TODO - return NULL; -} - -// Create the client window class (don't Create the window, -// just return a new class) -wxMDIClientWindow *wxMDIParentFrame::OnCreateClient() -{ - return new wxMDIClientWindow ; -} - -// Responds to colour changes, and passes event on to children. -void wxMDIParentFrame::OnSysColourChanged(wxSysColourChangedEvent& event) -{ - // TODO - - // Propagate the event to the non-top-level children - wxFrame::OnSysColourChanged(event); -} - -// MDI operations -void wxMDIParentFrame::Cascade() -{ - // TODO -} - -void wxMDIParentFrame::Tile() -{ - // TODO -} - -void wxMDIParentFrame::ArrangeIcons() -{ - // TODO -} - -void wxMDIParentFrame::ActivateNext() -{ - // TODO -} - -void wxMDIParentFrame::ActivatePrevious() -{ - // TODO -} - -// Child frame - -wxMDIChildFrame::wxMDIChildFrame() -{ -} - -bool wxMDIChildFrame::Create(wxMDIParentFrame *parent, - wxWindowID id, - const wxString& title, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - SetName(name); - - if ( id > -1 ) - m_windowId = id; - else - m_windowId = (int)NewControlId(); - - if (parent) parent->AddChild(this); - - // TODO: create child frame - - wxModelessWindows.Append(this); - return FALSE; -} - -wxMDIChildFrame::~wxMDIChildFrame() -{ -} - -// Set the client size (i.e. leave the calculation of borders etc. -// to wxWindows) -void wxMDIChildFrame::SetClientSize(int width, int height) -{ - // TODO -} - -void wxMDIChildFrame::GetPosition(int *x, int *y) const -{ - // TODO -} - -void wxMDIChildFrame::SetMenuBar(wxMenuBar *menu_bar) -{ - // TODO - if (!menu_bar) - { - m_frameMenuBar = NULL; - return; - } - - if (menu_bar->m_menuBarFrame) - return; - m_frameMenuBar = menu_bar; -} - -// MDI operations -void wxMDIChildFrame::Maximize() -{ - // TODO -} - -void wxMDIChildFrame::Restore() -{ - // TODO -} - -void wxMDIChildFrame::Activate() -{ - // TODO -} - -// Client window - -wxMDIClientWindow::wxMDIClientWindow() -{ -} - -wxMDIClientWindow::~wxMDIClientWindow() -{ -} - -bool wxMDIClientWindow::CreateClient(wxMDIParentFrame *parent, long style) -{ - // TODO create client window - m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE); - - return FALSE; -} - -// Explicitly call default scroll behaviour -void wxMDIClientWindow::OnScroll(wxScrollEvent& event) -{ - Default(); // Default processing -} - diff --git a/src/stubs/menu.cpp b/src/stubs/menu.cpp deleted file mode 100644 index 1fc7c4a229..0000000000 --- a/src/stubs/menu.cpp +++ /dev/null @@ -1,571 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: menu.cpp -// Purpose: wxMenu, wxMenuBar, wxMenuItem -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - -// ============================================================================ -// headers & declarations -// ============================================================================ - -// wxWindows headers -// ----------------- - -#ifdef __GNUG__ -#pragma implementation "menu.h" -#pragma implementation "menuitem.h" -#endif - -#include "wx/menu.h" -#include "wx/menuitem.h" -#include "wx/log.h" -#include "wx/utils.h" - -// other standard headers -// ---------------------- -#include - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxMenu, wxEvtHandler) -IMPLEMENT_DYNAMIC_CLASS(wxMenuBar, wxEvtHandler) -#endif - -// ============================================================================ -// implementation -// ============================================================================ - -// Menus - -// Construct a menu with optional title (then use append) -wxMenu::wxMenu(const wxString& title, const wxFunction func) -{ - m_title = title; - m_parent = NULL; - m_eventHandler = this; - m_noItems = 0; - m_menuBar = NULL; - m_clientData = (void*) NULL; - if (m_title != "") - { - Append(-2, m_title) ; - AppendSeparator() ; - } - - Callback(func); - - // TODO create menu -} - -// The wxWindow destructor will take care of deleting the submenus. -wxMenu::~wxMenu() -{ - // TODO destroy menu and children - - wxNode *node = m_menuItems.First(); - while (node) - { - wxMenuItem *item = (wxMenuItem *)node->Data(); - - // Delete child menus. - // Beware: they must not be appended to children list!!! - // (because order of delete is significant) - if (item->GetSubMenu()) - item->DeleteSubMenu(); - - wxNode *next = node->Next(); - delete item; - delete node; - node = next; - } -} - -void wxMenu::Break() -{ - // TODO -} - -// function appends a new item or submenu to the menu -void wxMenu::Append(wxMenuItem *pItem) -{ - // TODO - - wxCHECK_RET( pItem != NULL, "can't append NULL item to the menu" ); - - m_menuItems.Append(pItem); - - m_noItems++; -} - -void wxMenu::AppendSeparator() -{ - // TODO - Append(new wxMenuItem(this, ID_SEPARATOR)); -} - -// Pullright item -void wxMenu::Append(int Id, const wxString& label, wxMenu *SubMenu, - const wxString& helpString) -{ - Append(new wxMenuItem(this, Id, label, helpString, FALSE, SubMenu)); -} - -// Ordinary menu item -void wxMenu::Append(int Id, const wxString& label, - const wxString& helpString, bool checkable) -{ - // 'checkable' parameter is useless for Windows. - Append(new wxMenuItem(this, Id, label, helpString, checkable)); -} - -void wxMenu::Delete(int id) -{ - wxNode *node; - wxMenuItem *item; - int pos; - - for (pos = 0, node = m_menuItems.First(); node; node = node->Next(), pos++) { - item = (wxMenuItem *)node->Data(); - if (item->GetId() == id) - break; - } - - if (!node) - return; - - m_menuItems.DeleteNode(node); - delete item; - - // TODO -} - -void wxMenu::Enable(int Id, bool Flag) -{ - wxMenuItem *item = FindItemForId(Id); - wxCHECK_RET( item != NULL, "can't enable non-existing menu item" ); - - item->Enable(Flag); -} - -bool wxMenu::Enabled(int Id) const -{ - wxMenuItem *item = FindItemForId(Id); - wxCHECK( item != NULL, FALSE ); - - return item->IsEnabled(); -} - -void wxMenu::Check(int Id, bool Flag) -{ - wxMenuItem *item = FindItemForId(Id); - wxCHECK_RET( item != NULL, "can't get status of non-existing menu item" ); - - item->Check(Flag); -} - -bool wxMenu::Checked(int Id) const -{ - wxMenuItem *item = FindItemForId(Id); - wxCHECK( item != NULL, FALSE ); - - return item->IsChecked(); -} - -void wxMenu::SetTitle(const wxString& label) -{ - m_title = label ; - // TODO -} - -const wxString wxMenu::GetTitle() const -{ - return m_title; -} - -void wxMenu::SetLabel(int id, const wxString& label) -{ - wxMenuItem *item = FindItemForId(id) ; - if (item==NULL) - return; - - if (item->GetSubMenu()==NULL) - { - // TODO - } - else - { - // TODO - } - item->SetName(label); -} - -wxString wxMenu::GetLabel(int Id) const -{ - // TODO - return wxString("") ; -} - -// Finds the item id matching the given string, -1 if not found. -int wxMenu::FindItem (const wxString& itemString) const -{ - char buf1[200]; - char buf2[200]; - wxStripMenuCodes ((char *)(const char *)itemString, buf1); - - for (wxNode * node = m_menuItems.First (); node; node = node->Next ()) - { - wxMenuItem *item = (wxMenuItem *) node->Data (); - if (item->GetSubMenu()) - { - int ans = item->GetSubMenu()->FindItem(itemString); - if (ans > -1) - return ans; - } - if ( !item->IsSeparator() ) - { - wxStripMenuCodes((char *)item->GetName().c_str(), buf2); - if (strcmp(buf1, buf2) == 0) - return item->GetId(); - } - } - - return -1; -} - -wxMenuItem *wxMenu::FindItemForId(int itemId, wxMenu ** itemMenu) const -{ - if (itemMenu) - *itemMenu = NULL; - for (wxNode * node = m_menuItems.First (); node; node = node->Next ()) - { - wxMenuItem *item = (wxMenuItem *) node->Data (); - - if (item->GetId() == itemId) - { - if (itemMenu) - *itemMenu = (wxMenu *) this; - return item; - } - - if (item->GetSubMenu()) - { - wxMenuItem *ans = item->GetSubMenu()->FindItemForId (itemId, itemMenu); - if (ans) - return ans; - } - } - - if (itemMenu) - *itemMenu = NULL; - return NULL; -} - -void wxMenu::SetHelpString(int itemId, const wxString& helpString) -{ - wxMenuItem *item = FindItemForId (itemId); - if (item) - item->SetHelp(helpString); -} - -wxString wxMenu::GetHelpString (int itemId) const -{ - wxMenuItem *item = FindItemForId (itemId); - wxString str(""); - return (item == NULL) ? str : item->GetHelp(); -} - -void wxMenu::ProcessCommand(wxCommandEvent & event) -{ - bool processed = FALSE; - - // Try a callback - if (m_callback) - { - (void) (*(m_callback)) (*this, event); - processed = TRUE; - } - - // Try the menu's event handler - if ( !processed && GetEventHandler()) - { - processed = GetEventHandler()->ProcessEvent(event); - } -/* TODO - // Try the window the menu was popped up from (and up - // through the hierarchy) - if ( !processed && GetInvokingWindow()) - processed = GetInvokingWindow()->ProcessEvent(event); -*/ -} - -bool wxWindow::PopupMenu(wxMenu *menu, int x, int y) -{ - // TODO - return FALSE; -} - -// Menu Bar -wxMenuBar::wxMenuBar() -{ - m_eventHandler = this; - m_menuCount = 0; - m_menus = NULL; - m_titles = NULL; - m_menuBarFrame = NULL; - - // TODO -} - -wxMenuBar::wxMenuBar(int n, wxMenu *menus[], const wxString titles[]) -{ - m_eventHandler = this; - m_menuCount = n; - m_menus = menus; - m_titles = new wxString[n]; - int i; - for ( i = 0; i < n; i++ ) - m_titles[i] = titles[i]; - m_menuBarFrame = NULL; - - // TODO -} - -wxMenuBar::~wxMenuBar() -{ - int i; - for (i = 0; i < m_menuCount; i++) - { - delete m_menus[i]; - } - delete[] m_menus; - delete[] m_titles; - - // TODO -} - -// Must only be used AFTER menu has been attached to frame, -// otherwise use individual menus to enable/disable items -void wxMenuBar::Enable(int id, bool flag) -{ - wxMenu *itemMenu = NULL; - wxMenuItem *item = FindItemForId(id, &itemMenu) ; - if (!item) - return; - - // TODO -} - -void wxMenuBar::EnableTop(int pos, bool flag) -{ - // TODO -} - -// Must only be used AFTER menu has been attached to frame, -// otherwise use individual menus -void wxMenuBar::Check(int id, bool flag) -{ - wxMenu *itemMenu = NULL; - wxMenuItem *item = FindItemForId(id, &itemMenu) ; - if (!item) - return; - - if (!item->IsCheckable()) - return ; - - // TODO -} - -bool wxMenuBar::Checked(int id) const -{ - wxMenu *itemMenu = NULL; - wxMenuItem *item = FindItemForId(id, &itemMenu) ; - if (!item) - return FALSE; - - // TODO - return FALSE; -} - -bool wxMenuBar::Enabled(int id) const -{ - wxMenu *itemMenu = NULL; - wxMenuItem *item = FindItemForId(id, &itemMenu) ; - if (!item) - return FALSE; - - // TODO - return FALSE ; -} - - -void wxMenuBar::SetLabel(int id, const wxString& label) -{ - wxMenu *itemMenu = NULL; - wxMenuItem *item = FindItemForId(id, &itemMenu) ; - - if (!item) - return; - - // TODO -} - -wxString wxMenuBar::GetLabel(int id) const -{ - wxMenu *itemMenu = NULL; - wxMenuItem *item = FindItemForId(id, &itemMenu) ; - - if (!item) - return wxString(""); - - // TODO - return wxString("") ; -} - -void wxMenuBar::SetLabelTop(int pos, const wxString& label) -{ - // TODO -} - -wxString wxMenuBar::GetLabelTop(int pos) const -{ - // TODO - return wxString(""); -} - -bool wxMenuBar::OnDelete(wxMenu *a_menu, int pos) -{ - // TODO - return FALSE; -} - -bool wxMenuBar::OnAppend(wxMenu *a_menu, const char *title) -{ - // TODO - return FALSE; -} - -void wxMenuBar::Append (wxMenu * menu, const wxString& title) -{ - if (!OnAppend(menu, title)) - return; - - m_menuCount ++; - wxMenu **new_menus = new wxMenu *[m_menuCount]; - wxString *new_titles = new wxString[m_menuCount]; - int i; - - for (i = 0; i < m_menuCount - 1; i++) - { - new_menus[i] = m_menus[i]; - m_menus[i] = NULL; - new_titles[i] = m_titles[i]; - m_titles[i] = ""; - } - if (m_menus) - { - delete[]m_menus; - delete[]m_titles; - } - m_menus = new_menus; - m_titles = new_titles; - - m_menus[m_menuCount - 1] = (wxMenu *)menu; - m_titles[m_menuCount - 1] = title; - - // TODO -} - -void wxMenuBar::Delete(wxMenu * menu, int i) -{ - int j; - int ii = (int) i; - - if (menu != 0) - { - for (ii = 0; ii < m_menuCount; ii++) - { - if (m_menus[ii] == menu) - break; - } - if (ii >= m_menuCount) - return; - } else - { - if (ii < 0 || ii >= m_menuCount) - return; - menu = m_menus[ii]; - } - - if (!OnDelete(menu, ii)) - return; - - menu->SetParent(NULL); - - -- m_menuCount; - for (j = ii; j < m_menuCount; j++) - { - m_menus[j] = m_menus[j + 1]; - m_titles[j] = m_titles[j + 1]; - } -} - -// Find the menu menuString, item itemString, and return the item id. -// Returns -1 if none found. -int wxMenuBar::FindMenuItem (const wxString& menuString, const wxString& itemString) const -{ - char buf1[200]; - char buf2[200]; - wxStripMenuCodes ((char *)(const char *)menuString, buf1); - int i; - for (i = 0; i < m_menuCount; i++) - { - wxStripMenuCodes ((char *)(const char *)m_titles[i], buf2); - if (strcmp (buf1, buf2) == 0) - return m_menus[i]->FindItem (itemString); - } - return -1; -} - -wxMenuItem *wxMenuBar::FindItemForId (int Id, wxMenu ** itemMenu) const -{ - if (itemMenu) - *itemMenu = NULL; - - wxMenuItem *item = NULL; - int i; - for (i = 0; i < m_menuCount; i++) - if ((item = m_menus[i]->FindItemForId (Id, itemMenu))) - return item; - return NULL; -} - -void wxMenuBar::SetHelpString (int Id, const wxString& helpString) -{ - int i; - for (i = 0; i < m_menuCount; i++) - { - if (m_menus[i]->FindItemForId (Id)) - { - m_menus[i]->SetHelpString (Id, helpString); - return; - } - } -} - -wxString wxMenuBar::GetHelpString (int Id) const -{ - int i; - for (i = 0; i < m_menuCount; i++) - { - if (m_menus[i]->FindItemForId (Id)) - return wxString(m_menus[i]->GetHelpString (Id)); - } - return wxString(""); -} - - diff --git a/src/stubs/menuitem.cpp b/src/stubs/menuitem.cpp deleted file mode 100644 index bd2f876a38..0000000000 --- a/src/stubs/menuitem.cpp +++ /dev/null @@ -1,96 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: menuitem.cpp -// Purpose: wxMenuItem implementation -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -// ============================================================================ -// headers & declarations -// ============================================================================ - -#include "wx/menu.h" -#include "wx/menuitem.h" - -// ============================================================================ -// implementation -// ============================================================================ - -// ---------------------------------------------------------------------------- -// dynamic classes implementation -// ---------------------------------------------------------------------------- - -#if !USE_SHARED_LIBRARY - IMPLEMENT_DYNAMIC_CLASS(wxMenuItem, wxObject) -#endif //USE_SHARED_LIBRARY - -// ---------------------------------------------------------------------------- -// wxMenuItem -// ---------------------------------------------------------------------------- - -// ctor & dtor -// ----------- - -wxMenuItem::wxMenuItem(wxMenu *pParentMenu, int id, - const wxString& strName, const wxString& strHelp, - bool bCheckable, - wxMenu *pSubMenu) : - m_bCheckable(bCheckable), - m_strName(strName), - m_strHelp(strHelp) -{ - wxASSERT( pParentMenu != NULL ); - - m_pParentMenu = pParentMenu; - m_pSubMenu = pSubMenu; - m_idItem = id; - m_bEnabled = TRUE; -} - -wxMenuItem::~wxMenuItem() -{ -} - -// misc -// ---- - -// delete the sub menu -void wxMenuItem::DeleteSubMenu() -{ - wxASSERT( m_pSubMenu != NULL ); - - delete m_pSubMenu; - m_pSubMenu = NULL; -} - -// change item state -// ----------------- - -void wxMenuItem::Enable(bool bDoEnable) -{ - if ( m_bEnabled != bDoEnable ) { - if ( m_pSubMenu == NULL ) { // normal menu item - // TODO - } - else // submenu - { - // TODO - } - - m_bEnabled = bDoEnable; - } -} - -void wxMenuItem::Check(bool bDoCheck) -{ - wxCHECK_RET( IsCheckable(), "only checkable items may be checked" ); - - if ( m_bChecked != bDoCheck ) { - // TODO - m_bChecked = bDoCheck; - } -} \ No newline at end of file diff --git a/src/stubs/metafile.cpp b/src/stubs/metafile.cpp deleted file mode 100644 index a92874b336..0000000000 --- a/src/stubs/metafile.cpp +++ /dev/null @@ -1,239 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: metafile.cpp -// Purpose: wxMetaFile, wxMetaFileDC etc. These classes are optional. -// Author: AUTHOR -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "metafile.h" -#endif - -#include "wx/object.h" -#include "wx/string.h" -#include "wx/dc.h" -#include "wx/stubs/metafile.h" -#include "wx/clipbrd.h" - -extern bool wxClipboardIsOpen; - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxMetaFile, wxObject) -IMPLEMENT_ABSTRACT_CLASS(wxMetaFileDC, wxDC) -#endif - -wxMetaFile::wxMetaFile(const wxString& file) -{ - // TODO -} - -wxMetaFile::~wxMetaFile() -{ - // TODO -} - -bool wxMetaFile::SetClipboard(int width, int height) -{ - bool alreadyOpen=wxClipboardOpen(); - if (!alreadyOpen) - { - wxOpenClipboard(); - if (!wxEmptyClipboard()) return FALSE; - } - bool success = wxSetClipboardData(wxDF_METAFILE,this, width,height); - if (!alreadyOpen) wxCloseClipboard(); - return (bool) success; -} - -bool wxMetaFile::Play(wxDC *dc) -{ - // TODO - return FALSE; -} - -/* - * Metafile device context - * - */ - -// Original constructor that does not takes origin and extent. If you use this, -// *DO* give origin/extent arguments to wxMakeMetaFilePlaceable. -wxMetaFileDC::wxMetaFileDC(const wxString& file) -{ - // TODO -} - -// New constructor that takes origin and extent. If you use this, don't -// give origin/extent arguments to wxMakeMetaFilePlaceable. -wxMetaFileDC::wxMetaFileDC(const wxString& file, int xext, int yext, int xorg, int yorg) -{ - // TODO -} - -wxMetaFileDC::~wxMetaFileDC() -{ -} - -void wxMetaFileDC::GetTextExtent(const wxString& string, float *x, float *y, - float *descent, float *externalLeading, wxFont *theFont, bool use16bit) -{ - // TODO -} - -wxMetaFile *wxMetaFileDC::Close() -{ - // TODO - return NULL; -} - -void wxMetaFileDC::SetMapMode(int mode) -{ - // TODO -} - -#if 0 - -#ifdef __WIN32__ -struct RECT32 -{ - short left; - short top; - short right; - short bottom; -}; - -struct mfPLACEABLEHEADER { - DWORD key; - short hmf; - RECT32 bbox; - WORD inch; - DWORD reserved; - WORD checksum; -}; -#else -struct mfPLACEABLEHEADER { - DWORD key; - HANDLE hmf; - RECT bbox; - WORD inch; - DWORD reserved; - WORD checksum; -}; -#endif - -/* - * Pass filename of existing non-placeable metafile, and bounding box. - * Adds a placeable metafile header, sets the mapping mode to anisotropic, - * and sets the window origin and extent to mimic the MM_TEXT mapping mode. - * - */ - -bool wxMakeMetaFilePlaceable(const wxString& filename, float scale) -{ - return wxMakeMetaFilePlaceable(filename, 0, 0, 0, 0, scale, FALSE); -} - -bool wxMakeMetaFilePlaceable(const wxString& filename, int x1, int y1, int x2, int y2, float scale, bool useOriginAndExtent) -{ - // I'm not sure if this is the correct way of suggesting a scale - // to the client application, but it's the only way I can find. - int unitsPerInch = (int)(576/scale); - - mfPLACEABLEHEADER header; - header.key = 0x9AC6CDD7L; - header.hmf = 0; - header.bbox.left = (int)(x1); - header.bbox.top = (int)(y1); - header.bbox.right = (int)(x2); - header.bbox.bottom = (int)(y2); - header.inch = unitsPerInch; - header.reserved = 0; - - // Calculate checksum - WORD *p; - mfPLACEABLEHEADER *pMFHead = &header; - for (p =(WORD *)pMFHead,pMFHead -> checksum = 0; - p < (WORD *)&pMFHead ->checksum; ++p) - pMFHead ->checksum ^= *p; - - FILE *fd = fopen((char *)(const char *)filename, "rb"); - if (!fd) return FALSE; - - char tempFileBuf[256]; - wxGetTempFileName("mf", tempFileBuf); - FILE *fHandle = fopen(tempFileBuf, "wb"); - if (!fHandle) - return FALSE; - fwrite((void *)&header, sizeof(unsigned char), sizeof(mfPLACEABLEHEADER), fHandle); - - // Calculate origin and extent - int originX = x1; - int originY = y1; - int extentX = x2 - x1; - int extentY = (y2 - y1); - - // Read metafile header and write - METAHEADER metaHeader; - fread((void *)&metaHeader, sizeof(unsigned char), sizeof(metaHeader), fd); - - if (useOriginAndExtent) - metaHeader.mtSize += 15; - else - metaHeader.mtSize += 5; - - fwrite((void *)&metaHeader, sizeof(unsigned char), sizeof(metaHeader), fHandle); - - // Write SetMapMode, SetWindowOrigin and SetWindowExt records - char modeBuffer[8]; - char originBuffer[10]; - char extentBuffer[10]; - METARECORD *modeRecord = (METARECORD *)&modeBuffer; - - METARECORD *originRecord = (METARECORD *)&originBuffer; - METARECORD *extentRecord = (METARECORD *)&extentBuffer; - - modeRecord->rdSize = 4; - modeRecord->rdFunction = META_SETMAPMODE; - modeRecord->rdParm[0] = MM_ANISOTROPIC; - - originRecord->rdSize = 5; - originRecord->rdFunction = META_SETWINDOWORG; - originRecord->rdParm[0] = originY; - originRecord->rdParm[1] = originX; - - extentRecord->rdSize = 5; - extentRecord->rdFunction = META_SETWINDOWEXT; - extentRecord->rdParm[0] = extentY; - extentRecord->rdParm[1] = extentX; - - fwrite((void *)modeBuffer, sizeof(char), 8, fHandle); - - if (useOriginAndExtent) - { - fwrite((void *)originBuffer, sizeof(char), 10, fHandle); - fwrite((void *)extentBuffer, sizeof(char), 10, fHandle); - } - - int ch = -2; - while (ch != EOF) - { - ch = getc(fd); - if (ch != EOF) - { - putc(ch, fHandle); - } - } - fclose(fHandle); - fclose(fd); - wxRemoveFile(filename); - wxCopyFile(tempFileBuf, filename); - wxRemoveFile(tempFileBuf); - return TRUE; -} - -#endif - diff --git a/src/stubs/minifram.cpp b/src/stubs/minifram.cpp deleted file mode 100644 index 4f6f5e5fcb..0000000000 --- a/src/stubs/minifram.cpp +++ /dev/null @@ -1,22 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: minifram.cpp -// Purpose: wxMiniFrame. Optional; identical to wxFrame if not supported. -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "minifram.h" -#endif - -#include "wx/minifram.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxMiniFrame, wxFrame) -#endif - - diff --git a/src/stubs/msgdlg.cpp b/src/stubs/msgdlg.cpp deleted file mode 100644 index aeaa9bac7a..0000000000 --- a/src/stubs/msgdlg.cpp +++ /dev/null @@ -1,36 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: msgdlg.cpp -// Purpose: wxMessageDialog -// Author: AUTHOR -// Modified by: -// Created: 04/01/98 -// RCS-ID: $$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "msgdlg.h" -#endif - -#include "wx/stubs/msgdlg.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_CLASS(wxMessageDialog, wxDialog) -#endif - -wxMessageDialog::wxMessageDialog(wxWindow *parent, const wxString& message, const wxString& caption, - long style, const wxPoint& pos) -{ - m_caption = caption; - m_message = message; - m_dialogStyle = style; - m_parent = parent; -} - -int wxMessageDialog::ShowModal() -{ - // TODO - return wxID_CANCEL; -} - diff --git a/src/stubs/notebook.cpp b/src/stubs/notebook.cpp deleted file mode 100644 index 312dd0f3d3..0000000000 --- a/src/stubs/notebook.cpp +++ /dev/null @@ -1,377 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: notebook.cpp -// Purpose: implementation of wxNotebook -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -// ============================================================================ -// declarations -// ============================================================================ - -// ---------------------------------------------------------------------------- -// headers -// ---------------------------------------------------------------------------- -#ifdef __GNUG__ -#pragma implementation "notebook.h" -#endif - -#include -#include -#include -#include - -// ---------------------------------------------------------------------------- -// macros -// ---------------------------------------------------------------------------- - -// check that the page index is valid -#define IS_VALID_PAGE(nPage) (((nPage) >= 0) && ((nPage) < GetPageCount())) - -// ---------------------------------------------------------------------------- -// event table -// ---------------------------------------------------------------------------- - -#if !USE_SHARED_LIBRARIES -BEGIN_EVENT_TABLE(wxNotebook, wxControl) - EVT_NOTEBOOK_PAGE_CHANGED(-1, wxNotebook::OnSelChange) - - EVT_SIZE(wxNotebook::OnSize) - EVT_SET_FOCUS(wxNotebook::OnSetFocus) - EVT_NAVIGATION_KEY(wxNotebook::OnNavigationKey) -END_EVENT_TABLE() - -IMPLEMENT_DYNAMIC_CLASS(wxNotebook, wxControl) -IMPLEMENT_DYNAMIC_CLASS(wxNotebookEvent, wxCommandEvent) -#endif - -// ============================================================================ -// implementation -// ============================================================================ - -// ---------------------------------------------------------------------------- -// wxNotebook construction -// ---------------------------------------------------------------------------- - -// common part of all ctors -void wxNotebook::Init() -{ - m_pImageList = NULL; - m_nSelection = -1; -} - -// default for dynamic class -wxNotebook::wxNotebook() -{ - Init(); -} - -// the same arguments as for wxControl -wxNotebook::wxNotebook(wxWindow *parent, - wxWindowID id, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - Init(); - - Create(parent, id, pos, size, style, name); -} - -// Create() function -bool wxNotebook::Create(wxWindow *parent, - wxWindowID id, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - // base init - SetName(name); - SetParent(parent); - - m_windowId = id == -1 ? NewControlId() : id; - - // style - m_windowStyle = style; - - if ( parent != NULL ) - parent->AddChild(this); - - // TODO - - return FALSE; -} - -// dtor -wxNotebook::~wxNotebook() -{ -} - -// ---------------------------------------------------------------------------- -// wxNotebook accessors -// ---------------------------------------------------------------------------- -int wxNotebook::GetPageCount() const -{ - return m_aPages.Count(); -} - -int wxNotebook::GetRowCount() const -{ - // TODO - return 0; -} - -int wxNotebook::SetSelection(int nPage) -{ - wxASSERT( IS_VALID_PAGE(nPage) ); - - ChangePage(m_nSelection, nPage); - - // TODO - return 0; -} - -void wxNotebook::AdvanceSelection(bool bForward) -{ - int nSel = GetSelection(); - int nMax = GetPageCount() - 1; - if ( bForward ) - SetSelection(nSel == nMax ? 0 : nSel + 1); - else - SetSelection(nSel == 0 ? nMax : nSel - 1); -} - -bool wxNotebook::SetPageText(int nPage, const wxString& strText) -{ - wxASSERT( IS_VALID_PAGE(nPage) ); - - // TODO - return FALSE; -} - -wxString wxNotebook::GetPageText(int nPage) const -{ - wxASSERT( IS_VALID_PAGE(nPage) ); - - // TODO - return wxString(""); -} - -int wxNotebook::GetPageImage(int nPage) const -{ - wxASSERT( IS_VALID_PAGE(nPage) ); - - // TODO - return 0; -} - -bool wxNotebook::SetPageImage(int nPage, int nImage) -{ - wxASSERT( IS_VALID_PAGE(nPage) ); - - // TODO - return FALSE; -} - -void wxNotebook::SetImageList(wxImageList* imageList) -{ - m_pImageList = imageList; - // TODO -} - -// ---------------------------------------------------------------------------- -// wxNotebook operations -// ---------------------------------------------------------------------------- - -// remove one page from the notebook -bool wxNotebook::DeletePage(int nPage) -{ - wxCHECK( IS_VALID_PAGE(nPage), FALSE ); - - // TODO: delete native widget page - - delete m_aPages[nPage]; - m_aPages.Remove(nPage); - - return TRUE; -} - -// remove one page from the notebook, without deleting the window -bool wxNotebook::RemovePage(int nPage) -{ - wxCHECK( IS_VALID_PAGE(nPage), FALSE ); - - m_aPages.Remove(nPage); - - return TRUE; -} - -// remove all pages -bool wxNotebook::DeleteAllPages() -{ - // TODO: delete native widget pages - - int nPageCount = GetPageCount(); - int nPage; - for ( nPage = 0; nPage < nPageCount; nPage++ ) - delete m_aPages[nPage]; - - m_aPages.Clear(); - - return TRUE; -} - -// add a page to the notebook -bool wxNotebook::AddPage(wxNotebookPage *pPage, - const wxString& strText, - bool bSelect, - int imageId) -{ - return InsertPage(GetPageCount(), pPage, strText, bSelect, imageId); -} - -// same as AddPage() but does it at given position -bool wxNotebook::InsertPage(int nPage, - wxNotebookPage *pPage, - const wxString& strText, - bool bSelect, - int imageId) -{ - wxASSERT( pPage != NULL ); - wxCHECK( IS_VALID_PAGE(nPage) || nPage == GetPageCount(), FALSE ); - - // TODO: insert native widget page - - // save the pointer to the page - m_aPages.Insert(pPage, nPage); - - // some page must be selected: either this one or the first one if there is - // still no selection - if ( bSelect ) - m_nSelection = nPage; - else if ( m_nSelection == -1 ) - m_nSelection = 0; - - return TRUE; -} - -// ---------------------------------------------------------------------------- -// wxNotebook callbacks -// ---------------------------------------------------------------------------- - -// @@@ OnSize() is used for setting the font when it's called for the first -// time because doing it in ::Create() doesn't work (for unknown reasons) -void wxNotebook::OnSize(wxSizeEvent& event) -{ - static bool s_bFirstTime = TRUE; - if ( s_bFirstTime ) { - // TODO: any first-time-size processing. - s_bFirstTime = FALSE; - } - - // TODO: all this may or may not be necessary for your platform - - // emulate page change (it's esp. important to do it first time because - // otherwise our page would stay invisible) - int nSel = m_nSelection; - m_nSelection = -1; - SetSelection(nSel); - - // fit the notebook page to the tab control's display area - int w, h; - GetSize(&w, &h); - - unsigned int nCount = m_aPages.Count(); - for ( unsigned int nPage = 0; nPage < nCount; nPage++ ) { - wxNotebookPage *pPage = m_aPages[nPage]; - pPage->SetSize(0, 0, w, h); - if ( pPage->GetAutoLayout() ) - pPage->Layout(); - } - - // Processing continues to next OnSize - event.Skip(); -} - -void wxNotebook::OnSelChange(wxNotebookEvent& event) -{ - // is it our tab control? - if ( event.GetEventObject() == this ) - ChangePage(event.GetOldSelection(), event.GetSelection()); - - // we want to give others a chance to process this message as well - event.Skip(); -} - -void wxNotebook::OnSetFocus(wxFocusEvent& event) -{ - // set focus to the currently selected page if any - if ( m_nSelection != -1 ) - m_aPages[m_nSelection]->SetFocus(); - - event.Skip(); -} - -void wxNotebook::OnNavigationKey(wxNavigationKeyEvent& event) -{ - if ( event.IsWindowChange() ) { - // change pages - AdvanceSelection(event.GetDirection()); - } - else { - // pass to the parent - if ( GetParent() ) { - event.SetCurrentFocus(this); - GetParent()->ProcessEvent(event); - } - } -} - -// ---------------------------------------------------------------------------- -// wxNotebook base class virtuals -// ---------------------------------------------------------------------------- - -// override these 2 functions to do nothing: everything is done in OnSize - -void wxNotebook::SetConstraintSizes(bool /* recurse */) -{ - // don't set the sizes of the pages - their correct size is not yet known - wxControl::SetConstraintSizes(FALSE); -} - -bool wxNotebook::DoPhase(int /* nPhase */) -{ - return TRUE; -} - -void wxNotebook::Command(wxCommandEvent& event) -{ - wxFAIL_MSG("wxNotebook::Command not implemented"); -} - -// ---------------------------------------------------------------------------- -// wxNotebook helper functions -// ---------------------------------------------------------------------------- - -// hide the currently active panel and show the new one -void wxNotebook::ChangePage(int nOldSel, int nSel) -{ - wxASSERT( nOldSel != nSel ); // impossible - - if ( nOldSel != -1 ) { - m_aPages[nOldSel]->Show(FALSE); - } - - wxNotebookPage *pPage = m_aPages[nSel]; - pPage->Show(TRUE); - pPage->SetFocus(); - - m_nSelection = nSel; -} - diff --git a/src/stubs/palette.cpp b/src/stubs/palette.cpp deleted file mode 100644 index f8db96f8d0..0000000000 --- a/src/stubs/palette.cpp +++ /dev/null @@ -1,82 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: palette.cpp -// Purpose: wxPalette -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "palette.h" -#endif - -#include "wx/palette.h" - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxPalette, wxGDIObject) -#endif - -/* - * Palette - * - */ - -wxPaletteRefData::wxPaletteRefData() -{ - // TODO -} - -wxPaletteRefData::~wxPaletteRefData() -{ - // TODO -} - -wxPalette::wxPalette() -{ -} - -wxPalette::wxPalette(int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue) -{ - Create(n, red, green, blue); -} - -wxPalette::~wxPalette() -{ -} - -bool wxPalette::Create(int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue) -{ - UnRef(); - - m_refData = new wxPaletteRefData; - - // TODO - - return FALSE; -} - -int wxPalette::GetPixel(const unsigned char red, const unsigned char green, const unsigned char blue) const -{ - if ( !m_refData ) - return FALSE; - - // TODO - return FALSE; -} - -bool wxPalette::GetRGB(int index, unsigned char *red, unsigned char *green, unsigned char *blue) const -{ - if ( !m_refData ) - return FALSE; - - if (index < 0 || index > 255) - return FALSE; - - // TODO - return FALSE; -} - - diff --git a/src/stubs/pen.cpp b/src/stubs/pen.cpp deleted file mode 100644 index 1e3ced2a3a..0000000000 --- a/src/stubs/pen.cpp +++ /dev/null @@ -1,202 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: pen.cpp -// Purpose: wxPen -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "pen.h" -#endif - -#include "wx/setup.h" -#include "wx/utils.h" -#include "wx/pen.h" - -#if !USE_SHARED_LIBRARIES -IMPLEMENT_DYNAMIC_CLASS(wxPen, wxGDIObject) -#endif - -wxPenRefData::wxPenRefData() -{ - m_style = wxSOLID; - m_width = 1; - m_join = wxJOIN_ROUND ; - m_cap = wxCAP_ROUND ; - m_nbDash = 0 ; - m_dash = 0 ; -/* TODO: null data - m_hPen = 0; -*/ -} - -wxPenRefData::wxPenRefData(const wxPenRefData& data) -{ - m_style = data.m_style; - m_width = data.m_width; - m_join = data.m_join; - m_cap = data.m_cap; - m_nbDash = data.m_nbDash; - m_dash = data.m_dash; - m_colour = data.m_colour; -/* TODO: null data - m_hPen = 0; -*/ -} - -wxPenRefData::~wxPenRefData() -{ - // TODO: delete data -} - -// Pens - -wxPen::wxPen() -{ - if ( wxThePenList ) - wxThePenList->AddPen(this); -} - -wxPen::~wxPen() -{ - if (wxThePenList) - wxThePenList->RemovePen(this); -} - -// Should implement Create -wxPen::wxPen(const wxColour& col, int Width, int Style) -{ - m_refData = new wxPenRefData; - - M_PENDATA->m_colour = col; - M_PENDATA->m_width = Width; - M_PENDATA->m_style = Style; - M_PENDATA->m_join = wxJOIN_ROUND ; - M_PENDATA->m_cap = wxCAP_ROUND ; - M_PENDATA->m_nbDash = 0 ; - M_PENDATA->m_dash = 0 ; - - RealizeResource(); - - if ( wxThePenList ) - wxThePenList->AddPen(this); -} - -wxPen::wxPen(const wxBitmap& stipple, int Width) -{ - m_refData = new wxPenRefData; - - M_PENDATA->m_stipple = stipple; - M_PENDATA->m_width = Width; - M_PENDATA->m_style = wxSTIPPLE; - M_PENDATA->m_join = wxJOIN_ROUND ; - M_PENDATA->m_cap = wxCAP_ROUND ; - M_PENDATA->m_nbDash = 0 ; - M_PENDATA->m_dash = 0 ; - - RealizeResource(); - - if ( wxThePenList ) - wxThePenList->AddPen(this); -} - -void wxPen::Unshare() -{ - // Don't change shared data - if (!m_refData) - { - m_refData = new wxPenRefData(); - } - else - { - wxPenRefData* ref = new wxPenRefData(*(wxPenRefData*)m_refData); - UnRef(); - m_refData = ref; - } -} - -void wxPen::SetColour(const wxColour& col) -{ - Unshare(); - - M_PENDATA->m_colour = col; - - RealizeResource(); -} - -void wxPen::SetColour(unsigned char r, unsigned char g, unsigned char b) -{ - Unshare(); - - M_PENDATA->m_colour.Set(r, g, b); - - RealizeResource(); -} - -void wxPen::SetWidth(int Width) -{ - Unshare(); - - M_PENDATA->m_width = Width; - - RealizeResource(); -} - -void wxPen::SetStyle(int Style) -{ - Unshare(); - - M_PENDATA->m_style = Style; - - RealizeResource(); -} - -void wxPen::SetStipple(const wxBitmap& Stipple) -{ - Unshare(); - - M_PENDATA->m_stipple = Stipple; - M_PENDATA->m_style = wxSTIPPLE; - - RealizeResource(); -} - -void wxPen::SetDashes(int nb_dashes, const wxDash *Dash) -{ - Unshare(); - - M_PENDATA->m_nbDash = nb_dashes; - M_PENDATA->m_dash = (wxDash *)Dash; - - RealizeResource(); -} - -void wxPen::SetJoin(int Join) -{ - Unshare(); - - M_PENDATA->m_join = Join; - - RealizeResource(); -} - -void wxPen::SetCap(int Cap) -{ - Unshare(); - - M_PENDATA->m_cap = Cap; - - RealizeResource(); -} - -bool wxPen::RealizeResource() -{ - // TODO: create actual pen - return FALSE; -} - - diff --git a/src/stubs/print.cpp b/src/stubs/print.cpp deleted file mode 100644 index 61fd6e7e99..0000000000 --- a/src/stubs/print.cpp +++ /dev/null @@ -1,82 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: print.cpp -// Purpose: Print framework -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "print.h" -#endif - -#include "wx/stubs/print.h" -#include "wx/stubs/printdlg.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxPrinter, wxPrinterBase) -IMPLEMENT_CLASS(wxPrintPreview, wxPrintPreviewBase) -#endif - -/* - * Printer - */ - -wxPrinter::wxPrinter(wxPrintData *data): - wxPrinterBase(data) -{ -} - -wxPrinter::~wxPrinter() -{ -} - -bool wxPrinter::Print(wxWindow *parent, wxPrintout *printout, bool prompt) -{ - // TODO. See wxPostScriptPrinter::Print for hints. - return FALSE; -} - -bool wxPrinter::PrintDialog(wxWindow *parent) -{ - wxPrintDialog dialog(parent, & m_printData); - return (dialog.ShowModal() == wxID_OK); -} - -bool wxPrinter::Setup(wxWindow *parent) -{ - wxPrintDialog dialog(parent, & m_printData); - dialog.GetPrintData().SetSetupDialog(TRUE); - return (dialog.ShowModal() == wxID_OK); -} - -/* - * Print preview - */ - -wxPrintPreview::wxPrintPreview(wxPrintout *printout, wxPrintout *printoutForPrinting, wxPrintData *data): - wxPrintPreviewBase(printout, printoutForPrinting, data) -{ - DetermineScaling(); -} - -wxPrintPreview::~wxPrintPreview() -{ -} - -bool wxPrintPreview::Print(bool interactive) -{ - if (!m_printPrintout) - return FALSE; - wxPrinter printer(&m_printData); - return printer.Print(m_previewFrame, m_printPrintout, interactive); -} - -void wxPrintPreview::DetermineScaling() -{ - // TODO -} - diff --git a/src/stubs/printdlg.cpp b/src/stubs/printdlg.cpp deleted file mode 100644 index eae3b95568..0000000000 --- a/src/stubs/printdlg.cpp +++ /dev/null @@ -1,115 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: printdlg.cpp -// Purpose: wxPrintDialog, wxPageSetupDialog -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "printdlg.h" -#endif - -#include "wx/object.h" -#include "wx/stubs/printdlg.h" -#include "wx/dcprint.h" - -// Use generic page setup dialog: use your own native one if one exists. -#include "wx/generic/prntdlgg.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxPrintDialog, wxDialog) -IMPLEMENT_CLASS(wxPageSetupDialog, wxDialog) -#endif - -wxPrintDialog::wxPrintDialog(): - wxDialog() -{ - m_dialogParent = NULL; - m_printerDC = NULL; -} - -wxPrintDialog::wxPrintDialog(wxWindow *p, wxPrintData* data): - wxDialog() -{ - Create(p, data); -} - -bool wxPrintDialog::Create(wxWindow *p, wxPrintData* data) -{ - m_dialogParent = p; - m_printerDC = NULL; - - if ( data ) - m_printData = *data; - - return TRUE; -} - -wxPrintDialog::~wxPrintDialog() -{ - if (m_printerDC) - delete m_printerDC; -} - -int wxPrintDialog::ShowModal() -{ - // TODO - return wxID_CANCEL; -} - -wxDC *wxPrintDialog::GetPrintDC() -{ - if (m_printerDC) - { - wxDC* dc = m_printerDC; - m_printerDC = NULL; - return dc; - } - else - return NULL; -} - -/* - * wxPageSetupDialog - */ - -wxPageSetupDialog::wxPageSetupDialog(): - wxDialog() -{ - m_dialogParent = NULL; -} - -wxPageSetupDialog::wxPageSetupDialog(wxWindow *p, wxPageSetupData *data): - wxDialog() -{ - Create(p, data); -} - -bool wxPageSetupDialog::Create(wxWindow *p, wxPageSetupData *data) -{ - m_dialogParent = p; - - if (data) - m_pageSetupData = (*data); - - return TRUE; -} - -wxPageSetupDialog::~wxPageSetupDialog() -{ -} - -int wxPageSetupDialog::ShowModal() -{ - // Uses generic page setup dialog - wxGenericPageSetupDialog *genericPageSetupDialog = new wxGenericPageSetupDialog(GetParent(), & m_pageSetupData); - int ret = genericPageSetupDialog->ShowModal(); - m_pageSetupData = genericPageSetupDialog->GetPageSetupData(); - genericPageSetupDialog->Close(TRUE); - return ret; -} - diff --git a/src/stubs/radiobox.cpp b/src/stubs/radiobox.cpp deleted file mode 100644 index da582d0e52..0000000000 --- a/src/stubs/radiobox.cpp +++ /dev/null @@ -1,194 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: radiobox.cpp -// Purpose: wxRadioBox -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "radiobox.h" -#endif - -#include "wx/radiobox.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxRadioBox, wxControl) -#endif - -// Radio box item -wxRadioBox::wxRadioBox() -{ - m_selectedButton = -1; - m_noItems = 0; - m_noRowsOrCols = 0; - m_majorDim = 0 ; -} - -bool wxRadioBox::Create(wxWindow *parent, wxWindowID id, const wxString& title, - const wxPoint& pos, const wxSize& size, - int n, const wxString choices[], - int majorDim, long style, - const wxValidator& val, const wxString& name) -{ - m_selectedButton = -1; - m_noItems = n; - - SetName(name); - SetValidator(val); - - parent->AddChild(this); - - m_windowStyle = (long&)style; - - if (id == -1) - m_windowId = NewControlId(); - else - m_windowId = id; - - m_noRowsOrCols = majorDim; - - if (majorDim==0) - m_majorDim = n ; - else - m_majorDim = majorDim ; - - - // TODO create radiobox - return FALSE; -} - - -wxRadioBox::~wxRadioBox() -{ - // TODO -} - -wxString wxRadioBox::GetLabel(int item) const -{ - // TODO - return wxString(""); -} - -void wxRadioBox::SetLabel(int item, const wxString& label) -{ - // TODO -} - -int wxRadioBox::FindString(const wxString& s) const -{ - // TODO - return -1; -} - -void wxRadioBox::SetSelection(int n) -{ - if ((n < 0) || (n >= m_noItems)) - return; - // TODO - - m_selectedButton = n; -} - -// Get single selection, for single choice list items -int wxRadioBox::GetSelection() const -{ - return m_selectedButton; -} - -// Find string for position -wxString wxRadioBox::GetString(int n) const -{ - // TODO - return wxString(""); -} - -void wxRadioBox::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -void wxRadioBox::GetSize(int *width, int *height) const -{ - // TODO -} - -void wxRadioBox::GetPosition(int *x, int *y) const -{ - // TODO -} - -wxString wxRadioBox::GetLabel() const -{ - // TODO - return wxString(""); -} - -void wxRadioBox::SetLabel(const wxString& label) -{ - // TODO -} - -void wxRadioBox::SetFocus() -{ - // TODO -} - -bool wxRadioBox::Show(bool show) -{ - // TODO - return FALSE; -} - -// Enable a specific button -void wxRadioBox::Enable(int item, bool enable) -{ - // TODO -} - -// Enable all controls -void wxRadioBox::Enable(bool enable) -{ - wxControl::Enable(enable); - - // TODO -} - -// Show a specific button -void wxRadioBox::Show(int item, bool show) -{ - // TODO -} - -// For single selection items only -wxString wxRadioBox::GetStringSelection () const -{ - int sel = GetSelection (); - if (sel > -1) - return this->GetString (sel); - else - return wxString(""); -} - -bool wxRadioBox::SetStringSelection (const wxString& s) -{ - int sel = FindString (s); - if (sel > -1) - { - SetSelection (sel); - return TRUE; - } - else - return FALSE; -} - -void wxRadioBox::Command (wxCommandEvent & event) -{ - SetSelection (event.m_commandInt); - ProcessCommand (event); -} - - diff --git a/src/stubs/radiobut.cpp b/src/stubs/radiobut.cpp deleted file mode 100644 index 65baab38b6..0000000000 --- a/src/stubs/radiobut.cpp +++ /dev/null @@ -1,68 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: radiobut.cpp -// Purpose: wxRadioButton -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "radiobut.h" -#endif - -#include "wx/radiobut.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxRadioButton, wxControl) -#endif - -bool wxRadioButton::Create(wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); - SetValidator(validator); - - if (parent) parent->AddChild(this); - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - m_windowStyle = style ; - - // TODO create radiobutton - return FALSE; -} - -void wxRadioButton::SetLabel(const wxString& label) -{ - // TODO -} - -void wxRadioButton::SetValue(bool value) -{ - // TODO -} - -// Get single selection, for single choice list items -bool wxRadioButton::GetValue() const -{ - // TODO - return FALSE; -} - -void wxRadioButton::Command (wxCommandEvent & event) -{ - SetValue ( (event.m_commandInt != 0) ); - ProcessCommand (event); -} - - diff --git a/src/stubs/region.cpp b/src/stubs/region.cpp deleted file mode 100644 index c71d4c605a..0000000000 --- a/src/stubs/region.cpp +++ /dev/null @@ -1,363 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// File: region.cpp -// Purpose: Region class -// Author: Markus Holzem/Julian Smart/AUTHOR -// Created: Fri Oct 24 10:46:34 MET 1997 -// RCS-ID: $Id$ -// Copyright: (c) 1997 Markus Holzem/Julian Smart/AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "region.h" -#endif - -#include "wx/region.h" -#include "wx/gdicmn.h" - -#if !USE_SHARED_LIBRARY - IMPLEMENT_DYNAMIC_CLASS(wxRegion, wxGDIObject) - IMPLEMENT_DYNAMIC_CLASS(wxRegionIterator, wxObject) -#endif - -//----------------------------------------------------------------------------- -// wxRegionRefData implementation -//----------------------------------------------------------------------------- - -class WXDLLEXPORT wxRegionRefData : public wxGDIRefData { -public: - wxRegionRefData() - { - } - - wxRegionRefData(const wxRegionRefData& data) - { - // TODO - } - - ~wxRegionRefData() - { - // TODO - } -}; - - -//----------------------------------------------------------------------------- -// wxRegion -//----------------------------------------------------------------------------- - -/*! - * Create an empty region. - */ -wxRegion::wxRegion() -{ - m_refData = new wxRegionRefData; - // TODO create empty region -} - -wxRegion::wxRegion(long x, long y, long w, long h) -{ - m_refData = new wxRegionRefData; - // TODO create rect region -} - -wxRegion::wxRegion(const wxPoint& topLeft, const wxPoint& bottomRight) -{ - m_refData = new wxRegionRefData; - // TODO create rect region -} - -wxRegion::wxRegion(const wxRect& rect) -{ - m_refData = new wxRegionRefData; - // TODO create rect region -} - -/*! - * Destroy the region. - */ -wxRegion::~wxRegion() -{ - // m_refData unrefed in ~wxObject -} - -//----------------------------------------------------------------------------- -//# Modify region -//----------------------------------------------------------------------------- - -//! Clear current region -void wxRegion::Clear() -{ - UnRef(); -} - -//! Combine rectangle (x, y, w, h) with this. -bool wxRegion::Combine(long x, long y, long width, long height, wxRegionOp op) -{ - // Don't change shared data - if (!m_refData) { - m_refData = new wxRegionRefData(); - } else if (m_refData->GetRefCount() > 1) { - wxRegionRefData* ref = (wxRegionRefData*)m_refData; - UnRef(); - m_refData = new wxRegionRefData(*ref); - } - // If ref count is 1, that means it's 'ours' anyway so no action. - - // TODO create rect region - - int mode = 0; // TODO platform-specific code - switch (op) - { - case wxRGN_AND: - // TODO - break ; - case wxRGN_OR: - // TODO - break ; - case wxRGN_XOR: - // TODO - break ; - case wxRGN_DIFF: - // TODO - break ; - case wxRGN_COPY: - default: - // TODO - break ; - } - - // TODO do combine region - - return FALSE; -} - -//! Union /e region with this. -bool wxRegion::Combine(const wxRegion& region, wxRegionOp op) -{ - if (region.Empty()) - return FALSE; - - // Don't change shared data - if (!m_refData) { - m_refData = new wxRegionRefData(); - } else if (m_refData->GetRefCount() > 1) { - wxRegionRefData* ref = (wxRegionRefData*)m_refData; - UnRef(); - m_refData = new wxRegionRefData(*ref); - } - - int mode = 0; // TODO platform-specific code - switch (op) - { - case wxRGN_AND: - // TODO - break ; - case wxRGN_OR: - // TODO - break ; - case wxRGN_XOR: - // TODO - break ; - case wxRGN_DIFF: - // TODO - break ; - case wxRGN_COPY: - default: - // TODO - break ; - } - - // TODO combine region - - return FALSE; -} - -bool wxRegion::Combine(const wxRect& rect, wxRegionOp op) -{ - return Combine(rect.GetLeft(), rect.GetTop(), rect.GetWidth(), rect.GetHeight(), op); -} - -//----------------------------------------------------------------------------- -//# Information on region -//----------------------------------------------------------------------------- - -// Outer bounds of region -void wxRegion::GetBox(long& x, long& y, long&w, long &h) const -{ - if (m_refData) { - // TODO get box - } else { - x = y = w = h = 0; - } -} - -wxRect wxRegion::GetBox() const -{ - long x, y, w, h; - GetBox(x, y, w, h); - return wxRect(x, y, w, h); -} - -// Is region empty? -bool wxRegion::Empty() const -{ - // TODO - return FALSE; -} - -//----------------------------------------------------------------------------- -//# Tests -//----------------------------------------------------------------------------- - -// Does the region contain the point (x,y)? -wxRegionContain wxRegion::Contains(long x, long y) const -{ - if (!m_refData) - return wxOutRegion; - - // TODO. Return wxInRegion if within region. - if (0) - return wxInRegion; - return wxOutRegion; -} - -// Does the region contain the point pt? -wxRegionContain wxRegion::Contains(const wxPoint& pt) const -{ - if (!m_refData) - return wxOutRegion; - - // TODO. Return wxInRegion if within region. - if (0) - return wxInRegion; - else - return wxOutRegion; -} - -// Does the region contain the rectangle (x, y, w, h)? -wxRegionContain wxRegion::Contains(long x, long y, long w, long h) const -{ - if (!m_refData) - return wxOutRegion; - - // TODO. Return wxInRegion if within region. - if (0) - return wxInRegion; - else - return wxOutRegion; -} - -// Does the region contain the rectangle rect -wxRegionContain wxRegion::Contains(const wxRect& rect) const -{ - if (!m_refData) - return wxOutRegion; - - long x, y, w, h; - x = rect.x; - y = rect.y; - w = rect.GetWidth(); - h = rect.GetHeight(); - return Contains(x, y, w, h); -} - -/////////////////////////////////////////////////////////////////////////////// -// // -// wxRegionIterator // -// // -/////////////////////////////////////////////////////////////////////////////// - -/*! - * Initialize empty iterator - */ -wxRegionIterator::wxRegionIterator() : m_current(0), m_numRects(0), m_rects(NULL) -{ -} - -wxRegionIterator::~wxRegionIterator() -{ - if (m_rects) - delete[] m_rects; -} - -/*! - * Initialize iterator for region - */ -wxRegionIterator::wxRegionIterator(const wxRegion& region) -{ - m_rects = NULL; - - Reset(region); -} - -/*! - * Reset iterator for a new /e region. - */ -void wxRegionIterator::Reset(const wxRegion& region) -{ - m_current = 0; - m_region = region; - - if (m_rects) - delete[] m_rects; - - m_rects = NULL; - - if (m_region.Empty()) - m_numRects = 0; - else - { - // TODO create m_rects and fill with rectangles for this region - m_numRects = 0; - } -} - -/*! - * Increment iterator. The rectangle returned is the one after the - * incrementation. - */ -void wxRegionIterator::operator ++ () -{ - if (m_current < m_numRects) - ++m_current; -} - -/*! - * Increment iterator. The rectangle returned is the one before the - * incrementation. - */ -void wxRegionIterator::operator ++ (int) -{ - if (m_current < m_numRects) - ++m_current; -} - -long wxRegionIterator::GetX() const -{ - if (m_current < m_numRects) - return m_rects[m_current].x; - return 0; -} - -long wxRegionIterator::GetY() const -{ - if (m_current < m_numRects) - return m_rects[m_current].y; - return 0; -} - -long wxRegionIterator::GetW() const -{ - if (m_current < m_numRects) - return m_rects[m_current].width ; - return 0; -} - -long wxRegionIterator::GetH() const -{ - if (m_current < m_numRects) - return m_rects[m_current].height; - return 0; -} - diff --git a/src/stubs/scrolbar.cpp b/src/stubs/scrolbar.cpp deleted file mode 100644 index 54df181166..0000000000 --- a/src/stubs/scrolbar.cpp +++ /dev/null @@ -1,78 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: scrolbar.cpp -// Purpose: wxScrollBar -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "scrolbar.h" -#endif - -#include "wx/scrolbar.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxScrollBar, wxControl) - -#endif - -// Scrollbar -bool wxScrollBar::Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - if (!parent) - return FALSE; - parent->AddChild(this); - SetName(name); - SetValidator(validator); - - m_windowStyle = style; - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - // TODO create scrollbar - return TRUE; -} - -wxScrollBar::~wxScrollBar() -{ -} - -void wxScrollBar::SetThumbPosition(int viewStart) -{ - // TODO -} - -int wxScrollBar::GetThumbPosition() const -{ - // TODO - return 0; -} - -void wxScrollBar::SetScrollbar(int position, int thumbSize, int range, int pageSize, - bool refresh) -{ - m_viewSize = pageSize; - m_pageSize = thumbSize; - m_objectSize = range; - - // TODO -} - - -void wxScrollBar::Command(wxCommandEvent& event) -{ - SetThumbPosition(event.m_commandInt); - ProcessCommand(event); -} - diff --git a/src/stubs/settings.cpp b/src/stubs/settings.cpp deleted file mode 100644 index 2beda5c2a6..0000000000 --- a/src/stubs/settings.cpp +++ /dev/null @@ -1,176 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: settings.cpp -// Purpose: wxSettings -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "settings.h" -#endif - -#include "wx/settings.h" - -wxColour wxSystemSettings::GetSystemColour(int index) -{ - // TODO - return wxColour(); -} - -wxFont wxSystemSettings::GetSystemFont(int index) -{ - // TODO - switch (index) - { - case wxSYS_DEVICE_DEFAULT_FONT: - { - break; - } - case wxSYS_DEFAULT_PALETTE: - { - break; - } - case wxSYS_SYSTEM_FIXED_FONT: - { - break; - } - case wxSYS_SYSTEM_FONT: - { - break; - } - default: - case wxSYS_DEFAULT_GUI_FONT: - { - break; - } - } - - return wxFont(); -} - -// Get a system metric, e.g. scrollbar size -int wxSystemSettings::GetSystemMetric(int index) -{ - switch ( index) - { - case wxSYS_MOUSE_BUTTONS: - // TODO - return 0; - case wxSYS_BORDER_X: - // TODO - return 0; - case wxSYS_BORDER_Y: - // TODO - return 0; - case wxSYS_CURSOR_X: - // TODO - return 0; - case wxSYS_CURSOR_Y: - // TODO - return 0; - case wxSYS_DCLICK_X: - // TODO - return 0; - case wxSYS_DCLICK_Y: - // TODO - return 0; - case wxSYS_DRAG_X: - // TODO - return 0; - case wxSYS_DRAG_Y: - // TODO - return 0; - case wxSYS_EDGE_X: - // TODO - return 0; - case wxSYS_EDGE_Y: - // TODO - return 0; - case wxSYS_HSCROLL_ARROW_X: - // TODO - return 0; - case wxSYS_HSCROLL_ARROW_Y: - // TODO - return 0; - case wxSYS_HTHUMB_X: - // TODO - return 0; - case wxSYS_ICON_X: - // TODO - return 0; - case wxSYS_ICON_Y: - // TODO - return 0; - case wxSYS_ICONSPACING_X: - // TODO - return 0; - case wxSYS_ICONSPACING_Y: - // TODO - return 0; - case wxSYS_WINDOWMIN_X: - // TODO - return 0; - case wxSYS_WINDOWMIN_Y: - // TODO - return 0; - case wxSYS_SCREEN_X: - // TODO - return 0; - case wxSYS_SCREEN_Y: - // TODO - return 0; - case wxSYS_FRAMESIZE_X: - // TODO - return 0; - case wxSYS_FRAMESIZE_Y: - // TODO - return 0; - case wxSYS_SMALLICON_X: - // TODO - return 0; - case wxSYS_SMALLICON_Y: - // TODO - return 0; - case wxSYS_HSCROLL_Y: - // TODO - return 0; - case wxSYS_VSCROLL_X: - // TODO - return 0; - case wxSYS_VSCROLL_ARROW_X: - // TODO - return 0; - case wxSYS_VSCROLL_ARROW_Y: - // TODO - return 0; - case wxSYS_VTHUMB_Y: - // TODO - return 0; - case wxSYS_CAPTION_Y: - // TODO - return 0; - case wxSYS_MENU_Y: - // TODO - return 0; - case wxSYS_NETWORK_PRESENT: - // TODO - return 0; - case wxSYS_PENWINDOWS_PRESENT: - // TODO - return 0; - case wxSYS_SHOW_SOUNDS: - // TODO - return 0; - case wxSYS_SWAP_BUTTONS: - // TODO - return 0; - default: - return 0; - } - return 0; -} - diff --git a/src/stubs/slider.cpp b/src/stubs/slider.cpp deleted file mode 100644 index c9952342a9..0000000000 --- a/src/stubs/slider.cpp +++ /dev/null @@ -1,190 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: slider.cpp -// Purpose: wxSlider -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "slider.h" -#endif - -#include "wx/slider.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxSlider, wxControl) - -BEGIN_EVENT_TABLE(wxSlider, wxControl) -END_EVENT_TABLE() -#endif - - - -// Slider -wxSlider::wxSlider() -{ - m_pageSize = 1; - m_lineSize = 1; - m_rangeMax = 0; - m_rangeMin = 0; - m_tickFreq = 0; -} - -bool wxSlider::Create(wxWindow *parent, wxWindowID id, - int value, int minValue, int maxValue, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - SetName(name); - SetValidator(validator); - - if (parent) parent->AddChild(this); - - m_lineSize = 1; - m_windowStyle = style; - m_tickFreq = 0; - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - m_rangeMax = maxValue; - m_rangeMin = minValue; - - m_pageSize = (int)((maxValue-minValue)/10); - - // TODO create slider - - return FALSE; -} - -wxSlider::~wxSlider() -{ -} - -int wxSlider::GetValue() const -{ - // TODO - return 0; -} - -void wxSlider::SetValue(int value) -{ - // TODO -} - -void wxSlider::GetSize(int *width, int *height) const -{ - // TODO -} - -void wxSlider::GetPosition(int *x, int *y) const -{ - // TODO -} - -void wxSlider::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -void wxSlider::SetRange(int minValue, int maxValue) -{ - m_rangeMin = minValue; - m_rangeMax = maxValue; - - // TODO -} - -// For trackbars only -void wxSlider::SetTickFreq(int n, int pos) -{ - // TODO - m_tickFreq = n; -} - -void wxSlider::SetPageSize(int pageSize) -{ - // TODO - m_pageSize = pageSize; -} - -int wxSlider::GetPageSize() const -{ - return m_pageSize; -} - -void wxSlider::ClearSel() -{ - // TODO -} - -void wxSlider::ClearTicks() -{ - // TODO -} - -void wxSlider::SetLineSize(int lineSize) -{ - m_lineSize = lineSize; - // TODO -} - -int wxSlider::GetLineSize() const -{ - // TODO - return 0; -} - -int wxSlider::GetSelEnd() const -{ - // TODO - return 0; -} - -int wxSlider::GetSelStart() const -{ - // TODO - return 0; -} - -void wxSlider::SetSelection(int minPos, int maxPos) -{ - // TODO -} - -void wxSlider::SetThumbLength(int len) -{ - // TODO -} - -int wxSlider::GetThumbLength() const -{ - // TODO - return 0; -} - -void wxSlider::SetTick(int tickPos) -{ - // TODO -} - -void wxSlider::Command (wxCommandEvent & event) -{ - SetValue (event.GetInt()); - ProcessCommand (event); -} - -bool wxSlider::Show(bool show) -{ - // TODO - return TRUE; -} - diff --git a/src/stubs/spinbutt.cpp b/src/stubs/spinbutt.cpp deleted file mode 100644 index cbea725592..0000000000 --- a/src/stubs/spinbutt.cpp +++ /dev/null @@ -1,78 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: spinbutt.cpp -// Purpose: wxSpinButton -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "spinbutt.h" -#endif - -#include "wx/spinbutt.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxSpinButton, wxControl) -#endif - -wxSpinButton::wxSpinButton() -{ - m_min = 0; - m_max = 100; -} - -bool wxSpinButton::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, - long style, const wxString& name) -{ - SetName(name); - - m_windowStyle = style; - - SetParent(parent); - - m_min = 0; - m_max = 100; - - m_windowId = (id == -1) ? NewControlId() : id; - - // TODO create spin button - return FALSE; -} - -wxSpinButton::~wxSpinButton() -{ -} - -// Attributes -//////////////////////////////////////////////////////////////////////////// - -int wxSpinButton::GetValue() const -{ - // TODO - return 0; -} - -void wxSpinButton::SetValue(int val) -{ - // TODO -} - -void wxSpinButton::SetRange(int minVal, int maxVal) -{ - m_min = minVal; - m_max = maxVal; - // TODO -} - -// Spin event -IMPLEMENT_DYNAMIC_CLASS(wxSpinEvent, wxScrollEvent) - -wxSpinEvent::wxSpinEvent(wxEventType commandType, int id): - wxScrollEvent(commandType, id) -{ -} - diff --git a/src/stubs/statbmp.cpp b/src/stubs/statbmp.cpp deleted file mode 100644 index a67c558465..0000000000 --- a/src/stubs/statbmp.cpp +++ /dev/null @@ -1,59 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: statbmp.cpp -// Purpose: wxStaticBitmap -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "statbmp.h" -#endif - -#include "wx/statbmp.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxStaticBitmap, wxControl) -#endif - -/* - * wxStaticBitmap - */ - -bool wxStaticBitmap::Create(wxWindow *parent, wxWindowID id, - const wxBitmap& bitmap, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - m_messageBitmap = bitmap; - SetName(name); - if (parent) parent->AddChild(this); - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - m_windowStyle = style; - - // TODO: create static bitmap control - return FALSE; -} - -void wxStaticBitmap::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -void wxStaticBitmap::SetBitmap(const wxBitmap& bitmap) -{ - m_messageBitmap = bitmap; - - // TODO: redraw bitmap -} - diff --git a/src/stubs/statbox.cpp b/src/stubs/statbox.cpp deleted file mode 100644 index b239dc738c..0000000000 --- a/src/stubs/statbox.cpp +++ /dev/null @@ -1,62 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: statbox.cpp -// Purpose: wxStaticBox -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "statbox.h" -#endif - -#include "wx/statbox.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxStaticBox, wxControl) - -BEGIN_EVENT_TABLE(wxStaticBox, wxControl) - EVT_ERASE_BACKGROUND(wxStaticBox::OnEraseBackground) -END_EVENT_TABLE() - -#endif - -/* - * Static box - */ - -bool wxStaticBox::Create(wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - SetName(name); - - if (parent) parent->AddChild(this); - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - m_windowStyle = style; - - // TODO: create static box - return FALSE; -} - -void wxStaticBox::SetLabel(const wxString& label) -{ - // TODO -} - -void wxStaticBox::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - diff --git a/src/stubs/stattext.cpp b/src/stubs/stattext.cpp deleted file mode 100644 index 3b19c7184d..0000000000 --- a/src/stubs/stattext.cpp +++ /dev/null @@ -1,60 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: stattext.cpp -// Purpose: wxStaticText -// Author: AUTHOR -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "stattext.h" -#endif - -#include "wx/app.h" -#include "wx/stattext.h" - -#include - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxStaticText, wxControl) -#endif - -bool wxStaticText::Create(wxWindow *parent, wxWindowID id, - const wxString& label, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - SetName(name); - if (parent) parent->AddChild(this); - - SetBackgroundColour(parent->GetBackgroundColour()) ; - SetForegroundColour(parent->GetForegroundColour()) ; - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - m_windowStyle = style; - - SetFont(parent->GetFont()); - - // TODO - return FALSE; -} - -void wxStaticText::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -void wxStaticText::SetLabel(const wxString& label) -{ - // TODO -} - diff --git a/src/stubs/statusbr.cpp b/src/stubs/statusbr.cpp deleted file mode 100644 index dff1ddec34..0000000000 --- a/src/stubs/statusbr.cpp +++ /dev/null @@ -1,162 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: statbar.cpp -// Purpose: native implementation of wxStatusBar (optional) -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 AUTHOR -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "statusbr.h" -#endif - -// ---------------------------------------------------------------------------- -// headers -// ---------------------------------------------------------------------------- - -#include "wx/stubs/statusbr.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxStatusBarXX, wxStatusBar); - -BEGIN_EVENT_TABLE(wxStatusBarXX, wxStatusBar) - EVT_SIZE(wxStatusBarXX::OnSize) -END_EVENT_TABLE() -#endif //USE_SHARED_LIBRARY - - -// ============================================================================ -// implementation -// ============================================================================ - -// ---------------------------------------------------------------------------- -// wxStatusBarXX class -// ---------------------------------------------------------------------------- - -wxStatusBarXX::wxStatusBarXX() -{ - SetParent(NULL); -} - -wxStatusBarXX::wxStatusBarXX(wxWindow *parent, wxWindowID id, long style) -{ - Create(parent, id, style); -} - -bool wxStatusBarXX::Create(wxWindow *parent, wxWindowID id, long style) -{ - SetParent(parent); - - if (id == -1) - m_windowId = NewControlId(); - else - m_windowId = id; - - // TODO: create status bar - return FALSE; -} - -void wxStatusBarXX::SetFieldsCount(int nFields, const int widths[]) -{ - wxASSERT( (nFields > 0) && (nFields < 255) ); - - m_nFields = nFields; - - CopyFieldsWidth(widths); - SetFieldsWidth(); -} - -void wxStatusBarXX::SetStatusWidths(int n, const int widths[]) -{ - wxASSERT( n == m_nFields ); - - CopyFieldsWidth(widths); - SetFieldsWidth(); -} - -void wxStatusBarXX::CopyFieldsWidth(const int widths[]) -{ - if (widths && !m_statusWidths) - m_statusWidths = new int[m_nFields]; - - if ( widths != NULL ) { - for ( int i = 0; i < m_nFields; i++ ) - m_statusWidths[i] = widths[i]; - } - else { - delete [] m_statusWidths; - m_statusWidths = NULL; - } -} - -void wxStatusBarXX::SetFieldsWidth() -{ - int *pWidths = new int[m_nFields]; - - int nWindowWidth, y; - GetClientSize(&nWindowWidth, &y); - - if ( m_statusWidths == NULL ) { - // default: all fields have the same width - int nWidth = nWindowWidth / m_nFields; - for ( int i = 0; i < m_nFields; i++ ) - pWidths[i] = (i + 1) * nWidth; - } - else { - // -1 doesn't mean the same thing for wxWindows and Win32, recalc - int nTotalWidth = 0, - nVarCount = 0, - i; - for ( i = 0; i < m_nFields; i++ ) { - if ( m_statusWidths[i] == -1 ) - nVarCount++; - else - nTotalWidth += m_statusWidths[i]; - } - - if ( nVarCount == 0 ) { - // wrong! at least one field must be of variable width - wxFAIL; - - nVarCount++; - } - - int nVarWidth = (nWindowWidth - nTotalWidth) / nVarCount; - - // do fill the array - int nCurPos = 0; - for ( i = 0; i < m_nFields; i++ ) { - if ( m_statusWidths[i] == -1 ) - nCurPos += nVarWidth; - else - nCurPos += m_statusWidths[i]; - pWidths[i] = nCurPos; - } - } - - // TODO: set widths - - delete [] pWidths; -} - -void wxStatusBarXX::SetStatusText(const wxString& strText, int nField) -{ - // TODO -} - -wxString wxStatusBarXX::GetStatusText(int nField) const -{ - wxASSERT( (nField > -1) && (nField < m_nFields) ); - - // TODO - return wxString(""); -} - -void wxStatusBarXX::OnSize(wxSizeEvent& event) -{ - // adjust fields widths to the new size - SetFieldsWidth(); -} diff --git a/src/stubs/tabctrl.cpp b/src/stubs/tabctrl.cpp deleted file mode 100644 index b3b45a72d1..0000000000 --- a/src/stubs/tabctrl.cpp +++ /dev/null @@ -1,201 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: tabctrl.cpp -// Purpose: wxTabCtrl -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "tabctrl.h" -#endif - -#include "wx/control.h" -#include "wx/tabctrl.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxTabCtrl, wxControl) - -BEGIN_EVENT_TABLE(wxTabCtrl, wxControl) -END_EVENT_TABLE() -#endif - -wxTabCtrl::wxTabCtrl() -{ - m_imageList = NULL; -} - -bool wxTabCtrl::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, - long style, const wxString& name) -{ - m_imageList = NULL; - - SetName(name); - - m_windowStyle = style; - - SetParent(parent); - - m_windowId = (id < 0 ? NewControlId() : id); - - if (parent) parent->AddChild(this); - - // TODO: create tab control - return FALSE; -} - -wxTabCtrl::~wxTabCtrl() -{ -} - -void wxTabCtrl::Command(wxCommandEvent& event) -{ -} - -// Delete all items -bool wxTabCtrl::DeleteAllItems() -{ - // TODO - return FALSE; -} - -// Delete an item -bool wxTabCtrl::DeleteItem(int item) -{ - // TODO - return FALSE; -} - -// Get the selection -int wxTabCtrl::GetSelection() const -{ - // TODO - return 0; -} - -// Get the tab with the current keyboard focus -int wxTabCtrl::GetCurFocus() const -{ - // TODO - return 0; -} - -// Get the associated image list -wxImageList* wxTabCtrl::GetImageList() const -{ - return m_imageList; -} - -// Get the number of items -int wxTabCtrl::GetItemCount() const -{ - // TODO - return 0; -} - -// Get the rect corresponding to the tab -bool wxTabCtrl::GetItemRect(int item, wxRect& wxrect) const -{ - // TODO - return FALSE; -} - -// Get the number of rows -int wxTabCtrl::GetRowCount() const -{ - // TODO - return 0; -} - -// Get the item text -wxString wxTabCtrl::GetItemText(int item) const -{ - // TODO - return wxString(""); -} - -// Get the item image -int wxTabCtrl::GetItemImage(int item) const -{ - // TODO - return 0; -} - -// Get the item data -void* wxTabCtrl::GetItemData(int item) const -{ - // TODO - return NULL; -} - -// Hit test -int wxTabCtrl::HitTest(const wxPoint& pt, long& flags) -{ - // TODO - return 0; -} - -// Insert an item -bool wxTabCtrl::InsertItem(int item, const wxString& text, int imageId, void* data) -{ - // TODO - return FALSE; -} - -// Set the selection -int wxTabCtrl::SetSelection(int item) -{ - // TODO - return 0; -} - -// Set the image list -void wxTabCtrl::SetImageList(wxImageList* imageList) -{ - // TODO -} - -// Set the text for an item -bool wxTabCtrl::SetItemText(int item, const wxString& text) -{ - // TODO - return FALSE; -} - -// Set the image for an item -bool wxTabCtrl::SetItemImage(int item, int image) -{ - // TODO - return FALSE; -} - -// Set the data for an item -bool wxTabCtrl::SetItemData(int item, void* data) -{ - // TODO - return FALSE; -} - -// Set the size for a fixed-width tab control -void wxTabCtrl::SetItemSize(const wxSize& size) -{ - // TODO -} - -// Set the padding between tabs -void wxTabCtrl::SetPadding(const wxSize& padding) -{ - // TODO -} - -// Tab event -IMPLEMENT_DYNAMIC_CLASS(wxTabEvent, wxCommandEvent) - -wxTabEvent::wxTabEvent(wxEventType commandType, int id): - wxCommandEvent(commandType, id) -{ -} - diff --git a/src/stubs/taskbar.cpp b/src/stubs/taskbar.cpp deleted file mode 100644 index 5c91250cf0..0000000000 --- a/src/stubs/taskbar.cpp +++ /dev/null @@ -1,70 +0,0 @@ -///////////////////////////////////////////////////////////////////////// -// File: taskbar.cpp -// Purpose: Implements wxTaskBarIcon class for manipulating icons on -// the task bar. Optional. -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "taskbar.h" -#endif - -#include - -wxTaskBarIcon::wxTaskBarIcon() -{ - // TODO -} - -wxTaskBarIcon::~wxTaskBarIcon() -{ - // TODO -} - -// Operations -bool wxTaskBarIcon::SetIcon(const wxIcon& icon, const wxString& tooltip) -{ - // TODO - return FALSE; -} - -bool wxTaskBarIcon::RemoveIcon() -{ - // TODO - return FALSE; -} - -// Overridables -void wxTaskBarIcon::OnMouseMove() -{ -} - -void wxTaskBarIcon::OnLButtonDown() -{ -} - -void wxTaskBarIcon::OnLButtonUp() -{ -} - -void wxTaskBarIcon::OnRButtonDown() -{ -} - -void wxTaskBarIcon::OnRButtonUp() -{ -} - -void wxTaskBarIcon::OnLButtonDClick() -{ -} - -void wxTaskBarIcon::OnRButtonDClick() -{ -} - diff --git a/src/stubs/textctrl.cpp b/src/stubs/textctrl.cpp deleted file mode 100644 index 6083ace113..0000000000 --- a/src/stubs/textctrl.cpp +++ /dev/null @@ -1,438 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: textctrl.cpp -// Purpose: wxTextCtrl -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "textctrl.h" -#endif - -#include -#include -#include - -#include "wx/textctrl.h" -#include "wx/settings.h" -#include "wx/filefn.h" -#include "wx/utils.h" - -#if defined(__BORLANDC__) && !defined(__WIN32__) -#include -#else -#ifndef __GNUWIN32__ -#include -#endif -#endif - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxTextCtrl, wxControl) - -BEGIN_EVENT_TABLE(wxTextCtrl, wxControl) - EVT_DROP_FILES(wxTextCtrl::OnDropFiles) -END_EVENT_TABLE() -#endif - -// Text item -wxTextCtrl::wxTextCtrl() -#ifndef NO_TEXT_WINDOW_STREAM - :streambuf() -#endif -{ - m_fileName = ""; -} - -bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id, - const wxString& value, - const wxPoint& pos, - const wxSize& size, long style, - const wxValidator& validator, - const wxString& name) -{ - m_fileName = ""; - SetName(name); - SetValidator(validator); - if (parent) parent->AddChild(this); - - m_windowStyle = style; - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - return TRUE; -} - -wxString wxTextCtrl::GetValue() const -{ - // TODO - return wxString(""); -} - -void wxTextCtrl::SetValue(const wxString& value) -{ - // TODO -} - -void wxTextCtrl::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -// Clipboard operations -void wxTextCtrl::Copy() -{ - // TODO -} - -void wxTextCtrl::Cut() -{ - // TODO -} - -void wxTextCtrl::Paste() -{ - // TODO -} - -void wxTextCtrl::SetEditable(bool editable) -{ - // TODO -} - -void wxTextCtrl::SetInsertionPoint(long pos) -{ - // TODO -} - -void wxTextCtrl::SetInsertionPointEnd() -{ - long pos = GetLastPosition(); - SetInsertionPoint(pos); -} - -long wxTextCtrl::GetInsertionPoint() const -{ - // TODO - return 0; -} - -long wxTextCtrl::GetLastPosition() const -{ - // TODO - return 0; -} - -void wxTextCtrl::Replace(long from, long to, const wxString& value) -{ - // TODO -} - -void wxTextCtrl::Remove(long from, long to) -{ - // TODO -} - -void wxTextCtrl::SetSelection(long from, long to) -{ - // TODO -} - -bool wxTextCtrl::LoadFile(const wxString& file) -{ - if (!wxFileExists(file)) - return FALSE; - - m_fileName = file; - - Clear(); - - ifstream input((char*) (const char*) file, ios::nocreate | ios::in); - - if (!input.bad()) - { - struct stat stat_buf; - if (stat(file, &stat_buf) < 0) - return FALSE; - // This may need to be a bigger buffer than the file size suggests, - // if it's a UNIX file. Give it an extra 1000 just in case. - char *tmp_buffer = (char*)malloc((size_t)(stat_buf.st_size+1+1000)); - long no_lines = 0; - long pos = 0; - while (!input.eof() && input.peek() != EOF) - { - input.getline(wxBuffer, 500); - int len = strlen(wxBuffer); - wxBuffer[len] = 13; - wxBuffer[len+1] = 10; - wxBuffer[len+2] = 0; - strcpy(tmp_buffer+pos, wxBuffer); - pos += strlen(wxBuffer); - no_lines++; - } - - // TODO add line - - free(tmp_buffer); - - return TRUE; - } - return FALSE; -} - -// If file is null, try saved file name first -// Returns TRUE if succeeds. -bool wxTextCtrl::SaveFile(const wxString& file) -{ - wxString theFile(file); - if (theFile == "") - theFile = m_fileName; - if (theFile == "") - return FALSE; - m_fileName = theFile; - - ofstream output((char*) (const char*) theFile); - if (output.bad()) - return FALSE; - - // TODO get and save text - - return FALSE; -} - -void wxTextCtrl::WriteText(const wxString& text) -{ - // TODO write text to control -} - -void wxTextCtrl::Clear() -{ - // TODO -} - -bool wxTextCtrl::IsModified() const -{ - // TODO - return FALSE; -} - -// Makes 'unmodified' -void wxTextCtrl::DiscardEdits() -{ - // TODO -} - -int wxTextCtrl::GetNumberOfLines() const -{ - // TODO - return 0; -} - -long wxTextCtrl::XYToPosition(long x, long y) const -{ - // TODO - return 0; -} - -void wxTextCtrl::PositionToXY(long pos, long *x, long *y) const -{ - // TODO -} - -void wxTextCtrl::ShowPosition(long pos) -{ - // TODO -} - -int wxTextCtrl::GetLineLength(long lineNo) const -{ - // TODO - return 0; -} - -wxString wxTextCtrl::GetLineText(long lineNo) const -{ - // TODO - return wxString(""); -} - -/* - * Text item - */ - -void wxTextCtrl::Command(wxCommandEvent & event) -{ - SetValue (event.GetString()); - ProcessCommand (event); -} - -void wxTextCtrl::OnDropFiles(wxDropFilesEvent& event) -{ - // By default, load the first file into the text window. - if (event.GetNumberOfFiles() > 0) - { - LoadFile(event.GetFiles()[0]); - } -} - -// The streambuf code was partly taken from chapter 3 by Jerry Schwarz of -// AT&T's "C++ Lanuage System Release 3.0 Library Manual" - Stein Somers - -//========================================================================= -// Called then the buffer is full (gcc 2.6.3) -// or when "endl" is output (Borland 4.5) -//========================================================================= -// Class declaration using multiple inheritance doesn't work properly for -// Borland. See note in wb_text.h. -#ifndef NO_TEXT_WINDOW_STREAM -int wxTextCtrl::overflow(int c) -{ - // Make sure there is a holding area - if ( allocate()==EOF ) - { - wxError("Streambuf allocation failed","Internal error"); - return EOF; - } - - // Verify that there are no characters in get area - if ( gptr() && gptr() < egptr() ) - { - wxError("Who's trespassing my get area?","Internal error"); - return EOF; - } - - // Reset get area - setg(0,0,0); - - // Make sure there is a put area - if ( ! pptr() ) - { -/* This doesn't seem to be fatal so comment out error message */ -// wxError("Put area not opened","Internal error"); - setp( base(), base() ); - } - - // Determine how many characters have been inserted but no consumed - int plen = pptr() - pbase(); - - // Now Jerry relies on the fact that the buffer is at least 2 chars - // long, but the holding area "may be as small as 1" ??? - // And we need an additional \0, so let's keep this inefficient but - // safe copy. - - // If c!=EOF, it is a character that must also be comsumed - int xtra = c==EOF? 0 : 1; - - // Write temporary C-string to wxTextWindow - { - char *txt = new char[plen+xtra+1]; - memcpy(txt, pbase(), plen); - txt[plen] = (char)c; // append c - txt[plen+xtra] = '\0'; // append '\0' or overwrite c - // If the put area already contained \0, output will be truncated there - WriteText(txt); - delete[] txt; - } - - // Reset put area - setp(pbase(), epptr()); - -#if defined(__WATCOMC__) - return __NOT_EOF; -#elif defined(zapeof) // HP-UX (all cfront based?) - return zapeof(c); -#else - return c!=EOF ? c : 0; // this should make everybody happy -#endif -} - -//========================================================================= -// called then "endl" is output (gcc) or then explicit sync is done (Borland) -//========================================================================= -int wxTextCtrl::sync() -{ - // Verify that there are no characters in get area - if ( gptr() && gptr() < egptr() ) - { - wxError("Who's trespassing my get area?","Internal error"); - return EOF; - } - - if ( pptr() && pptr() > pbase() ) return overflow(EOF); - - return 0; -/* OLD CODE - int len = pptr() - pbase(); - char *txt = new char[len+1]; - strncpy(txt, pbase(), len); - txt[len] = '\0'; - (*this) << txt; - setp(pbase(), epptr()); - delete[] txt; - return 0; -*/ -} - -//========================================================================= -// Should not be called by a "ostream". Used by a "istream" -//========================================================================= -int wxTextCtrl::underflow() -{ - return EOF; -} -#endif - -wxTextCtrl& wxTextCtrl::operator<<(const wxString& s) -{ - WriteText(s); - return *this; -} - -wxTextCtrl& wxTextCtrl::operator<<(float f) -{ - wxString str; - str.Printf("%.2f", f); - WriteText(str); - return *this; -} - -wxTextCtrl& wxTextCtrl::operator<<(double d) -{ - wxString str; - str.Printf("%.2f", d); - WriteText(str); - return *this; -} - -wxTextCtrl& wxTextCtrl::operator<<(int i) -{ - wxString str; - str.Printf("%d", i); - WriteText(str); - return *this; -} - -wxTextCtrl& wxTextCtrl::operator<<(long i) -{ - wxString str; - str.Printf("%ld", i); - WriteText(str); - return *this; -} - -wxTextCtrl& wxTextCtrl::operator<<(const char c) -{ - char buf[2]; - - buf[0] = c; - buf[1] = 0; - WriteText(buf); - return *this; -} - diff --git a/src/stubs/thread.cpp b/src/stubs/thread.cpp deleted file mode 100644 index e12b45e63b..0000000000 --- a/src/stubs/thread.cpp +++ /dev/null @@ -1,261 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: thread.cpp -// Purpose: wxThread Implementation. For Unix ports, see e.g. src/gtk -// Author: Original from Wolfram Gloger/Guilhem Lavaux -// Modified by: -// Created: 04/22/98 -// RCS-ID: $Id$ -// Copyright: (c) Wolfram Gloger (1996, 1997); Guilhem Lavaux (1998) -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "thread.h" -#endif - -#include "wx/module.h" -#include "wx/thread.h" -#include "wx/utils.h" - -enum thread_state { - STATE_IDLE = 0, - STATE_RUNNING, - STATE_CANCELED, - STATE_EXITED -}; - -///////////////////////////////////////////////////////////////////////////// -// Static variables -///////////////////////////////////////////////////////////////////////////// - -wxMutex *wxMainMutex; // controls access to all GUI functions - -///////////////////////////////////////////////////////////////////////////// -// Windows implementation -///////////////////////////////////////////////////////////////////////////// - -class wxMutexInternal { -public: - // TODO: internal mutex handle -}; - -wxMutex::wxMutex() -{ - p_internal = new wxMutexInternal; - // TODO: create internal mutext handle - m_locked = 0; -} - -wxMutex::~wxMutex() -{ - if (m_locked > 0) - wxDebugMsg("wxMutex warning: freeing a locked mutex (%d locks)\n", m_locked); - // TODO: free internal mutext handle -} - -wxMutexError wxMutex::Lock() -{ - // TODO - m_locked++; - return wxMUTEX_NO_ERROR; -} - -wxMutexError wxMutex::TryLock() -{ - // TODO - m_locked++; - return wxMUTEX_NO_ERROR; -} - -wxMutexError wxMutex::Unlock() -{ - if (m_locked > 0) - m_locked--; - - // TODO - return wxMUTEX_NO_ERROR; -} - -class wxConditionInternal { -public: - // TODO: internal handle - int waiters; -}; - -wxCondition::wxCondition() -{ - p_internal = new wxConditionInternal; - // TODO: create internal handle - p_internal->waiters = 0; -} - -wxCondition::~wxCondition() -{ - // TODO: destroy internal handle -} - -void wxCondition::Wait(wxMutex& mutex) -{ - mutex.Unlock(); - p_internal->waiters++; - // TODO wait here - p_internal->waiters--; - mutex.Lock(); -} - -bool wxCondition::Wait(wxMutex& mutex, unsigned long sec, - unsigned long nsec) -{ - mutex.Unlock(); - p_internal->waiters++; - - // TODO wait here - p_internal->waiters--; - mutex.Lock(); - - return FALSE; -} - -void wxCondition::Signal() -{ - // TODO -} - -void wxCondition::Broadcast() -{ - // TODO -} - -class wxThreadInternal { -public: - // TODO -}; - -wxThreadError wxThread::Create() -{ - // TODO - return wxTHREAD_NO_ERROR; -} - -wxThreadError wxThread::Destroy() -{ - // TODO - return wxTHREAD_NO_ERROR; -} - -wxThreadError wxThread::Pause() -{ - // TODO - return wxTHREAD_NO_ERROR; -} - -wxThreadError wxThread::Resume() -{ - // TODO - return wxTHREAD_NO_ERROR; -} - -void wxThread::Exit(void *status) -{ - // TODO -} - -void wxThread::SetPriority(int prio) -{ - // TODO -} - -int wxThread::GetPriority() const -{ - // TODO - return 0; -} - -void wxThread::DeferDestroy(bool on) -{ - // TODO -} - -void wxThread::TestDestroy() -{ - // TODO -} - -void *wxThread::Join() -{ - // TODO - return (void*) NULL; -} - -unsigned long wxThread::GetID() const -{ - // TODO - return 0; -} - -/* -wxThread *wxThread::GetThreadFromID(unsigned long id) -{ - // TODO - return NULL; -} -*/ - -bool wxThread::IsAlive() const -{ - // TODO - return FALSE; -} - -bool wxThread::IsRunning() const -{ - // TODO - return FALSE; -} - -bool wxThread::IsMain() -{ - // TODO - return FALSE; -} - -wxThread::wxThread() -{ - p_internal = new wxThreadInternal(); - - // TODO -} - -wxThread::~wxThread() -{ - Destroy(); - Join(); - delete p_internal; -} - -// The default callback just joins the thread and throws away the result. -void wxThread::OnExit() -{ - Join(); -} - -// Automatic initialization -class wxThreadModule : public wxModule { - DECLARE_DYNAMIC_CLASS(wxThreadModule) -public: - virtual bool OnInit() { - /* TODO p_mainid = GetCurrentThread(); */ - wxMainMutex = new wxMutex(); - wxMainMutex->Lock(); - return TRUE; - } - - // Global cleanup - virtual void OnExit() { - wxMainMutex->Unlock(); - delete wxMainMutex; - } -}; - -IMPLEMENT_DYNAMIC_CLASS(wxThreadModule, wxModule) - diff --git a/src/stubs/timer.cpp b/src/stubs/timer.cpp deleted file mode 100644 index 5262040cf6..0000000000 --- a/src/stubs/timer.cpp +++ /dev/null @@ -1,52 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: timer.cpp -// Purpose: wxTimer implementation -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "timer.h" -#endif - -#include "wx/timer.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_ABSTRACT_CLASS(wxTimer, wxObject) -#endif - -wxTimer::wxTimer() -{ - m_milli = 0 ; - m_id = 0; - m_oneShot = FALSE; -} - -wxTimer::~wxTimer() -{ - Stop(); -} - -bool wxTimer::Start(int milliseconds,bool mode) -{ - m_oneShot = mode ; - if (milliseconds <= 0) - return FALSE; - - m_milli = milliseconds; - - // TODO: set the timer going. - return FALSE; -} - -void wxTimer::Stop() -{ - m_id = 0 ; - m_milli = 0 ; -} - - diff --git a/src/stubs/toolbar.cpp b/src/stubs/toolbar.cpp deleted file mode 100644 index 3cb859e366..0000000000 --- a/src/stubs/toolbar.cpp +++ /dev/null @@ -1,145 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: toolbar.cpp -// Purpose: wxToolBar -// Author: AUTHOR -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "toolbar.h" -#endif - -#include "wx/wx.h" -#include "wx/toolbar.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxToolBar, wxToolBarBase) - -BEGIN_EVENT_TABLE(wxToolBar, wxToolBarBase) -END_EVENT_TABLE() -#endif - -wxToolBar::wxToolBar() -{ - m_maxWidth = -1; - m_maxHeight = -1; - m_defaultWidth = 24; - m_defaultHeight = 22; - // TODO -} - -bool wxToolBar::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, - long style, const wxString& name) -{ - m_maxWidth = -1; - m_maxHeight = -1; - - m_defaultWidth = 24; - m_defaultHeight = 22; - SetName(name); - - m_windowStyle = style; - - SetParent(parent); - - if (parent) parent->AddChild(this); - - // TODO create toolbar - - return FALSE; -} - -wxToolBar::~wxToolBar() -{ - // TODO -} - -bool wxToolBar::CreateTools() -{ - if (m_tools.Number() == 0) - return FALSE; - - // TODO - return FALSE; -} - -void wxToolBar::SetToolBitmapSize(const wxSize& size) -{ - m_defaultWidth = size.x; m_defaultHeight = size.y; - // TODO -} - -wxSize wxToolBar::GetMaxSize() const -{ - // TODO - return wxSize(0, 0); -} - -// The button size is bigger than the bitmap size -wxSize wxToolBar::GetToolSize() const -{ - // TODO - return wxSize(m_defaultWidth + 8, m_defaultHeight + 7); -} - -void wxToolBar::EnableTool(int toolIndex, bool enable) -{ - wxNode *node = m_tools.Find((long)toolIndex); - if (node) - { - wxToolBarTool *tool = (wxToolBarTool *)node->Data(); - tool->m_enabled = enable; - // TODO enable button - } -} - -void wxToolBar::ToggleTool(int toolIndex, bool toggle) -{ - wxNode *node = m_tools.Find((long)toolIndex); - if (node) - { - wxToolBarTool *tool = (wxToolBarTool *)node->Data(); - if (tool->m_isToggle) - { - tool->m_toggleState = toggle; - // TODO: set toggle state - } - } -} - -void wxToolBar::ClearTools() -{ - // TODO - wxToolBarBase::ClearTools(); -} - -// If pushedBitmap is NULL, a reversed version of bitmap is -// created and used as the pushed/toggled image. -// If toggle is TRUE, the button toggles between the two states. - -wxToolBarTool *wxToolBar::AddTool(int index, const wxBitmap& bitmap, const wxBitmap& pushedBitmap, - bool toggle, long xPos, long yPos, wxObject *clientData, const wxString& helpString1, const wxString& helpString2) -{ - wxToolBarTool *tool = new wxToolBarTool(index, bitmap, wxNullBitmap, toggle, xPos, yPos, helpString1, helpString2); - tool->m_clientData = clientData; - - if (xPos > -1) - tool->m_x = xPos; - else - tool->m_x = m_xMargin; - - if (yPos > -1) - tool->m_y = yPos; - else - tool->m_y = m_yMargin; - - tool->SetSize(GetDefaultButtonWidth(), GetDefaultButtonHeight()); - - m_tools.Append((long)index, tool); - return tool; -} - diff --git a/src/stubs/treectrl.cpp b/src/stubs/treectrl.cpp deleted file mode 100644 index 137a885dbf..0000000000 --- a/src/stubs/treectrl.cpp +++ /dev/null @@ -1,418 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: treectrl.cpp -// Purpose: wxTreeCtrl. See also Robert's generic wxTreeCtrl. -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "treectrl.h" -#endif - -#include "wx/stubs/textctrl.h" -#include "wx/stubs/treectrl.h" - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxTreeCtrl, wxControl) -IMPLEMENT_DYNAMIC_CLASS(wxTreeItem, wxObject) - -#endif - -wxTreeCtrl::wxTreeCtrl() -{ - m_imageListNormal = NULL; - m_imageListState = NULL; - m_textCtrl = NULL; -} - -bool wxTreeCtrl::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, - long style, const wxValidator& validator, const wxString& name) -{ - SetName(name); - SetValidator(validator); - - m_imageListNormal = NULL; - m_imageListState = NULL; - m_textCtrl = NULL; - - m_windowStyle = style; - - SetParent(parent); - - m_windowId = (id == -1) ? NewControlId() : id; - - if (parent) parent->AddChild(this); - - // TODO create tree control - - return FALSE; -} - -wxTreeCtrl::~wxTreeCtrl() -{ - if (m_textCtrl) - { - delete m_textCtrl; - } -} - -// Attributes -int wxTreeCtrl::GetCount() const -{ - // TODO - return 0; -} - -int wxTreeCtrl::GetIndent() const -{ - // TODO - return 0; -} - -void wxTreeCtrl::SetIndent(int indent) -{ - // TODO -} - -wxImageList *wxTreeCtrl::GetImageList(int which) const -{ - if ( which == wxIMAGE_LIST_NORMAL ) - { - return m_imageListNormal; - } - else if ( which == wxIMAGE_LIST_STATE ) - { - return m_imageListState; - } - return NULL; -} - -void wxTreeCtrl::SetImageList(wxImageList *imageList, int which) -{ - if ( which == wxIMAGE_LIST_NORMAL ) - { - m_imageListNormal = imageList; - } - else if ( which == wxIMAGE_LIST_STATE ) - { - m_imageListState = imageList; - } - // TODO -} - -long wxTreeCtrl::GetNextItem(long item, int code) const -{ - // TODO - return 0; -} - -bool wxTreeCtrl::ItemHasChildren(long item) const -{ - // TODO - return FALSE; -} - -long wxTreeCtrl::GetChild(long item) const -{ - // TODO - return 0; -} - -long wxTreeCtrl::GetParent(long item) const -{ - // TODO - return 0; -} - -long wxTreeCtrl::GetFirstVisibleItem() const -{ - // TODO - return 0; -} - -long wxTreeCtrl::GetNextVisibleItem(long item) const -{ - // TODO - return 0; -} - -long wxTreeCtrl::GetSelection() const -{ - // TODO - return 0; -} - -long wxTreeCtrl::GetRootItem() const -{ - // TODO - return 0; -} - -bool wxTreeCtrl::GetItem(wxTreeItem& info) const -{ - // TODO - return FALSE; -} - -bool wxTreeCtrl::SetItem(wxTreeItem& info) -{ - // TODO - return FALSE; -} - -int wxTreeCtrl::GetItemState(long item, long stateMask) const -{ - wxTreeItem info; - - info.m_mask = wxTREE_MASK_STATE ; - info.m_stateMask = stateMask; - info.m_itemId = item; - - if (!GetItem(info)) - return 0; - - return info.m_state; -} - -bool wxTreeCtrl::SetItemState(long item, long state, long stateMask) -{ - wxTreeItem info; - - info.m_mask = wxTREE_MASK_STATE ; - info.m_state = state; - info.m_stateMask = stateMask; - info.m_itemId = item; - - return SetItem(info); -} - -bool wxTreeCtrl::SetItemImage(long item, int image, int selImage) -{ - wxTreeItem info; - - info.m_mask = wxTREE_MASK_IMAGE ; - info.m_image = image; - if ( selImage > -1) - { - info.m_selectedImage = selImage; - info.m_mask |= wxTREE_MASK_SELECTED_IMAGE; - } - info.m_itemId = item; - - return SetItem(info); -} - -wxString wxTreeCtrl::GetItemText(long item) const -{ - wxTreeItem info; - - info.m_mask = wxTREE_MASK_TEXT ; - info.m_itemId = item; - - if (!GetItem(info)) - return wxString(""); - return info.m_text; -} - -void wxTreeCtrl::SetItemText(long item, const wxString& str) -{ - wxTreeItem info; - - info.m_mask = wxTREE_MASK_TEXT ; - info.m_itemId = item; - info.m_text = str; - - SetItem(info); -} - -long wxTreeCtrl::GetItemData(long item) const -{ - wxTreeItem info; - - info.m_mask = wxTREE_MASK_DATA ; - info.m_itemId = item; - - if (!GetItem(info)) - return 0; - return info.m_data; -} - -bool wxTreeCtrl::SetItemData(long item, long data) -{ - wxTreeItem info; - - info.m_mask = wxTREE_MASK_DATA ; - info.m_itemId = item; - info.m_data = data; - - return SetItem(info); -} - -bool wxTreeCtrl::GetItemRect(long item, wxRect& rect, bool textOnly) const -{ - // TODO - return FALSE; -} - -wxTextCtrl* wxTreeCtrl::GetEditControl() const -{ - return m_textCtrl; -} - -// Operations -bool wxTreeCtrl::DeleteItem(long item) -{ - // TODO - return FALSE; -} - -bool wxTreeCtrl::ExpandItem(long item, int action) -{ - // TODO - switch ( action ) - { - case wxTREE_EXPAND_EXPAND: - break; - - case wxTREE_EXPAND_COLLAPSE: - break; - - case wxTREE_EXPAND_COLLAPSE_RESET: - break; - - case wxTREE_EXPAND_TOGGLE: - break; - - default: - wxFAIL_MSG("unknown action in wxTreeCtrl::ExpandItem"); - } - - bool bOk = FALSE; // TODO expand item - - // May not send messages, so emulate them - if ( bOk ) { - wxTreeEvent event(wxEVT_NULL, m_windowId); - event.m_item.m_itemId = item; - event.m_item.m_mask = - event.m_item.m_stateMask = 0xffff; // get all - GetItem(event.m_item); - - bool bIsExpanded = (event.m_item.m_state & wxTREE_STATE_EXPANDED) != 0; - - event.m_code = action; - event.SetEventObject(this); - - // @@@ return values of {EXPAND|COLLAPS}ING event handler is discarded - event.SetEventType(bIsExpanded ? wxEVT_COMMAND_TREE_ITEM_EXPANDING - : wxEVT_COMMAND_TREE_ITEM_COLLAPSING); - GetEventHandler()->ProcessEvent(event); - - event.SetEventType(bIsExpanded ? wxEVT_COMMAND_TREE_ITEM_EXPANDED - : wxEVT_COMMAND_TREE_ITEM_COLLAPSED); - GetEventHandler()->ProcessEvent(event); - } - - return bOk; -} - -long wxTreeCtrl::InsertItem(long parent, wxTreeItem& info, long insertAfter) -{ - // TODO - return 0; -} - -long wxTreeCtrl::InsertItem(long parent, const wxString& label, int image, int selImage, - long insertAfter) -{ - wxTreeItem info; - info.m_text = label; - info.m_mask = wxTREE_MASK_TEXT; - if ( image > -1 ) - { - info.m_mask |= wxTREE_MASK_IMAGE | wxTREE_MASK_SELECTED_IMAGE; - info.m_image = image; - if ( selImage == -1 ) - info.m_selectedImage = image; - else - info.m_selectedImage = selImage; - } - - return InsertItem(parent, info, insertAfter); -} - -bool wxTreeCtrl::SelectItem(long item) -{ - // TODO - return FALSE; -} - -bool wxTreeCtrl::ScrollTo(long item) -{ - // TODO - return FALSE; -} - -bool wxTreeCtrl::DeleteAllItems() -{ - // TODO - return FALSE; -} - -wxTextCtrl* wxTreeCtrl::EditLabel(long item, wxClassInfo* textControlClass) -{ - // TODO - return NULL; -} - -// End label editing, optionally cancelling the edit -bool wxTreeCtrl::EndEditLabel(bool cancel) -{ - // TODO - return FALSE; -} - -long wxTreeCtrl::HitTest(const wxPoint& point, int& flags) -{ - // TODO - return 0; -} - -bool wxTreeCtrl::SortChildren(long item) -{ - // TODO - return FALSE; -} - -bool wxTreeCtrl::EnsureVisible(long item) -{ - // TODO - return FALSE; -} - -// Tree item structure -wxTreeItem::wxTreeItem() -{ - m_mask = 0; - m_itemId = 0; - m_state = 0; - m_stateMask = 0; - m_image = -1; - m_selectedImage = -1; - m_children = 0; - m_data = 0; -} - -// Tree event -IMPLEMENT_DYNAMIC_CLASS(wxTreeEvent, wxCommandEvent) - -wxTreeEvent::wxTreeEvent(wxEventType commandType, int id): - wxCommandEvent(commandType, id) -{ - m_code = 0; - m_oldItem = 0; -} - diff --git a/src/stubs/utils.cpp b/src/stubs/utils.cpp deleted file mode 100644 index 940bdc21bc..0000000000 --- a/src/stubs/utils.cpp +++ /dev/null @@ -1,272 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: utils.cpp -// Purpose: Various utilities -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -// Note: this is done in utilscmn.cpp now. -// #pragma implementation -// #pragma implementation "utils.h" -#endif - -#include "wx/setup.h" -#include "wx/utils.h" -#include "wx/app.h" - -#include - -#include -#include -#include -#include - -// Get full hostname (eg. DoDo.BSn-Germany.crg.de) -bool wxGetHostName(char *buf, int maxSize) -{ - // TODO - return FALSE; -} - -// Get user ID e.g. jacs -bool wxGetUserId(char *buf, int maxSize) -{ - // TODO - return FALSE; -} - -// Get user name e.g. AUTHOR -bool wxGetUserName(char *buf, int maxSize) -{ - // TODO - return FALSE; -} - -int wxKill(long pid, int sig) -{ - // TODO - return 0; -} - -// -// Execute a program in an Interactive Shell -// -bool wxShell(const wxString& command) -{ - // TODO - return FALSE; -} - -// Get free memory in bytes, or -1 if cannot determine amount (e.g. on UNIX) -long wxGetFreeMemory() -{ - // TODO - return 0; -} - -void wxSleep(int nSecs) -{ - // TODO -} - -// Consume all events until no more left -void wxFlushEvents() -{ -} - -// Output a debug message, in a system dependent fashion. -void wxDebugMsg(const char *fmt ...) -{ - va_list ap; - static char buffer[512]; - - if (!wxTheApp->GetWantDebugOutput()) - return ; - - va_start(ap, fmt); - - // wvsprintf(buffer,fmt,ap) ; - // TODO: output buffer - - va_end(ap); -} - -// Non-fatal error: pop up message box and (possibly) continue -void wxError(const wxString& msg, const wxString& title) -{ - // TODO - wxExit(); -} - -// Fatal error: pop up message box and abort -void wxFatalError(const wxString& msg, const wxString& title) -{ - // TODO -} - -// Emit a beeeeeep -void wxBell() -{ - // TODO -} - -int wxGetOsVersion(int *majorVsn, int *minorVsn) -{ - // TODO - return 0; -} - -// Reading and writing resources (eg WIN.INI, .Xdefaults) -#if wxUSE_RESOURCES -bool wxWriteResource(const wxString& section, const wxString& entry, const wxString& value, const wxString& file) -{ - // TODO - return FALSE; -} - -bool wxWriteResource(const wxString& section, const wxString& entry, float value, const wxString& file) -{ - char buf[50]; - sprintf(buf, "%.4f", value); - return wxWriteResource(section, entry, buf, file); -} - -bool wxWriteResource(const wxString& section, const wxString& entry, long value, const wxString& file) -{ - char buf[50]; - sprintf(buf, "%ld", value); - return wxWriteResource(section, entry, buf, file); -} - -bool wxWriteResource(const wxString& section, const wxString& entry, int value, const wxString& file) -{ - char buf[50]; - sprintf(buf, "%d", value); - return wxWriteResource(section, entry, buf, file); -} - -bool wxGetResource(const wxString& section, const wxString& entry, char **value, const wxString& file) -{ - // TODO - return FALSE; -} - -bool wxGetResource(const wxString& section, const wxString& entry, float *value, const wxString& file) -{ - char *s = NULL; - bool succ = wxGetResource(section, entry, (char **)&s, file); - if (succ) - { - *value = (float)strtod(s, NULL); - delete[] s; - return TRUE; - } - else return FALSE; -} - -bool wxGetResource(const wxString& section, const wxString& entry, long *value, const wxString& file) -{ - char *s = NULL; - bool succ = wxGetResource(section, entry, (char **)&s, file); - if (succ) - { - *value = strtol(s, NULL, 10); - delete[] s; - return TRUE; - } - else return FALSE; -} - -bool wxGetResource(const wxString& section, const wxString& entry, int *value, const wxString& file) -{ - char *s = NULL; - bool succ = wxGetResource(section, entry, (char **)&s, file); - if (succ) - { - *value = (int)strtol(s, NULL, 10); - delete[] s; - return TRUE; - } - else return FALSE; -} -#endif // wxUSE_RESOURCES - -static int wxBusyCursorCount = 0; - -// Set the cursor to the busy cursor for all windows -void wxBeginBusyCursor(wxCursor *cursor) -{ - wxBusyCursorCount ++; - if (wxBusyCursorCount == 1) - { - // TODO - } - else - { - // TODO - } -} - -// Restore cursor to normal -void wxEndBusyCursor() -{ - if (wxBusyCursorCount == 0) - return; - - wxBusyCursorCount --; - if (wxBusyCursorCount == 0) - { - // TODO - } -} - -// TRUE if we're between the above two calls -bool wxIsBusy() -{ - return (wxBusyCursorCount > 0); -} - -char *wxGetUserHome (const wxString& user) -{ - // TODO - return NULL; -} - -// Check whether this window wants to process messages, e.g. Stop button -// in long calculations. -bool wxCheckForInterrupt(wxWindow *wnd) -{ - // TODO - return FALSE; -} - -void wxGetMousePosition( int* x, int* y ) -{ - // TODO -}; - -// Return TRUE if we have a colour display -bool wxColourDisplay() -{ - // TODO - return TRUE; -} - -// Returns depth of screen -int wxDisplayDepth() -{ - // TODO - return 0; -} - -// Get size of display -void wxDisplaySize(int *width, int *height) -{ - // TODO -} - diff --git a/src/stubs/utilsexc.cpp b/src/stubs/utilsexc.cpp deleted file mode 100644 index b842d08e90..0000000000 --- a/src/stubs/utilsexc.cpp +++ /dev/null @@ -1,28 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: utilsexec.cpp -// Purpose: Execution-related utilities -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation -#endif - -#include "wx/utils.h" - -#include -#include -#include - -#define wxEXECUTE_WIN_MESSAGE 10000 - -long wxExecute(const wxString& command, bool sync, wxProcess *handler) -{ - // TODO - return 0; -} diff --git a/src/stubs/wave.cpp b/src/stubs/wave.cpp deleted file mode 100644 index c25681858c..0000000000 --- a/src/stubs/wave.cpp +++ /dev/null @@ -1,61 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: wave.cpp -// Purpose: wxWave class implementation: optional -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "wave.h" -#endif - -#include "wx/object.h" -#include "wx/string.h" -#include "wx/stubs/wave.h" - -wxWave::wxWave() - : m_waveData(NULL), m_waveLength(0), m_isResource(FALSE) -{ -} - -wxWave::wxWave(const wxString& sFileName, bool isResource) - : m_waveData(NULL), m_waveLength(0), m_isResource(FALSE) -{ - Create(sFileName, isResource); -} - - -wxWave::~wxWave() -{ - Free(); -} - -bool wxWave::Create(const wxString& fileName, bool isResource) -{ - Free(); - - // TODO - - return FALSE; -} - -bool wxWave::Play(bool async, bool looped) const -{ - if (!IsOk()) - return FALSE; - - // TODO - return FALSE; -} - -bool wxWave::Free() -{ - // TODO - return FALSE; -} - - diff --git a/src/stubs/window.cpp b/src/stubs/window.cpp deleted file mode 100644 index ef3388cc30..0000000000 --- a/src/stubs/window.cpp +++ /dev/null @@ -1,1307 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: windows.cpp -// Purpose: wxWindow -// Author: AUTHOR -// Modified by: -// Created: ??/??/98 -// RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "window.h" -#endif - -#include "wx/setup.h" -#include "wx/menu.h" -#include "wx/dc.h" -#include "wx/dcclient.h" -#include "wx/utils.h" -#include "wx/app.h" -#include "wx/panel.h" -#include "wx/layout.h" -#include "wx/dialog.h" -#include "wx/listbox.h" -#include "wx/button.h" -#include "wx/settings.h" -#include "wx/msgdlg.h" -#include "wx/frame.h" - -#include "wx/menuitem.h" -#include "wx/log.h" - -#if wxUSE_DRAG_AND_DROP -#include "wx/dnd.h" -#endif - -#include - -extern wxList wxPendingDelete; - -#if !USE_SHARED_LIBRARY -IMPLEMENT_DYNAMIC_CLASS(wxWindow, wxEvtHandler) - -BEGIN_EVENT_TABLE(wxWindow, wxEvtHandler) - EVT_CHAR(wxWindow::OnChar) - EVT_KEY_DOWN(wxWindow::OnKeyDown) - EVT_KEY_UP(wxWindow::OnKeyUp) - EVT_ERASE_BACKGROUND(wxWindow::OnEraseBackground) - EVT_SYS_COLOUR_CHANGED(wxWindow::OnSysColourChanged) - EVT_INIT_DIALOG(wxWindow::OnInitDialog) - EVT_IDLE(wxWindow::OnIdle) -END_EVENT_TABLE() - -#endif - - -// Constructor -wxWindow::wxWindow() -{ - // Generic - m_windowId = 0; - m_windowStyle = 0; - m_windowParent = NULL; - m_windowEventHandler = this; - m_windowName = ""; - m_windowCursor = *wxSTANDARD_CURSOR; - m_children = new wxList; - m_constraints = NULL; - m_constraintsInvolvedIn = NULL; - m_windowSizer = NULL; - m_sizerParent = NULL; - m_autoLayout = FALSE; - m_windowValidator = NULL; - m_defaultItem = NULL; - m_returnCode = 0; - m_caretWidth = 0; m_caretHeight = 0; - m_caretEnabled = FALSE; - m_caretShown = FALSE; - m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE) ; - // m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOW) ; ; - m_foregroundColour = *wxBLACK; - -#if wxUSE_DRAG_AND_DROP - m_pDropTarget = NULL; -#endif -} - -// Destructor -wxWindow::~wxWindow() -{ - // Have to delete constraints/sizer FIRST otherwise - // sizers may try to look at deleted windows as they - // delete themselves. -#if wxUSE_CONSTRAINTS - DeleteRelatedConstraints(); - if (m_constraints) - { - // This removes any dangling pointers to this window - // in other windows' constraintsInvolvedIn lists. - UnsetConstraints(m_constraints); - delete m_constraints; - m_constraints = NULL; - } - if (m_windowSizer) - { - delete m_windowSizer; - m_windowSizer = NULL; - } - // If this is a child of a sizer, remove self from parent - if (m_sizerParent) - m_sizerParent->RemoveChild((wxWindow *)this); -#endif - - if (m_windowParent) - m_windowParent->RemoveChild(this); - - DestroyChildren(); - - // TODO: destroy the window - - delete m_children; - m_children = NULL; - - // Just in case the window has been Closed, but - // we're then deleting immediately: don't leave - // dangling pointers. - wxPendingDelete.DeleteObject(this); - - if ( m_windowValidator ) - delete m_windowValidator; -} - -// Destroy the window (delayed, if a managed window) -bool wxWindow::Destroy() -{ - delete this; - return TRUE; -} - -// Constructor -bool wxWindow::Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos, - const wxSize& size, - long style, - const wxString& name) -{ - // Generic - m_windowId = 0; - m_windowStyle = 0; - m_windowParent = NULL; - m_windowEventHandler = this; - m_windowName = ""; - m_windowCursor = *wxSTANDARD_CURSOR; - m_constraints = NULL; - m_constraintsInvolvedIn = NULL; - m_windowSizer = NULL; - m_sizerParent = NULL; - m_autoLayout = FALSE; - m_windowValidator = NULL; - -#if wxUSE_DRAG_AND_DROP - m_pDropTarget = NULL; -#endif - - m_caretWidth = 0; m_caretHeight = 0; - m_caretEnabled = FALSE; - m_caretShown = FALSE; - m_minSizeX = -1; - m_minSizeY = -1; - m_maxSizeX = -1; - m_maxSizeY = -1; - m_defaultItem = NULL; - m_windowParent = NULL; - if (!parent) - return FALSE; - - if (parent) parent->AddChild(this); - - m_returnCode = 0; - - SetName(name); - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - // m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_WINDOW) ; ; - m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE) ; - m_foregroundColour = *wxBLACK; - - m_windowStyle = style; - - if ( id == -1 ) - m_windowId = (int)NewControlId(); - else - m_windowId = id; - - // TODO: create the window - - return TRUE; -} - -void wxWindow::SetFocus() -{ - // TODO -} - -void wxWindow::Enable(bool enable) -{ - // TODO -} - -void wxWindow::CaptureMouse() -{ - // TODO -} - -void wxWindow::ReleaseMouse() -{ - // TODO -} - -// Push/pop event handler (i.e. allow a chain of event handlers -// be searched) -void wxWindow::PushEventHandler(wxEvtHandler *handler) -{ - handler->SetNextHandler(GetEventHandler()); - SetEventHandler(handler); -} - -wxEvtHandler *wxWindow::PopEventHandler(bool deleteHandler) -{ - if ( GetEventHandler() ) - { - wxEvtHandler *handlerA = GetEventHandler(); - wxEvtHandler *handlerB = handlerA->GetNextHandler(); - handlerA->SetNextHandler(NULL); - SetEventHandler(handlerB); - if ( deleteHandler ) - { - delete handlerA; - return NULL; - } - else - return handlerA; - } - else - return NULL; -} - -#if wxUSE_DRAG_AND_DROP - -void wxWindow::SetDropTarget(wxDropTarget *pDropTarget) -{ - if ( m_pDropTarget != 0 ) { - delete m_pDropTarget; - } - - m_pDropTarget = pDropTarget; - if ( m_pDropTarget != 0 ) - { - // TODO - } -} - -#endif - -// Old style file-manager drag&drop -void wxWindow::DragAcceptFiles(bool accept) -{ - // TODO -} - -// Get total size -void wxWindow::GetSize(int *x, int *y) const -{ - // TODO -} - -void wxWindow::GetPosition(int *x, int *y) const -{ - // TODO -} - -void wxWindow::ScreenToClient(int *x, int *y) const -{ - // TODO -} - -void wxWindow::ClientToScreen(int *x, int *y) const -{ - // TODO -} - -void wxWindow::SetCursor(const wxCursor& cursor) -{ - m_windowCursor = cursor; - if (m_windowCursor.Ok()) - { - // TODO - } -} - - -// Get size *available for subwindows* i.e. excluding menu bar etc. -void wxWindow::GetClientSize(int *x, int *y) const -{ - // TODO -} - -void wxWindow::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - // TODO -} - -void wxWindow::SetClientSize(int width, int height) -{ - // TODO -} - -// For implementation purposes - sometimes decorations make the client area -// smaller -wxPoint wxWindow::GetClientAreaOrigin() const -{ - return wxPoint(0, 0); -} - -// Makes an adjustment to the window position (for example, a frame that has -// a toolbar that it manages itself). -void wxWindow::AdjustForParentClientOrigin(int& x, int& y, int sizeFlags) -{ - if (((sizeFlags & wxSIZE_NO_ADJUSTMENTS) == 0) && GetParent()) - { - wxPoint pt(GetParent()->GetClientAreaOrigin()); - x += pt.x; y += pt.y; - } -} - -bool wxWindow::Show(bool show) -{ - // TODO - return FALSE; -} - -bool wxWindow::IsShown() const -{ - // TODO - return FALSE; -} - -int wxWindow::GetCharHeight() const -{ - // TODO - return 0; -} - -int wxWindow::GetCharWidth() const -{ - // TODO - return 0; -} - -void wxWindow::GetTextExtent(const wxString& string, int *x, int *y, - int *descent, int *externalLeading, const wxFont *theFont, bool) const -{ - wxFont *fontToUse = (wxFont *)theFont; - if (!fontToUse) - fontToUse = (wxFont *) & m_windowFont; - - // TODO -} - -void wxWindow::Refresh(bool eraseBack, const wxRect *rect) -{ - // TODO -} - -// Responds to colour changes: passes event on to children. -void wxWindow::OnSysColourChanged(wxSysColourChangedEvent& event) -{ - wxNode *node = GetChildren().First(); - while ( node ) - { - // Only propagate to non-top-level windows - wxWindow *win = (wxWindow *)node->Data(); - if ( win->GetParent() ) - { - wxSysColourChangedEvent event2; - event.m_eventObject = win; - win->GetEventHandler()->ProcessEvent(event2); - } - - node = node->Next(); - } -} - -// This can be called by the app (or wxWindows) to do default processing for the current -// event. Save message/event info in wxWindow so they can be used in this function. -long wxWindow::Default() -{ - // TODO - return 0; -} - -void wxWindow::InitDialog() -{ - wxInitDialogEvent event(GetId()); - event.SetEventObject( this ); - GetEventHandler()->ProcessEvent(event); -} - -// Default init dialog behaviour is to transfer data to window -void wxWindow::OnInitDialog(wxInitDialogEvent& event) -{ - TransferDataToWindow(); -} - -// Caret manipulation -void wxWindow::CreateCaret(int w, int h) -{ - m_caretWidth = w; - m_caretHeight = h; - m_caretEnabled = TRUE; -} - -void wxWindow::CreateCaret(const wxBitmap *WXUNUSED(bitmap)) -{ - // TODO -} - -void wxWindow::ShowCaret(bool show) -{ - // TODO -} - -void wxWindow::DestroyCaret() -{ - // TODO - m_caretEnabled = FALSE; -} - -void wxWindow::SetCaretPos(int x, int y) -{ - // TODO -} - -void wxWindow::GetCaretPos(int *x, int *y) const -{ - // TODO -} - -wxWindow *wxGetActiveWindow() -{ - // TODO - return NULL; -} - -void wxWindow::SetSizeHints(int minW, int minH, int maxW, int maxH, int WXUNUSED(incW), int WXUNUSED(incH)) -{ - m_minSizeX = minW; - m_minSizeY = minH; - m_maxSizeX = maxW; - m_maxSizeY = maxH; -} - -void wxWindow::Centre(int direction) -{ - int x, y, width, height, panel_width, panel_height, new_x, new_y; - - wxWindow *father = (wxWindow *)GetParent(); - if (!father) - return; - - father->GetClientSize(&panel_width, &panel_height); - GetSize(&width, &height); - GetPosition(&x, &y); - - new_x = -1; - new_y = -1; - - if (direction & wxHORIZONTAL) - new_x = (int)((panel_width - width)/2); - - if (direction & wxVERTICAL) - new_y = (int)((panel_height - height)/2); - - SetSize(new_x, new_y, -1, -1); - -} - -// Coordinates relative to the window -void wxWindow::WarpPointer (int x_pos, int y_pos) -{ - // TODO -} - -void wxWindow::OnEraseBackground(wxEraseEvent& event) -{ - // TODO - Default(); -} - -int wxWindow::GetScrollPos(int orient) const -{ - // TODO - return 0; -} - -// This now returns the whole range, not just the number -// of positions that we can scroll. -int wxWindow::GetScrollRange(int orient) const -{ - // TODO - return 0; -} - -int wxWindow::GetScrollThumb(int orient) const -{ - // TODO - return 0; -} - -void wxWindow::SetScrollPos(int orient, int pos, bool refresh) -{ - // TODO - return; -} - -// New function that will replace some of the above. -void wxWindow::SetScrollbar(int orient, int pos, int thumbVisible, - int range, bool refresh) -{ - // TODO -} - -// Does a physical scroll -void wxWindow::ScrollWindow(int dx, int dy, const wxRect *rect) -{ - // TODO - return; -} - -void wxWindow::SetFont(const wxFont& font) -{ - m_windowFont = font; - - if (!m_windowFont.Ok()) - return; - // TODO -} - -void wxWindow::OnChar(wxKeyEvent& event) -{ -/* ?? - if ( event.KeyCode() == WXK_TAB ) { - // propagate the TABs to the parent - it's up to it to decide what - // to do with it - if ( GetParent() ) { - if ( GetParent()->ProcessEvent(event) ) - return; - } - } -*/ - Default(); -} - -void wxWindow::OnKeyDown(wxKeyEvent& event) -{ - Default(); -} - -void wxWindow::OnKeyUp(wxKeyEvent& event) -{ - Default(); -} - -void wxWindow::OnPaint(wxPaintEvent& event) -{ - Default(); -} - -bool wxWindow::IsEnabled() const -{ - // TODO - return FALSE; -} - -// Dialog support: override these and call -// base class members to add functionality -// that can't be done using validators. -// NOTE: these functions assume that controls -// are direct children of this window, not grandchildren -// or other levels of descendant. - -// Transfer values to controls. If returns FALSE, -// it's an application error (pops up a dialog) -bool wxWindow::TransferDataToWindow() -{ - wxNode *node = GetChildren().First(); - while ( node ) - { - wxWindow *child = (wxWindow *)node->Data(); - if ( child->GetValidator() && - !child->GetValidator()->TransferToWindow() ) - { - wxMessageBox("Application Error", "Could not transfer data to window", wxOK|wxICON_EXCLAMATION); - return FALSE; - } - - node = node->Next(); - } - return TRUE; -} - -// Transfer values from controls. If returns FALSE, -// validation failed: don't quit -bool wxWindow::TransferDataFromWindow() -{ - wxNode *node = GetChildren().First(); - while ( node ) - { - wxWindow *child = (wxWindow *)node->Data(); - if ( child->GetValidator() && !child->GetValidator()->TransferFromWindow() ) - { - return FALSE; - } - - node = node->Next(); - } - return TRUE; -} - -bool wxWindow::Validate() -{ - wxNode *node = GetChildren().First(); - while ( node ) - { - wxWindow *child = (wxWindow *)node->Data(); - if ( child->GetValidator() && /* child->GetValidator()->Ok() && */ !child->GetValidator()->Validate(this) ) - { - return FALSE; - } - - node = node->Next(); - } - return TRUE; -} - -// Get the window with the focus -wxWindow *wxWindow::FindFocus() -{ - // TODO - return NULL; -} - -void wxWindow::AddChild(wxWindow *child) -{ - GetChildren().Append(child); - child->m_windowParent = this; -} - -void wxWindow::RemoveChild(wxWindow *child) -{ - GetChildren().DeleteObject(child); - child->m_windowParent = NULL; -} - -void wxWindow::DestroyChildren() -{ - wxNode *node; - while ((node = GetChildren().First()) != (wxNode *)NULL) { - wxWindow *child; - if ((child = (wxWindow *)node->Data()) != (wxWindow *)NULL) { - delete child; - if ( GetChildren().Member(child) ) - delete node; - } - } /* while */ -} - -void wxWindow::MakeModal(bool modal) -{ - // Disable all other windows - if (this->IsKindOf(CLASSINFO(wxDialog)) || this->IsKindOf(CLASSINFO(wxFrame))) - { - wxNode *node = wxTopLevelWindows.First(); - while (node) - { - wxWindow *win = (wxWindow *)node->Data(); - if (win != this) - win->Enable(!modal); - - node = node->Next(); - } - } -} - -// If nothing defined for this, try the parent. -// E.g. we may be a button loaded from a resource, with no callback function -// defined. -void wxWindow::OnCommand(wxWindow& win, wxCommandEvent& event) -{ - if (GetEventHandler()->ProcessEvent(event) ) - return; - if (m_windowParent) - m_windowParent->GetEventHandler()->OnCommand(win, event); -} - -void wxWindow::SetConstraints(wxLayoutConstraints *c) -{ - if (m_constraints) - { - UnsetConstraints(m_constraints); - delete m_constraints; - } - m_constraints = c; - if (m_constraints) - { - // Make sure other windows know they're part of a 'meaningful relationship' - if (m_constraints->left.GetOtherWindow() && (m_constraints->left.GetOtherWindow() != this)) - m_constraints->left.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->top.GetOtherWindow() && (m_constraints->top.GetOtherWindow() != this)) - m_constraints->top.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->right.GetOtherWindow() && (m_constraints->right.GetOtherWindow() != this)) - m_constraints->right.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->bottom.GetOtherWindow() && (m_constraints->bottom.GetOtherWindow() != this)) - m_constraints->bottom.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->width.GetOtherWindow() && (m_constraints->width.GetOtherWindow() != this)) - m_constraints->width.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->height.GetOtherWindow() && (m_constraints->height.GetOtherWindow() != this)) - m_constraints->height.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->centreX.GetOtherWindow() && (m_constraints->centreX.GetOtherWindow() != this)) - m_constraints->centreX.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - if (m_constraints->centreY.GetOtherWindow() && (m_constraints->centreY.GetOtherWindow() != this)) - m_constraints->centreY.GetOtherWindow()->AddConstraintReference((wxWindow *)this); - } -} - -// This removes any dangling pointers to this window -// in other windows' constraintsInvolvedIn lists. -void wxWindow::UnsetConstraints(wxLayoutConstraints *c) -{ - if (c) - { - if (c->left.GetOtherWindow() && (c->top.GetOtherWindow() != this)) - c->left.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->top.GetOtherWindow() && (c->top.GetOtherWindow() != this)) - c->top.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->right.GetOtherWindow() && (c->right.GetOtherWindow() != this)) - c->right.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->bottom.GetOtherWindow() && (c->bottom.GetOtherWindow() != this)) - c->bottom.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->width.GetOtherWindow() && (c->width.GetOtherWindow() != this)) - c->width.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->height.GetOtherWindow() && (c->height.GetOtherWindow() != this)) - c->height.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->centreX.GetOtherWindow() && (c->centreX.GetOtherWindow() != this)) - c->centreX.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - if (c->centreY.GetOtherWindow() && (c->centreY.GetOtherWindow() != this)) - c->centreY.GetOtherWindow()->RemoveConstraintReference((wxWindow *)this); - } -} - -// Back-pointer to other windows we're involved with, so if we delete -// this window, we must delete any constraints we're involved with. -void wxWindow::AddConstraintReference(wxWindow *otherWin) -{ - if (!m_constraintsInvolvedIn) - m_constraintsInvolvedIn = new wxList; - if (!m_constraintsInvolvedIn->Member(otherWin)) - m_constraintsInvolvedIn->Append(otherWin); -} - -// REMOVE back-pointer to other windows we're involved with. -void wxWindow::RemoveConstraintReference(wxWindow *otherWin) -{ - if (m_constraintsInvolvedIn) - m_constraintsInvolvedIn->DeleteObject(otherWin); -} - -// Reset any constraints that mention this window -void wxWindow::DeleteRelatedConstraints() -{ - if (m_constraintsInvolvedIn) - { - wxNode *node = m_constraintsInvolvedIn->First(); - while (node) - { - wxWindow *win = (wxWindow *)node->Data(); - wxNode *next = node->Next(); - wxLayoutConstraints *constr = win->GetConstraints(); - - // Reset any constraints involving this window - if (constr) - { - constr->left.ResetIfWin((wxWindow *)this); - constr->top.ResetIfWin((wxWindow *)this); - constr->right.ResetIfWin((wxWindow *)this); - constr->bottom.ResetIfWin((wxWindow *)this); - constr->width.ResetIfWin((wxWindow *)this); - constr->height.ResetIfWin((wxWindow *)this); - constr->centreX.ResetIfWin((wxWindow *)this); - constr->centreY.ResetIfWin((wxWindow *)this); - } - delete node; - node = next; - } - delete m_constraintsInvolvedIn; - m_constraintsInvolvedIn = NULL; - } -} - -void wxWindow::SetSizer(wxSizer *sizer) -{ - m_windowSizer = sizer; - if (sizer) - sizer->SetSizerParent((wxWindow *)this); -} - -/* - * New version - */ - -bool wxWindow::Layout() -{ - if (GetConstraints()) - { - int w, h; - GetClientSize(&w, &h); - GetConstraints()->width.SetValue(w); - GetConstraints()->height.SetValue(h); - } - - // If top level (one sizer), evaluate the sizer's constraints. - if (GetSizer()) - { - int noChanges; - GetSizer()->ResetConstraints(); // Mark all constraints as unevaluated - GetSizer()->LayoutPhase1(&noChanges); - GetSizer()->LayoutPhase2(&noChanges); - GetSizer()->SetConstraintSizes(); // Recursively set the real window sizes - return TRUE; - } - else - { - // Otherwise, evaluate child constraints - ResetConstraints(); // Mark all constraints as unevaluated - DoPhase(1); // Just one phase need if no sizers involved - DoPhase(2); - SetConstraintSizes(); // Recursively set the real window sizes - } - return TRUE; -} - - -// Do a phase of evaluating constraints: -// the default behaviour. wxSizers may do a similar -// thing, but also impose their own 'constraints' -// and order the evaluation differently. -bool wxWindow::LayoutPhase1(int *noChanges) -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - return constr->SatisfyConstraints((wxWindow *)this, noChanges); - } - else - return TRUE; -} - -bool wxWindow::LayoutPhase2(int *noChanges) -{ - *noChanges = 0; - - // Layout children - DoPhase(1); - DoPhase(2); - return TRUE; -} - -// Do a phase of evaluating child constraints -bool wxWindow::DoPhase(int phase) -{ - int noIterations = 0; - int maxIterations = 500; - int noChanges = 1; - int noFailures = 0; - wxList succeeded; - while ((noChanges > 0) && (noIterations < maxIterations)) - { - noChanges = 0; - noFailures = 0; - wxNode *node = GetChildren().First(); - while (node) - { - wxWindow *child = (wxWindow *)node->Data(); - if (!child->IsKindOf(CLASSINFO(wxFrame)) && !child->IsKindOf(CLASSINFO(wxDialog))) - { - wxLayoutConstraints *constr = child->GetConstraints(); - if (constr) - { - if (succeeded.Member(child)) - { - } - else - { - int tempNoChanges = 0; - bool success = ( (phase == 1) ? child->LayoutPhase1(&tempNoChanges) : child->LayoutPhase2(&tempNoChanges) ) ; - noChanges += tempNoChanges; - if (success) - { - succeeded.Append(child); - } - } - } - } - node = node->Next(); - } - noIterations ++; - } - return TRUE; -} - -void wxWindow::ResetConstraints() -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - constr->left.SetDone(FALSE); - constr->top.SetDone(FALSE); - constr->right.SetDone(FALSE); - constr->bottom.SetDone(FALSE); - constr->width.SetDone(FALSE); - constr->height.SetDone(FALSE); - constr->centreX.SetDone(FALSE); - constr->centreY.SetDone(FALSE); - } - wxNode *node = GetChildren().First(); - while (node) - { - wxWindow *win = (wxWindow *)node->Data(); - if (!win->IsKindOf(CLASSINFO(wxFrame)) && !win->IsKindOf(CLASSINFO(wxDialog))) - win->ResetConstraints(); - node = node->Next(); - } -} - -// Need to distinguish between setting the 'fake' size for -// windows and sizers, and setting the real values. -void wxWindow::SetConstraintSizes(bool recurse) -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr && constr->left.GetDone() && constr->right.GetDone() && - constr->width.GetDone() && constr->height.GetDone()) - { - int x = constr->left.GetValue(); - int y = constr->top.GetValue(); - int w = constr->width.GetValue(); - int h = constr->height.GetValue(); - - // If we don't want to resize this window, just move it... - if ((constr->width.GetRelationship() != wxAsIs) || - (constr->height.GetRelationship() != wxAsIs)) - { - // Calls Layout() recursively. AAAGH. How can we stop that. - // Simply take Layout() out of non-top level OnSizes. - SizerSetSize(x, y, w, h); - } - else - { - SizerMove(x, y); - } - } - else if (constr) - { - char *windowClass = this->GetClassInfo()->GetClassName(); - - wxString winName; - if (GetName() == "") - winName = "unnamed"; - else - winName = GetName(); - wxDebugMsg("Constraint(s) not satisfied for window of type %s, name %s:\n", (const char *)windowClass, (const char *)winName); - if (!constr->left.GetDone()) - wxDebugMsg(" unsatisfied 'left' constraint.\n"); - if (!constr->right.GetDone()) - wxDebugMsg(" unsatisfied 'right' constraint.\n"); - if (!constr->width.GetDone()) - wxDebugMsg(" unsatisfied 'width' constraint.\n"); - if (!constr->height.GetDone()) - wxDebugMsg(" unsatisfied 'height' constraint.\n"); - wxDebugMsg("Please check constraints: try adding AsIs() constraints.\n"); - } - - if (recurse) - { - wxNode *node = GetChildren().First(); - while (node) - { - wxWindow *win = (wxWindow *)node->Data(); - if (!win->IsKindOf(CLASSINFO(wxFrame)) && !win->IsKindOf(CLASSINFO(wxDialog))) - win->SetConstraintSizes(); - node = node->Next(); - } - } -} - -// This assumes that all sizers are 'on' the same -// window, i.e. the parent of this window. -void wxWindow::TransformSizerToActual(int *x, int *y) const -{ - if (!m_sizerParent || m_sizerParent->IsKindOf(CLASSINFO(wxDialog)) || - m_sizerParent->IsKindOf(CLASSINFO(wxFrame)) ) - return; - - int xp, yp; - m_sizerParent->GetPosition(&xp, &yp); - m_sizerParent->TransformSizerToActual(&xp, &yp); - *x += xp; - *y += yp; -} - -void wxWindow::SizerSetSize(int x, int y, int w, int h) -{ - int xx = x; - int yy = y; - TransformSizerToActual(&xx, &yy); - SetSize(xx, yy, w, h); -} - -void wxWindow::SizerMove(int x, int y) -{ - int xx = x; - int yy = y; - TransformSizerToActual(&xx, &yy); - Move(xx, yy); -} - -// Only set the size/position of the constraint (if any) -void wxWindow::SetSizeConstraint(int x, int y, int w, int h) -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - if (x != -1) - { - constr->left.SetValue(x); - constr->left.SetDone(TRUE); - } - if (y != -1) - { - constr->top.SetValue(y); - constr->top.SetDone(TRUE); - } - if (w != -1) - { - constr->width.SetValue(w); - constr->width.SetDone(TRUE); - } - if (h != -1) - { - constr->height.SetValue(h); - constr->height.SetDone(TRUE); - } - } -} - -void wxWindow::MoveConstraint(int x, int y) -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - if (x != -1) - { - constr->left.SetValue(x); - constr->left.SetDone(TRUE); - } - if (y != -1) - { - constr->top.SetValue(y); - constr->top.SetDone(TRUE); - } - } -} - -void wxWindow::GetSizeConstraint(int *w, int *h) const -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - *w = constr->width.GetValue(); - *h = constr->height.GetValue(); - } - else - GetSize(w, h); -} - -void wxWindow::GetClientSizeConstraint(int *w, int *h) const -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - *w = constr->width.GetValue(); - *h = constr->height.GetValue(); - } - else - GetClientSize(w, h); -} - -void wxWindow::GetPositionConstraint(int *x, int *y) const -{ - wxLayoutConstraints *constr = GetConstraints(); - if (constr) - { - *x = constr->left.GetValue(); - *y = constr->top.GetValue(); - } - else - GetPosition(x, y); -} - -bool wxWindow::Close(bool force) -{ - wxCloseEvent event(wxEVT_CLOSE_WINDOW, m_windowId); - event.SetEventObject(this); - event.SetForce(force); - - return GetEventHandler()->ProcessEvent(event); -} - -wxObject* wxWindow::GetChild(int number) const -{ - // Return a pointer to the Nth object in the window - wxNode *node = GetChildren().First(); - int n = number; - while (node && n--) - node = node->Next() ; - if (node) - { - wxObject *obj = (wxObject *)node->Data(); - return(obj) ; - } - else - return NULL ; -} - -void wxWindow::OnDefaultAction(wxControl *initiatingItem) -{ - // Obsolete function -} - -void wxWindow::Clear() -{ - wxClientDC dc(this); - wxBrush brush(GetBackgroundColour(), wxSOLID); - dc.SetBackground(brush); - dc.Clear(); -} - -// Fits the panel around the items -void wxWindow::Fit() -{ - int maxX = 0; - int maxY = 0; - wxNode *node = GetChildren().First(); - while ( node ) - { - wxWindow *win = (wxWindow *)node->Data(); - int wx, wy, ww, wh; - win->GetPosition(&wx, &wy); - win->GetSize(&ww, &wh); - if ( wx + ww > maxX ) - maxX = wx + ww; - if ( wy + wh > maxY ) - maxY = wy + wh; - - node = node->Next(); - } - SetClientSize(maxX + 5, maxY + 5); -} - -void wxWindow::SetValidator(const wxValidator& validator) -{ - if ( m_windowValidator ) - delete m_windowValidator; - m_windowValidator = validator.Clone(); - - if ( m_windowValidator ) - m_windowValidator->SetWindow(this) ; -} - -void wxWindow::SetAcceleratorTable(const wxAcceleratorTable& accel) -{ - m_acceleratorTable = accel; -} - -// Find a window by id or name -wxWindow *wxWindow::FindWindow(long id) -{ - if ( GetId() == id) - return this; - - wxNode *node = GetChildren().First(); - while ( node ) - { - wxWindow *child = (wxWindow *)node->Data(); - wxWindow *found = child->FindWindow(id); - if ( found ) - return found; - node = node->Next(); - } - return NULL; -} - -wxWindow *wxWindow::FindWindow(const wxString& name) -{ - if ( GetName() == name) - return this; - - wxNode *node = GetChildren().First(); - while ( node ) - { - wxWindow *child = (wxWindow *)node->Data(); - wxWindow *found = child->FindWindow(name); - if ( found ) - return found; - node = node->Next(); - } - return NULL; -} - -void wxWindow::OnIdle(wxIdleEvent& event) -{ -/* TODO: you may need to do something like this - * if your GUI doesn't generate enter/leave events - - // Check if we need to send a LEAVE event - if (m_mouseInWindow) - { - POINT pt; - ::GetCursorPos(&pt); - if (::WindowFromPoint(pt) != (HWND) GetHWND()) - { - // Generate a LEAVE event - m_mouseInWindow = FALSE; - MSWOnMouseLeave(pt.x, pt.y, 0); - } - } -*/ - - // This calls the UI-update mechanism (querying windows for - // menu/toolbar/control state information) - UpdateWindowUI(); -} - -// Raise the window to the top of the Z order -void wxWindow::Raise() -{ - // TODO -} - -// Lower the window to the bottom of the Z order -void wxWindow::Lower() -{ - // TODO -} - -bool wxWindow::AcceptsFocus() const -{ - return IsShown() && IsEnabled(); -} - -// Update region access -wxRegion wxWindow::GetUpdateRegion() const -{ - return m_updateRegion; -} - -bool wxWindow::IsExposed(int x, int y, int w, int h) const -{ - return (m_updateRegion.Contains(x, y, w, h) != wxOutRegion); -} - -bool wxWindow::IsExposed(const wxPoint& pt) const -{ - return (m_updateRegion.Contains(pt) != wxOutRegion); -} - -bool wxWindow::IsExposed(const wxRect& rect) const -{ - return (m_updateRegion.Contains(rect) != wxOutRegion); -} - -/* - * Allocates control IDs - */ - -int wxWindow::NewControlId() -{ - static int s_controlId = 0; - s_controlId ++; - return s_controlId; -} - - diff --git a/src/xpm/changes b/src/xpm/changes deleted file mode 100644 index 1cd0e9a8dd..0000000000 --- a/src/xpm/changes +++ /dev/null @@ -1,704 +0,0 @@ -/* - * Copyright (C) 1989-94 GROUPE BULL - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name of GROUPE BULL shall not be - * used in advertising or otherwise to promote the sale, use or other dealings - * in this Software without prior written authorization from GROUPE BULL. - */ - -/**************************************************************************\ -* * -* HISTORY of user-visible changes * -* * -\**************************************************************************/ - -3.4b (94/05/24) - - ENHANCEMENTS: - - XPM can now be built under MS Windows. Yes, this is possible and this - entirely comes from: - - Hermann Dunkel - See the README.MSW file for details. - - - building the shared library now depends on the SharedLibXpm variable - and no longer on the SharedLibX variable which is private to the X - Window System project. - - patch from Stephen Gildea - Other variables can now be set for the various locations needed. - - - lib/parse.c does no longer use a 256x256 array in the stack but - malloc it instead. - - - The Copyright notice which has been re-written from the X11R6's one - should be clearer and is now present in every file. - - BUGS CORRECTED: - - lib/xpmP.h does no longer define a Boolean type which conflicts with - the Intrinsic definition. Instead the type Bool defined in Xlib is - used. - - neumann@watson.ibm.com (Gustaf Neumann) - -3.4a (94/03/29) - - BUGS CORRECTED: - - passing NULL as shapemask_return to XpmReadFileToPixmap and similar - functions was leading to a bus error. - - Dean Luick - -3.4 (94/03/14) - - IMPORTANT NOTE: - This version is not compatible with 3.3. Fortunately most people should - only need to recompile. - I apology for this but CDE/Motif have put heavy pressure to go that - way. The point is that I designed and released Xpm 3.3 in order to let - OSF include a clean version of Xpm in Motif 2.0. This new version was - not fully compatible with 3.2 but I thought it didn't matter since this - was going to be the first version used within Motif. Unfortunately CDE - was already using xpm-3.2 internally and requires both source and - binary backward compatibility. By the way I must say they didn't drop - us a single line to let us know they were using it and thus were - expecting stability. All this could have been avoided... - - However, since I had to go for a not compatible version I took this as - an opportunity to modify the lower level API, which was new in 3.3 and - which was somewhat clumsy, in order to provide yet a better API. - - The library has been modified to have both source and binary backward - compatibility with xpm-3.2. This implies it is not either source or - binary compatible with 3.3. The fields related to the 3.2 XpmInfos - mechanism have been put back into the XpmAttributes structure. The new - 3.3 XpmInfos struct has been renamed as XpmInfo to avoid conflict with - the old 3.2 flag which is back too. All the semantic related to the - XpmAttributes infos fields is back as well. - - So this new version provides a high level API which is fully - compatible with 3.2 and still provides the 3.3 lower level API - (XpmImage) with the XpmInfos struct renamed as XpmInfo. This leads to - some redundancy but this was the best I could do to satisfy both - CDE/Motif people who needed the backward compatibility and myself (who - always tries to provide you with the best ;-). - - Tests have been successfully performed with pixmap-2.1, pixmap-2.4, and - sxpm. - - ENHANCEMENTS: - - The colorTable member of the XpmAttributes structure is now an - (XpmColor*) in order to be compatible with an XpmImage colorTable. - However in order to be backward compatible this field is cast to - (XpmColor **), which is equivalent to (char ***), when it is used - with the old flags XpmInfos and XpmReturnInfos. To handle the new - type the new flags XpmColorTable and XpmReturnColorTable have been - defined. - - The XpmInfo struct has been extended to avoid having to deal with an - XpmAttributes at the lower level. The idea is that all the data - stored in an Xpm file can be retreive through both an XpmImage and - an XpmInfo struct. See the documentation for details. - - XpmUndefPixel is defined and exported by xpm.h in order to let - clients providing their own colorTable when writting out an Xpm file. - See the documentation for details. - - in sxpm/sxpm.c, set attribute XtNinput to True on toplevel widget. - Windows that don't "take" input, never get focus, as mandated by - the ICCM. - patch from Henrique Martins - - lib/Imakefile modified to build the shared library under IRIX 5. - patch from simon@lia.di.epfl.ch (Simon Leinen) - - NEW FEATURES: - - a new funtion and a new define should help client figuring out with - which Xpm library version they are working. These are - XpmIncludeVersion and XpmLibraryVersion(). - -3.3 (93/12/20) - - NEW FEATURES: - - XPM1 files are now supported. - - a new function is provided to get an error string related to the - returned error code. - - suggested by Detlef Schmier - - ENHANCEMENTS: - - gzip and gunzip are called with the -q option (quiet) - - patch from Chris P. Ross - - the parser is again more flexible about the way the strings are - distributed on lines. Actually a single line XPM file can be read. - - the documentation should be clearer about shapemask generation and - XpmAttributes valuemask. - - BUGS CORRECTED: - - reading some binary file was leading to a bus error. - - patch from Detlef Schmier - - the ? character is no longer used when writting an XPM file in order - to avoid possible ANSI trigraphs. - -3.3alpha (93/08/13) - - NEW FEATURES: - - a new level interface is provided to allow applications to do either - icon editing or data caching. - The XpmAttributes has been changed but most applications will just - need to be recompiled. - - new structures are provided to deal with the new lower level: - XpmImage, XpmColor, XpmInfos. - - - a separate distribution called xpm-contrib is available. This - includes the converters which used to be part of this distribution - plus: - two new appplications: - * nexpm to draw a pixmap in *any* existing window from - Ralph Betza - * xpmview to display a list of Xpm files from - Jean Michel Leon - - a hacky string to pixmap converter, provided by - Robert H. Forsman Jr. - - The Xpm editor called pixmap will also be part of this contrib. - This does not mean it is the best pixmap editor one can find - but it is the only one that I know of which tries to handle - all the features of this format. - - ENHANCEMENTS: - - the code to build XImage data has been optimized by - jules@x.co.uk (Julian Gosnell) - the old code is still available when compiling with the - -DWITHOUT_SPEEDUPS flag. - - - closecolor code was not re-entrant - - dbl@visual.com (David B. Lewis) - - fix gzip filename (*.gz and no longer *.z). - - Jason Patterson - - sxpm has 2 new options: - -nom to do not display the mask if there is one - -cp to override a color value with a given - pixel, i.e. sxpm plaid.xpm -cp red 4 - - also the '-s' adn '-p' options have been renamed to '-sc' and '-sp'. - - - xpm.h defines XpmFormat, XpmVersion, and XpmRevision numbers. - - BUGS CORRECTED: - - closecolor minor fix - - Jason Patterson - -3.2g (93/04/26) - - ENHANCEMENTS: - - much faster close colors - - piping from/to compressed files now handles GNU's gzip (.z) format - - added XpmColorKey attribute - ability to specify which visual's - colors to use (ie: now it's possible to read in a pixmap in a - color visual, but use the colors specified for monochrome). - - added -mono, -grey4, -grey and -color options to sxpm to demonstrate - the XpmColorKey attribute. - - Jason Patterson - - BUGS CORRECTED: - - fixed bug where redefining "None" as a pixel stopped mask generation - - minor SVR4 defines for - - fixed annoying closecolor bug related to read/write color cells - - fixed minor bug in color value -> pixel overloading - - manual updated to include new red/green/blue closeness attributes - - Jason Patterson - - - the top Imakefile was missing the depend target - - sxpm/Imakefile fixed so that -L../lib is set before the standard - library location. - - Vivek Khera - - - lib/xpmP.h now defines bcopy as memcpy for VMS (required by recent - versions of VMS) - - J. Daniel Smith - - - the lib/Imakefile didn't work with X11R4. - - -3.2f (93/03/17) - - NEW FEATURES: - - the library provides four new functions to deal with Xpm files - loaded in memory as single character strings buffers: - - XpmCreateImageFromBuffer - XpmCreatePixmapFromBuffer - XpmCreateBufferFromImage - XpmCreateBufferFromPixmap - - - in addition, as a convenience, two functions are provided to copy a - file in a buffer and to write a file from a buffer: - - XpmReadFileToBuffer - XpmWriteFileFromBuffer - - ENHANCEMENTS: - - Files are now dispatched in the following sub-directories: - lib, sxpm, and doc. - - Imakefiles will let you build a shared library as well as the static - one (with either X11R4 or X11R5). - - The documentation has been ported from LaTeX to FrameMaker and is - now included in the distribution in its PostScript form (doc/xpm.ps). - Source files are available on request. - Also the documentation has been reoreganized and includes a table of - contents and an index of the functions (the number of functions - increasing this became a requisite). - - BUGS CORRECTED: - - Many warnings have been fixed - patch from Daniel Dardailler - daniel@osf.org - -3.2e (93/02/05) - - ENHANCEMENTS: - - use XpmMalloc, XpmRealloc, XpmCalloc, and XpmFree which are defines - in xpmP.h. This should help people wanting to use their own functions. - - BUGS CORRECTED: - - Intrinsic.h is no longer included. - - bzero is defined as memset on SYSV and SVR4. - - some memory initialisation bug concerning XpmAttributes. - -3.2d (93/01/27) - - ENHANCEMENTS: - - compile on Solaris 2.0 - - patch from Clint Jeffery - - BUGS CORRECTED: - - shape masks are now set correctly for LSBFirst (Decs). - - pixmaps are now set correctly for 2 bit displays (Nexts). - - patch from Josef Leherbauer - - isspace was called on getc which fails when EOF is returned. - - Marelli Paolo - -3.2c (92/12/29) - - ENHANCEMENTS: - - parsing optimized for single and double characters color - - patch originally from Martin Brunecky - marbru@build1.auto-trol.com - - BUGS CORRECTED: - - XpmFreeExtensions was calling free on some argument without checking - it was not NULL. - - strdup was not correctly defined for systems which do not provide - it. - Hans-Peter Lichtin - - some bug in XpmCrDataFI.c - - Sven Delmas garfield@avalanche.cs.tu-berlin.de - - NOTE: - - there is still a bug with the creation of the clipmask on display of - depth 2 but I can't find a fix because unfortunately I don't have such - a rendering system and nobody gets the time to investigate for me. - -3.2b (92/10/19) - - ENHANCEMENTS: - - Create XpmReadFileToData and XpmWriteFileFromData - - Dan Greening - - added "close colors" support and ability to redefine color values - as pixels at load time, as well as color names - - Jason Patterson - - errors while parsing or allocating colors now revert to other - visual defaults, creating pixmap/image as expected, and returning - XpmSuccess. The old behaviour of XpmColorError being returned and no - pixmap/image being created can be retained by setting the - exactColors attribute. - - Jason Patterson - - BUGS CORRECTED: - - SVR4 defines for including instead of - - Jason Patterson - - attributes->extensions and attributes->nextensions fields were not - set correctly when no extensions present in file. - - Simon_Scott Cornish - -3.2a (92/08/17) - - ENHANCEMENTS: - - use the mock lisp hashing function instead of the gnu emacs one, - it is faster in some cases and never slower (I've not found any case). - - BUGS CORRECTED: - - function prototypes for ansi compilers. - - some memory initialization bugs (purify is just great for this). - - empty strings in extensions are now correctly handled. - -3.2 (92/07/06) - - NEW FEATURES: - - both format and functions handle extensions data. This allow people - to store additional data related to a pixmap. See documentation for - detail. - - sxpm supports the new option '-c' to use a private colormap. This is - useful when displaying pixmaps using a lot of colors. - - sxpm supports the new option '-v' (verbose) to get possible - extensions print out on standard error. - - ENHANCEMENTS: - - most of the code has been reworked to be improved and thus almost - every function is faster. It takes less than 6 seconds of real time on - a sun4 to display, with sxpm, a 487x635 pixmap using 213 colors, while - it takes 32 seconds with the old library! It takes 18 seconds to - display a 1279x1023 screen dump using 14 colors while xwud takes 10 - seconds. - Of course performance improvements are not always that great, they - depend on the size and number of colors but I'm sure everybody will - appreciate ;-) - I know how to improve it more but this will require changes in the - architecture so this is not for now. Some optimizations have been - contributed by gregor@kafka.saic.com (gregg hanna) and - jnc@csl.biosci.arizona.edu (John N. Calley). - - the Imakefile is modified to let you install sxpm - Rainer Klute - - - xpmP.h declares popen for Sequent platforms - Clinton Jeffery - - - XpmWriteFileFromImage/Pixmap rather than truncating the pixmap name - to the first dot changes dots to underscores to get a valid C syntax - name. - - - BUGS CORRECTED: - - there was a bug in the image creation function for some 24 bits - displays. It is fixed. - - allocated color pixels are now freed when an error occurs - - nusser@dec1.wu-wien.ac.at (Stefan Nusser) - - CHANGES TO THE DOC: - - the documentation describes the new XpmExtension structure and how - to use it with read and write functions. - -3.1 (92/02/03) - - ENHANCEMENTS: - - sxpm now have more standard options (mainly suggested by - Rainer Sinkwitz ): - - Usage: sxpm [options...] - Where options are: - - [-d host:display] Display to connect to. - [-g geom] Geometry of window. - [-hints] Set ResizeInc for window. - [-icon filename] Set pixmap for iconWindow. - [-s symbol_name color_name] Overwrite color defaults. - [-p symbol_name pixel_value] Overwrite color defaults. - [-plaid] Read the included plaid pixmap. - [filename] Read from file 'filename', and from - standard input if 'filename' is '-'. - [-o filename] Write to file 'filename', and to standard - output if 'filename' is '-'. - [-nod] Don't display in window. - [-rgb filename] Search color names in the rgb text file - 'filename'. - - if no input is specified sxpm reads from stdandard input. - - - - Xpm functions and Ppm converters now deal with multiword colornames. - patches from Rainer Sinkwitz . - - -3.0 (91/10/03) - - Functions name and defines have been modified again (sorry for that) - as follows: - - XpmReadPixmapFile XpmReadFileToPixmap - XpmWritePixmapFile XpmWriteFileFromPixmap - - XpmPixmapColorError XpmColorError - XpmPixmapSuccess XpmSuccess - XpmPixmapOpenFailed XpmOpenFailed - XpmPixmapFileInvalid XpmFileInvalid - XpmPixmapNoMemory XpmNoMemory - XpmPixmapColorFailed XpmColorFailed - - To update code using Xpm you can use the included shell script called - rename with the sed commands files name-3.0b-3.0c and name-3.0c-3.0. - Old names still valid though. - - NEW FEATURES: - - four new functions to work with images instead of pixmaps: - - XpmReadFileToImage - XpmWriteFileFromImage - XpmCreateImageFromData - XpmCreateDataFromImage - - ENHANCEMENTS: - Algorithms to create and scan images and pixmaps are based on the - MIT's R5 code, thus they are much cleaner than old ones and should - avoid any problem with any visual (yes, I trust MIT folks :-) - - BUGS CORRECTED: - Imakefile use INCDIR instead of ROOTDIR. - - CHANGES TO THE DOC: - - the documentation presents the four new functions. - -3.0c (91/09/18) - - In answer to request of people functions, types and defines names have - been changed as follows: - - XCreatePixmapFromData XpmCreatePixmapFromData - XCreateDataFromPixmap XpmCreateDataFromPixmap - XReadPixmapFile XpmReadPixmapFile - XWritePixmapFile XpmWritePixmapFile - XFreeXpmAttributes XpmFreeAttributes - - PixmapColorError XpmPixmapColorError - PixmapSuccess XpmPixmapSuccess - PixmapOpenFailed XpmPixmapOpenFailed - PixmapFileInvalid XpmPixmapFileInvalid - PixmapNoMemory XpmPixmapNoMemory - PixmapColorFailed XpmPixmapColorFailed - - ColorSymbol XpmColorSymbol - - Generally speaking every public name begins with 'Xpm' and every - private one with 'xpm'. This should avoid any possible conflict. - - Some files have also be renamed accordingly. - - NEW FEATURES: - - support for VMS and two new options for sxpm: icon and hints (see - manual for details) Richard Hess - - DEFINES in Imakefile and Makefile.noXtree allows you to set the - following: - - ZPIPE for un/compressing piped feature (default is on) - NEED_STRCASECMP for system which doesn't provide one (default - is off) - - - xpmtoppm.c has is own strstr function which is used if NEED_STRSTR - is defined when compiling - Hugues.Leroy@irisa.fr (Hugues Leroy). - - BUGS CORRECTED: - - many bugs have been fixed, especially for ansi compilers - - Doyle C. Davidson (doyle@doyled.b23b.ingr.com) and - Clifford D. Morrison (cdm%bigdaddy%edsr@uunet.UU.NET) - - parser is again a little more improved - -3.0b (91/09/12) - - This is a complete new version with a new API and where files and - structures have been renamed. So this should be taken as a new - starting release. - This release should be quickly followed by the 3.0 because I'm planning - to send it for X11R5 contrib which ends October 5th. - - NEW FEATURES: - - support for transparent color. - - support for hotspot. - - a new function: XCreateDataFromPixmap to create an XPM data from a - pixmap in order to be able to create a new pixmap from this data using - the XCreatePixmapFromData function later on. - - a new structure: XpmAttributes which replace the XpmInfo structure - and which leads to a much simpler API with less arguments. - - arguments such as visual, colormap and depth are optionnal, default - values are taken if omitted. - - parsing and allocating color failures don't simply break anymore. If - another default color can be found it is used and a PixmapColorError - is returned. In case no color can be found then it breaks and returns - PixmapColorFailed. - - for this reason the ErrorStatus codes are redefined as follows: - - null if full success - positive if partial success - negative if failure - - with: - #define PixmapColorError 1 - #define PixmapSuccess 0 - #define PixmapOpenFailed -1 - #define PixmapFileInvalid -2 - #define PixmapNoMemory -3 - #define PixmapColorFailed -4 - - - sxpm prints out a warning when a requested color could not be parsed - or alloc'ed, and an error when none has been found. - - sxpm handles pixmap with transparent color. For this purpose the - plaid_mask.xpm is added to the distribution. - - BUGS CORRECTED: - - I've again improved the memory management. - - the parser is also improved. - - when writting a pixmap to a file the variable name could be - "plaid.xpm" which is not valid in C. Now the extension name is cut off - to give "plaid" as variable name. - - reading multiple words colornames such as "peach puff" where leading - to non readable Xpm files. They are now skipped to have only single - word colorname. Lionel Mallet (mallet@ipvpel.unipv.it). - - parser was triggered by the "/" character inside string. - Doyle C. Davidson (doyle@doyled.b23b.ingr.com). This is corrected. - - sxpm maps the window only if the option "-nod" is not selected. - - CHANGES TO THE DOC: - - the documentation presents the new API and features. - -3.0a (91/04/10) - - This is an alpha version because it supports the new version of XPM, - but the library interface is still the same. Indeed it will change in - future release to get rid of obsolete stuff such as the type argument - of the XWritePixmapFile function. - - ******************************* WARNING ********************************* - The format is not anymore XPM2, it is XPM version 3 which is XPM2 - limited to the C syntax with the key word "XPM" in place of "XPM2 C". - The interface library has not changed yet but the type argument of - XWritePixmapFile and the type member of XpmInfo are not used anymore. - Meanwhile the library which is now called libXpm.a is backward - compatible as XPM2 files can be read. But the XWritePixmapFile - function only writes out XPM version 3 files. - ************************************************************************* - - NEW FEATURES: - - the library doesn't use global variables anymore, thus it should be - able to share it. - - sxpm has been rewritten on top of Xt, it can be used to convert - files from XPM2 to XPM version 3. - - xpm1to2c.perl has been upgraded to the new XPM version and renamed - as xpm1to3.perl - - ppmtoxpm2.c and ppmtoxpm2.1 have been upgraded too and renamed - ppmtoxpm.c and ppmtoxpm.1. In addition the xpmtoppm.c and xpmtoppm.1 - of the pbmplus package have been upgraded too. xpmtoppm can thus - convert XPM version 1 and 3 to a portable pixmap. These files should - replace the original ones which are part of the pbmplus package. See - the ppm.README file for more details. - - the library contains RCS variables which allows you to get revision - numbers with ident (which is part of the RCS package). The Id number - is an internal rcs number for my eyes only. The official one is found - in Version. - - BUGS CORRECTED: - - the memory management has been much improved in order to avoid - memory leaks. - - the XImage building algorythm has been changed to support correctly - different visual depths. There is special code to handle depths 1, 4, - 6, 8, 24, and 32 to build the image and send it in one whack, and - other depths are supported by building the image with XPutPixel which - is slow but sure. - - similar algorithms are used to read pixmaps and write them out. - - CHANGES TO THE DOC: - - the documentation presents the new XPM format. - - -2.8 (90/12/19) - - ******************************* WARNING ********************************* - Since the last release two structures have been modified and have now - bigger sizes, so ANY CODE USING THE libXPM2 NEEDS TO BE RECOMPILED. - ************************************************************************* - - NEW FEATURES: - - the ColorSymbol struct contains the new member 'pixel' which allow - to override default colors by giving a pixel value (in such a case - symbol value must be set to NULL), - - the XpmInfo struct contains the new member 'rgb_fname' in which one - can specify an rgb text file name while writing a pixmap with the - XWritePixmapFile function (otherwise this member should be set to - NULL). This way colorname will be searched and written out if found - instead of the RGB value, - - Imakefile originally provided by stolcke@ICSI.Berkeley.EDU, - - the old Makefile is now distributed as Makefile.noXtree and presents - install targets, - - the demo application is renamed sxpm (Show XPM), creates a window of - the size of the pixmap if no geometry is specified, prints out - messages instead of status when an error occurs, handles the new - option -p for overriding colors by giving a pixel value (not really - useful but is just here to show this new feature), handles the new - option -rgb for specifying an rgb text file, and ends on - keypress as buttonpress, - - defines for SYSV have been provided by Paul Breslaw - , - - the distribution includes a new directory called converters which - contains xpm1to2 and xpm1to2c perl converters and a ppmtoxpm2 - converter provided by Paul Breslaw who upgraded the original ppmtoxpm - written by Mark W. Snitily . - - CHANGES TO THE DOC: - - this file is created and will give old users a quick reference to - changes made from one release to the next one, - - documentation is changed to present the new ColorSymbol structure - and the way to override colors by giving a pixel value, and to present - the new XpmInfo structure and how to use it, - - a man page for sxpm is added to the distrib, - - the README file talks about sxpm and no more demo, and have - reference to the different converters. - -2.7 (90/11/12) - - NEW FEATURES: - - XReadPixmapFile reads from stdin if filename is NULL, - - XWritePixmapFile writes to stdin if filename is NULL, - - the demo application handles the new option -nod for no displaying - the pixmap in a window (useful when used as converter). - - CHANGES TO THE DOC: - - documentation about the new feature. - -2.6 (90/10/29) - - NEW FEATURES: - - from nazgul@alphalpha.com (Kee Hinckley): changes to make the - library usable as C++ code, and on Apollo without any warning. - - BUGS CORRECTED: - - from nazgul@alphalpha.com (Kee Hinckley): the xpm include files was - declaring XWritePixmapFile as taking in arg a Pixmap pointer instead - of a Pixmap. - -2.5 (90/10/17) - - BUGS CORRECTED: - - XWritePixmapFile was not closing the file while ending normaly. - -2.4 (90/09/06) - - NEW FEATURES: - - XReadPixmapFile reads from a piped uncompress if the given filename - ends by .Z or if filename.Z exists, - - XWritePixmapFile writes to a piped compress if the given filename - ends by .Z. - - BUGS CORRECTED: - - demo now deals with window manager. - - CHANGES TO THE DOC: - - documentation about compressed files management. - -2.3 (90/08/30) - - BUGS CORRECTED: - - handle monochrom display correctly, - - comments can be empty. - -2.2 (90/08/27) - - BUGS CORRECTED: - - when reading some invalid free was dumping core on some machine. - -2.1 (90/08/24) - - First distribution of XPM2. - diff --git a/src/xpm/copyrigh.t b/src/xpm/copyrigh.t deleted file mode 100644 index 3633944f55..0000000000 --- a/src/xpm/copyrigh.t +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (C) 1989-94 GROUPE BULL - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name of GROUPE BULL shall not be - * used in advertising or otherwise to promote the sale, use or other dealings - * in this Software without prior written authorization from GROUPE BULL. - */ - -Arnaud LE HORS BULL Research FRANCE -- Koala Project - (XPM - X PixMap format version 2 & 3) - Internet: lehors@sophia.inria.fr -Surface Mail: Arnaud LE HORS, INRIA - Sophia Antipolis, - 2004, route des Lucioles, 06565 Valbonne Cedex -- FRANCE - Voice phone: (33) 93.65.77.71, Fax: (33) 93 65 77 66, Telex: 97 00 50 F diff --git a/src/xpm/crbuffri.c b/src/xpm/crbuffri.c deleted file mode 100644 index ed83271ff4..0000000000 --- a/src/xpm/crbuffri.c +++ /dev/null @@ -1,324 +0,0 @@ -/* - * Copyright (C) 1989-94 GROUPE BULL - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name of GROUPE BULL shall not be - * used in advertising or otherwise to promote the sale, use or other dealings - * in this Software without prior written authorization from GROUPE BULL. - */ - -/*****************************************************************************\ -* XpmCrBufFrI.c: * -* * -* XPM library * -* Scan an image and possibly its mask and create an XPM buffer * -* * -* Developed by Arnaud Le Hors * -\*****************************************************************************/ - -#include "xpm34p.h" -#ifdef VMS -#include "sys$library:string.h" -#else -#if defined(SYSV) || defined(SVR4) -#include -#else -#include -#endif -#endif - -LFUNC(WriteColors, int, (char **dataptr, unsigned int *data_size, - unsigned int *used_size, XpmColor *colors, - unsigned int ncolors, unsigned int cpp)); - -LFUNC(WritePixels, void, (char *dataptr, unsigned int *used_size, - unsigned int width, unsigned int height, - unsigned int cpp, unsigned int *pixels, - XpmColor *colors)); - -LFUNC(WriteExtensions, void, (char *dataptr, unsigned int *used_size, - XpmExtension *ext, unsigned int num)); - -LFUNC(ExtensionsSize, int, (XpmExtension *ext, unsigned int num)); -LFUNC(CommentsSize, int, (XpmInfo *info)); - -int -XpmCreateBufferFromImage(Display *display, char **buffer_return, XImage *image, - XImage *shapeimage, XpmAttributes *attributes) -{ - XpmImage xpmimage; - XpmInfo info; - int ErrorStatus; - - /* initialize return value */ - if (buffer_return) - *buffer_return = NULL; - - /* create an XpmImage from the image */ - ErrorStatus = XpmCreateXpmImageFromImage(display, image, shapeimage, - &xpmimage, attributes); - if (ErrorStatus != XpmSuccess) - return (ErrorStatus); - - /* create the buffer from the XpmImage */ - if (attributes) { - xpmSetInfo(&info, attributes); - ErrorStatus = - XpmCreateBufferFromXpmImage(buffer_return, &xpmimage, &info); - } else - ErrorStatus = - XpmCreateBufferFromXpmImage(buffer_return, &xpmimage, NULL); - - /* free the XpmImage */ - XpmFreeXpmImage(&xpmimage); - - return (ErrorStatus); -} - - -#undef RETURN -#define RETURN(status) \ -{ \ - if (ptr) \ - XpmFree(ptr); \ - return(status); \ -} - -int -XpmCreateBufferFromXpmImage(char **buffer_return, XpmImage *image, XpmInfo *info) -{ - /* calculation variables */ - int ErrorStatus; - char buf[BUFSIZ]; - unsigned int cmts, extensions, ext_size = 0; - unsigned int l, cmt_size = 0; - char *ptr = NULL, *p; - unsigned int ptr_size, used_size; - - *buffer_return = NULL; - - cmts = info && (info->valuemask & XpmComments); - extensions = info && (info->valuemask & XpmExtensions) - && info->nextensions; - - /* compute the extensions and comments size */ - if (extensions) - ext_size = ExtensionsSize(info->extensions, info->nextensions); - if (cmts) - cmt_size = CommentsSize(info); - - /* write the header line */ - sprintf(buf, "/* XPM */\nstatic char * image_name[] = {\n"); - used_size = strlen(buf); - ptr_size = used_size + ext_size + cmt_size + 1; - ptr = (char *) XpmMalloc(ptr_size); - if (!ptr) - return XpmNoMemory; - strcpy(ptr, buf); - - /* write the values line */ - if (cmts && info->hints_cmt) { - sprintf(ptr + used_size, "/*%s*/\n", info->hints_cmt); - used_size += strlen(info->hints_cmt) + 5; - } - sprintf(buf, "\"%d %d %d %d", image->width, image->height, - image->ncolors, image->cpp); - l = strlen(buf); - - if (info && (info->valuemask & XpmHotspot)) { - sprintf(buf + l, " %d %d", info->x_hotspot, info->y_hotspot); - l = strlen(buf); - } - if (extensions) { - sprintf(buf + l, " XPMEXT"); - l = strlen(buf); - } - sprintf(buf + l, "\",\n"); - l = strlen(buf); - ptr_size += l; - p = (char *) XpmRealloc(ptr, ptr_size); - if (!p) - RETURN(XpmNoMemory); - ptr = p; - strcpy(ptr + used_size, buf); - used_size += l; - - /* write colors */ - if (cmts && info->colors_cmt) { - sprintf(ptr + used_size, "/*%s*/\n", info->colors_cmt); - used_size += strlen(info->colors_cmt) + 5; - } - ErrorStatus = WriteColors(&ptr, &ptr_size, &used_size, - image->colorTable, image->ncolors, image->cpp); - - if (ErrorStatus != XpmSuccess) - RETURN(ErrorStatus); - - /* - * now we know the exact size we needed, realloc the data 4 = 1 (for - * '"') + 3 (for '",\n') 1 = - 2 is because the last line does not end - * with ',\n' + 3 (for '};\n') - */ - ptr_size += image->height * (image->width * image->cpp + 4) + 1; - - p = (char *) XpmRealloc(ptr, ptr_size); - if (!p) - RETURN(XpmNoMemory); - ptr = p; - - /* print pixels */ - if (cmts && info->pixels_cmt) { - sprintf(ptr + used_size, "/*%s*/\n", info->pixels_cmt); - used_size += strlen(info->pixels_cmt) + 5; - } - WritePixels(ptr + used_size, &used_size, image->width, image->height, - image->cpp, image->data, image->colorTable); - - /* print extensions */ - if (extensions) - WriteExtensions(ptr + used_size, &used_size, - info->extensions, info->nextensions); - - /* close the array */ - sprintf(ptr + used_size, "};\n"); - - *buffer_return = ptr; - - return (XpmSuccess); -} - -static int -WriteColors(char **dataptr, unsigned int *data_size, unsigned int *used_size, - XpmColor *colors, unsigned int ncolors, unsigned int cpp) -{ - char buf[BUFSIZ]; - unsigned int a, key, l; - char *s, *s2; - char **defaults; - - *buf = '"'; - for (a = 0; a < ncolors; a++, colors++) { - - defaults = (char **) colors; - s = buf + 1; - strncpy(s, *defaults++, cpp); - s += cpp; - - for (key = 1; key <= NKEYS; key++, defaults++) { - if (s2 = *defaults) { - sprintf(s, "\t%s %s", xpmColorKeys[key - 1], s2); - s += strlen(s); - } - } - strcpy(s, "\",\n"); - l = strlen(buf); - s = (char *) XpmRealloc(*dataptr, *data_size + l); - if (!s) - return (XpmNoMemory); - *data_size += l; - strcpy(s + *used_size, buf); - *used_size += l; - *dataptr = s; - } - return (XpmSuccess); -} - -static void -WritePixels(char *dataptr, unsigned int *used_size, unsigned int width, unsigned int height, - unsigned int cpp, unsigned int *pixels, XpmColor *colors) -{ - char *s = dataptr; - unsigned int x, y, h; - - h = height - 1; - for (y = 0; y < h; y++) { - *s++ = '"'; - for (x = 0; x < width; x++, pixels++) { - strncpy(s, colors[*pixels].string, cpp); - s += cpp; - } - strcpy(s, "\",\n"); - s += 3; - } - /* duplicate some code to avoid a test in the loop */ - *s++ = '"'; - for (x = 0; x < width; x++, pixels++) { - strncpy(s, colors[*pixels].string, cpp); - s += cpp; - } - *s++ = '"'; - *used_size += s - dataptr; -} - -static int -ExtensionsSize(XpmExtension *ext, unsigned int num) -{ - unsigned int x, y, a, size; - char **line; - - size = 0; - for (x = 0; x < num; x++, ext++) { - /* 11 = 10 (for ',\n"XPMEXT ') + 1 (for '"') */ - size += strlen(ext->name) + 11; - a = ext->nlines; - for (y = 0, line = ext->lines; y < a; y++, line++) - /* 4 = 3 (for ',\n"') + 1 (for '"') */ - size += strlen(*line) + 4; - } - /* 13 is for ',\n"XPMENDEXT"' */ - return size + 13; -} - -static void -WriteExtensions(char *dataptr, unsigned int *used_size, XpmExtension *ext, unsigned int num) -{ - unsigned int x, y, a; - char **line; - char *s = dataptr; - - for (x = 0; x < num; x++, ext++) { - sprintf(s, ",\n\"XPMEXT %s\"", ext->name); - s += strlen(ext->name) + 11; - a = ext->nlines; - for (y = 0, line = ext->lines; y < a; y++, line++) { - sprintf(s, ",\n\"%s\"", *line); - s += strlen(*line) + 4; - } - } - strcpy(s, ",\n\"XPMENDEXT\""); - *used_size += s - dataptr + 13; -} - -static int -CommentsSize(XpmInfo *info) -{ - int size = 0; - - /* 5 = 2 (for "/_*") + 3 (for "*_/\n") */ - if (info->hints_cmt) - size += 5 + strlen(info->hints_cmt); - - if (info->colors_cmt) - size += 5 + strlen(info->colors_cmt); - - if (info->pixels_cmt) - size += 5 + strlen(info->pixels_cmt); - - return size; -} diff --git a/src/xpm/crbuffrp.c b/src/xpm/crbuffrp.c deleted file mode 100644 index 9a5b148b6b..0000000000 --- a/src/xpm/crbuffrp.c +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright (C) 1989-94 GROUPE BULL - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name of GROUPE BULL shall not be - * used in advertising or otherwise to promote the sale, use or other dealings - * in this Software without prior written authorization from GROUPE BULL. - */ - -/*****************************************************************************\ -* XpmCrBufFrP.c: * -* * -* XPM library * -* Scan a pixmap and possibly its mask and create an XPM buffer * -* * -* Developed by Arnaud Le Hors * -\*****************************************************************************/ - -#ifndef FOR_MSW - -#include "xpm34p.h" -#ifdef VMS -#include "sys$library:string.h" -#else -#if defined(SYSV) || defined(SVR4) -#include -#else -#include -#endif -#endif - -int -XpmCreateBufferFromPixmap(Display *display, char **buffer_return, Pixmap pixmap, Pixmap shapemask, - XpmAttributes *attributes) -{ - XImage *ximage = NULL; - XImage *shapeimage = NULL; - unsigned int width = 0; - unsigned int height = 0; - int ErrorStatus; - - /* get geometry */ - if (attributes && attributes->valuemask & XpmSize) { - width = attributes->width; - height = attributes->height; - } - /* get the ximages */ - if (pixmap) - xpmCreateImageFromPixmap(display, pixmap, &ximage, &width, &height); - if (shapemask) - xpmCreateImageFromPixmap(display, shapemask, &shapeimage, - &width, &height); - - /* create the buffer */ - ErrorStatus = XpmCreateBufferFromImage(display, buffer_return, ximage, - shapeimage, attributes); - - /* destroy the ximages */ - if (ximage) - XDestroyImage(ximage); - if (shapeimage) - XDestroyImage(shapeimage); - - return (ErrorStatus); -} -#endif diff --git a/src/xpm/crdatfri.c b/src/xpm/crdatfri.c deleted file mode 100644 index fe9b016e17..0000000000 --- a/src/xpm/crdatfri.c +++ /dev/null @@ -1,304 +0,0 @@ -/* - * Copyright (C) 1989-94 GROUPE BULL - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name of GROUPE BULL shall not be - * used in advertising or otherwise to promote the sale, use or other dealings - * in this Software without prior written authorization from GROUPE BULL. - */ - -/*****************************************************************************\ -* XpmCrDataFI.c: * -* * -* XPM library * -* Scan an image and possibly its mask and create an XPM array * -* * -* Developed by Arnaud Le Hors * -\*****************************************************************************/ - -#include "xpm34p.h" -#ifdef VMS -#include "sys$library:string.h" -#else -#if defined(SYSV) || defined(SVR4) -#include -#else -#include -#endif -#endif - -LFUNC(CreateColors, int, (char **dataptr, unsigned int *data_size, - XpmColor *colors, unsigned int ncolors, - unsigned int cpp)); - -LFUNC(CreatePixels, void, (char **dataptr, unsigned int width, - unsigned int height, unsigned int cpp, - unsigned int *pixels, XpmColor *colors)); - -LFUNC(CountExtensions, void, (XpmExtension *ext, unsigned int num, - unsigned int *ext_size, - unsigned int *ext_nlines)); - -LFUNC(CreateExtensions, void, (char **dataptr, unsigned int offset, - XpmExtension *ext, unsigned int num, - unsigned int ext_nlines)); - -int -XpmCreateDataFromImage(Display *display, char ***data_return, XImage *image, - XImage *shapeimage, XpmAttributes *attributes) -{ - XpmImage xpmimage; - XpmInfo info; - int ErrorStatus; - - /* initialize return value */ - if (data_return) - *data_return = NULL; - - /* create an XpmImage from the image */ - ErrorStatus = XpmCreateXpmImageFromImage(display, image, shapeimage, - &xpmimage, attributes); - if (ErrorStatus != XpmSuccess) - return (ErrorStatus); - - /* create the data from the XpmImage */ - if (attributes) { - xpmSetInfo(&info, attributes); - ErrorStatus = XpmCreateDataFromXpmImage(data_return, &xpmimage, &info); - } else - ErrorStatus = XpmCreateDataFromXpmImage(data_return, &xpmimage, NULL); - - /* free the XpmImage */ - XpmFreeXpmImage(&xpmimage); - - return (ErrorStatus); -} - -#undef RETURN -#define RETURN(status) \ -{ \ - if (header) { \ - for (l = 0; l < header_nlines; l++) \ - if (header[l]) \ - XpmFree(header[l]); \ - XpmFree(header); \ - } \ - return(status); \ -} - -int -XpmCreateDataFromXpmImage(char ***data_return, XpmImage *image, XpmInfo *info) -{ - /* calculation variables */ - int ErrorStatus; - char buf[BUFSIZ]; - char **header = NULL, **data, **sptr, **sptr2, *s; - unsigned int header_size, header_nlines; - unsigned int data_size, data_nlines; - unsigned int extensions = 0, ext_size = 0, ext_nlines = 0; - unsigned int offset, l, n; - - *data_return = NULL; - - extensions = info && (info->valuemask & XpmExtensions) - && info->nextensions; - - /* compute the number of extensions lines and size */ - if (extensions) - CountExtensions(info->extensions, info->nextensions, - &ext_size, &ext_nlines); - - /* - * alloc a temporary array of char pointer for the header section which - * is the hints line + the color table lines - */ - header_nlines = 1 + image->ncolors; - header_size = sizeof(char *) * header_nlines; - header = (char **) XpmCalloc(header_size, sizeof(char *)); - if (!header) - return (XpmNoMemory); - - /* print the hints line */ - s = buf; - sprintf(s, "%d %d %d %d", image->width, image->height, - image->ncolors, image->cpp); - s += strlen(s); - - if (info && (info->valuemask & XpmHotspot)) { - sprintf(s, " %d %d", info->x_hotspot, info->y_hotspot); - s += strlen(s); - } - if (extensions) - sprintf(s, " XPMEXT"); - - l = strlen(buf) + 1; - *header = (char *) XpmMalloc(l); - if (!*header) - RETURN(XpmNoMemory); - header_size += l; - strcpy(*header, buf); - - /* print colors */ - ErrorStatus = CreateColors(header + 1, &header_size, - image->colorTable, image->ncolors, image->cpp); - - if (ErrorStatus != XpmSuccess) - RETURN(ErrorStatus); - - /* now we know the size needed, alloc the data and copy the header lines */ - offset = image->width * image->cpp + 1; - data_size = header_size + (image->height + ext_nlines) * sizeof(char *) - + image->height * offset + ext_size; - - data = (char **) XpmMalloc(data_size); - if (!data) - RETURN(XpmNoMemory); - - data_nlines = header_nlines + image->height + ext_nlines; - *data = (char *) (data + data_nlines); - n = image->ncolors; - for (l = 0, sptr = data, sptr2 = header; l <= n; l++, sptr++, sptr2++) { - strcpy(*sptr, *sptr2); - *(sptr + 1) = *sptr + strlen(*sptr2) + 1; - } - - /* print pixels */ - data[header_nlines] = (char *) data + header_size - + (image->height + ext_nlines) * sizeof(char *); - - CreatePixels(data + header_nlines, image->width, image->height, - image->cpp, image->data, image->colorTable); - - /* print extensions */ - if (extensions) - CreateExtensions(data + header_nlines + image->height - 1, offset, - info->extensions, info->nextensions, - ext_nlines); - - *data_return = data; - - RETURN(XpmSuccess); -} - -static int -CreateColors(char **dataptr, unsigned int *data_size, XpmColor *colors, unsigned int ncolors, unsigned int cpp) -{ - char buf[BUFSIZ]; - unsigned int a, key, l; - char *s, *s2; - char **defaults; - - for (a = 0; a < ncolors; a++, colors++, dataptr++) { - - defaults = (char **) colors; - strncpy(buf, *defaults++, cpp); - s = buf + cpp; - - for (key = 1; key <= NKEYS; key++, defaults++) { - if (s2 = *defaults) { - sprintf(s, "\t%s %s", xpmColorKeys[key - 1], s2); - s += strlen(s); - } - } - l = strlen(buf) + 1; - s = (char *) XpmMalloc(l); - if (!s) - return (XpmNoMemory); - *data_size += l; - strcpy(s, buf); - *dataptr = s; - } - return (XpmSuccess); -} - -static void -CreatePixels(char **dataptr, unsigned int width, unsigned int height, unsigned int cpp, - unsigned int *pixels, XpmColor *colors) -{ - char *s; - unsigned int x, y, h, offset; - - h = height - 1; - offset = width * cpp + 1; - for (y = 0; y < h; y++, dataptr++) { - s = *dataptr; - for (x = 0; x < width; x++, pixels++) { - strncpy(s, colors[*pixels].string, cpp); - s += cpp; - } - *s = '\0'; - *(dataptr + 1) = *dataptr + offset; - } - /* duplicate some code to avoid a test in the loop */ - s = *dataptr; - for (x = 0; x < width; x++, pixels++) { - strncpy(s, colors[*pixels].string, cpp); - s += cpp; - } - *s = '\0'; -} - -static void -CountExtensions(XpmExtension *ext, unsigned int num, unsigned int *ext_size, unsigned int *ext_nlines) -{ - unsigned int x, y, a, size, nlines; - char **line; - - size = 0; - nlines = 0; - for (x = 0; x < num; x++, ext++) { - /* 1 for the name */ - nlines += ext->nlines + 1; - /* 8 = 7 (for "XPMEXT ") + 1 (for 0) */ - size += strlen(ext->name) + 8; - a = ext->nlines; - for (y = 0, line = ext->lines; y < a; y++, line++) - size += strlen(*line) + 1; - } - /* 10 and 1 are for the ending "XPMENDEXT" */ - *ext_size = size + 10; - *ext_nlines = nlines + 1; -} - -static void -CreateExtensions(char **dataptr, unsigned int offset, XpmExtension *ext, unsigned int num, unsigned int ext_nlines) -{ - unsigned int x, y, a, b; - char **line; - - *(dataptr + 1) = *dataptr + offset; - dataptr++; - a = 0; - for (x = 0; x < num; x++, ext++) { - sprintf(*dataptr, "XPMEXT %s", ext->name); - a++; - if (a < ext_nlines) - *(dataptr + 1) = *dataptr + strlen(ext->name) + 8; - dataptr++; - b = ext->nlines; - for (y = 0, line = ext->lines; y < b; y++, line++) { - strcpy(*dataptr, *line); - a++; - if (a < ext_nlines) - *(dataptr + 1) = *dataptr + strlen(*line) + 1; - dataptr++; - } - } - strcpy(*dataptr, "XPMENDEXT"); -} diff --git a/src/xpm/crdatfrp.c b/src/xpm/crdatfrp.c deleted file mode 100644 index 63094d7155..0000000000 --- a/src/xpm/crdatfrp.c +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (C) 1989-94 GROUPE BULL - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name of GROUPE BULL shall not be - * used in advertising or otherwise to promote the sale, use or other dealings - * in this Software without prior written authorization from GROUPE BULL. - */ - -/*****************************************************************************\ -* XpmCrDataFP.c: * -* * -* XPM library * -* Scan a pixmap and possibly its mask and create an XPM array * -* * -* Developed by Arnaud Le Hors * -\*****************************************************************************/ - -#ifndef FOR_MSW - -#include "xpm34p.h" -#ifdef VMS -#include "sys$library:string.h" -#else -#if defined(SYSV) || defined(SVR4) -#include -#else -#include -#endif -#endif - -int -XpmCreateDataFromPixmap(Display *display, char ***data_return, Pixmap pixmap, - Pixmap shapemask, XpmAttributes *attributes) -{ - XImage *ximage = NULL; - XImage *shapeimage = NULL; - unsigned int width = 0; - unsigned int height = 0; - int ErrorStatus; - - /* get geometry */ - if (attributes && attributes->valuemask & XpmSize) { - width = attributes->width; - height = attributes->height; - } - /* get the ximages */ - if (pixmap) - xpmCreateImageFromPixmap(display, pixmap, &ximage, &width, &height); - if (shapemask) - xpmCreateImageFromPixmap(display, shapemask, &shapeimage, - &width, &height); - - /* create the data */ - ErrorStatus = XpmCreateDataFromImage(display, data_return, ximage, - shapeimage, attributes); - - /* destroy the ximages */ - if (ximage) - XDestroyImage(ximage); - if (shapeimage) - XDestroyImage(shapeimage); - - return (ErrorStatus); -} - -#endif diff --git a/src/xpm/create.c b/src/xpm/create.c deleted file mode 100644 index 71d33caadb..0000000000 --- a/src/xpm/create.c +++ /dev/null @@ -1,1461 +0,0 @@ -/* - * Copyright (C) 1989-94 GROUPE BULL - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name of GROUPE BULL shall not be - * used in advertising or otherwise to promote the sale, use or other dealings - * in this Software without prior written authorization from GROUPE BULL. - */ - -/*****************************************************************************\ -* create.c: * -* * -* XPM library * -* Create an X image and possibly its related shape mask * -* from the given xpmInternAttrib. * -* * -* Developed by Arnaud Le Hors * -\*****************************************************************************/ - -/* - * The code related to FOR_MSW has been added by - * HeDu (hedu@cul-ipn.uni-kiel.de) 4/94 - */ - -#include "xpm34p.h" -#ifdef VMS -#include "sys$library:ctype.h" -#else -#include -#endif - -LFUNC(xpmVisualType, int, (Visual *visual)); - -#ifndef FOR_MSW -LFUNC(SetCloseColor, int, (Display *display, Colormap colormap, - Visual *visual, XColor *col, - Pixel *image_pixel, Pixel *mask_pixel, - Pixel **pixels, unsigned int *npixels, - XpmAttributes *attributes, - XColor *cols, int ncols)); -#else -/* let the window system take care of close colors */ -#endif - -LFUNC(SetColor, int, (Display *display, Colormap colormap, Visual *visual, - char *colorname, unsigned int color_index, - Pixel *image_pixel, Pixel *mask_pixel, - unsigned int *mask_pixel_index, Pixel **pixels, - unsigned int *npixels, XpmAttributes *attributes, - XColor *cols, int ncols)); - -LFUNC(CreateXImage, int, (Display *display, Visual *visual, - unsigned int depth, unsigned int width, - unsigned int height, XImage **image_return)); - -LFUNC(CreateColors, int, (Display *display, XpmAttributes *attributes, - XpmColor *ct, unsigned int ncolors, Pixel *ip, - Pixel *mp, unsigned int *mask_pixel, - Pixel **pixels, unsigned int *npixels)); - -#ifndef FOR_MSW -/* XImage pixel routines */ -LFUNC(SetImagePixels, void, (XImage *image, unsigned int width, - unsigned int height, unsigned int *pixelindex, - Pixel *pixels)); - -LFUNC(SetImagePixels32, void, (XImage *image, unsigned int width, - unsigned int height, unsigned int *pixelindex, - Pixel *pixels)); - -LFUNC(SetImagePixels16, void, (XImage *image, unsigned int width, - unsigned int height, unsigned int *pixelindex, - Pixel *pixels)); - -LFUNC(SetImagePixels8, void, (XImage *image, unsigned int width, - unsigned int height, unsigned int *pixelindex, - Pixel *pixels)); - -LFUNC(SetImagePixels1, void, (XImage *image, unsigned int width, - unsigned int height, unsigned int *pixelindex, - Pixel *pixels)); -#else /* ndef FOR_MSW */ -/* FOR_MSW pixel routine */ -LFUNC(MSWSetImagePixels, void, (Display *dc, XImage *image, - unsigned int width, unsigned int height, - unsigned int *pixelindex, Pixel *pixels)); -#endif /* ndef FOR_MSW */ - -#ifdef NEED_STRCASECMP -FUNC(strcasecmp, int, (char *s1, char *s2)); - -/* - * in case strcasecmp is not provided by the system here is one - * which does the trick - */ -int -strcasecmp(register char *s1, register char *s2) -{ - register int c1, c2; - - while (*s1 && *s2) { - c1 = tolower(*s1); - c2 = tolower(*s2); - if (c1 != c2) - return (c1 - c2); - s1++; - s2++; - } - return (int) (*s1 - *s2); -} - -#endif - -/* - * return the default color key related to the given visual - */ -static int -xpmVisualType(Visual *visual) -{ -#ifndef FOR_MSW -/* Xlib.h defines this to be c_class or class, depending - * on whether we're doing C++ or C - */ -#if defined(__cplusplus) || defined(c_plusplus) - switch (visual->c_class) -#else - switch (visual->class) -#endif - { - case StaticGray: - case GrayScale: - switch (visual->map_entries) { - case 2: - return (XPM_MONO); - case 4: - return (XPM_GRAY4); - default: - return (XPM_GRAY); - } - default: - return (XPM_COLOR); - } -#else - /* there should be a similar switch for MSW */ - return (XPM_COLOR); -#endif -} - - -typedef struct { - int cols_index; - long closeness; -} CloseColor; - -static int -closeness_cmp(const void *a, const void *b) -{ - CloseColor *x = (CloseColor *) a, *y = (CloseColor *) b; - - /* cast to int as qsort requires */ - return (int) (x->closeness - y->closeness); -} - -#ifndef FOR_MSW -/* - * set a close color in case the exact one can't be set - * return 0 if success, 1 otherwise. - */ - -static int -SetCloseColor(Display *display, Colormap colormap, Visual *visual, XColor *col, - Pixel *image_pixel, Pixel *mask_pixel, Pixel **pixels, unsigned int *npixels, XpmAttributes *attributes, - XColor *cols, int ncols) -{ - - /* - * Allocation failed, so try close colors. To get here the visual must - * be GreyScale, PseudoColor or DirectColor (or perhaps StaticColor? - * What about sharing systems like QDSS?). Beware: we have to treat - * DirectColor differently. - */ - - - long int red_closeness, green_closeness, blue_closeness; - int n; - - if (attributes && (attributes->valuemask & XpmCloseness)) - red_closeness = green_closeness = blue_closeness = - attributes->closeness; - else { - red_closeness = attributes->red_closeness; - green_closeness = attributes->green_closeness; - blue_closeness = attributes->blue_closeness; - } - - - /* - * We sort the colormap by closeness and try to allocate the color - * closest to the target. If the allocation of this close color fails, - * which almost never happens, then one of two scenarios is possible. - * Either the colormap must have changed (since the last close color - * allocation or possibly while we were sorting the colormap), or the - * color is allocated as Read/Write by some other client. (Note: X - * _should_ allow clients to check if a particular color is Read/Write, - * but it doesn't! :-( ). We cannot determine which of these scenarios - * occurred, so we try the next closest color, and so on, until no more - * colors are within closeness of the target. If we knew that the - * colormap had changed, we could skip this sequence. - * - * If _none_ of the colors within closeness of the target can be allocated, - * then we can finally be pretty sure that the colormap has actually - * changed. In this case we try to allocate the original color (again), - * then try the closecolor stuff (again)... - * - * In theory it would be possible for an infinite loop to occur if another - * process kept changing the colormap every time we sorted it, so we set - * a maximum on the number of iterations. After this many tries, we use - * XGrabServer() to ensure that the colormap remains unchanged. - * - * This approach gives particularly bad worst case performance - as many as - * colormap reads and sorts may be needed, and as - * many as * attempted allocations - * may fail. On an 8-bit system, this means as many as 3 colormap reads, - * 3 sorts and 768 failed allocations per execution of this code! - * Luckily, my experiments show that in general use in a typical 8-bit - * color environment only about 1 in every 10000 allocations fails to - * succeed in the fastest possible time. So virtually every time what - * actually happens is a single sort followed by a successful allocate. - * The very first allocation also costs a colormap read, but no further - * reads are usually necessary. - */ - -#define ITERATIONS 2 /* more than one is almost never - * necessary */ - - for (n = 0; n <= ITERATIONS; ++n) { - CloseColor *closenesses = - (CloseColor *) XpmCalloc(ncols, sizeof(CloseColor)); - int i, c; - - for (i = 0; i < ncols; ++i) { /* build & sort closenesses table */ -#define COLOR_FACTOR 3 -#define BRIGHTNESS_FACTOR 1 - - closenesses[i].cols_index = i; - closenesses[i].closeness = - COLOR_FACTOR * (abs((long) col->red - (long) cols[i].red) - + abs((long) col->green - (long) cols[i].green) - + abs((long) col->blue - (long) cols[i].blue)) - + BRIGHTNESS_FACTOR * abs(((long) col->red + - (long) col->green + - (long) col->blue) - - ((long) cols[i].red + - (long) cols[i].green + - (long) cols[i].blue)); - } - qsort(closenesses, ncols, sizeof(CloseColor), closeness_cmp); - - i = 0; - c = closenesses[i].cols_index; - while ((long) cols[c].red >= (long) col->red - red_closeness && - (long) cols[c].red <= (long) col->red + red_closeness && - (long) cols[c].green >= (long) col->green - green_closeness && - (long) cols[c].green <= (long) col->green + green_closeness && - (long) cols[c].blue >= (long) col->blue - blue_closeness && - (long) cols[c].blue <= (long) col->blue + blue_closeness) { - if (XAllocColor(display, colormap, &cols[c])) { - if (n == ITERATIONS) - XUngrabServer(display); - XpmFree(closenesses); - *image_pixel = cols[c].pixel; - *mask_pixel = 1; - (*pixels)[*npixels] = cols[c].pixel; - (*npixels)++; - return (0); - } else { - ++i; - if (i == ncols) - break; - c = closenesses[i].cols_index; - } - } - - /* Couldn't allocate _any_ of the close colors! */ - - if (n == ITERATIONS) - XUngrabServer(display); - XpmFree(closenesses); - - if (i == 0 || i == ncols) /* no color close enough or cannot */ - return (1); /* alloc any color (full of r/w's) */ - - if (XAllocColor(display, colormap, col)) { - *image_pixel = col->pixel; - *mask_pixel = 1; - (*pixels)[*npixels] = col->pixel; - (*npixels)++; - return (0); - } else { /* colormap has probably changed, so - * re-read... */ - if (n == ITERATIONS - 1) - XGrabServer(display); - -#if 0 - if (visual->c_class == DirectColor) { - /* TODO */ - } else -#endif - XQueryColors(display, colormap, cols, ncols); - } - } - return (1); -} - -#define USE_CLOSECOLOR attributes && \ -(((attributes->valuemask & XpmCloseness) && attributes->closeness != 0) \ - || ((attributes->valuemask & XpmRGBCloseness) && \ - attributes->red_closeness != 0 \ - && attributes->green_closeness != 0 \ - && attributes->blue_closeness != 0)) - -#else - /* FOR_MSW part */ - /* nothing to do here, the window system does it */ -#endif - -/* - * set the color pixel related to the given colorname, - * return 0 if success, 1 otherwise. - */ - -static int -SetColor(Display *display, Colormap colormap, Visual *visual, char *colorname, unsigned int color_index, - Pixel *image_pixel, Pixel *mask_pixel, unsigned int *mask_pixel_index, - Pixel **pixels, unsigned int *npixels, XpmAttributes *attributes, XColor *cols, int ncols) -{ - XColor xcolor; - - if (strcasecmp(colorname, TRANSPARENT_COLOR)) { -#ifdef wx_msw - if (!XParseColor(display, (Colormap *)colormap, colorname, &xcolor)) -#else - if (!XParseColor(display, (Colormap)colormap, colorname, &xcolor)) -#endif - return (1); -#ifdef wx_msw - if (!XAllocColor(display, (Colormap *)colormap, &xcolor)) { -#else - if (!XAllocColor(display, (Colormap)colormap, &xcolor)) { -#endif -#ifndef FOR_MSW - if (USE_CLOSECOLOR) - return (SetCloseColor(display, colormap, visual, &xcolor, - image_pixel, mask_pixel, pixels, npixels, - attributes, cols, ncols)); - else -#endif /* ndef FOR_MSW */ - return (1); - } - *image_pixel = xcolor.pixel; - *mask_pixel = 1; - (*pixels)[*npixels] = xcolor.pixel; - (*npixels)++; - } else { - *image_pixel = 0; - *mask_pixel = 0; - *mask_pixel_index = color_index; /* store the color table index */ - } - return (0); -} - - -static int -CreateColors(Display *display, XpmAttributes *attributes, XpmColor *ct, unsigned int ncolors, - Pixel *ip, Pixel *mp, unsigned int *mask_pixel, Pixel **pixels, unsigned int *npixels) -{ - /* variables stored in the XpmAttributes structure */ - Visual *visual; - Colormap colormap; - XpmColorSymbol *colorsymbols; - unsigned int numsymbols; - - char *colorname; - unsigned int a, b, l; - int pixel_defined; - unsigned int key; - XpmColorSymbol *symbol; - char **defaults; - int ErrorStatus = XpmSuccess; - char *s; - int default_index; - - XColor *cols = NULL; - unsigned int ncols = 0; - - /* - * retrieve information from the XpmAttributes - */ - if (attributes && attributes->valuemask & XpmColorSymbols) { - colorsymbols = attributes->colorsymbols; - numsymbols = attributes->numsymbols; - } else - numsymbols = 0; - - if (attributes && attributes->valuemask & XpmVisual) - visual = attributes->visual; - else - visual = XDefaultVisual(display, XDefaultScreen(display)); - - if (attributes && attributes->valuemask & XpmColormap) - colormap = attributes->colormap; - else - colormap = XDefaultColormap(display, XDefaultScreen(display)); - - if (attributes && attributes->valuemask & XpmColorKey) - key = attributes->color_key; - else - key = xpmVisualType(visual); - -#ifndef FOR_MSW - if (USE_CLOSECOLOR) { - /* originally from SetCloseColor */ -#if 0 - if (visual->c_class == DirectColor) { - - /* - * TODO: Implement close colors for DirectColor visuals. This is - * difficult situation. Chances are that we will never get here, - * because any machine that supports DirectColor will probably - * also support TrueColor (and probably PseudoColor). Also, - * DirectColor colormaps can be very large, so looking for close - * colors may be too slow. - */ - } else { -#endif - int i; - - ncols = visual->map_entries; - cols = (XColor *) XpmCalloc(ncols, sizeof(XColor)); - for (i = 0; i < ncols; ++i) - cols[i].pixel = i; - XQueryColors(display, colormap, cols, ncols); -#if 0 - } -#endif - } -#endif /* ndef FOR_MSW */ - - switch (key) { - case XPM_MONO: - default_index = 2; - break; - case XPM_GRAY4: - default_index = 3; - break; - case XPM_GRAY: - default_index = 4; - break; - case XPM_COLOR: - default: - default_index = 5; - break; - } - - for (a = 0; a < ncolors; a++, ct++, ip++, mp++) { - colorname = NULL; - pixel_defined = False; - defaults = (char **) ct; - - /* - * look for a defined symbol - */ - if (numsymbols) { - s = defaults[1]; - for (l = 0, symbol = colorsymbols; l < numsymbols; l++, symbol++) { - if (symbol->name && s && !strcmp(symbol->name, s)) - /* override name */ - break; - if (!symbol->name && symbol->value) { /* override value */ - int def_index = default_index; - - while (defaults[def_index] == NULL) /* find defined - * colorname */ - --def_index; - if (def_index < 2) {/* nothing towards mono, so try - * towards color */ - def_index = default_index + 1; - while (def_index <= 5 && defaults[def_index] == NULL) - ++def_index; - } - if (def_index >= 2 && defaults[def_index] != NULL && - !strcasecmp(symbol->value, defaults[def_index])) - break; - } - } - if (l != numsymbols) { - if (symbol->name && symbol->value) - colorname = symbol->value; - else - pixel_defined = True; - } - } - if (!pixel_defined) { /* pixel not given as symbol value */ - if (colorname) { /* colorname given as symbol value */ - if (!SetColor(display, colormap, visual, colorname, a, ip, mp, - mask_pixel, pixels, npixels, attributes, - cols, ncols)) - pixel_defined = True; - else - ErrorStatus = XpmColorError; - } - b = key; - while (!pixel_defined && b > 1) { - if (defaults[b]) { - if (!SetColor(display, colormap, visual, defaults[b], - a, ip, mp, mask_pixel, pixels, npixels, - attributes, cols, ncols)) { - pixel_defined = True; - break; - } else - ErrorStatus = XpmColorError; - } - b--; - } - b = key + 1; - while (!pixel_defined && b < NKEYS + 1) { - if (defaults[b]) { - if (!SetColor(display, colormap, visual, defaults[b], - a, ip, mp, mask_pixel, pixels, npixels, - attributes, cols, ncols)) { - pixel_defined = True; - break; - } else - ErrorStatus = XpmColorError; - } - b++; - } - if (!pixel_defined) { - if (cols) - XpmFree(cols); - return (XpmColorFailed); - } - } else { - *ip = colorsymbols[l].pixel; - if (symbol->value - && !strcasecmp(symbol->value, TRANSPARENT_COLOR)) { - *mp = 0; - *mask_pixel = 0; - } else - *mp = 1; - } - } - if (cols) - XpmFree(cols); - return (ErrorStatus); -} - - -/* function call in case of error, frees only locally allocated variables */ -#undef RETURN -#define RETURN(status) \ -{ \ - if (ximage) XDestroyImage(ximage); \ - if (shapeimage) XDestroyImage(shapeimage); \ - if (ximage_pixels) XpmFree(ximage_pixels); \ - if (mask_pixels) XpmFree(mask_pixels); \ - if (npixels) XFreeColors(display, colormap, pixels, npixels, 0); \ - if (pixels) XpmFree(pixels); \ - return (status); \ -} - -int -XpmCreateImageFromXpmImage(Display *display, XpmImage *image, - XImage **image_return, XImage **shapeimage_return, XpmAttributes *attributes) -{ - /* variables stored in the XpmAttributes structure */ - Visual *visual; - Colormap colormap; - unsigned int depth; - - /* variables to return */ - XImage *ximage = NULL; - XImage *shapeimage = NULL; - unsigned int mask_pixel; - int ErrorStatus; - - /* calculation variables */ - Pixel *ximage_pixels = NULL; - Pixel *mask_pixels = NULL; - Pixel *pixels = NULL; /* allocated pixels */ - unsigned int npixels = 0; /* number of allocated pixels */ - - /* initialize return values */ - if (image_return) - *image_return = NULL; - if (shapeimage_return) - *shapeimage_return = NULL; - - /* retrieve information from the XpmAttributes */ - if (attributes && (attributes->valuemask & XpmVisual)) - visual = attributes->visual; - else - visual = XDefaultVisual(display, XDefaultScreen(display)); - - if (attributes && (attributes->valuemask & XpmColormap)) - colormap = attributes->colormap; - else - colormap = XDefaultColormap(display, XDefaultScreen(display)); - - if (attributes && (attributes->valuemask & XpmDepth)) - depth = attributes->depth; - else - depth = XDefaultDepth(display, XDefaultScreen(display)); - - ErrorStatus = XpmSuccess; - - /* malloc pixels index tables */ - ximage_pixels = (Pixel *) XpmMalloc(sizeof(Pixel) * image->ncolors); - if (!ximage_pixels) - return (XpmNoMemory); - - mask_pixels = (Pixel *) XpmMalloc(sizeof(Pixel) * image->ncolors); - if (!mask_pixels) - RETURN(XpmNoMemory); - - mask_pixel = XpmUndefPixel; - - /* maximum of allocated pixels will be the number of colors */ - pixels = (Pixel *) XpmMalloc(sizeof(Pixel) * image->ncolors); - if (!pixels) - RETURN(XpmNoMemory); - - /* get pixel colors, store them in index tables */ - ErrorStatus = CreateColors(display, attributes, image->colorTable, - image->ncolors, ximage_pixels, mask_pixels, - &mask_pixel, &pixels, &npixels); - - if (ErrorStatus != XpmSuccess - && (ErrorStatus < 0 || (attributes - && (attributes->valuemask & XpmExactColors) - && attributes->exactColors))) - RETURN(ErrorStatus); - - /* create the ximage */ - if (image_return) { - ErrorStatus = CreateXImage(display, visual, depth, - image->width, image->height, &ximage); - if (ErrorStatus != XpmSuccess) - RETURN(ErrorStatus); - -#ifndef FOR_MSW - - /* - * set the ximage data - * - * In case depth is 1 or bits_per_pixel is 4, 6, 8, 24 or 32 use - * optimized functions, otherwise use slower but sure general one. - * - */ - - if (ximage->depth == 1) - SetImagePixels1(ximage, image->width, image->height, - image->data, ximage_pixels); - else if (ximage->bits_per_pixel == 8) - SetImagePixels8(ximage, image->width, image->height, - image->data, ximage_pixels); - else if (ximage->bits_per_pixel == 16) - SetImagePixels16(ximage, image->width, image->height, - image->data, ximage_pixels); - else if (ximage->bits_per_pixel == 32) - SetImagePixels32(ximage, image->width, image->height, - image->data, ximage_pixels); - else - SetImagePixels(ximage, image->width, image->height, - image->data, ximage_pixels); -#else /* FOR_MSW */ - MSWSetImagePixels(display, ximage, image->width, image->height, - image->data, ximage_pixels); -#endif - } - /* create the shape mask image */ - if (mask_pixel != XpmUndefPixel && shapeimage_return) { - ErrorStatus = CreateXImage(display, visual, 1, image->width, - image->height, &shapeimage); - if (ErrorStatus != XpmSuccess) - RETURN(ErrorStatus); - -#ifndef FOR_MSW - SetImagePixels1(shapeimage, image->width, image->height, - image->data, mask_pixels); -#else - MSWSetImagePixels(display, shapeimage, image->width, image->height, - image->data, mask_pixels); -#endif - - } - XpmFree(mask_pixels); - XpmFree(pixels); - - /* if requested store alloc'ed pixels in the XpmAttributes structure */ - if (attributes) { - if (attributes->valuemask & XpmReturnPixels || -/* 3.2 backward compatibility code */ - attributes->valuemask & XpmReturnInfos) { -/* end 3.2 bc */ - if (mask_pixel != XpmUndefPixel) { - Pixel *pixels, *p1, *p2; - unsigned int a; - - attributes->npixels = image->ncolors - 1; - pixels = (Pixel *) XpmMalloc(sizeof(Pixel) - * attributes->npixels); - if (pixels) { - p1 = ximage_pixels; - p2 = pixels; - for (a = 0; a < image->ncolors; a++, p1++) - if (a != mask_pixel) - *p2++ = *p1; - attributes->pixels = pixels; - } else { - /* if error just say we can't return requested data */ - attributes->valuemask &= ~XpmReturnPixels; -/* 3.2 backward compatibility code */ - attributes->valuemask &= ~XpmReturnInfos; -/* end 3.2 bc */ - attributes->pixels = NULL; - attributes->npixels = 0; - } - XpmFree(ximage_pixels); - } else { - attributes->pixels = ximage_pixels; - attributes->npixels = image->ncolors; - } - attributes->mask_pixel = mask_pixel; - } else - XpmFree(ximage_pixels); - } else - XpmFree(ximage_pixels); - - /* return created images */ - if (image_return) - *image_return = ximage; - if (shapeimage_return) - *shapeimage_return = shapeimage; - - return (ErrorStatus); -} - - -/* - * Create an XImage - */ -static int -CreateXImage(Display *display, Visual *visual, unsigned int depth, - unsigned int width, unsigned int height, XImage **image_return) -{ - int bitmap_pad; - - /* first get bitmap_pad */ - if (depth > 16) - bitmap_pad = 32; - else if (depth > 8) - bitmap_pad = 16; - else - bitmap_pad = 8; - - /* then create the XImage with data = NULL and bytes_per_line = 0 */ - *image_return = XCreateImage(display, visual, depth, ZPixmap, 0, 0, - width, height, bitmap_pad, 0); - if (!*image_return) - return (XpmNoMemory); - -#ifndef FOR_MSW - /* now that bytes_per_line must have been set properly alloc data */ - (*image_return)->data = - (char *) XpmMalloc((*image_return)->bytes_per_line * height); - - if (!(*image_return)->data) { - XDestroyImage(*image_return); - *image_return = NULL; - return (XpmNoMemory); - } -#else - /* under FOR_MSW XCreateImage has done it all */ -#endif - return (XpmSuccess); -} - -#ifndef FOR_MSW -/* - * The functions below are written from X11R5 MIT's code (XImUtil.c) - * - * The idea is to have faster functions than the standard XPutPixel function - * to build the image data. Indeed we can speed up things by suppressing tests - * performed for each pixel. We do the same tests but at the image level. - * We also assume that we use only ZPixmap images with null offsets. - */ - -LFUNC(_putbits, void, (register char *src, int dstoffset, - register int numbits, register char *dst)); - -LFUNC(_XReverse_Bytes, int, (register unsigned char *bpt, register int nb)); - -static unsigned char Const _reverse_byte[0x100] = { - 0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0, - 0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0, - 0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8, - 0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8, - 0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4, - 0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4, - 0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec, - 0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc, - 0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2, - 0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2, - 0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea, - 0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa, - 0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6, - 0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6, - 0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee, - 0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe, - 0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1, - 0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1, - 0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9, - 0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9, - 0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5, - 0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5, - 0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed, - 0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd, - 0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3, - 0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3, - 0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb, - 0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb, - 0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7, - 0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7, - 0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef, - 0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff -}; - -static int -_XReverse_Bytes(register unsigned char *bpt, register int nb) -{ - do { - *bpt = _reverse_byte[*bpt]; - bpt++; - } while (--nb > 0); - return 0; -} - - -void -xpm_xynormalizeimagebits(register unsigned char *bp, register XImage *img) -{ - register unsigned char c; - - if (img->byte_order != img->bitmap_bit_order) { - switch (img->bitmap_unit) { - - case 16: - c = *bp; - *bp = *(bp + 1); - *(bp + 1) = c; - break; - - case 32: - c = *(bp + 3); - *(bp + 3) = *bp; - *bp = c; - c = *(bp + 2); - *(bp + 2) = *(bp + 1); - *(bp + 1) = c; - break; - } - } - if (img->bitmap_bit_order == MSBFirst) - _XReverse_Bytes(bp, img->bitmap_unit >> 3); -} - -void -xpm_znormalizeimagebits(register unsigned char *bp, register XImage *img) -{ - register unsigned char c; - - switch (img->bits_per_pixel) { - - case 2: - _XReverse_Bytes(bp, 1); - break; - - case 4: - *bp = ((*bp >> 4) & 0xF) | ((*bp << 4) & ~0xF); - break; - - case 16: - c = *bp; - *bp = *(bp + 1); - *(bp + 1) = c; - break; - - case 24: - c = *(bp + 2); - *(bp + 2) = *bp; - *bp = c; - break; - - case 32: - c = *(bp + 3); - *(bp + 3) = *bp; - *bp = c; - c = *(bp + 2); - *(bp + 2) = *(bp + 1); - *(bp + 1) = c; - break; - } -} - -static unsigned char Const _lomask[0x09] = { -0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x7f, 0xff}; -static unsigned char Const _himask[0x09] = { -0xff, 0xfe, 0xfc, 0xf8, 0xf0, 0xe0, 0xc0, 0x80, 0x00}; - -static void -_putbits(register char *src, int dstoffset, register int numbits, register char *dst) - -/* register char *src; */ /* address of source bit string */ -/* int dstoffset; */ /* bit offset into destination; - * range is 0-31 */ -/* register int numbits; */ /* number of bits to copy to - * destination */ -/* register char *dst; */ /* address of destination bit string */ -{ - register unsigned char chlo, chhi; - int hibits; - - dst = dst + (dstoffset >> 3); - dstoffset = dstoffset & 7; - hibits = 8 - dstoffset; - chlo = *dst & _lomask[dstoffset]; - for (;;) { - chhi = (*src << dstoffset) & _himask[dstoffset]; - if (numbits <= hibits) { - chhi = chhi & _lomask[dstoffset + numbits]; - *dst = (*dst & _himask[dstoffset + numbits]) | chlo | chhi; - break; - } - *dst = chhi | chlo; - dst++; - numbits = numbits - hibits; - chlo = (unsigned char) (*src & _himask[hibits]) >> hibits; - src++; - if (numbits <= dstoffset) { - chlo = chlo & _lomask[numbits]; - *dst = (*dst & _himask[numbits]) | chlo; - break; - } - numbits = numbits - dstoffset; - } -} - -/* - * Default method to write pixels into a Z image data structure. - * The algorithm used is: - * - * copy the destination bitmap_unit or Zpixel to temp - * normalize temp if needed - * copy the pixel bits into the temp - * renormalize temp if needed - * copy the temp back into the destination image data - */ - -static void -SetImagePixels(XImage *image, unsigned int width, unsigned int height, unsigned int *pixelindex, Pixel *pixels) -{ - register char *src; - register char *dst; - register unsigned int *iptr; - register int x, y, i; - register char *data; - Pixel pixel, px; - int nbytes, depth, ibu, ibpp; - - data = image->data; - iptr = pixelindex; - depth = image->depth; - if (depth == 1) { - ibu = image->bitmap_unit; - for (y = 0; y < height; y++) - for (x = 0; x < width; x++, iptr++) { - pixel = pixels[*iptr]; - for (i = 0, px = pixel; i < sizeof(unsigned long); - i++, px >>= 8) - ((unsigned char *) &pixel)[i] = px; - src = &data[XYINDEX(x, y, image)]; - dst = (char *) &px; - px = 0; - nbytes = ibu >> 3; - for (i = nbytes; --i >= 0;) - *dst++ = *src++; - XYNORMALIZE(&px, image); - _putbits((char *) &pixel, (x % ibu), 1, (char *) &px); - XYNORMALIZE(&px, image); - src = (char *) &px; - dst = &data[XYINDEX(x, y, image)]; - for (i = nbytes; --i >= 0;) - *dst++ = *src++; - } - } else { - ibpp = image->bits_per_pixel; - for (y = 0; y < height; y++) - for (x = 0; x < width; x++, iptr++) { - pixel = pixels[*iptr]; - if (depth == 4) - pixel &= 0xf; - for (i = 0, px = pixel; i < sizeof(unsigned long); i++, - px >>= 8) - ((unsigned char *) &pixel)[i] = px; - src = &data[ZINDEX(x, y, image)]; - dst = (char *) &px; - px = 0; - nbytes = (ibpp + 7) >> 3; - for (i = nbytes; --i >= 0;) - *dst++ = *src++; - ZNORMALIZE(&px, image); - _putbits((char *) &pixel, (x * ibpp) & 7, ibpp, (char *) &px); - ZNORMALIZE(&px, image); - src = (char *) &px; - dst = &data[ZINDEX(x, y, image)]; - for (i = nbytes; --i >= 0;) - *dst++ = *src++; - } - } -} - -/* - * write pixels into a 32-bits Z image data structure - */ - -#ifndef WORD64 -/* this item is static but deterministic so let it slide; doesn't - * hurt re-entrancy of this library. Note if it is actually const then would - * be OK under rules of ANSI-C but probably not C++ which may not - * want to allocate space for it. - */ -static unsigned long /* constant */ RTXpm_byteorderpixel = MSBFirst << 24; - -#endif - -/* - WITHOUT_SPEEDUPS is a flag to be turned on if you wish to use the original - 3.2e code - by default you get the speeded-up version. -*/ - -static void -SetImagePixels32(XImage *image, unsigned int width, unsigned int height, unsigned int *pixelindex, Pixel *pixels) -{ - unsigned char *data; - unsigned int *iptr; - int y; - Pixel pixel; - -#ifdef WITHOUT_SPEEDUPS - - int x; - unsigned char *addr; - - data = (unsigned char *) image->data; - iptr = pixelindex; -#ifndef WORD64 - if (*((char *) &RTXpm_byteorderpixel) == image->byte_order) { - for (y = 0; y < height; y++) - for (x = 0; x < width; x++, iptr++) { - addr = &data[ZINDEX32(x, y, image)]; - *((unsigned long *) addr) = pixels[*iptr]; - } - } else -#endif - if (image->byte_order == MSBFirst) - for (y = 0; y < height; y++) - for (x = 0; x < width; x++, iptr++) { - addr = &data[ZINDEX32(x, y, image)]; - pixel = pixels[*iptr]; - addr[0] = pixel >> 24; - addr[1] = pixel >> 16; - addr[2] = pixel >> 8; - addr[3] = pixel; - } - else - for (y = 0; y < height; y++) - for (x = 0; x < width; x++, iptr++) { - addr = &data[ZINDEX32(x, y, image)]; - pixel = pixels[*iptr]; - addr[0] = pixel; - addr[1] = pixel >> 8; - addr[2] = pixel >> 16; - addr[3] = pixel >> 24; - } - -#else /* WITHOUT_SPEEDUPS */ - - int bpl = image->bytes_per_line; - unsigned char *data_ptr, *max_data; - - data = (unsigned char *) image->data; - iptr = pixelindex; -#ifndef WORD64 - if (*((char *) &RTXpm_byteorderpixel) == image->byte_order) { - for (y = 0; y < height; y++) { - data_ptr = data; - max_data = data_ptr + (width << 2); - - while (data_ptr < max_data) { - *((unsigned long *) data_ptr) = pixels[*(iptr++)]; - data_ptr += (1 << 2); - } - data += bpl; - } - } else -#endif - if (image->byte_order == MSBFirst) - for (y = 0; y < height; y++) { - data_ptr = data; - max_data = data_ptr + (width << 2); - - while (data_ptr < max_data) { - pixel = pixels[*(iptr++)]; - - *data_ptr++ = pixel >> 24; - *data_ptr++ = pixel >> 16; - *data_ptr++ = pixel >> 8; - *data_ptr++ = pixel; - - } - data += bpl; - } - else - for (y = 0; y < height; y++) { - data_ptr = data; - max_data = data_ptr + (width << 2); - - while (data_ptr < max_data) { - pixel = pixels[*(iptr++)]; - - *data_ptr++ = pixel; - *data_ptr++ = pixel >> 8; - *data_ptr++ = pixel >> 16; - *data_ptr++ = pixel >> 24; - } - data += bpl; - } - -#endif /* WITHOUT_SPEEDUPS */ -} - -/* - * write pixels into a 16-bits Z image data structure - */ - -static void -SetImagePixels16(XImage *image, unsigned int width, unsigned int height, unsigned int *pixelindex, Pixel *pixels) -{ - unsigned char *data; - unsigned int *iptr; - int y; - -#ifdef WITHOUT_SPEEDUPS - - int x; - unsigned char *addr; - - data = (unsigned char *) image->data; - iptr = pixelindex; - if (image->byte_order == MSBFirst) - for (y = 0; y < height; y++) - for (x = 0; x < width; x++, iptr++) { - addr = &data[ZINDEX16(x, y, image)]; - addr[0] = pixels[*iptr] >> 8; - addr[1] = pixels[*iptr]; - } - else - for (y = 0; y < height; y++) - for (x = 0; x < width; x++, iptr++) { - addr = &data[ZINDEX16(x, y, image)]; - addr[0] = pixels[*iptr]; - addr[1] = pixels[*iptr] >> 8; - } - -#else /* WITHOUT_SPEEDUPS */ - - Pixel pixel; - - int bpl = image->bytes_per_line; - unsigned char *data_ptr, *max_data; - - data = (unsigned char *) image->data; - iptr = pixelindex; - if (image->byte_order == MSBFirst) - for (y = 0; y < height; y++) { - data_ptr = data; - max_data = data_ptr + (width << 1); - - while (data_ptr < max_data) { - pixel = pixels[*(iptr++)]; - - data_ptr[0] = pixel >> 8; - data_ptr[1] = pixel; - - data_ptr += (1 << 1); - } - data += bpl; - } - else - for (y = 0; y < height; y++) { - data_ptr = data; - max_data = data_ptr + (width << 1); - - while (data_ptr < max_data) { - pixel = pixels[*(iptr++)]; - - data_ptr[0] = pixel; - data_ptr[1] = pixel >> 8; - - data_ptr += (1 << 1); - } - data += bpl; - } - -#endif /* WITHOUT_SPEEDUPS */ -} - -/* - * write pixels into a 8-bits Z image data structure - */ - -static void -SetImagePixels8(XImage *image, unsigned int width, unsigned int height, unsigned int *pixelindex, Pixel *pixels) -{ - char *data; - unsigned int *iptr; - int y; - -#ifdef WITHOUT_SPEEDUPS - - int x; - - data = image->data; - iptr = pixelindex; - for (y = 0; y < height; y++) - for (x = 0; x < width; x++, iptr++) - data[ZINDEX8(x, y, image)] = pixels[*iptr]; - -#else /* WITHOUT_SPEEDUPS */ - - int bpl = image->bytes_per_line; - char *data_ptr, *max_data; - - data = image->data; - iptr = pixelindex; - - for (y = 0; y < height; y++) { - data_ptr = data; - max_data = data_ptr + width; - - while (data_ptr < max_data) - *(data_ptr++) = pixels[*(iptr++)]; - - data += bpl; - } - -#endif /* WITHOUT_SPEEDUPS */ -} - -/* - * write pixels into a 1-bit depth image data structure and **offset null** - */ - -static void -SetImagePixels1(XImage *image, unsigned int width, unsigned int height, unsigned int *pixelindex, Pixel *pixels) -{ - if (image->byte_order != image->bitmap_bit_order) - SetImagePixels(image, width, height, pixelindex, pixels); - else { - unsigned int *iptr; - int y; - char *data; - -#ifdef WITHOUT_SPEEDUPS - - int x; - - data = image->data; - iptr = pixelindex; - if (image->bitmap_bit_order == MSBFirst) - for (y = 0; y < height; y++) - for (x = 0; x < width; x++, iptr++) { - if (pixels[*iptr] & 1) - data[ZINDEX1(x, y, image)] |= 0x80 >> (x & 7); - else - data[ZINDEX1(x, y, image)] &= ~(0x80 >> (x & 7)); - } - else - for (y = 0; y < height; y++) - for (x = 0; x < width; x++, iptr++) { - if (pixels[*iptr] & 1) - data[ZINDEX1(x, y, image)] |= 1 << (x & 7); - else - data[ZINDEX1(x, y, image)] &= ~(1 << (x & 7)); - } - -#else /* WITHOUT_SPEEDUPS */ - - char value; - char *data_ptr, *max_data; - int bpl = image->bytes_per_line; - int diff, count; - - data = image->data; - iptr = pixelindex; - - diff = width & 7; - width >>= 3; - - if (image->bitmap_bit_order == MSBFirst) - for (y = 0; y < height; y++) { - data_ptr = data; - max_data = data_ptr + width; - while (data_ptr < max_data) { - value = 0; - - value = (value << 1) | (pixels[*(iptr++)] & 1); - value = (value << 1) | (pixels[*(iptr++)] & 1); - value = (value << 1) | (pixels[*(iptr++)] & 1); - value = (value << 1) | (pixels[*(iptr++)] & 1); - value = (value << 1) | (pixels[*(iptr++)] & 1); - value = (value << 1) | (pixels[*(iptr++)] & 1); - value = (value << 1) | (pixels[*(iptr++)] & 1); - value = (value << 1) | (pixels[*(iptr++)] & 1); - - *(data_ptr++) = value; - } - if (diff) { - value = 0; - for (count = 0; count < diff; count++) { - if (pixels[*(iptr++)] & 1) - value |= (0x80 >> count); - } - *(data_ptr) = value; - } - data += bpl; - } - else - for (y = 0; y < height; y++) { - data_ptr = data; - max_data = data_ptr + width; - while (data_ptr < max_data) { - value = 0; - iptr += 8; - - value = (value << 1) | (pixels[*(--iptr)] & 1); - value = (value << 1) | (pixels[*(--iptr)] & 1); - value = (value << 1) | (pixels[*(--iptr)] & 1); - value = (value << 1) | (pixels[*(--iptr)] & 1); - value = (value << 1) | (pixels[*(--iptr)] & 1); - value = (value << 1) | (pixels[*(--iptr)] & 1); - value = (value << 1) | (pixels[*(--iptr)] & 1); - value = (value << 1) | (pixels[*(--iptr)] & 1); - - iptr += 8; - *(data_ptr++) = value; - } - if (diff) { - value = 0; - for (count = 0; count < diff; count++) { - if (pixels[*(iptr++)] & 1) - value |= (1 << count); - } - *(data_ptr) = value; - } - data += bpl; - } - -#endif /* WITHOUT_SPEEDUPS */ - } -} - -int -XpmCreatePixmapFromXpmImage(Display *display, Drawable d, XpmImage *image, - Pixmap *pixmap_return, Pixmap *shapemask_return, XpmAttributes *attributes) -{ - XImage *ximage, *shapeimage; - int ErrorStatus; - - /* initialize return values */ - if (pixmap_return) - *pixmap_return = 0; - if (shapemask_return) - *shapemask_return = 0; - - /* create the ximages */ - ErrorStatus = XpmCreateImageFromXpmImage(display, image, - (pixmap_return ? &ximage : NULL), - (shapemask_return ? - &shapeimage : NULL), - attributes); - if (ErrorStatus < 0) - return (ErrorStatus); - - /* create the pixmaps and destroy images */ - if (pixmap_return && ximage) { - xpmCreatePixmapFromImage(display, d, ximage, pixmap_return); - XDestroyImage(ximage); - } - if (shapemask_return && shapeimage) { - xpmCreatePixmapFromImage(display, d, shapeimage, shapemask_return); - XDestroyImage(shapeimage); - } - return (ErrorStatus); -} - -#else /* FOR_MSW part follows */ -static void -MSWSetImagePixels(Display *dc, XImage *image, unsigned int width, unsigned int height, - unsigned int *pixelindex, Pixel *pixels) -{ - unsigned int *data = pixelindex; - unsigned int x, y; - - SelectObject(*dc, image->bitmap); - if (image->depth == 1) - { - for (y = 0; y < height; y++) { - for (x = 0; x < width; x++) { - SetPixel(*dc, x, y, (pixels[*(data++)] ? RGB(255,255,255) : 0)); /* data is [x+y*width] */ - } - } - } - else - { - for (y = 0; y < height; y++) { - for (x = 0; x < width; x++) { - SetPixel(*dc, x, y, pixels[*(data++)]); /* data is [x+y*width] */ - } - } - } -} - -#endif /* FOR_MSW */ diff --git a/src/xpm/crifrbuf.c b/src/xpm/crifrbuf.c deleted file mode 100644 index 62827b8200..0000000000 --- a/src/xpm/crifrbuf.c +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright (C) 1989-94 GROUPE BULL - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name of GROUPE BULL shall not be - * used in advertising or otherwise to promote the sale, use or other dealings - * in this Software without prior written authorization from GROUPE BULL. - */ - -/*****************************************************************************\ -* XpmCrIFrBuf.c: * -* * -* XPM library * -* Parse an Xpm buffer (file in memory) and create the image and possibly its * -* mask * -* Developed by Arnaud Le Hors * -\*****************************************************************************/ - -#include "xpm34p.h" - -int -XpmCreateImageFromBuffer(Display *display, char *buffer, XImage **image_return, - XImage **shapeimage_return, XpmAttributes *attributes) -{ - XpmImage image; - XpmInfo info; - int ErrorStatus; - - /* create an XpmImage from the buffer */ - if (attributes) { - xpmInitAttributes(attributes); - xpmSetInfoMask(&info, attributes); - ErrorStatus = XpmCreateXpmImageFromBuffer(buffer, &image, &info); - } else - ErrorStatus = XpmCreateXpmImageFromBuffer(buffer, &image, NULL); - - if (ErrorStatus != XpmSuccess) - return (ErrorStatus); - - /* create the related ximages */ - ErrorStatus = XpmCreateImageFromXpmImage(display, &image, - image_return, shapeimage_return, - attributes); - if (attributes) { - if (ErrorStatus >= 0) /* no fatal error */ - xpmSetAttributes(attributes, &image, &info); - XpmFreeXpmInfo(&info); - } - /* free the XpmImage */ - XpmFreeXpmImage(&image); - - return (ErrorStatus); -} - -int -XpmCreateXpmImageFromBuffer(char *buffer, XpmImage *image, XpmInfo *info) -{ - xpmData mdata; - int ErrorStatus; - - /* init returned values */ - xpmInitXpmImage(image); - xpmInitXpmInfo(info); - - /* open buffer to read */ - xpmOpenBuffer(buffer, &mdata); - - /* create the XpmImage from the XpmData */ - ErrorStatus = xpmParseData(&mdata, image, info); - - xpmDataClose(&mdata); - - return (ErrorStatus); -} diff --git a/src/xpm/crifrdat.c b/src/xpm/crifrdat.c deleted file mode 100644 index 74fa2658c6..0000000000 --- a/src/xpm/crifrdat.c +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright (C) 1989-94 GROUPE BULL - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name of GROUPE BULL shall not be - * used in advertising or otherwise to promote the sale, use or other dealings - * in this Software without prior written authorization from GROUPE BULL. - */ - -/*****************************************************************************\ -* XpmCrIFrData.c: * -* * -* XPM library * -* Parse an Xpm array and create the image and possibly its mask * -* * -* Developed by Arnaud Le Hors * -\*****************************************************************************/ - -#include "xpm34p.h" - -int -XpmCreateImageFromData(Display *display, char **data, XImage **image_return, - XImage **shapeimage_return, XpmAttributes *attributes) -{ - XpmImage image; - XpmInfo info; - int ErrorStatus; - - /* create an XpmImage from the file */ - if (attributes) { - xpmInitAttributes(attributes); - xpmSetInfoMask(&info, attributes); - ErrorStatus = XpmCreateXpmImageFromData(data, &image, &info); - } else - ErrorStatus = XpmCreateXpmImageFromData(data, &image, NULL); - - if (ErrorStatus != XpmSuccess) - return (ErrorStatus); - - /* create the related ximages */ - ErrorStatus = XpmCreateImageFromXpmImage(display, &image, - image_return, shapeimage_return, - attributes); - if (attributes) { - if (ErrorStatus >= 0) /* no fatal error */ - xpmSetAttributes(attributes, &image, &info); - XpmFreeXpmInfo(&info); - } - XpmFreeXpmImage(&image); - - return (ErrorStatus); -} - -int -XpmCreateXpmImageFromData(char **data, XpmImage *image, XpmInfo *info) -{ - xpmData mdata; - int ErrorStatus; - - /* init returned values */ - xpmInitXpmImage(image); - xpmInitXpmInfo(info); - - /* open data */ - xpmOpenArray(data, &mdata); - - /* create the XpmImage from the XpmData */ - ErrorStatus = xpmParseData(&mdata, image, info); - - xpmDataClose(&mdata); - - return (ErrorStatus); -} diff --git a/src/xpm/crpfrbuf.c b/src/xpm/crpfrbuf.c deleted file mode 100644 index e6cd21cf42..0000000000 --- a/src/xpm/crpfrbuf.c +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (C) 1989-94 GROUPE BULL - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name of GROUPE BULL shall not be - * used in advertising or otherwise to promote the sale, use or other dealings - * in this Software without prior written authorization from GROUPE BULL. - */ - -/*****************************************************************************\ -* XpmCrPFrBuf.c: * -* * -* XPM library * -* Parse an Xpm buffer and create the pixmap and possibly its mask * -* * -* Developed by Arnaud Le Hors * -\*****************************************************************************/ - -#ifndef FOR_MSW -#include "xpm34p.h" - -int -XpmCreatePixmapFromBuffer(Display *display, Drawable d, char *buffer, Pixmap *pixmap_return, - Pixmap *shapemask_return, XpmAttributes *attributes) -{ - XImage *ximage, *shapeimage; - int ErrorStatus; - - /* initialize return values */ - if (pixmap_return) - *pixmap_return = 0; - if (shapemask_return) - *shapemask_return = 0; - - /* create the images */ - ErrorStatus = XpmCreateImageFromBuffer(display, buffer, - (pixmap_return ? &ximage : NULL), - (shapemask_return ? - &shapeimage : NULL), - attributes); - - if (ErrorStatus < 0) /* fatal error */ - return (ErrorStatus); - - /* create the pixmaps and destroy images */ - if (pixmap_return && ximage) { - xpmCreatePixmapFromImage(display, d, ximage, pixmap_return); - XDestroyImage(ximage); - } - if (shapemask_return && shapeimage) { - xpmCreatePixmapFromImage(display, d, shapeimage, shapemask_return); - XDestroyImage(shapeimage); - } - return (ErrorStatus); -} -#endif diff --git a/src/xpm/crpfrdat.c b/src/xpm/crpfrdat.c deleted file mode 100644 index 7d0cf6aa16..0000000000 --- a/src/xpm/crpfrdat.c +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright (C) 1989-94 GROUPE BULL - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name of GROUPE BULL shall not be - * used in advertising or otherwise to promote the sale, use or other dealings - * in this Software without prior written authorization from GROUPE BULL. - */ - -/*****************************************************************************\ -* XpmCrPFrData.c: * -* * -* XPM library * -* Parse an Xpm array and create the pixmap and possibly its mask * -* * -* Developed by Arnaud Le Hors * -\*****************************************************************************/ - -#include "xpm34p.h" - -#ifndef FOR_MSW -int -XpmCreatePixmapFromData(Display *display, Drawable d, char **data, Pixmap *pixmap_return, - Pixmap *shapemask_return, XpmAttributes *attributes) -{ - XImage *ximage, *shapeimage; - int ErrorStatus; - - /* initialize return values */ - if (pixmap_return) - *pixmap_return = 0; - if (shapemask_return) - *shapemask_return = 0; - - /* create the images */ - ErrorStatus = XpmCreateImageFromData(display, data, - (pixmap_return ? &ximage : NULL), - (shapemask_return ? - &shapeimage : NULL), - attributes); - - if (ErrorStatus != XpmSuccess) - return (ErrorStatus); - - if (ErrorStatus < 0) /* fatal error */ - return (ErrorStatus); - - /* create the pixmaps and destroy images */ - if (pixmap_return && ximage) { - xpmCreatePixmapFromImage(display, d, ximage, pixmap_return); - XDestroyImage(ximage); - } - if (shapemask_return && shapeimage) { - xpmCreatePixmapFromImage(display, d, shapeimage, shapemask_return); - XDestroyImage(shapeimage); - } - return (ErrorStatus); -} -#endif diff --git a/src/xpm/data.c b/src/xpm/data.c deleted file mode 100644 index 247f8aaa09..0000000000 --- a/src/xpm/data.c +++ /dev/null @@ -1,627 +0,0 @@ -/* - * Copyright (C) 1989-94 GROUPE BULL - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name of GROUPE BULL shall not be - * used in advertising or otherwise to promote the sale, use or other dealings - * in this Software without prior written authorization from GROUPE BULL. - */ - -/*****************************************************************************\ -* data.c: * -* * -* XPM library * -* IO utilities * -* * -* Developed by Arnaud Le Hors * -\*****************************************************************************/ - -/* Official version number */ -static char *RCS_Version = "$XpmVersion: 3.4b $"; - -/* Internal version number */ -static char *RCS_Id = "$Id$"; - -#include "xpm34p.h" -#ifdef VMS -#include "sys$library:stat.h" -#include "sys$library:ctype.h" -#else -#include -#include -#include -#endif - -#include - -LFUNC(ParseComment, int, (xpmData * mdata)); - -static int -ParseComment(xpmData *mdata) -{ - if (mdata->type == XPMBUFFER) { - register char c; - register unsigned int n = 0; - unsigned int notend; - char *s, *s2; - - s = mdata->Comment; - *s = mdata->Bcmt[0]; - - /* skip the string beginning comment */ - s2 = mdata->Bcmt; - do { - c = *mdata->cptr++; - *++s = c; - n++; - s2++; - } while (c == *s2 && *s2 != '\0' && c && c != mdata->Bos); - - if (*s2 != '\0') { - /* this wasn't the beginning of a comment */ - mdata->cptr -= n; - return 0; - } - /* store comment */ - mdata->Comment[0] = *s; - s = mdata->Comment; - notend = 1; - n = 0; - while (notend) { - s2 = mdata->Ecmt; - while (*s != *s2 && c && c != mdata->Bos) { - c = *mdata->cptr++; - *++s = c; - n++; - } - mdata->CommentLength = n; - do { - c = *mdata->cptr++; - n++; - *++s = c; - s2++; - } while (c == *s2 && *s2 != '\0' && c && c != mdata->Bos); - if (*s2 == '\0') { - /* this is the end of the comment */ - notend = 0; - mdata->cptr--; - } - } - return 0; - } else { - FILE *file = mdata->stream.file; - register int c; - register unsigned int n = 0, a; - unsigned int notend; - char *s, *s2; - - s = mdata->Comment; - *s = mdata->Bcmt[0]; - - /* skip the string beginning comment */ - s2 = mdata->Bcmt; - do { - c = getc(file); - *++s = c; - n++; - s2++; - } while (c == *s2 && *s2 != '\0' - && c != EOF && c != mdata->Bos); - - if (*s2 != '\0') { - /* this wasn't the beginning of a comment */ - /* put characters back in the order that we got them */ - for (a = n; a > 0; a--, s--) - ungetc(*s, file); - return 0; - } - /* store comment */ - mdata->Comment[0] = *s; - s = mdata->Comment; - notend = 1; - n = 0; - while (notend) { - s2 = mdata->Ecmt; - while (*s != *s2 && c != EOF && c != mdata->Bos) { - c = getc(file); - *++s = c; - n++; - } - mdata->CommentLength = n; - do { - c = getc(file); - n++; - *++s = c; - s2++; - } while (c == *s2 && *s2 != '\0' - && c != EOF && c != mdata->Bos); - if (*s2 == '\0') { - /* this is the end of the comment */ - notend = 0; - ungetc(*s, file); - } - } - return 0; - } -} - -/* - * skip to the end of the current string and the beginning of the next one - */ -int -xpmNextString(xpmData *mdata) -{ - if (!mdata->type) - mdata->cptr = (mdata->stream.data)[++mdata->line]; - else if (mdata->type == XPMBUFFER) { - register char c; - - /* get to the end of the current string */ - if (mdata->Eos) - while ((c = *mdata->cptr++) && c != mdata->Eos); - - /* - * then get to the beginning of the next string looking for possible - * comment - */ - if (mdata->Bos) { - while ((c = *mdata->cptr++) && c != mdata->Bos) - if (mdata->Bcmt && c == mdata->Bcmt[0]) - ParseComment(mdata); - } else if (mdata->Bcmt) { /* XPM2 natural */ - while ((c = *mdata->cptr++) == mdata->Bcmt[0]) - ParseComment(mdata); - mdata->cptr--; - } - } else { - register int c; - FILE *file = mdata->stream.file; - - /* get to the end of the current string */ - if (mdata->Eos) - while ((c = getc(file)) != mdata->Eos && c != EOF); - - /* - * then get to the beginning of the next string looking for possible - * comment - */ - if (mdata->Bos) { - while ((c = getc(file)) != mdata->Bos && c != EOF) - if (mdata->Bcmt && c == mdata->Bcmt[0]) - ParseComment(mdata); - - } else if (mdata->Bcmt) { /* XPM2 natural */ - while ((c = getc(file)) == mdata->Bcmt[0]) - ParseComment(mdata); - ungetc(c, file); - } - } - return 0; -} - - -/* - * skip whitespace and compute the following unsigned int, - * returns 1 if one is found and 0 if not - */ -int -xpmNextUI(xpmData *mdata, unsigned int *ui_return) -{ - char buf[BUFSIZ]; - int l; - - l = xpmNextWord(mdata, buf, BUFSIZ); - return atoui(buf, l, ui_return); -} - -/* - * skip whitespace and return the following word - */ -unsigned int -xpmNextWord(xpmData *mdata, char *buf, unsigned int buflen) -{ - register unsigned int n = 0; - int c; - - if (!mdata->type || mdata->type == XPMBUFFER) { - while (isspace(c = *mdata->cptr) && c != mdata->Eos) - mdata->cptr++; - do { - c = *mdata->cptr++; - *buf++ = c; - n++; - } while (!isspace(c) && c != mdata->Eos && n < buflen); - n--; - mdata->cptr--; - } else { - FILE *file = mdata->stream.file; - - while ((c = getc(file)) != EOF && isspace(c) && c != mdata->Eos); - while (!isspace(c) && c != mdata->Eos && c != EOF && n < buflen) { - *buf++ = c; - n++; - c = getc(file); - } - ungetc(c, file); - } - return (n); -} - -/* - * return end of string - WARNING: malloc! - */ -int -xpmGetString(xpmData *mdata, char **sptr, unsigned int *l) -{ - unsigned int i, n = 0; - int c; - char *p, *q, buf[BUFSIZ]; - - if (!mdata->type || mdata->type == XPMBUFFER) { - if (mdata->cptr) { - char *start; - - while (isspace(c = *mdata->cptr) && c != mdata->Eos) - mdata->cptr++; - start = mdata->cptr; - while ((c = *mdata->cptr) && c != mdata->Eos) - mdata->cptr++; - n = mdata->cptr - start + 1; - p = (char *) XpmMalloc(n); - if (!p) - return (XpmNoMemory); - strncpy(p, start, n); - if (mdata->type) /* XPMBUFFER */ - p[n - 1] = '\0'; - } - } else { - FILE *file = mdata->stream.file; - - while ((c = getc(file)) != EOF && isspace(c) && c != mdata->Eos); - if (c == EOF) - return (XpmFileInvalid); - p = NULL; - i = 0; - q = buf; - p = (char *) XpmMalloc(1); - while (c != mdata->Eos && c != EOF) { - if (i == BUFSIZ) { - /* get to the end of the buffer */ - /* malloc needed memory */ - q = (char *) XpmRealloc(p, n + i); - if (!q) { - XpmFree(p); - return (XpmNoMemory); - } - p = q; - q += n; - /* and copy what we already have */ - strncpy(q, buf, i); - n += i; - i = 0; - q = buf; - } - *q++ = c; - i++; - c = getc(file); - } - if (c == EOF) { - XpmFree(p); - return (XpmFileInvalid); - } - if (n + i != 0) { - /* malloc needed memory */ - q = (char *) XpmRealloc(p, n + i + 1); - if (!q) { - XpmFree(p); - return (XpmNoMemory); - } - p = q; - q += n; - /* and copy the buffer */ - strncpy(q, buf, i); - n += i; - p[n++] = '\0'; - } else { - *p = '\0'; - n = 1; - } - ungetc(c, file); - } - *sptr = p; - *l = n; - return (XpmSuccess); -} - -/* - * get the current comment line - */ -int -xpmGetCmt(xpmData *mdata, char **cmt) -{ - if (!mdata->type) - *cmt = NULL; - else if (mdata->CommentLength) { - *cmt = (char *) XpmMalloc(mdata->CommentLength + 1); - strncpy(*cmt, mdata->Comment, mdata->CommentLength); - (*cmt)[mdata->CommentLength] = '\0'; - mdata->CommentLength = 0; - } else - *cmt = NULL; - return 0; -} - -/* - * open the given file to be read as an xpmData which is returned. - */ -int -xpmReadFile(char *filename, xpmData *mdata) -{ -#ifdef ZPIPE - char *compressfile, buf[BUFSIZ]; - struct stat status; - -#endif - - if (!filename) { - mdata->stream.file = (stdin); - mdata->type = XPMFILE; - } else { -#ifdef ZPIPE - if (((int) strlen(filename) > 2) && - !strcmp(".Z", filename + (strlen(filename) - 2))) { - mdata->type = XPMPIPE; - sprintf(buf, "uncompress -c %s", filename); - if (!(mdata->stream.file = popen(buf, "r"))) - return (XpmOpenFailed); - - } else if (((int) strlen(filename) > 3) && - !strcmp(".gz", filename + (strlen(filename) - 3))) { - mdata->type = XPMPIPE; - sprintf(buf, "gunzip -qc %s", filename); - if (!(mdata->stream.file = popen(buf, "r"))) - return (XpmOpenFailed); - - } else { - if (!(compressfile = (char *) XpmMalloc(strlen(filename) + 4))) - return (XpmNoMemory); - - strcpy(compressfile, filename); - strcat(compressfile, ".Z"); - if (!stat(compressfile, &status)) { - sprintf(buf, "uncompress -c %s", compressfile); - if (!(mdata->stream.file = popen(buf, "r"))) { - XpmFree(compressfile); - return (XpmOpenFailed); - } - mdata->type = XPMPIPE; - } else { - strcpy(compressfile, filename); - strcat(compressfile, ".gz"); - if (!stat(compressfile, &status)) { - sprintf(buf, "gunzip -c %s", compressfile); - if (!(mdata->stream.file = popen(buf, "r"))) { - XpmFree(compressfile); - return (XpmOpenFailed); - } - mdata->type = XPMPIPE; - } else { -#endif - if (!(mdata->stream.file = fopen(filename, "r"))) { -#ifdef ZPIPE - XpmFree(compressfile); -#endif - return (XpmOpenFailed); - } - mdata->type = XPMFILE; -#ifdef ZPIPE - } - } - XpmFree(compressfile); - } -#endif - } - mdata->CommentLength = 0; - return (XpmSuccess); -} - -/* - * open the given file to be written as an xpmData which is returned - */ -int -xpmWriteFile(char *filename, xpmData *mdata) -{ -#ifdef ZPIPE - char buf[BUFSIZ]; - -#endif - - if (!filename) { - mdata->stream.file = (stdout); - mdata->type = XPMFILE; - } else { -#ifdef ZPIPE - if ((int) strlen(filename) > 2 - && !strcmp(".Z", filename + (strlen(filename) - 2))) { - sprintf(buf, "compress > %s", filename); - if (!(mdata->stream.file = popen(buf, "w"))) - return (XpmOpenFailed); - - mdata->type = XPMPIPE; - } else if ((int) strlen(filename) > 3 - && !strcmp(".gz", filename + (strlen(filename) - 3))) { - sprintf(buf, "gzip -q > %s", filename); - if (!(mdata->stream.file = popen(buf, "w"))) - return (XpmOpenFailed); - - mdata->type = XPMPIPE; - } else { -#endif - if (!(mdata->stream.file = fopen(filename, "w"))) - return (XpmOpenFailed); - - mdata->type = XPMFILE; -#ifdef ZPIPE - } -#endif - } - return (XpmSuccess); -} - -/* - * open the given array to be read or written as an xpmData which is returned - */ -void -xpmOpenArray(char **data, xpmData *mdata) -{ - mdata->type = XPMARRAY; - mdata->stream.data = data; - mdata->cptr = *data; - mdata->line = 0; - mdata->CommentLength = 0; - mdata->Bcmt = mdata->Ecmt = NULL; - mdata->Bos = mdata->Eos = '\0'; - mdata->format = 0; /* this can only be Xpm 2 or 3 */ -} - -/* - * open the given buffer to be read or written as an xpmData which is returned - */ -void -xpmOpenBuffer(char *buffer, xpmData *mdata) -{ - mdata->type = XPMBUFFER; - mdata->cptr = buffer; - mdata->CommentLength = 0; -} - -/* - * close the file related to the xpmData if any - */ -int -xpmDataClose(xpmData *mdata) -{ - switch (mdata->type) { - case XPMARRAY: - case XPMBUFFER: - break; - case XPMFILE: - if (mdata->stream.file != (stdout) && mdata->stream.file != (stdin)) - fclose(mdata->stream.file); - break; -#ifdef ZPIPE - case XPMPIPE: - pclose(mdata->stream.file); - break; -#endif - } - return 0; -} - -xpmDataType xpmDataTypes[] = -{ - "", "!", "\n", '\0', '\n', "", "", "", "", /* Natural type */ - "C", "/*", "*/", '"', '"', ",\n", "static char *", "[] = {\n", "};\n", - "Lisp", ";", "\n", '"', '"', "\n", "(setq ", " '(\n", "))\n", -#ifdef VMS - NULL -#else - NULL, NULL, NULL, 0, 0, NULL, NULL, NULL, NULL -#endif -}; - -/* - * parse xpm header - */ -int -xpmParseHeader(xpmData *mdata) -{ - char buf[BUFSIZ]; - int l, n = 0; - - if (mdata->type) { - mdata->Bos = '\0'; - mdata->Eos = '\n'; - mdata->Bcmt = mdata->Ecmt = NULL; - l = xpmNextWord(mdata, buf, BUFSIZ); - if (l == 7 && !strncmp("#define", buf, 7)) { - /* this maybe an XPM 1 file */ - char *ptr; - - l = xpmNextWord(mdata, buf, BUFSIZ); - if (!l) - return (XpmFileInvalid); - ptr = strchr(buf, '_'); - if (!ptr || strncmp("_format", ptr, l - (ptr - buf))) - return XpmFileInvalid; - /* this is definitely an XPM 1 file */ - mdata->format = 1; - n = 1; /* handle XPM1 as mainly XPM2 C */ - } else { - - /* - * skip the first word, get the second one, and see if this is - * XPM 2 or 3 - */ - l = xpmNextWord(mdata, buf, BUFSIZ); - if ((l == 3 && !strncmp("XPM", buf, 3)) || - (l == 4 && !strncmp("XPM2", buf, 4))) { - if (l == 3) - n = 1; /* handle XPM as XPM2 C */ - else { - /* get the type key word */ - l = xpmNextWord(mdata, buf, BUFSIZ); - - /* - * get infos about this type - */ - while (xpmDataTypes[n].type - && strncmp(xpmDataTypes[n].type, buf, l)) - n++; - } - mdata->format = 0; - } else - /* nope this is not an XPM file */ - return XpmFileInvalid; - } - if (xpmDataTypes[n].type) { - if (n == 0) { /* natural type */ - mdata->Bcmt = xpmDataTypes[n].Bcmt; - mdata->Ecmt = xpmDataTypes[n].Ecmt; - xpmNextString(mdata); /* skip the end of the headerline */ - mdata->Bos = xpmDataTypes[n].Bos; - mdata->Eos = xpmDataTypes[n].Eos; - } else { - mdata->Bcmt = xpmDataTypes[n].Bcmt; - mdata->Ecmt = xpmDataTypes[n].Ecmt; - if (!mdata->format) { /* XPM 2 or 3 */ - mdata->Bos = xpmDataTypes[n].Bos; - mdata->Eos = '\0'; - /* get to the beginning of the first string */ - xpmNextString(mdata); - mdata->Eos = xpmDataTypes[n].Eos; - } else /* XPM 1 skip end of line */ - xpmNextString(mdata); - } - } else - /* we don't know about that type of XPM file... */ - return XpmFileInvalid; - } - return XpmSuccess; -} diff --git a/src/xpm/dataxpm.c b/src/xpm/dataxpm.c deleted file mode 100644 index 247f8aaa09..0000000000 --- a/src/xpm/dataxpm.c +++ /dev/null @@ -1,627 +0,0 @@ -/* - * Copyright (C) 1989-94 GROUPE BULL - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name of GROUPE BULL shall not be - * used in advertising or otherwise to promote the sale, use or other dealings - * in this Software without prior written authorization from GROUPE BULL. - */ - -/*****************************************************************************\ -* data.c: * -* * -* XPM library * -* IO utilities * -* * -* Developed by Arnaud Le Hors * -\*****************************************************************************/ - -/* Official version number */ -static char *RCS_Version = "$XpmVersion: 3.4b $"; - -/* Internal version number */ -static char *RCS_Id = "$Id$"; - -#include "xpm34p.h" -#ifdef VMS -#include "sys$library:stat.h" -#include "sys$library:ctype.h" -#else -#include -#include -#include -#endif - -#include - -LFUNC(ParseComment, int, (xpmData * mdata)); - -static int -ParseComment(xpmData *mdata) -{ - if (mdata->type == XPMBUFFER) { - register char c; - register unsigned int n = 0; - unsigned int notend; - char *s, *s2; - - s = mdata->Comment; - *s = mdata->Bcmt[0]; - - /* skip the string beginning comment */ - s2 = mdata->Bcmt; - do { - c = *mdata->cptr++; - *++s = c; - n++; - s2++; - } while (c == *s2 && *s2 != '\0' && c && c != mdata->Bos); - - if (*s2 != '\0') { - /* this wasn't the beginning of a comment */ - mdata->cptr -= n; - return 0; - } - /* store comment */ - mdata->Comment[0] = *s; - s = mdata->Comment; - notend = 1; - n = 0; - while (notend) { - s2 = mdata->Ecmt; - while (*s != *s2 && c && c != mdata->Bos) { - c = *mdata->cptr++; - *++s = c; - n++; - } - mdata->CommentLength = n; - do { - c = *mdata->cptr++; - n++; - *++s = c; - s2++; - } while (c == *s2 && *s2 != '\0' && c && c != mdata->Bos); - if (*s2 == '\0') { - /* this is the end of the comment */ - notend = 0; - mdata->cptr--; - } - } - return 0; - } else { - FILE *file = mdata->stream.file; - register int c; - register unsigned int n = 0, a; - unsigned int notend; - char *s, *s2; - - s = mdata->Comment; - *s = mdata->Bcmt[0]; - - /* skip the string beginning comment */ - s2 = mdata->Bcmt; - do { - c = getc(file); - *++s = c; - n++; - s2++; - } while (c == *s2 && *s2 != '\0' - && c != EOF && c != mdata->Bos); - - if (*s2 != '\0') { - /* this wasn't the beginning of a comment */ - /* put characters back in the order that we got them */ - for (a = n; a > 0; a--, s--) - ungetc(*s, file); - return 0; - } - /* store comment */ - mdata->Comment[0] = *s; - s = mdata->Comment; - notend = 1; - n = 0; - while (notend) { - s2 = mdata->Ecmt; - while (*s != *s2 && c != EOF && c != mdata->Bos) { - c = getc(file); - *++s = c; - n++; - } - mdata->CommentLength = n; - do { - c = getc(file); - n++; - *++s = c; - s2++; - } while (c == *s2 && *s2 != '\0' - && c != EOF && c != mdata->Bos); - if (*s2 == '\0') { - /* this is the end of the comment */ - notend = 0; - ungetc(*s, file); - } - } - return 0; - } -} - -/* - * skip to the end of the current string and the beginning of the next one - */ -int -xpmNextString(xpmData *mdata) -{ - if (!mdata->type) - mdata->cptr = (mdata->stream.data)[++mdata->line]; - else if (mdata->type == XPMBUFFER) { - register char c; - - /* get to the end of the current string */ - if (mdata->Eos) - while ((c = *mdata->cptr++) && c != mdata->Eos); - - /* - * then get to the beginning of the next string looking for possible - * comment - */ - if (mdata->Bos) { - while ((c = *mdata->cptr++) && c != mdata->Bos) - if (mdata->Bcmt && c == mdata->Bcmt[0]) - ParseComment(mdata); - } else if (mdata->Bcmt) { /* XPM2 natural */ - while ((c = *mdata->cptr++) == mdata->Bcmt[0]) - ParseComment(mdata); - mdata->cptr--; - } - } else { - register int c; - FILE *file = mdata->stream.file; - - /* get to the end of the current string */ - if (mdata->Eos) - while ((c = getc(file)) != mdata->Eos && c != EOF); - - /* - * then get to the beginning of the next string looking for possible - * comment - */ - if (mdata->Bos) { - while ((c = getc(file)) != mdata->Bos && c != EOF) - if (mdata->Bcmt && c == mdata->Bcmt[0]) - ParseComment(mdata); - - } else if (mdata->Bcmt) { /* XPM2 natural */ - while ((c = getc(file)) == mdata->Bcmt[0]) - ParseComment(mdata); - ungetc(c, file); - } - } - return 0; -} - - -/* - * skip whitespace and compute the following unsigned int, - * returns 1 if one is found and 0 if not - */ -int -xpmNextUI(xpmData *mdata, unsigned int *ui_return) -{ - char buf[BUFSIZ]; - int l; - - l = xpmNextWord(mdata, buf, BUFSIZ); - return atoui(buf, l, ui_return); -} - -/* - * skip whitespace and return the following word - */ -unsigned int -xpmNextWord(xpmData *mdata, char *buf, unsigned int buflen) -{ - register unsigned int n = 0; - int c; - - if (!mdata->type || mdata->type == XPMBUFFER) { - while (isspace(c = *mdata->cptr) && c != mdata->Eos) - mdata->cptr++; - do { - c = *mdata->cptr++; - *buf++ = c; - n++; - } while (!isspace(c) && c != mdata->Eos && n < buflen); - n--; - mdata->cptr--; - } else { - FILE *file = mdata->stream.file; - - while ((c = getc(file)) != EOF && isspace(c) && c != mdata->Eos); - while (!isspace(c) && c != mdata->Eos && c != EOF && n < buflen) { - *buf++ = c; - n++; - c = getc(file); - } - ungetc(c, file); - } - return (n); -} - -/* - * return end of string - WARNING: malloc! - */ -int -xpmGetString(xpmData *mdata, char **sptr, unsigned int *l) -{ - unsigned int i, n = 0; - int c; - char *p, *q, buf[BUFSIZ]; - - if (!mdata->type || mdata->type == XPMBUFFER) { - if (mdata->cptr) { - char *start; - - while (isspace(c = *mdata->cptr) && c != mdata->Eos) - mdata->cptr++; - start = mdata->cptr; - while ((c = *mdata->cptr) && c != mdata->Eos) - mdata->cptr++; - n = mdata->cptr - start + 1; - p = (char *) XpmMalloc(n); - if (!p) - return (XpmNoMemory); - strncpy(p, start, n); - if (mdata->type) /* XPMBUFFER */ - p[n - 1] = '\0'; - } - } else { - FILE *file = mdata->stream.file; - - while ((c = getc(file)) != EOF && isspace(c) && c != mdata->Eos); - if (c == EOF) - return (XpmFileInvalid); - p = NULL; - i = 0; - q = buf; - p = (char *) XpmMalloc(1); - while (c != mdata->Eos && c != EOF) { - if (i == BUFSIZ) { - /* get to the end of the buffer */ - /* malloc needed memory */ - q = (char *) XpmRealloc(p, n + i); - if (!q) { - XpmFree(p); - return (XpmNoMemory); - } - p = q; - q += n; - /* and copy what we already have */ - strncpy(q, buf, i); - n += i; - i = 0; - q = buf; - } - *q++ = c; - i++; - c = getc(file); - } - if (c == EOF) { - XpmFree(p); - return (XpmFileInvalid); - } - if (n + i != 0) { - /* malloc needed memory */ - q = (char *) XpmRealloc(p, n + i + 1); - if (!q) { - XpmFree(p); - return (XpmNoMemory); - } - p = q; - q += n; - /* and copy the buffer */ - strncpy(q, buf, i); - n += i; - p[n++] = '\0'; - } else { - *p = '\0'; - n = 1; - } - ungetc(c, file); - } - *sptr = p; - *l = n; - return (XpmSuccess); -} - -/* - * get the current comment line - */ -int -xpmGetCmt(xpmData *mdata, char **cmt) -{ - if (!mdata->type) - *cmt = NULL; - else if (mdata->CommentLength) { - *cmt = (char *) XpmMalloc(mdata->CommentLength + 1); - strncpy(*cmt, mdata->Comment, mdata->CommentLength); - (*cmt)[mdata->CommentLength] = '\0'; - mdata->CommentLength = 0; - } else - *cmt = NULL; - return 0; -} - -/* - * open the given file to be read as an xpmData which is returned. - */ -int -xpmReadFile(char *filename, xpmData *mdata) -{ -#ifdef ZPIPE - char *compressfile, buf[BUFSIZ]; - struct stat status; - -#endif - - if (!filename) { - mdata->stream.file = (stdin); - mdata->type = XPMFILE; - } else { -#ifdef ZPIPE - if (((int) strlen(filename) > 2) && - !strcmp(".Z", filename + (strlen(filename) - 2))) { - mdata->type = XPMPIPE; - sprintf(buf, "uncompress -c %s", filename); - if (!(mdata->stream.file = popen(buf, "r"))) - return (XpmOpenFailed); - - } else if (((int) strlen(filename) > 3) && - !strcmp(".gz", filename + (strlen(filename) - 3))) { - mdata->type = XPMPIPE; - sprintf(buf, "gunzip -qc %s", filename); - if (!(mdata->stream.file = popen(buf, "r"))) - return (XpmOpenFailed); - - } else { - if (!(compressfile = (char *) XpmMalloc(strlen(filename) + 4))) - return (XpmNoMemory); - - strcpy(compressfile, filename); - strcat(compressfile, ".Z"); - if (!stat(compressfile, &status)) { - sprintf(buf, "uncompress -c %s", compressfile); - if (!(mdata->stream.file = popen(buf, "r"))) { - XpmFree(compressfile); - return (XpmOpenFailed); - } - mdata->type = XPMPIPE; - } else { - strcpy(compressfile, filename); - strcat(compressfile, ".gz"); - if (!stat(compressfile, &status)) { - sprintf(buf, "gunzip -c %s", compressfile); - if (!(mdata->stream.file = popen(buf, "r"))) { - XpmFree(compressfile); - return (XpmOpenFailed); - } - mdata->type = XPMPIPE; - } else { -#endif - if (!(mdata->stream.file = fopen(filename, "r"))) { -#ifdef ZPIPE - XpmFree(compressfile); -#endif - return (XpmOpenFailed); - } - mdata->type = XPMFILE; -#ifdef ZPIPE - } - } - XpmFree(compressfile); - } -#endif - } - mdata->CommentLength = 0; - return (XpmSuccess); -} - -/* - * open the given file to be written as an xpmData which is returned - */ -int -xpmWriteFile(char *filename, xpmData *mdata) -{ -#ifdef ZPIPE - char buf[BUFSIZ]; - -#endif - - if (!filename) { - mdata->stream.file = (stdout); - mdata->type = XPMFILE; - } else { -#ifdef ZPIPE - if ((int) strlen(filename) > 2 - && !strcmp(".Z", filename + (strlen(filename) - 2))) { - sprintf(buf, "compress > %s", filename); - if (!(mdata->stream.file = popen(buf, "w"))) - return (XpmOpenFailed); - - mdata->type = XPMPIPE; - } else if ((int) strlen(filename) > 3 - && !strcmp(".gz", filename + (strlen(filename) - 3))) { - sprintf(buf, "gzip -q > %s", filename); - if (!(mdata->stream.file = popen(buf, "w"))) - return (XpmOpenFailed); - - mdata->type = XPMPIPE; - } else { -#endif - if (!(mdata->stream.file = fopen(filename, "w"))) - return (XpmOpenFailed); - - mdata->type = XPMFILE; -#ifdef ZPIPE - } -#endif - } - return (XpmSuccess); -} - -/* - * open the given array to be read or written as an xpmData which is returned - */ -void -xpmOpenArray(char **data, xpmData *mdata) -{ - mdata->type = XPMARRAY; - mdata->stream.data = data; - mdata->cptr = *data; - mdata->line = 0; - mdata->CommentLength = 0; - mdata->Bcmt = mdata->Ecmt = NULL; - mdata->Bos = mdata->Eos = '\0'; - mdata->format = 0; /* this can only be Xpm 2 or 3 */ -} - -/* - * open the given buffer to be read or written as an xpmData which is returned - */ -void -xpmOpenBuffer(char *buffer, xpmData *mdata) -{ - mdata->type = XPMBUFFER; - mdata->cptr = buffer; - mdata->CommentLength = 0; -} - -/* - * close the file related to the xpmData if any - */ -int -xpmDataClose(xpmData *mdata) -{ - switch (mdata->type) { - case XPMARRAY: - case XPMBUFFER: - break; - case XPMFILE: - if (mdata->stream.file != (stdout) && mdata->stream.file != (stdin)) - fclose(mdata->stream.file); - break; -#ifdef ZPIPE - case XPMPIPE: - pclose(mdata->stream.file); - break; -#endif - } - return 0; -} - -xpmDataType xpmDataTypes[] = -{ - "", "!", "\n", '\0', '\n', "", "", "", "", /* Natural type */ - "C", "/*", "*/", '"', '"', ",\n", "static char *", "[] = {\n", "};\n", - "Lisp", ";", "\n", '"', '"', "\n", "(setq ", " '(\n", "))\n", -#ifdef VMS - NULL -#else - NULL, NULL, NULL, 0, 0, NULL, NULL, NULL, NULL -#endif -}; - -/* - * parse xpm header - */ -int -xpmParseHeader(xpmData *mdata) -{ - char buf[BUFSIZ]; - int l, n = 0; - - if (mdata->type) { - mdata->Bos = '\0'; - mdata->Eos = '\n'; - mdata->Bcmt = mdata->Ecmt = NULL; - l = xpmNextWord(mdata, buf, BUFSIZ); - if (l == 7 && !strncmp("#define", buf, 7)) { - /* this maybe an XPM 1 file */ - char *ptr; - - l = xpmNextWord(mdata, buf, BUFSIZ); - if (!l) - return (XpmFileInvalid); - ptr = strchr(buf, '_'); - if (!ptr || strncmp("_format", ptr, l - (ptr - buf))) - return XpmFileInvalid; - /* this is definitely an XPM 1 file */ - mdata->format = 1; - n = 1; /* handle XPM1 as mainly XPM2 C */ - } else { - - /* - * skip the first word, get the second one, and see if this is - * XPM 2 or 3 - */ - l = xpmNextWord(mdata, buf, BUFSIZ); - if ((l == 3 && !strncmp("XPM", buf, 3)) || - (l == 4 && !strncmp("XPM2", buf, 4))) { - if (l == 3) - n = 1; /* handle XPM as XPM2 C */ - else { - /* get the type key word */ - l = xpmNextWord(mdata, buf, BUFSIZ); - - /* - * get infos about this type - */ - while (xpmDataTypes[n].type - && strncmp(xpmDataTypes[n].type, buf, l)) - n++; - } - mdata->format = 0; - } else - /* nope this is not an XPM file */ - return XpmFileInvalid; - } - if (xpmDataTypes[n].type) { - if (n == 0) { /* natural type */ - mdata->Bcmt = xpmDataTypes[n].Bcmt; - mdata->Ecmt = xpmDataTypes[n].Ecmt; - xpmNextString(mdata); /* skip the end of the headerline */ - mdata->Bos = xpmDataTypes[n].Bos; - mdata->Eos = xpmDataTypes[n].Eos; - } else { - mdata->Bcmt = xpmDataTypes[n].Bcmt; - mdata->Ecmt = xpmDataTypes[n].Ecmt; - if (!mdata->format) { /* XPM 2 or 3 */ - mdata->Bos = xpmDataTypes[n].Bos; - mdata->Eos = '\0'; - /* get to the beginning of the first string */ - xpmNextString(mdata); - mdata->Eos = xpmDataTypes[n].Eos; - } else /* XPM 1 skip end of line */ - xpmNextString(mdata); - } - } else - /* we don't know about that type of XPM file... */ - return XpmFileInvalid; - } - return XpmSuccess; -} diff --git a/src/xpm/files b/src/xpm/files deleted file mode 100644 index 0a98c41644..0000000000 --- a/src/xpm/files +++ /dev/null @@ -1,47 +0,0 @@ -CHANGES -COPYRIGHT -FILES -Imakefile -Makefile.noXtree -README -README.MSW -namecvt -lib -lib/Imakefile -lib/Makefile.noXtree -lib/XpmCrBufFrI.c -lib/XpmCrBufFrP.c -lib/XpmCrDataFrI.c -lib/XpmCrDataFrP.c -lib/XpmCrIFrBuf.c -lib/XpmCrIFrData.c -lib/XpmCrPFrBuf.c -lib/XpmCrPFrData.c -lib/XpmRdFToData.c -lib/XpmRdFToI.c -lib/XpmRdFToP.c -lib/XpmWrFFrData.c -lib/XpmWrFFrI.c -lib/XpmWrFFrP.c -lib/create.c -lib/data.c -lib/hashtable.c -lib/misc.c -lib/parse.c -lib/rgb.c -lib/rgbtab.h -lib/scan.c -lib/simx.h -lib/simx.c -lib/xpm.h -lib/xpmP.h -doc -doc/xpm.ps -sxpm -sxpm/Imakefile -sxpm/Makefile.noXtree -sxpm/plaid.xpm -sxpm/plaid_ext.xpm -sxpm/plaid_mask.xpm -sxpm/sxpm.c -sxpm/sxpm.man diff --git a/src/xpm/hashtab.c b/src/xpm/hashtab.c deleted file mode 100644 index 6efa9708b8..0000000000 --- a/src/xpm/hashtab.c +++ /dev/null @@ -1,224 +0,0 @@ -/* - * Copyright (C) 1989-94 GROUPE BULL - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name of GROUPE BULL shall not be - * used in advertising or otherwise to promote the sale, use or other dealings - * in this Software without prior written authorization from GROUPE BULL. - */ - -/*****************************************************************************\ -* hashtable.c: * -* * -* XPM library * -* * -* Developed by Arnaud Le Hors * -* this originaly comes from Colas Nahaboo as a part of Wool * -* * -\*****************************************************************************/ - -#include "xpm34p.h" - -LFUNC(AtomMake, xpmHashAtom, (char *name, void *data)); -LFUNC(HashTableGrows, int, (xpmHashTable * table)); - -static xpmHashAtom -AtomMake(char *name, void *data) /* makes an atom */ -/* char *name; */ /* WARNING: is just pointed to */ -/* void *data; */ -{ - xpmHashAtom object = (xpmHashAtom) XpmMalloc(sizeof(struct _xpmHashAtom)); - - if (object) { - object->name = name; - object->data = data; - } - return object; -} - -/************************\ -* * -* hash table routines * -* * -\************************/ - -/* - * Hash function definition: - * HASH_FUNCTION: hash function, hash = hashcode, hp = pointer on char, - * hash2 = temporary for hashcode. - * INITIAL_TABLE_SIZE in slots - * HASH_TABLE_GROWS how hash table grows. - */ - -/* Mock lisp function */ -#define HASH_FUNCTION hash = (hash << 5) - hash + *hp++; -/* #define INITIAL_HASH_SIZE 2017 */ -#define INITIAL_HASH_SIZE 256 /* should be enough for colors */ -#define HASH_TABLE_GROWS size = size * 2; - -/* aho-sethi-ullman's HPJ (sizes should be primes)*/ -#ifdef notdef -#define HASH_FUNCTION hash <<= 4; hash += *hp++; \ - if(hash2 = hash & 0xf0000000) hash ^= (hash2 >> 24) ^ hash2; -#define INITIAL_HASH_SIZE 4095 /* should be 2^n - 1 */ -#define HASH_TABLE_GROWS size = size << 1 + 1; -#endif - -/* GNU emacs function */ -/* -#define HASH_FUNCTION hash = (hash << 3) + (hash >> 28) + *hp++; -#define INITIAL_HASH_SIZE 2017 -#define HASH_TABLE_GROWS size = size * 2; -*/ - -/* end of hash functions */ - -/* - * The hash table is used to store atoms via their NAME: - * - * NAME --hash--> ATOM |--name--> "foo" - * |--data--> any value which has to be stored - * - */ - -/* - * xpmHashSlot gives the slot (pointer to xpmHashAtom) of a name - * (slot points to NULL if it is not defined) - * - */ - -xpmHashAtom * -xpmHashSlot(xpmHashTable *table, char *s) -{ - xpmHashAtom *atomTable = table->atomTable; - unsigned int hash; - xpmHashAtom *p; - char *hp = s; - char *ns; - - hash = 0; - while (*hp) { /* computes hash function */ - HASH_FUNCTION - } - p = atomTable + hash % table->size; - while (*p) { - ns = (*p)->name; - if (ns[0] == s[0] && strcmp(ns, s) == 0) - break; - p--; - if (p < atomTable) - p = atomTable + table->size - 1; - } - return p; -} - -static int -HashTableGrows(xpmHashTable *table) -{ - xpmHashAtom *atomTable = table->atomTable; - int size = table->size; - xpmHashAtom *t, *p; - int i; - int oldSize = size; - - t = atomTable; - HASH_TABLE_GROWS - table->size = size; - table->limit = size / 3; - atomTable = (xpmHashAtom *) XpmMalloc(size * sizeof(*atomTable)); - if (!atomTable) - return (XpmNoMemory); - table->atomTable = atomTable; - for (p = atomTable + size; p > atomTable;) - *--p = NULL; - for (i = 0, p = t; i < oldSize; i++, p++) - if (*p) { - xpmHashAtom *ps = xpmHashSlot(table, (*p)->name); - - *ps = *p; - } - XpmFree(t); - return (XpmSuccess); -} - -/* - * xpmHashIntern(table, name, data) - * an xpmHashAtom is created if name doesn't exist, with the given data. - */ - -int -xpmHashIntern(xpmHashTable *table, char *tag, void *data) -{ - xpmHashAtom *slot; - - if (!*(slot = xpmHashSlot(table, tag))) { - /* undefined, make a new atom with the given data */ - if (!(*slot = AtomMake(tag, data))) - return (XpmNoMemory); - if (table->used >= table->limit) { - int ErrorStatus; - - if ((ErrorStatus = HashTableGrows(table)) != XpmSuccess) - return (ErrorStatus); - table->used++; - return (XpmSuccess); - } - table->used++; - } - return (XpmSuccess); -} - -/* - * must be called before allocating any atom - */ - -int -xpmHashTableInit(xpmHashTable *table) -{ - xpmHashAtom *p; - xpmHashAtom *atomTable; - - table->size = INITIAL_HASH_SIZE; - table->limit = table->size / 3; - table->used = 0; - atomTable = (xpmHashAtom *) XpmMalloc(table->size * sizeof(*atomTable)); - if (!atomTable) - return (XpmNoMemory); - for (p = atomTable + table->size; p > atomTable;) - *--p = NULL; - table->atomTable = atomTable; - return (XpmSuccess); -} - -/* - * frees a hashtable and all the stored atoms - */ - -void -xpmHashTableFree(xpmHashTable *table) -{ - xpmHashAtom *p; - xpmHashAtom *atomTable = table->atomTable; - - for (p = atomTable + table->size; p > atomTable;) - if (*--p) - XpmFree(*p); - XpmFree(atomTable); - table->atomTable = NULL; -} diff --git a/src/xpm/makefile.vc b/src/xpm/makefile.vc deleted file mode 100644 index 4dad3c0d52..0000000000 --- a/src/xpm/makefile.vc +++ /dev/null @@ -1,170 +0,0 @@ -# -# File: makefile.nt -# Author: Julian Smart -# Created: 1997 -# Updated: -# Copyright: (c) 1997, Julian Smart -# -# "%W% %G%" -# -# Makefile : Builds xpm.lib for VC++ (32-bit) -# -!include <..\makevc.env> - -THISDIR=$(WXWIN)\src\xpm - -LIBTARGET=$(WXDIR)\lib\xpm.lib - -# Please set these according to the settings in wx_setup.h, so we can include -# the appropriate libraries in wx.lib - -# This one overrides the others, to be consistent with the settings in wx_setup.h -MINIMAL_WXWINDOWS_SETUP=0 - -PERIPH_LIBS= -PERIPH_TARGET= -PERIPH_CLEAN_TARGET= - -XPMDIR=$(WXDIR)\src\xpm - -OBJECTS = $(XPMDIR)\crbuffri.obj\ - $(XPMDIR)\crdatfri.obj\ - $(XPMDIR)\create.obj $(XPMDIR)\crifrbuf.obj\ - $(XPMDIR)\crifrdat.obj\ - $(XPMDIR)\data.obj\ - $(XPMDIR)\hashtab.obj $(XPMDIR)\misc.obj\ - $(XPMDIR)\parse.obj $(XPMDIR)\rdftodat.obj\ - $(XPMDIR)\rdftoi.obj\ - $(XPMDIR)\rgb.obj $(XPMDIR)\scan.obj\ - $(XPMDIR)\simx.obj $(XPMDIR)\wrffrdat.obj\ - $(XPMDIR)\wrffrp.obj $(XPMDIR)\wrffri.obj - -all: $(LIBTARGET) - -$(LIBTARGET): $(OBJECTS) - -erase $(LIBTARGET) - $(implib) @<< --out:$@ --machine:$(CPU) -$(OBJECTS) $(PERIPH_LIBS) -<< - -$(XPMDIR)\crbuffri.obj: $(XPMDIR)\crbuffri.c - cl @<< -$(CPPFLAGS2) /c $*.c /Fo$@ -<< - -$(XPMDIR)\crbuffrp.obj: $(XPMDIR)\crbuffrp.c - cl @<< -$(CPPFLAGS2) /c $*.c /Fo$@ -<< - -$(XPMDIR)\crdatfri.obj: $(XPMDIR)\crdatfri.c - cl @<< -$(CPPFLAGS2) /c $*.c /Fo$@ -<< - -$(XPMDIR)\crdatfrp.obj: $(XPMDIR)\crdatfrp.c - cl @<< -$(CPPFLAGS2) /c $*.c /Fo$@ -<< - -$(XPMDIR)\create.obj: $(XPMDIR)\create.c - cl @<< -$(CPPFLAGS2) /c $*.c /Fo$@ -<< - -$(XPMDIR)\crifrbuf.obj: $(XPMDIR)\crifrbuf.c - cl @<< -$(CPPFLAGS2) /c $*.c /Fo$@ -<< - -$(XPMDIR)\crifrdat.obj: $(XPMDIR)\crifrdat.c - cl @<< -$(CPPFLAGS2) /c $*.c /Fo$@ -<< - -$(XPMDIR)\crpfrbuf.obj: $(XPMDIR)\crpfrbuf.c - cl @<< -$(CPPFLAGS2) /c $*.c /Fo$@ -<< - -$(XPMDIR)\crpfrdat.obj: $(XPMDIR)\crpfrdat.c - cl @<< -$(CPPFLAGS2) /c $*.c /Fo$@ -<< - -$(XPMDIR)\data.obj: $(XPMDIR)\data.c - cl @<< -$(CPPFLAGS2) /c $*.c /Fo$@ -<< - -$(XPMDIR)\hashtab.obj: $(XPMDIR)\hashtab.c - cl @<< -$(CPPFLAGS2) /c $*.c /Fo$@ -<< - -$(XPMDIR)\misc.obj: $(XPMDIR)\misc.c - cl @<< -$(CPPFLAGS2) /c $*.c /Fo$@ -<< - -$(XPMDIR)\parse.obj: $(XPMDIR)\parse.c - cl @<< -$(CPPFLAGS2) /c $*.c /Fo$@ -<< - -$(XPMDIR)\rdftodat.obj: $(XPMDIR)\rdftodat.c - cl @<< -$(CPPFLAGS2) /c $*.c /Fo$@ -<< - -$(XPMDIR)\rdftoi.obj: $(XPMDIR)\rdftoi.c - cl @<< -$(CPPFLAGS2) /c $*.c /Fo$@ -<< - -$(XPMDIR)\rdftop.obj: $(XPMDIR)\rdftop.c - cl @<< -$(CPPFLAGS2) /c $*.c /Fo$@ -<< - -$(XPMDIR)\rgb.obj: $(XPMDIR)\rgb.c - cl @<< -$(CPPFLAGS2) /c $*.c /Fo$@ -<< - -$(XPMDIR)\scan.obj: $(XPMDIR)\scan.c - cl @<< -$(CPPFLAGS2) /c $*.c /Fo$@ -<< - -$(XPMDIR)\simx.obj: $(XPMDIR)\simx.c - cl @<< -$(CPPFLAGS2) /c $*.c /Fo$@ -<< - -$(XPMDIR)\wrffrdat.obj: $(XPMDIR)\wrffrdat.c - cl @<< -$(CPPFLAGS2) /c $*.c /Fo$@ -<< - -$(XPMDIR)\wrffri.obj: $(XPMDIR)\wrffri.c - cl @<< -$(CPPFLAGS2) /c $*.c /Fo$@ -<< - -$(XPMDIR)\wrffrp.obj: $(XPMDIR)\wrffrp.c - cl @<< -$(CPPFLAGS2) /c $*.c /Fo$@ -<< - -clean: - -erase *.obj - -erase $(LIBTARGET) - -erase *.pdb - -erase *.sbr - -erase *.pch - -cleanall: clean - diff --git a/src/xpm/makefile.wat b/src/xpm/makefile.wat deleted file mode 100644 index 4ce627d402..0000000000 --- a/src/xpm/makefile.wat +++ /dev/null @@ -1,54 +0,0 @@ -#!/binb/wmake.exe -# -# File: makefile.wat -# Author: Julian Smart -# Created: 1998 -# -# Makefile : Builds XPM library for Watcom C++, WIN32 - -WXDIR = ..\.. - -!include $(WXDIR)\src\makewat.env - -WXLIB = $(WXDIR)\lib - -LIBTARGET = $(WXLIB)\xpm.lib - -OBJECTS = crbuffri.obj & - crdatfri.obj & - create.obj & - crifrbuf.obj & - crifrdat.obj & - data.obj & - hashtab.obj & - misc.obj & - parse.obj & - rdftodat.obj & - rdftoi.obj & - rgb.obj & - scan.obj & - simx.obj & - wrffrdat.obj & - wrffrp.obj & - wrffri.obj - -all: $(OBJECTS) $(LIBTARGET) - -$(LIBTARGET) : $(OBJECTS) - %create tmp.lbc - @for %i in ( $(OBJECTS) ) do @%append tmp.lbc +%i - wlib /b /c /n /p=512 $^@ @tmp.lbc - -clean: .SYMBOLIC - -erase *.obj - -erase $(LIBTARGET) - -erase *.pch - -erase *.err - -erase *.lbc - -cleanall: clean - -#accel.obj: $(MSWDIR)\accel.cpp -# *$(CCC) $(CPPFLAGS) $(IFLAGS) $< - - diff --git a/src/xpm/misc.c b/src/xpm/misc.c deleted file mode 100644 index c0089ab011..0000000000 --- a/src/xpm/misc.c +++ /dev/null @@ -1,572 +0,0 @@ -/* - * Copyright (C) 1989-94 GROUPE BULL - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name of GROUPE BULL shall not be - * used in advertising or otherwise to promote the sale, use or other dealings - * in this Software without prior written authorization from GROUPE BULL. - */ - -/*****************************************************************************\ -* misc.c: * -* * -* XPM library * -* Miscellaneous utilities * -* * -* Developed by Arnaud Le Hors * -\*****************************************************************************/ - -/* - * The code related to FOR_MSW has been added by - * HeDu (hedu@cul-ipn.uni-kiel.de) 4/94 - */ - -#include "xpm34p.h" -#ifdef VMS -#include "sys$library:stat.h" -#include "sys$library:fcntl.h" -#else -#include -#include -#include -#include -#ifdef FOR_MSW -#include -#else -#include -#endif -#endif - -/* 3.2 backward compatibility code */ -LFUNC(CreateOldColorTable, int, (XpmColor *ct, int ncolors, - XpmColor ***oldct)); - -LFUNC(FreeOldColorTable, void, (XpmColor **colorTable, int ncolors)); - -/* - * Create a colortable compatible with the old style colortable - */ -static int -CreateOldColorTable(XpmColor *ct, int ncolors, XpmColor ***oldct) -{ - XpmColor **colorTable, **color; - int a; - - colorTable = (XpmColor **) XpmMalloc(ncolors * sizeof(XpmColor *)); - if (!colorTable) { - *oldct = NULL; - return (XpmNoMemory); - } - for (a = 0, color = colorTable; a < ncolors; a++, color++, ct++) - *color = ct; - *oldct = colorTable; - return (XpmSuccess); -} - -static void -FreeOldColorTable(XpmColor **colorTable, int ncolors) -{ - int a, b; - XpmColor **color; - char **sptr; - - if (colorTable) { - for (a = 0, color = colorTable; a < ncolors; a++, color++) { - for (b = 0, sptr = (char **) *color; b <= NKEYS; b++, sptr++) - if (*sptr) - XpmFree(*sptr); - } - XpmFree(*colorTable); - XpmFree(colorTable); - } -} - -/* end 3.2 bc */ - - -/* - * Free the computed color table - */ -void -xpmFreeColorTable(XpmColor *colorTable, int ncolors) -{ - int a, b; - XpmColor *color; - char **sptr; - - if (colorTable) { - for (a = 0, color = colorTable; a < ncolors; a++, color++) { - for (b = 0, sptr = (char **) color; b <= NKEYS; b++, sptr++) - if (*sptr) - XpmFree(*sptr); - } - XpmFree(colorTable); - } -} - -/* - * Free array of extensions - */ -void -XpmFreeExtensions(XpmExtension *extensions, int nextensions) -{ - unsigned int i, j, nlines; - XpmExtension *ext; - char **sptr; - - if (extensions) { - for (i = 0, ext = extensions; i < nextensions; i++, ext++) { - if (ext->name) - XpmFree(ext->name); - nlines = ext->nlines; - for (j = 0, sptr = ext->lines; j < nlines; j++, sptr++) - if (*sptr) - XpmFree(*sptr); - if (ext->lines) - XpmFree(ext->lines); - } - XpmFree(extensions); - } -} - - -/* - * Return the XpmAttributes structure size - */ - -int -XpmAttributesSize() -{ - return sizeof(XpmAttributes); -} - -/* - * Init returned data to free safely later on - */ -void -xpmInitAttributes(XpmAttributes *attributes) -{ - if (attributes) { - attributes->pixels = NULL; - attributes->npixels = 0; - attributes->colorTable = NULL; - attributes->ncolors = 0; -/* 3.2 backward compatibility code */ - attributes->hints_cmt = NULL; - attributes->colors_cmt = NULL; - attributes->pixels_cmt = NULL; -/* end 3.2 bc */ - attributes->extensions = NULL; - attributes->nextensions = 0; - } -} - -/* - * Fill in the XpmAttributes with the XpmImage and the XpmInfo - */ -void -xpmSetAttributes(XpmAttributes *attributes, XpmImage *image, XpmInfo *info) -{ - if (attributes->valuemask & XpmReturnColorTable) { - attributes->colorTable = image->colorTable; - attributes->ncolors = image->ncolors; - - /* avoid deletion of copied data */ - image->ncolors = 0; - image->colorTable = NULL; - } -/* 3.2 backward compatibility code */ - else if (attributes->valuemask & XpmReturnInfos) { - int ErrorStatus; - - ErrorStatus = CreateOldColorTable(image->colorTable, image->ncolors, - (XpmColor ***) - &attributes->colorTable); - - /* if error just say we can't return requested data */ - if (ErrorStatus != XpmSuccess) { - attributes->valuemask &= ~XpmReturnInfos; - if (!(attributes->valuemask & XpmReturnPixels)) { - XpmFree(attributes->pixels); - attributes->pixels = NULL; - attributes->npixels = 0; - } - attributes->ncolors = 0; - } else { - attributes->ncolors = image->ncolors; - attributes->hints_cmt = info->hints_cmt; - attributes->colors_cmt = info->colors_cmt; - attributes->pixels_cmt = info->pixels_cmt; - - /* avoid deletion of copied data */ - image->ncolors = 0; - image->colorTable = NULL; - info->hints_cmt = NULL; - info->colors_cmt = NULL; - info->pixels_cmt = NULL; - } - } -/* end 3.2 bc */ - if (attributes->valuemask & XpmReturnExtensions) { - attributes->extensions = info->extensions; - attributes->nextensions = info->nextensions; - - /* avoid deletion of copied data */ - info->extensions = NULL; - info->nextensions = 0; - } - if (info->valuemask & XpmHotspot) { - attributes->valuemask |= XpmHotspot; - attributes->x_hotspot = info->x_hotspot; - attributes->y_hotspot = info->y_hotspot; - } - attributes->valuemask |= XpmCharsPerPixel; - attributes->cpp = image->cpp; - attributes->valuemask |= XpmSize; - attributes->width = image->width; - attributes->height = image->height; -} - -/* - * Free the XpmAttributes structure members - * but the structure itself - */ -void -XpmFreeAttributes(XpmAttributes *attributes) -{ - if (attributes->valuemask & XpmReturnPixels && attributes->npixels) { - XpmFree(attributes->pixels); - attributes->pixels = NULL; - attributes->npixels = 0; - } - if (attributes->valuemask & XpmReturnColorTable) { - xpmFreeColorTable(attributes->colorTable, attributes->ncolors); - attributes->colorTable = NULL; - attributes->ncolors = 0; - } -/* 3.2 backward compatibility code */ - else if (attributes->valuemask & XpmInfos) { - if (attributes->colorTable) { - FreeOldColorTable((XpmColor **) attributes->colorTable, - attributes->ncolors); - attributes->colorTable = NULL; - attributes->ncolors = 0; - } - if (attributes->hints_cmt) { - XpmFree(attributes->hints_cmt); - attributes->hints_cmt = NULL; - } - if (attributes->colors_cmt) { - XpmFree(attributes->colors_cmt); - attributes->colors_cmt = NULL; - } - if (attributes->pixels_cmt) { - XpmFree(attributes->pixels_cmt); - attributes->pixels_cmt = NULL; - } - if (attributes->pixels) { - XpmFree(attributes->pixels); - attributes->pixels = NULL; - attributes->npixels = 0; - } - } -/* end 3.2 bc */ - if (attributes->valuemask & XpmReturnExtensions - && attributes->nextensions) { - XpmFreeExtensions(attributes->extensions, attributes->nextensions); - attributes->extensions = NULL; - attributes->nextensions = 0; - } - attributes->valuemask = 0; -} - -/* - * Init returned data to free safely later on - */ -void -xpmInitXpmImage(XpmImage *image) -{ - image->ncolors = 0; - image->colorTable = NULL; - image->data = NULL; -} - -/* - * Free the XpmImage data which have been allocated - */ -void -XpmFreeXpmImage(XpmImage *image) -{ - if (image->colorTable) - xpmFreeColorTable(image->colorTable, image->ncolors); - XpmFree(image->data); - image->data = NULL; -} - -/* - * Init returned data to free safely later on - */ -void -xpmInitXpmInfo(XpmInfo *info) -{ - if (info) { - info->hints_cmt = NULL; - info->colors_cmt = NULL; - info->pixels_cmt = NULL; - info->extensions = NULL; - info->nextensions = 0; - } -} - -/* - * Free the XpmInfo data which have been allocated - */ -void -XpmFreeXpmInfo(XpmInfo *info) -{ - if (info) { - if (info->valuemask & XpmComments) { - if (info->hints_cmt) { - XpmFree(info->hints_cmt); - info->hints_cmt = NULL; - } - if (info->colors_cmt) { - XpmFree(info->colors_cmt); - info->colors_cmt = NULL; - } - if (info->pixels_cmt) { - XpmFree(info->pixels_cmt); - info->pixels_cmt = NULL; - } - } - if (info->valuemask & XpmReturnExtensions && info->nextensions) { - XpmFreeExtensions(info->extensions, info->nextensions); - info->extensions = NULL; - info->nextensions = 0; - } - info->valuemask = 0; - } -} - -/* - * Set the XpmInfo valuemask to retrieve required info - */ -void -xpmSetInfoMask(XpmInfo *info, XpmAttributes *attributes) -{ - info->valuemask = 0; - if (attributes->valuemask & XpmReturnInfos) - info->valuemask |= XpmReturnComments; - if (attributes->valuemask & XpmReturnExtensions) - info->valuemask |= XpmReturnExtensions; -} - -/* - * Fill in the XpmInfo with the XpmAttributes - */ -void -xpmSetInfo(XpmInfo *info, XpmAttributes *attributes) -{ - info->valuemask = 0; - if (attributes->valuemask & XpmInfos) { - info->valuemask |= XpmComments | XpmColorTable; - info->hints_cmt = attributes->hints_cmt; - info->colors_cmt = attributes->colors_cmt; - info->pixels_cmt = attributes->pixels_cmt; - } - if (attributes->valuemask & XpmExtensions) { - info->valuemask |= XpmExtensions; - info->extensions = attributes->extensions; - info->nextensions = attributes->nextensions; - } - if (attributes->valuemask & XpmHotspot) { - info->valuemask |= XpmHotspot; - info->x_hotspot = attributes->x_hotspot; - info->y_hotspot = attributes->y_hotspot; - } -} - - -#ifdef NEED_STRDUP -/* - * in case strdup is not provided by the system here is one - * which does the trick - */ -char * -strdup(char *s1) -{ - char *s2; - int l = strlen(s1) + 1; - - if (s2 = (char *) XpmMalloc(l)) - strncpy(s2, s1, l); - return s2; -} - -#endif - -unsigned int -atoui(register char *p, unsigned int l, unsigned int *ui_return) -{ - register unsigned int n, i; - - n = 0; - for (i = 0; i < l; i++) - if (*p >= '0' && *p <= '9') - n = n * 10 + *p++ - '0'; - else - break; - - if (i != 0 && i == l) { - *ui_return = n; - return 1; - } else - return 0; -} - - -/* - * File / Buffer utilities - */ -int -XpmReadFileToBuffer(char *filename, char **buffer_return) -{ - int fd, fcheck, len; - char *ptr; - struct stat stats; - FILE *fp; - - *buffer_return = NULL; - - fd = open(filename, O_RDONLY); - if (fd < 0) - return XpmOpenFailed; - - if (fstat(fd, &stats)) { - close(fd); - return XpmOpenFailed; - } - fp = fdopen(fd, "r"); - if (!fp) { - close(fd); - return XpmOpenFailed; - } - len = (int) stats.st_size; - ptr = (char *) XpmMalloc(len + 1); - if (!ptr) { - fclose(fp); - return XpmNoMemory; - } - fcheck = fread(ptr, len, 1, fp); - fclose(fp); - if (fcheck != 1) { - XpmFree(ptr); - return XpmOpenFailed; - } - ptr[len] = '\0'; - *buffer_return = ptr; - return XpmSuccess; -} - -int -XpmWriteFileFromBuffer(char *filename, char *buffer) -{ - int fcheck, len; - FILE *fp = fopen(filename, "w"); - - if (!fp) - return XpmOpenFailed; - - len = strlen(buffer); - fcheck = fwrite(buffer, len, 1, fp); - fclose(fp); - if (fcheck != 1) - return XpmOpenFailed; - - return XpmSuccess; -} - - -/* - * Small utility function - */ -char * -XpmGetErrorString(int errcode) -{ - switch (errcode) { - case XpmColorError: - return ("XpmColorError"); - case XpmSuccess: - return ("XpmSuccess"); - case XpmOpenFailed: - return ("XpmOpenFailed"); - case XpmFileInvalid: - return ("XpmFileInvalid"); - case XpmNoMemory: - return ("XpmNoMemory"); - case XpmColorFailed: - return ("XpmColorFailed"); - default: - return ("Invalid XpmError"); - } -} - -/* - * The following function provides a way to figure out if the linked library is - * newer or older than the one with which a program has been first compiled. - */ -int -XpmLibraryVersion() -{ - return XpmIncludeVersion; -} - - -#ifndef FOR_MSW -void -xpmCreatePixmapFromImage(Display *display, Drawable d, XImage *ximage, Pixmap *pixmap_return) -{ - GC gc; - - *pixmap_return = XCreatePixmap(display, d, ximage->width, - ximage->height, ximage->depth); - gc = XCreateGC(display, *pixmap_return, 0, NULL); - - XPutImage(display, *pixmap_return, gc, ximage, 0, 0, 0, 0, - ximage->width, ximage->height); - - XFreeGC(display, gc); -} - -void -xpmCreateImageFromPixmap(Display *display, Pixmap pixmap, XImage **ximage_return, unsigned int *width, unsigned int *height) -{ - unsigned int dum; - int dummy; - Window win; - - if (*width == 0 && *height == 0) - XGetGeometry(display, pixmap, &win, &dummy, &dummy, - width, height, &dum, &dum); - - *ximage_return = XGetImage(display, pixmap, 0, 0, *width, *height, - AllPlanes, ZPixmap); -} - -#endif /* FOR_MSW */ diff --git a/src/xpm/parse.c b/src/xpm/parse.c deleted file mode 100644 index 74bb479fe9..0000000000 --- a/src/xpm/parse.c +++ /dev/null @@ -1,705 +0,0 @@ -/* - * Copyright (C) 1989-94 GROUPE BULL - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name of GROUPE BULL shall not be - * used in advertising or otherwise to promote the sale, use or other dealings - * in this Software without prior written authorization from GROUPE BULL. - */ - -/*****************************************************************************\ -* parse.c: * -* * -* XPM library * -* Parse an XPM file or array and store the found informations * -* in the given XpmImage structure. * -* * -* Developed by Arnaud Le Hors * -\*****************************************************************************/ - -/* - * The code related to FOR_MSW has been added by - * HeDu (hedu@cul-ipn.uni-kiel.de) 4/94 - */ - -#include "xpm34p.h" -#ifdef VMS -#include "sys$library:ctype.h" -#else -#include -#endif - -#ifdef sun -#ifdef SVR4 -#define __ORIGINAL_XORG_CODE -#include /* bzero, bcopy */ -#endif -#endif - -#include -#ifdef __sgi -#include -#endif - -LFUNC(ParseValues, int, (xpmData *data, unsigned int *width, - unsigned int *height, unsigned int *ncolors, - unsigned int *cpp, unsigned int *x_hotspot, - unsigned int *y_hotspot, unsigned int *hotspot, - unsigned int *extensions)); - -LFUNC(ParseColors, int, (xpmData *data, unsigned int ncolors, unsigned int cpp, - XpmColor **colorTablePtr, xpmHashTable *hashtable)); - -LFUNC(ParsePixels, int, (xpmData *data, unsigned int width, - unsigned int height, unsigned int ncolors, - unsigned int cpp, XpmColor *colorTable, - xpmHashTable *hashtable, unsigned int **pixels)); - -LFUNC(ParseExtensions, int, (xpmData *data, XpmExtension **extensions, - unsigned int *nextensions)); - -char *xpmColorKeys[] = { - "s", /* key #1: symbol */ - "m", /* key #2: mono visual */ - "g4", /* key #3: 4 grays visual */ - "g", /* key #4: gray visual */ - "c", /* key #5: color visual */ -}; - - -/* function call in case of error, frees only locally allocated variables */ -#undef RETURN -#define RETURN(status) \ -{ \ - if (colorTable) xpmFreeColorTable(colorTable, ncolors); \ - if (pixelindex) XpmFree(pixelindex); \ - if (hints_cmt) XpmFree(hints_cmt); \ - if (colors_cmt) XpmFree(colors_cmt); \ - if (pixels_cmt) XpmFree(pixels_cmt); \ - return(status); \ -} - -/* - * This function parses an Xpm file or data and store the found informations - * in an an XpmImage structure which is returned. - */ -int -xpmParseData(xpmData *data, XpmImage *image, XpmInfo *info) -{ - /* variables to return */ - unsigned int width, height, ncolors, cpp; - unsigned int x_hotspot, y_hotspot, hotspot = 0, extensions = 0; - XpmColor *colorTable = NULL; - unsigned int *pixelindex = NULL; - char *hints_cmt = NULL; - char *colors_cmt = NULL; - char *pixels_cmt = NULL; - - unsigned int cmts; - int ErrorStatus; - xpmHashTable hashtable; - - cmts = info && (info->valuemask & XpmReturnComments); - - /* - * parse the header - */ - ErrorStatus = xpmParseHeader(data); - if (ErrorStatus != XpmSuccess) - return (ErrorStatus); - - /* - * read values - */ - ErrorStatus = ParseValues(data, &width, &height, &ncolors, &cpp, - &x_hotspot, &y_hotspot, &hotspot, &extensions); - if (ErrorStatus != XpmSuccess) - return (ErrorStatus); - - /* - * store the hints comment line - */ - if (cmts) - xpmGetCmt(data, &hints_cmt); - - /* - * init the hastable - */ - if (USE_HASHTABLE) { - ErrorStatus = xpmHashTableInit(&hashtable); - if (ErrorStatus != XpmSuccess) - return (ErrorStatus); - } - - /* - * read colors - */ - ErrorStatus = ParseColors(data, ncolors, cpp, &colorTable, &hashtable); - if (ErrorStatus != XpmSuccess) - RETURN(ErrorStatus); - - /* - * store the colors comment line - */ - if (cmts) - xpmGetCmt(data, &colors_cmt); - - /* - * read pixels and index them on color number - */ - ErrorStatus = ParsePixels(data, width, height, ncolors, cpp, colorTable, - &hashtable, &pixelindex); - - /* - * free the hastable - */ - if (USE_HASHTABLE) - xpmHashTableFree(&hashtable); - - if (ErrorStatus != XpmSuccess) - RETURN(ErrorStatus); - - /* - * store the pixels comment line - */ - if (cmts) - xpmGetCmt(data, &pixels_cmt); - - /* - * parse extensions - */ - if (info && (info->valuemask & XpmReturnExtensions)) - if (extensions) { - ErrorStatus = ParseExtensions(data, &info->extensions, - &info->nextensions); - if (ErrorStatus != XpmSuccess) - RETURN(ErrorStatus); - } else { - info->extensions = NULL; - info->nextensions = 0; - } - - /* - * store found informations in the XpmImage structure - */ - image->width = width; - image->height = height; - image->cpp = cpp; - image->ncolors = ncolors; - image->colorTable = colorTable; - image->data = pixelindex; - - if (info) { - if (cmts) { - info->hints_cmt = hints_cmt; - info->colors_cmt = colors_cmt; - info->pixels_cmt = pixels_cmt; - } - if (hotspot) { - info->x_hotspot = x_hotspot; - info->y_hotspot = y_hotspot; - info->valuemask |= XpmHotspot; - } - } - return (XpmSuccess); -} - -static int -ParseValues(xpmData *data, unsigned int *width, unsigned int *height, unsigned int *ncolors, unsigned int *cpp, - unsigned int *x_hotspot, unsigned int *y_hotspot, unsigned int *hotspot, unsigned int *extensions) -{ - unsigned int l; - char buf[BUFSIZ]; - - if (!data->format) { /* XPM 2 or 3 */ - - /* - * read values: width, height, ncolors, chars_per_pixel - */ - if (!(xpmNextUI(data, width) && xpmNextUI(data, height) - && xpmNextUI(data, ncolors) && xpmNextUI(data, cpp))) - return (XpmFileInvalid); - - /* - * read optional information (hotspot and/or XPMEXT) if any - */ - l = xpmNextWord(data, buf, BUFSIZ); - if (l) { - *extensions = (l == 6 && !strncmp("XPMEXT", buf, 6)); - if (*extensions) - *hotspot = (xpmNextUI(data, x_hotspot) - && xpmNextUI(data, y_hotspot)); - else { - *hotspot = (atoui(buf, l, x_hotspot) - && xpmNextUI(data, y_hotspot)); - l = xpmNextWord(data, buf, BUFSIZ); - *extensions = (l == 6 && !strncmp("XPMEXT", buf, 6)); - } - } - } else { - - /* - * XPM 1 file read values: width, height, ncolors, chars_per_pixel - */ - int i; - char *ptr; - - for (i = 0; i < 4; i++) { - l = xpmNextWord(data, buf, BUFSIZ); - if (l != 7 || strncmp("#define", buf, 7)) - return (XpmFileInvalid); - l = xpmNextWord(data, buf, BUFSIZ); - if (!l) - return (XpmFileInvalid); - ptr = strchr(buf, '_'); - if (!ptr) - return (XpmFileInvalid); - switch (l - (ptr - buf)) { - case 6: - if (!strncmp("_width", ptr, 6) && !xpmNextUI(data, width)) - return (XpmFileInvalid); - break; - case 7: - if (!strncmp("_height", ptr, 7) && !xpmNextUI(data, height)) - return (XpmFileInvalid); - break; - case 8: - if (!strncmp("_ncolors", ptr, 8) && !xpmNextUI(data, ncolors)) - return (XpmFileInvalid); - break; - case 16: - if (!strncmp("_chars_per_pixel", ptr, 16) - && !xpmNextUI(data, cpp)) - return (XpmFileInvalid); - break; - default: - return (XpmFileInvalid); - } - /* skip the end of line */ - xpmNextString(data); - } - *hotspot = 0; - *extensions = 0; - } - return (XpmSuccess); -} - -static int -ParseColors(xpmData *data, unsigned int ncolors, unsigned int cpp, XpmColor **colorTablePtr, xpmHashTable *hashtable) -{ - unsigned int key, l, a, b; - unsigned int curkey; /* current color key */ - unsigned int lastwaskey; /* key read */ - char buf[BUFSIZ]; - char curbuf[BUFSIZ]; /* current buffer */ - char **sptr, *s; - XpmColor *color; - XpmColor *colorTable; - char **defaults; - int ErrorStatus; - - colorTable = (XpmColor *) XpmCalloc(ncolors, sizeof(XpmColor)); - if (!colorTable) - return (XpmNoMemory); - - if (!data->format) { /* XPM 2 or 3 */ - for (a = 0, color = colorTable; a < ncolors; a++, color++) { - xpmNextString(data); /* skip the line */ - - /* - * read pixel value - */ - color->string = (char *) XpmMalloc(cpp + 1); - if (!color->string) { - xpmFreeColorTable(colorTable, ncolors); - return (XpmNoMemory); - } - for (b = 0, s = color->string; b < cpp; b++, s++) - *s = xpmGetC(data); - *s = '\0'; - - /* - * store the string in the hashtable with its color index number - */ - if (USE_HASHTABLE) { - ErrorStatus = - xpmHashIntern(hashtable, color->string, HashAtomData(a)); - if (ErrorStatus != XpmSuccess) { - xpmFreeColorTable(colorTable, ncolors); - return (ErrorStatus); - } - } - - /* - * read color keys and values - */ - defaults = (char **) color; - curkey = 0; - lastwaskey = 0; - *curbuf = '\0'; /* init curbuf */ - while (l = xpmNextWord(data, buf, BUFSIZ)) { - if (!lastwaskey) { - for (key = 0, sptr = xpmColorKeys; key < NKEYS; key++, - sptr++) - if ((strlen(*sptr) == l) && (!strncmp(*sptr, buf, l))) - break; - } - if (!lastwaskey && key < NKEYS) { /* open new key */ - if (curkey) { /* flush string */ - s = (char *) XpmMalloc(strlen(curbuf) + 1); - if (!s) { - xpmFreeColorTable(colorTable, ncolors); - return (XpmNoMemory); - } - defaults[curkey] = s; - strcpy(s, curbuf); - } - curkey = key + 1; /* set new key */ - *curbuf = '\0'; /* reset curbuf */ - lastwaskey = 1; - } else { - if (!curkey) { /* key without value */ - xpmFreeColorTable(colorTable, ncolors); - return (XpmFileInvalid); - } - if (!lastwaskey) - strcat(curbuf, " "); /* append space */ - buf[l] = '\0'; - strcat(curbuf, buf);/* append buf */ - lastwaskey = 0; - } - } - if (!curkey) { /* key without value */ - xpmFreeColorTable(colorTable, ncolors); - return (XpmFileInvalid); - } - s = defaults[curkey] = (char *) XpmMalloc(strlen(curbuf) + 1); - if (!s) { - xpmFreeColorTable(colorTable, ncolors); - return (XpmNoMemory); - } - strcpy(s, curbuf); - } - } else { /* XPM 1 */ - /* get to the beginning of the first string */ - data->Bos = '"'; - data->Eos = '\0'; - xpmNextString(data); - data->Eos = '"'; - for (a = 0, color = colorTable; a < ncolors; a++, color++) { - - /* - * read pixel value - */ - color->string = (char *) XpmMalloc(cpp + 1); - if (!color->string) { - xpmFreeColorTable(colorTable, ncolors); - return (XpmNoMemory); - } - for (b = 0, s = color->string; b < cpp; b++, s++) - *s = xpmGetC(data); - *s = '\0'; - - /* - * store the string in the hashtable with its color index number - */ - if (USE_HASHTABLE) { - ErrorStatus = - xpmHashIntern(hashtable, color->string, HashAtomData(a)); - if (ErrorStatus != XpmSuccess) { - xpmFreeColorTable(colorTable, ncolors); - return (ErrorStatus); - } - } - - /* - * read color values - */ - xpmNextString(data); /* get to the next string */ - *curbuf = '\0'; /* init curbuf */ - while (l = xpmNextWord(data, buf, BUFSIZ)) { - if (*curbuf != '\0') - strcat(curbuf, " ");/* append space */ - buf[l] = '\0'; - strcat(curbuf, buf); /* append buf */ - } - s = (char *) XpmMalloc(strlen(curbuf) + 1); - if (!s) { - xpmFreeColorTable(colorTable, ncolors); - return (XpmNoMemory); - } - strcpy(s, curbuf); - color->c_color = s; - *curbuf = '\0'; /* reset curbuf */ - if (a < ncolors - 1) - xpmNextString(data); /* get to the next string */ - } - } - *colorTablePtr = colorTable; - return (XpmSuccess); -} - -static int -ParsePixels(xpmData *data, unsigned int width, unsigned int height, unsigned int ncolors, - unsigned int cpp, XpmColor *colorTable, xpmHashTable *hashtable, unsigned int **pixels) -{ - unsigned int *iptr, *iptr2; - unsigned int a, x, y; - -#ifndef FOR_MSW - iptr2 = (unsigned int *) XpmMalloc(sizeof(unsigned int) * width * height); -#else - - /* - * special treatment to trick DOS malloc(size_t) where size_t is 16 bit!! - * XpmMalloc is defined to longMalloc(long) and checks the 16 bit boundary - */ - iptr2 = (unsigned int *) - XpmMalloc((long) sizeof(unsigned int) * (long) width * (long) height); -#endif - if (!iptr2) - return (XpmNoMemory); - - iptr = iptr2; - - switch (cpp) { - - case (1): /* Optimize for single character - * colors */ - { - unsigned short colidx[256]; - - bzero((char *)colidx, 256 * sizeof(short)); - for (a = 0; a < ncolors; a++) - colidx[colorTable[a].string[0]] = a + 1; - - for (y = 0; y < height; y++) { - xpmNextString(data); - for (x = 0; x < width; x++, iptr++) { - int idx = colidx[xpmGetC(data)]; - - if (idx != 0) - *iptr = idx - 1; - else { - XpmFree(iptr2); - return (XpmFileInvalid); - } - } - } - } - break; - - case (2): /* Optimize for double character - * colors */ - { - -/* free all allocated pointers at all exits */ -#define FREE_CIDX {int f; for (f = 0; f < 256; f++) \ -if (cidx[f]) XpmFree(cidx[f]);} - - /* array of pointers malloced by need */ - unsigned short *cidx[256]; - int char1; - - bzero((char *)cidx, 256 * sizeof(unsigned short *)); /* init */ - for (a = 0; a < ncolors; a++) { - char1 = colorTable[a].string[0]; - if (cidx[char1] == NULL) { /* get new memory */ - cidx[char1] = (unsigned short *) - XpmCalloc(256, sizeof(unsigned short)); - if (cidx[char1] == NULL) { /* new block failed */ - FREE_CIDX; - XpmFree(iptr2); - return (XpmNoMemory); - } - } - cidx[char1][colorTable[a].string[1]] = a + 1; - } - - for (y = 0; y < height; y++) { - xpmNextString(data); - for (x = 0; x < width; x++, iptr++) { - int cc1 = xpmGetC(data); - int idx = cidx[cc1][xpmGetC(data)]; - - if (idx != 0) - *iptr = idx - 1; - else { - FREE_CIDX; - XpmFree(iptr2); - return (XpmFileInvalid); - } - } - } - FREE_CIDX; - } - break; - - default: /* Non-optimized case of long color - * names */ - { - char *s; - char buf[BUFSIZ]; - - buf[cpp] = '\0'; - if (USE_HASHTABLE) { - xpmHashAtom *slot; - - for (y = 0; y < height; y++) { - xpmNextString(data); - for (x = 0; x < width; x++, iptr++) { - for (a = 0, s = buf; a < cpp; a++, s++) - *s = xpmGetC(data); - slot = xpmHashSlot(hashtable, buf); - if (!*slot) { /* no color matches */ - XpmFree(iptr2); - return (XpmFileInvalid); - } - *iptr = HashColorIndex(slot); - } - } - } else { - for (y = 0; y < height; y++) { - xpmNextString(data); - for (x = 0; x < width; x++, iptr++) { - for (a = 0, s = buf; a < cpp; a++, s++) - *s = xpmGetC(data); - for (a = 0; a < ncolors; a++) - if (!strcmp(colorTable[a].string, buf)) - break; - if (a == ncolors) { /* no color matches */ - XpmFree(iptr2); - return (XpmFileInvalid); - } - *iptr = a; - } - } - } - } - break; - } - *pixels = iptr2; - return (XpmSuccess); -} - -static int -ParseExtensions(xpmData *data, XpmExtension **extensions, unsigned int *nextensions) -{ - XpmExtension *exts = NULL, *ext; - unsigned int num = 0; - unsigned int nlines, a, l, notstart, notend = 0; - int status; - char *string, *s, *s2, **sp; - - xpmNextString(data); - exts = (XpmExtension *) XpmMalloc(sizeof(XpmExtension)); - /* get the whole string */ - status = xpmGetString(data, &string, &l); - if (status != XpmSuccess) { - XpmFree(exts); - return (status); - } - /* look for the key word XPMEXT, skip lines before this */ - while ((notstart = strncmp("XPMEXT", string, 6)) - && (notend = strncmp("XPMENDEXT", string, 9))) { - XpmFree(string); - xpmNextString(data); - status = xpmGetString(data, &string, &l); - if (status != XpmSuccess) { - XpmFree(exts); - return (status); - } - } - if (!notstart) - notend = strncmp("XPMENDEXT", string, 9); - while (!notstart && notend) { - /* there starts an extension */ - ext = (XpmExtension *) - XpmRealloc(exts, (num + 1) * sizeof(XpmExtension)); - if (!ext) { - XpmFree(string); - XpmFreeExtensions(exts, num); - return (XpmNoMemory); - } - exts = ext; - ext += num; - /* skip whitespace and store its name */ - s2 = s = string + 6; - while (isspace(*s2)) - s2++; - a = s2 - s; - ext->name = (char *) XpmMalloc(l - a - 6); - if (!ext->name) { - XpmFree(string); - ext->lines = NULL; - ext->nlines = 0; - XpmFreeExtensions(exts, num + 1); - return (XpmNoMemory); - } - strncpy(ext->name, s + a, l - a - 6); - XpmFree(string); - /* now store the related lines */ - xpmNextString(data); - status = xpmGetString(data, &string, &l); - if (status != XpmSuccess) { - ext->lines = NULL; - ext->nlines = 0; - XpmFreeExtensions(exts, num + 1); - return (status); - } - ext->lines = (char **) XpmMalloc(sizeof(char *)); - nlines = 0; - while ((notstart = strncmp("XPMEXT", string, 6)) - && (notend = strncmp("XPMENDEXT", string, 9))) { - sp = (char **) - XpmRealloc(ext->lines, (nlines + 1) * sizeof(char *)); - if (!sp) { - XpmFree(string); - ext->nlines = nlines; - XpmFreeExtensions(exts, num + 1); - return (XpmNoMemory); - } - ext->lines = sp; - ext->lines[nlines] = string; - nlines++; - xpmNextString(data); - status = xpmGetString(data, &string, &l); - if (status != XpmSuccess) { - ext->nlines = nlines; - XpmFreeExtensions(exts, num + 1); - return (status); - } - } - if (!nlines) { - XpmFree(ext->lines); - ext->lines = NULL; - } - ext->nlines = nlines; - num++; - } - if (!num) { - XpmFree(string); - XpmFree(exts); - exts = NULL; - } else if (!notend) - XpmFree(string); - *nextensions = num; - *extensions = exts; - return (XpmSuccess); -} diff --git a/src/xpm/rdftodat.c b/src/xpm/rdftodat.c deleted file mode 100644 index 28c81ae688..0000000000 --- a/src/xpm/rdftodat.c +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (C) 1989-94 GROUPE BULL - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name of GROUPE BULL shall not be - * used in advertising or otherwise to promote the sale, use or other dealings - * in this Software without prior written authorization from GROUPE BULL. - */ - -/*****************************************************************************\ -* XpmRdFToData.c: * -* * -* XPM library * -* Parse an XPM file and create an array of strings corresponding to it. * -* * -* Developed by Dan Greening dgreen@cs.ucla.edu / dgreen@sti.com * -\*****************************************************************************/ - -#include "xpm34p.h" - -int -XpmReadFileToData(char *filename, char ***data_return) -{ - XpmImage image; - XpmInfo info; - int ErrorStatus; - - info.valuemask = XpmReturnComments | XpmReturnExtensions; - - /* - * initialize return value - */ - if (data_return) - *data_return = NULL; - - ErrorStatus = XpmReadFileToXpmImage(filename, &image, &info); - if (ErrorStatus != XpmSuccess) - return (ErrorStatus); - - ErrorStatus = - XpmCreateDataFromXpmImage(data_return, &image, &info); - - XpmFreeXpmImage(&image); - XpmFreeXpmInfo(&info); - - return (ErrorStatus); -} diff --git a/src/xpm/rdftoi.c b/src/xpm/rdftoi.c deleted file mode 100644 index d5aea86da9..0000000000 --- a/src/xpm/rdftoi.c +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright (C) 1989-94 GROUPE BULL - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name of GROUPE BULL shall not be - * used in advertising or otherwise to promote the sale, use or other dealings - * in this Software without prior written authorization from GROUPE BULL. - */ - -/*****************************************************************************\ -* XpmRdFToI.c: * -* * -* XPM library * -* Parse an XPM file and create the image and possibly its mask * -* * -* Developed by Arnaud Le Hors * -\*****************************************************************************/ - -#include "xpm34p.h" - -int -XpmReadFileToImage(Display *display, char *filename, - XImage **image_return, XImage **shapeimage_return, XpmAttributes *attributes) -{ - XpmImage image; - XpmInfo info; - int ErrorStatus; - - /* create an XpmImage from the file */ - if (attributes) { - xpmInitAttributes(attributes); - xpmSetInfoMask(&info, attributes); - ErrorStatus = XpmReadFileToXpmImage(filename, &image, &info); - } else - ErrorStatus = XpmReadFileToXpmImage(filename, &image, NULL); - - if (ErrorStatus != XpmSuccess) - return (ErrorStatus); - - /* create the related ximages */ - ErrorStatus = XpmCreateImageFromXpmImage(display, &image, - image_return, shapeimage_return, - attributes); - if (attributes) { - if (ErrorStatus >= 0) /* no fatal error */ - xpmSetAttributes(attributes, &image, &info); - XpmFreeXpmInfo(&info); - } - /* free the XpmImage */ - XpmFreeXpmImage(&image); - - return (ErrorStatus); -} - -int -XpmReadFileToXpmImage(char *filename, XpmImage *image, XpmInfo *info) -{ - xpmData mdata; - int ErrorStatus; - - /* init returned values */ - xpmInitXpmImage(image); - xpmInitXpmInfo(info); - - /* open file to read */ - if ((ErrorStatus = xpmReadFile(filename, &mdata)) != XpmSuccess) - return (ErrorStatus); - - /* create the XpmImage from the XpmData */ - ErrorStatus = xpmParseData(&mdata, image, info); - - xpmDataClose(&mdata); - - return (ErrorStatus); -} diff --git a/src/xpm/rdftop.c b/src/xpm/rdftop.c deleted file mode 100644 index e1c558f4ba..0000000000 --- a/src/xpm/rdftop.c +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (C) 1989-94 GROUPE BULL - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name of GROUPE BULL shall not be - * used in advertising or otherwise to promote the sale, use or other dealings - * in this Software without prior written authorization from GROUPE BULL. - */ - -/*****************************************************************************\ -* XpmRdFToP.c: * -* * -* XPM library * -* Parse an XPM file and create the pixmap and possibly its mask * -* * -* Developed by Arnaud Le Hors * -\*****************************************************************************/ - -#ifndef FOR_MSW - -#include "xpm34p.h" - -int -XpmReadFileToPixmap(Display *display, Drawable d, char *filename, Pixmap *pixmap_return, - Pixmap *shapemask_return, XpmAttributes *attributes) -{ - XImage *ximage, *shapeimage; - int ErrorStatus; - - /* initialize return values */ - if (pixmap_return) - *pixmap_return = 0; - if (shapemask_return) - *shapemask_return = 0; - - /* create the images */ - ErrorStatus = XpmReadFileToImage(display, filename, - (pixmap_return ? &ximage : NULL), - (shapemask_return ? &shapeimage : NULL), - attributes); - - if (ErrorStatus < 0) /* fatal error */ - return (ErrorStatus); - - /* create the pixmaps and destroy images */ - if (pixmap_return && ximage) { - xpmCreatePixmapFromImage(display, d, ximage, pixmap_return); - XDestroyImage(ximage); - } - if (shapemask_return && shapeimage) { - xpmCreatePixmapFromImage(display, d, shapeimage, shapemask_return); - XDestroyImage(shapeimage); - } - return (ErrorStatus); -} -#endif diff --git a/src/xpm/readme b/src/xpm/readme deleted file mode 100644 index a82660fb11..0000000000 --- a/src/xpm/readme +++ /dev/null @@ -1,192 +0,0 @@ -/* - * Copyright (C) 1989-94 GROUPE BULL - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name of GROUPE BULL shall not be - * used in advertising or otherwise to promote the sale, use or other dealings - * in this Software without prior written authorization from GROUPE BULL. - */ - - - XPM Version 3 - -WHAT IS XPM? -============ - -XPM (X PixMap) is a format for storing/retrieving X pixmaps to/from files. - -Here is provided a library containing a set of four functions, similar to the -X bitmap functions as defined in the Xlib: XpmCreatePixmapFromData, -XpmCreateDataFromPixmap, XpmReadFileToPixmap and XpmWriteFileFromPixmap for -respectively including, storing, reading and writing this format, plus four -other: XpmCreateImageFromData, XpmCreateDataFromImage, XpmReadFileToImage and -XpmWriteFileFromImage for working with images instead of pixmaps. - -This new version provides a C includable format, defaults for different types -of display: monochrome/color/grayscale, hotspot coordinates and symbol names -for colors for overriding default colors when creating the pixmap. It provides -a mechanism for storing information while reading a file which is re-used -while writing. This way comments, default colors and symbol names aren't lost. -It also handles "transparent pixels" by returning a shape mask in addition to -the created pixmap. - -See the XPM Manual for more details. - -HOW TO GET XPM? -=============== - -New xpm updates are announced on the comp.windows.x newsgroup, and on the -"xpm-talk" list. All new "official" xpm releases can be found by ftp on: - - ftp.x.org (18.112.44.100) contrib (Boston, USA) - avahi.inria.fr (192.5.60.47) pub (Sophia Antipolis, France) - - -DOCUMENTATION: -============= - -Old users might read the CHANGES file for a history of changes interesting -the user. - -Read the doc. The documentation is in PostScript format (file doc/xpm.ps) and -has been produced with FrameMaker. The source files are available on request. - - -INSTALLATION: -============ - -To obtain the XPM library, first uncompress and untar the compressed tar file -in an approriate directory. - -Then you can either compile xpm via "imake" or in a stand-alone way. - -WITH IMAKE: - - Imakefiles are provided to build both shared and unshared libraries. - First have a look at the beginning of the lib/Imakefile and see if you - need to do some modification to fit with your system. - You should know how to use imake to build the XPM Makefiles - by executing "xmkmf", then do: - - make Makefiles - make depend (if you want to) - make - - which will build the XPM library and the sxpm application. - Then do: - - make install - make install.man - - which will install the library and the sxpm pregram and man page. - - If it fails, you may edit the Imakefiles to add compilation flags to - suit your machine. - -WITHOUT IMAKE: - - To compile xpm, in the xpm directory you just created, do: - - make -f Makefile.noXtree - - Then to install it, do: - - make -f Makefile.noXtree install - -SXPM: -==== - -In addition to the library the sxpm tool is provided to show XPM file and -convert them from XPM1 or XPM2 to XPM version 3. If you have previously done -'make' or 'make all' you should have it yet, otherwise just do: - - cd sxpm; make - -This application shows you most of the features of XPM and its source can be -used to quickly see how to use the provided functions. - -By executing 'sxpm -help' you will get the usage. - -Executing 'sxpm -plaid' will show a demo of the XpmCreatePixmapFromData -function. The pixmap is created from the static variable plaid defined in the -sxpm.c file. sxpm will end when you press the key 'q' in the created window. - -Executing 'sxpm -plaid -sc lines_in_mix blue' will show the feature of -overriding color symbols giving a colorname, executing 'sxpm -sp lines_in_mix -1' will show overriding giving a pixel value, and executing 'sxpm -plaid -cp -red 0' will show overriding giving a color value. - -Then you should try 'sxpm -plaid -o output' to get an output file using the -XpmWriteFileFromPixmap function. - -You can now try 'sxpm -plaid -o - -nod -rgb /usr/lib/X11/rgb.txt' to directly -get the pixmap printed out on the standard output with colornames instead of -rgb values. - -Then you should try 'sxpm plaid.xpm' to use the XpmReadFileToPixmap function, -and 'cat plaid_mask.xpm|sxpm' to see how "transparent pixels" are handled. - -The XpmCreatePixmapFromData function is on purpose called without any XpmInfos -flag to show the utility of this one. Indeed, compare the color section of the -two files foo and bar obtained from 'sxpm -nod -plaid -o foo' and 'sxpm -nod -plaid.xpm -o bar'. All the default colors and also the comments have been -restored. - -To end look at plaid_ext.xpm and try "sxpm -nod plaid_ext.xpm -v" to see how -extensions are handled. - -Of course, other combinations are allowed and should be tried. Thus, 'sxpm -plaid.xpm -o output -nod' will show you how to convert a file from XPM1 or XPM2 -to a XPM version 3 using sxpm. - -See the manual page for more detail. - -OTHER TOOLS: -=========== - -Several converters dealing with XPM and a pixmap editor can be found in the -xpm-contrib distribution. Also I recommend the use of netpbm to do any kind of -general image operations such as scaling, resizing, dithering, and to convert -from and to any other image format. - -DISCUSSION: -========== - -There is a mailing list to discuss about XPM which is xpm-talk@sophia.inria.fr. -Any request to subscribe should be sent to xpm-talk-request@sophia.inria.fr. - -COPYRIGHT: -========== - - Copyright 1989-94 GROUPE BULL -- - See license conditions in the COPYRIGHT file of the XPM distribution - -Please mail any bug reports or modifications done, comments, suggestions, -requests for updates or patches to port on another machine to: - -lehors@sophia.inria.fr (INTERNET) - -33 (FRANCE) 93.65.77.71 (VOICE PHONE) - -Arnaud Le Hors (SURFACE MAIL) -Bull c/o Inria BP. 109 -2004, Route des lucioles -Sophia Antipolis -06561 Valbonne Cedex -FRANCE diff --git a/src/xpm/readme.msw b/src/xpm/readme.msw deleted file mode 100644 index 6e97bb5989..0000000000 --- a/src/xpm/readme.msw +++ /dev/null @@ -1,83 +0,0 @@ - -README.MSW hedu@cul-ipn.uni-kiel.de 5/94 - - The XPM library for MS-Windows - -Motivated by the wxWindows library, which is a (freely available) toolkit -for developing multi-platform, graphical applications from the same body -of C++ code,I wanted to have XPM pixmaps for MS-windows. Instead of rewriting -a XPM-parser I managed to port the XPM-library-code to MS-windows. -Thanks to Anaud Le Hors this became a part of the official XPM-library. - -Until now it's only used together with wxWindows. And even there it's more -a kind of beta. But it should be possible to run it as a simple libxpm.a -without wxWindows. - -The key is a transformation of some X types plus some basic X functions. -There is not yet a special MSW-API, so you should know the X types used. - -The following is done in simx.h: - -typedef HDC Display; -typedef COLORREF Pixel; - -typedef struct { - Pixel pixel; - BYTE red, green, blue; -} XColor; - -typedef struct { - HBITMAP bitmap; - unsigned int width; - unsigned int height; - unsigned int depth; -} XImage; - -With these defines and the according functions from simx.c you can call -XPM-functions the way it's done under X windows. It can look like this: - - ErrorStatus=XpmCreateImageFromData(&dc, data, - &ximage,(XImage **)NULL, &xpmAttr); - ms_bitmap = ximage->bitmap; - // releases the malloc,but do not destroy the bitmap - XImageFree(ximage); - -Supported functions are the Xpm*Image* but not the Xpm*Pixmap*. - -DRAWBACKS: -The main drawback is the missing support for Colormaps! There was nothing for -it in wxWindows, so I did not know how to deal with Colormaps. - -The size of the pixmaps is bounded by malloc() (width*height*2 < 64K). - -Close colors do not look that close. But that seems to be the window system. - -Neither a special API for MSW nor a special MSW documentation other than this. -(I can only point you to wxxpm as an example , see below.) - -INSTALLATION: -There is not yet a makefile with it. Simply take all the *.c files -into your project. -!!!You MUST set FOR_MSW on the preprocessor options!!! -(You might uncomment NEED_STRCASECMP in xpm.h if it's in your lib) -This should compile into libxpm.a. Good luck... - -FTP: -wxWindows is currently available from the Artificial Intelligence -Applications Institute (University of Edinburgh) by anonymous FTP. - skye.aiai.ed.ac.uk pub/wxwin/ -or read http://burray.aiai.ed.ac.uk/aiai/aiai.html - -wxxpm, XPM support for wxWindows, the latest version is available at - yoda.cul-ipn.uni-kiel.de pub/wxxpm/ - and maybe in the contrib or tools of wxWindows - -Please contact me if you have suggestions, comments or problems! - --- - ////|\\\\ \\\\\\ Hermann Dunkel - O O ////// IPN Uni Kiel, Germany - | \\\\\\ Tel: +49 431 / 880 3144 - \___/ ////// E-mail: hedu@cul-ipn.uni-kiel.de - \_/ \\\\\\ X.400 : c=de;a=d400;p=uni-kiel;ou=nw-didaktik;s=dunkel - diff --git a/src/xpm/rgb.c b/src/xpm/rgb.c deleted file mode 100644 index 38b180dd20..0000000000 --- a/src/xpm/rgb.c +++ /dev/null @@ -1,282 +0,0 @@ -/* - * Copyright (C) 1989-94 GROUPE BULL - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name of GROUPE BULL shall not be - * used in advertising or otherwise to promote the sale, use or other dealings - * in this Software without prior written authorization from GROUPE BULL. - */ - -/*****************************************************************************\ -* rgb.c: * -* * -* XPM library * -* Rgb file utilities * -* * -* Developed by Arnaud Le Hors * -\*****************************************************************************/ - -/* - * The code related to FOR_MSW has been added by - * HeDu (hedu@cul-ipn.uni-kiel.de) 4/94 - */ - -/* - * Part of this code has been taken from the ppmtoxpm.c file written by Mark - * W. Snitily but has been modified for my special need - */ - -#include "xpm34p.h" -#ifdef VMS -#include "sys$library:ctype.h" -#include "sys$library:string.h" -#else -#include -#if defined(SYSV) || defined(SVR4) -#include -#else -#include -#endif -#endif - -#ifndef FOR_MSW /* normal part first, MSW part at - * the end, (huge ifdef!) */ -/* - * Read a rgb text file. It stores the rgb values (0->65535) - * and the rgb mnemonics (malloc'ed) into the "rgbn" array. Returns the - * number of entries stored. - */ -int -xpmReadRgbNames(char *rgb_fname, xpmRgbName rgbn[]) -{ - FILE *rgbf; - int i, items, red, green, blue; - char line[512], name[512], *rgbname, *n, *m; - xpmRgbName *rgb; - - /* Open the rgb text file. Abort if error. */ - if ((rgbf = fopen(rgb_fname, "r")) == NULL) - return 0; - - /* Loop reading each line in the file. */ - for (i = 0, rgb = rgbn; fgets(line, sizeof(line), rgbf); i++, rgb++) { - - /* Quit if rgb text file is too large. */ - if (i == MAX_RGBNAMES) { - /* Too many entries in rgb text file, give up here */ - break; - } - /* Read the line. Skip silently if bad. */ - items = sscanf(line, "%d %d %d %[^\n]\n", &red, &green, &blue, name); - if (items != 4) { - i--; - continue; - } - - /* - * Make sure rgb values are within 0->255 range. Skip silently if - * bad. - */ - if (red < 0 || red > 0xFF || - green < 0 || green > 0xFF || - blue < 0 || blue > 0xFF) { - i--; - continue; - } - /* Allocate memory for ascii name. If error give up here. */ - if (!(rgbname = (char *) XpmMalloc(strlen(name) + 1))) - break; - - /* Copy string to ascii name and lowercase it. */ - for (n = name, m = rgbname; *n; n++) - *m++ = tolower(*n); - *m = '\0'; - - /* Save the rgb values and ascii name in the array. */ - rgb->r = red * 257; /* 65535/255 = 257 */ - rgb->g = green * 257; - rgb->b = blue * 257; - rgb->name = rgbname; - } - - fclose(rgbf); - - /* Return the number of read rgb names. */ - return i < 0 ? 0 : i; -} - -/* - * Return the color name corresponding to the given rgb values - */ -char * -xpmGetRgbName(xpmRgbName rgbn[], int rgbn_max, int red, int green, int blue) -/* xpmRgbName rgbn[]; */ /* rgb mnemonics from rgb text file */ -/* int rgbn_max; */ /* number of rgb mnemonics in table */ -/* int red, green, blue; */ /* rgb values */ - -{ - int i; - xpmRgbName *rgb; - - /* - * Just perform a dumb linear search over the rgb values of the color - * mnemonics. One could speed things up by sorting the rgb values and - * using a binary search, or building a hash table, etc... - */ - for (i = 0, rgb = rgbn; i < rgbn_max; i++, rgb++) - if (red == rgb->r && green == rgb->g && blue == rgb->b) - return rgb->name; - - /* if not found return NULL */ - return NULL; -} - -/* - * Free the strings which have been malloc'ed in xpmReadRgbNames - */ -void -xpmFreeRgbNames(xpmRgbName rgbn[], int rgbn_max) -{ - int i; - xpmRgbName *rgb; - - for (i = 0, rgb = rgbn; i < rgbn_max; i++, rgb++) - XpmFree(rgb->name); -} - -#else /* here comes the MSW part, the - * second part of the huge ifdef */ - -#include "rgbtab.h" /* hard coded rgb.txt table */ - -int -xpmReadRgbNames(char *rgb_fname, xpmRgbName rgbn[]) -{ - /* - * check for consistency??? - * table has to be sorted for calls on strcasecmp - */ - return (numTheRGBRecords); -} - -/* - * MSW rgb values are made from 3 BYTEs, this is different from X XColor.red, - * which has something like #0303 for one color - */ -char * -xpmGetRgbName(xpmRgbName rgbn[], int rgbn_max, int red, int green, int blue) -/* xpmRgbName rgbn[]; */ /* rgb mnemonics from rgb text file - * not used */ -/* int rgbn_max; */ /* not used */ -/* int red, green, blue; */ /* rgb values */ - -{ - int i; - unsigned long rgbVal; - - i = 0; - while (i < numTheRGBRecords) { - rgbVal = theRGBRecords[i].rgb; - if (GetRValue(rgbVal) == red && - GetGValue(rgbVal) == green && - GetBValue(rgbVal) == blue) - return (theRGBRecords[i].name); - i++; - } - return (NULL); -} - -/* used in XParseColor in simx.c */ -int -xpmGetRGBfromName(char *inname, int *r, int *g, int *b) -{ - int left, right, middle; - int cmp; - unsigned long rgbVal; - char *name; - char *grey, *p; - - name = strdup(inname); - - /* - * the table in rgbtab.c has no names with spaces, and no grey, but a - * lot of gray - */ - /* so first extract ' ' */ - while (p = strchr(name, ' ')) { - while (*(p)) { /* till eof of string */ - *p = *(p + 1); /* copy to the left */ - p++; - } - } - /* fold to lower case */ - p = name; - while (*p) { - *p = tolower(*p); - p++; - } - - /* - * substitute Grey with Gray, else rgbtab.h would have more than 100 - * 'duplicate' entries - */ - if (grey = strstr(name, "grey")) - grey[2] = 'a'; - - /* binary search */ - left = 0; - right = numTheRGBRecords - 1; - do { - middle = (left + right) / 2; - cmp = strcasecmp(name, theRGBRecords[middle].name); - if (cmp == 0) { - rgbVal = theRGBRecords[middle].rgb; - *r = GetRValue(rgbVal); - *g = GetGValue(rgbVal); - *b = GetBValue(rgbVal); - free(name); - return (1); - } else if (cmp < 0) { - right = middle - 1; - } else { /* > 0 */ - left = middle + 1; - } - } while (left <= right); - - /* - * I don't like to run in a ColorInvalid error and to see no pixmap at - * all, so simply return a red pixel. Should be wrapped in an #ifdef - * HeDu - */ - - *r = 255; - *g = 0; - *b = 0; /* red error pixel */ - - free(name); - return (1); -} - -void -xpmFreeRgbNames(xpmRgbName rgbn[], int rgbn_max) -{ - /* nothing to do */ -} - -#endif /* MSW part */ diff --git a/src/xpm/rgbtab.h b/src/xpm/rgbtab.h deleted file mode 100644 index 39e8d27c9c..0000000000 --- a/src/xpm/rgbtab.h +++ /dev/null @@ -1,292 +0,0 @@ -/* - * Copyright (C) 1989-94 GROUPE BULL - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name of GROUPE BULL shall not be - * used in advertising or otherwise to promote the sale, use or other dealings - * in this Software without prior written authorization from GROUPE BULL. - */ - -/*****************************************************************************\ -* rgbtab.h * -* * -* A hard coded rgb.txt. To keep it short I removed all colornames with * -* trailing numbers, Blue3 etc, except the GrayXX. Sorry Grey-lovers I prefer * -* Gray ;-). But Grey is recognized on lookups, only on save Gray will be * -* used, maybe you want to do some substitue there too. * -* * -* To save memory the RGBs are coded in one long value, as done by the RGB * -* macro. * -* * -* Developed by HeDu 3/94 (hedu@cul-ipn.uni-kiel.de) * -\*****************************************************************************/ - - -typedef struct { - char *name; - COLORREF rgb; /* it's unsigned long */ -} rgbRecord; - -/* -#define myRGB(r,g,b) \ - ((unsigned long)r<<16|(unsigned long)g<<8|(unsigned long)b) -*/ -#define myRGB(r,g,b) RGB(r,g,b) /* MSW has this macro */ - - -static rgbRecord theRGBRecords[] = -{ - {"AliceBlue", myRGB(240, 248, 255)}, - {"AntiqueWhite", myRGB(250, 235, 215)}, - {"Aquamarine", myRGB(50, 191, 193)}, - {"Azure", myRGB(240, 255, 255)}, - {"Beige", myRGB(245, 245, 220)}, - {"Bisque", myRGB(255, 228, 196)}, - {"Black", myRGB(0, 0, 0)}, - {"BlanchedAlmond", myRGB(255, 235, 205)}, - {"Blue", myRGB(0, 0, 255)}, - {"BlueViolet", myRGB(138, 43, 226)}, - {"Brown", myRGB(165, 42, 42)}, - {"burlywood", myRGB(222, 184, 135)}, - {"CadetBlue", myRGB(95, 146, 158)}, - {"chartreuse", myRGB(127, 255, 0)}, - {"chocolate", myRGB(210, 105, 30)}, - {"Coral", myRGB(255, 114, 86)}, - {"CornflowerBlue", myRGB(34, 34, 152)}, - {"cornsilk", myRGB(255, 248, 220)}, - {"Cyan", myRGB(0, 255, 255)}, - {"DarkGoldenrod", myRGB(184, 134, 11)}, - {"DarkGreen", myRGB(0, 86, 45)}, - {"DarkKhaki", myRGB(189, 183, 107)}, - {"DarkOliveGreen", myRGB(85, 86, 47)}, - {"DarkOrange", myRGB(255, 140, 0)}, - {"DarkOrchid", myRGB(139, 32, 139)}, - {"DarkSalmon", myRGB(233, 150, 122)}, - {"DarkSeaGreen", myRGB(143, 188, 143)}, - {"DarkSlateBlue", myRGB(56, 75, 102)}, - {"DarkSlateGray", myRGB(47, 79, 79)}, - {"DarkTurquoise", myRGB(0, 166, 166)}, - {"DarkViolet", myRGB(148, 0, 211)}, - {"DeepPink", myRGB(255, 20, 147)}, - {"DeepSkyBlue", myRGB(0, 191, 255)}, - {"DimGray", myRGB(84, 84, 84)}, - {"DodgerBlue", myRGB(30, 144, 255)}, - {"Firebrick", myRGB(142, 35, 35)}, - {"FloralWhite", myRGB(255, 250, 240)}, - {"ForestGreen", myRGB(80, 159, 105)}, - {"gainsboro", myRGB(220, 220, 220)}, - {"GhostWhite", myRGB(248, 248, 255)}, - {"Gold", myRGB(218, 170, 0)}, - {"Goldenrod", myRGB(239, 223, 132)}, - {"Gray", myRGB(126, 126, 126)}, - {"Gray0", myRGB(0, 0, 0)}, - {"Gray1", myRGB(3, 3, 3)}, - {"Gray10", myRGB(26, 26, 26)}, - {"Gray100", myRGB(255, 255, 255)}, - {"Gray11", myRGB(28, 28, 28)}, - {"Gray12", myRGB(31, 31, 31)}, - {"Gray13", myRGB(33, 33, 33)}, - {"Gray14", myRGB(36, 36, 36)}, - {"Gray15", myRGB(38, 38, 38)}, - {"Gray16", myRGB(41, 41, 41)}, - {"Gray17", myRGB(43, 43, 43)}, - {"Gray18", myRGB(46, 46, 46)}, - {"Gray19", myRGB(48, 48, 48)}, - {"Gray2", myRGB(5, 5, 5)}, - {"Gray20", myRGB(51, 51, 51)}, - {"Gray21", myRGB(54, 54, 54)}, - {"Gray22", myRGB(56, 56, 56)}, - {"Gray23", myRGB(59, 59, 59)}, - {"Gray24", myRGB(61, 61, 61)}, - {"Gray25", myRGB(64, 64, 64)}, - {"Gray26", myRGB(66, 66, 66)}, - {"Gray27", myRGB(69, 69, 69)}, - {"Gray28", myRGB(71, 71, 71)}, - {"Gray29", myRGB(74, 74, 74)}, - {"Gray3", myRGB(8, 8, 8)}, - {"Gray30", myRGB(77, 77, 77)}, - {"Gray31", myRGB(79, 79, 79)}, - {"Gray32", myRGB(82, 82, 82)}, - {"Gray33", myRGB(84, 84, 84)}, - {"Gray34", myRGB(87, 87, 87)}, - {"Gray35", myRGB(89, 89, 89)}, - {"Gray36", myRGB(92, 92, 92)}, - {"Gray37", myRGB(94, 94, 94)}, - {"Gray38", myRGB(97, 97, 97)}, - {"Gray39", myRGB(99, 99, 99)}, - {"Gray4", myRGB(10, 10, 10)}, - {"Gray40", myRGB(102, 102, 102)}, - {"Gray41", myRGB(105, 105, 105)}, - {"Gray42", myRGB(107, 107, 107)}, - {"Gray43", myRGB(110, 110, 110)}, - {"Gray44", myRGB(112, 112, 112)}, - {"Gray45", myRGB(115, 115, 115)}, - {"Gray46", myRGB(117, 117, 117)}, - {"Gray47", myRGB(120, 120, 120)}, - {"Gray48", myRGB(122, 122, 122)}, - {"Gray49", myRGB(125, 125, 125)}, - {"Gray5", myRGB(13, 13, 13)}, - {"Gray50", myRGB(127, 127, 127)}, - {"Gray51", myRGB(130, 130, 130)}, - {"Gray52", myRGB(133, 133, 133)}, - {"Gray53", myRGB(135, 135, 135)}, - {"Gray54", myRGB(138, 138, 138)}, - {"Gray55", myRGB(140, 140, 140)}, - {"Gray56", myRGB(143, 143, 143)}, - {"Gray57", myRGB(145, 145, 145)}, - {"Gray58", myRGB(148, 148, 148)}, - {"Gray59", myRGB(150, 150, 150)}, - {"Gray6", myRGB(15, 15, 15)}, - {"Gray60", myRGB(153, 153, 153)}, - {"Gray61", myRGB(156, 156, 156)}, - {"Gray62", myRGB(158, 158, 158)}, - {"Gray63", myRGB(161, 161, 161)}, - {"Gray64", myRGB(163, 163, 163)}, - {"Gray65", myRGB(166, 166, 166)}, - {"Gray66", myRGB(168, 168, 168)}, - {"Gray67", myRGB(171, 171, 171)}, - {"Gray68", myRGB(173, 173, 173)}, - {"Gray69", myRGB(176, 176, 176)}, - {"Gray7", myRGB(18, 18, 18)}, - {"Gray70", myRGB(179, 179, 179)}, - {"Gray71", myRGB(181, 181, 181)}, - {"Gray72", myRGB(184, 184, 184)}, - {"Gray73", myRGB(186, 186, 186)}, - {"Gray74", myRGB(189, 189, 189)}, - {"Gray75", myRGB(191, 191, 191)}, - {"Gray76", myRGB(194, 194, 194)}, - {"Gray77", myRGB(196, 196, 196)}, - {"Gray78", myRGB(199, 199, 199)}, - {"Gray79", myRGB(201, 201, 201)}, - {"Gray8", myRGB(20, 20, 20)}, - {"Gray80", myRGB(204, 204, 204)}, - {"Gray81", myRGB(207, 207, 207)}, - {"Gray82", myRGB(209, 209, 209)}, - {"Gray83", myRGB(212, 212, 212)}, - {"Gray84", myRGB(214, 214, 214)}, - {"Gray85", myRGB(217, 217, 217)}, - {"Gray86", myRGB(219, 219, 219)}, - {"Gray87", myRGB(222, 222, 222)}, - {"Gray88", myRGB(224, 224, 224)}, - {"Gray89", myRGB(227, 227, 227)}, - {"Gray9", myRGB(23, 23, 23)}, - {"Gray90", myRGB(229, 229, 229)}, - {"Gray91", myRGB(232, 232, 232)}, - {"Gray92", myRGB(235, 235, 235)}, - {"Gray93", myRGB(237, 237, 237)}, - {"Gray94", myRGB(240, 240, 240)}, - {"Gray95", myRGB(242, 242, 242)}, - {"Gray96", myRGB(245, 245, 245)}, - {"Gray97", myRGB(247, 247, 247)}, - {"Gray98", myRGB(250, 250, 250)}, - {"Gray99", myRGB(252, 252, 252)}, - {"Green", myRGB(0, 255, 0)}, - {"GreenYellow", myRGB(173, 255, 47)}, - {"honeydew", myRGB(240, 255, 240)}, - {"HotPink", myRGB(255, 105, 180)}, - {"IndianRed", myRGB(107, 57, 57)}, - {"ivory", myRGB(255, 255, 240)}, - {"Khaki", myRGB(179, 179, 126)}, - {"lavender", myRGB(230, 230, 250)}, - {"LavenderBlush", myRGB(255, 240, 245)}, - {"LawnGreen", myRGB(124, 252, 0)}, - {"LemonChiffon", myRGB(255, 250, 205)}, - {"LightBlue", myRGB(176, 226, 255)}, - {"LightCoral", myRGB(240, 128, 128)}, - {"LightCyan", myRGB(224, 255, 255)}, - {"LightGoldenrod", myRGB(238, 221, 130)}, - {"LightGoldenrodYellow", myRGB(250, 250, 210)}, - {"LightGray", myRGB(168, 168, 168)}, - {"LightPink", myRGB(255, 182, 193)}, - {"LightSalmon", myRGB(255, 160, 122)}, - {"LightSeaGreen", myRGB(32, 178, 170)}, - {"LightSkyBlue", myRGB(135, 206, 250)}, - {"LightSlateBlue", myRGB(132, 112, 255)}, - {"LightSlateGray", myRGB(119, 136, 153)}, - {"LightSteelBlue", myRGB(124, 152, 211)}, - {"LightYellow", myRGB(255, 255, 224)}, - {"LimeGreen", myRGB(0, 175, 20)}, - {"linen", myRGB(250, 240, 230)}, - {"Magenta", myRGB(255, 0, 255)}, - {"Maroon", myRGB(143, 0, 82)}, - {"MediumAquamarine", myRGB(0, 147, 143)}, - {"MediumBlue", myRGB(50, 50, 204)}, - {"MediumForestGreen", myRGB(50, 129, 75)}, - {"MediumGoldenrod", myRGB(209, 193, 102)}, - {"MediumOrchid", myRGB(189, 82, 189)}, - {"MediumPurple", myRGB(147, 112, 219)}, - {"MediumSeaGreen", myRGB(52, 119, 102)}, - {"MediumSlateBlue", myRGB(106, 106, 141)}, - {"MediumSpringGreen", myRGB(35, 142, 35)}, - {"MediumTurquoise", myRGB(0, 210, 210)}, - {"MediumVioletRed", myRGB(213, 32, 121)}, - {"MidnightBlue", myRGB(47, 47, 100)}, - {"MintCream", myRGB(245, 255, 250)}, - {"MistyRose", myRGB(255, 228, 225)}, - {"moccasin", myRGB(255, 228, 181)}, - {"NavajoWhite", myRGB(255, 222, 173)}, - {"Navy", myRGB(35, 35, 117)}, - {"NavyBlue", myRGB(35, 35, 117)}, - {"OldLace", myRGB(253, 245, 230)}, - {"OliveDrab", myRGB(107, 142, 35)}, - {"Orange", myRGB(255, 135, 0)}, - {"OrangeRed", myRGB(255, 69, 0)}, - {"Orchid", myRGB(239, 132, 239)}, - {"PaleGoldenrod", myRGB(238, 232, 170)}, - {"PaleGreen", myRGB(115, 222, 120)}, - {"PaleTurquoise", myRGB(175, 238, 238)}, - {"PaleVioletRed", myRGB(219, 112, 147)}, - {"PapayaWhip", myRGB(255, 239, 213)}, - {"PeachPuff", myRGB(255, 218, 185)}, - {"peru", myRGB(205, 133, 63)}, - {"Pink", myRGB(255, 181, 197)}, - {"Plum", myRGB(197, 72, 155)}, - {"PowderBlue", myRGB(176, 224, 230)}, - {"purple", myRGB(160, 32, 240)}, - {"Red", myRGB(255, 0, 0)}, - {"RosyBrown", myRGB(188, 143, 143)}, - {"RoyalBlue", myRGB(65, 105, 225)}, - {"SaddleBrown", myRGB(139, 69, 19)}, - {"Salmon", myRGB(233, 150, 122)}, - {"SandyBrown", myRGB(244, 164, 96)}, - {"SeaGreen", myRGB(82, 149, 132)}, - {"seashell", myRGB(255, 245, 238)}, - {"Sienna", myRGB(150, 82, 45)}, - {"SkyBlue", myRGB(114, 159, 255)}, - {"SlateBlue", myRGB(126, 136, 171)}, - {"SlateGray", myRGB(112, 128, 144)}, - {"snow", myRGB(255, 250, 250)}, - {"SpringGreen", myRGB(65, 172, 65)}, - {"SteelBlue", myRGB(84, 112, 170)}, - {"Tan", myRGB(222, 184, 135)}, - {"Thistle", myRGB(216, 191, 216)}, - {"tomato", myRGB(255, 99, 71)}, - {"Transparent", myRGB(0, 0, 1)}, - {"Turquoise", myRGB(25, 204, 223)}, - {"Violet", myRGB(156, 62, 206)}, - {"VioletRed", myRGB(243, 62, 150)}, - {"Wheat", myRGB(245, 222, 179)}, - {"White", myRGB(255, 255, 255)}, - {"WhiteSmoke", myRGB(245, 245, 245)}, - {"Yellow", myRGB(255, 255, 0)}, - {"YellowGreen", myRGB(50, 216, 56)}, - NULL -}; - -static int numTheRGBRecords = 234; diff --git a/src/xpm/scan.c b/src/xpm/scan.c deleted file mode 100644 index fb16180fd8..0000000000 --- a/src/xpm/scan.c +++ /dev/null @@ -1,843 +0,0 @@ -/* - * Copyright (C) 1989-94 GROUPE BULL - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name of GROUPE BULL shall not be - * used in advertising or otherwise to promote the sale, use or other dealings - * in this Software without prior written authorization from GROUPE BULL. - */ - -/*****************************************************************************\ -* scan.c: * -* * -* XPM library * -* Scanning utility for XPM file format * -* * -* Developed by Arnaud Le Hors * -\*****************************************************************************/ - -/* - * The code related to FOR_MSW has been added by - * HeDu (hedu@cul-ipn.uni-kiel.de) 4/94 - */ - -#include "xpm34p.h" - -#define MAXPRINTABLE 92 /* number of printable ascii chars - * minus \ and " for string compat - * and ? to avoid ANSI trigraphs. */ - -static char *printable = -" .XoO+@#$%&*=-;:>,<1234567890qwertyuipasdfghjklzxcvbnmMNBVCZ\ -ASDFGHJKLPIUYTREWQ!~^/()_`'][{}|"; - -/* - * printable begin with a space, so in most case, due to my algorithm, when - * the number of different colors is less than MAXPRINTABLE, it will give a - * char follow by "nothing" (a space) in the readable xpm file - */ - - -typedef struct { - Pixel *pixels; - unsigned int *pixelindex; - unsigned int size; - unsigned int ncolors; - unsigned int mask_pixel; /* whether there is or not */ -} PixelsMap; - -LFUNC(storePixel, int, (Pixel pixel, PixelsMap *pmap, - unsigned int *index_return)); - -LFUNC(storeMaskPixel, int, (Pixel pixel, PixelsMap *pmap, - unsigned int *index_return)); - -#ifndef FOR_MSW -LFUNC(GetImagePixels, int, (XImage *image, unsigned int width, - unsigned int height, PixelsMap *pmap)); - -LFUNC(GetImagePixels32, int, (XImage *image, unsigned int width, - unsigned int height, PixelsMap *pmap)); - -LFUNC(GetImagePixels16, int, (XImage *image, unsigned int width, - unsigned int height, PixelsMap *pmap)); - -LFUNC(GetImagePixels8, int, (XImage *image, unsigned int width, - unsigned int height, PixelsMap *pmap)); - -LFUNC(GetImagePixels1, int, (XImage *image, unsigned int width, - unsigned int height, PixelsMap *pmap, - int (*storeFunc) (Pixel,PixelsMap*, - unsigned int*))); - -/* - int (*storeFunc) ())); -*/ - -#else /* ndef FOR_MSW */ -LFUNC(MSWGetImagePixels, int, (Display *d, XImage *image, unsigned int width, - unsigned int height, PixelsMap *pmap)); -#endif -LFUNC(ScanTransparentColor, int, (XpmColor *color, unsigned int cpp, - XpmAttributes *attributes)); - -LFUNC(ScanOtherColors, int, (Display *display, XpmColor *colors, int ncolors, - Pixel *pixels, unsigned int mask, - unsigned int cpp, XpmAttributes *attributes)); - -/* - * This function stores the given pixel in the given arrays which are grown - * if not large enough. - */ -static int -storePixel(Pixel pixel, PixelsMap *pmap, unsigned int *index_return) -{ - unsigned int i; - Pixel *p; - unsigned int ncolors; - - if (*index_return) { /* this is a transparent pixel! */ - *index_return = 0; - return 0; - } - ncolors = pmap->ncolors; - p = pmap->pixels + pmap->mask_pixel; - for (i = pmap->mask_pixel; i < ncolors; i++, p++) - if (*p == pixel) - break; - if (i == ncolors) { - if (ncolors >= pmap->size) { - pmap->size *= 2; - p = (Pixel *) XpmRealloc(pmap->pixels, sizeof(Pixel) * pmap->size); - if (!p) - return (1); - pmap->pixels = p; - - } - (pmap->pixels)[ncolors] = pixel; - pmap->ncolors++; - } - *index_return = i; - return 0; -} - -static int -storeMaskPixel(Pixel pixel, PixelsMap *pmap, unsigned int *index_return) -{ - if (!pixel) { - if (!pmap->ncolors) { - pmap->ncolors = 1; - (pmap->pixels)[0] = 0; - pmap->mask_pixel = 1; - } - *index_return = 1; - } else - *index_return = 0; - return 0; -} - -/* function call in case of error, frees only locally allocated variables */ -#undef RETURN -#define RETURN(status) \ -{ \ - if (pmap.pixelindex) XpmFree(pmap.pixelindex); \ - if (pmap.pixels) XpmFree(pmap.pixels); \ - if (colorTable) xpmFreeColorTable(colorTable, pmap.ncolors); \ - return(status); \ -} - -/* - * This function scans the given image and stores the found informations in - * the given XpmImage structure. - */ -int -XpmCreateXpmImageFromImage(Display *display, XImage *image, XImage *shapeimage, - XpmImage *xpmimage, XpmAttributes *attributes) -{ - /* variables stored in the XpmAttributes structure */ - unsigned int cpp; - - /* variables to return */ - PixelsMap pmap; - XpmColor *colorTable = NULL; - int ErrorStatus; - - /* calculation variables */ - unsigned int width = 0; - unsigned int height = 0; - unsigned int cppm; /* minimum chars per pixel */ - unsigned int c; - unsigned int offset; - - /* initialize pmap */ - pmap.pixels = NULL; - pmap.pixelindex = NULL; - pmap.size = 256; /* should be enough most of the time */ - pmap.ncolors = 0; - pmap.mask_pixel = 0; - - /* - * get geometry - */ - if (image) { - width = image->width; - height = image->height; - } else if (shapeimage) { - width = shapeimage->width; - height = shapeimage->height; - } - - /* - * retrieve information from the XpmAttributes - */ - if (attributes && (attributes->valuemask & XpmCharsPerPixel -/* 3.2 backward compatibility code */ - || attributes->valuemask & XpmInfos)) -/* end 3.2 bc */ - cpp = attributes->cpp; - else - cpp = 0; - - pmap.pixelindex = - (unsigned int *) XpmCalloc(width * height, sizeof(unsigned int)); - if (!pmap.pixelindex) - RETURN(XpmNoMemory); - - pmap.pixels = (Pixel *) XpmMalloc(sizeof(Pixel) * pmap.size); - if (!pmap.pixels) - RETURN(XpmNoMemory); - - /* - * scan shape mask if any - */ - if (shapeimage) { -#ifndef FOR_MSW - ErrorStatus = GetImagePixels1(shapeimage, width, height, &pmap, - storeMaskPixel); -#else - ErrorStatus = MSWGetImagePixels(display, shapeimage, width, height, - &pmap); -#endif - if (ErrorStatus != XpmSuccess) - RETURN(ErrorStatus); - } - - /* - * scan the image data - * - * In case depth is 1 or bits_per_pixel is 4, 6, 8, 24 or 32 use optimized - * functions, otherwise use slower but sure general one. - * - */ - - if (image) { -#ifndef FOR_MSW - if (image->depth == 1) - ErrorStatus = GetImagePixels1(image, width, height, &pmap, - storePixel); - else if (image->bits_per_pixel == 8) - ErrorStatus = GetImagePixels8(image, width, height, &pmap); - else if (image->bits_per_pixel == 16) - ErrorStatus = GetImagePixels16(image, width, height, &pmap); - else if (image->bits_per_pixel == 32) - ErrorStatus = GetImagePixels32(image, width, height, &pmap); - else - ErrorStatus = GetImagePixels(image, width, height, &pmap); -#else /* FOR_MSW */ - ErrorStatus = MSWGetImagePixels(display, image, width, height, &pmap); -#endif - if (ErrorStatus != XpmSuccess) - RETURN(ErrorStatus); - } - - /* - * get rgb values and a string of char, and possibly a name for each - * color - */ - - colorTable = (XpmColor *) XpmCalloc(pmap.ncolors, sizeof(XpmColor)); - if (!colorTable) - RETURN(XpmNoMemory); - - /* compute the minimal cpp */ - for (cppm = 1, c = MAXPRINTABLE; pmap.ncolors > c; cppm++) - c *= MAXPRINTABLE; - if (cpp < cppm) - cpp = cppm; - - if (pmap.mask_pixel) { - ErrorStatus = ScanTransparentColor(colorTable, cpp, attributes); - if (ErrorStatus != XpmSuccess) - RETURN(ErrorStatus); - offset = 1; - } else - offset = 0; - - ErrorStatus = ScanOtherColors(display, colorTable + offset, - pmap.ncolors - offset, pmap.pixels + offset, - pmap.mask_pixel, cpp, attributes); - if (ErrorStatus != XpmSuccess) - RETURN(ErrorStatus); - - /* - * store found informations in the XpmImage structure - */ - xpmimage->width = width; - xpmimage->height = height; - xpmimage->cpp = cpp; - xpmimage->ncolors = pmap.ncolors; - xpmimage->colorTable = colorTable; - xpmimage->data = pmap.pixelindex; - - XpmFree(pmap.pixels); - return (XpmSuccess); -} - -static int -ScanTransparentColor(XpmColor *color, unsigned int cpp, XpmAttributes *attributes) -{ - char *s; - unsigned int a, b, c; - - /* first get a character string */ - a = 0; - if (!(s = color->string = (char *) XpmMalloc(cpp + 1))) - return (XpmNoMemory); - *s++ = printable[c = a % MAXPRINTABLE]; - for (b = 1; b < cpp; b++, s++) - *s = printable[c = ((a - c) / MAXPRINTABLE) % MAXPRINTABLE]; - *s = '\0'; - - /* then retreive related info from the attributes if any */ - if (attributes && attributes->mask_pixel != XpmUndefPixel && ( -/* 3.2 backward compatibility code */ - attributes->valuemask & XpmInfos || -/* end 3.2 bc */ - attributes->valuemask & XpmColorTable)) { - - unsigned int key; - char **defaults = (char **) color; - char **mask_defaults; - -/* 3.2 backward compatibility code */ - if (attributes->valuemask & XpmInfos) - mask_defaults = (char **) - ((XpmColor **) attributes->colorTable)[attributes->mask_pixel]; - else -/* end 3.2 bc */ - mask_defaults = (char **) ( - attributes->colorTable + attributes->mask_pixel); - for (key = 1; key <= NKEYS; key++) { - if (s = mask_defaults[key]) { - defaults[key] = (char *) strdup(s); - if (!defaults[key]) - return (XpmNoMemory); - } - } - } else { - color->c_color = (char *) strdup(TRANSPARENT_COLOR); - if (!color->c_color) - return (XpmNoMemory); - } - return (XpmSuccess); -} - -static int -ScanOtherColors(Display *display, XpmColor *colors, int ncolors, Pixel *pixels, - unsigned int mask, unsigned int cpp, XpmAttributes *attributes) -{ - /* variables stored in the XpmAttributes structure */ - Colormap colormap; - char *rgb_fname; - -#ifndef FOR_MSW - xpmRgbName rgbn[MAX_RGBNAMES]; -#else - xpmRgbName *rgbn = NULL; -#endif - int rgbn_max = 0; - unsigned int i, j, c, i2; - XpmColor *color; - XColor *xcolors = NULL, *xcolor; - char *colorname, *s; - XpmColor *colorTable, **oldColorTable = NULL; - unsigned int ancolors = 0; - Pixel *apixels; - unsigned int mask_pixel; - int found; - - /* retrieve information from the XpmAttributes */ - if (attributes && (attributes->valuemask & XpmColormap)) - colormap = attributes->colormap; - else - colormap = XDefaultColormap(display, XDefaultScreen(display)); - if (attributes && (attributes->valuemask & XpmRgbFilename)) - rgb_fname = attributes->rgb_fname; - else - rgb_fname = NULL; - - /* first get character strings and rgb values */ - xcolors = (XColor *) XpmMalloc(sizeof(XColor) * ncolors); - if (!xcolors) - return (XpmNoMemory); - - for (i = 0, i2 = (mask ? i + 1 : i), color = colors, xcolor = xcolors; - i < ncolors; i++, i2++, color++, xcolor++, pixels++) { - - if (!(s = color->string = (char *) XpmMalloc(cpp + 1))) { - XpmFree(xcolors); - return (XpmNoMemory); - } - *s++ = printable[c = i2 % MAXPRINTABLE]; - for (j = 1; j < cpp; j++, s++) - *s = printable[c = ((i2 - c) / MAXPRINTABLE) % MAXPRINTABLE]; - *s = '\0'; - - xcolor->pixel = *pixels; - } -#ifdef wx_msw - XQueryColors(display, (Colormap *)colormap, xcolors, ncolors); -#else - XQueryColors(display, (Colormap)colormap, xcolors, ncolors); -#endif - -#ifndef FOR_MSW - /* read the rgb file if any was specified */ - if (rgb_fname) - rgbn_max = xpmReadRgbNames(attributes->rgb_fname, rgbn); -#else - /* FOR_MSW: rgb names and values are hardcoded in rgbtab.h */ - rgbn_max = xpmReadRgbNames(NULL, NULL); -#endif - - if (attributes && attributes->valuemask & XpmColorTable) { - colorTable = attributes->colorTable; - ancolors = attributes->ncolors; - apixels = attributes->pixels; - mask_pixel = attributes->mask_pixel; - } -/* 3.2 backward compatibility code */ - else if (attributes && attributes->valuemask & XpmInfos) { - oldColorTable = (XpmColor **) attributes->colorTable; - ancolors = attributes->ncolors; - apixels = attributes->pixels; - mask_pixel = attributes->mask_pixel; - } -/* end 3.2 bc */ - - for (i = 0, color = colors, xcolor = xcolors; i < ncolors; - i++, color++, xcolor++) { - - /* look for related info from the attributes if any */ - found = False; - if (ancolors) { - unsigned int offset = 0; - - for (j = 0; j < ancolors; j++) { - if (j == mask_pixel) { - offset = 1; - continue; - } - if (apixels[j - offset] == xcolor->pixel) - break; - } - if (j != ancolors) { - unsigned int key; - char **defaults = (char **) color; - char **adefaults; - -/* 3.2 backward compatibility code */ - if (oldColorTable) - adefaults = (char **) oldColorTable[j]; - else -/* end 3.2 bc */ - adefaults = (char **) (colorTable + j); - - found = True; - for (key = 1; key <= NKEYS; key++) { - if (s = adefaults[key]) - defaults[key] = (char *) strdup(s); - } - } - } - if (!found) { - /* if nothing found look for a color name */ - colorname = NULL; - if (rgbn_max) - colorname = xpmGetRgbName(rgbn, rgbn_max, xcolor->red, - xcolor->green, xcolor->blue); - if (colorname) - color->c_color = (char *) strdup(colorname); - else { - /* at last store the rgb value */ - char buf[BUFSIZ]; -#ifndef FOR_MSW - sprintf(buf, "#%04X%04X%04X", - xcolor->red, xcolor->green, xcolor->blue); -#else - sprintf(buf, "#%02x%02x%02x", - xcolor->red, xcolor->green, xcolor->blue); -#endif - color->c_color = (char *) strdup(buf); - } - if (!color->c_color) { - XpmFree(xcolors); - xpmFreeRgbNames(rgbn, rgbn_max); - return (XpmNoMemory); - } - } - } - - XpmFree(xcolors); - xpmFreeRgbNames(rgbn, rgbn_max); - return (XpmSuccess); -} - -#ifndef FOR_MSW -/* - * The functions below are written from X11R5 MIT's code (XImUtil.c) - * - * The idea is to have faster functions than the standard XGetPixel function - * to scan the image data. Indeed we can speed up things by suppressing tests - * performed for each pixel. We do exactly the same tests but at the image - * level. Assuming that we use only ZPixmap images. - */ - -static unsigned long Const low_bits_table[] = { - 0x00000000, 0x00000001, 0x00000003, 0x00000007, - 0x0000000f, 0x0000001f, 0x0000003f, 0x0000007f, - 0x000000ff, 0x000001ff, 0x000003ff, 0x000007ff, - 0x00000fff, 0x00001fff, 0x00003fff, 0x00007fff, - 0x0000ffff, 0x0001ffff, 0x0003ffff, 0x0007ffff, - 0x000fffff, 0x001fffff, 0x003fffff, 0x007fffff, - 0x00ffffff, 0x01ffffff, 0x03ffffff, 0x07ffffff, - 0x0fffffff, 0x1fffffff, 0x3fffffff, 0x7fffffff, - 0xffffffff -}; - -/* - * Default method to scan pixels of a Z image data structure. - * The algorithm used is: - * - * copy the source bitmap_unit or Zpixel into temp - * normalize temp if needed - * extract the pixel bits into return value - * - */ - -static int -GetImagePixels(XImage *image, unsigned int width, unsigned int height, PixelsMap *pmap) -{ - char *src; - char *dst; - unsigned int *iptr; - char *data; - int x, y, i; - int bits, depth, ibu, ibpp; - unsigned long lbt; - Pixel pixel, px; - - data = image->data; - iptr = pmap->pixelindex; - depth = image->depth; - lbt = low_bits_table[depth]; - ibpp = image->bits_per_pixel; - if (image->depth == 1) { - ibu = image->bitmap_unit; - for (y = 0; y < height; y++) - for (x = 0; x < width; x++, iptr++) { - src = &data[XYINDEX(x, y, image)]; - dst = (char *) &pixel; - pixel = 0; - for (i = ibu >> 3; --i >= 0;) - *dst++ = *src++; - XYNORMALIZE(&pixel, image); - bits = x % ibu; - pixel = ((((char *) &pixel)[bits >> 3]) >> (bits & 7)) & 1; - if (ibpp != depth) - pixel &= lbt; - if (storePixel(pixel, pmap, iptr)) - return (XpmNoMemory); - } - } else { - for (y = 0; y < height; y++) - for (x = 0; x < width; x++, iptr++) { - src = &data[ZINDEX(x, y, image)]; - dst = (char *) &px; - px = 0; - for (i = (ibpp + 7) >> 3; --i >= 0;) - *dst++ = *src++; - ZNORMALIZE(&px, image); - pixel = 0; - for (i = sizeof(unsigned long); --i >= 0;) - pixel = (pixel << 8) | ((unsigned char *) &px)[i]; - if (ibpp == 4) { - if (x & 1) - pixel >>= 4; - else - pixel &= 0xf; - } - if (ibpp != depth) - pixel &= lbt; - if (storePixel(pixel, pmap, iptr)) - return (XpmNoMemory); - } - } - return (XpmSuccess); -} - -/* - * scan pixels of a 32-bits Z image data structure - */ - -#ifndef WORD64 -static unsigned long byteorderpixel = MSBFirst << 24; - -#endif - -static int -GetImagePixels32(XImage *image, unsigned int width, unsigned int height, PixelsMap *pmap) -{ - unsigned char *addr; - unsigned char *data; - unsigned int *iptr; - int x, y; - unsigned long lbt; - Pixel pixel; - int depth; - - data = (unsigned char *) image->data; - iptr = pmap->pixelindex; - depth = image->depth; - lbt = low_bits_table[depth]; -#ifndef WORD64 - if (*((char *) &byteorderpixel) == image->byte_order) { - for (y = 0; y < height; y++) - for (x = 0; x < width; x++, iptr++) { - addr = &data[ZINDEX32(x, y, image)]; - pixel = *((unsigned long *) addr); - if (depth != 32) - pixel &= lbt; - if (storePixel(pixel, pmap, iptr)) - return (XpmNoMemory); - } - } else -#endif - if (image->byte_order == MSBFirst) - for (y = 0; y < height; y++) - for (x = 0; x < width; x++, iptr++) { - addr = &data[ZINDEX32(x, y, image)]; - pixel = ((unsigned long) addr[0] << 24 | - (unsigned long) addr[1] << 16 | - (unsigned long) addr[2] << 8 | - addr[4]); - if (depth != 32) - pixel &= lbt; - if (storePixel(pixel, pmap, iptr)) - return (XpmNoMemory); - } - else - for (y = 0; y < height; y++) - for (x = 0; x < width; x++, iptr++) { - addr = &data[ZINDEX32(x, y, image)]; - pixel = (addr[0] | - (unsigned long) addr[1] << 8 | - (unsigned long) addr[2] << 16 | - (unsigned long) addr[3] << 24); - if (depth != 32) - pixel &= lbt; - if (storePixel(pixel, pmap, iptr)) - return (XpmNoMemory); - } - return (XpmSuccess); -} - -/* - * scan pixels of a 16-bits Z image data structure - */ - -static int -GetImagePixels16(XImage *image, unsigned int width, unsigned int height, PixelsMap *pmap) -{ - unsigned char *addr; - unsigned char *data; - unsigned int *iptr; - int x, y; - unsigned long lbt; - Pixel pixel; - int depth; - - data = (unsigned char *) image->data; - iptr = pmap->pixelindex; - depth = image->depth; - lbt = low_bits_table[depth]; - if (image->byte_order == MSBFirst) - for (y = 0; y < height; y++) - for (x = 0; x < width; x++, iptr++) { - addr = &data[ZINDEX16(x, y, image)]; - pixel = addr[0] << 8 | addr[1]; - if (depth != 16) - pixel &= lbt; - if (storePixel(pixel, pmap, iptr)) - return (XpmNoMemory); - } - else - for (y = 0; y < height; y++) - for (x = 0; x < width; x++, iptr++) { - addr = &data[ZINDEX16(x, y, image)]; - pixel = addr[0] | addr[1] << 8; - if (depth != 16) - pixel &= lbt; - if (storePixel(pixel, pmap, iptr)) - return (XpmNoMemory); - } - return (XpmSuccess); -} - -/* - * scan pixels of a 8-bits Z image data structure - */ - -static int -GetImagePixels8(XImage *image, unsigned int width, unsigned int height, PixelsMap *pmap) -{ - unsigned int *iptr; - unsigned char *data; - int x, y; - unsigned long lbt; - Pixel pixel; - int depth; - - data = (unsigned char *) image->data; - iptr = pmap->pixelindex; - depth = image->depth; - lbt = low_bits_table[depth]; - for (y = 0; y < height; y++) - for (x = 0; x < width; x++, iptr++) { - pixel = data[ZINDEX8(x, y, image)]; - if (depth != 8) - pixel &= lbt; - if (storePixel(pixel, pmap, iptr)) - return (XpmNoMemory); - } - return (XpmSuccess); -} - -/* - * scan pixels of a 1-bit depth Z image data structure - */ - -static int -GetImagePixels1(XImage *image, unsigned int width, unsigned int height, PixelsMap *pmap, -/* - int (*storeFunc)() -*/ - int (*storeFunc)(Pixel,PixelsMap*,unsigned int*) -) -{ - unsigned int *iptr; - int x, y; - char *data; - Pixel pixel; - - if (image->byte_order != image->bitmap_bit_order) - return (GetImagePixels(image, width, height, pmap)); - else { - data = image->data; - iptr = pmap->pixelindex; - if (image->bitmap_bit_order == MSBFirst) - for (y = 0; y < height; y++) - for (x = 0; x < width; x++, iptr++) { - pixel = (data[ZINDEX1(x, y, image)] & (0x80 >> (x & 7))) - ? 1 : 0; - if ((*storeFunc) (pixel, pmap, iptr)) - return (XpmNoMemory); - } - else - for (y = 0; y < height; y++) - for (x = 0; x < width; x++, iptr++) { - pixel = (data[ZINDEX1(x, y, image)] & (1 << (x & 7))) - ? 1 : 0; - if ((*storeFunc) (pixel, pmap, iptr)) - return (XpmNoMemory); - } - } - return (XpmSuccess); -} - -#else /* ndef FOR_MSW */ -static int -MSWGetImagePixels(Display *display, XImage *image, unsigned int width, unsigned int height, PixelsMap *pmap) -{ - unsigned int *iptr; - unsigned int x, y; - Pixel pixel; - - iptr = pmap->pixelindex; - - for (y = 0; y < height; y++) { - for (x = 0; x < width; x++, iptr++) { - /* bitmap must be selected !!! ??? */ - pixel = GetPixel(*display, x, y); - if (storePixel(pixel, pmap, iptr)) - return (XpmNoMemory); - } - } - return (XpmSuccess); -} - -#endif - -#ifndef FOR_MSW -int -XpmCreateXpmImageFromPixmap(Display *display, Pixmap pixmap, Pixmap shapemask, - XpmImage *xpmimage, XpmAttributes *attributes) -{ - XImage *ximage = NULL; - XImage *shapeimage = NULL; - unsigned int width = 0; - unsigned int height = 0; - int ErrorStatus; - - /* get geometry */ - if (attributes && attributes->valuemask & XpmSize) { - width = attributes->width; - height = attributes->height; - } - /* get the ximages */ - if (pixmap) - xpmCreateImageFromPixmap(display, pixmap, &ximage, &width, &height); - if (shapemask) - xpmCreateImageFromPixmap(display, shapemask, &shapeimage, - &width, &height); - - /* create the related XpmImage */ - ErrorStatus = XpmCreateXpmImageFromImage(display, ximage, shapeimage, - xpmimage, attributes); - - /* destroy the ximages */ - if (ximage) - XDestroyImage(ximage); - if (shapeimage) - XDestroyImage(shapeimage); - - return (ErrorStatus); -} - -#endif /* ndef FOR_MSW */ diff --git a/src/xpm/simx.c b/src/xpm/simx.c deleted file mode 100644 index 78bf77b0fc..0000000000 --- a/src/xpm/simx.c +++ /dev/null @@ -1,284 +0,0 @@ -/* - * Copyright (C) 1989-94 GROUPE BULL - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name of GROUPE BULL shall not be - * used in advertising or otherwise to promote the sale, use or other dealings - * in this Software without prior written authorization from GROUPE BULL. - */ - -/*****************************************************************************\ -* simx.c: 0.1a * -* * -* This emulates some Xlib functionality for MSW. It's not a general solution, * -* it is close related to XPM-lib. It is only intended to satisfy what is need * -* there. Thus allowing to read XPM files under MS windows. * -* * -* Developed by HeDu 3/94 (hedu@cul-ipn.uni-kiel.de) * -\*****************************************************************************/ - -#include "xpm34.h" - -#ifdef FOR_MSW - -#include "xpm34p.h" /* for XpmMalloc */ - -/* - * On DOS size_t is only 2 bytes, thus malloc(size_t s) can only malloc - * 64K. BUT an expression data=malloc(width*height) may result in an - * overflow. So this function takes a long as input, and returns NULL if the - * request is larger than 64K, is size_t is only 2 bytes. - * - * This requires casts like XpmMalloc( (long)width*(long(height)), else it - * might have no effect at all. - */ - -void * -boundCheckingMalloc(long s) -{ - if (sizeof(size_t) == sizeof(long)) { /* same size, just do it */ - return (malloc((size_t) s)); - } else { - if (sizeof(size_t) == 2) { - if (s > 0xFFFF) - return (NULL); /* to large, size_t with 2 bytes - * only allows 16 bits */ - else - return (malloc((size_t) s)); - } else { /* it's not a long, not 2 bytes, - * what is it ??? */ - return (malloc((size_t) s)); - } - } -} -void * -boundCheckingCalloc(long num, long s) -{ - if (sizeof(size_t) == sizeof(long)) { /* same size, just do it */ - return (calloc((size_t) num, (size_t) s)); - } else { - if (sizeof(size_t) == 2) { - if (s > 0xFFFF || num * s > 0xFFFF) - return (NULL); /* to large, size_t with 2 bytes - * only allows 16 bits */ - else - return (calloc((size_t) num, (size_t) s)); - } else { /* it's not a long, not 2 bytes, - * what is it ??? */ - return (calloc((size_t) num, (size_t) s)); - } - } -} -void * -boundCheckingRealloc(void *p, long s) -{ - if (sizeof(size_t) == sizeof(long)) { /* same size, just do it */ - return (realloc(p, (size_t) s)); - } else { - if (sizeof(size_t) == 2) { - if (s > 0xFFFF) - return (NULL); /* to large, size_t with 2 bytes - * only allows 16 bits */ - else - return (realloc(p, (size_t) s)); - } else { /* it's not a long, not 2 bytes, - * what is it ??? */ - return (realloc(p, (size_t) s)); - } - } -} - -/* static Visual theVisual = { 0 }; */ -Visual * -XDefaultVisual(Display *display, Screen *screen) -{ - return (NULL); /* struct could contain info about - * MONO, GRAY, COLOR */ -} - -Screen * -XDefaultScreen(Display *d) -{ - return (NULL); -} - -/* I get only 1 plane but 8 bits per pixel, - so I think BITSPIXEL should be depth */ -int -XDefaultDepth(Display *display, Screen *screen) -{ - int d, b; - - b = GetDeviceCaps(*display, BITSPIXEL); - d = GetDeviceCaps(*display, PLANES); - return (b); -} - -Colormap * -XDefaultColormap(Display *display, Screen *screen) -{ - return (NULL); -} - -/* convert hex color names, - wrong digits (not a-f,A-F,0-9) are treated as zero */ -static int -hexCharToInt(char c) -{ - int r; - - if (c >= '0' && c <= '9') - r = c - '0'; - else if (c >= 'a' && c <= 'f') - r = c - 'a' + 10; - else if (c >= 'A' && c <= 'F') - r = c - 'A' + 10; - else - r = 0; - - return (r); -} - -static int -rgbFromHex(char *hex, int *r, int *g, int *b) -{ - int len; - - if (hex == NULL || hex[0] != '#') - return (0); - - len = strlen(hex); - if (len == 3 + 1) { - *r = hexCharToInt(hex[1]); - *g = hexCharToInt(hex[2]); - *b = hexCharToInt(hex[3]); - } else if (len == 6 + 1) { - *r = hexCharToInt(hex[1]) * 16 + hexCharToInt(hex[2]); - *g = hexCharToInt(hex[3]) * 16 + hexCharToInt(hex[4]); - *b = hexCharToInt(hex[5]) * 16 + hexCharToInt(hex[6]); - } else if (len == 12 + 1) { - /* it's like c #32329999CCCC */ - /* so for now only take two digits */ - *r = hexCharToInt(hex[1]) * 16 + hexCharToInt(hex[2]); - *g = hexCharToInt(hex[5]) * 16 + hexCharToInt(hex[6]); - *b = hexCharToInt(hex[9]) * 16 + hexCharToInt(hex[10]); - } else - return (0); - - return (1); -} - -/* Color related functions */ -int -XParseColor(Display *d, Colormap *cmap, char *name, XColor *color) -{ - int r, g, b; /* only 8 bit values used */ - int okay; - -/* TODO: use colormap via PALETTE */ - /* parse name either in table or #RRGGBB #RGB */ - if (name == NULL) - return (0); - - if (name[0] == '#') { /* a hex string */ - okay = rgbFromHex(name, &r, &g, &b); - } else { - okay = xpmGetRGBfromName(name, &r, &g, &b); - } - - if (okay) { - color->pixel = RGB(r, g, b); - color->red = (BYTE) r; - color->green = (BYTE) g; - color->blue = (BYTE) b; - return (1); - } else - return (0); /* --> ColorError */ -} - - -int -XAllocColor(Display *d, Colormap *cmap, XColor *color) -{ -/* colormap not used yet so color->pixel is the real COLORREF (RBG) and not an - index in some colormap as in X */ - return (1); -} -void -XQueryColors(Display *display, Colormap *colormap, - XColor *xcolors, int ncolors) -{ -/* under X this fills the rgb values to given .pixel */ -/* since there no colormap use FOR_MSW (not yet!!), rgb is plain encoded */ - XColor *xc = xcolors; - int i; - - for (i = 0; i < ncolors; i++, xc++) { - xc->red = GetRValue(xc->pixel); - xc->green = GetGValue(xc->pixel); - xc->blue = GetBValue(xc->pixel); - } - return; -} -int -XFreeColors(Display *d, Colormap cmap, - unsigned long pixels[], int npixels, unsigned long planes) -{ - /* no colormap yet */ - return (0); /* correct ??? */ -} - -/* XImage functions */ -XImage * -XCreateImage(Display *d, Visual *v, - int depth, int format, - int x, int y, int width, int height, - int pad, int foo) -{ - XImage *img = (XImage *) XpmMalloc(sizeof(XImage)); - - if (img) { - /* *img = CreateCompatibleBitmap(*d, width, height); */ - img->bitmap = CreateBitmap(width, height, 1 /* plane */ , - depth /* bits per pixel */ , NULL); - img->width = width; - img->height = height; - img->depth = depth; - } - return (img); - -} - -void -XImageFree(XImage *img) -{ - if (img) { - XpmFree(img); - } -} -void -XDestroyImage(XImage *img) -{ - if (img) { - DeleteObject(img->bitmap); /* check return ??? */ - XImageFree(img); - } -} - -#endif diff --git a/src/xpm/simx.h b/src/xpm/simx.h deleted file mode 100644 index 23e8a1a297..0000000000 --- a/src/xpm/simx.h +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Copyright (C) 1989-94 GROUPE BULL - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name of GROUPE BULL shall not be - * used in advertising or otherwise to promote the sale, use or other dealings - * in this Software without prior written authorization from GROUPE BULL. - */ - -/*****************************************************************************\ -* simx.h: 0.1a * -* * -* This emulates some Xlib functionality for MSW. It's not a general solution, * -* it is close related to XPM-lib. It is only intended to satisfy what is need * -* there. Thus allowing to read XPM files under MS windows. * -* * -* Developed by HeDu 3/94 (hedu@cul-ipn.uni-kiel.de) * -\*****************************************************************************/ - - -#ifndef _SIMX_H -#define _SIMX_H - -#ifdef FOR_MSW - -#include "windows.h" /* MS windows GDI types */ - -/* - * minimal portability layer between ansi and KR C - */ -/* this comes from xpm.h, and is here again, to avoid complicated - includes, since this is included from xpm.h */ -/* these defines get undefed at the end of this file */ -#if __STDC__ || defined(__cplusplus) || defined(c_plusplus) - /* ANSI || C++ */ -#define FUNC(f, t, p) extern t f p -#define LFUNC(f, t, p) static t f p -#else /* k&R */ -#define FUNC(f, t, p) extern t f() -#define LFUNC(f, t, p) static t f() -#endif - - -FUNC(boundCheckingMalloc, void *, (long s)); -FUNC(boundCheckingCalloc, void *, (long num, long s)); -FUNC(boundCheckingRealloc, void *, (void *p, long s)); - -/* define MSW types for X window types, - I don't know much about MSW, but the following defines do the job */ - -typedef HDC Display; /* this should be similar */ -typedef void *Screen; /* not used */ -typedef void *Visual; /* not used yet, is for GRAY, COLOR, - * MONO */ - -typedef void *Colormap; /* should be COLORPALETTE, not done - * yet */ - -typedef COLORREF Pixel; - -#define PIXEL_ALREADY_TYPEDEFED /* to let xpm.h know about it */ - -typedef struct { - Pixel pixel; - BYTE red, green, blue; -} XColor; - -typedef struct { - HBITMAP bitmap; - unsigned int width; - unsigned int height; - unsigned int depth; -} XImage; - -#if defined(__cplusplus) || defined(c_plusplus) -extern "C" { -#endif -/* some replacements for X... functions */ - -/* XDefaultXXX */ - FUNC(XDefaultVisual, Visual *, (Display *display, Screen *screen)); - FUNC(XDefaultScreen, Screen *, (Display *d)); - FUNC(XDefaultColormap, Colormap *, (Display *display, Screen *screen)); - FUNC(XDefaultDepth, int, (Display *d, Screen *s)); - -/* color related */ - FUNC(XParseColor, int, (Display *, Colormap *, char *, XColor *)); - FUNC(XAllocColor, int, (Display *, Colormap *, XColor *)); - FUNC(XQueryColors, void, (Display *display, Colormap *colormap, - XColor *xcolors, int ncolors)); - FUNC(XFreeColors, int, (Display *d, Colormap cmap, - unsigned long pixels[], - int npixels, unsigned long planes)); -/* XImage */ - FUNC(XCreateImage, XImage *, (Display *, Visual *, int depth, int format, - int x, int y, int width, int height, - int pad, int foo)); - -/* free and destroy bitmap */ - FUNC(XDestroyImage, void /* ? */ , (XImage *)); -/* free only, bitmap remains */ - FUNC(XImageFree, void, (XImage *)); -#if defined(__cplusplus) || defined(c_plusplus) -} /* end of extern "C" */ -#endif /* cplusplus */ - -#define ZPixmap 1 /* not really used */ - -#ifndef True -#define True 1 -#define False 0 -#endif - -/* -#ifndef Bool -typedef BOOL Bool; -#endif -*/ - -/* make these local here, simx.c gets the same from xpm.h */ -#undef LFUNC -#undef FUNC - -#endif /* def FOR_MSW */ - -#endif /* _SIMX_H */ diff --git a/src/xpm/wrffrdat.c b/src/xpm/wrffrdat.c deleted file mode 100644 index 6fe3734195..0000000000 --- a/src/xpm/wrffrdat.c +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright (C) 1989-94 GROUPE BULL - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name of GROUPE BULL shall not be - * used in advertising or otherwise to promote the sale, use or other dealings - * in this Software without prior written authorization from GROUPE BULL. - */ - -/*****************************************************************************\ -* XpmWrFFrData.c: * -* * -* XPM library * -* Parse an Xpm array and write a file that corresponds to it. * -* * -* Developed by Dan Greening dgreen@cs.ucla.edu / dgreen@sti.com * -\*****************************************************************************/ - -#include "xpm34.h" -#include "xpm34p.h" - -int -XpmWriteFileFromData(char *filename, char **data) -{ - XpmImage image; - XpmInfo info; - int ErrorStatus; - - info.valuemask = XpmReturnComments | XpmReturnExtensions; - - ErrorStatus = XpmCreateXpmImageFromData(data, &image, &info); - - if (ErrorStatus != XpmSuccess) - return (ErrorStatus); - - ErrorStatus = XpmWriteFileFromXpmImage(filename, &image, &info); - - XpmFreeXpmImage(&image); - XpmFreeXpmInfo(&info); - - return (ErrorStatus); -} diff --git a/src/xpm/wrffri.c b/src/xpm/wrffri.c deleted file mode 100644 index 29dc4096dd..0000000000 --- a/src/xpm/wrffri.c +++ /dev/null @@ -1,258 +0,0 @@ -/* - * Copyright (C) 1989-94 GROUPE BULL - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name of GROUPE BULL shall not be - * used in advertising or otherwise to promote the sale, use or other dealings - * in this Software without prior written authorization from GROUPE BULL. - */ - -/*****************************************************************************\ -* XpmWrFFrI.c: * -* * -* XPM library * -* Write an image and possibly its mask to an XPM file * -* * -* Developed by Arnaud Le Hors * -\*****************************************************************************/ - -#include "xpm34p.h" -#ifdef FOR_MSW -#include "ctype.h" -#endif - -#include - -LFUNC(WriteColors, void, (FILE *file, XpmColor *colors, unsigned int ncolors)); - -LFUNC(WritePixels, int, (FILE *file, unsigned int width, unsigned int height, - unsigned int cpp, unsigned int *pixels, - XpmColor *colors)); - -LFUNC(WriteExtensions, void, (FILE *file, XpmExtension *ext, - unsigned int num)); - -int -XpmWriteFileFromImage(Display *display, char *filename, XImage *image, XImage *shapeimage, XpmAttributes *attributes) -{ - XpmImage xpmimage; - XpmInfo info; - int ErrorStatus; - - /* create an XpmImage from the image */ - ErrorStatus = XpmCreateXpmImageFromImage(display, image, shapeimage, - &xpmimage, attributes); - if (ErrorStatus != XpmSuccess) - return (ErrorStatus); - - /* write the file from the XpmImage */ - if (attributes) { - xpmSetInfo(&info, attributes); - ErrorStatus = XpmWriteFileFromXpmImage(filename, &xpmimage, &info); - } else - ErrorStatus = XpmWriteFileFromXpmImage(filename, &xpmimage, NULL); - - /* free the XpmImage */ - XpmFreeXpmImage(&xpmimage); - - return (ErrorStatus); -} - -int -XpmWriteFileFromXpmImage(char *filename, XpmImage *image, XpmInfo *info) -{ - xpmData mdata; - char *name, *dot, *s, new_name[BUFSIZ]; - int ErrorStatus; - int len, i; - - /* open file to write */ - if ((ErrorStatus = xpmWriteFile(filename, &mdata)) != XpmSuccess) - return (ErrorStatus); - - /* figure out a name */ - if (filename) { -#ifdef VMS - name = filename; -#else -#ifdef FOR_MSW - if (!(name = strchr(filename, '\\'))) -#else - if (!(name = strchr(filename, '/'))) -#endif - name = filename; - else - name++; -#endif - if (dot = strchr(name, '.')) { - strcpy(new_name, name); -#ifdef FOR_MSW - // Convert to lower case - len = strlen(new_name); - for (i = 0; i < len; i++) - new_name[i] = tolower(new_name[i]); -#endif - /* change '.' to '_' to get a valid C syntax name */ - name = s = new_name; - while (dot = strchr(s, '.')) { - *dot = '_'; - s = dot; - } - } - } else - name = "image_name"; - - /* write the XpmData from the XpmImage */ - if (ErrorStatus == XpmSuccess) - ErrorStatus = xpmWriteData(&mdata, image, name, info); - - xpmDataClose(&mdata); - - return (ErrorStatus); -} - -int -xpmWriteData(xpmData *mdata, XpmImage *image, char *name, XpmInfo *info) -{ - /* calculation variables */ - unsigned int cmts, extensions; - FILE *file; - int ErrorStatus; - - /* store this to speed up */ - file = mdata->stream.file; - - cmts = info && (info->valuemask & XpmComments); - extensions = info && (info->valuemask & XpmExtensions) - && info->nextensions; - - /* print the header line */ - fprintf(file, "/* XPM */\nstatic char * %s[] = {\n", name); - - /* print the hints line */ - if (cmts && info->hints_cmt) - fprintf(file, "/*%s*/\n", info->hints_cmt); - - fprintf(file, "\"%d %d %d %d", image->width, image->height, - image->ncolors, image->cpp); - - if (info && (info->valuemask & XpmHotspot)) - fprintf(file, " %d %d", info->x_hotspot, info->y_hotspot); - - if (extensions) - fprintf(file, " XPMEXT"); - - fprintf(file, "\",\n"); - - /* print colors */ - if (cmts && info->colors_cmt) - fprintf(file, "/*%s*/\n", info->colors_cmt); - - WriteColors(file, image->colorTable, image->ncolors); - - /* print pixels */ - if (cmts && info->pixels_cmt) - fprintf(file, "/*%s*/\n", info->pixels_cmt); - - ErrorStatus = WritePixels(file, image->width, image->height, image->cpp, - image->data, image->colorTable); - if (ErrorStatus != XpmSuccess) - return (ErrorStatus); - - /* print extensions */ - if (extensions) - WriteExtensions(file, info->extensions, info->nextensions); - - /* close the array */ - fprintf(file, "};\n"); - - return (XpmSuccess); -} - -static void -WriteColors(FILE *file, XpmColor *colors, unsigned int ncolors) -{ - unsigned int a, key; - char *s; - char **defaults; - - for (a = 0; a < ncolors; a++, colors++) { - - defaults = (char **) colors; - fprintf(file, "\"%s", *defaults++); - - for (key = 1; key <= NKEYS; key++, defaults++) { - if (s = *defaults) - fprintf(file, "\t%s %s", xpmColorKeys[key - 1], s); - } - fprintf(file, "\",\n"); - } -} - - -static int -WritePixels(FILE *file, unsigned int width, unsigned int height, unsigned int cpp, unsigned int *pixels, XpmColor *colors) -{ - char *s, *p, *buf; - unsigned int x, y, h; - - h = height - 1; - p = buf = (char *) XpmMalloc(width * cpp + 3); - if (!buf) - return (XpmNoMemory); - *buf = '"'; - p++; - for (y = 0; y < h; y++) { - s = p; - for (x = 0; x < width; x++, pixels++) { - strncpy(s, colors[*pixels].string, cpp); - s += cpp; - } - *s++ = '"'; - *s = '\0'; - fprintf(file, "%s,\n", buf); - } - /* duplicate some code to avoid a test in the loop */ - s = p; - for (x = 0; x < width; x++, pixels++) { - strncpy(s, colors[*pixels].string, cpp); - s += cpp; - } - *s++ = '"'; - *s = '\0'; - fprintf(file, "%s", buf); - - XpmFree(buf); - return (XpmSuccess); -} - -static void -WriteExtensions(FILE *file, XpmExtension *ext, unsigned int num) -{ - unsigned int x, y, n; - char **line; - - for (x = 0; x < num; x++, ext++) { - fprintf(file, ",\n\"XPMEXT %s\"", ext->name); - n = ext->nlines; - for (y = 0, line = ext->lines; y < n; y++, line++) - fprintf(file, ",\n\"%s\"", *line); - } - fprintf(file, ",\n\"XPMENDEXT\""); -} diff --git a/src/xpm/wrffrp.c b/src/xpm/wrffrp.c deleted file mode 100644 index 3e2e6ca5a5..0000000000 --- a/src/xpm/wrffrp.c +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (C) 1989-94 GROUPE BULL - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name of GROUPE BULL shall not be - * used in advertising or otherwise to promote the sale, use or other dealings - * in this Software without prior written authorization from GROUPE BULL. - */ - -#include "xpm34.h" - -#ifndef FOR_MSW - -/*****************************************************************************\ -* XpmWrFFrP.c: * -* * -* XPM library * -* Write a pixmap and possibly its mask to an XPM file * -* * -* Developed by Arnaud Le Hors * -\*****************************************************************************/ - -#include "xpm34p.h" -#ifdef VMS -#include "sys$library:string.h" -#else -#if defined(SYSV) || defined(SVR4) -#include -#else -#include -#endif -#endif - -int -XpmWriteFileFromPixmap(Display *display, char *filename, Pixmap pixmap, Pixmap shapemask, XpmAttributes *attributes) -{ - XImage *ximage = NULL; - XImage *shapeimage = NULL; - unsigned int width = 0; - unsigned int height = 0; - int ErrorStatus; - - /* get geometry */ - if (attributes && attributes->valuemask & XpmSize) { - width = attributes->width; - height = attributes->height; - } - /* get the ximages */ - if (pixmap) - xpmCreateImageFromPixmap(display, pixmap, &ximage, &width, &height); - if (shapemask) - xpmCreateImageFromPixmap(display, shapemask, &shapeimage, - &width, &height); - - /* write to the file */ - ErrorStatus = XpmWriteFileFromImage(display, filename, ximage, shapeimage, - attributes); - - /* destroy the ximages */ - if (ximage) - XDestroyImage(ximage); - if (shapeimage) - XDestroyImage(shapeimage); - - return (ErrorStatus); -} -#endif diff --git a/src/xpm/xpm34.h b/src/xpm/xpm34.h deleted file mode 100644 index fba32dbc2b..0000000000 --- a/src/xpm/xpm34.h +++ /dev/null @@ -1,555 +0,0 @@ -/* - * Copyright (C) 1989-94 GROUPE BULL - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name of GROUPE BULL shall not be - * used in advertising or otherwise to promote the sale, use or other dealings - * in this Software without prior written authorization from GROUPE BULL. - */ - -/*****************************************************************************\ -* xpm.h: * -* * -* XPM library * -* Include file * -* * -* Developed by Arnaud Le Hors * -\*****************************************************************************/ - -/* - * The code related to FOR_MSW has been added by - * HeDu (hedu@cul-ipn.uni-kiel.de) 4/94 - */ - -#ifndef XPM_h -#define XPM_h - -#if defined(_WINDOWS) || defined(__WXMSW__) || defined(WIN32) -#define FOR_MSW -#endif - -/* - * first some identification numbers: - * the following revision numbers is determined with the following rule: - * SO Major number = LIB minor version number. - * SO Minor number = LIB sub-minor version number. - * e.g: Xpm version 3.2f - * we forget the 3 which is the format number, 2 gives 2, and f gives 6. - * thus we have XpmVersion = 2 and XpmRevision = 6 - * which gives SOXPMLIBREV = 2.6 - * - * Then the XpmIncludeVersion number is built with the following rule: - * (XpmFormat*100 + XpmVersion)*100 + XpmRevision - */ -#define XpmFormat 3 -#define XpmVersion 4 -#define XpmRevision 2 - -#define XpmIncludeVersion 30402 - -#ifndef XPM_NUMBERS - -#ifdef VMS -#include "decw$include:Xlib.h" -#include "decw$include:Xutil.h" -#else /* VMS */ -#ifdef FOR_MSW -#define SYSV /* uses memcpy string.h etc. */ -#include -#include "simx.h" /* defines some X stuff using MSW types */ -#ifndef __GNUWIN32__ -#define NEED_STRCASECMP /* at least for MSVC++ */ -#endif -#else /* FOR_MSW */ -#include -#include -#include /* HEDU */ -#endif /* FOR_MSW */ -#endif /* VMS */ - -/* let's define Pixel if it is not done yet */ -#if ! defined(_XtIntrinsic_h) && ! defined(PIXEL_ALREADY_TYPEDEFED) -typedef unsigned long Pixel; /* Index into colormap */ -#define PIXEL_ALREADY_TYPEDEFED -#endif - -/* Return ErrorStatus codes: - * null if full success - * positive if partial success - * negative if failure - */ - -#define XpmColorError 1 -#define XpmSuccess 0 -#define XpmOpenFailed -1 -#define XpmFileInvalid -2 -#define XpmNoMemory -3 -#define XpmColorFailed -4 - -/* the following should help people wanting to use their own functions */ -#define XpmFree(ptr) free(ptr) - -typedef struct { - char *name; /* Symbolic color name */ - char *value; /* Color value */ - Pixel pixel; /* Color pixel */ -} XpmColorSymbol; - -typedef struct { - char *name; /* name of the extension */ - unsigned int nlines; /* number of lines in this extension */ - char **lines; /* pointer to the extension array of strings */ -} XpmExtension; - -typedef struct { - char *string; /* characters string */ - char *symbolic; /* symbolic name */ - char *m_color; /* monochrom default */ - char *g4_color; /* 4 level grayscale default */ - char *g_color; /* other level grayscale default */ - char *c_color; /* color default */ -} XpmColor; - -typedef struct { - unsigned int width; /* image width */ - unsigned int height; /* image height */ - unsigned int cpp; /* number of characters per pixel */ - unsigned int ncolors; /* number of colors */ - XpmColor *colorTable; /* list of related colors */ - unsigned int *data; /* image data */ -} XpmImage; - -typedef struct { - unsigned long valuemask; /* Specifies which attributes are defined */ - char *hints_cmt; /* Comment of the hints section */ - char *colors_cmt; /* Comment of the colors section */ - char *pixels_cmt; /* Comment of the pixels section */ - unsigned int x_hotspot; /* Returns the x hotspot's coordinate */ - unsigned int y_hotspot; /* Returns the y hotspot's coordinate */ - unsigned int nextensions; /* number of extensions */ - XpmExtension *extensions; /* pointer to array of extensions */ -} XpmInfo; - -typedef struct { - unsigned long valuemask; /* Specifies which attributes are - * defined */ - - Visual *visual; /* Specifies the visual to use */ - Colormap colormap; /* Specifies the colormap to use */ - unsigned int depth; /* Specifies the depth */ - unsigned int width; /* Returns the width of the created - * pixmap */ - unsigned int height; /* Returns the height of the created - * pixmap */ - unsigned int x_hotspot; /* Returns the x hotspot's - * coordinate */ - unsigned int y_hotspot; /* Returns the y hotspot's - * coordinate */ - unsigned int cpp; /* Specifies the number of char per - * pixel */ - Pixel *pixels; /* List of used color pixels */ - unsigned int npixels; /* Number of pixels */ - XpmColorSymbol *colorsymbols; /* Array of color symbols to - * override */ - unsigned int numsymbols; /* Number of symbols */ - char *rgb_fname; /* RGB text file name */ - unsigned int nextensions; /* number of extensions */ - XpmExtension *extensions; /* pointer to array of extensions */ - - unsigned int ncolors; /* Number of colors */ - XpmColor *colorTable; /* Color table pointer */ -/* 3.2 backward compatibility code */ - char *hints_cmt; /* Comment of the hints section */ - char *colors_cmt; /* Comment of the colors section */ - char *pixels_cmt; /* Comment of the pixels section */ -/* end 3.2 bc */ - unsigned int mask_pixel; /* Transparent pixel's color table - * index */ - - /* Color Allocation Directives */ - unsigned int exactColors; /* Only use exact colors for visual */ - unsigned int closeness; /* Allowable RGB deviation */ - unsigned int red_closeness; /* Allowable red deviation */ - unsigned int green_closeness; /* Allowable green deviation */ - unsigned int blue_closeness; /* Allowable blue deviation */ - int color_key; /* Use colors from this color set */ - -} XpmAttributes; - -/* XpmAttributes value masks bits */ -#define XpmVisual (1L<<0) -#define XpmColormap (1L<<1) -#define XpmDepth (1L<<2) -#define XpmSize (1L<<3) /* width & height */ -#define XpmHotspot (1L<<4) /* x_hotspot & y_hotspot */ -#define XpmCharsPerPixel (1L<<5) -#define XpmColorSymbols (1L<<6) -#define XpmRgbFilename (1L<<7) -/* 3.2 backward compatibility code */ -#define XpmInfos (1L<<8) -#define XpmReturnInfos XpmInfos -/* end 3.2 bc */ -#define XpmReturnPixels (1L<<9) -#define XpmExtensions (1L<<10) -#define XpmReturnExtensions XpmExtensions - -#define XpmExactColors (1L<<11) -#define XpmCloseness (1L<<12) -#define XpmRGBCloseness (1L<<13) -#define XpmColorKey (1L<<14) - -#define XpmColorTable (1L<<15) -#define XpmReturnColorTable XpmColorTable - -/* XpmInfo value masks bits */ -#define XpmComments XpmInfos -#define XpmReturnComments XpmComments - -/* XpmAttributes mask_pixel value when there is no mask */ -#ifndef FOR_MSW -#define XpmUndefPixel 0x80000000 -#else -/* int is only 16 bit for MSW */ -#define XpmUndefPixel 0x8000 -#endif - -/* - * color keys for visual type, they must fit along with the number key of - * each related element in xpmColorKeys[] defined in xpmP.h - */ -#define XPM_MONO 2 -#define XPM_GREY4 3 -#define XPM_GRAY4 3 -#define XPM_GREY 4 -#define XPM_GRAY 4 -#define XPM_COLOR 5 - - -/* - * minimal portability layer between ansi and KR C - */ - -/* forward declaration of functions with prototypes */ - -#if __STDC__ || defined(__cplusplus) || defined(c_plusplus) - /* ANSI || C++ */ -#define FUNC(f, t, p) extern t f p -#define LFUNC(f, t, p) static t f p -/* #define LFUNC(f, t, p) t f p */ -#else /* K&R */ -#define FUNC(f, t, p) extern t f() -#define LFUNC(f, t, p) static t f() -/* #define LFUNC(f, t, p) t f() */ -#endif /* end of K&R */ - - -/* - * functions declarations - */ - -#ifdef __cplusplus -extern "C" { -#endif - -/* For Microsoft C++ at any rate, the FUNC macro just doesn't work: it causes - * arguments to be corrupted espec. in XpmWriteFileFromXpmImage. - * So, define all prototypes explicitly. - */ -#ifdef _MSC_VER - -/* FOR_MSW, all ..Pixmap.. are excluded, only the ..XImage.. are used */ - - int XpmCreateImageFromData(Display *display, - char **data, - XImage **image_return, - XImage **shapemask_return, - XpmAttributes *attributes); - - int XpmCreateDataFromImage(Display *display, - char ***data_return, - XImage *image, - XImage *shapeimage, - XpmAttributes *attributes); - - int XpmReadFileToImage(Display *display, - char *filename, - XImage **image_return, - XImage **shapeimage_return, - XpmAttributes *attributes); - - int XpmWriteFileFromImage(Display *display, - char *filename, - XImage *image, - XImage *shapeimage, - XpmAttributes *attributes); - - int XpmCreateImageFromBuffer(Display *display, - char *buffer, - XImage **image_return, - XImage **shapemask_return, - XpmAttributes *attributes); - - int XpmReadFileToBuffer(char *filename, char **buffer_return); - int XpmWriteFileFromBuffer(char *filename, char *buffer); - - int XpmReadFileToData(char *filename, char ***data_return); - int XpmWriteFileFromData(char *filename, char **data); - - int XpmAttributesSize(); - void XpmFreeAttributes(XpmAttributes *attributes); - void XpmFreeExtensions(XpmExtension *extensions, - int nextensions); - - void XpmFreeXpmImage(XpmImage *image); - void XpmFreeXpmInfo(XpmInfo *info); - char *XpmGetErrorString(int errcode); - int XpmLibraryVersion(); - - /* XpmImage functions */ - int XpmReadFileToXpmImage(char *filename, - XpmImage *image, - XpmInfo *info); - - int XpmWriteFileFromXpmImage(char *filename, - XpmImage *image, - XpmInfo *info); - - int XpmWriteFileFromXpmImage(char *filename, XpmImage *image, XpmInfo *info); - - int XpmCreateImageFromXpmImage(Display *display, - XpmImage *image, - XImage **image_return, - XImage **shapeimage_return, - XpmAttributes *attributes); - - int XpmCreateXpmImageFromImage(Display *display, - XImage *image, - XImage *shapeimage, - XpmImage *xpmimage, - XpmAttributes *attributes); - int XpmCreateDataFromXpmImage(char ***data_return, - XpmImage *image, - XpmInfo *info); - - int XpmCreateXpmImageFromData(char **data, - XpmImage *image, - XpmInfo *info); - - int XpmCreateXpmImageFromBuffer(char *buffer, - XpmImage *image, - XpmInfo *info); - - int XpmCreateBufferFromXpmImage(char **buffer_return, - XpmImage *image, - XpmInfo *info); - -#else // _MSC_VER - -/* FOR_MSW, all ..Pixmap.. are excluded, only the ..XImage.. are used */ - -#ifndef FOR_MSW - FUNC(XpmCreatePixmapFromData, int, (Display *display, - Drawable d, - char **data, - Pixmap *pixmap_return, - Pixmap *shapemask_return, - XpmAttributes *attributes)); - - FUNC(XpmCreateDataFromPixmap, int, (Display *display, - char ***data_return, - Pixmap pixmap, - Pixmap shapemask, - XpmAttributes *attributes)); - - FUNC(XpmReadFileToPixmap, int, (Display *display, - Drawable d, - char *filename, - Pixmap *pixmap_return, - Pixmap *shapemask_return, - XpmAttributes *attributes)); - - FUNC(XpmWriteFileFromPixmap, int, (Display *display, - char *filename, - Pixmap pixmap, - Pixmap shapemask, - XpmAttributes *attributes)); -#endif /* ndef FOR_MSW */ - - FUNC(XpmCreateImageFromData, int, (Display *display, - char **data, - XImage **image_return, - XImage **shapemask_return, - XpmAttributes *attributes)); - - FUNC(XpmCreateDataFromImage, int, (Display *display, - char ***data_return, - XImage *image, - XImage *shapeimage, - XpmAttributes *attributes)); - - FUNC(XpmReadFileToImage, int, (Display *display, - char *filename, - XImage **image_return, - XImage **shapeimage_return, - XpmAttributes *attributes)); - - FUNC(XpmWriteFileFromImage, int, (Display *display, - char *filename, - XImage *image, - XImage *shapeimage, - XpmAttributes *attributes)); - - FUNC(XpmCreateImageFromBuffer, int, (Display *display, - char *buffer, - XImage **image_return, - XImage **shapemask_return, - XpmAttributes *attributes)); -#ifndef FOR_MSW - FUNC(XpmCreatePixmapFromBuffer, int, (Display *display, - Drawable d, - char *buffer, - Pixmap *pixmap_return, - Pixmap *shapemask_return, - XpmAttributes *attributes)); - - FUNC(XpmCreateBufferFromImage, int, (Display *display, - char **buffer_return, - XImage *image, - XImage *shapeimage, - XpmAttributes *attributes)); - - FUNC(XpmCreateBufferFromPixmap, int, (Display *display, - char **buffer_return, - Pixmap pixmap, - Pixmap shapemask, - XpmAttributes *attributes)); -#endif /* ndef FOR_MSW */ - FUNC(XpmReadFileToBuffer, int, (char *filename, char **buffer_return)); - FUNC(XpmWriteFileFromBuffer, int, (char *filename, char *buffer)); - - FUNC(XpmReadFileToData, int, (char *filename, char ***data_return)); - FUNC(XpmWriteFileFromData, int, (char *filename, char **data)); - - FUNC(XpmAttributesSize, int, ()); - FUNC(XpmFreeAttributes, void, (XpmAttributes *attributes)); - FUNC(XpmFreeExtensions, void, (XpmExtension *extensions, - int nextensions)); - - FUNC(XpmFreeXpmImage, void, (XpmImage *image)); - FUNC(XpmFreeXpmInfo, void, (XpmInfo *info)); - FUNC(XpmGetErrorString, char *, (int errcode)); - FUNC(XpmLibraryVersion, int, ()); - - /* XpmImage functions */ - FUNC(XpmReadFileToXpmImage, int, (char *filename, - XpmImage *image, - XpmInfo *info)); - - FUNC(XpmWriteFileFromXpmImage, int, (char *filename, - XpmImage *image, - XpmInfo *info)); - - FUNC(XpmWriteFileFromXpmImage, int, (char *filename, XpmImage *image, XpmInfo *info)); -/* extern int XpmWriteFileFromXpmImage(char *filename, XpmImage *image, XpmInfo *info); */ - -#ifndef FOR_MSW - FUNC(XpmCreatePixmapFromXpmImage, int, (Display *display, - Drawable d, - XpmImage *image, - Pixmap *pixmap_return, - Pixmap *shapemask_return, - XpmAttributes *attributes)); -#endif - FUNC(XpmCreateImageFromXpmImage, int, (Display *display, - XpmImage *image, - XImage **image_return, - XImage **shapeimage_return, - XpmAttributes *attributes)); - - FUNC(XpmCreateXpmImageFromImage, int, (Display *display, - XImage *image, - XImage *shapeimage, - XpmImage *xpmimage, - XpmAttributes *attributes)); -#ifndef FOR_MSW - FUNC(XpmCreateXpmImageFromPixmap, int, (Display *display, - Pixmap pixmap, - Pixmap shapemask, - XpmImage *xpmimage, - XpmAttributes *attributes)); -#endif - FUNC(XpmCreateDataFromXpmImage, int, (char ***data_return, - XpmImage *image, - XpmInfo *info)); - - FUNC(XpmCreateXpmImageFromData, int, (char **data, - XpmImage *image, - XpmInfo *info)); - - FUNC(XpmCreateXpmImageFromBuffer, int, (char *buffer, - XpmImage *image, - XpmInfo *info)); - - FUNC(XpmCreateBufferFromXpmImage, int, (char **buffer_return, - XpmImage *image, - XpmInfo *info)); - -#endif // _MSC_VER - -#ifdef __cplusplus -} /* for C++ V2.0 */ -#endif - - -/* backward compatibility */ - -/* for version 3.0c */ -#define XpmPixmapColorError XpmColorError -#define XpmPixmapSuccess XpmSuccess -#define XpmPixmapOpenFailed XpmOpenFailed -#define XpmPixmapFileInvalid XpmFileInvalid -#define XpmPixmapNoMemory XpmNoMemory -#define XpmPixmapColorFailed XpmColorFailed - -#define XpmReadPixmapFile(dpy, d, file, pix, mask, att) \ - XpmReadFileToPixmap(dpy, d, file, pix, mask, att) -#define XpmWritePixmapFile(dpy, file, pix, mask, att) \ - XpmWriteFileFromPixmap(dpy, file, pix, mask, att) - -/* for version 3.0b */ -#define PixmapColorError XpmColorError -#define PixmapSuccess XpmSuccess -#define PixmapOpenFailed XpmOpenFailed -#define PixmapFileInvalid XpmFileInvalid -#define PixmapNoMemory XpmNoMemory -#define PixmapColorFailed XpmColorFailed - -#define ColorSymbol XpmColorSymbol - -#define XReadPixmapFile(dpy, d, file, pix, mask, att) \ - XpmReadFileToPixmap(dpy, d, file, pix, mask, att) -#define XWritePixmapFile(dpy, file, pix, mask, att) \ - XpmWriteFileFromPixmap(dpy, file, pix, mask, att) -#define XCreatePixmapFromData(dpy, d, data, pix, mask, att) \ - XpmCreatePixmapFromData(dpy, d, data, pix, mask, att) -#define XCreateDataFromPixmap(dpy, data, pix, mask, att) \ - XpmCreateDataFromPixmap(dpy, data, pix, mask, att) - -#endif /* XPM_NUMBERS */ -#endif diff --git a/src/xpm/xpm34p.h b/src/xpm/xpm34p.h deleted file mode 100644 index 31a7008484..0000000000 --- a/src/xpm/xpm34p.h +++ /dev/null @@ -1,304 +0,0 @@ -/* - * Copyright (C) 1989-94 GROUPE BULL - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Except as contained in this notice, the name of GROUPE BULL shall not be - * used in advertising or otherwise to promote the sale, use or other dealings - * in this Software without prior written authorization from GROUPE BULL. - */ - -/*****************************************************************************\ -* xpmP.h: * -* * -* XPM library * -* Private Include file * -* * -* Developed by Arnaud Le Hors * -\*****************************************************************************/ - -/* - * The code related to FOR_MSW has been added by - * HeDu (hedu@cul-ipn.uni-kiel.de) 4/94 - */ - -#ifndef XPMP_h -#define XPMP_h - -#include "xpm34.h" - -/* - * lets try to solve include files - */ -#ifdef VMS - -#include "sys$library:stdio.h" -#include "sys$library:string.h" - -#else /* VMS */ - -#include -/* stdio.h doesn't declare popen on a Sequent DYNIX OS */ -#ifdef sequent -extern FILE *popen(); -#endif - -#if defined(SYSV) || defined(SVR4) -#include - -#ifndef index -#define index strchr -#endif - -#ifndef rindex -#define rindex strrchr -#endif - -#else /* defined(SYSV) || defined(SVR4) */ -#include -#endif - -#endif /* VMS */ - - -#if (defined(SYSV) || defined(SVR4) || defined(VMS)) && !defined(__sgi) -#define bcopy(source, dest, count) memcpy(dest, source, count) -#define bzero(b, len) memset(b, 0, len) -#endif - - -/* the following should help people wanting to use their own functions */ -#ifndef FOR_MSW -#define XpmMalloc(size) malloc((size)) -#define XpmRealloc(ptr, size) realloc((ptr), (size)) -#define XpmCalloc(nelem, elsize) calloc((nelem), (elsize)) -#else -/* checks for mallocs bigger than 64K */ -#define XpmMalloc(size) boundCheckingMalloc((long)(size))/* in simx.[ch] */ -#define XpmRealloc(ptr, size) boundCheckingRealloc((ptr),(long)(size)) -#define XpmCalloc(nelem, elsize) \ - boundCheckingCalloc((long)(nelem),(long) (elsize)) -#endif - - -typedef struct { - unsigned int type; - union { - FILE *file; - char **data; - } stream; - char *cptr; - unsigned int line; - int CommentLength; - char Comment[BUFSIZ]; - char *Bcmt, *Ecmt, Bos, Eos; - int format; /* 1 if XPM1, 0 otherwise */ -} xpmData; - -#define XPMARRAY 0 -#define XPMFILE 1 -#define XPMPIPE 2 -#define XPMBUFFER 3 - -#define EOL '\n' -#define TAB '\t' -#define SPC ' ' - -typedef struct { - char *type; /* key word */ - char *Bcmt; /* string beginning comments */ - char *Ecmt; /* string ending comments */ - char Bos; /* character beginning strings */ - char Eos; /* character ending strings */ - char *Strs; /* strings separator */ - char *Dec; /* data declaration string */ - char *Boa; /* string beginning assignment */ - char *Eoa; /* string ending assignment */ -} xpmDataType; - -extern xpmDataType xpmDataTypes[]; - -/* - * rgb values and ascii names (from rgb text file) rgb values, - * range of 0 -> 65535 color mnemonic of rgb value - */ -typedef struct { - int r, g, b; - char *name; -} xpmRgbName; - -/* Maximum number of rgb mnemonics allowed in rgb text file. */ -#define MAX_RGBNAMES 1024 - -extern char *xpmColorKeys[]; - -#define TRANSPARENT_COLOR "None" /* this must be a string! */ - -/* number of xpmColorKeys */ -#define NKEYS 5 - -/* XPM private routines */ - -FUNC(xpmWriteData, int, (xpmData *mdata, XpmImage *image, char *name, - XpmInfo *info)); - -FUNC(xpmParseData, int, (xpmData *data, XpmImage *image, XpmInfo *info)); - -FUNC(xpmFreeColorTable, void, (XpmColor *colorTable, int ncolors)); - -FUNC(xpmInitAttributes, void, (XpmAttributes *attributes)); - -FUNC(xpmInitXpmImage, void, (XpmImage *image)); - -FUNC(xpmInitXpmInfo, void, (XpmInfo *info)); - -FUNC(xpmSetInfoMask, void, (XpmInfo *info, XpmAttributes *attributes)); -FUNC(xpmSetInfo, void, (XpmInfo *info, XpmAttributes *attributes)); -FUNC(xpmSetAttributes, void, (XpmAttributes *attributes, XpmImage *image, - XpmInfo *info)); - -#ifndef FOR_MSW -FUNC(xpmCreatePixmapFromImage, void, (Display *display, Drawable d, - XImage *ximage, Pixmap *pixmap_return)); - -FUNC(xpmCreateImageFromPixmap, void, (Display *display, Pixmap pixmap, - XImage **ximage_return, - unsigned int *width, - unsigned int *height)); -#endif - -/* I/O utility */ - -FUNC(xpmNextString, int, (xpmData *mdata)); -FUNC(xpmNextUI, int, (xpmData *mdata, unsigned int *ui_return)); -FUNC(xpmGetString, int, (xpmData *mdata, char **sptr, unsigned int *l)); - -#define xpmGetC(mdata) \ - ((!mdata->type || mdata->type == XPMBUFFER) ? \ - (*mdata->cptr++) : (getc(mdata->stream.file))) - -FUNC(xpmNextWord, unsigned int, - (xpmData *mdata, char *buf, unsigned int buflen)); -FUNC(xpmGetCmt, int, (xpmData *mdata, char **cmt)); -FUNC(xpmReadFile, int, (char *filename, xpmData *mdata)); -FUNC(xpmWriteFile, int, (char *filename, xpmData *mdata)); -FUNC(xpmOpenArray, void, (char **data, xpmData *mdata)); -FUNC(xpmDataClose, int, (xpmData *mdata)); -FUNC(xpmParseHeader, int, (xpmData *mdata)); -FUNC(xpmOpenBuffer, void, (char *buffer, xpmData *mdata)); - -/* RGB utility */ - -FUNC(xpmReadRgbNames, int, (char *rgb_fname, xpmRgbName *rgbn)); -FUNC(xpmGetRgbName, char *, (xpmRgbName *rgbn, int rgbn_max, - int red, int green, int blue)); -FUNC(xpmFreeRgbNames, void, (xpmRgbName *rgbn, int rgbn_max)); -#ifdef FOR_MSW -FUNC(xpmGetRGBfromName,int, (char *name, int *r, int *g, int *b)); -#endif - -FUNC(xpm_xynormalizeimagebits, void, (register unsigned char *bp, - register XImage *img)); -FUNC(xpm_znormalizeimagebits, void, (register unsigned char *bp, - register XImage *img)); - -/* - * Macros - * - * The XYNORMALIZE macro determines whether XY format data requires - * normalization and calls a routine to do so if needed. The logic in - * this module is designed for LSBFirst byte and bit order, so - * normalization is done as required to present the data in this order. - * - * The ZNORMALIZE macro performs byte and nibble order normalization if - * required for Z format data. - * - * The XYINDEX macro computes the index to the starting byte (char) boundary - * for a bitmap_unit containing a pixel with coordinates x and y for image - * data in XY format. - * - * The ZINDEX* macros compute the index to the starting byte (char) boundary - * for a pixel with coordinates x and y for image data in ZPixmap format. - * - */ - -#define XYNORMALIZE(bp, img) \ - if ((img->byte_order == MSBFirst) || (img->bitmap_bit_order == MSBFirst)) \ - xpm_xynormalizeimagebits((unsigned char *)(bp), img) - -#define ZNORMALIZE(bp, img) \ - if (img->byte_order == MSBFirst) \ - xpm_znormalizeimagebits((unsigned char *)(bp), img) - -#define XYINDEX(x, y, img) \ - ((y) * img->bytes_per_line) + \ - (((x) + img->xoffset) / img->bitmap_unit) * (img->bitmap_unit >> 3) - -#define ZINDEX(x, y, img) ((y) * img->bytes_per_line) + \ - (((x) * img->bits_per_pixel) >> 3) - -#define ZINDEX32(x, y, img) ((y) * img->bytes_per_line) + ((x) << 2) - -#define ZINDEX16(x, y, img) ((y) * img->bytes_per_line) + ((x) << 1) - -#define ZINDEX8(x, y, img) ((y) * img->bytes_per_line) + (x) - -#define ZINDEX1(x, y, img) ((y) * img->bytes_per_line) + ((x) >> 3) - -#if __STDC__ -#define Const const -#else -#define Const /**/ -#endif - -/* - * there are structures and functions related to hastable code - */ - -typedef struct _xpmHashAtom { - char *name; - void *data; -} *xpmHashAtom; - -typedef struct { - int size; - int limit; - int used; - xpmHashAtom *atomTable; -} xpmHashTable; - -FUNC(xpmHashTableInit, int, (xpmHashTable *table)); -FUNC(xpmHashTableFree, void, (xpmHashTable *table)); -FUNC(xpmHashSlot, xpmHashAtom *, (xpmHashTable *table, char *s)); -FUNC(xpmHashIntern, int, (xpmHashTable *table, char *tag, void *data)); - -#define HashAtomData(i) ((void *)i) -#define HashColorIndex(slot) ((unsigned int)((*slot)->data)) -#define USE_HASHTABLE (cpp > 2 && ncolors > 4) - -#ifdef NEED_STRDUP -FUNC(strdup, char *, (char *s1)); -#endif - -#ifdef NEED_STRCASECMP -FUNC(strcasecmp, int, (char *s1, char *s2)); -#endif - -FUNC(atoui, unsigned int, (char *p, unsigned int l, unsigned int *ui_return)); - -#endif diff --git a/src/zlib/ChangeLog b/src/zlib/ChangeLog deleted file mode 100644 index ae49267ddc..0000000000 --- a/src/zlib/ChangeLog +++ /dev/null @@ -1,423 +0,0 @@ - - ChangeLog file for zlib - -Changes in 1.1.2 (19 March 98) -- added contrib/minzip, mini zip and unzip based on zlib (Gilles Vollant) - See http://www.winimage.com/zLibDll/unzip.html -- preinitialize the inflate tables for fixed codes, to make the code - completely thread safe (Mark) -- some simplifications and slight speed-up to the inflate code (Mark) -- fix gzeof on non-compressed files (Allan Schrum) -- add -std1 option in configure for OSF1 to fix gzprintf (Martin Mokrejs) -- use default value of 4K for Z_BUFSIZE for 16-bit MSDOS (Tim Wegner + Glenn) -- added os2/Makefile.def and os2/zlib.def (Andrew Zabolotny) -- add shared lib support for UNIX_SV4.2MP (MATSUURA Takanori) -- do not wrap extern "C" around system includes (Tom Lane) -- mention zlib binding for TCL in README (Andreas Kupries) -- added amiga/Makefile.pup for Amiga powerUP SAS/C PPC (Andreas Kleinert) -- allow "make install prefix=..." even after configure (Glenn Randers-Pehrson) -- allow "configure --prefix $HOME" (Tim Mooney) -- remove warnings in example.c and gzio.c (Glenn Randers-Pehrson) -- move Makefile.sas to amiga/Makefile.sas - -Changes in 1.1.1 (27 Feb 98) -- fix macros _tr_tally_* in deflate.h for debug mode (Glenn Randers-Pehrson) -- remove block truncation heuristic which had very marginal effect for zlib - (smaller lit_bufsize than in gzip 1.2.4) and degraded a little the - compression ratio on some files. This also allows inlining _tr_tally for - matches in deflate_slow. -- added msdos/Makefile.w32 for WIN32 Microsoft Visual C++ (Bob Frazier) - -Changes in 1.1.0 (24 Feb 98) -- do not return STREAM_END prematurely in inflate (John Bowler) -- revert to the zlib 1.0.8 inflate to avoid the gcc 2.8.0 bug (Jeremy Buhler) -- compile with -DFASTEST to get compression code optimized for speed only -- in minigzip, try mmap'ing the input file first (Miguel Albrecht) -- increase size of I/O buffers in minigzip.c and gzio.c (not a big gain - on Sun but significant on HP) - -- add a pointer to experimental unzip library in README (Gilles Vollant) -- initialize variable gcc in configure (Chris Herborth) - -Changes in 1.0.9 (17 Feb 1998) -- added gzputs and gzgets functions -- do not clear eof flag in gzseek (Mark Diekhans) -- fix gzseek for files in transparent mode (Mark Diekhans) -- do not assume that vsprintf returns the number of bytes written (Jens Krinke) -- replace EXPORT with ZEXPORT to avoid conflict with other programs -- added compress2 in zconf.h, zlib.def, zlib.dnt -- new asm code from Gilles Vollant in contrib/asm386 -- simplify the inflate code (Mark): - . Replace ZALLOC's in huft_build() with single ZALLOC in inflate_blocks_new() - . ZALLOC the length list in inflate_trees_fixed() instead of using stack - . ZALLOC the value area for huft_build() instead of using stack - . Simplify Z_FINISH check in inflate() - -- Avoid gcc 2.8.0 comparison bug a little differently than zlib 1.0.8 -- in inftrees.c, avoid cc -O bug on HP (Farshid Elahi) -- in zconf.h move the ZLIB_DLL stuff earlier to avoid problems with - the declaration of FAR (Gilles VOllant) -- install libz.so* with mode 755 (executable) instead of 644 (Marc Lehmann) -- read_buf buf parameter of type Bytef* instead of charf* -- zmemcpy parameters are of type Bytef*, not charf* (Joseph Strout) -- do not redeclare unlink in minigzip.c for WIN32 (John Bowler) -- fix check for presence of directories in "make install" (Ian Willis) - -Changes in 1.0.8 (27 Jan 1998) -- fixed offsets in contrib/asm386/gvmat32.asm (Gilles Vollant) -- fix gzgetc and gzputc for big endian systems (Markus Oberhumer) -- added compress2() to allow setting the compression level -- include sys/types.h to get off_t on some systems (Marc Lehmann & QingLong) -- use constant arrays for the static trees in trees.c instead of computing - them at run time (thanks to Ken Raeburn for this suggestion). To create - trees.h, compile with GEN_TREES_H and run "make test". -- check return code of example in "make test" and display result -- pass minigzip command line options to file_compress -- simplifying code of inflateSync to avoid gcc 2.8 bug - -- support CC="gcc -Wall" in configure -s (QingLong) -- avoid a flush caused by ftell in gzopen for write mode (Ken Raeburn) -- fix test for shared library support to avoid compiler warnings -- zlib.lib -> zlib.dll in msdos/zlib.rc (Gilles Vollant) -- check for TARGET_OS_MAC in addition to MACOS (Brad Pettit) -- do not use fdopen for Metrowerks on Mac (Brad Pettit)) -- add checks for gzputc and gzputc in example.c -- avoid warnings in gzio.c and deflate.c (Andreas Kleinert) -- use const for the CRC table (Ken Raeburn) -- fixed "make uninstall" for shared libraries -- use Tracev instead of Trace in infblock.c -- in example.c use correct compressed length for test_sync -- suppress +vnocompatwarnings in configure for HPUX (not always supported) - -Changes in 1.0.7 (20 Jan 1998) -- fix gzseek which was broken in write mode -- return error for gzseek to negative absolute position -- fix configure for Linux (Chun-Chung Chen) -- increase stack space for MSC (Tim Wegner) -- get_crc_table and inflateSyncPoint are EXPORTed (Gilles Vollant) -- define EXPORTVA for gzprintf (Gilles Vollant) -- added man page zlib.3 (Rick Rodgers) -- for contrib/untgz, fix makedir() and improve Makefile - -- check gzseek in write mode in example.c -- allocate extra buffer for seeks only if gzseek is actually called -- avoid signed/unsigned comparisons (Tim Wegner, Gilles Vollant) -- add inflateSyncPoint in zconf.h -- fix list of exported functions in nt/zlib.dnt and mdsos/zlib.def - -Changes in 1.0.6 (19 Jan 1998) -- add functions gzprintf, gzputc, gzgetc, gztell, gzeof, gzseek, gzrewind and - gzsetparams (thanks to Roland Giersig and Kevin Ruland for some of this code) -- Fix a deflate bug occuring only with compression level 0 (thanks to - Andy Buckler for finding this one). -- In minigzip, pass transparently also the first byte for .Z files. -- return Z_BUF_ERROR instead of Z_OK if output buffer full in uncompress() -- check Z_FINISH in inflate (thanks to Marc Schluper) -- Implement deflateCopy (thanks to Adam Costello) -- make static libraries by default in configure, add --shared option. -- move MSDOS or Windows specific files to directory msdos -- suppress the notion of partial flush to simplify the interface - (but the symbol Z_PARTIAL_FLUSH is kept for compatibility with 1.0.4) -- suppress history buffer provided by application to simplify the interface - (this feature was not implemented anyway in 1.0.4) -- next_in and avail_in must be initialized before calling inflateInit or - inflateInit2 -- add EXPORT in all exported functions (for Windows DLL) -- added Makefile.nt (thanks to Stephen Williams) -- added the unsupported "contrib" directory: - contrib/asm386/ by Gilles Vollant - 386 asm code replacing longest_match(). - contrib/iostream/ by Kevin Ruland - A C++ I/O streams interface to the zlib gz* functions - contrib/iostream2/ by Tyge Løvset - Another C++ I/O streams interface - contrib/untgz/ by "Pedro A. Aranda Guti\irrez" - A very simple tar.gz file extractor using zlib - contrib/visual-basic.txt by Carlos Rios - How to use compress(), uncompress() and the gz* functions from VB. -- pass params -f (filtered data), -h (huffman only), -1 to -9 (compression - level) in minigzip (thanks to Tom Lane) - -- use const for rommable constants in deflate -- added test for gzseek and gztell in example.c -- add undocumented function inflateSyncPoint() (hack for Paul Mackerras) -- add undocumented function zError to convert error code to string - (for Tim Smithers) -- Allow compilation of gzio with -DNO_DEFLATE to avoid the compression code. -- Use default memcpy for Symantec MSDOS compiler. -- Add EXPORT keyword for check_func (needed for Windows DLL) -- add current directory to LD_LIBRARY_PATH for "make test" -- create also a link for libz.so.1 -- added support for FUJITSU UXP/DS (thanks to Toshiaki Nomura) -- use $(SHAREDLIB) instead of libz.so in Makefile.in (for HPUX) -- added -soname for Linux in configure (Chun-Chung Chen, -- assign numbers to the exported functions in zlib.def (for Windows DLL) -- add advice in zlib.h for best usage of deflateSetDictionary -- work around compiler bug on Atari (cast Z_NULL in call of s->checkfn) -- allow compilation with ANSI keywords only enabled for TurboC in large model -- avoid "versionString"[0] (Borland bug) -- add NEED_DUMMY_RETURN for Borland -- use variable z_verbose for tracing in debug mode (L. Peter Deutsch). -- allow compilation with CC -- defined STDC for OS/2 (David Charlap) -- limit external names to 8 chars for MVS (Thomas Lund) -- in minigzip.c, use static buffers only for 16-bit systems -- fix suffix check for "minigzip -d foo.gz" -- do not return an error for the 2nd of two consecutive gzflush() (Felix Lee) -- use _fdopen instead of fdopen for MSC >= 6.0 (Thomas Fanslau) -- added makelcc.bat for lcc-win32 (Tom St Denis) -- in Makefile.dj2, use copy and del instead of install and rm (Frank Donahoe) -- Avoid expanded $Id$. Use "rcs -kb" or "cvs admin -kb" to avoid Id expansion. -- check for unistd.h in configure (for off_t) -- remove useless check parameter in inflate_blocks_free -- avoid useless assignment of s->check to itself in inflate_blocks_new -- do not flush twice in gzclose (thanks to Ken Raeburn) -- rename FOPEN as F_OPEN to avoid clash with /usr/include/sys/file.h -- use NO_ERRNO_H instead of enumeration of operating systems with errno.h -- work around buggy fclose on pipes for HP/UX -- support zlib DLL with BORLAND C++ 5.0 (thanks to Glenn Randers-Pehrson) -- fix configure if CC is already equal to gcc - -Changes in 1.0.5 (3 Jan 98) -- Fix inflate to terminate gracefully when fed corrupted or invalid data -- Use const for rommable constants in inflate -- Eliminate memory leaks on error conditions in inflate -- Removed some vestigial code in inflate -- Update web address in README - -Changes in 1.0.4 (24 Jul 96) -- In very rare conditions, deflate(s, Z_FINISH) could fail to produce an EOF - bit, so the decompressor could decompress all the correct data but went - on to attempt decompressing extra garbage data. This affected minigzip too. -- zlibVersion and gzerror return const char* (needed for DLL) -- port to RISCOS (no fdopen, no multiple dots, no unlink, no fileno) -- use z_error only for DEBUG (avoid problem with DLLs) - -Changes in 1.0.3 (2 Jul 96) -- use z_streamp instead of z_stream *, which is now a far pointer in MSDOS - small and medium models; this makes the library incompatible with previous - versions for these models. (No effect in large model or on other systems.) -- return OK instead of BUF_ERROR if previous deflate call returned with - avail_out as zero but there is nothing to do -- added memcmp for non STDC compilers -- define NO_DUMMY_DECL for more Mac compilers (.h files merged incorrectly) -- define __32BIT__ if __386__ or i386 is defined (pb. with Watcom and SCO) -- better check for 16-bit mode MSC (avoids problem with Symantec) - -Changes in 1.0.2 (23 May 96) -- added Windows DLL support -- added a function zlibVersion (for the DLL support) -- fixed declarations using Bytef in infutil.c (pb with MSDOS medium model) -- Bytef is define's instead of typedef'd only for Borland C -- avoid reading uninitialized memory in example.c -- mention in README that the zlib format is now RFC1950 -- updated Makefile.dj2 -- added algorithm.doc - -Changes in 1.0.1 (20 May 96) [1.0 skipped to avoid confusion] -- fix array overlay in deflate.c which sometimes caused bad compressed data -- fix inflate bug with empty stored block -- fix MSDOS medium model which was broken in 0.99 -- fix deflateParams() which could generated bad compressed data. -- Bytef is define'd instead of typedef'ed (work around Borland bug) -- added an INDEX file -- new makefiles for DJGPP (Makefile.dj2), 32-bit Borland (Makefile.b32), - Watcom (Makefile.wat), Amiga SAS/C (Makefile.sas) -- speed up adler32 for modern machines without auto-increment -- added -ansi for IRIX in configure -- static_init_done in trees.c is an int -- define unlink as delete for VMS -- fix configure for QNX -- add configure branch for SCO and HPUX -- avoid many warnings (unused variables, dead assignments, etc...) -- no fdopen for BeOS -- fix the Watcom fix for 32 bit mode (define FAR as empty) -- removed redefinition of Byte for MKWERKS -- work around an MWKERKS bug (incorrect merge of all .h files) - -Changes in 0.99 (27 Jan 96) -- allow preset dictionary shared between compressor and decompressor -- allow compression level 0 (no compression) -- add deflateParams in zlib.h: allow dynamic change of compression level - and compression strategy. -- test large buffers and deflateParams in example.c -- add optional "configure" to build zlib as a shared library -- suppress Makefile.qnx, use configure instead -- fixed deflate for 64-bit systems (detected on Cray) -- fixed inflate_blocks for 64-bit systems (detected on Alpha) -- declare Z_DEFLATED in zlib.h (possible parameter for deflateInit2) -- always return Z_BUF_ERROR when deflate() has nothing to do -- deflateInit and inflateInit are now macros to allow version checking -- prefix all global functions and types with z_ with -DZ_PREFIX -- make falloc completely reentrant (inftrees.c) -- fixed very unlikely race condition in ct_static_init -- free in reverse order of allocation to help memory manager -- use zlib-1.0/* instead of zlib/* inside the tar.gz -- make zlib warning-free with "gcc -O3 -Wall -Wwrite-strings -Wpointer-arith - -Wconversion -Wstrict-prototypes -Wmissing-prototypes" -- allow gzread on concatenated .gz files -- deflateEnd now returns Z_DATA_ERROR if it was premature -- deflate is finally (?) fully deterministic (no matches beyond end of input) -- Document Z_SYNC_FLUSH -- add uninstall in Makefile -- Check for __cpluplus in zlib.h -- Better test in ct_align for partial flush -- avoid harmless warnings for Borland C++ -- initialize hash_head in deflate.c -- avoid warning on fdopen (gzio.c) for HP cc -Aa -- include stdlib.h for STDC compilers -- include errno.h for Cray -- ignore error if ranlib doesn't exist -- call ranlib twice for NeXTSTEP -- use exec_prefix instead of prefix for libz.a -- renamed ct_* as _tr_* to avoid conflict with applications -- clear z->msg in inflateInit2 before any error return -- initialize opaque in example.c, gzio.c, deflate.c and inflate.c -- fixed typo in zconf.h (_GNUC__ => __GNUC__) -- check for WIN32 in zconf.h and zutil.c (avoid farmalloc in 32-bit mode) -- fix typo in Make_vms.com (f$trnlnm -> f$getsyi) -- in fcalloc, normalize pointer if size > 65520 bytes -- don't use special fcalloc for 32 bit Borland C++ -- use STDC instead of __GO32__ to avoid redeclaring exit, calloc, etc... -- use Z_BINARY instead of BINARY -- document that gzclose after gzdopen will close the file -- allow "a" as mode in gzopen. -- fix error checking in gzread -- allow skipping .gz extra-field on pipes -- added reference to Perl interface in README -- put the crc table in FAR data (I dislike more and more the medium model :) -- added get_crc_table -- added a dimension to all arrays (Borland C can't count). -- workaround Borland C bug in declaration of inflate_codes_new & inflate_fast -- guard against multiple inclusion of *.h (for precompiled header on Mac) -- Watcom C pretends to be Microsoft C small model even in 32 bit mode. -- don't use unsized arrays to avoid silly warnings by Visual C++: - warning C4746: 'inflate_mask' : unsized array treated as '__far' - (what's wrong with far data in far model?). -- define enum out of inflate_blocks_state to allow compilation with C++ - -Changes in 0.95 (16 Aug 95) -- fix MSDOS small and medium model (now easier to adapt to any compiler) -- inlined send_bits -- fix the final (:-) bug for deflate with flush (output was correct but - not completely flushed in rare occasions). -- default window size is same for compression and decompression - (it's now sufficient to set MAX_WBITS in zconf.h). -- voidp -> voidpf and voidnp -> voidp (for consistency with other - typedefs and because voidnp was not near in large model). - -Changes in 0.94 (13 Aug 95) -- support MSDOS medium model -- fix deflate with flush (could sometimes generate bad output) -- fix deflateReset (zlib header was incorrectly suppressed) -- added support for VMS -- allow a compression level in gzopen() -- gzflush now calls fflush -- For deflate with flush, flush even if no more input is provided. -- rename libgz.a as libz.a -- avoid complex expression in infcodes.c triggering Turbo C bug -- work around a problem with gcc on Alpha (in INSERT_STRING) -- don't use inline functions (problem with some gcc versions) -- allow renaming of Byte, uInt, etc... with #define. -- avoid warning about (unused) pointer before start of array in deflate.c -- avoid various warnings in gzio.c, example.c, infblock.c, adler32.c, zutil.c -- avoid reserved word 'new' in trees.c - -Changes in 0.93 (25 June 95) -- temporarily disable inline functions -- make deflate deterministic -- give enough lookahead for PARTIAL_FLUSH -- Set binary mode for stdin/stdout in minigzip.c for OS/2 -- don't even use signed char in inflate (not portable enough) -- fix inflate memory leak for segmented architectures - -Changes in 0.92 (3 May 95) -- don't assume that char is signed (problem on SGI) -- Clear bit buffer when starting a stored block -- no memcpy on Pyramid -- suppressed inftest.c -- optimized fill_window, put longest_match inline for gcc -- optimized inflate on stored blocks. -- untabify all sources to simplify patches - -Changes in 0.91 (2 May 95) -- Default MEM_LEVEL is 8 (not 9 for Unix) as documented in zlib.h -- Document the memory requirements in zconf.h -- added "make install" -- fix sync search logic in inflateSync -- deflate(Z_FULL_FLUSH) now works even if output buffer too short -- after inflateSync, don't scare people with just "lo world" -- added support for DJGPP - -Changes in 0.9 (1 May 95) -- don't assume that zalloc clears the allocated memory (the TurboC bug - was Mark's bug after all :) -- let again gzread copy uncompressed data unchanged (was working in 0.71) -- deflate(Z_FULL_FLUSH), inflateReset and inflateSync are now fully implemented -- added a test of inflateSync in example.c -- moved MAX_WBITS to zconf.h because users might want to change that. -- document explicitly that zalloc(64K) on MSDOS must return a normalized - pointer (zero offset) -- added Makefiles for Microsoft C, Turbo C, Borland C++ -- faster crc32() - -Changes in 0.8 (29 April 95) -- added fast inflate (inffast.c) -- deflate(Z_FINISH) now returns Z_STREAM_END when done. Warning: this - is incompatible with previous versions of zlib which returned Z_OK. -- work around a TurboC compiler bug (bad code for b << 0, see infutil.h) - (actually that was not a compiler bug, see 0.81 above) -- gzread no longer reads one extra byte in certain cases -- In gzio destroy(), don't reference a freed structure -- avoid many warnings for MSDOS -- avoid the ERROR symbol which is used by MS Windows - -Changes in 0.71 (14 April 95) -- Fixed more MSDOS compilation problems :( There is still a bug with - TurboC large model. - -Changes in 0.7 (14 April 95) -- Added full inflate support. -- Simplified the crc32() interface. The pre- and post-conditioning - (one's complement) is now done inside crc32(). WARNING: this is - incompatible with previous versions; see zlib.h for the new usage. - -Changes in 0.61 (12 April 95) -- workaround for a bug in TurboC. example and minigzip now work on MSDOS. - -Changes in 0.6 (11 April 95) -- added minigzip.c -- added gzdopen to reopen a file descriptor as gzFile -- added transparent reading of non-gziped files in gzread. -- fixed bug in gzread (don't read crc as data) -- fixed bug in destroy (gzio.c) (don't return Z_STREAM_END for gzclose). -- don't allocate big arrays in the stack (for MSDOS) -- fix some MSDOS compilation problems - -Changes in 0.5: -- do real compression in deflate.c. Z_PARTIAL_FLUSH is supported but - not yet Z_FULL_FLUSH. -- support decompression but only in a single step (forced Z_FINISH) -- added opaque object for zalloc and zfree. -- added deflateReset and inflateReset -- added a variable zlib_version for consistency checking. -- renamed the 'filter' parameter of deflateInit2 as 'strategy'. - Added Z_FILTERED and Z_HUFFMAN_ONLY constants. - -Changes in 0.4: -- avoid "zip" everywhere, use zlib instead of ziplib. -- suppress Z_BLOCK_FLUSH, interpret Z_PARTIAL_FLUSH as block flush - if compression method == 8. -- added adler32 and crc32 -- renamed deflateOptions as deflateInit2, call one or the other but not both -- added the method parameter for deflateInit2. -- added inflateInit2 -- simplied considerably deflateInit and inflateInit by not supporting - user-provided history buffer. This is supported only in deflateInit2 - and inflateInit2. - -Changes in 0.3: -- prefix all macro names with Z_ -- use Z_FINISH instead of deflateEnd to finish compression. -- added Z_HUFFMAN_ONLY -- added gzerror() diff --git a/src/zlib/INDEX b/src/zlib/INDEX deleted file mode 100644 index c405328b49..0000000000 --- a/src/zlib/INDEX +++ /dev/null @@ -1,82 +0,0 @@ -ChangeLog history of changes -INDEX this file -Make_vms.com script for Vax/VMS -Makefile makefile for Unix (generated by configure) -Makefile.in makefile for Unix (template for configure) -Makefile.msc makefile for Microsoft C 16-bit -Makefile.riscos makefile for RISCOS -README guess what -algorithm.txt description of the (de)compression algorithm -configure configure script for Unix -descrip.mms makefile for Vax/VMS -zlib.3 mini man page for zlib (volunteers to write full - man pages from zlib.h welcome. write to jloup@gzip.org) - -amiga/Makefile.sas makefile for Amiga SAS/C -amiga/Makefile.pup makefile for Amiga powerUP SAS/C PPC - -msdos/Makefile.w32 makefile for Microsoft Visual C++ 32-bit -msdos/Makefile.b32 makefile for Borland C++ 32-bit -msdos/Makefile.bor makefile for Borland C/C++ 16-bit -msdos/Makefile.dj2 makefile for DJGPP 2.x -msdos/Makefile.tc makefile for Turbo C -msdos/Makefile.wat makefile for Watcom C -msdos/zlib.def definition file for Windows DLL -msdos/zlib.rc definition file for Windows DLL - -nt/Makefile.nt makefile for Windows NT -nt/zlib.dnt definition file for Windows NT DLL - - - zlib public header files (must be kept): -zconf.h -zlib.h - - private source files used to build the zlib library: -adler32.c -compress.c -crc32.c -deflate.c -deflate.h -gzio.c -infblock.c -infblock.h -infcodes.c -infcodes.h -inffast.c -inffast.h -inflate.c -inftrees.c -inftrees.h -infutil.c -infutil.h -maketree.c -trees.c -uncompr.c -zutil.c -zutil.h - - source files for sample programs: -example.c -minigzip.c - - unsupported contribution by third parties - -contrib/asm386/ by Gilles Vollant - 386 asm code replacing longest_match(). - -contrib/minizip/ by Gilles Vollant - Mini zip and unzip based on zlib - See http://www.winimage.com/zLibDll/unzip.html - -contrib/iostream/ by Kevin Ruland - A C++ I/O streams interface to the zlib gz* functions - -contrib/iostream2/ by Tyge Løvset - Another C++ I/O streams interface - -contrib/untgz/ by "Pedro A. Aranda Guti\irrez" - A very simple tar.gz extractor using zlib - -contrib/visual-basic.txt by Carlos Rios - How to use compress(), uncompress() and the gz* functions from VB. diff --git a/src/zlib/Make_vms.com b/src/zlib/Make_vms.com deleted file mode 100644 index 0008d00bb6..0000000000 --- a/src/zlib/Make_vms.com +++ /dev/null @@ -1,115 +0,0 @@ -$! make libz under VMS -$! written by Martin P.J. Zinser -$! -$! Look for the compiler used -$! -$ ccopt = "" -$ if f$getsyi("HW_MODEL").ge.1024 -$ then -$ ccopt = "/prefix=all"+ccopt -$ comp = "__decc__=1" -$ if f$trnlnm("SYS").eqs."" then define sys sys$library: -$ else -$ if f$search("SYS$SYSTEM:DECC$COMPILER.EXE").eqs."" -$ then -$ comp = "__vaxc__=1" -$ if f$trnlnm("SYS").eqs."" then define sys sys$library: -$ else -$ if f$trnlnm("SYS").eqs."" then define sys decc$library_include: -$ ccopt = "/decc/prefix=all"+ccopt -$ comp = "__decc__=1" -$ endif -$ endif -$! -$! Build the thing plain or with mms -$! -$ write sys$output "Compiling Zlib sources ..." -$ if f$search("SYS$SYSTEM:MMS.EXE").eqs."" -$ then -$ dele example.obj;*,minigzip.obj;* -$ CALL MAKE adler32.OBJ "CC ''CCOPT' adler32" - - adler32.c zutil.h zlib.h zconf.h -$ CALL MAKE compress.OBJ "CC ''CCOPT' compress" - - compress.c zlib.h zconf.h -$ CALL MAKE crc32.OBJ "CC ''CCOPT' crc32" - - crc32.c zutil.h zlib.h zconf.h -$ CALL MAKE deflate.OBJ "CC ''CCOPT' deflate" - - deflatec.c deflate.h zutil.h zlib.h zconf.h -$ CALL MAKE gzio.OBJ "CC ''CCOPT' gzio" - - gsio.c zutil.h zlib.h zconf.h -$ CALL MAKE infblock.OBJ "CC ''CCOPT' infblock" - - infblock.c zutil.h zlib.h zconf.h infblock.h -$ CALL MAKE infcodes.OBJ "CC ''CCOPT' infcodes" - - infcodes.c zutil.h zlib.h zconf.h inftrees.h -$ CALL MAKE inffast.OBJ "CC ''CCOPT' inffast" - - inffast.c zutil.h zlib.h zconf.h inffast.h -$ CALL MAKE inflate.OBJ "CC ''CCOPT' inflate" - - inflate.c zutil.h zlib.h zconf.h infblock.h -$ CALL MAKE inftrees.OBJ "CC ''CCOPT' inftrees" - - inftrees.c zutil.h zlib.h zconf.h inftrees.h -$ CALL MAKE infutil.OBJ "CC ''CCOPT' infutil" - - infutil.c zutil.h zlib.h zconf.h inftrees.h infutil.h -$ CALL MAKE trees.OBJ "CC ''CCOPT' trees" - - trees.c deflate.h zutil.h zlib.h zconf.h -$ CALL MAKE uncompr.OBJ "CC ''CCOPT' uncompr" - - uncompr.c zlib.h zconf.h -$ CALL MAKE zutil.OBJ "CC ''CCOPT' zutil" - - zutil.c zutil.h zlib.h zconf.h -$ write sys$output "Building Zlib ..." -$ CALL MAKE libz.OLB "lib/crea libz.olb *.obj" *.OBJ -$ write sys$output "Building example..." -$ CALL MAKE example.OBJ "CC ''CCOPT' example" - - example.c zlib.h zconf.h -$ call make example.exe "LINK example,libz.olb/lib" example.obj libz.olb -$ write sys$output "Building minigzip..." -$ CALL MAKE minigzip.OBJ "CC ''CCOPT' minigzip" - - minigzip.c zlib.h zconf.h -$ call make minigzip.exe - - "LINK minigzip,libz.olb/lib,x11vms:xvmsutils.olb/lib" - - minigzip.obj libz.olb -$ else -$ mms/macro=('comp') -$ endif -$ write sys$output "Zlib build completed" -$ exit -$! -$! -$MAKE: SUBROUTINE !SUBROUTINE TO CHECK DEPENDENCIES -$ V = 'F$Verify(0) -$! P1 = What we are trying to make -$! P2 = Command to make it -$! P3 - P8 What it depends on -$ -$ If F$Search(P1) .Eqs. "" Then Goto Makeit -$ Time = F$CvTime(F$File(P1,"RDT")) -$arg=3 -$Loop: -$ Argument = P'arg -$ If Argument .Eqs. "" Then Goto Exit -$ El=0 -$Loop2: -$ File = F$Element(El," ",Argument) -$ If File .Eqs. " " Then Goto Endl -$ AFile = "" -$Loop3: -$ OFile = AFile -$ AFile = F$Search(File) -$ If AFile .Eqs. "" .Or. AFile .Eqs. OFile Then Goto NextEl -$ If F$CvTime(F$File(AFile,"RDT")) .Ges. Time Then Goto Makeit -$ Goto Loop3 -$NextEL: -$ El = El + 1 -$ Goto Loop2 -$EndL: -$ arg=arg+1 -$ If arg .Le. 8 Then Goto Loop -$ Goto Exit -$ -$Makeit: -$ VV=F$VERIFY(0) -$ write sys$output P2 -$ 'P2 -$ VV='F$Verify(VV) -$Exit: -$ If V Then Set Verify -$ENDSUBROUTINE diff --git a/src/zlib/Makefile.in2 b/src/zlib/Makefile.in2 deleted file mode 100644 index c8bb6e9578..0000000000 --- a/src/zlib/Makefile.in2 +++ /dev/null @@ -1,160 +0,0 @@ -# Makefile for zlib -# Copyright (C) 1995-1998 Jean-loup Gailly. -# For conditions of distribution and use, see copyright notice in zlib.h - -# To compile and test, type: -# ./configure; make test -# The call of configure is optional if you don't have special requirements -# If you wish to build zlib as a shared library, use: ./configure -s - -# To install /usr/local/lib/libz.* and /usr/local/include/zlib.h, type: -# make install -# To install in $HOME instead of /usr/local, use: -# make install prefix=$HOME - -CC=cc - -CFLAGS=-O -#CFLAGS=-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7 -#CFLAGS=-g -DDEBUG -#CFLAGS=-O3 -Wall -Wwrite-strings -Wpointer-arith -Wconversion \ -# -Wstrict-prototypes -Wmissing-prototypes - -LDFLAGS=-L. -lz -LDSHARED=$(CC) - -VER=1.1.2 -LIBS=libz.a -SHAREDLIB=libz.so - -AR=ar rc -RANLIB=ranlib -TAR=tar -SHELL=/bin/sh - -prefix = /usr/local -exec_prefix = ${prefix} - -OBJS = adler32.o compress.o crc32.o gzio.o uncompr.o deflate.o trees.o \ - zutil.o inflate.o infblock.o inftrees.o infcodes.o infutil.o inffast.o - -TEST_OBJS = example.o minigzip.o - -DISTFILES = README INDEX ChangeLog configure Make*[a-z0-9] *.[ch] descrip.mms \ - algorithm.txt zlib.3 msdos/Make*[a-z0-9] msdos/zlib.def msdos/zlib.rc \ - nt/Makefile.nt nt/zlib.dnt amiga/Make*.??? contrib/README.contrib \ - contrib/*.txt contrib/asm386/*.asm contrib/asm386/*.c \ - contrib/asm386/*.bat contrib/asm386/zlibvc.d?? contrib/iostream/*.cpp \ - contrib/iostream/*.h contrib/iostream2/*.h contrib/iostream2/*.cpp \ - contrib/untgz/Makefile contrib/untgz/*.c contrib/untgz/*.w32 \ - contrib/minizip/[CM]*[pe] contrib/minizip/*.[ch] contrib/minizip/*.[td]?? - - -all: example minigzip - -test: all - @LD_LIBRARY_PATH=.:$(LD_LIBRARY_PATH) ; export LD_LIBRARY_PATH; \ - echo hello world | ./minigzip | ./minigzip -d || \ - echo ' *** minigzip test FAILED ***' ; \ - if ./example; then \ - echo ' *** zlib test OK ***'; \ - else \ - echo ' *** zlib test FAILED ***'; \ - fi - -libz.a: $(OBJS) - $(AR) $@ $(OBJS) - -@ ($(RANLIB) $@ || true) >/dev/null 2>&1 - -$(SHAREDLIB).$(VER): $(OBJS) - $(LDSHARED) -o $@ $(OBJS) - rm -f $(SHAREDLIB) $(SHAREDLIB).1 - ln -s $@ $(SHAREDLIB) - ln -s $@ $(SHAREDLIB).1 - -example: example.o $(LIBS) - $(CC) $(CFLAGS) -o $@ example.o $(LDFLAGS) - -minigzip: minigzip.o $(LIBS) - $(CC) $(CFLAGS) -o $@ minigzip.o $(LDFLAGS) - -install: $(LIBS) - -@if [ ! -d $(prefix)/include ]; then mkdir $(prefix)/include; fi - -@if [ ! -d $(exec_prefix)/lib ]; then mkdir $(exec_prefix)/lib; fi - cp zlib.h zconf.h $(prefix)/include - chmod 644 $(prefix)/include/zlib.h $(prefix)/include/zconf.h - cp $(LIBS) $(exec_prefix)/lib - cd $(exec_prefix)/lib; chmod 755 $(LIBS) - -@(cd $(exec_prefix)/lib; $(RANLIB) libz.a || true) >/dev/null 2>&1 - cd $(exec_prefix)/lib; if test -f $(SHAREDLIB).$(VER); then \ - rm -f $(SHAREDLIB) $(SHAREDLIB).1; \ - ln -s $(SHAREDLIB).$(VER) $(SHAREDLIB); \ - ln -s $(SHAREDLIB).$(VER) $(SHAREDLIB).1; \ - (ldconfig || true) >/dev/null 2>&1; \ - fi -# The ranlib in install is needed on NeXTSTEP which checks file times -# ldconfig is for Linux - -uninstall: - cd $(prefix)/include; \ - v=$(VER); \ - if test -f zlib.h; then \ - v=`sed -n '/VERSION "/s/.*"\(.*\)".*/\1/p' < zlib.h`; \ - rm -f zlib.h zconf.h; \ - fi; \ - cd $(exec_prefix)/lib; rm -f libz.a; \ - if test -f $(SHAREDLIB).$$v; then \ - rm -f $(SHAREDLIB).$$v $(SHAREDLIB) $(SHAREDLIB).1; \ - fi - -clean: - rm -f *.o *~ example minigzip libz.a libz.so* foo.gz - -distclean: clean - -zip: - mv Makefile Makefile~; cp -p Makefile.in Makefile - rm -f test.c ztest*.c contrib/minizip/test.zip - v=`sed -n -e 's/\.//g' -e '/VERSION "/s/.*"\(.*\)".*/\1/p' < zlib.h`;\ - zip -ul9 zlib$$v $(DISTFILES) - mv Makefile~ Makefile - -dist: - mv Makefile Makefile~; cp -p Makefile.in Makefile - rm -f test.c ztest*.c contrib/minizip/test.zip - d=zlib-`sed -n '/VERSION "/s/.*"\(.*\)".*/\1/p' < zlib.h`;\ - rm -f $$d.tar.gz; \ - if test ! -d ../$$d; then rm -f ../$$d; ln -s `pwd` ../$$d; fi; \ - files=""; \ - for f in $(DISTFILES); do files="$$files $$d/$$f"; done; \ - cd ..; \ - GZIP=-9 $(TAR) chofz $$d/$$d.tar.gz $$files; \ - if test ! -d $$d; then rm -f $$d; fi - mv Makefile~ Makefile - -tags: - etags *.[ch] - -depend: - makedepend -- $(CFLAGS) -- *.[ch] - -# DO NOT DELETE THIS LINE -- make depend depends on it. - -adler32.o: zlib.h zconf.h -compress.o: zlib.h zconf.h -crc32.o: zlib.h zconf.h -deflate.o: deflate.h zutil.h zlib.h zconf.h -example.o: zlib.h zconf.h -gzio.o: zutil.h zlib.h zconf.h -infblock.o: infblock.h inftrees.h infcodes.h infutil.h zutil.h zlib.h zconf.h -infcodes.o: zutil.h zlib.h zconf.h -infcodes.o: inftrees.h infblock.h infcodes.h infutil.h inffast.h -inffast.o: zutil.h zlib.h zconf.h inftrees.h -inffast.o: infblock.h infcodes.h infutil.h inffast.h -inflate.o: zutil.h zlib.h zconf.h infblock.h -inftrees.o: zutil.h zlib.h zconf.h inftrees.h -infutil.o: zutil.h zlib.h zconf.h infblock.h inftrees.h infcodes.h infutil.h -minigzip.o: zlib.h zconf.h -trees.o: deflate.h zutil.h zlib.h zconf.h trees.h -uncompr.o: zlib.h zconf.h -zutil.o: zutil.h zlib.h zconf.h diff --git a/src/zlib/Makefile.riscos b/src/zlib/Makefile.riscos deleted file mode 100644 index 0f10aa8918..0000000000 --- a/src/zlib/Makefile.riscos +++ /dev/null @@ -1,46 +0,0 @@ -# Project: zlib_1_03 - - -# Toolflags: -CCflags = -c -depend !Depend -IC: -g -throwback -DRISCOS -fnah -C++flags = -c -depend !Depend -IC: -throwback -Linkflags = -aif -c++ -o $@ -ObjAsmflags = -throwback -NoCache -depend !Depend -CMHGflags = -LibFileflags = -c -l -o $@ -Squeezeflags = -o $@ - - -# Final targets: -@.zlib_lib: @.o.adler32 @.o.compress @.o.crc32 @.o.deflate @.o.gzio \ - @.o.infblock @.o.infcodes @.o.inffast @.o.inflate @.o.inftrees @.o.infutil @.o.trees \ - @.o.uncompress @.o.zutil - LibFile $(LibFileflags) @.o.adler32 @.o.compress @.o.crc32 @.o.deflate \ - @.o.gzio @.o.infblock @.o.infcodes @.o.inffast @.o.inflate @.o.inftrees @.o.infutil \ - @.o.trees @.o.uncompress @.o.zutil -@.test: @.tests.minigzip @.tests.example - echo Please run "Test" in directory tests -@.tests.minigzip: @.o.minigzip @.zlib_lib C:o.Stubs - Link $(Linkflags) @.o.minigzip @.zlib_lib C:o.Stubs -@.tests.example: @.o.example @.zlib_lib C:o.Stubs - Link $(Linkflags) @.o.example @.zlib_lib C:o.Stubs - - -# User-editable dependencies: -.c.o: - cc $(ccflags) -o $@ $< - -# Static dependencies: -@.o.example: @.tests.c.example - cc $(ccflags) -o @.o.example @.tests.c.example -@.o.minigzip: @.tests.c.minigzip - cc $(ccflags) -o @.o.minigzip @.tests.c.minigzip - - -# Dynamic dependencies: -o.minigzip: tests.c.minigzip -o.minigzip: h.zlib -o.minigzip: h.zconf -o.example: tests.c.example -o.example: h.zlib -o.example: h.zconf diff --git a/src/zlib/README b/src/zlib/README deleted file mode 100644 index 2471d5ca93..0000000000 --- a/src/zlib/README +++ /dev/null @@ -1,143 +0,0 @@ -zlib 1.1.2 is a general purpose data compression library. All the code -is thread safe. The data format used by the zlib library -is described by RFCs (Request for Comments) 1950 to 1952 in the files -ftp://ds.internic.net/rfc/rfc1950.txt (zlib format), rfc1951.txt (deflate -format) and rfc1952.txt (gzip format). These documents are also available in -other formats from ftp://ftp.uu.net/graphics/png/documents/zlib/zdoc-index.html - -All functions of the compression library are documented in the file zlib.h -(volunteer to write man pages welcome, contact jloup@gzip.org). A usage -example of the library is given in the file example.c which also tests that -the library is working correctly. Another example is given in the file -minigzip.c. The compression library itself is composed of all source files -except example.c and minigzip.c. - -To compile all files and run the test program, follow the instructions -given at the top of Makefile. In short "make test; make install" -should work for most machines. For MSDOS, use one of the special -makefiles such as Makefile.msc; for VMS, use Make_vms.com or descrip.mms. - -Questions about zlib should be sent to or, -if this fails, to the addresses given below in the Copyright section. -The zlib home page is http://www.cdrom.com/pub/infozip/zlib/ -The official zlib ftp site is ftp://ftp.cdrom.com/pub/infozip/zlib/ -Mark Nelson wrote an article about zlib for the Jan. 1997 -issue of Dr. Dobb's Journal; a copy of the article is available in -http://web2.airmail.net/markn/articles/zlibtool/zlibtool.htm - -The changes made in version 1.1.2 are documented in the file ChangeLog. -The main changes since 1.1.1 are: - -- added contrib/minzip, mini zip and unzip based on zlib (Gilles Vollant) - See http://www.winimage.com/zLibDll/unzip.html -- preinitialize the inflate tables for fixed codes, to make the code - completely thread safe (Mark) -- some simplifications and slight speed-up to the inflate code (Mark) -- fix gzeof on non-compressed files (Allan Schrum) -- add -std1 option in configure for OSF1 to fix gzprintf (Martin Mokrejs) -- use default value of 4K for Z_BUFSIZE for 16-bit MSDOS (Tim Wegner + Glenn) -- added os2/Makefile.def and os2/zlib.def (Andrew Zabolotny) -- add shared lib support for UNIX_SV4.2MP (MATSUURA Takanori) -- do not wrap extern "C" around system includes (Tom Lane) -- added amiga/Makefile.pup for Amiga powerUP SAS/C PPC (Andreas Kleinert) -- allow "make install prefix=..." even after configure (Glenn Randers-Pehrson) -- allow "configure --prefix $HOME" (Tim Mooney) - - -Unsupported third party contributions are provided in directory "contrib". - -A Java implementation of zlib is available in the Java Development Kit 1.1 -http://www.javasoft.com/products/JDK/1.1/docs/api/Package-java.util.zip.html -See the zlib home page http://www.cdrom.com/pub/infozip/zlib/ for details. - -A Perl interface to zlib written by Paul Marquess -is in the CPAN (Comprehensive Perl Archive Network) sites, such as: -ftp://ftp.cis.ufl.edu/pub/perl/CPAN/modules/by-module/Compress/Compress-Zlib* - -A Python interface to zlib written by A.M. Kuchling -is available from the Python Software Association sites, such as: -ftp://ftp.python.org/pub/python/contrib/Encoding/zlib*.tar.gz - -A zlib binding for TCL written by Andreas Kupries -is availlable at http://www.westend.com/~kupries/doc/trf/man/man.html - -An experimental package to read and write files in .zip format, -written on top of zlib by Gilles Vollant , is -available at http://www.winimage.com/zLibDll/unzip.html -and also in the contrib/minizip directory of zlib. - - -Notes for some targets: - -- To build a Windows DLL version, include in a DLL project zlib.def, zlib.rc - and all .c files except example.c and minigzip.c; compile with -DZLIB_DLL - The zlib DLL support was initially done by Alessandro Iacopetti and is - now maintained by Gilles Vollant . Check the zlib DLL - home page at http://www.winimage.com/zLibDll - - From Visual Basic, you can call the DLL functions which do not take - a structure as argument: compress, uncompress and all gz* functions. - See contrib/visual-basic.txt for more information. - I don't know how to handle structures in Visual Basic, sorry. - -- For 64-bit Irix, deflate.c must be compiled without any optimization. - With -O, one libpng test fails. The test works in 32 bit mode (with - the -n32 compiler flag). The compiler bug has been reported to SGI. - -- zlib doesn't work with gcc 2.6.3 on a DEC 3000/300LX under OSF/1 2.1 - it works when compiled with cc. - -- on Digital Unix 4.0D (formely OSF/1) on AlphaServer, the cc option -std1 - is necessary to get gzprintf working correctly. This is done by configure. - -- zlib doesn't work on HP-UX 9.05 with some versions of /bin/cc. It works - with other compilers. Use "make test" to check your compiler. - -- For shared memory multiprocessors, the decompression code assumes that - writes to pointers are atomic. Also the functions zalloc and zfree passed - to deflateInit must be multi-threaded in this case. - -- gzdopen is not supported on RISCOS, BEOS and by some Mac compilers. - -- For Turbo C the small model is supported only with reduced performance to - avoid any far allocation; it was tested with -DMAX_WBITS=11 -DMAX_MEM_LEVEL=3 - - -Acknowledgments: - - The deflate format used by zlib was defined by Phil Katz. The deflate - and zlib specifications were written by L. Peter Deutsch. Thanks to all the - people who reported problems and suggested various improvements in zlib; - they are too numerous to cite here. - -Copyright notice: - - (C) 1995-1998 Jean-loup Gailly and Mark Adler - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - Jean-loup Gailly Mark Adler - jloup@gzip.org madler@alumni.caltech.edu - -If you use the zlib library in a product, we would appreciate *not* -receiving lengthy legal documents to sign. The sources are provided -for free but without warranty of any kind. The library has been -entirely written by Jean-loup Gailly and Mark Adler; it does not -include third-party code. - -If you redistribute modified sources, we would appreciate that you include -in the file ChangeLog history information documenting your changes. diff --git a/src/zlib/adler32.c b/src/zlib/adler32.c deleted file mode 100644 index ef4b2ebdc8..0000000000 --- a/src/zlib/adler32.c +++ /dev/null @@ -1,48 +0,0 @@ -/* adler32.c -- compute the Adler-32 checksum of a data stream - * Copyright (C) 1995-1998 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* @(#) $Id$ */ - -#include "../zlib/zlib.h" - -#define BASE 65521L /* largest prime smaller than 65536 */ -#define NMAX 5552 -/* NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */ - -#define DO1(buf,i) {s1 += buf[i]; s2 += s1;} -#define DO2(buf,i) DO1(buf,i); DO1(buf,i+1); -#define DO4(buf,i) DO2(buf,i); DO2(buf,i+2); -#define DO8(buf,i) DO4(buf,i); DO4(buf,i+4); -#define DO16(buf) DO8(buf,0); DO8(buf,8); - -/* ========================================================================= */ -uLong ZEXPORT adler32(adler, buf, len) - uLong adler; - const Bytef *buf; - uInt len; -{ - unsigned long s1 = adler & 0xffff; - unsigned long s2 = (adler >> 16) & 0xffff; - int k; - - if (buf == Z_NULL) return 1L; - - while (len > 0) { - k = len < NMAX ? len : NMAX; - len -= k; - while (k >= 16) { - DO16(buf); - buf += 16; - k -= 16; - } - if (k != 0) do { - s1 += *buf++; - s2 += s1; - } while (--k); - s1 %= BASE; - s2 %= BASE; - } - return (s2 << 16) | s1; -} diff --git a/src/zlib/algorithm.txt b/src/zlib/algorithm.txt deleted file mode 100644 index cdc830b5de..0000000000 --- a/src/zlib/algorithm.txt +++ /dev/null @@ -1,213 +0,0 @@ -1. Compression algorithm (deflate) - -The deflation algorithm used by gzip (also zip and zlib) is a variation of -LZ77 (Lempel-Ziv 1977, see reference below). It finds duplicated strings in -the input data. The second occurrence of a string is replaced by a -pointer to the previous string, in the form of a pair (distance, -length). Distances are limited to 32K bytes, and lengths are limited -to 258 bytes. When a string does not occur anywhere in the previous -32K bytes, it is emitted as a sequence of literal bytes. (In this -description, `string' must be taken as an arbitrary sequence of bytes, -and is not restricted to printable characters.) - -Literals or match lengths are compressed with one Huffman tree, and -match distances are compressed with another tree. The trees are stored -in a compact form at the start of each block. The blocks can have any -size (except that the compressed data for one block must fit in -available memory). A block is terminated when deflate() determines that -it would be useful to start another block with fresh trees. (This is -somewhat similar to the behavior of LZW-based _compress_.) - -Duplicated strings are found using a hash table. All input strings of -length 3 are inserted in the hash table. A hash index is computed for -the next 3 bytes. If the hash chain for this index is not empty, all -strings in the chain are compared with the current input string, and -the longest match is selected. - -The hash chains are searched starting with the most recent strings, to -favor small distances and thus take advantage of the Huffman encoding. -The hash chains are singly linked. There are no deletions from the -hash chains, the algorithm simply discards matches that are too old. - -To avoid a worst-case situation, very long hash chains are arbitrarily -truncated at a certain length, determined by a runtime option (level -parameter of deflateInit). So deflate() does not always find the longest -possible match but generally finds a match which is long enough. - -deflate() also defers the selection of matches with a lazy evaluation -mechanism. After a match of length N has been found, deflate() searches for -a longer match at the next input byte. If a longer match is found, the -previous match is truncated to a length of one (thus producing a single -literal byte) and the process of lazy evaluation begins again. Otherwise, -the original match is kept, and the next match search is attempted only N -steps later. - -The lazy match evaluation is also subject to a runtime parameter. If -the current match is long enough, deflate() reduces the search for a longer -match, thus speeding up the whole process. If compression ratio is more -important than speed, deflate() attempts a complete second search even if -the first match is already long enough. - -The lazy match evaluation is not performed for the fastest compression -modes (level parameter 1 to 3). For these fast modes, new strings -are inserted in the hash table only when no match was found, or -when the match is not too long. This degrades the compression ratio -but saves time since there are both fewer insertions and fewer searches. - - -2. Decompression algorithm (inflate) - -2.1 Introduction - -The real question is, given a Huffman tree, how to decode fast. The most -important realization is that shorter codes are much more common than -longer codes, so pay attention to decoding the short codes fast, and let -the long codes take longer to decode. - -inflate() sets up a first level table that covers some number of bits of -input less than the length of longest code. It gets that many bits from the -stream, and looks it up in the table. The table will tell if the next -code is that many bits or less and how many, and if it is, it will tell -the value, else it will point to the next level table for which inflate() -grabs more bits and tries to decode a longer code. - -How many bits to make the first lookup is a tradeoff between the time it -takes to decode and the time it takes to build the table. If building the -table took no time (and if you had infinite memory), then there would only -be a first level table to cover all the way to the longest code. However, -building the table ends up taking a lot longer for more bits since short -codes are replicated many times in such a table. What inflate() does is -simply to make the number of bits in the first table a variable, and set it -for the maximum speed. - -inflate() sends new trees relatively often, so it is possibly set for a -smaller first level table than an application that has only one tree for -all the data. For inflate, which has 286 possible codes for the -literal/length tree, the size of the first table is nine bits. Also the -distance trees have 30 possible values, and the size of the first table is -six bits. Note that for each of those cases, the table ended up one bit -longer than the ``average'' code length, i.e. the code length of an -approximately flat code which would be a little more than eight bits for -286 symbols and a little less than five bits for 30 symbols. It would be -interesting to see if optimizing the first level table for other -applications gave values within a bit or two of the flat code size. - - -2.2 More details on the inflate table lookup - -Ok, you want to know what this cleverly obfuscated inflate tree actually -looks like. You are correct that it's not a Huffman tree. It is simply a -lookup table for the first, let's say, nine bits of a Huffman symbol. The -symbol could be as short as one bit or as long as 15 bits. If a particular -symbol is shorter than nine bits, then that symbol's translation is duplicated -in all those entries that start with that symbol's bits. For example, if the -symbol is four bits, then it's duplicated 32 times in a nine-bit table. If a -symbol is nine bits long, it appears in the table once. - -If the symbol is longer than nine bits, then that entry in the table points -to another similar table for the remaining bits. Again, there are duplicated -entries as needed. The idea is that most of the time the symbol will be short -and there will only be one table look up. (That's whole idea behind data -compression in the first place.) For the less frequent long symbols, there -will be two lookups. If you had a compression method with really long -symbols, you could have as many levels of lookups as is efficient. For -inflate, two is enough. - -So a table entry either points to another table (in which case nine bits in -the above example are gobbled), or it contains the translation for the symbol -and the number of bits to gobble. Then you start again with the next -ungobbled bit. - -You may wonder: why not just have one lookup table for how ever many bits the -longest symbol is? The reason is that if you do that, you end up spending -more time filling in duplicate symbol entries than you do actually decoding. -At least for deflate's output that generates new trees every several 10's of -kbytes. You can imagine that filling in a 2^15 entry table for a 15-bit code -would take too long if you're only decoding several thousand symbols. At the -other extreme, you could make a new table for every bit in the code. In fact, -that's essentially a Huffman tree. But then you spend two much time -traversing the tree while decoding, even for short symbols. - -So the number of bits for the first lookup table is a trade of the time to -fill out the table vs. the time spent looking at the second level and above of -the table. - -Here is an example, scaled down: - -The code being decoded, with 10 symbols, from 1 to 6 bits long: - -A: 0 -B: 10 -C: 1100 -D: 11010 -E: 11011 -F: 11100 -G: 11101 -H: 11110 -I: 111110 -J: 111111 - -Let's make the first table three bits long (eight entries): - -000: A,1 -001: A,1 -010: A,1 -011: A,1 -100: B,2 -101: B,2 -110: -> table X (gobble 3 bits) -111: -> table Y (gobble 3 bits) - -Each entry is what the bits decode to and how many bits that is, i.e. how -many bits to gobble. Or the entry points to another table, with the number of -bits to gobble implicit in the size of the table. - -Table X is two bits long since the longest code starting with 110 is five bits -long: - -00: C,1 -01: C,1 -10: D,2 -11: E,2 - -Table Y is three bits long since the longest code starting with 111 is six -bits long: - -000: F,2 -001: F,2 -010: G,2 -011: G,2 -100: H,2 -101: H,2 -110: I,3 -111: J,3 - -So what we have here are three tables with a total of 20 entries that had to -be constructed. That's compared to 64 entries for a single table. Or -compared to 16 entries for a Huffman tree (six two entry tables and one four -entry table). Assuming that the code ideally represents the probability of -the symbols, it takes on the average 1.25 lookups per symbol. That's compared -to one lookup for the single table, or 1.66 lookups per symbol for the -Huffman tree. - -There, I think that gives you a picture of what's going on. For inflate, the -meaning of a particular symbol is often more than just a letter. It can be a -byte (a "literal"), or it can be either a length or a distance which -indicates a base value and a number of bits to fetch after the code that is -added to the base value. Or it might be the special end-of-block code. The -data structures created in inftrees.c try to encode all that information -compactly in the tables. - - -Jean-loup Gailly Mark Adler -jloup@gzip.org madler@alumni.caltech.edu - - -References: - -[LZ77] Ziv J., Lempel A., ``A Universal Algorithm for Sequential Data -Compression,'' IEEE Transactions on Information Theory, Vol. 23, No. 3, -pp. 337-343. - -``DEFLATE Compressed Data Format Specification'' available in -ftp://ds.internic.net/rfc/rfc1951.txt diff --git a/src/zlib/compress.c b/src/zlib/compress.c deleted file mode 100644 index 51761b105e..0000000000 --- a/src/zlib/compress.c +++ /dev/null @@ -1,68 +0,0 @@ -/* compress.c -- compress a memory buffer - * Copyright (C) 1995-1998 Jean-loup Gailly. - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* @(#) $Id$ */ - -#include "../zlib/zlib.h" - -/* =========================================================================== - Compresses the source buffer into the destination buffer. The level - parameter has the same meaning as in deflateInit. sourceLen is the byte - length of the source buffer. Upon entry, destLen is the total size of the - destination buffer, which must be at least 0.1% larger than sourceLen plus - 12 bytes. Upon exit, destLen is the actual size of the compressed buffer. - - compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_BUF_ERROR if there was not enough room in the output buffer, - Z_STREAM_ERROR if the level parameter is invalid. -*/ -int ZEXPORT compress2 (dest, destLen, source, sourceLen, level) - Bytef *dest; - uLongf *destLen; - const Bytef *source; - uLong sourceLen; - int level; -{ - z_stream stream; - int err; - - stream.next_in = (Bytef*)source; - stream.avail_in = (uInt)sourceLen; -#ifdef MAXSEG_64K - /* Check for source > 64K on 16-bit machine: */ - if ((uLong)stream.avail_in != sourceLen) return Z_BUF_ERROR; -#endif - stream.next_out = dest; - stream.avail_out = (uInt)*destLen; - if ((uLong)stream.avail_out != *destLen) return Z_BUF_ERROR; - - stream.zalloc = (alloc_func)0; - stream.zfree = (free_func)0; - stream.opaque = (voidpf)0; - - err = deflateInit(&stream, level); - if (err != Z_OK) return err; - - err = deflate(&stream, Z_FINISH); - if (err != Z_STREAM_END) { - deflateEnd(&stream); - return err == Z_OK ? Z_BUF_ERROR : err; - } - *destLen = stream.total_out; - - err = deflateEnd(&stream); - return err; -} - -/* =========================================================================== - */ -int ZEXPORT compress (dest, destLen, source, sourceLen) - Bytef *dest; - uLongf *destLen; - const Bytef *source; - uLong sourceLen; -{ - return compress2(dest, destLen, source, sourceLen, Z_DEFAULT_COMPRESSION); -} diff --git a/src/zlib/configure b/src/zlib/configure deleted file mode 100644 index d188e6f02d..0000000000 --- a/src/zlib/configure +++ /dev/null @@ -1,163 +0,0 @@ -#!/bin/sh -# configure script for zlib. This script is needed only if -# you wish to build a shared library and your system supports them, -# of if you need special compiler, flags or install directory. -# Otherwise, you can just use directly "make test; make install" -# -# To create a shared library, use "configure --shared"; by default a static -# library is created. If the primitive shared library support provided here -# does not work, use ftp://prep.ai.mit.edu/pub/gnu/libtool-*.tar.gz -# -# To impose specific compiler or flags or install directory, use for example: -# prefix=$HOME CC=cc CFLAGS="-O4" ./configure -# or for csh/tcsh users: -# (setenv prefix $HOME; setenv CC cc; setenv CFLAGS "-O4"; ./configure) -# LDSHARED is the command to be used to create a shared library - -# Incorrect settings of CC or CFLAGS may prevent creating a shared library. -# If you have problems, try without defining CC and CFLAGS before reporting -# an error. - -LIBS=libz.a -SHAREDLIB=libz.so -VER=`sed -n -e '/VERSION "/s/.*"\(.*\)".*/\1/p' < zlib.h` -AR=${AR-"ar rc"} -RANLIB=${RANLIB-"ranlib"} -prefix=${prefix-/usr/local} -shared_ext='.so' -shared=0 -gcc=0 -old_cc="$CC" -old_cflags="$CFLAGS" - -case "$1" in - -h* | --h*) echo 'syntax: configure [ --shared ] [--prefix PREFIX]'; exit 0;; - -p*=* | --p*=*) prefix=`echo $1 | sed 's/[-a-z_]*=//'`; shift;; - -p* | --p*) prefix="$2"; shift; shift;; - -s* | --s*) shared=1; shift;; -esac - -test=ztest$$ -cat > $test.c </dev/null; then - CC="$cc" - SFLAGS=${CFLAGS-"-fPIC -O3"} - CFLAGS="$cflags" - case `(uname -s || echo unknown) 2>/dev/null` in - Linux | linux) LDSHARED=${LDSHARED-"gcc -shared -Wl,-soname,libz.so.1"};; - *) LDSHARED=${LDSHARED-"gcc -shared"};; - esac -else - # find system name and corresponding cc options - CC=${CC-cc} - case `(uname -sr || echo unknown) 2>/dev/null` in - HP-UX*) SFLAGS=${CFLAGS-"-O +z"} - CFLAGS=${CFLAGS-"-O"} -# LDSHARED=${LDSHARED-"ld -b +vnocompatwarnings"} - LDSHARED=${LDSHARED-"ld -b"} - shared_ext='.sl' - SHAREDLIB='libz.sl';; - IRIX*) SFLAGS=${CFLAGS-"-ansi -O2 -rpath ."} - CFLAGS=${CFLAGS-"-ansi -O2"} - LDSHARED=${LDSHARED-"cc -shared"};; - OSF1) SFLAGS=${CFLAGS-"-O -std1"} - CFLAGS=${CFLAGS-"-O -std1"} - LDSHARED=${LDSHARED-"cc -shared"};; - QNX*) SFLAGS=${CFLAGS-"-4 -O"} - CFLAGS=${CFLAGS-"-4 -O"} - LDSHARED=${LDSHARED-"cc"} - RANLIB=${RANLIB-"true"} - AR="cc -A";; - SCO_SV\ 3.2*) SFLAGS=${CFLAGS-"-O3 -dy -KPIC "} - CFLAGS=${CFLAGS-"-O3"} - LDSHARED=${LDSHARED-"cc -dy -KPIC -G"};; - SunOS\ 5*) SFLAGS=${CFLAGS-"-fast -xcg89 -KPIC -R."} - CFLAGS=${CFLAGS-"-fast -xcg89"} - LDSHARED=${LDSHARED-"cc -G"};; - SunOS\ 4*) SFLAGS=${CFLAGS-"-O2 -PIC"} - CFLAGS=${CFLAGS-"-O2"} - LDSHARED=${LDSHARED-"ld"};; - UNIX_System_V\ 4.2.0) - SFLAGS=${CFLAGS-"-KPIC -O"} - CFLAGS=${CFLAGS-"-O"} - LDSHARED=${LDSHARED-"cc -G"};; - UNIX_SV\ 4.2MP) - SFLAGS=${CFLAGS-"-Kconform_pic -O"} - CFLAGS=${CFLAGS-"-O"} - LDSHARED=${LDSHARED-"cc -G"};; - # send working options for other systems to support@gzip.org - *) SFLAGS=${CFLAGS-"-O"} - CFLAGS=${CFLAGS-"-O"} - LDSHARED=${LDSHARED-"cc -shared"};; - esac -fi - -if test $shared -eq 1; then - echo Checking for shared library support... - # we must test in two steps (cc then ld), required at least on SunOS 4.x - if test "`($CC -c $SFLAGS $test.c) 2>&1`" = "" && - test "`($LDSHARED -o $test$shared_ext $test.o) 2>&1`" = ""; then - CFLAGS="$SFLAGS" - LIBS="$SHAREDLIB.$VER" - echo Building shared library $SHAREDLIB.$VER with $CC. - elif test -z "$old_cc" -a -z "$old_cflags"; then - echo No shared library suppport. - shared=0; - else - echo 'No shared library suppport; try without defining CC and CFLAGS' - shared=0; - fi -fi -if test $shared -eq 0; then - LDSHARED="$CC" - echo Building static library $LIBS version $VER with $CC. -fi - -if test -f /usr/include/unistd.h; then - CFLAGS="$CFLAGS -DHAVE_UNISTD_H" -fi - -if test ! -f /usr/include/errno.h; then - CFLAGS="$CFLAGS -DNO_ERRNO_H" -fi - -cat > $test.c < -#include -#include -caddr_t hello() { - return mmap((caddr_t)0, (off_t)0, PROT_READ, MAP_SHARED, 0, (off_t)0); -} -EOF -if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then - CFLAGS="$CFLAGS -DUSE_MMAP" - echo Checking for mmap support... Yes. -else - echo Checking for mmap support... No. -fi - -rm -f $test.[co] $test$shared_ext - -# udpate Makefile -sed < Makefile.in " -/^CC *=/s%=.*%=$CC% -/^CFLAGS *=/s%=.*%=$CFLAGS% -/^LDSHARED *=/s%=.*%=$LDSHARED% -/^LIBS *=/s%=.*%=$LIBS% -/^SHAREDLIB *=/s%=.*%=$SHAREDLIB% -/^AR *=/s%=.*%=$AR% -/^RANLIB *=/s%=.*%=$RANLIB% -/^VER *=/s%=.*%=$VER% -/^prefix *=/s%=.*%=$prefix% -" > Makefile diff --git a/src/zlib/crc32.c b/src/zlib/crc32.c deleted file mode 100644 index 52d9cb1f44..0000000000 --- a/src/zlib/crc32.c +++ /dev/null @@ -1,162 +0,0 @@ -/* crc32.c -- compute the CRC-32 of a data stream - * Copyright (C) 1995-1998 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* @(#) $Id$ */ - -#include "../zlib/zlib.h" - -#define local static - -#ifdef DYNAMIC_CRC_TABLE - -local int crc_table_empty = 1; -local uLongf crc_table[256]; -local void make_crc_table OF((void)); - -/* - Generate a table for a byte-wise 32-bit CRC calculation on the polynomial: - x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x+1. - - Polynomials over GF(2) are represented in binary, one bit per coefficient, - with the lowest powers in the most significant bit. Then adding polynomials - is just exclusive-or, and multiplying a polynomial by x is a right shift by - one. If we call the above polynomial p, and represent a byte as the - polynomial q, also with the lowest power in the most significant bit (so the - byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p, - where a mod b means the remainder after dividing a by b. - - This calculation is done using the shift-register method of multiplying and - taking the remainder. The register is initialized to zero, and for each - incoming bit, x^32 is added mod p to the register if the bit is a one (where - x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by - x (which is shifting right by one and adding x^32 mod p if the bit shifted - out is a one). We start with the highest power (least significant bit) of - q and repeat for all eight bits of q. - - The table is simply the CRC of all possible eight bit values. This is all - the information needed to generate CRC's on data a byte at a time for all - combinations of CRC register values and incoming bytes. -*/ -local void make_crc_table() -{ - uLong c; - int n, k; - uLong poly; /* polynomial exclusive-or pattern */ - /* terms of polynomial defining this crc (except x^32): */ - static const Byte p[] = {0,1,2,4,5,7,8,10,11,12,16,22,23,26}; - - /* make exclusive-or pattern from polynomial (0xedb88320L) */ - poly = 0L; - for (n = 0; n < sizeof(p)/sizeof(Byte); n++) - poly |= 1L << (31 - p[n]); - - for (n = 0; n < 256; n++) - { - c = (uLong)n; - for (k = 0; k < 8; k++) - c = c & 1 ? poly ^ (c >> 1) : c >> 1; - crc_table[n] = c; - } - crc_table_empty = 0; -} -#else -/* ======================================================================== - * Table of CRC-32's of all single-byte values (made by make_crc_table) - */ -local const uLongf crc_table[256] = { - 0x00000000L, 0x77073096L, 0xee0e612cL, 0x990951baL, 0x076dc419L, - 0x706af48fL, 0xe963a535L, 0x9e6495a3L, 0x0edb8832L, 0x79dcb8a4L, - 0xe0d5e91eL, 0x97d2d988L, 0x09b64c2bL, 0x7eb17cbdL, 0xe7b82d07L, - 0x90bf1d91L, 0x1db71064L, 0x6ab020f2L, 0xf3b97148L, 0x84be41deL, - 0x1adad47dL, 0x6ddde4ebL, 0xf4d4b551L, 0x83d385c7L, 0x136c9856L, - 0x646ba8c0L, 0xfd62f97aL, 0x8a65c9ecL, 0x14015c4fL, 0x63066cd9L, - 0xfa0f3d63L, 0x8d080df5L, 0x3b6e20c8L, 0x4c69105eL, 0xd56041e4L, - 0xa2677172L, 0x3c03e4d1L, 0x4b04d447L, 0xd20d85fdL, 0xa50ab56bL, - 0x35b5a8faL, 0x42b2986cL, 0xdbbbc9d6L, 0xacbcf940L, 0x32d86ce3L, - 0x45df5c75L, 0xdcd60dcfL, 0xabd13d59L, 0x26d930acL, 0x51de003aL, - 0xc8d75180L, 0xbfd06116L, 0x21b4f4b5L, 0x56b3c423L, 0xcfba9599L, - 0xb8bda50fL, 0x2802b89eL, 0x5f058808L, 0xc60cd9b2L, 0xb10be924L, - 0x2f6f7c87L, 0x58684c11L, 0xc1611dabL, 0xb6662d3dL, 0x76dc4190L, - 0x01db7106L, 0x98d220bcL, 0xefd5102aL, 0x71b18589L, 0x06b6b51fL, - 0x9fbfe4a5L, 0xe8b8d433L, 0x7807c9a2L, 0x0f00f934L, 0x9609a88eL, - 0xe10e9818L, 0x7f6a0dbbL, 0x086d3d2dL, 0x91646c97L, 0xe6635c01L, - 0x6b6b51f4L, 0x1c6c6162L, 0x856530d8L, 0xf262004eL, 0x6c0695edL, - 0x1b01a57bL, 0x8208f4c1L, 0xf50fc457L, 0x65b0d9c6L, 0x12b7e950L, - 0x8bbeb8eaL, 0xfcb9887cL, 0x62dd1ddfL, 0x15da2d49L, 0x8cd37cf3L, - 0xfbd44c65L, 0x4db26158L, 0x3ab551ceL, 0xa3bc0074L, 0xd4bb30e2L, - 0x4adfa541L, 0x3dd895d7L, 0xa4d1c46dL, 0xd3d6f4fbL, 0x4369e96aL, - 0x346ed9fcL, 0xad678846L, 0xda60b8d0L, 0x44042d73L, 0x33031de5L, - 0xaa0a4c5fL, 0xdd0d7cc9L, 0x5005713cL, 0x270241aaL, 0xbe0b1010L, - 0xc90c2086L, 0x5768b525L, 0x206f85b3L, 0xb966d409L, 0xce61e49fL, - 0x5edef90eL, 0x29d9c998L, 0xb0d09822L, 0xc7d7a8b4L, 0x59b33d17L, - 0x2eb40d81L, 0xb7bd5c3bL, 0xc0ba6cadL, 0xedb88320L, 0x9abfb3b6L, - 0x03b6e20cL, 0x74b1d29aL, 0xead54739L, 0x9dd277afL, 0x04db2615L, - 0x73dc1683L, 0xe3630b12L, 0x94643b84L, 0x0d6d6a3eL, 0x7a6a5aa8L, - 0xe40ecf0bL, 0x9309ff9dL, 0x0a00ae27L, 0x7d079eb1L, 0xf00f9344L, - 0x8708a3d2L, 0x1e01f268L, 0x6906c2feL, 0xf762575dL, 0x806567cbL, - 0x196c3671L, 0x6e6b06e7L, 0xfed41b76L, 0x89d32be0L, 0x10da7a5aL, - 0x67dd4accL, 0xf9b9df6fL, 0x8ebeeff9L, 0x17b7be43L, 0x60b08ed5L, - 0xd6d6a3e8L, 0xa1d1937eL, 0x38d8c2c4L, 0x4fdff252L, 0xd1bb67f1L, - 0xa6bc5767L, 0x3fb506ddL, 0x48b2364bL, 0xd80d2bdaL, 0xaf0a1b4cL, - 0x36034af6L, 0x41047a60L, 0xdf60efc3L, 0xa867df55L, 0x316e8eefL, - 0x4669be79L, 0xcb61b38cL, 0xbc66831aL, 0x256fd2a0L, 0x5268e236L, - 0xcc0c7795L, 0xbb0b4703L, 0x220216b9L, 0x5505262fL, 0xc5ba3bbeL, - 0xb2bd0b28L, 0x2bb45a92L, 0x5cb36a04L, 0xc2d7ffa7L, 0xb5d0cf31L, - 0x2cd99e8bL, 0x5bdeae1dL, 0x9b64c2b0L, 0xec63f226L, 0x756aa39cL, - 0x026d930aL, 0x9c0906a9L, 0xeb0e363fL, 0x72076785L, 0x05005713L, - 0x95bf4a82L, 0xe2b87a14L, 0x7bb12baeL, 0x0cb61b38L, 0x92d28e9bL, - 0xe5d5be0dL, 0x7cdcefb7L, 0x0bdbdf21L, 0x86d3d2d4L, 0xf1d4e242L, - 0x68ddb3f8L, 0x1fda836eL, 0x81be16cdL, 0xf6b9265bL, 0x6fb077e1L, - 0x18b74777L, 0x88085ae6L, 0xff0f6a70L, 0x66063bcaL, 0x11010b5cL, - 0x8f659effL, 0xf862ae69L, 0x616bffd3L, 0x166ccf45L, 0xa00ae278L, - 0xd70dd2eeL, 0x4e048354L, 0x3903b3c2L, 0xa7672661L, 0xd06016f7L, - 0x4969474dL, 0x3e6e77dbL, 0xaed16a4aL, 0xd9d65adcL, 0x40df0b66L, - 0x37d83bf0L, 0xa9bcae53L, 0xdebb9ec5L, 0x47b2cf7fL, 0x30b5ffe9L, - 0xbdbdf21cL, 0xcabac28aL, 0x53b39330L, 0x24b4a3a6L, 0xbad03605L, - 0xcdd70693L, 0x54de5729L, 0x23d967bfL, 0xb3667a2eL, 0xc4614ab8L, - 0x5d681b02L, 0x2a6f2b94L, 0xb40bbe37L, 0xc30c8ea1L, 0x5a05df1bL, - 0x2d02ef8dL -}; -#endif - -/* ========================================================================= - * This function can be used by asm versions of crc32() - */ -const uLongf * ZEXPORT get_crc_table() -{ -#ifdef DYNAMIC_CRC_TABLE - if (crc_table_empty) make_crc_table(); -#endif - return (const uLongf *)crc_table; -} - -/* ========================================================================= */ -#define DO1(buf) crc = crc_table[((int)crc ^ (*buf++)) & 0xff] ^ (crc >> 8); -#define DO2(buf) DO1(buf); DO1(buf); -#define DO4(buf) DO2(buf); DO2(buf); -#define DO8(buf) DO4(buf); DO4(buf); - -/* ========================================================================= */ -uLong ZEXPORT crc32(crc, buf, len) - uLong crc; - const Bytef *buf; - uInt len; -{ - if (buf == Z_NULL) return 0L; -#ifdef DYNAMIC_CRC_TABLE - if (crc_table_empty) - make_crc_table(); -#endif - crc = crc ^ 0xffffffffL; - while (len >= 8) - { - DO8(buf); - len -= 8; - } - if (len) do { - DO1(buf); - } while (--len); - return crc ^ 0xffffffffL; -} diff --git a/src/zlib/deflate.c b/src/zlib/deflate.c deleted file mode 100644 index 7fb81af14e..0000000000 --- a/src/zlib/deflate.c +++ /dev/null @@ -1,1348 +0,0 @@ -/* deflate.c -- compress data using the deflation algorithm - * Copyright (C) 1995-1998 Jean-loup Gailly. - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* - * ALGORITHM - * - * The "deflation" process depends on being able to identify portions - * of the input text which are identical to earlier input (within a - * sliding window trailing behind the input currently being processed). - * - * The most straightforward technique turns out to be the fastest for - * most input files: try all possible matches and select the longest. - * The key feature of this algorithm is that insertions into the string - * dictionary are very simple and thus fast, and deletions are avoided - * completely. Insertions are performed at each input character, whereas - * string matches are performed only when the previous match ends. So it - * is preferable to spend more time in matches to allow very fast string - * insertions and avoid deletions. The matching algorithm for small - * strings is inspired from that of Rabin & Karp. A brute force approach - * is used to find longer strings when a small match has been found. - * A similar algorithm is used in comic (by Jan-Mark Wams) and freeze - * (by Leonid Broukhis). - * A previous version of this file used a more sophisticated algorithm - * (by Fiala and Greene) which is guaranteed to run in linear amortized - * time, but has a larger average cost, uses more memory and is patented. - * However the F&G algorithm may be faster for some highly redundant - * files if the parameter max_chain_length (described below) is too large. - * - * ACKNOWLEDGEMENTS - * - * The idea of lazy evaluation of matches is due to Jan-Mark Wams, and - * I found it in 'freeze' written by Leonid Broukhis. - * Thanks to many people for bug reports and testing. - * - * REFERENCES - * - * Deutsch, L.P.,"DEFLATE Compressed Data Format Specification". - * Available in ftp://ds.internic.net/rfc/rfc1951.txt - * - * A description of the Rabin and Karp algorithm is given in the book - * "Algorithms" by R. Sedgewick, Addison-Wesley, p252. - * - * Fiala,E.R., and Greene,D.H. - * Data Compression with Finite Windows, Comm.ACM, 32,4 (1989) 490-595 - * - */ - -/* @(#) $Id$ */ - -#include "deflate.h" - -const char deflate_copyright[] = - " deflate 1.1.2 Copyright 1995-1998 Jean-loup Gailly "; -/* - If you use the zlib library in a product, an acknowledgment is welcome - in the documentation of your product. If for some reason you cannot - include such an acknowledgment, I would appreciate that you keep this - copyright string in the executable of your product. - */ - -/* =========================================================================== - * Function prototypes. - */ -typedef enum { - need_more, /* block not completed, need more input or more output */ - block_done, /* block flush performed */ - finish_started, /* finish started, need only more output at next deflate */ - finish_done /* finish done, accept no more input or output */ -} block_state; - -typedef block_state (*compress_func) OF((deflate_state *s, int flush)); -/* Compression function. Returns the block state after the call. */ - -local void fill_window OF((deflate_state *s)); -local block_state deflate_stored OF((deflate_state *s, int flush)); -local block_state deflate_fast OF((deflate_state *s, int flush)); -local block_state deflate_slow OF((deflate_state *s, int flush)); -local void lm_init OF((deflate_state *s)); -local void putShortMSB OF((deflate_state *s, uInt b)); -local void flush_pending OF((z_streamp strm)); -local int read_buf OF((z_streamp strm, Bytef *buf, unsigned size)); -#ifdef ASMV - void match_init OF((void)); /* asm code initialization */ - uInt longest_match OF((deflate_state *s, IPos cur_match)); -#else -local uInt longest_match OF((deflate_state *s, IPos cur_match)); -#endif - -#ifdef __WXDEBUG__ -local void check_match OF((deflate_state *s, IPos start, IPos match, - int length)); -#endif - -/* =========================================================================== - * Local data - */ - -#define NIL 0 -/* Tail of hash chains */ - -#ifndef TOO_FAR -# define TOO_FAR 4096 -#endif -/* Matches of length 3 are discarded if their distance exceeds TOO_FAR */ - -#define MIN_LOOKAHEAD (MAX_MATCH+MIN_MATCH+1) -/* Minimum amount of lookahead, except at the end of the input file. - * See deflate.c for comments about the MIN_MATCH+1. - */ - -/* Values for max_lazy_match, good_match and max_chain_length, depending on - * the desired pack level (0..9). The values given below have been tuned to - * exclude worst case performance for pathological files. Better values may be - * found for specific files. - */ -typedef struct config_s { - ush good_length; /* reduce lazy search above this match length */ - ush max_lazy; /* do not perform lazy search above this match length */ - ush nice_length; /* quit search above this match length */ - ush max_chain; - compress_func func; -} config; - -local const config configuration_table[10] = { -/* good lazy nice chain */ -/* 0 */ {0, 0, 0, 0, deflate_stored}, /* store only */ -/* 1 */ {4, 4, 8, 4, deflate_fast}, /* maximum speed, no lazy matches */ -/* 2 */ {4, 5, 16, 8, deflate_fast}, -/* 3 */ {4, 6, 32, 32, deflate_fast}, - -/* 4 */ {4, 4, 16, 16, deflate_slow}, /* lazy matches */ -/* 5 */ {8, 16, 32, 32, deflate_slow}, -/* 6 */ {8, 16, 128, 128, deflate_slow}, -/* 7 */ {8, 32, 128, 256, deflate_slow}, -/* 8 */ {32, 128, 258, 1024, deflate_slow}, -/* 9 */ {32, 258, 258, 4096, deflate_slow}}; /* maximum compression */ - -/* Note: the deflate() code requires max_lazy >= MIN_MATCH and max_chain >= 4 - * For deflate_fast() (levels <= 3) good is ignored and lazy has a different - * meaning. - */ - -#define EQUAL 0 -/* result of memcmp for equal strings */ - -struct static_tree_desc_s {int dummy;}; /* for buggy compilers */ - -/* =========================================================================== - * Update a hash value with the given input byte - * IN assertion: all calls to to UPDATE_HASH are made with consecutive - * input characters, so that a running hash key can be computed from the - * previous key instead of complete recalculation each time. - */ -#define UPDATE_HASH(s,h,c) (h = (((h)<hash_shift) ^ (c)) & s->hash_mask) - - -/* =========================================================================== - * Insert string str in the dictionary and set match_head to the previous head - * of the hash chain (the most recent string with same hash key). Return - * the previous length of the hash chain. - * If this file is compiled with -DFASTEST, the compression level is forced - * to 1, and no hash chains are maintained. - * IN assertion: all calls to to INSERT_STRING are made with consecutive - * input characters and the first MIN_MATCH bytes of str are valid - * (except for the last MIN_MATCH-1 bytes of the input file). - */ -#ifdef FASTEST -#define INSERT_STRING(s, str, match_head) \ - (UPDATE_HASH(s, s->ins_h, s->window[(str) + (MIN_MATCH-1)]), \ - match_head = s->head[s->ins_h], \ - s->head[s->ins_h] = (Pos)(str)) -#else -#define INSERT_STRING(s, str, match_head) \ - (UPDATE_HASH(s, s->ins_h, s->window[(str) + (MIN_MATCH-1)]), \ - s->prev[(str) & s->w_mask] = match_head = s->head[s->ins_h], \ - s->head[s->ins_h] = (Pos)(str)) -#endif - -/* =========================================================================== - * Initialize the hash table (avoiding 64K overflow for 16 bit systems). - * prev[] will be initialized on the fly. - */ -#define CLEAR_HASH(s) \ - s->head[s->hash_size-1] = NIL; \ - zmemzero((Bytef *)s->head, (unsigned)(s->hash_size-1)*sizeof(*s->head)); - -/* ========================================================================= */ -int ZEXPORT deflateInit_(strm, level, version, stream_size) - z_streamp strm; - int level; - const char *version; - int stream_size; -{ - return deflateInit2_(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, - Z_DEFAULT_STRATEGY, version, stream_size); - /* To do: ignore strm->next_in if we use it as window */ -} - -/* ========================================================================= */ -int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy, - version, stream_size) - z_streamp strm; - int level; - int method; - int windowBits; - int memLevel; - int strategy; - const char *version; - int stream_size; -{ - deflate_state *s; - int noheader = 0; - static const char* my_version = ZLIB_VERSION; - - ushf *overlay; - /* We overlay pending_buf and d_buf+l_buf. This works since the average - * output size for (length,distance) codes is <= 24 bits. - */ - - if (version == Z_NULL || version[0] != my_version[0] || - stream_size != sizeof(z_stream)) { - return Z_VERSION_ERROR; - } - if (strm == Z_NULL) return Z_STREAM_ERROR; - - strm->msg = Z_NULL; - if (strm->zalloc == Z_NULL) { - strm->zalloc = zcalloc; - strm->opaque = (voidpf)0; - } - if (strm->zfree == Z_NULL) strm->zfree = zcfree; - - if (level == Z_DEFAULT_COMPRESSION) level = 6; -#ifdef FASTEST - level = 1; -#endif - - if (windowBits < 0) { /* undocumented feature: suppress zlib header */ - noheader = 1; - windowBits = -windowBits; - } - if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method != Z_DEFLATED || - windowBits < 8 || windowBits > 15 || level < 0 || level > 9 || - strategy < 0 || strategy > Z_HUFFMAN_ONLY) { - return Z_STREAM_ERROR; - } - s = (deflate_state *) ZALLOC(strm, 1, sizeof(deflate_state)); - if (s == Z_NULL) return Z_MEM_ERROR; - strm->state = (struct internal_state FAR *)s; - s->strm = strm; - - s->noheader = noheader; - s->w_bits = windowBits; - s->w_size = 1 << s->w_bits; - s->w_mask = s->w_size - 1; - - s->hash_bits = memLevel + 7; - s->hash_size = 1 << s->hash_bits; - s->hash_mask = s->hash_size - 1; - s->hash_shift = ((s->hash_bits+MIN_MATCH-1)/MIN_MATCH); - - s->window = (Bytef *) ZALLOC(strm, s->w_size, 2*sizeof(Byte)); - s->prev = (Posf *) ZALLOC(strm, s->w_size, sizeof(Pos)); - s->head = (Posf *) ZALLOC(strm, s->hash_size, sizeof(Pos)); - - s->lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */ - - overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2); - s->pending_buf = (uchf *) overlay; - s->pending_buf_size = (ulg)s->lit_bufsize * (sizeof(ush)+2L); - - if (s->window == Z_NULL || s->prev == Z_NULL || s->head == Z_NULL || - s->pending_buf == Z_NULL) { - strm->msg = (char*)ERR_MSG(Z_MEM_ERROR); - deflateEnd (strm); - return Z_MEM_ERROR; - } - s->d_buf = overlay + s->lit_bufsize/sizeof(ush); - s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize; - - s->level = level; - s->strategy = strategy; - s->method = (Byte)method; - - return deflateReset(strm); -} - -/* ========================================================================= */ -int ZEXPORT deflateSetDictionary (strm, dictionary, dictLength) - z_streamp strm; - const Bytef *dictionary; - uInt dictLength; -{ - deflate_state *s; - uInt length = dictLength; - uInt n; - IPos hash_head = 0; - - if (strm == Z_NULL || strm->state == Z_NULL || dictionary == Z_NULL || - strm->state->status != INIT_STATE) return Z_STREAM_ERROR; - - s = strm->state; - strm->adler = adler32(strm->adler, dictionary, dictLength); - - if (length < MIN_MATCH) return Z_OK; - if (length > MAX_DIST(s)) { - length = MAX_DIST(s); -#ifndef USE_DICT_HEAD - dictionary += dictLength - length; /* use the tail of the dictionary */ -#endif - } - zmemcpy(s->window, dictionary, length); - s->strstart = length; - s->block_start = (long)length; - - /* Insert all strings in the hash table (except for the last two bytes). - * s->lookahead stays null, so s->ins_h will be recomputed at the next - * call of fill_window. - */ - s->ins_h = s->window[0]; - UPDATE_HASH(s, s->ins_h, s->window[1]); - for (n = 0; n <= length - MIN_MATCH; n++) { - INSERT_STRING(s, n, hash_head); - } - if (hash_head) hash_head = 0; /* to make compiler happy */ - return Z_OK; -} - -/* ========================================================================= */ -int ZEXPORT deflateReset (strm) - z_streamp strm; -{ - deflate_state *s; - - if (strm == Z_NULL || strm->state == Z_NULL || - strm->zalloc == Z_NULL || strm->zfree == Z_NULL) return Z_STREAM_ERROR; - - strm->total_in = strm->total_out = 0; - strm->msg = Z_NULL; /* use zfree if we ever allocate msg dynamically */ - strm->data_type = Z_UNKNOWN; - - s = (deflate_state *)strm->state; - s->pending = 0; - s->pending_out = s->pending_buf; - - if (s->noheader < 0) { - s->noheader = 0; /* was set to -1 by deflate(..., Z_FINISH); */ - } - s->status = s->noheader ? BUSY_STATE : INIT_STATE; - strm->adler = 1; - s->last_flush = Z_NO_FLUSH; - - _tr_init(s); - lm_init(s); - - return Z_OK; -} - -/* ========================================================================= */ -int ZEXPORT deflateParams(strm, level, strategy) - z_streamp strm; - int level; - int strategy; -{ - deflate_state *s; - compress_func func; - int err = Z_OK; - - if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; - s = strm->state; - - if (level == Z_DEFAULT_COMPRESSION) { - level = 6; - } - if (level < 0 || level > 9 || strategy < 0 || strategy > Z_HUFFMAN_ONLY) { - return Z_STREAM_ERROR; - } - func = configuration_table[s->level].func; - - if (func != configuration_table[level].func && strm->total_in != 0) { - /* Flush the last buffer: */ - err = deflate(strm, Z_PARTIAL_FLUSH); - } - if (s->level != level) { - s->level = level; - s->max_lazy_match = configuration_table[level].max_lazy; - s->good_match = configuration_table[level].good_length; - s->nice_match = configuration_table[level].nice_length; - s->max_chain_length = configuration_table[level].max_chain; - } - s->strategy = strategy; - return err; -} - -/* ========================================================================= - * Put a short in the pending buffer. The 16-bit value is put in MSB order. - * IN assertion: the stream state is correct and there is enough room in - * pending_buf. - */ -local void putShortMSB (s, b) - deflate_state *s; - uInt b; -{ - put_byte(s, (Byte)(b >> 8)); - put_byte(s, (Byte)(b & 0xff)); -} - -/* ========================================================================= - * Flush as much pending output as possible. All deflate() output goes - * through this function so some applications may wish to modify it - * to avoid allocating a large strm->next_out buffer and copying into it. - * (See also read_buf()). - */ -local void flush_pending(strm) - z_streamp strm; -{ - unsigned len = strm->state->pending; - - if (len > strm->avail_out) len = strm->avail_out; - if (len == 0) return; - - zmemcpy(strm->next_out, strm->state->pending_out, len); - strm->next_out += len; - strm->state->pending_out += len; - strm->total_out += len; - strm->avail_out -= len; - strm->state->pending -= len; - if (strm->state->pending == 0) { - strm->state->pending_out = strm->state->pending_buf; - } -} - -/* ========================================================================= */ -int ZEXPORT deflate (strm, flush) - z_streamp strm; - int flush; -{ - int old_flush; /* value of flush param for previous deflate call */ - deflate_state *s; - - if (strm == Z_NULL || strm->state == Z_NULL || - flush > Z_FINISH || flush < 0) { - return Z_STREAM_ERROR; - } - s = strm->state; - - if (strm->next_out == Z_NULL || - (strm->next_in == Z_NULL && strm->avail_in != 0) || - (s->status == FINISH_STATE && flush != Z_FINISH)) { - ERR_RETURN(strm, Z_STREAM_ERROR); - } - if (strm->avail_out == 0) ERR_RETURN(strm, Z_BUF_ERROR); - - s->strm = strm; /* just in case */ - old_flush = s->last_flush; - s->last_flush = flush; - - /* Write the zlib header */ - if (s->status == INIT_STATE) { - - uInt header = (Z_DEFLATED + ((s->w_bits-8)<<4)) << 8; - uInt level_flags = (s->level-1) >> 1; - - if (level_flags > 3) level_flags = 3; - header |= (level_flags << 6); - if (s->strstart != 0) header |= PRESET_DICT; - header += 31 - (header % 31); - - s->status = BUSY_STATE; - putShortMSB(s, header); - - /* Save the adler32 of the preset dictionary: */ - if (s->strstart != 0) { - putShortMSB(s, (uInt)(strm->adler >> 16)); - putShortMSB(s, (uInt)(strm->adler & 0xffff)); - } - strm->adler = 1L; - } - - /* Flush as much pending output as possible */ - if (s->pending != 0) { - flush_pending(strm); - if (strm->avail_out == 0) { - /* Since avail_out is 0, deflate will be called again with - * more output space, but possibly with both pending and - * avail_in equal to zero. There won't be anything to do, - * but this is not an error situation so make sure we - * return OK instead of BUF_ERROR at next call of deflate: - */ - s->last_flush = -1; - return Z_OK; - } - - /* Make sure there is something to do and avoid duplicate consecutive - * flushes. For repeated and useless calls with Z_FINISH, we keep - * returning Z_STREAM_END instead of Z_BUFF_ERROR. - */ - } else if (strm->avail_in == 0 && flush <= old_flush && - flush != Z_FINISH) { - ERR_RETURN(strm, Z_BUF_ERROR); - } - - /* User must not provide more input after the first FINISH: */ - if (s->status == FINISH_STATE && strm->avail_in != 0) { - ERR_RETURN(strm, Z_BUF_ERROR); - } - - /* Start a new block or continue the current one. - */ - if (strm->avail_in != 0 || s->lookahead != 0 || - (flush != Z_NO_FLUSH && s->status != FINISH_STATE)) { - block_state bstate; - - bstate = (*(configuration_table[s->level].func))(s, flush); - - if (bstate == finish_started || bstate == finish_done) { - s->status = FINISH_STATE; - } - if (bstate == need_more || bstate == finish_started) { - if (strm->avail_out == 0) { - s->last_flush = -1; /* avoid BUF_ERROR next call, see above */ - } - return Z_OK; - /* If flush != Z_NO_FLUSH && avail_out == 0, the next call - * of deflate should use the same flush parameter to make sure - * that the flush is complete. So we don't have to output an - * empty block here, this will be done at next call. This also - * ensures that for a very small output buffer, we emit at most - * one empty block. - */ - } - if (bstate == block_done) { - if (flush == Z_PARTIAL_FLUSH) { - _tr_align(s); - } else { /* FULL_FLUSH or SYNC_FLUSH */ - _tr_stored_block(s, (char*)0, 0L, 0); - /* For a full flush, this empty block will be recognized - * as a special marker by inflate_sync(). - */ - if (flush == Z_FULL_FLUSH) { - CLEAR_HASH(s); /* forget history */ - } - } - flush_pending(strm); - if (strm->avail_out == 0) { - s->last_flush = -1; /* avoid BUF_ERROR at next call, see above */ - return Z_OK; - } - } - } - Assert(strm->avail_out > 0, "bug2"); - - if (flush != Z_FINISH) return Z_OK; - if (s->noheader) return Z_STREAM_END; - - /* Write the zlib trailer (adler32) */ - putShortMSB(s, (uInt)(strm->adler >> 16)); - putShortMSB(s, (uInt)(strm->adler & 0xffff)); - flush_pending(strm); - /* If avail_out is zero, the application will call deflate again - * to flush the rest. - */ - s->noheader = -1; /* write the trailer only once! */ - return s->pending != 0 ? Z_OK : Z_STREAM_END; -} - -/* ========================================================================= */ -int ZEXPORT deflateEnd (strm) - z_streamp strm; -{ - int status; - - if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR; - - status = strm->state->status; - if (status != INIT_STATE && status != BUSY_STATE && - status != FINISH_STATE) { - return Z_STREAM_ERROR; - } - - /* Deallocate in reverse order of allocations: */ - TRY_FREE(strm, strm->state->pending_buf); - TRY_FREE(strm, strm->state->head); - TRY_FREE(strm, strm->state->prev); - TRY_FREE(strm, strm->state->window); - - ZFREE(strm, strm->state); - strm->state = Z_NULL; - - return status == BUSY_STATE ? Z_DATA_ERROR : Z_OK; -} - -/* ========================================================================= - * Copy the source state to the destination state. - * To simplify the source, this is not supported for 16-bit MSDOS (which - * doesn't have enough memory anyway to duplicate compression states). - */ -int ZEXPORT deflateCopy (dest, source) - z_streamp dest; - z_streamp source; -{ -#ifdef MAXSEG_64K - return Z_STREAM_ERROR; -#else - deflate_state *ds; - deflate_state *ss; - ushf *overlay; - - ss = source->state; - - if (source == Z_NULL || dest == Z_NULL || ss == Z_NULL) { - return Z_STREAM_ERROR; - } - *dest = *source; - - ds = (deflate_state *) ZALLOC(dest, 1, sizeof(deflate_state)); - if (ds == Z_NULL) return Z_MEM_ERROR; - dest->state = (struct internal_state FAR *) ds; - *ds = *ss; - ds->strm = dest; - - ds->window = (Bytef *) ZALLOC(dest, ds->w_size, 2*sizeof(Byte)); - ds->prev = (Posf *) ZALLOC(dest, ds->w_size, sizeof(Pos)); - ds->head = (Posf *) ZALLOC(dest, ds->hash_size, sizeof(Pos)); - overlay = (ushf *) ZALLOC(dest, ds->lit_bufsize, sizeof(ush)+2); - ds->pending_buf = (uchf *) overlay; - - if (ds->window == Z_NULL || ds->prev == Z_NULL || ds->head == Z_NULL || - ds->pending_buf == Z_NULL) { - deflateEnd (dest); - return Z_MEM_ERROR; - } - /* following zmemcpy do not work for 16-bit MSDOS */ - zmemcpy(ds->window, ss->window, ds->w_size * 2 * sizeof(Byte)); - zmemcpy(ds->prev, ss->prev, ds->w_size * sizeof(Pos)); - zmemcpy(ds->head, ss->head, ds->hash_size * sizeof(Pos)); - zmemcpy(ds->pending_buf, ss->pending_buf, (uInt)ds->pending_buf_size); - - ds->pending_out = ds->pending_buf + (ss->pending_out - ss->pending_buf); - ds->d_buf = overlay + ds->lit_bufsize/sizeof(ush); - ds->l_buf = ds->pending_buf + (1+sizeof(ush))*ds->lit_bufsize; - - ds->l_desc.dyn_tree = ds->dyn_ltree; - ds->d_desc.dyn_tree = ds->dyn_dtree; - ds->bl_desc.dyn_tree = ds->bl_tree; - - return Z_OK; -#endif -} - -/* =========================================================================== - * Read a new buffer from the current input stream, update the adler32 - * and total number of bytes read. All deflate() input goes through - * this function so some applications may wish to modify it to avoid - * allocating a large strm->next_in buffer and copying from it. - * (See also flush_pending()). - */ -local int read_buf(strm, buf, size) - z_streamp strm; - Bytef *buf; - unsigned size; -{ - unsigned len = strm->avail_in; - - if (len > size) len = size; - if (len == 0) return 0; - - strm->avail_in -= len; - - if (!strm->state->noheader) { - strm->adler = adler32(strm->adler, strm->next_in, len); - } - zmemcpy(buf, strm->next_in, len); - strm->next_in += len; - strm->total_in += len; - - return (int)len; -} - -/* =========================================================================== - * Initialize the "longest match" routines for a new zlib stream - */ -local void lm_init (s) - deflate_state *s; -{ - s->window_size = (ulg)2L*s->w_size; - - CLEAR_HASH(s); - - /* Set the default configuration parameters: - */ - s->max_lazy_match = configuration_table[s->level].max_lazy; - s->good_match = configuration_table[s->level].good_length; - s->nice_match = configuration_table[s->level].nice_length; - s->max_chain_length = configuration_table[s->level].max_chain; - - s->strstart = 0; - s->block_start = 0L; - s->lookahead = 0; - s->match_length = s->prev_length = MIN_MATCH-1; - s->match_available = 0; - s->ins_h = 0; -#ifdef ASMV - match_init(); /* initialize the asm code */ -#endif -} - -/* =========================================================================== - * Set match_start to the longest match starting at the given string and - * return its length. Matches shorter or equal to prev_length are discarded, - * in which case the result is equal to prev_length and match_start is - * garbage. - * IN assertions: cur_match is the head of the hash chain for the current - * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1 - * OUT assertion: the match length is not greater than s->lookahead. - */ -#ifndef ASMV -/* For 80x86 and 680x0, an optimized version will be provided in match.asm or - * match.S. The code will be functionally equivalent. - */ -#ifndef FASTEST -local uInt longest_match(s, cur_match) - deflate_state *s; - IPos cur_match; /* current match */ -{ - unsigned chain_length = s->max_chain_length;/* max hash chain length */ - register Bytef *scan = s->window + s->strstart; /* current string */ - register Bytef *match; /* matched string */ - register int len; /* length of current match */ - int best_len = s->prev_length; /* best match length so far */ - int nice_match = s->nice_match; /* stop if match long enough */ - IPos limit = s->strstart > (IPos)MAX_DIST(s) ? - s->strstart - (IPos)MAX_DIST(s) : NIL; - /* Stop when cur_match becomes <= limit. To simplify the code, - * we prevent matches with the string of window index 0. - */ - Posf *prev = s->prev; - uInt wmask = s->w_mask; - -#ifdef UNALIGNED_OK - /* Compare two bytes at a time. Note: this is not always beneficial. - * Try with and without -DUNALIGNED_OK to check. - */ - register Bytef *strend = s->window + s->strstart + MAX_MATCH - 1; - register ush scan_start = *(ushf*)scan; - register ush scan_end = *(ushf*)(scan+best_len-1); -#else - register Bytef *strend = s->window + s->strstart + MAX_MATCH; - register Byte scan_end1 = scan[best_len-1]; - register Byte scan_end = scan[best_len]; -#endif - - /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16. - * It is easy to get rid of this optimization if necessary. - */ - Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever"); - - /* Do not waste too much time if we already have a good match: */ - if (s->prev_length >= s->good_match) { - chain_length >>= 2; - } - /* Do not look for matches beyond the end of the input. This is necessary - * to make deflate deterministic. - */ - if ((uInt)nice_match > s->lookahead) nice_match = s->lookahead; - - Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead"); - - do { - Assert(cur_match < s->strstart, "no future"); - match = s->window + cur_match; - - /* Skip to next match if the match length cannot increase - * or if the match length is less than 2: - */ -#if (defined(UNALIGNED_OK) && MAX_MATCH == 258) - /* This code assumes sizeof(unsigned short) == 2. Do not use - * UNALIGNED_OK if your compiler uses a different size. - */ - if (*(ushf*)(match+best_len-1) != scan_end || - *(ushf*)match != scan_start) continue; - - /* It is not necessary to compare scan[2] and match[2] since they are - * always equal when the other bytes match, given that the hash keys - * are equal and that HASH_BITS >= 8. Compare 2 bytes at a time at - * strstart+3, +5, ... up to strstart+257. We check for insufficient - * lookahead only every 4th comparison; the 128th check will be made - * at strstart+257. If MAX_MATCH-2 is not a multiple of 8, it is - * necessary to put more guard bytes at the end of the window, or - * to check more often for insufficient lookahead. - */ - Assert(scan[2] == match[2], "scan[2]?"); - scan++, match++; - do { - } while (*(ushf*)(scan+=2) == *(ushf*)(match+=2) && - *(ushf*)(scan+=2) == *(ushf*)(match+=2) && - *(ushf*)(scan+=2) == *(ushf*)(match+=2) && - *(ushf*)(scan+=2) == *(ushf*)(match+=2) && - scan < strend); - /* The funny "do {}" generates better code on most compilers */ - - /* Here, scan <= window+strstart+257 */ - Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan"); - if (*scan == *match) scan++; - - len = (MAX_MATCH - 1) - (int)(strend-scan); - scan = strend - (MAX_MATCH-1); - -#else /* UNALIGNED_OK */ - - if (match[best_len] != scan_end || - match[best_len-1] != scan_end1 || - *match != *scan || - *++match != scan[1]) continue; - - /* The check at best_len-1 can be removed because it will be made - * again later. (This heuristic is not always a win.) - * It is not necessary to compare scan[2] and match[2] since they - * are always equal when the other bytes match, given that - * the hash keys are equal and that HASH_BITS >= 8. - */ - scan += 2, match++; - Assert(*scan == *match, "match[2]?"); - - /* We check for insufficient lookahead only every 8th comparison; - * the 256th check will be made at strstart+258. - */ - do { - } while (*++scan == *++match && *++scan == *++match && - *++scan == *++match && *++scan == *++match && - *++scan == *++match && *++scan == *++match && - *++scan == *++match && *++scan == *++match && - scan < strend); - - Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan"); - - len = MAX_MATCH - (int)(strend - scan); - scan = strend - MAX_MATCH; - -#endif /* UNALIGNED_OK */ - - if (len > best_len) { - s->match_start = cur_match; - best_len = len; - if (len >= nice_match) break; -#ifdef UNALIGNED_OK - scan_end = *(ushf*)(scan+best_len-1); -#else - scan_end1 = scan[best_len-1]; - scan_end = scan[best_len]; -#endif - } - } while ((cur_match = prev[cur_match & wmask]) > limit - && --chain_length != 0); - - if ((uInt)best_len <= s->lookahead) return (uInt)best_len; - return s->lookahead; -} - -#else /* FASTEST */ -/* --------------------------------------------------------------------------- - * Optimized version for level == 1 only - */ -local uInt longest_match(s, cur_match) - deflate_state *s; - IPos cur_match; /* current match */ -{ - register Bytef *scan = s->window + s->strstart; /* current string */ - register Bytef *match; /* matched string */ - register int len; /* length of current match */ - register Bytef *strend = s->window + s->strstart + MAX_MATCH; - - /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16. - * It is easy to get rid of this optimization if necessary. - */ - Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever"); - - Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead"); - - Assert(cur_match < s->strstart, "no future"); - - match = s->window + cur_match; - - /* Return failure if the match length is less than 2: - */ - if (match[0] != scan[0] || match[1] != scan[1]) return MIN_MATCH-1; - - /* The check at best_len-1 can be removed because it will be made - * again later. (This heuristic is not always a win.) - * It is not necessary to compare scan[2] and match[2] since they - * are always equal when the other bytes match, given that - * the hash keys are equal and that HASH_BITS >= 8. - */ - scan += 2, match += 2; - Assert(*scan == *match, "match[2]?"); - - /* We check for insufficient lookahead only every 8th comparison; - * the 256th check will be made at strstart+258. - */ - do { - } while (*++scan == *++match && *++scan == *++match && - *++scan == *++match && *++scan == *++match && - *++scan == *++match && *++scan == *++match && - *++scan == *++match && *++scan == *++match && - scan < strend); - - Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan"); - - len = MAX_MATCH - (int)(strend - scan); - - if (len < MIN_MATCH) return MIN_MATCH - 1; - - s->match_start = cur_match; - return len <= s->lookahead ? len : s->lookahead; -} -#endif /* FASTEST */ -#endif /* ASMV */ - -#ifdef __WXDEBUG__ -/* =========================================================================== - * Check that the match at match_start is indeed a match. - */ -local void check_match(s, start, match, length) - deflate_state *s; - IPos start, match; - int length; -{ - /* check that the match is indeed a match */ - if (zmemcmp(s->window + match, - s->window + start, length) != EQUAL) { - fprintf(stderr, " start %u, match %u, length %d\n", - start, match, length); - do { - fprintf(stderr, "%c%c", s->window[match++], s->window[start++]); - } while (--length != 0); - z_error("invalid match"); - } - if (z_verbose > 1) { - fprintf(stderr,"\\[%d,%d]", start-match, length); - do { putc(s->window[start++], stderr); } while (--length != 0); - } -} -#else -# define check_match(s, start, match, length) -#endif - -/* =========================================================================== - * Fill the window when the lookahead becomes insufficient. - * Updates strstart and lookahead. - * - * IN assertion: lookahead < MIN_LOOKAHEAD - * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD - * At least one byte has been read, or avail_in == 0; reads are - * performed for at least two bytes (required for the zip translate_eol - * option -- not supported here). - */ -local void fill_window(s) - deflate_state *s; -{ - register unsigned n, m; - register Posf *p; - unsigned more; /* Amount of free space at the end of the window. */ - uInt wsize = s->w_size; - - do { - more = (unsigned)(s->window_size -(ulg)s->lookahead -(ulg)s->strstart); - - /* Deal with !@#$% 64K limit: */ - if (more == 0 && s->strstart == 0 && s->lookahead == 0) { - more = wsize; - - } else if (more == (unsigned)(-1)) { - /* Very unlikely, but possible on 16 bit machine if strstart == 0 - * and lookahead == 1 (input done one byte at time) - */ - more--; - - /* If the window is almost full and there is insufficient lookahead, - * move the upper half to the lower one to make room in the upper half. - */ - } else if (s->strstart >= wsize+MAX_DIST(s)) { - - zmemcpy(s->window, s->window+wsize, (unsigned)wsize); - s->match_start -= wsize; - s->strstart -= wsize; /* we now have strstart >= MAX_DIST */ - s->block_start -= (long) wsize; - - /* Slide the hash table (could be avoided with 32 bit values - at the expense of memory usage). We slide even when level == 0 - to keep the hash table consistent if we switch back to level > 0 - later. (Using level 0 permanently is not an optimal usage of - zlib, so we don't care about this pathological case.) - */ - n = s->hash_size; - p = &s->head[n]; - do { - m = *--p; - *p = (Pos)(m >= wsize ? m-wsize : NIL); - } while (--n); - - n = wsize; -#ifndef FASTEST - p = &s->prev[n]; - do { - m = *--p; - *p = (Pos)(m >= wsize ? m-wsize : NIL); - /* If n is not on any hash chain, prev[n] is garbage but - * its value will never be used. - */ - } while (--n); -#endif - more += wsize; - } - if (s->strm->avail_in == 0) return; - - /* If there was no sliding: - * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 && - * more == window_size - lookahead - strstart - * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1) - * => more >= window_size - 2*WSIZE + 2 - * In the BIG_MEM or MMAP case (not yet supported), - * window_size == input_size + MIN_LOOKAHEAD && - * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD. - * Otherwise, window_size == 2*WSIZE so more >= 2. - * If there was sliding, more >= WSIZE. So in all cases, more >= 2. - */ - Assert(more >= 2, "more < 2"); - - n = read_buf(s->strm, s->window + s->strstart + s->lookahead, more); - s->lookahead += n; - - /* Initialize the hash value now that we have some input: */ - if (s->lookahead >= MIN_MATCH) { - s->ins_h = s->window[s->strstart]; - UPDATE_HASH(s, s->ins_h, s->window[s->strstart+1]); -#if MIN_MATCH != 3 - Call UPDATE_HASH() MIN_MATCH-3 more times -#endif - } - /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage, - * but this is not important since only literal bytes will be emitted. - */ - - } while (s->lookahead < MIN_LOOKAHEAD && s->strm->avail_in != 0); -} - -/* =========================================================================== - * Flush the current block, with given end-of-file flag. - * IN assertion: strstart is set to the end of the current match. - */ -#define FLUSH_BLOCK_ONLY(s, eof) { \ - _tr_flush_block(s, (s->block_start >= 0L ? \ - (charf *)&s->window[(unsigned)s->block_start] : \ - (charf *)Z_NULL), \ - (ulg)((long)s->strstart - s->block_start), \ - (eof)); \ - s->block_start = s->strstart; \ - flush_pending(s->strm); \ - Tracev((stderr,"[FLUSH]")); \ -} - -/* Same but force premature exit if necessary. */ -#define FLUSH_BLOCK(s, eof) { \ - FLUSH_BLOCK_ONLY(s, eof); \ - if (s->strm->avail_out == 0) return (eof) ? finish_started : need_more; \ -} - -/* =========================================================================== - * Copy without compression as much as possible from the input stream, return - * the current block state. - * This function does not insert new strings in the dictionary since - * uncompressible data is probably not useful. This function is used - * only for the level=0 compression option. - * NOTE: this function should be optimized to avoid extra copying from - * window to pending_buf. - */ -local block_state deflate_stored(s, flush) - deflate_state *s; - int flush; -{ - /* Stored blocks are limited to 0xffff bytes, pending_buf is limited - * to pending_buf_size, and each stored block has a 5 byte header: - */ - ulg max_block_size = 0xffff; - ulg max_start; - - if (max_block_size > s->pending_buf_size - 5) { - max_block_size = s->pending_buf_size - 5; - } - - /* Copy as much as possible from input to output: */ - for (;;) { - /* Fill the window as much as possible: */ - if (s->lookahead <= 1) { - - Assert(s->strstart < s->w_size+MAX_DIST(s) || - s->block_start >= (long)s->w_size, "slide too late"); - - fill_window(s); - if (s->lookahead == 0 && flush == Z_NO_FLUSH) return need_more; - - if (s->lookahead == 0) break; /* flush the current block */ - } - Assert(s->block_start >= 0L, "block gone"); - - s->strstart += s->lookahead; - s->lookahead = 0; - - /* Emit a stored block if pending_buf will be full: */ - max_start = s->block_start + max_block_size; - if (s->strstart == 0 || (ulg)s->strstart >= max_start) { - /* strstart == 0 is possible when wraparound on 16-bit machine */ - s->lookahead = (uInt)(s->strstart - max_start); - s->strstart = (uInt)max_start; - FLUSH_BLOCK(s, 0); - } - /* Flush if we may have to slide, otherwise block_start may become - * negative and the data will be gone: - */ - if (s->strstart - (uInt)s->block_start >= MAX_DIST(s)) { - FLUSH_BLOCK(s, 0); - } - } - FLUSH_BLOCK(s, flush == Z_FINISH); - return flush == Z_FINISH ? finish_done : block_done; -} - -/* =========================================================================== - * Compress as much as possible from the input stream, return the current - * block state. - * This function does not perform lazy evaluation of matches and inserts - * new strings in the dictionary only for unmatched strings or for short - * matches. It is used only for the fast compression options. - */ -local block_state deflate_fast(s, flush) - deflate_state *s; - int flush; -{ - IPos hash_head = NIL; /* head of the hash chain */ - int bflush; /* set if current block must be flushed */ - - for (;;) { - /* Make sure that we always have enough lookahead, except - * at the end of the input file. We need MAX_MATCH bytes - * for the next match, plus MIN_MATCH bytes to insert the - * string following the next match. - */ - if (s->lookahead < MIN_LOOKAHEAD) { - fill_window(s); - if (s->lookahead < MIN_LOOKAHEAD && flush == Z_NO_FLUSH) { - return need_more; - } - if (s->lookahead == 0) break; /* flush the current block */ - } - - /* Insert the string window[strstart .. strstart+2] in the - * dictionary, and set hash_head to the head of the hash chain: - */ - if (s->lookahead >= MIN_MATCH) { - INSERT_STRING(s, s->strstart, hash_head); - } - - /* Find the longest match, discarding those <= prev_length. - * At this point we have always match_length < MIN_MATCH - */ - if (hash_head != NIL && s->strstart - hash_head <= MAX_DIST(s)) { - /* To simplify the code, we prevent matches with the string - * of window index 0 (in particular we have to avoid a match - * of the string with itself at the start of the input file). - */ - if (s->strategy != Z_HUFFMAN_ONLY) { - s->match_length = longest_match (s, hash_head); - } - /* longest_match() sets match_start */ - } - if (s->match_length >= MIN_MATCH) { - check_match(s, s->strstart, s->match_start, s->match_length); - - _tr_tally_dist(s, s->strstart - s->match_start, - s->match_length - MIN_MATCH, bflush); - - s->lookahead -= s->match_length; - - /* Insert new strings in the hash table only if the match length - * is not too large. This saves time but degrades compression. - */ -#ifndef FASTEST - if (s->match_length <= s->max_insert_length && - s->lookahead >= MIN_MATCH) { - s->match_length--; /* string at strstart already in hash table */ - do { - s->strstart++; - INSERT_STRING(s, s->strstart, hash_head); - /* strstart never exceeds WSIZE-MAX_MATCH, so there are - * always MIN_MATCH bytes ahead. - */ - } while (--s->match_length != 0); - s->strstart++; - } else -#endif - { - s->strstart += s->match_length; - s->match_length = 0; - s->ins_h = s->window[s->strstart]; - UPDATE_HASH(s, s->ins_h, s->window[s->strstart+1]); -#if MIN_MATCH != 3 - Call UPDATE_HASH() MIN_MATCH-3 more times -#endif - /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not - * matter since it will be recomputed at next deflate call. - */ - } - } else { - /* No match, output a literal byte */ - Tracevv((stderr,"%c", s->window[s->strstart])); - _tr_tally_lit (s, s->window[s->strstart], bflush); - s->lookahead--; - s->strstart++; - } - if (bflush) FLUSH_BLOCK(s, 0); - } - FLUSH_BLOCK(s, flush == Z_FINISH); - return flush == Z_FINISH ? finish_done : block_done; -} - -/* =========================================================================== - * Same as above, but achieves better compression. We use a lazy - * evaluation for matches: a match is finally adopted only if there is - * no better match at the next window position. - */ -local block_state deflate_slow(s, flush) - deflate_state *s; - int flush; -{ - IPos hash_head = NIL; /* head of hash chain */ - int bflush; /* set if current block must be flushed */ - - /* Process the input block. */ - for (;;) { - /* Make sure that we always have enough lookahead, except - * at the end of the input file. We need MAX_MATCH bytes - * for the next match, plus MIN_MATCH bytes to insert the - * string following the next match. - */ - if (s->lookahead < MIN_LOOKAHEAD) { - fill_window(s); - if (s->lookahead < MIN_LOOKAHEAD && flush == Z_NO_FLUSH) { - return need_more; - } - if (s->lookahead == 0) break; /* flush the current block */ - } - - /* Insert the string window[strstart .. strstart+2] in the - * dictionary, and set hash_head to the head of the hash chain: - */ - if (s->lookahead >= MIN_MATCH) { - INSERT_STRING(s, s->strstart, hash_head); - } - - /* Find the longest match, discarding those <= prev_length. - */ - s->prev_length = s->match_length, s->prev_match = s->match_start; - s->match_length = MIN_MATCH-1; - - if (hash_head != NIL && s->prev_length < s->max_lazy_match && - s->strstart - hash_head <= MAX_DIST(s)) { - /* To simplify the code, we prevent matches with the string - * of window index 0 (in particular we have to avoid a match - * of the string with itself at the start of the input file). - */ - if (s->strategy != Z_HUFFMAN_ONLY) { - s->match_length = longest_match (s, hash_head); - } - /* longest_match() sets match_start */ - - if (s->match_length <= 5 && (s->strategy == Z_FILTERED || - (s->match_length == MIN_MATCH && - s->strstart - s->match_start > TOO_FAR))) { - - /* If prev_match is also MIN_MATCH, match_start is garbage - * but we will ignore the current match anyway. - */ - s->match_length = MIN_MATCH-1; - } - } - /* If there was a match at the previous step and the current - * match is not better, output the previous match: - */ - if (s->prev_length >= MIN_MATCH && s->match_length <= s->prev_length) { - uInt max_insert = s->strstart + s->lookahead - MIN_MATCH; - /* Do not insert strings in hash table beyond this. */ - - check_match(s, s->strstart-1, s->prev_match, s->prev_length); - - _tr_tally_dist(s, s->strstart -1 - s->prev_match, - s->prev_length - MIN_MATCH, bflush); - - /* Insert in hash table all strings up to the end of the match. - * strstart-1 and strstart are already inserted. If there is not - * enough lookahead, the last two strings are not inserted in - * the hash table. - */ - s->lookahead -= s->prev_length-1; - s->prev_length -= 2; - do { - if (++s->strstart <= max_insert) { - INSERT_STRING(s, s->strstart, hash_head); - } - } while (--s->prev_length != 0); - s->match_available = 0; - s->match_length = MIN_MATCH-1; - s->strstart++; - - if (bflush) FLUSH_BLOCK(s, 0); - - } else if (s->match_available) { - /* If there was no match at the previous position, output a - * single literal. If there was a match but the current match - * is longer, truncate the previous match to a single literal. - */ - Tracevv((stderr,"%c", s->window[s->strstart-1])); - _tr_tally_lit(s, s->window[s->strstart-1], bflush); - if (bflush) { - FLUSH_BLOCK_ONLY(s, 0); - } - s->strstart++; - s->lookahead--; - if (s->strm->avail_out == 0) return need_more; - } else { - /* There is no previous match to compare with, wait for - * the next step to decide. - */ - s->match_available = 1; - s->strstart++; - s->lookahead--; - } - } - Assert (flush != Z_NO_FLUSH, "no flush?"); - if (s->match_available) { - Tracevv((stderr,"%c", s->window[s->strstart-1])); - _tr_tally_lit(s, s->window[s->strstart-1], bflush); - s->match_available = 0; - } - FLUSH_BLOCK(s, flush == Z_FINISH); - return flush == Z_FINISH ? finish_done : block_done; -} diff --git a/src/zlib/deflate.h b/src/zlib/deflate.h deleted file mode 100644 index ef26c00c2a..0000000000 --- a/src/zlib/deflate.h +++ /dev/null @@ -1,318 +0,0 @@ -/* deflate.h -- internal compression state - * Copyright (C) 1995-1998 Jean-loup Gailly - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* WARNING: this file should *not* be used by applications. It is - part of the implementation of the compression library and is - subject to change. Applications should only use zlib.h. - */ - -/* @(#) $Id$ */ - -#ifndef _DEFLATE_H -#define _DEFLATE_H - -#include "zutil.h" - -/* =========================================================================== - * Internal compression state. - */ - -#define LENGTH_CODES 29 -/* number of length codes, not counting the special END_BLOCK code */ - -#define LITERALS 256 -/* number of literal bytes 0..255 */ - -#define L_CODES (LITERALS+1+LENGTH_CODES) -/* number of Literal or Length codes, including the END_BLOCK code */ - -#define D_CODES 30 -/* number of distance codes */ - -#define BL_CODES 19 -/* number of codes used to transfer the bit lengths */ - -#define HEAP_SIZE (2*L_CODES+1) -/* maximum heap size */ - -#define MAX_BITS 15 -/* All codes must not exceed MAX_BITS bits */ - -#define INIT_STATE 42 -#define BUSY_STATE 113 -#define FINISH_STATE 666 -/* Stream status */ - - -/* Data structure describing a single value and its code string. */ -typedef struct ct_data_s { - union { - ush freq; /* frequency count */ - ush code; /* bit string */ - } fc; - union { - ush dad; /* father node in Huffman tree */ - ush len; /* length of bit string */ - } dl; -} FAR ct_data; - -#define Freq fc.freq -#define Code fc.code -#define Dad dl.dad -#define Len dl.len - -typedef struct static_tree_desc_s static_tree_desc; - -typedef struct tree_desc_s { - ct_data *dyn_tree; /* the dynamic tree */ - int max_code; /* largest code with non zero frequency */ - static_tree_desc *stat_desc; /* the corresponding static tree */ -} FAR tree_desc; - -typedef ush Pos; -typedef Pos FAR Posf; -typedef unsigned IPos; - -/* A Pos is an index in the character window. We use short instead of int to - * save space in the various tables. IPos is used only for parameter passing. - */ - -typedef struct internal_state { - z_streamp strm; /* pointer back to this zlib stream */ - int status; /* as the name implies */ - Bytef *pending_buf; /* output still pending */ - ulg pending_buf_size; /* size of pending_buf */ - Bytef *pending_out; /* next pending byte to output to the stream */ - int pending; /* nb of bytes in the pending buffer */ - int noheader; /* suppress zlib header and adler32 */ - Byte data_type; /* UNKNOWN, BINARY or ASCII */ - Byte method; /* STORED (for zip only) or DEFLATED */ - int last_flush; /* value of flush param for previous deflate call */ - - /* used by deflate.c: */ - - uInt w_size; /* LZ77 window size (32K by default) */ - uInt w_bits; /* log2(w_size) (8..16) */ - uInt w_mask; /* w_size - 1 */ - - Bytef *window; - /* Sliding window. Input bytes are read into the second half of the window, - * and move to the first half later to keep a dictionary of at least wSize - * bytes. With this organization, matches are limited to a distance of - * wSize-MAX_MATCH bytes, but this ensures that IO is always - * performed with a length multiple of the block size. Also, it limits - * the window size to 64K, which is quite useful on MSDOS. - * To do: use the user input buffer as sliding window. - */ - - ulg window_size; - /* Actual size of window: 2*wSize, except when the user input buffer - * is directly used as sliding window. - */ - - Posf *prev; - /* Link to older string with same hash index. To limit the size of this - * array to 64K, this link is maintained only for the last 32K strings. - * An index in this array is thus a window index modulo 32K. - */ - - Posf *head; /* Heads of the hash chains or NIL. */ - - uInt ins_h; /* hash index of string to be inserted */ - uInt hash_size; /* number of elements in hash table */ - uInt hash_bits; /* log2(hash_size) */ - uInt hash_mask; /* hash_size-1 */ - - uInt hash_shift; - /* Number of bits by which ins_h must be shifted at each input - * step. It must be such that after MIN_MATCH steps, the oldest - * byte no longer takes part in the hash key, that is: - * hash_shift * MIN_MATCH >= hash_bits - */ - - long block_start; - /* Window position at the beginning of the current output block. Gets - * negative when the window is moved backwards. - */ - - uInt match_length; /* length of best match */ - IPos prev_match; /* previous match */ - int match_available; /* set if previous match exists */ - uInt strstart; /* start of string to insert */ - uInt match_start; /* start of matching string */ - uInt lookahead; /* number of valid bytes ahead in window */ - - uInt prev_length; - /* Length of the best match at previous step. Matches not greater than this - * are discarded. This is used in the lazy match evaluation. - */ - - uInt max_chain_length; - /* To speed up deflation, hash chains are never searched beyond this - * length. A higher limit improves compression ratio but degrades the - * speed. - */ - - uInt max_lazy_match; - /* Attempt to find a better match only when the current match is strictly - * smaller than this value. This mechanism is used only for compression - * levels >= 4. - */ -# define max_insert_length max_lazy_match - /* Insert new strings in the hash table only if the match length is not - * greater than this length. This saves time but degrades compression. - * max_insert_length is used only for compression levels <= 3. - */ - - int level; /* compression level (1..9) */ - int strategy; /* favor or force Huffman coding*/ - - uInt good_match; - /* Use a faster search when the previous match is longer than this */ - - int nice_match; /* Stop searching when current match exceeds this */ - - /* used by trees.c: */ - /* Didn't use ct_data typedef below to supress compiler warning */ - struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */ - struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */ - struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */ - - struct tree_desc_s l_desc; /* desc. for literal tree */ - struct tree_desc_s d_desc; /* desc. for distance tree */ - struct tree_desc_s bl_desc; /* desc. for bit length tree */ - - ush bl_count[MAX_BITS+1]; - /* number of codes at each bit length for an optimal tree */ - - int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */ - int heap_len; /* number of elements in the heap */ - int heap_max; /* element of largest frequency */ - /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used. - * The same heap array is used to build all trees. - */ - - uch depth[2*L_CODES+1]; - /* Depth of each subtree used as tie breaker for trees of equal frequency - */ - - uchf *l_buf; /* buffer for literals or lengths */ - - uInt lit_bufsize; - /* Size of match buffer for literals/lengths. There are 4 reasons for - * limiting lit_bufsize to 64K: - * - frequencies can be kept in 16 bit counters - * - if compression is not successful for the first block, all input - * data is still in the window so we can still emit a stored block even - * when input comes from standard input. (This can also be done for - * all blocks if lit_bufsize is not greater than 32K.) - * - if compression is not successful for a file smaller than 64K, we can - * even emit a stored file instead of a stored block (saving 5 bytes). - * This is applicable only for zip (not gzip or zlib). - * - creating new Huffman trees less frequently may not provide fast - * adaptation to changes in the input data statistics. (Take for - * example a binary file with poorly compressible code followed by - * a highly compressible string table.) Smaller buffer sizes give - * fast adaptation but have of course the overhead of transmitting - * trees more frequently. - * - I can't count above 4 - */ - - uInt last_lit; /* running index in l_buf */ - - ushf *d_buf; - /* Buffer for distances. To simplify the code, d_buf and l_buf have - * the same number of elements. To use different lengths, an extra flag - * array would be necessary. - */ - - ulg opt_len; /* bit length of current block with optimal trees */ - ulg static_len; /* bit length of current block with static trees */ - ulg compressed_len; /* total bit length of compressed file */ - uInt matches; /* number of string matches in current block */ - int last_eob_len; /* bit length of EOB code for last block */ - -#ifdef __WXDEBUG__ - ulg bits_sent; /* bit length of the compressed data */ -#endif - - ush bi_buf; - /* Output buffer. bits are inserted starting at the bottom (least - * significant bits). - */ - int bi_valid; - /* Number of valid bits in bi_buf. All bits above the last valid bit - * are always zero. - */ - -} FAR deflate_state; - -/* Output a byte on the stream. - * IN assertion: there is enough room in pending_buf. - */ -#define put_byte(s, c) {s->pending_buf[s->pending++] = (c);} - - -#define MIN_LOOKAHEAD (MAX_MATCH+MIN_MATCH+1) -/* Minimum amount of lookahead, except at the end of the input file. - * See deflate.c for comments about the MIN_MATCH+1. - */ - -#define MAX_DIST(s) ((s)->w_size-MIN_LOOKAHEAD) -/* In order to simplify the code, particularly on 16 bit machines, match - * distances are limited to MAX_DIST instead of WSIZE. - */ - - /* in trees.c */ -void _tr_init OF((deflate_state *s)); -int _tr_tally OF((deflate_state *s, unsigned dist, unsigned lc)); -ulg _tr_flush_block OF((deflate_state *s, charf *buf, ulg stored_len, - int eof)); -void _tr_align OF((deflate_state *s)); -void _tr_stored_block OF((deflate_state *s, charf *buf, ulg stored_len, - int eof)); - -#define d_code(dist) \ - ((dist) < 256 ? _dist_code[dist] : _dist_code[256+((dist)>>7)]) -/* Mapping from a distance to a distance code. dist is the distance - 1 and - * must not have side effects. _dist_code[256] and _dist_code[257] are never - * used. - */ - -#ifndef __WXDEBUG__ -/* Inline versions of _tr_tally for speed: */ - -#if defined(GEN_TREES_H) || !defined(STDC) - extern uch _length_code[]; - extern uch _dist_code[]; -#else - extern const uch _length_code[]; - extern const uch _dist_code[]; -#endif - -# define _tr_tally_lit(s, c, flush) \ - { uch cc = (c); \ - s->d_buf[s->last_lit] = 0; \ - s->l_buf[s->last_lit++] = cc; \ - s->dyn_ltree[cc].Freq++; \ - flush = (s->last_lit == s->lit_bufsize-1); \ - } -# define _tr_tally_dist(s, distance, length, flush) \ - { uch len = (length); \ - ush dist = (distance); \ - s->d_buf[s->last_lit] = dist; \ - s->l_buf[s->last_lit++] = len; \ - dist--; \ - s->dyn_ltree[_length_code[len]+LITERALS+1].Freq++; \ - s->dyn_dtree[d_code(dist)].Freq++; \ - flush = (s->last_lit == s->lit_bufsize-1); \ - } -#else -# define _tr_tally_lit(s, c, flush) flush = _tr_tally(s, 0, c) -# define _tr_tally_dist(s, distance, length, flush) \ - flush = _tr_tally(s, distance, length) -#endif - -#endif diff --git a/src/zlib/descrip.mms b/src/zlib/descrip.mms deleted file mode 100644 index 9d364598a2..0000000000 --- a/src/zlib/descrip.mms +++ /dev/null @@ -1,48 +0,0 @@ -# descrip.mms: MMS description file for building zlib on VMS -# written by Martin P.J. Zinser - -cc_defs = -c_deb = - -.ifdef __DECC__ -pref = /prefix=all -.endif - -OBJS = adler32.obj, compress.obj, crc32.obj, gzio.obj, uncompr.obj,\ - deflate.obj, trees.obj, zutil.obj, inflate.obj, infblock.obj,\ - inftrees.obj, infcodes.obj, infutil.obj, inffast.obj - -CFLAGS= $(C_DEB) $(CC_DEFS) $(PREF) - -all : example.exe minigzip.exe - @ write sys$output " Example applications available" -libz.olb : libz.olb($(OBJS)) - @ write sys$output " libz available" - -example.exe : example.obj libz.olb - link example,libz.olb/lib - -minigzip.exe : minigzip.obj libz.olb - link minigzip,libz.olb/lib,x11vms:xvmsutils.olb/lib - -clean : - delete *.obj;*,libz.olb;* - - -# Other dependencies. -adler32.obj : zutil.h zlib.h zconf.h -compress.obj : zlib.h zconf.h -crc32.obj : zutil.h zlib.h zconf.h -deflate.obj : deflate.h zutil.h zlib.h zconf.h -example.obj : zlib.h zconf.h -gzio.obj : zutil.h zlib.h zconf.h -infblock.obj : zutil.h zlib.h zconf.h infblock.h inftrees.h infcodes.h infutil.h -infcodes.obj : zutil.h zlib.h zconf.h inftrees.h infutil.h infcodes.h inffast.h -inffast.obj : zutil.h zlib.h zconf.h inftrees.h infutil.h inffast.h -inflate.obj : zutil.h zlib.h zconf.h infblock.h -inftrees.obj : zutil.h zlib.h zconf.h inftrees.h -infutil.obj : zutil.h zlib.h zconf.h inftrees.h infutil.h -minigzip.obj : zlib.h zconf.h -trees.obj : deflate.h zutil.h zlib.h zconf.h -uncompr.obj : zlib.h zconf.h -zutil.obj : zutil.h zlib.h zconf.h diff --git a/src/zlib/example.c b/src/zlib/example.c deleted file mode 100644 index a9e6486cc0..0000000000 --- a/src/zlib/example.c +++ /dev/null @@ -1,550 +0,0 @@ -/* example.c -- usage example of the zlib compression library - * Copyright (C) 1995-1998 Jean-loup Gailly. - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* @(#) $Id$ */ - -#include -#include "../zlib/zlib.h" - -#ifdef STDC -# include -# include -#else - extern void exit OF((int)); -#endif - -#define CHECK_ERR(err, msg) { \ - if (err != Z_OK) { \ - fprintf(stderr, "%s error: %d\n", msg, err); \ - exit(1); \ - } \ -} - -const char hello[] = "hello, hello!"; -/* "hello world" would be more standard, but the repeated "hello" - * stresses the compression code better, sorry... - */ - -const char dictionary[] = "hello"; -uLong dictId; /* Adler32 value of the dictionary */ - -void test_compress OF((Byte *compr, uLong comprLen, - Byte *uncompr, uLong uncomprLen)); -void test_gzio OF((const char *out, const char *in, - Byte *uncompr, int uncomprLen)); -void test_deflate OF((Byte *compr, uLong comprLen)); -void test_inflate OF((Byte *compr, uLong comprLen, - Byte *uncompr, uLong uncomprLen)); -void test_large_deflate OF((Byte *compr, uLong comprLen, - Byte *uncompr, uLong uncomprLen)); -void test_large_inflate OF((Byte *compr, uLong comprLen, - Byte *uncompr, uLong uncomprLen)); -void test_flush OF((Byte *compr, uLong *comprLen)); -void test_sync OF((Byte *compr, uLong comprLen, - Byte *uncompr, uLong uncomprLen)); -void test_dict_deflate OF((Byte *compr, uLong comprLen)); -void test_dict_inflate OF((Byte *compr, uLong comprLen, - Byte *uncompr, uLong uncomprLen)); -int main OF((int argc, char *argv[])); - -/* =========================================================================== - * Test compress() and uncompress() - */ -void test_compress(compr, comprLen, uncompr, uncomprLen) - Byte *compr, *uncompr; - uLong comprLen, uncomprLen; -{ - int err; - uLong len = strlen(hello)+1; - - err = compress(compr, &comprLen, (const Bytef*)hello, len); - CHECK_ERR(err, "compress"); - - strcpy((char*)uncompr, "garbage"); - - err = uncompress(uncompr, &uncomprLen, compr, comprLen); - CHECK_ERR(err, "uncompress"); - - if (strcmp((char*)uncompr, hello)) { - fprintf(stderr, "bad uncompress\n"); - exit(1); - } else { - printf("uncompress(): %s\n", (char *)uncompr); - } -} - -/* =========================================================================== - * Test read/write of .gz files - */ -void test_gzio(out, in, uncompr, uncomprLen) - const char *out; /* output file */ - const char *in; /* input file */ - Byte *uncompr; - int uncomprLen; -{ - int err; - int len = strlen(hello)+1; - gzFile file; - z_off_t pos; - - file = gzopen(out, "wb"); - if (file == NULL) { - fprintf(stderr, "gzopen error\n"); - exit(1); - } - gzputc(file, 'h'); - if (gzputs(file, "ello") != 4) { - fprintf(stderr, "gzputs err: %s\n", gzerror(file, &err)); - exit(1); - } - if (gzprintf(file, ", %s!", "hello") != 8) { - fprintf(stderr, "gzprintf err: %s\n", gzerror(file, &err)); - exit(1); - } - gzseek(file, 1L, SEEK_CUR); /* add one zero byte */ - gzclose(file); - - file = gzopen(in, "rb"); - if (file == NULL) { - fprintf(stderr, "gzopen error\n"); - } - strcpy((char*)uncompr, "garbage"); - - uncomprLen = gzread(file, uncompr, (unsigned)uncomprLen); - if (uncomprLen != len) { - fprintf(stderr, "gzread err: %s\n", gzerror(file, &err)); - exit(1); - } - if (strcmp((char*)uncompr, hello)) { - fprintf(stderr, "bad gzread: %s\n", (char*)uncompr); - exit(1); - } else { - printf("gzread(): %s\n", (char *)uncompr); - } - - pos = gzseek(file, -8L, SEEK_CUR); - if (pos != 6 || gztell(file) != pos) { - fprintf(stderr, "gzseek error, pos=%ld, gztell=%ld\n", - (long)pos, (long)gztell(file)); - exit(1); - } - - if (gzgetc(file) != ' ') { - fprintf(stderr, "gzgetc error\n"); - exit(1); - } - - gzgets(file, (char*)uncompr, uncomprLen); - uncomprLen = strlen((char*)uncompr); - if (uncomprLen != 6) { /* "hello!" */ - fprintf(stderr, "gzgets err after gzseek: %s\n", gzerror(file, &err)); - exit(1); - } - if (strcmp((char*)uncompr, hello+7)) { - fprintf(stderr, "bad gzgets after gzseek\n"); - exit(1); - } else { - printf("gzgets() after gzseek: %s\n", (char *)uncompr); - } - - gzclose(file); -} - -/* =========================================================================== - * Test deflate() with small buffers - */ -void test_deflate(compr, comprLen) - Byte *compr; - uLong comprLen; -{ - z_stream c_stream; /* compression stream */ - int err; - int len = strlen(hello)+1; - - c_stream.zalloc = (alloc_func)0; - c_stream.zfree = (free_func)0; - c_stream.opaque = (voidpf)0; - - err = deflateInit(&c_stream, Z_DEFAULT_COMPRESSION); - CHECK_ERR(err, "deflateInit"); - - c_stream.next_in = (Bytef*)hello; - c_stream.next_out = compr; - - while (c_stream.total_in != (uLong)len && c_stream.total_out < comprLen) { - c_stream.avail_in = c_stream.avail_out = 1; /* force small buffers */ - err = deflate(&c_stream, Z_NO_FLUSH); - CHECK_ERR(err, "deflate"); - } - /* Finish the stream, still forcing small buffers: */ - for (;;) { - c_stream.avail_out = 1; - err = deflate(&c_stream, Z_FINISH); - if (err == Z_STREAM_END) break; - CHECK_ERR(err, "deflate"); - } - - err = deflateEnd(&c_stream); - CHECK_ERR(err, "deflateEnd"); -} - -/* =========================================================================== - * Test inflate() with small buffers - */ -void test_inflate(compr, comprLen, uncompr, uncomprLen) - Byte *compr, *uncompr; - uLong comprLen, uncomprLen; -{ - int err; - z_stream d_stream; /* decompression stream */ - - strcpy((char*)uncompr, "garbage"); - - d_stream.zalloc = (alloc_func)0; - d_stream.zfree = (free_func)0; - d_stream.opaque = (voidpf)0; - - d_stream.next_in = compr; - d_stream.avail_in = 0; - d_stream.next_out = uncompr; - - err = inflateInit(&d_stream); - CHECK_ERR(err, "inflateInit"); - - while (d_stream.total_out < uncomprLen && d_stream.total_in < comprLen) { - d_stream.avail_in = d_stream.avail_out = 1; /* force small buffers */ - err = inflate(&d_stream, Z_NO_FLUSH); - if (err == Z_STREAM_END) break; - CHECK_ERR(err, "inflate"); - } - - err = inflateEnd(&d_stream); - CHECK_ERR(err, "inflateEnd"); - - if (strcmp((char*)uncompr, hello)) { - fprintf(stderr, "bad inflate\n"); - exit(1); - } else { - printf("inflate(): %s\n", (char *)uncompr); - } -} - -/* =========================================================================== - * Test deflate() with large buffers and dynamic change of compression level - */ -void test_large_deflate(compr, comprLen, uncompr, uncomprLen) - Byte *compr, *uncompr; - uLong comprLen, uncomprLen; -{ - z_stream c_stream; /* compression stream */ - int err; - - c_stream.zalloc = (alloc_func)0; - c_stream.zfree = (free_func)0; - c_stream.opaque = (voidpf)0; - - err = deflateInit(&c_stream, Z_BEST_SPEED); - CHECK_ERR(err, "deflateInit"); - - c_stream.next_out = compr; - c_stream.avail_out = (uInt)comprLen; - - /* At this point, uncompr is still mostly zeroes, so it should compress - * very well: - */ - c_stream.next_in = uncompr; - c_stream.avail_in = (uInt)uncomprLen; - err = deflate(&c_stream, Z_NO_FLUSH); - CHECK_ERR(err, "deflate"); - if (c_stream.avail_in != 0) { - fprintf(stderr, "deflate not greedy\n"); - exit(1); - } - - /* Feed in already compressed data and switch to no compression: */ - deflateParams(&c_stream, Z_NO_COMPRESSION, Z_DEFAULT_STRATEGY); - c_stream.next_in = compr; - c_stream.avail_in = (uInt)comprLen/2; - err = deflate(&c_stream, Z_NO_FLUSH); - CHECK_ERR(err, "deflate"); - - /* Switch back to compressing mode: */ - deflateParams(&c_stream, Z_BEST_COMPRESSION, Z_FILTERED); - c_stream.next_in = uncompr; - c_stream.avail_in = (uInt)uncomprLen; - err = deflate(&c_stream, Z_NO_FLUSH); - CHECK_ERR(err, "deflate"); - - err = deflate(&c_stream, Z_FINISH); - if (err != Z_STREAM_END) { - fprintf(stderr, "deflate should report Z_STREAM_END\n"); - exit(1); - } - err = deflateEnd(&c_stream); - CHECK_ERR(err, "deflateEnd"); -} - -/* =========================================================================== - * Test inflate() with large buffers - */ -void test_large_inflate(compr, comprLen, uncompr, uncomprLen) - Byte *compr, *uncompr; - uLong comprLen, uncomprLen; -{ - int err; - z_stream d_stream; /* decompression stream */ - - strcpy((char*)uncompr, "garbage"); - - d_stream.zalloc = (alloc_func)0; - d_stream.zfree = (free_func)0; - d_stream.opaque = (voidpf)0; - - d_stream.next_in = compr; - d_stream.avail_in = (uInt)comprLen; - - err = inflateInit(&d_stream); - CHECK_ERR(err, "inflateInit"); - - for (;;) { - d_stream.next_out = uncompr; /* discard the output */ - d_stream.avail_out = (uInt)uncomprLen; - err = inflate(&d_stream, Z_NO_FLUSH); - if (err == Z_STREAM_END) break; - CHECK_ERR(err, "large inflate"); - } - - err = inflateEnd(&d_stream); - CHECK_ERR(err, "inflateEnd"); - - if (d_stream.total_out != 2*uncomprLen + comprLen/2) { - fprintf(stderr, "bad large inflate: %ld\n", d_stream.total_out); - exit(1); - } else { - printf("large_inflate(): OK\n"); - } -} - -/* =========================================================================== - * Test deflate() with full flush - */ -void test_flush(compr, comprLen) - Byte *compr; - uLong *comprLen; -{ - z_stream c_stream; /* compression stream */ - int err; - int len = strlen(hello)+1; - - c_stream.zalloc = (alloc_func)0; - c_stream.zfree = (free_func)0; - c_stream.opaque = (voidpf)0; - - err = deflateInit(&c_stream, Z_DEFAULT_COMPRESSION); - CHECK_ERR(err, "deflateInit"); - - c_stream.next_in = (Bytef*)hello; - c_stream.next_out = compr; - c_stream.avail_in = 3; - c_stream.avail_out = (uInt)*comprLen; - err = deflate(&c_stream, Z_FULL_FLUSH); - CHECK_ERR(err, "deflate"); - - compr[3]++; /* force an error in first compressed block */ - c_stream.avail_in = len - 3; - - err = deflate(&c_stream, Z_FINISH); - if (err != Z_STREAM_END) { - CHECK_ERR(err, "deflate"); - } - err = deflateEnd(&c_stream); - CHECK_ERR(err, "deflateEnd"); - - *comprLen = c_stream.total_out; -} - -/* =========================================================================== - * Test inflateSync() - */ -void test_sync(compr, comprLen, uncompr, uncomprLen) - Byte *compr, *uncompr; - uLong comprLen, uncomprLen; -{ - int err; - z_stream d_stream; /* decompression stream */ - - strcpy((char*)uncompr, "garbage"); - - d_stream.zalloc = (alloc_func)0; - d_stream.zfree = (free_func)0; - d_stream.opaque = (voidpf)0; - - d_stream.next_in = compr; - d_stream.avail_in = 2; /* just read the zlib header */ - - err = inflateInit(&d_stream); - CHECK_ERR(err, "inflateInit"); - - d_stream.next_out = uncompr; - d_stream.avail_out = (uInt)uncomprLen; - - inflate(&d_stream, Z_NO_FLUSH); - CHECK_ERR(err, "inflate"); - - d_stream.avail_in = (uInt)comprLen-2; /* read all compressed data */ - err = inflateSync(&d_stream); /* but skip the damaged part */ - CHECK_ERR(err, "inflateSync"); - - err = inflate(&d_stream, Z_FINISH); - if (err != Z_DATA_ERROR) { - fprintf(stderr, "inflate should report DATA_ERROR\n"); - /* Because of incorrect adler32 */ - exit(1); - } - err = inflateEnd(&d_stream); - CHECK_ERR(err, "inflateEnd"); - - printf("after inflateSync(): hel%s\n", (char *)uncompr); -} - -/* =========================================================================== - * Test deflate() with preset dictionary - */ -void test_dict_deflate(compr, comprLen) - Byte *compr; - uLong comprLen; -{ - z_stream c_stream; /* compression stream */ - int err; - - c_stream.zalloc = (alloc_func)0; - c_stream.zfree = (free_func)0; - c_stream.opaque = (voidpf)0; - - err = deflateInit(&c_stream, Z_BEST_COMPRESSION); - CHECK_ERR(err, "deflateInit"); - - err = deflateSetDictionary(&c_stream, - (const Bytef*)dictionary, sizeof(dictionary)); - CHECK_ERR(err, "deflateSetDictionary"); - - dictId = c_stream.adler; - c_stream.next_out = compr; - c_stream.avail_out = (uInt)comprLen; - - c_stream.next_in = (Bytef*)hello; - c_stream.avail_in = (uInt)strlen(hello)+1; - - err = deflate(&c_stream, Z_FINISH); - if (err != Z_STREAM_END) { - fprintf(stderr, "deflate should report Z_STREAM_END\n"); - exit(1); - } - err = deflateEnd(&c_stream); - CHECK_ERR(err, "deflateEnd"); -} - -/* =========================================================================== - * Test inflate() with a preset dictionary - */ -void test_dict_inflate(compr, comprLen, uncompr, uncomprLen) - Byte *compr, *uncompr; - uLong comprLen, uncomprLen; -{ - int err; - z_stream d_stream; /* decompression stream */ - - strcpy((char*)uncompr, "garbage"); - - d_stream.zalloc = (alloc_func)0; - d_stream.zfree = (free_func)0; - d_stream.opaque = (voidpf)0; - - d_stream.next_in = compr; - d_stream.avail_in = (uInt)comprLen; - - err = inflateInit(&d_stream); - CHECK_ERR(err, "inflateInit"); - - d_stream.next_out = uncompr; - d_stream.avail_out = (uInt)uncomprLen; - - for (;;) { - err = inflate(&d_stream, Z_NO_FLUSH); - if (err == Z_STREAM_END) break; - if (err == Z_NEED_DICT) { - if (d_stream.adler != dictId) { - fprintf(stderr, "unexpected dictionary"); - exit(1); - } - err = inflateSetDictionary(&d_stream, (const Bytef*)dictionary, - sizeof(dictionary)); - } - CHECK_ERR(err, "inflate with dict"); - } - - err = inflateEnd(&d_stream); - CHECK_ERR(err, "inflateEnd"); - - if (strcmp((char*)uncompr, hello)) { - fprintf(stderr, "bad inflate with dict\n"); - exit(1); - } else { - printf("inflate with dictionary: %s\n", (char *)uncompr); - } -} - -/* =========================================================================== - * Usage: example [output.gz [input.gz]] - */ - -int main(argc, argv) - int argc; - char *argv[]; -{ - Byte *compr, *uncompr; - uLong comprLen = 10000*sizeof(int); /* don't overflow on MSDOS */ - uLong uncomprLen = comprLen; - static const char* myVersion = ZLIB_VERSION; - - if (zlibVersion()[0] != myVersion[0]) { - fprintf(stderr, "incompatible zlib version\n"); - exit(1); - - } else if (strcmp(zlibVersion(), ZLIB_VERSION) != 0) { - fprintf(stderr, "warning: different zlib version\n"); - } - - compr = (Byte*)calloc((uInt)comprLen, 1); - uncompr = (Byte*)calloc((uInt)uncomprLen, 1); - /* compr and uncompr are cleared to avoid reading uninitialized - * data and to ensure that uncompr compresses well. - */ - if (compr == Z_NULL || uncompr == Z_NULL) { - printf("out of memory\n"); - exit(1); - } - test_compress(compr, comprLen, uncompr, uncomprLen); - - test_gzio((argc > 1 ? argv[1] : "foo.gz"), - (argc > 2 ? argv[2] : "foo.gz"), - uncompr, (int)uncomprLen); - - test_deflate(compr, comprLen); - test_inflate(compr, comprLen, uncompr, uncomprLen); - - test_large_deflate(compr, comprLen, uncompr, uncomprLen); - test_large_inflate(compr, comprLen, uncompr, uncomprLen); - - test_flush(compr, &comprLen); - test_sync(compr, comprLen, uncompr, uncomprLen); - comprLen = uncomprLen; - - test_dict_deflate(compr, comprLen); - test_dict_inflate(compr, comprLen, uncompr, uncomprLen); - - exit(0); - return 0; /* to avoid warning */ -} diff --git a/src/zlib/gzio.c b/src/zlib/gzio.c deleted file mode 100644 index e29198ac7a..0000000000 --- a/src/zlib/gzio.c +++ /dev/null @@ -1,869 +0,0 @@ -/* gzio.c -- IO on .gz files - * Copyright (C) 1995-1998 Jean-loup Gailly. - * For conditions of distribution and use, see copyright notice in zlib.h - * - * Compile this file with -DNO_DEFLATE to avoid the compression code. - */ - -/* @(#) $Id$ */ - -#include - -#include "zutil.h" - -struct internal_state {int dummy;}; /* for buggy compilers */ - -#ifndef Z_BUFSIZE -# ifdef MAXSEG_64K -# define Z_BUFSIZE 4096 /* minimize memory usage for 16-bit DOS */ -# else -# define Z_BUFSIZE 16384 -# endif -#endif -#ifndef Z_PRINTF_BUFSIZE -# define Z_PRINTF_BUFSIZE 4096 -#endif - -#define ALLOC(size) malloc(size) -#define TRYFREE(p) {if (p) free(p);} - -static int gz_magic[2] = {0x1f, 0x8b}; /* gzip magic header */ - -/* gzip flag byte */ -#define ASCII_FLAG 0x01 /* bit 0 set: file probably ascii text */ -#define HEAD_CRC 0x02 /* bit 1 set: header CRC present */ -#define EXTRA_FIELD 0x04 /* bit 2 set: extra field present */ -#define ORIG_NAME 0x08 /* bit 3 set: original file name present */ -#define COMMENT 0x10 /* bit 4 set: file comment present */ -#define RESERVED 0xE0 /* bits 5..7: reserved */ - -typedef struct gz_stream { - z_stream stream; - int z_err; /* error code for last stream operation */ - int z_eof; /* set if end of input file */ - FILE *file; /* .gz file */ - Byte *inbuf; /* input buffer */ - Byte *outbuf; /* output buffer */ - uLong crc; /* crc32 of uncompressed data */ - char *msg; /* error message */ - char *path; /* path name for debugging only */ - int transparent; /* 1 if input file is not a .gz file */ - char mode; /* 'w' or 'r' */ - long startpos; /* start of compressed data in file (header skipped) */ -} gz_stream; - - -local gzFile gz_open OF((const char *path, const char *mode, int fd)); -local int do_flush OF((gzFile file, int flush)); -local int get_byte OF((gz_stream *s)); -local void check_header OF((gz_stream *s)); -local int destroy OF((gz_stream *s)); -local void putLong OF((FILE *file, uLong x)); -local uLong getLong OF((gz_stream *s)); - -/* =========================================================================== - Opens a gzip (.gz) file for reading or writing. The mode parameter - is as in fopen ("rb" or "wb"). The file is given either by file descriptor - or path name (if fd == -1). - gz_open return NULL if the file could not be opened or if there was - insufficient memory to allocate the (de)compression state; errno - can be checked to distinguish the two cases (if errno is zero, the - zlib error is Z_MEM_ERROR). -*/ -local gzFile gz_open (path, mode, fd) - const char *path; - const char *mode; - int fd; -{ - int err; - int level = Z_DEFAULT_COMPRESSION; /* compression level */ - int strategy = Z_DEFAULT_STRATEGY; /* compression strategy */ - char *p = (char*)mode; - gz_stream *s; - char fmode[80]; /* copy of mode, without the compression level */ - char *m = fmode; - - if (!path || !mode) return Z_NULL; - - s = (gz_stream *)ALLOC(sizeof(gz_stream)); - if (!s) return Z_NULL; - - s->stream.zalloc = (alloc_func)0; - s->stream.zfree = (free_func)0; - s->stream.opaque = (voidpf)0; - s->stream.next_in = s->inbuf = Z_NULL; - s->stream.next_out = s->outbuf = Z_NULL; - s->stream.avail_in = s->stream.avail_out = 0; - s->file = NULL; - s->z_err = Z_OK; - s->z_eof = 0; - s->crc = crc32(0L, Z_NULL, 0); - s->msg = NULL; - s->transparent = 0; - - s->path = (char*)ALLOC(strlen(path)+1); - if (s->path == NULL) { - return destroy(s), (gzFile)Z_NULL; - } - strcpy(s->path, path); /* do this early for debugging */ - - s->mode = '\0'; - do { - if (*p == 'r') s->mode = 'r'; - if (*p == 'w' || *p == 'a') s->mode = 'w'; - if (*p >= '0' && *p <= '9') { - level = *p - '0'; - } else if (*p == 'f') { - strategy = Z_FILTERED; - } else if (*p == 'h') { - strategy = Z_HUFFMAN_ONLY; - } else { - *m++ = *p; /* copy the mode */ - } - } while (*p++ && m != fmode + sizeof(fmode)); - if (s->mode == '\0') return destroy(s), (gzFile)Z_NULL; - - if (s->mode == 'w') { -#ifdef NO_DEFLATE - err = Z_STREAM_ERROR; -#else - err = deflateInit2(&(s->stream), level, - Z_DEFLATED, -MAX_WBITS, DEF_MEM_LEVEL, strategy); - /* windowBits is passed < 0 to suppress zlib header */ - - s->stream.next_out = s->outbuf = (Byte*)ALLOC(Z_BUFSIZE); -#endif - if (err != Z_OK || s->outbuf == Z_NULL) { - return destroy(s), (gzFile)Z_NULL; - } - } else { - s->stream.next_in = s->inbuf = (Byte*)ALLOC(Z_BUFSIZE); - - err = inflateInit2(&(s->stream), -MAX_WBITS); - /* windowBits is passed < 0 to tell that there is no zlib header. - * Note that in this case inflate *requires* an extra "dummy" byte - * after the compressed stream in order to complete decompression and - * return Z_STREAM_END. Here the gzip CRC32 ensures that 4 bytes are - * present after the compressed stream. - */ - if (err != Z_OK || s->inbuf == Z_NULL) { - return destroy(s), (gzFile)Z_NULL; - } - } - s->stream.avail_out = Z_BUFSIZE; - - errno = 0; - s->file = fd < 0 ? F_OPEN(path, fmode) : (FILE*)fdopen(fd, fmode); - - if (s->file == NULL) { - return destroy(s), (gzFile)Z_NULL; - } - if (s->mode == 'w') { - /* Write a very simple .gz header: - */ - fprintf(s->file, "%c%c%c%c%c%c%c%c%c%c", gz_magic[0], gz_magic[1], - Z_DEFLATED, 0 /*flags*/, 0,0,0,0 /*time*/, 0 /*xflags*/, OS_CODE); - s->startpos = 10L; - /* We use 10L instead of ftell(s->file) to because ftell causes an - * fflush on some systems. This version of the library doesn't use - * startpos anyway in write mode, so this initialization is not - * necessary. - */ - } else { - check_header(s); /* skip the .gz header */ - s->startpos = (ftell(s->file) - s->stream.avail_in); - } - - return (gzFile)s; -} - -/* =========================================================================== - Opens a gzip (.gz) file for reading or writing. -*/ -gzFile ZEXPORT gzopen (path, mode) - const char *path; - const char *mode; -{ - return gz_open (path, mode, -1); -} - -/* =========================================================================== - Associate a gzFile with the file descriptor fd. fd is not dup'ed here - to mimic the behavio(u)r of fdopen. -*/ -gzFile ZEXPORT gzdopen (fd, mode) - int fd; - const char *mode; -{ - char name[20]; - - if (fd < 0) return (gzFile)Z_NULL; - sprintf(name, "", fd); /* for debugging */ - - return gz_open (name, mode, fd); -} - -/* =========================================================================== - * Update the compression level and strategy - */ -int ZEXPORT gzsetparams (file, level, strategy) - gzFile file; - int level; - int strategy; -{ - gz_stream *s = (gz_stream*)file; - - if (s == NULL || s->mode != 'w') return Z_STREAM_ERROR; - - /* Make room to allow flushing */ - if (s->stream.avail_out == 0) { - - s->stream.next_out = s->outbuf; - if (fwrite(s->outbuf, 1, Z_BUFSIZE, s->file) != Z_BUFSIZE) { - s->z_err = Z_ERRNO; - } - s->stream.avail_out = Z_BUFSIZE; - } - - return deflateParams (&(s->stream), level, strategy); -} - -/* =========================================================================== - Read a byte from a gz_stream; update next_in and avail_in. Return EOF - for end of file. - IN assertion: the stream s has been sucessfully opened for reading. -*/ -local int get_byte(s) - gz_stream *s; -{ - if (s->z_eof) return EOF; - if (s->stream.avail_in == 0) { - errno = 0; - s->stream.avail_in = fread(s->inbuf, 1, Z_BUFSIZE, s->file); - if (s->stream.avail_in == 0) { - s->z_eof = 1; - if (ferror(s->file)) s->z_err = Z_ERRNO; - return EOF; - } - s->stream.next_in = s->inbuf; - } - s->stream.avail_in--; - return *(s->stream.next_in)++; -} - -/* =========================================================================== - Check the gzip header of a gz_stream opened for reading. Set the stream - mode to transparent if the gzip magic header is not present; set s->err - to Z_DATA_ERROR if the magic header is present but the rest of the header - is incorrect. - IN assertion: the stream s has already been created sucessfully; - s->stream.avail_in is zero for the first time, but may be non-zero - for concatenated .gz files. -*/ -local void check_header(s) - gz_stream *s; -{ - int method; /* method byte */ - int flags; /* flags byte */ - uInt len; - int c; - - /* Check the gzip magic header */ - for (len = 0; len < 2; len++) { - c = get_byte(s); - if (c != gz_magic[len]) { - if (len != 0) s->stream.avail_in++, s->stream.next_in--; - if (c != EOF) { - s->stream.avail_in++, s->stream.next_in--; - s->transparent = 1; - } - s->z_err = s->stream.avail_in != 0 ? Z_OK : Z_STREAM_END; - return; - } - } - method = get_byte(s); - flags = get_byte(s); - if (method != Z_DEFLATED || (flags & RESERVED) != 0) { - s->z_err = Z_DATA_ERROR; - return; - } - - /* Discard time, xflags and OS code: */ - for (len = 0; len < 6; len++) (void)get_byte(s); - - if ((flags & EXTRA_FIELD) != 0) { /* skip the extra field */ - len = (uInt)get_byte(s); - len += ((uInt)get_byte(s))<<8; - /* len is garbage if EOF but the loop below will quit anyway */ - while (len-- != 0 && get_byte(s) != EOF) ; - } - if ((flags & ORIG_NAME) != 0) { /* skip the original file name */ - while ((c = get_byte(s)) != 0 && c != EOF) ; - } - if ((flags & COMMENT) != 0) { /* skip the .gz file comment */ - while ((c = get_byte(s)) != 0 && c != EOF) ; - } - if ((flags & HEAD_CRC) != 0) { /* skip the header crc */ - for (len = 0; len < 2; len++) (void)get_byte(s); - } - s->z_err = s->z_eof ? Z_DATA_ERROR : Z_OK; -} - - /* =========================================================================== - * Cleanup then free the given gz_stream. Return a zlib error code. - Try freeing in the reverse order of allocations. - */ -local int destroy (s) - gz_stream *s; -{ - int err = Z_OK; - - if (!s) return Z_STREAM_ERROR; - - TRYFREE(s->msg); - - if (s->stream.state != NULL) { - if (s->mode == 'w') { -#ifdef NO_DEFLATE - err = Z_STREAM_ERROR; -#else - err = deflateEnd(&(s->stream)); -#endif - } else if (s->mode == 'r') { - err = inflateEnd(&(s->stream)); - } - } - if (s->file != NULL && fclose(s->file)) { -#ifdef ESPIPE - if (errno != ESPIPE) /* fclose is broken for pipes in HP/UX */ -#endif - err = Z_ERRNO; - } - if (s->z_err < 0) err = s->z_err; - - TRYFREE(s->inbuf); - TRYFREE(s->outbuf); - TRYFREE(s->path); - TRYFREE(s); - return err; -} - -/* =========================================================================== - Reads the given number of uncompressed bytes from the compressed file. - gzread returns the number of bytes actually read (0 for end of file). -*/ -int ZEXPORT gzread (file, buf, len) - gzFile file; - voidp buf; - unsigned len; -{ - gz_stream *s = (gz_stream*)file; - Bytef *start = (Bytef*)buf; /* starting point for crc computation */ - Byte *next_out; /* == stream.next_out but not forced far (for MSDOS) */ - - if (s == NULL || s->mode != 'r') return Z_STREAM_ERROR; - - if (s->z_err == Z_DATA_ERROR || s->z_err == Z_ERRNO) return -1; - if (s->z_err == Z_STREAM_END) return 0; /* EOF */ - - next_out = (Byte*)buf; - s->stream.next_out = (Bytef*)buf; - s->stream.avail_out = len; - - while (s->stream.avail_out != 0) { - - if (s->transparent) { - /* Copy first the lookahead bytes: */ - uInt n = s->stream.avail_in; - if (n > s->stream.avail_out) n = s->stream.avail_out; - if (n > 0) { - zmemcpy(s->stream.next_out, s->stream.next_in, n); - next_out += n; - s->stream.next_out = next_out; - s->stream.next_in += n; - s->stream.avail_out -= n; - s->stream.avail_in -= n; - } - if (s->stream.avail_out > 0) { - s->stream.avail_out -= fread(next_out, 1, s->stream.avail_out, - s->file); - } - len -= s->stream.avail_out; - s->stream.total_in += (uLong)len; - s->stream.total_out += (uLong)len; - if (len == 0) s->z_eof = 1; - return (int)len; - } - if (s->stream.avail_in == 0 && !s->z_eof) { - - errno = 0; - s->stream.avail_in = fread(s->inbuf, 1, Z_BUFSIZE, s->file); - if (s->stream.avail_in == 0) { - s->z_eof = 1; - if (ferror(s->file)) { - s->z_err = Z_ERRNO; - break; - } - } - s->stream.next_in = s->inbuf; - } - s->z_err = inflate(&(s->stream), Z_NO_FLUSH); - - if (s->z_err == Z_STREAM_END) { - /* Check CRC and original size */ - s->crc = crc32(s->crc, start, (uInt)(s->stream.next_out - start)); - start = s->stream.next_out; - - if (getLong(s) != s->crc || getLong(s) != s->stream.total_out) { - s->z_err = Z_DATA_ERROR; - } else { - /* Check for concatenated .gz files: */ - check_header(s); - if (s->z_err == Z_OK) { - uLong total_in = s->stream.total_in; - uLong total_out = s->stream.total_out; - - inflateReset(&(s->stream)); - s->stream.total_in = total_in; - s->stream.total_out = total_out; - s->crc = crc32(0L, Z_NULL, 0); - } - } - } - if (s->z_err != Z_OK || s->z_eof) break; - } - s->crc = crc32(s->crc, start, (uInt)(s->stream.next_out - start)); - - return (int)(len - s->stream.avail_out); -} - - -/* =========================================================================== - Reads one byte from the compressed file. gzgetc returns this byte - or -1 in case of end of file or error. -*/ -int ZEXPORT gzgetc(file) - gzFile file; -{ - unsigned char c; - - return gzread(file, &c, 1) == 1 ? c : -1; -} - - -/* =========================================================================== - Reads bytes from the compressed file until len-1 characters are - read, or a newline character is read and transferred to buf, or an - end-of-file condition is encountered. The string is then terminated - with a null character. - gzgets returns buf, or Z_NULL in case of error. - - The current implementation is not optimized at all. -*/ -char * ZEXPORT gzgets(file, buf, len) - gzFile file; - char *buf; - int len; -{ - char *b = buf; - if (buf == Z_NULL || len <= 0) return Z_NULL; - - while (--len > 0 && gzread(file, buf, 1) == 1 && *buf++ != '\n') ; - *buf = '\0'; - return b == buf && len > 0 ? Z_NULL : b; -} - - -#ifndef NO_DEFLATE -/* =========================================================================== - Writes the given number of uncompressed bytes into the compressed file. - gzwrite returns the number of bytes actually written (0 in case of error). -*/ -int ZEXPORT gzwrite (file, buf, len) - gzFile file; - const voidp buf; - unsigned len; -{ - gz_stream *s = (gz_stream*)file; - - if (s == NULL || s->mode != 'w') return Z_STREAM_ERROR; - - s->stream.next_in = (Bytef*)buf; - s->stream.avail_in = len; - - while (s->stream.avail_in != 0) { - - if (s->stream.avail_out == 0) { - - s->stream.next_out = s->outbuf; - if (fwrite(s->outbuf, 1, Z_BUFSIZE, s->file) != Z_BUFSIZE) { - s->z_err = Z_ERRNO; - break; - } - s->stream.avail_out = Z_BUFSIZE; - } - s->z_err = deflate(&(s->stream), Z_NO_FLUSH); - if (s->z_err != Z_OK) break; - } - s->crc = crc32(s->crc, (const Bytef *)buf, len); - - return (int)(len - s->stream.avail_in); -} - -/* =========================================================================== - Converts, formats, and writes the args to the compressed file under - control of the format string, as in fprintf. gzprintf returns the number of - uncompressed bytes actually written (0 in case of error). -*/ -#ifdef STDC -#include - -int ZEXPORTVA gzprintf (gzFile file, const char *format, /* args */ ...) -{ - char buf[Z_PRINTF_BUFSIZE]; - va_list va; - int len; - - va_start(va, format); -#ifdef HAS_vsnprintf - (void)vsnprintf(buf, sizeof(buf), format, va); -#else - (void)vsprintf(buf, format, va); -#endif - va_end(va); - len = strlen(buf); /* some *sprintf don't return the nb of bytes written */ - if (len <= 0) return 0; - - return gzwrite(file, buf, (unsigned)len); -} -#else /* not ANSI C */ - -int ZEXPORTVA gzprintf (file, format, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, - a11, a12, a13, a14, a15, a16, a17, a18, a19, a20) - gzFile file; - const char *format; - int a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, - a11, a12, a13, a14, a15, a16, a17, a18, a19, a20; -{ - char buf[Z_PRINTF_BUFSIZE]; - int len; - -#ifdef HAS_snprintf - snprintf(buf, sizeof(buf), format, a1, a2, a3, a4, a5, a6, a7, a8, - a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20); -#else - sprintf(buf, format, a1, a2, a3, a4, a5, a6, a7, a8, - a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20); -#endif - len = strlen(buf); /* old sprintf doesn't return the nb of bytes written */ - if (len <= 0) return 0; - - return gzwrite(file, buf, len); -} -#endif - -/* =========================================================================== - Writes c, converted to an unsigned char, into the compressed file. - gzputc returns the value that was written, or -1 in case of error. -*/ -int ZEXPORT gzputc(file, c) - gzFile file; - int c; -{ - unsigned char cc = (unsigned char) c; /* required for big endian systems */ - - return gzwrite(file, &cc, 1) == 1 ? (int)cc : -1; -} - - -/* =========================================================================== - Writes the given null-terminated string to the compressed file, excluding - the terminating null character. - gzputs returns the number of characters written, or -1 in case of error. -*/ -int ZEXPORT gzputs(file, s) - gzFile file; - const char *s; -{ - return gzwrite(file, (char*)s, (unsigned)strlen(s)); -} - - -/* =========================================================================== - Flushes all pending output into the compressed file. The parameter - flush is as in the deflate() function. -*/ -local int do_flush (file, flush) - gzFile file; - int flush; -{ - uInt len; - int done = 0; - gz_stream *s = (gz_stream*)file; - - if (s == NULL || s->mode != 'w') return Z_STREAM_ERROR; - - s->stream.avail_in = 0; /* should be zero already anyway */ - - for (;;) { - len = Z_BUFSIZE - s->stream.avail_out; - - if (len != 0) { - if ((uInt)fwrite(s->outbuf, 1, len, s->file) != len) { - s->z_err = Z_ERRNO; - return Z_ERRNO; - } - s->stream.next_out = s->outbuf; - s->stream.avail_out = Z_BUFSIZE; - } - if (done) break; - s->z_err = deflate(&(s->stream), flush); - - /* Ignore the second of two consecutive flushes: */ - if (len == 0 && s->z_err == Z_BUF_ERROR) s->z_err = Z_OK; - - /* deflate has finished flushing only when it hasn't used up - * all the available space in the output buffer: - */ - done = (s->stream.avail_out != 0 || s->z_err == Z_STREAM_END); - - if (s->z_err != Z_OK && s->z_err != Z_STREAM_END) break; - } - return s->z_err == Z_STREAM_END ? Z_OK : s->z_err; -} - -int ZEXPORT gzflush (file, flush) - gzFile file; - int flush; -{ - gz_stream *s = (gz_stream*)file; - int err = do_flush (file, flush); - - if (err) return err; - fflush(s->file); - return s->z_err == Z_STREAM_END ? Z_OK : s->z_err; -} -#endif /* NO_DEFLATE */ - -/* =========================================================================== - Sets the starting position for the next gzread or gzwrite on the given - compressed file. The offset represents a number of bytes in the - gzseek returns the resulting offset location as measured in bytes from - the beginning of the uncompressed stream, or -1 in case of error. - SEEK_END is not implemented, returns error. - In this version of the library, gzseek can be extremely slow. -*/ -z_off_t ZEXPORT gzseek (file, offset, whence) - gzFile file; - z_off_t offset; - int whence; -{ - gz_stream *s = (gz_stream*)file; - - if (s == NULL || whence == SEEK_END || - s->z_err == Z_ERRNO || s->z_err == Z_DATA_ERROR) { - return -1L; - } - - if (s->mode == 'w') { -#ifdef NO_DEFLATE - return -1L; -#else - if (whence == SEEK_SET) { - offset -= s->stream.total_out; - } - if (offset < 0) return -1L; - - /* At this point, offset is the number of zero bytes to write. */ - if (s->inbuf == Z_NULL) { - s->inbuf = (Byte*)ALLOC(Z_BUFSIZE); /* for seeking */ - zmemzero(s->inbuf, Z_BUFSIZE); - } - while (offset > 0) { - uInt size = Z_BUFSIZE; - if (offset < Z_BUFSIZE) size = (uInt)offset; - - size = gzwrite(file, s->inbuf, size); - if (size == 0) return -1L; - - offset -= size; - } - return (z_off_t)s->stream.total_in; -#endif - } - /* Rest of function is for reading only */ - - /* compute absolute position */ - if (whence == SEEK_CUR) { - offset += s->stream.total_out; - } - if (offset < 0) return -1L; - - if (s->transparent) { - /* map to fseek */ - s->stream.avail_in = 0; - s->stream.next_in = s->inbuf; - if (fseek(s->file, offset, SEEK_SET) < 0) return -1L; - - s->stream.total_in = s->stream.total_out = (uLong)offset; - return offset; - } - - /* For a negative seek, rewind and use positive seek */ - if ((uLong)offset >= s->stream.total_out) { - offset -= s->stream.total_out; - } else if (gzrewind(file) < 0) { - return -1L; - } - /* offset is now the number of bytes to skip. */ - - if (offset != 0 && s->outbuf == Z_NULL) { - s->outbuf = (Byte*)ALLOC(Z_BUFSIZE); - } - while (offset > 0) { - int size = Z_BUFSIZE; - if (offset < Z_BUFSIZE) size = (int)offset; - - size = gzread(file, s->outbuf, (uInt)size); - if (size <= 0) return -1L; - offset -= size; - } - return (z_off_t)s->stream.total_out; -} - -/* =========================================================================== - Rewinds input file. -*/ -int ZEXPORT gzrewind (file) - gzFile file; -{ - gz_stream *s = (gz_stream*)file; - - if (s == NULL || s->mode != 'r') return -1; - - s->z_err = Z_OK; - s->z_eof = 0; - s->stream.avail_in = 0; - s->stream.next_in = s->inbuf; - - if (s->startpos == 0) { /* not a compressed file */ - rewind(s->file); - return 0; - } - - (void) inflateReset(&s->stream); - return fseek(s->file, s->startpos, SEEK_SET); -} - -/* =========================================================================== - Returns the starting position for the next gzread or gzwrite on the - given compressed file. This position represents a number of bytes in the - uncompressed data stream. -*/ -z_off_t ZEXPORT gztell (file) - gzFile file; -{ - return gzseek(file, 0L, SEEK_CUR); -} - -/* =========================================================================== - Returns 1 when EOF has previously been detected reading the given - input stream, otherwise zero. -*/ -int ZEXPORT gzeof (file) - gzFile file; -{ - gz_stream *s = (gz_stream*)file; - - return (s == NULL || s->mode != 'r') ? 0 : s->z_eof; -} - -/* =========================================================================== - Outputs a long in LSB order to the given file -*/ -local void putLong (file, x) - FILE *file; - uLong x; -{ - int n; - for (n = 0; n < 4; n++) { - fputc((int)(x & 0xff), file); - x >>= 8; - } -} - -/* =========================================================================== - Reads a long in LSB order from the given gz_stream. Sets -*/ -local uLong getLong (s) - gz_stream *s; -{ - uLong x = (uLong)get_byte(s); - int c; - - x += ((uLong)get_byte(s))<<8; - x += ((uLong)get_byte(s))<<16; - c = get_byte(s); - if (c == EOF) s->z_err = Z_DATA_ERROR; - x += ((uLong)c)<<24; - return x; -} - -/* =========================================================================== - Flushes all pending output if necessary, closes the compressed file - and deallocates all the (de)compression state. -*/ -int ZEXPORT gzclose (file) - gzFile file; -{ - int err; - gz_stream *s = (gz_stream*)file; - - if (s == NULL) return Z_STREAM_ERROR; - - if (s->mode == 'w') { -#ifdef NO_DEFLATE - return Z_STREAM_ERROR; -#else - err = do_flush (file, Z_FINISH); - if (err != Z_OK) return destroy((gz_stream*)file); - - putLong (s->file, s->crc); - putLong (s->file, s->stream.total_in); -#endif - } - return destroy((gz_stream*)file); -} - -/* =========================================================================== - Returns the error message for the last error which occured on the - given compressed file. errnum is set to zlib error number. If an - error occured in the file system and not in the compression library, - errnum is set to Z_ERRNO and the application may consult errno - to get the exact error code. -*/ -const char* ZEXPORT gzerror (file, errnum) - gzFile file; - int *errnum; -{ - char *m; - gz_stream *s = (gz_stream*)file; - - if (s == NULL) { - *errnum = Z_STREAM_ERROR; - return (const char*)ERR_MSG(Z_STREAM_ERROR); - } - *errnum = s->z_err; - if (*errnum == Z_OK) return (const char*)""; - - m = (char*)(*errnum == Z_ERRNO ? zstrerror(errno) : s->stream.msg); - - if (m == NULL || *m == '\0') m = (char*)ERR_MSG(s->z_err); - - TRYFREE(s->msg); - s->msg = (char*)ALLOC(strlen(s->path) + strlen(m) + 3); - strcpy(s->msg, s->path); - strcat(s->msg, ": "); - strcat(s->msg, m); - return (const char*)s->msg; -} diff --git a/src/zlib/infblock.c b/src/zlib/infblock.c deleted file mode 100644 index f8940c7fab..0000000000 --- a/src/zlib/infblock.c +++ /dev/null @@ -1,405 +0,0 @@ -/* infblock.c -- interpret and process block types to last block - * Copyright (C) 1995-1998 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -#include "zutil.h" -#include "infblock.h" -#include "inftrees.h" -#include "infcodes.h" -#include "infutil.h" - -struct inflate_codes_state {int dummy;}; /* for buggy compilers */ - -/* simplify the use of the inflate_huft type with some defines */ -#define exop word.what.Exop -#define bits word.what.Bits - -/* Table for deflate from PKZIP's appnote.txt. */ -local const uInt border[] = { /* Order of the bit length code lengths */ - 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15}; - -/* - Notes beyond the 1.93a appnote.txt: - - 1. Distance pointers never point before the beginning of the output - stream. - 2. Distance pointers can point back across blocks, up to 32k away. - 3. There is an implied maximum of 7 bits for the bit length table and - 15 bits for the actual data. - 4. If only one code exists, then it is encoded using one bit. (Zero - would be more efficient, but perhaps a little confusing.) If two - codes exist, they are coded using one bit each (0 and 1). - 5. There is no way of sending zero distance codes--a dummy must be - sent if there are none. (History: a pre 2.0 version of PKZIP would - store blocks with no distance codes, but this was discovered to be - too harsh a criterion.) Valid only for 1.93a. 2.04c does allow - zero distance codes, which is sent as one code of zero bits in - length. - 6. There are up to 286 literal/length codes. Code 256 represents the - end-of-block. Note however that the static length tree defines - 288 codes just to fill out the Huffman codes. Codes 286 and 287 - cannot be used though, since there is no length base or extra bits - defined for them. Similarily, there are up to 30 distance codes. - However, static trees define 32 codes (all 5 bits) to fill out the - Huffman codes, but the last two had better not show up in the data. - 7. Unzip can check dynamic Huffman blocks for complete code sets. - The exception is that a single code would not be complete (see #4). - 8. The five bits following the block type is really the number of - literal codes sent minus 257. - 9. Length codes 8,16,16 are interpreted as 13 length codes of 8 bits - (1+6+6). Therefore, to output three times the length, you output - three codes (1+1+1), whereas to output four times the same length, - you only need two codes (1+3). Hmm. - 10. In the tree reconstruction algorithm, Code = Code + Increment - only if BitLength(i) is not zero. (Pretty obvious.) - 11. Correction: 4 Bits: # of Bit Length codes - 4 (4 - 19) - 12. Note: length code 284 can represent 227-258, but length code 285 - really is 258. The last length deserves its own, short code - since it gets used a lot in very redundant files. The length - 258 is special since 258 - 3 (the min match length) is 255. - 13. The literal/length and distance code bit lengths are read as a - single stream of lengths. It is possible (and advantageous) for - a repeat code (16, 17, or 18) to go across the boundary between - the two sets of lengths. - */ - - -void inflate_blocks_reset(s, z, c) -inflate_blocks_statef *s; -z_streamp z; -uLongf *c; -{ - if (c != Z_NULL) - *c = s->check; - if (s->mode == BTREE || s->mode == DTREE) - ZFREE(z, s->sub.trees.blens); - if (s->mode == CODES) - inflate_codes_free(s->sub.decode.codes, z); - s->mode = TYPE; - s->bitk = 0; - s->bitb = 0; - s->read = s->write = s->window; - if (s->checkfn != Z_NULL) - z->adler = s->check = (*s->checkfn)(0L, (const Bytef *)Z_NULL, 0); - Tracev((stderr, "inflate: blocks reset\n")); -} - - -inflate_blocks_statef *inflate_blocks_new(z, c, w) -z_streamp z; -check_func c; -uInt w; -{ - inflate_blocks_statef *s; - - if ((s = (inflate_blocks_statef *)ZALLOC - (z,1,sizeof(struct inflate_blocks_state))) == Z_NULL) - return s; - if ((s->hufts = - (inflate_huft *)ZALLOC(z, sizeof(inflate_huft), MANY)) == Z_NULL) - { - ZFREE(z, s); - return Z_NULL; - } - if ((s->window = (Bytef *)ZALLOC(z, 1, w)) == Z_NULL) - { - ZFREE(z, s->hufts); - ZFREE(z, s); - return Z_NULL; - } - s->end = s->window + w; - s->checkfn = c; - s->mode = TYPE; - Tracev((stderr, "inflate: blocks allocated\n")); - inflate_blocks_reset(s, z, Z_NULL); - return s; -} - - -int inflate_blocks(s, z, r) -inflate_blocks_statef *s; -z_streamp z; -int r; -{ - uInt t; /* temporary storage */ - uLong b; /* bit buffer */ - uInt k; /* bits in bit buffer */ - Bytef *p; /* input data pointer */ - uInt n; /* bytes available there */ - Bytef *q; /* output window write pointer */ - uInt m; /* bytes to end of window or read pointer */ - - /* copy input/output information to locals (UPDATE macro restores) */ - LOAD - - /* process input based on current state */ - while (1) switch (s->mode) - { - case TYPE: - NEEDBITS(3) - t = (uInt)b & 7; - s->last = t & 1; - switch (t >> 1) - { - case 0: /* stored */ - Tracev((stderr, "inflate: stored block%s\n", - s->last ? " (last)" : "")); - DUMPBITS(3) - t = k & 7; /* go to byte boundary */ - DUMPBITS(t) - s->mode = LENS; /* get length of stored block */ - break; - case 1: /* fixed */ - Tracev((stderr, "inflate: fixed codes block%s\n", - s->last ? " (last)" : "")); - { - uInt bl, bd; - inflate_huft *tl, *td; - - inflate_trees_fixed(&bl, &bd, &tl, &td, z); - s->sub.decode.codes = inflate_codes_new(bl, bd, tl, td, z); - if (s->sub.decode.codes == Z_NULL) - { - r = Z_MEM_ERROR; - LEAVE - } - } - DUMPBITS(3) - s->mode = CODES; - break; - case 2: /* dynamic */ - Tracev((stderr, "inflate: dynamic codes block%s\n", - s->last ? " (last)" : "")); - DUMPBITS(3) - s->mode = TABLE; - break; - case 3: /* illegal */ - DUMPBITS(3) - s->mode = BAD; - z->msg = (char*)"invalid block type"; - r = Z_DATA_ERROR; - LEAVE - } - break; - case LENS: - NEEDBITS(32) - if ((((~b) >> 16) & 0xffff) != (b & 0xffff)) - { - s->mode = BAD; - z->msg = (char*)"invalid stored block lengths"; - r = Z_DATA_ERROR; - LEAVE - } - s->sub.left = (uInt)b & 0xffff; - b = k = 0; /* dump bits */ - Tracev((stderr, "inflate: stored length %u\n", s->sub.left)); - s->mode = s->sub.left ? STORED : (s->last ? DRY : TYPE); - break; - case STORED: - if (n == 0) - LEAVE - NEEDOUT - t = s->sub.left; - if (t > n) t = n; - if (t > m) t = m; - zmemcpy(q, p, t); - p += t; n -= t; - q += t; m -= t; - if ((s->sub.left -= t) != 0) - break; - Tracev((stderr, "inflate: stored end, %lu total out\n", - z->total_out + (q >= s->read ? q - s->read : - (s->end - s->read) + (q - s->window)))); - s->mode = s->last ? DRY : TYPE; - break; - case TABLE: - NEEDBITS(14) - s->sub.trees.table = t = (uInt)b & 0x3fff; -#ifndef PKZIP_BUG_WORKAROUND - if ((t & 0x1f) > 29 || ((t >> 5) & 0x1f) > 29) - { - s->mode = BAD; - z->msg = (char*)"too many length or distance symbols"; - r = Z_DATA_ERROR; - LEAVE - } -#endif - t = 258 + (t & 0x1f) + ((t >> 5) & 0x1f); - if ((s->sub.trees.blens = (uIntf*)ZALLOC(z, t, sizeof(uInt))) == Z_NULL) - { - r = Z_MEM_ERROR; - LEAVE - } - DUMPBITS(14) - s->sub.trees.index = 0; - Tracev((stderr, "inflate: table sizes ok\n")); - s->mode = BTREE; - case BTREE: - while (s->sub.trees.index < 4 + (s->sub.trees.table >> 10)) - { - NEEDBITS(3) - s->sub.trees.blens[border[s->sub.trees.index++]] = (uInt)b & 7; - DUMPBITS(3) - } - while (s->sub.trees.index < 19) - s->sub.trees.blens[border[s->sub.trees.index++]] = 0; - s->sub.trees.bb = 7; - t = inflate_trees_bits(s->sub.trees.blens, &s->sub.trees.bb, - &s->sub.trees.tb, s->hufts, z); - if (t != Z_OK) - { - ZFREE(z, s->sub.trees.blens); - r = t; - if (r == Z_DATA_ERROR) - s->mode = BAD; - LEAVE - } - s->sub.trees.index = 0; - Tracev((stderr, "inflate: bits tree ok\n")); - s->mode = DTREE; - case DTREE: - while (t = s->sub.trees.table, - s->sub.trees.index < 258 + (t & 0x1f) + ((t >> 5) & 0x1f)) - { - inflate_huft *h; - uInt i, j, c; - - t = s->sub.trees.bb; - NEEDBITS(t) - h = s->sub.trees.tb + ((uInt)b & inflate_mask[t]); - t = h->bits; - c = h->base; - if (c < 16) - { - DUMPBITS(t) - s->sub.trees.blens[s->sub.trees.index++] = c; - } - else /* c == 16..18 */ - { - i = c == 18 ? 7 : c - 14; - j = c == 18 ? 11 : 3; - NEEDBITS(t + i) - DUMPBITS(t) - j += (uInt)b & inflate_mask[i]; - DUMPBITS(i) - i = s->sub.trees.index; - t = s->sub.trees.table; - if (i + j > 258 + (t & 0x1f) + ((t >> 5) & 0x1f) || - (c == 16 && i < 1)) - { - ZFREE(z, s->sub.trees.blens); - s->mode = BAD; - z->msg = (char*)"invalid bit length repeat"; - r = Z_DATA_ERROR; - LEAVE - } - c = c == 16 ? s->sub.trees.blens[i - 1] : 0; - do { - s->sub.trees.blens[i++] = c; - } while (--j); - s->sub.trees.index = i; - } - } - s->sub.trees.tb = Z_NULL; - { - uInt bl, bd; - inflate_huft *tl, *td; - inflate_codes_statef *c; - - bl = 9; /* must be <= 9 for lookahead assumptions */ - bd = 6; /* must be <= 9 for lookahead assumptions */ - t = s->sub.trees.table; - t = inflate_trees_dynamic(257 + (t & 0x1f), 1 + ((t >> 5) & 0x1f), - s->sub.trees.blens, &bl, &bd, &tl, &td, - s->hufts, z); - ZFREE(z, s->sub.trees.blens); - if (t != Z_OK) - { - if (t == (uInt)Z_DATA_ERROR) - s->mode = BAD; - r = t; - LEAVE - } - Tracev((stderr, "inflate: trees ok\n")); - if ((c = inflate_codes_new(bl, bd, tl, td, z)) == Z_NULL) - { - r = Z_MEM_ERROR; - LEAVE - } - s->sub.decode.codes = c; - } - s->mode = CODES; - case CODES: - UPDATE - if ((r = inflate_codes(s, z, r)) != Z_STREAM_END) - return inflate_flush(s, z, r); - r = Z_OK; - inflate_codes_free(s->sub.decode.codes, z); - LOAD - Tracev((stderr, "inflate: codes end, %lu total out\n", - z->total_out + (q >= s->read ? q - s->read : - (s->end - s->read) + (q - s->window)))); - if (!s->last) - { - s->mode = TYPE; - break; - } - if (k > 7) /* return unused byte, if any */ - { - Assert(k < 16, "inflate_codes grabbed too many bytes") - k -= 8; - n++; - p--; /* can always return one */ - } - s->mode = DRY; - case DRY: - FLUSH - if (s->read != s->write) - LEAVE - s->mode = DONE; - case DONE: - r = Z_STREAM_END; - LEAVE - case BAD: - r = Z_DATA_ERROR; - LEAVE - default: - r = Z_STREAM_ERROR; - LEAVE - } -} - - -int inflate_blocks_free(s, z) -inflate_blocks_statef *s; -z_streamp z; -{ - inflate_blocks_reset(s, z, Z_NULL); - ZFREE(z, s->window); - ZFREE(z, s->hufts); - ZFREE(z, s); - Tracev((stderr, "inflate: blocks freed\n")); - return Z_OK; -} - - -void inflate_set_dictionary(s, d, n) -inflate_blocks_statef *s; -const Bytef *d; -uInt n; -{ - zmemcpy(s->window, d, n); - s->read = s->write = s->window + n; -} - - -/* Returns true if inflate is currently at the end of a block generated - * by Z_SYNC_FLUSH or Z_FULL_FLUSH. - * IN assertion: s != Z_NULL - */ -int inflate_blocks_sync_point(s) -inflate_blocks_statef *s; -{ - return s->mode == LENS; -} diff --git a/src/zlib/infblock.h b/src/zlib/infblock.h deleted file mode 100644 index bd25c80753..0000000000 --- a/src/zlib/infblock.h +++ /dev/null @@ -1,39 +0,0 @@ -/* infblock.h -- header to use infblock.c - * Copyright (C) 1995-1998 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* WARNING: this file should *not* be used by applications. It is - part of the implementation of the compression library and is - subject to change. Applications should only use zlib.h. - */ - -struct inflate_blocks_state; -typedef struct inflate_blocks_state FAR inflate_blocks_statef; - -extern inflate_blocks_statef * inflate_blocks_new OF(( - z_streamp z, - check_func c, /* check function */ - uInt w)); /* window size */ - -extern int inflate_blocks OF(( - inflate_blocks_statef *, - z_streamp , - int)); /* initial return code */ - -extern void inflate_blocks_reset OF(( - inflate_blocks_statef *, - z_streamp , - uLongf *)); /* check value on output */ - -extern int inflate_blocks_free OF(( - inflate_blocks_statef *, - z_streamp)); - -extern void inflate_set_dictionary OF(( - inflate_blocks_statef *s, - const Bytef *d, /* dictionary */ - uInt n)); /* dictionary length */ - -extern int inflate_blocks_sync_point OF(( - inflate_blocks_statef *s)); diff --git a/src/zlib/infcodes.c b/src/zlib/infcodes.c deleted file mode 100644 index 1d3baa92eb..0000000000 --- a/src/zlib/infcodes.c +++ /dev/null @@ -1,250 +0,0 @@ -/* infcodes.c -- process literals and length/distance pairs - * Copyright (C) 1995-1998 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -#include "zutil.h" -#include "inftrees.h" -#include "infblock.h" -#include "infcodes.h" -#include "infutil.h" -#include "inffast.h" - -/* simplify the use of the inflate_huft type with some defines */ -#define exop word.what.Exop -#define bits word.what.Bits - -typedef enum { /* waiting for "i:"=input, "o:"=output, "x:"=nothing */ - START, /* x: set up for LEN */ - LEN, /* i: get length/literal/eob next */ - LENEXT, /* i: getting length extra (have base) */ - DIST, /* i: get distance next */ - DISTEXT, /* i: getting distance extra */ - COPY, /* o: copying bytes in window, waiting for space */ - LIT, /* o: got literal, waiting for output space */ - WASH, /* o: got eob, possibly still output waiting */ - END, /* x: got eob and all data flushed */ - BADCODE} /* x: got error */ -inflate_codes_mode; - -/* inflate codes private state */ -struct inflate_codes_state { - - /* mode */ - inflate_codes_mode mode; /* current inflate_codes mode */ - - /* mode dependent information */ - uInt len; - union { - struct { - inflate_huft *tree; /* pointer into tree */ - uInt need; /* bits needed */ - } code; /* if LEN or DIST, where in tree */ - uInt lit; /* if LIT, literal */ - struct { - uInt get; /* bits to get for extra */ - uInt dist; /* distance back to copy from */ - } copy; /* if EXT or COPY, where and how much */ - } sub; /* submode */ - - /* mode independent information */ - Byte lbits; /* ltree bits decoded per branch */ - Byte dbits; /* dtree bits decoder per branch */ - inflate_huft *ltree; /* literal/length/eob tree */ - inflate_huft *dtree; /* distance tree */ - -}; - - -inflate_codes_statef *inflate_codes_new(bl, bd, tl, td, z) -uInt bl, bd; -inflate_huft *tl; -inflate_huft *td; /* need separate declaration for Borland C++ */ -z_streamp z; -{ - inflate_codes_statef *c; - - if ((c = (inflate_codes_statef *) - ZALLOC(z,1,sizeof(struct inflate_codes_state))) != Z_NULL) - { - c->mode = START; - c->lbits = (Byte)bl; - c->dbits = (Byte)bd; - c->ltree = tl; - c->dtree = td; - Tracev((stderr, "inflate: codes new\n")); - } - return c; -} - - -int inflate_codes(s, z, r) -inflate_blocks_statef *s; -z_streamp z; -int r; -{ - uInt j; /* temporary storage */ - inflate_huft *t; /* temporary pointer */ - uInt e; /* extra bits or operation */ - uLong b; /* bit buffer */ - uInt k; /* bits in bit buffer */ - Bytef *p; /* input data pointer */ - uInt n; /* bytes available there */ - Bytef *q; /* output window write pointer */ - uInt m; /* bytes to end of window or read pointer */ - Bytef *f; /* pointer to copy strings from */ - inflate_codes_statef *c = s->sub.decode.codes; /* codes state */ - - /* copy input/output information to locals (UPDATE macro restores) */ - LOAD - - /* process input and output based on current state */ - while (1) switch (c->mode) - { /* waiting for "i:"=input, "o:"=output, "x:"=nothing */ - case START: /* x: set up for LEN */ -#ifndef SLOW - if (m >= 258 && n >= 10) - { - UPDATE - r = inflate_fast(c->lbits, c->dbits, c->ltree, c->dtree, s, z); - LOAD - if (r != Z_OK) - { - c->mode = r == Z_STREAM_END ? WASH : BADCODE; - break; - } - } -#endif /* !SLOW */ - c->sub.code.need = c->lbits; - c->sub.code.tree = c->ltree; - c->mode = LEN; - case LEN: /* i: get length/literal/eob next */ - j = c->sub.code.need; - NEEDBITS(j) - t = c->sub.code.tree + ((uInt)b & inflate_mask[j]); - DUMPBITS(t->bits) - e = (uInt)(t->exop); - if (e == 0) /* literal */ - { - c->sub.lit = t->base; - Tracevv((stderr, t->base >= 0x20 && t->base < 0x7f ? - "inflate: literal '%c'\n" : - "inflate: literal 0x%02x\n", t->base)); - c->mode = LIT; - break; - } - if (e & 16) /* length */ - { - c->sub.copy.get = e & 15; - c->len = t->base; - c->mode = LENEXT; - break; - } - if ((e & 64) == 0) /* next table */ - { - c->sub.code.need = e; - c->sub.code.tree = t + t->base; - break; - } - if (e & 32) /* end of block */ - { - Tracevv((stderr, "inflate: end of block\n")); - c->mode = WASH; - break; - } - c->mode = BADCODE; /* invalid code */ - z->msg = (char*)"invalid literal/length code"; - r = Z_DATA_ERROR; - LEAVE - case LENEXT: /* i: getting length extra (have base) */ - j = c->sub.copy.get; - NEEDBITS(j) - c->len += (uInt)b & inflate_mask[j]; - DUMPBITS(j) - c->sub.code.need = c->dbits; - c->sub.code.tree = c->dtree; - Tracevv((stderr, "inflate: length %u\n", c->len)); - c->mode = DIST; - case DIST: /* i: get distance next */ - j = c->sub.code.need; - NEEDBITS(j) - t = c->sub.code.tree + ((uInt)b & inflate_mask[j]); - DUMPBITS(t->bits) - e = (uInt)(t->exop); - if (e & 16) /* distance */ - { - c->sub.copy.get = e & 15; - c->sub.copy.dist = t->base; - c->mode = DISTEXT; - break; - } - if ((e & 64) == 0) /* next table */ - { - c->sub.code.need = e; - c->sub.code.tree = t + t->base; - break; - } - c->mode = BADCODE; /* invalid code */ - z->msg = (char*)"invalid distance code"; - r = Z_DATA_ERROR; - LEAVE - case DISTEXT: /* i: getting distance extra */ - j = c->sub.copy.get; - NEEDBITS(j) - c->sub.copy.dist += (uInt)b & inflate_mask[j]; - DUMPBITS(j) - Tracevv((stderr, "inflate: distance %u\n", c->sub.copy.dist)); - c->mode = COPY; - case COPY: /* o: copying bytes in window, waiting for space */ -#ifndef __TURBOC__ /* Turbo C bug for following expression */ - f = (uInt)(q - s->window) < c->sub.copy.dist ? - s->end - (c->sub.copy.dist - (q - s->window)) : - q - c->sub.copy.dist; -#else - f = q - c->sub.copy.dist; - if ((uInt)(q - s->window) < c->sub.copy.dist) - f = s->end - (c->sub.copy.dist - (uInt)(q - s->window)); -#endif - while (c->len) - { - NEEDOUT - OUTBYTE(*f++) - if (f == s->end) - f = s->window; - c->len--; - } - c->mode = START; - break; - case LIT: /* o: got literal, waiting for output space */ - NEEDOUT - OUTBYTE(c->sub.lit) - c->mode = START; - break; - case WASH: /* o: got eob, possibly more output */ - FLUSH - if (s->read != s->write) - LEAVE - c->mode = END; - case END: - r = Z_STREAM_END; - LEAVE - case BADCODE: /* x: got error */ - r = Z_DATA_ERROR; - LEAVE - default: - r = Z_STREAM_ERROR; - LEAVE - } -#ifdef NEED_DUMMY_RETURN - return Z_STREAM_ERROR; /* Some dumb compilers complain without this */ -#endif -} - - -void inflate_codes_free(c, z) -inflate_codes_statef *c; -z_streamp z; -{ - ZFREE(z, c); - Tracev((stderr, "inflate: codes free\n")); -} diff --git a/src/zlib/infcodes.h b/src/zlib/infcodes.h deleted file mode 100644 index 6c750d896f..0000000000 --- a/src/zlib/infcodes.h +++ /dev/null @@ -1,27 +0,0 @@ -/* infcodes.h -- header to use infcodes.c - * Copyright (C) 1995-1998 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* WARNING: this file should *not* be used by applications. It is - part of the implementation of the compression library and is - subject to change. Applications should only use zlib.h. - */ - -struct inflate_codes_state; -typedef struct inflate_codes_state FAR inflate_codes_statef; - -extern inflate_codes_statef *inflate_codes_new OF(( - uInt, uInt, - inflate_huft *, inflate_huft *, - z_streamp )); - -extern int inflate_codes OF(( - inflate_blocks_statef *, - z_streamp , - int)); - -extern void inflate_codes_free OF(( - inflate_codes_statef *, - z_streamp )); - diff --git a/src/zlib/inffast.c b/src/zlib/inffast.c deleted file mode 100644 index 61a78ee933..0000000000 --- a/src/zlib/inffast.c +++ /dev/null @@ -1,170 +0,0 @@ -/* inffast.c -- process literals and length/distance pairs fast - * Copyright (C) 1995-1998 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -#include "zutil.h" -#include "inftrees.h" -#include "infblock.h" -#include "infcodes.h" -#include "infutil.h" -#include "inffast.h" - -struct inflate_codes_state {int dummy;}; /* for buggy compilers */ - -/* simplify the use of the inflate_huft type with some defines */ -#define exop word.what.Exop -#define bits word.what.Bits - -/* macros for bit input with no checking and for returning unused bytes */ -#define GRABBITS(j) {while(k<(j)){b|=((uLong)NEXTBYTE)<avail_in-n;c=(k>>3)>3:c;n+=c;p-=c;k-=c<<3;} - -/* Called with number of bytes left to write in window at least 258 - (the maximum string length) and number of input bytes available - at least ten. The ten bytes are six bytes for the longest length/ - distance pair plus four bytes for overloading the bit buffer. */ - -int inflate_fast(bl, bd, tl, td, s, z) -uInt bl, bd; -inflate_huft *tl; -inflate_huft *td; /* need separate declaration for Borland C++ */ -inflate_blocks_statef *s; -z_streamp z; -{ - inflate_huft *t; /* temporary pointer */ - uInt e; /* extra bits or operation */ - uLong b; /* bit buffer */ - uInt k; /* bits in bit buffer */ - Bytef *p; /* input data pointer */ - uInt n; /* bytes available there */ - Bytef *q; /* output window write pointer */ - uInt m; /* bytes to end of window or read pointer */ - uInt ml; /* mask for literal/length tree */ - uInt md; /* mask for distance tree */ - uInt c; /* bytes to copy */ - uInt d; /* distance back to copy from */ - Bytef *r; /* copy source pointer */ - - /* load input, output, bit values */ - LOAD - - /* initialize masks */ - ml = inflate_mask[bl]; - md = inflate_mask[bd]; - - /* do until not enough input or output space for fast loop */ - do { /* assume called with m >= 258 && n >= 10 */ - /* get literal/length code */ - GRABBITS(20) /* max bits for literal/length code */ - if ((e = (t = tl + ((uInt)b & ml))->exop) == 0) - { - DUMPBITS(t->bits) - Tracevv((stderr, t->base >= 0x20 && t->base < 0x7f ? - "inflate: * literal '%c'\n" : - "inflate: * literal 0x%02x\n", t->base)); - *q++ = (Byte)t->base; - m--; - continue; - } - do { - DUMPBITS(t->bits) - if (e & 16) - { - /* get extra bits for length */ - e &= 15; - c = t->base + ((uInt)b & inflate_mask[e]); - DUMPBITS(e) - Tracevv((stderr, "inflate: * length %u\n", c)); - - /* decode distance base of block to copy */ - GRABBITS(15); /* max bits for distance code */ - e = (t = td + ((uInt)b & md))->exop; - do { - DUMPBITS(t->bits) - if (e & 16) - { - /* get extra bits to add to distance base */ - e &= 15; - GRABBITS(e) /* get extra bits (up to 13) */ - d = t->base + ((uInt)b & inflate_mask[e]); - DUMPBITS(e) - Tracevv((stderr, "inflate: * distance %u\n", d)); - - /* do the copy */ - m -= c; - if ((uInt)(q - s->window) >= d) /* offset before dest */ - { /* just copy */ - r = q - d; - *q++ = *r++; c--; /* minimum count is three, */ - *q++ = *r++; c--; /* so unroll loop a little */ - } - else /* else offset after destination */ - { - e = d - (uInt)(q - s->window); /* bytes from offset to end */ - r = s->end - e; /* pointer to offset */ - if (c > e) /* if source crosses, */ - { - c -= e; /* copy to end of window */ - do { - *q++ = *r++; - } while (--e); - r = s->window; /* copy rest from start of window */ - } - } - do { /* copy all or what's left */ - *q++ = *r++; - } while (--c); - break; - } - else if ((e & 64) == 0) - { - t += t->base; - e = (t += ((uInt)b & inflate_mask[e]))->exop; - } - else - { - z->msg = (char*)"invalid distance code"; - UNGRAB - UPDATE - return Z_DATA_ERROR; - } - } while (1); - break; - } - if ((e & 64) == 0) - { - t += t->base; - if ((e = (t += ((uInt)b & inflate_mask[e]))->exop) == 0) - { - DUMPBITS(t->bits) - Tracevv((stderr, t->base >= 0x20 && t->base < 0x7f ? - "inflate: * literal '%c'\n" : - "inflate: * literal 0x%02x\n", t->base)); - *q++ = (Byte)t->base; - m--; - break; - } - } - else if (e & 32) - { - Tracevv((stderr, "inflate: * end of block\n")); - UNGRAB - UPDATE - return Z_STREAM_END; - } - else - { - z->msg = (char*)"invalid literal/length code"; - UNGRAB - UPDATE - return Z_DATA_ERROR; - } - } while (1); - } while (m >= 258 && n >= 10); - - /* not enough input or output--restore pointers and return */ - UNGRAB - UPDATE - return Z_OK; -} diff --git a/src/zlib/inffast.h b/src/zlib/inffast.h deleted file mode 100644 index 8facec5531..0000000000 --- a/src/zlib/inffast.h +++ /dev/null @@ -1,17 +0,0 @@ -/* inffast.h -- header to use inffast.c - * Copyright (C) 1995-1998 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* WARNING: this file should *not* be used by applications. It is - part of the implementation of the compression library and is - subject to change. Applications should only use zlib.h. - */ - -extern int inflate_fast OF(( - uInt, - uInt, - inflate_huft *, - inflate_huft *, - inflate_blocks_statef *, - z_streamp )); diff --git a/src/zlib/inffixed.h b/src/zlib/inffixed.h deleted file mode 100644 index 644ef6cd4a..0000000000 --- a/src/zlib/inffixed.h +++ /dev/null @@ -1,125 +0,0 @@ -/* inffixed.h -- table for decoding fixed codes - * Generated automatically by the maketree.c program - */ - -/* WARNING: this file should *not* be used by applications. It is - part of the implementation of the compression library and is - subject to change. Applications should only use zlib.h. - */ - -local uInt fixed_bl = 9; -local uInt fixed_bd = 5; -local inflate_huft fixed_tl[] = { - {{96,7},256}, {{0,8},80}, {{0,8},16}, {{84,8},115}, {{82,7},31}, - {{0,8},112}, {{0,8},48}, {{0,9},192}, {{80,7},10}, {{0,8},96}, - {{0,8},32}, {{0,9},160}, {{0,8},0}, {{0,8},128}, {{0,8},64}, - {{0,9},224}, {{80,7},6}, {{0,8},88}, {{0,8},24}, {{0,9},144}, - {{83,7},59}, {{0,8},120}, {{0,8},56}, {{0,9},208}, {{81,7},17}, - {{0,8},104}, {{0,8},40}, {{0,9},176}, {{0,8},8}, {{0,8},136}, - {{0,8},72}, {{0,9},240}, {{80,7},4}, {{0,8},84}, {{0,8},20}, - {{85,8},227}, {{83,7},43}, {{0,8},116}, {{0,8},52}, {{0,9},200}, - {{81,7},13}, {{0,8},100}, {{0,8},36}, {{0,9},168}, {{0,8},4}, - {{0,8},132}, {{0,8},68}, {{0,9},232}, {{80,7},8}, {{0,8},92}, - {{0,8},28}, {{0,9},152}, {{84,7},83}, {{0,8},124}, {{0,8},60}, - {{0,9},216}, {{82,7},23}, {{0,8},108}, {{0,8},44}, {{0,9},184}, - {{0,8},12}, {{0,8},140}, {{0,8},76}, {{0,9},248}, {{80,7},3}, - {{0,8},82}, {{0,8},18}, {{85,8},163}, {{83,7},35}, {{0,8},114}, - {{0,8},50}, {{0,9},196}, {{81,7},11}, {{0,8},98}, {{0,8},34}, - {{0,9},164}, {{0,8},2}, {{0,8},130}, {{0,8},66}, {{0,9},228}, - {{80,7},7}, {{0,8},90}, {{0,8},26}, {{0,9},148}, {{84,7},67}, - {{0,8},122}, {{0,8},58}, {{0,9},212}, {{82,7},19}, {{0,8},106}, - {{0,8},42}, {{0,9},180}, {{0,8},10}, {{0,8},138}, {{0,8},74}, - {{0,9},244}, {{80,7},5}, {{0,8},86}, {{0,8},22}, {{192,8},0}, - {{83,7},51}, {{0,8},118}, {{0,8},54}, {{0,9},204}, {{81,7},15}, - {{0,8},102}, {{0,8},38}, {{0,9},172}, {{0,8},6}, {{0,8},134}, - {{0,8},70}, {{0,9},236}, {{80,7},9}, {{0,8},94}, {{0,8},30}, - {{0,9},156}, {{84,7},99}, {{0,8},126}, {{0,8},62}, {{0,9},220}, - {{82,7},27}, {{0,8},110}, {{0,8},46}, {{0,9},188}, {{0,8},14}, - {{0,8},142}, {{0,8},78}, {{0,9},252}, {{96,7},256}, {{0,8},81}, - {{0,8},17}, {{85,8},131}, {{82,7},31}, {{0,8},113}, {{0,8},49}, - {{0,9},194}, {{80,7},10}, {{0,8},97}, {{0,8},33}, {{0,9},162}, - {{0,8},1}, {{0,8},129}, {{0,8},65}, {{0,9},226}, {{80,7},6}, - {{0,8},89}, {{0,8},25}, {{0,9},146}, {{83,7},59}, {{0,8},121}, - {{0,8},57}, {{0,9},210}, {{81,7},17}, {{0,8},105}, {{0,8},41}, - {{0,9},178}, {{0,8},9}, {{0,8},137}, {{0,8},73}, {{0,9},242}, - {{80,7},4}, {{0,8},85}, {{0,8},21}, {{80,8},258}, {{83,7},43}, - {{0,8},117}, {{0,8},53}, {{0,9},202}, {{81,7},13}, {{0,8},101}, - {{0,8},37}, {{0,9},170}, {{0,8},5}, {{0,8},133}, {{0,8},69}, - {{0,9},234}, {{80,7},8}, {{0,8},93}, {{0,8},29}, {{0,9},154}, - {{84,7},83}, {{0,8},125}, {{0,8},61}, {{0,9},218}, {{82,7},23}, - {{0,8},109}, {{0,8},45}, {{0,9},186}, {{0,8},13}, {{0,8},141}, - {{0,8},77}, {{0,9},250}, {{80,7},3}, {{0,8},83}, {{0,8},19}, - {{85,8},195}, {{83,7},35}, {{0,8},115}, {{0,8},51}, {{0,9},198}, - {{81,7},11}, {{0,8},99}, {{0,8},35}, {{0,9},166}, {{0,8},3}, - {{0,8},131}, {{0,8},67}, {{0,9},230}, {{80,7},7}, {{0,8},91}, - {{0,8},27}, {{0,9},150}, {{84,7},67}, {{0,8},123}, {{0,8},59}, - {{0,9},214}, {{82,7},19}, {{0,8},107}, {{0,8},43}, {{0,9},182}, - {{0,8},11}, {{0,8},139}, {{0,8},75}, {{0,9},246}, {{80,7},5}, - {{0,8},87}, {{0,8},23}, {{192,8},0}, {{83,7},51}, {{0,8},119}, - {{0,8},55}, {{0,9},206}, {{81,7},15}, {{0,8},103}, {{0,8},39}, - {{0,9},174}, {{0,8},7}, {{0,8},135}, {{0,8},71}, {{0,9},238}, - {{80,7},9}, {{0,8},95}, {{0,8},31}, {{0,9},158}, {{84,7},99}, - {{0,8},127}, {{0,8},63}, {{0,9},222}, {{82,7},27}, {{0,8},111}, - {{0,8},47}, {{0,9},190}, {{0,8},15}, {{0,8},143}, {{0,8},79}, - {{0,9},254}, {{96,7},256}, {{0,8},80}, {{0,8},16}, {{84,8},115}, - {{82,7},31}, {{0,8},112}, {{0,8},48}, {{0,9},193}, {{80,7},10}, - {{0,8},96}, {{0,8},32}, {{0,9},161}, {{0,8},0}, {{0,8},128}, - {{0,8},64}, {{0,9},225}, {{80,7},6}, {{0,8},88}, {{0,8},24}, - {{0,9},145}, {{83,7},59}, {{0,8},120}, {{0,8},56}, {{0,9},209}, - {{81,7},17}, {{0,8},104}, {{0,8},40}, {{0,9},177}, {{0,8},8}, - {{0,8},136}, {{0,8},72}, {{0,9},241}, {{80,7},4}, {{0,8},84}, - {{0,8},20}, {{85,8},227}, {{83,7},43}, {{0,8},116}, {{0,8},52}, - {{0,9},201}, {{81,7},13}, {{0,8},100}, {{0,8},36}, {{0,9},169}, - {{0,8},4}, {{0,8},132}, {{0,8},68}, {{0,9},233}, {{80,7},8}, - {{0,8},92}, {{0,8},28}, {{0,9},153}, {{84,7},83}, {{0,8},124}, - {{0,8},60}, {{0,9},217}, {{82,7},23}, {{0,8},108}, {{0,8},44}, - {{0,9},185}, {{0,8},12}, {{0,8},140}, {{0,8},76}, {{0,9},249}, - {{80,7},3}, {{0,8},82}, {{0,8},18}, {{85,8},163}, {{83,7},35}, - {{0,8},114}, {{0,8},50}, {{0,9},197}, {{81,7},11}, {{0,8},98}, - {{0,8},34}, {{0,9},165}, {{0,8},2}, {{0,8},130}, {{0,8},66}, - {{0,9},229}, {{80,7},7}, {{0,8},90}, {{0,8},26}, {{0,9},149}, - {{84,7},67}, {{0,8},122}, {{0,8},58}, {{0,9},213}, {{82,7},19}, - {{0,8},106}, {{0,8},42}, {{0,9},181}, {{0,8},10}, {{0,8},138}, - {{0,8},74}, {{0,9},245}, {{80,7},5}, {{0,8},86}, {{0,8},22}, - {{192,8},0}, {{83,7},51}, {{0,8},118}, {{0,8},54}, {{0,9},205}, - {{81,7},15}, {{0,8},102}, {{0,8},38}, {{0,9},173}, {{0,8},6}, - {{0,8},134}, {{0,8},70}, {{0,9},237}, {{80,7},9}, {{0,8},94}, - {{0,8},30}, {{0,9},157}, {{84,7},99}, {{0,8},126}, {{0,8},62}, - {{0,9},221}, {{82,7},27}, {{0,8},110}, {{0,8},46}, {{0,9},189}, - {{0,8},14}, {{0,8},142}, {{0,8},78}, {{0,9},253}, {{96,7},256}, - {{0,8},81}, {{0,8},17}, {{85,8},131}, {{82,7},31}, {{0,8},113}, - {{0,8},49}, {{0,9},195}, {{80,7},10}, {{0,8},97}, {{0,8},33}, - {{0,9},163}, {{0,8},1}, {{0,8},129}, {{0,8},65}, {{0,9},227}, - {{80,7},6}, {{0,8},89}, {{0,8},25}, {{0,9},147}, {{83,7},59}, - {{0,8},121}, {{0,8},57}, {{0,9},211}, {{81,7},17}, {{0,8},105}, - {{0,8},41}, {{0,9},179}, {{0,8},9}, {{0,8},137}, {{0,8},73}, - {{0,9},243}, {{80,7},4}, {{0,8},85}, {{0,8},21}, {{80,8},258}, - {{83,7},43}, {{0,8},117}, {{0,8},53}, {{0,9},203}, {{81,7},13}, - {{0,8},101}, {{0,8},37}, {{0,9},171}, {{0,8},5}, {{0,8},133}, - {{0,8},69}, {{0,9},235}, {{80,7},8}, {{0,8},93}, {{0,8},29}, - {{0,9},155}, {{84,7},83}, {{0,8},125}, {{0,8},61}, {{0,9},219}, - {{82,7},23}, {{0,8},109}, {{0,8},45}, {{0,9},187}, {{0,8},13}, - {{0,8},141}, {{0,8},77}, {{0,9},251}, {{80,7},3}, {{0,8},83}, - {{0,8},19}, {{85,8},195}, {{83,7},35}, {{0,8},115}, {{0,8},51}, - {{0,9},199}, {{81,7},11}, {{0,8},99}, {{0,8},35}, {{0,9},167}, - {{0,8},3}, {{0,8},131}, {{0,8},67}, {{0,9},231}, {{80,7},7}, - {{0,8},91}, {{0,8},27}, {{0,9},151}, {{84,7},67}, {{0,8},123}, - {{0,8},59}, {{0,9},215}, {{82,7},19}, {{0,8},107}, {{0,8},43}, - {{0,9},183}, {{0,8},11}, {{0,8},139}, {{0,8},75}, {{0,9},247}, - {{80,7},5}, {{0,8},87}, {{0,8},23}, {{192,8},0}, {{83,7},51}, - {{0,8},119}, {{0,8},55}, {{0,9},207}, {{81,7},15}, {{0,8},103}, - {{0,8},39}, {{0,9},175}, {{0,8},7}, {{0,8},135}, {{0,8},71}, - {{0,9},239}, {{80,7},9}, {{0,8},95}, {{0,8},31}, {{0,9},159}, - {{84,7},99}, {{0,8},127}, {{0,8},63}, {{0,9},223}, {{82,7},27}, - {{0,8},111}, {{0,8},47}, {{0,9},191}, {{0,8},15}, {{0,8},143}, - {{0,8},79}, {{0,9},255} - }; -local inflate_huft fixed_td[] = { - {{80,5},1}, {{87,5},257}, {{83,5},17}, {{91,5},4097}, {{81,5},5}, - {{89,5},1025}, {{85,5},65}, {{93,5},16385}, {{80,5},3}, {{88,5},513}, - {{84,5},33}, {{92,5},8193}, {{82,5},9}, {{90,5},2049}, {{86,5},129}, - {{192,5},24577}, {{80,5},2}, {{87,5},385}, {{83,5},25}, {{91,5},6145}, - {{81,5},7}, {{89,5},1537}, {{85,5},97}, {{93,5},24577}, {{80,5},4}, - {{88,5},769}, {{84,5},49}, {{92,5},12289}, {{82,5},13}, {{90,5},3073}, - {{86,5},193}, {{192,5},24577} - }; diff --git a/src/zlib/inflate.c b/src/zlib/inflate.c deleted file mode 100644 index 32e9b8de67..0000000000 --- a/src/zlib/inflate.c +++ /dev/null @@ -1,366 +0,0 @@ -/* inflate.c -- zlib interface to inflate modules - * Copyright (C) 1995-1998 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -#include "zutil.h" -#include "infblock.h" - -struct inflate_blocks_state {int dummy;}; /* for buggy compilers */ - -typedef enum { - METHOD, /* waiting for method byte */ - FLAG, /* waiting for flag byte */ - DICT4, /* four dictionary check bytes to go */ - DICT3, /* three dictionary check bytes to go */ - DICT2, /* two dictionary check bytes to go */ - DICT1, /* one dictionary check byte to go */ - DICT0, /* waiting for inflateSetDictionary */ - BLOCKS, /* decompressing blocks */ - CHECK4, /* four check bytes to go */ - CHECK3, /* three check bytes to go */ - CHECK2, /* two check bytes to go */ - CHECK1, /* one check byte to go */ - DONE, /* finished check, done */ - BAD} /* got an error--stay here */ -inflate_mode; - -/* inflate private state */ -struct internal_state { - - /* mode */ - inflate_mode mode; /* current inflate mode */ - - /* mode dependent information */ - union { - uInt method; /* if FLAGS, method byte */ - struct { - uLong was; /* computed check value */ - uLong need; /* stream check value */ - } check; /* if CHECK, check values to compare */ - uInt marker; /* if BAD, inflateSync's marker bytes count */ - } sub; /* submode */ - - /* mode independent information */ - int nowrap; /* flag for no wrapper */ - uInt wbits; /* log2(window size) (8..15, defaults to 15) */ - inflate_blocks_statef - *blocks; /* current inflate_blocks state */ - -}; - - -int ZEXPORT inflateReset(z) -z_streamp z; -{ - if (z == Z_NULL || z->state == Z_NULL) - return Z_STREAM_ERROR; - z->total_in = z->total_out = 0; - z->msg = Z_NULL; - z->state->mode = z->state->nowrap ? BLOCKS : METHOD; - inflate_blocks_reset(z->state->blocks, z, Z_NULL); - Tracev((stderr, "inflate: reset\n")); - return Z_OK; -} - - -int ZEXPORT inflateEnd(z) -z_streamp z; -{ - if (z == Z_NULL || z->state == Z_NULL || z->zfree == Z_NULL) - return Z_STREAM_ERROR; - if (z->state->blocks != Z_NULL) - inflate_blocks_free(z->state->blocks, z); - ZFREE(z, z->state); - z->state = Z_NULL; - Tracev((stderr, "inflate: end\n")); - return Z_OK; -} - - -int ZEXPORT inflateInit2_(z, w, version, stream_size) -z_streamp z; -int w; -const char *version; -int stream_size; -{ - if (version == Z_NULL || version[0] != ZLIB_VERSION[0] || - stream_size != sizeof(z_stream)) - return Z_VERSION_ERROR; - - /* initialize state */ - if (z == Z_NULL) - return Z_STREAM_ERROR; - z->msg = Z_NULL; - if (z->zalloc == Z_NULL) - { - z->zalloc = zcalloc; - z->opaque = (voidpf)0; - } - if (z->zfree == Z_NULL) z->zfree = zcfree; - if ((z->state = (struct internal_state FAR *) - ZALLOC(z,1,sizeof(struct internal_state))) == Z_NULL) - return Z_MEM_ERROR; - z->state->blocks = Z_NULL; - - /* handle undocumented nowrap option (no zlib header or check) */ - z->state->nowrap = 0; - if (w < 0) - { - w = - w; - z->state->nowrap = 1; - } - - /* set window size */ - if (w < 8 || w > 15) - { - inflateEnd(z); - return Z_STREAM_ERROR; - } - z->state->wbits = (uInt)w; - - /* create inflate_blocks state */ - if ((z->state->blocks = - inflate_blocks_new(z, z->state->nowrap ? Z_NULL : adler32, (uInt)1 << w)) - == Z_NULL) - { - inflateEnd(z); - return Z_MEM_ERROR; - } - Tracev((stderr, "inflate: allocated\n")); - - /* reset state */ - inflateReset(z); - return Z_OK; -} - - -int ZEXPORT inflateInit_(z, version, stream_size) -z_streamp z; -const char *version; -int stream_size; -{ - return inflateInit2_(z, DEF_WBITS, version, stream_size); -} - - -#define NEEDBYTE {if(z->avail_in==0)return r;r=f;} -#define NEXTBYTE (z->avail_in--,z->total_in++,*z->next_in++) - -int ZEXPORT inflate(z, f) -z_streamp z; -int f; -{ - int r; - uInt b; - - if (z == Z_NULL || z->state == Z_NULL || z->next_in == Z_NULL) - return Z_STREAM_ERROR; - f = f == Z_FINISH ? Z_BUF_ERROR : Z_OK; - r = Z_BUF_ERROR; - while (1) switch (z->state->mode) - { - case METHOD: - NEEDBYTE - if (((z->state->sub.method = NEXTBYTE) & 0xf) != Z_DEFLATED) - { - z->state->mode = BAD; - z->msg = (char*)"unknown compression method"; - z->state->sub.marker = 5; /* can't try inflateSync */ - break; - } - if ((z->state->sub.method >> 4) + 8 > z->state->wbits) - { - z->state->mode = BAD; - z->msg = (char*)"invalid window size"; - z->state->sub.marker = 5; /* can't try inflateSync */ - break; - } - z->state->mode = FLAG; - case FLAG: - NEEDBYTE - b = NEXTBYTE; - if (((z->state->sub.method << 8) + b) % 31) - { - z->state->mode = BAD; - z->msg = (char*)"incorrect header check"; - z->state->sub.marker = 5; /* can't try inflateSync */ - break; - } - Tracev((stderr, "inflate: zlib header ok\n")); - if (!(b & PRESET_DICT)) - { - z->state->mode = BLOCKS; - break; - } - z->state->mode = DICT4; - case DICT4: - NEEDBYTE - z->state->sub.check.need = (uLong)NEXTBYTE << 24; - z->state->mode = DICT3; - case DICT3: - NEEDBYTE - z->state->sub.check.need += (uLong)NEXTBYTE << 16; - z->state->mode = DICT2; - case DICT2: - NEEDBYTE - z->state->sub.check.need += (uLong)NEXTBYTE << 8; - z->state->mode = DICT1; - case DICT1: - NEEDBYTE - z->state->sub.check.need += (uLong)NEXTBYTE; - z->adler = z->state->sub.check.need; - z->state->mode = DICT0; - return Z_NEED_DICT; - case DICT0: - z->state->mode = BAD; - z->msg = (char*)"need dictionary"; - z->state->sub.marker = 0; /* can try inflateSync */ - return Z_STREAM_ERROR; - case BLOCKS: - r = inflate_blocks(z->state->blocks, z, r); - if (r == Z_DATA_ERROR) - { - z->state->mode = BAD; - z->state->sub.marker = 0; /* can try inflateSync */ - break; - } - if (r == Z_OK) - r = f; - if (r != Z_STREAM_END) - return r; - r = f; - inflate_blocks_reset(z->state->blocks, z, &z->state->sub.check.was); - if (z->state->nowrap) - { - z->state->mode = DONE; - break; - } - z->state->mode = CHECK4; - case CHECK4: - NEEDBYTE - z->state->sub.check.need = (uLong)NEXTBYTE << 24; - z->state->mode = CHECK3; - case CHECK3: - NEEDBYTE - z->state->sub.check.need += (uLong)NEXTBYTE << 16; - z->state->mode = CHECK2; - case CHECK2: - NEEDBYTE - z->state->sub.check.need += (uLong)NEXTBYTE << 8; - z->state->mode = CHECK1; - case CHECK1: - NEEDBYTE - z->state->sub.check.need += (uLong)NEXTBYTE; - - if (z->state->sub.check.was != z->state->sub.check.need) - { - z->state->mode = BAD; - z->msg = (char*)"incorrect data check"; - z->state->sub.marker = 5; /* can't try inflateSync */ - break; - } - Tracev((stderr, "inflate: zlib check ok\n")); - z->state->mode = DONE; - case DONE: - return Z_STREAM_END; - case BAD: - return Z_DATA_ERROR; - default: - return Z_STREAM_ERROR; - } -#ifdef NEED_DUMMY_RETURN - return Z_STREAM_ERROR; /* Some dumb compilers complain without this */ -#endif -} - - -int ZEXPORT inflateSetDictionary(z, dictionary, dictLength) -z_streamp z; -const Bytef *dictionary; -uInt dictLength; -{ - uInt length = dictLength; - - if (z == Z_NULL || z->state == Z_NULL || z->state->mode != DICT0) - return Z_STREAM_ERROR; - - if (adler32(1L, dictionary, dictLength) != z->adler) return Z_DATA_ERROR; - z->adler = 1L; - - if (length >= ((uInt)1<state->wbits)) - { - length = (1<state->wbits)-1; - dictionary += dictLength - length; - } - inflate_set_dictionary(z->state->blocks, dictionary, length); - z->state->mode = BLOCKS; - return Z_OK; -} - - -int ZEXPORT inflateSync(z) -z_streamp z; -{ - uInt n; /* number of bytes to look at */ - Bytef *p; /* pointer to bytes */ - uInt m; /* number of marker bytes found in a row */ - uLong r, w; /* temporaries to save total_in and total_out */ - - /* set up */ - if (z == Z_NULL || z->state == Z_NULL) - return Z_STREAM_ERROR; - if (z->state->mode != BAD) - { - z->state->mode = BAD; - z->state->sub.marker = 0; - } - if ((n = z->avail_in) == 0) - return Z_BUF_ERROR; - p = z->next_in; - m = z->state->sub.marker; - - /* search */ - while (n && m < 4) - { - static const Byte mark[4] = {0, 0, 0xff, 0xff}; - if (*p == mark[m]) - m++; - else if (*p) - m = 0; - else - m = 4 - m; - p++, n--; - } - - /* restore */ - z->total_in += p - z->next_in; - z->next_in = p; - z->avail_in = n; - z->state->sub.marker = m; - - /* return no joy or set up to restart on a new block */ - if (m != 4) - return Z_DATA_ERROR; - r = z->total_in; w = z->total_out; - inflateReset(z); - z->total_in = r; z->total_out = w; - z->state->mode = BLOCKS; - return Z_OK; -} - - -/* Returns true if inflate is currently at the end of a block generated - * by Z_SYNC_FLUSH or Z_FULL_FLUSH. This function is used by one PPP - * implementation to provide an additional safety check. PPP uses Z_SYNC_FLUSH - * but removes the length bytes of the resulting empty stored block. When - * decompressing, PPP checks that at the end of input packet, inflate is - * waiting for these length bytes. - */ -int ZEXPORT inflateSyncPoint(z) -z_streamp z; -{ - if (z == Z_NULL || z->state == Z_NULL || z->state->blocks == Z_NULL) - return Z_STREAM_ERROR; - return inflate_blocks_sync_point(z->state->blocks); -} diff --git a/src/zlib/inftrees.c b/src/zlib/inftrees.c deleted file mode 100644 index 6876ab5a8d..0000000000 --- a/src/zlib/inftrees.c +++ /dev/null @@ -1,455 +0,0 @@ -/* inftrees.c -- generate Huffman trees for efficient decoding - * Copyright (C) 1995-1998 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -#include "zutil.h" -#include "inftrees.h" - -#if !defined(BUILDFIXED) && !defined(STDC) -# define BUILDFIXED /* non ANSI compilers may not accept inffixed.h */ -#endif - -const char inflate_copyright[] = - " inflate 1.1.2 Copyright 1995-1998 Mark Adler "; -/* - If you use the zlib library in a product, an acknowledgment is welcome - in the documentation of your product. If for some reason you cannot - include such an acknowledgment, I would appreciate that you keep this - copyright string in the executable of your product. - */ -struct internal_state {int dummy;}; /* for buggy compilers */ - -/* simplify the use of the inflate_huft type with some defines */ -#define exop word.what.Exop -#define bits word.what.Bits - - -local int huft_build OF(( - uIntf *, /* code lengths in bits */ - uInt, /* number of codes */ - uInt, /* number of "simple" codes */ - const uIntf *, /* list of base values for non-simple codes */ - const uIntf *, /* list of extra bits for non-simple codes */ - inflate_huft * FAR*,/* result: starting table */ - uIntf *, /* maximum lookup bits (returns actual) */ - inflate_huft *, /* space for trees */ - uInt *, /* hufts used in space */ - uIntf * )); /* space for values */ - -/* Tables for deflate from PKZIP's appnote.txt. */ -local const uInt cplens[31] = { /* Copy lengths for literal codes 257..285 */ - 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, - 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0}; - /* see note #13 above about 258 */ -local const uInt cplext[31] = { /* Extra bits for literal codes 257..285 */ - 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, - 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 112, 112}; /* 112==invalid */ -local const uInt cpdist[30] = { /* Copy offsets for distance codes 0..29 */ - 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, - 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, - 8193, 12289, 16385, 24577}; -local const uInt cpdext[30] = { /* Extra bits for distance codes */ - 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, - 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, - 12, 12, 13, 13}; - -/* - Huffman code decoding is performed using a multi-level table lookup. - The fastest way to decode is to simply build a lookup table whose - size is determined by the longest code. However, the time it takes - to build this table can also be a factor if the data being decoded - is not very long. The most common codes are necessarily the - shortest codes, so those codes dominate the decoding time, and hence - the speed. The idea is you can have a shorter table that decodes the - shorter, more probable codes, and then point to subsidiary tables for - the longer codes. The time it costs to decode the longer codes is - then traded against the time it takes to make longer tables. - - This results of this trade are in the variables lbits and dbits - below. lbits is the number of bits the first level table for literal/ - length codes can decode in one step, and dbits is the same thing for - the distance codes. Subsequent tables are also less than or equal to - those sizes. These values may be adjusted either when all of the - codes are shorter than that, in which case the longest code length in - bits is used, or when the shortest code is *longer* than the requested - table size, in which case the length of the shortest code in bits is - used. - - There are two different values for the two tables, since they code a - different number of possibilities each. The literal/length table - codes 286 possible values, or in a flat code, a little over eight - bits. The distance table codes 30 possible values, or a little less - than five bits, flat. The optimum values for speed end up being - about one bit more than those, so lbits is 8+1 and dbits is 5+1. - The optimum values may differ though from machine to machine, and - possibly even between compilers. Your mileage may vary. - */ - - -/* If BMAX needs to be larger than 16, then h and x[] should be uLong. */ -#define BMAX 15 /* maximum bit length of any code */ - -local int huft_build(b, n, s, d, e, t, m, hp, hn, v) -uIntf *b; /* code lengths in bits (all assumed <= BMAX) */ -uInt n; /* number of codes (assumed <= 288) */ -uInt s; /* number of simple-valued codes (0..s-1) */ -const uIntf *d; /* list of base values for non-simple codes */ -const uIntf *e; /* list of extra bits for non-simple codes */ -inflate_huft * FAR *t; /* result: starting table */ -uIntf *m; /* maximum lookup bits, returns actual */ -inflate_huft *hp; /* space for trees */ -uInt *hn; /* hufts used in space */ -uIntf *v; /* working area: values in order of bit length */ -/* Given a list of code lengths and a maximum table size, make a set of - tables to decode that set of codes. Return Z_OK on success, Z_BUF_ERROR - if the given code set is incomplete (the tables are still built in this - case), Z_DATA_ERROR if the input is invalid (an over-subscribed set of - lengths), or Z_MEM_ERROR if not enough memory. */ -{ - - uInt a; /* counter for codes of length k */ - uInt c[BMAX+1]; /* bit length count table */ - uInt f; /* i repeats in table every f entries */ - int g; /* maximum code length */ - int h; /* table level */ - register uInt i; /* counter, current code */ - register uInt j; /* counter */ - register int k; /* number of bits in current code */ - int l; /* bits per table (returned in m) */ - uInt mask; /* (1 << w) - 1, to avoid cc -O bug on HP */ - register uIntf *p; /* pointer into c[], b[], or v[] */ - inflate_huft *q; /* points to current table */ - struct inflate_huft_s r; /* table entry for structure assignment */ - inflate_huft *u[BMAX]; /* table stack */ - register int w; /* bits before this table == (l * h) */ - uInt x[BMAX+1]; /* bit offsets, then code stack */ - uIntf *xp; /* pointer into x */ - int y; /* number of dummy codes added */ - uInt z; /* number of entries in current table */ - - - /* Generate counts for each bit length */ - p = c; -#define C0 *p++ = 0; -#define C2 C0 C0 C0 C0 -#define C4 C2 C2 C2 C2 - C4 /* clear c[]--assume BMAX+1 is 16 */ - p = b; i = n; - do { - c[*p++]++; /* assume all entries <= BMAX */ - } while (--i); - if (c[0] == n) /* null input--all zero length codes */ - { - *t = (inflate_huft *)Z_NULL; - *m = 0; - return Z_OK; - } - - - /* Find minimum and maximum length, bound *m by those */ - l = *m; - for (j = 1; j <= BMAX; j++) - if (c[j]) - break; - k = j; /* minimum code length */ - if ((uInt)l < j) - l = j; - for (i = BMAX; i; i--) - if (c[i]) - break; - g = i; /* maximum code length */ - if ((uInt)l > i) - l = i; - *m = l; - - - /* Adjust last length count to fill out codes, if needed */ - for (y = 1 << j; j < i; j++, y <<= 1) - if ((y -= c[j]) < 0) - return Z_DATA_ERROR; - if ((y -= c[i]) < 0) - return Z_DATA_ERROR; - c[i] += y; - - - /* Generate starting offsets into the value table for each length */ - x[1] = j = 0; - p = c + 1; xp = x + 2; - while (--i) { /* note that i == g from above */ - *xp++ = (j += *p++); - } - - - /* Make a table of values in order of bit lengths */ - p = b; i = 0; - do { - if ((j = *p++) != 0) - v[x[j]++] = i; - } while (++i < n); - n = x[g]; /* set n to length of v */ - - - /* Generate the Huffman codes and for each, make the table entries */ - x[0] = i = 0; /* first Huffman code is zero */ - p = v; /* grab values in bit order */ - h = -1; /* no tables yet--level -1 */ - w = -l; /* bits decoded == (l * h) */ - u[0] = (inflate_huft *)Z_NULL; /* just to keep compilers happy */ - q = (inflate_huft *)Z_NULL; /* ditto */ - z = 0; /* ditto */ - - /* go through the bit lengths (k already is bits in shortest code) */ - for (; k <= g; k++) - { - a = c[k]; - while (a--) - { - /* here i is the Huffman code of length k bits for value *p */ - /* make tables up to required level */ - while (k > w + l) - { - h++; - w += l; /* previous table always l bits */ - - /* compute minimum size table less than or equal to l bits */ - z = g - w; - z = z > (uInt)l ? l : z; /* table size upper limit */ - if ((f = 1 << (j = k - w)) > a + 1) /* try a k-w bit table */ - { /* too few codes for k-w bit table */ - f -= a + 1; /* deduct codes from patterns left */ - xp = c + k; - if (j < z) - while (++j < z) /* try smaller tables up to z bits */ - { - if ((f <<= 1) <= *++xp) - break; /* enough codes to use up j bits */ - f -= *xp; /* else deduct codes from patterns */ - } - } - z = 1 << j; /* table entries for j-bit table */ - - /* allocate new table */ - if (*hn + z > MANY) /* (note: doesn't matter for fixed) */ - return Z_MEM_ERROR; /* not enough memory */ - u[h] = q = hp + *hn; - *hn += z; - - /* connect to last table, if there is one */ - if (h) - { - x[h] = i; /* save pattern for backing up */ - r.bits = (Byte)l; /* bits to dump before this table */ - r.exop = (Byte)j; /* bits in this table */ - j = i >> (w - l); - r.base = (uInt)(q - u[h-1] - j); /* offset to this table */ - u[h-1][j] = r; /* connect to last table */ - } - else - *t = q; /* first table is returned result */ - } - - /* set up table entry in r */ - r.bits = (Byte)(k - w); - if (p >= v + n) - r.exop = 128 + 64; /* out of values--invalid code */ - else if (*p < s) - { - r.exop = (Byte)(*p < 256 ? 0 : 32 + 64); /* 256 is end-of-block */ - r.base = *p++; /* simple code is just the value */ - } - else - { - r.exop = (Byte)(e[*p - s] + 16 + 64);/* non-simple--look up in lists */ - r.base = d[*p++ - s]; - } - - /* fill code-like entries with r */ - f = 1 << (k - w); - for (j = i >> w; j < z; j += f) - q[j] = r; - - /* backwards increment the k-bit code i */ - for (j = 1 << (k - 1); i & j; j >>= 1) - i ^= j; - i ^= j; - - /* backup over finished tables */ - mask = (1 << w) - 1; /* needed on HP, cc -O bug */ - while ((i & mask) != x[h]) - { - h--; /* don't need to update q */ - w -= l; - mask = (1 << w) - 1; - } - } - } - - - /* Return Z_BUF_ERROR if we were given an incomplete table */ - return y != 0 && g != 1 ? Z_BUF_ERROR : Z_OK; -} - - -int inflate_trees_bits(c, bb, tb, hp, z) -uIntf *c; /* 19 code lengths */ -uIntf *bb; /* bits tree desired/actual depth */ -inflate_huft * FAR *tb; /* bits tree result */ -inflate_huft *hp; /* space for trees */ -z_streamp z; /* for messages */ -{ - int r; - uInt hn = 0; /* hufts used in space */ - uIntf *v; /* work area for huft_build */ - - if ((v = (uIntf*)ZALLOC(z, 19, sizeof(uInt))) == Z_NULL) - return Z_MEM_ERROR; - r = huft_build(c, 19, 19, (uIntf*)Z_NULL, (uIntf*)Z_NULL, - tb, bb, hp, &hn, v); - if (r == Z_DATA_ERROR) - z->msg = (char*)"oversubscribed dynamic bit lengths tree"; - else if (r == Z_BUF_ERROR || *bb == 0) - { - z->msg = (char*)"incomplete dynamic bit lengths tree"; - r = Z_DATA_ERROR; - } - ZFREE(z, v); - return r; -} - - -int inflate_trees_dynamic(nl, nd, c, bl, bd, tl, td, hp, z) -uInt nl; /* number of literal/length codes */ -uInt nd; /* number of distance codes */ -uIntf *c; /* that many (total) code lengths */ -uIntf *bl; /* literal desired/actual bit depth */ -uIntf *bd; /* distance desired/actual bit depth */ -inflate_huft * FAR *tl; /* literal/length tree result */ -inflate_huft * FAR *td; /* distance tree result */ -inflate_huft *hp; /* space for trees */ -z_streamp z; /* for messages */ -{ - int r; - uInt hn = 0; /* hufts used in space */ - uIntf *v; /* work area for huft_build */ - - /* allocate work area */ - if ((v = (uIntf*)ZALLOC(z, 288, sizeof(uInt))) == Z_NULL) - return Z_MEM_ERROR; - - /* build literal/length tree */ - r = huft_build(c, nl, 257, cplens, cplext, tl, bl, hp, &hn, v); - if (r != Z_OK || *bl == 0) - { - if (r == Z_DATA_ERROR) - z->msg = (char*)"oversubscribed literal/length tree"; - else if (r != Z_MEM_ERROR) - { - z->msg = (char*)"incomplete literal/length tree"; - r = Z_DATA_ERROR; - } - ZFREE(z, v); - return r; - } - - /* build distance tree */ - r = huft_build(c + nl, nd, 0, cpdist, cpdext, td, bd, hp, &hn, v); - if (r != Z_OK || (*bd == 0 && nl > 257)) - { - if (r == Z_DATA_ERROR) - z->msg = (char*)"oversubscribed distance tree"; - else if (r == Z_BUF_ERROR) { -#ifdef PKZIP_BUG_WORKAROUND - r = Z_OK; - } -#else - z->msg = (char*)"incomplete distance tree"; - r = Z_DATA_ERROR; - } - else if (r != Z_MEM_ERROR) - { - z->msg = (char*)"empty distance tree with lengths"; - r = Z_DATA_ERROR; - } - ZFREE(z, v); - return r; -#endif - } - - /* done */ - ZFREE(z, v); - return Z_OK; -} - - -/* build fixed tables only once--keep them here */ -#ifdef BUILDFIXED -local int fixed_built = 0; -#define FIXEDH 544 /* number of hufts used by fixed tables */ -local inflate_huft fixed_mem[FIXEDH]; -local uInt fixed_bl; -local uInt fixed_bd; -local inflate_huft *fixed_tl; -local inflate_huft *fixed_td; -#else -#include "inffixed.h" -#endif - - -int inflate_trees_fixed(bl, bd, tl, td, z) -uIntf *bl; /* literal desired/actual bit depth */ -uIntf *bd; /* distance desired/actual bit depth */ -inflate_huft * FAR *tl; /* literal/length tree result */ -inflate_huft * FAR *td; /* distance tree result */ -z_streamp z; /* for memory allocation */ -{ -#ifdef BUILDFIXED - /* build fixed tables if not already */ - if (!fixed_built) - { - int k; /* temporary variable */ - uInt f = 0; /* number of hufts used in fixed_mem */ - uIntf *c; /* length list for huft_build */ - uIntf *v; /* work area for huft_build */ - - /* allocate memory */ - if ((c = (uIntf*)ZALLOC(z, 288, sizeof(uInt))) == Z_NULL) - return Z_MEM_ERROR; - if ((v = (uIntf*)ZALLOC(z, 288, sizeof(uInt))) == Z_NULL) - { - ZFREE(z, c); - return Z_MEM_ERROR; - } - - /* literal table */ - for (k = 0; k < 144; k++) - c[k] = 8; - for (; k < 256; k++) - c[k] = 9; - for (; k < 280; k++) - c[k] = 7; - for (; k < 288; k++) - c[k] = 8; - fixed_bl = 9; - huft_build(c, 288, 257, cplens, cplext, &fixed_tl, &fixed_bl, - fixed_mem, &f, v); - - /* distance table */ - for (k = 0; k < 30; k++) - c[k] = 5; - fixed_bd = 5; - huft_build(c, 30, 0, cpdist, cpdext, &fixed_td, &fixed_bd, - fixed_mem, &f, v); - - /* done */ - ZFREE(z, v); - ZFREE(z, c); - fixed_built = 1; - } -#endif - *bl = fixed_bl; - *bd = fixed_bd; - *tl = fixed_tl; - *td = fixed_td; - return Z_OK; -} diff --git a/src/zlib/inftrees.h b/src/zlib/inftrees.h deleted file mode 100644 index 85853e097b..0000000000 --- a/src/zlib/inftrees.h +++ /dev/null @@ -1,58 +0,0 @@ -/* inftrees.h -- header to use inftrees.c - * Copyright (C) 1995-1998 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* WARNING: this file should *not* be used by applications. It is - part of the implementation of the compression library and is - subject to change. Applications should only use zlib.h. - */ - -/* Huffman code lookup table entry--this entry is four bytes for machines - that have 16-bit pointers (e.g. PC's in the small or medium model). */ - -typedef struct inflate_huft_s FAR inflate_huft; - -struct inflate_huft_s { - union { - struct { - Byte Exop; /* number of extra bits or operation */ - Byte Bits; /* number of bits in this code or subcode */ - } what; - uInt pad; /* pad structure to a power of 2 (4 bytes for */ - } word; /* 16-bit, 8 bytes for 32-bit int's) */ - uInt base; /* literal, length base, distance base, - or table offset */ -}; - -/* Maximum size of dynamic tree. The maximum found in a long but non- - exhaustive search was 1004 huft structures (850 for length/literals - and 154 for distances, the latter actually the result of an - exhaustive search). The actual maximum is not known, but the - value below is more than safe. */ -#define MANY 1440 - -extern int inflate_trees_bits OF(( - uIntf *, /* 19 code lengths */ - uIntf *, /* bits tree desired/actual depth */ - inflate_huft * FAR *, /* bits tree result */ - inflate_huft *, /* space for trees */ - z_streamp)); /* for messages */ - -extern int inflate_trees_dynamic OF(( - uInt, /* number of literal/length codes */ - uInt, /* number of distance codes */ - uIntf *, /* that many (total) code lengths */ - uIntf *, /* literal desired/actual bit depth */ - uIntf *, /* distance desired/actual bit depth */ - inflate_huft * FAR *, /* literal/length tree result */ - inflate_huft * FAR *, /* distance tree result */ - inflate_huft *, /* space for trees */ - z_streamp)); /* for messages */ - -extern int inflate_trees_fixed OF(( - uIntf *, /* literal desired/actual bit depth */ - uIntf *, /* distance desired/actual bit depth */ - inflate_huft * FAR *, /* literal/length tree result */ - inflate_huft * FAR *, /* distance tree result */ - z_streamp)); /* for memory allocation */ diff --git a/src/zlib/infutil.c b/src/zlib/infutil.c deleted file mode 100644 index 824dab5712..0000000000 --- a/src/zlib/infutil.c +++ /dev/null @@ -1,87 +0,0 @@ -/* inflate_util.c -- data and routines common to blocks and codes - * Copyright (C) 1995-1998 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -#include "zutil.h" -#include "infblock.h" -#include "inftrees.h" -#include "infcodes.h" -#include "infutil.h" - -struct inflate_codes_state {int dummy;}; /* for buggy compilers */ - -/* And'ing with mask[n] masks the lower n bits */ -uInt inflate_mask[17] = { - 0x0000, - 0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 0x003f, 0x007f, 0x00ff, - 0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff -}; - - -/* copy as much as possible from the sliding window to the output area */ -int inflate_flush(s, z, r) -inflate_blocks_statef *s; -z_streamp z; -int r; -{ - uInt n; - Bytef *p; - Bytef *q; - - /* local copies of source and destination pointers */ - p = z->next_out; - q = s->read; - - /* compute number of bytes to copy as far as end of window */ - n = (uInt)((q <= s->write ? s->write : s->end) - q); - if (n > z->avail_out) n = z->avail_out; - if (n && r == Z_BUF_ERROR) r = Z_OK; - - /* update counters */ - z->avail_out -= n; - z->total_out += n; - - /* update check information */ - if (s->checkfn != Z_NULL) - z->adler = s->check = (*s->checkfn)(s->check, q, n); - - /* copy as far as end of window */ - zmemcpy(p, q, n); - p += n; - q += n; - - /* see if more to copy at beginning of window */ - if (q == s->end) - { - /* wrap pointers */ - q = s->window; - if (s->write == s->end) - s->write = s->window; - - /* compute bytes to copy */ - n = (uInt)(s->write - q); - if (n > z->avail_out) n = z->avail_out; - if (n && r == Z_BUF_ERROR) r = Z_OK; - - /* update counters */ - z->avail_out -= n; - z->total_out += n; - - /* update check information */ - if (s->checkfn != Z_NULL) - z->adler = s->check = (*s->checkfn)(s->check, q, n); - - /* copy */ - zmemcpy(p, q, n); - p += n; - q += n; - } - - /* update pointers */ - z->next_out = p; - s->read = q; - - /* done */ - return r; -} diff --git a/src/zlib/infutil.h b/src/zlib/infutil.h deleted file mode 100644 index 99d1135d06..0000000000 --- a/src/zlib/infutil.h +++ /dev/null @@ -1,98 +0,0 @@ -/* infutil.h -- types and macros common to blocks and codes - * Copyright (C) 1995-1998 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* WARNING: this file should *not* be used by applications. It is - part of the implementation of the compression library and is - subject to change. Applications should only use zlib.h. - */ - -#ifndef _INFUTIL_H -#define _INFUTIL_H - -typedef enum { - TYPE, /* get type bits (3, including end bit) */ - LENS, /* get lengths for stored */ - STORED, /* processing stored block */ - TABLE, /* get table lengths */ - BTREE, /* get bit lengths tree for a dynamic block */ - DTREE, /* get length, distance trees for a dynamic block */ - CODES, /* processing fixed or dynamic block */ - DRY, /* output remaining window bytes */ - DONE, /* finished last block, done */ - BAD} /* got a data error--stuck here */ -inflate_block_mode; - -/* inflate blocks semi-private state */ -struct inflate_blocks_state { - - /* mode */ - inflate_block_mode mode; /* current inflate_block mode */ - - /* mode dependent information */ - union { - uInt left; /* if STORED, bytes left to copy */ - struct { - uInt table; /* table lengths (14 bits) */ - uInt index; /* index into blens (or border) */ - uIntf *blens; /* bit lengths of codes */ - uInt bb; /* bit length tree depth */ - inflate_huft *tb; /* bit length decoding tree */ - } trees; /* if DTREE, decoding info for trees */ - struct { - inflate_codes_statef - *codes; - } decode; /* if CODES, current state */ - } sub; /* submode */ - uInt last; /* true if this block is the last block */ - - /* mode independent information */ - uInt bitk; /* bits in bit buffer */ - uLong bitb; /* bit buffer */ - inflate_huft *hufts; /* single malloc for tree space */ - Bytef *window; /* sliding window */ - Bytef *end; /* one byte after sliding window */ - Bytef *read; /* window read pointer */ - Bytef *write; /* window write pointer */ - check_func checkfn; /* check function */ - uLong check; /* check on output */ - -}; - - -/* defines for inflate input/output */ -/* update pointers and return */ -#define UPDBITS {s->bitb=b;s->bitk=k;} -#define UPDIN {z->avail_in=n;z->total_in+=p-z->next_in;z->next_in=p;} -#define UPDOUT {s->write=q;} -#define UPDATE {UPDBITS UPDIN UPDOUT} -#define LEAVE {UPDATE return inflate_flush(s,z,r);} -/* get bytes and bits */ -#define LOADIN {p=z->next_in;n=z->avail_in;b=s->bitb;k=s->bitk;} -#define NEEDBYTE {if(n)r=Z_OK;else LEAVE} -#define NEXTBYTE (n--,*p++) -#define NEEDBITS(j) {while(k<(j)){NEEDBYTE;b|=((uLong)NEXTBYTE)<>=(j);k-=(j);} -/* output bytes */ -#define WAVAIL (uInt)(qread?s->read-q-1:s->end-q) -#define LOADOUT {q=s->write;m=(uInt)WAVAIL;} -#define WRAP {if(q==s->end&&s->read!=s->window){q=s->window;m=(uInt)WAVAIL;}} -#define FLUSH {UPDOUT r=inflate_flush(s,z,r); LOADOUT} -#define NEEDOUT {if(m==0){WRAP if(m==0){FLUSH WRAP if(m==0) LEAVE}}r=Z_OK;} -#define OUTBYTE(a) {*q++=(Byte)(a);m--;} -/* load local pointers */ -#define LOAD {LOADIN LOADOUT} - -/* masks for lower bits (size given to avoid silly warnings with Visual C++) */ -extern uInt inflate_mask[17]; - -/* copy as much as possible from the sliding window to the output area */ -extern int inflate_flush OF(( - inflate_blocks_statef *, - z_streamp , - int)); - -struct internal_state {int dummy;}; /* for buggy compilers */ - -#endif diff --git a/src/zlib/makefile.b32 b/src/zlib/makefile.b32 deleted file mode 100644 index 256f7fffa1..0000000000 --- a/src/zlib/makefile.b32 +++ /dev/null @@ -1,109 +0,0 @@ -# Makefile for zlib -# Borland C++ - -# This version of the zlib makefile was adapted by Chris Young for use -# with Borland C 4.5x with the Dos Power Pack for a 32-bit protected mode -# flat memory model. It was created for use with POV-Ray ray tracer and -# you may choose to edit the CFLAGS to suit your needs but the -# switches -WX and -DMSDOS are required. -# -- Chris Young 76702.1655@compuserve.com - -# To use, do "make -fmakefile.b32" - -# See zconf.h for details about the memory requirements. - -# ------------- Borland C++ ------------- -MODEL=-WX -CFLAGS= $(MODEL) -P-C -K -N- -k- -d -3 -r- -v- -f -DMSDOS -CC=bcc32 -LD=bcc32 -LIB=tlib -LDFLAGS= $(MODEL) -O=.obj - -LIBTARGET=..\..\lib\zlib.lib - -# variables -OBJ1 = adler32$(O) compress$(O) crc32$(O) gzio$(O) uncompr$(O) deflate$(O) \ - trees$(O) -OBJP1 = adler32$(O)+compress$(O)+crc32$(O)+gzio$(O)+uncompr$(O)+deflate$(O)+\ - trees$(O) -OBJ2 = zutil$(O) inflate$(O) infblock$(O) inftrees$(O) infcodes$(O) \ - infutil$(O) inffast$(O) -OBJP2 = zutil$(O)+inflate$(O)+infblock$(O)+inftrees$(O)+infcodes$(O)+\ - infutil$(O)+inffast$(O) - -all: test - -adler32.obj: adler32.c zutil.h zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - -compress.obj: compress.c zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - -crc32.obj: crc32.c zutil.h zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - -deflate.obj: deflate.c deflate.h zutil.h zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - -gzio.obj: gzio.c zutil.h zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - -infblock.obj: infblock.c zutil.h zlib.h zconf.h infblock.h inftrees.h\ - infcodes.h infutil.h - $(CC) -c $(CFLAGS) $*.c - -infcodes.obj: infcodes.c zutil.h zlib.h zconf.h inftrees.h infutil.h\ - infcodes.h inffast.h - $(CC) -c $(CFLAGS) $*.c - -inflate.obj: inflate.c zutil.h zlib.h zconf.h infblock.h - $(CC) -c $(CFLAGS) $*.c - -inftrees.obj: inftrees.c zutil.h zlib.h zconf.h inftrees.h - $(CC) -c $(CFLAGS) $*.c - -infutil.obj: infutil.c zutil.h zlib.h zconf.h inftrees.h infutil.h - $(CC) -c $(CFLAGS) $*.c - -inffast.obj: inffast.c zutil.h zlib.h zconf.h inftrees.h infutil.h inffast.h - $(CC) -c $(CFLAGS) $*.c - -trees.obj: trees.c deflate.h zutil.h zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - -uncompr.obj: uncompr.c zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - -zutil.obj: zutil.c zutil.h zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - -example.obj: example.c zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - -minigzip.obj: minigzip.c zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - -lib: $(LIBTARGET) - -# we must cut the command line to fit in the MS/DOS 128 byte limit: -$(LIBTARGET): $(OBJ1) $(OBJ2) - del $(LIBTARGET) - $(LIB) $(LIBTARGET) +$(OBJP1) - $(LIB) $(LIBTARGET) +$(OBJP2) - -example.exe: example.obj $(LIBTARGET) - $(LD) $(LDFLAGS) example.obj $(LIBTARGET) - -minigzip.exe: minigzip.obj $(LIBTARGET) - $(LD) $(LDFLAGS) minigzip.obj $(LIBTARGET) - -test: example.exe minigzip.exe - example - echo hello world | minigzip | minigzip -d - -clean: - erase *.obj - erase *.exe - erase $(LIBTARGET) diff --git a/src/zlib/makefile.bcc b/src/zlib/makefile.bcc deleted file mode 100644 index 42d9d18e22..0000000000 --- a/src/zlib/makefile.bcc +++ /dev/null @@ -1,88 +0,0 @@ -# Makefile for zlib -# Borland C++ ************ UNTESTED *********** - -# To use, do "make -fmakefile.bor" - -# WARNING: the small model is supported but only for small values of -# MAX_WBITS and MAX_MEM_LEVEL. If you wish to reduce the memory -# requirements (default 256K for big objects plus a few K), you can add -# to CFLAGS below: -DMAX_MEM_LEVEL=7 -DMAX_WBITS=14 -# See zconf.h for details about the memory requirements. - -# ------------- Turbo C++, Borland C++ ------------- -MODEL=-ml -CFLAGS=-O2 -Z $(MODEL) -3 -Fs- -CC=bcc -LD=bcc -LIB=tlib -# replace bcc with tcc for Turbo C++ 1.0 -LDFLAGS=$(MODEL) -O=.obj - -LIBTARGET=..\..\lib\zlib.lib - -# variables -OBJ1 = adler32$(O) compress$(O) crc32$(O) gzio$(O) uncompr$(O) deflate$(O) \ - trees$(O) -OBJP1 = adler32$(O)+compress$(O)+crc32$(O)+gzio$(O)+uncompr$(O)+deflate$(O)+\ - trees$(O) -OBJ2 = zutil$(O) inflate$(O) infblock$(O) inftrees$(O) infcodes$(O) \ - infutil$(O) inffast$(O) -OBJP2 = zutil$(O)+inflate$(O)+infblock$(O)+inftrees$(O)+infcodes$(O)+\ - infutil$(O)+inffast$(O) - -all: $(LIBTARGET) - -adler32.obj: adler32.c zutil.h zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - -compress.obj: compress.c zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - -crc32.obj: crc32.c zutil.h zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - -deflate.obj: deflate.c deflate.h zutil.h zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - -gzio.obj: gzio.c zutil.h zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - -infblock.obj: infblock.c zutil.h zlib.h zconf.h infblock.h inftrees.h\ - infcodes.h infutil.h - $(CC) -c $(CFLAGS) $*.c - -infcodes.obj: infcodes.c zutil.h zlib.h zconf.h inftrees.h infutil.h\ - infcodes.h inffast.h - $(CC) -c $(CFLAGS) $*.c - -inflate.obj: inflate.c zutil.h zlib.h zconf.h infblock.h - $(CC) -c $(CFLAGS) $*.c - -inftrees.obj: inftrees.c zutil.h zlib.h zconf.h inftrees.h - $(CC) -c $(CFLAGS) $*.c - -infutil.obj: infutil.c zutil.h zlib.h zconf.h inftrees.h infutil.h - $(CC) -c $(CFLAGS) $*.c - -inffast.obj: inffast.c zutil.h zlib.h zconf.h inftrees.h infutil.h inffast.h - $(CC) -c $(CFLAGS) $*.c - -trees.obj: trees.c deflate.h zutil.h zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - -uncompr.obj: uncompr.c zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - -zutil.obj: zutil.c zutil.h zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - -# we must cut the command line to fit in the MS/DOS 128 byte limit: -$(LIBTARGET): $(OBJ1) $(OBJ2) - $(LIB) $(LIBTARGET) +$(OBJP1) - $(LIB) $(LIBTARGET) +$(OBJP2) - -clean: - -erase *.obj - -erase *.exe - -erase $(LIBTARGET) diff --git a/src/zlib/makefile.unx b/src/zlib/makefile.unx deleted file mode 100644 index 5dc486830e..0000000000 --- a/src/zlib/makefile.unx +++ /dev/null @@ -1,30 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1998 -# Updated: -# Copyright: (c) 1998 -# -# -# Makefile for PNG library, Unix - -include ../make.env - -TARGETLIB=../../lib/libzlib.a - -LIB_C_SRC = adler32.c compress.c crc32.c gzio.c uncompr.c deflate.c \ - trees.c zutil.c inflate.c infblock.c inftrees.c infcodes.c \ - infutil.c inffast.c - -all: $(TARGETLIB) - -# Define library objects -OBJECTS=\ - $(LIB_C_SRC:.c=.o) - -$(TARGETLIB) : $(OBJECTS) - ar $(AROPTIONS) $@ $(OBJECTS) - $(RANLIB) $@ - -clean: - rm -f $(OBJECTS) $(TARGETLIB) diff --git a/src/zlib/makefile.vc b/src/zlib/makefile.vc deleted file mode 100644 index fa57b5c76b..0000000000 --- a/src/zlib/makefile.vc +++ /dev/null @@ -1,88 +0,0 @@ -# Makefile for zlib -# Borland C++ ************ UNTESTED *********** - -# To use, do "make -fmakefile.bor" - -# WARNING: the small model is supported but only for small values of -# MAX_WBITS and MAX_MEM_LEVEL. If you wish to reduce the memory -# requirements (default 256K for big objects plus a few K), you can add -# to CFLAGS below: -DMAX_MEM_LEVEL=7 -DMAX_WBITS=14 -# See zconf.h for details about the memory requirements. - -# ------------- Turbo C++, Borland C++ ------------- -CFLAGS=-O2 /MD /GX -CC=cl -LD=cl -LIB=tlib -# replace bcc with tcc for Turbo C++ 1.0 -LDFLAGS=$(MODEL) -O=.obj - -LIBTARGET=..\..\lib\zlib.lib - -# variables -OBJ1 = adler32$(O) compress$(O) crc32$(O) gzio$(O) uncompr$(O) deflate$(O) \ - trees$(O) -OBJ2 = zutil$(O) inflate$(O) infblock$(O) inftrees$(O) infcodes$(O) \ - infutil$(O) inffast$(O) - -all: $(LIBTARGET) - -adler32.obj: adler32.c zutil.h zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - -compress.obj: compress.c zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - -crc32.obj: crc32.c zutil.h zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - -deflate.obj: deflate.c deflate.h zutil.h zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - -gzio.obj: gzio.c zutil.h zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - -infblock.obj: infblock.c zutil.h zlib.h zconf.h infblock.h inftrees.h\ - infcodes.h infutil.h - $(CC) -c $(CFLAGS) $*.c - -infcodes.obj: infcodes.c zutil.h zlib.h zconf.h inftrees.h infutil.h\ - infcodes.h inffast.h - $(CC) -c $(CFLAGS) $*.c - -inflate.obj: inflate.c zutil.h zlib.h zconf.h infblock.h - $(CC) -c $(CFLAGS) $*.c - -inftrees.obj: inftrees.c zutil.h zlib.h zconf.h inftrees.h - $(CC) -c $(CFLAGS) $*.c - -infutil.obj: infutil.c zutil.h zlib.h zconf.h inftrees.h infutil.h - $(CC) -c $(CFLAGS) $*.c - -inffast.obj: inffast.c zutil.h zlib.h zconf.h inftrees.h infutil.h inffast.h - $(CC) -c $(CFLAGS) $*.c - -trees.obj: trees.c deflate.h zutil.h zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - -uncompr.obj: uncompr.c zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - -zutil.obj: zutil.c zutil.h zlib.h zconf.h - $(CC) -c $(CFLAGS) $*.c - -LIBOBJECTS = $(OBJ1) $(OBJ2) - -$(LIBTARGET): $(LIBOBJECTS) - del $(LIBTARGET) - lib @<< --out:$(LIBTARGET) -$(LIBOBJECTS) -<< - -clean: - -erase *.obj - -erase *.exe - -erase *.sbr - -erase $(LIBTARGET) diff --git a/src/zlib/makefile.wat b/src/zlib/makefile.wat deleted file mode 100644 index 7f62708415..0000000000 --- a/src/zlib/makefile.wat +++ /dev/null @@ -1,107 +0,0 @@ -# Makefile for zlib -# Watcom 10a - -# This version of the zlib makefile was adapted by Chris Young for use -# with Watcom 10a 32-bit protected mode flat memory model. It was created -# for use with POV-Ray ray tracer and you may choose to edit the CFLAGS to -# suit your needs but the -DMSDOS is required. -# -- Chris Young 76702.1655@compuserve.com - -# To use, do "wmake -f makefile.wat" - -# See zconf.h for details about the memory requirements. - -# ------------- Watcom 10a ------------- -MODEL=-mf -CFLAGS= $(MODEL) -fpi87 -fp5 -zp4 -5r -w5 -oneatx -DMSDOS -CC=wcc386 -LD=wcl386 -LIB=wlib -b -c -LDFLAGS= -O=.obj -LIBTARGET=..\..\lib\zlib.lib - -# variables -OBJ1=adler32$(O) compress$(O) crc32$(O) gzio$(O) uncompr$(O) deflate$(O) -OBJ2=trees$(O) zutil$(O) inflate$(O) infblock$(O) inftrees$(O) infcodes$(O) -OBJ3=infutil$(O) inffast$(O) -OBJP1=adler32$(O)+compress$(O)+crc32$(O)+gzio$(O)+uncompr$(O)+deflate$(O) -OBJP2=trees$(O)+zutil$(O)+inflate$(O)+infblock$(O)+inftrees$(O)+infcodes$(O) -OBJP3=infutil$(O)+inffast$(O) - -# all: test - -all: $(LIBTARGET) - -adler32.obj: adler32.c zutil.h zlib.h zconf.h - $(CC) $(CFLAGS) $*.c - -compress.obj: compress.c zlib.h zconf.h - $(CC) $(CFLAGS) $*.c - -crc32.obj: crc32.c zutil.h zlib.h zconf.h - $(CC) $(CFLAGS) $*.c - -deflate.obj: deflate.c deflate.h zutil.h zlib.h zconf.h - $(CC) $(CFLAGS) $*.c - -gzio.obj: gzio.c zutil.h zlib.h zconf.h - $(CC) $(CFLAGS) $*.c - -infblock.obj: infblock.c zutil.h zlib.h zconf.h infblock.h inftrees.h & - infcodes.h infutil.h - $(CC) $(CFLAGS) $*.c - -infcodes.obj: infcodes.c zutil.h zlib.h zconf.h inftrees.h infutil.h & - infcodes.h inffast.h - $(CC) $(CFLAGS) $*.c - -inflate.obj: inflate.c zutil.h zlib.h zconf.h infblock.h - $(CC) $(CFLAGS) $*.c - -inftrees.obj: inftrees.c zutil.h zlib.h zconf.h inftrees.h - $(CC) $(CFLAGS) $*.c - -infutil.obj: infutil.c zutil.h zlib.h zconf.h inftrees.h infutil.h - $(CC) $(CFLAGS) $*.c - -inffast.obj: inffast.c zutil.h zlib.h zconf.h inftrees.h infutil.h inffast.h - $(CC) $(CFLAGS) $*.c - -trees.obj: trees.c deflate.h zutil.h zlib.h zconf.h - $(CC) $(CFLAGS) $*.c - -uncompr.obj: uncompr.c zlib.h zconf.h - $(CC) $(CFLAGS) $*.c - -zutil.obj: zutil.c zutil.h zlib.h zconf.h - $(CC) $(CFLAGS) $*.c - -example.obj: example.c zlib.h zconf.h - $(CC) $(CFLAGS) $*.c - -minigzip.obj: minigzip.c zlib.h zconf.h - $(CC) $(CFLAGS) $*.c - -# we must cut the command line to fit in the MS/DOS 128 byte limit: -$(LIBTARGET): $(OBJ1) $(OBJ2) $(OBJ3) - del $(LIBTARGET) - $(LIB) $(LIBTARGET) +$(OBJP1) - $(LIB) $(LIBTARGET) +$(OBJP2) - $(LIB) $(LIBTARGET) +$(OBJP3) - -example.exe: example.obj $(LIBTARGET) - $(LD) $(LDFLAGS) example.obj $(LIBTARGET) - -minigzip.exe: minigzip.obj $(LIBTARGET) - $(LD) $(LDFLAGS) minigzip.obj $(LIBTARGET) - -test: minigzip.exe example.exe - example - echo hello world | minigzip | minigzip -d >test - type test - -clean: .SYMBOLIC - -erase *.obj - -erase *.exe - -erase $(LIBTARGET) diff --git a/src/zlib/maketree.c b/src/zlib/maketree.c deleted file mode 100644 index 66dd828318..0000000000 --- a/src/zlib/maketree.c +++ /dev/null @@ -1,119 +0,0 @@ -/* maketree.c -- make inffixed.h table for decoding fixed codes - * Copyright (C) 1998 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* WARNING: this file should *not* be used by applications. It is - part of the implementation of the compression library and is - subject to change. Applications should only use zlib.h. - */ - -/* This program is included in the distribution for completeness. - You do not need to compile or run this program since inffixed.h - is already included in the distribution. To use this program - you need to compile zlib with BUILDFIXED defined and then compile - and link this program with the zlib library. Then the output of - this program can be piped to inffixed.h. */ - -#include -#include -#include "zutil.h" -#include "inftrees.h" - -/* simplify the use of the inflate_huft type with some defines */ -#define exop word.what.Exop -#define bits word.what.Bits - -/* showtree is only used for debugging purposes */ -void showtree(uInt b, inflate_huft *t, int d) -{ - int i, e; - char p[2*d+1]; - - for (i = 0; i < 2*d; i++) - p[i] = ' '; - p[i] = 0; - printf("%s[%d]\n", p, 1< -#include "../zlib/zlib.h" - -#ifdef STDC -# include -# include -#else - extern void exit OF((int)); -#endif - -#ifdef USE_MMAP -# include -# include -# include -#endif - -#if defined(MSDOS) || defined(OS2) || defined(WIN32) -# include -# include -# define SET_BINARY_MODE(file) setmode(fileno(file), O_BINARY) -#else -# define SET_BINARY_MODE(file) -#endif - -#ifdef VMS -# define unlink delete -# define GZ_SUFFIX "-gz" -#endif -#ifdef RISCOS -# define unlink remove -# define GZ_SUFFIX "-gz" -# define fileno(file) file->__file -#endif - -#ifndef WIN32 /* unlink already in stdio.h for WIN32 */ - extern int unlink OF((const char *)); -#endif - -#ifndef GZ_SUFFIX -# define GZ_SUFFIX ".gz" -#endif -#define SUFFIX_LEN (sizeof(GZ_SUFFIX)-1) - -#define BUFLEN 16384 -#define MAX_NAME_LEN 1024 - -#ifdef MAXSEG_64K -# define local static - /* Needed for systems with limitation on stack size. */ -#else -# define local -#endif - -char *prog; - -void error OF((const char *msg)); -void gz_compress OF((FILE *in, gzFile out)); -#ifdef USE_MMAP -int gz_compress_mmap OF((FILE *in, gzFile out)); -#endif -void gz_uncompress OF((gzFile in, FILE *out)); -void file_compress OF((char *file, char *mode)); -void file_uncompress OF((char *file)); -int main OF((int argc, char *argv[])); - -/* =========================================================================== - * Display error message and exit - */ -void error(msg) - const char *msg; -{ - fprintf(stderr, "%s: %s\n", prog, msg); - exit(1); -} - -/* =========================================================================== - * Compress input to output then close both files. - */ - -void gz_compress(in, out) - FILE *in; - gzFile out; -{ - local char buf[BUFLEN]; - int len; - int err; - -#ifdef USE_MMAP - /* Try first compressing with mmap. If mmap fails (minigzip used in a - * pipe), use the normal fread loop. - */ - if (gz_compress_mmap(in, out) == Z_OK) return; -#endif - for (;;) { - len = fread(buf, 1, sizeof(buf), in); - if (ferror(in)) { - perror("fread"); - exit(1); - } - if (len == 0) break; - - if (gzwrite(out, buf, (unsigned)len) != len) error(gzerror(out, &err)); - } - fclose(in); - if (gzclose(out) != Z_OK) error("failed gzclose"); -} - -#ifdef USE_MMAP /* MMAP version, Miguel Albrecht */ - -/* Try compressing the input file at once using mmap. Return Z_OK if - * if success, Z_ERRNO otherwise. - */ -int gz_compress_mmap(in, out) - FILE *in; - gzFile out; -{ - int len; - int err; - int ifd = fileno(in); - caddr_t buf; /* mmap'ed buffer for the entire input file */ - off_t buf_len; /* length of the input file */ - struct stat sb; - - /* Determine the size of the file, needed for mmap: */ - if (fstat(ifd, &sb) < 0) return Z_ERRNO; - buf_len = sb.st_size; - if (buf_len <= 0) return Z_ERRNO; - - /* Now do the actual mmap: */ - buf = mmap((caddr_t) 0, buf_len, PROT_READ, MAP_SHARED, ifd, (off_t)0); - if (buf == (caddr_t)(-1)) return Z_ERRNO; - - /* Compress the whole file at once: */ - len = gzwrite(out, (char *)buf, (unsigned)buf_len); - - if (len != (int)buf_len) error(gzerror(out, &err)); - - munmap(buf, buf_len); - fclose(in); - if (gzclose(out) != Z_OK) error("failed gzclose"); - return Z_OK; -} -#endif /* USE_MMAP */ - -/* =========================================================================== - * Uncompress input to output then close both files. - */ -void gz_uncompress(in, out) - gzFile in; - FILE *out; -{ - local char buf[BUFLEN]; - int len; - int err; - - for (;;) { - len = gzread(in, buf, sizeof(buf)); - if (len < 0) error (gzerror(in, &err)); - if (len == 0) break; - - if ((int)fwrite(buf, 1, (unsigned)len, out) != len) { - error("failed fwrite"); - } - } - if (fclose(out)) error("failed fclose"); - - if (gzclose(in) != Z_OK) error("failed gzclose"); -} - - -/* =========================================================================== - * Compress the given file: create a corresponding .gz file and remove the - * original. - */ -void file_compress(file, mode) - char *file; - char *mode; -{ - local char outfile[MAX_NAME_LEN]; - FILE *in; - gzFile out; - - strcpy(outfile, file); - strcat(outfile, GZ_SUFFIX); - - in = fopen(file, "rb"); - if (in == NULL) { - perror(file); - exit(1); - } - out = gzopen(outfile, mode); - if (out == NULL) { - fprintf(stderr, "%s: can't gzopen %s\n", prog, outfile); - exit(1); - } - gz_compress(in, out); - - unlink(file); -} - - -/* =========================================================================== - * Uncompress the given file and remove the original. - */ -void file_uncompress(file) - char *file; -{ - local char buf[MAX_NAME_LEN]; - char *infile, *outfile; - FILE *out; - gzFile in; - int len = strlen(file); - - strcpy(buf, file); - - if (len > SUFFIX_LEN && strcmp(file+len-SUFFIX_LEN, GZ_SUFFIX) == 0) { - infile = file; - outfile = buf; - outfile[len-3] = '\0'; - } else { - outfile = file; - infile = buf; - strcat(infile, GZ_SUFFIX); - } - in = gzopen(infile, "rb"); - if (in == NULL) { - fprintf(stderr, "%s: can't gzopen %s\n", prog, infile); - exit(1); - } - out = fopen(outfile, "wb"); - if (out == NULL) { - perror(file); - exit(1); - } - - gz_uncompress(in, out); - - unlink(infile); -} - - -/* =========================================================================== - * Usage: minigzip [-d] [-f] [-h] [-1 to -9] [files...] - * -d : decompress - * -f : compress with Z_FILTERED - * -h : compress with Z_HUFFMAN_ONLY - * -1 to -9 : compression level - */ - -int main(argc, argv) - int argc; - char *argv[]; -{ - int uncompr = 0; - gzFile file; - char outmode[20]; - - strcpy(outmode, "wb6 "); - - prog = argv[0]; - argc--, argv++; - - while (argc > 0) { - if (strcmp(*argv, "-d") == 0) - uncompr = 1; - else if (strcmp(*argv, "-f") == 0) - outmode[3] = 'f'; - else if (strcmp(*argv, "-h") == 0) - outmode[3] = 'h'; - else if ((*argv)[0] == '-' && (*argv)[1] >= '1' && (*argv)[1] <= '9' && - (*argv)[2] == 0) - outmode[2] = (*argv)[1]; - else - break; - argc--, argv++; - } - if (argc == 0) { - SET_BINARY_MODE(stdin); - SET_BINARY_MODE(stdout); - if (uncompr) { - file = gzdopen(fileno(stdin), "rb"); - if (file == NULL) error("can't gzdopen stdin"); - gz_uncompress(file, stdout); - } else { - file = gzdopen(fileno(stdout), outmode); - if (file == NULL) error("can't gzdopen stdout"); - gz_compress(stdin, file); - } - } else { - do { - if (uncompr) { - file_uncompress(*argv); - } else { - file_compress(*argv, outmode); - } - } while (argv++, --argc); - } - exit(0); - return 0; /* to avoid warning */ -} diff --git a/src/zlib/trees.c b/src/zlib/trees.c deleted file mode 100644 index 24c68cb580..0000000000 --- a/src/zlib/trees.c +++ /dev/null @@ -1,1216 +0,0 @@ -/* trees.c -- output deflated data using Huffman coding - * Copyright (C) 1995-1998 Jean-loup Gailly - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* - * ALGORITHM - * - * The "deflation" process uses several Huffman trees. The more - * common source values are represented by shorter bit sequences. - * - * Each code tree is stored in a compressed form which is itself - * a Huffman encoding of the lengths of all the code strings (in - * ascending order by source values). The actual code strings are - * reconstructed from the lengths in the inflate process, as described - * in the deflate specification. - * - * REFERENCES - * - * Deutsch, L.P.,"'Deflate' Compressed Data Format Specification". - * Available in ftp.uu.net:/pub/archiving/zip/doc/deflate-1.1.doc - * - * Storer, James A. - * Data Compression: Methods and Theory, pp. 49-50. - * Computer Science Press, 1988. ISBN 0-7167-8156-5. - * - * Sedgewick, R. - * Algorithms, p290. - * Addison-Wesley, 1983. ISBN 0-201-06672-6. - */ - -/* @(#) $Id$ */ - -/* #define GEN_TREES_H */ - -#include "deflate.h" - -#ifdef __WXDEBUG__ -# include -#endif - -/* =========================================================================== - * Constants - */ - -#define MAX_BL_BITS 7 -/* Bit length codes must not exceed MAX_BL_BITS bits */ - -#define END_BLOCK 256 -/* end of block literal code */ - -#define REP_3_6 16 -/* repeat previous bit length 3-6 times (2 bits of repeat count) */ - -#define REPZ_3_10 17 -/* repeat a zero length 3-10 times (3 bits of repeat count) */ - -#define REPZ_11_138 18 -/* repeat a zero length 11-138 times (7 bits of repeat count) */ - -local const int extra_lbits[LENGTH_CODES] /* extra bits for each length code */ - = {0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0}; - -local const int extra_dbits[D_CODES] /* extra bits for each distance code */ - = {0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13}; - -local const int extra_blbits[BL_CODES]/* extra bits for each bit length code */ - = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7}; - -local const uch bl_order[BL_CODES] - = {16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15}; -/* The lengths of the bit length codes are sent in order of decreasing - * probability, to avoid transmitting the lengths for unused bit length codes. - */ - -#define Buf_size (8 * 2*sizeof(char)) -/* Number of bits used within bi_buf. (bi_buf might be implemented on - * more than 16 bits on some systems.) - */ - -/* =========================================================================== - * Local data. These are initialized only once. - */ - -#define DIST_CODE_LEN 512 /* see definition of array dist_code below */ - -#if defined(GEN_TREES_H) || !defined(STDC) -/* non ANSI compilers may not accept trees.h */ - -local ct_data static_ltree[L_CODES+2]; -/* The static literal tree. Since the bit lengths are imposed, there is no - * need for the L_CODES extra codes used during heap construction. However - * The codes 286 and 287 are needed to build a canonical tree (see _tr_init - * below). - */ - -local ct_data static_dtree[D_CODES]; -/* The static distance tree. (Actually a trivial tree since all codes use - * 5 bits.) - */ - -uch _dist_code[DIST_CODE_LEN]; -/* Distance codes. The first 256 values correspond to the distances - * 3 .. 258, the last 256 values correspond to the top 8 bits of - * the 15 bit distances. - */ - -uch _length_code[MAX_MATCH-MIN_MATCH+1]; -/* length code for each normalized match length (0 == MIN_MATCH) */ - -local int base_length[LENGTH_CODES]; -/* First normalized length for each code (0 = MIN_MATCH) */ - -local int base_dist[D_CODES]; -/* First normalized distance for each code (0 = distance of 1) */ - -#else -# include "trees.h" -#endif /* GEN_TREES_H */ - -struct static_tree_desc_s { - const ct_data *static_tree; /* static tree or NULL */ - const intf *extra_bits; /* extra bits for each code or NULL */ - int extra_base; /* base index for extra_bits */ - int elems; /* max number of elements in the tree */ - int max_length; /* max bit length for the codes */ -}; - -local static_tree_desc static_l_desc = -{static_ltree, extra_lbits, LITERALS+1, L_CODES, MAX_BITS}; - -local static_tree_desc static_d_desc = -{static_dtree, extra_dbits, 0, D_CODES, MAX_BITS}; - -local static_tree_desc static_bl_desc = -{(const ct_data *)0, extra_blbits, 0, BL_CODES, MAX_BL_BITS}; - -/* =========================================================================== - * Local (static) routines in this file. - */ - -local void tr_static_init OF((void)); -local void init_block OF((deflate_state *s)); -local void pqdownheap OF((deflate_state *s, ct_data *tree, int k)); -local void gen_bitlen OF((deflate_state *s, tree_desc *desc)); -local void gen_codes OF((ct_data *tree, int max_code, ushf *bl_count)); -local void build_tree OF((deflate_state *s, tree_desc *desc)); -local void scan_tree OF((deflate_state *s, ct_data *tree, int max_code)); -local void send_tree OF((deflate_state *s, ct_data *tree, int max_code)); -local int build_bl_tree OF((deflate_state *s)); -local void send_all_trees OF((deflate_state *s, int lcodes, int dcodes, - int blcodes)); -local void compress_block OF((deflate_state *s, ct_data *ltree, - ct_data *dtree)); -local void set_data_type OF((deflate_state *s)); -local unsigned bi_reverse OF((unsigned value, int length)); -local void bi_windup OF((deflate_state *s)); -local void bi_flush OF((deflate_state *s)); -local void copy_block OF((deflate_state *s, charf *buf, unsigned len, - int header)); - -#ifdef GEN_TREES_H -local void gen_trees_header OF((void)); -#endif - -#ifndef __WXDEBUG__ -# define send_code(s, c, tree) send_bits(s, tree[c].Code, tree[c].Len) - /* Send a code of the given tree. c and tree must not have side effects */ - -#else /* __WXDEBUG__ */ -# define send_code(s, c, tree) \ - { if (z_verbose>2) fprintf(stderr,"\ncd %3d ",(c)); \ - send_bits(s, tree[c].Code, tree[c].Len); } -#endif - -/* =========================================================================== - * Output a short LSB first on the stream. - * IN assertion: there is enough room in pendingBuf. - */ -#define put_short(s, w) { \ - put_byte(s, (uch)((w) & 0xff)); \ - put_byte(s, (uch)((ush)(w) >> 8)); \ -} - -/* =========================================================================== - * Send a value on a given number of bits. - * IN assertion: length <= 16 and value fits in length bits. - */ -#ifdef __WXDEBUG__ -local void send_bits OF((deflate_state *s, int value, int length)); - -local void send_bits(s, value, length) - deflate_state *s; - int value; /* value to send */ - int length; /* number of bits */ -{ - Tracevv((stderr," l %2d v %4x ", length, value)); - Assert(length > 0 && length <= 15, "invalid length"); - s->bits_sent += (ulg)length; - - /* If not enough room in bi_buf, use (valid) bits from bi_buf and - * (16 - bi_valid) bits from value, leaving (width - (16-bi_valid)) - * unused bits in value. - */ - if (s->bi_valid > (int)Buf_size - length) { - s->bi_buf |= (value << s->bi_valid); - put_short(s, s->bi_buf); - s->bi_buf = (ush)value >> (Buf_size - s->bi_valid); - s->bi_valid += length - Buf_size; - } else { - s->bi_buf |= value << s->bi_valid; - s->bi_valid += length; - } -} -#else /* !__WXDEBUG__ */ - -#define send_bits(s, value, length) \ -{ int len = length;\ - if (s->bi_valid > (int)Buf_size - len) {\ - int val = value;\ - s->bi_buf |= (val << s->bi_valid);\ - put_short(s, s->bi_buf);\ - s->bi_buf = (ush)val >> (Buf_size - s->bi_valid);\ - s->bi_valid += len - Buf_size;\ - } else {\ - s->bi_buf |= (value) << s->bi_valid;\ - s->bi_valid += len;\ - }\ -} -#endif /* __WXDEBUG__ */ - - -#define MAX(a,b) (a >= b ? a : b) -/* the arguments must not have side effects */ - -/* =========================================================================== - * Initialize the various 'constant' tables. - */ -local void tr_static_init() -{ -#if defined(GEN_TREES_H) || !defined(STDC) - static int static_init_done = 0; - int n; /* iterates over tree elements */ - int bits; /* bit counter */ - int length; /* length value */ - int code; /* code value */ - int dist; /* distance index */ - ush bl_count[MAX_BITS+1]; - /* number of codes at each bit length for an optimal tree */ - - if (static_init_done) return; - - /* Initialize the mapping length (0..255) -> length code (0..28) */ - length = 0; - for (code = 0; code < LENGTH_CODES-1; code++) { - base_length[code] = length; - for (n = 0; n < (1< dist code (0..29) */ - dist = 0; - for (code = 0 ; code < 16; code++) { - base_dist[code] = dist; - for (n = 0; n < (1<>= 7; /* from now on, all distances are divided by 128 */ - for ( ; code < D_CODES; code++) { - base_dist[code] = dist << 7; - for (n = 0; n < (1<<(extra_dbits[code]-7)); n++) { - _dist_code[256 + dist++] = (uch)code; - } - } - Assert (dist == 256, "tr_static_init: 256+dist != 512"); - - /* Construct the codes of the static literal tree */ - for (bits = 0; bits <= MAX_BITS; bits++) bl_count[bits] = 0; - n = 0; - while (n <= 143) static_ltree[n++].Len = 8, bl_count[8]++; - while (n <= 255) static_ltree[n++].Len = 9, bl_count[9]++; - while (n <= 279) static_ltree[n++].Len = 7, bl_count[7]++; - while (n <= 287) static_ltree[n++].Len = 8, bl_count[8]++; - /* Codes 286 and 287 do not exist, but we must include them in the - * tree construction to get a canonical Huffman tree (longest code - * all ones) - */ - gen_codes((ct_data *)static_ltree, L_CODES+1, bl_count); - - /* The static distance tree is trivial: */ - for (n = 0; n < D_CODES; n++) { - static_dtree[n].Len = 5; - static_dtree[n].Code = bi_reverse((unsigned)n, 5); - } - static_init_done = 1; - -# ifdef GEN_TREES_H - gen_trees_header(); -# endif -#endif /* defined(GEN_TREES_H) || !defined(STDC) */ -} - -/* =========================================================================== - * Genererate the file trees.h describing the static trees. - */ -#ifdef GEN_TREES_H -# ifndef __WXDEBUG__ -# include -# endif - -# define SEPARATOR(i, last, width) \ - ((i) == (last)? "\n};\n\n" : \ - ((i) % (width) == (width)-1 ? ",\n" : ", ")) - -void gen_trees_header() -{ - FILE *header = fopen("trees.h", "w"); - int i; - - Assert (header != NULL, "Can't open trees.h"); - fprintf(header, - "/* header created automatically with -DGEN_TREES_H */\n\n"); - - fprintf(header, "local const ct_data static_ltree[L_CODES+2] = {\n"); - for (i = 0; i < L_CODES+2; i++) { - fprintf(header, "{{%3u},{%3u}}%s", static_ltree[i].Code, - static_ltree[i].Len, SEPARATOR(i, L_CODES+1, 5)); - } - - fprintf(header, "local const ct_data static_dtree[D_CODES] = {\n"); - for (i = 0; i < D_CODES; i++) { - fprintf(header, "{{%2u},{%2u}}%s", static_dtree[i].Code, - static_dtree[i].Len, SEPARATOR(i, D_CODES-1, 5)); - } - - fprintf(header, "const uch _dist_code[DIST_CODE_LEN] = {\n"); - for (i = 0; i < DIST_CODE_LEN; i++) { - fprintf(header, "%2u%s", _dist_code[i], - SEPARATOR(i, DIST_CODE_LEN-1, 20)); - } - - fprintf(header, "const uch _length_code[MAX_MATCH-MIN_MATCH+1]= {\n"); - for (i = 0; i < MAX_MATCH-MIN_MATCH+1; i++) { - fprintf(header, "%2u%s", _length_code[i], - SEPARATOR(i, MAX_MATCH-MIN_MATCH, 20)); - } - - fprintf(header, "local const int base_length[LENGTH_CODES] = {\n"); - for (i = 0; i < LENGTH_CODES; i++) { - fprintf(header, "%1u%s", base_length[i], - SEPARATOR(i, LENGTH_CODES-1, 20)); - } - - fprintf(header, "local const int base_dist[D_CODES] = {\n"); - for (i = 0; i < D_CODES; i++) { - fprintf(header, "%5u%s", base_dist[i], - SEPARATOR(i, D_CODES-1, 10)); - } - - fclose(header); -} -#endif /* GEN_TREES_H */ - -/* =========================================================================== - * Initialize the tree data structures for a new zlib stream. - */ -void _tr_init(s) - deflate_state *s; -{ - tr_static_init(); - - s->compressed_len = 0L; - - s->l_desc.dyn_tree = s->dyn_ltree; - s->l_desc.stat_desc = &static_l_desc; - - s->d_desc.dyn_tree = s->dyn_dtree; - s->d_desc.stat_desc = &static_d_desc; - - s->bl_desc.dyn_tree = s->bl_tree; - s->bl_desc.stat_desc = &static_bl_desc; - - s->bi_buf = 0; - s->bi_valid = 0; - s->last_eob_len = 8; /* enough lookahead for inflate */ -#ifdef __WXDEBUG__ - s->bits_sent = 0L; -#endif - - /* Initialize the first block of the first file: */ - init_block(s); -} - -/* =========================================================================== - * Initialize a new block. - */ -local void init_block(s) - deflate_state *s; -{ - int n; /* iterates over tree elements */ - - /* Initialize the trees. */ - for (n = 0; n < L_CODES; n++) s->dyn_ltree[n].Freq = 0; - for (n = 0; n < D_CODES; n++) s->dyn_dtree[n].Freq = 0; - for (n = 0; n < BL_CODES; n++) s->bl_tree[n].Freq = 0; - - s->dyn_ltree[END_BLOCK].Freq = 1; - s->opt_len = s->static_len = 0L; - s->last_lit = s->matches = 0; -} - -#define SMALLEST 1 -/* Index within the heap array of least frequent node in the Huffman tree */ - - -/* =========================================================================== - * Remove the smallest element from the heap and recreate the heap with - * one less element. Updates heap and heap_len. - */ -#define pqremove(s, tree, top) \ -{\ - top = s->heap[SMALLEST]; \ - s->heap[SMALLEST] = s->heap[s->heap_len--]; \ - pqdownheap(s, tree, SMALLEST); \ -} - -/* =========================================================================== - * Compares to subtrees, using the tree depth as tie breaker when - * the subtrees have equal frequency. This minimizes the worst case length. - */ -#define smaller(tree, n, m, depth) \ - (tree[n].Freq < tree[m].Freq || \ - (tree[n].Freq == tree[m].Freq && depth[n] <= depth[m])) - -/* =========================================================================== - * Restore the heap property by moving down the tree starting at node k, - * exchanging a node with the smallest of its two sons if necessary, stopping - * when the heap property is re-established (each father smaller than its - * two sons). - */ -local void pqdownheap(s, tree, k) - deflate_state *s; - ct_data *tree; /* the tree to restore */ - int k; /* node to move down */ -{ - int v = s->heap[k]; - int j = k << 1; /* left son of k */ - while (j <= s->heap_len) { - /* Set j to the smallest of the two sons: */ - if (j < s->heap_len && - smaller(tree, s->heap[j+1], s->heap[j], s->depth)) { - j++; - } - /* Exit if v is smaller than both sons */ - if (smaller(tree, v, s->heap[j], s->depth)) break; - - /* Exchange v with the smallest son */ - s->heap[k] = s->heap[j]; k = j; - - /* And continue down the tree, setting j to the left son of k */ - j <<= 1; - } - s->heap[k] = v; -} - -/* =========================================================================== - * Compute the optimal bit lengths for a tree and update the total bit length - * for the current block. - * IN assertion: the fields freq and dad are set, heap[heap_max] and - * above are the tree nodes sorted by increasing frequency. - * OUT assertions: the field len is set to the optimal bit length, the - * array bl_count contains the frequencies for each bit length. - * The length opt_len is updated; static_len is also updated if stree is - * not null. - */ -local void gen_bitlen(s, desc) - deflate_state *s; - tree_desc *desc; /* the tree descriptor */ -{ - ct_data *tree = desc->dyn_tree; - int max_code = desc->max_code; - const ct_data *stree = desc->stat_desc->static_tree; - const intf *extra = desc->stat_desc->extra_bits; - int base = desc->stat_desc->extra_base; - int max_length = desc->stat_desc->max_length; - int h; /* heap index */ - int n, m; /* iterate over the tree elements */ - int bits; /* bit length */ - int xbits; /* extra bits */ - ush f; /* frequency */ - int overflow = 0; /* number of elements with bit length too large */ - - for (bits = 0; bits <= MAX_BITS; bits++) s->bl_count[bits] = 0; - - /* In a first pass, compute the optimal bit lengths (which may - * overflow in the case of the bit length tree). - */ - tree[s->heap[s->heap_max]].Len = 0; /* root of the heap */ - - for (h = s->heap_max+1; h < HEAP_SIZE; h++) { - n = s->heap[h]; - bits = tree[tree[n].Dad].Len + 1; - if (bits > max_length) bits = max_length, overflow++; - tree[n].Len = (ush)bits; - /* We overwrite tree[n].Dad which is no longer needed */ - - if (n > max_code) continue; /* not a leaf node */ - - s->bl_count[bits]++; - xbits = 0; - if (n >= base) xbits = extra[n-base]; - f = tree[n].Freq; - s->opt_len += (ulg)f * (bits + xbits); - if (stree) s->static_len += (ulg)f * (stree[n].Len + xbits); - } - if (overflow == 0) return; - - Trace((stderr,"\nbit length overflow\n")); - /* This happens for example on obj2 and pic of the Calgary corpus */ - - /* Find the first bit length which could increase: */ - do { - bits = max_length-1; - while (s->bl_count[bits] == 0) bits--; - s->bl_count[bits]--; /* move one leaf down the tree */ - s->bl_count[bits+1] += 2; /* move one overflow item as its brother */ - s->bl_count[max_length]--; - /* The brother of the overflow item also moves one step up, - * but this does not affect bl_count[max_length] - */ - overflow -= 2; - } while (overflow > 0); - - /* Now recompute all bit lengths, scanning in increasing frequency. - * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all - * lengths instead of fixing only the wrong ones. This idea is taken - * from 'ar' written by Haruhiko Okumura.) - */ - for (bits = max_length; bits != 0; bits--) { - n = s->bl_count[bits]; - while (n != 0) { - m = s->heap[--h]; - if (m > max_code) continue; - if (tree[m].Len != (unsigned) bits) { - Trace((stderr,"code %d bits %d->%d\n", m, tree[m].Len, bits)); - s->opt_len += ((long)bits - (long)tree[m].Len) - *(long)tree[m].Freq; - tree[m].Len = (ush)bits; - } - n--; - } - } -} - -/* =========================================================================== - * Generate the codes for a given tree and bit counts (which need not be - * optimal). - * IN assertion: the array bl_count contains the bit length statistics for - * the given tree and the field len is set for all tree elements. - * OUT assertion: the field code is set for all tree elements of non - * zero code length. - */ -local void gen_codes (tree, max_code, bl_count) - ct_data *tree; /* the tree to decorate */ - int max_code; /* largest code with non zero frequency */ - ushf *bl_count; /* number of codes at each bit length */ -{ - ush next_code[MAX_BITS+1]; /* next code value for each bit length */ - ush code = 0; /* running code value */ - int bits; /* bit index */ - int n; /* code index */ - - /* The distribution counts are first used to generate the code values - * without bit reversal. - */ - for (bits = 1; bits <= MAX_BITS; bits++) { - next_code[bits] = code = (code + bl_count[bits-1]) << 1; - } - /* Check that the bit counts in bl_count are consistent. The last code - * must be all ones. - */ - Assert (code + bl_count[MAX_BITS]-1 == (1<dyn_tree; - const ct_data *stree = desc->stat_desc->static_tree; - int elems = desc->stat_desc->elems; - int n, m; /* iterate over heap elements */ - int max_code = -1; /* largest code with non zero frequency */ - int node; /* new node being created */ - - /* Construct the initial heap, with least frequent element in - * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1]. - * heap[0] is not used. - */ - s->heap_len = 0, s->heap_max = HEAP_SIZE; - - for (n = 0; n < elems; n++) { - if (tree[n].Freq != 0) { - s->heap[++(s->heap_len)] = max_code = n; - s->depth[n] = 0; - } else { - tree[n].Len = 0; - } - } - - /* The pkzip format requires that at least one distance code exists, - * and that at least one bit should be sent even if there is only one - * possible code. So to avoid special checks later on we force at least - * two codes of non zero frequency. - */ - while (s->heap_len < 2) { - node = s->heap[++(s->heap_len)] = (max_code < 2 ? ++max_code : 0); - tree[node].Freq = 1; - s->depth[node] = 0; - s->opt_len--; if (stree) s->static_len -= stree[node].Len; - /* node is 0 or 1 so it does not have extra bits */ - } - desc->max_code = max_code; - - /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree, - * establish sub-heaps of increasing lengths: - */ - for (n = s->heap_len/2; n >= 1; n--) pqdownheap(s, tree, n); - - /* Construct the Huffman tree by repeatedly combining the least two - * frequent nodes. - */ - node = elems; /* next internal node of the tree */ - do { - pqremove(s, tree, n); /* n = node of least frequency */ - m = s->heap[SMALLEST]; /* m = node of next least frequency */ - - s->heap[--(s->heap_max)] = n; /* keep the nodes sorted by frequency */ - s->heap[--(s->heap_max)] = m; - - /* Create a new node father of n and m */ - tree[node].Freq = tree[n].Freq + tree[m].Freq; - s->depth[node] = (uch) (MAX(s->depth[n], s->depth[m]) + 1); - tree[n].Dad = tree[m].Dad = (ush)node; -#ifdef DUMP_BL_TREE - if (tree == s->bl_tree) { - fprintf(stderr,"\nnode %d(%d), sons %d(%d) %d(%d)", - node, tree[node].Freq, n, tree[n].Freq, m, tree[m].Freq); - } -#endif - /* and insert the new node in the heap */ - s->heap[SMALLEST] = node++; - pqdownheap(s, tree, SMALLEST); - - } while (s->heap_len >= 2); - - s->heap[--(s->heap_max)] = s->heap[SMALLEST]; - - /* At this point, the fields freq and dad are set. We can now - * generate the bit lengths. - */ - gen_bitlen(s, (tree_desc *)desc); - - /* The field len is now set, we can generate the bit codes */ - gen_codes ((ct_data *)tree, max_code, s->bl_count); -} - -/* =========================================================================== - * Scan a literal or distance tree to determine the frequencies of the codes - * in the bit length tree. - */ -local void scan_tree (s, tree, max_code) - deflate_state *s; - ct_data *tree; /* the tree to be scanned */ - int max_code; /* and its largest code of non zero frequency */ -{ - int n; /* iterates over all tree elements */ - int prevlen = -1; /* last emitted length */ - int curlen; /* length of current code */ - int nextlen = tree[0].Len; /* length of next code */ - int count = 0; /* repeat count of the current code */ - int max_count = 7; /* max repeat count */ - int min_count = 4; /* min repeat count */ - - if (nextlen == 0) max_count = 138, min_count = 3; - tree[max_code+1].Len = (ush)0xffff; /* guard */ - - for (n = 0; n <= max_code; n++) { - curlen = nextlen; nextlen = tree[n+1].Len; - if (++count < max_count && curlen == nextlen) { - continue; - } else if (count < min_count) { - s->bl_tree[curlen].Freq += count; - } else if (curlen != 0) { - if (curlen != prevlen) s->bl_tree[curlen].Freq++; - s->bl_tree[REP_3_6].Freq++; - } else if (count <= 10) { - s->bl_tree[REPZ_3_10].Freq++; - } else { - s->bl_tree[REPZ_11_138].Freq++; - } - count = 0; prevlen = curlen; - if (nextlen == 0) { - max_count = 138, min_count = 3; - } else if (curlen == nextlen) { - max_count = 6, min_count = 3; - } else { - max_count = 7, min_count = 4; - } - } -} - -/* =========================================================================== - * Send a literal or distance tree in compressed form, using the codes in - * bl_tree. - */ -local void send_tree (s, tree, max_code) - deflate_state *s; - ct_data *tree; /* the tree to be scanned */ - int max_code; /* and its largest code of non zero frequency */ -{ - int n; /* iterates over all tree elements */ - int prevlen = -1; /* last emitted length */ - int curlen; /* length of current code */ - int nextlen = tree[0].Len; /* length of next code */ - int count = 0; /* repeat count of the current code */ - int max_count = 7; /* max repeat count */ - int min_count = 4; /* min repeat count */ - - /* tree[max_code+1].Len = -1; */ /* guard already set */ - if (nextlen == 0) max_count = 138, min_count = 3; - - for (n = 0; n <= max_code; n++) { - curlen = nextlen; nextlen = tree[n+1].Len; - if (++count < max_count && curlen == nextlen) { - continue; - } else if (count < min_count) { - do { send_code(s, curlen, s->bl_tree); } while (--count != 0); - - } else if (curlen != 0) { - if (curlen != prevlen) { - send_code(s, curlen, s->bl_tree); count--; - } - Assert(count >= 3 && count <= 6, " 3_6?"); - send_code(s, REP_3_6, s->bl_tree); send_bits(s, count-3, 2); - - } else if (count <= 10) { - send_code(s, REPZ_3_10, s->bl_tree); send_bits(s, count-3, 3); - - } else { - send_code(s, REPZ_11_138, s->bl_tree); send_bits(s, count-11, 7); - } - count = 0; prevlen = curlen; - if (nextlen == 0) { - max_count = 138, min_count = 3; - } else if (curlen == nextlen) { - max_count = 6, min_count = 3; - } else { - max_count = 7, min_count = 4; - } - } -} - -/* =========================================================================== - * Construct the Huffman tree for the bit lengths and return the index in - * bl_order of the last bit length code to send. - */ -local int build_bl_tree(s) - deflate_state *s; -{ - int max_blindex; /* index of last bit length code of non zero freq */ - - /* Determine the bit length frequencies for literal and distance trees */ - scan_tree(s, (ct_data *)s->dyn_ltree, s->l_desc.max_code); - scan_tree(s, (ct_data *)s->dyn_dtree, s->d_desc.max_code); - - /* Build the bit length tree: */ - build_tree(s, (tree_desc *)(&(s->bl_desc))); - /* opt_len now includes the length of the tree representations, except - * the lengths of the bit lengths codes and the 5+5+4 bits for the counts. - */ - - /* Determine the number of bit length codes to send. The pkzip format - * requires that at least 4 bit length codes be sent. (appnote.txt says - * 3 but the actual value used is 4.) - */ - for (max_blindex = BL_CODES-1; max_blindex >= 3; max_blindex--) { - if (s->bl_tree[bl_order[max_blindex]].Len != 0) break; - } - /* Update opt_len to include the bit length tree and counts */ - s->opt_len += 3*(max_blindex+1) + 5+5+4; - Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld", - s->opt_len, s->static_len)); - - return max_blindex; -} - -/* =========================================================================== - * Send the header for a block using dynamic Huffman trees: the counts, the - * lengths of the bit length codes, the literal tree and the distance tree. - * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4. - */ -local void send_all_trees(s, lcodes, dcodes, blcodes) - deflate_state *s; - int lcodes, dcodes, blcodes; /* number of codes for each tree */ -{ - int rank; /* index in bl_order */ - - Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, "not enough codes"); - Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES, - "too many codes"); - Tracev((stderr, "\nbl counts: ")); - send_bits(s, lcodes-257, 5); /* not +255 as stated in appnote.txt */ - send_bits(s, dcodes-1, 5); - send_bits(s, blcodes-4, 4); /* not -3 as stated in appnote.txt */ - for (rank = 0; rank < blcodes; rank++) { - Tracev((stderr, "\nbl code %2d ", bl_order[rank])); - send_bits(s, s->bl_tree[bl_order[rank]].Len, 3); - } - Tracev((stderr, "\nbl tree: sent %ld", s->bits_sent)); - - send_tree(s, (ct_data *)s->dyn_ltree, lcodes-1); /* literal tree */ - Tracev((stderr, "\nlit tree: sent %ld", s->bits_sent)); - - send_tree(s, (ct_data *)s->dyn_dtree, dcodes-1); /* distance tree */ - Tracev((stderr, "\ndist tree: sent %ld", s->bits_sent)); -} - -/* =========================================================================== - * Send a stored block - */ -void _tr_stored_block(s, buf, stored_len, eof) - deflate_state *s; - charf *buf; /* input block */ - ulg stored_len; /* length of input block */ - int eof; /* true if this is the last block for a file */ -{ - send_bits(s, (STORED_BLOCK<<1)+eof, 3); /* send block type */ - s->compressed_len = (s->compressed_len + 3 + 7) & (ulg)~7L; - s->compressed_len += (stored_len + 4) << 3; - - copy_block(s, buf, (unsigned)stored_len, 1); /* with header */ -} - -/* =========================================================================== - * Send one empty static block to give enough lookahead for inflate. - * This takes 10 bits, of which 7 may remain in the bit buffer. - * The current inflate code requires 9 bits of lookahead. If the - * last two codes for the previous block (real code plus EOB) were coded - * on 5 bits or less, inflate may have only 5+3 bits of lookahead to decode - * the last real code. In this case we send two empty static blocks instead - * of one. (There are no problems if the previous block is stored or fixed.) - * To simplify the code, we assume the worst case of last real code encoded - * on one bit only. - */ -void _tr_align(s) - deflate_state *s; -{ - send_bits(s, STATIC_TREES<<1, 3); - send_code(s, END_BLOCK, static_ltree); - s->compressed_len += 10L; /* 3 for block type, 7 for EOB */ - bi_flush(s); - /* Of the 10 bits for the empty block, we have already sent - * (10 - bi_valid) bits. The lookahead for the last real code (before - * the EOB of the previous block) was thus at least one plus the length - * of the EOB plus what we have just sent of the empty static block. - */ - if (1 + s->last_eob_len + 10 - s->bi_valid < 9) { - send_bits(s, STATIC_TREES<<1, 3); - send_code(s, END_BLOCK, static_ltree); - s->compressed_len += 10L; - bi_flush(s); - } - s->last_eob_len = 7; -} - -/* =========================================================================== - * Determine the best encoding for the current block: dynamic trees, static - * trees or store, and output the encoded block to the zip file. This function - * returns the total compressed length for the file so far. - */ -ulg _tr_flush_block(s, buf, stored_len, eof) - deflate_state *s; - charf *buf; /* input block, or NULL if too old */ - ulg stored_len; /* length of input block */ - int eof; /* true if this is the last block for a file */ -{ - ulg opt_lenb, static_lenb; /* opt_len and static_len in bytes */ - int max_blindex = 0; /* index of last bit length code of non zero freq */ - - /* Build the Huffman trees unless a stored block is forced */ - if (s->level > 0) { - - /* Check if the file is ascii or binary */ - if (s->data_type == Z_UNKNOWN) set_data_type(s); - - /* Construct the literal and distance trees */ - build_tree(s, (tree_desc *)(&(s->l_desc))); - Tracev((stderr, "\nlit data: dyn %ld, stat %ld", s->opt_len, - s->static_len)); - - build_tree(s, (tree_desc *)(&(s->d_desc))); - Tracev((stderr, "\ndist data: dyn %ld, stat %ld", s->opt_len, - s->static_len)); - /* At this point, opt_len and static_len are the total bit lengths of - * the compressed block data, excluding the tree representations. - */ - - /* Build the bit length tree for the above two trees, and get the index - * in bl_order of the last bit length code to send. - */ - max_blindex = build_bl_tree(s); - - /* Determine the best encoding. Compute first the block length in bytes*/ - opt_lenb = (s->opt_len+3+7)>>3; - static_lenb = (s->static_len+3+7)>>3; - - Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ", - opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len, - s->last_lit)); - - if (static_lenb <= opt_lenb) opt_lenb = static_lenb; - - } else { - Assert(buf != (char*)0, "lost buf"); - opt_lenb = static_lenb = stored_len + 5; /* force a stored block */ - } - - /* If compression failed and this is the first and last block, - * and if the .zip file can be seeked (to rewrite the local header), - * the whole file is transformed into a stored file: - */ -#ifdef STORED_FILE_OK -# ifdef FORCE_STORED_FILE - if (eof && s->compressed_len == 0L) { /* force stored file */ -# else - if (stored_len <= opt_lenb && eof && s->compressed_len==0L && seekable()) { -# endif - /* Since LIT_BUFSIZE <= 2*WSIZE, the input data must be there: */ - if (buf == (charf*)0) error ("block vanished"); - - copy_block(buf, (unsigned)stored_len, 0); /* without header */ - s->compressed_len = stored_len << 3; - s->method = STORED; - } else -#endif /* STORED_FILE_OK */ - -#ifdef FORCE_STORED - if (buf != (char*)0) { /* force stored block */ -#else - if (stored_len+4 <= opt_lenb && buf != (char*)0) { - /* 4: two words for the lengths */ -#endif - /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE. - * Otherwise we can't have processed more than WSIZE input bytes since - * the last block flush, because compression would have been - * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to - * transform a block into a stored block. - */ - _tr_stored_block(s, buf, stored_len, eof); - -#ifdef FORCE_STATIC - } else if (static_lenb >= 0) { /* force static trees */ -#else - } else if (static_lenb == opt_lenb) { -#endif - send_bits(s, (STATIC_TREES<<1)+eof, 3); - compress_block(s, (ct_data *)static_ltree, (ct_data *)static_dtree); - s->compressed_len += 3 + s->static_len; - } else { - send_bits(s, (DYN_TREES<<1)+eof, 3); - send_all_trees(s, s->l_desc.max_code+1, s->d_desc.max_code+1, - max_blindex+1); - compress_block(s, (ct_data *)s->dyn_ltree, (ct_data *)s->dyn_dtree); - s->compressed_len += 3 + s->opt_len; - } - Assert (s->compressed_len == s->bits_sent, "bad compressed size"); - init_block(s); - - if (eof) { - bi_windup(s); - s->compressed_len += 7; /* align on byte boundary */ - } - Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len>>3, - s->compressed_len-7*eof)); - - return s->compressed_len >> 3; -} - -/* =========================================================================== - * Save the match info and tally the frequency counts. Return true if - * the current block must be flushed. - */ -int _tr_tally (s, dist, lc) - deflate_state *s; - unsigned dist; /* distance of matched string */ - unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */ -{ - s->d_buf[s->last_lit] = (ush)dist; - s->l_buf[s->last_lit++] = (uch)lc; - if (dist == 0) { - /* lc is the unmatched char */ - s->dyn_ltree[lc].Freq++; - } else { - s->matches++; - /* Here, lc is the match length - MIN_MATCH */ - dist--; /* dist = match distance - 1 */ - Assert((ush)dist < (ush)MAX_DIST(s) && - (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) && - (ush)d_code(dist) < (ush)D_CODES, "_tr_tally: bad match"); - - s->dyn_ltree[_length_code[lc]+LITERALS+1].Freq++; - s->dyn_dtree[d_code(dist)].Freq++; - } - -#ifdef TRUNCATE_BLOCK - /* Try to guess if it is profitable to stop the current block here */ - if ((s->last_lit & 0x1fff) == 0 && s->level > 2) { - /* Compute an upper bound for the compressed length */ - ulg out_length = (ulg)s->last_lit*8L; - ulg in_length = (ulg)((long)s->strstart - s->block_start); - int dcode; - for (dcode = 0; dcode < D_CODES; dcode++) { - out_length += (ulg)s->dyn_dtree[dcode].Freq * - (5L+extra_dbits[dcode]); - } - out_length >>= 3; - Tracev((stderr,"\nlast_lit %u, in %ld, out ~%ld(%ld%%) ", - s->last_lit, in_length, out_length, - 100L - out_length*100L/in_length)); - if (s->matches < s->last_lit/2 && out_length < in_length/2) return 1; - } -#endif - return (s->last_lit == s->lit_bufsize-1); - /* We avoid equality with lit_bufsize because of wraparound at 64K - * on 16 bit machines and because stored blocks are restricted to - * 64K-1 bytes. - */ -} - -/* =========================================================================== - * Send the block data compressed using the given Huffman trees - */ -local void compress_block(s, ltree, dtree) - deflate_state *s; - ct_data *ltree; /* literal tree */ - ct_data *dtree; /* distance tree */ -{ - unsigned dist; /* distance of matched string */ - int lc; /* match length or unmatched char (if dist == 0) */ - unsigned lx = 0; /* running index in l_buf */ - unsigned code; /* the code to send */ - int extra; /* number of extra bits to send */ - - if (s->last_lit != 0) do { - dist = s->d_buf[lx]; - lc = s->l_buf[lx++]; - if (dist == 0) { - send_code(s, lc, ltree); /* send a literal byte */ - Tracecv(isgraph(lc), (stderr," '%c' ", lc)); - } else { - /* Here, lc is the match length - MIN_MATCH */ - code = _length_code[lc]; - send_code(s, code+LITERALS+1, ltree); /* send the length code */ - extra = extra_lbits[code]; - if (extra != 0) { - lc -= base_length[code]; - send_bits(s, lc, extra); /* send the extra length bits */ - } - dist--; /* dist is now the match distance - 1 */ - code = d_code(dist); - Assert (code < D_CODES, "bad d_code"); - - send_code(s, code, dtree); /* send the distance code */ - extra = extra_dbits[code]; - if (extra != 0) { - dist -= base_dist[code]; - send_bits(s, dist, extra); /* send the extra distance bits */ - } - } /* literal or match pair ? */ - - /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */ - Assert(s->pending < s->lit_bufsize + 2*lx, "pendingBuf overflow"); - - } while (lx < s->last_lit); - - send_code(s, END_BLOCK, ltree); - s->last_eob_len = ltree[END_BLOCK].Len; -} - -/* =========================================================================== - * Set the data type to ASCII or BINARY, using a crude approximation: - * binary if more than 20% of the bytes are <= 6 or >= 128, ascii otherwise. - * IN assertion: the fields freq of dyn_ltree are set and the total of all - * frequencies does not exceed 64K (to fit in an int on 16 bit machines). - */ -local void set_data_type(s) - deflate_state *s; -{ - int n = 0; - unsigned ascii_freq = 0; - unsigned bin_freq = 0; - while (n < 7) bin_freq += s->dyn_ltree[n++].Freq; - while (n < 128) ascii_freq += s->dyn_ltree[n++].Freq; - while (n < LITERALS) bin_freq += s->dyn_ltree[n++].Freq; - s->data_type = (Byte)(bin_freq > (ascii_freq >> 2) ? Z_BINARY : Z_ASCII); -} - -/* =========================================================================== - * Reverse the first len bits of a code, using straightforward code (a faster - * method would use a table) - * IN assertion: 1 <= len <= 15 - */ -local unsigned bi_reverse(code, len) - unsigned code; /* the value to invert */ - int len; /* its bit length */ -{ - register unsigned res = 0; - do { - res |= code & 1; - code >>= 1, res <<= 1; - } while (--len > 0); - return res >> 1; -} - -/* =========================================================================== - * Flush the bit buffer, keeping at most 7 bits in it. - */ -local void bi_flush(s) - deflate_state *s; -{ - if (s->bi_valid == 16) { - put_short(s, s->bi_buf); - s->bi_buf = 0; - s->bi_valid = 0; - } else if (s->bi_valid >= 8) { - put_byte(s, (Byte)s->bi_buf); - s->bi_buf >>= 8; - s->bi_valid -= 8; - } -} - -/* =========================================================================== - * Flush the bit buffer and align the output on a byte boundary - */ -local void bi_windup(s) - deflate_state *s; -{ - if (s->bi_valid > 8) { - put_short(s, s->bi_buf); - } else if (s->bi_valid > 0) { - put_byte(s, (Byte)s->bi_buf); - } - s->bi_buf = 0; - s->bi_valid = 0; -#ifdef __WXDEBUG__ - s->bits_sent = (s->bits_sent+7) & ~7; -#endif -} - -/* =========================================================================== - * Copy a stored block, storing first the length and its - * one's complement if requested. - */ -local void copy_block(s, buf, len, header) - deflate_state *s; - charf *buf; /* the input data */ - unsigned len; /* its length */ - int header; /* true if block header must be written */ -{ - bi_windup(s); /* align on byte boundary */ - s->last_eob_len = 8; /* enough lookahead for inflate */ - - if (header) { - put_short(s, (ush)len); - put_short(s, (ush)~len); -#ifdef __WXDEBUG__ - s->bits_sent += 2*16; -#endif - } -#ifdef __WXDEBUG__ - s->bits_sent += (ulg)len<<3; -#endif - while (len--) { - put_byte(s, *buf++); - } -} diff --git a/src/zlib/trees.h b/src/zlib/trees.h deleted file mode 100644 index 72facf900f..0000000000 --- a/src/zlib/trees.h +++ /dev/null @@ -1,128 +0,0 @@ -/* header created automatically with -DGEN_TREES_H */ - -local const ct_data static_ltree[L_CODES+2] = { -{{ 12},{ 8}}, {{140},{ 8}}, {{ 76},{ 8}}, {{204},{ 8}}, {{ 44},{ 8}}, -{{172},{ 8}}, {{108},{ 8}}, {{236},{ 8}}, {{ 28},{ 8}}, {{156},{ 8}}, -{{ 92},{ 8}}, {{220},{ 8}}, {{ 60},{ 8}}, {{188},{ 8}}, {{124},{ 8}}, -{{252},{ 8}}, {{ 2},{ 8}}, {{130},{ 8}}, {{ 66},{ 8}}, {{194},{ 8}}, -{{ 34},{ 8}}, {{162},{ 8}}, {{ 98},{ 8}}, {{226},{ 8}}, {{ 18},{ 8}}, -{{146},{ 8}}, {{ 82},{ 8}}, {{210},{ 8}}, {{ 50},{ 8}}, {{178},{ 8}}, -{{114},{ 8}}, {{242},{ 8}}, {{ 10},{ 8}}, {{138},{ 8}}, {{ 74},{ 8}}, -{{202},{ 8}}, {{ 42},{ 8}}, {{170},{ 8}}, {{106},{ 8}}, {{234},{ 8}}, -{{ 26},{ 8}}, {{154},{ 8}}, {{ 90},{ 8}}, {{218},{ 8}}, {{ 58},{ 8}}, -{{186},{ 8}}, {{122},{ 8}}, {{250},{ 8}}, {{ 6},{ 8}}, {{134},{ 8}}, -{{ 70},{ 8}}, {{198},{ 8}}, {{ 38},{ 8}}, {{166},{ 8}}, {{102},{ 8}}, -{{230},{ 8}}, {{ 22},{ 8}}, {{150},{ 8}}, {{ 86},{ 8}}, {{214},{ 8}}, -{{ 54},{ 8}}, {{182},{ 8}}, {{118},{ 8}}, {{246},{ 8}}, {{ 14},{ 8}}, -{{142},{ 8}}, {{ 78},{ 8}}, {{206},{ 8}}, {{ 46},{ 8}}, {{174},{ 8}}, -{{110},{ 8}}, {{238},{ 8}}, {{ 30},{ 8}}, {{158},{ 8}}, {{ 94},{ 8}}, -{{222},{ 8}}, {{ 62},{ 8}}, {{190},{ 8}}, {{126},{ 8}}, {{254},{ 8}}, -{{ 1},{ 8}}, {{129},{ 8}}, {{ 65},{ 8}}, {{193},{ 8}}, {{ 33},{ 8}}, -{{161},{ 8}}, {{ 97},{ 8}}, {{225},{ 8}}, {{ 17},{ 8}}, {{145},{ 8}}, -{{ 81},{ 8}}, {{209},{ 8}}, {{ 49},{ 8}}, {{177},{ 8}}, {{113},{ 8}}, -{{241},{ 8}}, {{ 9},{ 8}}, {{137},{ 8}}, {{ 73},{ 8}}, {{201},{ 8}}, -{{ 41},{ 8}}, {{169},{ 8}}, {{105},{ 8}}, {{233},{ 8}}, {{ 25},{ 8}}, -{{153},{ 8}}, {{ 89},{ 8}}, {{217},{ 8}}, {{ 57},{ 8}}, {{185},{ 8}}, -{{121},{ 8}}, {{249},{ 8}}, {{ 5},{ 8}}, {{133},{ 8}}, {{ 69},{ 8}}, -{{197},{ 8}}, {{ 37},{ 8}}, {{165},{ 8}}, {{101},{ 8}}, {{229},{ 8}}, -{{ 21},{ 8}}, {{149},{ 8}}, {{ 85},{ 8}}, {{213},{ 8}}, {{ 53},{ 8}}, -{{181},{ 8}}, {{117},{ 8}}, {{245},{ 8}}, {{ 13},{ 8}}, {{141},{ 8}}, -{{ 77},{ 8}}, {{205},{ 8}}, {{ 45},{ 8}}, {{173},{ 8}}, {{109},{ 8}}, -{{237},{ 8}}, {{ 29},{ 8}}, {{157},{ 8}}, {{ 93},{ 8}}, {{221},{ 8}}, -{{ 61},{ 8}}, {{189},{ 8}}, {{125},{ 8}}, {{253},{ 8}}, {{ 19},{ 9}}, -{{275},{ 9}}, {{147},{ 9}}, {{403},{ 9}}, {{ 83},{ 9}}, {{339},{ 9}}, -{{211},{ 9}}, {{467},{ 9}}, {{ 51},{ 9}}, {{307},{ 9}}, {{179},{ 9}}, -{{435},{ 9}}, {{115},{ 9}}, {{371},{ 9}}, {{243},{ 9}}, {{499},{ 9}}, -{{ 11},{ 9}}, {{267},{ 9}}, {{139},{ 9}}, {{395},{ 9}}, {{ 75},{ 9}}, -{{331},{ 9}}, {{203},{ 9}}, {{459},{ 9}}, {{ 43},{ 9}}, {{299},{ 9}}, -{{171},{ 9}}, {{427},{ 9}}, {{107},{ 9}}, {{363},{ 9}}, {{235},{ 9}}, -{{491},{ 9}}, {{ 27},{ 9}}, {{283},{ 9}}, {{155},{ 9}}, {{411},{ 9}}, -{{ 91},{ 9}}, {{347},{ 9}}, {{219},{ 9}}, {{475},{ 9}}, {{ 59},{ 9}}, -{{315},{ 9}}, {{187},{ 9}}, {{443},{ 9}}, {{123},{ 9}}, {{379},{ 9}}, -{{251},{ 9}}, {{507},{ 9}}, {{ 7},{ 9}}, {{263},{ 9}}, {{135},{ 9}}, -{{391},{ 9}}, {{ 71},{ 9}}, {{327},{ 9}}, {{199},{ 9}}, {{455},{ 9}}, -{{ 39},{ 9}}, {{295},{ 9}}, {{167},{ 9}}, {{423},{ 9}}, {{103},{ 9}}, -{{359},{ 9}}, {{231},{ 9}}, {{487},{ 9}}, {{ 23},{ 9}}, {{279},{ 9}}, -{{151},{ 9}}, {{407},{ 9}}, {{ 87},{ 9}}, {{343},{ 9}}, {{215},{ 9}}, -{{471},{ 9}}, {{ 55},{ 9}}, {{311},{ 9}}, {{183},{ 9}}, {{439},{ 9}}, -{{119},{ 9}}, {{375},{ 9}}, {{247},{ 9}}, {{503},{ 9}}, {{ 15},{ 9}}, -{{271},{ 9}}, {{143},{ 9}}, {{399},{ 9}}, {{ 79},{ 9}}, {{335},{ 9}}, -{{207},{ 9}}, {{463},{ 9}}, {{ 47},{ 9}}, {{303},{ 9}}, {{175},{ 9}}, -{{431},{ 9}}, {{111},{ 9}}, {{367},{ 9}}, {{239},{ 9}}, {{495},{ 9}}, -{{ 31},{ 9}}, {{287},{ 9}}, {{159},{ 9}}, {{415},{ 9}}, {{ 95},{ 9}}, -{{351},{ 9}}, {{223},{ 9}}, {{479},{ 9}}, {{ 63},{ 9}}, {{319},{ 9}}, -{{191},{ 9}}, {{447},{ 9}}, {{127},{ 9}}, {{383},{ 9}}, {{255},{ 9}}, -{{511},{ 9}}, {{ 0},{ 7}}, {{ 64},{ 7}}, {{ 32},{ 7}}, {{ 96},{ 7}}, -{{ 16},{ 7}}, {{ 80},{ 7}}, {{ 48},{ 7}}, {{112},{ 7}}, {{ 8},{ 7}}, -{{ 72},{ 7}}, {{ 40},{ 7}}, {{104},{ 7}}, {{ 24},{ 7}}, {{ 88},{ 7}}, -{{ 56},{ 7}}, {{120},{ 7}}, {{ 4},{ 7}}, {{ 68},{ 7}}, {{ 36},{ 7}}, -{{100},{ 7}}, {{ 20},{ 7}}, {{ 84},{ 7}}, {{ 52},{ 7}}, {{116},{ 7}}, -{{ 3},{ 8}}, {{131},{ 8}}, {{ 67},{ 8}}, {{195},{ 8}}, {{ 35},{ 8}}, -{{163},{ 8}}, {{ 99},{ 8}}, {{227},{ 8}} -}; - -local const ct_data static_dtree[D_CODES] = { -{{ 0},{ 5}}, {{16},{ 5}}, {{ 8},{ 5}}, {{24},{ 5}}, {{ 4},{ 5}}, -{{20},{ 5}}, {{12},{ 5}}, {{28},{ 5}}, {{ 2},{ 5}}, {{18},{ 5}}, -{{10},{ 5}}, {{26},{ 5}}, {{ 6},{ 5}}, {{22},{ 5}}, {{14},{ 5}}, -{{30},{ 5}}, {{ 1},{ 5}}, {{17},{ 5}}, {{ 9},{ 5}}, {{25},{ 5}}, -{{ 5},{ 5}}, {{21},{ 5}}, {{13},{ 5}}, {{29},{ 5}}, {{ 3},{ 5}}, -{{19},{ 5}}, {{11},{ 5}}, {{27},{ 5}}, {{ 7},{ 5}}, {{23},{ 5}} -}; - -const uch _dist_code[DIST_CODE_LEN] = { - 0, 1, 2, 3, 4, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, - 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, -10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, -11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, -12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, -13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, -13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, -14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, -14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, -14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, -15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, -15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, -15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 16, 17, -18, 18, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, -23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, -24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, -26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, -26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, -27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, -27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, -28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, -28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, -28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, -29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, -29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, -29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29 -}; - -const uch _length_code[MAX_MATCH-MIN_MATCH+1]= { - 0, 1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 12, 12, -13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, -17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, -19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, -21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, -22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, -23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, -24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, -25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, -25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, -26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, -26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, -27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28 -}; - -local const int base_length[LENGTH_CODES] = { -0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 32, 40, 48, 56, -64, 80, 96, 112, 128, 160, 192, 224, 0 -}; - -local const int base_dist[D_CODES] = { - 0, 1, 2, 3, 4, 6, 8, 12, 16, 24, - 32, 48, 64, 96, 128, 192, 256, 384, 512, 768, - 1024, 1536, 2048, 3072, 4096, 6144, 8192, 12288, 16384, 24576 -}; - diff --git a/src/zlib/uncompr.c b/src/zlib/uncompr.c deleted file mode 100644 index f4d287b518..0000000000 --- a/src/zlib/uncompr.c +++ /dev/null @@ -1,58 +0,0 @@ -/* uncompr.c -- decompress a memory buffer - * Copyright (C) 1995-1998 Jean-loup Gailly. - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* @(#) $Id$ */ - -#include "../zlib/zlib.h" - -/* =========================================================================== - Decompresses the source buffer into the destination buffer. sourceLen is - the byte length of the source buffer. Upon entry, destLen is the total - size of the destination buffer, which must be large enough to hold the - entire uncompressed data. (The size of the uncompressed data must have - been saved previously by the compressor and transmitted to the decompressor - by some mechanism outside the scope of this compression library.) - Upon exit, destLen is the actual size of the compressed buffer. - This function can be used to decompress a whole file at once if the - input file is mmap'ed. - - uncompress returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_BUF_ERROR if there was not enough room in the output - buffer, or Z_DATA_ERROR if the input data was corrupted. -*/ -int ZEXPORT uncompress (dest, destLen, source, sourceLen) - Bytef *dest; - uLongf *destLen; - const Bytef *source; - uLong sourceLen; -{ - z_stream stream; - int err; - - stream.next_in = (Bytef*)source; - stream.avail_in = (uInt)sourceLen; - /* Check for source > 64K on 16-bit machine: */ - if ((uLong)stream.avail_in != sourceLen) return Z_BUF_ERROR; - - stream.next_out = dest; - stream.avail_out = (uInt)*destLen; - if ((uLong)stream.avail_out != *destLen) return Z_BUF_ERROR; - - stream.zalloc = (alloc_func)0; - stream.zfree = (free_func)0; - - err = inflateInit(&stream); - if (err != Z_OK) return err; - - err = inflate(&stream, Z_FINISH); - if (err != Z_STREAM_END) { - inflateEnd(&stream); - return err == Z_OK ? Z_BUF_ERROR : err; - } - *destLen = stream.total_out; - - err = inflateEnd(&stream); - return err; -} diff --git a/src/zlib/zconf.h b/src/zlib/zconf.h deleted file mode 100644 index 89e1a16c0d..0000000000 --- a/src/zlib/zconf.h +++ /dev/null @@ -1,252 +0,0 @@ -/* zconf.h -- configuration of the zlib compression library - * Copyright (C) 1995-1998 Jean-loup Gailly. - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* @(#) $Id$ */ - -#ifndef _ZCONF_H -#define _ZCONF_H - -/* - * If you *really* need a unique prefix for all types and library functions, - * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. - */ -#ifdef Z_PREFIX -# define deflateInit_ z_deflateInit_ -# define deflate z_deflate -# define deflateEnd z_deflateEnd -# define inflateInit_ z_inflateInit_ -# define inflate z_inflate -# define inflateEnd z_inflateEnd -# define deflateInit2_ z_deflateInit2_ -# define deflateSetDictionary z_deflateSetDictionary -# define deflateCopy z_deflateCopy -# define deflateReset z_deflateReset -# define deflateParams z_deflateParams -# define inflateInit2_ z_inflateInit2_ -# define inflateSetDictionary z_inflateSetDictionary -# define inflateSync z_inflateSync -# define inflateSyncPoint z_inflateSyncPoint -# define inflateReset z_inflateReset -# define compress z_compress -# define compress2 z_compress2 -# define uncompress z_uncompress -# define adler32 z_adler32 -# define crc32 z_crc32 -# define get_crc_table z_get_crc_table - -# define Byte z_Byte -# define uInt z_uInt -# define uLong z_uLong -# define Bytef z_Bytef -# define charf z_charf -# define intf z_intf -# define uIntf z_uIntf -# define uLongf z_uLongf -# define voidpf z_voidpf -# define voidp z_voidp -#endif - -#if (defined(_WIN32) || defined(__WIN32__)) && !defined(WIN32) -# define WIN32 -#endif -#if defined(__GNUC__) || defined(WIN32) || defined(__386__) || defined(i386) -# ifndef __32BIT__ -# define __32BIT__ -# endif -#endif -#if defined(__MSDOS__) && !defined(MSDOS) -# define MSDOS -#endif - -/* - * Compile with -DMAXSEG_64K if the alloc function cannot allocate more - * than 64k bytes at a time (needed on systems with 16-bit int). - */ -#if defined(MSDOS) && !defined(__32BIT__) -# define MAXSEG_64K -#endif -#ifdef MSDOS -# define UNALIGNED_OK -#endif - -#if (defined(MSDOS) || defined(_WINDOWS) || defined(WIN32)) && !defined(STDC) -# define STDC -#endif -#if defined(__STDC__) || defined(__cplusplus) || defined(__OS2__) -# ifndef STDC -# define STDC -# endif -#endif - -#ifndef STDC -# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */ -# define const -# endif -#endif - -/* Some Mac compilers merge all .h files incorrectly: */ -#if defined(__MWERKS__) || defined(applec) ||defined(THINK_C) ||defined(__SC__) -# define NO_DUMMY_DECL -#endif - -/* Borland C incorrectly complains about missing returns: */ -#if defined(__BORLANDC__) -# define NEED_DUMMY_RETURN -#endif - - -/* Maximum value for memLevel in deflateInit2 */ -#ifndef MAX_MEM_LEVEL -# ifdef MAXSEG_64K -# define MAX_MEM_LEVEL 8 -# else -# define MAX_MEM_LEVEL 9 -# endif -#endif - -/* Maximum value for windowBits in deflateInit2 and inflateInit2. - * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files - * created by gzip. (Files created by minigzip can still be extracted by - * gzip.) - */ -#ifndef MAX_WBITS -# define MAX_WBITS 15 /* 32K LZ77 window */ -#endif - -/* The memory requirements for deflate are (in bytes): - (1 << (windowBits+2)) + (1 << (memLevel+9)) - that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values) - plus a few kilobytes for small objects. For example, if you want to reduce - the default memory requirements from 256K to 128K, compile with - make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7" - Of course this will generally degrade compression (there's no free lunch). - - The memory requirements for inflate are (in bytes) 1 << windowBits - that is, 32K for windowBits=15 (default value) plus a few kilobytes - for small objects. -*/ - - /* Type declarations */ - -#ifndef OF /* function prototypes */ -# ifdef STDC -# define OF(args) args -# else -# define OF(args) () -# endif -#endif - -/* The following definitions for FAR are needed only for MSDOS mixed - * model programming (small or medium model with some far allocations). - * This was tested only with MSC; for other MSDOS compilers you may have - * to define NO_MEMCPY in zutil.h. If you don't need the mixed model, - * just define FAR to be empty. - */ -#if (defined(M_I86SM) || defined(M_I86MM)) && !defined(__32BIT__) - /* MSC small or medium model */ -# define SMALL_MEDIUM -# ifdef _MSC_VER -# define FAR __far -# else -# define FAR far -# endif -#endif -#if defined(__BORLANDC__) && (defined(__SMALL__) || defined(__MEDIUM__)) -# ifndef __32BIT__ -# define SMALL_MEDIUM -# define FAR __far -# endif -#endif - -/* Compile with -DZLIB_DLL for Windows DLL support */ -#if (defined(_WINDOWS) || defined(WINDOWS)) && defined(ZLIB_DLL) -# ifdef FAR -# undef FAR -# endif -# include -# define ZEXPORT WINAPI -# ifdef WIN32 -# define ZEXPORTVA WINAPIV -# else -# define ZEXPORTVA FAR _cdecl _export -# endif -#else -# if defined (__BORLANDC__) && defined (_Windows) && defined (__DLL__) -# define ZEXPORT _export -# define ZEXPORTVA _export -# else -# define ZEXPORT -# define ZEXPORTVA -# endif -#endif - -#ifndef FAR -# define FAR -#endif - -typedef unsigned char Byte; /* 8 bits */ -typedef unsigned int uInt; /* 16 bits or more */ -typedef unsigned long uLong; /* 32 bits or more */ - -#if defined(__BORLANDC__) && defined(SMALL_MEDIUM) - /* Borland C/C++ ignores FAR inside typedef */ -# define Bytef Byte FAR -#else - typedef Byte FAR Bytef; -#endif -typedef char FAR charf; -typedef int FAR intf; -typedef uInt FAR uIntf; -typedef uLong FAR uLongf; - -#ifdef STDC - typedef void FAR *voidpf; - typedef void *voidp; -#else - typedef Byte FAR *voidpf; - typedef Byte *voidp; -#endif - -#ifdef HAVE_UNISTD_H -# include /* for off_t */ -# include /* for SEEK_* and off_t */ -# define z_off_t off_t -#endif -#ifndef SEEK_SET -# define SEEK_SET 0 /* Seek from beginning of file. */ -# define SEEK_CUR 1 /* Seek from current position. */ -#endif -#ifndef z_off_t -# define z_off_t long -#endif - -/* MVS linker does not support external names larger than 8 bytes */ -#if defined(__MVS__) -# pragma map(deflateInit_,"DEIN") -# pragma map(deflateInit2_,"DEIN2") -# pragma map(deflateEnd,"DEEND") -# pragma map(inflateInit_,"ININ") -# pragma map(inflateInit2_,"ININ2") -# pragma map(inflateEnd,"INEND") -# pragma map(inflateSync,"INSY") -# pragma map(inflateSetDictionary,"INSEDI") -# pragma map(inflate_blocks,"INBL") -# pragma map(inflate_blocks_new,"INBLNE") -# pragma map(inflate_blocks_free,"INBLFR") -# pragma map(inflate_blocks_reset,"INBLRE") -# pragma map(inflate_codes_free,"INCOFR") -# pragma map(inflate_codes,"INCO") -# pragma map(inflate_fast,"INFA") -# pragma map(inflate_flush,"INFLU") -# pragma map(inflate_mask,"INMA") -# pragma map(inflate_set_dictionary,"INSEDI2") -# pragma map(inflate_copyright,"INCOPY") -# pragma map(inflate_trees_bits,"INTRBI") -# pragma map(inflate_trees_dynamic,"INTRDY") -# pragma map(inflate_trees_fixed,"INTRFI") -# pragma map(inflate_trees_free,"INTRFR") -#endif - -#endif /* _ZCONF_H */ diff --git a/src/zlib/zlib.3 b/src/zlib/zlib.3 deleted file mode 100644 index d08d0e0d59..0000000000 --- a/src/zlib/zlib.3 +++ /dev/null @@ -1,107 +0,0 @@ -.TH ZLIB 3 "19 March 1998" -.SH NAME -zlib \- compression/decompression library -.SH SYNOPSIS -[see -.I zlib.h -for full description] -.SH DESCRIPTION -The -.I zlib -library is a general purpose data compression library. -The code is thread safe. -It provides in-memory compression and decompression functions, -including integrity checks of the uncompressed data. -This version of the library supports only one compression method (deflation) -but other algorithms will be added later and will have the same stream interface. -.LP -Compression can be done in a single step if the buffers are large enough -(for example if an input file is mmap'ed), -or can be done by repeated calls of the compression function. -In the latter case, -the application must provide more input and/or consume the output -(providing more output space) before each call. -.LP -The library also supports reading and writing files in -.I gzip -(.gz) format -with an interface similar to that of stdio. -.LP -The library does not install any signal handler. The decoder checks -the consistency of the compressed data, so the library should never -crash even in case of corrupted input. -.LP -All functions of the compression library are documented in the file -.IR zlib.h. -The distribution source includes examples of use of the library -the files -.I example.c -and -.IR minigzip.c . -.LP -A Java implementation of -.IR zlib -is available in the Java Development Kit 1.1 -.IP -http://www.javasoft.com/products/JDK/1.1/docs/api/Package-java.util.zip.html -.LP -A Perl interface to -.IR zlib , -written by Paul Marquess (pmarquess@bfsec.bt.co.uk) -is available at CPAN (Comprehensive Perl Archive Network) sites, -such as: -.IP -ftp://ftp.cis.ufl.edu/pub/perl/CPAN/modules/by-module/Compress/Compress-Zlib* -.LP -A Python interface to -.IR zlib -written by A.M. Kuchling -is available from the Python Software Association sites, such as: -.IP -ftp://ftp.python.org/pub/python/contrib/Encoding/zlib*.tar.gz -.SH "SEE ALSO" -Questions about zlib should be sent to: -.IP -zlib@quest.jpl.nasa.gov -or, if this fails, to the author addresses given below. -The zlib home page is: -.IP -http://www.cdrom.com/pub/infozip/zlib/ -.LP -The data format used by the zlib library is described by RFC -(Request for Comments) 1950 to 1952 in the files: -.IP -ftp://ds.internic.net/rfc/rfc1950.txt (zlib format) -.br -rfc1951.txt (deflate format) -.br -rfc1952.txt (gzip format) -.LP -These documents are also available in other formats from: -.IP -ftp://ftp.uu.net/graphics/png/documents/zlib/zdoc-index.html -.SH AUTHORS -Version 1.1.2 -Copyright (C) 1995-1998 Jean-loup Gailly (jloup@gzip.org) -and Mark Adler (madler@alumni.caltech.edu). -.LP -This software is provided "as-is," -without any express or implied warranty. -In no event will the authors be held liable for any damages -arising from the use of this software. -See the distribution directory with respect to requirements -governing redistribution. -The deflate format used by -.I zlib -was defined by Phil Katz. -The deflate and -.I zlib -specifications were written by L. Peter Deutsch. -Thanks to all the people who reported problems and suggested various -improvements in -.IR zlib ; -who are too numerous to cite here. -.LP -UNIX manual page by R. P. C. Rodgers, -U.S. National Library of Medicine (rodgers@nlm.nih.gov). -.\" end of man page diff --git a/src/zlib/zlib.h b/src/zlib/zlib.h deleted file mode 100644 index 76775e7922..0000000000 --- a/src/zlib/zlib.h +++ /dev/null @@ -1,888 +0,0 @@ -/* zlib.h -- interface of the 'zlib' general purpose compression library - version 1.1.2, March 19th, 1998 - - Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - Jean-loup Gailly Mark Adler - jloup@gzip.org madler@alumni.caltech.edu - - - The data format used by the zlib library is described by RFCs (Request for - Comments) 1950 to 1952 in the files ftp://ds.internic.net/rfc/rfc1950.txt - (zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format). -*/ - -#ifndef _ZLIB_H -#define _ZLIB_H - -#include "../zlib/zconf.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#define ZLIB_VERSION "1.1.2" - -/* - The 'zlib' compression library provides in-memory compression and - decompression functions, including integrity checks of the uncompressed - data. This version of the library supports only one compression method - (deflation) but other algorithms will be added later and will have the same - stream interface. - - Compression can be done in a single step if the buffers are large - enough (for example if an input file is mmap'ed), or can be done by - repeated calls of the compression function. In the latter case, the - application must provide more input and/or consume the output - (providing more output space) before each call. - - The library also supports reading and writing files in gzip (.gz) format - with an interface similar to that of stdio. - - The library does not install any signal handler. The decoder checks - the consistency of the compressed data, so the library should never - crash even in case of corrupted input. -*/ - -typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size)); -typedef void (*free_func) OF((voidpf opaque, voidpf address)); - -struct internal_state; - -typedef struct z_stream_s { - Bytef *next_in; /* next input byte */ - uInt avail_in; /* number of bytes available at next_in */ - uLong total_in; /* total nb of input bytes read so far */ - - Bytef *next_out; /* next output byte should be put there */ - uInt avail_out; /* remaining free space at next_out */ - uLong total_out; /* total nb of bytes output so far */ - - char *msg; /* last error message, NULL if no error */ - struct internal_state FAR *state; /* not visible by applications */ - - alloc_func zalloc; /* used to allocate the internal state */ - free_func zfree; /* used to free the internal state */ - voidpf opaque; /* private data object passed to zalloc and zfree */ - - int data_type; /* best guess about the data type: ascii or binary */ - uLong adler; /* adler32 value of the uncompressed data */ - uLong reserved; /* reserved for future use */ -} z_stream; - -typedef z_stream FAR *z_streamp; - -/* - The application must update next_in and avail_in when avail_in has - dropped to zero. It must update next_out and avail_out when avail_out - has dropped to zero. The application must initialize zalloc, zfree and - opaque before calling the init function. All other fields are set by the - compression library and must not be updated by the application. - - The opaque value provided by the application will be passed as the first - parameter for calls of zalloc and zfree. This can be useful for custom - memory management. The compression library attaches no meaning to the - opaque value. - - zalloc must return Z_NULL if there is not enough memory for the object. - If zlib is used in a multi-threaded application, zalloc and zfree must be - thread safe. - - On 16-bit systems, the functions zalloc and zfree must be able to allocate - exactly 65536 bytes, but will not be required to allocate more than this - if the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS, - pointers returned by zalloc for objects of exactly 65536 bytes *must* - have their offset normalized to zero. The default allocation function - provided by this library ensures this (see zutil.c). To reduce memory - requirements and avoid any allocation of 64K objects, at the expense of - compression ratio, compile the library with -DMAX_WBITS=14 (see zconf.h). - - The fields total_in and total_out can be used for statistics or - progress reports. After compression, total_in holds the total size of - the uncompressed data and may be saved for use in the decompressor - (particularly if the decompressor wants to decompress everything in - a single step). -*/ - - /* constants */ - -#define Z_NO_FLUSH 0 -#define Z_PARTIAL_FLUSH 1 /* will be removed, use Z_SYNC_FLUSH instead */ -#define Z_SYNC_FLUSH 2 -#define Z_FULL_FLUSH 3 -#define Z_FINISH 4 -/* Allowed flush values; see deflate() below for details */ - -#define Z_OK 0 -#define Z_STREAM_END 1 -#define Z_NEED_DICT 2 -#define Z_ERRNO (-1) -#define Z_STREAM_ERROR (-2) -#define Z_DATA_ERROR (-3) -#define Z_MEM_ERROR (-4) -#define Z_BUF_ERROR (-5) -#define Z_VERSION_ERROR (-6) -/* Return codes for the compression/decompression functions. Negative - * values are errors, positive values are used for special but normal events. - */ - -#define Z_NO_COMPRESSION 0 -#define Z_BEST_SPEED 1 -#define Z_BEST_COMPRESSION 9 -#define Z_DEFAULT_COMPRESSION (-1) -/* compression levels */ - -#define Z_FILTERED 1 -#define Z_HUFFMAN_ONLY 2 -#define Z_DEFAULT_STRATEGY 0 -/* compression strategy; see deflateInit2() below for details */ - -#define Z_BINARY 0 -#define Z_ASCII 1 -#define Z_UNKNOWN 2 -/* Possible values of the data_type field */ - -#define Z_DEFLATED 8 -/* The deflate compression method (the only one supported in this version) */ - -#define Z_NULL 0 /* for initializing zalloc, zfree, opaque */ - -#define zlib_version zlibVersion() -/* for compatibility with versions < 1.0.2 */ - - /* basic functions */ - -extern const char * ZEXPORT zlibVersion OF((void)); -/* The application can compare zlibVersion and ZLIB_VERSION for consistency. - If the first character differs, the library code actually used is - not compatible with the zlib.h header file used by the application. - This check is automatically made by deflateInit and inflateInit. - */ - -/* -extern int ZEXPORT deflateInit OF((z_streamp strm, int level)); - - Initializes the internal stream state for compression. The fields - zalloc, zfree and opaque must be initialized before by the caller. - If zalloc and zfree are set to Z_NULL, deflateInit updates them to - use default allocation functions. - - The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9: - 1 gives best speed, 9 gives best compression, 0 gives no compression at - all (the input data is simply copied a block at a time). - Z_DEFAULT_COMPRESSION requests a default compromise between speed and - compression (currently equivalent to level 6). - - deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_STREAM_ERROR if level is not a valid compression level, - Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible - with the version assumed by the caller (ZLIB_VERSION). - msg is set to null if there is no error message. deflateInit does not - perform any compression: this will be done by deflate(). -*/ - - -extern int ZEXPORT deflate OF((z_streamp strm, int flush)); -/* - deflate compresses as much data as possible, and stops when the input - buffer becomes empty or the output buffer becomes full. It may introduce some - output latency (reading input without producing any output) except when - forced to flush. - - The detailed semantics are as follows. deflate performs one or both of the - following actions: - - - Compress more input starting at next_in and update next_in and avail_in - accordingly. If not all input can be processed (because there is not - enough room in the output buffer), next_in and avail_in are updated and - processing will resume at this point for the next call of deflate(). - - - Provide more output starting at next_out and update next_out and avail_out - accordingly. This action is forced if the parameter flush is non zero. - Forcing flush frequently degrades the compression ratio, so this parameter - should be set only when necessary (in interactive applications). - Some output may be provided even if flush is not set. - - Before the call of deflate(), the application should ensure that at least - one of the actions is possible, by providing more input and/or consuming - more output, and updating avail_in or avail_out accordingly; avail_out - should never be zero before the call. The application can consume the - compressed output when it wants, for example when the output buffer is full - (avail_out == 0), or after each call of deflate(). If deflate returns Z_OK - and with zero avail_out, it must be called again after making room in the - output buffer because there might be more output pending. - - If the parameter flush is set to Z_SYNC_FLUSH, all pending output is - flushed to the output buffer and the output is aligned on a byte boundary, so - that the decompressor can get all input data available so far. (In particular - avail_in is zero after the call if enough output space has been provided - before the call.) Flushing may degrade compression for some compression - algorithms and so it should be used only when necessary. - - If flush is set to Z_FULL_FLUSH, all output is flushed as with - Z_SYNC_FLUSH, and the compression state is reset so that decompression can - restart from this point if previous compressed data has been damaged or if - random access is desired. Using Z_FULL_FLUSH too often can seriously degrade - the compression. - - If deflate returns with avail_out == 0, this function must be called again - with the same value of the flush parameter and more output space (updated - avail_out), until the flush is complete (deflate returns with non-zero - avail_out). - - If the parameter flush is set to Z_FINISH, pending input is processed, - pending output is flushed and deflate returns with Z_STREAM_END if there - was enough output space; if deflate returns with Z_OK, this function must be - called again with Z_FINISH and more output space (updated avail_out) but no - more input data, until it returns with Z_STREAM_END or an error. After - deflate has returned Z_STREAM_END, the only possible operations on the - stream are deflateReset or deflateEnd. - - Z_FINISH can be used immediately after deflateInit if all the compression - is to be done in a single step. In this case, avail_out must be at least - 0.1% larger than avail_in plus 12 bytes. If deflate does not return - Z_STREAM_END, then it must be called again as described above. - - deflate() sets strm->adler to the adler32 checksum of all input read - so far (that is, total_in bytes). - - deflate() may update data_type if it can make a good guess about - the input data type (Z_ASCII or Z_BINARY). In doubt, the data is considered - binary. This field is only for information purposes and does not affect - the compression algorithm in any manner. - - deflate() returns Z_OK if some progress has been made (more input - processed or more output produced), Z_STREAM_END if all input has been - consumed and all output has been produced (only when flush is set to - Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example - if next_in or next_out was NULL), Z_BUF_ERROR if no progress is possible. -*/ - - -extern int ZEXPORT deflateEnd OF((z_streamp strm)); -/* - All dynamically allocated data structures for this stream are freed. - This function discards any unprocessed input and does not flush any - pending output. - - deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the - stream state was inconsistent, Z_DATA_ERROR if the stream was freed - prematurely (some input or output was discarded). In the error case, - msg may be set but then points to a static string (which must not be - deallocated). -*/ - - -/* -extern int ZEXPORT inflateInit OF((z_streamp strm)); - - Initializes the internal stream state for decompression. The fields - next_in, avail_in, zalloc, zfree and opaque must be initialized before by - the caller. If next_in is not Z_NULL and avail_in is large enough (the exact - value depends on the compression method), inflateInit determines the - compression method from the zlib header and allocates all data structures - accordingly; otherwise the allocation will be deferred to the first call of - inflate. If zalloc and zfree are set to Z_NULL, inflateInit updates them to - use default allocation functions. - - inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_VERSION_ERROR if the zlib library version is incompatible with the - version assumed by the caller. msg is set to null if there is no error - message. inflateInit does not perform any decompression apart from reading - the zlib header if present: this will be done by inflate(). (So next_in and - avail_in may be modified, but next_out and avail_out are unchanged.) -*/ - - -extern int ZEXPORT inflate OF((z_streamp strm, int flush)); -/* - inflate decompresses as much data as possible, and stops when the input - buffer becomes empty or the output buffer becomes full. It may some - introduce some output latency (reading input without producing any output) - except when forced to flush. - - The detailed semantics are as follows. inflate performs one or both of the - following actions: - - - Decompress more input starting at next_in and update next_in and avail_in - accordingly. If not all input can be processed (because there is not - enough room in the output buffer), next_in is updated and processing - will resume at this point for the next call of inflate(). - - - Provide more output starting at next_out and update next_out and avail_out - accordingly. inflate() provides as much output as possible, until there - is no more input data or no more space in the output buffer (see below - about the flush parameter). - - Before the call of inflate(), the application should ensure that at least - one of the actions is possible, by providing more input and/or consuming - more output, and updating the next_* and avail_* values accordingly. - The application can consume the uncompressed output when it wants, for - example when the output buffer is full (avail_out == 0), or after each - call of inflate(). If inflate returns Z_OK and with zero avail_out, it - must be called again after making room in the output buffer because there - might be more output pending. - - If the parameter flush is set to Z_SYNC_FLUSH, inflate flushes as much - output as possible to the output buffer. The flushing behavior of inflate is - not specified for values of the flush parameter other than Z_SYNC_FLUSH - and Z_FINISH, but the current implementation actually flushes as much output - as possible anyway. - - inflate() should normally be called until it returns Z_STREAM_END or an - error. However if all decompression is to be performed in a single step - (a single call of inflate), the parameter flush should be set to - Z_FINISH. In this case all pending input is processed and all pending - output is flushed; avail_out must be large enough to hold all the - uncompressed data. (The size of the uncompressed data may have been saved - by the compressor for this purpose.) The next operation on this stream must - be inflateEnd to deallocate the decompression state. The use of Z_FINISH - is never required, but can be used to inform inflate that a faster routine - may be used for the single inflate() call. - - If a preset dictionary is needed at this point (see inflateSetDictionary - below), inflate sets strm-adler to the adler32 checksum of the - dictionary chosen by the compressor and returns Z_NEED_DICT; otherwise - it sets strm->adler to the adler32 checksum of all output produced - so far (that is, total_out bytes) and returns Z_OK, Z_STREAM_END or - an error code as described below. At the end of the stream, inflate() - checks that its computed adler32 checksum is equal to that saved by the - compressor and returns Z_STREAM_END only if the checksum is correct. - - inflate() returns Z_OK if some progress has been made (more input processed - or more output produced), Z_STREAM_END if the end of the compressed data has - been reached and all uncompressed output has been produced, Z_NEED_DICT if a - preset dictionary is needed at this point, Z_DATA_ERROR if the input data was - corrupted (input stream not conforming to the zlib format or incorrect - adler32 checksum), Z_STREAM_ERROR if the stream structure was inconsistent - (for example if next_in or next_out was NULL), Z_MEM_ERROR if there was not - enough memory, Z_BUF_ERROR if no progress is possible or if there was not - enough room in the output buffer when Z_FINISH is used. In the Z_DATA_ERROR - case, the application may then call inflateSync to look for a good - compression block. -*/ - - -extern int ZEXPORT inflateEnd OF((z_streamp strm)); -/* - All dynamically allocated data structures for this stream are freed. - This function discards any unprocessed input and does not flush any - pending output. - - inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state - was inconsistent. In the error case, msg may be set but then points to a - static string (which must not be deallocated). -*/ - - /* Advanced functions */ - -/* - The following functions are needed only in some special applications. -*/ - -/* -extern int ZEXPORT deflateInit2 OF((z_streamp strm, - int level, - int method, - int windowBits, - int memLevel, - int strategy)); - - This is another version of deflateInit with more compression options. The - fields next_in, zalloc, zfree and opaque must be initialized before by - the caller. - - The method parameter is the compression method. It must be Z_DEFLATED in - this version of the library. - - The windowBits parameter is the base two logarithm of the window size - (the size of the history buffer). It should be in the range 8..15 for this - version of the library. Larger values of this parameter result in better - compression at the expense of memory usage. The default value is 15 if - deflateInit is used instead. - - The memLevel parameter specifies how much memory should be allocated - for the internal compression state. memLevel=1 uses minimum memory but - is slow and reduces compression ratio; memLevel=9 uses maximum memory - for optimal speed. The default value is 8. See zconf.h for total memory - usage as a function of windowBits and memLevel. - - The strategy parameter is used to tune the compression algorithm. Use the - value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a - filter (or predictor), or Z_HUFFMAN_ONLY to force Huffman encoding only (no - string match). Filtered data consists mostly of small values with a - somewhat random distribution. In this case, the compression algorithm is - tuned to compress them better. The effect of Z_FILTERED is to force more - Huffman coding and less string matching; it is somewhat intermediate - between Z_DEFAULT and Z_HUFFMAN_ONLY. The strategy parameter only affects - the compression ratio but not the correctness of the compressed output even - if it is not set appropriately. - - deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_STREAM_ERROR if a parameter is invalid (such as an invalid - method). msg is set to null if there is no error message. deflateInit2 does - not perform any compression: this will be done by deflate(). -*/ - -extern int ZEXPORT deflateSetDictionary OF((z_streamp strm, - const Bytef *dictionary, - uInt dictLength)); -/* - Initializes the compression dictionary from the given byte sequence - without producing any compressed output. This function must be called - immediately after deflateInit or deflateInit2, before any call of - deflate. The compressor and decompressor must use exactly the same - dictionary (see inflateSetDictionary). - - The dictionary should consist of strings (byte sequences) that are likely - to be encountered later in the data to be compressed, with the most commonly - used strings preferably put towards the end of the dictionary. Using a - dictionary is most useful when the data to be compressed is short and can be - predicted with good accuracy; the data can then be compressed better than - with the default empty dictionary. - - Depending on the size of the compression data structures selected by - deflateInit or deflateInit2, a part of the dictionary may in effect be - discarded, for example if the dictionary is larger than the window size in - deflate or deflate2. Thus the strings most likely to be useful should be - put at the end of the dictionary, not at the front. - - Upon return of this function, strm->adler is set to the Adler32 value - of the dictionary; the decompressor may later use this value to determine - which dictionary has been used by the compressor. (The Adler32 value - applies to the whole dictionary even if only a subset of the dictionary is - actually used by the compressor.) - - deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a - parameter is invalid (such as NULL dictionary) or the stream state is - inconsistent (for example if deflate has already been called for this stream - or if the compression method is bsort). deflateSetDictionary does not - perform any compression: this will be done by deflate(). -*/ - -extern int ZEXPORT deflateCopy OF((z_streamp dest, - z_streamp source)); -/* - Sets the destination stream as a complete copy of the source stream. - - This function can be useful when several compression strategies will be - tried, for example when there are several ways of pre-processing the input - data with a filter. The streams that will be discarded should then be freed - by calling deflateEnd. Note that deflateCopy duplicates the internal - compression state which can be quite large, so this strategy is slow and - can consume lots of memory. - - deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_STREAM_ERROR if the source stream state was inconsistent - (such as zalloc being NULL). msg is left unchanged in both source and - destination. -*/ - -extern int ZEXPORT deflateReset OF((z_streamp strm)); -/* - This function is equivalent to deflateEnd followed by deflateInit, - but does not free and reallocate all the internal compression state. - The stream will keep the same compression level and any other attributes - that may have been set by deflateInit2. - - deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent (such as zalloc or state being NULL). -*/ - -extern int ZEXPORT deflateParams OF((z_streamp strm, int level, int strategy)); -/* - Dynamically update the compression level and compression strategy. The - interpretation of level and strategy is as in deflateInit2. This can be - used to switch between compression and straight copy of the input data, or - to switch to a different kind of input data requiring a different - strategy. If the compression level is changed, the input available so far - is compressed with the old level (and may be flushed); the new level will - take effect only at the next call of deflate(). - - Before the call of deflateParams, the stream state must be set as for - a call of deflate(), since the currently available input may have to - be compressed and flushed. In particular, strm->avail_out must be non-zero. - - deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source - stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR - if strm->avail_out was zero. -*/ - -/* -extern int ZEXPORT inflateInit2 OF((z_streamp strm, - int windowBits)); - - This is another version of inflateInit with an extra parameter. The - fields next_in, avail_in, zalloc, zfree and opaque must be initialized - before by the caller. - - The windowBits parameter is the base two logarithm of the maximum window - size (the size of the history buffer). It should be in the range 8..15 for - this version of the library. The default value is 15 if inflateInit is used - instead. If a compressed stream with a larger window size is given as - input, inflate() will return with the error code Z_DATA_ERROR instead of - trying to allocate a larger window. - - inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_STREAM_ERROR if a parameter is invalid (such as a negative - memLevel). msg is set to null if there is no error message. inflateInit2 - does not perform any decompression apart from reading the zlib header if - present: this will be done by inflate(). (So next_in and avail_in may be - modified, but next_out and avail_out are unchanged.) -*/ - -extern int ZEXPORT inflateSetDictionary OF((z_streamp strm, - const Bytef *dictionary, - uInt dictLength)); -/* - Initializes the decompression dictionary from the given uncompressed byte - sequence. This function must be called immediately after a call of inflate - if this call returned Z_NEED_DICT. The dictionary chosen by the compressor - can be determined from the Adler32 value returned by this call of - inflate. The compressor and decompressor must use exactly the same - dictionary (see deflateSetDictionary). - - inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a - parameter is invalid (such as NULL dictionary) or the stream state is - inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the - expected one (incorrect Adler32 value). inflateSetDictionary does not - perform any decompression: this will be done by subsequent calls of - inflate(). -*/ - -extern int ZEXPORT inflateSync OF((z_streamp strm)); -/* - Skips invalid compressed data until a full flush point (see above the - description of deflate with Z_FULL_FLUSH) can be found, or until all - available input is skipped. No output is provided. - - inflateSync returns Z_OK if a full flush point has been found, Z_BUF_ERROR - if no more input was provided, Z_DATA_ERROR if no flush point has been found, - or Z_STREAM_ERROR if the stream structure was inconsistent. In the success - case, the application may save the current current value of total_in which - indicates where valid compressed data was found. In the error case, the - application may repeatedly call inflateSync, providing more input each time, - until success or end of the input data. -*/ - -extern int ZEXPORT inflateReset OF((z_streamp strm)); -/* - This function is equivalent to inflateEnd followed by inflateInit, - but does not free and reallocate all the internal decompression state. - The stream will keep attributes that may have been set by inflateInit2. - - inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent (such as zalloc or state being NULL). -*/ - - - /* utility functions */ - -/* - The following utility functions are implemented on top of the - basic stream-oriented functions. To simplify the interface, some - default options are assumed (compression level and memory usage, - standard memory allocation functions). The source code of these - utility functions can easily be modified if you need special options. -*/ - -extern int ZEXPORT compress OF((Bytef *dest, uLongf *destLen, - const Bytef *source, uLong sourceLen)); -/* - Compresses the source buffer into the destination buffer. sourceLen is - the byte length of the source buffer. Upon entry, destLen is the total - size of the destination buffer, which must be at least 0.1% larger than - sourceLen plus 12 bytes. Upon exit, destLen is the actual size of the - compressed buffer. - This function can be used to compress a whole file at once if the - input file is mmap'ed. - compress returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_BUF_ERROR if there was not enough room in the output - buffer. -*/ - -extern int ZEXPORT compress2 OF((Bytef *dest, uLongf *destLen, - const Bytef *source, uLong sourceLen, - int level)); -/* - Compresses the source buffer into the destination buffer. The level - parameter has the same meaning as in deflateInit. sourceLen is the byte - length of the source buffer. Upon entry, destLen is the total size of the - destination buffer, which must be at least 0.1% larger than sourceLen plus - 12 bytes. Upon exit, destLen is the actual size of the compressed buffer. - - compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_BUF_ERROR if there was not enough room in the output buffer, - Z_STREAM_ERROR if the level parameter is invalid. -*/ - -extern int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen, - const Bytef *source, uLong sourceLen)); -/* - Decompresses the source buffer into the destination buffer. sourceLen is - the byte length of the source buffer. Upon entry, destLen is the total - size of the destination buffer, which must be large enough to hold the - entire uncompressed data. (The size of the uncompressed data must have - been saved previously by the compressor and transmitted to the decompressor - by some mechanism outside the scope of this compression library.) - Upon exit, destLen is the actual size of the compressed buffer. - This function can be used to decompress a whole file at once if the - input file is mmap'ed. - - uncompress returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_BUF_ERROR if there was not enough room in the output - buffer, or Z_DATA_ERROR if the input data was corrupted. -*/ - - -typedef voidp gzFile; - -extern gzFile ZEXPORT gzopen OF((const char *path, const char *mode)); -/* - Opens a gzip (.gz) file for reading or writing. The mode parameter - is as in fopen ("rb" or "wb") but can also include a compression level - ("wb9") or a strategy: 'f' for filtered data as in "wb6f", 'h' for - Huffman only compression as in "wb1h". (See the description - of deflateInit2 for more information about the strategy parameter.) - - gzopen can be used to read a file which is not in gzip format; in this - case gzread will directly read from the file without decompression. - - gzopen returns NULL if the file could not be opened or if there was - insufficient memory to allocate the (de)compression state; errno - can be checked to distinguish the two cases (if errno is zero, the - zlib error is Z_MEM_ERROR). */ - -extern gzFile ZEXPORT gzdopen OF((int fd, const char *mode)); -/* - gzdopen() associates a gzFile with the file descriptor fd. File - descriptors are obtained from calls like open, dup, creat, pipe or - fileno (in the file has been previously opened with fopen). - The mode parameter is as in gzopen. - The next call of gzclose on the returned gzFile will also close the - file descriptor fd, just like fclose(fdopen(fd), mode) closes the file - descriptor fd. If you want to keep fd open, use gzdopen(dup(fd), mode). - gzdopen returns NULL if there was insufficient memory to allocate - the (de)compression state. -*/ - -extern int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy)); -/* - Dynamically update the compression level or strategy. See the description - of deflateInit2 for the meaning of these parameters. - gzsetparams returns Z_OK if success, or Z_STREAM_ERROR if the file was not - opened for writing. -*/ - -extern int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len)); -/* - Reads the given number of uncompressed bytes from the compressed file. - If the input file was not in gzip format, gzread copies the given number - of bytes into the buffer. - gzread returns the number of uncompressed bytes actually read (0 for - end of file, -1 for error). */ - -extern int ZEXPORT gzwrite OF((gzFile file, const voidp buf, unsigned len)); -/* - Writes the given number of uncompressed bytes into the compressed file. - gzwrite returns the number of uncompressed bytes actually written - (0 in case of error). -*/ - -extern int ZEXPORTVA gzprintf OF((gzFile file, const char *format, ...)); -/* - Converts, formats, and writes the args to the compressed file under - control of the format string, as in fprintf. gzprintf returns the number of - uncompressed bytes actually written (0 in case of error). -*/ - -extern int ZEXPORT gzputs OF((gzFile file, const char *s)); -/* - Writes the given null-terminated string to the compressed file, excluding - the terminating null character. - gzputs returns the number of characters written, or -1 in case of error. -*/ - -extern char * ZEXPORT gzgets OF((gzFile file, char *buf, int len)); -/* - Reads bytes from the compressed file until len-1 characters are read, or - a newline character is read and transferred to buf, or an end-of-file - condition is encountered. The string is then terminated with a null - character. - gzgets returns buf, or Z_NULL in case of error. -*/ - -extern int ZEXPORT gzputc OF((gzFile file, int c)); -/* - Writes c, converted to an unsigned char, into the compressed file. - gzputc returns the value that was written, or -1 in case of error. -*/ - -extern int ZEXPORT gzgetc OF((gzFile file)); -/* - Reads one byte from the compressed file. gzgetc returns this byte - or -1 in case of end of file or error. -*/ - -extern int ZEXPORT gzflush OF((gzFile file, int flush)); -/* - Flushes all pending output into the compressed file. The parameter - flush is as in the deflate() function. The return value is the zlib - error number (see function gzerror below). gzflush returns Z_OK if - the flush parameter is Z_FINISH and all output could be flushed. - gzflush should be called only when strictly necessary because it can - degrade compression. -*/ - -extern z_off_t ZEXPORT gzseek OF((gzFile file, z_off_t offset, int whence)); -/* - Sets the starting position for the next gzread or gzwrite on the given - compressed file. The offset represents a number of bytes in the - uncompressed data stream. The whence parameter is defined as in lseek(2); - the value SEEK_END is not supported. - If the file is opened for reading, this function is emulated but can be - extremely slow. If the file is opened for writing, only forward seeks are - supported; gzseek then compresses a sequence of zeroes up to the new - starting position. - - gzseek returns the resulting offset location as measured in bytes from - the beginning of the uncompressed stream, or -1 in case of error, in - particular if the file is opened for writing and the new starting position - would be before the current position. -*/ - -extern int ZEXPORT gzrewind OF((gzFile file)); -/* - Rewinds the given file. This function is supported only for reading. - - gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET) -*/ - -extern z_off_t ZEXPORT gztell OF((gzFile file)); -/* - Returns the starting position for the next gzread or gzwrite on the - given compressed file. This position represents a number of bytes in the - uncompressed data stream. - - gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR) -*/ - -extern int ZEXPORT gzeof OF((gzFile file)); -/* - Returns 1 when EOF has previously been detected reading the given - input stream, otherwise zero. -*/ - -extern int ZEXPORT gzclose OF((gzFile file)); -/* - Flushes all pending output if necessary, closes the compressed file - and deallocates all the (de)compression state. The return value is the zlib - error number (see function gzerror below). -*/ - -extern const char * ZEXPORT gzerror OF((gzFile file, int *errnum)); -/* - Returns the error message for the last error which occurred on the - given compressed file. errnum is set to zlib error number. If an - error occurred in the file system and not in the compression library, - errnum is set to Z_ERRNO and the application may consult errno - to get the exact error code. -*/ - - /* checksum functions */ - -/* - These functions are not related to compression but are exported - anyway because they might be useful in applications using the - compression library. -*/ - -extern uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len)); - -/* - Update a running Adler-32 checksum with the bytes buf[0..len-1] and - return the updated checksum. If buf is NULL, this function returns - the required initial value for the checksum. - An Adler-32 checksum is almost as reliable as a CRC32 but can be computed - much faster. Usage example: - - uLong adler = adler32(0L, Z_NULL, 0); - - while (read_buffer(buffer, length) != EOF) { - adler = adler32(adler, buffer, length); - } - if (adler != original_adler) error(); -*/ - -extern uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len)); -/* - Update a running crc with the bytes buf[0..len-1] and return the updated - crc. If buf is NULL, this function returns the required initial value - for the crc. Pre- and post-conditioning (one's complement) is performed - within this function so it shouldn't be done by the application. - Usage example: - - uLong crc = crc32(0L, Z_NULL, 0); - - while (read_buffer(buffer, length) != EOF) { - crc = crc32(crc, buffer, length); - } - if (crc != original_crc) error(); -*/ - - - /* various hacks, don't look :) */ - -/* deflateInit and inflateInit are macros to allow checking the zlib version - * and the compiler's view of z_stream: - */ -extern int ZEXPORT deflateInit_ OF((z_streamp strm, int level, - const char *version, int stream_size)); -extern int ZEXPORT inflateInit_ OF((z_streamp strm, - const char *version, int stream_size)); -extern int ZEXPORT deflateInit2_ OF((z_streamp strm, int level, int method, - int windowBits, int memLevel, - int strategy, const char *version, - int stream_size)); -extern int ZEXPORT inflateInit2_ OF((z_streamp strm, int windowBits, - const char *version, int stream_size)); -#define deflateInit(strm, level) \ - deflateInit_((strm), (level), ZLIB_VERSION, sizeof(z_stream)) -#define inflateInit(strm) \ - inflateInit_((strm), ZLIB_VERSION, sizeof(z_stream)) -#define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \ - deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\ - (strategy), ZLIB_VERSION, sizeof(z_stream)) -#define inflateInit2(strm, windowBits) \ - inflateInit2_((strm), (windowBits), ZLIB_VERSION, sizeof(z_stream)) - - -#if !defined(_Z_UTIL_H) && !defined(NO_DUMMY_DECL) - struct internal_state {int dummy;}; /* hack for buggy compilers */ -#endif - -extern const char * ZEXPORT zError OF((int err)); -extern int ZEXPORT inflateSyncPoint OF((z_streamp z)); -extern const uLongf * ZEXPORT get_crc_table OF((void)); - -#ifdef __cplusplus -} -#endif - -#endif /* _ZLIB_H */ diff --git a/src/zlib/zutil.c b/src/zlib/zutil.c deleted file mode 100644 index 199762bdbe..0000000000 --- a/src/zlib/zutil.c +++ /dev/null @@ -1,225 +0,0 @@ -/* zutil.c -- target dependent utility functions for the compression library - * Copyright (C) 1995-1998 Jean-loup Gailly. - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* @(#) $Id$ */ - -#include "zutil.h" - -struct internal_state {int dummy;}; /* for buggy compilers */ - -#ifndef STDC -extern void exit OF((int)); -#endif - -const char *z_errmsg[10] = { -"need dictionary", /* Z_NEED_DICT 2 */ -"stream end", /* Z_STREAM_END 1 */ -"", /* Z_OK 0 */ -"file error", /* Z_ERRNO (-1) */ -"stream error", /* Z_STREAM_ERROR (-2) */ -"data error", /* Z_DATA_ERROR (-3) */ -"insufficient memory", /* Z_MEM_ERROR (-4) */ -"buffer error", /* Z_BUF_ERROR (-5) */ -"incompatible version",/* Z_VERSION_ERROR (-6) */ -""}; - - -const char * ZEXPORT zlibVersion() -{ - return ZLIB_VERSION; -} - -#ifdef __WXDEBUG__ - -# ifndef verbose -# define verbose 0 -# endif -int z_verbose = verbose; - -void z_error (m) - char *m; -{ - fprintf(stderr, "%s\n", m); - exit(1); -} -#endif - -/* exported to allow conversion of error code to string for compress() and - * uncompress() - */ -const char * ZEXPORT zError(err) - int err; -{ - return ERR_MSG(err); -} - - -#ifndef HAVE_MEMCPY - -void zmemcpy(dest, source, len) - Bytef* dest; - Bytef* source; - uInt len; -{ - if (len == 0) return; - do { - *dest++ = *source++; /* ??? to be unrolled */ - } while (--len != 0); -} - -int zmemcmp(s1, s2, len) - Bytef* s1; - Bytef* s2; - uInt len; -{ - uInt j; - - for (j = 0; j < len; j++) { - if (s1[j] != s2[j]) return 2*(s1[j] > s2[j])-1; - } - return 0; -} - -void zmemzero(dest, len) - Bytef* dest; - uInt len; -{ - if (len == 0) return; - do { - *dest++ = 0; /* ??? to be unrolled */ - } while (--len != 0); -} -#endif - -#ifdef __TURBOC__ -#if (defined( __BORLANDC__) || !defined(SMALL_MEDIUM)) && !defined(__32BIT__) -/* Small and medium model in Turbo C are for now limited to near allocation - * with reduced MAX_WBITS and MAX_MEM_LEVEL - */ -# define MY_ZCALLOC - -/* Turbo C malloc() does not allow dynamic allocation of 64K bytes - * and farmalloc(64K) returns a pointer with an offset of 8, so we - * must fix the pointer. Warning: the pointer must be put back to its - * original form in order to free it, use zcfree(). - */ - -#define MAX_PTR 10 -/* 10*64K = 640K */ - -local int next_ptr = 0; - -typedef struct ptr_table_s { - voidpf org_ptr; - voidpf new_ptr; -} ptr_table; - -local ptr_table table[MAX_PTR]; -/* This table is used to remember the original form of pointers - * to large buffers (64K). Such pointers are normalized with a zero offset. - * Since MSDOS is not a preemptive multitasking OS, this table is not - * protected from concurrent access. This hack doesn't work anyway on - * a protected system like OS/2. Use Microsoft C instead. - */ - -voidpf zcalloc (voidpf opaque, unsigned items, unsigned size) -{ - voidpf buf = opaque; /* just to make some compilers happy */ - ulg bsize = (ulg)items*size; - - /* If we allocate less than 65520 bytes, we assume that farmalloc - * will return a usable pointer which doesn't have to be normalized. - */ - if (bsize < 65520L) { - buf = farmalloc(bsize); - if (*(ush*)&buf != 0) return buf; - } else { - buf = farmalloc(bsize + 16L); - } - if (buf == NULL || next_ptr >= MAX_PTR) return NULL; - table[next_ptr].org_ptr = buf; - - /* Normalize the pointer to seg:0 */ - *((ush*)&buf+1) += ((ush)((uch*)buf-0) + 15) >> 4; - *(ush*)&buf = 0; - table[next_ptr++].new_ptr = buf; - return buf; -} - -void zcfree (voidpf opaque, voidpf ptr) -{ - int n; - if (*(ush*)&ptr != 0) { /* object < 64K */ - farfree(ptr); - return; - } - /* Find the original pointer */ - for (n = 0; n < next_ptr; n++) { - if (ptr != table[n].new_ptr) continue; - - farfree(table[n].org_ptr); - while (++n < next_ptr) { - table[n-1] = table[n]; - } - next_ptr--; - return; - } - ptr = opaque; /* just to make some compilers happy */ - Assert(0, "zcfree: ptr not found"); -} -#endif -#endif /* __TURBOC__ */ - - -#if defined(M_I86) && !defined(__32BIT__) -/* Microsoft C in 16-bit mode */ - -# define MY_ZCALLOC - -#if (!defined(_MSC_VER) || (_MSC_VER < 600)) -# define _halloc halloc -# define _hfree hfree -#endif - -voidpf zcalloc (voidpf opaque, unsigned items, unsigned size) -{ - if (opaque) opaque = 0; /* to make compiler happy */ - return _halloc((long)items, size); -} - -void zcfree (voidpf opaque, voidpf ptr) -{ - if (opaque) opaque = 0; /* to make compiler happy */ - _hfree(ptr); -} - -#endif /* MSC */ - - -#ifndef MY_ZCALLOC /* Any system without a special alloc function */ - -#ifndef STDC -extern voidp calloc OF((uInt items, uInt size)); -extern void free OF((voidpf ptr)); -#endif - -voidpf zcalloc (opaque, items, size) - voidpf opaque; - unsigned items; - unsigned size; -{ - if (opaque) items += size - size; /* make compiler happy */ - return (voidpf)calloc(items, size); -} - -void zcfree (opaque, ptr) - voidpf opaque; - voidpf ptr; -{ - free(ptr); - if (opaque) return; /* make compiler happy */ -} - -#endif /* MY_ZCALLOC */ diff --git a/src/zlib/zutil.h b/src/zlib/zutil.h deleted file mode 100644 index 3a390ff989..0000000000 --- a/src/zlib/zutil.h +++ /dev/null @@ -1,221 +0,0 @@ -/* zutil.h -- internal interface and configuration of the compression library - * Copyright (C) 1995-1998 Jean-loup Gailly. - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* WARNING: this file should *not* be used by applications. It is - part of the implementation of the compression library and is - subject to change. Applications should only use zlib.h. - */ - -/* @(#) $Id$ */ - -#ifndef _Z_UTIL_H -#define _Z_UTIL_H - -#include "../zlib/zlib.h" - -#ifdef STDC -# include -# include -# include -#endif -#ifdef NO_ERRNO_H - extern int errno; -#else -# include -#endif - -#ifndef local -# define local static -#endif -/* compile with -Dlocal if your debugger can't find static symbols */ - -typedef unsigned char uch; -typedef uch FAR uchf; -typedef unsigned short ush; -typedef ush FAR ushf; -typedef unsigned long ulg; - -extern const char *z_errmsg[10]; /* indexed by 2-zlib_error */ -/* (size given to avoid silly warnings with Visual C++) */ - -#define ERR_MSG(err) z_errmsg[Z_NEED_DICT-(err)] - -#define ERR_RETURN(strm,err) \ - return (strm->msg = (char*)ERR_MSG(err), (err)) -/* To be used only when the state is known to be valid */ - - /* common constants */ - -#ifndef DEF_WBITS -# define DEF_WBITS MAX_WBITS -#endif -/* default windowBits for decompression. MAX_WBITS is for compression only */ - -#if MAX_MEM_LEVEL >= 8 -# define DEF_MEM_LEVEL 8 -#else -# define DEF_MEM_LEVEL MAX_MEM_LEVEL -#endif -/* default memLevel */ - -#define STORED_BLOCK 0 -#define STATIC_TREES 1 -#define DYN_TREES 2 -/* The three kinds of block type */ - -#define MIN_MATCH 3 -#define MAX_MATCH 258 -/* The minimum and maximum match lengths */ - -#define PRESET_DICT 0x20 /* preset dictionary flag in zlib header */ - - /* target dependencies */ - -#ifdef MSDOS -# define OS_CODE 0x00 -# ifdef __TURBOC__ -# if(__STDC__ == 1) && (defined(__LARGE__) || defined(__COMPACT__)) - /* Allow compilation with ANSI keywords only enabled */ - void _Cdecl farfree( void *block ); - void *_Cdecl farmalloc( unsigned long nbytes ); -# else -# include -# endif -# else /* MSC or DJGPP */ -# include -# endif -#endif - -#ifdef OS2 -# define OS_CODE 0x06 -#endif - -#ifdef WIN32 /* Window 95 & Windows NT */ -# define OS_CODE 0x0b -#endif - -#if defined(VAXC) || defined(VMS) -# define OS_CODE 0x02 -# define F_OPEN(name, mode) \ - fopen((name), (mode), "mbc=60", "ctx=stm", "rfm=fix", "mrs=512") -#endif - -#ifdef AMIGA -# define OS_CODE 0x01 -#endif - -#if defined(ATARI) || defined(atarist) -# define OS_CODE 0x05 -#endif - -#if defined(MACOS) || defined(TARGET_OS_MAC) -# define OS_CODE 0x07 -# ifndef fdopen -# define fdopen(fd,mode) NULL /* No fdopen() */ -# endif -#endif -#if defined(__MWERKS__) && !defined(fdopen) -# if __dest_os != __be_os && __dest_os != __win32_os -# define fdopen(fd,mode) NULL -# endif -#endif - -#ifdef __50SERIES /* Prime/PRIMOS */ -# define OS_CODE 0x0F -#endif - -#ifdef TOPS20 -# define OS_CODE 0x0a -#endif - -#if defined(_BEOS_) || defined(RISCOS) -# define fdopen(fd,mode) NULL /* No fdopen() */ -#endif - -#if (defined(_MSC_VER) && (_MSC_VER >= 600)) -# define fdopen(fd,type) _fdopen(fd,type) -#endif - - - /* Common defaults */ - -#ifndef OS_CODE -# define OS_CODE 0x03 /* assume Unix */ -#endif - -#ifndef F_OPEN -# define F_OPEN(name, mode) fopen((name), (mode)) -#endif - - /* functions */ - -#ifdef HAVE_STRERROR - extern char *strerror OF((int)); -# define zstrerror(errnum) strerror(errnum) -#else -# define zstrerror(errnum) "" -#endif - -#if defined(pyr) -# define NO_MEMCPY -#endif -#if defined(SMALL_MEDIUM) && !defined(_MSC_VER) && !defined(__SC__) - /* Use our own functions for small and medium model with MSC <= 5.0. - * You may have to use the same strategy for Borland C (untested). - * The __SC__ check is for Symantec. - */ -# define NO_MEMCPY -#endif -#if defined(STDC) && !defined(HAVE_MEMCPY) && !defined(NO_MEMCPY) -# define HAVE_MEMCPY -#endif -#ifdef HAVE_MEMCPY -# ifdef SMALL_MEDIUM /* MSDOS small or medium model */ -# define zmemcpy _fmemcpy -# define zmemcmp _fmemcmp -# define zmemzero(dest, len) _fmemset(dest, 0, len) -# else -# define zmemcpy memcpy -# define zmemcmp memcmp -# define zmemzero(dest, len) memset(dest, 0, len) -# endif -#else - extern void zmemcpy OF((Bytef* dest, Bytef* source, uInt len)); - extern int zmemcmp OF((Bytef* s1, Bytef* s2, uInt len)); - extern void zmemzero OF((Bytef* dest, uInt len)); -#endif - -/* Diagnostic functions */ -#ifdef __WXDEBUG__ -# include - extern int z_verbose; - extern void z_error OF((char *m)); -# define Assert(cond,msg) {if(!(cond)) z_error(msg);} -# define Trace(x) {if (z_verbose>=0) fprintf x ;} -# define Tracev(x) {if (z_verbose>0) fprintf x ;} -# define Tracevv(x) {if (z_verbose>1) fprintf x ;} -# define Tracec(c,x) {if (z_verbose>0 && (c)) fprintf x ;} -# define Tracecv(c,x) {if (z_verbose>1 && (c)) fprintf x ;} -#else -# define Assert(cond,msg) -# define Trace(x) -# define Tracev(x) -# define Tracevv(x) -# define Tracec(c,x) -# define Tracecv(c,x) -#endif - - -typedef uLong (ZEXPORT *check_func) OF((uLong check, const Bytef *buf, - uInt len)); -voidpf zcalloc OF((voidpf opaque, unsigned items, unsigned size)); -void zcfree OF((voidpf opaque, voidpf ptr)); - -#define ZALLOC(strm, items, size) \ - (*((strm)->zalloc))((strm)->opaque, (items), (size)) -#define ZFREE(strm, addr) (*((strm)->zfree))((strm)->opaque, (voidpf)(addr)) -#define TRY_FREE(s, p) {if (p) ZFREE(s, p);} - -#endif /* _Z_UTIL_H */ diff --git a/template.mak b/template.mak deleted file mode 100644 index 2e5ee951d7..0000000000 --- a/template.mak +++ /dev/null @@ -1,35 +0,0 @@ -#the calling Makefile MUST set OS and RULE -#RULE can be one of the following: -# bin for one local binary -# bin2 for two local binaries -# gbin for one global binary -# gbin2 for two global binaries -# lib for a local library -# libbin for a local library and one local binary -# libgbin for a local library and one global binary -# glib for a global library -# glibbin for a global library and one local binary -# glibgbin for a global library and one global binary -# gslib for a global shared library - -# no need to edit below this line !!!! - -RULES_DIR=$(WXBASEDIR)/setup/rules -RULES_GENERIC=$(RULES_DIR)/generic -SETUP_DIR=$(WXBASEDIR)/setup/$(OS) -SHARE_DIR=$(WXBASEDIR)/setup/shared - -SRCDIR=$(WXBASEDIR)/src -UTILS=$(WXBASEDIR)/utils -SAMPLES=$(WXBASEDIR)/samples -OTHER=$(WXBASEDIR)/other - -# now include the global setting -include $(SETUP_DIR)/maketmpl - -# now include the rule needed -include $(RULES_DIR)/$(RULE) - -# now include the global objects -include $(RULES_GENERIC)/globals - diff --git a/user/Makefile b/user/Makefile deleted file mode 100644 index 57ec5f3f82..0000000000 --- a/user/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../setup/general/makedirs diff --git a/user/wxConvert/.cvsignore b/user/wxConvert/.cvsignore deleted file mode 100644 index 4daa84b813..0000000000 --- a/user/wxConvert/.cvsignore +++ /dev/null @@ -1,2 +0,0 @@ -Linux -linux-gnu diff --git a/user/wxConvert/Makefile b/user/wxConvert/Makefile deleted file mode 100644 index bccce53f76..0000000000 --- a/user/wxConvert/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../../setup/general/makeapp diff --git a/user/wxConvert/Makefile.in b/user/wxConvert/Makefile.in deleted file mode 100644 index 5f781538f6..0000000000 --- a/user/wxConvert/Makefile.in +++ /dev/null @@ -1,26 +0,0 @@ -# WXXT base directory -WXBASEDIR=@WXBASEDIR@ - -# set the OS type for compilation -OS=@OS@ -# compile a library only -RULE=bin - -# define library name -BIN_TARGET=wxConvert -# define library sources -BIN_SRC=\ -wxConvert.cpp - -#define library objects -BIN_OBJ=\ -wxConvert.o - -# additional things needed to link -BIN_LINK= - -# additional things needed to compile -ADD_COMPILE= - -# include the definitions now -include ../../../template.mak diff --git a/user/wxConvert/wxConvert.cpp b/user/wxConvert/wxConvert.cpp deleted file mode 100644 index 49e8a4f9d9..0000000000 --- a/user/wxConvert/wxConvert.cpp +++ /dev/null @@ -1,175 +0,0 @@ -/* - * Program: wxConvert - * - * Author: Robert Roebling - * - * Copyright: (C) 1997, GNU (Robert Roebling) - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - * You may not use this program without clapping twice at every - * full hour. - * - */ - -#ifdef __GNUG__ -#pragma implementation "wxConvert.h" -#endif - -#include "wxConvert.h" -#include "wx/textfile.h" - -//----------------------------------------------------------------------------- -// main program -//----------------------------------------------------------------------------- - -IMPLEMENT_APP(MyApp) - -//----------------------------------------------------------------------------- -// MyFrame -//----------------------------------------------------------------------------- - -const ID_QUIT = 100; -const ID_2UNIX = 101; -const ID_2DOS = 102; -const ID_2MAC = 103; - -IMPLEMENT_DYNAMIC_CLASS( MyFrame, wxFrame ) - -BEGIN_EVENT_TABLE(MyFrame,wxFrame) - EVT_BUTTON (ID_QUIT, MyFrame::OnCommand) - EVT_BUTTON (ID_2UNIX, MyFrame::OnCommand) - EVT_BUTTON (ID_2DOS, MyFrame::OnCommand) - EVT_BUTTON (ID_2MAC, MyFrame::OnCommand) -END_EVENT_TABLE() - -MyFrame::MyFrame(void) : - wxFrame( (wxFrame *) NULL, -1, (char *) "wxConvert", wxPoint(20,20), wxSize(400,160) ) -{ - CreateStatusBar( 1 ); - - SetStatusText( "wxConvert v0.1 by Robert Roebling." ); - - char buf[500]; - wxGetWorkingDirectory( buf, 500 ); - wxString s( "Dir: " ); - s += buf; - - m_text = new wxStaticText( this, -1, s, wxPoint(10,50), wxSize(380,-1) ); - - (void*)new wxButton( this, ID_QUIT, "Quit", wxPoint(10,100), wxSize(60,25) ); - - (void*)new wxButton( this, ID_2UNIX, "To Unix", wxPoint(180,100), wxSize(60,25) ); - - (void*)new wxButton( this, ID_2DOS, "To Dos", wxPoint(250,100), wxSize(60,25) ); - - (void*)new wxButton( this, ID_2MAC, "To Mac", wxPoint(320,100), wxSize(60,25) ); -}; - -void MyFrame::OnCommand( wxCommandEvent &event ) -{ - switch (event.GetId()) - { - case ID_QUIT: - Close( TRUE ); - break; - case ID_2UNIX: - case ID_2DOS: - case ID_2MAC: - char buf[500]; - wxGetWorkingDirectory( buf, 500 ); - wxString s( buf ); - Recurse( event.GetId(), s ); - break; - }; -}; - -void MyFrame::Convert( int id, const wxString &fname ) -{ - wxTextFile text(fname ); - text.Open(); - return; - - switch (id) - { - case ID_2UNIX: - text.Write( wxTextFile::Type_Unix ); - break; - case ID_2DOS: - text.Write( wxTextFile::Type_Dos ); - break; - case ID_2MAC: - text.Write( wxTextFile::Type_Mac ); - break; - }; - -}; - -void MyFrame::Recurse( int id, const wxString &curdir ) -{ - wxArrayString paths; - wxString search,path; - - search = curdir; - search += "/*"; - - path = wxFindFirstFile( search, wxDIR ); - while (!path.IsNull()) - { - paths.Add( path ); // ref counting in action ! - path = wxFindNextFile(); - }; - - - search = curdir; - search += "/*.cpp"; - - path = wxFindFirstFile( search, wxFILE ); - while (!path.IsNull()) - { - m_text->SetLabel( path ); - wxYield(); - Convert( id, path ); - path = wxFindNextFile(); - }; - - for (int i = 0; i < paths.Count(); i++) - { - search = paths[i]; - Recurse( id, search ); - }; -}; - -//----------------------------------------------------------------------------- -// MyApp -//----------------------------------------------------------------------------- - -MyApp::MyApp(void) : - wxApp( ) -{ -}; - -bool MyApp::OnInit(void) -{ - wxFrame *frame = new MyFrame(); - frame->Show( TRUE ); - - return TRUE; -}; - - - - - diff --git a/user/wxConvert/wxConvert.h b/user/wxConvert/wxConvert.h deleted file mode 100644 index a6de4a46ac..0000000000 --- a/user/wxConvert/wxConvert.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Program: wxConvert - * - * Author: Robert Roebling - * - * Copyright: (C) 1997, GNU (Robert Roebling) - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#ifndef __WXCONVERTH__ -#define __WXCONVERTH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/wx.h" - -//----------------------------------------------------------------------------- -// derived classes -//----------------------------------------------------------------------------- - -class MyFrame; -class MyApp; - -//----------------------------------------------------------------------------- -// MyFrame -//----------------------------------------------------------------------------- - -class MyFrame: public wxFrame -{ - DECLARE_DYNAMIC_CLASS(MyFrame) - - public: - - MyFrame(void); - void OnCommand( wxCommandEvent &event ); - void Recurse( int id, const wxString &curdir ); - void Convert( int id, const wxString &fname ); - - wxStaticText *m_text; - - DECLARE_EVENT_TABLE() -}; - -//----------------------------------------------------------------------------- -// MyApp -//----------------------------------------------------------------------------- - -class MyApp: public wxApp -{ - public: - - MyApp(void); - virtual bool OnInit(void); -}; - -#endif // __WXCONVERTH__ diff --git a/user/wxFile/.cvsignore b/user/wxFile/.cvsignore deleted file mode 100644 index 4daa84b813..0000000000 --- a/user/wxFile/.cvsignore +++ /dev/null @@ -1,2 +0,0 @@ -Linux -linux-gnu diff --git a/user/wxFile/FMJobs.cpp b/user/wxFile/FMJobs.cpp deleted file mode 100644 index 14dd804ad6..0000000000 --- a/user/wxFile/FMJobs.cpp +++ /dev/null @@ -1,326 +0,0 @@ -/* - * Program: FMJobs.cpp - * - * Author: Robert Roebling - * - * Copyright: (C) 1997, GNU (Robert Roebling) - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#ifdef __GNUG__ -#pragma implementation "FMJobs.h" -#endif - -#include "FMJobs.h" -#include "wx/utils.h" -#include "wx/filefn.h" -#include "wx/msgdlg.h" - -//----------------------------------------------------------------------------- -// wxCopyStatusDia -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxCopyStatusDia,wxDialog); - -const ID_CANCEL_COPY = 1000; - -BEGIN_EVENT_TABLE(wxCopyStatusDia,wxDialog) - EVT_BUTTON (ID_CANCEL_COPY, wxCopyStatusDia::OnCommand) -END_EVENT_TABLE() - -wxCopyStatusDia::wxCopyStatusDia( wxFrame *parent, const wxString &dest, wxArrayString *files ) : - wxDialog( parent, -1, "FileMaker copy job control", wxPoint(180,180), wxSize(500,200) ) -{ - int w = 0; - int h = 0; - GetSize( &w, &h ); - - m_dest = dest; - m_files = files; - m_stop = FALSE; - - (void)new wxStaticText( this, -1, "Copying files", wxPoint(10,10) ); - (void)new wxStaticText( this, -1, "from:", wxPoint(30,40) ); - m_sourceMsg = new wxStaticText( this, -1, "", wxPoint(80,40), wxSize(200,-1) ); - (void)new wxStaticText( this, -1, " to:", wxPoint(30,70) ); - m_destMsg = new wxStaticText( this, -1, "", wxPoint(80,70), wxSize(200,-1) ); - (void)new wxStaticText( this, -1, " Kb copied:", wxPoint(30,100) ); - m_statusMsg = new wxStaticText( this, -1, "0", wxPoint(120,100), wxSize(100,-1) ); - - m_cancelButton = new wxButton( this, ID_CANCEL_COPY, "Return", wxPoint(w-130,h-50), wxSize(85,30) ); - - Centre( wxVERTICAL | wxHORIZONTAL ); - - m_timer = new wxCopyTimer( this ); - m_timer->Start( 300, TRUE ); - - Show( TRUE ); -}; - -wxCopyStatusDia::~wxCopyStatusDia() -{ - delete m_timer; -}; - -void wxCopyStatusDia::OnCommand( wxCommandEvent &WXUNUSED(event) ) -{ - if (m_stop) EndModal(wxID_CANCEL); - m_stop = TRUE; -}; - -void wxCopyStatusDia::DoCopy(void) -{ - wxYield(); - - if (!wxDirExists(m_dest)) - { - wxMessageBox( "Target is not a directory or it doesn`t exist. Can`t copy.", "FileMaker" ); - return; - }; - - for (uint i = 0; i < m_files->Count(); i++) - { - wxString src = (*m_files)[i]; - if (wxDirExists( src )) - CopyDir( src, m_dest ); - else - CopyFile( src, m_dest ); - if (m_stop) return; - }; - m_stop = TRUE; -}; - -void wxCopyStatusDia::CopyDir( wxString &srcDir, wxString &destDir ) -{ - wxString src = srcDir; - wxString dest = destDir; - dest += "/"; - dest += wxFileNameFromPath( src ); - if (!wxMkdir( dest )) - { - wxMessageBox( "Could not create target directory.", "FileMaker" ); - return; - }; - - wxArrayString list; - src += "/*"; - char *f = wxFindFirstFile( src, wxDIR ); - while (f) - { - list.Add( f ); - f = wxFindNextFile(); - }; - - for (uint i = 0; i < list.Count(); i++) - { - wxString filename = list[i]; - if (wxDirExists( filename )) - CopyDir( filename, dest ); - else - CopyFile( filename, dest ); - if (m_stop) return; - }; -}; - -void wxCopyStatusDia::CopyFile( wxString &src, wxString &destDir ) -{ - m_sourceMsg->SetLabel( src ); - wxString dest = destDir; - dest += "/"; - dest += wxFileNameFromPath( src ); - m_destMsg->SetLabel( dest ); - - wxYield(); - - if (wxFileExists(dest)) - { - wxString s = "Target file "; - s += dest; - s += " exists already. Overwrite?"; - int ret = wxMessageBox( s, "FileMaker", wxYES_NO ); - if (ret == wxNO) return; - }; - - FILE *fs = (FILE *) NULL, *fd = (FILE *) NULL; - if (!(fs = fopen(src, "rb"))) - { - wxString s = "Cannot open source file "; - s += src; - s += "."; - wxMessageBox( s, "FileMaker" ); - return; - } - else - if (!(fd = fopen(dest, "wb"))) - { - fclose(fs); - wxString s = "Cannot open target file "; - s += dest; - s += "."; - wxMessageBox( s, "FileMaker" ); - return; - }; - int ch; - long kcounter = 0; - while (!m_stop) - { - int counter = 0; - while ((ch = getc( fs )) != EOF) - { - putc( ch, fd ); - counter++; - if (counter == 1000) break; - }; - kcounter++; - m_statusMsg->SetLabel( IntToString( kcounter) ); - wxYield(); - if (ch == EOF) break; - }; - fclose( fs ); - fclose( fd ); -}; - - -//----------------------------------------------------------------------------- -// wxDeleteStatusDia -//----------------------------------------------------------------------------- - -/* - -IMPLEMENT_DYNAMIC_CLASS(wxDeleteStatusDia,wxDialogBox); - -wxDeleteStatusDia::wxDeleteStatusDia( wxFrame *parent, wxStringList *files ) : - wxDialogBox( parent, "FileMaker delete job control", TRUE, - 180, 180, 500, 200, wxCAPTION | wxTRANSIENT ) -{ - int w = 0; - int h = 0; - GetSize( &w, &h ); - - m_files = files; - m_stop = FALSE; - m_countFiles = 0; - m_countDirs = 0; - - wxFont *myFont = wxTheFontList->FindOrCreateFont( 12, wxROMAN, wxNORMAL, wxNORMAL ); - SetLabelFont( myFont ); - SetButtonFont( myFont ); - - wxStaticText *msg = new wxStaticText( this, "Deleting file or directory:", 10, 10 ); - m_targetMsg = new wxStaticText( this, "", 80, 40, 300 ); - msg = new wxStaticText( this, " Directories deleted:", 10, 80 ); - m_dirsMsg = new wxStaticText( this, "0", 120, 80, 80 ); - msg = new wxStaticText( this, " Files deleted:", 10, 110 ); - m_filesMsg = new wxStaticText( this, "0", 120, 110, 100 ); - - m_cancelButton = new wxButton( this, NULL, "Return", w-130, h-50, 85, 30 ); - - Centre( wxVERTICAL | wxHORIZONTAL ); - - m_timer = new wxDeleteTimer( this ); - m_timer->Start( 300, TRUE ); - - Show( TRUE ); -}; - -wxDeleteStatusDia::~wxDeleteStatusDia() -{ - delete m_timer; -}; - -void wxDeleteStatusDia::OnCommand( wxWindow &win, wxCommandEvent &WXUNUSED(event) ) -{ - if (&win == m_cancelButton) - { - if (m_stop) Show( FALSE ); - m_stop = TRUE; - return; - }; -}; - -void wxDeleteStatusDia::DoDelete(void) -{ - while (wxTheApp->Pending()) wxTheApp->Dispatch(); - wxNode *node = m_files->First(); - while (node) - { - char *target = (char*)node->Data(); - if (wxDirExists( target )) - DeleteDir( target ); - else - DeleteFile( target ); - if (m_stop) return; - node = node->Next(); - }; - m_stop = TRUE; -}; - -void wxDeleteStatusDia::DeleteDir( char *target ) -{ - wxString s = target; - s += "// *"; - wxStringList list; - char *f = wxFindFirstFile( s ); - while (f) - { - list.Add( f ); - f = wxFindNextFile(); - }; - wxNode *node = list.First(); - while (node) - { - f = (char*)node->Data(); - if (wxDirExists( f )) - DeleteDir( f ); - else - DeleteFile( f ); - if (m_stop) return; - node = node->Next(); - }; - if (!wxRmdir( target )) - { - s = "Could not remove directory "; - s += target; - s += "."; - wxMessageBox( s, "FileMaker" ); - return; - } - else - { - m_countDirs++; - m_dirsMsg->SetLabel( wxIntToString( m_countDirs) ); - }; -}; - -void wxDeleteStatusDia::DeleteFile( char *target ) -{ - m_targetMsg->SetLabel( target ); - while (wxTheApp->Pending()) wxTheApp->Dispatch(); - if (!wxRemoveFile( target )) - { - wxString s = "Could not delete file "; - s += target; - s += "."; - wxMessageBox( s, "FileMaker" ); - } - else - { - m_countFiles++; - m_filesMsg->SetLabel( wxIntToString( m_countFiles) ); - }; -}; - -*/ diff --git a/user/wxFile/FMJobs.h b/user/wxFile/FMJobs.h deleted file mode 100644 index 7d62e1539b..0000000000 --- a/user/wxFile/FMJobs.h +++ /dev/null @@ -1,143 +0,0 @@ -/* - * File: FMJobs.h - * - * Author: Robert Roebling - * - * Copyright: (C) 1997, GNU (Robert Roebling) - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#ifndef FMJobs_h -#define FMJobs_h - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/defs.h" -#include "wx/dialog.h" -#include "wx/frame.h" -#include "wx/button.h" -#include "wx/stattext.h" -#include "wx/timer.h" - -//----------------------------------------------------------------------------- -// derived classes -//----------------------------------------------------------------------------- - -class wxCopyStatusDia; -class wxDeleteStatusDia; -class wxCopyTimer; -class wxDeleteTimer; - -//----------------------------------------------------------------------------- -// wxCopyStatusDia -//----------------------------------------------------------------------------- - -class wxCopyStatusDia: public wxDialog -{ - DECLARE_DYNAMIC_CLASS( wxCopyStatusDia ); - - private: - - wxString m_dest; - wxArrayString *m_files; - wxButton *m_cancelButton; - wxStaticText *m_sourceMsg; - wxStaticText *m_destMsg; - wxStaticText *m_statusMsg; - bool m_stop; - wxTimer *m_timer; - - public: - - wxCopyStatusDia(void) : wxDialog() {}; - wxCopyStatusDia( wxFrame *parent, const wxString &dest, wxArrayString *files ); - ~wxCopyStatusDia(); - void OnCommand( wxCommandEvent &event ); - void DoCopy(void); - - private: - void CopyDir( wxString &srcDir, wxString &destDir ); - void CopyFile( wxString &src, wxString &destDir ); - - DECLARE_EVENT_TABLE(); -}; - -//----------------------------------------------------------------------------- -// wxDeleteStatusDia -//----------------------------------------------------------------------------- - -/* -class wxDeleteStatusDia: public wxDialog -{ - DECLARE_DYNAMIC_CLASS( wxDeleteStatusDia ); - - private: - - wxArrayString *m_files; - wxButton *m_cancelButton; - wxStaticText *m_targetMsg; - wxStaticText *m_filesMsg,*m_dirsMsg; - bool m_stop; - wxTimer *m_timer; - int m_countFiles,m_countDirs; - - public: - - wxDeleteStatusDia(void) : wxDialog() {}; - wxDeleteStatusDia( wxFrame *parent, wxArrayString *files ); - ~wxDeleteStatusDia(); - void OnCommand( wxCommandEvent &event ); - void DoDelete(void); - - private: - void DeleteDir( wxString &target ); - void DeleteFile( wxString &target ); - - DECLARE_EVENT_TABLE(); -}; -*/ - -//----------------------------------------------------------------------------- -// wxTimer -//----------------------------------------------------------------------------- - -class wxCopyTimer: public wxTimer -{ - private: - wxCopyStatusDia *m_owner; - - public: - wxCopyTimer( wxCopyStatusDia *owner ) { m_owner = owner; }; - void Notify() { m_owner->DoCopy(); }; -}; - -/* -class wxDeleteTimer: public wxTimer -{ - private: - wxDeleteStatusDia *m_owner; - - public: - wxDeleteTimer( wxDeleteStatusDia *owner ) { m_owner = owner; }; - void Notify() { m_owner->DoDelete(); }; -}; -*/ - -#endif // FMJobs_h - - diff --git a/user/wxFile/Makefile b/user/wxFile/Makefile deleted file mode 100644 index bccce53f76..0000000000 --- a/user/wxFile/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../../setup/general/makeapp diff --git a/user/wxFile/Makefile.in b/user/wxFile/Makefile.in deleted file mode 100644 index d7eebc5f25..0000000000 --- a/user/wxFile/Makefile.in +++ /dev/null @@ -1,26 +0,0 @@ -# WXXT base directory -WXBASEDIR=@WXBASEDIR@ - -# set the OS type for compilation -OS=@OS@ -# compile a library only -RULE=bin - -# define library name -BIN_TARGET=wxFile -# define library sources -BIN_SRC=\ -wxFile.cpp filectrl.cpp dirctrl.cpp FMJobs.cpp - -#define library objects -BIN_OBJ=\ -wxFile.o filectrl.o dirctrl.o FMJobs.o - -# additional things needed to link -BIN_LINK= - -# additional things needed to compile -ADD_COMPILE= - -# include the definitions now -include ../../../template.mak diff --git a/user/wxFile/commanderview.xpm b/user/wxFile/commanderview.xpm deleted file mode 100644 index 1ed8d8d47d..0000000000 --- a/user/wxFile/commanderview.xpm +++ /dev/null @@ -1,31 +0,0 @@ -/* XPM */ -static char * commanderview_xpm[] = { -"22 22 3 1", -" c None", -". c #000000000000", -"X c #FFFFFFFFFFFF", -" ", -" ", -" ", -" ", -" ", -" ................. ", -" .XXXXXXX.XXXXXXX. ", -" .XX...XX.XX...XX. ", -" .XXXXXXX.XXXXXXX. ", -" .XX...XX.XX..XXX. ", -" .XXXXXXX.XXXXXXX. ", -" .XX..XXX.XX...XX. ", -" .XXXXXXX.XXXXXXX. ", -" .XX...XX.XX...XX. ", -" .XXXXXXX.XXXXXXX. ", -" .XX...XX.XX...XX. ", -" .XXXXXXX.XXXXXXX. ", -" ................. ", -" ", -" ", -" ", -" "}; - - - diff --git a/user/wxFile/delete.xpm b/user/wxFile/delete.xpm deleted file mode 100644 index 41d24d2778..0000000000 --- a/user/wxFile/delete.xpm +++ /dev/null @@ -1,31 +0,0 @@ -/* XPM */ -static char * delete_xpm[] = { -"22 22 6 1", -" s None c None", -". c black", -"X c red2", -"o c white", -"O c #DEF6DEF6DEF6", -"+ c grey70", -" ", -" ", -" ", -" ........ ", -" XXX .ooooooO. ", -" XXXXOoooooOo. X ", -" XXXOoooo Oo. XX ", -" .XXXOoo ...XX ", -" .+XXXOo OOXX ", -" .O++XXXOXXX. ", -" .ooO+XXXXX+. ", -" .oooOXXXX+o. ", -" .ooXXXX+XXo. ", -" .XXXX++OXXO. ", -" XXXX++Ooo+XX. ", -" XXXX++OooooO+XX ", -" XXX .OoooooooOXX ", -" .ooooooooo+XX ", -" ...........XX ", -" X ", -" ", -" "}; diff --git a/user/wxFile/dirctrl.cpp b/user/wxFile/dirctrl.cpp deleted file mode 100644 index 16ad375642..0000000000 --- a/user/wxFile/dirctrl.cpp +++ /dev/null @@ -1,211 +0,0 @@ -/* - * Author: Robert Roebling - * - * Copyright: (C) 1997,1998 Robert Roebling - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the wxWindows Licence, which - * you have received with this library (see Licence.htm). - * - */ - -#ifdef __GNUG__ -#pragma implementation "dirctrl.h" -#endif - -#include "dirctrl.h" -#include "wx/gdicmn.h" -#include "wx/utils.h" -#include "wx/dnd.h" - -//----------------------------------------------------------------------------- -// wxDirInfo -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxDirInfo,wxObject) - -wxDirInfo::wxDirInfo( const wxString &path ) -{ - m_showHidden = FALSE; - m_path = path; - if (m_path == "/") m_name ="The Computer"; - else - if (m_path == "/home") - { - m_name = "My Home"; - m_path = ""; - wxGetHomeDir( &m_path ); - } - else - if (m_path == "/proc") m_name = "Info Filesystem"; - else - if (m_path == "/mnt") m_name = "Mounted Devices"; - else - if (m_path == "/usr/X11R6") m_name = "User X11"; - else - if (m_path == "/usr") m_name = "User"; - else - if (m_path == "/var") m_name = "Variables"; - else - if (m_path == "/usr/local") m_name = "User local"; - else - if (m_path == "/mnt") m_name = "Mounted Devices"; - else - m_name = wxFileNameFromPath( m_path ); -}; - -wxString wxDirInfo::GetName(void) const -{ - return m_name; -}; - -wxString wxDirInfo::GetPath(void) const -{ - return m_path; -}; - -//----------------------------------------------------------------------------- -// wxDirCtrl -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxDirCtrl,wxTreeCtrl) - -BEGIN_EVENT_TABLE(wxDirCtrl,wxTreeCtrl) - EVT_TREE_ITEM_EXPANDED (-1, wxDirCtrl::OnExpandItem) - EVT_TREE_ITEM_COLLAPSED (-1, wxDirCtrl::OnCollapseItem) - EVT_TREE_DELETE_ITEM (-1, wxDirCtrl::OnDeleteItem) -END_EVENT_TABLE() - -wxDirCtrl::wxDirCtrl(void) -{ - m_showHidden = FALSE; -}; - -wxDirCtrl::wxDirCtrl(wxWindow *parent, const wxWindowID id, const wxString &WXUNUSED(dir), - const wxPoint& pos, const wxSize& size, - const long style, const wxString& name ) - : - wxTreeCtrl( parent, id, pos, size, style, name ) -{ - m_showHidden = FALSE; - - wxTreeItem item; - item.m_mask = wxTREE_MASK_TEXT | wxTREE_MASK_CHILDREN | wxTREE_MASK_DATA; - item.m_text = "Sections"; - item.m_children = 1; - m_rootId = InsertItem( 0, item ); - -// SetDropTarget( new wxFileDropTarget() ); -}; - -void wxDirCtrl::OnExpandItem( const wxTreeEvent &event ) -{ - if (event.m_item.m_itemId == m_rootId) - { - - wxTreeItem item; - item.m_mask = wxTREE_MASK_TEXT | wxTREE_MASK_CHILDREN | wxTREE_MASK_DATA; - item.m_children = 1; - - wxDirInfo *info = new wxDirInfo( "/" ); - item.m_text = info->GetName(); - item.m_data = (long)info; - InsertItem( m_rootId, item ); - - info = new wxDirInfo( "/home" ); - item.m_text = info->GetName(); - item.m_data = (long)info; - InsertItem( m_rootId, item ); - - info = new wxDirInfo( "/mnt" ); - item.m_text = info->GetName(); - item.m_data = (long)info; - InsertItem( m_rootId, item ); - - info = new wxDirInfo( "/usr" ); - item.m_text = info->GetName(); - item.m_data = (long)info; - InsertItem( m_rootId, item ); - - info = new wxDirInfo( "/usr/X11R6" ); - item.m_text = info->GetName(); - item.m_data = (long)info; - InsertItem( m_rootId, item ); - - info = new wxDirInfo( "/usr/local" ); - item.m_text = info->GetName(); - item.m_data = (long)info; - InsertItem( m_rootId, item ); - - info = new wxDirInfo( "/var" ); - item.m_text = info->GetName(); - item.m_data = (long)info; - InsertItem( m_rootId, item ); - - info = new wxDirInfo( "/proc" ); - item.m_text = info->GetName(); - item.m_data = (long)info; - InsertItem( m_rootId, item ); - - return; - }; - - wxDirInfo *info = (wxDirInfo *)event.m_item.m_data; - if (!info) return; - - wxArrayString slist; - wxString search,path,filename; - - search = info->GetPath(); - search += "/*"; - - path = wxFindFirstFile( search, wxDIR ); - while (!path.IsNull()) - { - filename = wxFileNameFromPath( path ); - if (m_showHidden || (filename[0] != '.')) - { - if ((filename != ".") && - (filename != "..") && - (path != "/home") && - (path != "/usr/X11R6") && - (path != "/usr/local") && - (path != "/usr") && - (path != "/var") && - (path != "/home") && - (path != "/proc") && - (path != "/mnt") - ) - - slist.Add( path ); // ref counting in action ! - }; - path = wxFindNextFile(); - }; - - for (uint i = 0; i < slist.Count(); i++) - { - search = slist[i]; - search += "/*"; - path = wxFindFirstFile( search, wxDIR ); - - wxDirInfo *child = new wxDirInfo( slist[i] ); - wxTreeItem item; - item.m_mask = wxTREE_MASK_TEXT | wxTREE_MASK_CHILDREN | wxTREE_MASK_DATA; - item.m_text = child->GetName(); - item.m_children = 0; - if (!path.IsNull()) item.m_children = 1; - item.m_data = (long)child; - InsertItem( event.m_item.m_itemId, item ); - }; -}; - -void wxDirCtrl::OnCollapseItem( const wxTreeEvent &event ) -{ - DeleteChildren( event.m_item.m_itemId ); -}; - -void wxDirCtrl::OnDeleteItem( const wxTreeEvent &event ) -{ - wxDirInfo *info = (wxDirInfo *)event.m_item.m_data; - if (info) delete info; -}; diff --git a/user/wxFile/dirctrl.h b/user/wxFile/dirctrl.h deleted file mode 100644 index d3ff13c9aa..0000000000 --- a/user/wxFile/dirctrl.h +++ /dev/null @@ -1,74 +0,0 @@ -/* - * File: DirCtrl.h - * Purpose: dir tree control - * Author: Robert Roebling - * Created: 1997 - * Updated: - * Copyright: - */ - -#ifndef __DIRCTRLH__ -#define __DIRCTRLH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/treectrl.h" - -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxDirInfo; -class wxDirCtrl; - -//----------------------------------------------------------------------------- -// wxDirInfo -//----------------------------------------------------------------------------- - -class wxDirInfo: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxDirInfo) - - public: - - wxString m_name; - wxString m_path; - bool m_showHidden; - - - wxDirInfo() {}; - wxDirInfo( const wxString &path ); - wxString GetName(void) const; - wxString GetPath(void) const; -}; - -//----------------------------------------------------------------------------- -// wxDirCtrl -//----------------------------------------------------------------------------- - -class wxDirCtrl: public wxTreeCtrl -{ - DECLARE_DYNAMIC_CLASS(wxDirCtrl) - - public: - - bool m_showHidden; - int m_dragX,m_dragY; - long m_rootId; - - wxDirCtrl(void); - wxDirCtrl(wxWindow *parent, const wxWindowID id = -1, const wxString &dir = "/", - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - const long style = wxTR_HAS_BUTTONS, - const wxString& name = "wxTreeCtrl" ); - void OnExpandItem( const wxTreeEvent &event ); - void OnCollapseItem( const wxTreeEvent &event ); - void OnDeleteItem( const wxTreeEvent &event ); - - DECLARE_EVENT_TABLE() -}; - -#endif diff --git a/user/wxFile/exit.xpm b/user/wxFile/exit.xpm deleted file mode 100644 index eecc0d3000..0000000000 --- a/user/wxFile/exit.xpm +++ /dev/null @@ -1,29 +0,0 @@ -/* XPM */ -static char * exit_xpm[] = { -"22 22 4 1", -" c None", -". c #000000000000", -"X c #820782078207", -"o c #FFFFFFFFFFFF", -" ", -" ", -" ", -" ", -" ", -" . ", -" ..X .o.X ", -" ..X .ooo.X ", -" .o..oo ..XX ", -" .oo .XXXX ", -" .o .XXX ", -" .o .XX ", -" .o.X.o.X ", -" .o.XX .o.X ", -" .o.XX ..X ", -" ..XX ..X ", -" .XX .X ", -" XX XX ", -" ", -" ", -" ", -" "}; diff --git a/user/wxFile/filectrl.cpp b/user/wxFile/filectrl.cpp deleted file mode 100644 index 5fb6510d10..0000000000 --- a/user/wxFile/filectrl.cpp +++ /dev/null @@ -1,544 +0,0 @@ -/* - * Author: Robert Roebling - * - * Copyright: (C) 1997,1998 Robert Roebling - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the wxWindows Licence, which - * you have received with this library (see Licence.htm). - * - */ - - -#ifdef __GNUG__ -#pragma implementation "filectrl.h" -#endif - -#include "filectrl.h" - -#include "wx/dnd.h" - -#include "sys/types.h" -#include "sys/stat.h" -#include "dirent.h" -#include "pwd.h" -#include "grp.h" -#include "time.h" - -#include "folder.xpm" -#include "txt.xpm" -#include "list.xpm" -#include "find.xpm" - -//----------------------------------------------------------------------------- -// wxFileData -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxFileData,wxObject); - -wxFileData::wxFileData( const wxString &name, const wxString &fname ) -{ - m_name = name; - m_fileName = fname; - - struct stat buff; - stat( m_fileName.GetData(), &buff ); - struct stat lbuff; - lstat( m_fileName.GetData(), &lbuff ); - - struct tm *t = localtime( &lbuff.st_mtime ); -// struct passwd *user = getpwuid( buff.st_uid ); -// struct group *grp = getgrgid( buff.st_gid ); - - m_isDir = S_ISDIR( buff.st_mode ); - m_isLink = S_ISLNK( lbuff.st_mode ); - m_isExe = ((buff.st_mode & S_IXUSR ) == S_IXUSR ); - - m_size = buff.st_size; - - m_hour = t->tm_hour; - m_minute = t->tm_min; - m_month = t->tm_mon+1; - m_day = t->tm_mday; - m_year = t->tm_year; - - m_permissions.sprintf( "%c%c%c", - ((( buff.st_mode & S_IRUSR ) == S_IRUSR ) ? 'r' : '-'), - ((( buff.st_mode & S_IWUSR ) == S_IWUSR ) ? 'w' : '-'), - ((( buff.st_mode & S_IXUSR ) == S_IXUSR ) ? 'x' : '-') ); -}; - -wxString wxFileData::GetName(void) const -{ - return m_name; -}; - -wxString wxFileData::GetFullName(void) const -{ - return m_fileName; -}; - -wxString wxFileData::GetHint(void) const -{ - wxString s = m_fileName; - s += " "; - if (m_isDir) s += "

    "; - else if (m_isLink) s += " "; - else - { - s += LongToString( m_size ); - s += " bytes "; - }; - s += IntToString( m_day ); - s += "."; - s += IntToString( m_month ); - s += "."; - s += IntToString( m_year ); - s += " "; - s += IntToString( m_hour ); - s += ":"; - s += IntToString( m_minute ); - s += " "; - s += m_permissions; - return s; -}; - -wxString wxFileData::GetEntry( const int num ) -{ - wxString s; - switch (num) - { - case 0: - s = m_name; - break; - case 1: - if (m_isDir) s = ""; - else if (m_isLink) s = ""; - else s = LongToString( m_size ); - break; - case 2: - if (m_day < 10) s = "0"; else s = ""; - s += IntToString( m_day ); - s += "."; - if (m_month < 10) s += "0"; - s += IntToString( m_month ); - s += "."; - if (m_year < 10) s += "0"; // this should happen real soon... - s += IntToString( m_year ); - break; - case 3: - if (m_hour < 10) s = "0"; else s = ""; - s += IntToString( m_hour ); - s += ":"; - if (m_minute < 10) s += "0"; - s += IntToString( m_minute ); - break; - case 4: - s = m_permissions; - break; - default: - s = "No entry"; - break; - }; - return s; -}; - -bool wxFileData::IsDir( void ) -{ - return m_isDir; -}; - -bool wxFileData::IsExe( void ) -{ - return m_isExe; -}; - -bool wxFileData::IsLink( void ) -{ - return m_isLink; -}; - -long wxFileData::GetSize( void ) -{ - return m_size; -}; - -bool wxFileData::NewNameIsLegal( const wxString &s ) -{ - wxString fileName = wxPathOnly( m_fileName ); - fileName += "/"; - fileName += s; - return (!wxFileExists( fileName )); -}; - -bool wxFileData::Rename( const wxString &s ) -{ - wxString fileName = wxPathOnly( m_fileName ); - fileName += "/"; - fileName += s; - bool ret = wxRenameFile( m_fileName, fileName ); - if (ret) - { - m_fileName = fileName; - m_name = s; - }; - return ret; -}; - -void wxFileData::MakeItem( wxListItem &item ) -{ - item.m_text = m_name; - item.m_colour = wxBLACK; - if (IsExe()) item.m_colour = wxRED; - if (IsDir()) item.m_colour = wxBLUE; - if (IsLink()) - { - wxColour *dg = wxTheColourDatabase->FindColour( "MEDIUM GREY" ); - item.m_colour = dg; - }; - item.m_data = (long)this; -}; - -//----------------------------------------------------------------------------- -// wxFileCtrl -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxFileCtrl,wxListCtrl); - -BEGIN_EVENT_TABLE(wxFileCtrl,wxListCtrl) - EVT_SET_FOCUS (wxFileCtrl::OnSetFocus) -END_EVENT_TABLE() - -wxFileCtrl *wxFileCtrl::m_lastFocus = (wxFileCtrl *) NULL; - -wxFileCtrl::wxFileCtrl( void ) -{ - m_dirName = "/"; - m_showHidden = FALSE; -}; - -wxFileCtrl::wxFileCtrl( wxWindow *win, const wxWindowID id, const wxString &dirName, - const wxPoint &pos, const wxSize &size, - const long style, const wxString &name ) : - wxListCtrl( win, id, pos, size, style, name ) -{ - SetItemSpacing( 40 ); - wxImageList *imageList = new wxImageList( 30, 30 ); - imageList->Add( wxBitmap( folder_xpm ) ); - imageList->Add( wxBitmap( txt_xpm ) ); - imageList->Add( wxBitmap( list_xpm ) ); - imageList->Add( wxBitmap( find_xpm ) ); - - SetImageList( imageList, wxIMAGE_LIST_NORMAL ); - - m_dirName = dirName; - m_showHidden = FALSE; - Update(); - - m_lastFocus = this; - - m_dragStartX = 0; - m_dragStartY = 0; - m_dragCount = 0; - -// SetDropTarget( new wxFileDropTarget() ); -}; - -void wxFileCtrl::ChangeToListMode() -{ - SetSingleStyle( wxLC_LIST ); - Update(); -}; - -void wxFileCtrl::ChangeToReportMode() -{ - SetSingleStyle( wxLC_REPORT ); - Update(); -}; - -void wxFileCtrl::ChangeToIconMode() -{ - SetSingleStyle( wxLC_ICON ); - Update(); -}; - -void wxFileCtrl::ShowHidden( bool show ) -{ - m_showHidden = show; - Update(); -}; - -int ListCompare( const long data1, const long data2, const long WXUNUSED(data) ) -{ - wxFileData *fd1 = (wxFileData*)data1 ; - wxFileData *fd2 = (wxFileData*)data2 ; - if (fd1->IsDir() && !fd2->IsDir()) return -1; - if (fd2->IsDir() && !fd1->IsDir()) return 1; - return strcmp( fd1->GetName(), fd2->GetName() ); -}; - -void wxFileCtrl::Update( void ) -{ - DeleteAllItems(); - for (int i = 0; i < 5; i++) DeleteColumn( 0 ); - long my_style = GetWindowStyleFlag(); - if (my_style & wxLC_REPORT) - { - InsertColumn( 0, "Name", wxLIST_FORMAT_LEFT, 110 ); - InsertColumn( 1, "Size", wxLIST_FORMAT_LEFT, 60 ); - InsertColumn( 2, "Date", wxLIST_FORMAT_LEFT, 55 ); - InsertColumn( 3, "Time", wxLIST_FORMAT_LEFT, 50 ); - InsertColumn( 4, "Permissions", wxLIST_FORMAT_LEFT, 120 ); - }; - wxFileData *fd = (wxFileData *) NULL; - wxListItem item; - item.m_mask = wxLIST_MASK_TEXT + wxLIST_MASK_DATA; - if (my_style & wxLC_ICON) item.m_mask += wxLIST_MASK_IMAGE; - item.m_itemId = 0; - item.m_col = 0; - wxString s; - wxString res = m_dirName + "/*"; - char *f = wxFindFirstFile( res.GetData(), 0 ); - while (f) - { - res = wxFileNameFromPath( f ); - fd = new wxFileData( res, f ); - s = fd->GetName(); - if (m_showHidden || (s[0] != '.')) - { - fd->MakeItem( item ); - if (my_style & wxLC_REPORT) - { - InsertItem( item ); - for (int i = 1; i < 5; i++) SetItem( item.m_itemId, i, fd->GetEntry( i) ); - } - else if (my_style & wxLC_LIST) - { - InsertItem( item ); - } - else if (my_style & wxLC_ICON) - { - if (fd->IsDir()) item.m_image = 0; else item.m_image = 1; - InsertItem( item ); - }; - item.m_itemId++; - }; - f = wxFindNextFile(); - }; - SortItems( ListCompare, 0 ); -}; - - -int wxFileCtrl::FillList( wxStringList &list ) -{ - long index = -1; - int count = 0; - wxString s; - for (;;) - { - index = GetNextItem( index, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED ); - if (index == -1) break; - wxListItem item; - item.m_itemId = index; - GetItem( item ); - wxFileData *fd = (wxFileData*)item.m_data; - list.Add( fd->GetFullName() ); - index++; - count++; - }; - if (count == 0) - { - index = GetNextItem( -1, wxLIST_NEXT_ALL, wxLIST_STATE_FOCUSED ); - if (index == -1) return 0; - wxListItem item; - item.m_itemId = index; - GetItem( item ); - wxFileData *fd = (wxFileData*)item.m_data; - list.Add( fd->GetFullName() ); - count = 1; - }; - return count; -}; - -void wxFileCtrl::DeleteFiles(void) -{ -/* - wxStringList list; - int count = FillList( list ); - if (count > 0) - { - wxString s = "Delete "; - s += wxIntToString( count ); - s += " selected file"; - if (count > 1) s += "s"; - s += " or director"; - if (count > 1) s += "ies?"; else s+= "y?"; - if (wxYES == wxMessageBox( s, "Delete", wxYES_NO )) - wxDeleteStatusDia( NULL, &list ); - }; -*/ -}; - -void wxFileCtrl::CopyFiles( char *WXUNUSED(dest) ) -{ -/* - wxStringList list; - int count = FillList( list ); - wxString s = dest; - int ret = 0; // 0 = nix, 1 = copy, 2 = move - wxCopyMoveDia( (wxFrame*)GetParent(), count, &ret, &s ); - if (ret == 1) - wxCopyStatusDia( NULL, s, &list ); -*/ -}; - -void wxFileCtrl::MoveFiles( char *WXUNUSED(dest) ) -{ -}; - -void wxFileCtrl::RenameFile(void) -{ -}; - -void wxFileCtrl::MakeDir(void) -{ -/* - wxString s = wxGetTextFromUser( "Enter new directory name:", "Make directory" ); - if (s.IsNull()) return; - if (s == "") return; - if ((s == ".") || (s == "..")) - { - wxMessageBox( "This was obviously an invalid directory name.", "Go away." ); - return; - }; - wxString dir; - GetDir( dir ); - dir += "/"; - dir += s; - if (wxFileExists( dir )) - { - wxMessageBox( "Filename exists already. Cannot create directoy.", "Make directory" ); - return; - }; - wxMkdir( dir ); - Update(); -*/ -}; - -void wxFileCtrl::GoToParentDir(void) -{ - wxString s = m_dirName; - int pos = s.Last( '/' ); - if ((pos >= 0) && (s != "/")) - { - s.Remove( pos, s.Length()-pos ); - if (s.Length() == 0) s = "/"; - m_dirName = s; - Update(); - }; -}; - -void wxFileCtrl::GoToHomeDir(void) -{ - wxString s = wxGetUserHome( wxString() ); - m_dirName = s; - Update(); -}; - -void wxFileCtrl::GoToDir( const wxString &dir ) -{ - m_dirName = dir; - Update(); -}; - -void wxFileCtrl::GetDir( wxString &dir ) -{ - dir = m_dirName; -}; - -/* -void wxFileCtrl::OnDropFiles( int WXUNUSED(n), char **WXUNUSED(data), int WXUNUSED(x), int WXUNUSED(y) ) -{ - wxString destDir; - wxPoint pt( x, y ); - int flag = wxLIST_HITTEST_ONITEM; - long hit = HitTest( pt, flag ); - if (hit > -1) - { - wxListItem li; - li.m_itemId = hit; - GetItem( li ); - wxFileData *fd = (wxFileData*)li.m_data; - if (fd->IsDir()) fd->GetFullName( destDir ); - }; - if (destDir.IsNull()) destDir = m_dirName; - int ret = 0; // 0 = nix, 1 = copy, 2 = move - wxCopyMoveDia( (wxFrame*)GetParent(), n, &ret, &destDir ); - if (ret == 1) - { - wxStringList slist; - for (int i = 0; i < n; i++) slist.Add( data[i] ); - wxCopyStatusDia( NULL, destDir.GetData(), &slist ); - Update(); - }; -}; -*/ - -void wxFileCtrl::OnListDeleteItem( wxListEvent &event ) -{ - wxFileData *fd = (wxFileData*)event.m_item.m_data; - delete fd; -}; - -void wxFileCtrl::OnListKeyDown( wxListEvent &event ) -{ - wxFileData *fd = (wxFileData*)event.m_item.m_data; - if (fd->IsDir()) - { - m_dirName = fd->GetFullName(); - Update(); - Refresh(); - return; - }; - if (fd->IsExe()) - { - wxExecute( fd->GetFullName() ); - return; - }; -}; - -void wxFileCtrl::OnListEndLabelEdit( wxListEvent &event ) -{ - wxFileData *fd = (wxFileData*)event.m_item.m_data; - wxString newName = event.m_item.m_text; - if (fd->NewNameIsLegal( newName )) - { - if (fd->Rename( newName )) - { - Update(); - } - else - { - wxString s = "Could not rename file to "; - s += newName; - s += "."; - wxMessageBox( s, "FileMaker", wxOK ); - }; - } - else - { - wxString s = "File name "; - s += newName; - s += " exists already or is invalid.\n"; - s += "Could not rename file."; - wxMessageBox( s, "FileMaker", wxOK ); - }; - return; -}; - -void wxFileCtrl::OnSetFocus( wxFocusEvent &event ) -{ - m_lastFocus = this; - event.Skip(); -}; - diff --git a/user/wxFile/filectrl.h b/user/wxFile/filectrl.h deleted file mode 100644 index f2e202433b..0000000000 --- a/user/wxFile/filectrl.h +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Author: Robert Roebling - * - * Copyright: (C) 1997,1998 Robert Roebling - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the wxWindows Licence, which - * you have received with this library (see Licence.htm). - * - */ - -#ifndef FileList_h -#define FileList_h - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/wx.h" -#include "wx/listctrl.h" - -//----------------------------------------------------------------------------- -// derived classes -//----------------------------------------------------------------------------- - -class wxFileData; -class wxFileCtrl; - -//----------------------------------------------------------------------------- -// wxFileData -//----------------------------------------------------------------------------- - -class wxFileData : public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxFileData); - - private: - wxString m_name; - wxString m_fileName; - long m_size; - int m_hour; - int m_minute; - int m_year; - int m_month; - int m_day; - wxString m_permissions; - bool m_isDir; - bool m_isLink; - bool m_isExe; - - public: - wxFileData( void ) {}; - wxFileData( const wxString &name, const wxString &fname ); - wxString GetName(void) const; - wxString GetFullName(void) const; - wxString GetHint(void) const; - wxString GetEntry( const int num ); - bool IsDir( void ); - bool IsLink( void ); - bool IsExe( void ); - long GetSize( void ); - bool NewNameIsLegal( const wxString &s ); - bool Rename( const wxString &s ); - void MakeItem( wxListItem &item ); -}; - -//----------------------------------------------------------------------------- -// wxFileCtrl -//----------------------------------------------------------------------------- - -class wxFileCtrl : public wxListCtrl -{ - DECLARE_DYNAMIC_CLASS(wxFileCtrl); - - public: - - static wxFileCtrl* m_lastFocus; - - private: - wxString m_dirName; - bool m_showHidden; - int m_dragStartX; - int m_dragStartY; - int m_dragCount; - - public: - wxFileCtrl( void ); - wxFileCtrl( wxWindow *win, const wxWindowID id, const wxString &dirName, - const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, - const long style = wxLC_LIST, const wxString &name = "filelist" ); - void ChangeToListMode(); - void ChangeToReportMode(); - void ChangeToIconMode(); - void ShowHidden( bool show = TRUE ); - void Update( void ); - virtual void StatusbarText( char *WXUNUSED(text) ) {}; - int FillList( wxStringList &list ); - void DeleteFiles(void); - void CopyFiles( char *dest ); - void MoveFiles( char *dest ); - void RenameFile(void); - void MakeDir(void); - void GoToParentDir(void); - void GoToHomeDir(void); - void GoToDir( const wxString &dir ); - void GetDir( wxString &dir ); - void OnListDeleteItem( wxListEvent &event ); - void OnListKeyDown( wxListEvent &event ); - void OnListEndLabelEdit( wxListEvent &event ); - void OnSetFocus( wxFocusEvent &event ); - - DECLARE_EVENT_TABLE() -}; - -#endif // FileList_h diff --git a/user/wxFile/fileopen.xpm b/user/wxFile/fileopen.xpm deleted file mode 100644 index dd384cadaf..0000000000 --- a/user/wxFile/fileopen.xpm +++ /dev/null @@ -1,30 +0,0 @@ -/* XPM */ -static char * fileopen_xpm[] = { -"22 22 5 1", -" c None", -". c #000000000000", -"X c #D75CD75CD75C", -"o c #FFFFFFFFFFFF", -"O c #6DB66DB66DB6", -" ", -" ", -" .... ", -" .. . ", -" ... ", -" ... ", -" .... ", -" .... ", -" .XoX....... ", -" .oXoXoXoXo. ", -" .XoXoXoXoX. ", -" .oXoXo .......... ", -" .XoXo . O O O OO. ", -" .oXo . O O OOOO. ", -" .Xo .OO OOOOOO. ", -" .o . O OOOOOO. ", -" ... O OOOOOO. ", -" ..OOOOOOOOO. ", -" ........... ", -" ", -" ", -" "}; diff --git a/user/wxFile/find.xpm b/user/wxFile/find.xpm deleted file mode 100644 index 82e5ccbf61..0000000000 --- a/user/wxFile/find.xpm +++ /dev/null @@ -1,99 +0,0 @@ -/* XPM */ -static char * find_xpm[] = { -"32 32 64 1", -" s background c None", -". c black", -"X c #FFFFFBEEFFFF", -"o c #AEBAAAAAAEBA", -"O c #4924618579E7", -"+ c #AEBA8A286185", -"@ c #BEFB8A2871C6", -"# c #71C682078617", -"$ c #4924410330C2", -"% c #492451446185", -"& c #49243CF338E3", -"* c #EFBEAAAA8E38", -"= c #AEBA71C66185", -"- c #9E79820769A6", -"; c #5144410338E3", -": c #514434D338E3", -"> c #D75CA28971C6", -", c #514430C230C2", -"< c #618541034103", -"1 c #BEFB8A286185", -"2 c #B6DA7DF75965", -"3 c #410338E330C2", -"4 c #514441034103", -"5 c #AEBA9A696185", -"6 c #9E7971C65144", -"7 c #9E7971C66185", -"8 c #DF7DAEBA9E79", -"9 c #38E338E330C2", -"0 c #410330C22081", -"q c #A69961855144", -"w c #618549244924", -"e c #30C230C22081", -"r c #38E32CB230C2", -"t c #8E3851445144", -"y c #28A228A230C2", -"u c #79E759654924", -"i c #A69969A65965", -"p c #8E3861855144", -"a c #71C661854103", -"s c #208120812081", -"d c #596538E330C2", -"f c #8E3871C65144", -"g c #71C651445144", -"h c #186118611861", -"j c #8E3861854103", -"k c #71C651444103", -"l c #71C641034103", -"z c #514451445144", -"x c #5144514430C2", -"c c #104010401040", -"v c #410330C230C2", -"b c #30C220812081", -"n c #618551444103", -"m c #79E779E779E7", -"M c #6185410330C2", -"N c #38E330C22081", -"B c #6185514430C2", -"V c #38E324922081", -"C c #514400000000", -"Z c #E79DD34CD75C", -"A c #C71BC71BBEFB", -"S c #8E387DF769A6", -"D c #208128A228A2", -"F c #30C238E34103", -" ........ XXXo ", -" ..O......O..Xoo+@ ", -" .#..$.###%..&.@+*X=- ", -" ...;;;.%$:;;;...XX>XXXo ", -" ...$$,$+XXX.##<#..o111@2 ", -" .&.34&+XXoo5.XX#%.$.@@5*X=6 ", -" ..3378X+@@++@@++@@..XX>XXoo+2 ", -".9.0qXXX2++12+XXX.X.w.XXo11@@1 ", -"..erX66==66=11111.o1..1111*XX>>t", -"..yuXi76678X+@2++@@+..:+XXX>+ppa", -"..sdXpppXX=++@=++=8X..w+fqppupge", -"..h=76.....pganknwBMz ", -"XM.w.h..Xb0,*6..v..CC.kklkB<<;m ", -"ZMzX#..;......9..N.rC...lBM c #8E3886178617", -", c #410341038E38", -" ", -" .X ", -" Xoo. ", -" O.Xo ", -" ++ +X@O#o ", -" +$$++ +$$%%#o ", -" +$$$$$+$$$@%#o& ", -" +$$$$$+$$$$O%#o$&& ", -" +$$$$$+$$$$$@##o$$$&+ ", -" +$$**$+$$$$$$%O#o$$$$$& ", -" +$$$$$+$$**$$+@%#o$$$$$$=", -" +$$**$+$$$$$*&$O%-o$$$$$-+", -" +$$$$$+$$**$$+$$@%o;+$$$*+;", -" +$$**$+$$$$$*+$$$O##o$+$*+;+", -" +$$$$$+$$**$$+$$$$@#oo$$++;+ ", -" +$$**$+$$$$$*+$$$$$%%#;$$$$++ ", -" +$$$$$+$$**$$+$$*-$$%#oo$$$$$$*", -"+$$$$$+$$$$$*+$$$$$*-O##;$$$$$-+", -"*:X$$+oo+$$$+$$**$$$$%%;o$$$$*+;", -"+;-:X$$+oo:&$$$$$**$$ooo;$$$*+;+", -" +;*:X$$*+$$**$$$$*-X%o$$$*+;+ ", -" +;**++$$$$$**$$$$.#o$$*+;+ ", -" +*+$$=:$$$$*-$$$##$>Xo+ ", -" +$$$$$:*$$$$-*$;X-+-+ ", -" *+$$$$$$$:*$$$$$;,+;& ", -" +*:+$$$$$$$*:$$$=+;+ ", -" +;o:+$$$$$$$$$*+;+ ", -" +;o:+$$$$$$*+;+ ", -" +;o:+$$$*+;+ ", -" +;o:+*+;+ ", -" +;-+;+ ", -" +;+ "}; diff --git a/user/wxFile/wxFile.cpp b/user/wxFile/wxFile.cpp deleted file mode 100644 index 5c93b977df..0000000000 --- a/user/wxFile/wxFile.cpp +++ /dev/null @@ -1,355 +0,0 @@ -/* - * Program: wxFile - * - * Author: Robert Roebling - * - * Copyright: (C) 1997, GNU (Robert Roebling) - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#ifdef __GNUG__ -#pragma implementation "wxFile.h" -#endif - -#include "wxFile.h" -#include "wx/dnd.h" - -#include "delete.xpm" -#include "home.xpm" -#include "prev.xpm" -#include "fileopen.xpm" -#include "exit.xpm" -#include "listview.xpm" -#include "iconview.xpm" -#include "reportview.xpm" -#include "treeview.xpm" -#include "commanderview.xpm" -#include "singleview.xpm" -#include "save.xpm" -#include "search.xpm" -#include "help.xpm" - -//----------------------------------------------------------------------------- -// main program -//----------------------------------------------------------------------------- - -IMPLEMENT_APP(MyApp) - -//----------------------------------------------------------------------------- -// MyFrame -//----------------------------------------------------------------------------- - -const int ID_FILECTRL = 1000; -const int ID_DIRCTRL = 1001; -const int ID_TOOLBAR = 1002; - -const int ID_QUIT = 100; -const int ID_ABOUT = 101; - -const int ID_LIST = 200; -const int ID_REPORT = 201; -const int ID_ICON = 202; - -const int ID_SINGLE = 203; -const int ID_TREE = 204; -const int ID_COMMANDER = 205; - -const int ID_HOME = 400; -const int ID_PARENT = 401; -const int ID_MOUNT = 402; -const int ID_SEARCH = 403; - -const int ID_DELETE = 501; -const int ID_MD = 502; - - -IMPLEMENT_DYNAMIC_CLASS( MyFrame, wxFrame ) - -BEGIN_EVENT_TABLE(MyFrame,wxFrame) - EVT_MENU (ID_ABOUT, MyFrame::OnAbout) - EVT_MENU (ID_QUIT, MyFrame::OnCommand) - EVT_MENU (ID_HOME, MyFrame::OnCommand) - EVT_MENU (ID_PARENT, MyFrame::OnCommand) - EVT_MENU (ID_LIST, MyFrame::OnView) - EVT_MENU (ID_REPORT, MyFrame::OnView) - EVT_MENU (ID_ICON, MyFrame::OnView) - EVT_MENU (ID_TREE, MyFrame::OnView) - EVT_MENU (ID_SINGLE, MyFrame::OnView) - EVT_MENU (ID_COMMANDER, MyFrame::OnView) - EVT_LIST_KEY_DOWN (ID_FILECTRL, MyFrame::OnListKeyDown) - EVT_LIST_DELETE_ITEM (ID_FILECTRL, MyFrame::OnListDeleteItem) - EVT_LIST_END_LABEL_EDIT (ID_FILECTRL, MyFrame::OnListEndLabelEdit) - EVT_LIST_BEGIN_DRAG (ID_FILECTRL, MyFrame::OnListDrag) - EVT_TREE_KEY_DOWN (ID_DIRCTRL, MyFrame::OnTreeKeyDown) - EVT_TREE_SEL_CHANGED (ID_DIRCTRL, MyFrame::OnTreeSelected) -END_EVENT_TABLE() - -MyFrame::MyFrame(void) : - wxFrame( (wxFrame *) NULL, -1, (char *) "wxFile", wxPoint(20,20), wxSize(470,360) ) -{ - wxMenu *file_menu = new wxMenu( "Menu 1" ); - file_menu->Append( ID_ABOUT, "About.."); - file_menu->Append( ID_QUIT, "Exit"); - - wxMenu *view_menu = new wxMenu( "Menu 2" ); - view_menu->Append( ID_LIST, "List mode"); - view_menu->Append( ID_REPORT, "Report mode"); - view_menu->Append( ID_ICON, "Icon mode"); - - wxMenuBar *menu_bar = new wxMenuBar(); - menu_bar->Append(file_menu, "File" ); - menu_bar->Append(view_menu, "View" ); - menu_bar->Show( TRUE ); - - SetMenuBar( menu_bar ); - - CreateStatusBar( 2 ); - - SetStatusText( "Welcome", 0 ); - SetStatusText( "wxFile v0.2 by Robert Roebling.", 1 ); - - wxToolBar *m_tb = CreateToolBar(); - m_tb->SetMargins( 2, 2 ); - - m_tb->AddSeparator(); - m_tb->AddTool( ID_QUIT, wxBitmap( exit_xpm ), wxNullBitmap, FALSE, -1, -1, (wxObject *) NULL, "Exit wxFile" ); - m_tb->AddSeparator(); - m_tb->AddTool( ID_PARENT, wxBitmap( prev_xpm ), wxNullBitmap, FALSE, -1, -1, (wxObject *) NULL, "Go to parent directory" ); - m_tb->AddTool( ID_HOME, wxBitmap( home_xpm ), wxNullBitmap, FALSE, -1, -1, (wxObject *) NULL, "Go to home directory" ); - m_tb->AddSeparator(); - m_tb->AddTool( ID_DELETE, wxBitmap( delete_xpm ), wxNullBitmap, FALSE, -1, -1, (wxObject *) NULL, "Delete file" ); - m_tb->AddSeparator(); - m_tb->AddTool( ID_MD, wxBitmap( fileopen_xpm ), wxNullBitmap, FALSE, -1, -1, (wxObject *) NULL, "Create directory" ); - m_tb->AddSeparator(); - m_tb->AddTool( ID_LIST, wxBitmap( listview_xpm ), wxNullBitmap, FALSE, -1, -1, (wxObject *) NULL, "List view" ); - m_tb->AddTool( ID_REPORT, wxBitmap( reportview_xpm ), wxNullBitmap, FALSE, -1, -1, (wxObject *) NULL, "Report view" ); - m_tb->AddTool( ID_ICON, wxBitmap( iconview_xpm ), wxNullBitmap, FALSE, -1, -1, (wxObject *) NULL, "Icon view" ); - m_tb->AddSeparator(); - m_tb->AddTool( ID_TREE, wxBitmap( treeview_xpm ), wxNullBitmap, FALSE, -1, -1, (wxObject *) NULL, "Tree view" ); - m_tb->AddTool( ID_COMMANDER, wxBitmap( commanderview_xpm ), wxNullBitmap, FALSE, -1, -1, (wxObject *) NULL, "Commander view" ); - m_tb->AddTool( ID_SINGLE, wxBitmap( singleview_xpm ), wxNullBitmap, FALSE, -1, -1, (wxObject *) NULL, "Single view" ); - m_tb->AddSeparator(); - m_tb->AddTool( ID_MOUNT, wxBitmap( search_xpm ), wxNullBitmap, FALSE, -1, -1, (wxObject *) NULL, "Mount devices" ); - m_tb->AddSeparator(); - m_tb->AddTool( ID_SEARCH, wxBitmap( save_xpm ), wxNullBitmap, FALSE, -1, -1, (wxObject *) NULL, "Find file(s)" ); - m_tb->AddSeparator(); - m_tb->AddTool( ID_ABOUT, wxBitmap( help_xpm ), wxNullBitmap, FALSE, -1, -1, (wxObject *) NULL, "About wxFile" ); - - m_tb->Realize(); - - m_splitter = new wxSplitterWindow( this, -1, wxPoint(0,0), wxSize(400,300), wxSP_3D ); - - m_leftFile = (wxFileCtrl *) NULL; - m_dir = new wxDirCtrl( m_splitter, ID_DIRCTRL, "/", wxPoint(10,45), wxSize(200,330) ); - - wxString homepath; - wxGetHomeDir( &homepath ); - - m_rightFile = new wxFileCtrl( m_splitter, ID_FILECTRL, homepath, wxPoint(220,5), wxSize(200,330) ); - - m_leftFile = new wxFileCtrl( m_splitter, ID_FILECTRL, homepath, wxPoint(0,5), wxSize(200,330) ); - m_leftFile->Show( FALSE ); - - m_leftFile->m_lastFocus = m_rightFile; - - int x = 0; - GetClientSize( &x, (int *) NULL ); - - m_splitter->SplitVertically( m_dir, m_rightFile, x / 3 ); - m_splitter->SetMinimumPaneSize( 10 ); -}; - -void MyFrame::OnView( wxCommandEvent &event ) -{ - int x = 0; - GetClientSize( &x, (int *) NULL ); - switch (event.GetId()) - { - case ID_LIST: - m_rightFile->ChangeToListMode(); - if (m_splitter->IsSplit() && (m_splitter->GetWindow1() == m_leftFile)) - m_leftFile->ChangeToListMode(); - break; - case ID_REPORT: - m_rightFile->ChangeToReportMode(); - if (m_splitter->IsSplit() && (m_splitter->GetWindow1() == m_leftFile)) - m_leftFile->ChangeToReportMode(); - break; - case ID_ICON: - m_rightFile->ChangeToIconMode(); - if (m_splitter->IsSplit() && (m_splitter->GetWindow1() == m_leftFile)) - m_leftFile->ChangeToIconMode(); - break; - case ID_TREE: - if (m_splitter->IsSplit()) - { - if (m_splitter->GetWindow1() != m_dir) - { - m_splitter->Unsplit( m_leftFile ); - m_dir->Show(TRUE); - m_splitter->SplitVertically( m_dir, m_rightFile, x/3 ); - }; - } - else - { - m_dir->Show(TRUE); - m_splitter->SplitVertically( m_dir, m_rightFile, x/3 ); - }; - break; - case ID_SINGLE: - if (m_splitter->IsSplit()) m_splitter->Unsplit( m_splitter->GetWindow1() ); - break; - case ID_COMMANDER: - if (m_splitter->IsSplit()) - { - if (m_splitter->GetWindow1() != m_leftFile) - { - m_splitter->Unsplit( m_dir ); - m_leftFile->ChangeToListMode(); - m_rightFile->ChangeToListMode(); - m_leftFile->Show(TRUE); - m_splitter->SplitVertically( m_leftFile, m_rightFile, x/2 ); - }; - } - else - { - m_leftFile->ChangeToListMode(); - m_rightFile->ChangeToListMode(); - m_leftFile->Show(TRUE); - m_splitter->SplitVertically( m_leftFile, m_rightFile, x/2 ); - }; - break; - default: - break; - }; -}; - -void MyFrame::OnCommand( wxCommandEvent &event ) -{ - switch (event.GetId()) - { - case ID_QUIT: - Close( TRUE ); - break; - case ID_HOME: - m_leftFile->m_lastFocus->GoToHomeDir(); - break; - case ID_PARENT: - m_leftFile->m_lastFocus->GoToParentDir(); - break; - default: - break; - }; -}; - -void MyFrame::OnAbout( wxCommandEvent &WXUNUSED(event) ) -{ - wxDialog dialog( this, -1, "About wxFile", wxPoint(100,100), wxSize(540,350), wxDIALOG_MODAL ); - - int w = 0; - int h = 0; - dialog.GetSize( &w, &h ); - - int x = 30; - int y = 20; - int step = 20; - - (void)new wxStaticBox( &dialog, -1, (const char*)NULL, wxPoint(10,10), wxSize(w-20,h-80) ); - - (void)new wxStaticText( &dialog, -1, "wxFile v0.1", wxPoint(240,y) ); - y += 2*step-10; - - (void)new wxStaticText( &dialog, -1, "Written by Robert Roebling, 1998.", wxPoint(x,y) ); - y += 2*step; - - (void)new wxStaticText( &dialog, -1, - "wxFile uses wxGTK, the GTK port of the wxWindows GUI-library.", wxPoint(x,y) ); - y += step; - (void)new wxStaticText( &dialog, -1, "http://www.freiburg.linux.de/~wxxt", wxPoint(x+50,y) ); - y += step; - (void)new wxStaticText( &dialog, -1, "http://web.ukonline.co.uk/julian.smart/wxwin", wxPoint(x+50,y) ); - y += 2*step; - - (void)new wxStaticText( &dialog, -1, "wxFile Copyright: GPL.", wxPoint(x,y) ); - y += 2*step; - (void)new wxStaticText( &dialog, -1, "For questions concerning wxGTK, you may mail to:", wxPoint(x,y) ); - y += step; - (void)new wxStaticText( &dialog, -1, "roebling@ruf.uni-freiburg.de", wxPoint(x+50,y) ); - - (void) new wxButton( &dialog, wxID_OK, "Return", wxPoint(w/2-40,h-50), wxSize(80,30) ); - - dialog.Fit(); - - dialog.ShowModal(); -}; - -void MyFrame::OnListKeyDown( wxListEvent &event ) -{ - m_rightFile->m_lastFocus->OnListKeyDown( event ); -}; - -void MyFrame::OnListDeleteItem( wxListEvent &event ) -{ - m_rightFile->m_lastFocus->OnListDeleteItem( event ); -}; - -void MyFrame::OnListEndLabelEdit( wxListEvent &event ) -{ - m_rightFile->m_lastFocus->OnListEndLabelEdit( event ); -}; - -void MyFrame::OnListDrag( wxListEvent &event ) -{ - wxFileDataObject data; - data.AddFile( "/home/karl/test.txt" ); - - wxDropSource drag( data, m_leftFile->m_lastFocus ); - drag.DoDragDrop(); -}; - -void MyFrame::OnTreeSelected( wxTreeEvent &event ) -{ - wxDirInfo *info = (wxDirInfo*) event.m_item.m_data; - if (info) SetStatusText( info->GetPath() ); -}; - -void MyFrame::OnTreeKeyDown( wxTreeEvent &event ) -{ - wxDirInfo *info = (wxDirInfo*) event.m_item.m_data; - if (info) m_rightFile->GoToDir( info->GetPath() ); -}; - -//----------------------------------------------------------------------------- -// MyApp -//----------------------------------------------------------------------------- - -MyApp::MyApp(void) : - wxApp( ) -{ -}; - -bool MyApp::OnInit(void) -{ - wxFrame *frame = new MyFrame(); - frame->Show( TRUE ); - - return TRUE; -}; - - - - - diff --git a/user/wxFile/wxFile.h b/user/wxFile/wxFile.h deleted file mode 100644 index 9337c77db1..0000000000 --- a/user/wxFile/wxFile.h +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Program: wxFile - * - * Author: Robert Roebling - * - * Copyright: (C) 1997, GNU (Robert Roebling) - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#ifndef __WXFILEH__ -#define __WXFILEH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/wx.h" -#include "wx/dcscreen.h" -#include "wx/splitter.h" -#include "wx/toolbar.h" -#include "filectrl.h" -#include "dirctrl.h" - -//----------------------------------------------------------------------------- -// derived classes -//----------------------------------------------------------------------------- - -class MyFrame; -class MyApp; - -//----------------------------------------------------------------------------- -// MyFrame -//----------------------------------------------------------------------------- - -class MyFrame: public wxFrame -{ - DECLARE_DYNAMIC_CLASS(MyFrame) - - public: - - MyFrame(void); - void OnCommand( wxCommandEvent &event ); - void OnAbout( wxCommandEvent &event ); - void OnView( wxCommandEvent &event ); - void OnListKeyDown( wxListEvent &event ); - void OnListDeleteItem( wxListEvent &event ); - void OnListEndLabelEdit( wxListEvent &event ); - void OnListDrag( wxListEvent &event ); - void OnTreeSelected( wxTreeEvent &event ); - void OnTreeKeyDown( wxTreeEvent &event ); - - wxSplitterWindow *m_splitter; - wxFileCtrl *m_rightFile; - wxFileCtrl *m_leftFile; - wxDirCtrl *m_dir; - - DECLARE_EVENT_TABLE() -}; - -//----------------------------------------------------------------------------- -// MyApp -//----------------------------------------------------------------------------- - -class MyApp: public wxApp -{ - public: - - MyApp(void); - virtual bool OnInit(void); -}; - -#endif // __WXFILEH__ diff --git a/user/wxLayout/.cvsignore b/user/wxLayout/.cvsignore deleted file mode 100644 index 4daa84b813..0000000000 --- a/user/wxLayout/.cvsignore +++ /dev/null @@ -1,2 +0,0 @@ -Linux -linux-gnu diff --git a/user/wxLayout/Makefile b/user/wxLayout/Makefile deleted file mode 100644 index bccce53f76..0000000000 --- a/user/wxLayout/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../../setup/general/makeapp diff --git a/user/wxLayout/Makefile.in b/user/wxLayout/Makefile.in deleted file mode 100644 index dbf3623736..0000000000 --- a/user/wxLayout/Makefile.in +++ /dev/null @@ -1,26 +0,0 @@ -# WXXT base directory -WXBASEDIR=@WXBASEDIR@ - -# set the OS type for compilation -OS=@OS@ -# compile a library only -RULE=bin - -# define library name -BIN_TARGET=wxLayout -# define library sources -BIN_SRC=\ -wxLayout.cpp kbList.cpp wxlist.cpp wxlwindow.cpp wxlparser.cpp - -#define library objects -BIN_OBJ=\ -wxLayout.o kbList.o wxllist.o wxlwindow.o wxlparser.o - -# additional things needed to link -BIN_LINK= - -# additional things needed to compile -ADD_COMPILE= - -# include the definitions now -include ../../../template.mak diff --git a/user/wxLayout/Micon.xpm b/user/wxLayout/Micon.xpm deleted file mode 100644 index 153d3a4a7b..0000000000 --- a/user/wxLayout/Micon.xpm +++ /dev/null @@ -1,309 +0,0 @@ -/* XPM */ -static char *Micon_xpm[] = { -/* width height num_colors chars_per_pixel */ -" 64 48 254 2", -/* colors */ -".. c #040207", -".# c #6482b4", -".a c #2a4471", -".b c #9cc2d4", -".c c #4c627f", -".d c #94918e", -".e c #0c243e", -".f c #4c4a4a", -".g c #3c63a8", -".h c #7ca2ac", -".i c #24447e", -".j c #2c2c2c", -".k c #5482cc", -".l c #d4d0d0", -".m c #99aab7", -".n c #5c74b1", -".o c #2c5287", -".p c #1a2a4d", -".q c #acdefc", -".r c #646362", -".s c #7491d0", -".t c #bcc4bf", -".u c #5273aa", -".v c #b4b1aa", -".w c #3d5583", -".x c #828482", -".y c #8c9490", -".z c #6f7369", -".A c #1c365c", -".B c #041220", -".C c #2c325c", -".D c #94b6e4", -".E c #3e4242", -".F c #648edc", -".G c #d4f2fc", -".H c #cbd3d1", -".I c #3c54a1", -".J c #243244", -".K c #4c69aa", -".L c #7c8ba2", -".M c #4c5d84", -".N c #34497f", -".O c #1c2228", -".P c #6484c5", -".Q c #6a7788", -".R c #9ba09b", -".S c #2c3634", -".T c #acb6b4", -".U c #141517", -".V c #a0c4e8", -".W c #515753", -".X c #5c76cc", -".Y c #1b2f51", -".Z c #4472c4", -".0 c #7c8a88", -".1 c #5a6262", -".2 c #a4aba6", -".3 c #bcc8d5", -".4 c #7494df", -".5 c #84b2d4", -".6 c #6784d9", -".7 c #acd3e4", -".8 c #304b72", -".9 c #2c4c81", -"#. c #3c5b93", -"## c #5468bc", -"#a c #b5bbb0", -"#b c #1c3765", -"#c c #444e44", -"#d c #ecece8", -"#e c #7ca3dc", -"#f c #d4deda", -"#g c #345495", -"#h c #1c2641", -"#i c #94a6cc", -"#j c #243252", -"#k c #a7acb5", -"#l c #5c7ab3", -"#m c #0a152d", -"#n c #c4def0", -"#o c #686e84", -"#p c #a4a19e", -"#q c #3e3c3a", -"#r c #84aaee", -"#s c #040a09", -"#t c #3c6294", -"#u c #7c929c", -"#v c #3c5c9d", -"#w c #4e6ead", -"#x c #344458", -"#y c #446bae", -"#z c #696b6a", -"#A c #547cbc", -"#B c #789ae3", -"#C c #112a44", -"#D c #4f504b", -"#E c #2c3140", -"#F c #8c8688", -"#G c #5e5c5c", -"#H c #8c8c80", -"#I c #cccccc", -"#J c #4c6398", -"#K c #c7cbc4", -"#L c #5174b8", -"#M c #3d558e", -"#N c #2c3c5f", -"#O c #acbad4", -"#P c #3f495a", -"#Q c #354e82", -"#R c #6a8ac7", -"#S c #767c84", -"#T c #30374b", -"#U c #b1c9e7", -"#V c #1b315d", -"#W c #537bcb", -"#X c #c4bec0", -"#Y c #243e6a", -"#Z c #969892", -"#0 c #7e858e", -"#1 c #94b3f1", -"#2 c #c2d4e8", -"#3 c #141e35", -"#4 c #acb2ac", -"#5 c #c4ced0", -"#6 c #2b4d8e", -"#7 c #445ca2", -"#8 c #2c3e6f", -"#9 c #14243e", -"a. c #f1fdfa", -"a# c #8c9abc", -"aa c #d7f9f9", -"ab c #5a697e", -"ac c #c7ebf7", -"ad c #bceefc", -"ae c #b4c2b4", -"af c #889cf0", -"ag c #d8d6c8", -"ah c #748598", -"ai c #b4d2fc", -"aj c #4c5eb0", -"ak c #3f4f64", -"al c #8492bc", -"am c #161d1e", -"an c #5d7dcf", -"ao c #5c86d6", -"ap c #9cacc8", -"aq c #6c92e6", -"ar c #e4ecec", -"as c #89b7ef", -"at c #a6d0f8", -"au c #e4e2e0", -"av c #8c98a4", -"aw c #ccdaec", -"ax c #94bee4", -"ay c #232b2b", -"az c #1c2b43", -"aA c #0c1c33", -"aB c #99bcf7", -"aC c #6c72bc", -"aD c #7c766c", -"aE c #a4a2b4", -"aF c #6c7eac", -"aG c #e4d6dc", -"aH c #e4fefc", -"aI c #84aeb4", -"aJ c #b4b6bf", -"aK c #345b9b", -"aL c #bce2ef", -"aM c #ccc6bc", -"aN c #82a3ef", -"aO c #7c7b77", -"aP c #040c1e", -"aQ c #6c7e94", -"aR c #9ca69c", -"aS c #acbebc", -"aT c #a2cafa", -"aU c #545e5f", -"aV c #5c6a74", -"aW c #cae6ee", -"aX c #5c6e7c", -"aY c #5474c6", -"aZ c #fcfaf4", -"a0 c #344672", -"a1 c #446ec4", -"a2 c #b4c4d4", -"a3 c #313231", -"a4 c #9cb2b4", -"a5 c #345a8c", -"a6 c #7496d4", -"a7 c #0c1a24", -"a8 c #444a47", -"a9 c #343e3c", -"b. c #dce6e4", -"b# c #a9b2bc", -"ba c #a6a6a3", -"bb c #446a9c", -"bc c #c4f2f8", -"bd c #445667", -"be c #727475", -"bf c #6a7896", -"bg c #9aa0a7", -"bh c #9ec4fa", -"bi c #545a61", -"bj c #6474e0", -"bk c #546674", -"bl c #b8bcbd", -"bm c #5d7cbf", -"bn c #515255", -"bo c #979a9f", -"bp c #849cd0", -"bq c #546a8f", -"br c #d7d8d5", -"bs c #688ada", -"bt c #4f6ebe", -"bu c #343e4c", -"bv c #dafefc", -"bw c #acd6fc", -"bx c #b4b6b0", -"by c #8c9a94", -"bz c #203a44", -"bA c #a4b6c8", -"bB c #4c6a98", -"bC c #040214", -"bD c #5c74be", -"bE c #4c5c98", -"bF c #24325c", -"bG c #8c8c8f", -"bH c #4464a7", -"bI c #2c457e", -"bJ c #5c83c7", -"bK c #34538a", -"bL c #b4dff1", -"bM c #7c92d4", -"bN c #c4c4c0", -"bO c #243759", -"bP c #0c151e", -"bQ c #9cb2d4", -"bR c #6c8fd3", -"bS c #546aab", -"bT c #848c9f", -"bU c #242420", -"bV c #6c83c0", -"bW c #343935", -"bX c #848b89", -"bY c #acaca6", -"bZ c #c4cad0", -"b0 c #445c90", -"b1 c #243865", -"b2 c #dce0dc", -"b3 c #747b76", -"b4 c #8cacee", -"b5 c #0c0c08", -"b6 c #446299", -"b7 c #8493a4", -/* pixels */ -"................................................................................................................................", -"..................................bC....bC....bC..bC....bC..bCbCbCbC..bCbC..bC..bC..bC..bCbC..bC..bC....bC....bC................", -"..#9#C#h#C.p.Y.Y.Y#j.Y.Y.Y#V#V#Vb1bFb1b1#8#Y.a.a#Q#Q.a.N#Q.abI.i.9bI#Q#MbK#M.wb0#M.9.N.N.N.9.abI.a#Y#Yb1b1#b#bb1b1b1#V#V#V#Vaz..", -"..#h#C.p.p#9.Y.Y#j.AbObO.A.AbO.Ab1#Y#Y#8.a.aa0.N.8.w.w#QbK.w.ibI.9#6#Q#.#Mb0b0#J#MbK#M.NbK.N.9.NbI.N#YbIb1#Y#8#8bOb1bO#j#V#Caz..", -"..#9.e#h#C.p.p.Y.YbO.A#b#N.a#8#Y#bb1#8#Y.Na0.9.8#Q.w.Mb0#Q#MbK.9bK#g#6.Kb6#J#J#wb0#M#MbKbK#Q#M.9bI.N.N.a.N.a.a.ab1b1#V.Y#V.Y.Y..", -"..#9#C.p#h.p.p.p.Y#VbO#b.a.ia0.9#Q.N#YbI.a.N.N.N.w#Q.wb6b6b0b6#.#g#v#M.K#w#L.n.n#vbH#.bH.Ib6aK#MbK.9#Q#Q#Q#Q.a#Yb1.AbF#VbO.Y#j..", -"..#h#h.p.p.p.Y.p#bbF#bb1#Y.a.8.N#Q#M#M#Q.N.9#QbK#M#Mb0b0.ubB.K.K#..K#v#w.nbmbV.nbHbS#w#7#w#vb0#.#M#Mb0#M#Q.9#Y#Yb1#Yb1b1.Y.Y.Y..", -"..#h#9.p.p.p#V#V#b#b#Y#Y.a.ibI.N.w#Mb0b6#7#M#Q#QbK#.b6b6bq#l.n#LbHbH#y#L#R.s.4#AaY#w#w#L.K.KbH.g.KbH#v#M.9bI.i.8.a#Yb1.A.A.A#j..", -"..#h#C.p.p.Y#V#V#bb1.abIbI#6.o.o#g.oaK#tbH.K.KbH#M.Iaj.K#w.n#R.P#Rbt#W#W.4bpb4aoanbsaobm#La1#L#A#L.ga5bK#g#g#Q.8#Y#bb1b1bOb1bO..", -"...p.p.Y#V.Y#V.Ab1#YbI.9#Q#Q#M#M#7#7#M#v.M#J.K.K.nbS#MbH.nbm.#b4.s#Baq#Wb4aB#1aqaq#R.P.##l#RbmbD.K#7#J#J#.#Q.9.i.N.a#Y#Yb1.Aaz..", -"..az#C#V#j#V.A#N#8.N.N.ibObz#T.J#E.J#T#Tbu.Y.8#..K.nbVbD#wbm.4a6aTb4aoaNaTaiasaNa6.n.m.3bZ#2bN.3aR#2#2.3#J#Q#MbK.8.a#8#b.AbO#j..", -"..#h.p.p.Y.Yb1bO.ibI#g#Mbd#hambU.jbW.Sa3aybP.Y.9bHbH.ubm#BbM.P#rbhbc.qasbL.G.VbhaBbpbZaJbobxbl#I#a#abXbP#V.9#6.NbI#8#8#bbF#V#j..", -"..az#C.Y.Y.Y#bb1.abI#Q.oaj#Pa3a3aya3a3bW.Eayb0.K.g#y.K#LanbRbhaTaxbLbvbLbvbvaLadaTai.mbobYba#Xbl.H#I#P#m#.#M#QbIbI#Y#Yb1#b#V#j..", -"..az.p.p#VbObO#Y.a.N#g#g.I#xbW.j.ja3.E.Ebnbib0bmananbm#wanbs.4asacbLbvaHa.aHbvbc.7aIbY#p#pblbl#Kbe#F#k#9#..I#g#6.i#8#8b1b1.A#j..", -"..#h#C.p.YbO#bb1a0bIbKbK#7#xaya3.jaya3#q.Wbn.J.wbD#Lbm.X#Bb4bhat.b#na.a.a.aZaHaHaW#k#a.vagbNaObl#I.vb3#3#w.K#7#v#M#QbIa0#Y#N#N..", -"..#haz.p#V.YbO#Y#Y.N.9#g#7#P.EbUa8#q#D.f.f.fbi#hbB#LaY.n.P#R#e.5.7aLa.a.aZaZa.a.aS#5#p.d#p.t.l.HbYaObo.Y#w.Kb6#.#M.Na0.a#8#NbO..", -"..#h#C.YbO#V#N#Y.8#Q#g#t##ak.j.W.f.Wbn#Gbe#zbnaU.M#Ra6#eaNb4bh.7bLaWa.aZaZaZa.br.H.2ba.H.T#fau.H.H#p.x#3#w.K#tb0#Q#Q.a#8#Nb1bO..", -"..az#j#j.Ab1#N.a.8#Q#.bb##ak.Ebnbn.1.Ua8.zaO#z.xbubqbsbR.saqaN#1bw.7aaaHa.b.a.a4bZ#k#dbgbP.H#IbG#4bY#o#9#w.K#7b0#Q.8.a#8#NbObO..", -"..az#j.Y.YbO#8.a.8#Q#7#t##bd.r#D#D.rbPaV#G#z.x.y#z.p.u#W.6#B#r#eaTaTaLaWaaaI#5#aau#XbraU#8.HbN.T.RbY#0#9#w.Kb6#M#Q#Qa0#Y#Y#N#N..", -"..#h#j.YbOb1bO#Ya0.NbKa5aj.c.f#G#z.1#3.Mbe#zaO.x#pbT#.bmbsbs.F#1#easat.Gbc.hb.b2aragbgbPaC.3#k.v#4babe#9.KbH#7b0#Qak.a.i#N#Y#T..", -"..az.Y#j.Y.Ab1#Y.8.N#gbK.IaX.r.raDaV.Bb0bfbeb3bab3#HazbBaYbsaqbRaf#1.DaB#na2#K#4b3.ybC.Yaf#k#Z.y.d#p#S#3#v#7#M#g.N.N.a#N#Y#NbO..", -"..#h.p#C#jbFbO#8.a.NbK#.#7bk.z.zb3#H#9aKbm#J.y#Hbablb#.e.PaqbmbsaNaN#1aB#2bZ.x.2aub3.AbSbjapbobobo.rbn#9#v#gbK.9bI.a.a#Yb1bObO..", -"..#haz.YbF#VbO#Y.abI#QaK.I.Q.z.WaO#za7b0an.ub#.R.y.R#XbXbEbtbJbR#Bbsb4.D.3.v#p#za3#s.ubJbj#u.WbWb3.Rbe#9#v#v#g.9bI#Yb1b1#b.A#j..", -"..#h#C.p#C.Y#bbO#YbI.9.o.Iab#Zb3.x.da7bK#WbmalbTae.t#F#Gaz.nbsaqbJ.6#R#U#aaMbx#KbPbz#laoanb#ba.2.RbG#G#9#v#v#g.9bI.ab1#bbF#Vaz..", -"..#haz.p.p#V#Vb1#Y.a#6bK#7bk.1#z#Z.y#m#.a1a1bq.LbX#HblbN.3#N.PaobJafbQ.3.tblbx.TazbB.X.kaYb7bG.d.x#ZaV#3bH#v#Q.NbI#8b1b1.A.Y.Y..", -"..az#h#C.p#VbO#b#YbIbK#g#7aQ.d.y.RbX#mbK#y#ybt.#bZ#IaM.l.2bdbmanaobMap.t.2bY.2.ObO.s.X#W.6bX#F.yaOaD#G#9b6#7.I#Q.a.ab1#bbF.Y.Y..", -"..#9#h.p.p#V#Vb1.a.NbK#..IaQ.xbob3aO#m.9#L.ZaY#w#iaJagaGbr#5.8aF.4a#blbN#Z#Z.WaP#l#l.6#WaY#0aO.y.xb3#PaA#7b6bK#QbI#8b1bO.A#V.Y..", -"..#h.p#C#V.YbO#Y.abI.9aK.Ibf#D.1bYbY#mbK#ybt#ybHbSbT#aba.tbx#S.M#B.y#kbxbYbYaP.YbR#A.6bmbt.Lb3#z.W#Dbn#3bK#.#M#Q.N#Yb1b1#V.Yaz..", -"..#h#C.p#V.p#b.A.a#Y#Q#..Ib7#kbe#4#pa7bK#ybH.g.gbHbfbZbN#4bNbgakah#Zbg#F.x.1#9bK.P#A.X.#btbTaO.W.r.ra8.e#Q.o#Q#Q.a.ab1bO.A.Yaz..", -"..#h.p#h#C#VbOb1#YbI.9.o.I.L#H#Z.2.vaA#QbHaK.g.g#y#7#nbr#a.H.vaE.zaU#4blbebCbIaK#Lbm#LbJbtaXaO.z#z#G.EaA#g#Q.9bI.a.a#Nb1#jbO.Y..", -"..#h#C#h#V.p#V.A.a#8.9.9.Iah#4bY#4bGbP#QaKaKaKaK#7#wbEbg.z.zay.E#a#K.2#ZbCbO#v#gbH.Xbb.ubDbk#z.r#c.f.E#9#Q#6bI.i#8b1#YbO.AbO.J..", -"..#h.p#9.p.p#b.A#8#Y.9.9.I.0.R.2bN#XbP.NaK.IaK#v.IbS.KaQaR.Wbl#K.RbY.R.y#9#M#gaKbH.Kbb#yaCbk.r#Ga8#D#TaAbK#6.i.a#Y#bbObO.Y#jaz..", -"..#9#9.p.p.Y#V.Ab1#YbI.9#7a#bn.Hb2#FaP.a.I#g#g#g#v#7bHb0.L.HbY.y.0#ZaObC.8b0#g#6aKbH#wbb#LaX#D#q.Ea3.UaAbK#QbI#Y#Y#bbO.AbO.Y.Y..", -"..#9#h#h#C.p.Y#V#Y#Y#6.obEbk.H.2bUbe#m.a#g#g#Q#M#M#vaK#6bq#k.d.x.y#Z..az#M#v.o#6.o#v#L#tbSbda8bU.Ub5.O#3#6#6bI.ib1#bbF.Y#C.Yaz..", -"..#9#9.p.p.p#Vb1#Y.N#6.o#Q#O.R.xaM.HaPa0bK#Q#Q#M#M#MbK#gb0akb3aO.xbX#9#x#v#g.N#6.9.wbH#yb0bn#D.f#q.j.U#3.N#6#8.i#b#b.Y.p.Y.paz..", -"..#9#h#9.p.p#V#bb1#8bI#g.NbAb.br.t#H#m#Y#Q#g#Q.9.9.N#6.o#gb0avbG#Z...Y.w#g#6bIbIbIbK#v.K#Ma7#s#s....#haA#Q.NbI#Yb1#V#V#V.p.paz..", -"..#9#9#9.p.p#VbO#Y#8#6.i#M.Q#z.H#f#K.B#Y#6.9.N.9bIbI.9.9#M#M#JbybP.B.Nb0.NbIbI#Y.ibI#vbH.wbubW.E.Sa3a7#m.o#Q#Y#Yb1#V#V#C.p.p.e..", -"..#3#9#9#9.Y#V#VbF#Y#8#6ak#O#db2br.HaP#N.N#QbIbI.a#Y.i.8#M#Qa0.L.B.p#Q#Q.i.i.i#Y.ibI#Q#..c.E.ja3a3bWambP.N.9#Y#Y#b#b#V.p.p.p#9..", -"..#3.e#9.p.p.Y.Yb1b1#Y#.#Ubgbl.T#S..aw#obI.a.a#8#Y#Y.a#YbI.Na0.8bO#8a0#Qa0#8b1#Y#Y#8#Q.ibO#Ta9a9bWa3ay#Eb1.a.ab1#V#V.Y.p.p.e#9..", -"..#3#9.p#h#C.p.Y#Vb1#b#V.a.Y.Y.Y#CazbO.eb1#8#Y#b#bb1b1#8bI#Y.8.abIb1#Y.Nb1#Y#Y#Y#b#Y.9.8.8.C.JbO#j.Yaz#C.p.Y#bb1#V.p.p.p#C.e#9..", -"..#9#9#9.p#9.p.Y.Y#V#b#bb1#8.i#8.a.a#Y#Y#Y#Yb1b1#b#bb1#N#Y#8b1#Y#Yb1#8#Yb1#b#b#b#bb1#Y.N.w.8.N.8#Q.8.i.a#b#Y#bbO#V.Y.p#C.p.p#9..", -"..#3#9.e#9.p.p#9#C.Y#V#b#b#b#Y#Y#Y#Y#Y#Yb1b1bO#V.Y#j#Vb1b1bObObObO.Ab1#N.A.AbF#V#V#V#b#8.aa0.a.ibI.8#Y#Yb1#V#V#V#V.p.p#9.p.e#9..", -"..#3#3#9.e.e.p.p.p.p#V.Y#b#b#Vb1#b#Yb1.A#V.Y.Y.Y.Y.Y.A#j.YbO#VbO.Y#jbO#b#j#j#V.Y#V#V#bb1#Y.a#Yb1.a#8b1b1#b.A#V#C.p.p.p.p.e.e#9..", -"..#3aAaA#3#9.e.e#9#C#C.Y.p.Y#V#VbF#VbO.Y#j.p.p.Y#C#j.Y#j.Y#j.Y#j.Y.YbO.Y#j.Y.p.p.p.p.Y#VbOb1#NbObOb1b1.A#V.p.p.p#C.p#9#9#9.e#9..", -"..#3#9.e#3aA#9.e#9.p.p.e.p.p.p#V#j.Y.Y.Y#9.p.p#9.Yaz.Yaz.paz.Y.paz.Y.Y#j#C.p#C.p#C#C.p#V#VbO#VbF#V#j#V#j.p.p.p#C.p#9#C#C#9.e#9..", -"..#3aA#9aA#9aA.e#9.e#9#9.p.p.p.p#Caz.Y#C.p.p#9.p#C#Caz.p#Caz.Y#C.p#9#j.p#h.p#C#C#C.e.p#9.Y#j.Y.Y.p.p.p#C.p.p#9#9#9#9#9.e#9.e#3..", -"..#3.e#3.e#3.e#9#9aA#9.e.e.e.p#C.p#h#Caz#9.p.p.p#h.Y#9.p.p#C.paz.p#h.Yaz#9.p#C.e.e.e.p.p#9.p.paz#C.paz.Y#9.p.e#9.e#9#9#9#9aA#9..", -"......bC..bC..bCbCbCbCbCbCbC..bC....bC..bCbCbCbCbC..bC....bC......bC..bCbCbCbCbCbCbCbCbCbCbC....bC......bCbC..bC..bC..bC........" -}; diff --git a/user/wxLayout/README b/user/wxLayout/README deleted file mode 100644 index 5539268bc7..0000000000 --- a/user/wxLayout/README +++ /dev/null @@ -1,50 +0,0 @@ - -README for wxLayout classes ---------------------------- - -All the source in this directory is copyrighted under the -GPL (GNU GENERAL PUBLIC LICENSE), version 2, -by Karsten Ballueder . - - -This is still work in progress, so if you want to make any significant -changes, please get in touch with me before. - -There are three building blocks for rich text editing: - -wxllist : - -The wxLayoutList layout engine. It is a linked list of wxLayoutObjects -which can arrange and display them on any wxDC. I am trying to keep -this class as simple as possible, to be just the core layout -engine. All "convenience" functions should be defined in classes built -on top of this. -The wxLayoutList is derived from kbList, a double-linked list with an -interface modelled after the STL list. As wxLayoutList depends on the -way kbList treats iterators (i.e. the iterator value after an insert() -or erase() operation), I don't feel like rewriting it for wxList. - -wxlwindow : - -Contains a class wxLayoutWindow, derived from wxScrolledWindow which -can directly be used as a rich-text display or editing window. The -function responsible for keyboard handling is virtual and can be -overloaded for different keybindings. wxLayoutWindow can sent fake -menu-events to the application to react to the user clicking on -objects. - -wxlparser: - -Contains several high level functions operating on -wxLayoutList. Currently implemented is inserting of text (including -linebreaks) and export of objects, text or html. -Planned for the future is an html parser for importing html. - - -wxLayout.cpp is a simple test program. It will export Text and HTML to -stdout and demonstrate some of the features and bugs of wxLayoutList. - -There are still things to do and I'm working on them. :-) - -Karsten Ballueder 29 June 1998 - diff --git a/user/wxLayout/kbList.cpp b/user/wxLayout/kbList.cpp deleted file mode 100644 index 23ead752a5..0000000000 --- a/user/wxLayout/kbList.cpp +++ /dev/null @@ -1,336 +0,0 @@ -/*-*- c++ -*-******************************************************** - * kbList.cc : a double linked list * - * * - * (C) 1998 by Karsten Ballüder (Ballueder@usa.net) * - * * - * $Id$ * - * * - * $Log$ - * Revision 1.3 1998/11/19 20:34:50 KB - * fixes - * - * Revision 1.8 1998/09/23 08:57:27 KB - * changed deletion behaviour - * - * Revision 1.7 1998/08/16 21:21:29 VZ - * - * 1) fixed config file bug: it was never created (attempt to create ~/.M/config - * always failed, must mkdir("~/.M") first) - * 2) "redesign" of "Folder properties" dialog and bug corrected, small change to - * MInputBox (it was too wide) - * 3) bug in ProvFC when it didn't reckognize the books as being in the correct - * format (=> messages "can't reopen book") corrected - * 4) I tried to enhance MDialog_About(), but it didn't really work... oh well, - * I've never said I was an artist - * - * Revision 1.6 1998/07/08 11:56:56 KB - * M compiles and runs on Solaris 2.5/gcc 2.8/c-client gso - * - * Revision 1.5 1998/06/27 20:07:18 KB - * several bug fixes for kbList - * started adding my layout stuff - * - * Revision 1.1.1.1 1998/06/13 21:51:12 karsten - * initial code - * - * Revision 1.4 1998/05/24 14:48:00 KB - * lots of progress on Python, but cannot call functions yet - * kbList fixes again? - * - * Revision 1.3 1998/05/18 17:48:34 KB - * more list<>->kbList changes, fixes for wxXt, improved makefiles - * - * Revision 1.2 1998/05/14 16:39:31 VZ - * - * fixed SIGSEGV in ~kbList if the list is empty - * - * Revision 1.1 1998/05/13 19:02:11 KB - * added kbList, adapted MimeTypes for it, more python, new icons - * - *******************************************************************/ - -#ifdef __GNUG__ -# pragma implementation "kbList.h" -#endif - -#include "kbList.h" - - -kbListNode::kbListNode( void *ielement, - kbListNode *iprev, - kbListNode *inext) -{ - next = inext; - prev = iprev; - if(prev) - prev->next = this; - if(next) - next->prev = this; - element = ielement; -} - -kbListNode::~kbListNode() -{ - if(prev) - prev->next = next; - if(next) - next->prev = prev; -} - - -kbList::iterator::iterator(kbListNode *n) -{ - node = n; -} - -void * -kbList::iterator::operator*() -{ - return node->element; -} - -kbList::iterator & -kbList::iterator::operator++() -{ - node = node ? node->next : NULL; - return *this; -} - -kbList::iterator & -kbList::iterator::operator--() -{ - node = node ? node->prev : NULL; - return *this; -} -kbList::iterator & -kbList::iterator::operator++(int /* foo */) -{ - return operator++(); -} - -kbList::iterator & -kbList::iterator::operator--(int /* bar */) -{ - return operator--(); -} - - -bool -kbList::iterator::operator !=(kbList::iterator const & i) const -{ - return node != i.node; -} - -bool -kbList::iterator::operator ==(kbList::iterator const & i) const -{ - return node == i.node; -} - -kbList::kbList(bool ownsEntriesFlag) -{ - first = NULL; - last = NULL; - ownsEntries = ownsEntriesFlag; -} - -void -kbList::push_back(void *element) -{ - if(! first) // special case of empty list - { - first = new kbListNode(element); - last = first; - return; - } - else - last = new kbListNode(element, last); -} - -void -kbList::push_front(void *element) -{ - if(! first) // special case of empty list - { - push_back(element); - return; - } - else - first = new kbListNode(element, NULL, first); -} - -void * -kbList::pop_back(void) -{ - iterator i; - void *data; - bool ownsFlagBak = ownsEntries; - i = tail(); - data = *i; - ownsEntries = false; - erase(i); - ownsEntries = ownsFlagBak; - return data; -} - -void * -kbList::pop_front(void) -{ - iterator i; - void *data; - bool ownsFlagBak = ownsEntries; - - i = begin(); - data = *i; - ownsEntries = false; - erase(i); - ownsEntries = ownsFlagBak; - return data; - -} - -void -kbList::insert(kbList::iterator & i, void *element) -{ - if(! i.Node()) - return; - else if(i.Node() == first) - { - push_front(element); - i = first; - return; - } - i = kbList::iterator(new kbListNode(element, i.Node()->prev, i.Node())); -} - -void -kbList::doErase(kbList::iterator & i) -{ - kbListNode - *node = i.Node(), - *prev, *next; - - if(! node) // illegal iterator - return; - - prev = node->prev; - next = node->next; - - // correct first/last: - if(node == first) - first = node->next; - if(node == last) // don't put else here! - last = node->prev; - - // build new links: - if(prev) - prev->next = next; - if(next) - next->prev = prev; - - // delete this node and contents: - // now done separately - //if(ownsEntries) - //delete *i; - delete i.Node(); - - // change the iterator to next element: - i = kbList::iterator(next); -} - -kbList::~kbList() -{ - kbListNode *next; - - while ( first != NULL ) - { - next = first->next; - if(ownsEntries) - delete first->element; - delete first; - first = next; - } -} - -kbList::iterator -kbList::begin(void) const -{ - return kbList::iterator(first); -} - -kbList::iterator -kbList::tail(void) const -{ - return kbList::iterator(last); -} - -kbList::iterator -kbList::end(void) const -{ - return kbList::iterator(NULL); // the one after the last -} - -unsigned -kbList::size(void) const // inefficient -{ - unsigned count = 0; - kbList::iterator i; - for(i = begin(); i != end(); i++, count++) - ; - return count; -} - - - - - - - -#ifdef KBLIST_TEST - -#include - -KBLIST_DEFINE(kbListInt,int); - -int main(void) -{ - int - n, *ptr; - kbListInt - l; - kbListInt::iterator - i; - - for(n = 0; n < 10; n++) - { - ptr = new int; - *ptr = n*n; - l.push_back(ptr); - } - - i = l.begin(); // first element - i++; // 2nd - i++; // 3rd - i++; // 4th, insert here: - ptr = new int; - *ptr = 4444; - l.insert(i,ptr); - - // this cannot work, because l.end() returns NULL: - i = l.end(); // behind last - i--; // still behind last - l.erase(i); // doesn't do anything - - // this works: - i = l.tail(); // last element - i--; - --i; - l.erase(i); // erase 3rd last element (49) - - for(i = l.begin(); i != l.end(); i++) - cout << *i << '\t' << *((int *)*i) << endl; - - - return 0; -} -#endif diff --git a/user/wxLayout/kbList.h b/user/wxLayout/kbList.h deleted file mode 100644 index 257c6f5528..0000000000 --- a/user/wxLayout/kbList.h +++ /dev/null @@ -1,315 +0,0 @@ -/*-*- c++ -*-******************************************************** - * kbList.h : a double linked list * - * * - * (C) 1998 by Karsten Ballüder (Ballueder@usa.net) * - * * - * $Id$ - * - *******************************************************************/ - -#ifndef KBLIST_H -# define KBLIST_H - -#ifdef __GNUG__ -# pragma interface "kbList.h" -#endif - -#ifndef NULL -# define NULL 0 -#endif - -/**@name Double linked list implementation. */ -//@{ - -/** kbListNode is a class used by kbList. It represents a single - element in the list. It is not intended for general use outside - kbList functions. -*/ -struct kbListNode -{ - /// pointer to next node or NULL - struct kbListNode *next; - /// pointer to previous node or NULL - struct kbListNode *prev; - /// pointer to the actual data - void *element; - /** Constructor - it automatically links the node into the list, if - the iprev, inext parameters are given. - @param ielement pointer to the data for this node (i.e. the data itself) - @param iprev if not NULL, use this as previous element in list - @param inext if not NULL, use this as next element in list - */ - kbListNode( void *ielement, - kbListNode *iprev = NULL, - kbListNode *inext = NULL); - /// Destructor. - ~kbListNode(); -}; - -/** The main list class, handling void pointers as data. - */ - -class kbList -{ -public: - /// An iterator class for kbList, just like for the STL classes. - class iterator - { - protected: - /// the node to which this iterator points - kbListNode *node; - friend class kbList; - public: - /** Constructor. - @param n if not NULL, the node to which to point - */ - iterator(kbListNode *n = NULL); - /** Dereference operator. - @return the data pointer of the node belonging to this - iterator - */ - void * operator*(); - - /** This operator allows us to write if(i). It is not a - dereference operator and the result is always useless apart - from its logical value! - */ - operator void*() const { return node == NULL ? (void*)0 : (void*)(-1); } - - /** Increment operator - prefix, goes to next node in list. - @return itself - */ - iterator & operator++(); - - /** Decrement operator - prefix, goes to previous node in list. - @return itself - */ - iterator & operator--(); - - /** Increment operator - prefix, goes to next node in list. - @return itself - */ - iterator & operator++(int); //postfix - - /** Decrement operator - prefix, goes to previous node in list. - @return itself - */ - iterator & operator--(int); //postfix - - /** Comparison operator. - @return true if not equal. - */ - bool operator !=(iterator const &) const; - - /* Comparison operator. - @return true if equal - */ - bool operator ==(iterator const &) const; - - /** Returns a pointer to the node associated with this iterator. - This function is not for general use and should be - protected. However, if protected, it cannot be called from - derived classes' iterators. (Is this a bug in gcc/egcs?) - @return the node pointer - */ - inline kbListNode * Node(void) const - { return node; } - }; - - /** Constructor. - @param ownsEntriesFlag if true, the list owns the entries and - will issue a delete on each of them when deleting them. If - false, the entries themselves will not get deleted. Do not use - this with array types! - */ - kbList(bool ownsEntriesFlag = true); - - /** Destructor. - If entries are owned, they will all get deleted from here. - */ - ~kbList(); - - /** Tell list whether it owns objects. If owned, they can be - deleted by list. See the constructor for more details. - @param ownsflag if true, list will own entries - */ - void ownsObjects(bool ownsflag = true) - { ownsEntries = ownsflag; } - - /** Query whether list owns entries. - @return true if list owns entries - */ - bool ownsObjects(void) - { return ownsEntries; } - - /** Add an entry at the end of the list. - @param element pointer to data - */ - void push_back(void *element); - - /** Add an entry at the head of the list. - @param element pointer to data - */ - void push_front(void *element); - - /** Get element from end of the list and delete it. - NOTE: In this case the element's data will not get deleted by - the list. It is the responsibility of the caller to free it. - @return the element data - */ - void *pop_back(void); - - /** Get element from head of the list and delete it. - NOTE: In this case the element's data will not get deleted by - the list. It is the responsibility of the caller to free it. - @return the element data - */ - void *pop_front(void); - - /** Insert an element into the list. - @param i an iterator pointing to the element, before which the new one should be inserted - @param element the element data - */ - void insert(iterator & i, void *element); - - /** Remove an element from the list _without_ deleting the object. - @param i iterator pointing to the element to be deleted - @return the value of the element just removed - */ - void *remove(iterator& i) { void *p = *i; doErase(i); return p; } - - /** Erase an element, move iterator to following element. - @param i iterator pointing to the element to be deleted - */ - void erase(iterator & i) { deleteContent(i); doErase(i); } - - /* Get head of list. - @return iterator pointing to head of list - */ - iterator begin(void) const; - - /* Get end of list. - @return iterator pointing after the end of the list. This is an - invalid iterator which cannot be dereferenced or decremented. It is - only of use in comparisons. NOTE: this is different from STL! - @see tail - */ - iterator end(void) const; - - /* Get last element in list. - @return iterator pointing to the last element in the list. - @see end - */ - iterator tail(void) const; - - /* Get the number of elements in the list. - @return number of elements in the list - */ - unsigned size(void) const; - - /* Query whether list is empty. - @return true if list is empty - */ - inline bool empty(void) const - { return first == NULL ; } - -protected: - /// if true, list owns entries - bool ownsEntries; - /// pointer to first element in list - kbListNode *first; - /// pointer to last element in list - kbListNode *last; -protected: - /** Erase an element, move iterator to following element. - @param i iterator pointing to the element to be deleted - */ - void doErase(iterator & i); - - /** Deletes the actual content if ownsflag is set. - param iterator i - */ - inline void deleteContent(iterator i) - { if(ownsEntries) delete *i; } - - -private: - /// forbid copy construction - kbList(kbList const &foo); - /// forbid assignments - kbList& operator=(const kbList& foo); -}; - -/// just for backward compatibility, will be removed soon -typedef kbList::iterator kbListIterator; -/// cast an iterator to a pointer, compatibility only to be removed -#define kbListICast(type, iterator) ((type *)*iterator) -/// cast an iterator to a const pointer, compatibility only to be removed -#define kbListIcCast(type, iterator) ((type const *)*iterator) - -/** Macro to define a kbList with a given name, having elements of - pointer to the given type. I.e. KBLIST_DEFINE(Int,int) would - create a kbListInt type holding int pointers. -*/ -#define KBLIST_DEFINE(name,type) \ -class name : public kbList \ -{ \ -public: \ - class iterator : public kbList::iterator \ - { \ - protected: \ - inline iterator(kbList::iterator const & i) \ - { node = i.Node(); } \ - friend class name; \ - public: \ - inline iterator(kbListNode *n = NULL) \ - : kbList::iterator(n) {} \ - inline type * operator*() \ - /* the cast is needed for MS VC++ 5.0 */ \ - { return (type *)((kbList::iterator *)this)->operator*() ; } \ - }; \ - inline name(bool ownsEntriesFlag = TRUE) \ - : kbList(ownsEntriesFlag) {} \ - \ - inline type *pop_back(void) \ - { return (type *) kbList::pop_back(); } \ - \ - inline type *pop_front(void) \ - { return (type *) kbList::pop_front(); } \ - \ - type *remove(iterator& i) \ - { return (type *)kbList::remove(i); } \ - inline void erase(iterator & i) \ - { deleteContent(i); kbList::erase(i); } \ - \ - inline iterator begin(void) const \ - { return kbList::begin(); } \ - \ - inline iterator end(void) const \ - { return kbList::end(); } \ - \ - inline iterator tail(void) const \ - { return kbList::tail(); } \ - ~name() \ - { \ - kbListNode *next; \ - while ( first != NULL ) \ - { \ - next = first->next; \ - if(ownsEntries) \ - delete (type *)first->element; \ - delete first; \ - first = next; \ - } \ - } \ -protected: \ - inline void deleteContent(iterator i) \ - { if(ownsEntries) delete *i; } \ -} - -#ifdef MCONFIG_H -/// define the most commonly used list type once: -KBLIST_DEFINE(kbStringList, String); -#endif - -#endif // KBLIST_H diff --git a/user/wxLayout/wxLayout.cpp b/user/wxLayout/wxLayout.cpp deleted file mode 100644 index 8cbf257bbd..0000000000 --- a/user/wxLayout/wxLayout.cpp +++ /dev/null @@ -1,452 +0,0 @@ -/* - * Program: wxLayout - * - * Author: Karsten Ballüder - * - * Copyright: (C) 1998, Karsten Ballüder - * - */ - -#ifdef __GNUG__ -#pragma implementation "wxLayout.h" -#endif - -#include "wxLayout.h" -#include "wx/textfile.h" - - -#include "Micon.xpm" - -// for testing only: -#include - -//----------------------------------------------------------------------------- -// main program -//----------------------------------------------------------------------------- - -IMPLEMENT_APP(MyApp) - -//----------------------------------------------------------------------------- -// MyFrame -//----------------------------------------------------------------------------- - - enum ids{ ID_EDIT = 1, ID_ADD_SAMPLE, ID_CLEAR, ID_PRINT, - ID_PRINT_SETUP, ID_PAGE_SETUP, ID_PREVIEW, ID_PRINT_PS, - ID_PRINT_SETUP_PS, ID_PAGE_SETUP_PS,ID_PREVIEW_PS, - ID_DPRINT, ID_WRAP, ID_NOWRAP, - ID_WXLAYOUT_DEBUG, ID_QUIT, ID_CLICK, ID_HTML, ID_TEXT, ID_TEST }; - - -IMPLEMENT_DYNAMIC_CLASS( MyFrame, wxFrame ) - - BEGIN_EVENT_TABLE(MyFrame,wxFrame) - EVT_MENU(ID_PRINT, MyFrame::OnPrint) - EVT_MENU(ID_PREVIEW, MyFrame::OnPrintPreview) - EVT_MENU(ID_PRINT_SETUP, MyFrame::OnPrintSetup) - EVT_MENU(ID_PAGE_SETUP, MyFrame::OnPageSetup) - EVT_MENU(ID_PRINT_PS, MyFrame::OnPrintPS) - EVT_MENU(ID_PREVIEW_PS, MyFrame::OnPrintPreviewPS) - EVT_MENU(ID_PRINT_SETUP_PS, MyFrame::OnPrintSetupPS) - EVT_MENU(ID_PAGE_SETUP_PS, MyFrame::OnPageSetupPS) - EVT_MENU (-1, MyFrame::OnCommand) - EVT_COMMAND (-1,-1, MyFrame::OnCommand) - EVT_CHAR ( wxLayoutWindow::OnChar ) - END_EVENT_TABLE() - - -int orientation = wxPORTRAIT; - -MyFrame::MyFrame(void) : - wxFrame( (wxFrame *) NULL, -1, (char *) "wxLayout", wxPoint(20,20), wxSize(600,360) ) -{ - CreateStatusBar( 1 ); - - SetStatusText( "wxLayout by Karsten Ballüder." ); - - wxMenu *file_menu = new wxMenu; - file_menu->Append( ID_CLEAR, "Clear"); - file_menu->Append( ID_ADD_SAMPLE, "Example"); -// file_menu->Append( ID_EDIT, "Edit"); -// file_menu->Append( ID_WXLAYOUT_DEBUG, "Debug"); - - file_menu->Append(ID_PRINT, "&Print...", "Print"); - file_menu->Append(ID_PRINT_SETUP, "Print &Setup...","Setup printer properties"); - file_menu->Append(ID_PAGE_SETUP, "Page Set&up...", "Page setup"); - file_menu->Append(ID_PREVIEW, "Print Pre&view", "Preview"); -#ifdef __WXMSW__ - file_menu->AppendSeparator(); - file_menu->Append(ID_PRINT_PS, "Print PostScript...", "Print (PostScript)"); - file_menu->Append(ID_PRINT_SETUP_PS, "Print Setup PostScript...", "Setup printer properties (PostScript)"); - file_menu->Append(ID_PAGE_SETUP_PS, "Page Setup PostScript...", "Page setup (PostScript)"); - file_menu->Append(ID_PREVIEW_PS, "Print Preview PostScript", "Preview (PostScript)"); -#endif - file_menu->AppendSeparator(); - file_menu->Append(ID_WRAP, "Wrap mode", "Activate wrapping at pixel 200."); - file_menu->Append(ID_NOWRAP, "No-wrap mode", "Deactivate wrapping."); - - file_menu->AppendSeparator(); -// file_menu->Append( ID_DPRINT, "Direct Print"); - file_menu->Append( ID_TEXT, "Export Text"); - file_menu->Append( ID_HTML, "Export HTML"); -// file_menu->Append( ID_TEST, "Test"); - file_menu->Append( ID_QUIT, "Exit"); - - wxMenuBar *menu_bar = new wxMenuBar(); - menu_bar->Append(file_menu, "File" ); - -#ifndef __WXMSW__ - menu_bar->Show( TRUE ); -#endif // MSW - - SetMenuBar( menu_bar ); - - m_lwin = new wxLayoutWindow(this); - m_lwin->SetMouseTracking(true); - m_lwin->GetLayoutList().SetEditable(true); - m_lwin->Clear(wxROMAN,16,wxNORMAL,wxNORMAL, false); - m_lwin->SetFocus(); -}; - -void -MyFrame::AddSampleText(wxLayoutList &llist) -{ - llist.SetFont(wxROMAN,16,wxNORMAL,wxNORMAL, false); - llist.Insert("--"); - llist.LineBreak(); - - llist.SetFont(wxROMAN); - llist.Insert("The quick brown fox jumps over the lazy dog."); - llist.LineBreak(); - llist.Insert("Hello "); - llist.Insert(new wxLayoutObjectIcon(new wxICON(Micon))); - llist.LineBreak(); - llist.SetFontWeight(wxBOLD); - llist.Insert("World! "); - llist.SetFontWeight(wxNORMAL); - llist.Insert("The quick brown fox jumps..."); - llist.LineBreak(); - - llist.Insert("over the lazy dog."); - llist.SetFont(-1,-1,-1,-1,true); - llist.Insert("underlined"); - llist.SetFont(-1,-1,-1,-1,false); - llist.SetFont(wxROMAN); - llist.Insert("This is "); - llist.SetFont(-1,-1,-1,wxBOLD); llist.Insert("BOLD "); llist.SetFont(-1,-1,-1,wxNORMAL); - llist.Insert("and "); - llist.SetFont(-1,-1,wxITALIC); - llist.Insert("italics "); - llist.SetFont(-1,-1,wxNORMAL); - llist.LineBreak(); - - llist.Insert("and "); - llist.SetFont(-1,-1,wxSLANT); - llist.Insert("slanted"); - llist.SetFont(-1,-1,wxNORMAL); - llist.Insert(" text."); - llist.LineBreak(); - - llist.Insert("and "); - llist.SetFont(-1,-1,-1,-1,-1,"blue"); - llist.Insert("blue"); - llist.SetFont(-1,-1,-1,-1,-1,"black"); - llist.Insert(" and "); - llist.SetFont(-1,-1,-1,-1,-1,"green","black"); - llist.Insert("green on black"); - llist.SetFont(-1,-1,-1,-1,-1,"black","white"); - llist.Insert(" text."); - llist.LineBreak(); - - llist.SetFont(-1,-1,wxSLANT); - llist.Insert("Slanted"); - llist.SetFont(-1,-1,wxNORMAL); - llist.Insert(" and normal text and "); - llist.SetFont(-1,-1,wxSLANT); - llist.Insert("slanted"); - llist.SetFont(-1,-1,wxNORMAL); - llist.Insert(" again."); - llist.LineBreak(); - - // add some more text for testing: - llist.Insert("And here the source for the test program:"); - llist.LineBreak(); - llist.SetFont(wxTELETYPE,16); - char buffer[1024]; - FILE *in = fopen("wxLayout.cpp","r"); - if(in) - { - for(;;) - { - fgets(buffer,1024,in); - if(feof(in)) - break; - llist.Insert(buffer); - llist.LineBreak(); - } - } - - m_lwin->Refresh(); - m_lwin->UpdateScrollbars(); - llist.SetEditable(); - llist.SetCursor(wxPoint(0,0)); -} - -void -MyFrame::Clear(void) -{ - m_lwin->Clear(wxROMAN,16,wxNORMAL,wxNORMAL, false); - m_lwin->UpdateScrollbars(); -} - -/* test the editing */ -void MyFrame::Edit(void) -{ - wxLayoutList & llist = m_lwin->GetLayoutList(); - //m_lwin->SetEventId(ID_CLICK); - - llist.MoveCursor(0); - llist.MoveCursor(5); - llist.MoveCursor(0,2); - llist.Delete(2); - llist.MoveCursor(2); - llist.Insert("not"); - llist.LineBreak(); - m_lwin->Refresh(); -} - -void MyFrame::OnCommand( wxCommandEvent &event ) -{ - cerr << "id:" << event.GetId() << endl; - switch (event.GetId()) - { - case ID_QUIT: - Close( TRUE ); - break; - case ID_PRINT: - m_lwin->Print(); - break; - case ID_NOWRAP: - case ID_WRAP: - m_lwin->GetLayoutList().SetWrapMargin( - event.GetId() == ID_NOWRAP ? -1 : 40); - break; - case ID_DPRINT: - { - wxLayoutList llist; - AddSampleText(llist); - wxPostScriptDC dc("layout.ps",true,this); - if (dc.Ok() && dc.StartDoc((char *)_("Printing message..."))) - { - //dc.SetUserScale(1.0, 1.0); - llist.Draw(dc); //,false,wxPoint(0,0),true); - dc.EndDoc(); - } - } - break; - case ID_EDIT: - Edit(); - break; - case ID_ADD_SAMPLE: - AddSampleText(m_lwin->GetLayoutList()); - break; - case ID_CLEAR: - Clear(); - break; - case ID_WXLAYOUT_DEBUG: - m_lwin->GetLayoutList().Debug(); - break; - case ID_CLICK: - cerr << "Received click event." << endl; - break; - case ID_HTML: - { - wxLayoutExportObject *export; - wxLayoutList::iterator i = m_lwin->GetLayoutList().begin(); - - while((export = wxLayoutExport(m_lwin->GetLayoutList(), - i,WXLO_EXPORT_AS_HTML)) != NULL) - { - if(export->type == WXLO_EXPORT_HTML) - cout << *(export->content.text); - else - cout << "::H55G66H66(66E77.98XwqAee[uuQiiFkk0ZCCYUlYUIPP+YU0WE8~!NERwJHtDSWMMdhguhgenbmDS:JHK!Q!]'&`_cJH2HGLHH,ER(EE=`_h`_r`_6)(3ER3ER$)(y`_W'`('`u`_&)(FKJ;/^7_)a'`j{[kXXkXXA[]n'`n[] X.b664wq=re+regee>09}22/ 2)(0)(F'`rXXH%%{--N**c%%(@@*@@=@@=@@n%%/%%t== ;-N%%OooF{[{XXO%$O%$:ooE w)(&)(F'`m{[T'`F{[3$$,oo'''-)(FKJ-)(g_)>'`tXXQ%%|%%0==|%%/%%i==c55V66M66", -"),,=xz*vcuAZ4SA4SAkAZ!vv|vv3bv%SA_>>s,,d,,[>>B>>|>>x,,`,,;,>YAACvvCvv'vvXbvUAAV>>a,,a,,`>>f>>]AAIAAFAA@bv2bv/AA[AA`vvUzz_ee&zl2cxqcxOzl~99176v99dzlKvv)vvOzlz00`eezuum00R99J99-76|44|44476Vuubxx0bvwcxyzlhuuduuy00877F44S==b%%($$^$$a%%b%%b%%c%%w%%w%%t%%T&&y==,;;x>>H55U77w88'88'88o98qwq:uytuy gfKcc3CVKCC4PLsRT=~!e~!NER;FDXNMrnbrnbWMMqBN/DD#DSC!Q...{]]~EEwHG9HGdKJX`_X`_@`_X'`~'`/'`y`_8)(j_)Y'`D{[m{[k_)>)(s_)I'`d{[EXXn%%RXXD[]A[]v%%t;;3wq^ee re~ee{qq}88-21Y}{m)(P ,ooO$#(@@`%%{%%H%%V--m**'%%H%%D%%G%%G%%J%%,ooT'`s_)B{[d==o65)22}$$8)(HKJ8)(D'`K'`'XXN%%,$$g'`}^^jHG=/^x'`CXXW%%2;;M**c%%eXXqXXG%%a;;t66i;;", -"(,,:vc0AZEAAD>>9,,9,,2,,%SA&SAf>>U>>[>>(>>OSA&bv}AAZ>>R>>h>>]vvlxzIzzYzzmxxRvvLAA-SA&SALAAXbvRvvRvvHxxMxxDxx{vv4bv>N66O98wwwVeewww999999999598@iuXpi1jh0CV9IPFRTGRT*RTVJH>DS2nb4nboNMwBN,DS)DD9JH']'k%%2%%!`_pERfKJ>ERN`_%`_@`_~'`%oo<$$D{[u`_F'`m{['XXyXX]''T'`F{[OooR%%i==6;;0==&@@&@@{--Z66Oq0gqq<09%98[66{55Y11F $%$.32^44r==(@@^@@F%%F%%n--S--'--'--A--)%%$@@hXX]''w)(HKJu`_t&&>65|44/$$p`_3ER$)(j_)J'`Ooo;&&,$$='`mHGNFDbHGq'`=@@;;;k66=;-b%%G[]V'`=@@;;;a;;[--", -"/,,VSA7SA^AAF>>n,,X<, <,i,,U>>-SA%SA%SAKAATvvhxz0cxEvv`vv`vvVvvfxz=zl]ll}llIzz)xxZvv_xxlxzIzzwzlYzzIzz-zl$zlnzz(zzszlbuujuubuu+zlszlQllcuubuu+zlRzzqzlvuuf00-09909Y99.65O54{44k44w44744.54q00gzlecxMzzxuup00>09I99'66<43_&&#%$&##Z@@-##E$$E$$E$$h##j##w%%$%$I&&_==v>>R66999wuy:iuyuy&uymee]88_66_88tww|ii=lkQLL!PPmTYbTYuERmDSXNM7BN:DSDDD)DD5FDA]')&&o43K22n A!QDER-_)$'`!`_X'`:..u%%%&%oooY'`T'`V{[yXXyXXV{[yXX-oo%&%4;;_44c55k556;;=;-i;;<::e;;N**/%%x==R44]221%%aooU88099.09s;;D%%)@@)@@[++]@@F##H--`--S--_@@oXX0'`,/^DKJCKJ0`_>%%=65@54U11U 9)($)(0)(u`_}XXq$$'XX0/^nHGJFFvHGR/^lXXn**>::[--J%%eXXV'`kXXJ%%B**}%%", -"<,,2,,BSAWAAmSA0,,n,,k,,B,,_>>(AA%bv+bvWvvgxz>zl|ll*zlzzzsxzsxzzzzAuu~ee!ee0re}ll%zl}llLll0re0re{ll}llIll.revuuUllQllYllkuukuunuuWll!llWllfzl`zz'zzFllz99$54O76n99l99|55k44744744744L33w44=09+zlMzzEll]ee000;09e77G44J33#%$f##Z@@Z@@-##f##&##Z@@~$$w%%w%%$%$y%%_==v>>R66t00Guu-piGiiruy$uy}88b66s66W77Wrr'hhZlloDSjIP;RTG!Q^JJ>HG:FD-FD)DD6FDzTY:+++43365O32y{[*_)=)(f_)(]'(]'e{[%ooy%%%&%{XX]''T'`m{[V{[m{[V{[`XX1$$-&&4;;I44l55M66H66h66;;;M**T@@S[]D[]8$$z==%211%%1%%u99`qqo09q;;D%%)@@]++ X.4XXz++!@@~@@c++'..<(/`^^MKJJKJ@)(W'`r&&I88T88|55;oo9`_wER1)(y_)V{[Ooo]''T^~&KJ&KJ#/^>(/n'`lXXv%%`%%D%%lXXn'`w'`hXX(@@v%%", -"<,,8,,mSA-bvQvvObvBSA5,,i,,f>>XbvHxxZxxdxz[ll}ee 09k00}ee_ll5zl'llQeeQ99 09Ree&re-re}eeReeTeeRee}eeJllKllEee909z00N00V00b00:09q00buuazlszlszlMzzUllq00|66k44O54X76.54L33L==X-=f33X-=z33{44n99]eeUll]ee;09b99077'66<43,--E$$&##0@@0@@Z@@-##-##&##d##C##C##C##e%%u==c44576wwwVee>uywuyVee<98)66c55c55(77Yrr{yy7fd7NM{TTb|}1[]pOOx]'bJH|GG0DSMGF^EEj%%t55077433a{[+LK-LK)_)r{[^{[4..T## oXG{[M{[m{[BXXXoX>ooZXXA{[k{[BXX>oo;$$M**2::S77(99c99D;;~@@0'`+/^0/^EXX4;;x==%&%|$$$87;wqQ99|--D%%IXX`..L(/w(/w(/1(/<(/<(/<(/0'`m'`u_)#)(@)(I T44,98099.98d==W'`AKJIHH1ERT'`yXXF'`mKJBKJw/^-'`8_)>/^5_)C'`qXXRXXRXXV'`E/^e'`RXX[%%", -",,,7SAyAZ'xxXxz0zlxxxeAZ&SAibvIvvZxxdxz8zl_llQee}99}99k00}ee-re&reTee]99Q99k00}ee#reQeeTeek00Tee}ee&re*rex00909z00z00,09n99l99T99]eeEll+zl+zlazlbuuq00X76k44{44O54w44X-=`%%F==L==L==f33w44c99M00]eeq00b99276}66H44=43^==E$$&##0@@0@@Z@@-##-##&##d##d##C##A##I&&;--q::c66U77w88O98O98'88)66g66h55B66_88Yrrayy9saJMMbTYN~!/OO6%%1[]fER&HGeDSMGFkER1==a554655==]``xKJ-LK `_r{[| 1..=}{1{[G'`L'`I'`%$$Q%%i&&Q%%@$#ZXXXoX%$$W%%[--t66A993q04q0'::v--[..;(/*'`=@@ ;-a==>$$#ooJ44 76l55$$$hXXb[]%(/%(/%(/-(/-(/*(/$(/0'`oXX%@@yXXF'`y_)E /44309`qq909_22N{[3ERSKJ%)(]'''XXK'`vKJ4/^C'`j{[5_)cHGcHG=/^N'`eXXkXXq'`q/^q'`RXXM**", -">,>Uvv`xx(xxrrru66H99ereSxxZxxmxxdxz7zl'll#reRee]99Q99F99Q99]99}99]99Q99u99Q99TeeReek00}99]99}99ReeQeeEee709909n00909T99 65O54X76,09cuubuubuubuu]eeb00l99{44744744z33i**.%$E%%/%%i**R==744376,09:09n99o76]66H44<438--<==E$$-##M@@M@@Z@@-##-##-##d##a##d##e%%,==;;;.:;8::b>>h55c55g66g66c55h55h55(66#98Qrrayy!aa,kj9FD@~!/OO6%%. C!QVJH+HGOHG^EE5==[33[33J$$1_)0KJOLK `_/{[nOO1..>{[X_)1/^q_)h'`$$$/%%i==0==;$$GXXGXX$$$[--a;;F66_998q09q0V99m::o#@;XXoXXG%%i==Q%%OooD{[x==a664;;zXXA[]0'`*(/1(/w(/u(/b[]t(/0'`oXX)%%p;;w==}XXT'``XXR44-09]qq`qqH44E 0)(:)(y_)V{[}XXT'`jHGw/^rXXMXX5_)aHG=GFjHGE/^N'`V'`E/^9/^e'`=@@B**", -":,>rzlkxz/xxqre,54+43[99Jll#zlixzLzz[ll#reTeek00]99F99u99>65`55O65165u99O65u99}99 09]99F99A99A99}99 09|99|99n00|een00T99k44w44O54n99b00b00,09,09q00b00T99{44L33b33R==E%%p$$[$$5%%`%%R==w44O76=09376O76|55o54C44=43|==]&&E$$f##&##Z@@Z@@-##f##E$$a##a##a##y%%u==;;;>;;>--);;);;);;&:;w::h55g66B66E77oo}XXN55|666;;YXXF[]m'`t(/OXXIXXW@@o#@%@@PXX+#@>::A99V55i&&}XX-oo_22[66@98E88d==I 0`_a_)D'`'XX,oom{[aHG>/^C'`j{[r_)}^^BKJ>/^T/^E/^T/^9/^E/^eXXG%%}%%", -"=,>9re9zl}zz5re<54|33r66}99#re5zl7zlJllk00]99Q99]99Q99u99)55_33_33Q44`55/55165F99]99F99u99165165Z99F99K99!99n00luu_ee,09{44w44{44376T99c99O76X76T99q00T99k44z33z33L==.%$+$#)$$.%$`%%f33k44O76T99 65 65o54A44<43e--B==_&&E$$E$$-##&##&##-##f###%$d##a##d##y%%u==>--;--p==z==z==V--<;;7::h55I66)66(77Krr`ii&fd{hh$kj=DS5JH~JJ'!!'!!m!QJ!QjERgKJx!Q1..J$$%=*.$#>{[&_)/_)4{[W$$0**~##0_)zHGxHG*/^='`qXXzXX&@@&@@=@@G%%[--a;;f66A99_99f99_::{::z99N99m99I::B--)%%H%%b%%;$$M%%X87D99g55=@@hXXXXXoXX)@@b--L--e;;A--'%%Z--f66)99O87j55p&&&&&p==H44.32%21<$$H'`p_)u`_Y'`}XX,$$m{[cHG=/^8_)a'`a'`g'`C'`d{[&'`q/^@/^q/^G[]G%%}%%b%%", -"*,>$09%096re4re866@43%43O65]99&reJllQeeQ99u99265F99Q99Z99`55I33C33I33Q44}33O65Z99F99Z99>65`55)55>65u99s99S99-09N00_eeb00O54k44k44X76376X76.54{44O76T99376L33R==z33R==[$$+$#p$$.%$i**z33{44O76c99{44.54 54j44=433--r**h%%E$$E$$E$$-##&##&##E$$&%%d##d##C##e%%T&&u==p==p==y==z==-;-&:;b>>B66)66988#986uy=fdCjjwkj}MM7FD:RTv!Q%]'%]'S_)H_)b!QhKJJER&}{X$#7==,==(##1}{%}{U++8**p**&$$.(/%KJX/^6'`B'`D[]D[]D[]eXX&@@}%%i;;2::F66v99v99P::H--W--/::r>>M99)::G--o#@%@@=@@n%%/%%O87W99i66M**H%%(@@v%%P--'--$:;$:;P--N**{--h66L99gqqO87V55X;-2&&|$$#ooU /'`1)(7)(D'`('`'XX'XX,'`}^^4/^8_)r_)g'`j{[rXXv{[q'`&'`T/^N'`c%%=;-B**&@@", -"&,>.09y66O09D00V99#43s33C33)55Q99k00]99265`55/55265A99F99165'33Z33I33}33}33`55Z99A99u99`55Q44}33)55165i99;76p99~99909q00|66{44k44 65O76 65{44k44.54X76{44L==`%%f33R==)$$ $#+$#[$$`%%z33k44|66O76744k44j44044e--B==k%%#%$E$$#%$#%$f##&##&##E$$u%%C##C##A##A##e%%I&&u==>--V--<;;w::g66)66w88O98<98tww=iu,jh4lkLNN4FDO~!o BOOl$$BOO*[]*[]H_)c!QZ_)P###=*655w55W==9**!%%7**J==Y==:**J[]6'`aXX/@@)@@YXXeXXqXXRXXM**a;;t66t66F66D77[::'--F##p--(--N::(::n::u--Y@@jXXLXX=@@G%%q;;u662::=;-=;-n**n**>::$:;e;;V--`%%`%%}--h66S99=wqgqq 87L44>$$('`y`_9`_0)(AKJ$)(u`_Y'`V{[]''#)(MHGw/^g'`g'`g'`C'`x'`a'`e'`V'`qXX&@@B**i;;B**=@@", -"%,>X09766t66@09o09$43L**3**Z33>65A99u99`55}33'33`55u99F99u99Q44S33_33Q44}33O65Z99A99265)55}33_33/55165i99%65#65176U99=09|66{44k44 65X76 65.54.54744.54L33E%%E%%f33L==+$#]## $#)$$`%%f33w44O54|662437440446443--r**/$$f##E$$#%$#%$f##&##&###%$h%%C##A##e%%C##d##e%%,==;;;&:;l::B66988598wwwmeemeeUrr_ii3jhNll.DS$RTX X*&F==,--[&&cOOcOOW{[K]',}{Q$$!==/55'55r55T==P==P==/;;e::L==-@@o@+Z**%:;y;;Z--{%%H%%{--j66A99j99F66C66g66#:;n--u--G--R--s--^--d--<##0XXOXXhXXRXX&@@kXXJ%%M**B**=;-{%%H%%-;-$:;P--`%%(@@v%%}--D66'99%wqjqq*874;;yXX8)(3ER3ER3ERPHH3ERu`_D'`T'`k_)GHG*GF4/^j{[j{[g'`-'`8_)4/^='`qXXc%%M**=;-i;;B**b%%", -"b>>g99*54=54g99g99`44a33D%%6**C33/55>65`55S336**I33Q44O65>65)55'33I33S33}33>65F99Q99u99/55S33033W33!44}55X54#65l99376X76.54744744O54O76X76.54{44b33z33`%%p$$5%%X-=L==p$$j@@]##+$#E%%X-=w44O54|66.-=l33K33v33Y==^%%]$$i$$i$$]$$]$$i$$o$#o$#|$$^%%i%%Z##s##s##g##Z##`&&:;;l55Y66{88398t00wwwwwwwww6uy-iugffyNMZPL-~!5++#43L55I55t::1--F&&p$$m$$R$$X:;4::E55z77b77z66^;;t**|**/;;X:;:;;#;-s66L77P99A99G77Z66k66Z99{99W99V66t66-;-Z--A--L--n--p--G--u;;S--3##[++:XXF[]B'`w'`$/^='`kXXb%%}%%M**B**B**H%%`%%`%%`%%n**p;;G77Xq0{99|66I44Q%%yXXk_)%)(%)(&)(&)(s_)m{[}XXm{[#)(dHGcHGw/^j{[v{[-'`}^^vKJvKJ8_)rXX|%%2;;i==/%%W%%W%%", -"v>>d99]44-54d99j99966o433**6**Z**'33>65O65I33f**f**033_33}33_33Z33C33033I33)55u99u99`55I33S**V**A33]33}44X54 76l99l99X76243z33b33{44|66O54w44744z33f33/%%p$$.%$L==i** $#<@@j@@p$$E%%X-=744.54 65.-=l33v33l33b==|$$i$$o$#o$#i$$i$$|##h@@V@@i$$|$$r%%g##*##s##s##g##U&&<--M44Y66{88e00e00598<98<98aww+iu,fd4lk@PL#~!{OOk22(33)33t::>76R77Y77,76R55K77z77s77z77b77s774::>;;]**O:;g77l66=:;=:;A772q0&wq:wq*wq@q0gqq!99b66 ;-<::i;;&;-A--b--9##n--A;;P::u;;m--+#@[++hXXF[]B'`&'`N'`eXX=@@J%%[%%J%%G%%[%%M**}--<::k66H77L99'99c55i==8$$BXXK'`w)(:)(a_)K'`K'`m{[Oooq$$yXX>)(dHG=GFmKJr_)g'`8_)4/^4/^8_)-'`v{[;$$Y%%$$$GXXGXXO$#", -"c>>e99(44'44q66a99q66'44l**4**4**y33_55+65U33g**S$$4**A**y33y33q33]==]==q33]33[55_55U33A**4**P%%]==G33h44}44 76c99l99 65R==F==R==744.54w44b33f33X-=R==E%%p$$.%$i**E%%j@@>@@]##)$$`%%f33243k44.54Y==4--l33Y==f%%i$$V@@V@@o$#i$$i$$o$#|##o$#T$$|$$r%%s##X#@*##*##s##U&&<--l55%76298Meee00O98w88988;wq&iu,fd lkIDD3^~|OO6++}&&@*&8--Y77vwwKww}00/77687z77h::X:;X:;4::X:;^;;u**O:;!77U996::D**c667wqDeeHeeSee=wqW99Q66I441&&|--[--B**n**)@@T@@F##S::N77`::#:;A--F%%$@@lXXwXXqXXqXXeXXRXXb%%J%%G%%=@@[--}--<::G66I99I99F77u66$$$rXXg'`g_)7_)w)(k_)]''}XX'XX'XX3$$;&&3$$K'`JKJ=GFMHG>/^4/^=/^>/^r_)C'`x'`j{[MXXrXXC'`C'`v{[CXX", -"x>>#54.43E33I44(44(44U44]==F%%x$$9**W33)44G339**S$$P%%l**q33y33y33q33q339**y33f44]33q334**F%%P%%A**A33544/44 76l99X76{44`%%/%%L==L33w44b33R==L==R==F==5%%)$$.%$`%%.%$<@@>@@ $#5%%F==z33243w44k44b==Y==.-=u**T$$h@@:@@,@@]$$]$$|$$|$$4%%^%%u**b==h%%E$$-##f##f##E$$_&&6--v66y88CeeeuyBee<98w889881wq|ii3jhXlkvPL`|}922922(&&c&&m==-76=q0xww888T55_;;{**K%%j@@K%%V**o=*I==~**!;;Z77_00x66D**5::&wqFeeWww=wq|667;;X;-F44X;-R%%;$$;$$c%%$@@PXX3##_--`::E::#:;V--+#@LXXwXXXXXV'`e'`V'`YXXM**a;;2::<::<::;;;;;;t66G66k66}--=@@v{[x'`-'`g'`I'`'''yXX,$$}XXV{[T'`V{[3$$p&&N%%yXXw/^8_)r_)5_)>/^w/^g'`rXXj{[j{[d{[g'`a'`C'`GXXY%%", -"s>>^44T33r33232w33x33T33 -=2%%X$#}$$e33544e33!%%J%%(%%j** -=k33k33e33 -=2%%P==544544 -=(%%!%%t**A**y33R33844}55O76O54L33`%%`%%L==L33243X-=i**`%%L==`%%.%$)$$5%%/%%)$$>@@>@@+$#E%%L==f33b33243744u**K==K==f%%|##+@++@+,@@|$$|$$4%%^%%b==.-=4--l33_&&&%%E$$E$$E$$#%$<==9;;676409FuuGiiruy999O98'88aww%pivkkNll!PPh h22h22>++(&&/&&`;;=76h77j::/;;c@@H++xXXZ++c@@V**I==:;;b;;k;;p::W77B77=:;5::J992wqBqq*87F44&&&-&&z==J443$$XoXXoX;$$G%%D%%)%%m**'--_--m--F%%PXXXXXF[]F[]T/^E/^N'`=@@<::L99@q0@q0k55i==W%%0==q;;6;;n%%j{[V'`N'`C'`MXXXoXXoX@$#M%%]''k_) /^&)(yXXF44N55Y44MXXMXXv{[g'`r_)-'`j{[GXXMXXv{[d{[x'`d{[EXXr==k55", -"a>>k44243f33i**i**R==z33 -=J%%X$#k$$j**e33H==J%%2%%J%%!%%j**P== -=H==t**`$$H==544844 -=!%%!%%t**]==q33c33R33}44|66{44z33L==F==X-=b33z33F==E%%E%%/%%.%$p$$)$$5%%5%%+$#=@@=@@ $#E%%F==L==R==z33L33^%%b==b==|$$,@@MOO5++h@@T$$T$$]$$f%%b==.-=4--4--r**1%%Q$$/$$/$$1%%B===43676u00Fii=piruywww598598Krr%pi%lkZCClIPV|}|OO,++O..ZOOb&&M==2--2-- =*y** @+ @+x@@l**);;!::~::!::W;;J--D--a::M77c66s66k66%87-87~66D44-&&-&&w&&w&&%&%q$$Q%% ;-s;;=;-n**{%%_--_--m--F%%[++lXXTXX*@@zXXYXXc%%[--t66F77Z99H77|--Y%%O$#Y%%2;;6;;/%%CXXE/^T/^='`d{[v{[g{[k{[tXXF'`w)(ZKJDKJyXXN55-87 76j{[j{[C'`a'`8_)r_)C'`rXXCXXMXXv{[j{[CXX|%%c55O87", -"u>>6446444--_%%f%%b==l33e33(%%`$$}$$t**P==j**!%%`$$k$$`$$J%%j**H==j**(%%`$$P==h44h44e33J%%2%%J%%A**A** -=k33h44|66.54b33f33X-=f33z33X-=E%%[$$[$$)$$ $#j@@+$#.%$[$$j@@NOOZOOj@@[$$E%%/%%`%%L==f33f%%u**u**]$$+@+XOo5++V@@i$$o$#i$$|$$_%%b==b==u**v%%1%%Q$$Q$$/$$1%%v==J33m66298FuuDii=uy598<98598~rr*fdtvc1IP8RTPRT@~!N~!]]]sOOL&&0--y::7::]**S$$%##l**);;C77_00.q0n99f77V;;G##G@@Z##%:;c666::;;;N55a66M55(22w&&w&&=&&+%$p==z==Z55X87|77<::M**`%%m--m--d**+#@PXXTXXv%%n**}--=;-a;;2::2::i;;}--M**M%%@$#@$#w==V55p66 ;-8$$R/^0/^T/^e'`x'`a'`d'`''']''F'`w)(s_)q$$W66%87Z55g'`x'`g'`a'`-'`-'`x'`j{[EXXCXXMXXMXX$$$r==i66.87", -"y>>v33K33.-=f%%|$$u**4--z33F==E%%E%%i**L==F==`%%p$$+$#p$$5%%i**L==F==`%%.%$f33.54.54X-=5%%)$$[$$g**l**j** -=844|66O54243z33f33f33f33F==[$$+$#p$$ $#>@@=@@]##)$$p$$>@@vOOvOO>@@p$$[$$[$$.%$`%%L==4%%_%%_%%T$$+@+XOo+@+|##T$$i$$i$$]$$^%%_%%^%%4%%k%%/$$Y$$Y$$Q$$/$$r**e--l55y88-uyruyMeeO98O98598#iuWff^LL2QWRRRmTY7JHnTYO..>++9--U77`00P77!;;=**l**(;;C77:q0DwwVww)00f77L##K@@&XX*XXa**5::=:;}%%U44U44(226&&=&&w&&r&&5&&W22b55%98nqqQ99s;;[%%J%%]++T@@IXXoXXn[]F[]TXXH%%M**=;-<::t66<::=;-M**[%%XoXXoXR%%I44 87|667;;8$$XXXB'`V'`G[]v{[j{[v{[XoX'XX'XXV{[yXXx==@87~66x==v{[rXXMXXMXXv{[v{[rXXCXXEXXGXXCXXCXX$$$0==g55M66", -"kbvI==5--T==g%%L$$g%%5--f33i**.%$.%$`%%F==/%%.%$ $#]##]##+$#[$$E%%/%%/%% $#b33.54w44f33)$$]##5%%`%%F==i**`%%L33X76 65f33f33243744R==.%$+$# $#j@@ZOO=@@6++NOOZOO=@@6++/ooFooZOO]##+$# $#+$#5%%i**E%%.%$+$#>@@6++6++j@@ $#|##V@@h@@V@@o$#T$$T$$T$$]$$]$$Y$$t$$t$$#%$_&&^==M55q77y00Ceer00[88q88q88Vrrejh[IIQ~!U~!ELL1NMFPLd~!E33b00%q0LwwJww~77[;;s77b77(00Zww}wwZww6874::d@@B(/Q^~s/^l+++;-3;;w==p&&F44J442&&<$$<$$=&&r&&/44@98_qqCqqQ660==&@@LXX X.:XX:XXn[]7(/v'`jXXF%%>::=;-}%%W%%W%%1&&1&&;&&R%%Q%%l==j55N66m664;;R%%EXXEXX=@@c%%RXXhXXTXXH%%B**J%%;$$|%%I44V55Y44h==R%%i&&t==t==Q%%%$$@$#>ooBXXtXXZXXM%%t== ;-1&&8$$", -"jbvn==@-=T==g%%L$$ %$I==X-=`%%[$$[$$/%%i**E%%[$$j@@j@@<@@]##p$$[$$.%$.%$+$#L33O54w44R==+$#>@@)$$E%%`%%`%%/%%f33.54k44L==f33243L33i**p$$j@@<@@=@@vOONOONOO/ooNOO6++ZOOJooFooNOO>@@<@@<@@j@@)$$/%%5%%[$$]##=@@ZOO6++j@@+$#|##h@@:@@:@@V@@o$#i$$o$#T$$T$$t$$F@@F@@E$$_&&M==m44$76&09r00 98088777088pwwejh4IPI~!0QWINN=kj|SSD]'{33F00cwwEeeWeeUwwMwwFqqDqq@@=@@>@@j@@ $#+$#+$#p$$L33O54744F==j@@NOO]##.%$E%%E%%5%%L==L33z33/%%z33L33X-=.%$<@@6++ZOOvOOCooJooJooFoo/ooZOOvOOFooCoo/ooZOONOOvOO6++ $#.%$.%$p$$<@@6++ZOO=@@]##p$$o$#,@@COOCOO:@@V@@|##|##T$$i$$F@@S@@S@@f##h%%<==:43V55q77y88977T66T66777Urr=cx}III~!3QWrNMvhhKMMz~!$32287*q0.ew@@j@@]##]##p$$b33{44L33`%%=@@/ooj@@[$$5%%5%%.%$/%%L==F==.%$z33b33L==+$#6++vOO/ooFooEXXCooCoo2ooFooNOOvOOCooFooJoo/ooJooCoovOOj@@.%$.%$+$#>@@ZOO6++j@@p$$[$$T$$,@@MOOXOo5++h@@V@@V@@o$#o$#S@@B@@B@@-##&%%]&&7;;i44{66%76m66c66U66777auu~cctUIE~!|WWbllcss|jj7JHgOO;--H55-q0Iww|wwYeeHwwBwwFqqFqq@@ZOO=@@]##[$$5%%]$$,@@XOoHooCOOh@@V@@h@@|##|##B@@f@@f@@&###%$_&&,--:43F44N55M44k55U66088auu7vcrUI4QWpIP3lk6sa}hh NMu!QiOOH&&w::h77d77n77E55!55s77687{00Dqq;q0#q0E77d::h--J@@x++E@@7##V--m66m66_44p&&&&&z==M55U66o65M55a66N66V66Z66g66L::m::A;;!--W--N--p--8##;##;##~@@]++(@@G%%M%%}XX('`K'`,$$F44N55L44a==p&&x==|%%Y%%[%%i;;k66K::&;-n**c%%&@@O$#0==m66F99-87~66t==w==w==i&&R%%%$$ZXXA{[k{[BXX@$#R%%Q%%Q%%M%%8$$", -"tbvx@@I$$9%%I$$&@@J++P++ $#j@@>@@>@@<@@j@@j@@j@@<@@=@@NOONOOZOO>@@j@@]##p$$f33b33i**+$#/ooFoo<@@p$$)$$)$$+$# $#+$#)$$.%$L==F==.%$>@@/ooJooCooTXX X.TXXEXXTXX2ooJooJooEXXCooFooFooEXXTXXJoo<@@.%$E%%+$#6++vOO6++ $#[$$5%%T$$:@@HooDooCOOh@@V@@,@@V@@h@@*@@%@@%@@M@@E$$u%%^==6--:439::o:;c44n66088yuyQccSIP[II^LLBjjQaa{hh2kj8JH}!!R{[4**E**A$$A$$^++M$$}**h::K77Y99(00Y99<>>=>:R;;l;;i--:##{@@_@@q;;l55V55_44Y44n55M55^44(22U44Z55Q66H77G77A66[::b::/--E--E--E--f--1##D@@D@@!@@[@@'%%[--t==&&&>$$%&%(22U66$87$87+87=87%98O87|77H77S99F77p;;`%%v%%&@@RXXn%%q;;F99Bqq109-87l==Q%%>ootXXBXXXoX%$$M%%R%%w==l==w==M%%@$#%$$M%%", -"rbvR++r##U$$K$$I++D++G++<@@>@@=@@6++=@@>@@<@@<@@>@@ZOO/oo/ooNOO=@@<@@]##.%$z33z33E%%<@@2ooEXX>@@+$# $#]##<@@6++=@@ $#.%$E%%5%%+$#ZOOFooFoo2oo X.Q.. X.KXX X.TXXCoo2oo X.TXXEXX2ooTXXKXXFoo<@@[$$5%%]##NOOJooNOOj@@p$$)$$|##COO1oomooCOOh@@h@@+@+h@@,@@%@@O@+%@@0@@f##&%%_&&^==6--<--<--};;z55777yuyTcc'LL]LLwCV+jh8safjhNMM@@=@@6++ZOO6++=@@>@@>@@6++NOOJooFoovOO6++<@@j@@/%%L33z33.%$6++KXXKXX6++]##j@@<@@6++vOONOOj@@[$$)$$p$$<@@/ooCooCooTXXQ..T../../..Q.. X.EXXTXXQ.. X.KXXTXXKXXKXXCoo>@@)$$.%$j@@/ooCoo/oo>@@ $#+$#,@@^ooYXXRXXMOO,@@,@@5++,@@,@@%@@O@+O@+0@@-##&%%u%%]&&^==i==i==;;;n44576suuQcc'LL>ZCqvc%jh7fdtkjNMMJDD##I@@Z@@U@@r--,##N@@[((`((3XXC@@d**;;;p66G99xqqVqq:09.09o09VqqewwVqq:091wqKee-re*re>wq1::{%%{%%b%%c%%n%%2;;|66~99-87Y66j55w==ZXXk{[ZXXw==p66X87~99F99|66p667;;i&&%$$BXX", -"qbv`ooF++E++v@@L++]oo]oovOO6++>@@6++vOO/ooZOO>@@NOO/ooFooCooFooZOO $#[$$L==z33f33p$$EXXn..TXXZOO>@@=@@NOOFooCoovOO]##5%%)$$]##6++NOOvOOFoo/..:..:..n..Q..T..Q..KXXKXXQ..T../..KXX X.Q..TXX6++p$$5%%<@@2ooKXXFoo=@@j@@]##ZOOFooTXXEXXvOO>@@>@@6+++@++@+5++COOCOO:@@o$#]$$^%%^%%1%%r**e--7;;i44509ypivvvGIP`LL5jh>fdojh.kj1kj#NM:FD!JJN!Qq]'K++3**U**U**y**y**i**y==q==u==(**C;;J;;B;;T;;Y::^**@@6++/ooJooNOO>@@NOO/oo2ooEXXCooZOO]##[$$b33L33X-= $#KXX1..KXXNOO>@@ZOOJooEXXTXX/oo]##E%%p$$j@@6++vOO/oo2ooQ..:..` 3..n..3..n../../..n..3..Q.. X.Q..T..KXXNOO $#[$$=@@2ooKXXCooNOO=@@>@@vOO2oo X.TXX/oo=@@=@@ZOO+@++@+5++COOCOO:@@|##]$$4%%f%%/$$v%%|==)==:43509rpivvveUI`LL>jh}yy&pi[hhDhhBMMeBNmDSfJHSLK^[]t@@C&&v@@w@@V$$w**T==9;;w;;U--&:;R;;B;;B;;J;;(**G++TXXv%%J%%|%%7;;W66%87+87]66109Bqq'99j66u;;n---##S@@A@@r--z--v::g--L@@Coo.)(A@@F##t;;i66V66.87D99~66Y66n55`44Y66 76Z55h==B**i;;F77+q0oq0K99B99|00y66t;;B**r==_44W66@87+87-87Y66L44X;-Z55-87X09+87n55F44X;-N55@87Y66N%%,'`", -"LvvxOOxOOT++z@@H++zOOzOObOOFOO-@@nOOAooAoobOO-@@FOO:OOPXXLXXZooGOO&$$N%%444343G==;@@E..>..sXX>OOFOObOO`XXdXXdXXAoo[##W%%&$$I##nOO:OOZooPXXR..>..~ >..,..o..>..9..R..,..8..R..E..R..9..dXX>OOI##&$$GOO`XXLXX`XX>OObOObOOCooTXX/..KXXJooZOO6++ZOO5+++@+5++COOCOO:@@|##T$$T$$4%%/$$s%%v==]&&X:;y00rpizvcFIPhvc+piZrrGrr}yyBss&kjCMM0BNmDS^KKr]'9@@8@@:OO#}{!++7**8;;h55x55%:;^::U::Q--a--F--f**:@@v%%=@@CXXCXX1&&W66:09Vqq(qqswwpwwgqqG77W::'--d**-##u--N::e>>w>>M::d--,##<##G--E::j99L99O87h66<::t== ;-7;;j55N66 87p66 ;-RXX=@@M**y66J99oq06wqAee:wq[99H77H66X87O09$09:09o09.09=87G99nqqiww%09Y66;&&Ooo}XXa==W66Z55OooJKJ", -"JvvxOOxOOY++T++xOOkOOkOObOOFOOFOObOOZoo`XX:OOGOOnOOZoosXXsXXAooI##_$$Q%%j33333N%%nOOE..>..R.._XXZoo`XXPXXdXXdXXAooI##_$$[##;@@bOOZooPXXsXX8..>..~ >..>..X..o..8..9..,..8..R..E..R..R..LXX>OO-@@[##GOOZoo_XX`XXAooAooZooEXX X./..KXXFooZOO6++ZOO5++5++5++COO5++:@@V@@i$$o$#|$$1%%s%%v%%u%%9;;y00Bzz*cx,vc!ffKrrI88!88CrrlyyGaajjjAMM2DS+RT&[]u$$,OO8@@r$$F$$:**}**<;;:::6::Q::@:;`@@$XX`++'++dXXRXXCXXj{[A{[;&&R66,09/qqo09nqqnqqQ99G66K::Z--)@@Y@@v--3>>5q07q0d99)--9##6##D::k99P99j99j66t;;N**|%%0==i==s;;H66.87g55W%%G[]D[]YXX}--j66j99J99]99@q0[99!99Q99G99.09%98*98*98vqqyww~ww(ee}eesww@873$$m{[K'`3$$L44X;-yXX#)(", -"HvvxOOzOOU++U++zOOxoo_oo>OOnOOnOO:OO_XXPXXAoonOOnOO_XXR..sXX>OO&$$Q%%G==B%%_$$U##:OOsXX8..9..E..sXXLXXPXXPXX_XXAooGOOU##U##GOO:OOPXXE..9..,..o..o..,..,..X..X..8..9..,..9..R..E..E..E..PXX>OOGOOU##GOO:OO`XX`XX`XX`XX_XXTXX X. X.TXXJooNOOZOOZOOCOOCOO5++5++5++:@@V@@o$#o$#4%%1%%s%%v%%u%%6--309Bzz=piyuy0wq_88R77P88Q88J88crrQaa|jj/NN RT1[]z$$J&&V==q55.:;L==t**A**#;-0;;1;;@#@6(//^^J/^6'`e_)d{[A{[ZXX3$$z==T66@98o98D44M55~66N66l552;;c%%G[]S[])@@C668wqFwwJ99{--(@@/%%t66S99S77$:;*;-P--P--;;;B**[%%}--h66D66B**D[]='`q'`kXXM**<::a;;}--M**;;;g55b66|66~66U66$65o65-09aeeOre@re:re;re/ww-87%$$'''>'`A{[8$$@$#g{[g_)", -"NvvcOO;OOcOOcOOcoo)XXzoo65{557330$$D44R66~66Y66I44Q%%BXXn'`zXX;;;'99=wqO87|--8$$z==a66V66t;;)%%b--u;;J::-;-`%%(@@n**Z66J991::$@@A[]qXXG%%<::M66g55|%%8$$|%%s;; 87O09o09=87{66'66}qq#re5re>re{eeQeecqqZ55@$#'''g_)I'`A{[g{[h'`h'`", -"MvvlOO-OO;OO;OO)XXJXX(XX;;~;;h**Q@@BXXGXXkXXA[]F[]kXXx'`;/^F{[f==]66*98R88+54*21$%$0$$^44%98.09+87C55U44x==;$$tXXA{[N%%^44U66$65m55U88&651&&XXX6XXB--H::D::e;;m**+#@F%%e;;g66J::V--D%%{%%i;;V66H66l55F44X;-r==V55Q99cqq$09*98&98198509'ee%re!qq(44e&&3$$g{[CXX-'`-'`CXXn%%CXXa'`r_)", -"bvv$OO]XX$OO#OOQXXgXXgXX]XX'XX'XX]XXWXXuXXgXX#OO]XXQXX5..0..,OOHOO,OOAOO$OO]XXWXXuXXq..q..q..yXXuXXgXXWXXgXX'XX@@j@@|##i$$]$$|$$4%%^%%u**Y==w;;0;;2::d55*76u88609veemrr798)88iqqfrr5saTDDi~!ZOO({[({[*OOt$${;;4::Z$$d'`XoXM%%GXXd{[N'`='`q/^#oom55{qqdww@98|44O21=%%2&&U66:09G99N55`44l55p66 ;-8$$Ooop&&Z55U66b55U44'66U44q$$A{[j{[=@@-;-j66i66q;;0==Y%%;$$$$$EXXGXXk{[k{[%$$I44m66l554;; ;-L44N55W66a66L44p&&&&&;&&X543090ew=09z==}XX'XXXoXlXXLXX*@@b%%b%%O$#rXXd{[", -"{zz#OO'XX]XX]XXgXXuXXfXX'XXQXXQXX'XXgXXyXXfXX]XX]XXQXX5..5..$OOAOO#OO,OO]XXQXXgXXyXXq..q..q..yXXyXXfXXfXXfXX'XX@@j@@|##o$#T$$]$$|$$f%%u**K==&;-&;-0;;p44A55687u88:98N88G77D77&1<&21ftt[][]]*[]L{[W##T55o87U==yXX@$#M%%>ooj{[x'`e'`e'`t&&{66fww)qq[66X32@21O21f==R66o09@87`44L44l55m66_44i&&N%%x==Z55%65^44D44*65U44%&%F{[I'`qXX[%%p;;b66k552;;/%%EXXrXXj{[d{['''g{[>oot==I44 ;-i&&i&&p&&X;-L44X;-&&&Ooo'XX'XX=%%>65709O98z==,ooXoX@$#D%%D%%H%%[%%J%%;$$EXXMXX", -"[zz]XXQXX'XXQXXfXXq..yXXWXXgXXWXXWXXfXXq..uXX'XX]XX'XX0..5..]XX$OOWXX'XXWXXgXXuXXq..0..0..q..q..q..yXXyXXyXXQXX,OO,OO'XXQXXuXX4..} V V V V | | | | O..O..O..O..4..4..5..5..q..fXXQXX'XX]XXgXX0..O..+..5..q..yXXaXXxXXvXXWXXQXXPXXPXXPXXJoo/ooNOOZOOZOO6++>@@<@@V@@o$#i$$T$$]$$4%%_%%b==`==`==`==0;;p44A55K66*76h66q,,z,,M<<<1<,211saflks!Qb]',[]G]'<}{/77Pqqo873&&;&&R%%@$#d{[-'`g'`qXXU44O98vqqO98O54)22733+54C55=87$09 76Y44X;-I44l55V554;;a==Y44Y66U66^44(22$65m55f=='XXg_)8_)v{[G%%p66p66j55w==ZXXh'`g_)g_)m{[F{[,$$p&&h==3&&q$$q$$3$$&&&;&&3$$F{[F'`k_),'`t|}Q22#87!66X;-M%%M%%Y%%m**Z--{--{--B**[%%n%%O$#", -"]zz]XXQXX'XXQXXuXXq..q..uXXuXXfXXgXXuXX0..q..WXX]XX'XX0..5..QXX'XXuXXfXXuXXyXXq..0..0..0..0..0..5..5..5..0..gXX,OO$OOQXXfXX0..| V n n n n } } | | | O..| | +..+..4..5..q..uXXgXXWXX'XXfXX4..| O..5..yXXuXXvXXvXX!XXQXX'XX_XX_XX_XXFooJoovOONOONOOZOO=@@<@@h@@|##o$#i$$T$$]$$f%%_%%E==m==m==(==8;;e44d44D44b44c::x,,F77711>21ittasavTYZ`_|||V`_^{[>87zeeKqqa66F44;&&>oo'''8_)r_)d{[e&&J44(44/22t&&/44@98Wqq:09ewwywwO09Z55x==t==l==I44l==a==Y44~66+87%65U44/66/66(441$$k_)#)(9_)g{[x==L44Y44a=='XX,'`w)(u_)F{[,oo3&&X;-x==&&&,oo}XX}XX,oo,ooF{[k_)&)(&)(>)(W'`w&&U66Y66 ;-W%%Y%%J%%g**A--$:;K::1::;;;M**J%%", -"'zz#OO'XX]XX'XXuXXq..q..q..q..uXXgXXuXX5..q..gXX'XX]XXq..5..WXXgXX5..q..0..0..5..5..4..4..5..5..O..O..| +..fXX$OO#OOgXX0..+..C n b n n b C C } | | | } } O..O..+..4..0..q..uXXuXXWXXyXX4..O..+..0..uXXfXX!XX^XX+oo]XX]XX`XX`XX`XXCooJoovOOvOONOONOO6++>@@h@@V@@|##o$#o$#T$$|$$f%%|&&'&&!&&|&&(==2;;e;;e;;@:;j::z66V88/88hqqtttQyy3FD6~!}|}h~!!]'q77xeeTww%98M55;&&}XXI'`9_)7_)8_)D'`('`B{[! 6&&'66hww)ee`wwQee~eelww-87L44Q%%M%%Q%%8$$N%%X;-@87:09=87C55#87#87*65t&&n{[8)(8)(j_)W >$$%&%O%${XXJ'`a_)8)(m{[3$$X;-L44h==3$$yXX]''m{[F{[V{[,'`&)(DKJ /^>)(D{[2&&n55I44W%%O$#RXXTXXo#@P--C66v99A99Z66a;;}--", -"Jzz$OO'XX]XXQXXuXX0..q..0..0..uXXgXXuXX5..0..gXX'XX]XXuXX0..gXXuXX4..0..4..4..4..4..+..+..+..O..} C V | uXX#OO]XXuXX4..| V b b n n b V V } | | | } C } | O..+..5..0..q..q..uXX0..+..O..4..q..uXXfXX^XX^XX+oo]XX]XX`XX_XX_XXCooFoo/oovOOvOONOO6++=@@,@@h@@V@@|##|##o$#T$$|$$~&&j%%j%%~&&N==o-=7--7--];;+:;j55G77H88911>21grr+NM~TTR`_5~!7~!*32owqowq%98C55%&%F{[m{[k{[>'`|^^SHGZKJ:)(B{[R44Qqq!ee)eegwwQww`ww!wwO09Y44M%%@$#XoXtXX'XXa==G99awwbqqR66[66^66O65.32@%$[XX_'`W'`y`_W'`E :oo|$$#oo/'`p_)D'`>$$f==f==0$$D{[D'`y_),'`,'`k_)>)(ZKJRHH /^w)(,oo3&&t==n%%j{[N'`n'`B'`T@@L--h993q03q0P99Z661::", -"Hzz]XXQXXQXXWXXq..5..5..5..0..uXXgXXuXX0..q..gXXQXX#OOfXXq..WXXuXX+..5..+..+..+..+..O..O..| } V n b C yXX#OO'XXyXXO..} n b n V n n n V } | | } C V C } | +..4..5..5..0..5..+..O..O..4..0..q..yXXvXX!XX!XXQXXQXXPXXLXXLXX2ooFooJoo/oovOOvOOZOO=@@:@@,@@h@@V@@V@@|##i$$]$$~&&6%%6%%j%%p**}==o-=7--{;;];;h::x,,J,,j<<=1<%21lhh(NNJRT=RT[RR.+Or66898T66U441$$('`'XX;&&BXXFKJ,GFGHGu_)%&%.09!eedeevqq%65U66+87G99W66h==%$$XoXBXXk{[V{[p&&%09QeeywwR66W44)22Q22.32/44W44@21toop`_p`_N{[o%$_22/22:ooH'`j_){XX-&&0$$n{[j_):)(@)(w)(u_)w)( /^RHHZKJ>)(F'`q$$Q%%8$$d{[q/^#/^H/^;(/]++S--f993q03q0P99Z66y66", -"Gzz'XXWXXWXXgXX0..+..4..5..0..uXXWXXfXX0..q..gXXQXX#OOfXXq..WXXuXX+..0..+..+..+..+..O..| } C n b a V q..]XX'XXq..O..} n n n V V n b n C | | } C V C } | +..4..4..5..5..O..| } | 4..0..0..0..xXXxXXvXXgXXgXXdXXdXXsXX2ooCooJoo/oo/oovOOZOO6++:@@,@@h@@h@@h@@V@@o$#T$$j%%6%%6%%j%%p**}==o-=7--,43{;;0::q,,l,,i,,4,,v<$$-&&F44X;-N%%XoXZXXXoXk{[m{[p&&cqq(eeawwU668&& %$ %$)22I88-98=65&21` P ` E22(66[66%21P j_){XXO%$`XXj_)%)(@)(1ER>)(w)(>)( /^DKJ /^k_)V{[R%%R%%GXX&'`T^~T^~8/^,(/7XXb--S66`99_99D77f661::", -"GzzQXXfXXgXXuXX5..O..O..+..+..yXXQXXgXX5..4..q..]XXQXXWXXgXXgXXyXX+..C O..} C C } } C n C n p n q..]XXgXX+..} C V V C C V n V V C } } C V n n V | +..4..4..+..O.. . ......$..=..y..a..a..h..F..hXXxXXxXXfXXfXXfXX_XXZoo:OO>OObOObOOnOOGOO=@@=@@>@@<@@j@@]##]## $#H%%K%%!%%t**J=='==}==}==;--;;;);;$:;=:;d>>C>>d,,9ytqfd)NNCTY9~!L|}o+Or%%U11o32]22+%$w&&U443$$ /^DKJm{[F44%09'ww!ww 76&&&k_)F{[,oo&&&N%%]'']''3&&q$$}XXyXXp&&X09lwwG99p&&}$$woowoo8&&&65198@98&656&&w&&_22T66=09;09*65t&&<$$/22J44O%$K'`>)(#)(|^^,/^-)(,/^;/^,/^9_)g{[XoXc%%(@@JXXv'`~^~I^~'^^q(/9XXD##F::P::e;;A--t;;t66", -"FzzgXXyXXuXXyXX+..| | +..4..yXXWXXfXX5..4..q..#OOQXXgXXfXXuXXq..+..} O..} C C } } C V } V b C yXX]XXWXX4..C V n V C } C V n V C } } C V n n C | +..4..+..+..O.. . . ...@..$..=..u..u..s..s..h..iXXaXXuXXyXXyXX_XXZoo:OO>OO>OObOOnOOFOO=@@=@@>@@<@@j@@j@@]## $#{$$M%%2%%!%%y**a**N==N==,==;--&:;w::c>>m>>C>>s,,Sqqcyy8kjEPP+^~G|}J|}@'`I}{H../$$;oo@%$f==O%$F'`'XXL44109swwCqq 76;&&]''&)(]''OooN%%q$$F'`s_)}XX3$$F{[T'`,ooZ55O09a66q$$woo+%$8&&r&&.32O65^66>65~44~44(44*65#87{66(44t&&:oo2&&f==0$$V{[F'`g_)7_)d'`d'`g_)q)(;/^,/^9_)h'`eXXLXXJXXn[]G/^(^^=(/]((z++C@@2##]%%'%%m**-;-<::", -"(lluXX0..q..0..O..} | +..4..q..gXXfXX0..5..0..]XXQXXgXXuXXq..5..O..} | C V C C } C n } C V | uXX]XXgXX+..n n n V C } C V b n V C } C V V V C | O..+..+..+..O..J . . @..$..=..r..r..y..y..p..f..g..q..q..q..PXX`XXAoo>OO>OO>OOnOOFOO6++6++=@@>@@<@@j@@]##]##j$$l$$`$$2%%~%%7**e**e**`&&/==.:;b>>A>>V>>V>>C>>,1OObOOnOOZOOZOO6++=@@<@@j@@]##]##%$$j$$`$$}$$7%%~%%~&&~&&]&&^==|;;c44h55A>>f66g,,K88xqqXuyQCC ^~N}{(UU*mn mn,VB5ERg`_)'`I O%$U44$87o09$09R662&&('`%)(IHH%)(W -&&z==p==W J'`oooe&&-oo('`n{[ooo>$$('`%)(<$$H44T66~44|$$N{[H'`H'`W `XX-oo>$$`XXJ'`a_)a_)B{[{XXOooF{[d'`>'`'''rXXn%%O$#j{[5_)vKJjHGvKJ}^^='`wXX%@@[++[..r(/]((9XXD##;##~@@W@@^@@^@@*@@&@@", -"^llyXX5..0..0..+..+..4..+..5..0..q..q..yXX0..4..0..uXXQXX]XXWXX0..} a a p p p a b a p b n C O..yXXgXX0..V a a b V } } C n p a n V C C C C } } | O..O..O..O..O..&..*..*..=..y..y..a..a..p..s..s..g..iXXyXXyXXyXXLXX_XXZooAoo:OO:OO>OObOONOONOOZOO=@@>@@<@@j@@]##%$$j$$`$$2%%~%%7**~&&e**v==D==7;;|;;8::b>>g66Z66:wq%q0Gtt:lkkRTgWE[DDShhLss mnSGFrER#`_)'`w&&{66$87^44%&%ooo`XXY'`%)(FHG8)(oooe&&(22(221$$ooo2&&J442&&-oo`XX`XX('`:)(IHHOObOO/oovOONOO6++=@@<@@j@@]##j$$l$$`$$2%%~%%7**e**e**b==Y==3--7;;|;;8::h55B66Y88S77F88SddYZZkRTjPLaNMIsswmnHGGxWEx`_@ooR44*98T66@%$W'`W'`[XXE 1)(EGG$)([XX6&&d==W22o%$<$$d==R44t&&|$$=ooI y`_$)(-ER@)(Y'`0$$e&&2&&>$$J'`HKJ /^>)(T'`}XXm{[&)(ZKJ /^F'`'XX8$$XoX5_)MHG4/^G[]zXXeXXe'`9/^]^^]^^q/^q'`&@@v%%)%%F%%T@@7XX@XX@XXC@@N--H::#:;)@@0'`7/^@/^", -"Hll0..+..+..4..O..+..5..4..5..5..+..0..uXXq..O..| q..]XX,OO#OOuXX+..C a p t p b b b a p V | 4..yXXfXX4..b a a n C } C b p ; t a n C } } } O..| | | | | O..O..*..6..6..y..y..y..u..u..s..h..h..iXXaXXuXXuXXuXXdXXPXX`XXZooZooAoo:OO>OO/oo/ooNOOZOO=@@<@@j@@]##%$$j$$`$$2%%7%%7**~&&e**`%%b==4--e--X:;o:;q::c44Z66Y>>Z77iyygCVbRTAQWaRTWBB5YU2`_Z tooQ22>65O98_22:ooN{[=oo6&&=oo1)(:GFPHHN{[o%$6&&w&&<$$#oo=&&6&&<$$! I H'`0)(7)(0`_1$$2&&D44^44b55J44-&&`XX]''F'`T'`m{[,'`ZKJSHGJKJT'`>oot==t==MXXw/^9/^e'`V'`V'`N'`&'`9/^$/^q/^&'`zXXlXX:XX:XX6XX#XX'((y(/@XX;##`--L--[++7(/0/^q/^", -"Gll4..| O..O..| O..5..4..0..5..+..5..uXXq..O..O..yXX]XX$OO]XXuXX5..O..b a p a n V n b a C +..0..uXXfXX4..b a b n C } C a t ; r a n C } } } O..O..| | | | O..O..*..*..*..=..=..=..r..r..p..s..h..iXXiXXuXXyXXyXXsXXLXX`XXZooZooAoo:OO>OOJoo/oovOOZOO=@@<@@j@@]##.$#%$$k$$}$$7%%~%%j%%~&&5%%i**4--=43:43o:;};;.:;k::8>>A66iyykCVTQWo|}4 ZWEd|}[$$#21733q66R88^66@%$:ooo%$H44~44|$$7)(UGG!GGW'`|$$=&&=&&=ooE :oo=ooI H'`p`_0)(1)(0`_I p==D44^44b55U66]66R66M55p&&,ooF{[m{[s_)GHGGHG&)(k{[%$$7;;c55r==D[]E/^&'`*'`n'`A[]n'`>(/0/^7/^0/^N'`*'`Y/^,(/t(/u(/q(/#(/]((V@@9##6##JXXm'`w'`N'`", -"Fll4..} C | +..O..| | O..| | 4..yXX0..O..V 5..'XX,OO#OOgXX0..4..} V n n C } } C V | 5..yXXuXX0..} b p p a n C C n a r t a n V C } } } } } | | | | | O..&..%..e..t..i..a..p..p..s..s..h..h..F..F..F..xXXvXX!XX+oo#oo&OO5OO6OO,OO,OO>Rrr{VVeQWH<(/0/^&KJvHG+/^0'`m'`t(/e(/1(/7XX]%%)%%TXXqXXYXXY%%", -"Dll4..} C | +..O..| | O..| | 4..yXX0..| C 0..'XX,OO#OOgXX0..4..C V n n V C C C C | 5..yXXuXX0..| b p p a n C C b p r t a n V C } } } } } } | | | | O..&..%..e..e..t..u..p..p..p..s..s..h..h..F..F..xXXxXX!XX^XX#oo&OO5OO6OO,OO,OO(/F[]lXXlXXlXXlXXXXXw'`*KJfHGiHGT^~;(/0'`0'`e(/P(/W@@S--m**$@@eXXGXXY%%", -"S00+..} } | +..O..} } | | } +..q..0..| C 0..'XX$OO]XXfXX0..4..V n b b V C C V C | 4..yXXuXXq..| n p p a n C V b p t p a n V C } } } } } } | | | | O.....#..w..e..t..u..y..p..p..p..s..s..h..h..h..iXXaXXvXX!XX+oo%OO&OO5OO$OO,OO,OO>OOnOOGOO>@@<@@^##(##X$#k$$'$$|$$1%%1%%4%%_%%B==3--8--9;;y44m44v44<::*:;k,,jwwfkjAYUa 722k33.65{55|44}22*21T11a`__GGg`_;ooQ 9)(xVBxVBUHH$ooW44-65=65#21_ / Y}{c..F I}{s`_QEEj)(^ @%$p==z==(22X;-x==Q%%XoXk{[7_);/^9_)h'`9_),/^,/^=/^4/^x'`CXXd{[>/^mKJ=/^T/^e'`D[]D[]G[]qXXqXXD[]mHGpHGpHGT^~U/^>(/,(/0'`OXX6##$:;t;;b%%rXXMXX8$$", -"A00+..} } O..O..| C C | } } +..0..5..} C 0..QXX#OO'XXuXX5..+..n b a a n V V n V } 4..q..yXX0..| V p p a n V V a t t p a n V C C C C C } } } } | | | ...#..w..w..e..r..y..y..y..p..p..s..s..h..h..g..iXXaXXvXX^XX#oo&OO5OO$OO$OO,OO>OObOOFOO6++=@@l++u@@{##u$$s$$Q$$Q$$Q$$/$$k%%v==|==8--=43y44m44y44w;;,;;R--`::3q0JmmNRTW..W11-21;%%too;%%-21>21s`_IVVtERo'`#`_=ERvVB]GGQEEH22498<98 54x..h}{x..soo:21b11Y}{2`_xWEM)(_ |$$w&&_22D44(223&&yXXu_),/^bKJFKJI'`XoXBXXg_);/^THHTHH|^^7_),/^THHkHGbKJ,/^q)(9_)7_)7_)g_)h'`g{[4/^=/^=/^q/^T/^0/^R/^9'`:XXg**f66t66W%%A{[k{[}XX", -"Z00O..} } O..O..| V C } C C O..0..4..C C 5..WXX'XXWXXq..4..O..b a p p b n n b n C O..5..q..5..| V p p a n V n p r p p b n V C C C C C C } } } } } } . E W w..e..%..=..=..y..y..p..p..s..s..s..f..f..iXXxXX^XX#oo%OO&OO#OO#OO$OO:OO>OObOOZOO6++t++j++g@@}##r$$t$$f##f###%$h%%v==|==8--J33<43C44{66C55r::R;;E--a<54s88Y}{WVV=YUtER ERXTY^GG4ERc`_c88jee%ewU22Z)(AWEdool33j88q33^}{3WE,WE2`_x..5&&H44T66#87+87^44Ooow)(ZKJDKJs_)3$$F44a==F{[&)(GHGSHGRHH /^ /^ZKJRHHZKJ /^#)(#)( /^DKJJKJw)(F'`I'`h'`h'`g'`8_)@/^9/^&'`lXXZ--D66b66Q%%k{[m{[`XX", -"C00O..} } O..O..} V V C C V | 5..4..C V 4..fXXWXXfXX5..O..} a p t t a b b a b n } +..5..4..} n p p a b n b p ; p a b n V V V V C C C C } } } } } J P I W w..%..$..=..=..=..y..y..p..p..s..6..7..g..aXX!XX+oo%OO&OO#OO#OO#OOAoo:OO>OONOONOO<++r++t@@k@@A@@&##-##-##E$$u%%]&&D==3--e---43044}66[66Z55y>>H::5<<'dd%IPo1%%T44{66;09,09R661$$y_)JKJw)(yXXF44~66N55,$$s_)IHHIHHHKJ:)(a_)j_)y_):)(:)(:)(y_)y_)@)(IHHSKJ:)(T'`]''V{[g{[9_)=/^w/^g'`b%%a;;.87p66R%%V{[W 0$$", -"h00| } } O..O..} n V C V V | 5..+..V n O..yXXfXXq..+..} C a t r t p a a p a b V | +..O..C b a p a b n b t ; p a b n V V V V V C C C C } } } C J P I W W #..$..$..$..=..=..y..y..p..p..*..6..f..iXXvXX^XX#oo%OO]XX]XX#OOZooAoo:OOvOOvOO-++<++$@@d@@r@@Z@@&##X#@*##Z##h%%]&&B==Y==4--v33G44b55v55x>>0>>W<>#q0.hgnYUu..v11J..3`_S p88d00L889}{pmnsMmgUI5YU;TYWVVJUI2WEk33qew@ewQ11LYUQUUa..r992ewg88w}{ySAkUI|EE8}{' +%$T44^66#87*650$$a_)1ERj_)ooof==b55(22`XX:)(YHH3ERy`_[XX6&&W22w&&|$$)'`` 8&&)22 %$q`_=ER@TYHKJy_)n{[yXXm{['''@$# ;-H66!99~99n55>$${XX_22$98", -"d00O..| O..O..} V b J H H . *..6..&..J t V +..5..O..V a t - - r p n n a t a b V } | } n a t a n n b p r r p a n n b b b n V V V V C C C C ...R K F G P W w..e..e..%..r..=..y..y..6..$..$..y..f..aXX!XX'XX#OO&OO#OO]XX'XX`XXZoo:OO/ooO+O:++>++a++5@@6@@4@@4@@Y$$Q$$1%%k%%r**v==v==r**:430;;1::V66T003ewhggBNNGUIg}{f`_OTYq|}w99#ewd88(QQZBBKBBxUIXWE$$|$$T44[66", -"s00} } C C V b a C V C | +..4..O..} t V +..5..O..V a p r r t b V V b a a b n C } C n a t p b b a t r r t a b n b a b b V V V V C C C C . R K F G P W W w..e..%..r..=..y..y..6..$..=..y..f..aXXWXX'XX#OO$OO#OO'XXQXX_XX`XXFooJoouOOO+O>++a++5@@5@@6@@4@@t$$Y$$/$$k%%r**v==v==v==:43%;-1;;S66gwwNyyvddhgg@mn0TYZWEXERT..s991ewB88e}{FBBfMmkUIC)(7}{WVVFGF|RRi}{{11j..GYU/gg>gf+QWA33>ewK88s}{2YUHYU`QQc11|44X32}$$|$$U44L44A{[;/^$)(W'`o%$W22=&&I p`_p`_M)(j`_s`_s`_] |22@54d33R..doo;21g33+21s`_}YY_GGUHHl`_:oo@%$1$$3&&W66;wq9wqkqqm663&&1$$6&&.32W44", -"B99C V n b a a p C C } | +..+..O..} p V +..4..| n a a p p a n C C V b p a n V V V b b t p p p p t r r p a n n b a b n V V V V C C C C . K F F G G I W w..w..%..%..=..=..y..6..$..=..6..f..uXXWXX]XX#OO#OO]XX'XXPXXPXXEXX2ooCooWoouOO-++p++i@@5@@5@@5@@S@@F@@Q$$s%%r**v==B==B==6--e==#;-z77PuuytXewPppjMmQUU6WEH11$ew4ewA88<|}`ZZcZCKYUi|}f|}|YY(GGXWE5}{h..)QQ^ZZ!gglgg+QWe33,ewe99 |}dPL/ZZ[EEW<<@54I22' Q /22(22Y'`GHGPHHp_)#oo:ooW'`-ERAKJ1)(q|}r|}c`_<`_u|}*21;65c88S11Y11T22f33;%%<`_XTYXTY0`_#oo/22D44f==F44-87lww_wwQ99h==-ooo%$Q22&21/$$", -"N99} V b p t p a N N B ! ~ ~ ! B a C +..+..} n a b a p a b V C V b p a b n b b b n g g f f g g f f g m H H M M M H V V V V C C C C . K F S D G I W w..w..%..%..=..=..=..6..&..*..7..q..uXXWXX`XXZoo$OO$OOZoo`XX2oo2oo2oomooYooWoo-++r++i@@i@@5@@i++d@@A@@a$$<%%~&&p**N==N==M==[&&_==R66Luuhii0ew@q0{wwRggjZC!WW/11:ewneer00^<|}-WEvZC^nndmn'QQS333ewOewS<OO>OO:OOFooCoomoomoomoo9ooYoo@++r++y@@i@@a++a++2@@k@@r$$<%%~&&p**N==N==<==E==2::=76Aee]uuUuu=wq1ewyds)VVrYU'<%%.;->&&2$$2$$d&&E66Mqq(ww)wwmqqK66~22222o21j|}4WE", -"M99O..O..C a t p b 3 q z c z 7 7 7 n } O..| V b b V b a a a n n n b b n V b p p n | @..S d d S K K F S F R R K F K R V V V V C C C C J F S S D D L I W W #..#..$..$..=..*..*..4..5..q..sXXPXXCooFoonOObOOvOO/ooDoomoomoo,oo3ootooiOOt++y@@y@@a++p++$@@d@@+#@X%$j%%e**p**p**^==8;;d55=76.wqIuu^uu;rekwwsiiYxx;SAw<|}G11k33W88@54yooy|} ER0ER<`_u|}u|}s`_tER0EROTY0ERk)(tER0ERj`_`$$d33+21<`_`GG(RRy|} %$E22T44O;-loo<'`:'`zoo}66jww_eeeeewww 09*54322uoo4|}iTY", -"m99O..+..} b t t a < 0 e e 0 6 6 0 V } | } n b n V V n b b V V V n n V C b p p V +..@..S s , Z K R K h S F K F S F F V V V V C C C C J F S Z A D L I W W #..#..$..$..=..*..+..4..5..R..sXXTXXCooFoobOOvOO/ooJooDoomoo&XX%XX=oo0ooiOOq++y@@y@@j++>++a++i@@'@@M$$>%%M&&0**0**,--e;;D44A55888seexee!00@87>reLxx%%M&&M&&M&&|==2;;;43p44P66M88p88G55L55@wqqxz5SAZ,,q< 5 9 e e z 7 7 8 N B ! C V n H J R K K J J C C V N B C V m m M K J M g y f M . &.. . J M m M M m m N N N N N N N N J J H F S S G G @..@..@.....&..O..O..O..} | O..>..9..E..KXXTXXRXXRXXRXX1oomoomooRXX#XX[..;ooeooO+O<++r++<++-++r++s@@8$$;%%L%%,%%;%%z$$b**!==5;;t44m55m55t44!33t55@76^ii0SAS,,,<,<<<2<%%wooP 0`_y`_Y'`Y'`j_);'`3'`pXXy&&)44J66;54C44@&%5oo~XX9|}8|}]))R)(R)(", -"q99+..O..l u u 2 > 5 9 e e z 7 8 8 N B B C V M H J R R R . . } } } ! B C C C H H H M M m m m H ...6..7..*..J M M M m g l N N N B B B B . J J F F F G G @..@..@.....&..O..O..O..| O..+..>..8..E.. X.KXXYXXYXXYXX1oomoomooRXX#XX[..%ooeoouOO<++<++<++-++r++y@@8$$A$$,%%,%%A$$z$$b**!==}--!33r44~335;;~==6;;E55xiigAZV,,0<<5<<1<<'))3<<.1<*1MmlMmMZCl^~^11V88F33D<<~QQ!YYjYUKBBsmnaVB3YUpVBBBB@YU*ERq|}c`_<`_xWExWEI}{$%$d33{55+54+54T448&&<$$=&&H44O54.32>%%! E `XXD{[J'`;'`1'`)..m%%o;-=54]44C44cooWXXY)(U)(h)(o)(aTYX)(", -"0994..+..N u u 2 > 6 0 e c z 8 8 8 l N C C V H J . @..@..@........| | | ~ B B } +..+.. . M m H . . J . 6..iXXxXXf..&..H M m g g l l N B B ! ! ~ . . J F F F P P @..@..@.....&..O..O..O..O..+..+..,..8..R..Q..Q..|..|..#XXRXXmoomooRXXYXX[..%oo8ooWoo-++-++-++-++<++y@@1$$z$$;%%;%%A$$z$$b**b**!==}--|--~==b**n&&m==855Iee;vcr,,i< 6 0 c c z 8 8 8 n V C C H H K R R R R . ...| | | Q v N ~ 0..q..4.. . V } O..} C } 5..fXXgXXq..| V b b b b l l N B ! ~ X..X..... . . K K K P P @..@..@.....&..O..O..O..+..+..4..,..8..9..n..n..W..W..^..YXX1oomooRXXYXX'..VXX>ooUoouOOO+OO+OO+O<++j++/##e$$z$$A$$z$$e$$(&&(&&(&&b**n**b**(&&b&&!&&s44feeRxx^WW|<<;1<_<<(WWqSAUbbIbbmMmwSA=TYd)(2ooC11%109&98O65d==w&&z==(22z==koouXX`'`(..xoob44'44[441216ooZ'`y)(3TY`YYfTY/)(", -"%544..+..N i i 4 1 7 q c v x 8 i i n V C J H S F K F F K J J } } } T x v X..R..fXXq..+..C } } V n C +..q..q..4..C n b n V V N N B ! ~ X..X..o..&..... . R K R E E @..@..@.....&..O..O..O..+..4..5..8..8..8..3..1..b..b..P..|..RXX1oo1ooYXX'..[..;oo8ooUoouOOO+OO+O<++r++s@@1$$e$$e$$e$$e$$@%$@%$b&&n&&b**n**b**)&&_&&4::M88mff2SA(<%%=oo|$$D44U66]66x--joo{''S'`)XX$&%n44M44X&%QXXt)(^YYSVVAVV7TYT)(", -"@544..+..N i k 8 2 7 q v v x i i i V J . J F S D G S F F J J } } } Y v T ) 8..R..q..5..N N N B ! X..o..>..>..~ N l N B ! ~ B B ! ! ~ X..X..o..&..&.....R R R #..#..@..@..@.....&..O..O..O..O..+..5..8..8..8..1..:..] <..b..^..YXX1oo1ooRXXN..'..VXX>ooeooWoouOOuOO-++<++y@@/##1$$8$$8$$8$$n$$n$$n$$@%$)&&!==!==!==M==|;;P66,re=CVC,,-1..,..,..N N ~ 9..PXX_XXsXX8..o..~ B B ! X..X..X..! ~ ~ ~ X..X..X..X..*..&.....@..@..@..#..#..@..@..@.....&..O..O..O..| +..4..8..8..8..1..:.._ _ <..W..YXX1oo1ooRXXN..'..VXX;oo8ooUooWoouOO-++<++j++s@@/##1$$8$$8$$b$$%##%##+%$(&&n**~==}--)==:--3::a88uds=ZC4<<:1YU/GGOTYtERk)(xWEk)(j`_r|}' w|}#`_=ERKVV,BN:GF..B ~ 9..Aoo;@@I##:OOsXX>..X..~ ~ X..>..o..o..~ ~ ~ X..X..X..X..X..*..&..&..@..@..@..#..%..@..@..@.....&..O..O..O..| O..4..8..9..8..1..:..( _ <..W..YXX1oo1ooRXXN..'..[..%oo>ooeooWoouOO-++-++r++y@@/##1$$8$$8$$b$$%##%##n$$n&&b**!==~==,--1==_==F55*wqGffLWE)<%%o%$=&&z==U44U44I66]44m44V44S44<21!XXg)(NHG~VVBHG)GGYVVzMmaMmvMm", -"Y44| | C n b b b N ! ! } V b m M G E %..$..R M m m K F H C ~ o..:..] ' L..Y..L..[ ' x..J..^..XOoi$$b==-43644b==V@@&XXL..[ 2..2.._ _ 2..q..5..4..+..+..+..O.....$..$..@........O..+..+..+..+..+..+..+..+..+..+..4..+..| +..0..q..0..5..,..,..,..R..LXX`XXZooZoomXXmXXCXX:oo9ooYootoo9ooUooO+Or++r++r++j++s@@8$$_@@_@@$##b$$@%$(&&n**~==^--z&&%*&254666~00/kk}QQ[}{ZQW`WWrSATssa22y22dpp@dseVB:TYRUUyVBNUIwTY-WEZUIDBB#mnpmnbBNrVBhUI5YU5BN7MmEbbEbb#BN^GG4ERz)(j)(o'`^ ' 7..' 0|}z)(QEEo'`l`_=ERUGGYHHy`_('`_22m55/66$65t&&=oo|$$W22L66+65_66#98298:98{22n)()YY(VV'YYp)(uTYmVB4MmxMm", -"K44C } C V n V C N B ! } V M M M P #..%..$..R H M m S M H } o..1..2..2..U..Y..Y..J..J..$XX|oo7@@Y$$k%%e--<76guuhuu'66s%%Poo&XX}..@XX}..P..b..P..8..,..5..4..4..4..&.....R @..$..&..&..O..| | O..O..O..O..O..O..| | | | | 4..q..uXXq..5..>..>..,..R..LXX`XXZooZoomXXmXXmXX*oo9ootootoo9oouOO-++r++r++<++<++j++s@@)@@_@@$##b$$@%$n&&b**n**#*&O%$+*&c;;p55565|uu&CVlSAQWWvQWpYUAbbC11B11B22IsscBN4YURUUkUILYU%WE%WEDYU^BB}mmamn!BB!VV5YU}EE0HGsBNWbbmbbXnbPVV8ER#`_j)(#`_x`_^ /$$/$$w|}8ER$TY#`_q`_UHHbVBYHH/'`:oo{66O98*98'66d==! I #oo)66:65+98q00qwq5ewP88( O)(6TYp)(I)(e)(SVVbMmMVB", -"J44V C } C C } | N B | } C H H H E %..=..=.....J H V M H } o..1..P..^..}..&XXOXX`..`..,XX~++T&&8::Y66676u00}xxAIPMAZJuuu44EOO6XX+XX`..)..L..v..P..8..8..,..5..4..6..*..*..R @..=..6..6..+..| } +..+..O..O..| | | } C C O..5..yXXuXXq..0..>..>..,..R..PXXZooAooAooCXXmXXmXX*oo5ootoo9oo9ooO+O-++<++-++O+OO+OO+O<++6@@)@@$##b$$+%$b&&n&&n&&9#####l&&d;;P::L::G00&ds>hg7AZ_))VQW@mnC11t11M22VssimnQVVjUIEUUoWE-WERYYDYU^BB}mmpmnbBN!VV:TYAWExWE`GG5MmMbbqmn/GGc)(u|}I}{<`_k)(s`_H..`$$q|}OTY_GGrERj)(]GGKVV98rooJ)(D)(K)(K)(4TYmVBbMmCVV", -"B33C } | } C } } V C | | . J K R $..=..y..*.....} C C C | o..1..b..^..%XX&XX5XX5XXLooWOOm@@E&&M>>$98Vee:iu*cx UIH,,pUI,xz988P@@QOO:XXK..H..J..U..}..n..n..,..+..O..&..=..p..=..=..y..6..6..+..O..O..4..4..+..+..O..O..O..| | | O..4..0..q..q..q..5..5..0..uXXQXX$OO,OO,OO:oo*oo*oo:oo9ootootootooWoouOOuOOuOOuOOuOOuOOO+Oi@@p@@0$$m$$M$$:%%:%%:%%@#@@#@a&&(--@;-+;-[>>#wqrdslZC$!Q]QQOMmm22V11n22VppVbbtMmtVBEUU8WE-WEDYUQUUDBB[nnRnnamnWBB4YUZWEM)(}YY2BNqmn4BNOTYc`_] H..I}{tERtERI}{_ j`_OTYSGFOTYXTYPVVYGGq`_|$$W22;oot|}v)(wER2ERv)(Q 8&&:%%(XXeoo{22=986ew398V11P)(F)(u)(5TYYVVqMmwMmNVB", -"N33| +..+..| C V V V C | ......R @..$..=..y..6..*..| } } } B ~ ` 1..2..U..$XX5XX Oo8@@y%%-;-(;;;:;L77YrrawwJff>%dsNmmyYUeYU~nn&ewu22N22Vpp+dsXmnbBN6YU!)(t}{8WEDYU^BB#mnTnn+mnxBNhUI2WEbWE-TYWVV,VBFGFXERN)(3`_p|}k}{V)(V)(Y}{F h}{OERIVVSGFDVV5BN{YYt|} %$ %$@ooQ'`9)(<)(v)()'`>%%/44&54X21&%%'22Y88&ew000,21L)(i)(.TY^VVyMm}nnwMmZVV", -"M33+..5..4..O..C n b n J ...&..@..@..%..r..*..6..6..O..} C ! ! B / _ _ ' J..,XX{oog##p==E66898P88d,,D<oo>oo>ooeoouOO-++<++-++p++a++i@@`@@'@@0$$q$$q$$b&&+%$D$$a&&u&&o&%G**G::eee3gf^mmzmn&app22b22spp+ds.mnrMmbBN6YUp}{z|}*|}wTYySA%MmOmnOmnimnQVV:TY1WEXER-TY=YU-TY=YUJUIWVV&YUOERV)(Y}{c..c..k}{OERRVVDVV6BNDVVQEE8oo %$` y|}0|}y|}7..too=%%]22{55209&54422422$54409t99=21b)(7ER(YYFVV3BN3BN/BBiSA", -"m33+..5..5..+..} n n M J ...$..$..%..r..u..*..*..*..| C B B ! / ` ] [ c..+XXWOO.#@>--U667uy.pilqqX>:u,,Eqq)<>1&&X@+W++qXX+XX%XXmooJoo`XXxXXs..a..j..h..s..=..&.....O..+..4..4..4..4..5..0..0..q..q..0..0..4..| } | 0..gXXiXX7..&.....6..aXX+oo%OO9oo:ooCXXCXX*oo5oo9oo9oo8oo>oo>ooeooO+O<++<++-++<++<++r++j++s@@1$$e$$z$$@%$:%%V$$x&&u&&o&%D**S::9q0Jpp1gf}ppJwwi22appOdsQVVgUIQVV!BBjUI!QQn}{p}{%WENUIVBBOmnTnnYnnxBNgUI}EE2WEZWEC)(AWE:TYeVBimncBNQVV:TYAWE/}{d|}Z)(4YUWVVHGG{GG5ERZ &21&210oox`_w|}7..<%%h%%<%%O21}22P66422roo7oo%%%.54i33k..eER1TY(YY~GGFUIUUUYUUHUI", -"533+..5..5..+..} V V M J ...$..$..r..u..a..&..*..O..| C N B ! :..2..L..U..OXX{ooo#@:==n44O98:pi7piI88@=*T::/11z<>^**p##WOO+XX%XXVoo6++GOO%OOhXXj..i..y..y..=..&.....| } } O..O..+..4..5..0..0..q..+..4..4..+..| +..q..gXXiXX6..J H . f..vXX+oo5oo*oo]..]..CXX*oo5oo5ooeoo8oo>ooeooO+O<++<++O+O<++<++<++r++y@@/##e$$z$$b$$m$$V$$v&&D&&S&&J**D::F00eee8ds.ytN11{11>ap$MmC)(AWE5YU!BB!BBQUU%WEoWE%WEcUIfMmRnn#ds+dsXmnEBB{EE3WEZ)(z}{l}{2WEQVVumncBNcBNEBB!VV{EEC)(}EEgUIFGF;TYbWEI}{;%%+54X54@217..0oo#%$<%%too) ' #%$,%%~ z`_d`_x}{+1WE*TYDUI", -"533+..0..0..+..| } | R @..@..@..$..=..=..=..y..y..&..O..~ ) ` ] <..{ )..Looo@+G##Z--s,,D66twwOOQXXiXX7..7..7..7..0..,..1..1..:..` ` o..>..>..5..5..0..8..o..~ | 5..yXXiXXiXXhXXy..R R @..$..h...oXgooGXXZ..m..Z..DXXdoosOO0OO0OOYootoo9ooYoo;++t++<++<++j++y@@/##1$$8$$e$$z$$M$$+%$g&&z&&k&&;&&;&&K::n77tqq[ww4q0u11TYAWE2WEIUIFGF-TY;TYN)(L..[$$c..x..M)(<`_u|}yooH..s`_c)(I}{>|}*|}8}{Q)(9}{z}{AWE5YUyVBeVBQVV4YU,WEcWEtER0ER", -"433| 4..4..+..| | O..@..@..@..$..$..=..=..y..y..*..*..+..>..1..b..P..L..U..5XXo#@V--g>>h,,M77Y88=iuuvc|LLCll]yy`yykjj_,,@,>L,,e22=kjYPPmPLPNNWyyNttQaa}kk9vc/ffR778==0XX_..c..#XXFooAoo#OO&OOiXXiXXq..q..9..T..T..T..1..1..,..8..8..0..0..0..,..o..~ O..0..iXXaXXiXXh..=..@..$..=..=..F..OoodooDXXV..;..V..DXXdoosOO0OO0OOYooYootooYooiOO;++-++<++r++y@@s@@1$$8$$e$$A$$M$$+%$O%$B##0##1##>##r&&6>>p<X1..o..+..4..0..iXXiXXg..s..y..y..s..s..s..lXX$ooiooAXXV..;..V..AXXioo8OOYooYooYooYoo0OO0OOiOOiOO-++<++r++j++s@@/##8$$8$$M$$M$$+%$+%$o%$e##0##<###&%U--F>>/<<>q0X21Zaa-VBF}{ ^~]UU[ZZAUIbUIZBBOMm~ZZZUILYUNUIvBN+mnimnxBNrVBhUIyVBtVBySA%MmJss7apAgg[nnLBBQUU^QQt}{!QQDYUrVBgUIEBBcBN4YU>TYQVVcBNeMm*BNLUIcWE,WEWVV*BNTBBFYU_QQ>|}z|}v}{6WEQVVumnSbbVbb.mncBNJUI1WEs`_c`_", -"<32n C | O..O..+..+..&..*..*..6..6..7..7..7..6..6..5..8..T..|..YXX,ooI..0XX:==<98.piXpiLrrK887wqgff{LL2IPbllvssokj=PLkIP*kjw22A11Tyy:kjJhhrap$,><21psaRPPx<OOFoo2ooTXXKXXKXXLXXLXXdXXuXXyXXq..0..5..0..0..g..f..p..p..s..s..F..lXXlXXF..bXXvoodooGXXZ..m..V..AXX4oodoo5oo9ootoo0OOiOO@++@++iOOO+O-++<++j++y@@/##1$$8$$q$$m$$M$$@%$g&&h&&K&&#*&0&&Q--<<|}!)(6YU!BBOmn#dsUnn.mnrMmRVV,WEj`_I}{", -"|%%b V } O..+..4..4..6..6..6..7..7..f..f..f..q..q..q..9..Q..|..%XX,oo_..m@@g66*pi6jh|iiCrruqq[yyMllNIP9IP1lkGaa|jjvPL&~!CPL,kjisakhhYhhmaa}22+,>422JhhQPPt^~L^~3QW/LLEff8wqm>>8==}++oXXOXX+OOCooJooNOOZOOZOOvOOFoo`XX2oo2oo`XX`XXPXXgXXuXXq..uXXuXXuXXiXXf..y..=..$..h..F..bXXOoo|XXhXXbXXvoogoo4ooAXXA..nXXDXXGXX4oo*oo*oo5ooYoo;++q++;++@++O+OO+O-++r++y@@s@@/##1$$0$$q$$m$$+%$b&&(&&/&&=**4&&#:;B77$iumkkbkkakj4PLk )11F<+32AMMADScPLkIPlIPmPL|II[LL@lkVrrl==ROO2XXLoo1oomooHooXOovOO/oo:OOAooCooCooAooAoo`XXWXXfXXyXXfXXvXXxXXiXXp..$..%..r..F..lXX.oXOoolXXs..F...oXgooioo4oo4ooioodoodooioo*ooCXX*ootoo;++t++q++iOOuOOO+O-++<++j++y@@/##/##q$$q$$q$$m$$M$$+%$b&&n&&R&&1;;V77opiGCC`CCQCC,RTy B22(11NRTKmm;gf/nn$AZeTYzQWFYUjMm!nn#mnfMmvBNdMmfMm!nnRssUggKssIpp%apxmngZCiYU@WEzQWWYYgZC^nnVBB!)(;|}DYUfMmFbbHgg[nn%Mm^BBZUIwTYwTYcUIfMm[nnjmngZCvUI~ZZ}mm(nn(nnRnntVBIUI5YUIUI-TYN)(I}{c`_", -"]%%V n C +..0..0..5..5..5..0..0..q..q..yXXyXXgXXsXXsXX X.YXX,ooNooKoo @+);;7uy+cxTffDrr}00yqq6sa2NM5RTK~!lIP7NMMsswapWNNZTYw^~m|}o~!3DSxaaJ11L22qhg7nbThhghg$kj~NN*PLY~!m^~5QWPccY88l==D##o#@*@@%@@@OO^ooFooFooAooAooCooCooAoo:OOZooQXXfXXyXXxXXxXXxXXh..y..%..u..d..F..hXX|XX|XXs..R $..F..GXX4ooioo8OOhOOjOOhOOsOO9oo:oo*oo9oo@++q++@++YooWoouOOO+O<++r++y@@s@@/##%##q$$q$$q$$M$$>%%m&&0**G&&d==n>>3uy`ccrCVuNM3PL{~~g11a11zRT)gg2ap~gg+AZiYUWYY$AZHbbFssFbboMm%MmoMm%MmIggFssJgg-gfIppZCXpi%%0**C**{==d##e%%8==C77@pi;fd@fd lk8IPj<..,..9..E..E..yXXuXXgXXKXXCooDoo,oo5XX)OOn@@m@@H##,::1wq=fd&jh'rr.1<322tapLMMVRTp^~p^~8RT|jjW22ltt2hg*NM0FD#FD8nbLhhfhg/bbPhhehg#32Y22|22hhh&NM@PL5RTeRTCCC%lkuvcsvcOcxaww-:;a##f@@+@+Hoomoo^ooAooAooAooAooZooEXX X./..iXXaXXg..y..y..F..zXXzXXXoXk..u..u..r..r..d.. oXGXXnXXGXXhOOC++W##f$$U%%^##e++qOO0OOiOOO+OWooeoouOOuOOO+O-++<++j++s@@/##<$$<$$8$$e$$2%%(%%H==X-=j%%R$$H&&x55uwwqiuzddNddICCYQW+|}|PPEddXytwdsEgg.CVVmm-hg$gfZssIgg+mn+mnHggZss7apWgggmn9gf&dsueeKppqewUww;ew6ds-hg;Mm+CV&AZiYUiYUSBB0gf7apFbbLBBpSApSAqYUQYYnQWeTY@AZ,MmVmm#CV;MmWgg%gfqgfUggHbbumntMm*BN,VB$YUtER0ER[GG", -"V%%O..} | 4..q..yXXuXX,..8..9..E..E..E..gXXQXXTXXHoo^ooBooPoo8@@A##y%%3&&M>>KrrRff%jhsrr|,,O21jttjlk8RT*~!8RTINN7sairrisaqsacaa8apT22|22thg&DS@DSjnb8hg{22{22zaaKhhKhhLMM}NN3NM lk0CV6QWQ,,W,,yvcdww;;;u%%T$$,@@MOO@OO:OOAooAooZoo2ooTXX X.Q..iXXxXXaXXp..s..lXX[XXzXXk..a..u..d..[XXboo4OO2OO4ooAXXAXXgoo9++C++F$$d**d$$)##Z++@++0OO0OOWoouOOWooWoouOOO+O<++j++s@@/##<$$<$$8$$e$$}$$!%%j**L==e**=%%{&&s554wq%iuzdd$fdRkk:PLnYUcCVQddGpp,ap,gf,hg:hg8gfeds&gfUgg(nnTnn7apPppIpp:gf-hg7gf&dsyeeLppteeKwwUwwFpp8gfBmm$CVxZC+AZ(ZZ,MmUgg0gf~nnoMmSBBSBBgZCqYU@WE@WEqYUgZCXCVsCV^mmfmn(jjcmn Mm MmQnnInn$ds|nnVB", -"m%%+..| | +..q..uXXfXX,..8..9..9..9..sXXLXX_XXmoo^oo+OOPooEOO.#@L&&s==c##V>>=iu-lkolk+tr`,,I11VttxllcIPcIP2NMGaaprr=21Kaa2saqsa9apI22P22rhgyDSM!Q3!Q>&98$iuSddkffEkk)mmgCVBCV0lk}ddqds1gf9gf#hg5gf%gf6gfJbbUggKss*ewTww3reeds$hg9gf7ds%dstdsKpp;ewYwwApp,gfMmmpZC-Mm-Mmvmn^nn^ggJggJggJggFggqgfQggkMmqYUWYYqYUbZC~mm!mmfmn)ggKmmhZC#AZ^ZZzBNymn$dsWnnpVBoER}RRPGG", -"n%%+..} } +..0..yXXuXX5..q..yXX8..8..sXX_XX2ooVoo.Oo(OOQ++n@@V##6==A--z##f,,Opievc0vcYttF<<^119fdBll(LLeCV_aa522{,,!,,t22Iaa3mnIMMmhhvaa[bb(DDvOOQ{[K!Q|GG.NM4nb'bbIhhBMMDMM;kjGMMIRTn22p00XewC<< PL;uyK66B55e;;%%%1@@t@@4++~oo7ooewupi;gf1Mm)ZZhZC3Mmlmn!ggSssSsscmn%AZjYUwYUnUIqVB$MmzBNzUIXWEJWEBWE", -"-$$+..} } +..5..q..yXXiXXWXXWXXuXXE..EXXJooFooKoooOo8@@e%%z==-:;c>>m>>M--Q77riu0jh}ff~qqS88!tt&lkmkkskjAddxrrU<<3>>#>:T<XX.X.IXXIXXNXX!..xXX^XX#oo.oX.oXOooXoXzXX$..h..lXX1OO &%a66:54.&%n++sOODXXm..;..nXXdoosOOV++_##H$$933P33I**(##too7OO7OOqOOpOO%++e++y++Z++~##~##(##3$$s$$s$$W$$Q$$[&&W&&Q&&C--V66Prr|ff_cc9CVjffpfd(CCyIPBCVgkjmgg_gg3gfWdd}dd=hgnmn%hg}pp}wwPwwwew9ds4gfWdd{ppHppzggzgg2gfEdd}pp}ppEdd2gfQdd%hgbmnfmn>gf&apWpp&ap%ewJww~wwDppugflmncmn/nndNM`jj}aa-apQjjGZZfYUsYU[ZZXVBbNMGBB*VB{UUjWEB}{", -"=$$+..O..+..5..0..q..q..^XX5OO>W::m::R<xzlzl698<::!OOMoo{..(..UXX>>wqLddKcculkrfdfff!CCUWE:IPvCV[VV{dd-ds;ytJpp_ggmmm*hg0ds:ytree:yt;ds;dsreeIwwLwwEdd2gfcgg>/::[**$>:Cqq#salssIjjrPLM}{@++'DDMppXsaRjjIjjijhWjj,NMHZZdYUUPPgPLhPLhPLhPLyIPelkuiuYiiyxzuxzquy!55@#@~OOqoo=XX;oo9oo3ooMXX+oo&OO%OO.oX|XX.oX[XXG.. . ^XX:$$L44>54V33$$$#ooA..GXX4ooDXXDXX4ooGXXA..S..aOOY%%[44W99o65G%%pOOpOOpOOqOOqOOqOOpOOpOO%++M++N++E##(##7$$r$$=##-##G&&5==5==3==S--Q771iu|ff%lkgffkffqCV:IP:IP)CC7CVXhgmddItt7ewGdd(kk@hg4ds*ds3yt3ytXapVyy6ewPqqPqq$ap'ddZgghgg_pp#ew#ew{ttkgg[kk{mmEmm`dd+ap%sawgf@sa$sa@sa/ppUpp/pp>`77jwwvffovc}CCRIIT,,8UIcccLuu/qq#q0/<<)>>)::v::(::/,,P11)ww.dshRTJ11z88411 YU,mnlss(sslkhkjgCVtfd9ewIuu$xzexz0uy!55)--O%$i++RooUootoo=ooD..%OO5OO%OO|XXbXX|XXzXXk..aXX5OOA%%P44R44[%%DOO^XXnXXioo8OOdooiooioonXX-..}XXV++i33e66h99O43d$$0oojOOjOOhOOsOOsOOsOOsOOhOOv++M++Z++!##7$$r$$=##*##R&&a==q==.*&i--S663uy4pi3jh;fd-fdmkk8CVmCV{VVkkk7CVXhg>yt0ew,ds@hg'ff9iuAyy>yt3yt:dsXap@yt|tt@yt#ap'ddZgghgg_pp#ew$ew*ytkgggkjTkkZggYdd+ap%sa`ddIPsQWR,,/WW8xz;re:re&wqP00f<<]>>^::&>:l11Ypp=saHjjfRTc22oewoewM22yPLkssWjj6PL YUYRTMRTvYU+PL(mm_jjnjjhkjEmm'pp)qq-wqUiiTiiDeek88555c;;$*&a@@9OOjooaoo{XXpoouooSXXpXXC..iXXxXXvXX'XXAOOV%%B33533L##QXXWXXnXX4oo8OOsOOdooGXXAXXAXXgooU%%066k99W44S%%C++n++8OO8OO8OO8OO8OO8OOsOOhOOKOOm++C++u@@a++i++T@@ #@f&&^--'--X*&q&&T--}77FwwWuu3ds[ff hgXgf.gf`kk8CV!CC8lkPddNyySyy>dsMddMddXap@yt|ttVyy2yt6ew6ew@yt@ytXapTddvdd'pp@yt|ttKttBggQkk]mm/jj+ap+ew%yt`dd&sa&sa$sa)ppTppcpp~pp]aa sa sa+salsslss=saQppetr tr tr)rrMttajhfNM1mn.sa", -"Y##dXXLXXLXX X./..^..|..#OO,OO:OODooVoo(OOWOO}ooeXXy##~;;vqq'iifffYkk4CV{mmiCVxCVLZZ,AZ;IPRWEdsMddPddPdd'pp@yt@ytVyy@ytXewPqqXew6ew2yt1ds1ds'pp2yt@yt|ttBggJmmBNN^jj&yt!ww5tr+ap%yt%ytwtr4tr4trppp-ap;sa'aa saksssgfpjhegf(ppetrCqq/ww8tr=saLmm[NN'jjbpp", -"L##LXX_XXPXXKXX X.|..#XX:OOvOO^oonoo0XX[++l##G##_**t,,CrrMyyTaabkk;PLbRTxPLsPLRZZZZZQZZ|PP,IP,IP vc(tt)qq0ewYqqx11h11y<<^,,`ww1mn.YU'UU$VB+YUE|}p33`88_88D..gRToYUoYUrPLqPLqPLkPLIPPdYUiPLGNNPmmofd:dsaiiQiiTiiKeed88l77z88-65o;-w$$0++w++=++dOOfoofoosoo@ooooo^XX!XX!XX_XXAooI##N%%&$$ZooR..9..ioosOOhOOgooDXX4oon++G$$O43w66k99W44F$$doo4oo8OO8OO8OO8OO8OO8OO8OOsOOhOOKOOb++n++t++r++i@@_@@8##3;;755655k--q&&y--U>>@87Wuu3dsZffIddyiuSyyMddtfdsfdMddNyy]tt,ytNyyNyy,yt@yt|tt2yt'pp2ytXew1q0:q01q0[ww2ytXap1ds'pp2yt2ytVggVNNlCVBgg5tr!ww5tr%yt@ew@ewWwwRwwRww*trcpp;sa sa+sa.ds0kj1mn!jjAaa3tr|11CqqYpp)jjSZZOPL'jjqtr", -"K##_XX`XX`XXTXXKXX#XXYXXHooCOO+OO3XX2XX)++h==V>>111]ii}kk@jh1fd8kjHZZ.YUJZZNZCmNMJmm[mmzCVKZZxCV'ff>|77)ttFdd`ffDdd/ttTqqKqqKqq3q03q03q0Lqq.ew.ewLqq:I,,722!jj8PL1RTfWEe^~$^~$^~dRT]NN>NMoPLyPL-VBkPLIPPkRT^~~x^~7QWPCCMgg@q08ewpdsrxzoxzkee;65055X;-x**(@@EooroowOOwOOjoo8OOsOOgOOgOOtOO$OO]XX'XXKXXTXXCoo/ooJooEXX X. X.nXXdoo8OOAXX;..8OOX438reQzzj00p33n++iooioosOOjOO8OO8OO8OO8OO8OO8OOsOOhOOKOOjOOjOOe++l++/##8$$e$$5;;y55E556::k--a;;E>>X879ewFdd`ffyiufww[775<<`>>O<,Q<<NMDNNDNN[jjQpp722f11|11etr!jjGNNfNMpjh^pp", -"JOOPXX`XX`XXEXXEXXRXX1ooXOo:@@*@@ Oo[ooc##V>>yt2ewafdVCV'VV2ds>yt7ewq<<(::%>:oewANN[~~P<<'11)11K<>h77l88lww3dsZff1yt#q0/<<%<,>>>^>>^<NM,NMUmm!jjMtt}11H<43>43V33l<q0U,,w<<:q0Ktt'ppufdQmmpCV5CV1ds[ww`00Kttofd_mmBYUC^~WQWCZC_dd+apEpp6tr5tr%yt&yt6tr_wwo21WwwpppHss`jjoPLlNM9kjUjjUjjegfetr}11K<yt iu>a>>u--*&&N&&x**1**4$$f++x++h++#++o+Ok++2$$k++yoo%++%++BOOyOOeOO:OOAooAoo5++COOMOOXOoXOoMOOMOO^ooiooA..V..sOOP**h99{ee7re_44R%%sOOAXXGXX8OOhOO8OO8OO8OO8OO8OO8OO8OOsOOhOOjOOjOOn++W##6$$d$$^##y++>%%H33#76@76R55!55.87l88$q0Wuu{uu-q0{77Kqq,yt,ytjyyMggPZZVYU#IP,lkoytk11!<<:q0[wwKtt/ddpCV@IPmYUTkk@yt`00[ww/ddhCVo!Qs11R<NMijh(ss(ss=sa8tr}11l11Cqq(ppfgfigflssHjjfNM", -"AOOgXX]XX]XX]XX$OO#OOQXX$XXKooX#@u44Pii8bvnAZ>0>>!--s--t&&~--,**]@@[OO/@@[@@f++x++z++h++h++x++2$$2$$&++-ooqOO@++3++rOOSooDooHoo^oo:@@+@+:@@,@@,@@+@+:@@V@@dooV..A..G$$f99{eeW99_44G$$n++GXXAXXdoohOOhOOgoosOOsOOsOO8OO8OOsOOsOOhOO8++%++8++Z++^##)##Z++8++G%%U33>76L99r88c88b88l88 87gwwbww#q0L00.ewoap4fdhkj/CC#QWRQWdYUqkjYppk22Qwwt<<;q0]ww@ytBCVo!Q{WWKZZ`ppM11]wwUddEmmUQW[11J<> 87FwwFddNkkpcxacx+gf~uu[qq 87y77K>>q>>s;;z--y--a--y--r--w&&A&&@*&6##!@@a&&c&&v$$x&&D$$v$$(@@x++>$$,$$+++&oo@++@++VOOrOOGooDoo^ooXOo+@+,@@V@@i$$|$$4%%]$$o$#y++7OO8++I**G99#09X65833y++7OOZXXZXX0oopOOpOO7OOsOOsOOsOO8OOsOOsOOhOOhOO8++8++e++Z++)##)##E##y++s**!44^99hee209M88b88h88f77$q0fww-q0=q0Jttoap!ddnjjdCV6IP8IPGNNigfMtt)wwn11~,,m116q0Xew|VVo!QX!QKZZ_pph11;q0*ythgg}PPg<saUpp'ww_wwWwwWwwwtr@saoVBUmm[ss(ppetrYppRaa~ddnggnggvggnjjreHff@gfUiiDeeFee^00Q55454u55;65peeNii#xz~iiPeek779555::u>>I>>S55U>>E>>i>>S55K55i>>t;;l--O*&:&&$&%$&%;&&;&&;&&;&&@&%@&%6##d&&6##2##s&&B$${@@a&&c&&N$$/@@z++[@@Z$$<$$o+Or++-++mOO~ooIooHooXOoMOOXOo+@+|##|$$4--A44-43u**E##)##s**@65(99&65s**y++3oo=ooZXXZXX6oo7OOqOOqOOsOOsOOsOOsOOsOOhOOhOOjOO8++8++e++E##)##6$$)##^##z**+65)eeCuuLeeneeowq|qq}77+q0eqqfwwvww$yt|pp|ppRkkwNMPCCqNMfgf(ppMttmttBqq/,,k11'00z11)ddrIPUWE/CCCyye<<~<lkbggzssQpp8tr8trMttYpp#saegf[NNzNM0kjAaa`ww)rrWaaUkk6CVYkk4fdifdUkkANNBZCBZC", -"$OOZooZooZoo:OOnOObOOZoo`XXPXX`XXj@@f33.76276]661==:--|;;a44f55v>>t>>t>>r>>j77:87a55I::154h;;>**{--{--X;-/33u55~55Y55254b;;b;;b;;6::354b;;u;;'--]--j;;354354b;;=;-^--***#*&<**^--t==#*&p&&e##7##%&%Z&&i&&w##i&&~@@c++6##B$$B$$5##!@@a&&[--{--5**0$$a++(oo~oo)oo^ooNOO6++RXXXOo:@@T$$K33b99x99j446$$I%%~44(99E99u338++D..MXXMXXZXXZXXZXX3oo7OOpOOqOOqOOqOOqOOqOOpOO%++8++8++e++y++^##6$$d$$d$$6$$833i99Auu>.ew9lk{VV,lkLtte<q0c11>q0#yt-saOyt9tr5fd(mmqNMmjj3fd(ppYppMttAaaegf)jjFmmTmm[NN%VBzNMegf`wwEwwRaa>lkkCVjkj|ppCyy5fdPmmMNM@@]##T$$4%%f@@S@@-##=##:##N##9##7##i&&%*&+*&q##4##C$$D$$4$$v**v**v**c**C&&l&&B&&%*&f;;f;;f;;]--^--^--Q==Q==)--=;-j;;b;;f;;)--t==t===;-j;;j;;=;-^--***K&&K&&K**h--;**;**f--j&&X&%H**h--z;;v;;O;-c;;;65$87055)&&_@@!OOOOOmOOXOoNOO6++1oo^ooCOOh@@K==.76x99.76]33_55s99K99!44x$$9ooB..:oo:oo*oomXX]..CXXtoo@++qOOqOOqOOqOOpOO%++8++8++8++y++Z++^##)##6$$d$$h$$Y33!99|ll>x;;t==z&&K&&=**-**^--t==^--)--^--<**^--=;-]--)--^--t==t==^--]--=;-y;;i;;r;;e>>P557>>c--s>>s88^uuXiuxee wqceeceex88l;;O%$'OO_OO1++MOONOO6++MOOMOOMOO+@+o$#u**-43o54*reEee!99!44F%%iOO9ooiOO0OOYoo9oo*ooCXX:ooYoo@++qOOqOOqOOqOOpOO%++8++e++e++y++E##^##^##^##6$$h$$~44/99Auu/ee;87g55u>>i>>W>>+871ytFkk!CCTZZoIPMYU8QW%QWqRTOIPiPLkRT- e11XPLbttaqq}rrXq0dqqQttWqqF<<3>>,,,311.q0F<<;<,U<>i;;c77j88i88I>>u;;=;-f;;f;;6::=;-]--j;;6::655&87,98787!55t>>p;;t>>F55k77x77p88p88m77+wqTuuR00a>>365;refcx ZCkcxadsgddEii,reP66<**q@@@@@$@@COOvOOZOO+@+COOCOO5++MOOMOO]$$644%re809$65k**<++VXX>oor++-++uOOUooeooeooUooWoouOO0OO0OO0OO0OOiOO;++q++t++e++Z++E##E##Z++E##)##d$$Y33;76{99:763;;<**r==x--r77$q0Idd2ZCuIP[WWTQWZ^~n<87<87-87L66955u>>J55x77>98`uu0xzcccnffGee|qq@wqIuu[uuiii#xzMffadsPxxgcxRuu}>>{>>VwwMcc>SA.ZCkcxUxxwxzmffg88)--e@@1@@2@@COOvOOFOO5++^ooMOO+@+Doo|..,@@-43<65(55F33;%%WooN..VXXuOO-++uOOuOOuOO-++-++O+OWoo0OO0OO0OOiOO@++;++q++t++e++Z++E##E##y++y++^##d$$h**f44$65^33h&&B##J&&d--@879ewVkk{PP}WWwQWz^~l<<$|}V^~KQW6IPSZZ+PLvRT-^~vllstt|yyXlk%fd[yy&fd,fd.uy+trsqq/11411411zrr@fdMjj9sadttZqq;21AqqotrOtr6sa{hhvssCttCttokjRPP(~~J}{1RT,NM!jj)jj)jj~ddOytOewcddRkk/mm>lk>lkI,,iUIAIPDIPMAZfvcgvcZIPnAZcvc%cx7xzcAZJ,,L,,qUIjAZ>CV6vc#vc@xzdee^55q55r55$87Jee9xzBAZQIINccYuuxddsfdFkkVkkZff6iuPuuKuu/qq^qq[qqKuuhii#gfOZC%UIiQW+UI|CCogf3dsZffjcx(ccbCVMCVvCV)CCVCV2ds8<<'::7q0{ggvCVbCV4ZCMCVNccCkkmwwT--b##k##w@@Q++)OOPoo*@@%@@COO^oo/ooZOOj@@*$$2**L%%z$$y@@Woo;oo;oo>ooWooUooWoor++1$$8$$r++UooeooUooUooWoouOOO+O-++-++8++e++Z++Z++Z++E##^##6$$8**M**M**@%$W@@^@@ *&p;;f77Puumcc'PP.QWqQW&QW[WWqRTNYUlYUhPL>PqqTkkIP:AZ/ccdcxMww5>>9==3==m##n@@{++)OOS@@*@@+OODoomooJoo6++j@@r++j++r++-++Uoo>oo8ooeooeoo8ooeoo-++s@@/##<++eooeooUooWooWoouOOO+O-++-++8++e++Z++Z++Z++E##^##6$$A$$>%%>%%$##|OOT@@k&&*;-}77Gww`ff[cc2ZC0ZC~CC4CVfCVUCC;PLUCCpgfBqq|11Oyt3q0UqqQttKyygyyFyyXjhCCCZCCNll/aaSqqY<AZVccBkk9ewy77N>>B>>j--D##C##o#@h%%f##O@+Voo,oomooXOo5++>ooeoouOOO+OuOOUooUooUoo8oo>oo8oouOOj++y@@O+OeooUooUooWoouOOO+OO+O-++-++;++q++t++t++t++l++!##3$$0$$0$$_@@ +OTOO`++k&&Y--f77[qq)tt8iuIdd.gfyfdOapMgg`mm#IP7IPIkk>q0U,,e<<_00]00Rqq!qq!qqvrrBdd+lkiNM4lk.uysqq211Y<lkIZZzCV[mmHkk~kkHkk$ew8<wqY>>B--V--z==9::i==-##(OOBooBoo.OoCOOeooWoo<++r++r++-++uOOWoo8oo>ooeooO+Oj++j++O+OUooWooWoouOOuOOO+OO+O-++-++;++q++t++t++q++l++!##3$$q$$%##_@@3@@.+O|@@o*&a;;W>>f77]77{77bww>dsOapJttEaa/mm@QWf^~/PPjyye<<@<,Uqq.ewxrrNqq{00yqqvrrouyBjj0fd7ytpqq211k<>.piyvcUccIcc9vc8vc4jh{ii!rrkqqC88m<>w>>9>>S>>#q0xdd)ddByy.apwlkwQWd<<&QWpfd_00#<,OewPttQttxrrXq0}00fqqhrr#tr7ytFqqpqq~11E,,k<<#tr'yyOtr:21;1>8wqTff#lkyNMACCVll#fd#trFqq/11I<--a##~++EOO|ooPooWooWooO+O<++j++y@@r++<++O+OO+O-++r++j++j++-++uOOuOOO+OO+OO+OO+O-++-++-++-++<++-++-++-++r++s@@8$$b$$8##8##B##J&&d--Q--5>>W--W--p--F--{77 fdfkjcddZyyYkk[WW%|}rQWYkk3q0q< 111111 ^~9 811u VYUYkkNyy3ewHttpiwwwb>>T&&o#@{++)OO{oouOOWooUooWoo-++r++r++-++<++<++r++r++r++<++O+OuOOO+OO+OO+OO+OO+O-++-++-++:++>++:++YOOYOO>++p@@0$$_@@@#@B##***u;;i>>L>>U>>W--I--8&&9&&6<:z11|rr0ytQttTttjqq,1:T,,L<<;21otrzyy8sa|hh jh6savssXkj2NMTPP(~~y^~1^~aWEC..C22g11%QWjkjNyyUtt3ew]00q<<#<,c11oew ap-sa", -"5..m66yuyauuT88K77uyyolk5RTERRnPL{hhatt`yy6saFaaT,,;21 jh5IP5IP7kjkyyhyy`dd_dd@ap%saWkkEZZ%IPaPL^jj4tr(ww9mnR}{u22E11X+O=++7%%=++(|}uWE.FD^MM%mn6PLnNMsNM]NNqPLdRT$^~e R|}yWEEDD-mnYMMVGF[RRiER(22f22^22>mnpPLWkk*yt`pp;saHBBdNM2tr~>>!>>5q0VggbjjOytWtt0ytJqqcqq*iuKff]xxauuE66V--y%%o#@[++)OOr++O+OUooUoouOO-++-++O+O<++r++r++r++<++-++uOOWooO+OO+OO+OO+O-++-++-++-++>++:++:++YOOYOO>++p@@0$$E@@@#@f&&k--p>>h77d77y77!--s-->&&O&%J>>>dsyfdJtt%<,)00Pdd!CC_CCsfdqqq5<:B::R,,!11Otr]yy9sa9sa8saCtt6sadjhcllnPLERRL~!K~!IPP5 B22p11VYU^ddTqqKqqTqq]00r<<#<,k11oewRaapgf", -"5..(77:pi6piKrruqq.uy3NMFRT>^~lIPkjjxss5hgxssxss|11H<<>lk9QW#QWqNMXtr/ww`ddtgf&sa&sa]mmAYUDQWAYURmmppp(11Css+ER5.._##4..P..H T}{rWE}DDEnn)ss}ss+VBtPLGBBGssNpp>mnIYU.^~tWE(UU(MMemn=HG*`_mWEbGFe11#,>=ewVNNmYUvCV|dd*ds@sa]jjrgfa11{**Q>>'ww>sa{hhpttZqq~11x<< q0Cddwjhocx5uyF66:::Z--L&&N@@!++^OOYOORooTooWoouOOiOOiOOO+O-++r++<++O+OO+O-++r++<++<++<++-++-++-++-++-++e++q++<++-++:++u++4@@@#@T@@^@@&&&*;-h77l88h88v77G>>H--e&&+&%F::2ew*dsK00_::`>>L00,yttfd fdUttL00#=*R::><,WqqRttJqq[<>U00]ww=ytVgg", -"4..0wq8pi6pi6uyDrr/aaokj!PP`~~8RTKMMkjj|jjvhhsjhW11K<<lk,q0l11Rpp%sa%sa_ddHmm$IPAYU$IPdgf*tr(11Zpp5VB*`_#.._##%..V}{nWEQTT}DD7mnTjjJjj]ZZVUI VB^ssjpp_ss VBVUInBN&mnQssods5VBmWE@ER9BNS11w11&trlCVSYUBCVufdXap~pp`ss]aau11N::(,,;tr;sa3saH22U11P<<<,,611Bdd|kk+cx+iuJ77r,,h>>b--D##N@@5@@>++YOOUOOO+OO+O0OOtoo8ooWoo-++O+OWooUoouOO-++r++r++r++<++<++<++<++<++q++q++<++:++^OO/OO3@@^@@}OO'++0##u;;.87Nww@wqj88G>>H--y&&,&&G--0q0>ytH00Y::_::W<<3ewxdd fdtiuHtt><,4>>1>>><,[<<_<>^**l##6@@p++:++>++j++j++@++too%ooeoo-++-++WooUoouOO<++j++j++r++r++r++r++r++r++q++t++r++>++^OO~OO +OT@@/++|++S##*:;@98,uyIrr'qqD>>E-- =*9&&P--=q0Utt/<:=<,|00RttLyyzdd'ii[<<4>>P;;!::y,,=<,><,V<<<>>x<++:++a++8$$8$$u@@@++>oouOOr++j++-++O+O<++y@@j++j++j++j++j++j++r++r++t++r++p++>++^OO~OO}OO'++/++L@@4&&n>>rwwEuuSww+98T>>J--|**}**~::Tqq,yt[774>>4>>y,,><,[<:E<<[<<,Q::&<,!qqAdd2fdXuyDyyXuyZdd uy uy^aaYaacyycyy uyUaaefd9NM3PLKPLJCCyjhbyybyydyybttWttlrrRqqYttLyyHtt3ewQ<<)>>v11UqqUqqJtt", -"| >wq+98!77>wqwiu$fdYaaDhhHPLHPL#kjeapxttktteapCqq/ww(mmPCCbggRaa ew9tr5tr+ap&saRpp!ww4q04q04q0!ww4tr@sa`nnOYU)}{q B}{@^~GWEpRT]ZZ`jj]aa@sadgf@VB7PL[ZZ2mn;sacpplpplpppppcppNpp`aa)ss7mn)BB'BB_UU#VBGMM:NM'NN'NNHMMDhhDMMTNNIMM3kj`MMAPLAPL[BB4kjctt121[,,C:: <,'yyMjj@fdkrrP<<;21krrD88K;;u##5@@a++a++`@@z$$e$$!##;++uOO-++j++j++r++r++j++y@@j++y@@s@@/##/##s@@j++<++r++j++a++i++|OO{OO.+O`++]OOI@@j--V77,uy>iuAwwR88j,,m--(**X=*3<>o>:o>:4>>E<>P;;+=*4>>S88oq0S88_<>7&&$##0$$0$$q$$8$$/##t++@++j++<++-++-++r++r++<++-++j++/##e$$A$$A$$8$$s@@r++r++a++i@@5@@ +O.+O`++G@@rXXn##c>>tww/ii}iiYrrQ88j,,m--)**K--Z<:I;;I;;O>:C<>R::4>>_<<|00oq0xqq~qqGttyyyMyyRttJqq(00S88NqqRqqQttKyyKyyXuyjffylk]CCECCuNMbkk^aa8ytlrrDqqjqq811811yqq811611crr%fdtlk(LLylkgyyXq0_<sa:)<>L--L--+>:4<>A<< q0cqqS88=<,4>>=<,[<<(00xqq~qqxdd>dsNyy3ew=q0/<<5<lkXtrXtrhyy~dd`ddQkkZZZ$IPCZC^jj+ap6tr@ap+ap5tr5tr{jjNRTAQWGZZjPL7PLJZZNZCHmm&sa&yt_ppwgfggg]jj{jj~jjggg~jjDmmQkkVggdgf]jjdNMSNNImm_nnsjh=kj}hh`yySttfssQhh3nbHDD[|}jOOhTY0FD$ ;++@~!RLL_yyL<<>,><>>A<##6&&w,,,iuocx6jhOiuZ88d,,~;;K;;.>:l>>t,, q0uyyFrrC<<@>:$=*I;;:,>`<>W<lk8IPwRT>PLANNbjjRaaRaahyymjjqNMbggkyy!pp~ddpgf~ddPLmjjRaamjjHmmHmmEpp4q0+ap]mmVNN[mmzCV$IPhYUZZZBgg%yt@ew6tr_ddBggQkkJmmJmm]mmVNNCZCRZZVNNJmmBNNCZClCV^jj+ap,q03trBaaJaaeapMaaQhh=DS#FDF]'JOO[!!nJHe!Q0^~3^~WLL!11k<}00yqq q0111,1<411zrr0fdvkkCrrK;;b$$u++6@@q$$i@@y@@1$$s@@0$$i@@:++YOO>++i@@p@@p@@q$$>%%m**[==m**m&&M$$0$$u@@/##+#@9@@`OOW++K@@c##0==Y88Gcc,ZCejh9wqz>>T;;Y;;!;;d>>r,,N77!88CrreytD88u,,U;;E::-<,111A<<-<,]::,>>]<<|rrJttLqq1q0[wwcdd.ap+ytUqq]00z11Q<>O%$ +Oi++_@@i@@i@@`@@r++`@@a++:++:++p++i@@p@@i@@m$$>%%m**[==M**0**m&&:%%g$$e$$r$$9@@_++]++U@@c##0==Y88+cx>d,,P77zqqtyt`iiuyy q0-<,p,,111 q0`<>]<<|rrPtt.ewrqq[wwOew.ewLqq++)@@6@@i++i++6@@)@@)@@6@@m$$>%%0**m**m**m**q**m**w**L%%a$$C@@.@+P@@i##x##0==~779jh>n,,C887wq*iu,fd+fdFrrD88D88bqqDrr q0h<<3,,:<,{00Ytt+yt.ew:q0`00r<>O<, q0uqqbqqEqqyqq611sqq7yt1lkQLLiNM.uyhrryqqfqqEtt", -"p vww#q0Dww0iu>W;;.>:k>>l>>v,,A88Ett[ii+uyvrr811yqqTttwytcrr811EqqRqqxrrYttJttLqqj118<<)::;>:)>>^<<3q0.ewUqqLqqPttcddjkj)mmwlkYkkNggnggNggYkk)mm9lkndd> q0 q0cqqEqqfqq811/11krr9sa2lkBjjvyyqytTttfqquqq", -"t $ytKqq/ttIddsfdnddCyyQppTmmHZZGNN[jjAaa#saTmm^~~P<:~;;Q;; >:t,,111DrrHyy[yyvrrjqqcrrFyy+uywythrrouyDyyQtt|rrOewUqqU008<<;>::>:#<,]00PttZyyByy+yt.apyfd9lk4CVwlkNggndd.apByy^ddEkk)mmpfd.ewr<>5>>i77|77.87I>>o*&#*&#*&***K&&f&&B##e##e##o%$g&&h&&/&&=**W==`--4;;^33.;-e==F&&S##F##1&&~**b--D66#iu9jh9jh_iilqqN77N77v,,a,,D<>x;;5::5::u;;g--X*&X*&:**^&&/&&-**W==W==_--3;;k;;.;-|--`=={&&=&&F##~**.=*=:;R776uy$pi3iu6wqP77N<>Y886uy#iuKrrZ88n,,c,,7wqzqqjrr[ii=lkMlldfdqytzrr9yt~aa#fd#fd#fd0fd+jh}kkNddRqq511.ew^ddkgg/dd.apByy$ytcddNggEkkfkjyfdnggNggfkjnggcddJttv11q<<>s;;s;;5>>i>>p>>u>>5::p;;X*&k&&w==<::%:;0==`**L;;b,,W88lqqlqqK88t,,@>:`<dssfdlkk`kkDkk.gftfdxddtiu,yt3ew)00a<>L>>U>>u77h77I55t>>*;-t--:**q;;J66R66a::T;;X>:r,,J77Z88A88K88p,,@>:A<>|::k<>x--q&&:**v>>498sww~77r,,:,>f>>c,,v,,D<A<<+uyOfdOfd%fd%jholkxkk&fd9yt#tr#tr~aa lkZCCACCiNMyNMcjjfyy.q02q0oyt#ap`ppOewJtt$ytcddnggYkk9lk9lkNggByy.ewPttOewv11z11Uqqbddvggnjj(dd.trk11@<,U,,A<<3,,<>>1,,Y<tr,tr{ssvNM{DDePL.VBIjj]ss5mnkPLYRTr^~nRTwPLoVBDNNfNMfNMDNNoVBkPLIPPFZZDNNDNNzNMUmm0kj1mn,NM[NN8PLIPPkPLwPLBZC!jj(aa1fd:lkNllolk%jhtkj}hh_yyirrirrpttatt'rr6fdNjj9sazyy|hh2lkMjj7fdxlltkjxll|NNmPL4RTvIPRPPZNN>t,,t,,B<< q0A<<1,,b<<+uy%fddfddfd&jhMllAllCllBjj~aa9yt.uyCjjyNMVll lkyNMbkkJyyMqq'00|ww{tt$ewLqqJttcddfkj)mm6CV6CV6CVYkk$ytLqqJttUqqq<RTEPP%PL.BN.BN%PL%PLEPPMTYJPL.PLENNykjzhhwsabsszjjGMM_NN.PL%PL%PLiPLqkjhssefdtlkyNMolkXjhOkjMjj!aaOtrOtr'yyQaazyyfjhclldjhGaafjhtkjfjh{hhXkj}hhdjh3NMcIPWRRERRvIPUmmUmm5mn[jjfgf-sahyy ew(ddyfd)dd$yt[005<<6<<{77,<,,<,b77gwwQuuGwws77!--y--p>>sww(ffzcx$pikqq3,,X>:t,,t,,h<>g<>U,,2q0(ddifd4fdCyy2q0J<>`>>6<<#q09ewlww]77K>>5>>t77rww>a,,`<q0D88611611611211~11Zqqsrr'rrVtt_yy]yy!aa/aa#tr/11", -"# 4mnCaa sa,mnijhvppvpppapYjj^MMxNM^MM^MMxNM~MMxNM&VB]DD&VB(BB_BB~UUgRToYUrPL&VB~MM|ssiapiapEss~ssFhh;mn6mnvNM+YUe^~e X^~_~~4^~G}{dWE0PLUDDNTY%~!NTYLDD#VBUDDLDDkNM;kj;kj&kjPjjhjhPjjukjkNMXBNgPLGNN;NMpNMeCVyNMMllMllNllXlkBjj+jh#fd|yy9yt9ytptt7saGaa`yyokj BN BNRLLLNN1NM1NM}NNvPL!PPYPP=PL}BB]DD]DD&VB.VB]NN0kj.saWaaRaa-sa(ddCyy>o<,a<>i77f88rww4uyrytbqq,1:I<lk>lkUkkUkkUkk>lk(mmeNMq0Drr4yt4ythrr/11Fqq!aa1lk=kjLaaq22=21OtrQaadtt~11", -"+ $mnWssRjj(BB_BB~MM$mnRjj~MM&VB]DD=VB_BB(BB(BB{DD{DD{DD]DD]DDePL^UURTThRTRTT~UU=VBvNM%mnZhhEssOsaDjj,mnnNMdWE611w11D^~DRT7RTDRTHRTFPLLMMLMMRDDDRTcPL^NNoBNRDDPDDoBN^NNKNN6NMJMMikjglkLMMKNN^NN@PLOBNINN|NNQLLlk>lk3fd!ppkyy~ddmjjPmmbjjhyyBqqCqq9tr^ddnggfkj^ddOewv11z11]00Drruyy+uy/aaQaaGaaMsssjh3sajtt222irr6saXkjQaa!11", -"O 6mn{ssRjj(BB&VBvNM~MM~MM(BBePL~UU~UUePL{DD{DDrPLrPL~UUrPLePLePLrPL~UUoYUXYU~UUePL&VB~MMYjjWss^ssDjj9kj]NNX^~r116115^~CPLcPLQPPBTYRDDikjglk|SSVRT*PLWNNoBNRDDPDDoBNoBN^NNWNN6NMLMMLMM6NMWNN^NN.DS}NNLNN|NN,PLMPLwIPwIPYNNvllMjjMjj+kj1lkMjj9sawaputtLaawkjpkjpkj=kjtsa`yyvsstkj|NN#PLmPLTPPRPP^UU=VB_BBrPLRTT~UU^MMYjj(sspjh5mnTmmajhYppXtrhyyoytjyy+ytUqq)00L00W<<,<,'>>I00xww`ttfffwCVSCC+lk}kkrlkMll}kk%fdFyy4yt4yt~aa#fd jhOkj1lkxllcll3NMPNNPNNINNPNN2NMxllokjfjhMsstjhzhhNaa722`11+ewEpp-sa~ddbggPmmPmmbjj-saWaa-sabgg_jj~dd ewR11W11/ww)ddfkjYkkpfd$yt3q0lkbjjbgg~ddpgf3fdhyyR11Y,,0<NM9kj_nnKjjIjj.VBu^~6116^~oBN}jjikjWNN|SSKNN,kjglk^NNQPP|SSKNN^NNPDDPDDPDD*PLcPLcPLcPL*PLRDDPDD|SS|SSRNNWNNoBNPDDcPLQPPkIPBTY7NMsjhLaaMss1NMIDD.DSLNN*kjrsa,kjCPLFPLWNN4hg!22U11irrFaaokjINNELLTPP4RTyRTlNMIjjnNMPPPqPL0mn.ds5mnFZZxYUdYUMNMegfRaa-sapgfnjjvgg|pp.ewlk_jj_jj>lkPmmPmm>lkUkkpgfpgfWaa ew0<<&>:&>:I,,#yt!ddhkjRkkvggEaaCyyCyy{yyayyFyy0fdrNMRLLOBN7NMsjhtsaSttCttcssXkjNjj|hh", -". xNMAhhWssZhh6mn~MM8mn4mnlNM-VB YUURT!~!o^~o^~yRT'UU6PL$VB-VBoPL6PL6PL-VB-VB-VBoPL6PL6PL-VB.VB9mnEjjIjjnNMdWEG}{|UUnhhnhhikj^NNPDD^NNLMMKNNPDDCPLoBNKNN^NN|SS|SSRDDcPLFPLQPPkIPkIPQPPCPLRDDPDD~NN[SSYDD2FD4FD9FD9FDGPLLMMnhh2sachh^NNkIPBTYCPLglkmssikjBTYVRTRDDjjjyttU11-21VttfjhPNNELLvIPL~!!~!$VBIjjsNM6PL.VBWjjkss,NMkPLaWE2RTlk>lk_jjbjj5fd apCqq/,,$>:^::$>:,q09tr~ddbjjpgf-saRaa ap]iiEtthrr|yy+kjRLL@PL.DSKMMkjjtsaGaaGaa7sa6fd7fd", -" vNM$mn|ssZhh$mn6mn$mn1mnUmmoVBIPPnRT~~~O^~-^~xYUwPL[NNfNMzNMoVBFZZFZZfNMfNMfNMzNM[NNoVB[NNDNN9mn_nnWjjsNMWPP6RTkNMtapnhhglk|SS*PL|SS^NN|SScPLcPLoBNKNN^NN|SS|SSPDDcPLQPPkIP7RTVRT7RTkIPcPLRDD/NNADS4FD7FD7FD&FD&FD&FDKNN*kjchh,kjRDDVRTHRTVRTslkgaaJhhhIPGRTBPLslkyapprrirrVttdjhPNN$PLWRR: p [UU5mnzNMFZZ,NM(ssZaa5mnIPPLQW2RTLmmAaaOytOyt#sabjjUkkpgfoapjyyPtt.ew,yttfdylk9CV:lk#fd#tr;21:1:&>:H<<,q0kyy~dd3fdWaa ap!pp]iiDrryqqzrr7fd3NM.DS.DS7NMwkjvhh7sa`yyVtt]yy6fd" -}; diff --git a/user/wxTest/wxTest.cpp b/user/wxTest/wxTest.cpp deleted file mode 100644 index a43d89fda8..0000000000 --- a/user/wxTest/wxTest.cpp +++ /dev/null @@ -1,581 +0,0 @@ -/* - * Program: wxTest - * - * Author: Robert Roebling - * - * Copyright: (C) 1997, GNU (Robert Roebling) - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#ifdef __GNUG__ -#pragma implementation "wxTest.h" -#endif - -#include "wxTest.h" - -#include "folder.xpm" -#include "list.xpm" -#include "test.xpm" - -//----------------------------------------------------------------------------- -// main program -//----------------------------------------------------------------------------- - -IMPLEMENT_APP(MyApp) - -//----------------------------------------------------------------------------- -// MyDialog -//----------------------------------------------------------------------------- - -const int ID_RETURN = 100; -const int ID_HELLO = 101; - -const int ID_CHECKBOX = 110; -const int ID_CHECKBOX_CHECK = 110; -const int ID_CHECKBOX_UNCHECK = 112; - -const int ID_TEXTCTRL = 115; -const int ID_TEXTCTRL_SET = 116; -const int ID_TEXTCTRL_DEL = 117; - -const int ID_CHOICE = 120; -const int ID_CHOICE_SEL_NUM = 121; -const int ID_CHOICE_SEL_STR = 122; -const int ID_CHOICE_CLEAR = 123; -const int ID_CHOICE_APPEND = 124; - -const int ID_LISTBOX = 130; -const int ID_LISTBOX_SEL_NUM = 131; -const int ID_LISTBOX_SEL_STR = 132; -const int ID_LISTBOX_CLEAR = 133; -const int ID_LISTBOX_APPEND = 134; - -const int ID_RADIOBOX = 130; -const int ID_RADIOBOX_SEL_NUM = 131; -const int ID_RADIOBOX_SEL_STR = 132; - -BEGIN_EVENT_TABLE(MyDialog,wxDialog) - EVT_BUTTON (ID_RETURN, MyDialog::OnReturnButton) - EVT_BUTTON (ID_HELLO, MyDialog::OnHelloButton) - EVT_CHECKBOX (ID_CHECKBOX, MyDialog::OnCheckBox) - EVT_BUTTON (ID_CHECKBOX_CHECK, MyDialog::OnCheckBoxButtons) - EVT_BUTTON (ID_CHECKBOX_UNCHECK, MyDialog::OnCheckBoxButtons) - EVT_TEXT (ID_TEXTCTRL, MyDialog::OnTextCtrl) - EVT_BUTTON (ID_TEXTCTRL_SET, MyDialog::OnTextCtrlButtons) - EVT_BUTTON (ID_TEXTCTRL_DEL, MyDialog::OnTextCtrlButtons) - EVT_CHOICE (ID_CHOICE, MyDialog::OnChoice) - EVT_BUTTON (ID_CHOICE_SEL_NUM, MyDialog::OnChoiceButtons) - EVT_BUTTON (ID_CHOICE_SEL_STR, MyDialog::OnChoiceButtons) - EVT_BUTTON (ID_CHOICE_CLEAR, MyDialog::OnChoiceButtons) - EVT_BUTTON (ID_CHOICE_APPEND, MyDialog::OnChoiceButtons) - EVT_LISTBOX (ID_LISTBOX, MyDialog::OnListBox) - EVT_BUTTON (ID_LISTBOX_SEL_NUM, MyDialog::OnListBoxButtons) - EVT_BUTTON (ID_LISTBOX_SEL_STR, MyDialog::OnListBoxButtons) - EVT_BUTTON (ID_LISTBOX_CLEAR, MyDialog::OnListBoxButtons) - EVT_BUTTON (ID_LISTBOX_APPEND, MyDialog::OnListBoxButtons) - EVT_RADIOBOX (ID_RADIOBOX, MyDialog::OnRadioBox) - EVT_BUTTON (ID_RADIOBOX_SEL_NUM, MyDialog::OnRadioBoxButtons) - EVT_BUTTON (ID_RADIOBOX_SEL_STR, MyDialog::OnRadioBoxButtons) -END_EVENT_TABLE() - -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(MyDialog, wxDialog) - -MyDialog::MyDialog( wxWindow *parent ) : - wxDialog( parent, -1, "TestDialog", wxPoint(20,100), wxSize(700,400), wxDIALOG_MODAL ) -{ - m_text1 = (wxStaticText *) NULL; - m_text2 = (wxStaticText *) NULL; - - (void)new wxStaticBox( this, -1, "CheckBox group", wxPoint(20,10), wxSize(140,180) ); - m_checkbox = new wxCheckBox( this, ID_CHECKBOX, "CheckBox", wxPoint(40,35), wxSize(100,30) ); - (void)new wxButton( this, ID_CHECKBOX_CHECK, "Check", wxPoint(40,85), wxSize(100,30) ); - (void)new wxButton( this, ID_CHECKBOX_UNCHECK, "Uncheck", wxPoint(40,135), wxSize(100,30) ); - - (void)new wxStaticBox( this, -1, "TextCtrl group", wxPoint(20,200), wxSize(140,180) ); - m_textctrl = new wxTextCtrl( this, ID_TEXTCTRL, "TextCtrl", wxPoint(40,35+190), wxSize(100,30) ); - (void)new wxButton( this, ID_TEXTCTRL_SET, "Set 'Hi!'", wxPoint(40,85+190), wxSize(100,30) ); - (void)new wxButton( this, ID_TEXTCTRL_DEL, "Delete", wxPoint(40,135+190), wxSize(100,30) ); - - wxString choices[4] = - { - "This", - "is", - "a", - "wonderfull example." - }; - - (void)new wxStaticBox( this, -1, "Choice group", wxPoint(180,10), wxSize(140,330) ); - m_choice = new wxChoice( this, ID_CHOICE, wxPoint(200,35), wxSize(100,30), 4, choices ); - (void)new wxButton( this, ID_CHOICE_SEL_NUM, "Select #2", wxPoint(200,130), wxSize(100,30) ); - (void)new wxButton( this, ID_CHOICE_SEL_STR, "Select 'This'", wxPoint(200,180), wxSize(100,30) ); - (void)new wxButton( this, ID_CHOICE_CLEAR, "Clear", wxPoint(200,230), wxSize(100,30) ); - (void)new wxButton( this, ID_CHOICE_APPEND, "Append 'Hi!'", wxPoint(200,280), wxSize(100,30) ); - - (void)new wxStaticBox( this, 100, "ListBox group", wxPoint(340,10), wxSize(140,330) ); - m_listbox = new wxListBox( this, ID_LISTBOX, wxPoint(360,35), wxSize(100,70), 4, choices ); - (void)new wxButton( this, ID_LISTBOX_SEL_NUM, "Select #2", wxPoint(360,130), wxSize(100,30) ); - (void)new wxButton( this, ID_LISTBOX_SEL_STR, "Select 'This'", wxPoint(360,180), wxSize(100,30) ); - (void)new wxButton( this, ID_LISTBOX_CLEAR, "Clear", wxPoint(360,230), wxSize(100,30) ); - (void)new wxButton( this, ID_LISTBOX_APPEND, "Append 'Hi!'", wxPoint(360,280), wxSize(100,30) ); - - (void)new wxStaticBox( this, -1, "RadioBox group", wxPoint(500,10), wxSize(180,230) ); - m_radiobox = new wxRadioBox( this, ID_RADIOBOX, "Test", wxPoint(520,35), wxSize(-1,-1), 4, choices, - 1, wxRA_VERTICAL ); - - (void)new wxButton( this, ID_HELLO, "wxScreenDC", wxPoint(540,280), wxSize(120,40) ); - (void)new wxButton( this, ID_RETURN, "Return", wxPoint(540,340), wxSize(120,40) ); - - m_text1 = new wxStaticText( this, -1, "No event.", wxPoint(170,350), wxSize(300,-1) ); - m_text2 = new wxStaticText( this, -1, "No information.", wxPoint(170,370), wxSize(300,-1) ); - - InitDialog(); -}; - -void MyDialog::OnTextCtrl( wxCommandEvent &WXUNUSED(event) ) -{ -}; - -void MyDialog::OnTextCtrlButtons( wxCommandEvent &event ) -{ - switch (event.GetId()) - { - case ID_TEXTCTRL_SET: - { - m_textctrl->SetValue( "Hi!" ); - break; - }; - case ID_TEXTCTRL_DEL: - { - m_textctrl->Clear(); - break; - }; - }; -}; - -void MyDialog::OnRadioBox( wxCommandEvent &event ) -{ - if (!m_text1) return; - m_text1->SetLabel( "RadioBox Event:"); - wxString tmp = "RadioBox selection string is: "; - tmp += event.GetString(); - m_text2->SetLabel( tmp ); -}; - -void MyDialog::OnRadioBoxButtons( wxCommandEvent &WXUNUSED(event) ) -{ -}; - -void MyDialog::OnListBox( wxCommandEvent &event ) -{ - if (!m_text1) return; - m_text1->SetLabel( "ListBox Event:"); - wxString tmp = "ListBox selection string is: "; - tmp += event.GetString(); - m_text2->SetLabel( tmp ); -}; - -void MyDialog::OnListBoxButtons( wxCommandEvent &event ) -{ - switch (event.GetId()) - { - case ID_LISTBOX_SEL_NUM: - { - m_listbox->SetSelection( 2 ); - break; - }; - case ID_LISTBOX_SEL_STR: - { - m_listbox->SetStringSelection( "This" ); - break; - }; - case ID_LISTBOX_CLEAR: - { - m_listbox->Clear(); - break; - }; - case ID_LISTBOX_APPEND: - { - m_listbox->Append( "Hi!" ); - break; - }; - }; -}; - -void MyDialog::OnCheckBox( wxCommandEvent &event ) -{ - if (!m_text1) return; - m_text1->SetLabel( "CheckBox Event:"); - wxString tmp = "Checkbox is "; - if (event.Checked()) - tmp += "checked."; - else - tmp += "unchecked."; - m_text2->SetLabel( tmp ); -}; - -void MyDialog::OnCheckBoxButtons( wxCommandEvent &event ) -{ - switch (event.GetId()) - { - case ID_CHECKBOX_CHECK: - { - m_checkbox->SetValue( TRUE ); - break; - }; - case ID_CHECKBOX_UNCHECK: - { - m_checkbox->SetValue( FALSE ); - break; - }; - }; -}; - -void MyDialog::OnChoice( wxCommandEvent &event ) -{ - if (!m_text1) return; - m_text1->SetLabel( "Choice Event:"); - wxString tmp = "Choice selection string is: "; - tmp += event.GetString(); - m_text2->SetLabel( tmp ); -}; - -void MyDialog::OnChoiceButtons( wxCommandEvent &event ) -{ - switch (event.GetId()) - { - case ID_CHOICE_SEL_NUM: - { - m_choice->SetSelection( 2 ); - break; - }; - case ID_CHOICE_SEL_STR: - { - m_choice->SetStringSelection( "This" ); - break; - }; - case ID_CHOICE_CLEAR: - { - m_choice->Clear(); - break; - }; - case ID_CHOICE_APPEND: - { - m_choice->Append( "Hi!" ); - break; - }; - }; -}; - -void MyDialog::OnReturnButton( wxCommandEvent &WXUNUSED(event) ) -{ - EndModal( 1 ); -}; - -void MyDialog::OnHelloButton( wxCommandEvent &WXUNUSED(event) ) -{ - wxMessageDialog *dialog; - dialog = new wxMessageDialog( this, "Now, I will paint on Screen.", "wxGTK" ); - dialog->ShowModal(); - delete dialog; - - wxScreenDC dc; - dc.StartDrawingOnTop(); - - int w = wxSystemSettings::GetSystemMetric( wxSYS_SCREEN_X ); - int h = wxSystemSettings::GetSystemMetric( wxSYS_SCREEN_Y ); - - dc.SetPen( *wxWHITE_PEN ); - dc.SetBrush( *wxTRANSPARENT_BRUSH ); - for (int i = 0; i < h; i += 3) dc.DrawLine( 0, i, w, i ); - - dialog = new wxMessageDialog( this, "Now, the stripes will disappear.", "wxGTK" ); - dialog->ShowModal(); - delete dialog; - - dc.EndDrawingOnTop(); -}; - -//----------------------------------------------------------------------------- -// MyCanvas -//----------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(MyCanvas, wxScrolledWindow) - -BEGIN_EVENT_TABLE(MyCanvas,wxScrolledWindow) - EVT_BUTTON (100, MyDialog::OnReturnButton) - EVT_PAINT (MyCanvas::OnPaint) -END_EVENT_TABLE() - -MyCanvas::MyCanvas( wxWindow *parent, const wxWindowID id, const wxPoint &pos, const wxSize &size ) - : wxScrolledWindow( parent, id, pos, size, wxSUNKEN_BORDER ) -{ - my_bitmap = new wxBitmap( folder_xpm ); - my_horse = new wxBitmap( test_xpm); - my_backstore = new wxBitmap( 150, 150 ); - my_font = new wxFont( 20, wxROMAN, wxNORMAL, wxNORMAL ); - m_isCreated = FALSE; - - SetBackgroundColour( wxColour("Wheat") ); -}; - -MyCanvas::~MyCanvas(void) -{ - delete my_bitmap; - delete my_backstore; - delete my_horse; - delete my_font; -}; - -void MyCanvas::OnPaint( wxPaintEvent &WXUNUSED(event) ) -{ - wxPaintDC dc( this ); - PrepareDC( dc ); - - wxMemoryDC memDC; - memDC.SelectObject( *my_backstore ); - memDC.Clear(); - memDC.SetBrush( *wxBLACK_BRUSH ); - memDC.SetPen( *wxWHITE_PEN ); - memDC.DrawRectangle( 0, 0, 150, 150 ); - memDC.SetTextForeground( *wxWHITE ); - memDC.DrawText( "This is a memory dc.", 10, 10 ); - - int vx = 0; - int vy = 0; - GetVirtualSize( &vx, &vy ); - dc.DrawLine( 5, 5, vx-10, vy-10 ); - dc.DrawLine( 10, 20, 100, 10 ); - dc.DrawLine( 10, 20, 100, 50 ); - dc.DrawLine( 10, 20, 100, 100 ); - - dc.SetPen( *wxWHITE_PEN ); - dc.DrawLine( 80, 50, 180, 50 ); - - dc.SetFont( *my_font ); - - long x = 0; - long y = 0; - dc.GetTextExtent( "Hej, ho, hej, ho.", &x, &y ); - - dc.SetBrush( *wxTRANSPARENT_BRUSH ); - dc.DrawRectangle( 80, 40, x, y ); - - dc.SetTextForeground( *wxGREEN ); - dc.DrawText( "Hej, ho, hej, ho.", 80, 40 ); - - dc.SetTextForeground( *wxBLACK ); - dc.SetFont( *wxNORMAL_FONT ); - dc.DrawText( "Hej, ho, hej, ho. (NormalFont)", 80, 60 ); - dc.SetFont( *wxSMALL_FONT ); - dc.DrawText( "Hej, ho, hej, ho. (SmallFont)", 80, 80 ); - dc.SetFont( *wxITALIC_FONT ); - dc.DrawText( "Hej, ho, hej, ho. (ItalicFont)", 80, 100 ); - - dc.DrawBitmap( *my_bitmap, 30, 80, TRUE ); - dc.DrawBitmap( *my_horse, 30, 120 ); - - dc.Blit( 200, 200, 150, 150, &memDC, 0, 0, 0 ); - - memDC.SelectObject( wxNullBitmap ); - -/* - dc.SetBrush( *wxBLACK_BRUSH ); - dc.DrawRectangle( 50, 50, 50, 50 ); - dc.SetPen( *wxWHITE_PEN ); - dc.DrawRectangle( 101, 50, 50, 50 ); - dc.DrawRectangle( 50, 101, 50, 50 ); - - dc.SetBrush( *wxWHITE_BRUSH ); - - dc.SetPen( *wxWHITE_PEN ); - dc.DrawRectangle( 70, 70, 2, 2 ); - - dc.SetPen( *wxRED_PEN ); - dc.DrawRectangle( 72, 70, 2, 2 ); - dc.DrawRectangle( 70, 72, 2, 2 ); - - - dc.SetPen( *wxRED_PEN ); - dc.DrawRectangle( 82, 80, 2, 2 ); - dc.DrawRectangle( 80, 82, 2, 2 ); - - dc.SetPen( *wxWHITE_PEN ); - dc.DrawRectangle( 80, 80, 2, 2 ); -*/ -}; - -//----------------------------------------------------------------------------- -// MyFrame -//----------------------------------------------------------------------------- - -const ID_OPEN = 101; -const ID_SAVE = 102; -const ID_MSG = 103; -const ID_FONT = 104; -const ID_DLG = 105; -const ID_QUIT = 108; -const ID_ABOUT = 109; - -IMPLEMENT_DYNAMIC_CLASS( MyFrame, wxFrame ) - -BEGIN_EVENT_TABLE(MyFrame,wxFrame) - EVT_MENU (ID_OPEN, MyFrame::OnOpenDialog) - EVT_MENU (ID_FONT, MyFrame::OnFontDialog) - EVT_MENU (ID_MSG, MyFrame::OnMsg) - EVT_MENU (ID_DLG, MyFrame::OnDialog) - EVT_MENU (ID_ABOUT, MyFrame::OnAbout) - EVT_MENU (ID_QUIT, MyFrame::OnQuit) -END_EVENT_TABLE() - -MyFrame::MyFrame(void) : - wxFrame( (wxFrame *) NULL, -1, (char *) "Robert's Test application", wxPoint(20,20), wxSize(470,360) ) -{ -/* - wxMenu *file_menu = new wxMenu( "Test" ); - file_menu->Append( ID_OPEN, "Open.."); - file_menu->Append( ID_MSG, "MessageBox.."); - file_menu->Append( ID_FONT, "FontDialog.."); - file_menu->AppendSeparator(); - file_menu->Append( ID_DLG, "TestDialog.."); - file_menu->AppendSeparator(); - file_menu->Append( ID_ABOUT, "About.."); - file_menu->Append( ID_QUIT, "Exit"); - - wxMenuBar *menu_bar = new wxMenuBar(); - menu_bar->Append(file_menu, "File"); - menu_bar->Show( TRUE ); - - SetMenuBar( menu_bar ); -*/ - - CreateStatusBar( 2 ); - - SetStatusText( "wxGTK v0.12", 0 ); - SetStatusText( "Copyright 1998 Robert Roebling.", 1 ); - - m_canvas = new MyCanvas( this, -1, wxPoint(2,62), wxSize(300-4,120-4) ); - m_canvas->SetScrollbars( 10, 10, 50, 50 ); - - m_tb = CreateToolBar(); - m_tb->AddTool( 0, wxBitmap( list_xpm ), wxNullBitmap, FALSE, -1, -1, (wxObject *) NULL, "This is a button" ); - m_tb->AddTool( 0, wxBitmap( folder_xpm ), wxNullBitmap, TRUE, -1, -1, (wxObject *) NULL, "This is a toggle" ); - m_tb->Realize(); - -// m_timer.Start( 1000, TRUE ); -}; - -void MyFrame::OnDialog( wxCommandEvent &WXUNUSED(event) ) -{ - MyDialog *dialog = new MyDialog( this ); - dialog->ShowModal(); - dialog->Close( TRUE ); -}; - -void MyFrame::OnFontDialog( wxCommandEvent &WXUNUSED(event) ) -{ - wxFontData data; - data.SetInitialFont( wxSMALL_FONT ); - data.SetColour( wxRED ); - wxGenericFontDialog dialog( this, &data ); - if (dialog.ShowModal() == wxID_OK) - { - wxFontData retData = dialog.GetFontData(); - // do something - }; -}; - -void MyFrame::OnOpenDialog( wxCommandEvent &WXUNUSED(event) ) -{ - wxFileDialog dialog(this, "Testing open file dialog", "", "", "*.txt", 0); - if (dialog.ShowModal() == wxID_OK) - { - wxMessageDialog dialog2(this, dialog.GetPath(), "Selected path"); - dialog2.ShowModal(); - }; -}; - -void MyFrame::OnMsg( wxCommandEvent &WXUNUSED(event) ) -{ - wxMessageBox( "There once was a lady from Riga.", "TestBox.", wxYES_NO ); -}; - -void MyFrame::OnQuit( wxCommandEvent &WXUNUSED(event) ) -{ - Close( TRUE ); -}; - -void MyFrame::OnAbout( wxCommandEvent &WXUNUSED(event) ) -{ - wxDialog dialog( this, -1, "About wxGTK", wxPoint(100,100), wxSize(540,350), wxDIALOG_MODAL ); - - int w = 0; - int h = 0; - dialog.GetSize( &w, &h ); - - int x = 30; - int y = 20; - int step = 20; - - (void)new wxStaticBox( &dialog, -1, (const char*)NULL, wxPoint(10,10), wxSize(w-20,h-80) ); - - (void)new wxStaticText( &dialog, -1, "wxGTK v0.12", wxPoint(240,y) ); - y += 2*step-10; - - (void)new wxStaticText( &dialog, -1, "Written by Robert Roebling, 1998. More information at:", wxPoint(x,y) ); - y += step; - (void)new wxStaticText( &dialog, -1, "http://www.freiburg.linux.de/~wxxt", wxPoint(x+50,y) ); - y += 2*step; - - (void)new wxStaticText( &dialog, -1, - "wxGTK is based on the wxWindows GUI-library written mainly by Julian Smart. See:", wxPoint(x,y) ); - y += step; - (void)new wxStaticText( &dialog, -1, "http://web.ukonline.co.uk/julian.smart/wxwin", wxPoint(x+50,y) ); - y += 2*step; - - (void)new wxStaticText( &dialog, -1, "wxWindows Copyright: Less restrictive version of LGPL.", wxPoint(x,y) ); - y += 2*step; - (void)new wxStaticText( &dialog, -1, "For questions concerning wxGTK, you may mail to:", wxPoint(x,y) ); - y += step; - (void)new wxStaticText( &dialog, -1, "roebling@ruf.uni-freiburg.de", wxPoint(x+50,y) ); - - (void) new wxButton( &dialog, wxID_OK, "Return", wxPoint(w/2-40,h-50), wxSize(80,30) ); - - dialog.ShowModal(); -}; - -//----------------------------------------------------------------------------- -// MyApp -//----------------------------------------------------------------------------- - -MyApp::MyApp(void) : - wxApp( ) -{ -}; - -bool MyApp::OnInit(void) -{ - wxFrame *frame = new MyFrame(); - frame->Show( TRUE ); - - return TRUE; -}; - - - - - diff --git a/user/wxTest/wxTest.h b/user/wxTest/wxTest.h deleted file mode 100644 index d439960a25..0000000000 --- a/user/wxTest/wxTest.h +++ /dev/null @@ -1,164 +0,0 @@ -/* - * Program: wxTest - * - * Author: Robert Roebling - * - * Copyright: (C) 1997, GNU (Robert Roebling) - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#ifndef __TESTH__ -#define __TESTH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/wx.h" -#include "wx/dcscreen.h" -#include "wx/splitter.h" -#include "wx/toolbar.h" -#include "wx/fontdlg.h" - -//----------------------------------------------------------------------------- -// derived classes -//----------------------------------------------------------------------------- - -class MyDialog; -class MyFrame; -class MyApp; - -//----------------------------------------------------------------------------- -// MyTimer -//----------------------------------------------------------------------------- - -class MyTimer: public wxTimer -{ - public: - - MyTimer(void) {}; - void Notify(void) - { - printf( "OnTimer.\n" ); - }; -}; - -//----------------------------------------------------------------------------- -// MyDialog -//----------------------------------------------------------------------------- - -class MyDialog: public wxDialog -{ - DECLARE_DYNAMIC_CLASS(MyDialog) - - public: - - MyDialog(void) {}; - MyDialog( wxWindow *parent ); - - void OnReturnButton( wxCommandEvent &event ); - void OnHelloButton( wxCommandEvent &event ); - - void OnCheckBox( wxCommandEvent &event ); - void OnCheckBoxButtons( wxCommandEvent &event ); - - void OnTextCtrl( wxCommandEvent &event ); - void OnTextCtrlButtons( wxCommandEvent &event ); - - void OnChoice( wxCommandEvent &event ); - void OnChoiceButtons( wxCommandEvent &event ); - - void OnListBox( wxCommandEvent &event ); - void OnListBoxButtons( wxCommandEvent &event ); - - void OnRadioBox( wxCommandEvent &event ); - void OnRadioBoxButtons( wxCommandEvent &event ); - - wxCheckBox *m_checkbox; - wxTextCtrl *m_textctrl; - wxChoice *m_choice; - wxListBox *m_listbox; - wxRadioBox *m_radiobox; - wxStaticText *m_text1; - wxStaticText *m_text2; - - DECLARE_EVENT_TABLE() -}; - -//----------------------------------------------------------------------------- -// MyCanvas -//----------------------------------------------------------------------------- - -class MyCanvas: public wxScrolledWindow -{ - DECLARE_DYNAMIC_CLASS(MyCanvas) - - public: - - MyCanvas(void) {}; - MyCanvas( wxWindow *parent, wxWindowID, const wxPoint &pos, const wxSize &size ); - ~MyCanvas(void); - void OnPaint( wxPaintEvent &event ); - - wxBitmap *my_bitmap; - wxBitmap *my_horse; - wxBitmap *my_backstore; - wxFont *my_font; - bool m_isCreated; - - DECLARE_EVENT_TABLE() -}; - -//----------------------------------------------------------------------------- -// MyFrame -//----------------------------------------------------------------------------- - -class MyFrame: public wxFrame -{ - DECLARE_DYNAMIC_CLASS(MyFrame) - - public: - - MyFrame(void); - void OnSize( wxSizeEvent &event ); - void OnOpenDialog( wxCommandEvent &event ); - void OnFontDialog( wxCommandEvent &event ); - void OnMsg( wxCommandEvent &event ); - void OnDialog( wxCommandEvent &event ); - void OnAbout( wxCommandEvent &event ); - void OnQuit( wxCommandEvent &event ); - - wxToolBar *m_tb; - MyCanvas *m_canvas; - - MyTimer m_timer; - - DECLARE_EVENT_TABLE() -}; - -//----------------------------------------------------------------------------- -// MyApp -//----------------------------------------------------------------------------- - -class MyApp: public wxApp -{ - public: - - MyApp(void); - virtual bool OnInit(void); -}; - -#endif // wxGTK_h diff --git a/utils/HelpGen/Makefile b/utils/HelpGen/Makefile deleted file mode 100644 index f55affa8e7..0000000000 --- a/utils/HelpGen/Makefile +++ /dev/null @@ -1,739 +0,0 @@ -############################################################################## -# Name: Makefile -# Purpose: Unix makefile for helpgen project -# Author: Vadim Zeitlin -# Modified by: -# Created: 06/01/99 -# RCS-ID: $Id$ -# Copyright: (c) 1999 VZ -# Licence: GPL -############################################################################## - -# vi: set tw=0 noet ts=8 sw=8: - -.SUFFIXES: .cpp - -############################################################################## -# variables -############################################################################## -PROG = HelpGen -SRCS = src/cjparser.cpp\ - src/markup.cpp\ - src/scriptbinder.cpp\ - src/srcparser.cpp\ - src/ifcontext.cpp\ - src/HelpGen.cpp\ - src/sourcepainter.cpp\ - src/wx/string.cpp\ - src/wx_extra_imps.cpp\ - src/wx/object.cpp\ - src/wx/hash.cpp\ - src/wx/log.cpp\ - src/wx/file.cpp\ - src/wx/dynarray.cpp\ - src/wx/list.cpp - -OBJS = obj/cjparser.o\ - obj/markup.o\ - obj/scriptbinder.o\ - obj/srcparser.o\ - obj/ifcontext.o\ - obj/HelpGen.o\ - obj/sourcepainter.o\ - obj/wx/string.o\ - obj/wx_extra_imps.o\ - obj/wx/object.o\ - obj/wx/hash.o\ - obj/wx/log.o\ - obj/wx/file.o\ - obj/wx/dynarray.o\ - obj/wx/list.o - -# tested with egcs 1.1.1 (add more compilers here) -CC = g++ - -DEFINES = -DwxUSE_NOGUI=1 -D__UNIX__ -D__WXGTK__ -DHAVE_VSNPRINTF -# this might not work with some versions of gcc - try just -g then -DEBUG = -ggdb -D__WXDEBUG__ -INCLUDE = -I./include -CPPFLAGS = $(INCLUDE) $(DEFINES) $(DEBUG) -c -Wall - -############################################################################## -# rules -############################################################################## - -# building the program -obj/%.o: src/%.cpp - $(CC) $(CPPFLAGS) -o $@ $< - -all: $(PROG) - -$(PROG) : $(OBJS) - $(CC) -o $(PROG) $(DEBUG) -Wall $(OBJS) - -# create the links -links: include/wx src/wx - ln -sf ../../include/wx include/wx - ln -sf ../../src/common src/wx - -# this requires exuberant ctags version 2.x or later -ctags: tags - ctags -i mCF --lang=c++ include/*.h src/*.cpp - -depend: - makedepend $(INCLUDE) $(DEFINES) -I/usr/include/g++ -I/usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include $(SRCS) - -clean: - rm -f $(OBJS) $(PROG) core - -# DO NOT DELETE - -src/cjparser.o: ./include/wx/wxprec.h ./include/wx/wx.h -src/cjparser.o: ./include/wx/wx/setup.h ./include/wx/wx/wx/gtk/setup.h -src/cjparser.o: ./include/wx/wx/defs.h -src/cjparser.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/stddef.h -src/cjparser.o: ./include/wx/wx/wx/version.h ./include/wx/wx/string.h -src/cjparser.o: /usr/include/string.h /usr/include/features.h -src/cjparser.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h -src/cjparser.o: /usr/include/stdio.h /usr/include/libio.h -src/cjparser.o: /usr/include/_G_config.h /usr/include/gnu/types.h -src/cjparser.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/stdarg.h -src/cjparser.o: /usr/include/stdio_lim.h -src/cjparser.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/limits.h -src/cjparser.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/syslimits.h -src/cjparser.o: /usr/include/stdlib.h /usr/include/sys/types.h -src/cjparser.o: /usr/include/time.h /usr/include/endian.h -src/cjparser.o: /usr/include/bytesex.h /usr/include/sys/select.h -src/cjparser.o: /usr/include/selectbits.h /usr/include/alloca.h -src/cjparser.o: ./include/wx/wx/wx/debug.h /usr/include/assert.h -src/cjparser.o: /usr/include/g++/iostream.h /usr/include/g++/streambuf.h -src/cjparser.o: ./include/wx/wx/log.h ./include/wx/wx/window.h -src/cjparser.o: ./include/wx/wx/wx/gtk/window.h ./include/wx/object.h -src/cjparser.o: ./include/wx/wx/memory.h ./include/wx/list.h -src/cjparser.o: ./include/wx/event.h ./include/wx/wx/gdicmn.h -src/cjparser.o: ./include/wx/wx/wx/hash.h ./include/wx/wx/wx/colour.h -src/cjparser.o: ./include/wx/wx/wx/wx/gtk/colour.h ./include/wx/gdiobj.h -src/cjparser.o: ./include/wx/wx/gtk/gdiobj.h ./include/wx/palette.h -src/cjparser.o: ./include/wx/wx/gtk/palette.h ./include/wx/validate.h -src/cjparser.o: ./include/wx/cursor.h ./include/wx/wx/gtk/cursor.h -src/cjparser.o: ./include/wx/font.h ./include/wx/wx/gtk/font.h -src/cjparser.o: ./include/wx/region.h ./include/wx/wx/gtk/region.h -src/cjparser.o: ./include/wx/accel.h ./include/wx/wx/gtk/accel.h -src/cjparser.o: ./include/wx/wx/panel.h ./include/wx/wx/wx/generic/panelg.h -src/cjparser.o: ./include/wx/wx/frame.h ./include/wx/wx/wx/gtk/frame.h -src/cjparser.o: ./include/wx/icon.h ./include/wx/wx/dc.h -src/cjparser.o: ./include/wx/wx/wx/gtk/dc.h ./include/wx/pen.h -src/cjparser.o: ./include/wx/wx/gtk/pen.h ./include/wx/brush.h -src/cjparser.o: ./include/wx/wx/gtk/brush.h ./include/wx/bitmap.h -src/cjparser.o: ./include/wx/wx/gtk/bitmap.h ./include/wx/wx/dcclient.h -src/cjparser.o: ./include/wx/wx/wx/gtk/dcclient.h ./include/wx/wx/dcmemory.h -src/cjparser.o: ./include/wx/wx/wx/gtk/dcmemory.h ./include/wx/wx/dcprint.h -src/cjparser.o: ./include/wx/wx/dcscreen.h ./include/wx/wx/wx/gtk/dcscreen.h -src/cjparser.o: ./include/wx/wx/button.h ./include/wx/wx/wx/gtk/button.h -src/cjparser.o: ./include/wx/control.h ./include/wx/wx/gtk/control.h -src/cjparser.o: ./include/wx/wx/bmpbuttn.h ./include/wx/wx/wx/gtk/bmpbuttn.h -src/cjparser.o: ./include/wx/wx/checkbox.h ./include/wx/wx/wx/gtk/checkbox.h -src/cjparser.o: ./include/wx/wx/choice.h ./include/wx/wx/wx/gtk/choice.h -src/cjparser.o: ./include/wx/wx/scrolbar.h ./include/wx/wx/wx/gtk/scrolbar.h -src/cjparser.o: ./include/wx/wx/stattext.h ./include/wx/wx/wx/gtk/stattext.h -src/cjparser.o: ./include/wx/wx/statbmp.h ./include/wx/wx/wx/gtk/statbmp.h -src/cjparser.o: ./include/wx/wx/statbox.h ./include/wx/wx/wx/gtk/statbox.h -src/cjparser.o: ./include/wx/wx/listbox.h ./include/wx/wx/wx/gtk/listbox.h -src/cjparser.o: ./include/wx/wx/radiobox.h ./include/wx/wx/wx/gtk/radiobox.h -src/cjparser.o: ./include/wx/wx/radiobut.h ./include/wx/wx/wx/gtk/radiobut.h -src/cjparser.o: ./include/wx/wx/textctrl.h ./include/wx/wx/wx/gtk/textctrl.h -src/cjparser.o: ./include/wx/wx/slider.h ./include/wx/wx/wx/gtk/slider.h -src/cjparser.o: ./include/wx/wx/gauge.h ./include/wx/wx/wx/gtk/gauge.h -src/cjparser.o: ./include/wx/wx/combobox.h ./include/wx/wx/wx/gtk/combobox.h -src/cjparser.o: ./include/wx/wx/menu.h ./include/wx/wx/wx/gtk/menu.h -src/cjparser.o: ./include/wx/menuitem.h ./include/wx/wx/gtk/menuitem.h -src/cjparser.o: ./include/wx/wx/app.h ./include/wx/wx/wx/gtk/app.h -src/cjparser.o: ./include/wx/wx/dialog.h ./include/wx/wx/wx/gtk/dialog.h -src/cjparser.o: ./include/wx/wx/timer.h ./include/wx/wx/wx/gtk/timer.h -src/cjparser.o: ./include/wx/wx/utils.h ./include/wx/wx/wx/filefn.h -src/cjparser.o: ./include/wx/wx/wx/process.h ./include/wx/wx/settings.h -src/cjparser.o: ./include/wx/wx/wx/gtk/settings.h ./include/wx/wx/layout.h -src/cjparser.o: ./include/wx/wx/mdi.h ./include/wx/wx/wx/gtk/mdi.h -src/cjparser.o: ./include/wx/toolbar.h ./include/wx/wx/gtk/tbargtk.h -src/cjparser.o: ./include/wx/wx/scrolwin.h -src/cjparser.o: ./include/wx/wx/wx/generic/scrolwin.h -src/cjparser.o: ./include/wx/wx/statusbr.h -src/cjparser.o: ./include/wx/wx/wx/generic/statusbr.h -src/cjparser.o: ./include/wx/wx/msgdlg.h ./include/wx/wx/wx/generic/msgdlgg.h -src/cjparser.o: ./include/wx/wx/choicdlg.h -src/cjparser.o: ./include/wx/wx/wx/generic/choicdgg.h -src/cjparser.o: ./include/wx/wx/textdlg.h -src/cjparser.o: ./include/wx/wx/wx/generic/textdlgg.h -src/cjparser.o: ./include/wx/wx/filedlg.h ./include/wx/wx/wx/gtk/filedlg.h -src/cjparser.o: ./include/wx/wx/dirdlg.h ./include/wx/wx/wx/generic/dirdlgg.h -src/cjparser.o: ./include/wx/treectrl.h ./include/wx/wx/generic/treectrl.h -src/cjparser.o: ./include/wx/wx/cmndata.h ./include/wx/wx/intl.h -src/cjparser.o: ./include/wx/wx/valtext.h ./include/cjparser.h -src/cjparser.o: ./include/srcparser.h ./include/markup.h -src/cjparser.o: /usr/include/memory.h -src/markup.o: ./include/wx/wxprec.h ./include/wx/wx.h ./include/wx/wx/setup.h -src/markup.o: ./include/wx/wx/wx/gtk/setup.h ./include/wx/wx/defs.h -src/markup.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/stddef.h -src/markup.o: ./include/wx/wx/wx/version.h ./include/wx/wx/string.h -src/markup.o: /usr/include/string.h /usr/include/features.h -src/markup.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h -src/markup.o: /usr/include/stdio.h /usr/include/libio.h -src/markup.o: /usr/include/_G_config.h /usr/include/gnu/types.h -src/markup.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/stdarg.h -src/markup.o: /usr/include/stdio_lim.h -src/markup.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/limits.h -src/markup.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/syslimits.h -src/markup.o: /usr/include/stdlib.h /usr/include/sys/types.h -src/markup.o: /usr/include/time.h /usr/include/endian.h -src/markup.o: /usr/include/bytesex.h /usr/include/sys/select.h -src/markup.o: /usr/include/selectbits.h /usr/include/alloca.h -src/markup.o: ./include/wx/wx/wx/debug.h /usr/include/assert.h -src/markup.o: /usr/include/g++/iostream.h /usr/include/g++/streambuf.h -src/markup.o: ./include/wx/wx/log.h ./include/wx/wx/window.h -src/markup.o: ./include/wx/wx/wx/gtk/window.h ./include/wx/object.h -src/markup.o: ./include/wx/wx/memory.h ./include/wx/list.h -src/markup.o: ./include/wx/event.h ./include/wx/wx/gdicmn.h -src/markup.o: ./include/wx/wx/wx/hash.h ./include/wx/wx/wx/colour.h -src/markup.o: ./include/wx/wx/wx/wx/gtk/colour.h ./include/wx/gdiobj.h -src/markup.o: ./include/wx/wx/gtk/gdiobj.h ./include/wx/palette.h -src/markup.o: ./include/wx/wx/gtk/palette.h ./include/wx/validate.h -src/markup.o: ./include/wx/cursor.h ./include/wx/wx/gtk/cursor.h -src/markup.o: ./include/wx/font.h ./include/wx/wx/gtk/font.h -src/markup.o: ./include/wx/region.h ./include/wx/wx/gtk/region.h -src/markup.o: ./include/wx/accel.h ./include/wx/wx/gtk/accel.h -src/markup.o: ./include/wx/wx/panel.h ./include/wx/wx/wx/generic/panelg.h -src/markup.o: ./include/wx/wx/frame.h ./include/wx/wx/wx/gtk/frame.h -src/markup.o: ./include/wx/icon.h ./include/wx/wx/dc.h -src/markup.o: ./include/wx/wx/wx/gtk/dc.h ./include/wx/pen.h -src/markup.o: ./include/wx/wx/gtk/pen.h ./include/wx/brush.h -src/markup.o: ./include/wx/wx/gtk/brush.h ./include/wx/bitmap.h -src/markup.o: ./include/wx/wx/gtk/bitmap.h ./include/wx/wx/dcclient.h -src/markup.o: ./include/wx/wx/wx/gtk/dcclient.h ./include/wx/wx/dcmemory.h -src/markup.o: ./include/wx/wx/wx/gtk/dcmemory.h ./include/wx/wx/dcprint.h -src/markup.o: ./include/wx/wx/dcscreen.h ./include/wx/wx/wx/gtk/dcscreen.h -src/markup.o: ./include/wx/wx/button.h ./include/wx/wx/wx/gtk/button.h -src/markup.o: ./include/wx/control.h ./include/wx/wx/gtk/control.h -src/markup.o: ./include/wx/wx/bmpbuttn.h ./include/wx/wx/wx/gtk/bmpbuttn.h -src/markup.o: ./include/wx/wx/checkbox.h ./include/wx/wx/wx/gtk/checkbox.h -src/markup.o: ./include/wx/wx/choice.h ./include/wx/wx/wx/gtk/choice.h -src/markup.o: ./include/wx/wx/scrolbar.h ./include/wx/wx/wx/gtk/scrolbar.h -src/markup.o: ./include/wx/wx/stattext.h ./include/wx/wx/wx/gtk/stattext.h -src/markup.o: ./include/wx/wx/statbmp.h ./include/wx/wx/wx/gtk/statbmp.h -src/markup.o: ./include/wx/wx/statbox.h ./include/wx/wx/wx/gtk/statbox.h -src/markup.o: ./include/wx/wx/listbox.h ./include/wx/wx/wx/gtk/listbox.h -src/markup.o: ./include/wx/wx/radiobox.h ./include/wx/wx/wx/gtk/radiobox.h -src/markup.o: ./include/wx/wx/radiobut.h ./include/wx/wx/wx/gtk/radiobut.h -src/markup.o: ./include/wx/wx/textctrl.h ./include/wx/wx/wx/gtk/textctrl.h -src/markup.o: ./include/wx/wx/slider.h ./include/wx/wx/wx/gtk/slider.h -src/markup.o: ./include/wx/wx/gauge.h ./include/wx/wx/wx/gtk/gauge.h -src/markup.o: ./include/wx/wx/combobox.h ./include/wx/wx/wx/gtk/combobox.h -src/markup.o: ./include/wx/wx/menu.h ./include/wx/wx/wx/gtk/menu.h -src/markup.o: ./include/wx/menuitem.h ./include/wx/wx/gtk/menuitem.h -src/markup.o: ./include/wx/wx/app.h ./include/wx/wx/wx/gtk/app.h -src/markup.o: ./include/wx/wx/dialog.h ./include/wx/wx/wx/gtk/dialog.h -src/markup.o: ./include/wx/wx/timer.h ./include/wx/wx/wx/gtk/timer.h -src/markup.o: ./include/wx/wx/utils.h ./include/wx/wx/wx/filefn.h -src/markup.o: ./include/wx/wx/wx/process.h ./include/wx/wx/settings.h -src/markup.o: ./include/wx/wx/wx/gtk/settings.h ./include/wx/wx/layout.h -src/markup.o: ./include/wx/wx/mdi.h ./include/wx/wx/wx/gtk/mdi.h -src/markup.o: ./include/wx/toolbar.h ./include/wx/wx/gtk/tbargtk.h -src/markup.o: ./include/wx/wx/scrolwin.h -src/markup.o: ./include/wx/wx/wx/generic/scrolwin.h -src/markup.o: ./include/wx/wx/statusbr.h -src/markup.o: ./include/wx/wx/wx/generic/statusbr.h ./include/wx/wx/msgdlg.h -src/markup.o: ./include/wx/wx/wx/generic/msgdlgg.h ./include/wx/wx/choicdlg.h -src/markup.o: ./include/wx/wx/wx/generic/choicdgg.h ./include/wx/wx/textdlg.h -src/markup.o: ./include/wx/wx/wx/generic/textdlgg.h ./include/wx/wx/filedlg.h -src/markup.o: ./include/wx/wx/wx/gtk/filedlg.h ./include/wx/wx/dirdlg.h -src/markup.o: ./include/wx/wx/wx/generic/dirdlgg.h ./include/wx/treectrl.h -src/markup.o: ./include/wx/wx/generic/treectrl.h ./include/wx/wx/cmndata.h -src/markup.o: ./include/wx/wx/intl.h ./include/wx/wx/valtext.h -src/markup.o: ./include/markup.h -src/scriptbinder.o: ./include/wx/wxprec.h ./include/wx/wx.h -src/scriptbinder.o: ./include/wx/wx/setup.h ./include/wx/wx/wx/gtk/setup.h -src/scriptbinder.o: ./include/wx/wx/defs.h -src/scriptbinder.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/stddef.h -src/scriptbinder.o: ./include/wx/wx/wx/version.h ./include/wx/wx/string.h -src/scriptbinder.o: /usr/include/string.h /usr/include/features.h -src/scriptbinder.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h -src/scriptbinder.o: /usr/include/stdio.h /usr/include/libio.h -src/scriptbinder.o: /usr/include/_G_config.h /usr/include/gnu/types.h -src/scriptbinder.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/stdarg.h -src/scriptbinder.o: /usr/include/stdio_lim.h -src/scriptbinder.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/limits.h -src/scriptbinder.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/syslimits.h -src/scriptbinder.o: /usr/include/stdlib.h /usr/include/sys/types.h -src/scriptbinder.o: /usr/include/time.h /usr/include/endian.h -src/scriptbinder.o: /usr/include/bytesex.h /usr/include/sys/select.h -src/scriptbinder.o: /usr/include/selectbits.h /usr/include/alloca.h -src/scriptbinder.o: ./include/wx/wx/wx/debug.h /usr/include/assert.h -src/scriptbinder.o: /usr/include/g++/iostream.h /usr/include/g++/streambuf.h -src/scriptbinder.o: ./include/wx/wx/log.h ./include/wx/wx/window.h -src/scriptbinder.o: ./include/wx/wx/wx/gtk/window.h ./include/wx/object.h -src/scriptbinder.o: ./include/wx/wx/memory.h ./include/wx/list.h -src/scriptbinder.o: ./include/wx/event.h ./include/wx/wx/gdicmn.h -src/scriptbinder.o: ./include/wx/wx/wx/hash.h ./include/wx/wx/wx/colour.h -src/scriptbinder.o: ./include/wx/wx/wx/wx/gtk/colour.h ./include/wx/gdiobj.h -src/scriptbinder.o: ./include/wx/wx/gtk/gdiobj.h ./include/wx/palette.h -src/scriptbinder.o: ./include/wx/wx/gtk/palette.h ./include/wx/validate.h -src/scriptbinder.o: ./include/wx/cursor.h ./include/wx/wx/gtk/cursor.h -src/scriptbinder.o: ./include/wx/font.h ./include/wx/wx/gtk/font.h -src/scriptbinder.o: ./include/wx/region.h ./include/wx/wx/gtk/region.h -src/scriptbinder.o: ./include/wx/accel.h ./include/wx/wx/gtk/accel.h -src/scriptbinder.o: ./include/wx/wx/panel.h -src/scriptbinder.o: ./include/wx/wx/wx/generic/panelg.h -src/scriptbinder.o: ./include/wx/wx/frame.h ./include/wx/wx/wx/gtk/frame.h -src/scriptbinder.o: ./include/wx/icon.h ./include/wx/wx/dc.h -src/scriptbinder.o: ./include/wx/wx/wx/gtk/dc.h ./include/wx/pen.h -src/scriptbinder.o: ./include/wx/wx/gtk/pen.h ./include/wx/brush.h -src/scriptbinder.o: ./include/wx/wx/gtk/brush.h ./include/wx/bitmap.h -src/scriptbinder.o: ./include/wx/wx/gtk/bitmap.h ./include/wx/wx/dcclient.h -src/scriptbinder.o: ./include/wx/wx/wx/gtk/dcclient.h -src/scriptbinder.o: ./include/wx/wx/dcmemory.h -src/scriptbinder.o: ./include/wx/wx/wx/gtk/dcmemory.h -src/scriptbinder.o: ./include/wx/wx/dcprint.h ./include/wx/wx/dcscreen.h -src/scriptbinder.o: ./include/wx/wx/wx/gtk/dcscreen.h -src/scriptbinder.o: ./include/wx/wx/button.h ./include/wx/wx/wx/gtk/button.h -src/scriptbinder.o: ./include/wx/control.h ./include/wx/wx/gtk/control.h -src/scriptbinder.o: ./include/wx/wx/bmpbuttn.h -src/scriptbinder.o: ./include/wx/wx/wx/gtk/bmpbuttn.h -src/scriptbinder.o: ./include/wx/wx/checkbox.h -src/scriptbinder.o: ./include/wx/wx/wx/gtk/checkbox.h -src/scriptbinder.o: ./include/wx/wx/choice.h ./include/wx/wx/wx/gtk/choice.h -src/scriptbinder.o: ./include/wx/wx/scrolbar.h -src/scriptbinder.o: ./include/wx/wx/wx/gtk/scrolbar.h -src/scriptbinder.o: ./include/wx/wx/stattext.h -src/scriptbinder.o: ./include/wx/wx/wx/gtk/stattext.h -src/scriptbinder.o: ./include/wx/wx/statbmp.h -src/scriptbinder.o: ./include/wx/wx/wx/gtk/statbmp.h -src/scriptbinder.o: ./include/wx/wx/statbox.h -src/scriptbinder.o: ./include/wx/wx/wx/gtk/statbox.h -src/scriptbinder.o: ./include/wx/wx/listbox.h -src/scriptbinder.o: ./include/wx/wx/wx/gtk/listbox.h -src/scriptbinder.o: ./include/wx/wx/radiobox.h -src/scriptbinder.o: ./include/wx/wx/wx/gtk/radiobox.h -src/scriptbinder.o: ./include/wx/wx/radiobut.h -src/scriptbinder.o: ./include/wx/wx/wx/gtk/radiobut.h -src/scriptbinder.o: ./include/wx/wx/textctrl.h -src/scriptbinder.o: ./include/wx/wx/wx/gtk/textctrl.h -src/scriptbinder.o: ./include/wx/wx/slider.h ./include/wx/wx/wx/gtk/slider.h -src/scriptbinder.o: ./include/wx/wx/gauge.h ./include/wx/wx/wx/gtk/gauge.h -src/scriptbinder.o: ./include/wx/wx/combobox.h -src/scriptbinder.o: ./include/wx/wx/wx/gtk/combobox.h ./include/wx/wx/menu.h -src/scriptbinder.o: ./include/wx/wx/wx/gtk/menu.h ./include/wx/menuitem.h -src/scriptbinder.o: ./include/wx/wx/gtk/menuitem.h ./include/wx/wx/app.h -src/scriptbinder.o: ./include/wx/wx/wx/gtk/app.h ./include/wx/wx/dialog.h -src/scriptbinder.o: ./include/wx/wx/wx/gtk/dialog.h ./include/wx/wx/timer.h -src/scriptbinder.o: ./include/wx/wx/wx/gtk/timer.h ./include/wx/wx/utils.h -src/scriptbinder.o: ./include/wx/wx/wx/filefn.h ./include/wx/wx/wx/process.h -src/scriptbinder.o: ./include/wx/wx/settings.h -src/scriptbinder.o: ./include/wx/wx/wx/gtk/settings.h -src/scriptbinder.o: ./include/wx/wx/layout.h ./include/wx/wx/mdi.h -src/scriptbinder.o: ./include/wx/wx/wx/gtk/mdi.h ./include/wx/toolbar.h -src/scriptbinder.o: ./include/wx/wx/gtk/tbargtk.h ./include/wx/wx/scrolwin.h -src/scriptbinder.o: ./include/wx/wx/wx/generic/scrolwin.h -src/scriptbinder.o: ./include/wx/wx/statusbr.h -src/scriptbinder.o: ./include/wx/wx/wx/generic/statusbr.h -src/scriptbinder.o: ./include/wx/wx/msgdlg.h -src/scriptbinder.o: ./include/wx/wx/wx/generic/msgdlgg.h -src/scriptbinder.o: ./include/wx/wx/choicdlg.h -src/scriptbinder.o: ./include/wx/wx/wx/generic/choicdgg.h -src/scriptbinder.o: ./include/wx/wx/textdlg.h -src/scriptbinder.o: ./include/wx/wx/wx/generic/textdlgg.h -src/scriptbinder.o: ./include/wx/wx/filedlg.h -src/scriptbinder.o: ./include/wx/wx/wx/gtk/filedlg.h ./include/wx/wx/dirdlg.h -src/scriptbinder.o: ./include/wx/wx/wx/generic/dirdlgg.h -src/scriptbinder.o: ./include/wx/treectrl.h -src/scriptbinder.o: ./include/wx/wx/generic/treectrl.h -src/scriptbinder.o: ./include/wx/wx/cmndata.h ./include/wx/wx/intl.h -src/scriptbinder.o: ./include/wx/wx/valtext.h /usr/include/malloc.h -src/scriptbinder.o: /usr/include/memory.h ./include/scriptbinder.h -src/scriptbinder.o: ./include/markup.h -src/srcparser.o: ./include/wx/wxprec.h ./include/wx/wx.h -src/srcparser.o: ./include/wx/wx/setup.h ./include/wx/wx/wx/gtk/setup.h -src/srcparser.o: ./include/wx/wx/defs.h -src/srcparser.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/stddef.h -src/srcparser.o: ./include/wx/wx/wx/version.h ./include/wx/wx/string.h -src/srcparser.o: /usr/include/string.h /usr/include/features.h -src/srcparser.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h -src/srcparser.o: /usr/include/stdio.h /usr/include/libio.h -src/srcparser.o: /usr/include/_G_config.h /usr/include/gnu/types.h -src/srcparser.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/stdarg.h -src/srcparser.o: /usr/include/stdio_lim.h -src/srcparser.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/limits.h -src/srcparser.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/syslimits.h -src/srcparser.o: /usr/include/stdlib.h /usr/include/sys/types.h -src/srcparser.o: /usr/include/time.h /usr/include/endian.h -src/srcparser.o: /usr/include/bytesex.h /usr/include/sys/select.h -src/srcparser.o: /usr/include/selectbits.h /usr/include/alloca.h -src/srcparser.o: ./include/wx/wx/wx/debug.h /usr/include/assert.h -src/srcparser.o: /usr/include/g++/iostream.h /usr/include/g++/streambuf.h -src/srcparser.o: ./include/wx/wx/log.h ./include/wx/wx/window.h -src/srcparser.o: ./include/wx/wx/wx/gtk/window.h ./include/wx/object.h -src/srcparser.o: ./include/wx/wx/memory.h ./include/wx/list.h -src/srcparser.o: ./include/wx/event.h ./include/wx/wx/gdicmn.h -src/srcparser.o: ./include/wx/wx/wx/hash.h ./include/wx/wx/wx/colour.h -src/srcparser.o: ./include/wx/wx/wx/wx/gtk/colour.h ./include/wx/gdiobj.h -src/srcparser.o: ./include/wx/wx/gtk/gdiobj.h ./include/wx/palette.h -src/srcparser.o: ./include/wx/wx/gtk/palette.h ./include/wx/validate.h -src/srcparser.o: ./include/wx/cursor.h ./include/wx/wx/gtk/cursor.h -src/srcparser.o: ./include/wx/font.h ./include/wx/wx/gtk/font.h -src/srcparser.o: ./include/wx/region.h ./include/wx/wx/gtk/region.h -src/srcparser.o: ./include/wx/accel.h ./include/wx/wx/gtk/accel.h -src/srcparser.o: ./include/wx/wx/panel.h ./include/wx/wx/wx/generic/panelg.h -src/srcparser.o: ./include/wx/wx/frame.h ./include/wx/wx/wx/gtk/frame.h -src/srcparser.o: ./include/wx/icon.h ./include/wx/wx/dc.h -src/srcparser.o: ./include/wx/wx/wx/gtk/dc.h ./include/wx/pen.h -src/srcparser.o: ./include/wx/wx/gtk/pen.h ./include/wx/brush.h -src/srcparser.o: ./include/wx/wx/gtk/brush.h ./include/wx/bitmap.h -src/srcparser.o: ./include/wx/wx/gtk/bitmap.h ./include/wx/wx/dcclient.h -src/srcparser.o: ./include/wx/wx/wx/gtk/dcclient.h ./include/wx/wx/dcmemory.h -src/srcparser.o: ./include/wx/wx/wx/gtk/dcmemory.h ./include/wx/wx/dcprint.h -src/srcparser.o: ./include/wx/wx/dcscreen.h ./include/wx/wx/wx/gtk/dcscreen.h -src/srcparser.o: ./include/wx/wx/button.h ./include/wx/wx/wx/gtk/button.h -src/srcparser.o: ./include/wx/control.h ./include/wx/wx/gtk/control.h -src/srcparser.o: ./include/wx/wx/bmpbuttn.h ./include/wx/wx/wx/gtk/bmpbuttn.h -src/srcparser.o: ./include/wx/wx/checkbox.h ./include/wx/wx/wx/gtk/checkbox.h -src/srcparser.o: ./include/wx/wx/choice.h ./include/wx/wx/wx/gtk/choice.h -src/srcparser.o: ./include/wx/wx/scrolbar.h ./include/wx/wx/wx/gtk/scrolbar.h -src/srcparser.o: ./include/wx/wx/stattext.h ./include/wx/wx/wx/gtk/stattext.h -src/srcparser.o: ./include/wx/wx/statbmp.h ./include/wx/wx/wx/gtk/statbmp.h -src/srcparser.o: ./include/wx/wx/statbox.h ./include/wx/wx/wx/gtk/statbox.h -src/srcparser.o: ./include/wx/wx/listbox.h ./include/wx/wx/wx/gtk/listbox.h -src/srcparser.o: ./include/wx/wx/radiobox.h ./include/wx/wx/wx/gtk/radiobox.h -src/srcparser.o: ./include/wx/wx/radiobut.h ./include/wx/wx/wx/gtk/radiobut.h -src/srcparser.o: ./include/wx/wx/textctrl.h ./include/wx/wx/wx/gtk/textctrl.h -src/srcparser.o: ./include/wx/wx/slider.h ./include/wx/wx/wx/gtk/slider.h -src/srcparser.o: ./include/wx/wx/gauge.h ./include/wx/wx/wx/gtk/gauge.h -src/srcparser.o: ./include/wx/wx/combobox.h ./include/wx/wx/wx/gtk/combobox.h -src/srcparser.o: ./include/wx/wx/menu.h ./include/wx/wx/wx/gtk/menu.h -src/srcparser.o: ./include/wx/menuitem.h ./include/wx/wx/gtk/menuitem.h -src/srcparser.o: ./include/wx/wx/app.h ./include/wx/wx/wx/gtk/app.h -src/srcparser.o: ./include/wx/wx/dialog.h ./include/wx/wx/wx/gtk/dialog.h -src/srcparser.o: ./include/wx/wx/timer.h ./include/wx/wx/wx/gtk/timer.h -src/srcparser.o: ./include/wx/wx/utils.h ./include/wx/wx/wx/filefn.h -src/srcparser.o: ./include/wx/wx/wx/process.h ./include/wx/wx/settings.h -src/srcparser.o: ./include/wx/wx/wx/gtk/settings.h ./include/wx/wx/layout.h -src/srcparser.o: ./include/wx/wx/mdi.h ./include/wx/wx/wx/gtk/mdi.h -src/srcparser.o: ./include/wx/toolbar.h ./include/wx/wx/gtk/tbargtk.h -src/srcparser.o: ./include/wx/wx/scrolwin.h -src/srcparser.o: ./include/wx/wx/wx/generic/scrolwin.h -src/srcparser.o: ./include/wx/wx/statusbr.h -src/srcparser.o: ./include/wx/wx/wx/generic/statusbr.h -src/srcparser.o: ./include/wx/wx/msgdlg.h -src/srcparser.o: ./include/wx/wx/wx/generic/msgdlgg.h -src/srcparser.o: ./include/wx/wx/choicdlg.h -src/srcparser.o: ./include/wx/wx/wx/generic/choicdgg.h -src/srcparser.o: ./include/wx/wx/textdlg.h -src/srcparser.o: ./include/wx/wx/wx/generic/textdlgg.h -src/srcparser.o: ./include/wx/wx/filedlg.h ./include/wx/wx/wx/gtk/filedlg.h -src/srcparser.o: ./include/wx/wx/dirdlg.h -src/srcparser.o: ./include/wx/wx/wx/generic/dirdlgg.h ./include/wx/treectrl.h -src/srcparser.o: ./include/wx/wx/generic/treectrl.h ./include/wx/wx/cmndata.h -src/srcparser.o: ./include/wx/wx/intl.h ./include/wx/wx/valtext.h -src/srcparser.o: /usr/include/malloc.h ./include/srcparser.h -src/srcparser.o: ./include/markup.h -src/ifcontext.o: ./include/wx/wxprec.h ./include/wx/wx.h -src/ifcontext.o: ./include/wx/wx/setup.h ./include/wx/wx/wx/gtk/setup.h -src/ifcontext.o: ./include/wx/wx/defs.h -src/ifcontext.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/stddef.h -src/ifcontext.o: ./include/wx/wx/wx/version.h ./include/wx/wx/string.h -src/ifcontext.o: /usr/include/string.h /usr/include/features.h -src/ifcontext.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h -src/ifcontext.o: /usr/include/stdio.h /usr/include/libio.h -src/ifcontext.o: /usr/include/_G_config.h /usr/include/gnu/types.h -src/ifcontext.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/stdarg.h -src/ifcontext.o: /usr/include/stdio_lim.h -src/ifcontext.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/limits.h -src/ifcontext.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/syslimits.h -src/ifcontext.o: /usr/include/stdlib.h /usr/include/sys/types.h -src/ifcontext.o: /usr/include/time.h /usr/include/endian.h -src/ifcontext.o: /usr/include/bytesex.h /usr/include/sys/select.h -src/ifcontext.o: /usr/include/selectbits.h /usr/include/alloca.h -src/ifcontext.o: ./include/wx/wx/wx/debug.h /usr/include/assert.h -src/ifcontext.o: /usr/include/g++/iostream.h /usr/include/g++/streambuf.h -src/ifcontext.o: ./include/wx/wx/log.h ./include/wx/wx/window.h -src/ifcontext.o: ./include/wx/wx/wx/gtk/window.h ./include/wx/object.h -src/ifcontext.o: ./include/wx/wx/memory.h ./include/wx/list.h -src/ifcontext.o: ./include/wx/event.h ./include/wx/wx/gdicmn.h -src/ifcontext.o: ./include/wx/wx/wx/hash.h ./include/wx/wx/wx/colour.h -src/ifcontext.o: ./include/wx/wx/wx/wx/gtk/colour.h ./include/wx/gdiobj.h -src/ifcontext.o: ./include/wx/wx/gtk/gdiobj.h ./include/wx/palette.h -src/ifcontext.o: ./include/wx/wx/gtk/palette.h ./include/wx/validate.h -src/ifcontext.o: ./include/wx/cursor.h ./include/wx/wx/gtk/cursor.h -src/ifcontext.o: ./include/wx/font.h ./include/wx/wx/gtk/font.h -src/ifcontext.o: ./include/wx/region.h ./include/wx/wx/gtk/region.h -src/ifcontext.o: ./include/wx/accel.h ./include/wx/wx/gtk/accel.h -src/ifcontext.o: ./include/wx/wx/panel.h ./include/wx/wx/wx/generic/panelg.h -src/ifcontext.o: ./include/wx/wx/frame.h ./include/wx/wx/wx/gtk/frame.h -src/ifcontext.o: ./include/wx/icon.h ./include/wx/wx/dc.h -src/ifcontext.o: ./include/wx/wx/wx/gtk/dc.h ./include/wx/pen.h -src/ifcontext.o: ./include/wx/wx/gtk/pen.h ./include/wx/brush.h -src/ifcontext.o: ./include/wx/wx/gtk/brush.h ./include/wx/bitmap.h -src/ifcontext.o: ./include/wx/wx/gtk/bitmap.h ./include/wx/wx/dcclient.h -src/ifcontext.o: ./include/wx/wx/wx/gtk/dcclient.h ./include/wx/wx/dcmemory.h -src/ifcontext.o: ./include/wx/wx/wx/gtk/dcmemory.h ./include/wx/wx/dcprint.h -src/ifcontext.o: ./include/wx/wx/dcscreen.h ./include/wx/wx/wx/gtk/dcscreen.h -src/ifcontext.o: ./include/wx/wx/button.h ./include/wx/wx/wx/gtk/button.h -src/ifcontext.o: ./include/wx/control.h ./include/wx/wx/gtk/control.h -src/ifcontext.o: ./include/wx/wx/bmpbuttn.h ./include/wx/wx/wx/gtk/bmpbuttn.h -src/ifcontext.o: ./include/wx/wx/checkbox.h ./include/wx/wx/wx/gtk/checkbox.h -src/ifcontext.o: ./include/wx/wx/choice.h ./include/wx/wx/wx/gtk/choice.h -src/ifcontext.o: ./include/wx/wx/scrolbar.h ./include/wx/wx/wx/gtk/scrolbar.h -src/ifcontext.o: ./include/wx/wx/stattext.h ./include/wx/wx/wx/gtk/stattext.h -src/ifcontext.o: ./include/wx/wx/statbmp.h ./include/wx/wx/wx/gtk/statbmp.h -src/ifcontext.o: ./include/wx/wx/statbox.h ./include/wx/wx/wx/gtk/statbox.h -src/ifcontext.o: ./include/wx/wx/listbox.h ./include/wx/wx/wx/gtk/listbox.h -src/ifcontext.o: ./include/wx/wx/radiobox.h ./include/wx/wx/wx/gtk/radiobox.h -src/ifcontext.o: ./include/wx/wx/radiobut.h ./include/wx/wx/wx/gtk/radiobut.h -src/ifcontext.o: ./include/wx/wx/textctrl.h ./include/wx/wx/wx/gtk/textctrl.h -src/ifcontext.o: ./include/wx/wx/slider.h ./include/wx/wx/wx/gtk/slider.h -src/ifcontext.o: ./include/wx/wx/gauge.h ./include/wx/wx/wx/gtk/gauge.h -src/ifcontext.o: ./include/wx/wx/combobox.h ./include/wx/wx/wx/gtk/combobox.h -src/ifcontext.o: ./include/wx/wx/menu.h ./include/wx/wx/wx/gtk/menu.h -src/ifcontext.o: ./include/wx/menuitem.h ./include/wx/wx/gtk/menuitem.h -src/ifcontext.o: ./include/wx/wx/app.h ./include/wx/wx/wx/gtk/app.h -src/ifcontext.o: ./include/wx/wx/dialog.h ./include/wx/wx/wx/gtk/dialog.h -src/ifcontext.o: ./include/wx/wx/timer.h ./include/wx/wx/wx/gtk/timer.h -src/ifcontext.o: ./include/wx/wx/utils.h ./include/wx/wx/wx/filefn.h -src/ifcontext.o: ./include/wx/wx/wx/process.h ./include/wx/wx/settings.h -src/ifcontext.o: ./include/wx/wx/wx/gtk/settings.h ./include/wx/wx/layout.h -src/ifcontext.o: ./include/wx/wx/mdi.h ./include/wx/wx/wx/gtk/mdi.h -src/ifcontext.o: ./include/wx/toolbar.h ./include/wx/wx/gtk/tbargtk.h -src/ifcontext.o: ./include/wx/wx/scrolwin.h -src/ifcontext.o: ./include/wx/wx/wx/generic/scrolwin.h -src/ifcontext.o: ./include/wx/wx/statusbr.h -src/ifcontext.o: ./include/wx/wx/wx/generic/statusbr.h -src/ifcontext.o: ./include/wx/wx/msgdlg.h -src/ifcontext.o: ./include/wx/wx/wx/generic/msgdlgg.h -src/ifcontext.o: ./include/wx/wx/choicdlg.h -src/ifcontext.o: ./include/wx/wx/wx/generic/choicdgg.h -src/ifcontext.o: ./include/wx/wx/textdlg.h -src/ifcontext.o: ./include/wx/wx/wx/generic/textdlgg.h -src/ifcontext.o: ./include/wx/wx/filedlg.h ./include/wx/wx/wx/gtk/filedlg.h -src/ifcontext.o: ./include/wx/wx/dirdlg.h -src/ifcontext.o: ./include/wx/wx/wx/generic/dirdlgg.h ./include/wx/treectrl.h -src/ifcontext.o: ./include/wx/wx/generic/treectrl.h ./include/wx/wx/cmndata.h -src/ifcontext.o: ./include/wx/wx/intl.h ./include/wx/wx/valtext.h -src/ifcontext.o: /usr/include/malloc.h ./include/ifcontext.h -src/ifcontext.o: ./include/srcparser.h ./include/markup.h -src/ifcontext.o: ./include/cjparser.h /usr/include/memory.h -src/HelpGen.o: ./include/wx/wxprec.h ./include/cjparser.h -src/HelpGen.o: ./include/srcparser.h ./include/markup.h -src/HelpGen.o: /usr/include/g++/iostream.h /usr/include/g++/streambuf.h -src/HelpGen.o: /usr/include/libio.h /usr/include/features.h -src/HelpGen.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h -src/HelpGen.o: /usr/include/_G_config.h /usr/include/gnu/types.h -src/HelpGen.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/stddef.h -src/HelpGen.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/stdarg.h -src/HelpGen.o: /usr/include/memory.h /usr/include/stdlib.h -src/HelpGen.o: /usr/include/sys/types.h /usr/include/time.h -src/HelpGen.o: /usr/include/endian.h /usr/include/bytesex.h -src/HelpGen.o: /usr/include/sys/select.h /usr/include/selectbits.h -src/HelpGen.o: /usr/include/alloca.h /usr/include/stdio.h -src/HelpGen.o: /usr/include/stdio_lim.h -src/sourcepainter.o: ./include/wx/wxprec.h ./include/wx/wx.h -src/sourcepainter.o: ./include/wx/wx/setup.h ./include/wx/wx/wx/gtk/setup.h -src/sourcepainter.o: ./include/wx/wx/defs.h -src/sourcepainter.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/stddef.h -src/sourcepainter.o: ./include/wx/wx/wx/version.h ./include/wx/wx/string.h -src/sourcepainter.o: /usr/include/string.h /usr/include/features.h -src/sourcepainter.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h -src/sourcepainter.o: /usr/include/stdio.h /usr/include/libio.h -src/sourcepainter.o: /usr/include/_G_config.h /usr/include/gnu/types.h -src/sourcepainter.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/stdarg.h -src/sourcepainter.o: /usr/include/stdio_lim.h -src/sourcepainter.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/limits.h -src/sourcepainter.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/syslimits.h -src/sourcepainter.o: /usr/include/stdlib.h /usr/include/sys/types.h -src/sourcepainter.o: /usr/include/time.h /usr/include/endian.h -src/sourcepainter.o: /usr/include/bytesex.h /usr/include/sys/select.h -src/sourcepainter.o: /usr/include/selectbits.h /usr/include/alloca.h -src/sourcepainter.o: ./include/wx/wx/wx/debug.h /usr/include/assert.h -src/sourcepainter.o: /usr/include/g++/iostream.h /usr/include/g++/streambuf.h -src/sourcepainter.o: ./include/wx/wx/log.h ./include/wx/wx/window.h -src/sourcepainter.o: ./include/wx/wx/wx/gtk/window.h ./include/wx/object.h -src/sourcepainter.o: ./include/wx/wx/memory.h ./include/wx/list.h -src/sourcepainter.o: ./include/wx/event.h ./include/wx/wx/gdicmn.h -src/sourcepainter.o: ./include/wx/wx/wx/hash.h ./include/wx/wx/wx/colour.h -src/sourcepainter.o: ./include/wx/wx/wx/wx/gtk/colour.h ./include/wx/gdiobj.h -src/sourcepainter.o: ./include/wx/wx/gtk/gdiobj.h ./include/wx/palette.h -src/sourcepainter.o: ./include/wx/wx/gtk/palette.h ./include/wx/validate.h -src/sourcepainter.o: ./include/wx/cursor.h ./include/wx/wx/gtk/cursor.h -src/sourcepainter.o: ./include/wx/font.h ./include/wx/wx/gtk/font.h -src/sourcepainter.o: ./include/wx/region.h ./include/wx/wx/gtk/region.h -src/sourcepainter.o: ./include/wx/accel.h ./include/wx/wx/gtk/accel.h -src/sourcepainter.o: ./include/wx/wx/panel.h -src/sourcepainter.o: ./include/wx/wx/wx/generic/panelg.h -src/sourcepainter.o: ./include/wx/wx/frame.h ./include/wx/wx/wx/gtk/frame.h -src/sourcepainter.o: ./include/wx/icon.h ./include/wx/wx/dc.h -src/sourcepainter.o: ./include/wx/wx/wx/gtk/dc.h ./include/wx/pen.h -src/sourcepainter.o: ./include/wx/wx/gtk/pen.h ./include/wx/brush.h -src/sourcepainter.o: ./include/wx/wx/gtk/brush.h ./include/wx/bitmap.h -src/sourcepainter.o: ./include/wx/wx/gtk/bitmap.h ./include/wx/wx/dcclient.h -src/sourcepainter.o: ./include/wx/wx/wx/gtk/dcclient.h -src/sourcepainter.o: ./include/wx/wx/dcmemory.h -src/sourcepainter.o: ./include/wx/wx/wx/gtk/dcmemory.h -src/sourcepainter.o: ./include/wx/wx/dcprint.h ./include/wx/wx/dcscreen.h -src/sourcepainter.o: ./include/wx/wx/wx/gtk/dcscreen.h -src/sourcepainter.o: ./include/wx/wx/button.h ./include/wx/wx/wx/gtk/button.h -src/sourcepainter.o: ./include/wx/control.h ./include/wx/wx/gtk/control.h -src/sourcepainter.o: ./include/wx/wx/bmpbuttn.h -src/sourcepainter.o: ./include/wx/wx/wx/gtk/bmpbuttn.h -src/sourcepainter.o: ./include/wx/wx/checkbox.h -src/sourcepainter.o: ./include/wx/wx/wx/gtk/checkbox.h -src/sourcepainter.o: ./include/wx/wx/choice.h ./include/wx/wx/wx/gtk/choice.h -src/sourcepainter.o: ./include/wx/wx/scrolbar.h -src/sourcepainter.o: ./include/wx/wx/wx/gtk/scrolbar.h -src/sourcepainter.o: ./include/wx/wx/stattext.h -src/sourcepainter.o: ./include/wx/wx/wx/gtk/stattext.h -src/sourcepainter.o: ./include/wx/wx/statbmp.h -src/sourcepainter.o: ./include/wx/wx/wx/gtk/statbmp.h -src/sourcepainter.o: ./include/wx/wx/statbox.h -src/sourcepainter.o: ./include/wx/wx/wx/gtk/statbox.h -src/sourcepainter.o: ./include/wx/wx/listbox.h -src/sourcepainter.o: ./include/wx/wx/wx/gtk/listbox.h -src/sourcepainter.o: ./include/wx/wx/radiobox.h -src/sourcepainter.o: ./include/wx/wx/wx/gtk/radiobox.h -src/sourcepainter.o: ./include/wx/wx/radiobut.h -src/sourcepainter.o: ./include/wx/wx/wx/gtk/radiobut.h -src/sourcepainter.o: ./include/wx/wx/textctrl.h -src/sourcepainter.o: ./include/wx/wx/wx/gtk/textctrl.h -src/sourcepainter.o: ./include/wx/wx/slider.h ./include/wx/wx/wx/gtk/slider.h -src/sourcepainter.o: ./include/wx/wx/gauge.h ./include/wx/wx/wx/gtk/gauge.h -src/sourcepainter.o: ./include/wx/wx/combobox.h -src/sourcepainter.o: ./include/wx/wx/wx/gtk/combobox.h ./include/wx/wx/menu.h -src/sourcepainter.o: ./include/wx/wx/wx/gtk/menu.h ./include/wx/menuitem.h -src/sourcepainter.o: ./include/wx/wx/gtk/menuitem.h ./include/wx/wx/app.h -src/sourcepainter.o: ./include/wx/wx/wx/gtk/app.h ./include/wx/wx/dialog.h -src/sourcepainter.o: ./include/wx/wx/wx/gtk/dialog.h ./include/wx/wx/timer.h -src/sourcepainter.o: ./include/wx/wx/wx/gtk/timer.h ./include/wx/wx/utils.h -src/sourcepainter.o: ./include/wx/wx/wx/filefn.h ./include/wx/wx/wx/process.h -src/sourcepainter.o: ./include/wx/wx/settings.h -src/sourcepainter.o: ./include/wx/wx/wx/gtk/settings.h -src/sourcepainter.o: ./include/wx/wx/layout.h ./include/wx/wx/mdi.h -src/sourcepainter.o: ./include/wx/wx/wx/gtk/mdi.h ./include/wx/toolbar.h -src/sourcepainter.o: ./include/wx/wx/gtk/tbargtk.h ./include/wx/wx/scrolwin.h -src/sourcepainter.o: ./include/wx/wx/wx/generic/scrolwin.h -src/sourcepainter.o: ./include/wx/wx/statusbr.h -src/sourcepainter.o: ./include/wx/wx/wx/generic/statusbr.h -src/sourcepainter.o: ./include/wx/wx/msgdlg.h -src/sourcepainter.o: ./include/wx/wx/wx/generic/msgdlgg.h -src/sourcepainter.o: ./include/wx/wx/choicdlg.h -src/sourcepainter.o: ./include/wx/wx/wx/generic/choicdgg.h -src/sourcepainter.o: ./include/wx/wx/textdlg.h -src/sourcepainter.o: ./include/wx/wx/wx/generic/textdlgg.h -src/sourcepainter.o: ./include/wx/wx/filedlg.h -src/sourcepainter.o: ./include/wx/wx/wx/gtk/filedlg.h -src/sourcepainter.o: ./include/wx/wx/dirdlg.h -src/sourcepainter.o: ./include/wx/wx/wx/generic/dirdlgg.h -src/sourcepainter.o: ./include/wx/treectrl.h -src/sourcepainter.o: ./include/wx/wx/generic/treectrl.h -src/sourcepainter.o: ./include/wx/wx/cmndata.h ./include/wx/wx/intl.h -src/sourcepainter.o: ./include/wx/wx/valtext.h ./include/sourcepainter.h -src/sourcepainter.o: ./include/markup.h -src/wx/string.o: ./include/wx/wxprec.h /usr/include/ctype.h -src/wx/string.o: /usr/include/features.h /usr/include/sys/cdefs.h -src/wx/string.o: /usr/include/gnu/stubs.h /usr/include/endian.h -src/wx/string.o: /usr/include/bytesex.h /usr/include/string.h -src/wx/string.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/stddef.h -src/wx/string.o: /usr/include/stdlib.h /usr/include/sys/types.h -src/wx/string.o: /usr/include/gnu/types.h /usr/include/time.h -src/wx/string.o: /usr/include/sys/select.h /usr/include/selectbits.h -src/wx/string.o: /usr/include/alloca.h -src/wx_extra_imps.o: ./include/wx/wxprec.h /usr/include/memory.h -src/wx_extra_imps.o: /usr/include/features.h /usr/include/sys/cdefs.h -src/wx_extra_imps.o: /usr/include/gnu/stubs.h -src/wx/object.o: ./include/wx/wxprec.h /usr/include/string.h -src/wx/object.o: /usr/include/features.h /usr/include/sys/cdefs.h -src/wx/object.o: /usr/include/gnu/stubs.h -src/wx/object.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/stddef.h -src/wx/object.o: /usr/include/assert.h -src/wx/hash.o: ./include/wx/wxprec.h ./include/wx/list.h -src/wx/hash.o: ./include/wx/wx/defs.h -src/wx/hash.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/stddef.h -src/wx/hash.o: ./include/wx/wx/setup.h ./include/wx/wx/wx/gtk/setup.h -src/wx/hash.o: ./include/wx/wx/wx/version.h ./include/wx/wx/wx/debug.h -src/wx/hash.o: /usr/include/assert.h /usr/include/features.h -src/wx/hash.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h -src/wx/hash.o: ./include/wx/object.h ./include/wx/wx/memory.h -src/wx/hash.o: ./include/wx/wx/string.h /usr/include/string.h -src/wx/hash.o: /usr/include/stdio.h /usr/include/libio.h -src/wx/hash.o: /usr/include/_G_config.h /usr/include/gnu/types.h -src/wx/hash.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/stdarg.h -src/wx/hash.o: /usr/include/stdio_lim.h -src/wx/hash.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/limits.h -src/wx/hash.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/syslimits.h -src/wx/hash.o: /usr/include/stdlib.h /usr/include/sys/types.h -src/wx/hash.o: /usr/include/time.h /usr/include/endian.h -src/wx/hash.o: /usr/include/bytesex.h /usr/include/sys/select.h -src/wx/hash.o: /usr/include/selectbits.h /usr/include/alloca.h -src/wx/hash.o: /usr/include/g++/iostream.h /usr/include/g++/streambuf.h -src/wx/hash.o: ./include/wx/wx/wx/hash.h -src/wx/log.o: ./include/wx/wxprec.h ./include/wx/file.h -src/wx/log.o: ./include/wx/textfile.h ./include/wx/wx/defs.h -src/wx/log.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/stddef.h -src/wx/log.o: ./include/wx/wx/setup.h ./include/wx/wx/wx/gtk/setup.h -src/wx/log.o: ./include/wx/wx/wx/version.h ./include/wx/wx/string.h -src/wx/log.o: /usr/include/string.h /usr/include/features.h -src/wx/log.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h -src/wx/log.o: /usr/include/stdio.h /usr/include/libio.h -src/wx/log.o: /usr/include/_G_config.h /usr/include/gnu/types.h -src/wx/log.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/stdarg.h -src/wx/log.o: /usr/include/stdio_lim.h -src/wx/log.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/limits.h -src/wx/log.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/syslimits.h -src/wx/log.o: /usr/include/stdlib.h /usr/include/sys/types.h -src/wx/log.o: /usr/include/time.h /usr/include/endian.h -src/wx/log.o: /usr/include/bytesex.h /usr/include/sys/select.h -src/wx/log.o: /usr/include/selectbits.h /usr/include/alloca.h -src/wx/log.o: ./include/wx/wx/wx/debug.h /usr/include/assert.h -src/wx/log.o: /usr/include/g++/iostream.h /usr/include/g++/streambuf.h -src/wx/log.o: ./include/wx/wx/dynarray.h ./include/wx/wx/utils.h -src/wx/log.o: ./include/wx/object.h ./include/wx/wx/memory.h -src/wx/log.o: ./include/wx/list.h ./include/wx/wx/window.h -src/wx/log.o: ./include/wx/wx/wx/gtk/window.h ./include/wx/event.h -src/wx/log.o: ./include/wx/wx/gdicmn.h ./include/wx/wx/wx/hash.h -src/wx/log.o: ./include/wx/wx/wx/colour.h ./include/wx/wx/wx/wx/gtk/colour.h -src/wx/log.o: ./include/wx/gdiobj.h ./include/wx/wx/gtk/gdiobj.h -src/wx/log.o: ./include/wx/palette.h ./include/wx/wx/gtk/palette.h -src/wx/log.o: ./include/wx/validate.h ./include/wx/cursor.h -src/wx/log.o: ./include/wx/wx/gtk/cursor.h ./include/wx/font.h -src/wx/log.o: ./include/wx/wx/gtk/font.h ./include/wx/region.h -src/wx/log.o: ./include/wx/wx/gtk/region.h ./include/wx/accel.h -src/wx/log.o: ./include/wx/wx/gtk/accel.h ./include/wx/wx/wx/filefn.h -src/wx/log.o: ./include/wx/wx/wx/process.h ./include/wx/wx/log.h -src/wx/log.o: /usr/include/errno.h /usr/include/errnos.h -src/wx/log.o: /usr/include/linux/errno.h /usr/include/asm/errno.h -src/wx/file.o: ./include/wx/wxprec.h ./include/wx/wx/defs.h -src/wx/file.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/stddef.h -src/wx/file.o: ./include/wx/wx/setup.h ./include/wx/wx/wx/gtk/setup.h -src/wx/file.o: ./include/wx/wx/wx/version.h /usr/include/stdio.h -src/wx/file.o: /usr/include/libio.h /usr/include/features.h -src/wx/file.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h -src/wx/file.o: /usr/include/_G_config.h /usr/include/gnu/types.h -src/wx/file.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/stdarg.h -src/wx/file.o: /usr/include/stdio_lim.h /usr/include/fcntl.h -src/wx/file.o: /usr/include/fcntlbits.h /usr/include/sys/types.h -src/wx/file.o: /usr/include/time.h /usr/include/endian.h -src/wx/file.o: /usr/include/bytesex.h /usr/include/sys/select.h -src/wx/file.o: /usr/include/selectbits.h /usr/include/sys/stat.h -src/wx/file.o: /usr/include/statbuf.h ./include/wx/wx/string.h -src/wx/file.o: /usr/include/string.h -src/wx/file.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/limits.h -src/wx/file.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/syslimits.h -src/wx/file.o: /usr/include/stdlib.h /usr/include/alloca.h -src/wx/file.o: ./include/wx/wx/wx/debug.h /usr/include/assert.h -src/wx/file.o: /usr/include/g++/iostream.h /usr/include/g++/streambuf.h -src/wx/file.o: ./include/wx/wx/intl.h ./include/wx/file.h -src/wx/file.o: ./include/wx/wx/log.h -src/wx/list.o: ./include/wx/wxprec.h -src/wx/list.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/stdarg.h -src/wx/list.o: /usr/include/stdlib.h /usr/include/features.h -src/wx/list.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h -src/wx/list.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.60/include/stddef.h -src/wx/list.o: /usr/include/sys/types.h /usr/include/gnu/types.h -src/wx/list.o: /usr/include/time.h /usr/include/endian.h -src/wx/list.o: /usr/include/bytesex.h /usr/include/sys/select.h -src/wx/list.o: /usr/include/selectbits.h /usr/include/alloca.h -src/wx/list.o: /usr/include/string.h diff --git a/utils/HelpGen/include/cjparser.h b/utils/HelpGen/include/cjparser.h deleted file mode 100644 index 47c955e832..0000000000 --- a/utils/HelpGen/include/cjparser.h +++ /dev/null @@ -1,125 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: No names yet. -// Purpose: Implementation of C++/Java parser -// compatible with SourceParserBase interface -// Author: Aleksandras Gluchovas -// Modified by: -// Created: 22/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Aleskandars Gluchovas -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __CJPARSESR_G__ -#define __CJPARSESR_G__ - -#include "srcparser.h" - -#include -#include -#include -#include - -// class parses given "memory-resident" Java or C++ source code -// and captures information about classes/attrubutes/methods/ -// arguments/etc into structures. Conforms with SourceParserBase -// interface requirements. - -class CJSourceParser : public SourceParserBase -{ -protected: - // begining of the full-text area of the source file - char* mpStart; - - // points to first character after the end - // of teh full-text area - char* mpEnd; - - // current "privacy level" - int mCurVis; - - // current parsing position int full-text area - char* cur; - - // about the current class - bool mIsVirtaul; - bool mIsTemplate; - size_t mNestingLevel; - - // context data for which is currently being collected - spContext* mpCurCtx; - - int mCurCtxType; // type of the current context - - bool mCommentsOn; - bool mMacrosOn; - -protected: - - void AttachComments( spContext& ctx, char* cur ); - void ParseKeyword( char*& cur ); - bool ParseNameAndRetVal( char*& cur, bool& isAMacro ); - bool ParseArguments( char*& cur ); - void ParseMemberVar( char*& cur ); - void SkipFunction( char*& cur ); - void SkipFunctionBody( char*& cur ); - bool CheckVisibilty( char*& cur ); - - void AddClassNode( char*& cur ); - void AddMacroNode( char*& cur ); - void AddEnumNode( char*& cur ); - void AddTypeDefNode( char*& cur ); - - void DumpOperationInfo( spOperation& info, const string& tab, ostream& os ); - void DumpClassHeader( spClass& info, ostream& os ); - void DumpClassBody( spClass& info, ostream& os ); - -public: - - // NOTE:: discarding of macros or comments improves performance and - // decreases memory usage - - CJSourceParser(bool collectCommnets = 1, - bool collectMacros = 1); - - // returns the root-node of the created context tree - // (user is responsible for releasing it from the heep) - // "end" should point to the last (character + 1) of the - // source text - - virtual spFile* Parse( char* start, char* end ); -}; - -// inline'ed helpers used (just info): -/* -static inline void skip_to_eol( char*& cur ); -static inline void skip_eol( char*& cur ); -static inline bool skip_to_next_comment_in_the_line( char*& cur ); -static void skip_to_prev_line( char*& cur ); -static inline void skip_comments( char*& cur ); -static inline void clear_commets_queue(); -static inline void skip_quoted_string( char*& cur ); -static inline bool get_next_token( char*& cur ); -static inline void skip_preprocessor_dir( char*& cur ); -static void skip_token( char*& cur ); -static inline size_t get_token_len( char* tok ); -static inline bool cmp_tokens( char* tok1, char* tok2 ); -static inline bool cmp_tokens_fast( char* tok1, char* tok2, size_t len ); -static inline void skip_tempalate_statement( char*& cur ); -static inline void skip_statement( char*& cur ); -static inline void skip_token_back( char*& cur ); -static inline void skip_next_token_back( char*& cur ); -static string get_token_str( char* cur ); -static size_t skip_block( char*& cur ); -static inline bool skip_imp_block( char*& cur ); -static bool is_class_token( char*& cur ); -inline static bool is_forward_decl( char* cur ); -inline static bool is_function( char* cur, bool& isAMacro ); -static inline void skip_scope_block( char*& cur ); -static void arrange_indirection_tokens_between( string& type, string& identifier ); -static bool is_keyword( char* cur ); -static inline void get_string_between( char* start, char* end, string* pStr ); -static char* set_comment_text( string& text, char* start ); -*/ - -#endif diff --git a/utils/HelpGen/include/docripper.h b/utils/HelpGen/include/docripper.h deleted file mode 100644 index 23ae9ac4f0..0000000000 --- a/utils/HelpGen/include/docripper.h +++ /dev/null @@ -1,157 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: No names yet. -// Purpose: Contrib. demo -// Author: Aleksandras Gluchovas -// Modified by: -// Created: 22/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Aleskandars Gluchovas -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __DOCRIPPER_G__ -#define __DOCRIPPER_G__ - -#include "scriptbinder.h" -#include "srcparser.h" -#include "sourcepainter.h" - -#if defined( wxUSE_TEMPLATE_STL ) - - #include - - typedef vector STemplateListT; - -#else - - #include "wxstlvec.h" - - typedef ScriptTemplate* ScriptTemplatePtrT; - typedef WXSTL_VECTOR_SHALLOW_COPY(ScriptTemplatePtrT) STemplateListT; - -#endif - - -// specific DocGenerator class for "Ripper", -// also acts as source code visitor - -class RipperDocGen : public DocGeneratorBase, public spVisitor -{ -protected: - // templates for various sections - ScriptTemplate mTopTempl; - ScriptTemplate mContentIdxTempl; - ScriptTemplate mSuperContentTempl; - ScriptTemplate mSubContentTempl; - ScriptTemplate mOutLineTempl; - ScriptTemplate mOutLine1Templ; - - // template used for corss-references - ScriptTemplate mRefTempl; - - // template used to show not-existing sections - ScriptTemplate mDeadRefTempl; - - // template collection for generation of class-tree - STemplateListT mTreeTemplates; - - // pointers to all major index sections - ScriptSection* mpTopIdx; - ScriptSection* mpClassIdx; - ScriptSection* mpEnumIdx; - ScriptSection* mpTypeDefIdx; - ScriptSection* mpMacroIdx; - ScriptSection* mpGlobalVarsIdx; - ScriptSection* mpGlobalFuncIdx; - ScriptSection* mpConstIdx; - - // parser set up from user-code for sepcific language - SourceParserBase* mpParser; - - // class section, which is currently being - // assembled - ScriptSection* mpCurClassSect; - - // source syntax heighlighter object - SourcePainter mSrcPainter; - - // context, to which all file contexts - // are assembled - spContext* mpFileBinderCtx; - - // script tags set up from usesr code - MarkupTagsT mTags; - -protected: - // helpers - void AppendComments( spContext& fromContext, string& str ); - - void AppendMulitilineStr( string& st, string& mlStr ); - - void AppendHighlightedSource( string& st, string source ); - - // returns TRUE, if no comments found in the context, - // plus, creates dummy(empty) section, and puts a - // reference woth "dead-link" template to it in the - // given index-section "toSect" - - bool CheckIfUncommented( spContext& ctx, ScriptSection& toSect ); - - // checks if context has any comments, then returns - // template of normal reference, otherwise of dead reference - - ScriptTemplate* GetRefTemplFor( spContext& ctx ); - - // adds "someClass::" perfix to the context name, - // if it's not in the file scope (i.e. if it's not global) - - string GetScopedName( spContext& ofCtx ); - - // adds section to currently assembled class section - // and places references to it from "public", "protected" - // or "private" indexing-subsections of the class, depending - // on the visibility of the context - - void AddToCurrentClass( ScriptSection* pSection, spContext& ctx, - const char* subSectionName ); - - // called, after all files are processed, to - // resolve possible super/derived class relations, - // and put cross references to them - where resolution was - // successful - void LinkSuperClassRefs(); - - // implementations of "visiting procedures", declared in spVisitor - - virtual void VisitClass( spClass& cl ); - virtual void VisitEnumeration( spEnumeration& en ); - virtual void VisitTypeDef( spTypeDef& td ); - virtual void VisitPreprocessorLine( spPreprocessorLine& pd ); - virtual void VisitAttribute( spAttribute& attr ); - virtual void VisitOperation( spOperation& op ); - - // overriden member of DocGernatorBase - - virtual bool OnSaveDocument( ScriptStream& stm ); - - virtual ScriptSection* GetTopSection() - { return mpTopIdx; } - -public: - RipperDocGen(); - ~RipperDocGen(); - - // should be called onece to set user-code provided, - // parser for specific source code language - // (NOTE:: it's the user-code's responsibility to - // relseas memory of pParser) - - void Init( SourceParserBase* pParser ); - - // should be called on each file - - void ProcessFile( const char* sourceFile ); -}; - - -#endif \ No newline at end of file diff --git a/utils/HelpGen/include/ifcontext.h b/utils/HelpGen/include/ifcontext.h deleted file mode 100644 index 80014c88f3..0000000000 --- a/utils/HelpGen/include/ifcontext.h +++ /dev/null @@ -1,100 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: No names yet. -// Purpose: Contrib. demo -// Author: Aleksandras Gluchovas -// Modified by: -// Created: 27/12/98 -// RCS-ID: $Id$ -// Copyright: (c) Aleskandars Gluchovas -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __IFCONTEXT_G__ -#define __IFCONTEXT_G__ - -#include "srcparser.h" -#include "cjparser.h" - -class spBookmark -{ -public: - size_t mFrom; - size_t mLen; - size_t mFileNo; - - inline spBookmark() {} - - inline spBookmark( int from, int len, int fileNo ) - : mFrom( from ), mLen( len ), mFileNo( fileNo ) - {} -}; - -#if defined( wxUSE_TEMPLATE_STL ) - - typedef vector - - #ifdef WIN32 - #include - #else - #include - #include - #endif - -#else - - #include "wxstlvec.h" - #include "wx/string.h" - - // FIXME:: dirty! - typedef wxString string; - -#endif - -#ifndef ASSERT -// assert yourself -#define ASSERT(x) if (!(x) ) throw; -#endif - -#include "markup.h" - -// just another portable stream class... - -class ScriptStream -{ -protected: - char* mpBuf; - size_t mSize; - size_t mCapacity; -public: - ScriptStream(); - ~ScriptStream(); - - void WriteBytes( const void* srcBuf, size_t count ); - - ScriptStream& operator<<( const char* str ); - ScriptStream& operator<<( const string& str ); - ScriptStream& operator<<( char ch ); - - void endl(); - - inline char* GetBuf() { return mpBuf; } - inline size_t GetBufSize() { return mSize; } - - // clears current contents of the stream - void Reset() { mSize = 0; } -}; - - -class ScriptTemplate; - -// used internally by ScriptTemplate - -enum TEMPLATE_VARIABLE_TYPES -{ - TVAR_INTEGER, - TVAR_STRING, - TVAR_DOUBLE, - TVAR_REF_ARRAY -}; - -// helper structures used only by ScriptTemplate - -struct TVarInfo -{ -public: - const char* mName; - int mType; - int mOfs; - - TVarInfo( const char* name, int ofs, int varType ) - : mName(name), - mType( varType ), - mOfs( ofs ) - {} -}; - -struct TArrayInfo : public TVarInfo -{ -public: - int mRefOfs; - int mSizeIntOfs; - int mObjRefTemplOfs; - - TArrayInfo( const char* name ) - : TVarInfo( name, 0, TVAR_REF_ARRAY ) - {} -}; - -// stores offset of the given member (of the given class) -// to (*pOfs), though the use of template classes would have -// solved this problem in much clearer fashion - -// FOR NOW:: obtaining physical offset of class member -// does not appeare to be protable across compilers? -// FIXME:: +/- 1 problem - -#ifdef __UNIX__ - #define WEIRD_OFFSET 1 -#else - #define WEIRD_OFFSET 0 - -#endif - -#define GET_VAR_OFS( className, varName, pOfs ) \ - { \ - int* className::* varPtr; \ - varPtr = (int* className::*)&className::varName; \ - \ - (*pOfs) = int(*(int*)&varPtr)-WEIRD_OFFSET; \ - } - -class ScriptSection; - -#if defined( wxUSE_TEMPLATE_STL ) - - typedef vector TVarListT; - - // container class for sections - typedef vector SectListT; - -#else - - typedef TVarInfo* TVarInfoPtrT; - typedef ScriptSection* ScriptSectionPtrT; - - typedef WXSTL_VECTOR_SHALLOW_COPY(TVarInfoPtrT) TVarListT; - - // container class for sections - typedef WXSTL_VECTOR_SHALLOW_COPY(ScriptSectionPtrT) SectListT; - -#endif - -// class performs preprocessing of arbitrary scripts, -// replaces identifiers enclosed in $(..) tag, whith -// values of the corresponding class member variables - -class ScriptTemplate -{ -protected: - // do not use string object here - parsing of - // C string can be much faster (in debug v.) - char* mTText; - - - TVarListT mVars; - - inline void PrintVar( TVarInfo* pInfo, - void* dataObj, - ScriptStream& stm ); - -public: - ScriptTemplate( const string& templateText ); - virtual ~ScriptTemplate(); - - bool HasVar( const char* name ); - - // Member variables registration methods. - - // NOTE:: GET_VAR_OFS() macro should be used - // to get offset of the class member (see #define above) - void AddStringVar ( const char* name, int ofs ); - void AddIntegerVar( const char* name, int ofs ); - void AddDoubleVar ( const char* name, int ofs ); - - void AddObjectRefArray( const char* name, - int ofsRefToFirstObj, - int ofsObjSizeInt, - int ofsObjRefTempl - ); - - // reads the script, replaces $(..) tags with values - // of registered members of dataObj object, and outputs - // the result to given text stream - - void PrintScript( void* dataObj, ScriptStream& stm ); -}; - -class ScriptSection; - -// class manages section and aggregated sections of -// inter-linked documents - -class ScriptSection -{ -protected: - - // NOTE:: "$(NAME)", $(ID), "$(BODY)" and "$(REFLIST)" aree - // reseved template variables of ScriptSection - - // the below there members are registered to ScriptTemplate, - // GUID within the section tree (numeric) - - ScriptSection* mpParent; - string mId; // $(ID) - string mName; // $(NAME) - string mBody; // $(BODY) - - // NULL, if this section is not aggregated anywhere - - SectListT mSubsections; // aggregated sectons - SectListT mReferences; // registered as $(REFLIST) - - bool mAutoHide; // see autoHide arg, in constructor - bool mSortOn; // TRUE, if sort subsectons by naem - - // tempalte for this section - ScriptTemplate* mpSectTempl; - - // template used for links (or references) to this section - ScriptTemplate* mpRefTempl; - - // do not call destructor of this object, - // call RemoveRef() instead - int mRefCount; - - static int mIdCounter; // generator of GUIDs - - // fields registered and used by ScriptTemplate object - void* mRefFirst; - int mArrSize; - -protected: - virtual void AddRef(); - virtual void RemoveRef(); - void DoRemoveEmptySections(int& nRemoved, SectListT& removedLst); - void DoRemoveDeadLinks( SectListT& removedLst); - -public: - - // NOTE:: pass NULL to certain template, if your sure - // this kind of template will never be used, - // e.g. if section is contained but never referrenced, - // then pReferenceTemplate can be NULL - - // if autoHide option is TRUE, the section will be automatically - // collapsed (not shown) if it doesn't contain any references - // to other sections (e.g. could be usefull for autoamically - // hiding empty index-sections). - - ScriptSection( const string& name = "", - const string& body = "", - ScriptTemplate* pSectionTemplate = NULL, - ScriptTemplate* pReferenceTemplate = NULL, - bool autoHide = FALSE, - bool sorted = FALSE - ); - - // calls RemoveRef() to all aggreagated sections first, - // then to all referenced section - this way all - // sections (even not aggregated ones) become "garbage-collected" - - // NOTE:: do not call destructor directlly, call RemoveRef() - // instead - virtual ~ScriptSection(); - - - // if addToReferencesToo is TRUE, section is aggregated and - // also added to reference list of this section - - void AddSection( ScriptSection* pSection, bool addToReferencesToo = FALSE ); - - // add cross-reference to this given section - void AddReference( ScriptSection* pReferredSection ); - - // subsection may be given of variable depth level, - // e.g. "publications/reviews/software" - - ScriptSection* GetSubsection( const char* name ); - - // returns list aggregated sections - SectListT& GetSubsections(); - - // binds reserved template names ( $(..) ) to member - // vairalbes in the ScriptSection class, should be called - // to initialize each user-code provided script template - - static void RegisterTemplate( ScriptTemplate& sectionTempalte ); - - // prints out section tree to the stream, starting from - // this section as a root node - virtual void Print( ScriptStream& stm ); - - // searches empty sections which has autoHide == TRUE, - // and colapses them (this method should be called ) - // on the root-section of the sections tree - - // NOTE:: does not work properly, yet! - void RemoveEmptySections(); -}; - -// base class for documnetation generators -// (allows user code set up target script type, -// independently of documentation type) - -class DocGeneratorBase -{ -protected: - MarkupTagsT mTags; - - // override this method to do some post processing - // after generation of document, or even write some - // data into output stream, before the section tree - // is flushed into it. - - // return FALSE, if something has gone wrong and - // document cannot be saved now - - virtual bool OnSaveDocument( ScriptStream& stm ) - { return 1; } - - // override this method to provide reference to - // the top section of the document (used as default - // starting section when saving a document) - - virtual ScriptSection* GetTopSection() - { return 0; } - -public: - - DocGeneratorBase() - : mTags(0) // no defaul script - {} - - // dectrouctors of polymorphic classes SHOULD be virtual - virtual ~DocGeneratorBase() {} - - // returns tags, being used for specific target script - MarkupTagsT GetScriptMarkupTags() { return mTags; } - - // sets tag array for specific script - - // NOTE:: Why virtual? since approach with MarkupTagsT is - // "flowless" only in theory. Overriding this method - // allows document generators to check the type of the - // target script, and perhaps make some modifications - // to generator's tamplates, to match the specific script - - virtual void SetScriptMarkupTags( MarkupTagsT tags ) - { mTags = tags; } - - // seves document to file starting from the root-node of - // the document (provided by GetTopSection() method), - // or from "pFromSection" if it's not NULL. - - // fopenOptions arg. is string passed to fopen() method, - // returns TRUE, if saving was successfull - - virtual bool SaveDocument( const char* fname, - const char* fopenOptions = "w", - ScriptSection* pFromSection = NULL - ); - -}; - -#endif diff --git a/utils/HelpGen/include/sourcepainter.h b/utils/HelpGen/include/sourcepainter.h deleted file mode 100644 index 333059a03a..0000000000 --- a/utils/HelpGen/include/sourcepainter.h +++ /dev/null @@ -1,104 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: No names yet. -// Purpose: Contrib. demo -// Author: Aleksandras Gluchovas -// Modified by: -// Created: 22/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Aleskandars Gluchovas -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __SOURCEPAINTER_G__ -#define __SOURCEPAINTER_G__ - -#ifndef ASSERT -#define ASSERT(x) if (!(x)) throw -#endif - -#if defined( wxUSE_TEMPLATE_STL ) - - #include - typedef vector SPBlockListT; - - #ifdef WIN32 - #include - #else - #include - #include - #endif -#else - - #include "wxstlvec.h" - #include "wx/string.h" - - // FIXME:: dirty! - #define string wxString - - typedef WXSTL_VECTOR_SHALLOW_COPY(int) SPBlockListT; - -#endif - -#include "markup.h" // import MarkupTagsT definition - -// "colored" codes for highlighted blocks - -#define RANK_BLACK 0 // common source fragments -#define RANK_BLUE 1 // basic types -#define RANK_RED 2 // reserved words -#define RANK_GREEN 3 // comments - -// colored block description format : -// int( ( rank << 16 ) | ( source_range_len ) ) - - -// FOR NOW:: no lagnguage-map selection - -// source code syntax heighlighter (CPP+JAVA+VB+PASCAL) - -class SourcePainter -{ -protected: - string mResultStr; - SPBlockListT mBlocks; - bool mCollectResultsOn; - - // state variables - bool mIsInComment; - bool mCommentIsMultiline; -public: - - // assembleResultString == TRUE - instructs painter - // to collect each chunk of srouce passed to ProcessSource(), - // so that results cann be futher obtained in a single string - // instead of vector of block descriptions - - SourcePainter( bool assembleResultString = TRUE ); - virtual ~SourcePainter() {} - - // can be called multiple times (e.g. on each source line) - void ProcessSource( char* src, int srcLen ); - - // method, for manually adjusting state of source painter - void SetState( bool isInComment, - bool commentIsMultiline ); - - // reinitializes object - clears results of previouse processing - void Init( bool assembleResultString = TRUE ); - - // generates string of highlighted source for the scipting - // language given by "tags" argument - - virtual void GetResultString(string& result, MarkupTagsT tags); - - // returns vector of block descriptors, see SPBlockListT definition - // (block descriptors can be used for fast custom hightlighted text generation) - - SPBlockListT& GetBlocks(); - - // NOTE:: static method - // returns if the given word is a reserved word or basic type identifier - static bool IsKeyword( char* word, int wordLen ); -}; - -#endif diff --git a/utils/HelpGen/include/srcparser.h b/utils/HelpGen/include/srcparser.h deleted file mode 100644 index d6dba4650f..0000000000 --- a/utils/HelpGen/include/srcparser.h +++ /dev/null @@ -1,734 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: No names yet. -// Purpose: To provide a simple _framework_ -// for series of source code parsers with -// compatible interfaces -// Author: Aleksandras Gluchovas -// Modified by: AG on 28/12/98 -// Created: 22/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Aleskandars Gluchovas -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __SRCPARSER_G__ -#define __SRCPARSER_G__ - -#if defined( wxUSE_TEMPLATE_STL ) - #include - - #ifdef WIN32 - #include - #else - - #include - #include - - #endif - -#else - #include "wx/string.h" - #include "wxstlvec.h" - - // FOR NOW:: quick n' dirty: - - #define string wxString - -#endif - -#include "markup.h" // markup tags used in spOperator::GetFullName() - -// context class list in "inside-out" order : - -class spContext; - -class spParameter; -class spAttribute; -class spOperation; -class spEnumeration; -class spTypeDef; -class spPreprocessorLine; -class spClass; -class spNameSpace; -class spFile; - -// source context visibilities -enum SRC_VISIBLITY_TYPES -{ - SP_VIS_PUBLIC, - SP_VIS_PROTECTED, - SP_VIS_PRIVATE -}; - -// class types -enum SP_CLASS_TYPES -{ - SP_CLTYPE_CLASS, - SP_CLTYPE_TEMPLATE_CLASS, - SP_CLTYPE_STRUCTURE, - SP_CLTYPE_UNION, - SP_CLTYPE_INTERFACE -}; - -// inheritance types -enum SP_INHERITANCE_TYPES -{ - SP_INHERIT_VIRTUAL, - SP_INHERIT_PUBLIC, - SP_INHERIT_PRIVATE -}; - -// proprocessor definitions types (specific to C++ code) - -enum SP_PREP_DEFINITION_TYPES -{ - SP_PREP_DEF_DEFINE_SYMBOL, - SP_PREP_DEF_REDEFINE_SYMBOL, - SP_PREP_DEF_INCLUDE_FILE, - SP_PREP_DEF_OTHER -}; - -// common context types - -#define SP_CTX_UNKNOWN 0x000 -#define SP_CTX_FILE 0x001 -#define SP_CTX_NAMESPACE 0x002 -#define SP_CTX_CLASS 0x004 -#define SP_CTX_TYPEDEF 0x008 -#define SP_CTX_PREPROCESSOR 0x010 -#define SP_CTX_ENUMERATION 0x020 -#define SP_CTX_ATTRIBUTE 0x040 -#define SP_CTX_OPERATION 0x080 -#define SP_CTX_PARAMETER 0x100 - -// other (custom) context codes may be defined elsewere, however they should -// not clash with above codes for common type and also should not -// exceed 16-bits of in value - -// masks all context types (up to 16 custom context can be defined) - -#define SP_CTX_ANY 0xFFFF - -class spComment; - - - -#if defined( wxUSE_TEMPLATE_STL ) - - // context members - typedef vector MMemberListT; - // comments list - typedef vector MCommentListT; - // list of parameters - typedef vector MParamListT; - // string list - typedef vector StrListT; - -#else - - typedef spContext* spContextPtrT; - typedef spComment* spCommentPtrT; - typedef spParameter* spParameterPtrT; - typedef WXSTL_VECTOR_SHALLOW_COPY(spContextPtrT) MMemberListT; - typedef WXSTL_VECTOR_SHALLOW_COPY(spCommentPtrT) MCommentListT; - typedef WXSTL_VECTOR_SHALLOW_COPY(spParameterPtrT) MParamListT; - typedef WXSTL_VECTOR_SHALLOW_COPY(string) StrListT; - -#endif; -// base class for all visitors of source code contents - -class spVisitor -{ -protected: - bool mSiblingSkipped; - bool mChildSkipped; - int mContextMask; - - spContext* mpCurCxt; - -public: - // methods invoked by context - - // method invoked from user's controling code - // to visit all nodes staring at the given context. - // Content is sorted if requrired, see comments - // spClass on sorting the class members - - void VisitAll( spContext& atContext, - bool sortContent = TRUE - ); - - // methods invoked by visitor - - // goes to the next context in the outter scope - // NOTE:: should not be invoked more than once while - // visiting certain context - - void SkipSiblings(); - - // prevents going down into the contexts contained by - // the current context - // NOTE:: the same as above - - void SkipChildren(); - - // can be called only in from visiting procedure - void RemoveCurrentContext(); - - // method enables fast filtered traversal - // of source content, e.g. collecting only classes, - // or only global functions - - // arg. context - can contain combination of contexts concatinated - // with bitwise OR, e.g. SP_CTX_CLASS | SP_CTX_NAMESPACE - // - // method can be invoked from the user's controling as well as - // from within the visting procedure - - void SetFilter( int contextMask ); - - // methods should be implemneted by specific visitor: - - // NOTE:: Do not confuse visiting with parsing, first - // the source is parsed, and than can be visited - // multiple times by variouse visitors (there can - // be more the one visitor visiting content at a time) - - virtual void VisitFile( spFile& fl ) {} - - virtual void VisitNameSpace( spNameSpace& ns ) {} - - virtual void VisitClass( spClass& cl ) {} - - virtual void VisitEnumeration( spEnumeration& en ) {} - - virtual void VisitTypeDef( spTypeDef& td ) {} - - virtual void VisitPreprocessorLine( spPreprocessorLine& pd ) {} - - virtual void VisitAttribute( spAttribute& attr ) {} - - virtual void VisitOperation( spOperation& op ) {} - - virtual void VisitParameter( spParameter& param ) {} - - virtual void VisitCustomContext( spContext& ctx ) {} -}; - -// stores one section of comments, -// multiple sections can be put to geather -// and attached to some context - -class spComment -{ -public: - string mText; - bool mIsMultiline; // multiline comments ar those with /**/'s - - // TRUE, if these was an empty empty - // line above single line comment - - bool mStartsPar; - -public: - - bool IsMultiline() const; - bool StartsParagraph() const; - - string& GetText(); - - // contstant version of GetText() - string GetText() const; -}; - -// abstract base class for common (to most languages) code -// contexts (constructs), e.g file, namespace, class, operation, -// etc - -class spContext -{ -protected: - // "linked" list of comments belonging to this context - MCommentListT mComments; - - // NULL, if this is file context - MMemberListT mMembers; - - // NULL, if this is top-most context - spContext* mpParent; - - // points to context object, where the this context - // was originally declared, meaning that this object - // is redeclaration (or if in the case of operation - // this context object most probably referres to the - // implemnetation in .cpp file for example) - - // is NULL, if this object referres to the first occurence - // of the context - - spContext* mpFirstOccurence; - - // used, to avoid excessive sorting of context's agreggates - bool mAlreadySorted; - -public: - - // source line number, (-1) if unknown - int mSrcLineNo; - - // offset of context in the source file, (-1) if unknown - int mSrcOffset; - - // lentgh of the context in characters, (-1) if unknown - int mContextLength; - - // source line number, in which this cotext ends, (-1) if unknown - int mLastScrLineNo; - - // fields are valid, if the may contain other contexts nested inside - int mHeaderLength; - int mFooterLength; - - // zero-based index of the first character of - // this context in the source line, (-1) if unknown - int mFirstCharPos; - - // zero-based index of the first character of - // this context in the last source line of this context, (-1) if unknown - int mLastCharPos; - - // see SRC_VISIBLITY_TYPES enumeration - int mVisibility; - - // TRUE, if context does not really exist in the source - // but was created by external tools (e.g. forward engineering) - - bool mIsVirtualContext; - bool mVirtualContextHasChildren; - - // body of the context in case (mIsVirtual == TRUE) - string mVirtualContextBody; - string mVittualContextFooter; - - // e.g. can be used by documentation generator to store - // reference to section object - void* mpUserData; - -public: - // universal identifier of the context (e.g. class name) - string mName; - -public: - // default constructor - spContext(); - - // automatically destorys all aggregated contexts - // (thus, it's enought to call destructor of root-context) - virtual ~spContext(); - - // see mUererData member; - void* GetUserData() { return mpUserData; } - - // sets untyped pointer to user data - void SetUserData( void* pUserData ) - { mpUserData = pUserData; } - - // searches the whole context tree for the cotnexts - // which match given masks, pust results into lst array - void GetContextList( MMemberListT& lst, int contextMask ); - - // used by default visitor's implementation - bool IsSorted(); - - /*** forward/reverse ingineering fecilities ***/ - - bool PositionIsKnown(); - - bool IsVirtualContext(); - - bool VitualContextHasChildren(); - - void SetVirtualContextBody( const string& body, - bool hasChildren = FALSE, - const string& footer = "" ); - - string GetVirtualContextBody(); - string GetFooterOfVirtualContextBody(); - - // can be overriden by top-level context classes - // to find-out ot the source-fragment of this - // context using it's position information - virtual string GetBody( spContext* pCtx = NULL ); - - virtual string GetHeader( spContext* pCtx = NULL ); - - // TRUE, if there is at least one entry - // in the comment list of this context - bool HasComments(); - MCommentListT& GetCommentList() { return mComments; } - const MCommentListT& GetCommentList() const { return mComments; } - - // should be overriden, if the context supports sorting - // of it's members - virtual void SortMembers() {} - - // returns identifier of this context - inline string& GetName() { return mName; } - - // returns -1, if souce line # is unknow - inline int GetSourceLineNo() { return mSrcLineNo; } - - // see comments on mpFirstOccurence member variable - bool IsFirstOccurence(); - spContext* GetFirstOccurence(); - - // returns not-NULL value if this context - // is aggregated by another cotnext - spContext* GetOutterContext(); - - // perhaps more intuitive alias for `GetOutterContext()' - inline spContext* GetParent() { return mpParent; } - - bool HasOutterContext(); - - // add one aggregate (or child) into this context - void AddMember ( spContext* pMember ); - MMemberListT& GetMembers(); - - // append comment to the comment list decribing - // this context - void AddComment( spComment* pComment ); - - // returns NULL, if the context with the given - // name and type is not contained by this context - // and it's children. Children's children are not - // searched recursivelly if searchSubMembers is FALSE - - spContext* FindContext( const string& identifier, - int contextType = SP_CTX_ANY, - bool searchSubMembers = TRUE - ); - - // removes this context from it's parent - // (NOTE:: context should have an outter cotnext - // to when this method is called, otherwise removal - // will result assertion failure) - void RemoveThisContext(); - - // returns TRUE, if this object is aggregated in the file - bool IsInFile(); - - // TRUE, if outter context is a namespace - bool IsInNameSpace(); - - // TRUE, if outter context is a class - bool IsInClass(); - - // TRUE, if outter cotext is an operation (TRUE for "spParameter"s) - bool IsInOperation(); - - // TRUE if the context is public - bool IsPublic() const { return mVisibility == SP_VIS_PUBLIC; } - - // NOTE:: method returns not the type of this object - // but the file/namespace/class/operation or file in which this - // attribute is contained. First, check for the type of - // context using the above method. - - // Requiering container which does not exist, will result - // in assertion failure - - spClass& GetClass(); - spFile& GetFile(); - spNameSpace& GetNameSpace(); - spOperation& GetOperation(); - - // each new context should override this method - // to return it's specific type - virtual int GetContextType() { return SP_CTX_UNKNOWN; } - - // perhaps more intuitive short-cut - inline int GetType() { return GetContextType(); } - - // derived classes override this to invoke VisitXXX method - // which corresponds to the class of specific context, - // - this is what the "Visitor" pattern told us ^) - - // if method is not overriden, then it's probably user-defined - // custom context - - virtual void AcceptVisitor( spVisitor& visitor ) - - { visitor.VisitCustomContext( *this ); }; - - // called by visitors, to remove given subcontext - // of this context object - void RemoveChild( spContext* pChild ); - - void RemoveChildren(); - - spContext* GetEnclosingContext( int mask = SP_CTX_ANY ); -}; - -// stores information about single argument of operation - -class spParameter : public spContext -{ -public: - // type of argument (parameter) - string mType; - - // "stringified" initial value - string mInitVal; - -public: - virtual int GetContextType() { return SP_CTX_PARAMETER; } - - virtual void AcceptVisitor( spVisitor& visitor ) - { visitor.VisitParameter( *this ); } -}; - - -// stores information about member(or global) variable - -class spAttribute : public spContext -{ -public: - // type of the attribute - string mType; - - // it's initial value - string mInitVal; - - // constantness - bool mIsConstant; -public: - - virtual int GetContextType() { return SP_CTX_ATTRIBUTE; } - - virtual void AcceptVisitor( spVisitor& visitor ) - { visitor.VisitAttribute( *this ); } -}; - -class spOperation : public spContext -{ -public: - // type of return value - string mRetType; - - // argument list - //MParamListT mParams; - - // TRUE, if operation does not modify - // the content of the object - bool mIsConstant; - - // flag, specific to C++ - bool mIsVirtual; - - // TRUE, if definition follows the declaration immediatelly - bool mHasDefinition; - - // scope if any (e.g. MyClass::MyFunction(), scope stirng is "MyClass" ) - // usually found along with implementation of the method, which is now skipped - - string mScope; - -public: - spOperation(); - - // returns full declaration of the operations - // (ret val., identifier, arg. list), - - // arguments are marked up with italic, - // default values marked up with bold-italic, - // all the rest is marked as bold - - // NOTE:: this method may be overriden by class - // specific to concrete parser, to provide - // language-dependent reperesnetation of - // operation and it's argumetn list - // - // the default implementation outputs name in - // C++/Java syntax - - virtual string GetFullName(MarkupTagsT tags); - - virtual int GetContextType() { return SP_CTX_OPERATION; } - - virtual void AcceptVisitor( spVisitor& visitor ) - { visitor.VisitOperation( *this ); } - -}; - -// stores infromation about preprocessor directive - -class spPreprocessorLine : public spContext -{ - -public: - - // prepocessor statement including '#' and - // attached multiple lines with '\' character - string mLine; - - int mDefType; // see SP_PREP_DEFINITION_TYPES enumeration - -public: - - virtual int GetContextType() { return SP_CTX_PREPROCESSOR; } - - virtual int GetStatementType() { return mDefType; } - - string CPP_GetIncludedFileNeme(); - - virtual void AcceptVisitor( spVisitor& visitor ) - { visitor.VisitPreprocessorLine( *this ); } -}; - -// stores information about the class - -class spClass : public spContext -{ -public: - // list of superclasses/interfaces - StrListT mSuperClassNames; - - // see SP_CLASS_TYPES enumeration - int mClassSubType; - - // see SP_INHERITANCE_TYPES enumeration - int mInheritanceType; - - // valid if mClassSubType is SP_CLTYPE_TEMPLATE_CLASS - string mTemplateTypes; - - // TRUE, if it's and interface of abstract base class - bool mIsAbstract; - -public: - - // sorts class members in the following order: - // - // (by "privacy level" - first private, than protected, public) - // - // within above set - // - // (by member type - attributes first, than methods, nested classes) - // - // within above set - // - // (by identifier of the member) - - virtual void SortMembers(); - - virtual int GetContextType() { return SP_CTX_CLASS; } - - virtual void AcceptVisitor( spVisitor& visitor ) - { visitor.VisitClass( *this ); } -}; - -// stores information about enum statement - -class spEnumeration : public spContext -{ -public: - string mEnumContent; // full-text content of enumeration - -public: - virtual int GetContextType() { return SP_CTX_ENUMERATION; } - - virtual void AcceptVisitor( spVisitor& visitor ) - { visitor.VisitEnumeration( *this ); } -}; - -class spTypeDef : public spContext -{ -public: - // the original type which is redefined - // by this type definition - string mOriginalType; - -public: - virtual int GetContextType() { return SP_CTX_TYPEDEF; } - - virtual void AcceptVisitor( spVisitor& visitor ) - { visitor.VisitTypeDef( *this ); } -}; - -// NOTE:: files context may be put to other -// file context, resulting in a collection -// of parsed file contexts, with a virtual "superfile" - -class spFile : public spContext -{ -public: - // since file name cannot be determined from - // source code, filling in this field is optional - string mFileName; - -public: - virtual int GetContextType() { return SP_CTX_FILE; } - - virtual void AcceptVisitor( spVisitor& visitor ) - { visitor.VisitFile( *this ); } -}; - -//TODO:: comments. - -class SourceParserPlugin -{ -public: - virtual bool CanUnderstandContext( char* cur, char* end, spContext* pOuttterCtx ) = 0; - virtual void ParseContext( char* start, char*& cur, char* end, spContext* pOuttterCtx ) = 0; -}; - -// abstract interface for source parsers -// which can output parsing results in the -// form of context-tree, where each node -// should be derivative of spContext, (see -// above classes) - -class SourceParserBase -{ -private: - // auto-resizing file buffer, created in ParseFile() - // to reuse large heap block for multiple parsings - - char* mpFileBuf; - int mFileBufSz; - -protected: - SourceParserPlugin* mpPlugin; - -protected: - // value is set in the derived parser classes - int mParserStatus; - -public: - SourceParserBase(); - virtual ~SourceParserBase(); - - // loads entier source file(as text) into memory, - // and passes it's contents to ParseAll() method, - // memory occupied by source text is released after - // parsing is done - // - // (NOTE:: this is the default implementation), - - virtual spFile* ParseFile( const char* fname ); - - // should returns the root-node of the created context tree - // (user is responsible for releasing it from the heep) - // "end" should point to the (last character + 1) of the - // source text area - - virtual spFile* Parse( char* start, char* end ) = 0; - - // returns parser "status word" (specific to concrete parser) - int GetParserStatus() { return mParserStatus; } - - void SetPlugin( SourceParserPlugin* pPlugin ); -}; - -#endif diff --git a/utils/HelpGen/include/wxstlac.h b/utils/HelpGen/include/wxstlac.h deleted file mode 100644 index 9f69f1f26d..0000000000 --- a/utils/HelpGen/include/wxstlac.h +++ /dev/null @@ -1,667 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: No names yet. -// Purpose: Contrib. demo -// Author: Aleksandras Gluchovas -// Modified by: -// Created: 27/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Aleskandars Gluchovas -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __WXSTLAC_G__ -#define __WXSTLAC_G__ - -#ifdef new -#undef new -#endif - -#include -#include -#include -#include -#include - -// the below macro used internally (see actual interface after this macro) - -// arguments: -// -// ARG_IS_UNIQUE -// ASSOC_CONT_CLASS_NAME -// -// ARG_VALUE_TYPE -// ARG_KEY_TYPE -// ARG_ACTUAL_VALUE_TYPE -// -// _KEY_NAME -// _VALUE_NAME -// -// _X_KEY_NAME -// _X_VALUE_NAME -// -// _INSERT_METHOD_DEFINITION - -#define __DEFINE_ASOC_CLASS( ARG_IS_UNIQUE, \ -FUNCTOR,\ -ASSOC_CONT_CLASS_NAME, \ -ARG_VALUE_TYPE, \ -ARG_KEY_TYPE, \ -ARG_ACTUAL_VALUE_TYPE, \ -_KEY_NAME, \ -_VALUE_NAME, \ -_X_KEY_NAME, \ -_X_VALUE_NAME, \ -_INSERT_METHOD_DEFINITION \ -) class \ -ASSOC_CONT_CLASS_NAME\ -{\ -protected:\ -\ -public:\ - typedef ARG_VALUE_TYPE value_type;\ - typedef ARG_KEY_TYPE key_type;\ - typedef ARG_ACTUAL_VALUE_TYPE actual_value_type;\ -\ - typedef value_type* pointer;\ - typedef value_type& reference;\ -\ - typedef const value_type& const_reference;\ -\ - typedef FUNCTOR key_compare;\ - typedef key_compare Compare;\ -\ -protected:\ -\ - struct tree_node \ - {\ - tree_node* mpParent;\ - tree_node* mpLeft;\ - tree_node* mpRight;\ -\ - value_type mData;\ - };\ -\ - typedef tree_node* node_ref_type;\ -\ - node_ref_type mpRoot;\ - node_ref_type mpLeftMost;\ - node_ref_type mpRightMost;\ -\ - node_ref_type mpFreeListHead;\ - int mKeyIsUnique;\ -\ - key_compare mCmpFunctorObj;\ -\ -public:\ -\ - static inline node_ref_type next( node_ref_type pNode )\ - {\ - if ( pNode->mpRight ) \ - {\ - pNode = pNode->mpRight;\ -\ - while ( pNode->mpLeft ) pNode = pNode->mpLeft;\ -\ - return pNode;\ - }\ - else\ - if ( pNode->mpParent )\ - {\ - if ( pNode == pNode->mpParent->mpLeft )\ -\ - return pNode->mpParent;\ -\ - pNode = pNode->mpParent;\ -\ - node_ref_type prevNode = pNode;\ - pNode = pNode->mpParent;\ -\ - while(pNode)\ - {\ - if ( pNode->mpRight &&\ - pNode->mpRight != prevNode\ - ) return pNode;\ -\ - prevNode = pNode;\ - pNode= pNode->mpParent;\ - }\ -\ - return 0;\ - }\ - else\ - return 0;\ - }\ -\ - static inline node_ref_type prev( node_ref_type pNode )\ - {\ - if ( pNode->mpLeft ) \ - {\ - pNode = pNode->mpLeft;\ -\ - while ( pNode->mpRight ) pNode = pNode->mpRight;\ -\ - return pNode;\ - }\ - else\ - if ( pNode->mpParent )\ - {\ - if ( pNode == pNode->mpParent->mpRight )\ - return pNode->mpParent;\ -\ - pNode = pNode->mpParent;\ -\ - node_ref_type prevNode = pNode;\ - pNode = pNode->mpParent;\ -\ - while(pNode)\ - {\ - if ( pNode->mpLeft &&\ - pNode->mpLeft != prevNode\ - ) return pNode;\ -\ - prevNode = pNode;\ - pNode= pNode->mpParent;\ - }\ -\ - return 0;\ - }\ - else \ - return 0;\ - }\ -\ -protected:\ -\ - inline int are_equel( const key_type& x, const key_type& y )\ - {\ - return ( !mCmpFunctorObj(x,y) && !mCmpFunctorObj(y,x) );\ - }\ -\ - inline int is_less( const key_type& x, const key_type& y )\ - {\ - return mCmpFunctorObj(x,y);\ - }\ -\ - static inline const actual_value_type& value( node_ref_type pNode )\ - {\ - return pNode->_VALUE_NAME;\ - }\ -\ - static inline const key_type& key( node_ref_type pNode )\ - {\ - return pNode->_KEY_NAME;\ - }\ -\ - inline node_ref_type AllocNode() \ - { \ - if ( mpFreeListHead ) \ - {\ - node_ref_type pFreeNode = mpFreeListHead;\ - mpFreeListHead = mpFreeListHead->mpLeft;\ -\ - return pFreeNode;\ - }\ - else\ - {\ - char* pHeapBlock = new char[sizeof(tree_node)];\ -\ - return (node_ref_type)pHeapBlock;\ - }\ - }\ -\ - inline void DestroyFreeList()\ - {\ - while ( mpFreeListHead )\ - {\ - node_ref_type tmp = mpFreeListHead;\ - mpFreeListHead = mpFreeListHead->mpLeft;\ -\ - delete [](char*)tmp;\ - }\ - }\ -\ - inline void RecycleNode( node_ref_type pNode ) \ - {\ - pNode->mpLeft = mpFreeListHead;\ - mpFreeListHead = pNode;\ - }\ -\ - inline node_ref_type do_insert(const value_type& x = value_type() )\ - {\ - node_ref_type pNewNode = AllocNode();\ -\ - pNewNode->mpParent = \ - pNewNode->mpLeft =\ - pNewNode->mpRight = 0;\ -\ - node_ref_type pCurrent = mpRoot;\ - node_ref_type pParent = 0;\ - \ - while (pCurrent) \ - {\ - if ( mKeyIsUnique && are_equel( _X_KEY_NAME, value(pCurrent) ) )\ - {\ - RecycleNode(pNewNode);\ - return 0;\ - }\ -\ - pParent = pCurrent;\ -\ - pCurrent = is_less( _X_KEY_NAME, value(pCurrent) ) \ - ? pCurrent->mpLeft \ - : pCurrent->mpRight;\ - }\ - \ - pNewNode->mpParent = pParent;\ -\ - if(pParent)\ -\ - if( is_less(_X_KEY_NAME, value(pParent) ) )\ - \ - pParent->mpLeft = pNewNode;\ - else\ - pParent->mpRight = pNewNode;\ - else\ - mpRoot = pNewNode;\ -\ - new ( &pNewNode->_KEY_NAME ) key_type(_X_KEY_NAME);\ - new ( &pNewNode->_VALUE_NAME ) actual_value_type(_X_VALUE_NAME);\ -\ - if ( prev(pNewNode) == 0 ) mpLeftMost = pNewNode;\ - if ( next(pNewNode) == 0 ) mpRightMost = pNewNode;\ -\ - return pNewNode;\ - }\ -\ - friend class iterator;\ -\ -public:\ -\ - class iterator;\ - class const_iterator;\ -\ - class iterator \ - {\ - public:\ - node_ref_type mpNode;\ - friend class CONT_CLASS_NAME;\ - friend class const_iterator;\ - friend class const_reverse_iterator;\ -\ - inline iterator( node_ref_type pNode )\ - {\ - mpNode = pNode;\ - }\ - \ - public:\ - inline iterator() {}\ - inline int operator==( const iterator& rhs ) const { return (mpNode == rhs.mpNode); }\ - inline int operator!=( const iterator& rhs ) const { return (mpNode != rhs.mpNode); }\ -\ - inline iterator( const iterator& other )\ - {\ - mpNode = other.mpNode;\ - }\ -\ - inline const iterator& operator=( const iterator& other )\ - {\ - mpNode = other.mpNode;\ - return *this;\ - }\ -\ - inline const iterator& operator--() \ - {\ - mpNode = ASSOC_CONT_CLASS_NAME::prev(mpNode);\ - return *this;\ - }\ -\ - inline iterator operator--(int)\ - {\ - iterator tmp = *this;\ - mpNode = ASSOC_CONT_CLASS_NAME::prev(mpNode);\ - return tmp;\ - }\ -\ - inline const iterator& operator++() \ - {\ - mpNode = ASSOC_CONT_CLASS_NAME::next(mpNode);\ - return *this;\ - }\ -\ - inline iterator operator++(int)\ - {\ - iterator tmp = *this;\ - mpNode = ASSOC_CONT_CLASS_NAME::next(mpNode);\ - return tmp;\ - }\ -\ - inline reference operator*() const { return mpNode->mData; }\ - };\ -\ -\ - class const_iterator \ - {\ - public:\ - node_ref_type mpNode;\ - friend class CONT_CLASS_NAME;\ - friend class const_reverse_iterator;\ -\ - inline const_iterator( node_ref_type pNode )\ - {\ - mpNode = pNode;\ - }\ - \ - public:\ - inline const_iterator() {}\ -\ - inline int operator==( const const_iterator& rhs ) const { return (mpNode == rhs.mpNode); }\ - inline int operator!=( const const_iterator& rhs ) const { return (mpNode != rhs.mpNode); }\ -\ - inline const_iterator( const iterator& other )\ - {\ - mpNode = other.mpNode;\ - }\ -\ - inline const_iterator( const const_iterator& other )\ - {\ - mpNode = other.mpNode;\ - }\ -\ - inline const const_iterator& operator=( const const_iterator& other )\ - {\ - mpNode = other.mpNode;\ - return *this;\ - }\ -\ - inline const const_iterator& operator--() \ - {\ - mpNode = ASSOC_CONT_CLASS_NAME::prev(mpNode);\ - return *this;\ - }\ -\ - inline const_iterator operator--(int)\ - {\ - const_iterator tmp = *this;\ - mpNode = ASSOC_CONT_CLASS_NAME::prev(mpNode);\ - return tmp;\ - }\ -\ - inline const const_iterator& operator++() \ - {\ - mpNode = ASSOC_CONT_CLASS_NAME::next(mpNode);\ - return *this;\ - }\ -\ - inline const_iterator operator++(int)\ - {\ - const_iterator tmp = *this;\ - mpNode = ASSOC_CONT_CLASS_NAME::next(mpNode);\ - return tmp;\ - }\ -\ - inline const_reference operator*() const { return mpNode->mData; }\ - };\ -\ -public:\ -\ - inline ASSOC_CONT_CLASS_NAME( key_compare cmpFunctorObj = key_compare(),\ - int keyIsUnique = ARG_IS_UNIQUE )\ - : mpFreeListHead( 0 ),\ - mKeyIsUnique( keyIsUnique ),\ - mCmpFunctorObj( cmpFunctorObj )\ - {\ - mpLeftMost = 0;\ - mpRightMost = 0;\ - mpRoot = 0;\ - }\ -\ - inline ~ASSOC_CONT_CLASS_NAME() \ - { \ - erase( begin(), end() ); \ -\ - DestroyFreeList();\ - }\ -\ - inline iterator begin() { return mpLeftMost; }\ - inline iterator end() { return 0; }\ -\ - inline const_iterator begin() const { return mpLeftMost; }\ - inline const_iterator end() const { return 0; }\ -\ - inline iterator lower_bound( const key_type& x )\ - { \ - node_ref_type pCurrent = mpRoot;\ - \ - while( pCurrent )\ - {\ - node_ref_type pParent = pCurrent;\ -\ - if( are_equel( x, key(pCurrent) ) )\ - \ - return (pCurrent);\ - else\ - pCurrent = is_less( x, key(pCurrent) ) \ - ? pCurrent->mpLeft \ - : pCurrent->mpRight;\ -\ - if ( !pCurrent ) return (pParent);\ - }\ -\ - return begin();\ - }\ -\ - inline const_iterator lower_bound( const key_type& x ) const\ -\ - { return const_iterator( lower_bound(x).mpNode ); }\ -\ - inline iterator upper_bound( const key_type& x )\ - {\ - node_ref_type pCurrent = mpRoot;\ - \ - while( pCurrent )\ - {\ - node_ref_type pParent = pCurrent;\ -\ - if( are_equel( x, key(pCurrent) ) )\ - \ - return (pCurrent);\ - else\ - pCurrent = is_less( x, key(pCurrent) ) \ - ? pCurrent->mpLeft \ - : pCurrent->mpRight;\ -\ - if ( !pCurrent ) return next(pParent);\ - }\ -\ - return end();\ - }\ -\ - inline const_iterator upper_bound( const key_type& x ) const\ -\ - { return const_iterator( upper_bound(x).mpNode ); }\ -\ - inline iterator find( const key_type& x )\ - {\ - node_ref_type pCurrent = mpRoot;\ - \ - while( pCurrent )\ - {\ - if( are_equel( x, key(pCurrent) ) )\ - \ - return (pCurrent);\ - else\ - pCurrent = is_less( x, key(pCurrent) ) \ - ? pCurrent->mpLeft \ - : pCurrent->mpRight;\ - }\ -\ - return end();\ - }\ -\ - inline const_iterator find( const key_type& x ) const\ -\ - { return const_iterator( find(x).mpNode ); }\ -\ - inline void erase(iterator first, iterator last)\ - {\ - if ( first.mpNode == 0 ) return;\ -\ - while( first != last ) \ - {\ - iterator next = first;\ - ++next;\ - erase( first );\ - first = next;\ - }\ - }\ -\ - inline void erase(iterator position)\ - {\ - if ( position.mpNode == 0 ) return;\ -\ - node_ref_type pZ = position.mpNode;\ - node_ref_type pX, pY;\ -\ - if ( pZ == mpLeftMost ) mpLeftMost = next(pZ);\ - if ( pZ == mpRightMost ) mpRightMost = prev( pZ );\ -\ - if ( !pZ->mpLeft || !pZ->mpRight )\ - \ - pY = pZ;\ - else \ - {\ - pY = pZ->mpRight;\ - \ - while (pY->mpLeft) \ - \ - pY = pY->mpLeft;\ - }\ - \ - if ( pY->mpLeft)\ - \ - pX = pY->mpLeft;\ - else\ - pX = pY->mpRight;\ - \ - if ( pX ) pX->mpParent = pY->mpParent;\ - \ - if (pY->mpParent)\ - \ - if (pY == pY->mpParent->mpLeft )\ - \ - pY->mpParent->mpLeft = pX;\ - else\ - pY->mpParent->mpRight = pX;\ - else\ - mpRoot = pX;\ - \ - node_ref_type toRemove = 0;\ - \ - if (pY != pZ) {\ - \ - pY->mpLeft = pZ->mpLeft;\ - \ - if (pY->mpLeft) pY->mpLeft->mpParent = pY;\ - \ - pY->mpRight = pZ->mpRight;\ - \ - if ( pY->mpRight ) \ - \ - pY->mpRight->mpParent = pY;\ - \ - pY->mpParent = pZ->mpParent;\ - \ - if (pZ->mpParent)\ - \ - if (pZ == pZ->mpParent->mpLeft)\ - \ - pZ->mpParent->mpLeft = pY;\ - else\ - pZ->mpParent->mpRight = pY;\ - else\ - mpRoot = pY;\ - \ - toRemove = pZ;\ - } \ - else \ - toRemove = pY;\ - \ - value(toRemove).~actual_value_type();\ - key(toRemove).~actual_value_type();\ -\ - RecycleNode( toRemove );\ - }\ -\ - _INSERT_METHOD_DEFINITION\ -} - -// do not undefine ___WXSTL_COMMA, where associated containers are defined! -// (it is used as workaround for constraints of C-Preprocessor's nested macros) - -#define ___WXSTL_COMMA , - -#define __DEFINE_MAP(ARG_IS_UNIQUE, KEY_TYPE, VAL_TYPE, FUNCTOR ) __DEFINE_ASOC_CLASS( ARG_IS_UNIQUE,\ -FUNCTOR,\ -__WXSTLMAP_##KEY_TYPE##VAL_TYPE##ARG_IS_UNIQUE, \ -struct key_value_pair { KEY_TYPE first ; \ - VAL_TYPE second;\ - key_value_pair() {}\ - key_value_pair( const KEY_TYPE& key ___WXSTL_COMMA const VAL_TYPE& value ) \ - : first(key) ___WXSTL_COMMA second( value ) {} \ - } , \ -KEY_TYPE,\ -VAL_TYPE,\ -mData.first, mData.second, x.first, x.second, \ -struct insert_result_iterator\ -{\ - iterator first;\ - int second;\ -};\ -inline insert_result_iterator insert( const value_type& x )\ -{\ - insert_result_iterator result;\ -\ - result.first = do_insert(x);\ - result.second = ( result.first == end() ) ? 0 : 1;\ -\ - return result;\ -} ) - -#define __DEFINE_SET(ARG_IS_UNIQUE, KEY_TYPE, FUNCTOR ) __DEFINE_ASOC_CLASS( ARG_IS_UNIQUE,\ -FUNCTOR,\ -__WXSTLSET_##TYPE##ARG_IS_UNIQUE, \ -KEY_TYPE,\ -KEY_TYPE,\ -KEY_TYPE,\ -mData, mData, x, x, \ -struct insert_result_iterator\ -{\ - iterator first;\ - int second;\ -};\ -inline insert_result_iterator insert( const value_type& x )\ -{\ - insert_result_iterator result;\ -\ - result.first = do_insert(x);\ - result.second = ( result.first == end() ) ? 0 : 1;\ -\ - return result;\ -} ) - -// helper macros to create functor objects for associative containers of the given type - -#define LESS_THEN_FUNCTOR(TYPE) struct \ -{ inline int operator()(const TYPE& x, const TYPE& y ) const { return x < y; } } - -#define GREATER_THEN_FUNCTOR(TYPE) struct \ -{ inline int operator()(const TYPE& x, const TYPE& y ) const { return x > y; } } - -// functor argument should be created using the two above macros -// or passing own class with method "operator()(const TYPE&,cosnt TYPE&)" defined in it - -#define WXSTL_MAP( KEY_TYPE, VALUE_TYPE, FUNCTOR ) __DEFINE_MAP( 1 ,KEY_TYPE, VALUE_TYPE, FUNCTOR) -#define WXSTL_MULTIMAP( KEY_TYPE, VALUE_TYPE, FUNCTOR ) __DEFINE_MAP( 0 ,KEY_TYPE, VALUE_TYPE, FUNCTOR) -#define WXSTL_SET( KEY_TYPE, FUNCTOR ) __DEFINE_SET( 1 ,KEY_TYPE, FUNCTOR ) -#define WXSTL_MULTISET( KEY_TYPE, FUNCTOR ) __DEFINE_SET( 0 ,KEY_TYPE, FUNCTOR ) - -#endif diff --git a/utils/HelpGen/include/wxstllst.h b/utils/HelpGen/include/wxstllst.h deleted file mode 100644 index 5a1d1bc469..0000000000 --- a/utils/HelpGen/include/wxstllst.h +++ /dev/null @@ -1,559 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: No names yet. -// Purpose: Contrib. demo -// Author: Aleksandras Gluchovas -// Modified by: -// Created: 27/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Aleskandars Gluchovas -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __WXSTLLST_G__ -#define __WXSTLLST_G__ - -#ifdef new -#undef new -#endif - -#include -#include -#include -#include -#include - -// VERSION:: 0.2 (copy-constructor/adign-op added) - -// FOR NOW:: class-member operators "new" and "delete" -// are ignored by list class, memory allocated -// and freed using global operators - -typedef int Type; - - -// the below macro used internally (see actual interface after this macro) - -#define __DEFINE_STL_LIST(listClass,Type) class \ - listClass \ -{\ -public:\ -\ - typedef Type value_type;\ - typedef value_type* pointer;\ - typedef const value_type* const_pointer;\ - typedef value_type& reference;\ - typedef const value_type& const_reference;\ - typedef size_t size_type;\ - typedef ptrdiff_t difference_type;\ -\ -protected:\ - struct list_node\ - {\ - list_node* mpNext;\ - list_node* mpPrev;\ - value_type mData;\ - };\ -\ - typedef list_node* node_ref_type;\ -\ - node_ref_type mpFreeListHead;\ - node_ref_type mpTerminator;\ - size_type mSize;\ -\ - inline node_ref_type AllocNode() \ - { \ - if ( mpFreeListHead ) \ - {\ - node_ref_type pFreeNode = mpFreeListHead;\ - mpFreeListHead = mpFreeListHead->mpPrev;\ -\ - return pFreeNode;\ - }\ - else\ - {\ - char* pHeapBlock = new char[sizeof(list_node)];\ -\ - return (node_ref_type)pHeapBlock;\ - }\ - }\ -\ - inline void DestroyFreeList()\ - {\ - while ( mpFreeListHead )\ - {\ - node_ref_type tmp = mpFreeListHead;\ - mpFreeListHead = mpFreeListHead->mpPrev;\ -\ - delete [](char*)tmp;\ - }\ - }\ -\ - inline void RecycleNode( node_ref_type pNode ) \ - {\ - pNode->mpPrev = mpFreeListHead;\ - mpFreeListHead = pNode;\ - }\ -\ -public:\ -\ - class iterator \ - {\ - public:\ - node_ref_type mpNode;\ - friend class listClass;\ - friend class const_iterator;\ - friend class const_reverse_iterator;\ -\ - protected:\ - iterator( node_ref_type pNode )\ - {\ - mpNode = pNode;\ - }\ - \ - public:\ - iterator() {}\ - int operator==( const iterator& rhs ) const { return (mpNode == rhs.mpNode); }\ - int operator!=( const iterator& rhs ) const { return (mpNode != rhs.mpNode); }\ -\ - inline iterator( const iterator& other )\ - {\ - mpNode = other.mpNode;\ - }\ -\ - inline const iterator& operator--() \ - {\ - mpNode = mpNode->mpPrev;\ - return *this;\ - }\ -\ - inline iterator operator--(int)\ - {\ - iterator tmp = *this;\ - mpNode = mpNode->mpPrev;\ - return tmp;\ - }\ -\ - inline const iterator& operator++() \ - {\ - mpNode = mpNode->mpNext;\ - return *this;\ - }\ -\ - inline iterator operator++(int)\ - {\ - iterator tmp = *this;\ - mpNode = mpNode->mpNext;\ - return tmp;\ - }\ -\ - inline reference operator*() const { return mpNode->mData; }\ - };\ -\ -\ - class const_iterator \ - {\ - protected:\ - node_ref_type mpNode;\ - friend class listClass;\ -\ - protected:\ - const_iterator( node_ref_type pNode )\ - {\ - mpNode = pNode;\ - }\ - \ - public:\ - \ - const_iterator() {}\ - int operator==( const const_iterator& rhs ) const { return (mpNode == rhs.mpNode); }\ - int operator!=( const const_iterator& rhs ) const { return (mpNode != rhs.mpNode); }\ -\ -\ - inline const_iterator( const iterator& other )\ - {\ - mpNode = other.mpNode;\ - }\ -\ - inline const const_iterator& operator--() \ - {\ - mpNode = mpNode->mpPrev;\ - return *this;\ - }\ -\ - inline const_iterator operator--(int)\ - {\ - const_iterator tmp = *this;\ - mpNode = mpNode->mpPrev;\ - return tmp;\ - }\ -\ - inline const const_iterator& operator++() \ - {\ - mpNode = mpNode->mpNext;\ - return *this;\ - }\ -\ - inline const_iterator operator++(int)\ - {\ - const_iterator tmp = *this;\ - mpNode = mpNode->mpNext;\ - return tmp;\ - }\ -\ - inline const_reference operator*() const { return mpNode->mData; }\ - };\ -\ - typedef iterator OutputIterator;\ - typedef const_iterator InputIterator;\ -\ - class reverse_iterator \ - {\ - public:\ - node_ref_type mpNode;\ - friend class listClass;\ - friend class const_reverse_iterator;\ -\ - protected:\ - reverse_iterator ( node_ref_type pNode )\ - {\ - mpNode = pNode;\ - }\ - \ - public:\ -\ - reverse_iterator() {}\ - int operator==( const reverse_iterator& rhs ) const { return (mpNode == rhs.mpNode); }\ - int operator!=( const reverse_iterator& rhs ) const { return (mpNode != rhs.mpNode); }\ -\ - inline reverse_iterator( const reverse_iterator& other )\ - {\ - mpNode = other.mpNode;\ - }\ -\ - inline const reverse_iterator& operator--() \ - {\ - mpNode = mpNode->mpNext;\ - return *this;\ - }\ -\ - inline reverse_iterator operator--(int)\ - {\ - reverse_iterator tmp = *this;\ - mpNode = mpNode->mpPrev;\ - return tmp;\ - }\ -\ - inline const reverse_iterator & operator++() \ - {\ - mpNode = mpNode->mpNext;\ - return *this;\ - }\ -\ - inline reverse_iterator operator++(int)\ - {\ - reverse_iterator tmp = *this;\ - mpNode = mpNode->mpPrev;\ - return tmp;\ - }\ -\ - inline const_reference operator*() const { return mpNode->mData; }\ - };\ -\ -\ - class const_reverse_iterator \ - {\ - protected:\ - node_ref_type mpNode;\ - friend class listClass;\ -\ - protected:\ - const_reverse_iterator( node_ref_type pNode )\ - {\ - mpNode = pNode;\ - }\ - \ - public:\ -\ - const_reverse_iterator() {}\ - int operator==( const const_reverse_iterator& rhs ) const { return (mpNode == rhs.mpNode); }\ - int operator!=( const const_reverse_iterator& rhs ) const { return (mpNode != rhs.mpNode); }\ -\ - inline const_reverse_iterator( const reverse_iterator& other )\ - {\ - mpNode = other.mpNode;\ - }\ -\ - inline const const_reverse_iterator& operator--() \ - {\ - mpNode = mpNode->mpNext;\ - return *this;\ - }\ -\ - inline const_reverse_iterator operator--(int)\ - {\ - const_reverse_iterator tmp = *this;\ - mpNode = mpNode->mpNext;\ - return tmp;\ - }\ -\ - inline const const_reverse_iterator& operator++() \ - {\ - mpNode = mpNode->mpPrev;\ - return *this;\ - }\ -\ - inline const_reverse_iterator operator++(int)\ - {\ - const_reverse_iterator tmp = *this;\ - mpNode = mpNode->mpPrev;\ - return tmp;\ - }\ -\ - inline const_reference operator*() const { return mpNode->mData; }\ - };\ -\ -public:\ -\ - inline listClass()\ - : mpFreeListHead( 0 ),\ - mSize(0)\ - {\ - mpTerminator = AllocNode();\ - mpTerminator->mpPrev = mpTerminator->mpNext = mpTerminator;\ - }\ -\ - listClass( const listClass& other )\ - {\ - mpTerminator = AllocNode();\ - mpTerminator->mpPrev = mpTerminator->mpNext = mpTerminator;\ -\ - for( listClass::const_iterator i = other.begin(); i != other.end(); ++i )\ -\ - push_back( (*i) );\ - }\ -\ - inline const listClass& operator=( const listClass& rhs ) \ - {\ - erase( begin(), end() );\ -\ - for( listClass::const_iterator i = rhs.begin(); i != rhs.end(); ++i )\ -\ - push_back( (*i) );\ -\ - return *this;\ - }\ -\ - inline listClass(const_iterator first, const_iterator last)\ - : mpFreeListHead( 0 ),\ - mSize(0)\ - \ - { while( first != last ) push_back( *first++ ); }\ -\ - inline listClass( size_type n, const value_type& value = value_type() )\ - \ - { for( size_t i = 0; i != n; ++n ) push_back( value ); }\ -\ - inline ~listClass() \ - { \ - erase( begin(), end() ); \ -\ - RecycleNode( mpTerminator );\ - DestroyFreeList();\ - }\ -\ - inline iterator begin() { return iterator(mpTerminator->mpNext); }\ - \ - inline const_iterator begin() const \ - { return const_iterator(mpTerminator->mpNext); }\ - \ - inline iterator end() { return iterator(mpTerminator); }\ -\ - inline const_iterator end() const { return const_iterator(mpTerminator); }\ -\ - inline reverse_iterator rbegin() \ - { return reverse_iterator(mpTerminator->mpPrev); }\ -\ - inline reverse_iterator rend() \ - { return reverse_iterator(mpTerminator); }\ -\ - inline const_reverse_iterator rbegin() const\ - { return const_reverse_iterator(mpTerminator->mpPrev); }\ -\ - inline const_reverse_iterator rend() const\ - { return const_reverse_iterator(mpTerminator); }\ -\ - inline int empty() const { return (mSize == 0); }\ -\ - inline size_type size() const { return mSize; }\ -\ - inline size_type max_size() const { return UINT_MAX/sizeof(list_node); }\ -\ - inline reference front() { return mpTerminator->mData; }\ -\ - inline const_reference front() const { return mpTerminator->mData; }\ -\ - inline reference back() { return mpTerminator->mpPrev->mData; }\ -\ - inline const_reference back() const { return mpTerminator->mpPrev->mData; }\ -\ - inline void push_front(const value_type& x) { insert( begin(), x ); }\ -\ - inline void push_back(const value_type& x) { insert( end(), x ); }\ -\ - iterator insert(iterator position, const value_type& x = value_type())\ - {\ - node_ref_type pNew = AllocNode();\ -\ - node_ref_type pos = *((node_ref_type*)&position);\ -\ - pNew->mpNext = pos;\ - pNew->mpPrev = pos->mpPrev;\ - pos->mpPrev->mpNext = pNew;\ - pos->mpPrev = pNew;\ -\ - new (&pNew->mData) value_type(x);\ -\ - ++mSize;\ -\ - return iterator(pNew);\ - }\ -\ - inline void insert(iterator position, const_iterator first, const_iterator last )\ - {\ - while( first != last ) insert( position, *first++ );\ - }\ -\ - inline void splice( iterator position, listClass& other )\ - {\ - if ( other.begin() == other.end() ) return;\ -\ - node_ref_type pTill = other.mpTerminator->mpPrev;\ - node_ref_type pFrom = other.begin().mpNode;\ -\ - mpTerminator->mpPrev->mpNext = pFrom;\ - pFrom->mpPrev = mpTerminator->mpPrev->mpNext;\ -\ - pTill->mpNext = mpTerminator;\ - mpTerminator->mpPrev = pTill;\ -\ - other.mpTerminator->mpNext = \ - other.mpTerminator->mpPrev = other.mpTerminator;\ -\ - mSize += other.mSize;\ - other.mSize = 0;\ - }\ -\ - inline void splice( iterator position, listClass& other, iterator first, iterator last )\ - {\ - if ( first == last ) return;\ -\ - size_type sz = 0;\ - iterator tmp = first;\ - while( tmp != last ) \ - {\ - ++tmp;\ - ++sz;\ - }\ -\ - mSize += sz;\ - other.mSize -= sz;\ -\ - node_ref_type pPos = position.mpNode;\ - node_ref_type pFirst = first.mpNode;\ - node_ref_type pLast = last.mpNode;\ - node_ref_type pTill = last.mpNode->mpPrev;\ -\ - pPos->mpPrev->mpNext = pFirst;\ - pPos->mpPrev = pTill;\ -\ - pFirst->mpPrev->mpNext = last.mpNode;\ - pLast->mpPrev = pTill;\ -\ - pFirst->mpPrev = pPos->mpPrev;\ - pTill->mpNext = pPos;\ - }\ -\ - inline void pop_front() { erase( begin() ); }\ - inline void pop_back() { erase( --end() ); }\ - \ - inline void erase(iterator position)\ - {\ - erase( position, ++position );\ - }\ - \ - inline void erase(iterator first, iterator last)\ - {\ - node_ref_type firstNode = *((node_ref_type*)&first);\ - node_ref_type lastNode = *((node_ref_type*)&last);\ -\ - firstNode->mpPrev->mpNext = lastNode;\ - lastNode->mpPrev = firstNode->mpPrev;\ -\ - while( firstNode != lastNode )\ - {\ - node_ref_type next = firstNode->mpNext;\ -\ - typedef value_type value_type_local;\ - firstNode->mData.value_type_local::~value_type_local();\ -\ - RecycleNode( firstNode );\ -\ - firstNode = next;\ -\ - --mSize;\ - }\ - }\ -\ - inline void remove(const value_type& value)\ - {\ - for( iterator i = begin(); i != end(); ++i )\ - \ - if ( (*i) == value ) \ - {\ - erase( i ); break;\ - }\ - }\ -\ - void sort()\ - {\ - if ( mSize < 2 ) return;\ -\ - iterator from = begin();\ - iterator other_end = end();\ - --other_end;\ -\ - for( size_type i = 0; i != mSize; ++i )\ - {\ - size_type nSwaps = 0;\ -\ - iterator next = begin();\ - ++next;\ -\ - for( iterator j = begin(); j != other_end; ++j )\ - {\ -\ - if ( (*next) < (*j) )\ - {\ - value_type tmp = (*j);\ - (*j) = (*next);\ - (*next) = tmp;\ -\ - ++nSwaps;\ - }\ -\ - ++next;\ - }\ -\ - if ( !nSwaps) break;\ -\ - --other_end;\ - }\ - }\ -} - -// defines list class with the given element type -#define WXSTL_LIST(ELEMENT_CLASS) __DEFINE_STL_LIST(\ -\ -_WXSTL_LIST_##ELEMENT_CLASS, ELEMENT_CLASS ) - -#endif \ No newline at end of file diff --git a/utils/HelpGen/include/wxstlvec.h b/utils/HelpGen/include/wxstlvec.h deleted file mode 100644 index 6658b07559..0000000000 --- a/utils/HelpGen/include/wxstlvec.h +++ /dev/null @@ -1,781 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: No names yet. -// Purpose: Contrib. demo -// Author: Aleksandras Gluchovas -// Modified by: -// Created: 27/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Aleskandars Gluchovas -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef __WXSTLVEC_G__ -#define __WXSTLVEC_G__ - -#ifdef new -#undef new -#endif - -#include -#include // imports memmove() -#include -#include -#include -#include - -// the below macro used internally (see actual interface after this macro) - -#define __DEFINE_STL_VECTOR_DEEP( vectorClass, Type ) class vectorClass {\ -\ -public:\ - typedef Type value_type;\ - typedef value_type* iterator;\ - typedef const value_type* const_iterator;\ - typedef iterator pointer;\ - typedef const iterator const_pointer;\ - typedef value_type& reference;\ - typedef const value_type& const_reference;\ - typedef size_t size_type;\ - typedef ptrdiff_t difference_type;\ -\ - typedef iterator OutputIterator;\ - typedef const_iterator InputIterator;\ -\ -protected:\ -\ - inline void PlacementCopy( const_iterator first, const_iterator last, iterator result )\ - {\ - while ( first != last ) \ - new (result++) value_type(*first++);\ - }\ -\ - inline void ConstructObjects( iterator first, iterator last, const value_type& pattern )\ - {\ - while( first != last ) \ - new (first++) value_type(pattern);\ - }\ -\ - inline void CopyObjects( iterator first, iterator last, iterator result )\ - {\ - while( first != last ) \ - *result++ = *first++;\ - }\ -\ - inline void CopyObjectsBack( iterator first, iterator last, iterator result )\ - {\ - result += difference_type(last,first);\ -\ - while( first != last ) \ - *(--result) = *(--last);\ - }\ -\ -public:\ -\ - class reverse_iterator \ - {\ - friend class vectorClass;\ - friend class const_reverse_iterator;\ -\ - public:\ - iterator mpPos;\ -\ - public:\ -\ - reverse_iterator() {}\ -\ - reverse_iterator ( iterator pPos )\ - {\ - mpPos = pPos;\ - }\ - \ - int operator==( const reverse_iterator& rhs ) const { return (mpPos == rhs.mpPos); }\ - int operator!=( const reverse_iterator& rhs ) const { return (mpPos != rhs.mpPos); }\ -\ - inline reverse_iterator( const reverse_iterator& other )\ - {\ - mpPos = other.mpPos;\ - }\ -\ - inline const reverse_iterator& operator--() \ - {\ - --mpPos;\ - return *this;\ - }\ -\ - inline reverse_iterator operator--(int)\ - {\ - reverse_iterator tmp = *this;\ - --mpPos;\ - return tmp;\ - }\ -\ - inline const reverse_iterator & operator++() \ - {\ - ++mpPos;\ - return *this;\ - }\ -\ - inline reverse_iterator operator++(int)\ - {\ - reverse_iterator tmp = *this;\ - ++mpPos;\ - return tmp;\ - }\ -\ - inline const_reference operator*() const { return *mpPos; }\ - };\ -\ -\ - class const_reverse_iterator \ - {\ - protected:\ - iterator mpPos;\ - public:\ -\ - const_reverse_iterator() {}\ -\ - const_reverse_iterator( const iterator pPos )\ - {\ - mpPos = pPos;\ - }\ - \ - int operator==( const const_reverse_iterator& rhs ) const { return (mpPos == rhs.mpPos); }\ - int operator!=( const const_reverse_iterator& rhs ) const { return (mpPos != rhs.mpPos); }\ -\ - inline const_reverse_iterator( const reverse_iterator& other )\ - {\ - mpPos = other.mpPos;\ - }\ -\ - inline const const_reverse_iterator& operator--() \ - {\ - --mpPos;\ - return *this;\ - }\ -\ - inline const_reverse_iterator operator--(int)\ - {\ - const_reverse_iterator tmp = *this;\ - --mpPos;\ - return tmp;\ - }\ -\ - inline const const_reverse_iterator & operator++() \ - {\ - ++mpPos;\ - return *this;\ - }\ -\ - inline const_reverse_iterator operator++(int)\ - {\ - const_reverse_iterator tmp = *this;\ - ++mpPos;\ - return tmp;\ - }\ -\ - inline const_reference operator*() const { return *mpPos; }\ - };\ -\ -protected:\ - \ - pointer mpStart;\ - pointer mpEnd;\ - pointer mpEndOfBuf;\ -\ -protected:\ -\ - inline void quick_sort(int low, int hi) \ - {\ - }\ -\ - inline void DestructRange( iterator first, iterator last )\ - {\ - typedef value_type value_type_local;\ -\ - while ( first != last ) \ - {\ - first->value_type_local::~value_type_local();\ - ++first;\ - }\ - }\ -\ - inline iterator DoInsert(iterator position, const value_type& x)\ - {\ - if ( mpEnd < mpEndOfBuf )\ - {\ - new (mpEnd) value_type(*(mpEnd-1) );\ - \ - CopyObjectsBack( position, mpEnd, position + 1 );\ - \ - *position = x;\ - \ - ++mpEnd;\ - \ - return position;\ - }\ - \ - size_type minBufLen = WXSTL_VECTOR_MIN_BUF_SIZE/sizeof(value_type);\ - \ - size_type doubledSize = size()*2;\ - \ - size_type newLen = ( doubledSize < minBufLen ) ? minBufLen : doubledSize;\ - \ - iterator pNewStart = (iterator)( new char[newLen*sizeof(value_type)] );\ - \ - PlacementCopy( mpStart, position, pNewStart );\ - \ - iterator atPosition = pNewStart + difference_type( position - mpStart );\ - \ - new (atPosition) value_type(x);\ - \ - iterator newPos = atPosition;\ - \ - ++atPosition;\ - \ - if ( mpStart ) \ - {\ - PlacementCopy( position, mpEnd, atPosition );\ - DestructRange( mpStart, mpEnd );\ - delete [](char*)mpStart;\ - }\ - \ - mpEnd = atPosition + difference_type( mpEnd - position );\ - \ - mpStart = pNewStart;\ - mpEndOfBuf = pNewStart + newLen;\ - \ - return newPos;\ - }\ -\ -public:\ -\ - inline vectorClass() : mpStart(0), \ - mpEnd(0),\ - mpEndOfBuf(0)\ - {}\ -\ - inline vectorClass( const_iterator first, const_iterator last )\ - : mpStart(0),\ - mpEnd(0),\ - mpEndOfBuf(0)\ - \ - { while( first != last ) push_back( *first++ ); }\ -\ - inline vectorClass( size_type n, const value_type& value = value_type() )\ - : mpStart(0),\ - mpEnd(0),\ - mpEndOfBuf(0)\ - \ - { for( size_type i = 0; i != n; ++i ) push_back( value ); }\ -\ - inline const vectorClass& operator=( const vectorClass& other )\ - {\ - if (mpStart) \ - {\ - DestructRange( begin(), end() );\ - delete [](char*)mpStart; \ - }\ -\ - size_t newLen = difference_type( other.mpEndOfBuf - other.mpStart );\ -\ - mpStart = (iterator)( new char[newLen*sizeof(value_type)] );\ -\ - PlacementCopy( other.begin(), other.end(), mpStart );\ -\ - mpEnd = mpStart + other.size();\ -\ - mpEndOfBuf = mpStart + newLen;\ -\ - return *this;\ - }\ -\ - inline vectorClass( const vectorClass& other )\ - : mpStart(0),\ - mpEnd(0),\ - mpEndOfBuf(0)\ - {\ - this->operator=( other );\ - }\ -\ - inline ~vectorClass() \ - { \ - if (mpStart) \ - {\ - DestructRange( begin(), end() );\ - delete [](char*)mpStart; \ - }\ - }\ -\ - inline iterator begin() { return mpStart; }\ -\ - inline const_iterator begin() const { return mpStart; }\ -\ - inline iterator end() { return mpEnd; }\ -\ - inline const_iterator end() const { return mpEnd; }\ -\ - inline size_type size() const { return (size_type)difference_type(mpEnd-mpStart); }\ -\ - inline size_type max_size() const { return UINT_MAX/sizeof(value_type); }\ -\ - inline size_type capacity() const \ - { return difference_type(mpEndOfBuf-mpStart)/sizeof(value_type); }\ -\ - inline int empty() const { return mpStart == mpEnd; }\ -\ - inline reference operator[](size_type n) { return *(mpStart+n); }\ -\ - inline const_reference operator[](size_type n) const { return *(mpStart+n); }\ -\ - inline reference front() { return (*mpStart); }\ - \ - inline const_reference front() const { return (*mpStart); }\ -\ - inline reference back() { return (*(mpEnd-1)); }\ -\ - inline const_reference back() const { return (*(mpEnd-1)); }\ -\ - inline void reserve(size_type n) {}\ -\ - inline void push_back(const value_type& x)\ - {\ - if ( mpEnd != mpEndOfBuf ) \ - {\ - new (mpEnd) value_type(x);\ - ++mpEnd;\ - }\ - else\ - DoInsert( mpEnd, x );\ - }\ -\ - inline iterator insert(iterator position, const value_type& x = value_type())\ - {\ - if ( position == mpEnd && mpEnd != mpEndOfBuf )\ - {\ - new (mpEnd) value_type(x);\ - ++mpEnd;\ - return (mpEnd-1);\ - }\ - else return DoInsert( position, x );\ - }\ -\ - inline void pop_back()\ - {\ - DestructRange( mpEnd-1, mpEnd );\ -\ - --mpEnd;\ - }\ -\ - inline void erase(iterator first, iterator last)\ - {\ - if ( last == mpEnd )\ - {\ - DestructRange( first, last );\ - mpEnd = first;\ - return;\ - }\ - \ - CopyObjects( last, last + difference_type( mpEnd - last ), first );\ - \ - iterator newEnd = mpEnd - difference_type( last - first );\ - DestructRange( newEnd, mpEnd );\ - \ - mpEnd = newEnd;\ - }\ -\ - inline void erase( iterator position )\ - {\ - erase( position, position + 1 );\ - }\ -\ - inline void sort()\ - {\ - if ( size() < 2 ) return;\ - quick_sort( 0, size()-1 );\ - }\ -} - -/////////////////////////////// shallow-copy container /////////////////////// - -#define __DEFINE_STL_VECTOR_SHALLOW( vectorClass, Type ) class vectorClass {\ -\ -public:\ - typedef Type value_type;\ - typedef value_type* iterator;\ - typedef const value_type* const_iterator;\ - typedef iterator pointer;\ - typedef const iterator const_pointer;\ - typedef value_type& reference;\ - typedef const value_type& const_reference;\ - typedef size_t size_type;\ - typedef ptrdiff_t difference_type;\ -\ - typedef iterator OutputIterator;\ - typedef const_iterator InputIterator;\ -\ -protected:\ -\ - inline void PlacementCopy( const_iterator first, const_iterator last, iterator result )\ - {\ - memcpy(result, first, int(difference_type(last-first)*sizeof(value_type)) );\ - }\ -\ - inline void ConstructObjects( iterator first, iterator last, const value_type& pattern )\ - {\ - if ( sizeof(pattern) == 1 )\ - \ - memset( first, int(difference_type(last-first)/sizeof(value_type)), \ - int(*((char*)&pattern)) );\ - else\ - while( first != last ) \ - *first++ = pattern;\ - }\ -\ - inline void CopyObjects( iterator first, iterator last, iterator result )\ - {\ - memcpy(result, first, int(difference_type(last-first)*sizeof(value_type)) );\ - }\ -\ - inline void CopyObjectsBack( iterator first, iterator last, iterator result )\ - {\ - memmove(result, first, int(difference_type(last-first)*sizeof(value_type)) );\ - }\ -\ -public:\ -\ - class reverse_iterator \ - {\ - friend class vectorClass;\ - friend class const_reverse_iterator;\ -\ - public:\ - iterator mpPos;\ -\ - public:\ -\ - reverse_iterator() {}\ -\ - reverse_iterator ( iterator pPos )\ - {\ - mpPos = pPos;\ - }\ - \ - int operator==( const reverse_iterator& rhs ) const { return (mpPos == rhs.mpPos); }\ - int operator!=( const reverse_iterator& rhs ) const { return (mpPos != rhs.mpPos); }\ -\ - inline reverse_iterator( const reverse_iterator& other )\ - {\ - mpPos = other.mpPos;\ - }\ -\ - inline const reverse_iterator& operator--() \ - {\ - --mpPos;\ - return *this;\ - }\ -\ - inline reverse_iterator operator--(int)\ - {\ - reverse_iterator tmp = *this;\ - --mpPos;\ - return tmp;\ - }\ -\ - inline const reverse_iterator & operator++() \ - {\ - ++mpPos;\ - return *this;\ - }\ -\ - inline reverse_iterator operator++(int)\ - {\ - reverse_iterator tmp = *this;\ - ++mpPos;\ - return tmp;\ - }\ -\ - inline const_reference operator*() const { return *mpPos; }\ - };\ -\ -\ - class const_reverse_iterator \ - {\ - protected:\ - iterator mpPos;\ - public:\ -\ - const_reverse_iterator() {}\ -\ - const_reverse_iterator( const iterator pPos )\ - {\ - mpPos = pPos;\ - }\ - \ - int operator==( const const_reverse_iterator& rhs ) const { return (mpPos == rhs.mpPos); }\ - int operator!=( const const_reverse_iterator& rhs ) const { return (mpPos != rhs.mpPos); }\ -\ - inline const_reverse_iterator( const reverse_iterator& other )\ - {\ - mpPos = other.mpPos;\ - }\ -\ - inline const const_reverse_iterator& operator--() \ - {\ - --mpPos;\ - return *this;\ - }\ -\ - inline const_reverse_iterator operator--(int)\ - {\ - const_reverse_iterator tmp = *this;\ - --mpPos;\ - return tmp;\ - }\ -\ - inline const const_reverse_iterator & operator++() \ - {\ - ++mpPos;\ - return *this;\ - }\ -\ - inline const_reverse_iterator operator++(int)\ - {\ - const_reverse_iterator tmp = *this;\ - ++mpPos;\ - return tmp;\ - }\ -\ - inline const_reference operator*() const { return *mpPos; }\ - };\ -\ -protected:\ - \ - pointer mpStart;\ - pointer mpEnd;\ - pointer mpEndOfBuf;\ -\ -protected:\ -\ - inline void quick_sort(int low, int hi) \ - {\ - }\ -\ - inline void DestructRange( iterator first, iterator last )\ - {\ - }\ -\ - inline iterator DoInsert(iterator position, const value_type& x)\ - {\ - if ( mpEnd < mpEndOfBuf )\ - {\ - new (mpEnd) value_type(*(mpEnd-1) );\ - \ - CopyObjectsBack( position, mpEnd, position + 1 );\ - \ - *position = x;\ - \ - ++mpEnd;\ - \ - return position;\ - }\ - \ - size_type minBufLen = WXSTL_VECTOR_MIN_BUF_SIZE/sizeof(value_type);\ - \ - size_type doubledSize = size()*2;\ - \ - size_type newLen = ( doubledSize < minBufLen ) ? minBufLen : doubledSize;\ - \ - iterator pNewStart = (iterator)( new char[newLen*sizeof(value_type)] );\ - \ - PlacementCopy( mpStart, position, pNewStart );\ - \ - iterator atPosition = pNewStart + difference_type( position - mpStart );\ - \ - new (atPosition) value_type(x);\ - \ - iterator newPos = atPosition;\ - \ - ++atPosition;\ - \ - if ( mpStart ) \ - {\ - PlacementCopy( position, mpEnd, atPosition );\ - DestructRange( mpStart, mpEnd );\ - delete [](char*)mpStart;\ - }\ - \ - mpEnd = atPosition + difference_type( mpEnd - position );\ - \ - mpStart = pNewStart;\ - mpEndOfBuf = pNewStart + newLen;\ - \ - return newPos;\ - }\ -\ -public:\ -\ - inline vectorClass() : mpStart(0), \ - mpEnd(0),\ - mpEndOfBuf(0)\ - {}\ -\ - inline vectorClass( const_iterator first, const_iterator last )\ - : mpStart(0),\ - mpEnd(0),\ - mpEndOfBuf(0)\ - \ - { while( first != last ) push_back( *first++ ); }\ -\ - inline vectorClass( size_type n, const value_type& value = value_type() )\ - : mpStart(0),\ - mpEnd(0),\ - mpEndOfBuf(0)\ - \ - { for( size_type i = 0; i != n; ++i ) push_back( value ); }\ -\ - inline const vectorClass& operator=( const vectorClass& other )\ - {\ - if (mpStart) \ - {\ - DestructRange( begin(), end() );\ - delete [](char*)mpStart; \ - }\ -\ - size_t newLen = difference_type( other.mpEndOfBuf - other.mpStart );\ -\ - mpStart = (iterator)( new char[newLen*sizeof(value_type)] );\ -\ - PlacementCopy( other.begin(), other.end(), mpStart );\ -\ - mpEnd = mpStart + other.size();\ -\ - mpEndOfBuf = mpStart + newLen;\ -\ - return *this;\ - }\ -\ - inline vectorClass( const vectorClass& other )\ - : mpStart(0),\ - mpEnd(0),\ - mpEndOfBuf(0)\ - {\ - this->operator=( other );\ - }\ -\ - inline ~vectorClass() \ - { \ - if (mpStart) \ - {\ - DestructRange( begin(), end() );\ - delete [](char*)mpStart; \ - }\ - }\ -\ - inline iterator begin() { return mpStart; }\ -\ - inline const_iterator begin() const { return mpStart; }\ -\ - inline iterator end() { return mpEnd; }\ -\ - inline const_iterator end() const { return mpEnd; }\ -\ - inline size_type size() const { return (size_type)difference_type(mpEnd-mpStart); }\ -\ - inline size_type max_size() const { return UINT_MAX/sizeof(value_type); }\ -\ - inline size_type capacity() const \ - { return difference_type(mpEndOfBuf-mpStart)/sizeof(value_type); }\ -\ - inline int empty() const { return mpStart == mpEnd; }\ -\ - inline reference operator[](size_type n) { return *(mpStart+n); }\ -\ - inline const_reference operator[](size_type n) const { return *(mpStart+n); }\ -\ - inline reference front() { return (*mpStart); }\ - \ - inline const_reference front() const { return (*mpStart); }\ -\ - inline reference back() { return (*(mpEnd-1)); }\ -\ - inline const_reference back() const { return (*(mpEnd-1)); }\ -\ - inline void reserve(size_type n) {}\ -\ - inline void push_back(const value_type& x)\ - {\ - if ( mpEnd != mpEndOfBuf ) \ - {\ - new (mpEnd) value_type(x);\ - ++mpEnd;\ - }\ - else\ - DoInsert( mpEnd, x );\ - }\ -\ - inline iterator insert(iterator position, const value_type& x = value_type())\ - {\ - if ( position == mpEnd && mpEnd != mpEndOfBuf )\ - {\ - new (mpEnd) value_type(x);\ - ++mpEnd;\ - return (mpEnd-1);\ - }\ - else return DoInsert( position, x );\ - }\ -\ - inline void pop_back()\ - {\ - DestructRange( mpEnd-1, mpEnd );\ -\ - --mpEnd;\ - }\ -\ - inline void erase(iterator first, iterator last)\ - {\ - if ( last == mpEnd )\ - {\ - DestructRange( first, last );\ - mpEnd = first;\ - return;\ - }\ - \ - CopyObjects( last, last + difference_type( mpEnd - last ), first );\ - \ - iterator newEnd = mpEnd - difference_type( last - first );\ - DestructRange( newEnd, mpEnd );\ - \ - mpEnd = newEnd;\ - }\ -\ - inline void erase( iterator position )\ - {\ - erase( position, position + 1 );\ - }\ -\ - inline void sort()\ - {\ - if ( size() < 2 ) return;\ - quick_sort( 0, size()-1 );\ - }\ -} - - - -// redefine below symbol to change the default allocation unit of vector content buffer -#define WXSTL_VECTOR_MIN_BUF_SIZE 64 - -// defines vector class, where objects are copied -// using "deep-copy" sematics (i.e. by calling their copy constructors) - -#define WXSTL_VECTOR(ELEMENT_CLASS) \ -__DEFINE_STL_VECTOR_DEEP(_WXSTL_VECTOR_##ELEMENT_CLASS, ELEMENT_CLASS) - -// defines vector class, where objects are copied -// using "shallow-copy" sematics (i.e. instead of calling -// their constructors, memcpy() and memmove() are used to copy their raw data) - - -#define WXSTL_VECTOR_SHALLOW_COPY(ELEMENT_CLASS) __DEFINE_STL_VECTOR_SHALLOW(_WXSTL_VECTORSC_##ELEMENT_CLASS, ELEMENT_CLASS) - -#endif diff --git a/utils/HelpGen/src/HelpGen.cpp b/utils/HelpGen/src/HelpGen.cpp deleted file mode 100644 index 28f36a2f01..0000000000 --- a/utils/HelpGen/src/HelpGen.cpp +++ /dev/null @@ -1,693 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: HelpGen.cpp -// Purpose: Main program file for HelpGen -// Author: Vadim Zeitlin -// Modified by: -// Created: 06/01/99 -// RCS-ID: $Id$ -// Copyright: (c) 1999 VZ -// Licence: GPL -///////////////////////////////////////////////////////////////////////////// - -/* - TODO (+ means fixed) - - (i) small fixes in the current version - - +1. Quote special TeX characters like '&' and '_' (=> derive from wxFile) - 2. Document typedefs - 3. Document global variables - 4. Document #defines - +5. Program options - - (ii) plans for version 2 - 1. Use wxTextFile for direct file access to avoid one scan method problems - 2. Use command line parsrer class for the options - -*/ - -// ============================================================================= -// declarations -// ============================================================================= - -// ----------------------------------------------------------------------------- -// headers -// ----------------------------------------------------------------------------- - -// wxWindows -#include "wx/wxprec.h" - -#ifndef WX_PRECOMP - #include - #include - #include -#endif // WX_PRECOMP - -#include - -// C++ parsing classes -#include "cjparser.h" - -// standard headers -#include -#include - -// ----------------------------------------------------------------------------- -// private functions -// ----------------------------------------------------------------------------- - -// return the label for the given function name (i.e. argument of \label) -static wxString MakeLabel(const char *classname, const char *funcname = NULL); - -// return the whole \helpref{arg}{arg_label} string -static wxString MakeHelpref(const char *argument); - -// quotes special TeX characters in place -static void TeXFilter(wxString* str); - -// get all comments associated with this context -static wxString GetAllComments(const spContext& ctx); - -// get the string with current time (returns pointer to static buffer) -// timeFormat is used for the call of strftime(3) -#ifdef GetCurrentTime -#undef GetCurrentTime -#endif - -static const char *GetCurrentTime(const char *timeFormat); - -// ----------------------------------------------------------------------------- -// private classes -// ----------------------------------------------------------------------------- - -// add a function which sanitazes the string before writing it to the file -class wxTeXFile : public wxFile -{ -public: - wxTeXFile() : wxFile() { } - - bool WriteTeX(const wxString& s) - { - wxString t(s); - TeXFilter(&t); - - return wxFile::Write(t); - } -}; - -class HelpGenVisitor : public spVisitor -{ -public: - // ctor - HelpGenVisitor(); - - virtual void VisitFile( spFile& fl ); - virtual void VisitClass( spClass& cl ); - virtual void VisitEnumeration( spEnumeration& en ); - virtual void VisitTypeDef( spTypeDef& td ); - virtual void VisitPreprocessorLine( spPreprocessorLine& pd ); - virtual void VisitAttribute( spAttribute& attr ); - virtual void VisitOperation( spOperation& op ); - virtual void VisitParameter( spParameter& param ); - - void EndVisit(); - - // shut up g++ warning (ain't it stupid?) - virtual ~HelpGenVisitor() { } - -protected: - // (re)initialize the state - void Reset(); - - // insert documentation for enums/typedefs coming immediately before the - // class declaration into the class documentation - void InsertTypedefDocs(); - void InsertEnumDocs(); - - // write the headers for corresponding sections (only once) - void InsertDataStructuresHeader(); - void InsertMethodsHeader(); - - // terminate the function documentation if it was started - void CloseFunction(); - - wxTeXFile m_file; // file we're writing to now - - // state variables - bool m_inClass, // TRUE after file successfully opened - m_inTypesSection, // enums & typedefs go there - m_inMethodSection, // functions go here - m_isFirstParam, // first parameter of current function? - m_inFunction; // we're parsing a function declaration - - // holders for "saved" documentation - wxString m_textStoredEnums, - m_textStoredTypedefs, - m_textStoredFunctionComment; - - // headers included by this file - wxArrayString m_headers; -}; - -// ----------------------------------------------------------------------------- -// private functions -// ----------------------------------------------------------------------------- - -// ============================================================================= -// implementation -// ============================================================================= - -// this function never returns -static void usage() -{ - wxLogError("usage: HelpGen [-q|-v]
    \n"); - - exit(1); -} - -int main(int argc, char **argv) -{ - if ( argc < 2 ) { - usage(); - } - - int first; - for ( first = 1; (first < argc) && argv[first][0] == '-'; first++ ) { - switch ( argv[first][1] ) { - case 'v': - // be verbose - wxLog::GetActiveTarget()->SetVerbose(); - break; - - case 'q': - // be quiet - wxLog::GetActiveTarget()->SetVerbose(false); - break; - - default: - usage(); - } - } - - // create a parser object and a visitor derivation - CJSourceParser parser; - HelpGenVisitor visitor; - - // parse all files - for ( int i = first; i < argc; i++ ) { - spContext *ctxTop = parser.ParseFile(argv[i]); - if ( !ctxTop ) { - wxLogWarning("File '%s' couldn't be processed.", argv[i]); - } - else { - ((spFile *)ctxTop)->mFileName = argv[i]; - visitor.VisitAll(*ctxTop); - visitor.EndVisit(); - } - } - - return 0; -} - -// ----------------------------------------------------------------------------- -// HelpGenVisitor implementation -// ----------------------------------------------------------------------------- - -HelpGenVisitor::HelpGenVisitor() -{ - Reset(); -} - -void HelpGenVisitor::Reset() -{ - m_inClass = - m_inFunction = - m_inTypesSection = - m_inMethodSection = false; - - m_textStoredTypedefs = - m_textStoredEnums = - m_textStoredFunctionComment = ""; - m_headers.Empty(); -} - -void HelpGenVisitor::InsertTypedefDocs() -{ - m_file.WriteTeX(m_textStoredTypedefs); - m_textStoredTypedefs.Empty(); -} - -void HelpGenVisitor::InsertEnumDocs() -{ - m_file.WriteTeX(m_textStoredEnums); - m_textStoredEnums.Empty(); -} - -void HelpGenVisitor::InsertDataStructuresHeader() -{ - if ( !m_inTypesSection ) { - m_inTypesSection = true; - - m_file.WriteTeX("\\wxheading{Data structures}\n\n"); - } -} - -void HelpGenVisitor::InsertMethodsHeader() -{ - if ( !m_inMethodSection ) { - m_inMethodSection = true; - - m_file.WriteTeX( "\\latexignore{\\rtfignore{\\wxheading{Members}}}\n\n"); - } -} - -void HelpGenVisitor::CloseFunction() -{ - if ( m_inFunction ) { - m_inFunction = false; - - wxString totalText; - if ( m_isFirstParam ) { - // no params found - totalText << "\\void"; - } - - totalText << "}\n\n"; - - if ( !m_textStoredFunctionComment.IsEmpty() ) - totalText << m_textStoredFunctionComment << '\n'; - - m_file.WriteTeX(totalText); - } -} - -void HelpGenVisitor::EndVisit() -{ - CloseFunction(); - - wxLogInfo("%s: finished parsing the current file.", - GetCurrentTime("%H:%M:%S")); -} - -void HelpGenVisitor::VisitFile( spFile& file ) -{ - wxLogInfo("%s: started to parse classes from file '%s'...", - GetCurrentTime("%H:%M:%S"), file.mFileName.c_str()); -} - -void HelpGenVisitor::VisitClass( spClass& cl ) -{ - wxString name = cl.GetName(); - - // the file name is built from the class name by removing the leading "wx" - // if any and converting it to the lower case - wxString filename = name; - if ( filename(0, 2) == "wx" ) { - filename.erase(0, 2); - } - - filename.MakeLower(); - filename += ".tex"; - - m_inClass = m_file.Open(filename, wxFile::write); - if ( !m_inClass ) { - wxLogError("Can't generate documentation for the class '%s'.", - name.c_str()); - - return; - } - - m_inMethodSection = - m_inTypesSection = false; - - wxLogInfo("Created new file '%s' for class '%s'.", - filename.c_str(), name.c_str()); - - // the entire text we're writing to file - wxString totalText; - - // write out the header - { - wxString header; - header.Printf("% automatically generated by HelpGen from %s at %s\n" - "\\section{\\class{%s}}\\label{%s}\n", - filename.c_str(), GetCurrentTime("%d/%b/%y %H:%M:%S"), - name.c_str(), wxString(name).MakeLower().c_str()); - - totalText << header << '\n'; - } - - // if the header includes other headers they must be related to it... try to - // automatically generate the "See also" clause - if ( !m_headers.IsEmpty() ) { - // correspondence between wxWindows headers and class names - static const char *headers[] = { - "object", - "defs", - "string", - "dynarray", - "file", - "time", - }; - - // NULL here means not to insert anything in "See also" for the - // corresponding header - static const char *classes[] = { - NULL, - NULL, - NULL, - NULL, - "wxFile", - "wxTime", - }; - - wxASSERT_MSG( WXSIZEOF(headers) == WXSIZEOF(classes), - "arrays must be in sync!" ); - - wxArrayInt interestingClasses; - - size_t count = m_headers.Count(), index; - for ( size_t n = 0; n < count; n++ ) { - wxString baseHeaderName = m_headers[n].Before('.'); - if ( baseHeaderName(0, 3) != "wx/" ) - continue; - - baseHeaderName.erase(0, 3); - for ( index = 0; index < WXSIZEOF(headers); index++ ) { - if ( Stricmp(baseHeaderName, headers[index]) == 0 ) - break; - } - - if ( (index < WXSIZEOF(headers)) && classes[index] ) { - // interesting header - interestingClasses.Add(index); - } - } - - if ( !interestingClasses.IsEmpty() ) { - // do generate "See also" clause - totalText << "\\wxheading{See also:}\n\n"; - - count = interestingClasses.Count(); - for ( index = 0; index < count; index++ ) { - if ( index > 0 ) - totalText << ", "; - - totalText << MakeHelpref(classes[interestingClasses[index]]); - } - - totalText << "\n\n"; - } - } - - // the comment before the class generally explains what is it for so put it - // in place of the class description - if ( cl.HasComments() ) { - wxString comment = GetAllComments(cl); - - totalText << '\n' << comment << '\n'; - } - - // derived from section - wxString derived = "\\wxheading{Derived from}\n\n"; - - const StrListT& baseClasses = cl.mSuperClassNames; - if ( baseClasses.size() == 0 ) { - derived << "No base class"; - } - else { - bool first = true; - for ( StrListT::const_iterator i = baseClasses.begin(); - i != baseClasses.end(); - i++ ) { - if ( !first ) { - // separate from the previous one - derived << "\\\\\n"; - } - else { - first = false; - } - - wxString baseclass = *i; - derived << "\\helpref{" << baseclass << "}"; - derived << "{" << baseclass.MakeLower() << "}"; - } - } - totalText << derived << "\n\n"; - - // write all this to file - m_file.WriteTeX(totalText); - - // if there were any enums/typedefs before, insert their documentation now - InsertDataStructuresHeader(); - InsertTypedefDocs(); - InsertEnumDocs(); -} - -void HelpGenVisitor::VisitEnumeration( spEnumeration& en ) -{ - CloseFunction(); - - if ( m_inMethodSection ) { - // FIXME that's a bug, but tell the user aboit it nevertheless... we - // should be smart enough to process even the enums which come after the - // functions - wxLogWarning("enum '%s' ignored, please put it before the class " - "methods.", en.GetName().c_str()); - return; - } - - // simply copy the enum text in the docs - wxString enumeration = GetAllComments(en); - enumeration << "{\\small \\begin{verbatim}\n" - << en.mEnumContent - << "\n\\end{verbatim}}\n"; - - // remember for later use if we're not inside a class yet - if ( !m_inClass ) { - if ( !m_textStoredEnums.IsEmpty() ) { - m_textStoredEnums << '\n'; - } - - m_textStoredEnums << enumeration; - } - else { - // write the header for this section if not done yet - InsertDataStructuresHeader(); - - enumeration << '\n'; - m_file.WriteTeX(enumeration); - } -} - -void HelpGenVisitor::VisitTypeDef( spTypeDef& td ) -{ - CloseFunction(); - - if ( m_inMethodSection ) { - // FIXME that's a bug, but tell the user aboit it nevertheless... - wxLogWarning("typedef '%s' ignored, please put it before the class " - "methods.", td.GetName().c_str()); - return; - } - - wxString typedefdoc; - typedefdoc << "{\\small \\begin{verbatim}\n" - << "typedef " << td.mOriginalType << ' ' << td.GetName() - << "\n\\end{verbatim}}\n" - << GetAllComments(td); - - // remember for later use if we're not inside a class yet - if ( !m_inClass ) { - if ( !m_textStoredTypedefs.IsEmpty() ) { - m_textStoredTypedefs << '\n'; - } - - m_textStoredTypedefs << typedefdoc; - } - else { - // write the header for this section if not done yet - InsertDataStructuresHeader(); - - typedefdoc << '\n'; - m_file.WriteTeX(typedefdoc); - } -} - -void HelpGenVisitor::VisitPreprocessorLine( spPreprocessorLine& pd ) -{ - switch ( pd.GetStatementType() ) { - case SP_PREP_DEF_INCLUDE_FILE: - m_headers.Add(pd.CPP_GetIncludedFileNeme()); - break; - - case SP_PREP_DEF_DEFINE_SYMBOL: - // TODO decide if it's a constant and document it if it is - break; - } -} - -void HelpGenVisitor::VisitAttribute( spAttribute& attr ) -{ - CloseFunction(); - - // only document the public member variables - if ( !m_inClass || !attr.IsPublic() ) - return; - - wxLogWarning("Ignoring member variable '%s'.", attr.GetName().c_str()); -} - -void HelpGenVisitor::VisitOperation( spOperation& op ) -{ - CloseFunction(); - - if ( !m_inClass || !op.IsInClass() ) { - // FIXME that's a bug too - wxLogWarning("skipped global function '%s'.", op.GetName().c_str()); - - return; - } - - if ( op.mVisibility == SP_VIS_PRIVATE ) { - // FIXME should we document protected functions? - return; - } - - InsertMethodsHeader(); - - // save state info - m_inFunction = - m_isFirstParam = true; - - m_textStoredFunctionComment = GetAllComments(op); - - // start function documentation - wxString totalText; - const char *funcname = op.GetName().c_str(); - const char *classname = op.GetClass().GetName().c_str(); - - // check for the special case of dtor - wxString dtor; - if ( (funcname[0] == '~') && (strcmp(funcname + 1, classname) == 0) ) { - dtor.Printf("\\destruct{%s}", classname); - funcname = dtor; - } - - totalText.Printf("\\membersection{%s::%s}\\label{%s}\n\n" - "\\%sfunc{%s%s}{%s}{", - classname, funcname, - MakeLabel(classname, funcname).c_str(), - op.mIsConstant ? "const" : "", - op.mIsVirtual ? "virtual " : "", - op.mRetType.c_str(), - funcname); - - m_file.WriteTeX(totalText); -} - -void HelpGenVisitor::VisitParameter( spParameter& param ) -{ - if ( !m_inFunction ) - return; - - wxString totalText; - if ( m_isFirstParam ) { - m_isFirstParam = false; - } - else { - totalText << ", "; - } - - totalText << "\\param{" << param.mType << " }{" << param.GetName(); - wxString defvalue = param.mInitVal; - if ( !defvalue.IsEmpty() ) { - totalText << " = " << defvalue; - } - - totalText << '}'; - - m_file.WriteTeX(totalText); -} - -// ----------------------------------------------------------------------------- -// global function implementation -// ----------------------------------------------------------------------------- - -static wxString MakeLabel(const char *classname, const char *funcname) -{ - wxString label(classname); - if ( funcname && funcname[0] == '\\' ) { - // we may have some special TeX macro - so far only \destruct exists, - // but may be later others will be added - static const char *macros[] = { "destruct" }; - static const char *replacement[] = { "dtor" }; - - size_t n; - for ( n = 0; n < WXSIZEOF(macros); n++ ) { - if ( strncmp(funcname + 1, macros[n], strlen(macros[n])) == 0 ) { - // found - break; - } - } - - if ( n == WXSIZEOF(macros) ) { - wxLogWarning("unknown function name '%s' - leaving as is.", - funcname); - } - else { - funcname = replacement[n]; - } - } - - if ( funcname ) - label << funcname; - - label.MakeLower(); - - return label; -} - -static wxString MakeHelpref(const char *argument) -{ - wxString helpref; - helpref << "\\helpref{" << argument << "}{" << MakeLabel(argument) << '}'; - - return helpref; -} - -static void TeXFilter(wxString* str) -{ - // FIXME may be done much more quickly - str->Replace("&", "\\&"); - str->Replace("_", "\\_"); -} - -static wxString GetAllComments(const spContext& ctx) -{ - wxString comment; - const MCommentListT& comments = ctx.GetCommentList(); - for ( MCommentListT::const_iterator i = comments.begin(); - i != comments.end(); - i++ ) { - comment << (*i)->GetText(); - } - - return comment; -} - -static const char *GetCurrentTime(const char *timeFormat) -{ - static char s_timeBuffer[128]; - time_t timeNow; - struct tm *ptmNow; - - time(&timeNow); - ptmNow = localtime(&timeNow); - - strftime(s_timeBuffer, WXSIZEOF(s_timeBuffer), timeFormat, ptmNow); - - return s_timeBuffer; -} - -/* vi: set tw=80 et ts=4 sw=4: */ diff --git a/utils/HelpGen/src/HelpGen.rc b/utils/HelpGen/src/HelpGen.rc deleted file mode 100644 index 626b82f58a..0000000000 --- a/utils/HelpGen/src/HelpGen.rc +++ /dev/null @@ -1,3 +0,0 @@ -/* mondrian ICON "mondrian.ico" */ -#include "wx/msw/wx.rc" - diff --git a/utils/HelpGen/src/cjparser.cpp b/utils/HelpGen/src/cjparser.cpp deleted file mode 100644 index 9c90e37862..0000000000 --- a/utils/HelpGen/src/cjparser.cpp +++ /dev/null @@ -1,2173 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: No names yet. -// Purpose: Contrib. demo -// Author: Aleksandras Gluchovas -// Modified by: -// Created: 22/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Aleskandars Gluchovas -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "acell.h" -#pragma interface -#endif - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include "cjparser.h" - -#if defined( wxUSE_TEMPLATE_STL ) - - #include - -#else - - #include "wxstlac.h" - -#endif - - -/***** Implementation for class SJParser *****/ - -// statics used by inline'ed C helper-functions -static char* _gSrcStart = 0; -static char* _gSrcEnd = 0; -static char* _gLastSuppresedComment = 0; -static int _gLineNo = 0; - -// FOR NOW:: comments queue is static -#define MAX_CQ_ENTRIES 128 -static char* _gCommentsQueue[MAX_CQ_ENTRIES]; -static int _gCQSize = 0; - -/***** keyword map related structures *****/ - -struct less_c_str -{ - inline bool operator()( char* x, char* y) const - { return ( strcmp( x,y ) < 0 ); - } -}; - -//WXSTL_MAP(CharPtrT,CharPtrT, LESS_THEN_FUNCTOR(CharPtrT)); - -#if defined( wxUSE_TEMPLATE_STL ) - - typedef map< char*, char*, less_c_str > KeywordMapT; - -#else - - typedef char* CharPtrT; - typedef WXSTL_MAP( CharPtrT, CharPtrT ,less_c_str) KeywordMapT; - -#endif - -static KeywordMapT __gMultiLangMap; -static int __gMapReady = 0; - -static char* __gKeyWords[] = -{ - "public", - "protected", - "private", - - "class", - "struct", - "union", - "enum", - "interface", - - "package", - "import", - - "typedef", - "template", - "friend", - "const", - "volatile", - "mutable", - "virtual", - "inline", - "static", - "register", - - "final", - "abstract", - "native", - - "__stdcall", - "extern", - - 0 -}; - -static void check_keyword_map() -{ - if ( !__gMapReady ) - { - __gMapReady = 1; - - // "make sure" the address of the first member of non-polimorphic class - // coinsides with the address of the instance - - char** keyword = __gKeyWords; - - while ( (*keyword) != 0 ) - { - __gMultiLangMap.insert( - KeywordMapT::value_type( *keyword, *keyword ) - ); - - ++keyword; - } - } -} - -/***** helper functions *****/ - -static inline void skip_to_eol( char*& cur ) -{ - while( *(cur) != 10 && *cur != 13 && cur < _gSrcEnd) ++cur; -} - -static inline void skip_eol( char*& cur ) -{ - if ( *cur == 13 ) - - cur += 2; - else - cur += 1; - - ++_gLineNo; -} - -static inline bool skip_to_next_comment_in_the_line( char*& cur ) -{ - do - { - while( cur < _gSrcEnd && - *cur != 10 && - *cur != 13 && - *cur != '/' - ) ++cur; - - if ( cur == _gSrcEnd ) return FALSE; - - if ( *cur == '/' ) - { - if ( (*(cur+1) == '*') || - (*(cur+1) == '/') ) return TRUE; - else - { - ++cur; - continue; - } - } - - return FALSE; - - } while(1); -} - -inline static void store_line_no( int& toVar ) -{ - toVar = _gLineNo; -} - -inline static void restore_line_no( int storedLineNo ) -{ - _gLineNo = storedLineNo; -} - -inline static int get_line_no() -{ - return _gLineNo; -} - -static void skip_to_prev_line( char*& cur ) -{ - while( cur >= _gSrcStart && - *cur != 10 && - *cur != 13 - ) --cur; - - // NOTE:: '\n' is 13,10 for DOS - // '\n' is 10 for UNIX - - // NOTE1: '\n' symbol is not used here, - // to provide possibility of loading - // file as binary - - --cur; - if ( *cur == 10 ) - { - ++cur; - return; - } - - if ( *cur == 13 ) --cur; - - while( cur >= _gSrcStart && - *cur != 10 && - *cur != 13 - ) --cur; - - ++cur; // move to the first character in the line -} - -static inline void skip_comments( char*& cur ) -{ - ++cur; // skip '/' token - - if ( *cur != '/' && *cur != '*' ) return; - - // first, store position of the comment into the queue - // (which further will be attached to the next context - // found) - - if ( cur-1 != _gLastSuppresedComment ) - { - if ( _gCQSize == MAX_CQ_ENTRIES ) - { - size_t i = MAX_CQ_ENTRIES-1; - - while( i != 0 ) - { - _gCommentsQueue[i-1] = _gCommentsQueue[i]; - --i; - } - - --_gCQSize ; - } - - _gCommentsQueue[_gCQSize++] = cur-1; - } - - // if signle-line comment, skip it now - if ( *cur == '/' ) - { - skip_to_eol( cur ); - skip_eol( cur ); - return; - } - - size_t level = 1; - - // check for multiline comment (handle nested multiline comments!) - - int line_len = 0; - - ++cur; - ++cur; - do - { - // TBD:: check eof cond. - - // detect and remove vertical columns of '*''s - - while ( *cur != '/' && cur < _gSrcEnd ) - { - switch (*cur) - { - case '*' : - { - if ( *(cur+1) != '/' ) - { - if ( line_len == 1 ) - - *cur = ' '; - } - - break; - } - - case 13 : line_len = 0; break; - case 10 : { line_len = 0; ++_gLineNo; } break; - - default : ++line_len; - } - - ++cur; - } - - if ( cur >= _gSrcEnd ) return; - - ++cur; - - if ( *(cur-2) == '*' ) - { - --level; - if ( level == 0 ) - break; - } - else - if ( *cur == '*' ) - { - ++cur; - ++cur; - - ++level; - } - - } while(1); -} - -static inline void clear_commets_queue() -{ - _gCQSize = 0; -} - -static inline void skip_quoted_string( char*& cur ) -{ - ++cur; // skip first quote '"' - - // check if quote wasn't prefixed - if ( *(cur-2) == '\\' ) - return; - - do - { - while ( *cur != '"' && cur < _gSrcEnd ) - { - if ( *cur == 10 ) ++_gLineNo; - ++cur; - } - - if ( cur >= _gSrcEnd ) return; - - ++cur; // skip the last quote - - // check if it wasn't prefixed - - if ( *(cur-2) != '\\' ) - break; - - } while (1); -} - -// skips subsequent white space and comments -// (return false if the end of source code reached) - -static inline bool get_next_token( char*& cur ) -{ - for( ; cur < _gSrcEnd; ++cur ) - { - switch( *(cur) ) - { - case ' ' : continue; - case '\t': continue; - case 13 : continue; - - case 10 : { ++_gLineNo;continue; } - - case '/' : skip_comments( cur ); - --cur; - continue; - - default : break; - }; - - break; - } - - if ( cur >= _gSrcEnd ) - - return FALSE; - else - return TRUE; -} - -static inline void skip_preprocessor_dir( char*& cur ) -{ - do - { - skip_to_eol(cur); - - if ( *(cur-1) != '\\' ) - break; - - if ( cur < _gSrcEnd ) - skip_eol( cur ); - else - break; - - } while(1); -} - -static void skip_token( char*& cur ) -{ - if ( *cur == '"' ) - { - skip_quoted_string( cur ); - return; - } - - if ( *cur == ',' || - *cur == ';' || - *cur == '<' || - *cur == '>' || - *cur == '=' || - *cur == ')' || - *cur == '(' - ) - { - ++cur; - return; - } - - ++cur; // leading character is always skipped - - for( ; cur < _gSrcEnd ; ++cur ) - { - switch ( *cur ) - { - case ' ' : break; - case '\t': break; - case 13 : break; - case 10 : break; - case ',' : break; - case ';' : break; - case '<' : break; - case '>' : break; - - // FIXME:: QUICK-HACK:: to treat scope resolution - // tokens are a part of the string - e.g. SomeSpace::SubName would - // become one token - - case ':' : if ( *(cur+1) == ':' ) - { - ++cur; - continue; - } - - break; - case '=' : break; - case '(' : break; - case ')' : break; - case '{' : break; - case '}' : break; - - default : continue; - }; - break; - } -} - -static inline size_t get_token_len( char* tok ) -{ - char* start = tok; - - skip_token( tok ); - - return size_t( tok - start ); -} - -// returns true, if given tokens are equel - -static inline bool cmp_tokens( char* tok1, char* tok2 ) -{ - // NOTE:: the case one token includes - // other in it's entirely is not handled - - size_t len = get_token_len( tok1 ); - - // assuming that tokens are non-zero length - - do - { - if ( *(tok1++) != *(tok2++) ) - return FALSE; - - --len; - - } while ( --len ); - - return TRUE; -} - -static inline bool cmp_tokens_fast( char* tok1, char* tok2, size_t len ) -{ - do - { - if ( *(tok1++) != *(tok2++) ) - return FALSE; - - } while ( --len ); - - return TRUE; -} - -static inline void skip_tempalate_statement( char*& cur ) -{ - size_t level = 0; - - // go one level deeper - while( *cur != '<' && cur < _gSrcEnd ) - { - if (*cur == 10 ) ++_gLineNo; - ++cur; - } - - // FIXME:: template should be checked statement for - // comments inside of it - - do - { - if ( *cur == '<' ) - ++level; - else - --level; - - ++cur; // skip '<' or '>' token - - if ( level == 0 ) - return; - - while( *cur != '<' && *cur != '>' && cur < _gSrcEnd ) - { - if (*cur == 10 ) ++_gLineNo; - ++cur; - } - - } while (1); -} - -static inline void skip_statement( char*& cur ) -{ - for( ; cur < _gSrcEnd; ++cur ) - - switch (*cur) - { - case ';' : ++cur; // skip statement-terminator token - return; - - case '"' : skip_quoted_string(cur); - --cur; - continue; - - case 10 : ++_gLineNo; - - continue; - case '/' : skip_comments( cur ); - --cur; - continue; - default : continue; - } -} - -// "reversed" versions of skip_token() and get_next_token() - -static inline void skip_token_back( char*& cur ) -{ - // FIXME:: now, when moving backwards, neither strings nor - // comment blocks are checked - - --cur; // skip to the trailing character - - if ( *cur == ',' || - *cur == ')' || - *cur == '(' - ) - return; - - - for( ; cur < _gSrcEnd ; --cur ) - { - switch ( *cur ) - { - case ' ' : break; - case '\t': break; - case 13 : break; - case 10 : break; - case ',' : break; - case '(' : break; - - default : continue; - }; - - break; - } - - ++cur; // get to the leading character of the token -} - -static inline void skip_next_token_back( char*& cur ) -{ - --cur; // skip leading character of the current token - - if ( *cur == ',' || - *cur == ')' || - *cur == '(' - ) - { - ++cur; - return; - } - - for( ; cur < _gSrcEnd; --cur ) - { - switch ( *cur ) - { - case ' ' : continue; - case '\t': continue; - case 13 : continue; - case 10 : continue; - case ',' : continue; - case '(' : continue; - - default : break; - }; - - break; - } - - ++cur; // position after the trailing charcter of the prev token -} - -static string get_token_str( char* cur ) -{ - return string( cur, get_token_len( cur ) ); -} - -// skips token or whole expression which may have -// nested expressions between '(' ')' brackets. -// -// Upon return, the cursor points to the terminating bracket ')', -// -// Return value is the size of the block - -static size_t skip_block( char*& cur ) -{ - size_t level = 0; // nesting level - - char* start = cur; - - // NOTE:: assumed that block not necessarely starts - // with bracket rightaway - - if ( *cur == '(' ) - { - ++level; - } - - do - { - skip_token( cur ); - - char* savedPos = cur; - int tmpLnNo; - store_line_no( tmpLnNo ); - - get_next_token( cur ); - - if ( cur >= _gSrcEnd ) return 0; - - if ( *cur == '(' ) - { - ++level; - } - else - if ( *cur == ')' ) - { - if ( level == 0 ) - { - cur = savedPos; - restore_line_no( tmpLnNo ); - - return size_t(cur-start); - } - - --level; - - if ( level == 0 ) - { - ++cur; - - // QUICK-HACK::to easily handle function prototypes , - // it works, besause theoretically there should - // be no cast-expressions in non-implementation - // scope (e.g. "time( (long*)(ptr+1) )" should not - // appear in the declarations, thus it is most likelly - // for the ")(" fragment to be within a function - // prototype in the declarations scope - - if ( *cur == '(' ) - { - ++level; - continue; - } - - else return size_t(cur-start); - } - } - else - { - if ( level == 0 ) - { - cur = savedPos; - restore_line_no( tmpLnNo ); - - return size_t(cur-start); - } - } - - } while(1); -} - -// returns 0, if end of source reached -static inline bool skip_imp_block( char*& cur ) -{ - while( *cur != '{' && cur < _gSrcEnd ) - { - skip_token( cur ); - if ( !get_next_token( cur ) ) return FALSE; - } - - while( *cur != '}' && cur < _gSrcEnd ) - { - skip_token( cur ); - if ( !get_next_token( cur ) ) return FALSE; - } - - ++cur; - - return TRUE; -} - -static bool is_class_token( char*& cur ) -{ - // FIXME:: the below mess should be cleaned in it's entirely - - if ( *cur == 'i' ) - if ( *(cur+1) == 'n' ) - - return cmp_tokens_fast( cur, "interface", 9 ); - - if ( *cur == 'c' ) - if ( *(cur+1) == 'l' ) - - return cmp_tokens_fast( cur, "class", 5 ); - - if ( *cur == 's' ) - if ( *(cur+1) == 't' ) - - return cmp_tokens_fast( cur, "struct", 6 ); - - if ( *cur == 'u' ) - if ( *(cur+1) == 'n' ) - - return cmp_tokens_fast( cur, "union", 5 ); - - return FALSE; -} - -inline static bool is_forward_decl( char* cur ) -{ - do - { - switch( *cur ) - { - case ':' : return FALSE; - case '{' : return FALSE; - case '(' : return FALSE; - - case ';' : return TRUE; - - default : break; - }; - - ++cur; - - } while (cur < _gSrcEnd); // prevent running out of bounds - - return FALSE; -} - -inline static bool is_function( char* cur, bool& isAMacro ) -{ - isAMacro = FALSE; - - int tmpLnNo; - store_line_no( tmpLnNo ); - - // NOTE:: comments and quoted strings are not checked here - - // first,check for "single-line hanginging macros" like: - // ___UNICODE - // - - char* eol = cur; - skip_to_eol( eol ); - - skip_token( cur ); - get_next_token( cur ); - - if ( cur > eol ) - { - isAMacro = TRUE; - restore_line_no( tmpLnNo ); - - return TRUE; - } - - // it's not a macro, go to the begining of arg. list - - do - { - // if bracket found, it's a function or a begining - // of some macro - if ( *cur == '(' ) - { - restore_line_no( tmpLnNo ); - return TRUE; - } - - // end of statement found without any brackets in it - // - it cannot be a function - - if ( *cur == ';' ) - { - restore_line_no( tmpLnNo ); - return FALSE; - } - - ++cur; - - } while( cur < _gSrcEnd); - - isAMacro = 1; - restore_line_no( tmpLnNo ); - - return FALSE; -} - -// upon return the cursor is positioned after the -// terminating curly brace - -static inline void skip_scope_block( char*& cur ) -{ - size_t level = 0; - - for( ; cur < _gSrcEnd ; ++cur ) - - switch( *cur ) - { - case '/' : skip_comments( cur ); - --cur; - continue; - case '"' : skip_quoted_string( cur ); - --cur; - continue; - - case '{' : ++level; - continue; - - case '}' :--level; - if ( level == 0 ) - { - ++cur; // skip final closing curly brace - return; - } - - case 10 : ++_gLineNo; continue; - - default : continue; - }; -} - -// moves tokens like '*' '**', '***', '&' from the name -// to the type - -static void arrange_indirection_tokens_between( string& type, - string& identifier ) -{ - // TBD:: FIXME:: return value of operators ! - - while ( identifier[0] == '*' || - identifier[0] == '&' - ) - { - type += identifier[0]; - identifier.erase(0,1); - - if ( !identifier.length() ) return; - } -} - - -// the only function where multi-lang keyword map is accessed - -static bool is_keyword( char* cur ) -{ - size_t len = get_token_len( cur ); - - // put a terminating zero after the given token - char tmp = *(cur + len); - *(cur+len) = '\0'; - - KeywordMapT::iterator i; - - i = __gMultiLangMap.find( cur ); - - // restore original character suppresed by terminating zero - *(cur + len) = tmp; - - return ( i != __gMultiLangMap.end() ); -} - -static inline void get_string_between( char* start, char* end, - string* pStr ) -{ - char saved = *end; - - *end = '\0'; - *pStr = start; - *end = saved; -} - -static char* set_comment_text( string& text, char* start ) -{ - char* end = start; - - // to avoid poluting the queue with this comment - _gLastSuppresedComment = start; - - skip_comments( end ); - - if ( *(end-1) == '/' ) - end -= 2; - - start += 2; - - // skip multiple leading '/''s or '*''s - while( *start == '/' && start < end ) ++start; - while( *start == '*' && start < end ) ++start; - - get_string_between( start, end, &text ); - - return end; -} - -/***** Implementation for class CJSourceParser *****/ - -CJSourceParser::CJSourceParser( bool collectCommnets, bool collectMacros ) - : mpStart(0), - mpEnd(0), - mpCurCtx( 0 ), - mCommentsOn( collectCommnets ), - mMacrosOn ( collectMacros ) -{ - check_keyword_map(); -} - -spFile* CJSourceParser::Parse( char* start, char* end ) -{ - // set up state variables - mCurVis = SP_VIS_PRIVATE; - - spFile* pTopCtx = new spFile(); - mpCurCtx = pTopCtx; - - mIsVirtaul = 0; - mIsTemplate = 0; - mNestingLevel = 0; - - cur = start; - - mpStart = start; - mpEnd = end; - - _gSrcEnd = mpEnd; // let all the C-functions "smell" the end of file - _gSrcStart = start; - - _gLineNo = 0; - - clear_commets_queue(); - - // main parsing loop - - do - { - if ( !get_next_token( cur ) ) - // end of source reached - return pTopCtx; - - if ( memcmp( cur, "ScriptSection( const string&", - strlen( "ScriptSection( const string&" ) - ) == 0 - ) - { - int o; - ++o; - } - - switch (*cur) - { - case '#' : - { - AddMacroNode( cur ); - continue; - } - - case ':' : - { - skip_token( cur ); - continue; - } - - case ';' : - { - skip_token( cur ); - continue; - } - - case ')' : - { - skip_token( cur ); - continue; - } - - case '=' : - { - skip_token( cur ); - continue; - } - - default: break; - } - - if ( is_keyword( cur ) ) - { - // parses, token, if token identifies - // the container context (e.g. class/namespace) - // the corresponding context object is created - // and set as current context - - ParseKeyword( cur ); - continue; - } - - if ( *cur >= '0' && *cur <= '9' ) - { - skip_token( cur ); - continue; - } - - if ( *cur == '}' ) - { - if ( mCurCtxType != SP_CTX_CLASS ) - { - // FOR NOW:: disable the below assertion - - // DBG:: unexpected closing-bracket found - //ASSERT(0); - - skip_token( cur ); // just skip it - continue; - } - - if ( mpCurCtx->GetType() == SP_CTX_CLASS ) - { - int curOfs = ( (cur+1) - _gSrcStart ); - - mpCurCtx->mContextLength = ( curOfs - mpCurCtx->mSrcOffset ); - } - - --mNestingLevel; - - // terminate operation/class/namespace context - // TBD:: check if it's really this type of context - - wxASSERT( mpCurCtx ); - mpCurCtx = mpCurCtx->GetOutterContext(); - wxASSERT( mpCurCtx ); - - if ( mNestingLevel == 0 ) - { - - mCurCtxType = SP_CTX_FILE; - - // not-nested class delclaration finished, - // rest template flag in any case - mIsTemplate = 0; - } - - skip_token( cur ); - continue; - } - - bool isAMacro = 0; - - if ( is_function( cur, isAMacro ) ) - { - if ( isAMacro ) - { - skip_token( cur ); - continue; - } - - char* savedPos = cur; - - int tmpLnNo; - store_line_no( tmpLnNo ); - - isAMacro = FALSE; - - if ( !ParseNameAndRetVal( cur, isAMacro ) ) - { - if ( !isAMacro ) - { - cur = savedPos; - SkipFunction( cur ); - } - continue; - } - - if ( !ParseArguments( cur ) ) - { - // failure while parsing arguments, - // remove enclosing operation context - - spContext* pFailed = mpCurCtx; - mpCurCtx = mpCurCtx->GetOutterContext(); - mpCurCtx->RemoveChild( pFailed ); - - skip_to_eol( cur ); - //cur = savedPos; - } - else - { - // otherwise, successfully close operation context: - - clear_commets_queue(); - - SkipFunctionBody( cur ); - - mpCurCtx = mpCurCtx->GetOutterContext(); - - // DBG:: - wxASSERT( mpCurCtx ); - - } - } - else // otherwise it's declaration of a variable; - { - // now, the cursor point to the end of statement (';' token) - - if ( mCurCtxType != SP_CTX_CLASS ) - { - // non-class members are ignored - - skip_token( cur ); // skip the end of statement - continue; - } - - ParseMemberVar( cur ); - } - - } while( 1 ); -} - -void CJSourceParser::AttachComments( spContext& ctx, char* cur ) -{ - if ( !mCommentsOn ) return; - - MCommentListT& lst = ctx.GetCommentList(); - - char* prevComEnd = 0; - - int tmpLnNo; - store_line_no( tmpLnNo ); - - // attach comments which were found before the given context - - for( int i = 0; i != _gCQSize; ++i ) - { - spComment* pComment = new spComment(); - lst.push_back( pComment ); - - // find the end of comment - char* start = _gCommentsQueue[i]; - - pComment->mIsMultiline = ( *(start+1) == '*' ); - - // first comment in the queue and multiline - // comments are always treated as a begining - // of the new paragraph in the comment text - - if ( i == 0 ) - - pComment->mStartsPar = TRUE; - else - if ( pComment->mIsMultiline ) - - pComment->mStartsPar = TRUE; - else - { - // find out wheather there is a new-line - // between to adjecent comments - - - char* prevLine = start; - skip_to_prev_line(prevLine); - - if ( prevLine >= prevComEnd ) - - pComment->mStartsPar = TRUE; - else - pComment->mStartsPar = FALSE; - } - - prevComEnd = set_comment_text( pComment->mText, start ); - } - - - // attach comments which are at the end of the line - // of the given context (if any) - - if ( skip_to_next_comment_in_the_line( cur ) ) - { - spComment* pComment = new spComment(); - lst.push_back( pComment ); - - set_comment_text( pComment->mText, cur ); - - pComment->mStartsPar = 1; - pComment->mIsMultiline = ( *(cur+1) == '*' ); - - // mark this comment, so that it would not - // get in the comments list of the next context - _gLastSuppresedComment = cur; - } - - restore_line_no( tmpLnNo ); - - clear_commets_queue(); -} - -void CJSourceParser::AddMacroNode( char*& cur ) -{ - char* start = cur; - - int lineNo = get_line_no(); - - skip_preprocessor_dir( cur ); - - int tmpLnNo; - store_line_no( tmpLnNo ); - - if ( !mMacrosOn ) return; - - spPreprocessorLine* pPL = new spPreprocessorLine(); - pPL->mSrcLineNo = lineNo; - - AttachComments( *pPL, cur ); - - get_string_between( start, cur, &pPL->mLine ); - - ++start; // skip '#' - get_next_token( start ); - - pPL->mDefType = SP_PREP_DEF_OTHER; - - // if we found a definition or redefinition, - // determine the type exactly and assign - // a name to the context - - if ( *start == 'd' ) - { - if ( cmp_tokens_fast( start, "define", 6 ) ) - { - char* tok = start+6; - - get_next_token( tok ); - - pPL->mName = get_token_str( tok ); - - skip_token( tok ); - get_next_token( tok); - - - if ( tok > cur ) - pPL->mDefType = SP_PREP_DEF_DEFINE_SYMBOL; - else - pPL->mDefType = SP_PREP_DEF_REDEFINE_SYMBOL; - } - } - else - if ( *start == 'i' ) - - if ( cmp_tokens_fast( start, "include", 7 ) ) - { - pPL->mDefType = SP_PREP_DEF_INCLUDE_FILE; - } - - mpCurCtx->AddMember( pPL ); - - restore_line_no( tmpLnNo ); - - clear_commets_queue(); -} - -void CJSourceParser::ParseKeyword( char*& cur ) -{ - // analyze token, which identifies the begining of a new context - - if ( CheckVisibilty( cur ) ) - { - skip_token( cur ); - return; - } - - if ( is_class_token( cur ) ) - { - if ( is_forward_decl( cur ) ) - { - // forward declarations are ignored; - skip_token( cur ); - return; - } - - if ( mNestingLevel == 0 ) - { - // change context form global class context - mCurCtxType = SP_CTX_CLASS; - } - - ++mNestingLevel; - - // add information about new class (name, inheritance, etc) - AddClassNode( cur ); - - // the default visiblity for class members is 'private' - mCurVis = SP_VIS_PRIVATE; - - return; - } - - size_t len = get_token_len( cur ); - - if ( cmp_tokens_fast( cur, "typedef", len ) ) - { - skip_token(cur); - get_next_token(cur); - - if ( cmp_tokens_fast( cur, "struct", len ) || - cmp_tokens_fast( cur, "union", len ) || - cmp_tokens_fast( cur, "class", len ) - ) - { - if ( mNestingLevel == 0 ) - { - // change context form global class context - mCurCtxType = SP_CTX_CLASS; - } - - ++mNestingLevel; - - // add information about new class (name, inheritance, etc) - AddClassNode( cur ); - - // the default visiblity for class members is 'private' - mCurVis = SP_VIS_PRIVATE; - - return; - - // FOR NOW:: typedef struct, etc are also ignored - //skip_scope_block( cur ); - } - - if ( cmp_tokens_fast( cur, "enum", len ) ) - { - AddEnumNode( cur ); - return; - } - - AddTypeDefNode( cur ); - - return; - } - - if ( cmp_tokens_fast( cur, "enum", len ) ) - { - AddEnumNode( cur ); - return; - } - - if ( cmp_tokens_fast( cur, "extern", len ) ) - { - // extern's are ignored (both extern "C" and extern vars) - while ( *cur != '{' && - *cur != ';' ) - { - skip_token( cur ); - get_next_token( cur ); - } - return; - - } - if ( cmp_tokens_fast( cur, "enum", len ) ) - { - // enumeration blocks are ignored - - skip_scope_block( cur ); - - get_next_token( cur ); - skip_token( cur ); // skip ';' token; - return; - } - - if ( cmp_tokens_fast( cur, "package", len ) ) - { - // packages are ignored - skip_statement( cur ); - return; - }; - - if ( cmp_tokens_fast( cur, "import", len ) ) - { - // import statements are ignored - skip_statement( cur ); - return; - } - - if ( cmp_tokens_fast( cur, "virtual", len ) ) - { - // probably the virtual method is in front of us; - mIsVirtaul = 1; - skip_token( cur ); - return; - } - - if ( cmp_tokens_fast( cur, "template", len ) ) - { - mIsTemplate = 1; - skip_tempalate_statement( cur ); - return; - } - - if ( cmp_tokens_fast( cur, "friend", len ) ) - { - skip_statement( cur ); - return; - } - - // ingnore "unsigificant" tokens (i.e. which do not - // affect the current parsing context) - - skip_token( cur ); -} - -bool CJSourceParser::ParseNameAndRetVal( char*& cur, bool& isAMacro ) -{ - isAMacro = FALSE; - - // FOR NOW:: all functions in the global - // scope are ignored - - int lineNo = get_line_no(); - - char* start = cur; - - while( *cur != '(' ) - { - skip_token( cur ); - if ( !get_next_token( cur ) ) return FALSE; - } - - char* bracketPos = cur; - char* savedPos = cur + 1; - - int tmpLnNo; - store_line_no( tmpLnNo ); - - // skip gap between function name and start of paramters list - while ( *(cur-1) == ' ' ) - --cur; - - // check if it's not a macro, and let plugin handle it, if so - - if ( mpPlugin ) - { - skip_token_back( cur ); - - char* tmp = cur; - - if ( mpPlugin->CanUnderstandContext( tmp, _gSrcEnd, mpCurCtx ) ) - { - cur = tmp; - - mpPlugin->ParseContext( _gSrcStart, cur, _gSrcEnd, mpCurCtx ); - - isAMacro = TRUE; - - return FALSE; - } - } - - spOperation* pOp = new spOperation(); - - pOp->mSrcLineNo = lineNo; - pOp->mSrcOffset = int( start - _gSrcStart ); - pOp->mHeaderLength = int( bracketPos - start ); - - mpCurCtx->AddMember( pOp ); - pOp->mVisibility = mCurVis; - - // add comments about operation - AttachComments( *pOp, cur ); - - // go backwards to method name - skip_token_back( cur ); - - pOp->mName = get_token_str( cur ); - - // go backwards to method return type - skip_next_token_back( cur ); - - if ( cur >= start ) - - pOp->mRetType = string( start, size_t( cur-start ) ); - - arrange_indirection_tokens_between( pOp->mRetType, pOp->mName ); - - cur = savedPos; - restore_line_no( tmpLnNo ); - - // now, enter operation context - mpCurCtx = pOp; - - return TRUE; -} - -bool CJSourceParser::ParseArguments( char*& cur ) -{ - // DANGER-MACROS:: - - // now cursor position is right after the first opening bracket - // of the function declaration - - char* blocks [16]; // used exclusivelly for iterative "lean out" - // of macros and misc. not-obviouse grammar - // (dirty,, but we cannot do it very nice, - // we're not preprocessor-free C/C++ code) - int blockSizes[16]; - - do - { - size_t blocksSkipped = 0; - - get_next_token( cur ); - - bool first_blk = 1; - - while( *cur != ')' && *cur != ',' ) - { - blocks[blocksSkipped] = cur; - - if ( first_blk ) - { - char* prev = cur; - skip_token( cur ); - - blockSizes[blocksSkipped] = size_t(cur-prev); - - first_blk = 0; - } - else - blockSizes[blocksSkipped] = skip_block( cur ); - - get_next_token( cur ); - ++blocksSkipped; - } - - - if ( blocksSkipped == 1 ) - { - // check if the empty arg. list stressed with "void" inside - if ( cmp_tokens_fast( blocks[0] , "void", 4 ) ) - return TRUE; - - // FIXME:: TBD:: K&R-style function declarations! - - // if only one block enclosed, than it's probably - // some macro, there should be at least two blocks, - // one for argument type and another for it's identifier - return FALSE; - } - - if ( blocksSkipped == 0 ) - { - if ( *cur == 10 ) ++_gLineNo; - ++cur; - break; // function without paramters - } - - // we should be in the operation context now - spOperation* pOp = (spOperation*)mpCurCtx; - - spParameter* pPar = new spParameter(); - - pOp->AddMember( pPar ); - // FOR NOW:: line number is not exact if argument list is mutiline - pPar->mSrcLineNo = get_line_no(); - - size_t nameBlock = blocksSkipped - 1; - size_t typeBlock = nameBlock - 1; - - // check if default values present - if ( *blocks[typeBlock] == '=' ) - { - // expressions like "int = 5" are ignored, - // since name for paramters is required - if ( blocksSkipped == 3 ) - { - if ( *cur == ')' ) - { - ++cur; - break; - } - else - continue; - } - - pPar->mInitVal = string( blocks[nameBlock], blockSizes[nameBlock] ); - - nameBlock = nameBlock - 2; // skip '=' token and default value block - typeBlock = nameBlock - 1; - } - - // attach comments about the parameter - AttachComments( *pPar, blocks[nameBlock] ); - - // retrieve argument name - pPar->mName = string( blocks[nameBlock], blockSizes[nameBlock] ); - - // retreive argument type - - size_t len = blockSizes[ typeBlock ]; - len = size_t ( (blocks[ typeBlock ] + len) - blocks[ 0 ] ); - - pPar->mType = string( blocks[0], len ); - - arrange_indirection_tokens_between( pPar->mType, pOp->mName ); - - if ( *cur == ')' ) - { - ++cur; - break; - } - - ++cur; // skip comma - get_next_token(cur); - - } while(1); - - // check if it was really a function not a macro, - // if so, than it should be terminated with semicolon ';' - // or opening implemenetaton bracket '{' - - char* tok = cur; - - int tmpLnNo; - store_line_no( tmpLnNo ); - - do - { - if ( *tok == '{' || *tok == ';' ) - { - restore_line_no(tmpLnNo); - return TRUE; - } - - // check for unexpected tokens - if ( *tok == '=' || *tok == '0' ) - { - skip_token(tok); - if ( !get_next_token(tok) ) return FALSE; - continue; - } - - if ( *tok == '}' ) return FALSE; - - // if initialization list found - if ( *tok == ':' ) - { - restore_line_no(tmpLnNo); - return TRUE; - } - - if ( cmp_tokens_fast( tok, "const", 5 ) ) - { - skip_token(tok); - if ( !get_next_token(tok) ) return FALSE; - continue; - } - - if ( CheckVisibilty( tok ) ) return FALSE; - - // if next context found - if ( is_keyword( tok ) ) return FALSE; - - skip_token(tok); - if ( !get_next_token(tok) ) return FALSE; - - } while(1); - - return TRUE; -} - -void CJSourceParser::ParseMemberVar( char*& cur ) -{ - MMemberListT& members = mpCurCtx->GetMembers(); - - bool firstMember = 1; - - size_t first = 0; - - string type; - - // jump to the end of statement - // and start collecting same-type varibles - // back-to-front towards the type identifier - - skip_statement( cur ); - char* savedPos = cur; - - int tmpLnNo; - store_line_no( tmpLnNo ); - - --cur; // rewind back to ';' - - do - { - spAttribute* pAttr = new spAttribute(); - // FOR NOW:: line not is not exact, if member declaration is multiline - pAttr->mSrcLineNo = get_line_no(); - - mpCurCtx->AddMember( pAttr ); - pAttr->mVisibility = mCurVis; - - pAttr->mIsConstant = 0; - - if ( firstMember ) - { - firstMember = 0; - first = members.size() - 1;; - } - - skip_token_back( cur ); - - // attach comments about the attribute - AttachComments( *pAttr, cur ); - - pAttr->mName = get_token_str( cur ); - - // guessing that this going to be variable type - skip_next_token_back( cur ); - skip_token_back( cur ); - - pAttr->mType = get_token_str( cur ); - - // if comma, than variable list continues - // otherwise the variable type reached - stop - - if ( *cur == '=' ) - { - // yes, we've mistaken, it was not a identifier, - // but it's default value - pAttr->mInitVal = - pAttr->mName; - - // skip default value and '=' symbol - skip_next_token_back( cur ); - skip_token_back( cur ); - - pAttr->mName = get_token_str( cur ); - - skip_next_token_back( cur ); - skip_token_back( cur ); - } - - if ( *cur != ',' ) - { - type = get_token_str( cur ); - break; - } - - } while(1); - - // set up types for all collected (same-type) attributes; - while ( first != members.size() - 1 ) - { - spAttribute* pAttr = (spAttribute*)members[first]; - - pAttr->mType = type; - pAttr->mVisibility = mCurVis; - - arrange_indirection_tokens_between( pAttr->mType, pAttr->mName ); - - ++first; - } - - cur = savedPos; - restore_line_no( tmpLnNo ); - - clear_commets_queue(); - - -} - -void CJSourceParser::SkipFunction( char*& cur ) -{ - while ( *cur != '(' && cur < _gSrcEnd ) - { - if (*cur == 10 ) ++_gLineNo; - ++cur; - } - - skip_next_token_back( cur ); // go back and skip function identifier - skip_token_back( cur ); // go back and skip return type - - skip_block( cur ); // now, go ahead and skip whole declaration - - SkipFunctionBody( cur ); - -} - -void CJSourceParser::SkipFunctionBody( char*& cur ) -{ - // FIXME:: check for comments and quoted stirngs here - - bool hasDefinition = FALSE; - - while( *cur != '{' && *cur != ';' ) - { - if (*cur == 10 ) ++_gLineNo; - ++cur; - } - - if ( *cur == ';' ) - { - ++cur; - } - else - { - hasDefinition = TRUE; - - skip_scope_block( cur ); // skip the whole imp. - } - - if ( mpCurCtx->GetType() == SP_CTX_OPERATION ) - { - spOperation& op = *((spOperation*)mpCurCtx); - - int curOfs = int ( cur - _gSrcStart ); - - op.mContextLength = curOfs - mpCurCtx->mSrcOffset; - - op.mHasDefinition = hasDefinition; - - // separate scope resolution token from the name of operation - - for( size_t i = 0; i != op.mName.length(); ++i ) - { - if ( op.mName[i] == ':' && op.mName[i+1] == ':' ) - { - string unscoped( op.mName, i+2, op.mName.length() - ( i + 2 ) ); - - op.mScope = string( op.mName, 0, i ); - - op.mName = unscoped; - - break; - } - } - } -} - -bool CJSourceParser::CheckVisibilty( char*& cur ) -{ - size_t len = get_token_len( cur ); - - if ( cmp_tokens_fast( cur, "public:", len ) ) - { - mCurVis = SP_VIS_PUBLIC; - return TRUE; - } - - if ( cmp_tokens_fast( cur, "protected:", len ) ) - { - mCurVis = SP_VIS_PROTECTED; - return TRUE; - } - - if ( cmp_tokens_fast( cur, "private:", len ) ) - { - mCurVis = SP_VIS_PRIVATE; - return TRUE; - } - - return FALSE; -} - -void CJSourceParser::AddClassNode( char*& cur ) -{ - char* ctxStart = cur; - - skip_token( cur ); // skip 'class' keyword - if ( !get_next_token( cur ) ) return; - - // in C++ - if ( *cur == ':' ) - { - skip_token( cur ); - get_next_token( cur ); - } - - spClass* pClass = new spClass(); - - - mpCurCtx->AddMember( pClass ); - - // by default all class members are private - mCurVis = SP_VIS_PRIVATE; - - // attach comments about the class - AttachComments( *pClass, cur ); - - pClass->mSrcLineNo = get_line_no(); - - pClass->mSrcOffset = int( ctxStart - _gSrcStart ); - - char* nameTok = cur; - pClass->mName = get_token_str( cur ); - - bool isDerived = 0; - - // DANGER-MACROS:: - - do - { - skip_token( cur ); - if ( !get_next_token( cur ) ) return; - - if ( *cur == ':' ) - { - isDerived = 1; - - char* tok = cur; - - int tmpLn; - store_line_no( tmpLn ); - - skip_next_token_back( tok ); - skip_token_back( tok ); - - restore_line_no( tmpLn ); - - // class name should precend ':' colon, thus - // the one which was captured before was - // proablty something else (like __dllexport MyClass : ... ) - - if ( nameTok != tok ) - { - pClass->mName = get_token_str( tok ); - } - - } - - if ( *cur == '{' ) - break; - - if ( *cur == ',' ) - continue; - - size_t len = get_token_len( cur ); - - // skip neglectable C++ modifieres - if ( cmp_tokens_fast( cur, "public", len ) ) - continue; - - if ( cmp_tokens_fast( cur, "protected", len ) ) - continue; - - if ( cmp_tokens_fast( cur, "private", len ) ) - continue; - - if ( cmp_tokens_fast( cur, "virtual", len ) ) - continue; - - // skip neglectable JAVA modifieres - - if ( cmp_tokens_fast( cur, "extends", len ) ) - { - isDerived = 1; - continue; - } - - if ( cmp_tokens_fast( cur, "implements", len ) ) - { - isDerived = 1; - continue; - } - - // all we need to know is superclass or interface - - char* tok = cur; - int tmpLn; - store_line_no( tmpLn ); - - skip_token(tok); - get_next_token(tok); - - restore_line_no( tmpLn ); - - if ( *tok != ':' && *cur != ':' ) - - pClass->mSuperClassNames.push_back( string( cur, len ) ); - - } while(1); - - if ( !isDerived ) - { - int tmpLn; - store_line_no( tmpLn ); - - while ( pClass->mSuperClassNames.size() ) - - pClass->mSuperClassNames.erase( &pClass->mSuperClassNames[0] ); - - char* tok = cur; - - // some non-obviouse token was following "class" keyword - - // we've confused it with class name - thus now we're reverting this mistake - - skip_next_token_back( tok ); - skip_token_back( tok ); - - pClass->mName = get_token_str( tok ); - - restore_line_no( tmpLn ); - } - - - ++cur; // skip opening curly brace - - pClass->mHeaderLength = ( cur - ctxStart ); - - // now, enter the class context - mpCurCtx = pClass; - - clear_commets_queue(); -} - -void CJSourceParser::AddEnumNode( char*& cur ) -{ - // now the cursor is at "enum" keyword - char* start = cur; - - spEnumeration* pEnum = new spEnumeration(); - mpCurCtx->AddMember( pEnum ); - - pEnum->mSrcLineNo = get_line_no(); - - - AttachComments( *pEnum, cur ); - - skip_token( cur ); - if ( !get_next_token( cur ) ) return; - - // check if enumeration has got it's identifier - if ( *cur != '{' ) - { - pEnum->mName = get_token_str( cur ); - } - - if ( !skip_imp_block( cur ) ) return; - - get_string_between( start, cur, &pEnum->mEnumContent ); - - if ( get_next_token(cur) ) - { - // check if the identifier if after the {...} block - if ( *cur != ';' ) - - pEnum->mName = get_token_str( cur ); - } - - clear_commets_queue(); -} - -void CJSourceParser::AddTypeDefNode( char*& cur ) -{ - // now the cursor at the token next to "typedef" keyword - - if ( !get_next_token(cur) ) return; - - char* start = cur; - - spTypeDef* pTDef = new spTypeDef(); - mpCurCtx->AddMember( pTDef ); - - pTDef->mSrcLineNo = get_line_no(); - - AttachComments( *pTDef, cur ); - - skip_statement( cur ); - - int tmpLnNo; - store_line_no( tmpLnNo ); - - char* tok = cur-1; - skip_next_token_back( tok ); - - char* nameEnd = tok; - - skip_token_back( tok ); - - char* nameStart = tok; - - skip_next_token_back( tok ); - - char* typeEnd = tok; - - // check if it's function prototype - if ( *nameStart == ')' ) - { - typeEnd = nameStart+1; - - // skip argument list - while ( *nameStart != '(' ) --nameStart; - - // skip to function type definition - while ( *nameStart != ')' ) --nameStart; - - skip_next_token_back( nameStart ); - - nameEnd = nameStart; - - skip_token_back( nameStart ); - - if ( *nameStart == '*' ) ++nameStart; - } - - get_string_between( start, typeEnd, &pTDef->mOriginalType ); - - get_string_between( nameStart, nameEnd, &pTDef->mName ); - - clear_commets_queue(); - - restore_line_no( tmpLnNo ); -} diff --git a/utils/HelpGen/src/docripper.cpp b/utils/HelpGen/src/docripper.cpp deleted file mode 100644 index cdaff810e1..0000000000 --- a/utils/HelpGen/src/docripper.cpp +++ /dev/null @@ -1,568 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: No names yet. -// Purpose: Contrib. demo -// Author: Aleksandras Gluchovas -// Modified by: -// Created: 22/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Aleskandars Gluchovas -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include "docripper.h" - -#include - -// script templates - -// ***** currently only HTML versions of variouse templates available ***** // - -static const char* HTM_TopTempl = - -"\n\ -\n\n\n\n\n\ -

    $(NAME)

    \n\ -

      \n\ -$(REFLIST)\ -

    \n\n\ -"; - -static const char* HTM_ContentIdxTempl = - -"\ -\n\ -


    \n\ -

    $(NAME)

    \ -
      \n\ -$(REFLIST)\ -

    \n\n\ -"; - -static const char* HTM_SuperContentTempl = - -"\ -\n\ -


    \n\ -

    $(NAME)

    \ -$(BODY)\n\ -"; - -static const char* HTM_SubContentTempl = - -"\ -
    \n\ -


    \n\ -

    $(NAME)

    \ -$(BODY)\n\ -"; - -static const char* HTM_OutLineTempl = - -"\ -

    \n\ -$(NAME)

    \n\ -"; - -static const char* HTM_OutLine1Templ = - -"\ -

    \n\ -$(NAME)\n\ -

      \n\ -$(REFLIST)\ -
    \n\n\ -"; - -static const char* HTM_RefTempl = - -"\ -
  • $(NAME)\n\ -"; - -static const char* HTM_DeadRefTempl = - -"\ -
  • $(NAME)\n\ -"; - -/***** Implementation for class RipperDocGen *****/ - -RipperDocGen::RipperDocGen() - - : mTopTempl ( HTM_TopTempl ), - mContentIdxTempl ( HTM_ContentIdxTempl ), - mSuperContentTempl( HTM_SuperContentTempl ), - mSubContentTempl ( HTM_SubContentTempl ), - mOutLineTempl ( HTM_OutLineTempl ), - mOutLine1Templ ( HTM_OutLine1Templ ), - - mRefTempl ( HTM_RefTempl ), - mDeadRefTempl ( HTM_DeadRefTempl ), - - mpCurClassSect(0) -{ // topIndex is not referenced - mpTopIdx = new ScriptSection( "Source Code Contents" , "", &mTopTempl , 0 ); - mpClassIdx = new ScriptSection( "Classes Reference" , "", &mContentIdxTempl, &mRefTempl ); - mpEnumIdx = new ScriptSection( "Enumerations Reference" , "", &mContentIdxTempl, &mRefTempl ); - mpTypeDefIdx = new ScriptSection( "Type Definitions Reference" , "", &mContentIdxTempl, &mRefTempl ); - mpMacroIdx = new ScriptSection( "Macros Reference" , "", &mContentIdxTempl, &mRefTempl ); - mpGlobalVarsIdx = new ScriptSection( "Global Variables Reference" , "", &mContentIdxTempl, &mRefTempl ); - mpGlobalFuncIdx = new ScriptSection( "Global Functions Reference", "", &mContentIdxTempl, &mRefTempl ); - mpConstIdx = new ScriptSection( "Constants Reference" , "", &mContentIdxTempl, &mRefTempl ); - - // assemble top index - mpTopIdx->AddSection( mpClassIdx , 1 ); - mpTopIdx->AddSection( mpEnumIdx , 1 ); - mpTopIdx->AddSection( mpTypeDefIdx , 1 ); - mpTopIdx->AddSection( mpMacroIdx , 1 ); - mpTopIdx->AddSection( mpGlobalVarsIdx, 1 ); - mpTopIdx->AddSection( mpGlobalFuncIdx, 1 ); - mpTopIdx->AddSection( mpConstIdx , 1 ); - - // register reserved variables for index and description templates - ScriptSection::RegisterTemplate( mTopTempl ); - ScriptSection::RegisterTemplate( mContentIdxTempl ); - ScriptSection::RegisterTemplate( mSuperContentTempl ); - ScriptSection::RegisterTemplate( mSubContentTempl ); - ScriptSection::RegisterTemplate( mOutLineTempl ); - ScriptSection::RegisterTemplate( mOutLine1Templ ); - ScriptSection::RegisterTemplate( mRefTempl ); - ScriptSection::RegisterTemplate( mDeadRefTempl ); - - // create the top-most (interfile) context - mpFileBinderCtx = new spFile(); - - // the default script is HTML - mTags = get_HTML_markup_tags(); - - mpParser = 0; // no default parser! -} - -void RipperDocGen::Init( SourceParserBase* pParser ) -{ - mpParser = pParser; -} - -RipperDocGen::~RipperDocGen() -{ - delete mpFileBinderCtx; -} - -void RipperDocGen::AppendComments( spContext& fromContext, string& str ) -{ - if ( !fromContext.HasComments() ) return; - - size_t start = str.length(); - - str += mTags[TAG_BOLD].end; - str += mTags[TAG_PARAGRAPH].start; - - MCommentListT& lst = fromContext.GetCommentList(); - - for( size_t i = 0; i != lst.size(); ++i ) - { - - if ( i != 0 ) - - if ( lst[i]->StartsParagraph() ) - { - str += mTags[TAG_PARAGRAPH].start; - } - - str += lst[i]->mText; - } - - // remove new lines, and insert paragraph breaks - // if empty lines found - - size_t len = str.length(); - - for( size_t n = start; n != len; ++n ) - - if ( str[n] == 10 || - str[n] == 13 ) - { - if ( n + 2 < len ) - { - if ( ( str[n] == 13 && str[n+1] == 10 && // FIXME:: quick-hack - str[n+2] == 13 ) || - ( str[n] == 10 && str[n+1] == 10 ) - ) - { - str.insert( n + 1, "

    " ); // FIXME:: quick-hack - len += 3; - } - } - - str[n] = ' '; - } - - str += mTags[TAG_PARAGRAPH].end; -} - -void RipperDocGen::AppendMulitilineStr( string& st, string& mlStr ) -{ - st = mTags[TAG_FIXED_FONT].start; - st += mlStr; - st += mTags[TAG_FIXED_FONT].end; -} - -void RipperDocGen::AppendHighlightedSource( string& st, string source ) -{ - // FIXME:: below should not be fixed :) - char buf[1024*32]; - - // DBG::: - ASSERT( source.length() + 1 < sizeof(buf) ); - - strcpy( buf, source.c_str() ); - - // highlight things - mSrcPainter.Init(); - mSrcPainter.ProcessSource( buf, strlen(buf) ); - mSrcPainter.GetResultString( st, mTags ); -} - -bool RipperDocGen::CheckIfUncommented( spContext& ctx, ScriptSection& toSect ) -{ - if ( ctx.HasComments() ) return 0; - - toSect.AddReference( - new ScriptSection( GetScopedName( ctx ), "", 0, &mDeadRefTempl ) - ); - - return 1; -} - -ScriptTemplate* RipperDocGen::GetRefTemplFor( spContext& ctx ) -{ - if ( ctx.HasComments() ) - - return &mRefTempl; - else - return &mDeadRefTempl; -} - -string RipperDocGen::GetScopedName( spContext& ofCtx ) -{ - if ( ofCtx.IsInFile() ) return ofCtx.GetName(); - else - return ofCtx.GetOutterContext()->GetName() + - "::" + ofCtx.GetName(); -} - -void RipperDocGen::AddToCurrentClass( ScriptSection* pSection, spContext& ctx, - const char* subSectionName ) -{ - string sName; - - if ( ctx.mVisibility == SP_VIS_PROTECTED ) - - sName = "Protected members/"; - else - if ( ctx.mVisibility == SP_VIS_PRIVATE ) - - sName = "Private members/"; - else - sName = "Public members/"; - - sName += subSectionName; - - ScriptSection* pSect = mpCurClassSect->GetSubsection( sName.c_str() ); - - if ( CheckIfUncommented( ctx, *pSect ) ) - { - delete pSection; - return; - } - - pSect->AddReference( pSection ); - - mpCurClassSect->AddSection( pSection ); -} - -void RipperDocGen::LinkSuperClassRefs() -{ - MMemberListT clLst; - - // collect all classes in the context tree - mpFileBinderCtx->GetContextList( clLst, SP_CTX_CLASS ); - - for( size_t i = 0; i != clLst.size(); ++i ) - { - spClass& cl = *((spClass*)clLst[i]); - - // FIXME:: why sometimes GetUserData() returns NULL? - if ( !cl.GetUserData() ) - continue; - - ScriptSection* pClSect = (ScriptSection*)cl.GetUserData(); - ScriptSection* pSuperSect = pClSect->GetSubsection("Derived from"); - - for( size_t n = 0; n != cl.mSuperClassNames.size(); ++n ) - { - string& superClName = cl.mSuperClassNames[n]; - - spClass* pFound = NULL; - - string* name; - - for( size_t k = 0; k != clLst.size(); ++k ) - { - name = &clLst[k]->GetName(); - - if ( clLst[k]->GetName() == superClName ) - { - pFound = (spClass*)clLst[k]; - break; - } - } - - if ( !pFound ) - { - ScriptSection* pNotFound = - new ScriptSection( superClName, "", 0, &mDeadRefTempl ); - - pSuperSect->AddReference( pNotFound ); - } - else - if ( pFound->GetUserData() ) - - pSuperSect->AddReference( - (ScriptSection*)pFound->GetUserData() ); - } - } -} - -void RipperDocGen::ProcessFile( const char* sourceFile ) -{ - cout << "Processing file " << sourceFile << "..." << endl; - - spFile* pCtx = mpParser->ParseFile( sourceFile ); - - if ( pCtx == NULL ) - { - cout << "Cannot open file " << sourceFile << ", skipped..." << endl; - - return; - } - - VisitAll( *pCtx, TRUE ); - - mpFileBinderCtx->AddMember( pCtx ); -} - -// implementations of "visiting procedures" - -void RipperDocGen::VisitEnumeration( spEnumeration& en ) -{ - // FOR NOW:: do not reference "nameless" enums - if ( en.GetName() == "" ) return; - - if ( CheckIfUncommented( en, *mpEnumIdx ) ) - return; - - string body; - body += mTags[TAG_BOLD].start; - - AppendMulitilineStr( body, en.mEnumContent ); - - body += mTags[TAG_BOLD].end; - - string line; - AppendHighlightedSource( line, body ); - AppendComments( en, line ); - - mpEnumIdx->AddSection( - new ScriptSection( en.GetName(), line, - &mSubContentTempl, - GetRefTemplFor( en ) ), 1 - ); -} - -void RipperDocGen::VisitTypeDef( spTypeDef& td ) -{ - if ( CheckIfUncommented( td, *mpTypeDefIdx ) ) - return; - - string body; - body += mTags[TAG_BOLD].start; - body += "typdef "; - body += mTags[TAG_BOLD].end; - - AppendMulitilineStr( body, td.mOriginalType ); - body += td.mOriginalType; - body += ' '; - - body += mTags[TAG_BOLD].start; - body += td.GetName(); - body += mTags[TAG_BOLD].end; - - string line; - AppendHighlightedSource( line, body ); - AppendComments( td, line ); - - mpTypeDefIdx->AddSection( - new ScriptSection( td.GetName(), line, - &mSubContentTempl, - GetRefTemplFor( td ) ), TRUE - ); -} - -void RipperDocGen::VisitPreprocessorLine( spPreprocessorLine& pd ) -{ - if ( pd.mDefType != SP_PREP_DEF_REDEFINE_SYMBOL ) - - return; - - if ( CheckIfUncommented( pd, *mpMacroIdx ) ) - return; - - string body; - body += mTags[TAG_FIXED_FONT].start; - - string coloredLine = pd.mLine; - AppendHighlightedSource( coloredLine, pd.mLine ); - - AppendMulitilineStr( body, coloredLine ); - - body += mTags[TAG_FIXED_FONT].end; - - AppendComments( pd, body ); - - mpMacroIdx->AddSection( - new ScriptSection( pd.GetName(), body, - &mSubContentTempl, - GetRefTemplFor( pd ) ), TRUE - ); -} - -void RipperDocGen::VisitClass( spClass& cl ) -{ - // FOR NOW:: do not document nested classes - - // nicier visiting method yet needed - - if ( cl.IsInClass() ) - { - SkipChildren(); // spVisitor's method - return; - } - - string body; - AppendComments( cl, body ); - - mpCurClassSect = - new ScriptSection( cl.GetName(), body, &mSuperContentTempl, &mRefTempl ); - - // set up reference in the class context, pointing back - // to the section where this class is represented - cl.SetUserData( mpCurClassSect ); - - ScriptSection* pSuper = new ScriptSection( "Derived from" ,"", &mOutLine1Templ,0, 1 ); - - ScriptSection* pPublic = new ScriptSection( "Public members" ,"", &mOutLineTempl,0, 1 ); - ScriptSection* pProtected = new ScriptSection( "Protected members" ,"", &mOutLineTempl,0, 1 ); - ScriptSection* pPrivate = new ScriptSection( "Private members" ,"", &mOutLineTempl,0, 1 ); - - pPublic->AddSection( new ScriptSection( "Operations", "", &mOutLine1Templ, 0, 1 ) ); - pPublic->AddSection( new ScriptSection( "Attributes", "", &mOutLine1Templ, 0, 1 ) ); - - - pProtected->AddSection( new ScriptSection( "Operations", "", &mOutLine1Templ, 0, 1 ) ); - pProtected->AddSection( new ScriptSection( "Attributes", "", &mOutLine1Templ, 0, 1 ) ); - - - pPrivate->AddSection( new ScriptSection( "Operations", "", &mOutLine1Templ, 0, 1 ) ); - pPrivate->AddSection( new ScriptSection( "Attributes", "", &mOutLine1Templ, 0, 1 ) ); - - mpCurClassSect->AddSection( pSuper ); - mpCurClassSect->AddSection( pPublic ); - mpCurClassSect->AddSection( pProtected ); - mpCurClassSect->AddSection( pPrivate ); - - mpClassIdx->AddSection( mpCurClassSect, TRUE ); -} - -void RipperDocGen::VisitAttribute( spAttribute& attr ) -{ - string body; - body += mTags[TAG_BOLD].start; - body += attr.mType; - body += mTags[TAG_BOLD].end; - - body += mTags[TAG_ITALIC].start; - body += ' '; - body += attr.GetName(); - body += mTags[TAG_ITALIC].end; - - string line; - AppendHighlightedSource( line, body ); - AppendComments( attr, line ); - - ScriptSection* pSection = - new ScriptSection( GetScopedName( attr ), line, - &mSubContentTempl, - GetRefTemplFor( attr ) ); - - if ( attr.mIsConstant ) - - mpConstIdx->AddSection( pSection, TRUE ); - - else - if ( !attr.IsInClass() ) - { - if ( CheckIfUncommented( attr, *mpGlobalVarsIdx ) ) - return; - - mpGlobalVarsIdx->AddSection( pSection, TRUE ); - } - else - - AddToCurrentClass( pSection, attr, "Attributes" ); -} - -void RipperDocGen::VisitOperation( spOperation& op ) -{ - string body; - - AppendHighlightedSource( body, op.GetFullName(mTags) ); - - AppendComments( op, body ); - - ScriptSection* pSection = - new ScriptSection( GetScopedName( op ), body, - &mSubContentTempl, - GetRefTemplFor( op ) ); - - if ( !op.IsInClass() ) - { - if ( CheckIfUncommented( op, *mpGlobalFuncIdx ) ) - return; - - mpGlobalFuncIdx->AddSection( pSection, 1 ); - } - else - AddToCurrentClass( pSection, op, "Operations" ); -} - -bool RipperDocGen::OnSaveDocument( ScriptStream& stm ) -{ - LinkSuperClassRefs(); - - // FOR NOW:: doesn't work yet - //mpTopIdx->RemoveEmptySections(); - - return 1; // saving can proceed now -} - diff --git a/utils/HelpGen/src/ifcontext.cpp b/utils/HelpGen/src/ifcontext.cpp deleted file mode 100644 index 3b2698a639..0000000000 --- a/utils/HelpGen/src/ifcontext.cpp +++ /dev/null @@ -1,295 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: No names yet. -// Purpose: Contrib. demo -// Author: Aleksandras Gluchovas -// Modified by: -// Created: 27/12/98 -// RCS-ID: $Id$ -// Copyright: (c) Aleskandars Gluchovas -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "ifcontext.h" -#pragma interface -#endif - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include -#include - -#include "ifcontext.h" - -/***** Implementation for class spInterFileContext *****/ - -size_t spInterFileContext::GetFileNo( const string& fname ) -{ - for( size_t i = 0; i != mFiles.size(); ++i ) - - if ( fname == mFiles[i] ) return i; - - wxASSERT(0); // DBG:: - return 0; -} - -size_t spInterFileContext::GetFileNoOfContext( spContext& ctx ) -{ - spContext* pCtx = ctx.GetEnclosingContext( SP_CTX_FILE ); - - // DBG:: outer-file context should be present - wxASSERT( pCtx && pCtx->GetType() == SP_CTX_FILE ); - - return GetFileNo( ((spFile*)pCtx)->mFileName ); -} - -/*** public interface ***/ - -spInterFileContext::spInterFileContext() -{} - -spInterFileContext::~spInterFileContext() -{} - -void spInterFileContext::AddFile( const string& fname, const string& content ) -{ - mFiles.push_back( fname ); - mContents.push_back( content ); -} - -void spInterFileContext::RemoveContext( spContext& ctx ) -{ - wxASSERT( ctx.PositionIsKnown() ); // DBG:: should be checked by-user code - - size_t fNo = GetFileNoOfContext( ctx ); - - mDeletionMarks.push_back( spBookmark( ctx.mSrcOffset, ctx.mContextLength, fNo ) ); -} - -void spInterFileContext::InsertBookmarkSorted( BookmarkListT& lst, spBookmark& mark ) -{ - for( size_t i = 0; i != lst.size(); ++i ) - - if ( lst[i].mFrom > mark.mFrom ) - { - lst.insert( &lst[i], mark ); - return; - } - - lst.push_back( mark ); -} - -void spInterFileContext::DoAppendSourceFragment( string& source, - string& result, - size_t pos, size_t len ) -{ - mFiltered.erase( mFiltered.begin(), mFiltered.end() ); - - size_t i; - - for( i = 0; i != mDeletionMarks.size(); ++i ) - { - spBookmark& mark = mDeletionMarks[i]; - - if ( mark.mFileNo == mCurFileNo && - mark.mFrom >= pos && mark.mFrom < pos + len ) - - InsertBookmarkSorted( mFiltered, mark ); - } - - size_t cur = pos; - - for( i = 0; i != mFiltered.size(); ++ i ) - { - spBookmark& mark = mFiltered[i]; - - result.append( source, cur, ( (size_t)mark.mFrom - cur ) ); - - cur = size_t( mark.mFrom + mark.mLen ); - - if ( cur >= pos + len ) // check if we've overstepped the current source-fragment - { - wxASSERT(0); // DBG:: with current imp. this should not happen - - cur = pos + len; break; - } - } - - result.append( source, cur, ( pos + len ) - cur ); -} - -void spInterFileContext::GenerateContextBody( spContext& ctx, - string& source, - string& result, - size_t& lastSavedPos, - size_t& lastKnownPos ) -{ - if ( ctx.PositionIsKnown() ) - - lastKnownPos = ctx.mSrcOffset; - - if ( ctx.IsVirtualContext() ) - { - // add fragment accumulated before this context - - DoAppendSourceFragment( source, result, - size_t(lastSavedPos), - size_t(lastKnownPos - lastSavedPos) ); - - // add context body - - result += ctx.GetVirtualContextBody(); - - lastSavedPos = lastKnownPos; - - if ( ctx.PositionIsKnown() ) - { - if ( ctx.VitualContextHasChildren() ) - { - lastKnownPos = ctx.mSrcOffset + ctx.mHeaderLength; - - lastSavedPos = lastKnownPos; - } - else - { - lastKnownPos = ctx.mSrcOffset + ctx.mContextLength; - - lastSavedPos = lastKnownPos; - - return; // have not children - } - } - } - - MMemberListT& lst = ctx.GetMembers(); - - for( size_t i = 0; i != lst.size(); ++i ) - - GenerateContextBody( *lst[i], source, result, lastSavedPos, lastKnownPos ); - - if ( ctx.IsVirtualContext() ) - { - if ( ctx.VitualContextHasChildren() && - - ctx.GetFooterOfVirtualContextBody() != "" ) - { - // append the reminder space after children of the context - - DoAppendSourceFragment( result, source, - size_t(lastSavedPos), - size_t(lastKnownPos - lastSavedPos) ); - - // add footer - result += ctx.GetFooterOfVirtualContextBody(); - - lastKnownPos = ctx.mSrcOffset + ctx.mContextLength; - - lastSavedPos = lastKnownPos; - } - } - - if ( ctx.PositionIsKnown() ) - - lastKnownPos = ctx.mSrcOffset + ctx.mContextLength; -} - -void spInterFileContext::GenrateContents() -{ - MMemberListT& lst = GetMembers(); - - for( size_t f = 0; f != lst.size(); ++f ) - { - string& fname = ((spFile*)lst[f])->mFileName; - - size_t fileNo = GetFileNo( fname ); - - string& source = mContents[ fileNo ]; - - string result; - - size_t lastKnownPos = 0, // the begining of the file is always "known" - lastSavedPos = 0; - - mCurFileNo = fileNo; - - GenerateContextBody( *lst[f], source, result, lastSavedPos, lastKnownPos ); - - // the end of file is always known - - lastKnownPos = mContents[ fileNo ].length(); - - // append the reminder - - DoAppendSourceFragment( source, result, - size_t(lastSavedPos), - size_t(lastKnownPos - lastSavedPos) ); - - // replace original contnet with newly generated one - - mContents[ fileNo ] = result; - } -} - -void spInterFileContext::ParseContents( SourceParserPlugin* pPlugin ) -{ - mDeletionMarks.erase( mDeletionMarks.begin(), mDeletionMarks.end() ); - - RemoveChildren(); // clean up top-level context - - mParser.SetPlugin( pPlugin ); - - for( size_t i = 0; i != mFiles.size(); ++i ) - { - char* s = (char*)(mContents[i].c_str()); - - spFile* pFCtx = mParser.Parse( s, s + mContents[i].length() ); - - pFCtx->mFileName = mFiles[i]; - - AddMember( pFCtx ); - } -} - -void spInterFileContext::WriteToFiles() -{ - for( size_t i = 0; i != mFiles.size(); ++i ) - { - FILE* fp = fopen( mFiles[i].c_str(), "w+t" ); - - if ( int(fp) > 0 ) - { - fwrite( mContents[i].c_str(), sizeof(char), mContents[i].length(), fp ); - - fclose( fp ); - } - } -} - -string spInterFileContext::GetBody( spContext* pCtx ) -{ - wxASSERT( pCtx->PositionIsKnown() ); // DBG:: should be checked by-user code - - string& source = mContents[ GetFileNoOfContext( *pCtx ) ]; - - return string( source.c_str() + pCtx->mSrcOffset, pCtx->mContextLength ); -} - -string spInterFileContext::GetHeader( spContext* pCtx ) -{ - wxASSERT( pCtx->PositionIsKnown() ); // DBG:: should be checked by-user code - - wxASSERT( pCtx->mHeaderLength != -1 ); // DBG:: -/- - - string& source = mContents[ GetFileNoOfContext( *pCtx ) ]; - - return string( source.c_str() + pCtx->mSrcOffset, pCtx->mHeaderLength ); -} diff --git a/utils/HelpGen/src/makefile.nt b/utils/HelpGen/src/makefile.nt deleted file mode 100644 index d1f107585e..0000000000 --- a/utils/HelpGen/src/makefile.nt +++ /dev/null @@ -1,66 +0,0 @@ -# -# File: makefile.nt -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile : Builds minimal example (MS VC++). -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -WXUSINGDLL=0 - -!include $(WXDIR)\src\ntwxwin.mak - -THISDIR = $(WXDIR)\utils\HelpGen\src -PROGRAM=HelpGen -EXTRAINC=-I..\include - -OBJECTS = $(PROGRAM).obj cjparser.obj ifcontext.obj markup.obj\ - scriptbinder.obj srcparser.obj sourcepainter.obj - -$(PROGRAM): $(PROGRAM).exe - -all: wx $(PROGRAM).exe - -wx: - cd $(WXDIR)\src\msw - nmake -f makefile.nt FINAL=$(FINAL) - cd $(THISDIR) - -wxclean: - cd $(WXDIR)\src\msw - nmake -f makefile.nt clean - cd $(THISDIR) - -$(PROGRAM).exe: $(DUMMYOBJ) $(WXLIB) $(OBJECTS) $(PROGRAM).res - $(link) @<< --out:$(PROGRAM).exe -$(LINKFLAGS) -$(DUMMYOBJ) $(OBJECTS) $(PROGRAM).res -$(LIBS) -<< - - -$(PROGRAM).obj: $(PROGRAM).$(SRCSUFF) $(DUMMYOBJ) - $(cc) @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -$(PROGRAM).res : $(PROGRAM).rc $(WXDIR)\include\wx\msw\wx.rc - $(rc) -r /i$(WXDIR)\include -fo$@ $(PROGRAM).rc - - -clean: - -erase *.obj - -erase *.exe - -erase *.res - -erase *.map - -erase *.sbr - -erase *.pdb diff --git a/utils/HelpGen/src/markup.cpp b/utils/HelpGen/src/markup.cpp deleted file mode 100644 index 9c0ad1d105..0000000000 --- a/utils/HelpGen/src/markup.cpp +++ /dev/null @@ -1,46 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: No names yet. -// Purpose: Contrib. demo -// Author: Aleksandras Gluchovas -// Modified by: -// Created: 22/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Aleskandars Gluchovas -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include "markup.h" - -static TagStructT htmlTags[] = -{ - { "","" }, // 0 - { "","" }, // 1 - { "

    ","
    " }, // 2 - { "","" }, // 3 - { "","" }, // 4 - { "","" }, // 5 - { "","" }, // 6 - { "

    ","

    " }, // 7 - { "
    ","" }, // 8 - { "

    ","

    " }, // 9 - { "

    ","

    " }, // 10 - { "

    ","

    " }, // 11 - { "
      ","
    " }, // 12 - { "
  • ","
  • " }, // 13 -}; - -MarkupTagsT get_HTML_markup_tags() -{ - return htmlTags; -} \ No newline at end of file diff --git a/utils/HelpGen/src/ripper_main.cpp b/utils/HelpGen/src/ripper_main.cpp deleted file mode 100644 index d5a3ce7dd5..0000000000 --- a/utils/HelpGen/src/ripper_main.cpp +++ /dev/null @@ -1,157 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: No names yet. -// Purpose: Contrib. demo -// Author: Aleksandras Gluchovas -// Modified by: -// Created: 22/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Aleskandars Gluchovas -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#ifdef WIN32 -#include -#endif - -#include - -#include "markup.h" // get_HTML_markup_tags() will be used - -#include "docripper.h" -#include "cjparser.h" // C++/Java will be parsed here - -/***** Main funciton *****/ - -#ifdef WIN32 - -// NOTE:: under Windows this generator parses all .h files -// int the current directory - -#include "direct.h" - - -void main(int argc, char** argv) -{ - cout << "C++/JAVA Source Documentation Generator (\"wxDocRipper\")" << endl - << "(C) 1998, Aleksandras Gluchovas (mailto:alex@soften.ktu.lt)" - << endl << endl; - - - RipperDocGen gen; - - // set up target script - gen.SetScriptMarkupTags( get_HTML_markup_tags() ); - - // setup source langauge - CJSourceParser* pParser = new CJSourceParser(); - - gen.Init( pParser ); - - // read process all files in the current directory - - struct _finddata_t c_file; // NT-specific? - long hFile; - - hFile = _findfirst( "*.h", &c_file ); - int total = 0; - - while( hFile != -1L ) - { - gen.ProcessFile( c_file.name ); - ++total; - - if ( _findnext( hFile, &c_file ) == -1L ) - break; - } - - - if ( total ) - { - cout << endl - << "*** storing source documenation into ./srcref.html ***" - << endl << endl; - - if ( !gen.SaveDocument( "srcref.html" ) ) - - cout << "\nERROR: document cannot be saved" << endl; - } - else - { - cout << "\nno .h files found in this directory - You must be running Windows now :-)" - << endl; - return; - } - - - printf( "\nTotal %d file(s) processed, done.\n", total ); -} - - -#else - -// NOTE:: on platfroms other then Windows this generator parses all files -// given from the command line - -int main(int argc, char** argv) -{ - cout << "C++/JAVA Source Documentation Generator (\"wxDocRipper\")" << endl - << "(C) 1998, Aleksandras Gluchovas (mailto:alex@soften.ktu.lt)" - << endl << endl; - - if ( argc < 2 ) - { - cout << "Usage: list of files with .h, .hpp, .cpp or .java extentions" - << endl; - return 1; - } - - int from = 1, no_dump = 0; - - if ( strcmp( argv[1], "-x" ) == 0 ) - { - from = 2; - no_dump = 1; - } - - RipperDocGen gen; - - // set up target script - gen.SetScriptMarkupTags( get_HTML_markup_tags() ); - - // setup source langauge - CJSourceParser* pParser = new CJSourceParser(); - - gen.Init( pParser ); - - for( int i = from; i != argc; ++i ) - - gen.ProcessFile( argv[i] ); - - if ( !no_dump ) - { - cout << endl - << "*** storing source documenation into ./srcref.html ***" - << endl << endl; - - if ( !gen.SaveDocument( "srcref.html" ) ) - - cout << "\nERROR: document cannot be saved" << endl; - } - - printf( "\nTotal %d file(s) processed, done.\n", argc-from ); - - return 0; -} - -#endif diff --git a/utils/HelpGen/src/scriptbinder.cpp b/utils/HelpGen/src/scriptbinder.cpp deleted file mode 100644 index 6d08955e16..0000000000 --- a/utils/HelpGen/src/scriptbinder.cpp +++ /dev/null @@ -1,618 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: No names yet. -// Purpose: Contrib. demo -// Author: Aleksandras Gluchovas -// Modified by: -// Created: 22/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Aleskandars Gluchovas -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include -#include -#include - -#include // import sprintf() (for doubles) -#include // import atoi() (for integers) - -#include "scriptbinder.h" - -// helper functions - -static size_t log2(size_t nr) -{ - size_t tmp = 0; - while (nr >= 2 ) - { - nr /= 2; - ++tmp; - } - - return tmp; -} - -/***** Implementation for class ScriptStream *****/ - -ScriptStream::ScriptStream() - : mpBuf(0), - mSize(0), - mCapacity(0) -{} - -ScriptStream::~ScriptStream() -{ - if ( mpBuf ) delete mpBuf; -} - -void ScriptStream::WriteBytes( const void* srcBuf, size_t count ) -{ - if ( !count ) return; - - // increase the capacity if necessary - if ( mSize + count > mCapacity ) - { - mCapacity = - ( 0x2 << (log2( mSize + count ) + 1 ) ); - - if ( mCapacity < 128 ) mCapacity = 128; - - char* oldBuf = mpBuf; - - mpBuf = new char[mCapacity]; - - if ( oldBuf ) - { - memcpy( mpBuf, oldBuf, mSize ); - delete oldBuf; - } - } - - // append new data - memcpy( &mpBuf[mSize], srcBuf, count ); - - mSize += count; -} - -ScriptStream& ScriptStream::operator<<( const char* str ) -{ - WriteBytes( str, strlen( str ) ); - - return *this; -} - -ScriptStream& ScriptStream::operator<<( const string& str ) -{ - if ( str.length() < 512 ) - { - char buf[512]; - size_t len = str.length(); - - for( size_t i = 0; i != len; ++i ) - buf[i] = str[i]; - - WriteBytes( buf, len ); - } - else - WriteBytes( str.c_str(), str.length() ); - - return *this; -} - -ScriptStream& ScriptStream::operator<<( char ch ) -{ - WriteBytes( &ch, 1 ); - - return *this; -} - -void ScriptStream::endl() -{ - char ch = '\n'; - WriteBytes( &ch, 1 ); -} - -/***** Implementation for class ScriptTemplate *****/ - -ScriptTemplate::ScriptTemplate( const string& templateText ) -{ - string tmp = templateText; - - mTText = (char*)malloc( tmp.length() + 1 ); - - strcpy( mTText, tmp.c_str() ); -} - -ScriptTemplate::~ScriptTemplate() -{ - for( size_t i = 0; i != mVars.size(); ++i ) - - delete mVars[i]; - - free( mTText ); -} - -bool ScriptTemplate::HasVar( const char* name ) -{ - for( size_t i = 0; i != mVars.size(); ++i ) - - if ( strcmp( mVars[i]->mName, name ) == 0 ) - - return 1; - - return 0; -} - -void ScriptTemplate::AddStringVar ( const char* name, int ofs ) -{ - mVars.push_back( new TVarInfo( name, ofs, TVAR_STRING ) ); -} - -void ScriptTemplate::AddIntegerVar( const char* name, int ofs ) -{ - mVars.push_back( new TVarInfo( name, ofs, TVAR_INTEGER ) ); -} - -void ScriptTemplate::AddDoubleVar ( const char* name, int ofs ) -{ - mVars.push_back( new TVarInfo( name, ofs, TVAR_DOUBLE ) ); -} - -void ScriptTemplate::AddObjectRefArray( const char* name, - int ofsRefToFirstObj, - int ofsObjSizeInt, - int ofsObjRefTempl - ) -{ - TArrayInfo* pInfo = new TArrayInfo( name ); - - mVars.push_back( pInfo ); - - pInfo->mRefOfs = ofsRefToFirstObj; - pInfo->mSizeIntOfs = ofsObjSizeInt; - pInfo->mObjRefTemplOfs = ofsObjRefTempl; -} - -inline void ScriptTemplate::PrintVar( TVarInfo* pInfo, - void* dataObj, - ScriptStream& stm ) -{ - char buf[128]; - - switch ( pInfo->mType ) - { - case TVAR_INTEGER : - { - sprintf(buf, "%d",*( (int*) ((char*)dataObj + pInfo->mOfs) ) ); - - stm.WriteBytes( buf, strlen(buf ) ); - break; - } - - case TVAR_STRING : - { - string& str = *( (string*) ((char*)dataObj+pInfo->mOfs) ); - - const char* cs = str.c_str(); -#ifdef DEBUG_WEIRED_OFFSETS - cout << "DBG:: cs address is " << (int)cs << endl; - cout << "DBG:: str address is " << (int)(&str) << endl; - cout << "DBG:: dataObj points to " << (int)dataObj << endl; - cout << "DBG:: pInfo->mOfs value is " << (int)pInfo->mOfs << endl; - cout << "DBG:: d+pInfo->mOfs is " << (int)((char*)dataObj + pInfo->mOfs) << endl; - cout << "DBG:: pInfo->mName is " << pInfo->mName << endl; - cout << "DBG:: pInfo->mType is " << pInfo->mType << endl; - cout << "DBG:: end of dump. " << endl; - - cout << "DBG:: cs value is " << endl << cs << endl; -#endif - stm.WriteBytes( cs, strlen(cs) ); - break; - } - - case TVAR_DOUBLE : - { - sprintf( buf, "%f", - *( (double*)( (char*)dataObj+pInfo->mOfs) ) ); - - stm.WriteBytes( buf, strlen(buf ) ); - break; - } - - case TVAR_REF_ARRAY : - { - TArrayInfo& info = *((TArrayInfo*)pInfo); - - int sz = *((int*) ( (char*)dataObj+info.mSizeIntOfs )); - if ( !sz ) - { - // DBG:: - int u; - ++u; - break; - } - - int* array = *((int**)( (char*)dataObj+info.mRefOfs )); - - ScriptTemplate* pRefTempl; - - for( int i = 0; i != sz; ++i ) - { - pRefTempl = - *((ScriptTemplate**)((char*)(array[i])+info.mObjRefTemplOfs)); - - pRefTempl->PrintScript( (void*)array[i], stm ); - } - - break; - } - - default : break; - } -} - -void ScriptTemplate::PrintScript( void* dataObj, ScriptStream& stm ) -{ - char* cur = mTText; - - // template parsing loop - do - { - char* start = cur; - - while( *cur != '\0' && *cur != '$' ) ++cur; - - // flush text collected between variables - stm.WriteBytes( start, cur - start ); - - if ( *cur == '\0' ) break; - - cur += 2; // skip to the name of the var - - start = cur; - - while( *cur != ')' ) ++cur; - - // put terminating zero temorarely - - *cur = '\0'; - - // look up variable - - size_t sz = mVars.size(); - bool found = 0; - - for( size_t i = 0; i != sz; ++i ) - { - if ( strcmp( mVars[i]->mName, start ) == 0 ) - { - PrintVar( mVars[i], dataObj, stm ); - - *cur = ')'; // remove terminating zero - ++cur; - found = 1; - break; - } - } - - // variable referred by template script is not - // registered to this tempalte object - ASSERT( found ); - - } while(1); -} - -/***** implementation for class ScriptSection *****/ - -int ScriptSection::mIdCounter = 0; - -ScriptSection::ScriptSection( const string& name, - const string& body, - ScriptTemplate* pSectionTemplate, - ScriptTemplate* pReferenceTemplate, - bool autoHide, - bool sorted - ) - : mpParent ( NULL ), - - mName ( name ), - mBody ( body ), - - mAutoHide( autoHide ), - mSortOn ( sorted ), - - mpSectTempl( pSectionTemplate ), - mpRefTempl ( pReferenceTemplate ), - - mRefCount( 0 ), - mArrSize( 0 ) -{ - // generate GUID - - char buf[32]; - sprintf( buf, "%d", ++mIdCounter ); - mId = buf; -} - -ScriptSection::~ScriptSection() -{ - SectListT lst = mSubsections; - - while( mSubsections.size() ) - - mSubsections[0]->RemoveRef(); - - for( size_t i = 0; i != mReferences.size(); ++i ) - - mReferences[i]->RemoveRef(); -} - -void ScriptSection::AddRef() -{ - ++mRefCount; -} - -void ScriptSection::RemoveRef() -{ - if ( !mRefCount || !(--mRefCount) ) - { - if (mpParent) - { - // remove ourselves from parent's list - - SectListT& lst = mpParent->mSubsections; - for( size_t i = 0; i != lst.size(); ++i ) - - if ( lst[i] == this ) - { - lst.erase( &lst[i] ); - break; - } - } - - delete this; - } -} - -ScriptSection* ScriptSection::GetSubsection( const char* name ) -{ - // FOR NOW:: fixed section name length - char buf[128]; - - size_t cur = 0; - - while( name[cur] && name[cur] != '/' ) - { - buf[cur] = name[cur]; - ++cur; - } - - ASSERT( cur < sizeof(buf) ); - - buf[cur] = '\0'; - - size_t sz = mSubsections.size(); - - for( size_t i = 0; i != sz; ++i ) - { - // DBG:: - //ScriptSection& sect = *mSubsections[i]; - - if ( mSubsections[i]->mName == buf ) - { - if ( name[cur] == '/' ) - - // search recursivelly - return mSubsections[i]->GetSubsection( &name[cur+1] ); - else - return mSubsections[i]; - } - } - - return 0; -} - -void ScriptSection::AddSection( ScriptSection* pSection, - bool addToReferencesToo - ) -{ - mSubsections.push_back( pSection ); - - pSection->AddRef(); - - // can add section to multiple containers - ASSERT( pSection->mpParent == 0 ); - - pSection->mpParent = this; - - if ( addToReferencesToo ) - - AddReference( pSection ); -} - -void ScriptSection::AddReference( ScriptSection* pReferredSection ) -{ - mReferences.push_back( pReferredSection ); - - pReferredSection->AddRef(); - - // set up mandatory fields used by ScriptTemplate - mArrSize = mReferences.size(); - if ( mArrSize ) - mRefFirst = (void*)&mReferences[0]; -} - -SectListT& ScriptSection::GetSubsections() -{ - return mSubsections; -} - -// static method: -void ScriptSection::RegisterTemplate( ScriptTemplate& sectionTempalte ) -{ - int nameOfs, bodyOfs, idOfs, - arrRefOfs, arrSizeOfs, refTemplOfs; - - // obtaining offsets of member vars - - GET_VAR_OFS( ScriptSection, mName, &nameOfs ) - GET_VAR_OFS( ScriptSection, mBody, &bodyOfs ) - GET_VAR_OFS( ScriptSection, mId, &idOfs ) - GET_VAR_OFS( ScriptSection, mRefFirst, &arrRefOfs ) - GET_VAR_OFS( ScriptSection, mArrSize, &arrSizeOfs ) - - GET_VAR_OFS( ScriptSection, mpRefTempl, &refTemplOfs ) - - // registering member variables with given script template - - sectionTempalte.AddStringVar( "NAME", nameOfs ); - sectionTempalte.AddStringVar( "BODY", bodyOfs ); - sectionTempalte.AddStringVar( "ID", idOfs ); - - sectionTempalte.AddObjectRefArray( "REFLIST", - arrRefOfs, arrSizeOfs, refTemplOfs ); -} - -void ScriptSection::Print( ScriptStream& stm ) -{ - // TBD:: sorting - - // print out this content first - if ( mpSectTempl ) - - mpSectTempl->PrintScript( this, stm ); - - // attach contents subsections at the end of this content - - for( size_t i = 0; i != mSubsections.size(); ++i ) - - mSubsections[i]->Print( stm ); -} - -void ScriptSection::DoRemoveEmptySections(int& nRemoved, SectListT& removedLst) -{ - for( size_t i = 0; i != mSubsections.size(); ++i ) - { - ScriptSection& sect = *mSubsections[i]; - - sect.DoRemoveEmptySections( nRemoved, removedLst ); - - if (sect.mAutoHide ) - - if ( sect.mReferences.size() == 0 ) - { - bool found = 0; - for( size_t k = 0; k != removedLst.size(); ++k ) - - if ( removedLst[k] == § ) - { - found = 1; - break; - } - - if ( !found ) - { - removedLst.push_back( § ); - ++nRemoved; - - delete § - --i; - } - } - } -} - -void ScriptSection::DoRemoveDeadLinks( SectListT& removedLst) -{ - size_t dsz = removedLst.size(); - - for( size_t i = 0; i != mSubsections.size(); ++i ) - { - mSubsections[i]->DoRemoveDeadLinks( removedLst ); - } - - for( size_t n = 0; n != mReferences.size(); ++n ) - { - for( size_t k = 0; k != dsz; ++k ) - - if ( removedLst[k] == mReferences[n] ) - { - mReferences.erase( &mReferences[n] ); - --n; - - // set up mandatory fields used by ScriptTemplate - mArrSize = mReferences.size(); - if ( mArrSize ) - mRefFirst = (void*)&mReferences[0]; - - break; - } - } -} - - -void ScriptSection::RemoveEmptySections() -{ - // FIXME:: this is very_very_very slow alg.! +"doesn't work" - - int nRemoved = 0; - - do - { - SectListT removedLst; - nRemoved = 0; - - DoRemoveEmptySections( nRemoved, removedLst ); - - DoRemoveDeadLinks( removedLst ); - } - while( nRemoved ); -} - -/***** Iimplementation for class DocGeneratorBase *****/ - -bool DocGeneratorBase::SaveDocument( const char* fname, - const char* fopenOptions, - ScriptSection* pFromSection - ) -{ - FILE* fp = fopen( fname, fopenOptions ); - - if ( (int)fp == -1 ) return 0; - - ScriptStream stm; - - // check if derived class agrees about saving it - if ( !OnSaveDocument( stm ) ) return 0; - - if ( pFromSection ) - - pFromSection->Print( stm ); - else - { - ScriptSection* pTopSect = GetTopSection(); - ASSERT( pTopSect ); - pTopSect->Print( stm ); - } - - size_t nWrite = fwrite( stm.GetBuf(), 1, stm.GetBufSize(), fp ); - - if ( nWrite != stm.GetBufSize() ) return 0; - - fclose( fp ); - - return 1; - - // that^s it -} diff --git a/utils/HelpGen/src/sourcepainter.cpp b/utils/HelpGen/src/sourcepainter.cpp deleted file mode 100644 index 9e24ea95dd..0000000000 --- a/utils/HelpGen/src/sourcepainter.cpp +++ /dev/null @@ -1,676 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: No names yet. -// Purpose: Contrib. demo -// Author: Aleksandras Gluchovas -// Modified by: -// Created: 22/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Aleskandars Gluchovas -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#if defined( wxUSE_TEMPLATE_STL ) - - #include -#else - - #include - -#endif - -#include "sourcepainter.h" - -const int MAX_KEYWORD_LEN = 16; - -struct KeywordT -{ - char keyWord[MAX_KEYWORD_LEN]; - int rank; -}; - -// source fragment ranks : - -// 0 - nomral text -// 1 - basic types -// 2 - reserved words - -// multil-language keywords map - -static KeywordT __gKeyWords[] = -{ - { "for", 1 }, - { "FOR", 1 }, - { "For", 1 }, - - { "next", 1 }, - { "Next", 1 }, - { "NEXT", 1 }, - - { "if", 1 }, - { "If", 1 }, - { "IF", 1 }, - - { "then", 1 }, - { "Then", 1 }, - { "THEN", 1 }, - - { "else", 1 }, - { "Else", 1 }, - { "ELSE", 1 }, - - { "do", 1 }, - { "Do", 1 }, - { "DO", 1 }, - - - { "break", 1 }, - { "Break", 1 }, - { "BREAK", 1 }, - - { "continue", 1 }, - - { "goto", 1 }, - { "Goto", 1 }, - { "GOTO", 1 }, - - { "switch", 1 }, - { "default", 1 }, - { "case", 1 }, - - { "repeat", 1 }, - { "Repeat", 1 }, - { "REPEAT", 1 }, - - { "until", 1 }, - { "Until", 1 }, - { "UNTIL", 1 }, - - { "return", 1 }, - { "Return", 1 }, - { "RETURN", 1 }, - - { "unit", 1 }, - { "Unit", 1 }, - { "UNIT", 1 }, - - { "procedure", 1 }, - { "Procedure", 1 }, - { "PROCEDURE", 1 }, - - { "function", 1 }, - { "Function", 1 }, - { "FUNCTION", 1 }, - - { "begin", 1 }, - { "Begin", 1 }, - { "BEGIN", 1 }, - - { "End", 1 }, - { "END", 1 }, - - //////////////////////////////////////////////////// - - { "enum", 1 }, - { "static", 1 }, - { "const", 1 }, - { "mutable", 1 }, - { "volatile", 1 }, - { "__asm", 1 }, - { "asm", 1 }, - - { "typeid", 1 }, - { "sizeof", 1 }, - { "typeof", 1 }, - - - { "native", 1 }, - - { "#include", 1 }, - { "#define", 1 }, - { "#def", 1 }, - { "#undef", 1 }, - { "#ifdef", 1 }, - { "#ifndef", 1 }, - { "#if", 1 }, - { "#endif", 1 }, - { "#elif", 1 }, - { "#else", 1 }, - { "#pragma", 1 }, - { "#line", 1 }, - - { "package", 1 }, - { "import", 1 }, - { "export", 1 }, - - //////////////////////////////////////////////////// - - { "dynamic_cast", 1 }, - { "const_cast", 1 }, - - //////// some hacks for VB ///////// - - { "sub", 1 }, - { "Sub", 1 }, - { "SUB", 1 }, - { "as", 1 }, - { "As", 1 }, - { "AS", 1 }, - - /////// data types /////// - - { "int" , 1 }, - { "integer", 1 }, - { "Integer", 1 }, - { "INTEGER", 1 }, - - { "real", 1 }, - { "Real", 1 }, - { "REAL", 1 }, - - { "float", 1 }, - { "Float", 1 }, - { "FLOAT", 1 }, - - { "char", 1 }, - { "Char", 1 }, - { "CHAR", 1 }, - - { "register", 1 }, - - { "string", 1 }, - { "String", 1 }, - { "STRING", 1 }, - - { "array", 1 }, - { "Array", 1 }, - { "ARRAY", 1 }, - - { "packed", 1 }, - { "Packed", 1 }, - { "PACKED", 1 }, - - { "property", 1 }, - { "Property", 1 }, - { "PROPERTY", 1 }, - - { "unsigned", 1 }, - - { "long", 1 }, - { "double", 1 }, - { "short", 1 }, - { "bool", 1 }, - - { "longint", 1 }, - { "Longint", 1 }, - { "LONGINT", 1 }, - - { "extended", 1 }, - { "Extended", 1 }, - { "EXTENTED", 1 }, - - { "pointer", 1 }, - { "Pointer", 1 }, - { "POINTER", 1 }, - - { "and", 1 }, - { "And", 1 }, - { "AND", 1 }, - { "or", 1 }, - { "Or", 1 }, - { "OR", 1 }, - { "xor", 1 }, - { "Xor", 1 }, - { "XOR", 1 }, - - { "void", 1 }, - { "__stdcall", 1 }, - { "__declspec", 1 }, - { "extern", 1 }, - { "stdcall", 1 }, - { "dllimport", 1 }, - { "dllexport", 1 }, - { "__cdecl", 1 }, - { "cdecl", 1 }, - { "template", 1 }, - { "typedef", 1 }, - { "naked", 1 }, - - { "try", 1 }, - { "catch", 1 }, - { "throw", 2 }, // C++ - { "throws", 1 }, // Java - - - { "finalize", 1 }, - - // "STL-suport" - - { "size_t", 1 }, - { "NPOS", 1 }, - { "vector", 1 }, - { "list", 1 }, - { "map", 1 }, - { "multimap", 1 }, - - { "external", 1 }, - { "External", 1 }, - { "EXTERNAL", 1 }, - - //////////// meta-information ////////////// - - { "virtual", 2 }, - { "Virtual", 2 }, - - { "override", 2 }, - { "Override", 2 }, - - { "class", 2 }, - { "Class", 2 }, - { "CLASS", 2 }, - - { "struct", 2 }, - { "union", 2 }, - - { "record", 2 }, - { "Record", 2 }, - { "RECORD", 2 }, - - { "form", 1 }, - { "Form", 1 }, - { "FORM", 1 }, - - { "namespace", 2 }, - - { "interface" , 2 }, - { "abstract", 2 }, - - { "Interface" , 2 }, - { "INTERFACE" , 2 }, - - { "implementation", 2 }, - { "Implementation", 2 }, - { "IMPLEMENTATION", 2 }, - - { "label", 2 }, - { "Label", 2 }, - { "LABEL", 2 }, - - { "implements", 2 }, - - { "public", 2 }, - { "private", 2 }, - { "protected", 2 }, - - { "this", 2 }, - { "This", 2 }, - { "THIS", 2 }, - - { "new", 2 }, - { "New", 2 }, - { "NEW", 2 }, - - { "delete", 2 }, - { "inline", 2 }, - - { "operator", 2 }, - - { "Inherited", 2 }, - { "Inherited", 2 }, - - { "final", 2 }, - { "implements", 2 }, - { "super", 2 }, - - // even more... - { "java", 2 }, - { "Java", 2 }, - { "JAVA", 2 }, - { "delphi", 2 }, - { "Delphi", 2 }, - { "SmallTalk", 2 }, - { "Smalltalk", 2 }, - { "smalltalk", 2 }, - { "assembler", 2 }, - { "Assembler", 2 }, - { "Basic", 2 }, - { "BASIC", 2 }, - { "basic", 2 }, - { "CORBA", 2 }, - { "COBOL", 2 }, - { "ADA", 2 }, - { "LISP", 2 }, - - // just for fun... - { "life", 2 }, - { "sucks", 2 }, - { "rules", 2 }, - { "Quake", 2 }, - { "QuakeWorld", 2 }, - { "[ag_slammer]",2 }, - { "Aleksandras", 2 }, - { "Gluchovas" , 2 }, - { "Alex", 2 }, - { "alex", 2 }, - { "aleks", 2 }, - { "aleksas", 3 }, - { "AlexSoft", 2 }, - { "Alexsoft", 2 }, - { "SpringSky", 2 }, - { "SK_Team", 2 }, - { "soften", 2 }, - { "UB40", 2 }, - { "U96", 2 } -}; - -struct less_c_str -{ - inline bool operator()( char* x, char* y) const - { return ( strcmp( x,y ) < 0 ); - } -}; - -#if defined( wxUSE_TEMPLATE_STL ) - - typedef map< char*, char*, less_c_str > KeywordMapT; - -#else - - typedef char* CharPtrT; - typedef WXSTL_MAP( CharPtrT, CharPtrT ,less_c_str) KeywordMapT; - -#endif - -static KeywordMapT __gMultiLangMap; -static int __gMapReady = 0; - -void check_keyword_map( int keywordMapNr ) -{ - if ( !__gMapReady ) - { - __gMapReady = 1; - - // "make sure" the address of the first member of non-polimorphic class - // coinsides with the address of the instance - - KeywordT dummy; - - if ( (char*)& dummy != &dummy.keyWord[0] ) - throw; - - int size = sizeof(__gKeyWords) / sizeof( KeywordT ); - - for( int i = 0; i != size; ++i ) - - __gMultiLangMap.insert( - KeywordMapT::value_type( (char*)&__gKeyWords[i], - (char*)&__gKeyWords[i] - ) - ); - } -} - -int get_rank( char* start, char* end ) -{ - // FIXME:: what if end is no longer leagal adress? - - char tmp = *end; - *end = '\0'; // put temporary terminator - - KeywordMapT::iterator i; - - if ( (i = __gMultiLangMap.find( start ) ) != __gMultiLangMap.end() ) - { - KeywordT* pKey = (KeywordT*)(*i).second; - - *end = tmp; - - return pKey->rank; - } - else - { - *end = tmp; - return 0; - } -} - -static inline void store_range( SPBlockListT& results, int rank, int range_len ) -{ - if ( !range_len ) return; - - results.push_back ( ( rank << 16 ) | ( range_len ) ); -} - - -#define STORE_RANGE store_range( results, cur_rank, cur_range_len );\ - cur_rank = cur_range_len = 0; - -#define NEXT_CHAR cur_range_len++; \ - ++cur; \ - continue; - -static inline int is_alpha( char ch ) -{ - return ( (( ch >= '_' ) && ( ch <= 'z' )) || - (( ch >= 'A' ) && ( ch <= 'Z' )) - ); -} - - // _ . . - // Ziema atEjo netikEtai - -static void heighlight_syntax( char* str, int strLen, - SPBlockListT& results, bool& isComment ) -{ - bool isMultiline = 0; - char* cur = str; - char* end = str + strLen; - - int cur_rank = ( isComment == 1 ) ? RANK_GREEN : RANK_BLACK; - int cur_range_len = 0; - - while ( cur != end ) - { - int has_next = ( cur+1 != end ); - - if ( isComment ) - { - if ( *cur == '*' ) - if ( has_next && *(cur+1) == '/' ) - { - // turn off multiline comment mode - cur += 2; - cur_range_len += 2; - isComment = 0; - isMultiline = 0; - STORE_RANGE; - - continue; - } - - ++cur_range_len; - ++cur; - continue; - } - - /* - if ( *cur == 10 ) - if ( isComment ) - if ( isMultiline ) - { - cur_rank = RANK_GREEN; - cur_range_len = end - cur; - STORE_RANGE; - isComment = 0; - isMultiline = 0; - continue; - }*/ - - if ( *cur == '/' ) - { - if ( has_next ) - { - if ( *(cur+1) == '/' ) - { - STORE_RANGE; - - char* eol = cur; - while ( eol < end && *eol != 10 ) - ++eol; - - cur_rank = RANK_GREEN; - cur_range_len = eol - cur; - cur = eol; - STORE_RANGE; - - continue; - } - - if ( *(cur+1) == '*' ) - { - STORE_RANGE; - cur_rank = RANK_GREEN; - cur_range_len = 2; - isComment = 1; - cur += 2; - isMultiline = 1; - continue; - } - } - - NEXT_CHAR; - } - - if ( ( is_alpha( *cur ) || *(cur) == '#' ) - && has_next - ) - { - if ( is_alpha( *(cur+1) ) ) - { - char* start = cur; - cur += 2; - - while ( cur != end && is_alpha(*cur) ) ++cur; - - int wordRank; - - if ( (wordRank = get_rank( start, cur )) > 0 ) - { - STORE_RANGE; - - store_range( results, wordRank, int(cur-start) ); - cur_rank = cur_range_len = 0; - continue; - } - - cur_range_len += ( cur-start ); - continue; - } - else - NEXT_CHAR; - } - - NEXT_CHAR; - } - - if ( cur_range_len > 0 ) STORE_RANGE; -} - -/***** Implementation for class SourcePainter ******/ - -SourcePainter::SourcePainter( bool assembleResultString ) - : mCollectResultsOn( assembleResultString ), - mIsInComment( FALSE ), - mCommentIsMultiline( FALSE ) -{ - check_keyword_map(0); -} - -void SourcePainter::ProcessSource( char* src, int srcLen ) -{ - // TBD:: multilne state... - - heighlight_syntax( src, srcLen, mBlocks, mIsInComment ); - - if ( mCollectResultsOn ) - - mResultStr += string( src, srcLen ); -} - -void SourcePainter::SetState( bool isInComment, - bool commentIsMultiline ) -{ - mIsInComment = isInComment; - mCommentIsMultiline = commentIsMultiline; -} - -void SourcePainter::Init(bool assembleResultString) -{ - mIsInComment = 0; - mCommentIsMultiline = 0; - mCollectResultsOn = assembleResultString; - - mResultStr = ""; - - mBlocks.erase( mBlocks.begin(), mBlocks.end() ); -} - -static int rank_tags_map[] = -{ - TAG_BLACK_FONT, - TAG_BLUE_FONT, - TAG_RED_FONT, - TAG_GREEN_FONT -}; - -void SourcePainter::GetResultString(string& result, MarkupTagsT tags) -{ - // this method works, only if results of processing - // are collected - ASSERT( mCollectResultsOn ); - result = ""; - - int pos = 0; - - for( size_t i = 0; i != mBlocks.size(); ++i ) - { - int desc = mBlocks[i]; - - int len = desc & 0xFFFF; - int rank = (desc >> 16) & 0xFFFF; - - result += tags[ rank_tags_map[rank] ].start; - - for( int n = 0; n != len; ++n ) - - result += mResultStr[pos+n]; - - pos += len; - - result += tags[ rank_tags_map[rank] ].end; - } -} - -SPBlockListT& SourcePainter::GetBlocks() -{ - return mBlocks; -} - -bool SourcePainter::IsKeyword( char* word, int wordLen ) -{ - check_keyword_map(0); - - int rank = get_rank( word, word + wordLen ); - - return ( rank == RANK_BLUE || rank == RANK_RED ); -} diff --git a/utils/HelpGen/src/srcparser.cpp b/utils/HelpGen/src/srcparser.cpp deleted file mode 100644 index abe2cd9a9e..0000000000 --- a/utils/HelpGen/src/srcparser.cpp +++ /dev/null @@ -1,543 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: No names yet. -// Purpose: Contrib. demo -// Author: Aleksandras Gluchovas -// Modified by: -// Created: 22/09/98 -// RCS-ID: $Id$ -// Copyright: (c) Aleskandars Gluchovas -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "srcparser.h" -#pragma interface -#endif - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include -#include - -#include "srcparser.h" - -/***** Implementation for class spVisitor *****/ - -void spVisitor::VisitAll( spContext& atContext, - bool sortContent - ) -{ - mSiblingSkipped = FALSE; - mChildSkipped = FALSE; - mContextMask = SP_CTX_ANY; // FIXME:: should be an arg. - - if ( sortContent && !atContext.IsSorted() ) - - atContext.SortMembers(); - - mpCurCxt = &atContext; // FIXME:: this is dirty, restoring it each time - - if ( atContext.GetContextType() & mContextMask ) - - atContext.AcceptVisitor( *this ); - - MMemberListT& members = atContext.GetMembers(); - - for( size_t i = 0; i != members.size(); ++i ) - { - if ( mSiblingSkipped ) - - return; - - if ( !mChildSkipped ) - { - size_t prevSz = members.size(); - - // visit members of the context recursivelly - VisitAll( *members[i], sortContent ); - - if ( members.size() != prevSz ) - - --i; // current member was removed! - - mChildSkipped = 0; - } - } -} - -void spVisitor::RemoveCurrentContext() -{ - if ( mpCurCxt->GetParent() ) - - mpCurCxt->GetParent()->RemoveChild( mpCurCxt ); -} - -void spVisitor::SkipSiblings() -{ - mSiblingSkipped = TRUE; -} - -void spVisitor::SkipChildren() -{ - mChildSkipped = TRUE; -} - -void spVisitor::SetFilter( int contextMask ) -{ - mContextMask = contextMask; -} - -/***** Implementation for class spComment *****/ - -bool spComment::IsMultiline() const -{ - return mIsMultiline; -} - -bool spComment::StartsParagraph() const -{ - return mStartsPar; -} - -string& spComment::GetText() -{ - return mText; -} - -string spComment::GetText() const -{ - return mText; -} - -/***** Implementation for class spContext *****/ - -spContext::spContext() - - : mpParent ( NULL ), - mpFirstOccurence( NULL ), - mAlreadySorted ( FALSE ), - - mSrcLineNo (-1), - mSrcOffset (-1), - mContextLength(-1), - mLastScrLineNo(-1), - - mHeaderLength (-1), - mFooterLength (-1), - - mFirstCharPos (-1), - mLastCharPos (-1), - - mVisibility( SP_VIS_PRIVATE ), - - mIsVirtualContext ( FALSE ), - mVirtualContextHasChildren( FALSE ), - - mpUserData( NULL ) -{} - -void spContext::RemoveChildren() -{ - for( size_t i = 0; i != mMembers.size(); ++i ) - - delete mMembers[i]; - - mMembers.erase( mMembers.begin(), mMembers.end() ); -} - -spContext::~spContext() -{ - RemoveChildren(); - - for( size_t i = 0; i != mComments.size(); ++i ) - - delete mComments[i]; -} - -bool spContext::IsSorted() -{ - return mAlreadySorted; -} - -void spContext::GetContextList( MMemberListT& lst, int contextMask ) -{ - for( size_t i = 0; i != mMembers.size(); ++i ) - { - spContext& member = *mMembers[i]; - - if ( member.GetContextType() & contextMask ) - - lst.push_back( &member ); - - // collect required contexts recursively - member.GetContextList( lst, contextMask ); - } -} - -bool spContext::HasComments() -{ - return ( mComments.size() != 0 ); -} - -void spContext::RemoveChild( spContext* pChild ) -{ - for( size_t i = 0; i != mMembers.size(); ++i ) - - if ( mMembers[i] == pChild ) - { - mMembers.erase( &mMembers[i] ); - - delete pChild; - return; - } - - // the given child should exist on the parent's list - wxASSERT( 0 ); -} - -spContext* spContext::GetEnclosingContext( int mask ) -{ - spContext* cur = this->GetParent(); - - while ( cur && !(cur->GetContextType() & mask) ) - - cur = cur->GetParent(); - - return cur; -} - -bool spContext::PositionIsKnown() -{ - return ( mSrcOffset != (-1) && mContextLength != (-1) ); -} - -bool spContext::IsVirtualContext() -{ - return mIsVirtualContext; -} - -bool spContext::VitualContextHasChildren() -{ - return mVirtualContextHasChildren; -} - -string spContext::GetVirtualContextBody() -{ - wxASSERT( mIsVirtualContext ); - - return mVirtualContextBody; -} - -string spContext::GetFooterOfVirtualContextBody() -{ - wxASSERT( mIsVirtualContext ); - - return mVittualContextFooter; -} - - -void spContext::SetVirtualContextBody( const string& body, - bool hasChildren, - const string& footer ) -{ - mVirtualContextHasChildren = hasChildren; - - mVirtualContextBody = body; - mVittualContextFooter = footer; - - // atuomaticllay becomes virtual context - - mIsVirtualContext = TRUE; -} - -string spContext::GetBody( spContext* pCtx ) -{ - if ( ( pCtx == NULL || pCtx == this ) && mIsVirtualContext ) - - return mVirtualContextBody; - - if ( GetParent() ) - - return GetParent()->GetBody( ( pCtx != NULL ) ? pCtx : this ); - else - return ""; // source-fragment cannot be found -} - -string spContext::GetHeader( spContext* pCtx ) -{ - if ( GetParent() ) - - return GetParent()->GetHeader( ( pCtx != NULL ) ? pCtx : this ); - else - return ""; // source-fragment cannot be found -} - -bool spContext::IsFirstOccurence() -{ - return ( mpFirstOccurence != 0 ); -} - -spContext* spContext::GetFirstOccurence() -{ - // this object should not itself be - // the first occurence of the context - wxASSERT( mpFirstOccurence != 0 ); - - return mpFirstOccurence; -} - -void spContext::AddMember( spContext* pMember ) -{ - mMembers.push_back( pMember ); - - pMember->mpParent = this; -} - -void spContext::AddComment( spComment* pComment ) -{ - mComments.push_back( pComment ); -} - -MMemberListT& spContext::GetMembers() -{ - return mMembers; -} - -spContext* spContext::FindContext( const string& identifier, - int contextType, - bool searchSubMembers - ) -{ - for( size_t i = 0; i != mMembers.size(); ++i ) - { - spContext& member = *mMembers[i]; - - if ( member.GetName() == identifier && - ( contextType & member.GetContextType() ) - ) - - return &member; - - if ( searchSubMembers ) - { - spContext* result = - member.FindContext( identifier, contextType, 1 ); - - if ( result ) return result; - } - } - - return 0; -} - -void spContext::RemoveThisContext() -{ - if ( mpParent ) - mpParent->RemoveChild( this ); - else - // context should have a parent - wxASSERT(0); -} - -spContext* spContext::GetOutterContext() -{ - return mpParent; -} - -bool spContext::HasOutterContext() -{ - return ( mpParent != 0 ); -} - -bool spContext::IsInFile() -{ - return ( GetOutterContext()->GetContextType() == SP_CTX_FILE ); -} - -bool spContext::IsInNameSpace() -{ - return ( GetOutterContext()->GetContextType() == SP_CTX_NAMESPACE ); -} - -bool spContext::IsInClass() -{ - return ( GetOutterContext()->GetContextType() == SP_CTX_CLASS ); -} - -bool spContext::IsInOperation() -{ - return ( GetOutterContext()->GetContextType() == SP_CTX_OPERATION ); -} - -spClass& spContext::GetClass() -{ - wxASSERT( GetOutterContext()->GetType() == SP_CTX_CLASS ); - return *((spClass*)mpParent ); -} - -spFile& spContext::GetFile() -{ - wxASSERT( GetOutterContext()->GetType() == SP_CTX_FILE ); - return *((spFile*)mpParent ); -} - -spNameSpace& spContext::GetNameSpace() -{ - wxASSERT( GetOutterContext()->GetType() == SP_CTX_NAMESPACE ); - return *((spNameSpace*)mpParent ); -} - -spOperation& spContext::GetOperation() -{ - wxASSERT( GetOutterContext()->GetType() == SP_CTX_OPERATION ); - return *((spOperation*)mpParent ); -} - -/***** Implementation for class spClass *****/ - -void spClass::SortMembers() -{ - // TBD:: -} - -/***** Implementation for class spOperation *****/ - -spOperation::spOperation() - - : mHasDefinition( FALSE ) -{} - -string spOperation::GetFullName(MarkupTagsT tags) -{ - string txt = tags[TAG_BOLD].start + mRetType; - txt += " "; - txt += mName; - txt += "( "; - txt += tags[TAG_BOLD].end; - - for( size_t i = 0; i != mMembers.size(); ++i ) - { - // DBG:: - wxASSERT( mMembers[i]->GetContextType() == SP_CTX_PARAMETER ); - - spParameter& param = *((spParameter*)mMembers[i]); - - if ( i != 0 ) - txt += ", "; - - txt += tags[TAG_BOLD].start; - - txt += param.mType; - - txt += tags[TAG_BOLD].end; - txt += tags[TAG_ITALIC].start; - - txt += " "; - txt += param.mName; - - if ( param.mInitVal != "" ) - { - txt += " = "; - txt += tags[TAG_BOLD].start; - - txt += param.mInitVal; - - txt += tags[TAG_BOLD].end; - } - - txt += tags[TAG_ITALIC].end;; - } - - txt += tags[TAG_BOLD].start; - txt += " )"; - txt += tags[TAG_BOLD].end; - - // TBD:: constantness of method - - return txt; -} - -/***** Implemenentation for class spPreprocessorLine *****/ - -string spPreprocessorLine::CPP_GetIncludedFileNeme() -{ - wxASSERT( GetStatementType() == SP_PREP_DEF_INCLUDE_FILE ); - - size_t i = 0; - - while( i < mLine.length() && mLine[i] != '"' && mLine[i] != '<' ) - - ++i; - - ++i; - - size_t start = i; - - while( i < mLine.length() && mLine[i] != '"' && mLine[i] != '>' ) - - ++i; - - if ( start < mLine.length() ) - { - string fname; - fname.append( mLine, start, ( i - start ) ); - - return fname; - } - else - return ""; // syntax error probably -} - - - -/***** Implemenentation for class SourceParserBase *****/ - -SourceParserBase::SourceParserBase() - - : mpFileBuf( NULL ), - mFileBufSz( 0 ), - - mpPlugin( NULL ) -{} - -SourceParserBase::~SourceParserBase() -{ - if ( mpFileBuf ) free( mpFileBuf ); - - if ( mpPlugin ) delete mpPlugin; -} - -spFile* SourceParserBase::ParseFile( const char* fname ) -{ - // FIXME:: the below should not be fixed! - - const size_t MAX_BUF_SIZE = 1024*256; - - if ( !mpFileBuf ) mpFileBuf = (char*)malloc( MAX_BUF_SIZE ); - - mFileBufSz = MAX_BUF_SIZE; - - FILE* fp = fopen( fname, "rt" ); - - if ( (int)fp == -1 || !fp ) return NULL; - - int sz = fread( mpFileBuf, 1, mFileBufSz, fp ); - - return Parse( mpFileBuf, mpFileBuf + sz ); -} - -void SourceParserBase::SetPlugin( SourceParserPlugin* pPlugin ) -{ - if ( mpPlugin ) delete mpPlugin; - - mpPlugin = pPlugin; -} diff --git a/utils/HelpGen/src/wx_extra_imps.cpp b/utils/HelpGen/src/wx_extra_imps.cpp deleted file mode 100644 index 056a522371..0000000000 --- a/utils/HelpGen/src/wx_extra_imps.cpp +++ /dev/null @@ -1,81 +0,0 @@ -//////////////////// -// -// craeted by Alex -// -//////////////////// - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#include - -#ifndef WX_PRECOMP - #include "wx/defs.h" -#endif - -char * -copystring (const char *s) -{ - if (s == NULL) s = ""; - size_t len = strlen (s) + 1; - - char *news = new char[len]; - memcpy (news, s, len); // Should be the fastest - - return news; -} - -#ifdef __WXMSW__ -// from filefn.cpp -void WXDLLEXPORT wxSplitPath(const char *pszFileName, - wxString *pstrPath, - wxString *pstrName, - wxString *pstrExt) -{ - wxCHECK_RET( pszFileName, _("NULL file name in wxSplitPath") ); - - const char *pDot = strrchr(pszFileName, FILE_SEP_EXT); - const char *pSepUnix = strrchr(pszFileName, FILE_SEP_PATH_UNIX); - const char *pSepDos = strrchr(pszFileName, FILE_SEP_PATH_DOS); - - // take the last of the two - size_t nPosUnix = pSepUnix ? pSepUnix - pszFileName : 0; - size_t nPosDos = pSepDos ? pSepDos - pszFileName : 0; - if ( nPosDos > nPosUnix ) - nPosUnix = nPosDos; -// size_t nLen = Strlen(pszFileName); - - if ( pstrPath ) - *pstrPath = wxString(pszFileName, nPosUnix); - if ( pDot ) { - size_t nPosDot = pDot - pszFileName; - if ( pstrName ) - *pstrName = wxString(pszFileName + nPosUnix + 1, nPosDot - nPosUnix); - if ( pstrExt ) - *pstrExt = wxString(pszFileName + nPosDot + 1); - } - else { - if ( pstrName ) - *pstrName = wxString(pszFileName + nPosUnix + 1); - if ( pstrExt ) - pstrExt->Empty(); - } -} - -wxLocale *wxGetLocale() -{ - return NULL; -} - -const char *wxLocale::GetString(const char *szOrigString, - const char *) const -{ - return szOrigString; -} - -#else // !MSW -const char *wxGetTranslation(const char *str) -{ - return str; -} -#endif // MSW \ No newline at end of file diff --git a/utils/Makefile b/utils/Makefile deleted file mode 100644 index 57ec5f3f82..0000000000 --- a/utils/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../setup/general/makedirs diff --git a/utils/dialoged/docs/alignb.bmp b/utils/dialoged/docs/alignb.bmp deleted file mode 100644 index 6cc2e1dee47c12433ba418577a2e5ad73fab4848..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/utils/dialoged/docs/alignb.eps b/utils/dialoged/docs/alignb.eps deleted file mode 100644 index 2909ad7631..0000000000 --- a/utils/dialoged/docs/alignb.eps +++ /dev/null @@ -1,161 +0,0 @@ -%!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 deleted file mode 100644 index 7aa46845c988cb03904555c41d226f85c73c5394..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132 zcmZ?wbhEHb6ky3?MTYSPVa$@LWAt;dKpvL;^=iJV#%6=Avm@lb*fIous{b#onF@+4u9p4UP%F Qs@QU~?Q*7-rXYhg05r%jiU0rr diff --git a/utils/dialoged/docs/alignl.bmp b/utils/dialoged/docs/alignl.bmp deleted file mode 100644 index 30471101b16de3328c3d7a9ddbb74c95669b30c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 deleted file mode 100644 index 650ce397499764159b83973f40ec2b7f10eb38a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 124 zcmZ?wbhEHb6ky3?MTYSTsMJ@YH6txV`%q(`}ZDc#U4UjI>!V_vvdVi+U~l>bq)DU-7<6smGck Hl^Co6qsc5L diff --git a/utils/dialoged/docs/alignr.bmp b/utils/dialoged/docs/alignr.bmp deleted file mode 100644 index 14a2f85241d5a0f1985c58e88c06b64a606b7764..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 238 zcmaKju@QhU3fPl58tp)=Q2Jo8bgU*r`XQ zqpFK#Mn{w=#ps68D(8$_P->|Z>mbio$leeL#26AdfBgB^?p|K+nFqW7@RnP41Lmtt AkpKVy diff --git a/utils/dialoged/docs/alignr.eps b/utils/dialoged/docs/alignr.eps deleted file mode 100644 index b3470a2290..0000000000 --- a/utils/dialoged/docs/alignr.eps +++ /dev/null @@ -1,161 +0,0 @@ -%!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 deleted file mode 100644 index 19f9a9207e55146957f45d4dcfa537db32236400..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 126 zcmZ?wbhEHb6ky3?MTYShPQ!@LWAt;dS@)cm{Pwc@4QI;$64O_8D9|mmNOsYsKTxU9&~*>$NZ1 KnlzPz!5RP#!!4x% diff --git a/utils/dialoged/docs/alignt.bmp b/utils/dialoged/docs/alignt.bmp deleted file mode 100644 index 4505cbab566385942c0912c245668a2567a6e4a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/utils/dialoged/docs/alignt.eps b/utils/dialoged/docs/alignt.eps deleted file mode 100644 index 0770b5f842..0000000000 --- a/utils/dialoged/docs/alignt.eps +++ /dev/null @@ -1,161 +0,0 @@ -%!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 deleted file mode 100644 index 633f980bed544a13ea9cad65bea00a83390d2bab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 131 zcmZ?wbhEHb6ky3?MTYSPVX#@LbIzasLc|ghD~%6Q#O`5wqkpx4nM3>gmmcTV2mv&HAn_X0Yt= QN1Zv*g(v5@FfdpH04feKX#fBK diff --git a/utils/dialoged/docs/arrow.bmp b/utils/dialoged/docs/arrow.bmp deleted file mode 100644 index a6b99c89915a274a6ff61417529ce2d3cd94a346..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 566 zcmcJMK@x)?3`M_AXY9@k^Z-492k5?caiuOE5VweD`&fMw*SNYNkzPGjz%YMOtT#T diff --git a/utils/dialoged/docs/arrow.eps b/utils/dialoged/docs/arrow.eps deleted file mode 100644 index 9bacc42a95..0000000000 --- a/utils/dialoged/docs/arrow.eps +++ /dev/null @@ -1,174 +0,0 @@ -%!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 deleted file mode 100644 index aa2c4605cbe99f78ec038111dd57b539ddcf2ade..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/utils/dialoged/docs/back.gif b/utils/dialoged/docs/back.gif deleted file mode 100644 index 8a61076d3ba74bdedc1d24f60c3d1f5a361a6cee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/utils/dialoged/docs/bmpbuttn.bmp b/utils/dialoged/docs/bmpbuttn.bmp deleted file mode 100644 index 270cf634fe3dd181c3d21306dae205ad8229dc40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/utils/dialoged/docs/bmpbuttn.eps b/utils/dialoged/docs/bmpbuttn.eps deleted file mode 100644 index 6c0f5c523c..0000000000 --- a/utils/dialoged/docs/bmpbuttn.eps +++ /dev/null @@ -1,174 +0,0 @@ -%!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 deleted file mode 100644 index 220bddc623b62076ab912c06d6a47196fd1cf00f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/utils/dialoged/docs/body.tex b/utils/dialoged/docs/body.tex deleted file mode 100644 index c88202c1ac..0000000000 --- a/utils/dialoged/docs/body.tex +++ /dev/null @@ -1,200 +0,0 @@ -\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 2.0 should be compiled and used with wxWindows 2.0. - -\section{Current status} - -Dialog Editor currently runs under wxMSW and wxGTK. It has yet to -be tested under wxMotif. - -\section{Future developments} - -\begin{itemize}\itemsep=0pt -\item Motif compilation. -\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 dialog}{Creates a new dialog resource.} -\twocolitem{New project}{Creates a new project (clears index and resets project name).} -\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}{Exits the program.} -\end{twocollist} - -\subsection{Edit menu} - -\begin{twocollist}\itemsep=0pt -\twocolitem{Test Dialog}{Creates the current dialog for test purposes.} -\twocolitem{Recreate}{Recreates the currently selected control 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.} -\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 control to create on the dialog. -To create a new control, select a tool with left-click, then left-click on the dialog. -Select the pointer tool to use left-click for selecting and deselecting -items. - -\section{Resource tree} - -The resource tree shows a list of the dialogs, controls and bitmaps currently loaded -in Dialog Editor. Double-clicking on an item shows the associated resource. - -\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 control 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 control 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 control, drag the item with the left mouse button, or edit -the position values in the property editor. To resize a control, 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 control. 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{Working with identifiers} - -Dialog Editor keeps track of identifiers in your resources, and reads and writes an include file of the -form {\tt name.h} where 'name' is the root name of your {\tt .wxr} file. Dialog Editor -knows about the predefined identifiers such as wxID\_OK. - -When you create a dialog or control, the identifier is initially generated. When you -edit the identifier via a property editor, you can choose a new name, such as a predefined -symbol and optionally change the integer assigned to the name (assuming it's not a -predefined symbol). - -When you save the project, the identifier include file is saved as well. Include this file -in your project so that you can refer to controls and dialogs by identifier rather than -obscure integers. Note that the {\tt .wxr} file itself can only contain integer ids and not the symbols, -due to way in which the resource file is loaded. - -\section{Multi-platform development} - -{\tt .wxr} files generated on one environment (e.g. Windows) can be used in another (e.g. GTK). -If you use default fonts and colouring (set {\bf useSystemDefaults} to True in the dialog properties) -then the dialog fonts and colours will take on the native values, rather than ones specified in the -resource. Without this, colours in the dialog resource may not match system colours. - -Also, set {\bf useDialogUnits} to True whenever possible since this will cause the dialog -to be created using a scale based on the current system font size, and will result in dialogs that are -portable between screen resolutions as well as platforms. - -Because the same control 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. The best thing is to try your dialog resource on several platforms -and see whether tweaking is required for some platforms. - diff --git a/utils/dialoged/docs/books.bmp b/utils/dialoged/docs/books.bmp deleted file mode 100644 index cf1e148734c807052ec6359ad2eb1a3e8d43d43d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/utils/dialoged/docs/books.gif b/utils/dialoged/docs/books.gif deleted file mode 100644 index a9a1e46844cb79b3a787ae9bb3e6e2d508bf03df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/utils/dialoged/docs/bugs.tex b/utils/dialoged/docs/bugs.tex deleted file mode 100644 index 7cb891653b..0000000000 --- a/utils/dialoged/docs/bugs.tex +++ /dev/null @@ -1,17 +0,0 @@ -\chapter{Bugs}\label{bugs} -\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}% -\setfooter{\thepage}{}{}{}{}{\thepage}% - -Version 2.0 - -\begin{itemize}\itemsep=0pt -\item No Motif version yet. -\item Some control properties missing. -\item When dragging a selected item, other selected items should follow (to be -consistent with convention), but don't. -\item No grid. -\item No keyboard shortcuts. -\item No tab ordering. -\item In dialog unit mode, controls will sometimes move slightly when properties are edited, -because translating between units isn't always reversible (rounding errors?). -\end{itemize} diff --git a/utils/dialoged/docs/bullet.bmp b/utils/dialoged/docs/bullet.bmp deleted file mode 100644 index aad8fc793edd54ffb5910e67b2470659c95448b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 138 zcmZumxe>rH2vhFtK1GJ`9PYi2Yw9con_&SdBlI1b>qTKR2Gu`ZXgNITWj7;KP=JJL V1)UXU1`*-lNw`O&c<~DR!2u5s7-j$f diff --git a/utils/dialoged/docs/button.bmp b/utils/dialoged/docs/button.bmp deleted file mode 100644 index e7e95d73f060e29f05b3b80d4ff9f4c95815b664..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 deleted file mode 100644 index cbbb8d485a4ce0b33e039ffb184beb2b9ea108e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/utils/dialoged/docs/changes.tex b/utils/dialoged/docs/changes.tex deleted file mode 100644 index fbe44245ff..0000000000 --- a/utils/dialoged/docs/changes.tex +++ /dev/null @@ -1,71 +0,0 @@ -\chapter{Change log}\label{changes} -\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}% -\setfooter{\thepage}{}{}{}{}{\thepage}% - -December 31st 1998, Version 2.0 - -\begin{itemize}\itemsep=0pt -\item wxWindows 2.0 port. -\item Major user interface changes. -\item Allows identifiers to be edited and reads/writes an id header file. -\end{itemize} - -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 deleted file mode 100644 index 718f0a9f0296f5336fa65bea0f823eac0d92617b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/utils/dialoged/docs/check.eps b/utils/dialoged/docs/check.eps deleted file mode 100644 index 0c085f3974..0000000000 --- a/utils/dialoged/docs/check.eps +++ /dev/null @@ -1,174 +0,0 @@ -%!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 deleted file mode 100644 index d10100c03ecafcd0f6a20f6c9f30647566bcf0ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/utils/dialoged/docs/choice.bmp b/utils/dialoged/docs/choice.bmp deleted file mode 100644 index 2f56ee55b0e86936ee108ea7767906ed7d127ae5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/utils/dialoged/docs/choice.eps b/utils/dialoged/docs/choice.eps deleted file mode 100644 index 43d29814fa..0000000000 --- a/utils/dialoged/docs/choice.eps +++ /dev/null @@ -1,174 +0,0 @@ -%!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 deleted file mode 100644 index a05ff4dee7498536b76867c63f01cb4ebe572ce1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/utils/dialoged/docs/classes.tex b/utils/dialoged/docs/classes.tex deleted file mode 100644 index 633f2c202e..0000000000 --- a/utils/dialoged/docs/classes.tex +++ /dev/null @@ -1,5 +0,0 @@ -\chapter{Alphabetical class reference}\label{classref} -\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}% -\setfooter{\thepage}{}{}{}{}{\thepage}% - -To be written. diff --git a/utils/dialoged/docs/contents.gif b/utils/dialoged/docs/contents.gif deleted file mode 100644 index 3dddfa3dd5f0c652e8b27cd6c29e1fdd49ced5a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/utils/dialoged/docs/copysize.eps b/utils/dialoged/docs/copysize.eps deleted file mode 100644 index 9f084995a2..0000000000 --- a/utils/dialoged/docs/copysize.eps +++ /dev/null @@ -1,161 +0,0 @@ -%!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 deleted file mode 100644 index 72b6f08a396ed21df224ea5f33ccd6b28b91bb89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132 zcmZ?wbhEHb6ky3?MTYSPVa$@O;f^@w!_zB7uWRxUzFmWo3p(R)lqxEYI|?b?f!_zdJDhZTin0 QMavdyb$t2iA;@4200o&aL;wH) diff --git a/utils/dialoged/docs/dialog.bmp b/utils/dialoged/docs/dialog.bmp deleted file mode 100644 index 889d6ad216daf67bbd6c1f5de4edb3a41a357bdb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/utils/dialoged/docs/dialog.eps b/utils/dialoged/docs/dialog.eps deleted file mode 100644 index 63045c2465..0000000000 --- a/utils/dialoged/docs/dialog.eps +++ /dev/null @@ -1,174 +0,0 @@ -%!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 deleted file mode 100644 index ae430e334576ccc77c788a042dccda4ff62bae84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/utils/dialoged/docs/dialoged.hpj b/utils/dialoged/docs/dialoged.hpj deleted file mode 100644 index 2d3f20ac08..0000000000 --- a/utils/dialoged/docs/dialoged.hpj +++ /dev/null @@ -1,17 +0,0 @@ -[OPTIONS] -BMROOT=. ; 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 deleted file mode 100644 index 441b3d238c..0000000000 --- a/utils/dialoged/docs/dialoged.tex +++ /dev/null @@ -1,48 +0,0 @@ -\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 Dialog Editor Version 2.0} -\winhelpignore{\author{Julian Smart, Anthemion Software} -\date{December 1998} -} -\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) 1998 Julian Smart, Anthemion Software -\end{center} - -Please see the wxWindows licence for conditions of use. - -\input{body.tex} -\input{changes.tex} -\input{bugs.tex} -\input{tech.tex} - -%\newpage -% -% Note: In RTF, the \printindex must come before the -% change of header/footer, since the \printindex inserts -% the RTF \sect command which divides one chapter from -% the next. -\rtfonly{\printindex -\addcontentsline{toc}{chapter}{Index} -\setheader{{\it INDEX}}{}{}{}{}{{\it INDEX}}% -\setfooter{\thepage}{}{}{}{}{\thepage}% -} -\end{document} - diff --git a/utils/dialoged/docs/forward.gif b/utils/dialoged/docs/forward.gif deleted file mode 100644 index 9c81e8c92fed7fe851ce02e7854dc26a58eae9b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/utils/dialoged/docs/gauge.bmp b/utils/dialoged/docs/gauge.bmp deleted file mode 100644 index fbb625991598ecedfffe3836dc77a746fe1fadff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 566 zcmZ?rHDh7`gEAng0mL#;%*en37C*oUrmztE85n?wVgG&z1tft?h64uFfMnr-gMopg0|_)RFz_RBJ3#z$1gOBl2b;%UUJjFI6a<1H#0NUH fyd25B)aIjy4=hAs;f2BnMiLwV!yAYY02p5YXabu> diff --git a/utils/dialoged/docs/gauge.eps b/utils/dialoged/docs/gauge.eps deleted file mode 100644 index 6966f30b35..0000000000 --- a/utils/dialoged/docs/gauge.eps +++ /dev/null @@ -1,174 +0,0 @@ -%!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 deleted file mode 100644 index af79fe1aef58a40ea131f9d7c82201cf74ba1d0d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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; diff --git a/utils/dialoged/docs/group.bmp b/utils/dialoged/docs/group.bmp deleted file mode 100644 index b202efd768eeb3272aaac915e20aa83f71fc59e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 566 zcmdr}$q~aK3|wb213x$50#ZQ=$UnX4W%IACoe^5uRg2q{}4o;!XOAPGqyw7LOxugNkn{t8s`T@y5s^$Oy diff --git a/utils/dialoged/docs/group.eps b/utils/dialoged/docs/group.eps deleted file mode 100644 index 6a33b2efbf..0000000000 --- a/utils/dialoged/docs/group.eps +++ /dev/null @@ -1,174 +0,0 @@ -%!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 deleted file mode 100644 index 683efa8ce76e52ad1ff596f50215dc884249a79b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/utils/dialoged/docs/help.eps b/utils/dialoged/docs/help.eps deleted file mode 100644 index 965ae88d6b..0000000000 --- a/utils/dialoged/docs/help.eps +++ /dev/null @@ -1,161 +0,0 @@ -%!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 deleted file mode 100644 index ef1825ee190559c5a842f3dceef2ab9c8200f738..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 129 zcmZ?wbhEHb6ky3?MTYSoA)e@LbJmahtQ}`;BXok{mHlDoYZN&P#rM=-IKW+rB*8KIgs7TrCOd OTU`gI`U^2KSOWm-V=-+2 diff --git a/utils/dialoged/docs/horiz.bmp b/utils/dialoged/docs/horiz.bmp deleted file mode 100644 index 58af34a727e24407124fed67899ae2071dea12e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 238 zcmaKjF%Ez*3r)SF8kLTs=5{{JE?DUYEK&^#0pxo{w%L C5KP+u diff --git a/utils/dialoged/docs/horiz.eps b/utils/dialoged/docs/horiz.eps deleted file mode 100644 index 2c78311a5e..0000000000 --- a/utils/dialoged/docs/horiz.eps +++ /dev/null @@ -1,161 +0,0 @@ -%!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 deleted file mode 100644 index 12025ea84ea113351f6153e83f1cb66886673af5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 126 zcmZ?wbhEHb6kyz2>j Km@t)t!5RPzXE4eD diff --git a/utils/dialoged/docs/listbox.bmp b/utils/dialoged/docs/listbox.bmp deleted file mode 100644 index 07091ea9e3a502f87b9ef47334804012c616a71b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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* diff --git a/utils/dialoged/docs/listbox.eps b/utils/dialoged/docs/listbox.eps deleted file mode 100644 index 97558a4cc0..0000000000 --- a/utils/dialoged/docs/listbox.eps +++ /dev/null @@ -1,174 +0,0 @@ -%!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 deleted file mode 100644 index 04b4b2cc5b9ea3a56271485243997170e29ed819..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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$ diff --git a/utils/dialoged/docs/load.bmp b/utils/dialoged/docs/load.bmp deleted file mode 100644 index 1c38e97b59dac5b7dcb3d4ac14a31fe36d3fbc6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/utils/dialoged/docs/load.eps b/utils/dialoged/docs/load.eps deleted file mode 100644 index b5cd5288df..0000000000 --- a/utils/dialoged/docs/load.eps +++ /dev/null @@ -1,161 +0,0 @@ -%!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 deleted file mode 100644 index 1ae4cecc50dc6c3733f86274f0591d49611e704d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 139 zcmZ?wbhEHb6ky3?MTYSS&uA@LauCA>QWTM`^aS1+I0cH&4)6wl6cv%YkS0XZFo|!XGy;2zXI# Y!*KXX##EVUM!rf*k8?-z3o=*(0HH@RhX4Qo diff --git a/utils/dialoged/docs/message.bmp b/utils/dialoged/docs/message.bmp deleted file mode 100644 index 8861e7c3e1b0371f5155693083a397046bfdd72c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/utils/dialoged/docs/message.eps b/utils/dialoged/docs/message.eps deleted file mode 100644 index bb4717a4c4..0000000000 --- a/utils/dialoged/docs/message.eps +++ /dev/null @@ -1,174 +0,0 @@ -%!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 deleted file mode 100644 index 54975c536ba6da9cb580b9ef5480b1eca90b3d17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/utils/dialoged/docs/mtext.eps b/utils/dialoged/docs/mtext.eps deleted file mode 100644 index 557442ae7a..0000000000 --- a/utils/dialoged/docs/mtext.eps +++ /dev/null @@ -1,174 +0,0 @@ -%!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 deleted file mode 100644 index c1be4008168b8410f40996b4781b96296d009a6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/utils/dialoged/docs/new.eps b/utils/dialoged/docs/new.eps deleted file mode 100644 index 7c9a949c37..0000000000 --- a/utils/dialoged/docs/new.eps +++ /dev/null @@ -1,161 +0,0 @@ -%!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 deleted file mode 100644 index 3b1fd4c6db0dcd3fdb8cc5ca8f65ec5adc6b8a49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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)$ diff --git a/utils/dialoged/docs/open.eps b/utils/dialoged/docs/open.eps deleted file mode 100644 index f8b500faaa..0000000000 --- a/utils/dialoged/docs/open.eps +++ /dev/null @@ -1,161 +0,0 @@ -%!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 deleted file mode 100644 index 9f2e6503db47148e9ccff302a04f62ad32e70f61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 137 zcmZ?wbhEHb6kyS8UQRsGm`)S diff --git a/utils/dialoged/docs/picture.bmp b/utils/dialoged/docs/picture.bmp deleted file mode 100644 index 00603f0280f64023adf543fcee28f2677e9a7726..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 566 zcmbVJ!4bkB5ZpM!)cVGtQ#UTPGCl}MmVY^Elw+Kr_CKc5SUN&{mKH)XSKaX2)sn!Z?>{^&6{krmGeHu YCg097toi%zZKm;0|BsI}5b^b1Z-w8Od;kCd diff --git a/utils/dialoged/docs/picture.eps b/utils/dialoged/docs/picture.eps deleted file mode 100644 index 981b2fe478..0000000000 --- a/utils/dialoged/docs/picture.eps +++ /dev/null @@ -1,176 +0,0 @@ -%!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 deleted file mode 100644 index 05b19aef459d1796f530f01177f55f80460d83cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 deleted file mode 100644 index 90ed06ce312f2a725561f6b88267967f894a4b33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/utils/dialoged/docs/save.eps b/utils/dialoged/docs/save.eps deleted file mode 100644 index 1019aeb244..0000000000 --- a/utils/dialoged/docs/save.eps +++ /dev/null @@ -1,161 +0,0 @@ -%!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 deleted file mode 100644 index 3a031950e5338cbfda1d777259ea626ffd58d543..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/utils/dialoged/docs/scroll.eps b/utils/dialoged/docs/scroll.eps deleted file mode 100644 index cae1e34614..0000000000 --- a/utils/dialoged/docs/scroll.eps +++ /dev/null @@ -1,174 +0,0 @@ -%!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 deleted file mode 100644 index fca1d06ccbc91a60915992887ea7fec24987908e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/utils/dialoged/docs/slider.bmp b/utils/dialoged/docs/slider.bmp deleted file mode 100644 index 884166a2fcb7194be9354247ec6c909238c151ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 566 zcmb_Z!41P847^m8nqL>_0G%KM^xs|lDtY?JSZqelh60t4s!F|Jo8!*7{)Sw)3{~QhrH~{1+ Bv5^1( diff --git a/utils/dialoged/docs/slider.eps b/utils/dialoged/docs/slider.eps deleted file mode 100644 index 02b1d5a608..0000000000 --- a/utils/dialoged/docs/slider.eps +++ /dev/null @@ -1,174 +0,0 @@ -%!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 deleted file mode 100644 index 701aa1704ff3f98fb90278affc42206d787d3baf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/utils/dialoged/docs/text.eps b/utils/dialoged/docs/text.eps deleted file mode 100644 index e79fe4d8e0..0000000000 --- a/utils/dialoged/docs/text.eps +++ /dev/null @@ -1,178 +0,0 @@ -%!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 deleted file mode 100644 index 58b51dd161ba0083fba8fe037e32d237ad24a841..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 deleted file mode 100644 index 82a4ad88ea1e5ffd9dcc9655bfa944ce115239c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 deleted file mode 100644 index ff09220da3e1912f64891777c0cef2e7c16e8bfa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 137 zcmZ?wbhEHb6ky||iD1^^@aGQ0o) diff --git a/utils/dialoged/docs/up.gif b/utils/dialoged/docs/up.gif deleted file mode 100644 index 316d0d2a14b571bea2eb874efd04bfe509f53b34..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/utils/dialoged/docs/vert.eps b/utils/dialoged/docs/vert.eps deleted file mode 100644 index 0375e76e5e..0000000000 --- a/utils/dialoged/docs/vert.eps +++ /dev/null @@ -1,161 +0,0 @@ -%!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 deleted file mode 100644 index 7992f4c40ae3a04ec954ced9578651d4877d0620..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 131 zcmZ?wbhEHb6kyJQ3^NiN1DwGf?EKP+GUlZ2U3w8O1iKLn5)y7~M{(M2`-Q+kTgio-$pIr3 yIJ<@@69WdYU=~JYi`E)lf%k&DI+8~tN`4^$nJY-OD*JU>wjJEKHuH!bxvFW diff --git a/utils/dialoged/src/bitmaps/alignb.xbm b/utils/dialoged/src/bitmaps/alignb.xbm deleted file mode 100644 index 6ffdcd94d9..0000000000 --- a/utils/dialoged/src/bitmaps/alignb.xbm +++ /dev/null @@ -1,9 +0,0 @@ -#define alignb_width 24 -#define alignb_height 24 -static char alignb_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xf8, 0x07, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, - 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0xf0, 0x09, 0x04, 0x10, 0x09, 0x04, - 0x10, 0x09, 0x04, 0x10, 0x09, 0x04, 0x10, 0x09, 0x04, 0xf0, 0xf9, 0x07, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/utils/dialoged/src/bitmaps/alignb.xpm b/utils/dialoged/src/bitmaps/alignb.xpm deleted file mode 100644 index c3b57a5869..0000000000 --- a/utils/dialoged/src/bitmaps/alignb.xpm +++ /dev/null @@ -1,24 +0,0 @@ -/* XPM */ -static char *alignb_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 3 1", -" c None", -". c Black", -"X c Yellow", -/* pixels */ -" ", -" ........", -" .XXXXXX.", -" .XXXXXX.", -" .XXXXXX.", -" .XXXXXX.", -" .XXXXXX.", -" ..... .XXXXXX.", -" .XXX. .XXXXXX.", -" .XXX. .XXXXXX.", -" .XXX. .XXXXXX.", -" .XXX. .XXXXXX.", -" ..... ........", -" ", -" " -}; diff --git a/utils/dialoged/src/bitmaps/alignl.bmp b/utils/dialoged/src/bitmaps/alignl.bmp deleted file mode 100644 index 30471101b16de3328c3d7a9ddbb74c95669b30c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 238 zcmaKju@QhU3fPl58tp)=Q2Jo8bgU*r`XQ zqpFK#Mn{w=#ps68D(8$_P->|Z>mbio$leeL#26AdfBgB^?p|K+nFqW7@RnP41Lmtt AkpKVy diff --git a/utils/dialoged/src/bitmaps/alignr.xbm b/utils/dialoged/src/bitmaps/alignr.xbm deleted file mode 100644 index 337bbd762d..0000000000 --- a/utils/dialoged/src/bitmaps/alignr.xbm +++ /dev/null @@ -1,9 +0,0 @@ -#define alignr_width 24 -#define alignr_height 24 -static char alignr_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xf8, 0x01, 0x00, 0x08, 0x01, 0x00, 0x08, 0x01, 0x00, 0x08, 0x01, - 0x00, 0xf8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x01, - 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, - 0xc0, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/utils/dialoged/src/bitmaps/alignr.xpm b/utils/dialoged/src/bitmaps/alignr.xpm deleted file mode 100644 index 3f873eed4e..0000000000 --- a/utils/dialoged/src/bitmaps/alignr.xpm +++ /dev/null @@ -1,24 +0,0 @@ -/* XPM */ -static char *alignr_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 3 1", -" c None", -". c Black", -"X c Yellow", -/* pixels */ -" ", -" ...... ", -" .XXXX. ", -" .XXXX. ", -" .XXXX. ", -" ...... ", -" ", -" ", -" ........... ", -" .XXXXXXXXX. ", -" .XXXXXXXXX. ", -" .XXXXXXXXX. ", -" .XXXXXXXXX. ", -" ........... ", -" " -}; diff --git a/utils/dialoged/src/bitmaps/alignt.bmp b/utils/dialoged/src/bitmaps/alignt.bmp deleted file mode 100644 index 4505cbab566385942c0912c245668a2567a6e4a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/utils/dialoged/src/bitmaps/alignt.xbm b/utils/dialoged/src/bitmaps/alignt.xbm deleted file mode 100644 index 1cc90e390c..0000000000 --- a/utils/dialoged/src/bitmaps/alignt.xbm +++ /dev/null @@ -1,9 +0,0 @@ -#define alignt_width 24 -#define alignt_height 24 -static char alignt_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xf0, 0xf9, 0x07, 0x10, 0x09, 0x04, 0x10, 0x09, 0x04, 0x10, 0x09, 0x04, - 0x10, 0x09, 0x04, 0xf0, 0x09, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, - 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0xf8, 0x07, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/utils/dialoged/src/bitmaps/alignt.xpm b/utils/dialoged/src/bitmaps/alignt.xpm deleted file mode 100644 index 65fc1b5ccb..0000000000 --- a/utils/dialoged/src/bitmaps/alignt.xpm +++ /dev/null @@ -1,24 +0,0 @@ -/* XPM */ -static char *alignt_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 3 1", -" c None", -". c Black", -"X c Yellow", -/* pixels */ -" ", -" ..... ........", -" .XXX. .XXXXXX.", -" .XXX. .XXXXXX.", -" .XXX. .XXXXXX.", -" .XXX. .XXXXXX.", -" ..... .XXXXXX.", -" .XXXXXX.", -" .XXXXXX.", -" .XXXXXX.", -" .XXXXXX.", -" .XXXXXX.", -" ........", -" ", -" " -}; diff --git a/utils/dialoged/src/bitmaps/arrow.bmp b/utils/dialoged/src/bitmaps/arrow.bmp deleted file mode 100644 index d406ceb64f017d99bcc2d4913aef75135de357a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 382 zcmb7-I}UJZQ>1WPN=;5qEQ3zc?;o59U+Ka+r!5!mH1Gr)e_0X9zQo7Bn*m`tDP z>tSJ;fdXA9#W(4KsI?;JEJm}1)|8}VswC~|bu-BQ Vombvu=JhAub(#Nm-N`e*_yJ^>eVzaS diff --git a/utils/dialoged/src/bitmaps/arrow.ico b/utils/dialoged/src/bitmaps/arrow.ico deleted file mode 100644 index 09ec6401554ca321fd4bd89c5fa4b10c3f5f8cbc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1078 zcmeH`I}*Ym6h$wQTG>IUoa{n(COgqKOR!@(mVSzq&-2KnOYb;(;k+MI%tZ?7lyj2n z)=7JEN^?I1X}ggIW*LqU6p4tt>najkrOb&)sah-953FsOc?B#VdHCz6UjPq$RPJ+k xeul;8g?e2Dk8^^jTOv|^h0pnF7dwx!agZi>o}|08gC3Z*-lPY-U;?vid;_+U#@GM= diff --git a/utils/dialoged/src/bitmaps/arrow.xbm b/utils/dialoged/src/bitmaps/arrow.xbm deleted file mode 100644 index 17840c7aeb..0000000000 --- a/utils/dialoged/src/bitmaps/arrow.xbm +++ /dev/null @@ -1,13 +0,0 @@ -#define arrow_width 28 -#define arrow_height 28 -static char arrow_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, - 0x00, 0x0c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, - 0x00, 0x7c, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0xfc, 0x01, 0x00, - 0x00, 0xfc, 0x03, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, - 0x00, 0xc4, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, - 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00}; diff --git a/utils/dialoged/src/bitmaps/arrow.xpm b/utils/dialoged/src/bitmaps/arrow.xpm deleted file mode 100644 index ad9d577585..0000000000 --- a/utils/dialoged/src/bitmaps/arrow.xpm +++ /dev/null @@ -1,24 +0,0 @@ -/* XPM */ -static char * arrow_xpm[] = { -/* width height ncolors chars_per_pixel */ -"16 16 2 1", -/* colors */ -" s None c None", -". c #000000", -/* pixels */ -" ", -" . ", -" .. ", -" ... ", -" .... ", -" ..... ", -" ...... ", -" ....... ", -" ........ ", -" ..... ", -" .. .. ", -" . .. ", -" .. ", -" .. ", -" .. ", -" "}; diff --git a/utils/dialoged/src/bitmaps/bmpbuttn.bmp b/utils/dialoged/src/bitmaps/bmpbuttn.bmp deleted file mode 100644 index 36278f425a3b6fc527ccde7cad6b27e55e190d71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 382 zcmbVHxedcG3_Jq?m@-vn@Eq>F3#+ILw3)P-d`AklYxC3TC_dWu|ALSo<4XTdU+@b4 zJ@dMJrbhw|GPITlBO!Y4sI@XN!Z3yqohpis;}JYyL0IPPxuG_zGLXDoT<)_=K9WgEAng0mNcZ%*en37UzJUKVPu>WGTjVi{7lX-d?#?5fxY^*pT+1jwLpbrQz<kjwKQTzxIPM3>KMjSFfke5s4*0jEOn1F|sVx cIiWIGV6fL+zn_EFG2egJ|IhOqhuV)bd=_k9p6!;fQkZMEImn9ew=%f zf;y!X<+yj!0gkceW03Y6X{460BNnv91A5nC5=&;4@PwMC3HFU#mU8w8htL9W*M>uDs-V%e=!r$T0<#?jcyCQD^Yy3#FQicGtYPkve*IU;AE^0f<*o9aaNC* j-sW5$dCu|q@!h0jECk8#&s{Jtan*Ao54U>ack_c!H9}t@ diff --git a/utils/dialoged/src/bitmaps/choice.ico b/utils/dialoged/src/bitmaps/choice.ico deleted file mode 100644 index 3a1f98d32964a9b953e9b273fa2e34743b1ab2a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1078 zcmeH_y$!-J6ok(KiBymgT%nA?D2$NKDPPGLjN)`S?#_>J@wt(2!|*s0JY9rH`kBv9{=37VqI|1pda0Q&m~ZDc!&1R$-cN_BgQ`kx Y?Wd7rIojpDEZwuNp^`H*T$A!Go&)^yVE_OC diff --git a/utils/dialoged/src/bitmaps/choice.xbm b/utils/dialoged/src/bitmaps/choice.xbm deleted file mode 100644 index 973f5c127d..0000000000 --- a/utils/dialoged/src/bitmaps/choice.xbm +++ /dev/null @@ -1,13 +0,0 @@ -#define choice_width 28 -#define choice_height 28 -static char choice_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x00, - 0x10, 0x00, 0xc6, 0x00, 0x10, 0x00, 0xee, 0x00, 0x10, 0x00, 0xfe, 0x00, - 0xf0, 0xff, 0xff, 0x00, 0x20, 0x00, 0x82, 0x00, 0x20, 0x00, 0x92, 0x00, - 0xa0, 0x3f, 0xba, 0x00, 0x20, 0x00, 0x82, 0x00, 0x20, 0x00, 0x82, 0x00, - 0xa0, 0xff, 0xfe, 0x00, 0x20, 0x00, 0x82, 0x00, 0x20, 0x00, 0x82, 0x00, - 0xa0, 0x7f, 0xba, 0x00, 0x20, 0x00, 0x92, 0x00, 0x20, 0x00, 0x82, 0x00, - 0xe0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00}; diff --git a/utils/dialoged/src/bitmaps/choice.xpm b/utils/dialoged/src/bitmaps/choice.xpm deleted file mode 100644 index c46aaf5dba..0000000000 --- a/utils/dialoged/src/bitmaps/choice.xpm +++ /dev/null @@ -1,27 +0,0 @@ -/* XPM */ -static char * choice_xpm[] = { -/* width height ncolors chars_per_pixel */ -"16 16 5 1", -/* colors */ -" s None c None", -". c #000000", -"+ c #c0c0c0", -"@ c #808080", -"# c #ffffff", -/* pixels */ -"@@@@@@@@@@@@@@@@", -"@..............@", -"@.########+++++@", -"@.########.....@", -"@.########+...+@", -"@.########++.++@", -"@.+++++++++++++@", -"@@@@@@@@@@@@@@@@", -" ##############", -" ..............", -" .#########+.+.", -" .#########....", -" .#########+++.", -" .#########....", -" .#########+.+.", -" .............."}; diff --git a/utils/dialoged/src/bitmaps/combobox.ico b/utils/dialoged/src/bitmaps/combobox.ico deleted file mode 100644 index ff2941bb2902a48f9a77471086741cfa10be646b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1078 zcmeH_y$!-J6ok(KiBymgT%nA?D2$NKDPPGLjN)-9*&uw+P9%gPBq|EH_};yr*h;LE zf*Qrx$#H9>BiePf?t`@7NIks>PcUdp1iZTrlUOpVLL^nr8TG+bmZr%w$m1;!fBf_f z;DN8geeTYWaPhg3ufy;-6FgmnNcx%25B|HuprV{rG`-Z!7tFVFnPI75G~bwZquu>D cRh8P>Ps|J2WnY%AS?5s6H#2@FRP?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 diff --git a/utils/dialoged/src/bitmaps/copysize.xbm b/utils/dialoged/src/bitmaps/copysize.xbm deleted file mode 100644 index 6fcb9e6e95..0000000000 --- a/utils/dialoged/src/bitmaps/copysize.xbm +++ /dev/null @@ -1,8 +0,0 @@ -#define copysize_width 24 -#define copysize_height 24 -static char copysize_bits[] = { - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0xf0,0xbf,0x03,0x10,0x20,0x02,0x10,0x20,0x02,0x10,0xa0,0x0f,0x10,0x20,0x07, - 0xf0,0x3f,0x02,0x00,0x00,0x00,0x00,0x55,0x05,0x00,0x00,0x00,0x00,0xf9,0x05, - 0x00,0x08,0x01,0x00,0xf9,0x05,0x00,0x00,0x00,0x00,0x55,0x05,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; diff --git a/utils/dialoged/src/bitmaps/copysize.xpm b/utils/dialoged/src/bitmaps/copysize.xpm deleted file mode 100644 index 4694bd4083..0000000000 --- a/utils/dialoged/src/bitmaps/copysize.xpm +++ /dev/null @@ -1,24 +0,0 @@ -/* XPM */ -static char *copysize_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 3 1", -" c None", -". c Black", -"X c Yellow", -/* pixels */ -" ", -".......... ... ", -".XXXXXXXX. . ", -".XXXXXXXX. . ", -".XXXXXXXX. .....", -".XXXXXXXX. ... ", -".......... . ", -" ", -" . . . . . . ", -" ", -" . ...... . ", -" .XXXX. ", -" . ...... . ", -" ", -" . . . . . . " -}; diff --git a/utils/dialoged/src/bitmaps/cpp.xbm b/utils/dialoged/src/bitmaps/cpp.xbm deleted file mode 100644 index a05d1d1686..0000000000 --- a/utils/dialoged/src/bitmaps/cpp.xbm +++ /dev/null @@ -1,9 +0,0 @@ -#define cpp_width 24 -#define cpp_height 24 -static char cpp_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x30, 0x34, 0x06, - 0x18, 0x30, 0x06, 0x18, 0x78, 0x0f, 0x18, 0x78, 0x0f, 0x18, 0x30, 0x06, - 0x30, 0x34, 0x06, 0xe0, 0x03, 0x00, 0x00, 0x40, 0x00, 0x00, 0xc0, 0x00, - 0x00, 0xff, 0x01, 0x00, 0xc0, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/utils/dialoged/src/bitmaps/cross.bmp b/utils/dialoged/src/bitmaps/cross.bmp deleted file mode 100644 index 079cb0dd58010154f6a791eead3a4cc19c02cf31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 198 zcmZup$qm3D40EMQNS&l}^k1o?@M^wn1~1l1?Et?*e8`4ecgHv{Y0+9kDTRf{z+H~uRU|SqMnJMG$uK0U!a!ytzjWs7-TIffM+-jaAS7o1 diff --git a/utils/dialoged/src/bitmaps/dialog.bmp b/utils/dialoged/src/bitmaps/dialog.bmp deleted file mode 100644 index 889d6ad216daf67bbd6c1f5de4edb3a41a357bdb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/utils/dialoged/src/bitmaps/dialog.ico b/utils/dialoged/src/bitmaps/dialog.ico deleted file mode 100644 index 6e8c9aab412ab96a696138888b0af7382073278c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1078 zcmeH`F%Ci@5JZQswQvL~^N-=Jv~xQ>76P2vp!li%S9xrQx0=!0Tj+OR DGhpdM diff --git a/utils/dialoged/src/bitmaps/dialog.xbm b/utils/dialoged/src/bitmaps/dialog.xbm deleted file mode 100644 index 409675024c..0000000000 --- a/utils/dialoged/src/bitmaps/dialog.xbm +++ /dev/null @@ -1,13 +0,0 @@ -#define dialog_width 28 -#define dialog_height 28 -static char dialog_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xf0, 0xff, 0x7f, 0x00, 0xf0, 0xff, 0x7f, 0x00, 0xf0, 0xff, 0x7f, 0x00, - 0x10, 0x00, 0x40, 0x00, 0x10, 0x00, 0x40, 0x00, 0x90, 0xff, 0x4f, 0x00, - 0x90, 0x00, 0x48, 0x00, 0x90, 0x00, 0x48, 0x00, 0x90, 0x00, 0x48, 0x00, - 0x90, 0xff, 0x4f, 0x00, 0x10, 0x00, 0x40, 0x00, 0x10, 0x00, 0x40, 0x00, - 0x10, 0x00, 0x40, 0x00, 0xd0, 0xdf, 0x5f, 0x00, 0x50, 0x50, 0x50, 0x00, - 0x50, 0x50, 0x50, 0x00, 0xd0, 0xdf, 0x5f, 0x00, 0x10, 0x00, 0x40, 0x00, - 0xf0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00}; diff --git a/utils/dialoged/src/bitmaps/dialog.xpm b/utils/dialoged/src/bitmaps/dialog.xpm deleted file mode 100644 index 24e227697a..0000000000 --- a/utils/dialoged/src/bitmaps/dialog.xpm +++ /dev/null @@ -1,28 +0,0 @@ -/* XPM */ -static char * dialog_xpm[] = { -/* width height ncolors chars_per_pixel */ -"16 16 6 1", -/* colors */ -" s None c None", -". c #000000", -"+ c #c0c0c0", -"@ c #808080", -"# c #0000ff", -"$ c #ffffff", -/* pixels */ -" ", -" $$$$$$$$$$$$$. ", -" $############. ", -" $############. ", -" $############. ", -" $++++++++++++. ", -" $+$$$$$+@@@@+. ", -" $+$$$$$+@@@@+. ", -" $+$$$$$++++++. ", -" $+$$$$$+@@@@+. ", -" $+++++++@@@@+. ", -" $++++++++++++. ", -" $++++++++++++. ", -" $++++++++++++. ", -" .............. ", -" "}; diff --git a/utils/dialoged/src/bitmaps/dialoged.ico b/utils/dialoged/src/bitmaps/dialoged.ico deleted file mode 100644 index cec6bac64ecd29c4736882dc3976810ac1d87ce4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmcgpF%H5o47>tEH(+7T$S>eYWeOYF=r8z6p2N z1GQt9>PwC(lKGc9t$0B6(+ad_Yi;MUf8wKD=*76b_SZc2QwsiZ-sD&F*q`*;ui}Sw k5xn(JoWGT$3mRx1{5jGJ4fjv5s88Ve*EvB&#`4$ z-KWwol7~Nj z`ULR6SK&T)=Vv(k+{l+?d0>&R*eTfDQ!M>~0gH7u(az4o zLMOL7JG)CrjsYBcNRk+aYY!NaFo2l9^q diff --git a/utils/dialoged/src/bitmaps/folder2.xpm b/utils/dialoged/src/bitmaps/folder2.xpm deleted file mode 100644 index 93f4610a42..0000000000 --- a/utils/dialoged/src/bitmaps/folder2.xpm +++ /dev/null @@ -1,28 +0,0 @@ -/* XPM */ -static char * folder2_xpm[] = { -/* width height ncolors chars_per_pixel */ -"16 16 6 1", -/* colors */ -" s None c None", -". c #000000", -"+ c #c0c0c0", -"@ c #808080", -"# c #ffff00", -"$ c #ffffff", -/* pixels */ -" ", -" @@@@@ ", -" @$$$$$@ ", -" @$#+#+#$@@@@@@ ", -" @$+#+#+$$$$$$@.", -" @$#+#+#+#+#+#@.", -"@@@@@@@@@@@@@#@.", -"@$$$$$$$$$$@@+@.", -"@$#+#+#+#+##.@@.", -" @$#+#+#+#+#+.@.", -" @$+#+#+#+#+#.@.", -" @$+#+#+#+##@..", -" @@@@@@@@@@@@@.", -" .............", -" ", -" "}; diff --git a/utils/dialoged/src/bitmaps/frame.xbm b/utils/dialoged/src/bitmaps/frame.xbm deleted file mode 100644 index f9d950c274..0000000000 --- a/utils/dialoged/src/bitmaps/frame.xbm +++ /dev/null @@ -1,13 +0,0 @@ -#define frame_width 28 -#define frame_height 28 -static char frame_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xf0, 0xff, 0x7f, 0x00, 0xf0, 0xff, 0x7f, 0x00, 0x10, 0x00, 0x40, 0x00, - 0xd0, 0x36, 0x40, 0x00, 0xf0, 0xff, 0x7f, 0x00, 0x10, 0x00, 0x40, 0x00, - 0x10, 0x00, 0x40, 0x00, 0x10, 0x00, 0x40, 0x00, 0x10, 0x00, 0x40, 0x00, - 0x10, 0x00, 0x40, 0x00, 0x10, 0x00, 0x40, 0x00, 0x10, 0x00, 0x40, 0x00, - 0x10, 0x00, 0x40, 0x00, 0x10, 0x00, 0x40, 0x00, 0x10, 0x00, 0x40, 0x00, - 0x10, 0x00, 0x40, 0x00, 0xf0, 0xff, 0x7f, 0x00, 0x10, 0x00, 0x40, 0x00, - 0x10, 0x00, 0x40, 0x00, 0xf0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00}; diff --git a/utils/dialoged/src/bitmaps/gauge.bmp b/utils/dialoged/src/bitmaps/gauge.bmp deleted file mode 100644 index 7803dd76c199551899407b65f10508a01c513997..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 382 zcmZ?rtz%>WgEAng0mNcZ%*en37UzJbKe Eo;I1*NdN!< diff --git a/utils/dialoged/src/bitmaps/gauge.xbm b/utils/dialoged/src/bitmaps/gauge.xbm deleted file mode 100644 index a4dbaa94cd..0000000000 --- a/utils/dialoged/src/bitmaps/gauge.xbm +++ /dev/null @@ -1,11 +0,0 @@ -#define gauge_width 28 -#define gauge_height 28 -static char gauge_bits[] = { - 0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0xf0,0x00,0x00,0x00, - 0xf0,0x00,0xff,0x07,0xf0,0x00,0x01,0x04,0xf0,0x00,0x01,0x04,0xf0,0x00,0x01, - 0x04,0xf0,0x00,0x01,0x04,0xf0,0x00,0x01,0x04,0xf0,0x00,0x01,0x04,0xf0,0x00, - 0xff,0x07,0xf0,0x00,0xff,0x07,0xf0,0x00,0xff,0x07,0xf0,0x00,0xff,0x07,0xf0, - 0x00,0xff,0x07,0xf0,0x00,0xff,0x07,0xf0,0x00,0xff,0x07,0xf0,0x00,0xff,0x07, - 0xf0,0x00,0xff,0x07,0xf0,0x00,0xff,0x07,0xf0,0x00,0xff,0x07,0xf0,0x00,0xff, - 0x07,0xf0,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0xf0,0x00, - 0x00,0x00,0xf0,0x00,0x00,0x00,0xf0}; diff --git a/utils/dialoged/src/bitmaps/gauge.xpm b/utils/dialoged/src/bitmaps/gauge.xpm deleted file mode 100644 index 947bbdf024..0000000000 --- a/utils/dialoged/src/bitmaps/gauge.xpm +++ /dev/null @@ -1,27 +0,0 @@ -/* XPM */ -static char * gauge_xpm[] = { -/* width height ncolors chars_per_pixel */ -"16 16 5 1", -/* colors */ -" s None c None", -". c #000000", -"+ c #000080", -"@ c #c0c0c0", -"# c #808080", -/* pixels */ -" ", -" ", -" ", -"################", -"#..............#", -"#.++++++++@@@@@#", -"#.++++++++@@@@@#", -"#.++++++++@@@@@#", -"#.++++++++@@@@@#", -"#.++++++++@@@@@#", -"#.++++++++@@@@@#", -"#.++++++++@@@@@#", -"################", -" ", -" ", -" "}; diff --git a/utils/dialoged/src/bitmaps/group.bmp b/utils/dialoged/src/bitmaps/group.bmp deleted file mode 100644 index 387a988b69e122dd4ea112d45d958e0f9dd697a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 382 zcmd6iyA8uI3v7OgYjr3~!Jpk~)40^8NWPO6|lAe@$QX z$og~kBUz_sLrr07?f8hGdhe>W(imwPBM9e3iQt!RT$nrLD(6i3cQ#{1^VkzAZZ0`@ OLF5QF#7y#enCl0ENPMCI diff --git a/utils/dialoged/src/bitmaps/group.xbm b/utils/dialoged/src/bitmaps/group.xbm deleted file mode 100644 index 0dc97eace6..0000000000 --- a/utils/dialoged/src/bitmaps/group.xbm +++ /dev/null @@ -1,13 +0,0 @@ -#define group_width 28 -#define group_height 28 -static char group_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x80, 0xaa, 0x03, 0x00, 0x00, 0x29, 0x01, 0x00, - 0x30, 0x91, 0x78, 0x00, 0x90, 0x92, 0x43, 0x00, 0x10, 0x00, 0x40, 0x00, - 0x10, 0x00, 0x40, 0x00, 0x10, 0x00, 0x40, 0x00, 0x10, 0x00, 0x40, 0x00, - 0x10, 0x00, 0x40, 0x00, 0x10, 0x00, 0x40, 0x00, 0x10, 0x00, 0x40, 0x00, - 0x10, 0x00, 0x40, 0x00, 0x10, 0x00, 0x40, 0x00, 0x10, 0x00, 0x40, 0x00, - 0x10, 0x00, 0x40, 0x00, 0x10, 0x00, 0x40, 0x00, 0x10, 0x00, 0x40, 0x00, - 0x10, 0x00, 0x40, 0x00, 0xf0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00}; diff --git a/utils/dialoged/src/bitmaps/help.bmp b/utils/dialoged/src/bitmaps/help.bmp deleted file mode 100644 index 54d5aa4b56a7613193cca03be224a2a2524c45dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 238 zcmZuqF%p0v42yRjjQR}U;qD)pm^+ChPvb>?0n=6oJxh}m!lmnW!fU52#7s=YfRPLw z#(z`+HfnVtb3|*6sz$d)?>Z4Y`a~+Fh!QKL_)_s}36K9({}0KQlA;AjifpE4cworp Ka}Dl5-EslZsz8AN diff --git a/utils/dialoged/src/bitmaps/help.xbm b/utils/dialoged/src/bitmaps/help.xbm deleted file mode 100644 index f382fd1f29..0000000000 --- a/utils/dialoged/src/bitmaps/help.xbm +++ /dev/null @@ -1,9 +0,0 @@ -#define help_width 24 -#define help_height 24 -static char help_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0xe0, 0x07, 0x30, 0x30, 0x0f, 0x70, 0x38, 0x0e, 0xf0, 0x38, 0x0e, - 0xf0, 0x39, 0x0f, 0xf0, 0x03, 0x07, 0xf0, 0x87, 0x01, 0xf0, 0xcf, 0x01, - 0xf0, 0xc1, 0x01, 0xb0, 0x01, 0x00, 0x10, 0xc3, 0x01, 0x00, 0xc3, 0x01, - 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/utils/dialoged/src/bitmaps/help.xpm b/utils/dialoged/src/bitmaps/help.xpm deleted file mode 100644 index 27a87ebb31..0000000000 --- a/utils/dialoged/src/bitmaps/help.xpm +++ /dev/null @@ -1,24 +0,0 @@ -/* XPM */ -static char *help_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 3 1", -" c None", -". c Black", -"X c #008080", -/* pixels */ -" ", -" ...... ", -" .XXXXX.. ", -" .XX...XX.. ", -" .X.. .X.. ", -" .X.. .XX.. ", -" .. .XX.. ", -" .XX.. ", -" .X.. ", -" .X.. ", -" .X.. ", -" .. ", -" .XX.. ", -" .XX.. ", -" ... " -}; diff --git a/utils/dialoged/src/bitmaps/horiz.bmp b/utils/dialoged/src/bitmaps/horiz.bmp deleted file mode 100644 index 58af34a727e24407124fed67899ae2071dea12e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 238 zcmaKjF%Ez*3r)SF8kLTs=5{{JE?DUYEK&^#0pxo{w%L C5KP+u diff --git a/utils/dialoged/src/bitmaps/horiz.xbm b/utils/dialoged/src/bitmaps/horiz.xbm deleted file mode 100644 index e4a0e385a8..0000000000 --- a/utils/dialoged/src/bitmaps/horiz.xbm +++ /dev/null @@ -1,9 +0,0 @@ -#define horiz_width 24 -#define horiz_height 24 -static char horiz_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x3e, 0x00, 0x00, 0x22, 0x00, 0x00, 0x22, 0x00, 0x00, 0x22, 0x00, - 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x01, - 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, 0x40, 0x00, 0x01, - 0xc0, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/utils/dialoged/src/bitmaps/horiz.xpm b/utils/dialoged/src/bitmaps/horiz.xpm deleted file mode 100644 index 381e66fccf..0000000000 --- a/utils/dialoged/src/bitmaps/horiz.xpm +++ /dev/null @@ -1,24 +0,0 @@ -/* XPM */ -static char *horiz_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 3 1", -" c None", -". c Black", -"X c Yellow", -/* pixels */ -" ", -" ..... ", -" .XXX. ", -" .XXX. ", -" .XXX. ", -" ..... ", -" ", -" ", -" ........... ", -" .XXXXXXXXX. ", -" .XXXXXXXXX. ", -" .XXXXXXXXX. ", -" .XXXXXXXXX. ", -" ........... ", -" " -}; diff --git a/utils/dialoged/src/bitmaps/listbox.bmp b/utils/dialoged/src/bitmaps/listbox.bmp deleted file mode 100644 index 4d5fb34779927b41870954649505f116b69bd209..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 382 zcmb79Ne+M@3>*>@JbLmCzQenJ;UqW1&){b`Elt40gO<)PbOZL|a!@`K z?#fSC*SQfN!_YV#G+hZ#_?FJ^J8Y>~t={^!v!<3W>vNyH&b_Ml{rx=V`AjhN_qOzN FzX29s`w##C diff --git a/utils/dialoged/src/bitmaps/listbox.xbm b/utils/dialoged/src/bitmaps/listbox.xbm deleted file mode 100644 index fe08136a2d..0000000000 --- a/utils/dialoged/src/bitmaps/listbox.xbm +++ /dev/null @@ -1,13 +0,0 @@ -#define listbox_width 28 -#define listbox_height 28 -static char listbox_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x7f, 0x00, - 0x10, 0x00, 0x41, 0x00, 0x10, 0x00, 0x49, 0x00, 0xd0, 0x1f, 0x5d, 0x00, - 0x10, 0x00, 0x41, 0x00, 0x10, 0x00, 0x41, 0x00, 0xd0, 0x7f, 0x7f, 0x00, - 0x10, 0x00, 0x41, 0x00, 0x10, 0x00, 0x41, 0x00, 0xd0, 0x3f, 0x5d, 0x00, - 0x10, 0x00, 0x49, 0x00, 0x10, 0x00, 0x41, 0x00, 0xf0, 0xff, 0x7f, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00}; diff --git a/utils/dialoged/src/bitmaps/listbox.xpm b/utils/dialoged/src/bitmaps/listbox.xpm deleted file mode 100644 index 3d6b7b0e82..0000000000 --- a/utils/dialoged/src/bitmaps/listbox.xpm +++ /dev/null @@ -1,27 +0,0 @@ -/* XPM */ -static char * listbox_xpm[] = { -/* width height ncolors chars_per_pixel */ -"16 16 5 1", -/* colors */ -" s None c None", -". c #000000", -"+ c #c0c0c0", -"@ c #808080", -"# c #ffffff", -/* pixels */ -"@@@@@@@@@@@@@@@@", -"@..............@", -"@.##########+++@", -"@.##########+.+@", -"@.++++++++++...@", -"@.##########+++@", -"@.##########+++@", -"@.+++++++++++++@", -"@.##########+++@", -"@.##########+++@", -"@.+++++++++++++@", -"@.##########+++@", -"@.##########...@", -"@.##########+.+@", -"@.+++++++++++++@", -"@@@@@@@@@@@@@@@@"}; diff --git a/utils/dialoged/src/bitmaps/load.bmp b/utils/dialoged/src/bitmaps/load.bmp deleted file mode 100644 index 1c38e97b59dac5b7dcb3d4ac14a31fe36d3fbc6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/utils/dialoged/src/bitmaps/load.xbm b/utils/dialoged/src/bitmaps/load.xbm deleted file mode 100644 index 94c3ad5a9e..0000000000 --- a/utils/dialoged/src/bitmaps/load.xbm +++ /dev/null @@ -1,9 +0,0 @@ -#define load_width 24 -#define load_height 24 -static char load_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xe0, 0x00, 0x00, 0x10, 0x05, 0x00, 0x00, 0x06, 0xe0, 0x00, 0x07, - 0x10, 0x7f, 0x00, 0x10, 0x40, 0x00, 0x10, 0x40, 0x00, 0x10, 0xfe, 0x0f, - 0x10, 0x01, 0x04, 0x90, 0x00, 0x02, 0x50, 0x00, 0x01, 0x30, 0x80, 0x00, - 0xf0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/utils/dialoged/src/bitmaps/load.xpm b/utils/dialoged/src/bitmaps/load.xpm deleted file mode 100644 index c15a298f62..0000000000 --- a/utils/dialoged/src/bitmaps/load.xpm +++ /dev/null @@ -1,26 +0,0 @@ -/* XPM */ -static char *load_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 5 1", -" c None", -". c Black", -"X c Yellow", -"o c Gray100", -"O c #808000", -/* pixels */ -" ", -" ... ", -" . . .", -" ..", -" ... ...", -" .XoX....... ", -" .oXoXoXoXo. ", -" .XoXoXoXoX. ", -" .oXoX..........", -" .XoX.OOOOOOOOO.", -" .oo.OOOOOOOOO. ", -" .X.OOOOOOOOO. ", -" ..OOOOOOOOO. ", -" ........... ", -" " -}; diff --git a/utils/dialoged/src/bitmaps/message.bmp b/utils/dialoged/src/bitmaps/message.bmp deleted file mode 100644 index fb682e89e6b1b6e8e5564c36b70799068098cf8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 382 zcmb7;F%H8p3&InCD~$q;jo1M%kdkb>mb9216Te4?lF20 diff --git a/utils/dialoged/src/bitmaps/message.xbm b/utils/dialoged/src/bitmaps/message.xbm deleted file mode 100644 index f0f5385486..0000000000 --- a/utils/dialoged/src/bitmaps/message.xbm +++ /dev/null @@ -1,13 +0,0 @@ -#define message_width 28 -#define message_height 28 -static char message_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x20, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, - 0x00, 0xe8, 0x00, 0x00, 0x00, 0xe8, 0x00, 0x00, 0x00, 0xc4, 0x01, 0x00, - 0x00, 0xc4, 0x01, 0x00, 0x00, 0x82, 0x03, 0x00, 0x00, 0xfe, 0x03, 0x00, - 0x00, 0x01, 0x07, 0x00, 0x00, 0x01, 0x07, 0x00, 0x80, 0x00, 0x0e, 0x00, - 0xc0, 0x00, 0x1e, 0x00, 0xe0, 0x01, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00}; diff --git a/utils/dialoged/src/bitmaps/mtext.bmp b/utils/dialoged/src/bitmaps/mtext.bmp deleted file mode 100644 index 5ab765b69af6d6140bd3f0ee608c1efaf6fe2156..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 382 zcmZ`zF%HBa40ENE(($Hy!@Z+>|H9O4C&v2~{ERwjC|xil7(0ow?Y{+%gZaz&L@ao@ zzJ_m~cZ3@#u!~ZzhnW<$R^*&%G{0!g7=yb0l4tjP;1(ew=nJ8j|<6WY3bU0`GK9aK^RUId`!4(ELX-1{H u>6c`QQqJ8_T9s0iQsQ8(Wab^@`3kuPA_p->w)Xt4Pkz>06 diff --git a/utils/dialoged/src/bitmaps/new.xbm b/utils/dialoged/src/bitmaps/new.xbm deleted file mode 100644 index 8b75207815..0000000000 --- a/utils/dialoged/src/bitmaps/new.xbm +++ /dev/null @@ -1,8 +0,0 @@ -#define new_width 24 -#define new_height 24 -static char new_bits[] = { - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x80,0x7f,0x00,0x80,0xc0,0x00,0x80,0x40,0x01,0x80,0xc0,0x03,0x80,0x00,0x02, - 0x80,0x00,0x02,0x80,0x00,0x02,0x80,0x00,0x02,0x80,0x00,0x02,0x80,0x00,0x02, - 0x80,0x00,0x02,0x80,0x00,0x02,0x80,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; diff --git a/utils/dialoged/src/bitmaps/new.xpm b/utils/dialoged/src/bitmaps/new.xpm deleted file mode 100644 index 754d2d20a2..0000000000 --- a/utils/dialoged/src/bitmaps/new.xpm +++ /dev/null @@ -1,24 +0,0 @@ -/* XPM */ -static char *new_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 3 1", -" c None", -". c Black", -"X c Gray100", -/* pixels */ -" ", -" ........ ", -" .XXXXXX.. ", -" .XXXXXX.X. ", -" .XXXXXX.... ", -" .XXXXXXXXX. ", -" .XXXXXXXXX. ", -" .XXXXXXXXX. ", -" .XXXXXXXXX. ", -" .XXXXXXXXX. ", -" .XXXXXXXXX. ", -" .XXXXXXXXX. ", -" .XXXXXXXXX. ", -" ........... ", -" " -}; diff --git a/utils/dialoged/src/bitmaps/open.bmp b/utils/dialoged/src/bitmaps/open.bmp deleted file mode 100644 index 9d90ab6fd09eb672a19966282758642c6ec82cb4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 238 zcmZuqu?@p83}b)-$=06HJF@2&PEkjV{>r|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)$ diff --git a/utils/dialoged/src/bitmaps/panel.xbm b/utils/dialoged/src/bitmaps/panel.xbm deleted file mode 100644 index db69e42fc3..0000000000 --- a/utils/dialoged/src/bitmaps/panel.xbm +++ /dev/null @@ -1,13 +0,0 @@ -#define panel_width 28 -#define panel_height 28 -static char panel_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xc0, 0xff, 0x1f, 0x00, 0x40, 0x00, 0x10, 0x00, 0x40, 0x00, 0x10, 0x00, - 0x40, 0x00, 0x10, 0x00, 0x40, 0x00, 0x10, 0x00, 0x40, 0x00, 0x10, 0x00, - 0x40, 0x00, 0x10, 0x00, 0x40, 0x00, 0x10, 0x00, 0x40, 0x00, 0x10, 0x00, - 0x40, 0x00, 0x10, 0x00, 0x40, 0x00, 0x10, 0x00, 0x40, 0x00, 0x10, 0x00, - 0x40, 0x00, 0x10, 0x00, 0x40, 0x00, 0x10, 0x00, 0xc0, 0xff, 0x1f, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00}; diff --git a/utils/dialoged/src/bitmaps/picture.bmp b/utils/dialoged/src/bitmaps/picture.bmp deleted file mode 100644 index 60dde983ad2e8b4dcb76ac1b3269b75f7a16bcbe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 382 zcma)%F%H5o3`Kt>q;zEB44i|VyLhTMl$#|t3;)}$fDJcxUcT+Pc|2bm!Vbne{Z_u= z68c_w9j@h(zSRIVXDWOsrT~OGM`;z$hMKQ6v3qu>Fn`a1EXH)KH+sxR!u~0eX(g@Do|H%l}Mge dzI4COX>HDH{_|h+QT>#^iXU0CppzCaeFLkpczOT; diff --git a/utils/dialoged/src/bitmaps/radio.xbm b/utils/dialoged/src/bitmaps/radio.xbm deleted file mode 100644 index 13c7c118b0..0000000000 --- a/utils/dialoged/src/bitmaps/radio.xbm +++ /dev/null @@ -1,13 +0,0 @@ -#define radio_width 28 -#define radio_height 28 -static char radio_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xf8, 0x00, 0x00, 0x00, 0x06, 0x03, 0x00, 0x00, 0x01, 0x04, 0x00, - 0x80, 0x00, 0x08, 0x00, 0x80, 0x70, 0x08, 0x00, 0x40, 0xf8, 0x10, 0x00, - 0x40, 0xfc, 0x11, 0x00, 0x40, 0xfc, 0x11, 0x00, 0x40, 0xfc, 0x11, 0x00, - 0x40, 0xf8, 0x10, 0x00, 0x80, 0x70, 0x08, 0x00, 0x80, 0x00, 0x08, 0x00, - 0x00, 0x01, 0x04, 0x00, 0x00, 0x06, 0x03, 0x00, 0x00, 0xf8, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00}; diff --git a/utils/dialoged/src/bitmaps/radiobox.ico b/utils/dialoged/src/bitmaps/radiobox.ico deleted file mode 100644 index a09e1491f7256a2085e4339b1d3482569a76f09a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1078 zcmeHGF%AMD5FAdEqdIv4mAPm56rVuHmD_p0(5LVmOA`z2a2C$QT&~c{LI-ANcY%bE z0WfIby@TT109&eaweAhjt$?0APwq&AH6y{j%MgGQB2^ffBBeytg1#mULQ}tTP{p79_oxAT)?@_81YN0!H>$kU}Li+<|!uG1@ph@(p#aVhOkmw_*eg?RLnKJ9z=J;wXy WkHBpY*DVY+oYv29@45BYee*ja^Vfv{ diff --git a/utils/dialoged/src/bitmaps/radiobtn.xpm b/utils/dialoged/src/bitmaps/radiobtn.xpm deleted file mode 100644 index 30110a622c..0000000000 --- a/utils/dialoged/src/bitmaps/radiobtn.xpm +++ /dev/null @@ -1,26 +0,0 @@ -/* XPM */ -static char * radiobtn_xpm[] = { -/* width height ncolors chars_per_pixel */ -"16 16 4 1", -/* colors */ -" s None c None", -". c #000000", -"+ c #c0c0c0", -"@ c #ffffff", -/* pixels */ -" ", -" ", -" ", -" ", -" .... ", -" .@@@@+ ", -" .@@@@@@+ ", -" .@@@..@@@+ ", -" .@@....@@+ ", -" .@@@..@@@+ ", -" .@@@@@@+ ", -" .@@@@+ ", -" ++++ ", -" ", -" ", -" "}; diff --git a/utils/dialoged/src/bitmaps/report.xbm b/utils/dialoged/src/bitmaps/report.xbm deleted file mode 100644 index 601853aecb..0000000000 --- a/utils/dialoged/src/bitmaps/report.xbm +++ /dev/null @@ -1,9 +0,0 @@ -#define report_width 24 -#define report_height 24 -static char report_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x03, - 0x10, 0x00, 0x02, 0x90, 0x77, 0x02, 0x90, 0x7d, 0x02, 0x10, 0x00, 0x02, - 0x10, 0x37, 0x02, 0x10, 0x00, 0x02, 0x10, 0x00, 0x02, 0xd0, 0x03, 0x02, - 0x10, 0x00, 0x02, 0xd0, 0xbc, 0x02, 0x10, 0x00, 0x02, 0xd0, 0xbb, 0x02, - 0x10, 0x00, 0x02, 0xf0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/utils/dialoged/src/bitmaps/save.bmp b/utils/dialoged/src/bitmaps/save.bmp deleted file mode 100644 index 545671fa17b5663261c96e2845fb807df0bd9377..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 238 zcmaKlu?@p83fFkOK&AjlojM7)f##6|H&sLz0aQ}KG*?w_=1a8 zRQjeqNs}nGHVvg!?_KWBVq|HI=pZK|q%s357h1PxSLBJg*JZ^kAph&Un|rg8-^k)t F;0F1cIhX(d diff --git a/utils/dialoged/src/bitmaps/save.xbm b/utils/dialoged/src/bitmaps/save.xbm deleted file mode 100644 index 2f53311c36..0000000000 --- a/utils/dialoged/src/bitmaps/save.xbm +++ /dev/null @@ -1,9 +0,0 @@ -#define save_width 24 -#define save_height 24 -static char save_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xe0, 0xff, 0x07, 0xa0, 0x00, 0x05, 0xa0, 0x00, 0x07, 0xa0, 0x00, 0x05, - 0xa0, 0x00, 0x05, 0xa0, 0x00, 0x05, 0xa0, 0x00, 0x05, 0x20, 0xff, 0x04, - 0x20, 0x00, 0x04, 0x20, 0xff, 0x05, 0x20, 0x3f, 0x05, 0x20, 0x3f, 0x05, - 0x20, 0x3f, 0x05, 0xc0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/utils/dialoged/src/bitmaps/save.xpm b/utils/dialoged/src/bitmaps/save.xpm deleted file mode 100644 index 01b18f9340..0000000000 --- a/utils/dialoged/src/bitmaps/save.xpm +++ /dev/null @@ -1,25 +0,0 @@ -/* XPM */ -static char *save_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 4 1", -" c None", -". c Black", -"X c #808000", -"o c #808080", -/* pixels */ -" ", -" .............. ", -" .X. . . ", -" .X. ... ", -" .X. .X. ", -" .X. .X. ", -" .X. .X. ", -" .X. .X. ", -" .XX........oX. ", -" .XXXXXXXXXXXX. ", -" .XX.........X. ", -" .XX...... .X. ", -" .XX...... .X. ", -" .XX...... .X. ", -" ............. " -}; diff --git a/utils/dialoged/src/bitmaps/scrolbar.ico b/utils/dialoged/src/bitmaps/scrolbar.ico deleted file mode 100644 index 29bcbc0708d7c8dda70b2da8c845657236d66aba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1078 zcmeH`F%AMD5Jf+$g_Yq5RA!IiQ9QzSY&o4Ai{p3;e6wT=H``bk3;pot&oG1#@{xiD zr4;3O4AKRSvDage&If5^Ex{`cIuZeU_hAxKW?hJ+s!CbVo}-jA_BD0D~^aPi%JfB&S2&XUuh z7=sMgK|0_ewEgI${YDz;MRatX;RglM8CV%|&A0Pu? zh2`9mA7RgVrd~%Ts;}JYyL0IPPxuG_zGLXDoT<)_=K9o<@)^%ehqP2!n3L8Bgy^9!JDlx^hU3T7C&EOyX7n>L`dWhZJ5cuK1 gtcO$oSHtRfM}KLmeE)!@+ce_f4BN>1W!f&k0TQZYDF6Tf diff --git a/utils/dialoged/src/bitmaps/text.xbm b/utils/dialoged/src/bitmaps/text.xbm deleted file mode 100644 index b823e479c5..0000000000 --- a/utils/dialoged/src/bitmaps/text.xbm +++ /dev/null @@ -1,13 +0,0 @@ -#define text_width 28 -#define text_height 28 -static char text_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xf0, 0xff, 0xff, 0x00, 0x10, 0x00, 0x80, 0x00, 0x10, 0x00, 0xa0, 0x00, - 0x10, 0x60, 0xa0, 0x00, 0x10, 0x60, 0xa0, 0x00, 0x10, 0x60, 0xa0, 0x00, - 0x90, 0xe7, 0xa3, 0x00, 0xd0, 0x6c, 0xa6, 0x00, 0x10, 0x6f, 0xa6, 0x00, - 0x90, 0x6d, 0xa6, 0x00, 0xd0, 0x6c, 0xa6, 0x00, 0xd0, 0x6c, 0xa6, 0x00, - 0x90, 0xef, 0xa3, 0x00, 0x10, 0x00, 0xa0, 0x00, 0x10, 0x00, 0x80, 0x00, - 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00}; diff --git a/utils/dialoged/src/bitmaps/textmult.ico b/utils/dialoged/src/bitmaps/textmult.ico deleted file mode 100644 index a03bf6505130befdbee7aef06e50bed40a64b93b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1078 zcmeH`I}*Y$3`EyJk&4L?TroKYM@pBJDmj*qL+KlsCx03y1sw%!EUhHVpJX;t&`B}Q zay(Dc4W8$gFG0GVrG;9=?pV+T59mFHNer1a!V@Z`1p7p(L#23x@p#GIA3yyC(7;#W zI(OwqZ0OvGk6~z>88lr9Pxz6}A04(;>{j1;?X0Qg+ip4MQsC0rsph`G>z(P#o@Z}l eJ#D#+{it(IFpYCtYK`jcJsf%J@%SI#c?~Z!xd>GN diff --git a/utils/dialoged/src/bitmaps/textmult.xpm b/utils/dialoged/src/bitmaps/textmult.xpm deleted file mode 100644 index ad9c5d7244..0000000000 --- a/utils/dialoged/src/bitmaps/textmult.xpm +++ /dev/null @@ -1,27 +0,0 @@ -/* XPM */ -static char * textmult_xpm[] = { -/* width height ncolors chars_per_pixel */ -"16 16 5 1", -/* colors */ -" s None c None", -". c #000000", -"+ c #c0c0c0", -"@ c #808080", -"# c #ffffff", -/* pixels */ -"@@@@@@@@@@@@@@@@", -"@..............@", -"@.##########+++@", -"@.#.#####.##+.+@", -"@.#.###.#.##...@", -"@.#.#.#.#.##+++@", -"@.##########+++@", -"@.##########+++@", -"@.#.#.######+++@", -"@.###.#.####+++@", -"@.#.#.#.####+++@", -"@.##########+++@", -"@.##########...@", -"@.##########+.+@", -"@.+++++++++++++@", -"@@@@@@@@@@@@@@@@"}; diff --git a/utils/dialoged/src/bitmaps/textsing.ico b/utils/dialoged/src/bitmaps/textsing.ico deleted file mode 100644 index 74cfd83d87650900f6885b41af4f32bb99d987b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1078 zcmeH`Jrcqo5QQJn!b&*;m6Kz5D=D|ku{e&UH^6VfI68@yg@r!YeftBM4D(hB8kAC$ z<1$D`IL4ljLE3Mmky^q|SkM*^IJ*v$*fQ&cCsZi~_C{@6wR(iHyyWhWpMC)}@Kw0Z zUHJ){b#BD#Ff>jFO*g_5ex&p14m&qw>#vdR>f=$#53l^Fw}aXL1MKGS^mOU_y!p&6 Jd+#dGcWz%N>5u>b diff --git a/utils/dialoged/src/bitmaps/textsing.xpm b/utils/dialoged/src/bitmaps/textsing.xpm deleted file mode 100644 index 346ce3b0ae..0000000000 --- a/utils/dialoged/src/bitmaps/textsing.xpm +++ /dev/null @@ -1,27 +0,0 @@ -/* XPM */ -static char * textsing_xpm[] = { -/* width height ncolors chars_per_pixel */ -"16 16 5 1", -/* colors */ -" s None c None", -". c #000000", -"+ c #c0c0c0", -"@ c #808080", -"# c #ffffff", -/* pixels */ -" ", -" ", -" ", -"@@@@@@@@@@@@@@@@", -"@..............@", -"@.############+@", -"@.#...########+@", -"@.##.#########+@", -"@.##.#########+@", -"@.#...########+@", -"@.############+@", -"@.+++++++++++++@", -"@@@@@@@@@@@@@@@@", -" ", -" ", -" "}; diff --git a/utils/dialoged/src/bitmaps/textsw.xbm b/utils/dialoged/src/bitmaps/textsw.xbm deleted file mode 100644 index 686131701c..0000000000 --- a/utils/dialoged/src/bitmaps/textsw.xbm +++ /dev/null @@ -1,13 +0,0 @@ -#define textsw_width 28 -#define textsw_height 28 -static char textsw_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xc0, 0xff, 0x1f, 0x00, 0x40, 0x00, 0x10, 0x00, 0x40, 0x00, 0x10, 0x00, - 0x40, 0x9f, 0x11, 0x00, 0x40, 0x00, 0x10, 0x00, 0x40, 0x00, 0x10, 0x00, - 0x40, 0x7f, 0x13, 0x00, 0x40, 0x00, 0x10, 0x00, 0x40, 0x00, 0x10, 0x00, - 0x40, 0xeb, 0x13, 0x00, 0x40, 0x00, 0x10, 0x00, 0x40, 0x00, 0x10, 0x00, - 0x40, 0xdf, 0x11, 0x00, 0x40, 0x00, 0x10, 0x00, 0xc0, 0xff, 0x1f, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00}; diff --git a/utils/dialoged/src/bitmaps/tick.bmp b/utils/dialoged/src/bitmaps/tick.bmp deleted file mode 100644 index 3673eda5de62c1fc3db392cba62bc2e74ad51d90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 198 zcmZvT!3}^g3_|a<9syhMs~1$ShPC0%zsoR vTD4Ar8P!@-DTScB)%%zLZ&*;|h`JQ3^NiE0|T7F9qjzl2^cf>9QF?FMZ8d)1PO#h65C0vwDWSpW2H>QNDM@S zmJIC1PUJQ30?Ld;pCXxv6~fs8i2~vH|E+&J(|oGdii}_YJ!sUz z((YWzGDEE-(MqWb%&45RLI?!KTcy|pcxFM{N3r657vo{E>4N2o^{e;ZbNANgU-K?u CAW)M4 diff --git a/utils/dialoged/src/bitmaps/vert.xbm b/utils/dialoged/src/bitmaps/vert.xbm deleted file mode 100644 index e8ac230c3b..0000000000 --- a/utils/dialoged/src/bitmaps/vert.xbm +++ /dev/null @@ -1,9 +0,0 @@ -#define vert_width 24 -#define vert_height 24 -static char vert_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xf8, 0x07, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0xf0, 0x09, 0x04, - 0x10, 0x09, 0x04, 0x10, 0x09, 0x04, 0x10, 0x09, 0x04, 0x10, 0x09, 0x04, - 0xf0, 0x09, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0xf8, 0x07, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/utils/dialoged/src/bitmaps/vert.xpm b/utils/dialoged/src/bitmaps/vert.xpm deleted file mode 100644 index 0f85e23920..0000000000 --- a/utils/dialoged/src/bitmaps/vert.xpm +++ /dev/null @@ -1,24 +0,0 @@ -/* XPM */ -static char *vert_xpm[] = { -/* columns rows colors chars-per-pixel */ -"16 15 3 1", -" c None", -". c Black", -"X c Yellow", -/* pixels */ -" ", -" ........", -" .XXXXXX.", -" .XXXXXX.", -" ..... .XXXXXX.", -" .XXX. .XXXXXX.", -" .XXX. .XXXXXX.", -" .XXX. .XXXXXX.", -" .XXX. .XXXXXX.", -" ..... .XXXXXX.", -" .XXXXXX.", -" .XXXXXX.", -" ........", -" ", -" " -}; diff --git a/utils/dialoged/src/bitmaps/wxbuild.xbm b/utils/dialoged/src/bitmaps/wxbuild.xbm deleted file mode 100644 index 8038c9110f..0000000000 --- a/utils/dialoged/src/bitmaps/wxbuild.xbm +++ /dev/null @@ -1,46 +0,0 @@ -#define wxbuild_width 64 -#define wxbuild_height 64 -static char wxbuild_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x03, 0x33, 0x0c, 0xf0, 0xff, 0xff, 0xff, 0x3f, - 0x03, 0x33, 0x0c, 0xf0, 0xff, 0xff, 0xff, 0x3f, 0x33, 0xc3, 0x03, 0x30, - 0x00, 0x00, 0x00, 0x30, 0x33, 0xc3, 0x03, 0x30, 0x00, 0x00, 0x00, 0x30, - 0x33, 0xc3, 0x03, 0x30, 0x3f, 0xcf, 0xcc, 0x33, 0x33, 0xc3, 0x03, 0x30, - 0x3f, 0xcf, 0xcc, 0x33, 0xcc, 0x30, 0x0c, 0x30, 0x00, 0x00, 0x00, 0x30, - 0xcc, 0x30, 0x0c, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, - 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, - 0x00, 0xc0, 0xff, 0xff, 0xff, 0xf3, 0x33, 0x33, 0x00, 0xc0, 0xff, 0xff, - 0xff, 0xf3, 0x33, 0x33, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x03, 0x00, 0x30, - 0x00, 0xc0, 0x00, 0x00, 0x00, 0x03, 0x00, 0x30, 0x00, 0xc0, 0x00, 0x00, - 0x00, 0x03, 0x00, 0x30, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x03, 0x00, 0x30, - 0x00, 0xc0, 0xfc, 0xf3, 0x0f, 0x33, 0xfc, 0x30, 0x00, 0xc0, 0xfc, 0xf3, - 0x0f, 0x33, 0xfc, 0x30, 0x00, 0xc0, 0x0c, 0x33, 0x0c, 0xf3, 0x00, 0x30, - 0x00, 0xc0, 0x0c, 0x33, 0x0c, 0xf3, 0x00, 0x30, 0x00, 0xc0, 0xfc, 0xf3, - 0x0f, 0xf3, 0x03, 0x30, 0x00, 0xc0, 0xfc, 0xf3, 0x0f, 0xf3, 0x03, 0x30, - 0x00, 0xc0, 0x00, 0x00, 0x00, 0xf3, 0x0f, 0x30, 0x00, 0xc0, 0x00, 0x00, - 0x00, 0xf3, 0x0f, 0x30, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xf3, 0x3f, 0x30, - 0x00, 0xc0, 0x00, 0x00, 0x00, 0xf3, 0x3f, 0x30, 0xff, 0xff, 0x00, 0x00, - 0x00, 0xf3, 0xff, 0x30, 0xff, 0xff, 0x00, 0x00, 0x00, 0xf3, 0xff, 0x30, - 0xff, 0xff, 0x00, 0x00, 0x00, 0xf3, 0xff, 0x33, 0xff, 0xff, 0x00, 0x00, - 0x00, 0xf3, 0xff, 0x33, 0x03, 0xc3, 0x00, 0x00, 0x00, 0xf3, 0xff, 0x3f, - 0x03, 0xc3, 0x00, 0x00, 0x00, 0xf3, 0xff, 0x3f, 0x03, 0xc3, 0x00, 0x00, - 0x00, 0xf3, 0x3f, 0x30, 0x03, 0xc3, 0x00, 0x00, 0x00, 0xf3, 0x3f, 0x30, - 0xff, 0xff, 0x00, 0x00, 0x00, 0xf3, 0x3c, 0x30, 0xff, 0xff, 0x00, 0x00, - 0x00, 0xf3, 0x3c, 0x30, 0x03, 0xc0, 0xff, 0xff, 0xff, 0x33, 0xf0, 0x30, - 0x03, 0xc0, 0xff, 0xff, 0xff, 0x33, 0xf0, 0x30, 0x03, 0x00, 0x00, 0x33, - 0x00, 0x00, 0xf0, 0x30, 0x03, 0x00, 0x00, 0x33, 0x00, 0x00, 0xf0, 0x30, - 0x03, 0x00, 0x00, 0xf3, 0xfc, 0x00, 0xc0, 0x33, 0x03, 0x00, 0x00, 0xf3, - 0xfc, 0x00, 0xc0, 0x33, 0x03, 0xc0, 0x0c, 0x33, 0x00, 0x00, 0xc0, 0x33, - 0x03, 0xc0, 0x0c, 0x33, 0x00, 0x00, 0xc0, 0x33, 0xf3, 0xf3, 0x3f, 0x33, - 0xfc, 0xcc, 0x0f, 0x30, 0xf3, 0xf3, 0x3f, 0x33, 0xfc, 0xcc, 0x0f, 0x30, - 0x33, 0xc0, 0x0c, 0x33, 0x00, 0x00, 0x00, 0x30, 0x33, 0xc0, 0x0c, 0x33, - 0x00, 0x00, 0x00, 0x30, 0x33, 0x00, 0x00, 0xf3, 0xff, 0xff, 0xff, 0x3f, - 0x33, 0x00, 0x00, 0xf3, 0xff, 0xff, 0xff, 0x3f, 0x33, 0x00, 0x00, 0x03, - 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, - 0xf3, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0xf3, 0x03, 0x00, 0x03, - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x03, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/utils/dialoged/src/bitmaps/wxwin.bmp b/utils/dialoged/src/bitmaps/wxwin.bmp deleted file mode 100644 index 6817374f3d8e310d78339deaa35b6c79e7fd8443..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 630 zcmaKpF>b>!3`NvQ?mL9S-sevHF?)y-#}OB>P65EnExfkK~NxH zrocyvlw|$&I zI!a}xosQs{>rsvTIP%4E{e^pu8a}Ts_ixdX{R`*n b#-P7kC*;{23j)rHmrh2|(K)_3wcqasJF!19 diff --git a/utils/dialoged/src/bitmaps/wxwin.xbm b/utils/dialoged/src/bitmaps/wxwin.xbm deleted file mode 100644 index a0da1d2eea..0000000000 --- a/utils/dialoged/src/bitmaps/wxwin.xbm +++ /dev/null @@ -1,12 +0,0 @@ -#define wxwin_width 32 -#define wxwin_height 32 -static char wxwin_bits[] = { - 0x00,0x80,0x01,0x00,0x81,0x8f,0x1d,0xc0,0xc5,0x9a,0x25,0xa0,0x54,0x92,0x49, - 0x50,0x51,0x92,0x91,0x28,0xc5,0x9f,0x21,0x15,0xd4,0x9a,0x41,0x0a,0xd1,0x92, - 0x81,0x04,0x45,0x92,0x41,0x09,0x54,0x93,0xa1,0x12,0x51,0x9f,0x51,0x24,0xc5, - 0x99,0x29,0x48,0x54,0x80,0x15,0x90,0x10,0x80,0x0d,0xe0,0x00,0x80,0x01,0x00, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x80,0x01,0x00,0x00,0x83,0x01, - 0x00,0x80,0x81,0x01,0x08,0x80,0x80,0x01,0x18,0x38,0x87,0x31,0x30,0xfc,0x8f, - 0x31,0x20,0xfc,0x83,0x01,0x20,0xfc,0x83,0x81,0x23,0xfc,0x83,0x01,0x20,0xfc, - 0x8f,0x01,0x20,0xfc,0x8f,0x31,0x30,0xf8,0x8f,0x31,0x18,0x70,0x87,0x01,0x08, - 0x00,0x80,0x01,0x00,0x00,0x80,0x01,0x00}; diff --git a/utils/dialoged/src/bitmaps/wxwin.xpm b/utils/dialoged/src/bitmaps/wxwin.xpm deleted file mode 100644 index f3f11c2a9a..0000000000 --- a/utils/dialoged/src/bitmaps/wxwin.xpm +++ /dev/null @@ -1,46 +0,0 @@ -/* XPM */ -static char *wxwin_xpm[] = { -/* columns rows colors chars-per-pixel */ -"32 32 8 1", -" c Gray100", -". c Black", -"X c Green", -"o c Blue", -"O c Red", -"+ c #c0c0c0", -"@ c Yellow", -"# c Cyan", -/* pixels */ -" ..XXXXXXXXXXXXXXX", -"o ..... ..X...XXXXXXXXX..", -"o o ..O.X.. ..X.++.XXXXXXX.+.", -" o o .OO.XX. ..XX.++.XXXXX.+.X", -"O o .OO.XX. ..XXX.++.XXX.+.XX", -"O O ....... ..XXXX.++.X.+.XXX", -" O O ..o.@.. ..XXXXX.++.+.XXXX", -"o O ..o.@@. ..XXXXXX.++.XXXXX", -"o o .oo.@@. ..XXXXX.+.++.XXXX", -" o o .o..@@. ..XXXX.+.X.++.XXX", -". o .o..... ..XXX.+.XXX.++.XX", -". . ... .. ..XX.+.XXXXX.++.X", -" . . . ..X.+.XXXXXXX.++.", -" . ..X..XXXXXXXXX...", -" ..XXXXXXXXXXXXXXX", -"................................", -"................................", -"###############..@@@@@@@@@@@@@@@", -"########OO#####..@@@@@@@@@@@@@@@", -"#######OO######..@@@@@@@@@@.@@@@", -"#######O#######..@@@@@@@@@@..@@@", -"###OOO##OOO####..@@@..@@@@@@..@@", -"##OOOOOOOOOO###..@@@..@@@@@@@.@@", -"##OOOOOOOO#####..@@@@@@@@@@@@.@@", -"##OOOOOOOO#####..@@@@@@...@@@.@@", -"##OOOOOOOO#####..@@@@@@@@@@@@.@@", -"##OOOOOOOOOO###..@@@@@@@@@@@@.@@", -"##OOOOOOOOOO###..@@@..@@@@@@..@@", -"###OOOOOOOOO###..@@@..@@@@@..@@@", -"####OOO#OOO####..@@@@@@@@@@.@@@@", -"###############..@@@@@@@@@@@@@@@", -"###############..@@@@@@@@@@@@@@@" -}; diff --git a/utils/dialoged/src/dialoged.cpp b/utils/dialoged/src/dialoged.cpp deleted file mode 100644 index 2102995171..0000000000 --- a/utils/dialoged/src/dialoged.cpp +++ /dev/null @@ -1,58 +0,0 @@ -// Name: dialoged.cpp -// Purpose: Main Dialog Editor implementation file -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "dialoged.h" -#endif - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include "dialoged.h" - -IMPLEMENT_APP(MyApp) - -MyApp::MyApp(void) -{ -} - -wxResourceManager *theResourceManager = NULL; - -#include "symbtabl.h" - -bool MyApp::OnInit(void) -{ - theResourceManager = new wxResourceManager; - theResourceManager->Initialize(); - - theResourceManager->ShowResourceEditor(TRUE); - - if (argc > 1) - theResourceManager->Load(argv[1]); - - SetTopWindow(theResourceManager->GetEditorFrame()); - - return TRUE; -} - -int MyApp::OnExit(void) -{ - delete theResourceManager; - theResourceManager = NULL; - return 0; -} diff --git a/utils/dialoged/src/dialoged.def b/utils/dialoged/src/dialoged.def deleted file mode 100644 index a7c0fbbaa5..0000000000 --- a/utils/dialoged/src/dialoged.def +++ /dev/null @@ -1,8 +0,0 @@ -NAME DialogEd -DESCRIPTION 'wxWindows Dialog Editor' -EXETYPE WINDOWS -STUB 'WINSTUB.EXE' -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE -HEAPSIZE 1024 -STACKSIZE 8192 diff --git a/utils/dialoged/src/dialoged.h b/utils/dialoged/src/dialoged.h deleted file mode 100644 index adfcb9ace9..0000000000 --- a/utils/dialoged/src/dialoged.h +++ /dev/null @@ -1,37 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dialoged.h -// Purpose: Dialog Editor application header file -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma interface "dialoged.h" -#endif - -#ifndef dialogedh -#define dialogedh - -#include "wx/proplist.h" -#include "reseditr.h" - -class MyChild; - -// Define a new application -class MyApp: public wxApp -{ - public: - MyApp(void); - bool OnInit(void); - int OnExit(void); -}; - -DECLARE_APP(MyApp) - -extern wxFrame *GetMainFrame(void); - -#endif diff --git a/utils/dialoged/src/dialoged.ico b/utils/dialoged/src/dialoged.ico deleted file mode 100644 index cec6bac64ecd29c4736882dc3976810ac1d87ce4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmcgpF%H5o47>tEH(+7T$S>eYWeOYF=r8z6p2N z1GQt9>PwC(lKGc9t$0B6(+ad_Yi;MUf8wKD=*76b_SZc2QwsiZ-sD&F*q`*;ui}Sw k5xn(JoWGT$3m -#include -#include -#include - -#if wxUSE_IOSTREAMH -#if defined(__WXMSW__) && !defined(__GNUWIN32__) -#include -#else -#include -#endif -#else -#include -#endif - -#include "reseditr.h" -#include "winprop.h" -#include "dlghndlr.h" -#include "edlist.h" - -IMPLEMENT_CLASS(wxResourceEditorDialogHandler, wxEvtHandler) -IMPLEMENT_CLASS(wxResourceEditorControlHandler, wxEvtHandler) - -BEGIN_EVENT_TABLE(wxResourceEditorDialogHandler, wxEvtHandler) - EVT_PAINT(wxResourceEditorDialogHandler::OnPaint) - EVT_MOUSE_EVENTS(wxResourceEditorDialogHandler::OnMouseEvent) - EVT_SIZE(wxResourceEditorDialogHandler::OnSize) -END_EVENT_TABLE() - -BEGIN_EVENT_TABLE(wxResourceEditorControlHandler, wxEvtHandler) - EVT_MOUSE_EVENTS(wxResourceEditorControlHandler::OnMouseEvent) -END_EVENT_TABLE() - -/* - * Dialog box event handler - */ - -wxResourceEditorDialogHandler::wxResourceEditorDialogHandler(wxPanel *dialog, wxItemResource *resource, - wxEvtHandler *oldHandler, wxResourceManager *manager) -{ - handlerDialog = dialog; - handlerResource = resource; - handlerOldHandler = oldHandler; - resourceManager = manager; - - dragMode = wxDRAG_MODE_NONE; - dragType = wxDRAG_TYPE_NONE; - dragItem = NULL; - firstDragX = 0; - firstDragY = 0; - oldDragX = 0; - oldDragY = 0; - dragTolerance = 3; - checkTolerance = TRUE; - m_mouseCaptured = FALSE; -// m_treeItem = 0; -} - -wxResourceEditorDialogHandler::~wxResourceEditorDialogHandler(void) -{ -} - -void wxResourceEditorDialogHandler::OnItemSelect(wxControl *item, bool select) -{ - if (select) - resourceManager->AddSelection(item); - else - resourceManager->RemoveSelection(item); -} - -void wxResourceEditorDialogHandler::OnPaint(wxPaintEvent& WXUNUSED(event)) -{ - wxPaintDC dc(handlerDialog); - - PaintSelectionHandles(dc); -} - -// Add event handlers for all children -void wxResourceEditorDialogHandler::AddChildHandlers(void) -{ - wxNode *node = handlerDialog->GetChildren().First(); - while ( node ) - { - wxControl *child = (wxControl *)node->Data(); - wxEvtHandler *childHandler = child->GetEventHandler(); - if ( child->IsKindOf(CLASSINFO(wxControl)) && childHandler == child ) - child->PushEventHandler(new wxResourceEditorControlHandler(child, childHandler)); - node = node->Next(); - } -} - -void wxResourceEditorDialogHandler::OnLeftClick(int x, int y, int keys) -{ - if (keys & wxKEY_CTRL) - { - wxResourceManager::GetCurrentResourceManager()->EditWindow(handlerDialog); - return; - } - - // Deselect all items if click on panel - if (wxResourceManager::GetCurrentResourceManager()->GetEditorControlList()->GetSelection() == RESED_POINTER) - { - int needsRefresh = 0; - wxNode *node = handlerDialog->GetChildren().First(); - while (node) - { - wxControl *item = (wxControl *)node->Data(); - wxResourceEditorControlHandler *childHandler = (wxResourceEditorControlHandler *)item->GetEventHandler(); - if (item->IsKindOf(CLASSINFO(wxControl)) && childHandler->IsSelected()) - { - needsRefresh ++; - OnItemSelect(item, FALSE); - childHandler->SelectItem(FALSE); - } - node = node->Next(); - } - if (needsRefresh > 0) - { - wxClientDC dc(handlerDialog); - dc.Clear(); - handlerDialog->Refresh(); - } - return; - } - - // Round down to take account of dialog units - wxItemResource* resource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(handlerDialog); - if (resource->GetResourceStyle() & wxRESOURCE_DIALOG_UNITS) - { - wxPoint pt = handlerDialog->ConvertPixelsToDialog(wxPoint(x, y)); - - // Convert back so we've rounded down - pt = handlerDialog->ConvertDialogToPixels(pt); - pt = handlerDialog->ConvertPixelsToDialog(pt); - pt = handlerDialog->ConvertDialogToPixels(pt); - x = pt.x; - y = pt.y; - } - - switch (wxResourceManager::GetCurrentResourceManager()->GetEditorControlList()->GetSelection()) - { - case RESED_BUTTON: - resourceManager->CreatePanelItem(handlerResource, handlerDialog, "wxButton", x, y); - break; - case RESED_BMPBUTTON: - resourceManager->CreatePanelItem(handlerResource, handlerDialog, "wxBitmapButton", x, y, TRUE); - break; - case RESED_STATICTEXT: - resourceManager->CreatePanelItem(handlerResource, handlerDialog, "wxStaticText", x, y); - break; - case RESED_STATICBMP: - resourceManager->CreatePanelItem(handlerResource, handlerDialog, "wxStaticBitmap", x, y, TRUE); - break; - case RESED_TEXTCTRL_SINGLE: - resourceManager->CreatePanelItem(handlerResource, handlerDialog, "wxTextCtrl (single-line)", x, y); - break; - case RESED_TEXTCTRL_MULTIPLE: - resourceManager->CreatePanelItem(handlerResource, handlerDialog, "wxTextCtrl (multi-line)", x, y); - break; - case RESED_CHOICE: - resourceManager->CreatePanelItem(handlerResource, handlerDialog, "wxChoice", x, y); - break; - case RESED_COMBOBOX: - resourceManager->CreatePanelItem(handlerResource, handlerDialog, "wxComboBox", x, y); - break; - case RESED_CHECKBOX: - resourceManager->CreatePanelItem(handlerResource, handlerDialog, "wxCheckBox", x, y); - break; - case RESED_RADIOBOX: - resourceManager->CreatePanelItem(handlerResource, handlerDialog, "wxRadioBox", x, y); - break; - case RESED_RADIOBUTTON: - resourceManager->CreatePanelItem(handlerResource, handlerDialog, "wxRadioButton", x, y); - break; - case RESED_LISTBOX: - resourceManager->CreatePanelItem(handlerResource, handlerDialog, "wxListBox", x, y); - break; - case RESED_SLIDER: - resourceManager->CreatePanelItem(handlerResource, handlerDialog, "wxSlider", x, y); - break; - case RESED_GAUGE: - resourceManager->CreatePanelItem(handlerResource, handlerDialog, "wxGauge", x, y); - break; - case RESED_STATICBOX: - resourceManager->CreatePanelItem(handlerResource, handlerDialog, "wxStaticBox", x, y); - break; - case RESED_SCROLLBAR: - resourceManager->CreatePanelItem(handlerResource, handlerDialog, "wxScrollBar", x, y); - break; - default: - break; - } - - // Now switch pointer on. - if (wxResourceManager::GetCurrentResourceManager()->GetEditorControlList()->GetSelection() != RESED_POINTER) - { - wxResourceManager::GetCurrentResourceManager()->GetEditorControlList()->SetItemState(RESED_POINTER, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED); - } -} - -void wxResourceEditorDialogHandler::OnRightClick(int x, int y, int WXUNUSED(keys)) -{ - wxMenu *menu = resourceManager->GetPopupMenu(); - menu->SetClientData((char *)handlerDialog); - handlerDialog->PopupMenu(menu, x, y); -} - -void wxResourceEditorDialogHandler::OnItemLeftClick(wxControl *item, int WXUNUSED(x), int WXUNUSED(y), int keys) -{ - if (keys & wxKEY_CTRL) - { - wxResourceManager::GetCurrentResourceManager()->EditWindow(item); - return; - } - -/* - // If this is a wxStaticBox and the pointer isn't an arrow, chances - // are that we really meant to place an item on the panel. - // Fake this event. - if ((item->GetClassInfo() == CLASSINFO(wxStaticBox)) && resourceManager->GetEditorPalette()->currentlySelected != PALETTE_ARROW) - { - OnLeftClick(x, y, keys); - return; - } -*/ - - wxResourceEditorControlHandler *childHandler = (wxResourceEditorControlHandler *)item->GetEventHandler(); - - if (childHandler->IsSelected()) - { - childHandler->SelectItem(FALSE); - OnItemSelect(item, FALSE); - - wxClientDC dc(handlerDialog); - dc.Clear(); - handlerDialog->Refresh(); - } - else - { - childHandler->SelectItem(TRUE); - OnItemSelect(item, TRUE); - - // Deselect other items if shift is not pressed - int needsRefresh = 0; - if (!(keys & wxKEY_SHIFT)) - { - wxNode *node = item->GetParent()->GetChildren().First(); - while (node) - { - wxControl *child = (wxControl *)node->Data(); - wxResourceEditorControlHandler *childHandler2 = (wxResourceEditorControlHandler *)child->GetEventHandler(); - if (child->IsKindOf(CLASSINFO(wxControl)) && childHandler2->IsSelected() && child != item) - { - childHandler2->SelectItem(FALSE); - OnItemSelect(child, FALSE); - needsRefresh ++; - } - node = node->Next(); - } - } - - wxClientDC dc(handlerDialog); - childHandler->DrawSelectionHandles(dc); - - if (needsRefresh > 0) - { - dc.Clear(); - handlerDialog->Refresh(); - } - } -} - -void wxResourceEditorDialogHandler::OnItemRightClick(wxControl *item, int x, int y, int WXUNUSED(keys)) -{ -/* - if (keys & wxKEY_CTRL) - { - wxDebugMsg("Item %s, selected = %d\n", item->GetName(), item->IsSelected()); - return; - } -*/ - - wxMenu *menu = resourceManager->GetPopupMenu(); - menu->SetClientData((char *)item); - handlerDialog->PopupMenu(menu, x, y); -} - -// Under Windows 95, you can resize a panel interactively depending on -// window styles. -void wxResourceEditorDialogHandler::OnSize(wxSizeEvent& event) -{ - // Update the associated resource - int w, h; - handlerDialog->GetClientSize(& w, & h); - - wxItemResource* resource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(handlerDialog); - if (resource->GetResourceStyle() & wxRESOURCE_DIALOG_UNITS) - { - wxSize sz = handlerDialog->ConvertPixelsToDialog(wxSize(w, h)); - w = sz.x; h = sz.y; - } - resource->SetSize(resource->GetX(), resource->GetY(), w, h); -} - -// An event outside any items: may be a drag event. -void wxResourceEditorDialogHandler::OnMouseEvent(wxMouseEvent& event) -{ - if (GetEvtHandlerEnabled()) - { - // If we're dragging an item or selection handle, - // continue dragging. - if (dragMode != wxDRAG_MODE_NONE) - { - ProcessItemEvent(dragItem, event, dragType); - return; - } - - long x, y; - event.Position(&x, &y); - - // Find which selection handle we're on, if any - wxNode *node = handlerDialog->GetChildren().First(); - while (node) - { - wxWindow *win = (wxWindow *)node->Data(); - if (win->IsKindOf(CLASSINFO(wxControl))) - { - wxControl *item = (wxControl *)win; - wxResourceEditorControlHandler *childHandler = (wxResourceEditorControlHandler *)item->GetEventHandler(); - int selHandle = childHandler->SelectionHandleHitTest(x, y); - if (selHandle > 0) - { - ProcessItemEvent(item, event, selHandle); - return; - } - } - node = node->Next(); - } - - // We're not on an item or selection handle. - // so... check for a left or right click event - // to send to the application. - int keys = 0; - if (event.ShiftDown()) keys = keys | wxKEY_SHIFT; - if (event.ControlDown()) keys = keys | wxKEY_CTRL; - - if (event.LeftUp()) - { - if (m_mouseCaptured) - { - handlerDialog->ReleaseMouse(); - m_mouseCaptured = FALSE; - } - - OnLeftClick(x, y, keys); - } - else if (event.RightDown()) - { - if (m_mouseCaptured) - { - handlerDialog->ReleaseMouse(); - m_mouseCaptured = FALSE; - } - - OnRightClick(x, y, keys); - } - else if (event.LeftDClick()) - { - if (m_mouseCaptured) - { - handlerDialog->ReleaseMouse(); - m_mouseCaptured = FALSE; - } - wxResourceManager::GetCurrentResourceManager()->EditWindow(handlerDialog); - } - } - else - event.Skip(); -} - -void wxResourceEditorDialogHandler::OnItemEvent(wxControl *item, wxMouseEvent& event) -{ - if (!GetEvtHandlerEnabled()) - return; - - // Not a selection handle event: just a normal item event. - // Transform to panel coordinates. - int x, y; - item->GetPosition(&x, &y); - - event.m_x = event.m_x + x; - event.m_y = event.m_y + y; - - ProcessItemEvent(item, event, dragType); -} - -void wxResourceEditorDialogHandler::ProcessItemEvent(wxControl *item, wxMouseEvent& event, int selectionHandle) -{ - wxResourceEditorControlHandler *childHandler = (wxResourceEditorControlHandler *)item->GetEventHandler(); - - long x, y; - event.Position(&x, &y); - int keys = 0; - if (event.ShiftDown()) keys = keys | wxKEY_SHIFT; - if (event.ControlDown()) keys = keys | wxKEY_CTRL; - bool dragging = event.Dragging(); - if (dragging) - { - int dx = (int)abs((x - firstDragX)); - int dy = (int)abs((y - firstDragY)); - if (checkTolerance && (dx <= dragTolerance) && (dy <= dragTolerance)) - { - return; - } - else - // If we've ignored the tolerance once, then ALWAYS ignore - // tolerance in this drag, even if we come back within - // the tolerance range. - { - checkTolerance = FALSE; - } - } - if (event.LeftDClick()) - { - if (m_mouseCaptured) - { - handlerDialog->ReleaseMouse(); - m_mouseCaptured = FALSE; - } - - wxResourceManager::GetCurrentResourceManager()->EditWindow(item); - } - else if (dragging && dragItem && dragMode == wxDRAG_MODE_START_LEFT) - { - dragMode = wxDRAG_MODE_CONTINUE_LEFT; - wxClientDC dc(handlerDialog); - childHandler->OnDragBegin(x, y, keys, dc, selectionHandle); - oldDragX = x; oldDragY = y; - if (!m_mouseCaptured) - { - handlerDialog->CaptureMouse(); - m_mouseCaptured = TRUE; - } - } - else if (dragging && dragItem && dragMode == wxDRAG_MODE_CONTINUE_LEFT) - { - wxClientDC dc(handlerDialog); - childHandler->OnDragContinue(FALSE, oldDragX, oldDragY, keys, dc, selectionHandle); - childHandler->OnDragContinue(TRUE, x, y, keys, dc, selectionHandle); - oldDragX = x; oldDragY = y; - } - else if (event.LeftUp() && dragItem && dragMode == wxDRAG_MODE_CONTINUE_LEFT) - { - wxClientDC dc(handlerDialog); - dragMode = wxDRAG_MODE_NONE; - checkTolerance = TRUE; - - childHandler->OnDragContinue(FALSE, oldDragX, oldDragY, keys, dc, selectionHandle); - childHandler->OnDragEnd(x, y, keys, dc, selectionHandle); - - dragItem = NULL; - dragType = wxDRAG_TYPE_NONE; - - if (m_mouseCaptured) - { - handlerDialog->ReleaseMouse(); - m_mouseCaptured = FALSE; - } - } - else if (dragging && dragItem && dragMode == wxDRAG_MODE_START_RIGHT) - { - wxClientDC dc(handlerDialog); - dragMode = wxDRAG_MODE_CONTINUE_RIGHT; - childHandler->OnDragBegin(x, y, keys, dc, selectionHandle); - oldDragX = x; oldDragY = y; - - if (!m_mouseCaptured) - { - handlerDialog->CaptureMouse(); - m_mouseCaptured = TRUE; - } - } - else if (dragging && dragItem && dragMode == wxDRAG_MODE_CONTINUE_RIGHT) - { - oldDragX = x; oldDragY = y; - } - // Obsolete; no longer try to right-drag - else if (event.RightUp() && dragItem && dragMode == wxDRAG_MODE_CONTINUE_RIGHT) - { - dragMode = wxDRAG_MODE_NONE; - checkTolerance = TRUE; - dragItem = NULL; - dragType = wxDRAG_TYPE_NONE; - - if (m_mouseCaptured) - { - handlerDialog->ReleaseMouse(); - m_mouseCaptured = FALSE; - } - } - else if (event.IsButton()) - { - checkTolerance = TRUE; - - if (event.LeftDown()) - { - dragItem = item; - dragMode = wxDRAG_MODE_START_LEFT; - firstDragX = x; - firstDragY = y; - dragType = selectionHandle; - - if (!m_mouseCaptured) - { - handlerDialog->CaptureMouse(); - m_mouseCaptured = TRUE; - } - } - else if (event.RightDown()) - { - if (m_mouseCaptured) - { - handlerDialog->ReleaseMouse(); - m_mouseCaptured = FALSE; - } - - if (item) - childHandler->OnRightClick(x, y, keys); - else - OnRightClick(x, y, keys); - - dragItem = NULL; dragMode = wxDRAG_MODE_NONE; dragType = wxDRAG_TYPE_NONE; - - /* - dragItem = item; - dragMode = wxDRAG_MODE_START_RIGHT; - firstDragX = x; - firstDragY = y; - dragType = selectionHandle; - - if (!m_mouseCaptured) - { - handlerDialog->CaptureMouse(); - m_mouseCaptured = TRUE; - } - */ - } - else if (event.LeftUp()) - { - if (dragItem) - childHandler->OnLeftClick(x, y, keys); - else - OnLeftClick(x, y, keys); - - dragItem = NULL; dragMode = wxDRAG_MODE_NONE; dragType = wxDRAG_TYPE_NONE; - - if (m_mouseCaptured) - { - handlerDialog->ReleaseMouse(); - m_mouseCaptured = FALSE; - } - } - else if (event.RightUp()) - { - /* - if (dragItem) - childHandler->OnRightClick(x, y, keys); - else - OnRightClick(x, y, keys); - - dragItem = NULL; dragMode = wxDRAG_MODE_NONE; dragType = wxDRAG_TYPE_NONE; - - if (m_mouseCaptured) - { - handlerDialog->ReleaseMouse(); - m_mouseCaptured = FALSE; - } - */ - } - } -} - -// Calls DrawSelectionHandles for all items if -// edit mode is on. -void wxResourceEditorDialogHandler::PaintSelectionHandles(wxDC& dc) -{ - if (!GetEvtHandlerEnabled()) - return; - - dc.BeginDrawing(); - - wxNode *node = handlerDialog->GetChildren().First(); - while (node) - { - wxWindow *win = (wxWindow *)node->Data(); - if (win->IsKindOf(CLASSINFO(wxControl))) - { - wxControl *item = (wxControl *)win; - wxResourceEditorControlHandler *childHandler = (wxResourceEditorControlHandler *)item->GetEventHandler(); - - // Don't draw handles for an item that's being moved: it'll - // smear. - if (childHandler->IsSelected() && (item != dragItem)) - childHandler->DrawSelectionHandles(dc); - } - node = node->Next(); - } - dc.EndDrawing(); -} - -/* - * Event handler for controls - */ - -int wxResourceEditorControlHandler::dragOffsetX = 0; -int wxResourceEditorControlHandler::dragOffsetY = 0; - -wxResourceEditorControlHandler::wxResourceEditorControlHandler(wxControl *control, - wxEvtHandler *oldHandler) -{ - handlerControl = control; - handlerOldHandler = oldHandler; - - handleSize = 6; - handleMargin = 1; - isSelected = FALSE; - dragOffsetX = 0; - dragOffsetY = 0; -// m_treeItem = 0; -} - -wxResourceEditorControlHandler::~wxResourceEditorControlHandler(void) -{ -} - -/* - * Manipulation and drawing of items in Edit Mode - */ - -void wxResourceEditorControlHandler::SelectItem(bool select) -{ - isSelected = select; -} - -// Returns TRUE or FALSE -bool wxResourceEditorControlHandler::HitTest(int x, int y) -{ - int xpos, ypos, width, height; - handlerControl->GetPosition(&xpos, &ypos); - handlerControl->GetSize(&width, &height); - - return ((x >= xpos) && (x <= (xpos + width)) && (y >= ypos) && (y <= (ypos + height))); -} - -// Calculate position of the 8 handles -void wxResourceEditorControlHandler::CalcSelectionHandles(int *hx, int *hy) -{ - int xpos, ypos, width, height; - handlerControl->GetPosition(&xpos, &ypos); - handlerControl->GetSize(&width, &height); - int middleX = (xpos + (width/2)); - int middleY = (ypos + (height/2)); - - // Start from top middle, clockwise. -/* - 7 0 1 - - 6 2 - - 5 4 3 -*/ - - hx[0] = (int)(middleX - (handleSize/2)); - hy[0] = ypos - handleSize - handleMargin; - - hx[1] = xpos + width + handleMargin; - hy[1] = ypos - handleSize - handleMargin; - - hx[2] = xpos + width + handleMargin; - hy[2] = (int)(middleY - (handleSize/2)); - - hx[3] = xpos + width + handleMargin; - hy[3] = ypos + height + handleMargin; - - hx[4] = (int)(middleX - (handleSize/2)); - hy[4] = ypos + height + handleMargin; - - hx[5] = xpos - handleSize - handleMargin; - hy[5] = ypos + height + handleMargin; - - hx[6] = xpos - handleSize - handleMargin; - hy[6] = (int)(middleY - (handleSize/2)); - - hx[7] = xpos - handleSize - handleMargin; - hy[7] = ypos - handleSize - handleMargin; -} - -// Returns 0 (no hit), 1 - 8 for which selection handle -// (clockwise from top middle) -int wxResourceEditorControlHandler::SelectionHandleHitTest(int x, int y) -{ - // Handle positions - int hx[8]; - int hy[8]; - CalcSelectionHandles(hx, hy); - - int i; - for (i = 0; i < 8; i++) - { - if ((x >= hx[i]) && (x <= (hx[i] + handleSize)) && (y >= hy[i]) && (y <= (hy[i] + handleSize))) - return (i + 1); - } - return 0; -} - -void wxResourceEditorControlHandler::DrawSelectionHandles(wxDC& dc, bool WXUNUSED(erase)) -{ - dc.SetOptimization(FALSE); - - dc.SetLogicalFunction(wxCOPY); - dc.SetPen(* wxBLACK_PEN); - dc.SetBrush(* wxBLACK_BRUSH); - - dc.SetOptimization(TRUE); - - // Handle positions - int hx[8]; - int hy[8]; - CalcSelectionHandles(hx, hy); - - int i; - for (i = 0; i < 8; i++) - { - dc.DrawRectangle(hx[i], hy[i], handleSize, handleSize); - } -} - -void wxResourceEditorControlHandler::DrawBoundingBox(wxDC& dc, int x, int y, int w, int h) -{ - dc.DrawRectangle(x, y, w, h); -} - -// If selectionHandle is zero, not dragging the selection handle. -void wxResourceEditorControlHandler::OnDragBegin(int x, int y, int WXUNUSED(keys), wxDC& dc, int selectionHandle) -{ - int xpos, ypos, width, height; - handlerControl->GetPosition(&xpos, &ypos); - handlerControl->GetSize(&width, &height); - - dc.BeginDrawing(); - -// dc.DestroyClippingRegion(); - - wxPanel *panel = (wxPanel *)handlerControl->GetParent(); - - // Erase selection handles -// DrawSelectionHandles(dc, TRUE); - - dc.SetOptimization(FALSE); - - dc.SetLogicalFunction(wxXOR); - - wxPen pen(wxColour(0, 0, 0), 1, wxDOT); - dc.SetPen(pen); - dc.SetBrush(* wxTRANSPARENT_BRUSH); - - dc.SetOptimization(TRUE); - - if (selectionHandle > 0) - { - panel->Refresh(); - - DrawBoundingBox(dc, xpos, ypos, width, height); - } - else - { - panel->Refresh(); - - dragOffsetX = (x - xpos); - dragOffsetY = (y - ypos); - - DrawBoundingBox(dc, xpos, ypos, width, height); - - // Also draw bounding boxes for other selected items - wxNode *node = panel->GetChildren().First(); - while (node) - { - wxWindow *win = (wxWindow *)node->Data(); - if (win->IsKindOf(CLASSINFO(wxControl))) - { - wxControl *item = (wxControl *)win; - wxResourceEditorControlHandler *handler = (wxResourceEditorControlHandler *)item->GetEventHandler(); - if ((item != handlerControl) && handler->IsSelected()) - { - int x1, y1, w1, h1; - item->GetPosition(&x1, &y1); - item->GetSize(&w1, &h1); - handler->DrawBoundingBox(dc, x1, y1, w1, h1); - } - } - node = node->Next(); - } - } - dc.EndDrawing(); -} - -void wxResourceEditorControlHandler::OnDragContinue(bool WXUNUSED(paintIt), int x, int y, int WXUNUSED(keys), wxDC& dc, int selectionHandle) -{ - wxPanel *panel = (wxPanel *)handlerControl->GetParent(); - int xpos, ypos, width, height; - handlerControl->GetPosition(&xpos, &ypos); - handlerControl->GetSize(&width, &height); - - if (selectionHandle > 0) - { -/* - 8 1 2 - - 7 3 - - 6 5 4 -*/ - - int x1, y1, width1, height1; - - switch (selectionHandle) - { - case 1: - x1 = xpos; - y1 = y; - width1 = width; - height1 = (ypos + height) - y; - break; - case 5: - x1 = xpos; - y1 = ypos; - width1 = width; - height1 = (y - ypos); - break; - case 3: - x1 = xpos; - y1 = ypos; - width1 = (x - xpos); - height1 = height; - break; - case 7: - x1 = x; - y1 = ypos; - width1 = (xpos + width) - x; - height1 = height; - break; - case 2: - x1 = xpos; - y1 = y; - width1 = (x - xpos); - height1 = (ypos + height) - y; - break; - case 4: - x1 = xpos; - y1 = ypos; - width1 = (x - xpos); - height1 = (y - ypos); - break; - case 6: - x1 = x; - y1 = ypos; - width1 = (xpos + width) - x; - height1 = y - ypos; - break; - case 8: - x1 = x; - y1 = y; - width1 = (xpos + width) - x; - height1 = (ypos + height) - y; - break; - } - dc.BeginDrawing(); - - dc.SetLogicalFunction(wxXOR); - wxPen pen(wxColour(0, 0, 0), 1, wxDOT); - dc.SetPen(pen); - dc.SetBrush(* wxTRANSPARENT_BRUSH); - - DrawBoundingBox(dc, x1, y1, width1, height1); - - dc.EndDrawing(); - } - else - { - dc.BeginDrawing(); - dc.SetLogicalFunction(wxXOR); - wxPen pen(wxColour(0, 0, 0), 1, wxDOT); - dc.SetPen(pen); - dc.SetBrush(* wxTRANSPARENT_BRUSH); - - DrawBoundingBox(dc, (int)(x - dragOffsetX), (int)(y - dragOffsetY), width, height); - - // Also draw bounding boxes for other selected items - wxNode *node = panel->GetChildren().First(); - while (node) - { - wxWindow *win = (wxWindow *)node->Data(); - if (win->IsKindOf(CLASSINFO(wxControl))) - { - wxControl *item = (wxControl *)win; - wxResourceEditorControlHandler *handler = (wxResourceEditorControlHandler *)item->GetEventHandler(); - if ((item != handlerControl) && handler->IsSelected()) - { - int x1, y1, w1, h1; - item->GetPosition(&x1, &y1); - item->GetSize(&w1, &h1); - int x2 = (int)(x1 + (x - dragOffsetX) - xpos); - int y2 = (int)(y1 + (y - dragOffsetY) - ypos); - handler->DrawBoundingBox(dc, x2, y2, w1, h1); - } - } - node = node->Next(); - } - dc.EndDrawing(); - } -} - -void wxResourceEditorControlHandler::OnDragEnd(int x, int y, int WXUNUSED(keys), wxDC& dc, int selectionHandle) -{ - wxPanel *panel = (wxPanel *)handlerControl->GetParent(); - - dc.BeginDrawing(); - - int xpos, ypos, width, height; - handlerControl->GetPosition(&xpos, &ypos); - handlerControl->GetSize(&width, &height); - - wxItemResource* resource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(handlerControl); - wxItemResource* parentResource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(handlerControl->GetParent()); - - if (selectionHandle > 0) - { - int x1, y1, width1, height1; - - switch (selectionHandle) - { - case 1: - x1 = xpos; - y1 = y; - width1 = width; - height1 = (ypos + height) - y; - break; - case 5: - x1 = xpos; - y1 = ypos; - width1 = width; - height1 = (y - ypos); - break; - case 3: - x1 = xpos; - y1 = ypos; - width1 = (x - xpos); - height1 = height; - break; - case 7: - x1 = x; - y1 = ypos; - width1 = (xpos + width) - x; - height1 = height; - break; - case 2: - x1 = xpos; - y1 = y; - width1 = (x - xpos); - height1 = (ypos + height) - y; - break; - case 4: - x1 = xpos; - y1 = ypos; - width1 = (x - xpos); - height1 = (y - ypos); - break; - case 6: - x1 = x; - y1 = ypos; - width1 = (xpos + width) - x; - height1 = y - ypos; - break; - case 8: - x1 = x; - y1 = y; - width1 = (xpos + width) - x; - height1 = (ypos + height) - y; - break; - } - // Update the associated resource - // We need to convert to dialog units if this is not a dialog or panel, but - // the parent resource specifies dialog units. - int resourceX = x1; - int resourceY = y1; - int resourceWidth = width1; - int resourceHeight = height1; - - if (parentResource->GetResourceStyle() & wxRESOURCE_DIALOG_UNITS) - { - wxPoint pt = handlerControl->GetParent()->ConvertPixelsToDialog(wxPoint(x1, y1)); - wxSize sz = handlerControl->GetParent()->ConvertPixelsToDialog(wxSize(width1, height1)); - - // Convert back so we've rounded down - sz = handlerControl->GetParent()->ConvertDialogToPixels(sz); - sz = handlerControl->GetParent()->ConvertPixelsToDialog(sz); - resourceWidth = sz.x; resourceHeight = sz.y; - - sz = handlerControl->GetParent()->ConvertDialogToPixels(sz); - width1 = sz.x; - height1 = sz.y; - - pt = handlerControl->GetParent()->ConvertDialogToPixels(pt); - pt = handlerControl->GetParent()->ConvertPixelsToDialog(pt); - resourceX = pt.x; resourceY = pt.y; - - pt = handlerControl->GetParent()->ConvertDialogToPixels(pt); - x1 = pt.x; - y1 = pt.y; - } - handlerControl->SetSize(x1, y1, width1, height1); - resource->SetSize(resourceX, resourceY, resourceWidth, resourceHeight); - } - else - { - // Correction 31/12/98. We need to round down the values to take into account - // the fact that several pixels map to the same dialog unit. - - int newX = (int)(x - dragOffsetX); - int newY = (int)(y - dragOffsetY); - int resourceX = newX; - int resourceY = newY; - - // Update the associated resource - if (parentResource->GetResourceStyle() & wxRESOURCE_DIALOG_UNITS) - { - wxPoint pt = handlerControl->GetParent()->ConvertPixelsToDialog(wxPoint(newX, newY)); - pt = handlerControl->GetParent()->ConvertDialogToPixels(pt); - pt = handlerControl->GetParent()->ConvertPixelsToDialog(pt); - resourceX = pt.x; resourceY = pt.y; - pt = handlerControl->GetParent()->ConvertDialogToPixels(pt); - - // Having converted it several times, we know it'll map to dialog units exactly. - newX = pt.x; - newY = pt.y; - } - handlerControl->Move(newX, newY); - OldOnMove(newX, newY); - - resource->SetSize(resourceX, resourceY, resource->GetWidth(), resource->GetHeight()); - - // Also move other selected items - wxNode *node = panel->GetChildren().First(); - while (node) - { - wxWindow *win = (wxWindow *)node->Data(); - if (win->IsKindOf(CLASSINFO(wxControl))) - { - wxControl *item = (wxControl *)win; - wxResourceEditorControlHandler *handler = (wxResourceEditorControlHandler *)item->GetEventHandler(); - if ((item != handlerControl) && handler->IsSelected()) - { - int x1, y1; - item->GetPosition(&x1, &y1); - int x2 = (int)(x1 + (x - dragOffsetX) - xpos); - int y2 = (int)(y1 + (y - dragOffsetY) - ypos); - - // Update the associated resource - resource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(item); - if (parentResource->GetResourceStyle() & wxRESOURCE_DIALOG_UNITS) - { - wxPoint pt = item->GetParent()->ConvertPixelsToDialog(wxPoint(x2, y2)); - pt = item->GetParent()->ConvertDialogToPixels(pt); - pt = item->GetParent()->ConvertPixelsToDialog(pt); - - resourceX = pt.x; resourceY = pt.y; - pt = handlerControl->GetParent()->ConvertDialogToPixels(pt); - - // Having converted it several times, we know it'll map to dialog units exactly - x2 = pt.x; - y2 = pt.y; - } - - item->Move(x2, y2); - ((wxResourceEditorControlHandler *)item->GetEventHandler())->OldOnMove(x2, y2); - ((wxResourceEditorControlHandler *)item->GetEventHandler())->DrawSelectionHandles(dc); - - resource->SetSize(resourceX, resourceY, resource->GetWidth(), resource->GetHeight()); - - } - } - node = node->Next(); - } - } - dc.SetOptimization(FALSE); - - dc.SetLogicalFunction(wxCOPY); - dc.SetPen(* wxBLACK_PEN); - dc.SetBrush(* wxBLACK_BRUSH); - - dc.SetOptimization(TRUE); - - // Force it to repaint the selection handles (if any) - // since the panel thinks we're still within a drag and - // won't paint the handles. - if (IsSelected()) - DrawSelectionHandles(dc); - - dc.EndDrawing(); - - panel->Refresh(); -} - -// These functions call OnItemEvent, OnItemMove and OnItemSize -// by default. -void wxResourceEditorControlHandler::OnMouseEvent(wxMouseEvent& event) -{ -/* - if ((event.m_eventType == wxEVENT_TYPE_LEFT_DCLICK) || - (event.m_eventType == wxEVENT_TYPE_RIGHT_DCLICK)) - return; -*/ - wxWindow *panel = handlerControl->GetParent(); - if ( !panel->GetEventHandler()->IsKindOf(CLASSINFO(wxResourceEditorDialogHandler)) ) - return; - wxResourceEditorDialogHandler *panelHandler = (wxResourceEditorDialogHandler *)panel->GetEventHandler(); - if ( !panelHandler->GetEvtHandlerEnabled() ) - { - event.Skip(); - return; - } - - panelHandler->OnItemEvent(handlerControl, event); -} - -void wxResourceEditorControlHandler::OldOnMove(int x, int y) -{ - wxWindow *panel = handlerControl->GetParent(); - if ( !panel->GetEventHandler()->IsKindOf(CLASSINFO(wxResourceEditorDialogHandler)) ) - return; - - wxResourceEditorDialogHandler *panelHandler = (wxResourceEditorDialogHandler *)panel->GetEventHandler(); - panelHandler->OnItemMove(handlerControl, x, y); -} - -void wxResourceEditorControlHandler::OldOnSize(int w, int h) -{ - wxWindow *panel = handlerControl->GetParent(); - if ( !panel->GetEventHandler()->IsKindOf(CLASSINFO(wxResourceEditorDialogHandler)) ) - return; - - wxResourceEditorDialogHandler *panelHandler = (wxResourceEditorDialogHandler *)panel->GetEventHandler(); - panelHandler->OnItemSize(handlerControl, w, h); -} - -void wxResourceEditorControlHandler::OnSelect(bool select) -{ - wxWindow *panel = handlerControl->GetParent(); - if ( !panel->GetEventHandler()->IsKindOf(CLASSINFO(wxResourceEditorDialogHandler)) ) - return; - - wxResourceEditorDialogHandler *panelHandler = (wxResourceEditorDialogHandler *)panel->GetEventHandler(); - panelHandler->OnItemSelect(handlerControl, select); -} - -void wxResourceEditorControlHandler::OnLeftClick(int x, int y, int keys) -{ - wxWindow *panel = handlerControl->GetParent(); - if ( !panel->GetEventHandler()->IsKindOf(CLASSINFO(wxResourceEditorDialogHandler)) ) - return; - - wxResourceEditorDialogHandler *panelHandler = (wxResourceEditorDialogHandler *)panel->GetEventHandler(); - panelHandler->OnItemLeftClick(handlerControl, x, y, keys); -} - -void wxResourceEditorControlHandler::OnRightClick(int x, int y, int keys) -{ - wxWindow *panel = handlerControl->GetParent(); - if ( !panel->GetEventHandler()->IsKindOf(CLASSINFO(wxResourceEditorDialogHandler)) ) - return; - - wxResourceEditorDialogHandler *panelHandler = (wxResourceEditorDialogHandler *)panel->GetEventHandler(); - panelHandler->OnItemRightClick(handlerControl, x, y, keys); -} - - diff --git a/utils/dialoged/src/dlghndlr.h b/utils/dialoged/src/dlghndlr.h deleted file mode 100644 index 80a9cf5ac8..0000000000 --- a/utils/dialoged/src/dlghndlr.h +++ /dev/null @@ -1,139 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: dlghndlr.h -// Purpose: Dialog handler -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifndef _DLGHNDLR_H_ -#define _DLGHNDLR_H_ - -#define wxDRAG_MODE_NONE 0 -#define wxDRAG_MODE_START_LEFT 1 -#define wxDRAG_MODE_CONTINUE_LEFT 2 -#define wxDRAG_MODE_START_RIGHT 3 -#define wxDRAG_MODE_CONTINUE_RIGHT 4 -#define wxDRAG_TYPE_NONE 0 -#define wxDRAG_TYPE_ITEM 100 - -#define wxKEY_SHIFT 1 -#define wxKEY_CTRL 2 - -class wxResourceEditorDialogHandler: public wxEvtHandler -{ -DECLARE_CLASS(wxResourceEditorDialogHandler) - public: - wxResourceManager *resourceManager; - wxPanel *handlerDialog; - wxItemResource *handlerResource; - wxEvtHandler *handlerOldHandler; - - wxControl *dragItem; - int dragMode; - int dragType; - int dragTolerance; - bool checkTolerance; - int firstDragX; - int firstDragY; - int oldDragX; - int oldDragY; - bool m_mouseCaptured; -// long m_treeItem; - - wxResourceEditorDialogHandler(wxPanel *dialog, wxItemResource *resource, wxEvtHandler *oldHandler, - wxResourceManager *manager); - ~wxResourceEditorDialogHandler(void); - - void OnPaint(wxPaintEvent& event); - void OnMouseEvent(wxMouseEvent& event); - void OnSize(wxSizeEvent& event); - - virtual void OnItemEvent(wxControl *win, wxMouseEvent& event); - virtual void OnLeftClick(int x, int y, int keys); - virtual void OnRightClick(int x, int y, int keys); - virtual void OnItemLeftClick(wxControl *item, int x, int y, int keys); - virtual void OnItemRightClick(wxControl *item, int x, int y, int keys); - virtual void OnItemSelect(wxControl *item, bool select); - virtual void OnItemMove( - wxControl *WXUNUSED(item), int WXUNUSED(x), int WXUNUSED(y) ) {}; - virtual void OnItemSize( - wxControl *WXUNUSED(item), int WXUNUSED(w), int WXUNUSED(h) ) {}; - - void AddChildHandlers(void); - void PaintSelectionHandles(wxDC& dc); - void ProcessItemEvent(wxControl *item, wxMouseEvent& event, int selectionHandle); - -// Accessors -/* - inline long GetTreeItem() const { return m_treeItem; } - inline void SetTreeItem(long item) { m_treeItem = item; } -*/ - -DECLARE_EVENT_TABLE() -}; - -class wxResourceEditorControlHandler: public wxEvtHandler -{ -DECLARE_CLASS(wxResourceEditorControlHandler) - public: -// wxResourceManager *resourceManager; - wxControl *handlerControl; -// wxItemResource *handlerResource; - wxEvtHandler *handlerOldHandler; - - bool isSelected; - int handleSize; // selection handle size - int handleMargin; // Distance between item edge and handle edge - long m_treeItem; - static int dragOffsetX; // Distance between pointer at start of drag and - static int dragOffsetY; // top-left of item - - wxResourceEditorControlHandler(wxControl *control, wxEvtHandler *oldHandler); - ~wxResourceEditorControlHandler(void); - - void OnMouseEvent(wxMouseEvent& event); - - // Manipulation and drawing of items in Edit Mode - - // Calculate position of the 8 handles - virtual void CalcSelectionHandles(int *hx, int *hy); - virtual void DrawSelectionHandles(wxDC& dc, bool erase = FALSE); - virtual void DrawBoundingBox(wxDC& dc, int x, int y, int w, int h); - virtual void SelectItem(bool select); - virtual inline bool IsSelected(void) { return isSelected; } - - // Returns TRUE or FALSE - virtual bool HitTest(int x, int y); - - // Returns 0 (no hit), 1 - 8 for which selection handle - // (clockwise from top middle) - virtual int SelectionHandleHitTest(int x, int y); - - // If selectionHandle is zero, not dragging the selection handle. - virtual void OnDragBegin(int x, int y, int keys, wxDC& dc, int selectionHandle); - virtual void OnDragContinue(bool paintIt, int x, int y, int keys, wxDC& dc, int selectionHandle); - virtual void OnDragEnd(int x, int y, int keys, wxDC& dc, int selectionHandle); - - // These functions call panel functions - // by default. - virtual void OldOnMove(int x, int y); - virtual void OldOnSize(int w, int h); - virtual void OnLeftClick(int x, int y, int keys); - virtual void OnRightClick(int x, int y, int keys); - virtual void OnSelect(bool select); - -// Accessors -/* - inline long GetTreeItem() const { return m_treeItem; } - inline void SetTreeItem(long item) { m_treeItem = item; } -*/ - -DECLARE_EVENT_TABLE() -}; - -#endif - diff --git a/utils/dialoged/src/edlist.cpp b/utils/dialoged/src/edlist.cpp deleted file mode 100644 index 087736aaf4..0000000000 --- a/utils/dialoged/src/edlist.cpp +++ /dev/null @@ -1,167 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: edlist.cpp -// Purpose: Resource editor project management tree -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "edlist.h" -#endif - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" - -#include "wx/checkbox.h" -#include "wx/button.h" -#include "wx/choice.h" -#include "wx/listbox.h" -#include "wx/radiobox.h" -#include "wx/statbox.h" -#include "wx/gauge.h" -#include "wx/slider.h" -#include "wx/textctrl.h" -#endif - -#include "edlist.h" -#include "reseditr.h" - -BEGIN_EVENT_TABLE(wxResourceEditorControlList, wxListCtrl) -END_EVENT_TABLE() - -wxResourceEditorControlList::wxResourceEditorControlList(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, - long style): - wxListCtrl(parent, id, pos, size, style), m_imageList(16, 16, TRUE) -{ - Initialize(); -} - -wxResourceEditorControlList::~wxResourceEditorControlList() -{ - SetImageList(NULL, wxIMAGE_LIST_SMALL); -} - -// Load icons and add to the list -void wxResourceEditorControlList::Initialize() -{ -#ifdef __WXMSW__ - wxIcon icon1("ARROW_ICON", wxBITMAP_TYPE_ICO_RESOURCE, 16, 16); - wxIcon icon2("BUTTON_ICON", wxBITMAP_TYPE_ICO_RESOURCE, 16, 16); - wxIcon icon3("BMPBUTTON_ICON", wxBITMAP_TYPE_ICO_RESOURCE, 16, 16); - wxIcon icon4("STATICTEXT_ICON", wxBITMAP_TYPE_ICO_RESOURCE, 16, 16); - wxIcon icon5("STATICBMP_ICON", wxBITMAP_TYPE_ICO_RESOURCE, 16, 16); - wxIcon icon6("STATICBOX_ICON", wxBITMAP_TYPE_ICO_RESOURCE, 16, 16); - wxIcon icon7("TEXTSING_ICON", wxBITMAP_TYPE_ICO_RESOURCE, 16, 16); - wxIcon icon8("TEXTMULT_ICON", wxBITMAP_TYPE_ICO_RESOURCE, 16, 16); - wxIcon icon9("LISTBOX_ICON", wxBITMAP_TYPE_ICO_RESOURCE, 16, 16); - wxIcon icon10("CHOICE_ICON", wxBITMAP_TYPE_ICO_RESOURCE, 16, 16); - wxIcon icon11("COMBOBOX_ICON", wxBITMAP_TYPE_ICO_RESOURCE, 16, 16); - wxIcon icon12("CHECKBOX_ICON", wxBITMAP_TYPE_ICO_RESOURCE, 16, 16); - wxIcon icon13("SLIDER_ICON", wxBITMAP_TYPE_ICO_RESOURCE, 16, 16); - wxIcon icon14("GAUGE_ICON", wxBITMAP_TYPE_ICO_RESOURCE, 16, 16); - wxIcon icon15("RADIOBOX_ICON", wxBITMAP_TYPE_ICO_RESOURCE, 16, 16); - wxIcon icon16("RADIOBTN_ICON", wxBITMAP_TYPE_ICO_RESOURCE, 16, 16); - wxIcon icon17("SCROLBAR_ICON", wxBITMAP_TYPE_ICO_RESOURCE, 16, 16); -#else - -#include "bitmaps/arrow.xpm" - wxIcon icon1( arrow_xpm ); -#include "bitmaps/button.xpm" - wxIcon icon2( button_xpm ); -#include "bitmaps/bmpbuttn.xpm" - wxIcon icon3( bmpbuttn_xpm ); -#include "bitmaps/stattext.xpm" - wxIcon icon4( stattext_xpm ); -#include "bitmaps/statbmp.xpm" - wxIcon icon5( statbmp_xpm ); -#include "bitmaps/statbox.xpm" - wxIcon icon6( statbox_xpm ); -#include "bitmaps/textsing.xpm" - wxIcon icon7( textsing_xpm ); -#include "bitmaps/textmult.xpm" - wxIcon icon8( textmult_xpm ); -#include "bitmaps/listbox.xpm" - wxIcon icon9( listbox_xpm ); -#include "bitmaps/choice.xpm" - wxIcon icon10( choice_xpm ); -#include "bitmaps/combobox.xpm" - wxIcon icon11( combobox_xpm ); -#include "bitmaps/checkbox.xpm" - wxIcon icon12( checkbox_xpm ); -#include "bitmaps/slider.xpm" - wxIcon icon13( slider_xpm ); -#include "bitmaps/gauge.xpm" - wxIcon icon14( gauge_xpm ); -#include "bitmaps/radiobox.xpm" - wxIcon icon15( radiobox_xpm ); -#include "bitmaps/radiobtn.xpm" - wxIcon icon16( radiobtn_xpm ); -#include "bitmaps/scrolbar.xpm" - wxIcon icon17( scrolbar_xpm ); -#endif - - m_imageList.Add(icon1); - m_imageList.Add(icon2); - m_imageList.Add(icon3); - m_imageList.Add(icon4); - m_imageList.Add(icon5); - m_imageList.Add(icon6); - m_imageList.Add(icon7); - m_imageList.Add(icon8); - m_imageList.Add(icon9); - m_imageList.Add(icon10); - m_imageList.Add(icon11); - m_imageList.Add(icon12); - m_imageList.Add(icon13); - m_imageList.Add(icon14); - m_imageList.Add(icon15); - m_imageList.Add(icon16); - m_imageList.Add(icon17); - - SetImageList(& m_imageList, wxIMAGE_LIST_SMALL); - - long id = InsertItem(0, "Pointer", 0); - id = InsertItem(1, "wxButton", 1); - id = InsertItem(2, "wxBitmapButton", 2); - id = InsertItem(3, "wxStaticText", 3); - id = InsertItem(4, "wxStaticBitmap", 4); - id = InsertItem(5, "wxStaticBox", 5); - id = InsertItem(6, "wxTextCtrl", 6); - id = InsertItem(7, "wxTextCtrl", 7); - id = InsertItem(8, "wxListBox", 8); - id = InsertItem(9, "wxChoice", 9); - id = InsertItem(10, "wxComboBox", 10); - id = InsertItem(11, "wxCheckBox", 11); - id = InsertItem(12, "wxSlider", 12); - id = InsertItem(13, "wxGauge", 13); - id = InsertItem(14, "wxRadioBox", 14); - id = InsertItem(15, "wxRadioButton", 15); - id = InsertItem(16, "wxScrollBar", 16); - -/* - InsertItem(RESED_TREECTRL, "wxTreeCtrl", 16); - InsertItem(RESED_LISTCTRL, "wxListCtrl", 17); - InsertItem(RESED_SPINBUTTON, "wxSpinButton", 18); -*/ - -// SetColumnWidth(-1, 80); -} - -// Get selection, or -1 -long wxResourceEditorControlList::GetSelection() const -{ - return GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); -} - - diff --git a/utils/dialoged/src/edlist.h b/utils/dialoged/src/edlist.h deleted file mode 100644 index 9777c01355..0000000000 --- a/utils/dialoged/src/edlist.h +++ /dev/null @@ -1,38 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: edlist.h -// Purpose: Resource editor list of controls -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifndef _EDLIST_H_ -#define _EDLIST_H_ - -#include -#include - -class wxResourceEditorControlList: public wxListCtrl -{ -public: - wxResourceEditorControlList(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, - long style = wxLC_SMALL_ICON|wxLC_AUTOARRANGE|wxLC_SINGLE_SEL); - ~wxResourceEditorControlList(); - - // Load icons and add to the list - void Initialize(); - - // Get selection, or -1 - long GetSelection() const; - -DECLARE_EVENT_TABLE() - -protected: - wxImageList m_imageList; -}; - -#endif - diff --git a/utils/dialoged/src/edtree.cpp b/utils/dialoged/src/edtree.cpp deleted file mode 100644 index 00086583d8..0000000000 --- a/utils/dialoged/src/edtree.cpp +++ /dev/null @@ -1,92 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: edtree.cpp -// Purpose: Resource editor project management tree -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "edtree.h" -#endif - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" - -#include "wx/checkbox.h" -#include "wx/button.h" -#include "wx/choice.h" -#include "wx/listbox.h" -#include "wx/radiobox.h" -#include "wx/statbox.h" -#include "wx/gauge.h" -#include "wx/slider.h" -#include "wx/textctrl.h" -#endif - -#include "edtree.h" -#include "reseditr.h" - -BEGIN_EVENT_TABLE(wxResourceEditorProjectTree, wxTreeCtrl) - EVT_LEFT_DCLICK(wxResourceEditorProjectTree::LeftDClick) - EVT_TREE_SEL_CHANGED(IDC_TREECTRL, wxResourceEditorProjectTree::OnSelChanged) -END_EVENT_TABLE() - -wxResourceEditorProjectTree::wxResourceEditorProjectTree(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, - long style): - wxTreeCtrl(parent, id, pos, size, style) -{ -} - -void wxResourceEditorProjectTree::LeftDClick(wxMouseEvent& WXUNUSED(event)) -{ -#if 0 - long sel = GetSelection(); - if (sel == -1) - return; - - if (GetItemData(sel) == 0) - return; - - wxItemResource* res = (wxResourceTreeData *)GetItemData(sel)->GetResource(); - wxString resType(res->GetType()); - if (resType != "wxDialog" && resType != "wxDialogBox" && resType != "wxPanel") - return; - - wxResourceEditorFrame *frame = (wxResourceEditorFrame *)wxWindow::GetParent(); - wxResourceManager *manager = frame->manager; - - manager->EditSelectedResource(); -#endif -} - -void wxResourceEditorProjectTree::OnSelChanged(wxTreeEvent& WXUNUSED(event)) -{ - long sel = GetSelection(); - if (sel == -1) - return; - - if (GetItemData(sel) == 0) - return; - - if (m_invalid) - return; - - wxItemResource* res = ((wxResourceTreeData *)GetItemData(sel))->GetResource(); - wxString resType(res->GetType()); - if (resType != "wxDialog" && resType != "wxDialogBox" && resType != "wxPanel") - return; - - wxResourceManager::GetCurrentResourceManager()->Edit(res); -} - diff --git a/utils/dialoged/src/edtree.h b/utils/dialoged/src/edtree.h deleted file mode 100644 index 3928c5aa7d..0000000000 --- a/utils/dialoged/src/edtree.h +++ /dev/null @@ -1,36 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: edtree.h -// Purpose: Resource editor project management tree control -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifndef _EDTREE_H_ -#define _EDTREE_H_ - -#include - -class wxResourceEditorProjectTree: public wxTreeCtrl -{ -public: - wxResourceEditorProjectTree(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, - long style = wxTR_HAS_BUTTONS); - - void LeftDClick(wxMouseEvent& event); - void OnSelChanged(wxTreeEvent& event); - - inline void SetInvalid(bool invalid) { m_invalid = invalid; } - -protected: - bool m_invalid; // While TRUE, don't respond to selections etc. - -DECLARE_EVENT_TABLE() - -}; - -#endif - diff --git a/utils/dialoged/src/makefile.b32 b/utils/dialoged/src/makefile.b32 deleted file mode 100644 index 1479b6f97f..0000000000 --- a/utils/dialoged/src/makefile.b32 +++ /dev/null @@ -1,20 +0,0 @@ -# -# File: makefile.b32 -# Author: Patrick Halke -# Created: 1995 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile : Builds Dialog Editor (32-bit Borland) - -# WXWIN and BCCDIR are set by parent make - -WXDIR = $(WXWIN) - -TARGET=dialoged -OBJECTS = dialoged.obj reseditr.obj dlghndlr.obj reswrite.obj winprop.obj edtree.obj edlist.obj symbtable.obj winstyle.obj - -!include $(WXDIR)\src\makeb32.env - diff --git a/utils/dialoged/src/makefile.bcc b/utils/dialoged/src/makefile.bcc deleted file mode 100644 index d38642a567..0000000000 --- a/utils/dialoged/src/makefile.bcc +++ /dev/null @@ -1,20 +0,0 @@ -# -# File: makefile.bcc -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Builds a BC++ 16-bit Dialog Editor - -!if "$(WXWIN)" == "" -!error You must define the WXWIN variable in autoexec.bat, e.g. WXWIN=c:\wx -!endif - -WXDIR = $(WXWIN) - -TARGET=dialoged -OBJECTS=dialoged.obj reseditr.obj dlghndlr.obj reswrite.obj\ - winprop.obj edtree.obj edlist.obj symbtabl.obj winstyle.obj - -!include $(WXDIR)\src\makeprog.bcc - diff --git a/utils/dialoged/src/makefile.dos b/utils/dialoged/src/makefile.dos deleted file mode 100644 index 04fa91936a..0000000000 --- a/utils/dialoged/src/makefile.dos +++ /dev/null @@ -1,178 +0,0 @@ -# -# File: makefile.dos -# Author: Julian Smart -# Created: 1995 -# Updated: -# Copyright: (c) 1995, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile : Builds docview example (DOS). -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -WXDIR = $(WXWIN) - -!include $(WXDIR)\src\makemsc.env - -THISDIR = $(WXDIR)\utils\dialoged\src -WXLIB = $(WXDIR)\lib\wx.lib - -DOCDIR = $(WXDIR)\utils\dialoged\docs - - -LIBS=$(WXLIB) oldnames libw llibcew commdlg shell ddeml -INC=/I$(WXDIR)\include\base /I$(WXDIR)\include\msw /I$(PROPINC) - -!ifndef FINAL -FINAL=0 -!endif - -# Default is to output RTF for WinHelp -!ifndef RTFSTYLE -RTFSTYLE=-winhelp -!endif - -# Set this to nothing if using MS C++ 7 -ZOPTION=/Z7 - -!if "$(FINAL)" == "0" -CPPFLAGS=/AL /W3 /Zi $(ZOPTION) /G2sw /Od /DDEBUG=$(DEBUG) /YuWX_PREC.H $(INC) /Dwx_msw /Fp$(WXDIR)\src\msw\wx.pch -LINKFLAGS=/NOD /CO /SEG:512 /ONERROR:NOEXE -!else -CPPFLAGS=/AL /W3 /G2sw /Ox /YuWX_PREC.H $(INC) /DDEBUG=$(DEBUG) /Dwx_msw /Fp$(WXDIR)\src\msw\wx.pch -LINKFLAGS=/NOD /SEG:512 /ONERROR:NOEXE -!endif - -OBJECTS = dialoged.obj wx_resed.obj wx_rdlg.obj wx_reswr.obj wx_repal.obj wx_rprop.obj - -all: prop dialoged.exe - -wx: - cd $(WXDIR)\src\msw - nmake -f makefile.dos - cd $(THISDIR) - -wxclean: - cd $(WXDIR)\src\msw - nmake -f makefile.dos clean - cd $(THISDIR) - - -dialoged.exe: $(WXDIR)\src\msw\dummy.obj $(WXLIB) $(OBJECTS) $(PROPLIB) dialoged.def dialoged.res - link $(LINKFLAGS) @<< -$(WXDIR)\src\msw\dummy.obj $(OBJECTS), -dialoged, -NUL, -$(LIBS), -dialoged.def -; -<< - rc -30 -K dialoged.res - -dialoged.obj: dialoged.h $(PROPINC)\wx_prop.h wx_resed.h wx_rprop.h dialoged.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -wx_resed.obj: wx_resed.h $(PROPINC)\wx_prop.h wx_resed.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -wx_rdlg.obj: wx_resed.h $(PROPINC)\wx_prop.h wx_rdlg.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -wx_reswr.obj: wx_resed.h wx_reswr.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -wx_rprop.obj: wx_resed.h $(PROPINC)\wx_prop.h wx_rprop.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -wx_repal.obj: wx_resed.h $(PROPINC)\wx_prop.h wx_repal.h wx_repal.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -dialoged.res : dialoged.rc $(WXDIR)\include\msw\wx.rc - rc -r /dFAFA_LIB /i$(WXDIR)\contrib\fafa /i$(WXDIR)\include\msw dialoged - -wxtree: - cd $(TREEDIR)\src - nmake -f makefile.dos FINAL="$(FINAL)" OPT="$(OPT)" - cd $(THISDIR) - -dib: - cd $(DIBDIR) - nmake -f makefile.dos FINAL="$(FINAL)" OPT="$(OPT)" - cd $(THISDIR) - -prop: - cd $(PROPDIR)\src - nmake -f makefile.dos FINAL="$(FINAL)" OPT="$(OPT)" - cd $(THISDIR) - -# Making documents -docs: hlp -hlp: $(DOCDIR)/dialoged.hlp -hlp32: $(DOCDIR)/hlp32/dialoged.hlp -rtf: $(DOCDIR)/dialoged.rtf - -$(DOCDIR)/dialoged.hlp: $(DOCDIR)/dialoged.rtf $(DOCDIR)/dialoged.hpj - cd $(DOCDIR) - -erase dialoged.ph - hc dialoged - cd $(THISDIR) - -$(DOCDIR)/hlp32/dialoged.hlp: $(DOCDIR)/hlp32/dialoged.rtf $(DOCDIR)/hlp32/dialoged.hpj - cd $(DOCDIR)/hlp32 - -erase dialoged.ph - -wx /W hcw /c /e clockwrk.hpj - cd $(THISDIR) - -$(DOCDIR)/dialoged.rtf: $(DOCDIR)/body.tex $(DOCDIR)/classes.tex $(DOCDIR)/tech.tex $(DOCDIR)/dialoged.tex - cd $(DOCDIR) - -wx /W tex2rtf $(DOCDIR)/dialoged.tex $(DOCDIR)/dialoged.rtf -twice $(RTFSTYLE) - cd $(THISDIR) - -$(DOCDIR)/hlp32/dialoged.rtf: $(DOCDIR)/body.tex $(DOCDIR)/classes.tex $(DOCDIR)/body.tex $(DOCDIR)/dialoged.tex - cd $(DOCDIR) - -wx /W tex2rtf $(DOCDIR)/dialoged.tex $(DOCDIR)/hlp32/dialoged.rtf -twice $(RTFSTYLE) -macros $(DOCDIR)/t2rtf32.ini - cd $(THISDIR) - -wordrtf: - cd $(DOCDIR) - -wx /W tex2rtf $(DOCDIR)/dialoged.tex $(DOCDIR)/dialoged.rtf -twice -rtf - cd $(THISDIR) - -cleanprop: - cd $(PROPDIR)\src - nmake -f makefile.dos clean - cd $(THISDIR) - -rcparser: - cd $(RCDIR)\src - nmake -f makefile.dos FINAL=$(FINAL) OPT=$(OPT) - cd $(THISDIR) - -cleanrtf: - cd $(DOCDIR) - -erase *.rtf - cd $(THISDIR) - -cleanutils: cleanprop - -erase *.obj - -erase *.sbr - -erase *.exe - -erase *.res - -erase *.map - -erase *.pdb - -clean: - -erase *.obj *.exe *.res *.map *.rws diff --git a/utils/dialoged/src/makefile.g95 b/utils/dialoged/src/makefile.g95 deleted file mode 100644 index b886f57feb..0000000000 --- a/utils/dialoged/src/makefile.g95 +++ /dev/null @@ -1,61 +0,0 @@ -# -# File: makefile.g95 -# Author: Julian Smart -# Created: 1996 -# Updated: -# -# "%W% %G%" -# -# Makefile for Dialog Editor (GNU-WIN32) - -WXDIR = ../../.. - -# All common UNIX compiler flags and options are now in -# this central makefile. -include $(WXDIR)/src/makeg95.env - -OBJECTS = $(OBJDIR)/dialoged.$(OBJSUFF) $(OBJDIR)/reseditr.$(OBJSUFF)\ - $(OBJDIR)/dlghndlr.$(OBJSUFF) $(OBJDIR)/reswrite.$(OBJSUFF) $(OBJDIR)/winprop.$(OBJSUFF)\ - $(OBJDIR)/edlist.$(OBJSUFF) $(OBJDIR)/edtree.$(OBJSUFF) $(OBJDIR)/winstyle.$(OBJSUFF) $(OBJDIR)/symbtabl.$(OBJSUFF)\ - $(OBJDIR)/dialoged_resources.$(OBJSUFF) - -all: $(OBJDIR) dialoged$(GUISUFFIX)$(EXESUFF) - -$(OBJDIR): - mkdir $(OBJDIR) - -dialoged$(GUISUFFIX)$(EXESUFF): $(OBJECTS) $(WXLIB) - $(CC) $(LDFLAGS) -o dialoged$(GUISUFFIX)$(EXESUFF) $(OBJECTS) $(XVIEW_LINK) $(LDLIBS) - -$(OBJDIR)/dialoged.$(OBJSUFF): dialoged.$(SRCSUFF) - $(CC) -c $(CPPFLAGS) -o $@ dialoged.$(SRCSUFF) - -$(OBJDIR)/winprop.$(OBJSUFF): winprop.h reseditr.h winprop.$(SRCSUFF) - $(CC) -c $(CPPFLAGS) -o $@ winprop.$(SRCSUFF) - -$(OBJDIR)/reswrite.$(OBJSUFF): winprop.h reseditr.h reswrite.$(SRCSUFF) - $(CC) -c $(CPPFLAGS) -o $@ reswrite.$(SRCSUFF) - -$(OBJDIR)/reseditr.$(OBJSUFF): winprop.h reseditr.h reseditr.$(SRCSUFF) - $(CC) -c $(CPPFLAGS) -o $@ reseditr.$(SRCSUFF) - -$(OBJDIR)/dlghndlr.$(OBJSUFF): winprop.h reseditr.h dlghndlr.$(SRCSUFF) - $(CC) -c $(CPPFLAGS) -o $@ dlghndlr.$(SRCSUFF) - -$(OBJDIR)/edlist.$(OBJSUFF): winprop.h edlist.h edlist.$(SRCSUFF) - $(CC) -c $(CPPFLAGS) -o $@ edlist.$(SRCSUFF) - -$(OBJDIR)/edtree.$(OBJSUFF): winprop.h edtree.h edtree.$(SRCSUFF) - $(CC) -c $(CPPFLAGS) -o $@ edtree.$(SRCSUFF) - -$(OBJDIR)/winstyle.$(OBJSUFF): winstyle.h winstyle.$(SRCSUFF) - $(CC) -c $(CPPFLAGS) -o $@ winstyle.$(SRCSUFF) - -$(OBJDIR)/symbtabl.$(OBJSUFF): symbtabl.h symbtabl.$(SRCSUFF) - $(CC) -c $(CPPFLAGS) -o $@ symbtabl.$(SRCSUFF) - -$(OBJDIR)/dialoged_resources.o: dialoged.rc - $(RESCOMP) -i dialoged.rc -o $(OBJDIR)/dialoged_resources.o $(RESFLAGS) - -clean: - rm -f $(OBJECTS) dialoged$(GUISUFFIX).exe core *.rsc *.res diff --git a/utils/dialoged/src/makefile.sc b/utils/dialoged/src/makefile.sc deleted file mode 100644 index 5099033cae..0000000000 --- a/utils/dialoged/src/makefile.sc +++ /dev/null @@ -1,36 +0,0 @@ -# Symantec C++ makefile for Dialog Editor - -WXDIR = $(WXWIN) -!include $(WXDIR)\src\makesc.env - -WXLIB = $(WXDIR)\lib\wx.lib -INCDIR = $(WXDIR)\include -MSWINC = $(INCDIR)\msw -BASEINC = $(INCDIR)\base - -CC=sc -RC=rc -CFLAGS = -o -ml -W -Dwx_msw -LDFLAGS = -ml -W - -INCLUDE=$(BASEINC);$(MSWINC) -OBJECTS = wx_resed.obj wx_rdlg.obj wx_reswr.obj wx_repal.obj wx_rprop.obj dialoged.obj - -LIBS=$(WXLIB) libw.lib commdlg.lib shell.lib - -.$(SRCSUFF).obj: - *$(CC) -c $(CFLAGS) -I$(INCLUDE) $< - -.rc.res: - *$(RC) -r -I$(INCLUDE) $< - -dialoged.exe: $(OBJECTS) dialoged.def dialoged.res - *$(CC) $(LDFLAGS) -o$@ $(OBJECTS) dialoged.def $(LIBS) - *$(RC) -k dialoged.res - -clean: - -del *.obj - -del *.exe - -del *.res - -del *.map - -del *.rws diff --git a/utils/dialoged/src/makefile.unx b/utils/dialoged/src/makefile.unx deleted file mode 100644 index df33482948..0000000000 --- a/utils/dialoged/src/makefile.unx +++ /dev/null @@ -1,18 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1998 -# Updated: -# Copyright: (c) 1998 Julian Smart -# -# "%W% %G%" -# -# Makefile for Dialog Editor (Unix) - -PROGRAM=dialoged - -OBJECTS = dialoged.o reseditr.o dlghndlr.o reswrite.o\ - winprop.o edtree.o edlist.o symbtabl.o winstyle.o - -include ../../../src/makeprog.env - diff --git a/utils/dialoged/src/makefile.vc b/utils/dialoged/src/makefile.vc deleted file mode 100644 index 79339bd8b6..0000000000 --- a/utils/dialoged/src/makefile.vc +++ /dev/null @@ -1,127 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993-1999 Julian Smart -# -# "%W% %G%" -# -# Makefile : Builds Dialog Editor (MS VC++). -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -# Set WXDIR for your system -WXDIR = $(WXWIN) -THISDIR = $(WXDIR)\utils\dialoged\src -DOCDIR=$(WXDIR)\docs -LOCALDOCDIR=$(WXDIR)\utils\dialoged\docs - -PROGRAM=dialoged - -OBJECTS = dialoged.obj reseditr.obj dlghndlr.obj reswrite.obj\ - winprop.obj edtree.obj edlist.obj symbtabl.obj winstyle.obj - -!include $(WXDIR)\src\makeprog.vc - - -all: dialoged.exe - -dialoged.obj: winprop.h reseditr.h dialoged.$(SRCSUFF) $(DUMMYOBJ) - $(cc) @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -winprop.obj: winprop.h reseditr.h winprop.$(SRCSUFF) $(DUMMYOBJ) - $(cc) @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -reswrite.obj: winprop.h reseditr.h reswrite.$(SRCSUFF) $(DUMMYOBJ) - $(cc) @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -reseditr.obj: winprop.h reseditr.h reseditr.$(SRCSUFF) $(DUMMYOBJ) - $(cc) @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -edtree.obj: winprop.h reseditr.h edtree.h edtree.$(SRCSUFF) $(DUMMYOBJ) - $(cc) @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -edlist.obj: winprop.h reseditr.h edlist.h edlist.$(SRCSUFF) $(DUMMYOBJ) - $(cc) @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -dlghndlr.obj: winprop.h reseditr.h dlghndlr.$(SRCSUFF) $(DUMMYOBJ) - $(cc) @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -symbtabl.obj: symbtabl.h symbtabl.$(SRCSUFF) $(DUMMYOBJ) - $(cc) @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -winstyle.obj: winstyle.h winstyle.$(SRCSUFF) $(DUMMYOBJ) - $(cc) @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -DOCSOURCES=$(LOCALDOCDIR)\dialoged.tex $(LOCALDOCDIR)\body.tex\ - $(LOCALDOCDIR)\bugs.tex $(LOCALDOCDIR)\changes.tex\ - $(LOCALDOCDIR)\classes.tex $(LOCALDOCDIR)\tech.tex - -html: $(DOCDIR)\html\dialoged\dlged.htm -hlp: $(DOCDIR)\winhelp\dialoged.hlp -pdfrtf: $(DOCDIR)\pdf\dialoged.rtf -ps: $(DOCDIR)\ps\dialoged.ps - -$(DOCDIR)\winhelp\dialoged.hlp: $(LOCALDOCDIR)\dialoged.rtf $(LOCALDOCDIR)\dialoged.hpj - cd $(LOCALDOCDIR) - -erase dialoged.ph - hc dialoged - move dialoged.hlp $(DOCDIR)\winhelp\dialoged.hlp - move dialoged.cnt $(DOCDIR)\winhelp\dialoged.cnt - cd $(THISDIR) - -$(LOCALDOCDIR)\dialoged.rtf: $(DOCSOURCES) - cd $(LOCALDOCDIR) - -start /w tex2rtf $(LOCALDOCDIR)\dialoged.tex $(LOCALDOCDIR)\dialoged.rtf -twice -winhelp - cd $(THISDIR) - -$(DOCDIR)\pdf\dialoged.rtf: $(DOCSOURCES) - cd $(LOCALDOCDIR) - -copy *.bmp *.wmf $(DOCDIR)\pdf - -start /w tex2rtf $(LOCALDOCDIR)\dialoged.tex $(DOCDIR)\pdf\dialoged.rtf -twice -rtf - cd $(THISDIR) - -$(DOCDIR)\html\dialoged\dlged.htm: $(DOCSOURCES) - cd $(LOCALDOCDIR) - -mkdir $(DOCDIR)\html\dialoged - -start /w tex2rtf $(LOCALDOCDIR)\dialoged.tex $(DOCDIR)\html\dialoged\dlged.htm -twice -html - -erase $(DOCDIR)\html\dialoged\*.con - -erase $(DOCDIR)\html\dialoged\*.ref - cd $(THISDIR) - -$(LOCALDOCDIR)\dialoged.dvi: $(DOCSOURCES) - cd $(LOCALDOCDIR) - -latex dialoged - -latex dialoged - -makeindx dialoged - -bibtex dialoged - -latex dialoged - -latex dialoged - cd $(THISDIR) - -$(WXDIR)\docs\ps\dialoged.ps: $(LOCALDOCDIR)\dialoged.dvi - cd $(LOCALDOCDIR) - -dvips32 -o dialoged.ps dialoged - move dialoged.ps $(WXDIR)\docs\ps\dialoged.ps - cd $(THISDIR) - - diff --git a/utils/dialoged/src/makefile.wat b/utils/dialoged/src/makefile.wat deleted file mode 100644 index 362b289124..0000000000 --- a/utils/dialoged/src/makefile.wat +++ /dev/null @@ -1,15 +0,0 @@ -# -# Makefile for WATCOM -# -# Created by D.Chubraev, chubraev@iem.ee.ethz.ch -# 8 Nov 1994 -# - -WXDIR = $(%WXWIN) - -PROGRAM = dialoged -OBJECTS = dialoged.obj reseditr.obj dlghndlr.obj reswrite.obj winprop.obj edtree.obj edlist.obj symbtabl.obj winstyle.obj - -!include $(WXDIR)\src\makeprog.wat - - diff --git a/utils/dialoged/src/reseditr.cpp b/utils/dialoged/src/reseditr.cpp deleted file mode 100644 index 61dbed5776..0000000000 --- a/utils/dialoged/src/reseditr.cpp +++ /dev/null @@ -1,2440 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: reseditr.cpp -// Purpose: Resource editor class -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "reseditr.h" -#endif - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" - -#include "wx/checkbox.h" -#include "wx/button.h" -#include "wx/choice.h" -#include "wx/listbox.h" -#include "wx/radiobox.h" -#include "wx/statbox.h" -#include "wx/gauge.h" -#include "wx/slider.h" -#include "wx/textctrl.h" -#include "wx/menu.h" -#include "wx/toolbar.h" -#endif - -#include "wx/scrolbar.h" -#include "wx/config.h" - -#include -#include -#include -#include - -#if wxUSE_IOSTREAMH -#if defined(__WXMSW__) && !defined(__GNUWIN32__) -#include -#else -#include -#endif -#else -#include -#endif - -#ifdef __WXMSW__ -#include -#endif - -#ifdef __WXMSW__ -#include "wx/help.h" -#endif - -#include "reseditr.h" -#include "winprop.h" -#include "dlghndlr.h" -#include "edtree.h" -#include "edlist.h" - -static void ObjectMenuProc(wxMenu& menu, wxCommandEvent& event); -wxResourceManager *wxResourceManager::sm_currentResourceManager = NULL; - -#if defined(__WXGTK__) || defined(__WXMOTIF__) -#include "bitmaps/load.xpm" -#include "bitmaps/save.xpm" -#include "bitmaps/new.xpm" -#include "bitmaps/vert.xpm" -#include "bitmaps/alignt.xpm" -#include "bitmaps/alignb.xpm" -#include "bitmaps/horiz.xpm" -#include "bitmaps/alignl.xpm" -#include "bitmaps/alignr.xpm" -#include "bitmaps/copysize.xpm" -#include "bitmaps/tofront.xpm" -#include "bitmaps/toback.xpm" -#include "bitmaps/help.xpm" -#include "bitmaps/wxwin.xpm" - -#include "bitmaps/dialog.xpm" -#include "bitmaps/folder1.xpm" -#include "bitmaps/folder2.xpm" -#include "bitmaps/buttonsm.xpm" -#endif - -/* - * Resource manager - */ - -wxResourceManager::wxResourceManager(): - m_imageList(16, 16, TRUE) -{ - sm_currentResourceManager = this; - m_editorFrame = NULL; - m_editorPanel = NULL; - m_popupMenu = NULL; - m_editorResourceTree = NULL; - m_editorControlList = NULL; - m_nameCounter = 1; - m_symbolIdCounter = 99; - m_modified = FALSE; - m_currentFilename = ""; - m_symbolFilename = ""; - m_editorToolBar = NULL; - - // Default window positions - m_resourceEditorWindowSize.width = 500; - m_resourceEditorWindowSize.height = 450; - - m_resourceEditorWindowSize.x = 0; - m_resourceEditorWindowSize.y = 0; - - m_propertyWindowSize.width = 300; - m_propertyWindowSize.height = 300; - -#ifdef __WXMSW__ - m_helpController = NULL; -#endif - - m_bitmapImage = NULL; - m_rootDialogItem = 0; -} - -wxResourceManager::~wxResourceManager() -{ - sm_currentResourceManager = NULL; - SaveOptions(); - -#ifdef __WXMSW__ - if (m_helpController) - { - m_helpController->Quit(); - delete m_helpController; - m_helpController = NULL; - } -#endif - - delete m_bitmapImage; - delete m_popupMenu; -} - -bool wxResourceManager::Initialize() -{ - // Set up the resource filename for each platform. -#ifdef __WXMSW__ - // dialoged.ini in the Windows directory - char buf[256]; - GetWindowsDirectory(buf, 256); - strcat(buf, "\\dialoged.ini"); - m_optionsResourceFilename = buf; -#elif defined(__WXGTK__) || defined(__WXMOTIF__) - wxGetHomeDir( &m_optionsResourceFilename ); - m_optionsResourceFilename += "/.dialogedrc"; -#else -#error "Unsupported platform." -#endif - - LoadOptions(); - -#ifdef __WXMSW__ - m_helpController = new wxHelpController; - m_helpController->Initialize("dialoged"); -#endif - - m_popupMenu = new wxMenu("", (wxFunction)ObjectMenuProc); - m_popupMenu->Append(OBJECT_MENU_EDIT, "Edit properties"); - m_popupMenu->Append(OBJECT_MENU_DELETE, "Delete object"); - - if (!m_bitmapImage) - { -#ifdef __WXMSW__ - m_bitmapImage = new wxBitmap("WXWINBMP", wxBITMAP_TYPE_BMP_RESOURCE); -#endif -#if defined(__WXGTK__) || defined(__WXMOTIF__) - m_bitmapImage = new wxBitmap( wxwin_xpm ); -#endif - } - - // Initialize the image list icons -#ifdef __WXMSW__ - wxIcon icon1("DIALOG_ICON", wxBITMAP_TYPE_ICO_RESOURCE, 16, 16); - wxIcon icon2("FOLDER1_ICON", wxBITMAP_TYPE_ICO_RESOURCE, 16, 16); - wxIcon icon3("FOLDER2_ICON", wxBITMAP_TYPE_ICO_RESOURCE, 16, 16); - wxIcon icon4("BUTTONSM_ICON", wxBITMAP_TYPE_ICO_RESOURCE, 16, 16); -#else - wxIcon icon1( dialog_xpm ); - wxIcon icon2( folder1_xpm ); - wxIcon icon3( folder2_xpm ); - wxIcon icon4( buttonsm_xpm ); -#endif - m_imageList.Add(icon1); - m_imageList.Add(icon2); - m_imageList.Add(icon3); - m_imageList.Add(icon4); - - m_symbolTable.AddStandardSymbols(); - - return TRUE; -} - -bool wxResourceManager::LoadOptions() -{ - wxConfig config("DialogEd", "wxWindows"); - - config.Read("editorWindowX", &m_resourceEditorWindowSize.x); - config.Read("editorWindowY", &m_resourceEditorWindowSize.y); - config.Read("editorWindowWidth", &m_resourceEditorWindowSize.width); - config.Read("editorWindowHeight", &m_resourceEditorWindowSize.height); - config.Read("propertyWindowX", &m_propertyWindowSize.x); - config.Read("propertyWindowY", &m_propertyWindowSize.y); - config.Read("propertyWindowWidth", &m_propertyWindowSize.width); - config.Read("propertyWindowHeight", &m_propertyWindowSize.height); - - /* - wxGetResource("DialogEd", "editorWindowX", &m_resourceEditorWindowSize.x, m_optionsResourceFilename.GetData()); - wxGetResource("DialogEd", "editorWindowY", &m_resourceEditorWindowSize.y, m_optionsResourceFilename.GetData()); - wxGetResource("DialogEd", "editorWindowWidth", &m_resourceEditorWindowSize.width, m_optionsResourceFilename.GetData()); - wxGetResource("DialogEd", "editorWindowHeight", &m_resourceEditorWindowSize.height, m_optionsResourceFilename.GetData()); - wxGetResource("DialogEd", "propertyWindowX", &m_propertyWindowSize.x, m_optionsResourceFilename.GetData()); - wxGetResource("DialogEd", "propertyWindowY", &m_propertyWindowSize.y, m_optionsResourceFilename.GetData()); - wxGetResource("DialogEd", "propertyWindowWidth", &m_propertyWindowSize.width, m_optionsResourceFilename.GetData()); - wxGetResource("DialogEd", "propertyWindowHeight", &m_propertyWindowSize.height, m_optionsResourceFilename.GetData()); - */ - return TRUE; -} - -bool wxResourceManager::SaveOptions() -{ - wxConfig config("DialogEd", "wxWindows"); - - config.Write("editorWindowX", m_resourceEditorWindowSize.x); - config.Write("editorWindowY", m_resourceEditorWindowSize.y); - config.Write("editorWindowWidth", m_resourceEditorWindowSize.width); - config.Write("editorWindowHeight", m_resourceEditorWindowSize.height); - config.Write("propertyWindowX", m_propertyWindowSize.x); - config.Write("propertyWindowY", m_propertyWindowSize.y); - config.Write("propertyWindowWidth", m_propertyWindowSize.width); - config.Write("propertyWindowHeight", m_propertyWindowSize.height); - /* - wxWriteResource("DialogEd", "editorWindowX", m_resourceEditorWindowSize.x, m_optionsResourceFilename.GetData()); - wxWriteResource("DialogEd", "editorWindowY", m_resourceEditorWindowSize.y, m_optionsResourceFilename.GetData()); - wxWriteResource("DialogEd", "editorWindowWidth", m_resourceEditorWindowSize.width, m_optionsResourceFilename.GetData()); - wxWriteResource("DialogEd", "editorWindowHeight", m_resourceEditorWindowSize.height, m_optionsResourceFilename.GetData()); - - wxWriteResource("DialogEd", "propertyWindowX", m_propertyWindowSize.x, m_optionsResourceFilename.GetData()); - wxWriteResource("DialogEd", "propertyWindowY", m_propertyWindowSize.y, m_optionsResourceFilename.GetData()); - wxWriteResource("DialogEd", "propertyWindowWidth", m_propertyWindowSize.width, m_optionsResourceFilename.GetData()); - wxWriteResource("DialogEd", "propertyWindowHeight", m_propertyWindowSize.height, m_optionsResourceFilename.GetData()); - */ - - return TRUE; -} - -// Show or hide the resource editor frame, which displays a list -// of resources with ability to edit them. -bool wxResourceManager::ShowResourceEditor(bool show, wxWindow *WXUNUSED(parent), const char *title) -{ - if (show) - { - if (m_editorFrame) - { - m_editorFrame->Iconize(FALSE); - m_editorFrame->Show(TRUE); - return TRUE; - } - m_editorFrame = OnCreateEditorFrame(title); - SetFrameTitle(""); - wxMenuBar *menuBar = OnCreateEditorMenuBar(m_editorFrame); - m_editorFrame->SetMenuBar(menuBar); - - m_editorToolBar = (EditorToolBar *)OnCreateToolBar(m_editorFrame); - m_editorControlList = new wxResourceEditorControlList(m_editorFrame, IDC_LISTCTRL, wxPoint(0, 0), wxSize(-1, -1)); - m_editorResourceTree = new wxResourceEditorProjectTree(m_editorFrame, IDC_TREECTRL, wxPoint(0, 0), wxSize(-1, -1), - wxTR_HAS_BUTTONS); - m_editorPanel = OnCreateEditorPanel(m_editorFrame); - - m_editorResourceTree->SetImageList(& m_imageList); - - // Constraints for toolbar - wxLayoutConstraints *c = new wxLayoutConstraints; - c->left.SameAs (m_editorFrame, wxLeft, 0); - c->top.SameAs (m_editorFrame, wxTop, 0); - c->right.SameAs (m_editorFrame, wxRight, 0); - c->bottom.Unconstrained(); - c->width.Unconstrained(); - c->height.Absolute(28); - m_editorToolBar->SetConstraints(c); - - // Constraints for listbox - c = new wxLayoutConstraints; - c->left.SameAs (m_editorFrame, wxLeft, 0); - c->top.SameAs (m_editorToolBar, wxBottom, 0); - c->right.Absolute (150); - c->bottom.SameAs (m_editorControlList, wxTop, 0); - c->width.Unconstrained(); - c->height.Unconstrained(); - m_editorResourceTree->SetConstraints(c); - - // Constraints for panel - c = new wxLayoutConstraints; - c->left.SameAs (m_editorResourceTree, wxRight, 0); - c->top.SameAs (m_editorToolBar, wxBottom, 0); - c->right.SameAs (m_editorFrame, wxRight, 0); - c->bottom.SameAs (m_editorControlList, wxTop, 0); - c->width.Unconstrained(); - c->height.Unconstrained(); - m_editorPanel->SetConstraints(c); - - // Constraints for control list (bottom window) - c = new wxLayoutConstraints; - c->left.SameAs (m_editorFrame, wxLeft, 0); - c->right.SameAs (m_editorFrame, wxRight, 0); - c->bottom.SameAs (m_editorFrame, wxBottom, 0); - c->width.Unconstrained(); -#if defined(__WXGTK__) || defined(__WXMOTIF__) - c->height.Absolute(120); -#else - c->height.Absolute(60); -#endif - - m_editorControlList->SetConstraints(c); - - m_editorFrame->SetAutoLayout(TRUE); - - UpdateResourceList(); - - m_editorFrame->Show(TRUE); - return TRUE; - } - else - { - wxFrame *fr = m_editorFrame; - if (m_editorFrame->OnClose()) - { - fr->Show(FALSE); - delete fr; - m_editorFrame = NULL; - m_editorPanel = NULL; - } - } - return TRUE; -} - -void wxResourceManager::SetFrameTitle(const wxString& filename) -{ - if (m_editorFrame) - { - if (filename == wxString("")) - m_editorFrame->SetTitle("wxWindows Dialog Editor - untitled"); - else - { - wxString str("wxWindows Dialog Editor - "); - wxString str2(wxFileNameFromPath(WXSTRINGCAST filename)); - str += str2; - m_editorFrame->SetTitle(str); - } - } -} - -bool wxResourceManager::Save() -{ - if (m_currentFilename == wxString("")) - return SaveAs(); - else - return Save(m_currentFilename); -} - -bool wxResourceManager::Save(const wxString& filename) -{ - // Ensure all visible windows are saved to their resources - m_currentFilename = filename; - SetFrameTitle(m_currentFilename); - InstantiateAllResourcesFromWindows(); - if (m_resourceTable.Save(filename)) - { - m_symbolTable.WriteIncludeFile(m_symbolFilename); - Modify(FALSE); - return TRUE; - } - else - return FALSE; -} - -bool wxResourceManager::SaveAs() -{ - wxString s(wxFileSelector("Save resource file", wxPathOnly(WXSTRINGCAST m_currentFilename), wxFileNameFromPath(WXSTRINGCAST m_currentFilename), - "wxr", "*.wxr", wxSAVE | wxOVERWRITE_PROMPT, wxTheApp->GetTopWindow())); - - if (s.IsNull() || s == "") - return FALSE; - - m_currentFilename = s; - wxStripExtension(m_currentFilename); - m_currentFilename += ".wxr"; - - // Construct include filename from this file - m_symbolFilename = m_currentFilename; - - wxStripExtension(m_symbolFilename); - m_symbolFilename += ".h"; - - Save(m_currentFilename); - return TRUE; -} - -bool wxResourceManager::SaveIfModified() -{ - if (Modified()) - return Save(); - else return TRUE; -} - -bool wxResourceManager::Load(const wxString& filename) -{ - return New(TRUE, filename); -} - -bool wxResourceManager::New(bool loadFromFile, const wxString& filename) -{ - if (!Clear(TRUE, FALSE)) - return FALSE; - - m_symbolTable.AddStandardSymbols(); - - if (loadFromFile) - { - wxString str = filename; - if (str == wxString("")) - { - wxString f(wxFileSelector("Open resource file", NULL, NULL, "wxr", "*.wxr", 0, wxTheApp->GetTopWindow())); - if (!f.IsNull() && f != "") - str = f; - else - return FALSE; - } - - if (!m_resourceTable.ParseResourceFile(WXSTRINGCAST str)) - { - wxMessageBox("Could not read file.", "Resource file load error", wxOK | wxICON_EXCLAMATION); - return FALSE; - } - m_currentFilename = str; - - SetFrameTitle(m_currentFilename); - - UpdateResourceList(); - - // Construct include filename from this file - m_symbolFilename = m_currentFilename; - - wxStripExtension(m_symbolFilename); - m_symbolFilename += ".h"; - - if (!m_symbolTable.ReadIncludeFile(m_symbolFilename)) - { - wxString str("Could not find include file "); - str += m_symbolFilename; - str += ".\nDialog Editor maintains a header file containing id symbols to be used in the application.\n"; - str += "The next time this .wxr file is saved, a header file will be saved also."; - wxMessageBox(str, "Dialog Editor Warning", wxOK ); - - m_symbolIdCounter = 99; - } - else - { - // Set the id counter to the last known id - m_symbolIdCounter = m_symbolTable.FindHighestId(); - } - - // Now check in case some (or all) resources don't have resource ids, or they - // don't match the .h file, or something of that nature. - bool altered = RepairResourceIds(); - if (altered) - { - wxMessageBox("Some resources have had new identifiers associated with them, since they were missing.", - "Dialog Editor Warning", wxOK ); - Modify(TRUE); - } - else - Modify(FALSE); - - return TRUE; - } - else - { - SetFrameTitle(""); - m_currentFilename = ""; - } - Modify(FALSE); - - return TRUE; -} - -bool wxResourceManager::Clear(bool WXUNUSED(deleteWindows), bool force) -{ - if (!force && Modified()) - { - int ans = wxMessageBox("Save modified resource file?", "Dialog Editor", wxYES_NO | wxCANCEL); - if (ans == wxCANCEL) - return FALSE; - if (ans == wxYES) - if (!SaveIfModified()) - return FALSE; - if (ans == wxNO) - Modify(FALSE); - } - - ClearCurrentDialog(); - DisassociateWindows(); - - m_symbolTable.Clear(); - m_resourceTable.ClearTable(); - UpdateResourceList(); - - return TRUE; -} - -bool wxResourceManager::DisassociateWindows() -{ - m_resourceTable.BeginFind(); - wxNode *node; - while ((node = m_resourceTable.Next())) - { - wxItemResource *res = (wxItemResource *)node->Data(); - DisassociateResource(res); - } - - return TRUE; -} - -void wxResourceManager::AssociateResource(wxItemResource *resource, wxWindow *win) -{ - if (!m_resourceAssociations.Get((long)resource)) - m_resourceAssociations.Put((long)resource, win); - - wxNode *node = resource->GetChildren().First(); - while (node) - { - wxItemResource *child = (wxItemResource *)node->Data(); - wxWindow *childWindow = (wxWindow *)m_resourceAssociations.Get((long)child); - if (!childWindow) - childWindow = win->FindWindow(child->GetName()); - if (childWindow) - AssociateResource(child, childWindow); - else - { - char buf[200]; - sprintf(buf, "AssociateResource: cannot find child window %s", child->GetName() ? (const char*) child->GetName() : "(unnamed)"); - wxMessageBox(buf, "Dialog Editor problem", wxOK); - } - - node = node->Next(); - } -} - -bool wxResourceManager::DisassociateResource(wxItemResource *resource) -{ - wxWindow *win = FindWindowForResource(resource); - if (!win) - return FALSE; - - // Disassociate children of window - wxNode *node = win->GetChildren().First(); - while (node) - { - wxWindow *child = (wxWindow *)node->Data(); - if (child->IsKindOf(CLASSINFO(wxControl))) - DisassociateResource(child); - node = node->Next(); - } - - RemoveSelection(win); - m_resourceAssociations.Delete((long)resource); - return TRUE; -} - -bool wxResourceManager::DisassociateResource(wxWindow *win) -{ - wxItemResource *res = FindResourceForWindow(win); - if (res) - return DisassociateResource(res); - else - return FALSE; -} - -// Saves the window info into the resource, and deletes the -// handler. Doesn't actually disassociate the window from -// the resources. Replaces OnClose. -bool wxResourceManager::SaveInfoAndDeleteHandler(wxWindow* win) -{ - wxItemResource *res = FindResourceForWindow(win); - - if (win->IsKindOf(CLASSINFO(wxPanel))) - { - wxResourceEditorDialogHandler* handler = (wxResourceEditorDialogHandler*) win->GetEventHandler(); - win->PopEventHandler(); - - // Now reset all child event handlers - wxNode *node = win->GetChildren().First(); - while ( node ) - { - wxWindow *child = (wxWindow *)node->Data(); - wxEvtHandler *childHandler = child->GetEventHandler(); - if ( child->IsKindOf(CLASSINFO(wxControl)) && childHandler != child ) - { - child->PopEventHandler(TRUE); - } - node = node->Next(); - } - delete handler; - } - else - { - win->PopEventHandler(TRUE); - } - - // Save the information - InstantiateResourceFromWindow(res, win, TRUE); - -// DisassociateResource(win); - - return TRUE; -} - -// Destroys the window. If this is the 'current' panel, NULLs the -// variable. -bool wxResourceManager::DeleteWindow(wxWindow* win) -{ - bool clearDisplay = FALSE; - if (m_editorPanel->m_childWindow == win) - { - m_editorPanel->m_childWindow = NULL; - clearDisplay = TRUE; - } - - win->Destroy(); - - if (clearDisplay) - m_editorPanel->Clear(); - - return TRUE; -} - -wxItemResource *wxResourceManager::FindResourceForWindow(wxWindow *win) -{ - m_resourceAssociations.BeginFind(); - wxNode *node; - while ((node = m_resourceAssociations.Next())) - { - wxWindow *w = (wxWindow *)node->Data(); - if (w == win) - { - return (wxItemResource *)node->GetKeyInteger(); - } - } - return NULL; -} - -wxWindow *wxResourceManager::FindWindowForResource(wxItemResource *resource) -{ - return (wxWindow *)m_resourceAssociations.Get((long)resource); -} - - -void wxResourceManager::MakeUniqueName(char *prefix, char *buf) -{ - while (TRUE) - { - sprintf(buf, "%s%d", prefix, m_nameCounter); - m_nameCounter ++; - - if (!m_resourceTable.FindResource(buf)) - return; - } -} - -wxFrame *wxResourceManager::OnCreateEditorFrame(const char *title) -{ - /* - int frameWidth = 420; - int frameHeight = 300; - */ - - wxResourceEditorFrame *frame = new wxResourceEditorFrame(this, NULL, title, - wxPoint(m_resourceEditorWindowSize.x, m_resourceEditorWindowSize.y), - wxSize(m_resourceEditorWindowSize.width, m_resourceEditorWindowSize.height), - wxDEFAULT_FRAME_STYLE); - - frame->CreateStatusBar(1); - - frame->SetAutoLayout(TRUE); -#ifdef __WXMSW__ - frame->SetIcon(wxIcon("DIALOGEDICON")); -#endif - return frame; -} - -wxMenuBar *wxResourceManager::OnCreateEditorMenuBar(wxFrame *WXUNUSED(parent)) -{ - wxMenuBar *menuBar = new wxMenuBar; - - wxMenu *fileMenu = new wxMenu; - fileMenu->Append(RESED_NEW_DIALOG, "New &dialog", "Create a new dialog"); - fileMenu->AppendSeparator(); - fileMenu->Append(wxID_NEW, "&New project", "Clear the current project"); - fileMenu->Append(wxID_OPEN, "&Open...", "Load a resource file"); - fileMenu->Append(wxID_SAVE, "&Save", "Save a resource file"); - fileMenu->Append(wxID_SAVEAS, "Save &As...", "Save a resource file as..."); - fileMenu->Append(RESED_CLEAR, "&Clear", "Clear current resources"); - fileMenu->AppendSeparator(); - fileMenu->Append(wxID_EXIT, "E&xit", "Exit resource editor"); - - wxMenu *editMenu = new wxMenu; - editMenu->Append(RESED_TEST, "&Test Dialog", "Test dialog"); - editMenu->Append(RESED_RECREATE, "&Recreate", "Recreate the selected resource(s)"); - editMenu->Append(RESED_DELETE, "&Delete", "Delete the selected resource(s)"); - - wxMenu *helpMenu = new wxMenu; - helpMenu->Append(RESED_CONTENTS, "&Help topics", "Invokes the on-line help"); - helpMenu->AppendSeparator(); - helpMenu->Append(wxID_ABOUT, "&About", "About wxWindows Dialog Editor"); - - menuBar->Append(fileMenu, "&File"); - menuBar->Append(editMenu, "&Edit"); - menuBar->Append(helpMenu, "&Help"); - - return menuBar; -} - -wxResourceEditorScrolledWindow *wxResourceManager::OnCreateEditorPanel(wxFrame *parent) -{ - wxResourceEditorScrolledWindow *panel = new wxResourceEditorScrolledWindow(parent, wxDefaultPosition, wxDefaultSize, -// wxSUNKEN_BORDER|wxCLIP_CHILDREN); -#ifdef __WXMOTIF__ - wxBORDER); -#else - wxSUNKEN_BORDER); -#endif - - panel->SetScrollbars(10, 10, 100, 100); - - return panel; -} - -wxToolBar *wxResourceManager::OnCreateToolBar(wxFrame *parent) -{ - // Load palette bitmaps -#ifdef __WXMSW__ - wxBitmap ToolbarLoadBitmap("LOADTOOL"); - wxBitmap ToolbarSaveBitmap("SAVETOOL"); - wxBitmap ToolbarNewBitmap("NEWTOOL"); - wxBitmap ToolbarVertBitmap("VERTTOOL"); - wxBitmap ToolbarAlignTBitmap("ALIGNTTOOL"); - wxBitmap ToolbarAlignBBitmap("ALIGNBTOOL"); - wxBitmap ToolbarHorizBitmap("HORIZTOOL"); - wxBitmap ToolbarAlignLBitmap("ALIGNLTOOL"); - wxBitmap ToolbarAlignRBitmap("ALIGNRTOOL"); - wxBitmap ToolbarCopySizeBitmap("COPYSIZETOOL"); - wxBitmap ToolbarToBackBitmap("TOBACKTOOL"); - wxBitmap ToolbarToFrontBitmap("TOFRONTTOOL"); - wxBitmap ToolbarHelpBitmap("HELPTOOL"); -#endif -#if defined(__WXGTK__) || defined(__WXMOTIF__) - wxBitmap ToolbarLoadBitmap( load_xpm ); - wxBitmap ToolbarSaveBitmap( save_xpm); - wxBitmap ToolbarNewBitmap( new_xpm ); - wxBitmap ToolbarVertBitmap( vert_xpm ); - wxBitmap ToolbarAlignTBitmap( alignt_xpm ); - wxBitmap ToolbarAlignBBitmap( alignb_xpm ); - wxBitmap ToolbarHorizBitmap( horiz_xpm ); - wxBitmap ToolbarAlignLBitmap( alignl_xpm ); - wxBitmap ToolbarAlignRBitmap( alignr_xpm ); - wxBitmap ToolbarCopySizeBitmap( copysize_xpm ); - wxBitmap ToolbarToBackBitmap( toback_xpm ); - wxBitmap ToolbarToFrontBitmap( tofront_xpm ); - wxBitmap ToolbarHelpBitmap( help_xpm ); -#endif - - // Create the toolbar - EditorToolBar *toolbar = new EditorToolBar(parent, wxPoint(0, 0), wxSize(-1, -1), wxNO_BORDER|wxTB_HORIZONTAL); - toolbar->SetMargins(2, 2); - -#ifdef __WXMSW__ - int width = 24; - int dx = 2; - int gap = 6; -#else - int width = 24; // ToolbarLoadBitmap->GetWidth(); ??? - int dx = 2; - int gap = 6; -#endif - int currentX = gap; - toolbar->AddSeparator(); - toolbar->AddTool(TOOLBAR_NEW, ToolbarNewBitmap, wxNullBitmap, - FALSE, currentX, -1, NULL, "New dialog"); - currentX += width + dx; - toolbar->AddTool(TOOLBAR_LOAD_FILE, ToolbarLoadBitmap, wxNullBitmap, - FALSE, currentX, -1, NULL, "Load"); - currentX += width + dx; - toolbar->AddTool(TOOLBAR_SAVE_FILE, ToolbarSaveBitmap, wxNullBitmap, - FALSE, currentX, -1, NULL, "Save"); - currentX += width + dx + gap; - toolbar->AddSeparator(); - toolbar->AddTool(TOOLBAR_FORMAT_HORIZ, ToolbarVertBitmap, wxNullBitmap, - FALSE, currentX, -1, NULL, "Horizontal align"); - currentX += width + dx; - toolbar->AddTool(TOOLBAR_FORMAT_VERT_TOP_ALIGN, ToolbarAlignTBitmap, wxNullBitmap, - FALSE, currentX, -1, NULL, "Top align"); - currentX += width + dx; - toolbar->AddTool(TOOLBAR_FORMAT_VERT_BOT_ALIGN, ToolbarAlignBBitmap, wxNullBitmap, - FALSE, currentX, -1, NULL, "Bottom align"); - currentX += width + dx; - toolbar->AddTool(TOOLBAR_FORMAT_VERT, ToolbarHorizBitmap, wxNullBitmap, - FALSE, currentX, -1, NULL, "Vertical align"); - currentX += width + dx; - toolbar->AddTool(TOOLBAR_FORMAT_HORIZ_LEFT_ALIGN, ToolbarAlignLBitmap, wxNullBitmap, - FALSE, currentX, -1, NULL, "Left align"); - currentX += width + dx; - toolbar->AddTool(TOOLBAR_FORMAT_HORIZ_RIGHT_ALIGN, ToolbarAlignRBitmap, wxNullBitmap, - FALSE, currentX, -1, NULL, "Right align"); - currentX += width + dx; - toolbar->AddTool(TOOLBAR_COPY_SIZE, ToolbarCopySizeBitmap, wxNullBitmap, - FALSE, currentX, -1, NULL, "Copy size"); - currentX += width + dx + gap; - toolbar->AddSeparator(); - toolbar->AddTool(TOOLBAR_TO_FRONT, ToolbarToFrontBitmap, wxNullBitmap, - FALSE, currentX, -1, NULL, "To front"); - currentX += width + dx; - toolbar->AddTool(TOOLBAR_TO_BACK, ToolbarToBackBitmap, wxNullBitmap, - FALSE, currentX, -1, NULL, "To back"); - currentX += width + dx + gap; - - toolbar->AddSeparator(); - toolbar->AddTool(TOOLBAR_HELP, ToolbarHelpBitmap, wxNullBitmap, - FALSE, currentX, -1, NULL, "Help"); - currentX += width + dx; - - toolbar->Realize(); - - return toolbar; -} - -void wxResourceManager::UpdateResourceList() -{ - if (!m_editorResourceTree) - return; - - m_editorResourceTree->SetInvalid(TRUE); - m_editorResourceTree->DeleteAllItems(); - - long id = m_editorResourceTree->AddRoot("Dialogs", 1, 2); - - m_resourceTable.BeginFind(); - wxNode *node; - while ((node = m_resourceTable.Next())) - { - wxItemResource *res = (wxItemResource *)node->Data(); - wxString resType(res->GetType()); - if (resType == "wxDialog" || resType == "wxDialogBox" || resType == "wxPanel" || resType == "wxBitmap") - { - AddItemsRecursively(id, res); - } - } - m_editorResourceTree->Expand(id); - m_editorResourceTree->SetInvalid(FALSE); -} - -void wxResourceManager::AddItemsRecursively(long parent, wxItemResource *resource) -{ - wxString theString(""); - theString = resource->GetName(); - - int imageId = 0; - wxString resType(resource->GetType()); - if (resType == "wxDialog" || resType == "wxDialogBox" || resType == "wxPanel") - imageId = 0; - else - imageId = 3; - - long id = m_editorResourceTree->AppendItem(parent, theString, imageId ); - - m_editorResourceTree->SetItemData(id, new wxResourceTreeData(resource)); - - if (strcmp(resource->GetType(), "wxBitmap") != 0) - { - wxNode *node = resource->GetChildren().First(); - while (node) - { - wxItemResource *res = (wxItemResource *)node->Data(); - AddItemsRecursively(id, res); - node = node->Next(); - } - } -// m_editorResourceTree->ExpandItem(id, wxTREE_EXPAND_EXPAND); -} - -bool wxResourceManager::EditSelectedResource() -{ - int sel = m_editorResourceTree->GetSelection(); - if (sel != 0) - { - wxResourceTreeData *data = (wxResourceTreeData *)m_editorResourceTree->GetItemData(sel); - wxItemResource *res = data->GetResource(); - return Edit(res); - } - return FALSE; -} - -bool wxResourceManager::Edit(wxItemResource *res) -{ - ClearCurrentDialog(); - - wxString resType(res->GetType()); - wxPanel *panel = (wxPanel *)FindWindowForResource(res); - - if (panel) - { - wxMessageBox("Should not find panel in wxResourceManager::Edit"); - return FALSE; - } - else - { -// long style = res->GetStyle(); -// res->SetStyle(style|wxRAISED_BORDER); - panel = new wxPanel; - wxResourceEditorDialogHandler *handler = new wxResourceEditorDialogHandler(panel, res, panel->GetEventHandler(), - this); - - panel->LoadFromResource(m_editorPanel, res->GetName(), &m_resourceTable); - - panel->PushEventHandler(handler); - -// res->SetStyle(style); - handler->AddChildHandlers(); // Add event handlers for all controls - AssociateResource(res, panel); - - m_editorPanel->m_childWindow = panel; - panel->Move(m_editorPanel->GetMarginX(), m_editorPanel->GetMarginY()); - panel->Show(TRUE); - panel->Refresh(); - - wxClientDC dc(m_editorPanel); - m_editorPanel->DrawTitle(dc); - } - return FALSE; -} - -bool wxResourceManager::CreateNewPanel() -{ - ClearCurrentDialog(); - - char buf[256]; - MakeUniqueName("dialog", buf); - - wxItemResource *resource = new wxItemResource; - resource->SetType("wxDialog"); - resource->SetName(buf); - resource->SetTitle(buf); - resource->SetResourceStyle(wxRESOURCE_USE_DEFAULTS); - resource->SetResourceStyle(wxRESOURCE_DIALOG_UNITS); - - wxString newIdName; - int id = GenerateWindowId("ID_DIALOG", newIdName); - resource->SetId(id); - - // This is now guaranteed to be unique, so just add to symbol table - m_symbolTable.AddSymbol(newIdName, id); - - m_resourceTable.AddResource(resource); - - wxSize size(400, 300); - - wxPanel *panel = new wxPanel(m_editorPanel, -1, - wxPoint(m_editorPanel->GetMarginX(), m_editorPanel->GetMarginY()), - size, wxRAISED_BORDER|wxDEFAULT_DIALOG_STYLE, buf); - m_editorPanel->m_childWindow = panel; - - resource->SetStyle(panel->GetWindowStyleFlag()); - - // Store dialog units in resource - size = panel->ConvertPixelsToDialog(size); - - resource->SetSize(10, 10, size.x, size.y); - - // For editing in situ we will need to use the hash table to ensure - // we don't dereference invalid pointers. -// resourceWindowTable.Put((long)resource, panel); - - wxResourceEditorDialogHandler *handler = new wxResourceEditorDialogHandler(panel, resource, panel->GetEventHandler(), - this); - panel->PushEventHandler(handler); - - AssociateResource(resource, panel); - UpdateResourceList(); - - Modify(TRUE); - m_editorPanel->m_childWindow->Refresh(); - -// panel->Refresh(); - - wxClientDC dc(m_editorPanel); - m_editorPanel->DrawTitle(dc); - - return TRUE; -} - -bool wxResourceManager::CreatePanelItem(wxItemResource *panelResource, wxPanel *panel, char *iType, int x, int y, bool isBitmap) -{ - char buf[256]; - if (!panel->IsKindOf(CLASSINFO(wxPanel)) && !panel->IsKindOf(CLASSINFO(wxDialog))) - return FALSE; - - Modify(TRUE); - - wxItemResource *res = new wxItemResource; - wxControl *newItem = NULL; - - if ((panelResource->GetResourceStyle() & wxRESOURCE_DIALOG_UNITS) != 0) - { - wxPoint pt = panel->ConvertPixelsToDialog(wxPoint(x, y)); - res->SetSize(pt.x, pt.y, -1, -1); - } - else res->SetSize(x, y, -1, -1); - - res->SetType(iType); - - wxString prefix; - - wxString itemType(iType); - - if (itemType == "wxButton") - { - prefix = "ID_BUTTON"; - MakeUniqueName("button", buf); - res->SetName(buf); - if (isBitmap) - newItem = new wxBitmapButton(panel, -1, * m_bitmapImage, wxPoint(x, y), wxSize(-1, -1), 0, wxDefaultValidator, buf); - else - newItem = new wxButton(panel, -1, "Button", wxPoint(x, y), wxSize(-1, -1), 0, wxDefaultValidator, buf); - } - if (itemType == "wxBitmapButton") - { - prefix = "ID_BITMAPBUTTON"; - MakeUniqueName("button", buf); - res->SetName(buf); - newItem = new wxBitmapButton(panel, -1, * m_bitmapImage, wxPoint(x, y), wxSize(-1, -1), 0, wxDefaultValidator, buf); - } - else if (itemType == "wxMessage" || itemType == "wxStaticText") - { - prefix = "ID_STATIC"; - MakeUniqueName("statictext", buf); - res->SetName(buf); - if (isBitmap) - newItem = new wxStaticBitmap(panel, -1, * m_bitmapImage, wxPoint(x, y), wxSize(0, 0), 0, buf); - else - newItem = new wxStaticText(panel, -1, "Static", wxPoint(x, y), wxSize(-1, -1), 0, buf); - } - else if (itemType == "wxStaticBitmap") - { - prefix = "ID_STATICBITMAP"; - MakeUniqueName("static", buf); - res->SetName(buf); - newItem = new wxStaticBitmap(panel, -1, * m_bitmapImage, wxPoint(x, y), wxSize(-1, -1), 0, buf); - } - else if (itemType == "wxCheckBox") - { - prefix = "ID_CHECKBOX"; - MakeUniqueName("checkbox", buf); - res->SetName(buf); - newItem = new wxCheckBox(panel, -1, "Checkbox", wxPoint(x, y), wxSize(-1, -1), 0, wxDefaultValidator, buf); - } - else if (itemType == "wxListBox") - { - prefix = "ID_LISTBOX"; - MakeUniqueName("listbox", buf); - res->SetName(buf); - newItem = new wxListBox(panel, -1, wxPoint(x, y), wxSize(-1, -1), 0, NULL, 0, wxDefaultValidator, buf); - } - else if (itemType == "wxRadioBox") - { - prefix = "ID_RADIOBOX"; - MakeUniqueName("radiobox", buf); - res->SetName(buf); - wxString names[] = { "One", "Two" }; - newItem = new wxRadioBox(panel, -1, "Radiobox", wxPoint(x, y), wxSize(-1, -1), 2, names, 2, - wxHORIZONTAL, wxDefaultValidator, buf); - res->SetStringValues(wxStringList("One", "Two", NULL)); - } - else if (itemType == "wxRadioButton") - { - prefix = "ID_RADIOBUTTON"; - MakeUniqueName("radiobutton", buf); - res->SetName(buf); - wxString names[] = { "One", "Two" }; - newItem = new wxRadioButton(panel, -1, "Radiobutton", wxPoint(x, y), wxSize(-1, -1), - 0, wxDefaultValidator, buf); - } - else if (itemType == "wxChoice") - { - prefix = "ID_CHOICE"; - MakeUniqueName("choice", buf); - res->SetName(buf); - newItem = new wxChoice(panel, -1, wxPoint(x, y), wxSize(-1, -1), 0, NULL, 0, wxDefaultValidator, buf); - } - else if (itemType == "wxComboBox") - { - prefix = "ID_COMBOBOX"; - MakeUniqueName("combobox", buf); - res->SetName(buf); - newItem = new wxComboBox(panel, -1, "", wxPoint(x, y), wxSize(-1, -1), 0, NULL, wxCB_DROPDOWN, wxDefaultValidator, buf); - } - else if (itemType == "wxGroupBox" || itemType == "wxStaticBox") - { - prefix = "ID_STATICBOX"; - MakeUniqueName("staticbox", buf); - res->SetName(buf); - newItem = new wxStaticBox(panel, -1, "Static", wxPoint(x, y), wxSize(200, 200), 0, buf); - } - else if (itemType == "wxGauge") - { - prefix = "ID_GAUGE"; - MakeUniqueName("gauge", buf); - res->SetName(buf); - newItem = new wxGauge(panel, -1, 10, wxPoint(x, y), wxSize(80, 30), wxHORIZONTAL, wxDefaultValidator, buf); - } - else if (itemType == "wxSlider") - { - prefix = "ID_SLIDER"; - MakeUniqueName("slider", buf); - res->SetName(buf); - newItem = new wxSlider(panel, -1, 1, 1, 10, wxPoint(x, y), wxSize(120, -1), wxHORIZONTAL, wxDefaultValidator, buf); - } - else if (itemType == "wxText" || itemType == "wxTextCtrl (single-line)") - { - prefix = "ID_TEXTCTRL"; - MakeUniqueName("textctrl", buf); - res->SetName(buf); - res->SetType("wxTextCtrl"); - newItem = new wxTextCtrl(panel, -1, "", wxPoint(x, y), wxSize(120, -1), 0, wxDefaultValidator, buf); - } - else if (itemType == "wxMultiText" || itemType == "wxTextCtrl (multi-line)") - { - prefix = "ID_TEXTCTRL"; - MakeUniqueName("textctrl", buf); - res->SetName(buf); - res->SetType("wxTextCtrl"); - newItem = new wxTextCtrl(panel, -1, "", wxPoint(x, y), wxSize(120, 100), wxTE_MULTILINE, wxDefaultValidator, buf); - } - else if (itemType == "wxScrollBar") - { - prefix = "ID_SCROLLBAR"; - MakeUniqueName("scrollbar", buf); - res->SetName(buf); - newItem = new wxScrollBar(panel, -1, wxPoint(x, y), wxSize(140, -1), wxHORIZONTAL, wxDefaultValidator, buf); - } - if (!newItem) - return FALSE; - - int actualW, actualH; - newItem->GetSize(&actualW, &actualH); - wxSize actualSize(actualW, actualH); - - if ((panelResource->GetResourceStyle() & wxRESOURCE_DIALOG_UNITS) != 0) - { - actualSize = panel->ConvertPixelsToDialog(actualSize); - } - res->SetSize(res->GetX(), res->GetY(), actualSize.x, actualSize.y); - - wxString newIdName; - int id = GenerateWindowId(prefix, newIdName); - res->SetId(id); - - // This is now guaranteed to be unique, so just add to symbol table - m_symbolTable.AddSymbol(newIdName, id); - - newItem->PushEventHandler(new wxResourceEditorControlHandler(newItem, newItem)); - - res->SetStyle(newItem->GetWindowStyleFlag()); - AssociateResource(res, newItem); - panelResource->GetChildren().Append(res); - - UpdateResourceList(); - - return TRUE; -} - -void wxResourceManager::ClearCurrentDialog() -{ - if (m_editorPanel->m_childWindow) - { - SaveInfoAndDeleteHandler(m_editorPanel->m_childWindow); - DisassociateResource(m_editorPanel->m_childWindow); - DeleteWindow(m_editorPanel->m_childWindow); - m_editorPanel->m_childWindow = NULL; - m_editorPanel->Clear(); - } -} - -bool wxResourceManager::TestCurrentDialog(wxWindow* parent) -{ - if (m_editorPanel->m_childWindow) - { - wxItemResource* item = FindResourceForWindow(m_editorPanel->m_childWindow); - if (!item) - return FALSE; - - // Make sure the resources are up-to-date w.r.t. the window - InstantiateResourceFromWindow(item, m_editorPanel->m_childWindow, TRUE); - - wxDialog* dialog = new wxDialog; - bool success = FALSE; - if (dialog->LoadFromResource(parent, item->GetName(), & m_resourceTable)) - { - dialog->Centre(); - dialog->ShowModal(); - success = TRUE; - } - return success; - } - return FALSE; -} - -// Find the first dialog or panel for which -// there is a selected panel item. -wxWindow *wxResourceManager::FindParentOfSelection() -{ - m_resourceTable.BeginFind(); - wxNode *node; - while ((node = m_resourceTable.Next())) - { - wxItemResource *res = (wxItemResource *)node->Data(); - wxWindow *win = FindWindowForResource(res); - if (win) - { - wxNode *node1 = win->GetChildren().First(); - while (node1) - { - wxControl *item = (wxControl *)node1->Data(); - wxResourceEditorControlHandler *childHandler = (wxResourceEditorControlHandler *)item->GetEventHandler(); - if (item->IsKindOf(CLASSINFO(wxControl)) && childHandler->IsSelected()) - return win; - node1 = node1->Next(); - } - } - } - return NULL; -} - -// Format the panel items according to 'flag' -void wxResourceManager::AlignItems(int flag) -{ - wxWindow *win = FindParentOfSelection(); - if (!win) - return; - - wxNode *node = GetSelections().First(); - if (!node) - return; - - wxControl *firstSelection = (wxControl *)node->Data(); - if (firstSelection->GetParent() != win) - return; - - int firstX, firstY; - int firstW, firstH; - firstSelection->GetPosition(&firstX, &firstY); - firstSelection->GetSize(&firstW, &firstH); - int centreX = (int)(firstX + (firstW / 2)); - int centreY = (int)(firstY + (firstH / 2)); - - while ((node = node->Next())) - { - wxControl *item = (wxControl *)node->Data(); - if (item->GetParent() == win) - { - int x, y, w, h; - item->GetPosition(&x, &y); - item->GetSize(&w, &h); - - int newX, newY; - - switch (flag) - { - case TOOLBAR_FORMAT_HORIZ: - { - newX = x; - newY = (int)(centreY - (h/2.0)); - break; - } - case TOOLBAR_FORMAT_VERT: - { - newX = (int)(centreX - (w/2.0)); - newY = y; - break; - } - case TOOLBAR_FORMAT_HORIZ_LEFT_ALIGN: - { - newX = firstX; - newY = y; - break; - } - case TOOLBAR_FORMAT_VERT_TOP_ALIGN: - { - newX = x; - newY = firstY; - break; - } - case TOOLBAR_FORMAT_HORIZ_RIGHT_ALIGN: - { - newX = firstX + firstW - w; - newY = y; - break; - } - case TOOLBAR_FORMAT_VERT_BOT_ALIGN: - { - newX = x; - newY = firstY + firstH - h; - break; - } - default: - newX = x; newY = y; - break; - } - - wxItemResource* resource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(item); - wxItemResource* parentResource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(item->GetParent()); - - item->SetSize(newX, newY, w, h); - - // Also update the associated resource - // We need to convert to dialog units if this is not a dialog or panel, but - // the parent resource specifies dialog units. - if (parentResource->GetResourceStyle() & wxRESOURCE_DIALOG_UNITS) - { - wxPoint pt = item->GetParent()->ConvertPixelsToDialog(wxPoint(newX, newY)); - newX = pt.x; newY = pt.y; - wxSize sz = item->GetParent()->ConvertPixelsToDialog(wxSize(w, h)); - w = sz.x; h = sz.y; - } - resource->SetSize(newX, newY, w, h); - } - } - win->Refresh(); -} - -// Copy the first image's size to subsequent images -void wxResourceManager::CopySize() -{ - wxWindow *win = FindParentOfSelection(); - if (!win) - return; - - wxNode *node = GetSelections().First(); - if (!node) - return; - - wxControl *firstSelection = (wxControl *)node->Data(); - if (firstSelection->GetParent() != win) - return; - - int firstX, firstY; - int firstW, firstH; - firstSelection->GetPosition(&firstX, &firstY); - firstSelection->GetSize(&firstW, &firstH); - - while ((node = node->Next())) - { - wxControl *item = (wxControl *)node->Data(); - if (item->GetParent() == win) - { - item->SetSize(-1, -1, firstW, firstH); - - wxItemResource* resource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(item); - wxItemResource* parentResource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(item->GetParent()); - - // Also update the associated resource - // We need to convert to dialog units if this is not a dialog or panel, but - // the parent resource specifies dialog units. - if (parentResource->GetResourceStyle() & wxRESOURCE_DIALOG_UNITS) - { - wxSize sz = item->GetParent()->ConvertPixelsToDialog(wxSize(firstW, firstH)); - firstW = sz.x; firstH = sz.y; - } - resource->SetSize(resource->GetX(), resource->GetY(), firstW, firstH); - - } - } - win->Refresh(); -} - -void wxResourceManager::ToBackOrFront(bool toBack) -{ - wxWindow *win = FindParentOfSelection(); - if (!win) - return; - wxItemResource *winResource = FindResourceForWindow(win); - - wxNode *node = GetSelections().First(); - while (node) - { - wxControl *item = (wxControl *)node->Data(); - wxItemResource *itemResource = FindResourceForWindow(item); - if (item->GetParent() == win) - { - win->GetChildren().DeleteObject(item); - if (winResource) - winResource->GetChildren().DeleteObject(itemResource); - if (toBack) - { - win->GetChildren().Insert(item); - if (winResource) - winResource->GetChildren().Insert(itemResource); - } - else - { - win->GetChildren().Append(item); - if (winResource) - winResource->GetChildren().Append(itemResource); - } - } - node = node->Next(); - } -// win->Refresh(); -} - -void wxResourceManager::AddSelection(wxWindow *win) -{ - if (!m_selections.Member(win)) - m_selections.Append(win); -} - -void wxResourceManager::RemoveSelection(wxWindow *win) -{ - m_selections.DeleteObject(win); -} - -// Need to search through resource table removing this from -// any resource which has this as a parent. -bool wxResourceManager::RemoveResourceFromParent(wxItemResource *res) -{ - m_resourceTable.BeginFind(); - wxNode *node; - while ((node = m_resourceTable.Next())) - { - wxItemResource *thisRes = (wxItemResource *)node->Data(); - if (thisRes->GetChildren().Member(res)) - { - thisRes->GetChildren().DeleteObject(res); - return TRUE; - } - } - return FALSE; -} - -bool wxResourceManager::DeleteResource(wxItemResource *res) -{ - if (!res) - return FALSE; - - RemoveResourceFromParent(res); - - wxNode *node = res->GetChildren().First(); - while (node) - { - wxNode *next = node->Next(); - wxItemResource *child = (wxItemResource *)node->Data(); - DeleteResource(child); - node = next; - } - - // If this is a button or message resource, delete the - // associate bitmap resource if not being used. - wxString resType(res->GetType()); - -/* shouldn't have to do this now bitmaps are ref-counted - if ((resType == "wxMessage" || resType == "wxStaticBitmap" || resType == "wxButton" || resType == "wxBitmapButton") && res->GetValue4()) - { - PossiblyDeleteBitmapResource(res->GetValue4()); - } -*/ - - // Remove symbol from table if appropriate - if (!IsSymbolUsed(res, res->GetId())) - { - m_symbolTable.RemoveSymbol(res->GetId()); - } - - m_resourceTable.Delete(res->GetName()); - delete res; - Modify(TRUE); - return TRUE; -} - -bool wxResourceManager::DeleteResource(wxWindow *win) -{ - if (win->IsKindOf(CLASSINFO(wxControl))) - { - // Deselect and refresh window in case we leave selection - // handles behind - wxControl *item = (wxControl *)win; - wxResourceEditorControlHandler *childHandler = (wxResourceEditorControlHandler *)item->GetEventHandler(); - if (childHandler->IsSelected()) - { - RemoveSelection(item); - childHandler->SelectItem(FALSE); -#ifndef __WXGTK__ - item->GetParent()->Refresh(); -#endif - } - } - - wxItemResource *res = FindResourceForWindow(win); - - DisassociateResource(res); - DeleteResource(res); - UpdateResourceList(); - - return TRUE; -} - -// Will eventually have bitmap type information, for different -// kinds of bitmap. -wxString wxResourceManager::AddBitmapResource(const wxString& filename) -{ - wxItemResource *resource = FindBitmapResourceByFilename(filename); - if (!resource) - { - char buf[256]; - MakeUniqueName("bitmap", buf); - resource = new wxItemResource; - resource->SetType("wxBitmap"); - resource->SetName(buf); - - // A bitmap resource has one or more children, specifying - // alternative bitmaps. - wxItemResource *child = new wxItemResource; - child->SetType("wxBitmap"); - child->SetName(filename); - child->SetValue1(wxBITMAP_TYPE_BMP); - child->SetValue2(RESOURCE_PLATFORM_ANY); - child->SetValue3(0); // Depth - child->SetSize(0,0,0,0); - resource->GetChildren().Append(child); - - m_resourceTable.AddResource(resource); - - UpdateResourceList(); - } - if (resource) - return resource->GetName(); - else - return wxEmptyString; -} - - // Delete the bitmap resource if it isn't being used by another resource. -void wxResourceManager::PossiblyDeleteBitmapResource(const wxString& resourceName) -{ - if (!IsBitmapResourceUsed(resourceName)) - { - wxItemResource *res = m_resourceTable.FindResource(resourceName); - DeleteResource(res); - UpdateResourceList(); - } -} - -bool wxResourceManager::IsBitmapResourceUsed(const wxString& resourceName) -{ - m_resourceTable.BeginFind(); - wxNode *node; - while ((node = m_resourceTable.Next())) - { - wxItemResource *res = (wxItemResource *)node->Data(); - wxString resType(res->GetType()); - if (resType == "wxDialog") - { - wxNode *node1 = res->GetChildren().First(); - while (node1) - { - wxItemResource *child = (wxItemResource *)node1->Data(); - wxString childResType(child->GetType()); - - if ((childResType == "wxMessage" || childResType == "wxButton") && - child->GetValue4() && - (strcmp(child->GetValue4(), resourceName) == 0)) - return TRUE; - node1 = node1->Next(); - } - } - } - return FALSE; -} - -// Given a wxButton or wxMessage, find the corresponding bitmap filename. -wxString wxResourceManager::FindBitmapFilenameForResource(wxItemResource *resource) -{ - if (!resource || (resource->GetValue4() == "")) - return wxEmptyString; - wxItemResource *bitmapResource = m_resourceTable.FindResource(resource->GetValue4()); - if (!bitmapResource) - return wxEmptyString; - - wxNode *node = bitmapResource->GetChildren().First(); - while (node) - { - // Eventually augment this to return a bitmap of the right kind or something... - // Maybe the root of the filename remains the same, so it doesn't matter which we - // pick up. Otherwise how do we specify multiple filenames... too boring... - wxItemResource *child = (wxItemResource *)node->Data(); - return child->GetName(); - - node = node->Next(); - } - return wxEmptyString; -} - -wxItemResource *wxResourceManager::FindBitmapResourceByFilename(const wxString& filename) -{ - m_resourceTable.BeginFind(); - wxNode *node; - while ((node = m_resourceTable.Next())) - { - wxItemResource *res = (wxItemResource *)node->Data(); - wxString resType(res->GetType()); - if (resType == "wxBitmap") - { - wxNode *node1 = res->GetChildren().First(); - while (node1) - { - wxItemResource *child = (wxItemResource *)node1->Data(); - if (child->GetName() && (strcmp(child->GetName(), filename) == 0)) - return res; - node1 = node1->Next(); - } - } - } - return NULL; -} - -// Is this window identifier symbol in use? -// Let's assume that we can't have 2 names for the same integer id. -// Therefore we can tell by the integer id whether the symbol is -// in use. -bool wxResourceManager::IsSymbolUsed(wxItemResource* thisResource, wxWindowID id) -{ - m_resourceTable.BeginFind(); - wxNode *node; - while ((node = m_resourceTable.Next())) - { - wxItemResource *res = (wxItemResource *)node->Data(); - - wxString resType(res->GetType()); - if (resType == "wxDialog" || resType == "wxDialogBox" || resType == "wxPanel") - { - if ((res != thisResource) && (res->GetId() == id)) - return TRUE; - - wxNode *node1 = res->GetChildren().First(); - while (node1) - { - wxItemResource *child = (wxItemResource *)node1->Data(); - if ((child != thisResource) && (child->GetId() == id)) - return TRUE; - node1 = node1->Next(); - } - } - } - return FALSE; -} - -// Is this window identifier compatible with the given name? (i.e. -// does it already exist under a different name) -bool wxResourceManager::IsIdentifierOK(const wxString& name, wxWindowID id) -{ - if (m_symbolTable.SymbolExists(name)) - { - int foundId = m_symbolTable.GetIdForSymbol(name); - if (foundId != id) - return FALSE; - } - return TRUE; -} - -// Change all integer ids that match oldId, to newId. -// This is necessary if an id is changed for one resource - all resources -// must be changed. -void wxResourceManager::ChangeIds(int oldId, int newId) -{ - m_resourceTable.BeginFind(); - wxNode *node; - while ((node = m_resourceTable.Next())) - { - wxItemResource *res = (wxItemResource *)node->Data(); - - wxString resType(res->GetType()); - if (resType == "wxDialog" || resType == "wxDialogBox" || resType == "wxPanel") - { - if (res->GetId() == oldId) - res->SetId(newId); - - wxNode *node1 = res->GetChildren().First(); - while (node1) - { - wxItemResource *child = (wxItemResource *)node1->Data(); - if (child->GetId() == oldId) - child->SetId(newId); - - node1 = node1->Next(); - } - } - } -} - -// If any resource ids were missing (or their symbol was missing), -// repair them i.e. give them new ids. Returns TRUE if any resource -// needed repairing. -bool wxResourceManager::RepairResourceIds() -{ - bool repaired = FALSE; - - m_resourceTable.BeginFind(); - wxNode *node; - while ((node = m_resourceTable.Next())) - { - wxItemResource *res = (wxItemResource *)node->Data(); - wxString resType(res->GetType()); - if (resType == "wxDialog" || resType == "wxDialogBox" || resType == "wxPanel") - { - - if ( (res->GetId() == 0) || ((res->GetId() > 0) && !m_symbolTable.IdExists(res->GetId())) ) - { - wxString newSymbolName; - int newId = GenerateWindowId("ID_DIALOG", newSymbolName) ; - - if (res->GetId() == 0) - { - res->SetId(newId); - m_symbolTable.AddSymbol(newSymbolName, newId); - } - else - { - m_symbolTable.AddSymbol(newSymbolName, res->GetId()); - } - - repaired = TRUE; - } - - wxNode *node1 = res->GetChildren().First(); - while (node1) - { - wxItemResource *child = (wxItemResource *)node1->Data(); - - if ( (child->GetId() == 0) || ((child->GetId() > 0) && !m_symbolTable.IdExists(child->GetId())) ) - { - wxString newSymbolName; - int newId = GenerateWindowId("ID_CONTROL", newSymbolName) ; - - if (child->GetId() == 0) - { - child->SetId(newId); - m_symbolTable.AddSymbol(newSymbolName, newId); - } - else - { - m_symbolTable.AddSymbol(newSymbolName, child->GetId()); - } - - repaired = TRUE; - } - - node1 = node1->Next(); - } - } - } - return repaired; -} - - - // Deletes 'win' and creates a new window from the resource that - // was associated with it. E.g. if you can't change properties on the - // fly, you'll need to delete the window and create it again. -wxWindow *wxResourceManager::RecreateWindowFromResource(wxWindow *win, wxWindowPropertyInfo *info) -{ - wxItemResource *resource = FindResourceForWindow(win); - - // Put the current window properties into the wxItemResource object - - wxWindowPropertyInfo *newInfo = NULL; - if (!info) - { - newInfo = CreatePropertyInfoForWindow(win); - info = newInfo; - } - - info->InstantiateResource(resource); - - wxWindow *newWin = NULL; - wxWindow *parent = win->GetParent(); - wxItemResource* parentResource = NULL; - if (parent) - parentResource = FindResourceForWindow(parent); - - if (win->IsKindOf(CLASSINFO(wxPanel))) - { - Edit(resource); - newWin = FindWindowForResource(resource); - } - else - { - DisassociateResource(resource); - if (win->GetEventHandler() != win) - win->PopEventHandler(TRUE); - - DeleteWindow(win); - newWin = m_resourceTable.CreateItem((wxPanel *)parent, resource, parentResource); - newWin->PushEventHandler(new wxResourceEditorControlHandler((wxControl*) newWin, (wxControl*) newWin)); - AssociateResource(resource, newWin); - UpdateResourceList(); - } - - if (info) - info->SetPropertyWindow(newWin); - - if (newInfo) - delete newInfo; - - return newWin; -} - -// Delete resource highlighted in the listbox -bool wxResourceManager::DeleteSelection() -{ - int sel = m_editorResourceTree->GetSelection(); - if (sel != 0) - { - wxResourceTreeData *data = (wxResourceTreeData *)m_editorResourceTree->GetItemData(sel); - wxItemResource *res = data->GetResource(); - wxWindow *win = FindWindowForResource(res); - if (win) - { - DeleteResource(win); - DeleteWindow(win); - UpdateResourceList(); - Modify(TRUE); - } - return TRUE; - } - - return FALSE; -} - -// Delete resource highlighted in the listbox -bool wxResourceManager::RecreateSelection() -{ - wxNode *node = GetSelections().First(); - while (node) - { - wxControl *item = (wxControl *)node->Data(); - wxResourceEditorControlHandler *childHandler = (wxResourceEditorControlHandler *)item->GetEventHandler(); - wxNode *next = node->Next(); - childHandler->SelectItem(FALSE); - - RemoveSelection(item); - - RecreateWindowFromResource(item); - - node = next; - } - return TRUE; -} - -bool wxResourceManager::EditDialog(wxDialog *WXUNUSED(dialog), wxWindow *WXUNUSED(parent)) -{ - return FALSE; -} - -// Ensures that all currently shown windows are saved to resources, -// e.g. just before writing to a .wxr file. -bool wxResourceManager::InstantiateAllResourcesFromWindows() -{ - m_resourceTable.BeginFind(); - wxNode *node; - while ((node = m_resourceTable.Next())) - { - wxItemResource *res = (wxItemResource *)node->Data(); - wxString resType(res->GetType()); - - if (resType == "wxDialog") - { - wxWindow *win = (wxWindow *)FindWindowForResource(res); - if (win) - InstantiateResourceFromWindow(res, win, TRUE); - } - else if (resType == "wxPanel") - { - wxWindow *win = (wxWindow *)FindWindowForResource(res); - if (win) - InstantiateResourceFromWindow(res, win, TRUE); - } - } - return TRUE; -} - -bool wxResourceManager::InstantiateResourceFromWindow(wxItemResource *resource, wxWindow *window, bool recurse) -{ - wxWindowPropertyInfo *info = CreatePropertyInfoForWindow(window); - info->SetResource(resource); - info->InstantiateResource(resource); - delete info; - - if (recurse) - { - wxNode *node = resource->GetChildren().First(); - while (node) - { - wxItemResource *child = (wxItemResource *)node->Data(); - wxWindow *childWindow = FindWindowForResource(child); - - if (!childWindow) - { - char buf[200]; - sprintf(buf, "Could not find window %s", (const char*) child->GetName()); - wxMessageBox(buf, "Dialog Editor problem", wxOK); - } - else - InstantiateResourceFromWindow(child, childWindow, recurse); - node = node->Next(); - } - } - - return TRUE; -} - -// Create a window information object for the give window -wxWindowPropertyInfo *wxResourceManager::CreatePropertyInfoForWindow(wxWindow *win) -{ - wxWindowPropertyInfo *info = NULL; - if (win->IsKindOf(CLASSINFO(wxScrollBar))) - { - info = new wxScrollBarPropertyInfo(win); - } - else if (win->IsKindOf(CLASSINFO(wxStaticBox))) - { - info = new wxGroupBoxPropertyInfo(win); - } - else if (win->IsKindOf(CLASSINFO(wxCheckBox))) - { - info = new wxCheckBoxPropertyInfo(win); - } - else if (win->IsKindOf(CLASSINFO(wxSlider))) - { - info = new wxSliderPropertyInfo(win); - } - else if (win->IsKindOf(CLASSINFO(wxGauge))) - { - info = new wxGaugePropertyInfo(win); - } - else if (win->IsKindOf(CLASSINFO(wxListBox))) - { - info = new wxListBoxPropertyInfo(win); - } - else if (win->IsKindOf(CLASSINFO(wxRadioBox))) - { - info = new wxRadioBoxPropertyInfo(win); - } - else if (win->IsKindOf(CLASSINFO(wxRadioButton))) - { - info = new wxRadioButtonPropertyInfo(win); - } - else if (win->IsKindOf(CLASSINFO(wxComboBox))) - { - info = new wxComboBoxPropertyInfo(win); - } - else if (win->IsKindOf(CLASSINFO(wxChoice))) - { - info = new wxChoicePropertyInfo(win); - } - else if (win->IsKindOf(CLASSINFO(wxBitmapButton))) - { - info = new wxBitmapButtonPropertyInfo(win); - } - else if (win->IsKindOf(CLASSINFO(wxButton))) - { - info = new wxButtonPropertyInfo(win); - } - else if (win->IsKindOf(CLASSINFO(wxStaticBitmap))) - { - info = new wxStaticBitmapPropertyInfo(win); - } - else if (win->IsKindOf(CLASSINFO(wxStaticText))) - { - info = new wxStaticTextPropertyInfo(win); - } - else if (win->IsKindOf(CLASSINFO(wxTextCtrl))) - { - info = new wxTextPropertyInfo(win); - } - else if (win->IsKindOf(CLASSINFO(wxPanel))) - { - info = new wxPanelPropertyInfo(win); - } - else - { - info = new wxWindowPropertyInfo(win); - } - return info; -} - -// Edit the given window -void wxResourceManager::EditWindow(wxWindow *win) -{ - wxWindowPropertyInfo *info = CreatePropertyInfoForWindow(win); - if (info) - { - info->SetResource(FindResourceForWindow(win)); - wxString str("Editing "); - str += win->GetClassInfo()->GetClassName(); - str += ": "; - if (win->GetName() != "") - str += win->GetName(); - else - str += "properties"; - info->Edit(NULL, str); - } -} - -// Generate a window id and a first stab at a name -int wxResourceManager::GenerateWindowId(const wxString& prefix, wxString& idName) -{ - m_symbolIdCounter ++; - while (m_symbolTable.IdExists(m_symbolIdCounter)) - m_symbolIdCounter ++; - - int nameId = m_symbolIdCounter; - - wxString str; - str.Printf("%d", nameId); - idName = prefix + str; - - while (m_symbolTable.SymbolExists(idName)) - { - nameId ++; - str.Printf("%d", nameId); - idName = prefix + str; - } - - return m_symbolIdCounter; -} - - -/* - * Resource editor frame - */ - -IMPLEMENT_CLASS(wxResourceEditorFrame, wxFrame) - -BEGIN_EVENT_TABLE(wxResourceEditorFrame, wxFrame) - EVT_MENU(wxID_NEW, wxResourceEditorFrame::OnNew) - EVT_MENU(RESED_NEW_DIALOG, wxResourceEditorFrame::OnNewDialog) - EVT_MENU(wxID_OPEN, wxResourceEditorFrame::OnOpen) - EVT_MENU(RESED_CLEAR, wxResourceEditorFrame::OnClear) - EVT_MENU(wxID_SAVE, wxResourceEditorFrame::OnSave) - EVT_MENU(wxID_SAVEAS, wxResourceEditorFrame::OnSaveAs) - EVT_MENU(wxID_EXIT, wxResourceEditorFrame::OnExit) - EVT_MENU(wxID_ABOUT, wxResourceEditorFrame::OnAbout) - EVT_MENU(RESED_CONTENTS, wxResourceEditorFrame::OnContents) - EVT_MENU(RESED_DELETE, wxResourceEditorFrame::OnDeleteSelection) - EVT_MENU(RESED_RECREATE, wxResourceEditorFrame::OnRecreateSelection) - EVT_MENU(RESED_TEST, wxResourceEditorFrame::OnTest) -END_EVENT_TABLE() - -wxResourceEditorFrame::wxResourceEditorFrame(wxResourceManager *resMan, wxFrame *parent, const wxString& title, - const wxPoint& pos, const wxSize& size, long style, const wxString& name): - wxFrame(parent, -1, title, pos, size, style, name) -{ - manager = resMan; -} - -wxResourceEditorFrame::~wxResourceEditorFrame() -{ -} - -void wxResourceEditorFrame::OnNew(wxCommandEvent& WXUNUSED(event)) -{ - manager->New(FALSE); -} - -void wxResourceEditorFrame::OnNewDialog(wxCommandEvent& WXUNUSED(event)) -{ - manager->CreateNewPanel(); -} - -void wxResourceEditorFrame::OnOpen(wxCommandEvent& WXUNUSED(event)) -{ - manager->New(TRUE); -} - -void wxResourceEditorFrame::OnClear(wxCommandEvent& WXUNUSED(event)) -{ - manager->Clear(TRUE, FALSE); -} - -void wxResourceEditorFrame::OnSave(wxCommandEvent& WXUNUSED(event)) -{ - manager->Save(); -} - -void wxResourceEditorFrame::OnSaveAs(wxCommandEvent& WXUNUSED(event)) -{ - manager->SaveAs(); -} - -void wxResourceEditorFrame::OnExit(wxCommandEvent& WXUNUSED(event)) -{ - manager->Clear(TRUE, FALSE) ; - this->Destroy(); -} - -void wxResourceEditorFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) -{ - char buf[300]; - sprintf(buf, "wxWindows Dialog Editor %.1f\nAuthor: Julian Smart J.Smart@ed.ac.uk\nJulian Smart (c) 1996", wxDIALOG_EDITOR_VERSION); - wxMessageBox(buf, "About Dialog Editor", wxOK|wxCENTRE); -} - -void wxResourceEditorFrame::OnTest(wxCommandEvent& WXUNUSED(event)) -{ - manager->TestCurrentDialog(this); -} - -void wxResourceEditorFrame::OnContents(wxCommandEvent& WXUNUSED(event)) -{ -#ifdef __WXMSW__ - wxBeginBusyCursor(); - manager->GetHelpController()->LoadFile(); - manager->GetHelpController()->DisplayContents(); - wxEndBusyCursor(); -#endif -} - -void wxResourceEditorFrame::OnDeleteSelection(wxCommandEvent& WXUNUSED(event)) -{ - manager->DeleteSelection(); -} - -void wxResourceEditorFrame::OnRecreateSelection(wxCommandEvent& WXUNUSED(event)) -{ - manager->RecreateSelection(); -} - -bool wxResourceEditorFrame::OnClose() -{ - if (manager->Modified()) - { - if (!manager->Clear(TRUE, FALSE)) - return FALSE; - } - - if (!Iconized()) - { - int w, h; - GetSize(&w, &h); - manager->m_resourceEditorWindowSize.width = w; - manager->m_resourceEditorWindowSize.height = h; - - int x, y; - GetPosition(&x, &y); - - manager->m_resourceEditorWindowSize.x = x; - manager->m_resourceEditorWindowSize.y = y; - } - manager->SetEditorFrame(NULL); - manager->SetEditorToolBar(NULL); - - return TRUE; -} - -/* - * Resource editor window that contains the dialog/panel being edited - */ - -BEGIN_EVENT_TABLE(wxResourceEditorScrolledWindow, wxScrolledWindow) - EVT_SCROLL(wxResourceEditorScrolledWindow::OnScroll) - EVT_PAINT(wxResourceEditorScrolledWindow::OnPaint) -END_EVENT_TABLE() - -wxResourceEditorScrolledWindow::wxResourceEditorScrolledWindow(wxWindow *parent, const wxPoint& pos, const wxSize& size, - long style): - wxScrolledWindow(parent, -1, pos, size, style) -{ - m_marginX = 10; - m_marginY = 40; - m_childWindow = NULL; - - SetBackgroundColour(* wxWHITE); -} - -wxResourceEditorScrolledWindow::~wxResourceEditorScrolledWindow() -{ -} - -void wxResourceEditorScrolledWindow::OnScroll(wxScrollEvent& event) -{ - wxScrolledWindow::OnScroll(event); - - int x, y; - ViewStart(& x, & y); - - if (m_childWindow) - m_childWindow->Move(m_marginX + (- x * 10), m_marginY + (- y * 10)); -} - -void wxResourceEditorScrolledWindow::OnPaint(wxPaintEvent& WXUNUSED(event)) -{ - wxPaintDC dc(this); - - DrawTitle(dc); -} - -void wxResourceEditorScrolledWindow::DrawTitle(wxDC& dc) -{ - if (m_childWindow) - { - wxItemResource* res = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(m_childWindow); - if (res) - { - wxString str(res->GetTitle()); - int x, y; - ViewStart(& x, & y); - - wxFont font(10, wxSWISS, wxNORMAL, wxBOLD); - dc.SetFont(font); - dc.SetBackgroundMode(wxTRANSPARENT); - dc.SetTextForeground(wxColour(0, 0, 0)); - - long w, h; - dc.GetTextExtent(str, & w, & h); - - dc.DrawText(str, m_marginX + (- x * 10), m_marginY + (- y * 10) - h - 5); - } - } -} - -// Popup menu callback -void ObjectMenuProc(wxMenu& menu, wxCommandEvent& event) -{ - wxWindow *data = (wxWindow *)menu.GetClientData(); - if (!data) - return; - - switch (event.GetInt()) - { - case OBJECT_MENU_EDIT: - { - wxResourceManager::GetCurrentResourceManager()->EditWindow(data); - break; - } - case OBJECT_MENU_DELETE: - { - wxResourceManager::GetCurrentResourceManager()->SaveInfoAndDeleteHandler(data); - wxResourceManager::GetCurrentResourceManager()->DeleteResource(data); - wxResourceManager::GetCurrentResourceManager()->DeleteWindow(data); - break; - } - default: - break; - } -} - -/* - * Main toolbar - * - */ - -#if defined(__WXGTK__) || defined(__WXMOTIF__) // I don't dare to delete it... - -BEGIN_EVENT_TABLE(EditorToolBar, wxToolBar) -END_EVENT_TABLE() - -#else - -BEGIN_EVENT_TABLE(EditorToolBar, wxToolBar) - EVT_PAINT(EditorToolBar::OnPaint) -END_EVENT_TABLE() - -#endif - -EditorToolBar::EditorToolBar(wxFrame *frame, const wxPoint& pos, const wxSize& size, - long style): - wxToolBar(frame, -1, pos, size, style) -{ -} - -bool EditorToolBar::OnLeftClick(int toolIndex, bool WXUNUSED(toggled)) -{ - wxResourceManager *manager = wxResourceManager::GetCurrentResourceManager(); - - switch (toolIndex) - { - case TOOLBAR_LOAD_FILE: - { - manager->New(TRUE); - break; - } - case TOOLBAR_NEW: - { - manager->CreateNewPanel(); - break; - } - case TOOLBAR_SAVE_FILE: - { - manager->Save(); - break; - } - case TOOLBAR_HELP: - { -#ifdef __WXMSW__ - wxBeginBusyCursor(); - manager->GetHelpController()->LoadFile(); - manager->GetHelpController()->DisplayContents(); - wxEndBusyCursor(); -#endif - break; - } - case TOOLBAR_FORMAT_HORIZ: - { - manager->AlignItems(TOOLBAR_FORMAT_HORIZ); - break; - } - case TOOLBAR_FORMAT_HORIZ_LEFT_ALIGN: - { - manager->AlignItems(TOOLBAR_FORMAT_HORIZ_LEFT_ALIGN); - break; - } - case TOOLBAR_FORMAT_HORIZ_RIGHT_ALIGN: - { - manager->AlignItems(TOOLBAR_FORMAT_HORIZ_RIGHT_ALIGN); - break; - } - case TOOLBAR_FORMAT_VERT: - { - manager->AlignItems(TOOLBAR_FORMAT_VERT); - break; - } - case TOOLBAR_FORMAT_VERT_TOP_ALIGN: - { - manager->AlignItems(TOOLBAR_FORMAT_VERT_TOP_ALIGN); - break; - } - case TOOLBAR_FORMAT_VERT_BOT_ALIGN: - { - manager->AlignItems(TOOLBAR_FORMAT_VERT_BOT_ALIGN); - break; - } - case TOOLBAR_COPY_SIZE: - { - manager->CopySize(); - break; - } - case TOOLBAR_TO_BACK: - { - manager->ToBackOrFront(TRUE); - break; - } - case TOOLBAR_TO_FRONT: - { - manager->ToBackOrFront(FALSE); - break; - } - default: - break; - } - return TRUE; -} - -void EditorToolBar::OnMouseEnter(int toolIndex) -{ - wxFrame *frame = (wxFrame *)GetParent(); - - if (!frame) return; - - if (toolIndex > -1) - { - switch (toolIndex) - { - case TOOLBAR_LOAD_FILE: - frame->SetStatusText("Load project file"); - break; - case TOOLBAR_SAVE_FILE: - frame->SetStatusText("Save project file"); - break; - case TOOLBAR_NEW: - frame->SetStatusText("Create a new resource"); - break; - case TOOLBAR_FORMAT_HORIZ: - frame->SetStatusText("Align items horizontally"); - break; - case TOOLBAR_FORMAT_VERT: - frame->SetStatusText("Align items vertically"); - break; - case TOOLBAR_FORMAT_HORIZ_LEFT_ALIGN: - frame->SetStatusText("Left-align items"); - break; - case TOOLBAR_FORMAT_HORIZ_RIGHT_ALIGN: - frame->SetStatusText("Right-align items"); - break; - case TOOLBAR_FORMAT_VERT_TOP_ALIGN: - frame->SetStatusText("Top-align items"); - break; - case TOOLBAR_FORMAT_VERT_BOT_ALIGN: - frame->SetStatusText("Bottom-align items"); - break; - case TOOLBAR_COPY_SIZE: - frame->SetStatusText("Copy size from first selection"); - break; - case TOOLBAR_TO_FRONT: - frame->SetStatusText("Put image to front"); - break; - case TOOLBAR_TO_BACK: - frame->SetStatusText("Put image to back"); - break; - case TOOLBAR_HELP: - frame->SetStatusText("Display help contents"); - break; - default: - break; - } - } - else frame->SetStatusText(""); -} - diff --git a/utils/dialoged/src/reseditr.h b/utils/dialoged/src/reseditr.h deleted file mode 100644 index 8a8c6c2b3e..0000000000 --- a/utils/dialoged/src/reseditr.h +++ /dev/null @@ -1,455 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: reseditr.h -// Purpose: Resource editor class -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifndef _RESEDITR_H_ -#define _RESEDITR_H_ - -#define wxDIALOG_EDITOR_VERSION 1.6 - -#ifdef __GNUG__ -#pragma interface "reseditr.h" -#endif - -#include "wx/wx.h" -#include "wx/string.h" -#include "wx/layout.h" -#include "wx/resource.h" -#include "wx/toolbar.h" -#include "wx/imaglist.h" -#include "wx/treectrl.h" -#include "wx/proplist.h" -#include "symbtabl.h" -#include "winstyle.h" - -#define RESED_DELETE 1 -#define RESED_RECREATE 3 -#define RESED_CLEAR 4 -#define RESED_NEW_DIALOG 5 -#define RESED_NEW_PANEL 6 -#define RESED_TEST 10 - -#define RESED_CONTENTS 20 - -#define IDC_TREECTRL 100 -#define IDC_LISTCTRL 101 - -// For control list ('palette') -#define RESED_POINTER 0 -#define RESED_BUTTON 1 -#define RESED_BMPBUTTON 2 -#define RESED_STATICTEXT 3 -#define RESED_STATICBMP 4 -#define RESED_STATICBOX 5 -#define RESED_TEXTCTRL_SINGLE 6 -#define RESED_TEXTCTRL_MULTIPLE 7 -#define RESED_LISTBOX 8 -#define RESED_CHOICE 9 -#define RESED_COMBOBOX 10 -#define RESED_CHECKBOX 11 -#define RESED_SLIDER 12 -#define RESED_GAUGE 13 -#define RESED_RADIOBOX 14 -#define RESED_RADIOBUTTON 15 -#define RESED_SCROLLBAR 16 -#define RESED_TREECTRL 17 -#define RESED_LISTCTRL 18 -#define RESED_SPINBUTTON 19 - -/* - * Controls loading, saving, user interface of resource editor(s). - */ - -class wxResourceEditorFrame; -class EditorToolBar; -class wxWindowPropertyInfo; -class wxResourceEditorProjectTree; -class wxResourceEditorControlList; - -#ifdef __WXMSW__ -#define wxHelpController wxWinHelpController -#else -#define wxHelpController wxHTMLHelpController; -#endif - -class wxHelpController; - -/* - * The resourceTable contains a list of wxItemResources (which each may - * have further children, defining e.g. a dialog box with controls). - * - * We need to associate actual windows with each wxItemResource, - * instead of the current 'one current window' scheme. - * - * - We create a new dialog, create a wxItemResource, - * associate the dialog with wxItemResource via a hash table. - * Must be a hash table in case dialog is deleted without - * telling the resource manager. - * - When we save the resource after editing/closing the dialog, - * we check the wxItemResource/wxDialog and children for - * consistency (throw away items no longer in the wxDialog, - * create any new wxItemResources). - * - We save the wxItemResources via the wxPropertyInfo classes, - * so devolve the code to the appropriate class. - * This involves creating a new temporary wxPropertyInfo for - * the purpose. - * - * We currently assume we only create one instance of a window for - * each wxItemResource. We will need to relax this when we're editing - * in situ. - * - * - */ - -class wxResourceTableWithSaving: public wxResourceTable -{ - public: - wxResourceTableWithSaving():wxResourceTable() - { - // Add all known window styles - m_styleTable.Init(); - } - virtual bool Save(const wxString& filename); - virtual bool SaveResource(ostream& stream, wxItemResource* item, wxItemResource* parentItem); - - void GeneratePanelStyleString(long windowStyle, char *buf); - void GenerateDialogStyleString(long windowStyle, char *buf); - -/* - void GenerateRadioBoxStyleString(long windowStyle, char *buf); - void GenerateMessageStyleString(long windowStyle, char *buf); - void GenerateTextStyleString(long windowStyle, char *buf); - void GenerateButtonStyleString(long windowStyle, char *buf); - void GenerateCheckBoxStyleString(long windowStyle, char *buf); - void GenerateRadioButtonStyleString(long windowStyle, char *buf); - void GenerateListBoxStyleString(long windowStyle, char *buf); - void GenerateSliderStyleString(long windowStyle, char *buf); - void GenerateGroupBoxStyleString(long windowStyle, char *buf); - void GenerateGaugeStyleString(long windowStyle, char *buf); - void GenerateChoiceStyleString(long windowStyle, char *buf); - void GenerateComboBoxStyleString(long windowStyle, char *buf); - void GenerateScrollBarStyleString(long windowStyle, char *buf); -*/ - - void GenerateControlStyleString(const wxString& windowClass, long windowStyle, char *buf); - -/* - bool GenerateStyle(char *buf, long windowStyle, long flag, char *strStyle); -*/ - - void OutputFont(ostream& stream, const wxFont& font); - wxControl *CreateItem(wxPanel *panel, const wxItemResource *childResource, const wxItemResource* parentResource); - -protected: - wxWindowStyleTable m_styleTable; -}; - -class wxResourceEditorScrolledWindow; - -class wxResourceManager: public wxObject -{ - friend class wxResourceEditorFrame; - -public: - wxResourceManager(); - ~wxResourceManager(); - -// Operations - - // Initializes the resource manager - bool Initialize(); - - // Load/save window size etc. - bool LoadOptions(); - bool SaveOptions(); - - // Show or hide the resource editor frame, which displays a list - // of resources with ability to edit them. - virtual bool ShowResourceEditor(bool show, wxWindow *parent = NULL, const char *title = "wxWindows Dialog Editor"); - - virtual bool Save(); - virtual bool SaveAs(); - virtual bool Save(const wxString& filename); - virtual bool Load(const wxString& filename); - virtual bool Clear(bool deleteWindows = TRUE, bool force = TRUE); - virtual void SetFrameTitle(const wxString& filename); - virtual void ClearCurrentDialog(); - virtual bool New(bool loadFromFile = TRUE, const wxString& filename = ""); - virtual bool SaveIfModified(); - virtual void AlignItems(int flag); - virtual void CopySize(); - virtual void ToBackOrFront(bool toBack); - virtual wxWindow *FindParentOfSelection(); - - virtual wxFrame *OnCreateEditorFrame(const char *title); - virtual wxMenuBar *OnCreateEditorMenuBar(wxFrame *parent); - virtual wxResourceEditorScrolledWindow *OnCreateEditorPanel(wxFrame *parent); - virtual wxToolBar *OnCreateToolBar(wxFrame *parent); - - // Create a window information object for the give window - wxWindowPropertyInfo* CreatePropertyInfoForWindow(wxWindow *win); - // Edit the given window - void EditWindow(wxWindow *win); - - virtual void UpdateResourceList(); - virtual void AddItemsRecursively(long parent, wxItemResource *resource); - virtual bool EditSelectedResource(); - virtual bool Edit(wxItemResource *res); - virtual bool CreateNewPanel(); - virtual bool CreatePanelItem(wxItemResource *panelResource, wxPanel *panel, char *itemType, int x = 10, int y = 10, bool isBitmap = FALSE); - virtual bool DeleteSelection(); - virtual bool TestCurrentDialog(wxWindow* parent); - - // Saves the window info into the resource, and deletes the - // handler. Doesn't actually disassociate the window from - // the resources. Replaces OnClose. - virtual bool SaveInfoAndDeleteHandler(wxWindow* win); - - // Destroys the window. If this is the 'current' panel, NULLs the - // variable. - virtual bool DeleteWindow(wxWindow* win); - virtual bool DeleteResource(wxItemResource *res); - virtual bool DeleteResource(wxWindow *win); - - // Add bitmap resource if there isn't already one with this filename. - virtual wxString AddBitmapResource(const wxString& filename); - - // Delete the bitmap resource if it isn't being used by another resource. - virtual void PossiblyDeleteBitmapResource(const wxString& resourceName); - - // Helper function for above - virtual bool IsBitmapResourceUsed(const wxString& resourceName); - - wxItemResource *FindBitmapResourceByFilename(const wxString& filename); - - wxString FindBitmapFilenameForResource(wxItemResource *resource); - - // Is this window identifier in use? - bool IsSymbolUsed(wxItemResource* thisResource, wxWindowID id) ; - - // Is this window identifier compatible with the given name? (i.e. - // does it already exist under a different name) - bool IsIdentifierOK(const wxString& name, wxWindowID id); - - // Change all integer ids that match oldId, to newId. - // This is necessary if an id is changed for one resource - all resources - // must be changed. - void ChangeIds(int oldId, int newId); - - // If any resource ids were missing (or their symbol was missing), - // repair them i.e. give them new ids. Returns TRUE if any resource - // needed repairing. - bool RepairResourceIds(); - - // Deletes 'win' and creates a new window from the resource that - // was associated with it. E.g. if you can't change properties on the - // fly, you'll need to delete the window and create it again. - virtual wxWindow *RecreateWindowFromResource(wxWindow *win, wxWindowPropertyInfo *info = NULL); - - virtual bool RecreateSelection(); - - // Need to search through resource table removing this from - // any resource which has this as a parent. - virtual bool RemoveResourceFromParent(wxItemResource *res); - - virtual bool EditDialog(wxDialog *dialog, wxWindow *parent); - - void AddSelection(wxWindow *win); - void RemoveSelection(wxWindow *win); - - virtual void MakeUniqueName(char *prefix, char *buf); - - // (Dis)associate resource<->physical window - // Doesn't delete any windows. - virtual void AssociateResource(wxItemResource *resource, wxWindow *win); - virtual bool DisassociateResource(wxItemResource *resource); - virtual bool DisassociateResource(wxWindow *win); - virtual bool DisassociateWindows(); - virtual wxItemResource *FindResourceForWindow(wxWindow *win); - virtual wxWindow *FindWindowForResource(wxItemResource *resource); - - virtual bool InstantiateAllResourcesFromWindows(); - virtual bool InstantiateResourceFromWindow(wxItemResource *resource, wxWindow *window, bool recurse = FALSE); - -// Accessors - inline void SetEditorFrame(wxFrame *fr) { m_editorFrame = fr; } - inline void SetEditorToolBar(EditorToolBar *tb) { m_editorToolBar = tb; } - inline wxFrame *GetEditorFrame() const { return m_editorFrame; } - inline wxResourceEditorProjectTree *GetEditorResourceTree() const { return m_editorResourceTree; } - inline wxResourceEditorControlList *GetEditorControlList() const { return m_editorControlList; } - inline wxList& GetSelections() { return m_selections; } - inline wxMenu *GetPopupMenu() const { return m_popupMenu; } -#ifdef __WXMSW__ - inline wxHelpController *GetHelpController() const { return m_helpController; } -#endif - - inline void Modify(bool mod = TRUE) { m_modified = mod; } - inline bool Modified() const { return m_modified; } - - inline wxResourceTable& GetResourceTable() { return m_resourceTable; } - inline wxHashTable& GetResourceAssociations() { return m_resourceAssociations; } - - inline wxString GetCurrentFilename() const { return m_currentFilename; } - static wxResourceManager* GetCurrentResourceManager() { return sm_currentResourceManager; } - - inline void SetSymbolFilename(const wxString& s) { m_symbolFilename = s; } - inline wxString GetSymbolFilename() const { return m_symbolFilename; } - - inline wxRect& GetPropertyWindowSize() { return m_propertyWindowSize; } - inline wxRect& GetResourceEditorWindowSize() { return m_resourceEditorWindowSize; } - - wxResourceSymbolTable& GetSymbolTable() { return m_symbolTable; } - - // Generate a window id and a first stab at a name - int GenerateWindowId(const wxString& prefix, wxString& idName) ; - -// Member variables - protected: -#ifdef __WXMSW__ - wxHelpController* m_helpController; -#endif - wxResourceTableWithSaving m_resourceTable; - wxFrame* m_editorFrame; - wxResourceEditorScrolledWindow* m_editorPanel; - wxMenu* m_popupMenu; - wxResourceEditorProjectTree* m_editorResourceTree; - wxResourceEditorControlList* m_editorControlList; - EditorToolBar* m_editorToolBar; - int m_nameCounter; - int m_symbolIdCounter; // For generating window ids - bool m_modified; - wxHashTable m_resourceAssociations; - wxList m_selections; - wxString m_currentFilename; - wxBitmap* m_bitmapImage; // Default for static bitmaps/buttons - - wxImageList m_imageList; - long m_rootDialogItem; // Root of dialog hierarchy in tree (unused) - - // Options to be saved/restored - wxString m_optionsResourceFilename; // e.g. dialoged.ini, .dialogrc - wxRect m_propertyWindowSize; - wxRect m_resourceEditorWindowSize; - static wxResourceManager* sm_currentResourceManager; - - // Symbol table with identifiers for controls - wxResourceSymbolTable m_symbolTable; - // Filename for include file, e.g. resource.h - wxString m_symbolFilename; -}; - - -class wxResourceEditorFrame: public wxFrame -{ - public: - DECLARE_CLASS(wxResourceEditorFrame) - - wxResourceManager *manager; - wxResourceEditorFrame(wxResourceManager *resMan, wxFrame *parent, const wxString& title, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize(600, 400), - long style = wxDEFAULT_FRAME_STYLE, const wxString& name = "frame"); - ~wxResourceEditorFrame(); - - bool OnClose(); - - void OnNew(wxCommandEvent& event); - void OnOpen(wxCommandEvent& event); - void OnNewDialog(wxCommandEvent& event); - void OnClear(wxCommandEvent& event); - void OnSave(wxCommandEvent& event); - void OnSaveAs(wxCommandEvent& event); - void OnExit(wxCommandEvent& event); - void OnAbout(wxCommandEvent& event); - void OnContents(wxCommandEvent& event); - void OnDeleteSelection(wxCommandEvent& event); - void OnRecreateSelection(wxCommandEvent& event); - void OnTest(wxCommandEvent& event); - - DECLARE_EVENT_TABLE() -}; - -class wxResourceEditorScrolledWindow: public wxScrolledWindow -{ - public: - wxResourceEditorScrolledWindow(wxWindow *parent, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = 0); - ~wxResourceEditorScrolledWindow(); - - void OnScroll(wxScrollEvent& event); - void OnPaint(wxPaintEvent& event); - - void DrawTitle(wxDC& dc); - -// Accessors - inline int GetMarginX() { return m_marginX; } - inline int GetMarginY() { return m_marginY; } - - public: - wxWindow* m_childWindow; - private: - int m_marginX, m_marginY; - - DECLARE_EVENT_TABLE() -}; - -#define OBJECT_MENU_EDIT 1 -#define OBJECT_MENU_DELETE 2 - -/* - * Main toolbar - * - */ - -class EditorToolBar: public wxToolBar -{ -public: - EditorToolBar(wxFrame *frame, const wxPoint& pos = wxPoint(0, 0), const wxSize& size = wxSize(0, 0), - long style = wxTB_HORIZONTAL); - bool OnLeftClick(int toolIndex, bool toggled); - void OnMouseEnter(int toolIndex); - -DECLARE_EVENT_TABLE() -}; - -// Toolbar ids -#define TOOLBAR_LOAD_FILE 1 -#define TOOLBAR_SAVE_FILE 2 -#define TOOLBAR_NEW 3 -#define TOOLBAR_TREE 5 -#define TOOLBAR_HELP 6 - -// Formatting tools -#define TOOLBAR_FORMAT_HORIZ 10 -#define TOOLBAR_FORMAT_HORIZ_LEFT_ALIGN 11 -#define TOOLBAR_FORMAT_HORIZ_RIGHT_ALIGN 12 -#define TOOLBAR_FORMAT_VERT 13 -#define TOOLBAR_FORMAT_VERT_TOP_ALIGN 14 -#define TOOLBAR_FORMAT_VERT_BOT_ALIGN 15 - -#define TOOLBAR_TO_FRONT 16 -#define TOOLBAR_TO_BACK 17 -#define TOOLBAR_COPY_SIZE 18 - -/* - * this class is used to store data associated with a tree item - */ -class wxResourceTreeData : public wxTreeItemData -{ -public: - wxResourceTreeData(wxItemResource *resource) { m_resource = resource; } - - wxItemResource *GetResource() const { return m_resource; } - -private: - wxItemResource *m_resource; -}; - -#endif - diff --git a/utils/dialoged/src/reswrite.cpp b/utils/dialoged/src/reswrite.cpp deleted file mode 100644 index 9cdde107dc..0000000000 --- a/utils/dialoged/src/reswrite.cpp +++ /dev/null @@ -1,601 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: reswrite.cpp -// Purpose: Resource writing functionality -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation -#endif - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include -#include -#include -#include - -#if wxUSE_IOSTREAMH -#if defined(__WXMSW__) && !defined(__GNUWIN32__) -#include -#include -#else -#include -#include -#endif -#else -#include -#include -#endif - -#include "wx/scrolbar.h" -#include "wx/string.h" - -#include "reseditr.h" - -char *SafeString(char *s); -char *SafeWord(const wxString& s); - -// Save an association between the child resource and the panel item, to allow -// us not to require unique window names. -wxControl *wxResourceTableWithSaving::CreateItem(wxPanel *panel, const wxItemResource *childResource, const wxItemResource* parentResource) -{ - wxControl *item = wxResourceTable::CreateItem(panel, childResource, parentResource); - if (item) - wxResourceManager::GetCurrentResourceManager()->GetResourceAssociations().Put((long)childResource, item); - return item; -} - -void wxResourceTableWithSaving::OutputFont(ostream& stream, const wxFont& font) -{ - stream << "[" << font.GetPointSize() << ", '"; - stream << font.GetFamilyString() << "', '"; - stream << font.GetStyleString() << "', '"; - stream << font.GetWeightString() << "', "; - stream << (int)font.GetUnderlined(); - if (font.GetFaceName() != "") - stream << ", '" << font.GetFaceName() << "'"; - stream << "]"; -} - -/* - * Resource table with saving (basic one only has loading) - */ - -bool wxResourceTableWithSaving::Save(const wxString& filename) -{ - ofstream stream(((wxString &) filename).GetData()); - if (stream.bad()) - return FALSE; - - BeginFind(); - wxNode *node = NULL; - while ((node = Next())) - { - wxItemResource *item = (wxItemResource *)node->Data(); - wxString resType(item->GetType()); - - if (resType == "wxDialogBox" || resType == "wxDialog" || resType == "wxPanel" || resType == "wxBitmap") - { - if (!SaveResource(stream, item, (wxItemResource*) NULL)) - return FALSE; - } - } - return TRUE; -} - -bool wxResourceTableWithSaving::SaveResource(ostream& stream, wxItemResource* item, wxItemResource* parentItem) -{ - char styleBuf[400]; - wxString itemType(item->GetType()); - - if (itemType == "wxDialogBox" || itemType == "wxDialog" || itemType == "wxPanel") - { - if (itemType == "wxDialogBox" || itemType == "wxDialog") - { - stream << "static char *" << item->GetName() << " = \"dialog(name = '" << item->GetName() << "',\\\n"; - GenerateDialogStyleString(item->GetStyle(), styleBuf); - } - else - { - stream << "static char *" << item->GetName() << " = \"panel(name = '" << item->GetName() << "',\\\n"; - GenerateDialogStyleString(item->GetStyle(), styleBuf); - } - - stream << " style = '" << styleBuf << "',\\\n"; - stream << " title = '" << item->GetTitle() << "',\\\n"; - stream << " id = " << item->GetId() << ",\\\n"; - stream << " x = " << item->GetX() << ", y = " << item->GetY(); - stream << ", width = " << item->GetWidth() << ", height = " << item->GetHeight(); - - if (1) // item->GetStyle() & wxNO_3D) - { - if (item->GetBackgroundColour().Ok()) - { - char buf[7]; - wxDecToHex(item->GetBackgroundColour().Red(), buf); - wxDecToHex(item->GetBackgroundColour().Green(), buf+2); - wxDecToHex(item->GetBackgroundColour().Blue(), buf+4); - buf[6] = 0; - - stream << ",\\\n " << "background_colour = '" << buf << "'"; - } - } - - int dialogUnits = 0; - int useDefaults = 0; - if ((item->GetResourceStyle() & wxRESOURCE_DIALOG_UNITS) != 0) - dialogUnits = 1; - if ((item->GetResourceStyle() & wxRESOURCE_USE_DEFAULTS) != 0) - useDefaults = 1; - - stream << ",\\\n " << "use_dialog_units = " << dialogUnits; - stream << ",\\\n " << "use_system_defaults = " << useDefaults; - - if (item->GetFont().Ok()) - { - stream << ",\\\n font = "; - OutputFont(stream, item->GetFont()); - } - - if (item->GetChildren().Number() > 0) - stream << ",\\\n"; - else - stream << "\\\n"; - wxNode *node = item->GetChildren().First(); - while (node) - { - wxItemResource *child = (wxItemResource *)node->Data(); - - stream << " control = ["; - - SaveResource(stream, child, item); - - stream << "]"; - - if (node->Next()) - stream << ",\\\n"; - node = node->Next(); - } - stream << ").\";\n\n"; - } - else if (itemType == "wxButton" || itemType == "wxBitmapButton") - { - GenerateControlStyleString(itemType, item->GetStyle(), styleBuf); - stream << item->GetId() << ", " << itemType << ", " << SafeWord(item->GetTitle()) << ", '" << styleBuf << "', "; - stream << SafeWord(item->GetName()) << ", " << item->GetX() << ", " << item->GetY() << ", "; - stream << item->GetWidth() << ", " << item->GetHeight(); - if (item->GetValue4()) - stream << ", '" << item->GetValue4() << "'"; - if (item->GetFont().Ok()) - { - stream << ",\\\n "; - OutputFont(stream, item->GetFont()); - } - } - else if (itemType == "wxStaticText" || itemType == "wxStaticBitmap") - { - GenerateControlStyleString(itemType, item->GetStyle(), styleBuf); - stream << item->GetId() << ", " << itemType << ", " << SafeWord(item->GetTitle()) << ", '" << styleBuf << "', "; - stream << SafeWord(item->GetName()) << ", " << item->GetX() << ", " << item->GetY() << ", "; - stream << item->GetWidth() << ", " << item->GetHeight(); - if (item->GetValue4()) - stream << ", '" << item->GetValue4() << "'"; - if (item->GetFont().Ok()) - { - stream << ",\\\n "; - OutputFont(stream, item->GetFont()); - } - } - else if (itemType == "wxCheckBox") - { - GenerateControlStyleString(itemType, item->GetStyle(), styleBuf); - stream << item->GetId() << ", " << "wxCheckBox, " << SafeWord(item->GetTitle()) << ", '" << styleBuf << "', "; - stream << SafeWord(item->GetName()) << ", " << item->GetX() << ", " << item->GetY() << ", "; - stream << item->GetWidth() << ", " << item->GetHeight(); - stream << ", " << item->GetValue1(); - if (item->GetFont().Ok()) - { - stream << ",\\\n "; - OutputFont(stream, item->GetFont()); - } - } - else if (itemType == "wxRadioButton") - { - GenerateControlStyleString(itemType, item->GetStyle(), styleBuf); - stream << item->GetId() << ", " << "wxRadioButton, " << SafeWord(item->GetTitle()) << ", '" << styleBuf << "', "; - stream << SafeWord(item->GetName()) << ", " << item->GetX() << ", " << item->GetY() << ", "; - stream << item->GetWidth() << ", " << item->GetHeight(); - stream << ", " << item->GetValue1(); - if (item->GetFont().Ok()) - { - stream << ",\\\n "; - OutputFont(stream, item->GetFont()); - } - } - else if (itemType == "wxStaticBox") - { - GenerateControlStyleString(itemType, item->GetStyle(), styleBuf); - stream << item->GetId() << ", " << "wxStaticBox, " << SafeWord(item->GetTitle()) << ", '" << styleBuf << "', "; - stream << SafeWord(item->GetName()) << ", " << item->GetX() << ", " << item->GetY() << ", "; - stream << item->GetWidth() << ", " << item->GetHeight(); - if (item->GetFont().Ok()) - { - stream << ",\\\n "; - OutputFont(stream, item->GetFont()); - } - } - else if (itemType == "wxText" || itemType == "wxMultiText" || itemType == "wxTextCtrl") - { - GenerateControlStyleString(itemType, item->GetStyle(), styleBuf); - stream << item->GetId() << ", " << "wxTextCtrl, "; - stream << SafeWord(item->GetTitle()) << ", '" << styleBuf << "', "; - stream << SafeWord(item->GetName()) << ", " << item->GetX() << ", " << item->GetY() << ", "; - stream << item->GetWidth() << ", " << item->GetHeight(); - stream << ", " << SafeWord(item->GetValue4()); - if (item->GetFont().Ok()) - { - stream << ",\\\n "; - OutputFont(stream, item->GetFont()); - } - } - else if (itemType == "wxGauge") - { - GenerateControlStyleString(itemType, item->GetStyle(), styleBuf); - stream << item->GetId() << ", " << "wxGauge, " << SafeWord(item->GetTitle()) << ", '" << styleBuf << "', "; - stream << SafeWord(item->GetName()) << ", " << item->GetX() << ", " << item->GetY() << ", "; - stream << item->GetWidth() << ", " << item->GetHeight(); - stream << ", " << item->GetValue1() << ", " << item->GetValue2(); - if (item->GetFont().Ok()) - { - stream << ",\\\n "; - OutputFont(stream, item->GetFont()); - } - } - else if (itemType == "wxSlider") - { - GenerateControlStyleString(itemType, item->GetStyle(), styleBuf); - stream << item->GetId() << ", " << "wxSlider, " << SafeWord(item->GetTitle()) << ", '" << styleBuf << "', "; - stream << SafeWord(item->GetName()) << ", " << item->GetX() << ", " << item->GetY() << ", "; - stream << item->GetWidth() << ", " << item->GetHeight(); - stream << ", " << item->GetValue1() << ", " << item->GetValue2() << ", " << item->GetValue3(); - if (item->GetFont().Ok()) - { - stream << ",\\\n "; - OutputFont(stream, item->GetFont()); - } - } - else if (itemType == "wxScrollBar") - { - GenerateControlStyleString(itemType, item->GetStyle(), styleBuf); - stream << item->GetId() << ", " << "wxScrollBar, " << SafeWord(item->GetTitle()) << ", '" << styleBuf << "', "; - stream << SafeWord(item->GetName()) << ", " << item->GetX() << ", " << item->GetY() << ", "; - stream << item->GetWidth() << ", " << item->GetHeight(); - stream << ", " << item->GetValue1() << ", " << item->GetValue2() << ", " << item->GetValue3() << ", "; - stream << item->GetValue5(); - } - else if (itemType == "wxListBox") - { - GenerateControlStyleString(itemType, item->GetStyle(), styleBuf); - stream << item->GetId() << ", " << "wxListBox, " << SafeWord(item->GetTitle()) << ", '" << styleBuf << "', "; - stream << SafeWord(item->GetName()) << ", " << item->GetX() << ", " << item->GetY() << ", "; - stream << item->GetWidth() << ", " << item->GetHeight(); - - // Default list of values - - stream << ", ["; - if (item->GetStringValues().Number() > 0) - { - wxNode *node = item->GetStringValues().First(); - while (node) - { - char *s = (char *)node->Data(); - stream << SafeWord(s); - if (node->Next()) - stream << ", "; - node = node->Next(); - } - } - stream << "]"; -/* Styles are now in the window style, not in a separate arg - stream << ", "; - switch (item->GetValue1()) - { - case wxLB_MULTIPLE: - { - stream << "'wxLB_MULTIPLE'"; - break; - } - case wxLB_EXTENDED: - { - stream << "'wxLB_EXTENDED'"; - break; - } - case wxLB_SINGLE: - default: - { - stream << "'wxLB_SINGLE'"; - break; - } - } - */ - - if (item->GetFont().Ok()) - { - stream << ",\\\n "; - OutputFont(stream, item->GetFont()); - } - } - else if (itemType == "wxChoice" || itemType == "wxComboBox") - { - GenerateControlStyleString(itemType, item->GetStyle(), styleBuf); - - stream << item->GetId() << ", " << itemType << ", " << SafeWord(item->GetTitle()) << ", '" << styleBuf << "', "; - stream << SafeWord(item->GetName()) << ", " << item->GetX() << ", " << item->GetY() << ", "; - stream << item->GetWidth() << ", " << item->GetHeight(); - - if (itemType == "wxComboBox") - stream << ", " << SafeWord(item->GetValue4()); - - // Default list of values - - stream << ", ["; - if (item->GetStringValues().Number() > 0) - { - wxNode *node = item->GetStringValues().First(); - while (node) - { - char *s = (char *)node->Data(); - stream << SafeWord(s); - if (node->Next()) - stream << ", "; - node = node->Next(); - } - } - stream << "]"; - if (item->GetFont().Ok()) - { - stream << ",\\\n "; - OutputFont(stream, item->GetFont()); - } - } - else if (itemType == "wxRadioBox") - { - // Must write out the orientation and number of rows/cols!! - GenerateControlStyleString(itemType, item->GetStyle(), styleBuf); - stream << item->GetId() << ", " << "wxRadioBox, " << SafeWord(item->GetTitle()) << ", '" << styleBuf << "', "; - stream << SafeWord(item->GetName()) << ", " << item->GetX() << ", " << item->GetY() << ", "; - stream << item->GetWidth() << ", " << item->GetHeight(); - - // Default list of values - - stream << ", ["; - if (item->GetStringValues().Number() > 0) - { - wxNode *node = item->GetStringValues().First(); - while (node) - { - char *s = (char *)node->Data(); - stream << SafeWord(s); - if (node->Next()) - stream << ", "; - node = node->Next(); - } - } - stream << "], " << item->GetValue1(); - if (item->GetFont().Ok()) - { - stream << ",\\\n "; - OutputFont(stream, item->GetFont()); - } - } - else if (itemType == "wxBitmap") - { - stream << "static char *" << item->GetName() << " = \"bitmap(name = '" << item->GetName() << "',\\\n"; - - wxNode *node = item->GetChildren().First(); - while (node) - { - wxItemResource *child = (wxItemResource *)node->Data(); - stream << " bitmap = ["; - - char buf[400]; - strcpy(buf, child->GetName()); -#ifdef __WXMSW__ - wxDos2UnixFilename(buf); -#endif - - stream << "'" << buf << "', "; - - int bitmapType = (int)child->GetValue1(); - switch (bitmapType) - { - case wxBITMAP_TYPE_XBM_DATA: - { - stream << "wxBITMAP_TYPE_XBM_DATA"; - break; - } - case wxBITMAP_TYPE_XPM_DATA: - { - stream << "wxBITMAP_TYPE_XPM_DATA"; - break; - } - case wxBITMAP_TYPE_XBM: - { - stream << "wxBITMAP_TYPE_XBM"; - break; - } - case wxBITMAP_TYPE_XPM: - { - stream << "wxBITMAP_TYPE_XPM"; - break; - } - case wxBITMAP_TYPE_BMP: - { - stream << "wxBITMAP_TYPE_BMP"; - break; - } - case wxBITMAP_TYPE_BMP_RESOURCE: - { - stream << "wxBITMAP_TYPE_BMP_RESOURCE"; - break; - } - case wxBITMAP_TYPE_GIF: - { - stream << "wxBITMAP_TYPE_GIF"; - break; - } - case wxBITMAP_TYPE_TIF: - { - stream << "wxBITMAP_TYPE_TIF"; - break; - } - case wxBITMAP_TYPE_ICO: - { - stream << "wxBITMAP_TYPE_ICO"; - break; - } - case wxBITMAP_TYPE_ICO_RESOURCE: - { - stream << "wxBITMAP_TYPE_ICO_RESOURCE"; - break; - } - case wxBITMAP_TYPE_CUR: - { - stream << "wxBITMAP_TYPE_CUR"; - break; - } - case wxBITMAP_TYPE_CUR_RESOURCE: - { - stream << "wxBITMAP_TYPE_CUR_RESOURCE"; - break; - } - default: - case wxBITMAP_TYPE_ANY: - { - stream << "wxBITMAP_TYPE_ANY"; - break; - } - } - stream << ", "; - int platform = child->GetValue2(); - switch (platform) - { - case RESOURCE_PLATFORM_WINDOWS: - { - stream << "'WINDOWS'"; - break; - } - case RESOURCE_PLATFORM_X: - { - stream << "'X'"; - break; - } - case RESOURCE_PLATFORM_MAC: - { - stream << "'MAC'"; - break; - } - case RESOURCE_PLATFORM_ANY: - { - stream << "'ANY'"; - break; - } - } - int noColours = (int)child->GetValue3(); - if (noColours > 0) - stream << ", " << noColours; - - stream << "]"; - - if (node->Next()) - stream << ",\\\n"; - - node = node->Next(); - } - stream << ").\";\n\n"; - } - else - { - wxString str("Unimplemented resource type: "); - str += itemType; - wxMessageBox(str); - } - return TRUE; -} - -void wxResourceTableWithSaving::GenerateDialogStyleString(long windowStyle, char *buf) -{ - buf[0] = 0; - m_styleTable.GenerateStyleStrings("wxWindow", windowStyle, buf); - m_styleTable.GenerateStyleStrings("wxPanel", windowStyle, buf); - m_styleTable.GenerateStyleStrings("wxDialog", windowStyle, buf); - - if (strlen(buf) == 0) - strcat(buf, "0"); -} - -void wxResourceTableWithSaving::GeneratePanelStyleString(long windowStyle, char *buf) -{ - buf[0] = 0; - m_styleTable.GenerateStyleStrings("wxWindow", windowStyle, buf); - m_styleTable.GenerateStyleStrings("wxPanel", windowStyle, buf); - - if (strlen(buf) == 0) - strcat(buf, "0"); -} - - -void wxResourceTableWithSaving::GenerateControlStyleString(const wxString& windowClass, long windowStyle, char *buf) -{ - buf[0] = 0; - m_styleTable.GenerateStyleStrings("wxWindow", windowStyle, buf); - m_styleTable.GenerateStyleStrings("wxControl", windowStyle, buf); - m_styleTable.GenerateStyleStrings(windowClass, windowStyle, buf); - - if (strlen(buf) == 0) - strcat(buf, "0"); -} - -// Returns quoted string or "NULL" -char *SafeString(const wxString& s) -{ - if (s == "") - return "NULL"; - else - { - strcpy(wxBuffer, "\""); - strcat(wxBuffer, s); - strcat(wxBuffer, "\""); - return wxBuffer; - } -} - -// Returns quoted string or '' -char *SafeWord(const wxString& s) -{ - if (s == "") - return "''"; - else - { - strcpy(wxBuffer, "'"); - strcat(wxBuffer, (const char*) s); - strcat(wxBuffer, "'"); - return wxBuffer; - } -} - diff --git a/utils/dialoged/src/symbtabl.cpp b/utils/dialoged/src/symbtabl.cpp deleted file mode 100644 index 110764e782..0000000000 --- a/utils/dialoged/src/symbtabl.cpp +++ /dev/null @@ -1,333 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: symbtabl.cpp -// Purpose: wxResourceSymbolTable -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "symbtabl.h" -#endif - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include - -#include -#include - -#include "symbtabl.h" - -wxResourceSymbolTable::wxResourceSymbolTable(): - m_hashTable(wxKEY_STRING) -{ -} - -wxResourceSymbolTable::~wxResourceSymbolTable() -{ - Clear(); -} - -// Operations - -bool wxResourceSymbolTable::ReadIncludeFile(const wxString& filename) -{ - wxFile file; - if (!wxFileExists(filename)) - return FALSE; - - if (!file.Open(filename, wxFile::read)) - return FALSE; - - off_t len = file.Length(); - if (len == -1) - return FALSE; - - Clear(); - AddStandardSymbols(); - - wxString str; - char* p = str.GetWriteBuf(len + 1); - - if (file.Read(p, len) == wxFile::fd_invalid) - { - str.UngetWriteBuf(); - return FALSE; - } - str.UngetWriteBuf(); - - // Look for #define occurrences - int pos = str.Find("#define"); - while (pos != -1) - { - size_t len = str.Length(); - - size_t i = pos + 8; - - // Eat whitespace until symbol - while ((str[i] == ' ' || str[i] == '\t') && (i < len)) - i ++; - - size_t start = i; - - // Eat symbol - while (str[i] != ' ' && str[i] != '\t' && (i < len)) - i ++; - size_t end = i-1; - - wxString symbol(str.Mid(start, (end - start + 1))); - - // Eat whitespace until number - while ((str[i] == ' ' || str[i] == '\t') && (i < len)) - i ++; - - size_t startNum = i; - - // Eat number - while (str[i] != ' ' && str[i] != '\t' && str[i] != '\n' && (i < len)) - i ++; - - size_t endNum = i-1; - - wxString numStr(str.Mid(startNum, (endNum - startNum + 1))); - - int id = atol(numStr); - - AddSymbol(symbol, id); - - str = str.Right(len - i); - pos = str.Find("#define"); - } - - return TRUE; -} - -bool wxResourceSymbolTable::WriteIncludeFile(const wxString& filename) -{ - wxFile file; - if (!file.Open(filename, wxFile::write)) - return FALSE; - - wxString fileOnly(wxFileNameFromPath(filename)); - wxString line; - line.Printf("/*\n * %s\n * Window identifiers file written by Dialog Editor\n */\n\n", - (const char*) fileOnly); - - file.Write(line, line.Length()); - - m_hashTable.BeginFind(); - - wxNode* node = m_hashTable.Next(); - while (node) - { - const char* str = node->GetKeyString(); - int id = (int) node->Data() ; - - if (!IsStandardSymbol(str)) - { - wxString line; - line.Printf("#define %s %ld\n", str, id); - - file.Write(line, line.Length()); - } - - node = m_hashTable.Next(); - } - return TRUE; -} - -void wxResourceSymbolTable::Clear() -{ - m_hashTable.Clear(); -} - -bool wxResourceSymbolTable::AddSymbol(const wxString& symbol, int id) -{ - m_hashTable.Put(symbol, (wxObject*) id); - return TRUE; -} - -bool wxResourceSymbolTable::RemoveSymbol(const wxString& symbol) -{ - m_hashTable.Delete(symbol); - return TRUE; -} - -bool wxResourceSymbolTable::RemoveSymbol(int id) -{ - wxString symbol(GetSymbolForId(id)); - m_hashTable.Delete(symbol); - return TRUE; -} - -// Accessors -wxString wxResourceSymbolTable::GetSymbolForId(int id) -{ - m_hashTable.BeginFind(); - - wxNode* node = m_hashTable.Next(); - while (node) - { - const char* str = node->GetKeyString(); - if (str && ( ((int) node->Data()) == id) ) - return wxString(str); - - node = m_hashTable.Next(); - } - return wxString(""); -} - -int wxResourceSymbolTable::GetIdForSymbol(const wxString& symbol) -{ - return (int) m_hashTable.Get(symbol); -} - -bool wxResourceSymbolTable::SymbolExists(const wxString& symbol) const -{ - return (m_hashTable.Get(symbol) != NULL); -} - -bool wxResourceSymbolTable::IdExists(int id) -{ - m_hashTable.BeginFind(); - - wxNode* node = m_hashTable.Next(); - while (node) - { - if ( (((int) node->Data()) == id) ) - return TRUE; - - node = m_hashTable.Next(); - } - return FALSE; -} - -int wxResourceSymbolTable::FindHighestId() -{ - int highest = 0; - - m_hashTable.BeginFind(); - - wxNode* node = m_hashTable.Next(); - while (node) - { - int id = ((int) node->Data()); - if (id > highest) - highest = id; - - node = m_hashTable.Next(); - } - - // Make sure we don't clash with future standard wxWindows ids - if (highest <= wxID_HIGHEST) - highest = wxID_HIGHEST + 1; - return highest; -} - -/* - * A table of the standard identifiers - */ - -struct wxStandardSymbolStruct -{ - char* m_name; - int m_id; -}; - -static wxStandardSymbolStruct sg_StandardSymbols[] = -{ - { "wxID_OK", wxID_OK }, - { "wxID_CANCEL", wxID_CANCEL }, - { "wxID_APPLY", wxID_APPLY }, - { "wxID_HELP", wxID_HELP }, - { "wxID_STATIC", wxID_STATIC }, - { "wxID_YES", wxID_YES }, - { "wxID_NO", wxID_NO }, - - { "wxID_OPEN", wxID_OPEN }, - { "wxID_CLOSE", wxID_CLOSE }, - { "wxID_NEW", wxID_NEW }, - { "wxID_SAVE", wxID_SAVE }, - { "wxID_SAVEAS", wxID_SAVEAS }, - { "wxID_REVERT", wxID_REVERT }, - { "wxID_EXIT", wxID_EXIT }, - { "wxID_UNDO", wxID_UNDO }, - { "wxID_REDO", wxID_REDO }, - { "wxID_PRINT", wxID_PRINT }, - { "wxID_PRINT_SETUP", wxID_PRINT_SETUP }, - { "wxID_PREVIEW", wxID_PREVIEW }, - { "wxID_ABOUT", wxID_ABOUT }, - { "wxID_HELP_CONTENTS", wxID_HELP_CONTENTS }, - { "wxID_HELP_COMMANDS", wxID_HELP_COMMANDS }, - { "wxID_HELP_PROCEDURES", wxID_HELP_PROCEDURES }, - { "wxID_HELP_CONTEXT", wxID_HELP_CONTEXT }, - - { "wxID_CUT", wxID_CUT }, - { "wxID_COPY", wxID_COPY }, - { "wxID_PASTE", wxID_PASTE }, - { "wxID_CLEAR", wxID_CLEAR }, - { "wxID_FIND", wxID_FIND }, - { "wxID_DUPLICATE", wxID_DUPLICATE }, - - { "wxID_FILE1", wxID_FILE1 }, - { "wxID_FILE2", wxID_FILE2 }, - { "wxID_FILE3", wxID_FILE3 }, - { "wxID_FILE4", wxID_FILE4 }, - { "wxID_FILE5", wxID_FILE5 }, - { "wxID_FILE6", wxID_FILE6 }, - { "wxID_FILE7", wxID_FILE7 }, - { "wxID_FILE8", wxID_FILE8 }, - { "wxID_FILE9", wxID_FILE9 } - -}; - -static int sg_StandardSymbolSize = (sizeof(sg_StandardSymbols)/sizeof(wxStandardSymbolStruct)); - -void wxResourceSymbolTable::AddStandardSymbols() -{ - int i; - for (i = 0; i < sg_StandardSymbolSize; i++) - { - AddSymbol(sg_StandardSymbols[i].m_name, sg_StandardSymbols[i].m_id); - } -} - -bool wxResourceSymbolTable::IsStandardSymbol(const wxString& symbol) const -{ - int i; - for (i = 0; i < sg_StandardSymbolSize; i++) - { - if (symbol == sg_StandardSymbols[i].m_name) - return TRUE; - } - return FALSE; -} - -bool wxResourceSymbolTable::FillComboBox(wxComboBox* comboBox) -{ - m_hashTable.BeginFind(); - - wxNode* node = m_hashTable.Next(); - while (node) - { - const char* str = node->GetKeyString(); - - comboBox->Append(str); - node = m_hashTable.Next(); - } - return TRUE; -} - diff --git a/utils/dialoged/src/symbtabl.h b/utils/dialoged/src/symbtabl.h deleted file mode 100644 index 440b14b222..0000000000 --- a/utils/dialoged/src/symbtabl.h +++ /dev/null @@ -1,52 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: symbtabl.h -// Purpose: wxResourceSymbolTable class for storing/reading #defines -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifndef _SYMBTABL_H_ -#define _SYMBTABL_H_ - -#ifdef __GNUG__ -#pragma interface "symbtabl.h" -#endif - -class wxResourceSymbolTable: public wxObject -{ -public: - wxResourceSymbolTable(); - ~wxResourceSymbolTable(); - -// Operations - bool ReadIncludeFile(const wxString& filename); - bool WriteIncludeFile(const wxString& filename); - void Clear(); - bool AddSymbol(const wxString& symbol, int id); - bool RemoveSymbol(const wxString& symbol); - bool RemoveSymbol(int id); - void AddStandardSymbols(); - bool FillComboBox(wxComboBox* comboBox); - -// Accessors - wxString GetSymbolForId(int id); - int GetIdForSymbol(const wxString& symbol); - bool SymbolExists(const wxString& symbol) const; - bool IdExists(int id) ; - bool IsStandardSymbol(const wxString& symbol) const; - int FindHighestId() ; - -// Implementation - -// Member variables -protected: - wxHashTable m_hashTable; -}; - -#endif - // _SYMBTABL_H_ - diff --git a/utils/dialoged/src/winprop.cpp b/utils/dialoged/src/winprop.cpp deleted file mode 100644 index 4f3a64b6f5..0000000000 --- a/utils/dialoged/src/winprop.cpp +++ /dev/null @@ -1,2558 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: winprop.cpp -// Purpose: Window properties -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "winprop.h" -#endif - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include -#include -#include -#include - -#if wxUSE_IOSTREAMH -#if defined(__WXMSW__) && !defined(__GNUWIN32__) -#include -#else -#include -#endif -#else -#include -#endif - -#ifdef __WXMSW__ -#include -#endif - -#include "reseditr.h" -#include "winprop.h" - -// Causes immediate feedback. -void wxResourcePropertyListView::OnPropertyChanged(wxProperty *property) -{ - // Sets the value of the property back into the actual object, - // IF the property value was modified. - if (property->GetValue().GetModified()) - { - m_propertyInfo->SetProperty(property->GetName(), property); - property->GetValue().SetModified(FALSE); - wxResourceManager::GetCurrentResourceManager()->Modify(TRUE); - } -} - -bool wxResourcePropertyListView::OnClose(void) -{ - int w, h, x, y; - GetManagedWindow()->GetSize(& w, & h); - GetManagedWindow()->GetPosition(& x, & y); - - wxResourceManager::GetCurrentResourceManager()->GetPropertyWindowSize().width = w; - wxResourceManager::GetCurrentResourceManager()->GetPropertyWindowSize().height = h; - wxResourceManager::GetCurrentResourceManager()->GetPropertyWindowSize().x = x; - wxResourceManager::GetCurrentResourceManager()->GetPropertyWindowSize().y = y; - - return wxPropertyListView::OnClose(); -} - -wxWindow *wxPropertyInfo::sm_propertyWindow; - -/* - * wxDialogEditorPropertyListDialog - */ - - /* -wxDialogEditorPropertyListDialog::wxDialogEditorPropertyListDialog(wxPropertyListView *v, wxWindow *parent, const wxString& title, - const wxPoint& pos, const wxSize& size, - long style, const wxString& name): - wxPropertyListDialog(v, parent, title, pos, size, style, name) -{ - m_propSheet = NULL; - m_propInfo = NULL; -} - -wxDialogEditorPropertyListDialog::~wxDialogEditorPropertyListDialog() -{ - delete m_propSheet; - delete m_propInfo; - wxPropertyInfo::sm_propertyWindow = NULL; -} -*/ - -wxDialogEditorPropertyListFrame::wxDialogEditorPropertyListFrame(wxPropertyListView *v, wxFrame *parent, const wxString& title, - const wxPoint& pos, const wxSize& size, - long style, const wxString& name): - wxPropertyListFrame(v, parent, title, pos, size, style, name) -{ - m_propSheet = NULL; - m_propInfo = NULL; -} - -wxDialogEditorPropertyListFrame::~wxDialogEditorPropertyListFrame() -{ - delete m_propSheet; - delete m_propInfo; - wxPropertyInfo::sm_propertyWindow = NULL; -} - -/* - * wxPropertyInfo - */ - -// Edit the information represented by this object, whatever that -// might be. -bool wxPropertyInfo::Edit(wxWindow *WXUNUSED(parent), const wxString& title) -{ - if (sm_propertyWindow) - { - sm_propertyWindow->Raise(); - return TRUE; - } - - int width = wxResourceManager::GetCurrentResourceManager()->GetPropertyWindowSize().width; - int height = wxResourceManager::GetCurrentResourceManager()->GetPropertyWindowSize().height; - int x = wxResourceManager::GetCurrentResourceManager()->GetPropertyWindowSize().x; - int y = wxResourceManager::GetCurrentResourceManager()->GetPropertyWindowSize().y; - - wxPropertySheet *propSheet = new wxPropertySheet; - - wxStringList propNames; - GetPropertyNames(propNames); - - wxNode *node = propNames.First(); - while (node) - { - wxString name((char *)node->Data()); - wxProperty *prop = GetProperty(name); - if (prop) - { - propSheet->AddProperty(prop); - } - node = node->Next(); - } - - // Reset 'modified' flags for all property values - propSheet->SetAllModified(FALSE); - - wxResourcePropertyListView *view = new wxResourcePropertyListView(this, NULL, - wxPROP_BUTTON_OK | wxPROP_BUTTON_CANCEL | - wxPROP_BUTTON_CHECK_CROSS|wxPROP_DYNAMIC_VALUE_FIELD|wxPROP_PULLDOWN|wxPROP_SHOWVALUES); - - wxDialogEditorPropertyListFrame *propWin = new wxDialogEditorPropertyListFrame(view, - wxResourceManager::GetCurrentResourceManager()->GetEditorFrame(), title, wxPoint(x, y), - wxSize(width, height), wxDEFAULT_FRAME_STYLE); - sm_propertyWindow = propWin; - - propWin->m_registry.RegisterValidator(wxString("real"), new wxRealListValidator); - propWin->m_registry.RegisterValidator(wxString("string"), new wxStringListValidator); - propWin->m_registry.RegisterValidator(wxString("integer"), new wxIntegerListValidator); - propWin->m_registry.RegisterValidator(wxString("bool"), new wxBoolListValidator); - propWin->m_registry.RegisterValidator(wxString("filename"), new wxFilenameListValidator); - propWin->m_registry.RegisterValidator(wxString("stringlist"), new wxListOfStringsListValidator); - propWin->m_registry.RegisterValidator(wxString("window_id"), new wxResourceSymbolValidator); - - propWin->m_propInfo = this; - propWin->m_propSheet = propSheet; - -// view->m_propertyWindow = propWin; - view->AddRegistry(&(propWin->m_registry)); - - propWin->Initialize(); - view->ShowView(propSheet, propWin->GetPropertyPanel()); - - propWin->Show(TRUE); - - // Otherwise doesn't show itself -#ifdef __WXMOTIF__ - wxNoOptimize noOptimize; - propWin->SetSize(-1, -1, width, height); -#endif - - return TRUE; -} - -/* - * wxWindowPropertyInfo - */ - -wxWindowPropertyInfo::wxWindowPropertyInfo(wxWindow *win, wxItemResource *res) -{ - m_propertyWindow = win; - m_propertyResource = res; -} - -wxWindowPropertyInfo::~wxWindowPropertyInfo(void) -{ -} - -wxProperty *wxWindowPropertyInfo::GetFontProperty(wxString& name, wxFont *font) -{ - if (!font) - return NULL; - - if (name.Contains("Points")) - return new wxProperty(name, (long)font->GetPointSize(), "integer", new wxIntegerListValidator(1, 100)); - else if (name.Contains("Family")) - return new wxProperty(name, font->GetFamilyString(), "string", - new wxStringListValidator(new wxStringList("wxDECORATIVE", "wxROMAN", "wxSCRIPT", "wxSWISS", "wxMODERN", - NULL))); - else if (name.Contains("Style")) - return new wxProperty(name, font->GetStyleString(), "string", - new wxStringListValidator(new wxStringList("wxNORMAL", "wxITALIC", "wxSLANT", NULL))); - else if (name.Contains("Weight")) - return new wxProperty(name, font->GetWeightString(), "string", - new wxStringListValidator(new wxStringList("wxNORMAL", "wxBOLD", "wxLIGHT", NULL))); - else if (name.Contains("Underlined")) - return new wxProperty(name, (bool)font->GetUnderlined(), "bool"); - else - return NULL; -} - -wxFont *wxWindowPropertyInfo::SetFontProperty(wxString& name, wxProperty *property, wxFont *font) -{ - int pointSize = 12; - int fontFamily = wxMODERN; - int fontStyle = wxNORMAL; - int fontWeight = wxNORMAL; - bool fontUnderlined = FALSE; - - if (name.Contains("Points")) - { - pointSize = (int)property->GetValue().IntegerValue(); - if (font && (pointSize == font->GetPointSize())) - return NULL; // No change - } - else if (font) pointSize = font->GetPointSize(); - - if (name.Contains("Family")) - { - wxString val = property->GetValue().StringValue(); - fontFamily = wxStringToFontFamily(val); - - if (font && (fontFamily == font->GetFamily())) - return NULL; // No change - } - else if (font) fontFamily = font->GetFamily(); - - if (name.Contains("Style")) - { - wxString val = property->GetValue().StringValue(); - fontStyle = wxStringToFontStyle(val); - - if (font && (fontStyle == font->GetStyle())) - return NULL; // No change - } - else if (font) fontStyle = font->GetStyle(); - if (name.Contains("Weight")) - { - wxString val = property->GetValue().StringValue(); - fontWeight = wxStringToFontWeight(val); - - if (font && (fontWeight == font->GetWeight())) - return NULL; // No change - } - else if (font) fontWeight = font->GetWeight(); - - if (name.Contains("Underlined")) - { - fontUnderlined = property->GetValue().BoolValue(); - - if (font && (fontUnderlined == font->GetUnderlined())) - return NULL; // No change - } - else if (font) fontUnderlined = font->GetUnderlined(); - - wxFont *newFont = wxTheFontList->FindOrCreateFont(pointSize, fontFamily, fontStyle, fontWeight, fontUnderlined); - if (newFont) - { - return newFont; - } - else - return NULL; -} - -wxProperty *wxWindowPropertyInfo::GetProperty(wxString& name) -{ - wxItemResource* resource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(m_propertyWindow); - - wxFont *font = & m_propertyWindow->GetFont(); - if (name == "fontPoints" || name == "fontFamily" || name == "fontStyle" || name == "fontWeight" || - name == "fontUnderlined") - return GetFontProperty(name, font); - else if (name == "name") - return new wxProperty("name", m_propertyWindow->GetName(), "string"); - else if (name == "title") - return new wxProperty("title", m_propertyWindow->GetTitle(), "string"); - else if (name == "x") - { - return new wxProperty("x", (long)resource->GetX(), "integer"); - } - else if (name == "y") - { - return new wxProperty("y", (long)resource->GetY(), "integer"); - } - else if (name == "width") - { - return new wxProperty("width", (long)resource->GetWidth(), "integer"); - } - else if (name == "height") - { - return new wxProperty("height", (long)resource->GetHeight(), "integer"); - } - else if (name == "id") - { - wxItemResource *resource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(m_propertyWindow); - if (resource) - { - int id = resource->GetId(); - wxString idStr; - idStr.Printf("%d", id); - wxString symbolName = wxResourceManager::GetCurrentResourceManager()->GetSymbolTable().GetSymbolForId(id); - symbolName += "="; - symbolName += idStr; - // symbolName is now e.g. "ID_PANEL21=105" - return new wxProperty("id", symbolName, "window_id"); - } - else - return NULL; - } - else if (name == "border") - { - wxString border(""); - if (m_propertyWindow->GetWindowStyleFlag() & wxSIMPLE_BORDER) - border = "wxSIMPLE_BORDER"; - else if (m_propertyWindow->GetWindowStyleFlag() & wxRAISED_BORDER) - border = "wxRAISED_BORDER"; - else if (m_propertyWindow->GetWindowStyleFlag() & wxSUNKEN_BORDER) - border = "wxSUNKEN_BORDER"; - else if (m_propertyWindow->GetWindowStyleFlag() & wxDOUBLE_BORDER) - border = "wxDOUBLE_BORDER"; - else if (m_propertyWindow->GetWindowStyleFlag() & wxSTATIC_BORDER) - border = "wxSTATIC_BORDER"; - else - border = "wxNO_BORDER"; - - return new wxProperty("border", border, "string", - new wxStringListValidator(new wxStringList("wxSIMPLE_BORDER", "wxRAISED_BORDER", - "wxSUNKEN_BORDER", "wxDOUBLE_BORDER", "wxSTATIC_BORDER", "wxNO_BORDER", NULL))); - } - else - return NULL; -} - -bool wxWindowPropertyInfo::SetProperty(wxString& name, wxProperty *property) -{ - wxFont *font = & m_propertyWindow->GetFont(); - if (font && (name == "fontPoints" || name == "fontFamily" || name == "fontStyle" || name == "fontWeight" || name == "fontUnderlined" )) - { - wxFont *newFont = SetFontProperty(name, property, font); - if (newFont) - m_propertyWindow->SetFont(* newFont); - return TRUE; - } - else if (name == "name") - { - // Remove old name from resource table, if it's there. - wxItemResource *oldResource = (wxItemResource *)wxResourceManager::GetCurrentResourceManager()->GetResourceTable().Delete(m_propertyWindow->GetName()); - if (oldResource) - { - // It's a top-level resource - m_propertyWindow->SetName(property->GetValue().StringValue()); - oldResource->SetName(property->GetValue().StringValue()); - wxResourceManager::GetCurrentResourceManager()->GetResourceTable().Put(m_propertyWindow->GetName(), oldResource); - } - else - { - // It's a child of something; just set the name of the resource and the window. - m_propertyWindow->SetName(property->GetValue().StringValue()); - m_propertyResource->SetName(property->GetValue().StringValue()); - } - // Refresh the resource manager list, because the name changed. - wxResourceManager::GetCurrentResourceManager()->UpdateResourceList(); - return TRUE; - } - else if (name == "title") - { - m_propertyWindow->SetTitle(property->GetValue().StringValue()); - return TRUE; - } - else if (name == "x") - { - wxItemResource* resource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(m_propertyWindow); - int x, y; - m_propertyWindow->GetPosition(&x, &y); - int newX = (int)property->GetValue().IntegerValue(); - int pixelX = newX; - - // We need to convert to pixels if this is not a dialog or panel, but - // the parent resource specifies dialog units. - if (m_propertyWindow->GetParent() && m_propertyWindow->IsKindOf(CLASSINFO(wxControl))) - { - wxItemResource* parentResource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(m_propertyWindow->GetParent()); - if (parentResource->GetResourceStyle() & wxRESOURCE_DIALOG_UNITS) - { - wxPoint pt = m_propertyWindow->GetParent()->ConvertDialogToPixels(wxPoint(newX, y)); - pixelX = pt.x; - } - } - else if (m_propertyWindow->IsKindOf(CLASSINFO(wxPanel))) - { - wxItemResource* resource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(m_propertyWindow); - if (resource->GetResourceStyle() & wxRESOURCE_DIALOG_UNITS) - { - wxPoint pt = m_propertyWindow->ConvertDialogToPixels(wxPoint(newX, y)); - pixelX = pt.x; - } - } - - if (x != pixelX) - { - m_propertyWindow->Move(pixelX, y); - resource->SetSize(newX, resource->GetY(), resource->GetWidth(), resource->GetHeight()); - } - return TRUE; - } - else if (name == "y") - { - wxItemResource* resource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(m_propertyWindow); - int x, y; - m_propertyWindow->GetPosition(&x, &y); - int newY = (int)property->GetValue().IntegerValue(); - int pixelY = newY; - - // We need to convert to pixels if this is not a dialog or panel, but - // the parent resource specifies dialog units. - if (m_propertyWindow->GetParent() && m_propertyWindow->IsKindOf(CLASSINFO(wxControl))) - { - wxItemResource* parentResource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(m_propertyWindow->GetParent()); - if (parentResource->GetResourceStyle() & wxRESOURCE_DIALOG_UNITS) - { - wxPoint pt = m_propertyWindow->GetParent()->ConvertDialogToPixels(wxPoint(x, newY)); - pixelY = pt.y; - } - } - else if (m_propertyWindow->IsKindOf(CLASSINFO(wxPanel))) - { - wxItemResource* resource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(m_propertyWindow); - if (resource->GetResourceStyle() & wxRESOURCE_DIALOG_UNITS) - { - wxPoint pt = m_propertyWindow->ConvertDialogToPixels(wxPoint(x, newY)); - pixelY = pt.y; - } - } - - if (y != pixelY) - { - m_propertyWindow->Move(x, pixelY); - resource->SetSize(resource->GetX(), newY, resource->GetWidth(), resource->GetHeight()); - } - return TRUE; - } - else if (name == "width") - { - wxItemResource* resource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(m_propertyWindow); - int width, height; - m_propertyWindow->GetSize(&width, &height); - int newWidth = (int)property->GetValue().IntegerValue(); - int pixelWidth = newWidth; - - // We need to convert to pixels if this is not a dialog or panel, but - // the parent resource specifies dialog units. - if (m_propertyWindow->GetParent() && m_propertyWindow->IsKindOf(CLASSINFO(wxControl))) - { - wxItemResource* parentResource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(m_propertyWindow->GetParent()); - if (parentResource->GetResourceStyle() & wxRESOURCE_DIALOG_UNITS) - { - wxSize sz = m_propertyWindow->GetParent()->ConvertDialogToPixels(wxSize(newWidth, height)); - pixelWidth = sz.x; - } - } - else if (m_propertyWindow->IsKindOf(CLASSINFO(wxPanel))) - { - wxItemResource* resource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(m_propertyWindow); - if (resource->GetResourceStyle() & wxRESOURCE_DIALOG_UNITS) - { - wxSize sz = m_propertyWindow->ConvertDialogToPixels(wxSize(newWidth, height)); - pixelWidth = sz.x; - } - } - - if (width != pixelWidth) - { - m_propertyWindow->SetSize(pixelWidth, height); - resource->SetSize(resource->GetX(), resource->GetY(), newWidth, resource->GetHeight()); - } - return TRUE; - } - else if (name == "height") - { - wxItemResource* resource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(m_propertyWindow); - int width, height; - m_propertyWindow->GetSize(&width, &height); - int newHeight = (int)property->GetValue().IntegerValue(); - int pixelHeight = newHeight; - - // We need to convert to pixels if this is not a dialog or panel, but - // the parent resource specifies dialog units. - if (m_propertyWindow->GetParent() && m_propertyWindow->IsKindOf(CLASSINFO(wxControl))) - { - wxItemResource* parentResource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(m_propertyWindow->GetParent()); - if (parentResource->GetResourceStyle() & wxRESOURCE_DIALOG_UNITS) - { - wxSize sz = m_propertyWindow->GetParent()->ConvertDialogToPixels(wxSize(width, newHeight)); - pixelHeight = sz.y; - } - } - else if (m_propertyWindow->IsKindOf(CLASSINFO(wxPanel))) - { - wxItemResource* resource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(m_propertyWindow); - if (resource->GetResourceStyle() & wxRESOURCE_DIALOG_UNITS) - { - wxSize sz = m_propertyWindow->ConvertDialogToPixels(wxSize(width, newHeight)); - pixelHeight = sz.y; - } - } - - if (height != pixelHeight) - { - m_propertyWindow->SetSize(width, pixelHeight); - resource->SetSize(resource->GetX(), resource->GetY(), resource->GetWidth(), newHeight); - } - return TRUE; - } - else if (name == "id") - { - wxItemResource *resource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(m_propertyWindow); - if (resource) - { - wxString value = property->GetValue().StringValue(); - - wxString strName = value.Before('='); - wxString strId = value.After('='); - int id = atoi(strId); - - wxString oldSymbolName = wxResourceManager::GetCurrentResourceManager()->GetSymbolTable().GetSymbolForId(resource->GetId()); - int oldSymbolId = resource->GetId(); - - if (strName != "") - { - // If we change the id for an existing symbol, we need to: - // 1) Check if there are any other resources currently using the original id. - // If so, will need to change their id to the new id. - // 2) Remove the old symbol, add the new symbol. - // In this check, we don't have to do this, but we need to do it in SetProperty. - - if (strName == oldSymbolName && id != oldSymbolId) - { - wxASSERT( (!wxResourceManager::GetCurrentResourceManager()->GetSymbolTable().IsStandardSymbol(oldSymbolName)) ); - - // It's OK to change just the id. But we'll need to change all matching ids in all resources, - // because ids are unique and changing one resource's id must change all identical ones. - wxResourceManager::GetCurrentResourceManager()->ChangeIds(oldSymbolId, id); - - wxResourceManager::GetCurrentResourceManager()->GetSymbolTable().RemoveSymbol(oldSymbolName); - wxResourceManager::GetCurrentResourceManager()->GetSymbolTable().AddSymbol(strName, id); - } - - // If we change the name but not the id, we'll just need to remove and - // re-add the symbol/id pair. - if (strName != oldSymbolName && id == oldSymbolId) - { - wxASSERT( (!wxResourceManager::GetCurrentResourceManager()->GetSymbolTable().IsStandardSymbol(oldSymbolName)) ); - - wxResourceManager::GetCurrentResourceManager()->GetSymbolTable().RemoveSymbol(oldSymbolName); - - if (!wxResourceManager::GetCurrentResourceManager()->GetSymbolTable().SymbolExists(strName)) - { - wxResourceManager::GetCurrentResourceManager()->GetSymbolTable().AddSymbol(strName, id); - } - } - - // What if we're changing both the name and the id? - // - if there's no symbol of that name, just remove the old, add the new (in SetProperty) - // - if there is a symbol of that name, if id matches, do nothing. If not, veto. - - if (strName != oldSymbolName && id != oldSymbolId) - { - // Remove old symbol if it's not being used - if (!wxResourceManager::GetCurrentResourceManager()->IsSymbolUsed(resource, oldSymbolId) && - !wxResourceManager::GetCurrentResourceManager()->GetSymbolTable().IsStandardSymbol(oldSymbolName)) - { - wxResourceManager::GetCurrentResourceManager()->GetSymbolTable().RemoveSymbol(oldSymbolName); - } - - if (!wxResourceManager::GetCurrentResourceManager()->GetSymbolTable().SymbolExists(strName)) - { - wxResourceManager::GetCurrentResourceManager()->GetSymbolTable().AddSymbol(strName, id); - } - } - resource->SetId(id); - } - - return TRUE; - } - else - return FALSE; - } - else if (name == "border") - { - long borderStyle = wxNO_BORDER; - wxString val = property->GetValue().StringValue(); - - if (val == "wxSIMPLE_BORDER") - borderStyle = wxSIMPLE_BORDER; - else if (val == "wxRAISED_BORDER") - borderStyle = wxRAISED_BORDER; - else if (val == "wxSUNKEN_BORDER") - borderStyle = wxSUNKEN_BORDER; - else if (val == "wxDOUBLE_BORDER") - borderStyle = wxDOUBLE_BORDER; - else if (val == "wxSTATIC_BORDER") - borderStyle = wxSTATIC_BORDER; - else - borderStyle = wxNO_BORDER; - - SetWindowStyle(m_propertyWindow, wxSIMPLE_BORDER, FALSE); - SetWindowStyle(m_propertyWindow, wxRAISED_BORDER, FALSE); - SetWindowStyle(m_propertyWindow, wxSUNKEN_BORDER, FALSE); - SetWindowStyle(m_propertyWindow, wxDOUBLE_BORDER, FALSE); - SetWindowStyle(m_propertyWindow, wxSTATIC_BORDER, FALSE); - SetWindowStyle(m_propertyWindow, wxNO_BORDER, FALSE); - - SetWindowStyle(m_propertyWindow, borderStyle, TRUE); - - wxItemResource *resource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(m_propertyWindow); - resource->SetStyle(m_propertyWindow->GetWindowStyleFlag()); - return TRUE; - } - else - return FALSE; -} - -void wxWindowPropertyInfo::GetPropertyNames(wxStringList& names) -{ - names.Add("id"); - names.Add("name"); - names.Add("x"); - names.Add("y"); - names.Add("width"); - names.Add("height"); - names.Add("border"); - if (!m_propertyWindow->IsKindOf(CLASSINFO(wxControl))) - { - names.Add("fontPoints"); - names.Add("fontFamily"); - names.Add("fontStyle"); - names.Add("fontWeight"); - names.Add("fontUnderlined"); - } -} - -// Fill in the wxItemResource members to mirror the current window settings -bool wxWindowPropertyInfo::InstantiateResource(wxItemResource *resource) -{ -// resource->SetType(m_propertyWindow->GetClassInfo()->GetClassName()); - -// resource->SetStyle(m_propertyWindow->GetWindowStyleFlag()); - wxString str(m_propertyWindow->GetName()); - resource->SetName(str); - -#if 0 - int x, y, w, h; - - if (m_propertyWindow->IsKindOf(CLASSINFO(wxPanel))) - m_propertyWindow->GetClientSize(&w, &h); - else - m_propertyWindow->GetSize(&w, &h); - - m_propertyWindow->GetPosition(&x, &y); - - // We need to convert to dialog units if this is not a dialog or panel, but - // the parent resource specifies dialog units. - if (m_propertyWindow->GetParent() && m_propertyWindow->IsKindOf(CLASSINFO(wxControl))) - { - wxItemResource* parentResource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(m_propertyWindow->GetParent()); - if (parentResource->GetResourceStyle() & wxRESOURCE_DIALOG_UNITS) - { - wxPoint pt = m_propertyWindow->GetParent()->ConvertPixelsToDialog(wxPoint(x, y)); - x = pt.x; y = pt.y; - wxSize sz = m_propertyWindow->GetParent()->ConvertPixelsToDialog(wxSize(w, h)); - w = sz.x; h = sz.y; - } - } - else if (m_propertyWindow->IsKindOf(CLASSINFO(wxPanel))) - { - if (resource->GetResourceStyle() & wxRESOURCE_DIALOG_UNITS) - { - wxPoint pt = m_propertyWindow->ConvertPixelsToDialog(wxPoint(x, y)); - x = pt.x; y = pt.y; - wxSize sz = m_propertyWindow->ConvertPixelsToDialog(wxSize(w, h)); - w = sz.x; h = sz.y; - } - } - - resource->SetSize(x, y, w, h); -#endif - - return TRUE; -} - -// Set the window style -void wxWindowPropertyInfo::SetWindowStyle(wxWindow* win, long style, bool set) -{ - if (style == 0) - return; - - if ((win->GetWindowStyleFlag() & style) == style) - { - if (!set) - { - win->SetWindowStyleFlag(win->GetWindowStyleFlag() - style); - } - } - else - { - if (set) - { - win->SetWindowStyleFlag(win->GetWindowStyleFlag() | style); - } - } -} - -/* - * Controls - */ - -wxProperty *wxItemPropertyInfo::GetProperty(wxString& name) -{ - wxControl *itemWindow = (wxControl *)m_propertyWindow; - wxFont *font = & itemWindow->GetFont(); - - if (name == "fontPoints" || name == "fontFamily" || name == "fontStyle" || name == "fontWeight" || - name == "fontUnderlined") - return GetFontProperty(name, font); - else if (name == "label" && itemWindow->GetLabel()) - return new wxProperty("label", m_propertyWindow->GetLabel(), "string"); - else - return wxWindowPropertyInfo::GetProperty(name); -} - -bool wxItemPropertyInfo::SetProperty(wxString& name, wxProperty *property) -{ - wxControl *itemWindow = (wxControl *)m_propertyWindow; - wxFont *font = & itemWindow->GetFont(); - - if (font && (name == "fontPoints" || name == "fontFamily" || name == "fontStyle" || name == "fontWeight" || name == "fontUnderlined" )) - { - wxFont *newFont = SetFontProperty(name, property, font); - if (newFont) - itemWindow->SetFont(* newFont); - return TRUE; - } - else if (name == "label") - { - itemWindow->SetLabel(property->GetValue().StringValue()); - return TRUE; - } - else - return wxWindowPropertyInfo::SetProperty(name, property); -} - -void wxItemPropertyInfo::GetPropertyNames(wxStringList& names) -{ - wxWindowPropertyInfo::GetPropertyNames(names); - - names.Add("fontPoints"); - names.Add("fontFamily"); - names.Add("fontStyle"); - names.Add("fontWeight"); - names.Add("fontUnderlined"); -} - -bool wxItemPropertyInfo::InstantiateResource(wxItemResource *resource) -{ - wxWindowPropertyInfo::InstantiateResource(resource); - - wxControl *item = (wxControl *)m_propertyWindow; - wxString str(item->GetLabel()); - resource->SetTitle(str); - - if (item->GetFont().Ok()) - resource->SetFont(* wxTheFontList->FindOrCreateFont(item->GetFont().GetPointSize(), - item->GetFont().GetFamily(), item->GetFont().GetStyle(), item->GetFont().GetWeight(), - item->GetFont().GetUnderlined(), item->GetFont().GetFaceName())); - return TRUE; -} - -/* - * Button - */ - -wxProperty *wxButtonPropertyInfo::GetProperty(wxString& name) -{ - return wxItemPropertyInfo::GetProperty(name); -} - -bool wxButtonPropertyInfo::SetProperty(wxString& name, wxProperty *property) -{ - return wxItemPropertyInfo::SetProperty(name, property); -} - -void wxButtonPropertyInfo::GetPropertyNames(wxStringList& names) -{ - wxItemPropertyInfo::GetPropertyNames(names); - names.Add("label"); -} - -bool wxButtonPropertyInfo::InstantiateResource(wxItemResource *resource) -{ - return wxItemPropertyInfo::InstantiateResource(resource); -} - -/* - * wxBitmapButton - */ - -wxProperty *wxBitmapButtonPropertyInfo::GetProperty(wxString& name) -{ - wxBitmapButton *button = (wxBitmapButton *)m_propertyWindow; - if (name == "bitmapFilename") - { - wxItemResource *resource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(button); - wxString str("none.bmp"); - - if (resource) - { - str = wxResourceManager::GetCurrentResourceManager()->FindBitmapFilenameForResource(resource); - } - return new wxProperty("bitmapFilename", str.GetData(), "string", new wxFilenameListValidator("Select a bitmap file", "*.bmp")); - } - else - return wxButtonPropertyInfo::GetProperty(name); -} - -bool wxBitmapButtonPropertyInfo::SetProperty(wxString& name, wxProperty *property) -{ - wxBitmapButton *button = (wxBitmapButton *)m_propertyWindow; - if (name == "bitmapFilename") - { - char *s = property->GetValue().StringValue(); - if (s && wxFileExists(s)) - { - s = copystring(s); - wxBitmap *bitmap = new wxBitmap(s, wxBITMAP_TYPE_BMP); - if (!bitmap->Ok()) - { - delete bitmap; - delete[] s; - return FALSE; - } - else - { - wxItemResource *resource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(button); - if (resource) - { - wxString oldResource(resource->GetValue4()); - wxString resName = wxResourceManager::GetCurrentResourceManager()->AddBitmapResource(s); - resource->SetValue4(resName); - - if (!oldResource.IsNull()) - wxResourceManager::GetCurrentResourceManager()->PossiblyDeleteBitmapResource(oldResource); - } - - button->SetLabel(* bitmap); - delete[] s; - return TRUE; - } - } - return FALSE; - } - else - return wxButtonPropertyInfo::SetProperty(name, property); -} - -void wxBitmapButtonPropertyInfo::GetPropertyNames(wxStringList& names) -{ - wxButtonPropertyInfo::GetPropertyNames(names); - names.Delete("label"); - names.Add("bitmapFilename"); -} - -bool wxBitmapButtonPropertyInfo::InstantiateResource(wxItemResource *resource) -{ - return wxItemPropertyInfo::InstantiateResource(resource); -} - -/* - * wxStaticText - */ - -wxProperty *wxStaticTextPropertyInfo::GetProperty(wxString& name) -{ - return wxItemPropertyInfo::GetProperty(name); -} - -bool wxStaticTextPropertyInfo::SetProperty(wxString& name, wxProperty *property) -{ - return wxItemPropertyInfo::SetProperty(name, property); -} - -void wxStaticTextPropertyInfo::GetPropertyNames(wxStringList& names) -{ - wxItemPropertyInfo::GetPropertyNames(names); - names.Add("label"); -} - -bool wxStaticTextPropertyInfo::InstantiateResource(wxItemResource *resource) -{ - return wxItemPropertyInfo::InstantiateResource(resource); -} - -/* - * wxStaticBitmap - */ - -wxProperty *wxStaticBitmapPropertyInfo::GetProperty(wxString& name) -{ - wxStaticBitmap *message = (wxStaticBitmap *)m_propertyWindow; - if (name == "bitmapFilename") - { - wxItemResource *resource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(message); - wxString str("none.bmp"); - - if (resource) - { - str = wxResourceManager::GetCurrentResourceManager()->FindBitmapFilenameForResource(resource); - } - return new wxProperty("bitmapFilename", str.GetData(), "string", new wxFilenameListValidator("Select a bitmap file", "*.bmp")); - } - else - return wxItemPropertyInfo::GetProperty(name); -} - -bool wxStaticBitmapPropertyInfo::SetProperty(wxString& name, wxProperty *property) -{ - wxStaticBitmap *message = (wxStaticBitmap *)m_propertyWindow; - if (name == "bitmapFilename") - { - char *s = property->GetValue().StringValue(); - if (s && wxFileExists(s)) - { - s = copystring(s); - - wxBitmap *bitmap = new wxBitmap(s, wxBITMAP_TYPE_BMP); - if (!bitmap->Ok()) - { - delete bitmap; - delete[] s; - return FALSE; - } - else - { - wxItemResource *resource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(message); - if (resource) - { - wxString oldResource(resource->GetValue4()); - wxString resName = wxResourceManager::GetCurrentResourceManager()->AddBitmapResource(s); - resource->SetValue4(resName); - - if (!oldResource.IsNull()) - wxResourceManager::GetCurrentResourceManager()->PossiblyDeleteBitmapResource(oldResource); - } - - message->SetBitmap(* bitmap); - delete[] s; - return TRUE; - } - } - return FALSE; - } - else - return wxItemPropertyInfo::SetProperty(name, property); -} - -void wxStaticBitmapPropertyInfo::GetPropertyNames(wxStringList& names) -{ - wxItemPropertyInfo::GetPropertyNames(names); - names.Add("bitmapFilename"); -} - -bool wxStaticBitmapPropertyInfo::InstantiateResource(wxItemResource *resource) -{ - return wxItemPropertyInfo::InstantiateResource(resource); -} - -/* - * Text item - */ - -wxProperty *wxTextPropertyInfo::GetProperty(wxString& name) -{ - wxTextCtrl *text = (wxTextCtrl *)m_propertyWindow; - if (name == "value") - return new wxProperty("value", text->GetValue(), "string"); - else if (name == "password") - { - bool isPassword = ((text->GetWindowStyleFlag() & wxTE_PASSWORD) == wxTE_PASSWORD); - return new wxProperty("password", isPassword, "bool"); - } - else if (name == "readonly") - { - bool isReadOnly = ((text->GetWindowStyleFlag() & wxTE_READONLY) == wxTE_READONLY); - return new wxProperty("readonly", isReadOnly, "bool"); - } - else - return wxItemPropertyInfo::GetProperty(name); -} - -bool wxTextPropertyInfo::SetProperty(wxString& name, wxProperty *property) -{ - wxTextCtrl *text = (wxTextCtrl *)m_propertyWindow; - if (name == "value") - { - text->SetValue(property->GetValue().StringValue()); - return TRUE; - } - else if (name == "password") - { - long flag = text->GetWindowStyleFlag(); - if (property->GetValue().BoolValue()) - { - if ((flag & wxTE_PASSWORD) != wxTE_PASSWORD) - flag |= wxTE_PASSWORD; - } - else - { - if ((flag & wxTE_PASSWORD) == wxTE_PASSWORD) - flag -= wxTE_PASSWORD; - } - wxItemResource *resource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(text); - resource->SetStyle(flag); - - wxResourceManager::GetCurrentResourceManager()->RecreateWindowFromResource(text, this); - return TRUE; - } - else if (name == "readonly") - { - long flag = text->GetWindowStyleFlag(); - if (property->GetValue().BoolValue()) - { - if ((flag & wxTE_READONLY) != wxTE_READONLY) - flag |= wxTE_READONLY; - } - else - { - if ((flag & wxTE_READONLY) == wxTE_READONLY) - flag -= wxTE_READONLY; - } - wxItemResource *resource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(text); - resource->SetStyle(flag); - - wxResourceManager::GetCurrentResourceManager()->RecreateWindowFromResource(text, this); - return TRUE; - } - else - return wxItemPropertyInfo::SetProperty(name, property); -} - -void wxTextPropertyInfo::GetPropertyNames(wxStringList& names) -{ - wxItemPropertyInfo::GetPropertyNames(names); - names.Add("value"); - names.Add("readonly"); - names.Add("password"); -} - -bool wxTextPropertyInfo::InstantiateResource(wxItemResource *resource) -{ - wxTextCtrl *text = (wxTextCtrl *)m_propertyWindow; - wxString str(text->GetValue()); - resource->SetValue4(str); - - return wxItemPropertyInfo::InstantiateResource(resource); -} - -/* - * Listbox item - */ - -wxProperty *wxListBoxPropertyInfo::GetProperty(wxString& name) -{ - wxListBox *listBox = (wxListBox *)m_propertyWindow; - if (name == "values") - { - wxStringList *stringList = new wxStringList; - int i; - for (i = 0; i < listBox->Number(); i++) - stringList->Add(listBox->GetString(i)); - - return new wxProperty(name, stringList, "stringlist"); - } - else if (name == "multiple") - { - wxItemResource *resource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(listBox); - if (!resource) - return NULL; - - char *mult = "wxLB_SINGLE"; - - if ((listBox->GetWindowStyleFlag() & wxLB_MULTIPLE) != 0) - mult = "wxLB_MULTIPLE"; - else if ((listBox->GetWindowStyleFlag() & wxLB_EXTENDED) != 0) - mult = "wxLB_EXTENDED"; - else - mult = "wxLB_SINGLE"; - - return new wxProperty("multiple", mult, "string", - new wxStringListValidator(new wxStringList("wxLB_SINGLE", "wxLB_MULTIPLE", "wxLB_EXTENDED", - NULL))); - } - else - return wxItemPropertyInfo::GetProperty(name); -} - -bool wxListBoxPropertyInfo::SetProperty(wxString& name, wxProperty *property) -{ - wxListBox *listBox = (wxListBox *)m_propertyWindow; - if (name == "values") - { - listBox->Clear(); - wxPropertyValue *expr = property->GetValue().GetFirst(); - while (expr) - { - char *s = expr->StringValue(); - if (s) - listBox->Append(s); - expr = expr->GetNext(); - } - return TRUE; - } - else if (name == "multiple") - { - SetWindowStyle(m_propertyWindow, wxLB_SINGLE, FALSE); - SetWindowStyle(m_propertyWindow, wxLB_MULTIPLE, FALSE); - SetWindowStyle(m_propertyWindow, wxLB_EXTENDED, FALSE); - - wxString str(property->GetValue().StringValue()); - if (str == "wxLB_MULTIPLE") - SetWindowStyle(m_propertyWindow, wxLB_MULTIPLE, TRUE); - else if (str == "wxLB_EXTENDED") - SetWindowStyle(m_propertyWindow, wxLB_EXTENDED, TRUE); - else - SetWindowStyle(m_propertyWindow, wxLB_SINGLE, TRUE); - - wxItemResource *resource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(listBox); - if (resource) - resource->SetStyle(m_propertyWindow->GetWindowStyleFlag()); - wxResourceManager::GetCurrentResourceManager()->RecreateWindowFromResource(listBox, this); - return TRUE; - } - else - return wxItemPropertyInfo::SetProperty(name, property); -} - -void wxListBoxPropertyInfo::GetPropertyNames(wxStringList& names) -{ - wxItemPropertyInfo::GetPropertyNames(names); - names.Add("values"); - names.Add("multiple"); -} - -bool wxListBoxPropertyInfo::InstantiateResource(wxItemResource *resource) -{ - wxListBox *lbox = (wxListBox *)m_propertyWindow; - // This will be set for the wxItemResource on reading or in SetProperty -// resource->SetValue1(lbox->GetSelectionMode()); - int i; - if (lbox->Number() == 0) - resource->SetStringValues(NULL); - else - { - wxStringList slist; - - for (i = 0; i < lbox->Number(); i++) - slist.Add(lbox->GetString(i)); - - resource->SetStringValues(slist); - } - return wxItemPropertyInfo::InstantiateResource(resource); -} - -/* - * Choice item - */ - -wxProperty *wxChoicePropertyInfo::GetProperty(wxString& name) -{ - wxChoice *choice = (wxChoice *)m_propertyWindow; - if (name == "values") - { - wxStringList* stringList = new wxStringList; - int i; - for (i = 0; i < choice->Number(); i++) - stringList->Add(choice->GetString(i)); - - return new wxProperty(name, stringList, "stringlist"); - } - else - return wxItemPropertyInfo::GetProperty(name); -} - -bool wxChoicePropertyInfo::SetProperty(wxString& name, wxProperty *property) -{ - wxChoice *choice = (wxChoice *)m_propertyWindow; - if (name == "values") - { - choice->Clear(); - wxPropertyValue *expr = property->GetValue().GetFirst(); - while (expr) - { - char *s = expr->StringValue(); - if (s) - choice->Append(s); - expr = expr->GetNext(); - } - if (choice->Number() > 0) - choice->SetSelection(0); - return TRUE; - } - else - return wxItemPropertyInfo::SetProperty(name, property); -} - -void wxChoicePropertyInfo::GetPropertyNames(wxStringList& names) -{ - wxItemPropertyInfo::GetPropertyNames(names); - names.Add("values"); -} - -bool wxChoicePropertyInfo::InstantiateResource(wxItemResource *resource) -{ - wxChoice *choice = (wxChoice *)m_propertyWindow; - int i; - if (choice->Number() == 0) - resource->SetStringValues(NULL); - else - { - wxStringList slist; - - for (i = 0; i < choice->Number(); i++) - slist.Add(choice->GetString(i)); - - resource->SetStringValues(slist); - } - return wxItemPropertyInfo::InstantiateResource(resource); -} - -/* - * Choice item - */ - -wxProperty *wxComboBoxPropertyInfo::GetProperty(wxString& name) -{ - wxComboBox *choice = (wxComboBox *)m_propertyWindow; - if (name == "values") - { - wxStringList *stringList = new wxStringList; - int i; - for (i = 0; i < choice->Number(); i++) - stringList->Add(choice->GetString(i)); - - return new wxProperty(name, stringList, "stringlist"); - } - else if (name == "sort") - { - bool sort = ((m_propertyWindow->GetWindowStyleFlag() & wxCB_SORT) == wxCB_SORT); - return new wxProperty(name, sort, "bool"); - } - else if (name == "style") - { - wxString styleStr("dropdown"); - if (m_propertyWindow->GetWindowStyleFlag() & wxCB_SIMPLE) - styleStr = "simple"; - else if (m_propertyWindow->GetWindowStyleFlag() & wxCB_READONLY) - styleStr = "readonly"; - else - styleStr = "dropdown"; - - return new wxProperty(name, styleStr, "string", - new wxStringListValidator(new wxStringList("simple", "dropdown", "readonly", - NULL))); - } - else - return wxItemPropertyInfo::GetProperty(name); -} - -bool wxComboBoxPropertyInfo::SetProperty(wxString& name, wxProperty *property) -{ - wxComboBox *choice = (wxComboBox *)m_propertyWindow; - if (name == "values") - { - choice->Clear(); - wxPropertyValue *expr = property->GetValue().GetFirst(); - while (expr) - { - char *s = expr->StringValue(); - if (s) - choice->Append(s); - expr = expr->GetNext(); - } - if (choice->Number() > 0) - choice->SetSelection(0); - return TRUE; - } - else if (name == "sort") - { - SetWindowStyle(m_propertyWindow, wxCB_SORT, property->GetValue().BoolValue()); - - wxItemResource *resource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(m_propertyWindow); - resource->SetStyle(m_propertyWindow->GetWindowStyleFlag()); - - wxResourceManager::GetCurrentResourceManager()->RecreateWindowFromResource(m_propertyWindow, this); - return TRUE; - } - else if (name == "style") - { - SetWindowStyle(m_propertyWindow, wxCB_SIMPLE, FALSE); - SetWindowStyle(m_propertyWindow, wxCB_DROPDOWN, FALSE); - SetWindowStyle(m_propertyWindow, wxCB_READONLY, FALSE); - - wxString styleStr(property->GetValue().StringValue()); - if (styleStr == "simple") - SetWindowStyle(m_propertyWindow, wxCB_SIMPLE, TRUE); - else if (styleStr == "dropdown") - SetWindowStyle(m_propertyWindow, wxCB_DROPDOWN, TRUE); - else if (styleStr == "readonly") - SetWindowStyle(m_propertyWindow, wxCB_READONLY, TRUE); - - // Necesary? - wxItemResource *resource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(m_propertyWindow); - resource->SetStyle(m_propertyWindow->GetWindowStyleFlag()); - - wxResourceManager::GetCurrentResourceManager()->RecreateWindowFromResource(m_propertyWindow, this); - - return TRUE; - } - else - return wxItemPropertyInfo::SetProperty(name, property); -} - -void wxComboBoxPropertyInfo::GetPropertyNames(wxStringList& names) -{ - wxItemPropertyInfo::GetPropertyNames(names); - names.Add("values"); - names.Add("style"); - names.Add("sort"); -} - -bool wxComboBoxPropertyInfo::InstantiateResource(wxItemResource *resource) -{ - wxComboBox *choice = (wxComboBox *)m_propertyWindow; - int i; - if (choice->Number() == 0) - resource->SetStringValues(NULL); - else - { - wxStringList slist; - - for (i = 0; i < choice->Number(); i++) - slist.Add(choice->GetString(i)); - - resource->SetStringValues(slist); - } - return wxItemPropertyInfo::InstantiateResource(resource); -} - -/* - * Radiobox item - */ - -wxProperty *wxRadioBoxPropertyInfo::GetProperty(wxString& name) -{ - wxRadioBox *radioBox = (wxRadioBox *)m_propertyWindow; - if (name == "numberRowsOrCols") - { - return new wxProperty("numberRowsOrCols", (long)radioBox->GetNumberOfRowsOrCols(), "integer"); - } - if (name == "orientation") - { - wxString orient; - if (m_propertyWindow->GetWindowStyleFlag() & wxRA_SPECIFY_COLS) - orient = "wxRA_SPECIFY_COLS"; - else - orient = "wxRA_SPECIFY_ROWS"; - - return new wxProperty("orientation", orient, "string", - new wxStringListValidator(new wxStringList("wxRA_SPECIFY_COLS", "wxRA_SPECIFY_ROWS", - NULL))); - } - else if (name == "values") - { - wxStringList *stringList = new wxStringList; - int i; - for (i = 0; i < radioBox->Number(); i++) - stringList->Add(radioBox->GetString(i)); - - return new wxProperty(name, stringList, "stringlist"); - } - return wxItemPropertyInfo::GetProperty(name); -} - -bool wxRadioBoxPropertyInfo::SetProperty(wxString& name, wxProperty *property) -{ - wxRadioBox *radioBox = (wxRadioBox *)m_propertyWindow; - if (name == "numberRowsOrCols") - { - radioBox->SetNumberOfRowsOrCols((int)property->GetValue().IntegerValue()); - wxResourceManager::GetCurrentResourceManager()->RecreateWindowFromResource(radioBox, this); - return TRUE; - } - else if (name == "orientation") - { - long windowStyle = radioBox->GetWindowStyleFlag(); - wxString val(property->GetValue().StringValue()); - if (val == "wxRA_SPECIFY_COLS") - { - if (windowStyle & wxRA_SPECIFY_ROWS) - windowStyle -= wxRA_SPECIFY_ROWS; - windowStyle |= wxRA_SPECIFY_COLS; - } - else - { - if (windowStyle & wxRA_SPECIFY_COLS) - windowStyle -= wxRA_SPECIFY_COLS; - windowStyle |= wxRA_SPECIFY_ROWS; - } - radioBox->SetWindowStyleFlag(windowStyle); - wxItemResource *resource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(radioBox); - resource->SetStyle(windowStyle); - - wxResourceManager::GetCurrentResourceManager()->RecreateWindowFromResource(radioBox, this); - return TRUE; - } - else if (name == "values") - { - // Set property into *resource*, not wxRadioBox, and then recreate - // the wxRadioBox. This is because we can't dynamically set the strings - // of a wxRadioBox. - wxItemResource *resource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(m_propertyWindow); - if (!resource) - return FALSE; - - wxStringList stringList; - wxPropertyValue *expr = property->GetValue().GetFirst(); - while (expr) - { - char *s = expr->StringValue(); - if (s) - stringList.Add(s); - expr = expr->GetNext(); - } - resource->SetStringValues(stringList); - wxResourceManager::GetCurrentResourceManager()->RecreateWindowFromResource(radioBox, this); - return TRUE; - } - return wxItemPropertyInfo::SetProperty(name, property); -} - -void wxRadioBoxPropertyInfo::GetPropertyNames(wxStringList& names) -{ - wxItemPropertyInfo::GetPropertyNames(names); - names.Add("label"); - names.Add("values"); - names.Add("orientation"); - names.Add("numberRowsOrCols"); -} - -bool wxRadioBoxPropertyInfo::InstantiateResource(wxItemResource *resource) -{ - wxRadioBox *rbox = (wxRadioBox *)m_propertyWindow; - // Take strings from resource instead -/* - int i; - if (rbox->Number() == 0) - resource->SetStringValues(NULL); - else - { - wxStringList *slist = new wxStringList; - - for (i = 0; i < rbox->Number(); i++) - slist->Add(rbox->GetString(i)); - - resource->SetStringValues(slist); - } -*/ - resource->SetValue1(rbox->GetNumberOfRowsOrCols()); - return wxItemPropertyInfo::InstantiateResource(resource); -} - -/* - * Groupbox item - */ - -wxProperty *wxGroupBoxPropertyInfo::GetProperty(wxString& name) -{ - return wxItemPropertyInfo::GetProperty(name); -} - -bool wxGroupBoxPropertyInfo::SetProperty(wxString& name, wxProperty *property) -{ - return wxItemPropertyInfo::SetProperty(name, property); -} - -void wxGroupBoxPropertyInfo::GetPropertyNames(wxStringList& names) -{ - wxItemPropertyInfo::GetPropertyNames(names); - names.Add("label"); -} - -bool wxGroupBoxPropertyInfo::InstantiateResource(wxItemResource *resource) -{ - return wxItemPropertyInfo::InstantiateResource(resource); -} - -/* - * Checkbox item - */ - -wxProperty *wxCheckBoxPropertyInfo::GetProperty(wxString& name) -{ - wxCheckBox *checkBox = (wxCheckBox *)m_propertyWindow; - if (name == "value") - return new wxProperty("value", checkBox->GetValue(), "bool"); - else - return wxItemPropertyInfo::GetProperty(name); -} - -bool wxCheckBoxPropertyInfo::SetProperty(wxString& name, wxProperty *property) -{ - wxCheckBox *checkBox = (wxCheckBox *)m_propertyWindow; - if (name == "value") - { - checkBox->SetValue((bool)property->GetValue().BoolValue()); - return TRUE; - } - else - return wxItemPropertyInfo::SetProperty(name, property); -} - -void wxCheckBoxPropertyInfo::GetPropertyNames(wxStringList& names) -{ - wxItemPropertyInfo::GetPropertyNames(names); - names.Add("label"); - names.Add("value"); -} - -bool wxCheckBoxPropertyInfo::InstantiateResource(wxItemResource *resource) -{ - wxCheckBox *cbox = (wxCheckBox *)m_propertyWindow; - resource->SetValue1(cbox->GetValue()); - return wxItemPropertyInfo::InstantiateResource(resource); -} - -/* - * Radiobutton item - */ - -wxProperty *wxRadioButtonPropertyInfo::GetProperty(wxString& name) -{ - wxRadioButton *checkBox = (wxRadioButton *)m_propertyWindow; - if (name == "value") - return new wxProperty("value", checkBox->GetValue(), "bool"); - else - return wxItemPropertyInfo::GetProperty(name); -} - -bool wxRadioButtonPropertyInfo::SetProperty(wxString& name, wxProperty *property) -{ - wxRadioButton *checkBox = (wxRadioButton *)m_propertyWindow; - if (name == "value") - { - checkBox->SetValue((bool)property->GetValue().BoolValue()); - return TRUE; - } - else - return wxItemPropertyInfo::SetProperty(name, property); -} - -void wxRadioButtonPropertyInfo::GetPropertyNames(wxStringList& names) -{ - wxItemPropertyInfo::GetPropertyNames(names); - names.Add("label"); - names.Add("value"); -} - -bool wxRadioButtonPropertyInfo::InstantiateResource(wxItemResource *resource) -{ - wxRadioButton *cbox = (wxRadioButton *)m_propertyWindow; - resource->SetValue1(cbox->GetValue()); - return wxItemPropertyInfo::InstantiateResource(resource); -} - -/* - * Slider item - */ - -wxProperty *wxSliderPropertyInfo::GetProperty(wxString& name) -{ - wxSlider *slider = (wxSlider *)m_propertyWindow; - if (name == "value") - return new wxProperty("value", (long)slider->GetValue(), "integer"); - else if (name == "orientation") - { - char *pos = NULL; - if (m_propertyWindow->GetWindowStyleFlag() & wxHORIZONTAL) - pos = "wxHORIZONTAL"; - else - pos = "wxVERTICAL"; - - return new wxProperty("orientation", pos, "string", - new wxStringListValidator(new wxStringList("wxHORIZONTAL", "wxVERTICAL", - NULL))); - } - else if (name == "minValue") - return new wxProperty("minValue", (long)slider->GetMin(), "integer"); - else if (name == "maxValue") - return new wxProperty("maxValue", (long)slider->GetMax(), "integer"); - else - return wxItemPropertyInfo::GetProperty(name); -} - -bool wxSliderPropertyInfo::SetProperty(wxString& name, wxProperty *property) -{ - wxSlider *slider = (wxSlider *)m_propertyWindow; - if (name == "value") - { - slider->SetValue((int)property->GetValue().IntegerValue()); - return TRUE; - } - else if (name == "orientation") - { - long windowStyle = slider->GetWindowStyleFlag(); - long oldWindowStyle = windowStyle; - wxString val(property->GetValue().StringValue()); - if (val == "wxHORIZONTAL") - { - if (windowStyle & wxVERTICAL) - windowStyle -= wxVERTICAL; - windowStyle |= wxHORIZONTAL; - } - else - { - if (windowStyle & wxHORIZONTAL) - windowStyle -= wxHORIZONTAL; - windowStyle |= wxVERTICAL; - } - - if (oldWindowStyle == windowStyle) - return TRUE; - - slider->SetWindowStyleFlag(windowStyle); - - // If the window style has changed, we swap the width and height parameters. - int w, h; - slider->GetSize(&w, &h); - - slider = (wxSlider *)wxResourceManager::GetCurrentResourceManager()->RecreateWindowFromResource(slider, this); - slider->SetSize(-1, -1, h, w); - - return TRUE; - } - else if (name == "minValue") - { - slider->SetRange((int)property->GetValue().IntegerValue(), slider->GetMax()); - return TRUE; - } - else if (name == "maxValue") - { - slider->SetRange(slider->GetMin(), (int)property->GetValue().IntegerValue()); - return TRUE; - } - else - return wxItemPropertyInfo::SetProperty(name, property); -} - -void wxSliderPropertyInfo::GetPropertyNames(wxStringList& names) -{ - wxItemPropertyInfo::GetPropertyNames(names); - names.Add("value"); - names.Add("orientation"); - names.Add("minValue"); - names.Add("maxValue"); -} - -bool wxSliderPropertyInfo::InstantiateResource(wxItemResource *resource) -{ - wxSlider *slider = (wxSlider *)m_propertyWindow; - resource->SetValue1(slider->GetValue()); - resource->SetValue2(slider->GetMin()); - resource->SetValue3(slider->GetMax()); - return wxItemPropertyInfo::InstantiateResource(resource); -} - -/* - * Gauge item - */ - -wxProperty *wxGaugePropertyInfo::GetProperty(wxString& name) -{ - wxGauge *gauge = (wxGauge *)m_propertyWindow; - if (name == "value") - return new wxProperty("value", (long)gauge->GetValue(), "integer"); - else if (name == "maxValue") - return new wxProperty("maxValue", (long)gauge->GetRange(), "integer"); - else - return wxItemPropertyInfo::GetProperty(name); -} - -bool wxGaugePropertyInfo::SetProperty(wxString& name, wxProperty *property) -{ - wxGauge *gauge = (wxGauge *)m_propertyWindow; - if (name == "value") - { - gauge->SetValue((int)property->GetValue().IntegerValue()); - return TRUE; - } - else if (name == "maxValue") - { - gauge->SetRange((int)property->GetValue().IntegerValue()); - return TRUE; - } - else - return wxItemPropertyInfo::SetProperty(name, property); -} - -void wxGaugePropertyInfo::GetPropertyNames(wxStringList& names) -{ - wxItemPropertyInfo::GetPropertyNames(names); - names.Add("value"); - names.Add("maxValue"); -} - -bool wxGaugePropertyInfo::InstantiateResource(wxItemResource *resource) -{ - wxGauge *gauge = (wxGauge *)m_propertyWindow; - resource->SetValue1(gauge->GetValue()); - resource->SetValue2(gauge->GetRange()); - return wxItemPropertyInfo::InstantiateResource(resource); -} - -/* - * Scrollbar item - */ - -wxProperty *wxScrollBarPropertyInfo::GetProperty(wxString& name) -{ - wxScrollBar *scrollBar = (wxScrollBar *)m_propertyWindow; - if (name == "thumbPosition") - return new wxProperty("value", (long)scrollBar->GetThumbPosition(), "integer"); - else if (name == "orientation") - { - char *pos = NULL; - if (m_propertyWindow->GetWindowStyleFlag() & wxHORIZONTAL) - pos = "wxHORIZONTAL"; - else - pos = "wxVERTICAL"; - - return new wxProperty("orientation", pos, "string", - new wxStringListValidator(new wxStringList("wxHORIZONTAL", "wxVERTICAL", - NULL))); - } - else if (name == "pageSize") - { - int pageLength = scrollBar->GetPageSize(); - - return new wxProperty("pageSize", (long)pageLength, "integer"); - } - else if (name == "thumbSize") - { - int thumbSize = scrollBar->GetThumbSize(); - - return new wxProperty("thumbSize", (long)thumbSize, "integer"); - } - else if (name == "range") - { - int range = scrollBar->GetRange(); - return new wxProperty("range", (long)range, "integer"); - } - else - return wxItemPropertyInfo::GetProperty(name); -} - -bool wxScrollBarPropertyInfo::SetProperty(wxString& name, wxProperty *property) -{ - wxScrollBar *scrollBar = (wxScrollBar *)m_propertyWindow; - if (name == "thumbPosition") - { - scrollBar->SetThumbPosition((int)property->GetValue().IntegerValue()); - return TRUE; - } - else if (name == "orientation") - { - long windowStyle = scrollBar->GetWindowStyleFlag(); - long oldWindowStyle = windowStyle; - wxString val(property->GetValue().StringValue()); - if (val == "wxHORIZONTAL") - { - if (windowStyle & wxVERTICAL) - windowStyle -= wxVERTICAL; - windowStyle |= wxHORIZONTAL; - } - else - { - if (windowStyle & wxHORIZONTAL) - windowStyle -= wxHORIZONTAL; - windowStyle |= wxVERTICAL; - } - - if (oldWindowStyle == windowStyle) - return TRUE; - - scrollBar->SetWindowStyleFlag(windowStyle); - - // If the window style has changed, we swap the width and height parameters. -// int w, h; -// scrollBar->GetSize(&w, &h); - wxItemResource *item = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(scrollBar); - if ( item ) { - item->SetSize(item->GetX(), item->GetY(), item->GetHeight(), item->GetWidth()); - item->SetStyle(windowStyle); - } /* IF */ - - scrollBar = (wxScrollBar *)wxResourceManager::GetCurrentResourceManager()->RecreateWindowFromResource(scrollBar, this); - - return TRUE; - } - else if (name == "pageSize") - { - int pos = scrollBar->GetThumbPosition(); - int range = scrollBar->GetRange(); - int thumbSize = scrollBar->GetThumbSize(); - scrollBar->SetScrollbar(pos, thumbSize, range, (int)property->GetValue().IntegerValue()); - return TRUE; - } - else if (name == "thumbSize") - { - int pos = scrollBar->GetThumbPosition(); - int range = scrollBar->GetRange(); - int pageSize = scrollBar->GetPageSize(); - scrollBar->SetScrollbar(pos, (int)property->GetValue().IntegerValue(), range, pageSize); - return TRUE; - } - else if (name == "range") - { - int pos = scrollBar->GetThumbPosition(); - int thumbSize = scrollBar->GetThumbSize(); - int pageSize = scrollBar->GetPageSize(); - scrollBar->SetScrollbar(pos, thumbSize, (int)property->GetValue().IntegerValue(), pageSize); - return TRUE; - } - else - return wxItemPropertyInfo::SetProperty(name, property); -} - -void wxScrollBarPropertyInfo::GetPropertyNames(wxStringList& names) -{ - wxItemPropertyInfo::GetPropertyNames(names); - names.Add("orientation"); - names.Add("thumbPosition"); - names.Add("thumbSize"); - names.Add("pageSize"); - names.Add("range"); - - // Remove some properties we don't inherit - names.Delete("fontPoints"); - names.Delete("fontFamily"); - names.Delete("fontStyle"); - names.Delete("fontWeight"); - names.Delete("fontUnderlined"); -} - -bool wxScrollBarPropertyInfo::InstantiateResource(wxItemResource *resource) -{ - wxScrollBar *sbar = (wxScrollBar *)m_propertyWindow; - - int thumbPosition = sbar->GetThumbPosition(); - int thumbSize = sbar->GetThumbSize(); - int pageSize = sbar->GetPageSize(); - int range = sbar->GetRange(); - - resource->SetValue1(thumbPosition); - resource->SetValue2(thumbSize); - resource->SetValue3(range); - resource->SetValue5(pageSize); - - return wxItemPropertyInfo::InstantiateResource(resource); -} - -/* - * Panels - */ - -wxProperty *wxPanelPropertyInfo::GetProperty(wxString& name) -{ - wxPanel *panelWindow = (wxPanel *)m_propertyWindow; - -/* - wxFont *labelFont = panelWindow->GetLabelFont(); - wxFont *buttonFont = panelWindow->GetButtonFont(); - - if (name == "labelFontPoints" || name == "labelFontFamily" || name == "labelFontStyle" || name == "labelFontWeight" || - name == "labelFontUnderlined") - return GetFontProperty(name, labelFont); - else if (name == "buttonFontPoints" || name == "buttonFontFamily" || name == "buttonFontStyle" || name == "buttonFontWeight" || - name == "buttonFontUnderlined") - return GetFontProperty(name, buttonFont); -*/ - - if (name == "no3D") - { - bool userColours; - if (panelWindow->GetWindowStyleFlag() & wxNO_3D) - userColours = TRUE; - else - userColours = FALSE; - - return new wxProperty(name, (bool)userColours, "bool"); - } - else if (name == "backgroundColour") - { - wxColour col(panelWindow->GetBackgroundColour()); - char buf[7]; - wxDecToHex(col.Red(), buf); - wxDecToHex(col.Green(), buf+2); - wxDecToHex(col.Blue(), buf+4); - - return new wxProperty(name, buf, "string", new wxColourListValidator); - } - else if (name == "title") - { - wxItemResource *resource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(panelWindow); - if (resource) - return new wxProperty(name, resource->GetTitle(), "string"); - else - return new wxProperty(name, "Could not get title", "string"); - } - else if (name == "caption") - { - return new wxProperty(name, ((panelWindow->GetWindowStyleFlag() & wxCAPTION) == wxCAPTION), - "bool"); - } - else if (name == "systemMenu") - { - return new wxProperty(name, ((panelWindow->GetWindowStyleFlag() & wxSYSTEM_MENU) == wxSYSTEM_MENU), - "bool"); - } - else if (name == "thickFrame") - { - return new wxProperty(name, ((panelWindow->GetWindowStyleFlag() & wxTHICK_FRAME) == wxTHICK_FRAME), - "bool"); - } - else if (name == "useSystemDefaults") - { - wxItemResource *resource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(panelWindow); - return new wxProperty(name, ((resource->GetResourceStyle() & wxRESOURCE_USE_DEFAULTS) == wxRESOURCE_USE_DEFAULTS), - "bool"); - } - else if (name == "useDialogUnits") - { - wxItemResource *resource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(panelWindow); - return new wxProperty(name, ((resource->GetResourceStyle() & wxRESOURCE_DIALOG_UNITS) == wxRESOURCE_DIALOG_UNITS), - "bool"); - } - else - return wxWindowPropertyInfo::GetProperty(name); -} - -bool wxPanelPropertyInfo::SetProperty(wxString& name, wxProperty *property) -{ - wxPanel *panelWindow = (wxPanel *)m_propertyWindow; -/* - wxFont *labelFont = panelWindow->GetLabelFont(); - wxFont *buttonFont = panelWindow->GetButtonFont(); - - if (labelFont && (name == "labelFontPoints" || name == "labelFontFamily" || name == "labelFontStyle" || name == "labelFontWeight" || name == "labelFontUnderlined" )) - { - wxFont *newFont = SetFontProperty(name, property, labelFont); - if (newFont) - panelWindow->SetLabelFont(* newFont); - return TRUE; - } - else if (buttonFont && (name == "buttonFontPoints" || name == "buttonFontFamily" || name == "buttonFontStyle" || name == "buttonFontWeight" || name == "buttonFontUnderlined" )) - { - wxFont *newFont = SetFontProperty(name, property, buttonFont); - if (newFont) - panelWindow->SetButtonFont(* newFont); - return TRUE; - } -*/ - - if (name == "no3D") - { - bool userColours = property->GetValue().BoolValue(); - - if (userColours) - { - if ((panelWindow->GetWindowStyleFlag() & wxNO_3D) != wxNO_3D) - panelWindow->SetWindowStyleFlag(panelWindow->GetWindowStyleFlag() | wxNO_3D); - } - else - { - if ((panelWindow->GetWindowStyleFlag() & wxNO_3D) == wxNO_3D) - panelWindow->SetWindowStyleFlag(panelWindow->GetWindowStyleFlag() - wxNO_3D); - } - wxItemResource *resource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(panelWindow); - resource->SetStyle(panelWindow->GetWindowStyleFlag()); - - panelWindow = (wxPanel *)wxResourceManager::GetCurrentResourceManager()->RecreateWindowFromResource(panelWindow, this); - return TRUE; - } - else if (name == "backgroundColour") - { - char *hex = property->GetValue().StringValue(); - int r = wxHexToDec(hex); - int g = wxHexToDec(hex+2); - int b = wxHexToDec(hex+4); - - wxColour col(r,g,b); - panelWindow->SetBackgroundColour(col); - panelWindow = (wxPanel *)wxResourceManager::GetCurrentResourceManager()->RecreateWindowFromResource(panelWindow, this); - return TRUE; - } - else if (name == "title") - { - wxItemResource *resource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(panelWindow); - if (resource) - { - resource->SetTitle(property->GetValue().StringValue()); - return TRUE; - } - else - return FALSE; - } - else if (name == "caption") - { - SetWindowStyle(panelWindow, wxCAPTION, property->GetValue().BoolValue()); - - wxItemResource *resource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(panelWindow); - resource->SetStyle(panelWindow->GetWindowStyleFlag()); - return TRUE; - } - else if (name == "thickFrame") - { - SetWindowStyle(panelWindow, wxTHICK_FRAME, property->GetValue().BoolValue()); - - wxItemResource *resource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(panelWindow); - resource->SetStyle(panelWindow->GetWindowStyleFlag()); - return TRUE; - } - else if (name == "systemMenu") - { - SetWindowStyle(panelWindow, wxSYSTEM_MENU, property->GetValue().BoolValue()); - - wxItemResource *resource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(panelWindow); - resource->SetStyle(panelWindow->GetWindowStyleFlag()); - return TRUE; - } - else if (name == "useSystemDefaults") - { - wxItemResource *resource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(panelWindow); - bool useDefaults = property->GetValue().BoolValue(); - long style = resource->GetResourceStyle(); - if (useDefaults) - { - if ((style & wxRESOURCE_USE_DEFAULTS) == 0) - style |= wxRESOURCE_USE_DEFAULTS; - } - else - { - if ((style & wxRESOURCE_USE_DEFAULTS) != 0) - style -= wxRESOURCE_USE_DEFAULTS; - } - resource->SetResourceStyle(style); - panelWindow = (wxPanel *)wxResourceManager::GetCurrentResourceManager()->RecreateWindowFromResource(panelWindow, this); - return TRUE; - } - else if (name == "useDialogUnits") - { - wxItemResource *resource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(panelWindow); - bool useDialogUnits = property->GetValue().BoolValue(); - long style = resource->GetResourceStyle(); - if (useDialogUnits) - { - if ((style & wxRESOURCE_DIALOG_UNITS) == 0) - { - style |= wxRESOURCE_DIALOG_UNITS; - ConvertDialogUnits(TRUE); // Convert all resources - } - } - else - { - if ((style & wxRESOURCE_DIALOG_UNITS) != 0) - { - style -= wxRESOURCE_DIALOG_UNITS; - ConvertDialogUnits(FALSE); // Convert all resources - } - } - resource->SetResourceStyle(style); - panelWindow = (wxPanel *)wxResourceManager::GetCurrentResourceManager()->RecreateWindowFromResource(panelWindow, this); - // TODO: need to regenerate the width and height properties else they'll be inconsistent. - return TRUE; - } - else - return wxWindowPropertyInfo::SetProperty(name, property); -} - -void wxPanelPropertyInfo::GetPropertyNames(wxStringList& names) -{ - wxWindowPropertyInfo::GetPropertyNames(names); - - names.Add("title"); - names.Add("no3D"); - names.Add("backgroundColour"); - names.Add("caption"); - names.Add("systemMenu"); - names.Add("thickFrame"); - names.Add("useSystemDefaults"); - names.Add("useDialogUnits"); -} - -bool wxPanelPropertyInfo::InstantiateResource(wxItemResource *resource) -{ - wxPanel *panel = (wxPanel *)m_propertyWindow; - if (panel->GetFont().Ok()) - resource->SetFont(* wxTheFontList->FindOrCreateFont(panel->GetFont().GetPointSize(), - panel->GetFont().GetFamily(), panel->GetFont().GetStyle(), panel->GetFont().GetWeight(), - panel->GetFont().GetUnderlined(), panel->GetFont().GetFaceName())); - - resource->SetBackgroundColour(wxColour(panel->GetBackgroundColour())); - - return wxWindowPropertyInfo::InstantiateResource(resource); -} - -// Convert this dialog, and its children, to or from dialog units -void wxPanelPropertyInfo::ConvertDialogUnits(bool toDialogUnits) -{ - wxItemResource *resource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(m_propertyWindow); - - wxPoint pt; - wxSize sz; - if (toDialogUnits) - { - sz = m_propertyWindow->ConvertPixelsToDialog(wxSize(resource->GetWidth(), resource->GetHeight())); - pt = m_propertyWindow->ConvertPixelsToDialog(wxPoint(resource->GetX(), resource->GetY())); - } - else - { - sz = m_propertyWindow->ConvertDialogToPixels(wxSize(resource->GetWidth(), resource->GetHeight())); - pt = m_propertyWindow->ConvertDialogToPixels(wxPoint(resource->GetX(), resource->GetY())); - } - resource->SetSize(pt.x, pt.y, sz.x, sz.y); - - wxNode* node = m_propertyWindow->GetChildren().First(); - while (node) - { - wxWindow* child = (wxWindow*) node->Data(); - if (child->IsKindOf(CLASSINFO(wxControl))) - { - resource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(child); - if (toDialogUnits) - { - sz = m_propertyWindow->ConvertPixelsToDialog(wxSize(resource->GetWidth(), resource->GetHeight())); - pt = m_propertyWindow->ConvertPixelsToDialog(wxPoint(resource->GetX(), resource->GetY())); - } - else - { - sz = m_propertyWindow->ConvertDialogToPixels(wxSize(resource->GetWidth(), resource->GetHeight())); - pt = m_propertyWindow->ConvertDialogToPixels(wxPoint(resource->GetX(), resource->GetY())); - } - resource->SetSize(pt.x, pt.y, sz.x, sz.y); - } - node = node->Next(); - } -} - -#if 0 -/* - * Dialog boxes - */ - -wxProperty *wxDialogPropertyInfo::GetProperty(wxString& name) -{ - wxDialog *dialogWindow = (wxDialog *)m_propertyWindow; - if (name == "modal") - { - wxItemResource *resource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(dialogWindow); - if (!resource) - return NULL; - - bool modal = (resource->GetValue1() != 0); - return new wxProperty(name, modal, "bool"); - } - else - return wxPanelPropertyInfo::GetProperty(name); -} - -bool wxDialogPropertyInfo::SetProperty(wxString& name, wxProperty *property) -{ - wxDialog *dialogWindow = (wxDialog *)m_propertyWindow; - - if (name == "modal") - { - wxItemResource *resource = wxResourceManager::GetCurrentResourceManager()->FindResourceForWindow(dialogWindow); - if (!resource) - return FALSE; - - resource->SetValue1(property->GetValue().BoolValue()); - return TRUE; - } - else - return wxPanelPropertyInfo::SetProperty(name, property); -} - -void wxDialogPropertyInfo::GetPropertyNames(wxStringList& names) -{ - wxPanelPropertyInfo::GetPropertyNames(names); - names.Add("title"); - names.Add("modal"); -} - -bool wxDialogPropertyInfo::InstantiateResource(wxItemResource *resource) -{ - wxDialog *dialog = (wxDialog *)m_propertyWindow; - wxString str(dialog->GetTitle()); - resource->SetTitle(str); - - return wxPanelPropertyInfo::InstantiateResource(resource); -} -#endif - -/* - * Utilities - */ - -int wxStringToFontWeight(wxString& val) -{ - if (val == "wxBOLD") return wxBOLD; - else if (val == "wxLIGHT") return wxLIGHT; - else return wxNORMAL; -} - -int wxStringToFontStyle(wxString& val) -{ - if (val == "wxITALIC") return wxITALIC; - else if (val == "wxSLANT") return wxSLANT; - else return wxNORMAL; -} - -int wxStringToFontFamily(wxString& val) -{ - if (val == "wxDECORATIVE") return wxDECORATIVE; - else if (val == "wxROMAN") return wxROMAN; - else if (val == "wxSCRIPT") return wxSCRIPT; - else if (val == "wxMODERN") return wxMODERN; - else if (val == "wxTELETYPE") return wxTELETYPE; - else return wxSWISS; -} - -/// -/// Resource symbol validator -/// -IMPLEMENT_DYNAMIC_CLASS(wxResourceSymbolValidator, wxPropertyListValidator) - -wxResourceSymbolValidator::wxResourceSymbolValidator(long flags): - wxPropertyListValidator(flags) -{ -} - -wxResourceSymbolValidator::~wxResourceSymbolValidator(void) -{ -} - -bool wxResourceSymbolValidator::OnCheckValue(wxProperty *WXUNUSED(property), wxPropertyListView *WXUNUSED(view), wxWindow *WXUNUSED(parentWindow)) -{ - return TRUE; -} - -// Called when TICK is pressed or focus is lost or view wants to update -// the property list. -// Does the transferance from the property editing area to the property itself -bool wxResourceSymbolValidator::OnRetrieveValue(wxProperty *property, wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow)) -{ - if (!view->GetValueText()) - return FALSE; - wxString value(view->GetValueText()->GetValue()); - property->GetValue() = value ; - return TRUE; -} - -// Called when TICK is pressed or focus is lost or view wants to update -// the property list. -// Does the transferance from the property editing area to the property itself -bool wxResourceSymbolValidator::OnDisplayValue(wxProperty *property, wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow)) -{ - if (!view->GetValueText()) - return FALSE; - wxString str(property->GetValue().GetStringRepresentation()); - view->GetValueText()->SetValue(str); - return TRUE; -} - -// Called when the property is double clicked. Extra functionality can be provided, -// cycling through possible values. -bool wxResourceSymbolValidator::OnDoubleClick(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow) -{ - if (!view->GetValueText()) - return FALSE; - OnEdit(property, view, parentWindow); - return TRUE; -} - -bool wxResourceSymbolValidator::OnPrepareControls(wxProperty *WXUNUSED(property), wxPropertyListView *view, wxWindow *WXUNUSED(parentWindow)) -{ - if (view->GetConfirmButton()) - view->GetConfirmButton()->Enable(TRUE); - if (view->GetCancelButton()) - view->GetCancelButton()->Enable(TRUE); - if (view->GetEditButton()) - view->GetEditButton()->Enable(TRUE); - if (view->GetValueText()) - view->GetValueText()->Enable((GetFlags() & wxPROP_ALLOW_TEXT_EDITING) == wxPROP_ALLOW_TEXT_EDITING); - return TRUE; -} - -void wxResourceSymbolValidator::OnEdit(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow) -{ - if (!view->GetValueText()) - return; - - wxResourceSymbolDialog* dialog = new wxResourceSymbolDialog(parentWindow, -1, "Edit Symbol"); - - // Split name/id pair e.g. "IDC_TEXT=123" - wxString value(property->GetValue().StringValue()); - - wxString strName = value.Before('='); - wxString strId = value.After('='); - - dialog->SetSymbol(strName); - dialog->SetId(atoi(strId)); - - dialog->Init(); - - if (dialog->ShowModal() == wxID_OK) - { - wxString symbolName(dialog->GetSymbol()); - long id = dialog->GetId(); - dialog->Destroy(); - - wxString str; - str.Printf("%d", id); - property->GetValue() = symbolName + wxString("=") + str; - - view->DisplayProperty(property); - view->UpdatePropertyDisplayInList(property); - view->OnPropertyChanged(property); - } -} - -BEGIN_EVENT_TABLE(wxResourceSymbolDialog, wxDialog) - EVT_BUTTON(wxID_OK, wxResourceSymbolDialog::OnOK) - EVT_COMBOBOX(ID_SYMBOLNAME_COMBOBOX, wxResourceSymbolDialog::OnComboBoxSelect) - EVT_TEXT(ID_SYMBOLNAME_COMBOBOX, wxResourceSymbolDialog::OnSymbolNameUpdate) -END_EVENT_TABLE() - -wxResourceSymbolDialog::wxResourceSymbolDialog(wxWindow* parent, const wxWindowID id, const wxString& title, const wxPoint& pos, - const wxSize& size, long style): - wxDialog(parent, id, title, pos, size, style) -{ - int x = 5; - int y = 5; - - (void) new wxStaticText(this, -1, "Name: ", wxPoint(x, y)); - - x += 80; - - m_nameCtrl = new wxComboBox(this, ID_SYMBOLNAME_COMBOBOX, "", - wxPoint(x, y), wxSize(200, -1), 0, NULL, wxCB_DROPDOWN|wxCB_SORT); - - y += 30; - x = 5; - - (void) new wxStaticText(this, -1, "Id: ", wxPoint(x, y)); - - x += 80; - - m_idCtrl = new wxTextCtrl(this, ID_SYMBOLID_TEXTCTRL, "", - wxPoint(x, y), wxSize(200, -1)); - - y += 30; - x = 5; - (void) new wxButton(this, wxID_OK, "OK", wxPoint(x, y), wxSize(80, -1)); - - x += 100; - (void) new wxButton(this, wxID_CANCEL, "Cancel", wxPoint(x, y), wxSize(80, -1)); - - Fit(); - Centre(); -} - -void wxResourceSymbolDialog::Init() -{ - wxString defaultId; - defaultId.Printf("%ld", m_symbolId); - - m_nameCtrl->SetValue(m_symbolName); - m_idCtrl->SetValue(defaultId); - - wxResourceManager::GetCurrentResourceManager()->GetSymbolTable().FillComboBox(m_nameCtrl); -} - -void wxResourceSymbolDialog::OnOK(wxCommandEvent& event) -{ - if (CheckValues()) - { - wxDialog::OnOK(event); - } -} - -bool wxResourceSymbolDialog::CheckValues() -{ - wxString nameStr(m_nameCtrl->GetValue()); - wxString idStr(m_idCtrl->GetValue()); - int id = atoi(idStr); - - if (id <= 0 ) - { - wxMessageBox("Identifier cannot be missing or zero", "Dialog Editor", wxOK|wxICON_EXCLAMATION, this); - return FALSE; - } - if (nameStr == "") - { - wxMessageBox("Please enter a symbol name", "Dialog Editor", wxOK|wxICON_EXCLAMATION, this); - return FALSE; - } - if (nameStr.Contains(" ")) - { - wxMessageBox("Symbol name cannot contain spaces.", "Dialog Editor", wxOK|wxICON_EXCLAMATION, this); - return FALSE; - } - if (nameStr.Contains("=")) - { - wxMessageBox("Symbol name cannot contain =.", "Dialog Editor", wxOK|wxICON_EXCLAMATION, this); - return FALSE; - } - if (nameStr.IsNumber()) - { - wxMessageBox("Symbol name cannot be a number.", "Dialog Editor", wxOK|wxICON_EXCLAMATION, this); - return FALSE; - } - // TODO: other checks on the name syntax. - - if (!wxResourceManager::GetCurrentResourceManager()->GetSymbolTable().IsStandardSymbol(nameStr)) - { - // If we change the id for an existing symbol, we need to: - // 1) Check if there are any other resources currently using the original id. - // If so, will need to change their id to the new id, in SetProperty. - // 2) Remove the old symbol, add the new symbol. - // In this check, we don't have to do this, but we need to do it in SetProperty. - - if (nameStr == GetSymbol() && id != GetId()) - { - // It's OK to change the id. But we'll need to change all matching ids in all resources, - // in SetProperty. - } - - // If we change the name but not the id... we'll just need to remove and - // re-add the symbol/id pair, in SetProperty. - if (nameStr != GetSymbol() && id == GetId()) - { - } - - // What if we're changing both the name and the id? - // - if there's no symbol of that name, just remove the old, add the new (in SetProperty) - // - if there is a symbol of that name, if id matches, do nothing. If not, veto. - - if (nameStr != GetSymbol() && id != GetId()) - { - if (!wxResourceManager::GetCurrentResourceManager()->IsIdentifierOK(nameStr, id)) - { - wxMessageBox("This integer id is already being used under a different name.\nPlease choose another.", - "Dialog Editor", wxOK|wxICON_EXCLAMATION, this); - return FALSE; - } - } - - } - - SetSymbol(nameStr); - SetId(id); - - return TRUE; -} - -void wxResourceSymbolDialog::OnComboBoxSelect(wxCommandEvent& WXUNUSED(event)) -{ - wxString str(m_nameCtrl->GetStringSelection()); - if (wxResourceManager::GetCurrentResourceManager()->GetSymbolTable().IsStandardSymbol(str)) - { - int id = wxResourceManager::GetCurrentResourceManager()->GetSymbolTable().GetIdForSymbol(str); - wxString str2; - str2.Printf("%d", id); - m_idCtrl->SetValue(str2); - m_idCtrl->Enable(FALSE); - } - else - { - if (wxResourceManager::GetCurrentResourceManager()->GetSymbolTable().SymbolExists(str)) - { - int id = wxResourceManager::GetCurrentResourceManager()->GetSymbolTable().GetIdForSymbol(str); - wxString str2; - str2.Printf("%d", id); - m_idCtrl->SetValue(str2); - } - m_idCtrl->Enable(TRUE); - } -} - -void wxResourceSymbolDialog::OnSymbolNameUpdate(wxCommandEvent& WXUNUSED(event)) -{ - wxString str(m_nameCtrl->GetValue()); - if (wxResourceManager::GetCurrentResourceManager()->GetSymbolTable().IsStandardSymbol(str)) - { - int id = wxResourceManager::GetCurrentResourceManager()->GetSymbolTable().GetIdForSymbol(str); - wxString str2; - str2.Printf("%d", id); - m_idCtrl->SetValue(str2); - m_idCtrl->Enable(FALSE); - } - else - { - if (wxResourceManager::GetCurrentResourceManager()->GetSymbolTable().SymbolExists(str)) - { - int id = wxResourceManager::GetCurrentResourceManager()->GetSymbolTable().GetIdForSymbol(str); - wxString str2; - str2.Printf("%d", id); - m_idCtrl->SetValue(str2); - } - m_idCtrl->Enable(TRUE); - } -} - diff --git a/utils/dialoged/src/winprop.h b/utils/dialoged/src/winprop.h deleted file mode 100644 index 197963d61a..0000000000 --- a/utils/dialoged/src/winprop.h +++ /dev/null @@ -1,420 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: winprop.h -// Purpose: Window properties -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WINPROP_H_ -#define _WINPROP_H_ - -#ifdef __GNUG__ -#pragma interface "winprop.h" -#endif - -#include "reseditr.h" - -class wxPropertyInfo; - -class wxDialogEditorPropertyListFrame: public wxPropertyListFrame -{ - friend class wxPropertyInfo; -public: - wxDialogEditorPropertyListFrame(wxPropertyListView *v, wxFrame *parent, const wxString& title, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE, const wxString& name = "frame"); - ~wxDialogEditorPropertyListFrame(); - -private: - wxPropertySheet* m_propSheet; - wxPropertyValidatorRegistry m_registry; - wxPropertyInfo* m_propInfo; -}; - -// A kind of property list view that intercepts OnPropertyChanged -// feedback. -class wxResourcePropertyListView: public wxPropertyListView -{ - public: - wxResourcePropertyListView(wxPropertyInfo *info, wxPanel *propPanel = NULL, long flags = wxPROP_BUTTON_DEFAULT): - wxPropertyListView(propPanel, flags) - { - m_propertyInfo = info; - } - void OnPropertyChanged(wxProperty *property); - bool OnClose(void); - - wxPropertyInfo* m_propertyInfo; - -}; - -// Generic class for relating an object to a collection of properties. -// Instead of defining new functions like wxButton::GetProperty, wxButton::SetProperty, -// we take these functions out into of the wxWindows library and associate -// them with separate classes. -class wxPropertyInfo: public wxObject -{ - friend class wxDialogEditorPropertyListFrame; - protected: - static wxWindow *sm_propertyWindow; - wxPropertyInfo(void) - { - } - ~wxPropertyInfo(void) - { - } - public: - virtual wxProperty *GetProperty(wxString& propName) = 0; - virtual bool SetProperty(wxString& propName, wxProperty *property) = 0; - virtual void GetPropertyNames(wxStringList& names) = 0; - virtual bool Edit(wxWindow *parent, const wxString& title); -}; - -// For all windows -class wxWindowPropertyInfo: public wxPropertyInfo -{ - public: - wxWindowPropertyInfo(wxWindow *win, wxItemResource *res = NULL); - ~wxWindowPropertyInfo(void); - wxProperty *GetProperty(wxString& name); - bool SetProperty(wxString& name, wxProperty *property); - void GetPropertyNames(wxStringList& names); - - inline void SetPropertyWindow(wxWindow *win) { m_propertyWindow = win; } - - inline void SetResource(wxItemResource *res) { m_propertyResource = res; } - - // Helper functions for font properties - - wxProperty *GetFontProperty(wxString& name, wxFont *font); - wxFont *SetFontProperty(wxString& name, wxProperty *property, wxFont *oldFont); - - // Fill in the wxItemResource members to mirror the current window settings - virtual bool InstantiateResource(wxItemResource *resource); - - // Set the window style - void SetWindowStyle(wxWindow* win, long style, bool set); - - protected: - wxWindow* m_propertyWindow; - wxItemResource* m_propertyResource; -}; - -// For panel items -class wxItemPropertyInfo: public wxWindowPropertyInfo -{ - protected: - public: - wxItemPropertyInfo(wxWindow *win, wxItemResource *res = NULL): - wxWindowPropertyInfo(win, res) {} - ~wxItemPropertyInfo(void) {} - wxProperty *GetProperty(wxString& name); - bool SetProperty(wxString& name, wxProperty *property); - void GetPropertyNames(wxStringList& names); - bool InstantiateResource(wxItemResource *resource); -}; - -// For buttons -class wxButtonPropertyInfo: public wxItemPropertyInfo -{ - protected: - public: - wxButtonPropertyInfo(wxWindow *win, wxItemResource *res = NULL): - wxItemPropertyInfo(win, res) { } - ~wxButtonPropertyInfo(void) {} - wxProperty *GetProperty(wxString& name); - bool SetProperty(wxString& name, wxProperty *property); - void GetPropertyNames(wxStringList& names); - bool InstantiateResource(wxItemResource *resource); -}; - -// For bitmap buttons -class wxBitmapButtonPropertyInfo: public wxButtonPropertyInfo -{ - protected: - public: - wxBitmapButtonPropertyInfo(wxWindow *win, wxItemResource *res = NULL): - wxButtonPropertyInfo(win, res) { } - ~wxBitmapButtonPropertyInfo(void) {} - wxProperty *GetProperty(wxString& name); - bool SetProperty(wxString& name, wxProperty *property); - void GetPropertyNames(wxStringList& names); - bool InstantiateResource(wxItemResource *resource); -}; - -// For static text controls -class wxStaticTextPropertyInfo: public wxItemPropertyInfo -{ - protected: - public: - wxStaticTextPropertyInfo(wxWindow *win, wxItemResource *res = NULL): - wxItemPropertyInfo(win, res) { } - ~wxStaticTextPropertyInfo(void) {} - wxProperty *GetProperty(wxString& name); - bool SetProperty(wxString& name, wxProperty *property); - void GetPropertyNames(wxStringList& names); - bool InstantiateResource(wxItemResource *resource); -}; - -// For static bitmap controls -class wxStaticBitmapPropertyInfo: public wxItemPropertyInfo -{ - protected: - public: - wxStaticBitmapPropertyInfo(wxWindow *win, wxItemResource *res = NULL): - wxItemPropertyInfo(win, res) { } - ~wxStaticBitmapPropertyInfo(void) {} - wxProperty *GetProperty(wxString& name); - bool SetProperty(wxString& name, wxProperty *property); - void GetPropertyNames(wxStringList& names); - bool InstantiateResource(wxItemResource *resource); -}; - -// For text/multitext items -class wxTextPropertyInfo: public wxItemPropertyInfo -{ - protected: - public: - wxTextPropertyInfo(wxWindow *win, wxItemResource *res = NULL): - wxItemPropertyInfo(win, res) {} - ~wxTextPropertyInfo(void) {} - wxProperty *GetProperty(wxString& name); - bool SetProperty(wxString& name, wxProperty *property); - void GetPropertyNames(wxStringList& names); - bool InstantiateResource(wxItemResource *resource); -}; - -// For list boxes -class wxListBoxPropertyInfo: public wxItemPropertyInfo -{ - protected: - public: - wxListBoxPropertyInfo(wxWindow *win, wxItemResource *res = NULL): - wxItemPropertyInfo(win, res) {} - ~wxListBoxPropertyInfo(void) {} - wxProperty *GetProperty(wxString& name); - bool SetProperty(wxString& name, wxProperty *property); - void GetPropertyNames(wxStringList& names); - bool InstantiateResource(wxItemResource *resource); -}; - -// For choice items -class wxChoicePropertyInfo: public wxItemPropertyInfo -{ - protected: - public: - wxChoicePropertyInfo(wxWindow *win, wxItemResource *res = NULL): - wxItemPropertyInfo(win, res) {} - ~wxChoicePropertyInfo(void) {} - wxProperty *GetProperty(wxString& name); - bool SetProperty(wxString& name, wxProperty *property); - void GetPropertyNames(wxStringList& names); - bool InstantiateResource(wxItemResource *resource); -}; - -// For choice items -class wxComboBoxPropertyInfo: public wxChoicePropertyInfo -{ - protected: - public: - wxComboBoxPropertyInfo(wxWindow *win, wxItemResource *res = NULL): - wxChoicePropertyInfo(win, res) {} - ~wxComboBoxPropertyInfo(void) {} - wxProperty *GetProperty(wxString& name); - bool SetProperty(wxString& name, wxProperty *property); - void GetPropertyNames(wxStringList& names); - bool InstantiateResource(wxItemResource *resource); -}; - -// For radiobox items -class wxRadioBoxPropertyInfo: public wxItemPropertyInfo -{ - protected: - public: - wxRadioBoxPropertyInfo(wxWindow *win, wxItemResource *res = NULL): - wxItemPropertyInfo(win, res) {} - ~wxRadioBoxPropertyInfo(void) {} - wxProperty *GetProperty(wxString& name); - bool SetProperty(wxString& name, wxProperty *property); - void GetPropertyNames(wxStringList& names); - bool InstantiateResource(wxItemResource *resource); -}; - -// For groupbox items -class wxGroupBoxPropertyInfo: public wxItemPropertyInfo -{ - protected: - public: - wxGroupBoxPropertyInfo(wxWindow *win, wxItemResource *res = NULL): - wxItemPropertyInfo(win, res) {} - ~wxGroupBoxPropertyInfo(void) {} - wxProperty *GetProperty(wxString& name); - bool SetProperty(wxString& name, wxProperty *property); - void GetPropertyNames(wxStringList& names); - bool InstantiateResource(wxItemResource *resource); -}; - -// For checkbox items -class wxCheckBoxPropertyInfo: public wxItemPropertyInfo -{ - protected: - public: - wxCheckBoxPropertyInfo(wxWindow *win, wxItemResource *res = NULL): - wxItemPropertyInfo(win, res) {} - ~wxCheckBoxPropertyInfo(void) {} - wxProperty *GetProperty(wxString& name); - bool SetProperty(wxString& name, wxProperty *property); - void GetPropertyNames(wxStringList& names); - bool InstantiateResource(wxItemResource *resource); -}; - -// For radiobutton items -class wxRadioButtonPropertyInfo: public wxItemPropertyInfo -{ - protected: - public: - wxRadioButtonPropertyInfo(wxWindow *win, wxItemResource *res = NULL): - wxItemPropertyInfo(win, res) {} - ~wxRadioButtonPropertyInfo(void) {} - wxProperty *GetProperty(wxString& name); - bool SetProperty(wxString& name, wxProperty *property); - void GetPropertyNames(wxStringList& names); - bool InstantiateResource(wxItemResource *resource); -}; - -// For gauge items -class wxGaugePropertyInfo: public wxItemPropertyInfo -{ - protected: - public: - wxGaugePropertyInfo(wxWindow *win, wxItemResource *res = NULL): - wxItemPropertyInfo(win, res) {} - ~wxGaugePropertyInfo(void) {} - wxProperty *GetProperty(wxString& name); - bool SetProperty(wxString& name, wxProperty *property); - void GetPropertyNames(wxStringList& names); - bool InstantiateResource(wxItemResource *resource); -}; - -// For scrollbar items -class wxScrollBarPropertyInfo: public wxItemPropertyInfo -{ - protected: - public: - wxScrollBarPropertyInfo(wxWindow *win, wxItemResource *res = NULL): - wxItemPropertyInfo(win, res) {} - ~wxScrollBarPropertyInfo(void) {} - wxProperty *GetProperty(wxString& name); - bool SetProperty(wxString& name, wxProperty *property); - void GetPropertyNames(wxStringList& names); - bool InstantiateResource(wxItemResource *resource); -}; - -// For slider items -class wxSliderPropertyInfo: public wxItemPropertyInfo -{ - protected: - public: - wxSliderPropertyInfo(wxWindow *win, wxItemResource *res = NULL): - wxItemPropertyInfo(win, res) {} - ~wxSliderPropertyInfo(void) {} - wxProperty *GetProperty(wxString& name); - bool SetProperty(wxString& name, wxProperty *property); - void GetPropertyNames(wxStringList& names); - bool InstantiateResource(wxItemResource *resource); -}; - -// For panels -class wxPanelPropertyInfo: public wxWindowPropertyInfo -{ - protected: - public: - wxPanelPropertyInfo(wxWindow *win, wxItemResource *res = NULL): - wxWindowPropertyInfo(win, res) {} - ~wxPanelPropertyInfo(void) {} - wxProperty *GetProperty(wxString& name); - bool SetProperty(wxString& name, wxProperty *property); - void GetPropertyNames(wxStringList& names); - bool InstantiateResource(wxItemResource *resource); - - // Convert this dialog, and its children, to or from dialog units - void ConvertDialogUnits(bool toDialogUnits); -}; - -int wxStringToFontWeight(wxString& val); -int wxStringToFontStyle(wxString& val); -int wxStringToFontFamily(wxString& val); - -/* - * A validator to allow editing symbol/id pairs - */ - -class wxResourceSymbolValidator: public wxPropertyListValidator -{ - DECLARE_DYNAMIC_CLASS(wxResourceSymbolValidator) - protected: - public: - wxResourceSymbolValidator(long flags = 0); - - ~wxResourceSymbolValidator(void); - - // Called when TICK is pressed or focus is lost. - // Return FALSE if value didn't check out; signal to restore old value. - bool OnCheckValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - - // Called when TICK is pressed or focus is lost or view wants to update - // the property list. - // Does the transferance from the property editing area to the property itself - bool OnRetrieveValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - bool OnDisplayValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - - bool OnDoubleClick(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - - bool OnPrepareControls(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); - - // Called when the edit (...) button is pressed. - void OnEdit(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow); -}; - -/* - * A dialog for editing symbol/id pairs - */ - -class wxResourceSymbolDialog: public wxDialog -{ -public: - wxResourceSymbolDialog(wxWindow* parent, const wxWindowID id, const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE|wxDIALOG_MODAL); - - void Init(); - - inline void SetSymbol(const wxString& symbol) { m_symbolName = symbol; } - inline void SetId(long id) { m_symbolId = id; } - - inline wxString GetSymbol() const { return m_symbolName; } - inline long GetId() const { return m_symbolId; } - - bool CheckValues(); - void OnOK(wxCommandEvent& event); - void OnComboBoxSelect(wxCommandEvent& event); - void OnSymbolNameUpdate(wxCommandEvent& event); - -protected: - wxString m_symbolName; - long m_symbolId; - wxComboBox* m_nameCtrl; - wxTextCtrl* m_idCtrl; - -DECLARE_EVENT_TABLE() -}; - -#define ID_SYMBOLNAME_COMBOBOX 100 -#define ID_SYMBOLID_TEXTCTRL 101 - -#endif - // _WINPROP_H_ diff --git a/utils/dialoged/src/winstyle.cpp b/utils/dialoged/src/winstyle.cpp deleted file mode 100644 index 6fa29b4b18..0000000000 --- a/utils/dialoged/src/winstyle.cpp +++ /dev/null @@ -1,382 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: winstyle.cpp -// Purpose: Window styles -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "winstyle.h" -#endif - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include -#include -#include -#include - -#include "winstyle.h" - -/* - * Styles - */ - - /* wxListBox */ -static wxWindowStylePair g_WindowStylesListBox[] = { - { "wxLB_SINGLE", wxLB_SINGLE }, - { "wxLB_MULTIPLE", wxLB_MULTIPLE }, - { "wxLB_EXTENDED", wxLB_EXTENDED }, - { "wxLB_NEEDED_SB", wxLB_NEEDED_SB }, - { "wxLB_ALWAYS_SB", wxLB_ALWAYS_SB }, - { "wxLB_SORT", wxLB_SORT }, - { "wxLB_OWNERDRAW", wxLB_OWNERDRAW }, - { "wxLB_HSCROLL", wxLB_HSCROLL } -}; - -int g_WindowStylesListBoxCount = sizeof(g_WindowStylesListBox)/sizeof(wxWindowStylePair) ; - - /* wxComboxBox */ -static wxWindowStylePair g_WindowStylesComboBox[] = { - { "wxCB_SIMPLE", wxCB_SIMPLE }, - { "wxCB_DROPDOWN", wxCB_DROPDOWN }, - { "wxCB_READONLY", wxCB_READONLY }, - { "wxCB_SORT", wxCB_SORT } -}; - -int g_WindowStylesComboBoxCount = sizeof(g_WindowStylesComboBox)/sizeof(wxWindowStylePair) ; - -#if 0 - /* wxChoice */ -static wxWindowStylePair g_WindowStylesChoice[] = { -}; - -int g_WindowStylesChoiceCount = sizeof(g_WindowStylesChoice)/sizeof(wxWindowStylePair) ; -#endif - - /* wxGauge */ -static wxWindowStylePair g_WindowStylesGauge[] = { - { "wxGA_PROGRESSBAR", wxGA_PROGRESSBAR }, - { "wxGA_HORIZONTAL", wxGA_HORIZONTAL }, - { "wxGA_VERTICAL", wxGA_VERTICAL } -}; - -int g_WindowStylesGaugeCount = sizeof(g_WindowStylesGauge)/sizeof(wxWindowStylePair) ; - - /* wxTextCtrl */ -static wxWindowStylePair g_WindowStylesTextCtrl[] = { - { "wxPASSWORD", wxPASSWORD}, - { "wxPROCESS_ENTER", wxPROCESS_ENTER}, - { "wxTE_PASSWORD", wxTE_PASSWORD}, - { "wxTE_READONLY", wxTE_READONLY}, - { "wxTE_PROCESS_ENTER", wxTE_PROCESS_ENTER}, - { "wxTE_MULTILINE", wxTE_MULTILINE} -}; - -int g_WindowStylesTextCtrlCount = sizeof(g_WindowStylesTextCtrl)/sizeof(wxWindowStylePair) ; - - /* wxRadioButton */ -static wxWindowStylePair g_WindowStylesRadioButton[] = { - { "wxRB_GROUP", wxRB_GROUP } -}; - -int g_WindowStylesRadioButtonCount = sizeof(g_WindowStylesRadioButton)/sizeof(wxWindowStylePair) ; - - /* wxRadioBox */ -static wxWindowStylePair g_WindowStylesRadioBox[] = { - { "wxRA_SPECIFY_COLS", wxRA_SPECIFY_COLS }, - { "wxRA_SPECIFY_ROWS", wxRA_SPECIFY_ROWS }, - { "wxRA_HORIZONTAL", wxRA_HORIZONTAL }, - { "wxRA_VERTICAL", wxRA_VERTICAL } -}; - -int g_WindowStylesRadioBoxCount = sizeof(g_WindowStylesRadioBox)/sizeof(wxWindowStylePair) ; - - /* wxSlider */ -static wxWindowStylePair g_WindowStylesSlider[] = { - { "wxSL_HORIZONTAL", wxSL_HORIZONTAL }, - { "wxSL_VERTICAL", wxSL_VERTICAL }, - { "wxSL_AUTOTICKS", wxSL_AUTOTICKS }, - { "wxSL_LABELS", wxSL_LABELS }, - { "wxSL_LEFT", wxSL_LEFT }, - { "wxSL_TOP", wxSL_TOP }, - { "wxSL_RIGHT", wxSL_RIGHT }, - { "wxSL_BOTTOM", wxSL_BOTTOM }, - { "wxSL_BOTH", wxSL_BOTH }, - { "wxSL_SELRANGE", wxSL_SELRANGE } -}; - -int g_WindowStylesSliderCount = sizeof(g_WindowStylesSlider)/sizeof(wxWindowStylePair) ; - - /* wxScrollBar */ -static wxWindowStylePair g_WindowStylesScrollBar[] = { - { "wxSB_HORIZONTAL", wxSB_HORIZONTAL }, - { "wxSB_VERTICAL", wxSB_VERTICAL } -}; - -int g_WindowStylesScrollBarCount = sizeof(g_WindowStylesScrollBar)/sizeof(wxWindowStylePair) ; - - /* wxButton */ -static wxWindowStylePair g_WindowStylesButton[] = { - { "wxBU_AUTODRAW", wxBU_AUTODRAW }, - { "wxBU_NOAUTODRAW", wxBU_NOAUTODRAW } -}; - -int g_WindowStylesButtonCount = sizeof(g_WindowStylesButton)/sizeof(wxWindowStylePair) ; - - /* wxTreeCtrl */ -static wxWindowStylePair g_WindowStylesTreeCtrl[] = { - { "wxTR_HAS_BUTTONS", wxTR_HAS_BUTTONS }, - { "wxTR_EDIT_LABELS", wxTR_EDIT_LABELS }, - { "wxTR_LINES_AT_ROOT", wxTR_LINES_AT_ROOT } -}; - -int g_WindowStylesTreeCtrlCount = sizeof(g_WindowStylesTreeCtrl)/sizeof(wxWindowStylePair) ; - - /* wxListCtrl */ -static wxWindowStylePair g_WindowStylesListCtrl[] = { - { "wxLC_ICON", wxLC_ICON }, - { "wxLC_SMALL_ICON", wxLC_SMALL_ICON }, - { "wxLC_LIST", wxLC_LIST }, - { "wxLC_REPORT", wxLC_REPORT }, - { "wxLC_ALIGN_TOP", wxLC_ALIGN_TOP }, - { "wxLC_ALIGN_LEFT", wxLC_ALIGN_LEFT }, - { "wxLC_AUTOARRANGE", wxLC_AUTOARRANGE }, - { "wxLC_USER_TEXT", wxLC_USER_TEXT }, - { "wxLC_EDIT_LABELS", wxLC_EDIT_LABELS }, - { "wxLC_NO_HEADER", wxLC_NO_HEADER }, - { "wxLC_NO_SORT_HEADER", wxLC_NO_SORT_HEADER }, - { "wxLC_SINGLE_SEL", wxLC_SINGLE_SEL }, - { "wxLC_SORT_ASCENDING", wxLC_SORT_ASCENDING }, - { "wxLC_SORT_DESCENDING", wxLC_SORT_DESCENDING } -}; - -int g_WindowStylesListCtrlCount = sizeof(g_WindowStylesListCtrl)/sizeof(wxWindowStylePair) ; - - /* wxSpinButton */ -static wxWindowStylePair g_WindowStylesSpinButton[] = { - { "wxSP_VERTICAL", wxSP_VERTICAL}, - { "wxSP_HORIZONTAL", wxSP_HORIZONTAL}, - { "wxSP_ARROW_KEYS", wxSP_ARROW_KEYS}, - { "wxSP_WRAP", wxSP_WRAP} -}; - -int g_WindowStylesSpinButtonCount = sizeof(g_WindowStylesSpinButton)/sizeof(wxWindowStylePair) ; - - /* wxSplitterWindow */ -static wxWindowStylePair g_WindowStylesSplitterWindow[] = { - { "wxSP_NOBORDER", wxSP_NOBORDER}, - { "wxSP_3D", wxSP_3D}, - { "wxSP_BORDER", wxSP_BORDER} -}; - -int g_WindowStylesSplitterWindowCount = sizeof(g_WindowStylesSplitterWindow)/sizeof(wxWindowStylePair) ; - - /* wxTabCtrl */ -static wxWindowStylePair g_WindowStylesTabCtrl[] = { - { "wxTC_MULTILINE", wxTC_MULTILINE}, - { "wxTC_RIGHTJUSTIFY", wxTC_RIGHTJUSTIFY}, - { "wxTC_FIXEDWIDTH", wxTC_FIXEDWIDTH}, - { "wxTC_OWNERDRAW", wxTC_OWNERDRAW} -}; - -int g_WindowStylesTabCtrlCount = sizeof(g_WindowStylesTabCtrl)/sizeof(wxWindowStylePair) ; - - /* wxStatusBar95 */ -static wxWindowStylePair g_WindowStylesStatusBar[] = { - { "wxST_SIZEGRIP", wxST_SIZEGRIP} -}; - -int g_WindowStylesStatusBarCount = sizeof(g_WindowStylesStatusBar)/sizeof(wxWindowStylePair) ; - - /* wxControl */ -static wxWindowStylePair g_WindowStylesControl[] = { - { "wxFIXED_LENGTH", wxFIXED_LENGTH}, - { "wxALIGN_LEFT", wxALIGN_LEFT}, - { "wxALIGN_CENTRE", wxALIGN_CENTRE}, - { "wxALIGN_RIGHT", wxALIGN_RIGHT}, - { "wxCOLOURED", wxCOLOURED} -}; - -int g_WindowStylesControlCount = sizeof(g_WindowStylesControl)/sizeof(wxWindowStylePair) ; - - /* wxToolBar */ -static wxWindowStylePair g_WindowStylesToolBar[] = { - { "wxTB_3DBUTTONS", wxTB_3DBUTTONS}, - { "wxTB_HORIZONTAL", wxTB_HORIZONTAL}, - { "wxTB_VERTICAL", wxTB_VERTICAL}, - { "wxTB_FLAT", wxTB_FLAT} -}; - -int g_WindowStylesToolBarCount = sizeof(g_WindowStylesToolBar)/sizeof(wxWindowStylePair) ; - - /* Frame/dialog */ -static wxWindowStylePair g_WindowStylesDialog[] = { - { "wxSTAY_ON_TOP", wxSTAY_ON_TOP}, - { "wxCAPTION", wxCAPTION}, - { "wxICONIZE", wxICONIZE}, - { "wxMINIMIZE", wxICONIZE}, - { "wxMAXIMIZE", wxMAXIMIZE}, - { "wxTHICK_FRAME", wxTHICK_FRAME}, - { "wxRESIZE_BORDER", wxRESIZE_BORDER}, - { "wxSYSTEM_MENU", wxSYSTEM_MENU}, - { "wxMINIMIZE_BOX", wxMINIMIZE_BOX}, - { "wxMAXIMIZE_BOX", wxMAXIMIZE_BOX}, - { "wxRESIZE_BOX", wxRESIZE_BOX} -}; - -int g_WindowStylesDialogCount = sizeof(g_WindowStylesDialog)/sizeof(wxWindowStylePair) ; - - /* Generic */ -static wxWindowStylePair g_WindowStylesWindow[] = { - { "wxBORDER", wxBORDER}, - { "wxDOUBLE_BORDER", wxDOUBLE_BORDER}, - { "wxSUNKEN_BORDER", wxSUNKEN_BORDER}, - { "wxRAISED_BORDER", wxRAISED_BORDER}, - { "wxSIMPLE_BORDER", wxSIMPLE_BORDER}, - { "wxSTATIC_BORDER", wxSTATIC_BORDER}, - { "wxTRANSPARENT_WINDOW", wxTRANSPARENT_WINDOW}, - { "wxNO_BORDER", wxNO_BORDER}, - { "wxCLIP_CHILDREN", wxCLIP_CHILDREN} - -/* Would be duplicated with e.g. wxLB_HSCROLL - { "wxVSCROLL", wxVSCROLL }, - { "wxHSCROLL", wxHSCROLL } -*/ -}; - -int g_WindowStylesWindowCount = sizeof(g_WindowStylesWindow)/sizeof(wxWindowStylePair) ; - -/* - * A table holding all class style objects - */ - - -wxWindowStyleTable::wxWindowStyleTable(): - m_classes(wxKEY_STRING) -{ -} - -wxWindowStyleTable::~wxWindowStyleTable() -{ - ClearTable(); -} - -void wxWindowStyleTable::Init() -{ - AddStyles("wxWindow", g_WindowStylesWindowCount, g_WindowStylesWindow); - AddStyles("wxDialog", g_WindowStylesDialogCount, g_WindowStylesDialog); - AddStyles("wxButton", g_WindowStylesButtonCount, g_WindowStylesButton); - AddStyles("wxTextCtrl", g_WindowStylesTextCtrlCount, g_WindowStylesTextCtrl); - AddStyles("wxSpinButton", g_WindowStylesSpinButtonCount, g_WindowStylesSpinButton); - AddStyles("wxListBox", g_WindowStylesListBoxCount, g_WindowStylesListBox); - AddStyles("wxRadioButton", g_WindowStylesRadioButtonCount, g_WindowStylesRadioButton); - AddStyles("wxRadioBox", g_WindowStylesRadioBoxCount, g_WindowStylesRadioBox); - AddStyles("wxControl", g_WindowStylesControlCount, g_WindowStylesControl); - AddStyles("wxListCtrl", g_WindowStylesListCtrlCount, g_WindowStylesListCtrl); - AddStyles("wxTreeCtrl", g_WindowStylesTreeCtrlCount, g_WindowStylesTreeCtrl); - AddStyles("wxSlider", g_WindowStylesSliderCount, g_WindowStylesSlider); - AddStyles("wxGauge", g_WindowStylesGaugeCount, g_WindowStylesGauge); - AddStyles("wxComboBox", g_WindowStylesComboBoxCount, g_WindowStylesComboBox); -// AddStyles("wxChoice", g_WindowStylesChoice, g_WindowStylesChoice); - AddStyles("wxScrollBar", g_WindowStylesScrollBarCount, g_WindowStylesScrollBar); -} - -// Operations -void wxWindowStyleTable::ClearTable() -{ - wxNode* node = m_classes.First(); - while (node) - { - wxWindowStyleClass* styleClass = (wxWindowStyleClass*) node->Data(); - delete styleClass; - node = node->Next(); - } - m_classes.Clear(); -} - -void wxWindowStyleTable::AddStyles(const wxString& className, int n, wxWindowStylePair *styles) -{ - wxWindowStyleClass* styleClass = new wxWindowStyleClass(n, styles); - m_classes.Append(className, styleClass); -} - -wxWindowStyleClass* wxWindowStyleTable::FindClass(const wxString& className) -{ - wxNode* node = m_classes.Find(className); - if (node) - { - wxWindowStyleClass* styleClass = (wxWindowStyleClass*) node->Data(); - return styleClass; - } - else - return NULL; -} - -bool wxWindowStyleTable::GenerateStyleStrings(const wxString& className, long windowStyle, char *buf) -{ - wxWindowStyleClass* styleClass = FindClass(className); - if (!styleClass) - return FALSE; - - styleClass->GenerateStyleStrings(windowStyle, buf); - return TRUE; -} - -/* - * Holds all the styles for a particular class - */ - -wxWindowStyleClass::wxWindowStyleClass(int n, wxWindowStylePair *styles) -{ - m_styleCount = n; - m_styles = styles; -/* - m_styles = new wxWindowStylePair[n]; - int i; - for (i = 0; i < n; i++) - m_styles[i] = styles[i]; -*/ -} - -wxWindowStyleClass::~wxWindowStyleClass() -{ -} - -void wxWindowStyleClass::GenerateStyleStrings(long windowStyle, char *buf) -{ - int i; - for (i = 0; i < m_styleCount; i++) - GenerateStyle(buf, windowStyle, m_styles[i].m_styleId, m_styles[i].m_styleName); -} - -bool wxWindowStyleClass::GenerateStyle(char *buf, long windowStyle, long flag, const wxString& strStyle) -{ - // Ignore zero flags - if (flag == 0) - return TRUE; - - if ((windowStyle & flag) == flag) - { - if (strlen(buf) > 0) - strcat(buf, " | "); - strcat(buf, (const char*) strStyle); - return TRUE; - } - else - return FALSE; -} - diff --git a/utils/dialoged/src/winstyle.h b/utils/dialoged/src/winstyle.h deleted file mode 100644 index d7aaf063f4..0000000000 --- a/utils/dialoged/src/winstyle.h +++ /dev/null @@ -1,77 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: winstyle.h -// Purpose: Window styles -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _DE_WINSTYLE_H_ -#define _DE_WINSTYLE_H_ - -#ifdef __GNUG__ -#pragma interface "winstyle.h" -#endif - -#include "wx/wx.h" - -/* - * A class for storing/generating window styles. - */ - -class wxWindowStyleClass; - -class wxWindowStylePair -{ - friend class wxWindowStyleClass; -public: - char* m_styleName; - long m_styleId; -}; - -class wxWindowStyleTable: public wxObject -{ -public: - wxWindowStyleTable(); - ~wxWindowStyleTable(); - -// Operations - void ClearTable(); - void AddStyles(const wxString& className, int n, wxWindowStylePair *styles); - wxWindowStyleClass* FindClass(const wxString& className) ; - bool GenerateStyleStrings(const wxString& className, long windowStyle, char *buf); - - // Initialise with all possible styles - void Init(); - -// Members -protected: - wxList m_classes; // A list of wxWindowStyleClass objects, indexed by class name - -}; - -/* - * Classes for storing all the window style identifiers associated with a particular class - */ - -class wxWindowStyleClass: public wxObject -{ -public: - wxWindowStyleClass(int n, wxWindowStylePair *styles); - ~wxWindowStyleClass(); - -// Operations - void GenerateStyleStrings(long windowStyle, char *buf); - bool GenerateStyle(char *buf, long windowStyle, long flag, const wxString& strStyle); - -// Members -protected: - wxWindowStylePair* m_styles; // An array of wxWindowStylePair objects - int m_styleCount; -}; - -#endif - // _DE_WINSTYLE_H_ diff --git a/utils/glcanvas/distrib/glcanvas.rsp b/utils/glcanvas/distrib/glcanvas.rsp deleted file mode 100644 index 1c238e484d..0000000000 --- a/utils/glcanvas/distrib/glcanvas.rsp +++ /dev/null @@ -1,40 +0,0 @@ -docs/*.* -win/*.cpp -win/*.h -win/make*.* -gtk/*.cpp -gtk/*.h -gtk/make*.* -motif/*.cpp -motif/*.h -motif/*.txt -motif/make*.* -samples/cube/*.cpp -samples/cube/*.h -samples/cube/*.rc -samples/cube/*.ico -samples/cube/*.xbm -samples/cube/make*.* -samples/cube/Makefile -samples/isosurf/*.cpp -samples/isosurf/*.h -samples/isosurf/*.rc -samples/isosurf/*.ico -samples/isosurf/*.xbm -samples/isosurf/*.dat -samples/isosurf/*.dat.gz -samples/isosurf/make*.* -samples/isosurf/Makefile -samples/penguin/*.cpp -samples/penguin/*.c -samples/penguin/*.h -samples/penguin/*.rc -samples/penguin/*.ico -samples/penguin/*.xbm -samples/penguin/*.xpm -samples/penguin/make*.* -samples/penguin/penguin.lwo -samples/penguin/Makefile - - - diff --git a/utils/glcanvas/distrib/zipsrc.bat b/utils/glcanvas/distrib/zipsrc.bat deleted file mode 100755 index 74029e3967..0000000000 --- a/utils/glcanvas/distrib/zipsrc.bat +++ /dev/null @@ -1,27 +0,0 @@ -@echo off -rem Zip up an external source distribution of GLCanvas -set src=%1 -set dest=%2 -if "%src" == "" set src=%WXWIN\utils\glcanvas -if "%dest" == "" set dest=%WXWIN\utils\glcanvas\deliver -echo About to archive an external GLCanvas distribution: -echo From %src -echo To %dest\glcanvas.zip -echo CTRL-C if this is not correct. -inkey /W10 `Press any key to continue...` %%input - -erase %dest\glcanvas.zip -cd %src - -zip32 -@ %dest\glcanvas.zip < %src\distrib\glcanvas.rsp - -echo GLCanvas archived. -goto end - -:usage -echo GLCanvas distribution. -echo Usage: zipsrc source destination - -:end - - diff --git a/utils/glcanvas/docs/notes.txt b/utils/glcanvas/docs/notes.txt deleted file mode 100644 index 7bcb165caf..0000000000 --- a/utils/glcanvas/docs/notes.txt +++ /dev/null @@ -1,5 +0,0 @@ -wxGLCanvas ----------- - -No known issues, though probably palettes aren't correctly -handled under Windows. They are ignored under GTK. diff --git a/utils/glcanvas/gtk/.cvsignore b/utils/glcanvas/gtk/.cvsignore deleted file mode 100644 index 4646a42c35..0000000000 --- a/utils/glcanvas/gtk/.cvsignore +++ /dev/null @@ -1,3 +0,0 @@ -Linux -linux-gnu -linux diff --git a/utils/glcanvas/gtk/glcanvas.cpp b/utils/glcanvas/gtk/glcanvas.cpp deleted file mode 100644 index 9e16370d1e..0000000000 --- a/utils/glcanvas/gtk/glcanvas.cpp +++ /dev/null @@ -1,312 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: glcanvas.cpp -// Purpose: wxGLCanvas, for using OpenGL/Mesa with wxWindows and GTK -// Author: Robert Roebling -// Modified by: -// Created: 17/08/98 -// RCS-ID: $Id$ -// Copyright: (c) Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "glcanvas.h" -#endif - -#include "glcanvas.h" - -#include "wx/frame.h" -#include "wx/colour.h" -#include "wx/module.h" -#include "wx/app.h" - -extern "C" { -#include "gtk/gtk.h" -#include "gdk/gdk.h" -#include "gdk/gdkx.h" -} - -#include "wx/gtk/win_gtk.h" - -//--------------------------------------------------------------------------- -// global data -//--------------------------------------------------------------------------- - -XVisualInfo *g_vi = (XVisualInfo*) NULL; - -//--------------------------------------------------------------------------- -// wxGLContext -//--------------------------------------------------------------------------- - -IMPLEMENT_CLASS(wxGLContext,wxObject) - -wxGLContext::wxGLContext( bool WXUNUSED(isRGB), wxWindow *win, const wxPalette& WXUNUSED(palette) ) -{ - m_window = win; - m_widget = ((wxGLCanvas*)win)->m_glWidget; - - wxCHECK_RET( g_vi, "invalid visual for OpenGl" ); - - m_glContext = glXCreateContext( GDK_DISPLAY(), g_vi, None, GL_TRUE ); - - wxCHECK_RET( m_glContext, "Couldn't create OpenGl context" ); -} - -wxGLContext::~wxGLContext() -{ - if (!m_glContext) return; - - if (m_glContext == glXGetCurrentContext()) - { - glXMakeCurrent( GDK_DISPLAY(), None, NULL); - } - - glXDestroyContext( GDK_DISPLAY(), m_glContext ); -} - -void wxGLContext::SwapBuffers() -{ - if (m_glContext) - { - glXSwapBuffers( GDK_DISPLAY(), GDK_WINDOW_XWINDOW( m_widget->window ) ); - } -} - -void wxGLContext::SetCurrent() -{ - if (m_glContext) - { - glXMakeCurrent( GDK_DISPLAY(), GDK_WINDOW_XWINDOW(m_widget->window), m_glContext ); - } -} - -void wxGLContext::SetColour(const char *colour) -{ - float r = 0.0; - float g = 0.0; - float b = 0.0; - wxColour *col = wxTheColourDatabase->FindColour(colour); - if (col) - { - r = (float)(col->Red()/256.0); - g = (float)(col->Green()/256.0); - b = (float)(col->Blue()/256.0); - glColor3f( r, g, b); - } -} - -void wxGLContext::SetupPixelFormat() -{ -} - -void wxGLContext::SetupPalette( const wxPalette& WXUNUSED(palette) ) -{ -} - -wxPalette wxGLContext::CreateDefaultPalette() -{ - return wxNullPalette; -} - -//--------------------------------------------------------------------------- -// wxGlCanvas -//--------------------------------------------------------------------------- - -IMPLEMENT_CLASS(wxGLCanvas, wxScrolledWindow) - -BEGIN_EVENT_TABLE(wxGLCanvas, wxScrolledWindow) - EVT_SIZE(wxGLCanvas::OnSize) -END_EVENT_TABLE() - -wxGLCanvas::wxGLCanvas( wxWindow *parent, wxWindowID id, - const wxPoint& pos, const wxSize& size, - long style, const wxString& name, - int *attribList, - const wxPalette& palette ) -{ - Create( parent, id, pos, size, style, name, attribList, palette ); -} - -bool wxGLCanvas::Create( wxWindow *parent, wxWindowID id, - const wxPoint& pos, const wxSize& size, - long style, const wxString& name, - int *attribList, - const wxPalette& palette ) -{ - if (!attribList) - { - int data[] = { GLX_RGBA, - GLX_DOUBLEBUFFER, - GLX_DEPTH_SIZE, 1, - None }; - attribList = (int*) data; - } - - Display *dpy = GDK_DISPLAY(); - - g_vi = glXChooseVisual( dpy, DefaultScreen(dpy), attribList ); - - GdkVisual *visual = gdkx_visual_get( g_vi->visualid ); - GdkColormap *colormap = gdk_colormap_new( gdkx_visual_get(g_vi->visualid), TRUE ); - - gtk_widget_push_colormap( colormap ); - gtk_widget_push_visual( visual ); - - m_glWidget = gtk_drawing_area_new(); - gtk_widget_set_events( m_glWidget, - GDK_EXPOSURE_MASK | - GDK_POINTER_MOTION_HINT_MASK | - GDK_POINTER_MOTION_MASK | - GDK_BUTTON_MOTION_MASK | - GDK_BUTTON1_MOTION_MASK | - GDK_BUTTON2_MOTION_MASK | - GDK_BUTTON3_MOTION_MASK | - GDK_BUTTON_PRESS_MASK | - GDK_BUTTON_RELEASE_MASK | - GDK_KEY_PRESS_MASK | - GDK_KEY_RELEASE_MASK | - GDK_ENTER_NOTIFY_MASK | - GDK_LEAVE_NOTIFY_MASK ); - - gtk_widget_pop_visual(); - gtk_widget_pop_colormap(); - - wxScrolledWindow::Create( parent, id, pos, size, style, name ); - - gtk_myfixed_put( GTK_MYFIXED(m_wxwindow), m_glWidget, 0, 0 ); - - gtk_widget_show( m_glWidget ); - - m_glContext = new wxGLContext( TRUE, this, palette ); - - XFree( g_vi ); - g_vi = (XVisualInfo*) NULL; - - return TRUE; -} - -wxGLCanvas::~wxGLCanvas() -{ - if (m_glContext) delete m_glContext; -} - -void wxGLCanvas::SwapBuffers() -{ - if (m_glContext) m_glContext->SwapBuffers(); -} - -void wxGLCanvas::OnSize(wxSizeEvent& WXUNUSED(event)) -{ - int width, height; - GetClientSize( &width, &height ); - if (m_glContext && GTK_WIDGET_REALIZED(m_glWidget) ) - { - SetCurrent(); - - glViewport(0, 0, (GLint)width, (GLint)height ); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum( -1.0, 1.0, -1.0, 1.0, 5.0, 15.0 ); - glMatrixMode(GL_MODELVIEW); - } -} - -void wxGLCanvas::SetCurrent() -{ - if (m_glContext) m_glContext->SetCurrent(); -} - -void wxGLCanvas::SetColour( const char *colour ) -{ - if (m_glContext) m_glContext->SetColour( colour ); -} - -void wxGLCanvas::SetSize( int x, int y, int width, int height, int sizeFlags ) -{ - if (m_resizing) return; // I don't like recursions - m_resizing = TRUE; - - if (m_parent->m_wxwindow == NULL) // i.e. wxNotebook - { - // don't set the size for children of wxNotebook, just take the values. - m_x = x; - m_y = y; - m_width = width; - m_height = height; - } - else - { - int old_width = m_width; - int old_height = m_height; - - if ((sizeFlags & wxSIZE_USE_EXISTING) == wxSIZE_USE_EXISTING) - { - if (x != -1) m_x = x; - if (y != -1) m_y = y; - if (width != -1) m_width = width; - if (height != -1) m_height = height; - } - else - { - m_x = x; - m_y = y; - m_width = width; - m_height = height; - } - - if ((sizeFlags & wxSIZE_AUTO_WIDTH) == wxSIZE_AUTO_WIDTH) - { - if (width == -1) m_width = 80; - } - - if ((sizeFlags & wxSIZE_AUTO_HEIGHT) == wxSIZE_AUTO_HEIGHT) - { - if (height == -1) m_height = 26; - } - - if ((m_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth; - if ((m_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight; - if ((m_maxWidth != -1) && (m_width > m_maxWidth)) m_width = m_maxWidth; - if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_maxHeight; - - wxPoint pt( m_parent->GetClientAreaOrigin() ); - gtk_myfixed_move( GTK_MYFIXED(m_parent->m_wxwindow), m_widget, m_x+pt.x, m_y+pt.y ); - - if ((old_width != m_width) || (old_height != m_height)) - { - gtk_widget_set_usize( m_widget, m_width, m_height ); - - gtk_drawing_area_size( GTK_DRAWING_AREA(m_glWidget), m_width, m_height ); - - GtkAllocation allo; - allo.x = 0; - allo.y = 0; - allo.width = m_width; - allo.height = m_height; - gtk_widget_size_allocate( m_glWidget, &allo ); - } - } - - m_sizeSet = TRUE; - - wxSizeEvent event( wxSize(m_width,m_height), GetId() ); - event.SetEventObject( this ); - GetEventHandler()->ProcessEvent( event ); - - m_resizing = FALSE; -} - -void wxGLCanvas::SetSize( int width, int height ) -{ - SetSize( -1, -1, width, height, wxSIZE_USE_EXISTING ); -} - -GtkWidget *wxGLCanvas::GetConnectWidget() -{ - return m_glWidget; -} - -bool wxGLCanvas::IsOwnGtkWindow( GdkWindow *window ) -{ - return (window == m_glWidget->window); -} diff --git a/utils/glcanvas/gtk/glcanvas.h b/utils/glcanvas/gtk/glcanvas.h deleted file mode 100644 index c32e176a61..0000000000 --- a/utils/glcanvas/gtk/glcanvas.h +++ /dev/null @@ -1,119 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: glcanvas.h -// Purpose: wxGLCanvas, for using OpenGL/Mesa with wxWindows and GTK -// Author: Robert Roebling -// Modified by: -// Created: 17/8/98 -// RCS-ID: $Id$ -// Copyright: (c) Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma interface "glcanvas.h" -#endif - -#ifndef _WX_GLCANVAS_H_ -#define _WX_GLCANVAS_H_ - -#include "wx/defs.h" -#include "wx/scrolwin.h" - -extern "C" { -#include "GL/gl.h" -#include "GL/glx.h" -#include "GL/glu.h" -} - -//--------------------------------------------------------------------------- -// classes -//--------------------------------------------------------------------------- - -class wxGLContext; -class wxGLCanvas; - -//--------------------------------------------------------------------------- -// wxGLContext -//--------------------------------------------------------------------------- - - -class wxGLContext: public wxObject -{ - DECLARE_CLASS(wxGLContext) - - public: - - wxGLContext( bool isRGB, wxWindow *win, const wxPalette& palette = wxNullPalette ); - ~wxGLContext(); - - void SetCurrent(); - void SetColour(const char *colour); - void SwapBuffers(); - - void SetupPixelFormat(); - void SetupPalette(const wxPalette& palette); - wxPalette CreateDefaultPalette(); - - inline wxPalette* GetPalette() const { return (wxPalette*) & m_palette; } - inline wxWindow* GetWindow() const { return m_window; } - inline GtkWidget* GetWidget() const { return m_widget; } - inline GLXContext GetContext() const { return m_glContext; } - - public: - - GLXContext m_glContext; - - GtkWidget *m_widget; - wxPalette m_palette; - wxWindow* m_window; -}; - -//--------------------------------------------------------------------------- -// wxGLContext -//--------------------------------------------------------------------------- - -class wxGLCanvas: public wxScrolledWindow -{ - DECLARE_CLASS(wxGLCanvas) - - public: - wxGLCanvas( wxWindow *parent, wxWindowID id = -1, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, const wxString& name = "GLCanvas", - int *attribList = (int*) NULL, - const wxPalette& palette = wxNullPalette ); - - bool Create( wxWindow *parent, wxWindowID id = -1, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, const wxString& name = "GLCanvas", - int *attribList = (int*) NULL, - const wxPalette& palette = wxNullPalette ); - - ~wxGLCanvas(); - - void SetCurrent(); - void SetColour(const char *colour); - void SwapBuffers(); - - void OnSize(wxSizeEvent& event); - - inline wxGLContext* GetContext() const { return m_glContext; } - - // implementation - - virtual void SetSize( int x, int y, int width, int height, - int sizeFlags = wxSIZE_AUTO ); - virtual void SetSize( int width, int height ); - - virtual GtkWidget *GetConnectWidget(); - bool IsOwnGtkWindow( GdkWindow *window ); - - wxGLContext *m_glContext; - GtkWidget *m_glWidget; - - DECLARE_EVENT_TABLE() -}; - -#endif diff --git a/utils/glcanvas/motif/glcanvas.cpp b/utils/glcanvas/motif/glcanvas.cpp deleted file mode 100644 index 0933fb73bf..0000000000 --- a/utils/glcanvas/motif/glcanvas.cpp +++ /dev/null @@ -1,161 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: glcanvas.cpp -// Purpose: wxGLCanvas, for using OpenGL with wxWindows 2.0 for Motif. -// Uses the GLX extension. -// Author: Julian Smart and Wolfram Gloger -// Modified by: -// Created: 1995, 1999 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart, Wolfram Gloger -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "glcanvas.h" -#endif - -#include "glcanvas.h" -#include "wx/utils.h" -#include "wx/app.h" - -#include -#include "wx/motif/private.h" - -#ifdef OLD_MESA -// workaround for bug in Mesa's glx.c -static int bitcount( unsigned long n ) -{ - int bits; - for (bits=0; n>0;) { - if(n & 1) bits++; - n = n >> 1; - } - return bits; -} -#endif - -/* - * GLCanvas implementation - */ - -IMPLEMENT_CLASS(wxGLCanvas, wxScrolledWindow) - -wxGLCanvas::wxGLCanvas(wxWindow *parent, wxWindowID id = -1, const wxPoint& pos, - const wxSize& size, long style, - const wxString& name, int *attrib_list, const wxPalette& palette): - wxScrolledWindow(parent, id, pos, size, style, name) -{ - XVisualInfo *vi, vi_templ; - XWindowAttributes xwa; - int val, n; - - Display* display = (Display*) GetXDisplay(); - - glx_cx = 0; - // Check for the presence of the GLX extension - if(!glXQueryExtension(display, NULL, NULL)) { - wxDebugMsg("wxGLCanvas: GLX extension is missing\n"); - return; - } - - if(attrib_list) { - // Get an appropriate visual - vi = glXChooseVisual(display, DefaultScreen(display), attrib_list); - if(!vi) return; - - // Here we should make sure that vi is the same visual as the - // one used by the xwindow drawable in wxCanvas. However, - // there is currently no mechanism for this in wx_canvs.cc. - } else { - // By default, we use the visual of xwindow - XGetWindowAttributes(display, (Window) GetXWindow(), &xwa); - vi_templ.visualid = XVisualIDFromVisual(xwa.visual); - vi = XGetVisualInfo(display, VisualIDMask, &vi_templ, &n); - if(!vi) return; - glXGetConfig(display, vi, GLX_USE_GL, &val); - if(!val) return; - // Basically, this is it. It should be possible to use vi - // in glXCreateContext() below. But this fails with Mesa. - // I notified the Mesa author about it; there may be a fix. -#ifdef OLD_MESA - // Construct an attribute list matching the visual - int a_list[32]; - n = 0; - if(vi->c_class==TrueColor || vi->c_class==DirectColor) { // RGBA visual - a_list[n++] = GLX_RGBA; - a_list[n++] = GLX_RED_SIZE; - a_list[n++] = bitcount(vi->red_mask); - a_list[n++] = GLX_GREEN_SIZE; - a_list[n++] = bitcount(vi->green_mask); - a_list[n++] = GLX_BLUE_SIZE; - a_list[n++] = bitcount(vi->blue_mask); - glXGetConfig(display, vi, GLX_ALPHA_SIZE, &val); - a_list[n++] = GLX_ALPHA_SIZE; - a_list[n++] = val; - } else { // Color index visual - glXGetConfig(display, vi, GLX_BUFFER_SIZE, &val); - a_list[n++] = GLX_BUFFER_SIZE; - a_list[n++] = val; - } - a_list[n] = None; - XFree(vi); - vi = glXChooseVisual(display, DefaultScreen(display), a_list); - if(!vi) return; -#endif /* OLD_MESA */ - } - - // Create the GLX context and make it current - glx_cx = glXCreateContext(display, vi, 0, GL_TRUE); -#ifndef OLD_MESA - XFree(vi); -#endif - SetCurrent(); -} - -wxGLCanvas::~wxGLCanvas(void) -{ - Display* display = (Display*) GetXDisplay(); - if(glx_cx) glXDestroyContext(display, glx_cx); -} - -void wxGLCanvas::SwapBuffers() -{ - Display* display = (Display*) GetXDisplay(); - if(glx_cx) glXSwapBuffers(display, (Window) GetXWindow()); -} - -void wxGLCanvas::SetCurrent() -{ - Display* display = (Display*) GetXDisplay(); - if(glx_cx) glXMakeCurrent(display, (Window) GetXWindow(), glx_cx); -} - -void wxGLCanvas::SetColour(const char *col) -{ - wxColour *the_colour = wxTheColourDatabase->FindColour(col); - if(the_colour) { - GLboolean b; - glGetBooleanv(GL_RGBA_MODE, &b); - if(b) { - glColor3ub(the_colour->Red(), - the_colour->Green(), - the_colour->Blue()); - } else { - GLint pix = (GLint)the_colour->m_pixel; - if(pix == -1) { - XColor exact_def; - exact_def.red = (unsigned short)the_colour->Red() << 8; - exact_def.green = (unsigned short)the_colour->Green() << 8; - exact_def.blue = (unsigned short)the_colour->Blue() << 8; - exact_def.flags = DoRed | DoGreen | DoBlue; - if(!XAllocColor((Display*) GetXDisplay(), (Colormap) wxTheApp->GetMainColormap(GetXDisplay()), &exact_def)) { - wxDebugMsg("wxGLCanvas: cannot allocate color\n"); - return; - } - pix = the_colour->m_pixel = exact_def.pixel; - } - glIndexi(pix); - } - } -} - diff --git a/utils/glcanvas/motif/glcanvas.h b/utils/glcanvas/motif/glcanvas.h deleted file mode 100644 index ee4afde5fc..0000000000 --- a/utils/glcanvas/motif/glcanvas.h +++ /dev/null @@ -1,44 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: glcanvas.h -// Purpose: wxGLCanvas, for using OpenGL with wxWindows 2.0 for Motif. -// Uses the GLX extension. -// Author: Julian Smart and Wolfram Gloger -// Modified by: -// Created: 1995, 1999 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart, Wolfram Gloger -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma interface "glcanvas.h" -#endif - -#ifndef _WX_GLCANVAS_H_ -#define _WX_GLCANVAS_H_ - -#include "wx/setup.h" -#include "wx/gdicmn.h" -#include "wx/palette.h" -#include "wx/scrolwin.h" - -#include - -class wxGLCanvas: public wxScrolledWindow -{ -DECLARE_CLASS(wxGLCanvas) -public: - GLXContext glx_cx; - - wxGLCanvas(wxWindow *parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxString& name = "GLCanvas", int *attribList = 0, const wxPalette& palette = wxNullPalette); - ~wxGLCanvas(void); - - void SetCurrent(); - void SwapBuffers(); - void SetColour(const char *col); -}; - -#endif - // _WX_GLCANVAS_H_ diff --git a/utils/glcanvas/motif/makefile.unx b/utils/glcanvas/motif/makefile.unx deleted file mode 100644 index 90090c9ea2..0000000000 --- a/utils/glcanvas/motif/makefile.unx +++ /dev/null @@ -1,20 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1998 -# Updated: -# Copyright: (c) 1998 Julia`n Smart -# -# "%W% %G%" -# -# Makefile for wxGLCanvas (Unix) - -LIBTARGET=$(WXWIN)/lib/libglcanvas -OPENGLHOME=/home/jacs/mesa/Mesa-2.3 - -EXTRACPPFLAGS=-I$(OPENGLHOME)/include - -OBJECTS=glcanvas.o - -include ../../../src/makelib.env - diff --git a/utils/glcanvas/motif/readme.txt b/utils/glcanvas/motif/readme.txt deleted file mode 100644 index 5771811049..0000000000 --- a/utils/glcanvas/motif/readme.txt +++ /dev/null @@ -1,52 +0,0 @@ -GLCanvas class for wxWindows 1.66 using the GLX protocol extension -================================================================== - -I have just uploaded a file 'wx166glx.tar.gz' to the wxWindows -incoming directory. It contains an implementation of a GLCanvas class -(interfacing an ordinary wxCanvas with OpenGL calls) for X11 (I tested -with Motif, maybe it works with XView as well). I tried to imitate -what Julian did in 'wxmesa1.zip' for MS Windows in conjunction with -the Mesa library. - -Of the several possibilities to use OpenGL under X11, I chose the GLX -server extension, because it is the most efficient method on machines -with graphics hardware support (I expect wxWindows/OpenGL applications -to _fly_ on my Indy :-). However, you don't need a 'real' OpenGL -implementation to use GLCanvas -- the free Mesa library has a -simulated GLX interface built-in. Just link in libMesaGLU and -libMesaGL along with libwx_motif and everything should work fine. - -Installation: - -Untar wx166glx.tar.gz from your main wxWindows directory (i.e. where -the `include' and `src' subdirectories are). Then apply the small -patch file which has appeared in the `glx' subdirectory: - -% patch -p0 < glx/wx166-glx.diff - -Recompile the wx_motif library in the standard way. The inclusion of -the GLCanvas class in libwx_motif is protected with a new 'USE_GLX' -flag in wx_setup.h, so it could maybe be included in a future -wxWindows release (with USE_GLX turned off by default). - -Two new samples (bounce and prim) are included. I adapted them from -wxmesa1.zip -- they should compile under both MS Windows (with wxMesa) -and X11. The makefile.unx's are set up for the Mesa libraries; if you -have original libGLU/libGL's just change the GLLIBS = ... line. - -Problems: - -One more or less serious problem remains: the visual generated by the -GLCanvas class must match the visual of wxCanvas.xwindow (which -currently is always the screen's default visual). The end result is -that you will get a nice RGB mode for OpenGL only if your display's -default visual is TrueColor or DirectColor (the XFree86 S3 servers for -PCs with the '-bpp 16/32' option are examples). I'm contemplating a -solution where the wxCanvas drawingarea widget is destroyed and then -re-created from within the GLCanvas constructor. I would welcome -suggestions on this and discussions of the GLCanvas 'API'. - -Regards, - -Wolfram Gloger. -(Gloger@lrz.uni-muenchen.de) diff --git a/utils/glcanvas/samples/cube/Makefile b/utils/glcanvas/samples/cube/Makefile deleted file mode 100644 index 6e852b2dd4..0000000000 --- a/utils/glcanvas/samples/cube/Makefile +++ /dev/null @@ -1,29 +0,0 @@ -# -# File: Makefile -# Author: Robert Roebling -# Created: 1999 -# Updated: -# Copyright: (c) 1998 Robert Roebling -# -# Makefile for OpenGl demo (GTK version) -# -# This makefile requires wxWindows/GTK to be -# installed (possibly using "make install") -# on your system. -# - -CC = g++ - -cube: cube.o glcanvas.o - $(CC) -o cube \ - cube.o glcanvas.o \ - `wx-config --libs` -lMesaGL -lMesaGLU - -cube.o: cube.cpp - $(CC) `wx-config --cflags` -I../../gtk -c cube.cpp - -glcanvas.o: ../../gtk/glcanvas.cpp - $(CC) `wx-config --cflags` `gtk-config --cflags` -I../../gtk -c ../../gtk/glcanvas.cpp - -clean: - rm -f *.o cube diff --git a/utils/glcanvas/samples/cube/cube.cpp b/utils/glcanvas/samples/cube/cube.cpp deleted file mode 100644 index 6b4fc01e6e..0000000000 --- a/utils/glcanvas/samples/cube/cube.cpp +++ /dev/null @@ -1,192 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: cube.cpp -// Purpose: wxGLCanvas demo program -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation -#pragma interface -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include "wx/log.h" - -#include "cube.h" - -// `Main program' equivalent, creating windows and returning main app frame -bool MyApp::OnInit(void) -{ - wxLog::SetTraceMask(wxTraceMessages); - - // Create the main frame window - MyFrame *frame = new MyFrame(NULL, "Cube OpenGL Demo", wxPoint(50, 50), wxSize(400, 300)); - - // Give it an icon -#ifdef wx_msw - frame->SetIcon(wxIcon("mondrian")); -#endif - - // Make a menubar - wxMenu *fileMenu = new wxMenu; - - fileMenu->Append(wxID_EXIT, "E&xit"); - wxMenuBar *menuBar = new wxMenuBar; - menuBar->Append(fileMenu, "&File"); - frame->SetMenuBar(menuBar); - - frame->m_canvas = new TestGLCanvas(frame, -1, wxPoint(0, 0), wxSize(200, 200)); - - // Show the frame - frame->Show(TRUE); - - return TRUE; -} - -IMPLEMENT_APP(MyApp) - -BEGIN_EVENT_TABLE(MyFrame, wxFrame) - EVT_MENU(wxID_EXIT, MyFrame::OnExit) -END_EVENT_TABLE() - -// My frame constructor -MyFrame::MyFrame(wxFrame *frame, const wxString& title, const wxPoint& pos, - const wxSize& size, long style): - wxFrame(frame, -1, title, pos, size, style) -{ - m_canvas = NULL; -} - -// Intercept menu commands -void MyFrame::OnExit(wxCommandEvent& event) -{ - Destroy(); -} - -bool MyFrame::OnClose(void) -{ - return TRUE; -} - -BEGIN_EVENT_TABLE(TestGLCanvas, wxGLCanvas) - EVT_SIZE(TestGLCanvas::OnSize) - EVT_PAINT(TestGLCanvas::OnPaint) - EVT_ERASE_BACKGROUND(TestGLCanvas::OnEraseBackground) -END_EVENT_TABLE() - -TestGLCanvas::TestGLCanvas(wxWindow *parent, wxWindowID id, - const wxPoint& pos, const wxSize& size, long style, const wxString& name): - wxGLCanvas(parent, id, pos, size, style, name) -{ - m_init = FALSE; -} - -TestGLCanvas::~TestGLCanvas(void) -{ -} - -void TestGLCanvas::OnPaint( wxPaintEvent& event ) -{ - // This is a dummy, to avoid an endless succession of paint messages. - // OnPaint handlers must always create a wxPaintDC. - wxPaintDC dc(this); - -#ifndef __WXMOTIF__ - if (!GetContext()) return; -#endif - - SetCurrent(); - - /* init OpenGL once, but after SetCurrent */ - if (!m_init) - { - InitGL(); - m_init = TRUE; - } - - /* clear color and depth buffers */ - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - /* draw six faces of a cube */ - glBegin(GL_QUADS); - glNormal3f( 0.0F, 0.0F, 1.0F); - glVertex3f( 0.5F, 0.5F, 0.5F); glVertex3f(-0.5F, 0.5F, 0.5F); - glVertex3f(-0.5F,-0.5F, 0.5F); glVertex3f( 0.5F,-0.5F, 0.5F); - - glNormal3f( 0.0F, 0.0F,-1.0F); - glVertex3f(-0.5F,-0.5F,-0.5F); glVertex3f(-0.5F, 0.5F,-0.5F); - glVertex3f( 0.5F, 0.5F,-0.5F); glVertex3f( 0.5F,-0.5F,-0.5F); - - glNormal3f( 0.0F, 1.0F, 0.0F); - glVertex3f( 0.5F, 0.5F, 0.5F); glVertex3f( 0.5F, 0.5F,-0.5F); - glVertex3f(-0.5F, 0.5F,-0.5F); glVertex3f(-0.5F, 0.5F, 0.5F); - - glNormal3f( 0.0F,-1.0F, 0.0F); - glVertex3f(-0.5F,-0.5F,-0.5F); glVertex3f( 0.5F,-0.5F,-0.5F); - glVertex3f( 0.5F,-0.5F, 0.5F); glVertex3f(-0.5F,-0.5F, 0.5F); - - glNormal3f( 1.0F, 0.0F, 0.0F); - glVertex3f( 0.5F, 0.5F, 0.5F); glVertex3f( 0.5F,-0.5F, 0.5F); - glVertex3f( 0.5F,-0.5F,-0.5F); glVertex3f( 0.5F, 0.5F,-0.5F); - - glNormal3f(-1.0F, 0.0F, 0.0F); - glVertex3f(-0.5F,-0.5F,-0.5F); glVertex3f(-0.5F,-0.5F, 0.5F); - glVertex3f(-0.5F, 0.5F, 0.5F); glVertex3f(-0.5F, 0.5F,-0.5F); - glEnd(); - - SwapBuffers(); -} - -void TestGLCanvas::OnSize(wxSizeEvent& event) -{ - int width, height; - GetClientSize(& width, & height); - -#ifndef __WXMOTIF__ - if (GetContext()) -#endif - { - SetCurrent(); - glViewport(0, 0, width, height); - } -} - -void TestGLCanvas::OnEraseBackground(wxEraseEvent& event) -{ - // Do nothing, to avoid flashing. -} - -void TestGLCanvas::InitGL(void) -{ - /* set viewing projection */ - glMatrixMode(GL_PROJECTION); - glFrustum(-0.5F, 0.5F, -0.5F, 0.5F, 1.0F, 3.0F); - - /* position viewer */ - glMatrixMode(GL_MODELVIEW); - glTranslatef(0.0F, 0.0F, -2.0F); - - /* position object */ - glRotatef(30.0F, 1.0F, 0.0F, 0.0F); - glRotatef(30.0F, 0.0F, 1.0F, 0.0F); - - glEnable(GL_DEPTH_TEST); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); -} - diff --git a/utils/glcanvas/samples/cube/cube.h b/utils/glcanvas/samples/cube/cube.h deleted file mode 100644 index 5ae1fd9f7f..0000000000 --- a/utils/glcanvas/samples/cube/cube.h +++ /dev/null @@ -1,60 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: cube.h -// Purpose: wxGLCanvas demo program -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_CUBE_H_ -#define _WX_CUBE_H_ - -#include "glcanvas.h" - -// Define a new application type -class MyApp: public wxApp -{ -public: - bool OnInit(void); -}; - -// Define a new frame type -class TestGLCanvas; -class MyFrame: public wxFrame -{ -public: - MyFrame(wxFrame *frame, const wxString& title, const wxPoint& pos, const wxSize& size, - long style = wxDEFAULT_FRAME_STYLE); - - void OnExit(wxCommandEvent& event); - bool OnClose(void); -public: - TestGLCanvas* m_canvas; - -DECLARE_EVENT_TABLE() -}; - -class TestGLCanvas: public wxGLCanvas -{ - public: - TestGLCanvas(wxWindow *parent, const wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, const wxString& name = "TestGLCanvas"); - ~TestGLCanvas(void); - - void OnPaint(wxPaintEvent& event); - void OnSize(wxSizeEvent& event); - void OnEraseBackground(wxEraseEvent& event); - void InitGL(void); - - private: - - bool m_init; - -DECLARE_EVENT_TABLE() -}; - -#endif - diff --git a/utils/glcanvas/samples/cube/cube.rc b/utils/glcanvas/samples/cube/cube.rc deleted file mode 100644 index 7655c62a4c..0000000000 --- a/utils/glcanvas/samples/cube/cube.rc +++ /dev/null @@ -1,3 +0,0 @@ -mondrian ICON "mondrian.ico" -#include "wx/msw/wx.rc" - diff --git a/utils/glcanvas/samples/cube/makefile.g95 b/utils/glcanvas/samples/cube/makefile.g95 deleted file mode 100644 index 88d34c180f..0000000000 --- a/utils/glcanvas/samples/cube/makefile.g95 +++ /dev/null @@ -1,37 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile for cube example (UNIX). - -WXDIR = ../.. - -# All common UNIX compiler flags and options are now in -# this central makefile. -include $(WXDIR)/src/makeg95.env - -OBJECTS = $(OBJDIR)/cube.$(OBJSUFF) - -all: $(OBJDIR) cube$(GUISUFFIX)$(EXESUFF) - -wx: - -$(OBJDIR): - mkdir $(OBJDIR) - -cube$(GUISUFFIX)$(EXESUFF): $(OBJDIR)/cube.$(OBJSUFF) cube.res $(WXLIB) - $(CC) $(LDFLAGS) -o cube$(GUISUFFIX)$(EXESUFF) $(OBJDIR)/cube.$(OBJSUFF) $(LDLIBS) - $(RSRC) cube.$(RESSUFF) cube.exe - -$(OBJDIR)/cube.$(OBJSUFF): cube.$(SRCSUFF) - $(CC) -c $(CPPFLAGS) -o $@ cube.$(SRCSUFF) - -cube.res: cube.rc - -clean: - rm -f $(OBJECTS) cube$(GUISUFFIX).exe core *.rsc *.res diff --git a/utils/glcanvas/samples/cube/makefile.unx b/utils/glcanvas/samples/cube/makefile.unx deleted file mode 100644 index 590b54ddd5..0000000000 --- a/utils/glcanvas/samples/cube/makefile.unx +++ /dev/null @@ -1,23 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1998 -# Updated: -# Copyright: (c) 1998 Julian Smart -# -# "%W% %G%" -# -# Makefile for cube example (UNIX). - -PROGRAM=cube - -OPENGLHOME=/home/jacs/mesa/Mesa-2.3 - -EXTRACPPFLAGS=-I$(OPENGLHOME)/include -I../../motif -EXTRALDFLAGS=-L$(OPENGLHOME)/lib -EXTRALDLIBS=-lglcanvas_motif -lMesaGL -lMesaGLU - -OBJECTS=$(PROGRAM).o - -include ../../../../src/makeprog.env - diff --git a/utils/glcanvas/samples/cube/makefile.vc b/utils/glcanvas/samples/cube/makefile.vc deleted file mode 100644 index 997616ea30..0000000000 --- a/utils/glcanvas/samples/cube/makefile.vc +++ /dev/null @@ -1,20 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: (c) Julian Smart -# -# Makefile : Builds sample (VC++, WIN32) -# Use FINAL=1 argument to nmake to build final version with no debug info. - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -PROGRAM=cube -OBJECTS = $(PROGRAM).obj -EXTRAINC=-I..\..\win -EXTRALIBS=$(WXDIR)\lib\glcanvas.lib glu32.lib opengl32.lib - -!include $(WXDIR)\src\makeprog.vc - diff --git a/utils/glcanvas/samples/cube/mondrian.ico b/utils/glcanvas/samples/cube/mondrian.ico deleted file mode 100644 index 2310c5d275a87af295d5ea8dc79ea417a5e74c53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmZQzU<5)11px*Sc)`TLAO@s0fLH;D9e|jTfdxnc0Z -#include - -#include "isosurf.h" - -// The following part is taken largely unchanged from the original C Version - -#include - -GLboolean speed_test = GL_FALSE; -GLboolean use_vertex_arrays = GL_FALSE; - -GLboolean doubleBuffer = GL_TRUE; - -GLboolean smooth = GL_TRUE; -GLboolean lighting = GL_TRUE; - - -#define MAXVERTS 10000 - -static GLfloat verts[MAXVERTS][3]; -static GLfloat norms[MAXVERTS][3]; -static GLint numverts; - -static GLfloat xrot; -static GLfloat yrot; - - -static void read_surface( char *filename ) -{ - FILE *f; - - f = fopen(filename,"r"); - if (!f) { - wxString msg("Couldn't read "); - msg += filename; - wxMessageBox(msg); - return; - } - - numverts = 0; - while (!feof(f) && numvertsSetIcon(wxIcon("mondrian")); - - // Make a menubar - wxMenu *fileMenu = new wxMenu; - - fileMenu->Append(wxID_EXIT, "E&xit"); - wxMenuBar *menuBar = new wxMenuBar; - menuBar->Append(fileMenu, "&File"); - frame->SetMenuBar(menuBar); - - // Make a TestGLCanvas - - // JACS -#ifdef __WXMSW__ - int *gl_attrib = NULL; -#else - int gl_attrib[20] = { GLX_RGBA, GLX_RED_SIZE, 1, GLX_GREEN_SIZE, 1, - GLX_BLUE_SIZE, 1, GLX_DEPTH_SIZE, 1, - GLX_DOUBLEBUFFER, None }; -#endif - - if(!doubleBuffer -#ifdef __WXGTK__ // JACS - || !wxGLCanvas::HaveVisual(gl_attrib) -#endif - ) - { - printf("don't have double buffer, disabling\n"); -#ifdef __WXGTK__ - gl_attrib[9] = None; -#endif - doubleBuffer = GL_FALSE; - } - frame->m_canvas = new TestGLCanvas(frame, -1, wxPoint(0, 0), wxSize(200, 200), 0, "TestGLCanvas", - gl_attrib); - - // Show the frame - frame->Show(TRUE); - - frame->m_canvas->SetCurrent(); - read_surface( "isosurf.dat" ); - - Init(); - - return TRUE; -} - -BEGIN_EVENT_TABLE(MyFrame, wxFrame) - EVT_MENU(wxID_EXIT, MyFrame::OnExit) -END_EVENT_TABLE() - -// My frame constructor -MyFrame::MyFrame(wxFrame *frame, const wxString& title, const wxPoint& pos, - const wxSize& size, long style): - wxFrame(frame, -1, title, pos, size, style) -{ - m_canvas = NULL; -} - -// Intercept menu commands -void MyFrame::OnExit(wxCommandEvent& event) -{ - Destroy(); -} - -bool MyFrame::OnClose(void) -{ - return TRUE; -} - - -/* - * TestGLCanvas implementation - */ - -BEGIN_EVENT_TABLE(TestGLCanvas, wxGLCanvas) - EVT_SIZE(TestGLCanvas::OnSize) - EVT_PAINT(TestGLCanvas::OnPaint) - EVT_CHAR(TestGLCanvas::OnChar) - EVT_MOUSE_EVENTS(TestGLCanvas::OnMouseEvent) - EVT_ERASE_BACKGROUND(TestGLCanvas::OnEraseBackground) -END_EVENT_TABLE() - -TestGLCanvas::TestGLCanvas(wxWindow *parent, wxWindowID id, - const wxPoint& pos, const wxSize& size, long style, const wxString& name, int* gl_attrib): - wxGLCanvas(parent, id, pos, size, style, name, gl_attrib) -{ - parent->Show(TRUE); - SetCurrent(); - /* Make sure server supports the vertex array extension */ - char* extensions = (char *) glGetString( GL_EXTENSIONS ); - if (!extensions || !strstr( extensions, "GL_EXT_vertex_array" )) { - use_vertex_arrays = GL_FALSE; - } -} - - -TestGLCanvas::~TestGLCanvas(void) -{ -} - -void TestGLCanvas::OnPaint( wxPaintEvent& event ) -{ - // This is a dummy, to avoid an endless succession of paint messages. - // OnPaint handlers must always create a wxPaintDC. - wxPaintDC dc(this); - - draw1(); - SwapBuffers(); -} - -void TestGLCanvas::OnSize(wxSizeEvent& event) -{ - SetCurrent(); - int width, height; - GetClientSize(& width, & height); - Reshape(width, height); -} - -void TestGLCanvas::OnChar(wxKeyEvent& event) -{ - switch(event.KeyCode()) { - case WXK_ESCAPE: - exit(0); - case WXK_LEFT: - yrot -= 15.0; - break; - case WXK_RIGHT: - yrot += 15.0; - break; - case WXK_UP: - xrot += 15.0; - break; - case WXK_DOWN: - xrot -= 15.0; - break; - case 's': case 'S': - smooth = !smooth; - if (smooth) { - glShadeModel(GL_SMOOTH); - } else { - glShadeModel(GL_FLAT); - } - break; - case 'l': case 'L': - lighting = !lighting; - if (lighting) { - glEnable(GL_LIGHTING); - } else { - glDisable(GL_LIGHTING); - } - break; - } - - Refresh(FALSE); -} - -void TestGLCanvas::OnMouseEvent(wxMouseEvent& event) -{ - static int dragging = 0; - static float last_x, last_y; - - //printf("%f %f %d\n", event.GetX(), event.GetY(), (int)event.LeftIsDown()); - if(event.LeftIsDown()) { - if(!dragging) { - dragging = 1; - } else { - yrot += (event.GetX() - last_x)*1.0; - xrot += (event.GetY() - last_y)*1.0; - Refresh(FALSE); - } - last_x = event.GetX(); - last_y = event.GetY(); - } else - dragging = 0; -} - -void TestGLCanvas::OnEraseBackground(wxEraseEvent& event) -{ - // Do nothing, to avoid flashing. -} - diff --git a/utils/glcanvas/samples/isosurf/isosurf.dat.gz b/utils/glcanvas/samples/isosurf/isosurf.dat.gz deleted file mode 100644 index b2b9e007d70b4c6a92d1a1dd483c7c097913a8fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 286 zcmV+(0pb21iwFqeslzh>18H+_b9HiNE@WYJ0Mz|icJ4fmG>qQoC_Djui=DdpPwd!| z5D_HcotE@e)%o)#_j+v@6dUviO!@z%<9}c2|D`#V;~!;i+xI_y{j(*N7n(`ro-*)_gAG&S%`KR*Bn|)ui^CQ1&KfnLAuk*+c`?8mjUj{$7pLsq0z`@VH&lVie kk>Bj-W;>8&2c6r`T=(mKV*9b+<6us@<9c-bO16E$eg_+-AOHXW diff --git a/utils/glcanvas/samples/isosurf/isosurf.h b/utils/glcanvas/samples/isosurf/isosurf.h deleted file mode 100644 index 0a747deb74..0000000000 --- a/utils/glcanvas/samples/isosurf/isosurf.h +++ /dev/null @@ -1,53 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: isosurf.h -// Purpose: wxGLCanvas demo program -// Author: Brian Paul (original gltk version), Wolfram Gloger -// Modified by: Julian Smart -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_ISOSURF_H_ -#define _WX_ISOSURF_H_ - -// Define a new application type -class MyApp: public wxApp -{ public: - bool OnInit(void); -}; - -class TestGLCanvas: public wxGLCanvas -{ - public: - TestGLCanvas(wxWindow *parent, const wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, const wxString& name = "TestGLCanvas", - int* gl_attrib = NULL); - ~TestGLCanvas(void); - - void OnPaint(wxPaintEvent& event); - void OnSize(wxSizeEvent& event); - void OnEraseBackground(wxEraseEvent& event); - void OnChar(wxKeyEvent& event); - void OnMouseEvent(wxMouseEvent& event); - -DECLARE_EVENT_TABLE() -}; - -class MyFrame: public wxFrame -{ -public: - MyFrame(wxFrame *frame, const wxString& title, const wxPoint& pos, const wxSize& size, - long style = wxDEFAULT_FRAME_STYLE); - - void OnExit(wxCommandEvent& event); - bool OnClose(void); -public: - TestGLCanvas* m_canvas; - -DECLARE_EVENT_TABLE() -}; - -#endif - diff --git a/utils/glcanvas/samples/isosurf/isosurf.rc b/utils/glcanvas/samples/isosurf/isosurf.rc deleted file mode 100644 index 7655c62a4c..0000000000 --- a/utils/glcanvas/samples/isosurf/isosurf.rc +++ /dev/null @@ -1,3 +0,0 @@ -mondrian ICON "mondrian.ico" -#include "wx/msw/wx.rc" - diff --git a/utils/glcanvas/samples/isosurf/makefile.unx b/utils/glcanvas/samples/isosurf/makefile.unx deleted file mode 100644 index d7b4d3d92b..0000000000 --- a/utils/glcanvas/samples/isosurf/makefile.unx +++ /dev/null @@ -1,27 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1998 -# Updated: -# Copyright: (c) 1998 Julian Smart -# -# "%W% %G%" -# -# Makefile for isosurf example (UNIX). - -PROGRAM=isosurf - -OPENGLHOME=/home/jacs/mesa/Mesa-2.3 - -EXTRACPPFLAGS=-I$(OPENGLHOME)/include -I../../motif -EXTRALDFLAGS=-L$(OPENGLHOME)/lib -EXTRALDLIBS=-lglcanvas_motif -lMesaGL -lMesaGLU - -OBJECTS=$(PROGRAM).o -EXTRATARGETS=isosurf.dat - -include ../../../../src/makeprog.env - -isosurf.dat: isosurf.dat.gz - gzip -c -d isosurf.dat.gz > isosurf.dat - diff --git a/utils/glcanvas/samples/isosurf/makefile.vc b/utils/glcanvas/samples/isosurf/makefile.vc deleted file mode 100644 index be397eddd6..0000000000 --- a/utils/glcanvas/samples/isosurf/makefile.vc +++ /dev/null @@ -1,25 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: (c) Julian Smart -# -# Makefile : Builds sample (VC++, WIN32) -# Use FINAL=1 argument to nmake to build final version with no debug info. - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -PROGRAM=isosurf -OBJECTS = $(PROGRAM).obj -EXTRAINC=-I..\..\win -EXTRALIBS=$(WXDIR)\lib\glcanvas.lib glu32.lib opengl32.lib -EXTRATARGETS=isosurf.dat - -!include $(WXDIR)\src\makeprog.vc - -isosurf.dat: isosurf.dat.gz - gzip -c -d isosurf.dat.gz > isosurf.dat - - diff --git a/utils/glcanvas/samples/isosurf/mondrian.ico b/utils/glcanvas/samples/isosurf/mondrian.ico deleted file mode 100644 index 2310c5d275a87af295d5ea8dc79ea417a5e74c53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmZQzU<5)11px*Sc)`TLAO@s0fLH;D9e|jTfdxnc0Z - * - * 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, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#ifdef __WXMSW__ -#include -#endif - -#include "lw.h" -#include -#include -#include - -#define wxInt32 int -#define wxUint32 unsigned int - -#ifndef FALSE -#define FALSE 0 -#endif - -#ifndef TRUE -#define TRUE 1 -#endif - -#define MK_ID(a,b,c,d) ((((wxUint32)(a))<<24)| \ - (((wxUint32)(b))<<16)| \ - (((wxUint32)(c))<< 8)| \ - (((wxUint32)(d)) )) - -#define ID_FORM MK_ID('F','O','R','M') -#define ID_LWOB MK_ID('L','W','O','B') -#define ID_PNTS MK_ID('P','N','T','S') -#define ID_SRFS MK_ID('S','R','F','S') -#define ID_SURF MK_ID('S','U','R','F') -#define ID_POLS MK_ID('P','O','L','S') -#define ID_COLR MK_ID('C','O','L','R') - -static wxInt32 read_char(FILE *f) -{ - int c = fgetc(f); - return c; -} - -static wxInt32 read_short(FILE *f) -{ - return (read_char(f)<<8) | read_char(f); -} - -static wxInt32 read_long(FILE *f) -{ - return (read_char(f)<<24) | (read_char(f)<<16) | (read_char(f)<<8) | read_char(f); -} - -static GLfloat read_float(FILE *f) -{ - wxInt32 x = read_long(f); - return *(GLfloat*)&x; -} - -static int read_string(FILE *f, char *s) -{ - int c; - int cnt = 0; - do { - c = read_char(f); - if (cnt < LW_MAX_NAME_LEN) - s[cnt] = c; - else - s[LW_MAX_NAME_LEN-1] = 0; - cnt++; - } while (c != 0); - /* if length of string (including \0) is odd skip another byte */ - if (cnt%2) { - read_char(f); - cnt++; - } - return cnt; -} - -static void read_srfs(FILE *f, int nbytes, lwObject *lwo) -{ - int guess_cnt = lwo->material_cnt; - - while (nbytes > 0) { - lwMaterial *material; - - /* allocate more memory for materials if needed */ - if (guess_cnt <= lwo->material_cnt) { - guess_cnt += guess_cnt/2 + 4; - lwo->material = (lwMaterial*) realloc(lwo->material, sizeof(lwMaterial)*guess_cnt); - } - material = lwo->material + lwo->material_cnt++; - - /* read name */ - nbytes -= read_string(f,material->name); - - /* defaults */ - material->r = 0.7; - material->g = 0.7; - material->b = 0.7; - } - lwo->material = (lwMaterial*) realloc(lwo->material, sizeof(lwMaterial)*lwo->material_cnt); -} - - -static void read_surf(FILE *f, int nbytes, lwObject *lwo) -{ - int i; - char name[LW_MAX_NAME_LEN]; - lwMaterial *material = NULL; - - /* read surface name */ - nbytes -= read_string(f,name); - - /* find material */ - for (i=0; i< lwo->material_cnt; i++) { - if (strcmp(lwo->material[i].name,name) == 0) { - material = &lwo->material[i]; - break; - } - } - - /* read values */ - while (nbytes > 0) { - int id = read_long(f); - int len = read_short(f); - nbytes -= 6 + len + (len%2); - - switch (id) { - case ID_COLR: - material->r = read_char(f) / 255.0; - material->g = read_char(f) / 255.0; - material->b = read_char(f) / 255.0; - read_char(f); /* dummy */ - break; - default: - fseek(f, len+(len%2), SEEK_CUR); - } - } -} - - -static void read_pols(FILE *f, int nbytes, lwObject *lwo) -{ - int guess_cnt = lwo->face_cnt; - - while (nbytes > 0) { - lwFace *face; - int i; - - /* allocate more memory for polygons if necessary */ - if (guess_cnt <= lwo->face_cnt) { - guess_cnt += guess_cnt + 4; - lwo->face = (lwFace*) realloc((void*) lwo->face, sizeof(lwFace)*guess_cnt); - } - face = lwo->face + lwo->face_cnt++; - - /* number of points in this face */ - face->index_cnt = read_short(f); - nbytes -= 2; - - /* allocate space for points */ - face->index = (int*) calloc(sizeof(int)*face->index_cnt,1); - - /* read points in */ - for (i=0; iindex_cnt; i++) { - face->index[i] = read_short(f); - nbytes -= 2; - } - - /* read surface material */ - face->material = read_short(f); - nbytes -= 2; - - /* skip over detail polygons */ - if (face->material < 0) { - int det_cnt; - face->material = -face->material; - det_cnt = read_short(f); - nbytes -= 2; - while (det_cnt-- > 0) { - int cnt = read_short(f); - fseek(f, cnt*2+2, SEEK_CUR); - nbytes -= cnt*2+2; - } - } - face->material -= 1; - } - /* readjust to true size */ - lwo->face = (lwFace*) realloc(lwo->face, sizeof(lwFace)*lwo->face_cnt); -} - - - -static void read_pnts(FILE *f, int nbytes, lwObject *lwo) -{ - int i; - lwo->vertex_cnt = nbytes / 12; - lwo->vertex = (float*) calloc(sizeof(GLfloat)*lwo->vertex_cnt*3, 1); - for (i=0; ivertex_cnt; i++) { - lwo->vertex[i*3+0] = read_float(f); - lwo->vertex[i*3+1] = read_float(f); - lwo->vertex[i*3+2] = read_float(f); - } -} - - - - - - -int lw_is_lwobject(const char *lw_file) -{ - FILE *f = fopen(lw_file, "rb"); - if (f) { - wxInt32 form = read_long(f); - wxInt32 nlen = read_long(f); - wxInt32 lwob = read_long(f); - fclose(f); - if (form == ID_FORM && nlen != 0 && lwob == ID_LWOB) - return TRUE; - } - return FALSE; -} - - -lwObject *lw_object_read(const char *lw_file) -{ - FILE *f = NULL; - lwObject *lw_object = NULL; - - wxInt32 form_bytes = 0; - wxInt32 read_bytes = 0; - - /* open file */ - f = fopen(lw_file, "rb"); - if (f == NULL) { - return NULL; - } - - /* check for headers */ - if (read_long(f) != ID_FORM) { - fclose(f); - return NULL; - } - form_bytes = read_long(f); - read_bytes += 4; - - if (read_long(f) != ID_LWOB) { - fclose(f); - return NULL; - } - - /* create new lwObject */ - lw_object = (lwObject*) calloc(sizeof(lwObject),1); - - /* read chunks */ - while (read_bytes < form_bytes) { - wxInt32 id = read_long(f); - wxInt32 nbytes = read_long(f); - read_bytes += 8 + nbytes + (nbytes%2); - - switch (id) { - case ID_PNTS: - read_pnts(f, nbytes, lw_object); - break; - case ID_POLS: - read_pols(f, nbytes, lw_object); - break; - case ID_SRFS: - read_srfs(f, nbytes, lw_object); - break; - case ID_SURF: - read_surf(f, nbytes, lw_object); - break; - default: - fseek(f, nbytes + (nbytes%2), SEEK_CUR); - } - } - - fclose(f); - return lw_object; -} - - - -void lw_object_free(lwObject *lw_object) -{ - if (lw_object->face) { - int i; - for (i=0; iface_cnt; i++) - free(lw_object->face[i].index); - free(lw_object->face); - } - free(lw_object->material); - free(lw_object->vertex); - free(lw_object); -} - - - - - -#define PX(i) (lw_object->vertex[face->index[i]*3+0]) -#define PY(i) (lw_object->vertex[face->index[i]*3+1]) -#define PZ(i) (lw_object->vertex[face->index[i]*3+2]) -void lw_object_show(const lwObject *lw_object) -{ - int i,j; - int prev_index_cnt = -1; - int prev_material = -1; - GLfloat prev_nx = 0; - GLfloat prev_ny = 0; - GLfloat prev_nz = 0; - - for (i=0; iface_cnt; i++) { - GLfloat ax,ay,az,bx,by,bz,nx,ny,nz,r; - const lwFace *face = lw_object->face+i; - - /* ignore faces with less than 3 points */ - if (face->index_cnt < 3) - continue; - - /* calculate normal */ - ax = PX(1) - PX(0); - ay = PY(1) - PY(0); - az = PZ(1) - PZ(0); - - bx = PX(face->index_cnt-1) - PX(0); - by = PY(face->index_cnt-1) - PY(0); - bz = PZ(face->index_cnt-1) - PZ(0); - - nx = ay * bz - az * by; - ny = az * bx - ax * bz; - nz = ax * by - ay * bx; - - r = sqrt(nx*nx + ny*ny + nz*nz); - if (r < 0.000001) /* avoid division by zero */ - continue; - nx /= r; - ny /= r; - nz /= r; - - /* glBegin/glEnd */ - if (prev_index_cnt != face->index_cnt || prev_index_cnt > 4) { - if (prev_index_cnt > 0) glEnd(); - prev_index_cnt = face->index_cnt; - switch (face->index_cnt) { - case 3: - glBegin(GL_TRIANGLES); - break; - case 4: - glBegin(GL_QUADS); - break; - default: - glBegin(GL_POLYGON); - } - } - - /* update material if necessary */ - if (prev_material != face->material) { - prev_material = face->material; - glColor3f(lw_object->material[face->material].r, - lw_object->material[face->material].g, - lw_object->material[face->material].b); - } - - /* update normal if necessary */ - if (nx != prev_nx || ny != prev_ny || nz != prev_nz) { - prev_nx = nx; - prev_ny = ny; - prev_nz = nz; - glNormal3f(nx,ny,nz); - } - - /* draw polygon/triangle/quad */ - for (j=0; jindex_cnt; j++) - glVertex3f(PX(j),PY(j),PZ(j)); - - } - - /* if glBegin was called call glEnd */ - if (prev_index_cnt > 0) - glEnd(); -} - - -GLfloat lw_object_radius(const lwObject *lwo) -{ - int i; - double max_radius = 0.0; - - for (i=0; ivertex_cnt; i++) { - GLfloat *v = &lwo->vertex[i*3]; - double r = v[0]*v[0] + v[1]*v[1] + v[2]*v[2]; - if (r > max_radius) - max_radius = r; - } - return sqrt(max_radius); -} - -void lw_object_scale(lwObject *lwo, GLfloat scale) -{ - int i; - - for (i=0; ivertex_cnt; i++) { - lwo->vertex[i*3+0] *= scale; - lwo->vertex[i*3+1] *= scale; - lwo->vertex[i*3+2] *= scale; - } -} - - diff --git a/utils/glcanvas/samples/penguin/lw.h b/utils/glcanvas/samples/penguin/lw.h deleted file mode 100644 index b49e8ffc91..0000000000 --- a/utils/glcanvas/samples/penguin/lw.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright (C) 1998 Janne Löf - * - * 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, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - - -#ifndef LW_H -#define LW_H - -#include - -#define LW_MAX_POINTS 200 -#define LW_MAX_NAME_LEN 500 - -typedef struct { - char name[LW_MAX_NAME_LEN]; - GLfloat r,g,b; -} lwMaterial; - -typedef struct { - int material; /* material of this face */ - int index_cnt; /* number of vertices */ - int *index; /* index to vertex */ - float *texcoord; /* u,v texture coordinates */ -} lwFace; - -typedef struct { - int face_cnt; - lwFace *face; - - int material_cnt; - lwMaterial *material; - - int vertex_cnt; - GLfloat *vertex; - -} lwObject; - -#ifdef __cplusplus -extern "C" { -#endif - -int lw_is_lwobject(const char *lw_file); -lwObject *lw_object_read(const char *lw_file); -void lw_object_free( lwObject *lw_object); -void lw_object_show(const lwObject *lw_object); - -GLfloat lw_object_radius(const lwObject *lw_object); -void lw_object_scale (lwObject *lw_object, GLfloat scale); - -#ifdef __cplusplus -} -#endif - -#endif /* LW_H */ - diff --git a/utils/glcanvas/samples/penguin/makefile.unx b/utils/glcanvas/samples/penguin/makefile.unx deleted file mode 100644 index 2625c45bc9..0000000000 --- a/utils/glcanvas/samples/penguin/makefile.unx +++ /dev/null @@ -1,21 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1998 -# Updated: -# Copyright: (c) 1998 Julian Smart -# -# Makefile for penguin example (UNIX). - -PROGRAM=penguin - -OPENGLHOME=/home/jacs/mesa/Mesa-2.3 - -EXTRACPPFLAGS=-I$(OPENGLHOME)/include -I../../motif -EXTRALDFLAGS=-L$(OPENGLHOME)/lib -EXTRALDLIBS=-lglcanvas_motif -lMesaGL -lMesaGLU - -OBJECTS=$(PROGRAM).o trackball.o lw.o - -include ../../../../src/makeprog.env - diff --git a/utils/glcanvas/samples/penguin/makefile.vc b/utils/glcanvas/samples/penguin/makefile.vc deleted file mode 100644 index 27e4721eaa..0000000000 --- a/utils/glcanvas/samples/penguin/makefile.vc +++ /dev/null @@ -1,25 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: (c) Julian Smart -# -# Makefile : Builds sample (VC++, WIN32) -# Use FINAL=1 argument to nmake to build final version with no debug info. - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -PROGRAM=penguin -OBJECTS = $(PROGRAM).obj trackball.obj lw.obj -EXTRAINC=-I..\..\win -EXTRALIBS=$(WXDIR)\lib\glcanvas.lib glu32.lib opengl32.lib - -!include $(WXDIR)\src\makeprog.vc - -lw.obj: lw.cpp lw.h - $(cc) @<< -$(CPPFLAGS2) /c $*.$(SRCSUFF) -<< - diff --git a/utils/glcanvas/samples/penguin/penguin.cpp b/utils/glcanvas/samples/penguin/penguin.cpp deleted file mode 100644 index aed5156e5b..0000000000 --- a/utils/glcanvas/samples/penguin/penguin.cpp +++ /dev/null @@ -1,241 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: penguin.cpp -// Purpose: wxGLCanvas demo program -// Author: Robert Roebling -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation -#pragma interface -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include "penguin.h" -#include - -#define VIEW_ASPECT 1.3 - -/* `Main program' equivalent, creating windows and returning main app frame */ -bool MyApp::OnInit(void) -{ - - /* Create the main frame window */ - MyFrame *frame = new MyFrame(NULL, "wxWindows OpenGL Demo", wxPoint(50, 50), wxSize(400, 300)); - - /* Make a menubar */ - wxMenu *fileMenu = new wxMenu; - - fileMenu->Append(wxID_EXIT, "E&xit"); - wxMenuBar *menuBar = new wxMenuBar; - menuBar->Append(fileMenu, "&File"); - frame->SetMenuBar(menuBar); - - frame->m_canvas = new TestGLCanvas(frame, -1, wxPoint(0, 0), wxSize(200, 200)); - - /* Load file wiht mesh data */ - frame->m_canvas->LoadLWO( "penguin.lwo" ); - - /* Show the frame */ - frame->Show(TRUE); - - return TRUE; -} - -IMPLEMENT_APP(MyApp) - -BEGIN_EVENT_TABLE(MyFrame, wxFrame) - EVT_MENU(wxID_EXIT, MyFrame::OnExit) -END_EVENT_TABLE() - -/* My frame constructor */ -MyFrame::MyFrame(wxFrame *frame, const wxString& title, const wxPoint& pos, - const wxSize& size, long style): - wxFrame(frame, -1, title, pos, size, style) -{ - m_canvas = NULL; -} - -/* Intercept menu commands */ -void MyFrame::OnExit(wxCommandEvent& event) -{ - Destroy(); -} - -bool MyFrame::OnClose(void) -{ - return TRUE; -} - -BEGIN_EVENT_TABLE(TestGLCanvas, wxGLCanvas) - EVT_SIZE(TestGLCanvas::OnSize) - EVT_PAINT(TestGLCanvas::OnPaint) - EVT_ERASE_BACKGROUND(TestGLCanvas::OnEraseBackground) - EVT_MOUSE_EVENTS(TestGLCanvas::OnMouse) -END_EVENT_TABLE() - -TestGLCanvas::TestGLCanvas(wxWindow *parent, wxWindowID id, - const wxPoint& pos, const wxSize& size, long style, const wxString& name): - wxGLCanvas(parent, id, pos, size, style, name) -{ - block = FALSE; -} - -TestGLCanvas::~TestGLCanvas(void) -{ - /* destroy mesh */ - lw_object_free(info.lwobject); -} - -void TestGLCanvas::OnPaint( wxPaintEvent& event ) -{ - /* must always be here */ - wxPaintDC dc(this); - -#ifndef __WXMOTIF__ - if (!GetContext()) return; -#endif - - SetCurrent(); - - /* initialize OpenGL */ - if (info.do_init == TRUE) - { - InitGL(); - info.do_init = FALSE; - } - - /* view */ - glMatrixMode( GL_PROJECTION ); - glLoadIdentity(); - gluPerspective( info.zoom, VIEW_ASPECT, 1, 100 ); - glMatrixMode( GL_MODELVIEW ); - - /* clear */ - glClearColor( .3, .4, .6, 1 ); - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - /* transformations */ - GLfloat m[4][4]; - glLoadIdentity(); - glTranslatef( 0, 0, -30 ); - build_rotmatrix( m,info.quat ); - glMultMatrixf( &m[0][0] ); - - /* draw object */ - lw_object_show( info.lwobject ); - - /* flush */ - glFlush(); - - /* swap */ - SwapBuffers(); -} - -void TestGLCanvas::OnSize(wxSizeEvent& event) -{ - int width, height; - GetClientSize(& width, & height); - -#ifndef __WXMOTIF__ - if (GetContext()) -#endif - { - SetCurrent(); - glViewport(0, 0, width, height); - } -} - -void TestGLCanvas::OnEraseBackground(wxEraseEvent& event) -{ - /* Do nothing, to avoid flashing on MSW */ -} - -void TestGLCanvas::LoadLWO(const wxString &filename) -{ - /* test if lightwave object */ - if (!lw_is_lwobject(filename)) return; - - /* read lightwave object */ - lwObject *lwobject = lw_object_read(filename); - - /* scale */ - lw_object_scale(lwobject, 10.0 / lw_object_radius(lwobject)); - - /* set up mesh info */ - info.do_init = TRUE; - info.lwobject = lwobject; - info.beginx = 0; - info.beginy = 0; - info.zoom = 45; - trackball( info.quat, 0.0, 0.0, 0.0, 0.0 ); -} - -void TestGLCanvas::OnMouse( wxMouseEvent& event ) -{ - wxSize sz(GetClientSize()); - if (event.Dragging()) - { - /* drag in progress, simulate trackball */ - float spin_quat[4]; - trackball(spin_quat, - (2.0*info.beginx - sz.x) / sz.x, - ( sz.y - 2.0*info.beginy) / sz.y, - ( 2.0*event.GetX() - sz.x) / sz.x, - ( sz.y - 2.0*event.GetY()) / sz.y); - - add_quats( spin_quat, info.quat, info.quat ); - - /* orientation has changed, redraw mesh */ - Refresh(FALSE); - } - - info.beginx = event.GetX(); - info.beginy = event.GetY(); -} - -void TestGLCanvas::InitGL(void) -{ - GLfloat light0_pos[4] = { -50.0, 50.0, 0.0, 0.0 }; - GLfloat light0_color[4] = { .6, .6, .6, 1.0 }; /* white light */ - GLfloat light1_pos[4] = { 50.0, 50.0, 0.0, 0.0 }; - GLfloat light1_color[4] = { .4, .4, 1, 1.0 }; /* cold blue light */ - - /* remove back faces */ - glDisable(GL_CULL_FACE); - glEnable(GL_DEPTH_TEST); - - /* speedups */ - glEnable(GL_DITHER); - glShadeModel(GL_SMOOTH); - glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST); - glHint(GL_POLYGON_SMOOTH_HINT, GL_FASTEST); - - /* light */ - glLightfv(GL_LIGHT0, GL_POSITION, light0_pos); - glLightfv(GL_LIGHT0, GL_DIFFUSE, light0_color); - glLightfv(GL_LIGHT1, GL_POSITION, light1_pos); - glLightfv(GL_LIGHT1, GL_DIFFUSE, light1_color); - glEnable(GL_LIGHT0); - glEnable(GL_LIGHT1); - glEnable(GL_LIGHTING); - - glColorMaterial(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE); - glEnable(GL_COLOR_MATERIAL); -} - - diff --git a/utils/glcanvas/samples/penguin/penguin.h b/utils/glcanvas/samples/penguin/penguin.h deleted file mode 100644 index 5f17311513..0000000000 --- a/utils/glcanvas/samples/penguin/penguin.h +++ /dev/null @@ -1,85 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: penguin.h -// Purpose: wxGLCanvas demo program -// Author: Robert Roebling -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Robert Roebling -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_PENGUIN_H_ -#define _WX_PENGUIN_H_ - - -#include "wx/defs.h" -#include "wx/app.h" -#include "wx/menu.h" -#include "wx/dcclient.h" - -#include "glcanvas.h" - -extern "C" { -#include "lw.h" -#include "trackball.h" -} - -/* information needed to display lightwave mesh */ -typedef struct -{ -// gint do_init; /* true if initgl not yet called */ - int do_init; - lwObject *lwobject; /* lightwave object mesh */ - float beginx,beginy; /* position of mouse */ - float quat[4]; /* orientation of object */ - float zoom; /* field of view in degrees */ -} mesh_info; - - -/* Define a new application type */ -class MyApp: public wxApp -{ -public: - bool OnInit(void); -}; - -/* Define a new frame type */ -class TestGLCanvas; -class MyFrame: public wxFrame -{ -public: - MyFrame(wxFrame *frame, const wxString& title, const wxPoint& pos, const wxSize& size, - long style = wxDEFAULT_FRAME_STYLE); - - void OnExit(wxCommandEvent& event); - bool OnClose(void); -public: - TestGLCanvas* m_canvas; - -DECLARE_EVENT_TABLE() -}; - - -class TestGLCanvas: public wxGLCanvas -{ - public: - TestGLCanvas(wxWindow *parent, const wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, const wxString& name = "TestGLCanvas"); - ~TestGLCanvas(void); - - void OnPaint(wxPaintEvent& event); - void OnSize(wxSizeEvent& event); - void OnEraseBackground(wxEraseEvent& event); - void LoadLWO( const wxString &filename); - void OnMouse( wxMouseEvent& event ); - void InitGL(void); - - mesh_info info; - bool block; - -DECLARE_EVENT_TABLE() -}; - -#endif - diff --git a/utils/glcanvas/samples/penguin/penguin.lwo b/utils/glcanvas/samples/penguin/penguin.lwo deleted file mode 100644 index 3f5122db827e09028d394b682ee6c0a1deec0ddd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10028 zcmb`Nd3a6N{>Imi5HiR>L`cLCkr+b~iD7@Yga)mmQZp4=YN()6vqTUTO=2i2BGgb* z%r)0uJA~G(W@>g(V~wq`{NBCRO7HpO_s6}@bMJGX=Y7xT{jRmw`mTNUIVTn0uEU3n z)d+6Wxm{dBhxi1>SmlHPNduDlCb3SvzZf(`xOQLmP8vRZ081F~#o!yPecO*w=W#W> z()JEU0Y>0|G&~~GSUsbk@U@=bvOPsPKNU5$pTHQe_5AlD&WA@t*gn`J{2$I8>N)C3 z&0}-Q3iLA)z53{f4VE+8)zuTU22X(dU?X?>W>v!PXp@ho@X{KP_cyT;z5;Hcpa^&ItL9>wjRTTQ->;5j)tcCW0Cm5&tlTzLE1 z=y?&hdtOv8xIOk+fRDW%n_KQ!pFNKwx5xPB%%{=ohZ@=WFKNg~AAQq|dq)1WrS$2u zCELEaRcK_7>}=FsQ-T70!j0b3*3*hjA>{P^Xk&U$gBC|$G&h~xW#mug^jWoFKAL@K zWPkmNk~R*K^%|J20lmN%bb z8y4`({gzq1ZjL7(r_cEUqmeadVN06z_j!Kd+p*TPB`0Y0yE>LfL7bI6X)5hXoXQIh z)U)OsO*QIfF0krWzhUJJDQS4=mB^u<9BRm6PQzgy!*Q&`+Q?yT#p}(|JJR@eZTRx3!TN^&C28*FLVok74f>`#llAu3 zy}3g@cbLa=7;Cw&ywdbm`U{$JeUepXY;`?tX*=@X-HD$*IYLkW>^McljNk=91I@y& zXQ^FoX?{8RwpsA{l0L6j41f2-6-w`&rH9YIXa%`crR1(3Q;BAmEYE%CDBa@^N@j)p z*qki!Uch^huQ{-fGIqbFyr@U~$9)gQ{oL;PGQP0KIdk{@+BAQ{2!3v27pqM5C;E&2 zNBQ0vkF1`tnH08QHs@=WSzZ$vl{xw?Uvz4U@Z)7Pby zCRdj~4Y&0Jo8EiB8l`J*>Eb*x3n)dOzqF8c)hsY~CpD&4Z+4Qd6+Px5de}z9SI~QlB{yv_s8T=Dnd$^XidM)FjohQ=y{){Sqyp7iy;7Nz$68I2Qusl-MFYnKSROwd;`{fTl=-r^ReJOh zp2tIIxBnB%Io~vQ|I&(fCS+REvmep-H}_Ib|M}Lu(EA2!G?Ok?aJ6Q}N7K7ICOsck z%gTJQnYKrsqz7%bShJQn8^!mf8(!5vv~p6O8TC4kHL9FgX3d`3h3>u^LT?7STi>nP zK<7sW(#2o1tyzmp(DIs#Y1z8(t!WEhQ2ebV+T(uHnp}JaeVSI6_C)Wn#&yc20Uiak z;@4bj@W;=n>a}xpcEuel)iZ}a8!?j}4&_$bv1v5&Tp?K{?^r|o4c6bjf0};1z1Pa{ z{g6gCD^DZGR%kSQuNE=i8S`}ZB~~KRn7PM&!AB=ezv+ksY;P9 z-Dv!T2A22y2bB52PTJ9Pjukg2-mF`_19#XvcjyUs=oNS933up;<8@f?w{FLm87+P|UQG{Aun&n&vZ7Z=1D^|N29BeO;{@6hndhVn(i6(0YtM ze|leT_1k6ciA|snv$yj_Zh_|RKPORc_+-Aj>=4U&)jD(c-KBg-&)G#ir-l)K8;RGi z(RTx0P~yoIMv9q2V~>}h4uftPsaacT){?|ANiYnF0MBw)b2*hrx%d( zptDAP&roXn@|FJkl0;)6c~SQ7&nPJKMgO_lZVcvlG{CuritQ0|--VC45mqjtUzc~sg~ ztY;K`*K9fuy}89m9XE((PsrlELs}atb9>R)8tJ;#z}48kvXXwdaxv;L<^v-?x14S+ znnRw0j~hG23~W+jT*;_@v3bV!(q+jtshi%sPF-XB&;I%ww$HS>W9;f``r)W*X7lt< zz>n!~;>&T*=H@eRjQnv&c;7qg^+OY0qdpn+GxW`8UMs$idVcjj#ul1;-n&90 z7xgj{2c}TWi*%ZDm>Vh6H&NXK=V{vWIY!p`rF!dD!)eNlbR#e2hW@7d1wOjfP9t$_ zTWa(=pHF%6&Pe&{0oDD{gHQ2HHSz|h>aX5@#HZaqZ)Ba@qqqKOCja_wj?w$YTr(xP z8XtKD-+x@snHO7C=gk&H8CjW_@T?mF=An8SMs|Wf&uIBFe9B!f zBfH%UKCf_yeyHBmB2LW~MHY?K9mdkgYe7b~Tc&xjYkT_o_xeWf=bg=zG3BYi?W7U5 zah^WMbrmi8`=C*CMg!_Rw16hfYG8!bzd>0yuEh-Ax7P4{=S8Qk|3M*{$BodmXj)nA zHjRp^VAPE5PmA!Zk6G~zZLPSCuAJD+L%y7Cgr;nwl>y#-Ou1`D&4f#|*taB~{M~vZ zEbbmg zh3CiY(oc1V8rt5Wq*3e1aC6N*7v9LF8HGLVM^}vbJSgxWK0}Yv!E?KKr5Cg-y~a;; zb;|&LA@Lm54$I>;_7CMpucz=;5vk^tJ8AsT=|t|kaxHgH^X1D9pD|N!@8)azMDvh7 zbInPivHa#Ip*(m%du~M?1@S*4xp@Rvi*o7+N`T8$6;SuTDh^=%uHgL|K~fwx_2kT$}70F`L~Ys=aR)(WJps%xjxwosY+ zvi9sFm9~MGGk>J!YY&y_`>canjWLv8ek1D#r$} zj%rmEStodVzE&WegzE^EYYt$YSy#a#Sr>S_E&`;BaGjwt4S>p7B3L)YDuQ$qbzPw{ zZNa*;o`N-JJ>c#6-UI0&Tz9BU+8k(3D$!3RcrAF=_^<- zs7&La{RQ)9pDWf3fxTPVmloL3VCIBV^YV%dVlf@KM(gUGrps7!V2N4loi zMbX}})sCh>Wm=g{XEVha8Egi;eOgsOW(YSOD$^=(vsB$Ql{N#JCfE$9Oshb@6|5Pa zO_KS8$mi88s7x#4j+ia#;_zOTcS$UWd`gXn$}|>xl+M8Fvc!nWAabQyP?U|EfIAQ_^g$)M1ph?Y!OtZk!-1Q(b(fsHS-d+-=$Dl7me%( zkw&s*s;&XZGQpNYW!eDOmo5ssm1~Ixkvm@um1!_r&Q^+3t;SZs+xK4skQKr$hZd!) z*lNKl;=8~q;UYlf_k&eXnO1|!u@UH=WDP(TiV>@!GL2{XY>i;{_n~~@d_fX~%ZJJ| z9=cAYYZYq=vR1G)P?^R-gb3BxNs&^rp2HI>S{aT?d#SAk=M1LMJZ={#MoMF zx0=NbWVc`(DpNOB2xrey8+$8MGw)IREriO{4I}oc`Sz+=>VxbRY&TS?FMX+|WQy3U>l3Q^roSGlCVvNuCz2CP;yBr=c=s zP&rFY+?}Jcm@{^ER=Bz#M}<2Jl_`VDtJTG6NLCDFzosKl3j(j>s&yt3U>u6$1?O$rW(7ZdRh|Xny5Pkm1!8>@&6Lcm0gFo=PLzrUAQe! znTA1cs`Q3p8psX7{son(h7**|3GZlms$n3zMBPcKOg-2w_Pb#2xHE1ER}bX4aJQf` zt%rN~wqVZa=^^2YgUCJ~g37cWRE{Xl?kMH~az~7~4V7tWc9-1~%meJMn(v;fy9)L*h6)yo*)m!h|5r! zdcr*t%mrsD(~==w(>Ir=!>PoW5ig|%N7VHsJre1JQRoyj}Y9R7Hcnp=P7xbB^ z({PrOl>(9H`xGiuAN=6EE5;s! z%Cs!pJJADo-1TpT^8k_WfVWVYmW3wBRAY+yvIKbh9r_L`Q(ui~_&=BjyQ|XDAmYx( z>$@uT)ilk1(iUT-H7CW&X~i@rn;~;jsh{So6&H2oz?{{H;;POWOs1vT1LZum66(J9 z(~85}*La|nP^p*ZqLmb^JWJMGg!2PQwjEw4tJDu8WSu8_qGs^|5qB|OKT)YS8=;kw z^I`M|;k>j`YUUBRnoPaeGv!L*o|N~lH;BAXpRqqxT86#WT*Voc#kWa$AH;*?3-+4j ztF)r#rnw7Nfeq2zgewCg{(gYhLsVKub5$;$ZTx4fJH9dE4#Vq>Ds9QuY93H^q$t+a40LB#h{yk4);mKZDR%4uHzjP=yK>=DSkR2m59 zEoLc)lNKrS)4b(LBXd@1AefJ+^J8BsRte-wF`qY>OslYOwKAd`{`d>Zx3WVZ@~R`jKeR#v6ev~rrCsH+NAPL1$Wb>+ZhS^?)FT}8G^okum0 zRboCjFqy{Smz?~K*a*MX*(^Hl_sX$`HC z79{FIz$&Q`L8{IkE7MABm~uh*8_zINR|7=;-DemZtI|-dvQ|Z;mDxRNV3@Np0gvksW81?0^7xh-9V!1UnH(FBFFgOn*oH;_LQRflt_}X1(J}x2 PcWrX~nY%asqw)U-TLDh; diff --git a/utils/glcanvas/samples/penguin/penguin.rc b/utils/glcanvas/samples/penguin/penguin.rc deleted file mode 100644 index 626b82f58a..0000000000 --- a/utils/glcanvas/samples/penguin/penguin.rc +++ /dev/null @@ -1,3 +0,0 @@ -/* mondrian ICON "mondrian.ico" */ -#include "wx/msw/wx.rc" - diff --git a/utils/glcanvas/samples/penguin/trackball.c b/utils/glcanvas/samples/penguin/trackball.c deleted file mode 100644 index f23d3db30b..0000000000 --- a/utils/glcanvas/samples/penguin/trackball.c +++ /dev/null @@ -1,324 +0,0 @@ -/* - * (c) Copyright 1993, 1994, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "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 SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -/* - * Trackball code: - * - * Implementation of a virtual trackball. - * Implemented by Gavin Bell, lots of ideas from Thant Tessman and - * the August '88 issue of Siggraph's "Computer Graphics," pp. 121-129. - * - * Vector manip code: - * - * Original code from: - * David M. Ciemiewicz, Mark Grossman, Henry Moreton, and Paul Haeberli - * - * Much mucking with by: - * Gavin Bell - */ -#include -#include "trackball.h" - -/* - * This size should really be based on the distance from the center of - * rotation to the point on the object underneath the mouse. That - * point would then track the mouse as closely as possible. This is a - * simple example, though, so that is left as an Exercise for the - * Programmer. - */ -#define TRACKBALLSIZE (0.8) - -/* - * Local function prototypes (not defined in trackball.h) - */ -static float tb_project_to_sphere(float, float, float); -static void normalize_quat(float [4]); - -void -vzero(float *v) -{ - v[0] = 0.0; - v[1] = 0.0; - v[2] = 0.0; -} - -void -vset(float *v, float x, float y, float z) -{ - v[0] = x; - v[1] = y; - v[2] = z; -} - -void -vsub(const float *src1, const float *src2, float *dst) -{ - dst[0] = src1[0] - src2[0]; - dst[1] = src1[1] - src2[1]; - dst[2] = src1[2] - src2[2]; -} - -void -vcopy(const float *v1, float *v2) -{ - register int i; - for (i = 0 ; i < 3 ; i++) - v2[i] = v1[i]; -} - -void -vcross(const float *v1, const float *v2, float *cross) -{ - float temp[3]; - - temp[0] = (v1[1] * v2[2]) - (v1[2] * v2[1]); - temp[1] = (v1[2] * v2[0]) - (v1[0] * v2[2]); - temp[2] = (v1[0] * v2[1]) - (v1[1] * v2[0]); - vcopy(temp, cross); -} - -float -vlength(const float *v) -{ - return sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2]); -} - -void -vscale(float *v, float div) -{ - v[0] *= div; - v[1] *= div; - v[2] *= div; -} - -void -vnormal(float *v) -{ - vscale(v,1.0/vlength(v)); -} - -float -vdot(const float *v1, const float *v2) -{ - return v1[0]*v2[0] + v1[1]*v2[1] + v1[2]*v2[2]; -} - -void -vadd(const float *src1, const float *src2, float *dst) -{ - dst[0] = src1[0] + src2[0]; - dst[1] = src1[1] + src2[1]; - dst[2] = src1[2] + src2[2]; -} - -/* - * Ok, simulate a track-ball. Project the points onto the virtual - * trackball, then figure out the axis of rotation, which is the cross - * product of P1 P2 and O P1 (O is the center of the ball, 0,0,0) - * Note: This is a deformed trackball-- is a trackball in the center, - * but is deformed into a hyperbolic sheet of rotation away from the - * center. This particular function was chosen after trying out - * several variations. - * - * It is assumed that the arguments to this routine are in the range - * (-1.0 ... 1.0) - */ -void -trackball(float q[4], float p1x, float p1y, float p2x, float p2y) -{ - float a[3]; /* Axis of rotation */ - float phi; /* how much to rotate about axis */ - float p1[3], p2[3], d[3]; - float t; - - if (p1x == p2x && p1y == p2y) { - /* Zero rotation */ - vzero(q); - q[3] = 1.0; - return; - } - - /* - * First, figure out z-coordinates for projection of P1 and P2 to - * deformed sphere - */ - vset(p1,p1x,p1y,tb_project_to_sphere(TRACKBALLSIZE,p1x,p1y)); - vset(p2,p2x,p2y,tb_project_to_sphere(TRACKBALLSIZE,p2x,p2y)); - - /* - * Now, we want the cross product of P1 and P2 - */ - vcross(p2,p1,a); - - /* - * Figure out how much to rotate around that axis. - */ - vsub(p1,p2,d); - t = vlength(d) / (2.0*TRACKBALLSIZE); - - /* - * Avoid problems with out-of-control values... - */ - if (t > 1.0) t = 1.0; - if (t < -1.0) t = -1.0; - phi = 2.0 * asin(t); - - axis_to_quat(a,phi,q); -} - -/* - * Given an axis and angle, compute quaternion. - */ -void -axis_to_quat(float a[3], float phi, float q[4]) -{ - vnormal(a); - vcopy(a,q); - vscale(q,sin(phi/2.0)); - q[3] = cos(phi/2.0); -} - -/* - * Project an x,y pair onto a sphere of radius r OR a hyperbolic sheet - * if we are away from the center of the sphere. - */ -static float -tb_project_to_sphere(float r, float x, float y) -{ - float d, t, z; - - d = sqrt(x*x + y*y); - if (d < r * 0.70710678118654752440) { /* Inside sphere */ - z = sqrt(r*r - d*d); - } else { /* On hyperbola */ - t = r / 1.41421356237309504880; - z = t*t / d; - } - return z; -} - -/* - * Given two rotations, e1 and e2, expressed as quaternion rotations, - * figure out the equivalent single rotation and stuff it into dest. - * - * This routine also normalizes the result every RENORMCOUNT times it is - * called, to keep error from creeping in. - * - * NOTE: This routine is written so that q1 or q2 may be the same - * as dest (or each other). - */ - -#define RENORMCOUNT 97 - -void -add_quats(float q1[4], float q2[4], float dest[4]) -{ - static int count=0; - float t1[4], t2[4], t3[4]; - float tf[4]; - - vcopy(q1,t1); - vscale(t1,q2[3]); - - vcopy(q2,t2); - vscale(t2,q1[3]); - - vcross(q2,q1,t3); - vadd(t1,t2,tf); - vadd(t3,tf,tf); - tf[3] = q1[3] * q2[3] - vdot(q1,q2); - - dest[0] = tf[0]; - dest[1] = tf[1]; - dest[2] = tf[2]; - dest[3] = tf[3]; - - if (++count > RENORMCOUNT) { - count = 0; - normalize_quat(dest); - } -} - -/* - * Quaternions always obey: a^2 + b^2 + c^2 + d^2 = 1.0 - * If they don't add up to 1.0, dividing by their magnitued will - * renormalize them. - * - * Note: See the following for more information on quaternions: - * - * - Shoemake, K., Animating rotation with quaternion curves, Computer - * Graphics 19, No 3 (Proc. SIGGRAPH'85), 245-254, 1985. - * - Pletinckx, D., Quaternion calculus as a basic tool in computer - * graphics, The Visual Computer 5, 2-13, 1989. - */ -static void -normalize_quat(float q[4]) -{ - int i; - float mag; - - mag = (q[0]*q[0] + q[1]*q[1] + q[2]*q[2] + q[3]*q[3]); - for (i = 0; i < 4; i++) q[i] /= mag; -} - -/* - * Build a rotation matrix, given a quaternion rotation. - * - */ -void -build_rotmatrix(float m[4][4], float q[4]) -{ - m[0][0] = 1.0 - 2.0 * (q[1] * q[1] + q[2] * q[2]); - m[0][1] = 2.0 * (q[0] * q[1] - q[2] * q[3]); - m[0][2] = 2.0 * (q[2] * q[0] + q[1] * q[3]); - m[0][3] = 0.0; - - m[1][0] = 2.0 * (q[0] * q[1] + q[2] * q[3]); - m[1][1]= 1.0 - 2.0 * (q[2] * q[2] + q[0] * q[0]); - m[1][2] = 2.0 * (q[1] * q[2] - q[0] * q[3]); - m[1][3] = 0.0; - - m[2][0] = 2.0 * (q[2] * q[0] - q[1] * q[3]); - m[2][1] = 2.0 * (q[1] * q[2] + q[0] * q[3]); - m[2][2] = 1.0 - 2.0 * (q[1] * q[1] + q[0] * q[0]); - m[2][3] = 0.0; - - m[3][0] = 0.0; - m[3][1] = 0.0; - m[3][2] = 0.0; - m[3][3] = 1.0; -} - diff --git a/utils/glcanvas/samples/penguin/trackball.h b/utils/glcanvas/samples/penguin/trackball.h deleted file mode 100644 index b676fb4e54..0000000000 --- a/utils/glcanvas/samples/penguin/trackball.h +++ /dev/null @@ -1,78 +0,0 @@ -/* - * (c) Copyright 1993, 1994, Silicon Graphics, Inc. - * ALL RIGHTS RESERVED - * Permission to use, copy, modify, and distribute this software for - * any purpose and without fee is hereby granted, provided that the above - * copyright notice appear in all copies and that both the copyright notice - * and this permission notice appear in supporting documentation, and that - * the name of Silicon Graphics, Inc. not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. - * - * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "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 SILICON - * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, - * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY - * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, - * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF - * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN - * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE - * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. - * - * US Government Users Restricted Rights - * Use, duplication, or disclosure by the Government is subject to - * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph - * (c)(1)(ii) of the Rights in Technical Data and Computer Software - * clause at DFARS 252.227-7013 and/or in similar or successor - * clauses in the FAR or the DOD or NASA FAR Supplement. - * Unpublished-- rights reserved under the copyright laws of the - * United States. Contractor/manufacturer is Silicon Graphics, - * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. - * - * OpenGL(TM) is a trademark of Silicon Graphics, Inc. - */ -/* - * trackball.h - * A virtual trackball implementation - * Written by Gavin Bell for Silicon Graphics, November 1988. - */ - -/* - * Pass the x and y coordinates of the last and current positions of - * the mouse, scaled so they are from (-1.0 ... 1.0). - * - * The resulting rotation is returned as a quaternion rotation in the - * first paramater. - */ -void -trackball(float q[4], float p1x, float p1y, float p2x, float p2y); - -/* - * Given two quaternions, add them together to get a third quaternion. - * Adding quaternions to get a compound rotation is analagous to adding - * translations to get a compound translation. When incrementally - * adding rotations, the first argument here should be the new - * rotation, the second and third the total rotation (which will be - * over-written with the resulting new total rotation). - */ -void -add_quats(float *q1, float *q2, float *dest); - -/* - * A useful function, builds a rotation matrix in Matrix based on - * given quaternion. - */ -void -build_rotmatrix(float m[4][4], float q[4]); - -/* - * This function computes a quaternion based on an axis (defined by - * the given vector) and an angle about which to rotate. The angle is - * expressed in radians. The result is put into the third argument. - */ -void -axis_to_quat(float a[3], float phi, float q[4]); - diff --git a/utils/glcanvas/win/glcanvas.cpp b/utils/glcanvas/win/glcanvas.cpp deleted file mode 100644 index 252bcb8c0c..0000000000 --- a/utils/glcanvas/win/glcanvas.cpp +++ /dev/null @@ -1,430 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: glcanvas.cpp -// Purpose: wxGLCanvas, for using OpenGL with wxWindows under MS Windows -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "glcanvas.h" -#endif - -#include "wx/wxprec.h" - -#if defined(__BORLANDC__) -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include -#endif - -#include "GL/gl.h" - -#include "glcanvas.h" - -/* - * GLContext implementation - */ - -wxGLContext::wxGLContext(bool isRGB, wxWindow *win, const wxPalette& palette) -{ - m_window = win; - - m_hDC = (WXHDC) ::GetDC((HWND) win->GetHWND()); - - SetupPixelFormat(); - SetupPalette(palette); - - m_glContext = wglCreateContext((HDC) m_hDC); - wglMakeCurrent((HDC) m_hDC, m_glContext); -} - -wxGLContext::~wxGLContext() -{ - if (m_glContext) - { - wglMakeCurrent(NULL, NULL); - wglDeleteContext(m_glContext); - } - - ::ReleaseDC((HWND) m_window->GetHWND(), (HDC) m_hDC); -} - -void wxGLContext::SwapBuffers() -{ - if (m_glContext) - { - wglMakeCurrent((HDC) m_hDC, m_glContext); - ::SwapBuffers((HDC) m_hDC); //blits the backbuffer into DC - } -} - -void wxGLContext::SetCurrent() -{ - if (m_glContext) - { - wglMakeCurrent((HDC) m_hDC, m_glContext); - } - -/* - setupPixelFormat(hDC); - setupPalette(hDC); -*/ -} - -void wxGLContext::SetColour(const char *colour) -{ - float r = 0.0; - float g = 0.0; - float b = 0.0; - wxColour *col = wxTheColourDatabase->FindColour(colour); - if (col) - { - r = (float)(col->Red()/256.0); - g = (float)(col->Green()/256.0); - b = (float)(col->Blue()/256.0); - glColor3f( r, g, b); - } -} - -void wxGLContext::SetupPixelFormat() // (HDC hDC) -{ - PIXELFORMATDESCRIPTOR pfd = { - sizeof(PIXELFORMATDESCRIPTOR), /* size */ - 1, /* version */ - PFD_SUPPORT_OPENGL | - PFD_DRAW_TO_WINDOW | - PFD_DOUBLEBUFFER, /* support double-buffering */ - PFD_TYPE_RGBA, /* color type */ - 16, /* prefered color depth */ - 0, 0, 0, 0, 0, 0, /* color bits (ignored) */ - 0, /* no alpha buffer */ - 0, /* alpha bits (ignored) */ - 0, /* no accumulation buffer */ - 0, 0, 0, 0, /* accum bits (ignored) */ - 16, /* depth buffer */ - 0, /* no stencil buffer */ - 0, /* no auxiliary buffers */ - PFD_MAIN_PLANE, /* main layer */ - 0, /* reserved */ - 0, 0, 0, /* no layer, visible, damage masks */ - }; - int pixelFormat; - - pixelFormat = ChoosePixelFormat((HDC) m_hDC, &pfd); - if (pixelFormat == 0) { - MessageBox(WindowFromDC((HDC) m_hDC), "ChoosePixelFormat failed.", "Error", - MB_ICONERROR | MB_OK); - exit(1); - } - - if (SetPixelFormat((HDC) m_hDC, pixelFormat, &pfd) != TRUE) { - MessageBox(WindowFromDC((HDC) m_hDC), "SetPixelFormat failed.", "Error", - MB_ICONERROR | MB_OK); - exit(1); - } -} - -void wxGLContext::SetupPalette(const wxPalette& palette) -{ - int pixelFormat = GetPixelFormat((HDC) m_hDC); - PIXELFORMATDESCRIPTOR pfd; - - DescribePixelFormat((HDC) m_hDC, pixelFormat, sizeof(PIXELFORMATDESCRIPTOR), &pfd); - - if (pfd.dwFlags & PFD_NEED_PALETTE) - { - } - else - { - return; - } - - m_palette = palette; - - if ( !m_palette.Ok() ) - { - m_palette = CreateDefaultPalette(); - } - - if (m_palette.Ok()) - { - SelectPalette((HDC) m_hDC, (HPALETTE) m_palette.GetHPALETTE(), FALSE); - RealizePalette((HDC) m_hDC); - } -} - -wxPalette wxGLContext::CreateDefaultPalette() -{ - PIXELFORMATDESCRIPTOR pfd; - int paletteSize; - int pixelFormat = GetPixelFormat((HDC) m_hDC); - - DescribePixelFormat((HDC) m_hDC, pixelFormat, sizeof(PIXELFORMATDESCRIPTOR), &pfd); - - paletteSize = 1 << pfd.cColorBits; - - LOGPALETTE* pPal = - (LOGPALETTE*) malloc(sizeof(LOGPALETTE) + paletteSize * sizeof(PALETTEENTRY)); - pPal->palVersion = 0x300; - pPal->palNumEntries = paletteSize; - - /* build a simple RGB color palette */ - { - int redMask = (1 << pfd.cRedBits) - 1; - int greenMask = (1 << pfd.cGreenBits) - 1; - int blueMask = (1 << pfd.cBlueBits) - 1; - int i; - - for (i=0; ipalPalEntry[i].peRed = - (((i >> pfd.cRedShift) & redMask) * 255) / redMask; - pPal->palPalEntry[i].peGreen = - (((i >> pfd.cGreenShift) & greenMask) * 255) / greenMask; - pPal->palPalEntry[i].peBlue = - (((i >> pfd.cBlueShift) & blueMask) * 255) / blueMask; - pPal->palPalEntry[i].peFlags = 0; - } - } - - HPALETTE hPalette = CreatePalette(pPal); - free(pPal); - - wxPalette palette; - palette.SetHPALETTE((WXHPALETTE) hPalette); - - return palette; -} - -/* - * wxGLCanvas implementation - */ - -IMPLEMENT_CLASS(wxGLCanvas, wxScrolledWindow) - -BEGIN_EVENT_TABLE(wxGLCanvas, wxScrolledWindow) - EVT_SIZE(wxGLCanvas::OnSize) - EVT_PALETTE_CHANGED(wxGLCanvas::OnPaletteChanged) - EVT_QUERY_NEW_PALETTE(wxGLCanvas::OnQueryNewPalette) -END_EVENT_TABLE() - -wxGLCanvas::wxGLCanvas(wxWindow *parent, wxWindowID id, - const wxPoint& pos, const wxSize& size, long style, const wxString& name, - int *attribList /* not used yet! */, const wxPalette& palette): - wxScrolledWindow(parent, id, pos, size, style, name) -{ - m_glContext = new wxGLContext(TRUE, this, palette); -} - -wxGLCanvas::~wxGLCanvas() -{ - if (m_glContext) - delete m_glContext; -} - -void wxGLCanvas::SwapBuffers() -{ - if (m_glContext) - m_glContext->SwapBuffers(); -} - -void wxGLCanvas::OnSize(wxSizeEvent& event) -{ - int width, height; - GetClientSize(& width, & height); - - if (m_glContext) - { - m_glContext->SetCurrent(); - - glViewport(0, 0, (GLint)width, (GLint)height); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glFrustum( -1.0, 1.0, -1.0, 1.0, 5.0, 15.0 ); - glMatrixMode(GL_MODELVIEW); - } -} - -void wxGLCanvas::SetCurrent() -{ - if (m_glContext) - { - m_glContext->SetCurrent(); - } -} - -void wxGLCanvas::SetColour(const char *colour) -{ - if (m_glContext) - m_glContext->SetColour(colour); -} - -// TODO: Have to have this called by parent frame (?) -// So we need wxFrame to call OnQueryNewPalette for all children... -void wxGLCanvas::OnQueryNewPalette(wxQueryNewPaletteEvent& event) -{ - /* realize palette if this is the current window */ - if (m_glContext && m_glContext->GetPalette()->Ok()) { - ::UnrealizeObject((HPALETTE) m_glContext->GetPalette()->GetHPALETTE()); - ::SelectPalette((HDC) m_glContext->GetHDC(), (HPALETTE) m_glContext->GetPalette()->GetHPALETTE(), FALSE); - ::RealizePalette((HDC) m_glContext->GetHDC()); - Refresh(); - event.SetPaletteRealized(TRUE); - } - else - event.SetPaletteRealized(FALSE); -} - -// I think this doesn't have to be propagated to child windows. -void wxGLCanvas::OnPaletteChanged(wxPaletteChangedEvent& event) -{ - /* realize palette if this is *not* the current window */ - if ( m_glContext && - m_glContext->GetPalette() && - m_glContext->GetPalette()->Ok() && - (this != event.GetChangedWindow()) ) - { - ::UnrealizeObject((HPALETTE) m_glContext->GetPalette()->GetHPALETTE()); - ::SelectPalette((HDC) m_glContext->GetHDC(), (HPALETTE) m_glContext->GetPalette()->GetHPALETTE(), FALSE); - ::RealizePalette((HDC) m_glContext->GetHDC()); - Refresh(); - } -} - -/* Give extensions proper function names. */ - -/* EXT_vertex_array */ -void glArrayElementEXT(GLint i) -{ -} - -void glColorPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer) -{ -} - -void glDrawArraysEXT(GLenum mode, GLint first, GLsizei count) -{ -#ifdef GL_EXT_vertex_array - static PFNGLDRAWARRAYSEXTPROC proc = 0; - - if ( !proc ) - { - proc = (PFNGLDRAWARRAYSEXTPROC) wglGetProcAddress("glDrawArraysEXT"); - } - - if ( proc ) - (* proc) (mode, first, count); -#endif -} - -void glEdgeFlagPointerEXT(GLsizei stride, GLsizei count, const GLboolean *pointer) -{ -} - -void glGetPointervEXT(GLenum pname, GLvoid* *params) -{ -} - -void glIndexPointerEXT(GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer) -{ -} - -void glNormalPointerEXT(GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer) -{ -#ifdef GL_EXT_vertex_array - static PFNGLNORMALPOINTEREXTPROC proc = 0; - - if ( !proc ) - { - proc = (PFNGLNORMALPOINTEREXTPROC) wglGetProcAddress("glNormalPointerEXT"); - } - - if ( proc ) - (* proc) (type, stride, count, pointer); -#endif -} - -void glTexCoordPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer) -{ -} - -void glVertexPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer) -{ -#ifdef GL_EXT_vertex_array - static PFNGLVERTEXPOINTEREXTPROC proc = 0; - - if ( !proc ) - { - proc = (PFNGLVERTEXPOINTEREXTPROC) wglGetProcAddress("glVertexPointerEXT"); - } - - if ( proc ) - (* proc) (size, type, stride, count, pointer); -#endif -} - -/* EXT_color_subtable */ -void glColorSubtableEXT(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *table) -{ -} - -/* EXT_color_table */ -void glColorTableEXT(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table) -{ -} - -void glCopyColorTableEXT(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) -{ -} - -void glGetColorTableEXT(GLenum target, GLenum format, GLenum type, GLvoid *table) -{ -} - -void glGetColorTableParamaterfvEXT(GLenum target, GLenum pname, GLfloat *params) -{ -} - -void glGetColorTavleParameterivEXT(GLenum target, GLenum pname, GLint *params) -{ -} - -/* SGI_compiled_vertex_array */ -void glLockArraysSGI(GLint first, GLsizei count) -{ -} - -void glUnlockArraysSGI() -{ -} - - -/* SGI_cull_vertex */ -void glCullParameterdvSGI(GLenum pname, GLdouble* params) -{ -} - -void glCullParameterfvSGI(GLenum pname, GLfloat* params) -{ -} - -/* SGI_index_func */ -void glIndexFuncSGI(GLenum func, GLclampf ref) -{ -} - -/* SGI_index_material */ -void glIndexMaterialSGI(GLenum face, GLenum mode) -{ -} - -/* WIN_swap_hint */ -void glAddSwapHintRectWin(GLint x, GLint y, GLsizei width, GLsizei height) -{ -} - diff --git a/utils/glcanvas/win/glcanvas.h b/utils/glcanvas/win/glcanvas.h deleted file mode 100644 index 5c84eb5db0..0000000000 --- a/utils/glcanvas/win/glcanvas.h +++ /dev/null @@ -1,125 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: glcanvas.h -// Purpose: wxGLCanvas, for using OpenGL with wxWindows under Windows -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma interface "glcanvas.h" -#endif - -#ifndef _WX_GLCANVAS_H_ -#define _WX_GLCANVAS_H_ - -#include - -#include "gl/gl.h" - -class wxGLContext: public wxObject -{ -public: - wxGLContext(bool isRGB, wxWindow *win, const wxPalette& palette = wxNullPalette); - ~wxGLContext(); - - void SetCurrent(); - void SetColour(const char *colour); - void SwapBuffers(); - - void SetupPixelFormat(); - void SetupPalette(const wxPalette& palette); - wxPalette CreateDefaultPalette(); - - inline wxPalette* GetPalette() const { return (wxPalette*) & m_palette; } - inline wxWindow* GetWindow() const { return m_window; } - inline WXHDC GetHDC() const { return m_hDC; } - inline HGLRC GetGLRC() const { return m_glContext; } - -public: - HGLRC m_glContext; - WXHDC m_hDC; - wxPalette m_palette; - wxWindow* m_window; -}; - -class wxGLCanvas: public wxScrolledWindow -{ - DECLARE_CLASS(wxGLCanvas) - public: - wxGLCanvas(wxWindow *parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, long style = 0, - const wxString& name = "GLCanvas", int *attribList = 0, const wxPalette& palette = wxNullPalette); - ~wxGLCanvas(); - - void SetCurrent(); - void SetColour(const char *colour); - void SwapBuffers(); - - void OnSize(wxSizeEvent& event); - - void OnQueryNewPalette(wxQueryNewPaletteEvent& event); - void OnPaletteChanged(wxPaletteChangedEvent& event); - - inline wxGLContext* GetContext() const { return m_glContext; } - -protected: - wxGLContext* m_glContext; // this is typedef-ed ptr, in fact - -DECLARE_EVENT_TABLE() -}; - -#ifdef __cplusplus -extern "C" { -#endif - -/* Give extensions proper function names. */ - -/* N.B. - this is not completely implemented as yet */ - -/* EXT_vertex_array */ -void glArrayElementEXT(GLint i); -void glColorPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); -void glDrawArraysEXT(GLenum mode, GLint first, GLsizei count); -void glEdgeFlagPointerEXT(GLsizei stride, GLsizei count, const GLboolean *pointer); -void glGetPointervEXT(GLenum pname, GLvoid* *params); -void glIndexPointerEXT(GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); -void glNormalPointerEXT(GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); -void glTexCoordPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); -void glVertexPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); - -/* EXT_color_subtable */ -void glColorSubtableEXT(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *table); - -/* EXT_color_table */ -void glColorTableEXT(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); -void glCopyColorTableEXT(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); -void glGetColorTableEXT(GLenum target, GLenum format, GLenum type, GLvoid *table); -void glGetColorTableParamaterfvEXT(GLenum target, GLenum pname, GLfloat *params); -void glGetColorTavleParameterivEXT(GLenum target, GLenum pname, GLint *params); - -/* SGI_compiled_vertex_array */ -void glLockArraysSGI(GLint first, GLsizei count); -void glUnlockArraysSGI(); - -/* SGI_cull_vertex */ -void glCullParameterdvSGI(GLenum pname, GLdouble* params); -void glCullParameterfvSGI(GLenum pname, GLfloat* params); - -/* SGI_index_func */ -void glIndexFuncSGI(GLenum func, GLclampf ref); - -/* SGI_index_material */ -void glIndexMaterialSGI(GLenum face, GLenum mode); - -/* WIN_swap_hint */ -void glAddSwapHintRectWin(GLint x, GLint y, GLsizei width, GLsizei height); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/utils/glcanvas/win/makefile.vc b/utils/glcanvas/win/makefile.vc deleted file mode 100644 index 8d2c3fa238..0000000000 --- a/utils/glcanvas/win/makefile.vc +++ /dev/null @@ -1,75 +0,0 @@ -# -# File: makefile.nt -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile : Builds GLCanvas class library (MS VC++). -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -# Set WXDIR for your system -WXDIR = $(WXWIN) -GLDIR = $(WXDIR)\utils\glcanvas -THISDIR = $(GLDIR)\win -EXTRALIBS=$(WXDIR)\lib\glcanvas.lib -DOCDIR=$(WXDIR)\docs -LOCALDOCDIR=$(WXDIR)\utils\glcanvas\docs - -LIBTARGET=$(WXDIR)\lib\glcanvas.lib -OBJECTS = glcanvas.obj - -!include $(WXDIR)\src\makelib.vc - -glcanvas.obj: glcanvas.h glcanvas.$(SRCSUFF) $(DUMMYOBJ) - $(cc) @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -DOCSOURCES=$(LOCALDOCDIR)\manual.tex $(LOCALDOCDIR)\classes.tex - -html: $(DOCDIR)\html\glcanvas\glcanvas.htm -hlp: $(DOCDIR)\winhelp\glcanvas.hlp -ps: $(WXDIR)\docs\ps\glcanvas.ps - -$(DOCDIR)\winhelp\glcanvas.hlp: $(LOCALDOCDIR)\glcanvas.rtf $(LOCALDOCDIR)\glcanvas.hpj - cd $(LOCALDOCDIR) - -erase glcanvas.ph - hc glcanvas - move glcanvas.hlp $(DOCDIR)\winhelp\glcanvas.hlp - move glcanvas.cnt $(DOCDIR)\winhelp\glcanvas.cnt - cd $(THISDIR) - -$(LOCALDOCDIR)\glcanvas.rtf: $(DOCSOURCES) - cd $(LOCALDOCDIR) - -start /w tex2rtf $(LOCALDOCDIR)\manual.tex $(LOCALDOCDIR)\glcanvas.rtf -twice -winhelp - cd $(THISDIR) - -$(DOCDIR)\html\glcanvas\glcanvas.htm: $(DOCSOURCES) - cd $(LOCALDOCDIR) - -mkdir $(DOCDIR)\html\glcanvas - -start /w tex2rtf $(LOCALDOCDIR)\manual.tex $(DOCDIR)\html\glcanvas\glcanvas.htm -twice -html - -erase $(DOCDIR)\html\glcanvas\*.con - -erase $(DOCDIR)\html\glcanvas\*.ref - cd $(THISDIR) - -$(LOCALDOCDIR)\manual.dvi: $(DOCSOURCES) - cd $(LOCALDOCDIR) - -latex manual - -latex manual - -makeindx manual - -bibtex manual - -latex manual - -latex manual - cd $(THISDIR) - -$(WXDIR)\docs\ps\glcanvas.ps: $(LOCALDOCDIR)\manual.dvi - cd $(LOCALDOCDIR) - -dvips32 -o glcanvas.ps manual - move glcanvas.ps $(WXDIR)\docs\ps\glcanvas.ps - cd $(THISDIR) - - diff --git a/utils/makefile.vc b/utils/makefile.vc deleted file mode 100644 index 7679e9d9a7..0000000000 --- a/utils/makefile.vc +++ /dev/null @@ -1,96 +0,0 @@ -# -# File: makefile.nt -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile : Builds utilities for Win95, VC++ 4.0 -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -THISDIR=$(WXDIR)\utils - -!include $(WXDIR)\src\ntwxwin.mak - -DEBUG_FLAGS="/Zi /FR" -LINK_DEBUG_FLAGS="/RELEASE" - -all: - cd $(WXDIR)\utils\dialoged\src - nmake -f makefile.nt DEBUG_FLAGS=$(DEBUG_FLAGS) LINK_DEBUG_FLAGS=$(LINK_DEBUG_FLAGS) - cd $(WXDIR)\utils\wxprop\src - nmake -f makefile.nt test DEBUG_FLAGS=$(DEBUG_FLAGS) LINK_DEBUG_FLAGS=$(LINK_DEBUG_FLAGS) -# cd $(WXDIR)\utils\hytext\src -# nmake -f makefile.nt DEBUG_FLAGS=$(DEBUG_FLAGS) LINK_DEBUG_FLAGS=$(LINK_DEBUG_FLAGS) -# cd $(WXDIR)\utils\mfutils\src -# nmake -f makefile.nt DEBUG_FLAGS=$(DEBUG_FLAGS) LINK_DEBUG_FLAGS=$(LINK_DEBUG_FLAGS) -# cd $(WXDIR)\utils\tex2rtf\src -# nmake -f makefile.nt DEBUG_FLAGS=$(DEBUG_FLAGS) LINK_DEBUG_FLAGS=$(LINK_DEBUG_FLAGS) -# cd $(WXDIR)\utils\wxbuild\src -# nmake -f makefile.nt DEBUG_FLAGS=$(DEBUG_FLAGS) LINK_DEBUG_FLAGS=$(LINK_DEBUG_FLAGS) -# cd $(WXDIR)\utils\wxgraph\src -# nmake -f makefile.nt test DEBUG_FLAGS=$(DEBUG_FLAGS) LINK_DEBUG_FLAGS=$(LINK_DEBUG_FLAGS) -# cd $(WXDIR)\utils\wxtree\src -# nmake -f makefile.nt test DEBUG_FLAGS=$(DEBUG_FLAGS) LINK_DEBUG_FLAGS=$(LINK_DEBUG_FLAGS) -# cd $(WXDIR)\utils\wxhelp\src -# nmake -f makefile.nt DEBUG_FLAGS=$(DEBUG_FLAGS) LINK_DEBUG_FLAGS=$(LINK_DEBUG_FLAGS) -# cd $(WXDIR)\utils\wximage\win -# nmake -f makefile.nt DEBUG_FLAGS=$(DEBUG_FLAGS) LINK_DEBUG_FLAGS=$(LINK_DEBUG_FLAGS) -# cd $(WXDIR)\utils\wxweb\src -# nmake -f makefile.nt DEBUG_FLAGS=$(DEBUG_FLAGS) LINK_DEBUG_FLAGS=$(LINK_DEBUG_FLAGS) -# cd $(WXDIR)\utils\wxhelp2\src -# nmake -f makefile.nt DEBUG_FLAGS=$(DEBUG_FLAGS) LINK_DEBUG_FLAGS=$(LINK_DEBUG_FLAGS) -# cd $(WXDIR)\utils\clockwrk\src -# nmake -f makefile.nt DEBUG_FLAGS=$(DEBUG_FLAGS) LINK_DEBUG_FLAGS=$(LINK_DEBUG_FLAGS) -# cd $(WXDIR)\utils\wxanim\src -# nmake -f makefile.nt DEBUG_FLAGS=$(DEBUG_FLAGS) LINK_DEBUG_FLAGS=$(LINK_DEBUG_FLAGS) -# cd $(WXDIR)\utils\colours -# nmake -f makefile.nt DEBUG_FLAGS=$(DEBUG_FLAGS) LINK_DEBUG_FLAGS=$(LINK_DEBUG_FLAGS) -# cd $(WXDIR)\utils\ogl\src -# nmake -f makefile.nt DEBUG_FLAGS=$(DEBUG_FLAGS) LINK_DEBUG_FLAGS=$(LINK_DEBUG_FLAGS) -# cd $(WXDIR)\utils\wxchart\src -# nmake -f makefile.nt test DEBUG_FLAGS=$(DEBUG_FLAGS) LINK_DEBUG_FLAGS=$(LINK_DEBUG_FLAGS) - -clean: - cd $(WXDIR)\utils\wxprop\src - nmake -f makefile.nt clean - cd $(WXDIR)\utils\dialoged\src - nmake -f makefile.nt clean - cd $(WXDIR)\utils\nplugin - nmake -f makefile.nt clean -# cd $(WXDIR)\utils\hytext\src -# nmake -f makefile.nt clean -# cd $(WXDIR)\utils\mfutils\src -# nmake -f makefile.nt clean -# cd $(WXDIR)\utils\tex2rtf\src -# nmake -f makefile.nt clean -# cd $(WXDIR)\utils\wxbuild\src -# nmake -f makefile.nt clean -# cd $(WXDIR)\utils\wxgraph\src -# nmake -f makefile.nt clean -# cd $(WXDIR)\utils\wxtree\src -# nmake -f makefile.nt clean -# cd $(WXDIR)\utils\wxhelp\src -# nmake -f makefile.nt clean -# cd $(WXDIR)\utils\wxhelp2\src -# nmake -f makefile.nt clean -# cd $(WXDIR)\utils\clockwrk\src -# nmake -f makefile.nt clean -# cd $(WXDIR)\utils\wxanim\src -# nmake -f makefile.nt clean -# cd $(WXDIR)\utils\colours -# nmake -f makefile.nt clean -# cd $(WXDIR)\utils\ogl\src -# nmake -f makefile.nt clean -# cd $(WXDIR)\utils\wxchart\src -# nmake -f makefile.nt clean -# cd $(WXDIR)\utils\wxweb\src -# nmake -f makefile.nt clean -# cd $(WXDIR)\utils\wximage\win -# nmake -f makefile.nt clean diff --git a/utils/nplugin/docs/notes.txt b/utils/nplugin/docs/notes.txt deleted file mode 100644 index ee3d1412ea..0000000000 --- a/utils/nplugin/docs/notes.txt +++ /dev/null @@ -1,32 +0,0 @@ -Notes about plugins - - - I have users that want to visit my pages with tclets, but they do not - have the plugin. What can I do? - - Add a pluginspage=http://www.sunlabs.com/tcl/plugin/ name=value - pair to the embed statement. This will cause Navigator to find - the plugin for your user and suggest they install it. The user - is then prompted to download and install the plugin, and then she - has to restart the browser and revisit your page. Very inconvenient - and only slightly better than giving your users the broken image - icon. Netscape says they are working on a more automatic solution. - - - - -14. Your demos work just fine, but when I visit my own pages with tclets in - them, at http://www.myserver.com/~mypages/mypage.html, I still get the - broken image icon. Why doesn't it work for me? - - This is likely because your web server -- the program that sends - the pages to your browser when you click on a URL -- is not - sending the right mime-type when it sends the '.tcl' file. You - can work around this by adding a type=application/x-tcl name=value - pair to the embed statement, which will cause Navigator to infer - that it should use the Tcl plugin anyways. A better solution is - to ask your system administrator to configure the web server to - send the mime type application/x-tcl when it sends files with a - '.tcl' extension. Nearly all web servers in the world nowadays - are already configured to do this, the only ones we are aware of - that do not are some older versions of Apache. diff --git a/utils/nplugin/lib/dummy b/utils/nplugin/lib/dummy deleted file mode 100644 index bfdf726d49..0000000000 --- a/utils/nplugin/lib/dummy +++ /dev/null @@ -1 +0,0 @@ -I'm just here to force the creation of a LIB directory. diff --git a/utils/nplugin/makefile.vc b/utils/nplugin/makefile.vc deleted file mode 100644 index a35290b4af..0000000000 --- a/utils/nplugin/makefile.vc +++ /dev/null @@ -1,32 +0,0 @@ -# -# File: makefile.nt -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile : Builds utilities for Win95, VC++ 4.0 -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -THISDIR=$(WXDIR)\utils\nplugin - -!include $(WXDIR)\src\makevc.env - -DEBUG_FLAGS="/Zi /FR" -LINK_DEBUG_FLAGS="/RELEASE" - -clean: - cd $(WXDIR)\utils\nplugin\src - nmake -f makefile.vc clean - cd $(WXDIR)\utils\nplugin\samples\simple - nmake -f makefile.vc clean - cd $(WXDIR)\utils\nplugin\samples\gui - nmake -f makefile.vc clean - cd $(WXDIR)\utils\nplugin - diff --git a/utils/nplugin/samples/gui/gui.cpp b/utils/nplugin/samples/gui/gui.cpp deleted file mode 100644 index 3ae118fda0..0000000000 --- a/utils/nplugin/samples/gui/gui.cpp +++ /dev/null @@ -1,186 +0,0 @@ -/* - * File: simple.cpp - * Purpose: Minimal wxWindows plugin - * Author: Julian Smart - * Created: 1997 - * Updated: - * Copyright: (c) Julian Smart - */ - -/* static const char sccsid[] = "%W% %G%"; */ - -#ifdef __GNUG__ -#pragma implementation -#pragma interface -#endif - -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include - -#include "NPApp.h" -#include "NPFrame.h" - -#define ID_HELLO 10 - -// Define a new application type -class MyApp: public wxPluginApp -{ public: - virtual wxFrame *OnInit(void); - virtual wxPluginFrame* OnNewInstance(const wxPluginData& data); -}; - -// Define a new frame type -class MyFrame: public wxPluginFrame -{ public: - MyFrame(const wxPluginData& data); - - public: - // Let's paint directly onto the 'frame'; we don't need a subwindow - void OnPaint(wxPaintEvent& event); - void OnMouseEvent(wxMouseEvent& event); - void OnHello(wxCommandEvent& event); - - // Called when the file has been downloaded - virtual void OnNPNewFile(NPStream *stream, const wxString& fname); - - void CentreStrings(wxDC& dc); - - DECLARE_EVENT_TABLE() - - protected: - wxStringList m_strings; - float m_xpos; - float m_ypos; -}; - -BEGIN_EVENT_TABLE(MyFrame, wxFrame) - EVT_SIZE(MyFrame::OnSize) - EVT_PAINT(MyFrame::OnPaint) - EVT_MOUSE_EVENTS(MyFrame::OnMouseEvent) - EVT_BUTTON(ID_HELLO, MyFrame::OnHello) -END_EVENT_TABLE() - -IMPLEMENT_APP(MyApp) - -// No app initialisation necessary, and for a plugin there is no -// top frame. -wxFrame *MyApp::OnInit(void) -{ - return NULL; -} - -// Called whenever a new plugin instance is called. We could check -// various things here in 'data' but we won't bother. -wxPluginFrame* MyApp::OnNewInstance(const wxPluginData& data) -{ - // Implicitly added to list of plugin frames - return new MyFrame(data); -} - -// My frame constructor -MyFrame::MyFrame(const wxPluginData& data): - wxPluginFrame(data) -{ - m_xpos = -1; - m_ypos = -1; - - wxMenuBar *menuBar = new wxMenuBar; - wxMenu *menu = new wxMenu; - menu->Append(1, "E&xit"); - menuBar->Append(menu, "&File"); - - SetMenuBar(menuBar); - - new wxTextCtrl(this, -1, "", wxPoint(10, 30), wxSize(200, 25), wxSUNKEN_BORDER); - new wxButton(this, ID_HELLO, "Hello", wxPoint(10, 70)); -} - -void MyFrame::OnPaint(wxPaintEvent& event) -{ - wxPaintDC dc(this); - - dc.SetBrush(*wxCYAN_BRUSH); - dc.SetPen(*wxRED_PEN); - - int w, h; - GetClientSize(&w, &h); - - dc.DrawRectangle(0, 0, w, h); - - wxFont swissFont(10, wxSWISS, wxNORMAL, wxNORMAL); - dc.SetFont(swissFont); - dc.SetBackgroundMode(wxTRANSPARENT); - - CentreStrings(dc); -} - -// Called when the file has been downloaded -void MyFrame::OnNPNewFile(NPStream *stream, const wxString& fname) -{ - ifstream str(fname); - char buf[201]; - - while ( !str.eof() ) - { - buf[0] = 0; - str.getline(buf, 200); - - if ( buf[0] != 0 ) - m_strings.Add(buf); - } - Refresh(); -} - -void MyFrame::CentreStrings(wxDC& dc) -{ - int y = 5; - int cw, ch; - GetClientSize(&cw, &ch); - - wxNode *node = m_strings.First(); - while ( node ) - { - char *s = (char *)node->Data(); - float w, h; - dc.GetTextExtent(s, &w, &h); - - int x = wxMax(0, (cw - w)/2); - dc.DrawText(s, x, y); - - y += h + (h/2); - - node = node->Next(); - } -} - -// This implements a tiny doodling program. Drag the mouse using -// the left button. -void MyFrame::OnMouseEvent(wxMouseEvent& event) -{ - float x, y; - event.Position(&x, &y); - wxClientDC dc(this); - - if (m_xpos > -1 && m_ypos > -1 && event.Dragging() && event.LeftIsDown()) - { - dc.SetPen(wxBLACK_PEN); - dc.SetBrush(wxTRANSPARENT_BRUSH); - dc.DrawLine(m_xpos, m_ypos, x, y); - } - m_xpos = x; - m_ypos = y; -} - -void MyFrame::OnHello(wxCommandEvent& event) -{ - wxMessageBox("Hello!"); -} diff --git a/utils/nplugin/samples/gui/gui.h b/utils/nplugin/samples/gui/gui.h deleted file mode 100644 index 01e46d64b6..0000000000 --- a/utils/nplugin/samples/gui/gui.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * File: gui.h - * Purpose: wxWindows plugin with a few GUI elements - * Author: Julian Smart - * Created: 1997 - * Updated: - * Copyright: (c) Julian Smart - */ - -#ifndef __GUIH__ -#define __GUIH__ - -// Define a new application type -class MyApp: public wxPluginApp -{ public: - virtual wxFrame *OnInit(void); - virtual wxPluginFrame* OnNewInstance(const wxPluginData& data); -}; - -class MyApp; -class MyFrame; -class MyCanvas; - -class MyFrame: public wxPluginFrame -{ -public: - MyFrame(const wxPluginData& data); - virtual ~MyFrame(); - - void OldOnMenuCommand(int id); - -private: - wxMenu* fileMenu; - wxMenuBar* menuBar; - MyCanvas* leftCanvas; - MyCanvas* rightCanvas; - wxSplitterWindow* splitter; -}; - -class MyCanvas: public wxScrolledWindow -{ -public: - MyCanvas(wxWindow* parent, int x, int y, int w, int h); - virtual ~MyCanvas(); - - void OnPaint(wxPaintEvent& event); - -DECLARE_EVENT_TABLE() -}; - -// ID for the menu quit command -#define SPLIT_QUIT 1 -#define SPLIT_HORIZONTAL 2 -#define SPLIT_VERTICAL 3 -#define SPLIT_UNSPLIT 4 - - -#endif - diff --git a/utils/nplugin/samples/gui/index.html b/utils/nplugin/samples/gui/index.html deleted file mode 100644 index 1d84f3d78f..0000000000 --- a/utils/nplugin/samples/gui/index.html +++ /dev/null @@ -1,34 +0,0 @@ - - -GUI Plugin Demo - - - -

    GUI Plugin Demo

    - -This just demonstrates how to embed an object into an HTML file. -This just demonstrates how to embed an object into an HTML file. -This just demonstrates how to embed an object into an HTML file. -This just demonstrates how to embed an object into an HTML file. -This just demonstrates how to embed an object into an HTML file. -This just demonstrates how to embed an object into an HTML file.

    - - - -This just demonstrates how to embed an object into an HTML file. -This just demonstrates how to embed an object into an HTML file. -This just demonstrates how to embed an object into an HTML file. -This just demonstrates how to embed an object into an HTML file. -This just demonstrates how to embed an object into an HTML file. -This just demonstrates how to embed an object into an HTML file.

    - -This just demonstrates how to embed an object into an HTML file. -This just demonstrates how to embed an object into an HTML file. -This just demonstrates how to embed an object into an HTML file. -This just demonstrates how to embed an object into an HTML file. -This just demonstrates how to embed an object into an HTML file. -This just demonstrates how to embed an object into an HTML file.

    - - - - diff --git a/utils/nplugin/samples/gui/makefile.vc b/utils/nplugin/samples/gui/makefile.vc deleted file mode 100644 index ff01513d0e..0000000000 --- a/utils/nplugin/samples/gui/makefile.vc +++ /dev/null @@ -1,70 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1997 -# Updated: -# Copyright: (c) 1997, Julian Smart -# -# "%W% %G%" -# -# Makefile : Builds gui plugin example (MS VC++). -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -# Application is a DLL -DLL=1 - -EXTRAINC=/I$(WXDIR)\utils\nplugin\src - -!include $(WXDIR)\src\makevc.env - -THISDIR = $(WXDIR)\utils\nplugin\examples\gui -PROGRAM=npgui32 -PLUGINLIB=$(WXDIR)\utils\nplugin\lib\nplugin.lib - -OBJECTS = gui.obj - -all: $(PROGRAM).dll - -$(PROGRAM): $(PROGRAM).exe - -wx: - cd $(WXDIR)\src\msw - nmake -f makefile.vc dllnp FINAL=$(FINAL) - cd $(THISDIR) - -# Update the dynamic link library - -$(PROGRAM).dll: $(DUMMYOBJ) $(OBJECTS) $(WXDIR)\lib\wx.lib $(PLUGINLIB) $(PROGRAM).res $(PROGRAM).def - $(link) $(LINKFLAGS) \ - -out:$(PROGRAM).dll \ - -def:$(PROGRAM).def \ - $(DUMMYOBJ) $(OBJECTS) $(PROGRAM).res $(WXDIR)\lib\wx.lib $(PLUGINLIB) \ - $(guilibsdll) shell32.lib comctl32.lib ctl3d32.lib - -gui.obj: gui.$(SRCSUFF) gui.h $(DUMMYOBJ) - $(cc) @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -$(PROGRAM).res : $(PROGRAM).rc $(WXDIR)\include\wx\msw\wx.rc - $(rc) -r /i$(WXDIR)\include -fo$@ $(PROGRAM).rc - -copy: - copy npgui32.dll "c:\program files\Netscape\Navigator\program\plugins" - copy npgui32.dll "c:\program files\Internet Explorer\plugins" - -clean: - -erase *.obj - -erase *.exe - -erase *.res - -erase *.map - -erase *.sbr - -erase *.pdb - -erase *.dll - -erase *.exp - -erase *.lib - -erase *.ilk diff --git a/utils/nplugin/samples/gui/npgui32.def b/utils/nplugin/samples/gui/npgui32.def deleted file mode 100644 index 1107bb98f5..0000000000 --- a/utils/nplugin/samples/gui/npgui32.def +++ /dev/null @@ -1,9 +0,0 @@ -LIBRARY NPGUI32 - -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD SINGLE - -EXPORTS - NP_GetEntryPoints @1 - NP_Initialize @2 - NP_Shutdown @3 diff --git a/utils/nplugin/samples/gui/npgui32.rc b/utils/nplugin/samples/gui/npgui32.rc deleted file mode 100644 index cafee455df..0000000000 --- a/utils/nplugin/samples/gui/npgui32.rc +++ /dev/null @@ -1,44 +0,0 @@ -#include "wx/msw/wx.rc" - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,0,0,1 - PRODUCTVERSION 1,0,0,1 - FILEFLAGSMASK 0x3fL -#ifdef _DEBUG - FILEFLAGS 0x1L -#else - FILEFLAGS 0x0L -#endif - FILEOS 0x4L - FILETYPE 0x2L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904e4" - BEGIN - VALUE "CompanyName", "Julian Smart\0" - VALUE "FileDescription", "wxWindows GUI example plugin file\0" - VALUE "FileVersion", "0.0.0.1\0" - VALUE "InternalName", "wxWindows GUI Plugin\0" - VALUE "LegalCopyright", "Copyright Julian Smart 1997\0" - VALUE "LegalTrademarks", "\0" - VALUE "OriginalFilename","npgui32.dll\0" - VALUE "ProductName", "wxWindows GUI Plugin Sample\0" - VALUE "ProductVersion", "0.0.0.1\0" - VALUE "MIMEType", "wxgui/mime-type\0" - VALUE "FileExtents", "gui\0" - VALUE "FileOpenName", "wxWindows GUI (*.gui)\0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1252 - END -END - diff --git a/utils/nplugin/samples/simple/index.html b/utils/nplugin/samples/simple/index.html deleted file mode 100644 index 84998d2cd5..0000000000 --- a/utils/nplugin/samples/simple/index.html +++ /dev/null @@ -1,34 +0,0 @@ - - -Simple Plugin Demo - - - -

    Simple Plugin Demo

    - -This just demonstrates how to embed an object into an HTML file. -This just demonstrates how to embed an object into an HTML file. -This just demonstrates how to embed an object into an HTML file. -This just demonstrates how to embed an object into an HTML file. -This just demonstrates how to embed an object into an HTML file. -This just demonstrates how to embed an object into an HTML file.

    - - - -This just demonstrates how to embed an object into an HTML file. -This just demonstrates how to embed an object into an HTML file. -This just demonstrates how to embed an object into an HTML file. -This just demonstrates how to embed an object into an HTML file. -This just demonstrates how to embed an object into an HTML file. -This just demonstrates how to embed an object into an HTML file.

    - -This just demonstrates how to embed an object into an HTML file. -This just demonstrates how to embed an object into an HTML file. -This just demonstrates how to embed an object into an HTML file. -This just demonstrates how to embed an object into an HTML file. -This just demonstrates how to embed an object into an HTML file. -This just demonstrates how to embed an object into an HTML file.

    - - - - diff --git a/utils/nplugin/samples/simple/makefile.vc b/utils/nplugin/samples/simple/makefile.vc deleted file mode 100644 index 6587d4e853..0000000000 --- a/utils/nplugin/samples/simple/makefile.vc +++ /dev/null @@ -1,70 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1997 -# Updated: -# Copyright: (c) 1997, Julian Smart -# -# "%W% %G%" -# -# Makefile : Builds simple plugin example (MS VC++). -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -# Application is a DLL -DLL=1 - -EXTRAINC=/I$(WXDIR)\utils\nplugin\src - -!include $(WXDIR)\src\makevc.env - -THISDIR = $(WXDIR)\utils\nplugin\smples\simple -PROGRAM=npsimple32 -PLUGINLIB=$(WXDIR)\utils\nplugin\lib\nplugin.lib - -OBJECTS = simple.obj - -all: $(PROGRAM).dll - -$(PROGRAM): $(PROGRAM).exe - -wx: - cd $(WXDIR)\src\msw - nmake -f makefile.vc dllnp FINAL=$(FINAL) - cd $(THISDIR) - -# Update the dynamic link library - -$(PROGRAM).dll: $(DUMMYOBJ) $(OBJECTS) $(WXDIR)\lib\wx.lib $(PLUGINLIB) $(PROGRAM).res $(PROGRAM).def - $(link) $(LINKFLAGS) \ - -out:$(PROGRAM).dll \ - -def:$(PROGRAM).def \ - $(DUMMYOBJ) $(OBJECTS) $(PROGRAM).res $(WXDIR)\lib\wx.lib $(PLUGINLIB) \ - $(guilibsdll) lib shell32.lib comctl32.lib ctl3d32.lib ole32.lib - -simple.obj: simple.$(SRCSUFF) $(DUMMYOBJ) - $(cc) @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -$(PROGRAM).res : $(PROGRAM).rc $(WXDIR)\include\wx\msw\wx.rc - $(rc) -r /i$(WXDIR)\include -fo$@ $(PROGRAM).rc - -copy: - copy npsimple32.dll "c:\program files\Netscape\Navigator\program\plugins" - copy npsimple32.dll "c:\program files\Internet Explorer\plugins" - -clean: - -erase *.obj - -erase *.exe - -erase *.res - -erase *.map - -erase *.sbr - -erase *.pdb - -erase *.dll - -erase *.exp - -erase *.lib - -erase *.ilk diff --git a/utils/nplugin/samples/simple/npsimple32.def b/utils/nplugin/samples/simple/npsimple32.def deleted file mode 100644 index e3af3116fe..0000000000 --- a/utils/nplugin/samples/simple/npsimple32.def +++ /dev/null @@ -1,9 +0,0 @@ -LIBRARY NPSIMPLE32 - -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD SINGLE - -EXPORTS - NP_GetEntryPoints @1 - NP_Initialize @2 - NP_Shutdown @3 diff --git a/utils/nplugin/samples/simple/npsimple32.rc b/utils/nplugin/samples/simple/npsimple32.rc deleted file mode 100644 index f2d4903226..0000000000 --- a/utils/nplugin/samples/simple/npsimple32.rc +++ /dev/null @@ -1,44 +0,0 @@ -#include "wx/msw/wx.rc" - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,0,0,1 - PRODUCTVERSION 1,0,0,1 - FILEFLAGSMASK 0x3fL -#ifdef _DEBUG - FILEFLAGS 0x1L -#else - FILEFLAGS 0x0L -#endif - FILEOS 0x4L - FILETYPE 0x2L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904e4" - BEGIN - VALUE "CompanyName", "Julian Smart\0" - VALUE "FileDescription", "wxWindows simple example plugin file\0" - VALUE "FileVersion", "0.0.0.1\0" - VALUE "InternalName", "wxWindows Simple Plugin\0" - VALUE "LegalCopyright", "Copyright Julian Smart 1997\0" - VALUE "LegalTrademarks", "\0" - VALUE "OriginalFilename","npsimple32.dll\0" - VALUE "ProductName", "wxWindows Simple Plugin Sample\0" - VALUE "ProductVersion", "0.0.0.1\0" - VALUE "MIMEType", "wxsimple/mime-type\0" - VALUE "FileExtents", "smp\0" - VALUE "FileOpenName", "wxWindows Simple (*.smp)\0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1252 - END -END - diff --git a/utils/nplugin/samples/simple/simple.cpp b/utils/nplugin/samples/simple/simple.cpp deleted file mode 100644 index 4e4a83f593..0000000000 --- a/utils/nplugin/samples/simple/simple.cpp +++ /dev/null @@ -1,174 +0,0 @@ -/* - * File: simple.cpp - * Purpose: Minimal wxWindows plugin - * Author: Julian Smart - * Created: 1997 - * Updated: - * Copyright: (c) Julian Smart - */ - -/* static const char sccsid[] = "%W% %G%"; */ - -#ifdef __GNUG__ -#pragma implementation -#pragma interface -#endif - -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include - -#include "NPApp.h" -#include "NPFrame.h" - -// Define a new application type -class MyApp: public wxPluginApp -{ public: - virtual bool OnInit(void); - virtual wxPluginFrame* OnNewInstance(const wxPluginData& data); -}; - -// Define a new frame type -class MyFrame: public wxPluginFrame -{ public: - MyFrame(const wxPluginData& data); - - public: - // Let's paint directly onto the 'frame'; we don't need a subwindow - void OnPaint(wxPaintEvent& event); - void OnDraw(wxDC& dc); - void OnMouseEvent(wxMouseEvent& event); - - // Called when the file has been downloaded - virtual void OnNPNewFile(NPStream *stream, const wxString& fname); - - void CentreStrings(wxDC& dc); - - DECLARE_EVENT_TABLE() - - protected: - wxStringList m_strings; - long m_xpos; - long m_ypos; -}; - -BEGIN_EVENT_TABLE(MyFrame, wxFrame) - EVT_SIZE(MyFrame::OnSize) - EVT_PAINT(MyFrame::OnPaint) - EVT_MOUSE_EVENTS(MyFrame::OnMouseEvent) -END_EVENT_TABLE() - -IMPLEMENT_APP(MyApp) - -// No app initialisation necessary, and for a plugin there is no -// top frame. -bool MyApp::OnInit(void) -{ - return TRUE; -} - -// Called whenever a new plugin instance is called. We could check -// various things here in 'data' but we won't bother. -wxPluginFrame* MyApp::OnNewInstance(const wxPluginData& data) -{ - // Implicitly added to list of plugin frames - return new MyFrame(data); -} - -// My frame constructor -MyFrame::MyFrame(const wxPluginData& data): - wxPluginFrame(data) -{ - m_xpos = -1; - m_ypos = -1; -} - -void MyFrame::OnPaint(wxPaintEvent& event) -{ - wxPaintDC dc(this); - - OnDraw(dc); -} - -void MyFrame::OnDraw(wxDC& dc) -{ - dc.SetBrush(*wxCYAN_BRUSH); - dc.SetPen(*wxRED_PEN); - - int w, h; - GetClientSize(&w, &h); - - dc.DrawRectangle(0, 0, w, h); - - wxFont swissFont(10, wxSWISS, wxNORMAL, wxNORMAL); - dc.SetFont(swissFont); - dc.SetBackgroundMode(wxTRANSPARENT); - - CentreStrings(dc); -} - -// Called when the file has been downloaded -void MyFrame::OnNPNewFile(NPStream *stream, const wxString& fname) -{ - ifstream str(fname); - char buf[201]; - - while ( !str.eof() ) - { - buf[0] = 0; - str.getline(buf, 200); - - if ( buf[0] != 0 ) - m_strings.Add(buf); - } - Refresh(); -} - -void MyFrame::CentreStrings(wxDC& dc) -{ - int y = 5; - int cw, ch; - GetClientSize(&cw, &ch); - - wxNode *node = m_strings.First(); - while ( node ) - { - char *s = (char *)node->Data(); - long w, h; - dc.GetTextExtent(s, &w, &h); - - int x = wxMax(0, (cw - w)/2); - dc.DrawText(s, x, y); - - y += h + (h/2); - - node = node->Next(); - } -} - -// This implements a tiny doodling program. Drag the mouse using -// the left button. -void MyFrame::OnMouseEvent(wxMouseEvent& event) -{ - long x, y; - event.Position(&x, &y); - wxClientDC dc(this); - - if (m_xpos > -1 && m_ypos > -1 && event.Dragging() && event.LeftIsDown()) - { - dc.SetPen(wxBLACK_PEN); - dc.SetBrush(wxTRANSPARENT_BRUSH); - dc.DrawLine(m_xpos, m_ypos, x, y); - } - m_xpos = x; - m_ypos = y; -} - diff --git a/utils/nplugin/src/makefile.vc b/utils/nplugin/src/makefile.vc deleted file mode 100644 index 8493ca3723..0000000000 --- a/utils/nplugin/src/makefile.vc +++ /dev/null @@ -1,78 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile : Builds controls example (MS VC++). -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -# Application is a DLL -DLL=1 - -!include $(WXDIR)\src\makevc.env - -PLUGINDIR = $(WXDIR)\utils\nplugin -THISDIR = $(PLUGINDIR)\src -LIBTARGET=$(PLUGINDIR)\lib\nplugin.lib - -OBJECTS = npwin.obj npshell.obj NPFrame.obj NPApp.obj - -all: $(LIBTARGET) - -wx: - cd $(WXDIR)\src\msw - nmake -f makefile.vc FINAL=$(FINAL) - cd $(THISDIR) - -wxclean: - cd $(WXDIR)\src\msw - nmake -f makefile.vc clean - cd $(THISDIR) - -$(LIBTARGET): $(OBJECTS) - -erase $(LIBTARGET) - $(implib) @<< --out:$(LIBTARGET) --machine:$(CPU) -$(OBJECTS) -<< - -npwin.obj: npwin.cpp npapi.h npupp.h - $(cc) @<< -$(CPPFLAGS2) /c /Tp $*.$(SRCSUFF) -<< - -npshell.obj: npshell.cpp npapi.h NPApp.h NPFrame.h - $(cc) @<< -$(CPPFLAGS2) /c /Tp $*.$(SRCSUFF) -<< - -NPFrame.obj: NPFrame.cpp NPFrame.h NPApp.h npapi.h - $(cc) @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -NPApp.obj: NPApp.cpp NPApp.h NPFrame.h npapi.h - $(cc) @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -clean: - -erase *.obj - -erase *.exe - -erase *.res - -erase *.map - -erase *.sbr - -erase *.pdb - -erase *.dll - -erase *.exp - -erase *.ilk - -erase $(LIBTARGET) diff --git a/utils/nplugin/src/npapi.h b/utils/nplugin/src/npapi.h deleted file mode 100644 index bbb631c3d4..0000000000 --- a/utils/nplugin/src/npapi.h +++ /dev/null @@ -1,258 +0,0 @@ -/* - * npapi.h $Revision$ - * Netscape client plug-in API spec - */ - -#ifndef _NPAPI_H_ -#define _NPAPI_H_ - - -/* XXX this needs to get out of here */ -#if defined(__MWERKS__) -#ifndef XP_MAC -#define XP_MAC -#endif -#endif - - -/* - * Version constants - */ - -#define NP_VERSION_MAJOR 0 -#define NP_VERSION_MINOR 6 - - - -/* - * Basic types - */ - -#ifndef _UINT16 -typedef unsigned short uint16; -#endif -#ifndef _UINT32 -typedef unsigned long uint32; -#endif -#ifndef _INT16 -typedef short int16; -#endif -#ifndef _INT32 -typedef long int32; -#endif - -#ifndef FALSE -#define FALSE (0) -#endif -#ifndef TRUE -#define TRUE (1) -#endif -#ifndef NULL -#define NULL (0L) -#endif - -typedef unsigned char NPBool; -typedef void* NPEvent; -typedef int16 NPError; -typedef char* NPMIMEType; - - -/* - * NPP is a plug-in's opaque instance handle - */ -typedef struct _NPP -{ - void* pdata; /* plug-in private data */ - void* ndata; /* netscape private data */ -} NPP_t; - -typedef NPP_t* NPP; - - - -typedef struct _NPStream -{ - void* pdata; /* plug-in private data */ - void* ndata; /* netscape private data */ - const char* url; - uint32 end; - uint32 lastmodified; -} NPStream; - -typedef struct _NPByteRange -{ - int32 offset; /* negative offset means from the end */ - uint32 length; - struct _NPByteRange* next; -} NPByteRange; - - -typedef struct _NPSavedData -{ - int32 len; - void* buf; -} NPSavedData; - - - -typedef struct _NPRect -{ - uint16 top; - uint16 left; - uint16 bottom; - uint16 right; -} NPRect; - -typedef struct _NPWindow -{ - void* window; /* platform specific window handle */ - uint32 x; /* position of top left corner relative to a netscape page */ - uint32 y; - uint32 width; /* maximum window size */ - uint32 height; - NPRect clipRect; /* clipping rectangle in port coordinates */ -} NPWindow; - - - -typedef struct _NPFullPrint -{ - NPBool pluginPrinted; /* Set TRUE if plugin handled fullscreen printing */ - NPBool printOne; /* TRUE if plugin should print one copy to default printer */ - void* platformPrint; /* Platform-specific printing info */ -} NPFullPrint; - -typedef struct _NPEmbedPrint -{ - NPWindow window; - void* platformPrint; /* Platform-specific printing info */ -} NPEmbedPrint; - -typedef struct _NPPrint -{ - uint16 mode; /* NP_FULL or NP_EMBED */ - union - { - NPFullPrint fullPrint; /* if mode is NP_FULL */ - NPEmbedPrint embedPrint; /* if mode is NP_EMBED */ - } print; -} NPPrint; - - - - -#ifdef XP_MAC - -/* - * Mac-specific structures and definitions. - */ - -#include -#include - -typedef struct NP_Port -{ - CGrafPtr port; /* Grafport */ - int32 portx; /* position inside the topmost window */ - int32 porty; -} NP_Port; - -/* - * Non-standard event types that can be passed to HandleEvent - */ -#define getFocusEvent (osEvt + 16) -#define loseFocusEvent (osEvt + 17) -#define adjustCursorEvent (osEvt + 18) - -#endif /* XP_MAC */ - - - - -#define NP_EMBED 1 -#define NP_FULL 2 -#define NP_BACKGROUND 3 - -#define NP_NORMAL 1 -#define NP_SEEK 2 -#define NP_ASFILE 3 - -#define NP_MAXREADY (((unsigned)(~0)<<1)>>1) - - -/* - * Error and reason code definitions. - */ - -#define NP_NOERR 0 -#define NP_EINVAL 1 -#define NP_EABORT 2 - -#define NPERR_BASE 0 -#define NPERR_NO_ERROR (NPERR_BASE + 0) -#define NPERR_GENERIC_ERROR (NPERR_BASE + 1) -#define NPERR_INVALID_INSTANCE_ERROR (NPERR_BASE + 2) -#define NPERR_INVALID_FUNCTABLE_ERROR (NPERR_BASE + 3) -#define NPERR_MODULE_LOAD_FAILED_ERROR (NPERR_BASE + 4) -#define NPERR_OUT_OF_MEMORY_ERROR (NPERR_BASE + 5) -#define NPERR_INVALID_PLUGIN_ERROR (NPERR_BASE + 6) -#define NPERR_INVALID_PLUGIN_DIR_ERROR (NPERR_BASE + 7) -#define NPERR_INCOMPATIBLE_VERSION_ERROR (NPERR_BASE + 8) - -#define NPRES_BASE 0 -#define NPRES_NETWORK_ERR (NPRES_BASE + 0) -#define NPRES_USER_BREAK (NPRES_BASE + 1) -#define NPRES_DONE (NPRES_BASE + 3) - - - -/* - * Function prototypes. - * Functions beginning with 'NPP' are functions provided by the plugin that Netscape will call. - * Functions beginning with 'NPN' are functions provided by Netscape that the plugin will call. - */ - -#if defined(_WINDOWS) && !defined(__WIN32__) -#define NP_LOADDS _loadds -#else -#define NP_LOADDS -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -NPError NPP_Initialize(void); -void NPP_Shutdown(void); -NPError NP_LOADDS NPP_New(NPMIMEType pluginType, NPP instance, uint16 mode, int16 argc, char* argn[], char* argv[], NPSavedData* saved); -NPError NP_LOADDS NPP_Destroy(NPP instance, NPSavedData** save); -NPError NP_LOADDS NPP_SetWindow(NPP instance, NPWindow* window); -NPError NP_LOADDS NPP_NewStream(NPP instance, NPMIMEType type, NPStream* stream, NPBool seekable, uint16* stype); -NPError NP_LOADDS NPP_DestroyStream(NPP instance, NPStream* stream, NPError reason); -int32 NP_LOADDS NPP_WriteReady(NPP instance, NPStream* stream); -int32 NP_LOADDS NPP_Write(NPP instance, NPStream* stream, int32 offset, int32 len, void* buffer); -void NP_LOADDS NPP_StreamAsFile(NPP instance, NPStream* stream, const char* fname); -void NP_LOADDS NPP_Print(NPP instance, NPPrint* platformPrint); -int16 NPP_HandleEvent(NPP instance, void* event); - -void NPN_Version(int* plugin_major, int* plugin_minor, int* netscape_major, int* netscape_minor); -NPError NPN_GetURL(NPP instance, const char* url, const char* window); -NPError NPN_PostURL(NPP instance, const char* url, const char* window, uint32 len, const char* buf, NPBool file); -NPError NPN_RequestRead(NPStream* stream, NPByteRange* rangeList); -NPError NPN_NewStream(NPP instance, NPMIMEType type, NPStream* stream); -int32 NPN_Write(NPP instance, NPStream* stream, int32 len, void* buffer); -NPError NPN_DestroyStream(NPP instance, NPStream* stream, NPError reason); -void NPN_Status(NPP instance, const char* message); -const char* NPN_UserAgent(NPP instance); -void* NPN_MemAlloc(uint32 size); -void NPN_MemFree(void* ptr); -uint32 NPN_MemFlush(uint32 size); -void NPN_ReloadPlugins(NPBool reloadPages); - -#ifdef __cplusplus -} /* end extern "C" */ -#endif - - -#endif /* _NPAPI_H_ */ - diff --git a/utils/nplugin/src/npapp.cpp b/utils/nplugin/src/npapp.cpp deleted file mode 100644 index b5aff25ab1..0000000000 --- a/utils/nplugin/src/npapp.cpp +++ /dev/null @@ -1,279 +0,0 @@ -/* - * File: NPApp.cc - * Purpose: wxPluginApp implementation - * Author: Julian Smart - * Created: 1997 - * Updated: - * Copyright: (c) Julian Smart - */ - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#include "NPApp.h" -#include "NPFrame.h" - -#include - -IMPLEMENT_ABSTRACT_CLASS(wxPluginApp, wxApp) - -wxPluginApp *wxGetPluginApp(void) -{ - if ( wxTheApp && wxTheApp->IsKindOf(CLASSINFO(wxPluginApp))) - return (wxPluginApp *)wxTheApp; - else - return NULL; -} - -wxPluginApp::wxPluginApp(void) -{ - m_data.m_argc = NULL; - m_data.m_argn = NULL; - m_data.m_argv = NULL; - m_data.m_type = 0; - m_data.m_instance = 0; - m_data.m_mode = 0; - m_data.m_window = 0; -} - -wxPluginApp::~wxPluginApp(void) -{ - if ( m_data.m_argn ) - delete[] m_data.m_argn; - if ( m_data.m_argv ) - delete[] m_data.m_argv; -} - -// Add a frame -void wxPluginApp::AddFrame(wxPluginFrame *frame) -{ - m_frames.Append(frame); -} - -// Remove a frame -void wxPluginApp::RemoveFrame(wxPluginFrame *frame) -{ - m_frames.DeleteObject(frame); -} - -// Find a frame given a NP instance -wxPluginFrame *wxPluginApp::FindFrame(NPP instance) -{ - wxNode *node = m_frames.First(); - while ( node ) - { - wxPluginFrame *frame = (wxPluginFrame *)node->Data(); - if ( frame->GetInstance() == instance ) - { - return frame; - } - node = node->Next(); - } - return NULL; -} - -void wxPluginApp::SetAttributeValues(const int n, char *argn[], char *argv[]) -{ - if ( m_data.m_argn ) - delete[] m_data.m_argn; - if ( m_data.m_argv ) - delete[] m_data.m_argv; - - m_data.m_argc = n; - - m_data.m_argn = new wxString[n]; - m_data.m_argv = new wxString[n]; - int i; - for ( i = 0; i < n ; i ++) - { - m_data.m_argn[i] = argn[i]; - m_data.m_argv[i] = argv[i]; - } -} - -/////////////////////////////////////////////////////////////// -// Netscape Plugin API calls routed via wxPluginApp - -NPError wxPluginApp::NPP_Destroy(NPP instance, NPSavedData** save) -{ - wxPluginFrame *frame = FindFrame(instance); - if ( frame ) - { - frame->OnClose(); - delete frame; - } - return NPERR_NO_ERROR; -} - -NPError wxPluginApp::NPP_DestroyStream(NPP instance, NPStream* stream, NPError reason) -{ - return NPERR_NO_ERROR; -} - -/* -jref wxPluginApp::NPP_GetJavaClass(void) -{ - return 0; -} -*/ - -// This can't work now because we don't have a global app until wxEntry is called. -// We'll put the wxEntry call in npshell.cpp instead. -NPError wxPluginApp::NPP_Initialize(void) -{ - static int init = FALSE; - - if ( init == TRUE ) - MessageBox(NULL, "wxPluginApp::NPP_Initialize:\nabout to call wxEntry for 2nd time!!!", "wxPlugin", MB_OK); - - wxEntry((WXHINSTANCE) GetModuleHandle(NULL)); - - init = TRUE; - -// MessageBox(NULL, "wxPluginApp::NPP_Initialize: have called wxEntry", "wxPlugin", MB_OK); - return NPERR_NO_ERROR; -} - -NPError wxPluginApp::NPP_New(NPMIMEType pluginType, NPP instance, uint16 mode, - int16 argc, char* argn[], char* argv[], NPSavedData* saved) -{ -// MessageBox(NULL, "wxPluginApp::NPP_New", "wxPlugin", MB_OK); - - // Save values so frame can be created in first NPP_SetWindow - if ( m_data.m_instance != 0 ) - { - MessageBox(NULL, "wxPluginApp::NPP_New: whoops, 2 NPP_New calls in succession without NPP_SetWindow.\n Need to modify my code!", "wxPlugin", MB_OK); - return NPERR_NO_ERROR; - } - - m_data.m_instance = instance; - m_data.m_type = pluginType; - m_data.m_mode = mode; - - SetAttributeValues(argc, argn, argv); - - // Unfortunately, we may get a stream event before we've got a valid window - // handle, so we just have to go ahead and create a new instance. - wxPluginFrame *frame = OnNewInstance(m_data); - - m_data.m_instance = NULL; - m_data.m_window = NULL; - delete[] m_data.m_argv; - delete[] m_data.m_argn; - m_data.m_argv = NULL; - m_data.m_argn = NULL; - - return NPERR_NO_ERROR; -} - -NPError wxPluginApp::NPP_NewStream(NPP instance, NPMIMEType type, NPStream *stream, - NPBool seekable, uint16* stype) -{ - // By default, we want to receive a file instead of a stream. - wxPluginFrame *frame = FindFrame(instance); - if ( frame ) - { - return frame->OnNPNewStream(type, stream, seekable, stype); - } - return NPERR_NO_ERROR; -} - -void wxPluginApp::NPP_Print(NPP instance, NPPrint* printInfo) -{ - if (instance == NULL) - return; - - wxPluginFrame *frame = FindFrame(instance); - if ( frame ) - { - frame->OnNPPrint(printInfo); - } -} - -NPError wxPluginApp::NPP_SetWindow(NPP instance, NPWindow* window) -{ -// MessageBox(NULL, "wxPluginApp::NPP_SetWindow", "wxPlugin", MB_OK); - - if ( window ) - wxDebugMsg("%d\n", (int) window->window); - - wxPluginFrame *frame = FindFrame(instance); - if ( frame ) - { - frame->SetNPWindow(window); - } - else - { -#if 0 - // No such frame: must make it. - if ( m_data.m_instance == NULL ) - { - MessageBox(NULL, "wxPluginApp::NPP_SetWindow: whoops, no data to create window. SetWindow called in funny order?", "wxPlugin", MB_OK); - return NPERR_NO_ERROR; - } - - if ( window->window == NULL ) - { - // We're receiving a NULL window before we've even received - // a valid window. Ignore this silly thing. - return NPERR_NO_ERROR; - } - - m_data.m_window = window; - m_data.m_instance = instance; - -// wxPluginFrame *frame = OnNewInstance(m_data); - - m_data.m_instance = NULL; - m_data.m_window = NULL; - delete[] m_data.m_argv; - delete[] m_data.m_argn; - m_data.m_argv = NULL; - m_data.m_argn = NULL; -#endif - } - return NPERR_NO_ERROR; -} - -void wxPluginApp::NPP_Shutdown(void) -{ - // Clean up wxWindows - CleanUp(); -} - -void wxPluginApp::NPP_StreamAsFile(NPP instance, NPStream* stream, const char *fname) -{ - wxPluginFrame *frame = FindFrame(instance); - if ( frame ) - { - wxString str(fname); - frame->OnNPNewFile(stream, str); - } -} - -/* -void wxPluginApp::NPP_URLNotify(NPP instance, const char* url, NPReason reason, - void* notifyData) -{ -} -*/ - -int32 wxPluginApp::NPP_Write(NPP instance, NPStream* stream, int32 offset, int32 len, - void* buf) -{ - return len; // The number of bytes accepted -} - -static int32 STREAMBUFSIZE = 0X0FFFFFFF; // If we are reading from a file in NPAsFile - // mode so we can take any size stream in our - // write call (since we ignore it) - -int32 wxPluginApp::NPP_WriteReady(NPP instance, NPStream* stream) -{ - return STREAMBUFSIZE; // Number of bytes ready to accept in NPP_Write() -} - diff --git a/utils/nplugin/src/npapp.h b/utils/nplugin/src/npapp.h deleted file mode 100644 index 238a612313..0000000000 --- a/utils/nplugin/src/npapp.h +++ /dev/null @@ -1,91 +0,0 @@ -/* - * File: NPApp.h - * Purpose: wxPluginApp declaration - * Author: Julian Smart - * Created: 1997 - * Updated: - * Copyright: (c) Julian Smart - */ - -#ifndef __PLUGINAPP__ -#define __PLUGINAPP__ - -#include "wx/wx.h" -#include "npapi.h" - -class wxPluginFrame; - -// Data passed to OnNewInstance -class wxPluginData -{ -public: - NPP m_instance; - NPMIMEType m_type; - NPWindow* m_window; - int m_mode; - int m_argc; - wxString* m_argn; - wxString* m_argv; -}; - -class WXDLLEXPORT wxPluginApp: public wxApp -{ - DECLARE_ABSTRACT_CLASS(wxPluginApp) - -public: - wxPluginApp(void); - ~wxPluginApp(void); - - // Find a frame given a NP instance - wxPluginFrame *FindFrame(NPP instance); - - // Add a frame - void AddFrame(wxPluginFrame *frame); - - // Remove a frame - void RemoveFrame(wxPluginFrame *frame); - - // Set attribute/values for the last instance - void SetAttributeValues(const int n, char *argn[], char *argv[]); - - /////////////////////////////////////////////////////////////// - // Higher-level API than NP API - virtual wxPluginFrame *OnNewInstance(const wxPluginData& data) = 0; - - /////////////////////////////////////////////////////////////// - // Netscape Plugin API calls routed via wxPluginApp - - virtual NPError NPP_Destroy(NPP instance, NPSavedData** save); - virtual NPError NPP_DestroyStream(NPP instance, NPStream* stream, NPError reason); -// virtual jref NPP_GetJavaClass(void); - virtual NPError NPP_Initialize(void); - virtual NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16 mode, - int16 argc, char* argn[], char* argv[], NPSavedData* saved); - virtual NPError NPP_NewStream(NPP instance, NPMIMEType type, NPStream *stream, - NPBool seekable, uint16* stype); - virtual void NPP_Print(NPP instance, NPPrint* platformPrint); - virtual NPError NPP_SetWindow(NPP instance, NPWindow* window); - virtual void NPP_Shutdown(void); - virtual void NPP_StreamAsFile(NPP instance, NPStream* stream, const char *fname); -/* - virtual void NPP_URLNotify(NPP instance, const char* url, NPReason reason, - void* notifyData); -*/ - virtual int32 NPP_Write(NPP instance, NPStream* stream, int32 offset, int32 len, - void* buf); - virtual int32 NPP_WriteReady(NPP instance, NPStream* stream); - -protected: - - // List of plugin frames - wxList m_frames; - - // Temporary NPP_New arguments so we can wait until NPP_SetWindow is called - // before creating a frame - wxPluginData m_data; -}; - -wxPluginApp *wxGetPluginApp(void); - -#endif - diff --git a/utils/nplugin/src/npframe.cpp b/utils/nplugin/src/npframe.cpp deleted file mode 100644 index 2e050c174b..0000000000 --- a/utils/nplugin/src/npframe.cpp +++ /dev/null @@ -1,293 +0,0 @@ -/* - * File: NPFrame.cc - * Purpose: wxPluginFrame implementation - * Author: Julian Smart - * Created: 1997 - * Updated: - * Copyright: (c) Julian Smart - */ - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/frame.h" -#endif - -#include "wx/dcprint.h" - -#include "NPFrame.h" -#include "NPApp.h" - -#include - -extern wxList wxModelessWindows; -extern char wxFrameClassName[]; - -IMPLEMENT_DYNAMIC_CLASS(wxPluginFrame, wxFrame) - -wxPluginFrame::wxPluginFrame(void) -{ - m_npWindow = NULL; - m_npInstance = NULL; - m_nAttributes = 0; - m_names = NULL; - m_values = NULL; -} - -bool wxPluginFrame::Create(const wxPluginData& data) -{ - SetName("pluginFrame"); - - m_npWindow = NULL; - m_npInstance = NULL; - m_nAttributes = 0; - m_names = NULL; - m_values = NULL; - m_npWindow = data.m_window; - m_npInstance = data.m_instance; - - SetAttributeValues(data.m_argc, data.m_argn, data.m_argv); - SetNPWindow(data.m_window); - - wxModelessWindows.Append(this); - - if (wxTheApp->IsKindOf(CLASSINFO(wxPluginApp))) - { - ((wxPluginApp *)wxTheApp)->AddFrame(this); - } - return TRUE; -} - -wxPluginFrame::~wxPluginFrame(void) -{ - if (wxTheApp->IsKindOf(CLASSINFO(wxPluginApp))) - { - ((wxPluginApp *)wxTheApp)->RemoveFrame(this); - } - - if ( GetHWND() ) - UnsubclassWin(); - m_hWnd = 0; - - if ( m_names ) - delete[] m_names; - if ( m_values ) - delete[] m_values; -} - -// Get size *available for subwindows* i.e. excluding menu bar etc. -// For XView, this is the same as GetSize -void wxPluginFrame::GetClientSize(int *x, int *y) const -{ - if ( !m_hWnd ) - { - *x = 0; *y = 0; - return; - } - wxFrame::GetClientSize(x, y); -} - -// Set the client size (i.e. leave the calculation of borders etc. -// to wxWindows) -void wxPluginFrame::SetClientSize(const int width, const int height) -{ - if ( !m_hWnd ) - return ; - - wxFrame::SetClientSize(width, height); -} - -void wxPluginFrame::GetSize(int *width, int *height) const -{ - if ( !m_hWnd ) - { - *width = 0; *height = 0; - return; - } - wxFrame::GetSize(width, height); -} - -void wxPluginFrame::GetPosition(int *x, int *y) const -{ - if ( !m_hWnd ) - { - *x = 0; *y = 0; - return; - } - wxFrame::GetPosition(x, y); -} - -void wxPluginFrame::SetAttributeValues(const int n, const char *argn[], const char *argv[]) -{ - if ( m_names ) - delete[] m_names; - if ( m_values ) - delete[] m_values; - - m_nAttributes = n; - - m_names = new wxString[n]; - m_values = new wxString[n]; - int i; - for ( i = 0; i < n ; i ++) - { - m_names[i] = argn[i]; - m_values[i] = argv[i]; - } -} - -void wxPluginFrame::SetAttributeValues(const int n, const wxString* argn, const wxString* argv) -{ - if ( m_names ) - delete[] m_names; - if ( m_values ) - delete[] m_values; - - m_nAttributes = n; - - m_names = new wxString[n]; - m_values = new wxString[n]; - int i; - for ( i = 0; i < n ; i ++) - { - m_names[i] = argn[i]; - m_values[i] = argv[i]; - } -} - -void wxPluginFrame::SetSize(const int x, const int y, const int width, const int height, const int sizeFlags) -{ - // Can't allow app to set the size. - return; -} - -// Sets and subclasses the platform-specific window handle -bool wxPluginFrame::SetNPWindow(NPWindow *window) -{ - if ( !window || !window->window) - { - if ( m_hWnd ) - { - wxMessageBox("Unsubclassing window prematurely"); - UnsubclassWin(); - m_hWnd = 0; - } - m_npWindow = NULL; - } - else - { - if ( m_hWnd ) - { - if ( m_hWnd == (WXHWND) window->window ) - { - // Does this mean a resize? - return TRUE; - } - } - - m_npWindow = window; - m_hWnd = (WXHWND) window->window; - SubclassWin(m_hWnd); - m_windowId = ::GetWindowLong((HWND) m_hWnd, GWL_ID); - } - return TRUE; -} - -NPError wxPluginFrame::OnNPNewStream(NPMIMEType type, NPStream *stream, bool seekable, uint16* stype) -{ - *stype = NP_ASFILE; - return NPERR_NO_ERROR; -} - -void wxPluginFrame::OnNPNewFile(NPStream *stream, const wxString& fname) -{ -} - -void wxPluginFrame::OnNPPrint(NPPrint* printInfo) -{ - if (printInfo->mode == NP_FULL) - { - // - // *Developers*: If your plugin would like to take over - // printing completely when it is in full-screen mode, - // set printInfo->pluginPrinted to TRUE and print your - // plugin as you see fit. If your plugin wants Netscape - // to handle printing in this case, set printInfo->pluginPrinted - // to FALSE (the default) and do nothing. If you do want - // to handle printing yourself, printOne is true if the - // print button (as opposed to the print menu) was clicked. - // On the Macintosh, platformPrint is a THPrint; on Windows, - // platformPrint is a structure (defined in npapi.h) containing - // the printer name, port, etc. - // - void* platformPrint = printInfo->print.fullPrint.platformPrint; - NPBool printOne = printInfo->print.fullPrint.printOne; - - printInfo->print.fullPrint.pluginPrinted = FALSE; // Do the default - - } - else // If not fullscreen, we must be embedded - { - // - // *Developers*: If your plugin is embedded, or is full-screen - // but you returned false in pluginPrinted above, NPP_Print - // will be called with mode == NP_EMBED. The NPWindow - // in the printInfo gives the location and dimensions of - // the embedded plugin on the printed page. On the Macintosh, - // platformPrint is the printer port; on Windows, platformPrint - // is the handle to the printing device context. - // - NPWindow* printWindow = &(printInfo->print.embedPrint.window); - void* platformPrint = printInfo->print.embedPrint.platformPrint; - - HDC hDC = (HDC) platformPrint; - wxRect rect; - rect.x = printWindow->x; - rect.y = printWindow->y; - rect.width = printWindow->width; - rect.height = printWindow->height; - - int saveIt = ::SaveDC(hDC); - - wxPrinterDC *printerDC = new wxPrinterDC((WXHDC) hDC); - - OnPrint(*printerDC, rect); - - printerDC->SetHDC(0); - delete printerDC; - - ::RestoreDC(hDC, saveIt); - } - } - -void wxPluginFrame::OnPrint(wxPrinterDC& dc, wxRect& rect) -{ - // We must do some transformations here - RECT winRect; -/* - winRect.left = rect.x; - winRect.top = rect.y; - winRect.right = rect.x + rect.right; - winRect.bottom = rect.y + rect.height; -*/ - POINT winPoint[2]; - winPoint[0].x = rect.x; - winPoint[0].y = rect.y; - winPoint[1].x = rect.x + rect.width; - winPoint[1].y = rect.y + rect.height; - - if (!LPtoDP((HDC) dc.GetHDC(), winPoint, 2)) - wxMessageBox("LPtoDP failed."); - - OnDraw(dc); -} - -void wxPluginFrame::OnDraw(wxDC& dc) -{ -} - diff --git a/utils/nplugin/src/npframe.h b/utils/nplugin/src/npframe.h deleted file mode 100644 index 6cac54b828..0000000000 --- a/utils/nplugin/src/npframe.h +++ /dev/null @@ -1,81 +0,0 @@ -/* - * File: NPFrame.h - * Purpose: wxPluginFrame declaration - * Author: Julian Smart - * Created: 1997 - * Updated: - * Copyright: (c) Julian Smart - */ - -#ifndef __PLUGINFRAME__ -#define __PLUGINFRAME__ - -#include "wx/frame.h" -#include "NPApp.h" -#include "npapi.h" - -WXDLLEXPORT extern const char *wxFrameNameStr; - -class wxPrinterDC; -class WXDLLEXPORT wxPluginFrame: public wxFrame -{ - DECLARE_DYNAMIC_CLASS(wxPluginFrame) - -public: - wxPluginFrame(void); - inline wxPluginFrame(const wxPluginData& data) - { - m_npWindow = NULL; - m_npInstance = NULL; - m_nAttributes = 0; - m_names = NULL; - m_values = NULL; - - Create(data); - } - - ~wxPluginFrame(void); - - bool Create(const wxPluginData& data); - - // Sets and subclasses the platform-specific window handle - virtual bool SetNPWindow(NPWindow *window); - inline NPWindow *GetNPWindow(void) { return m_npWindow; } - - void SetClientSize(const int width, const int height); - void GetClientSize(int *width, int *height) const; - - void GetSize(int *width, int *height) const ; - void GetPosition(int *x, int *y) const ; - void SetSize(const int x, const int y, const int width, const int height, const int sizeFlags = wxSIZE_AUTO); - - // Accessors - inline int GetAttributeCount(void) const { return m_nAttributes; } - inline wxString GetAttributeName(const int n) { return m_names[n]; } - inline wxString GetAttributeValue(const int n) { return m_values[n]; } - - void SetAttributeValues(const int n, const char* argn[], const char *argv[]); - void SetAttributeValues(const int n, const wxString* argn, const wxString* argv); - inline void SetInstance(const NPP instance) { m_npInstance = instance; }; - inline NPP GetInstance(void) { return m_npInstance; } - - // Overridables: low-level - virtual NPError OnNPNewStream(NPMIMEType type, NPStream *stream, bool seekable, uint16* stype); - virtual void OnNPNewFile(NPStream *stream, const wxString& fname); - virtual void OnNPPrint(NPPrint* printInfo); - - // Overridables: high-level - virtual void OnPrint(wxPrinterDC& dc, wxRect& rect); - virtual void OnDraw(wxDC& dc); - -protected: - - wxString* m_names; - wxString* m_values; - int m_nAttributes; - NPP m_npInstance; - NPWindow* m_npWindow; -}; - -#endif - diff --git a/utils/nplugin/src/npshell.cpp b/utils/nplugin/src/npshell.cpp deleted file mode 100644 index 2fe8d3b4b6..0000000000 --- a/utils/nplugin/src/npshell.cpp +++ /dev/null @@ -1,282 +0,0 @@ -//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -// -// npshell.cpp -// -// This file defines a "shell" plugin that plugin developers can use -// as the basis for a real plugin. This shell just provides empty -// implementations of all functions that the plugin can implement -// that will be called by Netscape (the NPP_xxx methods defined in -// npapi.h). -// -//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: - -#ifndef _NPAPI_H_ -#include "npapi.h" -#endif - -#include -#include -#include - -#include "NPApp.h" - -// -// Instance state information about the plugin. -// -// *Developers*: Use this struct to hold per-instance -// information that you'll need in the -// various functions in this file. -// -typedef struct _PluginInstance -{ - NPWindow* fWindow; - uint16 fMode; - -} PluginInstance; - - - -//------------------------------------------------------------------------------------ -// NPP_Initialize: -//------------------------------------------------------------------------------------ -NPError NPP_Initialize(void) -{ -// MessageBox(NULL, "NPP_Initialize", "NPTest", MB_OK); -/* - wxPluginApp *app = wxGetPluginApp(); - if ( app ) - return app->NPP_Initialize(); - else - return NPERR_NO_ERROR; -*/ - wxEntry((WXHINSTANCE) GetModuleHandle(NULL)); - - return NPERR_NO_ERROR; -} - - -//------------------------------------------------------------------------------------ -// NPP_Shutdown: -//------------------------------------------------------------------------------------ -void NPP_Shutdown(void) -{ -// MessageBox(NULL, "NPP_Shutdown", "wxPlugin", MB_OK); - - wxPluginApp *app = wxGetPluginApp(); - if ( app ) - app->NPP_Shutdown(); -} - - -//------------------------------------------------------------------------------------ -// NPP_New: -//------------------------------------------------------------------------------------ -NPError NP_LOADDS -NPP_New(NPMIMEType pluginType, - NPP instance, - uint16 mode, - int16 argc, - char* argn[], - char* argv[], - NPSavedData* saved) -{ -// MessageBox(NULL, "NPP_New", "NPTest", MB_OK); - - if (instance == NULL) - return NPERR_INVALID_INSTANCE_ERROR; - - wxPluginApp *app = wxGetPluginApp(); - if ( app ) - return app->NPP_New(pluginType, instance, mode, argc, argn, argv, saved); - else - return NPERR_NO_ERROR; -} - -//------------------------------------------------------------------------------------ -// NPP_Destroy: -//------------------------------------------------------------------------------------ -NPError NP_LOADDS -NPP_Destroy(NPP instance, NPSavedData** save) -{ -// MessageBox(NULL, "NPP_Destroy", "NPTest", MB_OK); - - if (instance == NULL) - return NPERR_INVALID_INSTANCE_ERROR; - - wxPluginApp *app = wxGetPluginApp(); - if ( app ) - return app->NPP_Destroy(instance, save); - else - return NPERR_NO_ERROR; -} - - -//------------------------------------------------------------------------------------ -// NPP_SetWindow: -//------------------------------------------------------------------------------------ -NPError NP_LOADDS -NPP_SetWindow(NPP instance, NPWindow* window) -{ -// MessageBox(NULL, "NPP_SetWindow", "NPTest", MB_OK); - - if (instance == NULL) - return NPERR_INVALID_INSTANCE_ERROR; - - wxPluginApp *app = wxGetPluginApp(); - if ( app ) - return app->NPP_SetWindow(instance, window); - else - return NPERR_NO_ERROR; -} - - -//------------------------------------------------------------------------------------ -// NPP_NewStream: -//------------------------------------------------------------------------------------ -NPError NP_LOADDS -NPP_NewStream(NPP instance, - NPMIMEType type, - NPStream *stream, - NPBool seekable, - uint16 *stype) -{ -// MessageBox(NULL, "NPP_NewStream", "NPTest", MB_OK); - - if (instance == NULL) - return NPERR_INVALID_INSTANCE_ERROR; - - wxPluginApp *app = wxGetPluginApp(); - if ( app ) - return app->NPP_NewStream(instance, type, stream, seekable, stype); - else - return NPERR_NO_ERROR; -} - - - -// -// *Developers*: -// These next 2 functions are directly relevant in a plug-in which handles the -// data in a streaming manner. If you want zero bytes because no buffer space -// is YET available, return 0. As long as the stream has not been written -// to the plugin, Navigator will continue trying to send bytes. If the plugin -// doesn't want them, just return some large number from NPP_WriteReady(), and -// ignore them in NPP_Write(). For a NP_ASFILE stream, they are still called -// but can safely be ignored using this strategy. -// - -static int32 STREAMBUFSIZE = 0X0FFFFFFF; // If we are reading from a file in NPAsFile - // mode so we can take any size stream in our - // write call (since we ignore it) - -//------------------------------------------------------------------------------------ -// NPP_WriteReady: -//------------------------------------------------------------------------------------ -int32 NP_LOADDS -NPP_WriteReady(NPP instance, NPStream *stream) -{ - wxPluginApp *app = wxGetPluginApp(); - if ( app ) - return app->NPP_WriteReady(instance, stream); - else - return STREAMBUFSIZE; - - return STREAMBUFSIZE; // Number of bytes ready to accept in NPP_Write() -} - - - -//------------------------------------------------------------------------------------ -// NPP_Write: -//------------------------------------------------------------------------------------ -int32 NP_LOADDS -NPP_Write(NPP instance, NPStream *stream, int32 offset, int32 len, void *buffer) -{ - wxPluginApp *app = wxGetPluginApp(); - if ( app ) - return app->NPP_Write(instance, stream, offset, len, buffer); - else - return len; // The number of bytes accepted -} - - - -//------------------------------------------------------------------------------------ -// NPP_DestroyStream: -//------------------------------------------------------------------------------------ -NPError NP_LOADDS -NPP_DestroyStream(NPP instance, NPStream *stream, NPError reason) -{ - if (instance == NULL) - return NPERR_INVALID_INSTANCE_ERROR; - - wxPluginApp *app = wxGetPluginApp(); - if ( app ) - return app->NPP_DestroyStream(instance, stream, reason); - else - return NPERR_NO_ERROR; -} - - -//------------------------------------------------------------------------------------ -// NPP_StreamAsFile: -//------------------------------------------------------------------------------------ -void NP_LOADDS -NPP_StreamAsFile(NPP instance, NPStream *stream, const char* fname) -{ - wxPluginApp *app = wxGetPluginApp(); - if ( app ) - app->NPP_StreamAsFile(instance, stream, fname); -} - - - -//------------------------------------------------------------------------------------ -// NPP_Print: -//------------------------------------------------------------------------------------ -void NP_LOADDS -NPP_Print(NPP instance, NPPrint* printInfo) -{ - if (printInfo == NULL) // trap invalid parm - return; - if ( instance == NULL ) - return; - - wxPluginApp *app = wxGetPluginApp(); - if ( app ) - app->NPP_Print(instance, printInfo); -} - - -//------------------------------------------------------------------------------------ -// NPP_HandleEvent: -// Mac-only. -//------------------------------------------------------------------------------------ -int16 NPP_HandleEvent(NPP instance, void* event) -{ - NPBool eventHandled = FALSE; - if (instance == NULL) - return eventHandled; - - PluginInstance* This = (PluginInstance*) instance->pdata; - - // - // *Developers*: The "event" passed in is a Macintosh - // EventRecord*. The event.what field can be any of the - // normal Mac event types, or one of the following additional - // types defined in npapi.h: getFocusEvent, loseFocusEvent, - // adjustCursorEvent. The focus events inform your plugin - // that it will become, or is no longer, the recepient of - // key events. If your plugin doesn't want to receive key - // events, return false when passed at getFocusEvent. The - // adjustCursorEvent is passed repeatedly when the mouse is - // over your plugin; if your plugin doesn't want to set the - // cursor, return false. Handle the standard Mac events as - // normal. The return value for all standard events is currently - // ignored except for the key event: for key events, only return - // true if your plugin has handled that particular key event. - // - - return eventHandled; -} - diff --git a/utils/nplugin/src/npupp.h b/utils/nplugin/src/npupp.h deleted file mode 100644 index 1c352d2245..0000000000 --- a/utils/nplugin/src/npupp.h +++ /dev/null @@ -1,799 +0,0 @@ -/* - * npupp.h $Revision$ - * function call mecahnics needed by platform specific glue code. - */ - - -#ifndef _NPUPP_H_ -#define _NPUPP_H_ - -#ifndef GENERATINGCFM -#define GENERATINGCFM 0 -#endif - -#ifndef _NPAPI_H_ -#include "npapi.h" -#endif - -/****************************************************************************************** - plug-in function table macros - for each function in and out of the plugin API we define - typedef NPP_FooUPP - #define NewNPP_FooProc - #define CallNPP_FooProc - for mac, define the UPP magic for PPC/68K calling - *******************************************************************************************/ - - -/* NPP_Initialize */ - -#if GENERATINGCFM -typedef UniversalProcPtr NPP_InitializeUPP; - -enum { - uppNPP_InitializeProcInfo = kThinkCStackBased - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(0)) - | RESULT_SIZE(SIZE_CODE(0)) -}; - -#define NewNPP_InitializeProc(FUNC) \ - (NPP_InitializeUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_InitializeProcInfo, GetCurrentArchitecture()) -#define CallNPP_InitializeProc(FUNC) \ - (void)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_InitializeProcInfo) - -#else - -typedef void (*NPP_InitializeUPP)(void); -#define NewNPP_InitializeProc(FUNC) \ - ((NPP_InitializeUPP) (FUNC)) -#define CallNPP_InitializeProc(FUNC) \ - (*(FUNC))() - -#endif - - -/* NPP_Shutdown */ - -#if GENERATINGCFM -typedef UniversalProcPtr NPP_ShutdownUPP; - -enum { - uppNPP_ShutdownProcInfo = kThinkCStackBased - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(0)) - | RESULT_SIZE(SIZE_CODE(0)) -}; - -#define NewNPP_ShutdownProc(FUNC) \ - (NPP_ShutdownUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_ShutdownProcInfo, GetCurrentArchitecture()) -#define CallNPP_ShutdownProc(FUNC) \ - (void)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_ShutdownProcInfo) - -#else - -typedef void (*NPP_ShutdownUPP)(void); -#define NewNPP_ShutdownProc(FUNC) \ - ((NPP_ShutdownUPP) (FUNC)) -#define CallNPP_ShutdownProc(FUNC) \ - (*(FUNC))() - -#endif - - -/* NPP_New */ - -#if GENERATINGCFM -typedef UniversalProcPtr NPP_NewUPP; - -enum { - uppNPP_NewProcInfo = kThinkCStackBased - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPMIMEType))) - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPP))) - | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(uint16))) - | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(int16))) - | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(char **))) - | STACK_ROUTINE_PARAMETER(6, SIZE_CODE(sizeof(char **))) - | STACK_ROUTINE_PARAMETER(7, SIZE_CODE(sizeof(NPSavedData *))) - | RESULT_SIZE(SIZE_CODE(sizeof(NPError))) -}; - -#define NewNPP_NewProc(FUNC) \ - (NPP_NewUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_NewProcInfo, GetCurrentArchitecture()) -#define CallNPP_NewProc(FUNC, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7) \ - (NPError)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_NewProcInfo, \ - (ARG1), (ARG2), (ARG3), (ARG4), (ARG5), (ARG6), (ARG7)) -#else - -typedef NPError (*NPP_NewUPP)(NPMIMEType pluginType, NPP instance, uint16 mode, int16 argc, char* argn[], char* argv[], NPSavedData* saved); -#define NewNPP_NewProc(FUNC) \ - ((NPP_NewUPP) (FUNC)) -#define CallNPP_NewProc(FUNC, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7) \ - (*(FUNC))((ARG1), (ARG2), (ARG3), (ARG4), (ARG5), (ARG6), (ARG7)) - -#endif - - -/* NPP_Destroy */ - -#if GENERATINGCFM - -typedef UniversalProcPtr NPP_DestroyUPP; -enum { - uppNPP_DestroyProcInfo = kThinkCStackBased - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP))) - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPSavedData **))) - | RESULT_SIZE(SIZE_CODE(sizeof(NPError))) -}; -#define NewNPP_DestroyProc(FUNC) \ - (NPP_DestroyUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_DestroyProcInfo, GetCurrentArchitecture()) -#define CallNPP_DestroyProc(FUNC, ARG1, ARG2) \ - (NPError)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_DestroyProcInfo, (ARG1), (ARG2)) -#else - -typedef NPError (*NPP_DestroyUPP)(NPP instance, NPSavedData** save); -#define NewNPP_DestroyProc(FUNC) \ - ((NPP_DestroyUPP) (FUNC)) -#define CallNPP_DestroyProc(FUNC, ARG1, ARG2) \ - (*(FUNC))((ARG1), (ARG2)) - -#endif - - -/* NPP_SetWindow */ - -#if GENERATINGCFM - -typedef UniversalProcPtr NPP_SetWindowUPP; -enum { - uppNPP_SetWindowProcInfo = kThinkCStackBased - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP))) - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPWindow *))) - | RESULT_SIZE(SIZE_CODE(sizeof(NPError))) -}; -#define NewNPP_SetWindowProc(FUNC) \ - (NPP_SetWindowUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_SetWindowProcInfo, GetCurrentArchitecture()) -#define CallNPP_SetWindowProc(FUNC, ARG1, ARG2) \ - (NPError)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_SetWindowProcInfo, (ARG1), (ARG2)) - -#else - -typedef NPError (*NPP_SetWindowUPP)(NPP instance, NPWindow* window); -#define NewNPP_SetWindowProc(FUNC) \ - ((NPP_SetWindowUPP) (FUNC)) -#define CallNPP_SetWindowProc(FUNC, ARG1, ARG2) \ - (*(FUNC))((ARG1), (ARG2)) - -#endif - - -/* NPP_NewStream */ - -#if GENERATINGCFM - -typedef UniversalProcPtr NPP_NewStreamUPP; -enum { - uppNPP_NewStreamProcInfo = kThinkCStackBased - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP))) - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPMIMEType))) - | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(NPStream *))) - | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(NPBool))) - | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(uint16 *))) - | RESULT_SIZE(SIZE_CODE(sizeof(NPError))) -}; -#define NewNPP_NewStreamProc(FUNC) \ - (NPP_NewStreamUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_NewStreamProcInfo, GetCurrentArchitecture()) -#define CallNPP_NewStreamProc(FUNC, ARG1, ARG2, ARG3, ARG4, ARG5) \ - (NPError)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_NewStreamProcInfo, (ARG1), (ARG2), (ARG3), (ARG4), (ARG5)) -#else - -typedef NPError (*NPP_NewStreamUPP)(NPP instance, NPMIMEType type, NPStream* stream, NPBool seekable, uint16* stype); -#define NewNPP_NewStreamProc(FUNC) \ - ((NPP_NewStreamUPP) (FUNC)) -#define CallNPP_NewStreamProc(FUNC, ARG1, ARG2, ARG3, ARG4, ARG5) \ - (*(FUNC))((ARG1), (ARG2), (ARG3), (ARG4), (ARG5)) -#endif - - -/* NPP_DestroyStream */ - -#if GENERATINGCFM - -typedef UniversalProcPtr NPP_DestroyStreamUPP; -enum { - uppNPP_DestroyStreamProcInfo = kThinkCStackBased - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP))) - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPStream *))) - | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(NPError))) - | RESULT_SIZE(SIZE_CODE(sizeof(NPError))) -}; -#define NewNPP_DestroyStreamProc(FUNC) \ - (NPP_DestroyStreamUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_DestroyStreamProcInfo, GetCurrentArchitecture()) -#define CallNPP_DestroyStreamProc(FUNC, NPParg, NPStreamPtr, NPErrorArg) \ - (NPError)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_DestroyStreamProcInfo, (NPParg), (NPStreamPtr), (NPErrorArg)) - -#else - -typedef NPError (*NPP_DestroyStreamUPP)(NPP instance, NPStream* stream, NPError reason); -#define NewNPP_DestroyStreamProc(FUNC) \ - ((NPP_DestroyStreamUPP) (FUNC)) -#define CallNPP_DestroyStreamProc(FUNC, NPParg, NPStreamPtr, NPErrorArg) \ - (*(FUNC))((NPParg), (NPStreamPtr), (NPErrorArg)) - -#endif - - -/* NPP_WriteReady */ - -#if GENERATINGCFM - -typedef UniversalProcPtr NPP_WriteReadyUPP; -enum { - uppNPP_WriteReadyProcInfo = kThinkCStackBased - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP))) - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPStream *))) - | RESULT_SIZE(SIZE_CODE(sizeof(int32))) -}; -#define NewNPP_WriteReadyProc(FUNC) \ - (NPP_WriteReadyUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_WriteReadyProcInfo, GetCurrentArchitecture()) -#define CallNPP_WriteReadyProc(FUNC, NPParg, NPStreamPtr) \ - (int32)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_WriteReadyProcInfo, (NPParg), (NPStreamPtr)) - -#else - -typedef int32 (*NPP_WriteReadyUPP)(NPP instance, NPStream* stream); -#define NewNPP_WriteReadyProc(FUNC) \ - ((NPP_WriteReadyUPP) (FUNC)) -#define CallNPP_WriteReadyProc(FUNC, NPParg, NPStreamPtr) \ - (*(FUNC))((NPParg), (NPStreamPtr)) - -#endif - - -/* NPP_Write */ - -#if GENERATINGCFM - -typedef UniversalProcPtr NPP_WriteUPP; -enum { - uppNPP_WriteProcInfo = kThinkCStackBased - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP))) - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPStream *))) - | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(int32))) - | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(int32))) - | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(void*))) - | RESULT_SIZE(SIZE_CODE(sizeof(int32))) -}; -#define NewNPP_WriteProc(FUNC) \ - (NPP_WriteUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_WriteProcInfo, GetCurrentArchitecture()) -#define CallNPP_WriteProc(FUNC, NPParg, NPStreamPtr, offsetArg, lenArg, bufferPtr) \ - (int32)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_WriteProcInfo, (NPParg), (NPStreamPtr), (offsetArg), (lenArg), (bufferPtr)) - -#else - -typedef int32 (*NPP_WriteUPP)(NPP instance, NPStream* stream, int32 offset, int32 len, void* buffer); -#define NewNPP_WriteProc(FUNC) \ - ((NPP_WriteUPP) (FUNC)) -#define CallNPP_WriteProc(FUNC, NPParg, NPStreamPtr, offsetArg, lenArg, bufferPtr) \ - (*(FUNC))((NPParg), (NPStreamPtr), (offsetArg), (lenArg), (bufferPtr)) - -#endif - - -/* NPP_StreamAsFile */ - -#if GENERATINGCFM - -typedef UniversalProcPtr NPP_StreamAsFileUPP; -enum { - uppNPP_StreamAsFileProcInfo = kThinkCStackBased - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP))) - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPStream *))) - | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(const char *))) - | RESULT_SIZE(SIZE_CODE(0)) -}; -#define NewNPP_StreamAsFileProc(FUNC) \ - (NPP_StreamAsFileUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_StreamAsFileProcInfo, GetCurrentArchitecture()) -#define CallNPP_StreamAsFileProc(FUNC, ARG1, ARG2, ARG3) \ - (void)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_StreamAsFileProcInfo, (ARG1), (ARG2), (ARG3)) - -#else - -typedef void (*NPP_StreamAsFileUPP)(NPP instance, NPStream* stream, const char* fname); -#define NewNPP_StreamAsFileProc(FUNC) \ - ((NPP_StreamAsFileUPP) (FUNC)) -#define CallNPP_StreamAsFileProc(FUNC, ARG1, ARG2, ARG3) \ - (*(FUNC))((ARG1), (ARG2), (ARG3)) -#endif - - -/* NPP_Print */ - -#if GENERATINGCFM - -typedef UniversalProcPtr NPP_PrintUPP; -enum { - uppNPP_PrintProcInfo = kThinkCStackBased - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP))) - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPPrint *))) - | RESULT_SIZE(SIZE_CODE(0)) -}; -#define NewNPP_PrintProc(FUNC) \ - (NPP_PrintUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_PrintProcInfo, GetCurrentArchitecture()) -#define CallNPP_PrintProc(FUNC, NPParg, voidPtr) \ - (void)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_PrintProcInfo, (NPParg), (voidPtr)) - -#else - -typedef void (*NPP_PrintUPP)(NPP instance, NPPrint* platformPrint); -#define NewNPP_PrintProc(FUNC) \ - ((NPP_PrintUPP) (FUNC)) -#define CallNPP_PrintProc(FUNC, NPParg, NPPrintArg) \ - (*(FUNC))((NPParg), (NPPrintArg)) - -#endif - - -/* NPP_HandleEvent */ - -#if GENERATINGCFM - -typedef UniversalProcPtr NPP_HandleEventUPP; -enum { - uppNPP_HandleEventProcInfo = kThinkCStackBased - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP))) - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(void *))) - | RESULT_SIZE(SIZE_CODE(sizeof(int16))) -}; -#define NewNPP_HandleEventProc(FUNC) \ - (NPP_HandleEventUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_HandleEventProcInfo, GetCurrentArchitecture()) -#define CallNPP_HandleEventProc(FUNC, NPParg, voidPtr) \ - (int16)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPP_HandleEventProcInfo, (NPParg), (voidPtr)) - -#else - -typedef int16 (*NPP_HandleEventUPP)(NPP instance, void* event); -#define NewNPP_HandleEventProc(FUNC) \ - ((NPP_HandleEventUPP) (FUNC)) -#define CallNPP_HandleEventProc(FUNC, NPParg, voidPtr) \ - (*(FUNC))((NPParg), (voidPtr)) - -#endif - - - - -/* - * Netscape entry points - */ - - -/* NPN_GetUrl */ - -#if GENERATINGCFM - -typedef UniversalProcPtr NPN_GetURLUPP; -enum { - uppNPN_GetURLProcInfo = kThinkCStackBased - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP))) - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(const char*))) - | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(const char*))) - | RESULT_SIZE(SIZE_CODE(sizeof(NPError))) -}; -#define NewNPN_GetURLProc(FUNC) \ - (NPN_GetURLUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_GetURLProcInfo, GetCurrentArchitecture()) -#define CallNPN_GetURLProc(FUNC, ARG1, ARG2, ARG3) \ - (NPError)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_GetURLProcInfo, (ARG1), (ARG2), (ARG3)) -#else - -typedef NPError (*NPN_GetURLUPP)(NPP instance, const char* url, const char* window); -#define NewNPN_GetURLProc(FUNC) \ - ((NPN_GetURLUPP) (FUNC)) -#define CallNPN_GetURLProc(FUNC, ARG1, ARG2, ARG3) \ - (*(FUNC))((ARG1), (ARG2), (ARG3)) -#endif - - -/* NPN_PostUrl */ - -#if GENERATINGCFM - -typedef UniversalProcPtr NPN_PostURLUPP; -enum { - uppNPN_PostURLProcInfo = kThinkCStackBased - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP))) - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(const char*))) - | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(const char*))) - | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(uint32))) - | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(const char*))) - | STACK_ROUTINE_PARAMETER(6, SIZE_CODE(sizeof(NPBool))) - | RESULT_SIZE(SIZE_CODE(sizeof(NPError))) -}; -#define NewNPN_PostURLProc(FUNC) \ - (NPN_PostURLUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_PostURLProcInfo, GetCurrentArchitecture()) -#define CallNPN_PostURLProc(FUNC, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6) \ - (NPError)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_PostURLProcInfo, (ARG1), (ARG2), (ARG3), (ARG4), (ARG5), (ARG6)) -#else - -typedef NPError (*NPN_PostURLUPP)(NPP instance, const char* url, const char* window, uint32 len, const char* buf, NPBool file); -#define NewNPN_PostURLProc(FUNC) \ - ((NPN_PostURLUPP) (FUNC)) -#define CallNPN_PostURLProc(FUNC, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6) \ - (*(FUNC))((ARG1), (ARG2), (ARG3), (ARG4), (ARG5), (ARG6)) -#endif - - -/* NPN_RequestRead */ - -#if GENERATINGCFM - -typedef UniversalProcPtr NPN_RequestReadUPP; -enum { - uppNPN_RequestReadProcInfo = kThinkCStackBased - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPStream *))) - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPByteRange *))) - | RESULT_SIZE(SIZE_CODE(sizeof(NPError))) -}; -#define NewNPN_RequestReadProc(FUNC) \ - (NPN_RequestReadUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_RequestReadProcInfo, GetCurrentArchitecture()) -#define CallNPN_RequestReadProc(FUNC, stream, range) \ - (NPError)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_RequestReadProcInfo, (stream), (range)) - -#else - -typedef NPError (*NPN_RequestReadUPP)(NPStream* stream, NPByteRange* rangeList); -#define NewNPN_RequestReadProc(FUNC) \ - ((NPN_RequestReadUPP) (FUNC)) -#define CallNPN_RequestReadProc(FUNC, stream, range) \ - (*(FUNC))((stream), (range)) - -#endif - - -/* NPN_NewStream */ - -#if GENERATINGCFM - -typedef UniversalProcPtr NPN_NewStreamUPP; -enum { - uppNPN_NewStreamProcInfo = kThinkCStackBased - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP ))) - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPMIMEType))) - | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(NPStream *))) - | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(NPBool))) - | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(uint16*))) - | RESULT_SIZE(SIZE_CODE(sizeof(NPError))) -}; -#define NewNPN_NewStreamProc(FUNC) \ - (NPN_NewStreamUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_NewStreamProcInfo, GetCurrentArchitecture()) -#define CallNPN_NewStreamProc(FUNC, npp, type, stream) \ - (NPError)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_NewStreamProcInfo, (npp), (type), (stream)) - -#else - -typedef NPError (*NPN_NewStreamUPP)(NPP instance, NPMIMEType type, NPStream* stream); -#define NewNPN_NewStreamProc(FUNC) \ - ((NPN_NewStreamUPP) (FUNC)) -#define CallNPN_NewStreamProc(FUNC, npp, type, stream) \ - (*(FUNC))((npp), (type), (stream)) - -#endif - - -/* NPN_Write */ - -#if GENERATINGCFM - -typedef UniversalProcPtr NPN_WriteUPP; -enum { - uppNPN_WriteProcInfo = kThinkCStackBased - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP ))) - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPStream *))) - | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(int32))) - | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(void*))) - | RESULT_SIZE(SIZE_CODE(sizeof(int32))) -}; -#define NewNPN_WriteProc(FUNC) \ - (NPN_WriteUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_WriteProcInfo, GetCurrentArchitecture()) -#define CallNPN_WriteProc(FUNC, npp, stream, len, buffer) \ - (int32)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_WriteProcInfo, (npp), (stream), (len), (buffer)) - -#else - -typedef int32 (*NPN_WriteUPP)(NPP instance, NPStream* stream, int32 len, void* buffer); -#define NewNPN_WriteProc(FUNC) \ - ((NPN_WriteUPP) (FUNC)) -#define CallNPN_WriteProc(FUNC, npp, stream, len, buffer) \ - (*(FUNC))((npp), (stream), (len), (buffer)) - -#endif - - -/* NPN_DestroyStream */ - -#if GENERATINGCFM - -typedef UniversalProcPtr NPN_DestroyStreamUPP; -enum { - uppNPN_DestroyStreamProcInfo = kThinkCStackBased - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP ))) - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPStream *))) - | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(NPError))) - | RESULT_SIZE(SIZE_CODE(sizeof(NPError))) -}; -#define NewNPN_DestroyStreamProc(FUNC) \ - (NPN_DestroyStreamUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_DestroyStreamProcInfo, GetCurrentArchitecture()) -#define CallNPN_DestroyStreamProc(FUNC, npp, stream, err) \ - (NPError)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_DestroyStreamProcInfo, (npp), (stream), (err)) - -#else - -typedef NPError (*NPN_DestroyStreamUPP)(NPP instance, NPStream* stream, NPError reason); -#define NewNPN_DestroyStreamProc(FUNC) \ - ((NPN_DestroyStreamUPP) (FUNC)) -#define CallNPN_DestroyStreamProc(FUNC, npp, stream, err) \ - (*(FUNC))((npp), (stream), (err)) - -#endif - - -/* NPN_Status */ - -#if GENERATINGCFM - -typedef UniversalProcPtr NPN_StatusUPP; -enum { - uppNPN_StatusProcInfo = kThinkCStackBased - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP))) - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(char *))) -}; - -#define NewNPN_StatusProc(FUNC) \ - (NPN_StatusUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_StatusProcInfo, GetCurrentArchitecture()) -#define CallNPN_StatusProc(FUNC, npp, msg) \ - (void)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_StatusProcInfo, (npp), (msg)) - -#else - -typedef void (*NPN_StatusUPP)(NPP instance, const char* message); -#define NewNPN_StatusProc(FUNC) \ - ((NPN_StatusUPP) (FUNC)) -#define CallNPN_StatusProc(FUNC, npp, msg) \ - (*(FUNC))((npp), (msg)) - -#endif - - -/* NPN_UserAgent */ -#if GENERATINGCFM - -typedef UniversalProcPtr NPN_UserAgentUPP; -enum { - uppNPN_UserAgentProcInfo = kThinkCStackBased - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPP))) - | RESULT_SIZE(SIZE_CODE(sizeof(const char *))) -}; - -#define NewNPN_UserAgentProc(FUNC) \ - (NPN_UserAgentUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_UserAgentProcInfo, GetCurrentArchitecture()) -#define CallNPN_UserAgentProc(FUNC, ARG1) \ - (const char*)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_UserAgentProcInfo, (ARG1)) - -#else - -typedef const char* (*NPN_UserAgentUPP)(NPP instance); -#define NewNPN_UserAgentProc(FUNC) \ - ((NPN_UserAgentUPP) (FUNC)) -#define CallNPN_UserAgentProc(FUNC, ARG1) \ - (*(FUNC))((ARG1)) - -#endif - - -/* NPN_MemAlloc */ -#if GENERATINGCFM - -typedef UniversalProcPtr NPN_MemAllocUPP; -enum { - uppNPN_MemAllocProcInfo = kThinkCStackBased - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(uint32))) - | RESULT_SIZE(SIZE_CODE(sizeof(void *))) -}; - -#define NewNPN_MemAllocProc(FUNC) \ - (NPN_MemAllocUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_MemAllocProcInfo, GetCurrentArchitecture()) -#define CallNPN_MemAllocProc(FUNC, ARG1) \ - (void*)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_MemAllocProcInfo, (ARG1)) - -#else - -typedef void* (*NPN_MemAllocUPP)(uint32 size); -#define NewNPN_MemAllocProc(FUNC) \ - ((NPN_MemAllocUPP) (FUNC)) -#define CallNPN_MemAllocProc(FUNC, ARG1) \ - (*(FUNC))((ARG1)) - -#endif - - -/* NPN__MemFree */ - -#if GENERATINGCFM - -typedef UniversalProcPtr NPN_MemFreeUPP; -enum { - uppNPN_MemFreeProcInfo = kThinkCStackBased - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(void *))) -}; - -#define NewNPN_MemFreeProc(FUNC) \ - (NPN_MemFreeUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_MemFreeProcInfo, GetCurrentArchitecture()) -#define CallNPN_MemFreeProc(FUNC, ARG1) \ - (void)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_MemFreeProcInfo, (ARG1)) - -#else - -typedef void (*NPN_MemFreeUPP)(void* ptr); -#define NewNPN_MemFreeProc(FUNC) \ - ((NPN_MemFreeUPP) (FUNC)) -#define CallNPN_MemFreeProc(FUNC, ARG1) \ - (*(FUNC))((ARG1)) - -#endif - - -/* NPN_MemFlush */ - -#if GENERATINGCFM - -typedef UniversalProcPtr NPN_MemFlushUPP; -enum { - uppNPN_MemFlushProcInfo = kThinkCStackBased - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(uint32))) - | RESULT_SIZE(SIZE_CODE(sizeof(uint32))) -}; - -#define NewNPN_MemFlushProc(FUNC) \ - (NPN_MemFlushUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_MemFlushProcInfo, GetCurrentArchitecture()) -#define CallNPN_MemFlushProc(FUNC, ARG1) \ - (uint32)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_MemFlushProcInfo, (ARG1)) - -#else - -typedef uint32 (*NPN_MemFlushUPP)(uint32 size); -#define NewNPN_MemFlushProc(FUNC) \ - ((NPN_MemFlushUPP) (FUNC)) -#define CallNPN_MemFlushProc(FUNC, ARG1) \ - (*(FUNC))((ARG1)) - -#endif - - - -/* NPN_ReloadPlugins */ - -#if GENERATINGCFM - -typedef UniversalProcPtr NPN_ReloadPluginsUPP; -enum { - uppNPN_ReloadPluginsProcInfo = kThinkCStackBased - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPBool))) - | RESULT_SIZE(SIZE_CODE(0)) -}; - -#define NewNPN_ReloadPluginsProc(FUNC) \ - (NPN_ReloadPluginsUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPN_ReloadPluginsProcInfo, GetCurrentArchitecture()) -#define CallNPN_ReloadPluginsProc(FUNC, ARG1) \ - (void)CallUniversalProc((UniversalProcPtr)(FUNC), uppNPN_ReloadPluginsProcInfo, (ARG1)) - -#else - -typedef void (*NPN_ReloadPluginsUPP)(NPBool reloadPages); -#define NewNPN_ReloadPluginsProc(FUNC) \ - ((NPN_ReloadPluginsUPP) (FUNC)) -#define CallNPN_ReloadPluginsProc(FUNC, ARG1) \ - (*(FUNC))((ARG1)) - -#endif - - - - -/****************************************************************************************** - * The actual plugin function table definitions - *******************************************************************************************/ - -typedef struct _NPPluginFuncs { - uint16 size; - uint16 version; - NPP_NewUPP newp; - NPP_DestroyUPP destroy; - NPP_SetWindowUPP setwindow; - NPP_NewStreamUPP newstream; - NPP_DestroyStreamUPP destroystream; - NPP_StreamAsFileUPP asfile; - NPP_WriteReadyUPP writeready; - NPP_WriteUPP write; - NPP_PrintUPP print; - NPP_HandleEventUPP event; -} NPPluginFuncs; - -typedef struct _NPNetscapeFuncs { - uint16 size; - uint16 version; - NPN_GetURLUPP geturl; - NPN_PostURLUPP posturl; - NPN_RequestReadUPP requestread; - NPN_NewStreamUPP newstream; - NPN_WriteUPP write; - NPN_DestroyStreamUPP destroystream; - NPN_StatusUPP status; - NPN_UserAgentUPP uagent; - NPN_MemAllocUPP memalloc; - NPN_MemFreeUPP memfree; - NPN_MemFlushUPP memflush; - NPN_ReloadPluginsUPP reloadplugins; -} NPNetscapeFuncs; - - - -#ifdef XP_MAC -/****************************************************************************************** - * Mac platform-specific plugin glue stuff - *******************************************************************************************/ - -/* - * Main entry point of the plugin. - * This routine will be called when the plugin is loaded. The function - * tables are passed in and the plugin fills in the NPPluginFuncs table - * and NPPShutdownUPP for Netscape's use. - */ - -#if GENERATINGCFM - -typedef UniversalProcPtr NPP_MainEntryUPP; -enum { - uppNPP_MainEntryProcInfo = kThinkCStackBased - | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NPNetscapeFuncs*))) - | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(NPPluginFuncs*))) - | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(NPP_ShutdownUPP*))) - | RESULT_SIZE(SIZE_CODE(sizeof(NPError))) -}; -#define NewNPP_MainEntryProc(FUNC) \ - (NPP_MainEntryUPP) NewRoutineDescriptor((ProcPtr)(FUNC), uppNPP_MainEntryProcInfo, GetCurrentArchitecture()) -#define CallNPP_MainEntryProc(FUNC, netscapeFunc, pluginFunc, shutdownUPP) \ - CallUniversalProc((UniversalProcPtr)(FUNC), (ProcInfoType)uppNPP_MainEntryProcInfo, (netscapeFunc), (pluginFunc), (shutdownUPP)) - -#else - -typedef NPError (*NPP_MainEntryUPP)(NPNetscapeFuncs*, NPPluginFuncs*, NPP_ShutdownUPP*); -#define NewNPP_MainEntryProc(FUNC) \ - ((NPP_MainEntryUPP) (FUNC)) -#define CallNPP_MainEntryProc(FUNC, netscapeFunc, pluginFunc, shutdownUPP) \ - (*(FUNC))((netscapeFunc), (pluginFunc), (shutdownUPP)) - -#endif -#endif /* MAC */ - - -#ifdef _WINDOWS - -#ifdef __cplusplus -extern "C" { -#endif - -/* plugin meta member functions */ - -NPError WINAPI NP_GetEntryPoints(NPPluginFuncs* pFuncs); - -NPError WINAPI NP_Initialize(NPNetscapeFuncs* pFuncs); - -NPError WINAPI NP_Shutdown(); - -#ifdef __cplusplus -} -#endif - -#endif /* _WINDOWS */ - - -#endif /* _NPUPP_H_ */ - diff --git a/utils/nplugin/src/npwin.cpp b/utils/nplugin/src/npwin.cpp deleted file mode 100644 index f97ef498a7..0000000000 --- a/utils/nplugin/src/npwin.cpp +++ /dev/null @@ -1,186 +0,0 @@ -/* npwin.cpp */ -#include "windows.h" - -#include "npapi.h" -#include "npupp.h" - -#ifdef __WIN32__ - #define NP_EXPORT -#else - #define NP_EXPORT _export -#endif - -static NPNetscapeFuncs* g_pNavigatorFuncs = NULL; - - -/* PLUGIN DLL entry points */ -/* These are the Windows specific DLL entry points, not the "normal" plugin - entry points. The "normal" ones are in NPSHELL.CPP -*/ - -/* fills in the func table used by Navigator to call entry points in - plugin DLL. Note that these entry points ensure that DS is loaded - by using the NP_LOADDS macro, when compiling for Win16 -*/ -NPError WINAPI NP_EXPORT NP_GetEntryPoints(NPPluginFuncs* pFuncs) -{ - /* trap a NULL ptr */ - if(pFuncs == NULL) - return NPERR_INVALID_FUNCTABLE_ERROR; - - /* if the plugin's function table is smaller than the plugin expects, - then they are incompatible, and should return an error */ - if(pFuncs->size < sizeof NPPluginFuncs) - return NPERR_INVALID_FUNCTABLE_ERROR; - - pFuncs->version = (NP_VERSION_MAJOR << 8) | NP_VERSION_MINOR; - pFuncs->newp = NPP_New; - pFuncs->destroy = NPP_Destroy; - pFuncs->setwindow = NPP_SetWindow; - pFuncs->newstream = NPP_NewStream; - pFuncs->destroystream = NPP_DestroyStream; - pFuncs->asfile = NPP_StreamAsFile; - pFuncs->writeready = NPP_WriteReady; - pFuncs->write = NPP_Write; - pFuncs->print = NPP_Print; - pFuncs->event = NULL; /* reserved */ - - return NPERR_NO_ERROR; -} - -/* called immediately after the plugin DLL is loaded -*/ -NPError WINAPI NP_EXPORT NP_Initialize(NPNetscapeFuncs* pFuncs) -{ - /* trap a NULL ptr */ - if(pFuncs == NULL) - return NPERR_INVALID_FUNCTABLE_ERROR; - - g_pNavigatorFuncs = pFuncs; /* save it for future reference */ - - /* if the plugin's major ver level is lower than the Navigator's, - then they are incompatible, and should return an error */ - if(HIBYTE(pFuncs->version) > NP_VERSION_MAJOR) - return NPERR_INCOMPATIBLE_VERSION_ERROR; - - /* if the Navigator's function table is smaller than the plugin expects, - then they are incompatible, and should return an error */ - if(pFuncs->size < sizeof NPNetscapeFuncs) - return NPERR_INVALID_FUNCTABLE_ERROR; - - return NPP_Initialize(); -} - -/* called immediately before the plugin DLL is unloaded -*/ -NPError WINAPI NP_EXPORT NP_Shutdown() -{ - NPP_Shutdown(); - - g_pNavigatorFuncs = NULL; - - return NPERR_NO_ERROR; -} - - -/* NAVIGATOR Entry points */ - -/* These entry points expect to be called from within the plugin. The - noteworthy assumption is that DS has already been set to point to the - plugin's DLL data segment. Don't call these functions from outside - the plugin without ensuring DS is set to the DLLs data segment first, - typically using the NP_LOADDS macro -*/ - -/* returns the major/minor version numbers of the Plugin API for the plugin - and the Navigator -*/ -void NPN_Version(int* plugin_major, int* plugin_minor, int* netscape_major, int* netscape_minor) -{ - *plugin_major = NP_VERSION_MAJOR; - *plugin_minor = NP_VERSION_MINOR; - *netscape_major = HIBYTE(g_pNavigatorFuncs->version); - *netscape_minor = LOBYTE(g_pNavigatorFuncs->version); -} - -/* causes the specified URL to be fetched and streamed in -*/ -NPError NPN_GetURL(NPP instance, const char *url, const char *window) -{ - return g_pNavigatorFuncs->geturl(instance, url, window); -} - -NPError NPN_PostURL(NPP instance, const char* url, const char* window, uint32 len, const char* buf, NPBool file) -{ - return g_pNavigatorFuncs->posturl(instance, url, window, len, buf, file); -} - -/* Requests that a number of bytes be provided on a stream. Typically - this would be used if a stream was in "pull" mode. An optional - position can be provided for streams which are seekable. -*/ -NPError NPN_RequestRead(NPStream* stream, NPByteRange* rangeList) -{ - return g_pNavigatorFuncs->requestread(stream, rangeList); -} - -/* Creates a new stream of data from the plug-in to be interpreted - by Netscape in the current window. -*/ -NPError NPN_NewStream(NPP instance, NPMIMEType type, NPStream *stream) -{ - return g_pNavigatorFuncs->newstream(instance, type, stream); -} - -/* Provides len bytes of data. -*/ -int32 NPN_Write(NPP instance, NPStream *stream, - int32 len, void *buffer) -{ - return g_pNavigatorFuncs->write(instance, stream, len, buffer); -} - -/* Closes a stream object. -reason indicates why the stream was closed. -*/ -NPError NPN_DestroyStream(NPP instance, NPStream* stream, NPError reason) -{ - return g_pNavigatorFuncs->destroystream(instance, stream, reason); -} - -/* Provides a text status message in the Netscape client user interface -*/ -void NPN_Status(NPP instance, const char *message) -{ - g_pNavigatorFuncs->status(instance, message); -} - -/* returns the user agent string of Navigator, which contains version info -*/ -const char* NPN_UserAgent(NPP instance) -{ - return g_pNavigatorFuncs->uagent(instance); -} - -/* allocates memory from the Navigator's memory space. Necessary so that - saved instance data may be freed by Navigator when exiting. -*/ -void* NPN_MemAlloc(uint32 size) -{ - return g_pNavigatorFuncs->memalloc(size); -} - -/* reciprocal of MemAlloc() above -*/ -void NPN_MemFree(void* ptr) -{ - g_pNavigatorFuncs->memfree(ptr); -} - -/* private function to Netscape. do not use! -*/ -void NPN_ReloadPlugins(NPBool reloadPages) -{ - g_pNavigatorFuncs->reloadplugins(reloadPages); -} - diff --git a/utils/ogl/Makefile b/utils/ogl/Makefile deleted file mode 100644 index 3f7a4dce0d..0000000000 --- a/utils/ogl/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../../setup/general/makedirs diff --git a/utils/ogl/distrib/ogl.rsp b/utils/ogl/distrib/ogl.rsp deleted file mode 100644 index 27db43a242..0000000000 --- a/utils/ogl/distrib/ogl.rsp +++ /dev/null @@ -1,43 +0,0 @@ -utils/ogl/src/*.cpp -utils/ogl/src/*.h -utils/ogl/src/*.rc -utils/ogl/src/*.def -utils/ogl/src/*.xbm -utils/ogl/src/*.xpm -utils/ogl/src/makefile* -utils/ogl/src/*.txt -utils/ogl/src/*.ico -utils/ogl/src/*.bmp - -utils/ogl/samples/ogledit/*.cpp -utils/ogl/samples/ogledit/*.h -utils/ogl/samples/ogledit/*.rc -utils/ogl/samples/ogledit/*.def -utils/ogl/samples/ogledit/*.xbm -utils/ogl/samples/ogledit/makefile* -utils/ogl/samples/ogledit/*.txt -utils/ogl/samples/ogledit/*.ico -utils/ogl/samples/ogledit/*.bmp -utils/ogl/samples/ogledit/*.xpm -utils/ogl/samples/ogledit/bitmaps/*.bmp -utils/ogl/samples/ogledit/bitmaps/*.gif -utils/ogl/samples/ogledit/bitmaps/*.xbm -utils/ogl/samples/ogledit/bitmaps/*.xpm - -utils/ogl/distrib/*.rsp -utils/ogl/distrib/*.bat - -utils/ogl/docs/*.txt -utils/ogl/docs/*.tex -utils/ogl/docs/*.ini -utils/ogl/docs/*.hpj -utils/ogl/docs/*.ps -utils/ogl/docs/*.eps -utils/ogl/docs/*.bmp -utils/ogl/docs/*.gif - -docs/html/ogl/*.* -docs/winhelp/ogl.hlp -docs/winhelp/ogl.cnt -docs/pdf/ogl.pdf - diff --git a/utils/ogl/distrib/tarogl.bat b/utils/ogl/distrib/tarogl.bat deleted file mode 100755 index 68202249c0..0000000000 --- a/utils/ogl/distrib/tarogl.bat +++ /dev/null @@ -1,48 +0,0 @@ -@echo off -rem Tar up an external distribution of OGL - -if "%1" == "" goto usage -if "%2" == "" goto usage -echo About to archive an external OGL distribution: -echo From %1 -echo To %2\ogl.tgz -echo CTRL-C if this is not correct. -inkey /W4 `Press any key to continue...` %%input - -erase %2\ogl.tgz -cd %1 - -rem First, expand the wildcards in the ogl.rsp file - -rem Create empty list file -erase %1\distrib\ogl.lis -c:\bin\touch %1\distrib\ogl.lis - -rem Create a .rsp file with backslashes instead -rem of forward slashes -rem No need if using ls2 (from UNIX95 distribution) -rem sed -e "s/\//\\/g" %1\distrib\ogl.rsp > %1\distrib\ogl.rs2 - -set len=%@LINES[%1\distrib\ogl.rsp] -rem set len=%@DEC[%len] -do i = 0 to %len by 1 - set line=%@LINE[%1\distrib\ogl.rsp,%i] - if NOT "%line" == "" ls2 -1 %line >> %1\distrib\ogl.lis -enddo - -tar -c -T %1\distrib\ogl.lis -move archive.tar ogl.tar -gzip ogl.tar -move ogl.taz %2\ogl.tgz - -echo OGL archived. -goto end - -:usage -echo DOS OGL distribution. -echo Usage: tarogl source destination -echo e.g. tarogl c:\wx\utils\ogl c:\wx\utils\ogl\deliver - -:end - - diff --git a/utils/ogl/distrib/zipogl.bat b/utils/ogl/distrib/zipogl.bat deleted file mode 100755 index 51ee8b37fc..0000000000 --- a/utils/ogl/distrib/zipogl.bat +++ /dev/null @@ -1,30 +0,0 @@ -@echo off -rem Zip up an external distribution of OGL -set src=d:\wx2\wxWindows -set dest=%src\utils\ogl\deliver - -if "%src" == "" goto usage -if "%dest" == "" goto usage -echo About to archive an external OGL distribution: -echo From %src -echo To %dest\ogl3.zip -echo CTRL-C if this is not correct. -inkey /W4 `Press any key to continue...` %%input - -erase %dest\ogl3.zip -cd %src -zip32 -@ %dest\ogl3.zip < %src\utils\ogl\distrib\ogl.rsp - -cd %dest - -echo OGL archived. -goto end - -:usage -echo DOS OGL distribution. -echo Usage: zipogl source destination -echo e.g. zipogl d:\wx2\wxWindows d:\wx2\wxWindows\utils\ogl\deliver - -:end - - diff --git a/utils/ogl/docs/back.gif b/utils/ogl/docs/back.gif deleted file mode 100644 index 8a61076d3ba74bdedc1d24f60c3d1f5a361a6cee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/utils/ogl/docs/books.bmp b/utils/ogl/docs/books.bmp deleted file mode 100644 index cf1e148734c807052ec6359ad2eb1a3e8d43d43d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/utils/ogl/docs/bugs.tex b/utils/ogl/docs/bugs.tex deleted file mode 100644 index d66f64e613..0000000000 --- a/utils/ogl/docs/bugs.tex +++ /dev/null @@ -1,11 +0,0 @@ -\chapter{Bugs}\label{bugs}% -\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}% -\setfooter{\thepage}{}{}{}{}{\thepage} - -These are the known bugs. - -\begin{itemize}\itemsep=0pt -\item In the OGLEdit sample, .dia files are output double-spaced -due to an unidentified bug in the way a stream is converted to a file. -\end{itemize} - diff --git a/utils/ogl/docs/bullet.bmp b/utils/ogl/docs/bullet.bmp deleted file mode 100644 index aad8fc793edd54ffb5910e67b2470659c95448b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 138 zcmZumxe>rH2vhFtK1GJ`9PYi2Yw9con_&SdBlI1b>qTKR2Gu`ZXgNITWj7;KP=JJL V1)UXU1`*-lNw`O&c<~DR!2u5s7-j$f diff --git a/utils/ogl/docs/changes.tex b/utils/ogl/docs/changes.tex deleted file mode 100644 index 5590ce3fd9..0000000000 --- a/utils/ogl/docs/changes.tex +++ /dev/null @@ -1,19 +0,0 @@ -\chapter{Change log} -\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}% -\setfooter{\thepage}{}{}{}{}{\thepage} - -Version 3.0, September 8th 1998 - -\begin{itemize}\itemsep=0pt -\item Version for wxWindows 2.0. -\item Various enhancements especially to wxDrawnShape -(multiple metafiles, for different orientations). -\item More ability to override functions e.g. OnSizeDragLeft, so events can be -intercepted for Do/Undo. -\end{itemize} - -Version 2.0, June 1st 1996 - -\begin{itemize}\itemsep=0pt -\item First publicly released version. -\end{itemize} diff --git a/utils/ogl/docs/classes.tex b/utils/ogl/docs/classes.tex deleted file mode 100644 index 768d28a0a2..0000000000 --- a/utils/ogl/docs/classes.tex +++ /dev/null @@ -1,2861 +0,0 @@ -\chapter{Class reference}\label{classref} -\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}% -\setfooter{\thepage}{}{}{}{}{\thepage} - -These are the main \ogl\ classes. - -\section{\class{wxOGLConstraint}}\label{wxoglconstraint} - -\overview{wxCompositeShape overview}{compositeshapeoverview} - -An wxOGLConstraint object helps specify how child shapes are laid out with respect -to siblings and parents. - -\wxheading{Derived from} - -wxObject - -\wxheading{See also} - -\helpref{wxCompositeShape}{wxcompositeshape} - -\latexignore{\rtfignore{\wxheading{Members}}} - -\membersection{wxOGLConstraint::wxOGLConstraint}\label{wxoglconstraintconstr} - -\func{}{wxOGLConstraint}{\void} - -Default constructor. - -\func{}{wxOGLConstraint}{\param{int}{ type}, \param{wxShape *}{constraining}, \param{wxList\& }{constrained}} - -Constructor. - -\wxheading{Parameters} - -\docparam{constraining}{The shape which is used as the reference for positioning the {\it constrained} objects.} - -\docparam{constrained}{Contains a list of wxShapes which are to be constrained (with respect -to {\it constraining}) using {\it type}.} - -\docparam{type}{Can be one of: - -\begin{itemize}\itemsep=0pt -\item {\bf gyCONSTRAINT\_CENTRED\_VERTICALLY}: the Y co-ordinates of the centres of the -bounding boxes of the constrained objects and the constraining object -will be the same -\item {\bf gyCONSTRAINT\_CENTRED\_HORIZONTALLY}: the X co-ordinates of the centres of the -bounding boxes of the constrained objects and the constraining object -will be the same -\item {\bf gyCONSTRAINT\_CENTRED\_BOTH}: the co-ordinates of the centres of the bounding boxes -of the constrained objects and the constraining object will be the same -\item {\bf gyCONSTRAINT\_LEFT\_OF}: the X co-ordinates of the right hand vertical edges -of the bounding boxes of the constrained objects will be less than -the X co-ordinate of the left hand vertical edge of the bounding box -of the constraining object -\item {\bf gyCONSTRAINT\_RIGHT\_OF}: the X co-ordinates of the left hand vertical edges -of the bounding boxes of the constrained objects will be greater than -the X co-ordinate of the right hand vertical edge of the bounding box -of the constraining object -\item {\bf gyCONSTRAINT\_ABOVE}: the Y co-ordinates of the bottom horizontal edges of the -bounding boxes of the constrained objects will be less than the -Y co-ordinate of the top horizontal edge of the bounding box of the -constraining object -\item {\bf gyCONSTRAINT\_BELOW}: the Y co-ordinates of the top horizontal edges of the -bounding boxes of the constrained objects will be greater than -the X co-ordinate of the bottom horizontal edge of the bounding box -of the constraining object -\item {\bf gyCONSTRAINT\_ALIGNED\_TOP}: the Y co-ordinates of the top horizontal edges of the -bounding boxes of the constrained objects will be the same as the -Y co-ordinate of the top horizontal edge of the bounding box of the -constraining object -\item {\bf gyCONSTRAINT\_ALIGNED\_BOTTOM}: the Y co-ordinates of the bottom horizontal edges -of the bounding boxes of the constrained objects will be the same as -the Y co-ordinate of the bottom horizontal edge of the bounding box -of the constraining object -\item {\bf gyCONSTRAINT\_ALIGNED\_LEFT}: the X co-ordinates of the left hand vertical edges -of the bounding boxes of the constrained objects will be the same as -the X co-ordinate of the left hand vertical edge of the bounding box -of the constraining object -\item {\bf gyCONSTRAINT\_ALIGNED\_RIGHT}: the X co-ordinates of the right hand vertical edges -of the bounding boxes of the constrained objects will be the same as -the X co-ordinate of the right hand vertical edge of the bounding box -of the constraining object -\item {\bf gyCONSTRAINT\_MIDALIGNED\_TOP}: the Y co-ordinates of the centres of -the bounding boxes of the constrained objects will be the same -as the Y co-ordinate of the top horizontal edge of -the bounding box of the constraining object -\item {\bf gyCONSTRAINT\_MIDALIGNED\_BOTTOM}: the Y co-ordinates of the centres of -the bounding boxes of the constrained objects will be the same -as the Y co-ordinate of the bottom horizontal edge of -the bounding box of the constraining object -\item {\bf gyCONSTRAINT\_MIDALIGNED\_LEFT}: the X co-ordinates of the centres of -the bounding boxes of the constrained objects will be the same -as the X co-ordinate of the left hand vertical edge of -the bounding box of the constraining object -\item {\bf gyCONSTRAINT\_MIDALIGNED\_RIGHT}: the X co-ordinates of the centres of -the bounding boxes of the constrained objects will be the same as -the X co-ordinate of the right hand vertical edge of -the bounding box of the constraining object -\end{itemize} -} - -\membersection{wxOGLConstraint::\destruct{wxOGLConstraint}} - -\func{}{\destruct{wxOGLConstraint}}{\void} - -Destructor. - -\membersection{wxOGLConstraint::Equals} - -\func{bool}{Equals}{\param{double}{ x}, \param{double}{ y}} - -Returns TRUE if {\it x} and {\it y} are approximately equal (for the purposes -of evaluating the constraint). - -\membersection{wxOGLConstraint::Evaluate} - -\func{bool}{Evaluate}{\void} - -Evaluates this constraint, returning TRUE if anything changed. - -\membersection{wxOGLConstraint::SetSpacing}\label{wxoglconstraintsetspacing} - -\func{void}{SetSpacing}{\param{double}{ x}, \param{double}{ y}} - -Sets the horizontal and vertical spacing for the constraint. - -\section{\class{wxBitmapShape}}\label{wxbitmapshape} - -Draws a bitmap (non-resizable). - -\wxheading{Derived from} - -\helpref{wxRectangleShape}{wxrectangleshape} - -\latexignore{\rtfignore{\wxheading{Members}}} - -\membersection{wxBitmapShape::wxBitmapShape} - -\func{}{wxBitmapShape}{\void} - -Constructor. - -\membersection{wxBitmapShape::\destruct{wxBitmapShape}} - -\func{}{\destruct{wxBitmapShape}}{\void} - -Destructor. - -\membersection{wxBitmapShape::GetBitmap} - -\constfunc{wxBitmap\&}{GetBitmap}{\void} - -Returns a reference to the bitmap associated with this shape. - -\membersection{wxBitmapShape::GetFilename} - -\constfunc{wxString}{GetFilename}{\void} - -Returns the bitmap filename. - -\membersection{wxBitmapShape::SetBitmap} - -\func{void}{SetBitmap}{\param{const wxBitmap\&}{ bitmap}} - -Sets the bitmap associated with this shape. You can delete the bitmap -from the calling application, since reference counting will take care of -holding on to the internal bitmap data. - -\membersection{wxBitmapShape::SetFilename} - -\func{void}{SetFilename}{\param{const wxString\& }{filename}} - -Sets the bitmap filename. - -\section{\class{wxDiagram}}\label{wxdiagram} - -Encapsulates an entire diagram, with methods for reading/writing and drawing. -A diagram has an associated wxShapeCanvas. - -\wxheading{Derived from} - -wxObject - -\wxheading{See also} - -\helpref{wxShapeCanvas}{wxshapecanvas} - -\latexignore{\rtfignore{\wxheading{Members}}} - -\membersection{wxDiagram::wxDiagram} - -\func{}{wxDiagram}{\void} - -Constructor. - -\membersection{wxDiagram::\destruct{wxDiagram}} - -\func{}{\destruct{wxDiagram}}{\void} - -Destructor. - -\membersection{wxDiagram::AddShape} - -\func{void}{AddShape}{\param{wxShape*}{shape}, \param{wxShape *}{addAfter = NULL}} - -Adds a shape to the diagram. If {\it addAfter} is non-NULL, the shape will be added after this -one. - -\membersection{wxDiagram::Clear} - -\func{void}{Clear}{\param{wxDC\&}{ dc}} - -Clears the specified device context. - -\membersection{wxDiagram::DeleteAllShapes} - -\func{void}{DeletesAllShapes}{\void} - -Removes and deletes all shapes in the diagram. - -\membersection{wxDiagram::DrawOutline} - -\func{void}{DrawOutline}{\param{wxDC\&}{ dc}, \param{double}{ x1}, \param{double}{ y1}, \param{double}{ x2}, \param{double}{ y2}} - -Draws an outline rectangle on the current device context. - -\membersection{wxDiagram::FindShape}\label{wxdiagramfindshape} - -\constfunc{wxShape*}{FindShape}{\param{long}{ id}} - -Returns the shape for the given identifier. - -\membersection{wxDiagram::GetCanvas} - -\constfunc{wxShapeCanvas*}{GetCanvas}{\void} - -Returns the shape canvas associated with this diagram. - -\membersection{wxDiagram::GetCount}\label{wxdiagramgetcount} - -\constfunc{int}{GetCount}{\void} - -Returns the number of shapes in the diagram. - -\membersection{wxDiagram::GetGridSpacing} - -\constfunc{double}{GetGridSpacing}{\void} - -Returns the grid spacing. - -\membersection{wxDiagram::GetMouseTolerance} - -\func{int}{GetMouseTolerance}{\void} - -Returns the tolerance within which a mouse move is ignored. - -\membersection{wxDiagram::GetShapeList} - -\constfunc{wxList*}{GetShapeList}{\void} - -Returns a pointer to the internal shape list. - -\membersection{wxDiagram::GetQuickEditMode} - -\constfunc{bool}{GetQuickEditMode}{\void} - -Returns quick edit mode. - -\membersection{wxDiagram::GetSnapToGrid} - -\constfunc{bool}{GetSnapToGrid}{\void} - -Returns snap-to-grid mode. - -\membersection{wxDiagram::InsertShape} - -\func{void}{InsertShape}{\param{wxShape *}{shape}} - -Inserts a shape at the front of the shape list. - -\membersection{wxDiagram::LoadFile} - -\func{bool}{LoadFile}{\param{const wxString\& }{filename}} - -Loads the diagram from a file. - -\membersection{wxDiagram::OnDatabaseLoad} - -\func{void}{OnDatabaseLoad}{\param{wxExprDatabase\&}{ database}} - -Called just after the nodes and lines have been read from the wxExprDatabase. You may override this; -the default member does nothing. - -\membersection{wxDiagram::OnDatabaseSave} - -\func{void}{OnDatabaseSave}{\param{wxExprDatabase\&}{ database}} - -Called just after the nodes and lines have been written to the wxExprDatabase. You may override this; -the default member does nothing. - -\membersection{wxDiagram::OnHeaderLoad} - -\func{bool}{OnHeaderLoad}{\param{wxExprDatabase\&}{ database}, \param{wxExpr\&}{ expr}} - -Called to allow the `diagram' header object to be read. The default member reads no further information. -You may wish to override this to read version information, author name, etc. - -\membersection{wxDiagram::OnHeaderSave} - -\func{bool}{OnHeaderSave}{\param{wxExprDatabase\&}{ database}, \param{wxExpr\&}{ expr}} - -Called to allow instantiation of the `diagram' header object. The default member writes no further information. -You may wish to override this to include version information, author name, etc. - -\membersection{wxDiagram::OnShapeLoad} - -\func{bool}{OnShapeLoad}{\param{wxExprDatabase\&}{ database}, \param{wxShape\&}{ shape}, \param{wxExpr\&}{ expr}} - -Called to read the shape from the {\it expr}. You may override this, but call this function first. -The default member calls ReadAttributes for the shape. - -\membersection{wxDiagram::OnShapeSave} - -\func{bool}{OnShapeSave}{\param{wxExprDatabase\&}{ database}, \param{wxShape\&}{ shape}, \param{wxExpr\&}{ expr}} - -Called to save the shape to the {\it expr} and {\it database}. You may override this, but call this function first. -The default member calls WriteAttributes for the shape, appends the shape to the database, and of the shape -is a composite, recursively calls OnShapeSave for its children. - -\membersection{wxDiagram::ReadContainerGeometry} - -\func{void}{ReadContainerGeometry}{\param{wxExprDatabase\&}{ database}} - -Reads container geometry from a wxExprDatabase, linking up nodes which -are part of a composite. You probably won't need to redefine this. - -\membersection{wxDiagram::ReadLines} - -\func{void}{ReadLines}{\param{wxExprDatabase\&}{ database}} - -Reads lines from a wxExprDatabase. You probably won't need to redefine this. - -\membersection{wxDiagram::ReadNodes} - -\func{void}{ReadNodes}{\param{wxExprDatabase\&}{ database}} - -Reads nodes from a wxExprDatabase. You probably won't need to redefine this. - -\membersection{wxDiagram::RecentreAll} - -\func{void}{RecentreAll}{\param{wxDC\&}{ dc}} - -Make sure all text that should be centred, is centred. - -\membersection{wxDiagram::Redraw} - -\func{void}{Redraw}{\param{wxDC\&}{ dc}} - -Draws the shapes in the diagram on the specified device context. - -\membersection{wxDiagram::RemoveAllShapes} - -\func{void}{RemoveAllShapes}{\void} - -Removes all shapes from the diagram but does not delete the shapes. - -\membersection{wxDiagram::RemoveShape} - -\func{void}{RemoveShape}{\param{wxShape*}{ shape}} - -Removes the shape from the diagram (non-recursively) but does not delete it. - -\membersection{wxDiagram::SaveFile} - -\func{bool}{SaveFile}{\param{const wxString\& }{filename}} - -Saves the diagram in a file. - -\membersection{wxDiagram::SetCanvas}\label{wxdiagramsetcanvas} - -\func{void}{SetCanvas}{\param{wxShapeCanvas*}{ canvas}} - -Sets the canvas associated with this diagram. - -\membersection{wxDiagram::SetGridSpacing} - -\func{void}{SetGridSpacing}{\param{double}{ spacing}} - -Sets the grid spacing. The default is 5. - -\membersection{wxDiagram::SetMouseTolerance} - -\func{void}{SetMouseTolerance}{\param{int}{ tolerance}} - -Sets the tolerance within which a mouse move is ignored. The default is 3 pixels. - -\membersection{wxDiagram::SetQuickEditMode} - -\func{void}{SetQuickEditMode}{\param{bool}{ mode}} - -Sets quick-edit-mode on or off. In this mode, refreshes are minimized, but the -diagram may need manual refreshing occasionally. - -\membersection{wxDiagram::SetSnapToGrid} - -\func{void}{SetSnapToGrid}{\param{bool}{ snap}} - -Sets snap-to-grid mode on or off. The default is on. - -\membersection{wxDiagram::ShowAll} - -\func{void}{ShowAll}{\param{bool}{ show}} - -Calls Show for each shape in the diagram. - -\membersection{wxDiagram::Snap} - -\func{void}{Snap}{\param{double *}{x}, \param{double *}{y}} - -`Snaps' the coordinate to the nearest grid position, if snap-to-grid is on. - -\section{\class{wxDrawnShape}}\label{wxdrawnshape} - -Draws a pseduo-metafile shape, which can be loaded from a simple Windows metafile. - -wxDrawnShape allows you to specify a different shape for each of four orientations (North, West, -South and East). It also provides a set of drawing functions for programmatic drawing of a shape, -so that during construction of the shape you can draw into it as if it were a device context. - -\wxheading{Derived from} - -\helpref{wxRectangleShape}{wxrectangleshape} - -See also \helpref{wxRectangleShape}{wxrectangleshape}. - -\latexignore{\rtfignore{\wxheading{Members}}} - -\membersection{wxDrawnShape::wxDrawnShape} - -\func{}{wxDrawnShape}{\void} - -Constructor. - -\membersection{wxDrawnShape::\destruct{wxDrawnShape}} - -\func{}{\destruct{wxDrawnShape}}{\void} - -Destructor. - -\membersection{wxDrawnShape::CalculateSize} - -\func{void}{CalculateSize}{\void} - -Calculates the wxDrawnShape size from the current metafile. Call this after you have drawn -into the shape. - -\membersection{wxDrawnShape::DestroyClippingRect}\label{wxdrawnshapedestroyclippingrect} - -\func{void}{DestroyClippingRect}{\void} - -Destroys the clipping rectangle. See also \helpref{wxDrawnShape::SetClippingRect}{wxdrawnshapesetclippingrect}. - -\membersection{wxDrawnShape::DrawArc}\label{wxdrawnshapedrawarc} - -\func{void}{DrawArc}{\param{const wxPoint\&}{ centrePoint}, \param{const wxPoint\&}{ startPoint}, - \param{const wxPoint\&}{ endPoint}} - -Draws an arc (see wxWindows documentation for details). - -\membersection{wxDrawnShape::DrawAtAngle}\label{wxdrawnshapedrawatangle} - -\func{void}{DrawAtAngle}{\param{int}{ angle}} - -Sets the metafile for the given orientation, which can be one of: - -\begin{itemize}\itemsep=0pt -\item oglDRAWN\_ANGLE_0 -\item oglDRAWN\_ANGLE_90 -\item oglDRAWN\_ANGLE_180 -\item oglDRAWN\_ANGLE_270 -\end{itemize} - -See also \helpref{wxDrawnShape::GetAngle}{wxdrawnshapegetangle}. - -\membersection{wxDrawnShape::DrawEllipticArc}\label{wxdrawnshapedrawellipticarc} - -\func{void}{DrawEllipticArc}{\param{const wxRect\&}{ rect}, \param{double}{ startAngle}, \param{double}{ endAngle}} - -Draws an elliptic arc (see wxWindows documentation for details). - -\membersection{wxDrawnShape::DrawLine}\label{wxdrawnshapedrawline} - -\func{void}{DrawLine}{\param{const wxPoint\&}{ point1}, \param{const wxPoint\&}{ point2}} - -Draws a line from {\it point1} to {\it point2}. - -\membersection{wxDrawnShape::DrawLines}\label{wxdrawnshapedrawlines} - -\func{void}{DrawLines}{\param{int}{ n}, \param{wxPoint\&}{ points[]}} - -Draws {\it n} lines. - -\membersection{wxDrawnShape::DrawPoint}\label{wxdrawnshapedrawpoint} - -\func{void}{DrawPoint}{\param{const wxPoint\&}{ point}} - -Draws a point. - -\membersection{wxDrawnShape::DrawPolygon}\label{wxdrawnshapedrawpolygon} - -\func{void}{DrawPolygon}{\param{int}{ n}, \param{wxPoint\&}{ points[]}, \param{int}{ flags = 0}} - -Draws a polygon. {\it flags} can be one or more of {\bf oglMETAFLAGS\_OUTLINE} (use this polygon for the drag outline) -and {\bf oglMETAFLAGS\_ATTACHMENTS} (use the vertices of this polygon for attachments). - -\membersection{wxDrawnShape::DrawRectangle}\label{wxdrawnshapedrawrectangle} - -\func{void}{DrawRectangle}{\param{const wxRect\&}{ rect}} - -Draws a rectangle. - -\membersection{wxDrawnShape::DrawRoundedRectangle}\label{wxdrawnshapedrawroundedrectangle} - -\func{void}{DrawRoundedRectangle}{\param{const wxRect\&}{ rect}, \param{double}{ radius}} - -Draws a rounded rectangle. {\it radius} is the corner radius. If {\it radius} is negative, -it expresses the radius as a proportion of the smallest dimension of the rectangle. - -\membersection{wxDrawnShape::DrawSpline}\label{wxdrawnshapedrawspline} - -\func{void}{DrawSpline}{\param{int}{ n}, \param{wxPoint\&}{ points[]}} - -Draws a spline curve. - -\membersection{wxDrawnShape::DrawText}\label{wxdrawnshapedrawtext} - -\func{void}{DrawText}{\param{const wxString\&}{ text}, \param{const wxPoint\&}{ point}} - -Draws text at the given point. - -\membersection{wxDrawnShape::GetAngle}\label{wxdrawnshapegetangle} - -\constfunc{int}{GetAngle}{\void} - -Returns the current orientation, which can be one of: - -\begin{itemize}\itemsep=0pt -\item oglDRAWN\_ANGLE_0 -\item oglDRAWN\_ANGLE_90 -\item oglDRAWN\_ANGLE_180 -\item oglDRAWN\_ANGLE_270 -\end{itemize} - -See also \helpref{wxDrawnShape::DrawAtAngle}{wxdrawnshapedrawatangle}. - -\membersection{wxDrawnShape::GetMetaFile} - -\constfunc{wxPseudoMetaFile\& }{GetMetaFile}{\void} - -Returns a reference to the internal `pseudo-metafile'. - -\membersection{wxDrawnShape::GetRotation}\label{wxdrawnshapegetrotation} - -\constfunc{double}{GetRotation}{\void} - -Returns the current rotation of the shape in radians. - -\membersection{wxDrawnShape::LoadFromMetaFile} - -\func{bool}{LoadFromMetaFile}{\param{const wxString\& }{filename}} - -Loads a (very simple) Windows metafile, created for example by Top Draw, the Windows shareware graphics package. - -\membersection{wxDrawnShape::Rotate} - -\func{void}{Rotate}{\param{double }{x}, \param{double }{y}, \param{double }{theta}} - -Rotate about the given axis by the given amount in radians. - -\membersection{wxDrawnShape::SetClippingRect}\label{wxdrawnshapesetclippingrect} - -\func{void}{SetClippingRect}{\param{const wxRect\&}{ rect}} - -Sets the clipping rectangle. See also \helpref{wxDrawnShape::DestroyClippingRect}{wxdrawnshapedestroyclippingrect}. - -\membersection{wxDrawnShape::SetDrawnBackgroundColour}\label{wxdrawnshapesetdrawnbackgroundcolour} - -\func{void}{SetDrawnBackgroundColour}{\param{const wxColour\&}{ colour}} - -Sets the current background colour for the current metafile. - -\membersection{wxDrawnShape::SetDrawnBackgroundMode}\label{wxdrawnshapesetdrawnbackgroundmode} - -\func{void}{SetDrawnBackgroundMode}{\param{int}{ mode}} - -Sets the current background mode for the current metafile. - -\membersection{wxDrawnShape::SetDrawnBrush}\label{wxdrawnshapesetdrawnbrush} - -\func{void}{SetDrawnBrush}{\param{wxPen*}{ pen}, \param{bool}{ isOutline = FALSE}} - -Sets the pen for this metafile. If {\it isOutline} is TRUE, this pen is taken to indicate the outline -(and if the outline pen is changed for the whole shape, the pen will be replaced with the outline pen). - -\membersection{wxDrawnShape::SetDrawnFont}\label{wxdrawnshapesetdrawnfont} - -\func{void}{SetDrawnFont}{\param{wxFont*}{ font}} - -Sets the current font for the current metafile. - -\membersection{wxDrawnShape::SetDrawnPen}\label{wxdrawnshapesetdrawnpen} - -\func{void}{SetDrawnPen}{\param{wxPen*}{ pen}, \param{bool}{ isOutline = FALSE}} - -Sets the pen for this metafile. If {\it isOutline} is TRUE, this pen is taken to indicate the outline -(and if the outline pen is changed for the whole shape, the pen will be replaced with the outline pen). - -\membersection{wxDrawnShape::SetDrawnTextColour}\label{wxdrawnshapesetdrawntextcolour} - -\func{void}{SetDrawnTextColour}{\param{const wxColour\&}{ colour}} - -Sets the current text colour for the current metafile. - -\membersection{wxDrawnShape::Scale} - -\func{void}{Scale}{\param{double }{sx}, \param{double }{sy}} - -Scales the shape by the given amount. - -\membersection{wxDrawnShape::SetSaveToFile} - -\func{void}{SetSaveToFile}{\param{bool }{save}} - -If {\it save} is TRUE, the image will be saved along with the shape's other attributes. The reason -why this might not be desirable is that if there are many shapes with the same image, it would be -more efficient for the application to save one copy, and not duplicate the information for every -shape. The default is TRUE. - -\membersection{wxDrawnShape::Translate} - -\func{void}{Translate}{\param{double }{x}, \param{double }{y}} - -Translates the shape by the given amount. - -\section{\class{wxCircleShape}}\label{wxcircleshape} - -An wxEllipseShape whose width and height are the same. - -\wxheading{Derived from} - -\helpref{wxEllipseShape}{wxellipseshape}. - -\latexignore{\rtfignore{\wxheading{Members}}} - -\membersection{wxCircleShape::wxCircleShape} - -\func{}{wxCircleShape}{\param{double}{ width = 0.0}} - -Constructor. - -\membersection{wxCircleShape::\destruct{wxCircleShape}} - -\func{}{\destruct{wxCircleShape}}{\void} - -Destructor. - -\section{\class{wxCompositeShape}}\label{wxcompositeshape} - -This is an object with a list of child objects, and a list of size -and positioning constraints between the children. - -\wxheading{Derived from} - -\helpref{wxRectangleShape}{wxrectangleshape} - -\wxheading{See also} - -\helpref{wxCompositeShape overview}{compositeshapeoverview} - -\latexignore{\rtfignore{\wxheading{Members}}} - -\membersection{wxCompositeShape::wxCompositeShape} - -\func{}{wxCompositeShape}{\void} - -Constructor. - -\membersection{wxCompositeShape::\destruct{wxCompositeShape}} - -\func{}{\destruct{wxCompositeShape}}{\void} - -Destructor. - -\membersection{wxCompositeShape::AddChild}\label{wxcompositeshapeaddchild} - -\func{void}{AddChild}{\param{wxShape *}{child}, \param{wxShape *}{addAfter = NULL}} - -Adds a child shape to the composite. If {\it addAfter} is non-NULL, the shape will be added -after this shape. - -\membersection{wxCompositeShape::AddConstraint}\label{wxcompositeshapeaddconstraint} - -\func{wxOGLConstraint *}{AddConstraint}{\param{wxOGLConstraint *}{constraint}} - -\func{wxOGLConstraint *}{AddConstraint}{\param{int}{ type}, \param{wxShape *}{constraining}, \param{wxList\&}{constrained}} - -\func{wxOGLConstraint *}{AddConstraint}{\param{int}{ type}, \param{wxShape *}{constraining}, \param{wxShape *}{constrained}} - -Adds a constraint to the composite. - -\membersection{wxCompositeShape::CalculateSize} - -\func{void}{CalculateSize}{\void} - -Calculates the size and position of the composite based on child sizes and positions. - -\membersection{wxCompositeShape::ContainsDivision} - -\func{bool}{FindContainerImage}{\param{wxDivisionShape *}{division}} - -Returns TRUE if {\it division} is a descendant of this container. - -\membersection{wxCompositeShape::DeleteConstraint} - -\func{void}{DeleteConstraint}{\param{wxOGLConstraint *}{constraint}} - -Deletes constraint from composite. - -\membersection{wxCompositeShape::DeleteConstraintsInvolvingChild} - -\func{void}{DeleteConstraintsInvolvingChild}{\param{wxShape *}{child}} - -This function deletes constraints which mention the given child. Used when -deleting a child from the composite. - -\membersection{wxCompositeShape::FindConstraint} - -\func{wxOGLConstraint *}{FindConstraint}{\param{long}{ id}, \param{wxCompositeShape **}{actualComposite}} - -Finds the constraint with the given id, also returning the actual composite the constraint was in, -in case that composite was a descendant of this composite. - -\membersection{wxCompositeShape::FindContainerImage} - -\func{wxShape *}{FindContainerImage}{\void} - -Finds the image used to visualize a container. This is any child -of the composite that is not in the divisions list. - -\membersection{wxCompositeShape::GetConstraints} - -\constfunc{wxList\&}{GetConstraints}{\void} - -Returns a reference to the list of constraints. - -\membersection{wxCompositeShape::GetDivisions} - -\constfunc{wxList\&}{GetDivisions}{\void} - -Returns a reference to the list of divisions. - -\membersection{wxCompositeShape::MakeContainer}\label{wxcompositeshapemakecontainer} - -\func{void}{MakeContainer}{\void} - -Makes this composite into a container by creating one child wxDivisionShape. - -\membersection{wxCompositeShape::OnCreateDivision} - -\func{wxDivisionShape *}{OnCreateDivision}{\void} - -Called when a new division shape is required. Can be overriden to allow an application -to use a different class of division. - -\membersection{wxCompositeShape::Recompute}\label{wxcompositeshaperecompute} - -\func{bool}{Recompute}{\void} - -Recomputes any constraints associated with the object. If FALSE is returned, -the constraints could not be satisfied (there was an inconsistency). - -\membersection{wxCompositeShape::RemoveChild} - -\func{void}{RemoveChild}{\param{wxShape *}{child}} - -Removes the child from the composite and any constraint relationships, but does not -delete the child. - -\section{\class{wxDividedShape}}\label{wxdividedshape} - -A wxDividedShape is a rectangle with a number of vertical divisions. Each -division may have its text formatted with independent characteristics, and -the size of each division relative to the whole image may be specified. - -\wxheading{Derived from} - -\helpref{wxRectangleShape}{wxrectangleshape} - -\wxheading{See also} - -\helpref{wxDividedShape overview}{dividedshapeoverview} - -\latexignore{\rtfignore{\wxheading{Members}}} - -\membersection{wxDividedShape::wxDividedShape} - -\func{}{wxDividedShape}{\param{double}{ width = 0.0}, \param{double}{ height = 0.0}} - -Constructor. - -\membersection{wxDividedShape::\destruct{wxDividedShape}} - -\func{}{\destruct{wxDividedShape}}{\void} - -Destructor. - -\membersection{wxDividedShape::EditRegions} - -\func{void}{EditRegions}{\void} - -Edit the region colours and styles. - -\membersection{wxDividedShape::SetRegionSizes} - -\func{void}{SetRegionSizes}{\void} - -Set all region sizes according to proportions and -this object total size. - -\section{\class{wxDivisionShape}}\label{wxdivisionshape} - -A division shape is like a composite in that it can contain further objects, but is used exclusively to -divide another shape into regions, or divisions. A wxDivisionShape is never free-standing. - -\wxheading{Derived from} - -\helpref{wxCompositeShape}{wxcompositeshape} - -\wxheading{See also} - -\helpref{wxCompositeShape overview}{compositeshapeoverview} - -\latexignore{\rtfignore{\wxheading{Members}}} - -\membersection{wxDivisionShape::wxDivisionShape} - -\func{}{wxDivisionShape}{\void} - -Constructor. - -\membersection{wxDivisionShape::\destruct{wxDivisionShape}} - -\func{}{\destruct{wxDivisionShape}}{\void} - -Destructor. - -\membersection{wxDivisionShape::AdjustBottom} - -\func{void}{AdjustBottom}{\param{double}{ bottom}, \param{bool}{ test}} - -Adjust a side, returning FALSE if it's not physically possible to adjust it to this point. - -\membersection{wxDivisionShape::AdjustLeft} - -\func{void}{AdjustLeft}{\param{double}{ left}, \param{bool}{ test}} - -Adjust a side, returning FALSE if it's not physically possible to adjust it to this point. - -\membersection{wxDivisionShape::AdjustRight} - -\func{void}{AdjustRight}{\param{double}{ right}, \param{bool}{ test}} - -Adjust a side, returning FALSE if it's not physically possible to adjust it to this point. - -\membersection{wxDivisionShape::AdjustTop} - -\func{void}{AdjustTop}{\param{double}{ top}, \param{bool}{ test}} - -Adjust a side, returning FALSE if it's not physically possible to adjust it to this point. - -\membersection{wxDivisionShape::Divide}\label{wxdivisionshapedivide} - -\func{void}{Divide}{\param{int}{ direction}} - -Divide this division into two further divisions, horizontally ({\it direction} is wxHORIZONTAL) or -vertically ({\it direction} is wxVERTICAL). - -\membersection{wxDivisionShape::EditEdge} - -\func{void}{EditEdge}{\param{int}{ side}} - -Interactively edit style of left or top side. - -\membersection{wxDivisionShape::GetBottomSide} - -\func{wxDivisionShape *}{GetBottomSide}{\void} - -Returns a pointer to the division on the bottom side of this division. - -\membersection{wxDivisionShape::GetHandleSide} - -\func{int}{GetHandleSide}{\void} - -Returns the side which the handle appears on (DIVISION\_SIDE\_LEFT or DIVISION\_SIDE\_TOP). - -\membersection{wxDivisionShape::GetLeftSide} - -\func{wxDivisionShape *}{GetLeftSide}{\void} - -Returns a pointer to the division on the left side of this division. - -\membersection{wxDivisionShape::GetLeftSideColour} - -\func{wxString}{GetLeftSideColour}{\void} - -Returns a pointer to the colour used for drawing the left side of the division. - -\membersection{wxDivisionShape::GetLeftSidePen} - -\func{wxPen *}{GetLeftSidePen}{\void} - -Returns a pointer to the pen used for drawing the left side of the division. - -\membersection{wxDivisionShape::GetRightSide} - -\func{wxDivisionShape *}{GetRightSide}{\void} - -Returns a pointer to the division on the right side of this division. - -\membersection{wxDivisionShape::GetTopSide} - -\func{wxDivisionShape *}{GetTopSide}{\void} - -Returns a pointer to the division on the top side of this division. - -\membersection{wxDivisionShape::GetTopSideColour} - -\func{wxString}{GetTopSideColour}{\void} - -Returns a pointer to the colour used for drawing the top side of the division. - -\membersection{wxDivisionShape::GetTopSidePen} - -\func{wxPen *}{GetTopSidePen}{\void} - -Returns a pointer to the pen used for drawing the left side of the division. - -\membersection{wxDivisionShape::ResizeAdjoining} - -\func{void}{ResizeAdjoining}{\param{int}{ side}, \param{double}{ newPos}, \param{bool}{ test}} - -Resize adjoining divisions at the given side. If {\it test} is TRUE, -just see whether it's possible for each adjoining region, -returning FALSE if it's not. - -{\it side} can be one of: - -\begin{itemize}\itemsep=0pt -\item DIVISION\_SIDE\_NONE -\item DIVISION\_SIDE\_LEFT -\item DIVISION\_SIDE\_TOP -\item DIVISION\_SIDE\_RIGHT -\item DIVISION\_SIDE\_BOTTOM -\end{itemize} - -\membersection{wxDivisionShape::PopupMenu} - -\func{void}{PopupMenu}{\param{double}{ x}, \param{double}{ y}} - -Popup the division menu. - -\membersection{wxDivisionShape::SetBottomSide} - -\func{void}{SetBottomSide}{\param{wxDivisionShape *}{shape}} - -Set the pointer to the division on the bottom side of this division. - -\membersection{wxDivisionShape::SetHandleSide} - -\func{int}{SetHandleSide}{\void} - -Sets the side which the handle appears on (DIVISION\_SIDE\_LEFT or DIVISION\_SIDE\_TOP). - -\membersection{wxDivisionShape::SetLeftSide} - -\func{void}{SetLeftSide}{\param{wxDivisionShape *}{shape}} - -Set the pointer to the division on the left side of this division. - -\membersection{wxDivisionShape::SetLeftSideColour} - -\func{void}{SetLeftSideColour}{\param{const wxString\& }{colour}} - -Sets the colour for drawing the left side of the division. - -\membersection{wxDivisionShape::SetLeftSidePen} - -\func{void}{SetLeftSidePen}{\param{wxPen *}{pen}} - -Sets the pen for drawing the left side of the division. - -\membersection{wxDivisionShape::SetRightSide} - -\func{void}{SetRightSide}{\param{wxDivisionShape *}{shape}} - -Set the pointer to the division on the right side of this division. - -\membersection{wxDivisionShape::SetTopSide} - -\func{void}{SetTopSide}{\param{wxDivisionShape *}{shape}} - -Set the pointer to the division on the top side of this division. - -\membersection{wxDivisionShape::SetTopSideColour} - -\func{void}{SetTopSideColour}{\param{const wxString\& }{colour}} - -Sets the colour for drawing the top side of the division. - -\membersection{wxDivisionShape::SetTopSidePen} - -\func{void}{SetTopSidePen}{\param{wxPen *}{pen}} - -Sets the pen for drawing the top side of the division. - -\section{\class{wxEllipseShape}}\label{wxellipseshape} - -The wxEllipseShape behaves similarly to the wxRectangleShape but is -elliptical. - -\wxheading{Derived from} - -\helpref{wxShape}{wxshape} - -\latexignore{\rtfignore{\wxheading{Members}}} - -\membersection{wxEllipseShape::wxEllipseShape} - -\func{}{wxEllipseShape}{\param{double}{ width = 0.0}, \param{double}{ height = 0.0}} - -Constructor. - -\membersection{wxEllipseShape::\destruct{wxEllipseShape}} - -\func{}{\destruct{wxEllipseShape}}{\void} - -Destructor. - -\section{\class{wxLineShape}}\label{wxlineshape} - -A wxLineShape may be attached to two nodes; it may be segmented, in which -case a control point is drawn for each joint. - -A wxLineShape may have arrows at the beginning, end and centre. - -\wxheading{Derived from} - -\helpref{wxShape}{wxshape} - -\latexignore{\rtfignore{\wxheading{Members}}} - -\membersection{wxLineShape::wxLineShape} - -\func{}{wxLineShape}{\void} - -Constructor. - -Usually you will call \helpref{wxLineShape::MakeLineControlPoints}{wxlineshapemakelinecontrolpoints} to -specify the number of segments in the line. - -\membersection{wxLineShape::\destruct{wxLineShape}} - -\func{}{\destruct{wxLineShape}}{\void} - -Destructor. - -\membersection{wxLineShape::AddArrow}\label{wxlineshapeaddarrow} - -\func{void}{AddArrow}{\param{WXTYPE}{ type}, \param{bool}{ end = ARROW\_POSITION\_END}, \param{double}{ arrowSize = 10.0}, - \param{double}{ xOffset = 0.0}, \param{const wxString\& }{name = ""}, \param{wxPseudoMetaFile *}{mf = NULL}, \param{long}{ arrowId = -1}} - -Adds an arrow (or annotation) to the line. - -{\it type} may currently be one of: - -\begin{description}\itemsep=0pt -\item[ARROW\_HOLLOW\_CIRCLE] Hollow circle. -\item[ARROW\_FILLED\_CIRCLE] Filled circle. -\item[ARROW\_ARROW] Conventional arrowhead. -\item[ARROW\_SINGLE\_OBLIQUE] Single oblique stroke. -\item[ARROW\_DOUBLE\_OBLIQUE] Double oblique stroke. -\item[ARROW\_DOUBLE\_METAFILE] Custom arrowhead. -\end{description} - -{\it end} may currently be one of: - -\begin{description}\itemsep=0pt -\item[ARROW\_POSITION\_END] Arrow appears at the end. -\item[ARROW\_POSITION\_START] Arrow appears at the start. -\end{description} - -{\it arrowSize} specifies the length of the arrow. - -{\it xOffset} specifies the offset from the end of the line. - -{\it name} specifies a name for the arrow. - -{\it mf} can be a wxPseduoMetaFile, perhaps loaded from a simple Windows metafile. - -{\it arrowId} is the id for the arrow. - -\membersection{wxLineShape::AddArrowOrdered} - -\func{void}{AddArrowOrdered}{\param{wxArrowHead *}{arrow}, \param{wxList\&}{ referenceList}, \param{int}{ end}} - -Add an arrowhead in the position indicated by the reference -list of arrowheads, which contains all legal arrowheads for this -line, in the correct order. -E.g. - -\begin{verbatim} - Reference list: a b c d e - Current line list: a d -\end{verbatim} - -Add c, then line list is: a c d. - -If no legal arrowhead position, return FALSE. Assume reference list is -for one end only, since it potentially defines the ordering for any one -of the 3 positions. So we don't check the reference list for arrowhead -position. - -\membersection{wxLineShape::ClearArrow} - -\func{bool}{ClearArrow}{\param{const wxString\& }{name}} - -Delete the arrow with the given name. - -\membersection{wxLineShape::ClearArrowsAtPosition} - -\func{void}{ClearArrowsAtPosition}{\param{int}{ position = -1}} - -Delete the arrows at the specified position, or at any position if {\it position} is -1. - -\membersection{wxLineShape::DrawArrow} - -\func{void}{DrawArrow}{\param{ArrowHead *}{arrow}, \param{double}{ xOffset}, \param{bool}{ proportionalOffset}} - -Draws the given arrowhead (or annotation). - -\membersection{wxLineShape::DeleteArrowHead} - -\func{bool}{DeleteArrowHead}{\param{long}{ arrowId}} - -\func{bool}{DeleteArrowHead}{\param{int}{ position}, \param{const wxString\& }{name}} - -Delete arrowhead by id or position and name. - -\membersection{wxLineShape::DeleteLineControlPoint} - -\func{bool}{DeleteLineControlPoint}{\void} - -Deletes an arbitary point on the line. - -\membersection{wxLineShape::DrawArrows} - -\func{void}{DrawArrows}{\param{wxDC\&}{ dc}} - -Draws all arrows. - -\membersection{wxLineShape::DrawRegion} - -\func{void}{DrawRegion}{\param{wxDC\&}{ dc}, \param{wxShapeRegion *}{region}, \param{double}{ x}, \param{double}{ y}} - -Format one region at this position. - -\membersection{wxLineShape::EraseRegion} - -\func{void}{EraseRegion}{\param{wxDC\&}{ dc}, \param{wxShapeRegion *}{region}, \param{double}{ x}, \param{double}{ y}} - -Format one region at this position. - -\membersection{wxLineShape::FindArrowHead} - -\func{wxArrowHead *}{FindArrowHead}{\param{long}{ arrowId}} - -\func{wxArrowHead *}{FindArrowHead}{\param{int}{ position}, \param{const wxString\& }{name}} - -Find arrowhead by id or position and name. - -\membersection{wxLineShape::FindLineEndPoints} - -\func{void}{FindLineEndPoints}{\param{double *}{fromX}, \param{double *}{fromY}, \param{double *}{toX}, \param{double *}{toY}} - -Finds the x, y points at the two ends of the line. This function can be -used by e.g. line-routing routines to get the actual points on the two -node images where the lines will be drawn to/from. - -\membersection{wxLineShape::FindLinePosition} - -\func{int}{FindLinePosition}{\param{double }{x}, \param{double }{y}} - -Find which position we're talking about at this x, y. -Returns ARROW\_POSITION\_START, ARROW\_POSITION\_MIDDLE, ARROW\_POSITION\_END. - -\membersection{wxLineShape::FindMinimumWidth} - -\func{double}{FindMinimumWidth}{\void} - -Finds the horizontal width for drawing a line with arrows in minimum -space. Assume arrows at end only. - -\membersection{wxLineShape::FindNth} - -\func{void}{FindNth}{\param{wxShape *}{image}, \param{int *}{nth}, \param{int *}{noArcs}, \param{bool}{ incoming}} - -Finds the position of the line on the given object. Specify whether incoming or outgoing lines are -being considered with {\it incoming}. - -\membersection{wxLineShape::GetAttachmentFrom} - -\constfunc{int}{GetAttachmentFrom}{\void} - -Returns the attachment point on the `from' node. - -\membersection{wxLineShape::GetAttachmentTo} - -\constfunc{int}{GetAttachmentTo}{\void} - -Returns the attachment point on the `to' node. - -\membersection{wxLineShape::GetEnds} - -\func{void}{GetEnds}{\param{double *}{x1}, \param{double *}{y1}, \param{double *}{x2}, \param{double *}{y2}} - -Gets the visible endpoints of the lines for drawing between two objects. - -\membersection{wxLineShape::GetFrom} - -\constfunc{wxShape *}{GetFrom}{\void} - -Gets the `from' object. - -\membersection{wxLineShape::GetLabelPosition} - -\func{void}{GetLabelPosition}{\param{int}{ position}, \param{double *}{x}, \param{double *}{y}} - -Get the reference point for a label. Region x and y are offsets from this. -position is 0 (middle), 1 (start), 2 (end). - -\membersection{wxLineShape::GetNextControlPoint} - -\func{wxPoint *}{GetNextControlPoint}{\param{wxShape *}{shape}} - -Find the next control point in the line after the start/end point, -depending on whether the shape is at the start or end. - -\membersection{wxLineShape::GetTo} - -\func{wxShape *}{GetTo}{\void} - -Gets the `to' object. - -\membersection{wxLineShape::Initialise} - -\func{void}{Initialise}{\void} - -Initialises the line object. - -\membersection{wxLineShape::InsertLineControlPoint} - -\func{void}{InsertLineControlPoint}{\void} - -Inserts a control point at an arbitrary position. - -\membersection{wxLineShape::IsEnd} - -\func{bool}{IsEnd}{\param{wxShape *}{shape}} - -Returns TRUE if {\it shape} is at the end of the line. - -\membersection{wxLineShape::IsSpline} - -\func{bool}{IsSpline}{\void} - -Returns TRUE if a spline is drawn through the control points, and FALSE otherwise. - -\membersection{wxLineShape::MakeLineControlPoints}\label{wxlineshapemakelinecontrolpoints} - -\func{void}{MakeLineControlPoints}{\param{int}{ n}} - -Make a given number of control points (minimum of two). - -\membersection{wxLineShape::OnMoveLink} - -\func{void}{OnMoveLink}{\param{wxDC\&}{ dc}, \param{bool}{ moveControlPoints = TRUE}} - -Called when a connected object has moved, to move the link to -correct position. - -\membersection{wxLineShape::SetAttachmentFrom} - -\func{void}{SetAttachmentTo}{\param{int}{ fromAttach}} - -Sets the `from' shape attachment. - -\membersection{wxLineShape::SetAttachments} - -\func{void}{SetAttachments}{\param{int}{ fromAttach}, \param{int}{ toAttach}} - -Specifies which object attachment points should be used at each end of the line. - -\membersection{wxLineShape::SetAttachmentTo} - -\func{void}{SetAttachmentTo}{\param{int}{ toAttach}} - -Sets the `to' shape attachment. - -\membersection{wxLineShape::SetEnds} - -\func{void}{SetEnds}{\param{double}{ x1}, \param{double}{ y1}, \param{double}{ x2}, \param{double}{ y2}} - -Sets the end positions of the line. - -\membersection{wxLineShape::SetFrom} - -\func{void}{SetFrom}{\param{wxShape *}{object}} - -Sets the `from' object for the line. - -\membersection{wxLineShape::SetIgnoreOffsets} - -\func{void}{SetIgnoreOffsets}{\param{bool}{ ignore}} - -Tells the shape whether to ignore offsets from the end of the line when drawing. - -\membersection{wxLineShape::SetSpline} - -\func{void}{SetSpline}{\param{bool}{ spline}} - -Specifies whether a spline is to be drawn through the control points (TRUE), or a line (FALSE). - -\membersection{wxLineShape::SetTo} - -\func{void}{SetTo}{\param{wxShape *}{object}} - -Sets the `to' object for the line. - -\membersection{wxLineShape::Straighten} - -\func{void}{Straighten}{\param{wxDC*}{ dc = NULL}} - -Straighten verticals and horizontals. {\it dc} is optional. - -\membersection{wxLineShape::Unlink} - -\func{void}{Unlink}{\void} - -Unlinks the line from the nodes at either end. - -\section{\class{wxPolygonShape}}\label{wxpolygonshape} - -A wxPolygonShape's shape is defined by a number of points passed to the object's -constructor. It can be used to create new shapes such as diamonds and triangles. - -\wxheading{Derived from} - -\helpref{wxShape}{wxshape} - -\latexignore{\rtfignore{\wxheading{Members}}} - -\membersection{wxPolygonShape::wxPolygonShape} - -\func{}{wxPolygonShape}{void} - -Constructor. Call \helpref{wxPolygonShape::Create}{wxpolygonshapecreate} to specify the polygon's vertices. - -\membersection{wxPolygonShape::\destruct{wxPolygonShape}} - -\func{}{\destruct{wxPolygonShape}}{\void} - -Destructor. - -\membersection{wxPolygonShape::Create}\label{wxpolygonshapecreate} - -\func{void}{Create}{\param{wxList*}{ points}} - -Takes a list of wxRealPoints; each point is an {\it offset} from the centre. -The polygon's destructor will delete these points, so do not delete them yourself. - -\membersection{wxPolygonShape::AddPolygonPoint} - -\func{void}{AddPolygonPoint}{\param{int}{ pos = 0}} - -Add a control point after the given point. - -\membersection{wxPolygonShape::CalculatePolygonCentre} - -\func{void}{CalculatePolygonCentre}{\void} - -Recalculates the centre of the polygon. - -\membersection{wxPolygonShape::DeletePolygonPoint} - -\func{void}{DeletePolygonPoint}{\param{int}{ pos = 0}} - -Deletes a control point. - -\membersection{wxPolygonShape::GetPoints} - -\func{wxList *}{GetPoints}{\void} - -Returns a pointer to the internal list of polygon vertices (wxRealPoints). - -\membersection{wxPolygonShape::UpdateOriginalPoints} - -\func{void}{UpdateOriginalPoints}{\void} - -If we've changed the shape, must make the original -points match the working points with this function. - -\section{\class{wxRectangleShape}}\label{wxrectangleshape} - -The wxRectangleShape has rounded or square corners. - -\wxheading{Derived from} - -\helpref{wxShape}{wxshape} - -\latexignore{\rtfignore{\wxheading{Members}}} - -\membersection{wxRectangleShape::wxRectangleShape} - -\func{}{wxRectangleShape}{\param{double}{ width = 0.0}, \param{double}{ height = 0.0}} - -Constructor. - -\membersection{wxRectangleShape::\destruct{wxRectangleShape}} - -\func{}{\destruct{wxRectangleShape}}{\void} - -Destructor. - -\membersection{wxRectangleShape::SetCornerRadius} - -\func{void}{SetCornerRadius}{\param{double}{ radius}} - -Sets the radius of the rectangle's rounded corners. If the radius is zero, a non-rounded -rectangle will be drawn. If the radius is negative, the value is the proportion of the -smaller dimension of the rectangle. - -\section{\class{wxPseudoMetaFile}}\label{wxpseudometafile} - -A simple metafile-like class which can load data from a Windows metafile on all platforms. - -\wxheading{Derived from} - -wxObject - -\section{\class{wxShape}}\label{wxshape} - -The wxShape is the top-level, abstract object that all other -objects are derived from. All common functionality is represented by -wxShape's members, and overriden members that appear in derived -classes and have behaviour as documented for wxShape, are not -documented separately. - -\wxheading{Derived from} - -\helpref{wxShapeEvtHandler}{wxshapeevthandler} - -\latexignore{\rtfignore{\wxheading{Members}}} - -\membersection{wxShape::wxShape} - -\func{}{wxShape}{\param{wxShapeCanvas*}{ canvas = NULL}} - -Constructs a new wxShape. - -\membersection{wxShape::\destruct{wxShape}} - -\func{}{\destruct{wxShape}}{\void} - -Destructor. - -\membersection{wxShape::AddLine} - -\func{void}{AddLine}{\param{wxLineShape*}{ line}, \param{wxShape*}{ other}, \param{int}{ attachFrom = 0}, \param{int}{ attachTo = 0}, - \param{int}{ positionFrom = -1}, \param{int}{ positionTo = -1}} - -Adds a line between the specified canvas shapes, at the specified attachment points. - -The position in the list of lines at each end can also be specified, so that the line will be drawn -at a particular point on its attachment point. - -\membersection{wxShape::AddRegion} - -\func{void}{AddRegion}{\param{wxShapeRegion*}{ region}} - -Adds a region to the shape. - -\membersection{wxShape::AddText} - -\func{void}{AddText}{\param{const wxString\& }{string}} - -Adds a line of text to the shape's default text region. - -\membersection{wxShape::AddToCanvas} - -\func{void}{AddToCanvas}{\param{wxShapeCanvas*}{ theCanvas}, \param{wxShape*}{ addAfter=NULL}} - -Adds the shape to the canvas's shape list. If {\it addAfter} is -non-NULL, will add the shape after this one. - -\membersection{wxShape::AncestorSelected} - -\constfunc{bool}{AncestorSelected}{\void} - -TRUE if the shape's ancestor is currently selected. - -\membersection{wxShape::ApplyAttachmentOrdering}\label{wxshapeapplyattachmentordering} - -\func{void}{ApplyAttachmentOrdering}{\param{wxList\&}{ linesToSort}} - -Applies the line ordering in {\it linesToSort} to the shape, to reorder the way lines are attached. - -\membersection{wxShape::AssignNewIds} - -\func{void}{AssignNewIds}{\void} - -Assigns new ids to this image and its children. - -\membersection{wxShape::Attach}\label{wxshapeattach} - -\func{void}{Attach}{\param{wxShapeCanvas*}{ can}} - -Sets the shape's internal canvas pointer to point to the given canvas. - -\membersection{wxShape::AttachmentIsValid}\label{wxshapeattachmentisvalid} - -\constfunc{bool}{AttachmentIsValid}{\param{int}{ attachment}} - -Returns TRUE if {\it attachment} is a valid attachment point. - -\membersection{wxShape::AttachmentSortTest}\label{wxshapeattachmentsorttest} - -\constfunc{bool}{AttachmentSortTest}{\param{int}{ attachment}, \param{const wxRealPoint\&}{ pt1}, - \param{const wxRealPoint\&}{ pt2}} - -Returns TRUE if {\it pt1} is less than or equal to {\it pt2}, in the sense -that one point comes before another on an edge of the shape. {\it attachment} is -the attachment point (side) in question. - -This function is used in \helpref{wxShape::MoveLineToNewAttachment}{wxshapemovelinetonewattachment} to -determine the new line ordering. - -\membersection{wxShape::CalcSimpleAttachment}\label{wxshapecalcsimpleattachment} - -\func{wxRealPoint}{CalcSimpleAttachment}{\param{const wxRealPoint\&}{ pt1}, - \param{const wxRealPoint\&}{ pt2}, \param{int}{ nth}, \param{int}{ noArcs}, \param{wxLineShape*}{ line}} - -Assuming the attachment lies along a vertical or horizontal line, -calculates the position on that point. - -\wxheading{Parameters} - -\docparam{pt1}{The first point of the line repesenting the edge of the shape.} - -\docparam{pt2}{The second point of the line representing the edge of the shape.} - -\docparam{nth}{The position on the edge (for example there may be 6 lines at this attachment point, -and this may be the 2nd line.} - -\docparam{noArcs}{The number of lines at this edge.} - -\docparam{line}{The line shape.} - -\wxheading{Remarks} - -This function expects the line to be either vertical or horizontal, and determines which. - -\membersection{wxShape::CalculateSize} - -\func{void}{CalculateSize}{\void} - -Called to calculate the shape's size if dependent on children sizes. - -\membersection{wxShape::ClearAttachments} - -\func{void}{ClearAttachments}{\void} - -Clears internal custom attachment point shapes (of class wxAttachmentPoint). - -\membersection{wxShape::ClearRegions} - -\func{void}{ClearRegions}{\void} - -Clears the wxShapeRegions from the shape. - -\membersection{wxShape::ClearText} - -\func{void}{ClearText}{\param{int}{ regionId = 0}} - -Clears the text from the specified text region. - -\membersection{wxShape::Constrain} - -\func{bool}{Constrain}{\void} - -Calculates the shape's constraints (if any). Applicable -only to wxCompositeShape, does nothing if the shape is of -a different class. - -\membersection{wxShape::Copy}\label{wxshapecopy} - -\func{void}{Copy}{\param{wxShape\&}{ copy}} - -Copy this shape into {\it copy}. Every derived class must have one of these, and each Copy implementation -must call the derived class's implementation to ensure everything is copied. See also \helpref{wxShape::CreateNewCopy}{wxshapecreatenewcopy}. - -\membersection{wxShape::CreateNewCopy}\label{wxshapecreatenewcopy} - -\func{wxShape* }{CreateNewCopy}{\param{bool}{ resetMapping = TRUE}, \param{bool}{ recompute = TRUE}} - -Creates and returns a new copy of this shape (calling \helpref{wxShape::Copy}{wxshapecopy}). Do not override this function. - -This function should always be used to create a new copy, since it must do special processing -for copying constraints associated with constraints. - -If {\it resetMapping} is TRUE, a mapping table used for complex shapes is reset; this may not be desirable -if the shape being copied is a child of a composite (and so the mapping table is in use). - -If {\it recompute} is TRUE, \helpref{wxShape::Recompute}{wxshaperecompute} is called for the new shape. - -\wxheading{Remarks} - -This function uses the wxWindows dynamic object creation system to create a new shape of the same -type as `this', before calling Copy. - -If the event handler for this shape is not the same as the shape itself, the event handler is also copied -using \helpref{wxShapeEvtHandler::CreateNewCopy}{wxshapeevthandlercreatenewcopy}. - -\membersection{wxShape::DeleteControlPoints} - -\func{void}{DeleteControlPoints}{\void} - -Deletes the control points (or handles) for the shape. Does not redraw -the shape. - -\membersection{wxShape::Detach} - -\func{void}{Detach}{\void} - -Disassociates the shape from its canvas by setting the internal shape -canvas pointer to NULL. - -\membersection{wxShape::Draggable} - -\func{bool}{Draggable}{\void} - -TRUE if the shape may be dragged by the user. - -\membersection{wxShape::Draw} - -\func{void}{Draw}{\param{wxDC\&}{ dc}} - -Draws the whole shape and any lines attached to it. - -Do not override this function: override OnDraw, which is called -by this function. - -\membersection{wxShape::DrawContents} - -\func{void}{DrawContents}{\param{wxDC\&}{ dc}} - -Draws the internal graphic of the shape (such as -text). - -Do not override this function: override OnDrawContents, which is called -by this function. - -\membersection{wxShape::DrawLinks} - -\func{void}{DrawLinks}{\param{wxDC\&}{ dc}, \param{int}{ attachment = -1}} - -Draws any lines linked to this shape. - -\membersection{wxShape::Erase} - -\func{void}{Erase}{\param{wxDC\&}{ dc}} - -Erases the shape, but does not repair damage caused to other -shapes. - -\membersection{wxShape::EraseContents} - -\func{void}{EraseContents}{\param{wxDC\&}{ dc}} - -Erases the shape contents, that is, the area within the shape's -minimum bounding box. - -\membersection{wxShape::EraseLinks} - -\func{void}{EraseLinks}{\param{wxDC\&}{ dc}, \param{int}{ attachment = -1}} - -Erases links attached to this shape, but does not repair -damage caused to other shapes. - -\membersection{wxShape::FindRegion} - -\func{wxShape *}{FindRegion}{\param{const wxString\& }{regionName}, \param{int *}{regionId}} - -Finds the actual image (`this' if non-composite) and region id for the given -region name. - -\membersection{wxShape::FindRegionNames} - -\func{void}{FindRegionNames}{\param{wxStringList\&}{ list}} - -Finds all region names for this image (composite or simple). -Supply an empty string list. - -\membersection{wxShape::Flash} - -\func{void}{Flash}{\void} - -Flashes the shape. - -\membersection{wxShape::FormatText} - -\func{void}{FormatText}{\param{const wxString\& }{s}, \param{int}{ i = 0}} - -Reformats the given text region; defaults to formatting the default region. - -\membersection{wxShape::GetAttachmentMode} - -\constfunc{bool}{GetAttachmentMode}{\void} - -Returns the attachment mode, which is TRUE if attachments are used, FALSE otherwise (in which case -lines will be drawn as if to the centre of the shape). See \helpref{wxShape::SetAttachmentMode}{wxshapesetattachmentmode}. - -\membersection{wxShape::GetAttachmentPosition}\label{wxshapegetattachmentposition} - -\func{bool}{GetAttachmentPosition}{\param{int}{ attachment}, \param{double*}{ x}, \param{double*}{ y}, - \param{int}{ nth = 0}, \param{int}{ noArcs = 1}, \param{wxLineShape*}{ line = NULL}} - -Gets the position at which the given attachment point should be drawn. - -If {\it attachment} isn't found among the attachment points of the shape, returns FALSE. - -\membersection{wxShape::GetBoundingBoxMax} - -\func{void}{GetBoundingBoxMax}{\param{double *}{width}, \param{double *}{height}} - -Gets the maximum bounding box for the shape, taking into -account external features such as shadows. - -\membersection{wxShape::GetBoundingBoxMin} - -\func{void}{GetBoundingBoxMin}{\param{double *}{width}, \param{double *}{height}} - -Gets the minimum bounding box for the shape, that defines -the area available for drawing the contents (such as text). - -\membersection{wxShape::GetBrush} - -\constfunc{wxBrush*}{GetBrush}{\void} - -Returns the brush used for filling the shape. - -\membersection{wxShape::GetCanvas} - -\constfunc{wxShapeCanvas*}{GetCanvas}{\void} - -Gets the internal canvas pointer. - -\membersection{wxShape::GetCentreResize} - -\constfunc{bool}{GetCentreResize}{\void} - -Returns TRUE if the shape is to be resized from the centre (the centre -stands still), or FALSE if from the corner or side being dragged (the -other corner or side stands still). - -\membersection{wxShape::GetChildren} - -\constfunc{wxList\&}{GetChildren}{\void} - -Returns a reference to the list of children for this shape. - -\membersection{wxShape::GetClientData} - -\func{wxObject*}{GetClientData}{\void} - -Gets the client data associated with the shape (NULL if there is -none). - -\membersection{wxShape::GetDisableLabel} - -\constfunc{bool}{GetDisableLabel}{\void} - -Returns TRUE if the default region will not be shown, FALSE otherwise. - -\membersection{wxShape::GetEventHandler} - -\constfunc{wxShapeEvtHandler*}{GetEventHandler}{\void} - -Returns the event handler for this shape. - -\membersection{wxShape::GetFixedHeight} - -\constfunc{bool}{GetFixedHeight}{\void} - -Returns TRUE if the shape cannot be resized in the vertical plane. - -\membersection{wxShape::GetFixedSize} - -\func{void}{GetFixedSize}{\param{bool *}{ x}, \param{bool *}{ y}} - -Returns flags indicating whether the shape is of fixed size in either direction. - -\membersection{wxShape::GetFixedWidth} - -\constfunc{bool}{GetFixedWidth}{\void} - -Returns TRUE if the shape cannot be resized in the horizontal plane. - -\membersection{wxShape::GetFont} - -\constfunc{wxFont*}{GetFont}{\param{int}{ regionId = 0}} - -Gets the font for the specified text region. - -\membersection{wxShape::GetFunctor} - -\constfunc{wxString}{GetFunctor}{\void} - -Gets a string representing the type of the shape, to be used when -writing out shape descriptions to a file. This is overridden by -each derived shape class to provide an appropriate type string. By default, -"node\_image" is used for non-line shapes, and "arc\_image" for lines. - -\membersection{wxShape::GetId} - -\constfunc{long}{GetId}{\void} - -Returns the integer identifier for this shape. - -\membersection{wxShape::GetLinePosition}\label{wxshapegetlineposition} - -\func{int}{GetLinePosition}{\param{wxLineShape*}{ line}} - -Gets the zero-based position of {\it line} in the list of lines for this shape. - -\membersection{wxShape::GetLines} - -\constfunc{wxList\&}{GetLines}{\void} - -Returns a reference to the list of lines connected to this shape. - -\membersection{wxShape::GetMaintainAspectRatio}\label{wxshapegetmaintainaspectratio} - -\constfunc{bool}{GetMaintainAspectRatio}{\void} - -If returns TRUE, resizing the shape will not change the aspect ratio -(width and height will be in the original proportion). - -\membersection{wxShape::GetNumberOfAttachments}\label{wxshapegetnumberofattachments} - -\constfunc{int}{GetNumberOfAttachments}{\void} - -Gets the number of attachment points for this shape. - -\membersection{wxShape::GetNumberOfTextRegions} - -\constfunc{int}{GetNumberOfTextRegions}{\void} - -Gets the number of text regions for this shape. - -\membersection{wxShape::GetParent} - -\constfunc{wxShape *}{GetParent}{\void} - -Returns the parent of this shape, if it is part of a composite. - -\membersection{wxShape::GetPen} - -\constfunc{wxPen*}{GetPen}{\void} - -Returns the pen used for drawing the shape's outline. - -\membersection{wxShape::GetPerimeterPoint} - -\func{bool}{GetPerimeterPoint}{\param{double}{ x1}, \param{double}{ y1}, \param{double}{ x2}, \param{double}{ y2}, \param{double *}{x3}, \param{double *}{y3}} - -Gets the point at which the line from (x1, y1) to (x2, y2) hits the shape. Returns TRUE if the -line hits the perimeter. - -\membersection{wxShape::GetRegionId}\label{getregionid} - -\func{int}{GetRegionId}{\param{const wxString\& }{name}} - -Gets the region's identifier by name. This is {\it not} unique for within an entire composite, but -is unique for the image. - -\membersection{wxShape::GetRegionName}\label{getregionname} - -\func{wxString}{GetRegionName}{\param{int}{ regionId = 0}} - -Gets the region's name. A region's name can be used to uniquely determine a region within -an entire composite image hierarchy. See also \helpref{wxShape::SetRegionName}{wxshapesetregionname}. - -\membersection{wxShape::GetRegions}\label{getregions} - -\func{wxList\&}{GetRegions}{\void} - -Returns the list of wxShapeRegions. - -\membersection{wxShape::GetRotation} - -\constfunc{double}{GetRotatation}{\void} - -Returns the angle of rotation in radians. - -\membersection{wxShape::GetSensitivityFilter} - -\constfunc{void}{GetSensitivityFilter}{\void} - -Returns the sensitivity filter, a bitlist of values. See \helpref{wxShape::SetSensitivityFilter}{wxshapesetsensitivityfilter}. - -\membersection{wxShape::GetShadowMode} - -\constfunc{int}{SetShadowMode}{\void} - -Returns the shadow mode. See \helpref{wxShape::SetShadowMode}{wxshapesetshadowmode}. - -\membersection{wxShape::GetSpaceAttachments} - -\constfunc{bool}{GetSpaceAttachments}{\void} - -Indicates whether lines should be spaced out evenly at the point they touch the node (TRUE), or whether they -should join at a single point (FALSE). - -\membersection{wxShape::GetTextColour} - -\constfunc{wxString}{GetTextColour}{\param{int}{ regionId = 0}} - -Gets the colour for the specified text region. - -\membersection{wxShape::GetTopAncestor} - -\constfunc{wxShape *}{GetTopAncestor}{\void} - -Returns the top-most ancestor of this shape (the root of the composite). - -\membersection{wxShape::GetX} - -\constfunc{double}{GetX}{\void} - -Gets the x position of the centre of the shape. - -\membersection{wxShape::GetY} - -\constfunc{double}{GetY}{\void} - -Gets the y position of the centre of the shape. - -\membersection{wxShape::HitTest} - -\func{bool}{HitTest}{\param{double}{ x}, \param{double}{ y}, \param{int*}{ attachment}, \param{double*}{ distance}} - -Given a point on a canvas, returns TRUE if the point was on the shape, and returns -the nearest attachment point and distance from the given point and target. - -\membersection{wxShape::Insert} - -\func{void}{InsertInCanvas}{\param{wxShapeCanvas*}{ canvas}} - -Inserts the shape at the front of the shape list of {\it canvas}. - -\membersection{wxShape::IsHighlighted} - -\constfunc{bool}{IsHighlighted}{\void} - -Returns TRUE if the shape is highlighted. Shape highlighting is unimplemented. - -\membersection{wxShape::IsShown} - -\constfunc{bool}{IsShown}{\void} - -Returns TRUE if the shape is in a visible state, FALSE otherwise. Note -that this has nothing to do with whether the window is hidden or the -shape has scrolled off the canvas; it refers to the internal -visibility flag. - -\membersection{wxShape::MakeControlPoints} - -\func{void}{MakeControlPoints}{\void} - -Make a list of control points (draggable handles) appropriate to the shape. - -\membersection{wxShape::MakeMandatoryControlPoints} - -\func{void}{MakeMandatoryControlPoints}{\void} - -Make the mandatory control points. For example, the control point on a dividing line should -appear even if the divided rectangle shape's handles should not appear (because it is the child of -a composite, and children are not resizable). - -\membersection{wxShape::Move}\label{wxshapemove} - -\func{void}{Move}{\param{wxDC\&}{ dc}, \param{double}{ x1}, \param{double}{ y1}, \param{bool}{ display = TRUE}} - -Move the shape to the given position, redrawing if {\it display} is TRUE. - -\membersection{wxShape::MoveLineToNewAttachment}\label{wxshapemovelinetonewattachment} - -\func{void}{MoveLineToNewAttachment}{\param{wxDC\&}{ dc}, \param{wxLineShape*}{ toMove}, \param{double}{ x}, \param{double}{ y}} - -Move the given line (which must already be attached to the shape) to -a different attachment point on the shape, or a different order on the same attachment. - -Cals \helpref{wxShape::AttachmentSortTest}{wxshapeattachmentsorttest} and then \helpref{wxShapeEvtHandler::OnChangeAttachment}{wxshapeevthandleronchangeattachment}. - -\membersection{wxShape::MoveLinks} - -\func{void}{MoveLinks}{\param{wxDC\&}{ dc}} - -Redraw all the lines attached to the shape. - -\membersection{wxShape::NameRegions} - -\func{void}{NameRegions}{\param{const wxString\& }{parentName = ``"}} - -Make unique names for all the regions in a shape or composite shape. - -\membersection{wxShape::Rotate} - -\func{void}{Rotate}{\param{double }{x}, \param{double }{y}, \param{double }{theta}} - -Rotate about the given axis by the given amount in radians (does nothing -for most shapes). But even non-rotating shapes should record their -notional rotation in case it's important (e.g. in dog-leg code). - -\membersection{wxShape::ReadConstraints} - -\func{void}{ReadConstraints}{\param{wxExpr *}{clause}, \param{wxExprDatabase *}{database}} - -If the shape is a composite, it may have constraints that need to be read in in a separate pass. - -\membersection{wxShape::ReadAttributes} - -\func{void}{ReadAttributes}{\param{wxExpr*}{ clause}} - -Reads the attributes (data member values) from the given expression. - -\membersection{wxShape::ReadRegions} - -\func{void}{ReadRegions}{\param{wxExpr *}{clause}} - -Reads in the regions. - -\membersection{wxShape::Recentre} - -\func{void}{Recentre}{\void} - -Does recentring (or other formatting) for all the text regions for this shape. - -\membersection{wxShape::RemoveFromCanvas} - -\func{void}{RemoveFromCanvas}{\param{wxShapeCanvas*}{ canvas}} - -Removes the shape from the canvas. - -\membersection{wxShape::ResetControlPoints} - -\func{void}{ResetControlPoints}{\void} - -Resets the positions of the control points (for instance when the -shape's shape has changed). - -\membersection{wxShape::ResetMandatoryControlPoints} - -\func{void}{ResetMandatoryControlPoints}{\void} - -Reset the mandatory control points. For example, the control point on a dividing line should -appear even if the divided rectangle shape's handles should not appear (because it is the child of -a composite, and children are not resizable). - -\membersection{wxShape::Recompute}\label{wxshaperecompute} - -\func{bool}{Recompute}{\void} - -Recomputes any constraints associated with the shape (normally -applicable to wxCompositeShapes only, but harmless for other -classes of shape). - -\membersection{wxShape::RemoveLine} - -\func{void}{RemoveLine}{\param{wxLineShape*}{ line}} - -Removes the given line from the shape's list of attached lines. - -\membersection{wxShape::Select}\label{wxshapeselect} - -\func{void}{Select}{\param{bool}{ select = TRUE}} - -Selects or deselects the given shape, drawing or erasing control points -(handles) as necessary. - -\membersection{wxShape::Selected}\label{wxshapeselected} - -\constfunc{bool}{Selected}{\void} - -TRUE if the shape is currently selected. - -\membersection{wxShape::SetAttachmentMode}\label{wxshapesetattachmentmode} - -\func{void}{SetAttachmentMode}{\param{bool}{ flag}} - -Sets the attachment mode to TRUE or FALSE. If TRUE, attachment points -will be significant when drawing lines to and from this shape. -If FALSE, lines will be drawn as if to the centre of the shape. - -\membersection{wxShape::SetBrush} - -\func{void}{SetBrush}{\param{wxBrush *}{brush}} - -Sets the brush for filling the shape's shape. - -\membersection{wxShape::SetCanvas}\label{wxshapesetcanvas} - -\func{void}{SetCanvas}{\param{wxShapeCanvas*}{ theCanvas}} - -Identical to \helpref{wxShape::Attach}{wxshapesetcanvas}. - -\membersection{wxShape::SetCentreResize} - -\func{void}{SetCentreResize}{\param{bool}{ cr}} - -Specify whether the shape is to be resized from the centre (the centre stands still) or from the corner or side -being dragged (the other corner or side stands still). - -\membersection{wxShape::SetClientData} - -\func{void}{SetClientData}{\param{wxObject *}{clientData}} - -Sets the client data. - -\membersection{wxShape::SetDefaultRegionSize}\label{setdefaultregionsize} - -\func{void}{SetDefaultRegionSize}{\void} - -Set the default region to be consistent with the shape size. - -\membersection{wxShape::SetDisableLabel} - -\func{void}{SetDisableLabel}{\param{bool}{ flag}} - -Set {\it flag} to TRUE to stop the default region being shown, FALSE otherwise. - -\membersection{wxShape::SetDraggable} - -\func{void}{SetDraggable}{\param{bool}{ drag}, \param{bool}{ recursive = FALSE}} - -Sets the shape to be draggable or not draggable. - -\membersection{wxShape::SetDrawHandles} - -\func{void}{SetDrawHandles}{\param{bool}{ drawH}} - -Sets the {\it drawHandles} flag for this shape and all descendants. If {\it drawH} is TRUE (the default), -any handles (control points) will be drawn. Otherwise, the handles will not be drawn. - -\membersection{wxShape::SetEventHandler} - -\func{void}{GetEventHandler}{\param{wxShapeEvtHandler *}{handler}} - -Sets the event handler for this shape. - -\membersection{wxShape::SetFixedSize} - -\func{void}{SetFixedSize}{\param{bool}{ x}, \param{bool}{ y}} - -Sets the shape to be of the given, fixed size. - -\membersection{wxShape::SetFont} - -\func{void}{SetFont}{\param{wxFont *}{font}, \param{int}{ regionId = 0}} - -Sets the font for the specified text region. - -\membersection{wxShape::SetFormatMode}\label{setformatmode} - -\func{void}{SetFormatMode}{\param{int}{ mode}, \param{int}{ regionId = 0}} - -Sets the format mode of the default text region. The argument can be a bit list -of the following: - -\begin{description}\itemsep=0pt -\item[FORMAT\_NONE] No formatting. -\item[FORMAT\_CENTRE\_HORIZ] Horizontal centring. -\item[FORMAT\_CENTRE\_VERT] Vertical centring. -\end{description} - -\membersection{wxShape::SetHighlight} - -\func{void}{SetHighlight}{\param{bool}{ hi}, \param{bool}{ recurse = FALSE}} - -Sets the highlight for a shape. Shape highlighting is unimplemented. - -\membersection{wxShape::SetId} - -\func{void}{SetId}{\param{long}{ id}} - -Set the integer identifier for this shape. - -\membersection{wxShape::SetMaintainAspectRatio}\label{wxshapesetmaintainaspectratio} - -\func{void}{SetMaintainAspectRatio}{\param{bool}{ flag}} - -If the argument is TRUE, tells the shape that resizes should not change the aspect ratio -(width and height should be in the original proportion). - -\membersection{wxShape::SetPen} - -\func{void}{SetPen}{\param{wxPen *}{pen}} - -Sets the pen for drawing the shape's outline. - -\membersection{wxShape::SetRegionName}\label{wxshapesetregionname} - -\func{void}{SetRegionName}{\param{const wxString\& }{name}, \param{int}{ regionId = 0}} - -Sets the name for this region. The name for a region is unique within the scope of the whole -composite, whereas a region id is unique only for a single image. - -\membersection{wxShape::SetSensitivityFilter}\label{wxshapesetsensitivityfilter} - -\func{void}{SetSensitivityFilter}{\param{int}{ sens=OP\_ALL}, \param{bool}{ recursive = FALSE}} - -Sets the shape to be sensitive or insensitive to specific mouse operations. - -{\it sens} is a bitlist of the following: - -\begin{itemize}\itemsep=0pt -\item OP\_CLICK\_LEFT -\item OP\_CLICK\_RIGHT -\item OP\_DRAG\_LEFT -\item OP\_DRAG\_RIGHT -\item OP\_ALL (equivalent to a combination of all the above). -\end{itemize} - -\membersection{wxShape::SetShadowMode}\label{wxshapesetshadowmode} - -\func{void}{SetShadowMode}{\param{int}{ mode}, \param{bool}{ redraw = FALSE}} - -Sets the shadow mode (whether a shadow is drawn or not). {\it mode} can be one of -the following: - -\begin{description}\itemsep=0pt -\item[SHADOW\_NONE] No shadow (the default). -\item[SHADOW\_LEFT] Shadow on the left side. -\item[SHADOW\_RIGHT] Shadow on the right side. -\end{description} - -\membersection{wxShape::SetSize} - -\func{void}{SetSize}{\param{double}{ x}, \param{double}{ y}, \param{bool}{ recursive = TRUE}} - -Sets the shape's size. - -\membersection{wxShape::SetSpaceAttachments} - -\func{void}{SetSpaceAttachments}{\param{bool}{ sp}} - -Indicate whether lines should be spaced out evenly at the point they touch the node (TRUE), or whether they -should join at a single point (FALSE). - -\membersection{wxShape::SetTextColour} - -\func{void}{SetTextColour}{\param{const wxString\& }{colour}, \param{int}{ regionId = 0}} - -Sets the colour for the specified text region. - -\membersection{wxShape::SetX} - -\func{void}{SetX}{\param{double}{ x}} - -Sets the {\it x} position of the shape. - -\membersection{wxShape::SetX} - -\func{void}{SetY}{\param{double}{ y}} - -Sets the {\it y} position of the shape. - -\membersection{wxShape::SpaceAttachments} - -\func{void}{SpaceAttachments}{\param{bool}{ sp}} - -Sets the spacing mode: if TRUE, lines at the same attachment point will be -spaced evenly across that side of the shape. If false, all lines at the -same attachment point will emanate from the same point. - -\membersection{wxShape::Show} - -\func{void}{Show}{\param{bool}{ show}} - -Sets a flag indicating whether the shape should be drawn. - -\membersection{wxShape::Unlink} - -\func{void}{Unlink}{\void} - -If the shape is a line, unlinks the nodes attached to the shape, removing itself from the list of -lines for each of the `to' and `from' nodes. - -\membersection{wxShape::WriteAttributes} - -\func{void}{WriteAttributes}{\param{wxExpr *}{clause}} - -Writes the shape's attributes (data member values) into the given expression. - -\membersection{wxShape::WriteRegions} - -\func{void}{WriteRegions}{\param{wxExpr *}{clause}} - -Writes the regions. - -\section{\class{wxShapeCanvas}}\label{wxshapecanvas} - -A canvas for drawing diagrams on. - -\wxheading{Derived from} - -wxScrolledWindow - -\wxheading{See also} - -\helpref{wxDiagram}{wxdiagram} - -\latexignore{\rtfignore{\wxheading{Members}}} - -\membersection{wxShapeCanvas::wxShapeCanvas} - -\func{}{wxShapeCanvas}{\param{wxWindow*}{ parent = NULL}, \param{wxWindowID}{ id = -1}, - \param{const wxPoint\&}{ pos = wxDefaultPosition}, \param{const wxSize\&}{ size = wxDefaultSize}, - \param{long}{ style = wxBORDER}} - -Constructor. - -\membersection{wxShapeCanvas::\destruct{wxShapeCanvas}} - -\func{}{\destruct{wxShapeCanvas}}{\void} - -Destructor. - -\membersection{wxShapeCanvas::AddShape} - -\func{void}{AddShape}{\param{wxShape *}{shape}, \param{wxShape *}{addAfter = NULL}} - -Adds a shape to the diagram. If {\it addAfter} is non-NULL, the shape will be added after this -one. - -\membersection{wxShapeCanvas::FindShape} - -\func{wxShape *}{FindShape}{\param{double}{ x1}, \param{double}{ y}, \param{int *}{attachment}, \param{wxClassInfo *}{info = NULL}, - \param{wxShape *}{notImage = NULL}} - -Find a shape under this mouse click. Returns the shape (or NULL), and the nearest attachment point. - -If {\it info} is non-NULL, a shape whose class which is a descendant of the desired class is found. - -If {\it notImage} is non-NULL, shapes which are descendants of {\it notImage} are ignored. - -\membersection{wxShapeCanvas::FindFirstSensitiveShape} - -\func{wxShape *}{FindFirstSensitiveShape}{\param{double}{ x1}, \param{double}{ y}, \param{int *}{attachment}, \param{int}{ op}} - -Finds the first sensitive shape whose sensitivity filter matches {\it op}, working up the hierarchy of composites until -one (or none) is found. - -\membersection{wxShapeCanvas::GetDiagram} - -\constfunc{wxDiagram*}{GetDiagram}{\void} - -Returns the canvas associated with this diagram. - -\membersection{wxShapeCanvas::GetGridSpacing} - -\constfunc{double}{GetGridSpacing}{\void} - -Returns the grid spacing. - -\membersection{wxShapeCanvas::GetMouseTolerance} - -\constfunc{int}{GetMouseTolerance}{\void} - -Returns the tolerance within which a mouse move is ignored. - -\membersection{wxShapeCanvas::GetShapeList} - -\constfunc{wxList*}{GetShapeList}{\void} - -Returns a pointer to the internal shape list. - -\membersection{wxShapeCanvas::GetQuickEditMode} - -\constfunc{bool}{GetQuickEditMode}{\void} - -Returns quick edit mode for the associated diagram. - -\membersection{wxShapeCanvas::InsertShape} - -\func{void}{InsertShape}{\param{wxShape*}{ shape}} - -Inserts a shape at the front of the shape list. - -\membersection{wxShapeCanvas::OnBeginDragLeft}\label{wxshapecanvasonbegindragleft} - -\func{void}{OnBeginDragLeft}{\param{double}{ x}, \param{double}{ y}, \param{int}{ keys = 0}} - -Called when the start of a left-button drag event on the canvas background is detected by OnEvent. You may override this member; -by default it does nothing. - -{\it keys} is a bit list of the following: - -\begin{itemize}\itemsep=0pt -\item KEY\_SHIFT -\item KEY\_CTRL -\end{itemize} - -See also \helpref{wxShapeCanvas::OnDragLeft}{wxshapecanvasondragleft}, \helpref{wxShapeCanvas::OnEndDragLeft}{wxshapecanvasonenddragleft}. - -\membersection{wxShapeCanvas::OnBeginDragRight}\label{wxshapecanvasonbegindragright} - -\func{void}{OnBeginDragRight}{\param{double}{ x}, \param{double}{ y}, \param{int}{ keys = 0}} - -Called when the start of a right-button drag event on the canvas background is detected by OnEvent. You may override this member; -by default it does nothing. - -{\it keys} is a bit list of the following: - -\begin{itemize}\itemsep=0pt -\item KEY\_SHIFT -\item KEY\_CTRL -\end{itemize} - -See also \helpref{wxShapeCanvas::OnDragRight}{wxshapecanvasondragright}, \helpref{wxShapeCanvas::OnEndDragRight}{wxshapecanvasonenddragright}. - -\membersection{wxShapeCanvas::OnEndDragLeft}\label{wxshapecanvasonenddragleft} - -\func{void}{OnEndDragLeft}{\param{double}{ x}, \param{double}{ y}, \param{int}{ keys = 0}} - -Called when the end of a left-button drag event on the canvas background is detected by OnEvent. You may override this member; -by default it does nothing. - -{\it keys} is a bit list of the following: - -\begin{itemize}\itemsep=0pt -\item KEY\_SHIFT -\item KEY\_CTRL -\end{itemize} - -See also \helpref{wxShapeCanvas::OnDragLeft}{wxshapecanvasondragleft}, \helpref{wxShapeCanvas::OnBeginDragLeft}{wxshapecanvasonbegindragleft}. - -\membersection{wxShapeCanvas::OnEndDragRight}\label{wxshapecanvasonenddragright} - -\func{void}{OnEndDragRight}{\param{double}{ x}, \param{double}{ y}, \param{int}{ keys = 0}} - -Called when the end of a right-button drag event on the canvas background is detected by OnEvent. You may override this member; -by default it does nothing. - -{\it keys} is a bit list of the following: - -\begin{itemize}\itemsep=0pt -\item KEY\_SHIFT -\item KEY\_CTRL -\end{itemize} - -See also \helpref{wxShapeCanvas::OnDragRight}{wxshapecanvasondragright}, \helpref{wxShapeCanvas::OnBeginDragRight}{wxshapecanvasonbegindragright}. - -\membersection{wxShapeCanvas::OnDragLeft}\label{wxshapecanvasondragleft} - -\func{void}{OnDragLeft}{\param{bool}{ draw}, \param{double}{ x}, \param{double}{ y}, \param{int}{ keys = 0}} - -Called when a left-button drag event on the canvas background is detected by OnEvent. You may override this member; -by default it does nothing. - -{\it draw} is alternately TRUE and FALSE, to assist drawing and erasing. - -{\it keys} is a bit list of the following: - -\begin{itemize}\itemsep=0pt -\item KEY\_SHIFT -\item KEY\_CTRL -\end{itemize} - -See also \helpref{wxShapeCanvas::OnBeginDragLeft}{wxshapecanvasonbegindragleft}, \helpref{wxShapeCanvas::OnEndDragLeft}{wxshapecanvasonenddragleft}. - -\membersection{wxShapeCanvas::OnDragRight}\label{wxshapecanvasondragright} - -\func{void}{OnDragRight}{\param{bool}{ draw}, \param{double}{ x}, \param{double}{ y}, \param{int}{ keys = 0}} - -Called when a right-button drag event on the canvas background is detected by OnEvent. You may override this member; -by default it does nothing. - -{\it draw} is alternately TRUE and FALSE, to assist drawing and erasing. - -{\it keys} is a bit list of the following: - -\begin{itemize}\itemsep=0pt -\item KEY\_SHIFT -\item KEY\_CTRL -\end{itemize} - -See also \helpref{wxShapeCanvas::OnBeginDragRight}{wxshapecanvasonbegindragright}, \helpref{wxShapeCanvas::OnEndDragRight}{wxshapecanvasonenddragright}. - -\membersection{wxShapeCanvas::OnLeftClick}\label{wxshapecanvasonleftclick} - -\func{void}{OnLeftClick}{\param{double}{ x}, \param{double}{ y}, \param{int}{ keys = 0}} - -Called when a left click event on the canvas background is detected by OnEvent. You may override this member; -by default it does nothing. - -{\it keys} is a bit list of the following: - -\begin{itemize}\itemsep=0pt -\item KEY\_SHIFT -\item KEY\_CTRL -\end{itemize} - -\membersection{wxShapeCanvas::OnRightClick}\label{wxshapecanvasonrightclick} - -\func{void}{OnRightClick}{\param{double}{ x}, \param{double}{ y}, \param{int}{ keys = 0}} - -Called when a right click event on the canvas background is detected by OnEvent. You may override this member; -by default it does nothing. - -{\it keys} is a bit list of the following: - -\begin{itemize}\itemsep=0pt -\item KEY\_SHIFT -\item KEY\_CTRL -\end{itemize} - -\membersection{wxShapeCanvas::Redraw} - -\func{void}{Redraw}{\void} - -Calls wxDiagram::Redraw. - -\membersection{wxShapeCanvas::RemoveShape} - -\func{void}{RemoveShape}{\param{wxShape *}{shape}} - -Calls wxDiagram::RemoveShape. - -\membersection{wxShapeCanvas::SetDiagram} - -\func{void}{SetDiagram}{\param{wxDiagram *}{diagram}} - -Sets the diagram associated with this diagram. - -\membersection{wxShapeCanvas::Snap} - -\func{void}{Snap}{\param{double *}{x}, \param{double *}{y}} - -Calls wxDiagram::Snap. - - - -\section{\class{wxShapeEvtHandler}}\label{wxshapeevthandler} - -wxShapeEvtHandler is a class from which wxShape (and therefore all shape classes) are derived. -A wxShape also contains a pointer to its current wxShapeEvtHandler. Event handlers -can be swapped in and out, altering the behaviour of a shape. This allows, for example, -a range of behaviours to be redefined in one class, rather than requiring -each shape class to be subclassed. - -\wxheading{Derived from} - -wxObject - -\latexignore{\rtfignore{\wxheading{Members}}} - -\membersection{wxShapeEvtHandler::m\_handlerShape} - -\member{wxShape*}{m\_handlerShape} - -Pointer to the shape associated with this handler. - -\membersection{wxShapeEvtHandler::m\_previousHandler} - -\member{wxShapeEvtHandler*}{m\_previousHandler} - -Pointer to the previous handler. - -\membersection{wxShapeEvtHandler::wxShapeEvtHandler} - -\func{void}{wxShapeEvtHandler}{\param{wxShapeEvtHandler *}{previous = NULL}, \param{wxShape *}{shape = NULL}} - -Constructs a new event handler. - -\membersection{wxShapeEvtHandler::\destruct{wxShapeEvtHandler}} - -\func{void}{\destruct{wxShapeEvtHandler}}{\void} - -Destructor. - -\membersection{wxShapeEvtHandler::CopyData}\label{wxshapeevthandlercopydata} - -\func{void}{CopyData}{\param{wxShapeEvtHandler\&}{ handler}} - -A virtual function to copy the data from this object to {\it handler}. Override if you -derive from wxShapeEvtHandler and have data to copy. - -\membersection{wxShapeEvtHandler::CreateNewCopy}\label{wxshapeevthandlercreatenewcopy} - -\func{wxShapeEvtHandler*}{CreateNewCopy}{\void} - -Creates a new event handler object of the same class as this object, and then -calls \helpref{wxShapeEvtHandler::CopyData}{wxshapeevthandlercopydata}. - -\membersection{wxShapeEvtHandler::GetPreviousHandler}\label{wxshapeevthandlergetprevioushandler} - -\constfunc{wxShapeEvtHandler*}{GetPreviousHandler}{\void} - -Returns the previous handler. - -\membersection{wxShapeEvtHandler::GetShape}\label{wxshapeevthandlergetshape} - -\constfunc{wxShape*}{GetShape}{\void} - -Returns the shape associated with this handler. - -\membersection{wxShapeEvtHandler::OnBeginDragLeft} - -\func{void}{OnBeginDragLeft}{\param{double}{ x}, \param{double}{ y}, \param{int}{ keys=0}, \param{int}{ attachment = 0}} - -Called when the user is beginning to drag using the left mouse button. - -\membersection{wxShapeEvtHandler::OnBeginDragRight} - -\func{void}{OnBeginDragRight}{\param{double}{ x}, \param{double}{ y}, \param{int}{ keys=0}, \param{int}{ attachment = 0}} - -Called when the user is beginning to drag using the right mouse button. - -\membersection{wxShapeEvtHandler::OnBeginSize} - -\func{void}{OnBeginSize}{\param{double}{ width}, \param{double}{ height}} - -Called when a shape starts to be resized. - -\membersection{wxShapeEvtHandler::OnChangeAttachment}\label{wxshapeevthandleronchangeattachment} - -\func{void}{OnChangeAttachment}{\param{int}{ attachment}, \param{wxLineShape*}{ line}, \param{wxList\&}{ ordering}} - -Override this to prevent or intercept line reordering. wxShape's implementation of this function -calls \helpref{wxShape::ApplyAttachmentOrdering}{wxshapeapplyattachmentordering} to apply -the new ordering. - -\membersection{wxShapeEvtHandler::OnDragLeft} - -\func{void}{OnDragLeft}{\param{bool}{ draw}, \param{double}{ x}, \param{double}{ y}, \param{int}{ keys=0}, \param{int}{ attachment = 0}} - -Called twice when the shape is being dragged, once to allow erasing the old -image, and again to allow drawing at the new position. - -\membersection{wxShapeEvtHandler::OnDragRight} - -\func{void}{OnDragRight}{\param{bool}{ draw}, \param{double}{ x}, \param{double}{ y}, \param{int}{ keys=0}, \param{int}{ attachment = 0}} - -Called twice when the shape is being dragged, once to allow erasing the old -image, and again to allow drawing at the new position. - -\membersection{wxShapeEvtHandler::OnDraw} - -\func{void}{OnDraw}{\param{wxDC\&}{ dc}} - -Defined for each class to draw the main graphic, but -not the contents. - -\membersection{wxShapeEvtHandler::OnDrawContents} - -\func{void}{OnDrawContents}{\param{wxDC\&}{ dc}} - -Defined for each class to draw the contents of the -shape, such as text. - -\membersection{wxShapeEvtHandler::OnDrawControlPoints} - -\func{void}{OnDrawControlPoints}{\param{wxDC\&}{ dc}} - -Called when the shape's control points (handles) should -be drawn. - -\membersection{wxShapeEvtHandler::OnDrawOutline} - -\func{void}{OnDrawOutline}{\param{wxDC\&}{ dc}} - -Called when the outline of the shape should be drawn. - -\membersection{wxShapeEvtHandler::OnEndDragLeft} - -\func{void}{OnEndDragLeft}{\param{double}{ x}, \param{double}{ y}, \param{int}{ keys=0}, \param{int}{ attachment = 0}} - -Called when the user is stopping dragging using the left mouse button. - -\membersection{wxShapeEvtHandler::OnEndDragRight} - -\func{void}{OnEndDragRight}{\param{double}{ x}, \param{double}{ y}, \param{int}{ keys=0}, \param{int}{ attachment = 0}} - -Called when the user is stopping dragging using the right mouse button. - -\membersection{wxShapeEvtHandler::OnEndSize} - -\func{void}{OnEndSize}{\param{double}{ width}, \param{double}{ height}} - -Called after a shape is resized. - -\membersection{wxShapeEvtHandler::OnErase} - -\func{void}{OnErase}{\param{wxDC\&}{ dc}} - -Called when the whole shape should be erased. - -\membersection{wxShapeEvtHandler::OnEraseContents} - -\func{void}{OnEraseContents}{\param{wxDC\&}{ dc}} - -Called when the contents should be erased. - -\membersection{wxShapeEvtHandler::OnEraseControlPoints} - -\func{void}{OnEraseControlPoints}{\param{wxDC\&}{ dc}} - -Called when the shape's control points (handles) should -be erased. - -\membersection{wxShapeEvtHandler::OnHighlight} - -\func{void}{OnHighlight}{\param{wxDC\&}{ dc}} - -Called when the shape should be highlighted. - -\membersection{wxShapeEvtHandler::OnLeftClick} - -\func{void}{OnLeftClick}{\param{double}{ x}, \param{double}{ y}, \param{int}{ keys =0}, \param{int}{ attachment = 0}} - -Called when the shape receives a left mouse click event. - -\membersection{wxShapeEvtHandler::OnMoveLink} - -\func{void}{OnMoveLink}{\param{wxDC\&}{ dc}, \param{bool}{ moveControlPoints=TRUE}} - -Called when the line attached to an shape need to be repositioned, -because the shape has moved. - -\membersection{wxShapeEvtHandler::OnMoveLinks} - -\func{void}{OnMoveLinks}{\param{wxDC\&}{ dc}} - -Called when the lines attached to an shape need to be repositioned, -because the shape has moved. - -\membersection{wxShapeEvtHandler::OnMovePost} - -\func{bool}{OnMovePost}{\param{wxDC\&}{ dc}, \param{double}{ x}, \param{double}{ y}, \param{double}{ oldX}, \param{double}{ oldY}, \param{bool}{ display = TRUE}} - -Called just after the shape receives a move request. - -\membersection{wxShapeEvtHandler::OnMovePre} - -\func{bool}{OnMovePre}{\param{wxDC\&}{ dc}, \param{double}{ x}, \param{double}{ y}, \param{double}{ oldX}, \param{double}{ oldY}, \param{bool}{ display = TRUE}} - -Called just before the shape receives a move request. Returning TRUE -allows the move to be processed; returning FALSE vetoes the move. - -\membersection{wxShapeEvtHandler::OnRightClick} - -\func{void}{OnRightClick}{\param{double}{ x}, \param{double}{ y}, \param{int}{ keys = 0}, \param{int}{ attachment = 0}} - -Called when the shape receives a mouse mouse click event. - -\membersection{wxShapeEvtHandler::OnSize} - -\func{void}{OnSize}{\param{double}{ x}, \param{double}{ y}} - -Called when the shape receives a resize request. - -\membersection{wxShapeEvtHandler::OnSizingBeginDragLeft} - -\func{void}{OnSizingBeginDragLeft}{\param{wxControlPoint*}{ pt}, \param{double}{ x}, \param{double}{ y}, \param{int}{ keys=0}, \param{int}{ attachment = 0}} - -Called when a sizing drag is beginning. - -\membersection{wxShapeEvtHandler::OnSizingDragLeft} - -\func{void}{OnSizingDragLeft}{\param{wxControlPoint*}{ pt}, \param{bool}{ draw}, \param{double}{ x}, \param{double}{ y}, \param{int}{ keys=0}, \param{int}{ attachment = 0}} - -Called when a sizing drag is occurring. - -\membersection{wxShapeEvtHandler::OnSizingEndDragLeft} - -\func{void}{OnSizingEndDragLeft}{\param{wxControlPoint*}{ pt}, \param{double}{ x}, \param{double}{ y}, \param{int}{ keys=0}, \param{int}{ attachment = 0}} - -Called when a sizing drag is ending. - -\membersection{wxShapeEvtHandler::SetPreviousHandler}\label{wxshapeevthandlersetprevioushandler} - -\func{void}{SetPreviousHandler}{\param{wxShapeEvtHandler*}{ handler}} - -Sets the previous handler. - -\membersection{wxShapeEvtHandler::SetShape}\label{wxshapeevthandlersetshape} - -\func{void}{SetShape}{\param{wxShape*}{ shape}} - -Sets the shape for this handler. - -\section{\class{wxTextShape}}\label{wxtextshape} - -As wxRectangleShape, but only the text is displayed. - -\wxheading{Derived from} - -\helpref{wxRectangleShape}{wxrectangleshape} - -\latexignore{\rtfignore{\wxheading{Members}}} - -\membersection{wxTextShape::wxTextShape} - -\func{void}{wxTextShape}{\param{double}{ width = 0.0}, \param{double}{ height = 0.0}} - -Constructor. - -\membersection{wxTextShape::\destruct{wxTextShape}} - -\func{void}{\destruct{wxTextShape}}{\void} - -Destructor. - -\section{Functions}\label{functions} - -These are the OGL functions. - -\membersection{::wxOGLInitialize} - -\func{void}{wxOGLInitialize}{\void} - -Initializes OGL. - -\membersection{::wxOGLCleanUp} - -\func{void}{wxOGLCleanUp}{\void} - -Cleans up OGL. - diff --git a/utils/ogl/docs/contents.gif b/utils/ogl/docs/contents.gif deleted file mode 100644 index 3dddfa3dd5f0c652e8b27cd6c29e1fdd49ced5a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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}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 diff --git a/utils/ogl/docs/intro.tex b/utils/ogl/docs/intro.tex deleted file mode 100644 index 6d208fff9b..0000000000 --- a/utils/ogl/docs/intro.tex +++ /dev/null @@ -1,47 +0,0 @@ -\chapter{Introduction} -\pagenumbering{arabic}% -\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}% -\setfooter{\thepage}{}{}{}{}{\thepage} - -Object Graphics Library (\ogl) is a C++ library supporting the creation and -manipulation of simple and complex graphic images on a canvas. - -It can be found in the directory {\tt utils/ogl/src} in the -wxWindows distribution. The file {\tt ogl.h} must be included to make use -of the library. - -Please see \helpref{OGL overview}{ogloverview} for a general description how the object library works. For details, -please see the \helpref{class reference}{classref}. - -\section{File structure} - -These are the files that comprise the \ogl\ library. - -\begin{description}\itemsep=0pt -\item[basic.h] Header for basic objects such as wxShape and wxRectangleShape. -\item[basic.cpp] Basic objects implementation (1). -\item[basic2.cpp] Basic objects implementation (2). -\item[bmpshape.h] wxBitmapShape class header. -\item[bmpshape.cpp] wxBitmapShape implementation. -\item[canvas.h] wxShapeCanvas class header. -\item[canvas.cpp] wxShapeCanvas class implementation. -\item[composit.h] Composite object class header. -\item[composit.cpp] Composite object class implementation. -\item[constrnt.h] Constraint classes header. -\item[constrnt.cpp] Constraint classes implementation. -\item[divided.h] Divided object class header. -\item[divided.cpp] Divided object class implementation. -\item[drawn.h] Drawn (metafile) object class header. -\item[drawn.cpp] Drawn (metafile) object class implementation. -\item[graphics.h] Main include file. -\item[lines.h] wxLineShape class header. -\item[lines.cpp] wxLineShape class implementation. -\item[misc.h] Miscellaneous graphics functions header. -\item[misc.cpp] Miscellaneous graphics functions implementation. -\item[ogldiag.h] wxDiagram class header. -\item[ogldiag.cpp] wxDiagram implementation. -\item[mfutils.h] Metafile utilities header. -\item[mfutils.cpp] Metafile utilities implementation. -\end{description} - - diff --git a/utils/ogl/docs/ogl.hpj b/utils/ogl/docs/ogl.hpj deleted file mode 100644 index 7f8c9efa46..0000000000 --- a/utils/ogl/docs/ogl.hpj +++ /dev/null @@ -1,17 +0,0 @@ -[OPTIONS] -BMROOT=d:\wx2\wxwind~1\utils\ogl\docs ; Assume that bitmaps are where the source is -TITLE=OGL Manual -CONTENTS=Contents -COMPRESS=HIGH - -[FILES] -ogl.rtf - -[CONFIG] -CreateButton("Up", "&Up", "JumpId(`ogl.hlp', `Contents')") -BrowseButtons() - -[MAP] - -[BITMAPS] - diff --git a/utils/ogl/docs/ogl.tex b/utils/ogl/docs/ogl.tex deleted file mode 100644 index e02dba2772..0000000000 --- a/utils/ogl/docs/ogl.tex +++ /dev/null @@ -1,46 +0,0 @@ -\documentstyle[a4,makeidx,verbatim,texhelp,fancyhea,mysober,mytitle]{report} -\newcommand{\ogl}[0]{{OGL}}% -\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 -\parindent 0pt -\parskip 11pt -\title{Manual for Object Graphics Library 3.0} -\author{Julian Smart} -\date{September 1998} - -\makeindex -\begin{document} -\maketitle - -\pagestyle{fancyplain} -\bibliographystyle{plain} -\pagenumbering{roman} -\setheader{{\it CONTENTS}}{}{}{}{}{{\it CONTENTS}} -\setfooter{\thepage}{}{}{}{}{\thepage} -\tableofcontents% - -\input{intro.tex} -% -\input{sample.tex} -% -\input{classes.tex} -% -\input{topics.tex} -% -\input{bugs.tex} -% -\input{changes.tex} - -% -\addcontentsline{toc}{chapter}{Index} -\setheader{{\it INDEX}}{}{}{}{}{{\it INDEX}} -\setfooter{\thepage}{}{}{}{}{\thepage}% -\printindex -\end{document} diff --git a/utils/ogl/docs/ogledit.bmp b/utils/ogl/docs/ogledit.bmp deleted file mode 100644 index e7cf417cf5d40022505909a5653ac5f30b6aa6e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 87670 zcmeI5&1x*U8HQ`%fH@p+XKo>@A)DO75DrWT1n+VQA*-Yb!*uWZ1Onr%e74?ZIV$>276a|zfYwqNhMWDDoOR@mfh8=pDydE=aWjRc31!5&p-U-tBTSOczlD$ z|1kRrkFTnCw79C8^_2Zh^PqfH{mj4B&p%TR5BwnW%P+rFpFVxUlA3?3x~3c+_@PBK zc?0QqyYU2vr^B|>@y##}RmhhWrn3M#9A58kUw^cD+=~i&#kKU)X@%(^ihekpZeQ>0 zj9fvFS1(jeKdn$Bip)jF1R`Io9yP`lYCIiUMu>EJygIDh;}t@XWV&N@-!ZP#W7RO8 zoUvMUj4Q2=AYhLNXRL0=b}}OV^v*k-XnSe7si#hs&)M)+Eudjy6tvV^vSo)*bJGreSYL?iuUp2>KmH|;No!` zCNCZ@9@laN#9K9&c6BYjT;;rYbRC&>Ex&kNmoHaoFCJY-Cdcw!j-B#87vu4K&c?Wy z{_3vICUPkrVKJM?rFbNXxkN6+BRk9`av>gt!b~EU;juB8N#rs-N`dk@?P+8Y9$SBH zCMo11Ja+oJTtdnvcvS2u*>sRg@TkgD^QkBo;8Am@%_M?cfJa@OK9_`YevgJZV>Sik z{2onl=KOTZ***5W^%hKqoZI8MudTmiBIVp3EkMad&g{|3W8t1;a%PWK94q()%6UCH zXsqP%kn?(Uz&OxjDQETQWO1-ZLeA>ZiQW10SKg=&*KQi;1LLeoX_J3#K<8Cp`6X*D8tAx2!Nc;BM{CNCKV>t4%6yP z_kTH8XWR;Aha16+9t3a7xjZt#j;1@%oRQnnyR7ssB=S6}OeS(Jj|{-?s}dt|sf_$K z9Ulg7Spyr+e@Yu7KJ>DcBe**gFM zh4Sj_BNHG(9SMBSb&i*~7td558G+9oR$bJtCev8YRUbzg(rK(`^EeiZ=`_yhaX1(g zYMjyIu*ifO=kz!vGNr~jJ!2?##bABX=lpG>=?{TXXu|WdUh-qT)EA&IoD;!erRy-bG;^r+TF$v9Rghb0n9ca*xEL`)E_fgZKG z*g|&Y>F35I(kohfZAROV4P4t`WG2j`B~l4=pb+B{sep0^@>wr**Z*@4xm+u7n%f0l z2e4{HiM`q~V~|IOMyE(Wi3BMiBnmCjl7w`j3^NAR zM~6m-NMDIW!vZn8GgKSJ778T324Fa;N7>)wV5m01%B4_uFAA4x+Ct*n9LCbVJ7)eK2Q`XdJ-`2q zf0Rl^WZ6#xc^(6#_51eq{vJITaltU3L@u&`91B!&2wIWe9!Elzf)!V{Keq=jQ-&bD zG%6y!J&rS;-xpw{v#6iO!$FEn=n;tb_j13PG}3N8HFhGsJ&sgIG&+2uD!}Ngu@&j< zahx%uI(66H8e5UR9!INVuREufD`h^M(bwa082v+42J8AfhBIC~cJ*j6u^LbvWuxQk zakN=AhgaRYr!-(OYu z*;o5!IS(;|Jw6CJD`V+cC0le70V)4n9l(npdd3s4!|HI4lJP+VDzrX)5qYdBTOT_{ zMp9U@#$*hrkB!GK)rSvwfDRMNQ`}P9^WX}vq|47---r=o0QNvgAs$smB~Rf>sU%~CZvmqAhT0g>{(u(W$ccGE z=XEV(h)03qoR(xHNiwl9IYZCg0uieL9-VN_in$n7JkEDlCIzFf$MYCrsqy2vhcvJt z%;Pc`(OiZxo@=lJoWL=pA#wU{J20yFZJ;~%(EL{kpL4TLBKiOU^>Iif-vlQso7{N>V?ccz5J|PMP_#xchIn*~ zB)&q?8o?Ok(N!Zwqk5L%l=sQXr zhBJnFtcO3RQzTjgD&$_+5AfY4Xboo!^oUPCnOAc(E`_(NL5Xwz!P=B2)FU9Z z?#_dTIP$;!X<)rYHlbPvd&G%QfqXE<>BwoI%)R)Elw}L|2uONIm6GlA$a2SK!4l4U zij*2-JW^>f-bS*OyF_=#Ph@+vV?5f>x@84UAYLL{jj;$ytxbak<(+AXbsm` z=k%DPa~`2F@cuai72Ccl;;7qqB$vkQFt5kt(Hf&Mx5v;^nbhTaj?tL8KBA~mrE(!g zY0U01?Fl6AfMu?a5E6InttJEeaB?46&yV7d#2tKDK;=31Xyx~qE?Q#`RsoNxqBT}y z{&tmOEwUadVM^IpjrrSEE@*V|6wGLiWjrQ{*7)O8qCP^#^k|LOSjgjq$|R#TUSpy9 zh@QZNG7{zljm11pDkK=E9HK(?abhW_9ibDa!x2|!PsaO{dy0{CX;QRK(O9fL;#f_n zQq!8{avmqtsR>7i;;>wOoY1yTiqu^1BRgtwq>sp#wS_3@F}AxiQDeFDqd2ND#ht3L zXnh1`OnGCDOB<(@DcP>l-wQtr#2gm-OI<2kAMtmCtpvZIgKKiS$J;K+8?*FYF>yg? zcW1grqdsXjh#F@{8Icr$Ei zF7$Sl;PCC!nHl|0ASoi%JU;^N4kJktnbD*F2_!|Nn&S@Eh<}I7&FJaJb2CeLYKzSC zBWYxjSv^v;dN}gfM1yh6nDr6=)QSX=c^T{7`7?U2{Ks6AT_TNUyDBu2$jpqmVLLv< z{4|tyi8Pw$$6}22IAfCY28FL#A4|n5{}bwnM@RJvUToIKLTwIxaqj)D5Tof4U4R1T z4ydT`MHqz`O^;>z02FTcLX$#_J&#>q&ef(*T`rqTM9fgL`Xsjtu7BnWdLALN>60JP z+sTo-vKM0Pd%TrnEA#yi}Yp-=0UUj@e_iy+56{ zZNSXj^-(LTol)B)W~Mx&ULUnGtBiZT$KVz2aK`r^e-DYTJ9xSQ)G9es`cd$CxMez8`Z<~kmq*;U4k~fyGrwCA zX#2#B;jx0k#|n(q<29bI#XR+ZihJaHD~ecE!qqIl&%D71!l&z}3e&22e!?@QWQ+mz zk^JH21GvX2ZXJoc4yKA#VtnKu@tmA7pgwY|Llg0kQy+KgHipMX#HwU`#7Kl{CPp?{ zJ<`ZY6v?cQc^JD`ZG2vnMQOu=WHjpI zUYvUP#wIGG8f+8uMyx`ZBjxfa_e-)i!>D^~G~!~*mKgQ=xJ|~3$BE60_2uQ;9NlC4 zRkVX`PICfnPozNM`@LI{dJD@l>h-a?fv~vg@Ibpthrmb}S^A~&jD|;XAEvBMM1{SAXda z@A8*0`PTMVfaJ~OT3*rJFdVAOGnyWicvEAQM5uritP+q>C8InJSj!u<8?`%jGFI36 z)d1Na2^{tJH}83D%VK)$VimCb-C%&IND+TESmSX5<0JRPyN+El#sH5zV8jSgiAL~| zC_FlkVgs>+SMj>;&^bLm=^FEmJG!#;J&J)bO}jQnG%T3nj{Q7rrg601<`ARO5W5+# zuRDpz&EZigCm#u_qk2Xz=!VbjHr=Z7jQ;fzA*!dg{B5RNFSoUMm@g0>p7=>7e2v~x$C3uG0#6Cm1orJqs}!8SQgGtSG3vO31oCzA7%KfW3ghI` z`|ZH+s1|24jHX8gax;u!9zDLtMmb3KZ24FX@Q5PI%cl0y`z` zN{jWFh>vztp3&E1I>_>jdVQpS1`r8M>bWBw;_My^U+eJercB<-@F@3pzIdDxy0h2E zH|OyriIYAr%VYNIM=t5a1_%2n&nU)-)SU~JynQ0t?kyfKR}jPWBV_bV;2DnB@M`u<~%v;dFzbX4;$pzubVH= z*z1$io#gs$PLGkSD!)JgmShBG$7JTpGxqxA{5jiRyJ}@bznncf6zM$#ONI2}61kA_DsyJSR&TGKKaQ2~P)`TV#dM*O4SIHQ#( zZs8oUiu!k9jML?O)v`RcEo{=v42)`@obp{db=j1;*JPh*@GX^4r1Z&?Irp6#A4+!zizGZHrFOw2Uu;a=nb-(zOaDz5BMA zdDk+2e^l95pfQy}x^?gO29O~*)=JKRj5epwIOuVJ(baS;zdru!>#y(jfBl=a&EWtht%C_syO1`A`ZucBuqX^#i+|e-(f-HEY?AEyZITWi$iq+L7YW*nf#8drF vE@(YAD`u@xxel-F=j7V|6876La_!vgyq7z diff --git a/utils/ogl/docs/ogledit.gif b/utils/ogl/docs/ogledit.gif deleted file mode 100644 index 9784681b2d44f95979f6b95e5b699f94e115e85a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7163 zcmVNk%w1VZ#A{0kZ%A0002L0002L0KdNg006(g0KWjgzreu2fPjGi00030 z0RR60009600RI60|NsC0A^8LW008v>EC2ui0K)-*0RRO4@W@H4y*TU5yZ>M)j$~<` zXsWJk`vJ!z&vb3yc&_h!@BhG{a7Zi~kI1BQ$!zuzu!n0(ty-_xtai)omY^}OcuX#v z&**d&EIkn3@VINH@w9CxR&d<iO*aW?8ZwSJ}#m5fGaW&^Oa58c>xijhS@X_tcx%Bw?`h3LM}XbEiWDtcTt|`PMU4LO_T5t_vZTp;{V@D{IB;OWiW34- zka+-M%}>AJ-N3l9r@f6KJ=PNn6sSI*CzC2=mh!?%7#5&zvqqEVOj`O}QolAF9QwvWoNZkc_%tqpOU2 zcjnrigA4ETnL_9adkx0?YdWhpj0kwm5FkK-0s*XM%S{{9G54`}a$_FfyS&lwz=x|} zKc_h0TLATr_6rc|Rc_8fJ%|n`Om*wm!T$EzR+<&~m22RkW!YurHOSk8h@mGNdlXjK z7fUX^*M@yF%~v0N_npRz9DD(2od9NerPf+qEw&hK6Nc9!d1Xz;TVnDEXyK0RP16#G zPyI;KRNC+*B1~|!_P~GEnZo0fP)3P}d!A5vpOt~(lnZOCQ71raQidt!nBfs)=9y^T zg65iL^0gnEYZ{p!YBB6U=AC$oDde7f?)gTaKVl_Vj&|m0=%I*Ka%7^6HtMJ)r>P<7 zq?A@_>7|(ZgA)sjWa{aspoS`{2!e5{$f&5Ms_LqembyZxti~$qthB1&stT~ys_U-2 z_Ij&d1i`=|26Vi*PDOUe7ZV1<{`TtZv(Res>$0M4P%K)<&Y^64+eYi{x8R~MEw{*V zaIG}i%F%7JBj#T*6a)n>+6hU~^G@W8u{3vhhGQj2eUab<*T zjC!?1Zo>8jOz_1RqiXQ56lb__JMA4S86EusOtHclr>rul8<(4K2KlBtGQ{*g)UM4H zudMUVmbTpC%QjaKGbAD-t8LByA{_M6JU8w17(UlqAG^gGwy)7~l#C(5_df0Q*H;)^ zLaroO4EEV*i#so{U0bWKih4vPWCmuZZTH?7a8xJL#X*{-zbCK!@GihXi+U({2&suXhdf$(TQkuA{4VC#fY^n16Cvs7Qfg-G0KdH zcqC)UxHvO9nvr#B3?v$B0w-d`k8TpX;Q@0v$1*x{h~m@Z5hsbqJ7$rLS7XK*1bwa znag4_Z+14YpnH7D0bq{LEwF&wlZa`|YPv6YhpZt>KHyC1J%gIo4Cm|CsLTyiOmY(F zrZ<}bPI0;ufY{`v2B?Sub*@v1fPAMuVMoqvmJXfKQ{5EuxzBO=p%Bez6C~P36;u>2XVQj6+o{o#27#l)limrGw4Z}~G;J6)sZ5E0 z(omk@rN)_tL#~0-v&D3#K>YzB3+Ydfu2iROFcVUVB&8t-Tx>ud9jjBJoz+aIX*qT(fut`1a$`Y&Cs517mZM+2#*fm+e zB-N=+B}Qu3h&Rr5cBY@*D=$TB3&~QH0@Ikm1Xgo7$hr2lGL0=?LmLFrngC8CJqT@q z{@YpMs+G8-wXI)oklbr5m$`~{t}kwNT^<;>x?A`yb|I==$8xW`JNPbmvmoB_KD4~E zEv|Iei-q>Occ1W$Z*)mXU-qK+zCq0|cje39{sIobc+D?#Ys=q4I{3j5jouX0VD^yoUd_n7l83Zj5y? zUmCl>zBe{zhtKd zai+}WcMdtsGd97KeVpVnr_sx3hH?ow#4dC)uFY;9q?MD3WiX#Wa&}%Ep7YH9L^yx% z&-4;jpbIx>Lc{RPhgNfr}J6eKRlQ{=Y&b6*TxoRDVdL}YX^PHJO>zi5Bz5pPHvX{;5W;^@Y&c3yy zTMdvR?^etgmG%vi4ef4w``gUcHlcrA?G(#-1apfrvcb*nc0XI(Zl?A_tesA5uVCHo z&bPkd9q&EsH`v#<_u=?G18(d4;NT`WmF3NE^$PsB3QrBfC+_WtE1BH$Hg~`u4sjwF zoZ=u~w#9GEaC(24jo$DZ& zI@rT*bsNaL-06iQ+DD-FweP#_Zf|-hsaoo}hoJ6ucemIP{C2DQ{qJ56{KN-Oc)g!| z1aTHK;1!>6ysrl9DFs2~wLJNKf1T}?*RA6>|9Er$rPeP90qRAt=+$>!eA;LC|{t!an55{`}o%?{7YrUZuA`wF`8Qh2GaU@hcC0^od`4wkE$`=lqvd zGSoGX5xXiA3zogWue9xV-~35CJ@z|31mW-70qz$(@r&PAKmK3;LzGrDsyp4Toc&B{ z{>OhgGl1HMG6M*JxW|8A0DZt05Ysn%)t6=Ww>0BdZ2PBZ_u_vp!7;LiY6p0M6sUX? zqkupIG&RS76lZYp$8L-VU}R@_6ZnB77=i&KgC;nG9+-e77=kE6gFd)_C-{4d=YRrH zbr6VoeU@%jWNI^LgFnbLPWXXIBY?PPfjBsV2PlO%_2vA zCvE{lda5@{Qv-<#Rfe>3h=|y1U^reo2XOUvc#eaD{+C#Bia2_%#&gH#iIy0OE$4^Y z^=~pKY@SFBps0$8$ck2$b>7uuv1na;NQ=>Ci^3&Oj95>*SR}pZi{UnktvD@#D0jsu zi^qtJt9XR1*ilnMhGr9MYo>rA*n>4gIkO0V191#RNQB(xfW|P6=@@+ID30w&4wVIqjiDET_BUtq)Pr?qPG19f>Ii=a zNs$A&jzxHp@YoU}r;N9ldE9i5k%%)L_=f1GkBAkH2kDOjd66uskuCX))Od^5XnSWE zfG5+9J1B$vIEyc-f&nRx8rhCtw}SDAU1DhdeGJKIIk|>v$Td&-H2pY{?r4$gD3n!c zjv0xO@0gCj_+s@(0*&-2$CK!mQ2ZwO{jyE#xtoXa$N~_ zM+saCDVBfch89?o;&+mFX;*3~jb8bcpaqwT^o+dNg^DSY3HgVl=ZK~!PRmYvMVc zq%croe0T850!xIRJ2>w56fN z>5*>aOgM`wBec_u9?plITxPl^OMdZjPapNsXGL$##x37$XtrAI)f zq2s2o)tgHNp#w3X1S+Cz3Z}ROr@>{W%2}t)iKlt$aeOK|g_==W%AMXBoNGF$wqQ+R zdTHe5V89uuaObGHaHy}Nss8vSr=WRZUW%!>woja@Pm}6%p(?62P^z)Rs^OHVpxUUa zI;9Zhs@9a0YBsAlV5_~utGV=-=%%YR5UCmEt4n64D`2eHrL4ZgtZ(M2Ea0r2C9S<$ zX1F?M!b+?_MXiqpt;wpZ+?qV$>O$9AHma(vWHqi31gxwls_MEt@5*Y(ssiy^tnP)b z@>q?ISvrG?udh|F+EcE<%BBFDJq3GA-b$|odt(Q?JObOUK;tmnl&~ovvVml>A?scbd$IP3vhCxtpkuMTH-8e#Wib0WD?78ZceDP( zvza5aFA#b)OK3ie{y8}tw0Kvv5TvwA0JI*!wAur;o+PzLaI{Zrbwi7_2}ZIgK()%_ zwGsrjF*L6wyJ}f0v}EP99U!)?im7bt16I4Xm-eZ-n?~0~w~T8}lv}wcTX1hHxtiNzoXbi2 zNuyQfx63EG!aAjOI;_HQl=69>0!n*$o2wgkwgfx71!tm}6T7YByYyF+d5d79TerHq zoV**P$7`s%3%c_JV7S|_%Zt3PtGuoIyT_Zk&wH<{i)+(+bTgWXz{|YX>%4Tsz1_R3 z-|M+j3Z?7*%Q?WSz30nZ(VM>M<+bL^Ec9!?PEe)(8=*)bzxq3^#apYCNGSqQ1o^8M z)5^c@yDIf7dZ^n11w5<{yaa@(1_ZajQE@%IHaZb}!Mj>38%(xc`#UYM04lt~EUd!s zs{|GNP#KKCK)}JN%DgR{!#d2uA?#f-Y)~^?Dexx147{lUvBOA=#0d<;B8#ezzrR4m4Byu%Uv!?lXW zvg5_JOQLU_$4Wd}X1vAVLS|}wsWPg^gsj7XD93aB$2>s99SpyP{Kzd#W{6y@;R49D zi>>|@3dx$h!v9sqeY~pgV#yO6t(m;ZrrceVtWiNMDpMB7W!Jx^9Lo!^T&b+ep}Yf( ze8X)j%d)JWwQS4o(#n^7xJ}T;yd2BFTvDjVOv!3z2VBHCkjqkR1jc;K$o$E@i*DXn zvZ<%DPc+N}3#Hb~%gId1tfw$;h<~(3XIA)RQF*m@JIdcG&f`qZ*xbL`%q<{U)Y{df6 z-Yy*6@jc7({oZ-K0(3?2X+n%*pr7+mY%c3|`GdPT@t~ly z6fB8JecmIU-jD5ZuzlKNPUe<<+h`8xecpb9{>XTq=Ta@=+L`A525#bw4%~&Vh7KCBTVY0o}`Ly(5bHKL(b~0&c%!D*o)5Sv@YDX ze(TU8ZG>&!g5K-y&7_5{=Yv?sqfNmmZR~qIqZewr$^OJb)#*9?+Rz@!;5+T2?nJcQ zE8>RN&%W(qo*K!!-`c9|WWaC3{>qze?z6nA3Ch-U?XT?a1@5lvvL5f|j$RgeqMq!o zx0df)pm6Wrf+&9JQ--eguEn_f%$O3w@f~21j zH1PkM^4F`t{BG6d-s@mU^59-@J)6uRAEd?(yE5-WmmB`F0RO@j3iQ3(*v(GLy-VxH z`S6gsZ3b&&<4e9uf1ufm?dl!!jSi<#-$_o-JT?3DZz}ZG%hnY?$b+t_Sr57CC9a3O z@*oWM{X6xUeZr1x+OB%`WBO{n%7||N_H6(4U|sa{Jokrftak57k7~rlwfDuW_!tcL z2=43$I`~n$^Y>X?m49(9|Kn4P)s!!zolm0e$Gp}`^?{DZDGjiNFRoaq_zssFo45cA)T=%!BTA@2LTuf#t4`=HOnBj0N`pZ9OB z{LByTy^r@$3Z}!)>{jmD@QUm}eEqu`q-4DP*Zv;&Urg{xFQeEGzF3<1SU#)OF9e+_ z$wMmsuND2>`}w=s@c9V=;7wZX#aVCO{RhMCcu2EE4;2AS^@U@3ekJk7bA9Lg3jq2a zHsOY70VI@(W6}A9K2Ousf#srQwW?;+`vr$9z;3AgZ336dv)KJEQst{wX?vfw;d_4n z7ZlO+B1&3g0`yB%?2t>byRyTRgd_V9L>oFJ+q?{QYn-CPn#2PYU1ilo#84f4 zZKdrat%5|IjIHhU%|x=~^(Ef9#md!9EoN^1vl-@eo{n>zOIF^BrsnpWt=#VJK90oB z&I%V-4@;L`e;={7wyHbVhR0uQ2iwnY{w055&Yp~Z{tSXB=ocjFE8R#2>{Z zQnV$nl*336BVq*U<08M1+!_k>NU7w?KuCZE!<2?4vxXc~5}cWnLm6noD(dWYvffP? zBY|=|Lx{r537?uu==l^;kXM;_9{s1WicO+5uwreabj;YLPlrGqLiTJ^wq{{{T_yD4 zO`~v$=@DCYjMKDz(dzB%SM5)`i)x}wS+{Vnuz=e>7A*Kk-l&iVFHR)4BT>beX(hEB zI5427e;!$Z3s=)9U$7rsktTXjlRYHFyYsmheiTB{4h9%Ba=b^M8PS z^|6~OFS`B~+Ao6w#k0@70|!({9|qxQPr(NX^l3sd5`1kz3!ykr!}B7{aKnT4^AN%R z0KBh65sOGqMH7$VD#R5H`p(7fFx+m&5#O-!#o=PiQAZk&>+!}Df#gg`3I|bgloN}C zsK_RFs7p#CVMNlrDQR48%L|{>E=e!_k;qCPNkLJm_-l$G0}4#Wt6}9Dvbh1F)@7y6iOjQQ_^fc z<FY>pRbqdyS( z}_}Ck-2h-X+k!{O!$0|9th+C!UKK zn5QATzx&0aaIK+de|`P)=YN0y`LAE%;3tCzAi!{RaY5GZ7rp;AuzwG9U<4ufIxg7H zAz3J(0n?_a0E&-y(wm?JMHoU7j?jS}ykGqECcl(%upMe03*dh-#m<+X=%kHyPl;+Po6F5btG zheTu|6}d=8Hqw!ggrxHzIY~-Z(vp|NWF|EkIx)7ycIZImhEs(dwWiEBOOJ4TUm%jvNFoiixViwbw$3$i_0T2NI06Rl2pX2}l diff --git a/utils/ogl/docs/sample.tex b/utils/ogl/docs/sample.tex deleted file mode 100644 index 4e0a437d39..0000000000 --- a/utils/ogl/docs/sample.tex +++ /dev/null @@ -1,87 +0,0 @@ -\chapter{OGLEdit: a sample OGL application}\label{ogledit}% -\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}% -\setfooter{\thepage}{}{}{}{}{\thepage} - -OGLEdit is a sample OGL application that allows the user to draw, edit, -save and load a few shapes. It should clarify aspects of OGL usage, and -can act as a template for similar applications. OGLEdit can be found in\rtfsp -{\tt samples/ogledit} in the OGL distribution. - -$$\image{10cm;0cm}{ogledit.eps}$$\par - -The wxWindows document/view model has been used in OGL, to reduce the amount of -housekeeping logic required to get it up and running. OGLEdit also provides -a demonstration of the Undo/Redo capability supported by the document/view classes, -and how a typical application might implement this feature. - -\section{OGLEdit files} - -OGLEdit comprises the following source files. - -\begin{itemize}\itemsep=0pt -\item doc.h, doc.cpp: MyDiagram, DiagramDocument, DiagramCommand, MyEvtHandler -classes related to diagram functionality and documents. -\item view.h, view.cpp: MyCanvas, DiagramView classes related to visualisation of -the diagram. -\item ogledit.h, ogledit.cpp: MyFrame, MyApp classes related to the overall application. -\item palette.h, palette.cpp: EditorToolPalette implementing the shape palette. -\end{itemize} - -\section{How OGLEdit works} - -OGLEdit defines a DiagramDocument class, each of instance of which holds a MyDiagram -member which itself contains the shapes. - -In order to implement specific mouse behaviour for shapes, a class MyEvtHandler is -defined which is `plugged into' each shape when it is created, instead of overriding each shape class -individually. This event handler class also holds a label string. - -The DiagramCommand class is the key to implementing Undo/Redo. Each instance of DiagramCommand -stores enough information about an operation (create, delete, change colour etc.) to allow -it to carry out (or undo) its command. In DiagramView::OnMenuCommand, when the user initiates the -command, a new DiagramCommand instance is created which is then sent to the document's -command processor (see wxWindows manual for more information about doc/view and command -processing). - -Apart from menu commands, another way commands are initiated is by the user left-clicking on -the canvas or right-dragging on a node. MyCanvas::OnLeftClick in view.cpp shows how -the appropriate wxClassInfo is passed to a DiagramCommand, to allow DiagramCommand::Do -to create a new shape given the wxClassInfo. - -The MyEvtHandler right-drag methods in doc.cpp implement drawing a line between -two shapes, detecting where the right mouse button was released and looking for a second -shape. Again, a new DiagramCommand instance is created and passed to the command -processor to carry out the command. - -DiagramCommand::Do and DiagramCommand::Undo embody much of the -interesting interaction with the OGL library. A complication of note -when implementing undo is the problem of deleting a node shape which has -one or more arcs attached to it. If you delete the node, the arc(s) -should be deleted too. But multiple arc deletion represents more information -that can be incorporated in the existing DiagramCommand scheme. OGLEdit -copes with this by treating each arc deletion as a separate command, and -sending Cut commands recursively, providing an undo path. Undoing such a -Cut will only undo one command at a time - not a one to one -correspondence with the original command - but it's a reasonable -compromise and preserves Do/Undo whilst keeping our DiagramCommand class -simple. - -\section{Possible enhancements} - -OGLEdit is very simplistic and does not employ the more advanced features -of OGL, such as: - -\begin{itemize}\itemsep=0pt -\item attachment points (arcs are drawn to particular points on a shape) -\item metafile and bitmaps shapes -\item divided rectangles -\item composite shapes, and constraints -\item creating labels in shape regions -\item arc labels (OGL has support for three movable labels per arc) -\item spline and multiple-segment line arcs -\item adding annotations to node and arc shapes -\item line-straightening (supported by OGL) and alignment (not supported directly by OGL) -\end{itemize} - -These could be added to OGLEdit, at the risk of making it a less -useful example for beginners. diff --git a/utils/ogl/docs/tex2rtf.ini b/utils/ogl/docs/tex2rtf.ini deleted file mode 100644 index a71be69313..0000000000 --- a/utils/ogl/docs/tex2rtf.ini +++ /dev/null @@ -1,26 +0,0 @@ -; Last change: JS 8 Sep 98 2:54 pm -runTwice = yes -titleFontSize = 12 -authorFontSize = 10 -chapterFontSize = 12 -sectionFontSize = 12 -subsectionFontSize = 12 -headerRule = yes -footerRule = yes -useHeadingStyles = yes -listItemIndent=40 -generateHPJ = no -htmlBrowseButtons = bitmap -winHelpVersion = 3 -winHelpContents = yes -winHelpTitle = "OGL 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/utils/ogl/docs/texhelp.sty b/utils/ogl/docs/texhelp.sty deleted file mode 100644 index af91bd531d..0000000000 --- a/utils/ogl/docs/texhelp.sty +++ /dev/null @@ -1,298 +0,0 @@ -% 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}} - -\addtolength{\textwidth}{1in} -\addtolength{\oddsidemargin}{-0.5in} -\addtolength{\topmargin}{-0.5in} -\addtolength{\textheight}{1in} -\sloppy - diff --git a/utils/ogl/docs/topics.tex b/utils/ogl/docs/topics.tex deleted file mode 100644 index ece8016fce..0000000000 --- a/utils/ogl/docs/topics.tex +++ /dev/null @@ -1,161 +0,0 @@ -\chapter{Topic overviews} -\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}% -\setfooter{\thepage}{}{}{}{}{\thepage} - -The following sections describe particular topics. - -\section{OGL overview}\label{ogloverview} - -\helpref{wxShapeCanvas}{wxshapecanvas}, derived from {\bf wxCanvas}, is the drawing area -for a number of \helpref{wxShape}{wxshape} instances. Everything drawn on a -wxShapeCanvas is derived from wxShape, which provides virtual -member functions for redrawing, creating and destroying -resize/selection `handles', movement and erasing behaviour, mouse -click behaviour, calculating the bounding box of the shape, linking -nodes with arcs, and so on. - -The way a client application copes with `damage' to the canvas is to -erase (white out) anything should no longer be displayed, redraw the shape, -and then redraw everything on the canvas to repair any damage. If quick edit -mode is on for the canvas, the complete should be omitted by OGL and the -application. - -Selection handles (called control points in the code) are implemented as -wxRectangleShapes. - -Events are passed to shapes by the canvas in a high-level form, for example {\bf OnLeftClick}, -{\bf OnBeginDragLeft}, {\bf OnDragLeft}, {\bf OnEndDragLeft}. The canvas decides -what is a click and what is a drag, whether it is on a shape or the canvas itself, -and (by interrogating the shape) which attachment point the click is associated with. - -In order to provide event-handling flexibility, each shapes has an `event handler' associated with it, -which by default is the shape itself (all shapes derive from wxShapeEvtHandler). -An application can modify the event-handling behaviour simply by plugging a new -event handler into the shape. This can avoid the need for multiple inheritance when -new properties and behaviour are required for a number of different shape classes: instead -of overriding each class, one new event handler class can be defined and used for all -existing shape classes. - -A range of shapes have been predefined in the library, including rectangles, ellipses, -polygons. A client application can derive from these shapes and/or derive entirely -new shapes from wxShape. - -Instances of a class called \helpref{wxDiagram}{wxdiagram} organise collections of -shapes, providing default file input and output behaviour. - -\section{wxDividedShape overview}\label{dividedshapeoverview} - -Classes: \helpref{wxDividedShape}{wxdividedshape} - -A wxDividedShape is a rectangle with a number of vertical divisions. Each -division may have its text formatted with independent characteristics, and -the size of each division relative to the whole image may be specified. - -Once a wxDividedShape has been created, the user may move the divisions with the -mouse. By pressing Ctrl while right-clicking, the region attributes can be edited. - -Here are examples of creating wxDividedShape objects: - -{\small -\begin{verbatim} - /* - * Divided rectangle with 3 regions - * - */ - - wxDividedShape *dividedRect = new wxDividedShape(50, 60); - - wxShapeRegion *region = new wxShapeRegion; - region->SetProportions(0.0, 0.25); - dividedRect->AddRegion(region); - - region = new wxShapeRegion; - region->SetProportions(0.0, 0.5); - dividedRect->AddRegion(region); - - region = new wxShapeRegion; - region->SetProportions(0.0, 0.25); - dividedRect->AddRegion(region); - - dividedRect->SetSize(50, 60); // Allow it to calculate region sizes - dividedRect->SetPen(wxBLACK_PEN); - dividedRect->SetBrush(wxWHITE_BRUSH); - dividedRect->Show(TRUE); - dividedRect->NameRegions(); - - /* - * Divided rectangle with 3 regions, rounded - * - */ - - wxDividedShape *dividedRect3 = new wxDividedShape(50, 60); - dividedRect3->SetCornerRadius(-0.4); - - region = new wxShapeRegion; - region->SetProportions(0.0, 0.25); - dividedRect3->AddRegion(region); - - region = new wxShapeRegion; - region->SetProportions(0.0, 0.5); - dividedRect3->AddRegion(region); - - region = new wxShapeRegion; - region->SetProportions(0.0, 0.25); - dividedRect3->AddRegion(region); - - dividedRect3->SetSize(50, 60); // Allow it to calculate region sizes - dividedRect3->SetPen(wxBLACK_PEN); - dividedRect3->SetBrush(wxWHITE_BRUSH); - dividedRect3->Show(TRUE); - dividedRect3->NameRegions(); -\end{verbatim} -} - -\section{wxCompositeShape overview}\label{compositeshapeoverview} - -Classes: \helpref{wxCompositeShape}{wxcompositeshape}, \helpref{wxOGLConstraint}{wxoglconstraint} - -The wxCompositeShape allows fairly complex shapes to be created, and maintains -a set of constraints which specify the layout and proportions of child shapes. - -Add child shapes to a wxCompositeShape using \helpref{AddChild}{wxcompositeshapeaddchild}, and -add constraints using \helpref{AddConstraint}{wxcompositeshapeaddconstraint}. - -After children and shapes have been added, call \helpref{Recompute}{wxcompositeshaperecompute} which -will return TRUE is the constraints could be satisfied, FALSE otherwise. If -constraints have been correctly and consistently specified, this call will succeed. - -If there is more than one child, constraints must be specified: OGL cannot calculate -the size and position of children otherwise. Don't assume that children will simply -move relative to the parent without the use of constraints. - -To specify a constraint, you need three things: - -\begin{enumerate}\itemsep=0pt -\item a constraint type, such as gyCONSTRAINT\_CENTRED\_VERTICALLY; -\item a reference shape, with respect to which other shapes are going to be positioned - the\rtfsp -{\it constraining} shape; -\item a list of one or more shapes to be constrained: the {\it constrained} shapes. -\end{enumerate} - -The constraining shape can be either the parent of the constrained shapes, or a sibling. The -constrained shapes must all be siblings of each other. - -For an exhaustive list and description of the available constraint types, see the \helpref{wxOGLConstraint constructor}{wxoglconstraintconstr}. -Note that most constraints operate in one dimension only (vertically or horizontally), so you will -usually need to specify constraints in pairs. - -You can set the spacing between constraining and constrained shapes by -calling \helpref{wxOGLConstraint::SetSpacing}{wxoglconstraintsetspacing}. - -Finally, a wxCompositeShape can have {\it divisions}, which are special child shapes of class -wxDivisionShape (not to be confused with wxDividedShape). The purpose of this is to allow -the composite to be divided into user-adjustable regions (divisions) into which other shapes -can be dropped dynamically, given suitable application code. Divisons allow the child -shapes to have an identity of their own - they can be manipulated independently of their container - -but to behave as if they are contained with the division, moving with the parent shape. -Divisions boundaries can themselves be moved using the mouse. - -To create an initial division, call \helpref{wxCompositeShape::MakeContainer}{wxcompositeshapemakecontainer}. -Make further divisions by calling \helpref{wxDivisionShape::Divide}{wxdivisionshapedivide}. - diff --git a/utils/ogl/docs/up.gif b/utils/ogl/docs/up.gif deleted file mode 100644 index 316d0d2a14b571bea2eb874efd04bfe509f53b34..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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<%PW1WPN=;5qEQ3zc?;o59U+Ka+r!5!mH1Gr)e_0X9zQo7Bn*m`tDP z>tSJ;fdXA9#W(4KsI?;JEJm}1)|8}VswC~|bu-BQ Vombvu=JhAub(#Nm-N`e*_yJ^>eVzaS diff --git a/utils/ogl/samples/ogledit/bitmaps/arrow.xpm b/utils/ogl/samples/ogledit/bitmaps/arrow.xpm deleted file mode 100644 index d3807cbf4e..0000000000 --- a/utils/ogl/samples/ogledit/bitmaps/arrow.xpm +++ /dev/null @@ -1,44 +0,0 @@ -/* XPM */ -static char *arrow_xpm[] = { -/* columns rows colors chars-per-pixel */ -"22 22 16 1", -" c Gray0", -". c #bf0000", -"X c #00bf00", -"o c #bfbf00", -"O c #0000bf", -"+ c #bf00bf", -"@ c #00bfbf", -"# c #c0c0c0", -"$ c #808080", -"% c Red", -"& c Green", -"* c Yellow", -"= c Blue", -"- c Magenta", -"; c Cyan", -": c Gray100", -/* pixels */ -"######################", -"######################", -"######################", -"######################", -"######################", -"####### ##############", -"####### #############", -"####### ############", -"####### ###########", -"####### ##########", -"####### #########", -"####### ########", -"####### #######", -"####### ##########", -"####### # ##########", -"####### ### #########", -"########### #########", -"############ ########", -"############ ########", -"######################", -"######################", -"######################" -}; diff --git a/utils/ogl/samples/ogledit/bitmaps/tool1.bmp b/utils/ogl/samples/ogledit/bitmaps/tool1.bmp deleted file mode 100644 index cb1760d2859cd5b32630cb6c294a6c913d4b28f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 382 zcmZ?rtz%>WgEAng0mNcZ%*en37UzJJQ409!#Op@kUh#ZHNo5<&TT>4iR1ivT=$yRS#8XFECq!-*mgr LV^3-JfBEkPyAH!9 diff --git a/utils/ogl/samples/ogledit/bitmaps/tool2.xpm b/utils/ogl/samples/ogledit/bitmaps/tool2.xpm deleted file mode 100644 index 612dbf01bb..0000000000 --- a/utils/ogl/samples/ogledit/bitmaps/tool2.xpm +++ /dev/null @@ -1,44 +0,0 @@ -/* XPM */ -static char *tool2_xpm[] = { -/* columns rows colors chars-per-pixel */ -"22 22 16 1", -" c Gray0", -". c #bf0000", -"X c #00bf00", -"o c #bfbf00", -"O c #0000bf", -"+ c #bf00bf", -"@ c #00bfbf", -"# c #c0c0c0", -"$ c #808080", -"% c Red", -"& c Green", -"* c Yellow", -"= c Blue", -"- c Magenta", -"; c Cyan", -": c Gray100", -/* pixels */ -"######################", -"######################", -"#### #####", -"### ::::::::::::: ####", -"## ::::::::::::::: ###", -"# ::::::::::::::::: ##", -"# ::::::::::::::::: ##", -"# ::::::::::::::::: ##", -"# ::::::::::::::::: ##", -"# ::::::::::::::::: ##", -"# ::::::::::::::::: ##", -"# ::::::::::::::::: ##", -"# ::::::::::::::::: ##", -"# ::::::::::::::::: ##", -"# ::::::::::::::::: ##", -"# ::::::::::::::::: ##", -"## ::::::::::::::: ###", -"### ::::::::::::: ####", -"#### #####", -"######################", -"######################", -"######################" -}; diff --git a/utils/ogl/samples/ogledit/bitmaps/tool3.bmp b/utils/ogl/samples/ogledit/bitmaps/tool3.bmp deleted file mode 100644 index 6a49f459c3034a9d633c00c876720d1d6ec01a59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 382 zcmbtP$qj%o3^NiE{NTk5%)y^sc#$9KX6;C9Q0!1~{E$dv*LBpindYs6$4VZFp`b$T zep~7~^aWl(gc32H8<`R*C4>-I$ezeqir|t(vOE52cJ>w|bn4wu*h0nFrR6FbL$Ou( Uq@Q8CoZa7Pu)am`?}1?Jt#_EJF0 - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include -#endif - -#if !wxUSE_DOC_VIEW_ARCHITECTURE -#error You must set wxUSE_DOC_VIEW_ARCHITECTURE to 1 in wx_setup.h! -#endif - -#include "ogledit.h" -#include "doc.h" -#include -#include "view.h" - -IMPLEMENT_DYNAMIC_CLASS(DiagramDocument, wxDocument) - -DiagramDocument::DiagramDocument(void) -{ -} - -DiagramDocument::~DiagramDocument(void) -{ -} - -bool DiagramDocument::OnCloseDocument(void) -{ - diagram.DeleteAllShapes(); - return TRUE; -} - -ostream& DiagramDocument::SaveObject(ostream& stream) -{ - wxDocument::SaveObject(stream); - - char buf[400]; - (void) wxGetTempFileName("diag", buf); - - diagram.SaveFile(buf); - wxTransferFileToStream(buf, stream); - - wxRemoveFile(buf); - - return stream; -} - -istream& DiagramDocument::LoadObject(istream& stream) -{ - wxDocument::LoadObject(stream); - - char buf[400]; - (void) wxGetTempFileName("diag", buf); - - wxTransferStreamToFile(stream, buf); - - diagram.DeleteAllShapes(); - diagram.LoadFile(buf); - wxRemoveFile(buf); - - return stream; -} - -/* - * Implementation of drawing command - */ - -DiagramCommand::DiagramCommand(char *name, int command, DiagramDocument *ddoc, wxClassInfo *info, double xx, double yy, - bool sel, wxShape *theShape, wxShape *fs, wxShape *ts): - wxCommand(TRUE, name) -{ - doc = ddoc; - cmd = command; - shape = theShape; - fromShape = fs; - toShape = ts; - shapeInfo = info; - shapeBrush = NULL; - shapePen = NULL; - x = xx; - y = yy; - selected = sel; - deleteShape = FALSE; -} - -DiagramCommand::DiagramCommand(char *name, int command, DiagramDocument *ddoc, wxBrush *backgroundColour, wxShape *theShape): - wxCommand(TRUE, name) -{ - doc = ddoc; - cmd = command; - shape = theShape; - fromShape = NULL; - toShape = NULL; - shapeInfo = NULL; - x = 0.0; - y = 0.0; - selected = FALSE; - deleteShape = FALSE; - shapeBrush = backgroundColour; - shapePen = NULL; -} - -DiagramCommand::DiagramCommand(char *name, int command, DiagramDocument *ddoc, const wxString& lab, wxShape *theShape): - wxCommand(TRUE, name) -{ - doc = ddoc; - cmd = command; - shape = theShape; - fromShape = NULL; - toShape = NULL; - shapeInfo = NULL; - x = 0.0; - y = 0.0; - selected = FALSE; - deleteShape = FALSE; - shapeBrush = NULL; - shapePen = NULL; - shapeLabel = lab; -} - -DiagramCommand::~DiagramCommand(void) -{ - if (shape && deleteShape) - { - shape->SetCanvas(NULL); - delete shape; - } -} - -bool DiagramCommand::Do(void) -{ - switch (cmd) - { - case OGLEDIT_CUT: - { - if (shape) - { - deleteShape = TRUE; - - shape->Select(FALSE); - - // Generate commands to explicitly remove each connected line. - RemoveLines(shape); - - doc->GetDiagram()->RemoveShape(shape); - if (shape->IsKindOf(CLASSINFO(wxLineShape))) - { - wxLineShape *lineShape = (wxLineShape *)shape; - fromShape = lineShape->GetFrom(); - toShape = lineShape->GetTo(); - } - shape->Unlink(); - - doc->Modify(TRUE); - doc->UpdateAllViews(); - } - - break; - } - case OGLEDIT_ADD_SHAPE: - { - wxShape *theShape = NULL; - if (shape) - theShape = shape; // Saved from undoing the shape - else - { - theShape = (wxShape *)shapeInfo->CreateObject(); - theShape->AssignNewIds(); - theShape->SetEventHandler(new MyEvtHandler(theShape, theShape, wxString(""))); - theShape->SetCentreResize(FALSE); - theShape->SetPen(wxBLACK_PEN); - theShape->SetBrush(wxCYAN_BRUSH); - - theShape->SetSize(60, 60); - } - doc->GetDiagram()->AddShape(theShape); - theShape->Show(TRUE); - - wxClientDC dc(theShape->GetCanvas()); - theShape->GetCanvas()->PrepareDC(dc); - - theShape->Move(dc, x, y); - - shape = theShape; - deleteShape = FALSE; - - doc->Modify(TRUE); - doc->UpdateAllViews(); - break; - } - case OGLEDIT_ADD_LINE: - { - wxShape *theShape = NULL; - if (shape) - theShape = shape; // Saved from undoing the line - else - { - theShape = (wxShape *)shapeInfo->CreateObject(); - theShape->AssignNewIds(); - theShape->SetEventHandler(new MyEvtHandler(theShape, theShape, wxString(""))); - theShape->SetPen(wxBLACK_PEN); - theShape->SetBrush(wxRED_BRUSH); - - wxLineShape *lineShape = (wxLineShape *)theShape; - - // Yes, you can have more than 2 control points, in which case - // it becomes a multi-segment line. - lineShape->MakeLineControlPoints(2); - lineShape->AddArrow(ARROW_ARROW, ARROW_POSITION_END, 10.0, 0.0, "Normal arrowhead"); - } - - doc->GetDiagram()->AddShape(theShape); - - fromShape->AddLine((wxLineShape *)theShape, toShape); - - theShape->Show(TRUE); - - wxClientDC dc(theShape->GetCanvas()); - theShape->GetCanvas()->PrepareDC(dc); - - // It won't get drawn properly unless you move both - // connected images - fromShape->Move(dc, fromShape->GetX(), fromShape->GetY()); - toShape->Move(dc, toShape->GetX(), toShape->GetY()); - - shape = theShape; - deleteShape = FALSE; - - doc->Modify(TRUE); - doc->UpdateAllViews(); - break; - } - case OGLEDIT_CHANGE_BACKGROUND_COLOUR: - { - if (shape) - { - wxClientDC dc(shape->GetCanvas()); - shape->GetCanvas()->PrepareDC(dc); - - wxBrush *oldBrush = shape->GetBrush(); - shape->SetBrush(shapeBrush); - shapeBrush = oldBrush; - shape->Draw(dc); - - doc->Modify(TRUE); - doc->UpdateAllViews(); - } - - break; - } - case OGLEDIT_EDIT_LABEL: - { - if (shape) - { - MyEvtHandler *myHandler = (MyEvtHandler *)shape->GetEventHandler(); - wxString oldLabel(myHandler->label); - myHandler->label = shapeLabel; - shapeLabel = oldLabel; - - wxClientDC dc(shape->GetCanvas()); - shape->GetCanvas()->PrepareDC(dc); - - shape->FormatText(dc, (char*) (const char*) myHandler->label); - shape->Draw(dc); - - doc->Modify(TRUE); - doc->UpdateAllViews(); - } - - break; - } - } - return TRUE; -} - -bool DiagramCommand::Undo(void) -{ - switch (cmd) - { - case OGLEDIT_CUT: - { - if (shape) - { - doc->GetDiagram()->AddShape(shape); - shape->Show(TRUE); - - if (shape->IsKindOf(CLASSINFO(wxLineShape))) - { - wxLineShape *lineShape = (wxLineShape *)shape; - - fromShape->AddLine(lineShape, toShape); - } - if (selected) - shape->Select(TRUE); - - deleteShape = FALSE; - } - doc->Modify(TRUE); - doc->UpdateAllViews(); - break; - } - case OGLEDIT_ADD_SHAPE: - case OGLEDIT_ADD_LINE: - { - if (shape) - { - wxClientDC dc(shape->GetCanvas()); - shape->GetCanvas()->PrepareDC(dc); - - shape->Select(FALSE, &dc); - doc->GetDiagram()->RemoveShape(shape); - shape->Unlink(); - deleteShape = TRUE; - } - doc->Modify(TRUE); - doc->UpdateAllViews(); - break; - } - case OGLEDIT_CHANGE_BACKGROUND_COLOUR: - { - if (shape) - { - wxClientDC dc(shape->GetCanvas()); - shape->GetCanvas()->PrepareDC(dc); - - wxBrush *oldBrush = shape->GetBrush(); - shape->SetBrush(shapeBrush); - shapeBrush = oldBrush; - shape->Draw(dc); - - doc->Modify(TRUE); - doc->UpdateAllViews(); - } - break; - } - case OGLEDIT_EDIT_LABEL: - { - if (shape) - { - MyEvtHandler *myHandler = (MyEvtHandler *)shape->GetEventHandler(); - wxString oldLabel(myHandler->label); - myHandler->label = shapeLabel; - shapeLabel = oldLabel; - - wxClientDC dc(shape->GetCanvas()); - shape->GetCanvas()->PrepareDC(dc); - - shape->FormatText(dc, (char*) (const char*) myHandler->label); - shape->Draw(dc); - - doc->Modify(TRUE); - doc->UpdateAllViews(); - } - - break; - } - } - return TRUE; -} - -// Remove each individual line connected to a shape by sending a command. -void DiagramCommand::RemoveLines(wxShape *shape) -{ - wxNode *node = shape->GetLines().First(); - while (node) - { - wxLineShape *line = (wxLineShape *)node->Data(); - doc->GetCommandProcessor()->Submit(new DiagramCommand("Cut", OGLEDIT_CUT, doc, NULL, 0.0, 0.0, line->Selected(), line)); - - node = shape->GetLines().First(); - } -} - -/* - * MyEvtHandler: an event handler class for all shapes - */ - -void MyEvtHandler::OnLeftClick(double x, double y, int keys, int attachment) -{ - wxClientDC dc(GetShape()->GetCanvas()); - GetShape()->GetCanvas()->PrepareDC(dc); - - if (keys == 0) - { - // Selection is a concept the library knows about - if (GetShape()->Selected()) - { - GetShape()->Select(FALSE, &dc); - GetShape()->GetCanvas()->Redraw(dc); // Redraw because bits of objects will be are missing - } - else - { - // Ensure no other shape is selected, to simplify Undo/Redo code - bool redraw = FALSE; - wxNode *node = GetShape()->GetCanvas()->GetDiagram()->GetShapeList()->First(); - while (node) - { - wxShape *eachShape = (wxShape *)node->Data(); - if (eachShape->GetParent() == NULL) - { - if (eachShape->Selected()) - { - eachShape->Select(FALSE, &dc); - redraw = TRUE; - } - } - node = node->Next(); - } - GetShape()->Select(TRUE, &dc); - if (redraw) - GetShape()->GetCanvas()->Redraw(dc); - } - } - else if (keys & KEY_CTRL) - { - // Do something for CONTROL - } - else - { - wxGetApp().frame->SetStatusText(label); - } -} - -/* - * Implement connection of two shapes by right-dragging between them. - */ - -void MyEvtHandler::OnBeginDragRight(double x, double y, int keys, int attachment) -{ - // Force attachment to be zero for now. Eventually we can deal with - // the actual attachment point, e.g. a rectangle side if attachment mode is on. - attachment = 0; - - wxClientDC dc(GetShape()->GetCanvas()); - GetShape()->GetCanvas()->PrepareDC(dc); - - wxPen dottedPen(wxColour(0, 0, 0), 1, wxDOT); - dc.SetLogicalFunction(wxXOR); - dc.SetPen(dottedPen); - double xp, yp; - GetShape()->GetAttachmentPosition(attachment, &xp, &yp); - dc.DrawLine((long) xp, (long) yp, (long) x, (long) y); - GetShape()->GetCanvas()->CaptureMouse(); -} - -void MyEvtHandler::OnDragRight(bool draw, double x, double y, int keys, int attachment) -{ - // Force attachment to be zero for now - attachment = 0; - - wxClientDC dc(GetShape()->GetCanvas()); - GetShape()->GetCanvas()->PrepareDC(dc); - - wxPen dottedPen(wxColour(0, 0, 0), 1, wxDOT); - dc.SetLogicalFunction(wxXOR); - dc.SetPen(dottedPen); - double xp, yp; - GetShape()->GetAttachmentPosition(attachment, &xp, &yp); - dc.DrawLine((long) xp, (long) yp, (long) x, (long) y); -} - -void MyEvtHandler::OnEndDragRight(double x, double y, int keys, int attachment) -{ - GetShape()->GetCanvas()->ReleaseMouse(); - MyCanvas *canvas = (MyCanvas *)GetShape()->GetCanvas(); - - // Check if we're on an object - int new_attachment; - wxShape *otherShape = canvas->FindFirstSensitiveShape(x, y, &new_attachment, OP_DRAG_RIGHT); - - if (otherShape && !otherShape->IsKindOf(CLASSINFO(wxLineShape))) - { - canvas->view->GetDocument()->GetCommandProcessor()->Submit( - new DiagramCommand("wxLineShape", OGLEDIT_ADD_LINE, (DiagramDocument *)canvas->view->GetDocument(), CLASSINFO(wxLineShape), - 0.0, 0.0, FALSE, NULL, GetShape(), otherShape)); - } -} - -void MyEvtHandler::OnEndSize(double x, double y) -{ - wxClientDC dc(GetShape()->GetCanvas()); - GetShape()->GetCanvas()->PrepareDC(dc); - - GetShape()->FormatText(dc, (char*) (const char*) label); -} - -/* - * Diagram - */ - -bool MyDiagram::OnShapeSave(wxExprDatabase& db, wxShape& shape, wxExpr& expr) -{ - wxDiagram::OnShapeSave(db, shape, expr); - MyEvtHandler *handler = (MyEvtHandler *)shape.GetEventHandler(); - expr.AddAttributeValueString("label", handler->label); - return TRUE; -} - -bool MyDiagram::OnShapeLoad(wxExprDatabase& db, wxShape& shape, wxExpr& expr) -{ - wxDiagram::OnShapeLoad(db, shape, expr); - char *label = NULL; - expr.AssignAttributeValue("label", &label); - MyEvtHandler *handler = new MyEvtHandler(&shape, &shape, wxString(label)); - shape.SetEventHandler(handler); - - if (label) - delete[] label; - return TRUE; -} - -/* - * New shapes - */ - -IMPLEMENT_DYNAMIC_CLASS(wxRoundedRectangleShape, wxRectangleShape) - -wxRoundedRectangleShape::wxRoundedRectangleShape(double w, double h): - wxRectangleShape(w, h) -{ - // 0.3 of the smaller rectangle dimension - SetCornerRadius((double) -0.3); -} - -IMPLEMENT_DYNAMIC_CLASS(wxDiamondShape, wxPolygonShape) - -wxDiamondShape::wxDiamondShape(double w, double h): - wxPolygonShape() -{ - // wxPolygonShape::SetSize relies on the shape having non-zero - // size initially. - if (w == 0.0) - w = 60.0; - if (h == 0.0) - h = 60.0; - - wxList *thePoints = new wxList; - wxRealPoint *point = new wxRealPoint(0.0, (-h/2.0)); - thePoints->Append((wxObject*) point); - - point = new wxRealPoint((w/2.0), 0.0); - thePoints->Append((wxObject*) point); - - point = new wxRealPoint(0.0, (h/2.0)); - thePoints->Append((wxObject*) point); - - point = new wxRealPoint((-w/2.0), 0.0); - thePoints->Append((wxObject*) point); - - Create(thePoints); -} diff --git a/utils/ogl/samples/ogledit/doc.h b/utils/ogl/samples/ogledit/doc.h deleted file mode 100644 index 968fad13ac..0000000000 --- a/utils/ogl/samples/ogledit/doc.h +++ /dev/null @@ -1,172 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: doc.h -// Purpose: Document classes -// Author: Julian Smart -// Modified by: -// Created: 12/07/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _OGLSAMPLE_DOC_H_ -#define _OGLSAMPLE_DOC_H_ - -#ifdef __GNUG__ -// #pragma interface -#endif - -#include -#include -#include - -#include "ogl.h" - -/* - * Override a few members for this application - */ - -class MyDiagram: public wxDiagram -{ - public: - MyDiagram(void) {} - bool OnShapeSave(wxExprDatabase& db, wxShape& shape, wxExpr& expr); - bool OnShapeLoad(wxExprDatabase& db, wxShape& shape, wxExpr& expr); -}; - -/* - * A few new shape classes so we have a 1:1 mapping - * between palette symbol and unique class - */ - -class wxRoundedRectangleShape: public wxRectangleShape -{ - DECLARE_DYNAMIC_CLASS(wxRoundedRectangleShape) - private: - public: - wxRoundedRectangleShape(double w = 0.0, double h = 0.0); -}; - -class wxDiamondShape: public wxPolygonShape -{ - DECLARE_DYNAMIC_CLASS(wxDiamondShape) - private: - public: - wxDiamondShape(double w = 0.0, double h = 0.0); -}; - -/* - * All shape event behaviour is routed through this handler, so we don't - * have to derive from each shape class. We plug this in to each shape. - */ - -class MyEvtHandler: public wxShapeEvtHandler -{ - public: - wxString label; - MyEvtHandler(wxShapeEvtHandler *prev = NULL, wxShape *shape = NULL, const wxString& lab = ""):wxShapeEvtHandler(prev, shape) - { - label = lab; - } - ~MyEvtHandler(void) - { - } - void OnLeftClick(double x, double y, int keys = 0, int attachment = 0); - void OnBeginDragRight(double x, double y, int keys = 0, int attachment = 0); - void OnDragRight(bool draw, double x, double y, int keys = 0, int attachment = 0); - void OnEndDragRight(double x, double y, int keys = 0, int attachment = 0); - void OnEndSize(double x, double y); -}; - -/* - * A diagram document, which contains a diagram. - */ - -class DiagramDocument: public wxDocument -{ - DECLARE_DYNAMIC_CLASS(DiagramDocument) - private: - public: - MyDiagram diagram; - - DiagramDocument(void); - ~DiagramDocument(void); - - ostream& SaveObject(ostream& stream); - istream& LoadObject(istream& stream); - - inline wxDiagram *GetDiagram() { return &diagram; } - - bool OnCloseDocument(void); -}; - -/* - * Most user interface commands are routed through this, to give us the - * Undo/Redo mechanism. If you add more commands, such as changing the shape colour, - * you will need to add members to 'remember' what the user applied (for 'Do') and what the - * previous state was (for 'Undo'). - * You can have one member for each property to be changed. Assume we also have - * a pointer member wxShape *shape, which is set to the shape being changed. - * Let's assume we're changing the shape colour. Our member for this is shapeColour. - * - * - In 'Do': - * o Set a temporary variable 'temp' to the current colour for 'shape'. - * o Change the colour to the new colour. - * o Set shapeColour to the _old_ colour, 'temp'. - * - In 'Undo': - * o Set a temporary variable 'temp' to the current colour for 'shape'. - * o Change the colour to shapeColour (the old colour). - * o Set shapeColour to 'temp'. - * - * So, as long as we have a pointer to the shape being changed, - * we only need one member variable for each property. - * - * PROBLEM: when an Add shape command is redone, the 'shape' pointer changes. - * Assume, as here, that we keep a pointer to the old shape so we reuse it - * when we recreate. - */ - -class DiagramCommand: public wxCommand -{ - protected: - DiagramDocument *doc; - int cmd; - wxShape *shape; // Pointer to the shape we're acting on - wxShape *fromShape; - wxShape *toShape; - wxClassInfo *shapeInfo; - double x; - double y; - bool selected; - bool deleteShape; - - // Storage for property commands - wxBrush *shapeBrush; - wxPen *shapePen; - wxString shapeLabel; - public: - // Multi-purpose constructor for creating, deleting shapes - DiagramCommand(char *name, int cmd, DiagramDocument *ddoc, wxClassInfo *shapeInfo = NULL, - double x = 0.0, double y = 0.0, bool sel = FALSE, wxShape *theShape = NULL, wxShape *fs = NULL, wxShape *ts = NULL); - - // Property-changing command constructors - DiagramCommand(char *name, int cmd, DiagramDocument *ddoc, wxBrush *backgroundColour, wxShape *theShape); - DiagramCommand(char *name, int cmd, DiagramDocument *ddoc, const wxString& lab, wxShape *theShape); - - ~DiagramCommand(void); - - bool Do(void); - bool Undo(void); - - inline void SetShape(wxShape *s) { shape = s; } - inline wxShape *GetShape(void) { return shape; } - inline wxShape *GetFromShape(void) { return fromShape; } - inline wxShape *GetToShape(void) { return toShape; } - inline wxClassInfo *GetShapeInfo(void) { return shapeInfo; } - inline bool GetSelected(void) { return selected; } - - void RemoveLines(wxShape *shape); -}; - -#endif - // _OGLSAMPLE_DOC_H_ diff --git a/utils/ogl/samples/ogledit/makefile.b32 b/utils/ogl/samples/ogledit/makefile.b32 deleted file mode 100644 index fda48cda63..0000000000 --- a/utils/ogl/samples/ogledit/makefile.b32 +++ /dev/null @@ -1,88 +0,0 @@ -# -# File: makefile.bcc -# Author: Julian Smart -# Created: 1996 -# Updated: -# Copyright: (c) 1996 -# -# "%W% %G%" -# -# Makefile : Builds OGL example for BC++, 32-bit. - -!if "$(BCCDIR)" == "" -!error You must define the BCCDIR variable in autoexec.bat, e.g. BCCDIR=d:\bc4 -!endif - -!if "$(WXWIN)" == "" -!error You must define the WXWIN variable in autoexec.bat, e.g. WXWIN=c:\wx -!endif - -!ifndef FINAL -FINAL=0 -!endif - -WXDIR = $(WXWIN) -!include $(WXDIR)\src\makeb32.env - -THISDIR = $(WXDIR)\utils\ogl\samples\ogledit - -OGLDIR = ..\.. # $(WXDIR)\utils\ogl # Command line too long! -OGLINC = $(OGLDIR)\src -OGLLIB = $(WXDIR)\lib\ogl.lib - -WXLIB = $(WXDIR)\lib\wx32.lib -LIBS=$(WXLIB) $(OGLLIB) cw32 import32 ole2w32 -INC=/I$(OGLINC) -CFG=$(WXDIR)\src\wxwin32.cfg - -!if "$(FINAL)" == "0" -LINKFLAGS=/v /Tpe /L$(WXLIBDIR);$(BCCDIR)\lib -OPT = -Od -DEBUG_FLAGS= -v -DDEBUG=$(DEBUG) -!else -LINKFLAGS=/Tpe /L$(WXLIBDIR);$(BCCDIR)\lib -OPT = -O2 -DEBUG_FLAGS = -DDEBUG=$(DEBUG) -!endif - -CPPFLAGS=$(DEBUG_FLAGS) $(OPT) @$(CFG) - -OBJECTS = ogledit.obj doc.obj view.obj palette.obj - -all: ogl ogledit.exe - -ogl: - cd $(OGLDIR)\src - make -f makefile.b32 - cd $(THISDIR) - -ogledit.exe: $(WXLIB) $(OBJECTS) ogledit.def ogledit.res - tlink32 $(LINKFLAGS) @&&! -c0w32.obj $(OBJECTS) -ogledit -nul -$(LIBS) -ogledit.def -ogledit.res -! - -.$(SRCSUFF).obj: - bcc32 $(CPPFLAGS) $(INC) -c {$< } - -ogledit.obj: ogledit.$(SRCSUFF) - -doc.obj: doc.$(SRCSUFF) - -view.obj: view.$(SRCSUFF) - -palette.obj: palette.$(SRCSUFF) - -ogledit.res : ogledit.rc $(WXDIR)\include\msw\wx.rc - brc32 -r /i$(BCCDIR)\include /i$(WXDIR)\include\msw /i$(WXDIR)\contrib\fafa ogledit - -clean: - -erase *.obj - -erase *.exe - -erase *.res - -erase *.map - -erase *.rws diff --git a/utils/ogl/samples/ogledit/makefile.bcc b/utils/ogl/samples/ogledit/makefile.bcc deleted file mode 100644 index 0b94f0ab24..0000000000 --- a/utils/ogl/samples/ogledit/makefile.bcc +++ /dev/null @@ -1,87 +0,0 @@ -# -# File: makefile.bcc -# Author: Julian Smart -# Created: 1996 -# Updated: -# Copyright: (c) 1996 -# -# "%W% %G%" -# -# Makefile : Builds OGL example for BC++, 16-bit. - -!if "$(BCCDIR)" == "" -!error You must define the BCCDIR variable in autoexec.bat, e.g. BCCDIR=d:\bc4 -!endif - -!if "$(WXWIN)" == "" -!error You must define the WXWIN variable in autoexec.bat, e.g. WXWIN=c:\wx -!endif - -!ifndef FINAL -FINAL=0 -!endif - -WXDIR = $(WXWIN) -!include $(WXDIR)\src\makebcc.env - -THISDIR = $(WXDIR)\utils\ogl\samples\ogledit - -OGLDIR = $(WXDIR)\utils\ogl -OGLINC = $(OGLDIR)\src -OGLLIB = $(OGLDIR)\lib\ogl.lib - -WXLIB = $(WXDIR)\lib\wx.lib -LIBS=$(WXLIB) $(OGLLIB) mathwl cwl import -INC=/I$(OGLINC) -CFG=$(WXDIR)\src\wxwin.cfg - -!if "$(FINAL)" == "0" -LINKFLAGS=/v/Vt /Twe /L$(WXDIR)\lib;$(BCCDIR)\lib -OPT = -Od -DEBUG_FLAGS= -v -!else -LINKFLAGS=/Twe /L$(WXDIR)\lib;$(BCCDIR)\lib -OPT = -O2 -DEBUG_FLAGS = -!endif -CPPFLAGS=$(DEBUG_FLAGS) $(OPT) @$(CFG) - -OBJECTS = ogledit.obj doc.obj view.obj palette.obj - -all: ogl ogledit.exe - -ogl: - cd $(OGLDIR)\src - make -f makefile.bcc - cd $(THISDIR) - -ogledit.exe: $(WXLIB) $(OBJECTS) ogledit.def ogledit.res - tlink $(LINKFLAGS) @&&! -c0wl.obj $(OBJECTS) -ogledit -nul -$(LIBS) -ogledit.def -! - rc -30 -K ogledit.res - -.$(SRCSUFF).obj: - bcc $(CPPFLAGS) $(INC) -c {$< } - -ogledit.obj: ogledit.$(SRCSUFF) - -doc.obj: doc.$(SRCSUFF) - -view.obj: view.$(SRCSUFF) - -palette.obj: palette.$(SRCSUFF) - -ogledit.res : ogledit.rc $(WXDIR)\include\wx\msw\wx.rc - rc -r /i$(BCCDIR)\include /i$(WXDIR)\include ogledit - -clean: - -erase *.obj - -erase *.exe - -erase *.res - -erase *.map - -erase *.rws diff --git a/utils/ogl/samples/ogledit/makefile.dos b/utils/ogl/samples/ogledit/makefile.dos deleted file mode 100644 index 34eb326437..0000000000 --- a/utils/ogl/samples/ogledit/makefile.dos +++ /dev/null @@ -1,103 +0,0 @@ -# -# File: makefile.dos -# Author: Julian Smart -# Created: 1995 -# Updated: -# Copyright: (c) 1995, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile : Builds OGLEdit example (MSVC++ 1.5). -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -WXDIR = $(WXWIN) - -!include $(WXDIR)\src\makemsc.env - -THISDIR = $(WXDIR)\utils\ogl\samples\ogledit -WXLIB = $(WXDIR)\lib\wx.lib - -OGLDIR = $(WXDIR)\utils\ogl -OGLINC = $(OGLDIR)\src -OGLLIB = $(OGLDIR)\lib\ogl.lib - -LIBS=$(WXLIB) $(OGLLIB) oldnames libw llibcew commdlg shell ddeml - -EXTRAFLAGS=/I$(OGLINC) - -OBJECTS = ogledit.obj doc.obj view.obj palette.obj - -all: ogledit.exe - -wx: - cd $(WXDIR)\src\msw - nmake -f makefile.dos - cd $(THISDIR) - -wxclean: - cd $(WXDIR)\src\msw - nmake -f makefile.dos clean - cd $(THISDIR) - -ogl: - cd $(OGLDIR)\src - nmake -f makefile.dos FINAL=$(FINAL) - cd $(THISDIR) - -prologio: - cd $(PROLOGDIR)\src - nmake -f makefile.dos FINAL=$(FINAL) - cd $(THISDIR) - -ogledit.exe: $(WXDIR)\src\msw\dummy.obj $(WXLIB) $(OBJECTS) $(OGLLIB) ogledit.def ogledit.res - link $(LINKFLAGS) @<< -$(WXDIR)\src\msw\dummy.obj $(OBJECTS), -ogledit, -NUL, -$(LIBS), -ogledit.def -; -<< - rc -30 -K ogledit.res - -ogledit.obj: ogledit.h ogledit.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -view.obj: view.h view.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -doc.obj: doc.h doc.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -palette.obj: view.h doc.h ogledit.h palette.$(SRCSUFF) $(DUMMYOBJ) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -ogledit.res : ogledit.rc $(WXDIR)\include\msw\wx.rc - rc -r /dFAFA_LIB /i$(WXDIR)\contrib\fafa /i$(WXDIR)\include\msw ogledit - -clean: - -erase *.obj - -erase *.exe - -erase *.res - -erase *.map - -erase *.sbr - -erase *.pdb - -cleanogl: - cd $(OGLDIR)\src - nmake -f makefile.dos clean - cd $(THISDIR) - -cleanall: - cd $(OGLDIR)\src - nmake -f makefile.dos clean - cd $(THISDIR) \ No newline at end of file diff --git a/utils/ogl/samples/ogledit/makefile.sc b/utils/ogl/samples/ogledit/makefile.sc deleted file mode 100644 index 03da92bcd0..0000000000 --- a/utils/ogl/samples/ogledit/makefile.sc +++ /dev/null @@ -1,33 +0,0 @@ -# Symantec C++ makefile for docview example -# NOTE that peripheral libraries are now dealt in main wxWindows makefile. - -WXDIR = $(WXWIN) -include $(WXDIR)\src\makesc.env - -WXLIB = $(WXDIR)\lib\wx.lib -INCDIR = $(WXDIR)\include -MSWINC = $(INCDIR)\msw -BASEINC = $(INCDIR)\base - -INCLUDE=$(BASEINC);$(MSWINC) - -LIBS=$(WXLIB) libw.lib commdlg.lib shell.lib - -OBJECTS=docview.obj view.obj doc.obj - -.$(SRCSUFF).obj: - *$(CC) -c $(CFLAGS) -I$(INCLUDE) $< - -.rc.res: - *$(RC) -r -I$(INCLUDE) $< - -docview.exe: $(OBJECTS) docview.def docview.res - *$(CC) $(LDFLAGS) -o$@ $(OBJECTS) docview.def $(LIBS) - *$(RC) -k docview.res - -clean: - -del *.obj - -del *.exe - -del *.res - -del *.map - -del *.rws diff --git a/utils/ogl/samples/ogledit/makefile.unx b/utils/ogl/samples/ogledit/makefile.unx deleted file mode 100644 index 0038ddc0b4..0000000000 --- a/utils/ogl/samples/ogledit/makefile.unx +++ /dev/null @@ -1,20 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1998 -# Updated: -# Copyright: (c) 1998 Julian Smart -# -# "%W% %G%" -# -# Makefile for OGLEdit example (UNIX). - -PROGRAM=ogledit - -OBJECTS=$(PROGRAM).o doc.o view.o palette.o - -EXTRACPPFLAGS=-I$(WXDIR)/utils/ogl/src -EXTRALDLIBS=-logl$(GUISUFFIX) - -include ../../../../src/makeprog.env - diff --git a/utils/ogl/samples/ogledit/makefile.vc b/utils/ogl/samples/ogledit/makefile.vc deleted file mode 100644 index 37336c627a..0000000000 --- a/utils/ogl/samples/ogledit/makefile.vc +++ /dev/null @@ -1,95 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile : Builds docview example (MS VC++). -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -!include $(WXDIR)\src\makevc.env - -THISDIR = $(WXDIR)\utils\ogl\samples\ogledit - -OGLDIR = $(WXDIR)\utils\ogl -OGLINC = $(OGLDIR)\src -OGLLIB = $(WXDIR)\lib\ogl.lib - -PROGRAM=ogledit - -EXTRALIBS=$(OGLLIB) -EXTRAINC=/I$(OGLINC) - -OBJECTS = $(PROGRAM).obj doc.obj view.obj palette.obj - -$(PROGRAM): $(PROGRAM).exe - -all: $(PROGRAM).exe - -wx: - cd $(WXDIR)\src\msw - nmake -f makefile.vc FINAL=$(FINAL) - cd $(THISDIR) - -wxclean: - cd $(WXDIR)\src\msw - nmake -f makefile.vc clean - cd $(THISDIR) - -ogl: - cd $(OGLDIR)\src - nmake -f makefile.vc FINAL=$(FINAL) - cd $(THISDIR) - -$(PROGRAM).exe: $(DUMMYOBJ) $(WXLIB) $(OBJECTS) $(OGLLIB) $(PROGRAM).res - $(link) @<< --out:$(PROGRAM).exe -$(LINKFLAGS) -$(DUMMYOBJ) $(OBJECTS) $(PROGRAM).res -$(LIBS) -<< - -$(PROGRAM).obj: $(PROGRAM).h doc.h view.h palette.h $(PROGRAM).$(SRCSUFF) $(DUMMYOBJ) - $(cc) @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -doc.obj: view.h doc.h doc.$(SRCSUFF) ogledit.h $(DUMMYOBJ) - $(cc) @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -view.obj: view.h doc.h view.$(SRCSUFF) ogledit.h $(DUMMYOBJ) - $(cc) @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -palette.obj: view.h doc.h ogledit.h palette.$(SRCSUFF) $(DUMMYOBJ) - $(cc) @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -$(PROGRAM).res : $(PROGRAM).rc $(WXDIR)\include\wx\msw\wx.rc ogl.ico - $(rc) -r /i$(WXDIR)\include -fo$@ $(PROGRAM).rc - - -cleanogl: - cd $(OGLDIR)\src - nmake -f makefile.vc clean - cd $(THISDIR) - -clean: - -erase *.obj - -erase *.sbr - -erase *.exe - -erase *.res - -erase *.map - -erase *.pdb - diff --git a/utils/ogl/samples/ogledit/makefile.vms b/utils/ogl/samples/ogledit/makefile.vms deleted file mode 100644 index 1a64fc7f30..0000000000 --- a/utils/ogl/samples/ogledit/makefile.vms +++ /dev/null @@ -1,44 +0,0 @@ -#************************************************************************ -# Makefile for DOCVIEW under VMS -# by Stefan Hammes -# (incomplete) update history: -# 09.06.95 -#************************************************************************ - -#************************************************************************ -# Definition section -# (cave: definitions and includes must begin with ',') -#************************************************************************ - -APPOPTS = -APPDEFS = -APPINCS = - -#************************************************************************ -# Module section -#************************************************************************ - -# Name of main module -MAIN = docview - -# Object modules of the application. -OBJS = docview.obj view.obj doc.obj -OBJLIST =docview.obj,view.obj,doc.obj - -.include [--.src]makevms.env - -# main dependency -$(MAIN).exe : $(OBJS) - $(LINK) $(LINKFLAGS) /exec=$(MAIN).exe $(OBJLIST),$(WXLIB)/lib,$(OPTSFILE)/option - - purge *.exe - -#************************************************************************ -# Header file depedencies following -#************************************************************************ - -docview.$(OBJSUFF) : docview.$(SRCSUFF) docview.h doc.h view.h - -doc.$(OBJSUFF) : doc.$(SRCSUFF) doc.h - -view.$(OBJSUFF) : view.$(SRCSUFF) view.h - diff --git a/utils/ogl/samples/ogledit/makefile.wat b/utils/ogl/samples/ogledit/makefile.wat deleted file mode 100644 index bafa16f3a5..0000000000 --- a/utils/ogl/samples/ogledit/makefile.wat +++ /dev/null @@ -1,43 +0,0 @@ -# -# Makefile for WATCOM -# -# Created by D.Chubraev, chubraev@iem.ee.ethz.ch -# 8 Nov 1994 -# - -WXDIR = ..\.. - -!include $(WXDIR)\src\makewat.env - -WXLIB = $(WXDIR)\lib -NAME = docview -LNK = $(name).lnk -OBJS = $(name).obj doc.obj view.obj - -all: $(name).exe - -$(name).exe : $(OBJS) $(name).res $(LNK) $(WXLIB)\wx$(LEVEL).lib - wlink @$(LNK) - $(BINDCOMMAND) $(name).res - -$(name).res : $(name).rc $(WXDIR)\include\msw\wx.rc - $(RC) $(RESFLAGS1) $(name).rc - -$(LNK) : makefile.wat - %create $(LNK) - @%append $(LNK) debug all - @%append $(LNK) system $(LINKOPTION) - @%append $(LNK) $(MINDATA) - @%append $(LNK) $(MAXDATA) - @%append $(LNK) $(STACK) - @%append $(LNK) name $(name) - @%append $(LNK) file $(WXLIB)\wx$(LEVEL).lib - @for %i in ($(EXTRALIBS)) do @%append $(LNK) file %i - @for %i in ($(OBJS)) do @%append $(LNK) file %i - -thing: .SYMBOLIC - echo $(WATLIBDIR) - -clean: .SYMBOLIC - -erase *.obj *.bak *.err *.pch *.lib *.lnk *.res *.exe *.rex - diff --git a/utils/ogl/samples/ogledit/ogl.ico b/utils/ogl/samples/ogledit/ogl.ico deleted file mode 100644 index 7cb092e04ca745bdd3cc3b856ef367d67440d9b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmc&wu@S;B3{*H*6oiU8C1a$}U|EBX+EaKGN~)YT5dXsA62iezaJ((a@0VrSA`M2@ z?S;5*L=K2YSO@E2jU;#g+G`9Vm@*9a0FR}VQV=P4OmXK5hQTfJ?_p0zQX3l<1>H@1 za@*z{)srd{Ky${zR3l;HkX7L*=X1zNcyJHBb*uX7JQL>iSNHqWpVr4ld+12nCh*gU pUjfiy4R#{%p4~W(7sSd*u~B)__q_F`KC3s~$BX$d9}ww(bT>1!mTdq4 diff --git a/utils/ogl/samples/ogledit/ogl.xpm b/utils/ogl/samples/ogledit/ogl.xpm deleted file mode 100644 index 2a8c61e578..0000000000 --- a/utils/ogl/samples/ogledit/ogl.xpm +++ /dev/null @@ -1,45 +0,0 @@ -/* XPM */ -static char * ogl_xpm[] = { -/* width height ncolors chars_per_pixel */ -"32 32 7 1", -/* colors */ -" s None c None", -". c #000000", -"+ c #000080", -"@ c #ff0000", -"# c #00ff00", -"$ c #00ffff", -"% c #ffffff", -/* pixels */ -"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", -"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", -"%............%%%%%%........%%%%%", -"%.@@@@@@@@@@.%%%%..$$$$$$$$..%%%", -"%.@@@@@@@@@@.%%%.$$$$$$$$$$$$.%%", -"%.@@@@@@@@@@.+++.$$$$$$$$$$$$.%%", -"%.@@@@@@@@@@.+++.$$$$$$$$$$$$.%%", -"%.@@@@@@@@@@.%%%.$$$$$$$$$$$$.%%", -"%.@@@@@@@@@@.%%%%..$$$$$$$$..%%%", -"%............%%%%%.........%%%%%", -"%%%%%%++%%%%%%%%%%%%%%++%%%%%%%%", -"%%%%%%++%%%%%%%%%%%%%%++%%%%%%%%", -"%%%%%%++%%%%%%%%%%%%%%++%%%%%%%%", -"%%%%%%++%%%%%%%%%%%%%%++%%%%%%%%", -"%%%%%%++%%%%%%%%%%%%%%++%%%%%%%%", -"%%%%%%++%%%%%%%%%%%%%%++%%%%%%%%", -"%%%%%%+.%%%%%%%%%%%%%%++%%%%%%%%", -"%%%%%%.+.%%%%%%%%%%%%.++..%%%%%%", -"%%%%%.+++.%%%%%%%%%..#####..%%%%", -"%%%%.+++++.%%%%%%%.#########.%%%", -"%%%.+++++++.%%%%%%.#########.%%%", -"%%.+++++++++.%%%%.###########.%%", -"%.+++++++++++.++++###########.%%", -"%%.+++++++++.+++++###########.%%", -"%%%.+++++++.%%%%%%.#########.%%%", -"%%%%.+++++.%%%%%%%.#########.%%%", -"%%%%%.+++.%%%%%%%%%..#####..%%%%", -"%%%%%%.+.%%%%%%%%%%%%.....%%%%%%", -"%%%%%%%.%%%%%%%%%%%%%%%%%%%%%%%%", -"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", -"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", -"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"}; diff --git a/utils/ogl/samples/ogledit/ogledit.cpp b/utils/ogl/samples/ogledit/ogledit.cpp deleted file mode 100644 index f58c265293..0000000000 --- a/utils/ogl/samples/ogledit/ogledit.cpp +++ /dev/null @@ -1,214 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: ogledit.cpp -// Purpose: OGLEdit sample app -// Author: Julian Smart -// Modified by: -// Created: 12/07/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -// #pragma implementation -#endif - -// For compilers that support precompilation, includes "wx.h". -#include - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include -#endif - -#if !wxUSE_DOC_VIEW_ARCHITECTURE -#error You must set wxUSE_DOC_VIEW_ARCHITECTURE to 1 in wx_setup.h! -#endif - -#include "ogledit.h" -#include "palette.h" -#include "doc.h" -#include "view.h" - -#if defined(__WXGTK__) || defined(__WXMOTIF__) -#include "ogl.xpm" -#endif - -// A macro needed for some compilers (AIX) that need 'main' to be defined -// in the application itself. -IMPLEMENT_APP(MyApp) - -MyApp::MyApp(void) -{ - frame = NULL; - myDocManager= NULL; -} - -// The `main program' equivalent, creating the windows and returning the -// main frame -bool MyApp::OnInit(void) -{ - wxOGLInitialize(); - - //// Create a document manager - myDocManager = new wxDocManager; - - //// Create a template relating drawing documents to their views - (void) new wxDocTemplate(myDocManager, "Diagram", "*.dia", "", "dia", "Diagram Doc", "Diagram View", - CLASSINFO(DiagramDocument), CLASSINFO(DiagramView)); - - // If we've only got one window, we only get to edit - // one document at a time. - myDocManager->SetMaxDocsOpen(1); - - //// Create the main frame window - frame = new MyFrame(myDocManager, NULL, "OGLEdit Demo", wxPoint(0, 0), wxSize(500, 400), wxDEFAULT_FRAME_STYLE); - - //// Give it an icon - frame->SetIcon(wxICON(ogl)); - - //// Make a menubar - wxMenu *file_menu = new wxMenu; - wxMenu *edit_menu = NULL; - - file_menu->Append(wxID_NEW, "&New..."); - file_menu->Append(wxID_OPEN, "&Open..."); - - file_menu->Append(wxID_CLOSE, "&Close"); - file_menu->Append(wxID_SAVE, "&Save"); - file_menu->Append(wxID_SAVEAS, "Save &As..."); - file_menu->AppendSeparator(); - file_menu->Append(wxID_PRINT, "&Print..."); - file_menu->Append(wxID_PRINT_SETUP, "Print &Setup..."); - file_menu->Append(wxID_PREVIEW, "Print Pre&view"); - - edit_menu = new wxMenu; - edit_menu->Append(wxID_UNDO, "&Undo"); - edit_menu->Append(wxID_REDO, "&Redo"); - edit_menu->AppendSeparator(); - edit_menu->Append(OGLEDIT_CUT, "&Cut"); - edit_menu->AppendSeparator(); - edit_menu->Append(OGLEDIT_CHANGE_BACKGROUND_COLOUR, "Change &background colour"); - edit_menu->Append(OGLEDIT_EDIT_LABEL, "Edit &label"); - - frame->editMenu = edit_menu; - - file_menu->AppendSeparator(); - file_menu->Append(wxID_EXIT, "E&xit"); - - // A nice touch: a history of files visited. Use this menu. - myDocManager->FileHistoryUseMenu(file_menu); - - wxMenu *help_menu = new wxMenu; - help_menu->Append(OGLEDIT_ABOUT, "&About"); - - wxMenuBar *menu_bar = new wxMenuBar; - - menu_bar->Append(file_menu, "&File"); - if (edit_menu) - menu_bar->Append(edit_menu, "&Edit"); - menu_bar->Append(help_menu, "&Help"); - - frame->canvas = frame->CreateCanvas(NULL, frame); - frame->palette = wxGetApp().CreatePalette(frame); - myDocManager->CreateDocument("", wxDOC_NEW); - - //// Associate the menu bar with the frame - frame->SetMenuBar(menu_bar); - - frame->CreateStatusBar(1); - - frame->Centre(wxBOTH); - frame->Show(TRUE); - - return TRUE; -} - -int MyApp::OnExit(void) -{ - wxOGLCleanUp(); - delete myDocManager; - return 0; -} - -/* - * This is the top-level window of the application. - */ - -IMPLEMENT_CLASS(MyFrame, wxDocParentFrame) - -BEGIN_EVENT_TABLE(MyFrame, wxDocParentFrame) - EVT_MENU(OGLEDIT_ABOUT, MyFrame::OnAbout) - EVT_SIZE(MyFrame::OnSize) -END_EVENT_TABLE() - -MyFrame::MyFrame(wxDocManager *manager, wxFrame *frame, const wxString& title, - const wxPoint& pos, const wxSize& size, long type): - wxDocParentFrame(manager, frame, -1, title, pos, size, type) -{ - canvas = NULL; - palette = NULL; - editMenu = NULL; -} - -void MyFrame::OnSize(wxSizeEvent& event) -{ - if (canvas && palette) - { - int cw, ch; - GetClientSize(&cw, &ch); - int paletteX = 0; - int paletteY = 0; - int paletteW = 30; - int paletteH = ch; - int canvasX = paletteX + paletteW; - int canvasY = 0; - int canvasW = cw - paletteW; - int canvasH = ch; - - palette->SetSize(paletteX, paletteY, paletteW, paletteH); - canvas->SetSize(canvasX, canvasY, canvasW, canvasH); - } -} - -bool MyFrame::OnClose(void) -{ - if (wxDocParentFrame::OnClose()) - { - wxOGLCleanUp(); - return TRUE; - } - else - return FALSE; -} - -// Intercept menu commands -void MyFrame::OnAbout(wxCommandEvent& event) -{ - (void)wxMessageBox("OGLEdit Demo\nTo draw a shape, select a shape on the toolbar and left-click on the canvas.\nTo draw a line, right-drag between shapes.\nFor further details, see the OGL manual.\n (c) Julian Smart 1996", "About OGLEdit"); -} - -// Creates a canvas. Called by OnInit as a child of the main window -MyCanvas *MyFrame::CreateCanvas(wxView *view, wxFrame *parent) -{ - int width, height; - parent->GetClientSize(&width, &height); - - // Non-retained canvas - MyCanvas *canvas = new MyCanvas(view, parent, -1, wxPoint(0, 0), wxSize(width, height), 0); - canvas->SetCursor(wxCursor(wxCURSOR_HAND)); - - // Give it scrollbars - canvas->SetScrollbars(20, 20, 50, 50); - - return canvas; -} - -MyFrame *GetMainFrame(void) -{ - return wxGetApp().frame; -} - diff --git a/utils/ogl/samples/ogledit/ogledit.def b/utils/ogl/samples/ogledit/ogledit.def deleted file mode 100644 index d587ce5556..0000000000 --- a/utils/ogl/samples/ogledit/ogledit.def +++ /dev/null @@ -1,8 +0,0 @@ -NAME OGLEdit -DESCRIPTION 'OGL Editor Sample' -EXETYPE WINDOWS -STUB 'WINSTUB.EXE' -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE -HEAPSIZE 1024 -STACKSIZE 8192 diff --git a/utils/ogl/samples/ogledit/ogledit.h b/utils/ogl/samples/ogledit/ogledit.h deleted file mode 100644 index 3f0408c949..0000000000 --- a/utils/ogl/samples/ogledit/ogledit.h +++ /dev/null @@ -1,77 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: ogledit.h -// Purpose: OGL sample -// Author: Julian Smart -// Modified by: -// Created: 12/07/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -// #pragma interface -#endif - -#ifndef _OGLSAMPLE_OGLEDIT_H_ -#define _OGLSAMPLE_OGLEDIT_H_ - -#include - -// Define a new application -class MyFrame; -class EditorToolPalette; -class MyApp: public wxApp -{ - public: - MyFrame *frame; - wxDocManager* myDocManager; - - MyApp(void); - bool OnInit(void); - int OnExit(void); - - // Palette stuff - EditorToolPalette *CreatePalette(wxFrame *parent); -}; - -DECLARE_APP(MyApp) - -// Define a new frame -class MyCanvas; -class MyFrame: public wxDocParentFrame -{ - DECLARE_CLASS(MyFrame) - public: - wxMenu *editMenu; - - MyCanvas *canvas; - EditorToolPalette *palette; - - MyFrame(wxDocManager *manager, wxFrame *parent, const wxString& title, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxDEFAULT_FRAME_STYLE); - - MyCanvas *CreateCanvas(wxView *view, wxFrame *parent); - void OnSize(wxSizeEvent& event); - bool OnClose(void); - void OnAbout(wxCommandEvent& event); - -DECLARE_EVENT_TABLE() -}; - -extern MyFrame *GetMainFrame(void); - -// Menu/undo/redo commands - -#define OGLEDIT_CUT 1 -#define OGLEDIT_ADD_SHAPE 2 -#define OGLEDIT_ADD_LINE 3 -#define OGLEDIT_EDIT_LABEL 4 -#define OGLEDIT_CHANGE_BACKGROUND_COLOUR 5 - -#define OGLEDIT_ABOUT 100 - -#endif - // _OGLSAMPLE_OGLEDIT_H_ diff --git a/utils/ogl/samples/ogledit/ogledit.rc b/utils/ogl/samples/ogledit/ogledit.rc deleted file mode 100644 index 046f0c6f45..0000000000 --- a/utils/ogl/samples/ogledit/ogledit.rc +++ /dev/null @@ -1,10 +0,0 @@ -ogl ICON ogl.ico - -TOOL1 BITMAP "bitmaps/tool1.bmp" -TOOL2 BITMAP "bitmaps/tool2.bmp" -TOOL3 BITMAP "bitmaps/tool3.bmp" -TOOL4 BITMAP "bitmaps/tool4.bmp" -ARROWTOOL BITMAP "bitmaps/arrow.bmp" - -#include "wx/msw/wx.rc" - diff --git a/utils/ogl/samples/ogledit/palette.cpp b/utils/ogl/samples/ogledit/palette.cpp deleted file mode 100644 index 944afcb80a..0000000000 --- a/utils/ogl/samples/ogledit/palette.cpp +++ /dev/null @@ -1,125 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: palette.cpp -// Purpose: OGLEdit palette -// Author: Julian Smart -// Modified by: -// Created: 12/07/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -// #pragma implementation -#endif - -// For compilers that support precompilation, includes "wx.h". -#include - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include -#endif - -#include - -#include -#include -#include - -#include "doc.h" -#include "view.h" -#include "ogledit.h" -#include "palette.h" - -// Include pixmaps -#if defined(__WXGTK__) || defined(__WXMOTIF__) -#include "bitmaps/arrow.xpm" -#include "bitmaps/tool1.xpm" -#include "bitmaps/tool2.xpm" -#include "bitmaps/tool3.xpm" -#include "bitmaps/tool4.xpm" -#endif - -/* - * Object editor tool palette - * - */ - -EditorToolPalette::EditorToolPalette(wxWindow* parent, const wxPoint& pos, const wxSize& size, - long style): - TOOLPALETTECLASS(parent, -1, pos, size, style) -{ - currentlySelected = -1; - -#ifndef __WXGTK__ - SetMaxRowsCols(1000, 1); -#endif -} - -bool EditorToolPalette::OnLeftClick(int toolIndex, bool toggled) -{ - // BEGIN mutual exclusivity code - if (toggled && (currentlySelected != -1) && (toolIndex != currentlySelected)) - ToggleTool(currentlySelected, FALSE); - - if (toggled) - currentlySelected = toolIndex; - else if (currentlySelected == toolIndex) - currentlySelected = -1; - // END mutual exclusivity code - - return TRUE; -} - -void EditorToolPalette::OnMouseEnter(int toolIndex) -{ -} - -void EditorToolPalette::SetSize(int x, int y, int width, int height, int sizeFlags) -{ - TOOLPALETTECLASS::SetSize(x, y, width, height, sizeFlags); -} - -EditorToolPalette *MyApp::CreatePalette(wxFrame *parent) -{ - // Load palette bitmaps -#ifdef __WXMSW__ - wxBitmap PaletteTool1("TOOL1"); - wxBitmap PaletteTool2("TOOL2"); - wxBitmap PaletteTool3("TOOL3"); - wxBitmap PaletteTool4("TOOL4"); - wxBitmap PaletteArrow("ARROWTOOL"); -#elif defined(__WXGTK__) || defined(__WXMOTIF__) - wxBitmap PaletteTool1(tool1_xpm); - wxBitmap PaletteTool2(tool2_xpm); - wxBitmap PaletteTool3(tool3_xpm); - wxBitmap PaletteTool4(tool4_xpm); - wxBitmap PaletteArrow(arrow_xpm); -#endif - - EditorToolPalette *palette = new EditorToolPalette(parent, wxPoint(0, 0), wxSize(-1, -1), wxTB_HORIZONTAL); - - palette->SetMargins(2, 2); - -#ifdef __WXMSW__ - if (palette->IsKindOf(CLASSINFO(wxToolBar95))) - ((wxToolBar95 *)palette)->SetToolBitmapSize(wxSize(22, 22)); -#endif - - palette->AddTool(PALETTE_ARROW, PaletteArrow, wxNullBitmap, TRUE, 0, -1, NULL, "Pointer"); - palette->AddTool(PALETTE_TOOL1, PaletteTool1, wxNullBitmap, TRUE, 0, -1, NULL, "Tool 1"); - palette->AddTool(PALETTE_TOOL2, PaletteTool2, wxNullBitmap, TRUE, 0, -1, NULL, "Tool 2"); - palette->AddTool(PALETTE_TOOL3, PaletteTool3, wxNullBitmap, TRUE, 0, -1, NULL, "Tool 3"); - palette->AddTool(PALETTE_TOOL4, PaletteTool4, wxNullBitmap, TRUE, 0, -1, NULL, "Tool 4"); - - palette->Realize(); - - palette->ToggleTool(PALETTE_ARROW, TRUE); - palette->currentlySelected = PALETTE_ARROW; - return palette; -} - diff --git a/utils/ogl/samples/ogledit/palette.h b/utils/ogl/samples/ogledit/palette.h deleted file mode 100644 index 3d0c7ff614..0000000000 --- a/utils/ogl/samples/ogledit/palette.h +++ /dev/null @@ -1,66 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: palette.h -// Purpose: OGL sample palette -// Author: Julian Smart -// Modified by: -// Created: 12/07/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _OGLSAMPLE_PALETTE_H_ -#define _OGLSAMPLE_PALETTE_H_ - -#ifdef __GNUG__ -// #pragma interface -#endif - -#include -#include -#ifdef __WXGTK__ -#include -#else -#include -#endif - -/* - * Object editor tool palette - * - */ - -// TODO for wxWin: wxToolBar95 cannot be moved to a non-0,0 position! -// Needs to have a parent window... -// So use a simple toolbar at present. -#ifdef __WXGTK__ -#define TOOLPALETTECLASS wxToolBar -#else -#define TOOLPALETTECLASS wxToolBarSimple -#endif - -class EditorToolPalette: public TOOLPALETTECLASS -{ - public: - int currentlySelected; - - EditorToolPalette(wxWindow *parent, const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = wxTB_VERTICAL); - bool OnLeftClick(int toolIndex, bool toggled); - void OnMouseEnter(int toolIndex); - void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); -}; - -#define PALETTE_TOOL1 1 -#define PALETTE_TOOL2 2 -#define PALETTE_TOOL3 3 -#define PALETTE_TOOL4 4 -#define PALETTE_TOOL5 5 -#define PALETTE_TOOL6 6 -#define PALETTE_TOOL7 7 -#define PALETTE_TOOL8 8 -#define PALETTE_TOOL9 9 -#define PALETTE_ARROW 10 - -#endif - // _OGLSAMPLE_PALETTE_H_ diff --git a/utils/ogl/samples/ogledit/view.cpp b/utils/ogl/samples/ogledit/view.cpp deleted file mode 100644 index 0d8e58232b..0000000000 --- a/utils/ogl/samples/ogledit/view.cpp +++ /dev/null @@ -1,337 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: view.cpp -// Purpose: Implements view functionality in OGLEdit -// Author: Julian Smart -// Modified by: -// Created: 12/07/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -// #pragma implementation -#endif - -// For compilers that support precompilation, includes "wx.h". -#include - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include -#endif - -#include - -#if !wxUSE_DOC_VIEW_ARCHITECTURE -#error You must set wxUSE_DOC_VIEW_ARCHITECTURE to 1 in wx_setup.h! -#endif - -#include "ogledit.h" -#include "doc.h" -#include "view.h" -#include "palette.h" - -IMPLEMENT_DYNAMIC_CLASS(DiagramView, wxView) - -BEGIN_EVENT_TABLE(DiagramView, wxView) - EVT_MENU(OGLEDIT_CUT, DiagramView::OnCut) - EVT_MENU(OGLEDIT_CHANGE_BACKGROUND_COLOUR, DiagramView::OnChangeBackgroundColour) - EVT_MENU(OGLEDIT_EDIT_LABEL, DiagramView::OnEditLabel) -END_EVENT_TABLE() - -// What to do when a view is created. Creates actual -// windows for displaying the view. -bool DiagramView::OnCreate(wxDocument *doc, long flags) -{ - frame = GetMainFrame(); - canvas = GetMainFrame()->canvas; - canvas->view = this; - - SetFrame(frame); - Activate(TRUE); - - // Initialize the edit menu Undo and Redo items - doc->GetCommandProcessor()->SetEditMenu(((MyFrame *)frame)->editMenu); - doc->GetCommandProcessor()->Initialize(); - - wxShapeCanvas *shapeCanvas = (wxShapeCanvas *)canvas; - DiagramDocument *diagramDoc = (DiagramDocument *)doc; - shapeCanvas->SetDiagram(diagramDoc->GetDiagram()); - diagramDoc->GetDiagram()->SetCanvas(shapeCanvas); - - return TRUE; -} - -#define CENTER FALSE // Place the drawing to the center of the page - - -// Sneakily gets used for default print/preview -// as well as drawing on the screen. -void DiagramView::OnDraw(wxDC *dc) -{ - - /* You might use THIS code if you were scaling - * graphics of known size to fit on the page. - */ - int w, h; - - // We need to adjust for the graphic size, a formula will be added - float maxX = 900; - float maxY = 700; - // A better way of find the maxium values would be to search through - // the linked list - - // Let's have at least 10 device units margin - float marginX = 10; - float marginY = 10; - - // Add the margin to the graphic size - maxX += (2 * marginX); - maxY += (2 * marginY); - - // Get the size of the DC in pixels - dc->GetSize (&w, &h); - - // Calculate a suitable scaling factor - float scaleX = (float) (w / maxX); - float scaleY = (float) (h / maxY); - - // Use x or y scaling factor, whichever fits on the DC - float actualScale = wxMin (scaleX, scaleY); - - float posX, posY; - // Calculate the position on the DC for centring the graphic - if (CENTER == TRUE) // center the drawing - { - posX = (float) ((w - (200 * actualScale)) / 2.0); - posY = (float) ((h - (200 * actualScale)) / 2.0); - } - else // Use defined presets - { - posX = 10; - posY = 35; - } - - - // Set the scale and origin - dc->SetUserScale (actualScale, actualScale); - dc->SetDeviceOrigin ((long) posX, (long) posY); - - // This part was added to preform the print preview and printing functions - - dc->BeginDrawing(); // Allows optimization of drawing code under MS Windows. - wxDiagram *diagram_p=((DiagramDocument*)GetDocument())->GetDiagram(); // Get the current diagram - if (diagram_p->GetShapeList()) - { - wxCursor *old_cursor = NULL; - wxNode *current = diagram_p->GetShapeList()->First(); - - while (current) // Loop through the entire list of shapes - { - wxShape *object = (wxShape *)current->Data(); - if (!object->GetParent()) - { - object->Draw(* dc); // Draw the shape onto our printing dc - } - current = current->Next(); // Procede to the next shape in the list - } - } - dc->EndDrawing(); // Allows optimization of drawing code under MS Windows. -} - -void DiagramView::OnUpdate(wxView *sender, wxObject *hint) -{ - if (canvas) - canvas->Refresh(); -} - -// Clean up windows used for displaying the view. -bool DiagramView::OnClose(bool deleteWindow) -{ - if (!GetDocument()->Close()) - return FALSE; - - DiagramDocument *diagramDoc = (DiagramDocument *)GetDocument(); - diagramDoc->GetDiagram()->SetCanvas(NULL); - - canvas->Clear(); - canvas->SetDiagram(NULL); - canvas->view = NULL; - canvas = NULL; - - wxString s = wxTheApp->GetAppName(); - if (frame) - frame->SetTitle(s); - - SetFrame(NULL); - - Activate(FALSE); - - return TRUE; -} - -wxShape *DiagramView::FindSelectedShape(void) -{ - DiagramDocument *doc = (DiagramDocument *)GetDocument(); - wxShape *theShape = NULL; - wxNode *node = doc->GetDiagram()->GetShapeList()->First(); - while (node) - { - wxShape *eachShape = (wxShape *)node->Data(); - if ((eachShape->GetParent() == NULL) && eachShape->Selected()) - { - theShape = eachShape; - node = NULL; - } - else node = node->Next(); - } - return theShape; -} - -void DiagramView::OnCut(wxCommandEvent& event) -{ - DiagramDocument *doc = (DiagramDocument *)GetDocument(); - - wxShape *theShape = FindSelectedShape(); - if (theShape) - doc->GetCommandProcessor()->Submit(new DiagramCommand("Cut", OGLEDIT_CUT, doc, NULL, 0.0, 0.0, TRUE, theShape)); -} - -void DiagramView::OnChangeBackgroundColour(wxCommandEvent& event) -{ - DiagramDocument *doc = (DiagramDocument *)GetDocument(); - - wxShape *theShape = FindSelectedShape(); - if (theShape) - { - wxColourData data; - data.SetChooseFull(TRUE); - data.SetColour(theShape->GetBrush()->GetColour()); - - wxColourDialog *dialog = new wxColourDialog(frame, &data); - wxBrush *theBrush = NULL; - if (dialog->ShowModal() == wxID_OK) - { - wxColourData retData = dialog->GetColourData(); - wxColour col = retData.GetColour(); - theBrush = wxTheBrushList->FindOrCreateBrush(col, wxSOLID); - } - dialog->Close(); - - if (theBrush) - doc->GetCommandProcessor()->Submit(new DiagramCommand("Change colour", OGLEDIT_CHANGE_BACKGROUND_COLOUR, doc, - theBrush, theShape)); - } -} - -void DiagramView::OnEditLabel(wxCommandEvent& event) -{ - wxShape *theShape = FindSelectedShape(); - if (theShape) - { - wxString newLabel = wxGetTextFromUser("Enter new label", "Shape Label", ((MyEvtHandler *)theShape->GetEventHandler())->label); - GetDocument()->GetCommandProcessor()->Submit(new DiagramCommand("Edit label", OGLEDIT_EDIT_LABEL, (DiagramDocument*) GetDocument(), newLabel, theShape)); - } -} - - -/* - * Window implementations - */ - -BEGIN_EVENT_TABLE(MyCanvas, wxShapeCanvas) - EVT_MOUSE_EVENTS(MyCanvas::OnMouseEvent) - EVT_PAINT(MyCanvas::OnPaint) -END_EVENT_TABLE() - -// Define a constructor for my canvas -MyCanvas::MyCanvas(wxView *v, wxWindow *parent, wxWindowID id, const wxPoint& pos, - const wxSize& size, long style): - wxShapeCanvas(parent, id, pos, size, style) -{ - SetBackgroundColour(*wxWHITE); - view = v; -} - -MyCanvas::~MyCanvas(void) -{ -} - -void MyCanvas::OnLeftClick(double x, double y, int keys) -{ - EditorToolPalette *palette = wxGetApp().frame->palette; - wxClassInfo *info = NULL; - switch (palette->currentlySelected) - { - case PALETTE_TOOL1: - { - info = CLASSINFO(wxRectangleShape); - break; - } - case PALETTE_TOOL2: - { - info = CLASSINFO(wxRoundedRectangleShape); - break; - } - case PALETTE_TOOL3: - { - info = CLASSINFO(wxEllipseShape); - break; - } - case PALETTE_TOOL4: - { - info = CLASSINFO(wxDiamondShape); - break; - } - default: - break; - } - if (info) - { - view->GetDocument()->GetCommandProcessor()->Submit(new DiagramCommand(info->GetClassName(), OGLEDIT_ADD_SHAPE, (DiagramDocument *)view->GetDocument(), info, - x, y)); - } -} - -void MyCanvas::OnRightClick(double x, double y, int keys) -{ -} - -void MyCanvas::OnDragLeft(bool draw, double x, double y, int keys) -{ -} - -void MyCanvas::OnBeginDragLeft(double x, double y, int keys) -{ -} - -void MyCanvas::OnEndDragLeft(double x, double y, int keys) -{ -} - -void MyCanvas::OnDragRight(bool draw, double x, double y, int keys) -{ -} - -void MyCanvas::OnBeginDragRight(double x, double y, int keys) -{ -} - -void MyCanvas::OnEndDragRight(double x, double y, int keys) -{ -} - -void MyCanvas::OnMouseEvent(wxMouseEvent& event) -{ - wxShapeCanvas::OnMouseEvent(event); -} - -void MyCanvas::OnPaint(wxPaintEvent& event) -{ -// if (GetDiagram()) - wxShapeCanvas::OnPaint(event); -} diff --git a/utils/ogl/samples/ogledit/view.h b/utils/ogl/samples/ogledit/view.h deleted file mode 100644 index f4c508e198..0000000000 --- a/utils/ogl/samples/ogledit/view.h +++ /dev/null @@ -1,79 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: view.h -// Purpose: View-related classes -// Author: Julian Smart -// Modified by: -// Created: 12/07/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _OGLSAMPLE_VIEW_H_ -#define _OGLSAMPLE_VIEW_H_ - -#ifdef __GNUG__ -// #pragma interface "view.h" -#endif - -#include "doc.h" -#include "ogl.h" - -class MyCanvas: public wxShapeCanvas -{ -// DECLARE_DYNAMIC_CLASS(wxShapeCanvas) - protected: - public: - wxView *view; - - MyCanvas(wxView *view, wxWindow *parent = NULL, wxWindowID id = -1, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxRETAINED); - ~MyCanvas(void); - - void OnMouseEvent(wxMouseEvent& event); - void OnPaint(wxPaintEvent& event); - - virtual void OnLeftClick(double x, double y, int keys = 0); - virtual void OnRightClick(double x, double y, int keys = 0); - - virtual void OnDragLeft(bool draw, double x, double y, int keys=0); // Erase if draw false - virtual void OnBeginDragLeft(double x, double y, int keys=0); - virtual void OnEndDragLeft(double x, double y, int keys=0); - - virtual void OnDragRight(bool draw, double x, double y, int keys=0); // Erase if draw false - virtual void OnBeginDragRight(double x, double y, int keys=0); - virtual void OnEndDragRight(double x, double y, int keys=0); - -DECLARE_EVENT_TABLE() -}; - -class DiagramView: public wxView -{ - DECLARE_DYNAMIC_CLASS(DiagramView) - private: - public: - wxFrame *frame; - MyCanvas *canvas; - - DiagramView(void) { canvas = NULL; frame = NULL; }; - ~DiagramView(void) {}; - - bool OnCreate(wxDocument *doc, long flags); - void OnDraw(wxDC *dc); - void OnUpdate(wxView *sender, wxObject *hint = NULL); - bool OnClose(bool deleteWindow = TRUE); - - wxShape *FindSelectedShape(void); - -// void OnMenuCommand(int cmd); - - void OnCut(wxCommandEvent& event); - void OnChangeBackgroundColour(wxCommandEvent& event); - void OnEditLabel(wxCommandEvent& event); - -DECLARE_EVENT_TABLE() -}; - -#endif - // _OGLSAMPLE_VIEW_H_ diff --git a/utils/ogl/src/Makefile b/utils/ogl/src/Makefile deleted file mode 100644 index 35ce1069fd..0000000000 --- a/utils/ogl/src/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../../../setup/general/makedirs diff --git a/utils/ogl/src/Makefile.in b/utils/ogl/src/Makefile.in deleted file mode 100644 index 79e3df01ff..0000000000 --- a/utils/ogl/src/Makefile.in +++ /dev/null @@ -1,69 +0,0 @@ -# -# wGLCanvas source makefile for Unix -# -# Copyright 1998, Robert Roebling -# - -# wxWindows base directory -WXBASEDIR=@WXBASEDIR@ - -# set the OS type for compilation -OS=@OS@ - -# compile a library only -RULE=gslib - -# needed for unactivated -NONE= - -# define library name -LIB_TARGET=wx_ogl_gtk -LIB_MAJOR=0 -LIB_MINOR=1 - -# define library sources - -LIB_CPP_SRC= \ -\ - basic.cpp basic2.cpp bmpshape.cpp canvas.cpp \ - composit.cpp divided.cpp drawn.cpp lines.cpp \ - mfutils.cpp misc.cpp ogldiag.cpp - -#define library objects -LIB_OBJ= \ -\ - $(LIB_CPP_SRC:.cpp=.o) - -all:: - -clean:: - -#additional things needed for compile -ADD_COMPILE= - -# include the definitions now -include ../../../../template.mak - -install:: - @echo "Installing library files and headers for libwx_ogl_gtk.." - @echo " Creating directory.." - @$(WXBASEDIR)/mkinstalldirs /usr/local/include/wx_ogl - @echo " Copying headers from /include/wx" - @cd $(WXBASEDIR)/utils/ogl/src ; \ - for f in *.h ; do \ - rm -f /usr/local/include/wx_ogl/$$f ; \ - $(INSTALL_DATA) $$f /usr/local/include/wx_ogl/$$f ; \ - done - @echo " Copying static library files to /usr/local/lib" - @cd $(WXBASEDIR)/lib/$(OS) ; \ - for f in libwx_ogl_gtk.a ; do \ - rm -f /usr/local/lib/$$f ; \ - $(INSTALL_DATA) $$f /usr/local/lib/$$f ; \ - done - @echo " Copying shared libraries to /usr/local/lib" - @cd $(WXBASEDIR)/lib/$(OS) ; \ - for f in libwx_ogl_gtk.so* ; do \ - rm -f /usr/local/lib/$$f ; \ - $(INSTALL_PROGRAM) $$f /usr/local/lib/$$f ; \ - done - diff --git a/utils/ogl/src/basic.cpp b/utils/ogl/src/basic.cpp deleted file mode 100644 index 2ca8ddaee5..0000000000 --- a/utils/ogl/src/basic.cpp +++ /dev/null @@ -1,3274 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: basic.cpp -// Purpose: Basic OGL classes -// Author: Julian Smart -// Modified by: -// Created: 12/07/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "basic.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include -#endif - -#include - -#if wxUSE_IOSTREAMH -#include -#else -#include -#endif - -#include -#include -#include - -#include "basic.h" -#include "basicp.h" -#include "composit.h" -#include "lines.h" -#include "canvas.h" -#include "divided.h" -#include "misc.h" - -// Control point types -// Rectangle and most other shapes -#define CONTROL_POINT_VERTICAL 1 -#define CONTROL_POINT_HORIZONTAL 2 -#define CONTROL_POINT_DIAGONAL 3 - -// Line -#define CONTROL_POINT_ENDPOINT_TO 4 -#define CONTROL_POINT_ENDPOINT_FROM 5 -#define CONTROL_POINT_LINE 6 - -IMPLEMENT_DYNAMIC_CLASS(wxShapeTextLine, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxAttachmentPoint, wxObject) - -wxShapeTextLine::wxShapeTextLine(double the_x, double the_y, const wxString& the_line) -{ - m_x = the_x; m_y = the_y; m_line = the_line; -} - -wxShapeTextLine::~wxShapeTextLine() -{ -} - -IMPLEMENT_ABSTRACT_CLASS(wxShapeEvtHandler, wxObject) - -wxShapeEvtHandler::wxShapeEvtHandler(wxShapeEvtHandler *prev, wxShape *shape) -{ - m_previousHandler = prev; - m_handlerShape = shape; -} - -wxShapeEvtHandler::~wxShapeEvtHandler() -{ -} - -// Creates a copy of this event handler. -wxShapeEvtHandler* wxShapeEvtHandler::CreateNewCopy() -{ - wxShapeEvtHandler* newObject = (wxShapeEvtHandler*) GetClassInfo()->CreateObject(); - - wxASSERT( (newObject != NULL) ); - wxASSERT( (newObject->IsKindOf(CLASSINFO(wxShapeEvtHandler))) ); - - newObject->m_previousHandler = newObject; - - CopyData(*newObject); - - return newObject; -} - - -void wxShapeEvtHandler::OnDelete() -{ - if (this != GetShape()) - delete this; -} - -void wxShapeEvtHandler::OnDraw(wxDC& dc) -{ - if (m_previousHandler) - m_previousHandler->OnDraw(dc); -} - -void wxShapeEvtHandler::OnMoveLinks(wxDC& dc) -{ - if (m_previousHandler) - m_previousHandler->OnMoveLinks(dc); -} - -void wxShapeEvtHandler::OnMoveLink(wxDC& dc, bool moveControlPoints) -{ - if (m_previousHandler) - m_previousHandler->OnMoveLink(dc, moveControlPoints); -} - -void wxShapeEvtHandler::OnDrawContents(wxDC& dc) -{ - if (m_previousHandler) - m_previousHandler->OnDrawContents(dc); -} - -void wxShapeEvtHandler::OnDrawBranches(wxDC& dc, bool erase) -{ - if (m_previousHandler) - m_previousHandler->OnDrawBranches(dc, erase); -} - -void wxShapeEvtHandler::OnSize(double x, double y) -{ - if (m_previousHandler) - m_previousHandler->OnSize(x, y); -} - -bool wxShapeEvtHandler::OnMovePre(wxDC& dc, double x, double y, double old_x, double old_y, bool display) -{ - if (m_previousHandler) - return m_previousHandler->OnMovePre(dc, x, y, old_x, old_y, display); - else - return TRUE; -} - -void wxShapeEvtHandler::OnMovePost(wxDC& dc, double x, double y, double old_x, double old_y, bool display) -{ - if (m_previousHandler) - m_previousHandler->OnMovePost(dc, x, y, old_x, old_y, display); -} - -void wxShapeEvtHandler::OnErase(wxDC& dc) -{ - if (m_previousHandler) - m_previousHandler->OnErase(dc); -} - -void wxShapeEvtHandler::OnEraseContents(wxDC& dc) -{ - if (m_previousHandler) - m_previousHandler->OnEraseContents(dc); -} - -void wxShapeEvtHandler::OnHighlight(wxDC& dc) -{ - if (m_previousHandler) - m_previousHandler->OnHighlight(dc); -} - -void wxShapeEvtHandler::OnLeftClick(double x, double y, int keys, int attachment) -{ - if (m_previousHandler) - m_previousHandler->OnLeftClick(x, y, keys, attachment); -} - -void wxShapeEvtHandler::OnLeftDoubleClick(double x, double y, int keys, int attachment) -{ - if (m_previousHandler) - m_previousHandler->OnLeftDoubleClick(x, y, keys, attachment); -} - -void wxShapeEvtHandler::OnRightClick(double x, double y, int keys, int attachment) -{ - if (m_previousHandler) - m_previousHandler->OnRightClick(x, y, keys, attachment); -} - -void wxShapeEvtHandler::OnDragLeft(bool draw, double x, double y, int keys, int attachment) -{ - if (m_previousHandler) - m_previousHandler->OnDragLeft(draw, x, y, keys, attachment); -} - -void wxShapeEvtHandler::OnBeginDragLeft(double x, double y, int keys, int attachment) -{ - if (m_previousHandler) - m_previousHandler->OnBeginDragLeft(x, y, keys, attachment); -} - -void wxShapeEvtHandler::OnEndDragLeft(double x, double y, int keys, int attachment) -{ - if (m_previousHandler) - m_previousHandler->OnEndDragLeft(x, y, keys, attachment); -} - -void wxShapeEvtHandler::OnDragRight(bool draw, double x, double y, int keys, int attachment) -{ - if (m_previousHandler) - m_previousHandler->OnDragRight(draw, x, y, keys, attachment); -} - -void wxShapeEvtHandler::OnBeginDragRight(double x, double y, int keys, int attachment) -{ - if (m_previousHandler) - m_previousHandler->OnBeginDragRight(x, y, keys, attachment); -} - -void wxShapeEvtHandler::OnEndDragRight(double x, double y, int keys, int attachment) -{ - if (m_previousHandler) - m_previousHandler->OnEndDragRight(x, y, keys, attachment); -} - -// Control points ('handles') redirect control to the actual shape, to make it easier -// to override sizing behaviour. -void wxShapeEvtHandler::OnSizingDragLeft(wxControlPoint* pt, bool draw, double x, double y, int keys, int attachment) -{ - if (m_previousHandler) - m_previousHandler->OnSizingDragLeft(pt, draw, x, y, keys, attachment); -} - -void wxShapeEvtHandler::OnSizingBeginDragLeft(wxControlPoint* pt, double x, double y, int keys, int attachment) -{ - if (m_previousHandler) - m_previousHandler->OnSizingBeginDragLeft(pt, x, y, keys, attachment); -} - -void wxShapeEvtHandler::OnSizingEndDragLeft(wxControlPoint* pt, double x, double y, int keys, int attachment) -{ - if (m_previousHandler) - m_previousHandler->OnSizingEndDragLeft(pt, x, y, keys, attachment); -} - -void wxShapeEvtHandler::OnDrawOutline(wxDC& dc, double x, double y, double w, double h) -{ - if (m_previousHandler) - m_previousHandler->OnDrawOutline(dc, x, y, w, h); -} - -void wxShapeEvtHandler::OnDrawControlPoints(wxDC& dc) -{ - if (m_previousHandler) - m_previousHandler->OnDrawControlPoints(dc); -} - -void wxShapeEvtHandler::OnEraseControlPoints(wxDC& dc) -{ - if (m_previousHandler) - m_previousHandler->OnEraseControlPoints(dc); -} - -// Can override this to prevent or intercept line reordering. -void wxShapeEvtHandler::OnChangeAttachment(int attachment, wxLineShape* line, wxList& ordering) -{ - if (m_previousHandler) - m_previousHandler->OnChangeAttachment(attachment, line, ordering); -} - -IMPLEMENT_ABSTRACT_CLASS(wxShape, wxShapeEvtHandler) - -wxShape::wxShape(wxShapeCanvas *can) -{ - m_eventHandler = this; - SetShape(this); - m_id = 0; - m_formatted = FALSE; - m_canvas = can; - m_xpos = 0.0; m_ypos = 0.0; - m_pen = g_oglBlackPen; - m_brush = wxWHITE_BRUSH; - m_font = g_oglNormalFont; - m_textColour = wxBLACK; - m_textColourName = "BLACK"; - m_visible = FALSE; - m_clientData = NULL; - m_selected = FALSE; - m_attachmentMode = ATTACHMENT_MODE_NONE; - m_spaceAttachments = TRUE; - m_disableLabel = FALSE; - m_fixedWidth = FALSE; - m_fixedHeight = FALSE; - m_drawHandles = TRUE; - m_sensitivity = OP_ALL; - m_draggable = TRUE; - m_parent = NULL; - m_formatMode = FORMAT_CENTRE_HORIZ | FORMAT_CENTRE_VERT; - m_shadowMode = SHADOW_NONE; - m_shadowOffsetX = 6; - m_shadowOffsetY = 6; - m_shadowBrush = wxBLACK_BRUSH; - m_textMarginX = 5; - m_textMarginY = 5; - m_regionName = "0"; - m_centreResize = TRUE; - m_maintainAspectRatio = FALSE; - m_highlighted = FALSE; - m_rotation = 0.0; - m_branchNeckLength = 10; - m_branchStemLength = 10; - m_branchSpacing = 10; - m_branchStyle = BRANCHING_ATTACHMENT_NORMAL; - - // Set up a default region. Much of the above will be put into - // the region eventually (the duplication is for compatibility) - wxShapeRegion *region = new wxShapeRegion; - m_regions.Append(region); - region->SetName("0"); - region->SetFont(g_oglNormalFont); - region->SetFormatMode(FORMAT_CENTRE_HORIZ | FORMAT_CENTRE_VERT); - region->SetColour("BLACK"); -} - -wxShape::~wxShape() -{ - if (m_parent) - m_parent->GetChildren().DeleteObject(this); - - ClearText(); - ClearRegions(); - ClearAttachments(); - - if (m_canvas) - m_canvas->RemoveShape(this); - - GetEventHandler()->OnDelete(); -} - -void wxShape::SetHighlight(bool hi, bool recurse) -{ - m_highlighted = hi; - if (recurse) - { - wxNode *node = m_children.First(); - while (node) - { - wxShape *child = (wxShape *)node->Data(); - child->SetHighlight(hi, recurse); - node = node->Next(); - } - } -} - -void wxShape::SetSensitivityFilter(int sens, bool recursive) -{ - if (sens & OP_DRAG_LEFT) - m_draggable = TRUE; - else - m_draggable = FALSE; - - m_sensitivity = sens; - if (recursive) - { - wxNode *node = m_children.First(); - while (node) - { - wxShape *obj = (wxShape *)node->Data(); - obj->SetSensitivityFilter(sens, TRUE); - node = node->Next(); - } - } -} - -void wxShape::SetDraggable(bool drag, bool recursive) -{ - m_draggable = drag; - if (m_draggable) - m_sensitivity |= OP_DRAG_LEFT; - else - if (m_sensitivity & OP_DRAG_LEFT) - m_sensitivity = m_sensitivity - OP_DRAG_LEFT; - - if (recursive) - { - wxNode *node = m_children.First(); - while (node) - { - wxShape *obj = (wxShape *)node->Data(); - obj->SetDraggable(drag, TRUE); - node = node->Next(); - } - } -} - -void wxShape::SetDrawHandles(bool drawH) -{ - m_drawHandles = drawH; - wxNode *node = m_children.First(); - while (node) - { - wxShape *obj = (wxShape *)node->Data(); - obj->SetDrawHandles(drawH); - node = node->Next(); - } -} - -void wxShape::SetShadowMode(int mode, bool redraw) -{ - if (redraw && GetCanvas()) - { - wxClientDC dc(GetCanvas()); - GetCanvas()->PrepareDC(dc); - Erase(dc); - - m_shadowMode = mode; - - Draw(dc); - } - else - { - m_shadowMode = mode; - } -} - -void wxShape::SetCanvas(wxShapeCanvas *theCanvas) -{ - m_canvas = theCanvas; - wxNode *node = m_children.First(); - while (node) - { - wxShape *child = (wxShape *)node->Data(); - child->SetCanvas(theCanvas); - node = node->Next(); - } -} - -void wxShape::AddToCanvas(wxShapeCanvas *theCanvas, wxShape *addAfter) -{ - theCanvas->AddShape(this, addAfter); - wxNode *node = m_children.First(); - wxShape *lastImage = this; - while (node) - { - wxShape *object = (wxShape *)node->Data(); - object->AddToCanvas(theCanvas, lastImage); - lastImage = object; - - node = node->Next(); - } -} - -// Insert at front of canvas -void wxShape::InsertInCanvas(wxShapeCanvas *theCanvas) -{ - theCanvas->InsertShape(this); - wxNode *node = m_children.First(); - wxShape *lastImage = this; - while (node) - { - wxShape *object = (wxShape *)node->Data(); - object->AddToCanvas(theCanvas, lastImage); - lastImage = object; - - node = node->Next(); - } -} - -void wxShape::RemoveFromCanvas(wxShapeCanvas *theCanvas) -{ - if (Selected()) - Select(FALSE); - theCanvas->RemoveShape(this); - wxNode *node = m_children.First(); - while (node) - { - wxShape *object = (wxShape *)node->Data(); - object->RemoveFromCanvas(theCanvas); - - node = node->Next(); - } -} - -void wxShape::ClearAttachments() -{ - wxNode *node = m_attachmentPoints.First(); - while (node) - { - wxAttachmentPoint *point = (wxAttachmentPoint *)node->Data(); - delete point; - node = node->Next(); - } - m_attachmentPoints.Clear(); -} - -void wxShape::ClearText(int regionId) -{ - if (regionId == 0) - { - m_text.DeleteContents(TRUE); - m_text.Clear(); - m_text.DeleteContents(FALSE); - } - wxNode *node = m_regions.Nth(regionId); - if (!node) - return; - wxShapeRegion *region = (wxShapeRegion *)node->Data(); - region->ClearText(); -} - -void wxShape::ClearRegions() -{ - wxNode *node = m_regions.First(); - while (node) - { - wxShapeRegion *region = (wxShapeRegion *)node->Data(); - wxNode *next = node->Next(); - delete region; - delete node; - node = next; - } -} - -void wxShape::AddRegion(wxShapeRegion *region) -{ - m_regions.Append(region); -} - -void wxShape::SetDefaultRegionSize() -{ - wxNode *node = m_regions.First(); - if (!node) return; - wxShapeRegion *region = (wxShapeRegion *)node->Data(); - double w, h; - GetBoundingBoxMin(&w, &h); - region->SetSize(w, h); -} - -bool wxShape::HitTest(double x, double y, int *attachment, double *distance) -{ -// if (!sensitive) -// return FALSE; - - double width = 0.0, height = 0.0; - GetBoundingBoxMin(&width, &height); - if (fabs(width) < 4.0) width = 4.0; - if (fabs(height) < 4.0) height = 4.0; - - width += (double)4.0; height += (double)4.0; // Allowance for inaccurate mousing - - double left = (double)(m_xpos - (width/2.0)); - double top = (double)(m_ypos - (height/2.0)); - double right = (double)(m_xpos + (width/2.0)); - double bottom = (double)(m_ypos + (height/2.0)); - - int nearest_attachment = 0; - - // If within the bounding box, check the attachment points - // within the object. - - if (x >= left && x <= right && y >= top && y <= bottom) - { - int n = GetNumberOfAttachments(); - double nearest = 999999.0; - - // GetAttachmentPosition[Edge] takes a logical attachment position, - // i.e. if it's rotated through 90%, position 0 is East-facing. - - for (int i = 0; i < n; i++) - { - double xp, yp; - if (GetAttachmentPositionEdge(i, &xp, &yp)) - { - double l = (double)sqrt(((xp - x) * (xp - x)) + - ((yp - y) * (yp - y))); - - if (l < nearest) - { - nearest = l; - nearest_attachment = i; - } - } - } - *attachment = nearest_attachment; - *distance = nearest; - return TRUE; - } - else return FALSE; -} - -// Format a text string according to the region size, adding -// strings with positions to region text list - -static bool GraphicsInSizeToContents = FALSE; // Infinite recursion elimination -void wxShape::FormatText(wxDC& dc, const wxString& s, int i) -{ - double w, h; - ClearText(i); - - if (m_regions.Number() < 1) - return; - wxNode *node = m_regions.Nth(i); - if (!node) - return; - - wxShapeRegion *region = (wxShapeRegion *)node->Data(); - region->SetText(s); - dc.SetFont(* region->GetFont()); - - region->GetSize(&w, &h); - - wxStringList *stringList = oglFormatText(dc, s, (w-5), (h-5), region->GetFormatMode()); - node = stringList->First(); - while (node) - { - char *s = (char *)node->Data(); - wxShapeTextLine *line = new wxShapeTextLine(0.0, 0.0, s); - region->GetFormattedText().Append((wxObject *)line); - node = node->Next(); - } - delete stringList; - double actualW = w; - double actualH = h; - // Don't try to resize an object with more than one image (this case should be dealt - // with by overriden handlers) - if ((region->GetFormatMode() & FORMAT_SIZE_TO_CONTENTS) && - (region->GetFormattedText().Number() > 0) && - (m_regions.Number() == 1) && !GraphicsInSizeToContents) - { - oglGetCentredTextExtent(dc, &(region->GetFormattedText()), m_xpos, m_ypos, w, h, &actualW, &actualH); - if ((actualW+m_textMarginX != w ) || (actualH+m_textMarginY != h)) - { - // If we are a descendant of a composite, must make sure the composite gets - // resized properly - wxShape *topAncestor = GetTopAncestor(); - - if (topAncestor != this) - { - // Make sure we don't recurse infinitely - GraphicsInSizeToContents = TRUE; - - wxCompositeShape *composite = (wxCompositeShape *)topAncestor; - composite->Erase(dc); - SetSize(actualW+m_textMarginX, actualH+m_textMarginY); - Move(dc, m_xpos, m_ypos); - composite->CalculateSize(); - if (composite->Selected()) - { - composite->DeleteControlPoints(& dc); - composite->MakeControlPoints(); - composite->MakeMandatoryControlPoints(); - } - // Where infinite recursion might happen if we didn't stop it - composite->Draw(dc); - - GraphicsInSizeToContents = FALSE; - } - else - { - Erase(dc); - SetSize(actualW+m_textMarginX, actualH+m_textMarginY); - Move(dc, m_xpos, m_ypos); - } - SetSize(actualW+m_textMarginX, actualH+m_textMarginY); - Move(dc, m_xpos, m_ypos); - EraseContents(dc); - } - } - oglCentreText(dc, &(region->GetFormattedText()), m_xpos, m_ypos, actualW, actualH, region->GetFormatMode()); - m_formatted = TRUE; -} - -void wxShape::Recentre(wxDC& dc) -{ - double w, h; - GetBoundingBoxMin(&w, &h); - - int noRegions = m_regions.Number(); - for (int i = 0; i < noRegions; i++) - { - wxNode *node = m_regions.Nth(i); - if (node) - { - wxShapeRegion *region = (wxShapeRegion *)node->Data(); - oglCentreText(dc, &(region->GetFormattedText()), m_xpos, m_ypos, w, h, region->GetFormatMode()); - } - } -} - -bool wxShape::GetPerimeterPoint(double x1, double y1, - double x2, double y2, - double *x3, double *y3) -{ - return FALSE; -} - -void wxShape::SetPen(wxPen *the_pen) -{ - m_pen = the_pen; -} - -void wxShape::SetBrush(wxBrush *the_brush) -{ - m_brush = the_brush; -} - -// Get the top-most (non-division) ancestor, or self -wxShape *wxShape::GetTopAncestor() -{ - if (!GetParent()) - return this; - - if (GetParent()->IsKindOf(CLASSINFO(wxDivisionShape))) - return this; - else return GetParent()->GetTopAncestor(); -} - -/* - * Region functions - * - */ -void wxShape::SetFont(wxFont *the_font, int regionId) -{ - m_font = the_font; - wxNode *node = m_regions.Nth(regionId); - if (!node) - return; - wxShapeRegion *region = (wxShapeRegion *)node->Data(); - region->SetFont(the_font); -} - -wxFont *wxShape::GetFont(int n) const -{ - wxNode *node = m_regions.Nth(n); - if (!node) - return NULL; - wxShapeRegion *region = (wxShapeRegion *)node->Data(); - return region->GetFont(); -} - -void wxShape::SetFormatMode(int mode, int regionId) -{ - wxNode *node = m_regions.Nth(regionId); - if (!node) - return; - wxShapeRegion *region = (wxShapeRegion *)node->Data(); - region->SetFormatMode(mode); -} - -int wxShape::GetFormatMode(int regionId) const -{ - wxNode *node = m_regions.Nth(regionId); - if (!node) - return 0; - wxShapeRegion *region = (wxShapeRegion *)node->Data(); - return region->GetFormatMode(); -} - -void wxShape::SetTextColour(const wxString& the_colour, int regionId) -{ - wxColour *wxcolour = wxTheColourDatabase->FindColour(the_colour); - m_textColour = wxcolour; - m_textColourName = the_colour; - - wxNode *node = m_regions.Nth(regionId); - if (!node) - return; - wxShapeRegion *region = (wxShapeRegion *)node->Data(); - region->SetColour(the_colour); -} - -wxString wxShape::GetTextColour(int regionId) const -{ - wxNode *node = m_regions.Nth(regionId); - if (!node) - return wxString(""); - wxShapeRegion *region = (wxShapeRegion *)node->Data(); - return region->GetColour(); -} - -void wxShape::SetRegionName(const wxString& name, int regionId) -{ - wxNode *node = m_regions.Nth(regionId); - if (!node) - return; - wxShapeRegion *region = (wxShapeRegion *)node->Data(); - region->SetName(name); -} - -wxString wxShape::GetRegionName(int regionId) -{ - wxNode *node = m_regions.Nth(regionId); - if (!node) - return wxString(""); - wxShapeRegion *region = (wxShapeRegion *)node->Data(); - return region->GetName(); -} - -int wxShape::GetRegionId(const wxString& name) -{ - wxNode *node = m_regions.First(); - int i = 0; - while (node) - { - wxShapeRegion *region = (wxShapeRegion *)node->Data(); - if (region->GetName() == name) - return i; - node = node->Next(); - i ++; - } - return -1; -} - -// Name all m_regions in all subimages recursively. -void wxShape::NameRegions(const wxString& parentName) -{ - int n = GetNumberOfTextRegions(); - char buf[100]; - for (int i = 0; i < n; i++) - { - if (parentName.Length() > 0) - sprintf(buf, "%s.%d", (const char*) parentName, i); - else - sprintf(buf, "%d", i); - SetRegionName(buf, i); - } - wxNode *node = m_children.First(); - int j = 0; - while (node) - { - wxShape *child = (wxShape *)node->Data(); - if (parentName.Length() > 0) - sprintf(buf, "%s.%d", (const char*) parentName, j); - else - sprintf(buf, "%d", j); - child->NameRegions(buf); - node = node->Next(); - j ++; - } -} - -// Get a region by name, possibly looking recursively into composites. -wxShape *wxShape::FindRegion(const wxString& name, int *regionId) -{ - int id = GetRegionId(name); - if (id > -1) - { - *regionId = id; - return this; - } - - wxNode *node = m_children.First(); - while (node) - { - wxShape *child = (wxShape *)node->Data(); - wxShape *actualImage = child->FindRegion(name, regionId); - if (actualImage) - return actualImage; - node = node->Next(); - } - return NULL; -} - -// Finds all region names for this image (composite or simple). -// Supply empty string list. -void wxShape::FindRegionNames(wxStringList& list) -{ - int n = GetNumberOfTextRegions(); - for (int i = 0; i < n; i++) - { - wxString name(GetRegionName(i)); - list.Add((const char*) name); - } - - wxNode *node = m_children.First(); - while (node) - { - wxShape *child = (wxShape *)node->Data(); - child->FindRegionNames(list); - node = node->Next(); - } -} - -void wxShape::AssignNewIds() -{ -// if (m_id == 0) - m_id = NewId(); - wxNode *node = m_children.First(); - while (node) - { - wxShape *child = (wxShape *)node->Data(); - child->AssignNewIds(); - node = node->Next(); - } -} - -void wxShape::OnDraw(wxDC& dc) -{ -} - -void wxShape::OnMoveLinks(wxDC& dc) -{ - // Want to set the ends of all attached links - // to point to/from this object - - wxNode *current = m_lines.First(); - while (current) - { - wxLineShape *line = (wxLineShape *)current->Data(); - line->GetEventHandler()->OnMoveLink(dc); - current = current->Next(); - } -} - - -void wxShape::OnDrawContents(wxDC& dc) -{ - double bound_x, bound_y; - GetBoundingBoxMin(&bound_x, &bound_y); - if (m_regions.Number() < 1) return; - - if (m_pen) dc.SetPen(* m_pen); - - wxShapeRegion *region = (wxShapeRegion *)m_regions.First()->Data(); - if (region->GetFont()) dc.SetFont(* region->GetFont()); - - dc.SetTextForeground(* (region->GetActualColourObject())); - dc.SetBackgroundMode(wxTRANSPARENT); - if (!m_formatted) - { - oglCentreText(dc, &(region->GetFormattedText()), m_xpos, m_ypos, bound_x, bound_y, region->GetFormatMode()); - m_formatted = TRUE; - } - if (!GetDisableLabel()) - { - oglDrawFormattedText(dc, &(region->GetFormattedText()), m_xpos, m_ypos, bound_x, bound_y, region->GetFormatMode()); - } -} - -void wxShape::DrawContents(wxDC& dc) -{ - GetEventHandler()->OnDrawContents(dc); -} - -void wxShape::OnSize(double x, double y) -{ -} - -bool wxShape::OnMovePre(wxDC& dc, double x, double y, double old_x, double old_y, bool display) -{ - return TRUE; -} - -void wxShape::OnMovePost(wxDC& dc, double x, double y, double old_x, double old_y, bool display) -{ -} - -void wxShape::OnErase(wxDC& dc) -{ - if (!m_visible) - return; - - // Erase links - wxNode *current = m_lines.First(); - while (current) - { - wxLineShape *line = (wxLineShape *)current->Data(); - line->GetEventHandler()->OnErase(dc); - current = current->Next(); - } - GetEventHandler()->OnEraseContents(dc); -} - -void wxShape::OnEraseContents(wxDC& dc) -{ - if (!m_visible) - return; - - double maxX, maxY, minX, minY; - double xp = GetX(); - double yp = GetY(); - GetBoundingBoxMin(&minX, &minY); - GetBoundingBoxMax(&maxX, &maxY); - double topLeftX = (double)(xp - (maxX / 2.0) - 2.0); - double topLeftY = (double)(yp - (maxY / 2.0) - 2.0); - - int penWidth = 0; - if (m_pen) - penWidth = m_pen->GetWidth(); - - dc.SetPen(* g_oglWhiteBackgroundPen); - dc.SetBrush(* g_oglWhiteBackgroundBrush); - dc.DrawRectangle(WXROUND(topLeftX - penWidth), WXROUND(topLeftY - penWidth), - WXROUND(maxX + penWidth*2.0 + 4.0), WXROUND(maxY + penWidth*2.0 + 4.0)); -} - -void wxShape::EraseLinks(wxDC& dc, int attachment, bool recurse) -{ - if (!m_visible) - return; - - wxNode *current = m_lines.First(); - while (current) - { - wxLineShape *line = (wxLineShape *)current->Data(); - if (attachment == -1 || ((line->GetTo() == this && line->GetAttachmentTo() == attachment) || - (line->GetFrom() == this && line->GetAttachmentFrom() == attachment))) - line->GetEventHandler()->OnErase(dc); - current = current->Next(); - } - if (recurse) - { - wxNode *node = m_children.First(); - while (node) - { - wxShape *child = (wxShape *)node->Data(); - child->EraseLinks(dc, attachment, recurse); - node = node->Next(); - } - } -} - -void wxShape::DrawLinks(wxDC& dc, int attachment, bool recurse) -{ - if (!m_visible) - return; - - wxNode *current = m_lines.First(); - while (current) - { - wxLineShape *line = (wxLineShape *)current->Data(); - if (attachment == -1 || - (line->GetTo() == this && line->GetAttachmentTo() == attachment) || - (line->GetFrom() == this && line->GetAttachmentFrom() == attachment)) - line->Draw(dc); - current = current->Next(); - } - if (recurse) - { - wxNode *node = m_children.First(); - while (node) - { - wxShape *child = (wxShape *)node->Data(); - child->DrawLinks(dc, attachment, recurse); - node = node->Next(); - } - } -} - -// Returns TRUE if pt1 <= pt2 in the sense that one point comes before another on an -// edge of the shape. -// attachmentPoint is the attachment point (= side) in question. - -// This is the default, rectangular implementation. -bool wxShape::AttachmentSortTest(int attachmentPoint, const wxRealPoint& pt1, const wxRealPoint& pt2) -{ - int physicalAttachment = LogicalToPhysicalAttachment(attachmentPoint); - switch (physicalAttachment) - { - case 0: - case 2: - { - return (pt1.x <= pt2.x) ; - break; - } - case 1: - case 3: - { - return (pt1.y <= pt2.y) ; - break; - } - } - - return FALSE; -} - -bool wxShape::MoveLineToNewAttachment(wxDC& dc, wxLineShape *to_move, - double x, double y) -{ - if (GetAttachmentMode() == ATTACHMENT_MODE_NONE) - return FALSE; - - int newAttachment, oldAttachment; - double distance; - - // Is (x, y) on this object? If so, find the new attachment point - // the user has moved the point to - bool hit = HitTest(x, y, &newAttachment, &distance); - if (!hit) - return FALSE; - - EraseLinks(dc); - - if (to_move->GetTo() == this) - oldAttachment = to_move->GetAttachmentTo(); - else - oldAttachment = to_move->GetAttachmentFrom(); - - // The links in a new ordering. - wxList newOrdering; - - // First, add all links to the new list. - wxNode *node = m_lines.First(); - while (node) - { - newOrdering.Append(node->Data()); - node = node->Next(); - } - - // Delete the line object from the list of links; we're going to move - // it to another position in the list - newOrdering.DeleteObject(to_move); - - double old_x = (double) -99999.9; - double old_y = (double) -99999.9; - - node = newOrdering.First(); - bool found = FALSE; - - while (!found && node) - { - wxLineShape *line = (wxLineShape *)node->Data(); - if ((line->GetTo() == this && oldAttachment == line->GetAttachmentTo()) || - (line->GetFrom() == this && oldAttachment == line->GetAttachmentFrom())) - { - double startX, startY, endX, endY; - double xp, yp; - line->GetEnds(&startX, &startY, &endX, &endY); - if (line->GetTo() == this) - { - xp = endX; - yp = endY; - } else - { - xp = startX; - yp = startY; - } - - wxRealPoint thisPoint(xp, yp); - wxRealPoint lastPoint(old_x, old_y); - wxRealPoint newPoint(x, y); - - if (AttachmentSortTest(newAttachment, newPoint, thisPoint) && AttachmentSortTest(newAttachment, lastPoint, newPoint)) - { - found = TRUE; - newOrdering.Insert(node, to_move); - } - - old_x = xp; - old_y = yp; - } - node = node->Next(); - } - - if (!found) - newOrdering.Append(to_move); - - GetEventHandler()->OnChangeAttachment(newAttachment, to_move, newOrdering); - - return TRUE; -} - -void wxShape::OnChangeAttachment(int attachment, wxLineShape* line, wxList& ordering) -{ - if (line->GetTo() == this) - line->SetAttachmentTo(attachment); - else - line->SetAttachmentFrom(attachment); - - ApplyAttachmentOrdering(ordering); - - wxClientDC dc(GetCanvas()); - GetCanvas()->PrepareDC(dc); - - MoveLinks(dc); - - if (!GetCanvas()->GetQuickEditMode()) GetCanvas()->Redraw(dc); -} - -// Reorders the lines according to the given list. -void wxShape::ApplyAttachmentOrdering(wxList& linesToSort) -{ - // This is a temporary store of all the lines. - wxList linesStore; - - wxNode *node = m_lines.First(); - while (node) - { - wxLineShape *line = (wxLineShape *)node->Data(); - linesStore.Append(line); - node = node->Next();; - } - - m_lines.Clear(); - - node = linesToSort.First(); - while (node) - { - wxLineShape *line = (wxLineShape *)node->Data(); - if (linesStore.Member(line)) - { - // Done this one - linesStore.DeleteObject(line); - m_lines.Append(line); - } - node = node->Next(); - } - - // Now add any lines that haven't been listed in linesToSort. - node = linesStore.First(); - while (node) - { - wxLineShape *line = (wxLineShape *)node->Data(); - m_lines.Append(line); - node = node->Next(); - } -} - -// Reorders the lines coming into the node image at this attachment -// position, in the order in which they appear in linesToSort. -// Any remaining lines not in the list will be added to the end. -void wxShape::SortLines(int attachment, wxList& linesToSort) -{ - // This is a temporary store of all the lines at this attachment - // point. We'll tick them off as we've processed them. - wxList linesAtThisAttachment; - - wxNode *node = m_lines.First(); - while (node) - { - wxLineShape *line = (wxLineShape *)node->Data(); - wxNode *next = node->Next(); - if ((line->GetTo() == this && line->GetAttachmentTo() == attachment) || - (line->GetFrom() == this && line->GetAttachmentFrom() == attachment)) - { - linesAtThisAttachment.Append(line); - delete node; - node = next; - } - else node = node->Next(); - } - - node = linesToSort.First(); - while (node) - { - wxLineShape *line = (wxLineShape *)node->Data(); - if (linesAtThisAttachment.Member(line)) - { - // Done this one - linesAtThisAttachment.DeleteObject(line); - m_lines.Append(line); - } - node = node->Next(); - } - - // Now add any lines that haven't been listed in linesToSort. - node = linesAtThisAttachment.First(); - while (node) - { - wxLineShape *line = (wxLineShape *)node->Data(); - m_lines.Append(line); - node = node->Next(); - } -} - -void wxShape::OnHighlight(wxDC& dc) -{ -} - -void wxShape::OnLeftClick(double x, double y, int keys, int attachment) -{ - if ((m_sensitivity & OP_CLICK_LEFT) != OP_CLICK_LEFT) - { - attachment = 0; - double dist; - if (m_parent) - { - m_parent->HitTest(x, y, &attachment, &dist); - m_parent->GetEventHandler()->OnLeftClick(x, y, keys, attachment); - } - return; - } -} - -void wxShape::OnRightClick(double x, double y, int keys, int attachment) -{ - if ((m_sensitivity & OP_CLICK_RIGHT) != OP_CLICK_RIGHT) - { - attachment = 0; - double dist; - if (m_parent) - { - m_parent->HitTest(x, y, &attachment, &dist); - m_parent->GetEventHandler()->OnRightClick(x, y, keys, attachment); - } - return; - } -} - -double DragOffsetX = 0.0; -double DragOffsetY = 0.0; - -void wxShape::OnDragLeft(bool draw, double x, double y, int keys, int attachment) -{ - if ((m_sensitivity & OP_DRAG_LEFT) != OP_DRAG_LEFT) - { - attachment = 0; - double dist; - if (m_parent) - { - m_parent->HitTest(x, y, &attachment, &dist); - m_parent->GetEventHandler()->OnDragLeft(draw, x, y, keys, attachment); - } - return; - } - - wxClientDC dc(GetCanvas()); - GetCanvas()->PrepareDC(dc); - - dc.SetLogicalFunction(wxXOR); - - wxPen dottedPen(wxColour(0, 0, 0), 1, wxDOT); - dc.SetPen(dottedPen); - dc.SetBrush(* wxTRANSPARENT_BRUSH); - - double xx, yy; - xx = x + DragOffsetX; - yy = y + DragOffsetY; - - m_canvas->Snap(&xx, &yy); -// m_xpos = xx; m_ypos = yy; - double w, h; - GetBoundingBoxMax(&w, &h); - GetEventHandler()->OnDrawOutline(dc, xx, yy, w, h); -} - -void wxShape::OnBeginDragLeft(double x, double y, int keys, int attachment) -{ - if ((m_sensitivity & OP_DRAG_LEFT) != OP_DRAG_LEFT) - { - attachment = 0; - double dist; - if (m_parent) - { - m_parent->HitTest(x, y, &attachment, &dist); - m_parent->GetEventHandler()->OnBeginDragLeft(x, y, keys, attachment); - } - return; - } - - DragOffsetX = m_xpos - x; - DragOffsetY = m_ypos - y; - - wxClientDC dc(GetCanvas()); - GetCanvas()->PrepareDC(dc); - - // New policy: don't erase shape until end of drag. -// Erase(dc); - - double xx, yy; - xx = x + DragOffsetX; - yy = y + DragOffsetY; - m_canvas->Snap(&xx, &yy); -// m_xpos = xx; m_ypos = yy; - dc.SetLogicalFunction(wxXOR); - - wxPen dottedPen(wxColour(0, 0, 0), 1, wxDOT); - dc.SetPen(dottedPen); - dc.SetBrush((* wxTRANSPARENT_BRUSH)); - - double w, h; - GetBoundingBoxMax(&w, &h); - GetEventHandler()->OnDrawOutline(dc, xx, yy, w, h); - m_canvas->CaptureMouse(); -} - -void wxShape::OnEndDragLeft(double x, double y, int keys, int attachment) -{ - m_canvas->ReleaseMouse(); - if ((m_sensitivity & OP_DRAG_LEFT) != OP_DRAG_LEFT) - { - attachment = 0; - double dist; - if (m_parent) - { - m_parent->HitTest(x, y, &attachment, &dist); - m_parent->GetEventHandler()->OnEndDragLeft(x, y, keys, attachment); - } - return; - } - - wxClientDC dc(GetCanvas()); - GetCanvas()->PrepareDC(dc); - - dc.SetLogicalFunction(wxCOPY); - - double xx = x + DragOffsetX; - double yy = y + DragOffsetY; - m_canvas->Snap(&xx, &yy); -// canvas->Snap(&m_xpos, &m_ypos); - - // New policy: erase shape at end of drag. - Erase(dc); - - Move(dc, xx, yy); - if (m_canvas && !m_canvas->GetQuickEditMode()) m_canvas->Redraw(dc); -} - -void wxShape::OnDragRight(bool draw, double x, double y, int keys, int attachment) -{ - if ((m_sensitivity & OP_DRAG_RIGHT) != OP_DRAG_RIGHT) - { - attachment = 0; - double dist; - if (m_parent) - { - m_parent->HitTest(x, y, &attachment, &dist); - m_parent->GetEventHandler()->OnDragRight(draw, x, y, keys, attachment); - } - return; - } -} - -void wxShape::OnBeginDragRight(double x, double y, int keys, int attachment) -{ - if ((m_sensitivity & OP_DRAG_RIGHT) != OP_DRAG_RIGHT) - { - attachment = 0; - double dist; - if (m_parent) - { - m_parent->HitTest(x, y, &attachment, &dist); - m_parent->GetEventHandler()->OnBeginDragRight(x, y, keys, attachment); - } - return; - } -} - -void wxShape::OnEndDragRight(double x, double y, int keys, int attachment) -{ - if ((m_sensitivity & OP_DRAG_RIGHT) != OP_DRAG_RIGHT) - { - attachment = 0; - double dist; - if (m_parent) - { - m_parent->HitTest(x, y, &attachment, &dist); - m_parent->GetEventHandler()->OnEndDragRight(x, y, keys, attachment); - } - return; - } -} - -void wxShape::OnDrawOutline(wxDC& dc, double x, double y, double w, double h) -{ - double top_left_x = (double)(x - w/2.0); - double top_left_y = (double)(y - h/2.0); - double top_right_x = (double)(top_left_x + w); - double top_right_y = (double)top_left_y; - double bottom_left_x = (double)top_left_x; - double bottom_left_y = (double)(top_left_y + h); - double bottom_right_x = (double)top_right_x; - double bottom_right_y = (double)bottom_left_y; - - wxPoint points[5]; - points[0].x = WXROUND(top_left_x); points[0].y = WXROUND(top_left_y); - points[1].x = WXROUND(top_right_x); points[1].y = WXROUND(top_right_y); - points[2].x = WXROUND(bottom_right_x); points[2].y = WXROUND(bottom_right_y); - points[3].x = WXROUND(bottom_left_x); points[3].y = WXROUND(bottom_left_y); - points[4].x = WXROUND(top_left_x); points[4].y = WXROUND(top_left_y); - - dc.DrawLines(5, points); -} - -void wxShape::Attach(wxShapeCanvas *can) -{ - m_canvas = can; -} - -void wxShape::Detach() -{ - m_canvas = NULL; -} - -void wxShape::Move(wxDC& dc, double x, double y, bool display) -{ - double old_x = m_xpos; - double old_y = m_ypos; - - if (!GetEventHandler()->OnMovePre(dc, x, y, old_x, old_y, display)) - { -// m_xpos = old_x; -// m_ypos = old_y; - return; - } - - m_xpos = x; m_ypos = y; - - ResetControlPoints(); - - if (display) - Draw(dc); - - MoveLinks(dc); - - GetEventHandler()->OnMovePost(dc, x, y, old_x, old_y, display); -} - -void wxShape::MoveLinks(wxDC& dc) -{ - GetEventHandler()->OnMoveLinks(dc); -} - - -void wxShape::Draw(wxDC& dc) -{ - if (m_visible) - { - GetEventHandler()->OnDraw(dc); - GetEventHandler()->OnDrawContents(dc); - GetEventHandler()->OnDrawControlPoints(dc); - GetEventHandler()->OnDrawBranches(dc); - } -} - -void wxShape::Flash() -{ - if (GetCanvas()) - { - wxClientDC dc(GetCanvas()); - GetCanvas()->PrepareDC(dc); - - dc.SetLogicalFunction(wxXOR); - Draw(dc); - dc.SetLogicalFunction(wxCOPY); - Draw(dc); - } -} - -void wxShape::Show(bool show) -{ - m_visible = show; - wxNode *node = m_children.First(); - while (node) - { - wxShape *image = (wxShape *)node->Data(); - image->Show(show); - node = node->Next(); - } -} - -void wxShape::Erase(wxDC& dc) -{ - GetEventHandler()->OnErase(dc); - GetEventHandler()->OnEraseControlPoints(dc); - GetEventHandler()->OnDrawBranches(dc, TRUE); -} - -void wxShape::EraseContents(wxDC& dc) -{ - GetEventHandler()->OnEraseContents(dc); -} - -void wxShape::AddText(const wxString& string) -{ - wxNode *node = m_regions.First(); - if (!node) - return; - wxShapeRegion *region = (wxShapeRegion *)node->Data(); - region->ClearText(); - wxShapeTextLine *new_line = - new wxShapeTextLine(0.0, 0.0, string); - region->GetFormattedText().Append(new_line); - - m_formatted = FALSE; -} - -void wxShape::SetSize(double x, double y, bool recursive) -{ - SetAttachmentSize(x, y); - SetDefaultRegionSize(); -} - -void wxShape::SetAttachmentSize(double w, double h) -{ - double scaleX; - double scaleY; - double width, height; - GetBoundingBoxMin(&width, &height); - if (width == 0.0) - scaleX = 1.0; - else scaleX = w/width; - if (height == 0.0) - scaleY = 1.0; - else scaleY = h/height; - - wxNode *node = m_attachmentPoints.First(); - while (node) - { - wxAttachmentPoint *point = (wxAttachmentPoint *)node->Data(); - point->m_x = (double)(point->m_x * scaleX); - point->m_y = (double)(point->m_y * scaleY); - node = node->Next(); - } -} - -// Add line FROM this object -void wxShape::AddLine(wxLineShape *line, wxShape *other, - int attachFrom, int attachTo, - // The line ordering - int positionFrom, int positionTo) -{ - if (positionFrom == -1) - { - if (!m_lines.Member(line)) - m_lines.Append(line); - } - else - { - // Don't preserve old ordering if we have new ordering instructions - m_lines.DeleteObject(line); - if (positionFrom < m_lines.Number()) - { - wxNode* node = m_lines.Nth(positionFrom); - m_lines.Insert(node, line); - } - else - m_lines.Append(line); - } - - if (positionTo == -1) - { - if (!other->m_lines.Member(line)) - other->m_lines.Append(line); - } - else - { - // Don't preserve old ordering if we have new ordering instructions - other->m_lines.DeleteObject(line); - if (positionTo < other->m_lines.Number()) - { - wxNode* node = other->m_lines.Nth(positionTo); - other->m_lines.Insert(node, line); - } - else - other->m_lines.Append(line); - } -#if 0 - // Wrong: doesn't preserve ordering of shape already linked - m_lines.DeleteObject(line); - other->m_lines.DeleteObject(line); - - if (positionFrom == -1) - m_lines.Append(line); - else - { - if (positionFrom < m_lines.Number()) - { - wxNode* node = m_lines.Nth(positionFrom); - m_lines.Insert(node, line); - } - else - m_lines.Append(line); - } - - if (positionTo == -1) - other->m_lines.Append(line); - else - { - if (positionTo < other->m_lines.Number()) - { - wxNode* node = other->m_lines.Nth(positionTo); - other->m_lines.Insert(node, line); - } - else - other->m_lines.Append(line); - } -#endif - - line->SetFrom(this); - line->SetTo(other); - line->SetAttachments(attachFrom, attachTo); -} - -void wxShape::RemoveLine(wxLineShape *line) -{ - if (line->GetFrom() == this) - line->GetTo()->m_lines.DeleteObject(line); - else - line->GetFrom()->m_lines.DeleteObject(line); - - m_lines.DeleteObject(line); -} - -#ifdef PROLOGIO -void wxShape::WriteAttributes(wxExpr *clause) -{ - clause->AddAttributeValueString("type", GetClassInfo()->GetClassName()); - clause->AddAttributeValue("id", m_id); - - if (m_pen) - { - int penWidth = m_pen->GetWidth(); - int penStyle = m_pen->GetStyle(); - if (penWidth != 1) - clause->AddAttributeValue("pen_width", (long)penWidth); - if (penStyle != wxSOLID) - clause->AddAttributeValue("pen_style", (long)penStyle); - - wxString penColour = wxTheColourDatabase->FindName(m_pen->GetColour()); - if (penColour == "") - { - wxString hex(oglColourToHex(m_pen->GetColour())); - hex = wxString("#") + hex; - clause->AddAttributeValueString("pen_colour", hex); - } - else if (penColour != "BLACK") - clause->AddAttributeValueString("pen_colour", penColour); - } - - if (m_brush) - { - wxString brushColour = wxTheColourDatabase->FindName(m_brush->GetColour()); - - if (brushColour == "") - { - wxString hex(oglColourToHex(m_brush->GetColour())); - hex = wxString("#") + hex; - clause->AddAttributeValueString("brush_colour", hex); - } - else if (brushColour != "WHITE") - clause->AddAttributeValueString("brush_colour", brushColour); - - if (m_brush->GetStyle() != wxSOLID) - clause->AddAttributeValue("brush_style", (long)m_brush->GetStyle()); - } - - // Output line ids - - int n_lines = m_lines.Number(); - if (n_lines > 0) - { - wxExpr *list = new wxExpr(wxExprList); - wxNode *node = m_lines.First(); - while (node) - { - wxShape *line = (wxShape *)node->Data(); - wxExpr *id_expr = new wxExpr(line->GetId()); - list->Append(id_expr); - node = node->Next(); - } - clause->AddAttributeValue("arcs", list); - } - - // Miscellaneous members - if (m_attachmentMode != 0) - clause->AddAttributeValue("use_attachments", (long)m_attachmentMode); - if (m_sensitivity != OP_ALL) - clause->AddAttributeValue("sensitivity", (long)m_sensitivity); - if (!m_spaceAttachments) - clause->AddAttributeValue("space_attachments", (long)m_spaceAttachments); - if (m_fixedWidth) - clause->AddAttributeValue("fixed_width", (long)m_fixedWidth); - if (m_fixedHeight) - clause->AddAttributeValue("fixed_height", (long)m_fixedHeight); - if (m_shadowMode != SHADOW_NONE) - clause->AddAttributeValue("shadow_mode", (long)m_shadowMode); - if (m_centreResize != TRUE) - clause->AddAttributeValue("centre_resize", (long)0); - clause->AddAttributeValue("maintain_aspect_ratio", (long) m_maintainAspectRatio); - if (m_highlighted != FALSE) - clause->AddAttributeValue("hilite", (long)m_highlighted); - - if (m_parent) // For composite objects - clause->AddAttributeValue("parent", (long)m_parent->GetId()); - - if (m_rotation != 0.0) - clause->AddAttributeValue("rotation", m_rotation); - - if (!this->IsKindOf(CLASSINFO(wxLineShape))) - { - clause->AddAttributeValue("neck_length", (long) m_branchNeckLength); - clause->AddAttributeValue("stem_length", (long) m_branchStemLength); - clause->AddAttributeValue("branch_spacing", (long) m_branchSpacing); - clause->AddAttributeValue("branch_style", (long) m_branchStyle); - } - - // Write user-defined attachment points, if any - if (m_attachmentPoints.Number() > 0) - { - wxExpr *attachmentList = new wxExpr(wxExprList); - wxNode *node = m_attachmentPoints.First(); - while (node) - { - wxAttachmentPoint *point = (wxAttachmentPoint *)node->Data(); - wxExpr *pointExpr = new wxExpr(wxExprList); - pointExpr->Append(new wxExpr((long)point->m_id)); - pointExpr->Append(new wxExpr(point->m_x)); - pointExpr->Append(new wxExpr(point->m_y)); - attachmentList->Append(pointExpr); - node = node->Next(); - } - clause->AddAttributeValue("user_attachments", attachmentList); - } - - // Write text regions - WriteRegions(clause); -} - -void wxShape::WriteRegions(wxExpr *clause) -{ - // Output regions as region1 = (...), region2 = (...), etc - // and formatted text as text1 = (...), text2 = (...) etc. - int regionNo = 1; - char regionNameBuf[20]; - char textNameBuf[20]; - wxNode *node = m_regions.First(); - while (node) - { - wxShapeRegion *region = (wxShapeRegion *)node->Data(); - sprintf(regionNameBuf, "region%d", regionNo); - sprintf(textNameBuf, "text%d", regionNo); - - // Original text and region attributes: - // region1 = (regionName regionText x y width height minWidth minHeight proportionX proportionY - // formatMode fontSize fontFamily fontStyle fontWeight textColour) - wxExpr *regionExpr = new wxExpr(wxExprList); - regionExpr->Append(new wxExpr(wxExprString, region->m_regionName)); - regionExpr->Append(new wxExpr(wxExprString, region->m_regionText)); - - regionExpr->Append(new wxExpr(region->m_x)); - regionExpr->Append(new wxExpr(region->m_y)); - regionExpr->Append(new wxExpr(region->GetWidth())); - regionExpr->Append(new wxExpr(region->GetHeight())); - - regionExpr->Append(new wxExpr(region->m_minWidth)); - regionExpr->Append(new wxExpr(region->m_minHeight)); - regionExpr->Append(new wxExpr(region->m_regionProportionX)); - regionExpr->Append(new wxExpr(region->m_regionProportionY)); - - regionExpr->Append(new wxExpr((long)region->m_formatMode)); - - regionExpr->Append(new wxExpr((long)(region->m_font ? region->m_font->GetPointSize() : 10))); - regionExpr->Append(new wxExpr((long)(region->m_font ? region->m_font->GetFamily() : wxDEFAULT))); - regionExpr->Append(new wxExpr((long)(region->m_font ? region->m_font->GetStyle() : wxDEFAULT))); - regionExpr->Append(new wxExpr((long)(region->m_font ? region->m_font->GetWeight() : wxNORMAL))); - regionExpr->Append(new wxExpr(wxExprString, region->m_textColour)); - - // New members for pen colour/style - regionExpr->Append(new wxExpr(wxExprString, region->m_penColour)); - regionExpr->Append(new wxExpr((long)region->m_penStyle)); - - // Formatted text: - // text1 = ((x y string) (x y string) ...) - wxExpr *textExpr = new wxExpr(wxExprList); - - wxNode *textNode = region->m_formattedText.First(); - while (textNode) - { - wxShapeTextLine *line = (wxShapeTextLine *)textNode->Data(); - wxExpr *list2 = new wxExpr(wxExprList); - list2->Append(new wxExpr(line->GetX())); - list2->Append(new wxExpr(line->GetY())); - list2->Append(new wxExpr(wxExprString, line->GetText())); - textExpr->Append(list2); - textNode = textNode->Next(); - } - - // Now add both attributes to the clause - clause->AddAttributeValue(regionNameBuf, regionExpr); - clause->AddAttributeValue(textNameBuf, textExpr); - - node = node->Next(); - regionNo ++; - } -} - -void wxShape::ReadAttributes(wxExpr *clause) -{ - clause->GetAttributeValue("id", m_id); - RegisterId(m_id); - - clause->GetAttributeValue("x", m_xpos); - clause->GetAttributeValue("y", m_ypos); - - // Input text strings (FOR COMPATIBILITY WITH OLD FILES ONLY. SEE REGION CODE BELOW.) - ClearText(); - wxExpr *strings = clause->AttributeValue("text"); - if (strings && strings->Type() == wxExprList) - { - m_formatted = TRUE; // Assume text is formatted unless we prove otherwise - wxExpr *node = strings->value.first; - while (node) - { - wxExpr *string_expr = node; - double the_x = 0.0; - double the_y = 0.0; - wxString the_string(""); - - // string_expr can either be a string, or a list of - // 3 elements: x, y, and string. - if (string_expr->Type() == wxExprString) - { - the_string = string_expr->StringValue(); - m_formatted = FALSE; - } - else if (string_expr->Type() == wxExprList) - { - wxExpr *first = string_expr->value.first; - wxExpr *second = first ? first->next : (wxExpr*) NULL; - wxExpr *third = second ? second->next : (wxExpr*) NULL; - - if (first && second && third && - (first->Type() == wxExprReal || first->Type() == wxExprInteger) && - (second->Type() == wxExprReal || second->Type() == wxExprInteger) && - third->Type() == wxExprString) - { - if (first->Type() == wxExprReal) - the_x = first->RealValue(); - else the_x = (double)first->IntegerValue(); - - if (second->Type() == wxExprReal) - the_y = second->RealValue(); - else the_y = (double)second->IntegerValue(); - - the_string = third->StringValue(); - } - } - wxShapeTextLine *line = - new wxShapeTextLine(the_x, the_y, (char*) (const char*) the_string); - m_text.Append(line); - - node = node->next; - } - } - - wxString pen_string = ""; - wxString brush_string = ""; - int pen_width = 1; - int pen_style = wxSOLID; - int brush_style = wxSOLID; - m_attachmentMode = ATTACHMENT_MODE_NONE; - - clause->GetAttributeValue("pen_colour", pen_string); - clause->GetAttributeValue("text_colour", m_textColourName); - - SetTextColour(m_textColourName); - - clause->GetAttributeValue("region_name", m_regionName); - - clause->GetAttributeValue("brush_colour", brush_string); - clause->GetAttributeValue("pen_width", pen_width); - clause->GetAttributeValue("pen_style", pen_style); - clause->GetAttributeValue("brush_style", brush_style); - - int iVal = (int) m_attachmentMode; - clause->GetAttributeValue("use_attachments", iVal); - m_attachmentMode = iVal; - - clause->GetAttributeValue("sensitivity", m_sensitivity); - - iVal = (int) m_spaceAttachments; - clause->GetAttributeValue("space_attachments", iVal); - m_spaceAttachments = (iVal != 0); - - iVal = (int) m_fixedWidth; - clause->GetAttributeValue("fixed_width", iVal); - m_fixedWidth = (iVal != 0); - - iVal = (int) m_fixedHeight; - clause->GetAttributeValue("fixed_height", iVal); - m_fixedHeight = (iVal != 0); - - clause->GetAttributeValue("format_mode", m_formatMode); - clause->GetAttributeValue("shadow_mode", m_shadowMode); - - iVal = m_branchNeckLength; - clause->GetAttributeValue("neck_length", iVal); - m_branchNeckLength = iVal; - - iVal = m_branchStemLength; - clause->GetAttributeValue("stem_length", iVal); - m_branchStemLength = iVal; - - iVal = m_branchSpacing; - clause->GetAttributeValue("branch_spacing", iVal); - m_branchSpacing = iVal; - - clause->GetAttributeValue("branch_style", m_branchStyle); - - iVal = (int) m_centreResize; - clause->GetAttributeValue("centre_resize", iVal); - m_centreResize = (iVal != 0); - - iVal = (int) m_maintainAspectRatio; - clause->GetAttributeValue("maintain_aspect_ratio", iVal); - m_maintainAspectRatio = (iVal != 0); - - iVal = (int) m_highlighted; - clause->GetAttributeValue("hilite", iVal); - m_highlighted = (iVal != 0); - - clause->GetAttributeValue("rotation", m_rotation); - - if (pen_string == "") - pen_string = "BLACK"; - if (brush_string == "") - brush_string = "WHITE"; - - if (pen_string[0] == '#') - { - wxColour col(oglHexToColour(pen_string.After('#'))); - m_pen = wxThePenList->FindOrCreatePen(col, pen_width, pen_style); - } - else - m_pen = wxThePenList->FindOrCreatePen(pen_string, pen_width, pen_style); - - if (!m_pen) - m_pen = wxBLACK_PEN; - - if (brush_string[0] == '#') - { - wxColour col(oglHexToColour(brush_string.After('#'))); - m_brush = wxTheBrushList->FindOrCreateBrush(col, brush_style); - } - else - m_brush = wxTheBrushList->FindOrCreateBrush(brush_string, brush_style); - - if (!m_brush) - m_brush = wxWHITE_BRUSH; - - int point_size = 10; - clause->GetAttributeValue("point_size", point_size); - SetFont(oglMatchFont(point_size)); - - // Read user-defined attachment points, if any - wxExpr *attachmentList = clause->AttributeValue("user_attachments"); - if (attachmentList) - { - wxExpr *pointExpr = attachmentList->GetFirst(); - while (pointExpr) - { - wxExpr *idExpr = pointExpr->Nth(0); - wxExpr *xExpr = pointExpr->Nth(1); - wxExpr *yExpr = pointExpr->Nth(2); - if (idExpr && xExpr && yExpr) - { - wxAttachmentPoint *point = new wxAttachmentPoint; - point->m_id = (int)idExpr->IntegerValue(); - point->m_x = xExpr->RealValue(); - point->m_y = yExpr->RealValue(); - m_attachmentPoints.Append((wxObject *)point); - } - pointExpr = pointExpr->GetNext(); - } - } - - // Read text regions - ReadRegions(clause); -} - -void wxShape::ReadRegions(wxExpr *clause) -{ - ClearRegions(); - - // region1 = (regionName regionText x y width height minWidth minHeight proportionX proportionY - // formatMode fontSize fontFamily fontStyle fontWeight textColour) - int regionNo = 1; - char regionNameBuf[20]; - char textNameBuf[20]; - - wxExpr *regionExpr = NULL; - wxExpr *textExpr = NULL; - sprintf(regionNameBuf, "region%d", regionNo); - sprintf(textNameBuf, "text%d", regionNo); - - m_formatted = TRUE; // Assume text is formatted unless we prove otherwise - - while ((regionExpr = clause->AttributeValue(regionNameBuf))) - { - /* - * Get the region information - * - */ - - wxString regionName(""); - wxString regionText(""); - double x = 0.0; - double y = 0.0; - double width = 0.0; - double height = 0.0; - double minWidth = 5.0; - double minHeight = 5.0; - double m_regionProportionX = -1.0; - double m_regionProportionY = -1.0; - int formatMode = FORMAT_NONE; - int fontSize = 10; - int fontFamily = wxSWISS; - int fontStyle = wxNORMAL; - int fontWeight = wxNORMAL; - wxString regionTextColour(""); - wxString penColour(""); - int penStyle = wxSOLID; - - if (regionExpr->Type() == wxExprList) - { - wxExpr *nameExpr = regionExpr->Nth(0); - wxExpr *textExpr = regionExpr->Nth(1); - wxExpr *xExpr = regionExpr->Nth(2); - wxExpr *yExpr = regionExpr->Nth(3); - wxExpr *widthExpr = regionExpr->Nth(4); - wxExpr *heightExpr = regionExpr->Nth(5); - wxExpr *minWidthExpr = regionExpr->Nth(6); - wxExpr *minHeightExpr = regionExpr->Nth(7); - wxExpr *propXExpr = regionExpr->Nth(8); - wxExpr *propYExpr = regionExpr->Nth(9); - wxExpr *formatExpr = regionExpr->Nth(10); - wxExpr *sizeExpr = regionExpr->Nth(11); - wxExpr *familyExpr = regionExpr->Nth(12); - wxExpr *styleExpr = regionExpr->Nth(13); - wxExpr *weightExpr = regionExpr->Nth(14); - wxExpr *colourExpr = regionExpr->Nth(15); - wxExpr *penColourExpr = regionExpr->Nth(16); - wxExpr *penStyleExpr = regionExpr->Nth(17); - - regionName = nameExpr->StringValue(); - regionText = textExpr->StringValue(); - - x = xExpr->RealValue(); - y = yExpr->RealValue(); - - width = widthExpr->RealValue(); - height = heightExpr->RealValue(); - - minWidth = minWidthExpr->RealValue(); - minHeight = minHeightExpr->RealValue(); - - m_regionProportionX = propXExpr->RealValue(); - m_regionProportionY = propYExpr->RealValue(); - - formatMode = (int) formatExpr->IntegerValue(); - fontSize = (int)sizeExpr->IntegerValue(); - fontFamily = (int)familyExpr->IntegerValue(); - fontStyle = (int)styleExpr->IntegerValue(); - fontWeight = (int)weightExpr->IntegerValue(); - - if (colourExpr) - { - regionTextColour = colourExpr->StringValue(); - } - else - regionTextColour = "BLACK"; - - if (penColourExpr) - penColour = penColourExpr->StringValue(); - if (penStyleExpr) - penStyle = (int)penStyleExpr->IntegerValue(); - } - wxFont *font = wxTheFontList->FindOrCreateFont(fontSize, fontFamily, fontStyle, fontWeight); - - wxShapeRegion *region = new wxShapeRegion; - region->SetProportions(m_regionProportionX, m_regionProportionY); - region->SetFont(font); - region->SetSize(width, height); - region->SetPosition(x, y); - region->SetMinSize(minWidth, minHeight); - region->SetFormatMode(formatMode); - region->SetPenStyle(penStyle); - if (penColour != "") - region->SetPenColour(penColour); - - region->m_textColour = regionTextColour; - region->m_regionText = regionText; - region->m_regionName = regionName; - - m_regions.Append(region); - - /* - * Get the formatted text strings - * - */ - textExpr = clause->AttributeValue(textNameBuf); - if (textExpr && (textExpr->Type() == wxExprList)) - { - wxExpr *node = textExpr->value.first; - while (node) - { - wxExpr *string_expr = node; - double the_x = 0.0; - double the_y = 0.0; - wxString the_string(""); - - // string_expr can either be a string, or a list of - // 3 elements: x, y, and string. - if (string_expr->Type() == wxExprString) - { - the_string = string_expr->StringValue(); - m_formatted = FALSE; - } - else if (string_expr->Type() == wxExprList) - { - wxExpr *first = string_expr->value.first; - wxExpr *second = first ? first->next : (wxExpr*) NULL; - wxExpr *third = second ? second->next : (wxExpr*) NULL; - - if (first && second && third && - (first->Type() == wxExprReal || first->Type() == wxExprInteger) && - (second->Type() == wxExprReal || second->Type() == wxExprInteger) && - third->Type() == wxExprString) - { - if (first->Type() == wxExprReal) - the_x = first->RealValue(); - else the_x = (double)first->IntegerValue(); - - if (second->Type() == wxExprReal) - the_y = second->RealValue(); - else the_y = (double)second->IntegerValue(); - - the_string = third->StringValue(); - } - } - if (the_string) - { - wxShapeTextLine *line = - new wxShapeTextLine(the_x, the_y, (char*) (const char*) the_string); - region->m_formattedText.Append(line); - } - node = node->next; - } - } - - regionNo ++; - sprintf(regionNameBuf, "region%d", regionNo); - sprintf(textNameBuf, "text%d", regionNo); - } - - // Compatibility: check for no regions (old file). - // Lines and divided rectangles must deal with this compatibility - // theirselves. Composites _may_ not have any regions anyway. - if ((m_regions.Number() == 0) && - !this->IsKindOf(CLASSINFO(wxLineShape)) && !this->IsKindOf(CLASSINFO(wxDividedShape)) && - !this->IsKindOf(CLASSINFO(wxCompositeShape))) - { - wxShapeRegion *newRegion = new wxShapeRegion; - newRegion->SetName("0"); - m_regions.Append((wxObject *)newRegion); - if (m_text.Number() > 0) - { - newRegion->ClearText(); - wxNode *node = m_text.First(); - while (node) - { - wxShapeTextLine *textLine = (wxShapeTextLine *)node->Data(); - wxNode *next = node->Next(); - newRegion->GetFormattedText().Append((wxObject *)textLine); - delete node; - node = next; - } - } - } -} - -#endif - -void wxShape::Copy(wxShape& copy) -{ - copy.m_id = m_id; - copy.m_xpos = m_xpos; - copy.m_ypos = m_ypos; - copy.m_pen = m_pen; - copy.m_brush = m_brush; - copy.m_textColour = m_textColour; - copy.m_centreResize = m_centreResize; - copy.m_maintainAspectRatio = m_maintainAspectRatio; - copy.m_attachmentMode = m_attachmentMode; - copy.m_spaceAttachments = m_spaceAttachments; - copy.m_highlighted = m_highlighted; - copy.m_rotation = m_rotation; - copy.m_textColourName = m_textColourName; - copy.m_regionName = m_regionName; - - copy.m_sensitivity = m_sensitivity; - copy.m_draggable = m_draggable; - copy.m_fixedWidth = m_fixedWidth; - copy.m_fixedHeight = m_fixedHeight; - copy.m_formatMode = m_formatMode; - copy.m_drawHandles = m_drawHandles; - - copy.m_visible = m_visible; - copy.m_shadowMode = m_shadowMode; - copy.m_shadowOffsetX = m_shadowOffsetX; - copy.m_shadowOffsetY = m_shadowOffsetY; - copy.m_shadowBrush = m_shadowBrush; - - copy.m_branchNeckLength = m_branchNeckLength; - copy.m_branchStemLength = m_branchStemLength; - copy.m_branchSpacing = m_branchSpacing; - - // Copy text regions - copy.ClearRegions(); - wxNode *node = m_regions.First(); - while (node) - { - wxShapeRegion *region = (wxShapeRegion *)node->Data(); - wxShapeRegion *newRegion = new wxShapeRegion(*region); - copy.m_regions.Append(newRegion); - node = node->Next(); - } - - // Copy attachments - copy.ClearAttachments(); - node = m_attachmentPoints.First(); - while (node) - { - wxAttachmentPoint *point = (wxAttachmentPoint *)node->Data(); - wxAttachmentPoint *newPoint = new wxAttachmentPoint; - newPoint->m_id = point->m_id; - newPoint->m_x = point->m_x; - newPoint->m_y = point->m_y; - copy.m_attachmentPoints.Append((wxObject *)newPoint); - node = node->Next(); - } - - // Copy lines - copy.m_lines.Clear(); - node = m_lines.First(); - while (node) - { - wxLineShape* line = (wxLineShape*) node->Data(); - copy.m_lines.Append(line); - node = node->Next(); - } -} - -// Create and return a new, fully copied object. -wxShape *wxShape::CreateNewCopy(bool resetMapping, bool recompute) -{ - if (resetMapping) - oglObjectCopyMapping.Clear(); - - wxShape* newObject = (wxShape*) GetClassInfo()->CreateObject(); - - wxASSERT( (newObject != NULL) ); - wxASSERT( (newObject->IsKindOf(CLASSINFO(wxShape))) ); - - Copy(*newObject); - - if (GetEventHandler() != this) - { - wxShapeEvtHandler* newHandler = GetEventHandler()->CreateNewCopy(); - newObject->SetEventHandler(newHandler); - newObject->SetPreviousHandler(NULL); - newHandler->SetPreviousHandler(newObject); - newHandler->SetShape(newObject); - } - - if (recompute) - newObject->Recompute(); - return newObject; -} - -// Does the copying for this object, including copying event -// handler data if any. Calls the virtual Copy function. -void wxShape::CopyWithHandler(wxShape& copy) -{ - Copy(copy); - - if (GetEventHandler() != this) - { - wxASSERT( copy.GetEventHandler() != NULL ); - wxASSERT( copy.GetEventHandler() != (©) ); - wxASSERT( GetEventHandler()->GetClassInfo() == copy.GetEventHandler()->GetClassInfo() ); - GetEventHandler()->CopyData(* (copy.GetEventHandler())); - } -} - - -// Default - make 6 control points -void wxShape::MakeControlPoints() -{ - double maxX, maxY, minX, minY; - - GetBoundingBoxMax(&maxX, &maxY); - GetBoundingBoxMin(&minX, &minY); - - double widthMin = (double)(minX + CONTROL_POINT_SIZE + 2); - double heightMin = (double)(minY + CONTROL_POINT_SIZE + 2); - - // Offsets from main object - double top = (double)(- (heightMin / 2.0)); - double bottom = (double)(heightMin / 2.0 + (maxY - minY)); - double left = (double)(- (widthMin / 2.0)); - double right = (double)(widthMin / 2.0 + (maxX - minX)); - - wxControlPoint *control = new wxControlPoint(m_canvas, this, CONTROL_POINT_SIZE, left, top, - CONTROL_POINT_DIAGONAL); - m_canvas->AddShape(control); - m_controlPoints.Append(control); - - control = new wxControlPoint(m_canvas, this, CONTROL_POINT_SIZE, 0, top, - CONTROL_POINT_VERTICAL); - m_canvas->AddShape(control); - m_controlPoints.Append(control); - - control = new wxControlPoint(m_canvas, this, CONTROL_POINT_SIZE, right, top, - CONTROL_POINT_DIAGONAL); - m_canvas->AddShape(control); - m_controlPoints.Append(control); - - control = new wxControlPoint(m_canvas, this, CONTROL_POINT_SIZE, right, 0, - CONTROL_POINT_HORIZONTAL); - m_canvas->AddShape(control); - m_controlPoints.Append(control); - - control = new wxControlPoint(m_canvas, this, CONTROL_POINT_SIZE, right, bottom, - CONTROL_POINT_DIAGONAL); - m_canvas->AddShape(control); - m_controlPoints.Append(control); - - control = new wxControlPoint(m_canvas, this, CONTROL_POINT_SIZE, 0, bottom, - CONTROL_POINT_VERTICAL); - m_canvas->AddShape(control); - m_controlPoints.Append(control); - - control = new wxControlPoint(m_canvas, this, CONTROL_POINT_SIZE, left, bottom, - CONTROL_POINT_DIAGONAL); - m_canvas->AddShape(control); - m_controlPoints.Append(control); - - control = new wxControlPoint(m_canvas, this, CONTROL_POINT_SIZE, left, 0, - CONTROL_POINT_HORIZONTAL); - m_canvas->AddShape(control); - m_controlPoints.Append(control); - -} - -void wxShape::MakeMandatoryControlPoints() -{ - wxNode *node = m_children.First(); - while (node) - { - wxShape *child = (wxShape *)node->Data(); - child->MakeMandatoryControlPoints(); - node = node->Next(); - } -} - -void wxShape::ResetMandatoryControlPoints() -{ - wxNode *node = m_children.First(); - while (node) - { - wxShape *child = (wxShape *)node->Data(); - child->ResetMandatoryControlPoints(); - node = node->Next(); - } -} - -void wxShape::ResetControlPoints() -{ - ResetMandatoryControlPoints(); - - if (m_controlPoints.Number() < 1) - return; - - double maxX, maxY, minX, minY; - - GetBoundingBoxMax(&maxX, &maxY); - GetBoundingBoxMin(&minX, &minY); - - double widthMin = (double)(minX + CONTROL_POINT_SIZE + 2); - double heightMin = (double)(minY + CONTROL_POINT_SIZE + 2); - - // Offsets from main object - double top = (double)(- (heightMin / 2.0)); - double bottom = (double)(heightMin / 2.0 + (maxY - minY)); - double left = (double)(- (widthMin / 2.0)); - double right = (double)(widthMin / 2.0 + (maxX - minX)); - - wxNode *node = m_controlPoints.First(); - wxControlPoint *control = (wxControlPoint *)node->Data(); - control->m_xoffset = left; control->m_yoffset = top; - - node = node->Next(); control = (wxControlPoint *)node->Data(); - control->m_xoffset = 0; control->m_yoffset = top; - - node = node->Next(); control = (wxControlPoint *)node->Data(); - control->m_xoffset = right; control->m_yoffset = top; - - node = node->Next(); control = (wxControlPoint *)node->Data(); - control->m_xoffset = right; control->m_yoffset = 0; - - node = node->Next(); control = (wxControlPoint *)node->Data(); - control->m_xoffset = right; control->m_yoffset = bottom; - - node = node->Next(); control = (wxControlPoint *)node->Data(); - control->m_xoffset = 0; control->m_yoffset = bottom; - - node = node->Next(); control = (wxControlPoint *)node->Data(); - control->m_xoffset = left; control->m_yoffset = bottom; - - node = node->Next(); control = (wxControlPoint *)node->Data(); - control->m_xoffset = left; control->m_yoffset = 0; -} - -void wxShape::DeleteControlPoints(wxDC *dc) -{ - wxNode *node = m_controlPoints.First(); - while (node) - { - wxControlPoint *control = (wxControlPoint *)node->Data(); - if (dc) - control->GetEventHandler()->OnErase(*dc); - m_canvas->RemoveShape(control); - delete control; - delete node; - node = m_controlPoints.First(); - } - // Children of divisions are contained objects, - // so stop here - if (!IsKindOf(CLASSINFO(wxDivisionShape))) - { - node = m_children.First(); - while (node) - { - wxShape *child = (wxShape *)node->Data(); - child->DeleteControlPoints(dc); - node = node->Next(); - } - } -} - -void wxShape::OnDrawControlPoints(wxDC& dc) -{ - if (!m_drawHandles) - return; - - dc.SetBrush(* wxBLACK_BRUSH); - dc.SetPen(* wxBLACK_PEN); - - wxNode *node = m_controlPoints.First(); - while (node) - { - wxControlPoint *control = (wxControlPoint *)node->Data(); - control->Draw(dc); - node = node->Next(); - } - // Children of divisions are contained objects, - // so stop here. - // This test bypasses the type facility for speed - // (critical when drawing) - if (!IsKindOf(CLASSINFO(wxDivisionShape))) - { - node = m_children.First(); - while (node) - { - wxShape *child = (wxShape *)node->Data(); - child->GetEventHandler()->OnDrawControlPoints(dc); - node = node->Next(); - } - } -} - -void wxShape::OnEraseControlPoints(wxDC& dc) -{ - wxNode *node = m_controlPoints.First(); - while (node) - { - wxControlPoint *control = (wxControlPoint *)node->Data(); - control->Erase(dc); - node = node->Next(); - } - if (!IsKindOf(CLASSINFO(wxDivisionShape))) - { - node = m_children.First(); - while (node) - { - wxShape *child = (wxShape *)node->Data(); - child->GetEventHandler()->OnEraseControlPoints(dc); - node = node->Next(); - } - } -} - -void wxShape::Select(bool select, wxDC* dc) -{ - m_selected = select; - if (select) - { - MakeControlPoints(); - // Children of divisions are contained objects, - // so stop here - if (!IsKindOf(CLASSINFO(wxDivisionShape))) - { - wxNode *node = m_children.First(); - while (node) - { - wxShape *child = (wxShape *)node->Data(); - child->MakeMandatoryControlPoints(); - node = node->Next(); - } - } - if (dc) - GetEventHandler()->OnDrawControlPoints(*dc); - } - if (!select) - { - DeleteControlPoints(dc); - if (!IsKindOf(CLASSINFO(wxDivisionShape))) - { - wxNode *node = m_children.First(); - while (node) - { - wxShape *child = (wxShape *)node->Data(); - child->DeleteControlPoints(dc); - node = node->Next(); - } - } - } -} - -bool wxShape::Selected() const -{ - return m_selected; -} - -bool wxShape::AncestorSelected() const -{ - if (m_selected) return TRUE; - if (!GetParent()) - return FALSE; - else - return GetParent()->AncestorSelected(); -} - -int wxShape::GetNumberOfAttachments() const -{ - // Should return the MAXIMUM attachment point id here, - // so higher-level functions can iterate through all attachments, - // even if they're not contiguous. - if (m_attachmentPoints.Number() == 0) - return 4; - else - { - int maxN = 3; - wxNode *node = m_attachmentPoints.First(); - while (node) - { - wxAttachmentPoint *point = (wxAttachmentPoint *)node->Data(); - if (point->m_id > maxN) - maxN = point->m_id; - node = node->Next(); - } - return maxN+1;; - } -} - -bool wxShape::AttachmentIsValid(int attachment) const -{ - if (m_attachmentPoints.Number() == 0) - { - return ((attachment >= 0) && (attachment < 4)) ; - } - - wxNode *node = m_attachmentPoints.First(); - while (node) - { - wxAttachmentPoint *point = (wxAttachmentPoint *)node->Data(); - if (point->m_id == attachment) - return TRUE; - node = node->Next(); - } - return FALSE; -} - -bool wxShape::GetAttachmentPosition(int attachment, double *x, double *y, - int nth, int no_arcs, wxLineShape *line) -{ - if (m_attachmentMode == ATTACHMENT_MODE_NONE) - { - *x = m_xpos; *y = m_ypos; - return TRUE; - } - else if (m_attachmentMode == ATTACHMENT_MODE_BRANCHING) - { - wxRealPoint pt, stemPt; - GetBranchingAttachmentPoint(attachment, nth, pt, stemPt); - *x = pt.x; - *y = pt.y; - return TRUE; - } - else if (m_attachmentMode == ATTACHMENT_MODE_EDGE) - { - if (m_attachmentPoints.Number() > 0) - { - wxNode *node = m_attachmentPoints.First(); - while (node) - { - wxAttachmentPoint *point = (wxAttachmentPoint *)node->Data(); - if (point->m_id == attachment) - { - *x = (double)(m_xpos + point->m_x); - *y = (double)(m_ypos + point->m_y); - return TRUE; - } - node = node->Next(); - } - *x = m_xpos; *y = m_ypos; - return FALSE; - } - else - { - // Assume is rectangular - double w, h; - GetBoundingBoxMax(&w, &h); - double top = (double)(m_ypos + h/2.0); - double bottom = (double)(m_ypos - h/2.0); - double left = (double)(m_xpos - w/2.0); - double right = (double)(m_xpos + w/2.0); - - bool isEnd = (line && line->IsEnd(this)); - - int physicalAttachment = LogicalToPhysicalAttachment(attachment); - - // Simplified code - switch (physicalAttachment) - { - case 0: - { - wxRealPoint pt = CalcSimpleAttachment(wxRealPoint(left, bottom), wxRealPoint(right, bottom), - nth, no_arcs, line); - - *x = pt.x; *y = pt.y; - break; - } - case 1: - { - wxRealPoint pt = CalcSimpleAttachment(wxRealPoint(right, bottom), wxRealPoint(right, top), - nth, no_arcs, line); - - *x = pt.x; *y = pt.y; - break; - } - case 2: - { - wxRealPoint pt = CalcSimpleAttachment(wxRealPoint(left, top), wxRealPoint(right, top), - nth, no_arcs, line); - - *x = pt.x; *y = pt.y; - break; - } - case 3: - { - wxRealPoint pt = CalcSimpleAttachment(wxRealPoint(left, bottom), wxRealPoint(left, top), - nth, no_arcs, line); - - *x = pt.x; *y = pt.y; - break; - } - default: - { - return FALSE; - break; - } - } - return TRUE; - } - } - return FALSE; -} - -void wxShape::GetBoundingBoxMax(double *w, double *h) -{ - double ww, hh; - GetBoundingBoxMin(&ww, &hh); - if (m_shadowMode != SHADOW_NONE) - { - ww += m_shadowOffsetX; - hh += m_shadowOffsetY; - } - *w = ww; - *h = hh; -} - -// Returns TRUE if image is a descendant of this composite -bool wxShape::HasDescendant(wxShape *image) -{ - if (image == this) - return TRUE; - wxNode *node = m_children.First(); - while (node) - { - wxShape *child = (wxShape *)node->Data(); - bool ans = child->HasDescendant(image); - if (ans) - return TRUE; - node = node->Next(); - } - return FALSE; -} - -// Clears points from a list of wxRealPoints, and clears list -void wxShape::ClearPointList(wxList& list) -{ - wxNode* node = list.First(); - while (node) - { - wxRealPoint* pt = (wxRealPoint*) node->Data(); - delete pt; - - node = node->Next(); - } - list.Clear(); -} - -// Assuming the attachment lies along a vertical or horizontal line, -// calculate the position on that point. -wxRealPoint wxShape::CalcSimpleAttachment(const wxRealPoint& pt1, const wxRealPoint& pt2, - int nth, int noArcs, wxLineShape* line) -{ - bool isEnd = (line && line->IsEnd(this)); - - // Are we horizontal or vertical? - bool isHorizontal = (oglRoughlyEqual(pt1.y, pt2.y) == TRUE); - - double x, y; - - if (isHorizontal) - { - wxRealPoint firstPoint, secondPoint; - if (pt1.x > pt2.x) - { - firstPoint = pt2; - secondPoint = pt1; - } - else - { - firstPoint = pt1; - secondPoint = pt2; - } - - if (m_spaceAttachments) - { - if (line && (line->GetAlignmentType(isEnd) == LINE_ALIGNMENT_TO_NEXT_HANDLE)) - { - // Align line according to the next handle along - wxRealPoint *point = line->GetNextControlPoint(this); - if (point->x < firstPoint.x) - x = firstPoint.x; - else if (point->x > secondPoint.x) - x = secondPoint.x; - else - x = point->x; - } - else - x = firstPoint.x + (nth + 1)*(secondPoint.x - firstPoint.x)/(noArcs + 1); - } - else x = (secondPoint.x - firstPoint.x)/2.0; // Midpoint - - y = pt1.y; - } - else - { - wxASSERT( oglRoughlyEqual(pt1.x, pt2.x) == TRUE ); - - wxRealPoint firstPoint, secondPoint; - if (pt1.y > pt2.y) - { - firstPoint = pt2; - secondPoint = pt1; - } - else - { - firstPoint = pt1; - secondPoint = pt2; - } - - if (m_spaceAttachments) - { - if (line && (line->GetAlignmentType(isEnd) == LINE_ALIGNMENT_TO_NEXT_HANDLE)) - { - // Align line according to the next handle along - wxRealPoint *point = line->GetNextControlPoint(this); - if (point->y < firstPoint.y) - y = firstPoint.y; - else if (point->y > secondPoint.y) - y = secondPoint.y; - else - y = point->y; - } - else - y = firstPoint.y + (nth + 1)*(secondPoint.y - firstPoint.y)/(noArcs + 1); - } - else y = (secondPoint.y - firstPoint.y)/2.0; // Midpoint - - x = pt1.x; - } - - return wxRealPoint(x, y); -} - -// Return the zero-based position in m_lines of line. -int wxShape::GetLinePosition(wxLineShape* line) -{ - int i = 0; - for (i = 0; i < m_lines.Number(); i++) - if ((wxLineShape*) (m_lines.Nth(i)->Data()) == line) - return i; - - return 0; -} - -// -// |________| -// | <- root -// | <- neck -// shoulder1 ->---------<- shoulder2 -// | | | | | -// <- branching attachment point N-1 - -// This function gets information about where branching connections go. -// Returns FALSE if there are no lines at this attachment. -bool wxShape::GetBranchingAttachmentInfo(int attachment, wxRealPoint& root, wxRealPoint& neck, - wxRealPoint& shoulder1, wxRealPoint& shoulder2) -{ - int physicalAttachment = LogicalToPhysicalAttachment(attachment); - - // Number of lines at this attachment. - int lineCount = GetAttachmentLineCount(attachment); - - if (lineCount == 0) - return FALSE; - - int totalBranchLength = m_branchSpacing * (lineCount - 1); - - root = GetBranchingAttachmentRoot(attachment); - - // Assume that we have attachment points 0 to 3: top, right, bottom, left. - switch (physicalAttachment) - { - case 0: - { - neck.x = GetX(); - neck.y = root.y - m_branchNeckLength; - - shoulder1.x = root.x - (totalBranchLength/2.0) ; - shoulder2.x = root.x + (totalBranchLength/2.0) ; - - shoulder1.y = neck.y; - shoulder2.y = neck.y; - break; - } - case 1: - { - neck.x = root.x + m_branchNeckLength; - neck.y = root.y; - - shoulder1.x = neck.x ; - shoulder2.x = neck.x ; - - shoulder1.y = neck.y - (totalBranchLength/2.0) ; - shoulder2.y = neck.y + (totalBranchLength/2.0) ; - break; - } - case 2: - { - neck.x = GetX(); - neck.y = root.y + m_branchNeckLength; - - shoulder1.x = root.x - (totalBranchLength/2.0) ; - shoulder2.x = root.x + (totalBranchLength/2.0) ; - - shoulder1.y = neck.y; - shoulder2.y = neck.y; - break; - } - case 3: - { - neck.x = root.x - m_branchNeckLength; - neck.y = root.y ; - - shoulder1.x = neck.x ; - shoulder2.x = neck.x ; - - shoulder1.y = neck.y - (totalBranchLength/2.0) ; - shoulder2.y = neck.y + (totalBranchLength/2.0) ; - break; - } - default: - { - wxFAIL_MSG( "Unrecognised attachment point in GetBranchingAttachmentInfo." ); - break; - } - } - return TRUE; -} - -// n is the number of the adjoining line, from 0 to N-1 where N is the number of lines -// at this attachment point. -// Get the attachment point where the arc joins the stem, and also the point where the -// the stem meets the shoulder. -bool wxShape::GetBranchingAttachmentPoint(int attachment, int n, wxRealPoint& pt, wxRealPoint& stemPt) -{ - int physicalAttachment = LogicalToPhysicalAttachment(attachment); - - wxRealPoint root, neck, shoulder1, shoulder2; - GetBranchingAttachmentInfo(attachment, root, neck, shoulder1, shoulder2); - - // Assume that we have attachment points 0 to 3: top, right, bottom, left. - switch (physicalAttachment) - { - case 0: - { - pt.y = neck.y - m_branchStemLength; - pt.x = shoulder1.x + n*m_branchSpacing; - - stemPt.x = pt.x; - stemPt.y = neck.y; - break; - } - case 2: - { - pt.y = neck.y + m_branchStemLength; - pt.x = shoulder1.x + n*m_branchSpacing; - - stemPt.x = pt.x; - stemPt.y = neck.y; - break; - } - case 1: - { - pt.x = neck.x + m_branchStemLength; - pt.y = shoulder1.y + n*m_branchSpacing; - - stemPt.x = neck.x; - stemPt.y = pt.y; - break; - } - case 3: - { - pt.x = neck.x - m_branchStemLength; - pt.y = shoulder1.y + n*m_branchSpacing; - - stemPt.x = neck.x; - stemPt.y = pt.y; - break; - } - default: - { - wxFAIL_MSG( "Unrecognised attachment point in GetBranchingAttachmentPoint." ); - break; - } - } - - return TRUE; -} - -// Get the number of lines at this attachment position. -int wxShape::GetAttachmentLineCount(int attachment) const -{ - int count = 0; - wxNode* node = m_lines.First(); - while (node) - { - wxLineShape* lineShape = (wxLineShape*) node->Data(); - if ((lineShape->GetFrom() == this) && (lineShape->GetAttachmentFrom() == attachment)) - count ++; - else if ((lineShape->GetTo() == this) && (lineShape->GetAttachmentTo() == attachment)) - count ++; - - node = node->Next(); - } - return count; -} - -// This function gets the root point at the given attachment. -wxRealPoint wxShape::GetBranchingAttachmentRoot(int attachment) -{ - int physicalAttachment = LogicalToPhysicalAttachment(attachment); - - wxRealPoint root; - - double width, height; - GetBoundingBoxMax(& width, & height); - - // Assume that we have attachment points 0 to 3: top, right, bottom, left. - switch (physicalAttachment) - { - case 0: - { - root.x = GetX() ; - root.y = GetY() - height/2.0; - break; - } - case 1: - { - root.x = GetX() + width/2.0; - root.y = GetY() ; - break; - } - case 2: - { - root.x = GetX() ; - root.y = GetY() + height/2.0; - break; - } - case 3: - { - root.x = GetX() - width/2.0; - root.y = GetY() ; - break; - } - default: - { - wxFAIL_MSG( "Unrecognised attachment point in GetBranchingAttachmentRoot." ); - break; - } - } - return root; -} - -// Draw or erase the branches (not the actual arcs though) -void wxShape::OnDrawBranches(wxDC& dc, int attachment, bool erase) -{ - int count = GetAttachmentLineCount(attachment); - if (count == 0) - return; - - wxRealPoint root, neck, shoulder1, shoulder2; - GetBranchingAttachmentInfo(attachment, root, neck, shoulder1, shoulder2); - - if (erase) - { - dc.SetPen(*wxWHITE_PEN); - dc.SetBrush(*wxWHITE_BRUSH); - } - else - { - dc.SetPen(*wxBLACK_PEN); - dc.SetBrush(*wxBLACK_BRUSH); - } - - // Draw neck - dc.DrawLine((long) root.x, (long) root.y, (long) neck.x, (long) neck.y); - - if (count > 1) - { - // Draw shoulder-to-shoulder line - dc.DrawLine((long) shoulder1.x, (long) shoulder1.y, (long) shoulder2.x, (long) shoulder2.y); - } - // Draw all the little branches - int i; - for (i = 0; i < count; i++) - { - wxRealPoint pt, stemPt; - GetBranchingAttachmentPoint(attachment, i, pt, stemPt); - dc.DrawLine((long) stemPt.x, (long) stemPt.y, (long) pt.x, (long) pt.y); - - if ((GetBranchStyle() & BRANCHING_ATTACHMENT_BLOB) && (count > 1)) - { - long blobSize=6; -// dc.DrawEllipse((long) (stemPt.x + 0.5 - (blobSize/2.0)), (long) (stemPt.y + 0.5 - (blobSize/2.0)), blobSize, blobSize); - dc.DrawEllipse((long) (stemPt.x - (blobSize/2.0)), (long) (stemPt.y - (blobSize/2.0)), blobSize, blobSize); - } - } -} - -// Draw or erase the branches (not the actual arcs though) -void wxShape::OnDrawBranches(wxDC& dc, bool erase) -{ - if (m_attachmentMode != ATTACHMENT_MODE_BRANCHING) - return; - - int count = GetNumberOfAttachments(); - int i; - for (i = 0; i < count; i++) - OnDrawBranches(dc, i, erase); -} - -// Only get the attachment position at the _edge_ of the shape, ignoring -// branching mode. This is used e.g. to indicate the edge of interest, not the point -// on the attachment branch. -bool wxShape::GetAttachmentPositionEdge(int attachment, double *x, double *y, - int nth, int no_arcs, wxLineShape *line) -{ - int oldMode = m_attachmentMode; - - // Calculate as if to edge, not branch - if (m_attachmentMode == ATTACHMENT_MODE_BRANCHING) - m_attachmentMode = ATTACHMENT_MODE_EDGE; - bool success = GetAttachmentPosition(attachment, x, y, nth, no_arcs, line); - m_attachmentMode = oldMode; - - return success; -} - -// Rotate the standard attachment point from physical (0 is always North) -// to logical (0 -> 1 if rotated by 90 degrees) -int wxShape::PhysicalToLogicalAttachment(int physicalAttachment) const -{ - const double pi = 3.1415926535897932384626433832795 ; - int i; - if (oglRoughlyEqual(GetRotation(), 0.0)) - { - i = physicalAttachment; - } - else if (oglRoughlyEqual(GetRotation(), (pi/2.0))) - { - i = physicalAttachment - 1; - } - else if (oglRoughlyEqual(GetRotation(), pi)) - { - i = physicalAttachment - 2; - } - else if (oglRoughlyEqual(GetRotation(), (3.0*pi/2.0))) - { - i = physicalAttachment - 3; - } - else - // Can't handle -- assume the same. - return physicalAttachment; - - if (i < 0) - i += 4; - - return i; -} - -// Rotate the standard attachment point from logical -// to physical (0 is always North) -int wxShape::LogicalToPhysicalAttachment(int logicalAttachment) const -{ - const double pi = 3.1415926535897932384626433832795 ; - int i; - if (oglRoughlyEqual(GetRotation(), 0.0)) - { - i = logicalAttachment; - } - else if (oglRoughlyEqual(GetRotation(), (pi/2.0))) - { - i = logicalAttachment + 1; - } - else if (oglRoughlyEqual(GetRotation(), pi)) - { - i = logicalAttachment + 2; - } - else if (oglRoughlyEqual(GetRotation(), (3.0*pi/2.0))) - { - i = logicalAttachment + 3; - } - else - // Can't handle -- assume the same. - return logicalAttachment; - - if (i > 3) - i -= 4; - - return i; -} - -void wxShape::Rotate(double WXUNUSED(x), double WXUNUSED(y), double theta) -{ - const double pi = 3.1415926535897932384626433832795 ; - m_rotation = theta; - if (m_rotation < 0.0) - { - m_rotation += 2*pi; - } - else if (m_rotation > 2*pi) - { - m_rotation -= 2*pi; - } -} - diff --git a/utils/ogl/src/basic.h b/utils/ogl/src/basic.h deleted file mode 100644 index 8374b2c345..0000000000 --- a/utils/ogl/src/basic.h +++ /dev/null @@ -1,738 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: basic.h -// Purpose: Basic OGL classes and definitions -// Author: Julian Smart -// Modified by: -// Created: 12/07/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _OGL_BASIC_H_ -#define _OGL_BASIC_H_ - -#ifdef __GNUG__ -#pragma interface "basic.h" -#endif - -#define OGL_VERSION 2.0 - -#ifndef DEFAULT_MOUSE_TOLERANCE -#define DEFAULT_MOUSE_TOLERANCE 3 -#endif - -// Edit these lines if you positively don't want PROLOGIO support -#ifndef PROLOGIO -#define PROLOGIO -#endif - -// Key identifiers -#define KEY_SHIFT 1 -#define KEY_CTRL 2 - -// Arrow styles - -#define ARROW_NONE 0 -#define ARROW_END 1 -#define ARROW_BOTH 2 -#define ARROW_MIDDLE 3 -#define ARROW_START 4 - -// Control point types -// Rectangle and most other shapes -#define CONTROL_POINT_VERTICAL 1 -#define CONTROL_POINT_HORIZONTAL 2 -#define CONTROL_POINT_DIAGONAL 3 - -// Line -#define CONTROL_POINT_ENDPOINT_TO 4 -#define CONTROL_POINT_ENDPOINT_FROM 5 -#define CONTROL_POINT_LINE 6 - -// Types of formatting: can be combined in a bit list -#define FORMAT_NONE 0 - // Left justification -#define FORMAT_CENTRE_HORIZ 1 - // Centre horizontally -#define FORMAT_CENTRE_VERT 2 - // Centre vertically -#define FORMAT_SIZE_TO_CONTENTS 4 - // Resize shape to contents - -// Shadow mode -#define SHADOW_NONE 0 -#define SHADOW_LEFT 1 -#define SHADOW_RIGHT 2 - -/* - * Declare types - * - */ - -#define SHAPE_BASIC wxTYPE_USER + 1 -#define SHAPE_RECTANGLE wxTYPE_USER + 2 -#define SHAPE_ELLIPSE wxTYPE_USER + 3 -#define SHAPE_POLYGON wxTYPE_USER + 4 -#define SHAPE_CIRCLE wxTYPE_USER + 5 -#define SHAPE_LINE wxTYPE_USER + 6 -#define SHAPE_DIVIDED_RECTANGLE wxTYPE_USER + 8 -#define SHAPE_COMPOSITE wxTYPE_USER + 9 -#define SHAPE_CONTROL_POINT wxTYPE_USER + 10 -#define SHAPE_DRAWN wxTYPE_USER + 11 -#define SHAPE_DIVISION wxTYPE_USER + 12 -#define SHAPE_LABEL_OBJECT wxTYPE_USER + 13 -#define SHAPE_BITMAP wxTYPE_USER + 14 -#define SHAPE_DIVIDED_OBJECT_CONTROL_POINT wxTYPE_USER + 15 - -#define OBJECT_REGION wxTYPE_USER + 20 - -#define OP_CLICK_LEFT 1 -#define OP_CLICK_RIGHT 2 -#define OP_DRAG_LEFT 4 -#define OP_DRAG_RIGHT 8 - -#define OP_ALL (OP_CLICK_LEFT | OP_CLICK_RIGHT | OP_DRAG_LEFT | OP_DRAG_RIGHT) - -// Attachment modes -#define ATTACHMENT_MODE_NONE 0 -#define ATTACHMENT_MODE_EDGE 1 -#define ATTACHMENT_MODE_BRANCHING 2 - -// Sub-modes for branching attachment mode -#define BRANCHING_ATTACHMENT_NORMAL 1 -#define BRANCHING_ATTACHMENT_BLOB 2 - -class wxShapeTextLine; -class wxShapeCanvas; -class wxLineShape; -class wxControlPoint; -class wxShapeRegion; -class wxShape; - -#ifdef PROLOGIO -class WXDLLEXPORT wxExpr; -class WXDLLEXPORT wxExprDatabase; -#endif - -// Round up -#define WXROUND(x) ( (long) (x + 0.5) ) - -class wxShapeEvtHandler: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxShapeEvtHandler) - - public: - wxShapeEvtHandler(wxShapeEvtHandler *prev = NULL, wxShape *shape = NULL); - virtual ~wxShapeEvtHandler(); - - inline void SetShape(wxShape *sh) { m_handlerShape = sh; } - inline wxShape *GetShape() const { return m_handlerShape; } - - inline void SetPreviousHandler(wxShapeEvtHandler* handler) { m_previousHandler = handler; } - inline wxShapeEvtHandler* GetPreviousHandler() const { return m_previousHandler; } - - // This is called when the _shape_ is deleted. - virtual void OnDelete(); - virtual void OnDraw(wxDC& dc); - virtual void OnDrawContents(wxDC& dc); - virtual void OnDrawBranches(wxDC& dc, bool erase = FALSE); - virtual void OnMoveLinks(wxDC& dc); - virtual void OnErase(wxDC& dc); - virtual void OnEraseContents(wxDC& dc); - virtual void OnHighlight(wxDC& dc); - virtual void OnLeftClick(double x, double y, int keys = 0, int attachment = 0); - virtual void OnLeftDoubleClick(double x, double y, int keys = 0, int attachment = 0); - virtual void OnRightClick(double x, double y, int keys = 0, int attachment = 0); - virtual void OnSize(double x, double y); - virtual bool OnMovePre(wxDC& dc, double x, double y, double old_x, double old_y, bool display = TRUE); - virtual void OnMovePost(wxDC& dc, double x, double y, double old_x, double old_y, bool display = TRUE); - - virtual void OnDragLeft(bool draw, double x, double y, int keys=0, int attachment = 0); // Erase if draw false - virtual void OnBeginDragLeft(double x, double y, int keys=0, int attachment = 0); - virtual void OnEndDragLeft(double x, double y, int keys=0, int attachment = 0); - virtual void OnDragRight(bool draw, double x, double y, int keys=0, int attachment = 0); // Erase if draw false - virtual void OnBeginDragRight(double x, double y, int keys=0, int attachment = 0); - virtual void OnEndDragRight(double x, double y, int keys=0, int attachment = 0); - virtual void OnDrawOutline(wxDC& dc, double x, double y, double w, double h); - virtual void OnDrawControlPoints(wxDC& dc); - virtual void OnEraseControlPoints(wxDC& dc); - virtual void OnMoveLink(wxDC& dc, bool moveControlPoints = TRUE); - - // Control points ('handles') redirect control to the actual shape, to make it easier - // to override sizing behaviour. - virtual void OnSizingDragLeft(wxControlPoint* pt, bool draw, double x, double y, int keys=0, int attachment = 0); // Erase if draw false - virtual void OnSizingBeginDragLeft(wxControlPoint* pt, double x, double y, int keys=0, int attachment = 0); - virtual void OnSizingEndDragLeft(wxControlPoint* pt, double x, double y, int keys=0, int attachment = 0); - - virtual void OnBeginSize(double WXUNUSED(w), double WXUNUSED(h)) { } - virtual void OnEndSize(double WXUNUSED(w), double WXUNUSED(h)) { } - - // Can override this to prevent or intercept line reordering. - virtual void OnChangeAttachment(int attachment, wxLineShape* line, wxList& ordering); - - // Creates a copy of this event handler. - wxShapeEvtHandler *CreateNewCopy(); - - // Does the copy - override for new event handlers which might store - // app-specific data. - virtual void CopyData(wxShapeEvtHandler& copy) {}; - - private: - wxShapeEvtHandler* m_previousHandler; - wxShape* m_handlerShape; -}; - -class wxShape: public wxShapeEvtHandler -{ - DECLARE_ABSTRACT_CLASS(wxShape) - - public: - - wxShape(wxShapeCanvas *can = NULL); - virtual ~wxShape(); - virtual void GetBoundingBoxMax(double *width, double *height); - virtual void GetBoundingBoxMin(double *width, double *height) = 0; - virtual bool GetPerimeterPoint(double x1, double y1, - double x2, double y2, - double *x3, double *y3); - inline wxShapeCanvas *GetCanvas() { return m_canvas; } - void SetCanvas(wxShapeCanvas *the_canvas); - virtual void AddToCanvas(wxShapeCanvas *the_canvas, wxShape *addAfter = NULL); - virtual void InsertInCanvas(wxShapeCanvas *the_canvas); - - virtual void RemoveFromCanvas(wxShapeCanvas *the_canvas); - inline double GetX() const { return m_xpos; } - inline double GetY() const { return m_ypos; } - inline void SetX(double x) { m_xpos = x; } - inline void SetY(double y) { m_ypos = y; } - - inline wxShape *GetParent() const { return m_parent; } - inline void SetParent(wxShape *p) { m_parent = p; } - wxShape *GetTopAncestor(); - inline wxList& GetChildren() { return m_children; } - - virtual void OnDraw(wxDC& dc); - virtual void OnDrawContents(wxDC& dc); - virtual void OnMoveLinks(wxDC& dc); - virtual void Unlink() { }; - void SetDrawHandles(bool drawH); - inline bool GetDrawHandles() { return m_drawHandles; } - virtual void OnErase(wxDC& dc); - virtual void OnEraseContents(wxDC& dc); - virtual void OnHighlight(wxDC& dc); - virtual void OnLeftClick(double x, double y, int keys = 0, int attachment = 0); - virtual void OnLeftDoubleClick(double x, double y, int keys = 0, int attachment = 0) {} - virtual void OnRightClick(double x, double y, int keys = 0, int attachment = 0); - virtual void OnSize(double x, double y); - virtual bool OnMovePre(wxDC& dc, double x, double y, double old_x, double old_y, bool display = TRUE); - virtual void OnMovePost(wxDC& dc, double x, double y, double old_x, double old_y, bool display = TRUE); - - virtual void OnDragLeft(bool draw, double x, double y, int keys=0, int attachment = 0); // Erase if draw false - virtual void OnBeginDragLeft(double x, double y, int keys=0, int attachment = 0); - virtual void OnEndDragLeft(double x, double y, int keys=0, int attachment = 0); - virtual void OnDragRight(bool draw, double x, double y, int keys=0, int attachment = 0); // Erase if draw false - virtual void OnBeginDragRight(double x, double y, int keys=0, int attachment = 0); - virtual void OnEndDragRight(double x, double y, int keys=0, int attachment = 0); - virtual void OnDrawOutline(wxDC& dc, double x, double y, double w, double h); - virtual void OnDrawControlPoints(wxDC& dc); - virtual void OnEraseControlPoints(wxDC& dc); - - virtual void OnBeginSize(double WXUNUSED(w), double WXUNUSED(h)) { } - virtual void OnEndSize(double WXUNUSED(w), double WXUNUSED(h)) { } - - // Control points ('handles') redirect control to the actual shape, to make it easier - // to override sizing behaviour. - virtual void OnSizingDragLeft(wxControlPoint* pt, bool draw, double x, double y, int keys=0, int attachment = 0); // Erase if draw false - virtual void OnSizingBeginDragLeft(wxControlPoint* pt, double x, double y, int keys=0, int attachment = 0); - virtual void OnSizingEndDragLeft(wxControlPoint* pt, double x, double y, int keys=0, int attachment = 0); - - virtual void MakeControlPoints(); - virtual void DeleteControlPoints(wxDC *dc = NULL); - virtual void ResetControlPoints(); - - inline wxShapeEvtHandler *GetEventHandler() { return m_eventHandler; } - inline void SetEventHandler(wxShapeEvtHandler *handler) { m_eventHandler = handler; } - - // Mandatory control points, e.g. the divided line moving handles - // should appear even if a child of the 'selected' image - virtual void MakeMandatoryControlPoints(); - virtual void ResetMandatoryControlPoints(); - - inline virtual bool Recompute() { return TRUE; }; - // Calculate size recursively, if size changes. Size might depend on children. - inline virtual void CalculateSize() { }; - virtual void Select(bool select = TRUE, wxDC* dc = NULL); - virtual void SetHighlight(bool hi = TRUE, bool recurse = FALSE); - inline virtual bool IsHighlighted() const { return m_highlighted; }; - virtual bool Selected() const; - virtual bool AncestorSelected() const; - void SetSensitivityFilter(int sens = OP_ALL, bool recursive = FALSE); - int GetSensitivityFilter() const { return m_sensitivity; } - void SetDraggable(bool drag, bool recursive = FALSE); - inline void SetFixedSize(bool x, bool y) { m_fixedWidth = x; m_fixedHeight = y; }; - inline void GetFixedSize(bool *x, bool *y) const { *x = m_fixedWidth; *y = m_fixedHeight; }; - inline bool GetFixedWidth() const { return m_fixedWidth; } - inline bool GetFixedHeight() const { return m_fixedHeight; } - inline void SetSpaceAttachments(bool sp) { m_spaceAttachments = sp; }; - inline bool GetSpaceAttachments() const { return m_spaceAttachments; }; - void SetShadowMode(int mode, bool redraw = FALSE); - inline int GetShadowMode() const { return m_shadowMode; } - virtual bool HitTest(double x, double y, int *attachment, double *distance); - inline void SetCentreResize(bool cr) { m_centreResize = cr; } - inline bool GetCentreResize() const { return m_centreResize; } - inline void SetMaintainAspectRatio(bool ar) { m_maintainAspectRatio = ar; } - inline bool GetMaintainAspectRatio() const { return m_maintainAspectRatio; } - inline wxList& GetLines() const { return (wxList&) m_lines; } - inline void SetDisableLabel(bool flag) { m_disableLabel = flag; } - inline bool GetDisableLabel() const { return m_disableLabel; } - inline void SetAttachmentMode(int mode) { m_attachmentMode = mode; } - inline int GetAttachmentMode() const { return m_attachmentMode; } - inline void SetId(long i) { m_id = i; } - inline long GetId() const { return m_id; } - - void SetPen(wxPen *pen); - void SetBrush(wxBrush *brush); - inline void SetClientData(wxObject *client_data) { m_clientData = client_data; }; - inline wxObject *GetClientData() const { return m_clientData; }; - - virtual void Show(bool show); - virtual bool IsShown() const { return m_visible; } - virtual void Move(wxDC& dc, double x1, double y1, bool display = TRUE); - virtual void Erase(wxDC& dc); - virtual void EraseContents(wxDC& dc); - virtual void Draw(wxDC& dc); - virtual void Flash(); - virtual void MoveLinks(wxDC& dc); - virtual void DrawContents(wxDC& dc); // E.g. for drawing text label - virtual void SetSize(double x, double y, bool recursive = TRUE); - virtual void SetAttachmentSize(double x, double y); - void Attach(wxShapeCanvas *can); - void Detach(); - - inline virtual bool Constrain() { return FALSE; } ; - - void AddLine(wxLineShape *line, wxShape *other, - int attachFrom = 0, int attachTo = 0, - // The line ordering - int positionFrom = -1, int positionTo = -1); - - // Return the zero-based position in m_lines of line. - int GetLinePosition(wxLineShape* line); - - void AddText(const wxString& string); - - inline wxPen *GetPen() const { return m_pen; } - inline wxBrush *GetBrush() const { return m_brush; } - - /* - * Region-specific functions (defaults to the default region - * for simple objects - */ - - // Set the default, single region size to be consistent - // with the object size - void SetDefaultRegionSize(); - virtual void FormatText(wxDC& dc, const wxString& s, int regionId = 0); - virtual void SetFormatMode(int mode, int regionId = 0); - virtual int GetFormatMode(int regionId = 0) const; - virtual void SetFont(wxFont *font, int regionId = 0); - virtual wxFont *GetFont(int regionId = 0) const; - virtual void SetTextColour(const wxString& colour, int regionId = 0); - virtual wxString GetTextColour(int regionId = 0) const; - virtual inline int GetNumberOfTextRegions() const { return m_regions.Number(); } - virtual void SetRegionName(const wxString& name, int regionId = 0); - - // Get the name representing the region for this image alone. - // I.e. this image's region ids go from 0 to N-1. - // But the names might be "0.2.0", "0.2.1" etc. depending on position in composite. - // So the last digit represents the region Id, the others represent positions - // in composites. - virtual wxString GetRegionName(int regionId); - - // Gets the region corresponding to the name, or -1 if not found. - virtual int GetRegionId(const wxString& name); - - // Construct names for regions, unique even for children of a composite. - virtual void NameRegions(const wxString& parentName = ""); - - // Get list of regions - inline wxList& GetRegions() const { return (wxList&) m_regions; } - - virtual void AddRegion(wxShapeRegion *region); - - virtual void ClearRegions(); - - // Assign new ids to this image and children (if composite) - void AssignNewIds(); - - // Returns actual image (same as 'this' if non-composite) and region id - // for given region name. - virtual wxShape *FindRegion(const wxString& regionName, int *regionId); - - // Finds all region names for this image (composite or simple). - // Supply empty string list. - virtual void FindRegionNames(wxStringList& list); - - virtual void ClearText(int regionId = 0); - void RemoveLine(wxLineShape *line); - -#ifdef PROLOGIO - // I/O - virtual void WriteAttributes(wxExpr *clause); - virtual void ReadAttributes(wxExpr *clause); - - // In case the object has constraints it needs to read in in a different pass - inline virtual void ReadConstraints(wxExpr *WXUNUSED(clause), wxExprDatabase *WXUNUSED(database)) { }; - virtual void WriteRegions(wxExpr *clause); - virtual void ReadRegions(wxExpr *clause); -#endif - - // Attachment code - virtual bool GetAttachmentPosition(int attachment, double *x, double *y, - int nth = 0, int no_arcs = 1, wxLineShape *line = NULL); - virtual int GetNumberOfAttachments() const; - virtual bool AttachmentIsValid(int attachment) const; - - // Only get the attachment position at the _edge_ of the shape, ignoring - // branching mode. This is used e.g. to indicate the edge of interest, not the point - // on the attachment branch. - virtual bool GetAttachmentPositionEdge(int attachment, double *x, double *y, - int nth = 0, int no_arcs = 1, wxLineShape *line = NULL); - - // Assuming the attachment lies along a vertical or horizontal line, - // calculate the position on that point. - virtual wxRealPoint CalcSimpleAttachment(const wxRealPoint& pt1, const wxRealPoint& pt2, - int nth, int noArcs, wxLineShape* line); - - // Returns TRUE if pt1 <= pt2 in the sense that one point comes before another on an - // edge of the shape. - // attachmentPoint is the attachment point (= side) in question. - virtual bool AttachmentSortTest(int attachmentPoint, const wxRealPoint& pt1, const wxRealPoint& pt2); - - virtual void EraseLinks(wxDC& dc, int attachment = -1, bool recurse = FALSE); - virtual void DrawLinks(wxDC& dc, int attachment = -1, bool recurse = FALSE); - - virtual bool MoveLineToNewAttachment(wxDC& dc, wxLineShape *to_move, - double x, double y); - - // Reorders the lines coming into the node image at this attachment - // position, in the order in which they appear in linesToSort. - virtual void SortLines(int attachment, wxList& linesToSort); - - // Apply an attachment ordering change - void ApplyAttachmentOrdering(wxList& ordering); - - // Can override this to prevent or intercept line reordering. - virtual void OnChangeAttachment(int attachment, wxLineShape* line, wxList& ordering); - - //// New banching attachment code, 24/9/98 - - // - // |________| - // | <- root - // | <- neck - // shoulder1 ->---------<- shoulder2 - // | | | | |<- stem - // <- branching attachment point N-1 - - // This function gets the root point at the given attachment. - virtual wxRealPoint GetBranchingAttachmentRoot(int attachment); - - // This function gets information about where branching connections go (calls GetBranchingAttachmentRoot) - virtual bool GetBranchingAttachmentInfo(int attachment, wxRealPoint& root, wxRealPoint& neck, - wxRealPoint& shoulder1, wxRealPoint& shoulder2); - - // n is the number of the adjoining line, from 0 to N-1 where N is the number of lines - // at this attachment point. - // attachmentPoint is where the arc meets the stem, and stemPoint is where the stem meets the - // shoulder. - virtual bool GetBranchingAttachmentPoint(int attachment, int n, wxRealPoint& attachmentPoint, - wxRealPoint& stemPoint); - - // Get the number of lines at this attachment position. - virtual int GetAttachmentLineCount(int attachment) const; - - // Draw the branches (not the actual arcs though) - virtual void OnDrawBranches(wxDC& dc, int attachment, bool erase = FALSE); - virtual void OnDrawBranches(wxDC& dc, bool erase = FALSE); - - // Branching attachment settings - inline void SetBranchNeckLength(int len) { m_branchNeckLength = len; } - inline int GetBranchNeckLength() const { return m_branchNeckLength; } - - inline void SetBranchStemLength(int len) { m_branchStemLength = len; } - inline int GetBranchStemLength() const { return m_branchStemLength; } - - inline void SetBranchSpacing(int len) { m_branchSpacing = len; } - inline int GetBranchSpacing() const { return m_branchSpacing; } - - // Further detail on branching style, e.g. blobs on interconnections - inline void SetBranchStyle(long style) { m_branchStyle = style; } - inline long GetBranchStyle() const { return m_branchStyle; } - - // Rotate the standard attachment point from physical (0 is always North) - // to logical (0 -> 1 if rotated by 90 degrees) - virtual int PhysicalToLogicalAttachment(int physicalAttachment) const; - - // Rotate the standard attachment point from logical - // to physical (0 is always North) - virtual int LogicalToPhysicalAttachment(int logicalAttachment) const; - - // This is really to distinguish between lines and other images. - // For lines, want to pass drag to canvas, since lines tend to prevent - // dragging on a canvas (they get in the way.) - virtual bool Draggable() const { return TRUE; } - - // Returns TRUE if image is a descendant of this image - bool HasDescendant(wxShape *image); - - // Creates a copy of this shape. - wxShape *CreateNewCopy(bool resetMapping = TRUE, bool recompute = TRUE); - - // Does the copying for this object - virtual void Copy(wxShape& copy); - - // Does the copying for this object, including copying event - // handler data if any. Calls the virtual Copy function. - void CopyWithHandler(wxShape& copy); - - // Rotate about the given axis by the given amount in radians. - virtual void Rotate(double x, double y, double theta); - virtual inline double GetRotation() const { return m_rotation; } - - void ClearAttachments(); - - // Recentres all the text regions for this object - void Recentre(wxDC& dc); - - // Clears points from a list of wxRealPoints - void ClearPointList(wxList& list); - - private: - wxObject* m_clientData; - - protected: - wxShapeEvtHandler* m_eventHandler; - bool m_formatted; - double m_xpos, m_ypos; - wxPen* m_pen; - wxBrush* m_brush; - wxFont* m_font; - wxColour* m_textColour; - wxString m_textColourName; - wxShapeCanvas* m_canvas; - wxList m_lines; - wxList m_text; - wxList m_controlPoints; - wxList m_regions; - wxList m_attachmentPoints; - bool m_visible; - bool m_disableLabel; - long m_id; - bool m_selected; - bool m_highlighted; // Different from selected: user-defined highlighting, - // e.g. thick border. - double m_rotation; - int m_sensitivity; - bool m_draggable; - int m_attachmentMode; // 0 for no attachments, 1 if using normal attachments, - // 2 for branching attachments - bool m_spaceAttachments; // TRUE if lines at one side should be spaced - bool m_fixedWidth; - bool m_fixedHeight; - bool m_centreResize; // Default is to resize keeping the centre constant (TRUE) - bool m_drawHandles; // Don't draw handles if FALSE, usually TRUE - wxList m_children; // In case it's composite - wxShape* m_parent; // In case it's a child - int m_formatMode; - int m_shadowMode; - wxBrush* m_shadowBrush; - int m_shadowOffsetX; - int m_shadowOffsetY; - int m_textMarginX; // Gap between text and border - int m_textMarginY; - wxString m_regionName; - bool m_maintainAspectRatio; - int m_branchNeckLength; - int m_branchStemLength; - int m_branchSpacing; - long m_branchStyle; -}; - -class wxPolygonShape: public wxShape -{ - DECLARE_DYNAMIC_CLASS(wxPolygonShape) - public: - wxPolygonShape(); - ~wxPolygonShape(); - - // Takes a list of wxRealPoints; each point is an OFFSET from the centre. - // Deletes user's points in destructor. - virtual void Create(wxList *points); - virtual void ClearPoints(); - - void GetBoundingBoxMin(double *w, double *h); - void CalculateBoundingBox(); - bool GetPerimeterPoint(double x1, double y1, - double x2, double y2, - double *x3, double *y3); - bool HitTest(double x, double y, int *attachment, double *distance); - void SetSize(double x, double y, bool recursive = TRUE); - void OnDraw(wxDC& dc); - void OnDrawOutline(wxDC& dc, double x, double y, double w, double h); - - // Control points ('handles') redirect control to the actual shape, to make it easier - // to override sizing behaviour. - virtual void OnSizingDragLeft(wxControlPoint* pt, bool draw, double x, double y, int keys=0, int attachment = 0); - virtual void OnSizingBeginDragLeft(wxControlPoint* pt, double x, double y, int keys=0, int attachment = 0); - virtual void OnSizingEndDragLeft(wxControlPoint* pt, double x, double y, int keys=0, int attachment = 0); - - // A polygon should have a control point at each vertex, - // with the option of moving the control points individually - // to change the shape. - void MakeControlPoints(); - void ResetControlPoints(); - - // If we've changed the shape, must make the original - // points match the working points - void UpdateOriginalPoints(); - - // Add a control point after the given point - virtual void AddPolygonPoint(int pos = 0); - - // Delete a control point - virtual void DeletePolygonPoint(int pos = 0); - - // Recalculates the centre of the polygon - virtual void CalculatePolygonCentre(); - -#ifdef PROLOGIO - void WriteAttributes(wxExpr *clause); - void ReadAttributes(wxExpr *clause); -#endif - - int GetNumberOfAttachments() const; - bool GetAttachmentPosition(int attachment, double *x, double *y, - int nth = 0, int no_arcs = 1, wxLineShape *line = NULL); - bool AttachmentIsValid(int attachment); - // Does the copying for this object - void Copy(wxShape& copy); - - inline wxList *GetPoints() { return m_points; } - - // Rotate about the given axis by the given amount in radians - virtual void Rotate(double x, double y, double theta); - - private: - wxList* m_points; - wxList* m_originalPoints; - double m_boundWidth; - double m_boundHeight; - double m_originalWidth; - double m_originalHeight; -}; - -class wxRectangleShape: public wxShape -{ - DECLARE_DYNAMIC_CLASS(wxRectangleShape) - public: - wxRectangleShape(double w = 0.0, double h = 0.0); - void GetBoundingBoxMin(double *w, double *h); - bool GetPerimeterPoint(double x1, double y1, - double x2, double y2, - double *x3, double *y3); - void OnDraw(wxDC& dc); - void SetSize(double x, double y, bool recursive = TRUE); - void SetCornerRadius(double rad); // If > 0, rounded corners - -#ifdef PROLOGIO - void WriteAttributes(wxExpr *clause); - void ReadAttributes(wxExpr *clause); -#endif - - int GetNumberOfAttachments() const; - bool GetAttachmentPosition(int attachment, double *x, double *y, - int nth = 0, int no_arcs = 1, wxLineShape *line = NULL); - // Does the copying for this object - void Copy(wxShape& copy); - - inline double GetWidth() const { return m_width; } - inline double GetHeight() const { return m_height; } - inline void SetWidth(double w) { m_width = w; } - inline void SetHeight(double h) { m_height = h; } - -protected: - double m_width; - double m_height; - double m_cornerRadius; -}; - -class wxTextShape: public wxRectangleShape -{ - DECLARE_DYNAMIC_CLASS(wxTextShape) - public: - wxTextShape(double width = 0.0, double height = 0.0); - - void OnDraw(wxDC& dc); - -#ifdef PROLOGIO - void WriteAttributes(wxExpr *clause); -#endif - - // Does the copying for this object - void Copy(wxShape& copy); -}; - -class wxEllipseShape: public wxShape -{ - DECLARE_DYNAMIC_CLASS(wxEllipseShape) - public: - wxEllipseShape(double w = 0.0, double h = 0.0); - - void GetBoundingBoxMin(double *w, double *h); - bool GetPerimeterPoint(double x1, double y1, - double x2, double y2, - double *x3, double *y3); - - void OnDraw(wxDC& dc); - void SetSize(double x, double y, bool recursive = TRUE); - -#ifdef PROLOGIO - void WriteAttributes(wxExpr *clause); - void ReadAttributes(wxExpr *clause); -#endif - - int GetNumberOfAttachments() const; - bool GetAttachmentPosition(int attachment, double *x, double *y, - int nth = 0, int no_arcs = 1, wxLineShape *line = NULL); - - // Does the copying for this object - void Copy(wxShape& copy); - - inline double GetWidth() const { return m_width; } - inline double GetHeight() const { return m_height; } - - inline void SetWidth(double w) { m_width = w; } - inline void SetHeight(double h) { m_height = h; } - -protected: - double m_width; - double m_height; -}; - -class wxCircleShape: public wxEllipseShape -{ - DECLARE_DYNAMIC_CLASS(wxCircleShape) - public: - wxCircleShape(double w = 0.0); - - bool GetPerimeterPoint(double x1, double y1, - double x2, double y2, - double *x3, double *y3); - // Does the copying for this object - void Copy(wxShape& copy); -}; - -#endif - // _OGL_BASIC_H_ diff --git a/utils/ogl/src/basic2.cpp b/utils/ogl/src/basic2.cpp deleted file mode 100644 index ba46cca6fe..0000000000 --- a/utils/ogl/src/basic2.cpp +++ /dev/null @@ -1,1902 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: basic2.cpp -// Purpose: Basic OGL classes (2) -// Author: Julian Smart -// Modified by: -// Created: 12/07/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "basicp.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include -#endif - -#include - -#if wxUSE_IOSTREAMH -#include -#else -#include -#endif - -#include -#include -#include - -#include "basic.h" -#include "basicp.h" -#include "composit.h" -#include "lines.h" -#include "canvas.h" -#include "divided.h" -#include "misc.h" - -// Control point types -// Rectangle and most other shapes -#define CONTROL_POINT_VERTICAL 1 -#define CONTROL_POINT_HORIZONTAL 2 -#define CONTROL_POINT_DIAGONAL 3 - -// Line -#define CONTROL_POINT_ENDPOINT_TO 4 -#define CONTROL_POINT_ENDPOINT_FROM 5 -#define CONTROL_POINT_LINE 6 - -// Two stage construction: need to call Create -IMPLEMENT_DYNAMIC_CLASS(wxPolygonShape, wxShape) - -wxPolygonShape::wxPolygonShape() -{ - m_points = NULL; - m_originalPoints = NULL; -} - -void wxPolygonShape::Create(wxList *the_points) -{ - ClearPoints(); - - m_originalPoints = the_points; - - // Duplicate the list of points - m_points = new wxList; - - wxNode *node = the_points->First(); - while (node) - { - wxRealPoint *point = (wxRealPoint *)node->Data(); - wxRealPoint *new_point = new wxRealPoint(point->x, point->y); - m_points->Append((wxObject*) new_point); - node = node->Next(); - } - CalculateBoundingBox(); - m_originalWidth = m_boundWidth; - m_originalHeight = m_boundHeight; - SetDefaultRegionSize(); -} - -wxPolygonShape::~wxPolygonShape() -{ - ClearPoints(); -} - -void wxPolygonShape::ClearPoints() -{ - if (m_points) - { - wxNode *node = m_points->First(); - while (node) - { - wxRealPoint *point = (wxRealPoint *)node->Data(); - delete point; - delete node; - node = m_points->First(); - } - delete m_points; - m_points = NULL; - } - if (m_originalPoints) - { - wxNode *node = m_originalPoints->First(); - while (node) - { - wxRealPoint *point = (wxRealPoint *)node->Data(); - delete point; - delete node; - node = m_originalPoints->First(); - } - delete m_originalPoints; - m_originalPoints = NULL; - } -} - - -// Width and height. Centre of object is centre of box. -void wxPolygonShape::GetBoundingBoxMin(double *width, double *height) -{ - *width = m_boundWidth; - *height = m_boundHeight; -} - -void wxPolygonShape::CalculateBoundingBox() -{ - // Calculate bounding box at construction (and presumably resize) time - double left = 10000; - double right = -10000; - double top = 10000; - double bottom = -10000; - - wxNode *node = m_points->First(); - while (node) - { - wxRealPoint *point = (wxRealPoint *)node->Data(); - if (point->x < left) left = point->x; - if (point->x > right) right = point->x; - - if (point->y < top) top = point->y; - if (point->y > bottom) bottom = point->y; - - node = node->Next(); - } - m_boundWidth = right - left; - m_boundHeight = bottom - top; -} - -// Recalculates the centre of the polygon, and -// readjusts the point offsets accordingly. -// Necessary since the centre of the polygon -// is expected to be the real centre of the bounding -// box. -void wxPolygonShape::CalculatePolygonCentre() -{ - double left = 10000; - double right = -10000; - double top = 10000; - double bottom = -10000; - - wxNode *node = m_points->First(); - while (node) - { - wxRealPoint *point = (wxRealPoint *)node->Data(); - if (point->x < left) left = point->x; - if (point->x > right) right = point->x; - - if (point->y < top) top = point->y; - if (point->y > bottom) bottom = point->y; - - node = node->Next(); - } - double bwidth = right - left; - double bheight = bottom - top; - - double newCentreX = (double)(left + (bwidth/2.0)); - double newCentreY = (double)(top + (bheight/2.0)); - - node = m_points->First(); - while (node) - { - wxRealPoint *point = (wxRealPoint *)node->Data(); - point->x -= newCentreX; - point->y -= newCentreY; - node = node->Next(); - } - m_xpos += newCentreX; - m_ypos += newCentreY; -} - -bool PolylineHitTest(double n, double xvec[], double yvec[], - double x1, double y1, double x2, double y2) -{ - bool isAHit = FALSE; - int i; - double lastx = xvec[0]; - double lasty = yvec[0]; - - double min_ratio = 1.0; - double line_ratio; - double other_ratio; - -// char buf[300]; - for (i = 1; i < n; i++) - { - oglCheckLineIntersection(x1, y1, x2, y2, lastx, lasty, xvec[i], yvec[i], - &line_ratio, &other_ratio); - if (line_ratio != 1.0) - isAHit = TRUE; -// sprintf(buf, "Line ratio = %.2f, other ratio = %.2f\n", line_ratio, other_ratio); -// ClipsErrorFunction(buf); - lastx = xvec[i]; - lasty = yvec[i]; - - if (line_ratio < min_ratio) - min_ratio = line_ratio; - } - - // Do last (implicit) line if last and first doubles are not identical - if (!(xvec[0] == lastx && yvec[0] == lasty)) - { - oglCheckLineIntersection(x1, y1, x2, y2, lastx, lasty, xvec[0], yvec[0], - &line_ratio, &other_ratio); - if (line_ratio != 1.0) - isAHit = TRUE; -// sprintf(buf, "Line ratio = %.2f, other ratio = %.2f\n", line_ratio, other_ratio); -// ClipsErrorFunction(buf); - - if (line_ratio < min_ratio) - min_ratio = line_ratio; - } -// ClipsErrorFunction("\n"); - return isAHit; -} - -bool wxPolygonShape::HitTest(double x, double y, int *attachment, double *distance) -{ - // Imagine four lines radiating from this point. If all of these lines hit the polygon, - // we're inside it, otherwise we're not. Obviously we'd need more radiating lines - // to be sure of correct results for very strange (concave) shapes. - double endPointsX[4]; - double endPointsY[4]; - // North - endPointsX[0] = x; - endPointsY[0] = (double)(y - 1000.0); - // East - endPointsX[1] = (double)(x + 1000.0); - endPointsY[1] = y; - // South - endPointsX[2] = x; - endPointsY[2] = (double)(y + 1000.0); - // West - endPointsX[3] = (double)(x - 1000.0); - endPointsY[3] = y; - - // Store polygon points in an array - int np = m_points->Number(); - double *xpoints = new double[np]; - double *ypoints = new double[np]; - wxNode *node = m_points->First(); - int i = 0; - while (node) - { - wxRealPoint *point = (wxRealPoint *)node->Data(); - xpoints[i] = point->x + m_xpos; - ypoints[i] = point->y + m_ypos; - node = node->Next(); - i ++; - } - - // We assume it's inside the polygon UNLESS one or more - // lines don't hit the outline. - bool isContained = TRUE; - - int noPoints = 4; - for (i = 0; i < noPoints; i++) - { - if (!PolylineHitTest(np, xpoints, ypoints, x, y, endPointsX[i], endPointsY[i])) - isContained = FALSE; - } -/* - if (isContained) - ClipsErrorFunction("It's a hit!\n"); - else - ClipsErrorFunction("No hit.\n"); -*/ - delete[] xpoints; - delete[] ypoints; - - if (!isContained) - return FALSE; - - int nearest_attachment = 0; - - // If a hit, check the attachment points within the object. - int n = GetNumberOfAttachments(); - double nearest = 999999.0; - - for (i = 0; i < n; i++) - { - double xp, yp; - if (GetAttachmentPositionEdge(i, &xp, &yp)) - { - double l = (double)sqrt(((xp - x) * (xp - x)) + - ((yp - y) * (yp - y))); - if (l < nearest) - { - nearest = l; - nearest_attachment = i; - } - } - } - *attachment = nearest_attachment; - *distance = nearest; - return TRUE; -} - -// Really need to be able to reset the shape! Otherwise, if the -// points ever go to zero, we've lost it, and can't resize. -void wxPolygonShape::SetSize(double new_width, double new_height, bool recursive) -{ - SetAttachmentSize(new_width, new_height); - - // Multiply all points by proportion of new size to old size - double x_proportion = (double)(fabs(new_width/m_originalWidth)); - double y_proportion = (double)(fabs(new_height/m_originalHeight)); - - wxNode *node = m_points->First(); - wxNode *original_node = m_originalPoints->First(); - while (node && original_node) - { - wxRealPoint *point = (wxRealPoint *)node->Data(); - wxRealPoint *original_point = (wxRealPoint *)original_node->Data(); - - point->x = (original_point->x * x_proportion); - point->y = (original_point->y * y_proportion); - - node = node->Next(); - original_node = original_node->Next(); - } - -// CalculateBoundingBox(); - m_boundWidth = (double)fabs(new_width); - m_boundHeight = (double)fabs(new_height); - SetDefaultRegionSize(); -} - -// Make the original points the same as the working points -void wxPolygonShape::UpdateOriginalPoints() -{ - if (!m_originalPoints) m_originalPoints = new wxList; - wxNode *original_node = m_originalPoints->First(); - while (original_node) - { - wxNode *next_node = original_node->Next(); - wxRealPoint *original_point = (wxRealPoint *)original_node->Data(); - delete original_point; - delete original_node; - - original_node = next_node; - } - - wxNode *node = m_points->First(); - while (node) - { - wxRealPoint *point = (wxRealPoint *)node->Data(); - wxRealPoint *original_point = new wxRealPoint(point->x, point->y); - m_originalPoints->Append((wxObject*) original_point); - - node = node->Next(); - } - CalculateBoundingBox(); - m_originalWidth = m_boundWidth; - m_originalHeight = m_boundHeight; -} - -void wxPolygonShape::AddPolygonPoint(int pos) -{ - wxNode *node = m_points->Nth(pos); - if (!node) node = m_points->First(); - wxRealPoint *firstPoint = (wxRealPoint *)node->Data(); - - wxNode *node2 = m_points->Nth(pos + 1); - if (!node2) node2 = m_points->First(); - wxRealPoint *secondPoint = (wxRealPoint *)node2->Data(); - - double x = (double)((secondPoint->x - firstPoint->x)/2.0 + firstPoint->x); - double y = (double)((secondPoint->y - firstPoint->y)/2.0 + firstPoint->y); - wxRealPoint *point = new wxRealPoint(x, y); - - if (pos >= (m_points->Number() - 1)) - m_points->Append((wxObject*) point); - else - m_points->Insert(node2, (wxObject*) point); - - UpdateOriginalPoints(); - - if (m_selected) - { - DeleteControlPoints(); - MakeControlPoints(); - } -} - -void wxPolygonShape::DeletePolygonPoint(int pos) -{ - wxNode *node = m_points->Nth(pos); - if (node) - { - wxRealPoint *point = (wxRealPoint *)node->Data(); - delete point; - delete node; - UpdateOriginalPoints(); - if (m_selected) - { - DeleteControlPoints(); - MakeControlPoints(); - } - } -} - -// Assume (x1, y1) is centre of box (most generally, line end at box) -bool wxPolygonShape::GetPerimeterPoint(double x1, double y1, - double x2, double y2, - double *x3, double *y3) -{ - int n = m_points->Number(); - - // First check for situation where the line is vertical, - // and we would want to connect to a point on that vertical -- - // oglFindEndForPolyline can't cope with this (the arrow - // gets drawn to the wrong place). - if ((m_attachmentMode == ATTACHMENT_MODE_NONE) && (x1 == x2)) - { - // Look for the point we'd be connecting to. This is - // a heuristic... - wxNode *node = m_points->First(); - while (node) - { - wxRealPoint *point = (wxRealPoint *)node->Data(); - if (point->x == 0.0) - { - if ((y2 > y1) && (point->y > 0.0)) - { - *x3 = point->x + m_xpos; - *y3 = point->y + m_ypos; - return TRUE; - } - else if ((y2 < y1) && (point->y < 0.0)) - { - *x3 = point->x + m_xpos; - *y3 = point->y + m_ypos; - return TRUE; - } - } - node = node->Next(); - } - } - - double *xpoints = new double[n]; - double *ypoints = new double[n]; - - wxNode *node = m_points->First(); - int i = 0; - while (node) - { - wxRealPoint *point = (wxRealPoint *)node->Data(); - xpoints[i] = point->x + m_xpos; - ypoints[i] = point->y + m_ypos; - node = node->Next(); - i ++; - } - - oglFindEndForPolyline(n, xpoints, ypoints, - x1, y1, x2, y2, x3, y3); - - delete[] xpoints; - delete[] ypoints; - - return TRUE; -} - -void wxPolygonShape::OnDraw(wxDC& dc) -{ - int n = m_points->Number(); - wxPoint *intPoints = new wxPoint[n]; - int i; - for (i = 0; i < n; i++) - { - wxRealPoint* point = (wxRealPoint*) m_points->Nth(i)->Data(); - intPoints[i].x = WXROUND(point->x); - intPoints[i].y = WXROUND(point->y); - } - - if (m_shadowMode != SHADOW_NONE) - { - if (m_shadowBrush) - dc.SetBrush(* m_shadowBrush); - dc.SetPen(* g_oglTransparentPen); - - dc.DrawPolygon(n, intPoints, WXROUND(m_xpos + m_shadowOffsetX), WXROUND(m_ypos + m_shadowOffsetY)); - } - - if (m_pen) - { - if (m_pen->GetWidth() == 0) - dc.SetPen(* g_oglTransparentPen); - else - dc.SetPen(* m_pen); - } - if (m_brush) - dc.SetBrush(* m_brush); - dc.DrawPolygon(n, intPoints, WXROUND(m_xpos), WXROUND(m_ypos)); - - delete[] intPoints; -} - -void wxPolygonShape::OnDrawOutline(wxDC& dc, double x, double y, double w, double h) -{ - dc.SetBrush(* wxTRANSPARENT_BRUSH); - // Multiply all points by proportion of new size to old size - double x_proportion = (double)(fabs(w/m_originalWidth)); - double y_proportion = (double)(fabs(h/m_originalHeight)); - - int n = m_originalPoints->Number(); - wxPoint *intPoints = new wxPoint[n]; - int i; - for (i = 0; i < n; i++) - { - wxRealPoint* point = (wxRealPoint*) m_originalPoints->Nth(i)->Data(); - intPoints[i].x = WXROUND(x_proportion * point->x); - intPoints[i].y = WXROUND(y_proportion * point->y); - } - dc.DrawPolygon(n, intPoints, WXROUND(x), WXROUND(y)); - delete[] intPoints; -} - -// Make as many control points as there are vertices. -void wxPolygonShape::MakeControlPoints() -{ - wxNode *node = m_points->First(); - while (node) - { - wxRealPoint *point = (wxRealPoint *)node->Data(); - wxPolygonControlPoint *control = new wxPolygonControlPoint(m_canvas, this, CONTROL_POINT_SIZE, - point, point->x, point->y); - m_canvas->AddShape(control); - m_controlPoints.Append(control); - node = node->Next(); - } -} - -void wxPolygonShape::ResetControlPoints() -{ - wxNode *node = m_points->First(); - wxNode *controlPointNode = m_controlPoints.First(); - while (node && controlPointNode) - { - wxRealPoint *point = (wxRealPoint *)node->Data(); - wxPolygonControlPoint *controlPoint = (wxPolygonControlPoint *)controlPointNode->Data(); - - controlPoint->m_xoffset = point->x; - controlPoint->m_yoffset = point->y; - controlPoint->m_polygonVertex = point; - - node = node->Next(); - controlPointNode = controlPointNode->Next(); - } -} - - -#ifdef PROLOGIO -void wxPolygonShape::WriteAttributes(wxExpr *clause) -{ - wxShape::WriteAttributes(clause); - - clause->AddAttributeValue("x", m_xpos); - clause->AddAttributeValue("y", m_ypos); - - // Make a list of lists for the coordinates - wxExpr *list = new wxExpr(wxExprList); - wxNode *node = m_points->First(); - while (node) - { - wxRealPoint *point = (wxRealPoint *)node->Data(); - wxExpr *point_list = new wxExpr(wxExprList); - wxExpr *x_expr = new wxExpr((double)point->x); - wxExpr *y_expr = new wxExpr((double)point->y); - - point_list->Append(x_expr); - point_list->Append(y_expr); - list->Append(point_list); - - node = node->Next(); - } - clause->AddAttributeValue("points", list); - - // Save the original (unscaled) points - list = new wxExpr(wxExprList); - node = m_originalPoints->First(); - while (node) - { - wxRealPoint *point = (wxRealPoint *)node->Data(); - wxExpr *point_list = new wxExpr(wxExprList); - wxExpr *x_expr = new wxExpr((double) point->x); - wxExpr *y_expr = new wxExpr((double) point->y); - point_list->Append(x_expr); - point_list->Append(y_expr); - list->Append(point_list); - - node = node->Next(); - } - clause->AddAttributeValue("m_originalPoints", list); -} - -void wxPolygonShape::ReadAttributes(wxExpr *clause) -{ - wxShape::ReadAttributes(clause); - - // Read a list of lists - m_points = new wxList; - m_originalPoints = new wxList; - - wxExpr *points_list = NULL; - clause->AssignAttributeValue("points", &points_list); - - // If no points_list, don't crash!! Assume a diamond instead. - double the_height = 100.0; - double the_width = 100.0; - if (!points_list) - { - wxRealPoint *point = new wxRealPoint(0.0, (-the_height/2)); - m_points->Append((wxObject*) point); - - point = new wxRealPoint((the_width/2), 0.0); - m_points->Append((wxObject*) point); - - point = new wxRealPoint(0.0, (the_height/2)); - m_points->Append((wxObject*) point); - - point = new wxRealPoint((-the_width/2), 0.0); - m_points->Append((wxObject*) point); - - point = new wxRealPoint(0.0, (-the_height/2)); - m_points->Append((wxObject*) point); - } - else - { - wxExpr *node = points_list->value.first; - - while (node) - { - wxExpr *xexpr = node->value.first; - long x = xexpr->IntegerValue(); - - wxExpr *yexpr = xexpr->next; - long y = yexpr->IntegerValue(); - - wxRealPoint *point = new wxRealPoint((double)x, (double)y); - m_points->Append((wxObject*) point); - - node = node->next; - } - } - - points_list = NULL; - clause->AssignAttributeValue("m_originalPoints", &points_list); - - // If no points_list, don't crash!! Assume a diamond instead. - if (!points_list) - { - wxRealPoint *point = new wxRealPoint(0.0, (-the_height/2)); - m_originalPoints->Append((wxObject*) point); - - point = new wxRealPoint((the_width/2), 0.0); - m_originalPoints->Append((wxObject*) point); - - point = new wxRealPoint(0.0, (the_height/2)); - m_originalPoints->Append((wxObject*) point); - - point = new wxRealPoint((-the_width/2), 0.0); - m_originalPoints->Append((wxObject*) point); - - point = new wxRealPoint(0.0, (-the_height/2)); - m_originalPoints->Append((wxObject*) point); - - m_originalWidth = the_width; - m_originalHeight = the_height; - } - else - { - wxExpr *node = points_list->value.first; - double min_x = 1000; - double min_y = 1000; - double max_x = -1000; - double max_y = -1000; - while (node) - { - wxExpr *xexpr = node->value.first; - long x = xexpr->IntegerValue(); - - wxExpr *yexpr = xexpr->next; - long y = yexpr->IntegerValue(); - - wxRealPoint *point = new wxRealPoint((double)x, (double)y); - m_originalPoints->Append((wxObject*) point); - - if (x < min_x) - min_x = (double)x; - if (y < min_y) - min_y = (double)y; - if (x > max_x) - max_x = (double)x; - if (y > max_y) - max_y = (double)y; - - node = node->next; - } - m_originalWidth = max_x - min_x; - m_originalHeight = max_y - min_y; - } - - CalculateBoundingBox(); -} -#endif - -void wxPolygonShape::Copy(wxShape& copy) -{ - wxShape::Copy(copy); - - wxASSERT( copy.IsKindOf(CLASSINFO(wxPolygonShape)) ); - - wxPolygonShape& polyCopy = (wxPolygonShape&) copy; - - polyCopy.ClearPoints(); - - polyCopy.m_points = new wxList; - polyCopy.m_originalPoints = new wxList; - - wxNode *node = m_points->First(); - while (node) - { - wxRealPoint *point = (wxRealPoint *)node->Data(); - wxRealPoint *new_point = new wxRealPoint(point->x, point->y); - polyCopy.m_points->Append((wxObject*) new_point); - node = node->Next(); - } - node = m_originalPoints->First(); - while (node) - { - wxRealPoint *point = (wxRealPoint *)node->Data(); - wxRealPoint *new_point = new wxRealPoint(point->x, point->y); - polyCopy.m_originalPoints->Append((wxObject*) new_point); - node = node->Next(); - } - polyCopy.m_boundWidth = m_boundWidth; - polyCopy.m_boundHeight = m_boundHeight; - polyCopy.m_originalWidth = m_originalWidth; - polyCopy.m_originalHeight = m_originalHeight; -} - -int wxPolygonShape::GetNumberOfAttachments() const -{ - int maxN = (m_points ? (m_points->Number() - 1) : 0); - wxNode *node = m_attachmentPoints.First(); - while (node) - { - wxAttachmentPoint *point = (wxAttachmentPoint *)node->Data(); - if (point->m_id > maxN) - maxN = point->m_id; - node = node->Next(); - } - return maxN+1;; -} - -bool wxPolygonShape::GetAttachmentPosition(int attachment, double *x, double *y, - int nth, int no_arcs, wxLineShape *line) -{ - if ((m_attachmentMode == ATTACHMENT_MODE_EDGE) && m_points && attachment < m_points->Number()) - { - wxRealPoint *point = (wxRealPoint *)m_points->Nth(attachment)->Data(); - *x = point->x + m_xpos; - *y = point->y + m_ypos; - return TRUE; - } - else - { return wxShape::GetAttachmentPosition(attachment, x, y, nth, no_arcs, line); } -} - -bool wxPolygonShape::AttachmentIsValid(int attachment) -{ - if (!m_points) - return FALSE; - - if ((attachment >= 0) && (attachment < m_points->Number())) - return TRUE; - - wxNode *node = m_attachmentPoints.First(); - while (node) - { - wxAttachmentPoint *point = (wxAttachmentPoint *)node->Data(); - if (point->m_id == attachment) - return TRUE; - node = node->Next(); - } - return FALSE; -} - -// Rotate about the given axis by the given amount in radians -void wxPolygonShape::Rotate(double x, double y, double theta) -{ - double actualTheta = theta-m_rotation; - - // Rotate attachment points - double sinTheta = (double)sin(actualTheta); - double cosTheta = (double)cos(actualTheta); - wxNode *node = m_attachmentPoints.First(); - while (node) - { - wxAttachmentPoint *point = (wxAttachmentPoint *)node->Data(); - double x1 = point->m_x; - double y1 = point->m_y; - point->m_x = x1*cosTheta - y1*sinTheta + x*(1.0 - cosTheta) + y*sinTheta; - point->m_y = x1*sinTheta + y1*cosTheta + y*(1.0 - cosTheta) + x*sinTheta; - node = node->Next(); - } - - node = m_points->First(); - while (node) - { - wxRealPoint *point = (wxRealPoint *)node->Data(); - double x1 = point->x; - double y1 = point->y; - point->x = x1*cosTheta - y1*sinTheta + x*(1.0 - cosTheta) + y*sinTheta; - point->y = x1*sinTheta + y1*cosTheta + y*(1.0 - cosTheta) + x*sinTheta; - node = node->Next(); - } - node = m_originalPoints->First(); - while (node) - { - wxRealPoint *point = (wxRealPoint *)node->Data(); - double x1 = point->x; - double y1 = point->y; - point->x = x1*cosTheta - y1*sinTheta + x*(1.0 - cosTheta) + y*sinTheta; - point->y = x1*sinTheta + y1*cosTheta + y*(1.0 - cosTheta) + x*sinTheta; - node = node->Next(); - } - - m_rotation = theta; - - CalculatePolygonCentre(); - CalculateBoundingBox(); - ResetControlPoints(); -} - -// Rectangle object - -IMPLEMENT_DYNAMIC_CLASS(wxRectangleShape, wxShape) - -wxRectangleShape::wxRectangleShape(double w, double h) -{ - m_width = w; m_height = h; m_cornerRadius = 0.0; - SetDefaultRegionSize(); -} - -void wxRectangleShape::OnDraw(wxDC& dc) -{ - double x1 = (double)(m_xpos - m_width/2.0); - double y1 = (double)(m_ypos - m_height/2.0); - - if (m_shadowMode != SHADOW_NONE) - { - if (m_shadowBrush) - dc.SetBrush(* m_shadowBrush); - dc.SetPen(* g_oglTransparentPen); - - if (m_cornerRadius != 0.0) - dc.DrawRoundedRectangle(WXROUND(x1 + m_shadowOffsetX), WXROUND(y1 + m_shadowOffsetY), - WXROUND(m_width), WXROUND(m_height), m_cornerRadius); - else - dc.DrawRectangle(WXROUND(x1 + m_shadowOffsetX), WXROUND(y1 + m_shadowOffsetY), WXROUND(m_width), WXROUND(m_height)); - } - - if (m_pen) - { - if (m_pen->GetWidth() == 0) - dc.SetPen(* g_oglTransparentPen); - else - dc.SetPen(* m_pen); - } - if (m_brush) - dc.SetBrush(* m_brush); - - if (m_cornerRadius != 0.0) - dc.DrawRoundedRectangle(WXROUND(x1), WXROUND(y1), WXROUND(m_width), WXROUND(m_height), m_cornerRadius); - else - dc.DrawRectangle(WXROUND(x1), WXROUND(y1), WXROUND(m_width), WXROUND(m_height)); -} - -void wxRectangleShape::GetBoundingBoxMin(double *the_width, double *the_height) -{ - *the_width = m_width; - *the_height = m_height; -} - -void wxRectangleShape::SetSize(double x, double y, bool recursive) -{ - SetAttachmentSize(x, y); - m_width = (double)wxMax(x, 1.0); - m_height = (double)wxMax(y, 1.0); - SetDefaultRegionSize(); -} - -void wxRectangleShape::SetCornerRadius(double rad) -{ - m_cornerRadius = rad; -} - -// Assume (x1, y1) is centre of box (most generally, line end at box) -bool wxRectangleShape::GetPerimeterPoint(double x1, double y1, - double x2, double y2, - double *x3, double *y3) -{ - double bound_x, bound_y; - GetBoundingBoxMax(&bound_x, &bound_y); - oglFindEndForBox(bound_x, bound_y, m_xpos, m_ypos, x2, y2, x3, y3); - - return TRUE; -} - -#ifdef PROLOGIO -void wxRectangleShape::WriteAttributes(wxExpr *clause) -{ - wxShape::WriteAttributes(clause); - clause->AddAttributeValue("x", m_xpos); - clause->AddAttributeValue("y", m_ypos); - - clause->AddAttributeValue("width", m_width); - clause->AddAttributeValue("height", m_height); - if (m_cornerRadius != 0.0) - clause->AddAttributeValue("corner", m_cornerRadius); -} - -void wxRectangleShape::ReadAttributes(wxExpr *clause) -{ - wxShape::ReadAttributes(clause); - clause->AssignAttributeValue("width", &m_width); - clause->AssignAttributeValue("height", &m_height); - clause->AssignAttributeValue("corner", &m_cornerRadius); - - // In case we're reading an old file, set the region's size - if (m_regions.Number() == 1) - { - wxShapeRegion *region = (wxShapeRegion *)m_regions.First()->Data(); - region->SetSize(m_width, m_height); - } -} -#endif - -void wxRectangleShape::Copy(wxShape& copy) -{ - wxShape::Copy(copy); - - wxASSERT( copy.IsKindOf(CLASSINFO(wxRectangleShape)) ); - - wxRectangleShape& rectCopy = (wxRectangleShape&) copy; - rectCopy.m_width = m_width; - rectCopy.m_height = m_height; - rectCopy.m_cornerRadius = m_cornerRadius; -} - -int wxRectangleShape::GetNumberOfAttachments() const -{ - return wxShape::GetNumberOfAttachments(); -} - - -// There are 4 attachment points on a rectangle - 0 = top, 1 = right, 2 = bottom, -// 3 = left. -bool wxRectangleShape::GetAttachmentPosition(int attachment, double *x, double *y, - int nth, int no_arcs, wxLineShape *line) -{ - return wxShape::GetAttachmentPosition(attachment, x, y, nth, no_arcs, line); -} - -// Text object (no box) - -IMPLEMENT_DYNAMIC_CLASS(wxTextShape, wxRectangleShape) - -wxTextShape::wxTextShape(double width, double height): - wxRectangleShape(width, height) -{ -} - -void wxTextShape::OnDraw(wxDC& dc) -{ -} - -void wxTextShape::Copy(wxShape& copy) -{ - wxRectangleShape::Copy(copy); -} - -#ifdef PROLOGIO -void wxTextShape::WriteAttributes(wxExpr *clause) -{ - wxRectangleShape::WriteAttributes(clause); -} -#endif - -// Ellipse object - -IMPLEMENT_DYNAMIC_CLASS(wxEllipseShape, wxShape) - -wxEllipseShape::wxEllipseShape(double w, double h) -{ - m_width = w; m_height = h; - SetDefaultRegionSize(); -} - -void wxEllipseShape::GetBoundingBoxMin(double *w, double *h) -{ - *w = m_width; *h = m_height; -} - -bool wxEllipseShape::GetPerimeterPoint(double x1, double y1, - double x2, double y2, - double *x3, double *y3) -{ - double bound_x, bound_y; - GetBoundingBoxMax(&bound_x, &bound_y); - -// oglFindEndForBox(bound_x, bound_y, m_xpos, m_ypos, x2, y2, x3, y3); - oglDrawArcToEllipse(m_xpos, m_ypos, bound_x, bound_y, x2, y2, x1, y1, x3, y3); - - return TRUE; -} - -void wxEllipseShape::OnDraw(wxDC& dc) -{ - if (m_shadowMode != SHADOW_NONE) - { - if (m_shadowBrush) - dc.SetBrush(* m_shadowBrush); - dc.SetPen(* g_oglTransparentPen); - dc.DrawEllipse((long) ((m_xpos - GetWidth()/2) + m_shadowOffsetX), - (long) ((m_ypos - GetHeight()/2) + m_shadowOffsetY), - (long) GetWidth(), (long) GetHeight()); - } - - if (m_pen) - { - if (m_pen->GetWidth() == 0) - dc.SetPen(* g_oglTransparentPen); - else - dc.SetPen(* m_pen); - } - if (m_brush) - dc.SetBrush(* m_brush); - dc.DrawEllipse((long) (m_xpos - GetWidth()/2), (long) (m_ypos - GetHeight()/2), (long) GetWidth(), (long) GetHeight()); -} - -void wxEllipseShape::SetSize(double x, double y, bool recursive) -{ - SetAttachmentSize(x, y); - m_width = x; - m_height = y; - SetDefaultRegionSize(); -} - -#ifdef PROLOGIO -void wxEllipseShape::WriteAttributes(wxExpr *clause) -{ - wxShape::WriteAttributes(clause); - clause->AddAttributeValue("x", m_xpos); - clause->AddAttributeValue("y", m_ypos); - - clause->AddAttributeValue("width", m_width); - clause->AddAttributeValue("height", m_height); -} - -void wxEllipseShape::ReadAttributes(wxExpr *clause) -{ - wxShape::ReadAttributes(clause); - clause->AssignAttributeValue("width", &m_width); - clause->AssignAttributeValue("height", &m_height); - - // In case we're reading an old file, set the region's size - if (m_regions.Number() == 1) - { - wxShapeRegion *region = (wxShapeRegion *)m_regions.First()->Data(); - region->SetSize(m_width, m_height); - } -} -#endif - -void wxEllipseShape::Copy(wxShape& copy) -{ - wxShape::Copy(copy); - - wxASSERT( copy.IsKindOf(CLASSINFO(wxEllipseShape)) ); - - wxEllipseShape& ellipseCopy = (wxEllipseShape&) copy; - - ellipseCopy.m_width = m_width; - ellipseCopy.m_height = m_height; -} - -int wxEllipseShape::GetNumberOfAttachments() const -{ - return wxShape::GetNumberOfAttachments(); -} - -// There are 4 attachment points on an ellipse - 0 = top, 1 = right, 2 = bottom, -// 3 = left. -bool wxEllipseShape::GetAttachmentPosition(int attachment, double *x, double *y, - int nth, int no_arcs, wxLineShape *line) -{ - if (m_attachmentMode == ATTACHMENT_MODE_BRANCHING) - return wxShape::GetAttachmentPosition(attachment, x, y, nth, no_arcs, line); - - if (m_attachmentMode != ATTACHMENT_MODE_NONE) - { - double top = (double)(m_ypos + m_height/2.0); - double bottom = (double)(m_ypos - m_height/2.0); - double left = (double)(m_xpos - m_width/2.0); - double right = (double)(m_xpos + m_width/2.0); - - int physicalAttachment = LogicalToPhysicalAttachment(attachment); - - switch (physicalAttachment) - { - case 0: - { - if (m_spaceAttachments) - *x = left + (nth + 1)*m_width/(no_arcs + 1); - else *x = m_xpos; - *y = top; - // We now have the point on the bounding box: but get the point on the ellipse - // by imagining a vertical line from (*x, m_ypos - m_height- 500) to (*x, m_ypos) intersecting - // the ellipse. - oglDrawArcToEllipse(m_xpos, m_ypos, m_width, m_height, *x, (double)(m_ypos-m_height-500), *x, m_ypos, x, y); - break; - } - case 1: - { - *x = right; - if (m_spaceAttachments) - *y = bottom + (nth + 1)*m_height/(no_arcs + 1); - else *y = m_ypos; - oglDrawArcToEllipse(m_xpos, m_ypos, m_width, m_height, (double)(m_xpos+m_width+500), *y, m_xpos, *y, x, y); - break; - } - case 2: - { - if (m_spaceAttachments) - *x = left + (nth + 1)*m_width/(no_arcs + 1); - else *x = m_xpos; - *y = bottom; - oglDrawArcToEllipse(m_xpos, m_ypos, m_width, m_height, *x, (double)(m_ypos+m_height+500), *x, m_ypos, x, y); - break; - } - case 3: - { - *x = left; - if (m_spaceAttachments) - *y = bottom + (nth + 1)*m_height/(no_arcs + 1); - else *y = m_ypos; - oglDrawArcToEllipse(m_xpos, m_ypos, m_width, m_height, (double)(m_xpos-m_width-500), *y, m_xpos, *y, x, y); - break; - } - default: - { - return wxShape::GetAttachmentPosition(attachment, x, y, nth, no_arcs, line); - break; - } - } - return TRUE; - } - else - { *x = m_xpos; *y = m_ypos; return TRUE; } -} - - -// Circle object -IMPLEMENT_DYNAMIC_CLASS(wxCircleShape, wxEllipseShape) - -wxCircleShape::wxCircleShape(double diameter):wxEllipseShape(diameter, diameter) -{ - SetMaintainAspectRatio(TRUE); -} - -void wxCircleShape::Copy(wxShape& copy) -{ - wxEllipseShape::Copy(copy); -} - -bool wxCircleShape::GetPerimeterPoint(double x1, double y1, - double x2, double y2, - double *x3, double *y3) -{ - oglFindEndForCircle(m_width/2, - m_xpos, m_ypos, // Centre of circle - x2, y2, // Other end of line - x3, y3); - - return TRUE; -} - -// Control points - -double wxControlPoint::sm_controlPointDragStartX = 0.0; -double wxControlPoint::sm_controlPointDragStartY = 0.0; -double wxControlPoint::sm_controlPointDragStartWidth = 0.0; -double wxControlPoint::sm_controlPointDragStartHeight = 0.0; -double wxControlPoint::sm_controlPointDragEndWidth = 0.0; -double wxControlPoint::sm_controlPointDragEndHeight = 0.0; -double wxControlPoint::sm_controlPointDragPosX = 0.0; -double wxControlPoint::sm_controlPointDragPosY = 0.0; - -IMPLEMENT_DYNAMIC_CLASS(wxControlPoint, wxRectangleShape) - -wxControlPoint::wxControlPoint(wxShapeCanvas *theCanvas, wxShape *object, double size, double the_xoffset, double the_yoffset, int the_type):wxRectangleShape(size, size) -{ - m_canvas = theCanvas; - m_shape = object; - m_xoffset = the_xoffset; - m_yoffset = the_yoffset; - m_type = the_type; - SetPen(g_oglBlackForegroundPen); - SetBrush(wxBLACK_BRUSH); - m_oldCursor = NULL; - m_visible = TRUE; - m_eraseObject = TRUE; -} - -wxControlPoint::~wxControlPoint() -{ -} - -// Don't even attempt to draw any text - waste of time! -void wxControlPoint::OnDrawContents(wxDC& dc) -{ -} - -void wxControlPoint::OnDraw(wxDC& dc) -{ - m_xpos = m_shape->GetX() + m_xoffset; - m_ypos = m_shape->GetY() + m_yoffset; - wxRectangleShape::OnDraw(dc); -} - -void wxControlPoint::OnErase(wxDC& dc) -{ - wxRectangleShape::OnErase(dc); -} - -// Implement resizing of canvas object -void wxControlPoint::OnDragLeft(bool draw, double x, double y, int keys, int attachment) -{ - m_shape->GetEventHandler()->OnSizingDragLeft(this, draw, x, y, keys, attachment); -} - -void wxControlPoint::OnBeginDragLeft(double x, double y, int keys, int attachment) -{ - m_shape->GetEventHandler()->OnSizingBeginDragLeft(this, x, y, keys, attachment); -} - -void wxControlPoint::OnEndDragLeft(double x, double y, int keys, int attachment) -{ - m_shape->GetEventHandler()->OnSizingEndDragLeft(this, x, y, keys, attachment); -} - -int wxControlPoint::GetNumberOfAttachments() const -{ - return 1; -} - -bool wxControlPoint::GetAttachmentPosition(int attachment, double *x, double *y, - int nth, int no_arcs, wxLineShape *line) -{ - *x = m_xpos; *y = m_ypos; - return TRUE; -} - -// Control points ('handles') redirect control to the actual shape, to make it easier -// to override sizing behaviour. -void wxShape::OnSizingDragLeft(wxControlPoint* pt, bool draw, double x, double y, int keys, int attachment) -{ - double bound_x; - double bound_y; - this->GetBoundingBoxMin(&bound_x, &bound_y); - - wxClientDC dc(GetCanvas()); - GetCanvas()->PrepareDC(dc); - - dc.SetLogicalFunction(wxXOR); - - wxPen dottedPen(wxColour(0, 0, 0), 1, wxDOT); - dc.SetPen(dottedPen); - dc.SetBrush((* wxTRANSPARENT_BRUSH)); - - if (this->GetCentreResize()) - { - // Maintain the same centre point. - double new_width = (double)(2.0*fabs(x - this->GetX())); - double new_height = (double)(2.0*fabs(y - this->GetY())); - - // Constrain sizing according to what control point you're dragging - if (pt->m_type == CONTROL_POINT_HORIZONTAL) - { - if (GetMaintainAspectRatio()) - { - new_height = bound_y*(new_width/bound_x); - } - else - new_height = bound_y; - } - else if (pt->m_type == CONTROL_POINT_VERTICAL) - { - if (GetMaintainAspectRatio()) - { - new_width = bound_x*(new_height/bound_y); - } - else - new_width = bound_x; - } - else if (pt->m_type == CONTROL_POINT_DIAGONAL && (keys & KEY_SHIFT)) - new_height = bound_y*(new_width/bound_x); - - if (this->GetFixedWidth()) - new_width = bound_x; - - if (this->GetFixedHeight()) - new_height = bound_y; - - pt->sm_controlPointDragEndWidth = new_width; - pt->sm_controlPointDragEndHeight = new_height; - - this->GetEventHandler()->OnDrawOutline(dc, this->GetX(), this->GetY(), - new_width, new_height); - } - else - { - // Don't maintain the same centre point! - double newX1 = wxMin(pt->sm_controlPointDragStartX, x); - double newY1 = wxMin(pt->sm_controlPointDragStartY, y); - double newX2 = wxMax(pt->sm_controlPointDragStartX, x); - double newY2 = wxMax(pt->sm_controlPointDragStartY, y); - if (pt->m_type == CONTROL_POINT_HORIZONTAL) - { - newY1 = pt->sm_controlPointDragStartY; - newY2 = newY1 + pt->sm_controlPointDragStartHeight; - } - else if (pt->m_type == CONTROL_POINT_VERTICAL) - { - newX1 = pt->sm_controlPointDragStartX; - newX2 = newX1 + pt->sm_controlPointDragStartWidth; - } - else if (pt->m_type == CONTROL_POINT_DIAGONAL && ((keys & KEY_SHIFT) || GetMaintainAspectRatio())) - { - double newH = (double)((newX2 - newX1)*(pt->sm_controlPointDragStartHeight/pt->sm_controlPointDragStartWidth)); - if (GetY() > pt->sm_controlPointDragStartY) - newY2 = (double)(newY1 + newH); - else - newY1 = (double)(newY2 - newH); - } - double newWidth = (double)(newX2 - newX1); - double newHeight = (double)(newY2 - newY1); - - if (pt->m_type == CONTROL_POINT_VERTICAL && GetMaintainAspectRatio()) - { - newWidth = bound_x * (newHeight/bound_y) ; - } - - if (pt->m_type == CONTROL_POINT_HORIZONTAL && GetMaintainAspectRatio()) - { - newHeight = bound_y * (newWidth/bound_x) ; - } - - pt->sm_controlPointDragPosX = (double)(newX1 + (newWidth/2.0)); - pt->sm_controlPointDragPosY = (double)(newY1 + (newHeight/2.0)); - if (this->GetFixedWidth()) - newWidth = bound_x; - - if (this->GetFixedHeight()) - newHeight = bound_y; - - pt->sm_controlPointDragEndWidth = newWidth; - pt->sm_controlPointDragEndHeight = newHeight; - this->GetEventHandler()->OnDrawOutline(dc, pt->sm_controlPointDragPosX, pt->sm_controlPointDragPosY, newWidth, newHeight); - } -} - -void wxShape::OnSizingBeginDragLeft(wxControlPoint* pt, double x, double y, int keys, int attachment) -{ - m_canvas->CaptureMouse(); - - wxClientDC dc(GetCanvas()); - GetCanvas()->PrepareDC(dc); -/* - if (pt->m_eraseObject) - this->Erase(dc); -*/ - - dc.SetLogicalFunction(wxXOR); - - double bound_x; - double bound_y; - this->GetBoundingBoxMin(&bound_x, &bound_y); - - // Choose the 'opposite corner' of the object as the stationary - // point in case this is non-centring resizing. - if (pt->GetX() < this->GetX()) - pt->sm_controlPointDragStartX = (double)(this->GetX() + (bound_x/2.0)); - else - pt->sm_controlPointDragStartX = (double)(this->GetX() - (bound_x/2.0)); - - if (pt->GetY() < this->GetY()) - pt->sm_controlPointDragStartY = (double)(this->GetY() + (bound_y/2.0)); - else - pt->sm_controlPointDragStartY = (double)(this->GetY() - (bound_y/2.0)); - - if (pt->m_type == CONTROL_POINT_HORIZONTAL) - pt->sm_controlPointDragStartY = (double)(this->GetY() - (bound_y/2.0)); - else if (pt->m_type == CONTROL_POINT_VERTICAL) - pt->sm_controlPointDragStartX = (double)(this->GetX() - (bound_x/2.0)); - - // We may require the old width and height. - pt->sm_controlPointDragStartWidth = bound_x; - pt->sm_controlPointDragStartHeight = bound_y; - - wxPen dottedPen(wxColour(0, 0, 0), 1, wxDOT); - dc.SetPen(dottedPen); - dc.SetBrush((* wxTRANSPARENT_BRUSH)); - - if (this->GetCentreResize()) - { - double new_width = (double)(2.0*fabs(x - this->GetX())); - double new_height = (double)(2.0*fabs(y - this->GetY())); - - // Constrain sizing according to what control point you're dragging - if (pt->m_type == CONTROL_POINT_HORIZONTAL) - { - if (GetMaintainAspectRatio()) - { - new_height = bound_y*(new_width/bound_x); - } - else - new_height = bound_y; - } - else if (pt->m_type == CONTROL_POINT_VERTICAL) - { - if (GetMaintainAspectRatio()) - { - new_width = bound_x*(new_height/bound_y); - } - else - new_width = bound_x; - } - else if (pt->m_type == CONTROL_POINT_DIAGONAL && (keys & KEY_SHIFT)) - new_height = bound_y*(new_width/bound_x); - - if (this->GetFixedWidth()) - new_width = bound_x; - - if (this->GetFixedHeight()) - new_height = bound_y; - - pt->sm_controlPointDragEndWidth = new_width; - pt->sm_controlPointDragEndHeight = new_height; - this->GetEventHandler()->OnDrawOutline(dc, this->GetX(), this->GetY(), - new_width, new_height); - } - else - { - // Don't maintain the same centre point! - double newX1 = wxMin(pt->sm_controlPointDragStartX, x); - double newY1 = wxMin(pt->sm_controlPointDragStartY, y); - double newX2 = wxMax(pt->sm_controlPointDragStartX, x); - double newY2 = wxMax(pt->sm_controlPointDragStartY, y); - if (pt->m_type == CONTROL_POINT_HORIZONTAL) - { - newY1 = pt->sm_controlPointDragStartY; - newY2 = newY1 + pt->sm_controlPointDragStartHeight; - } - else if (pt->m_type == CONTROL_POINT_VERTICAL) - { - newX1 = pt->sm_controlPointDragStartX; - newX2 = newX1 + pt->sm_controlPointDragStartWidth; - } - else if (pt->m_type == CONTROL_POINT_DIAGONAL && ((keys & KEY_SHIFT) || GetMaintainAspectRatio())) - { - double newH = (double)((newX2 - newX1)*(pt->sm_controlPointDragStartHeight/pt->sm_controlPointDragStartWidth)); - if (pt->GetY() > pt->sm_controlPointDragStartY) - newY2 = (double)(newY1 + newH); - else - newY1 = (double)(newY2 - newH); - } - double newWidth = (double)(newX2 - newX1); - double newHeight = (double)(newY2 - newY1); - - if (pt->m_type == CONTROL_POINT_VERTICAL && GetMaintainAspectRatio()) - { - newWidth = bound_x * (newHeight/bound_y) ; - } - - if (pt->m_type == CONTROL_POINT_HORIZONTAL && GetMaintainAspectRatio()) - { - newHeight = bound_y * (newWidth/bound_x) ; - } - - pt->sm_controlPointDragPosX = (double)(newX1 + (newWidth/2.0)); - pt->sm_controlPointDragPosY = (double)(newY1 + (newHeight/2.0)); - if (this->GetFixedWidth()) - newWidth = bound_x; - - if (this->GetFixedHeight()) - newHeight = bound_y; - - pt->sm_controlPointDragEndWidth = newWidth; - pt->sm_controlPointDragEndHeight = newHeight; - this->GetEventHandler()->OnDrawOutline(dc, pt->sm_controlPointDragPosX, pt->sm_controlPointDragPosY, newWidth, newHeight); - } -} - -void wxShape::OnSizingEndDragLeft(wxControlPoint* pt, double x, double y, int keys, int attachment) -{ - wxClientDC dc(GetCanvas()); - GetCanvas()->PrepareDC(dc); - - m_canvas->ReleaseMouse(); - dc.SetLogicalFunction(wxCOPY); - this->Recompute(); - this->ResetControlPoints(); - - this->Erase(dc); -/* - if (!pt->m_eraseObject) - this->Show(FALSE); -*/ - - this->SetSize(pt->sm_controlPointDragEndWidth, pt->sm_controlPointDragEndHeight); - - // The next operation could destroy this control point (it does for label objects, - // via formatting the text), so save all values we're going to use, or - // we'll be accessing garbage. - wxShape *theObject = this; - wxShapeCanvas *theCanvas = m_canvas; - bool eraseIt = pt->m_eraseObject; - - if (theObject->GetCentreResize()) - theObject->Move(dc, theObject->GetX(), theObject->GetY()); - else - theObject->Move(dc, pt->sm_controlPointDragPosX, pt->sm_controlPointDragPosY); - -/* - if (!eraseIt) - theObject->Show(TRUE); -*/ - - // Recursively redraw links if we have a composite. - if (theObject->GetChildren().Number() > 0) - theObject->DrawLinks(dc, -1, TRUE); - - double width, height; - theObject->GetBoundingBoxMax(&width, &height); - theObject->GetEventHandler()->OnEndSize(width, height); - - if (!theCanvas->GetQuickEditMode() && eraseIt) theCanvas->Redraw(dc); -} - - - -// Polygon control points - -IMPLEMENT_DYNAMIC_CLASS(wxPolygonControlPoint, wxControlPoint) - -wxPolygonControlPoint::wxPolygonControlPoint(wxShapeCanvas *theCanvas, wxShape *object, double size, - wxRealPoint *vertex, double the_xoffset, double the_yoffset): - wxControlPoint(theCanvas, object, size, the_xoffset, the_yoffset, 0) -{ - m_polygonVertex = vertex; - m_originalDistance = 0.0; -} - -wxPolygonControlPoint::~wxPolygonControlPoint() -{ -} - -// Calculate what new size would be, at end of resize -void wxPolygonControlPoint::CalculateNewSize(double x, double y) -{ - double bound_x; - double bound_y; - GetShape()->GetBoundingBoxMin(&bound_x, &bound_y); - - double dist = (double)sqrt((x - m_shape->GetX())*(x - m_shape->GetX()) + - (y - m_shape->GetY())*(y - m_shape->GetY())); - - m_newSize.x = (double)(dist/this->m_originalDistance)*this->m_originalSize.x; - m_newSize.y = (double)(dist/this->m_originalDistance)*this->m_originalSize.y; -} - - -// Implement resizing polygon or moving the vertex. -void wxPolygonControlPoint::OnDragLeft(bool draw, double x, double y, int keys, int attachment) -{ - m_shape->GetEventHandler()->OnSizingDragLeft(this, draw, x, y, keys, attachment); -} - -void wxPolygonControlPoint::OnBeginDragLeft(double x, double y, int keys, int attachment) -{ - m_shape->GetEventHandler()->OnSizingBeginDragLeft(this, x, y, keys, attachment); -} - -void wxPolygonControlPoint::OnEndDragLeft(double x, double y, int keys, int attachment) -{ - m_shape->GetEventHandler()->OnSizingEndDragLeft(this, x, y, keys, attachment); -} - -// Control points ('handles') redirect control to the actual shape, to make it easier -// to override sizing behaviour. -void wxPolygonShape::OnSizingDragLeft(wxControlPoint* pt, bool draw, double x, double y, int keys, int attachment) -{ - wxPolygonControlPoint* ppt = (wxPolygonControlPoint*) pt; - - wxClientDC dc(GetCanvas()); - GetCanvas()->PrepareDC(dc); - - dc.SetLogicalFunction(wxXOR); - - wxPen dottedPen(wxColour(0, 0, 0), 1, wxDOT); - dc.SetPen(dottedPen); - dc.SetBrush((* wxTRANSPARENT_BRUSH)); - - if (0) // keys & KEY_CTRL) - { - // TODO: mend this code. Currently we rely on altering the - // actual points, but we should assume we're not, as per - // the normal sizing case. - m_canvas->Snap(&x, &y); - - // Move point - ppt->m_polygonVertex->x = x - this->GetX(); - ppt->m_polygonVertex->y = y - this->GetY(); - ppt->SetX(x); - ppt->SetY(y); - ((wxPolygonShape *)this)->CalculateBoundingBox(); - ((wxPolygonShape *)this)->CalculatePolygonCentre(); - } - else - { - ppt->CalculateNewSize(x, y); - } - - this->GetEventHandler()->OnDrawOutline(dc, this->GetX(), this->GetY(), - ppt->GetNewSize().x, ppt->GetNewSize().y); -} - -void wxPolygonShape::OnSizingBeginDragLeft(wxControlPoint* pt, double x, double y, int keys, int attachment) -{ - wxPolygonControlPoint* ppt = (wxPolygonControlPoint*) pt; - - wxClientDC dc(GetCanvas()); - GetCanvas()->PrepareDC(dc); - - this->Erase(dc); - - dc.SetLogicalFunction(wxXOR); - - double bound_x; - double bound_y; - this->GetBoundingBoxMin(&bound_x, &bound_y); - - double dist = (double)sqrt((x - this->GetX())*(x - this->GetX()) + - (y - this->GetY())*(y - this->GetY())); - ppt->m_originalDistance = dist; - ppt->m_originalSize.x = bound_x; - ppt->m_originalSize.y = bound_y; - - if (ppt->m_originalDistance == 0.0) ppt->m_originalDistance = (double) 0.0001; - - wxPen dottedPen(wxColour(0, 0, 0), 1, wxDOT); - dc.SetPen(dottedPen); - dc.SetBrush((* wxTRANSPARENT_BRUSH)); - - if (0) // keys & KEY_CTRL) - { - // TODO: mend this code. Currently we rely on altering the - // actual points, but we should assume we're not, as per - // the normal sizing case. - m_canvas->Snap(&x, &y); - - // Move point - ppt->m_polygonVertex->x = x - this->GetX(); - ppt->m_polygonVertex->y = y - this->GetY(); - ppt->SetX(x); - ppt->SetY(y); - ((wxPolygonShape *)this)->CalculateBoundingBox(); - ((wxPolygonShape *)this)->CalculatePolygonCentre(); - } - else - { - ppt->CalculateNewSize(x, y); - } - - this->GetEventHandler()->OnDrawOutline(dc, this->GetX(), this->GetY(), - ppt->GetNewSize().x, ppt->GetNewSize().y); - - m_canvas->CaptureMouse(); -} - -void wxPolygonShape::OnSizingEndDragLeft(wxControlPoint* pt, double x, double y, int keys, int attachment) -{ - wxPolygonControlPoint* ppt = (wxPolygonControlPoint*) pt; - - wxClientDC dc(GetCanvas()); - GetCanvas()->PrepareDC(dc); - - m_canvas->ReleaseMouse(); - dc.SetLogicalFunction(wxCOPY); - - // If we're changing shape, must reset the original points - if (keys & KEY_CTRL) - { - ((wxPolygonShape *)this)->CalculateBoundingBox(); - ((wxPolygonShape *)this)->UpdateOriginalPoints(); - } - else - { - SetSize(ppt->GetNewSize().x, ppt->GetNewSize().y); - } - - ((wxPolygonShape *)this)->CalculateBoundingBox(); - ((wxPolygonShape *)this)->CalculatePolygonCentre(); - - this->Recompute(); - this->ResetControlPoints(); - this->Move(dc, this->GetX(), this->GetY()); - if (!m_canvas->GetQuickEditMode()) m_canvas->Redraw(dc); -} - -/* - * Object region - * - */ -IMPLEMENT_DYNAMIC_CLASS(wxShapeRegion, wxObject) - -wxShapeRegion::wxShapeRegion() -{ - m_regionText = ""; - m_font = g_oglNormalFont; - m_minHeight = 5.0; - m_minWidth = 5.0; - m_width = 0.0; - m_height = 0.0; - m_x = 0.0; - m_y = 0.0; - - m_regionProportionX = -1.0; - m_regionProportionY = -1.0; - m_formatMode = FORMAT_CENTRE_HORIZ | FORMAT_CENTRE_VERT; - m_regionName = ""; - m_textColour = "BLACK"; - m_penColour = "BLACK"; - m_penStyle = wxSOLID; - m_actualColourObject = NULL; - m_actualPenObject = NULL; -} - -wxShapeRegion::wxShapeRegion(wxShapeRegion& region) -{ - m_regionText = region.m_regionText; - m_regionName = region.m_regionName; - m_textColour = region.m_textColour; - - m_font = region.m_font; - m_minHeight = region.m_minHeight; - m_minWidth = region.m_minWidth; - m_width = region.m_width; - m_height = region.m_height; - m_x = region.m_x; - m_y = region.m_y; - - m_regionProportionX = region.m_regionProportionX; - m_regionProportionY = region.m_regionProportionY; - m_formatMode = region.m_formatMode; - m_actualColourObject = NULL; - m_actualPenObject = NULL; - m_penStyle = region.m_penStyle; - m_penColour = region.m_penColour; - - ClearText(); - wxNode *node = region.m_formattedText.First(); - while (node) - { - wxShapeTextLine *line = (wxShapeTextLine *)node->Data(); - wxShapeTextLine *new_line = - new wxShapeTextLine(line->GetX(), line->GetY(), line->GetText()); - m_formattedText.Append(new_line); - node = node->Next(); - } -} - -wxShapeRegion::~wxShapeRegion() -{ - ClearText(); -} - -void wxShapeRegion::ClearText() -{ - wxNode *node = m_formattedText.First(); - while (node) - { - wxShapeTextLine *line = (wxShapeTextLine *)node->Data(); - wxNode *next = node->Next(); - delete line; - delete node; - node = next; - } -} - -void wxShapeRegion::SetFont(wxFont *f) -{ - m_font = f; -} - -void wxShapeRegion::SetMinSize(double w, double h) -{ - m_minWidth = w; - m_minHeight = h; -} - -void wxShapeRegion::SetSize(double w, double h) -{ - m_width = w; - m_height = h; -} - -void wxShapeRegion::SetPosition(double xp, double yp) -{ - m_x = xp; - m_y = yp; -} - -void wxShapeRegion::SetProportions(double xp, double yp) -{ - m_regionProportionX = xp; - m_regionProportionY = yp; -} - -void wxShapeRegion::SetFormatMode(int mode) -{ - m_formatMode = mode; -} - -void wxShapeRegion::SetColour(const wxString& col) -{ - m_textColour = col; - m_actualColourObject = NULL; -} - -wxColour *wxShapeRegion::GetActualColourObject() -{ - if (!m_actualColourObject) - m_actualColourObject = wxTheColourDatabase->FindColour(GetColour()); - if (!m_actualColourObject) - m_actualColourObject = wxBLACK; - return m_actualColourObject; -} - -void wxShapeRegion::SetPenColour(const wxString& col) -{ - m_penColour = col; - m_actualPenObject = NULL; -} - -// Returns NULL if the pen is invisible -// (different to pen being transparent; indicates that -// region boundary should not be drawn.) -wxPen *wxShapeRegion::GetActualPen() -{ - if (m_actualPenObject) - return m_actualPenObject; - - if (!m_penColour) return NULL; - if (m_penColour == "Invisible") - return NULL; - m_actualPenObject = wxThePenList->FindOrCreatePen(m_penColour, 1, m_penStyle); - return m_actualPenObject; -} - - diff --git a/utils/ogl/src/basicp.h b/utils/ogl/src/basicp.h deleted file mode 100644 index aa1067764f..0000000000 --- a/utils/ogl/src/basicp.h +++ /dev/null @@ -1,223 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: basicp.h -// Purpose: Private OGL classes and definitions -// Author: Julian Smart -// Modified by: -// Created: 12/07/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _OGL_BASICP_H_ -#define _OGL_BASICP_H_ - -#ifdef __GNUG__ -#pragma interface "basicp.h" -#endif - -#define CONTROL_POINT_SIZE 6 - -class wxShapeTextLine: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxShapeTextLine) -public: - wxShapeTextLine(double the_x = 0.0, double the_y = 0.0, const wxString& the_line = ""); - ~wxShapeTextLine(); - - inline double GetX() const { return m_x; } - inline double GetY() const { return m_y; } - - inline void SetX(double x) { m_x = x; } - inline void SetY(double y) { m_y = y; } - - inline void SetText(const wxString& text) { m_line = text; } - inline wxString GetText() const { return m_line; } - -protected: - wxString m_line; - double m_x; - double m_y; -}; - -class wxShape; -class wxControlPoint: public wxRectangleShape -{ - DECLARE_DYNAMIC_CLASS(wxControlPoint) - - friend class wxShapeEvtHandler; - friend class wxShape; - - public: - wxControlPoint(wxShapeCanvas *the_canvas = NULL, wxShape *object = NULL, double size = 0.0, double the_xoffset = 0.0, - double the_yoffset = 0.0, int the_type = 0); - ~wxControlPoint(); - - void OnDraw(wxDC& dc); - void OnErase(wxDC& dc); - void OnDrawContents(wxDC& dc); - void OnDragLeft(bool draw, double x, double y, int keys=0, int attachment = 0); - void OnBeginDragLeft(double x, double y, int keys=0, int attachment = 0); - void OnEndDragLeft(double x, double y, int keys=0, int attachment = 0); - - bool GetAttachmentPosition(int attachment, double *x, double *y, - int nth = 0, int no_arcs = 1, wxLineShape *line = NULL); - int GetNumberOfAttachments() const; - - inline void SetEraseObject(bool er) { m_eraseObject = er; } - -public: - int m_type; - double m_xoffset; - double m_yoffset; - wxShape* m_shape; - wxCursor* m_oldCursor; - bool m_eraseObject; // If TRUE, erases object before dragging handle. - -/* - * Store original top-left, bottom-right coordinates - * in case we're doing non-vertical resizing. - */ - static double sm_controlPointDragStartX; - static double sm_controlPointDragStartY; - static double sm_controlPointDragStartWidth; - static double sm_controlPointDragStartHeight; - static double sm_controlPointDragEndWidth; - static double sm_controlPointDragEndHeight; - static double sm_controlPointDragPosX; - static double sm_controlPointDragPosY; -}; - -class wxPolygonShape; -class wxPolygonControlPoint: public wxControlPoint -{ - DECLARE_DYNAMIC_CLASS(wxPolygonControlPoint) - friend class wxPolygonShape; - public: - wxPolygonControlPoint(wxShapeCanvas *the_canvas = NULL, wxShape *object = NULL, double size = 0.0, wxRealPoint *vertex = NULL, - double the_xoffset = 0.0, double the_yoffset = 0.0); - ~wxPolygonControlPoint(); - - void OnDragLeft(bool draw, double x, double y, int keys=0, int attachment = 0); - void OnBeginDragLeft(double x, double y, int keys=0, int attachment = 0); - void OnEndDragLeft(double x, double y, int keys=0, int attachment = 0); - - // Calculate what new size would be, at end of resize - virtual void CalculateNewSize(double x, double y); - - // Get new size - inline wxRealPoint GetNewSize() const { return m_newSize; }; - -public: - wxRealPoint* m_polygonVertex; - wxRealPoint m_originalSize; - double m_originalDistance; - wxRealPoint m_newSize; -}; - -/* - * Object regions. - * Every shape has one or more text regions with various - * properties. Not all of a region's properties will be used - * by a shape. - * - */ - -class wxShapeRegion: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxShapeRegion) - - public: - // Constructor - wxShapeRegion(); - // Copy constructor - wxShapeRegion(wxShapeRegion& region); - // Destructor - ~wxShapeRegion(); - - // Accessors - inline void SetText(const wxString& s) { m_regionText = s; } - void SetFont(wxFont *f); - void SetMinSize(double w, double h); - void SetSize(double w, double h); - void SetPosition(double x, double y); - void SetProportions(double x, double y); - void SetFormatMode(int mode); - inline void SetName(const wxString& s) { m_regionName = s; }; - void SetColour(const wxString& col); // Text colour - - inline wxString GetText() const { return m_regionText; } - inline wxFont *GetFont() const { return m_font; } - inline void GetMinSize(double *x, double *y) const { *x = m_minWidth; *y = m_minHeight; } - inline void GetProportion(double *x, double *y) const { *x = m_regionProportionX; *y = m_regionProportionY; } - inline void GetSize(double *x, double *y) const { *x = m_width; *y = m_height; } - inline void GetPosition(double *xp, double *yp) const { *xp = m_x; *yp = m_y; } - inline int GetFormatMode() const { return m_formatMode; } - inline wxString GetName() const { return m_regionName; } - inline wxString GetColour() const { return m_textColour; } - wxColour *GetActualColourObject(); - inline wxList& GetFormattedText() { return m_formattedText; } - inline wxString GetPenColour() const { return m_penColour; } - inline int GetPenStyle() const { return m_penStyle; } - inline void SetPenStyle(int style) { m_penStyle = style; m_actualPenObject = NULL; } - void SetPenColour(const wxString& col); - wxPen *GetActualPen(); - inline double GetWidth() const { return m_width; } - inline double GetHeight() const { return m_height; } - - void ClearText(); - -public: - wxString m_regionText; - wxList m_formattedText; // List of wxShapeTextLines - wxFont* m_font; - double m_minHeight; // If zero, hide region. - double m_minWidth; // If zero, hide region. - double m_width; - double m_height; - double m_x; - double m_y; - - double m_regionProportionX; // Proportion of total object size; - // -1.0 indicates equal proportion - double m_regionProportionY; // Proportion of total object size; - // -1.0 indicates equal proportion - - int m_formatMode; // FORMAT_CENTRE_HORIZ | FORMAT_CENTRE_VERT | FORMAT_NONE - wxString m_regionName; - wxString m_textColour; - wxColour* m_actualColourObject; // For speed purposes - - // New members for specifying divided rectangle division colour/style 30/6/94 - wxString m_penColour; - int m_penStyle; - wxPen* m_actualPenObject; - -}; - -/* - * User-defined attachment point - */ - -class wxAttachmentPoint: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxAttachmentPoint) - -public: - inline wxAttachmentPoint() - { - m_id = 0; m_x = 0.0; m_y = 0.0; - } - inline wxAttachmentPoint(int id, double x, double y) - { - m_id = id; m_x = x; m_y = y; - } - -public: - int m_id; // Identifier - double m_x; // x offset from centre of object - double m_y; // y offset from centre of object -}; - -#endif - // _OGL_BASICP_H_ diff --git a/utils/ogl/src/bmpshape.cpp b/utils/ogl/src/bmpshape.cpp deleted file mode 100644 index a8715057d3..0000000000 --- a/utils/ogl/src/bmpshape.cpp +++ /dev/null @@ -1,115 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: bmpshape.cpp -// Purpose: Bitmap shape class -// Author: Julian Smart -// Modified by: -// Created: 12/07/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "bmpshape.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include -#endif - -#include - -#include "basic.h" -#include "basicp.h" -#include "canvas.h" -#include "bmpshape.h" -#include "misc.h" - -/* - * Bitmap object - * - */ - -IMPLEMENT_DYNAMIC_CLASS(wxBitmapShape, wxShape) - -wxBitmapShape::wxBitmapShape():wxRectangleShape(100.0, 50.0) -{ - m_filename = ""; -} - -wxBitmapShape::~wxBitmapShape() -{ -} - -void wxBitmapShape::OnDraw(wxDC& dc) -{ - if (!m_bitmap.Ok()) - return; - - wxMemoryDC tempDC; - tempDC.SelectObject(m_bitmap); - double x, y; - x = WXROUND(m_xpos - m_bitmap.GetWidth() / 2.0); - y = WXROUND(m_ypos - m_bitmap.GetHeight() / 2.0); - dc.Blit((long) x, (long) y, m_bitmap.GetWidth(), m_bitmap.GetHeight(), &tempDC, 0, 0); -} - -void wxBitmapShape::SetSize(double w, double h, bool recursive) -{ - if (m_bitmap.Ok()) - { - w = m_bitmap.GetWidth(); - h = m_bitmap.GetHeight(); - } - - SetAttachmentSize(w, h); - - m_width = w; - m_height = h; - SetDefaultRegionSize(); -} - -#ifdef PROLOGIO -void wxBitmapShape::WriteAttributes(wxExpr *clause) -{ - // Can't really save the bitmap; so instantiate the bitmap - // at a higher level in the application, from a symbol library. - wxRectangleShape::WriteAttributes(clause); - clause->AddAttributeValueString("filename", m_filename); -} - -void wxBitmapShape::ReadAttributes(wxExpr *clause) -{ - wxRectangleShape::ReadAttributes(clause); - clause->GetAttributeValue("filename", m_filename); -} -#endif - -// Does the copying for this object -void wxBitmapShape::Copy(wxShape& copy) -{ - wxRectangleShape::Copy(copy); - - wxASSERT( copy.IsKindOf(CLASSINFO(wxBitmapShape)) ) ; - - wxBitmapShape& bitmapCopy = (wxBitmapShape&) copy; - - bitmapCopy.m_bitmap = m_bitmap; - bitmapCopy.SetFilename(m_filename); -} - -void wxBitmapShape::SetBitmap(const wxBitmap& bm) -{ - m_bitmap = bm; - if (m_bitmap.Ok()) - SetSize(m_bitmap.GetWidth(), m_bitmap.GetHeight()); -} - - diff --git a/utils/ogl/src/bmpshape.h b/utils/ogl/src/bmpshape.h deleted file mode 100644 index 3796dd049f..0000000000 --- a/utils/ogl/src/bmpshape.h +++ /dev/null @@ -1,53 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: bmpshape.h -// Purpose: wxBitmapShape -// Author: Julian Smart -// Modified by: -// Created: 12/07/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _OGL_BITMAP_H_ -#define _OGL_BITMAP_H_ - -#ifdef __GNUG__ -#pragma interface "bmpshape.h" -#endif - -#include "basic.h" - -class wxBitmapShape: public wxRectangleShape -{ - DECLARE_DYNAMIC_CLASS(wxBitmapShape) - public: - wxBitmapShape(); - ~wxBitmapShape(); - - void OnDraw(wxDC& dc); - -#ifdef PROLOGIO - // I/O - void WriteAttributes(wxExpr *clause); - void ReadAttributes(wxExpr *clause); -#endif - - // Does the copying for this object - void Copy(wxShape& copy); - - void SetSize(double w, double h, bool recursive = TRUE); - inline wxBitmap& GetBitmap() const { return (wxBitmap&) m_bitmap; } - void SetBitmap(const wxBitmap& bm); - inline void SetFilename(const wxString& f) { m_filename = f; }; - inline wxString GetFilename() const { return m_filename; } - -private: - wxBitmap m_bitmap; - wxString m_filename; -}; - -#endif - // _OGL_BITMAP_H_ - - diff --git a/utils/ogl/src/canvas.cpp b/utils/ogl/src/canvas.cpp deleted file mode 100644 index edc898be23..0000000000 --- a/utils/ogl/src/canvas.cpp +++ /dev/null @@ -1,516 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: canvas.cpp -// Purpose: Shape canvas class -// Author: Julian Smart -// Modified by: -// Created: 12/07/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "canvas.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include -#endif - -#include - -#if wxUSE_IOSTREAMH -#include -#else -#include -#endif - -#include -#include -#include - -#include "basic.h" -#include "basicp.h" -#include "canvas.h" -#include "ogldiag.h" -#include "misc.h" -#include "lines.h" -#include "composit.h" - -#define CONTROL_POINT_SIZE 6 - -// Control point types -// Rectangle and most other shapes -#define CONTROL_POINT_VERTICAL 1 -#define CONTROL_POINT_HORIZONTAL 2 -#define CONTROL_POINT_DIAGONAL 3 - -// Line -#define CONTROL_POINT_ENDPOINT_TO 4 -#define CONTROL_POINT_ENDPOINT_FROM 5 -#define CONTROL_POINT_LINE 6 - -extern wxCursor *g_oglBullseyeCursor; - -IMPLEMENT_DYNAMIC_CLASS(wxShapeCanvas, wxScrolledWindow) - -BEGIN_EVENT_TABLE(wxShapeCanvas, wxScrolledWindow) - EVT_PAINT(wxShapeCanvas::OnPaint) - EVT_MOUSE_EVENTS(wxShapeCanvas::OnMouseEvent) -END_EVENT_TABLE() - -// Object canvas -wxShapeCanvas::wxShapeCanvas(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style): - wxScrolledWindow(parent, id, pos, size, style) -{ - m_shapeDiagram = NULL; - m_dragState = NoDragging; - m_draggedShape = NULL; - m_oldDragX = 0; - m_oldDragY = 0; - m_firstDragX = 0; - m_firstDragY = 0; - m_checkTolerance = TRUE; -} - -wxShapeCanvas::~wxShapeCanvas() -{ -} - -void wxShapeCanvas::OnPaint(wxPaintEvent& event) -{ - wxPaintDC dc(this); - - PrepareDC(dc); - - dc.Clear(); - - if (GetDiagram()) - GetDiagram()->Redraw(dc); -} - -void wxShapeCanvas::OnMouseEvent(wxMouseEvent& event) -{ - wxClientDC dc(this); - PrepareDC(dc); - - wxPoint logPos(event.GetLogicalPosition(dc)); - - double x, y; - x = (double) logPos.x; - y = (double) logPos.y; - - int keys = 0; - if (event.ShiftDown()) - keys = keys | KEY_SHIFT; - if (event.ControlDown()) - keys = keys | KEY_CTRL; - - bool dragging = event.Dragging(); - - // Check if we're within the tolerance for mouse movements. - // If we're very close to the position we started dragging - // from, this may not be an intentional drag at all. - if (dragging) - { - int dx = abs(dc.LogicalToDeviceX((long) (x - m_firstDragX))); - int dy = abs(dc.LogicalToDeviceY((long) (y - m_firstDragY))); - if (m_checkTolerance && (dx <= GetDiagram()->GetMouseTolerance()) && (dy <= GetDiagram()->GetMouseTolerance())) - { - return; - } - else - // If we've ignored the tolerance once, then ALWAYS ignore - // tolerance in this drag, even if we come back within - // the tolerance range. - m_checkTolerance = FALSE; - } - - // Dragging - note that the effect of dragging is left entirely up - // to the object, so no movement is done unless explicitly done by - // object. - if (dragging && m_draggedShape && m_dragState == StartDraggingLeft) - { - m_dragState = ContinueDraggingLeft; - - // If the object isn't m_draggable, transfer message to canvas - if (m_draggedShape->Draggable()) - m_draggedShape->GetEventHandler()->OnBeginDragLeft((double)x, (double)y, keys, m_draggedAttachment); - else - { - m_draggedShape = NULL; - OnBeginDragLeft((double)x, (double)y, keys); - } - - m_oldDragX = x; m_oldDragY = y; - } - else if (dragging && m_draggedShape && m_dragState == ContinueDraggingLeft) - { - // Continue dragging - m_draggedShape->GetEventHandler()->OnDragLeft(FALSE, m_oldDragX, m_oldDragY, keys, m_draggedAttachment); - m_draggedShape->GetEventHandler()->OnDragLeft(TRUE, (double)x, (double)y, keys, m_draggedAttachment); - m_oldDragX = x; m_oldDragY = y; - } - else if (event.LeftUp() && m_draggedShape && m_dragState == ContinueDraggingLeft) - { - m_dragState = NoDragging; - m_checkTolerance = TRUE; - - m_draggedShape->GetEventHandler()->OnDragLeft(FALSE, m_oldDragX, m_oldDragY, keys, m_draggedAttachment); - - m_draggedShape->GetEventHandler()->OnEndDragLeft((double)x, (double)y, keys, m_draggedAttachment); - m_draggedShape = NULL; - } - else if (dragging && m_draggedShape && m_dragState == StartDraggingRight) - { - m_dragState = ContinueDraggingRight; - - if (m_draggedShape->Draggable()) - m_draggedShape->GetEventHandler()->OnBeginDragRight((double)x, (double)y, keys, m_draggedAttachment); - else - { - m_draggedShape = NULL; - OnBeginDragRight((double)x, (double)y, keys); - } - m_oldDragX = x; m_oldDragY = y; - } - else if (dragging && m_draggedShape && m_dragState == ContinueDraggingRight) - { - // Continue dragging - m_draggedShape->GetEventHandler()->OnDragRight(FALSE, m_oldDragX, m_oldDragY, keys, m_draggedAttachment); - m_draggedShape->GetEventHandler()->OnDragRight(TRUE, (double)x, (double)y, keys, m_draggedAttachment); - m_oldDragX = x; m_oldDragY = y; - } - else if (event.RightUp() && m_draggedShape && m_dragState == ContinueDraggingRight) - { - m_dragState = NoDragging; - m_checkTolerance = TRUE; - - m_draggedShape->GetEventHandler()->OnDragRight(FALSE, m_oldDragX, m_oldDragY, keys, m_draggedAttachment); - - m_draggedShape->GetEventHandler()->OnEndDragRight((double)x, (double)y, keys, m_draggedAttachment); - m_draggedShape = NULL; - } - - // All following events sent to canvas, not object - else if (dragging && !m_draggedShape && m_dragState == StartDraggingLeft) - { - m_dragState = ContinueDraggingLeft; - OnBeginDragLeft((double)x, (double)y, keys); - m_oldDragX = x; m_oldDragY = y; - } - else if (dragging && !m_draggedShape && m_dragState == ContinueDraggingLeft) - { - // Continue dragging - OnDragLeft(FALSE, m_oldDragX, m_oldDragY, keys); - OnDragLeft(TRUE, (double)x, (double)y, keys); - m_oldDragX = x; m_oldDragY = y; - } - else if (event.LeftUp() && !m_draggedShape && m_dragState == ContinueDraggingLeft) - { - m_dragState = NoDragging; - m_checkTolerance = TRUE; - - OnDragLeft(FALSE, m_oldDragX, m_oldDragY, keys); - OnEndDragLeft((double)x, (double)y, keys); - m_draggedShape = NULL; - } - else if (dragging && !m_draggedShape && m_dragState == StartDraggingRight) - { - m_dragState = ContinueDraggingRight; - OnBeginDragRight((double)x, (double)y, keys); - m_oldDragX = x; m_oldDragY = y; - } - else if (dragging && !m_draggedShape && m_dragState == ContinueDraggingRight) - { - // Continue dragging - OnDragRight(FALSE, m_oldDragX, m_oldDragY, keys); - OnDragRight(TRUE, (double)x, (double)y, keys); - m_oldDragX = x; m_oldDragY = y; - } - else if (event.RightUp() && !m_draggedShape && m_dragState == ContinueDraggingRight) - { - m_dragState = NoDragging; - m_checkTolerance = TRUE; - - OnDragRight(FALSE, m_oldDragX, m_oldDragY, keys); - OnEndDragRight((double)x, (double)y, keys); - m_draggedShape = NULL; - } - - // Non-dragging events - else if (event.IsButton()) - { - m_checkTolerance = TRUE; - - // Find the nearest object - int attachment = 0; - wxShape *nearest_object = FindShape(x, y, &attachment); - if (nearest_object) // Object event - { - if (event.LeftDown()) - { - m_draggedShape = nearest_object; - m_draggedAttachment = attachment; - m_dragState = StartDraggingLeft; - m_firstDragX = x; - m_firstDragY = y; - } - else if (event.LeftUp()) - { - // N.B. Only register a click if the same object was - // identified for down *and* up. - if (nearest_object == m_draggedShape) - nearest_object->GetEventHandler()->OnLeftClick((double)x, (double)y, keys, attachment); - - m_draggedShape = NULL; - m_dragState = NoDragging; - } - else if (event.LeftDClick()) - { - nearest_object->GetEventHandler()->OnLeftDoubleClick((double)x, (double)y, keys, attachment); - - m_draggedShape = NULL; - m_dragState = NoDragging; - } - else if (event.RightDown()) - { - m_draggedShape = nearest_object; - m_draggedAttachment = attachment; - m_dragState = StartDraggingRight; - m_firstDragX = x; - m_firstDragY = y; - } - else if (event.RightUp()) - { - if (nearest_object == m_draggedShape) - nearest_object->GetEventHandler()->OnRightClick((double)x, (double)y, keys, attachment); - - m_draggedShape = NULL; - m_dragState = NoDragging; - } - } - else // Canvas event (no nearest object) - { - if (event.LeftDown()) - { - m_draggedShape = NULL; - m_dragState = StartDraggingLeft; - m_firstDragX = x; - m_firstDragY = y; - } - else if (event.LeftUp()) - { - OnLeftClick((double)x, (double)y, keys); - - m_draggedShape = NULL; - m_dragState = NoDragging; - } - else if (event.RightDown()) - { - m_draggedShape = NULL; - m_dragState = StartDraggingRight; - m_firstDragX = x; - m_firstDragY = y; - } - else if (event.RightUp()) - { - OnRightClick((double)x, (double)y, keys); - - m_draggedShape = NULL; - m_dragState = NoDragging; - } - } - } -} - -/* - * Try to find a sensitive object, working up the hierarchy of composites. - * - */ -wxShape *wxShapeCanvas::FindFirstSensitiveShape(double x, double y, int *new_attachment, int op) -{ - wxShape *image = FindShape(x, y, new_attachment); - if (!image) return NULL; - - wxShape *actualImage = FindFirstSensitiveShape1(image, op); - if (actualImage) - { - double dist; - // Find actual attachment - actualImage->HitTest(x, y, new_attachment, &dist); - } - return actualImage; -} - -wxShape *wxShapeCanvas::FindFirstSensitiveShape1(wxShape *image, int op) -{ - if (image->GetSensitivityFilter() & op) - return image; - if (image->GetParent()) - return FindFirstSensitiveShape1(image->GetParent(), op); - return NULL; -} - -// Helper function: TRUE if 'contains' wholly contains 'contained'. -static bool WhollyContains(wxShape *contains, wxShape *contained) -{ - double xp1, yp1, xp2, yp2; - double w1, h1, w2, h2; - double left1, top1, right1, bottom1, left2, top2, right2, bottom2; - - xp1 = contains->GetX(); yp1 = contains->GetY(); xp2 = contained->GetX(); yp2 = contained->GetY(); - contains->GetBoundingBoxMax(&w1, &h1); - contained->GetBoundingBoxMax(&w2, &h2); - - left1 = (double)(xp1 - (w1 / 2.0)); - top1 = (double)(yp1 - (h1 / 2.0)); - right1 = (double)(xp1 + (w1 / 2.0)); - bottom1 = (double)(yp1 + (h1 / 2.0)); - - left2 = (double)(xp2 - (w2 / 2.0)); - top2 = (double)(yp2 - (h2 / 2.0)); - right2 = (double)(xp2 + (w2 / 2.0)); - bottom2 = (double)(yp2 + (h2 / 2.0)); - - return ((left1 <= left2) && (top1 <= top2) && (right1 >= right2) && (bottom1 >= bottom2)); -} - -wxShape *wxShapeCanvas::FindShape(double x, double y, int *attachment, wxClassInfo *info, wxShape *notObject) -{ - double nearest = 100000.0; - int nearest_attachment = 0; - wxShape *nearest_object = NULL; - - // Go backward through the object list, since we want: - // (a) to have the control points drawn LAST to overlay - // the other objects - // (b) to find the control points FIRST if they exist - - wxNode *current = GetDiagram()->GetShapeList()->Last(); - while (current) - { - wxShape *object = (wxShape *)current->Data(); - - double dist; - int temp_attachment; - - // First pass for lines, which might be inside a container, so we - // want lines to take priority over containers. This first loop - // could fail if we clickout side a line, so then we'll - // try other shapes. - if (object->IsShown() && - object->IsKindOf(CLASSINFO(wxLineShape)) && - object->HitTest(x, y, &temp_attachment, &dist) && - ((info == NULL) || object->IsKindOf(info)) && - (!notObject || !notObject->HasDescendant(object))) - { - // A line is trickier to spot than a normal object. - // For a line, since it's the diagonal of the box - // we use for the hit test, we may have several - // lines in the box and therefore we need to be able - // to specify the nearest point to the centre of the line - // as our hit criterion, to give the user some room for - // manouevre. - if (dist < nearest) - { - nearest = dist; - nearest_object = object; - nearest_attachment = temp_attachment; - } - } - if (current) - current = current->Previous(); - } - - current = GetDiagram()->GetShapeList()->Last(); - while (current) - { - wxShape *object = (wxShape *)current->Data(); - double dist; - int temp_attachment; - - // On second pass, only ever consider non-composites or divisions. If children want to pass - // up control to the composite, that's up to them. - if (object->IsShown() && (object->IsKindOf(CLASSINFO(wxDivisionShape)) || !object->IsKindOf(CLASSINFO(wxCompositeShape))) - && object->HitTest(x, y, &temp_attachment, &dist) && ((info == NULL) || object->IsKindOf(info)) && - (!notObject || !notObject->HasDescendant(object))) - { - if (!object->IsKindOf(CLASSINFO(wxLineShape))) - { - // If we've hit a container, and we have already found a line in the - // first pass, then ignore the container in case the line is in the container. - // Check for division in case line straddles divisions (i.e. is not wholly contained). - if (!nearest_object || !(object->IsKindOf(CLASSINFO(wxDivisionShape)) || WhollyContains(object, nearest_object))) - { - nearest = dist; - nearest_object = object; - nearest_attachment = temp_attachment; - current = NULL; - } - } - } - if (current) - current = current->Previous(); - } - - *attachment = nearest_attachment; - return nearest_object; -} - -/* - * Higher-level events called by OnEvent - * - */ - -void wxShapeCanvas::OnLeftClick(double x, double y, int keys) -{ -} - -void wxShapeCanvas::OnRightClick(double x, double y, int keys) -{ -} - -void wxShapeCanvas::OnDragLeft(bool draw, double x, double y, int keys) -{ -} - -void wxShapeCanvas::OnBeginDragLeft(double x, double y, int keys) -{ -} - -void wxShapeCanvas::OnEndDragLeft(double x, double y, int keys) -{ -} - -void wxShapeCanvas::OnDragRight(bool draw, double x, double y, int keys) -{ -} - -void wxShapeCanvas::OnBeginDragRight(double x, double y, int keys) -{ -} - -void wxShapeCanvas::OnEndDragRight(double x, double y, int keys) -{ -} - -void wxShapeCanvas::AddShape(wxShape *object, wxShape *addAfter) - { GetDiagram()->AddShape(object, addAfter); } -void wxShapeCanvas::InsertShape(wxShape *object) - { GetDiagram()->InsertShape(object); } -void wxShapeCanvas::RemoveShape(wxShape *object) - { GetDiagram()->RemoveShape(object); } -bool wxShapeCanvas::GetQuickEditMode() - { return GetDiagram()->GetQuickEditMode(); } -void wxShapeCanvas::Redraw(wxDC& dc) - { GetDiagram()->Redraw(dc); } -void wxShapeCanvas::Snap(double *x, double *y) - { GetDiagram()->Snap(x, y); } diff --git a/utils/ogl/src/canvas.h b/utils/ogl/src/canvas.h deleted file mode 100644 index faeaaa30ad..0000000000 --- a/utils/ogl/src/canvas.h +++ /dev/null @@ -1,83 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: canvas.h -// Purpose: wxShapeCanvas -// Author: Julian Smart -// Modified by: -// Created: 12/07/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _OGL_CANVAS_H_ -#define _OGL_CANVAS_H_ - -#ifdef __GNUG__ -#pragma interface "canvas.h" -#endif - -// Drag states -#define NoDragging 0 -#define StartDraggingLeft 1 -#define ContinueDraggingLeft 2 -#define StartDraggingRight 3 -#define ContinueDraggingRight 4 - -// When drag_count reaches 0, process drag message - -class wxDiagram; - -class wxShapeCanvas: public wxScrolledWindow -{ - DECLARE_DYNAMIC_CLASS(wxShapeCanvas) - public: - wxShapeCanvas(wxWindow *parent = NULL, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxBORDER | wxRETAINED); - ~wxShapeCanvas(); - - inline void SetDiagram(wxDiagram *diag) { m_shapeDiagram = diag; } - inline wxDiagram *GetDiagram() const { return m_shapeDiagram; } - - virtual void OnLeftClick(double x, double y, int keys = 0); - virtual void OnRightClick(double x, double y, int keys = 0); - - virtual void OnDragLeft(bool draw, double x, double y, int keys=0); // Erase if draw false - virtual void OnBeginDragLeft(double x, double y, int keys=0); - virtual void OnEndDragLeft(double x, double y, int keys=0); - - virtual void OnDragRight(bool draw, double x, double y, int keys=0); // Erase if draw false - virtual void OnBeginDragRight(double x, double y, int keys=0); - virtual void OnEndDragRight(double x, double y, int keys=0); - - // Find object for mouse click, of given wxClassInfo (NULL for any type). - // If notImage is non-NULL, don't find an object that is equal to or a descendant of notImage - virtual wxShape *FindShape(double x, double y, int *attachment, wxClassInfo *info = NULL, wxShape *notImage = NULL); - wxShape *FindFirstSensitiveShape(double x, double y, int *new_attachment, int op); - wxShape *FindFirstSensitiveShape1(wxShape *image, int op); - - // Redirect to wxDiagram object - virtual void AddShape(wxShape *object, wxShape *addAfter = NULL); - virtual void InsertShape(wxShape *object); - virtual void RemoveShape(wxShape *object); - virtual bool GetQuickEditMode(); - virtual void Redraw(wxDC& dc); - void Snap(double *x, double *y); - - // Events - void OnPaint(wxPaintEvent& event); - void OnMouseEvent(wxMouseEvent& event); - - protected: - wxDiagram* m_shapeDiagram; - int m_dragState; - double m_oldDragX, m_oldDragY; // Previous drag coordinates - double m_firstDragX, m_firstDragY; // INITIAL drag coordinates - bool m_checkTolerance; // Whether to check drag tolerance - wxShape* m_draggedShape; - int m_draggedAttachment; - -DECLARE_EVENT_TABLE() -}; - -#endif - // _OGL_CANVAS_H_ diff --git a/utils/ogl/src/composit.cpp b/utils/ogl/src/composit.cpp deleted file mode 100644 index c5118f64e7..0000000000 --- a/utils/ogl/src/composit.cpp +++ /dev/null @@ -1,1761 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: composit.cpp -// Purpose: Composite OGL class -// Author: Julian Smart -// Modified by: -// Created: 12/07/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "composit.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include -#endif - -#include - -#include "basic.h" -#include "basicp.h" -#include "constrnt.h" -#include "composit.h" -#include "misc.h" -#include "canvas.h" - -// Sometimes, objects need to access the whole database to -// construct themselves. -wxExprDatabase *GlobalwxExprDatabase = NULL; - -// Popup menu for editing divisions -wxMenu *oglPopupDivisionMenu = NULL; - -/* - * Division control point - */ - -class wxDivisionControlPoint: public wxControlPoint -{ - DECLARE_DYNAMIC_CLASS(wxDivisionControlPoint) - public: - wxDivisionControlPoint() {} - wxDivisionControlPoint(wxShapeCanvas *the_canvas, wxShape *object, double size, double the_xoffset, double the_yoffset, int the_type); - ~wxDivisionControlPoint(); - - void OnDragLeft(bool draw, double x, double y, int keys=0, int attachment = 0); - void OnBeginDragLeft(double x, double y, int keys=0, int attachment = 0); - void OnEndDragLeft(double x, double y, int keys=0, int attachment = 0); -}; - -IMPLEMENT_DYNAMIC_CLASS(wxDivisionControlPoint, wxControlPoint) - -/* - * Composite object - * - */ - -IMPLEMENT_DYNAMIC_CLASS(wxCompositeShape, wxRectangleShape) - -wxCompositeShape::wxCompositeShape(): wxRectangleShape(10.0, 10.0) -{ -// selectable = FALSE; - m_oldX = m_xpos; - m_oldY = m_ypos; -} - -wxCompositeShape::~wxCompositeShape() -{ - wxNode *node = m_constraints.First(); - while (node) - { - wxOGLConstraint *constraint = (wxOGLConstraint *)node->Data(); - delete constraint; - node = node->Next(); - } - node = m_children.First(); - while (node) - { - wxShape *object = (wxShape *)node->Data(); - wxNode *next = node->Next(); - object->Unlink(); - delete object; - node = next; - } -} - -void wxCompositeShape::OnDraw(wxDC& dc) -{ - double x1 = (double)(m_xpos - m_width/2.0); - double y1 = (double)(m_ypos - m_height/2.0); - - if (m_shadowMode != SHADOW_NONE) - { - if (m_shadowBrush) - dc.SetBrush(* m_shadowBrush); - dc.SetPen(* g_oglTransparentPen); - - if (m_cornerRadius != 0.0) - dc.DrawRoundedRectangle(WXROUND(x1 + m_shadowOffsetX), WXROUND(y1 + m_shadowOffsetY), - WXROUND(m_width), WXROUND(m_height), m_cornerRadius); - else - dc.DrawRectangle(WXROUND(x1 + m_shadowOffsetX), WXROUND(y1 + m_shadowOffsetY), WXROUND(m_width), WXROUND(m_height)); - } -} - -void wxCompositeShape::OnDrawContents(wxDC& dc) -{ - wxNode *node = m_children.First(); - while (node) - { - wxShape *object = (wxShape *)node->Data(); - object->Draw(dc); - object->DrawLinks(dc); - node = node->Next(); - } - wxShape::OnDrawContents(dc); -} - -bool wxCompositeShape::OnMovePre(wxDC& dc, double x, double y, double oldx, double oldy, bool display) -{ - double diffX = x - oldx; - double diffY = y - oldy; - wxNode *node = m_children.First(); - while (node) - { - wxShape *object = (wxShape *)node->Data(); - - object->Erase(dc); - object->Move(dc, object->GetX() + diffX, object->GetY() + diffY, display); - - node = node->Next(); - } - return TRUE; -} - -void wxCompositeShape::OnErase(wxDC& dc) -{ - wxRectangleShape::OnErase(dc); - wxNode *node = m_children.First(); - while (node) - { - wxShape *object = (wxShape *)node->Data(); - object->Erase(dc); - node = node->Next(); - } -} - -static double objectStartX = 0.0; -static double objectStartY = 0.0; - -void wxCompositeShape::OnDragLeft(bool draw, double x, double y, int keys, int attachment) -{ - double xx = x; - double yy = y; - m_canvas->Snap(&xx, &yy); - double offsetX = xx - objectStartX; - double offsetY = yy - objectStartY; - - wxClientDC dc(GetCanvas()); - GetCanvas()->PrepareDC(dc); - - dc.SetLogicalFunction(wxXOR); - wxPen dottedPen(wxColour(0, 0, 0), 1, wxDOT); - dc.SetPen(dottedPen); - dc.SetBrush((* wxTRANSPARENT_BRUSH)); - - GetEventHandler()->OnDrawOutline(dc, GetX() + offsetX, GetY() + offsetY, GetWidth(), GetHeight()); -// wxShape::OnDragLeft(draw, x, y, keys, attachment); -} - -void wxCompositeShape::OnBeginDragLeft(double x, double y, int keys, int attachment) -{ - objectStartX = x; - objectStartY = y; - - wxClientDC dc(GetCanvas()); - GetCanvas()->PrepareDC(dc); - - Erase(dc); - - dc.SetLogicalFunction(wxXOR); - - wxPen dottedPen(wxColour(0, 0, 0), 1, wxDOT); - dc.SetPen(dottedPen); - dc.SetBrush((* wxTRANSPARENT_BRUSH)); - m_canvas->CaptureMouse(); - - double xx = x; - double yy = y; - m_canvas->Snap(&xx, &yy); - double offsetX = xx - objectStartX; - double offsetY = yy - objectStartY; - - GetEventHandler()->OnDrawOutline(dc, GetX() + offsetX, GetY() + offsetY, GetWidth(), GetHeight()); - -// wxShape::OnBeginDragLeft(x, y, keys, attachment); -} - -void wxCompositeShape::OnEndDragLeft(double x, double y, int keys, int attachment) -{ -// wxShape::OnEndDragLeft(x, y, keys, attachment); - - wxClientDC dc(GetCanvas()); - GetCanvas()->PrepareDC(dc); - - m_canvas->ReleaseMouse(); - - if (!m_draggable) - { - if (m_parent) m_parent->GetEventHandler()->OnEndDragLeft(x, y, keys, 0); - return; - } - - dc.SetLogicalFunction(wxCOPY); - double xx = x; - double yy = y; - m_canvas->Snap(&xx, &yy); - double offsetX = xx - objectStartX; - double offsetY = yy - objectStartY; - - Move(dc, GetX() + offsetX, GetY() + offsetY); - - if (m_canvas && !m_canvas->GetQuickEditMode()) m_canvas->Redraw(dc); -} - -void wxCompositeShape::OnRightClick(double x, double y, int keys, int attachment) -{ - // If we get a ctrl-right click, this means send the message to - // the division, so we can invoke a user interface for dealing with regions. - if (keys & KEY_CTRL) - { - wxNode *node = m_divisions.First(); - while (node) - { - wxDivisionShape *division = (wxDivisionShape *)node->Data(); - wxNode *next = node->Next(); - int attach = 0; - double dist = 0.0; - if (division->HitTest(x, y, &attach, &dist)) - { - division->GetEventHandler()->OnRightClick(x, y, keys, attach); - node = NULL; - } - if (node) - node = next; - } - } -} - -void wxCompositeShape::SetSize(double w, double h, bool recursive) -{ - SetAttachmentSize(w, h); - - double xScale = (double)(w/(wxMax(1.0, GetWidth()))); - double yScale = (double)(h/(wxMax(1.0, GetHeight()))); - - m_width = w; - m_height = h; - - if (!recursive) return; - - wxNode *node = m_children.First(); - - wxClientDC dc(GetCanvas()); - GetCanvas()->PrepareDC(dc); - - double xBound, yBound; - while (node) - { - wxShape *object = (wxShape *)node->Data(); - - // Scale the position first - double newX = (double)(((object->GetX() - GetX())*xScale) + GetX()); - double newY = (double)(((object->GetY() - GetY())*yScale) + GetY()); - object->Show(FALSE); - object->Move(dc, newX, newY); - object->Show(TRUE); - - // Now set the scaled size - object->GetBoundingBoxMin(&xBound, &yBound); - object->SetSize(object->GetFixedWidth() ? xBound : xScale*xBound, - object->GetFixedHeight() ? yBound : yScale*yBound); - - node = node->Next(); - } - SetDefaultRegionSize(); -} - -void wxCompositeShape::AddChild(wxShape *child, wxShape *addAfter) -{ - m_children.Append(child); - child->SetParent(this); - if (m_canvas) - { - // Ensure we add at the right position - if (addAfter) - child->RemoveFromCanvas(m_canvas); - child->AddToCanvas(m_canvas, addAfter); - } -} - -void wxCompositeShape::RemoveChild(wxShape *child) -{ - m_children.DeleteObject(child); - m_divisions.DeleteObject(child); - RemoveChildFromConstraints(child); - child->SetParent(NULL); -} - -void wxCompositeShape::DeleteConstraintsInvolvingChild(wxShape *child) -{ - wxNode *node = m_constraints.First(); - while (node) - { - wxOGLConstraint *constraint = (wxOGLConstraint *)node->Data(); - wxNode *nextNode = node->Next(); - - if ((constraint->m_constrainingObject == child) || - constraint->m_constrainedObjects.Member(child)) - { - delete constraint; - delete node; - } - node = nextNode; - } -} - -void wxCompositeShape::RemoveChildFromConstraints(wxShape *child) -{ - wxNode *node = m_constraints.First(); - while (node) - { - wxOGLConstraint *constraint = (wxOGLConstraint *)node->Data(); - wxNode *nextNode = node->Next(); - - if (constraint->m_constrainedObjects.Member(child)) - constraint->m_constrainedObjects.DeleteObject(child); - if (constraint->m_constrainingObject == child) - constraint->m_constrainingObject = NULL; - - // Delete the constraint if no participants left - if (!constraint->m_constrainingObject) - { - delete constraint; - delete node; - } - - node = nextNode; - } -} - -void wxCompositeShape::Copy(wxShape& copy) -{ - wxRectangleShape::Copy(copy); - - wxASSERT( copy.IsKindOf(CLASSINFO(wxCompositeShape)) ) ; - - wxCompositeShape& compositeCopy = (wxCompositeShape&) copy; - - // Associate old and new copies for compositeCopying constraints and division geometry - oglObjectCopyMapping.Append((long)this, &compositeCopy); - - // Copy the children - wxNode *node = m_children.First(); - while (node) - { - wxShape *object = (wxShape *)node->Data(); - wxShape *newObject = object->CreateNewCopy(FALSE, FALSE); - if (newObject->GetId() == 0) - newObject->SetId(NewId()); - - newObject->SetParent(&compositeCopy); - compositeCopy.m_children.Append(newObject); - - // Some m_children may be divisions - if (m_divisions.Member(object)) - compositeCopy.m_divisions.Append(newObject); - - oglObjectCopyMapping.Append((long)object, newObject); - - node = node->Next(); - } - - // Copy the constraints - node = m_constraints.First(); - while (node) - { - wxOGLConstraint *constraint = (wxOGLConstraint *)node->Data(); - - wxShape *newConstraining = (wxShape *)(oglObjectCopyMapping.Find((long)constraint->m_constrainingObject)->Data()); - - wxList newConstrainedList; - wxNode *node2 = constraint->m_constrainedObjects.First(); - while (node2) - { - wxShape *constrainedObject = (wxShape *)node2->Data(); - wxShape *newConstrained = (wxShape *)(oglObjectCopyMapping.Find((long)constrainedObject)->Data()); - newConstrainedList.Append(newConstrained); - node2 = node2->Next(); - } - - wxOGLConstraint *newConstraint = new wxOGLConstraint(constraint->m_constraintType, newConstraining, - newConstrainedList); - newConstraint->m_constraintId = constraint->m_constraintId; - if (constraint->m_constraintName) - { - newConstraint->m_constraintName = constraint->m_constraintName; - } - newConstraint->SetSpacing(constraint->m_xSpacing, constraint->m_ySpacing); - compositeCopy.m_constraints.Append(newConstraint); - - node = node->Next(); - } - - // Now compositeCopy the division geometry - node = m_divisions.First(); - while (node) - { - wxDivisionShape *division = (wxDivisionShape *)node->Data(); - wxNode *node1 = oglObjectCopyMapping.Find((long)division); - wxNode *leftNode = NULL; - wxNode *topNode = NULL; - wxNode *rightNode = NULL; - wxNode *bottomNode = NULL; - if (division->GetLeftSide()) - leftNode = oglObjectCopyMapping.Find((long)division->GetLeftSide()); - if (division->GetTopSide()) - topNode = oglObjectCopyMapping.Find((long)division->GetTopSide()); - if (division->GetRightSide()) - rightNode = oglObjectCopyMapping.Find((long)division->GetRightSide()); - if (division->GetBottomSide()) - bottomNode = oglObjectCopyMapping.Find((long)division->GetBottomSide()); - if (node1) - { - wxDivisionShape *newDivision = (wxDivisionShape *)node1->Data(); - if (leftNode) - newDivision->SetLeftSide((wxDivisionShape *)leftNode->Data()); - if (topNode) - newDivision->SetTopSide((wxDivisionShape *)topNode->Data()); - if (rightNode) - newDivision->SetRightSide((wxDivisionShape *)rightNode->Data()); - if (bottomNode) - newDivision->SetBottomSide((wxDivisionShape *)bottomNode->Data()); - } - node = node->Next(); - } -} - -wxOGLConstraint *wxCompositeShape::AddConstraint(wxOGLConstraint *constraint) -{ - m_constraints.Append(constraint); - if (constraint->m_constraintId == 0) - constraint->m_constraintId = NewId(); - return constraint; -} - -wxOGLConstraint *wxCompositeShape::AddConstraint(int type, wxShape *constraining, wxList& constrained) -{ - wxOGLConstraint *constraint = new wxOGLConstraint(type, constraining, constrained); - if (constraint->m_constraintId == 0) - constraint->m_constraintId = NewId(); - m_constraints.Append(constraint); - return constraint; -} - -wxOGLConstraint *wxCompositeShape::AddConstraint(int type, wxShape *constraining, wxShape *constrained) -{ - wxList l; - l.Append(constrained); - wxOGLConstraint *constraint = new wxOGLConstraint(type, constraining, l); - if (constraint->m_constraintId == 0) - constraint->m_constraintId = NewId(); - m_constraints.Append(constraint); - return constraint; -} - -wxOGLConstraint *wxCompositeShape::FindConstraint(long cId, wxCompositeShape **actualComposite) -{ - wxNode *node = m_constraints.First(); - while (node) - { - wxOGLConstraint *constraint = (wxOGLConstraint *)node->Data(); - if (constraint->m_constraintId == cId) - { - if (actualComposite) - *actualComposite = this; - return constraint; - } - node = node->Next(); - } - // If not found, try children. - node = m_children.First(); - while (node) - { - wxShape *child = (wxShape *)node->Data(); - if (child->IsKindOf(CLASSINFO(wxCompositeShape))) - { - wxOGLConstraint *constraint = ((wxCompositeShape *)child)->FindConstraint(cId, actualComposite); - if (constraint) - { - if (actualComposite) - *actualComposite = (wxCompositeShape *)child; - return constraint; - } - } - node = node->Next(); - } - return NULL; -} - -void wxCompositeShape::DeleteConstraint(wxOGLConstraint *constraint) -{ - m_constraints.DeleteObject(constraint); - delete constraint; -} - -void wxCompositeShape::CalculateSize() -{ - double maxX = (double) -999999.9; - double maxY = (double) -999999.9; - double minX = (double) 999999.9; - double minY = (double) 999999.9; - - double w, h; - wxNode *node = m_children.First(); - while (node) - { - wxShape *object = (wxShape *)node->Data(); - - // Recalculate size of composite objects because may not conform - // to size it was set to - depends on the children. - object->CalculateSize(); - - object->GetBoundingBoxMax(&w, &h); - if ((object->GetX() + (w/2.0)) > maxX) - maxX = (double)(object->GetX() + (w/2.0)); - if ((object->GetX() - (w/2.0)) < minX) - minX = (double)(object->GetX() - (w/2.0)); - if ((object->GetY() + (h/2.0)) > maxY) - maxY = (double)(object->GetY() + (h/2.0)); - if ((object->GetY() - (h/2.0)) < minY) - minY = (double)(object->GetY() - (h/2.0)); - - node = node->Next(); - } - m_width = maxX - minX; - m_height = maxY - minY; - m_xpos = (double)(m_width/2.0 + minX); - m_ypos = (double)(m_height/2.0 + minY); -} - -bool wxCompositeShape::Recompute() -{ - int noIterations = 0; - bool changed = TRUE; - while (changed && (noIterations < 500)) - { - changed = Constrain(); - noIterations ++; - } -/* -#ifdef wx_x - if (changed) - cerr << "Warning: constraint algorithm failed after 500 iterations.\n"; -#endif -*/ - return (!changed); -} - -bool wxCompositeShape::Constrain() -{ - CalculateSize(); - - bool changed = FALSE; - wxNode *node = m_children.First(); - while (node) - { - wxShape *object = (wxShape *)node->Data(); - if (object->Constrain()) - changed = TRUE; - node = node->Next(); - } - - node = m_constraints.First(); - while (node) - { - wxOGLConstraint *constraint = (wxOGLConstraint *)node->Data(); - if (constraint->Evaluate()) changed = TRUE; - node = node->Next(); - } - return changed; -} - -#ifdef PROLOGIO -void wxCompositeShape::WriteAttributes(wxExpr *clause) -{ - wxRectangleShape::WriteAttributes(clause); - -// clause->AddAttributeValue("selectable", (long)selectable); - - // Output constraints as constraint1 = (...), constraint2 = (...), etc. - int constraintNo = 1; - char m_constraintNameBuf[20]; - wxNode *node = m_constraints.First(); - while (node) - { - wxOGLConstraint *constraint = (wxOGLConstraint *)node->Data(); - sprintf(m_constraintNameBuf, "constraint%d", constraintNo); - - // Each constraint is stored in the form - // (type name id xspacing yspacing m_constrainingObjectId constrainedObjectIdList) - wxExpr *constraintExpr = new wxExpr(wxExprList); - constraintExpr->Append(new wxExpr((long)constraint->m_constraintType)); - constraintExpr->Append(new wxExpr(wxExprString, constraint->m_constraintName)); - constraintExpr->Append(new wxExpr(constraint->m_constraintId)); - constraintExpr->Append(new wxExpr(constraint->m_xSpacing)); - constraintExpr->Append(new wxExpr(constraint->m_ySpacing)); - constraintExpr->Append(new wxExpr(constraint->m_constrainingObject->GetId())); - - wxExpr *objectList = new wxExpr(wxExprList); - wxNode *node1 = constraint->m_constrainedObjects.First(); - while (node1) - { - wxShape *obj = (wxShape *)node1->Data(); - objectList->Append(new wxExpr(obj->GetId())); - node1 = node1->Next(); - } - constraintExpr->Append(objectList); - - clause->AddAttributeValue(m_constraintNameBuf, constraintExpr); - - node = node->Next(); - constraintNo ++; - } - - // Write the ids of all the child images - wxExpr *childrenExpr = new wxExpr(wxExprList); - node = m_children.First(); - while (node) - { - wxShape *child = (wxShape *)node->Data(); - childrenExpr->Append(new wxExpr(child->GetId())); - node = node->Next(); - } - clause->AddAttributeValue("children", childrenExpr); - - // Write the ids of all the division images - if (m_divisions.Number() > 0) - { - wxExpr *divisionsExpr = new wxExpr(wxExprList); - node = m_divisions.First(); - while (node) - { - wxShape *child = (wxShape *)node->Data(); - divisionsExpr->Append(new wxExpr(child->GetId())); - node = node->Next(); - } - clause->AddAttributeValue("divisions", divisionsExpr); - } -} - -// Problem. Child images are always written AFTER the parent -// so as to be able to link up to parent. So we may not be able -// to find the constraint participants until we've read everything -// in. Need to have another pass for composites. -void wxCompositeShape::ReadAttributes(wxExpr *clause) -{ - wxRectangleShape::ReadAttributes(clause); - -// clause->GetAttributeValue("selectable", selectable); -} - -void wxCompositeShape::ReadConstraints(wxExpr *clause, wxExprDatabase *database) -{ - // Constraints are output as constraint1 = (...), constraint2 = (...), etc. - int constraintNo = 1; - char m_constraintNameBuf[20]; - bool haveConstraints = TRUE; - - while (haveConstraints) - { - sprintf(m_constraintNameBuf, "constraint%d", constraintNo); - wxExpr *constraintExpr = NULL; - clause->GetAttributeValue(m_constraintNameBuf, &constraintExpr); - if (!constraintExpr) - { - haveConstraints = FALSE; - break; - } - int cType = 0; - double cXSpacing = 0.0; - double cYSpacing = 0.0; - wxString cName(""); - long cId = 0; - wxShape *m_constrainingObject = NULL; - wxList m_constrainedObjects; - - // Each constraint is stored in the form - // (type name id xspacing yspacing m_constrainingObjectId constrainedObjectIdList) - - wxExpr *typeExpr = constraintExpr->Nth(0); - wxExpr *nameExpr = constraintExpr->Nth(1); - wxExpr *idExpr = constraintExpr->Nth(2); - wxExpr *xExpr = constraintExpr->Nth(3); - wxExpr *yExpr = constraintExpr->Nth(4); - wxExpr *constrainingExpr = constraintExpr->Nth(5); - wxExpr *constrainedExpr = constraintExpr->Nth(6); - - cType = (int)typeExpr->IntegerValue(); - cXSpacing = xExpr->RealValue(); - cYSpacing = yExpr->RealValue(); - cName = nameExpr->StringValue(); - cId = idExpr->IntegerValue(); - - wxExpr *objExpr1 = database->HashFind("node_image", constrainingExpr->IntegerValue()); - if (objExpr1 && objExpr1->GetClientData()) - m_constrainingObject = (wxShape *)objExpr1->GetClientData(); - else - wxFatalError("Couldn't find constraining image of composite.", "Object graphics error"); - - int i = 0; - wxExpr *currentIdExpr = constrainedExpr->Nth(i); - while (currentIdExpr) - { - long currentId = currentIdExpr->IntegerValue(); - wxExpr *objExpr2 = database->HashFind("node_image", currentId); - if (objExpr2 && objExpr2->GetClientData()) - { - m_constrainedObjects.Append((wxShape *)objExpr2->GetClientData()); - } - else - { - wxFatalError("Couldn't find constrained image of composite.", "Object graphics error"); - } - - i ++; - currentIdExpr = constrainedExpr->Nth(i); - } - wxOGLConstraint *newConstraint = AddConstraint(cType, m_constrainingObject, m_constrainedObjects); - newConstraint->SetSpacing(cXSpacing, cYSpacing); - newConstraint->m_constraintId = cId; - newConstraint->m_constraintName = (const char*) cName; - constraintNo ++; - } -} -#endif - -// Make this composite into a container by creating one wxDivisionShape -void wxCompositeShape::MakeContainer() -{ - wxDivisionShape *division = OnCreateDivision(); - m_divisions.Append(division); - AddChild(division); - - division->SetSize(m_width, m_height); - - wxClientDC dc(GetCanvas()); - GetCanvas()->PrepareDC(dc); - - division->Move(dc, GetX(), GetY()); - Recompute(); - division->Show(TRUE); -} - -wxDivisionShape *wxCompositeShape::OnCreateDivision() -{ - return new wxDivisionShape; -} - -wxShape *wxCompositeShape::FindContainerImage() -{ - wxNode *node = m_children.First(); - while (node) - { - wxShape *child = (wxShape *)node->Data(); - if (!m_divisions.Member(child)) - return child; - node = node->Next(); - } - return NULL; -} - -// Returns TRUE if division is a descendant of this container -bool wxCompositeShape::ContainsDivision(wxDivisionShape *division) -{ - if (m_divisions.Member(division)) - return TRUE; - wxNode *node = m_children.First(); - while (node) - { - wxShape *child = (wxShape *)node->Data(); - if (child->IsKindOf(CLASSINFO(wxCompositeShape))) - { - bool ans = ((wxCompositeShape *)child)->ContainsDivision(division); - if (ans) - return TRUE; - } - node = node->Next(); - } - return FALSE; -} - -/* - * Division object - * - */ - -IMPLEMENT_DYNAMIC_CLASS(wxDivisionShape, wxCompositeShape) - -wxDivisionShape::wxDivisionShape() -{ - SetSensitivityFilter(OP_CLICK_LEFT | OP_CLICK_RIGHT | OP_DRAG_RIGHT); - SetCentreResize(FALSE); - SetAttachmentMode(TRUE); - m_leftSide = NULL; - m_rightSide = NULL; - m_topSide = NULL; - m_bottomSide = NULL; - m_handleSide = DIVISION_SIDE_NONE; - m_leftSidePen = wxBLACK_PEN; - m_topSidePen = wxBLACK_PEN; - m_leftSideColour = "BLACK"; - m_topSideColour = "BLACK"; - m_leftSideStyle = "Solid"; - m_topSideStyle = "Solid"; - ClearRegions(); -} - -wxDivisionShape::~wxDivisionShape() -{ -} - -void wxDivisionShape::OnDraw(wxDC& dc) -{ - dc.SetBrush(* wxTRANSPARENT_BRUSH); - dc.SetBackgroundMode(wxTRANSPARENT); - - double x1 = (double)(GetX() - (GetWidth()/2.0)); - double y1 = (double)(GetY() - (GetHeight()/2.0)); - double x2 = (double)(GetX() + (GetWidth()/2.0)); - double y2 = (double)(GetY() + (GetHeight()/2.0)); - - // Should subtract 1 pixel if drawing under Windows -#ifdef __WXMSW__ - y2 -= (double)1.0; -#endif - - if (m_leftSide) - { - dc.SetPen(* m_leftSidePen); - dc.DrawLine(WXROUND(x1), WXROUND(y2), WXROUND(x1), WXROUND(y1)); - } - if (m_topSide) - { - dc.SetPen(* m_topSidePen); - dc.DrawLine(WXROUND(x1), WXROUND(y1), WXROUND(x2), WXROUND(y1)); - } - - // For testing purposes, draw a rectangle so we know - // how big the division is. -// SetBrush(* wxCYAN_BRUSH); -// wxRectangleShape::OnDraw(dc); -} - -void wxDivisionShape::OnDrawContents(wxDC& dc) -{ - wxCompositeShape::OnDrawContents(dc); -} - -bool wxDivisionShape::OnMovePre(wxDC& dc, double x, double y, double oldx, double oldy, bool display) -{ - double diffX = x - oldx; - double diffY = y - oldy; - wxNode *node = m_children.First(); - while (node) - { - wxShape *object = (wxShape *)node->Data(); - object->Erase(dc); - object->Move(dc, object->GetX() + diffX, object->GetY() + diffY, display); - node = node->Next(); - } - return TRUE; -} - -void wxDivisionShape::OnDragLeft(bool draw, double x, double y, int keys, int attachment) -{ - if ((m_sensitivity & OP_DRAG_LEFT) != OP_DRAG_LEFT) - { - attachment = 0; - double dist; - if (m_parent) - { - m_parent->HitTest(x, y, &attachment, &dist); - m_parent->GetEventHandler()->OnDragLeft(draw, x, y, keys, attachment); - } - return; - } - wxShape::OnDragLeft(draw, x, y, keys, attachment); -} - -void wxDivisionShape::OnBeginDragLeft(double x, double y, int keys, int attachment) -{ - if ((m_sensitivity & OP_DRAG_LEFT) != OP_DRAG_LEFT) - { - attachment = 0; - double dist; - if (m_parent) - { - m_parent->HitTest(x, y, &attachment, &dist); - m_parent->GetEventHandler()->OnBeginDragLeft(x, y, keys, attachment); - } - return; - } - - wxShape::OnBeginDragLeft(x, y, keys, attachment); -} - -void wxDivisionShape::OnEndDragLeft(double x, double y, int keys, int attachment) -{ - m_canvas->ReleaseMouse(); - if ((m_sensitivity & OP_DRAG_LEFT) != OP_DRAG_LEFT) - { - attachment = 0; - double dist; - if (m_parent) - { - m_parent->HitTest(x, y, &attachment, &dist); - m_parent->GetEventHandler()->OnEndDragLeft(x, y, keys, attachment); - } - return; - } - - wxClientDC dc(GetCanvas()); - GetCanvas()->PrepareDC(dc); - - dc.SetLogicalFunction(wxCOPY); - - m_canvas->Snap(&m_xpos, &m_ypos); - GetEventHandler()->OnMovePre(dc, x, y, m_oldX, m_oldY); - - ResetControlPoints(); - Draw(dc); - MoveLinks(dc); - GetEventHandler()->OnDrawControlPoints(dc); - - if (m_canvas && !m_canvas->GetQuickEditMode()) m_canvas->Redraw(dc); -} - -void wxDivisionShape::SetSize(double w, double h, bool recursive) -{ - m_width = w; - m_height = h; - wxRectangleShape::SetSize(w, h, recursive); -} - -void wxDivisionShape::CalculateSize() -{ -} - -void wxDivisionShape::Copy(wxShape& copy) -{ - wxCompositeShape::Copy(copy); - - wxASSERT( copy.IsKindOf(CLASSINFO(wxDivisionShape)) ) ; - - wxDivisionShape& divisionCopy = (wxDivisionShape&) copy; - - divisionCopy.m_leftSideStyle = m_leftSideStyle; - divisionCopy.m_topSideStyle = m_topSideStyle; - divisionCopy.m_leftSideColour = m_leftSideColour; - divisionCopy.m_topSideColour = m_topSideColour; - - divisionCopy.m_leftSidePen = m_leftSidePen; - divisionCopy.m_topSidePen = m_topSidePen; - divisionCopy.m_handleSide = m_handleSide; - - // Division geometry copying is handled at the wxCompositeShape level. -} - -#ifdef PROLOGIO -void wxDivisionShape::WriteAttributes(wxExpr *clause) -{ - wxCompositeShape::WriteAttributes(clause); - - if (m_leftSide) - clause->AddAttributeValue("left_side", (long)m_leftSide->GetId()); - if (m_topSide) - clause->AddAttributeValue("top_side", (long)m_topSide->GetId()); - if (m_rightSide) - clause->AddAttributeValue("right_side", (long)m_rightSide->GetId()); - if (m_bottomSide) - clause->AddAttributeValue("bottom_side", (long)m_bottomSide->GetId()); - - clause->AddAttributeValue("handle_side", (long)m_handleSide); - clause->AddAttributeValueString("left_colour", m_leftSideColour); - clause->AddAttributeValueString("top_colour", m_topSideColour); - clause->AddAttributeValueString("left_style", m_leftSideStyle); - clause->AddAttributeValueString("top_style", m_topSideStyle); -} - -void wxDivisionShape::ReadAttributes(wxExpr *clause) -{ - wxCompositeShape::ReadAttributes(clause); - - clause->GetAttributeValue("handle_side", m_handleSide); - clause->GetAttributeValue("left_colour", m_leftSideColour); - clause->GetAttributeValue("top_colour", m_topSideColour); - clause->GetAttributeValue("left_style", m_leftSideStyle); - clause->GetAttributeValue("top_style", m_topSideStyle); -} -#endif - -// Experimental -void wxDivisionShape::OnRightClick(double x, double y, int keys, int attachment) -{ - if (keys & KEY_CTRL) - { - PopupMenu(x, y); - } -/* - else if (keys & KEY_SHIFT) - { - if (m_leftSide || m_topSide || m_rightSide || m_bottomSide) - { - if (Selected()) - { - Select(FALSE); - GetParent()->Draw(dc); - } - else - Select(TRUE); - } - } -*/ - else - { - attachment = 0; - double dist; - if (m_parent) - { - m_parent->HitTest(x, y, &attachment, &dist); - m_parent->GetEventHandler()->OnRightClick(x, y, keys, attachment); - } - return; - } -} - - -// Divide wxHORIZONTALly or wxVERTICALly -bool wxDivisionShape::Divide(int direction) -{ - // Calculate existing top-left, bottom-right - double x1 = (double)(GetX() - (GetWidth()/2.0)); - double y1 = (double)(GetY() - (GetHeight()/2.0)); - wxCompositeShape *compositeParent = (wxCompositeShape *)GetParent(); - double oldWidth = GetWidth(); - double oldHeight = GetHeight(); - if (Selected()) - Select(FALSE); - - wxClientDC dc(GetCanvas()); - GetCanvas()->PrepareDC(dc); - - if (direction == wxVERTICAL) - { - // Dividing vertically means notionally putting a horizontal line through it. - // Break existing piece into two. - double newXPos1 = GetX(); - double newYPos1 = (double)(y1 + (GetHeight()/4.0)); - double newXPos2 = GetX(); - double newYPos2 = (double)(y1 + (3.0*GetHeight()/4.0)); - wxDivisionShape *newDivision = compositeParent->OnCreateDivision(); - newDivision->Show(TRUE); - - Erase(dc); - - // Anything adjoining the bottom of this division now adjoins the - // bottom of the new division. - wxNode *node = compositeParent->GetDivisions().First(); - while (node) - { - wxDivisionShape *obj = (wxDivisionShape *)node->Data(); - if (obj->GetTopSide() == this) - obj->SetTopSide(newDivision); - node = node->Next(); - } - newDivision->SetTopSide(this); - newDivision->SetBottomSide(m_bottomSide); - newDivision->SetLeftSide(m_leftSide); - newDivision->SetRightSide(m_rightSide); - m_bottomSide = newDivision; - - compositeParent->GetDivisions().Append(newDivision); - - // CHANGE: Need to insert this division at start of divisions in the object - // list, because e.g.: - // 1) Add division - // 2) Add contained object - // 3) Add division - // Division is now receiving mouse events _before_ the contained object, - // because it was added last (on top of all others) - - // Add after the image that visualizes the container - compositeParent->AddChild(newDivision, compositeParent->FindContainerImage()); - - m_handleSide = DIVISION_SIDE_BOTTOM; - newDivision->SetHandleSide(DIVISION_SIDE_TOP); - - SetSize(oldWidth, (double)(oldHeight/2.0)); - Move(dc, newXPos1, newYPos1); - - newDivision->SetSize(oldWidth, (double)(oldHeight/2.0)); - newDivision->Move(dc, newXPos2, newYPos2); - } - else - { - // Dividing horizontally means notionally putting a vertical line through it. - // Break existing piece into two. - double newXPos1 = (double)(x1 + (GetWidth()/4.0)); - double newYPos1 = GetY(); - double newXPos2 = (double)(x1 + (3.0*GetWidth()/4.0)); - double newYPos2 = GetY(); - wxDivisionShape *newDivision = compositeParent->OnCreateDivision(); - newDivision->Show(TRUE); - - Erase(dc); - - // Anything adjoining the left of this division now adjoins the - // left of the new division. - wxNode *node = compositeParent->GetDivisions().First(); - while (node) - { - wxDivisionShape *obj = (wxDivisionShape *)node->Data(); - if (obj->GetLeftSide() == this) - obj->SetLeftSide(newDivision); - node = node->Next(); - } - newDivision->SetTopSide(m_topSide); - newDivision->SetBottomSide(m_bottomSide); - newDivision->SetLeftSide(this); - newDivision->SetRightSide(m_rightSide); - m_rightSide = newDivision; - - compositeParent->GetDivisions().Append(newDivision); - compositeParent->AddChild(newDivision, compositeParent->FindContainerImage()); - - m_handleSide = DIVISION_SIDE_RIGHT; - newDivision->SetHandleSide(DIVISION_SIDE_LEFT); - - SetSize((double)(oldWidth/2.0), oldHeight); - Move(dc, newXPos1, newYPos1); - - newDivision->SetSize((double)(oldWidth/2.0), oldHeight); - newDivision->Move(dc, newXPos2, newYPos2); - } - if (compositeParent->Selected()) - { - compositeParent->DeleteControlPoints(& dc); - compositeParent->MakeControlPoints(); - compositeParent->MakeMandatoryControlPoints(); - } - compositeParent->Draw(dc); - return TRUE; -} - -// Make one control point for every visible line -void wxDivisionShape::MakeControlPoints() -{ - MakeMandatoryControlPoints(); -} - -void wxDivisionShape::MakeMandatoryControlPoints() -{ - double maxX, maxY; - - GetBoundingBoxMax(&maxX, &maxY); - double x, y; - int direction; -/* - if (m_leftSide) - { - x = (double)(-maxX/2.0); - y = 0.0; - wxDivisionControlPoint *control = new wxDivisionControlPoint(m_canvas, this, CONTROL_POINT_SIZE, x, y, - CONTROL_POINT_HORIZONTAL); - m_canvas->AddShape(control); - m_controlPoints.Append(control); - } - if (m_topSide) - { - x = 0.0; - y = (double)(-maxY/2.0); - wxDivisionControlPoint *control = new wxDivisionControlPoint(m_canvas, this, CONTROL_POINT_SIZE, x, y, - CONTROL_POINT_VERTICAL); - m_canvas->AddShape(control); - m_controlPoints.Append(control); - } -*/ - switch (m_handleSide) - { - case DIVISION_SIDE_LEFT: - { - x = (double)(-maxX/2.0); - y = 0.0; - direction = CONTROL_POINT_HORIZONTAL; - break; - } - case DIVISION_SIDE_TOP: - { - x = 0.0; - y = (double)(-maxY/2.0); - direction = CONTROL_POINT_VERTICAL; - break; - } - case DIVISION_SIDE_RIGHT: - { - x = (double)(maxX/2.0); - y = 0.0; - direction = CONTROL_POINT_HORIZONTAL; - break; - } - case DIVISION_SIDE_BOTTOM: - { - x = 0.0; - y = (double)(maxY/2.0); - direction = CONTROL_POINT_VERTICAL; - break; - } - default: - break; - } - if (m_handleSide != DIVISION_SIDE_NONE) - { - wxDivisionControlPoint *control = new wxDivisionControlPoint(m_canvas, this, CONTROL_POINT_SIZE, x, y, - direction); - m_canvas->AddShape(control); - m_controlPoints.Append(control); - } -} - -void wxDivisionShape::ResetControlPoints() -{ - ResetMandatoryControlPoints(); -} - -void wxDivisionShape::ResetMandatoryControlPoints() -{ - if (m_controlPoints.Number() < 1) - return; - - double maxX, maxY; - - GetBoundingBoxMax(&maxX, &maxY); -/* - wxNode *node = m_controlPoints.First(); - while (node) - { - wxDivisionControlPoint *control = (wxDivisionControlPoint *)node->Data(); - if (control->type == CONTROL_POINT_HORIZONTAL) - { - control->xoffset = (double)(-maxX/2.0); control->m_yoffset = 0.0; - } - else if (control->type == CONTROL_POINT_VERTICAL) - { - control->xoffset = 0.0; control->m_yoffset = (double)(-maxY/2.0); - } - node = node->Next(); - } -*/ - wxNode *node = m_controlPoints.First(); - if ((m_handleSide == DIVISION_SIDE_LEFT) && node) - { - wxDivisionControlPoint *control = (wxDivisionControlPoint *)node->Data(); - control->m_xoffset = (double)(-maxX/2.0); control->m_yoffset = 0.0; - } - - if ((m_handleSide == DIVISION_SIDE_TOP) && node) - { - wxDivisionControlPoint *control = (wxDivisionControlPoint *)node->Data(); - control->m_xoffset = 0.0; control->m_yoffset = (double)(-maxY/2.0); - } - - if ((m_handleSide == DIVISION_SIDE_RIGHT) && node) - { - wxDivisionControlPoint *control = (wxDivisionControlPoint *)node->Data(); - control->m_xoffset = (double)(maxX/2.0); control->m_yoffset = 0.0; - } - - if ((m_handleSide == DIVISION_SIDE_BOTTOM) && node) - { - wxDivisionControlPoint *control = (wxDivisionControlPoint *)node->Data(); - control->m_xoffset = 0.0; control->m_yoffset = (double)(maxY/2.0); - } -} - -// Adjust a side, returning FALSE if it's not physically possible. -bool wxDivisionShape::AdjustLeft(double left, bool test) -{ - double x2 = (double)(GetX() + (GetWidth()/2.0)); - - if (left >= x2) - return FALSE; - if (test) - return TRUE; - - double newW = x2 - left; - double newX = (double)(left + newW/2.0); - SetSize(newW, GetHeight()); - - wxClientDC dc(GetCanvas()); - GetCanvas()->PrepareDC(dc); - - Move(dc, newX, GetY()); - - return TRUE; -} - -bool wxDivisionShape::AdjustTop(double top, bool test) -{ - double y2 = (double)(GetY() + (GetHeight()/2.0)); - - if (top >= y2) - return FALSE; - if (test) - return TRUE; - - double newH = y2 - top; - double newY = (double)(top + newH/2.0); - SetSize(GetWidth(), newH); - - wxClientDC dc(GetCanvas()); - GetCanvas()->PrepareDC(dc); - - Move(dc, GetX(), newY); - - return TRUE; -} - -bool wxDivisionShape::AdjustRight(double right, bool test) -{ - double x1 = (double)(GetX() - (GetWidth()/2.0)); - - if (right <= x1) - return FALSE; - if (test) - return TRUE; - - double newW = right - x1; - double newX = (double)(x1 + newW/2.0); - SetSize(newW, GetHeight()); - - wxClientDC dc(GetCanvas()); - GetCanvas()->PrepareDC(dc); - - Move(dc, newX, GetY()); - - return TRUE; -} - -bool wxDivisionShape::AdjustBottom(double bottom, bool test) -{ - double y1 = (double)(GetY() - (GetHeight()/2.0)); - - if (bottom <= y1) - return FALSE; - if (test) - return TRUE; - - double newH = bottom - y1; - double newY = (double)(y1 + newH/2.0); - SetSize(GetWidth(), newH); - - wxClientDC dc(GetCanvas()); - GetCanvas()->PrepareDC(dc); - - Move(dc, GetX(), newY); - - return TRUE; -} - -wxDivisionControlPoint::wxDivisionControlPoint(wxShapeCanvas *the_canvas, wxShape *object, double size, double the_xoffset, double the_yoffset, int the_type): - wxControlPoint(the_canvas, object, size, the_xoffset, the_yoffset, the_type) -{ - SetEraseObject(FALSE); -} - -wxDivisionControlPoint::~wxDivisionControlPoint() -{ -} - -static double originalX = 0.0; -static double originalY = 0.0; -static double originalW = 0.0; -static double originalH = 0.0; - -// Implement resizing of canvas object -void wxDivisionControlPoint::OnDragLeft(bool draw, double x, double y, int keys, int attachment) -{ - wxControlPoint::OnDragLeft(draw, x, y, keys, attachment); -} - -void wxDivisionControlPoint::OnBeginDragLeft(double x, double y, int keys, int attachment) -{ - wxDivisionShape *division = (wxDivisionShape *)m_shape; - originalX = division->GetX(); - originalY = division->GetY(); - originalW = division->GetWidth(); - originalH = division->GetHeight(); - - wxControlPoint::OnBeginDragLeft(x, y, keys, attachment); -} - -void wxDivisionControlPoint::OnEndDragLeft(double x, double y, int keys, int attachment) -{ - wxControlPoint::OnEndDragLeft(x, y, keys, attachment); - - wxClientDC dc(GetCanvas()); - GetCanvas()->PrepareDC(dc); - - wxDivisionShape *division = (wxDivisionShape *)m_shape; - wxCompositeShape *divisionParent = (wxCompositeShape *)division->GetParent(); - - // Need to check it's within the bounds of the parent composite. - double x1 = (double)(divisionParent->GetX() - (divisionParent->GetWidth()/2.0)); - double y1 = (double)(divisionParent->GetY() - (divisionParent->GetHeight()/2.0)); - double x2 = (double)(divisionParent->GetX() + (divisionParent->GetWidth()/2.0)); - double y2 = (double)(divisionParent->GetY() + (divisionParent->GetHeight()/2.0)); - - // Need to check it has not made the division zero or negative width/height - double dx1 = (double)(division->GetX() - (division->GetWidth()/2.0)); - double dy1 = (double)(division->GetY() - (division->GetHeight()/2.0)); - double dx2 = (double)(division->GetX() + (division->GetWidth()/2.0)); - double dy2 = (double)(division->GetY() + (division->GetHeight()/2.0)); - - bool success = TRUE; - switch (division->GetHandleSide()) - { - case DIVISION_SIDE_LEFT: - { - if ((x <= x1) || (x >= x2) || (x >= dx2)) - success = FALSE; - // Try it out first... - else if (!division->ResizeAdjoining(DIVISION_SIDE_LEFT, x, TRUE)) - success = FALSE; - else - division->ResizeAdjoining(DIVISION_SIDE_LEFT, x, FALSE); - - break; - } - case DIVISION_SIDE_TOP: - { - if ((y <= y1) || (y >= y2) || (y >= dy2)) - success = FALSE; - else if (!division->ResizeAdjoining(DIVISION_SIDE_TOP, y, TRUE)) - success = FALSE; - else - division->ResizeAdjoining(DIVISION_SIDE_TOP, y, FALSE); - - break; - } - case DIVISION_SIDE_RIGHT: - { - if ((x <= x1) || (x >= x2) || (x <= dx1)) - success = FALSE; - else if (!division->ResizeAdjoining(DIVISION_SIDE_RIGHT, x, TRUE)) - success = FALSE; - else - division->ResizeAdjoining(DIVISION_SIDE_RIGHT, x, FALSE); - - break; - } - case DIVISION_SIDE_BOTTOM: - { - if ((y <= y1) || (y >= y2) || (y <= dy1)) - success = FALSE; - else if (!division->ResizeAdjoining(DIVISION_SIDE_BOTTOM, y, TRUE)) - success = FALSE; - else - division->ResizeAdjoining(DIVISION_SIDE_BOTTOM, y, FALSE); - - break; - } - } - if (!success) - { - division->SetSize(originalW, originalH); - division->Move(dc, originalX, originalY); - } - divisionParent->Draw(dc); - division->GetEventHandler()->OnDrawControlPoints(dc); -} - -/* Resize adjoining divisions. - * - Behaviour should be as follows: - If right edge moves, find all objects whose left edge - adjoins this object, and move left edge accordingly. - If left..., move ... right. - If top..., move ... bottom. - If bottom..., move top. - If size goes to zero or end position is other side of start position, - resize to original size and return. - */ -bool wxDivisionShape::ResizeAdjoining(int side, double newPos, bool test) -{ - wxCompositeShape *divisionParent = (wxCompositeShape *)GetParent(); - wxNode *node = divisionParent->GetDivisions().First(); - while (node) - { - wxDivisionShape *division = (wxDivisionShape *)node->Data(); - switch (side) - { - case DIVISION_SIDE_LEFT: - { - if (division->m_rightSide == this) - { - bool success = division->AdjustRight(newPos, test); - if (!success && test) - return FALSE; - } - break; - } - case DIVISION_SIDE_TOP: - { - if (division->m_bottomSide == this) - { - bool success = division->AdjustBottom(newPos, test); - if (!success && test) - return FALSE; - } - break; - } - case DIVISION_SIDE_RIGHT: - { - if (division->m_leftSide == this) - { - bool success = division->AdjustLeft(newPos, test); - if (!success && test) - return FALSE; - } - break; - } - case DIVISION_SIDE_BOTTOM: - { - if (division->m_topSide == this) - { - bool success = division->AdjustTop(newPos, test); - if (!success && test) - return FALSE; - } - break; - } - default: - break; - } - node = node->Next(); - } - - return TRUE; -} - -/* - * Popup menu for editing divisions - * - */ - -void oglGraphicsDivisionMenuProc(wxMenu& menu, wxCommandEvent& event) -{ - wxDivisionShape *division = (wxDivisionShape *)menu.GetClientData(); - switch (event.GetInt()) - { - case DIVISION_MENU_SPLIT_HORIZONTALLY: - { - division->Divide(wxHORIZONTAL); - break; - } - case DIVISION_MENU_SPLIT_VERTICALLY: - { - division->Divide(wxVERTICAL); - break; - } - case DIVISION_MENU_EDIT_LEFT_EDGE: - { - division->EditEdge(DIVISION_SIDE_LEFT); - break; - } - case DIVISION_MENU_EDIT_TOP_EDGE: - { - division->EditEdge(DIVISION_SIDE_TOP); - break; - } - default: - break; - } -} - -void wxDivisionShape::EditEdge(int side) -{ - wxMessageBox("EditEdge() not implemented", "OGL", wxOK); - -#if 0 - wxBeginBusyCursor(); - - wxPen *currentPen = NULL; - char **pColour = NULL; - char **pStyle = NULL; - if (side == DIVISION_SIDE_LEFT) - { - currentPen = m_leftSidePen; - pColour = &m_leftSideColour; - pStyle = &m_leftSideStyle; - } - else - { - currentPen = m_topSidePen; - pColour = &m_topSideColour; - pStyle = &m_topSideStyle; - } - - GraphicsForm *form = new GraphicsForm("Containers"); - int lineWidth = currentPen->GetWidth(); - - form->Add(wxMakeFormShort("Width", &lineWidth, wxFORM_DEFAULT, NULL, NULL, wxVERTICAL, - 150)); - form->Add(wxMakeFormString("Colour", pColour, wxFORM_CHOICE, - new wxList(wxMakeConstraintStrings( - "BLACK" , - "BLUE" , - "BROWN" , - "CORAL" , - "CYAN" , - "DARK GREY" , - "DARK GREEN" , - "DIM GREY" , - "GREY" , - "GREEN" , - "LIGHT BLUE" , - "LIGHT GREY" , - "MAGENTA" , - "MAROON" , - "NAVY" , - "ORANGE" , - "PURPLE" , - "RED" , - "TURQUOISE" , - "VIOLET" , - "WHITE" , - "YELLOW" , - NULL), - NULL), NULL, wxVERTICAL, 150)); - form->Add(wxMakeFormString("Style", pStyle, wxFORM_CHOICE, - new wxList(wxMakeConstraintStrings( - "Solid" , - "Short Dash" , - "Long Dash" , - "Dot" , - "Dot Dash" , - NULL), - NULL), NULL, wxVERTICAL, 100)); - - wxDialogBox *dialog = new wxDialogBox(m_canvas->GetParent(), "Division properties", 10, 10, 500, 500); - if (GraphicsLabelFont) - dialog->SetLabelFont(GraphicsLabelFont); - if (GraphicsButtonFont) - dialog->SetButtonFont(GraphicsButtonFont); - - form->AssociatePanel(dialog); - form->dialog = dialog; - - dialog->Fit(); - dialog->Centre(wxBOTH); - - wxEndBusyCursor(); - dialog->Show(TRUE); - - int lineStyle = wxSOLID; - if (*pStyle) - { - if (strcmp(*pStyle, "Solid") == 0) - lineStyle = wxSOLID; - else if (strcmp(*pStyle, "Dot") == 0) - lineStyle = wxDOT; - else if (strcmp(*pStyle, "Short Dash") == 0) - lineStyle = wxSHORT_DASH; - else if (strcmp(*pStyle, "Long Dash") == 0) - lineStyle = wxLONG_DASH; - else if (strcmp(*pStyle, "Dot Dash") == 0) - lineStyle = wxDOT_DASH; - } - - wxPen *newPen = wxThePenList->FindOrCreatePen(*pColour, lineWidth, lineStyle); - if (!pen) - pen = wxBLACK_PEN; - if (side == DIVISION_SIDE_LEFT) - m_leftSidePen = newPen; - else - m_topSidePen = newPen; - - // Need to draw whole image again - wxCompositeShape *compositeParent = (wxCompositeShape *)GetParent(); - compositeParent->Draw(dc); -#endif -} - -// Popup menu -void wxDivisionShape::PopupMenu(double x, double y) -{ - oglPopupDivisionMenu->SetClientData((void *)this); - if (m_leftSide) - oglPopupDivisionMenu->Enable(DIVISION_MENU_EDIT_LEFT_EDGE, TRUE); - else - oglPopupDivisionMenu->Enable(DIVISION_MENU_EDIT_LEFT_EDGE, FALSE); - if (m_topSide) - oglPopupDivisionMenu->Enable(DIVISION_MENU_EDIT_TOP_EDGE, TRUE); - else - oglPopupDivisionMenu->Enable(DIVISION_MENU_EDIT_TOP_EDGE, FALSE); - - int x1, y1; - m_canvas->ViewStart(&x1, &y1); - - int unit_x, unit_y; - m_canvas->GetScrollPixelsPerUnit(&unit_x, &unit_y); - - wxClientDC dc(GetCanvas()); - GetCanvas()->PrepareDC(dc); - - int mouse_x = (int)(dc.LogicalToDeviceX((long)(x - x1*unit_x))); - int mouse_y = (int)(dc.LogicalToDeviceY((long)(y - y1*unit_y))); - - m_canvas->PopupMenu(oglPopupDivisionMenu, mouse_x, mouse_y); -} - -void wxDivisionShape::SetLeftSideColour(const wxString& colour) -{ - m_leftSideColour = colour; -} - -void wxDivisionShape::SetTopSideColour(const wxString& colour) -{ - m_topSideColour = colour; -} - -void wxDivisionShape::SetLeftSideStyle(const wxString& style) -{ - m_leftSideStyle = style; -} - -void wxDivisionShape::SetTopSideStyle(const wxString& style) -{ - m_topSideStyle = style; -} - diff --git a/utils/ogl/src/composit.h b/utils/ogl/src/composit.h deleted file mode 100644 index 505667c2bd..0000000000 --- a/utils/ogl/src/composit.h +++ /dev/null @@ -1,240 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: composit.h -// Purpose: wxCompositeShape -// Author: Julian Smart -// Modified by: -// Created: 12/07/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _OGL_COMPOSIT_H_ -#define _OGL_COMPOSIT_H_ - -#ifdef __GNUG__ -#pragma interface "composit.h" -#endif - -class wxDivisionShape; -class wxOGLConstraint; - -/* - * A composite object is an invisible rectangle surrounding all children - * - */ - -class wxCompositeShape: public wxRectangleShape -{ - DECLARE_DYNAMIC_CLASS(wxCompositeShape) -public: - - wxCompositeShape(); - ~wxCompositeShape(); - - void OnDraw(wxDC& dc); - void OnDrawContents(wxDC& dc); - void OnErase(wxDC& dc); - bool OnMovePre(wxDC& dc, double x, double y, double oldX, double oldY, bool display = TRUE); - void OnDragLeft(bool draw, double x, double y, int keys, int attachment = 0); - void OnBeginDragLeft(double x, double y, int keys, int attachment = 0); - void OnEndDragLeft(double x, double y, int keys, int attachment = 0); - - void OnRightClick(double x, double y, int keys, int attachment = 0); - - void SetSize(double w, double h, bool recursive = TRUE); - - // Returns TRUE if it settled down - bool Recompute(); - - // New members - void AddChild(wxShape *child, wxShape *addAfter = NULL); - void RemoveChild(wxShape *child); - - wxOGLConstraint *AddConstraint(wxOGLConstraint *constraint); - wxOGLConstraint *AddConstraint(int type, wxShape *constraining, wxList& constrained); - wxOGLConstraint *AddConstraint(int type, wxShape *constraining, wxShape *constrained); - - void DeleteConstraint(wxOGLConstraint *constraint); - - // Delete constraints that involve this child. - void DeleteConstraintsInvolvingChild(wxShape *child); - - // Remove the image from any constraints involving it, but DON'T - // remove any constraints. - void RemoveChildFromConstraints(wxShape *child); - - // Find constraint, also returning actual composite the constraint was in, - // in case it had to find it recursively. - wxOGLConstraint *FindConstraint(long id, wxCompositeShape **actualComposite = NULL); - - // Returns TRUE if something changed - bool Constrain(); - - // Make this composite into a container by creating one wxDivisionShape - void MakeContainer(); - - // Calculates size and position of composite object based on children - void CalculateSize(); - -#ifdef PROLOGIO - void WriteAttributes(wxExpr *clause); - void ReadAttributes(wxExpr *clause); - // In case the object has constraints it needs to read in in a different pass - void ReadConstraints(wxExpr *clause, wxExprDatabase *database); -#endif - // Does the copying for this object - void Copy(wxShape& copy); - - virtual wxDivisionShape *OnCreateDivision(); - - // Finds the image used to visualize a container. This is any child - // of the composite that is not in the divisions list. - wxShape *FindContainerImage(); - - // Returns TRUE if division is a descendant of this container - bool ContainsDivision(wxDivisionShape *division); - - inline wxList& GetDivisions() const { return (wxList&) m_divisions; } - inline wxList& GetConstraints() const { return (wxList&) m_constraints; } - -protected: - double m_oldX; - double m_oldY; - wxList m_constraints; - wxList m_divisions; // In case it's a container -}; - -/* - * A division object is a composite with special properties, - * to be used for containment. It's a subdivision of a container. - * A containing node image consists of a composite with a main child shape - * such as rounded rectangle, plus a list of division objects. - * It needs to be a composite because a division contains pieces - * of diagram. - * NOTE a container has at least one wxDivisionShape for consistency. - * This can be subdivided, so it turns into two objects, then each of - * these can be subdivided, etc. - */ -#define DIVISION_SIDE_NONE 0 -#define DIVISION_SIDE_LEFT 1 -#define DIVISION_SIDE_TOP 2 -#define DIVISION_SIDE_RIGHT 3 -#define DIVISION_SIDE_BOTTOM 4 - -class wxDivisionShape: public wxCompositeShape -{ - DECLARE_DYNAMIC_CLASS(wxDivisionShape) - public: - - wxDivisionShape(); - ~wxDivisionShape(); - - void OnDraw(wxDC& dc); - void OnDrawContents(wxDC& dc); - bool OnMovePre(wxDC& dc, double x, double y, double oldX, double oldY, bool display = TRUE); - void OnDragLeft(bool draw, double x, double y, int keys, int attachment = 0); - void OnBeginDragLeft(double x, double y, int keys, int attachment = 0); - void OnEndDragLeft(double x, double y, int keys, int attachment = 0); - - void OnRightClick(double x, double y, int keys = 0, int attachment = 0); - - // Don't want this kind of composite to resize its subdiagrams, so - // override composite's SetSize. - void SetSize(double w, double h, bool recursive = TRUE); - - // Similarly for calculating size: it's fixed at whatever SetSize - // set it to, not in terms of children. - void CalculateSize(); - - void MakeControlPoints(); - void ResetControlPoints(); - void MakeMandatoryControlPoints(); - void ResetMandatoryControlPoints(); - -#ifdef PROLOGIO - void WriteAttributes(wxExpr *clause); - void ReadAttributes(wxExpr *clause); -#endif - // Does the copying for this object - void Copy(wxShape& copy); - - // Divide horizontally (wxHORIZONTAL) or vertically (wxVERTICAL) - bool Divide(int direction); - - // Resize adjoining divisions at the given side. If test is TRUE, - // just see whether it's possible for each adjoining region, - // returning FALSE if it's not. - bool ResizeAdjoining(int side, double newPos, bool test); - - // Adjust a side, returning FALSE if it's not physically possible. - bool AdjustLeft(double left, bool test); - bool AdjustTop(double top, bool test); - bool AdjustRight(double right, bool test); - bool AdjustBottom(double bottom, bool test); - - // Edit style of left or top side - void EditEdge(int side); - - // Popup menu - void PopupMenu(double x, double y); - - inline void SetLeftSide(wxDivisionShape *shape) { m_leftSide = shape; } - inline void SetTopSide(wxDivisionShape *shape) { m_topSide = shape; } - inline void SetRightSide(wxDivisionShape *shape) { m_rightSide = shape; } - inline void SetBottomSide(wxDivisionShape *shape) { m_bottomSide = shape; } - inline wxDivisionShape *GetLeftSide() const { return m_leftSide; } - inline wxDivisionShape *GetTopSide() const { return m_topSide; } - inline wxDivisionShape *GetRightSide() const { return m_rightSide; } - inline wxDivisionShape *GetBottomSide() const { return m_bottomSide; } - - inline void SetHandleSide(int side) { m_handleSide = side; } - inline int GetHandleSide() const { return m_handleSide; } - - inline void SetLeftSidePen(wxPen *pen) { m_leftSidePen = pen; } - inline wxPen *GetLeftSidePen() const { return m_leftSidePen; } - inline void SetTopSidePen(wxPen *pen) { m_topSidePen = pen; } - inline wxPen *GetTopSidePen() const { return m_topSidePen; } - - void SetLeftSideColour(const wxString& colour); - void SetTopSideColour(const wxString& colour); - void SetLeftSideStyle(const wxString& style); - void SetTopSideStyle(const wxString& style); - - inline wxString GetLeftSideColour() const { return m_leftSideColour; } - inline wxString GetTopSideColour() const { return m_topSideColour; } - inline wxString GetLeftSideStyle() const { return m_leftSideStyle; } - inline wxString GetTopSideStyle() const { return m_topSideStyle; } - - protected: - // Adjoining divisions. NULL indicates edge - // of container, and that side shouldn't be - // drawn. - wxDivisionShape* m_leftSide; - wxDivisionShape* m_rightSide; - wxDivisionShape* m_topSide; - wxDivisionShape* m_bottomSide; - - int m_handleSide; // Side at which handle is legal - - wxPen* m_leftSidePen; - wxPen* m_topSidePen; - wxString m_leftSideColour; - wxString m_topSideColour; - wxString m_leftSideStyle; - wxString m_topSideStyle; -}; - -extern wxMenu *oglPopupDivisionMenu; -extern void oglGraphicsDivisionMenuProc(wxMenu& menu, wxCommandEvent& event); - -#define DIVISION_MENU_SPLIT_HORIZONTALLY 1 -#define DIVISION_MENU_SPLIT_VERTICALLY 2 -#define DIVISION_MENU_EDIT_LEFT_EDGE 3 -#define DIVISION_MENU_EDIT_TOP_EDGE 4 -#define DIVISION_MENU_EDIT_RIGHT_EDGE 5 -#define DIVISION_MENU_EDIT_BOTTOM_EDGE 6 -#define DIVISION_MENU_DELETE_ALL 7 - -#endif - // _OGL_COMPOSIT_H_ diff --git a/utils/ogl/src/constrnt.cpp b/utils/ogl/src/constrnt.cpp deleted file mode 100644 index 101e4a1782..0000000000 --- a/utils/ogl/src/constrnt.cpp +++ /dev/null @@ -1,619 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: constrnt.cpp -// Purpose: OGL Constraint classes -// Author: Julian Smart -// Modified by: -// Created: 12/07/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "constrnt.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include -#endif - -#include - -#include "basic.h" -#include "constrnt.h" -#include "canvas.h" - -wxList *wxOGLConstraintTypes = NULL; - -/* - * Constraint type - * - */ - -IMPLEMENT_DYNAMIC_CLASS(wxOGLConstraintType, wxObject) - -wxOGLConstraintType::wxOGLConstraintType(int theType, const wxString& theName, const wxString& thePhrase) -{ - m_type = theType; - m_name = theName; - m_phrase = thePhrase; -} - -wxOGLConstraintType::~wxOGLConstraintType() -{ -} - -void OGLInitializeConstraintTypes() -{ - if (!wxOGLConstraintTypes) - return; - - wxOGLConstraintTypes = new wxList(wxKEY_INTEGER); - - wxOGLConstraintTypes->Append(gyCONSTRAINT_CENTRED_VERTICALLY, - new wxOGLConstraintType(gyCONSTRAINT_CENTRED_VERTICALLY, "Centre vertically", "centred vertically w.r.t.")); - - wxOGLConstraintTypes->Append(gyCONSTRAINT_CENTRED_HORIZONTALLY, - new wxOGLConstraintType(gyCONSTRAINT_CENTRED_HORIZONTALLY, "Centre horizontally", "centred horizontally w.r.t.")); - - wxOGLConstraintTypes->Append(gyCONSTRAINT_CENTRED_BOTH, - new wxOGLConstraintType(gyCONSTRAINT_CENTRED_BOTH, "Centre", "centred w.r.t.")); - - wxOGLConstraintTypes->Append(gyCONSTRAINT_LEFT_OF, - new wxOGLConstraintType(gyCONSTRAINT_LEFT_OF, "Left of", "left of")); - - wxOGLConstraintTypes->Append(gyCONSTRAINT_RIGHT_OF, - new wxOGLConstraintType(gyCONSTRAINT_RIGHT_OF, "Right of", "right of")); - - wxOGLConstraintTypes->Append(gyCONSTRAINT_ABOVE, - new wxOGLConstraintType(gyCONSTRAINT_ABOVE, "Above", "above")); - - wxOGLConstraintTypes->Append(gyCONSTRAINT_BELOW, - new wxOGLConstraintType(gyCONSTRAINT_BELOW, "Below", "below")); - - // Alignment - wxOGLConstraintTypes->Append(gyCONSTRAINT_ALIGNED_TOP, - new wxOGLConstraintType(gyCONSTRAINT_ALIGNED_TOP, "Top-aligned", "aligned to the top of")); - - wxOGLConstraintTypes->Append(gyCONSTRAINT_ALIGNED_BOTTOM, - new wxOGLConstraintType(gyCONSTRAINT_ALIGNED_BOTTOM, "Bottom-aligned", "aligned to the bottom of")); - - wxOGLConstraintTypes->Append(gyCONSTRAINT_ALIGNED_LEFT, - new wxOGLConstraintType(gyCONSTRAINT_ALIGNED_LEFT, "Left-aligned", "aligned to the left of")); - - wxOGLConstraintTypes->Append(gyCONSTRAINT_ALIGNED_RIGHT, - new wxOGLConstraintType(gyCONSTRAINT_ALIGNED_RIGHT, "Right-aligned", "aligned to the right of")); - - // Mid-alignment - wxOGLConstraintTypes->Append(gyCONSTRAINT_MIDALIGNED_TOP, - new wxOGLConstraintType(gyCONSTRAINT_MIDALIGNED_TOP, "Top-midaligned", "centred on the top of")); - - wxOGLConstraintTypes->Append(gyCONSTRAINT_MIDALIGNED_BOTTOM, - new wxOGLConstraintType(gyCONSTRAINT_MIDALIGNED_BOTTOM, "Bottom-midaligned", "centred on the bottom of")); - - wxOGLConstraintTypes->Append(gyCONSTRAINT_MIDALIGNED_LEFT, - new wxOGLConstraintType(gyCONSTRAINT_MIDALIGNED_LEFT, "Left-midaligned", "centred on the left of")); - - wxOGLConstraintTypes->Append(gyCONSTRAINT_MIDALIGNED_RIGHT, - new wxOGLConstraintType(gyCONSTRAINT_MIDALIGNED_RIGHT, "Right-midaligned", "centred on the right of")); -} - -void OGLCleanUpConstraintTypes() -{ - if (!wxOGLConstraintTypes) - return; - - wxNode* node = wxOGLConstraintTypes->First(); - while (node) - { - wxOGLConstraintType* ct = (wxOGLConstraintType*) node->Data(); - delete ct; - node = node->Next(); - } - delete wxOGLConstraintTypes; - wxOGLConstraintTypes = NULL; -} - -/* - * Constraint Stuff - * - */ - -IMPLEMENT_DYNAMIC_CLASS(wxOGLConstraint, wxObject) - -wxOGLConstraint::wxOGLConstraint(int type, wxShape *constraining, wxList& constrained) -{ - m_xSpacing = 0.0; - m_ySpacing = 0.0; - - m_constraintType = type; - m_constrainingObject = constraining; - - m_constraintId = 0; - m_constraintName = "noname"; - - wxNode *node = constrained.First(); - while (node) - { - m_constrainedObjects.Append(node->Data()); - node = node->Next(); - } -} - -wxOGLConstraint::~wxOGLConstraint() -{ -} - -bool wxOGLConstraint::Equals(double a, double b) -{ - double marg = 0.5; - - bool eq = ((b <= a + marg) && (b >= a - marg)); - return eq; -} - -// Return TRUE if anything changed -bool wxOGLConstraint::Evaluate() -{ - double maxWidth, maxHeight, minWidth, minHeight, x, y; - m_constrainingObject->GetBoundingBoxMax(&maxWidth, &maxHeight); - m_constrainingObject->GetBoundingBoxMin(&minWidth, &minHeight); - x = m_constrainingObject->GetX(); - y = m_constrainingObject->GetY(); - - wxClientDC dc(m_constrainingObject->GetCanvas()); - m_constrainingObject->GetCanvas()->PrepareDC(dc); - - switch (m_constraintType) - { - case gyCONSTRAINT_CENTRED_VERTICALLY: - { - int n = m_constrainedObjects.Number(); - double totalObjectHeight = 0.0; - wxNode *node = m_constrainedObjects.First(); - while (node) - { - wxShape *constrainedObject = (wxShape *)node->Data(); - - double width2, height2; - constrainedObject->GetBoundingBoxMax(&width2, &height2); - totalObjectHeight += height2; - node = node->Next(); - } - double startY; - double spacingY; - // Check if within the constraining object... - if ((totalObjectHeight + (n + 1)*m_ySpacing) <= minHeight) - { - spacingY = (double)((minHeight - totalObjectHeight)/(n + 1)); - startY = (double)(y - (minHeight/2.0)); - } - // Otherwise, use default spacing - else - { - spacingY = m_ySpacing; - startY = (double)(y - ((totalObjectHeight + (n+1)*spacingY)/2.0)); - } - - // Now position the objects - bool changed = FALSE; - node = m_constrainedObjects.First(); - while (node) - { - wxShape *constrainedObject = (wxShape *)node->Data(); - double width2, height2; - constrainedObject->GetBoundingBoxMax(&width2, &height2); - startY += (double)(spacingY + (height2/2.0)); - if (!Equals(startY, constrainedObject->GetY())) - { - constrainedObject->Move(dc, constrainedObject->GetX(), startY, FALSE); - changed = TRUE; - } - startY += (double)(height2/2.0); - node = node->Next(); - } - return changed; - } - case gyCONSTRAINT_CENTRED_HORIZONTALLY: - { - int n = m_constrainedObjects.Number(); - double totalObjectWidth = 0.0; - wxNode *node = m_constrainedObjects.First(); - while (node) - { - wxShape *constrainedObject = (wxShape *)node->Data(); - - double width2, height2; - constrainedObject->GetBoundingBoxMax(&width2, &height2); - totalObjectWidth += width2; - node = node->Next(); - } - double startX; - double spacingX; - // Check if within the constraining object... - if ((totalObjectWidth + (n + 1)*m_xSpacing) <= minWidth) - { - spacingX = (double)((minWidth - totalObjectWidth)/(n + 1)); - startX = (double)(x - (minWidth/2.0)); - } - // Otherwise, use default spacing - else - { - spacingX = m_xSpacing; - startX = (double)(x - ((totalObjectWidth + (n+1)*spacingX)/2.0)); - } - - // Now position the objects - bool changed = FALSE; - node = m_constrainedObjects.First(); - while (node) - { - wxShape *constrainedObject = (wxShape *)node->Data(); - double width2, height2; - constrainedObject->GetBoundingBoxMax(&width2, &height2); - startX += (double)(spacingX + (width2/2.0)); - if (!Equals(startX, constrainedObject->GetX())) - { - constrainedObject->Move(dc, startX, constrainedObject->GetY(), FALSE); - changed = TRUE; - } - startX += (double)(width2/2.0); - node = node->Next(); - } - return changed; - } - case gyCONSTRAINT_CENTRED_BOTH: - { - int n = m_constrainedObjects.Number(); - double totalObjectWidth = 0.0; - double totalObjectHeight = 0.0; - wxNode *node = m_constrainedObjects.First(); - while (node) - { - wxShape *constrainedObject = (wxShape *)node->Data(); - - double width2, height2; - constrainedObject->GetBoundingBoxMax(&width2, &height2); - totalObjectWidth += width2; - totalObjectHeight += height2; - node = node->Next(); - } - double startX; - double spacingX; - double startY; - double spacingY; - - // Check if within the constraining object... - if ((totalObjectWidth + (n + 1)*m_xSpacing) <= minWidth) - { - spacingX = (double)((minWidth - totalObjectWidth)/(n + 1)); - startX = (double)(x - (minWidth/2.0)); - } - // Otherwise, use default spacing - else - { - spacingX = m_xSpacing; - startX = (double)(x - ((totalObjectWidth + (n+1)*spacingX)/2.0)); - } - - // Check if within the constraining object... - if ((totalObjectHeight + (n + 1)*m_ySpacing) <= minHeight) - { - spacingY = (double)((minHeight - totalObjectHeight)/(n + 1)); - startY = (double)(y - (minHeight/2.0)); - } - // Otherwise, use default spacing - else - { - spacingY = m_ySpacing; - startY = (double)(y - ((totalObjectHeight + (n+1)*spacingY)/2.0)); - } - - // Now position the objects - bool changed = FALSE; - node = m_constrainedObjects.First(); - while (node) - { - wxShape *constrainedObject = (wxShape *)node->Data(); - double width2, height2; - constrainedObject->GetBoundingBoxMax(&width2, &height2); - startX += (double)(spacingX + (width2/2.0)); - startY += (double)(spacingY + (height2/2.0)); - - if ((!Equals(startX, constrainedObject->GetX())) || (!Equals(startY, constrainedObject->GetY()))) - { - constrainedObject->Move(dc, startX, startY, FALSE); - changed = TRUE; - } - - startX += (double)(width2/2.0); - startY += (double)(height2/2.0); - - node = node->Next(); - } - return changed; - } - case gyCONSTRAINT_LEFT_OF: - { - bool changed = FALSE; - - wxNode *node = m_constrainedObjects.First(); - while (node) - { - wxShape *constrainedObject = (wxShape *)node->Data(); - - double width2, height2; - constrainedObject->GetBoundingBoxMax(&width2, &height2); - - double x3 = (double)(x - (minWidth/2.0) - (width2/2.0) - m_xSpacing); - if (!Equals(x3, constrainedObject->GetX())) - { - changed = TRUE; - constrainedObject->Move(dc, x3, constrainedObject->GetY(), FALSE); - } - - node = node->Next(); - } - return changed; - } - case gyCONSTRAINT_RIGHT_OF: - { - bool changed = FALSE; - - wxNode *node = m_constrainedObjects.First(); - while (node) - { - wxShape *constrainedObject = (wxShape *)node->Data(); - - double width2, height2; - constrainedObject->GetBoundingBoxMax(&width2, &height2); - - double x3 = (double)(x + (minWidth/2.0) + (width2/2.0) + m_xSpacing); - if (!Equals(x3, constrainedObject->GetX())) - { - changed = TRUE; - constrainedObject->Move(dc, x3, constrainedObject->GetY(), FALSE); - } - - node = node->Next(); - } - return changed; - - return FALSE; - } - case gyCONSTRAINT_ABOVE: - { - bool changed = FALSE; - - wxNode *node = m_constrainedObjects.First(); - while (node) - { - wxShape *constrainedObject = (wxShape *)node->Data(); - - double width2, height2; - constrainedObject->GetBoundingBoxMax(&width2, &height2); - - double y3 = (double)(y - (minHeight/2.0) - (height2/2.0) - m_ySpacing); - if (!Equals(y3, constrainedObject->GetY())) - { - changed = TRUE; - constrainedObject->Move(dc, constrainedObject->GetX(), y3, FALSE); - } - - node = node->Next(); - } - return changed; - } - case gyCONSTRAINT_BELOW: - { - bool changed = FALSE; - - wxNode *node = m_constrainedObjects.First(); - while (node) - { - wxShape *constrainedObject = (wxShape *)node->Data(); - - double width2, height2; - constrainedObject->GetBoundingBoxMax(&width2, &height2); - - double y3 = (double)(y + (minHeight/2.0) + (height2/2.0) + m_ySpacing); - if (!Equals(y3, constrainedObject->GetY())) - { - changed = TRUE; - constrainedObject->Move(dc, constrainedObject->GetX(), y3, FALSE); - } - - node = node->Next(); - } - return changed; - } - case gyCONSTRAINT_ALIGNED_LEFT: - { - bool changed = FALSE; - - wxNode *node = m_constrainedObjects.First(); - while (node) - { - wxShape *constrainedObject = (wxShape *)node->Data(); - - double width2, height2; - constrainedObject->GetBoundingBoxMax(&width2, &height2); - - double x3 = (double)(x - (minWidth/2.0) + (width2/2.0) + m_xSpacing); - if (!Equals(x3, constrainedObject->GetX())) - { - changed = TRUE; - constrainedObject->Move(dc, x3, constrainedObject->GetY(), FALSE); - } - - node = node->Next(); - } - return changed; - } - case gyCONSTRAINT_ALIGNED_RIGHT: - { - bool changed = FALSE; - - wxNode *node = m_constrainedObjects.First(); - while (node) - { - wxShape *constrainedObject = (wxShape *)node->Data(); - - double width2, height2; - constrainedObject->GetBoundingBoxMax(&width2, &height2); - - double x3 = (double)(x + (minWidth/2.0) - (width2/2.0) - m_xSpacing); - if (!Equals(x3, constrainedObject->GetX())) - { - changed = TRUE; - constrainedObject->Move(dc, x3, constrainedObject->GetY(), FALSE); - } - - node = node->Next(); - } - return changed; - - return FALSE; - } - case gyCONSTRAINT_ALIGNED_TOP: - { - bool changed = FALSE; - - wxNode *node = m_constrainedObjects.First(); - while (node) - { - wxShape *constrainedObject = (wxShape *)node->Data(); - - double width2, height2; - constrainedObject->GetBoundingBoxMax(&width2, &height2); - - double y3 = (double)(y - (minHeight/2.0) + (height2/2.0) + m_ySpacing); - if (!Equals(y3, constrainedObject->GetY())) - { - changed = TRUE; - constrainedObject->Move(dc, constrainedObject->GetX(), y3, FALSE); - } - - node = node->Next(); - } - return changed; - } - case gyCONSTRAINT_ALIGNED_BOTTOM: - { - bool changed = FALSE; - - wxNode *node = m_constrainedObjects.First(); - while (node) - { - wxShape *constrainedObject = (wxShape *)node->Data(); - - double width2, height2; - constrainedObject->GetBoundingBoxMax(&width2, &height2); - - double y3 = (double)(y + (minHeight/2.0) - (height2/2.0) - m_ySpacing); - if (!Equals(y3, constrainedObject->GetY())) - { - changed = TRUE; - constrainedObject->Move(dc, constrainedObject->GetX(), y3, FALSE); - } - - node = node->Next(); - } - return changed; - } - case gyCONSTRAINT_MIDALIGNED_LEFT: - { - bool changed = FALSE; - - wxNode *node = m_constrainedObjects.First(); - while (node) - { - wxShape *constrainedObject = (wxShape *)node->Data(); - - double x3 = (double)(x - (minWidth/2.0)); - if (!Equals(x3, constrainedObject->GetX())) - { - changed = TRUE; - constrainedObject->Move(dc, x3, constrainedObject->GetY(), FALSE); - } - - node = node->Next(); - } - return changed; - } - case gyCONSTRAINT_MIDALIGNED_RIGHT: - { - bool changed = FALSE; - - wxNode *node = m_constrainedObjects.First(); - while (node) - { - wxShape *constrainedObject = (wxShape *)node->Data(); - - double x3 = (double)(x + (minWidth/2.0)); - if (!Equals(x3, constrainedObject->GetX())) - { - changed = TRUE; - constrainedObject->Move(dc, x3, constrainedObject->GetY(), FALSE); - } - - node = node->Next(); - } - return changed; - - return FALSE; - } - case gyCONSTRAINT_MIDALIGNED_TOP: - { - bool changed = FALSE; - - wxNode *node = m_constrainedObjects.First(); - while (node) - { - wxShape *constrainedObject = (wxShape *)node->Data(); - - double y3 = (double)(y - (minHeight/2.0)); - if (!Equals(y3, constrainedObject->GetY())) - { - changed = TRUE; - constrainedObject->Move(dc, constrainedObject->GetX(), y3, FALSE); - } - - node = node->Next(); - } - return changed; - } - case gyCONSTRAINT_MIDALIGNED_BOTTOM: - { - bool changed = FALSE; - - wxNode *node = m_constrainedObjects.First(); - while (node) - { - wxShape *constrainedObject = (wxShape *)node->Data(); - - double y3 = (double)(y + (minHeight/2.0)); - if (!Equals(y3, constrainedObject->GetY())) - { - changed = TRUE; - constrainedObject->Move(dc, constrainedObject->GetX(), y3, FALSE); - } - - node = node->Next(); - } - return changed; - } - - default: - return FALSE; - } - return FALSE; -} - diff --git a/utils/ogl/src/constrnt.h b/utils/ogl/src/constrnt.h deleted file mode 100644 index 812aca19a9..0000000000 --- a/utils/ogl/src/constrnt.h +++ /dev/null @@ -1,87 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: constrnt.h -// Purpose: OGL constraint definitions -// Author: Julian Smart -// Modified by: -// Created: 12/07/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _OGL_CONSTRNT_H_ -#define _OGL_CONSTRNT_H_ - -#ifdef __GNUG__ -#pragma interface "constrnt.h" -#endif - -/* - * OGL Constraints - * - */ - -class wxOGLConstraintType: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxOGLConstraintType) -public: - wxOGLConstraintType(int type = 0, const wxString& name = "", const wxString& phrase = ""); - ~wxOGLConstraintType(); - -public: - int m_type; // E.g. gyCONSTRAINT_CENTRED_VERTICALLY - wxString m_name; // E.g. "Centre vertically" - wxString m_phrase; // E.g. "centred vertically with respect to", "left of" - -}; - -extern wxList* wxOGLConstraintTypes; - -#define gyCONSTRAINT_CENTRED_VERTICALLY 1 -#define gyCONSTRAINT_CENTRED_HORIZONTALLY 2 -#define gyCONSTRAINT_CENTRED_BOTH 3 -#define gyCONSTRAINT_LEFT_OF 4 -#define gyCONSTRAINT_RIGHT_OF 5 -#define gyCONSTRAINT_ABOVE 6 -#define gyCONSTRAINT_BELOW 7 -#define gyCONSTRAINT_ALIGNED_TOP 8 -#define gyCONSTRAINT_ALIGNED_BOTTOM 9 -#define gyCONSTRAINT_ALIGNED_LEFT 10 -#define gyCONSTRAINT_ALIGNED_RIGHT 11 - -// Like aligned, but with the objects centred on the respective edge -// of the reference object. -#define gyCONSTRAINT_MIDALIGNED_TOP 12 -#define gyCONSTRAINT_MIDALIGNED_BOTTOM 13 -#define gyCONSTRAINT_MIDALIGNED_LEFT 14 -#define gyCONSTRAINT_MIDALIGNED_RIGHT 15 - -class wxOGLConstraint: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxOGLConstraint) - public: - wxOGLConstraint() { m_xSpacing = 0.0; m_ySpacing = 0.0; m_constraintType = 0; m_constraintName = ""; m_constraintId = 0; - m_constrainingObject = NULL; } - wxOGLConstraint(int type, wxShape *constraining, wxList& constrained); - ~wxOGLConstraint(); - - // Returns TRUE if anything changed - bool Evaluate(); - inline void SetSpacing(double x, double y) { m_xSpacing = x; m_ySpacing = y; }; - bool Equals(double a, double b); - - double m_xSpacing; - double m_ySpacing; - int m_constraintType; - wxString m_constraintName; - long m_constraintId; - wxShape* m_constrainingObject; - wxList m_constrainedObjects; - -}; - -void OGLInitializeConstraintTypes(); -void OGLCleanUpConstraintTypes(); - -#endif - // _OGL_CONSTRNT_H_ diff --git a/utils/ogl/src/divided.cpp b/utils/ogl/src/divided.cpp deleted file mode 100644 index ba8cd615ac..0000000000 --- a/utils/ogl/src/divided.cpp +++ /dev/null @@ -1,720 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: divided.cpp -// Purpose: wxDividedShape class -// Author: Julian Smart -// Modified by: -// Created: 12/07/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "divided.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include -#endif - -#include - -#include "basic.h" -#include "basicp.h" -#include "canvas.h" -#include "divided.h" -#include "lines.h" -#include "misc.h" - -class wxDividedShapeControlPoint: public wxControlPoint -{ - DECLARE_DYNAMIC_CLASS(wxDividedShapeControlPoint) - private: - int regionId; - public: - wxDividedShapeControlPoint() { regionId = 0; } - wxDividedShapeControlPoint(wxShapeCanvas *the_canvas, wxShape *object, int region, - double size, double the_xoffset, double the_yoffset, int the_type); - ~wxDividedShapeControlPoint(); - - void OnDragLeft(bool draw, double x, double y, int keys=0, int attachment = 0); - void OnBeginDragLeft(double x, double y, int keys=0, int attachment = 0); - void OnEndDragLeft(double x, double y, int keys=0, int attachment = 0); -}; - -IMPLEMENT_DYNAMIC_CLASS(wxDividedShapeControlPoint, wxControlPoint) - -/* - * Divided object - * - */ - -IMPLEMENT_DYNAMIC_CLASS(wxDividedShape, wxRectangleShape) - -wxDividedShape::wxDividedShape(double w, double h): wxRectangleShape(w, h) -{ - ClearRegions(); -} - -wxDividedShape::~wxDividedShape() -{ -} - -void wxDividedShape::OnDraw(wxDC& dc) -{ - wxRectangleShape::OnDraw(dc); -} - -void wxDividedShape::OnDrawContents(wxDC& dc) -{ - double defaultProportion = (double)(GetRegions().Number() > 0 ? (1.0/((double)(GetRegions().Number()))) : 0.0); - double currentY = (double)(m_ypos - (m_height / 2.0)); - double maxY = (double)(m_ypos + (m_height / 2.0)); - - double leftX = (double)(m_xpos - (m_width / 2.0)); - double rightX = (double)(m_xpos + (m_width / 2.0)); - - if (m_pen) dc.SetPen(* m_pen); - - if (m_textColour) dc.SetTextForeground(* m_textColour); - -#ifdef __WXMSW__ - // For efficiency, don't do this under X - doesn't make - // any visible difference for our purposes. - if (m_brush) - dc.SetTextBackground(m_brush->GetColour()); -#endif -/* - if (!formatted) - { - FormatRegionText(); - formatted = TRUE; - } -*/ - if (GetDisableLabel()) return; - - double xMargin = 2; - double yMargin = 2; - dc.SetBackgroundMode(wxTRANSPARENT); - - wxNode *node = GetRegions().First(); - while (node) - { - wxShapeRegion *region = (wxShapeRegion *)node->Data(); - dc.SetFont(* region->GetFont()); - dc.SetTextForeground(* region->GetActualColourObject()); - - double proportion = - region->m_regionProportionY < 0.0 ? defaultProportion : region->m_regionProportionY; - - double y = currentY + m_height*proportion; - double actualY = maxY < y ? maxY : y; - - double centreX = m_xpos; - double centreY = (double)(currentY + (actualY - currentY)/2.0); - - oglDrawFormattedText(dc, ®ion->m_formattedText, - (double)(centreX), (double)(centreY), (double)(m_width-2*xMargin), (double)(actualY - currentY - 2*yMargin), - region->m_formatMode); - if ((y <= maxY) && (node->Next())) - { - wxPen *regionPen = region->GetActualPen(); - if (regionPen) - { - dc.SetPen(* regionPen); - dc.DrawLine(WXROUND(leftX), WXROUND(y), WXROUND(rightX), WXROUND(y)); - } - } - - currentY = actualY; - - node = node->Next(); - } -} - -void wxDividedShape::SetSize(double w, double h, bool recursive) -{ - SetAttachmentSize(w, h); - m_width = w; - m_height = h; - SetRegionSizes(); -} - -void wxDividedShape::SetRegionSizes() -{ - if (GetRegions().Number() == 0) - return; - - double defaultProportion = (double)(GetRegions().Number() > 0 ? (1.0/((double)(GetRegions().Number()))) : 0.0); - double currentY = (double)(m_ypos - (m_height / 2.0)); - double maxY = (double)(m_ypos + (m_height / 2.0)); - -// double leftX = (double)(m_xpos - (m_width / 2.0)); -// double rightX = (double)(m_xpos + (m_width / 2.0)); - - wxNode *node = GetRegions().First(); - while (node) - { - wxShapeRegion *region = (wxShapeRegion *)node->Data(); - double proportion = - region->m_regionProportionY <= 0.0 ? defaultProportion : region->m_regionProportionY; - - double sizeY = (double)proportion*m_height; - double y = currentY + sizeY; - double actualY = maxY < y ? maxY : y; - - double centreY = (double)(currentY + (actualY - currentY)/2.0); - - region->SetSize(m_width, sizeY); - region->SetPosition(0.0, (double)(centreY - m_ypos)); - currentY = actualY; - node = node->Next(); - } -} - -// Attachment points correspond to regions in the divided box -bool wxDividedShape::GetAttachmentPosition(int attachment, double *x, double *y, int nth, int no_arcs, - wxLineShape *line) -{ - int totalNumberAttachments = (GetRegions().Number() * 2) + 2; - if ((GetAttachmentMode() == ATTACHMENT_MODE_NONE) || (attachment >= totalNumberAttachments)) - { - return wxShape::GetAttachmentPosition(attachment, x, y, nth, no_arcs); - } - - int n = GetRegions().Number(); - bool isEnd = (line && line->IsEnd(this)); - - double left = (double)(m_xpos - m_width/2.0); - double right = (double)(m_xpos + m_width/2.0); - double top = (double)(m_ypos - m_height/2.0); - double bottom = (double)(m_ypos + m_height/2.0); - - // Zero is top, n+1 is bottom. - if (attachment == 0) - { - *y = top; - if (m_spaceAttachments) - { - if (line && (line->GetAlignmentType(isEnd) == LINE_ALIGNMENT_TO_NEXT_HANDLE)) - { - // Align line according to the next handle along - wxRealPoint *point = line->GetNextControlPoint(this); - if (point->x < left) - *x = left; - else if (point->x > right) - *x = right; - else - *x = point->x; - } - else - *x = left + (nth + 1)*m_width/(no_arcs + 1); - } - else - *x = m_xpos; - } - else if (attachment == (n+1)) - { - *y = bottom; - if (m_spaceAttachments) - { - if (line && (line->GetAlignmentType(isEnd) == LINE_ALIGNMENT_TO_NEXT_HANDLE)) - { - // Align line according to the next handle along - wxRealPoint *point = line->GetNextControlPoint(this); - if (point->x < left) - *x = left; - else if (point->x > right) - *x = right; - else - *x = point->x; - } - else - *x = left + (nth + 1)*m_width/(no_arcs + 1); - } - else - *x = m_xpos; - } - // Left or right. - else - { - int i = 0; - bool isLeft = FALSE; - if (attachment < (n+1)) - { - i = attachment-1; - isLeft = FALSE; - } - else - { - i = (totalNumberAttachments - attachment - 1); - isLeft = TRUE; - } - wxNode *node = GetRegions().Nth(i); - if (node) - { - wxShapeRegion *region = (wxShapeRegion *)node->Data(); - - if (isLeft) - *x = left; - else - *x = right; - - // Calculate top and bottom of region - top = (double)((m_ypos + region->m_y) - (region->m_height/2.0)); - bottom = (double)((m_ypos + region->m_y) + (region->m_height/2.0)); - - // Assuming we can trust the absolute size and - // position of these regions... - if (m_spaceAttachments) - { - if (line && (line->GetAlignmentType(isEnd) == LINE_ALIGNMENT_TO_NEXT_HANDLE)) - { - // Align line according to the next handle along - wxRealPoint *point = line->GetNextControlPoint(this); - if (point->y < bottom) - *y = bottom; - else if (point->y > top) - *y = top; - else - *y = point->y; - } - else -// *y = (double)(((m_ypos + region->m_y) - (region->m_height/2.0)) + (nth + 1)*region->m_height/(no_arcs+1)); - *y = (double)(top + (nth + 1)*region->m_height/(no_arcs+1)); - } - else - *y = (double)(m_ypos + region->m_y); - } - else - { - *x = m_xpos; - *y = m_ypos; - return FALSE; - } - } - return TRUE; -} - -int wxDividedShape::GetNumberOfAttachments() const -{ - // There are two attachments for each region (left and right), - // plus one on the top and one on the bottom. - int n = (GetRegions().Number() * 2) + 2; - - int maxN = n - 1; - wxNode *node = m_attachmentPoints.First(); - while (node) - { - wxAttachmentPoint *point = (wxAttachmentPoint *)node->Data(); - if (point->m_id > maxN) - maxN = point->m_id; - node = node->Next(); - } - return maxN + 1; -} - -bool wxDividedShape::AttachmentIsValid(int attachment) -{ - int totalNumberAttachments = (GetRegions().Number() * 2) + 2; - if (attachment >= totalNumberAttachments) - { - return wxShape::AttachmentIsValid(attachment); - } - else if (attachment >= 0) - return TRUE; - else - return FALSE; -} - -void wxDividedShape::Copy(wxShape& copy) -{ - wxRectangleShape::Copy(copy); -} - -// Region operations - -void wxDividedShape::MakeControlPoints() -{ - wxRectangleShape::MakeControlPoints(); - - MakeMandatoryControlPoints(); -} - -void wxDividedShape::MakeMandatoryControlPoints() -{ - double currentY = (double)(GetY() - (m_height / 2.0)); - double maxY = (double)(GetY() + (m_height / 2.0)); - - wxNode *node = GetRegions().First(); - int i = 0; - while (node) - { - wxShapeRegion *region = (wxShapeRegion *)node->Data(); - - double proportion = region->m_regionProportionY; - - double y = currentY + m_height*proportion; - double actualY = (double)(maxY < y ? maxY : y); - - if (node->Next()) - { - wxDividedShapeControlPoint *controlPoint = - new wxDividedShapeControlPoint(m_canvas, this, i, CONTROL_POINT_SIZE, 0.0, (double)(actualY - GetY()), 0); - m_canvas->AddShape(controlPoint); - m_controlPoints.Append(controlPoint); - } - currentY = actualY; - i ++; - node = node->Next(); - } -} - -void wxDividedShape::ResetControlPoints() -{ - // May only have the region handles, (n - 1) of them. - if (m_controlPoints.Number() > (GetRegions().Number() - 1)) - wxRectangleShape::ResetControlPoints(); - - ResetMandatoryControlPoints(); -} - -void wxDividedShape::ResetMandatoryControlPoints() -{ - double currentY = (double)(GetY() - (m_height / 2.0)); - double maxY = (double)(GetY() + (m_height / 2.0)); - - wxNode *node = m_controlPoints.First(); - int i = 0; - while (node) - { - wxControlPoint *controlPoint = (wxControlPoint *)node->Data(); - if (controlPoint->IsKindOf(CLASSINFO(wxDividedShapeControlPoint))) - { - wxNode *node1 = GetRegions().Nth(i); - wxShapeRegion *region = (wxShapeRegion *)node1->Data(); - - double proportion = region->m_regionProportionY; - - double y = currentY + m_height*proportion; - double actualY = (double)(maxY < y ? maxY : y); - - controlPoint->m_xoffset = 0.0; - controlPoint->m_yoffset = (double)(actualY - GetY()); - currentY = actualY; - i ++; - } - node = node->Next(); - } -} - -#ifdef PROLOGIO -void wxDividedShape::WriteAttributes(wxExpr *clause) -{ - wxRectangleShape::WriteAttributes(clause); -} - -void wxDividedShape::ReadAttributes(wxExpr *clause) -{ - wxRectangleShape::ReadAttributes(clause); -} -#endif - -/* - * Edit the division colour/style - * - */ - -void wxDividedShape::EditRegions() -{ - wxMessageBox("EditRegions() is unimplemented.", "OGL", wxOK); - - // TODO -#if 0 - if (GetRegions().Number() < 2) - return; - - wxBeginBusyCursor(); - - GraphicsForm *form = new GraphicsForm("Divided nodes"); - // Need an array to store all the style strings, - // since they need to be converted to integers - char **styleStrings = new char *[GetRegions().Number()]; - for (int j = 0; j < GetRegions().Number(); j++) - styleStrings[j] = NULL; - - int i = 0; - wxNode *node = GetRegions().First(); - while (node && node->Next()) - { - wxShapeRegion *region = (wxShapeRegion *)node->Data(); - char buf[50]; - sprintf(buf, "Region %d", (i+1)); - form->Add(wxMakeFormMessage(buf)); - form->Add(wxMakeFormNewLine()); - - form->Add(wxMakeFormString("Colour", ®ion->penColour, wxFORM_CHOICE, - new wxList(wxMakeConstraintStrings( - "Invisible" , - "BLACK" , - "BLUE" , - "BROWN" , - "CORAL" , - "CYAN" , - "DARK GREY" , - "DARK GREEN" , - "DIM GREY" , - "GREY" , - "GREEN" , - "LIGHT BLUE" , - "LIGHT GREY" , - "MAGENTA" , - "MAROON" , - "NAVY" , - "ORANGE" , - "PURPLE" , - "RED" , - "TURQUOISE" , - "VIOLET" , - "WHITE" , - "YELLOW" , - NULL), - NULL), NULL, wxVERTICAL, 150)); - - char *styleString = NULL; - switch (region->penStyle) - { - case wxSHORT_DASH: - styleString = "Short Dash"; - break; - case wxLONG_DASH: - styleString = "Long Dash"; - break; - case wxDOT: - styleString = "Dot"; - break; - case wxDOT_DASH: - styleString = "Dot Dash"; - break; - case wxSOLID: - default: - styleString = "Solid"; - break; - } - styleStrings[i] = copystring(styleString); - form->Add(wxMakeFormString("Style", &(styleStrings[i]), wxFORM_CHOICE, - new wxList(wxMakeConstraintStrings( - "Solid" , - "Short Dash" , - "Long Dash" , - "Dot" , - "Dot Dash" , - NULL), - NULL), NULL, wxVERTICAL, 100)); - node = node->Next(); - i ++; - if (node && node->Next()) - form->Add(wxMakeFormNewLine()); - } - wxDialogBox *dialog = new wxDialogBox(m_canvas->GetParent(), "Divided object properties", 10, 10, 500, 500); - if (GraphicsLabelFont) - dialog->SetLabelFont(GraphicsLabelFont); - if (GraphicsButtonFont) - dialog->SetButtonFont(GraphicsButtonFont); - form->AssociatePanel(dialog); - form->dialog = dialog; - - dialog->Fit(); - dialog->Centre(wxBOTH); - - wxEndBusyCursor(); - - dialog->Show(TRUE); - - node = GetRegions().First(); - i = 0; - while (node) - { - wxShapeRegion *region = (wxShapeRegion *)node->Data(); - - if (styleStrings[i]) - { - if (strcmp(styleStrings[i], "Solid") == 0) - region->penStyle = wxSOLID; - else if (strcmp(styleStrings[i], "Dot") == 0) - region->penStyle = wxDOT; - else if (strcmp(styleStrings[i], "Short Dash") == 0) - region->penStyle = wxSHORT_DASH; - else if (strcmp(styleStrings[i], "Long Dash") == 0) - region->penStyle = wxLONG_DASH; - else if (strcmp(styleStrings[i], "Dot Dash") == 0) - region->penStyle = wxDOT_DASH; - delete[] styleStrings[i]; - } - region->m_actualPenObject = NULL; - node = node->Next(); - i ++; - } - delete[] styleStrings; - Draw(dc); -#endif -} - -void wxDividedShape::OnRightClick(double x, double y, int keys, int attachment) -{ - if (keys & KEY_CTRL) - { - EditRegions(); - } - else - { - wxRectangleShape::OnRightClick(x, y, keys, attachment); - } -} - -wxDividedShapeControlPoint::wxDividedShapeControlPoint(wxShapeCanvas *the_canvas, wxShape *object, - int region, double size, double the_m_xoffset, double the_m_yoffset, int the_type): - wxControlPoint(the_canvas, object, size, the_m_xoffset, the_m_yoffset, the_type) -{ - regionId = region; -} - -wxDividedShapeControlPoint::~wxDividedShapeControlPoint() -{ -} - -// Implement resizing of divided object division -void wxDividedShapeControlPoint::OnDragLeft(bool draw, double x, double y, int keys, int attachment) -{ - wxClientDC dc(GetCanvas()); - GetCanvas()->PrepareDC(dc); - - dc.SetLogicalFunction(wxXOR); - wxPen dottedPen(wxColour(0, 0, 0), 1, wxDOT); - dc.SetPen(dottedPen); - dc.SetBrush((* wxTRANSPARENT_BRUSH)); - - wxDividedShape *dividedObject = (wxDividedShape *)m_shape; - double x1 = (double)(dividedObject->GetX() - (dividedObject->GetWidth()/2.0)); - double y1 = y; - double x2 = (double)(dividedObject->GetX() + (dividedObject->GetWidth()/2.0)); - double y2 = y; - dc.DrawLine(WXROUND(x1), WXROUND(y1), WXROUND(x2), WXROUND(y2)); -} - -void wxDividedShapeControlPoint::OnBeginDragLeft(double x, double y, int keys, int attachment) -{ - wxClientDC dc(GetCanvas()); - GetCanvas()->PrepareDC(dc); - - wxDividedShape *dividedObject = (wxDividedShape *)m_shape; - dc.SetLogicalFunction(wxXOR); - wxPen dottedPen(wxColour(0, 0, 0), 1, wxDOT); - dc.SetPen(dottedPen); - dc.SetBrush((* wxTRANSPARENT_BRUSH)); - - double x1 = (double)(dividedObject->GetX() - (dividedObject->GetWidth()/2.0)); - double y1 = y; - double x2 = (double)(dividedObject->GetX() + (dividedObject->GetWidth()/2.0)); - double y2 = y; - dc.DrawLine(WXROUND(x1), WXROUND(y1), WXROUND(x2), WXROUND(y2)); - m_canvas->CaptureMouse(); -} - -void wxDividedShapeControlPoint::OnEndDragLeft(double x, double y, int keys, int attachment) -{ - wxClientDC dc(GetCanvas()); - GetCanvas()->PrepareDC(dc); - - wxDividedShape *dividedObject = (wxDividedShape *)m_shape; - wxNode *node = dividedObject->GetRegions().Nth(regionId); - if (!node) - return; - - wxShapeRegion *thisRegion = (wxShapeRegion *)node->Data(); - wxShapeRegion *nextRegion = NULL; // Region below this one - - dc.SetLogicalFunction(wxCOPY); - - m_canvas->ReleaseMouse(); - - // Find the old top and bottom of this region, - // and calculate the new proportion for this region - // if legal. - - double currentY = (double)(dividedObject->GetY() - (dividedObject->GetHeight() / 2.0)); - double maxY = (double)(dividedObject->GetY() + (dividedObject->GetHeight() / 2.0)); - - // Save values - double thisRegionTop = 0.0; - double thisRegionBottom = 0.0; - double nextRegionBottom = 0.0; - - node = dividedObject->GetRegions().First(); - while (node) - { - wxShapeRegion *region = (wxShapeRegion *)node->Data(); - - double proportion = region->m_regionProportionY; - double yy = currentY + (dividedObject->GetHeight()*proportion); - double actualY = (double)(maxY < yy ? maxY : yy); - - if (region == thisRegion) - { - thisRegionTop = currentY; - thisRegionBottom = actualY; - if (node->Next()) - nextRegion = (wxShapeRegion *)node->Next()->Data(); - } - if (region == nextRegion) - { - nextRegionBottom = actualY; - } - - currentY = actualY; - node = node->Next(); - } - if (!nextRegion) - return; - - // Check that we haven't gone above this region or below - // next region. - if ((y <= thisRegionTop) || (y >= nextRegionBottom)) - return; - - dividedObject->EraseLinks(dc); - - // Now calculate the new proportions of this region and the next region. - double thisProportion = (double)((y - thisRegionTop)/dividedObject->GetHeight()); - double nextProportion = (double)((nextRegionBottom - y)/dividedObject->GetHeight()); - thisRegion->SetProportions(0.0, thisProportion); - nextRegion->SetProportions(0.0, nextProportion); - m_yoffset = (double)(y - dividedObject->GetY()); - - // Now reformat text - int i = 0; - node = dividedObject->GetRegions().First(); - while (node) - { - wxShapeRegion *region = (wxShapeRegion *)node->Data(); - if (region->GetText()) - { - char *s = copystring(region->GetText()); - dividedObject->FormatText(dc, s, i); - delete[] s; - } - node = node->Next(); - i++; - } - dividedObject->SetRegionSizes(); - dividedObject->Draw(dc); - dividedObject->GetEventHandler()->OnMoveLinks(dc); -} - diff --git a/utils/ogl/src/divided.h b/utils/ogl/src/divided.h deleted file mode 100644 index f8404637df..0000000000 --- a/utils/ogl/src/divided.h +++ /dev/null @@ -1,75 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: divided.h -// Purpose: wxDividedShape -// Author: Julian Smart -// Modified by: -// Created: 12/07/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _OGL_DIVIDED_H_ -#define _OGL_DIVIDED_H_ - -#ifdef __GNUG__ -#pragma interface "basic.h" -#endif - -/* - * Definition of a region - * - */ - -/* - * Box divided into horizontal regions - * - */ - -extern wxFont *g_oglNormalFont; -class wxDividedShape: public wxRectangleShape -{ - DECLARE_DYNAMIC_CLASS(wxDividedShape) - - public: - wxDividedShape(double w = 0.0, double h = 0.0); - ~wxDividedShape(); - - void OnDraw(wxDC& dc); - void OnDrawContents(wxDC& dc); - - void SetSize(double w, double h, bool recursive = TRUE); - - void MakeControlPoints(); - void ResetControlPoints(); - - void MakeMandatoryControlPoints(); - void ResetMandatoryControlPoints(); - -#ifdef PROLOGIO - void WriteAttributes(wxExpr *clause); - void ReadAttributes(wxExpr *clause); -#endif - - void Copy(wxShape ©); - - // Set all region sizes according to proportions and - // this object total size - void SetRegionSizes(); - - // Edit region colours/styles - void EditRegions(); - - // Attachment points correspond to regions in the divided box - bool GetAttachmentPosition(int attachment, double *x, double *y, - int nth = 0, int no_arcs = 1, wxLineShape *line = NULL); - bool AttachmentIsValid(int attachment); - int GetNumberOfAttachments() const; - - // Invoke editor on CTRL-right click - void OnRightClick(double x, double y, int keys = 0, int attachment = 0); -}; - -#endif - // _OGL_DIVIDED_H_ - diff --git a/utils/ogl/src/drawn.cpp b/utils/ogl/src/drawn.cpp deleted file mode 100644 index e473681512..0000000000 --- a/utils/ogl/src/drawn.cpp +++ /dev/null @@ -1,2489 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: drawn.cpp -// Purpose: wxDrawnShape -// Author: Julian Smart -// Modified by: -// Created: 12/07/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "drawn.h" -#pragma implementation "drawnp.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include -#endif - -#include - -#include "basic.h" -#include "basicp.h" -#include "canvas.h" -#include "mfutils.h" -#include "drawn.h" -#include "drawnp.h" -#include "misc.h" - -static void IntToHex(unsigned int dec, char *buf); -static unsigned long HexToInt(char *buf); -extern char *oglBuffer; - -#define gyTYPE_PEN 40 -#define gyTYPE_BRUSH 41 -#define gyTYPE_FONT 42 - -/* - * Drawn object - * - */ - -IMPLEMENT_DYNAMIC_CLASS(wxDrawnShape, wxRectangleShape) - -wxDrawnShape::wxDrawnShape():wxRectangleShape(100.0, 50.0) -{ - m_saveToFile = TRUE; - m_currentAngle = oglDRAWN_ANGLE_0; -} - -wxDrawnShape::~wxDrawnShape() -{ -} - -void wxDrawnShape::OnDraw(wxDC& dc) -{ - // Pass pen and brush in case we have force outline - // and fill colours - if (m_shadowMode != SHADOW_NONE) - { - if (m_shadowBrush) - m_metafiles[m_currentAngle].m_fillBrush = m_shadowBrush; - m_metafiles[m_currentAngle].m_outlinePen = g_oglTransparentPen; - m_metafiles[m_currentAngle].Draw(dc, m_xpos + m_shadowOffsetX, m_ypos + m_shadowOffsetY); - } - - m_metafiles[m_currentAngle].m_outlinePen = m_pen; - m_metafiles[m_currentAngle].m_fillBrush = m_brush; - m_metafiles[m_currentAngle].Draw(dc, m_xpos, m_ypos); -} - -void wxDrawnShape::SetSize(double w, double h, bool recursive) -{ - SetAttachmentSize(w, h); - - double scaleX; - double scaleY; - if (GetWidth() == 0.0) - scaleX = 1.0; - else scaleX = w/GetWidth(); - if (GetHeight() == 0.0) - scaleY = 1.0; - else scaleY = h/GetHeight(); - - int i = 0; - for (i = 0; i < 4; i++) - { - if (m_metafiles[i].IsValid()) - m_metafiles[i].Scale(scaleX, scaleY); - } - m_width = w; - m_height = h; - SetDefaultRegionSize(); -} - -void wxDrawnShape::Scale(double sx, double sy) -{ - int i; - for (i = 0; i < 4; i++) - { - if (m_metafiles[i].IsValid()) - { - m_metafiles[i].Scale(sx, sy); - m_metafiles[i].CalculateSize(this); - } - } -} - -void wxDrawnShape::Translate(double x, double y) -{ - int i; - for (i = 0; i < 4; i++) - { - if (m_metafiles[i].IsValid()) - { - m_metafiles[i].Translate(x, y); - m_metafiles[i].CalculateSize(this); - } - } -} - -// theta is absolute rotation from the zero position -void wxDrawnShape::Rotate(double x, double y, double theta) -{ - m_currentAngle = DetermineMetaFile(theta); - - if (m_currentAngle == 0) - { - // Rotate metafile - if (!m_metafiles[0].GetRotateable()) - return; - - m_metafiles[0].Rotate(x, y, theta); - } - - double actualTheta = theta-m_rotation; - - // Rotate attachment points - double sinTheta = (double)sin(actualTheta); - double cosTheta = (double)cos(actualTheta); - wxNode *node = m_attachmentPoints.First(); - while (node) - { - wxAttachmentPoint *point = (wxAttachmentPoint *)node->Data(); - double x1 = point->m_x; - double y1 = point->m_y; - point->m_x = x1*cosTheta - y1*sinTheta + x*(1.0 - cosTheta) + y*sinTheta; - point->m_y = x1*sinTheta + y1*cosTheta + y*(1.0 - cosTheta) + x*sinTheta; - node = node->Next(); - } - m_rotation = theta; - - m_metafiles[m_currentAngle].CalculateSize(this); -} - -// Which metafile do we use now? Based on current rotation and validity -// of metafiles. - -int wxDrawnShape::DetermineMetaFile(double rotation) -{ - double tolerance = 0.0001; - const double pi = 3.1415926535897932384626433832795 ; - double angle1 = 0.0; - double angle2 = pi/2.0; - double angle3 = pi; - double angle4 = 3.0*pi/2.0; - - int whichMetafile = 0; - - if (oglRoughlyEqual(rotation, angle1, tolerance)) - { - whichMetafile = 0; - } - else if (oglRoughlyEqual(rotation, angle2, tolerance)) - { - whichMetafile = 1; - } - else if (oglRoughlyEqual(rotation, angle3, tolerance)) - { - whichMetafile = 2; - } - else if (oglRoughlyEqual(rotation, angle4, tolerance)) - { - whichMetafile = 3; - } - - if ((whichMetafile > 0) && !m_metafiles[whichMetafile].IsValid()) - whichMetafile = 0; - - return whichMetafile; -} - -void wxDrawnShape::OnDrawOutline(wxDC& dc, double x, double y, double w, double h) -{ - if (m_metafiles[m_currentAngle].GetOutlineOp() != -1) - { - wxNode* node = m_metafiles[m_currentAngle].GetOps().Nth(m_metafiles[m_currentAngle].GetOutlineOp()); - wxASSERT (node != NULL); - wxDrawOp* op = (wxDrawOp*) node->Data(); - - if (op->OnDrawOutline(dc, x, y, w, h, m_width, m_height)) - return; - } - - // Default... just use a rectangle - wxRectangleShape::OnDrawOutline(dc, x, y, w, h); -} - -// Get the perimeter point using the special outline op, if there is one, -// otherwise use default wxRectangleShape scheme -bool wxDrawnShape::GetPerimeterPoint(double x1, double y1, - double x2, double y2, - double *x3, double *y3) -{ - if (m_metafiles[m_currentAngle].GetOutlineOp() != -1) - { - wxNode* node = m_metafiles[m_currentAngle].GetOps().Nth(m_metafiles[m_currentAngle].GetOutlineOp()); - wxASSERT (node != NULL); - wxDrawOp* op = (wxDrawOp*) node->Data(); - - if (op->GetPerimeterPoint(x1, y1, x2, y2, x3, y3, GetX(), GetY(), GetAttachmentMode())) - return TRUE; - } - - // Default... just use a rectangle - return wxRectangleShape::GetPerimeterPoint(x1, y1, x2, y2, x3, y3); -} - -#ifdef PROLOGIO -void wxDrawnShape::WriteAttributes(wxExpr *clause) -{ - wxRectangleShape::WriteAttributes(clause); - - clause->AddAttributeValue("current_angle", (long)m_currentAngle); - clause->AddAttributeValue("save_metafile", (long)m_saveToFile); - if (m_saveToFile) - { - int i = 0; - for (i = 0; i < 4; i++) - { - if (m_metafiles[i].IsValid()) - m_metafiles[i].WriteAttributes(clause, i); - } - } -} - -void wxDrawnShape::ReadAttributes(wxExpr *clause) -{ - wxRectangleShape::ReadAttributes(clause); - - int iVal = (int) m_saveToFile; - clause->GetAttributeValue("save_metafile", iVal); - clause->GetAttributeValue("current_angle", m_currentAngle); - m_saveToFile = (iVal != 0); - - if (m_saveToFile) - { - int i = 0; - for (i = 0; i < 4; i++) - { - m_metafiles[i].ReadAttributes(clause, i); - } - } -} -#endif - -// Does the copying for this object -void wxDrawnShape::Copy(wxShape& copy) -{ - wxRectangleShape::Copy(copy); - - wxASSERT( copy.IsKindOf(CLASSINFO(wxDrawnShape)) ) ; - - wxDrawnShape& drawnCopy = (wxDrawnShape&) copy; - - int i = 0; - for (i = 0; i < 4; i++) - { - m_metafiles[i].Copy(drawnCopy.m_metafiles[i]); - } - drawnCopy.m_saveToFile = m_saveToFile; - drawnCopy.m_currentAngle = m_currentAngle; -} - -bool wxDrawnShape::LoadFromMetaFile(char *filename) -{ - return m_metafiles[0].LoadFromMetaFile(filename, &m_width, &m_height); -} - -// Set of functions for drawing into a pseudo metafile. -// They use integers, but doubles are used internally for accuracy -// when scaling. - -void wxDrawnShape::DrawLine(const wxPoint& pt1, const wxPoint& pt2) -{ - m_metafiles[m_currentAngle].DrawLine(pt1, pt2); -} - -void wxDrawnShape::DrawRectangle(const wxRect& rect) -{ - m_metafiles[m_currentAngle].DrawRectangle(rect); -} - -void wxDrawnShape::DrawRoundedRectangle(const wxRect& rect, double radius) -{ - m_metafiles[m_currentAngle].DrawRoundedRectangle(rect, radius); -} - -void wxDrawnShape::DrawEllipse(const wxRect& rect) -{ - m_metafiles[m_currentAngle].DrawEllipse(rect); -} - -void wxDrawnShape::DrawArc(const wxPoint& centrePt, const wxPoint& startPt, const wxPoint& endPt) -{ - m_metafiles[m_currentAngle].DrawArc(centrePt, startPt, endPt); -} - -void wxDrawnShape::DrawEllipticArc(const wxRect& rect, double startAngle, double endAngle) -{ - m_metafiles[m_currentAngle].DrawEllipticArc(rect, startAngle, endAngle); -} - -void wxDrawnShape::DrawPoint(const wxPoint& pt) -{ - m_metafiles[m_currentAngle].DrawPoint(pt); -} - -void wxDrawnShape::DrawText(const wxString& text, const wxPoint& pt) -{ - m_metafiles[m_currentAngle].DrawText(text, pt); -} - -void wxDrawnShape::DrawLines(int n, wxPoint pts[]) -{ - m_metafiles[m_currentAngle].DrawLines(n, pts); -} - -void wxDrawnShape::DrawPolygon(int n, wxPoint pts[], int flags) -{ - if (flags & oglMETAFLAGS_ATTACHMENTS) - { - ClearAttachments(); - int i; - for (i = 0; i < n; i++) - m_attachmentPoints.Append(new wxAttachmentPoint(i, pts[i].x, pts[i].y)); - } - m_metafiles[m_currentAngle].DrawPolygon(n, pts, flags); -} - -void wxDrawnShape::DrawSpline(int n, wxPoint pts[]) -{ - m_metafiles[m_currentAngle].DrawSpline(n, pts); -} - -void wxDrawnShape::SetClippingRect(const wxRect& rect) -{ - m_metafiles[m_currentAngle].SetClippingRect(rect); -} - -void wxDrawnShape::DestroyClippingRect() -{ - m_metafiles[m_currentAngle].DestroyClippingRect(); -} - -void wxDrawnShape::SetDrawnPen(wxPen* pen, bool isOutline) -{ - m_metafiles[m_currentAngle].SetPen(pen, isOutline); -} - -void wxDrawnShape::SetDrawnBrush(wxBrush* brush, bool isFill) -{ - m_metafiles[m_currentAngle].SetBrush(brush, isFill); -} - -void wxDrawnShape::SetDrawnFont(wxFont* font) -{ - m_metafiles[m_currentAngle].SetFont(font); -} - -void wxDrawnShape::SetDrawnTextColour(const wxColour& colour) -{ - m_metafiles[m_currentAngle].SetTextColour(colour); -} - -void wxDrawnShape::SetDrawnBackgroundColour(const wxColour& colour) -{ - m_metafiles[m_currentAngle].SetBackgroundColour(colour); -} - -void wxDrawnShape::SetDrawnBackgroundMode(int mode) -{ - m_metafiles[m_currentAngle].SetBackgroundMode(mode); -} - - -/* - * Individual operations - * - */ - -/* - * Set font, brush, text colour - * - */ - -wxOpSetGDI::wxOpSetGDI(int theOp, wxPseudoMetaFile *theImage, int theGdiIndex, int theMode): - wxDrawOp(theOp) -{ - m_gdiIndex = theGdiIndex; - m_image = theImage; - m_mode = theMode; -} - -void wxOpSetGDI::Do(wxDC& dc, double xoffset, double yoffset) -{ - switch (m_op) - { - case DRAWOP_SET_PEN: - { - // Check for overriding this operation for outline - // colour - if (m_image->m_outlineColours.Member((wxObject *)m_gdiIndex)) - { - if (m_image->m_outlinePen) - dc.SetPen(* m_image->m_outlinePen); - } - else - { - wxNode *node = m_image->m_gdiObjects.Nth(m_gdiIndex); - if (node) - { - wxPen *pen = (wxPen *)node->Data(); - if (pen) - dc.SetPen(* pen); - } - } - break; - } - case DRAWOP_SET_BRUSH: - { - // Check for overriding this operation for outline or fill - // colour - if (m_image->m_outlineColours.Member((wxObject *)m_gdiIndex)) - { - // Need to construct a brush to match the outline pen's colour - if (m_image->m_outlinePen) - { - wxBrush *br = wxTheBrushList->FindOrCreateBrush(m_image->m_outlinePen->GetColour(), wxSOLID); - if (br) - dc.SetBrush(* br); - } - } - else if (m_image->m_fillColours.Member((wxObject *)m_gdiIndex)) - { - if (m_image->m_fillBrush) - { - dc.SetBrush(* m_image->m_fillBrush); - } - } - else - { - wxNode *node = m_image->m_gdiObjects.Nth(m_gdiIndex); - if (node) - { - wxBrush *brush = (wxBrush *)node->Data(); - if (brush) - dc.SetBrush(* brush); - } - } - break; - } - case DRAWOP_SET_FONT: - { - wxNode *node = m_image->m_gdiObjects.Nth(m_gdiIndex); - if (node) - { - wxFont *font = (wxFont *)node->Data(); - if (font) - dc.SetFont(* font); - } - break; - } - case DRAWOP_SET_TEXT_COLOUR: - { - wxColour col(m_r,m_g,m_b); - dc.SetTextForeground(col); - break; - } - case DRAWOP_SET_BK_COLOUR: - { - wxColour col(m_r,m_g,m_b); - dc.SetTextBackground(col); - break; - } - case DRAWOP_SET_BK_MODE: - { - dc.SetBackgroundMode(m_mode); - break; - } - default: - break; - } -} - -wxDrawOp *wxOpSetGDI::Copy(wxPseudoMetaFile *newImage) -{ - wxOpSetGDI *newOp = new wxOpSetGDI(m_op, newImage, m_gdiIndex, m_mode); - newOp->m_r = m_r; - newOp->m_g = m_g; - newOp->m_b = m_b; - return newOp; -} - -wxExpr *wxOpSetGDI::WriteExpr(wxPseudoMetaFile *image) -{ - wxExpr *expr = new wxExpr(wxExprList); - expr->Append(new wxExpr((long)m_op)); - switch (m_op) - { - case DRAWOP_SET_PEN: - case DRAWOP_SET_BRUSH: - case DRAWOP_SET_FONT: - { - expr->Append(new wxExpr((long)m_gdiIndex)); - break; - } - case DRAWOP_SET_TEXT_COLOUR: - case DRAWOP_SET_BK_COLOUR: - { - expr->Append(new wxExpr((long)m_r)); - expr->Append(new wxExpr((long)m_g)); - expr->Append(new wxExpr((long)m_b)); - break; - } - case DRAWOP_SET_BK_MODE: - { - expr->Append(new wxExpr((long)m_mode)); - break; - } - default: - break; - } - return expr; -} - -void wxOpSetGDI::ReadExpr(wxPseudoMetaFile *image, wxExpr *expr) -{ - switch (m_op) - { - case DRAWOP_SET_PEN: - case DRAWOP_SET_BRUSH: - case DRAWOP_SET_FONT: - { - m_gdiIndex = (int)expr->Nth(1)->IntegerValue(); - break; - } - case DRAWOP_SET_TEXT_COLOUR: - case DRAWOP_SET_BK_COLOUR: - { - m_r = (unsigned char)expr->Nth(1)->IntegerValue(); - m_g = (unsigned char)expr->Nth(2)->IntegerValue(); - m_b = (unsigned char)expr->Nth(3)->IntegerValue(); - break; - } - case DRAWOP_SET_BK_MODE: - { - m_mode = (int)expr->Nth(1)->IntegerValue(); - break; - } - default: - break; - } -} - -/* - * Set/destroy clipping - * - */ - -wxOpSetClipping::wxOpSetClipping(int theOp, double theX1, double theY1, - double theX2, double theY2):wxDrawOp(theOp) -{ - m_x1 = theX1; - m_y1 = theY1; - m_x2 = theX2; - m_y2 = theY2; -} - -wxDrawOp *wxOpSetClipping::Copy(wxPseudoMetaFile *newImage) -{ - wxOpSetClipping *newOp = new wxOpSetClipping(m_op, m_x1, m_y1, m_x2, m_y2); - return newOp; -} - -void wxOpSetClipping::Do(wxDC& dc, double xoffset, double yoffset) -{ - switch (m_op) - { - case DRAWOP_SET_CLIPPING_RECT: - { - dc.SetClippingRegion((long)(m_x1 + xoffset), (long)(m_y1 + yoffset), (long)(m_x2 + xoffset), (long)(m_y2 + yoffset)); - break; - } - case DRAWOP_DESTROY_CLIPPING_RECT: - { - dc.DestroyClippingRegion(); - break; - } - default: - break; - } -} - -void wxOpSetClipping::Scale(double xScale, double yScale) -{ - m_x1 *= xScale; - m_y1 *= yScale; - m_x2 *= xScale; - m_y2 *= yScale; -} - -void wxOpSetClipping::Translate(double x, double y) -{ - m_x1 += x; - m_y1 += y; -} - -wxExpr *wxOpSetClipping::WriteExpr(wxPseudoMetaFile *image) -{ - wxExpr *expr = new wxExpr(wxExprList); - expr->Append(new wxExpr((long)m_op)); - switch (m_op) - { - case DRAWOP_SET_CLIPPING_RECT: - { - expr->Append(new wxExpr(m_x1)); - expr->Append(new wxExpr(m_y1)); - expr->Append(new wxExpr(m_x2)); - expr->Append(new wxExpr(m_y2)); - break; - } - default: - break; - } - return expr; -} - -void wxOpSetClipping::ReadExpr(wxPseudoMetaFile *image, wxExpr *expr) -{ - switch (m_op) - { - case DRAWOP_SET_CLIPPING_RECT: - { - m_x1 = expr->Nth(1)->RealValue(); - m_y1 = expr->Nth(2)->RealValue(); - m_x2 = expr->Nth(3)->RealValue(); - m_y2 = expr->Nth(4)->RealValue(); - break; - } - default: - break; - } -} - -/* - * Draw line, rectangle, rounded rectangle, ellipse, point, arc, text - * - */ - -wxOpDraw::wxOpDraw(int theOp, double theX1, double theY1, double theX2, double theY2, - double theRadius, char *s):wxDrawOp(theOp) -{ - m_x1 = theX1; - m_y1 = theY1; - m_x2 = theX2; - m_y2 = theY2; - m_x3 = 0.0; - m_y3 = 0.0; - m_radius = theRadius; - if (s) m_textString = copystring(s); - else m_textString = NULL; -} - -wxOpDraw::~wxOpDraw() -{ - if (m_textString) delete[] m_textString; -} - -wxDrawOp *wxOpDraw::Copy(wxPseudoMetaFile *newImage) -{ - wxOpDraw *newOp = new wxOpDraw(m_op, m_x1, m_y1, m_x2, m_y2, m_radius, m_textString); - newOp->m_x3 = m_x3; - newOp->m_y3 = m_y3; - return newOp; -} - -void wxOpDraw::Do(wxDC& dc, double xoffset, double yoffset) -{ - switch (m_op) - { - case DRAWOP_DRAW_LINE: - { - dc.DrawLine(WXROUND(m_x1+xoffset), WXROUND(m_y1+yoffset), WXROUND(m_x2+xoffset), WXROUND(m_y2+yoffset)); - break; - } - case DRAWOP_DRAW_RECT: - { - dc.DrawRectangle(WXROUND(m_x1+xoffset), WXROUND(m_y1+yoffset), WXROUND(m_x2), WXROUND(m_y2)); - break; - } - case DRAWOP_DRAW_ROUNDED_RECT: - { - dc.DrawRoundedRectangle(WXROUND(m_x1+xoffset), WXROUND(m_y1+yoffset), WXROUND(m_x2), WXROUND(m_y2), m_radius); - break; - } - case DRAWOP_DRAW_ELLIPSE: - { - dc.DrawEllipse(WXROUND(m_x1+xoffset), WXROUND(m_y1+yoffset), WXROUND(m_x2), WXROUND(m_y2)); - break; - } - case DRAWOP_DRAW_ARC: - { - dc.DrawArc(WXROUND(m_x2+xoffset), WXROUND(m_y2+yoffset), - WXROUND(m_x3+xoffset), WXROUND(m_y3+yoffset), - WXROUND(m_x1+xoffset), WXROUND(m_y1+yoffset)); - break; - } - case DRAWOP_DRAW_ELLIPTIC_ARC: - { - const double pi = 3.1415926535897932384626433832795 ; - - // Convert back to degrees - dc.DrawEllipticArc( - WXROUND(m_x1+xoffset), WXROUND(m_y1+yoffset), - WXROUND(m_x2), WXROUND(m_y2), - WXROUND(m_x3*(360.0/(2.0*pi))), WXROUND(m_y3*(360.0/(2.0*pi)))); - break; - } - case DRAWOP_DRAW_POINT: - { - dc.DrawPoint(WXROUND(m_x1+xoffset), WXROUND(m_y1+yoffset)); - break; - } - case DRAWOP_DRAW_TEXT: - { - dc.DrawText(m_textString, WXROUND(m_x1+xoffset), WXROUND(m_y1+yoffset)); - break; - } - default: - break; - } -} - -void wxOpDraw::Scale(double scaleX, double scaleY) -{ - m_x1 *= scaleX; - m_y1 *= scaleY; - m_x2 *= scaleX; - m_y2 *= scaleY; - - if (m_op != DRAWOP_DRAW_ELLIPTIC_ARC) - { - m_x3 *= scaleX; - m_y3 *= scaleY; - } - - m_radius *= scaleX; -} - -void wxOpDraw::Translate(double x, double y) -{ - m_x1 += x; - m_y1 += y; - - switch (m_op) - { - case DRAWOP_DRAW_LINE: - { - m_x2 += x; - m_y2 += y; - break; - } - case DRAWOP_DRAW_ARC: - { - m_x2 += x; - m_y2 += y; - m_x3 += x; - m_y3 += y; - break; - } - case DRAWOP_DRAW_ELLIPTIC_ARC: - { - break; - } - default: - break; - } -} - -void wxOpDraw::Rotate(double x, double y, double theta, double sinTheta, double cosTheta) -{ - double newX1 = m_x1*cosTheta - m_y1*sinTheta + x*(1.0 - cosTheta) + y*sinTheta; - double newY1 = m_x1*sinTheta + m_y1*cosTheta + y*(1.0 - cosTheta) + x*sinTheta; - - switch (m_op) - { - case DRAWOP_DRAW_LINE: - { - double newX2 = m_x2*cosTheta - m_y2*sinTheta + x*(1.0 - cosTheta) + y*sinTheta; - double newY2 = m_x2*sinTheta + m_y2*cosTheta + y*(1.0 - cosTheta) + x*sinTheta; - - m_x1 = newX1; - m_y1 = newY1; - m_x2 = newX2; - m_y2 = newY2; - break; - } - case DRAWOP_DRAW_RECT: - case DRAWOP_DRAW_ROUNDED_RECT: - case DRAWOP_DRAW_ELLIPTIC_ARC: - { - // Assume only 0, 90, 180, 270 degree rotations. - // oldX1, oldY1 represents the top left corner. Find the - // bottom right, and rotate that. Then the width/height is the difference - // between x/y values. - double oldBottomRightX = m_x1 + m_x2; - double oldBottomRightY = m_y1 + m_y2; - double newBottomRightX = oldBottomRightX*cosTheta - oldBottomRightY*sinTheta + x*(1.0 - cosTheta) + y*sinTheta; - double newBottomRightY = oldBottomRightX*sinTheta + oldBottomRightY*cosTheta + y*(1.0 - cosTheta) + x*sinTheta; - - // Now find the new top-left, bottom-right coordinates. - double minX = wxMin(newX1, newBottomRightX); - double minY = wxMin(newY1, newBottomRightY); - double maxX = wxMax(newX1, newBottomRightX); - double maxY = wxMax(newY1, newBottomRightY); - - m_x1 = minX; - m_y1 = minY; - m_x2 = maxX - minX; // width - m_y2 = maxY - minY; // height - - if (m_op == DRAWOP_DRAW_ELLIPTIC_ARC) - { - // Add rotation to angles - m_x3 += theta; - m_y3 += theta; - } - - break; - } - case DRAWOP_DRAW_ARC: - { - double newX2 = m_x2*cosTheta - m_y2*sinTheta + x*(1.0 - cosTheta) + y*sinTheta; - double newY2 = m_x2*sinTheta + m_y2*cosTheta + y*(1.0 - cosTheta) + x*sinTheta; - double newX3 = m_x3*cosTheta - m_y3*sinTheta + x*(1.0 - cosTheta) + y*sinTheta; - double newY3 = m_x3*sinTheta + m_y3*cosTheta + y*(1.0 - cosTheta) + x*sinTheta; - - m_x1 = newX1; - m_y1 = newY1; - m_x2 = newX2; - m_y2 = newY2; - m_x3 = newX3; - m_y3 = newY3; - - break; - } - default: - break; - } -} - -wxExpr *wxOpDraw::WriteExpr(wxPseudoMetaFile *image) -{ - wxExpr *expr = new wxExpr(wxExprList); - expr->Append(new wxExpr((long)m_op)); - switch (m_op) - { - case DRAWOP_DRAW_LINE: - case DRAWOP_DRAW_RECT: - case DRAWOP_DRAW_ELLIPSE: - { - expr->Append(new wxExpr(m_x1)); - expr->Append(new wxExpr(m_y1)); - expr->Append(new wxExpr(m_x2)); - expr->Append(new wxExpr(m_y2)); - break; - } - case DRAWOP_DRAW_ROUNDED_RECT: - { - expr->Append(new wxExpr(m_x1)); - expr->Append(new wxExpr(m_y1)); - expr->Append(new wxExpr(m_x2)); - expr->Append(new wxExpr(m_y2)); - expr->Append(new wxExpr(m_radius)); - break; - } - case DRAWOP_DRAW_POINT: - { - expr->Append(new wxExpr(m_x1)); - expr->Append(new wxExpr(m_y1)); - break; - } - case DRAWOP_DRAW_TEXT: - { - expr->Append(new wxExpr(m_x1)); - expr->Append(new wxExpr(m_y1)); - expr->Append(new wxExpr(wxExprString, m_textString)); - break; - } - case DRAWOP_DRAW_ARC: - case DRAWOP_DRAW_ELLIPTIC_ARC: - { - expr->Append(new wxExpr(m_x1)); - expr->Append(new wxExpr(m_y1)); - expr->Append(new wxExpr(m_x2)); - expr->Append(new wxExpr(m_y2)); - expr->Append(new wxExpr(m_x3)); - expr->Append(new wxExpr(m_y3)); - break; - } - default: - { - break; - } - } - return expr; -} - -void wxOpDraw::ReadExpr(wxPseudoMetaFile *image, wxExpr *expr) -{ - switch (m_op) - { - case DRAWOP_DRAW_LINE: - case DRAWOP_DRAW_RECT: - case DRAWOP_DRAW_ELLIPSE: - { - m_x1 = expr->Nth(1)->RealValue(); - m_y1 = expr->Nth(2)->RealValue(); - m_x2 = expr->Nth(3)->RealValue(); - m_y2 = expr->Nth(4)->RealValue(); - break; - } - case DRAWOP_DRAW_ROUNDED_RECT: - { - m_x1 = expr->Nth(1)->RealValue(); - m_y1 = expr->Nth(2)->RealValue(); - m_x2 = expr->Nth(3)->RealValue(); - m_y2 = expr->Nth(4)->RealValue(); - m_radius = expr->Nth(5)->RealValue(); - break; - } - case DRAWOP_DRAW_POINT: - { - m_x1 = expr->Nth(1)->RealValue(); - m_y1 = expr->Nth(2)->RealValue(); - break; - } - case DRAWOP_DRAW_TEXT: - { - m_x1 = expr->Nth(1)->RealValue(); - m_y1 = expr->Nth(2)->RealValue(); - wxString str(expr->Nth(3)->StringValue()); - m_textString = copystring((const char*) str); - break; - } - case DRAWOP_DRAW_ARC: - case DRAWOP_DRAW_ELLIPTIC_ARC: - { - m_x1 = expr->Nth(1)->RealValue(); - m_y1 = expr->Nth(2)->RealValue(); - m_x2 = expr->Nth(3)->RealValue(); - m_y2 = expr->Nth(4)->RealValue(); - m_x3 = expr->Nth(5)->RealValue(); - m_y3 = expr->Nth(6)->RealValue(); - break; - } - default: - { - break; - } - } -} - -/* - * Draw polygon, polyline, spline - * - */ - -wxOpPolyDraw::wxOpPolyDraw(int theOp, int n, wxRealPoint *thePoints):wxDrawOp(theOp) -{ - m_noPoints = n; - m_points = thePoints; -} - -wxOpPolyDraw::~wxOpPolyDraw() -{ - delete[] m_points; -} - -wxDrawOp *wxOpPolyDraw::Copy(wxPseudoMetaFile *newImage) -{ - wxRealPoint *newPoints = new wxRealPoint[m_noPoints]; - for (int i = 0; i < m_noPoints; i++) - { - newPoints[i].x = m_points[i].x; - newPoints[i].y = m_points[i].y; - } - wxOpPolyDraw *newOp = new wxOpPolyDraw(m_op, m_noPoints, newPoints); - return newOp; -} - -void wxOpPolyDraw::Do(wxDC& dc, double xoffset, double yoffset) -{ - switch (m_op) - { - case DRAWOP_DRAW_POLYLINE: - { - wxPoint *actualPoints = new wxPoint[m_noPoints]; - int i; - for (i = 0; i < m_noPoints; i++) - { - actualPoints[i].x = WXROUND(m_points[i].x); - actualPoints[i].y = WXROUND(m_points[i].y); - } - - dc.DrawLines(m_noPoints, actualPoints, WXROUND(xoffset), WXROUND(yoffset)); - - delete[] actualPoints; - break; - } - case DRAWOP_DRAW_POLYGON: - { - wxPoint *actualPoints = new wxPoint[m_noPoints]; - int i; - for (i = 0; i < m_noPoints; i++) - { - actualPoints[i].x = WXROUND(m_points[i].x); - actualPoints[i].y = WXROUND(m_points[i].y); - } - - dc.DrawPolygon(m_noPoints, actualPoints, WXROUND(xoffset), WXROUND(yoffset)); - - delete[] actualPoints; - break; - } - case DRAWOP_DRAW_SPLINE: - { - wxPoint *actualPoints = new wxPoint[m_noPoints]; - int i; - for (i = 0; i < m_noPoints; i++) - { - actualPoints[i].x = WXROUND(m_points[i].x); - actualPoints[i].y = WXROUND(m_points[i].y); - } - - dc.DrawSpline(m_noPoints, actualPoints); // no offsets in DrawSpline // , xoffset, yoffset); - - delete[] actualPoints; - break; - break; - } - default: - break; - } -} - -void wxOpPolyDraw::Scale(double scaleX, double scaleY) -{ - for (int i = 0; i < m_noPoints; i++) - { - m_points[i].x *= scaleX; - m_points[i].y *= scaleY; - } -} - -void wxOpPolyDraw::Translate(double x, double y) -{ - for (int i = 0; i < m_noPoints; i++) - { - m_points[i].x += x; - m_points[i].y += y; - } -} - -void wxOpPolyDraw::Rotate(double x, double y, double theta, double sinTheta, double cosTheta) -{ - for (int i = 0; i < m_noPoints; i++) - { - double x1 = m_points[i].x; - double y1 = m_points[i].y; - m_points[i].x = x1*cosTheta - y1*sinTheta + x*(1.0 - cosTheta) + y*sinTheta; - m_points[i].y = x1*sinTheta + y1*cosTheta + y*(1.0 - cosTheta) + x*sinTheta; - } -} - -wxExpr *wxOpPolyDraw::WriteExpr(wxPseudoMetaFile *image) -{ - wxExpr *expr = new wxExpr(wxExprList); - expr->Append(new wxExpr((long)m_op)); - expr->Append(new wxExpr((long)m_noPoints)); - -// char buf1[9]; - char buf2[5]; - char buf3[5]; - - oglBuffer[0] = 0; - - /* - * Store each coordinate pair in a hex string to save space. - * E.g. "1B9080CD". 4 hex digits per coordinate pair. - * - */ - - for (int i = 0; i < m_noPoints; i++) - { - long signedX = (long)(m_points[i].x*100.0); - long signedY = (long)(m_points[i].y*100.0); - - // Scale to 0 -> 64K - long unSignedX = (long)(signedX + 32767.0); - long unSignedY = (long)(signedY + 32767.0); - -// IntToHex((unsigned int)signedX, buf2); -// IntToHex((unsigned int)signedY, buf3); - IntToHex((int)unSignedX, buf2); - IntToHex((int)unSignedY, buf3); - - // Don't overrun the buffer - if ((i*8) < 3000) - { - strcat(oglBuffer, buf2); - strcat(oglBuffer, buf3); - } - } - expr->Append(new wxExpr(wxExprString, oglBuffer)); - return expr; -} - -void wxOpPolyDraw::ReadExpr(wxPseudoMetaFile *image, wxExpr *expr) -{ - m_noPoints = (int)expr->Nth(1)->IntegerValue(); - - char buf1[5]; - char buf2[5]; - - m_points = new wxRealPoint[m_noPoints]; - int i = 0; - int bufPtr = 0; - wxString hexString = expr->Nth(2)->StringValue(); - while (i < m_noPoints) - { - buf1[0] = hexString[bufPtr]; - buf1[1] = hexString[bufPtr + 1]; - buf1[2] = hexString[bufPtr + 2]; - buf1[3] = hexString[bufPtr + 3]; - buf1[4] = 0; - - buf2[0] = hexString[bufPtr + 4]; - buf2[1] = hexString[bufPtr + 5]; - buf2[2] = hexString[bufPtr + 6]; - buf2[3] = hexString[bufPtr + 7]; - buf2[4] = 0; - - bufPtr += 8; - -// int signedX = (signed int)HexToInt(buf1); -// int signedY = (signed int)HexToInt(buf2); - long unSignedX = HexToInt(buf1); - long unSignedY = HexToInt(buf2); - // Scale -32K -> +32K - long signedX = unSignedX - 32767; - long signedY = unSignedY - 32767; -#ifdef __WXMSW__ - int testX = (signed int)unSignedX; - int testY = (signed int)unSignedY; -#endif - - m_points[i].x = (double)(signedX / 100.0); - m_points[i].y = (double)(signedY / 100.0); - - i ++; - } -} - -// Draw an outline using the current operation. -bool wxOpPolyDraw::OnDrawOutline(wxDC& dc, double x, double y, double w, double h, double oldW, double oldH) -{ - dc.SetBrush(* wxTRANSPARENT_BRUSH); - - // Multiply all points by proportion of new size to old size - double x_proportion = (double)(fabs(w/oldW)); - double y_proportion = (double)(fabs(h/oldH)); - - int n = m_noPoints; - wxPoint *intPoints = new wxPoint[n]; - int i; - for (i = 0; i < n; i++) - { - intPoints[i].x = WXROUND (x_proportion * m_points[i].x); - intPoints[i].y = WXROUND (y_proportion * m_points[i].y); - } - dc.DrawPolygon(n, intPoints, (long) x, (long) y); - delete[] intPoints; - return TRUE; -} - -// Assume (x1, y1) is centre of box (most generally, line end at box) -bool wxOpPolyDraw::GetPerimeterPoint(double x1, double y1, - double x2, double y2, - double *x3, double *y3, - double xOffset, double yOffset, - int attachmentMode) -{ - int n = m_noPoints; - - // First check for situation where the line is vertical, - // and we would want to connect to a point on that vertical -- - // oglFindEndForPolyline can't cope with this (the arrow - // gets drawn to the wrong place). - if ((attachmentMode == ATTACHMENT_MODE_NONE) && (x1 == x2)) - { - // Look for the point we'd be connecting to. This is - // a heuristic... - int i; - for (i = 0; i < n; i++) - { - wxRealPoint *point = & (m_points[i]); - if (point->x == 0.0) - { - if ((y2 > y1) && (point->y > 0.0)) - { - *x3 = point->x + xOffset; - *y3 = point->y + yOffset; - return TRUE; - } - else if ((y2 < y1) && (point->y < 0.0)) - { - *x3 = point->x + xOffset; - *y3 = point->y + yOffset; - return TRUE; - } - } - } - } - - double *xpoints = new double[n]; - double *ypoints = new double[n]; - - int i = 0; - for (i = 0; i < n; i++) - { - wxRealPoint *point = & (m_points[i]); - xpoints[i] = point->x + xOffset; - ypoints[i] = point->y + yOffset; - } - - oglFindEndForPolyline(n, xpoints, ypoints, - x1, y1, x2, y2, x3, y3); - - delete[] xpoints; - delete[] ypoints; - - return TRUE; -} - - -/* - * Utilities - * - */ - -static char hexArray[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', - 'C', 'D', 'E', 'F' }; - -// Convert unsigned 16-bit integer to 4-character hex string -static void IntToHex(unsigned int dec, char *buf) -{ - int digit1 = (int)(dec/4096); - int digit2 = (int)((dec - (digit1*4096))/256); - int digit3 = (int)((dec - (digit1*4096) - (digit2*256))/16); - int digit4 = dec - (digit1*4096 + digit2*256 + digit3*16); - - buf[0] = hexArray[digit1]; - buf[1] = hexArray[digit2]; - buf[2] = hexArray[digit3]; - buf[3] = hexArray[digit4]; - buf[4] = 0; -} - -// One hex digit to decimal number -static int HexToInt1(char hex) -{ - switch (hex) - { - case '0': - return 0; - case '1': - return 1; - case '2': - return 2; - case '3': - return 3; - case '4': - return 4; - case '5': - return 5; - case '6': - return 6; - case '7': - return 7; - case '8': - return 8; - case '9': - return 9; - case 'A': - return 10; - case 'B': - return 11; - case 'C': - return 12; - case 'D': - return 13; - case 'E': - return 14; - case 'F': - return 15; - default: - return 0; - } - return 0; -} - -// 4-digit hex string to unsigned integer -static unsigned long HexToInt(char *buf) -{ - long d1 = (long)(HexToInt1(buf[0])*4096.0) ; - long d2 = (long)(HexToInt1(buf[1])*256.0) ; - long d3 = (long)(HexToInt1(buf[2])*16.0) ; - long d4 = (long)(HexToInt1(buf[3])) ; - unsigned long n = (long)(d1 + d2 + d3 + d4) ; - return n; -} - -/* - * wxPseudo meta-file - * - */ - -IMPLEMENT_DYNAMIC_CLASS(wxPseudoMetaFile, wxObject) - -wxPseudoMetaFile::wxPseudoMetaFile() -{ - m_currentRotation = 0; - m_rotateable = TRUE; - m_width = 0.0; - m_height = 0.0; - m_outlinePen = NULL; - m_fillBrush = NULL; - m_outlineOp = -1; -} - -wxPseudoMetaFile::wxPseudoMetaFile(wxPseudoMetaFile& mf) -{ - mf.Copy(*this); -} - -wxPseudoMetaFile::~wxPseudoMetaFile() -{ - Clear(); -} - -void wxPseudoMetaFile::Clear() -{ - wxNode *node = m_ops.First(); - while (node) - { - wxDrawOp *op = (wxDrawOp *)node->Data(); - delete op; - node = node->Next(); - } - m_ops.Clear(); - m_gdiObjects.Clear(); - m_outlineColours.Clear(); - m_fillColours.Clear(); - m_outlineOp = -1; -} - -void wxPseudoMetaFile::Draw(wxDC& dc, double xoffset, double yoffset) -{ - wxNode *node = m_ops.First(); - while (node) - { - wxDrawOp *op = (wxDrawOp *)node->Data(); - op->Do(dc, xoffset, yoffset); - node = node->Next(); - } -} - -void wxPseudoMetaFile::Scale(double sx, double sy) -{ - wxNode *node = m_ops.First(); - while (node) - { - wxDrawOp *op = (wxDrawOp *)node->Data(); - op->Scale(sx, sy); - node = node->Next(); - } - m_width *= sx; - m_height *= sy; -} - -void wxPseudoMetaFile::Translate(double x, double y) -{ - wxNode *node = m_ops.First(); - while (node) - { - wxDrawOp *op = (wxDrawOp *)node->Data(); - op->Translate(x, y); - node = node->Next(); - } -} - -void wxPseudoMetaFile::Rotate(double x, double y, double theta) -{ - double theta1 = theta-m_currentRotation; - if (theta1 == 0.0) return; - double cosTheta = (double)cos(theta1); - double sinTheta = (double)sin(theta1); - - wxNode *node = m_ops.First(); - while (node) - { - wxDrawOp *op = (wxDrawOp *)node->Data(); - op->Rotate(x, y, theta, sinTheta, cosTheta); - node = node->Next(); - } - m_currentRotation = theta; -} - -#ifdef PROLOGIO -void wxPseudoMetaFile::WriteAttributes(wxExpr *clause, int whichAngle) -{ - wxString widthStr; - widthStr.Printf("meta_width%d", whichAngle); - - wxString heightStr; - heightStr.Printf("meta_height%d", whichAngle); - - wxString outlineStr; - outlineStr.Printf("outline_op%d", whichAngle); - - wxString rotateableStr; - rotateableStr.Printf("meta_rotateable%d", whichAngle); - - // Write width and height - clause->AddAttributeValue(widthStr, m_width); - clause->AddAttributeValue(heightStr, m_height); - clause->AddAttributeValue(rotateableStr, (long)m_rotateable); - clause->AddAttributeValue(outlineStr, (long)m_outlineOp); - - // Write GDI objects - char buf[50]; - int i = 1; - wxNode *node = m_gdiObjects.First(); - while (node) - { - sprintf(buf, "gdi%d_%d", whichAngle, i); - wxObject *obj = (wxObject *)node->Data(); - wxExpr *expr = NULL; - if (obj) - { - if (obj->IsKindOf(CLASSINFO(wxPen))) - { - wxPen *thePen = (wxPen *)obj; - expr = new wxExpr(wxExprList); - expr->Append(new wxExpr((long)gyTYPE_PEN)); - expr->Append(new wxExpr((long)thePen->GetWidth())); - expr->Append(new wxExpr((long)thePen->GetStyle())); - expr->Append(new wxExpr((long)thePen->GetColour().Red())); - expr->Append(new wxExpr((long)thePen->GetColour().Green())); - expr->Append(new wxExpr((long)thePen->GetColour().Blue())); - } - else if (obj->IsKindOf(CLASSINFO(wxBrush))) - { - wxBrush *theBrush = (wxBrush *)obj; - expr = new wxExpr(wxExprList); - expr->Append(new wxExpr((long)gyTYPE_BRUSH)); - expr->Append(new wxExpr((long)theBrush->GetStyle())); - expr->Append(new wxExpr((long)theBrush->GetColour().Red())); - expr->Append(new wxExpr((long)theBrush->GetColour().Green())); - expr->Append(new wxExpr((long)theBrush->GetColour().Blue())); - } - else if (obj->IsKindOf(CLASSINFO(wxFont))) - { - wxFont *theFont = (wxFont *)obj; - expr = new wxExpr(wxExprList); - expr->Append(new wxExpr((long)gyTYPE_FONT)); - expr->Append(new wxExpr((long)theFont->GetPointSize())); - expr->Append(new wxExpr((long)theFont->GetFamily())); - expr->Append(new wxExpr((long)theFont->GetStyle())); - expr->Append(new wxExpr((long)theFont->GetWeight())); - expr->Append(new wxExpr((long)theFont->GetUnderlined())); - } - } - else - { - // If no recognised GDI object, append a place holder anyway. - expr = new wxExpr(wxExprList); - expr->Append(new wxExpr((long)0)); - } - - if (expr) - { - clause->AddAttributeValue(buf, expr); - i ++; - } - node = node->Next(); - } - - // Write drawing operations - i = 1; - node = m_ops.First(); - while (node) - { - sprintf(buf, "op%d_%d", whichAngle, i); - wxDrawOp *op = (wxDrawOp *)node->Data(); - wxExpr *expr = op->WriteExpr(this); - if (expr) - { - clause->AddAttributeValue(buf, expr); - i ++; - } - node = node->Next(); - } - - // Write outline and fill GDI op lists (if any) - if (m_outlineColours.Number() > 0) - { - wxExpr *outlineExpr = new wxExpr(wxExprList); - node = m_outlineColours.First(); - while (node) - { - outlineExpr->Append(new wxExpr((long)node->Data())); - node = node->Next(); - } - wxString outlineObjectsStr; - outlineObjectsStr.Printf("outline_objects%d", whichAngle); - - clause->AddAttributeValue(outlineObjectsStr, outlineExpr); - } - if (m_fillColours.Number() > 0) - { - wxExpr *fillExpr = new wxExpr(wxExprList); - node = m_fillColours.First(); - while (node) - { - fillExpr->Append(new wxExpr((long)node->Data())); - node = node->Next(); - } - wxString fillObjectsStr; - fillObjectsStr.Printf("fill_objects%d", whichAngle); - - clause->AddAttributeValue(fillObjectsStr, fillExpr); - } - -} - -void wxPseudoMetaFile::ReadAttributes(wxExpr *clause, int whichAngle) -{ - wxString widthStr; - widthStr.Printf("meta_width%d", whichAngle); - - wxString heightStr; - heightStr.Printf("meta_height%d", whichAngle); - - wxString outlineStr; - outlineStr.Printf("outline_op%d", whichAngle); - - wxString rotateableStr; - rotateableStr.Printf("meta_rotateable%d", whichAngle); - - clause->GetAttributeValue(widthStr, m_width); - clause->GetAttributeValue(heightStr, m_height); - clause->GetAttributeValue(outlineStr, m_outlineOp); - - int iVal = (int) m_rotateable; - clause->GetAttributeValue(rotateableStr, iVal); - m_rotateable = (iVal != 0); - - // Read GDI objects - char buf[50]; - int i = 1; - bool keepGoing = TRUE; - while (keepGoing) - { - sprintf(buf, "gdi%d_%d", whichAngle, i); - wxExpr *expr = NULL; - clause->GetAttributeValue(buf, &expr); - if (!expr) - { - keepGoing = FALSE; - } - else - { - wxExpr *idExpr = expr->Nth(0); - switch (idExpr->IntegerValue()) - { - case gyTYPE_PEN: - { - int penWidth = (int)expr->Nth(1)->IntegerValue(); - int penStyle = (int)expr->Nth(2)->IntegerValue(); - int penRed = (int)expr->Nth(3)->IntegerValue(); - int penGreen = (int)expr->Nth(4)->IntegerValue(); - int penBlue = (int)expr->Nth(5)->IntegerValue(); - wxColour col(penRed, penGreen, penBlue); - wxPen *p = wxThePenList->FindOrCreatePen(col, penWidth, penStyle); - if (!p) - p = wxBLACK_PEN; - m_gdiObjects.Append(p); - break; - } - case gyTYPE_BRUSH: - { - int brushStyle = (int)expr->Nth(1)->IntegerValue(); - int brushRed = (int)expr->Nth(2)->IntegerValue(); - int brushGreen = (int)expr->Nth(3)->IntegerValue(); - int brushBlue = (int)expr->Nth(4)->IntegerValue(); - wxColour col(brushRed, brushGreen, brushBlue); - wxBrush *b = wxTheBrushList->FindOrCreateBrush(col, brushStyle); - if (!b) - b = wxWHITE_BRUSH; - m_gdiObjects.Append(b); - break; - } - case gyTYPE_FONT: - { - int fontPointSize = (int)expr->Nth(1)->IntegerValue(); - int fontFamily = (int)expr->Nth(2)->IntegerValue(); - int fontStyle = (int)expr->Nth(3)->IntegerValue(); - int fontWeight = (int)expr->Nth(4)->IntegerValue(); - int fontUnderlined = (int)expr->Nth(5)->IntegerValue(); - m_gdiObjects.Append(wxTheFontList->FindOrCreateFont(fontPointSize, - fontFamily, fontStyle, fontWeight, (fontUnderlined != 0))); - break; - } - default: - { - // Place holder - m_gdiObjects.Append(NULL); - break; - } - } - i ++; - } - } - - // Now read in the operations - keepGoing = TRUE; - i = 1; - while (keepGoing) - { - sprintf(buf, "op%d_%d", whichAngle, i); - wxExpr *expr = NULL; - clause->GetAttributeValue(buf, &expr); - if (!expr) - { - keepGoing = FALSE; - } - else - { - wxExpr *idExpr = expr->Nth(0); - int opId = (int)idExpr->IntegerValue(); - switch (opId) - { - case DRAWOP_SET_PEN: - case DRAWOP_SET_BRUSH: - case DRAWOP_SET_FONT: - case DRAWOP_SET_TEXT_COLOUR: - case DRAWOP_SET_BK_COLOUR: - case DRAWOP_SET_BK_MODE: - { - wxOpSetGDI *theOp = new wxOpSetGDI(opId, this, 0); - theOp->ReadExpr(this, expr); - m_ops.Append(theOp); - break; - } - - case DRAWOP_SET_CLIPPING_RECT: - case DRAWOP_DESTROY_CLIPPING_RECT: - { - wxOpSetClipping *theOp = new wxOpSetClipping(opId, 0.0, 0.0, 0.0, 0.0); - theOp->ReadExpr(this, expr); - m_ops.Append(theOp); - break; - } - - case DRAWOP_DRAW_LINE: - case DRAWOP_DRAW_RECT: - case DRAWOP_DRAW_ROUNDED_RECT: - case DRAWOP_DRAW_ELLIPSE: - case DRAWOP_DRAW_POINT: - case DRAWOP_DRAW_ARC: - case DRAWOP_DRAW_TEXT: - { - wxOpDraw *theOp = new wxOpDraw(opId, 0.0, 0.0, 0.0, 0.0); - theOp->ReadExpr(this, expr); - m_ops.Append(theOp); - break; - } - case DRAWOP_DRAW_SPLINE: - case DRAWOP_DRAW_POLYLINE: - case DRAWOP_DRAW_POLYGON: - { - wxOpPolyDraw *theOp = new wxOpPolyDraw(opId, 0, NULL); - theOp->ReadExpr(this, expr); - m_ops.Append(theOp); - break; - } - default: - break; - } - } - i ++; - } - - wxString outlineObjectsStr; - outlineObjectsStr.Printf("outline_objects%d", whichAngle); - - // Now read in the list of outline and fill operations, if any - wxExpr *expr1 = clause->AttributeValue(outlineObjectsStr); - if (expr1) - { - wxExpr *eachExpr = expr1->GetFirst(); - while (eachExpr) - { - m_outlineColours.Append((wxObject *)eachExpr->IntegerValue()); - eachExpr = eachExpr->GetNext(); - } - } - - wxString fillObjectsStr; - fillObjectsStr.Printf("fill_objects%d", whichAngle); - - expr1 = clause->AttributeValue(fillObjectsStr); - if (expr1) - { - wxExpr *eachExpr = expr1->GetFirst(); - while (eachExpr) - { - m_fillColours.Append((wxObject *)eachExpr->IntegerValue()); - eachExpr = eachExpr->GetNext(); - } - } -} -#endif - -// Does the copying for this object -void wxPseudoMetaFile::Copy(wxPseudoMetaFile& copy) -{ - copy.Clear(); - - copy.m_currentRotation = m_currentRotation; - copy.m_width = m_width; - copy.m_height = m_height; - copy.m_rotateable = m_rotateable; - copy.m_fillBrush = m_fillBrush; - copy.m_outlinePen = m_outlinePen; - copy.m_outlineOp = m_outlineOp; - - // Copy the GDI objects - wxNode *node = m_gdiObjects.First(); - while (node) - { - wxObject *obj = (wxObject *)node->Data(); - copy.m_gdiObjects.Append(obj); - node = node->Next(); - } - - // Copy the operations - node = m_ops.First(); - while (node) - { - wxDrawOp *op = (wxDrawOp *)node->Data(); - copy.m_ops.Append(op->Copy(©)); - node = node->Next(); - } - - // Copy the outline/fill operations - node = m_outlineColours.First(); - while (node) - { - copy.m_outlineColours.Append((wxObject *)node->Data()); - node = node->Next(); - } - node = m_fillColours.First(); - while (node) - { - copy.m_fillColours.Append((wxObject *)node->Data()); - node = node->Next(); - } -} - -/* - * Pass size of existing image; scale height to - * fit width and return new width and height. - * - */ - -bool wxPseudoMetaFile::LoadFromMetaFile(char *filename, double *rwidth, double *rheight) -{ - if (!FileExists(filename)) - return NULL; - - wxXMetaFile *metaFile = new wxXMetaFile; - - if (!metaFile->ReadFile(filename)) - { - delete metaFile; - return FALSE; - } - - double lastX = 0.0; - double lastY = 0.0; - - // Convert from metafile records to wxDrawnShape records - wxNode *node = metaFile->metaRecords.First(); - while (node) - { - wxMetaRecord *record = (wxMetaRecord *)node->Data(); - switch (record->metaFunction) - { - case META_SETBKCOLOR: - { - wxOpSetGDI *op = new wxOpSetGDI(DRAWOP_SET_BK_COLOUR, this, 0); - op->m_r = (unsigned char)record->param1; - op->m_g = (unsigned char)record->param2; - op->m_b = (unsigned char)record->param3; - m_ops.Append(op); - break; - } - case META_SETBKMODE: - { - wxOpSetGDI *op = new wxOpSetGDI(DRAWOP_SET_BK_MODE, this, 0, (int)record->param1); - m_ops.Append(op); - break; - } - case META_SETMAPMODE: - { - break; - } -// case META_SETROP2: -// case META_SETRELABS: -// case META_SETPOLYFILLMODE: -// case META_SETSTRETCHBLTMODE: -// case META_SETTEXTCHAREXTRA: - case META_SETTEXTCOLOR: - { - wxOpSetGDI *op = new wxOpSetGDI(DRAWOP_SET_TEXT_COLOUR, this, 0); - op->m_r = (unsigned char)record->param1; - op->m_g = (unsigned char)record->param2; - op->m_b = (unsigned char)record->param3; - m_ops.Append(op); - break; - } -// case META_SETTEXTJUSTIFICATION: -// case META_SETWINDOWORG: -// case META_SETWINDOWEXT: -// case META_SETVIEWPORTORG: -// case META_SETVIEWPORTEXT: -// case META_OFFSETWINDOWORG: -// case META_SCALEWINDOWEXT: -// case META_OFFSETVIEWPORTORG: -// case META_SCALEVIEWPORTEXT: - case META_LINETO: - { - wxOpDraw *op = new wxOpDraw(DRAWOP_DRAW_LINE, (double)lastX, (double)lastY, - (double)record->param1, (double)record->param2); - m_ops.Append(op); - break; - } - case META_MOVETO: - { - lastX = (double)record->param1; - lastY = (double)record->param2; - break; - } - case META_EXCLUDECLIPRECT: - { -/* - wxMetaRecord *rec = new wxMetaRecord(META_EXCLUDECLIPRECT); - rec->param4 = getshort(handle); // m_y2 - rec->param3 = getshort(handle); // x2 - rec->param2 = getshort(handle); // y1 - rec->param1 = getshort(handle); // x1 -*/ - break; - } - case META_INTERSECTCLIPRECT: - { -/* - rec->param4 = getshort(handle); // m_y2 - rec->param3 = getshort(handle); // x2 - rec->param2 = getshort(handle); // y1 - rec->param1 = getshort(handle); // x1 -*/ - break; - } -// case META_ARC: // DO!!! - case META_ELLIPSE: - { - wxOpDraw *op = new wxOpDraw(DRAWOP_DRAW_ELLIPSE, - (double)record->param1, (double)record->param2, - (double)(record->param3 - record->param1), - (double)(record->param4 - record->param2)); - m_ops.Append(op); - break; - } -// case META_FLOODFILL: -// case META_PIE: // DO!!! - case META_RECTANGLE: - { - wxOpDraw *op = new wxOpDraw(DRAWOP_DRAW_RECT, - (double)record->param1, (double)record->param2, - (double)(record->param3 - record->param1), - (double)(record->param4 - record->param2)); - m_ops.Append(op); - break; - } - case META_ROUNDRECT: - { - wxOpDraw *op = new wxOpDraw(DRAWOP_DRAW_ROUNDED_RECT, - (double)record->param1, (double)record->param2, - (double)(record->param3 - record->param1), - (double)(record->param4 - record->param2), (double)record->param5); - m_ops.Append(op); - break; - } -// case META_PATBLT: -// case META_SAVEDC: - case META_SETPIXEL: - { - wxOpDraw *op = new wxOpDraw(DRAWOP_DRAW_POINT, - (double)record->param1, (double)record->param2, - 0.0, 0.0); - -// SHOULD SET THE COLOUR - SET PEN? -// rec->param3 = getint(handle); // COLORREF - m_ops.Append(op); - break; - } -// case META_OFFSETCLIPRGN: - case META_TEXTOUT: - { - wxOpDraw *op = new wxOpDraw(DRAWOP_DRAW_TEXT, - (double)record->param1, (double)record->param2, - 0.0, 0.0, 0.0, record->stringParam); - m_ops.Append(op); - break; - } -// case META_BITBLT: -// case META_STRETCHBLT: - case META_POLYGON: - { - int n = (int)record->param1; - wxRealPoint *newPoints = new wxRealPoint[n]; - for (int i = 0; i < n; i++) - { - newPoints[i].x = record->points[i].x; - newPoints[i].y = record->points[i].y; - } - - wxOpPolyDraw *op = new wxOpPolyDraw(DRAWOP_DRAW_POLYGON, n, newPoints); - m_ops.Append(op); - break; - } - case META_POLYLINE: - { - int n = (int)record->param1; - wxRealPoint *newPoints = new wxRealPoint[n]; - for (int i = 0; i < n; i++) - { - newPoints[i].x = record->points[i].x; - newPoints[i].y = record->points[i].y; - } - - wxOpPolyDraw *op = new wxOpPolyDraw(DRAWOP_DRAW_POLYLINE, n, newPoints); - m_ops.Append(op); - break; - } -// case META_ESCAPE: -// case META_RESTOREDC: -// case META_FILLREGION: -// case META_FRAMEREGION: -// case META_INVERTREGION: -// case META_PAINTREGION: -// case META_SELECTCLIPREGION: // DO THIS! - case META_SELECTOBJECT: - { - // The pen, brush etc. has already been created when the metafile - // was read in, so we don't create it - we set it. - wxNode *recNode = metaFile->gdiObjects.Nth((int)record->param2); - if (recNode) - { - wxMetaRecord *gdiRec = (wxMetaRecord *)recNode->Data(); - if (gdiRec && (gdiRec->param1 != 0)) - { - wxObject *obj = (wxObject *)gdiRec->param1; - if (obj->IsKindOf(CLASSINFO(wxPen))) - { - wxOpSetGDI *op = new wxOpSetGDI(DRAWOP_SET_PEN, this, (int)record->param2); - m_ops.Append(op); - } - else if (obj->IsKindOf(CLASSINFO(wxBrush))) - { - wxOpSetGDI *op = new wxOpSetGDI(DRAWOP_SET_BRUSH, this, (int)record->param2); - m_ops.Append(op); - } - else if (obj->IsKindOf(CLASSINFO(wxFont))) - { - wxOpSetGDI *op = new wxOpSetGDI(DRAWOP_SET_FONT, this, (int)record->param2); - m_ops.Append(op); - } - } - } - break; - } -// case META_SETTEXTALIGN: -// case META_DRAWTEXT: -// case META_CHORD: -// case META_SETMAPPERFLAGS: -// case META_EXTTEXTOUT: -// case META_SETDIBTODEV: -// case META_SELECTPALETTE: -// case META_REALIZEPALETTE: -// case META_ANIMATEPALETTE: -// case META_SETPALENTRIES: -// case META_POLYPOLYGON: -// case META_RESIZEPALETTE: -// case META_DIBBITBLT: -// case META_DIBSTRETCHBLT: - case META_DIBCREATEPATTERNBRUSH: - { - // Place holder - m_gdiObjects.Append(NULL); - break; - } -// case META_STRETCHDIB: -// case META_EXTFLOODFILL: -// case META_RESETDC: -// case META_STARTDOC: -// case META_STARTPAGE: -// case META_ENDPAGE: -// case META_ABORTDOC: -// case META_ENDDOC: -// case META_DELETEOBJECT: // DO!! - case META_CREATEPALETTE: - { - // Place holder - m_gdiObjects.Append(NULL); - break; - } - case META_CREATEBRUSH: - { - // Place holder - m_gdiObjects.Append(NULL); - break; - } - case META_CREATEPATTERNBRUSH: - { - // Place holder - m_gdiObjects.Append(NULL); - break; - } - case META_CREATEPENINDIRECT: - { - // The pen is created when the metafile is read in. - // We keep track of all the GDI objects needed for this - // image so when reading the wxDrawnShape from file, - // we can read in all the GDI objects, then refer - // to them by an index starting from zero thereafter. - m_gdiObjects.Append((wxObject *)record->param1); - break; - } - case META_CREATEFONTINDIRECT: - { - m_gdiObjects.Append((wxObject *)record->param1); - break; - } - case META_CREATEBRUSHINDIRECT: - { - // Don't have to do anything here: the pen is created - // when the metafile is read in. - m_gdiObjects.Append((wxObject *)record->param1); - break; - } - case META_CREATEBITMAPINDIRECT: - { - // Place holder - m_gdiObjects.Append(NULL); - break; - } - case META_CREATEBITMAP: - { - // Place holder - m_gdiObjects.Append(NULL); - break; - } - case META_CREATEREGION: - { - // Place holder - m_gdiObjects.Append(NULL); - break; - } - default: - { - break; - } - } - node = node->Next(); - } - double actualWidth = (double)fabs(metaFile->right - metaFile->left); - double actualHeight = (double)fabs(metaFile->bottom - metaFile->top); - - double initialScaleX = 1.0; - double initialScaleY = 1.0; - - double xoffset, yoffset; - - // Translate so origin is at centre of rectangle - if (metaFile->bottom > metaFile->top) - yoffset = - (double)((metaFile->bottom - metaFile->top)/2.0); - else - yoffset = - (double)((metaFile->top - metaFile->bottom)/2.0); - - if (metaFile->right > metaFile->left) - xoffset = - (double)((metaFile->right - metaFile->left)/2.0); - else - xoffset = - (double)((metaFile->left - metaFile->right)/2.0); - - Translate(xoffset, yoffset); - - // Scale to a reasonable size (take the width of this wxDrawnShape - // as a guide) - if (actualWidth != 0.0) - { - initialScaleX = (double)((*rwidth) / actualWidth); - initialScaleY = initialScaleX; - (*rheight) = initialScaleY*actualHeight; - } - Scale(initialScaleX, initialScaleY); - - m_width = (actualWidth*initialScaleX); - m_height = *rheight; - - delete metaFile; - return TRUE; -} - -// Scale to fit size -void wxPseudoMetaFile::ScaleTo(double w, double h) -{ - double scaleX = (double)(w/m_width); - double scaleY = (double)(h/m_height); - - // Do the scaling - Scale(scaleX, scaleY); -} - -void wxPseudoMetaFile::GetBounds(double *boundMinX, double *boundMinY, double *boundMaxX, double *boundMaxY) -{ - double maxX = (double) -99999.9; - double maxY = (double) -99999.9; - double minX = (double) 99999.9; - double minY = (double) 99999.9; - - wxNode *node = m_ops.First(); - while (node) - { - wxDrawOp *op = (wxDrawOp *)node->Data(); - switch (op->GetOp()) - { - case DRAWOP_DRAW_LINE: - case DRAWOP_DRAW_RECT: - case DRAWOP_DRAW_ROUNDED_RECT: - case DRAWOP_DRAW_ELLIPSE: - case DRAWOP_DRAW_POINT: - case DRAWOP_DRAW_TEXT: - { - wxOpDraw *opDraw = (wxOpDraw *)op; - if (opDraw->m_x1 < minX) minX = opDraw->m_x1; - if (opDraw->m_x1 > maxX) maxX = opDraw->m_x1; - if (opDraw->m_y1 < minY) minY = opDraw->m_y1; - if (opDraw->m_y1 > maxY) maxY = opDraw->m_y1; - if (op->GetOp() == DRAWOP_DRAW_LINE) - { - if (opDraw->m_x2 < minX) minX = opDraw->m_x2; - if (opDraw->m_x2 > maxX) maxX = opDraw->m_x2; - if (opDraw->m_y2 < minY) minY = opDraw->m_y2; - if (opDraw->m_y2 > maxY) maxY = opDraw->m_y2; - } - else if (op->GetOp() == DRAWOP_DRAW_RECT || - op->GetOp() == DRAWOP_DRAW_ROUNDED_RECT || - op->GetOp() == DRAWOP_DRAW_ELLIPSE) - { - if ((opDraw->m_x1 + opDraw->m_x2) < minX) minX = (opDraw->m_x1 + opDraw->m_x2); - if ((opDraw->m_x1 + opDraw->m_x2) > maxX) maxX = (opDraw->m_x1 + opDraw->m_x2); - if ((opDraw->m_y1 + opDraw->m_y2) < minY) minY = (opDraw->m_y1 + opDraw->m_y2); - if ((opDraw->m_y1 + opDraw->m_y2) > maxY) maxY = (opDraw->m_y1 + opDraw->m_y2); - } - break; - } - case DRAWOP_DRAW_ARC: - { - // TODO: don't yet know how to calculate the bounding box - // for an arc. So pretend it's a line; to get a correct - // bounding box, draw a blank rectangle first, of the correct - // size. - wxOpDraw *opDraw = (wxOpDraw *)op; - if (opDraw->m_x1 < minX) minX = opDraw->m_x1; - if (opDraw->m_x1 > maxX) maxX = opDraw->m_x1; - if (opDraw->m_y1 < minY) minY = opDraw->m_y1; - if (opDraw->m_y1 > maxY) maxY = opDraw->m_y1; - if (opDraw->m_x2 < minX) minX = opDraw->m_x2; - if (opDraw->m_x2 > maxX) maxX = opDraw->m_x2; - if (opDraw->m_y2 < minY) minY = opDraw->m_y2; - if (opDraw->m_y2 > maxY) maxY = opDraw->m_y2; - break; - } - case DRAWOP_DRAW_POLYLINE: - case DRAWOP_DRAW_POLYGON: - case DRAWOP_DRAW_SPLINE: - { - wxOpPolyDraw *poly = (wxOpPolyDraw *)op; - for (int i = 0; i < poly->m_noPoints; i++) - { - if (poly->m_points[i].x < minX) minX = poly->m_points[i].x; - if (poly->m_points[i].x > maxX) maxX = poly->m_points[i].x; - if (poly->m_points[i].y < minY) minY = poly->m_points[i].y; - if (poly->m_points[i].y > maxY) maxY = poly->m_points[i].y; - } - break; - } - default: - break; - } - node = node->Next(); - } - - *boundMinX = minX; - *boundMinY = minY; - *boundMaxX = maxX; - *boundMaxY = maxY; -/* - *w = (double)fabs(maxX - minX); - *h = (double)fabs(maxY - minY); -*/ -} - -// Calculate size from current operations -void wxPseudoMetaFile::CalculateSize(wxDrawnShape* shape) -{ - double boundMinX, boundMinY, boundMaxX, boundMaxY; - - GetBounds(& boundMinX, & boundMinY, & boundMaxX, & boundMaxY); - - SetSize(boundMaxX - boundMinX, boundMaxY - boundMinY); - - if (shape) - { - shape->SetWidth(m_width); - shape->SetHeight(m_height); - } -} - -// Set of functions for drawing into a pseudo metafile. -// They use integers, but doubles are used internally for accuracy -// when scaling. - -void wxPseudoMetaFile::DrawLine(const wxPoint& pt1, const wxPoint& pt2) -{ - wxOpDraw *theOp = new wxOpDraw(DRAWOP_DRAW_LINE, - (double) pt1.x, (double) pt1.y, (double) pt2.x, (double) pt2.y); - - m_ops.Append(theOp); -} - -void wxPseudoMetaFile::DrawRectangle(const wxRect& rect) -{ - wxOpDraw *theOp = new wxOpDraw(DRAWOP_DRAW_RECT, - (double) rect.x, (double) rect.y, (double) rect.width, (double) rect.height); - - m_ops.Append(theOp); -} - -void wxPseudoMetaFile::DrawRoundedRectangle(const wxRect& rect, double radius) -{ - wxOpDraw *theOp = new wxOpDraw(DRAWOP_DRAW_ROUNDED_RECT, - (double) rect.x, (double) rect.y, (double) rect.width, (double) rect.height); - - theOp->m_radius = radius; - - m_ops.Append(theOp); -} - -void wxPseudoMetaFile::DrawEllipse(const wxRect& rect) -{ - wxOpDraw *theOp = new wxOpDraw(DRAWOP_DRAW_ELLIPSE, - (double) rect.x, (double) rect.y, (double) rect.width, (double) rect.height); - - m_ops.Append(theOp); -} - -void wxPseudoMetaFile::DrawArc(const wxPoint& centrePt, const wxPoint& startPt, const wxPoint& endPt) -{ - wxOpDraw *theOp = new wxOpDraw(DRAWOP_DRAW_ARC, - (double) centrePt.x, (double) centrePt.y, (double) startPt.x, (double) startPt.y); - - theOp->m_x3 = (double) endPt.x; - theOp->m_y3 = (double) endPt.y; - - m_ops.Append(theOp); -} - -void wxPseudoMetaFile::DrawEllipticArc(const wxRect& rect, double startAngle, double endAngle) -{ - const double pi = 3.1415926535897932384626433832795 ; - - double startAngleRadians = startAngle* (pi*2.0/360.0); - double endAngleRadians = endAngle* (pi*2.0/360.0); - - wxOpDraw *theOp = new wxOpDraw(DRAWOP_DRAW_ELLIPTIC_ARC, - (double) rect.x, (double) rect.y, (double) rect.width, (double) rect.height); - - theOp->m_x3 = startAngleRadians; - theOp->m_y3 = endAngleRadians; - - m_ops.Append(theOp); -} - -void wxPseudoMetaFile::DrawPoint(const wxPoint& pt) -{ - wxOpDraw *theOp = new wxOpDraw(DRAWOP_DRAW_POINT, - (double) pt.x, (double) pt.y, 0.0, 0.0); - - m_ops.Append(theOp); -} - -void wxPseudoMetaFile::DrawText(const wxString& text, const wxPoint& pt) -{ - wxOpDraw *theOp = new wxOpDraw(DRAWOP_DRAW_TEXT, - (double) pt.x, (double) pt.y, 0.0, 0.0); - - theOp->m_textString = copystring(text); - - m_ops.Append(theOp); -} - -void wxPseudoMetaFile::DrawLines(int n, wxPoint pts[]) -{ - wxRealPoint* realPoints = new wxRealPoint[n]; - int i; - for (i = 0; i < n; i++) - { - realPoints[i].x = pts[i].x; - realPoints[i].y = pts[i].y; - } - wxOpPolyDraw* theOp = new wxOpPolyDraw(DRAWOP_DRAW_POLYLINE, n, realPoints); - m_ops.Append(theOp); -} - -void wxPseudoMetaFile::DrawPolygon(int n, wxPoint pts[], int flags) -{ - wxRealPoint* realPoints = new wxRealPoint[n]; - int i; - for (i = 0; i < n; i++) - { - realPoints[i].x = pts[i].x; - realPoints[i].y = pts[i].y; - } - wxOpPolyDraw* theOp = new wxOpPolyDraw(DRAWOP_DRAW_POLYGON, n, realPoints); - m_ops.Append(theOp); - - if (flags & oglMETAFLAGS_OUTLINE) - m_outlineOp = (m_ops.Number() - 1); -} - -void wxPseudoMetaFile::DrawSpline(int n, wxPoint pts[]) -{ - wxRealPoint* realPoints = new wxRealPoint[n]; - int i; - for (i = 0; i < n; i++) - { - realPoints[i].x = pts[i].x; - realPoints[i].y = pts[i].y; - } - wxOpPolyDraw* theOp = new wxOpPolyDraw(DRAWOP_DRAW_SPLINE, n, realPoints); - m_ops.Append(theOp); -} - -void wxPseudoMetaFile::SetClippingRect(const wxRect& rect) -{ - wxOpSetClipping* theOp = new wxOpSetClipping(DRAWOP_SET_CLIPPING_RECT, - (double) rect.x, (double) rect.y, (double) rect.width, (double) rect.height); -} - -void wxPseudoMetaFile::DestroyClippingRect() -{ - wxOpSetClipping* theOp = new wxOpSetClipping(DRAWOP_DESTROY_CLIPPING_RECT, - 0.0, 0.0, 0.0, 0.0); - - m_ops.Append(theOp); -} - -void wxPseudoMetaFile::SetPen(wxPen* pen, bool isOutline) -{ - m_gdiObjects.Append(pen); - int n = m_gdiObjects.Number(); - - wxOpSetGDI* theOp = new wxOpSetGDI(DRAWOP_SET_PEN, this, n - 1); - - m_ops.Append(theOp); - - if (isOutline) - { - m_outlineColours.Append((wxObject*) (n - 1)); - } -} - -void wxPseudoMetaFile::SetBrush(wxBrush* brush, bool isFill) -{ - m_gdiObjects.Append(brush); - int n = m_gdiObjects.Number(); - - wxOpSetGDI* theOp = new wxOpSetGDI(DRAWOP_SET_BRUSH, this, n - 1); - - m_ops.Append(theOp); - - if (isFill) - { - m_fillColours.Append((wxObject*) (n - 1)); - } -} - -void wxPseudoMetaFile::SetFont(wxFont* font) -{ - m_gdiObjects.Append(font); - int n = m_gdiObjects.Number(); - - wxOpSetGDI* theOp = new wxOpSetGDI(DRAWOP_SET_FONT, this, n - 1); - - m_ops.Append(theOp); -} - -void wxPseudoMetaFile::SetTextColour(const wxColour& colour) -{ - wxOpSetGDI* theOp = new wxOpSetGDI(DRAWOP_SET_TEXT_COLOUR, this, 0); - theOp->m_r = colour.Red(); - theOp->m_g = colour.Green(); - theOp->m_b = colour.Blue(); - - m_ops.Append(theOp); -} - -void wxPseudoMetaFile::SetBackgroundColour(const wxColour& colour) -{ - wxOpSetGDI* theOp = new wxOpSetGDI(DRAWOP_SET_BK_COLOUR, this, 0); - theOp->m_r = colour.Red(); - theOp->m_g = colour.Green(); - theOp->m_b = colour.Blue(); - - m_ops.Append(theOp); -} - -void wxPseudoMetaFile::SetBackgroundMode(int mode) -{ - wxOpSetGDI* theOp = new wxOpSetGDI(DRAWOP_SET_BK_MODE, this, 0, mode); - - m_ops.Append(theOp); -} - diff --git a/utils/ogl/src/drawn.h b/utils/ogl/src/drawn.h deleted file mode 100644 index 5632990696..0000000000 --- a/utils/ogl/src/drawn.h +++ /dev/null @@ -1,227 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: drawn.h -// Purpose: wxDrawnShape -// Author: Julian Smart -// Modified by: -// Created: 12/07/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _OGL_DRAWN_H_ -#define _OGL_DRAWN_H_ - -#ifdef __GNUG__ -#pragma interface "drawn.h" -#endif - -#include "basic.h" - -#define oglMETAFLAGS_OUTLINE 1 -#define oglMETAFLAGS_ATTACHMENTS 2 - -class wxDrawnShape; -class wxPseudoMetaFile: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxPseudoMetaFile) - public: - wxPseudoMetaFile(); - wxPseudoMetaFile(wxPseudoMetaFile& mf); - ~wxPseudoMetaFile(); - - void Draw(wxDC& dc, double xoffset, double yoffset); - -#ifdef PROLOGIO - void WriteAttributes(wxExpr *clause, int whichAngle); - void ReadAttributes(wxExpr *clause, int whichAngle); -#endif - - void Clear(); - - void Copy(wxPseudoMetaFile& copy); - - void Scale(double sx, double sy); - void ScaleTo(double w, double h); // Scale to fit size - void Translate(double x, double y); - - // Rotate about the given axis by theta radians from the x axis. - void Rotate(double x, double y, double theta); - - bool LoadFromMetaFile(char *filename, double *width, double *height); - - void GetBounds(double *minX, double *minY, double *maxX, double *maxY); - - // Calculate size from current operations - void CalculateSize(wxDrawnShape* shape); - - inline wxList& GetOutlineColours() const { return (wxList&) m_outlineColours; } - inline wxList& GetFillColours() const { return (wxList&) m_fillColours; } - inline void SetRotateable(bool rot) { m_rotateable = rot; } - inline bool GetRotateable() const { return m_rotateable; } - - inline void SetSize(double w, double h) { m_width = w; m_height = h; } - - inline void SetFillBrush(wxBrush* brush) { m_fillBrush = brush; } - inline wxBrush* GetFillBrush() const { return m_fillBrush; } - - inline void SetOutlinePen(wxPen* pen) { m_outlinePen = pen; } - inline wxPen* GetOutlinePen() const { return m_outlinePen; } - - inline void SetOutlineOp(int op) { m_outlineOp = op; } - inline int GetOutlineOp() const { return m_outlineOp; } - - inline wxList& GetOps() const { return (wxList&) m_ops; } - - // Is this a valid (non-empty) metafile? - inline bool IsValid() const { return (m_ops.Number() > 0); } - -public: - /// Set of functions for drawing into a pseudo metafile. - /// They use integers, but doubles are used internally for accuracy - /// when scaling. - - virtual void DrawLine(const wxPoint& pt1, const wxPoint& pt2); - virtual void DrawRectangle(const wxRect& rect); - virtual void DrawRoundedRectangle(const wxRect& rect, double radius); - virtual void DrawArc(const wxPoint& centrePt, const wxPoint& startPt, const wxPoint& endPt); - virtual void DrawEllipticArc(const wxRect& rect, double startAngle, double endAngle); - virtual void DrawEllipse(const wxRect& rect); - virtual void DrawPoint(const wxPoint& pt); - virtual void DrawText(const wxString& text, const wxPoint& pt); - virtual void DrawLines(int n, wxPoint pts[]); - // flags: - // oglMETAFLAGS_OUTLINE: will be used for drawing the outline and - // also drawing lines/arrows at the circumference. - // oglMETAFLAGS_ATTACHMENTS: will be used for initialising attachment points at - // the vertices (perhaps a rare case...) - virtual void DrawPolygon(int n, wxPoint pts[], int flags = 0); - virtual void DrawSpline(int n, wxPoint pts[]); - - virtual void SetClippingRect(const wxRect& rect); - virtual void DestroyClippingRect(); - - virtual void SetPen(wxPen* pen, bool isOutline = FALSE); // TODO: eventually, just store GDI object attributes, not actual - virtual void SetBrush(wxBrush* brush, bool isFill = FALSE); // pens/brushes etc. - virtual void SetFont(wxFont* font); - virtual void SetTextColour(const wxColour& colour); - virtual void SetBackgroundColour(const wxColour& colour); - virtual void SetBackgroundMode(int mode); - -public: - bool m_rotateable; - double m_width; - double m_height; - wxList m_ops; // List of drawing operations (see drawnp.h) - wxList m_gdiObjects; // List of pens, brushes and fonts for this object. - int m_outlineOp; // The op representing the outline, if any - - // Pen/brush specifying outline/fill colours - // to override operations. - wxPen* m_outlinePen; - wxBrush* m_fillBrush; - wxList m_outlineColours; // List of the GDI operations that comprise the outline - wxList m_fillColours; // List of the GDI operations that fill the shape - double m_currentRotation; -}; - -#define oglDRAWN_ANGLE_0 0 -#define oglDRAWN_ANGLE_90 1 -#define oglDRAWN_ANGLE_180 2 -#define oglDRAWN_ANGLE_270 3 - -class wxDrawnShape: public wxRectangleShape -{ - DECLARE_DYNAMIC_CLASS(wxDrawnShape) - public: - wxDrawnShape(); - ~wxDrawnShape(); - - void OnDraw(wxDC& dc); - -#ifdef PROLOGIO - // I/O - void WriteAttributes(wxExpr *clause); - void ReadAttributes(wxExpr *clause); -#endif - - // Does the copying for this object - void Copy(wxShape& copy); - - void Scale(double sx, double sy); - void Translate(double x, double y); - // Rotate about the given axis by theta radians from the x axis. - void Rotate(double x, double y, double theta); - - // Get current rotation - inline double GetRotation() const { return m_rotation; } - - void SetSize(double w, double h, bool recursive = TRUE); - bool LoadFromMetaFile(char *filename); - - inline void SetSaveToFile(bool save) { m_saveToFile = save; } - inline wxPseudoMetaFile& GetMetaFile(int which = 0) const { return (wxPseudoMetaFile&) m_metafiles[which]; } - - void OnDrawOutline(wxDC& dc, double x, double y, double w, double h); - - // Get the perimeter point using the special outline op, if there is one, - // otherwise use default wxRectangleShape scheme - bool GetPerimeterPoint(double x1, double y1, - double x2, double y2, - double *x3, double *y3); - - /// Set of functions for drawing into a pseudo metafile. - /// They use integers, but doubles are used internally for accuracy - /// when scaling. - - virtual void DrawLine(const wxPoint& pt1, const wxPoint& pt2); - virtual void DrawRectangle(const wxRect& rect); - virtual void DrawRoundedRectangle(const wxRect& rect, double radius); - virtual void DrawArc(const wxPoint& centrePt, const wxPoint& startPt, const wxPoint& endPt); - virtual void DrawEllipticArc(const wxRect& rect, double startAngle, double endAngle); - virtual void DrawEllipse(const wxRect& rect); - virtual void DrawPoint(const wxPoint& pt); - virtual void DrawText(const wxString& text, const wxPoint& pt); - virtual void DrawLines(int n, wxPoint pts[]); - virtual void DrawPolygon(int n, wxPoint pts[], int flags = 0); - virtual void DrawSpline(int n, wxPoint pts[]); - - virtual void SetClippingRect(const wxRect& rect); - virtual void DestroyClippingRect(); - - virtual void SetDrawnPen(wxPen* pen, bool isOutline = FALSE); // TODO: eventually, just store GDI object attributes, not actual - virtual void SetDrawnBrush(wxBrush* brush, bool isFill = FALSE); // pens/brushes etc. - virtual void SetDrawnFont(wxFont* font); - virtual void SetDrawnTextColour(const wxColour& colour); - virtual void SetDrawnBackgroundColour(const wxColour& colour); - virtual void SetDrawnBackgroundMode(int mode); - - // Set the width/height according to the shapes in the metafile. - // Call this after drawing into the shape. - inline void CalculateSize() { m_metafiles[m_currentAngle].CalculateSize(this); } - - inline void DrawAtAngle(int angle) { m_currentAngle = angle; }; - - inline int GetAngle() const { return m_currentAngle; } - -// Implementation -protected: - // Which metafile do we use now? Based on current rotation and validity - // of metafiles. - int DetermineMetaFile(double rotation); - -private: - // One metafile for each 90 degree rotation (or just a single one). - wxPseudoMetaFile m_metafiles[4]; - - // Don't save all wxDrawnShape metafiles to file: sometimes - // we take the metafile data from a symbol library. - bool m_saveToFile; - - // Which angle are we using/drawing into? - int m_currentAngle; -}; - -#endif - // _DRAWN_H_ - diff --git a/utils/ogl/src/drawnp.h b/utils/ogl/src/drawnp.h deleted file mode 100644 index 991f5dc823..0000000000 --- a/utils/ogl/src/drawnp.h +++ /dev/null @@ -1,205 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: drawnp.h -// Purpose: Private header for wxDrawnShape -// Author: Julian Smart -// Modified by: -// Created: 12/07/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _OGL_DRAWNP_H_ -#define _OGL_DRAWNP_H_ - -#ifdef __GNUG__ -#pragma interface "drawnp.h" -#endif - -#include "drawn.h" - -/* - * Drawing operations - * - */ - -#define DRAWOP_SET_PEN 1 -#define DRAWOP_SET_BRUSH 2 -#define DRAWOP_SET_FONT 3 -#define DRAWOP_SET_TEXT_COLOUR 4 -#define DRAWOP_SET_BK_COLOUR 5 -#define DRAWOP_SET_BK_MODE 6 -#define DRAWOP_SET_CLIPPING_RECT 7 -#define DRAWOP_DESTROY_CLIPPING_RECT 8 - -/* -#define DRAWOP_CREATE_PEN 10 -#define DRAWOP_CREATE_BRUSH 11 -#define DRAWOP_CREATE_FONT 12 -*/ - -#define DRAWOP_DRAW_LINE 20 -#define DRAWOP_DRAW_POLYLINE 21 -#define DRAWOP_DRAW_POLYGON 22 -#define DRAWOP_DRAW_RECT 23 -#define DRAWOP_DRAW_ROUNDED_RECT 24 -#define DRAWOP_DRAW_ELLIPSE 25 -#define DRAWOP_DRAW_POINT 26 -#define DRAWOP_DRAW_ARC 27 -#define DRAWOP_DRAW_TEXT 28 -#define DRAWOP_DRAW_SPLINE 29 -#define DRAWOP_DRAW_ELLIPTIC_ARC 30 - -/* - * Base, virtual class - * - */ - -class wxDrawOp: public wxObject -{ -public: - inline wxDrawOp(int theOp) { m_op = theOp; } - inline ~wxDrawOp() {} - inline virtual void Scale(double xScale, double yScale) {}; - inline virtual void Translate(double x, double y) {}; - inline virtual void Rotate(double x, double y, double theta, double sinTheta, double cosTheta) {}; - virtual void Do(wxDC& dc, double xoffset, double yoffset) = 0; - virtual wxDrawOp *Copy(wxPseudoMetaFile *newImage) = 0; - virtual wxExpr *WriteExpr(wxPseudoMetaFile *image) = 0; - virtual void ReadExpr(wxPseudoMetaFile *image, wxExpr *expr) = 0; - - inline int GetOp() const { return m_op; } - - // Draw an outline using the current operation. By default, return FALSE (not drawn) - virtual bool OnDrawOutline(wxDC& dc, double x, double y, double w, double h, - double oldW, double oldH) { return FALSE; } - - // Get the perimeter point using this data - virtual bool GetPerimeterPoint(double x1, double y1, - double x2, double y2, - double *x3, double *y3, - double xOffset, double yOffset, - int attachmentMode) - { return FALSE; } - -protected: - int m_op; - -}; - -/* - * Set font, brush, text colour - * - */ - -class wxOpSetGDI: public wxDrawOp -{ - public: - wxOpSetGDI(int theOp, wxPseudoMetaFile *theImage, int theGdiIndex, int theMode = 0); - void Do(wxDC& dc, double xoffset, double yoffset); - wxDrawOp *Copy(wxPseudoMetaFile *newImage); - wxExpr *WriteExpr(wxPseudoMetaFile *image); - void ReadExpr(wxPseudoMetaFile *image, wxExpr *expr); - -public: - int m_mode; - int m_gdiIndex; - wxPseudoMetaFile* m_image; - unsigned char m_r; - unsigned char m_g; - unsigned char m_b; -}; - -/* - * Set/destroy clipping - * - */ - -class wxOpSetClipping: public wxDrawOp -{ -public: - wxOpSetClipping(int theOp, double theX1, double theY1, double theX2, double theY2); - void Do(wxDC& dc, double xoffset, double yoffset); - void Scale(double xScale, double yScale); - void Translate(double x, double y); - wxDrawOp *Copy(wxPseudoMetaFile *newImage); - wxExpr *WriteExpr(wxPseudoMetaFile *image); - void ReadExpr(wxPseudoMetaFile *image, wxExpr *expr); - -public: - double m_x1; - double m_y1; - double m_x2; - double m_y2; -}; - -/* - * Draw line, rectangle, rounded rectangle, ellipse, point, arc, text - * - */ - -class wxOpDraw: public wxDrawOp -{ - public: - wxOpDraw(int theOp, double theX1, double theY1, double theX2, double theY2, - double radius = 0.0, char *s = NULL); - ~wxOpDraw(); - void Do(wxDC& dc, double xoffset, double yoffset); - void Scale(double scaleX, double scaleY); - void Translate(double x, double y); - void Rotate(double x, double y, double theta, double sinTheta, double cosTheta); - wxDrawOp *Copy(wxPseudoMetaFile *newImage); - wxExpr *WriteExpr(wxPseudoMetaFile *image); - void ReadExpr(wxPseudoMetaFile *image, wxExpr *expr); - -public: - double m_x1; - double m_y1; - double m_x2; - double m_y2; - double m_x3; - double m_y3; - double m_radius; - char* m_textString; - -}; - -/* - * Draw polyline, spline, polygon - * - */ - -class wxOpPolyDraw: public wxDrawOp -{ -public: - wxOpPolyDraw(int theOp, int n, wxRealPoint *thePoints); - ~wxOpPolyDraw(); - void Do(wxDC& dc, double xoffset, double yoffset); - void Scale(double scaleX, double scaleY); - void Translate(double x, double y); - void Rotate(double x, double y, double theta, double sinTheta, double cosTheta); - wxDrawOp *Copy(wxPseudoMetaFile *newImage); - wxExpr *WriteExpr(wxPseudoMetaFile *image); - void ReadExpr(wxPseudoMetaFile *image, wxExpr *expr); - - // Draw an outline using the current operation. - virtual bool OnDrawOutline(wxDC& dc, double x, double y, double w, double h, - double oldW, double oldH); - - // Get the perimeter point using this data - bool GetPerimeterPoint(double x1, double y1, - double x2, double y2, - double *x3, double *y3, - double xOffset, double yOffset, - int attachmentMode); - -public: - wxRealPoint* m_points; - int m_noPoints; - -}; - -#endif - // _OGL_DRAWNP_H_ - - diff --git a/utils/ogl/src/lines.cpp b/utils/ogl/src/lines.cpp deleted file mode 100644 index a62cffbfa3..0000000000 --- a/utils/ogl/src/lines.cpp +++ /dev/null @@ -1,2515 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: lines.cpp -// Purpose: wxLineShape -// Author: Julian Smart -// Modified by: -// Created: 12/07/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "lines.h" -#pragma implementation "linesp.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include -#endif - -#include - -#if wxUSE_IOSTREAMH -#include -#else -#include -#endif - -#include -#include - -#include "basic.h" -#include "basicp.h" -#include "lines.h" -#include "linesp.h" -#include "drawn.h" -#include "misc.h" -#include "canvas.h" - -// Line shape -IMPLEMENT_DYNAMIC_CLASS(wxLineShape, wxShape) - -wxLineShape::wxLineShape() -{ - m_sensitivity = OP_CLICK_LEFT | OP_CLICK_RIGHT; - m_draggable = FALSE; - m_attachmentTo = 0; - m_attachmentFrom = 0; -/* - m_actualTextWidth = 0.0; - m_actualTextHeight = 0.0; -*/ - m_from = NULL; - m_to = NULL; - m_erasing = FALSE; - m_arrowSpacing = 5.0; // For the moment, don't bother saving this to file. - m_ignoreArrowOffsets = FALSE; - m_isSpline = FALSE; - m_maintainStraightLines = FALSE; - m_alignmentStart = 0; - m_alignmentEnd = 0; - - m_lineControlPoints = NULL; - - // Clear any existing regions (created in an earlier constructor) - // and make the three line regions. - ClearRegions(); - wxShapeRegion *newRegion = new wxShapeRegion; - newRegion->SetName("Middle"); - newRegion->SetSize(150, 50); - m_regions.Append((wxObject *)newRegion); - - newRegion = new wxShapeRegion; - newRegion->SetName("Start"); - newRegion->SetSize(150, 50); - m_regions.Append((wxObject *)newRegion); - - newRegion = new wxShapeRegion; - newRegion->SetName("End"); - newRegion->SetSize(150, 50); - m_regions.Append((wxObject *)newRegion); - - for (int i = 0; i < 3; i++) - m_labelObjects[i] = NULL; -} - -wxLineShape::~wxLineShape() -{ - if (m_lineControlPoints) - { - ClearPointList(*m_lineControlPoints); - delete m_lineControlPoints; - } - for (int i = 0; i < 3; i++) - { - if (m_labelObjects[i]) - { - m_labelObjects[i]->Select(FALSE); - m_labelObjects[i]->RemoveFromCanvas(m_canvas); - delete m_labelObjects[i]; - m_labelObjects[i] = NULL; - } - } - ClearArrowsAtPosition(-1); -} - -void wxLineShape::MakeLineControlPoints(int n) -{ - if (m_lineControlPoints) - { - ClearPointList(*m_lineControlPoints); - delete m_lineControlPoints; - } - m_lineControlPoints = new wxList; - - int i = 0; - for (i = 0; i < n; i++) - { - wxRealPoint *point = new wxRealPoint(-999, -999); - m_lineControlPoints->Append((wxObject*) point); - } -} - -wxNode *wxLineShape::InsertLineControlPoint(wxDC* dc) -{ - if (dc) - Erase(*dc); - - wxNode *last = m_lineControlPoints->Last(); - wxNode *second_last = last->Previous(); - wxRealPoint *last_point = (wxRealPoint *)last->Data(); - wxRealPoint *second_last_point = (wxRealPoint *)second_last->Data(); - - // Choose a point half way between the last and penultimate points - double line_x = ((last_point->x + second_last_point->x)/2); - double line_y = ((last_point->y + second_last_point->y)/2); - - wxRealPoint *point = new wxRealPoint(line_x, line_y); - wxNode *node = m_lineControlPoints->Insert(last, (wxObject*) point); - return node; -} - -bool wxLineShape::DeleteLineControlPoint() -{ - if (m_lineControlPoints->Number() < 3) - return FALSE; - - wxNode *last = m_lineControlPoints->Last(); - wxNode *second_last = last->Previous(); - - wxRealPoint *second_last_point = (wxRealPoint *)second_last->Data(); - delete second_last_point; - delete second_last; - - return TRUE; -} - -void wxLineShape::Initialise() -{ - if (m_lineControlPoints) - { - // Just move the first and last control points - wxNode *first = m_lineControlPoints->First(); - wxRealPoint *first_point = (wxRealPoint *)first->Data(); - - wxNode *last = m_lineControlPoints->Last(); - wxRealPoint *last_point = (wxRealPoint *)last->Data(); - - // If any of the line points are at -999, we must - // initialize them by placing them half way between the first - // and the last. - wxNode *node = first->Next(); - while (node) - { - wxRealPoint *point = (wxRealPoint *)node->Data(); - if (point->x == -999) - { - double x1, y1, x2, y2; - if (first_point->x < last_point->x) - { x1 = first_point->x; x2 = last_point->x; } - else - { x2 = first_point->x; x1 = last_point->x; } - - if (first_point->y < last_point->y) - { y1 = first_point->y; y2 = last_point->y; } - else - { y2 = first_point->y; y1 = last_point->y; } - - point->x = ((x2 - x1)/2 + x1); - point->y = ((y2 - y1)/2 + y1); - } - node = node->Next(); - } - } -} - -// Format a text string according to the region size, adding -// strings with positions to region text list -void wxLineShape::FormatText(wxDC& dc, const wxString& s, int i) -{ - double w, h; - ClearText(i); - - if (m_regions.Number() < 1) - return; - wxNode *node = m_regions.Nth(i); - if (!node) - return; - - wxShapeRegion *region = (wxShapeRegion *)node->Data(); - region->SetText(s); - dc.SetFont(* region->GetFont()); - - region->GetSize(&w, &h); - // Initialize the size if zero - if (((w == 0) || (h == 0)) && (strlen(s) > 0)) - { - w = 100; h = 50; - region->SetSize(w, h); - } - - wxStringList *string_list = oglFormatText(dc, s, (w-5), (h-5), region->GetFormatMode()); - node = string_list->First(); - while (node) - { - char *s = (char *)node->Data(); - wxShapeTextLine *line = new wxShapeTextLine(0.0, 0.0, s); - region->GetFormattedText().Append((wxObject *)line); - node = node->Next(); - } - delete string_list; - double actualW = w; - double actualH = h; - if (region->GetFormatMode() & FORMAT_SIZE_TO_CONTENTS) - { - oglGetCentredTextExtent(dc, &(region->GetFormattedText()), m_xpos, m_ypos, w, h, &actualW, &actualH); - if ((actualW != w ) || (actualH != h)) - { - double xx, yy; - GetLabelPosition(i, &xx, &yy); - EraseRegion(dc, region, xx, yy); - if (m_labelObjects[i]) - { - m_labelObjects[i]->Select(FALSE, &dc); - m_labelObjects[i]->Erase(dc); - m_labelObjects[i]->SetSize(actualW, actualH); - } - - region->SetSize(actualW, actualH); - - if (m_labelObjects[i]) - { - m_labelObjects[i]->Select(TRUE, & dc); - m_labelObjects[i]->Draw(dc); - } - } - } - oglCentreText(dc, &(region->GetFormattedText()), m_xpos, m_ypos, actualW, actualH, region->GetFormatMode()); - m_formatted = TRUE; -} - -void wxLineShape::DrawRegion(wxDC& dc, wxShapeRegion *region, double x, double y) -{ - if (GetDisableLabel()) - return; - - double w, h; - double xx, yy; - region->GetSize(&w, &h); - - // Get offset from x, y - region->GetPosition(&xx, &yy); - - double xp = xx + x; - double yp = yy + y; - - // First, clear a rectangle for the text IF there is any - if (region->GetFormattedText().Number() > 0) - { - dc.SetPen(* g_oglWhiteBackgroundPen); - dc.SetBrush(* g_oglWhiteBackgroundBrush); - - // Now draw the text - if (region->GetFont()) dc.SetFont(* region->GetFont()); - - dc.DrawRectangle((long)(xp - w/2.0), (long)(yp - h/2.0), (long)w, (long)h); - - if (m_pen) dc.SetPen(* m_pen); - dc.SetTextForeground(* region->GetActualColourObject()); - -#ifdef __WXMSW__ - dc.SetTextBackground(g_oglWhiteBackgroundBrush->GetColour()); -#endif - - oglDrawFormattedText(dc, &(region->GetFormattedText()), xp, yp, w, h, region->GetFormatMode()); - } -} - -void wxLineShape::EraseRegion(wxDC& dc, wxShapeRegion *region, double x, double y) -{ - if (GetDisableLabel()) - return; - - double w, h; - double xx, yy; - region->GetSize(&w, &h); - - // Get offset from x, y - region->GetPosition(&xx, &yy); - - double xp = xx + x; - double yp = yy + y; - - if (region->GetFormattedText().Number() > 0) - { - dc.SetPen(* g_oglWhiteBackgroundPen); - dc.SetBrush(* g_oglWhiteBackgroundBrush); - - dc.DrawRectangle((long)(xp - w/2.0), (long)(yp - h/2.0), (long)w, (long)h); - } -} - -// Get the reference point for a label. Region x and y -// are offsets from this. -// position is 0, 1, 2 -void wxLineShape::GetLabelPosition(int position, double *x, double *y) -{ - switch (position) - { - case 0: - { - // Want to take the middle section for the label - int n = m_lineControlPoints->Number(); - int half_way = (int)(n/2); - - // Find middle of this line - wxNode *node = m_lineControlPoints->Nth(half_way - 1); - wxRealPoint *point = (wxRealPoint *)node->Data(); - wxNode *next_node = node->Next(); - wxRealPoint *next_point = (wxRealPoint *)next_node->Data(); - - double dx = (next_point->x - point->x); - double dy = (next_point->y - point->y); - *x = (double)(point->x + dx/2.0); - *y = (double)(point->y + dy/2.0); - break; - } - case 1: - { - wxNode *node = m_lineControlPoints->First(); - *x = ((wxRealPoint *)node->Data())->x; - *y = ((wxRealPoint *)node->Data())->y; - break; - } - case 2: - { - wxNode *node = m_lineControlPoints->Last(); - *x = ((wxRealPoint *)node->Data())->x; - *y = ((wxRealPoint *)node->Data())->y; - break; - } - default: - break; - } -} - -/* - * Find whether line is supposed to be vertical or horizontal and - * make it so. - * - */ -void GraphicsStraightenLine(wxRealPoint *point1, wxRealPoint *point2) -{ - double dx = point2->x - point1->x; - double dy = point2->y - point1->y; - - if (dx == 0.0) - return; - else if (fabs(dy/dx) > 1.0) - { - point2->x = point1->x; - } - else point2->y = point1->y; -} - -void wxLineShape::Straighten(wxDC *dc) -{ - if (!m_lineControlPoints || m_lineControlPoints->Number() < 3) - return; - - if (dc) - Erase(* dc); - - wxNode *first_point_node = m_lineControlPoints->First(); - wxNode *last_point_node = m_lineControlPoints->Last(); - wxNode *second_last_point_node = last_point_node->Previous(); - - wxRealPoint *last_point = (wxRealPoint *)last_point_node->Data(); - wxRealPoint *second_last_point = (wxRealPoint *)second_last_point_node->Data(); - - GraphicsStraightenLine(last_point, second_last_point); - - wxNode *node = first_point_node; - while (node && (node != second_last_point_node)) - { - wxRealPoint *point = (wxRealPoint *)node->Data(); - wxRealPoint *next_point = (wxRealPoint *)(node->Next()->Data()); - - GraphicsStraightenLine(point, next_point); - node = node->Next(); - } - - if (dc) - Draw(* dc); -} - - -void wxLineShape::Unlink() -{ - if (m_to) - m_to->GetLines().DeleteObject(this); - if (m_from) - m_from->GetLines().DeleteObject(this); - m_to = NULL; - m_from = NULL; -} - -void wxLineShape::SetEnds(double x1, double y1, double x2, double y2) -{ - // Find centre point - wxNode *first_point_node = m_lineControlPoints->First(); - wxNode *last_point_node = m_lineControlPoints->Last(); - wxRealPoint *first_point = (wxRealPoint *)first_point_node->Data(); - wxRealPoint *last_point = (wxRealPoint *)last_point_node->Data(); - - first_point->x = x1; - first_point->y = y1; - last_point->x = x2; - last_point->y = y2; - - m_xpos = (double)((x1 + x2)/2.0); - m_ypos = (double)((y1 + y2)/2.0); -} - -// Get absolute positions of ends -void wxLineShape::GetEnds(double *x1, double *y1, double *x2, double *y2) -{ - wxNode *first_point_node = m_lineControlPoints->First(); - wxNode *last_point_node = m_lineControlPoints->Last(); - wxRealPoint *first_point = (wxRealPoint *)first_point_node->Data(); - wxRealPoint *last_point = (wxRealPoint *)last_point_node->Data(); - - *x1 = first_point->x; *y1 = first_point->y; - *x2 = last_point->x; *y2 = last_point->y; -} - -void wxLineShape::SetAttachments(int from_attach, int to_attach) -{ - m_attachmentFrom = from_attach; - m_attachmentTo = to_attach; -} - -bool wxLineShape::HitTest(double x, double y, int *attachment, double *distance) -{ - if (!m_lineControlPoints) - return FALSE; - - // Look at label regions in case mouse is over a label - bool inLabelRegion = FALSE; - for (int i = 0; i < 3; i ++) - { - wxNode *regionNode = m_regions.Nth(i); - if (regionNode) - { - wxShapeRegion *region = (wxShapeRegion *)regionNode->Data(); - if (region->m_formattedText.Number() > 0) - { - double xp, yp, cx, cy, cw, ch; - GetLabelPosition(i, &xp, &yp); - // Offset region from default label position - region->GetPosition(&cx, &cy); - region->GetSize(&cw, &ch); - cx += xp; - cy += yp; - double rLeft = (double)(cx - (cw/2.0)); - double rTop = (double)(cy - (ch/2.0)); - double rRight = (double)(cx + (cw/2.0)); - double rBottom = (double)(cy + (ch/2.0)); - if (x > rLeft && x < rRight && y > rTop && y < rBottom) - { - inLabelRegion = TRUE; - i = 3; - } - } - } - } - - wxNode *node = m_lineControlPoints->First(); - - while (node && node->Next()) - { - wxRealPoint *point1 = (wxRealPoint *)node->Data(); - wxRealPoint *point2 = (wxRealPoint *)node->Next()->Data(); - - // Allow for inaccurate mousing or vert/horiz lines - int extra = 4; - double left = wxMin(point1->x, point2->x) - extra; - double right = wxMax(point1->x, point2->x) + extra; - - double bottom = wxMin(point1->y, point2->y) - extra; - double top = wxMax(point1->y, point2->y) + extra; - - if ((x > left && x < right && y > bottom && y < top) || inLabelRegion) - { - // Work out distance from centre of line - double centre_x = (double)(left + (right - left)/2.0); - double centre_y = (double)(bottom + (top - bottom)/2.0); - - *attachment = 0; - *distance = (double)sqrt((centre_x - x)*(centre_x - x) + (centre_y - y)*(centre_y - y)); - return TRUE; - } - - node = node->Next(); - } - return FALSE; -} - -void wxLineShape::DrawArrows(wxDC& dc) -{ - // Distance along line of each arrow: space them out evenly. - double startArrowPos = 0.0; - double endArrowPos = 0.0; - double middleArrowPos = 0.0; - - wxNode *node = m_arcArrows.First(); - while (node) - { - wxArrowHead *arrow = (wxArrowHead *)node->Data(); - switch (arrow->GetArrowEnd()) - { - case ARROW_POSITION_START: - { - if ((arrow->GetXOffset() != 0.0) && !m_ignoreArrowOffsets) - // If specified, x offset is proportional to line length - DrawArrow(dc, arrow, arrow->GetXOffset(), TRUE); - else - { - DrawArrow(dc, arrow, startArrowPos, FALSE); // Absolute distance - startArrowPos += arrow->GetSize() + arrow->GetSpacing(); - } - break; - } - case ARROW_POSITION_END: - { - if ((arrow->GetXOffset() != 0.0) && !m_ignoreArrowOffsets) - DrawArrow(dc, arrow, arrow->GetXOffset(), TRUE); - else - { - DrawArrow(dc, arrow, endArrowPos, FALSE); - endArrowPos += arrow->GetSize() + arrow->GetSpacing(); - } - break; - } - case ARROW_POSITION_MIDDLE: - { - arrow->SetXOffset(middleArrowPos); - if ((arrow->GetXOffset() != 0.0) && !m_ignoreArrowOffsets) - DrawArrow(dc, arrow, arrow->GetXOffset(), TRUE); - else - { - DrawArrow(dc, arrow, middleArrowPos, FALSE); - middleArrowPos += arrow->GetSize() + arrow->GetSpacing(); - } - break; - } - } - node = node->Next(); - } -} - -void wxLineShape::DrawArrow(wxDC& dc, wxArrowHead *arrow, double xOffset, bool proportionalOffset) -{ - wxNode *first_line_node = m_lineControlPoints->First(); - wxRealPoint *first_line_point = (wxRealPoint *)first_line_node->Data(); - wxNode *second_line_node = first_line_node->Next(); - wxRealPoint *second_line_point = (wxRealPoint *)second_line_node->Data(); - - wxNode *last_line_node = m_lineControlPoints->Last(); - wxRealPoint *last_line_point = (wxRealPoint *)last_line_node->Data(); - wxNode *second_last_line_node = last_line_node->Previous(); - wxRealPoint *second_last_line_point = (wxRealPoint *)second_last_line_node->Data(); - - // Position where we want to start drawing - double positionOnLineX, positionOnLineY; - - // Position of start point of line, at the end of which we draw the arrow. - double startPositionX, startPositionY; - - switch (arrow->GetPosition()) - { - case ARROW_POSITION_START: - { - // If we're using a proportional offset, calculate just where this will - // be on the line. - double realOffset = xOffset; - if (proportionalOffset) - { - double totalLength = - (double)sqrt((second_line_point->x - first_line_point->x)*(second_line_point->x - first_line_point->x) + - (second_line_point->y - first_line_point->y)*(second_line_point->y - first_line_point->y)); - realOffset = (double)(xOffset * totalLength); - } - GetPointOnLine(second_line_point->x, second_line_point->y, - first_line_point->x, first_line_point->y, - realOffset, &positionOnLineX, &positionOnLineY); - startPositionX = second_line_point->x; - startPositionY = second_line_point->y; - break; - } - case ARROW_POSITION_END: - { - // If we're using a proportional offset, calculate just where this will - // be on the line. - double realOffset = xOffset; - if (proportionalOffset) - { - double totalLength = - (double)sqrt((second_last_line_point->x - last_line_point->x)*(second_last_line_point->x - last_line_point->x) + - (second_last_line_point->y - last_line_point->y)*(second_last_line_point->y - last_line_point->y)); - realOffset = (double)(xOffset * totalLength); - } - GetPointOnLine(second_last_line_point->x, second_last_line_point->y, - last_line_point->x, last_line_point->y, - realOffset, &positionOnLineX, &positionOnLineY); - startPositionX = second_last_line_point->x; - startPositionY = second_last_line_point->y; - break; - } - case ARROW_POSITION_MIDDLE: - { - // Choose a point half way between the last and penultimate points - double x = ((last_line_point->x + second_last_line_point->x)/2); - double y = ((last_line_point->y + second_last_line_point->y)/2); - - // If we're using a proportional offset, calculate just where this will - // be on the line. - double realOffset = xOffset; - if (proportionalOffset) - { - double totalLength = - (double)sqrt((second_last_line_point->x - x)*(second_last_line_point->x - x) + - (second_last_line_point->y - y)*(second_last_line_point->y - y)); - realOffset = (double)(xOffset * totalLength); - } - - GetPointOnLine(second_last_line_point->x, second_last_line_point->y, - x, y, realOffset, &positionOnLineX, &positionOnLineY); - startPositionX = second_last_line_point->x; - startPositionY = second_last_line_point->y; - break; - } - } - - /* - * Add yOffset to arrow, if any - */ - - const double myPi = (double) 3.14159265; - // The translation that the y offset may give - double deltaX = 0.0; - double deltaY = 0.0; - if ((arrow->GetYOffset() != 0.0) && !m_ignoreArrowOffsets) - { - /* - |(x4, y4) - |d - | - (x1, y1)--------------(x3, y3)------------------(x2, y2) - x4 = x3 - d * sin(theta) - y4 = y3 + d * cos(theta) - - Where theta = tan(-1) of (y3-y1)/(x3-x1) - */ - double x1 = startPositionX; - double y1 = startPositionY; - double x3 = positionOnLineX; - double y3 = positionOnLineY; - double d = -arrow->GetYOffset(); // Negate so +offset is above line - - double theta = 0.0; - if (x3 == x1) - theta = (double)(myPi/2.0); - else - theta = (double)atan((y3-y1)/(x3-x1)); - - double x4 = (double)(x3 - (d*sin(theta))); - double y4 = (double)(y3 + (d*cos(theta))); - - deltaX = x4 - positionOnLineX; - deltaY = y4 - positionOnLineY; - } - - switch (arrow->_GetType()) - { - case ARROW_ARROW: - { - double arrowLength = arrow->GetSize(); - double arrowWidth = (double)(arrowLength/3.0); - - double tip_x, tip_y, side1_x, side1_y, side2_x, side2_y; - oglGetArrowPoints(startPositionX+deltaX, startPositionY+deltaY, - positionOnLineX+deltaX, positionOnLineY+deltaY, - arrowLength, arrowWidth, &tip_x, &tip_y, - &side1_x, &side1_y, &side2_x, &side2_y); - - wxPoint points[4]; - points[0].x = (int) tip_x; points[0].y = (int) tip_y; - points[1].x = (int) side1_x; points[1].y = (int) side1_y; - points[2].x = (int) side2_x; points[2].y = (int) side2_y; - points[3].x = (int) tip_x; points[3].y = (int) tip_y; - - dc.SetPen(* m_pen); - dc.SetBrush(* m_brush); - dc.DrawPolygon(4, points); - break; - } - case ARROW_HOLLOW_CIRCLE: - case ARROW_FILLED_CIRCLE: - { - // Find point on line of centre of circle, which is a radius away - // from the end position - double diameter = (double)(arrow->GetSize()); - double x, y; - GetPointOnLine(startPositionX+deltaX, startPositionY+deltaY, - positionOnLineX+deltaX, positionOnLineY+deltaY, - (double)(diameter/2.0), - &x, &y); - - // Convert ellipse centre to top-left coordinates - double x1 = (double)(x - (diameter/2.0)); - double y1 = (double)(y - (diameter/2.0)); - - dc.SetPen(* m_pen); - if (arrow->_GetType() == ARROW_HOLLOW_CIRCLE) - dc.SetBrush(* g_oglWhiteBackgroundBrush); - else - dc.SetBrush(* m_brush); - - dc.DrawEllipse((long) x1, (long) y1, (long) diameter, (long) diameter); - break; - } - case ARROW_SINGLE_OBLIQUE: - { - break; - } - case ARROW_METAFILE: - { - if (arrow->GetMetaFile()) - { - // Find point on line of centre of object, which is a half-width away - // from the end position - /* - * width - * <-- start pos <-----><-- positionOnLineX - * _____ - * --------------| x | <-- e.g. rectangular arrowhead - * ----- - */ - double x, y; - GetPointOnLine(startPositionX, startPositionY, - positionOnLineX, positionOnLineY, - (double)(arrow->GetMetaFile()->m_width/2.0), - &x, &y); - - // Calculate theta for rotating the metafile. - /* - | - | o(x2, y2) 'o' represents the arrowhead. - | / - | / - | /theta - | /(x1, y1) - |______________________ - */ - double theta = 0.0; - double x1 = startPositionX; - double y1 = startPositionY; - double x2 = positionOnLineX; - double y2 = positionOnLineY; - - if ((x1 == x2) && (y1 == y2)) - theta = 0.0; - - else if ((x1 == x2) && (y1 > y2)) - theta = (double)(3.0*myPi/2.0); - - else if ((x1 == x2) && (y2 > y1)) - theta = (double)(myPi/2.0); - - else if ((x2 > x1) && (y2 >= y1)) - theta = (double)atan((y2 - y1)/(x2 - x1)); - - else if (x2 < x1) - theta = (double)(myPi + atan((y2 - y1)/(x2 - x1))); - - else if ((x2 > x1) && (y2 < y1)) - theta = (double)(2*myPi + atan((y2 - y1)/(x2 - x1))); - - else - { - wxFatalError("Unknown arrowhead rotation case in lines.cc"); - } - - // Rotate about the centre of the object, then place - // the object on the line. - if (arrow->GetMetaFile()->GetRotateable()) - arrow->GetMetaFile()->Rotate(0.0, 0.0, theta); - - if (m_erasing) - { - // If erasing, just draw a rectangle. - double minX, minY, maxX, maxY; - arrow->GetMetaFile()->GetBounds(&minX, &minY, &maxX, &maxY); - // Make erasing rectangle slightly bigger or you get droppings. - int extraPixels = 4; - dc.DrawRectangle((long)(deltaX + x + minX - (extraPixels/2.0)), (long)(deltaY + y + minY - (extraPixels/2.0)), - (long)(maxX - minX + extraPixels), (long)(maxY - minY + extraPixels)); - } - else - arrow->GetMetaFile()->Draw(dc, x+deltaX, y+deltaY); - } - break; - } - default: - { - } - } -} - -void wxLineShape::OnErase(wxDC& dc) -{ - wxPen *old_pen = m_pen; - wxBrush *old_brush = m_brush; - SetPen(g_oglWhiteBackgroundPen); - SetBrush(g_oglWhiteBackgroundBrush); - - double bound_x, bound_y; - GetBoundingBoxMax(&bound_x, &bound_y); - if (m_font) dc.SetFont(* m_font); - - // Undraw text regions - for (int i = 0; i < 3; i++) - { - wxNode *node = m_regions.Nth(i); - if (node) - { - double x, y; - wxShapeRegion *region = (wxShapeRegion *)node->Data(); - GetLabelPosition(i, &x, &y); - EraseRegion(dc, region, x, y); - } - } - - // Undraw line - dc.SetPen(* g_oglWhiteBackgroundPen); - dc.SetBrush(* g_oglWhiteBackgroundBrush); - - // Drawing over the line only seems to work if the line has a thickness - // of 1. - if (old_pen && (old_pen->GetWidth() > 1)) - { - dc.DrawRectangle((long)(m_xpos - (bound_x/2.0) - 2.0), (long)(m_ypos - (bound_y/2.0) - 2.0), - (long)(bound_x+4.0), (long)(bound_y+4.0)); - } - else - { - m_erasing = TRUE; - GetEventHandler()->OnDraw(dc); - GetEventHandler()->OnEraseControlPoints(dc); - m_erasing = FALSE; - } - - if (old_pen) SetPen(old_pen); - if (old_brush) SetBrush(old_brush); -} - -void wxLineShape::GetBoundingBoxMin(double *w, double *h) -{ - double x1 = 10000; - double y1 = 10000; - double x2 = -10000; - double y2 = -10000; - - wxNode *node = m_lineControlPoints->First(); - while (node) - { - wxRealPoint *point = (wxRealPoint *)node->Data(); - - if (point->x < x1) x1 = point->x; - if (point->y < y1) y1 = point->y; - if (point->x > x2) x2 = point->x; - if (point->y > y2) y2 = point->y; - - node = node->Next(); - } - *w = (double)(x2 - x1); - *h = (double)(y2 - y1); -} - -/* - * For a node image of interest, finds the position of this arc - * amongst all the arcs which are attached to THIS SIDE of the node image, - * and the number of same. - */ -void wxLineShape::FindNth(wxShape *image, int *nth, int *no_arcs, bool incoming) -{ - int n = -1; - int num = 0; - wxNode *node = image->GetLines().First(); - int this_attachment; - if (image == m_to) - this_attachment = m_attachmentTo; - else - this_attachment = m_attachmentFrom; - - // Find number of lines going into/out of this particular attachment point - while (node) - { - wxLineShape *line = (wxLineShape *)node->Data(); - - if (line->m_from == image) - { - // This is the nth line attached to 'image' - if ((line == this) && !incoming) - n = num; - - // Increment num count if this is the same side (attachment number) - if (line->m_attachmentFrom == this_attachment) - num ++; - } - - if (line->m_to == image) - { - // This is the nth line attached to 'image' - if ((line == this) && incoming) - n = num; - - // Increment num count if this is the same side (attachment number) - if (line->m_attachmentTo == this_attachment) - num ++; - } - - node = node->Next(); - } - *nth = n; - *no_arcs = num; -} - -void wxLineShape::OnDrawOutline(wxDC& dc, double x, double y, double w, double h) -{ - wxPen *old_pen = m_pen; - wxBrush *old_brush = m_brush; - - wxPen dottedPen(wxColour(0, 0, 0), 1, wxDOT); - SetPen(& dottedPen); - SetBrush( wxTRANSPARENT_BRUSH ); - - GetEventHandler()->OnDraw(dc); - - if (old_pen) SetPen(old_pen); - else SetPen(NULL); - if (old_brush) SetBrush(old_brush); - else SetBrush(NULL); -} - -bool wxLineShape::OnMovePre(wxDC& dc, double x, double y, double old_x, double old_y, bool display) -{ - double x_offset = x - old_x; - double y_offset = y - old_y; - - if (m_lineControlPoints && !(x_offset == 0.0 && y_offset == 0.0)) - { - wxNode *node = m_lineControlPoints->First(); - while (node) - { - wxRealPoint *point = (wxRealPoint *)node->Data(); - point->x += x_offset; - point->y += y_offset; - node = node->Next(); - } - - } - - // Move temporary label rectangles if necessary - for (int i = 0; i < 3; i++) - { - if (m_labelObjects[i]) - { - m_labelObjects[i]->Erase(dc); - double xp, yp, xr, yr; - GetLabelPosition(i, &xp, &yp); - wxNode *node = m_regions.Nth(i); - if (node) - { - wxShapeRegion *region = (wxShapeRegion *)node->Data(); - region->GetPosition(&xr, &yr); - } - else - { - xr = 0.0; yr = 0.0; - } - - m_labelObjects[i]->Move(dc, xp+xr, yp+yr); - } - } - return TRUE; -} - -void wxLineShape::OnMoveLink(wxDC& dc, bool moveControlPoints) -{ - if (!m_from || !m_to) - return; - - if (m_lineControlPoints->Number() > 2) - Initialise(); - - // Do each end - nothing in the middle. User has to move other points - // manually if necessary. - double end_x, end_y; - double other_end_x, other_end_y; - - FindLineEndPoints(&end_x, &end_y, &other_end_x, &other_end_y); - - wxNode *first = m_lineControlPoints->First(); - wxRealPoint *first_point = (wxRealPoint *)first->Data(); - wxNode *last = m_lineControlPoints->Last(); - wxRealPoint *last_point = (wxRealPoint *)last->Data(); - -/* This is redundant, surely? Done by SetEnds. - first_point->x = end_x; first_point->y = end_y; - last_point->x = other_end_x; last_point->y = other_end_y; -*/ - - double oldX = m_xpos; - double oldY = m_ypos; - - SetEnds(end_x, end_y, other_end_x, other_end_y); - - // Do a second time, because one may depend on the other. - FindLineEndPoints(&end_x, &end_y, &other_end_x, &other_end_y); - SetEnds(end_x, end_y, other_end_x, other_end_y); - - // Try to move control points with the arc - double x_offset = m_xpos - oldX; - double y_offset = m_ypos - oldY; - -// if (moveControlPoints && m_lineControlPoints && !(x_offset == 0.0 && y_offset == 0.0)) - // Only move control points if it's a self link. And only works if attachment mode is ON. - if ((m_from == m_to) && (m_from->GetAttachmentMode() != ATTACHMENT_MODE_NONE) && moveControlPoints && m_lineControlPoints && !(x_offset == 0.0 && y_offset == 0.0)) - { - wxNode *node = m_lineControlPoints->First(); - while (node) - { - if ((node != m_lineControlPoints->First()) && (node != m_lineControlPoints->Last())) - { - wxRealPoint *point = (wxRealPoint *)node->Data(); - point->x += x_offset; - point->y += y_offset; - } - node = node->Next(); - } - } - - Move(dc, m_xpos, m_ypos); -} - -// Finds the x, y points at the two ends of the line. -// This function can be used by e.g. line-routing routines to -// get the actual points on the two node images where the lines will be drawn -// to/from. -void wxLineShape::FindLineEndPoints(double *fromX, double *fromY, double *toX, double *toY) -{ - if (!m_from || !m_to) - return; - - // Do each end - nothing in the middle. User has to move other points - // manually if necessary. - double end_x, end_y; - double other_end_x, other_end_y; - - wxNode *first = m_lineControlPoints->First(); - wxRealPoint *first_point = (wxRealPoint *)first->Data(); - wxNode *last = m_lineControlPoints->Last(); - wxRealPoint *last_point = (wxRealPoint *)last->Data(); - - wxNode *second = first->Next(); - wxRealPoint *second_point = (wxRealPoint *)second->Data(); - - wxNode *second_last = last->Previous(); - wxRealPoint *second_last_point = (wxRealPoint *)second_last->Data(); - - if (m_lineControlPoints->Number() > 2) - { - if (m_from->GetAttachmentMode() != ATTACHMENT_MODE_NONE) - { - int nth, no_arcs; - FindNth(m_from, &nth, &no_arcs, FALSE); // Not incoming - m_from->GetAttachmentPosition(m_attachmentFrom, &end_x, &end_y, nth, no_arcs, this); - } - else - (void) m_from->GetPerimeterPoint(m_from->GetX(), m_from->GetY(), - (double)second_point->x, (double)second_point->y, - &end_x, &end_y); - - if (m_to->GetAttachmentMode() != ATTACHMENT_MODE_NONE) - { - int nth, no_arcs; - FindNth(m_to, &nth, &no_arcs, TRUE); // Incoming - m_to->GetAttachmentPosition(m_attachmentTo, &other_end_x, &other_end_y, nth, no_arcs, this); - } - else - (void) m_to->GetPerimeterPoint(m_to->GetX(), m_to->GetY(), - (double)second_last_point->x, (double)second_last_point->y, - &other_end_x, &other_end_y); - } - else - { - double fromX = m_from->GetX(); - double fromY = m_from->GetY(); - double toX = m_to->GetX(); - double toY = m_to->GetY(); - - if (m_from->GetAttachmentMode() != ATTACHMENT_MODE_NONE) - { - int nth, no_arcs; - FindNth(m_from, &nth, &no_arcs, FALSE); - m_from->GetAttachmentPosition(m_attachmentFrom, &end_x, &end_y, nth, no_arcs, this); - fromX = end_x; - fromY = end_y; - } - - if (m_to->GetAttachmentMode() != ATTACHMENT_MODE_NONE) - { - int nth, no_arcs; - FindNth(m_to, &nth, &no_arcs, TRUE); - m_to->GetAttachmentPosition(m_attachmentTo, &other_end_x, &other_end_y, nth, no_arcs, this); - toX = other_end_x; - toY = other_end_y; - } - - if (m_from->GetAttachmentMode() == ATTACHMENT_MODE_NONE) - (void) m_from->GetPerimeterPoint(m_from->GetX(), m_from->GetY(), - toX, toY, - &end_x, &end_y); - - if (m_to->GetAttachmentMode() == ATTACHMENT_MODE_NONE) - (void) m_to->GetPerimeterPoint(m_to->GetX(), m_to->GetY(), - fromX, fromY, - &other_end_x, &other_end_y); - } - *fromX = end_x; - *fromY = end_y; - *toX = other_end_x; - *toY = other_end_y; -} - -void wxLineShape::OnDraw(wxDC& dc) -{ - if (m_lineControlPoints) - { - if (m_pen) - dc.SetPen(* m_pen); - if (m_brush) - dc.SetBrush(* m_brush); - - int n = m_lineControlPoints->Number(); - wxPoint *points = new wxPoint[n]; - int i; - for (i = 0; i < n; i++) - { - wxRealPoint* point = (wxRealPoint*) m_lineControlPoints->Nth(i)->Data(); - points[i].x = WXROUND(point->x); - points[i].y = WXROUND(point->y); - } - - if (m_isSpline) - dc.DrawSpline(n, points); - else - dc.DrawLines(n, points); - -#ifdef __WXMSW__ - // For some reason, last point isn't drawn under Windows. - dc.DrawPoint(points[n-1]); -#endif - - delete[] points; - - - // Problem with pen - if not a solid pen, does strange things - // to the arrowhead. So make (get) a new pen that's solid. - if (m_pen && (m_pen->GetStyle() != wxSOLID)) - { - wxPen *solid_pen = - wxThePenList->FindOrCreatePen(m_pen->GetColour(), 1, wxSOLID); - if (solid_pen) - dc.SetPen(* solid_pen); - } - DrawArrows(dc); - } -} - -void wxLineShape::OnDrawControlPoints(wxDC& dc) -{ - if (!m_drawHandles) - return; - - // Draw temporary label rectangles if necessary - for (int i = 0; i < 3; i++) - { - if (m_labelObjects[i]) - m_labelObjects[i]->Draw(dc); - } - wxShape::OnDrawControlPoints(dc); -} - -void wxLineShape::OnEraseControlPoints(wxDC& dc) -{ - // Erase temporary label rectangles if necessary - for (int i = 0; i < 3; i++) - { - if (m_labelObjects[i]) - m_labelObjects[i]->Erase(dc); - } - wxShape::OnEraseControlPoints(dc); -} - -void wxLineShape::OnDragLeft(bool draw, double x, double y, int keys, int attachment) -{ -} - -void wxLineShape::OnBeginDragLeft(double x, double y, int keys, int attachment) -{ -} - -void wxLineShape::OnEndDragLeft(double x, double y, int keys, int attachment) -{ -} - -/* -void wxLineShape::SetArrowSize(double length, double width) -{ - arrow_length = length; - arrow_width = width; -} - -void wxLineShape::SetStartArrow(int style) -{ - start_style = style; -} - -void wxLineShape::SetMiddleArrow(int style) -{ - middle_style = style; -} - -void wxLineShape::SetEndArrow(int style) -{ - end_style = style; -} -*/ - -void wxLineShape::OnDrawContents(wxDC& dc) -{ - if (GetDisableLabel()) - return; - - for (int i = 0; i < 3; i++) - { - wxNode *node = m_regions.Nth(i); - if (node) - { - wxShapeRegion *region = (wxShapeRegion *)node->Data(); - double x, y; - GetLabelPosition(i, &x, &y); - DrawRegion(dc, region, x, y); - } - } -} - -void wxLineShape::SetTo(wxShape *object) -{ - m_to = object; -} - -void wxLineShape::SetFrom(wxShape *object) -{ - m_from = object; -} - -void wxLineShape::MakeControlPoints() -{ - if (m_canvas && m_lineControlPoints) - { - wxNode *first = m_lineControlPoints->First(); - wxNode *last = m_lineControlPoints->Last(); - wxRealPoint *first_point = (wxRealPoint *)first->Data(); - wxRealPoint *last_point = (wxRealPoint *)last->Data(); - - wxLineControlPoint *control = new wxLineControlPoint(m_canvas, this, CONTROL_POINT_SIZE, - first_point->x, first_point->y, - CONTROL_POINT_ENDPOINT_FROM); - control->m_point = first_point; - m_canvas->AddShape(control); - m_controlPoints.Append(control); - - - wxNode *node = first->Next(); - while (node != last) - { - wxRealPoint *point = (wxRealPoint *)node->Data(); - - control = new wxLineControlPoint(m_canvas, this, CONTROL_POINT_SIZE, - point->x, point->y, - CONTROL_POINT_LINE); - control->m_point = point; - - m_canvas->AddShape(control); - m_controlPoints.Append(control); - - node = node->Next(); - } - control = new wxLineControlPoint(m_canvas, this, CONTROL_POINT_SIZE, - last_point->x, last_point->y, - CONTROL_POINT_ENDPOINT_TO); - control->m_point = last_point; - m_canvas->AddShape(control); - m_controlPoints.Append(control); - - } - -} - -void wxLineShape::ResetControlPoints() -{ - if (m_canvas && m_lineControlPoints && m_controlPoints.Number() > 0) - { - wxNode *node = m_controlPoints.First(); - wxNode *control_node = m_lineControlPoints->First(); - while (node && control_node) - { - wxRealPoint *point = (wxRealPoint *)control_node->Data(); - wxLineControlPoint *control = (wxLineControlPoint *)node->Data(); - control->SetX(point->x); - control->SetY(point->y); - - node = node->Next(); - control_node = control_node->Next(); - } - } -} - -#ifdef PROLOGIO -void wxLineShape::WriteAttributes(wxExpr *clause) -{ - wxShape::WriteAttributes(clause); - - if (m_from) - clause->AddAttributeValue("from", m_from->GetId()); - if (m_to) - clause->AddAttributeValue("to", m_to->GetId()); - - if (m_attachmentTo != 0) - clause->AddAttributeValue("attachment_to", (long)m_attachmentTo); - if (m_attachmentFrom != 0) - clause->AddAttributeValue("attachment_from", (long)m_attachmentFrom); - - if (m_alignmentStart != 0) - clause->AddAttributeValue("align_start", (long)m_alignmentStart); - if (m_alignmentEnd != 0) - clause->AddAttributeValue("align_end", (long)m_alignmentEnd); - - clause->AddAttributeValue("is_spline", (long)m_isSpline); - if (m_maintainStraightLines) - clause->AddAttributeValue("keep_lines_straight", (long)m_maintainStraightLines); - - // Make a list of lists for the (sp)line controls - wxExpr *list = new wxExpr(wxExprList); - wxNode *node = m_lineControlPoints->First(); - while (node) - { - wxRealPoint *point = (wxRealPoint *)node->Data(); - wxExpr *point_list = new wxExpr(wxExprList); - wxExpr *x_expr = new wxExpr((double) point->x); - wxExpr *y_expr = new wxExpr((double) point->y); - point_list->Append(x_expr); - point_list->Append(y_expr); - list->Append(point_list); - - node = node->Next(); - } - clause->AddAttributeValue("controls", list); - - // Write arc arrows in new OGL format, if there are any. - // This is a list of lists. Each sublist comprises: - // (arrowType arrowEnd xOffset arrowSize) - if (m_arcArrows.Number() > 0) - { - wxExpr *arrow_list = new wxExpr(wxExprList); - node = m_arcArrows.First(); - while (node) - { - wxArrowHead *head = (wxArrowHead *)node->Data(); - wxExpr *head_list = new wxExpr(wxExprList); - head_list->Append(new wxExpr((long)head->_GetType())); - head_list->Append(new wxExpr((long)head->GetArrowEnd())); - head_list->Append(new wxExpr(head->GetXOffset())); - head_list->Append(new wxExpr(head->GetArrowSize())); - head_list->Append(new wxExpr(wxExprString, head->GetName())); - head_list->Append(new wxExpr(head->GetId())); - - // New members of wxArrowHead - head_list->Append(new wxExpr(head->GetYOffset())); - head_list->Append(new wxExpr(head->GetSpacing())); - - arrow_list->Append(head_list); - - node = node->Next(); - } - clause->AddAttributeValue("arrows", arrow_list); - } -} - -void wxLineShape::ReadAttributes(wxExpr *clause) -{ - wxShape::ReadAttributes(clause); - - int iVal = (int) m_isSpline; - clause->AssignAttributeValue("is_spline", &iVal); - m_isSpline = (iVal != 0); - - iVal = (int) m_maintainStraightLines; - clause->AssignAttributeValue("keep_lines_straight", &iVal); - m_maintainStraightLines = (iVal != 0); - - clause->AssignAttributeValue("align_start", &m_alignmentStart); - clause->AssignAttributeValue("align_end", &m_alignmentEnd); - - // Compatibility: check for no regions. - if (m_regions.Number() == 0) - { - wxShapeRegion *newRegion = new wxShapeRegion; - newRegion->SetName("Middle"); - newRegion->SetSize(150, 50); - m_regions.Append((wxObject *)newRegion); - if (m_text.Number() > 0) - { - newRegion->ClearText(); - wxNode *node = m_text.First(); - while (node) - { - wxShapeTextLine *textLine = (wxShapeTextLine *)node->Data(); - wxNode *next = node->Next(); - newRegion->GetFormattedText().Append((wxObject *)textLine); - delete node; - node = next; - } - } - - newRegion = new wxShapeRegion; - newRegion->SetName("Start"); - newRegion->SetSize(150, 50); - m_regions.Append((wxObject *)newRegion); - - newRegion = new wxShapeRegion; - newRegion->SetName("End"); - newRegion->SetSize(150, 50); - m_regions.Append((wxObject *)newRegion); - } - - m_attachmentTo = 0; - m_attachmentFrom = 0; - - clause->AssignAttributeValue("attachment_to", &m_attachmentTo); - clause->AssignAttributeValue("attachment_from", &m_attachmentFrom); - - wxExpr *line_list = NULL; - - // When image is created, there are default control points. Override - // them if there are some in the file. - clause->AssignAttributeValue("controls", &line_list); - - if (line_list) - { - // Read a list of lists for the spline controls - if (m_lineControlPoints) - { - ClearPointList(*m_lineControlPoints); - } - else - m_lineControlPoints = new wxList; - - wxExpr *node = line_list->value.first; - - while (node) - { - wxExpr *xexpr = node->value.first; - double x = xexpr->RealValue(); - - wxExpr *yexpr = xexpr->next; - double y = yexpr->RealValue(); - - wxRealPoint *point = new wxRealPoint(x, y); - m_lineControlPoints->Append((wxObject*) point); - - node = node->next; - } - } - - // Read arrow list, for new OGL code - wxExpr *arrow_list = NULL; - - clause->AssignAttributeValue("arrows", &arrow_list); - if (arrow_list) - { - wxExpr *node = arrow_list->value.first; - - while (node) - { - WXTYPE arrowType = ARROW_ARROW; - int arrowEnd = 0; - double xOffset = 0.0; - double arrowSize = 0.0; - wxString arrowName(""); - long arrowId = -1; - - wxExpr *type_expr = node->Nth(0); - wxExpr *end_expr = node->Nth(1); - wxExpr *dist_expr = node->Nth(2); - wxExpr *size_expr = node->Nth(3); - wxExpr *name_expr = node->Nth(4); - wxExpr *id_expr = node->Nth(5); - - // New members of wxArrowHead - wxExpr *yOffsetExpr = node->Nth(6); - wxExpr *spacingExpr = node->Nth(7); - - if (type_expr) - arrowType = (int)type_expr->IntegerValue(); - if (end_expr) - arrowEnd = (int)end_expr->IntegerValue(); - if (dist_expr) - xOffset = dist_expr->RealValue(); - if (size_expr) - arrowSize = size_expr->RealValue(); - if (name_expr) - arrowName = name_expr->StringValue(); - if (id_expr) - arrowId = id_expr->IntegerValue(); - - if (arrowId == -1) - arrowId = NewId(); - else - RegisterId(arrowId); - - wxArrowHead *arrowHead = AddArrow(arrowType, arrowEnd, arrowSize, xOffset, (char*) (const char*) arrowName, NULL, arrowId); - if (yOffsetExpr) - arrowHead->SetYOffset(yOffsetExpr->RealValue()); - if (spacingExpr) - arrowHead->SetSpacing(spacingExpr->RealValue()); - - node = node->next; - } - } -} -#endif - -void wxLineShape::Copy(wxShape& copy) -{ - wxShape::Copy(copy); - - wxASSERT( copy.IsKindOf(CLASSINFO(wxLineShape)) ); - - wxLineShape& lineCopy = (wxLineShape&) copy; - - lineCopy.m_to = m_to; - lineCopy.m_from = m_from; - lineCopy.m_attachmentTo = m_attachmentTo; - lineCopy.m_attachmentFrom = m_attachmentFrom; - lineCopy.m_isSpline = m_isSpline; - lineCopy.m_alignmentStart = m_alignmentStart; - lineCopy.m_alignmentEnd = m_alignmentEnd; - lineCopy.m_maintainStraightLines = m_maintainStraightLines; - lineCopy.m_lineOrientations.Clear(); - - wxNode *node = m_lineOrientations.First(); - while (node) - { - lineCopy.m_lineOrientations.Append(node->Data()); - node = node->Next(); - } - - if (lineCopy.m_lineControlPoints) - { - ClearPointList(*lineCopy.m_lineControlPoints); - delete lineCopy.m_lineControlPoints; - } - - lineCopy.m_lineControlPoints = new wxList; - - node = m_lineControlPoints->First(); - while (node) - { - wxRealPoint *point = (wxRealPoint *)node->Data(); - wxRealPoint *new_point = new wxRealPoint(point->x, point->y); - lineCopy.m_lineControlPoints->Append((wxObject*) new_point); - node = node->Next(); - } - - // Copy arrows - lineCopy.ClearArrowsAtPosition(-1); - node = m_arcArrows.First(); - while (node) - { - wxArrowHead *arrow = (wxArrowHead *)node->Data(); - lineCopy.m_arcArrows.Append(new wxArrowHead(*arrow)); - node = node->Next(); - } -} - -// Override select, to create/delete temporary label-moving objects -void wxLineShape::Select(bool select, wxDC* dc) -{ - wxShape::Select(select, dc); - if (select) - { - for (int i = 0; i < 3; i++) - { - wxNode *node = m_regions.Nth(i); - if (node) - { - wxShapeRegion *region = (wxShapeRegion *)node->Data(); - if (region->m_formattedText.Number() > 0) - { - double w, h, x, y, xx, yy; - region->GetSize(&w, &h); - region->GetPosition(&x, &y); - GetLabelPosition(i, &xx, &yy); - if (m_labelObjects[i]) - { - m_labelObjects[i]->Select(FALSE); - m_labelObjects[i]->RemoveFromCanvas(m_canvas); - delete m_labelObjects[i]; - } - m_labelObjects[i] = OnCreateLabelShape(this, region, w, h); - m_labelObjects[i]->AddToCanvas(m_canvas); - m_labelObjects[i]->Show(TRUE); - if (dc) - m_labelObjects[i]->Move(*dc, (double)(x + xx), (double)(y + yy)); - m_labelObjects[i]->Select(TRUE, dc); - } - } - } - } - else - { - for (int i = 0; i < 3; i++) - { - if (m_labelObjects[i]) - { - m_labelObjects[i]->Select(FALSE, dc); - m_labelObjects[i]->Erase(*dc); - m_labelObjects[i]->RemoveFromCanvas(m_canvas); - delete m_labelObjects[i]; - m_labelObjects[i] = NULL; - } - } - } -} - -/* - * Line control point - * - */ - -IMPLEMENT_DYNAMIC_CLASS(wxLineControlPoint, wxControlPoint) - -wxLineControlPoint::wxLineControlPoint(wxShapeCanvas *theCanvas, wxShape *object, double size, double x, double y, int the_type): - wxControlPoint(theCanvas, object, size, x, y, the_type) -{ - m_xpos = x; - m_ypos = y; - m_type = the_type; - m_point = NULL; -} - -wxLineControlPoint::~wxLineControlPoint() -{ -} - -void wxLineControlPoint::OnDraw(wxDC& dc) -{ - wxRectangleShape::OnDraw(dc); -} - -// Implement movement of Line point -void wxLineControlPoint::OnDragLeft(bool draw, double x, double y, int keys, int attachment) -{ - m_shape->GetEventHandler()->OnSizingDragLeft(this, draw, x, y, keys, attachment); -} - -void wxLineControlPoint::OnBeginDragLeft(double x, double y, int keys, int attachment) -{ - m_shape->GetEventHandler()->OnSizingBeginDragLeft(this, x, y, keys, attachment); -} - -void wxLineControlPoint::OnEndDragLeft(double x, double y, int keys, int attachment) -{ - m_shape->GetEventHandler()->OnSizingEndDragLeft(this, x, y, keys, attachment); -} - -// Control points ('handles') redirect control to the actual shape, to make it easier -// to override sizing behaviour. -void wxLineShape::OnSizingDragLeft(wxControlPoint* pt, bool draw, double x, double y, int keys, int attachment) -{ - wxLineControlPoint* lpt = (wxLineControlPoint*) pt; - - wxClientDC dc(GetCanvas()); - GetCanvas()->PrepareDC(dc); - - dc.SetLogicalFunction(wxXOR); - - wxPen dottedPen(wxColour(0, 0, 0), 1, wxDOT); - dc.SetPen(dottedPen); - dc.SetBrush((* wxTRANSPARENT_BRUSH)); - - if (lpt->m_type == CONTROL_POINT_LINE) - { - m_canvas->Snap(&x, &y); - - lpt->SetX(x); lpt->SetY(y); - lpt->m_point->x = x; lpt->m_point->y = y; - - wxLineShape *lineShape = (wxLineShape *)this; - - wxPen *old_pen = lineShape->GetPen(); - wxBrush *old_brush = lineShape->GetBrush(); - - wxPen dottedPen(wxColour(0, 0, 0), 1, wxDOT); - lineShape->SetPen(& dottedPen); - lineShape->SetBrush(wxTRANSPARENT_BRUSH); - - lineShape->GetEventHandler()->OnMoveLink(dc, FALSE); - - lineShape->SetPen(old_pen); - lineShape->SetBrush(old_brush); - } - - if (lpt->m_type == CONTROL_POINT_ENDPOINT_FROM || lpt->m_type == CONTROL_POINT_ENDPOINT_TO) - { -// lpt->SetX(x); lpt->SetY(y); - } - -} - -void wxLineShape::OnSizingBeginDragLeft(wxControlPoint* pt, double x, double y, int keys, int attachment) -{ - wxLineControlPoint* lpt = (wxLineControlPoint*) pt; - - wxClientDC dc(GetCanvas()); - GetCanvas()->PrepareDC(dc); - - wxLineShape *lineShape = (wxLineShape *)this; - if (lpt->m_type == CONTROL_POINT_LINE) - { - lpt->m_originalPos = * (lpt->m_point); - m_canvas->Snap(&x, &y); - - this->Erase(dc); - - // Redraw start and end objects because we've left holes - // when erasing the line - lineShape->GetFrom()->OnDraw(dc); - lineShape->GetFrom()->OnDrawContents(dc); - lineShape->GetTo()->OnDraw(dc); - lineShape->GetTo()->OnDrawContents(dc); - - this->SetDisableLabel(TRUE); - dc.SetLogicalFunction(wxXOR); - - lpt->m_xpos = x; lpt->m_ypos = y; - lpt->m_point->x = x; lpt->m_point->y = y; - - wxPen *old_pen = lineShape->GetPen(); - wxBrush *old_brush = lineShape->GetBrush(); - - wxPen dottedPen(wxColour(0, 0, 0), 1, wxDOT); - lineShape->SetPen(& dottedPen); - lineShape->SetBrush(wxTRANSPARENT_BRUSH); - - lineShape->GetEventHandler()->OnMoveLink(dc, FALSE); - - lineShape->SetPen(old_pen); - lineShape->SetBrush(old_brush); - } - - if (lpt->m_type == CONTROL_POINT_ENDPOINT_FROM || lpt->m_type == CONTROL_POINT_ENDPOINT_TO) - { - m_canvas->SetCursor(* g_oglBullseyeCursor); - lpt->m_oldCursor = wxSTANDARD_CURSOR; - } -} - -void wxLineShape::OnSizingEndDragLeft(wxControlPoint* pt, double x, double y, int keys, int attachment) -{ - wxLineControlPoint* lpt = (wxLineControlPoint*) pt; - - wxClientDC dc(GetCanvas()); - GetCanvas()->PrepareDC(dc); - - this->SetDisableLabel(FALSE); - wxLineShape *lineShape = (wxLineShape *)this; - - if (lpt->m_type == CONTROL_POINT_LINE) - { - m_canvas->Snap(&x, &y); - - wxRealPoint pt = wxRealPoint(x, y); - - // Move the control point back to where it was; - // MoveControlPoint will move it to the new position - // if it decides it wants. We only moved the position - // during user feedback so we could redraw the line - // as it changed shape. - lpt->m_xpos = lpt->m_originalPos.x; lpt->m_ypos = lpt->m_originalPos.y; - lpt->m_point->x = lpt->m_originalPos.x; lpt->m_point->y = lpt->m_originalPos.y; - - OnMoveMiddleControlPoint(dc, lpt, pt); - } - if (lpt->m_type == CONTROL_POINT_ENDPOINT_FROM) - { - if (lpt->m_oldCursor) - m_canvas->SetCursor(* lpt->m_oldCursor); - -// this->Erase(dc); - -// lpt->m_xpos = x; lpt->m_ypos = y; - - if (lineShape->GetFrom()) - { - lineShape->GetFrom()->MoveLineToNewAttachment(dc, lineShape, x, y); - } - } - if (lpt->m_type == CONTROL_POINT_ENDPOINT_TO) - { - if (lpt->m_oldCursor) - m_canvas->SetCursor(* lpt->m_oldCursor); - -// lpt->m_xpos = x; lpt->m_ypos = y; - - if (lineShape->GetTo()) - { - lineShape->GetTo()->MoveLineToNewAttachment(dc, lineShape, x, y); - } - } - - // Needed? -#if 0 - int i = 0; - for (i = 0; i < lineShape->GetLineControlPoints()->Number(); i++) - if (((wxRealPoint *)(lineShape->GetLineControlPoints()->Nth(i)->Data())) == lpt->m_point) - break; - - // N.B. in OnMoveControlPoint, an event handler in Hardy could have deselected - // the line and therefore deleted 'this'. -> GPF, intermittently. - // So assume at this point that we've been blown away. - - lineShape->OnMoveControlPoint(i+1, x, y); -#endif -} - -// This is called only when a non-end control point is moved. -bool wxLineShape::OnMoveMiddleControlPoint(wxDC& dc, wxLineControlPoint* lpt, const wxRealPoint& pt) -{ - lpt->m_xpos = pt.x; lpt->m_ypos = pt.y; - lpt->m_point->x = pt.x; lpt->m_point->y = pt.y; - - GetEventHandler()->OnMoveLink(dc); - - return TRUE; -} - -// Implement movement of endpoint to a new attachment -// OBSOLETE: done by dragging with the left button. - -#if 0 -void wxLineControlPoint::OnDragRight(bool draw, double x, double y, int keys, int attachment) -{ - if (m_type == CONTROL_POINT_ENDPOINT_FROM || m_type == CONTROL_POINT_ENDPOINT_TO) - { - m_xpos = x; m_ypos = y; - } -} - -void wxLineControlPoint::OnBeginDragRight(double x, double y, int keys, int attachment) -{ - wxClientDC dc(GetCanvas()); - GetCanvas()->PrepareDC(dc); - - wxLineShape *lineShape = (wxLineShape *)m_shape; - if (m_type == CONTROL_POINT_ENDPOINT_FROM || m_type == CONTROL_POINT_ENDPOINT_TO) - { - Erase(dc); - lineShape->GetEventHandler()->OnDraw(dc); - if (m_type == CONTROL_POINT_ENDPOINT_FROM) - { - lineShape->GetFrom()->GetEventHandler()->OnDraw(dc); - lineShape->GetFrom()->GetEventHandler()->OnDrawContents(dc); - } - else - { - lineShape->GetTo()->GetEventHandler()->OnDraw(dc); - lineShape->GetTo()->GetEventHandler()->OnDrawContents(dc); - } - m_canvas->SetCursor(g_oglBullseyeCursor); - m_oldCursor = wxSTANDARD_CURSOR; - } -} - -void wxLineControlPoint::OnEndDragRight(double x, double y, int keys, int attachment) -{ - wxClientDC dc(GetCanvas()); - GetCanvas()->PrepareDC(dc); - - wxLineShape *lineShape = (wxLineShape *)m_shape; - if (m_type == CONTROL_POINT_ENDPOINT_FROM) - { - if (m_oldCursor) - m_canvas->SetCursor(m_oldCursor); - - m_xpos = x; m_ypos = y; - - if (lineShape->GetFrom()) - { - lineShape->GetFrom()->EraseLinks(dc); - - int new_attachment; - double distance; - - if (lineShape->GetFrom()->HitTest(x, y, &new_attachment, &distance)) - lineShape->SetAttachments(new_attachment, lineShape->GetAttachmentTo()); - - lineShape->GetFrom()->MoveLinks(dc); - } - } - if (m_type == CONTROL_POINT_ENDPOINT_TO) - { - if (m_oldCursor) - m_canvas->SetCursor(m_oldCursor); - m_shape->Erase(dc); - - m_xpos = x; m_ypos = y; - - if (lineShape->GetTo()) - { - lineShape->GetTo()->EraseLinks(dc); - - int new_attachment; - double distance; - if (lineShape->GetTo()->HitTest(x, y, &new_attachment, &distance)) - lineShape->SetAttachments(lineShape->GetAttachmentFrom(), new_attachment); - - lineShape->GetTo()->MoveLinks(dc); - } - } - int i = 0; - for (i = 0; i < lineShape->GetLineControlPoints()->Number(); i++) - if (((wxRealPoint *)(lineShape->GetLineControlPoints()->Nth(i)->Data())) == m_point) - break; - lineShape->OnMoveControlPoint(i+1, x, y); - if (!m_canvas->GetQuickEditMode()) m_canvas->Redraw(dc); -} -#endif - -/* - * Get the point on the given line (x1, y1) (x2, y2) - * distance 'length' along from the end, - * returned values in x and y - */ - -void GetPointOnLine(double x1, double y1, double x2, double y2, - double length, double *x, double *y) -{ - double l = (double)sqrt((x2 - x1)*(x2 - x1) + (y2 - y1)*(y2 - y1)); - - if (l < 0.01) - l = (double) 0.01; - - double i_bar = (x2 - x1)/l; - double j_bar = (y2 - y1)/l; - - *x = (- length*i_bar) + x2; - *y = (- length*j_bar) + y2; -} - -wxArrowHead *wxLineShape::AddArrow(WXTYPE type, int end, double size, double xOffset, - const wxString& name, wxPseudoMetaFile *mf, long arrowId) -{ - wxArrowHead *arrow = new wxArrowHead(type, end, size, xOffset, name, mf, arrowId); - m_arcArrows.Append(arrow); - return arrow; -} - -/* - * Add arrowhead at a particular position in the arrowhead list. - */ -bool wxLineShape::AddArrowOrdered(wxArrowHead *arrow, wxList& referenceList, int end) -{ - wxNode *refNode = referenceList.First(); - wxNode *currNode = m_arcArrows.First(); - wxString targetName(arrow->GetName()); - if (!refNode) return FALSE; - - // First check whether we need to insert in front of list, - // because this arrowhead is the first in the reference - // list and should therefore be first in the current list. - wxArrowHead *refArrow = (wxArrowHead *)refNode->Data(); - if (refArrow->GetName() == targetName) - { - m_arcArrows.Insert(arrow); - return TRUE; - } - - while (refNode && currNode) - { - wxArrowHead *currArrow = (wxArrowHead *)currNode->Data(); - refArrow = (wxArrowHead *)refNode->Data(); - - // Matching: advance current arrow pointer - if ((currArrow->GetArrowEnd() == end) && - (currArrow->GetName() == refArrow->GetName())) - { - currNode = currNode->Next(); // Could be NULL now - if (currNode) - currArrow = (wxArrowHead *)currNode->Data(); - } - - // Check if we're at the correct position in the - // reference list - if (targetName == refArrow->GetName()) - { - if (currNode) - m_arcArrows.Insert(currNode, arrow); - else - m_arcArrows.Append(arrow); - return TRUE; - } - refNode = refNode->Next(); - } - m_arcArrows.Append(arrow); - return TRUE; -} - -void wxLineShape::ClearArrowsAtPosition(int end) -{ - wxNode *node = m_arcArrows.First(); - while (node) - { - wxArrowHead *arrow = (wxArrowHead *)node->Data(); - wxNode *next = node->Next(); - switch (end) - { - case -1: - { - delete arrow; - delete node; - break; - } - case ARROW_POSITION_START: - { - if (arrow->GetArrowEnd() == ARROW_POSITION_START) - { - delete arrow; - delete node; - } - break; - } - case ARROW_POSITION_END: - { - if (arrow->GetArrowEnd() == ARROW_POSITION_END) - { - delete arrow; - delete node; - } - break; - } - case ARROW_POSITION_MIDDLE: - { - if (arrow->GetArrowEnd() == ARROW_POSITION_MIDDLE) - { - delete arrow; - delete node; - } - break; - } - } - node = next; - } -} - -bool wxLineShape::ClearArrow(const wxString& name) -{ - wxNode *node = m_arcArrows.First(); - while (node) - { - wxArrowHead *arrow = (wxArrowHead *)node->Data(); - if (arrow->GetName() == name) - { - delete arrow; - delete node; - return TRUE; - } - node = node->Next(); - } - return FALSE; -} - -/* - * Finds an arrowhead at the given position (if -1, any position) - * - */ - -wxArrowHead *wxLineShape::FindArrowHead(int position, const wxString& name) -{ - wxNode *node = m_arcArrows.First(); - while (node) - { - wxArrowHead *arrow = (wxArrowHead *)node->Data(); - if (((position == -1) || (position == arrow->GetArrowEnd())) && - (arrow->GetName() == name)) - return arrow; - node = node->Next(); - } - return NULL; -} - -wxArrowHead *wxLineShape::FindArrowHead(long arrowId) -{ - wxNode *node = m_arcArrows.First(); - while (node) - { - wxArrowHead *arrow = (wxArrowHead *)node->Data(); - if (arrowId == arrow->GetId()) - return arrow; - node = node->Next(); - } - return NULL; -} - -/* - * Deletes an arrowhead at the given position (if -1, any position) - * - */ - -bool wxLineShape::DeleteArrowHead(int position, const wxString& name) -{ - wxNode *node = m_arcArrows.First(); - while (node) - { - wxArrowHead *arrow = (wxArrowHead *)node->Data(); - if (((position == -1) || (position == arrow->GetArrowEnd())) && - (arrow->GetName() == name)) - { - delete arrow; - delete node; - return TRUE; - } - node = node->Next(); - } - return FALSE; -} - -// Overloaded DeleteArrowHead: pass arrowhead id. -bool wxLineShape::DeleteArrowHead(long id) -{ - wxNode *node = m_arcArrows.First(); - while (node) - { - wxArrowHead *arrow = (wxArrowHead *)node->Data(); - if (arrow->GetId() == id) - { - delete arrow; - delete node; - return TRUE; - } - node = node->Next(); - } - return FALSE; -} - -/* - * Calculate the minimum width a line - * occupies, for the purposes of drawing lines in tools. - * - */ - -double wxLineShape::FindMinimumWidth() -{ - double minWidth = 0.0; - wxNode *node = m_arcArrows.First(); - while (node) - { - wxArrowHead *arrowHead = (wxArrowHead *)node->Data(); - minWidth += arrowHead->GetSize(); - if (node->Next()) - minWidth += arrowHead->GetSpacing(); - - node = node->Next(); - } - // We have ABSOLUTE minimum now. So - // scale it to give it reasonable aesthetics - // when drawing with line. - if (minWidth > 0.0) - minWidth = (double)(minWidth * 1.4); - else - minWidth = 20.0; - - SetEnds(0.0, 0.0, minWidth, 0.0); - Initialise(); - - return minWidth; -} - -// Find which position we're talking about at this (x, y). -// Returns ARROW_POSITION_START, ARROW_POSITION_MIDDLE, ARROW_POSITION_END -int wxLineShape::FindLinePosition(double x, double y) -{ - double startX, startY, endX, endY; - GetEnds(&startX, &startY, &endX, &endY); - - // Find distances from centre, start and end. The smallest wins. - double centreDistance = (double)(sqrt((x - m_xpos)*(x - m_xpos) + (y - m_ypos)*(y - m_ypos))); - double startDistance = (double)(sqrt((x - startX)*(x - startX) + (y - startY)*(y - startY))); - double endDistance = (double)(sqrt((x - endX)*(x - endX) + (y - endY)*(y - endY))); - - if (centreDistance < startDistance && centreDistance < endDistance) - return ARROW_POSITION_MIDDLE; - else if (startDistance < endDistance) - return ARROW_POSITION_START; - else - return ARROW_POSITION_END; -} - -// Set alignment flags -void wxLineShape::SetAlignmentOrientation(bool isEnd, bool isHoriz) -{ - if (isEnd) - { - if (isHoriz && ((m_alignmentEnd & LINE_ALIGNMENT_HORIZ) != LINE_ALIGNMENT_HORIZ)) - m_alignmentEnd |= LINE_ALIGNMENT_HORIZ; - else if (!isHoriz && ((m_alignmentEnd & LINE_ALIGNMENT_HORIZ) == LINE_ALIGNMENT_HORIZ)) - m_alignmentEnd -= LINE_ALIGNMENT_HORIZ; - } - else - { - if (isHoriz && ((m_alignmentStart & LINE_ALIGNMENT_HORIZ) != LINE_ALIGNMENT_HORIZ)) - m_alignmentStart |= LINE_ALIGNMENT_HORIZ; - else if (!isHoriz && ((m_alignmentStart & LINE_ALIGNMENT_HORIZ) == LINE_ALIGNMENT_HORIZ)) - m_alignmentStart -= LINE_ALIGNMENT_HORIZ; - } -} - -void wxLineShape::SetAlignmentType(bool isEnd, int alignType) -{ - if (isEnd) - { - if (alignType == LINE_ALIGNMENT_TO_NEXT_HANDLE) - { - if ((m_alignmentEnd & LINE_ALIGNMENT_TO_NEXT_HANDLE) != LINE_ALIGNMENT_TO_NEXT_HANDLE) - m_alignmentEnd |= LINE_ALIGNMENT_TO_NEXT_HANDLE; - } - else if ((m_alignmentEnd & LINE_ALIGNMENT_TO_NEXT_HANDLE) == LINE_ALIGNMENT_TO_NEXT_HANDLE) - m_alignmentEnd -= LINE_ALIGNMENT_TO_NEXT_HANDLE; - } - else - { - if (alignType == LINE_ALIGNMENT_TO_NEXT_HANDLE) - { - if ((m_alignmentStart & LINE_ALIGNMENT_TO_NEXT_HANDLE) != LINE_ALIGNMENT_TO_NEXT_HANDLE) - m_alignmentStart |= LINE_ALIGNMENT_TO_NEXT_HANDLE; - } - else if ((m_alignmentStart & LINE_ALIGNMENT_TO_NEXT_HANDLE) == LINE_ALIGNMENT_TO_NEXT_HANDLE) - m_alignmentStart -= LINE_ALIGNMENT_TO_NEXT_HANDLE; - } -} - -bool wxLineShape::GetAlignmentOrientation(bool isEnd) -{ - if (isEnd) - return ((m_alignmentEnd & LINE_ALIGNMENT_HORIZ) == LINE_ALIGNMENT_HORIZ); - else - return ((m_alignmentStart & LINE_ALIGNMENT_HORIZ) == LINE_ALIGNMENT_HORIZ); -} - -int wxLineShape::GetAlignmentType(bool isEnd) -{ - if (isEnd) - return (m_alignmentEnd & LINE_ALIGNMENT_TO_NEXT_HANDLE); - else - return (m_alignmentStart & LINE_ALIGNMENT_TO_NEXT_HANDLE); -} - -wxRealPoint *wxLineShape::GetNextControlPoint(wxShape *nodeObject) -{ - int n = m_lineControlPoints->Number(); - int nn = 0; - if (m_to == nodeObject) - { - // Must be END of line, so we want (n - 1)th control point. - // But indexing ends at n-1, so subtract 2. - nn = n - 2; - } - else nn = 1; - wxNode *node = m_lineControlPoints->Nth(nn); - if (node) - { - return (wxRealPoint *)node->Data(); - } - else - return FALSE; -} - -/* - * Arrowhead - * - */ - -IMPLEMENT_DYNAMIC_CLASS(wxArrowHead, wxObject) - -wxArrowHead::wxArrowHead(WXTYPE type, int end, double size, double dist, const wxString& name, - wxPseudoMetaFile *mf, long arrowId) -{ - m_arrowType = type; m_arrowEnd = end; m_arrowSize = size; - m_xOffset = dist; - m_yOffset = 0.0; - m_spacing = 5.0; - - m_arrowName = name; - m_metaFile = mf; - m_id = arrowId; - if (m_id == -1) - m_id = NewId(); -} - -wxArrowHead::wxArrowHead(wxArrowHead& toCopy) -{ - m_arrowType = toCopy.m_arrowType; m_arrowEnd = toCopy.GetArrowEnd(); - m_arrowSize = toCopy.m_arrowSize; - m_xOffset = toCopy.m_xOffset; - m_yOffset = toCopy.m_yOffset; - m_spacing = toCopy.m_spacing; - m_arrowName = toCopy.m_arrowName ; - if (toCopy.m_metaFile) - m_metaFile = new wxPseudoMetaFile(*(toCopy.m_metaFile)); - else - m_metaFile = NULL; - m_id = NewId(); -} - -wxArrowHead::~wxArrowHead() -{ - if (m_metaFile) delete m_metaFile; -} - -void wxArrowHead::SetSize(double size) -{ - m_arrowSize = size; - if ((m_arrowType == ARROW_METAFILE) && m_metaFile) - { - double oldWidth = m_metaFile->m_width; - if (oldWidth == 0.0) - return; - - double scale = (double)(size/oldWidth); - if (scale != 1.0) - m_metaFile->Scale(scale, scale); - } -} - -// Can override this to create a different class of label shape -wxLabelShape* wxLineShape::OnCreateLabelShape(wxLineShape *parent, wxShapeRegion *region, double w, double h) -{ - return new wxLabelShape(parent, region, w, h); -} - -/* - * Label object - * - */ - -IMPLEMENT_DYNAMIC_CLASS(wxLabelShape, wxRectangleShape) - -wxLabelShape::wxLabelShape(wxLineShape *parent, wxShapeRegion *region, double w, double h):wxRectangleShape(w, h) -{ - m_lineShape = parent; - m_shapeRegion = region; - SetPen(wxThePenList->FindOrCreatePen(wxColour(0, 0, 0), 1, wxDOT)); -} - -wxLabelShape::~wxLabelShape() -{ -} - -void wxLabelShape::OnDraw(wxDC& dc) -{ - if (m_lineShape && !m_lineShape->GetDrawHandles()) - return; - - double x1 = (double)(m_xpos - m_width/2.0); - double y1 = (double)(m_ypos - m_height/2.0); - - if (m_pen) - { - if (m_pen->GetWidth() == 0) - dc.SetPen(* g_oglTransparentPen); - else - dc.SetPen(* m_pen); - } - dc.SetBrush(* wxTRANSPARENT_BRUSH); - - if (m_cornerRadius > 0.0) - dc.DrawRoundedRectangle(WXROUND(x1), WXROUND(y1), WXROUND(m_width), WXROUND(m_height), m_cornerRadius); - else - dc.DrawRectangle(WXROUND(x1), WXROUND(y1), WXROUND(m_width), WXROUND(m_height)); -} - -void wxLabelShape::OnDrawContents(wxDC& dc) -{ -} - -void wxLabelShape::OnDragLeft(bool draw, double x, double y, int keys, int attachment) -{ - wxRectangleShape::OnDragLeft(draw, x, y, keys, attachment); -} - -void wxLabelShape::OnBeginDragLeft(double x, double y, int keys, int attachment) -{ - wxRectangleShape::OnBeginDragLeft(x, y, keys, attachment); -} - -void wxLabelShape::OnEndDragLeft(double x, double y, int keys, int attachment) -{ - wxRectangleShape::OnEndDragLeft(x, y, keys, attachment); -} - -bool wxLabelShape::OnMovePre(wxDC& dc, double x, double y, double old_x, double old_y, bool display) -{ - return m_lineShape->OnLabelMovePre(dc, this, x, y, old_x, old_y, display); -} - -bool wxLineShape::OnLabelMovePre(wxDC& dc, wxLabelShape* labelShape, double x, double y, double old_x, double old_y, bool display) -{ - labelShape->m_shapeRegion->SetSize(labelShape->GetWidth(), labelShape->GetHeight()); - - // Find position in line's region list - int i = 0; - wxNode *node = GetRegions().First(); - while (node) - { - if (labelShape->m_shapeRegion == (wxShapeRegion *)node->Data()) - node = NULL; - else - { - node = node->Next(); - i ++; - } - } - double xx, yy; - GetLabelPosition(i, &xx, &yy); - // Set the region's offset, relative to the default position for - // each region. - labelShape->m_shapeRegion->SetPosition((double)(x - xx), (double)(y - yy)); - - labelShape->SetX(x); - labelShape->SetY(y); - - // Need to reformat to fit region. - if (labelShape->m_shapeRegion->GetText()) - { - - wxString s(labelShape->m_shapeRegion->GetText()); - labelShape->FormatText(dc, s, i); - DrawRegion(dc, labelShape->m_shapeRegion, xx, yy); - } - return TRUE; -} - -// Divert left and right clicks to line object -void wxLabelShape::OnLeftClick(double x, double y, int keys, int attachment) -{ - m_lineShape->GetEventHandler()->OnLeftClick(x, y, keys, attachment); -} - -void wxLabelShape::OnRightClick(double x, double y, int keys, int attachment) -{ - m_lineShape->GetEventHandler()->OnRightClick(x, y, keys, attachment); -} - diff --git a/utils/ogl/src/lines.h b/utils/ogl/src/lines.h deleted file mode 100644 index 9619bf75cf..0000000000 --- a/utils/ogl/src/lines.h +++ /dev/null @@ -1,296 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: lines.h -// Purpose: wxLineShape -// Author: Julian Smart -// Modified by: -// Created: 12/07/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _OGL_LINES_H_ -#define _OGL_LINES_H_ - -#ifdef __GNUG__ -#pragma interface "lines.h" -#endif - -class wxLabelShape; -class wxPseudoMetaFile; -class wxLineControlPoint; -/* - * Arcs with multiple arrowheads - * - */ - -// Types of arrowhead -// (i) Built-in -#define ARROW_HOLLOW_CIRCLE 1 -#define ARROW_FILLED_CIRCLE 2 -#define ARROW_ARROW 3 -#define ARROW_SINGLE_OBLIQUE 4 -#define ARROW_DOUBLE_OBLIQUE 5 -// (ii) Custom -#define ARROW_METAFILE 20 - -// Position of arrow on line -#define ARROW_POSITION_START 0 -#define ARROW_POSITION_END 1 -#define ARROW_POSITION_MIDDLE 2 - -// Line alignment flags -// Vertical by default -#define LINE_ALIGNMENT_HORIZ 1 -#define LINE_ALIGNMENT_VERT 0 -#define LINE_ALIGNMENT_TO_NEXT_HANDLE 2 -#define LINE_ALIGNMENT_NONE 0 - -class wxArrowHead: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxArrowHead) - - public: - wxArrowHead(WXTYPE type = 0, int end = 0, double size = 0.0, double dist = 0.0, const wxString& name = "", wxPseudoMetaFile *mf = NULL, - long arrowId = -1); - ~wxArrowHead(); - wxArrowHead(wxArrowHead& toCopy); - - inline WXTYPE _GetType() const { return m_arrowType; } - inline int GetPosition() const { return m_arrowEnd; } - inline void SetPosition(int pos) { m_arrowEnd = pos; } - inline double GetXOffset() const { return m_xOffset; } - inline double GetYOffset() const { return m_yOffset; } - inline double GetSpacing() const { return m_spacing; } - inline double GetSize() const { return m_arrowSize; } - inline wxString GetName() const { return m_arrowName; } - inline void SetXOffset(double x) { m_xOffset = x; } - inline void SetYOffset(double y) { m_yOffset = y; } - inline wxPseudoMetaFile *GetMetaFile() const { return m_metaFile; } - inline long GetId() const { return m_id; } - inline int GetArrowEnd() const { return m_arrowEnd; } - inline double GetArrowSize() const { return m_arrowSize; } - void SetSize(double size); - inline void SetSpacing(double sp) { m_spacing = sp; } - - protected: - WXTYPE m_arrowType; - int m_arrowEnd; // Position on line - double m_xOffset; // Distance from arc start or end, w.r.t. point on arrowhead - // nearest start or end. If zero, use default spacing. - double m_yOffset; // vertical offset (w.r.t. a horizontal line). Normally zero. - double m_spacing; // Spacing from the last arrowhead - double m_arrowSize; // Length of arrowhead - wxString m_arrowName; // Name of arrow - bool m_saveToFile; // TRUE if we want to save custom arrowheads to file. - wxPseudoMetaFile* m_metaFile; // Pseudo metafile if this is a custom arrowhead - long m_id; // identifier -}; - -// Line object -class wxLabelShape; -class wxLineShape: public wxShape -{ - DECLARE_DYNAMIC_CLASS(wxLineShape) - - public: - wxLineShape(); - ~wxLineShape(); - - // Called when a connected object has moved, to move the link to - // correct position - // moveControlPoints must be disabled when a control point is being - // dragged. - void OnMoveLink(wxDC& dc, bool moveControlPoints = TRUE); - bool OnMovePre(wxDC& dc, double x, double y, double old_x, double old_y, bool display = TRUE); - void OnDraw(wxDC& dc); - void OnDrawContents(wxDC& dc); - void OnDrawControlPoints(wxDC& dc); - void OnEraseControlPoints(wxDC& dc); - void OnErase(wxDC& dc); - virtual bool OnMoveControlPoint(int WXUNUSED(which), double WXUNUSED(x), double WXUNUSED(y)) { return FALSE; } - virtual bool OnMoveMiddleControlPoint(wxDC& dc, wxLineControlPoint* lpt, const wxRealPoint& pt); - virtual bool OnLabelMovePre(wxDC& dc, wxLabelShape* labelShape, double x, double y, double old_x, double old_y, bool display); - void OnDrawOutline(wxDC& dc, double x, double y, double w, double h); - void GetBoundingBoxMin(double *w, double *h); - void FormatText(wxDC& dc, const wxString& s, int regionId = 0); - virtual void SetEnds(double x1, double y1, double x2, double y2); - virtual void GetEnds(double *x1, double *y1, double *x2, double *y2); - inline virtual wxShape *GetFrom() { return m_from; } - inline virtual wxShape *GetTo() { return m_to; } - inline virtual int GetAttachmentFrom() { return m_attachmentFrom; } - inline virtual int GetAttachmentTo() { return m_attachmentTo; } - - virtual void SetFrom(wxShape *object); - virtual void SetTo(wxShape *object); - virtual void DrawArrows(wxDC& dc); - - // Finds the x, y points at the two ends of the line. - // This function can be used by e.g. line-routing routines to - // get the actual points on the two node images where the lines will be drawn - // to/from. - void FindLineEndPoints(double *fromX, double *fromY, double *toX, double *toY); - - // Format one region at this position - void DrawRegion(wxDC& dc, wxShapeRegion *region, double x, double y); - - // Erase one region at this position - void EraseRegion(wxDC& dc, wxShapeRegion *region, double x, double y); - - // Get the reference point for a label. Region x and y - // are offsets from this. - // position is 0 (middle), 1 (start), 2 (end) - void GetLabelPosition(int position, double *x, double *y); - - // Can override this to create a different class of label shape - virtual wxLabelShape* OnCreateLabelShape(wxLineShape *parent = NULL, wxShapeRegion *region = NULL, double w = 0.0, double h = 0.0); - - // Straighten verticals and horizontals - virtual void Straighten(wxDC* dc = NULL); - - // Not implemented - inline void SetMaintainStraightLines(bool flag) { m_maintainStraightLines = flag; } - inline bool GetMaintainStraightLines() const { return m_maintainStraightLines; } - - // Make handle control points - void MakeControlPoints(); - void ResetControlPoints(); - - // Make a given number of control points - virtual void MakeLineControlPoints(int n); - virtual wxNode *InsertLineControlPoint(wxDC* dc); - virtual bool DeleteLineControlPoint(); - virtual void Initialise(); - inline wxList *GetLineControlPoints() { return m_lineControlPoints; } - - // Override dragging behaviour - don't want to be able to drag lines! - void OnDragLeft(bool draw, double x, double y, int keys=0, int attachment = 0); - void OnBeginDragLeft(double x, double y, int keys=0, int attachment = 0); - void OnEndDragLeft(double x, double y, int keys=0, int attachment = 0); - - // Control points ('handles') redirect control to the actual shape, to make it easier - // to override sizing behaviour. - virtual void OnSizingDragLeft(wxControlPoint* pt, bool draw, double x, double y, int keys=0, int attachment = 0); - virtual void OnSizingBeginDragLeft(wxControlPoint* pt, double x, double y, int keys=0, int attachment = 0); - virtual void OnSizingEndDragLeft(wxControlPoint* pt, double x, double y, int keys=0, int attachment = 0); - - // Override select, to create/delete temporary label-moving objects - void Select(bool select = TRUE, wxDC* dc = NULL); - - // Set to spline (TRUE) or line (FALSE) - inline void SetSpline(bool spl) { m_isSpline = spl; } - inline bool IsSpline() const { return m_isSpline; } - - void Unlink(); - void SetAttachments(int from_attach, int to_attach); - inline void SetAttachmentFrom(int attach) { m_attachmentFrom = attach; } - inline void SetAttachmentTo(int attach) { m_attachmentTo = attach; } - - bool HitTest(double x, double y, int *attachment, double *distance); - -#ifdef PROLOGIO - // I/O - virtual void WriteAttributes(wxExpr *clause); - virtual void ReadAttributes(wxExpr *clause); -#endif - - virtual void FindNth(wxShape *image, int *nth, int *no_arcs, bool incoming); - - // Find which position we're talking about at this (x, y). - // Returns ARROW_POSITION_START, ARROW_POSITION_MIDDLE, ARROW_POSITION_END - int FindLinePosition(double x, double y); - - // This is really to distinguish between lines and other images. - // For lines, want to pass drag to canvas, since lines tend to prevent - // dragging on a canvas (they get in the way.) - virtual bool Draggable() const { return FALSE; } - - // Does the copying for this object - void Copy(wxShape& copy); - - // Add an arrowhead. - wxArrowHead *AddArrow(WXTYPE type, int end = ARROW_POSITION_END, - double arrowSize = 10.0, double xOffset = 0.0, const wxString& name = "", - wxPseudoMetaFile *mf = NULL, long arrowId = -1); - - // Add an arrowhead in the position indicated by the reference - // list of arrowheads, which contains all legal arrowheads for this - // line, in the correct order. - // E.g. reference list: a b c d e - // Current line list: a d - // Add c, then line list is: a c d - // If no legal arrowhead position, return FALSE. - // Assume reference list is for one end only, since it potentially defines - // the ordering for any one of the 3 positions. So we don't check - // the reference list for arrowhead position. - bool AddArrowOrdered(wxArrowHead *arrow, wxList& referenceList, int end); - - // Delete arrowhead(s) - void ClearArrowsAtPosition(int end = -1); - bool ClearArrow(const wxString& name); - wxArrowHead *FindArrowHead(int position, const wxString& name); - wxArrowHead *FindArrowHead(long arrowId); - bool DeleteArrowHead(int position, const wxString& name); - bool DeleteArrowHead(long arrowId); - void DrawArrow(wxDC& dc, wxArrowHead *arrow, double xOffset, bool proportionalOffset); - inline void SetIgnoreOffsets(bool ignore) { m_ignoreArrowOffsets = ignore; } - inline wxList& GetArrows() const { return (wxList&) m_arcArrows; } - - // Find horizontal width for drawing a line with - // arrows in minimum space. Assume arrows at - // END only - double FindMinimumWidth(); - - // Set alignment flags. ALIGNMENT NOT IMPLEMENTED. - void SetAlignmentOrientation(bool isEnd, bool isHoriz); - void SetAlignmentType(bool isEnd, int alignType); - bool GetAlignmentOrientation(bool isEnd); - int GetAlignmentType(bool isEnd); - - // Find next control point in line after the start/end point - // (depending on whether the node object is at start or end) - wxRealPoint *GetNextControlPoint(wxShape *nodeObject); - inline bool IsEnd(wxShape *nodeObject) const { return (m_to == nodeObject); } - -private: - bool m_erasing; // flag to say whether we're erasing or drawing - // this line (really so metafiles can draw a - // blank rectangle) - bool m_ignoreArrowOffsets; // Don't always want to draw arrowhead offsets - // because they may not work on tool palettes (for example) - bool m_isSpline; - bool m_maintainStraightLines; - -protected: - // Temporary list of line segment orientations - // so we know what direction the line is supposed to be dog-legging - // in. The values are integer: 0 for vertical, 1 for horizontal. - wxList m_lineOrientations; - - // Temporary pointers for start, middle and end label editing objects - // (active only when the line is selected) - wxLabelShape* m_labelObjects[3]; - - // These define the segmented line - not to be confused with temporary control - // points which appear when object is selected (although in this case they'll - // probably be the same) - wxList* m_lineControlPoints; - - double m_arrowSpacing; // Separation between adjacent arrows - - wxShape* m_to; - wxShape* m_from; - - int m_attachmentTo; // Attachment point at one end - int m_attachmentFrom; // Attachment point at other end - - // Alignment flags - int m_alignmentStart; - int m_alignmentEnd; - - wxList m_arcArrows; - -}; - -#endif - // _OGL_LINES_H_ diff --git a/utils/ogl/src/linesp.h b/utils/ogl/src/linesp.h deleted file mode 100644 index 383fe7f554..0000000000 --- a/utils/ogl/src/linesp.h +++ /dev/null @@ -1,89 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: linesp.h -// Purpose: Lines private header file -// Author: Julian Smart -// Modified by: -// Created: 12/07/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _OGL_LINESP_H_ -#define _OGL_LINESP_H_ - -#ifdef __GNUG__ -#pragma interface "linesp.h" -#endif - -class wxLineShape; -class wxLineControlPoint: public wxControlPoint -{ - DECLARE_DYNAMIC_CLASS(wxLineControlPoint) - friend class wxLineShape; - public: - - wxLineControlPoint(wxShapeCanvas *the_canvas = NULL, wxShape *object = NULL, double size = 0.0, - double x = 0.0, double y = 0.0, int the_type = 0); - ~wxLineControlPoint(); - - void OnDraw(wxDC& dc); - void OnDragLeft(bool draw, double x, double y, int keys=0, int attachment = 0); - void OnBeginDragLeft(double x, double y, int keys=0, int attachment = 0); - void OnEndDragLeft(double x, double y, int keys=0, int attachment = 0); - - // Obsolete (left-dragging now moves attachment point to new relative position OR new - // attachment id) -#if 0 - void OnDragRight(bool draw, double x, double y, int keys=0, int attachment = 0); - void OnBeginDragRight(double x, double y, int keys=0, int attachment = 0); - void OnEndDragRight(double x, double y, int keys=0, int attachment = 0); -#endif - -public: - - int m_type; - wxRealPoint* m_point; // Line point - wxRealPoint m_originalPos; - -}; - -/* - * Temporary arc label object - */ - -class wxLabelShape: public wxRectangleShape -{ - DECLARE_DYNAMIC_CLASS(wxLabelShape) - - public: - wxLabelShape(wxLineShape *parent = NULL, wxShapeRegion *region = NULL, double w = 0.0, double h = 0.0); - ~wxLabelShape(); - - void OnDraw(wxDC& dc); - void OnDrawContents(wxDC& dc); - void OnLeftClick(double x, double y, int keys = 0, int attachment = 0); - void OnRightClick(double x, double y, int keys = 0, int attachment = 0); - void OnDragLeft(bool draw, double x, double y, int keys=0, int attachment = 0); - void OnBeginDragLeft(double x, double y, int keys=0, int attachment = 0); - void OnEndDragLeft(double x, double y, int keys=0, int attachment = 0); - bool OnMovePre(wxDC& dc, double x, double y, double old_x, double old_y, bool display = TRUE); - -public: - wxLineShape* m_lineShape; - wxShapeRegion* m_shapeRegion; - -}; - -/* - * Get the point on the given line (x1, y1) (x2, y2) - * distance 'length' along from the end, - * returned values in x and y - */ - -void GetPointOnLine(double x1, double y1, double x2, double y2, - double length, double *x, double *y); - -#endif - // _OGL_LINESP_H_ - diff --git a/utils/ogl/src/makefile.b32 b/utils/ogl/src/makefile.b32 deleted file mode 100644 index c9acc471b1..0000000000 --- a/utils/ogl/src/makefile.b32 +++ /dev/null @@ -1,106 +0,0 @@ -# -# File: makefile.b32 -# Author: Julian Smart -# Created: 1996 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile : Builds OGL for BC++, 32-bit. - -!if "$(BCCDIR)" == "" -!error You must define the BCCDIR variable in autoexec.bat, e.g. BCCDIR=d:\bc4 -!endif - -!if "$(WXWIN)" == "" -!error You must define the WXWIN variable in autoexec.bat, e.g. WXWIN=c:\wx -!endif - -# Change WXDIR to wherever wxWindows is found -WXDIR = $(WXWIN) -!include $(WXDIR)\src\makeb32.env - -WXLIB = $(WXDIR)\lib\wx32.lib -WXINC = $(WXDIR)\include -CFG=$(WXWIN)\src\wxwin32.cfg - -OGLDIR = $(WXDIR)\utils\ogl -OGLLIB = $(WXDIR)\lib\ogl.lib -DOCDIR = $(OGLDIR)\docs - -INC=/DPROLOGIO=1 # /I$(WXDIR)\include\base /I$(WXDIR)\include\msw - -LIBS=$(WXLIB) $(OGLLIB) mathwl cwl import mathwl - -!ifndef FINAL -FINAL=0 -!endif - -!if "$(FINAL)" == "0" -LINKFLAGS=/v /Tpe /L$(WXLIBDIR);$(BCCDIR)\lib -OPT = -Od -DEBUG_FLAGS= -v -DDEBUG=$(DEBUG) -!else -LINKFLAGS=/Tpe /L$(WXLIBDIR);$(BCCDIR)\lib -OPT = -O2 -DEBUG_FLAGS = -DDEBUG=$(DEBUG) -!endif - -CPPFLAGS=$(DEBUG_FLAGS) $(OPT) @$(CFG) -CFLAGS=$(DEBUG_FLAGS) $(OPT) @$(CFG) - -OBJECTS = basic.obj basic2.obj canvas.obj ogldiag.obj lines.obj misc.obj divided.obj constrnt.obj\ - composit.obj drawn.obj bmpshape.obj mfutils.obj - -all: $(OGLLIB) - -.$(SRCSUFF).obj: - bcc32 $(CPPFLAGS) $(INC) -c {$< } - -$(OGLLIB): $(OBJECTS) - erase $(OGLLIB) - tlib /P128 @&&! -$(OGLLIB) & -+$(OBJECTS:.obj =.obj +) -! - -# Making documents -docs: hlp -hlp: $(DOCDIR)/ogl.hlp -hlp32: $(DOCDIR)/hlp32/ogl.hlp -rtf: $(DOCDIR)/ogl.rtf - -$(DOCDIR)/ogl.hlp: $(DOCDIR)/ogl.rtf $(DOCDIR)/ogl.hpj - cd $(DOCDIR) - -erase ogl.ph - hc ogl - cd $(THISDIR) - -$(DOCDIR)/hlp32/ogl.hlp: $(DOCDIR)/hlp32/ogl.rtf $(DOCDIR)/hlp32/ogl.hpj - cd $(DOCDIR)/hlp32 - -erase ogl.ph - start /w hcw /c /e ogl.hpj - cd $(THISDIR) - -$(DOCDIR)/ogl.rtf: $(DOCDIR)/classes.tex $(DOCDIR)/intro.tex $(DOCDIR)/ogl.tex - cd $(DOCDIR) - start /w tex2rtf $(DOCDIR)/ogl.tex $(DOCDIR)/ogl.rtf -twice -winhelp - cd $(THISDIR) - -$(DOCDIR)/hlp32/ogl.rtf: $(DOCDIR)/classes.tex $(DOCDIR)/intro.tex $(DOCDIR)/ogl.tex - cd $(DOCDIR) - start /w tex2rtf $(DOCDIR)/ogl.tex $(DOCDIR)/hlp32/ogl.rtf -twice -winhelp -macros $(DOCDIR)/t2rtf32.ini - cd $(THISDIR) - -wordrtf: - cd $(DOCDIR) - -wx /W tex2rtf $(DOCDIR)/ogl.tex $(DOCDIR)/ogl.rtf -twice -rtf - cd $(THISDIR) - -clean: - -erase *.obj - -erase *.exe - -erase *.res - -erase ..\lib\*.lib $(OGLLIB) - diff --git a/utils/ogl/src/makefile.bcc b/utils/ogl/src/makefile.bcc deleted file mode 100644 index 92a3d67369..0000000000 --- a/utils/ogl/src/makefile.bcc +++ /dev/null @@ -1,105 +0,0 @@ -# -# File: makefile.bcc -# Author: Julian Smart -# Created: 1996 -# Updated: -# Copyright: (c) 1996 -# -# "%W% %G%" -# -# Makefile : Builds OGL for BC++, 16-bit. - -!if "$(BCCDIR)" == "" -!error You must define the BCCDIR variable in autoexec.bat, e.g. BCCDIR=d:\bc4 -!endif - -!if "$(WXWIN)" == "" -!error You must define the WXWIN variable in autoexec.bat, e.g. WXWIN=c:\wx -!endif - -# Change WXDIR to wherever wxWindows is found -WXDIR = $(WXWIN) -!include $(WXDIR)\src\makebcc.env - -WXLIB = $(WXDIR)\lib\wx.lib -WXINC = $(WXDIR)\include -CFG=$(WXWIN)\src\wxwin.cfg - -OGLDIR = $(WXDIR)\utils\ogl -OGLLIB = $(OGLDIR)\lib\ogl.lib -DOCDIR = $(OGLDIR)\docs - -INC=/DPROLOGIO=1 # /I$(WXDIR)\include\base /I$(WXDIR)\include\msw - -LIBS=$(WXLIB) $(OGLLIB) mathwl cwl import mathwl - -!ifndef FINAL -FINAL=0 -!endif - -!if "$(FINAL)" == "0" -LINKFLAGS=/v/Vt /Twe /L$(WXDIR)\lib;$(BCCDIR)\lib -OPT = -Od -DEBUG_FLAGS= -v -!else -LINKFLAGS=/Twe /L$(WXDIR)\lib;$(BCCDIR)\lib -OPT = -O2 -DEBUG_FLAGS= -!endif -CPPFLAGS=$(DEBUG_FLAGS) $(OPT) @$(CFG) -CFLAGS=$(DEBUG_FLAGS) $(OPT) @$(CFG) - -OBJECTS = basic.obj basic2.obj canvas.obj ogldiag.obj lines.obj misc.obj divided.obj constrnt.obj\ - composit.obj drawn.obj bitmap.obj mfutils.obj - -all: $(OGLLIB) - -.$(SRCSUFF).obj: - bcc $(CPPFLAGS) $(INC) -c {$< } - -$(OGLLIB): $(OBJECTS) - erase $(OGLLIB) - tlib /P128 @&&! -$(OGLLIB) & -+$(OBJECTS:.obj =.obj +) -! - -# Making documents -docs: hlp -hlp: $(DOCDIR)/ogl.hlp -hlp32: $(DOCDIR)/hlp32/ogl.hlp -rtf: $(DOCDIR)/ogl.rtf - -$(DOCDIR)/ogl.hlp: $(DOCDIR)/ogl.rtf $(DOCDIR)/ogl.hpj - cd $(DOCDIR) - -erase ogl.ph - hc ogl - cd $(THISDIR) - -$(DOCDIR)/hlp32/ogl.hlp: $(DOCDIR)/hlp32/ogl.rtf $(DOCDIR)/hlp32/ogl.hpj - cd $(DOCDIR)/hlp32 - -erase ogl.ph - start /w hcw /c /e ogl.hpj - cd $(THISDIR) - -$(DOCDIR)/ogl.rtf: $(DOCDIR)/classes.tex $(DOCDIR)/intro.tex $(DOCDIR)/ogl.tex - cd $(DOCDIR) - start /w tex2rtf $(DOCDIR)/ogl.tex $(DOCDIR)/ogl.rtf -twice -winhelp - cd $(THISDIR) - -$(DOCDIR)/hlp32/ogl.rtf: $(DOCDIR)/classes.tex $(DOCDIR)/intro.tex $(DOCDIR)/ogl.tex - cd $(DOCDIR) - start /w tex2rtf $(DOCDIR)/ogl.tex $(DOCDIR)/hlp32/ogl.rtf -twice -winhelp -macros $(DOCDIR)/t2rtf32.ini - cd $(THISDIR) - -wordrtf: - cd $(DOCDIR) - -wx /W tex2rtf $(DOCDIR)/ogl.tex $(DOCDIR)/ogl.rtf -twice -rtf - cd $(THISDIR) - -clean: - -erase *.obj - -erase *.exe - -erase *.res - -erase ..\lib\*.lib - diff --git a/utils/ogl/src/makefile.dos b/utils/ogl/src/makefile.dos deleted file mode 100644 index 179e52a37f..0000000000 --- a/utils/ogl/src/makefile.dos +++ /dev/null @@ -1,161 +0,0 @@ -# -# File: makefile.dos -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile: Builds object graphics library (DOS). -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -# Set WXDIR for your system -WXDIR = $(WXWIN) - -!include $(WXDIR)\src\makemsc.env - -OGLDIR = $(WXDIR)\utils\ogl -THISDIR = $(OGLDIR)\src -DOCDIR = $(OGLDIR)\docs -WXLIB = $(WXDIR)\lib\wx.lib -LIBS=$(WXLIB) libw llibcew commdlg shell ctl3dv2 - -GRAPHICSLIB = $(WXDIR)\lib\ogl.lib -INC = /I$(WXDIR)\include - -# Normally set OPTIONS = -# to disable PROLOGIO-dependent code -OPTIONS = -DPROLOGIO - -OBJECTS = basic.obj basic2.obj canvas.obj ogldiag.obj lines.obj misc.obj divided.obj constrnt.obj\ - composit.obj drawn.obj bitmap.obj mfutils.obj - -all: $(GRAPHICSLIB) - -wx: - cd $(WXDIR)\src\msw - nmake -f makefile.dos $(WXLIB) FINAL=$(FINAL) - cd $(THISDIR) - -$(GRAPHICSLIB): $(OBJECTS) - erase $(GRAPHICSLIB) - lib /PAGESIZE:128 @<< -$(GRAPHICSLIB) -y -$(OBJECTS) -nul -; -<< - -# NOTE: This causes a floating point stack error when optimized, -# so DON'T optimize! - -basic.obj: basic.$(SRCSUFF) basic.h lines.h misc.h canvas.h - cl @<< -$(CPPFLAGS) /Od /c /Tp $*.$(SRCSUFF) -<< - -basic2.obj: basic2.$(SRCSUFF) basic.h lines.h misc.h canvas.h - cl @<< -$(CPPFLAGS) /Od /c /Tp $*.$(SRCSUFF) -<< - -canvas.obj: canvas.$(SRCSUFF) basic.h misc.h canvas.h - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -ogldiag.obj: ogldiag.$(SRCSUFF) ogldiag.h canvas.h basic.h - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -lines.obj: lines.$(SRCSUFF) basic.h misc.h canvas.h lines.h basicp.h linesp.h - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -misc.obj: misc.$(SRCSUFF) basic.h misc.h constrnt.h basicp.h - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -divided.obj: divided.$(SRCSUFF) basic.h misc.h canvas.h divided.h basicp.h - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -constrnt.obj: constrnt.$(SRCSUFF) basic.h constrnt.h - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -composit.obj: composit.$(SRCSUFF) basic.h misc.h canvas.h constrnt.h composit.h basicp.h - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -drawn.obj: drawn.$(SRCSUFF) basic.h misc.h canvas.h drawn.h drawnp.h basicp.h - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -bitmap.obj: bitmap.$(SRCSUFF) basic.h misc.h canvas.h bitmap.h - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -mfutils.obj: mfutils.$(SRCSUFF) mfutils.h - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -# Making documents -docs: hlp -hlp: $(DOCDIR)/ogl.hlp -hlp32: $(DOCDIR)/hlp32/ogl.hlp -rtf: $(DOCDIR)/ogl.rtf - -$(DOCDIR)/ogl.hlp: $(DOCDIR)/ogl.rtf $(DOCDIR)/ogl.hpj - cd $(DOCDIR) - -erase ogl.ph - hc ogl - cd $(THISDIR) - -$(DOCDIR)/hlp32/ogl.hlp: $(DOCDIR)/hlp32/ogl.rtf $(DOCDIR)/hlp32/ogl.hpj - cd $(DOCDIR)/hlp32 - -erase ogl.ph - start /w hcw /c /e ogl.hpj - cd $(THISDIR) - -$(DOCDIR)/ogl.rtf: $(DOCDIR)/classes.tex $(DOCDIR)/intro.tex $(DOCDIR)/ogl.tex - cd $(DOCDIR) - start /w tex2rtf $(DOCDIR)/ogl.tex $(DOCDIR)/ogl.rtf -twice -winhelp - cd $(THISDIR) - -$(DOCDIR)/hlp32/ogl.rtf: $(DOCDIR)/classes.tex $(DOCDIR)/intro.tex $(DOCDIR)/ogl.tex - cd $(DOCDIR) - start /w tex2rtf $(DOCDIR)/ogl.tex $(DOCDIR)/hlp32/ogl.rtf -twice -winhelp -macros $(DOCDIR)/t2rtf32.ini - cd $(THISDIR) - -wordrtf: - cd $(DOCDIR) - -wx /W tex2rtf $(DOCDIR)/ogl.tex $(DOCDIR)/ogl.rtf -twice -rtf - cd $(THISDIR) - -clean: - -erase *.obj - -erase *.sbr - -erase *.exe - -erase *.res - -erase *.map - -erase *.pdb - -erase *.lib - -erase ..\lib\*.lib - -wxclean: - cd $(WXDIR)\src\msw - nmake -f makefile.dos clean - cd $(THISDIR) diff --git a/utils/ogl/src/makefile.unx b/utils/ogl/src/makefile.unx deleted file mode 100644 index 55a194651c..0000000000 --- a/utils/ogl/src/makefile.unx +++ /dev/null @@ -1,42 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1998 -# Updated: -# Copyright: (c) 1998 -# -# -# Makefile for OGL library, Unix - -include ../../../src/make.env - -OGLLIB=$(WXDIR)/lib/libogl$(GUISUFFIX).a - -LIB_CPP_SRC=\ -\ - basic.o\ - basic2.o\ - canvas.o\ - ogldiag.o\ - lines.o\ - misc.o\ - divided.o\ - constrnt.o\ - composit.o\ - drawn.o\ - bmpshape.o\ - mfutils.o - -all: $(OGLLIB) - -# Define library objects -OBJECTS=\ - $(LIB_CPP_SRC:.cpp=.o) - -$(OGLLIB) : $(OBJECTS) - ar $(AROPTIONS) $@ $(OBJECTS) - $(RANLIB) $@ - -clean: - rm -f $(OBJECTS) $(OGLLIB) - diff --git a/utils/ogl/src/makefile.vc b/utils/ogl/src/makefile.vc deleted file mode 100644 index 8c5bf6f9b3..0000000000 --- a/utils/ogl/src/makefile.vc +++ /dev/null @@ -1,180 +0,0 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile : Builds OGL classes library (MS VC++). -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -# Set WXDIR for your system -WXDIR = $(WXWIN) -OBJECTSDIR = $(WXDIR)\utils\ogl -THISDIR = $(WXDIR)\utils\ogl\src -EXTRALIBS=$(WXDIR)\lib\ogl.lib $(WXDIR)\lib\mfutils.lib -EXTRAINC=/I$(WXDIR)\utils\mfutils\src /I$(WXDIR)\utils\prologio\src -EXTRAFLAGS=/DPROLOGIO=1 -DOCDIR=$(WXDIR)\docs -LOCALDOCDIR=$(WXDIR)\utils\ogl\docs - -!include $(WXDIR)\src\makevc.env - -PROGRAM=test - -OBJECTS = $(THISDIR)\basic.obj $(THISDIR)\basic2.obj $(THISDIR)\canvas.obj $(THISDIR)\ogldiag.obj $(THISDIR)\lines.obj $(THISDIR)\misc.obj $(THISDIR)\divided.obj $(THISDIR)\constrnt.obj\ - $(THISDIR)\composit.obj $(THISDIR)\drawn.obj $(THISDIR)\bmpshape.obj $(THISDIR)\mfutils.obj - -LIBTARGET=$(WXDIR)\lib\ogl.lib - -all: $(LIBTARGET) - -$(PROGRAM): $(PROGRAM).exe - -wx: - cd $(WXDIR)\src\msw - nmake -f makefile.vc FINAL=$(FINAL) - cd $(THISDIR) - -wxclean: - cd $(WXDIR)\src\msw - nmake -f makefile.vc clean - cd $(THISDIR) - -$(LIBTARGET): $(OBJECTS) - -erase $(LIBTARGET) - $(implib) @<< --out:$(LIBTARGET) --machine:$(CPU) -$(OBJECTS) -<< - -# NOTE: This causes a floating point stack error when optimized, -# so DON'T optimize! -basic.obj: basic.$(SRCSUFF) basic.h lines.h misc.h canvas.h - cl @<< -$(CPPFLAGS) /Od /c /Tp $*.$(SRCSUFF) -<< - -$(THISDIR)\basic2.obj: basic2.$(SRCSUFF) basic.h lines.h misc.h canvas.h - cl @<< -$(CPPFLAGS) /Od /c /Tp $*.$(SRCSUFF) -<< - -$(THISDIR)\canvas.obj: canvas.$(SRCSUFF) basic.h misc.h canvas.h - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -$(THISDIR)\ogldiag.obj: ogldiag.$(SRCSUFF) ogldiag.h canvas.h basic.h - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -$(THISDIR)\lines.obj: lines.$(SRCSUFF) basic.h misc.h canvas.h lines.h basicp.h linesp.h - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -$(THISDIR)\misc.obj: misc.$(SRCSUFF) basic.h misc.h constrnt.h basicp.h - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -$(THISDIR)\divided.obj: divided.$(SRCSUFF) basic.h misc.h canvas.h divided.h basicp.h - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -$(THISDIR)\constrnt.obj: constrnt.$(SRCSUFF) basic.h constrnt.h - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -$(THISDIR)\composit.obj: composit.$(SRCSUFF) basic.h misc.h canvas.h constrnt.h composit.h basicp.h - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -$(THISDIR)\drawn.obj: drawn.$(SRCSUFF) basic.h misc.h canvas.h drawn.h drawnp.h basicp.h - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -$(THISDIR)\bmpshape.obj: bmpshape.$(SRCSUFF) basic.h misc.h canvas.h bmpshape.h - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -$(THISDIR)\mfutils.obj: mfutils.$(SRCSUFF) mfutils.h - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -clean: - -erase *.obj - -erase *.sbr - -erase *.exe - -erase *.res - -erase *.map - -erase *.pdb - -erase $(LIBTARGET) - -DOCSOURCES=$(LOCALDOCDIR)\ogl.tex \ - $(LOCALDOCDIR)\bugs.tex $(LOCALDOCDIR)\changes.tex\ - $(LOCALDOCDIR)\classes.tex $(LOCALDOCDIR)\intro.tex\ - $(LOCALDOCDIR)\topics.tex $(LOCALDOCDIR)\sample.tex - -html: $(DOCDIR)\html\ogl\ogl.htm -hlp: $(DOCDIR)\winhelp\ogl.hlp -pdfrtf: $(DOCDIR)\pdf\ogl.rtf -ps: $(DOCDIR)\ps\ogl.ps - -$(DOCDIR)\winhelp\ogl.hlp: $(LOCALDOCDIR)\ogl.rtf $(LOCALDOCDIR)\ogl.hpj - cd $(LOCALDOCDIR) - -erase ogl.ph - hc ogl - move ogl.hlp $(DOCDIR)\winhelp\ogl.hlp - move ogl.cnt $(DOCDIR)\winhelp\ogl.cnt - cd $(THISDIR) - -$(LOCALDOCDIR)\ogl.rtf: $(DOCSOURCES) - cd $(LOCALDOCDIR) - -start /w tex2rtf $(LOCALDOCDIR)\ogl.tex $(LOCALDOCDIR)\ogl.rtf -twice -winhelp - cd $(THISDIR) - -$(DOCDIR)\pdf\ogl.rtf: $(DOCSOURCES) - cd $(LOCALDOCDIR) - -copy *.bmp $(DOCDIR)\pdf - -start /w tex2rtf $(LOCALDOCDIR)\ogl.tex $(DOCDIR)\pdf\ogl.rtf -twice -rtf - cd $(THISDIR) - -$(DOCDIR)\html\ogl\ogl.htm: $(DOCSOURCES) - cd $(LOCALDOCDIR) - -mkdir $(DOCDIR)\html\ogl - copy *.gif $(DOCDIR)\html\ogl - -start /w tex2rtf $(LOCALDOCDIR)\ogl.tex $(DOCDIR)\html\ogl\ogl.htm -twice -html - -erase $(DOCDIR)\html\ogl\*.con - -erase $(DOCDIR)\html\ogl\*.ref - cd $(THISDIR) - -$(LOCALDOCDIR)\ogl.dvi: $(DOCSOURCES) - cd $(LOCALDOCDIR) - -latex ogl - -latex ogl - -makeindx ogl - -bibtex ogl - -latex ogl - -latex ogl - cd $(THISDIR) - -$(WXDIR)\docs\ps\ogl.ps: $(LOCALDOCDIR)\ogl.dvi - cd $(LOCALDOCDIR) - -dvips32 -o ogl.ps ogl - move ogl.ps $(WXDIR)\docs\ps\ogl.ps - cd $(THISDIR) - - diff --git a/utils/ogl/src/makefile.wat b/utils/ogl/src/makefile.wat deleted file mode 100644 index 1ba7250c92..0000000000 --- a/utils/ogl/src/makefile.wat +++ /dev/null @@ -1,28 +0,0 @@ -# Objects makefile - -WXDIR = ..\..\.. - -!include $(WXDIR)\src\makewat.env - -EXTRACPPFLAGS=/DPROLOGIO - -OBJECTSLIB = $(WXDIR)\utils\objects\lib\graphics.lib -THISDIR = $(WXDIR)\utils\objects\src - -NAME = graphics -LNK = $(name).lnk - -IFLAGS = -i=$(WXINC) -i=$(WXBASEINC) -i=..\..\mfutils\src -i=..\..\prologio\src - -OBJECTS = basic.obj basic2.obj canvas.obj lines.obj misc.obj divided.obj constrnt.obj composit.obj drawn.obj bitmap.obj - -all: $(OBJECTSLIB) - -$(OBJECTSLIB): $(OBJECTS) - *wlib /b /c /n /P=256 $(OBJECTSLIB) $(OBJECTS) - -clean: .SYMBOLIC - -erase *.obj *.bak *.err *.pch $(OBJECTSLIB) *.lbc - - - diff --git a/utils/ogl/src/mfutils.cpp b/utils/ogl/src/mfutils.cpp deleted file mode 100644 index c1d356b106..0000000000 --- a/utils/ogl/src/mfutils.cpp +++ /dev/null @@ -1,1085 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: mfutils.cpp -// Purpose: Metafile utillities -// Author: Julian Smart -// Modified by: -// Created: 12/07/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "mfutils.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include -#endif - -#include -#include - -#include "mfutils.h" -#include - -static char hexArray[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', - 'C', 'D', 'E', 'F' }; - -static void DecToHex(int dec, char *buf) -{ - int firstDigit = (int)(dec/16.0); - int secondDigit = (int)(dec - (firstDigit*16.0)); - buf[0] = hexArray[firstDigit]; - buf[1] = hexArray[secondDigit]; - buf[2] = 0; -} - -// 16-bit unsigned integer -static unsigned int getshort(FILE *fp) -{ - int c, c1; - c = getc(fp); c1 = getc(fp); - unsigned int res = ((unsigned int) c) + (((unsigned int) c1) << 8); - return res; -} - -// 16-bit signed integer -static int getsignedshort(FILE *fp) -{ - int c, c1; - c = getc(fp); c1 = getc(fp); - int testRes = ((unsigned int) c) + (((unsigned int) c1) << 8); - unsigned long res1 = ((unsigned int) c) + (((unsigned int) c1) << 8); - int res = 0; - if (res1 > 32767) - res = (int)(res1 - 65536); - else - res = (int)(res1); - return res; -} - -// 32-bit integer -static long getint(FILE *fp) -{ - int c, c1, c2, c3; - c = getc(fp); c1 = getc(fp); c2 = getc(fp); c3 = getc(fp); - long res = (long)((long) c) + - (((long) c1) << 8) + - (((long) c2) << 16) + - (((long) c3) << 24); - return res; -} - - -/* Placeable metafile header -struct mfPLACEABLEHEADER { - DWORD key; // 32-bit - HANDLE hmf; // 16-bit - RECT bbox; // 4x16 bit - WORD inch; // 16-bit - DWORD reserved; // 32-bit - WORD checksum; // 16-bit -}; -*/ - -wxMetaRecord::~wxMetaRecord(void) -{ - if (points) delete[] points; - if (stringParam) delete[] stringParam; -} - -wxXMetaFile::wxXMetaFile(char *file) -{ - ok = FALSE; - top = 0.0; - bottom = 0.0; - left = 0.0; - right = 0.0; - - if (file) - ok = ReadFile(file); -} - -/* - Handle table gdiObjects - ------------ ---------- - [0] wxPen - [1]----param2--- wxBrush - [2] | wxFont - [3] | -> wxPen - - The handle table works as follows. - When a GDI object is created whilst reading in the - metafile, the (e.g.) createpen record is added to the - first free entry in the handle table. The createpen - record's param1 is a pointer to the actual wxPen, and - its param2 is the index into the gdiObjects list, which only - grows and never shrinks (unlike the handle table.) - - When SelectObject(index) is found, the index in the file - refers to the position in the handle table. BUT we then - set param2 to be the position of the wxPen in gdiObjects, - i.e. to param2 of the CreatePen record, itself found in - the handle table. - - When an object is deleted, the entry in the handletable is - NULLed but the gdiObjects entry is not removed (no point, and - allows us to create all GDI objects in advance of playing the - metafile). -*/ - - -static wxMetaRecord *HandleTable[100]; -static int HandleTableSize = 0; - -void DeleteMetaRecordHandle(int index) -{ - HandleTable[index] = NULL; -} - -int AddMetaRecordHandle(wxMetaRecord *record) -{ - for (int i = 0; i < HandleTableSize; i++) - if (!HandleTable[i]) - { - HandleTable[i] = record; - return i; - } - // No free spaces in table, so append. - - HandleTable[HandleTableSize] = record; - HandleTableSize ++; - return (HandleTableSize - 1); -} - -bool wxXMetaFile::ReadFile(char *file) -{ - HandleTableSize = 0; - - FILE *handle = fopen(file, "rb"); - if (!handle) return FALSE; - - // Read placeable metafile header, if any - long key = getint(handle); - - if (key == (long) 0x9AC6CDD7) - { - long hmf = getshort(handle); - int iLeft, iTop, iRight, iBottom; - iLeft = getsignedshort(handle); - iTop = getsignedshort(handle); - iRight = getsignedshort(handle); - iBottom = getsignedshort(handle); - - left = (double)iLeft; - top = (double)iTop; - right = (double)iRight; - bottom = (double)iBottom; - - int inch = getshort(handle); - long reserved = getint(handle); - int checksum = getshort(handle); -/* - double widthInUnits = (double)right - left; - double heightInUnits = (double)bottom - top; - *width = (int)((widthInUnits*1440.0)/inch); - *height = (int)((heightInUnits*1440.0)/inch); -*/ - } - else rewind(handle); - - // Read METAHEADER - int mtType = getshort(handle); - - if (mtType != 1 && mtType != 2) - { - fclose(handle); - return FALSE; - } - - int mtHeaderSize = getshort(handle); - int mtVersion = getshort(handle); - - if (mtVersion != 0x0300 && mtVersion != 0x0100) - { - fclose(handle); - return FALSE; - } - - long mtSize = getint(handle); - int mtNoObjects = getshort(handle); - long mtMaxRecord = getint(handle); - int mtNoParameters = getshort(handle); - - while (!feof(handle)) - { - long rdSize = getint(handle); // 4 bytes - int rdFunction = getshort(handle); // 2 bytes - if (feof(handle)) - break; - - switch (rdFunction) - { - case META_SETBKCOLOR: - { - wxMetaRecord *rec = new wxMetaRecord(META_SETBKCOLOR); - long colorref = getint(handle); // COLORREF - rec->param1 = GetRValue(colorref); - rec->param2 = GetGValue(colorref); - rec->param3 = GetBValue(colorref); - metaRecords.Append(rec); - break; - } - case META_SETBKMODE: - { - wxMetaRecord *rec = new wxMetaRecord(META_SETBKMODE); - rec->param1 = getshort(handle); // Background mode - if (rec->param1 == OPAQUE) rec->param1 = wxSOLID; - else rec->param1 = wxTRANSPARENT; - metaRecords.Append(rec); - break; - } - case META_SETMAPMODE: - { - wxMetaRecord *rec = new wxMetaRecord(META_SETMAPMODE); - rec->param1 = getshort(handle); - metaRecords.Append(rec); - break; - } -// case META_SETROP2: -// case META_SETRELABS: -// case META_SETPOLYFILLMODE: -// case META_SETSTRETCHBLTMODE: -// case META_SETTEXTCHAREXTRA: - case META_SETTEXTCOLOR: - { - wxMetaRecord *rec = new wxMetaRecord(META_SETTEXTCOLOR); - long colorref = getint(handle); // COLORREF - rec->param1 = GetRValue(colorref); - rec->param2 = GetGValue(colorref); - rec->param3 = GetBValue(colorref); - metaRecords.Append(rec); - break; - } -// case META_SETTEXTJUSTIFICATION: - case META_SETWINDOWORG: - { - wxMetaRecord *rec = new wxMetaRecord(META_SETWINDOWORG); - rec->param2 = getshort(handle); - rec->param1 = getshort(handle); - metaRecords.Append(rec); - break; - } - case META_SETWINDOWEXT: - { - wxMetaRecord *rec = new wxMetaRecord(META_SETWINDOWEXT); - rec->param2 = getshort(handle); - rec->param1 = getshort(handle); - metaRecords.Append(rec); - break; - } -// case META_SETVIEWPORTORG: -// case META_SETVIEWPORTEXT: -// case META_OFFSETWINDOWORG: -// case META_SCALEWINDOWEXT: -// case META_OFFSETVIEWPORTORG: -// case META_SCALEVIEWPORTEXT: - case META_LINETO: - { - wxMetaRecord *rec = new wxMetaRecord(META_LINETO); - rec->param1 = getshort(handle); // x1 - rec->param2 = getshort(handle); // y1 - metaRecords.Append(rec); - break; - } - case META_MOVETO: - { - wxMetaRecord *rec = new wxMetaRecord(META_MOVETO); - rec->param1 = getshort(handle); // x1 - rec->param2 = getshort(handle); // y1 - metaRecords.Append(rec); - break; - } - case META_EXCLUDECLIPRECT: - { - wxMetaRecord *rec = new wxMetaRecord(META_EXCLUDECLIPRECT); - rec->param4 = getshort(handle); // y2 - rec->param3 = getshort(handle); // x2 - rec->param2 = getshort(handle); // y1 - rec->param1 = getshort(handle); // x1 - metaRecords.Append(rec); - break; - } - case META_INTERSECTCLIPRECT: - { - wxMetaRecord *rec = new wxMetaRecord(META_INTERSECTCLIPRECT); - rec->param4 = getshort(handle); // y2 - rec->param3 = getshort(handle); // x2 - rec->param2 = getshort(handle); // y1 - rec->param1 = getshort(handle); // x1 - metaRecords.Append(rec); - break; - } -// case META_ARC: // DO!!! - case META_ELLIPSE: - { - wxMetaRecord *rec = new wxMetaRecord(META_ELLIPSE); - rec->param4 = getshort(handle); // y2 - rec->param3 = getshort(handle); // x2 - rec->param2 = getshort(handle); // y1 - rec->param1 = getshort(handle); // x1 - metaRecords.Append(rec); - break; - } -// case META_FLOODFILL: -// case META_PIE: // DO!!! - case META_RECTANGLE: - { - wxMetaRecord *rec = new wxMetaRecord(META_RECTANGLE); - rec->param4 = getshort(handle); // y2 - rec->param3 = getshort(handle); // x2 - rec->param2 = getshort(handle); // y1 - rec->param1 = getshort(handle); // x1 - metaRecords.Append(rec); - break; - } - case META_ROUNDRECT: - { - wxMetaRecord *rec = new wxMetaRecord(META_ROUNDRECT); - rec->param6 = getshort(handle); // width - rec->param5 = getshort(handle); // height - rec->param4 = getshort(handle); // y2 - rec->param3 = getshort(handle); // x2 - rec->param2 = getshort(handle); // y1 - rec->param1 = getshort(handle); // x1 - metaRecords.Append(rec); - break; - } -// case META_PATBLT: -// case META_SAVEDC: - case META_SETPIXEL: - { - wxMetaRecord *rec = new wxMetaRecord(META_SETPIXEL); - rec->param1 = getshort(handle); // x1 - rec->param2 = getshort(handle); // y1 - rec->param3 = getint(handle); // COLORREF - metaRecords.Append(rec); - break; - } -// case META_OFFSETCLIPRGN: - case META_TEXTOUT: - { - wxMetaRecord *rec = new wxMetaRecord(META_TEXTOUT); - int count = getshort(handle); - rec->stringParam = new char[count+1]; - fread((void *)rec->stringParam, sizeof(char), count, handle); - rec->stringParam[count] = 0; - rec->param2 = getshort(handle); // Y - rec->param1 = getshort(handle); // X - metaRecords.Append(rec); - break; - } -/* - case META_EXTTEXTOUT: - { - wxMetaRecord *rec = new wxMetaRecord(META_EXTTEXTOUT); - int cellSpacing = getshort(handle); - int count = getshort(handle); - rec->stringParam = new char[count+1]; - fread((void *)rec->stringParam, sizeof(char), count, handle); - rec->stringParam[count] = 0; - // Rectangle - int rectY2 = getshort(handle); - int rectX2 = getshort(handle); - int rectY1 = getshort(handle); - int rectX1 = getshort(handle); - int rectType = getshort(handle); - rec->param2 = getshort(handle); // Y - rec->param1 = getshort(handle); // X - metaRecords.Append(rec); - break; - } -*/ -// case META_BITBLT: -// case META_STRETCHBLT: - case META_POLYGON: - { - wxMetaRecord *rec = new wxMetaRecord(META_POLYGON); - rec->param1 = getshort(handle); - rec->points = new wxRealPoint[(int)rec->param1]; - for (int i = 0; i < rec->param1; i++) - { - rec->points[i].x = getshort(handle); - rec->points[i].y = getshort(handle); - } - - metaRecords.Append(rec); - break; - } - case META_POLYLINE: - { - wxMetaRecord *rec = new wxMetaRecord(META_POLYLINE); - rec->param1 = (long)getshort(handle); - rec->points = new wxRealPoint[(int)rec->param1]; - for (int i = 0; i < rec->param1; i++) - { - rec->points[i].x = getshort(handle); - rec->points[i].y = getshort(handle); - } - - metaRecords.Append(rec); - break; - } -// case META_ESCAPE: -// case META_RESTOREDC: -// case META_FILLREGION: -// case META_FRAMEREGION: -// case META_INVERTREGION: -// case META_PAINTREGION: -// case META_SELECTCLIPREGION: // DO THIS! - case META_SELECTOBJECT: - { - wxMetaRecord *rec = new wxMetaRecord(META_SELECTOBJECT); - rec->param1 = (long)getshort(handle); // Position of object in gdiObjects list - metaRecords.Append(rec); - // param2 gives the index into gdiObjects, which is different from - // the index into the handle table. - rec->param2 = HandleTable[(int)rec->param1]->param2; - break; - } -// case META_SETTEXTALIGN: -// case META_DRAWTEXT: -// case META_CHORD: -// case META_SETMAPPERFLAGS: -// case META_EXTTEXTOUT: -// case META_SETDIBTODEV: -// case META_SELECTPALETTE: -// case META_REALIZEPALETTE: -// case META_ANIMATEPALETTE: -// case META_SETPALENTRIES: -// case META_POLYPOLYGON: -// case META_RESIZEPALETTE: -// case META_DIBBITBLT: -// case META_DIBSTRETCHBLT: - case META_DIBCREATEPATTERNBRUSH: - { - wxMetaRecord *rec = new wxMetaRecord(META_DIBCREATEPATTERNBRUSH); - fread((void *)wxBuffer, sizeof(char), (int)((2*rdSize) - 6), handle); - - metaRecords.Append(rec); - gdiObjects.Append(rec); - AddMetaRecordHandle(rec); - rec->param2 = (long)(gdiObjects.Number() - 1); - break; - } -// case META_STRETCHDIB: -// case META_EXTFLOODFILL: -// case META_RESETDC: -// case META_STARTDOC: -// case META_STARTPAGE: -// case META_ENDPAGE: -// case META_ABORTDOC: -// case META_ENDDOC: - case META_DELETEOBJECT: - { - int index = getshort(handle); - DeleteMetaRecordHandle(index); - break; - } - case META_CREATEPALETTE: - { - wxMetaRecord *rec = new wxMetaRecord(META_CREATEPALETTE); - fread((void *)wxBuffer, sizeof(char), (int)((2*rdSize) - 6), handle); - - metaRecords.Append(rec); - gdiObjects.Append(rec); - AddMetaRecordHandle(rec); - rec->param2 = (long)(gdiObjects.Number() - 1); - break; - } - case META_CREATEBRUSH: - { - wxMetaRecord *rec = new wxMetaRecord(META_CREATEBRUSH); - fread((void *)wxBuffer, sizeof(char), (int)((2*rdSize) - 6), handle); - metaRecords.Append(rec); - gdiObjects.Append(rec); - AddMetaRecordHandle(rec); - rec->param2 = (long)(gdiObjects.Number() - 1); - break; - } - case META_CREATEPATTERNBRUSH: - { - wxMetaRecord *rec = new wxMetaRecord(META_CREATEPATTERNBRUSH); - fread((void *)wxBuffer, sizeof(char), (int)((2*rdSize) - 6), handle); - metaRecords.Append(rec); - gdiObjects.Append(rec); - AddMetaRecordHandle(rec); - rec->param2 = (long)(gdiObjects.Number() - 1); - break; - } - case META_CREATEPENINDIRECT: - { - wxMetaRecord *rec = new wxMetaRecord(META_CREATEPENINDIRECT); - int msStyle = getshort(handle); // Style: 2 bytes - int x = getshort(handle); // X: 2 bytes - int y = getshort(handle); // Y: 2 bytes - long colorref = getint(handle); // COLORREF 4 bytes - - int style; - if (msStyle == PS_DOT) - style = wxDOT; - else if (msStyle == PS_DASH) - style = wxSHORT_DASH; - else if (msStyle == PS_NULL) - style = wxTRANSPARENT; - else style = wxSOLID; - - wxColour colour(GetRValue(colorref), GetGValue(colorref), GetBValue(colorref)); - rec->param1 = (long)wxThePenList->FindOrCreatePen(colour, x, style); - metaRecords.Append(rec); - gdiObjects.Append(rec); - - AddMetaRecordHandle(rec); - rec->param2 = (long)(gdiObjects.Number() - 1); - - // For some reason, the size of this record is sometimes 9 words!!! - // instead of the usual 8. So read 2 characters extra. - if (rdSize == 9) - { - (void) getshort(handle); - } - break; - } - case META_CREATEFONTINDIRECT: - { - wxMetaRecord *rec = new wxMetaRecord(META_CREATEFONTINDIRECT); - int lfHeight = getshort(handle); // 2 bytes - int lfWidth = getshort(handle); // 2 bytes - int lfEsc = getshort(handle); // 2 bytes - int lfOrient = getshort(handle); // 2 bytes - int lfWeight = getshort(handle); // 2 bytes - char lfItalic = getc(handle); // 1 byte - char lfUnderline = getc(handle); // 1 byte - char lfStrikeout = getc(handle); // 1 byte - char lfCharSet = getc(handle); // 1 byte - char lfOutPrecision = getc(handle); // 1 byte - char lfClipPrecision = getc(handle); // 1 byte - char lfQuality = getc(handle); // 1 byte - char lfPitchAndFamily = getc(handle); // 1 byte (18th) - char lfFacename[32]; - // Read the rest of the record, which is total record size - // minus the number of bytes already read (18 record, 6 metarecord - // header) - fread((void *)lfFacename, sizeof(char), (int)((2*rdSize) - 18 - 6), handle); - - int family; - if (lfPitchAndFamily & FF_MODERN) - family = wxMODERN; - else if (lfPitchAndFamily & FF_MODERN) - family = wxMODERN; - else if (lfPitchAndFamily & FF_ROMAN) - family = wxROMAN; - else if (lfPitchAndFamily & FF_SWISS) - family = wxSWISS; - else if (lfPitchAndFamily & FF_DECORATIVE) - family = wxDECORATIVE; - else - family = wxDEFAULT; - - int weight; - if (lfWeight == 300) - weight = wxLIGHT; - else if (lfWeight == 400) - weight = wxNORMAL; - else if (lfWeight == 900) - weight = wxBOLD; - else weight = wxNORMAL; - - int style; - if (lfItalic != 0) - style = wxITALIC; - else - style = wxNORMAL; - - // About how many pixels per inch??? - int logPixelsY = 100; - int pointSize = (int)(lfHeight*72.0/logPixelsY); - - wxFont *theFont = - wxTheFontList->FindOrCreateFont(pointSize, family, style, weight, (lfUnderline != 0)); - - rec->param1 = (long) theFont; - metaRecords.Append(rec); - gdiObjects.Append(rec); - AddMetaRecordHandle(rec); - rec->param2 = (long)(gdiObjects.Number() - 1); - break; - } - case META_CREATEBRUSHINDIRECT: - { - wxMetaRecord *rec = new wxMetaRecord(META_CREATEBRUSHINDIRECT); - int msStyle = getshort(handle); // Style: 2 bytes - long colorref = getint(handle); // COLORREF: 4 bytes - int hatchStyle = getshort(handle); // Hatch style 2 bytes - - int style; - switch (msStyle) - { - case BS_HATCHED: - { - switch (hatchStyle) - { - case HS_BDIAGONAL: - style = wxBDIAGONAL_HATCH; - break; - case HS_DIAGCROSS: - style = wxCROSSDIAG_HATCH; - break; - case HS_FDIAGONAL: - style = wxFDIAGONAL_HATCH; - break; - case HS_HORIZONTAL: - style = wxHORIZONTAL_HATCH; - break; - case HS_VERTICAL: - style = wxVERTICAL_HATCH; - break; - default: - case HS_CROSS: - style = wxCROSS_HATCH; - break; - } - break; - } - case BS_SOLID: - default: - style = wxSOLID; - break; - } - if (msStyle == PS_DOT) - style = wxDOT; - else if (msStyle == PS_DASH) - style = wxSHORT_DASH; - else if (msStyle == PS_NULL) - style = wxTRANSPARENT; - else style = wxSOLID; - - wxColour colour(GetRValue(colorref), GetGValue(colorref), GetBValue(colorref)); - rec->param1 = (long)wxTheBrushList->FindOrCreateBrush(colour, style); - metaRecords.Append(rec); - gdiObjects.Append(rec); - AddMetaRecordHandle(rec); - rec->param2 = (long)(gdiObjects.Number() - 1); - break; - } - case META_CREATEBITMAPINDIRECT: - { - wxMetaRecord *rec = new wxMetaRecord(META_CREATEBITMAPINDIRECT); - fread((void *)wxBuffer, sizeof(char), (int)((2*rdSize) - 6), handle); - - metaRecords.Append(rec); - gdiObjects.Append(rec); - AddMetaRecordHandle(rec); - rec->param2 = (long)(gdiObjects.Number() - 1); - break; - } - case META_CREATEBITMAP: - { - wxMetaRecord *rec = new wxMetaRecord(META_CREATEBITMAP); - fread((void *)wxBuffer, sizeof(char), (int)((2*rdSize) - 6), handle); - - metaRecords.Append(rec); - gdiObjects.Append(rec); - AddMetaRecordHandle(rec); - rec->param2 = (long)(gdiObjects.Number() - 1); - break; - } - case META_CREATEREGION: - { - wxMetaRecord *rec = new wxMetaRecord(META_CREATEREGION); - fread((void *)wxBuffer, sizeof(char), (int)((2*rdSize) - 6), handle); - - metaRecords.Append(rec); - gdiObjects.Append(rec); - AddMetaRecordHandle(rec); - rec->param2 = (long)(gdiObjects.Number() - 1); - break; - } - default: - { - fread((void *)wxBuffer, sizeof(char), (int)((2*rdSize) - 6), handle); - break; - } - } - } - fclose(handle); - return TRUE; -} - -wxXMetaFile::~wxXMetaFile(void) -{ - wxNode *node = metaRecords.First(); - while (node) - { - wxMetaRecord *rec = (wxMetaRecord *)node->Data(); - delete rec; - wxNode *next = node->Next(); - delete node; - node = next; - } -} - -bool wxXMetaFile::SetClipboard(int width, int height) -{ - return FALSE; -} - -bool wxXMetaFile::Play(wxDC *dc) -{ - wxNode *node = metaRecords.First(); - while (node) - { - wxMetaRecord *rec = (wxMetaRecord *)node->Data(); - int rdFunction = rec->metaFunction; - - switch (rdFunction) - { - case META_SETBKCOLOR: - { - break; - } - case META_SETBKMODE: - { - break; - } - case META_SETMAPMODE: - { - break; - } -// case META_SETROP2: -// case META_SETRELABS: -// case META_SETPOLYFILLMODE: -// case META_SETSTRETCHBLTMODE: -// case META_SETTEXTCHAREXTRA: - case META_SETTEXTCOLOR: - { - break; - } -// case META_SETTEXTJUSTIFICATION: - case META_SETWINDOWORG: - { - break; - } - case META_SETWINDOWEXT: - { - break; - } -// case META_SETVIEWPORTORG: -// case META_SETVIEWPORTEXT: -// case META_OFFSETWINDOWORG: -// case META_SCALEWINDOWEXT: -// case META_OFFSETVIEWPORTORG: -// case META_SCALEVIEWPORTEXT: - case META_LINETO: - { - long x1 = rec->param1; - long y1 = rec->param2; - dc->DrawLine((long) lastX, (long) lastY, x1, y1); - break; - } - case META_MOVETO: - { - lastX = (double)rec->param1; - lastY = (double)rec->param2; - break; - } - case META_EXCLUDECLIPRECT: - { - break; - } - case META_INTERSECTCLIPRECT: - { - break; - } -// case META_ARC: // DO!!! - case META_ELLIPSE: - { - break; - } -// case META_FLOODFILL: -// case META_PIE: // DO!!! - case META_RECTANGLE: - { - dc->DrawRectangle((long)rec->param1, (long)rec->param2, - (long)rec->param3 - rec->param1, - (long)rec->param4 - rec->param2); - break; - } - case META_ROUNDRECT: - { - dc->DrawRoundedRectangle((long)rec->param1, (long)rec->param2, - (long)rec->param3 - rec->param1, - (long)rec->param4 - rec->param2, - (long)rec->param5); - break; - } -// case META_PATBLT: -// case META_SAVEDC: - case META_SETPIXEL: - { -// rec->param1 = getshort(handle); // x1 -// rec->param2 = getshort(handle); // y1 -// rec->param3 = getint(handle); // COLORREF - break; - } -// case META_OFFSETCLIPRGN: - case META_TEXTOUT: - { -/* - int count = getshort(handle); - rec->stringParam = new char[count+1]; - fread((void *)rec->stringParam, sizeof(char), count, handle); - rec->stringParam[count] = 0; - rec->param2 = getshort(handle); // Y - rec->param1 = getshort(handle); // X -*/ - break; - } -// case META_BITBLT: -// case META_STRETCHBLT: - case META_POLYGON: - { -/* - rec->param1 = getshort(handle); - rec->points = new wxRealPoint[(int)rec->param1]; - for (int i = 0; i < rec->param1; i++) - { - rec->points[i].x = getshort(handle); - rec->points[i].y = getshort(handle); - } -*/ - break; - } - case META_POLYLINE: - { -/* - wxMetaRecord *rec = new wxMetaRecord(META_POLYLINE); - rec->param1 = (long)getshort(handle); - rec->points = new wxRealPoint[(int)rec->param1]; - for (int i = 0; i < rec->param1; i++) - { - rec->points[i].x = getshort(handle); - rec->points[i].y = getshort(handle); - } -*/ - break; - } -// case META_ESCAPE: -// case META_RESTOREDC: -// case META_FILLREGION: -// case META_FRAMEREGION: -// case META_INVERTREGION: -// case META_PAINTREGION: -// case META_SELECTCLIPREGION: // DO THIS! - case META_SELECTOBJECT: - { -/* - wxMetaRecord *rec = new wxMetaRecord(META_SELECTOBJECT); - rec->param1 = (long)getshort(handle); // Position of object in gdiObjects list -*/ - break; - } -// case META_SETTEXTALIGN: -// case META_DRAWTEXT: -// case META_CHORD: -// case META_SETMAPPERFLAGS: -// case META_EXTTEXTOUT: -// case META_SETDIBTODEV: -// case META_SELECTPALETTE: -// case META_REALIZEPALETTE: -// case META_ANIMATEPALETTE: -// case META_SETPALENTRIES: -// case META_POLYPOLYGON: -// case META_RESIZEPALETTE: -// case META_DIBBITBLT: -// case META_DIBSTRETCHBLT: - case META_DIBCREATEPATTERNBRUSH: - { -/* - fread((void *)wxBuffer, sizeof(char), (int)(rdSize - 3), handle); -*/ - break; - } -// case META_STRETCHDIB: -// case META_EXTFLOODFILL: -// case META_RESETDC: -// case META_STARTDOC: -// case META_STARTPAGE: -// case META_ENDPAGE: -// case META_ABORTDOC: -// case META_ENDDOC: -// case META_DELETEOBJECT: // DO!! - case META_CREATEPALETTE: - { -/* - wxMetaRecord *rec = new wxMetaRecord(META_CREATEPALETTE); - fread((void *)wxBuffer, sizeof(char), (int)(rdSize - 3), handle); -*/ - break; - } - case META_CREATEBRUSH: - { -/* - fread((void *)wxBuffer, sizeof(char), (int)(rdSize - 3), handle); -*/ - break; - } - case META_CREATEPATTERNBRUSH: - { -/* - fread((void *)wxBuffer, sizeof(char), (int)(rdSize - 3), handle); -*/ - break; - } - case META_CREATEPENINDIRECT: - { -/* - int msStyle = getshort(handle); // Style: 2 bytes - int x = getshort(handle); // X: 2 bytes - int y = getshort(handle); // Y: 2 bytes - int colorref = getint(handle); // COLORREF 4 bytes - - int style; - if (msStyle == PS_DOT) - style = wxDOT; - else if (msStyle == PS_DASH) - style = wxSHORT_DASH; - else if (msStyle == PS_NULL) - style = wxTRANSPARENT; - else style = wxSOLID; - - wxColour colour(GetRValue(colorref), GetGValue(colorref), GetBValue(colorref)); - rec->param1 = (long)wxThePenList->FindOrCreatePen(&colour, x, style); -*/ - break; - } - case META_CREATEFONTINDIRECT: - { -/* - int lfHeight = getshort(handle); - int lfWidth = getshort(handle); - int lfEsc = getshort(handle); - int lfOrient = getshort(handle); - int lfWeight = getshort(handle); - char lfItalic = getc(handle); - char lfUnderline = getc(handle); - char lfStrikeout = getc(handle); - char lfCharSet = getc(handle); - char lfOutPrecision = getc(handle); - char lfClipPrecision = getc(handle); - char lfQuality = getc(handle); - char lfPitchAndFamily = getc(handle); - char lfFacename[32]; - fread((void *)lfFacename, sizeof(char), 32, handle); - - int family; - if (lfPitchAndFamily & FF_MODERN) - family = wxMODERN; - else if (lfPitchAndFamily & FF_MODERN) - family = wxMODERN; - else if (lfPitchAndFamily & FF_ROMAN) - family = wxROMAN; - else if (lfPitchAndFamily & FF_SWISS) - family = wxSWISS; - else if (lfPitchAndFamily & FF_DECORATIVE) - family = wxDECORATIVE; - else - family = wxDEFAULT; - - int weight; - if (lfWeight == 300) - weight = wxLIGHT; - else if (lfWeight == 400) - weight = wxNORMAL; - else if (lfWeight == 900) - weight = wxBOLD; - else weight = wxNORMAL; - - int style; - if ((bool)lfItalic) - style = wxITALIC; - else - style = wxNORMAL; - - // About how many pixels per inch??? - int logPixelsY = 100; - int pointSize = (int)(lfHeight*72.0/logPixelsY); - - wxFont *theFont = - wxTheFontList->FindOrCreateFont(pointSize, family, style, weight, (bool)lfUnderline); - - rec->param1 = (long)theFont; -*/ - break; - } - case META_CREATEBRUSHINDIRECT: - { -/* - int msStyle = getshort(handle); // Style: 2 bytes - int colorref = getint(handle); // COLORREF: 4 bytes - int hatchStyle = getshort(handle); // Hatch style 2 bytes - - int style; - if (msStyle == PS_DOT) - style = wxDOT; - else if (msStyle == PS_DASH) - style = wxSHORT_DASH; - else if (msStyle == PS_NULL) - style = wxTRANSPARENT; - else style = wxSOLID; - - wxColour colour(GetRValue(colorref), GetGValue(colorref), GetBValue(colorref)); - rec->param1 = (long)wxTheBrushList->FindOrCreateBrush(&colour, wxSOLID); -*/ - break; - } - case META_CREATEBITMAPINDIRECT: - { -/* - fread((void *)wxBuffer, sizeof(char), (int)(rdSize - 3), handle); -*/ - break; - } - case META_CREATEBITMAP: - { -/* - fread((void *)wxBuffer, sizeof(char), (int)(rdSize - 3), handle); -*/ - break; - } - case META_CREATEREGION: - { - dc->DestroyClippingRegion(); -/* - rec->param1 = getshort(handle); // Style: 2 bytes -*/ - break; - } - default: - { - break; - } - } - node = node->Next(); - } - return TRUE; -} - diff --git a/utils/ogl/src/mfutils.h b/utils/ogl/src/mfutils.h deleted file mode 100644 index e4b1c2c4fe..0000000000 --- a/utils/ogl/src/mfutils.h +++ /dev/null @@ -1,211 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: mfutils.h -// Purpose: Metafile utilities: reading a placeable metafile independently -// of Windows. -// Author: Julian Smart -// Modified by: -// Created: 12/07/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _MFUTILS_H_ -#define _MFUTILS_H_ - -#ifdef __GNUG__ -#pragma interface "mfutils.h" -#endif - -#include - -#ifndef __WXMSW__ -#define GetRValue(rgb) ((unsigned char)(rgb)) -#define GetGValue(rgb) ((unsigned char)(((int)(rgb)) >> 8)) -#define GetBValue(rgb) ((unsigned char)((rgb)>>16)) -#endif - -/* Metafile Functions */ -/* Win32s/Borland need these macros, although META_SETBKCOLOR is defined */ -#if !defined(META_SETBKCOLOR) || defined(WIN32) - -#define META_SETBKCOLOR 0x0201 -#define META_SETBKMODE 0x0102 -#define META_SETMAPMODE 0x0103 -#define META_SETROP2 0x0104 -#define META_SETRELABS 0x0105 -#define META_SETPOLYFILLMODE 0x0106 -#define META_SETSTRETCHBLTMODE 0x0107 -#define META_SETTEXTCHAREXTRA 0x0108 -#define META_SETTEXTCOLOR 0x0209 -#define META_SETTEXTJUSTIFICATION 0x020A -#define META_SETWINDOWORG 0x020B -#define META_SETWINDOWEXT 0x020C -#define META_SETVIEWPORTORG 0x020D -#define META_SETVIEWPORTEXT 0x020E -#define META_OFFSETWINDOWORG 0x020F -#define META_SCALEWINDOWEXT 0x0410 -#define META_OFFSETVIEWPORTORG 0x0211 -#define META_SCALEVIEWPORTEXT 0x0412 -#define META_LINETO 0x0213 -#define META_MOVETO 0x0214 -#define META_EXCLUDECLIPRECT 0x0415 -#define META_INTERSECTCLIPRECT 0x0416 -#define META_ARC 0x0817 -#define META_ELLIPSE 0x0418 -#define META_FLOODFILL 0x0419 -#define META_PIE 0x081A -#define META_RECTANGLE 0x041B -#define META_ROUNDRECT 0x061C -#define META_PATBLT 0x061D -#define META_SAVEDC 0x001E -#define META_SETPIXEL 0x041F -#define META_OFFSETCLIPRGN 0x0220 -#define META_TEXTOUT 0x0521 -#define META_BITBLT 0x0922 -#define META_STRETCHBLT 0x0B23 -#define META_POLYGON 0x0324 -#define META_POLYLINE 0x0325 -#define META_ESCAPE 0x0626 -#define META_RESTOREDC 0x0127 -#define META_FILLREGION 0x0228 -#define META_FRAMEREGION 0x0429 -#define META_INVERTREGION 0x012A -#define META_PAINTREGION 0x012B -#define META_SELECTCLIPREGION 0x012C -#define META_SELECTOBJECT 0x012D -#define META_SETTEXTALIGN 0x012E -#define META_DRAWTEXT 0x062F - -#define META_CHORD 0x0830 -#define META_SETMAPPERFLAGS 0x0231 -#define META_EXTTEXTOUT 0x0a32 -#define META_SETDIBTODEV 0x0d33 -#define META_SELECTPALETTE 0x0234 -#define META_REALIZEPALETTE 0x0035 -#define META_ANIMATEPALETTE 0x0436 -#define META_SETPALENTRIES 0x0037 -#define META_POLYPOLYGON 0x0538 -#define META_RESIZEPALETTE 0x0139 - -#define META_DIBBITBLT 0x0940 -#define META_DIBSTRETCHBLT 0x0b41 -#define META_DIBCREATEPATTERNBRUSH 0x0142 -#define META_STRETCHDIB 0x0f43 - -#define META_EXTFLOODFILL 0x0548 - -#define META_RESETDC 0x014C -#define META_STARTDOC 0x014D -#define META_STARTPAGE 0x004F -#define META_ENDPAGE 0x0050 -#define META_ABORTDOC 0x0052 -#define META_ENDDOC 0x005E - -#define META_DELETEOBJECT 0x01f0 - -#define META_CREATEPALETTE 0x00f7 -#define META_CREATEBRUSH 0x00F8 -#define META_CREATEPATTERNBRUSH 0x01F9 -#define META_CREATEPENINDIRECT 0x02FA -#define META_CREATEFONTINDIRECT 0x02FB -#define META_CREATEBRUSHINDIRECT 0x02FC -#define META_CREATEBITMAPINDIRECT 0x02FD -#define META_CREATEBITMAP 0x06FE -#define META_CREATEREGION 0x06FF - -/* Background Modes */ -#define TRANSPARENT 1 -#define OPAQUE 2 - -/* Pen Styles */ -#define PS_SOLID 0 -#define PS_DASH 1 -#define PS_DOT 2 -#define PS_DASHDOT 3 -#define PS_DASHDOTDOT 4 -#define PS_NULL 5 -#define PS_INSIDEFRAME 6 - -/* PitchAndFamily family values (high 4 bits) */ -/* Win32s/Borland don't need this */ -#if !defined(__BORLANDC__) && !defined(WIN32) -#define FF_DONTCARE 0x00 -#define FF_ROMAN 0x10 -#define FF_SWISS 0x20 -#define FF_MODERN 0x30 -#define FF_SCRIPT 0x40 -#define FF_DECORATIVE 0x50 -#endif - -/* Brush Styles */ -#define BS_SOLID 0 -#define BS_NULL 1 -#define BS_HOLLOW BS_NULL -#define BS_HATCHED 2 -#define BS_PATTERN 3 -#define BS_INDEXED 4 -#define BS_DIBPATTERN 5 - -/* Hatch Styles */ -#define HS_HORIZONTAL 0 -#define HS_VERTICAL 1 -#define HS_FDIAGONAL 2 -#define HS_BDIAGONAL 3 -#define HS_CROSS 4 -#define HS_DIAGCROSS 5 - -#endif // metafile functions - -class wxMetaRecord: public wxObject -{ - public: - int metaFunction; - long param1; - long param2; - long param3; - long param4; - long param5; - long param6; - long param7; - long param8; - char *stringParam; - wxRealPoint *points; - - wxMetaRecord(int fun) - { - metaFunction = fun; points = NULL; stringParam = NULL; - param1 = 0; - } - ~wxMetaRecord(void); -}; - -class wxXMetaFile: public wxObject -{ - public: - double lastX; - double lastY; - bool ok; - - double left; - double top; - double right; - double bottom; - - wxList metaRecords; - wxList gdiObjects; // List of wxMetaRecord objects created with Create..., - // referenced by position in list by SelectObject - wxXMetaFile(char *file = NULL); - ~wxXMetaFile(void); - - // After this is called, the metafile cannot be used for anything - // since it is now owned by the clipboard. - bool SetClipboard(int width = 0, int height = 0); - - bool Play(wxDC *dc); - inline bool Ok(void) const { return ok; } - bool ReadFile(char *file); -}; - -#endif - // _MFUTILS_H_ diff --git a/utils/ogl/src/misc.cpp b/utils/ogl/src/misc.cpp deleted file mode 100644 index 50ed2669dc..0000000000 --- a/utils/ogl/src/misc.cpp +++ /dev/null @@ -1,906 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: misc.cpp -// Purpose: Miscellaneous OGL support functions -// Author: Julian Smart -// Modified by: -// Created: 12/07/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "misc.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include -#endif - -#include - -#include - -#if wxUSE_IOSTREAMH -#include -#else -#include -#endif -#include -#include -#include - -#include "basic.h" -#include "basicp.h" -#include "misc.h" -#include "constrnt.h" -#include "composit.h" - -wxFont* g_oglNormalFont; -wxPen* g_oglBlackPen; -wxPen* g_oglWhiteBackgroundPen; -wxPen* g_oglTransparentPen; -wxBrush* g_oglWhiteBackgroundBrush; -wxPen* g_oglBlackForegroundPen; -wxCursor* g_oglBullseyeCursor = NULL; - -char* oglBuffer = NULL; - -wxList oglObjectCopyMapping(wxKEY_INTEGER); - -void wxOGLInitialize() -{ - g_oglBullseyeCursor = new wxCursor(wxCURSOR_BULLSEYE); - - g_oglNormalFont = new wxFont(10, wxSWISS, wxNORMAL, wxNORMAL); - - g_oglBlackPen = new wxPen("BLACK", 1, wxSOLID); - - g_oglWhiteBackgroundPen = new wxPen("WHITE", 1, wxSOLID); - g_oglTransparentPen = new wxPen("WHITE", 1, wxTRANSPARENT); - g_oglWhiteBackgroundBrush = new wxBrush("WHITE", wxSOLID); - g_oglBlackForegroundPen = new wxPen("BLACK", 1, wxSOLID); - - OGLInitializeConstraintTypes(); - - // Initialize big buffer used when writing images - oglBuffer = new char[3000]; - - if (!oglPopupDivisionMenu) - { - oglPopupDivisionMenu = new wxMenu("", (wxFunction)oglGraphicsDivisionMenuProc); - oglPopupDivisionMenu->Append(DIVISION_MENU_SPLIT_HORIZONTALLY, "Split horizontally"); - oglPopupDivisionMenu->Append(DIVISION_MENU_SPLIT_VERTICALLY, "Split vertically"); - oglPopupDivisionMenu->AppendSeparator(); - oglPopupDivisionMenu->Append(DIVISION_MENU_EDIT_LEFT_EDGE, "Edit left edge"); - oglPopupDivisionMenu->Append(DIVISION_MENU_EDIT_TOP_EDGE, "Edit top edge"); - } -} - -void wxOGLCleanUp() -{ - if (oglBuffer) - { - delete[] oglBuffer; - oglBuffer = NULL; - } - oglBuffer = NULL; - if (oglPopupDivisionMenu) - { - delete oglPopupDivisionMenu; - oglPopupDivisionMenu = NULL; - } - if (g_oglBullseyeCursor) - { - delete g_oglBullseyeCursor; - g_oglBullseyeCursor = NULL; - } - - if (g_oglNormalFont) - { - delete g_oglNormalFont; - g_oglNormalFont = NULL; - } - if (g_oglBlackPen) - { - delete g_oglBlackPen; - g_oglBlackPen = NULL; - } - if (g_oglWhiteBackgroundPen) - { - delete g_oglWhiteBackgroundPen; - g_oglWhiteBackgroundPen = NULL; - } - if (g_oglTransparentPen) - { - delete g_oglTransparentPen; - g_oglTransparentPen = NULL; - } - if (g_oglWhiteBackgroundBrush) - { - delete g_oglWhiteBackgroundBrush; - g_oglWhiteBackgroundBrush = NULL; - } - if (g_oglBlackForegroundPen) - { - delete g_oglBlackForegroundPen; - g_oglBlackForegroundPen = NULL; - } - - OGLCleanUpConstraintTypes(); -} - -wxFont *oglMatchFont(int point_size) -{ - wxFont *font = wxTheFontList->FindOrCreateFont(point_size, wxSWISS, wxNORMAL, wxNORMAL); -#if 0 - switch (point_size) - { - case 4: - font = swiss_font_4; - break; - case 6: - font = swiss_font_6; - break; - case 8: - font = swiss_font_8; - break; - case 12: - font = swiss_font_12; - break; - case 14: - font = swiss_font_14; - break; - case 18: - font = swiss_font_18; - break; - case 24: - font = swiss_font_24; - break; - default: - case 10: - font = swiss_font_10; - break; - } -#endif - return font; -} - -int FontSizeDialog(wxFrame *parent, int old_size) -{ - if (old_size <= 0) - old_size = 10; - char buf[40]; - sprintf(buf, "%d", old_size); - wxString ans = wxGetTextFromUser("Enter point size", "Font size", buf, parent); - if (ans == "") - return 0; - - int new_size = atoi(ans); - if ((new_size <= 0) || (new_size > 40)) - { - wxMessageBox("Invalid point size!", "Error", wxOK); - return 0; - } - return new_size; -/* - char *strings[8]; - strings[0] = "4"; - strings[1] = "6"; - strings[2] = "8"; - strings[3] = "10"; - strings[4] = "12"; - strings[5] = "14"; - strings[6] = "18"; - strings[7] = "24"; - char *ans = wxGetSingleChoice("Choose", "Choose a font size", 8, strings, parent); - if (ans) - { - int size; - sscanf(ans, "%d", &size); - return oglMatchFont(size); - } - else return NULL; -*/ -} - -// Centre a list of strings in the given box. xOffset and yOffset are the -// the positions that these lines should be relative to, and this might be -// the same as m_xpos, m_ypos, but might be zero if formatting from left-justifying. -void oglCentreText(wxDC& dc, wxList *text_list, - double m_xpos, double m_ypos, double width, double height, - int formatMode) -{ - int n = text_list->Number(); - - if (!text_list || (n == 0)) - return; - - // First, get maximum dimensions of box enclosing text - - long char_height = 0; - long max_width = 0; - long current_width = 0; - - // Store text extents for speed - double *widths = new double[n]; - - wxNode *current = text_list->First(); - int i = 0; - while (current) - { - wxShapeTextLine *line = (wxShapeTextLine *)current->Data(); - dc.GetTextExtent(line->GetText(), ¤t_width, &char_height); - widths[i] = current_width; - - if (current_width > max_width) - max_width = current_width; - current = current->Next(); - i ++; - } - - double max_height = n*char_height; - - double xoffset, yoffset, xOffset, yOffset; - - if (formatMode & FORMAT_CENTRE_VERT) - { - if (max_height < height) - yoffset = (double)(m_ypos - (height/2.0) + (height - max_height)/2.0); - else - yoffset = (double)(m_ypos - (height/2.0)); - yOffset = m_ypos; - } - else - { - yoffset = 0.0; - yOffset = 0.0; - } - - if (formatMode & FORMAT_CENTRE_HORIZ) - { - xoffset = (double)(m_xpos - width/2.0); - xOffset = m_xpos; - } - else - { - xoffset = 0.0; - xOffset = 0.0; - } - - current = text_list->First(); - i = 0; - - while (current) - { - wxShapeTextLine *line = (wxShapeTextLine *)current->Data(); - - double x; - if ((formatMode & FORMAT_CENTRE_HORIZ) && (widths[i] < width)) - x = (double)((width - widths[i])/2.0 + xoffset); - else - x = xoffset; - double y = (double)(i*char_height + yoffset); - - line->SetX( x - xOffset ); line->SetY( y - yOffset ); - current = current->Next(); - i ++; - } - - delete widths; -} - -// Centre a list of strings in the given box -void oglCentreTextNoClipping(wxDC& dc, wxList *text_list, - double m_xpos, double m_ypos, double width, double height) -{ - int n = text_list->Number(); - - if (!text_list || (n == 0)) - return; - - // First, get maximum dimensions of box enclosing text - - long char_height = 0; - long max_width = 0; - long current_width = 0; - - // Store text extents for speed - double *widths = new double[n]; - - wxNode *current = text_list->First(); - int i = 0; - while (current) - { - wxShapeTextLine *line = (wxShapeTextLine *)current->Data(); - dc.GetTextExtent(line->GetText(), ¤t_width, &char_height); - widths[i] = current_width; - - if (current_width > max_width) - max_width = current_width; - current = current->Next(); - i ++; - } - - double max_height = n*char_height; - - double yoffset = (double)(m_ypos - (height/2.0) + (height - max_height)/2.0); - - double xoffset = (double)(m_xpos - width/2.0); - - current = text_list->First(); - i = 0; - - while (current) - { - wxShapeTextLine *line = (wxShapeTextLine *)current->Data(); - - double x = (double)((width - widths[i])/2.0 + xoffset); - double y = (double)(i*char_height + yoffset); - - line->SetX( x - m_xpos ); line->SetY( y - m_ypos ); - current = current->Next(); - i ++; - } - delete widths; -} - -void oglGetCentredTextExtent(wxDC& dc, wxList *text_list, - double m_xpos, double m_ypos, double width, double height, - double *actual_width, double *actual_height) -{ - int n = text_list->Number(); - - if (!text_list || (n == 0)) - { - *actual_width = 0; - *actual_height = 0; - return; - } - - // First, get maximum dimensions of box enclosing text - - long char_height = 0; - long max_width = 0; - long current_width = 0; - - wxNode *current = text_list->First(); - int i = 0; - while (current) - { - wxShapeTextLine *line = (wxShapeTextLine *)current->Data(); - dc.GetTextExtent(line->GetText(), ¤t_width, &char_height); - - if (current_width > max_width) - max_width = current_width; - current = current->Next(); - i ++; - } - - *actual_height = n*char_height; - *actual_width = max_width; -} - -// Format a string to a list of strings that fit in the given box. -// Interpret %n and 10 or 13 as a new line. -wxStringList *oglFormatText(wxDC& dc, const wxString& text, double width, double height, int formatMode) -{ - // First, parse the string into a list of words - wxStringList word_list; - - // Make new lines into NULL strings at this point - int i = 0; int j = 0; int len = strlen(text); - char word[200]; word[0] = 0; - bool end_word = FALSE; bool new_line = FALSE; - while (i < len) - { - switch (text[i]) - { - case '%': - { - i ++; - if (i == len) - { word[j] = '%'; j ++; } - else - { - if (text[i] == 'n') - { new_line = TRUE; end_word = TRUE; i++; } - else - { word[j] = '%'; j ++; word[j] = text[i]; j ++; i ++; } - } - break; - } - case 10: - { - new_line = TRUE; end_word = TRUE; i++; - break; - } - case 13: - { - new_line = TRUE; end_word = TRUE; i++; - } - case ' ': - { - end_word = TRUE; - i ++; - break; - } - default: - { - word[j] = text[i]; - j ++; i ++; - break; - } - } - if (i == len) end_word = TRUE; - if (end_word) - { - word[j] = 0; - j = 0; - word_list.Add(word); - end_word = FALSE; - } - if (new_line) - { - word_list.Append(NULL); - new_line = FALSE; - } - } - // Now, make a list of strings which can fit in the box - wxStringList *string_list = new wxStringList; - - char buffer[400]; - buffer[0] = 0; - wxNode *node = word_list.First(); - long x, y; - - while (node) - { - wxString oldBuffer(buffer); - - char *s = (char *)node->Data(); - if (!s) - { - // FORCE NEW LINE - if (strlen(buffer) > 0) - string_list->Add(buffer); - - buffer[0] = 0; - } - else - { - if (buffer[0] != 0) - strcat(buffer, " "); - - strcat(buffer, s); - dc.GetTextExtent(buffer, &x, &y); - - // Don't fit within the bounding box if we're fitting shape to contents - if ((x > width) && !(formatMode & FORMAT_SIZE_TO_CONTENTS)) - { - // Deal with first word being wider than box - if (oldBuffer.Length() > 0) - string_list->Add(oldBuffer); - - buffer[0] = 0; - strcat(buffer, s); - } - } - - node = node->Next(); - } - if (buffer[0] != 0) - string_list->Add(buffer); - - return string_list; -} - -void oglDrawFormattedText(wxDC& dc, wxList *text_list, - double m_xpos, double m_ypos, double width, double height, - int formatMode) -{ - double xoffset, yoffset; - if (formatMode & FORMAT_CENTRE_HORIZ) - xoffset = m_xpos; - else - xoffset = (double)(m_xpos - (width / 2.0)); - - if (formatMode & FORMAT_CENTRE_VERT) - yoffset = m_ypos; - else - yoffset = (double)(m_ypos - (height / 2.0)); - - dc.SetClippingRegion( - (long)(m_xpos - width/2.0), (long)(m_ypos - height/2.0), - (long)width, (long)height); - - wxNode *current = text_list->First(); - while (current) - { - wxShapeTextLine *line = (wxShapeTextLine *)current->Data(); - - dc.DrawText(line->GetText(), WXROUND(xoffset + line->GetX()), WXROUND(yoffset + line->GetY())); - current = current->Next(); - } - - dc.DestroyClippingRegion(); -} - -/* - * Find centroid given list of points comprising polyline - * - */ - -void oglFindPolylineCentroid(wxList *points, double *x, double *y) -{ - double xcount = 0; - double ycount = 0; - - wxNode *node = points->First(); - while (node) - { - wxRealPoint *point = (wxRealPoint *)node->Data(); - xcount += point->x; - ycount += point->y; - node = node->Next(); - } - - *x = (xcount/points->Number()); - *y = (ycount/points->Number()); -} - -/* - * Check that (x1, y1) -> (x2, y2) hits (x3, y3) -> (x4, y4). - * If so, ratio1 gives the proportion along the first line - * that the intersection occurs (or something like that). - * Used by functions below. - * - */ -void oglCheckLineIntersection(double x1, double y1, double x2, double y2, - double x3, double y3, double x4, double y4, - double *ratio1, double *ratio2) -{ - double denominator_term = (y4 - y3)*(x2 - x1) - (y2 - y1)*(x4 - x3); - double numerator_term = (x3 - x1)*(y4 - y3) + (x4 - x3)*(y1 - y3); - - double line_constant; - double length_ratio = 1.0; - double k_line = 1.0; - - // Check for parallel lines - if ((denominator_term < 0.005) && (denominator_term > -0.005)) - line_constant = -1.0; - else - line_constant = numerator_term/denominator_term; - - // Check for intersection - if ((line_constant < 1.0) && (line_constant > 0.0)) - { - // Now must check that other line hits - if (((y4 - y3) < 0.005) && ((y4 - y3) > -0.005)) - k_line = ((x1 - x3) + line_constant*(x2 - x1))/(x4 - x3); - else - k_line = ((y1 - y3) + line_constant*(y2 - y1))/(y4 - y3); - - if ((k_line >= 0.0) && (k_line < 1.0)) - length_ratio = line_constant; - else - k_line = 1.0; - } - *ratio1 = length_ratio; - *ratio2 = k_line; -} - -/* - * Find where (x1, y1) -> (x2, y2) hits one of the lines in xvec, yvec. - * (*x3, *y3) is the point where it hits. - * - */ -void oglFindEndForPolyline(double n, double xvec[], double yvec[], - double x1, double y1, double x2, double y2, double *x3, double *y3) -{ - int i; - double lastx = xvec[0]; - double lasty = yvec[0]; - - double min_ratio = 1.0; - double line_ratio; - double other_ratio; - - for (i = 1; i < n; i++) - { - oglCheckLineIntersection(x1, y1, x2, y2, lastx, lasty, xvec[i], yvec[i], - &line_ratio, &other_ratio); - lastx = xvec[i]; - lasty = yvec[i]; - - if (line_ratio < min_ratio) - min_ratio = line_ratio; - } - - // Do last (implicit) line if last and first doubles are not identical - if (!(xvec[0] == lastx && yvec[0] == lasty)) - { - oglCheckLineIntersection(x1, y1, x2, y2, lastx, lasty, xvec[0], yvec[0], - &line_ratio, &other_ratio); - - if (line_ratio < min_ratio) - min_ratio = line_ratio; - } - - *x3 = (x1 + (x2 - x1)*min_ratio); - *y3 = (y1 + (y2 - y1)*min_ratio); - -} - -/* - * Find where the line hits the box. - * - */ - -void oglFindEndForBox(double width, double height, - double x1, double y1, // Centre of box (possibly) - double x2, double y2, // other end of line - double *x3, double *y3) // End on box edge -{ - double xvec[5]; - double yvec[5]; - - xvec[0] = (double)(x1 - width/2.0); - yvec[0] = (double)(y1 - height/2.0); - xvec[1] = (double)(x1 - width/2.0); - yvec[1] = (double)(y1 + height/2.0); - xvec[2] = (double)(x1 + width/2.0); - yvec[2] = (double)(y1 + height/2.0); - xvec[3] = (double)(x1 + width/2.0); - yvec[3] = (double)(y1 - height/2.0); - xvec[4] = (double)(x1 - width/2.0); - yvec[4] = (double)(y1 - height/2.0); - - oglFindEndForPolyline(5, xvec, yvec, x2, y2, x1, y1, x3, y3); -} - -/* - * Find where the line hits the circle. - * - */ - -void oglFindEndForCircle(double radius, - double x1, double y1, // Centre of circle - double x2, double y2, // Other end of line - double *x3, double *y3) -{ - double H = (double)sqrt((x2 - x1)*(x2 - x1) + (y2 - y1)*(y2 - y1)); - - if (H == 0.0) - { - *x3 = x1; - *y3 = y1; - } - else - { - *y3 = radius * (y2 - y1)/H + y1; - *x3 = radius * (x2 - x1)/H + x1; - } -} - -/* - * Given the line (x1, y1) -> (x2, y2), and an arrow size of given length and width, - * return the position of the tip of the arrow and the left and right vertices of the arrow. - * - */ - -void oglGetArrowPoints(double x1, double y1, double x2, double y2, - double length, double width, - double *tip_x, double *tip_y, - double *side1_x, double *side1_y, - double *side2_x, double *side2_y) -{ - double l = (double)sqrt((x2 - x1)*(x2 - x1) + (y2 - y1)*(y2 - y1)); - - if (l < 0.01) - l = (double) 0.01; - - double i_bar = (x2 - x1)/l; - double j_bar = (y2 - y1)/l; - - double x3 = (- length*i_bar) + x2; - double y3 = (- length*j_bar) + y2; - - *side1_x = width*(-j_bar) + x3; - *side1_y = width*i_bar + y3; - - *side2_x = -width*(-j_bar) + x3; - *side2_y = -width*i_bar + y3; - - *tip_x = x2; *tip_y = y2; -} - -/* - * Given an ellipse and endpoints of a line, returns the point at which - * the line touches the ellipse in values x4, y4. - * This function assumes that the centre of the ellipse is at x1, y1, and the - * ellipse has a width of width1 and a height of height1. It also assumes you are - * wanting to draw an arc FROM point x2, y2 TOWARDS point x3, y3. - * This function calculates the x,y coordinates of the intersection point of - * the arc with the ellipse. - * Author: Ian Harrison - */ - -void oglDrawArcToEllipse(double x1, double y1, double width1, double height1, double x2, double y2, double x3, double y3, - double *x4, double *y4) -{ - double a1 = (double)(width1/2.0); - double b1 = (double)(height1/2.0); - - // These are required to give top left x and y coordinates for DrawEllipse -// double top_left_x1 = (double)(x1 - a1); -// double top_left_y1 = (double)(y1 - b1); -/* - // Check for vertical line - if (fabs(x2 - x3) < 0.05) - { - *x4 = x3; - if (y2 < y3) - *y4 = (double)(y1 - b1); - else - *y4 = (double)(y1 + b1); - return; - } -*/ - // Check that x2 != x3 - if (fabs(x2 - x3) < 0.05) - { - *x4 = x2; - if (y3 > y2) - *y4 = (double)(y1 - sqrt((b1*b1 - (((x2-x1)*(x2-x1))*(b1*b1)/(a1*a1))))); - else - *y4 = (double)(y1 + sqrt((b1*b1 - (((x2-x1)*(x2-x1))*(b1*b1)/(a1*a1))))); - return; - } - - // Calculate the x and y coordinates of the point where arc intersects ellipse - - double A, B, C, D, E, F, G, H, K; - double ellipse1_x, ellipse1_y; - - A = (double)(1/(a1 * a1)); - B = (double)((y3 - y2) * (y3 - y2)) / ((x3 - x2) * (x3 - x2) * b1 * b1); - C = (double)(2 * (y3 - y2) * (y2 - y1)) / ((x3 - x2) * b1 * b1); - D = (double)((y2 - y1) * (y2 - y1)) / (b1 * b1); - E = (double)(A + B); - F = (double)(C - (2 * A * x1) - (2 * B * x2)); - G = (double)((A * x1 * x1) + (B * x2 * x2) - (C * x2) + D - 1); - H = (double)((y3 - y2) / (x3 - x2)); - K = (double)((F * F) - (4 * E * G)); - - if (K >= 0) - // In this case the line intersects the ellipse, so calculate intersection - { - if(x2 >= x1) - { - ellipse1_x = (double)(((F * -1) + sqrt(K)) / (2 * E)); - ellipse1_y = (double)((H * (ellipse1_x - x2)) + y2); - } - else - { - ellipse1_x = (double)(((F * -1) - sqrt(K)) / (2 * E)); - ellipse1_y = (double)((H * (ellipse1_x - x2)) + y2); - } - } - else - // in this case, arc does not intersect ellipse, so just draw arc - { - ellipse1_x = x3; - ellipse1_y = y3; - } - *x4 = ellipse1_x; - *y4 = ellipse1_y; - -/* - // Draw a little circle (radius = 2) at the end of the arc where it hits - // the ellipse . - - double circle_x = ellipse1_x - 2.0; - double circle_y = ellipse1_y - 2.0; - m_canvas->DrawEllipse(circle_x, circle_y, 4.0, 4.0); -*/ -} - -// Update a list item from a list of strings -void UpdateListBox(wxListBox *item, wxList *list) -{ - item->Clear(); - if (!list) - return; - - wxNode *node = list->First(); - while (node) - { - char *s = (char *)node->Data(); - item->Append(s); - node = node->Next(); - } -} - -bool oglRoughlyEqual(double val1, double val2, double tol) -{ - return ( (val1 < (val2 + tol)) && (val1 > (val2 - tol)) && - (val2 < (val1 + tol)) && (val2 > (val1 - tol))); -} - -/* - * Hex<->Dec conversion - */ - -// Array used in DecToHex conversion routine. -static char sg_HexArray[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', - 'C', 'D', 'E', 'F' }; - -// Convert 2-digit hex number to decimal -unsigned int oglHexToDec(char* buf) -{ - int firstDigit, secondDigit; - - if (buf[0] >= 'A') - firstDigit = buf[0] - 'A' + 10; - else - firstDigit = buf[0] - '0'; - - if (buf[1] >= 'A') - secondDigit = buf[1] - 'A' + 10; - else - secondDigit = buf[1] - '0'; - - return firstDigit * 16 + secondDigit; -} - -// Convert decimal integer to 2-character hex string -void oglDecToHex(unsigned int dec, char *buf) -{ - int firstDigit = (int)(dec/16.0); - int secondDigit = (int)(dec - (firstDigit*16.0)); - buf[0] = sg_HexArray[firstDigit]; - buf[1] = sg_HexArray[secondDigit]; - buf[2] = 0; -} - -// 3-digit hex to wxColour -wxColour oglHexToColour(const wxString& hex) -{ - if (hex.Length() == 6) - { - char buf[7]; - strncpy(buf, hex, 7); - unsigned int r = oglHexToDec((char *)buf); - unsigned int g = oglHexToDec((char *)(buf+2)); - unsigned int b = oglHexToDec((char *)(buf+4)); - return wxColour(r, g, b); - } - else - return wxColour(0,0,0); -} - -// RGB to 3-digit hex -wxString oglColourToHex(const wxColour& colour) -{ - char buf[7]; - unsigned int red = colour.Red(); - unsigned int green = colour.Green(); - unsigned int blue = colour.Blue(); - - oglDecToHex(red, buf); - oglDecToHex(green, buf+2); - oglDecToHex(blue, buf+4); - - return wxString(buf); -} - - diff --git a/utils/ogl/src/misc.h b/utils/ogl/src/misc.h deleted file mode 100644 index 4e6abfb6b2..0000000000 --- a/utils/ogl/src/misc.h +++ /dev/null @@ -1,113 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: misc.h -// Purpose: Miscellaneous utilities for OGL -// Author: Julian Smart -// Modified by: -// Created: 12/07/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _OGL_MISC_H_ -#define _OGL_MISC_H_ - -#ifdef __GNUG__ -#pragma interface "misc.h" -#endif - -// List to use when copying objects; may need to associate elements of new objects -// with elements of old objects, e.g. when copying constraint.s -extern wxList oglObjectCopyMapping; - -/* - * TEXT FORMATTING FUNCTIONS - * - */ - -// Centres the given list of wxShapeTextLine strings in the given box -// (changing the positions in situ). Doesn't actually draw into the DC. -void oglCentreText(wxDC& dc, wxList *text, double m_xpos, double m_ypos, - double width, double height, - int formatMode = FORMAT_CENTRE_HORIZ | FORMAT_CENTRE_VERT); - -// Given a string, returns a list of strings that fit within the given -// width of box. Height is ignored. -wxStringList *oglFormatText(wxDC& dc, const wxString& text, double width, double height, int formatMode = 0); - -// Centres the list of wxShapeTextLine strings, doesn't clip. -// Doesn't actually draw into the DC. -void oglCentreTextNoClipping(wxDC& dc, wxList *text_list, - double m_xpos, double m_ypos, double width, double height); - -// Gets the maximum width and height of the given list of wxShapeTextLines. -void oglGetCentredTextExtent(wxDC& dc, wxList *text_list, - double m_xpos, double m_ypos, double width, double height, - double *actual_width, double *actual_height); - -// Actually draw the preformatted list of wxShapeTextLines. -void oglDrawFormattedText(wxDC& context, wxList *text_list, - double m_xpos, double m_ypos, double width, double height, - int formatMode = FORMAT_CENTRE_HORIZ | FORMAT_CENTRE_VERT); - -// Give it a list of points, finds the centre. -void oglFindPolylineCentroid(wxList *points, double *x, double *y); - -void oglCheckLineIntersection(double x1, double y1, double x2, double y2, - double x3, double y3, double x4, double y4, - double *ratio1, double *ratio2); - -void oglFindEndForPolyline(double n, double xvec[], double yvec[], - double x1, double y1, double x2, double y2, double *x3, double *y3); - - -void oglFindEndForBox(double width, double height, - double x1, double y1, // Centre of box (possibly) - double x2, double y2, // other end of line - double *x3, double *y3); // End on box edge - -void oglFindEndForCircle(double radius, - double x1, double y1, // Centre of circle - double x2, double y2, // Other end of line - double *x3, double *y3); - -void oglGetArrowPoints(double x1, double y1, double x2, double y2, - double length, double width, - double *tip_x, double *tip_y, - double *side1_x, double *side1_y, - double *side2_x, double *side2_y); - -/* - * Given an ellipse and endpoints of a line, returns the point at which - * the line touches the ellipse in values x4, y4. - * This function assumes that the centre of the ellipse is at x1, y1, and the - * ellipse has a width of a1 and a height of b1. It also assumes you are - * wanting to draw an arc FROM point x2, y2 TOWARDS point x3, y3. - * This function calculates the x,y coordinates of the intersection point of - * the arc with the ellipse. - * Author: Ian Harrison - */ - -void oglDrawArcToEllipse(double x1, double y1, double a1, double b1, double x2, double y2, double x3, double y3, - double *x4, double *y4); - -bool oglRoughlyEqual(double val1, double val2, double tol = 0.00001); - -extern wxFont* g_oglNormalFont; -extern wxPen* g_oglBlackPen; -extern wxPen* g_oglWhiteBackgroundPen; -extern wxPen* g_oglTransparentPen; -extern wxBrush* g_oglWhiteBackgroundBrush; -extern wxPen* g_oglBlackForegroundPen; -extern wxCursor* g_oglBullseyeCursor; - -extern wxFont* oglMatchFont(int point_size); - -extern wxString oglColourToHex(const wxColour& colour); -extern wxColour oglHexToColour(const wxString& hex); -extern void oglDecToHex(unsigned int dec, char *buf); -extern unsigned int oglHexToDec(char* buf); - - -#endif - // _OGL_MISC_H_ diff --git a/utils/ogl/src/ogl.h b/utils/ogl/src/ogl.h deleted file mode 100644 index 7f5080da11..0000000000 --- a/utils/ogl/src/ogl.h +++ /dev/null @@ -1,26 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: ogl.h -// Purpose: OGL main include -// Author: Julian Smart -// Modified by: -// Created: 12/07/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _OGL_OGL_H_ -#define _OGL_OGL_H_ - -#include "basic.h" // Basic shapes -#include "lines.h" // Lines and splines -#include "divided.h" // Vertically-divided rectangle -#include "composit.h" // Composite images -#include "canvas.h" // wxShapeCanvas for displaying objects -#include "ogldiag.h" // wxDiagram - -extern void wxOGLInitialize(); -extern void wxOGLCleanUp(); - -#endif - // _OGL_OGL_H_ diff --git a/utils/ogl/src/ogldiag.cpp b/utils/ogl/src/ogldiag.cpp deleted file mode 100644 index 3961607b18..0000000000 --- a/utils/ogl/src/ogldiag.cpp +++ /dev/null @@ -1,756 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: ogldiag.cpp -// Purpose: wxDiagram -// Author: Julian Smart -// Modified by: -// Created: 12/07/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "ogldiag.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include -#endif - -#include - -#if wxUSE_IOSTREAMH -#include -#include -#else -#include -#include -#ifdef _MSC_VER -using namespace std; -#endif -#endif - -#include -#include -#include - -#include "basic.h" -#include "basicp.h" -#include "canvas.h" -#include "ogldiag.h" -#include "lines.h" -#include "composit.h" -#include "misc.h" - -IMPLEMENT_DYNAMIC_CLASS(wxDiagram, wxObject) - -// Object canvas -wxDiagram::wxDiagram() -{ - m_diagramCanvas = NULL; - m_quickEditMode = FALSE; - m_snapToGrid = TRUE; - m_gridSpacing = 5.0; - m_shapeList = new wxList; - m_mouseTolerance = DEFAULT_MOUSE_TOLERANCE; -} - -wxDiagram::~wxDiagram() -{ - if (m_shapeList) - delete m_shapeList; -} - -void wxDiagram::SetSnapToGrid(bool snap) -{ - m_snapToGrid = snap; -} - -void wxDiagram::SetGridSpacing(double spacing) -{ - m_gridSpacing = spacing; -} - -void wxDiagram::Snap(double *x, double *y) -{ - if (m_snapToGrid) - { - *x = m_gridSpacing * ((int)(*x/m_gridSpacing + 0.5)); - *y = m_gridSpacing * ((int)(*y/m_gridSpacing + 0.5)); - } -} - - -void wxDiagram::Redraw(wxDC& dc) -{ - if (m_shapeList) - { - if (GetCanvas()) - GetCanvas()->SetCursor(* wxHOURGLASS_CURSOR); - wxNode *current = m_shapeList->First(); - - while (current) - { - wxShape *object = (wxShape *)current->Data(); - if (!object->GetParent()) - object->Draw(dc); - - current = current->Next(); - } - if (GetCanvas()) - GetCanvas()->SetCursor(* wxSTANDARD_CURSOR); - } -} - -void wxDiagram::Clear(wxDC& dc) -{ - dc.Clear(); -} - -// Insert object after addAfter, or at end of list. -void wxDiagram::AddShape(wxShape *object, wxShape *addAfter) -{ - wxNode *nodeAfter = NULL; - if (addAfter) - nodeAfter = m_shapeList->Member(addAfter); - - if (!m_shapeList->Member(object)) - { - if (nodeAfter) - { - if (nodeAfter->Next()) - m_shapeList->Insert(nodeAfter->Next(), object); - else - m_shapeList->Append(object); - } - else - m_shapeList->Append(object); - object->SetCanvas(GetCanvas()); - } -} - -void wxDiagram::InsertShape(wxShape *object) -{ - m_shapeList->Insert(object); - object->SetCanvas(GetCanvas()); -} - -void wxDiagram::RemoveShape(wxShape *object) -{ - m_shapeList->DeleteObject(object); -} - -// Should this delete the actual objects too? I think not. -void wxDiagram::RemoveAllShapes() -{ - m_shapeList->Clear(); -} - -void wxDiagram::DeleteAllShapes() -{ - wxNode *node = m_shapeList->First(); - while (node) - { - wxShape *shape = (wxShape *)node->Data(); - if (!shape->GetParent()) - { - RemoveShape(shape); - delete shape; - node = m_shapeList->First(); - } - else - node = node->Next(); - } -} - -void wxDiagram::ShowAll(bool show) -{ - wxNode *current = m_shapeList->First(); - - while (current) - { - wxShape *object = (wxShape *)current->Data(); - object->Show(show); - - current = current->Next(); - } -} - -void wxDiagram::DrawOutline(wxDC& dc, double x1, double y1, double x2, double y2) -{ - wxPen dottedPen(wxColour(0, 0, 0), 1, wxDOT); - dc.SetPen(dottedPen); - dc.SetBrush((* wxTRANSPARENT_BRUSH)); - - wxPoint points[5]; - - points[0].x = (int) x1; - points[0].y = (int) y1; - - points[1].x = (int) x2; - points[1].y = (int) y1; - - points[2].x = (int) x2; - points[2].y = (int) y2; - - points[3].x = (int) x1; - points[3].y = (int) y2; - - points[4].x = (int) x1; - points[4].y = (int) y1; - dc.DrawLines(5, points); -} - -// Make sure all text that should be centred, is centred. -void wxDiagram::RecentreAll(wxDC& dc) -{ - wxNode *object_node = m_shapeList->First(); - while (object_node) - { - wxShape *obj = (wxShape *)object_node->Data(); - obj->Recentre(dc); - object_node = object_node->Next(); - } -} - -// Input/output -#ifdef PROLOGIO -bool wxDiagram::SaveFile(const wxString& filename) -{ - wxBeginBusyCursor(); - - wxExprDatabase *database = new wxExprDatabase; - - // First write the diagram type - wxExpr *header = new wxExpr("diagram"); - OnHeaderSave(*database, *header); - - database->Append(header); - - wxNode *node = m_shapeList->First(); - while (node) - { - wxShape *shape = (wxShape *)node->Data(); - - if (!shape->IsKindOf(CLASSINFO(wxControlPoint))) - { - wxExpr *expr = NULL; - if (shape->IsKindOf(CLASSINFO(wxLineShape))) - expr = new wxExpr("line"); - else - expr = new wxExpr("shape"); - - OnShapeSave(*database, *shape, *expr); - } - node = node->Next(); - } - OnDatabaseSave(*database); - - char tempFile[400]; - wxGetTempFileName("diag", tempFile); - ofstream stream(tempFile); - if (stream.bad()) - { - wxEndBusyCursor(); - delete database; - return FALSE; - } - - database->Write(stream); - stream.close(); - delete database; - -/* - // Save backup - if (FileExists(filename)) - { - char buf[400]; -#ifdef __X__ - sprintf(buf, "%s.bak", filename); -#endif -#ifdef __WXMSW__ - sprintf(buf, "_diagram.bak"); -#endif - if (FileExists(buf)) wxRemoveFile(buf); - if (!wxRenameFile(filename, buf)) - { - wxCopyFile(filename, buf); - wxRemoveFile(filename); - } - } -*/ - - // Copy the temporary file to the correct filename - if (!wxRenameFile(tempFile, filename)) - { - wxCopyFile(tempFile, filename); - wxRemoveFile(tempFile); - } - - wxEndBusyCursor(); - return TRUE; -} - -bool wxDiagram::LoadFile(const wxString& filename) -{ - wxBeginBusyCursor(); - - wxExprDatabase database(wxExprInteger, "id"); - if (!database.Read(filename)) - { - wxEndBusyCursor(); - return FALSE; - } - - DeleteAllShapes(); - - database.BeginFind(); - wxExpr *header = database.FindClauseByFunctor("diagram"); - - if (header) - OnHeaderLoad(database, *header); - - // Scan through all clauses and register the ids - wxNode *node = database.First(); - while (node) - { - wxExpr *clause = (wxExpr *)node->Data(); - long id = -1; - clause->GetAttributeValue("id", id); - RegisterId(id); - node = node->Next(); - } - - ReadNodes(database); - ReadContainerGeometry(database); - ReadLines(database); - - OnDatabaseLoad(database); - - wxEndBusyCursor(); - - return TRUE; -} - -void wxDiagram::ReadNodes(wxExprDatabase& database) -{ - // Find and create the node images - database.BeginFind(); - wxExpr *clause = database.FindClauseByFunctor("shape"); - while (clause) - { - char *type = NULL; - long parentId = -1; - - clause->AssignAttributeValue("type", &type); - clause->AssignAttributeValue("parent", &parentId); - wxClassInfo *classInfo = wxClassInfo::FindClass(type); - if (classInfo) - { - wxShape *shape = (wxShape *)classInfo->CreateObject(); - OnShapeLoad(database, *shape, *clause); - - shape->SetCanvas(GetCanvas()); - shape->Show(TRUE); - - m_shapeList->Append(shape); - - // If child of composite, link up - if (parentId > -1) - { - wxExpr *parentExpr = database.HashFind("shape", parentId); - if (parentExpr && parentExpr->GetClientData()) - { - wxShape *parent = (wxShape *)parentExpr->GetClientData(); - shape->SetParent(parent); - parent->GetChildren().Append(shape); - } - } - - clause->SetClientData(shape); - } - if (type) - delete[] type; - - clause = database.FindClauseByFunctor("shape"); - } - return; -} - -void wxDiagram::ReadLines(wxExprDatabase& database) -{ - database.BeginFind(); - wxExpr *clause = database.FindClauseByFunctor("line"); - while (clause) - { - wxString type(""); - long parentId = -1; - - clause->GetAttributeValue("type", type); - clause->GetAttributeValue("parent", parentId); - wxClassInfo *classInfo = wxClassInfo::FindClass((char*) (const char*) type); - if (classInfo) - { - wxLineShape *shape = (wxLineShape *)classInfo->CreateObject(); - shape->Show(TRUE); - - OnShapeLoad(database, *shape, *clause); - shape->SetCanvas(GetCanvas()); - - long image_to = -1; long image_from = -1; - clause->GetAttributeValue("to", image_to); - clause->GetAttributeValue("from", image_from); - - wxExpr *image_to_expr = database.HashFind("shape", image_to); - - if (!image_to_expr) - { - // Error - } - wxExpr *image_from_expr = database.HashFind("shape", image_from); - - if (!image_from_expr) - { - // Error - } - - if (image_to_expr && image_from_expr) - { - wxShape *image_to_object = (wxShape *)image_to_expr->GetClientData(); - wxShape *image_from_object = (wxShape *)image_from_expr->GetClientData(); - - if (image_to_object && image_from_object) - { - image_from_object->AddLine(shape, image_to_object, shape->GetAttachmentFrom(), shape->GetAttachmentTo()); - } - } - clause->SetClientData(shape); - - m_shapeList->Append(shape); - } - - clause = database.FindClauseByFunctor("line"); - } -} - -// Containers have divisions that reference adjoining divisions, -// so we need a separate pass to link everything up. -// Also used by Symbol Library. -void wxDiagram::ReadContainerGeometry(wxExprDatabase& database) -{ - database.BeginFind(); - wxExpr *clause = database.FindClauseByFunctor("shape"); - while (clause) - { - wxShape *image = (wxShape *)clause->GetClientData(); - if (image && image->IsKindOf(CLASSINFO(wxCompositeShape))) - { - wxCompositeShape *composite = (wxCompositeShape *)image; - wxExpr *divisionExpr = NULL; - - // Find the list of divisions in the composite - clause->GetAttributeValue("divisions", &divisionExpr); - if (divisionExpr) - { - int i = 0; - wxExpr *idExpr = divisionExpr->Nth(i); - while (idExpr) - { - long divisionId = idExpr->IntegerValue(); - wxExpr *childExpr = database.HashFind("shape", divisionId); - if (childExpr && childExpr->GetClientData()) - { - wxDivisionShape *child = (wxDivisionShape *)childExpr->GetClientData(); - composite->GetDivisions().Append(child); - - // Find the adjoining shapes - long leftSideId = -1; - long topSideId = -1; - long rightSideId = -1; - long bottomSideId = -1; - childExpr->GetAttributeValue("left_side", leftSideId); - childExpr->GetAttributeValue("top_side", topSideId); - childExpr->GetAttributeValue("right_side", rightSideId); - childExpr->GetAttributeValue("bottom_side", bottomSideId); - if (leftSideId > -1) - { - wxExpr *leftExpr = database.HashFind("shape", leftSideId); - if (leftExpr && leftExpr->GetClientData()) - { - wxDivisionShape *leftSide = (wxDivisionShape *)leftExpr->GetClientData(); - child->SetLeftSide(leftSide); - } - } - if (topSideId > -1) - { - wxExpr *topExpr = database.HashFind("shape", topSideId); - if (topExpr && topExpr->GetClientData()) - { - wxDivisionShape *topSide = (wxDivisionShape *)topExpr->GetClientData(); - child->SetTopSide(topSide); - } - } - if (rightSideId > -1) - { - wxExpr *rightExpr = database.HashFind("shape", rightSideId); - if (rightExpr && rightExpr->GetClientData()) - { - wxDivisionShape *rightSide = (wxDivisionShape *)rightExpr->GetClientData(); - child->SetRightSide(rightSide); - } - } - if (bottomSideId > -1) - { - wxExpr *bottomExpr = database.HashFind("shape", bottomSideId); - if (bottomExpr && bottomExpr->GetClientData()) - { - wxDivisionShape *bottomSide = (wxDivisionShape *)bottomExpr->GetClientData(); - child->SetBottomSide(bottomSide); - } - } - } - i ++; - idExpr = divisionExpr->Nth(i); - } - } - } - - clause = database.FindClauseByFunctor("shape"); - } -} - -// Allow for modifying file -bool wxDiagram::OnDatabaseLoad(wxExprDatabase& db) -{ - return TRUE; -} - -bool wxDiagram::OnDatabaseSave(wxExprDatabase& db) -{ - return TRUE; -} - -bool wxDiagram::OnShapeSave(wxExprDatabase& db, wxShape& shape, wxExpr& expr) -{ - shape.WriteAttributes(&expr); - db.Append(&expr); - - if (shape.IsKindOf(CLASSINFO(wxCompositeShape))) - { - wxNode *node = shape.GetChildren().First(); - while (node) - { - wxShape *childShape = (wxShape *)node->Data(); - wxExpr *childExpr = new wxExpr("shape"); - OnShapeSave(db, *childShape, *childExpr); - node = node->Next(); - } - } - - return TRUE; -} - -bool wxDiagram::OnShapeLoad(wxExprDatabase& db, wxShape& shape, wxExpr& expr) -{ - shape.ReadAttributes(&expr); - return TRUE; -} - -bool wxDiagram::OnHeaderSave(wxExprDatabase& db, wxExpr& expr) -{ - return TRUE; -} - -bool wxDiagram::OnHeaderLoad(wxExprDatabase& db, wxExpr& expr) -{ - return TRUE; -} - -#endif - -void wxDiagram::SetCanvas(wxShapeCanvas *can) -{ - m_diagramCanvas = can; -} - -// Find a shape by its id -wxShape* wxDiagram::FindShape(long id) const -{ - wxNode* node = GetShapeList()->First(); - while (node) - { - wxShape* shape = (wxShape*) node->Data(); - if (shape->GetId() == id) - return shape; - node = node->Next(); - } - return NULL; -} - - -//// Crossings classes - -wxLineCrossings::wxLineCrossings() -{ -} - -wxLineCrossings::~wxLineCrossings() -{ - ClearCrossings(); -} - -void wxLineCrossings::FindCrossings(wxDiagram& diagram) -{ - ClearCrossings(); - wxNode* node1 = diagram.GetShapeList()->First(); - while (node1) - { - wxShape* shape1 = (wxShape*) node1->Data(); - if (shape1->IsKindOf(CLASSINFO(wxLineShape))) - { - wxLineShape* lineShape1 = (wxLineShape*) shape1; - // Iterate through the segments - wxList* pts1 = lineShape1->GetLineControlPoints(); - int i; - for (i = 0; i < (pts1->Number() - 1); i++) - { - wxRealPoint* pt1_a = (wxRealPoint*) (pts1->Nth(i)->Data()); - wxRealPoint* pt1_b = (wxRealPoint*) (pts1->Nth(i+1)->Data()); - - // Now we iterate through the segments again - - wxNode* node2 = diagram.GetShapeList()->First(); - while (node2) - { - wxShape* shape2 = (wxShape*) node2->Data(); - - // Assume that the same line doesn't cross itself - if (shape2->IsKindOf(CLASSINFO(wxLineShape)) && (shape1 != shape2)) - { - wxLineShape* lineShape2 = (wxLineShape*) shape2; - // Iterate through the segments - wxList* pts2 = lineShape2->GetLineControlPoints(); - int j; - for (j = 0; j < (pts2->Number() - 1); j++) - { - wxRealPoint* pt2_a = (wxRealPoint*) (pts2->Nth(j)->Data()); - wxRealPoint* pt2_b = (wxRealPoint*) (pts2->Nth(j+1)->Data()); - - // Now let's see if these two segments cross. - double ratio1, ratio2; - oglCheckLineIntersection(pt1_a->x, pt1_a->y, pt1_b->x, pt1_b->y, - pt2_a->x, pt2_a->y, pt2_b->x, pt2_b->y, - & ratio1, & ratio2); - - if ((ratio1 < 1.0) && (ratio1 > -1.0)) - { - // Intersection! - wxLineCrossing* crossing = new wxLineCrossing; - crossing->m_intersect.x = (pt1_a->x + (pt1_b->x - pt1_a->x)*ratio1); - crossing->m_intersect.y = (pt1_a->y + (pt1_b->y - pt1_a->y)*ratio1); - - crossing->m_pt1 = * pt1_a; - crossing->m_pt2 = * pt1_b; - crossing->m_pt3 = * pt2_a; - crossing->m_pt4 = * pt2_b; - - crossing->m_lineShape1 = lineShape1; - crossing->m_lineShape2 = lineShape2; - - m_crossings.Append(crossing); - } - } - } - node2 = node2->Next(); - } - } - } - - node1 = node1->Next(); - } -} - -void wxLineCrossings::DrawCrossings(wxDiagram& diagram, wxDC& dc) -{ - dc.SetBrush(*wxTRANSPARENT_BRUSH); - - long arcWidth = 8; - - wxNode* node = m_crossings.First(); - while (node) - { - wxLineCrossing* crossing = (wxLineCrossing*) node->Data(); -// dc.DrawEllipse((long) (crossing->m_intersect.x - (arcWidth/2.0) + 0.5), (long) (crossing->m_intersect.y - (arcWidth/2.0) + 0.5), -// arcWidth, arcWidth); - - - // Let's do some geometry to find the points on either end of the arc. -/* - -(x1, y1) - |\ - | \ - | \ - | \ - | \ - | |\ c c1 - | a | \ - | \ - | - x <-- centre of arc - a1 | b |\ - | | \ c2 - | a2 | \ - | - \ - | b2 \ - | \ - |_______________\ (x2, y2) - b1 - -*/ - - double a1 = wxMax(crossing->m_pt1.y, crossing->m_pt2.y) - wxMin(crossing->m_pt1.y, crossing->m_pt2.y) ; - double b1 = wxMax(crossing->m_pt1.x, crossing->m_pt2.x) - wxMin(crossing->m_pt1.x, crossing->m_pt2.x) ; - double c1 = sqrt( (a1*a1) + (b1*b1) ); - - double c = arcWidth / 2.0; - double a = c * a1/c1 ; - double b = c * b1/c1 ; - - // I'm not sure this is right, since we don't know which direction we should be going in - need - // to know which way the line slopes and choose the sign appropriately. - double arcX1 = crossing->m_intersect.x - b; - double arcY1 = crossing->m_intersect.y - a; - - double arcX2 = crossing->m_intersect.x + b; - double arcY2 = crossing->m_intersect.y + a; - - dc.SetPen(*wxBLACK_PEN); - dc.DrawArc( (long) arcX1, (long) arcY1, (long) arcX2, (long) arcY2, - (long) crossing->m_intersect.x, (long) crossing->m_intersect.y); - - dc.SetPen(*wxWHITE_PEN); - dc.DrawLine( (long) arcX1, (long) arcY1, (long) arcX2, (long) arcY2 ); - - node = node->Next(); - } -} - -void wxLineCrossings::ClearCrossings() -{ - wxNode* node = m_crossings.First(); - while (node) - { - wxLineCrossing* crossing = (wxLineCrossing*) node->Data(); - delete crossing; - node = node->Next(); - } - m_crossings.Clear(); -} - diff --git a/utils/ogl/src/ogldiag.h b/utils/ogl/src/ogldiag.h deleted file mode 100644 index e06e1248f4..0000000000 --- a/utils/ogl/src/ogldiag.h +++ /dev/null @@ -1,124 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: ogldiag.h -// Purpose: OGL - wxDiagram class -// Author: Julian Smart -// Modified by: -// Created: 12/07/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _OGL_OGLDIAG_H_ -#define _OGL_OGLDIAG_H_ - -#ifdef __GNUG__ -#pragma interface "ogldiag.h" -#endif - -#include "basic.h" - -class wxDiagram: public wxObject -{ - DECLARE_DYNAMIC_CLASS(wxDiagram) - -public: - - wxDiagram(); - virtual ~wxDiagram(); - - void SetCanvas(wxShapeCanvas *can); - - inline wxShapeCanvas *GetCanvas() const { return m_diagramCanvas; } - - virtual void Redraw(wxDC& dc); - virtual void Clear(wxDC& dc); - virtual void DrawOutline(wxDC& dc, double x1, double y1, double x2, double y2); - - // Add object to end of object list (if addAfter is NULL) - // or just after addAfter. - virtual void AddShape(wxShape *object, wxShape *addAfter = NULL); - - // Add object to front of object list - virtual void InsertShape(wxShape *object); - - void SetSnapToGrid(bool snap); - void SetGridSpacing(double spacing); - inline double GetGridSpacing() const { return m_gridSpacing; } - inline bool GetSnapToGrid() const { return m_snapToGrid; } - void Snap(double *x, double *y); - - inline void SetQuickEditMode(bool qem) { m_quickEditMode = qem; } - inline bool GetQuickEditMode() const { return m_quickEditMode; } - - virtual void RemoveShape(wxShape *object); - virtual void RemoveAllShapes(); - virtual void DeleteAllShapes(); - virtual void ShowAll(bool show); - - // Find a shape by its id - wxShape* FindShape(long id) const; - - inline void SetMouseTolerance(int tol) { m_mouseTolerance = tol; } - inline int GetMouseTolerance() const { return m_mouseTolerance; } - inline wxList *GetShapeList() const { return m_shapeList; } - inline int GetCount() const { return m_shapeList->Number(); } - - // Make sure all text that should be centred, is centred. - void RecentreAll(wxDC& dc); - -#ifdef PROLOGIO - virtual bool SaveFile(const wxString& filename); - virtual bool LoadFile(const wxString& filename); - - virtual void ReadNodes(wxExprDatabase& database); - virtual void ReadLines(wxExprDatabase& database); - virtual void ReadContainerGeometry(wxExprDatabase& database); - - // Allow for modifying file - virtual bool OnDatabaseLoad(wxExprDatabase& db); - virtual bool OnDatabaseSave(wxExprDatabase& db); - virtual bool OnShapeSave(wxExprDatabase& db, wxShape& shape, wxExpr& expr); - virtual bool OnShapeLoad(wxExprDatabase& db, wxShape& shape, wxExpr& expr); - virtual bool OnHeaderSave(wxExprDatabase& db, wxExpr& expr); - virtual bool OnHeaderLoad(wxExprDatabase& db, wxExpr& expr); -#endif - -protected: - wxShapeCanvas* m_diagramCanvas; - bool m_quickEditMode; - bool m_snapToGrid; - double m_gridSpacing; - int m_mouseTolerance; - wxList* m_shapeList; -}; - -class wxLineCrossing: public wxObject -{ -public: - wxLineCrossing() { m_lineShape1 = NULL; m_lineShape2 = NULL; } - wxRealPoint m_pt1; // First line - wxRealPoint m_pt2; - wxRealPoint m_pt3; // Second line - wxRealPoint m_pt4; - wxRealPoint m_intersect; - wxLineShape* m_lineShape1; - wxLineShape* m_lineShape2; -}; - -class wxLineCrossings: public wxObject -{ -public: - wxLineCrossings(); - ~wxLineCrossings(); - - void FindCrossings(wxDiagram& diagram); - void DrawCrossings(wxDiagram& diagram, wxDC& dc); - void ClearCrossings(); - -public: - wxList m_crossings; -}; - -#endif - // _OGL_OGLDIAG_H_ diff --git a/utils/serialize/.cvsignore b/utils/serialize/.cvsignore deleted file mode 100644 index 4646a42c35..0000000000 --- a/utils/serialize/.cvsignore +++ /dev/null @@ -1,3 +0,0 @@ -Linux -linux-gnu -linux diff --git a/utils/serialize/Makefile b/utils/serialize/Makefile deleted file mode 100644 index 3f7a4dce0d..0000000000 --- a/utils/serialize/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../../setup/general/makedirs diff --git a/utils/serialize/Makefile.in b/utils/serialize/Makefile.in deleted file mode 100644 index 7a8beeebb6..0000000000 --- a/utils/serialize/Makefile.in +++ /dev/null @@ -1,48 +0,0 @@ -# WXXT base directory -WXBASEDIR=@WXBASEDIR@ - -# set the OS type for compilation -OS=@OS@ -# compile a library only -RULE=gslib - -# define common stuff - -# define library name -LIB_TARGET=wx_serial_gtk -LIB_MAJOR=2 -LIB_MINOR=0 -# define library sources -LIB_SRC=\ -sermain.cpp sercore.cpp sergdi.cpp serwnd.cpp serctrl.cpp serext.cpp -#define library objects -LIB_OBJ=\ -sermain.o sercore.o sergdi.o serwnd.o serctrl.o serext.o - -#additional things needed for compile - -# include the definitions now -include ../../../template.mak - -install:: - @echo "Installing library files and headers for libwx_serial_gtk.." - @echo " Creating directory.." - @$(WXBASEDIR)/mkinstalldirs /usr/local/include/wx_serial - @echo " Copying headers from /include/wx" - @cd $(WXBASEDIR)/utils/serialize ; \ - for f in *.h ; do \ - rm -f /usr/local/include/wx_serial/$$f ; \ - $(INSTALL_DATA) $$f /usr/local/include/wx_serial/$$f ; \ - done - @echo " Copying static library files to /usr/local/lib" - @cd $(WXBASEDIR)/lib/$(OS) ; \ - for f in libwx_serial_gtk.a ; do \ - rm -f /usr/local/lib/$$f ; \ - $(INSTALL_DATA) $$f /usr/local/lib/$$f ; \ - done - @echo " Copying shared libraries to /usr/local/lib" - @cd $(WXBASEDIR)/lib/$(OS) ; \ - for f in libwx_serial_gtk.so* ; do \ - rm -f /usr/local/lib/$$f ; \ - $(INSTALL_PROGRAM) $$f /usr/local/lib/$$f ; \ - done diff --git a/utils/serialize/makefile.b32 b/utils/serialize/makefile.b32 deleted file mode 100644 index 7016450076..0000000000 --- a/utils/serialize/makefile.b32 +++ /dev/null @@ -1,58 +0,0 @@ -# -# File: makefile.b32 -# Author: Patrick Halke, modified by Guilhem Lavaux -# Created: 1997 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile : Builds 32bit wxstring library for Windows 3.1 -# and Borland C++ 4.x - -WXDIR = $(WXWIN) - -!if "$(DLL)" == "1" -WXBUILDDLL=1 -WXUSINGDLL=1 -!endif - -!include $(WXDIR)\src\makeb32.env - -WXLIBDIR = $(WXDIR)\lib -LIBS=$(WXLIB) cw32 import32 ole2w32 - -!ifndef DEBUG -DEBUG=0 -!endif - -LIBTARGET= $(WXLIBDIR)\wxserial.dll -CPPFLAGS= $(CPPFLAGS) -Od - -.c.obj: - bcc32 $(CPPFLAGS) -P- -c {$< } - -OBJECTS = sermain.obj sercore.obj serwnd.obj serctrl.obj sergdi.obj serext.obj - -all: $(LIBTARGET) - -sermain.obj: sermain.$(SRCSUFF) - bcc32 $(CPPFLAGS) -P- -u- -c sermain.$(SRCSUFF) - -$(LIBTARGET): $(OBJECTS) - erase $(LIBTARGET) - tlink32 $(LINK_FLAGS) /v @&&! -c0d32.obj $(OBJECTS) -$(LIBTARGET) -nul -$(LIBS) -serial -! - -clean: - -erase *.obj - -erase $(LIBTARGET) - -erase *.exe - -erase *.res - -erase *.map - -erase *.rws diff --git a/utils/serialize/sercore.cpp b/utils/serialize/sercore.cpp deleted file mode 100644 index 0fffba7f5b..0000000000 --- a/utils/serialize/sercore.cpp +++ /dev/null @@ -1,107 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: sercore.cpp -// Purpose: Serialization: core classes -// Author: Guilhem Lavaux -// Modified by: -// Created: July 1998 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Guilhem Lavaux -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "sercore.h" -#endif -#include -#include -#include -#include -#include "sercore.h" - -IMPLEMENT_SERIAL_CLASS(wxList, wxObject) -IMPLEMENT_SERIAL_CLASS(wxHashTable, wxObject) - -void WXSERIAL(wxList)::StoreObject(wxObjectOutputStream& s) -{ - wxList *lst_object = (wxList *)Object(); - wxNode *node = lst_object->First(); - - if (s.FirstStage()) { - while (node) { - s.AddChild(node->Data()); - node = node->Next(); - } - return; - } - - wxDataOutputStream data_s(s); - - data_s.Write8(lst_object->destroy_data); - data_s.Write8(lst_object->key_type); - data_s.Write32( lst_object->Number() ); - - if (lst_object->key_type == wxKEY_INTEGER) { - while (node) { - data_s.Write32(node->key.integer); - node = node->Next(); - } - } else { - while (node) { - data_s.WriteString(node->key.string); - node = node->Next(); - } - } -} - -void WXSERIAL(wxList)::LoadObject(wxObjectInputStream& s) -{ - wxDataInputStream data_s(s); - wxList *list = (wxList *)Object(); - int number, i; - - list->DeleteContents( data_s.Read8() ); - list->key_type = data_s.Read8(); - number = data_s.Read32(); - - if (list->key_type == wxKEY_INTEGER) { - for (i=0;iAppend( data_s.Read32(), s.GetChild() ); - } else { - for (i=0;iAppend( data_s.ReadString(), s.GetChild() ); - } -} - -// ---------------------------------------------------------------------------- - -void WXSERIAL(wxHashTable)::StoreObject(wxObjectOutputStream& s) -{ - wxHashTable *table = (wxHashTable *)Object(); - int i; - - if (s.FirstStage()) { - for (i=0;in;i++) - s.AddChild(table->hash_table[i]); - return; - } - - wxDataOutputStream data_s(s); - - data_s.Write8(table->key_type); - data_s.Write32(table->n); -} - -void WXSERIAL(wxHashTable)::LoadObject(wxObjectInputStream& s) -{ - wxHashTable *table = (wxHashTable *)Object(); - wxDataInputStream data_s(s); - int i, key, n; - - key = data_s.Read8(); - n = data_s.Read32(); - - table->Create(key, n); - - for (i=0;ihash_table[i] = (wxList *)s.GetChild(); -} diff --git a/utils/serialize/sercore.h b/utils/serialize/sercore.h deleted file mode 100644 index 57651eab6d..0000000000 --- a/utils/serialize/sercore.h +++ /dev/null @@ -1,24 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: sercore.h -// Purpose: Serialization: core classes -// Author: Guilhem Lavaux -// Modified by: -// Created: July 1998 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Guilhem Lavaux -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifndef __SERCORE_H__ -#define __SERCORE_H__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include - -DECLARE_SERIAL_CLASS(wxList, wxObject) -DECLARE_SERIAL_CLASS(wxHashTable, wxObject) - -#endif diff --git a/utils/serialize/serctrl.cpp b/utils/serialize/serctrl.cpp deleted file mode 100644 index e9e0d56af4..0000000000 --- a/utils/serialize/serctrl.cpp +++ /dev/null @@ -1,478 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: serctrl.cpp -// Purpose: Serialization: control classes -// Author: Guilhem Lavaux -// Modified by: -// Created: July 1998 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Guilhem Lavaux -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "serctrl.h" -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "serwnd.h" -#include "serctrl.h" - -IMPLEMENT_ALIAS_SERIAL_CLASS(wxControl, wxWindow) -#ifdef __WINDOWS__ -IMPLEMENT_SERIAL_CLASS(wxSlider95, wxControl) -IMPLEMENT_SERIAL_CLASS(wxGauge95, wxControl) -#else -IMPLEMENT_SERIAL_CLASS(wxSlider, wxControl) -IMPLEMENT_SERIAL_CLASS(wxGauge, wxControl) -#endif -IMPLEMENT_SERIAL_CLASS(wxCheckBox, wxControl) -IMPLEMENT_SERIAL_CLASS(wxChoice, wxControl) -IMPLEMENT_SERIAL_CLASS(wxComboBox, wxControl) -IMPLEMENT_SERIAL_CLASS(wxListBox, wxControl) -IMPLEMENT_SERIAL_CLASS(wxNotebook, wxControl) -IMPLEMENT_SERIAL_CLASS(wxRadioBox, wxControl) -IMPLEMENT_SERIAL_CLASS(wxRadioButton, wxControl) -IMPLEMENT_SERIAL_CLASS(wxButton, wxControl) -IMPLEMENT_SERIAL_CLASS(wxStaticText, wxControl) -IMPLEMENT_SERIAL_CLASS(wxStaticBox, wxControl) - -//----------------------------------------------------------------------------- - -void WXSERIAL(wxButton)::StoreObject(wxObjectOutputStream& s) -{ - WXSERIAL(wxControl)::StoreObject(s); -} - -void WXSERIAL(wxButton)::LoadObject(wxObjectInputStream& s) -{ - WXSERIAL(wxControl)::LoadObject(s); - - if (s.SecondCall()) - return; - - wxButton *button = (wxButton *)Object(); - - printf("label = %s\n", WXSTRINGCAST m_label); - button->Create(m_parent, m_id, m_label, wxPoint(m_x, m_y), wxSize(m_w, m_h), - m_style, *m_validator, m_name); -} - -//----------------------------------------------------------------------------- - -void WXSERIAL(wxCheckBox)::StoreObject(wxObjectOutputStream& s) -{ - WXSERIAL(wxControl)::StoreObject(s); - - if (s.FirstStage()) - return; - - wxDataOutputStream data_s(s); - data_s.Write8( ((wxCheckBox *)Object())->GetValue() ); -} - -void WXSERIAL(wxCheckBox)::LoadObject(wxObjectInputStream& s) -{ - WXSERIAL(wxControl)::LoadObject(s); - - if (s.SecondCall()) - return; - - wxDataInputStream data_s(s); - wxCheckBox *chkbox = (wxCheckBox *)Object(); - - chkbox->Create(m_parent, m_id, m_label, wxPoint(m_x, m_y), wxSize(m_w, m_h), - m_style, *m_validator, m_name); - - chkbox->SetValue(data_s.Read8()); -} - -//----------------------------------------------------------------------------- - -#ifdef __WXMSW__ -void WXSERIAL(wxSlider95)::StoreObject(wxObjectOutputStream& s) -#else -void WXSERIAL(wxSlider)::StoreObject(wxObjectOutputStream& s) -#endif -{ - WXSERIAL(wxControl)::StoreObject(s); - - if (s.FirstStage()) - return; - - wxDataOutputStream data_s(s); - wxSlider *slider = (wxSlider *)Object(); - - data_s.Write32( slider->GetMin() ); - data_s.Write32( slider->GetMax() ); - data_s.Write32( slider->GetValue() ); - data_s.Write32( slider->GetTickFreq() ); - data_s.Write32( slider->GetPageSize() ); - data_s.Write32( slider->GetLineSize() ); - data_s.Write32( slider->GetSelStart() ); - data_s.Write32( slider->GetSelEnd() ); - data_s.Write32( slider->GetThumbLength() ); -} - -#ifdef __WXMSW__ -void WXSERIAL(wxSlider95)::LoadObject(wxObjectInputStream& s) -#else -void WXSERIAL(wxSlider)::LoadObject(wxObjectInputStream& s) -#endif -{ - WXSERIAL(wxControl)::LoadObject(s); - - if (s.SecondCall()) - return; - - wxDataInputStream data_s(s); - wxSlider *slider = (wxSlider *)Object(); - int value, min, max; - - min = data_s.Read32(); - max = data_s.Read32(); - value = data_s.Read32(); - - slider->Create(m_parent, m_id, value, min, max, wxPoint(m_x, m_y), - wxSize(m_w, m_h), m_style, *m_validator, m_name); - - slider->SetTickFreq( 0, data_s.Read32() ); - slider->SetPageSize( data_s.Read32() ); - slider->SetLineSize( data_s.Read32() ); - min = data_s.Read32(); - max = data_s.Read32(); - slider->SetSelection(min, max); - slider->SetThumbLength( data_s.Read32() ); -} - -//----------------------------------------------------------------------------- - -#ifdef __WXMSW__ -void WXSERIAL(wxGauge95)::StoreObject(wxObjectOutputStream& s) -#else -void WXSERIAL(wxGauge)::StoreObject(wxObjectOutputStream& s) -#endif -{ - WXSERIAL(wxControl)::StoreObject(s); - - if (s.FirstStage()) - return; - - wxDataOutputStream data_s(s); - wxGauge *gauge = (wxGauge *)Object(); - - data_s.Write32( gauge->GetRange() ); - data_s.Write8( gauge->GetShadowWidth() ); - data_s.Write8( gauge->GetBezelFace() ); - data_s.Write32( gauge->GetValue() ); -} - -#ifdef __WXMSW__ -void WXSERIAL(wxGauge95)::LoadObject(wxObjectInputStream& s) -#else -void WXSERIAL(wxGauge)::LoadObject(wxObjectInputStream& s) -#endif -{ - WXSERIAL(wxControl)::LoadObject(s); - - if (s.SecondCall()) - return; - - wxDataInputStream data_s(s); - wxGauge *gauge = (wxGauge *)Object(); - int range; - - range = data_s.Read32(); - gauge->Create(m_parent, m_id, range, wxPoint(m_x, m_y), wxSize(m_w, m_h), - m_style, *m_validator, m_name); - - gauge->SetShadowWidth( data_s.Read8() ); - gauge->SetBezelFace( data_s.Read8() ); - gauge->SetValue( data_s.Read32() ); -} - -//----------------------------------------------------------------------------- - -void WXSERIAL(wxChoice)::StoreObject(wxObjectOutputStream& s) -{ - WXSERIAL(wxControl)::StoreObject(s); - - if (s.FirstStage()) - return; - - wxDataOutputStream data_s(s); - wxChoice *choice = (wxChoice *)Object(); - int i, num = choice->Number(); - - data_s.Write32(num); - for (i=0;iGetString(i) ); -} - -void WXSERIAL(wxChoice)::LoadObject(wxObjectInputStream& s) -{ - WXSERIAL(wxControl)::LoadObject(s); - - if (s.SecondCall()) - return; - - wxDataInputStream data_s(s); - wxChoice *choice = (wxChoice *)Object(); - int i,num = data_s.Read32(); - - choice->Create(m_parent, m_id, wxPoint(m_x, m_y), wxSize(m_w, m_h), 0, NULL, - m_style, *m_validator, m_name); - - for (i=0;iAppend( data_s.ReadString() ); -} - -//----------------------------------------------------------------------------- - -void WXSERIAL(wxListBox)::StoreObject(wxObjectOutputStream& s) -{ - WXSERIAL(wxControl)::StoreObject(s); - - if (s.FirstStage()) - return; - - wxDataOutputStream data_s(s); - wxListBox *listbox = (wxListBox *)Object(); - int i, num = listbox->Number(); - - data_s.Write32(num); - for (i=0;iGetString(i) ); -} - -void WXSERIAL(wxListBox)::LoadObject(wxObjectInputStream& s) -{ - WXSERIAL(wxListBox)::LoadObject(s); - - if (s.SecondCall()) - return; - - wxDataInputStream data_s(s); - wxListBox *listbox = (wxListBox *)Object(); - int i, num = data_s.Read32(); - - for (i=0;iAppend( data_s.ReadString() ); -} - -//----------------------------------------------------------------------------- - -void WXSERIAL(wxNotebook)::StoreObject(wxObjectOutputStream& s) -{ - wxNotebook *notebook = (wxNotebook *)Object(); - wxImageList *imaglist = notebook->GetImageList(); - int i, pcount = notebook->GetPageCount(); - - WXSERIAL(wxControl)::StoreObject(s); - if (s.FirstStage()) { - s.AddChild(imaglist); - return; - } - - wxDataOutputStream data_s(s); - - data_s.Write8( pcount ); - - for (i=0;iGetPageText(i) ); -} - -void WXSERIAL(wxNotebook)::LoadObject(wxObjectInputStream& s) -{ - wxNotebook *notebook = (wxNotebook *)Object(); - int i; - wxImageList *imaglist; - - WXSERIAL(wxControl)::LoadObject(s); - - if (s.SecondCall()) { - for (i=0;iAddPage( (wxWindow *)s.GetChild(), m_stringlist[i] ); - return; - } - - imaglist = (wxImageList *)s.GetChild(); - - notebook->Create(m_parent, m_id, wxPoint(m_x, m_y), wxSize(m_w, m_h), - m_style, m_name); - - wxDataInputStream data_s(s); - - m_pcount = data_s.Read8(); - for (i=0;iNumber(); - - data_s.Write8( n_items ); - data_s.Write8( box->GetNumberOfRowsOrCols() ); - - for (i=0;iGetString(i) ); -} - -void WXSERIAL(wxRadioBox)::LoadObject(wxObjectInputStream& s) -{ - wxRadioBox *box = (wxRadioBox *)Object(); - - WXSERIAL(wxControl)::LoadObject(s); - - if (s.SecondCall()) - return; - - wxDataInputStream data_s(s); - int i, n_rows_cols, n_items; - wxString *items; - - n_items = data_s.Read8(); - n_rows_cols = data_s.Read8(); - - items = new wxString[n_items]; - for (i=0;iCreate(m_parent, m_id, m_title, wxPoint(m_x, m_y), wxSize(m_w, m_h), - n_items, items, 0, m_style, *m_validator, m_name); -} - -//----------------------------------------------------------------------------- - -void WXSERIAL(wxRadioButton)::StoreObject(wxObjectOutputStream& s) -{ - WXSERIAL(wxControl)::StoreObject(s); - - if (s.FirstStage()) - return; - - wxDataOutputStream data_s(s); - data_s.Write8( (char) ((wxRadioButton *)Object())->GetValue() ); -} - -void WXSERIAL(wxRadioButton)::LoadObject(wxObjectInputStream& s) -{ - wxDataInputStream data_s(s); - - WXSERIAL(wxControl)::LoadObject(s); - - if (s.SecondCall()) - return; - - ((wxRadioButton *)Object())->SetValue( (bool)data_s.Read8() ); -} - -//----------------------------------------------------------------------------- - -void WXSERIAL(wxComboBox)::StoreObject(wxObjectOutputStream& s) -{ - WXSERIAL(wxControl)::StoreObject(s); - - if (s.FirstStage()) - return; - - wxDataOutputStream data_s(s); - wxComboBox *box = (wxComboBox *)Object(); - int i, num = box->Number(); - - data_s.Write8( num ); - data_s.Write8( box->GetSelection() ); - for (i=0;iGetString(i) ); - - data_s.WriteString( box->GetValue() ); - - // TODO: Editable flag -} - -void WXSERIAL(wxComboBox)::LoadObject(wxObjectInputStream& s) -{ - WXSERIAL(wxControl)::LoadObject(s); - - if (s.SecondCall()) - return; - - wxDataInputStream data_s(s); - wxComboBox *box = (wxComboBox *)Object(); - int i, num, selection; - - box->Create(m_parent, m_id, wxEmptyString, wxPoint(m_x, m_y), wxSize(m_w, m_h), - 0, NULL, m_style, *m_validator, m_name); - - num = data_s.Read8(); - selection = data_s.Read8(); - - for (i=0;iAppend( data_s.ReadString() ); - - box->SetSelection( selection ); - box->SetValue( data_s.ReadString() ); -} - -//----------------------------------------------------------------------------- - -void WXSERIAL(wxStaticText)::StoreObject(wxObjectOutputStream& s) -{ - WXSERIAL(wxControl)::StoreObject(s); -} - -void WXSERIAL(wxStaticText)::LoadObject(wxObjectInputStream& s) -{ - WXSERIAL(wxControl)::LoadObject(s); - - if (s.SecondCall()) - return; - - ((wxStaticText *)Object())->Create(m_parent, m_id, m_label, wxPoint(m_x, m_y), - wxSize(m_w, m_h), m_style, m_name); -} - -//----------------------------------------------------------------------------- - -void WXSERIAL(wxStaticBox)::StoreObject(wxObjectOutputStream& s) -{ - WXSERIAL(wxControl)::StoreObject(s); -} - -void WXSERIAL(wxStaticBox)::LoadObject(wxObjectInputStream& s) -{ - WXSERIAL(wxControl)::LoadObject(s); - - if (s.SecondCall()) - return; - - ((wxStaticBox *)Object())->Create(m_parent, m_id, m_label, wxPoint(m_x, m_y), - wxSize(m_w, m_h), m_style, m_name); -} diff --git a/utils/serialize/serctrl.h b/utils/serialize/serctrl.h deleted file mode 100644 index 8d7e89a8ff..0000000000 --- a/utils/serialize/serctrl.h +++ /dev/null @@ -1,52 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: serctrl.h -// Purpose: Serialization: control classes -// Author: Guilhem Lavaux -// Modified by: -// Created: July 1998 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Guilhem Lavaux -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifndef __SERCTRL_H__ -#define __SERCTRL_H__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include -#include "serwnd.h" - -DECLARE_ALIAS_SERIAL_CLASS(wxControl, wxWindow) -DECLARE_SERIAL_CLASS(wxButton, wxControl) -#ifdef __WINDOWS__ -DECLARE_SERIAL_CLASS(wxSlider95, wxControl) -DECLARE_SERIAL_CLASS(wxGauge95, wxControl) -#else -DECLARE_SERIAL_CLASS(wxSlider, wxControl) -DECLARE_SERIAL_CLASS(wxGauge, wxControl) -#endif -DECLARE_SERIAL_CLASS(wxCheckBox, wxControl) -DECLARE_SERIAL_CLASS(wxChoice, wxControl) -DECLARE_SERIAL_CLASS(wxComboBox, wxControl) -DECLARE_SERIAL_CLASS(wxListBox, wxControl) -DECLARE_SERIAL_CLASS(wxRadioBox, wxControl) -DECLARE_SERIAL_CLASS(wxRadioButton, wxControl) -DECLARE_SERIAL_CLASS(wxStaticText, wxControl) -DECLARE_SERIAL_CLASS(wxStaticBox, wxControl) - - -class WXSERIAL(wxNotebook) : public WXSERIAL(wxControl) { - DECLARE_DYNAMIC_CLASS( wxNotebook_Serialize ) -public: - void StoreObject(wxObjectOutputStream& s); - void LoadObject(wxObjectInputStream& s); - -protected: - int m_pcount; - wxArrayString m_stringlist; -}; - -#endif diff --git a/utils/serialize/serext.cpp b/utils/serialize/serext.cpp deleted file mode 100644 index aaddb4066a..0000000000 --- a/utils/serialize/serext.cpp +++ /dev/null @@ -1,137 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: serext.cpp -// Purpose: Serialization: Other classes -// Author: Guilhem Lavaux -// Modified by: -// Created: July 1998 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Guilhem Lavaux -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "serext.h" -#endif - -#include "serext.h" -#include -#include -#include -#include -#include - -IMPLEMENT_SERIAL_CLASS(wxSplitterWindow, wxWindow) -IMPLEMENT_SERIAL_CLASS(wxGridCell, wxObject) -IMPLEMENT_SERIAL_CLASS(wxGrid, wxPanel) - -void WXSERIAL(wxSplitterWindow)::StoreObject(wxObjectOutputStream& s) -{ - wxSplitterWindow *splitter = (wxSplitterWindow *)Object(); - WXSERIAL(wxWindow)::StoreObject(s); - - if (s.FirstStage()) { - s.AddChild( splitter->GetWindow1() ); - s.AddChild( splitter->GetWindow2() ); - return; - } - - wxDataOutputStream data_s(s); - data_s.Write8( splitter->GetSplitMode() ); - data_s.Write32( splitter->GetSashSize() ); - data_s.Write8( splitter->GetBorderSize() ); - data_s.Write32( splitter->GetSashPosition() ); - data_s.Write32( splitter->GetMinimumPaneSize() ); -} - -void WXSERIAL(wxSplitterWindow)::LoadObject(wxObjectInputStream& s) -{ - wxSplitterWindow *splitter = (wxSplitterWindow *)Object(); - WXSERIAL(wxWindow)::LoadObject(s); - - wxDataInputStream data_s(s); - int split_mode, sash_size, border_size, sash_position, min_pane_size; - - split_mode = data_s.Read8(); - sash_size = data_s.Read32(); - border_size = data_s.Read8(); - sash_position = data_s.Read32(); - min_pane_size = data_s.Read32(); - - splitter->Create(m_parent, m_id, wxPoint(m_x, m_y), wxSize(m_w, m_h), m_style, - m_name); - - if (s.GetChild(1)) { - if (data_s.Read8() == wxSPLIT_VERTICAL) - splitter->SplitVertically((wxWindow *)s.GetChild(0), - (wxWindow *)s.GetChild(1), sash_position); - else - splitter->SplitHorizontally((wxWindow *)s.GetChild(0), - (wxWindow *)s.GetChild(1), sash_position); - } - - splitter->SetSashSize(sash_size); - splitter->SetBorderSize(border_size); - splitter->SetMinimumPaneSize(min_pane_size); -} - -void WXSERIAL(wxGridCell)::StoreObject(wxObjectOutputStream& s) -{ - wxGridCell *cell = (wxGridCell *)Object(); - wxDataOutputStream data_s(s); - - if (s.FirstStage()) { - s.AddChild( cell->GetFont() ); - s.AddChild( cell->GetBackgroundBrush() ); - s.AddChild( cell->GetCellBitmap() ); - s.AddChild( &(cell->GetTextColour()) ); - s.AddChild( &(cell->GetBackgroundColour()) ); - return; - } - - data_s.WriteString( cell->GetTextValue() ); - data_s.Write16( cell->GetAlignment() ); -} - -void WXSERIAL(wxGridCell)::LoadObject(wxObjectInputStream& s) -{ - wxGridCell *cell = (wxGridCell *)Object(); - wxDataInputStream data_s(s); - - cell->SetTextValue( data_s.ReadString() ); - cell->SetAlignment( data_s.Read16() ); - cell->SetFont( (wxFont *)s.GetChild() ); - cell->SetBackgroundBrush( (wxBrush *)s.GetChild() ); - cell->SetCellBitmap( (wxBitmap *)s.GetChild() ); - cell->SetTextColour( *((wxColour *)s.GetChild()) ); - cell->SetBackgroundColour( *((wxColour *)s.GetChild()) ); -} - -void WXSERIAL(wxGrid)::StoreObject(wxObjectOutputStream& s) -{ - wxDataOutputStream data_s(s); - wxGrid *grid = (wxGrid *)Object(); - int n_rows = grid->GetRows(), n_cols = grid->GetCols(); - int r, c; - - if (s.FirstStage()) { - for (r=0;rGetCell(r, c) ); - - s.AddChild( grid->GetDividerPen() ); - WXSERIAL(wxPanel)::StoreObject(s); - return; - } - - data_s.Write16( n_rows ); - data_s.Write16( n_cols ); - data_s.Write16( grid->GetCursorRow() ); - data_s.Write16( grid->GetCursorColumn() ); - - WXSERIAL(wxPanel)::StoreObject(s); -} - -void WXSERIAL(wxGrid)::LoadObject(wxObjectInputStream& s) -{ - WXSERIAL(wxPanel)::LoadObject(s); -} diff --git a/utils/serialize/serext.h b/utils/serialize/serext.h deleted file mode 100644 index 540bb998b5..0000000000 --- a/utils/serialize/serext.h +++ /dev/null @@ -1,26 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: serext.cpp -// Purpose: Serialization: Other classes -// Author: Guilhem Lavaux -// Modified by: -// Created: July 1998 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Guilhem Lavaux -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifndef __SEREXT_H__ -#define __SEREXT_H__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include -#include "serwnd.h" - -DECLARE_SERIAL_CLASS(wxSplitterWindow, wxWindow) -DECLARE_SERIAL_CLASS(wxGrid, wxPanel) -DECLARE_SERIAL_CLASS(wxGridCell, wxObject) - -#endif diff --git a/utils/serialize/sergdi.cpp b/utils/serialize/sergdi.cpp deleted file mode 100644 index e413a4627b..0000000000 --- a/utils/serialize/sergdi.cpp +++ /dev/null @@ -1,334 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: sergdi.cpp -// Purpose: Serialization: GDI classes -// Author: Guilhem Lavaux -// Modified by: -// Created: July 1998 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Guilhem Lavaux -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "sergdi.h" -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "sergdi.h" - -IMPLEMENT_SERIAL_CLASS(wxBitmap, wxObject) -IMPLEMENT_SERIAL_CLASS(wxGDIObject, wxObject) -IMPLEMENT_SERIAL_CLASS(wxRegion, wxGDIObject) -IMPLEMENT_SERIAL_CLASS(wxColour, wxObject) -IMPLEMENT_SERIAL_CLASS(wxFont, wxGDIObject) -IMPLEMENT_SERIAL_CLASS(wxPen, wxGDIObject) -IMPLEMENT_SERIAL_CLASS(wxBrush, wxGDIObject) -IMPLEMENT_SERIAL_CLASS(wxImageList, wxObject) - -IMPLEMENT_ALIAS_SERIAL_CLASS(wxPenList, wxList) -IMPLEMENT_ALIAS_SERIAL_CLASS(wxBrushList, wxList) -IMPLEMENT_ALIAS_SERIAL_CLASS(wxFontList, wxList) -IMPLEMENT_ALIAS_SERIAL_CLASS(wxColourDatabase, wxList) -IMPLEMENT_ALIAS_SERIAL_CLASS(wxBitmapList, wxList) - -// ---------------------------------------------------------------------------- - -void WXSERIAL(wxBitmap)::StoreObject(wxObjectOutputStream& s) -{ - // TODO - // I implemented a basic image saving (maybe I'll need to improve wxWin API). - - int x, y, w, h; - wxDataOutputStream data_s(s); - wxBitmap *bitmap = (wxBitmap *)Object(); - wxColour col; - wxMemoryDC dc; - - w = bitmap->GetWidth(); - h = bitmap->GetHeight(); - - if (s.FirstStage()) { - s.AddChild(bitmap->GetMask()); - } - - dc.SelectObject(*bitmap); - - data_s.Write16(w); - data_s.Write16(h); - for (y=0;ySetWidth(w); - bitmap->SetHeight(h); - dc.SelectObject(*bitmap); - - for (y=0;yGetVisible(); - - wxDataOutputStream data_s(s); - data_s.Write8(visible); -} - -void WXSERIAL(wxGDIObject)::LoadObject(wxObjectInputStream& s) -{ - wxDataInputStream data_s(s); - - ((wxGDIObject *)Object())->SetVisible( data_s.Read8() ); -} - -// ---------------------------------------------------------------------------- - -void WXSERIAL(wxRegion)::StoreObject(wxObjectOutputStream& s) -{ - WXSERIAL(wxGDIObject)::StoreObject(s); - - if (s.FirstStage()) - return; - - wxDataOutputStream data_s(s); - wxRect rect = ((wxRegion *)Object())->GetBox(); - - data_s.Write16( rect.GetX() ); - data_s.Write16( rect.GetY() ); - data_s.Write16( rect.GetWidth() ); - data_s.Write16( rect.GetHeight() ); -} - -void WXSERIAL(wxRegion)::LoadObject(wxObjectInputStream& s) -{ - WXSERIAL(wxGDIObject)::LoadObject(s); - - wxDataInputStream data_s(s); - wxRegion *region = (wxRegion *)Object(); - wxRect rect; - - rect.SetX( data_s.Read16() ); - rect.SetY( data_s.Read16() ); - rect.SetWidth( data_s.Read16() ); - rect.SetHeight( data_s.Read16() ); - - *region = wxRegion(rect); -} - -// ---------------------------------------------------------------------------- - -void WXSERIAL(wxColour)::StoreObject(wxObjectOutputStream& s) -{ - if (s.FirstStage()) - return; - - wxDataOutputStream data_s(s); - wxColour *colour = (wxColour *)Object(); - - if (!colour->Ok()) { - data_s.Write8(0); - data_s.Write8(0); - data_s.Write8(0); - wxLogDebug("wxColour (0x%x) isn't ready.\n", colour); - return; - } - - data_s.Write8(colour->Red()); - data_s.Write8(colour->Green()); - data_s.Write8(colour->Blue()); -} - -void WXSERIAL(wxColour)::LoadObject(wxObjectInputStream& s) -{ - wxDataInputStream data_s(s); - wxColour *colour = (wxColour *)Object(); - int r, g, b; - - r = data_s.Read8(); - g = data_s.Read8(); - b = data_s.Read8(); - - colour->Set(r, g, b); -} - -// ---------------------------------------------------------------------------- - -void WXSERIAL(wxPen)::StoreObject(wxObjectOutputStream& s) -{ - wxPen *pen = (wxPen *)Object(); - WXSERIAL(wxGDIObject)::StoreObject(s); - - if (s.FirstStage()) { - s.AddChild(& (pen->GetColour()) ); - return; - } - - wxDataOutputStream data_s(s); - - data_s.Write8( pen->GetCap() ); - data_s.Write8( pen->GetJoin() ); - data_s.Write8( pen->GetStyle() ); - data_s.Write8( pen->GetWidth() ); -} - -void WXSERIAL(wxPen)::LoadObject(wxObjectInputStream& s) -{ - wxPen *pen = (wxPen *)Object(); - wxColour *col = (wxColour *) s.GetChild(); - - WXSERIAL(wxGDIObject)::LoadObject(s); - - wxDataInputStream data_s(s); - - pen->SetColour(*col); - pen->SetCap( data_s.Read8() ); - pen->SetJoin( data_s.Read8() ); - pen->SetStyle( data_s.Read8() ); - pen->SetWidth( data_s.Read8() ); -} - -// ---------------------------------------------------------------------------- -void WXSERIAL(wxBrush)::StoreObject(wxObjectOutputStream& s) -{ - wxBrush *brush = (wxBrush *)Object(); - WXSERIAL(wxGDIObject)::StoreObject(s); - - if (s.FirstStage()) { - s.AddChild( &(brush->GetColour()) ); - s.AddChild( brush->GetStipple() ); - return; - } - - wxDataOutputStream data_s(s); - data_s.Write8( brush->GetStyle() ); -} - -void WXSERIAL(wxBrush)::LoadObject(wxObjectInputStream& s) -{ - wxBrush *brush = (wxBrush *)Object(); - wxColour *col = (wxColour *)s.GetChild(); - wxBitmap *bmap = (wxBitmap *)s.GetChild(); - - WXSERIAL(wxGDIObject)::LoadObject(s); - - wxDataInputStream data_s(s); - if (bmap) - *brush = wxBrush(*col, data_s.Read8()); - else - *brush = wxBrush(bmap); -} - -// ---------------------------------------------------------------------------- -void WXSERIAL(wxFont)::StoreObject(wxObjectOutputStream& s) -{ - wxFont *font = (wxFont *)Object(); - - WXSERIAL(wxGDIObject)::StoreObject(s); - - if (s.FirstStage()) - return; - - wxDataOutputStream data_s(s); - - data_s.Write8( font->GetPointSize() ); - data_s.WriteString( font->GetFaceName() ); - data_s.Write8( font->GetFamily() ); - data_s.Write8( font->GetStyle() ); - data_s.Write8( font->GetWeight() ); - data_s.Write8( font->GetUnderlined() ); -} - -void WXSERIAL(wxFont)::LoadObject(wxObjectInputStream& s) -{ - wxFont *font = (wxFont *)Object(); - - WXSERIAL(wxGDIObject)::LoadObject(s); - - wxDataInputStream data_s(s); - int psize, family, style, weight; - bool underlined; - wxString face_name; - - psize = data_s.Read8(); - face_name = data_s.ReadString(); - family = data_s.Read8(); - style = data_s.Read8(); - weight = data_s.Read8(); - underlined = data_s.Read8(); - - *font = wxFont(psize, face_name, family, style, weight, underlined); -} - -// ---------------------------------------------------------------------------- - -void WXSERIAL(wxImageList)::StoreObject(wxObjectOutputStream& s) -{ - wxImageList *list = (wxImageList *)Object(); - int i; - - if (s.FirstStage()) { -#ifdef __WXGTK__ - for (i=0;iGetImageCount();i++) - s.AddChild(list->GetBitmap(i)); -#endif - } - - wxDataOutputStream data_s(s); - - data_s.Write32(list->GetImageCount()); -} - -void WXSERIAL(wxImageList)::LoadObject(wxObjectInputStream& s) -{ - int i, count; - wxImageList *list = (wxImageList *)Object(); - wxDataInputStream data_s(s); - - count = data_s.Read32(); - for (i=0;iAdd(*((wxBitmap *)s.GetChild())); -} diff --git a/utils/serialize/sergdi.h b/utils/serialize/sergdi.h deleted file mode 100644 index 3a8d3d4b58..0000000000 --- a/utils/serialize/sergdi.h +++ /dev/null @@ -1,37 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: sergdi.h -// Purpose: Serialization: GDI classes -// Author: Guilhem Lavaux -// Modified by: -// Created: July 1998 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Guilhem Lavaux -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifndef __SERGDI_H__ -#define __SERGDI_H__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include -#include "sercore.h" - -DECLARE_SERIAL_CLASS(wxBitmap, wxObject) -DECLARE_SERIAL_CLASS(wxGDIObject, wxObject) -DECLARE_SERIAL_CLASS(wxRegion, wxGDIObject) -DECLARE_SERIAL_CLASS(wxColour, wxObject) -DECLARE_SERIAL_CLASS(wxFont, wxGDIObject) -DECLARE_SERIAL_CLASS(wxPen, wxGDIObject) -DECLARE_SERIAL_CLASS(wxBrush, wxGDIObject) -DECLARE_SERIAL_CLASS(wxImageList, wxObject) - -DECLARE_ALIAS_SERIAL_CLASS(wxPenList, wxList) -DECLARE_ALIAS_SERIAL_CLASS(wxBrushList, wxList) -DECLARE_ALIAS_SERIAL_CLASS(wxFontList, wxList) -DECLARE_ALIAS_SERIAL_CLASS(wxColourDatabase, wxList) -DECLARE_ALIAS_SERIAL_CLASS(wxBitmapList, wxList) - -#endif diff --git a/utils/serialize/sermain.cpp b/utils/serialize/sermain.cpp deleted file mode 100644 index 2983a8c495..0000000000 --- a/utils/serialize/sermain.cpp +++ /dev/null @@ -1,27 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: sermain.cpp -// Purpose: Serialization: main -// Author: Guilhem Lavaux -// Modified by: -// Created: July 1998 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Guilhem Lavaux -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "serbase.h" -#endif - -#include -#include - -#include "sercore.h" -#include "serwnd.h" -#include "sergdi.h" -#include "serctrl.h" -#include "serext.h" - -IMPLEMENT_DYNAMIC_CLASS(wxObject_Serialize, wxObject) - -WXDLL_ENTRY_FUNCTION() diff --git a/utils/serialize/serwnd.cpp b/utils/serialize/serwnd.cpp deleted file mode 100644 index a7790942cc..0000000000 --- a/utils/serialize/serwnd.cpp +++ /dev/null @@ -1,498 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: serwnd.cpp -// Purpose: Serialization: wxWindow classes -// Author: Guilhem Lavaux -// Modified by: -// Created: July 1998 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Guilhem Lavaux -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "serwnd.h" -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "wx/log.h" -#include "serwnd.h" - - -IMPLEMENT_SERIAL_CLASS(wxWindow, wxObject) -IMPLEMENT_SERIAL_CLASS(wxIndividualLayoutConstraint, wxObject) -IMPLEMENT_SERIAL_CLASS(wxLayoutConstraints, wxObject) -IMPLEMENT_ALIAS_SERIAL_CLASS(wxValidator, wxObject) -IMPLEMENT_SERIAL_CLASS(wxFrame, wxWindow) -IMPLEMENT_SERIAL_CLASS(wxPanel, wxWindow) -IMPLEMENT_SERIAL_CLASS(wxDialog, wxWindow) -IMPLEMENT_SERIAL_CLASS(wxMenuBar, wxWindow) -IMPLEMENT_SERIAL_CLASS(wxMenuItem, wxObject) -IMPLEMENT_SERIAL_CLASS(wxMenu, wxObject) - -IMPLEMENT_SERIAL_CLASS(wxMDIParentFrame, wxFrame) -IMPLEMENT_SERIAL_CLASS(wxMDIChildFrame, wxFrame) -IMPLEMENT_SERIAL_CLASS(wxMDIClientWindow, wxWindow) - -///////////////////////////////////////////////////////////////////////////// - -void WXSERIAL(wxWindow)::StoreObject(wxObjectOutputStream& s) -{ - wxWindow *win_object = (wxWindow *)Object(); - - if (s.FirstStage()) { - wxNode *node = win_object->GetChildren()->First(); - - s.AddChild(win_object->GetConstraints()); - s.AddChild(win_object->GetValidator()); - - // BAD HACK, but I don't have access to the internal variable of wxWindow. - m_bg_colour = win_object->GetBackgroundColour(); - m_fg_colour = win_object->GetForegroundColour(); - s.AddChild(&m_bg_colour); - s.AddChild(&m_fg_colour); - s.AddChild(win_object->GetFont()); - while (node) { - s.AddChild(node->Data()); - node = node->Next(); - } - return; - } - - wxDataOutputStream data(s); - int x,y,w,h; - - data.WriteString( win_object->GetName() ); - data.WriteString( win_object->GetLabel() ); - data.WriteString( win_object->GetTitle() ); - - data.Write8( win_object->GetAutoLayout() ); - data.Write8( win_object->IsShown() ); - data.Write32( win_object->GetWindowStyleFlag() ); - data.Write32( win_object->GetId() ); - wxLogDebug( "Number = %d", win_object->GetChildren()->Number() ); - data.Write8( win_object->GetChildren()->Number() ); - - win_object->GetSize(&w, &h); - win_object->GetPosition(&x, &y); - data.Write16(x); - data.Write16(y); - data.Write16(w); - data.Write16(h); -} - -void WXSERIAL(wxWindow)::LoadObject(wxObjectInputStream& s) -{ - wxDataInputStream data_s(s); - wxWindow *win_object = (wxWindow *)Object(); - wxColour *colour; - wxFont *font; - - if (s.SecondCall()) { - /* I assume we will never create raw wxWindow object */ - (void)s.GetChild(); // We pass wxLayoutConstraints. - (void)s.GetChild(); // We pass wxValidator. - - colour = (wxColour *)s.GetChild(); - if (colour) - win_object->SetBackgroundColour(*colour); - colour = (wxColour *)s.GetChild(); - if (colour) - win_object->SetForegroundColour(*colour); - font = (wxFont *)s.GetChild(); - if (font) - win_object->SetFont(*font); - s.RemoveChildren(m_number); - return; - } - - m_parent = (wxWindow *)s.GetParent(); - - m_name = data_s.ReadString(); - m_label = data_s.ReadString(); - m_title = data_s.ReadString(); - - m_auto_layout = data_s.Read8(); - m_shown = data_s.Read8(); - m_style = data_s.Read32(); - m_id = data_s.Read32(); - m_number = data_s.Read8(); - - m_x = data_s.Read16(); - m_y = data_s.Read16(); - m_w = data_s.Read16(); - m_h = data_s.Read16(); - - (void)s.GetChild(); // We pass wxLayoutConstraints. - - m_validator = (wxValidator *)s.GetChild(); - if (!m_validator) - m_validator = (wxValidator *)&wxDefaultValidator; - - s.RemoveChildren(m_number+3); - - s.Recall(); - - return; -} - -///////////////////////////////////////////////////////////////////////////// - -void WXSERIAL(wxIndividualLayoutConstraint)::StoreObject - (wxObjectOutputStream& s) -{ - wxIndividualLayoutConstraint *lay_object = - (wxIndividualLayoutConstraint *)Object(); - if (s.FirstStage()) - return; - - wxDataOutputStream data_s(s); - - data_s.WriteString(s.GetObjectName(lay_object->GetOtherWindow())); - data_s.Write8(lay_object->GetMyEdge()); - data_s.Write8(lay_object->GetRelationship()); - data_s.Write16(lay_object->GetMargin()); - data_s.Write16(lay_object->GetValue()); - data_s.Write8(lay_object->GetPercent()); - data_s.Write8(lay_object->GetOtherEdge()); -} - -void WXSERIAL(wxIndividualLayoutConstraint):: - LoadObject(wxObjectInputStream& s) -{ - wxIndividualLayoutConstraint *lay_object = - (wxIndividualLayoutConstraint *)Object(); - wxDataInputStream data_s(s); - wxString win_name; - - win_name = data_s.ReadString(); - lay_object->otherWin = (wxWindow *)s.SolveName(win_name); - lay_object->myEdge = (wxEdge)data_s.Read8(); - lay_object->relationship = (wxRelationship)data_s.Read8(); - lay_object->margin = data_s.Read16(); - lay_object->value = data_s.Read16(); - lay_object->percent = data_s.Read8(); - lay_object->otherEdge = (wxEdge)data_s.Read8(); -} - -///////////////////////////////////////////////////////////////////////////// - -void WXSERIAL(wxLayoutConstraints)::StoreObject(wxObjectOutputStream& s) -{ - wxLayoutConstraints *lay_object = (wxLayoutConstraints *)Object(); - WXSERIAL(wxIndividualLayoutConstraint) c; - -#define STORE(obj) c.SetObject(&(lay_object->obj)); c.StoreObject(s); - - // I simplify the process for this object - STORE(left); - STORE(right); - STORE(bottom); - STORE(top); - - STORE(width); - STORE(height); - - STORE(centreX); - STORE(centreY); - -#undef STORE -} - -void WXSERIAL(wxLayoutConstraints)::LoadObject(wxObjectInputStream& s) -{ - wxLayoutConstraints *lay_object = (wxLayoutConstraints *)Object(); - WXSERIAL(wxIndividualLayoutConstraint) c; - -#define LOAD(obj) c.SetObject(&(lay_object->obj)); c.LoadObject(s); - - // I simplify the process for this object - LOAD(left); - LOAD(right); - LOAD(bottom); - LOAD(top); - - LOAD(width); - LOAD(height); - - LOAD(centreX); - LOAD(centreY); - -#undef LOAD - - // Initialize constraints - ((wxWindow *)s.GetParent())->SetConstraints(lay_object); -} - -///////////////////////////////////////////////////////////////////////////// - -void WXSERIAL(wxFrame)::StoreObject(wxObjectOutputStream& s) -{ - wxFrame *frame = (wxFrame *)Object(); - - if (s.FirstStage()) { - s.AddChild(frame->GetMenuBar()); - WXSERIAL(wxWindow)::StoreObject(s); - return; - } - - WXSERIAL(wxWindow)::StoreObject(s); - - wxDataOutputStream data_s(s); - wxStatusBar *statbar = frame->GetStatusBar(); - - // AAARGH !! I absolutely need to be able to modify internal fields of - // wxFrame (wxToolBar and wxStatusBar) - - if (statbar) - data_s.Write8(statbar->GetFieldsCount()); - else - data_s.Write8(0); - // HOW CAN I ACCESS TO THIS FIELD ? - // for (...) { data_s.Write8(statbar->m_statusWidths[i]); } -} - -void WXSERIAL(wxFrame)::LoadObject(wxObjectInputStream& s) -{ - wxFrame *frame = (wxFrame *)Object(); - wxMenuBar *mbar = (wxMenuBar *)s.GetChild(); - - WXSERIAL(wxWindow)::LoadObject(s); - - if (s.SecondCall()) - return; - - wxDataInputStream data_s(s); - - if (frame->GetClassInfo() == CLASSINFO(wxFrame)) - frame->Create(m_parent, m_id, m_title, wxPoint(m_x, m_y), - wxSize(m_w, m_h), m_style, m_name); - frame->SetMenuBar(mbar); - - frame->CreateStatusBar(data_s.Read8()); -} - -///////////////////////////////////////////////////////////////////////////// - -void WXSERIAL(wxMenuBar)::StoreObject(wxObjectOutputStream& s) -{ - wxMenuBar *mbar = (wxMenuBar *)Object(); - int i, mcount = mbar->GetMenuCount(); - - if (s.FirstStage()) { - for (i=0;iGetMenu(i) ); - WXSERIAL(wxWindow)::StoreObject(s); - return; - } - - wxDataOutputStream data_s(s); - data_s.Write8( mcount ); - - // It isn't necessary for this object. - // WXSERIAL(wxWindow)::StoreObject(s); -} - -void WXSERIAL(wxMenuBar)::LoadObject(wxObjectInputStream& s) -{ - wxMenuBar *mbar = (wxMenuBar *)Object(); - int i, mcount; - wxDataInputStream data_s(s); - - mcount = data_s.Read8(); - for (i=0;iAppend( menu, menu->GetTitle() ); - } - - // It isn't necessary for this object. - // WXSERIAL(wxWindow)::LoadObject(s); -} - -///////////////////////////////////////////////////////////////////////////// - -void WXSERIAL(wxMenu)::StoreObject(wxObjectOutputStream& s) -{ - wxMenu *menu = (wxMenu *)Object(); - - if (s.FirstStage()) { - s.AddChild( &menu->GetItems() ); - return; - } - - wxDataOutputStream data_s(s); - data_s.WriteString( menu->GetTitle() ); -} - -void WXSERIAL(wxMenu)::LoadObject(wxObjectInputStream& s) -{ - wxMenu *menu = (wxMenu *)Object(); - wxList *items = (wxList *)s.GetChild(); - wxNode *node = items->First(); - - wxDataInputStream data_s(s); - - menu->SetTitle( data_s.ReadString() ); - - while (node) { -// NOT IMPLEMENTED in wxGTK -// menu->Append( (wxMenuItem *)node->Data() ); - node = node->Next(); - } -} - -///////////////////////////////////////////////////////////////////////////// - -void WXSERIAL(wxMenuItem)::StoreObject(wxObjectOutputStream& s) -{ - wxMenuItem *item = (wxMenuItem *)Object(); - - if (s.FirstStage()) { -#ifdef __WXGTK__ - s.AddChild(item->GetSubMenu()); -#endif - return; - } - - wxDataOutputStream data_s(s); - -#ifdef __WXGTK__ - data_s.Write8( item->GetId() ); - data_s.WriteString( item->GetText() ); - data_s.Write8( item->IsCheckable() ); - data_s.Write8( item->IsEnabled() ); - data_s.Write8( item->IsChecked() ); -#endif -} - -void WXSERIAL(wxMenuItem)::LoadObject(wxObjectInputStream& s) -{ - wxMenuItem *item = (wxMenuItem *)Object(); - wxDataInputStream data_s(s); - -#ifdef __WXGTK__ - item->SetId( data_s.Read8() ); - item->SetText( data_s.ReadString() ); - item->SetCheckable( data_s.Read8() ); - item->Enable( data_s.Read8() ); - item->Check( data_s.Read8() ); - item->SetSubMenu( (wxMenu *)s.GetChild() ); -#endif -} - -///////////////////////////////////////////////////////////////////////////// - -void WXSERIAL(wxPanel)::StoreObject(wxObjectOutputStream& s) -{ - WXSERIAL(wxWindow)::StoreObject(s); -} - -void WXSERIAL(wxPanel)::LoadObject(wxObjectInputStream& s) -{ - WXSERIAL(wxWindow)::LoadObject(s); - - if (s.SecondCall()) - return; - - ((wxPanel *)Object())->Create(m_parent, m_id, wxPoint(m_x, m_y), - wxSize(m_w, m_h), m_style, m_name); -} - -///////////////////////////////////////////////////////////////////////////// - -void WXSERIAL(wxDialog)::StoreObject(wxObjectOutputStream& s) -{ - WXSERIAL(wxWindow)::StoreObject(s); -} - -void WXSERIAL(wxDialog)::LoadObject(wxObjectInputStream& s) -{ - WXSERIAL(wxWindow)::LoadObject(s); - - if (s.SecondCall()) - return; - - ((wxDialog *)Object())->Create(m_parent, m_id, m_title, wxPoint(m_x, m_y), - wxSize(m_w, m_h), m_style, m_name); -} - -///////////////////////////////////////////////////////////////////////////// - -void WXSERIAL(wxMDIParentFrame)::StoreObject(wxObjectOutputStream& s) -{ - wxMDIParentFrame *frame = (wxMDIParentFrame *)Object(); - - if (s.FirstStage()) { - s.AddChild(frame->GetClientWindow()); - WXSERIAL(wxMDIParentFrame)::StoreObject(s); - return; - } - - WXSERIAL(wxMDIParentFrame)::StoreObject(s); -} - -void WXSERIAL(wxMDIParentFrame)::LoadObject(wxObjectInputStream& s) -{ - wxMDIParentFrame *frame = (wxMDIParentFrame *)Object(); - wxMDIClientWindow *client; - - if (s.SecondCall()) { - WXSERIAL(wxFrame)::LoadObject(s); - return; - } - - client = (wxMDIClientWindow *) s.GetChild(); - - frame->Create(m_parent, m_id, m_title, wxPoint(m_x, m_y), - wxSize(m_w, m_h), m_style, m_name); - - WXSERIAL(wxFrame)::LoadObject(s); -} - -///////////////////////////////////////////////////////////////////////////// - -void WXSERIAL(wxMDIChildFrame)::StoreObject(wxObjectOutputStream& s) -{ - WXSERIAL(wxFrame)::StoreObject(s); -} - -void WXSERIAL(wxMDIChildFrame)::LoadObject(wxObjectInputStream& s) -{ - WXSERIAL(wxFrame)::LoadObject(s); - - if (s.SecondCall()) - return; - - ((wxMDIChildFrame *)Object())->Create((wxMDIParentFrame *)m_parent, - m_id, m_title, - wxPoint(m_x, m_y), wxSize(m_w, m_h), - m_style, m_name); -} - -///////////////////////////////////////////////////////////////////////////// - -void WXSERIAL(wxMDIClientWindow)::StoreObject(wxObjectOutputStream& s) -{ - WXSERIAL(wxWindow)::StoreObject(s); -} - -void WXSERIAL(wxMDIClientWindow)::LoadObject(wxObjectInputStream& s) -{ - WXSERIAL(wxWindow)::LoadObject(s); - - if (s.SecondCall()) - return; - - ((wxMDIClientWindow *)Object())->CreateClient((wxMDIParentFrame *)m_parent, m_style); -} diff --git a/utils/serialize/serwnd.h b/utils/serialize/serwnd.h deleted file mode 100644 index 38cdb657c1..0000000000 --- a/utils/serialize/serwnd.h +++ /dev/null @@ -1,57 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: serwnd.h -// Purpose: Serialization: wxWindow classes -// Author: Guilhem Lavaux -// Modified by: -// Created: July 1998 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Guilhem Lavaux -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifndef _SERIALIZE_SERWND_H_ -#define _SERIALIZE_SERWND_H_ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include -#include - -class WXSERIAL(wxWindow) : public WXSERIAL(wxObject) -{ - DECLARE_DYNAMIC_CLASS( wxWindow_Serialize ) - public: - WXSERIAL(wxWindow)() { } - virtual ~WXSERIAL(wxWindow)() { }; - - void StoreObject(wxObjectOutputStream& s); - void LoadObject(wxObjectInputStream& s); - - public: - int m_x, m_y, m_w, m_h; - bool m_shown, m_auto_layout; - wxWindowID m_id; - wxString m_name, m_title, m_label; - wxWindow *m_parent; - wxValidator *m_validator; - wxColour m_bg_colour, m_fg_colour; - long m_style; - int m_number; -}; - -DECLARE_SERIAL_CLASS(wxIndividualLayoutConstraint, wxObject) -DECLARE_SERIAL_CLASS(wxLayoutConstraints, wxObject) -DECLARE_ALIAS_SERIAL_CLASS(wxValidator, wxObject) -DECLARE_SERIAL_CLASS(wxFrame, wxWindow) -DECLARE_SERIAL_CLASS(wxPanel, wxWindow) -DECLARE_SERIAL_CLASS(wxDialog, wxWindow) -DECLARE_SERIAL_CLASS(wxMenuBar, wxWindow) -DECLARE_SERIAL_CLASS(wxMenuItem, wxObject) -DECLARE_SERIAL_CLASS(wxMenu, wxObject) -DECLARE_SERIAL_CLASS(wxMDIParentFrame, wxFrame) -DECLARE_SERIAL_CLASS(wxMDIChildFrame, wxFrame) -DECLARE_SERIAL_CLASS(wxMDIClientWindow, wxFrame) - -#endif diff --git a/utils/tex2rtf/docs/back.gif b/utils/tex2rtf/docs/back.gif deleted file mode 100644 index 8a61076d3ba74bdedc1d24f60c3d1f5a361a6cee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/utils/tex2rtf/docs/books.gif b/utils/tex2rtf/docs/books.gif deleted file mode 100644 index 26ff394df62cbdb103908648614173654ec6d7eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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<< zPEHBjEDpTA+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%-ybAJtM`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^{??#6$o9 diff --git a/utils/tex2rtf/docs/bullet.bmp b/utils/tex2rtf/docs/bullet.bmp deleted file mode 100644 index aad8fc793edd54ffb5910e67b2470659c95448b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 138 zcmZumxe>rH2vhFtK1GJ`9PYi2Yw9con_&SdBlI1b>qTKR2Gu`ZXgNITWj7;KP=JJL V1)UXU1`*-lNw`O&c<~DR!2u5s7-j$f diff --git a/utils/tex2rtf/docs/contents.gif b/utils/tex2rtf/docs/contents.gif deleted file mode 100644 index 3dddfa3dd5f0c652e8b27cd6c29e1fdd49ced5a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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{\z@ - \thesection\hskip 1em\relax \fi ##1}}{}}% -\def\subsectionmark##1{\markright {\ifnum \c@secnumdepth >\@ne - \thesubsection\hskip 1em\relax \fi ##1}}}% -{\def\chaptermark##1{\markboth {\uppercase{\ifnum \c@secnumdepth>\m@ne - \@chapapp\ \thechapter. \ \fi ##1}}{}} -\def\sectionmark##1{\markright{\uppercase{\ifnum \c@secnumdepth >\z@ - \thesection. \ \fi ##1}}}}% -\csname ps@headings\endcsname % use \ps@headings defaults if they exist -\ps@@fancy -\gdef\ps@fancy{\@fancyplainfalse\ps@@fancy}% -\headwidth\textwidth} -\def\ps@fancyplain{\ps@fancy \let\ps@plain\ps@plain@fancy} -\def\ps@plain@fancy{\@fancyplaintrue\ps@@fancy} -\def\ps@@fancy{% -\def\@mkboth{\protect\markboth}% -\def\@oddhead{\@fancyhead\@lodd\@olhead\@ochead\@orhead\@rodd}% -\def\@oddfoot{\@fancyfoot\@lodd\@olfoot\@ocfoot\@orfoot\@rodd}% -\def\@evenhead{\@fancyhead\@rodd\@elhead\@echead\@erhead\@lodd}% -\def\@evenfoot{\@fancyfoot\@rodd\@elfoot\@ecfoot\@erfoot\@lodd}% -} -\def\@lodd{\if@reversemargin\hss\else\relax\fi} -\def\@rodd{\if@reversemargin\relax\else\hss\fi} - -\let\latex@makecol\@makecol -\def\@makecol{\let\topfloat\@toplist\let\botfloat\@botlist\latex@makecol} -\def\iftopfloat#1#2{\ifx\topfloat\empty #2\else #1\fi} -\def\ifbotfloat#1#2{\ifx\botfloat\empty #2\else #1\fi} -\def\iffloatpage#1#2{\if@fcolmade #1\else #2\fi} - diff --git a/utils/tex2rtf/docs/forward.gif b/utils/tex2rtf/docs/forward.gif deleted file mode 100644 index 9c81e8c92fed7fe851ce02e7854dc26a58eae9b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/utils/tex2rtf/docs/install.txt b/utils/tex2rtf/docs/install.txt deleted file mode 100644 index 6224eec7ec..0000000000 --- a/utils/tex2rtf/docs/install.txt +++ /dev/null @@ -1,43 +0,0 @@ -Installation Instructions for Tex2RTF -------------------------------------- - -Binaries are supplied for Windows 3.1 and for Sun workstations. - -If these don't work for you, or you are using a different system, you -will need to compile Tex2RTF. There are several options for doing this. - -(1) GUI version - -If you want to have a graphical interface for Tex2RTF -(not essential for a conversion utility!) then you -will need to download wxWindows from skye.aiai.ed.ac.uk -(192.41.104.6) in the directory /pub/wxwin/beta, files -wx150?_*.tar.Z (or .gz) where ? is the latest beta letter, -currently i. - -On UNIX, you will then need to decide whether you want to produce -an XView or Motif version (provided you have one of these -toolkits), and change the makefiles in accordingly, -in wx/src/x, wx/src/base and wx/utils/tex2rtf/src. - -Use the makefile target 'xview' or 'motif' from each of the directories -wx/src/x and wx/utils/tex2rtf/src. - -Under Windows, just type 'nmake -f makefile.dos' if you're -using a Microsoft-compatible compiler (you'll need to -change the makefiles or build project files for other compilers.) - -(2) Non-GUI version - -Under UNIX, simply use the target 'nogui'. The supplied files in the -src/wxwin directory supply the essential utilities from wxWindows, and -Tex2RTF will be built as a command-line program. - -On a PC, add 'NOGUI=1' to the makefile command line. Note that the small -amount of memory available under DOS can cause catastrophic crashes for -large input files, due to the lack of memory checking, so be warned! The -Windows version is a more sensible choice. - -------------------------------------------------------------------------- -Julian Smart, February 1993 -J.Smart@ed.ac.uk diff --git a/utils/tex2rtf/docs/makeidx.sty b/utils/tex2rtf/docs/makeidx.sty deleted file mode 100644 index 4fbb9aed3a..0000000000 --- a/utils/tex2rtf/docs/makeidx.sty +++ /dev/null @@ -1,11 +0,0 @@ -% makeidx.sty 20-Jan-87 modified for international usage -% -% Modified by J.Schrod (TeXsys). -% according to the suggestion of H.Partl (TU Wien) in german.sty -% to make caption names adaptable to other languages. - -\@ifundefined{seeterm}{\def\seeterm{see}}{} % <----------- - -\def\see#1#2{{\em \seeterm\/} #1} -\def\printindex{\@input{\jobname.ind}} - diff --git a/utils/tex2rtf/docs/mysober.sty b/utils/tex2rtf/docs/mysober.sty deleted file mode 100644 index a6f73a654d..0000000000 --- a/utils/tex2rtf/docs/mysober.sty +++ /dev/null @@ -1,154 +0,0 @@ -% SOBER.STY van Nico Poppelier -% Adapted by Julian Smart for his own -% nefarious purposes -% -------------------------------------- -% Koppen van secties, subsecties, ... -% -------------------------------------- -% -% -------------------------------------- -% fontgrootte en regelafstand -% (met de notatie X/Y wordt bedoeld -% 'letter X op regelafstand Y') -% -------------------------------------- -% -% 10pt 11pt 12pt -% \scriptsize 7/ 8 8/ 9.5 8/ 9.5 -% \tiny 5/ 6 6/ 7 6/ 7 -% \small 9/11 10/12 11/13.6 -% \footnotesize 8/ 9.5 9/11 10/12 -% \@normalsize 10/12 11/13.6 12/15 -% \large 12/14 12/14 14/18 -% \Large 14/18 14/18 17/22 -% \LARGE 17/22 17/22 20/25 -% \huge 20/25 20/25 25/30 -% \Huge 25/30 25/30 25/30 -% -% de syntax van \@startsection is: -% \@startsection -% {Name}{Level}{Indent}{Before_skip}{After_Skip}{Type_face} -% Indent : inspring van kop vanaf linkermarge -% Before_skip: wit boven kopje -% (< 0 geeft aan dat eerste alinea niet inspringt) -% After_skip : wit onder kopje indien >= 0 -% horizontaal wit na kopje, -% met kopje op de regel indien < 0 -% -% notatie voor : ()() -% -% in LaTeX's standaard-stijlen (onafhankelijk van \@ptsize): -% -% Indent Before_skip After_skip Type_face -% section 0 -3.5ex (-1ex)(-0.2ex) 2.3ex(0.2ex) \Large\bf -% subsection 0 -3.25ex(-1ex)(-0.2ex) 1.5ex(0.2ex) \large\bf -% subsubsection 0 -3.25ex(-1ex)(-0.2ex) 1.5ex(0.2ex) \normalsize\bf -% paragraph 0 3.25ex( 1ex)( 0.2ex) -1em()() \normalsize\bf -% subparagraph \parindent 3.25ex( 1ex)( 0.2ex) -1em()() \normalsize\bf -% -% -% in een soberder uitvoering (onafhankelijk van \@ptsize): -% -\def\section{\@startsection{section}{1} -%{\z@}{-2.5ex plus -0.5ex minus -0.1ex}{0.5ex plus 0.1ex}{\large\bf}} -{\z@}{-2.5ex plus -0.5ex minus -0.1ex}{0.5ex plus 0.1ex}{\large\bf}} -\def\subsection{\@startsection{subsection}{2} -{\z@}{-2.25ex plus -0.3ex minus -0.2ex}{0.05ex plus 0.05ex}{\normalsize\bf}} -\def\subsubsection{\@startsection{subsubsection}{3} -{\z@}{-2.25ex plus -0.3ex minus -0.2ex}{0.05ex plus 0.05ex}{\normalsize\sc}} -\def\paragraph{\@startsection{paragraph}{4} -{\z@}{2ex plus 0.5ex minus 0.1ex}{-0.7em}{\normalsize\it}} -\def\subparagraph{\@startsection{subparagraph}{4} -{\parindent}{2ex plus 0.5ex minus 0.1ex}{-0.7em}{\normalsize\it}} -% -% -------------------------------------- -% Hoofdstuk-koppen -% -------------------------------------- -% -% LaTeX's book style (standaard documentstijl) definieert -% de hoofdstuk-koppen onafhankelijk van \@ptsize -% - -\def\@makechapterhead#1{\vspace*{20pt}% -% Next line repaired by Piet van Oostrum - June 14, 1991. -%{\parindent 0pt\Large\bf \ifnum\c@secnumdepth>\m@ne\thechapter \fi -{\parindent 0pt\LARGE\bf \ifnum\c@secnumdepth>\m@ne\thechapter. \hskip 1em \fi% -{\raggedright\LARGE\bf #1}\\\rule[10pt]{\textwidth}{0.3mm}\par\nobreak \vskip25pt} } - -\def\@makeschapterhead#1{ - \vspace*{20pt} { \parindent 0pt \raggedright - \LARGE\bf#1\par\nobreak\vskip25pt } } -% -% -------------------------------------- -% List-omgevingen (itemize en enumerate) -% -------------------------------------- -% -% De volgende parameters zijn relevant in een list-omgeving: -% -% \labelsep : afstand tussen label en item -% \labelwidth : breedte van label -% \leftmargin : afstand tussen linkermarge en item -% \rightmargin : afstand tussen item en rechtermarge -% \listparindent: indentatie voor vervolg-alinea's in item -% \parsep : verticaal wit tussen vervolg-alinea's in item -% \itemsep : verticaal wit tussen opeenvolgende item's -% \topsep, -% \partopsep : wit boven item 1 = \topsep + \parskip -% (geen alinea-overgang boven lijst) -% wit boven item 1 = \topsep + \parskip + \partopsep -% (alinea-overgang boven lijst) -% -% zie verder LaTeX-boek 5.7.1 en C.5.3 -% -------------------------------------- -% -% De parameters voor niveau 1 worden gedefinieerd op top-niveau en -% \@listi definieert uitsluitend \leftmargin -% -% size = small (9pt, 10pt, 11pt) -\def\@listi{\topsep 0.4ex \parsep 0pt \itemsep \parsep} -% \topsep 4pt(2pt)(2pt) 6pt(2pt)(2pt) 9pt(3pt)(5pt) -% \parsep 2pt(1pt)(1pt) 3pt(2pt)(1pt) 4.5pt(2pt)(1pt) -% -% size = footnotesize (8pt, 9pt, 10pt) -\def\@listi{\topsep 0.4ex \parsep 0pt \itemsep \parsep} -% \topsep 3pt(1pt)(1pt) 4pt(2pt)(2pt) 6pt(2pt)(2pt) -% \parsep 2pt(1pt)(1pt) 2pt(1pt)(1pt) 3pt(2pt)(1pt) -% -% size = normalsize (and bigger) -% \parskip 0pt(1pt) 0pt(1pt) 0pt(1pt) -% \parindent 15pt 17pt 1.5em -% \topsep 8pt(2pt)(4pt) 9pt(3pt)(5pt) 10pt(4pt)(6pt) -% \partopsep 2pt(1pt)(1pt) 3pt(1pt)(2pt) 3pt(2pt)(2pt) -% \itemsep 4pt(2pt)(1pt) 4.5pt(2pt)(1pt) 5pt(2.5pt)(1pt -% \parsep 4pt(2pt)(1pt) 4.5pt(2pt)(1pt) 5pt(2.5pt)(1pt) -\topsep 0.4ex \partopsep 0pt \itemsep 0pt \parsep 0pt -% -% \leftmargini 2.5em \leftmarginii 2.2em \leftmarginiii 1.87em -% \leftmarginiv 1.7em \leftmarginv 1.0em \leftmarginvi 1.0em -% -% \leftmargin\leftmargini -% \labelwidth\leftmargini\advance\labelwidth-\labelsep -% \labelsep 0.5em -% -% \def\@listi{\leftmargin\leftmargini} -% -\def\@listii{\leftmargin\leftmarginii - \labelwidth\leftmarginii\advance\labelwidth-\labelsep -% \topsep 4pt(2pt)(1pt) 4.5pt(2pt)(1pt) 5pt(2.5pt)(1pt) -% \parsep 2pt(1pt)(1pt) 2pt(1pt)(1pt) 2.5pt(1pt)(1pt) - \topsep 0pt \parsep 0pt \itemsep \parsep} -% -\def\@listiii{\leftmargin\leftmarginiii - \labelwidth\leftmarginiii\advance\labelwidth-\labelsep -% \topsep 2pt(1pt)(1pt) 2pt(1pt)(1pt) 2.5pt(1pt)(1pt) -% \partopsep 1pt(0pt)(1pt) 1pt(0pt)(1pt) 1pt(0pt)(1pt) - \parsep \z@ \topsep 0pt \partopsep 0pt \itemsep \topsep} -% -% \def\@listiv{\leftmargin\leftmarginiv -% \labelwidth\leftmarginiv\advance\labelwidth-\labelsep} -% -% \def\@listv{ \leftmargin\leftmarginv -% \labelwidth\leftmarginv\advance\labelwidth-\labelsep} -% -% \def\@listvi{\leftmargin\leftmarginvi -% \labelwidth\leftmarginvi\advance\labelwidth-\labelsep} - - diff --git a/utils/tex2rtf/docs/mytitle.sty b/utils/tex2rtf/docs/mytitle.sty deleted file mode 100644 index 4a20d7b2c8..0000000000 --- a/utils/tex2rtf/docs/mytitle.sty +++ /dev/null @@ -1,33 +0,0 @@ -% mytitle.sty -% Julian Smart's Enhanced Titlepage - -\def\maketitle{\begin{titlepage} -\let\footnotesize\small \let\footnoterule\relax \setcounter{page}{0} -%\null -%\vfil -\vspace*{2cm}\begin{flushleft} -{\huge \sf\@title\\\rule{\textwidth}{0.5mm}} \vskip 3em {\large \lineskip .75em -{\sf\@author} -\par} -\vskip 1.5em {\large\sf \@date \par} \end{flushleft} \par -\@thanks -\vfill -{\sf\small\begin{flushright}% -Artificial Intelligence Applications Institute\\ -University of Edinburgh\\ -80 South Bridge\\ -EH1 1HN\\ -Tel. 0131-650-2746 -\end{flushright}} -\null -\end{titlepage} -\setcounter{footnote}{0} \let\thanks\relax -\gdef\@thanks{}\gdef\@author{}\gdef\@title{}\let\maketitle\relax} -\def\abstractname{Abstract} % <---------- -\def\abstract{\titlepage -\null\vfil -\begin{center} -{\bf \abstractname} % <---------- -% {\bf Abstract} -\end{center}} -\def\endabstract{\par\vfil\null\endtitlepage} diff --git a/utils/tex2rtf/docs/notes.txt b/utils/tex2rtf/docs/notes.txt deleted file mode 100644 index 6e830c5baa..0000000000 --- a/utils/tex2rtf/docs/notes.txt +++ /dev/null @@ -1,140 +0,0 @@ -Implementation notes --------------------- - -Files ------ - -The library tex2any.lib contains the generic Latex parser. -It comprises tex2any.cc, tex2any.h and texutils.cc. - -The executable Tex2RTF is made up of tex2any.lib, -tex2rtf.cc (main driver and user interface), and specific -drivers for generating output: rtfutils.cc, htmlutil.cc -and xlputils.cc. - -Data structures ---------------- - -Class declarations are found in tex2any.h. - -TexMacroDef holds a macro (Latex command) definition: name, identifier, -number of arguments, whether it should be ignored, etc. Integer -identifiers are used for each Latex command for efficiency when -generating output. A hash table MacroDefs stores all the TexMacroDefs, -indexed on command name. - -Each unit of a Latex file is stored in a TexChunk. A TexChunk can be -a macro, argument or just a string: a TexChunk macro has child -chunks for the arguments, and each argument will have one or more -children for representing another command or a simple string. - -Parsing -------- - -Parsing is relatively add hoc. read_a_line reads in a line at a time, -doing some processing for file commands (e.g. input, verbatiminclude). -File handles are stored in a stack so file input commands may be nested. - -ParseArg parses an argument (which might be the whole Latex input, -which is treated as an argument) or a single command, or a command -argument. The parsing gets a little hairy because an environment, -a normal command and bracketed commands (e.g. {\bf thing}) all get -parsed into the same format. An environment, for example, -is usually a one-argument command, as is {\bf thing}. It also -deals with user-defined macros. - -Whilst parsing, the function MatchMacro gets called to -attempt to find a command following a backslash (or the -start of an environment). ParseMacroBody parses the -arguments of a command when one is found. - -Generation ----------- - -The upshot of parsing is a hierarchy of TexChunks. -TraverseFromDocument calls the recursive TraverseFromChunk, -and is called by the 'client' converter application to -start the generation process. TraverseFromChunk -calls the two functions OnMacro and OnArgument, -twice for each chunk to allow for preprocessing -and postprocessing of each macro or argument. - -The client defines OnMacro and OnArgument to test -the command identifier, and output the appropriate -code. To help do this, the function TexOutput -outputs to the current stream(s), and -SetCurrentOutput(s) allows the setting of one -or two output streams for the output to be sent to. -Usually two outputs at a time are sufficient for -hypertext applications where a title is likely -to appear in an index and as a section header. - -There are support functions for getting the string -data for the current chunk (GetArgData) and the -current chunk (GetArgChunk). If you have a handle -on a chunk, you can output it several times by calling -TraverseChildrenFromChunk (not TraverseFromChunk because -that causes infinite recursion). - -The client (here, Tex2RTF) also defines OnError and OnInform output -functions appropriate to the desired user interface. - -References ----------- - -Adding, finding and resolving references are supported -with functions from texutils.cc. WriteTexReferences -and ReadTexReferences allow saving and reading references -between conversion processes, rather like real LaTeX. - -Bibliography ------------- - -Again texutils.cc provides functions for reading in .bib files and -resolving references. The function OutputBibItem gives a generic way -outputting bibliography items, by 'faking' calls to OnMacro and -OnArgument, allowing the existing low-level client code to take care of -formatting. - -Units ------ - -Unit parsing code is in texutils.cc as ParseUnitArgument. It converts -units to points. - -Common errors -------------- - -1) Macro not found: \end{center} ... - -Rewrite: - -\begin{center} -{\large{\underline{A}}} -\end{center} - -as: - -\begin{center} -{\large \underline{A}} -\end{center} - -2) Tables crash RTF. Set 'compatibility ' to TRUE in .ini file; also -check for \\ end of row characters on their own on a line, insert -correct number of ampersands for the number of columns. E.g. - -hello & world\\ -\\ - -becomes - -hello & world\\ -&\\ - -3) If list items indent erratically, try increasing -listItemIndent to give more space between label and following text. -A global replace of '\item [' to '\item[' may also be helpful to remove -unnecessary space before the item label. - -4) Missing figure or section references: ensure all labels _directly_ follow captions -or sections (no intervening white space). diff --git a/utils/tex2rtf/docs/psbox.tex b/utils/tex2rtf/docs/psbox.tex deleted file mode 100644 index b7438f4f29..0000000000 --- a/utils/tex2rtf/docs/psbox.tex +++ /dev/null @@ -1,520 +0,0 @@ -% -% %%%%%%% %%%%% %%%%%% %%%%% % % -% % % % % % % % % % -% % % % % % % % % % -% %%%%%%% %%%%% %%%%%% % % % -% % % % % % % % % -% % % % % % % % % -% % %%%%%% %%%%%% %%%%% % % -% -% By Jean Orloff -% Comments & suggestions by e-mail: ORLOFF@surya11.cern.ch -% No modification of this file allowed if not e-sent to me. -% -% A simple way to measure the size of encapsulated postscript figures -% from inside TeX, and to use it for automatically formatting texts -% with inserted figures. Works both under Plain TeX-based macros -% (Phyzzx, Harvmac, Psizzl, ...) and LaTeX environment. -% Provides exactly the same result on any PostScript printer provided -% the single instruction \psfor... is changed to fit the needs of the -% particular dvi->ps 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/utils/tex2rtf/docs/readme.txt b/utils/tex2rtf/docs/readme.txt deleted file mode 100644 index 6709d2eafc..0000000000 --- a/utils/tex2rtf/docs/readme.txt +++ /dev/null @@ -1,81 +0,0 @@ - -+++++ Announcing Tex2RTF +++++ -+++++ A Free LaTeX to RTF, Windows Help RTF, HTML & wxHelp converter +++++ - -Purpose -======= - - * Allows you to maintain manuals in printed and hypertext formats. - - * Allows conversion of existing LaTeX documents to word processor - formats (usually some 'tweaking' is required to conform to - Tex2RTF restrictions). - -Input -===== - -A LaTeX subset with some additional hypertext macros; no maths, -minimal table support. - -Caveat: Please do not expect to convert arbitrary LaTex files without -editing: this is not the primary intention of Tex2RTF. Success converting -existing LaTeX depends on your expectations and the style in which -the LaTeX was written. Tex2RTF does not accept pure TeX (non-LaTeX) -documents. - -Output -====== - - * ordinary RTF - - * Windows Help hypertext RTF - - * HTML (the World Wide Web hypertext format) - - * wxHelp (the wxWindows GUI library help file format) - -Installation -============ - -Under Windows, please run the supplied install.exe program. The Tex2RTF -manual itself serves as an example input file, in the docs subdirectory -with various .sty, .ini, and .gif files that you may need for your -own documents. See the online manual for further details. - -Platforms supported -=================== - - * SPARC Open Look - - * SPARC Motif - - * Windows 3.1 - -Where to get it -=============== - -The latest version of Tex2RTF can be accessed by anonymous ftp from -ftp.aiai.ed.ac.uk in the directory /pub/packages/tex2rtf. -The WWW pages are at http://www.aiai.ed.ac.uk/~jacs/tex2rtf.html. - -Tex2RTF was developed using the free Open Look/Motif/Windows 3.1 C++ -class library wxWindows, also available from the above FTP site in the -/pub/packages/wxwin directory. -The wxWindows WWW pages are at http://www.aiai.ed.ac.uk/~jacs/wxwin.html. - - ------------------------------------------------------------------- -Julian Smart, November 1995 - -Artificial Intelligence Applications Institute -University of Edinburgh -80 South Bridge -Edinburgh -Scotland -EH1 1HN - -EMAIL: J.Smart@ed.ac.uk -TEL: 0131 650 2746 - - - diff --git a/utils/tex2rtf/docs/refs.bib b/utils/tex2rtf/docs/refs.bib deleted file mode 100644 index 0d145e5a8f..0000000000 --- a/utils/tex2rtf/docs/refs.bib +++ /dev/null @@ -1,35 +0,0 @@ -@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{kopka, -author = {Kopka, Helmut and Daly, Patrick W.} -, title = {A Guide to LaTeX} -, publisher = {Addison-Wesley} -, year = {1993} -} -@book{pfeiffer, -author = {Pfeiffer, Katherine Shelly} -, title = {Word for Windows Design Companion} -, publisher = {Ventana Press} -, year = {1994} -} -@manual{smart93a, -author = {Smart, Julian} -, title = {wxWindows 1.50 User Manual} -, publisher = {Artificial Intelligence Applications Institute} -, organization = {University of Edinburgh} -, address = {80 South Bridge, Edinburgh, EH1 1HN} -, year = {1993} -} - diff --git a/utils/tex2rtf/docs/screen.bmp b/utils/tex2rtf/docs/screen.bmp deleted file mode 100644 index 5dacb0924a741af6b414a2ac0980708e6022571f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66010 zcmeHNyOP^F5~ZuQG&j?J#(u}W@&1E?Erl*cs~b*cXIuM4_IGULXyVDnnf9F100~O; zT&hL2Myke0B+x)VP9FdSW&i%q|9$$@vHTm~f8hIHH2=W&Q};KDyML8_*8g6~IY1DBAP;1c~ar@~?yBNjHx8>k>T2##j(Arnur4kTDjbecB21U*q728)HGZ zl@|b+z(TZh%T2L#m_<0E+Z@An8cTbKe;3wGvDCGL2=&@AjfD_rm2fPgp)3Tg7p|CL z?UO1X<0`s?^}@)BWryX?eGGsQzCHsl1k>zevuKH5`wHuH){L<O5>&#}ehZw)4vHXC#6Z;|iF zU$0w$<+={OHgjxlfkJa*@=E(*WAzZ7g&{ErvcH~pGeuAgLw zhvdbPv;dXlB_PQT7s-nwX#pz9OF)txE|M2V(gIYHmw+TYTqG}!qy?xXF9At*xJX_c zNefU(UILQraFM(?k`|znyaXiK;Ual)BrQNCc?n3e!$tDqNLqkO@)D3_hl}LJk+cAn z~N91IFc5ilDq^Y+2JC2aU?B3C3y)*vcpC4;z(M6O7aqrWQU97#gViCmEH$ zK$0CUk{3tP0#uThfFwIyBrlGn1*jx10ZDeaNM0OC3s6a30+Q@-k-RvP7NC;61SHwv zB6)EnEkGrC2}rWTMe^cET7XLO5|Ctvi{!KtrXN{s_vHHt$@FUQ7|2`mg~ z6bYh|NKux~c1+2;x`~A#ZjS|VXc{T?EiVu&zlc&3=!h38F$L%|Hg1oFAq`VwgoRXT zhV{~cyS_$d$V)+DGw^0}OkpvkwXGMiG0ZW>%1*{-3x_QU#0z_gr7Wsap(LUltrx_? zeQe$DV;zFyj3Z-+5VvmK3osN-;rmF^llMSDW!HIP&WcCu{I&I zs>xbSgxs%z1+3m4i?*YhLQNGkEG`DuB!1wCbFQkC`zvN53znR^j{D27#cwSyiyIF% zm{@`nKGR+DGBZ)Z!yc9wY@Yn^NzI2gpY{6F9t$a-?&{FN1+O?5Cy_L$B@uRH)4)*^ z?>#&SXyc}BoggIAhFv!A)|t7l??UHLJK}}T^uX2$i-8J@MQpGr(P@it3Kj&U+90YL zuz)ZbwV6@{E+j$&cNW5 z56$yyGElrOh~@l17S>o23vKZ*S$}wBsBBXrsg934LN@gAsm@-VEg@H3L(CA>2QySQ zIgPVWy$pYE0@&bpuk9RboYK7&!&0t%T`zyNUx$63^b3|!tHbPGv9!`^Kv;&3Dt6p| zfn~6Se|pftpWgJ-LqS|eKw6LxDEZN_ar9_4W@M`B)0_zmPcJ{eG84_u!qL_8c~!IeO7h6VYp1y#0q>vMs1Y_}FW_E3i1te>xH0o^-jd-YHZvCRP9j%#Gel;w= zi0NL$BVO($=wHP7fLOT6KT6p@?MvBhUp`;<*;4)UR=0A6#bOfzbfDYsh5Fl<&DUCf ztCi>SzTaSxyGt%`g+erpxm0;aTOcG<+jV&%n$6D&VO=YyST0GK=@P+9$vuJv0|JIS zqCi2Lb@zu*wm;s=MEbfel|N6h$lXO3G1A8kzlgrz5JEIAD=_)8nT5rlu$pNEyIE~t zy6$tg-FBOMuw0fiY9sGIRxcYMus?Vv3P|wb47=0?49uEi z7v@arm;x)r4+1)|VL%|^hhQ#r0t@f*V!OeY-K9CBejx&36Hr&6eKvLo=F$QOTrb>x zC)WPX9+kjyY0{8$n`2lfTkyg)f;H0#7~ovIT+9Km?7D&l)}QvnKDN^#=XDug3K4a+ zbYSEKDEI+DK)twVjuC-)0TKHa3$UT=cNb1&Q)k%P$3A0*0f_`q?g=K-P>G@I#{sC4%hf#y;wsu_P=-qv6 zQC>J*`|P8-VVgo#`ko6av#>0Zwd)%h&oL4)HODSUR-o!EUY6Kpu20MR&;3Q$%k>G` z)R+FB{m*mt%+Gas_ocj77FKXB=xg^<>0gQWkB8;%r`KZw=%?I5r?KmAW78fspeM0R z=fn2yb8=(M~-{#eC0 zW|B~wU!Ew1#6(c<(BP#g@y(mB-W+4cZkSl11wW`Qxn3AK3?E^U3_@aIm~d%VxWRmyN=-SZh^M#ex_ZWQQx;h`}mqYecylWMD4D0TBP;~SK6$tBII4(DdcsRl>Np+98kUr2TcT`tF?=?KvN5ss?=A<9at?C0K|gNeMAMTJri(XE2f8II269ZQIrHM z&?dqa<5ll35=bcH7>)rPNXtMW!LnG)evbuyxWV97KlIFy*u!viGy1Guq$O;Ol_qag zLN70JW4_oAC+u067j0fJuK?7jSmM)j$~<`XsWJk>%MR- z&vb3y=ArL=&jY@oa7Zi~kI1BQ$!t2G(5Q4uty+h`t9HxndcWYXckuN^y*ll9QB`mY0~Bnt_f}62! zL%Dt(Tke__FWYl_`Tf1Dc{57Ad|^sm9ko#q1h8W>)=~QLt;jZ~;Zw~yG;WEX9k+HG zoGozDnKxoRzO!U!-RzdswjGOO^QSbK_ZCN#H|D&^uNN0RH#ttN%x7}u%6?&D>D1Tu z&2E#t_Vp8aqt9BkJNE4%5&niBebMMQ-+f;hb`3`H33XU~5QYbqc<4Zf-8$Cv7fxVG zg*41Kd10uKH`_FY)P~sLM~e~DHK^8af50e-jIPkQh>fMJSVW6128E*@KPD1njyx(d zWGFfkQDl!yHtFP(#4rfulvGw3pBq?aspXbjcIoApV1_B?m}IW-M3Q8rspgt&w&^CD zXznP%nQzu<=bd=wspk)8&UrwYfCeh)poC^I0c}!Rspz7NN>kROkV1;USdms*)}*xg z8D|iXI3S0o27oH+r=*5j>Zqosit4JTwyLVDtiCF1thB;v>#VoditDbr_L}RjyaMZM zu*42)Y%dQa0oz#0{$l#4rinHx?X*uai^Q_YUhC|kf3|aMvBHK6?zrEUE3UcZo~v%U z?4s-Ly1iO^1h&l@3N3up)(Dy(hoOkgzWJIWuMzZWYpMjKDJC98JCdSJ?-^3p!{&MS* zZ(j-AO`K*hDfW@o$AnqZ-%9Mm5kTY;cUD9Op>KI@SW@$j6R71gD>=(({*sy3)aED+Y0PbU^PIb!X4sHfO;?(; zl;Ct`Hsv|YdXjUV*lcDh-8oEgg3^@x+-E!g3APICGM@a@CO!qa%zM(aprK?aI{qhG zN_BeDpzZAEKqWcPfJW4nAnoW!GaAl=nv|p=b*M%~3R0B16qxpG=}JfX&WCzbrZg=n zMRBQ1R0eaV52T*T2z6u^Q&=1>Rhu~Sh=n>uRpCTUw7))w_?_^ijC}24;$HhGFGn43~Oae z`&rRy_O2UU?Or!~&dw$_tw9YfZXL_ghbmO37bR+I5zE`(zO}egEiFT@{+e4krWUUD z1TJkcY1`>q_qv;fEp{VmTMQ(U1JKOCcB83*(2m!e)jh9z*K0}bvR9GmeXo4yOW*pM z#iI7juYUKt-9onUzW@%ffIEO+{u=ne2G{{8Jr2naNRZ?~pxNWGpkep!EDPKL3g1y^h(P zVQ#XQJG^FqCfCauHnW>0dgdUfIm%-`GCUzlObjErqe|#Y>iNcgxIU zFcZ4bji#xQlRRk{JDSax9<)Ls+sjIK`pH%9@r%WLWl(3?&q2Pbsn;x1R%g1>gif@g zyZmKFd)m&d&h?{l?Pxfc_|m+F^+|Od>R#iz)IEl?vGqynJ)e2hYF;(42Tko}%X-!| zU2zAe7u5p?cDEV+ zaD$8d)0kd&sa2kGVb43@@6PzW6^>_Qi(2ONW_iOU{PF%|AG*!=q>D+~$FGANvYn0d^Zt83>JnGAw~3AJou_}ls<(Y2_kPbe zeg-IQJEw9Dw{gqoVk<{)3FvVDH(vorawu193%G#yXK~Y)a4>g(5C>)g2!RK9coUdi zU509b)^r#Mf3R18%$0Aj$8;HpW_a~;BB*c3H-H;>f)r?XJ{W{TxOYNWgs4Y^MwoJXhM0)g1&E5+h%rWp zju?r>1c{PZiH*dFmY9i^M~Rx)iGhTP{+<|$(u9bjSc;EGil&%~-^Gcl*ov^kimn)o z6@`kjSc|L#i?$expqPuIxQo2#iN5%Yni!12XoHZdjRtv;-k6XI8IBCukmUG~5P6OgIg#pEkrvsG z7@3jqxRD$=j~@Av_85{PnU5q{lKgm*DEW^nxsn3ek}g@0v>21s2$M8ojYN?bn*_K&omT)?%S(qkCn23p!b-9=fhL?_sU62`>)-{=w`G<{pnP#V$nt7C&*_ruenV{KM zpE;Uq$eE^@ccPh^hj^H*>64}Tns*qRvUy&sS(|!Co46^Ny1AQ`*_*zJnW!0@YdM_6 z>6Wf}oOpMe$~lR~*_?L?oY1*p(m9>2sVUY;cg&fce^;H{If&2sogU|%;;Bj7S)PY< zp6Dq^>bahyM4s-+P4NC1pWHQ{^r>X_d7qbw`k>CWpb|<*6k4H4b)gvgOB%YN%haJBnoJ-Xq7&+%Bno#UdZI*TqAJQ) z5!#|+lcF#>i^(~o*jA%93ZXKZqcO^&JbImm@}oD3okFUkK3b&UiK9rmh&!62FWRC{ zs-jVPqEkwuRT`pK>Y-V>p<9ZfU0R`EDxqQepkvCQWtyO8YM^O4p#C*rZu+Khnnu$E zTzE4_&ax+Xnx}fYr+oS+bTldcRX}%RGX}INeR`;fny8BE1ccfH%Mz#r!#+gNHH%uQ zmU^j}Di(q&I{uo{shgTL*K?p9864;i!_jJECf;uo|nf3I>_Os-0>t zd9yd5x;}gdFr*!iZyIQEhx~$CFtU@3!S5vIn2Cc~2s-fDe&YG>- zYN^!fIh?Ahb>k<=YOC8?uI5Ur-Ksg#>Ng#utJcb^=Nhl_ny8u63G3>qWninH`l|EV zul{N$wVJBN8mXwd1C;u&2%E5KQm}&xuCB_koT{)AJF&F7ueX{hM`T9WqOk`{u^#)e zQLscDd$G^LvCCqz{0g!vyRs~TvLqX)FdMTn>m}2~vNn6Od|F62yR$rdCpz1+KpV7V z@Uxa}EBsbQOK279(>>!@tIsA=mrYx}l|YPNKHsB!D9d~>&mYPU~>1@A)zKXCzivo|5z ztXb==jy1{!V!^^y)n?2r}uYVh^%Nw|~%e$fTz2+;czk9veo2T33 z8@STTyn0Ik$>ur!O#oAm5aX&e7+!@ydfOH)(gNCth#Qi!37+>&AYn@#J#qwz~Gy{ zvJ1WTyEWA7xFtNnCyXb4+rtCA!*dJ7b@IbR%q9{%#7EpFM!dvnlEh={#7vyRQoJTm zyth?s#Z;WdWN^g+%*9>M#9-_NUM!4`YR1X?!ehL~+Df!+{Kn4OrZYRobX>6Sj94_=+Rd=KeBU|uR(1Q)acql~UDb8( zJ@=gRo!7lp-Q_E-8L5j%JhLM^@=*O;^qq&!$vOG@#jnhK7xe#r4j28qBZ5=z+_45% zbY*8}M^;u=FyZtR=h(vs2T8ar%eSOmYh>-(a&|szw;EZeH8JeAYOQ6NlU|LTY%VK0 ztE6PtzUR6buY=6SuVlSt5MIfK%l`+;bz)@z%34vjfu@E-YFVpR17WR|WjHacW;emY zL$XY?X+1G+;(m(APp3>#%`4hcH3Vv9!sZJH>KT|pP|zd$q@Im2J-~VLKrP;_mI$n; zmM$c5Rky~ifju(Cnl*0?g*#>q`1kQjqqx6U6#JPuuF+w9G{zQYkto|j!~)Wk__S(K zwoN`J1g^k2%T`F(W{Zl-gne;5Km(um7?pc=EYD|A!%uxeM#L56T53dWlB|z#!&&LE z{dCYu8ktY1#D~32E|uZxrq_-cZv2f&{5|&DJc9kPu1|@|v?2f$-1*favBvwJiZ6wYmP7;?VX!6MYD#=~$lAKL~OOoS(pFI-LbKn_}4xz~X6cinL4lb$Pw-kdE(l8|@Mj$~1Rw#lO_ZW(HlhZhqOBF?K)i7QQ5Pdj6%T~dpo!|x` zNK#>&Gy<6Wq~}%F1wC>%0FXPXF-7bo1pwlNX@)}mobW+OCajYMfW`?z^akIXz@oha zAn?p+*gbP$jg5E5B5r0Xb({`Dfi7DD0B~5lAZi&zs5XYj#R&{HWsKLRAq0S)@ z8hZOA( z*{%mq!P5>F9_<;W>Tc671dUO)0BRZ$6O<|qakD9}2H=rZStgVj>zul&Xed(HqI= zk$W3eV0xK5f?FlG9pqBj0A+3WPWSo)fuu!ja(hRA%-&oIvr0bO7(=-Jn z4>~@-G>h1w5)f_WQco-dRjr5sggivfFA7(hweHQrWm`4 zqUZZr3{q1xSvU08mdZ@-ouCl&iPbeGeMVtAmSJc6vqe^Dw|>CPf;qw z=y`$2ty8iz>lTNq%80rZZp@#B8Hcb{I zVLy_Qf_)+6@EvZ4FpLc}v*pzIO1up%Br^c;)D$S8FpGCLoZM?ZgPhm#K|lW#wj-!K zqc<`ZLk%C?)}V*mS3CyuD8|p3m$(%%QUEs11&hcF!OC?IJ%66mv1u!G zxKgbhv+fVX42QvU6d0^6b(Qow_8Nkh$MXUGdWqg3wn$*&0%M;F>$(YW@!6qHqp(oF zKM(wYx70vNqks;E?GKHJQxLZ_h4j$O1#*TBFd%Cix%WcI13I-I8o3NPl2do@!X2Mh zx*HXz;b9p(WcN5?x;h~r=rr5hYjqv@=scbhr{t0*AU(5PK{?JW#zoD+u<&Jlk&Co)dj$TYx)!#jmAH~PB zhgQMYRMO@piSNbfr8ts*Vu(%?M0CssG9LA$ianOMlPCpC zhOU6or8q?rSQ!jSQ=;^PV+R_Mq!aL;@00l632zn4)jyYZQT4OwOS1_!~ zQ!<$ONG@#8{p*`omlj)Bm(D#WuU~z2;d1lU%RiW3y84C$`m?gQG{5xb;+4zIg@X81 ad3~Yz=J)4Iw)3DYF3!KUF#pEFy!;OyBgB{h diff --git a/utils/tex2rtf/docs/tex2rtf.hpj b/utils/tex2rtf/docs/tex2rtf.hpj deleted file mode 100644 index b00537e2d3..0000000000 --- a/utils/tex2rtf/docs/tex2rtf.hpj +++ /dev/null @@ -1,17 +0,0 @@ -[OPTIONS] -BMROOT=d:\wx2\wxWind~1\utils\tex2rtf\docs ; Assume that bitmaps are where the source is -TITLE=Tex2RTF Manual -CONTENTS=Contents -COMPRESS=HIGH - -[FILES] -tex2rtf.rtf - -[CONFIG] -CreateButton("Up", "&Up", "JumpId(`tex2rtf.hlp', `Contents')") -BrowseButtons() - -[MAP] - -[BITMAPS] - diff --git a/utils/tex2rtf/docs/tex2rtf.ini b/utils/tex2rtf/docs/tex2rtf.ini deleted file mode 100644 index fae52d1baf..0000000000 --- a/utils/tex2rtf/docs/tex2rtf.ini +++ /dev/null @@ -1,21 +0,0 @@ -; Tex2RTF initialisation file for 16-bit WinHelp -runTwice = yes -titleFontSize = 12 -authorFontSize = 10 -chapterFontSize = 12 -sectionFontSize = 12 -subsectionFontSize = 12 -headerRule = yes -footerRule = yes -useHeadingStyles = yes -contentsDepth = 2 -listItemIndent=40 -winHelpContents = yes -winHelpVersion = 3 ; 3 for Windows 3.x, 4 for Windows 95 -generateHPJ = yes -htmlBrowseButtons = bitmap -winHelpTitle = "Tex2RTF Manual" -truncateFilenames = yes -combineSubSections = yes -htmlIndex = yes -htmlFrameContents = no diff --git a/utils/tex2rtf/docs/tex2rtf.tex b/utils/tex2rtf/docs/tex2rtf.tex deleted file mode 100644 index 014c3e2648..0000000000 --- a/utils/tex2rtf/docs/tex2rtf.tex +++ /dev/null @@ -1,3299 +0,0 @@ -\documentstyle[a4,makeidx,verbatim,texhelp,fancyhea,mysober,mytitle]{report}% -\input{psbox.tex} -\newcommand{\commandref}[2]{\helpref{{\tt $\backslash$#1}}{#2}}% -\newcommand{\commandrefn}[2]{\helprefn{{\tt $\backslash$#1}}{#2}\index{#1}}% -\newcommand{\commandpageref}[2]{\latexignore{\helprefn{{\tt $\backslash$#1}}{#2}}\latexonly{{\tt $\backslash$#1} {\it page \pageref{#2}}}\index{#1}}% -\newcommand{\indexit}[1]{#1\index{#1}}% -\newcommand{\inioption}[1]{{\bf {\tt #1}}\index{#1}}% -\parskip=10pt% -\parindent=0pt% -%\backgroundcolour{255;255;255}\textcolour{0;0;0}% Has an effect in HTML only -\winhelpignore{\title{Manual for Tex2RTF 1.64:\\A \LaTeX\ to RTF and HTML converter}% -\author{Julian Smart}% -\date{October 1997}% -}% -\winhelponly{\title{Manual for Tex2RTF 1.64}% -\author{by Julian Smart\\$$\image{1cm;0cm}{tex2rtf.wmf}$$}% -}% -\makeindex% -\begin{document}% -\maketitle% -\pagestyle{fancyplain}% -\bibliographystyle{plain}% -\pagenumbering{roman}% -\setheader{{\it CONTENTS}}{}{}{}{}{{\it CONTENTS}}% -\setfooter{\thepage}{}{}{}{}{\thepage}% -\tableofcontents% - -\chapter*{Copyright notice}% -\setheader{{\it COPYRIGHT}}{}{}{}{}{{\it COPYRIGHT}}% -\setfooter{\thepage}{}{}{}{}{\thepage}% - -Copyright (c) 1997 Julian Smart. - -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 THE ARTIFICIAL INTELLIGENCE -APPLICATIONS INSTITUTE OR 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. - -\chapter{Introduction}% -\pagenumbering{arabic}% -\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}% -\setfooter{\thepage}{}{}{}{}{\thepage}% - -This document describes a utility for converting \popref{\LaTeX}{latexgloss}\ files into -several other formats. - -Only a subset of \LaTeX\ can be processed by this utility, especially -since the target document language will never perfectly match \LaTeX. -Whether the quality of the results is good enough will depend upon the -application and your own expectations. {\it This caveat is worth emphasizing}, because -many people assume that any old \LaTeX\ document will go through without modification: it might, -but the chances are you'll need to modify it a bit for Tex2RTF. Tex2RTF was written with -portable document maintenance and generation in mind, with less emphasis on accepting all \LaTeX\ syntax. -You have been warned! - -Tex2RTF is heavily biased towards making on-line, hypertext versions of -\rtfsp\LaTeX\ documents, but the \popref{RTF}{rtf} converter can be used to generate linear, -paper-based documents too. - -The latest version of Tex2RTF, plus source code, can be accessedfrom: - -\begin{verbatim} -http://web.ukonline.co.uk/julian.smart/tex2rtf -ftp://www.remstar.com/pub/wxwin/tex2rtf -\end{verbatim} - -It is available in Sun Open Look, Motif, Windows 3.1, Windows 95/NT, and -non-GUI UNIX versions. - -Tex2RTF was developed using the free Open Look, Motif and Windows 3.1 -C++ class library \popref{wxWindows}{wxwindows}. - -\section{Status of Tex2RTF}\index{status of Tex2RTF}% - -Tex2RTF is under continual development, often following users' -suggestions. From version 1.33, Tex2RTF is effectively in a second phase -of development. In addition to the bare minimum of syntax and facilities -for producing useable help systems or linear RTF, commands are being -added to allow visually effective, even aesthetically pleasing, -documentation to be produced. - -Examples are the \verb$\indented$, \verb$\twocollist$ and \verb$\marginpar$\rtfsp -commands; over time I hope to be able to reproduce most of the popular -styles of formatting and presentation in Windows Help files, whilst -allowing a reasonable equivalent to be generated in the other formats. - -Some new developments in the various formats still need to be catered -for by Tex2RTF, such as Windows 95 help files and HTML 3.0. Features -that can be added to Tex2RTF as a result of these developments include -math and inline image map support in HTML, table support in Windows -Help, and generally better formatting abilities in both. However, documentation -about these formats is sketchy at the time of writing (October 1995). - -\section{Acknowledgements}\index{acknowledgements}% - -Thanks are due to the many people in AIAI and on the Internet at large -who have pointed out bugs or shortcomings in Tex2RTF. Michel Lavaud has been -a great help in giving advice for improvements to the manual. - -\section{Change log}\index{change log}% - -Version 1.64, October 20th 1998 - -\begin{itemize}\itemsep=0pt -\item Added \verb$\insertatlevel$ command. -\end{itemize} - -Version 1.63, October 21st 1997 - -\begin{itemize}\itemsep=0pt -\item Debugged problem with Word bookmarks not being inserted for unnumbered -sections. -\end{itemize} - -Version 1.62, August 18th 1997 - -\begin{itemize}\itemsep=0pt -\item Added contributed changes by Andreas Münzenmaier to support German -accents by allowing the characters to be placed in input files, and also -converting them back to character codes in the WinHelp {\tt .cnt} file. -\item Now \verb$\helpref$ causes page references to be inserted in linear RTF, -or section references if not on Word mode. -\item WinHelp table caption bug fixed. -\end{itemize} - -Version 1.61, June 11th 1997 - -\begin{itemize}\itemsep=0pt -\item \verb$\fcol$ now works in HTML using the FONT tag. -\item \verb$\twocollist$ works in indented paragraphs, and is now -implemented properly using tables in HTML. -\item New boolean option {\bf combineSubSections} added, which switches off -the generation of separate HTML files below section level. This can reduce the -number of HTML files substantially. -\end{itemize} - -Version 1.60, February 18th 1997 - -\begin{itemize}\itemsep=0pt -\item The index command now allows complex LaTeX instead of inserting the -first argument verbatim. -\end{itemize} - -Version 1.59, February 14th 1997 - -\begin{itemize}\itemsep=0pt -\item Added special processing for a chapter called Popups. -\end{itemize} - -Version 1.58, August 1st 1996 - -\begin{itemize}\itemsep=0pt -\item Added HTML settings: backgroundImage, backgroundColour, textColour, -linkColour, followedLinkColour. -\item Added \verb$\backgroundimage$, \verb$\backgroundcolour$, \verb$\linkcolour$, -\verb$followedLinkColour$. \verb$\background$ now obsolete (but behaviour is -backward compatible). -\item The default background colour is now white. -\item Debugged HTML \verb$\ss$ (put in wrong place in code). -\end{itemize} - -Version 1.57, July 27th 1996 - -\begin{itemize}\itemsep=0pt -\item Added upperCaseNames setting; now all links in HTML files are in lower -case unless specified otherwise. -\end{itemize} - -Version 1.56, May 25th 1996 - -\begin{itemize}\itemsep=0pt -\item Debugged \verb$\special$ processing for HTML (escaped characters such ampersand). -\item Added contentsDepth for Word RTF contents page. -\item Removed overlapping href in HTML pages. -\end{itemize} - -Version 1.55, May 6th 1996 - -\begin{itemize}\itemsep=0pt -\item \verb$\verb$ support corrected for HTML. -\item Added {\it abstractName} setting. -\item Debugged incorrect centring for HTML buttons. -\end{itemize} - -Version 1.54, Feburary 28th 1996 - -\begin{itemize}\itemsep=0pt -\item Bug fix for 24-bit bitmap inclusion when generating RTF: -caused a floating point error. -\item Added htmlIndex setting, to generate an {\tt .htx} index file of an HTML document for -use in wxHelp version 2 or other programs. -\item Fixed header/footer bug. -\item Change colons to spaces for WinHelp RTF keywords, since the colon has a specific meaning in WinHelp. -\end{itemize} - -Version 1.53, January 1995 - -\begin{itemize}\itemsep=0pt -\item Now stores paths from file inclusions, so that if you include -a file A from a separate directory, which then includes a file B -relative to that directory, Tex2RTF will search in the path -of A to find file B. -\end{itemize} - -Version 1.52, December 1995 - -\begin{itemize}\itemsep=0pt -\item \verb$\helpref$ and related commands now generate italicized instead -of bold `anchor' text for linear formats. -\item Cured bug where Tex2RTF could hang on start up, while reading -the {\tt tex2rtf.ini} file. This occurred when a comment finished with -the end of file. -\item Split the commands reference in two (\LaTeX\ and Tex2RTF commands), -and added a {\it Commands by category} section. -\item Removed a bug that caused HTML output to be garbled on the -second pass. -\end{itemize} - -Version 1.51: Windows 95 enhancements. - -\begin{itemize}\itemsep=0pt -\item Added settings winHelpContents (for generating {\tt .cnt} file), winHelpVersion (for specifying -target version of WinHelp). -\item Added space to non-scrolling region of topic. -\item If winHelpVersion is 4, makes non-scrolling region grey and the rest yellow. -\item Added \verb$\settransparency$ command for WinHelp 4 transparent bitmaps. -\end{itemize} - -Version 1.50: - -\begin{itemize}\itemsep=0pt -\item Tidied up HTML generation (headers and bodies in the right places). -\item Eliminated extra space after verbatim in HTML. -\item Added support for simple tables in HTML. -\item Added \verb$\textcolour$, \verb$\background$ for colouring text and background in HTML. -\item Added \verb$\copyright$, \verb$\registered$ symbols in HTML. -\item Added \verb$\imagel$, \verb$\imager$ for left and right aligned images -in HTML. -\item Added \verb$\brclear$ for clearing image alignment in HTML. -\item Added \LaTeX\ font size support in HTML (\verb$\small$, \verb$\large$ etc.) using Netscape font extensions. -\item HTML button-bar change: always shows the same buttons, but may make one or more insensitive. Changing button positions -could be very annoying. -\item Tidied up RTF generation for non-Word viewers ({\it useWord} set to {\it false}). Will now look reasonable using -Windows 95 Quick View and WordPad: WordPad doesn't do tables but does bitmaps, and QuickView does tables but not -bitmaps. Such is life. -\end{itemize} - -Version 1.49: - -\begin{itemize}\itemsep=0pt -\item Cured some bugs (char used for fgetc instead of int) so now compiles for -WIN32s. -\end{itemize} - -Version 1.48: - -\begin{itemize}\itemsep=0pt -\item Added some LaTeX2e fonts commands such as \verb$\rmfamily$, \verb$\textrm$, \verb$\emph$. -Most of these are aliases for other commands. -\end{itemize} - -Up to version 1.47: - -\begin{itemize}\itemsep=0pt -\item Added \verb$\backslashraw$, \verb$\rbraceraw$ and \verb$\lbraceraw$ commands -to help output arbitrary RTF. -\item Added \verb$\sethotspotcolour$, \verb$\sethotspotunderline$ commands for controlling -WinHelp hotspot appearance. -\item Added truncateFilenames option. -\item Improved HTML inline image handling. -\end{itemize} - -Up to version 1.46: - -\begin{itemize} -\itemsep=0pt -\item Added \verb$\urlref$ command for specifying HTML URLs. -\item Started support for translating .SHG files to HTML .map files -(this works if compiled under Borland, not MS VC++ for some reason!) -\item Fixed nasty memory bug in HTML code (thanks Petr). -\end{itemize} - -Version 1.40: - -\begin{itemize} -\itemsep=0pt -\item Added {\it generateHPJ} option for generating the .HPJ WinHelp project file -\item Added support for DDE via a small command set -\end{itemize} - -Version 1.39: - -\begin{itemize} -\itemsep=0pt -\item Option for using Word's INCLUDEPICTURE or IMPORT field, since the method that -works for Works, doesn't work for Word! See {\it bitmapMethod} in the -settings section. -\end{itemize} - -Version 1.37-1.38: - -\begin{itemize} -\itemsep=0pt -\item Improved bibliography reading and cured some minor bugs -\item Added \verb$\ss$ German sharp s -\item Added rudimentary \verb$\special$ command (simply copies the argument -to the output) -\item Added missing '.' in subsubsection reference -\item Added primitive internationalisation support with contentsName, tablesName etc. -\end{itemize} - -Version 1.36: - -\begin{itemize} -\itemsep=0pt -\item All HTML special characters now correctly delimited by a semicolon. -\item Cured HTML section-duplicating bug I introduced in 1.35. -\item Cured too much spacing after sections in RTF, introduced in 1.35. -\end{itemize} - -Version 1.35: - -\begin{itemize} -\itemsep=0pt -\item Added TCHECK tool, to help track down common Tex2RTF syntax problems. -\item Included Kresten Thorup's LACHECK \LaTeX\ checking tool with DOS executable. -\item Now ignores \verb|\@| command. -\item Table of contents now includes numbered subsubsections. -\end{itemize} - -Version 1.34: - -\begin{itemize} -\itemsep=0pt -\item Added \verb$\multicolumn$ `support' to stop RTF readers crashing. -\item Added {\it useWord, defaultColumnWidth, compatibility} options to {\tt .ini} file. -\item \verb$\comment$ environment now doesn't complain about unknown syntax. -\item Added \verb$\toocomplex$ environment that treats its contents as -verbatim in output, treated as normal output in true \LaTeX. -\item End-of-line comments allowed in in {\tt .ini} files, using semicolon, -percent or hash characters to denote a comment. -\item For linear RTF, Word for Windows support for \verb$\printindex$,\rtfsp -\verb$\index$, \verb$\pageref$, \verb$\listoftables$, \verb$\listoffigures$, contents page. -\item Added RTF support for various symbols. -\item Added colour support, with \verb$\definecolour$, \verb$\fcol$ and \verb$\bcol$ commands. -\item Fixed some bugs: page numbering problems, macros deleted after first pass. -\end{itemize} - -Version 1.33: - -\begin{itemize} -\itemsep=0pt -\item Added -charset command-line switch. -\item Added \verb$\itemsep$, \verb$\twocolumn$, \verb$\onecolumn$, \verb$\setfooter$, \verb$\setheader$, \verb$\pagestyle$, -\verb$\pagenumbering$, \verb$\thechapter$, \verb$\thesection$, \verb$\thepage$, \verb$\thebibliography$, \verb$\bibitem$ commands. -\item New environment called \verb$\twocollist$ for making two-column lists, -with formatting optimized for target file format. -\item New \verb$\indented$ environment for controlling indentation. -\item List indentation and bulleting improved. -\item Added commands \verb$\normalbox$, \verb$\normalboxd$ for putting borders around text. -\item Many options can now be specified in the {\tt .ini} file along with custom macros. -\item Cured bug that put too much vertical space after some commands. -\item Improved table formatting. -\item Optional `Up' button in WinHelp files for easier navigation. -\item Verbatim lines followed by \verb$\par$ in RTF, to improve WinHelp wrapping. -\item Conversion may now be aborted under Windows by attempting to close the application. -\item Added conditional output for all formats: \verb$\latexignore$, \verb$\latexonly$, \verb$\rtfignore$, \verb$\rtfonly$, -\verb$\winhelpignore$, \verb$\winhelponly$, \verb$\htmlignore$, \verb$\htmlonly$, \verb$\xlpignore$, \verb$\xlponly$. -\item HTML generator can now add Contents, Up, $<<$ and $>>$ buttons (text or bitmap) to -each page except titlepage. -\end{itemize} - -Version 1.32: - -\begin{itemize} -\itemsep=0pt -\item \verb$\footnote$ command now supported in WinHelp RTF, and \verb$\footnotepopup$\rtfsp -added. -\end{itemize} - -Version 1.31: - -\begin{itemize} -\itemsep=0pt -\item \verb$\footnote$ command now supported, in linear RTF only. -\item Added {\tt -bufsize} option, for converting large documents. -\end{itemize} - -Version 1.30: - -\begin{itemize} -\itemsep=0pt -\item \verb$\image$ command now scales metafiles (but not bitmaps). -\item Fixed macro loading bug, now informs the user of the found macro filename. -\item Now supports paragraph and subparagraph commands. -\item Support for some accents added. -\item \verb$\verb$ command now supported. -\item Bug in subsubsection handling fixed. -\item Can save conversion log in a text file. -\end{itemize} - -Version 1.22: - -\begin{itemize} -\itemsep=0pt -\item More informative, warns against use of some commands. -\item Added compile-time support for non-GUI environments (such as plain UNIX). -\item Improved HTML support. -\end{itemize} - -\chapter{Running Tex2RTF}\index{running Tex2RTF}% -\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}% -\setfooter{\thepage}{}{}{}{}{\thepage}% - -Tex2RTF may be run in a number of ways: with or without command line arguments, -interactively or in batch mode, and with an optional initialisation file -for specifying \LaTeX\ macros and detailed options. - -Tex2RTF accepts two arguments (input and output filenames) and trailing -(optional) switches. If both filenames are given, the utility will work -in batch mode. Otherwise, if Tex2RTF has been compiled for GUI -operation, a main window will be shown, with appropriate menu items for -selecting input and output filenames, starting off the conversion -process, and so on. - -Note that if the file {\tt bullet.bmp}\index{bullets} is found by Tex2RTF, this bitmap -will be used as the bullet for items in \verb$\itemize$ lists, for WinHelp -output. Otherwise, a symbol will be inserted (linear RTF) or bold `o' -will be used instead (all other formats). - -Syntax error reporting is fairly minimal. Unrecognised macro errors may -actually be produced by an unbalanced brace or passing the wrong number of -arguments to a command, so look in the vicinity of the error for the -real cause. - -\normalbox{Some of the syntax that is OK for true \LaTeX\ but which trips up -Tex2RTF, may be detected by the TCHECK\index{TCHECK} program included in the tools -directory of the Tex2RTF distribution. Some \LaTeX\ errors may be picked up -by the LACHECK\index{LACHECK} program, also found in the tools directory.} - -It is recommended that you run Tex2RTF twice in order to be sure of -resolving all references and including an up-to-date contents page. - -If importing RTF files into Word for Windows\index{Microsoft Word}, you may need to reformat -the document. The easiest way to do this is to select all text with -CTRL-A, then reformat with F9. Reformat again to ensure all references -are resolved. For the second format, respond with {\it Update Entire -Table} to prompts. - -\winhelponly{ -\section{Tex2RTF Interface} - -This is the Tex2RTF interface under Windows. Click on an area of the -picture for more information. - -$$\imagemap{1cm;0cm}{screen}{mapref}$$ - -\subsection{Menu bar}\label{menubar} - -Use the menubar for interactive operations. - -\subsection{Message area}\label{messagearea} - -Tex2RTF writes warning and error messages on this window. - -\subsection{Status line}\label{statusline} - -Displays help on menu items as the user drags the cursor over the menus. - -\subsection{Mode indicator}\label{modeindicator} - -Displays the output mode Tex2RTF is currently in. -} - -\section{Command line arguments}\index{command line arguments}% - -These are the optional arguments you may give Tex2RTF on the command line. - -\twocolwidtha{5cm} -\begin{twocollist} -\twocolitem{{\bf -bufsize}}{Specifies buffer size in K (default 60 under Windows, -500 under UNIX). Large files (particularly large verbatim environments) -may require a large buffer size, equal to the largest argument of a \LaTeX\ command. -Note that this value may not be larger than 64 under Windows.} -\twocolitem{{\bf -html}}{Specifies HTML (World Wide Web) output.} -\twocolitem{{\bf -interactive}}{Forces interactive mode even if both -filenames are given.} -\twocolitem{{\bf -charset charset}}{Specifies a character set for -RTF production. This can be one of ansi, mac, pc, and pca. -The default is ansi.} -\twocolitem{{\bf -macros filename}}{Specifies a file for the custom macro -file -- see \helpref{Macro not found error}{macronotfound}.} -\twocolitem{{\bf -rtf}}{Specifies linear RTF output.} -\twocolitem{{\bf -sync}}{Forces synchronous mode (no yielding to other -processes) -- usually use this in non-interactive mode.} -\twocolitem{{\bf -twice}}{Tells Tex2RTF to run the conversion twice to ensure all -references and citations are resolved and the contents page included.} -\twocolitem{{\bf -winhelp}}{Specifies Windows Help RTF output.} -\end{twocollist} - -\section{Initialisation file syntax}\label{inifile}\index{initialisation file}% - -The initialisation file contains further detailed options for -customising Tex2RTF's behaviour. A file may be specified -with the {\tt -macros} command line switch, otherwise Tex2RTF -looks for the file {\tt tex2rtf.ini} in the working directory -or input file directory. - -The file may comprise macro\index{macros} (command) definitions or option settings. - -The syntax for a macro definition is: - -\begin{verbatim} - \name [number of args] {...LaTeX code...} -\end{verbatim} - -For example: - -\begin{verbatim} - \crazy [2]{{\bf #2} is crazy but #1 is not} - \something [0]{} - \julian [0]{Julian Smart} -\end{verbatim} - -The syntax for an option setting is: - -\begin{verbatim} - name = value -\end{verbatim} - -or - -\begin{verbatim} - name = "value" -\end{verbatim} - -For example: - -\begin{verbatim} - conversionMode = RTF - runTwice = true - titleFontSize = 12 - authorFontSize = 10 - headerRule = yes - footerRule = yes -\end{verbatim} - -Options expecting boolean values accept {\it 1, 0, true, false, yes, no} in any combination of upper or -lower case. - -End-of-line comments are allowed in an initialisation file, using the -hash, semicolon or percent signs to denote the start of a comment, which runs -until the end of the line. - -\subsection{Tex2RTF options}\index{options in initialisation file}\index{tex2rtf.ini}\index{initialisation file}\index{macros}% - -These are the allowable options in an initialisation file. - -\subsubsection{General options}\label{generaloptions} - -\twocolwidtha{5cm} -\begin{twocollist} -\htmlignore{\twocolitemruled{Option}{Description}} -\twocolitem{\inioption{compatibility}}{Set to true for maximum \LaTeX\ compatibility, e.g. if -tables crash RTF readers. Should be false (default) if the Tex2RTF guidelines -are followed, e.g. use of $\backslash${\tt row} command in tabular environment.} -\twocolitem{\inioption{conversionMode}}{One of RTF, WinHelp, XLP (or wxHelp), and HTML.} -\twocolitem{\inioption{ignoreInput}}{Adds the filename to the list of files ignored by the $\backslash${\tt input} command. -The only default filename in the list is {\tt psbox.tex}.} -\twocolitem{\inioption{isInteractive}}{If true, runs in interactive mode (the default).} -\twocolitem{\inioption{runTwice}}{If true, runs the converter twice.} -\end{twocollist} - -\subsubsection{Presentation options}\index{options, presentation}% - -\begin{twocollist} -\htmlignore{\twocolitemruled{Option}{Description}} -\twocolitem{\inioption{authorFontSize}}{Specifies the point size for the author and date (RTF only).} -\twocolitem{\inioption{chapterFontSize}}{Specifies the point size for chapter headings (RTF only).} -\twocolitem{\inioption{documentFontSize}}{One of 10, 11 and 12, to specify the main font size -independently of the \LaTeX\ document style command.} -\twocolitem{\inioption{sectionFontSize}}{Specifies the point size for section headings (RTF only).} -\twocolitem{\inioption{subsectionFontSize}}{Specifies the point size for subsection headings (RTF only).} -\twocolitem{\inioption{titleFontSize}}{Specifies the point size for the title (RTF only).} -\twocolitem{\inioption{chapterName}}{The string used when referencing chapters. The default is ``chapter".} -\twocolitem{\inioption{sectionName}}{The string used when referencing sections. The default is ``section".} -\twocolitem{\inioption{subsectionName}}{The string used when referencing subsections. The default is ``subsection".} -\twocolitem{\inioption{subsubsectionName}}{The string used when referencing subsubsections. The default is ``subsubsection".} -\twocolitem{\inioption{indexName}}{The string used for printing the index heading. The default is ``Index".} -\twocolitem{\inioption{contentsName}}{The string used for printing the contents heading. The default is ``Contents".} -\twocolitem{\inioption{abstractName}}{The string used for printing the abstract heading. The default is ``Abstract".} -\twocolitem{\inioption{tablesName}}{The string used for printing the list of tables heading. The default is ``List of Tables".} -\twocolitem{\inioption{tableName}}{The string used when referencing a table. The default is ``table".} -\twocolitem{\inioption{figuresName}}{The string used for printing the list of figures heading. The default is ``List of Figures".} -\twocolitem{\inioption{figureName}}{The string used when referencing a figure. The default is ``figure".} -\twocolitem{\inioption{glossaryName}}{The string used for printing the glossary heading. The default is ``Glossary".} -\twocolitem{\inioption{referencesName}}{The string used for printing the references heading. The default is ``References".} -\end{twocollist} - -\subsubsection{RTF and WinHelp options}\label{rtfwinhelpoptions}\index{options, RTF}\index{RTF}% - -\begin{twocollist} -\htmlignore{\twocolitemruled{Option}{Description}} -\twocolitem{\inioption{bitmapMethod}}{Can be ``hex'' (embed the hex data in the file with a $\backslash$dibitmap keyword), -``includepicture'' (use the MS Word 6.0 INCLUDEPICTURE field) or ``import'' (an earlier name -for INCLUDEPICTURE). ``hex'' may be used for importing into MS Works, but this doesn't work -for Word 6.0. The default is ``includepicture''.} -\twocolitem{\inioption{contentsDepth}}{The depth of headings that is displayed in the table of contents. The default -is 4 but you may wish to reduce this, for example for manuals that document C++ and have a large number of -headings for member functions.} -\twocolitem{\inioption{defaultColumnWidth}}{The width in points for columns in tables -where the width of the column is not set by using {\it p} in the tabular -argument. The default is 100.} -\twocolitem{\inioption{footerRule}}{If true, draws a rule above footers (linear RTF only).} -\twocolitem{\inioption{generateHPJ}}{If true, generates a .HPJ project file (WinHelp mode only).} -\twocolitem{\inioption{headerRule}}{If true, draws a rule below headers (linear RTF only).} -\twocolitem{\inioption{listLabelIndent}}{Specifies the size of list item label indentation, in points. -The default is 18.} -\twocolitem{\inioption{listItemIndent}}{Specifies the size of list item indentation, in points. The default -is 40.} -\twocolitem{\inioption{indexSubsections}}{If true (the default), subsection and subsubsection -titles are indexed in RTF mode.} -\twocolitem{\inioption{mirrorMargins}}{If true, margins are mirrored in twosided documents (linear RTF only).} -\twocolitem{\inioption{useWord}}{If true (the default), Word for Windows RTF -formatting is used where possibly, e.g. for the table of contents, list of -tables, and list of figures.} -\twocolitem{\inioption{useHeadingStyles}}{If true (the default), sections are marked with -appropriate heading styles for generating the table of contents in RTF.} -\twocolitem{\inioption{useUpButton}}{If true (the default), WinHelp files will be generated with an {\bf Up}\rtfsp -button to make browsing easier. Note that you need to put an extra line in the CONFIG section -of your .HPJ file: - -{\tt CreateButton("Up", "\&Up", "JumpId(`name.hlp', `Contents')")} - -where {\tt name.hlp} is the name of your help file.} -%%% NEED TO BREAK THE LIST AT THE PAGE BREAK BECAUSE LATEX IS STUPID -%%% UNFORTUNATELY, Tex2RTF IS STUPIDER SO NEED TO COMMENT OUT THIS -%%% LINE WHEN MAKING HTML, RTF, XLP -%\latexonly{\end{twocollist}\newpage\begin{twocollist}} -\twocolitem{\inioption{winHelpContents}}{If yes, ok or true, a WinHelp {\tt .cnt} file will be generated (used in Windows 95 for either old WinHelp -files or new WinHelp 4 files).} -\twocolitem{\inioption{winHelpVersion}}{The version of WinHelp being targetted. This affects the generated {\tt .hpj} file and features -such as transparent bitmaps which are new to version 4 or later. The default is 3.} -\twocolitem{\inioption{winHelpTitle}}{Windows Help file title, inserted into the project file if {\it generateHPJ} is true.} -\end{twocollist} - -\subsubsection{HTML options}\label{htmloptions}\index{options, HTML}\index{HTML}% - -\begin{twocollist} -\htmlignore{\twocolitemruled{Option}{Description}} -\twocolitem{\inioption{htmlBrowseButtons}}{Allows generation of Contents, Up, browse back and browse forward -buttons on each HTML page except title page. Specify none, text or bitmap. If you specify -bitmap, make sure that the files {\tt contents.gif}, {\tt up.gif}, {\tt back.gif} and {\tt forward.gif} are in the -directory where the HTML files will reside: samples are given in the docs directory.} -\twocolitem{\inioption{truncateFilenames}}{If true, uses {\tt .htm} suffix instead of {\tt .html}, -and truncates filenames within HTML documents.} -\twocolitem{\inioption{htmlIndex}}{If true, specifies generation of an {\tt .htx} index file for an HTML document. -This file can be used in wxHelp version 2 or other programs. The file consists of a number of lines, -each line with three fields separated by bar characters: the indexed phrase, the file, and a label in the file.} -\twocolitem{\inioption{upperCaseNames}}{If true, filenames in links are in upper case. By default -filenames are in lower case.} -\twocolitem{\inioption{backgroundColour}}{Specifies the RGB background colour for the document, e.g. {\tt 255;255;255} for white. -The default is white.} -\twocolitem{\inioption{backgroundImage}}{Specifies the RGB background image for the document, e.g. {\tt tile.gif}.} -\twocolitem{\inioption{textColour}}{Specifies the RGB text colour for the document, e.g. {\tt 0;0;0} for black.} -\twocolitem{\inioption{linkColour}}{Specifies the RGB link colour for the document, e.g. {\tt 0;0;255} for blue.} -\twocolitem{\inioption{followedLinkColour}}{Specifies the RGB followed link colour for the document, e.g. {\tt 0;0;255} for blue.} -\twocolitem{\inioption{combineSubSections}}{If true (or yes), switches off -the generation of separate HTML files below section level. This can reduce the -number of HTML files substantially. A subsection contents list is inserted before -the first subsection.} -\end{twocollist} - -\section{DDE commands}\index{DDE}% - -A Windows program can hold a conversation with Tex2RTF using DDE. The Tex2RTF server name is -``TEX2RTF'', and the topic name to use is also ``TEX2RTF''. - -Tex2RTF functionality is accessed using the DDE {\it Execute} message. -The {\it Execute} data should consist of a command name and possibly one -argument, e.g. - -\begin{verbatim} - INPUT c:\docs\mine.tex -\end{verbatim} - -If the command is not recognised, a standard TEX2RTF.INI option is assumed. - -The {\it Request} DDE message can be used to query the return status of an {\it Execute} -command, and will be one of {\it OK} (no error), {\it CONVERSION ERROR}, or a more -specific error string. - -The following DDE commands may be used: - -\begin{twocollist} -\htmlignore{\twocolitemruled{Command}{Description}} -\twocolitem{\inioption{EXIT}}{Takes no argument, and exits Tex2RTF.} -\twocolitem{\inioption{GO}}{Takes no argument, and initiates the conversion.} -\twocolitem{\inioption{INPUT}}{Takes a file name as the argument, and sets the input file to be this name.} -\twocolitem{\inioption{MINIMIZE}}{Takes no argument, and minimizes Tex2RTF.} -\twocolitem{\inioption{OUTPUT}}{Takes a file name as the argument, and sets the input file to be this name.} -\twocolitem{\inioption{RESTORE}}{The same as SHOW.} -\twocolitem{\inioption{SHOW}}{Takes no argument, and unminimizes Tex2RTF.} -\end{twocollist} - -\section{Performance issues}\index{performance}% - -Since Tex2RTF reads the whole file into memory, a lot of memory is needed. -For very large documents, 16MB of RAM is adviseable. - -I tested conversion of the wxWindows 1.63 manual on both VC++ 1.5 and -Watcom WIN32s versions of Tex2RTF, both running under Windows 3.11 on a -Gateway P60 with 16MB of RAM and a 2MB disk cache. Two passes were -made, with 1.5MB of WinHelp RTF being generated. The unoptimized 16-bit -version took 169 seconds. The optimized WIN32s version took 126 seconds, -a significant improvement. Systems with faster disk subsystems should see -an even better relative performance of the 32-bit version. - -\chapter{Writing documents with Tex2RTF}\index{LaTeX}% -\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}% -\setfooter{\thepage}{}{}{}{}{\thepage}% - -\section{Why use \LaTeX?} - -\LaTeX\ happens to be a very convenient format if you need to produce -documents (such as manuals, help facilities, up-to-date information) in -both printed and on-line media. Being a language rather than a WYSIWYG system, -it allows explicit specification of layout and document structure, lending -itself well to hypertext applications and automatic document generation. -Many people also prefer to use \LaTeX\ for ordinary use since it encourages -a logical document structure and the user is not distracted by having to perfect -the appearance; many layout decisions are taken by \LaTeX\ automatically. - -Although \LaTeX\ is not as fancy as modern word processors and desk-top -publishing packages, it is for many purposes quite adequate, and sometimes -more flexible than its modern counterparts. - -The conversion utility gives \LaTeX\ a new lease of life by allowing -virtually all other wordprocessor formats to be generated from documents -containing a reasonable subset of \LaTeX\ syntax. From the same \LaTeX\ -sources, we can now generate printed manuals, Windows Help files, \popref{wxHelp}{wxhelp}\rtfsp -files, RTF-compatible word processor formats such as MS Word, and \popref{HTML}{html}\rtfsp -files for use in the World Wide Web. Since the conversion tool is -free, as are \LaTeX, HTML viewers, wxHelp and (effectively) Windows -Help, there are no financial or time penalties for providing -documentation in a wide range of printed and hypertext formats. - -\section{Help versus the printed page}\index{on-line help}% - -The purist may argue, quite rightly, that on-line help systems and -printed manuals have different characteristics; help windows tend to be -much smaller than pages, help topics should be more stand-alone than -pages in a manual, navigation methods are very different, etc. Therefore, -help systems should be {\it based} on printed documentation but -separately hand-crafted into hypertext help, preferably by an -independent person or team. - -This might be the ideal, but many organisations or individuals simply -do not have the time: on-line help wouldn't get done if the -documentation effort had to be doubled. However, Tex2RTF does provide -some commands to allow tailoring the documentation to printed or -on-line form, such as \verb$\helponly$ and \verb$\helpignore$. An awareness -of the design issues should go a long way to making the compromise -a good one, so a book such as {\it Developing On-line Help for Windows} \cite{helpbook} is highly recommended. - -\section{Output Formats}\index{output formats}% - -At present the following output formats are supported: - -\begin{itemize} -\itemsep=0pt -\item RTF (Rich Text Format)\index{RTF}. This is the most well developed -converter. RTF is commonly used as a document exchange format amongst -Windows-based applications, and is the input for the Windows Help -Compiler. Tex2RTF supports both linear documents and Windows Help -hypertext format. -\item HTML (Hypertext Markup Language)\index{HTML}. This an SGML-based format -commonly used by documents in the World Wide Web distributed hypertext -system, and formats text dynamically rather like Windows Help. -\item wxHelp\index{wxHelp}. This is the platform-independent help system for -the class library wxWindows (see the wxWindows User Manual \cite{smart93a}). -It can display ASCII files with embedded codes -for changing font styles, but no formatting is done by wxHelp. -\end{itemize} - -\section{What compromises must I make?}\index{compromises}\index{LaTeX}% - -As a \LaTeX\ user, you need to be aware that some commands or facilities -don't transfer to other formats, either because they are not supported -by the target format or because the converter does not support them. -Maths formatting is a good example of an unsupported feature. - -Sometimes \LaTeX\ facilities must be accessed in a slightly different -way to support the variety of formats, particularly hypertext formats -where \LaTeX\ references are often replaced by hypertext jumps (but must -still look right in printed documentation). Tables don't transfer well -to RTF and HTML (and not at all to wxHelp) but an attempt is made -to approximate tables so long as special row commands are used, instead -of the usual end of row delimiter. - -Bibliographies are handled quite well since the utilities can read in\rtfsp -{\tt .bib} files and resolve citations. Numbers are used in citations; -the references are not yet sorted alphabetically. - -Pictures\index{pictures} are handled in a limited way: if the PSBOX\index{PSBOX} macro package is -used, an \verb$\image$ command can be used to place Encapsulated PostScript -files in \LaTeX, and Windows RGB-encoded bitmap files or placeable -metafiles when converting to RTF. - -Nested file inclusion\index{file inclusion} is handled with \verb$\input$, \verb$\include$ and \verb$\verbatiminput$, -and the comment environment is supported. However, using \verb$\input$\rtfsp -to include macro packages is not advisable. If you do this, -make sure you add a line in the Tex2RTF initialisation file to ignore -this file, unless it's a simple \LaTeX\ file that conforms to Tex2RTF -restrictions. The file {\tt psbox.tex} is the only file ignored -by Tex2RTF by default. - -Because of the way \LaTeX\ is parsed, some syntax\index{syntax restrictions} has to conform to a -few simple rules. Commands such as \verb$\bf$ and \verb$\it$ need to occur -immediately after a left brace, and have a block of their own, since -the text within their scope is regarded as its argument. This syntax -means the same thing as using \verb$\begin ... \end$, which is usually -a one argument command (the argument is the text between the \verb$\begin$\rtfsp -and \verb$\end$). See \helpref{Space}{space}. - -As a Windows hypertext help writer\index{on-line help}, you don't have access to all RTF -commands but you'll be able to get most of what you want. In particular, -any \LaTeX\ document you write will automatically be a hypertext -document, because the converter takes advantage of the hierarchy of -sections. Further jumps can be placed using the commands -\rtfsp\commandrefn{label}{label}, \commandrefn{helpref}{helpref}, -\rtfsp\commandrefn{helprefn}{helprefn}, and \commandrefn{popref}{popref}. -Tex2RTF outputs help files that may be read linearly using the -\rtfsp$<<$ and $>>$ buttons, and an additonal Up button for -ease of navigation. - -When writing HTML, multiple files are generated from one \LaTeX\ file -since browsing HTML works best with many small files rather than a few -large ones. - -wxHelp files are least well supported since there is no formatting -support, only font style, sizes and colours. Still, some hypertext help -support on UNIX/X platforms is better than none. wxHelp is now being rewritten (March 1996) -to use HTML files. - -Sometimes you will use a local macro package that is unrecognised by -the converters. In this case, you may define a custom macro file -where macros are defined in terms of supported \LaTeX\ commands -and text. Even if the result is not the same as in \LaTeX, you -can probably end up with something adequate, and at least avoid -undefined macro errors. See \helpref{Initialisation file syntax}{inifile} for -further information. - -\section{Changes to LaTeX syntax} - -Here are the conventions you need to observe to satisfy the Tex2RTF -parser. - -\subsection{Space}\label{space}\index{space}% - -Tex2RTF attempts to insert spaces where \LaTeX\ assumes whitespace. -However, for the benefit of RTF conversion, you need to use the \commandrefn{rtfsp}{rtfsp} command -where a command or brace within a paragraph begins or ends with a macro. For example: - -\begin{verbatim} - Within a paragraph, you need to be careful about commands - \rtfsp{\it that begin at the start of a line.} -\end{verbatim} - -As normal with \LaTeX, two newlines represents a paragraph break, -although \commandrefn{par}{par} can also be used at the end of a paragraph. - -You need to have a blank line between section and some environment -commands and the first paragraph or your document will look rather -weird, e.g. headings running into paragraphs. - -wxHelp is more fussy than \LaTeX\ or RTF: you need to use percent -characters at line ends liberally to eliminate newlines after commands -on single lines. - -\subsection{Command arguments}\index{LaTeX commands}% - -Commands that have one or more arguments can be used in the following -three ways: - -\begin{verbatim} - \bf{Some text.} - - \begin{bf} - Some text. - \end{bf} - - {\bf Some text.} -\end{verbatim} - -The first method is a normal \LaTeX\ command. - -The second method is called an {\it environment}; \LaTeX\ has specific -environments that do not always correspond to normal commands, but -Tex2RTF recognizes environments and normal commands interchangeably, so -long as the command has no more than two arguments. - -With the third method, it is important that the command has its own -pair of braces, and that the command immediately follows the first brace. -Otherwise, the parser cannot parse the argument(s) properly. -With multiple arguments, each should be enclosed in braces. - -Optional arguments are specified using square brackets or parentheses. - -The braces that start command arguments must not be seperated from -the other arguments by whitespace. For example, the following produces -an error: - -\begin{verbatim} - \image{5cm;0cm} - {picture.eps} -\end{verbatim} - -and should be replaced by - -\begin{verbatim} - \image{5cm;0cm}{picture.eps} -\end{verbatim} - -\subsection{Avoid the setlength command} - -Using the $\backslash$setlength command doesn't work, since its first -argument looks like a command with the wrong number of arguments. Use an -alternative form instead, e.g. - -\begin{verbatim} - \parindent 0pt -\end{verbatim} - -instead of - -\begin{verbatim} - \setlength{\parindent}{0pt} -\end{verbatim} - -\subsection{Units}\index{units}% - -Only a subset of \LaTeX\ units may be used for specifying dimensions. -Valid units are {\tt pt, mm, cm} and {\tt in}. Units should usually -be specified for dimensions or the results may be unexpected. - -\subsection{Labels}\index{labels}% - -The \verb$\label$ command may be used for sections and figure captions, -but must come immediately after the section or caption commands with no -intervening whitespace. - -\subsection{Tables}\label{tables}\index{tables}% - -For best layout, table rows should be enclosed in a \verb$\row$\rtfsp -or \verb$\ruledrow$ command, since Tex2RTF can't cope with parsing -the \LaTeX\ tabular syntax unaided. However, if you really don't want -to go through \LaTeX\ files inserting new syntax, set the {\it compatibility}\rtfsp -flag to TRUE in your {\tt tex2rtf.ini} file. In this mode, Tex2RTF tries to make -the best of a bad job, but the results won't be optimal (e.g., no table -borders). Without this flag set, normal \LaTeX\ tables can crash RTF readers -such as Word for Windows. - -\section{Tex2RTF for non-LaTeX users}\index{LaTeX}% - -You don't need to have \LaTeX\ installed to use Tex2RTF. You -can still output RTF files to be imported into your favourite -word processor, and hypertext files for on-line help. - -This chapter gives a very brief introduction to \LaTeX. For further -information, Kopka and Daly's {\it A Guide to \LaTeX} \cite{kopka} is -recommended. - -\subsection{What is \LaTeX?} - -\LaTeX\ is a macro package built on top of the typesetting package, -\TeX. \TeX\ was written by Donald Knuth in the 1970s, and Leslie -Lamport wrote \LaTeX\ as a higher-level, easier way to write \TeX. - -\TeX\ was quite advanced for its day, and is still used (particularly by -academics) because of its free availability and its flexibility in -typesetting maths and other symbols. It's more like a programming -language than a word processor, with embedded commands prefixed by a -backslash and block structure. Like programs, \TeX\ documents are -processed by a `compiler', outputting a .dvi file, which is a device -independent file which can be read by many converters for output -onto physical devices, such as screens and printers. - -A reason for its longevity is the ability to add facilities to -\TeX, using macro packages that define new commands. - -\LaTeX\ is the most popular way to write \TeX. Although WYSIWYG -word processors and DTP packages are outstripping \LaTeX, the increasing -interest in hypertext and mark-up languages makes \LaTeX\ relevant as -a similar language to SGML documents (such as World Wide Web HTML files). - -Also, languages such as \LaTeX\ (and Rich Text Format, which it resembles -in many ways) are {\it complementary} to WYSIWYG packages. These languages -allow automatic production and translation of documents, where manual -mark-up is impractical or undesirable. - -Since the source code of \TeX\ and \LaTeX\ is in the public domain, -there are many free and commercial implementations of \LaTeX\ for almost -every computer in existance. Of PC implementations, EmTeX is arguably -the best and most complete. You can download it from various FTP sites. - -If you don't want to use \LaTeX\ itself, you may wish to use a program -called lacheck to check your documents before using Tex2RTF, since it -catches some mistakes that Tex2RTF doesn't. - -\subsection{Document structure} - -Here is a sample of a typical \LaTeX\ document: - -\begin{verbatim} - \documentstyle[a4,texhelp]{report} - \title{A title} - \author{Julian Smart} - \date{October 1993} - \begin{document} - \maketitle - - \chapter{Introduction} - - ... - - \section{A section} - - ... - - \end{document} -\end{verbatim} - -The first line is always a \verb$\documentstyle$ command. The square brackets -enclose optional {\it style} files (suffix {\tt .sty}) that alter the appearance -of the document or provide new commands, and the curly brackets enclose -the mandatory style, in this case `report'. - -Before the document begins properly with \verb$\begin{document}$, -you can write various commands that have an effect on the appearance of the -document or define title page information. The \verb$\maketitle$ command -writes the title page using information defined previously (title, author, -date). - -A report has chapters, which are divided into sections, and can be further -divided into subsections and subsubsections. To start a new section, you -write the appropriate section command with the section heading; there is -no specific end section command, since a new section heading or the end -of the document will indicate the end of the previous section. - -An article is divided into sections, subsections and subsubsections, but -has no chapters. This is so an article can be included in a report as a chapter. - -Tex2RTF is written to deal with reports best, so stick with the report -style if you can. - -\subsection{Command syntax} - -There are several kinds of commands in \LaTeX. Most involve a keyword -prefixed with a backslash. Here are some examples: - -\begin{verbatim} - \titlepage - - \centerline{This is a centred line} - - \begin{center} - This is a centred - paragraph - \end{center} - - {\bf This is bold font} -\end{verbatim} - -The first example has no arguments. The second has one argument. The third -example is an {\it environment} which uses the begin and end keywords instead -of a pair of braces to enclose an argument (usually one). The fourth is an example -of using a command within a pair of braces: the command applies to the scope within -the braces. Tex2RTF treats this form as if it were a command with one argument, -with the right brace delimiting the argument. In this case, the command must -immediately follow a left brace as shown. - -Commands may be nested, but not overlapped. - -\subsection{Space}\index{space}% - -In \LaTeX, white space is mostly ignored, line breaks make no difference. -However, \LaTeX\ interprets two successive newlines (a blank line) as -denoting a paragraph break. You may also use the \verb$\par$ command to end -a paragraph. - -\section{Hypertext features}\index{hypertext}% - -\LaTeX\ is inherently suitable for specifying hypertext documents since -it encourages description of the logical structure of a document using -section commands. Therefore, a \LaTeX\ document is automatically -a hypertext document, without any further editing. - -For Windows Help, a single RTF file is generated with topics -corresponding to sections. A top level contents page shows each chapter -or top-level section, and each chapter or section ends with a list of -further sections or subsections. Tex2RTF outputs help files that may be -read linearly using the \rtfsp$<<$ and $>>$ buttons. - -Similarly, a single wxHelp XLP file is generated. - -For HTML, a different file is generated for each section, since the -XMOSAIC browser works best with a large number of small files. The files -are named automatically based on the name of the output file, with the -contents page filename being formed from the output filename with {\tt -\_contents} appended to the name. If the truncateFilenames option is -begin used, then the contents page is just the root name, with a .htm -suffix. The conversion may result in the generation of several hundred -files for a large \LaTeX\ input file. - -To specify explicit jumps around a hypertext file, the \commandrefn{helpref}{helpref} command is -used. The first argument is the text to be displayed at the point of reference, -which will be highlighted in a hypertext file to allow jumping to a reference. -The second argument is the reference label (there should be a corresponding -\rtfsp\commandrefn{label}{label} command in the file, following a section or figure). - -To use extra Tex2RTF features in proper \LaTeX, such as \verb$\helpref$\rtfsp -and the C++ and CLIPS class reference documentation features, include -the style file {\tt texhelp.sty}. - -\section{Special sections}\index{special sections}% - -The treatment of bibliography, glossary and index are worth special mention. - -\subsection{Bibliography}\label{bibsection}\index{bibliography}% - -Tex2RTF recognises standard \LaTeX\ bibliography files (usually with {\tt .bib} extension) -and resolves citations. The \commandrefn{bibliography}{bibliographycmd}\rtfsp -command reads the given {\tt .bib} file and includes a list of -references at that point in the input. Only numbered, unsorted -references are catered for at the moment, with no variation in -bibliography style. A {\bf References} heading is placed in the contents -section. Note that Tex2RTF must be run twice to ensure the citations are -resolved properly. - -Tex2RTF can also cope with the \verb$\thebibliography$ environment, with \rtfsp -\verb$\bibitem$ commands, so long as the text following the first \verb$\bibitem$\rtfsp -argument is enclosed in braces as if it were a second argument. - -\subsection{Glossary}\label{glossarysection}\index{glossary}% - -Glossaries are formatted according to the following scheme. -The \commandrefn{helpglossary}{helpglossary} environment is used together with -the \commandrefn{gloss}{gloss} command for glossary entries. In \LaTeX\ this -is interpreted as a description list, and each glossary entry is an item. -In on-line help, each glossary entry is a section. - -A labelled glossary entry command may be referenced by \commandrefn{popref}{popref}\rtfsp -to provide a quick popup explanation of a term. - -\subsection{Index}\index{index}% - -The explicit index is assumed to be redundant in on-line help, since -search facilities are provided. Therefore the \verb$\printindex$ command -does nothing in on-line versions. In linear RTF an index field is -added, and \commandrefn{index}{index} marks words for inserting in the index. - -In Windows Help, all section headings and C++ function names are treated -as keywords. A keyword may be ambiguous, that is, refer to more than one -section in the help file. This automatic indexing may not always be -adequate, so the \LaTeX\ \commandrefn{index}{index} command may be used -to add keywords. - -In wxHelp, all section headings are indexed. - -\section{Authoring HTML documents} - -When an HTML document is generated, the suffix `\_contents' is appended -to the input file root. This will be the contents page for the document. -A number of further HTML files will be generated, possibly a large number -for a document with a large number of sections. If you are running -a 16-bit Windows version of Tex2RTF, you may wish to use -the {\it truncateFilenames} option to generate DOS filenames with -appropriately truncated references inside the HTML files. - -\normalbox{Tip: to reduce the number of sections generated and make -the document more linear, you could define new chapter and section -commands. Alias them to the normal commands in real LaTeX (edit {\tt texhelp.sty}), and -to appropriate bold/large headings (but not section commands) in -the Tex2RTF initialisation file.} - -Each HTML section file (except for the contents page) is given browse -buttons, similar to a Windows Help file: Contents, Up, Down, Back, Forward. -You can set {\it htmlBrowseButtons} to specify whether bitmaps or text should -be used for these buttons. On a text-only browser, the buttons will show -as text even if images have been specified. - -As well as the usual jumps within a document, you can use the \commandref{urlref}{urlref} command to jump -to other documents. `Advanced features' which are implemented for HTML include: - -\begin{itemize}\itemsep=0pt -\item Simple tables: \commandref{tabular}{tabular} command -\item Background colour/bitmap: \commandref{backgroundcolour}{backgroundcolour} and -\rtfsp\commandref{backgroundimage}{backgroundimage} -\item Text colour: \commandref{textcolour}{textcolour} command -\end{itemize} - -See \helpref{HTML options}{htmloptions} for relevant initialisation file -switches. - -\section{Authoring Windows Help documents}\index{WinHelp files}% - -To produce a Windows Help file, you need to generate a WinHelp RTF file -with Tex2RTF and then invoke a Windows Help compiler (such as hc505.exe) -to translate this to a .hlp file. - -WinHelp support has split into two streams, Windows 3.1 help format -and Windows 95 (WinHelp 4) format. You control this with the {\it winHelpVersion} option, -setting it to 3 for Windows 3.1, and 4 for Windows 95. In the latter case, -you also need the Help Compiler for Windows (hcw.exe and associated components) -which are available in the WIN32 SDK and with Windows 95 compilers. - -Tex2RTF can produce a Windows 95 {\tt .cnt} file if {\it winHelpContents}\index{CNT file} is switched -on. This file is used to generate the new-style contents page, allowing -hierarchical browsing of the topic contents. In fact this file can be used -with ordinary Windows 3.1 files on Windows 95: so to hedge your bets, -generate a Windows 3.1 help file along with {\tt .cnt} file. - -Tex2RTF also generates (optionally) a {\tt .hpj} (Help Project) file\index{HPJ file} which is -fed to the help compiler and specifies the RTF file being used amongst -other things. In WinHelp 4 mode, Tex2RTF adds entries to the project -to enhance the appearance of the help file. In particular, the -non-scrolling (topic title) region is coloured grey, and the rest -is coloured a light yellow in keeping with other Windows 95 help -files. - -\normalbox{Tip: you can maintain two versions of a help file -by specifying an alternative {\tt .ini} file on the command -line when invoking Tex2RTF, and compiling to a different directory. -Tex2RTF instructs the help compiler to use the input file directory -to find bitmaps and metafiles, so using a different output directory -is not a problem. See the Tex2RTF {\tt src/makefile.dos} for an example -of maintaining both formats.} - -There is a slight wrinkle with generation of the {\tt .cnt} file: -to work around a `feature' in the Windows 95 help compiler, Tex2RTF may insert -extra book icons in the contents page. So your contents page -may not exactly match the structure in your LaTeX file. - -`Advanced features' which are implemented for WinHelp include: - -\begin{itemize}\itemsep=0pt -\item Transparency: \commandref{settransparency}{settransparency} command -\item Colour: \commandref{definecolour}{definecolour}, \commandref{fcol}{fcol}, \commandref{bcol}{bcol} commands -\item Hot spot appearance: \commandref{sethotspotcolour}{sethotspotcolour}, \commandref{sethotspotunderline}{sethotspotunderline} commands -\end{itemize} - -Tex2RTF automatically generates browse buttons for jumping to the -above, previous and next topics. - -See \helpref{RTF/WinHelp options}{rtfwinhelpoptions} for -relevant initialisation file switches. - -\section{Authoring linear RTF documents}\index{RTF}% - -Linear RTF documents come in two main flavours. It can produce simple -RTF that can be read by a wide variety of readers, such as -Windows 95 WordPad, the Windows 95 viewer, and most word processors. -Tex2RTF can also output MS Word compatible RTF which has special -fields for contents page and index formatting, headings, and -other enhancements. - -Use the {\it useWord} initialisation file flag to switch Word mode -on or off. -Hypertext links (using \verb$\helpref$ and other commands) will be formatted as -bold `anchor' text plus a section or figure number in parentheses. - -In Word mode, using an index section generates a proper Word index. -Similarly, a Word table of contents, list of figures, list of tables -and page reference may be generated. - -See \helpref{RTF/WinHelp options}{rtfwinhelpoptions} for -relevant initialisation file switches. - -\section{Authoring wxHelp documents}\index{wxHelp}% - -The wxHelp (.xlp) file is the most basic kind of file that Tex2RTF -can handle. Since spacing is passed through to the output, you need to -format your input document appropriately, with lines of reasonable length. - -The generated xlp file is an ASCII file that can be read directly by -wxHelp, the generic wxWindows help viewer. - -\chapter{Command reference}\index{command reference}% -\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}% -\setfooter{\thepage}{}{}{}{}{\thepage}% - -The following lists commands which are recognised by the converters. The reader -can assume that commands not mentioned here are unrecognised or ignored. - -Each command is listed with its name, the number of arguments it takes -(excluding optional arguments), and a description. Note that if the -command is used as an environment (using \verb$\begin$ and \verb$\end$) then -the number of arguments must be either one or two. For example, the\rtfsp -\verb$\tabular$ environment takes two arguments: a first argument for -specifying the formatting, and the second argument for the body of the -environment. - -\begin{verbatim} - \begin{tabular}{|l|l|} - \row{One&Two} - \row{Three&Four} - \end{tabular} -\end{verbatim} - -\section{\LaTeX\ Commands} - -\subsection*{abstract:1}\label{abstract} - -This standard \LaTeX\ environment prepares an abstract page, and is -treated as an ordinary chapter or section in on-line help. - -\subsection*{addcontentsline:3}\label{addcontentsline} - -Adds a chapter title to the contents page. Linear RTF. Rarely required. - -%\subsection*{appendix} -%\subsection*{arabic} -%\subsection*{array} -\subsection*{author:1}\label{author} - -Defines the author, for output when \verb$\maketitle$ is used. - -\subsection*{backslash:0}\label{backslash} - -Outputs a backslash in math mode (should be enclosed by two dollar symbols). - -\subsection*{bf:1}\label{bf} - -Specifies bold font. - -\subsection*{bffamily:1}\label{bffamily} - -Specifies bold font. - -\subsection*{bibitem:2}\label{bibitem} - -For parsing convenience, \verb$\bibitem$ requires two arguments: a cite key and item. -\rtfsp\LaTeX\ syntax permits writing this as if it were two arguments, -even though it is in fact only one. This command is used within -a \commandrefn{thebibliography}{thebibliography} environment. The preferred -method is to store references in {\tt .bib} files and use the \commandrefn{bibliography}{bibliographycmd}\rtfsp -command to generate a bibliography section automatically. - -\subsection*{bibliographystyle:1}\label{bibliographystyle} - -Currently doesn't affect the style of bibliography, but probably will -in the future. - -\subsection*{bibliography:0}\label{bibliographycmd} - -Includes the bibliography at this point in the document. See the section -on \helpref{bibliographies}{bibsection}. - -%\subsection*{caption*} -\subsection*{caption:1}\label{caption} - -Specifies a caption (within a \commandrefn{figure}{figure} or \commandrefn{table}{table} environment). This may -be followed immediately by a \commandrefn{label}{label} command. - -\subsection*{cdots:0}\label{cdots} - -Outputs three dots. - -\subsection*{centerline:1}\label{centerline} - -Centres (or centers!) a line of text. - -%\subsection*{centering} -\subsection*{center:1}\label{center} - -Centres a block of text. - -\subsection*{chapter:1}\label{chapter} - -Outputs a chapter heading. If the chapter's name is Popups\index{popups}, the chapter title will not be -put in the contents, to allow popups to be placed in a document without the popup -sections being directly accessible. - -\subsection*{chapter*:1}\label{chaptersX} - -Outputs a chapter heading with no contents entry. - -\subsection*{cite:1}\label{cite} - -Cite a reference. The argument is a reference key as defined in a \LaTeX\ {\tt .bib}\rtfsp -file. - -\subsection*{comment:1}\label{comment} - -An environment that allows large comments in \LaTeX\ files: the argument -is ignored in all formats. Useful for commenting out parts of files that -cannot be handled by \LaTeX, such as the picture environment. See also\rtfsp -\commandrefn{toocomplex}{toocomplex}. - -\subsection*{date:1}\label{date} - -Specifies the date of a document; only output by \commandrefn{maketitle}{maketitle}. - -\subsection*{description:1}\label{description} - -A list environment, where each \commandrefn{item}{item} command must be -followed by optional square-bracketed text which will be highlighted. - -%\subsection*{destruct:1}\label{destruct} - -\subsection*{document:1}\label{document} - -This environment should enclose the body of a document. - -\subsection*{documentstyle:1}\label{documentstyle} - -Specifies the main style (report, article etc.) and, optionally, style files -such as {\tt texhelp.sty}. A report has \commandrefn{chapters}{chapter}, while an article's top-level -sections are specified using \commandrefn{section}{section}. - -%\subsection*{doublespace}\label{doublespace} -\subsection*{em:1}\label{em} - -Emphasizes text (italic in RTF). - -\subsection*{emph:1}\label{emph} - -Same as \commandrefn{em}{em}. - -\subsection*{enumerate:1}\label{enumerate} - -Enumerate list environment: numbers the \commandrefn{items}{item}. - -%\subsection*{equation}\label{equation} -%\subsection*{evensidemargin} -%\subsection*{fbox:1}\label{fbox} - -\subsection*{figure:1}\label{figure} - -A figure environment: does nothing special, except allows interpretation of -embedded \helpref{caption}{caption} commands as figures rather than (say) tables. - -\subsection*{flushleft:1}\label{flushleft} - -Flushes the given text to the left margin. - -\subsection*{flushright:1}\label{flushright} - -Flushes the given text to the right margin. - -%\subsection*{footheight}\label{footheight} -\subsection*{footnote:1}\label{footnote} - -In linear RTF, a footnote is created. Whether this appears at the end of -the section or the bottom of the page appears to depend on the current -document style, at least for MS Word 6.0 for Windows. The default seems -to be to put the footnotes at the end of the section, which is probably -not the best assumption. - -In WinHelp RTF, a bracketed number is generated for the footnote -and the footnote becomes a popup topic. It is probably preferable -to change footnote commands to \commandref{footnotepopup}{footnotepopup}, -or \commandref{popref}{popref} references to glossary entries. - -This command is not supported for formats other than \LaTeX, -linear RTF and WinHelp RTF. - -\subsection*{hline:0}\label{hline} - -Within a \commandrefn{tabular}{tabular} environment, draws a horizontal -rule below the current row. Note that this does not work in RTF for the -last row of a table, in which case the command \commandrefn{ruledrow}{ruledrow}\rtfsp -should be used instead. - -\subsection*{hrule:0}\label{hrule} - -Draws a horizontal line below the current paragraph. For example: - -\begin{verbatim} - This paragraph should have a horizontal rule following it.\hrule -\end{verbatim} - -gives: - -This paragraph should have a horizontal rule following it.\hrule - -%\subsection*{hspace*}\label{hspaceX} -%\subsection*{hspace}\label{hspace} -%\subsection*{hskip*}\label{hskipX} -%\subsection*{hskip}\label{hskip} - -\subsection*{huge:1}\label{huge1} - -Outputs the argument in huge text. - -\subsection*{Huge:1}\label{Huge2} - -Outputs the argument in huger text than \commandrefn{huge}{huge1}. - -\subsection*{HUGE:1}\label{HUGE3} - -Outputs the argument in huger text than \commandrefn{Huge}{Huge2}. - -\subsection*{include:1}\label{include} - -Include the given file. The command must not be preceded by any whitespace, -and spurious whitespace between elements of the command will also -trip up Tex2RTF. - -\subsection*{index:1}\label{index} - -In WinHelp mode, adds a keyword to the keyword list for the current -topic. This keyword must currently be straight text, with no embedded -commands. The conversion process must be run twice (without quitting -Tex2RTF inbetween) to resolve the keyword references. - -\subsection*{input:1}\label{input} - -Include the given file. The command must not be preceded by any whitespace, -and spurious whitespace between elements of the command will also -trip up Tex2RTF. - -\subsection*{insertatlevel:2}\label{insertatlevel} - -Insert some text at a particular level of the document. For example, - -\begin{verbatim} - \insertatlevel{2}{Some text} -\end{verbatim} - -inserts "Some text" at level 2 (for a report, the current section). This -allows you to insert headings into an automatically-generated section contents, -for example. - -\subsection*{it:1}\label{it} - -Marks the argument in italic. - -\subsection*{itemize:1}\label{itemize} - -Indents each \commandrefn{item}{item} of a list and precedes with a bullet. -If the file {\tt bullet.bmp} is found by Tex2RTF, this bitmap will be -used as the bullet (WinHelp RTF); otherwise, a symbol or bold `o' will be used instead, -depending on output format. - -Use \commandrefn{itemsep}{itemsep} to specify the separation between -list items. Currently this only works for linear or WinHelp RTF output. -If the value is more than zero, an extra paragraph is inserted. - -\subsection*{item:0}\label{item} - -Marks an item of a \commandrefn{itemize}{itemize}, \commandrefn{description}{description} or \commandrefn{enumerate}{enumerate} -list. Items within a description environment should have an `optional' argument -in square brackets which will be highlighted. - -\subsection*{itemsep:0}\label{itemsep} - -Use this command to specify the separation between -list items. Currently this only works for linear or WinHelp RTF output. -If the value is zero, no extra paragraph is inserted; if the value -is more than zero, an extra paragraph is inserted. - -\subsection*{itshape:1}\label{itshape} - -Marks the argument in italic. - -%\subsection*{kill}\label{kill} -\subsection*{label:1}\label{label} - -Labels the chapter, section, subsection, subsubsection or figure caption -with the given label. This must be an ASCII string, and duplicate items -with different case letters are not allowed. - -The command must follow immediately after the section or caption command, -with no intervening whitespace. - -\subsection*{large:1}\label{large1} - -Marks the argument in large text. - -\subsection*{Large:1}\label{Large2} - -Makes the argument display in larger text than \commandrefn{large}{large1}. - -\subsection*{LARGE:1}\label{LARGE3} - -Makes the argument display in larger text than \commandrefn{Large}{Large2}. - -\subsection*{LaTeX:0}\label{LaTeX} - -Outputs the annoying \LaTeX\ upper and lower case name. - -\subsection*{ldots:0}\label{ldots} - -Outputs three dots. - -%\subsection*{linebreak}\label{linebreak} -%\subsection*{listoffigures}\label{listoffigures} -%\subsection*{listoftables}\label{listoftables} -%\subsection*{makeglossary}\label{makeglossary} -%\subsection*{makeindex}\label{makeindex} -\subsection*{maketitle:0}\label{maketitle} - -Makes the article or report title by outputting the \commandrefn{title}{title}, -\rtfsp\commandrefn{author}{author} and optionally \commandrefn{date}{date}. - -%\subsection*{markright}\label{markright} -%\subsection*{markboth}\label{markboth} - -\subsection*{marginparwidth:1}\label{marginparwidth} - -Specifies the width of a margin paragraph. - -\subsection*{marginpar:1}\label{marginpar} - -Inserts a marginal note. It is best to use the Tex2RTF extensions \rtfsp -\commandrefn{marginparodd}{marginparodd} and \commandrefn{marginpareven}{marginpareven} \rtfsp -for best results. - -\subsection*{marginpareven:1}\label{marginpareven} - -Inserts a marginal note on even pages. This is required for RTF generation since -it is impossible for Tex2RTF to know in advance which side of paper the marginal note -will fall upon, and the text has to be positioned using absolute dimensions. -If only one sided output is required, use \commandrefn{marginparodd}{marginparodd} \rtfsp -instead. - -\subsection*{marginparodd:1}\label{marginparodd} - -Inserts a marginal note on odd pages. This is required for RTF generation since -it is impossible for Tex2RTF to know in advance which side of paper the marginal note -will fall upon, and the text has to be positioned using absolute dimensions. - -Also, even if one-sided output is required, this command should be used instead -of \verb$\marginpar$ because the \LaTeX\ command allows it to be used -just before a paragraph. Normally, if this were done, the marginal note would -not be aligned with the paragraph succeeding it. For example: - -\begin{verbatim} - \marginparodd{{\it Note:} if nothing happens, perhaps you - have not plugged your computer in at the mains.}% - To start using your computer, push the Power button - and wait for text to appear on the screen. -\end{verbatim} - -Note the percent sign after the \verb$\marginparodd$ command: without it, -\LaTeX\ refuses to believe that the following text is part of the -same paragraph, and will print the note at the wrong place. - -You should use \commandrefn{textwidth}{textwidth} to allow space for marginal -notes, and also \commandrefn{marginparwidth}{marginparwidth} to specify the size of -the marginal note. - -In WinHelp, HTML and wxHelp, marginal notes are treated as normal text delineated -with horizontal rules above and below. - -%\subsection*{mbox:1}\label{mbox} - -\subsection*{mdseries:1}\label{mdseries} - -Changes to a medium-weight font. Un-emboldens in RTF mode, no effect in other modes. - -\subsection*{multicolumn:3}\label{multicolumn} - -Used in \commandrefn{tabular}{tabular} environment to denote a cell that -spans more than one column. Only supplied for compatibility with -existing \LaTeX\ files, since all it does in RTF is output the correct -number of cell commands, with the multicolumn text squashed into one cell. - -\subsection*{newcommand:3}\label{newcommand} - -Define a new command; arguments are the command, the number of -arguments, and the command body. For example: - -\begin{verbatim} - \newcommand{\crazy}[2]{{\bf #1} is crazy but {\bf #2} is not.} -\end{verbatim} - -The command must have no whitespace at the start of the line or between -the three arguments. - -New commands may also be defined in the {\tt tex2rtf.ini} file using -slightly different syntax (see \helpref{Macro not found error}{macronotfound}). - -%\subsection*{newcounter}\label{newcounter} -%\subsection*{newline}\label{newline} -\subsection*{newpage:0}\label{newpage} - -Inserts a page break. - -\subsection*{nocite:1}\label{nocite} - -Specifies that this reference should appear in the bibliography, -but the citation should not appear in the text. - -See also \commandrefn{cite}{cite}. - -\subsection*{noindent:0}\label{noindent} - -Sets paragraph indentation to zero. See also \commandrefn{parindent}{parindent}. - -%\subsection*{nolinebreak}\label{nolinebreak} -%\subsection*{nopagebreak}\label{nopagebreak} - -\subsection*{normalsize:1}\label{normalsize} - -Sets the font size back to normal. - -\subsection*{onecolumn:0}\label{onecolumn} - -Sets the number of columns to one. \LaTeX\ and linear RTF only. - -%\subsection*{oddsidemargin}\label{oddsidemargin} -%\subsection*{pagebreak}\label{pagebreak} -\subsection*{pageref:1}\label{pageref} - -In linear RTF, generates a page reference to the given label. - -\subsection*{pagestyle:1}\label{pagestyle} - -If argument is {\tt fancyplain} or {\tt fancy}, Tex2RTF -separates the header from the rest of the page with a rule. -This command must be defined for headers and footers to -work properly. See also \commandrefn{setheader}{setheader}, -\commandrefn{setfooter}{setfooter}. - -\LaTeX\ and linear RTF only. - -\subsection*{pagenumbering:1}\label{pagenumbering} - -The argument may be one of: - -\begin{description} -\itemsep=0pt -\item[alph] a, b, ... -\item[Alph] A, B, ... -\item[arabic] 1, 2, ... -\item[roman] i, ii, ... -\item[Roman] I, II, ... -\end{description} - -\LaTeX\ and linear RTF only. - -\subsection*{paragraph:0}\label{paragraph} - -Behaves as for a subsubsection. - -\subsection*{paragraph*:0}\label{paragraphX} - -Behaves as for a subsubsection. - -\subsection*{parindent:1}\label{parindent} - -Indents the first line of succeeding paragraphs by the given amount. - -\subsection*{parskip:1}\label{parskip} - -Changes the spacing between paragraphs. In fact, in RTF this will cause -two \commandrefn{par}{par} commands to be output if parskip is greater -than zero. - -%\subsection*{part*}\label{partX} -%\subsection*{part}\label{part} -\subsection*{par:0}\label{par} - -Causes the paragraph to end at this point. \LaTeX\ and Tex2RTF also -treat two consecutive newlines as a paragraph break. - -%\subsection*{pfunc}\label{pfunc} -%\subsection*{picture}\label{picture} -\subsection*{printindex:0}\label{printindex} - -In linear RTF, inserts an index. - -\subsection*{quote:1}\label{quote} - -Indents a short quotation. - -\subsection*{quotation:1}\label{quotation} - -Indents a long quotation. - -%\subsection*{raggedbottom}\label{raggedbottom} -%\subsection*{raggedleft}\label{raggedleft} -%\subsection*{raggedright}\label{raggedright} - -\subsection*{ref:1}\label{ref} - -In \LaTeX\ and linear RTF, refers to a \commandrefn{label}{label} and -causes the number of that section or figure to be printed. - -\subsection*{rm:1}\label{rm} - -Causes the argument to be formatted in a plain, roman font. -In fact, does nothing in RTF, HTML and XLP modes. - -\subsection*{rmfamily:1}\label{rmfamily} - -Causes the argument to be formatted in a plain, roman font. -In fact, does nothing in RTF, HTML and XLP modes. - -%\subsection*{roman}\label{roman1} -%\subsection*{Roman}\label{Roman2} - -\subsection*{sc:1}\label{sc} - -Prints the output in small capitals. - -\subsection*{scshape:1}\label{scshape} - -Prints the output in small capitals. - -\subsection*{section:1}\label{section} - -Section header, with an entry in the contents page. - -\subsection*{section*:1}\label{sectionX} - -Section header, with no entry in the contents page. - -%\subsection*{setcounter}\label{setcounter} -\subsection*{sf:1}\label{sf} - -Should format in a sans-serif font. Does nothing in Tex2RTF. - -\subsection*{sffamily:1}\label{sffamily} - -Should format in a sans-serif font. Does nothing in Tex2RTF. - -\subsection*{shortcite:1}\label{shortcite} - -The same as \commandrefn{cite}{cite}. - -%\subsection*{singlespace}\label{singlespace} -%\subsection*{sloppypar}\label{sloppypar} -%\subsection*{sloppy}\label{sloppy} - -\subsection*{sl:1}\label{sl} - -In Tex2RTF, the same as \commandrefn{it}{it}. The LaTeX interpretation is `slanted text'. - -\subsection*{slshape:1}\label{slshape} - -In Tex2RTF, the same as \commandrefn{itshape}{itshape}. The LaTeX interpretation is `slanted text'. - -\subsection*{small:1}\label{small} - -Prints the argument in a small font. - -\subsection*{special:1}\label{special} - -Simply copies the argument to the output file without processing -(except \verb$\}$ is translated to \verb$}$, and \verb$\{$ is -translated to \verb${$, to allow for insertion of braces). - -\subsection*{ss:0}\label{ss} - -Outputs the German sharp S character \ss. - -%\subsection*{subitem}\label{subitem} -\subsection*{subparagraph:1}\label{subparagraph} - -Behaves as for a subsubsection. - -\subsection*{subparagraph*:1}\label{subparagraphX} - -Behaves as for a subsubsection. - -\subsection*{subsection:1}\label{subsection} - -Subsection header, with an entry in the contents page. - -\subsection*{subsection*:1}\label{subsectionX} - -Subsection header, with no entry in the contents page. - -\subsection*{subsubsection:1}\label{subsubsection} - -Subsubsection header, with an entry in the contents page. - -\subsection*{subsubsection*:1}\label{subsubsectionX} - -Subsubsection header, with no entry in the contents page. - -\subsection*{tabbing:1}\label{tabbing} - -Tabbing environment: doesn't work properly in RTF. - -\subsection*{table:1}\label{table} - -An environment for tables. The only thing that Tex2RTF does with this -is to interpret an embedded \helpref{caption}{caption} command differently -from figures. - -\subsection*{tableofcontents:0}\label{tableofcontents} - -Inserts the table of contents at this point. In linear RTF mode, a -proper Word for Windows table of contents will be inserted unless either -of the variables {\it insertTOC} or {\it useWord} is set to {\it false}. - -\subsection*{tabular:2}\label{tabular} - -Tabular environment: an attempt is made to output something -reasonable in RTF and HTML formats, although currently only simple -tables will work. The first argument specifies the column formatting. -a pipe symbol (\verb$|$) denotes a vertical border, one of {\tt l, r, c}\rtfsp -signifies a normal column of default width, and {\tt p} followed by -a dimension specifies a column of given width. It is recommended that -the {\tt p} is used since Tex2RTF cannot deduce a column width in the -same way that \LaTeX\ can. - -Horizontal rules are achieved with \commandrefn{hline}{hline}; two together -signify a double rule. Note that in HTML, all rows and the table itself are bordered -automatically. - -Use the Tex2RTF \commandrefn{row}{row} and \commandrefn{ruledrow}{ruledrow} commands -for best effect. - -For two-column tables that work in WinHelp files, use \commandrefn{twocollist}{twocollist} instead. - -Example: - -\begin{verbatim} - \begin{tabular}{|l|p{8.5cm}|}\hline - \row{{\bf A.I.}&{\bf Simulation}}\hline\hline - \row{rules&constraints/methods} - \row{planning&design of experiments} - \row{diagnosis&analysis of results} - \ruledrow{learning&detection of connections} - \end{tabular} -\end{verbatim} - -This produces: - -\begin{tabular}{|l|p{8.5cm}|}\hline -\row{{\bf A.I.}&{\bf Simulation}}\hline\hline -\row{rules&constraints/methods} -\row{planning&design of experiments} -\row{diagnosis&analysis of results} -\ruledrow{learning&detection of connections} -\end{tabular} - -%\subsection*{tab:1}\label{tab} -\subsection*{TeX:0}\label{TeX} - -Outputs the annoying \TeX\ upper and lower case name. - -\subsection*{textbf:1}\label{textbf} - -Same as \commandrefn{bf}{bf}. - -\subsection*{textit:1}\label{textit} - -Same as \commandrefn{it}{it}. - -\subsection*{textrm:1}\label{textrm} - -Same as \commandrefn{rm}{rm}. - -\subsection*{textsf:1}\label{textsf} - -Same as \commandrefn{sf}{sf}. - -\subsection*{textsc:1}\label{textsc} - -Same as \commandrefn{sc}{sc}. - -\subsection*{textsl:1}\label{textsl} - -Same as \commandrefn{sl}{sl}. - -\subsection*{texttt:1}\label{texttt} - -Same as \commandrefn{tt}{tt}. - - -\subsection*{textwidth:1}\label{textwidth} - -Sets the text width (valid for RTF only). This might be used -in conjunction with \commandrefn{marginpar}{marginpar}, for example, -to leave space for marginal notes. - -%\subsection*{textheight}\label{textheight} -\subsection*{thebibliography:1}\label{thebibliography} - -An environment for specifying the bibliography as a series of\rtfsp -\commandrefn{bibitem}{bibitem} commands; the preferred method is to use -\rtfsp{\tt .bib} files and \commandrefn{bibliography}{bibliographycmd} instead. - -%\subsection*{titlepage:0}\label{titlepage} - -\subsection*{title:1}\label{title} - -Sets the title, to be output when the command \commandrefn{maketitle}{maketitle}\rtfsp -is used. - -\subsection*{tiny:1}\label{tiny} - -Prints the argument in a very small font. - -\subsection*{today:0}\label{today} - -Outputs today's date. - -%\subsection*{topmargin}\label{topmargin} -%\subsection*{topskip}\label{topskip} -\subsection*{tt:1}\label{tt} - -Outputs the argument in teletype font. - -\subsection*{ttfamily:1}\label{ttfamily} - -Outputs the argument in teletype font. - -%\subsection*{typein}\label{typein} -\subsection*{typeout:1}\label{typeout} - -Outputs the text on the Tex2RTF text window. - -\subsection*{twocolumn:0}\label{twocolumn} - -Sets the number of columns to two. \LaTeX\ and linear RTF only. - -\subsection*{underline:1}\label{underline} - -Underlines the argument. - -\subsection*{upshape:1}\label{upshape} - -Changes to an upright font. Un-italicizes in RTF mode, no effect in other modes. - -\subsection*{verbatiminput:1}\label{verbatiminput} - -Include the given file as if it were within a \commandrefn{verbatim}{verbatim}\rtfsp -environment. The command must not be preceded by any whitespace, -and spurious whitespace between elements of the command will also -trip up Tex2RTF. - -\subsection*{verbatim:1}\label{verbatim} - -Uses a fixed-width font to format the argument without interpreting -any \LaTeX\ commands. - -\subsection*{verb}\label{verb} - -The \verb$\verb$ command is like the \commandref{verbatim}{verbatim} environment, -but for small amounts of text. The syntax is: - -\begin{verbatim} - \verb -\end{verbatim} - -The character {\it char} is used as a delimiter; it may be any character -not ocurring in the following text, except asterisk. - -For example, \verb@\verb$\thing%^&$@ produces \verb$\thing%^&$. - -%\subsection*{verse}\label{verse} -%\subsection*{vfill}\label{vfill} -%\subsection*{vline}\label{vline} -%\subsection*{void}\label{void} -%\subsection*{vrule}\label{vrule} -%\subsection*{vspace*}\label{vspaceX} -%\subsection*{vskip*}\label{vskipX} -%\subsection*{vspace}\label{vspace} -%\subsection*{vskip}\label{vskip} - - -\section{Tex2RTF Commands} - -\subsection*{backgroundcolour:1}\label{backgroundcolour} - -Specifies the page background colour, in HTML only. The argument consists -of three numbers from 0 to 255 separated by semicolons, for red, green and blue values respectively. - -\begin{verbatim} - \backgroundcolour{255;255;255} - \backgroundcolour{0;0;255} -\end{verbatim} - -The first example sets the background to white, the second sets the background to blue. - -Instead of using a LaTeX command, you may find it more convenient to use the equivalent {\tt .ini} file -setting, {\it backgroundColour}. - -\subsection*{backgroundimage:1}\label{backgroundimage} - -Specifies the page background image, in HTML only. The argument -is a URL for the GIF file to be used as the background. - -For example: - -\begin{verbatim} - \backgroundimage{tile.gif} -\end{verbatim} - -This sets the background to a tile file. - -Instead of using a LaTeX command, you may find it more convenient to use the equivalent {\tt .ini} file -setting, {\it backgroundImage}. - -\subsection*{backslashraw:0}\label{backslashraw} - -Outputs a raw backslash into the output (not LaTeX). Useful when -inserting RTF (for example) that cannot be dealt with by Tex2RTF. -E.g. - -\begin{verbatim} - \backslashraw{'e3} -\end{verbatim} - -inserts the text \verb$\'e3$ into the RTF file. - -\subsection*{bcol:2}\label{bcol} - -Sets the background colour for a block of text (RTF only). Has no known effect -in the RTF readers currently tried (Word for Window and Windows Help). - -See also \commandrefn{definecolour}{definecolour}, \commandrefn{fcol}{fcol}. - -%\subsection*{baselineskip} -%\subsection*{boxit:1}\label{boxit} - -\subsection*{brclear:0}\label{brclear} - -Stops aligning content following a left or right-aligned image in HTML only. - -See also \commandrefn{imagel}{imagel}, \commandrefn{imager}{imager}. - -\subsection*{cextract:0}\label{cextract} - -Prints a C++ extraction operator (\cextract). - -\subsection*{chapterheading:1}\label{chapterheading} - -Like \commandrefn{chapter}{chapter}, but does not increment the chapter -number and does not print a chapter number in the printed documentation -contents page, or in the chapter heading. Used to implement \helpref{glossaries}{glossarysection} and -other sections that are not real chapters. - -\subsection*{cinsert:0}\label{cinsert} - -Prints a C++ insertion operator (\cinsert). - -\subsection*{class:1}\label{class} - -Outputs the argument, an index entry (\LaTeX\ only) and a keyword entry (WinHelp only). -Used in class reference documentation. - -%\subsection*{cleardoublepage} -%\subsection*{clearpage} -%\subsection*{cline} -\subsection*{clipsfunc:3}\label{clipsfunc} - -Formats a CLIPS function, given the return value, function name, and -arguments. - -%\subsection*{columnsep} -\subsection*{copyright:0}\label{copyright} - -Outputs the copyright symbol. - -\subsection*{cparam:2}\label{cparam} - -Formats a CLIPS type and argument. Used within the third argument of -a \commandrefn{clipsfunc}{clipsfunc} command. - -\subsection*{definecolour:4}\label{definecolour} - -Defines a new colour that can be used in the document (RTF only). This -command can also be spelt \verb$\definecolor$. - -The first argument is the lower-case name of the colour, and the following -three arguments specify the red, green and blue intensities, in the range 0 to 255. - -The default colours are equivalent to the following definitions: - -\begin{verbatim} - \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{yellow}{255}{255}{0} - \definecolour{white}{255}{255}{255} -\end{verbatim} - -To use colours in a document, use the \commandrefn{fcol}{fcol} and \commandrefn{bcol}{bcol} commands. - -Note that a document that defines its own colours should be converted twice within -the same Tex2RTF session. - -\subsection*{fcol:2}\label{fcol} - -Sets the foreground colour for a block of text (RTF and HTML). - -For example: - -\begin{verbatim} - This sentence is brightened up by some \fcol{red}{red text}. -\end{verbatim} - -gives: - -This sentence is brightened up by some \fcol{red}{red text}. - -See also \commandrefn{definecolour}{definecolour}, \commandrefn{bcol}{bcol}. - -\subsection*{followedlinkcolour:1}\label{followedlinkcolour} - -Specifies the followed link colour for the whole page, HTML only. The argument consists -of three numbers from 0 to 255 separated by semicolons, for red, green and blue values respectively. - -For example: - -\begin{verbatim} - \followedlinkcolour{255;255;255} - \followedlinkcolour{0;0;255} -\end{verbatim} - -The first example sets the followed link text to white, and the second sets the followed link text to blue. - -See also \commandrefn{backgroundcolour}{backgroundcolour}, \commandrefn{textcolour}{textcolour}, -\rtfsp\commandrefn{linkcolour}{linkcolour}. - -Instead of using a LaTeX command, you may find it more convenient to use the equivalent {\tt .ini} file -setting, {\it followedLinkColour}. - -\subsection*{footnotepopup:2}\label{footnotepopup} - -In linear RTF, a footnote is created following the first argument, as with -\commandref{footnote}{footnote}. - -In WinHelp RTF, a the first argument is highlighted and becomes -a popup reference to the second argument. See also \commandref{footnote}{footnote}\rtfsp -and \commandref{popref}{popref}. - -This command is not supported for formats other than \LaTeX, -linear RTF and WinHelp RTF. - -%\subsection*{footskip}\label{footskip} -%\subsection*{framebox:1}\label{framebox} - -\subsection*{functionsection:1}\label{functionsection} - -Defines a subsection, adding the C++ function name to the \LaTeX\ index or the -WinHelp keyword list. - -Should be followed by a \commandrefn{func}{func} command to specify function -details. - -\subsection*{func:3}\label{func} - -Defines a C++ function, given the return type, function name, and parameter list. - -Should occur after a \commandrefn{functionsection}{functionsection} command. - -%\subsection*{glossary:}\label{glossary} -\subsection*{gloss:1}\label{gloss} - -Marks a glossary entry. In \LaTeX, this is a synonym for an \commandrefn{item}{item} -with an optional argument, within a \commandrefn{description}{description} environment, -and the argument is added to the index. - -In Windows Help, this is identical to a \commandrefn{section*}{sectionX} in a report. - -If labels are associated with the glossary entries, they can be referenced by -\commandref{helpref}{helpref} or \commandref{popref}{popref} jumps. A glossary entry is -currently the only type of destination that popref may refer to. - -This is an example of making a glossary in a report: - -\begin{verbatim} - \begin{helpglossary} - - \gloss{API}\label{api} - - Application Programmer's Interface - a set of calls and - classes defining how a library (in this case, wxWindows) - can be used. - - \gloss{Canvas}\label{canvas} - - A canvas in XView and wxWindows is a subwindow... - - \gloss{DDE}\label{dde} - - Dynamic Data Exchange - Microsoft's interprocess - communication protocol. wxWindows provides an abstraction - of DDE under both Windows and UNIX. - - \end{helpglossary} -\end{verbatim} - -%\subsection*{headheight}\label{headheight} -\subsection*{helpglossary:1}\label{helpglossary} - -An environment for making a glossary (not standard \LaTeX). See \commandrefn{gloss}{gloss} for -usage. - -\subsection*{helpignore:1}\label{helpignore} - -Ignores the argument in Tex2RTF generated files, but not \LaTeX. - -\subsection*{helponly:1}\label{helponly} - -Only outputs the argument in Tex2RTF generated files. - -\subsection*{helpinput:1}\label{helpinput} - -Only includes the given file in Tex2RTF generated files. - -\subsection*{helpfontfamily:1}\label{helpfontfamily} - -Specifies the font family for Tex2RTF generated files. The argument -may be Swiss or Times. - -\subsection*{helpfontsize:1}\label{helpfontsize} - -Specifies the font size for Tex2RTF generated files. - -\subsection*{helpref:2}\label{helpref} - -Specifies a jump to a labelled chapter, section, subsection subsubsection -or figure. - -The first argument is text to be highlighted (mouseable in help systems) -and the second is the reference label. In linear documents, the section number -is given following the text, unless the \commandrefn{helprefn}{helprefn} command -is used instead, where the section number is suppressed. - -Note that when generating HTML, the label {\it contents} is automatically defined, -and may be referenced using \verb$\helpref$. - -\subsection*{helprefn:2}\label{helprefn} - -Specifies a jump to a labelled chapter, section, subsection subsubsection -or figure. - -The first argument is text to be highlighted (mouseable in help systems) -and the second is the reference label. See \commandrefn{helpref}{helpref} for -the form where the section number is printed in linear documents. - -%\subsection*{hfill}\label{hfill} -\subsection*{htmlignore:1}\label{htmlignore} - -Ignores the argument in HTML. - -\subsection*{htmlonly:1}\label{htmlonly} - -Only outputs the argument in HTML. - -\subsection*{image:2}\label{image} - -This is translated to a PSBOX macro package \verb$\psboxto$ command in \LaTeX, -the first argument being a sizing command and the second a filename. - -In HTML mode, the second argument is used to generate a PostScript file reference. - -In RTF mode, the second argument is tried with first a BMP extension and -then a WMF extension to find a suitable Windows bitmap file, placeable -metafile, or segmented hypergraphics file (.SHG). If a suitable file is -found, in Windows Help mode a {\tt bmc}\rtfsp command is inserted into -the RTF file with a reference to the file. In linear RTF mode, the -bitmap or metafile is converted into hex and inserted into the RTF -document. - -Note that only RGB-encoded Windows bitmaps, or placeable metafiles, are -valid for input to Tex2RTF. You can convert a RLE (run length encoded) -bitmap file into a (bigger) RGB file using a program such as Paintshop -Pro. A placeable metafile has a special header with dimension -information. One may be constructed by a wxWindows program by calling -the function wxMakeMetafilePlaceable. The Microsoft Windows SDK has a -sample program that loads and steps through placeable and ordinary -metafiles. - -Another wrinkle is that programs differ in the methods they -use to recognise pictures in RTF files. You may need to use the {\it bitmapMethod} setting, -which can be ``hex'' (embed the hex data in the file with a \verb$\dibitmap$ keyword), -``includepicture'' (use the MS Word 6.0 INCLUDEPICTURE field) or ``import'' -(an earlier name for INCLUDEPICTURE). - -Here is an example of using the \verb$\image$ command. - -\begin{verbatim} - \begin{figure} - $$\image{5cm;0cm}{heart.ps}$$ - - \caption{My picture}\label{piccy} - \end{figure} -\end{verbatim} - -The dollars centre the image in the horizontal plane. The syntax -of the first argument to \verb$\image$ is taken from syntax used by the \verb$\psbox$\rtfsp -package: it allows specification of the horizontal and vertical -dimensions of the image. Scaling will take place for PostScript -and metafile images. A value of zero indicates that the image should -be scaled in proportion to the non-zero dimension. Zeros for both -dimensions will leave the image unscaled in the case of metafiles, -or scaled to fit the page in the case of PostScript. - -See also \commandrefn{imagel}{imagel}, \commandrefn{imager}{imager} for aligned images in -HTML. - -\subsection*{imagel:2}\label{imagel} - -Similar to \commandrefn{image}{image}, but left-aligns the image with respect to the following -content. Use \commandrefn{brclear}{brclear} to stop aligning the content to the right of the image. - -See also \commandrefn{imager}{imager}. - -\subsection*{imagemap:3}\label{imagemap} - -This is translated to an HTML image map reference, or (in LaTeX) a PostScript psbox -command. This allows images in HTML to have hotspots, where the user clicks on a -part of the image and the browser jumps to a particular file. - -The first argument is the same as the first argument to the \commandref{image}{image}\rtfsp -command (ignored in HTML). The second argument must be the name of the -image map entry, and the second is the filename to be displayed inline. - -\begin{verbatim} - \imagemap{}{tree.gif}{myname} -\end{verbatim} - -translates to: - -\begin{verbatim} - -

    -\end{verbatim} - -The snag with this is that, apart from the inconvenience of having to -register a map file with the server, the map file will also have -references to particular HTML files. If they exist in the current -document, these names are not known until the file is generated. In which case, the -map entries should probably refer to symbolic links that can be easily -changed later. - -\subsection*{imager:2}\label{imager} - -Similar to \commandrefn{image}{image}, but right-aligns the image with respect to the following -content. Use \commandrefn{brclear}{brclear} to stop aligning the content to the left of the image. - -See also \commandrefn{imagel}{imagel}. - -%\subsection*{includeonly}\label{includeonly} -\subsection*{indented:2}\label{indented} - -Environment supplied by Tex2RTF to allow (possibly nested) indentation of -\LaTeX\ and RTF text. The first argument is the amount to be indented. - -For example: - -\begin{verbatim} - \begin{indented}{2cm} - This text should be indented by a couple of centimetres. - This can be useful to highlight paragraphs. - \end{indented} -\end{verbatim} - -produces: - -\begin{indented}{2cm} -This text should be indented by a couple of centimetres. This can be -useful to highlight paragraphs. -\end{indented} - -\subsection*{latexignore:1}\label{latexignore} - -Ignores the argument in \LaTeX. - -\subsection*{latexonly:1}\label{latexonly} - -Only prints the argument in \LaTeX. - -%\subsection*{lbox}\label{lbox} - -\subsection*{lbraceraw:0}\label{lbraceraw} - -Outputs a raw left brace into the output (not LaTeX). Useful when -inserting RTF (for example) that cannot be dealt with by Tex2RTF. - -\subsection*{linkcolour:1}\label{linkcolour} - -Specifies the link colour for the whole page, HTML only. The argument consists -of three numbers from 0 to 255 separated by semicolons, for red, green and blue values respectively. - -For example: - -\begin{verbatim} - \linkcolour{255;255;255} - \linkcolour{0;0;255} -\end{verbatim} - -The first example sets the link text to white, and the second sets the link text to blue. - -See also \commandrefn{backgroundcolour}{backgroundcolour}, \commandrefn{textcolour}{textcolour}, -\rtfsp\commandrefn{followedlinkcolour}{followedlinkcolour}. - -Instead of using a LaTeX command, you may find it more convenient to use the equivalent {\tt .ini} file -setting, {\it linkColour}. - -\subsection*{membersection:1}\label{membersection} - -Used when formatting C++ classes to print a subsection for the member name. - -\subsection*{member:1}\label{member} - -Used to format a C++ member variable name. - -\subsection*{normalbox:1}\label{normalbox} - -Draws a box around the given paragraph in \LaTeX\ and RTF. In HTML -and XLP formats, horizontal rules are drawn before and after the text. - -For example: - -\begin{verbatim} - \normalbox{This should be a boxed paragraph for highlighting - important information, such as information for registering - a shareware program.} -\end{verbatim} - -gives: - -\normalbox{This should be a boxed paragraph for highlighting important -information, such as information for registering a shareware program.} - -See also \commandrefn{normalboxd}{normalboxd} for double-bordered text. - -\subsection*{normalboxd:1}\label{normalboxd} - -Draws a double border around the given paragraph in \LaTeX\ and RTF. In -HTML and XLP formats, horizontal rules are drawn before and after the -text. - -For example: - -\begin{verbatim} - \normalboxd{This should be a boxed paragraph for - highlighting important information, such as information - for registering a shareware program.} -\end{verbatim} - -gives: - -\normalboxd{This should be a boxed paragraph for highlighting important -information,such as information for registering a shareware program.} - -See also \commandrefn{normalbox}{normalbox} for single-bordered text. - -\subsection*{param:1}\label{param} - -Formats a C++ type and argument pair. Should be used within the third argument -of a a \commandrefn{func}{func} command. - -\subsection*{popref:2}\label{popref} - -Similar to \commandrefn{helprefn}{helprefn}, except that in Windows Help, -the destination text is popped up in a small window to be dismissed with -a mouse click, instead of going to a separate section. - -Currently this command can only refer to a labelled glossary entry; see -\commandrefn{gloss}{gloss}. - -\subsection*{psboxto:2}\label{psboxto} - -Identical to \commandrefn{image}{image}. - -%\subsection*{psbox}\label{psbox} -\subsection*{rbraceraw:0}\label{rbraceraw} - -Outputs a raw right brace into the output (not LaTeX). Useful when -inserting RTF (for example) that cannot be dealt with by Tex2RTF. - -\subsection*{registered:0}\label{registered} - -Outputs the `registered' symbol in HTML, and (r) in other formats. - -\subsection*{row:1}\label{row} - -A Tex2RTF command signifying the row of a table within the \commandrefn{tabular}{tabular}\rtfsp -environment. See also \commandrefn{ruledrow}{ruledrow}. - -\subsection*{ruledrow:1}\label{ruledrow} - -A Tex2RTF command signifying a ruled row of a table within the \commandrefn{tabular}{tabular}\rtfsp -environment. See also \commandrefn{row}{row}. - -\subsection*{rtfignore:1}\label{rtfignore} - -Ignores the argument in linear RTF. - -\subsection*{rtfonly:1}\label{rtfonly} - -Only outputs the argument in linear RTF. - -\subsection*{rtfsp:0}\label{rtfsp} - -Outputs a space in RTF. Tex2RTF tries to insert a space where one is implied -by a newline, but cannot cope where a line starts or ends with a command, -in the middle of a paragraph. Use this command to insert a space explicitly. - -\subsection*{sectionheading:1}\label{sectionheading} - -Like \commandrefn{section}{section}, but does not increment the section -number and does not print a section number in the printed documentation -contents page, or in the section heading. - -\subsection*{setfooter:6}\label{setfooter} - -Tex2RTF has a non-standard way of setting headers and footers, -but the default macro definitions in {\tt texhelp.sty} may be altered -to your current method. - -The arguments are as follows: - -\begin{enumerate} -\itemsep=0pt -\item Left footer, even pages -\item Centre footer, even pages -\item Right footer, even pages -\item Left footer, odd pages -\item Centre footer, odd pages -\item Right footer, odd pages -\end{enumerate} - -For many documents, the first three arguments will be left empty. - -The behaviour for first pages of a chapter, section or document -is to have a blank header, but print the footer. - -For best results, define headers and footers for {\it each chapter or -section}. - -Note that this command works only for \LaTeX\ and linear RTF. See also\rtfsp -\commandrefn{setheader}{setheader}. - -\subsection*{setheader:6}\label{setheader} - -Tex2RTF has a non-standard way of setting headers and footers, -but the default macro definitions in {\tt texhelp.sty} may be altered -to your current method. - -The arguments are as follows: - -\begin{enumerate} -\itemsep=0pt -\item Left header, even pages -\item Centre header, even pages -\item Right header, even pages -\item Left header, odd pages -\item Centre header, odd pages -\item Right header, odd pages -\end{enumerate} - -For many documents, the first three arguments will be left empty. -If \commandrefn{pagestyle}{pagestyle} is not plain or empty, the -header will separated from the rest of the page by a rule. - -The behaviour for first pages of a chapter, section or document -is to have a blank header, but print the footer. - -For best results, define headers and footers for {\it each chapter or -section}. - -Note that this command works only for \LaTeX\ and linear RTF. See also\rtfsp -\commandrefn{setfooter}{setfooter}. - -\subsection*{sethotspotcolour:1}\label{sethotspotcolour} - -If the argument is yes, on or ok, subsequent WinHelp hotspots will be green. -If any other value, the hotspots will be the normal text colour. Note that this -doesn't apply to section hotspots, only to helpref hotspots. - -\subsection*{sethotspotunderline:1}\label{sethotspotunderline} - -If the argument is yes, on or ok, subsequent WinHelp hotspots will be -underlined (the default). If any other value, the hotspots will not be -underlined. Note that this doesn't apply to section hotspots, only to -helpref hotspots. - -\subsection*{settransparency:1}\label{settransparency} - -WinHelp mode only (version 4 of WinHelp). If the argument is yes, on or ok, subsequent bitmaps -will be inserted in transparent mode: areas of white will be made transparent. -If the argument is any other value (such as no, ok or false), the bitmaps will not be transparent. - -\subsection*{textcolour:1}\label{textcolour} - -Specifies the text foreground colour for the whole page, HTML only. The argument consists -of three numbers from 0 to 255 separated by semicolons, for red, green and blue values respectively. - -For example: - -\begin{verbatim} - \textcolour{255;255;255} - \textcolour{0;0;255} -\end{verbatim} - -The first example sets the text to white, and the second sets the text to blue. - -See also \commandrefn{backgroundcolour}{backgroundcolour}, \commandrefn{linkcolour}{linkcolour}, -\rtfsp\commandrefn{followedlinkcolour}{followedlinkcolour}. - -Instead of using a LaTeX command, you may find it more convenient to use the equivalent {\tt .ini} file -setting, {\it textColour}. - -\subsection*{toocomplex:1}\label{toocomplex} - -An environment for dealing with complex \LaTeX\ commands that -Tex2RTF cannot handle. In normal \LaTeX, the argument will be output -as normal. In Tex2RTF output, the argument will be output as verbatim text, -for the user to hand-translate into the desired output format. - -See also \commandrefn{comment}{comment}. - -\subsection*{twocolitem:2}\label{twocolitem} - -Used to specify a row for a two column list, a Tex2RTF -extension to optimize two-column lists for different -file formats. See \commandrefn{twocollist}{twocollist}, -\rtfsp\commandrefn{twocolitemruled}{twocolitemruled}. - -\subsection*{twocolitemruled:2}\label{twocolitemruled} - -Used to specify a ruled row for a two column list, a Tex2RTF -extension to optimize two-column lists for different -file formats. See \commandrefn{twocollist}{twocollist}, -\rtfsp\commandrefn{twocolitem}{twocolitem}. - -\subsection*{twocollist:1}\label{twocollist} - -A Tex2RTF environment for specifying a table of two columns, often -used in manuals and help files (for example, for listing commands and -their meanings). The first column should be one line only, and -the second can be an arbitrary number of paragraphs. - -The reason that a normal tabular environment cannot be used is that -WinHelp does not allow borders in table cells, so a different method -must be employed if any of the rows are to be ruled. In \LaTeX, a table -is used to implement this environment. In RTF, indentation is used instead. - -Use this environment in conjunction with \commandrefn{twocolitem}{twocolitem} and\rtfsp -\commandrefn{twocolitemruled}{twocolitemruled}. To set the widths of the first -and second column, use \commandrefn{twocolwidtha}{twocolwidtha} and\rtfsp -\commandrefn{twocolwidthb}{twocolwidthb}. - -Example: - -\begin{verbatim} - \htmlignore{\begin{twocollist}} - \twocolitemruled{{\bf Command}}{{\bf Description}} - \twocolitem{File}{The file menu is used to select various - file-related operations, such as saving and loading.} - \twocolitem{Edit}{The Edit menu is used for - selection, copying, pasting, etc.} - \end{twocollist} -\end{verbatim} - -This produces: - -\begin{twocollist} -\twocolitemruled{{\bf Command}}{{\bf Description}} -\twocolitem{File}{The file menu is used to select various file-related -operations, such as saving and loading.} -\twocolitem{Edit}{The Edit menu is used for selection, copying, pasting, etc.} -\end{twocollist} - -\subsection*{twocolwidtha:1}\label{twocolwidtha} - -Sets the width of the first column in a two column list to the given -dimension. See also \commandrefn{twocollist}{twocollist} and \commandrefn{twocolwidthb}{twocolwidthb}. - -\subsection*{twocolwidthb:1}\label{twocolwidthb} - -Sets the width of the second column in a two column list to the given -dimension. See also \commandrefn{twocollist}{twocollist} and \commandrefn{twocolwidtha}{twocolwidtha}. - -\subsection*{urlref:2}\label{urlref} - -Specifies a jump to a URL (univeral resource location). - -The first argument is text to be highlighted (mouseable in HTML browsers) -and the second is the URL. In linear documents, the URL -is given following the text. - -Example: - -\begin{verbatim} - See also the \urlref{wxWindows manual} - {http://www.aiai.ed.ac.uk/~jacs.html}. -\end{verbatim} - -(the line is broken only to keep to this manual's page width). - -\subsection*{winhelpignore:1}\label{winhelpignore} - -Ignores the argument in WinHelp RTF. - -\subsection*{winhelponly:1}\label{winhelponly} - -Only outputs the argument in WinHelp RTF. - -\subsection*{xlpignore:1}\label{xlpignore} - -Ignores the argument in XLP mode (wxHelp files). - -\subsection*{xlponly:1}\label{xlponly} - -Only outputs the argument in XLP mode (wxHelp files). - -\section{Accents}\label{accents} - -The following \LaTeX\ accents work for RTF and HTML production: - -\begin{itemize}% -\itemsep=0pt -\item \verb$\'{a}$ produces \'{a}. Valid for a, e, i, o, u, A, E, I, O, U -\item \verb$\`{a}$ produces \`{a}. Valid for a, e, i, o, u, y, A, E, I, O, U, Y -\item \verb$\^{a}$ produces \^{a}. Valid for a, e, i, o, u, A, E, I, O, U -\item \verb$\~{a}$ produces \~{a}. Valid for a, n, o, A, N, O -\item \verb$\"{a}$ produces \"{a}. Valid for a, e, i, o, u, y, A, E, I, O, U, Y -\item \verb$\.{a}$ produces \.{a}. Valid for a, A -\end{itemize} - -\section{Commands by category}\index{commands}% - -Below are categories of \LaTeX\ commands, to help you find the right -command for a particular purpose. - -\subsection{Font commands} - -\begin{itemize}\itemsep=0pt -\item \commandpageref{bf}{bf} -\item \commandpageref{bffamily}{bffamily} -\item \commandpageref{em}{em} -\item \commandpageref{emph}{emph} -\item \commandpageref{huge}{huge1} -\item \commandpageref{Huge}{Huge2} -\item \commandpageref{HUGE}{HUGE3} -\item \commandpageref{it}{it} -\item \commandpageref{itshape}{itshape} -\item \commandpageref{large}{large1} -\item \commandpageref{Large}{Large2} -\item \commandpageref{LARGE}{LARGE3} -\item \commandpageref{mdseries}{mdseries} -\item \commandpageref{normalsize}{normalsize} -\item \commandpageref{rm}{rm} -\item \commandpageref{rmfamily}{rmfamily} -\item \commandpageref{sc}{sc} -\item \commandpageref{scshape}{scshape} -\item \commandpageref{sf}{sf} -\item \commandpageref{sffamily}{sffamily} -\item \commandpageref{sl}{sl} -\item \commandpageref{slshape}{slshape} -\item \commandpageref{small}{small} -\item \commandpageref{textbf}{textbf} -\item \commandpageref{textit}{textit} -\item \commandpageref{textrm}{textrm} -\item \commandpageref{textsf}{textsf} -\item \commandpageref{textsc}{textsc} -\item \commandpageref{textsl}{textsl} -\item \commandpageref{texttt}{texttt} -\item \commandpageref{tiny}{tiny} -\item \commandpageref{tt}{tt} -\item \commandpageref{ttfamily}{ttfamily} -\item \commandpageref{underline}{underline} -\item \commandpageref{upshape}{upshape} -\end{itemize} - -\subsection{Paragraph formatting} - -\begin{itemize}\itemsep=0pt -\item \commandpageref{centerline}{centerline} -\item \commandpageref{comment}{comment} -\item \commandpageref{flushleft}{flushleft} -\item \commandpageref{footnote}{footnote} -\item \commandpageref{indented}{indented} -\item \commandpageref{marginparwidth}{marginparwidth} -\item \commandpageref{marginpar}{marginpar} -\item \commandpageref{marginpareven}{marginpareven} -\item \commandpageref{marginparodd}{marginparodd} -\item \commandpageref{multicolumn}{multicolumn} -\item \commandpageref{newpage}{newpage} -\item \commandpageref{noindent}{noindent} -\item \commandpageref{onecolumn}{onecolumn} -\item \commandpageref{parindent}{parindent} -\item \commandpageref{parskip}{parskip} -\item \commandpageref{par}{par} -\item \commandpageref{quote}{quote} -\item \commandpageref{quotation}{quotation} -\item \commandpageref{textwidth}{textwidth} -\item \commandpageref{twocolumn}{twocolumn} -\item \commandpageref{verbatim}{verbatim} -\item \commandpageref{verb}{verb} -\end{itemize} - -\subsection{Special effects} - -\begin{itemize}\itemsep=0pt -\item \commandpageref{backgroundcolour}{backgroundcolour} -\item \commandpageref{backgroundimage}{backgroundimage} -\item \commandpageref{backslashraw}{backslashraw} -\item \commandpageref{bcol}{bcol} -\item \commandpageref{definecolour}{definecolour} -\item \commandpageref{fcol}{fcol} -\item \commandpageref{followedlinkcolour}{followedlinkcolour} -\item \commandpageref{helpfontfamily}{helpfontfamily} -\item \commandpageref{helpfontsize}{helpfontsize} -\item \commandpageref{hrule}{hrule} -\item \commandpageref{linkcolour}{linkcolour} -\item \commandpageref{normalbox}{normalbox} -\item \commandpageref{normalboxd}{normalboxd} -\item \commandpageref{sethotspotcolour}{sethotspotcolour} -\item \commandpageref{sethotspotunderline}{sethotspotunderline} -\item \commandpageref{settransparency}{settransparency} -\item \commandpageref{textcolour}{textcolour} -\item \commandpageref{typeout}{typeout} -\end{itemize} - -\subsection{Lists} - -\begin{itemize}\itemsep=0pt -\item \commandpageref{description}{description} -\item \commandpageref{enumerate}{enumerate} -\item \commandpageref{itemize}{itemize} -\item \commandpageref{item}{item} -\item \commandpageref{itemsep}{itemsep} -\item \commandpageref{twocolitem}{twocolitem} -\item \commandpageref{twocolitemruled}{twocolitemruled} -\item \commandpageref{twocollist}{twocollist} -\item \commandpageref{twocolwidtha}{twocolwidtha} -\item \commandpageref{twocolwidthb}{twocolwidthb} -\end{itemize} - -\subsection{Sectioning} - -\begin{itemize}\itemsep=0pt -\item \commandpageref{chapter}{chapter} -\item \commandpageref{chapter*}{chaptersX} -\item \commandpageref{chapterheading}{chapterheading} -\item \commandpageref{insertatlevel}{insertatlevel} -\item \commandpageref{paragraph}{paragraph} -\item \commandpageref{paragraph*}{paragraphX} -\item \commandpageref{section}{section} -\item \commandpageref{section*}{sectionX} -\item \commandpageref{sectionheading}{sectionheading} -\item \commandpageref{subparagraph}{subparagraph} -\item \commandpageref{subparagraph*}{subparagraphX} -\item \commandpageref{subsection}{subsection} -\item \commandpageref{subsection*}{subsectionX} -\item \commandpageref{subsubsection}{subsubsection} -\item \commandpageref{subsubsection*}{subsubsectionX} -\end{itemize} - -\subsection{Pictures} - -\begin{itemize}\itemsep=0pt -\item \commandpageref{brclear}{brclear} -\item \commandpageref{image}{image} -\item \commandpageref{imagel}{imagel} -\item \commandpageref{imagemap}{imagemap} -\item \commandpageref{imager}{imager} -\item \commandpageref{psboxto}{psboxto} -\end{itemize} - -\subsection{References and jumps} - -\begin{itemize}\itemsep=0pt -\item \commandpageref{footnotepopup}{footnotepopup} -\item \commandpageref{helpref}{helpref} -\item \commandpageref{helprefn}{helprefn} -\item \commandpageref{label}{label} -\item \commandpageref{pageref}{pageref} -\item \commandpageref{popref}{popref} -\item \commandpageref{ref}{ref} -\item \commandpageref{urlref}{urlref} -\end{itemize} - -\subsection{Tables and figures} - -\begin{itemize}\itemsep=0pt -\item \commandpageref{caption}{caption} -\item \commandpageref{figure}{figure} -\item \commandpageref{hline}{hline} -\item \commandpageref{ruledrow}{ruledrow} -\item \commandpageref{tabbing}{tabbing} -\item \commandpageref{tabular}{tabular} -\end{itemize} - -\subsection{Table of contents} - -\begin{itemize}\itemsep=0pt -\item \commandpageref{addcontentsline}{addcontentsline} -\item \commandpageref{author}{author} -\item \commandpageref{date}{date} -\item \commandpageref{maketitle}{maketitle} -\item \commandpageref{tableofcontents}{tableofcontents} -\item \commandpageref{title}{title} -\end{itemize} - -\subsection{Special sections} - -\begin{itemize}\itemsep=0pt -\item \commandpageref{bibitem}{bibitem} -\item \commandpageref{bibliographystyle}{bibliographystyle} -\item \commandpageref{bibliography}{bibliographycmd} -\item \commandpageref{cite}{cite} -\item \commandpageref{gloss}{gloss} -\item \commandpageref{helpglossary}{helpglossary} -\item \commandpageref{index}{index} -\item \commandpageref{nocite}{nocite} -\item \commandpageref{printindex}{printindex} -\item \commandpageref{shortcite}{shortcite} -\item \commandpageref{thebibliography}{thebibliography} -\end{itemize} - - -\subsection{Symbols} - -\begin{itemize}\itemsep=0pt -\item \commandpageref{backslash}{backslash} -\item \commandpageref{cdots}{cdots} -\item \commandpageref{cextract}{cextract} -\item \commandpageref{cinsert}{cinsert} -\item \commandpageref{copyright}{copyright} -\item \commandpageref{LaTeX}{LaTeX} -\item \commandpageref{lbraceraw}{lbraceraw} -\item \commandpageref{ldots}{ldots} -\item \commandpageref{rbraceraw}{rbraceraw} -\item \commandpageref{registered}{registered} -\item \commandpageref{rtfsp}{rtfsp} -\item \commandpageref{ss}{ss} -\item \commandpageref{TeX}{TeX} -\item \commandpageref{today}{today} -\end{itemize} - -\subsection{Document organisation} - -\begin{itemize}\itemsep=0pt -\item \commandpageref{document}{document} -\item \commandpageref{documentstyle}{documentstyle} -\item \commandpageref{helpignore}{helpignore} -\item \commandpageref{helponly}{helponly} -\item \commandpageref{helpinput}{helpinput} -\item \commandpageref{htmlignore}{htmlignore} -\item \commandpageref{htmlonly}{htmlonly} -\item \commandpageref{include}{include} -\item \commandpageref{input}{input} -\item \commandpageref{latexignore}{latexignore} -\item \commandpageref{latexonly}{latexonly} -\item \commandpageref{newcommand}{newcommand} -\item \commandpageref{pagestyle}{pagestyle} -\item \commandpageref{pagenumbering}{pagenumbering} -\item \commandpageref{rtfignore}{rtfignore} -\item \commandpageref{rtfonly}{rtfonly} -\item \commandpageref{setfooter}{setfooter} -\item \commandpageref{setheader}{setheader} -\item \commandpageref{special}{special} -\item \commandpageref{toocomplex}{toocomplex} -\item \commandpageref{verbatiminput}{verbatiminput} -\item \commandpageref{winhelpignore}{winhelpignore} -\item \commandpageref{winhelponly}{winhelponly} -\item \commandpageref{xlpignore}{xlpignore} -\item \commandpageref{xlponly}{xlponly} -\end{itemize} - -\chapter{Bugs and troubleshooting}\label{errors}\index{bugs}\index{errors}\index{troubleshooting}% -\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}% -\setfooter{\thepage}{}{}{}{}{\thepage}% - -\section{Bugs} - -\begin{description} -\item[Command parsing.] If a command is used followed by inappropriate -argument syntax, Tex2RTF can crash. This an occur when a command is -used in an asterisk form that is only formed in the non-asterisk -variety. The non-asterisk form is assumed, which makes the following -asterisk trip up the parser. -\item[Setlength.] Using the $\backslash$setlength command doesn't work, -since its first argument looks like a command with the wrong number -of arguments. Use an alternative form instead, e.g. \verb$\parindent 0pt$ instead -of \verb$\setlength{parindent}{0pt}$. -\item[Newcommand bug.] Environments in a command definition confuse -Tex2RTF. Use the command form instead (e.g. $\backslash$flushleft\{...\} instead -of $\backslash$begin\{flushleft\} ... $\backslash$end\{flushleft\}. -\item[Bibliography.] There's no flexibility in the way references -are output: I expect I'll get round to doing something better, -but only if people tell me they need it! -\item[Tables.] Tables can't handle all \LaTeX\ syntax, and require -the Tex2RTF \verb$\row$ commands for decent formatting. Still, it's -better than it was (RTF only). -\item[Indexes and glossaries.] Not completely supported. -\item[Crashes.] Crashes may be due to an input file exceeding the fixed-size -buffer used for converting command arguments, especially for the \verb$\verbatim$\rtfsp -command. Use the {\tt -bufsize} switch to increase the buffer size. -\item[Verbatiminput.] Verbatiminput files which do not end with a blank line -can trip up following commands. -\end{description} - -\section{Troubleshooting} - -Below are some common problems and possible solutions. - -\normalbox{Some of the syntax that is OK for true \LaTeX\ but which trips up -Tex2RTF, may be detected by the TCHECK program included in the tools -directory of the Tex2RTF distribution. Some \LaTeX\ errors may be picked up -by the LACHECK program, also found in the tools directory.} - -\subsection{Macro not found}\label{macronotfound}\index{macro not found error}% - -This error may indicate that Tex2RTF has not implemented a standard -\rtfsp\LaTeX\ command, or that a local macro package is being used that -Tex2RTF does not know about. It can cause spurious secondary -errors, such as not recognising the end document command. - -You can get round this by defining a macro file (default name {\tt tex2rtf.ini}) -containing command definitions, such as: - -\begin{verbatim} - \crazy [2]{{\bf #2} is crazy but #1 is not} - \something [0]{} - \julian [0]{Julian Smart} -\end{verbatim} - -New commands may be defined in \LaTeX\ files, but custom macro files -will have to be defined when local style files are being used. See\rtfsp -\helpref{Initialisation file syntax}{inifile} for further details. - -The `Macro not found' error can also be caused by a syntax error such as -an unbalanced brace or passing the wrong number of arguments to a command, -so look in the vicinity of the reported error for the real cause. - -Here is one obscure situation that causes this error: - -\begin{verbatim} - \begin{center} - {\large{\underline{A}}} - \end{center} -\end{verbatim} - -The problem is too many curly brackets. This should be rewritten as: - -\begin{verbatim} - \begin{center} - {\large \underline{A}} - \end{center} -\end{verbatim} - -Often you get a `Macro not found' error for \verb$\end{document}$. This -is a spurious side-effect of an earlier error, usually an incorrect number -of arguments to a command. The location of the true error is then anywhere -in the document. To home in on the error, try putting a verbatim environment -\rtfsp\verb$\begin{comment}...\end{comment}$ around much of the document, -and then move the \verb$\begin{comment}$ line down until the error -manifests itself. - -\subsection{Unresolved reference}\index{references, unresolved}% - -References and citations are usually resolved on a second pass of -Tex2RTF. If this doesn't work, then a missing label or bibliographical -entry is to blame. - -\subsection{Output crashes the RTF reader} - -This could be due to confusing table syntax. Set {\it compatibility} to\rtfsp -{\it TRUE} in {\tt .ini} file; also check for end of row characters backslash characters -on their own on a line, and insert correct number of ampersands for the number of -columns. E.g. - -\begin{verbatim} - hello & world\\ - \\ -\end{verbatim} - -becomes - -\begin{verbatim} - hello & world\\ - &\\ -\end{verbatim} - -\subsection{Erratic list indentation} - -Try increasing the value of the variable {\it listItemIndent} (default 40 -points) to give more space between label and following text. A global -replacement of \verb$\item [$ with \verb$\item[$ may also be helpful to remove -unnecessary space before the item label. - -\subsection{Missing figure or section reference} - -Ensure all labels {\it directly} follow captions or sections (no intervening -white space). - -\subsection{Linear RTF looks odd} - -For viewing by programs other than MS Word, you should set the variable {\it useWord} to {\it false}. This -will turn off some of the special RTF keywords recognised by Word (and possibly other advanced RTF readers). - -\subsection{Paragraphs preceding lists are formatted weirdly.} - -If a list has spurious spacing in it, e.g. before a \verb$\item$ command, the preceding -paragraph can take on some of the list's indentation. This may be a WinHelp bug, or an aspect -of RTF I don't fully understand. The solution is to remove unnecessary space. - -\subsection{Unresolved references in Word for Windows}\index{Microsoft Word}% - -If question marks appear instead of numbers for figures and tables, -select all (e.g. CTRL-A), then press F9 {\it twice} to reformat the -document twice. For the second format, respond with {\it Update Entire -Table} to any prompts. - -\subsection{The Windows 95 help file contents hierarchy looks wrong}\index{WinHelp files}% - -WinHelp version 4 (or the WIN32 Help Compiler) does not allow a -book in the contents list to be followed by a page at the same level. -A book must be followed by a book, for some strange reason, otherwise -the page will be tacked on to the pages of the book above it, i.e. placed -at the wrong level. - -To get around this, Tex2RTF inserts a book in some places, if there -was a book preceding it on the same level. This results in more -navigation than necessary, but is better than a wrong contents page. - -\newpage - -% Puts books in the bibliography without needing to cite them in the -% text -\nocite{smart93a}% -\nocite{kopka}% -\nocite{pfeiffer}% - -\bibliography{refs} -\addcontentsline{toc}{chapter}{Bibliography} -\setheader{{\it REFERENCES}}{}{}{}{}{{\it REFERENCES}}% -\setfooter{\thepage}{}{}{}{}{\thepage}% - -\begin{helpglossary} -\setheader{{\it GLOSSARY}}{}{}{}{}{{\it GLOSSARY}}% -\setfooter{\thepage}{}{}{}{}{\thepage}% - -\gloss{GUI} - -Graphical User Interface, such as Windows 3 or X. - -\gloss{HTML}\label{html} - -Hypertext Markup Language; an SGML document type, used for providing -hypertext information on the World Wide Web, a distributed hypertext -system on the Internet. - -\gloss{LaTeX}\label{latexgloss} - -A typesetting language implemented as a set of \TeX\ macros. It is -distinguished for allowing specification of the document structure, -whilst taking care of most layout concerns. It represents the opposite -end of the spectrum from WYSIWYG word processors. - -\gloss{RTF}\label{rtf} - -Rich Text Format: an interchange format for word processor files, -used for importing and exporting formatted documents, and as the -input to the Windows Help compiler. - -\gloss{wxHelp}\label{wxhelp} - -wxHelp is the hypertext help facility used to provide on-line -documentation for UNIX-based wxWindows applications. Under Windows 3.1, -Windows Help is used instead. - -\gloss{wxWindows}\label{wxwindows} - -wxWindows is a free C++ toolkit for writing applications that are -portable across several platforms. Currently these are Motif, Open Look, -Windows 3.1 and Windows NT. Tex2RTF is written using wxWindows. - -\end{helpglossary} - -\addcontentsline{toc}{chapter}{Index} -\setheader{{\it INDEX}}{}{}{}{}{{\it INDEX}}% -\setfooter{\thepage}{}{}{}{}{\thepage}% -\printindex% - -\end{document} diff --git a/utils/tex2rtf/docs/tex2rtf.wmf b/utils/tex2rtf/docs/tex2rtf.wmf deleted file mode 100644 index 2a17268454bb7e09b40760ce82f509886523b596..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5750 zcmbtYX>?UpmcC>t4MQoWL1wWP6rym?-e;eCFA{-RKqWGX1Va)A5kahmidGbnp^yMF z2!aX$3TPTw(9EL?iIGXB4(6dmBn%1#p@K?^gbpAGq`!MZ)%){Y%U<=?`m)a+&OYDX z``nx49WOkv(6XkqJ!nsFS8gswTlnnlTEmL7tmsCyEGyQU4~bQ?sSg-XmYzl@hW$$SM18 z`m&v)@7TR`UDZS^hNVVpM6w71iI4z+9I!L>z1%FJFcoP-z zD&R?qTun^CzZ`vu)X%89-e~LfpgPAIL}fgPvh^Zh1HGr*8S#_!pa2zmFx8S*=m8l?_2eyJC9nfH2-{awTTW4wT%=3-Dt)P| zfKqB9@d27iQ)(tHsfo0q2Sro7xX9Ix%5*zwpgp?7nlAGb^gTDFzj1tkGkk&0@b~n% zJ_DSjy80MJ=_7Q5_tO>rl>W|Zf||-Wa)+Yt_8=x=hr<2q5p<}96|y_(VqmYGtION^ zn5}ODarS%qK6|Q;w)ToUfIWoowKMo;+cYi@@Erfa_L0Wj?M&`u zzru<3EZ{}m$sVVFha6q)NxHZFt{w)A20pT<=oPSUvPbJYdxYL^XK0^`kI0pUryFVZ z;kr{$nHw90=PJgERcm>^y_TogXL!8*Gf%Li^dvh@FR|+a4RmsVx_Y2}j~;GUa<+Yp zPuc}^4(Omxadh3oAW%<56=G3v<)G>;zvn$l>lPb0Vv4PlE0as{5Pf@P>w_<>(?cRTrxnx>U{56#?eq+4V6?PXXq_w@|%{XL^EOuCnzC)!zqC1YTDI_!Tvn z2dG!LuX>$(sT}U6=5ZI`_o^rRTq0K$oxDFj{C_(?j6EH(vl0rhAoAEl$ZFjyvCR0ZN4Dy@JXCoC=+;}jN(sa7_UamQfbe*LOfd% zcpCOj0AHWCkN2g3h6ae?nG%EeDBdEs=@a>hK9dUCDW#Mr$7#J3k{|0Ma`(cwEK>Kv zz3mv>!DiMH6QYp;hVyVUj$bqrxu415UXaPqJDY5N#ta8S6c5xig%o27$TFYP9dyYu z+n{fxT4oLWt7!@F-&k*eZ7Y1+Og`l2&%jE~`b9aUXHb(c`(c~pA}vIu$z zzL42RUxE48sNjTIM;B314`($EaMsgcX9vCL?8f>4Yy|-#R}$`Yq)NhdrUjL>wlbuQ zGo-c73sA=Sa*lV)2|g&t_)96`V#x2HpNG8!u_cnL&&zWCovhQvvPpj_oAp7+-O%%4 z&x1cty6KDnxw;>0ec}?U-7C9Ai3(jbdvpVC<9*}*Y_k+Ef-!J{{ z4NoRgwc%bQ1=T)eEj70}D?qLuX_o6(%{u*(*`(9WX5AYy1$tN5JDXhKHrE4cn_C=f zZg35Ag{$NT$n(&@h5ZEl#k>?)gY_oZw!!zY`2q3@^c%3>g8z1a$ny$MBvJ+8`i2G- zD64@pQ(rYPzye)qR_M!M`~#T(6&0L-JPJJoU&xg65mUm)!0J1&`yMQ>0rxtmxQ_EJ z-|w8``c5SqXSnVQnE`zu>_gyx!zt#8z%1tk=fbwgDd8nfIj}%4c2?;5&N}^}vq?{P zHtUIyW1x?MZp&slm)GxZrps#{`9sKL{d9XPSmPedb`mpn#`hT1c zfigafs*j+`Z=7R%#wp@b$TH|xV6V>quim^t0oyi~mP7KAydzJ^GeW}BRvs564~s|> zX(tUONg7Bmtow^Ce@5g|$W_up)=M+l3je3@e-3#FF@@L{!v4deVM~$)$h#k&kQB>T za$dfaGH8{uQ?AJ;z*hNR>)N-iPmc}bAt z$b2Y342ET0FgToo=Bv5h5M5g+*V^95}}pyvC4rQ zE6>uOGYChP$tk<(x|tjQV;1#$&y5!@xRu?vO+bJIjXr#Q;$lHYAxdx$vD+s z{;ZN@l1i3^YN$L&lVzEDPiCo)72sJ4j>ob73bqjV`}O#U+?`*0 zn|t5AAN8!dR+b5=ER#fkG~MY{lS;!(8Vxb&lxZ@k4`g@PQs7HQOtLwmQp|qU-Rx9- z%np@lwyPnKuR{ML?A5tKs=ryKQq4-$(=0>$B9&}DfSdt+66_P;ACEnguxC2LUWD}%lM{>T-ECmd=1;rjpaTP7dX<(s4GkU5~f2Ft&KZ8=z1LDq40ss_#h)!aF% z9(B&Cmdb~)r?=<{LEg+CWO|6=mh8gSbJ zZh2-8c>CN#ztD+a`y`|XPeOt<#>rJtx`iswJ*9TLKdL?MO|{Fthdy&_(+>AO@;O%XyrmYox72+1do|nrR!w$~sW;ss z^(y25=r3SzZ}@%uYfnd;;7-)DO57wWap$TFnE6FFM_qQutLyGKRRtOA<*1q--dx^X zAc<;v-6_^frD!jWs@!zCj&59ryy&LV1>BSBTuHz1W(rRy((J-d^@O{#Yi0eLmF|U9 zx>uxzdI!{N-cB{%+o5K9+tm^;Pi^qi#Q5SC>Jq_u?Ch&$?1z2~*3k35GK!M5CM39fMg{O?#Ft5H?u%W{18TP>@>$} - - -% =================== 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} (section \ref{#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}.} diff --git a/utils/tex2rtf/docs/up.gif b/utils/tex2rtf/docs/up.gif deleted file mode 100644 index 316d0d2a14b571bea2eb874efd04bfe509f53b34..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 with the docstrip utility (v1.1l test). -%% -%% The original source file was `verbatim.doc'. -%% -%% -%% Copyright (C) 1989,1990,1991 by Rainer Schoepf. All rights reserved. -%% -%% IMPORTANT NOTICE: -%% -%% You are not allowed to change this file. You may however copy this file -%% to a different name and then change this copy. -%% -%% You are allowed to distribute this file under the condition that it is -%% distributed together with all files mentioned in readme.mz4. If you -%% receive only some of these files from someone, complain! -%% -%% You are NOT ALLOWED to distribute this file alone. You are NOT ALLOWED -%% to take money for the distribution or use of this file (or a changed -%% version) except for some nominal charge for copying etc. -%% -%% Error Reports in case of UNCHANGED versions to -%% -%% Rainer Schoepf -%% Konrad-Zuse-Zentrum fuer Informationstechnik Berlin -%% Heilbronner Str. 10 -%% W-1000 Berlin 31 -%% Federal Republic of Germany -%% Internet: -%% -\def\fileversion{v1.4f} -\def\filedate{91/08/05} -\def\docdate{91/08/05} - -%% \CheckSum{439} -%% \CharacterTable -%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -%% Digits \0\1\2\3\4\5\6\7\8\9 -%% Exclamation \! Double quote \" Hash (number) \# -%% Dollar \$ Percent \% Ampersand \& -%% Acute accent \' Left paren \( Right paren \) -%% Asterisk \* Plus \+ Comma \, -%% Minus \- Point \. Solidus \/ -%% Colon \: Semicolon \; Less than \< -%% Equals \= Greater than \> Question mark \? -%% Commercial at \@ Left bracket \[ Backslash \\ -%% Right bracket \] Circumflex \^ Underscore \_ -%% Grave accent \` Left brace \{ Vertical bar \| -%% Right brace \} Tilde \~} -%% -%% Style-option `verbatim' to use with LaTeX v2.09 -%% Copyright (C) 1989, 1990, 1991 by Rainer Sch\"opf, all rights reserved. -\@ifundefined{verbatim@@@}{}{\endinput} -\typeout{Style-Option: `verbatim' - \fileversion \space <\filedate> (RmS)} -\typeout{English Documentation - \@spaces \@spaces \space <\docdate> (RmS)} -\def\addto@hook#1#2{#1\expandafter{\the#1#2}} -\newtoks\every@verbatim -\every@verbatim={} -\def\@makeother#1{\catcode`#112\relax} -\begingroup - \catcode`\ =\active% -\gdef\@vobeyspaces{\catcode`\ \active\let \@xobeysp}% -\endgroup -\def\@xobeysp{\leavevmode\penalty\@M\ } -\newtoks\verbatim@line -\def\verbatim@startline{\verbatim@line{}} -\def\verbatim@addtoline#1{% - \verbatim@line\expandafter{\the\verbatim@line#1}} -\def\verbatim@processline{\the\verbatim@line\par} -\def\verbatim@finish{\ifcat$\the\verbatim@line$\else - \verbatim@processline\fi} -\begingroup - \catcode`\`=\active - \gdef\verbatim@font{\tt \catcode96\active - \def`{\leavevmode\kern\z@\char96 }} -\endgroup -\def\@verbatim{\the\every@verbatim - \trivlist \item[]% - \leftskip\@totalleftmargin\rightskip\z@ - \parindent\z@\parfillskip\@flushglue\parskip\z@ - \@@par - \def\par{\leavevmode\null\@@par\penalty\interlinepenalty}% - \obeylines - \verbatim@font - \let\do\@makeother \dospecials} -\def\verbatim{\@verbatim \frenchspacing\@vobeyspaces\verbatim@start} -\@namedef{verbatim*}{\@verbatim\verbatim@start} -\let\endverbatim=\endtrivlist -\expandafter\let\csname endverbatim*\endcsname =\endtrivlist -\def\comment{\@bsphack - \let\do\@makeother\dospecials\catcode`\^^M\active - \let\verbatim@startline\relax - \let\verbatim@addtoline\@gobble - \let\verbatim@processline\relax - \let\verbatim@finish\relax - \verbatim@} -\let\endcomment=\@esphack -\@ifundefined{vrb@catcodes}% - {\def\vrb@catcodes{% - \catcode`\!12\catcode`\[12\catcode`\]12}}{} -\begingroup - \vrb@catcodes - \lccode`\!=`\\ \lccode`\[=`\{ \lccode`\]=`\} - \catcode`\~=\active \lccode`\~=`\^^M - \lccode`\C=`\C - \lowercase{% - \gdef\verbatim@start#1{% - \verbatim@startline - \if\noexpand#1\noexpand~% - \let\next\verbatim@ - \else \def\next{\verbatim@#1}\fi - \next}% - \gdef\verbatim@#1~{\verbatim@@#1!end\@nil}% - \gdef\verbatim@@#1!end{% - \verbatim@addtoline{#1}% - \futurelet\next\verbatim@@@}% - \gdef\verbatim@@@#1\@nil{% - \ifx\next\@nil - \verbatim@processline - \verbatim@startline - \let\next\verbatim@ - \else - \def\@tempa##1!end\@nil{\toks@{##1}}% - \@tempa#1\@nil - \@temptokena{!end}% - \edef\next{\noexpand\verbatim@test\the\toks@\noexpand~}% - \fi \next}% - \gdef\verbatim@test#1{% - \let\next\verbatim@test - \if\noexpand#1\noexpand~% - \expandafter\verbatim@addtoline - \expandafter{\the\@temptokena}% - \verbatim@processline - \verbatim@startline - \let\next\verbatim@ - \else \if\noexpand#1 - \@temptokena\expandafter{\the\@temptokena#1}% - \else \if\noexpand#1\noexpand[% - \let\@tempc\@empty - \let\next\verbatim@testend - \else - \expandafter\verbatim@addtoline - \expandafter{\the\@temptokena}% - \def\next{\verbatim@#1}% - \fi\fi\fi - \next}% - \gdef\verbatim@testend#1{% - \if\noexpand#1\noexpand~% - \expandafter\verbatim@addtoline - \expandafter{\the\@temptokena[}% - \expandafter\verbatim@addtoline - \expandafter{\@tempc}% - \verbatim@processline - \verbatim@startline - \let\next\verbatim@ - \else\if\noexpand#1\noexpand]% - \let\next\verbatim@@testend - \else\if\noexpand#1\noexpand!% - \expandafter\verbatim@addtoline - \expandafter{\the\@temptokena[}% - \expandafter\verbatim@addtoline - \expandafter{\@tempc}% - \def\next{\verbatim@!}% - \else \expandafter\def\expandafter\@tempc\expandafter - {\@tempc#1}\fi\fi\fi - \next}% - \gdef\verbatim@@testend{% - \ifx\@tempc\@currenvir - \verbatim@finish - \edef\next{\noexpand\end{\@currenvir}% - \noexpand\verbatim@rescan{\@currenvir}}% - \else - \expandafter\verbatim@addtoline - \expandafter{\the\@temptokena[}% - \expandafter\verbatim@addtoline - \expandafter{\@tempc]}% - \let\next\verbatim@ - \fi - \next}% - \gdef\verbatim@rescan#1#2~{\if\noexpand~\noexpand#2~\else - \@warning{Characters dropped after `\string\end{#1}'}\fi}} -\endgroup -\def\verbatiminput{\begingroup - \@ifstar\sverbatim@input\verbatim@input} -\def\sverbatim@input#1{\@verbatim - \@input{#1}\endtrivlist\endgroup\@doendpe} -\def\verbatim@input#1{\@verbatim - \frenchspacing \@vobeyspaces - \@input{#1}\endtrivlist\endgroup\@doendpe} -\begingroup - \lccode`\~=`\^^M - \lowercase{% - \gdef\verb{\begingroup - \verbatim@font - \catcode`\^^M\active - \def~{\endgroup\@latexerr{\string\verb\space command ended by - end of line.}\@ehc}% - \let\do\@makeother \dospecials - \@ifstar\@sverb{\@vobeyspaces \frenchspacing \@sverb}}} -\endgroup -\def\@sverb#1{% - \catcode`#1\active - \lccode`\~`#1% - \lowercase{\let~\endgroup}% - \leavevmode\null} -\endinput -%% -%% End of file `verbatim.sty'. diff --git a/utils/tex2rtf/src/bmputils.h b/utils/tex2rtf/src/bmputils.h deleted file mode 100644 index 0f8b07a453..0000000000 --- a/utils/tex2rtf/src/bmputils.h +++ /dev/null @@ -1,227 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: bmputils.h -// Purpose: Utilities for manipulating bitmap and metafile images for -// the purposes of conversion to RTF -// Author: Julian Smart -// Modified by: -// Created: 7.9.93 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -static char hexArray[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', - 'C', 'D', 'E', 'F' }; - -void DecToHex(int dec, char *buf) -{ - int firstDigit = (int)(dec/16.0); - int secondDigit = (int)(dec - (firstDigit*16.0)); - buf[0] = hexArray[firstDigit]; - buf[1] = hexArray[secondDigit]; - buf[2] = 0; -} - -static unsigned int getshort(FILE *fp) -{ - int c, c1; - c = getc(fp); c1 = getc(fp); - return ((unsigned int) c) + (((unsigned int) c1) << 8); -} - -static unsigned long getint(FILE *fp) -{ - int c, c1, c2, c3; - c = getc(fp); c1 = getc(fp); c2 = getc(fp); c3 = getc(fp); - return (long)((long) c) + - (((long) c1) << 8) + - (((long) c2) << 16) + - (((long) c3) << 24); -} - -bool GetBMPHeader(FILE *fp, int *Width, int *Height, int *Planes, int *BitsPerPixel) -{ - unsigned long bfSize, bfOffBits, biSize, biWidth, biHeight, biPlanes; - unsigned long biBitCount, biCompression, biSizeImage, biXPelsPerMeter; - unsigned long biYPelsPerMeter, biClrUsed, biClrImportant; - - /* read the file type (first two bytes) */ - int c = getc(fp); int c1 = getc(fp); - if (c!='B' || c1!='M') { return FALSE; } - - bfSize = getint(fp); - getshort(fp); /* reserved and ignored */ - getshort(fp); - bfOffBits = getint(fp); - - biSize = getint(fp); - biWidth = getint(fp); - biHeight = getint(fp); - biPlanes = getshort(fp); - biBitCount = getshort(fp); - biCompression = getint(fp); - biSizeImage = getint(fp); - biXPelsPerMeter = getint(fp); - biYPelsPerMeter = getint(fp); - biClrUsed = getint(fp); - biClrImportant = getint(fp); - - *Width = (int)biWidth; - *Height = (int)biHeight; - *Planes = (int)biPlanes; - *BitsPerPixel = (int)biBitCount; - -// fseek(fp, bfOffBits, SEEK_SET); - - return TRUE; -} - -static int scanLineWidth = 0; - -bool OutputBitmapHeader(FILE *fd, bool isWinHelp = FALSE) -{ - int Width, Height, Planes, BitsPerPixel; - if (!GetBMPHeader(fd, &Width, &Height, &Planes, &BitsPerPixel)) - return FALSE; - - scanLineWidth = (int)((float)Width/(8.0/(float)BitsPerPixel)); - if ((float)((int)(scanLineWidth/2.0)) != (float)(scanLineWidth/2.0)) - scanLineWidth ++; - - int goalW = 15*Width; - int goalH = 15*Height; - - TexOutput("{\\pict"); - if (isWinHelp) TexOutput("\\wbitmap0"); - else TexOutput("\\dibitmap"); - - char buf[50]; - TexOutput("\\picw"); sprintf(buf, "%d", Width); TexOutput(buf); - TexOutput("\\pich"); sprintf(buf, "%d", Height); TexOutput(buf); - TexOutput("\\wbmbitspixel"); sprintf(buf, "%d", BitsPerPixel); TexOutput(buf); - TexOutput("\\wbmplanes"); sprintf(buf, "%d", Planes); TexOutput(buf); - TexOutput("\\wbmwidthbytes"); sprintf(buf, "%d", scanLineWidth); TexOutput(buf); - TexOutput("\\picwgoal"); sprintf(buf, "%d", goalW); TexOutput(buf); - TexOutput("\\pichgoal"); sprintf(buf, "%d", goalH); TexOutput(buf); - TexOutput("\n"); - return TRUE; -} - - -bool OutputBitmapData(FILE *fd) -{ - fseek(fd, 14, SEEK_SET); - int bytesSoFar = 0; - int ch = getc(fd); - char hexBuf[3]; - while (ch != EOF) - { - if (bytesSoFar == scanLineWidth) - { - bytesSoFar = 0; - TexOutput("\n"); - } - DecToHex(ch, hexBuf); - TexOutput(hexBuf); - bytesSoFar ++; - ch = getc(fd); - } - TexOutput("\n}\n"); - return TRUE; -} - -#ifdef __WXMSW__ -struct mfPLACEABLEHEADER { - DWORD key; - HANDLE hmf; - RECT bbox; - WORD inch; - DWORD reserved; - WORD checksum; -}; - -// Returns size in TWIPS -bool GetMetafileHeader(FILE *handle, int *width, int *height) -{ - char buffer[40]; - mfPLACEABLEHEADER *theHeader = (mfPLACEABLEHEADER *)&buffer; - fread((void *)theHeader, sizeof(char), sizeof(mfPLACEABLEHEADER), handle); - if (theHeader->key != 0x9AC6CDD7) - { - return FALSE; - } - - float widthInUnits = (float)theHeader->bbox.right - theHeader->bbox.left; - float heightInUnits = (float)theHeader->bbox.bottom - theHeader->bbox.top; - *width = (int)((widthInUnits*1440.0)/theHeader->inch); - *height = (int)((heightInUnits*1440.0)/theHeader->inch); - return TRUE; -} - -bool OutputMetafileHeader(FILE *handle, bool isWinHelp, int userWidth, int userHeight) -{ - int Width, Height; - if (!GetMetafileHeader(handle, &Width, &Height)) - return FALSE; - - scanLineWidth = 64; - int goalW = Width; - int goalH = Height; - - // Scale to user's dimensions if we have the information - if (userWidth > 0 && userHeight == 0) - { - double scaleFactor = ((double)userWidth/(double)goalW); - goalW = userWidth; - goalH = (int)((goalH * scaleFactor) + 0.5); - } - else if (userWidth == 0 && userHeight > 0) - { - double scaleFactor = ((double)userHeight/(double)goalH); - goalH = userHeight; - goalW = (int)((goalW * scaleFactor) + 0.5); - } - else if (userWidth > 0 && userHeight > 0) - { - goalW = userWidth; - goalH = userHeight; - } - - TexOutput("{\\pict"); - TexOutput("\\wmetafile8"); - - char buf[50]; - TexOutput("\\picw"); sprintf(buf, "%d", Width); TexOutput(buf); - TexOutput("\\pich"); sprintf(buf, "%d", Height); TexOutput(buf); - TexOutput("\\picwgoal"); sprintf(buf, "%d", goalW); TexOutput(buf); - TexOutput("\\pichgoal"); sprintf(buf, "%d", goalH); TexOutput(buf); - TexOutput("\n"); - return TRUE; -} - -bool OutputMetafileData(FILE *handle) -{ - int bytesSoFar = 0; - char hexBuf[3]; - int ch; - do - { - ch = getc(handle); - if (bytesSoFar == scanLineWidth) - { - bytesSoFar = 0; - TexOutput("\n"); - } - if (ch != EOF) - { - DecToHex(ch, hexBuf); - TexOutput(hexBuf); - bytesSoFar ++; - } - } while (ch != EOF); - TexOutput("\n}\n"); - return TRUE; -} - -#endif - diff --git a/utils/tex2rtf/src/books.bmp b/utils/tex2rtf/src/books.bmp deleted file mode 100644 index cf1e148734c807052ec6359ad2eb1a3e8d43d43d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/utils/tex2rtf/src/dos.def b/utils/tex2rtf/src/dos.def deleted file mode 100644 index 00b503b084..0000000000 --- a/utils/tex2rtf/src/dos.def +++ /dev/null @@ -1,10 +0,0 @@ -NAME TEX2RTF -DESCRIPTION 'Tex2Rtf' -; -EXETYPE DOS -; -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE -; -HEAPSIZE 1024 -STACKSIZE 8192 diff --git a/utils/tex2rtf/src/htmlutil.cpp b/utils/tex2rtf/src/htmlutil.cpp deleted file mode 100644 index a67bc10be4..0000000000 --- a/utils/tex2rtf/src/htmlutil.cpp +++ /dev/null @@ -1,2982 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: htmlutil.cpp -// Purpose: Converts Latex to HTML -// Author: Julian Smart -// Modified by: -// Created: 7.9.93 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include "tex2any.h" -#include "tex2rtf.h" -#include "table.h" - -extern void DecToHex(int, char *); -void GenerateHTMLIndexFile(char *fname); -void OutputContentsFrame(void); - -#include "readshg.h" // Segmented hypergraphics parsing - -char *ChaptersName = NULL; -char *SectionsName = NULL; -char *SubsectionsName = NULL; -char *SubsubsectionsName = NULL; -char *TitlepageName = NULL; -char *lastFileName = NULL; -char *lastTopic = NULL; -char *currentFileName = NULL; -char *contentsFrameName = NULL; - -static TexChunk *descriptionItemArg = NULL; -static TexChunk *helpRefFilename = NULL; -static TexChunk *helpRefText = NULL; -static int indentLevel = 0; -static int citeCount = 1; -extern FILE *Contents; -FILE *FrameContents = NULL; -FILE *Titlepage = NULL; -// FILE *FrameTitlepage = NULL; -int fileId = 0; -bool subsectionStarted = FALSE; - -// Which column of a row are we in? (Assumes no nested tables, of course) -int currentColumn = 0; - -// Are we in verbatim mode? If so, format differently. -static bool inVerbatim = FALSE; - -// Need to know whether we're in a table or figure for benefit -// of listoffigures/listoftables -static bool inFigure = FALSE; -static bool inTable = FALSE; - -// This is defined in the Tex2Any library. -extern char *BigBuffer; - -class HyperReference: public wxObject -{ - public: - char *refName; - char *refFile; - HyperReference(char *name, char *file) - { - if (name) refName = copystring(name); - if (file) refFile = copystring(file); - } -}; - -class TexNextPage: public wxObject -{ - public: - char *label; - char *filename; - TexNextPage(char *theLabel, char *theFile) - { - label = copystring(theLabel); - filename = copystring(theFile); - } - ~TexNextPage(void) - { - delete[] label; - delete[] filename; - } -}; - -wxHashTable TexNextPages(wxKEY_STRING); - -static char *CurrentChapterName = NULL; -static char *CurrentChapterFile = NULL; -static char *CurrentSectionName = NULL; -static char *CurrentSectionFile = NULL; -static char *CurrentSubsectionName = NULL; -static char *CurrentSubsectionFile = NULL; -static char *CurrentSubsubsectionName = NULL; -static char *CurrentSubsubsectionFile = NULL; -static char *CurrentTopic = NULL; - -static void SetCurrentTopic(char *s) -{ - if (CurrentTopic) delete[] CurrentTopic; - CurrentTopic = copystring(s); -} - -void SetCurrentChapterName(char *s, char *file) -{ - if (CurrentChapterName) delete[] CurrentChapterName; - CurrentChapterName = copystring(s); - if (CurrentChapterFile) delete[] CurrentChapterFile; - CurrentChapterFile = copystring(file); - - currentFileName = CurrentChapterFile; - - SetCurrentTopic(s); -} -void SetCurrentSectionName(char *s, char *file) -{ - if (CurrentSectionName) delete[] CurrentSectionName; - CurrentSectionName = copystring(s); - if (CurrentSectionFile) delete[] CurrentSectionFile; - CurrentSectionFile = copystring(file); - - currentFileName = CurrentSectionFile; - SetCurrentTopic(s); -} -void SetCurrentSubsectionName(char *s, char *file) -{ - if (CurrentSubsectionName) delete[] CurrentSubsectionName; - CurrentSubsectionName = copystring(s); - if (CurrentSubsectionFile) delete[] CurrentSubsectionFile; - CurrentSubsectionFile = copystring(file); - currentFileName = CurrentSubsectionFile; - SetCurrentTopic(s); -} -void SetCurrentSubsubsectionName(char *s, char *file) -{ - if (CurrentSubsubsectionName) delete[] CurrentSubsubsectionName; - CurrentSubsubsectionName = copystring(s); - if (CurrentSubsubsectionFile) delete[] CurrentSubsubsectionFile; - CurrentSubsubsectionFile = copystring(file); - currentFileName = CurrentSubsubsectionFile; - SetCurrentTopic(s); -} - -/* - * Close former filedescriptor and reopen using another filename. - * - */ - -void ReopenFile(FILE **fd, char **fileName) -{ - if (*fd) - { - fprintf(*fd, "\n\n"); - fclose(*fd); - } - fileId ++; - char buf[400]; - if (truncateFilenames) - sprintf(buf, "%s%d.htm", FileRoot, fileId); - else - sprintf(buf, "%s%d.html", FileRoot, fileId); - if (*fileName) delete[] *fileName; - *fileName = copystring(FileNameFromPath(buf)); - *fd = fopen(buf, "w"); - fprintf(*fd, "\n"); -} - -/* - * Reopen section contents file, i.e. the index appended to each section - * in subsectionCombine mode - */ - -static char *SectionContentsFilename = NULL; -static FILE *SectionContentsFD = NULL; - -void ReopenSectionContentsFile(void) -{ - if ( SectionContentsFD ) - { - fclose(SectionContentsFD); - } - if ( SectionContentsFilename ) - delete[] SectionContentsFilename; - SectionContentsFD = NULL; - SectionContentsFilename = NULL; - - // Create the name from the current section filename - if ( CurrentSectionFile ) - { - char buf[256]; - strcpy(buf, CurrentSectionFile); - wxStripExtension(buf); - strcat(buf, ".con"); - SectionContentsFilename = copystring(buf); - - SectionContentsFD = fopen(SectionContentsFilename, "w"); - } -} - - -/* - * Given a TexChunk with a string value, scans through the string - * converting Latex-isms into HTML-isms, such as 2 newlines ->

    . - * - */ - -void ProcessText2HTML(TexChunk *chunk) -{ - bool changed = FALSE; - int ptr = 0; - int i = 0; - char ch = 1; - int len = strlen(chunk->value); - while (ch != 0) - { - ch = chunk->value[i]; - - // 2 newlines means \par - if (!inVerbatim && chunk->value[i] == 10 && ((len > i+1 && chunk->value[i+1] == 10) || - ((len > i+1 && chunk->value[i+1] == 13) && - (len > i+2 && chunk->value[i+2] == 10)))) - { - BigBuffer[ptr] = 0; strcat(BigBuffer, "

    \n\n"); ptr += 5; - i += 2; - changed = TRUE; - } - else if (!inVerbatim && ch == '`' && (len >= i+1 && chunk->value[i+1] == '`')) - { - BigBuffer[ptr] = '"'; ptr ++; - i += 2; - changed = TRUE; - } - else if (!inVerbatim && ch == '`') // Change ` to ' - { - BigBuffer[ptr] = 39; ptr ++; - i += 1; - changed = TRUE; - } - else if (ch == '<') // Change < to < - { - BigBuffer[ptr] = 0; - strcat(BigBuffer, "<"); - ptr += 4; - i += 1; - changed = TRUE; - } - else if (ch == '>') // Change > to > - { - BigBuffer[ptr] = 0; - strcat(BigBuffer, ">"); - ptr += 4; - i += 1; - changed = TRUE; - } - else - { - BigBuffer[ptr] = ch; - i ++; - ptr ++; - } - } - BigBuffer[ptr] = 0; - - if (changed) - { - delete chunk->value; - chunk->value = copystring(BigBuffer); - } -} - -/* - * Scan through all chunks starting from the given one, - * calling ProcessText2HTML to convert Latex-isms to RTF-isms. - * This should be called after Tex2Any has parsed the file, - * and before TraverseDocument is called. - * - */ - -void Text2HTML(TexChunk *chunk) -{ - Tex2RTFYield(); - if (stopRunning) return; - - switch (chunk->type) - { - case CHUNK_TYPE_MACRO: - { - TexMacroDef *def = chunk->def; - - if (def && def->ignore) - return; - - if (def && (def->macroId == ltVERBATIM || def->macroId == ltVERB || def->macroId == ltSPECIAL)) - inVerbatim = TRUE; - - wxNode *node = chunk->children.First(); - while (node) - { - TexChunk *child_chunk = (TexChunk *)node->Data(); - Text2HTML(child_chunk); - node = node->Next(); - } - - if (def && (def->macroId == ltVERBATIM || def->macroId == ltVERB || def->macroId == ltSPECIAL)) - inVerbatim = FALSE; - - break; - } - case CHUNK_TYPE_ARG: - { - wxNode *node = chunk->children.First(); - while (node) - { - TexChunk *child_chunk = (TexChunk *)node->Data(); - Text2HTML(child_chunk); - node = node->Next(); - } - - break; - } - case CHUNK_TYPE_STRING: - { - if (chunk->value) - ProcessText2HTML(chunk); - break; - } - } -} - -/* - * Add appropriate browse buttons to this page. - * - */ - -void AddBrowseButtons(char *upLabel, char *upFilename, - char *previousLabel, char *previousFilename, - char *thisLabel, char *thisFilename) -{ - char contentsReferenceBuf[80]; - char upReferenceBuf[80]; - char backReferenceBuf[80]; - char forwardReferenceBuf[80]; - if (htmlBrowseButtons == HTML_BUTTONS_NONE) - return; - - char *contentsReference = NULL; - if (htmlBrowseButtons == HTML_BUTTONS_TEXT) - contentsReference = ContentsNameString; - else - { -// contentsReference = "\"Contents\""; - contentsReference = contentsReferenceBuf; - sprintf(contentsReference, "\"Contents\"", ConvertCase("contents.gif")); - } - - char *upReference = NULL; - if (htmlBrowseButtons == HTML_BUTTONS_TEXT) - upReference = UpNameString; - else - { -// upReference = "\"Up\""; - upReference = upReferenceBuf; - sprintf(upReference, "\"Up\"", ConvertCase("up.gif")); - } - - char *backReference = NULL; - if (htmlBrowseButtons == HTML_BUTTONS_TEXT) - backReference = "<<"; - else - { -// backReference = "\"Previous\""; - backReference = backReferenceBuf; - sprintf(backReference, "\"Previous\"", ConvertCase("back.gif")); - } - - char *forwardReference = NULL; - if (htmlBrowseButtons == HTML_BUTTONS_TEXT) - forwardReference = ">>"; - else - { -// forwardReference = "\"Next\""; - forwardReference = forwardReferenceBuf; - sprintf(forwardReference, "\"Next\"", ConvertCase("forward.gif")); - } - - TexOutput("

    "); - - char buf[200]; - - /* - * Contents button - * - */ - - if (truncateFilenames) - { - char buf1[80]; - strcpy(buf1, ConvertCase(FileNameFromPath(FileRoot))); - sprintf(buf, "\n%s ", buf1, ConvertCase("htm"), contentsReference); - } - else - { - char buf1[80]; - strcpy(buf1, ConvertCase(FileNameFromPath(FileRoot))); - sprintf(buf, "\n%s ", buf1, ConvertCase("_contents.html"), contentsReference); - } -// TexOutput(""); - TexOutput(buf); -// TexOutput(""); - - /* - * Up button - * - */ - - if (upLabel && upFilename) - { - if (strlen(upLabel) > 0) - sprintf(buf, "%s ", ConvertCase(upFilename), upLabel, upReference); - else - sprintf(buf, "%s ", ConvertCase(upFilename), upReference); - if (strcmp(upLabel, "contents") == 0) - { -// TexOutput(""); - TexOutput(buf); -// TexOutput(""); - } - else - TexOutput(buf); - } - - /* - * << button - * - */ - - if (previousLabel && previousFilename) - { - sprintf(buf, "%s ", ConvertCase(previousFilename), previousLabel, backReference); - if (strcmp(previousLabel, "contents") == 0) - { -// TexOutput(""); - TexOutput(buf); -// TexOutput(""); - } - else - TexOutput(buf); - } - else - { - // A placeholder so the buttons don't keep moving position - sprintf(buf, "%s ", backReference); - TexOutput(buf); - } - - char *nextLabel = NULL; - char *nextFilename = NULL; - - // Get the next page, and record the previous page's 'next' page - // (i.e. this page) - TexNextPage *nextPage = (TexNextPage *)TexNextPages.Get(thisLabel); - if (nextPage) - { - nextLabel = nextPage->label; - nextFilename = nextPage->filename; - } - if (previousLabel && previousFilename) - { - TexNextPage *oldNextPage = (TexNextPage *)TexNextPages.Get(previousLabel); - if (oldNextPage) - { - delete oldNextPage; - TexNextPages.Delete(previousLabel); - } - TexNextPage *newNextPage = new TexNextPage(thisLabel, thisFilename); - TexNextPages.Put(previousLabel, newNextPage); - } - - /* - * >> button - * - */ - - if (nextLabel && nextFilename) - { - sprintf(buf, "%s ", ConvertCase(nextFilename), nextLabel, forwardReference); - TexOutput(buf); - } - else - { - // A placeholder so the buttons don't keep moving position - sprintf(buf, "%s ", forwardReference); - TexOutput(buf); - } - - /* - * Horizontal rule to finish it off nicely. - * - */ - TexOutput("
    "); - TexOutput("
    \n"); - - // Update last topic/filename - if (lastFileName) - delete[] lastFileName; - lastFileName = copystring(thisFilename); - if (lastTopic) - delete[] lastTopic; - lastTopic = copystring(thisLabel); -} - -// A colour string is either 3 numbers separated by semicolons (RGB), -// or a reference to a GIF. Return the filename or a hex string like #934CE8 -char *ParseColourString(char *bkStr, bool *isPicture) -{ - static char resStr[300]; - strcpy(resStr, bkStr); - char *tok1 = strtok(resStr, ";"); - char *tok2 = strtok(NULL, ";"); - if (tok1) - { - if (!tok2) - { - *isPicture = TRUE; - return resStr; - } - else - { - *isPicture = FALSE; - char *tok3 = strtok(NULL, ";"); - if (tok3) - { - // Now convert 3 strings into decimal numbers, and then hex numbers. - int red = atoi(tok1); - int green = atoi(tok2); - int blue = atoi(tok3); - - strcpy(resStr, "#"); - - char buf[3]; - DecToHex(red, buf); - strcat(resStr, buf); - DecToHex(green, buf); - strcat(resStr, buf); - DecToHex(blue, buf); - strcat(resStr, buf); - return resStr; - } - else return NULL; - } - } - else return NULL; -} - -// Output start of block -void OutputBodyStart(void) -{ - TexOutput("\n\n"); -} - -// Called on start/end of macro examination -void HTMLOnMacro(int macroId, int no_args, bool start) -{ - switch (macroId) - { - case ltCHAPTER: - case ltCHAPTERSTAR: - case ltCHAPTERHEADING: - { - if (!start) - { - sectionNo = 0; - figureNo = 0; - subsectionNo = 0; - subsubsectionNo = 0; - if (macroId != ltCHAPTERSTAR) - chapterNo ++; - - SetCurrentOutput(NULL); - startedSections = TRUE; - - char *topicName = FindTopicName(GetNextChunk()); - ReopenFile(&Chapters, &ChaptersName); - AddTexRef(topicName, ChaptersName, ChapterNameString); - - SetCurrentChapterName(topicName, ChaptersName); - - SetCurrentOutput(Chapters); - - TexOutput(""); - OutputCurrentSection(); // Repeat section header - TexOutput("\n"); - OutputBodyStart(); - - char titleBuf[200]; - if (truncateFilenames) - sprintf(titleBuf, "%s.htm", FileNameFromPath(FileRoot)); - else - sprintf(titleBuf, "%s_contents.html", FileNameFromPath(FileRoot)); - - fprintf(Chapters, "", topicName); - - AddBrowseButtons("", titleBuf, // Up - lastTopic, lastFileName, // Last topic - topicName, ChaptersName); // This topic - - fprintf(Contents, "\n
  • ", ConvertCase(ChaptersName), topicName); - - if (htmlFrameContents && FrameContents) - { - SetCurrentOutput(FrameContents); - fprintf(FrameContents, "\n
  • ", ConvertCase(ChaptersName), topicName); - OutputCurrentSection(); - fprintf(FrameContents, "\n"); - } - - SetCurrentOutputs(Contents, Chapters); - fprintf(Chapters, "\n

    "); - OutputCurrentSection(); - fprintf(Contents, "\n"); - fprintf(Chapters, "

    \n"); - - SetCurrentOutput(Chapters); - - // Add this section title to the list of keywords - if (htmlIndex) - { - OutputCurrentSectionToString(wxBuffer); - AddKeyWordForTopic(topicName, wxBuffer, ConvertCase(currentFileName)); - } - } - break; - } - case ltSECTION: - case ltSECTIONSTAR: - case ltSECTIONHEADING: - case ltGLOSS: - { - if (!start) - { - subsectionNo = 0; - subsubsectionNo = 0; - subsectionStarted = FALSE; - - if (macroId != ltSECTIONSTAR) - sectionNo ++; - - SetCurrentOutput(NULL); - startedSections = TRUE; - - char *topicName = FindTopicName(GetNextChunk()); - ReopenFile(&Sections, &SectionsName); - AddTexRef(topicName, SectionsName, SectionNameString); - - SetCurrentSectionName(topicName, SectionsName); - - SetCurrentOutput(Sections); - TexOutput(""); - OutputCurrentSection(); - TexOutput("\n"); - OutputBodyStart(); - - fprintf(Sections, "", topicName); - AddBrowseButtons(CurrentChapterName, CurrentChapterFile, // Up - lastTopic, lastFileName, // Last topic - topicName, SectionsName); // This topic - - FILE *jumpFrom = ((DocumentStyle == LATEX_ARTICLE) ? Contents : Chapters); - - SetCurrentOutputs(jumpFrom, Sections); - if (DocumentStyle == LATEX_ARTICLE) - fprintf(jumpFrom, "\n
  • ", ConvertCase(SectionsName), topicName); - else - fprintf(jumpFrom, "\n", ConvertCase(SectionsName), topicName); - - fprintf(Sections, "\n

    "); - OutputCurrentSection(); - - if (DocumentStyle == LATEX_ARTICLE) - fprintf(jumpFrom, "\n"); - else - fprintf(jumpFrom, "
    \n"); - fprintf(Sections, "

    \n"); - - SetCurrentOutput(Sections); - // Add this section title to the list of keywords - if (htmlIndex) - { - OutputCurrentSectionToString(wxBuffer); - AddKeyWordForTopic(topicName, wxBuffer, currentFileName); - } - } - break; - } - case ltSUBSECTION: - case ltSUBSECTIONSTAR: - case ltMEMBERSECTION: - case ltFUNCTIONSECTION: - { - if (!start) - { - if (!Sections) - { - OnError("You cannot have a subsection before a section!"); - } - else - { - subsubsectionNo = 0; - - if (macroId != ltSUBSECTIONSTAR) - subsectionNo ++; - - if ( combineSubSections && !subsectionStarted ) - { - // Read old .con file in at this point - char buf[256]; - strcpy(buf, CurrentSectionFile); - wxStripExtension(buf); - strcat(buf, ".con"); - FILE *fd = fopen(buf, "r"); - if ( fd ) - { - int ch = getc(fd); - while (ch != EOF) - { - putc(ch, Sections); - ch = getc(fd); - } - fclose(fd); - } - fprintf(Sections, "

    \n"); - - // Close old file, create a new file for the sub(sub)section contents entries - ReopenSectionContentsFile(); - } - - startedSections = TRUE; - subsectionStarted = TRUE; - - char *topicName = FindTopicName(GetNextChunk()); - - if ( !combineSubSections ) - { - SetCurrentOutput(NULL); - ReopenFile(&Subsections, &SubsectionsName); - AddTexRef(topicName, SubsectionsName, SubsectionNameString); - SetCurrentSubsectionName(topicName, SubsectionsName); - SetCurrentOutput(Subsections); - - TexOutput(""); - OutputCurrentSection(); - TexOutput("\n"); - OutputBodyStart(); - - fprintf(Subsections, "", topicName); - AddBrowseButtons(CurrentSectionName, CurrentSectionFile, // Up - lastTopic, lastFileName, // Last topic - topicName, SubsectionsName); // This topic - - SetCurrentOutputs(Sections, Subsections); - fprintf(Sections, "\n", ConvertCase(SubsectionsName), topicName); - - fprintf(Subsections, "\n

    "); - OutputCurrentSection(); - fprintf(Sections, "
    \n"); - fprintf(Subsections, "

    \n"); - - SetCurrentOutput(Subsections); - } - else - { - AddTexRef(topicName, SectionsName, SubsectionNameString); - SetCurrentSubsectionName(topicName, SectionsName); -// if ( subsectionNo != 0 ) - fprintf(Sections, "\n
    \n"); - - // We're putting everything into the section file - fprintf(Sections, "", topicName); - fprintf(Sections, "\n

    "); - OutputCurrentSection(); - fprintf(Sections, "

    \n"); - - SetCurrentOutput(SectionContentsFD); - fprintf(SectionContentsFD, "", topicName); - OutputCurrentSection(); - TexOutput("
    \n"); - - SetCurrentOutput(Sections); - } - // Add this section title to the list of keywords - if (htmlIndex) - { - OutputCurrentSectionToString(wxBuffer); - AddKeyWordForTopic(topicName, wxBuffer, currentFileName); - } - - } - } - break; - } - case ltSUBSUBSECTION: - case ltSUBSUBSECTIONSTAR: - { - if (!start) - { - if (!Subsections && !combineSubSections) - { - OnError("You cannot have a subsubsection before a subsection!"); - } - else - { - if (macroId != ltSUBSUBSECTIONSTAR) - subsubsectionNo ++; - - startedSections = TRUE; - - char *topicName = FindTopicName(GetNextChunk()); - - if ( !combineSubSections ) - { - SetCurrentOutput(NULL); - ReopenFile(&Subsubsections, &SubsubsectionsName); - AddTexRef(topicName, SubsubsectionsName, SubsubsectionNameString); - SetCurrentSubsubsectionName(topicName, SubsubsectionsName); - - SetCurrentOutput(Subsubsections); - TexOutput(""); - OutputCurrentSection(); - TexOutput("\n"); - OutputBodyStart(); - - fprintf(Subsubsections, "", topicName); - - AddBrowseButtons(CurrentSubsectionName, CurrentSubsectionFile, // Up - lastTopic, lastFileName, // Last topic - topicName, SubsubsectionsName); // This topic - - SetCurrentOutputs(Subsections, Subsubsections); - fprintf(Subsections, "\n", ConvertCase(SubsubsectionsName), topicName); - - fprintf(Subsubsections, "\n

    "); - OutputCurrentSection(); - fprintf(Subsections, "
    \n"); - fprintf(Subsubsections, "

    \n"); - } - else - { - AddTexRef(topicName, SectionsName, SubsubsectionNameString); - SetCurrentSubsectionName(topicName, SectionsName); - fprintf(Sections, "\n
    \n"); - - // We're putting everything into the section file - fprintf(Sections, "", topicName); - fprintf(Sections, "\n

    "); - OutputCurrentSection(); - fprintf(Sections, "

    \n"); -/* TODO: where do we put subsubsection contents entry - indented, with subsection entries? - SetCurrentOutput(SectionContentsFD); - fprintf(SectionContentsFD, "", topicName); - OutputCurrentSection(); - TexOutput("
    "); -*/ - SetCurrentOutput(Sections); - } - - // Add this section title to the list of keywords - if (htmlIndex) - { - OutputCurrentSectionToString(wxBuffer); - AddKeyWordForTopic(topicName, wxBuffer, currentFileName); - } - } - } - break; - } - case ltFUNC: - case ltPFUNC: - { - if ( !combineSubSections ) - SetCurrentOutput(Subsections); - else - SetCurrentOutput(Sections); - if (start) - { - } - else - { - } - break; - } - case ltCLIPSFUNC: - { - if ( !combineSubSections ) - SetCurrentOutput(Subsections); - else - SetCurrentOutput(Sections); - if (start) - { - } - else - { - } - break; - } - case ltMEMBER: - { - if ( !combineSubSections ) - SetCurrentOutput(Subsections); - else - SetCurrentOutput(Sections); - if (start) - { - } - else - { - } - break; - } - case ltVOID: -// if (start) -// TexOutput("void"); - break; - case ltHARDY: - if (start) - TexOutput("HARDY"); - break; - case ltWXCLIPS: - if (start) - TexOutput("wxCLIPS"); - break; - case ltAMPERSAND: - if (start) - TexOutput("&"); - break; - case ltSPECIALAMPERSAND: - { - if (start) - { - if (inTabular) - { - // End cell, start cell - TexOutput(""); - - // Start new row and cell, setting alignment for the first cell. - if (currentColumn < noColumns) - currentColumn ++; - - char buf[100]; - if (TableData[currentColumn].justification == 'c') - sprintf(buf, "\n
  • \n"); - } - else - TexOutput("
    \n"); - } - break; - } - case ltROW: - case ltRULEDROW: - { - if (start) - { - currentColumn = 0; - - // Start new row and cell, setting alignment for the first cell. - char buf[100]; - if (TableData[currentColumn].justification == 'c') - sprintf(buf, "
    \n\n\n\n\n\n"); - } - break; - } - // HTML-only: break until the end of the picture (both margins are clear). - case ltBRCLEAR: - { - if (start) - TexOutput("
    "); - break; - } - case ltRTFSP: // Explicit space, RTF only - break; - case ltSPECIALTILDE: - { - if (start) - { - if (inVerbatim) - TexOutput("~"); - else - TexOutput(" "); - } - break; - } - case ltINDENTED : - { - if ( start ) - TexOutput("
        \n"); - else - TexOutput("
    \n"); - break; - } - case ltITEMIZE: - case ltENUMERATE: - case ltDESCRIPTION: -// case ltTWOCOLLIST: - { - if (start) - { - indentLevel ++; - - int listType; - if (macroId == ltENUMERATE) - listType = LATEX_ENUMERATE; - else if (macroId == ltITEMIZE) - listType = LATEX_ITEMIZE; - else - listType = LATEX_DESCRIPTION; - - itemizeStack.Insert(new ItemizeStruc(listType)); - switch (listType) - { - case LATEX_ITEMIZE: - TexOutput("
      \n"); - break; - case LATEX_ENUMERATE: - TexOutput("
        \n"); - break; - case LATEX_DESCRIPTION: - default: - TexOutput("
        \n"); - break; - } - } - else - { - indentLevel --; - if (itemizeStack.First()) - { - ItemizeStruc *struc = (ItemizeStruc *)itemizeStack.First()->Data(); - switch (struc->listType) - { - case LATEX_ITEMIZE: - TexOutput("
    \n"); - break; - case LATEX_ENUMERATE: - TexOutput("\n"); - break; - case LATEX_DESCRIPTION: - default: - TexOutput("\n"); - break; - } - - delete struc; - delete itemizeStack.First(); - } - } - break; - } - case ltTWOCOLLIST : - { - if ( start ) - TexOutput("\n
    "); - else if (TableData[currentColumn].justification == 'r') - sprintf(buf, "\n"); - else if (TableData[currentColumn].absWidth) - { - // Convert from points * 20 into pixels. - int points = TableData[currentColumn].width / 20; - - // Say the display is 100 DPI (dots/pixels per inch). - // There are 72 pts to the inch. So 1pt = 1/72 inch, or 100 * 1/72 dots. - int pixels = (int)(points * 100.0 / 72.0); - sprintf(buf, "", pixels); - } - else - sprintf(buf, "\n"); - TexOutput(buf); - } - else - TexOutput("&"); - } - break; - } - case ltBACKSLASHCHAR: - { - if (start) - { - if (inTabular) - { - // End row. In fact, tables without use of \row or \ruledrow isn't supported for - // HTML: the syntax is too different (e.g. how do we know where to put the first - // if we've ended the last row?). So normally you wouldn't use \\ to end a row. - TexOutput("
    "); - else if (TableData[currentColumn].justification == 'r') - sprintf(buf, "
    "); - else if (TableData[currentColumn].absWidth) - { - // Convert from points * 20 into pixels. - int points = TableData[currentColumn].width / 20; - - // Say the display is 100 DPI (dots/pixels per inch). - // There are 72 pts to the inch. So 1pt = 1/72 inch, or 100 * 1/72 dots. - int pixels = (int)(points * 100.0 / 72.0); - sprintf(buf, "
    ", pixels); - } - else - sprintf(buf, "
    "); - TexOutput(buf); - } - else - { - // End cell and row - // Start new row and cell - TexOutput("
    \n"); - else - TexOutput("\n
    \n"); - break; - } - case ltPAR: - { - if (start) - TexOutput("

    \n"); - break; - } -/* For footnotes we need to output the text at the bottom of the page and - * insert a reference to it. Is it worth the trouble... - case ltFOOTNOTE: - case ltFOOTNOTEPOPUP: - { - if (start) - { - TexOutput("); - } - else TexOutput(""); - break; - } -*/ - case ltVERB: - { - if (start) - TexOutput(""); - else TexOutput(""); - break; - } - case ltVERBATIM: - { - if (start) - { - char buf[100]; - sprintf(buf, "

    \n");
    -      TexOutput(buf);
    -    }
    -    else TexOutput("
    \n"); - break; - } - case ltCENTERLINE: - case ltCENTER: - { - if (start) - { - TexOutput("
    "); - } - else TexOutput("
    "); - break; - } - case ltFLUSHLEFT: - { -/* - if (start) - { - TexOutput("{\\ql "); - } - else TexOutput("}\\par\\pard\n"); -*/ - break; - } - case ltFLUSHRIGHT: - { -/* - if (start) - { - TexOutput("{\\qr "); - } - else TexOutput("}\\par\\pard\n"); -*/ - break; - } - case ltSMALL: - { - if (start) - { - // Netscape extension - TexOutput(""); - } - else TexOutput(""); - break; - } - case ltTINY: - { - if (start) - { - // Netscape extension - TexOutput(""); - } - else TexOutput(""); - break; - } - case ltNORMALSIZE: - { - if (start) - { - // Netscape extension - TexOutput(""); - } - else TexOutput(""); - break; - } - case ltlarge: - { - if (start) - { - // Netscape extension - TexOutput(""); - } - else TexOutput(""); - break; - } - case ltLarge: - { - if (start) - { - // Netscape extension - TexOutput(""); - } - else TexOutput(""); - break; - } - case ltLARGE: - { - if (start) - { - // Netscape extension - TexOutput(""); - } - else TexOutput(""); - break; - } - case ltBFSERIES: - case ltTEXTBF: - case ltBF: - { - if (start) - { - TexOutput(""); - } - else TexOutput(""); - break; - } - case ltITSHAPE: - case ltTEXTIT: - case ltIT: - { - if (start) - { - TexOutput(""); - } - else TexOutput(""); - break; - } - case ltEMPH: - case ltEM: - { - if (start) - { - TexOutput(""); - } - else TexOutput(""); - break; - } - case ltUNDERLINE: - { - if (start) - { - TexOutput("
      "); - } - else TexOutput("
    "); - break; - } - case ltTTFAMILY: - case ltTEXTTT: - case ltTT: - { - if (start) - { - TexOutput(""); - } - else TexOutput(""); - break; - } - case ltCOPYRIGHT: - { - if (start) - TexOutput("©", TRUE); - break; - } - case ltREGISTERED: - { - if (start) - TexOutput("®", TRUE); - break; - } - // Arrows - case ltLEFTARROW: - { - if (start) TexOutput("<--"); - break; - } - case ltLEFTARROW2: - { - if (start) TexOutput("<=="); - break; - } - case ltRIGHTARROW: - { - if (start) TexOutput("-->"); - break; - } - case ltRIGHTARROW2: - { - if (start) TexOutput("==>"); - break; - } - case ltLEFTRIGHTARROW: - { - if (start) TexOutput("<-->"); - break; - } - case ltLEFTRIGHTARROW2: - { - if (start) TexOutput("<==>"); - break; - } -/* - case ltSC: - { - break; - } -*/ - case ltITEM: - { - if (!start) - { - wxNode *node = itemizeStack.First(); - if (node) - { - ItemizeStruc *struc = (ItemizeStruc *)node->Data(); - struc->currentItem += 1; - if (struc->listType == LATEX_DESCRIPTION) - { - if (descriptionItemArg) - { - TexOutput("
    "); - TraverseChildrenFromChunk(descriptionItemArg); - TexOutput("\n"); - descriptionItemArg = NULL; - } - TexOutput("
    "); - } - else - TexOutput("
  • "); - } - } - break; - } - case ltMAKETITLE: - { - if (start && DocumentTitle && DocumentAuthor) - { - // Add a special label for the contents page. -// TexOutput("
    \n"); - TexOutput(""); - TexOutput("

    \n"); - TraverseChildrenFromChunk(DocumentTitle); - TexOutput("

    "); - TexOutput("

    "); - TexOutput("\n"); - TexOutput("

    \n\n"); - TexOutput("

    "); - TraverseChildrenFromChunk(DocumentAuthor); - TexOutput("

    \n\n"); - if (DocumentDate) - { - TexOutput("

    "); - TraverseChildrenFromChunk(DocumentDate); - TexOutput("

    \n\n"); - } -// TexOutput("\n

    \n"); - TexOutput("\n


    \n"); - -/* - // Now do optional frame contents page - if (htmlFrameContents && FrameContents) - { - SetCurrentOutput(FrameContents); - - // Add a special label for the contents page. - TexOutput("

    \n"); - TexOutput("

    \n"); - TraverseChildrenFromChunk(DocumentTitle); - TexOutput("

    "); - TexOutput("

    "); - TexOutput("\n"); - TexOutput("

    \n\n"); - TexOutput("

    "); - TraverseChildrenFromChunk(DocumentAuthor); - TexOutput("

    \n\n"); - if (DocumentDate) - { - TexOutput("

    "); - TraverseChildrenFromChunk(DocumentDate); - TexOutput("

    \n\n"); - } - TexOutput("\n

    \n"); - TexOutput("


    \n"); - - SetCurrentOutput(Titlepage); - } -*/ - } - break; - } - case ltHELPREF: - case ltHELPREFN: - case ltPOPREF: - case ltURLREF: - { - if (start) - { - helpRefFilename = NULL; - helpRefText = NULL; - } - break; - } - case ltBIBLIOGRAPHY: - { - if (start) - { - DefaultOnMacro(macroId, no_args, start); - } - else - { - DefaultOnMacro(macroId, no_args, start); - TexOutput("\n"); - } - break; - } - case ltHRULE: - { - if (start) - { - TexOutput("


    \n"); - } - break; - } - case ltRULE: - { - if (start) - { - TexOutput("
    \n"); - } - break; - } - case ltTABLEOFCONTENTS: - { - if (start) - { - FILE *fd = fopen(ContentsName, "r"); - if (fd) - { - int ch = getc(fd); - while (ch != EOF) - { - putc(ch, Titlepage); - ch = getc(fd); - } - fclose(fd); - } - else - { - TexOutput("RUN TEX2RTF AGAIN FOR CONTENTS PAGE\n"); - OnInform("Run Tex2RTF again to include contents page."); - } - } - break; - } - case ltLANGLEBRA: - { - if (start) - TexOutput("<"); - break; - } - case ltRANGLEBRA: - { - if (start) - TexOutput(">"); - break; - } - case ltQUOTE: - case ltQUOTATION: - { - if (start) - TexOutput("
    "); - else - TexOutput("
    "); - break; - } - case ltCAPTION: - case ltCAPTIONSTAR: - { - if (start) - { - if (inTabular) - TexOutput("\n"); - - char figBuf[40]; - - if ( inFigure ) - { - figureNo ++; - - if (DocumentStyle != LATEX_ARTICLE) - sprintf(figBuf, "%s %d.%d: ", FigureNameString, chapterNo, figureNo); - else - sprintf(figBuf, "%s %d: ", FigureNameString, figureNo); - } - else - { - tableNo ++; - - if (DocumentStyle != LATEX_ARTICLE) - sprintf(figBuf, "%s %d.%d: ", TableNameString, chapterNo, tableNo); - else - sprintf(figBuf, "%s %d: ", TableNameString, tableNo); - } - - TexOutput(figBuf); - } - else - { - if (inTabular) - TexOutput("\n\n"); - - char *topicName = FindTopicName(GetNextChunk()); - - int n = inFigure ? figureNo : tableNo; - - AddTexRef(topicName, NULL, NULL, - ((DocumentStyle != LATEX_ARTICLE) ? chapterNo : n), - ((DocumentStyle != LATEX_ARTICLE) ? n : 0)); - } - break; - } - case ltSS: - { - if (start) TexOutput("ß"); - break; - } - case ltFIGURE: - { - if (start) inFigure = TRUE; - else inFigure = FALSE; - break; - } - case ltTABLE: - { - if (start) inTable = TRUE; - else inTable = FALSE; - break; - } - default: - DefaultOnMacro(macroId, no_args, start); - break; - } -} - -// Called on start/end of argument examination -bool HTMLOnArgument(int macroId, int arg_no, bool start) -{ - switch (macroId) - { - case ltCHAPTER: - case ltCHAPTERSTAR: - case ltCHAPTERHEADING: - case ltSECTION: - case ltSECTIONSTAR: - case ltSECTIONHEADING: - case ltSUBSECTION: - case ltSUBSECTIONSTAR: - case ltSUBSUBSECTION: - case ltSUBSUBSECTIONSTAR: - case ltGLOSS: - case ltMEMBERSECTION: - case ltFUNCTIONSECTION: - { - if (!start && (arg_no == 1)) - currentSection = GetArgChunk(); - return FALSE; - break; - } - case ltFUNC: - { - if (start && (arg_no == 1)) - TexOutput(""); - - if (!start && (arg_no == 1)) - TexOutput(" "); - - if (start && (arg_no == 2)) - { - if (!suppressNameDecoration) TexOutput(""); - currentMember = GetArgChunk(); - } - if (!start && (arg_no == 2)) - { - if (!suppressNameDecoration) TexOutput(""); - } - - if (start && (arg_no == 3)) - TexOutput("("); - if (!start && (arg_no == 3)) - TexOutput(")"); - break; - } - case ltCLIPSFUNC: - { - if (start && (arg_no == 1)) - TexOutput(""); - if (!start && (arg_no == 1)) - TexOutput(" "); - - if (start && (arg_no == 2)) - { - if (!suppressNameDecoration) TexOutput("( "); - currentMember = GetArgChunk(); - } - if (!start && (arg_no == 2)) - { - } - - if (!start && (arg_no == 3)) - TexOutput(")"); - break; - } - case ltPFUNC: - { - if (!start && (arg_no == 1)) - TexOutput(" "); - - if (start && (arg_no == 2)) - TexOutput("(*"); - if (!start && (arg_no == 2)) - TexOutput(")"); - - if (start && (arg_no == 2)) - currentMember = GetArgChunk(); - - if (start && (arg_no == 3)) - TexOutput("("); - if (!start && (arg_no == 3)) - TexOutput(")"); - break; - } - case ltPARAM: - { - if (start && (arg_no == 1)) - TexOutput(""); - if (!start && (arg_no == 1)) - TexOutput(""); - if (start && (arg_no == 2)) - { - TexOutput(""); - } - if (!start && (arg_no == 2)) - { - TexOutput(""); - } - break; - } - case ltCPARAM: - { - if (start && (arg_no == 1)) - TexOutput(""); - if (!start && (arg_no == 1)) - TexOutput(" "); // This is the difference from param - one space! - if (start && (arg_no == 2)) - { - TexOutput(""); - } - if (!start && (arg_no == 2)) - { - TexOutput(""); - } - break; - } - case ltMEMBER: - { - if (!start && (arg_no == 1)) - TexOutput(" "); - - if (start && (arg_no == 2)) - currentMember = GetArgChunk(); - break; - } - case ltREF: - { - if (start) - { - char *sec = NULL; - - char *refName = GetArgData(); - if (refName) - { - TexRef *texRef = FindReference(refName); - if (texRef) - { - sec = texRef->sectionNumber; - } - } - if (sec) - { - TexOutput(sec); - } - return FALSE; - } - break; - } - case ltURLREF: - { - if (IsArgOptional()) - return FALSE; - else if ((GetNoArgs() - arg_no) == 1) - { - if (start) - helpRefText = GetArgChunk(); - return FALSE; - } - else if ((GetNoArgs() - arg_no) == 0) // Arg = 2, or 3 if first is optional - { - if (start) - { - TexChunk *ref = GetArgChunk(); - TexOutput(""); - if (helpRefText) - TraverseChildrenFromChunk(helpRefText); - TexOutput(""); - } - return FALSE; - } - break; - } - case ltHELPREF: - case ltHELPREFN: - case ltPOPREF: - { - if (IsArgOptional()) - { - if (start) - helpRefFilename = GetArgChunk(); - return FALSE; - } - if ((GetNoArgs() - arg_no) == 1) - { - if (start) - helpRefText = GetArgChunk(); - return FALSE; - } - else if ((GetNoArgs() - arg_no) == 0) // Arg = 2, or 3 if first is optional - { - if (start) - { - char *refName = GetArgData(); - char *refFilename = NULL; - - if (refName) - { - TexRef *texRef = FindReference(refName); - if (texRef) - { - if (texRef->refFile && strcmp(texRef->refFile, "??") != 0) - refFilename = texRef->refFile; - - TexOutput(""); - if (helpRefText) - TraverseChildrenFromChunk(helpRefText); - TexOutput(""); - } - else - { - if (helpRefText) - TraverseChildrenFromChunk(helpRefText); - TexOutput(" (REF NOT FOUND)"); - } - } - else TexOutput("??"); - } - return FALSE; - } - break; - } - case ltIMAGE: - case ltIMAGEL: - case ltIMAGER: - case ltPSBOXTO: - { - if (arg_no == 2) - { - if (start) - { - char *alignment = ""; - if (macroId == ltIMAGEL) - alignment = " align=left"; - else if (macroId == ltIMAGER) - alignment = " align=right"; - - // Try to find an XBM or GIF image first. - char *filename = copystring(GetArgData()); - char buf[500]; - - strcpy(buf, filename); - StripExtension(buf); - strcat(buf, ".xbm"); - wxString f = TexPathList.FindValidPath(buf); - - if (f == "") // Try for a GIF instead - { - strcpy(buf, filename); - StripExtension(buf); - strcat(buf, ".gif"); - f = TexPathList.FindValidPath(buf); - } - if (f != "") - { - char *inlineFilename = copystring(f); -#if 0 - char *originalFilename = TexPathList.FindValidPath(filename); - // If we have found the existing filename, make the inline - // image point to the original file (could be PS, for example) - if (originalFilename && (strcmp(inlineFilename, originalFilename) != 0)) - { - TexOutput(""); - TexOutput(""); - } - else -#endif - { - TexOutput(""); - delete[] inlineFilename; - } - } - else - { - // Last resort - a link to a PS file. - TexOutput("Picture\n"); - sprintf(buf, "Warning: could not find an inline XBM/GIF for %s.", filename); - OnInform(buf); - } - } - } - return FALSE; - break; - } - // First arg is PSBOX spec (ignored), second is image file, third is map name. - case ltIMAGEMAP: - { - static char *imageFile = NULL; - if (start && (arg_no == 2)) - { - // Try to find an XBM or GIF image first. - char *filename = copystring(GetArgData()); - char buf[500]; - - strcpy(buf, filename); - StripExtension(buf); - strcat(buf, ".xbm"); - wxString f = TexPathList.FindValidPath(buf); - - if (f == "") // Try for a GIF instead - { - strcpy(buf, filename); - StripExtension(buf); - strcat(buf, ".gif"); - f = TexPathList.FindValidPath(buf); - } - if (f == "") - { - char buf[300]; - sprintf(buf, "Warning: could not find an inline XBM/GIF for %s.", filename); - OnInform(buf); - } - delete[] filename; - if (imageFile) - delete[] imageFile; - imageFile = NULL; - if (f) - { - imageFile = copystring(f); - } - } - else if (start && (arg_no == 3)) - { - if (imageFile) - { - // First, try to find a .shg (segmented hypergraphics file) - // that we can convert to a map file - char buf[256]; - strcpy(buf, imageFile); - StripExtension(buf); - strcat(buf, ".shg"); - wxString f = TexPathList.FindValidPath(buf); - - if (f != "") - { - // The default HTML file to go to is THIS file (so a no-op) - SHGToMap((char*) (const char*) f, currentFileName); - } - - char *mapName = GetArgData(); - TexOutput(""); - TexOutput("

    "); - delete[] imageFile; - imageFile = NULL; - } - } - return FALSE; - break; - } - case ltINDENTED : - { - if ( arg_no == 1 ) - return FALSE; - else - { - return TRUE; - } - } - case ltITEM: - { - if (start) - { - descriptionItemArg = GetArgChunk(); - return FALSE; - } - } - case ltTWOCOLITEM: - case ltTWOCOLITEMRULED: - { -/* - if (start && (arg_no == 1)) - TexOutput("\n

    "); - if (start && (arg_no == 2)) - TexOutput("
    "); -*/ - if (arg_no == 1) - { - if ( start ) - TexOutput("\n\n"); - else - TexOutput("\n\n"); - } - if (arg_no == 2) - { - if ( start ) - TexOutput("\n\n"); - else - TexOutput("\n\n"); - } - return TRUE; - break; - } - case ltNUMBEREDBIBITEM: - { - if (arg_no == 1 && start) - { - TexOutput("\n
    "); - } - if (arg_no == 2 && !start) - TexOutput("

    \n"); - break; - } - case ltBIBITEM: - { - char buf[100]; - if (arg_no == 1 && start) - { - char *citeKey = GetArgData(); - TexRef *ref = (TexRef *)TexReferences.Get(citeKey); - if (ref) - { - if (ref->sectionNumber) delete[] ref->sectionNumber; - sprintf(buf, "[%d]", citeCount); - ref->sectionNumber = copystring(buf); - } - - sprintf(buf, "\n

    [%d] ", citeCount); - TexOutput(buf); - citeCount ++; - return FALSE; - } - if (arg_no == 2 && !start) - TexOutput("

    \n"); - return TRUE; - break; - } - case ltMARGINPAR: - case ltMARGINPARODD: - case ltMARGINPAREVEN: - case ltNORMALBOX: - case ltNORMALBOXD: - { - if (start) - { - TexOutput("


    \n"); - return TRUE; - } - else - TexOutput("

    \n"); - break; - } - /* - * Accents - * - */ - case ltACCENT_GRAVE: - { - if (start) - { - char *val = GetArgData(); - if (val) - { - switch (val[0]) - { - case 'a': - TexOutput("à"); - break; - case 'e': - TexOutput("è"); - break; - case 'i': - TexOutput("ì"); - break; - case 'o': - TexOutput("ò"); - break; - case 'u': - TexOutput("ù"); - break; - case 'A': - TexOutput("À"); - break; - case 'E': - TexOutput("È"); - break; - case 'I': - TexOutput("Ì"); - break; - case 'O': - TexOutput("Ò"); - break; - case 'U': - TexOutput("Ì"); - break; - default: - break; - } - } - } - return FALSE; - break; - } - case ltACCENT_ACUTE: - { - if (start) - { - char *val = GetArgData(); - if (val) - { - switch (val[0]) - { - case 'a': - TexOutput("á"); - break; - case 'e': - TexOutput("é"); - break; - case 'i': - TexOutput("í"); - break; - case 'o': - TexOutput("ó"); - break; - case 'u': - TexOutput("ú"); - break; - case 'y': - TexOutput("ý"); - break; - case 'A': - TexOutput("Á"); - break; - case 'E': - TexOutput("É"); - break; - case 'I': - TexOutput("Í"); - break; - case 'O': - TexOutput("Ó"); - break; - case 'U': - TexOutput("Ú"); - break; - case 'Y': - TexOutput("Ý"); - break; - default: - break; - } - } - } - return FALSE; - break; - } - case ltACCENT_CARET: - { - if (start) - { - char *val = GetArgData(); - if (val) - { - switch (val[0]) - { - case 'a': - TexOutput("â"); - break; - case 'e': - TexOutput("ê"); - break; - case 'i': - TexOutput("î"); - break; - case 'o': - TexOutput("ô"); - break; - case 'u': - TexOutput("û"); - break; - case 'A': - TexOutput("Â"); - break; - case 'E': - TexOutput("Ê"); - break; - case 'I': - TexOutput("Î"); - break; - case 'O': - TexOutput("Ô"); - break; - case 'U': - TexOutput("Î"); - break; - default: - break; - } - } - } - return FALSE; - break; - } - case ltACCENT_TILDE: - { - if (start) - { - char *val = GetArgData(); - if (val) - { - switch (val[0]) - { - case ' ': - TexOutput("~"); - break; - case 'a': - TexOutput("ã"); - break; - case 'n': - TexOutput("ñ"); - break; - case 'o': - TexOutput("õ"); - break; - case 'A': - TexOutput("Ã"); - break; - case 'N': - TexOutput("Ñ"); - break; - case 'O': - TexOutput("Õ"); - break; - default: - break; - } - } - } - return FALSE; - break; - } - case ltACCENT_UMLAUT: - { - if (start) - { - char *val = GetArgData(); - if (val) - { - switch (val[0]) - { - case 'a': - TexOutput("ä"); - break; - case 'e': - TexOutput("ë"); - break; - case 'i': - TexOutput("ï"); - break; - case 'o': - TexOutput("ö"); - break; - case 'u': - TexOutput("ü"); - break; - case 'y': - TexOutput("ÿ"); - break; - case 'A': - TexOutput("Ä"); - break; - case 'E': - TexOutput("Ë"); - break; - case 'I': - TexOutput("Ï"); - break; - case 'O': - TexOutput("Ö"); - break; - case 'U': - TexOutput("Ü"); - break; - case 'Y': - TexOutput("Ÿ"); - break; - default: - break; - } - } - } - return FALSE; - break; - } - case ltACCENT_DOT: - { - if (start) - { - char *val = GetArgData(); - if (val) - { - switch (val[0]) - { - case 'a': - TexOutput("å"); - break; - case 'A': - TexOutput("Å"); - break; - default: - break; - } - } - } - return FALSE; - break; - } - case ltBACKGROUND: - { - if (start) - { - char *val = GetArgData(); - if (val) - { - bool isPicture = FALSE; - char *s = ParseColourString(val, &isPicture); - if (isPicture) - { - if (backgroundImageString) - delete[] backgroundImageString; - backgroundImageString = copystring(val); - } - else - { - if (backgroundColourString) - delete[] backgroundColourString; - backgroundColourString = copystring(val); - } - } - } - return FALSE; - break; - } - case ltBACKGROUNDIMAGE: - { - if (start) - { - char *val = GetArgData(); - if (val) - { - if (backgroundImageString) - delete[] backgroundImageString; - backgroundImageString = copystring(val); - } - } - return FALSE; - break; - } - case ltBACKGROUNDCOLOUR: - { - if (start) - { - char *val = GetArgData(); - if (val) - { - if (backgroundColourString) - delete[] backgroundColourString; - backgroundColourString = copystring(val); - } - } - return FALSE; - break; - } - case ltTEXTCOLOUR: - { - if (start) - { - char *val = GetArgData(); - if (val) - { - if (textColourString) - delete[] textColourString; - textColourString = copystring(val); - } - } - return FALSE; - break; - } - case ltLINKCOLOUR: - { - if (start) - { - char *val = GetArgData(); - if (val) - { - if (linkColourString) - delete[] linkColourString; - linkColourString = copystring(val); - } - } - return FALSE; - break; - } - case ltFOLLOWEDLINKCOLOUR: - { - if (start) - { - char *val = GetArgData(); - if (val) - { - if (followedLinkColourString) - delete[] followedLinkColourString; - followedLinkColourString = copystring(val); - } - } - return FALSE; - break; - } - case ltACCENT_CADILLA: - { - if (start) - { - char *val = GetArgData(); - if (val) - { - switch (val[0]) - { - case 'c': - TexOutput("ç"); - break; - case 'C': - TexOutput("Ç"); - break; - default: - break; - } - } - } - return FALSE; - break; - } -/* - case ltFOOTNOTE: - case ltFOOTNOTEPOPUP: - { - if (arg_no == 1) - return TRUE; - else - return FALSE; - break; - } -*/ - case ltTABULAR: - case ltSUPERTABULAR: - { - if (arg_no == 1) - { - if (start) - { - currentRowNumber = 0; - inTabular = TRUE; - startRows = TRUE; - tableVerticalLineLeft = FALSE; - tableVerticalLineRight = FALSE; - int currentWidth = 0; - - char *alignString = copystring(GetArgData()); - ParseTableArgument(alignString); - - TexOutput("\n"); - - // Write the first row formatting for compatibility - // with standard Latex - if (compatibilityMode) - { - TexOutput("\n
    "); -/* - for (int i = 0; i < noColumns; i++) - { - currentWidth += TableData[i].width; - sprintf(buf, "\\cellx%d", currentWidth); - TexOutput(buf); - } - TexOutput("\\pard\\intbl\n"); -*/ - } - delete[] alignString; - - return FALSE; - } - } - else if (arg_no == 2 && !start) - { - TexOutput("
    \n"); - inTabular = FALSE; - } - break; - } - case ltTHEBIBLIOGRAPHY: - { - if (start && (arg_no == 1)) - { - ReopenFile(&Chapters, &ChaptersName); - AddTexRef("bibliography", ChaptersName, "bibliography"); - SetCurrentSubsectionName("bibliography", ChaptersName); - - citeCount = 1; - - SetCurrentOutput(Chapters); - - char titleBuf[150]; - if (truncateFilenames) - sprintf(titleBuf, "%s.htm", FileNameFromPath(FileRoot)); - else - sprintf(titleBuf, "%s_contents.html", FileNameFromPath(FileRoot)); - - TexOutput(""); - TexOutput(ReferencesNameString); - TexOutput("\n"); - OutputBodyStart(); - - fprintf(Chapters, "\n

    %s", "bibliography", ReferencesNameString); - AddBrowseButtons("contents", titleBuf, // Up - lastTopic, lastFileName, // Last topic - "bibliography", ChaptersName); // This topic - - SetCurrentOutputs(Contents, Chapters); - fprintf(Contents, "\n
  • ", ConvertCase(ChaptersName), "bibliography"); - - fprintf(Contents, "%s\n", ReferencesNameString); - fprintf(Chapters, "
  • \n\n"); - - SetCurrentOutput(Chapters); - return FALSE; - } - if (!start && (arg_no == 2)) - { - } - return TRUE; - break; - } - case ltINDEX: - { - /* Build up list of keywords associated with topics */ - if (start) - { -// char *entry = GetArgData(); - char buf[300]; - OutputChunkToString(GetArgChunk(), buf); - if (CurrentTopic) - { - AddKeyWordForTopic(CurrentTopic, buf, currentFileName); - } - } - return FALSE; - break; - } - case ltFCOL: -// case ltBCOL: - { - if (start) - { - switch (arg_no) - { - case 1: - { - char *name = GetArgData(); - char buf2[10]; - if (!FindColourHTMLString(name, buf2)) - { - strcpy(buf2, "#000000"); - char buf[100]; - sprintf(buf, "Could not find colour name %s", name); - OnError(buf); - } - TexOutput(""); - break; - } - case 2: - { - return TRUE; - break; - } - default: - break; - } - } - else - { - if (arg_no == 2) TexOutput(""); - } - return FALSE; - break; - } - case ltINSERTATLEVEL: - { - // This macro allows you to insert text at a different level - // from the current level, e.g. into the Sections from within a subsubsection. - if (useWord) - return FALSE; - static int currentLevelNo = 1; - static FILE* oldLevelFile = Chapters; - if (start) - { - switch (arg_no) - { - case 1: - { - oldLevelFile = CurrentOutput1; - - char *str = GetArgData(); - currentLevelNo = atoi(str); - FILE* outputFile; - // TODO: cope with article style (no chapters) - switch (currentLevelNo) - { - case 1: - { - outputFile = Chapters; - break; - } - case 2: - { - outputFile = Sections; - break; - } - case 3: - { - outputFile = Subsections; - break; - } - case 4: - { - outputFile = Subsubsections; - break; - } - default: - { - outputFile = NULL; - break; - } - } - if (outputFile) - CurrentOutput1 = outputFile; - return FALSE; - break; - } - case 2: - { - return TRUE; - break; - } - default: - break; - } - return TRUE; - } - else - { - if (arg_no == 2) - { - CurrentOutput1 = oldLevelFile; - } - return TRUE; - } - } - default: - return DefaultOnArgument(macroId, arg_no, start); - break; - } - return TRUE; -} - -bool HTMLGo(void) -{ - fileId = 0; - inVerbatim = FALSE; - indentLevel = 0; - inTabular = FALSE; - startRows = FALSE; - tableVerticalLineLeft = FALSE; - tableVerticalLineRight = FALSE; - noColumns = 0; - - if (InputFile && OutputFile) - { - // Do some HTML-specific transformations on all the strings, - // recursively - Text2HTML(GetTopLevelChunk()); - - char buf[300]; - if (truncateFilenames) - sprintf(buf, "%s.htm", FileRoot); - else - sprintf(buf, "%s_contents.html", FileRoot); - if (TitlepageName) delete[] TitlepageName; - TitlepageName = copystring(buf); - Titlepage = fopen(buf, "w"); - - if (truncateFilenames) - sprintf(buf, "%s_fc.htm", FileRoot); - else - sprintf(buf, "%s_fcontents.html", FileRoot); - - contentsFrameName = copystring(buf); - - Contents = fopen(TmpContentsName, "w"); - - if (htmlFrameContents) - { -// FrameContents = fopen(TmpFrameContentsName, "w"); - FrameContents = fopen(contentsFrameName, "w"); - fprintf(FrameContents, "\n
      \n"); - } - - if (!Titlepage || !Contents) - { - OnError("Cannot open output file!"); - return FALSE; - } - AddTexRef("contents", FileNameFromPath(TitlepageName), ContentsNameString); - - fprintf(Contents, "

      %s

      \n", ContentsNameString); - - fprintf(Contents, "

        \n"); - - SetCurrentOutput(Titlepage); - OnInform("Converting..."); - - TraverseDocument(); - fprintf(Contents, "
      \n\n"); - -// SetCurrentOutput(Titlepage); - fclose(Titlepage); - - if (Contents) - { -// fprintf(Titlepage, "\n\n"); - fclose(Contents); - Contents = NULL; - } - - if (FrameContents) - { - fprintf(FrameContents, "\n
    \n"); - fprintf(FrameContents, "\n"); - fclose(FrameContents); - FrameContents = NULL; - } - - if (Chapters) - { - fprintf(Chapters, "\n\n"); - fclose(Chapters); - Chapters = NULL; - } - if (Sections) - { - fprintf(Sections, "\n\n"); - fclose(Sections); - Sections = NULL; - } - if (Subsections && !combineSubSections) - { - fprintf(Subsections, "\n\n"); - fclose(Subsections); - Subsections = NULL; - } - if (Subsubsections && !combineSubSections) - { - fprintf(Subsubsections, "\n\n"); - fclose(Subsubsections); - Subsubsections = NULL; - } - if ( SectionContentsFD ) - { - fclose(SectionContentsFD); - SectionContentsFD = NULL; - } - - // Create a temporary file for the title page header, add some info, - // and concat the titlepage just generated. - // This is necessary in order to put the title of the document - // at the TOP of the file within , even though we only find out - // what it is later on. - FILE *tmpTitle = fopen("title.tmp", "w"); - if (tmpTitle) - { - if (DocumentTitle) - { - SetCurrentOutput(tmpTitle); - TexOutput("\n\n"); - TraverseChildrenFromChunk(DocumentTitle); - TexOutput("\n"); - } - else - { - SetCurrentOutput(tmpTitle); - if (contentsString) - fprintf(tmpTitle, "%s\n\n", contentsString); - else - fprintf(tmpTitle, "%s\n\n", FileNameFromPath(FileRoot)); - } - - // Output frame information - if (htmlFrameContents) - { - char firstFileName[300]; - if (truncateFilenames) - sprintf(firstFileName, "%s1.htm", FileRoot); - else - sprintf(firstFileName, "%s1.html", FileRoot); - - fprintf(tmpTitle, "\n"); - - fprintf(tmpTitle, "\n", ConvertCase(FileNameFromPath(contentsFrameName))); - fprintf(tmpTitle, "\n", ConvertCase(FileNameFromPath(firstFileName))); - fprintf(tmpTitle, "\n"); - - fprintf(tmpTitle, "\n"); - } - - // Output <BODY...> to temporary title page - OutputBodyStart(); - - // Concat titlepage - FILE *fd = fopen(TitlepageName, "r"); - if (fd) - { - int ch = getc(fd); - while (ch != EOF) - { - putc(ch, tmpTitle); - ch = getc(fd); - } - fclose(fd); - } - - fprintf(tmpTitle, "\n</BODY>\n"); - - if (htmlFrameContents) - { - fprintf(tmpTitle, "\n\n"); - } - fprintf(tmpTitle, "\n\n"); - - fclose(tmpTitle); - if (FileExists(TitlepageName)) wxRemoveFile(TitlepageName); - if (!wxRenameFile("title.tmp", TitlepageName)) - { - wxCopyFile("title.tmp", TitlepageName); - wxRemoveFile("title.tmp"); - } - } - - if (lastFileName) delete[] lastFileName; - lastFileName = NULL; - if (lastTopic) delete[] lastTopic; - lastTopic = NULL; - - if (FileExists(ContentsName)) wxRemoveFile(ContentsName); - - if (!wxRenameFile(TmpContentsName, ContentsName)) - { - wxCopyFile(TmpContentsName, ContentsName); - wxRemoveFile(TmpContentsName); - } - - // Generate .htx file if requested - if (htmlIndex) - { - char htmlIndexName[300]; - sprintf(htmlIndexName, "%s.htx", FileRoot); - GenerateHTMLIndexFile(htmlIndexName); - } - - return TRUE; - } - return FALSE; -} - -// Output .htx index file -void GenerateHTMLIndexFile(char *fname) -{ - FILE *fd = fopen(fname, "w"); - if (!fd) - return; - - TopicTable.BeginFind(); - wxNode *node = NULL; - while ((node = TopicTable.Next())) - { - TexTopic *texTopic = (TexTopic *)node->Data(); - const char *topicName = node->GetKeyString(); - if (texTopic->filename && texTopic->keywords) - { - wxNode *node1 = texTopic->keywords->First(); - while (node1) - { - char *s = (char *)node1->Data(); - fprintf(fd, "%s|%s|%s\n", topicName, texTopic->filename, s); - node1 = node1->Next(); - } - } - } - fclose(fd); -} diff --git a/utils/tex2rtf/src/makefile.b32 b/utils/tex2rtf/src/makefile.b32 deleted file mode 100644 index 8c12e4179d..0000000000 --- a/utils/tex2rtf/src/makefile.b32 +++ /dev/null @@ -1,20 +0,0 @@ -# -# File: makefile.b32 -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: -# -# "%W% %G%" -# -# Makefile : Builds tex2rtf - -# WXWIN and BCCDIR are set by parent make - -WXDIR = $(WXWIN) - -TARGET=tex2rtf -OBJECTS = tex2rtf.obj tex2any.obj texutils.obj rtfutils.obj xlputils.obj htmlutil.obj readshg.obj table.obj - -!include $(WXDIR)\src\makeprog.b32 - diff --git a/utils/tex2rtf/src/makefile.bcc b/utils/tex2rtf/src/makefile.bcc deleted file mode 100644 index c2dc7a474a..0000000000 --- a/utils/tex2rtf/src/makefile.bcc +++ /dev/null @@ -1,19 +0,0 @@ -# -# File: makefile.bcc -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Builds a BC++ 16-bit sample - -!if "$(WXWIN)" == "" -!error You must define the WXWIN variable in autoexec.bat, e.g. WXWIN=c:\wx -!endif - -WXDIR = $(WXWIN) - -TARGET=tex2rtf -OBJECTS = tex2rtf.obj tex2any.obj texutils.obj rtfutils.obj xlputils.obj htmlutil.obj readshg.obj table.obj - -!include $(WXDIR)\src\makeprog.bcc - diff --git a/utils/tex2rtf/src/makefile.dos b/utils/tex2rtf/src/makefile.dos deleted file mode 100644 index 3cf9947f1a..0000000000 --- a/utils/tex2rtf/src/makefile.dos +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.dos -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Makefile : Builds 16-bit sample, VC++ 1.5 -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -WXDIR = $(WXWIN) - -TARGET=tex2rtf -OBJECTS = tex2rtf.obj tex2any.obj texutils.obj rtfutils.obj xlputils.obj htmlutil.obj readshg.obj table.obj - -!include $(WXDIR)\src\makeprog.msc - diff --git a/utils/tex2rtf/src/makefile.g95 b/utils/tex2rtf/src/makefile.g95 deleted file mode 100644 index d5a033d7c4..0000000000 --- a/utils/tex2rtf/src/makefile.g95 +++ /dev/null @@ -1,61 +0,0 @@ -# -# File: makefile.g95 -# Author: Julian Smart -# Created: 1996 -# Updated: -# -# "%W% %G%" -# -# Makefile for Tex2RTF (GNU-WIN32) - -WXDIR = ../../.. - -# All common UNIX compiler flags and options are now in -# this central makefile. -include $(WXDIR)/src/makeg95.env - -OBJECTS = $(OBJDIR)/tex2rtf.$(OBJSUFF) $(OBJDIR)/texutils.$(OBJSUFF) $(OBJDIR)/tex2any.$(OBJSUFF)\ - $(OBJDIR)/htmlutil.$(OBJSUFF) $(OBJDIR)/rtfutils.$(OBJSUFF) $(OBJDIR)/xlputils.$(OBJSUFF)\ - $(OBJDIR)/table.$(OBJSUFF) $(OBJDIR)/readshg.$(OBJSUFF)\ - $(OBJDIR)/tex2rtf_resources.$(OBJSUFF) - -all: $(OBJDIR) tex2rtf$(GUISUFFIX)$(EXESUFF) - -INC = $(COMPPATHS) -I$(WXDIR)/include/msw -I$(WXDIR)/include/base -I../../wxhelp/src -CPPFLAGS = $(XINCLUDE) $(INC) $(OPTIONS) $(GUI) -DDEBUG='$(DEBUG)' $(DEBUGFLAGS) $(WARN) $(OPT) - -$(OBJDIR): - mkdir $(OBJDIR) - -tex2rtf$(GUISUFFIX)$(EXESUFF): $(OBJECTS) $(WXLIB) - $(CC) $(LDFLAGS) -o tex2rtf$(GUISUFFIX)$(EXESUFF) $(OBJECTS) $(LDLIBS) - -$(OBJDIR)/tex2rtf.$(OBJSUFF): tex2rtf.$(SRCSUFF) tex2rtf.h tex2any.h - $(CC) -c $(CPPFLAGS) -o $@ tex2rtf.$(SRCSUFF) - -$(OBJDIR)/texutils.$(OBJSUFF): texutils.$(SRCSUFF) tex2rtf.h tex2any.h - $(CC) -c $(CPPFLAGS) -o $@ texutils.$(SRCSUFF) - -$(OBJDIR)/tex2any.$(OBJSUFF): tex2any.$(SRCSUFF) tex2any.h - $(CC) -c $(CPPFLAGS) -o $@ tex2any.$(SRCSUFF) - -$(OBJDIR)/htmlutil.$(OBJSUFF): htmlutil.$(SRCSUFF) tex2any.h - $(CC) -c $(CPPFLAGS) -o $@ htmlutil.$(SRCSUFF) - -$(OBJDIR)/rtfutils.$(OBJSUFF): rtfutils.$(SRCSUFF) tex2any.h - $(CC) -c $(CPPFLAGS) -o $@ rtfutils.$(SRCSUFF) - -$(OBJDIR)/xlputils.$(OBJSUFF): xlputils.$(SRCSUFF) tex2any.h - $(CC) -c $(CPPFLAGS) -o $@ xlputils.$(SRCSUFF) - -$(OBJDIR)/table.$(OBJSUFF): table.$(SRCSUFF) tex2any.h - $(CC) -c $(CPPFLAGS) -o $@ table.$(SRCSUFF) - -$(OBJDIR)/readshg.$(OBJSUFF): readshg.$(SRCSUFF) readshg.h - $(CC) -c $(CPPFLAGS) -o $@ readshg.$(SRCSUFF) - -$(OBJDIR)/tex2rtf_resources.o: tex2rtf.rc - $(RESCOMP) -i tex2rtf.rc -o $(OBJDIR)/tex2rtf_resources.o $(RESFLAGS) - -clean: - rm -f $(OBJECTS) tex2rtf$(GUISUFFIX).exe core *.rsc *.res diff --git a/utils/tex2rtf/src/makefile.unx b/utils/tex2rtf/src/makefile.unx deleted file mode 100644 index 082f482dfe..0000000000 --- a/utils/tex2rtf/src/makefile.unx +++ /dev/null @@ -1,17 +0,0 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1998 -# Updated: -# Copyright: (c) 1998 Julian Smart -# -# "%W% %G%" -# -# Makefile for Tex2RTF (Unix) - -PROGRAM=tex2rtf - -OBJECTS = tex2rtf.o tex2any.o texutils.o rtfutils.o xlputils.o htmlutil.o readshg.o table.o - -include ../../../src/makeprog.env - diff --git a/utils/tex2rtf/src/makefile.vc b/utils/tex2rtf/src/makefile.vc deleted file mode 100644 index fb16a0e098..0000000000 --- a/utils/tex2rtf/src/makefile.vc +++ /dev/null @@ -1,141 +0,0 @@ -# -# File: makefile.nt -# Author: Julian Smart -# Created: 1993 -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile : Builds Tex2RTF on Windows Windows 95/NT -# -!include <..\..\..\src\makevc.env> - -TEX2RTFDIR = $(WXDIR)\utils\tex2rtf -TEX2RTFINC = $(TEX2RTFDIR)\src -PROGRAM=tex2rtf -DOCDIR=$(WXDIR)\docs -LOCALDOCDIR=$(WXDIR)\utils\tex2rtf\docs -THISDIR=$(TEX2RTFDIR)\src - -OBJECTS = tex2rtf.obj tex2any.obj texutils.obj rtfutils.obj xlputils.obj htmlutil.obj readshg.obj table.obj - -all: tex2rtf.exe - -wx: - cd $(WXDIR)\src\msw - nmake -f makefile.vc - cd $(TEX2RTFDIR)\src - -$(PROGRAM).exe: $(WXLIB) $(OBJECTS) $(PROGRAM).res - $(link) @<< --out:$(PROGRAM).exe -$(LINKFLAGS) -$(DUMMYOBJ) $(OBJECTS) $(PROGRAM).res -$(LIBS) -<< - -$(PROGRAM).res : $(PROGRAM).rc $(WXDIR)\include\wx\msw\wx.rc - $(rc) -r /i$(WXDIR)\include -fo$@ $(PROGRAM).rc - -tex2any.obj: tex2any.$(SRCSUFF) tex2any.h - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -texutils.obj: texutils.$(SRCSUFF) tex2any.h - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -tex2rtf.obj: tex2rtf.$(SRCSUFF) bmputils.h tex2rtf.h tex2any.h - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -rtfutils.obj: rtfutils.$(SRCSUFF) tex2rtf.h bmputils.h tex2any.h readshg.h table.h - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -table.obj: table.$(SRCSUFF) table.h - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -readshg.obj: readshg.$(SRCSUFF) readshg.h - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -xlputils.obj: xlputils.$(SRCSUFF) tex2rtf.h rtfutils.h tex2any.h - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -htmlutil.obj: htmlutil.$(SRCSUFF) tex2rtf.h tex2any.h table.h - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -clean: - -erase *.obj - -erase *.sbr - -erase *.exe - -erase *.res - -erase *.map - -erase *.pdb - -cleanall: - erase *.exe *.obj *.pch *.res - -DOCSOURCES=$(LOCALDOCDIR)\tex2rtf.tex - -html: $(DOCDIR)\html\tex2rtf\t2rtf.htm -hlp: $(DOCDIR)\winhelp\tex2rtf.hlp -pdfrtf: $(DOCDIR)\pdf\tex2rtf.rtf -ps: $(WXDIR)\docs\ps\tex2rtf.ps - -$(DOCDIR)\winhelp\tex2rtf.hlp: $(LOCALDOCDIR)\tex2rtf.rtf $(LOCALDOCDIR)\tex2rtf.hpj - cd $(LOCALDOCDIR) - -erase tex2rtf.ph - hc tex2rtf - copy tex2rtf.hlp $(DOCDIR)\winhelp\tex2rtf.hlp - copy tex2rtf.cnt $(DOCDIR)\winhelp\tex2rtf.cnt - cd $(THISDIR) - -$(LOCALDOCDIR)\tex2rtf.rtf: $(DOCSOURCES) - cd $(LOCALDOCDIR) - -start /w tex2rtf $(LOCALDOCDIR)\tex2rtf.tex $(LOCALDOCDIR)\tex2rtf.rtf -twice -winhelp - cd $(THISDIR) - -$(DOCDIR)\pdf\tex2rtf.rtf: $(DOCSOURCES) - cd $(LOCALDOCDIR) - -copy *.bmp *.wmf $(DOCDIR)\pdf - -start /w tex2rtf $(LOCALDOCDIR)\tex2rtf.tex $(DOCDIR)\pdf\tex2rtf.rtf -twice -rtf - cd $(THISDIR) - -$(DOCDIR)\html\tex2rtf\t2rtf.htm: $(DOCSOURCES) - cd $(LOCALDOCDIR) - -mkdir $(DOCDIR)\html\tex2rtf - -start /w tex2rtf $(LOCALDOCDIR)\tex2rtf.tex $(DOCDIR)\html\tex2rtf\t2rtf.htm -twice -html - -erase $(DOCDIR)\html\tex2rtf\*.con - -erase $(DOCDIR)\html\tex2rtf\*.ref - cd $(THISDIR) - -$(LOCALDOCDIR)\tex2rtf.dvi: $(DOCSOURCES) - cd $(LOCALDOCDIR) - -latex tex2rtf - -latex tex2rtf - -makeindx tex2rtf - -bibtex tex2rtf - -latex tex2rtf - -latex tex2rtf - cd $(THISDIR) - -$(WXDIR)\docs\ps\tex2rtf.ps: $(LOCALDOCDIR)\tex2rtf.dvi - cd $(LOCALDOCDIR) - -dvips32 -o tex2rtf.ps tex2rtf - copy tex2rtf.ps $(WXDIR)\docs\ps\tex2rtf.ps - cd $(THISDIR) - - diff --git a/utils/tex2rtf/src/makefile.wat b/utils/tex2rtf/src/makefile.wat deleted file mode 100644 index 053db94965..0000000000 --- a/utils/tex2rtf/src/makefile.wat +++ /dev/null @@ -1,14 +0,0 @@ -# -# Makefile for WATCOM -# -# 8 Nov 1994 -# - -WXDIR = $(%WXWIN) - -PROGRAM = tex2rtf -OBJECTS = tex2rtf.obj tex2any.obj texutils.obj rtfutils.obj xlputils.obj htmlutil.obj readshg.obj table.obj - -!include $(WXDIR)\src\makeprog.wat - - diff --git a/utils/tex2rtf/src/makengui.nt b/utils/tex2rtf/src/makengui.nt deleted file mode 100644 index a4de8c23ca..0000000000 --- a/utils/tex2rtf/src/makengui.nt +++ /dev/null @@ -1,98 +0,0 @@ -# From: Juan Altmayer Pizzorno[SMTP:juan@vms.gmd.de] -# Sent: 31 May 1996 10:11 -# To: J.Smart@ed.ac.uk -# Subject: Changes to Tex2RTF -# -# Hello, -# -# Recently I've been looking for a way to create and maintain documentation on -# multiple platforms out of a single source -- specifically, something that -# prints nicely and can be converted to WinHelp and HTML. I liked the approach -# of Tex2RTF, so I set off to give it a try... I found out it would crash -# when submitted to a certain LaTeX file I created. I wanted to find out why, -# so I went on and worked on compiling on my PC: Windows NT 4.0 beta, Visual -# C++ 4.1a. Since all I was interested on was the convertion utility, I tried -# to make it work without a GUI. It didn't compile immediately, but after a -# few small changes it now works like a charm. Unfortunately it doesn't crash -# anymore, so I can't tell why it used to... Anyway, I wanted to contribute -# the changes back: I'm appending two files to this message, the first a -# description of the changes, and the second a quick-and-dirty makefile that -# doesn't require wxWindows to run. Please do write to me if you have any -# questions or anything. -# -# Last but not least, it's great that you took the time and wrote Tex2RTF!! -# -# Quick-and-dirty makefile for building Tex2RTF without the wx -# libraries on a Windows NT machine. If you want to use it for -# "real", please update the dependancies between object and include -# files. Created for Windows NT 4.0 and Visual C++ 4.1. -# -# Juan Altmayer Pizzorno, May 1996 -# - -syslibs=kernel32.lib advapi32.lib - -cxxflags=/nologo /MD /W0 /O2 /Zi /D "WIN32" /D "_WIN32" /D "_DEBUG" /c -linkflags=$(syslibs) /out:$@ /nologo /debug - -!if "$(PROCESSOR_ARCHITECTURE)" == "x86" -cxxflags=$(cxxflags) /G5 # optimize for pentium -!endif - -cxx=cl -link=link -remove=del -cxxflags=$(cxxflags) /I wxwin /D wx_msw /D WINVER=0x0400 /D WIN95=0 -cxxflags=$(cxxflags) /D "NO_GUI" - -objects=tex2any.obj texutils.obj tex2rtf.obj rtfutils.obj table.obj readshg.obj xlputils.obj htmlutil.obj -objects=$(objects) wb_hash.obj wb_list.obj wb_obj.obj wb_utils.obj - -all : tex2rtf.exe - -clean : - -$(remove) *.obj - -cleanall : clean - -$(remove) *.exe *.pdb *.ilk - -tex2rtf.exe : $(objects) - $(link) $(linkflags) $(objects) - -tex2any.obj : tex2any.cpp tex2any.h - $(cxx) $(cxxflags) tex2any.cpp - -texutils.obj : texutils.cpp tex2any.h - $(cxx) $(cxxflags) texutils.cpp - -tex2rtf.obj : tex2rtf.cpp bmputils.h tex2rtf.h tex2any.h - $(cxx) $(cxxflags) tex2rtf.cpp - -rtfutils.obj : rtfutils.cpp tex2rtf.h bmputils.h tex2any.h readshg.h table.h - $(cxx) $(cxxflags) rtfutils.cpp - -table.obj : table.cpp table.h - $(cxx) $(cxxflags) table.cpp - -readshg.obj : readshg.cpp readshg.h - $(cxx) $(cxxflags) readshg.cpp - -xlputils.obj : xlputils.cpp tex2rtf.h rtfutils.h tex2any.h - $(cxx) $(cxxflags) xlputils.cpp - -htmlutil.obj : htmlutil.cpp tex2rtf.h tex2any.h table.h - $(cxx) $(cxxflags) htmlutil.cpp - -wb_hash.obj : wxwin\wb_hash.cpp - $(cxx) $(cxxflags) wxwin\wb_hash.cpp - -wb_list.obj : wxwin\wb_list.cpp - $(cxx) $(cxxflags) wxwin\wb_list.cpp - -wb_obj.obj : wxwin\wb_obj.cpp - $(cxx) $(cxxflags) wxwin\wb_obj.cpp - -wb_utils.obj : wxwin\wb_utils.cpp - $(cxx) $(cxxflags) wxwin\wb_utils.cpp - - diff --git a/utils/tex2rtf/src/maths.cpp b/utils/tex2rtf/src/maths.cpp deleted file mode 100644 index 70fc726cf7..0000000000 --- a/utils/tex2rtf/src/maths.cpp +++ /dev/null @@ -1,25 +0,0 @@ -/* - * File: maths.cc - * Purpose: Beginnings of a maths parser for LaTeX. - * NOT IMPLEMENTED. I'm still thinking how best to do this... - * - */ - -// For compilers that support precompilation, includes "wx.h". -#ifdef WX_PRECOMP -#include "wx_prec.h" -#endif - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include -#endif - -#include -#include "tex2any.h" -#include -#include - diff --git a/utils/tex2rtf/src/readshg.cpp b/utils/tex2rtf/src/readshg.cpp deleted file mode 100644 index 2a62d48bc5..0000000000 --- a/utils/tex2rtf/src/readshg.cpp +++ /dev/null @@ -1,163 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: readshg.cpp -// Purpose: Petr Smilauer's .SHG (Segmented Hypergraphics file) reading -// code. -// Note: .SHG is undocumented (anywhere!) so this is -// reverse-engineering -// and guesswork at its best. -// Author: Petr Smilauer -// Modified by: -// Created: 01/01/99 -// RCS-ID: $Id$ -// Copyright: (c) Petr Smilauer -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include -#include - -#include "readshg.h" -#include "tex2any.h" - -// Returns the number of hotspots, and the array of hotspots. -// E.g. -// HotSpots *array; -// int n = ParseSHG("thing.shg", &array); - -int ParseSHG( const char* fileName, HotSpot **hotspots) -{ FILE* fSHG = fopen( fileName, "rb"); - long offset; - int nHotspots = 0; - - if(fSHG == 0) - return 0; - nHotspots = 0; - //first, look at offset OFF_OFFSET to get another offset :-) - fseek( fSHG, OFF_OFFSET, SEEK_SET); - offset = 0L; // init whole 4-byte variable - fread( &offset, 2, 1, fSHG); // get the offset in first two bytes.. - if(offset == 0) // if zero, used next DWORD field - fread( &offset, 4, 1, fSHG);// this is our offset for very long DIB - offset += 9; // don't know hot this delta comes-about - if(fseek( fSHG, offset, SEEK_SET) != 0) - { - fclose( fSHG); - return -1; // this is probably because incorrect offset calculation. - } - fread( &nHotspots, 2, 1, fSHG); - - *hotspots = new HotSpot[nHotspots]; - - int nMacroStrings = 0; - - fread( &nMacroStrings, 2, 1, fSHG); // we can ignore the macros, as this is - // repeated later, but we need to know how much to skip - fseek( fSHG, 2, SEEK_CUR); // skip another 2 bytes I do not understand ;-) - - ShgInfoBlock sib; - int i; - - int sizeOf = sizeof( ShgInfoBlock); - - for( i = 0 ; i < nHotspots ; ++i) - { - fread( &sib, sizeOf, 1, fSHG); // read one hotspot' info - // analyse it: - (*hotspots)[i].type = (HotspotType)(sib.hotspotType & 0xFB); - (*hotspots)[i].left = sib.left; - (*hotspots)[i].top = sib.top; - (*hotspots)[i].right = sib.left + sib.width; - (*hotspots)[i].bottom = sib.top + sib.height; - (*hotspots)[i].IsVisible = ((sib.hotspotType & 4) == 0); - (*hotspots)[i].szHlpTopic_Macro[0] = '\0'; - } - // we have it...now read-off the macro-string block - if(nMacroStrings > 0) - fseek( fSHG, nMacroStrings, SEEK_CUR); //nMacroStrings is byte offset... - // and, at the last, read through the strings: hotspot-id[ignored], then topic/macro - int c; - for( i = 0 ; i < nHotspots ; ++i) - { - while( (c = fgetc( fSHG)) != 0) - ; - // now read it: - int j = 0; - while( (c = fgetc( fSHG)) != 0) - { - (*hotspots)[i].szHlpTopic_Macro[j] = c; - ++j; - } - (*hotspots)[i].szHlpTopic_Macro[j] = 0; - } - fclose( fSHG); - return nHotspots; -} - - -// Convert Windows .SHG file to HTML map file - -bool SHGToMap(char *filename, char *defaultFile) -{ - // Test the SHG parser - HotSpot *hotspots = NULL; - int n = ParseSHG(filename, &hotspots); - if (n == 0) - return FALSE; - - char buf[100]; - sprintf(buf, "Converting .SHG file to HTML map file: there are %d hotspots in %s.", n, filename); - OnInform(buf); - - char outBuf[256]; - strcpy(outBuf, filename); - StripExtension(outBuf); - strcat(outBuf, ".map"); - - FILE *fd = fopen(outBuf, "w"); - if (!fd) - { - OnError("Could not open .map file for writing."); - delete[] hotspots; - return FALSE; - } - - fprintf(fd, "default %s\n", defaultFile); - for (int i = 0; i < n; i++) - { - char *refFilename = "??"; - - TexRef *texRef = FindReference(hotspots[i].szHlpTopic_Macro); - if (texRef) - refFilename = texRef->refFile; - else - { - char buf[300]; - sprintf(buf, "Warning: could not find hotspot reference %s", hotspots[i].szHlpTopic_Macro); - OnInform(buf); - } - fprintf(fd, "rect %s %d %d %d %d\n", refFilename, (int)hotspots[i].left, (int)hotspots[i].top, - (int)hotspots[i].right, (int)hotspots[i].bottom); - } - fprintf(fd, "\n"); - - fclose(fd); - - delete[] hotspots; - return TRUE; -} - diff --git a/utils/tex2rtf/src/readshg.h b/utils/tex2rtf/src/readshg.h deleted file mode 100644 index b26d4fea09..0000000000 --- a/utils/tex2rtf/src/readshg.h +++ /dev/null @@ -1,64 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: readshg.h -// Purpose: Petr Smilauer's .SHG (Segmented Hypergraphics file) reading -// code. -// Note: .SHG is undocumented (anywhere!) so this is -// reverse-engineering -// and guesswork at its best. -// Author: Petr Smilauer -// Modified by: -// Created: 01/01/99 -// RCS-ID: $Id$ -// Copyright: (c) Petr Smilauer -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef readshgh -#define readshgh - -#include -#include - -typedef enum { TypePopup = 0xE2, TypeJump = 0xE3, TypeMacro = 0xC8} HotspotType; - -#define NOT_VISIBLE 0x04 - -typedef struct -{ - unsigned char hotspotType;// combines HotspotType /w NOT_VISIBLE if appropriate - unsigned char flag; // NOT_VISIBLE or 0 ?? - unsigned char skip; // 0, always?? - unsigned short left, - top, - width, // left+width/top+height give right/bottom, - height; // =>right and bottom edge are not 'included' - unsigned char magic[4]; // wonderful numbers: for macros, this seems - // (at least first 2 bytes) to represent offset into macro-strings block. -} ShgInfoBlock; // whole block is just 15 bytes long. How weird! - -#define OFF_OFFSET 0x20 // this is offset, where WORD (?) lies -#define OFFSET_DELTA 9 // we must add this to get real offset from file beginning - -struct HotSpot -{ - HotspotType type; - unsigned int left, - top, - right, - bottom; - char szHlpTopic_Macro[65]; - bool IsVisible; -}; - -// Returns the number of hotspots, and the array of hotspots. -// E.g. -// HotSpots *array; -// int n = ParseSHG("thing.shg", &array); - -extern int ParseSHG( const char* fileName, HotSpot **hotspots); - -// Converts Windows .SHG file to HTML map file -extern bool SHGToMap(char *filename, char *defaultFile); - -#endif - diff --git a/utils/tex2rtf/src/rtfutils.cpp b/utils/tex2rtf/src/rtfutils.cpp deleted file mode 100644 index d58191aa95..0000000000 --- a/utils/tex2rtf/src/rtfutils.cpp +++ /dev/null @@ -1,5250 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: rtfutils.cpp -// Purpose: Converts Latex to Word RTF/WinHelp RTF -// Author: Julian Smart -// Modified by: -// Created: 7.9.93 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include "tex2any.h" -#include "tex2rtf.h" -#include -#include -#include - -#ifdef __WIN32__ -#include -#endif - -#include "bmputils.h" -#include "table.h" - -wxList itemizeStack; -static int indentLevel = 0; -static int forbidParindent = 0; // if > 0, no parindent (e.g. in center environment) -int forbidResetPar = 0; // If > 0, don't reset memory of having output a new par - -static char *contentsLineSection = NULL; -static char *contentsLineValue = NULL; -static TexChunk *descriptionItemArg = NULL; -static wxStringList environmentStack; // Stack of paragraph styles we need to remember -static int footnoteCount = 0; -static int citeCount = 1; -extern char *FileRoot; -extern bool winHelp; -extern bool startedSections; -extern FILE *Contents; -extern FILE *Chapters; -extern FILE *Popups; -extern FILE *WinHelpContentsFile; -extern char *RTFCharset; -// This is defined in the Tex2Any library and isn't in use after parsing -extern char *BigBuffer; -// Are we in verbatim mode? If so, format differently. -static bool inVerbatim = FALSE; - -// We're in a series of PopRef topics, so don't output section headings -bool inPopRefSection = FALSE; - -// Green colour? -static bool hotSpotColour = TRUE; -static bool hotSpotUnderline = TRUE; - -// Transparency (WHITE = transparent) -static bool bitmapTransparency = TRUE; - -// Linear RTF requires us to set the style per section. -static char *currentNumberStyle = NULL; -static int currentItemSep = 8; -static int CurrentTextWidth = 8640; // Say, six inches -static int CurrentLeftMarginOdd = 400; -static int CurrentLeftMarginEven = 1440; -static int CurrentRightMarginOdd = 1440; -static int CurrentRightMarginEven = 400; -static int CurrentMarginParWidth = 2000; -static int CurrentMarginParSep = 400; // Gap between marginpar and text -static int CurrentMarginParX = CurrentLeftMarginOdd + CurrentTextWidth + CurrentMarginParSep; -static int GutterWidth = 2300; - -// Two-column table dimensions, in twips -static int TwoColWidthA = 1500; -static int TwoColWidthB = 3000; - -const int PageWidth = 12242; // 8.25 inches wide for A4 - - -/* - * Flag to say we've just issued a \par\pard command, so don't - * repeat this unnecessarily. - * - */ - -int issuedNewParagraph = 0; - -// Need to know whether we're in a table or figure for benefit -// of listoffigures/listoftables -static bool inFigure = FALSE; -static bool inTable = FALSE; - -/* - * Current topics - * - */ -static char *CurrentChapterName = NULL; -static char *CurrentSectionName = NULL; -static char *CurrentSubsectionName = NULL; -static char *CurrentTopic = NULL; - -static bool InPopups() -{ - if (CurrentChapterName && (strcmp(CurrentChapterName, "popups") == 0)) - return TRUE; - if (CurrentSectionName && (strcmp(CurrentSectionName, "popups") == 0)) - return TRUE; - return FALSE; -} - -static void SetCurrentTopic(char *s) -{ - if (CurrentTopic) delete[] CurrentTopic; - CurrentTopic = copystring(s); -} - -void SetCurrentChapterName(char *s) -{ - if (CurrentChapterName) delete[] CurrentChapterName; - CurrentChapterName = copystring(s); - SetCurrentTopic(s); -} -void SetCurrentSectionName(char *s) -{ - if (CurrentSectionName) delete[] CurrentSectionName; - CurrentSectionName = copystring(s); - SetCurrentTopic(s); -} -void SetCurrentSubsectionName(char *s) -{ - if (CurrentSubsectionName) delete[] CurrentSubsectionName; - CurrentSubsectionName = copystring(s); - SetCurrentTopic(s); -} - -// Indicate that a parent topic at level 'level' has children. -// Level 1 is a chapter, 2 is a section, etc. -void NotifyParentHasChildren(int parentLevel) -{ - char *parentTopic = NULL; - switch (parentLevel) - { - case 1: - { - parentTopic = CurrentChapterName; - break; - } - case 2: - { - parentTopic = CurrentSectionName; - break; - } - case 3: - { - parentTopic = CurrentSubsectionName; - break; - } - default: - { - break; - } - } - if (parentTopic) - { - TexTopic *texTopic = (TexTopic *)TopicTable.Get(parentTopic); - if (!texTopic) - { - texTopic = new TexTopic; - TopicTable.Put(parentTopic, texTopic); - } - texTopic->hasChildren = TRUE; - } -} - -// Have to keep a count of what levels are books, what are pages, -// in order to correct for a Win95 bug which means that if you -// have a book at level n, and then a page at level n, the page -// ends up on level n + 1. - -bool ContentsLevels[5]; - -// Reset below this level (starts from 1) -void ResetContentsLevels(int l) -{ - int i; - for (i = l; i < 5; i++) - ContentsLevels[i] = FALSE; - - // There are always books on the top level - ContentsLevels[0] = TRUE; -} - -// Output a WinHelp section as a keyword, substituting -// : for space. -void OutputSectionKeyword(FILE *fd) -{ - OutputCurrentSectionToString(wxBuffer); - - int i; - for (i = 0; i < strlen(wxBuffer); i++) - if (wxBuffer[i] == ':') - wxBuffer[i] = ' '; - // Don't write to index if there's some RTF in the string - else if ( wxBuffer[i] == '{' ) - return; - - fprintf(fd, "K{\\footnote {K} "); - fprintf(fd, "%s", wxBuffer); - - fprintf(fd, "}\n"); -} - -// Write a line for the .cnt file, if we're doing this. -void WriteWinHelpContentsFileLine(char *topicName, char *xitle, int level) -{ - // First, convert any RTF characters to ASCII - char title[255]; - int s=0; - int d=0; - while ( (xitle[s]!=0)&&(d<255) ) - { - char ch=xitle[s]&0xff; - if (ch==0x5c) { - char ch1=xitle[s+1]&0xff; - char ch2=xitle[s+2]&0xff; - char ch3=xitle[s+3]&0xff; - char ch4=xitle[s+4]&0xff; - s+=4; // next character - char a=0; - if ((ch1==0x27)&&(ch2==0x66)&&(ch3==0x36)) { title[d++]='ö'; a=1; } - if ((ch1==0x27)&&(ch2==0x65)&&(ch3==0x34)) { title[d++]='ä'; a=1; } - if ((ch1==0x27)&&(ch2==0x66)&&(ch3==0x63)) { title[d++]='ü'; a=1; } - if ((ch1==0x27)&&(ch2==0x64)&&(ch3==0x36)) { title[d++]='Ö'; a=1; } - if ((ch1==0x27)&&(ch2==0x63)&&(ch3==0x34)) { title[d++]='Ä'; a=1; } - if ((ch1==0x27)&&(ch2==0x64)&&(ch3==0x63)) { title[d++]='Ü'; a=1; } -// if (a==0) -// printf("!!!!! %04X %04X %04X %04X! \n",ch1,ch2,ch3,ch4); - } else { - title[d++]=ch; - s++; - } - } - title[d]=0; - - // Section (2) becomes level 1 if it's an article. - if (DocumentStyle == LATEX_ARTICLE) - level --; - - if (level == 0) // Means we had a Chapter in an article, oops. - return; - - ResetContentsLevels(level); - - if (!title) - return; - - if (winHelp && winHelpContents && WinHelpContentsFile) - { - TexTopic *texTopic = (TexTopic *)TopicTable.Get(topicName); - if (texTopic) - { - // If a previous section at this level was a book, we *have* to have a - // book not a page, because of a bug in WHC (or WinHelp 4). - if (texTopic->hasChildren || level == 1 || ContentsLevels[level-1]) - { - // At this level, we have a pointer to a further hierarchy. - // So we need a 'book' consisting of (say) Chapter 1. - fprintf(WinHelpContentsFile, "%d %s\n", level, title); - - // Then we have a 'page' consisting of the text for this chapter - fprintf(WinHelpContentsFile, "%d %s=%s\n", level+1, title, topicName); - - // Then we'll be writing out further pages or books at level + 1... - - // Remember that at this level, we had a book and *must* for the - // remainder of sections at this level. - ContentsLevels[level-1] = TRUE; - } - else - { - fprintf(WinHelpContentsFile, "%d %s=%s\n", level, title, topicName); - } - } - else - { - if (level == 1 || ContentsLevels[level-1]) - { - // Always have a book at level 1 - fprintf(WinHelpContentsFile, "%d %s\n", level, title); - fprintf(WinHelpContentsFile, "%d %s=%s\n", level+1, title, topicName); - ContentsLevels[level-1] = TRUE; - } - else - // Probably doesn't have children if it hasn't been added to the topic table - fprintf(WinHelpContentsFile, "%d %s=%s\n", level, title, topicName); - } - } -} - -void SplitIndexEntry(char *entry, char *buf1, char *buf2) -{ - int len = strlen(entry); int i = 0; - while ((i < len) && entry[i] != '!') - { buf1[i] = entry[i]; i ++; } - buf1[i] = 0; buf2[0] = 0; int j = 0; - - if (entry[i] == '!') - { - i ++; - while (i < len) { buf2[j] = entry[i]; i ++; j++; } - buf2[j] = 0; - } -} - -/* - * Output topic index entries in WinHelp RTF - * - */ -void GenerateKeywordsForTopic(char *topic) -{ - TexTopic *texTopic = (TexTopic *)TopicTable.Get(topic); - if (!texTopic) - return; - - wxStringList *list = texTopic->keywords; - if (list) - { - wxNode *node = list->First(); - while (node) - { - char *s = (char *)node->Data(); - - // Must separate out main entry form subentry (only 1 subentry allowed) - char buf1[100]; char buf2[100]; - SplitIndexEntry(s, buf1, buf2); - - // Check for ':' which messes up index - int i; - for (i = 0; i < strlen(buf1) ; i++) - if (buf1[i] == ':') - buf1[i] = ' '; - for (i = 0; i < strlen(buf2) ; i++) - if (buf2[i] == ':') - buf2[i] = ' '; - - // {K} is a strange fix to prevent words beginning with K not - // being indexed properly - TexOutput("K{\\footnote {K} "); - TexOutput(buf1); - if (strlen(buf2) > 0) - { - // Output subentry - TexOutput(", "); - TexOutput(buf2); - } - TexOutput("}\n"); - node = node->Next(); - } - } -} - -/* - * Output index entry in linear RTF - * - */ - -void GenerateIndexEntry(char *entry) -{ - if (useWord) - { - char buf1[100]; char buf2[100]; - SplitIndexEntry(entry, buf1, buf2); - - TexOutput("{\\xe\\v {"); - TexOutput(buf1); - if (strlen(buf2) > 0) - { - TexOutput("\\:"); - TexOutput(buf2); - } - TexOutput("}}"); - } -} - - /* - * Write a suitable RTF header. - * - */ - -void WriteColourTable(FILE *fd) -{ - fprintf(fd, "{\\colortbl"); - wxNode *node = ColourTable.First(); - while (node) - { - ColourTableEntry *entry = (ColourTableEntry *)node->Data(); - fprintf(fd, "\\red%d\\green%d\\blue%d;\n", entry->red, entry->green, entry->blue); - node = node->Next(); - } - fprintf(fd, "}"); -} - -/* - * Write heading style - * - */ - -void WriteHeadingStyle(FILE *fd, int heading) -{ - switch (heading) - { - case 1: - { - fprintf(fd, "\\b\\fs%d", chapterFont*2); - break; - } - case 2: - { - fprintf(fd, "\\b\\fs%d", sectionFont*2); - break; - } - case 3: - { - fprintf(fd, "\\b\\fs%d", subsectionFont*2); - break; - } - case 4: - { - fprintf(fd, "\\b\\fs%d", subsectionFont*2); - break; - } - default: - break; - } -} - -void WriteRTFHeader(FILE *fd) -{ - fprintf(fd, "{\\rtf1\\%s \\deff0\n", RTFCharset); - fprintf(fd, "{\\fonttbl{\\f0\\froman Times New Roman;}{\\f1\\ftech Symbol;}{\\f2\\fswiss Arial;}\n"); - fprintf(fd, "{\\f3\\fmodern Courier;}{\\f4\\ftech Wingdings;}{\\f5\\ftech Monotype Sorts;}\n}"); - /* - * Style sheet - */ - fprintf(fd, "{\\stylesheet{\\f2\\fs20 \\snext0 Normal;}\n"); - // Headings - fprintf(fd, "{\\s1 "); WriteHeadingStyle(fd, 1); fprintf(fd, "\\sbasedon0\\snext0 heading 1;}\n"); - fprintf(fd, "{\\s2 "); WriteHeadingStyle(fd, 2); fprintf(fd, "\\sbasedon0\\snext0 heading 2;}\n"); - fprintf(fd, "{\\s3 "); WriteHeadingStyle(fd, 3); fprintf(fd, "\\sbasedon0\\snext0 heading 3;}\n"); - fprintf(fd, "{\\s4 "); WriteHeadingStyle(fd, 4); fprintf(fd, "\\sbasedon0\\snext0 heading 4;}\n"); - // Table of contents styles - fprintf(fd, "{\\s20\\sb300\\tqr\\tldot\\tx8640 \\b\\f2 \\sbasedon0\\snext0 toc 1;}\n"); - - fprintf(fd, "{\\s21\\sb90\\tqr\\tldot\\li400\\tqr\\tx8640 \\f2\\fs20\\sbasedon0\\snext0 toc 2;}\n"); - fprintf(fd, "{\\s22\\sb90\\tqr\\tldot\\li800\\tx8640 \\f2\\fs20 \\sbasedon0\\snext0 toc 3;}\n"); - fprintf(fd, "{\\s23\\sb90\\tqr\\tldot\\li1200\\tx8640 \\f2\\fs20 \\sbasedon0\\snext0 toc 4;}\n"); - - // Index styles - fprintf(fd, "{\\s30\\fi-200\\li200\\tqr\\tx3960 \\f2\\fs18 \\sbasedon0\\snext0 index 1;}\n"); - fprintf(fd, "{\\s31\\fi-200\\li400\\tqr\\tx3960 \\f2\\fs18 \\sbasedon0\\snext0 index 2;}\n"); - fprintf(fd, "{\\s32\\fi-200\\li600\\tqr\\tx3960 \\f2\\fs18 \\sbasedon0\\snext0 index 3;}\n"); - fprintf(fd, "{\\s33\\fi-200\\li800\\tqr\\tx3960 \\f2\\fs18 \\sbasedon0\\snext0 index 4;}\n"); - fprintf(fd, "{\\s35\\qc\\sb240\\sa120 \\b\\f2\\fs26 \\sbasedon0\\snext30 index heading;}\n"); - fprintf(fd, "}\n"); - - WriteColourTable(fd); - fprintf(fd, "\n\\ftnbj\\ftnrestart"); // Latex default is footnotes at bottom of page, not section. - fprintf(fd, "\n"); -} - -void OutputNumberStyle(char *numberStyle) -{ - if (numberStyle) - { - if (strcmp(numberStyle, "arabic") == 0) - { - TexOutput("\\pgndec"); - } - else if (strcmp(numberStyle, "roman") == 0) - { - TexOutput("\\pgnlcrm"); - } - else if (strcmp(numberStyle, "Roman") == 0) - { - TexOutput("\\pgnucrm"); - } - else if (strcmp(numberStyle, "alph") == 0) - { - TexOutput("\\pgnlcltr"); - } - else if (strcmp(numberStyle, "Alph") == 0) - { - TexOutput("\\pgnucltr"); - } - } -} - -/* - * Write a Windows help project file - */ - -bool WriteHPJ(char *filename) -{ - char hpjFilename[256]; - char helpFile[50]; - char rtfFile[50]; - strcpy(hpjFilename, filename); - StripExtension(hpjFilename); - strcat(hpjFilename, ".hpj"); - - strcpy(helpFile, FileNameFromPath(filename)); - StripExtension(helpFile); - strcpy(rtfFile, helpFile); - strcat(helpFile, ".hlp"); - strcat(rtfFile, ".rtf"); - - FILE *fd = fopen(hpjFilename, "w"); - if (!fd) - return FALSE; - - char *helpTitle = winHelpTitle; - if (!helpTitle) - helpTitle = "Untitled"; - - char *thePath = wxPathOnly(InputFile); - if (!thePath) - thePath = "."; - fprintf(fd, "[OPTIONS]\n"); - fprintf(fd, "BMROOT=%s ; Assume that bitmaps are where the source is\n", thePath); - fprintf(fd, "TITLE=%s\n", helpTitle); - fprintf(fd, "CONTENTS=Contents\n"); - - if (winHelpVersion > 3) - { - fprintf(fd, "; COMPRESS=12 Hall Zeck ; Max compression, but needs lots of memory\n"); - fprintf(fd, "COMPRESS=8 Zeck\n"); - fprintf(fd, "LCID=0x809 0x0 0x0 ;English (British)\n"); - fprintf(fd, "HLP=.\\%s.hlp\n", wxFileNameFromPath(FileRoot)); - } - else - { - fprintf(fd, "COMPRESS=HIGH\n"); - } - fprintf(fd, "\n"); - - if (winHelpVersion > 3) - { - fprintf(fd, "[WINDOWS]\n"); - fprintf(fd, "Main=\"\",(553,102,400,600),20736,(r14876671),(r12632256),f3\n"); - fprintf(fd, "\n"); - } - - fprintf(fd, "[FILES]\n%s\n\n", rtfFile); - fprintf(fd, "[CONFIG]\n"); - if (useUpButton) - fprintf(fd, "CreateButton(\"Up\", \"&Up\", \"JumpId(`%s', `Contents')\")\n", helpFile); - fprintf(fd, "BrowseButtons()\n\n"); - fprintf(fd, "[MAP]\n\n[BITMAPS]\n\n"); - fclose(fd); - return TRUE; -} - - -/* - * Given a TexChunk with a string value, scans through the string - * converting Latex-isms into RTF-isms, such as 2 newlines -> \par, - * and inserting spaces at the start of lines since in Latex, a newline - * implies a space, but not in RTF. - * - */ - -void ProcessText2RTF(TexChunk *chunk) -{ - bool changed = FALSE; - int ptr = 0; - int i = 0; - char ch = 1; - int len = strlen(chunk->value); - while (ch != 0) - { - ch = chunk->value[i]; - - if (ch == 10) - { - if (inVerbatim) - { - BigBuffer[ptr] = 0; strcat(BigBuffer, "\\par\n"); ptr += 5; - i ++; - changed = TRUE; - } - else - { - // If the first character of the next line is ASCII, - // put a space in. Implicit in Latex, not in RTF. - /* - The reason this is difficult is that you don't really know - where a space would be appropriate. If you always put in a space - when you find a newline, unwanted spaces appear in the text. - */ - if ((i > 0) && (len > i+1 && isascii(chunk->value[i+1]) && - !isspace(chunk->value[i+1])) || - ((len > i+1 && chunk->value[i+1] == 13) && - (len > i+2 && isascii(chunk->value[i+2]) && - !isspace(chunk->value[i+2])))) -// if (TRUE) - { - // DOS files have a 13 after the 10 - BigBuffer[ptr] = 10; - ptr ++; - i ++; - if (chunk->value[i] == 13) - { - BigBuffer[ptr] = 13; - ptr ++; - i ++; - } - - BigBuffer[ptr] = ' '; - ptr ++; - - // Note that the actual ASCII character seen is dealt with in the next - // iteration - changed = TRUE; - } - else - { - BigBuffer[ptr] = ch; - i ++; - } - } - } - else if (!inVerbatim && ch == '`' && (len >= i+1 && chunk->value[i+1] == '`')) - { - BigBuffer[ptr] = '"'; ptr ++; - i += 2; - changed = TRUE; - } - else if (!inVerbatim && ch == '`') // Change ` to ' - { - BigBuffer[ptr] = 39; ptr ++; - i += 1; - changed = TRUE; - } - else if (inVerbatim && ch == '\\') // Change backslash to two backslashes - { - BigBuffer[ptr] = '\\'; ptr ++; - BigBuffer[ptr] = '\\'; ptr ++; - i += 1; - changed = TRUE; - } - else if (inVerbatim && (ch == '{' || ch == '}')) // Escape the curly bracket - { - BigBuffer[ptr] = '\\'; ptr ++; - BigBuffer[ptr] = ch; ptr ++; - i += 1; - changed = TRUE; - } - else - { - BigBuffer[ptr] = ch; - i ++; - ptr ++; - } - } - BigBuffer[ptr] = 0; - - if (changed) - { - delete[] chunk->value; - chunk->value = copystring(BigBuffer); - } -} - -/* - * Scan through all chunks starting from the given one, - * calling ProcessText2RTF to convert Latex-isms to RTF-isms. - * This should be called after Tex2Any has parsed the file, - * and before TraverseDocument is called. - * - */ - -void Text2RTF(TexChunk *chunk) -{ - Tex2RTFYield(); - if (stopRunning) return; - - switch (chunk->type) - { - case CHUNK_TYPE_MACRO: - { - TexMacroDef *def = chunk->def; - if (def && def->ignore) - return; - - if (def && (def->macroId == ltVERBATIM || def->macroId == ltVERB)) - inVerbatim = TRUE; - - wxNode *node = chunk->children.First(); - while (node) - { - TexChunk *child_chunk = (TexChunk *)node->Data(); - Text2RTF(child_chunk); - node = node->Next(); - } - - if (def && (def->macroId == ltVERBATIM || def->macroId == ltVERB)) - inVerbatim = FALSE; - - break; - } - case CHUNK_TYPE_ARG: - { - wxNode *node = chunk->children.First(); - while (node) - { - TexChunk *child_chunk = (TexChunk *)node->Data(); - Text2RTF(child_chunk); - node = node->Next(); - } - - break; - } - case CHUNK_TYPE_STRING: - { - if (chunk->value) - ProcessText2RTF(chunk); - break; - } - } -} - -/* - * Not used yet - * - */ - -char browseBuf[10]; -static long browseId = 0; -char *GetBrowseString(void) -{ - char buf[10]; - browseId ++; - sprintf(buf, "%ld", browseId); - int noZeroes = 5-strlen(buf); - strcpy(browseBuf, "browse"); - for (int i = 0; i < noZeroes; i++) - strcat(browseBuf, "0"); - strcat(browseBuf, buf); - return browseBuf; -} - -/* - * Keeping track of environments to restore the styles after \pard. - * Push strings like "\qc" onto stack. - * - */ - -void PushEnvironmentStyle(char *style) -{ - environmentStack.Add(style); -} - -void PopEnvironmentStyle(void) -{ - wxNode *node = environmentStack.Last(); - if (node) - { - char *val = (char *)node->Data(); - delete[] val; - delete node; - } -} - -// Write out the styles, most recent first. -void WriteEnvironmentStyles(void) -{ - wxNode *node = environmentStack.Last(); - while (node) - { - char *val = (char *)node->Data(); - TexOutput(val); - node = node->Next(); - } - if (!inTabular && (ParIndent > 0) && (forbidParindent == 0)) - { - char buf[15]; - sprintf(buf, "\\fi%d", ParIndent*20); // Convert points to TWIPS - TexOutput(buf); - } - if (environmentStack.Number() > 0 || (ParIndent > 0)) - TexOutput("\n"); -} - - -/* - * Output a header - * - */ - -void OutputRTFHeaderCommands(void) -{ - char buf[300]; - if (PageStyle && strcmp(PageStyle, "plain") == 0) - { - TexOutput("{\\headerl }{\\headerr }"); - } - else if (PageStyle && strcmp(PageStyle, "empty") == 0) - { - TexOutput("{\\headerl }{\\headerr }"); - } - else if (PageStyle && strcmp(PageStyle, "headings") == 0) - { - // Left header - TexOutput("{\\headerl\\fi0 "); - - if (headerRule) - TexOutput("\\brdrb\\brdrs\\brdrw15\\brsp20 "); - - TexOutput("{\\i \\qr "); - if (DocumentStyle == LATEX_ARTICLE) - { - sprintf(buf, "SECTION %d", sectionNo); - TexOutput(buf); - } - else - { - sprintf(buf, "CHAPTER %d: ", chapterNo); - TexOutput(buf); - } - TexOutput("{\\field{\\*\\fldinst PAGE \\\\* MERGEFORMAT }{\\fldrslt 1}}"); - TexOutput("}\\par\\pard}"); - - // Right header - TexOutput("{\\headerr\\fi0 "); - - if (headerRule) - TexOutput("\\brdrb\\brdrs\\brdrw15\\brsp20 "); - - TexOutput("{\\i \\qc "); - if (DocumentStyle == LATEX_ARTICLE) - { - sprintf(buf, "SECTION %d", sectionNo); - TexOutput(buf); - } - else - { - sprintf(buf, "CHAPTER %d", chapterNo); - TexOutput(buf); - } - TexOutput("{\\field{\\*\\fldinst PAGE \\\\* MERGEFORMAT }{\\fldrslt 1}}"); - TexOutput("}\\par\\pard}"); - } - else - { - int oldForbidResetPar = forbidResetPar; - forbidResetPar = 0; - - if (LeftHeaderEven || CentreHeaderEven || RightHeaderEven) - { - TexOutput("{\\headerl\\fi0 "); - - if (headerRule) - TexOutput("\\brdrb\\brdrs\\brdrw15\\brsp20 "); - - if (LeftHeaderEven) - { - if (!CentreHeaderEven && !RightHeaderEven) - TexOutput("\\ql "); - TraverseChildrenFromChunk(LeftHeaderEven); - } - if (CentreHeaderEven) - { - if (!LeftHeaderEven && !RightHeaderEven) - TexOutput("\\qc "); - else - TexOutput("\\tab\\tab\\tab "); - TraverseChildrenFromChunk(CentreHeaderEven); - } - if (RightHeaderEven) - { - if (!LeftHeaderEven && !CentreHeaderEven) - TexOutput("\\qr "); - else - TexOutput("\\tab\\tab\\tab\\tab\\tab\\tab "); - TraverseChildrenFromChunk(RightHeaderEven); - } - TexOutput("\\par\\pard}"); - } - - if (LeftHeaderOdd || CentreHeaderOdd || RightHeaderOdd) - { - TexOutput("{\\headerr\\fi0 "); - - if (headerRule) - TexOutput("\\brdrb\\brdrs\\brdrw15\\brsp20 "); - - if (LeftHeaderOdd) - { - if (!CentreHeaderOdd && !RightHeaderOdd) - TexOutput("\\ql "); - TraverseChildrenFromChunk(LeftHeaderOdd); - } - if (CentreHeaderOdd) - { - if (!LeftHeaderOdd && !RightHeaderOdd) - TexOutput("\\qc "); - else - TexOutput("\\tab\\tab\\tab "); - TraverseChildrenFromChunk(CentreHeaderOdd); - } - if (RightHeaderOdd) - { - if (!LeftHeaderOdd && !CentreHeaderOdd) - TexOutput("\\qr "); - else - TexOutput("\\tab\\tab\\tab\\tab\\tab\\tab "); - TraverseChildrenFromChunk(RightHeaderOdd); - } - TexOutput("\\par\\pard}"); - } - // As an approximation, don't put a header on the first page of a section. - // This may not always be desired, but it's a reasonable guess. - TexOutput("{\\headerf }"); - - forbidResetPar = oldForbidResetPar; - } -} - -void OutputRTFFooterCommands(void) -{ - if (PageStyle && strcmp(PageStyle, "plain") == 0) - { - TexOutput("{\\footerl\\fi0 "); - if (footerRule) - TexOutput("\\brdrt\\brdrs\\brdrw15\\brsp20 "); - TexOutput("{\\qc "); - TexOutput("{\\field{\\*\\fldinst PAGE \\\\* MERGEFORMAT }{\\fldrslt 1}}"); - TexOutput("}\\par\\pard}"); - - TexOutput("{\\footerr\\fi0 "); - if (footerRule) - TexOutput("\\brdrt\\brdrs\\brdrw15\\brsp20 "); - TexOutput("{\\qc "); - TexOutput("{\\field{\\*\\fldinst PAGE \\\\* MERGEFORMAT }{\\fldrslt 1}}"); - TexOutput("}\\par\\pard}"); - } - else if (PageStyle && strcmp(PageStyle, "empty") == 0) - { - TexOutput("{\\footerl }{\\footerr }"); - } - else if (PageStyle && strcmp(PageStyle, "headings") == 0) - { - TexOutput("{\\footerl }{\\footerr }"); - } - else - { - if (LeftFooterEven || CentreFooterEven || RightFooterEven) - { - TexOutput("{\\footerl\\fi0 "); - if (footerRule) - TexOutput("\\brdrt\\brdrs\\brdrw15\\brsp20 "); - if (LeftFooterEven) - { - if (!CentreFooterEven && !RightFooterEven) - TexOutput("\\ql "); - TraverseChildrenFromChunk(LeftFooterEven); - } - if (CentreFooterEven) - { - if (!LeftFooterEven && !RightFooterEven) - TexOutput("\\qc "); - else - TexOutput("\\tab\\tab\\tab "); - TraverseChildrenFromChunk(CentreFooterEven); - } - if (RightFooterEven) - { - if (!LeftFooterEven && !CentreFooterEven) - TexOutput("\\qr "); - else - TexOutput("\\tab\\tab\\tab\\tab\\tab\\tab "); - TraverseChildrenFromChunk(RightFooterEven); - } - TexOutput("\\par\\pard}"); - } - - if (LeftFooterOdd || CentreFooterOdd || RightFooterOdd) - { - TexOutput("{\\footerr\\fi0 "); - if (footerRule) - TexOutput("\\brdrt\\brdrs\\brdrw15\\brsp20 "); - if (LeftFooterOdd) - { - if (!CentreFooterOdd && !RightFooterOdd) - TexOutput("\\ql "); - TraverseChildrenFromChunk(LeftFooterOdd); - } - if (CentreFooterOdd) - { - if (!LeftFooterOdd && !RightFooterOdd) - TexOutput("\\qc "); - else - TexOutput("\\tab\\tab\\tab "); - TraverseChildrenFromChunk(CentreFooterOdd); - } - if (RightFooterOdd) - { - if (!LeftFooterOdd && !CentreFooterOdd) - TexOutput("\\qr "); - else - TexOutput("\\tab\\tab\\tab\\tab\\tab\\tab "); - TraverseChildrenFromChunk(RightFooterOdd); - } - TexOutput("\\par\\pard}"); - } - - // As an approximation, put a footer on the first page of a section. - // This may not always be desired, but it's a reasonable guess. - if (LeftFooterOdd || CentreFooterOdd || RightFooterOdd) - { - TexOutput("{\\footerf\\fi0 "); - if (LeftFooterOdd) - { - if (!CentreFooterOdd && !RightFooterOdd) - TexOutput("\\ql "); - TraverseChildrenFromChunk(LeftFooterOdd); - } - if (CentreFooterOdd) - { - if (!LeftFooterOdd && !RightFooterOdd) - TexOutput("\\qc "); - else - TexOutput("\\tab\\tab\\tab "); - TraverseChildrenFromChunk(CentreFooterOdd); - } - if (RightFooterOdd) - { - if (!LeftFooterOdd && !CentreFooterOdd) - TexOutput("\\qr "); - else - TexOutput("\\tab\\tab\\tab\\tab\\tab\\tab "); - TraverseChildrenFromChunk(RightFooterOdd); - } - TexOutput("\\par\\pard}"); - } - } -} - -// Called on start/end of macro examination -void RTFOnMacro(int macroId, int no_args, bool start) -{ -/* - char tmpBuf[40]; - sprintf(tmpBuf, "%d (%d)", macroId, (int)start); - OutputDebugString("RTFOnMacro Start "); OutputDebugString(tmpBuf); - OutputDebugString("\n"); wxYield(); -*/ - - // ltLABEL is included here because after a section but BEFORE - // the label is seen, a new paragraph is issued. Don't upset this by - // immediately forgetting we've done it. - if (start && (macroId != ltPAR && macroId != ltITEMIZE && - macroId != ltENUMERATE && macroId != ltDESCRIPTION && - macroId != ltVERBATIM && macroId != ltLABEL && - macroId != ltSETHEADER && macroId != ltSETFOOTER && - macroId != ltPAGENUMBERING && - (forbidResetPar == 0))) - { - issuedNewParagraph = 0; - } - - char buf[300]; - switch (macroId) - { - case ltCHAPTER: - case ltCHAPTERSTAR: - case ltCHAPTERHEADING: - case ltCHAPTERHEADINGSTAR: - { - if (!start) - { - sectionNo = 0; - figureNo = 0; - tableNo = 0; - subsectionNo = 0; - subsubsectionNo = 0; - footnoteCount = 0; - - if (macroId != ltCHAPTERSTAR && macroId != ltCHAPTERHEADINGSTAR) - chapterNo ++; - - char *topicName = FindTopicName(GetNextChunk()); - SetCurrentChapterName(topicName); - - if (winHelpContents && winHelp && !InPopups()) - { - OutputCurrentSectionToString(wxBuffer); - WriteWinHelpContentsFileLine(topicName, wxBuffer, 1); - } - AddTexRef(topicName, NULL, ChapterNameString, chapterNo); - - if (winHelp) - { - if (!InPopups()) - fprintf(Contents, "\n{\\uldb "); - fprintf(Chapters, "\\page"); - fprintf(Chapters, "\n${\\footnote "); - if (!InPopups()) - SetCurrentOutputs(Contents, Chapters); - else - SetCurrentOutput(Chapters); - } - else - { - fprintf(Chapters, "\\sect\\pgncont\\titlepg\n"); - - // If a non-custom page style, we generate the header now. - if (PageStyle && (strcmp(PageStyle, "plain") == 0 || - strcmp(PageStyle, "empty") == 0 || - strcmp(PageStyle, "headings") == 0)) - { - OutputRTFHeaderCommands(); - OutputRTFFooterCommands(); - } - - // Need to reset the current numbering style, or RTF forgets it. - SetCurrentOutput(Chapters); - OutputNumberStyle(currentNumberStyle); - - SetCurrentOutput(Contents); - - if (!InPopups()) - { - if (macroId == ltCHAPTER) - { - // Section - fprintf(Contents, "\\par\n\\pard{\\b %d\\tab ", chapterNo); - } - else if (macroId == ltCHAPTERHEADING) - { - fprintf(Contents, "\\par\n\\pard{\\b "); - } - else SetCurrentOutput(NULL); // No entry in table of contents - } - } - - startedSections = TRUE; - - // Output heading to contents page - if (!InPopups()) - { - OutputCurrentSection(); - - if (winHelp) - fprintf(Contents, "}{\\v %s}\\par\\pard\n", topicName); - else if ((macroId == ltCHAPTER) || (macroId == ltCHAPTERHEADING)) - fprintf(Contents, "}\\par\\par\\pard\n"); - - // From here, just output to chapter - SetCurrentOutput(Chapters); - } - - if (winHelp) - { - fprintf(Chapters, "}\n#{\\footnote %s}\n", topicName); - fprintf(Chapters, "+{\\footnote %s}\n", GetBrowseString()); - - OutputSectionKeyword(Chapters); - - GenerateKeywordsForTopic(topicName); - if (useUpButton) - { - // If we're generating a .cnt file, we don't want to be able - // jump up to the old-style contents page, so disable it. - if (winHelpContents) - fprintf(Chapters, "!{\\footnote DisableButton(\"Up\")}\n"); - else - fprintf(Chapters, "!{\\footnote EnableButton(\"Up\");ChangeButtonBinding(\"Up\", \"JumpId(`%s.hlp', `%s')\")}\n", - FileNameFromPath(FileRoot), "Contents"); - } - } - - if (!InPopups()) - { - char *styleCommand = ""; - if (!winHelp && useHeadingStyles && (macroId == ltCHAPTER || macroId == ltCHAPTERHEADING || macroId == ltCHAPTERHEADINGSTAR)) - styleCommand = "\\s1"; - fprintf(Chapters, "\\pard{%s", ((winHelp && !InPopups()) ? "\\keepn\\sa140\\sb140" : styleCommand)); - WriteHeadingStyle(Chapters, 1); fprintf(Chapters, " "); - if (!winHelp) - { - if (macroId == ltCHAPTER) - { - if (useWord) -// fprintf(Chapters, "{\\bkmkstart %s}%d{\\bkmkend %s}. ", topicName, chapterNo, - fprintf(Chapters, "{\\bkmkstart %s}{\\bkmkend %s}", topicName, topicName); - else - fprintf(Chapters, "%d. ", chapterNo); - } - else if ( useWord ) - { - fprintf(Chapters, "{\\bkmkstart %s}{\\bkmkend %s}", topicName, topicName); - } - } - OutputCurrentSection(); - TexOutput("\\par\\pard}\\par\n"); - } - issuedNewParagraph = 2; - } - break; - } - case ltSECTION: - case ltSECTIONSTAR: - case ltSECTIONHEADING: - case ltSECTIONHEADINGSTAR: - case ltGLOSS: - { - FILE *jumpFrom; - if (DocumentStyle == LATEX_ARTICLE) - jumpFrom = Contents; - else - jumpFrom = Chapters; - - if (!start) - { - subsectionNo = 0; - subsubsectionNo = 0; - if (DocumentStyle == LATEX_ARTICLE) - footnoteCount = 0; - - if (macroId != ltSECTIONSTAR && macroId != ltSECTIONHEADINGSTAR) - sectionNo ++; - - char *topicName = FindTopicName(GetNextChunk()); - SetCurrentSectionName(topicName); - NotifyParentHasChildren(1); - if (winHelpContents && winHelp && !InPopups()) - { - OutputCurrentSectionToString(wxBuffer); - WriteWinHelpContentsFileLine(topicName, wxBuffer, 2); - } - AddTexRef(topicName, NULL, SectionNameString, chapterNo, sectionNo); - - if (winHelp) - { - SetCurrentOutputs(jumpFrom, Sections); - // Newline for a new section if this is an article - if ((DocumentStyle == LATEX_ARTICLE) && - ((macroId == ltSECTION) || (macroId == ltSECTIONSTAR) || (macroId == ltSECTIONHEADINGSTAR))) - fprintf(Sections, "\\page\n"); - - if (!InPopups()) - fprintf(jumpFrom, "\n{\\uldb "); - } - else - { - if (DocumentStyle == LATEX_ARTICLE) - { - TexOutput("\\sect\\pgncont\n"); - // If a non-custom page style, we generate the header now. - if (PageStyle && (strcmp(PageStyle, "plain") == 0 || - strcmp(PageStyle, "empty") == 0 || - strcmp(PageStyle, "headings") == 0)) - { - OutputRTFHeaderCommands(); - OutputRTFFooterCommands(); - } - } - SetCurrentOutput(Contents); - - if (macroId == ltSECTION) - { - if (!InPopups()) - { - if (DocumentStyle == LATEX_REPORT) - fprintf(Contents, "\n\\pard{\\tab %d.%d\\tab ", chapterNo, sectionNo); - else - fprintf(Contents, "\\par\n\\pard{\\b %d\\tab ", sectionNo); - } - } - else if (macroId == ltSECTIONHEADING) - { - if (!InPopups()) - { - if (DocumentStyle == LATEX_REPORT) - fprintf(Contents, "\n\\pard{\\tab "); //, chapterNo, sectionNo); - else - fprintf(Contents, "\\par\n\\pard{\\b "); //, sectionNo); - } - } - else SetCurrentOutput(NULL); - } - - if (startedSections) - { - if (winHelp) - fprintf(Sections, "\\page\n"); - } - startedSections = TRUE; - - if (winHelp) - fprintf(Sections, "\n${\\footnote "); - - // Output heading to contents page - if (!InPopups()) - OutputCurrentSection(); - - if (winHelp) - { - if (!InPopups()) - fprintf(jumpFrom, "}{\\v %s}\\par\\pard\n", topicName); - } - else if ((macroId != ltSECTIONSTAR) && (macroId != ltGLOSS)) - { - if (DocumentStyle == LATEX_REPORT) - fprintf(Contents, "}\\par\\pard\n"); - else - fprintf(Contents, "}\\par\\par\\pard\n"); - } - - SetCurrentOutput(winHelp ? Sections : Chapters); - - if (winHelp) - { - fprintf(Sections, "}\n#{\\footnote %s}\n", topicName); - fprintf(Sections, "+{\\footnote %s}\n", GetBrowseString()); - OutputSectionKeyword(Sections); - GenerateKeywordsForTopic(topicName); - if (useUpButton) - { - if (DocumentStyle == LATEX_ARTICLE) - { - fprintf(Sections, "!{\\footnote EnableButton(\"Up\");ChangeButtonBinding(\"Up\", \"JumpId(`%s.hlp', `%s')\")}\n", - FileNameFromPath(FileRoot), "Contents"); - } - else if (CurrentChapterName) - { - fprintf(Sections, "!{\\footnote EnableButton(\"Up\");ChangeButtonBinding(\"Up\", \"JumpId(`%s.hlp', `%s')\")}\n", - FileNameFromPath(FileRoot), CurrentChapterName); - } - } - } - - if (!InPopups()) - { - char *styleCommand = ""; - if (!winHelp && useHeadingStyles && (macroId != ltSECTIONSTAR)) - { - if (DocumentStyle == LATEX_ARTICLE) - styleCommand = "\\s1"; - else - styleCommand = "\\s2"; - } - char *keep = ""; - if (winHelp && (macroId != ltGLOSS) && !InPopups()) - keep = "\\keepn\\sa140\\sb140"; - - fprintf(winHelp ? Sections : Chapters, "\\pard{%s%s", - keep, styleCommand); - - WriteHeadingStyle((winHelp ? Sections : Chapters), - (DocumentStyle == LATEX_ARTICLE ? 1 : 2)); - fprintf(winHelp ? Sections : Chapters, " "); - - if (!winHelp) - { - if ((macroId != ltSECTIONSTAR) && (macroId != ltSECTIONHEADINGSTAR) && (macroId != ltGLOSS)) - { - if (DocumentStyle == LATEX_REPORT) - { - if (useWord) -// fprintf(Chapters, "{\\bkmkstart %s}%d.%d{\\bkmkend %s}. ", topicName, chapterNo, sectionNo, - fprintf(Chapters, "{\\bkmkstart %s}{\\bkmkend %s}", topicName, - topicName); - else - fprintf(Chapters, "%d.%d. ", chapterNo, sectionNo); - } - else - { - if (useWord) -// fprintf(Chapters, "{\\bkmkstart %s}%d{\\bkmkend %s}. ", topicName, sectionNo, - fprintf(Chapters, "{\\bkmkstart %s}{\\bkmkend %s}", topicName, - topicName); - else - fprintf(Chapters, "%d. ", sectionNo); - } - } - else if ( useWord ) - { - fprintf(Chapters, "{\\bkmkstart %s}{\\bkmkend %s}", topicName, topicName); - } - } - OutputCurrentSection(); - TexOutput("\\par\\pard}\\par\n"); - } - issuedNewParagraph = 2; - } - break; - } - case ltSUBSECTION: - case ltSUBSECTIONSTAR: - case ltMEMBERSECTION: - case ltFUNCTIONSECTION: - { - if (!start) - { - if (winHelp && !Sections) - { - OnError("You cannot have a subsection before a section!"); - } - else - { - subsubsectionNo = 0; - - if (macroId != ltSUBSECTIONSTAR) - subsectionNo ++; - - char *topicName = FindTopicName(GetNextChunk()); - SetCurrentSubsectionName(topicName); - NotifyParentHasChildren(2); - if (winHelpContents && winHelp && !InPopups()) - { - OutputCurrentSectionToString(wxBuffer); - WriteWinHelpContentsFileLine(topicName, wxBuffer, 3); - } - AddTexRef(topicName, NULL, SectionNameString, chapterNo, sectionNo, subsectionNo); - - if (winHelp) - { - SetCurrentOutputs(Sections, Subsections); - SetCurrentOutputs(Sections, Subsections); - if (!InPopups()) - fprintf(Sections, "\n{\\uldb "); - } - else - { - if ((macroId != ltSUBSECTIONSTAR) && (macroId != ltMEMBERSECTION) && - (macroId != ltFUNCTIONSECTION)) - { - SetCurrentOutput(Contents); - if (DocumentStyle == LATEX_REPORT) - fprintf(Contents, "\n\\pard\\tab\\tab %d.%d.%d\\tab ", chapterNo, sectionNo, subsectionNo); - else - fprintf(Contents, "\n\\pard\\tab %d.%d\\tab ", sectionNo, subsectionNo); - } else SetCurrentOutput(NULL); - } - if (startedSections) - { - if (winHelp) - { - if (!InPopups()) - fprintf(Subsections, "\\page\n"); - } - else - fprintf(Chapters, "\\par\n"); - } - startedSections = TRUE; - - if (winHelp) - fprintf(Subsections, "\n${\\footnote "); - - // Output to contents page - if (!InPopups()) - OutputCurrentSection(); - - if (winHelp) - { - if (!InPopups()) - fprintf(Sections, "}{\\v %s}\\par\\pard\n", topicName); - } - else if ((macroId != ltSUBSECTIONSTAR) && (macroId != ltMEMBERSECTION) && - (macroId != ltFUNCTIONSECTION)) - fprintf(Contents, "\\par\\pard\n"); - - SetCurrentOutput(winHelp ? Subsections : Chapters); - if (winHelp) - { - fprintf(Subsections, "}\n#{\\footnote %s}\n", topicName); - fprintf(Subsections, "+{\\footnote %s}\n", GetBrowseString()); - OutputSectionKeyword(Subsections); - GenerateKeywordsForTopic(topicName); - if (useUpButton && CurrentSectionName) - { - fprintf(Subsections, "!{\\footnote EnableButton(\"Up\");ChangeButtonBinding(\"Up\", \"JumpId(`%s.hlp', `%s')\")}\n", - FileNameFromPath(FileRoot), CurrentSectionName); - } - } - if (!winHelp && indexSubsections && useWord) - { - // Insert index entry for this subsection - TexOutput("{\\xe\\v {"); - OutputCurrentSection(); - TexOutput("}}"); - } - - if (!InPopups()) - { - char *styleCommand = ""; - if (!winHelp && useHeadingStyles && (macroId != ltSUBSECTIONSTAR)) - { - if (DocumentStyle == LATEX_ARTICLE) - styleCommand = "\\s2"; - else - styleCommand = "\\s3"; - } - char *keep = ""; - if (winHelp && !InPopups()) - keep = "\\keepn\\sa140\\sb140"; - - fprintf(winHelp ? Subsections : Chapters, "\\pard{%s%s", - keep, styleCommand); - - WriteHeadingStyle((winHelp ? Subsections : Chapters), - (DocumentStyle == LATEX_ARTICLE ? 2 : 3)); - fprintf(winHelp ? Subsections : Chapters, " "); - - if (!winHelp) - { - if ((macroId != ltSUBSECTIONSTAR) && (macroId != ltMEMBERSECTION) && - (macroId != ltFUNCTIONSECTION)) - { - if (DocumentStyle == LATEX_REPORT) - { - if (useWord) -// fprintf(Chapters, "{\\bkmkstart %s}%d.%d.%d{\\bkmkend %s}. ", topicName, chapterNo, sectionNo, subsectionNo, - fprintf(Chapters, "{\\bkmkstart %s}{\\bkmkend %s}", topicName, - topicName); - else - fprintf(Chapters, "%d.%d.%d. ", chapterNo, sectionNo, subsectionNo); - } - else - { - if (useWord) -// fprintf(Chapters, "{\\bkmkstart %s}%d.%d{\\bkmkend %s}. ", topicName, sectionNo, subsectionNo, - fprintf(Chapters, "{\\bkmkstart %s}{\\bkmkend %s}", topicName, - topicName); - else - fprintf(Chapters, "%d.%d. ", sectionNo, subsectionNo); - } - } - else if ( useWord ) - { - fprintf(Chapters, "{\\bkmkstart %s}{\\bkmkend %s}", topicName, topicName); - } - } - OutputCurrentSection(); // Repeat section header - TexOutput("\\par\\pard}\\par\n"); - } - issuedNewParagraph = 2; - } - } - break; - } - case ltSUBSUBSECTION: - case ltSUBSUBSECTIONSTAR: - { - if (!start) - { - if (winHelp && !Subsections) - { - OnError("You cannot have a subsubsection before a subsection!"); - } - else - { - if (macroId != ltSUBSUBSECTIONSTAR) - subsubsectionNo ++; - - char *topicName = FindTopicName(GetNextChunk()); - SetCurrentTopic(topicName); - NotifyParentHasChildren(3); - if (winHelpContents && winHelp) - { - OutputCurrentSectionToString(wxBuffer); - WriteWinHelpContentsFileLine(topicName, wxBuffer, 4); - } - AddTexRef(topicName, NULL, SectionNameString, chapterNo, sectionNo, subsectionNo, subsubsectionNo); - - if (winHelp) - { - SetCurrentOutputs(Subsections, Subsubsections); - fprintf(Subsections, "\n{\\uldb "); - } - else - { - if (macroId != ltSUBSUBSECTIONSTAR) - { - if (DocumentStyle == LATEX_ARTICLE) - { - SetCurrentOutput(Contents); - fprintf(Contents, "\n\\tab\\tab %d.%d.%d\\tab ", - sectionNo, subsectionNo, subsubsectionNo); - } - else - SetCurrentOutput(NULL); // Don't write it into the contents, or anywhere else - } - else - SetCurrentOutput(NULL); // Don't write it into the contents, or anywhere else - } - - if (startedSections) - { - if (winHelp) - fprintf(Subsubsections, "\\page\n"); - else - fprintf(Chapters, "\\par\n"); - } - - startedSections = TRUE; - - if (winHelp) - fprintf(Subsubsections, "\n${\\footnote "); - - // Output header to contents page - OutputCurrentSection(); - - if (winHelp) - fprintf(Subsections, "}{\\v %s}\\par\\pard\n", topicName); - else if ((DocumentStyle == LATEX_ARTICLE) && (macroId != ltSUBSUBSECTIONSTAR)) - fprintf(Contents, "\\par\\pard\n"); - - SetCurrentOutput(winHelp ? Subsubsections : Chapters); - if (winHelp) - { - fprintf(Subsubsections, "}\n#{\\footnote %s}\n", topicName); - fprintf(Subsubsections, "+{\\footnote %s}\n", GetBrowseString()); - OutputSectionKeyword(Subsubsections); - GenerateKeywordsForTopic(topicName); - if (useUpButton && CurrentSubsectionName) - { - fprintf(Subsubsections, "!{\\footnote EnableButton(\"Up\");ChangeButtonBinding(\"Up\", \"JumpId(`%s.hlp', `%s')\")}\n", - FileNameFromPath(FileRoot), CurrentSubsectionName); - } - } - if (!winHelp && indexSubsections && useWord) - { - // Insert index entry for this subsubsection - TexOutput("{\\xe\\v {"); - OutputCurrentSection(); - TexOutput("}}"); - } - - char *styleCommand = ""; - if (!winHelp && useHeadingStyles && (macroId != ltSUBSUBSECTIONSTAR)) - { - if (DocumentStyle == LATEX_ARTICLE) - styleCommand = "\\s3"; - else - styleCommand = "\\s4"; - } - char *keep = ""; - if (winHelp) - keep = "\\keepn\\sa140\\sb140"; - - fprintf(winHelp ? Subsubsections : Chapters, "\\pard{%s%s", - keep, styleCommand); - - WriteHeadingStyle((winHelp ? Subsubsections : Chapters), - (DocumentStyle == LATEX_ARTICLE ? 3 : 4)); - fprintf(winHelp ? Subsubsections : Chapters, " "); - - if (!winHelp) - { - if ((macroId != ltSUBSUBSECTIONSTAR)) - { - if (DocumentStyle == LATEX_ARTICLE) - { - if (useWord) -// fprintf(Chapters, "{\\bkmkstart %s}%d.%d.%d{\\bkmkend %s}. ", topicName, sectionNo, subsectionNo, subsubsectionNo, - fprintf(Chapters, "{\\bkmkstart %s}{\\bkmkend %s}", topicName, - topicName); - else - fprintf(Chapters, "%d.%d.%d. ", sectionNo, subsectionNo, subsubsectionNo); - } - else - { - if (useWord) -// fprintf(Chapters, "{\\bkmkstart %s}%d.%d.%d.%d{\\bkmkend %s}. ", topicName, chapterNo, sectionNo, subsectionNo, subsubsectionNo, - fprintf(Chapters, "{\\bkmkstart %s}{\\bkmkend %s}", topicName, - topicName); - else - fprintf(Chapters, "%d.%d.%d.%d. ", chapterNo, sectionNo, subsectionNo, subsubsectionNo); - } - } - else if ( useWord ) - { - fprintf(Chapters, "{\\bkmkstart %s}{\\bkmkend %s}", topicName, topicName); - } - } - OutputCurrentSection(); // Repeat section header - TexOutput("\\par\\pard}\\par\n"); - issuedNewParagraph = 2; -// if (winHelp) TexOutput("\\pard"); - } - } - break; - } - case ltCAPTION: - case ltCAPTIONSTAR: - { - if (!start) - { - char *topicName = FindTopicName(GetNextChunk()); - SetCurrentTopic(topicName); - - TexOutput("\\pard\\par"); - char figBuf[200]; - - if (inFigure) - { - figureNo ++; - - if (winHelp || !useWord) - { - if (DocumentStyle != LATEX_ARTICLE) - sprintf(figBuf, "%s %d.%d: ", FigureNameString, chapterNo, figureNo); - else - sprintf(figBuf, "%s %d: ", FigureNameString, figureNo); - } - else - { - sprintf(figBuf, "%s {\\field\\flddirty{\\*\\fldinst SEQ Figure \\\\* ARABIC }{\\fldrslt {\\bkmkstart %s}??{\\bkmkend %s}}}: ", - FigureNameString, topicName, topicName); - } - } - else - { - tableNo ++; - - if (winHelp || !useWord) - { - if (DocumentStyle != LATEX_ARTICLE) - sprintf(figBuf, "%s %d.%d: ", TableNameString, chapterNo, tableNo); - else - sprintf(figBuf, "%s %d: ", TableNameString, tableNo); - } - else - { - sprintf(figBuf, "%s {\\field\\flddirty{\\*\\fldinst SEQ Table \\\\* ARABIC }{\\fldrslt {\\bkmkstart %s}??{\\bkmkend %s}}}: ", - TableNameString, topicName, topicName); - } - } - - int n = (inTable ? tableNo : figureNo); - AddTexRef(topicName, NULL, NULL, - ((DocumentStyle != LATEX_ARTICLE) ? chapterNo : n), - ((DocumentStyle != LATEX_ARTICLE) ? n : 0)); - - if (winHelp) - TexOutput("\\qc{\\b "); - else - TexOutput("\\ql{\\b "); - TexOutput(figBuf); - - OutputCurrentSection(); - - TexOutput("}\\par\\pard\n"); - WriteEnvironmentStyles(); - } - break; - } - case ltFUNC: - case ltPFUNC: - { -// SetCurrentOutput(winHelp ? Subsections : Chapters); - if (start) - { - TexOutput("{"); - } - else - { - TexOutput("}\n"); - if (winHelp) - { - TexOutput("K{\\footnote {K} "); - suppressNameDecoration = TRUE; - TraverseChildrenFromChunk(currentMember); - suppressNameDecoration = FALSE; - TexOutput("}\n"); - } - if (!winHelp && useWord) - { - // Insert index entry for this function - TexOutput("{\\xe\\v {"); - suppressNameDecoration = TRUE; // Necessary so don't print "(\\bf" etc. - TraverseChildrenFromChunk(currentMember); - suppressNameDecoration = FALSE; - TexOutput("}}"); - } - } - break; - } - case ltCLIPSFUNC: - { -// SetCurrentOutput(winHelp ? Subsections : Chapters); - if (start) - { - TexOutput("{"); - } - else - { - TexOutput("}\n"); - if (winHelp) - { - TexOutput("K{\\footnote {K} "); - suppressNameDecoration = TRUE; // Necessary so don't print "(\\bf" etc. - TraverseChildrenFromChunk(currentMember); - suppressNameDecoration = FALSE; - TexOutput("}\n"); - } - if (!winHelp && useWord) - { - // Insert index entry for this function - TexOutput("{\\xe\\v {"); - suppressNameDecoration = TRUE; // Necessary so don't print "(\\bf" etc. - TraverseChildrenFromChunk(currentMember); - suppressNameDecoration = FALSE; - TexOutput("}}"); - } - } - break; - } - case ltMEMBER: - { -// SetCurrentOutput(winHelp ? Subsections : Chapters); - if (start) - { - TexOutput("{\\b "); - } - else - { - TexOutput("}\n"); - if (winHelp) - { - TexOutput("K{\\footnote {K} "); - TraverseChildrenFromChunk(currentMember); - TexOutput("}\n"); - } - if (!winHelp && useWord) - { - // Insert index entry for this function - TexOutput("{\\xe\\v {"); - suppressNameDecoration = TRUE; // Necessary so don't print "(\\bf" etc. - TraverseChildrenFromChunk(currentMember); - suppressNameDecoration = FALSE; - TexOutput("}}"); - } - } - break; - } - case ltDOCUMENT: - { - if (start) - SetCurrentOutput(Chapters); - break; - } - case ltTABLEOFCONTENTS: - { - if (start) - { - if (!winHelp && useWord) - { - // Insert Word for Windows table of contents - TexOutput("\\par\\pard\\pgnrestart\\sect\\titlepg"); - - // In linear RTF, same as chapter headings. - sprintf(buf, "{\\b\\fs%d %s}\\par\\par\\pard\n\n", chapterFont*2, ContentsNameString); - - TexOutput(buf); - sprintf(buf, "{\\field{\\*\\fldinst TOC \\\\o \"1-%d\" }{\\fldrslt PRESS F9 TO REFORMAT CONTENTS}}\n", contentsDepth); - TexOutput(buf); -// TexOutput("\\sect\\sectd"); - } - else - { - FILE *fd = fopen(ContentsName, "r"); - if (fd) - { - int ch = getc(fd); - while (ch != EOF) - { - putc(ch, Chapters); - ch = getc(fd); - } - fclose(fd); - } - else - { - TexOutput("{\\i RUN TEX2RTF AGAIN FOR CONTENTS PAGE}\\par\n"); - OnInform("Run Tex2RTF again to include contents page."); - } - } - } - break; - } - case ltVOID: - { -// if (start) -// TexOutput("{\\b void}"); - break; - } - case ltHARDY: - { - if (start) - TexOutput("{\\scaps HARDY}"); - break; - } - case ltWXCLIPS: - { - if (start) - TexOutput("wxCLIPS"); - break; - } - case ltSPECIALAMPERSAND: - { - if (start) - { - if (inTabular) - TexOutput("\\cell "); - else - TexOutput("&"); - } - break; - } - case ltSPECIALTILDE: - { - if (start) - { - if (inVerbatim) - TexOutput("~"); - else - TexOutput(" "); - } - break; - } - case ltBACKSLASHCHAR: - { - if (start) - { - if (inTabular) - { -// TexOutput("\\cell\\row\\trowd\\trgaph108\\trleft-108\n"); - TexOutput("\\cell\\row\\trowd\\trgaph108\n"); - int currentWidth = 0; - for (int i = 0; i < noColumns; i++) - { - currentWidth += TableData[i].width; - if (TableData[i].rightBorder) - TexOutput("\\clbrdrr\\brdrs\\brdrw15"); - - if (TableData[i].leftBorder) - TexOutput("\\clbrdrl\\brdrs\\brdrw15"); - - sprintf(buf, "\\cellx%d", currentWidth); - TexOutput(buf); - } - TexOutput("\\pard\\intbl\n"); - } - else - TexOutput("\\line\n"); - } - break; - } - case ltRANGLEBRA: - { - if (start) - TexOutput("\tab "); - break; - } - case ltRTFSP: // Explicit space, RTF only - { - if (start) - TexOutput(" "); - break; - } - case ltITEMIZE: - case ltENUMERATE: - case ltDESCRIPTION: - { - if (start) - { - if (indentLevel > 0) - { - TexOutput("\\par\\par\n"); - issuedNewParagraph = 2; - } - else - { - // Top-level list: issue a new paragraph if we haven't - // just done so - if (!issuedNewParagraph) - { - TexOutput("\\par\\pard"); - WriteEnvironmentStyles(); - issuedNewParagraph = 1; - } - else issuedNewParagraph = 0; - } - indentLevel ++; - TexOutput("\\fi0\n"); - int listType; - if (macroId == ltENUMERATE) - listType = LATEX_ENUMERATE; - else if (macroId == ltITEMIZE) - listType = LATEX_ITEMIZE; - else - listType = LATEX_DESCRIPTION; - - int oldIndent = 0; - wxNode *node = itemizeStack.First(); - if (node) - oldIndent = ((ItemizeStruc *)node->Data())->indentation; - - int indentSize1 = oldIndent + 20*labelIndentTab; - int indentSize2 = oldIndent + 20*itemIndentTab; - - ItemizeStruc *struc = new ItemizeStruc(listType, indentSize2, indentSize1); - itemizeStack.Insert(struc); - - sprintf(buf, "\\tx%d\\tx%d\\li%d", indentSize1, indentSize2, indentSize2); - PushEnvironmentStyle(buf); - } - else - { - currentItemSep = 8; // Reset to the default - indentLevel --; - PopEnvironmentStyle(); - - if (itemizeStack.First()) - { - ItemizeStruc *struc = (ItemizeStruc *)itemizeStack.First()->Data(); - delete struc; - delete itemizeStack.First(); - } -/* Change 18/7/97 - don't know why we wish to do this - if (itemizeStack.Number() == 0) - { - OnMacro(ltPAR, 0, TRUE); - OnMacro(ltPAR, 0, FALSE); - issuedNewParagraph = 2; - } -*/ - } - break; - } - case ltTWOCOLLIST: - { - if (start) - { - indentLevel ++; - int oldIndent = 0; - wxNode *node = itemizeStack.First(); - if (node) - oldIndent = ((ItemizeStruc *)node->Data())->indentation; - - int indentSize = oldIndent + TwoColWidthA; - - ItemizeStruc *struc = new ItemizeStruc(LATEX_TWOCOL, indentSize); - itemizeStack.Insert(struc); - -// sprintf(buf, "\\tx%d\\li%d\\ri%d", indentSize, indentSize, TwoColWidthA+TwoColWidthB+oldIndent); - sprintf(buf, "\\tx%d\\li%d", indentSize, indentSize); - PushEnvironmentStyle(buf); - } - else - { - indentLevel --; - PopEnvironmentStyle(); - if (itemizeStack.First()) - { - ItemizeStruc *struc = (ItemizeStruc *)itemizeStack.First()->Data(); - delete struc; - delete itemizeStack.First(); - } -/* - // JACS June 1997 - TexOutput("\\pard\n"); - WriteEnvironmentStyles(); -*/ -/* why do we need this? */ - if (itemizeStack.Number() == 0) - { - issuedNewParagraph = 0; - OnMacro(ltPAR, 0, TRUE); - OnMacro(ltPAR, 0, FALSE); - } - } - break; - } - case ltITEM: - { - wxNode *node = itemizeStack.First(); - if (node) - { - ItemizeStruc *struc = (ItemizeStruc *)node->Data(); - if (!start) - { - struc->currentItem += 1; - char indentBuf[60]; - - int indentSize1 = struc->labelIndentation; - int indentSize2 = struc->indentation; - - TexOutput("\n"); - if (struc->currentItem > 1) - { - if (currentItemSep > 0) - TexOutput("\\par"); - - TexOutput("\\par"); -// WriteEnvironmentStyles(); - } - - sprintf(buf, "\\tx%d\\tx%d\\li%d\\fi-%d\n", indentSize1, indentSize2, - indentSize2, 20*itemIndentTab); - TexOutput(buf); - - switch (struc->listType) - { - case LATEX_ENUMERATE: - { - if (descriptionItemArg) - { - TexOutput("\\tab{ "); - TraverseChildrenFromChunk(descriptionItemArg); - TexOutput("}\\tab"); - descriptionItemArg = NULL; - } - else - { - sprintf(indentBuf, "\\tab{\\b %d.}\\tab", struc->currentItem); - TexOutput(indentBuf); - } - break; - } - case LATEX_ITEMIZE: - { - if (descriptionItemArg) - { - TexOutput("\\tab{ "); - TraverseChildrenFromChunk(descriptionItemArg); - TexOutput("}\\tab"); - descriptionItemArg = NULL; - } - else - { - if (bulletFile && winHelp) - { - if (winHelpVersion > 3) // Transparent bitmap - sprintf(indentBuf, "\\tab\\{bmct %s\\}\\tab", bulletFile); - else - sprintf(indentBuf, "\\tab\\{bmc %s\\}\\tab", bulletFile); - } - else if (winHelp) - sprintf(indentBuf, "\\tab{\\b o}\\tab"); - else - sprintf(indentBuf, "\\tab{\\f1\\'b7}\\tab"); - TexOutput(indentBuf); - } - break; - } - default: - case LATEX_DESCRIPTION: - { - if (descriptionItemArg) - { - TexOutput("\\tab{\\b "); - TraverseChildrenFromChunk(descriptionItemArg); - TexOutput("} "); - descriptionItemArg = NULL; - } - break; - } - } - } - } - break; - } - case ltTWOCOLITEM: - case ltTWOCOLITEMRULED: - { - wxNode *node = itemizeStack.First(); - if (node) - { - ItemizeStruc *struc = (ItemizeStruc *)node->Data(); - if (start) - { - struc->currentItem += 1; - - int indentSize = struc->indentation; - int oldIndent = 0; - wxNode *node2 = NULL; - if (itemizeStack.Number() > 1) // TODO: do I actually mean Nth(0) here?? - node2 = itemizeStack.Nth(1); - if (node2) - oldIndent = ((ItemizeStruc *)node2->Data())->indentation; - - TexOutput("\n"); - if (struc->currentItem > 1) - { - if (currentItemSep > 0) - TexOutput("\\par"); - -// WriteEnvironmentStyles(); - } - -// sprintf(buf, "\\tx%d\\li%d\\fi-%d\\ri%d\n", TwoColWidthA, -// TwoColWidthA, TwoColWidthA, TwoColWidthA+TwoColWidthB+oldIndent); -/* - sprintf(buf, "\\tx%d\\li%d\\fi-%d\n", TwoColWidthA, - TwoColWidthA, TwoColWidthA); -*/ - sprintf(buf, "\\tx%d\\li%d\\fi-%d\n", TwoColWidthA + oldIndent, - TwoColWidthA + oldIndent, TwoColWidthA); - TexOutput(buf); - } - } - break; - } - case ltVERBATIM: - case ltVERB: - { - if (start) - { - if (macroId == ltVERBATIM) - { - if (!issuedNewParagraph) - { - TexOutput("\\par\\pard"); - WriteEnvironmentStyles(); - issuedNewParagraph = 1; - } - else issuedNewParagraph = 0; - } - sprintf(buf, "{\\f3\\fs20 "); - TexOutput(buf); - } - else - { - TexOutput("}"); - if (macroId == ltVERBATIM) - { - TexOutput("\\pard\n"); -// issuedNewParagraph = 1; - WriteEnvironmentStyles(); - } - } - break; - } - case ltCENTERLINE: - case ltCENTER: - { - if (start) - { - TexOutput("\\fi0\\qc "); - forbidParindent ++; - PushEnvironmentStyle("\\qc"); - } - else - { - TexOutput("\\par\\pard\n"); - issuedNewParagraph = 1; - forbidParindent --; - PopEnvironmentStyle(); - WriteEnvironmentStyles(); - } - break; - } - case ltFLUSHLEFT: - { - if (start) - { - TexOutput("\\fi0\\ql "); - forbidParindent ++; - PushEnvironmentStyle("\\ql"); - } - else - { - TexOutput("\\par\\pard\n"); - issuedNewParagraph = 1; - forbidParindent --; - PopEnvironmentStyle(); - WriteEnvironmentStyles(); - } - break; - } - case ltFLUSHRIGHT: - { - if (start) - { - TexOutput("\\fi0\\qr "); - forbidParindent ++; - PushEnvironmentStyle("\\qr"); - } - else - { - TexOutput("\\par\\pard\n"); - issuedNewParagraph = 1; - forbidParindent --; - PopEnvironmentStyle(); - WriteEnvironmentStyles(); - } - break; - } - case ltSMALL: - case ltFOOTNOTESIZE: - { - if (start) - { - sprintf(buf, "{\\fs%d\n", smallFont*2); - TexOutput(buf); - } - else TexOutput("}\n"); - break; - } - case ltTINY: - case ltSCRIPTSIZE: - { - if (start) - { - sprintf(buf, "{\\fs%d\n", tinyFont*2); - TexOutput(buf); - } - else TexOutput("}\n"); - break; - } - case ltNORMALSIZE: - { - if (start) - { - sprintf(buf, "{\\fs%d\n", normalFont*2); - TexOutput(buf); - } - else TexOutput("}\n"); - break; - } - case ltlarge: - { - if (start) - { - sprintf(buf, "{\\fs%d\n", largeFont1*2); - TexOutput(buf); - } - else TexOutput("}\n"); - break; - } - case ltLarge: - { - if (start) - { - sprintf(buf, "{\\fs%d\n", LargeFont2*2); - TexOutput(buf); - } - else TexOutput("}\n"); - break; - } - case ltLARGE: - { - if (start) - { - sprintf(buf, "{\\fs%d\n", LARGEFont3*2); - TexOutput(buf); - } - else TexOutput("}\n"); - break; - } - case lthuge: - { - if (start) - { - sprintf(buf, "{\\fs%d\n", hugeFont1*2); - TexOutput(buf); - } - else TexOutput("}\n"); - break; - } - case ltHuge: - { - if (start) - { - sprintf(buf, "{\\fs%d\n", HugeFont2*2); - TexOutput(buf); - } - else TexOutput("}\n"); - break; - } - case ltHUGE: - { - if (start) - { - sprintf(buf, "{\\fs%d\n", HUGEFont3*2); - TexOutput(buf); - } - else TexOutput("}\n"); - break; - } - case ltTEXTBF: - case ltBFSERIES: - case ltBF: - { - if (start) - { - TexOutput("{\\b "); - } - else TexOutput("}"); - break; - } - case ltUNDERLINE: - { - if (start) - { - TexOutput("{\\ul "); - } - else TexOutput("}"); - break; - } - case ltTEXTIT: - case ltITSHAPE: - case ltIT: - case ltEMPH: - case ltEM: - { - if (start) - { - TexOutput("{\\i "); - } - else TexOutput("}"); - break; - } - // Roman font: do nothing. Should really switch between - // fonts. - case ltTEXTRM: - case ltRMFAMILY: - case ltRM: - { -/* - if (start) - { - TexOutput("{\\plain "); - } - else TexOutput("}"); - */ - break; - } - // Medium-weight font. Unbolden... - case ltMDSERIES: - { - if (start) - { - TexOutput("{\\b0 "); - } - else TexOutput("}"); - break; - } - // Upright (un-italic or slant) - case ltUPSHAPE: - { - if (start) - { - TexOutput("{\\i0 "); - } - else TexOutput("}"); - break; - } - case ltTEXTSC: - case ltSCSHAPE: - case ltSC: - { - if (start) - { - TexOutput("{\\scaps "); - } - else TexOutput("}"); - break; - } - case ltTEXTTT: - case ltTTFAMILY: - case ltTT: - { - if (start) - { - TexOutput("{\\f3 "); - } - else TexOutput("}"); - break; - } - case ltLBRACE: - { - if (start) - TexOutput("\\{"); - break; - } - case ltRBRACE: - { - if (start) - TexOutput("\\}"); - break; - } - case ltBACKSLASH: - { - if (start) - TexOutput("\\\\"); - break; - } - case ltPAR: - { - if (start) - { - if ( issuedNewParagraph == 0 ) - { - TexOutput("\\par\\pard"); - issuedNewParagraph ++; - - // Extra par if parskip is more than zero (usually looks best.) - if (!inTabular && (ParSkip > 0)) - { - TexOutput("\\par"); - issuedNewParagraph ++; - } - WriteEnvironmentStyles(); - } - // 1 is a whole paragraph if ParSkip == 0, - // half a paragraph if ParSkip > 0 - else if ( issuedNewParagraph == 1 ) - { - // Don't need a par at all if we've already had one, - // and ParSkip == 0. - - // Extra par if parskip is more than zero (usually looks best.) - if (!inTabular && (ParSkip > 0)) - { - TexOutput("\\par"); - issuedNewParagraph ++; - } - WriteEnvironmentStyles(); - } -/* - if (!issuedNewParagraph || (issuedNewParagraph > 1)) - { - TexOutput("\\par\\pard"); - - // Extra par if parskip is more than zero (usually looks best.) - if (!inTabular && (ParSkip > 0)) - TexOutput("\\par"); - WriteEnvironmentStyles(); - } -*/ - - TexOutput("\n"); - } - break; - } - case ltNEWPAGE: - { - // In Windows Help, no newpages until we've started some chapters or sections - if (!(winHelp && !startedSections)) - if (start) - TexOutput("\\page\n"); - break; - } - case ltMAKETITLE: - { - if (start && DocumentTitle) - { - TexOutput("\\par\\pard"); - if (!winHelp) - TexOutput("\\par"); - sprintf(buf, "\\qc{\\fs%d\\b ", titleFont*2); - TexOutput(buf); - TraverseChildrenFromChunk(DocumentTitle); - TexOutput("}\\par\\pard\n"); - - if (DocumentAuthor) - { - if (!winHelp) - TexOutput("\\par"); - sprintf(buf, "\\par\\qc{\\fs%d ", authorFont*2); - TexOutput(buf); - TraverseChildrenFromChunk(DocumentAuthor); - TexOutput("}"); - TexOutput("\\par\\pard\n"); - } - if (DocumentDate) - { - TexOutput("\\par"); - sprintf(buf, "\\qc{\\fs%d ", authorFont*2); - TexOutput(buf); - TraverseChildrenFromChunk(DocumentDate); - TexOutput("}\\par\\pard\n"); - } - // If linear RTF, we want this titlepage to be in a separate - // section with its own (blank) header and footer - if (!winHelp && (DocumentStyle != LATEX_ARTICLE)) - { - TexOutput("{\\header }{\\footer }\n"); - // Not sure about this: we get too many sections. -// TexOutput("\\sect"); - } - } - break; - } - case ltADDCONTENTSLINE: - { - if (!start) - { - if (contentsLineSection && contentsLineValue) - { - if (strcmp(contentsLineSection, "chapter") == 0) - { - fprintf(Contents, "\\par\n{\\b %s}\\par\n", contentsLineValue); - } - else if (strcmp(contentsLineSection, "section") == 0) - { - if (DocumentStyle != LATEX_ARTICLE) - fprintf(Contents, "\n\\tab%s\\par\n", contentsLineValue); - else - fprintf(Contents, "\\par\n{\\b %s}\\par\n", contentsLineValue); - } - } - } - break; - } - case ltHRULE: - { - if (start) - { - TexOutput("\\brdrb\\brdrs\\par\\pard\n"); - issuedNewParagraph = 1; - WriteEnvironmentStyles(); - } - break; - } - case ltRULE: - { - if (start) - { - TexOutput("\\brdrb\\brdrs\\par\\pard\n"); - issuedNewParagraph = 1; - WriteEnvironmentStyles(); - } - break; - } - case ltHLINE: - { - if (start) - ruleTop ++; - break; - } - case ltNUMBEREDBIBITEM: - { - if (start) - TexOutput("\\li260\\fi-260 "); // Indent from 2nd line - else - TexOutput("\\par\\pard\\par\n\n"); - break; - } - case ltTHEPAGE: - { - if (start) - { - TexOutput("{\\field{\\*\\fldinst PAGE \\\\* MERGEFORMAT }{\\fldrslt 1}}"); - } - break; - } - case ltTHECHAPTER: - { - if (start) - { -// TexOutput("{\\field{\\*\\fldinst SECTION \\\\* MERGEFORMAT }{\\fldrslt 1}}"); - sprintf(buf, "%d", chapterNo); - TexOutput(buf); - } - break; - } - case ltTHESECTION: - { - if (start) - { -// TexOutput("{\\field{\\*\\fldinst SECTION \\\\* MERGEFORMAT }{\\fldrslt 1}}"); - sprintf(buf, "%d", sectionNo); - TexOutput(buf); - } - break; - } - case ltTWOCOLUMN: - { - if (!start && !winHelp) - { - TexOutput("\\cols2\n"); - } - break; - } - case ltONECOLUMN: - { - if (!start && !winHelp) - { - TexOutput("\\cols1\n"); - } - break; - } - case ltPRINTINDEX: - { - if (start && useWord && !winHelp) - { - FakeCurrentSection("Index"); - OnMacro(ltPAR, 0, TRUE); - OnMacro(ltPAR, 0, FALSE); - TexOutput("\\par{\\field{\\*\\fldinst INDEX \\\\h \"\\emdash A\\emdash \"\\\\c \"2\"}{\\fldrslt PRESS F9 TO REFORMAT INDEX}}\n"); - } - break; - } - case ltLISTOFFIGURES: - { - if (start && useWord && !winHelp) - { - FakeCurrentSection(FiguresNameString, FALSE); - OnMacro(ltPAR, 0, TRUE); - OnMacro(ltPAR, 0, FALSE); - OnMacro(ltPAR, 0, TRUE); - OnMacro(ltPAR, 0, FALSE); - char buf[200]; - sprintf(buf, "{\\field\\fldedit{\\*\\fldinst TOC \\\\c \"%s\" }{\\fldrslt PRESS F9 TO REFORMAT LIST OF FIGURES}}\n", - FigureNameString); - TexOutput(buf); - } - break; - } - case ltLISTOFTABLES: - { - if (start && useWord && !winHelp) - { - FakeCurrentSection(TablesNameString, FALSE); - OnMacro(ltPAR, 0, TRUE); - OnMacro(ltPAR, 0, FALSE); - OnMacro(ltPAR, 0, TRUE); - OnMacro(ltPAR, 0, FALSE); - char buf[200]; - sprintf(buf, "{\\field\\fldedit{\\*\\fldinst TOC \\\\c \"%s\" }{\\fldrslt PRESS F9 TO REFORMAT LIST OF TABLES}}\n", - TablesNameString); - TexOutput(buf); - } - break; - } - // Symbols - case ltALPHA: - if (start) TexOutput("{\\f1\\'61}"); - break; - case ltBETA: - if (start) TexOutput("{\\f1\\'62}"); - break; - case ltGAMMA: - if (start) TexOutput("{\\f1\\'63}"); - break; - case ltDELTA: - if (start) TexOutput("{\\f1\\'64}"); - break; - case ltEPSILON: - case ltVAREPSILON: - if (start) TexOutput("{\\f1\\'65}"); - break; - case ltZETA: - if (start) TexOutput("{\\f1\\'7A}"); - break; - case ltETA: - if (start) TexOutput("{\\f1\\'68}"); - break; - case ltTHETA: - case ltVARTHETA: - if (start) TexOutput("{\\f1\\'71}"); - break; - case ltIOTA: - if (start) TexOutput("{\\f1\\'69}"); - break; - case ltKAPPA: - if (start) TexOutput("{\\f1\\'6B}"); - break; - case ltLAMBDA: - if (start) TexOutput("{\\f1\\'6C}"); - break; - case ltMU: - if (start) TexOutput("{\\f1\\'6D}"); - break; - case ltNU: - if (start) TexOutput("{\\f1\\'6E}"); - break; - case ltXI: - if (start) TexOutput("{\\f1\\'78}"); - break; - case ltPI: - if (start) TexOutput("{\\f1\\'70}"); - break; - case ltVARPI: - if (start) TexOutput("{\\f1\\'76}"); - break; - case ltRHO: - case ltVARRHO: - if (start) TexOutput("{\\f1\\'72}"); - break; - case ltSIGMA: - if (start) TexOutput("{\\f1\\'73}"); - break; - case ltVARSIGMA: - if (start) TexOutput("{\\f1\\'56}"); - break; - case ltTAU: - if (start) TexOutput("{\\f1\\'74}"); - break; - case ltUPSILON: - if (start) TexOutput("{\\f1\\'75}"); - break; - case ltPHI: - case ltVARPHI: - if (start) TexOutput("{\\f1\\'66}"); - break; - case ltCHI: - if (start) TexOutput("{\\f1\\'63}"); - break; - case ltPSI: - if (start) TexOutput("{\\f1\\'79}"); - break; - case ltOMEGA: - if (start) TexOutput("{\\f1\\'77}"); - break; - case ltCAP_GAMMA: - if (start) TexOutput("{\\f1\\'47}"); - break; - case ltCAP_DELTA: - if (start) TexOutput("{\\f1\\'44}"); - break; - case ltCAP_THETA: - if (start) TexOutput("{\\f1\\'51}"); - break; - case ltCAP_LAMBDA: - if (start) TexOutput("{\\f1\\'4C}"); - break; - case ltCAP_XI: - if (start) TexOutput("{\\f1\\'58}"); - break; - case ltCAP_PI: - if (start) TexOutput("{\\f1\\'50}"); - break; - case ltCAP_SIGMA: - if (start) TexOutput("{\\f1\\'53}"); - break; - case ltCAP_UPSILON: - if (start) TexOutput("{\\f1\\'54}"); - break; - case ltCAP_PHI: - if (start) TexOutput("{\\f1\\'46}"); - break; - case ltCAP_PSI: - if (start) TexOutput("{\\f1\\'59}"); - break; - case ltCAP_OMEGA: - if (start) TexOutput("{\\f1\\'57}"); - break; - // Binary operation symbols - case ltLE: - case ltLEQ: - if (start) TexOutput("{\\f1\\'A3}"); - break; - case ltLL: - if (start) TexOutput("<<"); - break; - case ltSUBSET: - if (start) TexOutput("{\\f1\\'CC}"); - break; - case ltSUBSETEQ: - if (start) TexOutput("{\\f1\\'CD}"); - break; - case ltIN: - if (start) TexOutput("{\\f1\\'CE}"); - break; - case ltGE: - case ltGEQ: - if (start) TexOutput("{\\f1\\'B3}"); - break; - case ltGG: - if (start) TexOutput(">>"); - break; - case ltSUPSET: - if (start) TexOutput("{\\f1\\'C9}"); - break; - case ltSUPSETEQ: - if (start) TexOutput("{\\f1\\'CD}"); - break; - case ltNI: - if (start) TexOutput("{\\f1\\'27}"); - break; - case ltPERP: - if (start) TexOutput("{\\f1\\'5E}"); - break; - case ltNEQ: - if (start) TexOutput("{\\f1\\'B9}"); - break; - case ltAPPROX: - if (start) TexOutput("{\\f1\\'BB}"); - break; - case ltCONG: - if (start) TexOutput("{\\f1\\'40}"); - break; - case ltEQUIV: - if (start) TexOutput("{\\f1\\'BA}"); - break; - case ltPROPTO: - if (start) TexOutput("{\\f1\\'B5}"); - break; - case ltSIM: - if (start) TexOutput("{\\f1\\'7E}"); - break; - case ltSMILE: - if (start) TexOutput("{\\f4\\'4A}"); - break; - case ltFROWN: - if (start) TexOutput("{\\f4\\'4C}"); - break; - case ltMID: - if (start) TexOutput("|"); - break; - - // Negated relation symbols - case ltNOTEQ: - if (start) TexOutput("{\\f1\\'B9}"); - break; - case ltNOTIN: - if (start) TexOutput("{\\f1\\'CF}"); - break; - case ltNOTSUBSET: - if (start) TexOutput("{\\f1\\'CB}"); - break; - - // Arrows - case ltLEFTARROW: - if (start) TexOutput("{\\f1\\'AC}"); - break; - case ltLEFTARROW2: - if (start) TexOutput("{\\f1\\'DC}"); - break; - case ltRIGHTARROW: - if (start) TexOutput("{\\f1\\'AE}"); - break; - case ltRIGHTARROW2: - if (start) TexOutput("{\\f1\\'DE}"); - break; - case ltLEFTRIGHTARROW: - if (start) TexOutput("{\\f1\\'AB}"); - break; - case ltLEFTRIGHTARROW2: - if (start) TexOutput("{\\f1\\'DB}"); - break; - case ltUPARROW: - if (start) TexOutput("{\\f1\\'AD}"); - break; - case ltUPARROW2: - if (start) TexOutput("{\\f1\\'DD}"); - break; - case ltDOWNARROW: - if (start) TexOutput("{\\f1\\'AF}"); - break; - case ltDOWNARROW2: - if (start) TexOutput("{\\f1\\'DF}"); - break; - - // Miscellaneous symbols - case ltALEPH: - if (start) TexOutput("{\\f1\\'CO}"); - break; - case ltWP: - if (start) TexOutput("{\\f1\\'C3}"); - break; - case ltRE: - if (start) TexOutput("{\\f1\\'C2}"); - break; - case ltIM: - if (start) TexOutput("{\\f1\\'C1}"); - break; - case ltEMPTYSET: - if (start) TexOutput("{\\f1\\'C6}"); - break; - case ltNABLA: - if (start) TexOutput("{\\f1\\'D1}"); - break; - case ltSURD: - if (start) TexOutput("{\\f1\\'D6}"); - break; - case ltPARTIAL: - if (start) TexOutput("{\\f1\\'B6}"); - break; - case ltBOT: - if (start) TexOutput("{\\f1\\'5E}"); - break; - case ltFORALL: - if (start) TexOutput("{\\f1\\'22}"); - break; - case ltEXISTS: - if (start) TexOutput("{\\f1\\'24}"); - break; - case ltNEG: - if (start) TexOutput("{\\f1\\'D8}"); - break; - case ltSHARP: - if (start) TexOutput("{\\f1\\'23}"); - break; - case ltANGLE: - if (start) TexOutput("{\\f1\\'D0}"); - break; - case ltTRIANGLE: - if (start) TexOutput("{\\f5\\'73}"); - break; - case ltCLUBSUIT: - if (start) TexOutput("{\\f5\\'A8}"); - break; - case ltDIAMONDSUIT: - if (start) TexOutput("{\\f5\\'A9}"); - break; - case ltHEARTSUIT: - if (start) TexOutput("{\\f5\\'AA}"); - break; - case ltSPADESUIT: - if (start) TexOutput("{\\f5\\'AB}"); - break; - case ltINFTY: - if (start) TexOutput("{\\f1\\'A5}"); - break; - case ltCOPYRIGHT: - if (start) TexOutput("{\\f0\\'A9}"); - break; - case ltREGISTERED: - if (start) TexOutput("{\\f0\\'AE}"); - break; - case ltPM: - if (start) TexOutput("{\\f1\\'B1}"); - break; - case ltMP: - if (start) TexOutput("{\\f1\\'B1}"); - break; - case ltTIMES: - if (start) TexOutput("{\\f1\\'B4}"); - break; - case ltDIV: - if (start) TexOutput("{\\f1\\'B8}"); - break; - case ltCDOT: - if (start) TexOutput("{\\f1\\'D7}"); - break; - case ltAST: - if (start) TexOutput("{\\f1\\'2A}"); - break; - case ltSTAR: - if (start) TexOutput("{\\f5\\'AB}"); - break; - case ltCAP: - if (start) TexOutput("{\\f1\\'C7}"); - break; - case ltCUP: - if (start) TexOutput("{\\f1\\'C8}"); - break; - case ltVEE: - if (start) TexOutput("{\\f1\\'DA}"); - break; - case ltWEDGE: - if (start) TexOutput("{\\f1\\'D9}"); - break; - case ltCIRC: - if (start) TexOutput("{\\f1\\'B0}"); - break; - case ltBULLET: - if (start) TexOutput("{\\f1\\'B7}"); - break; - case ltDIAMOND: - if (start) TexOutput("{\\f1\\'E0}"); - break; - case ltBOX: - if (start) TexOutput("{\\f1\\'C6}"); - break; - case ltDIAMOND2: - if (start) TexOutput("{\\f1\\'E0}"); - break; - case ltBIGTRIANGLEDOWN: - if (start) TexOutput("{\\f1\\'D1}"); - break; - case ltOPLUS: - if (start) TexOutput("{\\f1\\'C5}"); - break; - case ltOTIMES: - if (start) TexOutput("{\\f1\\'C4}"); - break; - case ltSS: - if (start) TexOutput("{\\'DF}"); - break; - case ltFIGURE: - { - if (start) inFigure = TRUE; - else inFigure = FALSE; - break; - } - case ltTABLE: - { - if (start) inTable = TRUE; - else inTable = FALSE; - break; - } - default: - { - DefaultOnMacro(macroId, no_args, start); - break; - } - } -} - -// Called on start/end of argument examination -bool RTFOnArgument(int macroId, int arg_no, bool start) -{ - char buf[300]; - switch (macroId) - { - case ltCHAPTER: - case ltCHAPTERSTAR: - case ltCHAPTERHEADING: - case ltSECTION: - case ltSECTIONSTAR: - case ltSECTIONHEADING: - case ltSUBSECTION: - case ltSUBSECTIONSTAR: - case ltSUBSUBSECTION: - case ltSUBSUBSECTIONSTAR: - case ltGLOSS: - case ltMEMBERSECTION: - case ltFUNCTIONSECTION: - case ltCAPTION: - case ltCAPTIONSTAR: - { - if (!start && (arg_no == 1)) - currentSection = GetArgChunk(); - return FALSE; - break; - } - case ltFUNC: - { - if (start && (arg_no == 1)) - TexOutput("\\pard\\li600\\fi-600{\\b "); - - if (!start && (arg_no == 1)) - TexOutput("} "); - - if (start && (arg_no == 2)) - { - if (!suppressNameDecoration) TexOutput("{\\b "); - currentMember = GetArgChunk(); - } - if (!start && (arg_no == 2)) - { - if (!suppressNameDecoration) TexOutput("}"); - } - - if (start && (arg_no == 3)) - TexOutput("("); - if (!start && (arg_no == 3)) - { -// TexOutput(")\\li0\\fi0"); -// TexOutput(")\\par\\pard\\li0\\fi0"); -// issuedNewParagraph = 1; - TexOutput(")"); - WriteEnvironmentStyles(); - } - break; - } - case ltCLIPSFUNC: - { - if (start && (arg_no == 1)) - TexOutput("\\pard\\li260\\fi-260{\\b "); - if (!start && (arg_no == 1)) - TexOutput("} "); - - if (start && (arg_no == 2)) - { - if (!suppressNameDecoration) TexOutput("({\\b "); - currentMember = GetArgChunk(); - } - if (!start && (arg_no == 2)) - { - if (!suppressNameDecoration) TexOutput("}"); - } - - if (!start && (arg_no == 3)) - { - TexOutput(")\\li0\\fi0"); - WriteEnvironmentStyles(); - } - break; - } - case ltPFUNC: - { - if (start && (arg_no == 1)) - TexOutput("\\pard\\li260\\fi-260"); - - if (!start && (arg_no == 1)) - TexOutput(" "); - - if (start && (arg_no == 2)) - TexOutput("(*"); - if (!start && (arg_no == 2)) - TexOutput(")"); - - if (start && (arg_no == 2)) - currentMember = GetArgChunk(); - - if (start && (arg_no == 3)) - TexOutput("("); - if (!start && (arg_no == 3)) - { - TexOutput(")\\li0\\fi0"); - WriteEnvironmentStyles(); - } - break; - } - case ltPARAM: - { - if (start && (arg_no == 1)) - TexOutput("{\\b "); - if (!start && (arg_no == 1)) - TexOutput("}"); - if (start && (arg_no == 2)) - { - TexOutput("{\\i "); - } - if (!start && (arg_no == 2)) - { - TexOutput("}"); - } - break; - } - case ltCPARAM: - { - if (start && (arg_no == 1)) - TexOutput("{\\b "); - if (!start && (arg_no == 1)) - TexOutput("} "); // This is the difference from param - one space! - if (start && (arg_no == 2)) - { - TexOutput("{\\i "); - } - if (!start && (arg_no == 2)) - { - TexOutput("}"); - } - break; - } - case ltMEMBER: - { - if (!start && (arg_no == 1)) - TexOutput(" "); - - if (start && (arg_no == 2)) - currentMember = GetArgChunk(); - break; - } - case ltREF: - { - if (start) - { - char *sec = NULL; - char *secName = NULL; - - char *refName = GetArgData(); - if (winHelp || !useWord) - { - if (refName) - { - TexRef *texRef = FindReference(refName); - if (texRef) - { - sec = texRef->sectionNumber; - secName = texRef->sectionName; - } - } - if (sec) - { - TexOutput(sec); - } - } - else - { - fprintf(Chapters, "{\\field{\\*\\fldinst REF %s \\\\* MERGEFORMAT }{\\fldrslt ??}}", - refName); - } - return FALSE; - } - break; - } - case ltHELPREF: - case ltHELPREFN: - { - if (winHelp) - { - if ((GetNoArgs() - arg_no) == 1) - { - if (start) - TexOutput("{\\uldb "); - else - TexOutput("}"); - } - if ((GetNoArgs() - arg_no) == 0) // Arg = 2, or 3 if first is optional - { - if (start) - { - TexOutput("{\\v "); - - // Remove green colour/underlining if specified - if (!hotSpotUnderline && !hotSpotColour) - TexOutput("%"); - else if (!hotSpotColour) - TexOutput("*"); - } - else TexOutput("}"); - } - } - else // If a linear document, must resolve the references ourselves - { - if ((GetNoArgs() - arg_no) == 1) - { - // In a linear document we display the anchor text in italic plus - // the page number. - if (start) - TexOutput("{\\i "); - else - TexOutput("}"); - return TRUE; - } - else if ((GetNoArgs() - arg_no) == 0) // Arg = 2, or 3 if first is optional - { - if (macroId != ltHELPREFN) - { - if (start) - { - TexOutput(" ("); - char *refName = GetArgData(); - if (refName) - { - if (useWord) - { - char *s = GetArgData(); - TexOutput("p. "); - TexOutput("{\\field{\\*\\fldinst PAGEREF "); - TexOutput(refName); - TexOutput(" \\\\* MERGEFORMAT }{\\fldrslt ??}}"); - } - else - { - // Only print section name if we're not in Word mode, - // so can't do page references - TexRef *texRef = FindReference(refName); - if (texRef) - { - TexOutput(texRef->sectionName) ; TexOutput(" "); TexOutput(texRef->sectionNumber); - } - else - { - TexOutput("??"); - sprintf(buf, "Warning: unresolved reference %s.", refName); - OnInform(buf); - } - } - } - else TexOutput("??"); - } - else TexOutput(")"); - } - return FALSE; - } - } - break; - } - case ltURLREF: - { - if (arg_no == 1) - { - return TRUE; - } - else if (arg_no == 2) - { - if (start) - { - inVerbatim = TRUE; - TexOutput(" ({\\f3 "); - } - else - { - TexOutput("})"); - inVerbatim = FALSE; - } - return TRUE; - } - break; - } - case ltPOPREF: - { - if (winHelp) - { - if ((GetNoArgs() - arg_no) == 1) - { - if (start) - TexOutput("{\\ul "); - else - TexOutput("}"); - } - if ((GetNoArgs() - arg_no) == 0) // Arg = 2, or 3 if first is optional - { - if (start) - { - TexOutput("{\\v "); - - // Remove green colour/underlining if specified - if (!hotSpotUnderline && !hotSpotColour) - TexOutput("%"); - else if (!hotSpotColour) - TexOutput("*"); - } - else TexOutput("}"); - } - } - else // A linear document... - { - if ((GetNoArgs() - arg_no) == 1) - { - // In a linear document we just display the anchor text in italic - if (start) - TexOutput("{\\i "); - else - TexOutput("}"); - return TRUE; - } - else return FALSE; - } - break; - } - case ltADDCONTENTSLINE: - { - if (start && !winHelp) - { - if (arg_no == 2) - contentsLineSection = copystring(GetArgData()); - else if (arg_no == 3) - contentsLineValue = copystring(GetArgData()); - return FALSE; - } - else return FALSE; - break; - } - case ltIMAGE: - case ltIMAGEL: - case ltIMAGER: - case ltIMAGEMAP: - case ltPSBOXTO: - { - if (arg_no == 3) - return FALSE; - - static int imageWidth = 0; - static int imageHeight = 0; - - if (start && (arg_no == 1)) - { - char *imageDimensions = copystring(GetArgData()); - char buf1[50]; - strcpy(buf1, imageDimensions); - char *tok1 = strtok(buf1, ";:"); - char *tok2 = strtok(NULL, ";:"); - // Convert points to TWIPS (1 twip = 1/20th of point) - imageWidth = (int)(20*(tok1 ? ParseUnitArgument(tok1) : 0)); - imageHeight = (int)(20*(tok2 ? ParseUnitArgument(tok2) : 0)); - return FALSE; - } - else if (start && (arg_no == 2 )) - { - char *filename = copystring(GetArgData()); - wxString f = ""; - if ((winHelp || (strcmp(bitmapMethod, "includepicture") == 0) || (strcmp(bitmapMethod, "import") == 0)) && useWord) - { - if (f == "") // Try for a .shg (segmented hypergraphics file) - { - strcpy(buf, filename); - StripExtension(buf); - strcat(buf, ".shg"); - f = TexPathList.FindValidPath(buf); - } - if (f == "") // Try for a .bmp - { - strcpy(buf, filename); - StripExtension(buf); - strcat(buf, ".bmp"); - f = TexPathList.FindValidPath(buf); - } - if (f == "") // Try for a metafile instead - { - strcpy(buf, filename); - StripExtension(buf); - strcat(buf, ".wmf"); - f = TexPathList.FindValidPath(buf); - } - if (f != "") - { - if (winHelp) - { - if (bitmapTransparency && (winHelpVersion > 3)) - TexOutput("\\{bmct "); - else - TexOutput("\\{bmc "); - wxString str = wxFileNameFromPath(f); - TexOutput((char*) (const char*) str); - TexOutput("\\}"); - } - else - { - // Microsoft Word method - if (strcmp(bitmapMethod, "import") == 0) - TexOutput("{\\field{\\*\\fldinst IMPORT "); - else - TexOutput("{\\field{\\*\\fldinst INCLUDEPICTURE "); - - // Full path appears not to be valid! - wxString str = wxFileNameFromPath(f); - TexOutput((char*)(const char*) str); -/* - int len = strlen(f); - char smallBuf[2]; smallBuf[1] = 0; - for (int i = 0; i < len; i++) - { - smallBuf[0] = f[i]; - TexOutput(smallBuf); - if (smallBuf[0] == '\\') - TexOutput(smallBuf); - } -*/ - TexOutput("}{\\fldrslt PRESS F9 TO FORMAT PICTURE}}"); - } - } - else - { - TexOutput("[No BMP or WMF for image file "); - TexOutput(filename); - TexOutput("]"); - sprintf(buf, "Warning: could not find a BMP or WMF equivalent for %s.", filename); - OnInform(buf); - } - } - else // linear RTF - { - if (f == "") // Try for a .bmp - { - strcpy(buf, filename); - StripExtension(buf); - strcat(buf, ".bmp"); - f = TexPathList.FindValidPath(buf); - } - if (f != "") - { - FILE *fd = fopen(f, "rb"); - if (OutputBitmapHeader(fd, winHelp)) - OutputBitmapData(fd); - else - { - sprintf(buf, "Could not read bitmap %s.\nMay be in wrong format (needs RGB-encoded Windows BMP).", (const char*) f); - OnError(buf); - } - fclose(fd); - } - else // Try for a metafile instead - { -#ifdef __WXMSW__ - strcpy(buf, filename); - StripExtension(buf); - strcat(buf, ".wmf"); - f = TexPathList.FindValidPath(buf); - if (f != "") - { - // HFILE handle = _lopen(f, READ); - FILE *fd = fopen(f, "rb"); - if (OutputMetafileHeader(fd, winHelp, imageWidth, imageHeight)) - { - OutputMetafileData(fd); - } - else - { - sprintf(buf, "Could not read metafile %s. Perhaps it's not a placeable metafile?", f); - OnError(buf); - } - fclose(fd); - } - else - { -#endif - TexOutput("[No BMP or WMF for image file "); - TexOutput(filename); - TexOutput("]"); - sprintf(buf, "Warning: could not find a BMP or WMF equivalent for %s.", filename); - OnInform(buf); -#ifdef __WXMSW__ - } -#endif - } - } - return FALSE; - } - else - return FALSE; - break; - } - case ltTABULAR: - case ltSUPERTABULAR: - { - if (arg_no == 1) - { - if (start) - { - currentRowNumber = 0; - inTabular = TRUE; - startRows = TRUE; - tableVerticalLineLeft = FALSE; - tableVerticalLineRight = FALSE; - int currentWidth = 0; - - char *alignString = copystring(GetArgData()); - ParseTableArgument(alignString); - -// TexOutput("\\trowd\\trgaph108\\trleft-108"); - TexOutput("\\trowd\\trgaph108"); - - // Write the first row formatting for compatibility - // with standard Latex - if (compatibilityMode) - { - for (int i = 0; i < noColumns; i++) - { - currentWidth += TableData[i].width; - sprintf(buf, "\\cellx%d", currentWidth); - TexOutput(buf); - } - TexOutput("\\pard\\intbl\n"); - } - delete[] alignString; - - return FALSE; - } - } - else if (arg_no == 2 && !start) - { - TexOutput("\\pard\n"); - WriteEnvironmentStyles(); - inTabular = FALSE; - } - break; - } - - case ltQUOTE: - case ltVERSE: - { - if (start) - { - TexOutput("\\li360\n"); - forbidParindent ++; - PushEnvironmentStyle("\\li360"); - } - else - { - forbidParindent --; - PopEnvironmentStyle(); - OnMacro(ltPAR, 0, TRUE); - OnMacro(ltPAR, 0, FALSE); - } - break; - } - case ltQUOTATION: - { - if (start) - { - TexOutput("\\li360\n"); - PushEnvironmentStyle("\\li360"); - } - else - { - PopEnvironmentStyle(); - OnMacro(ltPAR, 0, TRUE); - OnMacro(ltPAR, 0, FALSE); - } - break; - } - case ltBOXIT: - case ltFRAMEBOX: - case ltFBOX: - case ltNORMALBOX: - case ltNORMALBOXD: - { - if (start) - { - sprintf(buf, "\\box\\trgaph108%s\n", ((macroId == ltNORMALBOXD) ? "\\brdrdb" : "\\brdrs")); - TexOutput(buf); - PushEnvironmentStyle(buf); - } - else - { - PopEnvironmentStyle(); - OnMacro(ltPAR, 0, TRUE); - OnMacro(ltPAR, 0, FALSE); - } - break; - } - case ltHELPFONTSIZE: - { - if (start) - { - char *data = GetArgData(); - if (strcmp(data, "10") == 0) - SetFontSizes(10); - else if (strcmp(data, "11") == 0) - SetFontSizes(11); - else if (strcmp(data, "12") == 0) - SetFontSizes(12); - sprintf(buf, "\\fs%d\n", normalFont*2); - TexOutput(buf); - TexOutput(buf); - return FALSE; - } - break; - } - case ltHELPFONTFAMILY: - { - if (start) - { - char *data = GetArgData(); - if (strcmp(data, "Swiss") == 0) - TexOutput("\\f2\n"); - else if (strcmp(data, "Symbol") == 0) - TexOutput("\\f1\n"); - else if (strcmp(data, "Times") == 0) - TexOutput("\\f0\n"); - - return FALSE; - } - break; - } - case ltPARINDENT: - { - if (start && arg_no == 1) - { - char *data = GetArgData(); - ParIndent = ParseUnitArgument(data); - if (ParIndent == 0 || forbidParindent == 0) - { - sprintf(buf, "\\fi%d\n", ParIndent*20); - TexOutput(buf); - } - return FALSE; - } - break; - } - case ltITEM: - { - if (start && IsArgOptional()) - { - descriptionItemArg = GetArgChunk(); - return FALSE; - } - break; - } - case ltTWOCOLITEM: - case ltTWOCOLITEMRULED: - { - switch (arg_no) - { - case 1: - { - if (!start) - TexOutput("\\tab "); - break; - } - case 2: - { - if (!start) - { - if (macroId == ltTWOCOLITEMRULED) - TexOutput("\\brdrb\\brdrs\\brdrw15\\brsp20 "); - TexOutput("\\par\\pard\n"); - issuedNewParagraph = 1; - WriteEnvironmentStyles(); - } - break; - } - } - return TRUE; - break; - } - /* - * Accents - * - */ - case ltACCENT_GRAVE: - { - if (start) - { - char *val = GetArgData(); - if (val) - { - switch (val[0]) - { - case 'a': - TexOutput("\\'e0"); - break; - case 'e': - TexOutput("\\'e8"); - break; - case 'i': - TexOutput("\\'ec"); - break; - case 'o': - TexOutput("\\'f2"); - break; - case 'u': - TexOutput("\\'f9"); - break; - case 'A': - TexOutput("\\'c0"); - break; - case 'E': - TexOutput("\\'c8"); - break; - case 'I': - TexOutput("\\'cc"); - break; - case 'O': - TexOutput("\\'d2"); - break; - case 'U': - TexOutput("\\'d9"); - break; - default: - break; - } - } - } - return FALSE; - break; - } - case ltACCENT_ACUTE: - { - if (start) - { - char *val = GetArgData(); - if (val) - { - switch (val[0]) - { - case 'a': - TexOutput("\\'e1"); - break; - case 'e': - TexOutput("\\'e9"); - break; - case 'i': - TexOutput("\\'ed"); - break; - case 'o': - TexOutput("\\'f3"); - break; - case 'u': - TexOutput("\\'fa"); - break; - case 'y': - TexOutput("\\'fd"); - break; - case 'A': - TexOutput("\\'c1"); - break; - case 'E': - TexOutput("\\'c9"); - break; - case 'I': - TexOutput("\\'cd"); - break; - case 'O': - TexOutput("\\'d3"); - break; - case 'U': - TexOutput("\\'da"); - break; - case 'Y': - TexOutput("\\'dd"); - break; - default: - break; - } - } - } - return FALSE; - break; - } - case ltACCENT_CARET: - { - if (start) - { - char *val = GetArgData(); - if (val) - { - switch (val[0]) - { - case 'a': - TexOutput("\\'e2"); - break; - case 'e': - TexOutput("\\'ea"); - break; - case 'i': - TexOutput("\\'ee"); - break; - case 'o': - TexOutput("\\'f4"); - break; - case 'u': - TexOutput("\\'fb"); - break; - case 'A': - TexOutput("\\'c2"); - break; - case 'E': - TexOutput("\\'ca"); - break; - case 'I': - TexOutput("\\'ce"); - break; - case 'O': - TexOutput("\\'d4"); - break; - case 'U': - TexOutput("\\'db"); - break; - default: - break; - } - } - } - return FALSE; - break; - } - case ltACCENT_TILDE: - { - if (start) - { - char *val = GetArgData(); - if (val) - { - switch (val[0]) - { - case 'a': - TexOutput("\\'e3"); - break; - case ' ': - TexOutput("~"); - break; - case 'n': - TexOutput("\\'f1"); - break; - case 'o': - TexOutput("\\'f5"); - break; - case 'A': - TexOutput("\\'c3"); - break; - case 'N': - TexOutput("\\'d1"); - break; - case 'O': - TexOutput("\\'d5"); - break; - default: - break; - } - } - } - return FALSE; - break; - } - case ltACCENT_UMLAUT: - { - if (start) - { - char *val = GetArgData(); - if (val) - { - switch (val[0]) - { - case 'a': - TexOutput("\\'e4"); - break; - case 'e': - TexOutput("\\'eb"); - break; - case 'i': - TexOutput("\\'ef"); - break; - case 'o': - TexOutput("\\'f6"); - break; - case 'u': - TexOutput("\\'fc"); - break; - case 's': - TexOutput("\\'df"); - break; - case 'y': - TexOutput("\\'ff"); - break; - case 'A': - TexOutput("\\'c4"); - break; - case 'E': - TexOutput("\\'cb"); - break; - case 'I': - TexOutput("\\'cf"); - break; - case 'O': - TexOutput("\\'d6"); - break; - case 'U': - TexOutput("\\'dc"); - break; - case 'Y': - TexOutput("\\'df"); - break; - default: - break; - } - } - } - return FALSE; - break; - } - case ltACCENT_DOT: - { - if (start) - { - char *val = GetArgData(); - if (val) - { - switch (val[0]) - { - case 'a': - TexOutput("\\'e5"); - break; - case 'A': - TexOutput("\\'c5"); - break; - default: - break; - } - } - } - return FALSE; - break; - } - case ltACCENT_CADILLA: - { - if (start) - { - char *val = GetArgData(); - if (val) - { - switch (val[0]) - { - case 'c': - TexOutput("\\'e7"); - break; - case 'C': - TexOutput("\\'c7"); - break; - default: - break; - } - } - } - return FALSE; - break; - } - case ltFOOTNOTE: - { - static char *helpTopic = NULL; - static FILE *savedOutput = NULL; - if (winHelp) - { - if (arg_no == 1) - { - if (start) - { - OnInform("Consider using \\footnotepopup instead of \\footnote."); - footnoteCount ++; - char footBuf[20]; - sprintf(footBuf, "(%d)", footnoteCount); - - TexOutput(" {\\ul "); - TexOutput(footBuf); - TexOutput("}"); - helpTopic = FindTopicName(NULL); - TexOutput("{\\v "); - - // Remove green colour/underlining if specified - if (!hotSpotUnderline && !hotSpotColour) - TexOutput("%"); - else if (!hotSpotColour) - TexOutput("*"); - - TexOutput(helpTopic); - TexOutput("}"); - - fprintf(Popups, "\\page\n"); -// fprintf(Popups, "\n${\\footnote }"); // No title - fprintf(Popups, "\n#{\\footnote %s}\n", helpTopic); - fprintf(Popups, "+{\\footnote %s}\n", GetBrowseString()); - savedOutput = CurrentOutput1; - SetCurrentOutput(Popups); - } - else - { - SetCurrentOutput(savedOutput); - } - return TRUE; - } - return TRUE; - } - else - { - if (start) - { - TexOutput(" {\\super \\chftn{\\footnote \\fs20 {\\super \\chftn}", TRUE); - } - else - { - TexOutput("}}", TRUE); - } - return TRUE; - } - break; - } - case ltFOOTNOTEPOPUP: - { - static char *helpTopic = NULL; - static FILE *savedOutput = NULL; - if (winHelp) - { - if (arg_no == 1) - { - if (start) - { - TexOutput("{\\ul "); - } - else TexOutput("}"); - return TRUE; - } - else if (arg_no == 2) - { - if (start) - { - helpTopic = FindTopicName(NULL); - TexOutput("{\\v "); - - // Remove green colour/underlining if specified - if (!hotSpotUnderline && !hotSpotColour) - TexOutput("%"); - else if (!hotSpotColour) - TexOutput("*"); - - TexOutput(helpTopic); - TexOutput("}"); - - fprintf(Popups, "\\page\n"); -// fprintf(Popups, "\n${\\footnote }"); // No title - fprintf(Popups, "\n#{\\footnote %s}\n", helpTopic); - fprintf(Popups, "+{\\footnote %s}\n", GetBrowseString()); - savedOutput = CurrentOutput1; - SetCurrentOutput(Popups); - } - else - { - SetCurrentOutput(savedOutput); - } - return TRUE; - } - } - else - { - if (arg_no == 1) - return TRUE; - if (start) - { - TexOutput(" {\\super \\chftn{\\footnote \\fs20 {\\super \\chftn}", TRUE); - } - else - { - TexOutput("}}", TRUE); - } - return TRUE; - } - break; - } - case ltFANCYPLAIN: - { - if (start && (arg_no == 1)) - return FALSE; - else - return TRUE; - break; - } - case ltSETHEADER: - { - if (start) - forbidResetPar ++; - else - forbidResetPar --; - - if (winHelp) return FALSE; - if (start) - { - switch (arg_no) - { - case 1: - LeftHeaderEven = GetArgChunk(); - if (strlen(GetArgData(LeftHeaderEven)) == 0) - LeftHeaderEven = NULL; - break; - case 2: - CentreHeaderEven = GetArgChunk(); - if (strlen(GetArgData(CentreHeaderEven)) == 0) - CentreHeaderEven = NULL; - break; - case 3: - RightHeaderEven = GetArgChunk(); - if (strlen(GetArgData(RightHeaderEven)) == 0) - RightHeaderEven = NULL; - break; - case 4: - LeftHeaderOdd = GetArgChunk(); - if (strlen(GetArgData(LeftHeaderOdd)) == 0) - LeftHeaderOdd = NULL; - break; - case 5: - CentreHeaderOdd = GetArgChunk(); - if (strlen(GetArgData(CentreHeaderOdd)) == 0) - CentreHeaderOdd = NULL; - break; - case 6: - RightHeaderOdd = GetArgChunk(); - if (strlen(GetArgData(RightHeaderOdd)) == 0) - RightHeaderOdd = NULL; - OutputRTFHeaderCommands(); - break; - default: - break; - } - } - return FALSE; - break; - } - case ltSETFOOTER: - { - if (start) - forbidResetPar ++; - else - forbidResetPar --; - - if (winHelp) return FALSE; - if (start) - { - switch (arg_no) - { - case 1: - LeftFooterEven = GetArgChunk(); - if (strlen(GetArgData(LeftFooterEven)) == 0) - LeftFooterEven = NULL; - break; - case 2: - CentreFooterEven = GetArgChunk(); - if (strlen(GetArgData(CentreFooterEven)) == 0) - CentreFooterEven = NULL; - break; - case 3: - RightFooterEven = GetArgChunk(); - if (strlen(GetArgData(RightFooterEven)) == 0) - RightFooterEven = NULL; - break; - case 4: - LeftFooterOdd = GetArgChunk(); - if (strlen(GetArgData(LeftFooterOdd)) == 0) - LeftFooterOdd = NULL; - break; - case 5: - CentreFooterOdd = GetArgChunk(); - if (strlen(GetArgData(CentreFooterOdd)) == 0) - CentreFooterOdd = NULL; - break; - case 6: - RightFooterOdd = GetArgChunk(); - if (strlen(GetArgData(RightFooterOdd)) == 0) - RightFooterOdd = NULL; - OutputRTFFooterCommands(); - break; - default: - break; - } - } - return FALSE; - break; - } - case ltMARKRIGHT: - { - if (winHelp) return FALSE; - // Fake a SetHeader command - if (start) - { - LeftHeaderOdd = NULL; - CentreHeaderOdd = NULL; - RightHeaderOdd = NULL; - LeftHeaderEven = NULL; - CentreHeaderEven = NULL; - RightHeaderEven = NULL; - OnInform("Consider using setheader/setfooter rather than markright."); - } - RTFOnArgument(ltSETHEADER, 4, start); - if (!start) - OutputRTFHeaderCommands(); - return FALSE; - break; - } - case ltMARKBOTH: - { - if (winHelp) return FALSE; - // Fake a SetHeader command - switch (arg_no) - { - case 1: - { - if (start) - { - LeftHeaderOdd = NULL; - CentreHeaderOdd = NULL; - RightHeaderOdd = NULL; - LeftHeaderEven = NULL; - CentreHeaderEven = NULL; - RightHeaderEven = NULL; - OnInform("Consider using setheader/setfooter rather than markboth."); - } - return RTFOnArgument(ltSETHEADER, 1, start); - break; - } - case 2: - { - RTFOnArgument(ltSETHEADER, 4, start); - if (!start) - OutputRTFHeaderCommands(); - return FALSE; - break; - } - } - break; - } - case ltPAGENUMBERING: - { - if (start) - forbidResetPar ++; - else - forbidResetPar --; - - if (winHelp) return FALSE; - if (start) - { - TexOutput("\\pgnrestart"); - char *data = GetArgData(); - if (currentNumberStyle) delete[] currentNumberStyle; - currentNumberStyle = copystring(data); - OutputNumberStyle(currentNumberStyle); - - TexOutput("\n"); - } - return FALSE; - break; - } - case ltTWOCOLUMN: - { - if (winHelp) return FALSE; - if (start) - return TRUE; - break; - } - case ltITEMSEP: - { - if (start) - { - char *val = GetArgData(); - currentItemSep = ParseUnitArgument(val); - return FALSE; - } - break; - } - case ltEVENSIDEMARGIN: - { - return FALSE; - break; - } - case ltODDSIDEMARGIN: - { - if (start) - { - char *val = GetArgData(); - int twips = (int)(20*ParseUnitArgument(val)); - // Add an inch since in LaTeX it's specified minus an inch - twips += 1440; - CurrentLeftMarginOdd = twips; - sprintf(buf, "\\margl%d\n", twips); - TexOutput(buf); - - CurrentMarginParX = CurrentLeftMarginOdd + CurrentTextWidth + CurrentMarginParSep; - } - return FALSE; - } - case ltMARGINPARWIDTH: - { - if (start) - { - char *val = GetArgData(); - int twips = (int)(20*ParseUnitArgument(val)); - CurrentMarginParWidth = twips; - } - return FALSE; - } - case ltMARGINPARSEP: - { - if (start) - { - char *val = GetArgData(); - int twips = (int)(20*ParseUnitArgument(val)); - CurrentMarginParSep = twips; - CurrentMarginParX = CurrentLeftMarginOdd + CurrentTextWidth + CurrentMarginParSep; - } - return FALSE; - } - case ltTEXTWIDTH: - { - if (start) - { - char *val = GetArgData(); - int twips = (int)(20*ParseUnitArgument(val)); - CurrentTextWidth = twips; - - // Need to set an implicit right margin - CurrentRightMarginOdd = PageWidth - CurrentTextWidth - CurrentLeftMarginOdd; - CurrentRightMarginEven = PageWidth - CurrentTextWidth - CurrentLeftMarginEven; - CurrentMarginParX = CurrentLeftMarginOdd + CurrentTextWidth + CurrentMarginParSep; - sprintf(buf, "\\margr%d\n", CurrentRightMarginOdd); - TexOutput(buf); - } - return FALSE; - } - case ltMARGINPAR: - case ltMARGINPARODD: - { - if (start) - { - if (winHelp) - { - TexOutput("\\box\n"); - PushEnvironmentStyle("\\box"); - } - else - { - sprintf(buf, "\\phpg\\posx%d\\absw%d\n", CurrentMarginParX, CurrentMarginParWidth); - TexOutput(buf); - } - return TRUE; - } - else - { - if (winHelp) - { - TexOutput("\\par\\pard\n"); - PopEnvironmentStyle(); - WriteEnvironmentStyles(); - } - else - TexOutput("\\par\\pard\n"); - issuedNewParagraph = 1; - } - return FALSE; - } - case ltMARGINPAREVEN: - { - if (start) - { - if (winHelp) - { - TexOutput("\\box\n"); - PushEnvironmentStyle("\\box"); - } - else - { - if (mirrorMargins) - { - // Have to calculate what the margins are changed to in WfW margin - // mirror mode, on an even (left-hand) page. - int x = PageWidth - CurrentRightMarginOdd - CurrentMarginParWidth - CurrentMarginParSep - - CurrentTextWidth + GutterWidth; - sprintf(buf, "\\phpg\\posx%d\\absw%d\n", x, CurrentMarginParWidth); - TexOutput(buf); - } - else - { - sprintf(buf, "\\phpg\\posx%d\\absw%d\n", CurrentMarginParX, CurrentMarginParWidth); - TexOutput(buf); - } - } - return TRUE; - } - else - { - if (winHelp) - { - TexOutput("\\par\\pard\n"); - PopEnvironmentStyle(); - WriteEnvironmentStyles(); - } - else - issuedNewParagraph = 1; - TexOutput("\\par\\pard\n"); - } - return FALSE; - } - case ltTWOCOLWIDTHA: - { - if (start) - { - char *val = GetArgData(); - int twips = (int)(20*ParseUnitArgument(val)); - TwoColWidthA = twips; - } - return FALSE; - break; - } - case ltTWOCOLWIDTHB: - { - if (start) - { - char *val = GetArgData(); - int twips = (int)(20*ParseUnitArgument(val)); - TwoColWidthB = twips; - } - return FALSE; - break; - } - case ltROW: - case ltRULEDROW: - { - if (start) - { - int currentWidth = 0; - - if (!compatibilityMode || (currentRowNumber > 0)) - { - TexOutput("\\pard\\intbl"); - - if (macroId == ltRULEDROW) - ruleBottom = 1; - for (int i = 0; i < noColumns; i++) - { - currentWidth += TableData[i].width; - if (ruleTop == 1) - { - TexOutput("\\clbrdrt\\brdrs\\brdrw15"); - } - else if (ruleTop > 1) - { - TexOutput("\\clbrdrt\\brdrdb\\brdrw15"); - } - if (ruleBottom == 1) - { - TexOutput("\\clbrdrb\\brdrs\\brdrw15"); - } - else if (ruleBottom > 1) - { - TexOutput("\\clbrdrb\\brdrdb\\brdrw15"); - } - - if (TableData[i].rightBorder) - TexOutput("\\clbrdrr\\brdrs\\brdrw15"); - - if (TableData[i].leftBorder) - TexOutput("\\clbrdrl\\brdrs\\brdrw15"); - - sprintf(buf, "\\cellx%d", currentWidth); - TexOutput(buf); - } - TexOutput("\\pard\\intbl\n"); - } - ruleTop = 0; - ruleBottom = 0; - currentRowNumber ++; - return TRUE; - } - else - { -// TexOutput("\\cell\\row\\trowd\\trgaph108\\trleft-108\n"); - TexOutput("\\cell\\row\\trowd\\trgaph108\n"); - } - break; - } - case ltMULTICOLUMN: - { - static int noMultiColumns = 0; - if (start) - { - switch (arg_no) - { - case 1: - { - noMultiColumns = atoi(GetArgData()); - return FALSE; - break; - } - case 2: - { - return FALSE; - } - case 3: - { - return TRUE; - } - } - } - else - { - if (arg_no == 3) - { - for (int i = 1; i < noMultiColumns; i ++) - TexOutput("\\cell"); - } - } - break; - } - case ltINDENTED: - { - if (start && (arg_no == 1)) - { -// indentLevel ++; -// TexOutput("\\fi0\n"); - int oldIndent = 0; - wxNode *node = itemizeStack.First(); - if (node) - oldIndent = ((ItemizeStruc *)node->Data())->indentation; - - int indentValue = 20*ParseUnitArgument(GetArgData()); - int indentSize = indentValue + oldIndent; - - ItemizeStruc *struc = new ItemizeStruc(LATEX_INDENT, indentSize); - itemizeStack.Insert(struc); - - sprintf(buf, "\\tx%d\\li%d ", indentSize, indentSize); - PushEnvironmentStyle(buf); - TexOutput(buf); - return FALSE; - } - if (!start && (arg_no == 2)) - { - PopEnvironmentStyle(); - if (itemizeStack.First()) - { - ItemizeStruc *struc = (ItemizeStruc *)itemizeStack.First()->Data(); - delete struc; - delete itemizeStack.First(); - } - if (itemizeStack.Number() == 0) - { - TexOutput("\\par\\pard\n"); - issuedNewParagraph = 1; - WriteEnvironmentStyles(); - } - } - return TRUE; - break; - } -/* - case ltSIZEDBOX: - case ltSIZEDBOXD: - { - if (start && (arg_no == 1)) - { - int oldIndent = 0; - wxNode *node = itemizeStack.First(); - if (node) - oldIndent = ((ItemizeStruc *)node->Data())->indentation; - - int boxWidth = 20*ParseUnitArgument(GetArgData()); - - int indentValue = (int)((CurrentTextWidth - oldIndent - boxWidth)/2.0); - int indentSize = indentValue + oldIndent; - int indentSizeRight = indentSize + boxWidth; - - ItemizeStruc *struc = new ItemizeStruc(LATEX_INDENT, indentSize); - itemizeStack.Insert(struc); - - sprintf(buf, "\\tx%d\\li%d\\lr%d\\box%s ", indentSize, indentSize, indentSizeRight, - ((macroId == ltCENTEREDBOX) ? "\\brdrs" : "\\brdrdb")); - PushEnvironmentStyle(buf); - TexOutput(buf); - return FALSE; - } - if (!start && (arg_no == 2)) - { - PopEnvironmentStyle(); - if (itemizeStack.First()) - { - ItemizeStruc *struc = (ItemizeStruc *)itemizeStack.First()->Data(); - delete struc; - delete itemizeStack.First(); - } - if (itemizeStack.Number() == 0) - { - TexOutput("\\par\\pard\n"); - issuedNewParagraph = 1; - WriteEnvironmentStyles(); - } - } - return TRUE; - break; - } -*/ - case ltDOCUMENTSTYLE: - { - DefaultOnArgument(macroId, arg_no, start); - if (!start && !IsArgOptional()) - { - if (MinorDocumentStyleString) - { - if (StringMatch("twoside", MinorDocumentStyleString)) - // Mirror margins, switch on odd/even headers & footers, and break sections at odd pages - TexOutput("\\margmirror\\facingp\\sbkodd"); - if (StringMatch("twocolumn", MinorDocumentStyleString)) - TexOutput("\\cols2"); - } - TexOutput("\n"); - } - return FALSE; - } - case ltSETHOTSPOTCOLOUR: - case ltSETHOTSPOTCOLOR: - { - if (!start) - { - char *text = GetArgData(); - if (strcmp(text, "yes") == 0 || strcmp(text, "on") == 0 || strcmp(text, "ok") == 0) - hotSpotColour = TRUE; - else - hotSpotColour = FALSE; - } - return FALSE; - } - case ltSETTRANSPARENCY: - { - if (!start) - { - char *text = GetArgData(); - if (strcmp(text, "yes") == 0 || strcmp(text, "on") == 0 || strcmp(text, "ok") == 0) - bitmapTransparency = TRUE; - else - bitmapTransparency = FALSE; - } - return FALSE; - } - case ltSETHOTSPOTUNDERLINE: - { - if (!start) - { - char *text = GetArgData(); - if (strcmp(text, "yes") == 0 || strcmp(text, "on") == 0 || strcmp(text, "ok") == 0) - hotSpotUnderline = TRUE; - else - hotSpotUnderline = FALSE; - } - return FALSE; - } - case ltBIBITEM: - { - if (arg_no == 1 && start) - { - char *citeKey = GetArgData(); - TexRef *ref = (TexRef *)TexReferences.Get(citeKey); - if (ref) - { - if (ref->sectionNumber) delete[] ref->sectionNumber; - sprintf(buf, "[%d]", citeCount); - ref->sectionNumber = copystring(buf); - } - - TexOutput("\\li260\\fi-260 "); // Indent from 2nd line - sprintf(buf, "{\\b [%d]} ", citeCount); - TexOutput(buf); - citeCount ++; - return FALSE; - } - if (arg_no == 2 && !start) - TexOutput("\\par\\pard\\par\n\n"); - return TRUE; - break; - } - case ltTHEBIBLIOGRAPHY: - { - if (start && (arg_no == 1)) - { - citeCount = 1; - if (winHelp) - SetCurrentOutputs(Contents, Chapters); - - if (!winHelp) - { - fprintf(Chapters, "\\sect\\pgncont\\titlepg\n"); - - // If a non-custom page style, we generate the header now. - if (PageStyle && (strcmp(PageStyle, "plain") == 0 || - strcmp(PageStyle, "empty") == 0 || - strcmp(PageStyle, "headings") == 0)) - { - OutputRTFHeaderCommands(); - OutputRTFFooterCommands(); - } - - // Need to reset the current numbering style, or RTF forgets it. - OutputNumberStyle(currentNumberStyle); - SetCurrentOutput(Contents); - } - else - fprintf(Chapters, "\\page\n"); - - if (winHelp) - fprintf(Contents, "\n{\\uldb %s}", ReferencesNameString); - else - fprintf(Contents, "\\par\n\\pard{\\b %s}", ReferencesNameString); - - startedSections = TRUE; - - if (winHelp) - fprintf(Chapters, "\n${\\footnote %s}", ReferencesNameString); - - char *topicName = "bibliography"; - - if (winHelp) - fprintf(Contents, "{\\v %s}\\par\\pard\n", topicName); - else - fprintf(Contents, "\\par\\par\\pard\n"); - - if (winHelp) - { - fprintf(Chapters, "\n#{\\footnote %s}\n", topicName); - fprintf(Chapters, "+{\\footnote %s}\n", GetBrowseString()); - fprintf(Chapters, "K{\\footnote {K} %s}\n", ReferencesNameString); - GenerateKeywordsForTopic(topicName); - if (useUpButton) - { - fprintf(Chapters, "!{\\footnote EnableButton(\"Up\");ChangeButtonBinding(\"Up\", \"JumpId(`%s.hlp', `%s')\")}\n", - FileNameFromPath(FileRoot), "Contents"); - } - } - - SetCurrentOutput(Chapters); - char *styleCommand = ""; - if (!winHelp && useHeadingStyles) - styleCommand = "\\s1"; - fprintf(Chapters, "\\pard{%s", (winHelp ? "\\keepn\\sa140\\sb140" : styleCommand)); - WriteHeadingStyle(Chapters, 1); fprintf(Chapters, " References\\par\\pard}\n"); - - return FALSE; - } - return TRUE; - break; - } - case ltINDEX: - { - /* - * In Windows help, all keywords should be at the start of the - * topic, but Latex \index commands can be anywhere in the text. - * So we're going to have to build up lists of keywords for a topic, - * and insert them on the second pass. - * - * In linear RTF, we can embed the index entry now. - * - */ - if (start) - { -// char *entry = GetArgData(); - char buf[300]; - OutputChunkToString(GetArgChunk(), buf); - if (winHelp) - { - if (CurrentTopic) - { - AddKeyWordForTopic(CurrentTopic, buf); - } - } - else GenerateIndexEntry(buf); - } - return FALSE; - break; - } - case ltFCOL: - case ltBCOL: - { - if (start) - { - switch (arg_no) - { - case 1: - { - char *name = GetArgData(); - int pos = FindColourPosition(name); - if (pos > -1) - { - sprintf(buf, "{%s%d ", ((macroId == ltFCOL) ? "\\cf" : "\\cb"), pos); - TexOutput(buf); - } - else - { - sprintf(buf, "Could not find colour name %s", name); - OnError(buf); - } - break; - } - case 2: - { - return TRUE; - break; - } - default: - break; - } - } - else - { - if (arg_no == 2) TexOutput("}"); - } - return FALSE; - break; - } - case ltLABEL: - { - if (start && !winHelp && useWord) - { - char *s = GetArgData(); - // Only insert a bookmark here if it's not just been inserted - // in a section heading. - if ( !CurrentTopic || !(strcmp(CurrentTopic, s) == 0) ) -/* - if ( (!CurrentChapterName || !(CurrentChapterName && (strcmp(CurrentChapterName, s) == 0))) && - (!CurrentSectionName || !(CurrentSectionName && (strcmp(CurrentSectionName, s) == 0))) && - (!CurrentSubsectionName || !(CurrentSubsectionName && (strcmp(CurrentSubsectionName, s) == 0))) - ) -*/ - { - fprintf(Chapters, "{\\bkmkstart %s}{\\bkmkend %s}", s,s); - } - } - return FALSE; - break; - } - case ltPAGEREF: - { - if (start && useWord && !winHelp) - { - char *s = GetArgData(); - fprintf(Chapters, "{\\field{\\*\\fldinst PAGEREF %s \\\\* MERGEFORMAT }{\\fldrslt ??}}", - s); - } - return FALSE; - break; - } - case ltPOPREFONLY: - { - if (start) - inPopRefSection = TRUE; - else - inPopRefSection = FALSE; - break; - } - case ltINSERTATLEVEL: - { - // This macro allows you to insert text at a different level - // from the current level, e.g. into the Sections from within a subsubsection. - if (!winHelp & useWord) - return FALSE; - static int currentLevelNo = 1; - static FILE* oldLevelFile = Chapters; - if (start) - { - switch (arg_no) - { - case 1: - { - oldLevelFile = CurrentOutput1; - - char *str = GetArgData(); - currentLevelNo = atoi(str); - FILE* outputFile; - // TODO: cope with article style (no chapters) - switch (currentLevelNo) - { - case 1: - { - outputFile = Chapters; - break; - } - case 2: - { - outputFile = Sections; - break; - } - case 3: - { - outputFile = Subsections; - break; - } - case 4: - { - outputFile = Subsubsections; - break; - } - default: - { - outputFile = NULL; - break; - } - } - if (outputFile) - CurrentOutput1 = outputFile; - return FALSE; - break; - } - case 2: - { - return TRUE; - break; - } - default: - break; - } - return TRUE; - } - else - { - if (arg_no == 2) - { - CurrentOutput1 = oldLevelFile; - } - return TRUE; - } - break; - } - default: - { - return DefaultOnArgument(macroId, arg_no, start); - break; - } - } - return TRUE; -} - -bool RTFGo(void) -{ - // Reset variables - indentLevel = 0; - forbidParindent = 0; - contentsLineSection = NULL; - contentsLineValue = NULL; - descriptionItemArg = NULL; - inTabular = FALSE; - inTable = FALSE; - inFigure = FALSE; - startRows = FALSE; - tableVerticalLineLeft = FALSE; - tableVerticalLineRight = FALSE; - noColumns = 0; - startedSections = FALSE; - inVerbatim = FALSE; - browseId = 0; - - if (InputFile && OutputFile) - { - // Do some RTF-specific transformations on all the strings, - // recursively - Text2RTF(GetTopLevelChunk()); - - Contents = fopen(TmpContentsName, "w"); - Chapters = fopen("chapters.rtf", "w"); - if (winHelp) - { - Sections = fopen("sections.rtf", "w"); - Subsections = fopen("subsections.rtf", "w"); - Subsubsections = fopen("subsubsections.rtf", "w"); - Popups = fopen("popups.rtf", "w"); - if (winHelpContents) - { - WinHelpContentsFile = fopen(WinHelpContentsFileName, "w"); - if (WinHelpContentsFile) - fprintf(WinHelpContentsFile, ":Base %s.hlp\n", wxFileNameFromPath(FileRoot)); - } - - if (!Sections || !Subsections || !Subsubsections || !Popups || (winHelpContents && !WinHelpContentsFile)) - { - OnError("Ouch! Could not open temporary file(s) for writing."); - return FALSE; - } - } - if (!Contents || !Chapters) - { - OnError("Ouch! Could not open temporary file(s) for writing."); - return FALSE; - } - - if (winHelp) - { - fprintf(Chapters, "\n#{\\footnote Contents}\n"); - fprintf(Chapters, "${\\footnote Contents}\n"); - fprintf(Chapters, "+{\\footnote %s}\n", GetBrowseString()); - fprintf(Chapters, "K{\\footnote {K} %s}\n", ContentsNameString); - fprintf(Chapters, "!{\\footnote DisableButton(\"Up\")}\n"); - } - if (!winHelp) - { - fprintf(Chapters, "\\titlepg\n"); - fprintf(Contents, "\\par\\pard\\pgnrestart\\sect\\titlepg"); - } - - // In WinHelp, Contents title takes font of title. - // In linear RTF, same as chapter headings. - fprintf(Contents, "{\\b\\fs%d %s}\\par\\par\\pard\n\n", - (winHelp ? titleFont : chapterFont)*2, ContentsNameString); - - // By default, Swiss, 10 point. - fprintf(Chapters, "\\f2\\fs20\n"); - - SetCurrentOutput(Chapters); - - OnInform("Converting..."); - - TraverseDocument(); - - FILE *Header = fopen("header.rtf", "w"); - if (!Header) - { - OnError("Ouch! Could not open temporary file header.rtf for writing."); - return FALSE; - } - WriteRTFHeader(Header); - fclose(Header); Header = NULL; - - Tex2RTFYield(TRUE); - if (winHelp) - { -// fprintf(Contents, "\\page\n"); - fprintf(Chapters, "\\page\n"); - fprintf(Sections, "\\page\n"); - fprintf(Subsections, "\\page\n"); - fprintf(Subsubsections, "\\page\n\n"); - fprintf(Popups, "\\page\n}\n"); - } - -// TexOutput("\n\\info{\\doccomm Document created by Julian Smart's Tex2RTF.}\n"); - if (!winHelp) - TexOutput("}\n"); - fclose(Contents); Contents = NULL; - fclose(Chapters); Chapters = NULL; - if (winHelp) - { - fclose(Sections); Sections = NULL; - fclose(Subsections); Subsections = NULL; - fclose(Subsubsections); Subsubsections = NULL; - fclose(Popups); Popups = NULL; - if (winHelpContents) - { - fclose(WinHelpContentsFile); WinHelpContentsFile = NULL; - } - } - - if (winHelp) - { - wxConcatFiles("header.rtf", "chapters.rtf", "tmp1.rtf"); - Tex2RTFYield(TRUE); - wxConcatFiles("tmp1.rtf", "sections.rtf", "tmp2.rtf"); - Tex2RTFYield(TRUE); - wxConcatFiles("tmp2.rtf", "subsections.rtf", "tmp3.rtf"); - Tex2RTFYield(TRUE); - wxConcatFiles("tmp3.rtf", "subsubsections.rtf", "tmp4.rtf"); - Tex2RTFYield(TRUE); - wxConcatFiles("tmp4.rtf", "popups.rtf", OutputFile); - Tex2RTFYield(TRUE); - - wxRemoveFile("tmp1.rtf"); - wxRemoveFile("tmp2.rtf"); - wxRemoveFile("tmp3.rtf"); - wxRemoveFile("tmp4.rtf"); - } - else - { - wxConcatFiles("header.rtf", "chapters.rtf", "tmp1.rtf"); - Tex2RTFYield(TRUE); - if (FileExists(OutputFile)) wxRemoveFile(OutputFile); - wxCopyFile("tmp1.rtf", OutputFile); - Tex2RTFYield(TRUE); - wxRemoveFile("tmp1.rtf"); - } - - if (FileExists(ContentsName)) wxRemoveFile(ContentsName); - - if (!wxRenameFile(TmpContentsName, ContentsName)) - { - wxCopyFile(TmpContentsName, ContentsName); - wxRemoveFile(TmpContentsName); - } - - wxRemoveFile("chapters.rtf"); - wxRemoveFile("header.rtf"); - - if (winHelp) - { - wxRemoveFile("sections.rtf"); - wxRemoveFile("subsections.rtf"); - wxRemoveFile("subsubsections.rtf"); - wxRemoveFile("popups.rtf"); - } - if (winHelp && generateHPJ) - WriteHPJ(OutputFile); - return TRUE; - } - return FALSE; -} diff --git a/utils/tex2rtf/src/rtfutils.h b/utils/tex2rtf/src/rtfutils.h deleted file mode 100644 index 9f2cf955db..0000000000 --- a/utils/tex2rtf/src/rtfutils.h +++ /dev/null @@ -1,60 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: rtfutils.h -// Purpose: RTF-specific code -// Author: Julian Smart -// Modified by: -// Created: 7.9.93 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - - /* - * Write a suitable RTF header. - * - */ - -void WriteRTFHeader(FILE *fd); - -/* - * Given a TexChunk with a string value, scans through the string - * converting Latex-isms into RTF-isms, such as 2 newlines -> \par, - * and inserting spaces at the start of lines since in Latex, a newline - * implies a space, but not in RTF. - * - */ - -void ProcessText2RTF(TexChunk *chunk); - -/* - * Scan through all chunks starting from the given one, - * calling ProcessText2RTF to convert Latex-isms to RTF-isms. - * This should be called after Tex2Any has parsed the file, - * and before TraverseDocument is called. - * - */ - -void Text2RTF(TexChunk *chunk); - - -/* - * Keeping track of environments to restore the styles after \pard. - * Push strings like "\qc" onto stack. - * - */ - -void PushEnvironmentStyle(char *style); - -void PopEnvironmentStyle(void); - -// Write out the styles, most recent first. -void WriteEnvironmentStyles(void); - -// Called on start/end of macro examination -void DefaultRtfOnMacro(char *name, int no_args, bool start); - -// Called on start/end of argument examination -bool DefaultRtfOnArgument(char *macro_name, int arg_no, bool start); - -// Reset memory of which levels have 'books' (for WinHelp 4 contents file) -void ResetContentsLevels(int level); diff --git a/utils/tex2rtf/src/table.cpp b/utils/tex2rtf/src/table.cpp deleted file mode 100644 index 4dc88ee028..0000000000 --- a/utils/tex2rtf/src/table.cpp +++ /dev/null @@ -1,156 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: table.cpp -// Purpose: Utilities for manipulating tables -// Author: Julian Smart -// Modified by: -// Created: 01/01/99 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - - -#include - -#if wxUSE_IOSTREAMH -#include -#include -#else -#include -#include -#endif - -#include -#include "tex2any.h" -#include "table.h" - -ColumnData TableData[40]; -bool inTabular = FALSE; - -bool startRows = FALSE; -bool tableVerticalLineLeft = FALSE; -bool tableVerticalLineRight = FALSE; -int noColumns = 0; // Current number of columns in table -int ruleTop = 0; -int ruleBottom = 0; -int currentRowNumber = 0; - -/* - * Parse table argument - * - */ - -bool ParseTableArgument(char *value) -{ - noColumns = 0; - int i = 0; - int len = strlen(value); - bool isBorder = FALSE; - while (i < len) - { - int ch = value[i]; - if (ch == '|') - { - i ++; - isBorder = TRUE; - } - else if (ch == 'l') - { - TableData[noColumns].leftBorder = isBorder; - TableData[noColumns].rightBorder = FALSE; - TableData[noColumns].justification = 'l'; - TableData[noColumns].width = 2000; // Estimate - TableData[noColumns].absWidth = FALSE; -// TableData[noColumns].spacing = ?? - noColumns ++; - i ++; - isBorder = FALSE; - } - else if (ch == 'c') - { - TableData[noColumns].leftBorder = isBorder; - TableData[noColumns].rightBorder = FALSE; - TableData[noColumns].justification = 'c'; - TableData[noColumns].width = defaultTableColumnWidth; // Estimate - TableData[noColumns].absWidth = FALSE; -// TableData[noColumns].spacing = ?? - noColumns ++; - i ++; - isBorder = FALSE; - } - else if (ch == 'r') - { - TableData[noColumns].leftBorder = isBorder; - TableData[noColumns].rightBorder = FALSE; - TableData[noColumns].justification = 'r'; - TableData[noColumns].width = 2000; // Estimate - TableData[noColumns].absWidth = FALSE; -// TableData[noColumns].spacing = ?? - noColumns ++; - i ++; - isBorder = FALSE; - } - else if (ch == 'p') - { - i ++; - int j = 0; - char numberBuf[50]; - ch = value[i]; - if (ch == '{') - { - i++; - ch = value[i]; - } - - while ((i < len) && (isdigit(ch) || ch == '.')) - { - numberBuf[j] = ch; - j ++; - i ++; - ch = value[i]; - } - // Assume we have 2 characters for units - numberBuf[j] = value[i]; - j ++; i++; - numberBuf[j] = value[i]; - j ++; i++; - numberBuf[j] = 0; - if (value[i] == '}') i++; - - TableData[noColumns].leftBorder = isBorder; - TableData[noColumns].rightBorder = FALSE; - TableData[noColumns].justification = 'l'; - TableData[noColumns].width = 20*ParseUnitArgument(numberBuf); - TableData[noColumns].absWidth = TRUE; -// TableData[noColumns].spacing = ?? - noColumns ++; - isBorder = FALSE; - } - else - { - char *buf = new char[strlen(value) + 80]; - sprintf(buf, "Tabular first argument \"%s\" too complex!", value); - OnError(buf); - delete[] buf; - return FALSE; - } - } - if (isBorder) - TableData[noColumns-1].rightBorder = TRUE; - return TRUE; -} diff --git a/utils/tex2rtf/src/table.h b/utils/tex2rtf/src/table.h deleted file mode 100644 index d2235f2394..0000000000 --- a/utils/tex2rtf/src/table.h +++ /dev/null @@ -1,36 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: table.h -// Purpose: Table utilities -// Author: Julian Smart -// Modified by: -// Created: 7.9.93 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -/* - * Table dimensions - * - */ - -struct ColumnData -{ - char justification; // l, r, c - int width; // -1 or a width in twips - int spacing; // Space between columns in twips - bool leftBorder; - bool rightBorder; - bool absWidth; // If FALSE (the default), don't use an absolute width if you can help it. -}; - -extern ColumnData TableData[]; -extern bool inTabular; -extern bool startRows; -extern bool tableVerticalLineLeft; -extern bool tableVerticalLineRight; -extern int noColumns; // Current number of columns in table -extern int ruleTop; -extern int ruleBottom; -extern int currentRowNumber; -extern bool ParseTableArgument(char *value); diff --git a/utils/tex2rtf/src/tex2any.cpp b/utils/tex2rtf/src/tex2any.cpp deleted file mode 100644 index 6bdc76b38f..0000000000 --- a/utils/tex2rtf/src/tex2any.cpp +++ /dev/null @@ -1,3482 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: tex2any.cpp -// Purpose: Utilities for Latex conversion. -// Author: Julian Smart -// Modified by: -// Created: 01/01/99 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include -#include "tex2any.h" -#include -#include - -/* - * Variables accessible from clients - * - */ - -TexChunk * DocumentTitle = NULL; -TexChunk * DocumentAuthor = NULL; -TexChunk * DocumentDate = NULL; - -// Header/footers/pagestyle -TexChunk * LeftHeaderEven = NULL; -TexChunk * LeftFooterEven = NULL; -TexChunk * CentreHeaderEven = NULL; -TexChunk * CentreFooterEven = NULL; -TexChunk * RightHeaderEven = NULL; -TexChunk * RightFooterEven = NULL; -TexChunk * LeftHeaderOdd = NULL; -TexChunk * LeftFooterOdd = NULL; -TexChunk * CentreHeaderOdd = NULL; -TexChunk * CentreFooterOdd = NULL; -TexChunk * RightHeaderOdd = NULL; -TexChunk * RightFooterOdd = NULL; -char * PageStyle = copystring("plain"); - -int DocumentStyle = LATEX_REPORT; -int MinorDocumentStyle = 0; -wxPathList TexPathList; -char * BibliographyStyleString = copystring("plain"); -char * DocumentStyleString = copystring("report"); -char * MinorDocumentStyleString = NULL; -int ParSkip = 0; -int ParIndent = 0; - -int normalFont = 10; -int smallFont = 8; -int tinyFont = 6; -int largeFont1 = 12; -int LargeFont2 = 14; -int LARGEFont3 = 18; -int hugeFont1 = 20; -int HugeFont2 = 24; -int HUGEFont3 = 28; - -/* - * USER-ADJUSTABLE SETTINGS - * - */ - -// Section font sizes -int chapterFont = 12; // LARGEFont3; -int sectionFont = 12; // LargeFont2; -int subsectionFont = 12; // largeFont1; -int titleFont = LARGEFont3; -int authorFont = LargeFont2; -int mirrorMargins = TRUE; -bool winHelp = FALSE; // Output in Windows Help format if TRUE, linear otherwise -bool isInteractive = FALSE; -bool runTwice = FALSE; -int convertMode = TEX_RTF; -bool headerRule = FALSE; -bool footerRule = FALSE; -bool compatibilityMode = FALSE; // If TRUE, maximum Latex compatibility - // (Quality of RTF generation deteriorate) -bool generateHPJ; // Generate WinHelp Help Project file -char *winHelpTitle = NULL; // Windows Help title -int defaultTableColumnWidth = 2000; - -int labelIndentTab = 18; // From left indent to item label (points) -int itemIndentTab = 40; // From left indent to item (points) - -bool useUpButton = TRUE; -int htmlBrowseButtons = HTML_BUTTONS_TEXT; - -bool truncateFilenames = FALSE; // Truncate for DOS -int winHelpVersion = 3; // WinHelp Version (3 for Windows 3.1, 4 for Win95) -bool winHelpContents = FALSE; // Generate .cnt file for WinHelp 4 -bool htmlIndex = FALSE; // Generate .htx file for HTML -bool htmlFrameContents = FALSE; // Use frames for HTML contents page -bool useHeadingStyles = TRUE; // Insert \s1, s2 etc. -bool useWord = TRUE; // Insert proper Word table of contents, etc etc -int contentsDepth = 4; // Depth of Word table of contents -bool indexSubsections = TRUE; // Index subsections in linear RTF -// Linear RTF method of including bitmaps. Can be "includepicture", "hex" -char *bitmapMethod = copystring("includepicture"); -bool upperCaseNames = FALSE; -// HTML background and text colours -char *backgroundImageString = NULL; -char *backgroundColourString = copystring("255;255;255"); -char *textColourString = NULL; -char *linkColourString = NULL; -char *followedLinkColourString = NULL; -bool combineSubSections = FALSE; - -/* - * International support - */ - -// Names to help with internationalisation -char *ContentsNameString = copystring("Contents"); -char *AbstractNameString = copystring("Abstract"); -char *GlossaryNameString = copystring("Glossary"); -char *ReferencesNameString = copystring("References"); -char *FiguresNameString = copystring("List of Figures"); -char *TablesNameString = copystring("List of Tables"); -char *FigureNameString = copystring("Figure"); -char *TableNameString = copystring("Table"); -char *IndexNameString = copystring("Index"); -char *ChapterNameString = copystring("chapter"); -char *SectionNameString = copystring("section"); -char *SubsectionNameString = copystring("subsection"); -char *SubsubsectionNameString = copystring("subsubsection"); -char *UpNameString = copystring("Up"); - -/* - * Section numbering - * - */ - -int chapterNo = 0; -int sectionNo = 0; -int subsectionNo = 0; -int subsubsectionNo = 0; -int figureNo = 0; -int tableNo = 0; - -/* - * Other variables - * - */ - -FILE *CurrentOutput1 = NULL; -FILE *CurrentOutput2 = NULL; -FILE *Inputs[15]; -int LineNumbers[15]; -char *FileNames[15]; -int CurrentInputIndex = 0; - -char *TexFileRoot = NULL; -char *TexBibName = NULL; // Bibliography output file name -char *TexTmpBibName = NULL; // Temporary bibliography output file name -bool isSync = FALSE; // If TRUE, should not yield to other processes. -bool stopRunning = FALSE; // If TRUE, should abort. - -static int currentColumn = 0; -char *currentArgData = NULL; -bool haveArgData = FALSE; // If TRUE, we're simulating the data. -TexChunk *currentArgument = NULL; -TexChunk *nextChunk = NULL; -bool isArgOptional = FALSE; -int noArgs = 0; - -TexChunk *TopLevel = NULL; -// wxList MacroDefs(wxKEY_STRING); -wxHashTable MacroDefs(wxKEY_STRING); -wxStringList IgnorableInputFiles; // Ignorable \input files, e.g. psbox.tex -char *BigBuffer = NULL; // For reading in large chunks of text -TexMacroDef *SoloBlockDef = NULL; -TexMacroDef *VerbatimMacroDef = NULL; - -#define IncrementLineNumber() LineNumbers[CurrentInputIndex] ++ - -void TexOutput(char *s, bool ordinaryText) -{ - int len = strlen(s); - - // Update current column, but only if we're guaranteed to - // be ordinary text (not mark-up stuff) - int i; - if (ordinaryText) - for (i = 0; i < len; i++) - { - if (s[i] == 13 || s[i] == 10) - currentColumn = 0; - else - currentColumn ++; - } - - if (CurrentOutput1) - fprintf(CurrentOutput1, "%s", s); - if (CurrentOutput2) - fprintf(CurrentOutput2, "%s", s); -} - -/* - * Try to find a Latex macro, in one of the following forms: - * (1) \begin{} ... \end{} - * (2) \macroname{arg1}...{argn} - * (3) {\bf arg1} - */ - -void ForbidWarning(TexMacroDef *def) -{ - char buf[100]; - switch (def->forbidden) - { - case FORBID_WARN: - { - sprintf(buf, "Warning: it is recommended that command %s is not used.", def->name); - OnInform(buf); - break; - } - case FORBID_ABSOLUTELY: - { - sprintf(buf, "Error: command %s cannot be used and will lead to errors.", def->name); - OnInform(buf); - break; - } - default: - break; - } -} - -TexMacroDef *MatchMacro(char *buffer, int *pos, char **env, bool *parseToBrace) -{ - *parseToBrace = TRUE; - int i = (*pos); - TexMacroDef *def = NULL; - char macroBuf[40]; - - // First, try to find begin{thing} - if (strncmp(buffer+i, "begin{", 6) == 0) - { - i += 6; - - int j = i; - while ((isalpha(buffer[j]) || buffer[j] == '*') && ((j - i) < 39)) - { - macroBuf[j-i] = buffer[j]; - j ++; - } - macroBuf[j-i] = 0; - def = (TexMacroDef *)MacroDefs.Get(macroBuf); - - if (def) - { - *pos = j + 1; // BUGBUG Should this be + 1??? - *env = def->name; - ForbidWarning(def); - return def; - } - else return NULL; - } - - // Failed, so try to find macro from definition list - int j = i; - - // First try getting a one-character macro, but ONLY - // if these TWO characters are not both alphabetical (could - // be a longer macro) - if (!(isalpha(buffer[i]) && isalpha(buffer[i+1]))) - { - macroBuf[0] = buffer[i]; - macroBuf[1] = 0; - - def = (TexMacroDef *)MacroDefs.Get(macroBuf); - if (def) j ++; - } - - if (!def) - { - while ((isalpha(buffer[j]) || buffer[j] == '*') && ((j - i) < 39)) - { - macroBuf[j-i] = buffer[j]; - j ++; - } - macroBuf[j-i] = 0; - def = (TexMacroDef *)MacroDefs.Get(macroBuf); - } - - if (def) - { - i = j; - - // We want to check whether this is a space-consuming macro - // (e.g. {\bf word}) - // No brace, e.g. \input thing.tex instead of \input{thing}; - // or a numeric argument, such as \parindent0pt - if ((def->no_args > 0) && ((buffer[i] == 32) || (buffer[i] == '=') || (isdigit(buffer[i])))) - { - if ((buffer[i] == 32) || (buffer[i] == '=')) - i ++; - - *parseToBrace = FALSE; - } - *pos = i; - ForbidWarning(def); - return def; - } - return NULL; -} - -void EatWhiteSpace(char *buffer, int *pos) -{ - int len = strlen(buffer); - int j = *pos; - bool keepGoing = TRUE; - bool moreLines = TRUE; - while ((j < len) && keepGoing && - (buffer[j] == 10 || buffer[j] == 13 || buffer[j] == ' ' || buffer[j] == 9)) - { - j ++; - if (j >= len) - { - if (moreLines) - { - moreLines = read_a_line(buffer); - len = strlen(buffer); - j = 0; - } - else - keepGoing = FALSE; - } - } - *pos = j; -} - -bool FindEndEnvironment(char *buffer, int *pos, char *env) -{ - int i = (*pos); - - // Try to find end{thing} - if ((strncmp(buffer+i, "end{", 4) == 0) && - (strncmp(buffer+i+4, env, strlen(env)) == 0)) - { - *pos = i + 5 + strlen(env); - return TRUE; - } - else return FALSE; -} - -bool readingVerbatim = FALSE; -bool readInVerbatim = FALSE; // Within a verbatim, but not nec. verbatiminput - -bool read_a_line(char *buf) -{ - if (CurrentInputIndex < 0) - { - buf[0] = 0; - return FALSE; - } - - int ch = -2; - int i = 0; - buf[0] = 0; - while (ch != EOF && ch != 10) - { - if (((i == 14) && (strncmp(buf, "\\end{verbatim}", 14) == 0)) || - ((i == 16) && (strncmp(buf, "\\end{toocomplex}", 16) == 0))) - readInVerbatim = FALSE; - - ch = getc(Inputs[CurrentInputIndex]); - if (ch != EOF) - { - // Check for 2 consecutive newlines and replace with \par - if (ch == 10 && !readInVerbatim) - { - int ch1 = getc(Inputs[CurrentInputIndex]); - if ((ch1 == 10) || (ch1 == 13)) - { - // Eliminate newline (10) following DOS linefeed - if (ch1 == 13) ch1 = getc(Inputs[CurrentInputIndex]); - buf[i] = 0; - IncrementLineNumber(); -// strcat(buf, "\\par\n"); -// i += 6; - strcat(buf, "\\par"); - i += 5; - } - else - { - ungetc(ch1, Inputs[CurrentInputIndex]); - buf[i] = ch; - i ++; - } - } - else - { - - // Convert embedded characters to RTF equivalents - switch(ch) - { - case 0xf6: // ö - case 0xe4: // ü - case 0xfc: // ü - case 0xd6: // Ö - case 0xc4: // Ä - case 0xdc: // Ü - buf[i++]='\\'; - buf[i++]='"'; - buf[i++]='{'; - switch(ch) - { - case 0xf6:buf[i++]='o';break; // ö - case 0xe4:buf[i++]='a';break; // ä - case 0xfc:buf[i++]='u';break; // ü - case 0xd6:buf[i++]='O';break; // Ö - case 0xc4:buf[i++]='A';break; // Ä - case 0xdc:buf[i++]='U';break; // Ü - } - buf[i++]='}'; - break; - case 0xdf: // ß - buf[i++]='\\'; - buf[i++]='s'; - buf[i++]='s'; - buf[i++]='\\'; - buf[i++]='/'; - break; - default: - buf[i++] = ch; - break; - } - - } - } - else - { - buf[i] = 0; - fclose(Inputs[CurrentInputIndex]); - Inputs[CurrentInputIndex] = NULL; - if (CurrentInputIndex > 0) ch = ' '; // No real end of file - CurrentInputIndex --; - if (readingVerbatim) - { - readingVerbatim = FALSE; - readInVerbatim = FALSE; - strcat(buf, "\\end{verbatim}\n"); - return FALSE; - } - } - if (ch == 10) - IncrementLineNumber(); - } - buf[i] = 0; - - // Strip out comment environment - if (strncmp(buf, "\\begin{comment}", 15) == 0) - { - while (strncmp(buf, "\\end{comment}", 13) != 0) - read_a_line(buf); - return read_a_line(buf); - } - // Read a verbatim input file as if it were a verbatim environment - else if (strncmp(buf, "\\verbatiminput", 14) == 0) - { - int wordLen = 14; - char *fileName = buf + wordLen + 1; - - int j = i - 1; - buf[j] = 0; - - // thing}\par -- eliminate the \par! - if (strncmp((buf + strlen(buf)-5), "\\par", 4) == 0) - { - j -= 5; - buf[j] = 0; - } - - if (buf[j-1] == '}') buf[j-1] = 0; // Ignore final brace - - wxString actualFile = TexPathList.FindValidPath(fileName); - if (actualFile == "") - { - char errBuf[300]; - strcpy(errBuf, "Could not find file: "); - strncat(errBuf, fileName, 100); - OnError(errBuf); - } - else - { - CurrentInputIndex ++; - Inputs[CurrentInputIndex] = fopen(actualFile, "r"); - LineNumbers[CurrentInputIndex] = 1; - if (FileNames[CurrentInputIndex]) - delete[] FileNames[CurrentInputIndex]; - FileNames[CurrentInputIndex] = copystring(actualFile); - - if (!Inputs[CurrentInputIndex]) - { - CurrentInputIndex --; - OnError("Could not open verbatiminput file."); - } - else - { - readingVerbatim = TRUE; - readInVerbatim = TRUE; - strcpy(buf, "\\begin{verbatim}\n"); - return FALSE; - } - } - return FALSE; - } - else if (strncmp(buf, "\\input", 6) == 0 || strncmp(buf, "\\helpinput", 10) == 0 || - strncmp(buf, "\\include", 8) == 0) - { - int wordLen; - if (strncmp(buf, "\\input", 6) == 0) - wordLen = 6; - else - if (strncmp(buf, "\\include", 8) == 0) - wordLen = 8; - else - wordLen = 10; - - char *fileName = buf + wordLen + 1; - - int j = i - 1; - buf[j] = 0; - - // \input{thing}\par -- eliminate the \par! -// if (strncmp((buf + strlen(buf)-5), "\\par", 4) == 0) - if (strncmp((buf + strlen(buf)-4), "\\par", 4) == 0) // Bug fix 8/2/95 Ulrich Leodolter - { -// j -= 5; - j -= 4; // Ditto - buf[j] = 0; - } - - if (buf[j-1] == '}') buf[j-1] = 0; // Ignore final brace - - // Ignore some types of input files (e.g. macro definition files) - char *fileOnly = FileNameFromPath(fileName); - if (IgnorableInputFiles.Member(fileOnly)) - return read_a_line(buf); - - wxString actualFile = TexPathList.FindValidPath(fileName); - if (actualFile == "") - { - char buf2[400]; - sprintf(buf2, "%s.tex", fileName); - actualFile = TexPathList.FindValidPath(buf2); - } - if (actualFile == "") - { - char errBuf[300]; - strcpy(errBuf, "Could not find file: "); - strncat(errBuf, fileName, 100); - OnError(errBuf); - } - else - { - // Ensure that if this file includes another, - // then we look in the same directory as this one. - TexPathList.EnsureFileAccessible(actualFile); - - CurrentInputIndex ++; - Inputs[CurrentInputIndex] = fopen(actualFile, "r"); - LineNumbers[CurrentInputIndex] = 1; - if (FileNames[CurrentInputIndex]) - delete[] FileNames[CurrentInputIndex]; - FileNames[CurrentInputIndex] = copystring(actualFile); - - if (!Inputs[CurrentInputIndex]) - { - char errBuf[300]; - sprintf(errBuf, "Could not open include file %s", (const char*) actualFile); - CurrentInputIndex --; - OnError(errBuf); - } - } - bool succ = read_a_line(buf); - return succ; - } - if (strncmp(buf, "\\begin{verbatim}", 16) == 0 || - strncmp(buf, "\\begin{toocomplex}", 18) == 0) - readInVerbatim = TRUE; - else if (strncmp(buf, "\\end{verbatim}", 14) == 0 || - strncmp(buf, "\\end{toocomplex}", 16) == 0) - readInVerbatim = FALSE; - - return (ch == EOF); -} - -/* - * Parse newcommand - * - */ - -bool ParseNewCommand(char *buffer, int *pos) -{ - if ((strncmp((buffer+(*pos)), "newcommand", 10) == 0) || - (strncmp((buffer+(*pos)), "renewcommand", 12) == 0)) - { - if (strncmp((buffer+(*pos)), "newcommand", 10) == 0) - *pos = *pos + 12; - else - *pos = *pos + 14; - - char commandName[100]; - char commandValue[1000]; - int noArgs = 0; - int i = 0; - while (buffer[*pos] != '}' && (buffer[*pos] != 0)) - { - commandName[i] = buffer[*pos]; - *pos += 1; - i ++; - } - commandName[i] = 0; - i = 0; - *pos += 1; - if (buffer[*pos] == '[') - { - *pos += 1; - noArgs = (int)(buffer[*pos]) - 48; - *pos += 2; // read past argument and '[' - } - bool end = FALSE; - int braceCount = 0; - while (!end) - { - char ch = buffer[*pos]; - if (ch == '{') - braceCount ++; - else if (ch == '}') - { - braceCount --; - if (braceCount == 0) - end = TRUE; - } - else if (ch == 0) - { - if (!read_a_line(buffer)) - end = TRUE; - *pos = 0; - break; - } - commandValue[i] = ch; - i ++; - *pos += 1; - } - commandValue[i] = 0; - - CustomMacro *macro = new CustomMacro(commandName, noArgs, NULL); - if (strlen(commandValue) > 0) - macro->macroBody = copystring(commandValue); - if (!CustomMacroList.Find(commandName)) - { - CustomMacroList.Append(commandName, macro); - AddMacroDef(ltCUSTOM_MACRO, commandName, noArgs); - } - return TRUE; - } - else return FALSE; -} - -void MacroError(char *buffer) -{ - char errBuf[300]; - char macroBuf[200]; - macroBuf[0] = '\\'; - int i = 1; - char ch; - while (((ch = buffer[i-1]) != '\n') && (ch != 0)) - { - macroBuf[i] = ch; - i ++; - } - macroBuf[i] = 0; - if (i > 20) - macroBuf[20] = 0; - - sprintf(errBuf, "Could not find macro: %s at line %d, file %s", - macroBuf, (int)(LineNumbers[CurrentInputIndex]-1), FileNames[CurrentInputIndex]); - OnError(errBuf); -} - -/* - * Parse an argument. - * 'environment' specifies the name of the macro IFF if we're looking for the end - * of an environment, e.g. \end{itemize}. Otherwise it's NULL. - * 'parseToBrace' is TRUE if the argument should extend to the next right brace, - * e.g. in {\bf an argument} as opposed to \vskip 30pt - * - */ -int ParseArg(TexChunk *thisArg, wxList& children, char *buffer, int pos, char *environment, bool parseToBrace, TexChunk *customMacroArgs) -{ - Tex2RTFYield(); - if (stopRunning) return pos; - - bool eof = FALSE; - BigBuffer[0] = 0; - int buf_ptr = 0; - int len; - -/* - - // Consume leading brace or square bracket, but ONLY if not following - // a space, because this could be e.g. {\large {\bf thing}} where {\bf thing} - // is the argument of \large AS WELL as being a block in its - // own right. - if (!environment) - { - if ((pos > 0) && (buffer[pos-1] != ' ') && buffer[pos] == '{') - pos ++; - else - - if ((pos > 0) && (buffer[pos-1] != ' ') && (buffer[pos] == '[' || buffer[pos] == '(')) - { - isOptional = TRUE; - pos ++; - } - else if ((pos > 1) && (buffer[pos-1] != ' ') && (buffer[pos+1] == '[' || buffer[pos+1] == '(')) - { - isOptional = TRUE; - pos += 2; - } - } -*/ - - // If not parsing to brace, just read the next word - // (e.g. \vskip 20pt) - if (!parseToBrace) - { - int ch = buffer[pos]; - while (!eof && ch != 13 && ch != 32 && ch != 10 && - ch != 0 && ch != '{') - { - BigBuffer[buf_ptr] = ch; - buf_ptr ++; - pos ++; - ch = buffer[pos]; - } - if (buf_ptr > 0) - { - TexChunk *chunk = new TexChunk(CHUNK_TYPE_STRING); - BigBuffer[buf_ptr] = 0; - buf_ptr = 0; - chunk->value = copystring(BigBuffer); - children.Append((wxObject *)chunk); - } - return pos; - } - - while (!eof) - { - len = strlen(buffer); - if (pos >= len) - { - if (customMacroArgs) return 0; - - eof = read_a_line(buffer); - pos = 0; - len = strlen(buffer); - // Check for verbatim (or toocomplex, which comes to the same thing) - if (strncmp(buffer, "\\begin{verbatim}", 16) == 0 || - strncmp(buffer, "\\begin{toocomplex}", 18) == 0) - { - if (buf_ptr > 0) - { - TexChunk *chunk = new TexChunk(CHUNK_TYPE_STRING); - BigBuffer[buf_ptr] = 0; - buf_ptr = 0; - chunk->value = copystring(BigBuffer); - children.Append((wxObject *)chunk); - } - BigBuffer[0] = 0; - buf_ptr = 0; - - eof = read_a_line(buffer); - while (!eof && (strncmp(buffer, "\\end{verbatim}", 14) != 0) && - (strncmp(buffer, "\\end{toocomplex}", 16) != 0) - ) - { - strcat(BigBuffer, buffer); - buf_ptr += strlen(buffer); - eof = read_a_line(buffer); - } - eof = read_a_line(buffer); - buf_ptr = 0; - - TexChunk *chunk = new TexChunk(CHUNK_TYPE_MACRO, VerbatimMacroDef); - chunk->no_args = 1; - chunk->macroId = ltVERBATIM; - TexChunk *arg = new TexChunk(CHUNK_TYPE_ARG, VerbatimMacroDef); - arg->argn = 1; - arg->macroId = ltVERBATIM; - TexChunk *str = new TexChunk(CHUNK_TYPE_STRING); - str->value = copystring(BigBuffer); - - children.Append((wxObject *)chunk); - chunk->children.Append((wxObject *)arg); - arg->children.Append((wxObject *)str); - - // Also want to include the following newline (is always a newline - // after a verbatim): EXCEPT in HTML - if (convertMode != TEX_HTML) - { - TexMacroDef *parDef = (TexMacroDef *)MacroDefs.Get("\\"); - TexChunk *parChunk = new TexChunk(CHUNK_TYPE_MACRO, parDef); - parChunk->no_args = 0; - parChunk->macroId = ltBACKSLASHCHAR; - children.Append((wxObject *)parChunk); - } - } - } - - char ch = buffer[pos]; - // End of optional argument -- pretend it's right brace for simplicity - if (thisArg->optional && (ch == ']')) - ch = '}'; - - switch (ch) - { - case 0: - case '}': // End of argument - { - if (buf_ptr > 0) - { - TexChunk *chunk = new TexChunk(CHUNK_TYPE_STRING); - BigBuffer[buf_ptr] = 0; - buf_ptr = 0; - chunk->value = copystring(BigBuffer); - children.Append((wxObject *)chunk); - } - if (ch == '}') pos ++; - return pos; - break; - } - case '\\': - { - if (buf_ptr > 0) // Finish off the string we've read so far - { - TexChunk *chunk = new TexChunk(CHUNK_TYPE_STRING); - BigBuffer[buf_ptr] = 0; - buf_ptr = 0; - chunk->value = copystring(BigBuffer); - children.Append((wxObject *)chunk); - } - pos ++; - - - // Try matching \end{environment} - if (environment && FindEndEnvironment(buffer, &pos, environment)) - { - // Eliminate newline after an \end{} if possible - if (buffer[pos] == 13) - { - pos ++; - if (buffer[pos] == 10) - pos ++; - } - return pos; - } - - if (ParseNewCommand(buffer, &pos)) - break; - - if (strncmp(buffer+pos, "special", 7) == 0) - { - pos += 7; - - // Discard { - pos ++; - int noBraces = 1; - - wxBuffer[0] = 0; - int i = 0; - bool end = FALSE; - while (!end) - { - int ch = buffer[pos]; - if (ch == '}') - { - noBraces --; - if (noBraces == 0) - { - wxBuffer[i] = 0; - end = TRUE; - } - else - { - wxBuffer[i] = '}'; - i ++; - } - pos ++; - } - else if (ch == '{') - { - wxBuffer[i] = '{'; - i ++; - pos ++; - } - else if (ch == '\\' && buffer[pos+1] == '}') - { - wxBuffer[i] = '}'; - pos += 2; - i++; - } - else if (ch == '\\' && buffer[pos+1] == '{') - { - wxBuffer[i] = '{'; - pos += 2; - i++; - } - else - { - wxBuffer[i] = ch; - pos ++; - i ++; - if (ch == 0) - end = TRUE; - } - } - TexChunk *chunk = new TexChunk(CHUNK_TYPE_MACRO); - chunk->no_args = 1; - chunk->macroId = ltSPECIAL; - TexMacroDef *specialDef = (TexMacroDef *)MacroDefs.Get("special"); - chunk->def = specialDef; - TexChunk *arg = new TexChunk(CHUNK_TYPE_ARG, specialDef); - chunk->children.Append((wxObject *)arg); - arg->argn = 1; - arg->macroId = chunk->macroId; - - // The value in the first argument. - TexChunk *argValue = new TexChunk(CHUNK_TYPE_STRING); - arg->children.Append((wxObject *)argValue); - argValue->argn = 1; - argValue->value = copystring(wxBuffer); - - children.Append((wxObject *)chunk); - } - else if (strncmp(buffer+pos, "verb", 4) == 0) - { - pos += 4; - if (buffer[pos] == '*') - pos ++; - - // Find the delimiter character - int ch = buffer[pos]; - pos ++; - // Now at start of verbatim text - int j = pos; - while ((buffer[pos] != ch) && buffer[pos] != 0) - pos ++; - char *val = new char[pos - j + 1]; - int i; - for (i = j; i < pos; i++) - { - val[i-j] = buffer[i]; - } - val[i-j] = 0; - - pos ++; - - TexChunk *chunk = new TexChunk(CHUNK_TYPE_MACRO); - chunk->no_args = 1; - chunk->macroId = ltVERB; - TexMacroDef *verbDef = (TexMacroDef *)MacroDefs.Get("verb"); - chunk->def = verbDef; - TexChunk *arg = new TexChunk(CHUNK_TYPE_ARG, verbDef); - chunk->children.Append((wxObject *)arg); - arg->argn = 1; - arg->macroId = chunk->macroId; - - // The value in the first argument. - TexChunk *argValue = new TexChunk(CHUNK_TYPE_STRING); - arg->children.Append((wxObject *)argValue); - argValue->argn = 1; - argValue->value = val; - - children.Append((wxObject *)chunk); - } - else - { - char *env = NULL; - bool tmpParseToBrace = TRUE; - TexMacroDef *def = MatchMacro(buffer, &pos, &env, &tmpParseToBrace); - if (def) - { - CustomMacro *customMacro = FindCustomMacro(def->name); - - TexChunk *chunk = new TexChunk(CHUNK_TYPE_MACRO, def); - chunk->no_args = def->no_args; -// chunk->name = copystring(def->name); - chunk->macroId = def->macroId; - - if (!customMacro) - children.Append((wxObject *)chunk); - - // Eliminate newline after a \begin{} or a \\ if possible - if (env || strcmp(def->name, "\\") == 0) - if (buffer[pos] == 13) - { - pos ++; - if (buffer[pos] == 10) - pos ++; - } - - pos = ParseMacroBody(def->name, chunk, chunk->no_args, - buffer, pos, env, tmpParseToBrace, customMacroArgs); - - // If custom macro, parse the body substituting the above found args. - if (customMacro) - { - if (customMacro->macroBody) - { - char macroBuf[300]; -// strcpy(macroBuf, "{"); - strcpy(macroBuf, customMacro->macroBody); - strcat(macroBuf, "}"); - ParseArg(thisArg, children, macroBuf, 0, NULL, TRUE, chunk); - } - -// delete chunk; // Might delete children - } - } - else - { - MacroError(buffer+pos); - } - } - break; - } - // Parse constructs like {\bf thing} as if they were - // \bf{thing} - case '{': - { - pos ++; - if (buffer[pos] == '\\') - { - if (buf_ptr > 0) - { - TexChunk *chunk = new TexChunk(CHUNK_TYPE_STRING); - BigBuffer[buf_ptr] = 0; - buf_ptr = 0; - chunk->value = copystring(BigBuffer); - children.Append((wxObject *)chunk); - } - pos ++; - - char *env; - bool tmpParseToBrace; - TexMacroDef *def = MatchMacro(buffer, &pos, &env, &tmpParseToBrace); - if (def) - { - CustomMacro *customMacro = FindCustomMacro(def->name); - - TexChunk *chunk = new TexChunk(CHUNK_TYPE_MACRO, def); - chunk->no_args = def->no_args; -// chunk->name = copystring(def->name); - chunk->macroId = def->macroId; - if (!customMacro) - children.Append((wxObject *)chunk); - - pos = ParseMacroBody(def->name, chunk, chunk->no_args, - buffer, pos, NULL, TRUE, customMacroArgs); - - // If custom macro, parse the body substituting the above found args. - if (customMacro) - { - if (customMacro->macroBody) - { - char macroBuf[300]; -// strcpy(macroBuf, "{"); - strcpy(macroBuf, customMacro->macroBody); - strcat(macroBuf, "}"); - ParseArg(thisArg, children, macroBuf, 0, NULL, TRUE, chunk); - } - -// delete chunk; // Might delete children - } - } - else - { - MacroError(buffer+pos); - } - } - else - { - /* - * If all else fails, we assume that we have - * a pair of braces on their own, so return a `dummy' macro - * definition with just one argument to parse. - */ - if (!SoloBlockDef) - { - SoloBlockDef = new TexMacroDef(ltSOLO_BLOCK, "solo block", 1, FALSE); - } - // Save text so far - if (buf_ptr > 0) - { - TexChunk *chunk1 = new TexChunk(CHUNK_TYPE_STRING); - BigBuffer[buf_ptr] = 0; - buf_ptr = 0; - chunk1->value = copystring(BigBuffer); - children.Append((wxObject *)chunk1); - } - TexChunk *chunk = new TexChunk(CHUNK_TYPE_MACRO, SoloBlockDef); - chunk->no_args = SoloBlockDef->no_args; -// chunk->name = copystring(SoloBlockDef->name); - chunk->macroId = SoloBlockDef->macroId; - children.Append((wxObject *)chunk); - - TexChunk *arg = new TexChunk(CHUNK_TYPE_ARG, SoloBlockDef); - - chunk->children.Append((wxObject *)arg); -// arg->name = copystring(SoloBlockDef->name); - arg->argn = 1; - arg->macroId = chunk->macroId; - - pos = ParseArg(arg, arg->children, buffer, pos, NULL, TRUE, customMacroArgs); - } - break; - } - case '$': - { - if (buf_ptr > 0) - { - TexChunk *chunk = new TexChunk(CHUNK_TYPE_STRING); - BigBuffer[buf_ptr] = 0; - buf_ptr = 0; - chunk->value = copystring(BigBuffer); - children.Append((wxObject *)chunk); - } - - pos ++; - - if (buffer[pos] == '$') - { - TexChunk *chunk = new TexChunk(CHUNK_TYPE_MACRO); - chunk->no_args = 0; -// chunk->name = copystring("$$"); - chunk->macroId = ltSPECIALDOUBLEDOLLAR; - children.Append((wxObject *)chunk); - pos ++; - } - else - { - TexChunk *chunk = new TexChunk(CHUNK_TYPE_MACRO); - chunk->no_args = 0; -// chunk->name = copystring("_$"); - chunk->macroId = ltSPECIALDOLLAR; - children.Append((wxObject *)chunk); - } - break; - } - case '~': - { - if (buf_ptr > 0) - { - TexChunk *chunk = new TexChunk(CHUNK_TYPE_STRING); - BigBuffer[buf_ptr] = 0; - buf_ptr = 0; - chunk->value = copystring(BigBuffer); - children.Append((wxObject *)chunk); - } - - pos ++; - TexChunk *chunk = new TexChunk(CHUNK_TYPE_MACRO); - chunk->no_args = 0; -// chunk->name = copystring("_~"); - chunk->macroId = ltSPECIALTILDE; - children.Append((wxObject *)chunk); - break; - } - case '#': // Either treat as a special TeX character or as a macro arg - { - if (buf_ptr > 0) - { - TexChunk *chunk = new TexChunk(CHUNK_TYPE_STRING); - BigBuffer[buf_ptr] = 0; - buf_ptr = 0; - chunk->value = copystring(BigBuffer); - children.Append((wxObject *)chunk); - } - - pos ++; - if (!customMacroArgs) - { - TexChunk *chunk = new TexChunk(CHUNK_TYPE_MACRO); - chunk->no_args = 0; -// chunk->name = copystring("_#"); - chunk->macroId = ltSPECIALHASH; - children.Append((wxObject *)chunk); - } - else - { - if (isdigit(buffer[pos])) - { - int n = buffer[pos] - 48; - pos ++; - wxNode *node = customMacroArgs->children.Nth(n-1); - if (node) - { - TexChunk *argChunk = (TexChunk *)node->Data(); - children.Append((wxObject *)new TexChunk(*argChunk)); - } - } - } - break; - } - case '&': - { - // Remove white space before and after the ampersand, - // since this is probably a table column separator with - // some convenient -- but useless -- white space in the text. - while ((buf_ptr > 0) && ((BigBuffer[buf_ptr-1] == ' ') || (BigBuffer[buf_ptr-1] == 9))) - buf_ptr --; - - if (buf_ptr > 0) - { - TexChunk *chunk = new TexChunk(CHUNK_TYPE_STRING); - BigBuffer[buf_ptr] = 0; - buf_ptr = 0; - chunk->value = copystring(BigBuffer); - children.Append((wxObject *)chunk); - } - - pos ++; - - while (buffer[pos] == ' ' || buffer[pos] == 9) - pos ++; - - TexChunk *chunk = new TexChunk(CHUNK_TYPE_MACRO); - chunk->no_args = 0; -// chunk->name = copystring("_&"); - chunk->macroId = ltSPECIALAMPERSAND; - children.Append((wxObject *)chunk); - break; - } - // Eliminate end-of-line comment - case '%': - { - ch = buffer[pos]; - while (ch != 10 && ch != 13 && ch != 0) - { - pos ++; - ch = buffer[pos]; - } - if (buffer[pos] == 10 || buffer[pos] == 13) - { - pos ++; - if (buffer[pos] == 10) pos ++; // Eliminate newline following DOS line feed - } - break; - } - // Eliminate tab - case 9: - { - BigBuffer[buf_ptr] = ' '; - BigBuffer[buf_ptr+1] = 0; - buf_ptr ++; - pos ++; - break; - } - default: - { - BigBuffer[buf_ptr] = ch; - BigBuffer[buf_ptr+1] = 0; - buf_ptr ++; - pos ++; - break; - } - } - } - return pos; -} - -/* - * Consume as many arguments as the macro definition specifies - * - */ - -int ParseMacroBody(char *macro_name, TexChunk *parent, - int no_args, char *buffer, int pos, - char *environment, bool parseToBrace, - TexChunk *customMacroArgs) -{ - Tex2RTFYield(); - if (stopRunning) return pos; - - // Check for a first optional argument - if (buffer[pos] == ' ' && buffer[pos+1] == '[') - { - // Fool following code into thinking that this is definitely - // an optional first argument. (If a space before a non-first argument, - // [ is interpreted as a [, not an optional argument.) - buffer[pos] = '!'; - pos ++; - no_args ++; - } - else - if (buffer[pos] == '[') - no_args ++; - - int maxArgs = 0; - - int i; - for (i = 0; i < no_args; i++) - { - maxArgs ++; - TexChunk *arg = new TexChunk(CHUNK_TYPE_ARG, parent->def); - - parent->children.Append((wxObject *)arg); -// arg->name = copystring(macro_name); - arg->argn = maxArgs; - arg->macroId = parent->macroId; - - // To parse the first arg of a 2 arg \begin{thing}{arg} ... \end{thing} - // have to fool parser into thinking this is a regular kind of block. - char *actualEnv; - if ((no_args == 2) && (i == 0)) - actualEnv = NULL; - else - actualEnv = environment; - - bool isOptional = FALSE; - - // Remove the first { of the argument so it doesn't get recognized as { ... } -// EatWhiteSpace(buffer, &pos); - if (!actualEnv) - { - // The reason for these tests is to not consume braces that don't - // belong to this macro. - // E.g. {\bf {\small thing}} - if ((pos > 0) && (buffer[pos-1] != ' ') && buffer[pos] == '{') - pos ++; - else - if ((pos > 0) && (buffer[pos-1] != ' ') && (buffer[pos] == '[')) - { - isOptional = TRUE; - pos ++; - } - else if ((pos > 1) && (buffer[pos-1] != ' ') && (buffer[pos+1] == '[')) - { - isOptional = TRUE; - pos += 2; - } - } - arg->optional = isOptional; - - pos = ParseArg(arg, arg->children, buffer, pos, actualEnv, parseToBrace, customMacroArgs); - - // If we've encountered an OPTIONAL argument, go another time around - // the loop, because we've got more than we thought. - // Hopefully optional args don't occur at the end of a macro use - // or we might miss it. - // Don't increment no of times round loop if the first optional arg - // -- we already did it before the loop. - if (arg->optional && (i > 0)) - i --; - } - parent->no_args = maxArgs; - - // Tell each argument how many args there are (useful when processing an arg) - wxNode *node = parent->children.First(); - while (node) - { - TexChunk *chunk = (TexChunk *)node->Data(); - chunk->no_args = maxArgs; - node = node->Next(); - } - return pos; -} - -bool TexLoadFile(char *filename) -{ - stopRunning = FALSE; - strcpy(TexFileRoot, filename); - StripExtension(TexFileRoot); - sprintf(TexBibName, "%s.bb", TexFileRoot); - sprintf(TexTmpBibName, "%s.bb1", TexFileRoot); - - TexPathList.EnsureFileAccessible(filename); - -#ifdef __WXMSW__ - static char *line_buffer = new char[600]; -#else - static char *line_buffer = new char[11000]; -#endif - - Inputs[0] = fopen(filename, "r"); - LineNumbers[0] = 1; - FileNames[0] = copystring(filename); - if (Inputs[0]) - { - read_a_line(line_buffer); - ParseMacroBody("toplevel", TopLevel, 1, line_buffer, 0, NULL, TRUE); - if (Inputs[0]) fclose(Inputs[0]); - return TRUE; - } - else return FALSE; -} - -TexMacroDef::TexMacroDef(int the_id, char *the_name, int n, bool ig, bool forbidLevel) -{ - name = copystring(the_name); - no_args = n; - ignore = ig; - macroId = the_id; - forbidden = forbidLevel; -} - -TexMacroDef::~TexMacroDef(void) -{ - if (name) delete[] name; -} - -TexChunk::TexChunk(int the_type, TexMacroDef *the_def) -{ - type = the_type; - no_args = 0; - argn = 0; -// name = NULL; - def = the_def; - macroId = 0; - value = NULL; - optional = FALSE; -} - -TexChunk::TexChunk(TexChunk& toCopy) -{ - type = toCopy.type; - no_args = toCopy.no_args; - argn = toCopy.argn; - macroId = toCopy.macroId; - -// if (toCopy.name) -// name = copystring(toCopy.name); -// else -// name = NULL; - def = toCopy.def; - - if (toCopy.value) - value = copystring(toCopy.value); - else - value = NULL; - - optional = toCopy.optional; - wxNode *node = toCopy.children.First(); - while (node) - { - TexChunk *child = (TexChunk *)node->Data(); - children.Append((wxObject *)new TexChunk(*child)); - node = node->Next(); - } -} - -TexChunk::~TexChunk(void) -{ -// if (name) delete[] name; - if (value) delete[] value; - wxNode *node = children.First(); - while (node) - { - TexChunk *child = (TexChunk *)node->Data(); - delete child; - wxNode *next = node->Next(); - delete node; - node = next; - } -} - -bool IsArgOptional(void) // Is this argument an optional argument? -{ - return isArgOptional; -} - -int GetNoArgs(void) // Number of args for this macro -{ - return noArgs; -} - -/* Gets the text of a chunk on request (must be for small arguments - * only!) - * - */ - -void GetArgData1(TexChunk *chunk) -{ - switch (chunk->type) - { - case CHUNK_TYPE_MACRO: - { - TexMacroDef *def = chunk->def; - if (def && def->ignore) - return; - - if (def && (strcmp(def->name, "solo block") != 0)) - { - strcat(currentArgData, "\\"); - strcat(currentArgData, def->name); - } - - wxNode *node = chunk->children.First(); - while (node) - { - TexChunk *child_chunk = (TexChunk *)node->Data(); - strcat(currentArgData, "{"); - GetArgData1(child_chunk); - strcat(currentArgData, "}"); - node = node->Next(); - } - break; - } - case CHUNK_TYPE_ARG: - { - wxNode *node = chunk->children.First(); - while (node) - { - TexChunk *child_chunk = (TexChunk *)node->Data(); - GetArgData1(child_chunk); - node = node->Next(); - } - break; - } - case CHUNK_TYPE_STRING: - { - if (chunk->value) - strcat(currentArgData, chunk->value); - break; - } - } -} - -char *GetArgData(TexChunk *chunk) -{ - currentArgData[0] = 0; - GetArgData1(currentArgument); - haveArgData = FALSE; - return currentArgData; -} - -char *GetArgData(void) -{ - if (!haveArgData) - { - currentArgData[0] = 0; - GetArgData1(currentArgument); - } - return currentArgData; -} - -TexChunk *GetArgChunk(void) -{ - return currentArgument; -} - -TexChunk *GetNextChunk(void) // Look ahead to the next chunk -{ - return nextChunk; -} - -TexChunk *GetTopLevelChunk(void) -{ - return TopLevel; -} - -int GetCurrentColumn(void) -{ - return currentColumn; -} - -/* - * Traverses document calling functions to allow the client to - * write out the appropriate stuff - */ - - -void TraverseFromChunk(TexChunk *chunk, wxNode *thisNode, bool childrenOnly) -{ - Tex2RTFYield(); - if (stopRunning) return; - - switch (chunk->type) - { - case CHUNK_TYPE_MACRO: - { - TexMacroDef *def = chunk->def; - if (def && def->ignore) - return; - - if (!childrenOnly) - OnMacro(chunk->macroId, chunk->no_args, TRUE); - - wxNode *node = chunk->children.First(); - while (node) - { - TexChunk *child_chunk = (TexChunk *)node->Data(); - TraverseFromChunk(child_chunk, node); - node = node->Next(); - } - - if (thisNode && thisNode->Next()) nextChunk = (TexChunk *)thisNode->Next()->Data(); - - if (!childrenOnly) - OnMacro(chunk->macroId, chunk->no_args, FALSE); - break; - } - case CHUNK_TYPE_ARG: - { - currentArgument = chunk; - - isArgOptional = chunk->optional; - noArgs = chunk->no_args; - - // If OnArgument returns FALSE, don't output. - - if (childrenOnly || OnArgument(chunk->macroId, chunk->argn, TRUE)) - { - wxNode *node = chunk->children.First(); - while (node) - { - TexChunk *child_chunk = (TexChunk *)node->Data(); - TraverseFromChunk(child_chunk, node); - node = node->Next(); - } - } - - currentArgument = chunk; - - if (thisNode && thisNode->Next()) nextChunk = (TexChunk *)thisNode->Next()->Data(); - - isArgOptional = chunk->optional; - noArgs = chunk->no_args; - - if (!childrenOnly) - (void)OnArgument(chunk->macroId, chunk->argn, FALSE); - break; - } - case CHUNK_TYPE_STRING: - { - extern int issuedNewParagraph; - extern int forbidResetPar; - if (chunk->value && (forbidResetPar == 0)) - { - // If non-whitespace text, we no longer have a new paragraph. - if (issuedNewParagraph && !((chunk->value[0] == 10 || chunk->value[0] == 13 || chunk->value[0] == 32) - && chunk->value[1] == 0)) - issuedNewParagraph = FALSE; - TexOutput(chunk->value, TRUE); - } - break; - } - } -} - -void TraverseDocument(void) -{ - TraverseFromChunk(TopLevel, NULL); -} - -void SetCurrentOutput(FILE *fd) -{ - CurrentOutput1 = fd; - CurrentOutput2 = NULL; -} - -void SetCurrentOutputs(FILE *fd1, FILE *fd2) -{ - CurrentOutput1 = fd1; - CurrentOutput2 = fd2; -} - -void AddMacroDef(int the_id, char *name, int n, bool ignore, bool forbid) -{ - MacroDefs.Put(name, new TexMacroDef(the_id, name, n, ignore, forbid)); -} - -void TexInitialize(int bufSize) -{ - InitialiseColourTable(); -#ifdef __WXMSW__ - TexPathList.AddEnvList("TEXINPUT"); -#endif -#ifdef __UNIX__ - TexPathList.AddEnvList("TEXINPUTS"); -#endif - int i; - for (i = 0; i < 15; i++) - { - Inputs[i] = NULL; - LineNumbers[i] = 1; - FileNames[i] = NULL; - } - - IgnorableInputFiles.Add("psbox.tex"); - BigBuffer = new char[(bufSize*1000)]; - currentArgData = new char[2000]; - TexFileRoot = new char[300]; - TexBibName = new char[300]; - TexTmpBibName = new char[300]; - AddMacroDef(ltTOPLEVEL, "toplevel", 1); - TopLevel = new TexChunk(CHUNK_TYPE_MACRO); -// TopLevel->name = copystring("toplevel"); - TopLevel->macroId = ltTOPLEVEL; - TopLevel->no_args = 1; - VerbatimMacroDef = (TexMacroDef *)MacroDefs.Get("verbatim"); -} - -void TexCleanUp(void) -{ - int i; - for (i = 0; i < 15; i++) - Inputs[i] = NULL; - - chapterNo = 0; - sectionNo = 0; - subsectionNo = 0; - subsubsectionNo = 0; - figureNo = 0; - - CurrentOutput1 = NULL; - CurrentOutput2 = NULL; - CurrentInputIndex = 0; - haveArgData = FALSE; - noArgs = 0; - - if (TopLevel) - delete TopLevel; - TopLevel = new TexChunk(CHUNK_TYPE_MACRO); -// TopLevel->name = copystring("toplevel"); - TopLevel->macroId = ltTOPLEVEL; - TopLevel->no_args = 1; - - DocumentTitle = NULL; - DocumentAuthor = NULL; - DocumentDate = NULL; - DocumentStyle = LATEX_REPORT; - MinorDocumentStyle = 0; - BibliographyStyleString = copystring("plain"); - DocumentStyleString = copystring("report"); - MinorDocumentStyleString = NULL; -/* Don't want to remove custom macros after each pass. - SetFontSizes(10); - wxNode *node = CustomMacroList.First(); - while (node) - { - CustomMacro *macro = (CustomMacro *)node->Data(); - delete macro; - delete node; - node = CustomMacroList.First(); - } -*/ - TexReferences.BeginFind(); - wxNode *node = TexReferences.Next(); - while (node) - { - TexRef *ref = (TexRef *)node->Data(); - delete ref; - node = TexReferences.Next(); - } - TexReferences.Clear(); - - node = BibList.First(); - while (node) - { - BibEntry *entry = (BibEntry *)node->Data(); - delete entry; - delete node; - node = BibList.First(); - } - CitationList.Clear(); - ResetTopicCounter(); -} - -// There is likely to be one set of macros used by all utilities. -void DefineDefaultMacros(void) -{ - // Put names which subsume other names at the TOP - // so they get recognized first - - AddMacroDef(ltACCENT_GRAVE, "`", 1); - AddMacroDef(ltACCENT_ACUTE, "'", 1); - AddMacroDef(ltACCENT_CARET, "^", 1); - AddMacroDef(ltACCENT_UMLAUT, "\"", 1); - AddMacroDef(ltACCENT_TILDE, "~", 1); - AddMacroDef(ltACCENT_DOT, ".", 1); - AddMacroDef(ltACCENT_CADILLA, "c", 1); - AddMacroDef(ltSMALLSPACE1, ",", 0); - AddMacroDef(ltSMALLSPACE2, ";", 0); - - AddMacroDef(ltABSTRACT, "abstract", 1); - AddMacroDef(ltADDCONTENTSLINE, "addcontentsline", 3); - AddMacroDef(ltADDTOCOUNTER, "addtocounter", 2); - AddMacroDef(ltALEPH, "aleph", 0); - AddMacroDef(ltALPHA, "alpha", 0); - AddMacroDef(ltALPH1, "alph", 1); - AddMacroDef(ltALPH2, "Alph", 1); - AddMacroDef(ltANGLE, "angle", 0); - AddMacroDef(ltAPPENDIX, "appendix", 0); - AddMacroDef(ltAPPROX, "approx", 0); - AddMacroDef(ltARABIC, "arabic", 1); - AddMacroDef(ltARRAY, "array", 1); - AddMacroDef(ltAST, "ast", 0); - AddMacroDef(ltASYMP, "asymp", 0); - AddMacroDef(ltAUTHOR, "author", 1); - - AddMacroDef(ltBACKGROUNDCOLOUR, "backgroundcolour", 1); - AddMacroDef(ltBACKGROUNDIMAGE, "backgroundimage", 1); - AddMacroDef(ltBACKGROUND, "background", 1); - AddMacroDef(ltBACKSLASHRAW, "backslashraw", 0); - AddMacroDef(ltBACKSLASH, "backslash", 0); - AddMacroDef(ltBASELINESKIP, "baselineskip", 1); - AddMacroDef(ltBCOL, "bcol", 2); - AddMacroDef(ltBETA, "beta", 0); - AddMacroDef(ltBFSERIES, "bfseries", 1); - AddMacroDef(ltBF, "bf", 1); - AddMacroDef(ltBIBITEM, "bibitem", 2); // For convenience, bibitem has 2 args: label and item. - // The Latex syntax permits writing as 2 args. - AddMacroDef(ltBIBLIOGRAPHYSTYLE, "bibliographystyle", 1); - AddMacroDef(ltBIBLIOGRAPHY, "bibliography", 1); - AddMacroDef(ltBIGTRIANGLEDOWN, "bigtriangledown", 0); - AddMacroDef(ltBOT, "bot", 0); - AddMacroDef(ltBOXIT, "boxit", 1); - AddMacroDef(ltBOX, "box", 0); - AddMacroDef(ltBRCLEAR, "brclear", 0); - AddMacroDef(ltBULLET, "bullet", 0); - - AddMacroDef(ltCAPTIONSTAR, "caption*", 1); - AddMacroDef(ltCAPTION, "caption", 1); - AddMacroDef(ltCAP, "cap", 0); - AddMacroDef(ltCDOTS, "cdots", 0); - AddMacroDef(ltCDOT, "cdot", 0); - AddMacroDef(ltCENTERLINE, "centerline", 1); - AddMacroDef(ltCENTERING, "centering", 0); - AddMacroDef(ltCENTER, "center", 1); - AddMacroDef(ltCEXTRACT, "cextract", 0); - AddMacroDef(ltCHAPTERHEADING, "chapterheading", 1); - AddMacroDef(ltCHAPTERSTAR, "chapter*", 1); - AddMacroDef(ltCHAPTER, "chapter", 1); - AddMacroDef(ltCHI, "chi", 0); - AddMacroDef(ltCINSERT, "cinsert", 0); - AddMacroDef(ltCIRC, "circ", 0); - AddMacroDef(ltCITE, "cite", 1); - AddMacroDef(ltCLASS, "class", 1); - AddMacroDef(ltCLEARDOUBLEPAGE, "cleardoublepage", 0); - AddMacroDef(ltCLEARPAGE, "clearpage", 0); - AddMacroDef(ltCLINE, "cline", 1); - AddMacroDef(ltCLIPSFUNC, "clipsfunc", 3); - AddMacroDef(ltCLUBSUIT, "clubsuit", 0); - AddMacroDef(ltCOLUMNSEP, "columnsep", 1); - AddMacroDef(ltCOMMENT, "comment", 1, TRUE); - AddMacroDef(ltCONG, "cong", 0); - AddMacroDef(ltCOPYRIGHT, "copyright", 0); - AddMacroDef(ltCPARAM, "cparam", 2); - AddMacroDef(ltCHEAD, "chead", 1); - AddMacroDef(ltCFOOT, "cfoot", 1); - AddMacroDef(ltCUP, "cup", 0); - - AddMacroDef(ltDASHV, "dashv", 0); - AddMacroDef(ltDATE, "date", 1); - AddMacroDef(ltDELTA, "delta", 0); - AddMacroDef(ltCAP_DELTA, "Delta", 0); - AddMacroDef(ltDEFINECOLOUR, "definecolour", 4); - AddMacroDef(ltDEFINECOLOR, "definecolor", 4); - AddMacroDef(ltDESCRIPTION, "description", 1); - AddMacroDef(ltDESTRUCT, "destruct", 1); - AddMacroDef(ltDIAMOND2, "diamond2", 0); - AddMacroDef(ltDIAMOND, "diamond", 0); - AddMacroDef(ltDIV, "div", 0); - AddMacroDef(ltDOCUMENTCLASS, "documentclass", 1); - AddMacroDef(ltDOCUMENTSTYLE, "documentstyle", 1); - AddMacroDef(ltDOCUMENT, "document", 1); - AddMacroDef(ltDOUBLESPACE, "doublespace", 1); - AddMacroDef(ltDOTEQ, "doteq", 0); - AddMacroDef(ltDOWNARROW, "downarrow", 0); - AddMacroDef(ltDOWNARROW2, "Downarrow", 0); - - AddMacroDef(ltEMPTYSET, "emptyset", 0); - AddMacroDef(ltEMPH, "emph", 1); - AddMacroDef(ltEM, "em", 1); - AddMacroDef(ltENUMERATE, "enumerate", 1); - AddMacroDef(ltEPSILON, "epsilon", 0); - AddMacroDef(ltEQUATION, "equation", 1); - AddMacroDef(ltEQUIV, "equiv", 0); - AddMacroDef(ltETA, "eta", 0); - AddMacroDef(ltEVENSIDEMARGIN, "evensidemargin", 1); - AddMacroDef(ltEXISTS, "exists", 0); - - AddMacroDef(ltFBOX, "fbox", 1); - AddMacroDef(ltFCOL, "fcol", 2); - AddMacroDef(ltFIGURE, "figure", 1); - AddMacroDef(ltFIGURESTAR, "figure*", 1); - AddMacroDef(ltFLUSHLEFT, "flushleft", 1); - AddMacroDef(ltFLUSHRIGHT, "flushright", 1); - AddMacroDef(ltFOLLOWEDLINKCOLOUR, "followedlinkcolour", 1); - AddMacroDef(ltFOOTHEIGHT, "footheight", 1); - AddMacroDef(ltFOOTNOTEPOPUP, "footnotepopup", 2); - AddMacroDef(ltFOOTNOTE, "footnote", 1); - AddMacroDef(ltFOOTSKIP, "footskip", 1); - AddMacroDef(ltFORALL, "forall", 0); - AddMacroDef(ltFRAMEBOX, "framebox", 1); - AddMacroDef(ltFROWN, "frown", 0); - AddMacroDef(ltFUNCTIONSECTION, "functionsection", 1); - AddMacroDef(ltFUNC, "func", 3); - AddMacroDef(ltFOOTNOTESIZE, "footnotesize", 0); - AddMacroDef(ltFANCYPLAIN, "fancyplain", 2); - - AddMacroDef(ltGAMMA, "gamma", 0); - AddMacroDef(ltCAP_GAMMA, "Gamma", 0); - AddMacroDef(ltGEQ, "geq", 0); - AddMacroDef(ltGE, "ge", 0); - AddMacroDef(ltGG, "gg", 0); - AddMacroDef(ltGLOSSARY, "glossary", 1); - AddMacroDef(ltGLOSS, "gloss", 1); - - AddMacroDef(ltHEADHEIGHT, "headheight", 1); - AddMacroDef(ltHEARTSUIT, "heartsuit", 0); - AddMacroDef(ltHELPGLOSSARY, "helpglossary", 1); - AddMacroDef(ltHELPIGNORE, "helpignore", 1, TRUE); - AddMacroDef(ltHELPONLY, "helponly", 1); - AddMacroDef(ltHELPINPUT, "helpinput", 1); - AddMacroDef(ltHELPFONTFAMILY, "helpfontfamily", 1); - AddMacroDef(ltHELPFONTSIZE, "helpfontsize", 1); - AddMacroDef(ltHELPREFN, "helprefn", 2); - AddMacroDef(ltHELPREF, "helpref", 2); - AddMacroDef(ltHFILL, "hfill", 0); - AddMacroDef(ltHLINE, "hline", 0); - AddMacroDef(ltHRULE, "hrule", 0); - AddMacroDef(ltHSPACESTAR, "hspace*", 1); - AddMacroDef(ltHSPACE, "hspace", 1); - AddMacroDef(ltHSKIPSTAR, "hskip*", 1); - AddMacroDef(ltHSKIP, "hskip", 1); - AddMacroDef(lthuge, "huge", 1); - AddMacroDef(ltHuge, "Huge", 1); - AddMacroDef(ltHUGE, "HUGE", 1); - AddMacroDef(ltHTMLIGNORE, "htmlignore", 1); - AddMacroDef(ltHTMLONLY, "htmlonly", 1); - - AddMacroDef(ltIM, "im", 0); - AddMacroDef(ltINCLUDEONLY, "includeonly", 1); - AddMacroDef(ltINCLUDE, "include", 1); - AddMacroDef(ltINDENTED, "indented", 2); - AddMacroDef(ltINDEX, "index", 1); - AddMacroDef(ltINPUT, "input", 1, TRUE); - AddMacroDef(ltIOTA, "iota", 0); - AddMacroDef(ltITEMIZE, "itemize", 1); - AddMacroDef(ltITEM, "item", 0); - AddMacroDef(ltIMAGEMAP, "imagemap", 3); - AddMacroDef(ltIMAGEL, "imagel", 2); - AddMacroDef(ltIMAGER, "imager", 2); - AddMacroDef(ltIMAGE, "image", 2); - AddMacroDef(ltIN, "in", 0); - AddMacroDef(ltINFTY, "infty", 0); - AddMacroDef(ltITSHAPE, "itshape", 1); - AddMacroDef(ltIT, "it", 1); - AddMacroDef(ltITEMSEP, "itemsep", 1); - AddMacroDef(ltINSERTATLEVEL, "insertatlevel", 2); - - AddMacroDef(ltKAPPA, "kappa", 0); - AddMacroDef(ltKILL, "kill", 0); - - AddMacroDef(ltLABEL, "label", 1); - AddMacroDef(ltLAMBDA, "lambda", 0); - AddMacroDef(ltCAP_LAMBDA, "Lambda", 0); - AddMacroDef(ltlarge, "large", 1); - AddMacroDef(ltLarge, "Large", 1); - AddMacroDef(ltLARGE, "LARGE", 1); - AddMacroDef(ltLATEXIGNORE, "latexignore", 1); - AddMacroDef(ltLATEXONLY, "latexonly", 1); - AddMacroDef(ltLATEX, "LaTeX", 0); - AddMacroDef(ltLBOX, "lbox", 1); - AddMacroDef(ltLBRACERAW, "lbraceraw", 0); - AddMacroDef(ltLDOTS, "ldots", 0); - AddMacroDef(ltLEQ, "leq", 0); - AddMacroDef(ltLE, "le", 0); - AddMacroDef(ltLEFTARROW, "leftarrow", 0); - AddMacroDef(ltLEFTRIGHTARROW, "leftrightarrow", 0); - AddMacroDef(ltLEFTARROW2, "Leftarrow", 0); - AddMacroDef(ltLEFTRIGHTARROW2, "Leftrightarrow", 0); - AddMacroDef(ltLINEBREAK, "linebreak", 0); - AddMacroDef(ltLINKCOLOUR, "linkcolour", 1); - AddMacroDef(ltLISTOFFIGURES, "listoffigures", 0); - AddMacroDef(ltLISTOFTABLES, "listoftables", 0); - AddMacroDef(ltLHEAD, "lhead", 1); - AddMacroDef(ltLFOOT, "lfoot", 1); - AddMacroDef(ltLOWERCASE, "lowercase", 1); - AddMacroDef(ltLL, "ll", 0); - - AddMacroDef(ltMAKEGLOSSARY, "makeglossary", 0); - AddMacroDef(ltMAKEINDEX, "makeindex", 0); - AddMacroDef(ltMAKETITLE, "maketitle", 0); - AddMacroDef(ltMARKRIGHT, "markright", 1); - AddMacroDef(ltMARKBOTH, "markboth", 2); - AddMacroDef(ltMARGINPARWIDTH, "marginparwidth", 1); - AddMacroDef(ltMARGINPARSEP, "marginparsep", 1); - AddMacroDef(ltMARGINPARODD, "marginparodd", 1); - AddMacroDef(ltMARGINPAREVEN, "marginpareven", 1); - AddMacroDef(ltMARGINPAR, "marginpar", 1); - AddMacroDef(ltMBOX, "mbox", 1); - AddMacroDef(ltMDSERIES, "mdseries", 1); - AddMacroDef(ltMEMBERSECTION, "membersection", 1); - AddMacroDef(ltMEMBER, "member", 2); - AddMacroDef(ltMID, "mid", 0); - AddMacroDef(ltMODELS, "models", 0); - AddMacroDef(ltMP, "mp", 0); - AddMacroDef(ltMULTICOLUMN, "multicolumn", 3); - AddMacroDef(ltMU, "mu", 0); - - AddMacroDef(ltNABLA, "nabla", 0); - AddMacroDef(ltNEG, "neg", 0); - AddMacroDef(ltNEQ, "neq", 0); - AddMacroDef(ltNEWCOUNTER, "newcounter", 1, FALSE, FORBID_ABSOLUTELY); - AddMacroDef(ltNEWLINE, "newline", 0); - AddMacroDef(ltNEWPAGE, "newpage", 0); - AddMacroDef(ltNI, "ni", 0); - AddMacroDef(ltNOCITE, "nocite", 1); - AddMacroDef(ltNOINDENT, "noindent", 0); - AddMacroDef(ltNOLINEBREAK, "nolinebreak", 0); - AddMacroDef(ltNOPAGEBREAK, "nopagebreak", 0); - AddMacroDef(ltNORMALSIZE, "normalsize", 1); - AddMacroDef(ltNORMALBOX, "normalbox", 1); - AddMacroDef(ltNORMALBOXD, "normalboxd", 1); - AddMacroDef(ltNOTEQ, "noteq", 0); - AddMacroDef(ltNOTIN, "notin", 0); - AddMacroDef(ltNOTSUBSET, "notsubset", 0); - AddMacroDef(ltNU, "nu", 0); - - AddMacroDef(ltODDSIDEMARGIN, "oddsidemargin", 1); - AddMacroDef(ltOMEGA, "omega", 0); - AddMacroDef(ltCAP_OMEGA, "Omega", 0); - AddMacroDef(ltONECOLUMN, "onecolumn", 0); - AddMacroDef(ltOPLUS, "oplus", 0); - AddMacroDef(ltOSLASH, "oslash", 0); - AddMacroDef(ltOTIMES, "otimes", 0); - - AddMacroDef(ltPAGEBREAK, "pagebreak", 0); - AddMacroDef(ltPAGEREF, "pageref", 1); - AddMacroDef(ltPAGESTYLE, "pagestyle", 1); - AddMacroDef(ltPAGENUMBERING, "pagenumbering", 1); - AddMacroDef(ltPARAGRAPHSTAR, "paragraph*", 1); - AddMacroDef(ltPARAGRAPH, "paragraph", 1); - AddMacroDef(ltPARALLEL, "parallel", 0); - AddMacroDef(ltPARAM, "param", 2); - AddMacroDef(ltPARINDENT, "parindent", 1); - AddMacroDef(ltPARSKIP, "parskip", 1); - AddMacroDef(ltPARTIAL, "partial", 0); - AddMacroDef(ltPARTSTAR, "part*", 1); - AddMacroDef(ltPART, "part", 1); - AddMacroDef(ltPAR, "par", 0); - AddMacroDef(ltPERP, "perp", 0); - AddMacroDef(ltPHI, "phi", 0); - AddMacroDef(ltCAP_PHI, "Phi", 0); - AddMacroDef(ltPFUNC, "pfunc", 3); - AddMacroDef(ltPICTURE, "picture", 1); - AddMacroDef(ltPI, "pi", 0); - AddMacroDef(ltCAP_PI, "Pi", 0); - AddMacroDef(ltPM, "pm", 0); - AddMacroDef(ltPOPREFONLY, "poprefonly", 1); - AddMacroDef(ltPOPREF, "popref", 2); - AddMacroDef(ltPOUNDS, "pounds", 0); - AddMacroDef(ltPREC, "prec", 0); - AddMacroDef(ltPRECEQ, "preceq", 0); - AddMacroDef(ltPRINTINDEX, "printindex", 0); - AddMacroDef(ltPROPTO, "propto", 0); - AddMacroDef(ltPSBOXTO, "psboxto", 1, FALSE, FORBID_ABSOLUTELY); - AddMacroDef(ltPSBOX, "psbox", 1, FALSE, FORBID_ABSOLUTELY); - AddMacroDef(ltPSI, "psi", 0); - AddMacroDef(ltCAP_PSI, "Psi", 0); - - AddMacroDef(ltQUOTE, "quote", 1); - AddMacroDef(ltQUOTATION, "quotation", 1); - - AddMacroDef(ltRAGGEDBOTTOM, "raggedbottom", 0); - AddMacroDef(ltRAGGEDLEFT, "raggedleft", 0); - AddMacroDef(ltRAGGEDRIGHT, "raggedright", 0); - AddMacroDef(ltRBRACERAW, "rbraceraw", 0); - AddMacroDef(ltREF, "ref", 1); - AddMacroDef(ltREGISTERED, "registered", 0); - AddMacroDef(ltRE, "we", 0); - AddMacroDef(ltRHO, "rho", 0); - AddMacroDef(ltRIGHTARROW, "rightarrow", 0); - AddMacroDef(ltRIGHTARROW2, "rightarrow2", 0); - AddMacroDef(ltRMFAMILY, "rmfamily", 1); - AddMacroDef(ltRM, "rm", 1); - AddMacroDef(ltROMAN, "roman", 1); - AddMacroDef(ltROMAN2, "Roman", 1); -// AddMacroDef(lt"row", 1); - AddMacroDef(ltRTFSP, "rtfsp", 0); - AddMacroDef(ltRTFIGNORE, "rtfignore", 1); - AddMacroDef(ltRTFONLY, "rtfonly", 1); - AddMacroDef(ltRULEDROW, "ruledrow", 1); - AddMacroDef(ltDRULED, "druled", 1); - AddMacroDef(ltRULE, "rule", 2); - AddMacroDef(ltRHEAD, "rhead", 1); - AddMacroDef(ltRFOOT, "rfoot", 1); - AddMacroDef(ltROW, "row", 1); - - AddMacroDef(ltSCSHAPE, "scshape", 1); - AddMacroDef(ltSC, "sc", 1); - AddMacroDef(ltSECTIONHEADING, "sectionheading", 1); - AddMacroDef(ltSECTIONSTAR, "section*", 1); - AddMacroDef(ltSECTION, "section", 1); - AddMacroDef(ltSETCOUNTER, "setcounter", 2); - AddMacroDef(ltSFFAMILY, "sffamily", 1); - AddMacroDef(ltSF, "sf", 1); - AddMacroDef(ltSHARP, "sharp", 0); - AddMacroDef(ltSHORTCITE, "shortcite", 1); - AddMacroDef(ltSIGMA, "sigma", 0); - AddMacroDef(ltCAP_SIGMA, "Sigma", 0); - AddMacroDef(ltSIM, "sim", 0); - AddMacroDef(ltSIMEQ, "simeq", 0); - AddMacroDef(ltSINGLESPACE, "singlespace", 1); - AddMacroDef(ltSIZEDBOX, "sizedbox", 2); - AddMacroDef(ltSIZEDBOXD, "sizedboxd", 2); - AddMacroDef(ltSLOPPYPAR, "sloppypar", 1); - AddMacroDef(ltSLOPPY, "sloppy", 0); - AddMacroDef(ltSLSHAPE, "slshape", 1); - AddMacroDef(ltSL, "sl", 1); - AddMacroDef(ltSMALL, "small", 1); - AddMacroDef(ltSMILE, "smile", 0); - AddMacroDef(ltSS, "ss", 0); - AddMacroDef(ltSTAR, "star", 0); - AddMacroDef(ltSUBITEM, "subitem", 0); - AddMacroDef(ltSUBPARAGRAPHSTAR, "subparagraph*", 1); - AddMacroDef(ltSUBPARAGRAPH, "subparagraph", 1); - AddMacroDef(ltSPECIAL, "special", 1); - AddMacroDef(ltSUBSECTIONSTAR, "subsection*", 1); - AddMacroDef(ltSUBSECTION, "subsection", 1); - AddMacroDef(ltSUBSETEQ, "subseteq", 0); - AddMacroDef(ltSUBSET, "subset", 0); - AddMacroDef(ltSUCC, "succ", 0); - AddMacroDef(ltSUCCEQ, "succeq", 0); - AddMacroDef(ltSUPSETEQ, "supseteq", 0); - AddMacroDef(ltSUPSET, "supset", 0); - AddMacroDef(ltSUBSUBSECTIONSTAR,"subsubsection*", 1); - AddMacroDef(ltSUBSUBSECTION, "subsubsection", 1); - AddMacroDef(ltSUPERTABULAR, "supertabular", 2, FALSE); - AddMacroDef(ltSURD, "surd", 0); - AddMacroDef(ltSCRIPTSIZE, "scriptsize", 1); - AddMacroDef(ltSETHEADER, "setheader", 6); - AddMacroDef(ltSETFOOTER, "setfooter", 6); - AddMacroDef(ltSETHOTSPOTCOLOUR, "sethotspotcolour", 1); - AddMacroDef(ltSETHOTSPOTCOLOR, "sethotspotcolor", 1); - AddMacroDef(ltSETHOTSPOTUNDERLINE, "sethotspotunderline", 1); - AddMacroDef(ltSETTRANSPARENCY, "settransparency", 1); - AddMacroDef(ltSPADESUIT, "spadesuit", 0); - - AddMacroDef(ltTABBING, "tabbing", 2); - AddMacroDef(ltTABLEOFCONTENTS, "tableofcontents", 0); - AddMacroDef(ltTABLE, "table", 1); - AddMacroDef(ltTABULAR, "tabular", 2, FALSE); - AddMacroDef(ltTAB, "tab", 0); - AddMacroDef(ltTAU, "tau", 0); - AddMacroDef(ltTEXTRM, "textrm", 1); - AddMacroDef(ltTEXTSF, "textsf", 1); - AddMacroDef(ltTEXTTT, "texttt", 1); - AddMacroDef(ltTEXTBF, "textbf", 1); - AddMacroDef(ltTEXTIT, "textit", 1); - AddMacroDef(ltTEXTSL, "textsl", 1); - AddMacroDef(ltTEXTSC, "textsc", 1); - AddMacroDef(ltTEXTWIDTH, "textwidth", 1); - AddMacroDef(ltTEXTHEIGHT, "textheight", 1); - AddMacroDef(ltTEXTCOLOUR, "textcolour", 1); - AddMacroDef(ltTEX, "TeX", 0); - AddMacroDef(ltTHEBIBLIOGRAPHY, "thebibliography", 2); - AddMacroDef(ltTHETA, "theta", 0); - AddMacroDef(ltTIMES, "times", 0); - AddMacroDef(ltCAP_THETA, "Theta", 0); - AddMacroDef(ltTITLEPAGE, "titlepage", 1); - AddMacroDef(ltTITLE, "title", 1); - AddMacroDef(ltTINY, "tiny", 1); - AddMacroDef(ltTODAY, "today", 0); - AddMacroDef(ltTOPMARGIN, "topmargin", 1); - AddMacroDef(ltTOPSKIP, "topskip", 1); - AddMacroDef(ltTRIANGLE, "triangle", 0); - AddMacroDef(ltTTFAMILY, "ttfamily", 1); - AddMacroDef(ltTT, "tt", 1); - AddMacroDef(ltTYPEIN, "typein", 1); - AddMacroDef(ltTYPEOUT, "typeout", 1); - AddMacroDef(ltTWOCOLWIDTHA, "twocolwidtha", 1); - AddMacroDef(ltTWOCOLWIDTHB, "twocolwidthb", 1); - AddMacroDef(ltTWOCOLSPACING, "twocolspacing", 1); - AddMacroDef(ltTWOCOLITEMRULED, "twocolitemruled", 2); - AddMacroDef(ltTWOCOLITEM, "twocolitem", 2); - AddMacroDef(ltTWOCOLLIST, "twocollist", 1); - AddMacroDef(ltTWOCOLUMN, "twocolumn", 0); - AddMacroDef(ltTHEPAGE, "thepage", 0); - AddMacroDef(ltTHECHAPTER, "thechapter", 0); - AddMacroDef(ltTHESECTION, "thesection", 0); - AddMacroDef(ltTHISPAGESTYLE, "thispagestyle", 1); - - AddMacroDef(ltUNDERLINE, "underline", 1); - AddMacroDef(ltUPSILON, "upsilon", 0); - AddMacroDef(ltCAP_UPSILON, "Upsilon", 0); - AddMacroDef(ltUPARROW, "uparrow", 0); - AddMacroDef(ltUPARROW2, "Uparrow", 0); - AddMacroDef(ltUPPERCASE, "uppercase", 1); - AddMacroDef(ltUPSHAPE, "upshape", 1); - AddMacroDef(ltURLREF, "urlref", 2); - AddMacroDef(ltUSEPACKAGE, "usepackage", 1); - - AddMacroDef(ltVAREPSILON, "varepsilon", 0); - AddMacroDef(ltVARPHI, "varphi", 0); - AddMacroDef(ltVARPI, "varpi", 0); - AddMacroDef(ltVARRHO, "varrho", 0); - AddMacroDef(ltVARSIGMA, "varsigma", 0); - AddMacroDef(ltVARTHETA, "vartheta", 0); - AddMacroDef(ltVDOTS, "vdots", 0); - AddMacroDef(ltVEE, "vee", 0); - AddMacroDef(ltVERBATIMINPUT, "verbatiminput", 1); - AddMacroDef(ltVERBATIM, "verbatim", 1); - AddMacroDef(ltVERBSTAR, "verb*", 1); - AddMacroDef(ltVERB, "verb", 1); - AddMacroDef(ltVERSE, "verse", 1); - AddMacroDef(ltVFILL, "vfill", 0); - AddMacroDef(ltVLINE, "vline", 0); - AddMacroDef(ltVOID, "void", 0); - AddMacroDef(ltVDASH, "vdash", 0); - AddMacroDef(ltVRULE, "vrule", 0); - AddMacroDef(ltVSPACESTAR, "vspace*", 1); - AddMacroDef(ltVSKIPSTAR, "vskip*", 1); - AddMacroDef(ltVSPACE, "vspace", 1); - AddMacroDef(ltVSKIP, "vskip", 1); - - AddMacroDef(ltWEDGE, "wedge", 0); - AddMacroDef(ltWXCLIPS, "wxclips", 0); - AddMacroDef(ltWINHELPIGNORE, "winhelpignore", 1); - AddMacroDef(ltWINHELPONLY, "winhelponly", 1); - AddMacroDef(ltWP, "wp", 0); - - AddMacroDef(ltXI, "xi", 0); - AddMacroDef(ltCAP_XI, "Xi", 0); - AddMacroDef(ltXLPIGNORE, "xlpignore", 1); - AddMacroDef(ltXLPONLY, "xlponly", 1); - - AddMacroDef(ltZETA, "zeta", 0); - - AddMacroDef(ltSPACE, " ", 0); - AddMacroDef(ltBACKSLASHCHAR, "\\", 0); - AddMacroDef(ltPIPE, "|", 0); - AddMacroDef(ltFORWARDSLASH, "/", 0); - AddMacroDef(ltUNDERSCORE, "_", 0); - AddMacroDef(ltAMPERSAND, "&", 0); - AddMacroDef(ltPERCENT, "%", 0); - AddMacroDef(ltDOLLAR, "$", 0); - AddMacroDef(ltHASH, "#", 0); - AddMacroDef(ltLPARENTH, "(", 0); - AddMacroDef(ltRPARENTH, ")", 0); - AddMacroDef(ltLBRACE, "{", 0); - AddMacroDef(ltRBRACE, "}", 0); -// AddMacroDef(ltEQUALS, "=", 0); - AddMacroDef(ltRANGLEBRA, ">", 0); - AddMacroDef(ltLANGLEBRA, "<", 0); - AddMacroDef(ltPLUS, "+", 0); - AddMacroDef(ltDASH, "-", 0); - AddMacroDef(ltAT_SYMBOL, "@", 0); -// AddMacroDef(ltSINGLEQUOTE, "'", 0); -// AddMacroDef(ltBACKQUOTE, "`", 0); -} - -/* - * Default behaviour, should be called by client if can't match locally. - * - */ - -// Called on start/end of macro examination -void DefaultOnMacro(int macroId, int no_args, bool start) -{ - switch (macroId) - { - // Default behaviour for abstract - case ltABSTRACT: - { - if (start) - { - // Write the heading - FakeCurrentSection(AbstractNameString); - OnMacro(ltPAR, 0, TRUE); - OnMacro(ltPAR, 0, FALSE); - } - else - { - if (DocumentStyle == LATEX_ARTICLE) - sectionNo --; - else - chapterNo --; - } - break; - } - - // Default behaviour for glossary - case ltHELPGLOSSARY: - { - if (start) - { - // Write the heading - FakeCurrentSection(GlossaryNameString); - OnMacro(ltPAR, 0, TRUE); - OnMacro(ltPAR, 0, FALSE); - if ((convertMode == TEX_RTF) && !winHelp) - { - OnMacro(ltPAR, 0, TRUE); - OnMacro(ltPAR, 0, FALSE); - } - } - break; - } - case ltSPECIALAMPERSAND: - if (start) - TexOutput(" "); - break; - - case ltCINSERT: - if (start) - TexOutput("<<", TRUE); - break; - case ltCEXTRACT: - if (start) - TexOutput(">>", TRUE); - break; - case ltDESTRUCT: - if (start) - TexOutput("~", TRUE); - break; - case ltTILDE: - if (start) - TexOutput("~", TRUE); - break; - case ltSPECIALTILDE: - if (start) - TexOutput(" ", TRUE); - break; - case ltUNDERSCORE: - if (start) - TexOutput("_", TRUE); - break; - case ltHASH: - if (start) - TexOutput("#", TRUE); - break; - case ltAMPERSAND: - if (start) - TexOutput("&", TRUE); - break; - case ltSPACE: - if (start) - TexOutput(" ", TRUE); - break; - case ltPIPE: - if (start) - TexOutput("|", TRUE); - break; - case ltPERCENT: - if (start) - TexOutput("%", TRUE); - break; - case ltDOLLAR: - if (start) - TexOutput("$", TRUE); - break; - case ltLPARENTH: - if (start) - TexOutput("", TRUE); - break; - case ltRPARENTH: - if (start) - TexOutput("", TRUE); - break; - case ltLBRACE: - if (start) - TexOutput("{", TRUE); - break; - case ltRBRACE: - if (start) - TexOutput("}", TRUE); - break; - case ltCOPYRIGHT: - if (start) - TexOutput("(c)", TRUE); - break; - case ltREGISTERED: - if (start) - TexOutput("(r)", TRUE); - break; - case ltBACKSLASH: - if (start) - TexOutput("\\", TRUE); - break; - case ltLDOTS: - case ltCDOTS: - if (start) - TexOutput("...", TRUE); - break; - case ltVDOTS: - if (start) - TexOutput("|", TRUE); - break; - case ltLATEX: - if (start) - TexOutput("LaTeX", TRUE); - break; - case ltTEX: - if (start) - TexOutput("TeX", TRUE); - break; - case ltPOUNDS: - if (start) - TexOutput("£", TRUE); - break; - case ltSPECIALDOUBLEDOLLAR: // Interpret as center - OnMacro(ltCENTER, no_args, start); - break; - case ltEMPH: - case ltTEXTSL: - case ltSLSHAPE: - case ltSL: - OnMacro(ltIT, no_args, start); - break; - case ltPARAGRAPH: - case ltPARAGRAPHSTAR: - case ltSUBPARAGRAPH: - case ltSUBPARAGRAPHSTAR: - OnMacro(ltSUBSUBSECTION, no_args, start); - break; - case ltTODAY: - { - if (start) - { - time_t when; - (void) time(&when); - TexOutput(ctime(&when), TRUE); - } - break; - } - case ltNOINDENT: - if (start) - ParIndent = 0; - break; - - // Symbols - case ltALPHA: - if (start) TexOutput("alpha"); - break; - case ltBETA: - if (start) TexOutput("beta"); - break; - case ltGAMMA: - if (start) TexOutput("gamma"); - break; - case ltDELTA: - if (start) TexOutput("delta"); - break; - case ltEPSILON: - case ltVAREPSILON: - if (start) TexOutput("epsilon"); - break; - case ltZETA: - if (start) TexOutput("zeta"); - break; - case ltETA: - if (start) TexOutput("eta"); - break; - case ltTHETA: - case ltVARTHETA: - if (start) TexOutput("theta"); - break; - case ltIOTA: - if (start) TexOutput("iota"); - break; - case ltKAPPA: - if (start) TexOutput("kappa"); - break; - case ltLAMBDA: - if (start) TexOutput("lambda"); - break; - case ltMU: - if (start) TexOutput("mu"); - break; - case ltNU: - if (start) TexOutput("nu"); - break; - case ltXI: - if (start) TexOutput("xi"); - break; - case ltPI: - case ltVARPI: - if (start) TexOutput("pi"); - break; - case ltRHO: - case ltVARRHO: - if (start) TexOutput("rho"); - break; - case ltSIGMA: - case ltVARSIGMA: - if (start) TexOutput("sigma"); - break; - case ltTAU: - if (start) TexOutput("tau"); - break; - case ltUPSILON: - if (start) TexOutput("upsilon"); - break; - case ltPHI: - case ltVARPHI: - if (start) TexOutput("phi"); - break; - case ltCHI: - if (start) TexOutput("chi"); - break; - case ltPSI: - if (start) TexOutput("psi"); - break; - case ltOMEGA: - if (start) TexOutput("omega"); - break; - case ltCAP_GAMMA: - if (start) TexOutput("GAMMA"); - break; - case ltCAP_DELTA: - if (start) TexOutput("DELTA"); - break; - case ltCAP_THETA: - if (start) TexOutput("THETA"); - break; - case ltCAP_LAMBDA: - if (start) TexOutput("LAMBDA"); - break; - case ltCAP_XI: - if (start) TexOutput("XI"); - break; - case ltCAP_PI: - if (start) TexOutput("PI"); - break; - case ltCAP_SIGMA: - if (start) TexOutput("SIGMA"); - break; - case ltCAP_UPSILON: - if (start) TexOutput("UPSILON"); - break; - case ltCAP_PHI: - if (start) TexOutput("PHI"); - break; - case ltCAP_PSI: - if (start) TexOutput("PSI"); - break; - case ltCAP_OMEGA: - if (start) TexOutput("OMEGA"); - break; - - // Binary operation symbols - case ltLE: - case ltLEQ: - if (start) TexOutput("<="); - break; - case ltLL: - if (start) TexOutput("<<"); - break; - case ltSUBSET: - if (start) TexOutput("SUBSET"); - break; - case ltSUBSETEQ: - if (start) TexOutput("SUBSETEQ"); - break; - case ltIN: - if (start) TexOutput("IN"); - break; - case ltVDASH: - if (start) TexOutput("VDASH"); - break; - case ltMODELS: - if (start) TexOutput("MODELS"); - break; - case ltGE: - case ltGEQ: - if (start) TexOutput(">="); - break; - case ltGG: - if (start) TexOutput(">>"); - break; - case ltSUPSET: - if (start) TexOutput("SUPSET"); - break; - case ltSUPSETEQ: - if (start) TexOutput("SUPSETEQ"); - break; - case ltNI: - if (start) TexOutput("NI"); - break; - case ltDASHV: - if (start) TexOutput("DASHV"); - break; - case ltPERP: - if (start) TexOutput("PERP"); - break; - case ltNEQ: - if (start) TexOutput("NEQ"); - break; - case ltDOTEQ: - if (start) TexOutput("DOTEQ"); - break; - case ltAPPROX: - if (start) TexOutput("APPROX"); - break; - case ltCONG: - if (start) TexOutput("CONG"); - break; - case ltEQUIV: - if (start) TexOutput("EQUIV"); - break; - case ltPROPTO: - if (start) TexOutput("PROPTO"); - break; - case ltPREC: - if (start) TexOutput("PREC"); - break; - case ltPRECEQ: - if (start) TexOutput("PRECEQ"); - break; - case ltPARALLEL: - if (start) TexOutput("|"); - break; - case ltSIM: - if (start) TexOutput("~"); - break; - case ltSIMEQ: - if (start) TexOutput("SIMEQ"); - break; - case ltASYMP: - if (start) TexOutput("ASYMP"); - break; - case ltSMILE: - if (start) TexOutput(":-)"); - break; - case ltFROWN: - if (start) TexOutput(":-("); - break; - case ltSUCC: - if (start) TexOutput("SUCC"); - break; - case ltSUCCEQ: - if (start) TexOutput("SUCCEQ"); - break; - case ltMID: - if (start) TexOutput("|"); - break; - - // Negated relation symbols - case ltNOTEQ: - if (start) TexOutput("!="); - break; - case ltNOTIN: - if (start) TexOutput("NOTIN"); - break; - case ltNOTSUBSET: - if (start) TexOutput("NOTSUBSET"); - break; - - // Arrows - case ltLEFTARROW: - if (start) TexOutput("<--"); - break; - case ltLEFTARROW2: - if (start) TexOutput("<=="); - break; - case ltRIGHTARROW: - if (start) TexOutput("-->"); - break; - case ltRIGHTARROW2: - if (start) TexOutput("==>"); - break; - case ltLEFTRIGHTARROW: - if (start) TexOutput("<-->"); - break; - case ltLEFTRIGHTARROW2: - if (start) TexOutput("<==>"); - break; - case ltUPARROW: - if (start) TexOutput("UPARROW"); - break; - case ltUPARROW2: - if (start) TexOutput("UPARROW2"); - break; - case ltDOWNARROW: - if (start) TexOutput("DOWNARROW"); - break; - case ltDOWNARROW2: - if (start) TexOutput("DOWNARROW2"); - break; - // Miscellaneous symbols - case ltALEPH: - if (start) TexOutput("ALEPH"); - break; - case ltWP: - if (start) TexOutput("WP"); - break; - case ltRE: - if (start) TexOutput("RE"); - break; - case ltIM: - if (start) TexOutput("IM"); - break; - case ltEMPTYSET: - if (start) TexOutput("EMPTYSET"); - break; - case ltNABLA: - if (start) TexOutput("NABLA"); - break; - case ltSURD: - if (start) TexOutput("SURD"); - break; - case ltPARTIAL: - if (start) TexOutput("PARTIAL"); - break; - case ltBOT: - if (start) TexOutput("BOT"); - break; - case ltFORALL: - if (start) TexOutput("FORALL"); - break; - case ltEXISTS: - if (start) TexOutput("EXISTS"); - break; - case ltNEG: - if (start) TexOutput("NEG"); - break; - case ltSHARP: - if (start) TexOutput("SHARP"); - break; - case ltANGLE: - if (start) TexOutput("ANGLE"); - break; - case ltTRIANGLE: - if (start) TexOutput("TRIANGLE"); - break; - case ltCLUBSUIT: - if (start) TexOutput("CLUBSUIT"); - break; - case ltDIAMONDSUIT: - if (start) TexOutput("DIAMONDSUIT"); - break; - case ltHEARTSUIT: - if (start) TexOutput("HEARTSUIT"); - break; - case ltSPADESUIT: - if (start) TexOutput("SPADESUIT"); - break; - case ltINFTY: - if (start) TexOutput("INFTY"); - break; - case ltPM: - if (start) TexOutput("PM"); - break; - case ltMP: - if (start) TexOutput("MP"); - break; - case ltTIMES: - if (start) TexOutput("TIMES"); - break; - case ltDIV: - if (start) TexOutput("DIV"); - break; - case ltCDOT: - if (start) TexOutput("CDOT"); - break; - case ltAST: - if (start) TexOutput("AST"); - break; - case ltSTAR: - if (start) TexOutput("STAR"); - break; - case ltCAP: - if (start) TexOutput("CAP"); - break; - case ltCUP: - if (start) TexOutput("CUP"); - break; - case ltVEE: - if (start) TexOutput("VEE"); - break; - case ltWEDGE: - if (start) TexOutput("WEDGE"); - break; - case ltCIRC: - if (start) TexOutput("CIRC"); - break; - case ltBULLET: - if (start) TexOutput("BULLET"); - break; - case ltDIAMOND: - if (start) TexOutput("DIAMOND"); - break; - case ltOSLASH: - if (start) TexOutput("OSLASH"); - break; - case ltBOX: - if (start) TexOutput("BOX"); - break; - case ltDIAMOND2: - if (start) TexOutput("DIAMOND2"); - break; - case ltBIGTRIANGLEDOWN: - if (start) TexOutput("BIGTRIANGLEDOWN"); - break; - case ltOPLUS: - if (start) TexOutput("OPLUS"); - break; - case ltOTIMES: - if (start) TexOutput("OTIMES"); - break; - case ltSS: - if (start) TexOutput("s"); - break; - case ltBACKSLASHRAW: - if (start) TexOutput("\\"); - break; - case ltLBRACERAW: - if (start) TexOutput("{"); - break; - case ltRBRACERAW: - if (start) TexOutput("}"); - break; - case ltSMALLSPACE1: - case ltSMALLSPACE2: - if (start) TexOutput(" "); - break; - default: - break; - } -} - -// Called on start/end of argument examination -bool DefaultOnArgument(int macroId, int arg_no, bool start) -{ - switch (macroId) - { - case ltREF: - { - if (arg_no == 1 && start) - { - char *refName = GetArgData(); - if (refName) - { - TexRef *texRef = FindReference(refName); - if (texRef) - { - // Must strip the 'section' or 'chapter' or 'figure' text - // from a normal 'ref' reference - char buf[150]; - strcpy(buf, texRef->sectionNumber); - int len = strlen(buf); - int i = 0; - if (strcmp(buf, "??") != 0) - { - while (i < len) - { - if (buf[i] == ' ') - { - i ++; - break; - } - else i ++; - } - } - TexOutput(texRef->sectionNumber + i, TRUE); - } - else - { - char buf[300]; - TexOutput("??", TRUE); - sprintf(buf, "Warning: unresolved reference %s.", refName); - OnInform(buf); - } - } - else TexOutput("??", TRUE); - return FALSE; - } - break; - } - case ltLABEL: - { - return FALSE; - break; - } - case ltAUTHOR: - { - if (start && (arg_no == 1)) - DocumentAuthor = GetArgChunk(); - return FALSE; - break; - } - case ltDATE: - { - if (start && (arg_no == 1)) - DocumentDate = GetArgChunk(); - return FALSE; - break; - } - case ltTITLE: - { - if (start && (arg_no == 1)) - DocumentTitle = GetArgChunk(); - return FALSE; - break; - } - case ltDOCUMENTCLASS: - case ltDOCUMENTSTYLE: - { - if (start && !IsArgOptional()) - { - DocumentStyleString = copystring(GetArgData()); - if (strncmp(DocumentStyleString, "art", 3) == 0) - DocumentStyle = LATEX_ARTICLE; - else if (strncmp(DocumentStyleString, "rep", 3) == 0) - DocumentStyle = LATEX_REPORT; - else if (strncmp(DocumentStyleString, "book", 4) == 0 || - strncmp(DocumentStyleString, "thesis", 6) == 0) - DocumentStyle = LATEX_BOOK; - else if (strncmp(DocumentStyleString, "letter", 6) == 0) - DocumentStyle = LATEX_LETTER; - else if (strncmp(DocumentStyleString, "slides", 6) == 0) - DocumentStyle = LATEX_SLIDES; - - if (StringMatch("10", DocumentStyleString)) - SetFontSizes(10); - else if (StringMatch("11", DocumentStyleString)) - SetFontSizes(11); - else if (StringMatch("12", DocumentStyleString)) - SetFontSizes(12); - - OnMacro(ltHELPFONTSIZE, 1, TRUE); - sprintf(currentArgData, "%d", normalFont); - haveArgData = TRUE; - OnArgument(ltHELPFONTSIZE, 1, TRUE); - OnArgument(ltHELPFONTSIZE, 1, FALSE); - haveArgData = FALSE; - OnMacro(ltHELPFONTSIZE, 1, FALSE); - } - else if (start && IsArgOptional()) - { - MinorDocumentStyleString = copystring(GetArgData()); - - if (StringMatch("10", MinorDocumentStyleString)) - SetFontSizes(10); - else if (StringMatch("11", MinorDocumentStyleString)) - SetFontSizes(11); - else if (StringMatch("12", MinorDocumentStyleString)) - SetFontSizes(12); - } - return FALSE; - break; - } - case ltBIBLIOGRAPHYSTYLE: - { - if (start && !IsArgOptional()) - BibliographyStyleString = copystring(GetArgData()); - return FALSE; - break; - } - case ltPAGESTYLE: - { - if (start && !IsArgOptional()) - { - if (PageStyle) delete[] PageStyle; - PageStyle = copystring(GetArgData()); - } - return FALSE; - break; - } -/* - case ltLHEAD: - { - if (start && !IsArgOptional()) - LeftHeader = GetArgChunk(); - return FALSE; - break; - } - case ltLFOOT: - { - if (start && !IsArgOptional()) - LeftFooter = GetArgChunk(); - return FALSE; - break; - } - case ltCHEAD: - { - if (start && !IsArgOptional()) - CentreHeader = GetArgChunk(); - return FALSE; - break; - } - case ltCFOOT: - { - if (start && !IsArgOptional()) - CentreFooter = GetArgChunk(); - return FALSE; - break; - } - case ltRHEAD: - { - if (start && !IsArgOptional()) - RightHeader = GetArgChunk(); - return FALSE; - break; - } - case ltRFOOT: - { - if (start && !IsArgOptional()) - RightFooter = GetArgChunk(); - return FALSE; - break; - } -*/ - case ltCITE: - case ltSHORTCITE: - { - if (start && !IsArgOptional()) - { - char *citeKeys = GetArgData(); - int pos = 0; - char *citeKey = ParseMultifieldString(citeKeys, &pos); - while (citeKey) - { - AddCitation(citeKey); - TexRef *ref = FindReference(citeKey); - if (ref) - { - TexOutput(ref->sectionNumber, TRUE); - if (strcmp(ref->sectionNumber, "??") == 0) - { - char buf[300]; - sprintf(buf, "Warning: unresolved citation %s.", citeKey); - OnInform(buf); - } - } - citeKey = ParseMultifieldString(citeKeys, &pos); - if (citeKey) - { - TexOutput(", ", TRUE); - } - } - return FALSE; - } - break; - } - case ltNOCITE: - { - if (start && !IsArgOptional()) - { - char *citeKey = GetArgData(); - AddCitation(citeKey); - return FALSE; - } - break; - } - case ltHELPFONTSIZE: - { - if (start) - { - char *data = GetArgData(); - if (strcmp(data, "10") == 0) - SetFontSizes(10); - else if (strcmp(data, "11") == 0) - SetFontSizes(11); - else if (strcmp(data, "12") == 0) - SetFontSizes(12); - return FALSE; - } - break; - } - case ltPAGEREF: - { - if (start) - { - TexOutput(" ??", TRUE); - return FALSE; - } - break; - } - case ltPARSKIP: - { - if (start && arg_no == 1) - { - char *data = GetArgData(); - ParSkip = ParseUnitArgument(data); - return FALSE; - } - break; - } - case ltPARINDENT: - { - if (start && arg_no == 1) - { - char *data = GetArgData(); - ParIndent = ParseUnitArgument(data); - return FALSE; - } - break; - } - case ltSL: - { - return OnArgument(ltIT, arg_no, start); - break; - } - case ltSPECIALDOUBLEDOLLAR: - { - return OnArgument(ltCENTER, arg_no, start); - break; - } - case ltPARAGRAPH: - case ltPARAGRAPHSTAR: - case ltSUBPARAGRAPH: - case ltSUBPARAGRAPHSTAR: - { - return OnArgument(ltSUBSUBSECTION, arg_no, start); - break; - } - case ltTYPEOUT: - { - if (start) - OnInform(GetArgData()); - break; - } - case ltFOOTNOTE: - { - if (start) - TexOutput(" (", TRUE); - else - TexOutput(")", TRUE); - break; - } - case ltBIBLIOGRAPHY: - { - if (start) - { - FILE *fd; - int ch; - char smallBuf[2]; - smallBuf[1] = 0; - if ((fd = fopen(TexBibName, "r"))) - { - ch = getc(fd); - smallBuf[0] = ch; - while (ch != EOF) - { - TexOutput(smallBuf); - ch = getc(fd); - smallBuf[0] = ch; - } - fclose(fd); - } - else - { - OnInform("Run Tex2RTF again to include bibliography."); - } - - // Read in the .bib file, resolve all known references, write out the RTF. - char *allFiles = GetArgData(); - int pos = 0; - char *bibFile = ParseMultifieldString(allFiles, &pos); - while (bibFile) - { - char fileBuf[300]; - strcpy(fileBuf, bibFile); - wxString actualFile = TexPathList.FindValidPath(fileBuf); - if (actualFile == "") - { - strcat(fileBuf, ".bib"); - actualFile = TexPathList.FindValidPath(fileBuf); - } - if (actualFile != "") - { - if (!ReadBib((char*) (const char*) actualFile)) - { - char buf[300]; - sprintf(buf, ".bib file %s not found or malformed", (const char*) actualFile); - OnError(buf); - } - } - else - { - char buf[300]; - sprintf(buf, ".bib file %s not found", fileBuf); - OnError(buf); - } - bibFile = ParseMultifieldString(allFiles, &pos); - } - - ResolveBibReferences(); - - // Write it a new bib section in the appropriate format. - FILE *save1 = CurrentOutput1; - FILE *save2 = CurrentOutput2; - FILE *Biblio = fopen(TexTmpBibName, "w"); - SetCurrentOutput(Biblio); - OutputBib(); - fclose(Biblio); - if (wxFileExists(TexTmpBibName)) - { - if (wxFileExists(TexBibName)) wxRemoveFile(TexBibName); - wxRenameFile(TexTmpBibName, TexBibName); - } - SetCurrentOutputs(save1, save2); - return FALSE; - } - break; - } - case ltMULTICOLUMN: - { - if (start && (arg_no == 3)) - return TRUE; - else - return FALSE; - break; - } - case ltSCSHAPE: - case ltTEXTSC: - case ltSC: - { - if (start && (arg_no == 1)) - { - char *s = GetArgData(); - if (s) - { - char *s1 = copystring(s); - int i; - for (i = 0; i < (int)strlen(s); i++) - s1[i] = toupper(s[i]); - TexOutput(s1); - delete[] s1; - return FALSE; - } - else return TRUE; - - } - return TRUE; - break; - } - case ltLOWERCASE: - { - if (start && (arg_no == 1)) - { - char *s = GetArgData(); - if (s) - { - char *s1 = copystring(s); - int i; - for (i = 0; i < (int)strlen(s); i++) - s1[i] = tolower(s[i]); - TexOutput(s1); - delete[] s1; - return FALSE; - } - else return TRUE; - - } - return TRUE; - break; - } - case ltUPPERCASE: - { - if (start && (arg_no == 1)) - { - char *s = GetArgData(); - if (s) - { - char *s1 = copystring(s); - int i; - for (i = 0; i < (int)strlen(s); i++) - s1[i] = toupper(s[i]); - TexOutput(s1); - delete[] s1; - return FALSE; - } - else return TRUE; - - } - return TRUE; - break; - } - case ltPOPREF: // Ignore second argument by default - { - if (start && (arg_no == 1)) - return TRUE; - else - return FALSE; - break; - } - case ltTWOCOLUMN: - return TRUE; - break; - case ltXLPIGNORE: - return ((convertMode == TEX_XLP) ? FALSE : TRUE); - break; - case ltXLPONLY: - return ((convertMode != TEX_XLP) ? FALSE : TRUE); - break; - case ltHTMLIGNORE: - return ((convertMode == TEX_HTML) ? FALSE : TRUE); - break; - case ltHTMLONLY: - return ((convertMode != TEX_HTML) ? FALSE : TRUE); - break; - case ltRTFIGNORE: - return (((convertMode == TEX_RTF) && !winHelp) ? FALSE : TRUE); - break; - case ltRTFONLY: - return (!((convertMode == TEX_RTF) && !winHelp) ? FALSE : TRUE); - break; - case ltWINHELPIGNORE: - return (winHelp ? FALSE : TRUE); - break; - case ltWINHELPONLY: - return (!winHelp ? FALSE : TRUE); - break; - case ltLATEXIGNORE: - return TRUE; - break; - case ltLATEXONLY: - return FALSE; - break; - case ltCLINE: - case ltARABIC: - case ltALPH1: - case ltALPH2: - case ltROMAN: - case ltROMAN2: - case ltSETCOUNTER: - case ltADDTOCOUNTER: - case ltADDCONTENTSLINE: - case ltNEWCOUNTER: - case ltTEXTWIDTH: - case ltTEXTHEIGHT: - case ltBASELINESKIP: - case ltVSPACESTAR: - case ltHSPACESTAR: - case ltVSPACE: - case ltHSPACE: - case ltVSKIPSTAR: - case ltHSKIPSTAR: - case ltVSKIP: - case ltHSKIP: - case ltPAGENUMBERING: - case ltTHEPAGE: - case ltTHECHAPTER: - case ltTHESECTION: - case ltITEMSEP: - case ltFANCYPLAIN: - case ltCHEAD: - case ltRHEAD: - case ltLHEAD: - case ltCFOOT: - case ltRFOOT: - case ltLFOOT: - case ltTHISPAGESTYLE: - case ltMARKRIGHT: - case ltMARKBOTH: - case ltEVENSIDEMARGIN: - case ltODDSIDEMARGIN: - case ltMARGINPAR: - case ltMARGINPARWIDTH: - case ltMARGINPARSEP: - case ltMARGINPAREVEN: - case ltMARGINPARODD: - case ltTWOCOLWIDTHA: - case ltTWOCOLWIDTHB: - case ltTWOCOLSPACING: - case ltSETHEADER: - case ltSETFOOTER: - case ltINDEX: - case ltITEM: - case ltBCOL: - case ltFCOL: - case ltSETHOTSPOTCOLOUR: - case ltSETHOTSPOTCOLOR: - case ltSETHOTSPOTUNDERLINE: - case ltSETTRANSPARENCY: - case ltUSEPACKAGE: - case ltBACKGROUND: - case ltBACKGROUNDCOLOUR: - case ltBACKGROUNDIMAGE: - case ltLINKCOLOUR: - case ltFOLLOWEDLINKCOLOUR: - case ltTEXTCOLOUR: - case ltIMAGE: - case ltIMAGEMAP: - case ltIMAGEL: - case ltIMAGER: - case ltPOPREFONLY: - case ltINSERTATLEVEL: - return FALSE; - break; - case ltTABULAR: - case ltSUPERTABULAR: - { - if (arg_no == 2) - return TRUE; - else return FALSE; - break; - } - case ltINDENTED: - { - if (arg_no == 2) return TRUE; - else return FALSE; - break; - } - case ltSIZEDBOX: - case ltSIZEDBOXD: - { - if (arg_no == 2) return TRUE; - else return FALSE; - break; - } - case ltDEFINECOLOUR: - case ltDEFINECOLOR: - { - static int redVal = 0; - static int greenVal = 0; - static int blueVal = 0; - static char *colourName = NULL; - if (start) - { - switch (arg_no) - { - case 1: - { - if (colourName) delete[] colourName; - colourName = copystring(GetArgData()); - break; - } - case 2: - { - redVal = atoi(GetArgData()); - break; - } - case 3: - { - greenVal = atoi(GetArgData()); - break; - } - case 4: - { - blueVal = atoi(GetArgData()); - AddColour(colourName, redVal, greenVal, blueVal); - break; - } - default: - break; - } - } - return FALSE; - break; - } - case ltFIGURE: - case ltFIGURESTAR: - case ltNORMALBOX: - case ltNORMALBOXD: - default: - { - if (IsArgOptional()) - return FALSE; - else - return TRUE; - break; - } - } - return TRUE; -} - diff --git a/utils/tex2rtf/src/tex2any.h b/utils/tex2rtf/src/tex2any.h deleted file mode 100644 index db5b1914de..0000000000 --- a/utils/tex2rtf/src/tex2any.h +++ /dev/null @@ -1,1067 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: tex2any.h -// Purpose: Latex conversion header -// Author: Julian Smart -// Modified by: -// Created: 7.9.93 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#include -#include "wx/wx.h" -#include "wx/utils.h" -#include "wx/list.h" -#include "wx/hash.h" -#include "wxhlpblk.h" - -/* - * Conversion modes - * - */ - -#define TEX_RTF 1 -#define TEX_XLP 2 -#define TEX_HTML 3 - -/* - * We have a list of macro definitions which we must define - * in advance to enable the parsing to recognize macros. - */ - -#define FORBID_OK 0 -#define FORBID_WARN 1 -#define FORBID_ABSOLUTELY 2 - -class TexMacroDef: public wxObject -{ - public: - int no_args; - char *name; - bool ignore; - int forbidden; - int macroId; - - TexMacroDef(int the_id, char *the_name, int n, bool ig, bool forbidLevel = FORBID_OK); - ~TexMacroDef(void); -}; - -#define CHUNK_TYPE_MACRO 1 -#define CHUNK_TYPE_ARG 2 -#define CHUNK_TYPE_STRING 3 - -/* - We have nested lists to represent the Tex document. - Each element of a list of chunks can be one of: - - a plain string - - a macro with/without arguments. Arguments are lists of TexChunks. - -Example (\toplevel is implicit but made explicit here): - -AddMacroDef(ltMYMAT, "mymat", 2); - -\toplevel{The cat sat on the \mymat{very coarse and {\it cheap}}{mat}}. - -Parsed as: - -TexChunk: type = macro, name = toplevel, no_args = 1 - Children: - - TexChunk: type = argument - - Children: - TexChunk: type = string, value = "The cat sat on the " - TexChunk: type = macro, name = mymat, no_args = 2 - - Children: - TexChunk: type = argument - - Children: - TexChunk: type = string, value = "very coarse and " - TexChunk: type = macro, name = it, no_args = 1 - - Children: - TexChunk: type = argument - - Children: - TexChunk: type = string, value = "cheap" - - TexChunk: type = argument - - Children: - TexChunk: type = string, value = mat - */ - -class TexChunk -{ - public: - int type; -// char *name; - TexMacroDef *def; - char *value; - int macroId; - int no_args; - int argn; - bool optional; // Is an optional argument - - wxList children; - TexChunk(int the_type, TexMacroDef *the_def = NULL); - TexChunk(TexChunk& toCopy); - virtual ~TexChunk(void); -}; - -// Represents a topic, used for generating a table of contents file (.cnt). -// Also for storing keywords found in a topic, a list of which is then inserted -// into the topic in the next pass. -class TexTopic: public wxObject -{ - public: - // This flag is set to indicate that the topic has children. - // If this is the case, we know to insert a 'book' icon at this level, - // not just a 'page' icon. We don't want to have to open a book only - // to find there's only one page in it. We might force a book to be used if - // a top-level topic has no children (?) - bool hasChildren; - char *filename; - wxStringList *keywords; - TexTopic(char *f = NULL); - ~TexTopic(void); -}; -extern wxHashTable TopicTable; -void AddKeyWordForTopic(char *topic, char *entry, char *filename = NULL); -void ClearKeyWordTable(void); - -extern TexChunk *TopLevel; -extern wxHashTable MacroDefs; -extern wxStringList IgnorableInputFiles; // Ignorable \input files, e.g. psbox.tex - -bool read_a_line(char *buf); -bool TexLoadFile(char *filename); -int ParseArg(TexChunk *thisArg, wxList& children, char *buffer, int pos, - char *environment = NULL, bool parseArgToBrace = TRUE, TexChunk *customMacroArgs = NULL); -int ParseMacroBody(char *macro_name, TexChunk *parent, int no_args, - char *buffer, int pos, char *environment = NULL, bool parseArgToBrace = TRUE, TexChunk *customMacroArgs = NULL); -void TraverseDocument(void); -void TraverseFromChunk(TexChunk *chunk, wxNode *thisNode = NULL, bool childrenOnly = FALSE); -#define TraverseChildrenFromChunk(arg) TraverseFromChunk(arg, NULL, TRUE) -void SetCurrentOutput(FILE *fd); -void SetCurrentOutputs(FILE *fd1, FILE *fd2); -extern FILE *CurrentOutput1; -extern FILE *CurrentOutput2; -void AddMacroDef(int the_id, char *name, int n, bool ignore = FALSE, bool forbidden = FALSE); -void TexInitialize(int bufSize); -void TexCleanUp(void); -void TexOutput(char *s, bool ordinaryText = FALSE); -char *GetArgData(TexChunk *chunk); -char *GetArgData(void); // Get the string for the current argument -int GetNoArgs(void); // Get the number of arguments for the current macro -TexChunk *GetArgChunk(void); // Get the chunk for the current argument -TexChunk *GetTopLevelChunk(void); // Get the chunk for the top level -TexChunk *GetNextChunk(void); // Look ahead to the next chunk -bool IsArgOptional(void); // Is this argument an optional argument? -void DefineDefaultMacros(void); // Optional set of default macros -int GetCurrentColumn(void); // number of characters on current line -char *ConvertCase(char *s); // Convert case, according to upperCaseNames setting. -extern wxPathList TexPathList; // Path list, can be used for file searching. - -// Define a variable value from the .ini file -char *RegisterSetting(char *settingName, char *settingValue, bool interactive = TRUE); - -// Major document styles -#define LATEX_REPORT 1 -#define LATEX_ARTICLE 2 -#define LATEX_LETTER 3 -#define LATEX_BOOK 4 -#define LATEX_SLIDES 5 - -extern TexChunk *DocumentTitle; -extern TexChunk *DocumentAuthor; -extern TexChunk *DocumentDate; -extern int DocumentStyle; -extern int MinorDocumentStyle; -extern char *BibliographyStyleString; -extern char *DocumentStyleString; -extern char *MinorDocumentStyleString; - -extern int normalFont; -extern int smallFont; -extern int tinyFont; -extern int largeFont1; -extern int LargeFont2; -extern int LARGEFont3; -extern int hugeFont1; -extern int HugeFont2; -extern int HUGEFont3; - -/* - * USER-ADJUSTABLE SETTINGS - * - */ - -// Section font sizes -extern int chapterFont; -extern int sectionFont; -extern int subsectionFont; -extern int titleFont; -extern int authorFont; -extern bool winHelp; // Output in Windows Help format if TRUE, linear otherwise -extern bool isInteractive; -extern bool runTwice; -extern int convertMode; -extern bool stopRunning; -extern int mirrorMargins; -extern bool headerRule; -extern bool footerRule; -extern int labelIndentTab; // From left indent to item label (points) -extern int itemIndentTab; // From left indent to item (points) -extern bool useUpButton; -extern int htmlBrowseButtons; -extern bool useHeadingStyles; // Insert \s1, s2 etc. -extern bool useWord; // Insert Word table of contents, etc. etc. -extern bool indexSubsections; // put subsections in index -extern bool compatibilityMode; -extern bool generateHPJ; // Generate WinHelp HPJ file -extern char *winHelpTitle; // Title for Windows Help file -extern int defaultTableColumnWidth; -extern char *bitmapMethod; -extern bool truncateFilenames; // Truncate for DOS -extern int winHelpVersion; // Version e.g. 4 for Win95 -extern bool winHelpContents; // Generate .cnt file -extern bool htmlIndex; // Generate .htx HTML index file -extern bool htmlFrameContents; // Use frames for HTML contents page -extern int contentsDepth; // Depth of contents for linear RTF files -extern bool upperCaseNames; // Filenames; default is lower case -extern char *backgroundImageString; // HTML background image -extern char *backgroundColourString; // HTML background colour -extern char *textColourString; // HTML text colour -extern char *linkColourString; // HTML link colour -extern char *followedLinkColourString; // HTML followed link colour -extern bool combineSubSections; // Stop splitting files below section - -// Names to help with internationalisation -extern char *ContentsNameString; -extern char *AbstractNameString; -extern char *GlossaryNameString; -extern char *ReferencesNameString; -extern char *FiguresNameString; -extern char *TablesNameString; -extern char *FigureNameString; -extern char *TableNameString; -extern char *IndexNameString; -extern char *ChapterNameString; -extern char *SectionNameString; -extern char *SubsectionNameString; -extern char *SubsubsectionNameString; -extern char *UpNameString; - -/* - * HTML button identifiers: what kind of browse buttons - * are placed in HTML files, if any. - * - */ - -#define HTML_BUTTONS_NONE 0 -#define HTML_BUTTONS_BITMAP 1 -#define HTML_BUTTONS_TEXT 2 - -/* - * Section numbering - * - */ - -extern int chapterNo; -extern int sectionNo; -extern int subsectionNo; -extern int subsubsectionNo; -extern int figureNo; -extern int tableNo; - -extern int ParSkip; -extern int ParIndent; - -extern bool isSync; - -// Set by client and by Tex2Any -extern TexChunk *currentSection; - -// Header/footers/pagestyle -extern TexChunk * LeftHeaderOdd; -extern TexChunk * LeftFooterOdd; -extern TexChunk * CentreHeaderOdd; -extern TexChunk * CentreFooterOdd; -extern TexChunk * RightHeaderOdd; -extern TexChunk * RightFooterOdd; -extern TexChunk * LeftHeaderEven; -extern TexChunk * LeftFooterEven; -extern TexChunk * CentreHeaderEven; -extern TexChunk * CentreFooterEven; -extern TexChunk * RightHeaderEven; -extern TexChunk * RightFooterEven; -extern char * PageStyle; - -// Repeat the currentSection, either real (Chapter) or simulated (References) -extern void OutputCurrentSection(void); -extern void OutputCurrentSectionToString(char *buf); -extern void OutputChunkToString(TexChunk *chunk, char *buf); - -extern char *fakeCurrentSection; - -// Called by Tex2Any to simulate a section -extern void FakeCurrentSection(char *fakeSection, bool addToContents = TRUE); - -/* - * Local to Tex2Any library - * - */ - -extern char *currentArgData; -extern bool haveArgData; // If TRUE, we're simulating the data. -void StartSimulateArgument(char *data); -void EndSimulateArgument(void); - -/* - * Client-defined - * - */ - -// Called on start/end of macro examination -void OnMacro(int macroId, int no_args, bool start); - -// Called on start/end of argument examination. -// Return TRUE at the start of an argument to traverse -// (output) the argument. -bool OnArgument(int macroId, int arg_no, bool start); - -// Default: library-defined -void DefaultOnMacro(int macroId, int no_args, bool start); - -// Default: library-defined -bool DefaultOnArgument(int macroId, int arg_no, bool start); - -// Called on error -void OnError(char *msg); - -// Called for information -void OnInform(char *msg); - -// Special yield wrapper -void Tex2RTFYield(bool force = FALSE); - -/* - * Useful utilities - * - */ - -// Look for \label macro, use this ref name if found or -// make up a topic name otherwise. -char *FindTopicName(TexChunk *chunk); -// Force the current topic to be this (e.g. force 'references' label). -void ForceTopicName(char *name); -void ResetTopicCounter(void); - -// Parse unit eg. 14, 12pt, 34cm and return value in points. -int ParseUnitArgument(char *unitArg); - -// Set small, large, normal etc. point sizes for reference size -void SetFontSizes(int pointSize); - -/* - * Strip off any extension (dot something) from end of file, - * IF one exists. Inserts zero into buffer. - * - */ - -void StripExtension(char *buffer); - -/* - * Reference structure - * - */ - -class TexRef: public wxObject -{ - public: - char *refLabel; // Reference label - char *refFile; // Reference filename (can be NULL) - char *sectionNumber; // Section or figure number (as a string) - char *sectionName; // name e.g. 'section' - TexRef(char *label, char *file, char *section, char *sectionN = NULL) - { - refLabel = copystring(label); - refFile = file ? copystring(file) : (char*) NULL; - sectionNumber = section ? copystring(section) : copystring("??"); - sectionName = sectionN ? copystring(sectionN) : copystring("??"); - } - ~TexRef(void) - { - delete[] refLabel; delete[] refFile; delete[] sectionNumber; delete[] sectionName; - } -}; - -extern wxHashTable TexReferences; - -/* - * Add a reference - * - */ - -void AddTexRef(char *name, char *file = NULL, char *sectionName = NULL, - int chapter = 0, int section = 0, int subsection = 0, int subsubsection = 0); - -/* - * Read and write reference file (.ref), to resolve refs for second pass. - * - */ -void WriteTexReferences(char *filename); -void ReadTexReferences(char *filename); - -/* - * Bibliography stuff - * - */ - -class BibEntry: public wxObject -{ - public: - char *key; - - /* - * book, inbook, article, phdthesis, inproceedings, techreport - */ - char *type; - - /* - * Possible fields - * - */ - char *editor; - char *title; - char *booktitle; - char *author; - char *journal; - char *volume; - char *number; - char *year; - char *month; - char *pages; - char *chapter; - char *publisher; - char *address; - char *institution; - char *organization; - char *comment; - - inline BibEntry(void) - { - key = NULL; - type = NULL; - editor = NULL; - title = NULL; - booktitle = NULL; - author = NULL; - journal = NULL; - volume = NULL; - number = NULL; - chapter = NULL; - year = NULL; - month = NULL; - pages = NULL; - publisher = NULL; - address = NULL; - institution = NULL; - organization = NULL; - comment = NULL; - } -}; - -extern wxList BibList; -extern wxStringList CitationList; - -bool ReadBib(char *filename); -void OutputBib(void); -void ResolveBibReferences(void); -void AddCitation(char *citeKey); -TexRef *FindReference(char *key); - -/* - * Ability to customize, or at least suppress unknown macro errors - * - */ - -extern wxList CustomMacroList; - -#define CUSTOM_MACRO_IGNORE 0 -#define CUSTOM_MACRO_OUTPUT 1 -#define CUSTOM_MACRO_MARK 2 - -class CustomMacro: public wxObject -{ - public: - char *macroName; - char *macroBody; - int noArgs; - inline CustomMacro(char *name, int args, char *body) - { - noArgs = args; - macroName = copystring(name); - if (body) - macroBody = copystring(body); - else - macroBody = NULL; - } -}; - -bool ReadCustomMacros(char *filename); -void ShowCustomMacros(void); -CustomMacro *FindCustomMacro(char *name); -char *ParseMultifieldString(char *s, int *pos); - -/* - * Colour table stuff - * - */ - -class ColourTableEntry: public wxObject -{ - public: - char *name; - unsigned int red; - unsigned int green; - unsigned int blue; - - ColourTableEntry(char *theName, unsigned int r, unsigned int g, unsigned int b); - ~ColourTableEntry(void); -}; - -extern wxList ColourTable; -extern void AddColour(char *theName, unsigned int r, unsigned int g, unsigned int b); -extern int FindColourPosition(char *theName); -// Converts e.g. "red" -> "#FF0000" -extern bool FindColourHTMLString(char *theName, char *buf); -extern void InitialiseColourTable(void); - -#define ltABSTRACT 1 -#define ltADDCONTENTSLINE 2 -#define ltADDTOCOUNTER 3 -#define ltALPH1 4 -#define ltALPH2 5 -#define ltAPPENDIX 6 -#define ltARABIC 7 -#define ltARRAY 8 -#define ltAUTHOR 9 - -#define ltBACKSLASH 30 -#define ltBASELINESKIP 31 -#define ltBF 32 -#define ltBIBITEM 33 -#define ltBIBLIOGRAPHYSTYLE 34 -#define ltBIBLIOGRAPHY 35 -#define ltBOXIT 36 -#define ltBACKSLASHRAW 37 -#define ltBACKGROUND 38 -#define ltBACKGROUNDCOLOUR 39 -#define ltBACKGROUNDIMAGE 40 -#define ltBRCLEAR 41 - -#define ltCAPTIONSTAR 50 -#define ltCAPTION 51 -#define ltCDOTS 52 -#define ltCENTERLINE 53 -#define ltCENTERING 54 -#define ltCENTER 55 -#define ltCEXTRACT 56 -#define ltCHAPTERHEADING 57 -#define ltCHAPTERSTAR 58 -#define ltCHAPTER 59 -#define ltCINSERT 60 -#define ltCITE 61 -#define ltCLASS 62 -#define ltCLEARDOUBLEPAGE 63 -#define ltCLEARPAGE 64 -#define ltCLINE 65 -#define ltCLIPSFUNC 66 -#define ltCOLUMNSEP 67 -#define ltCOMMENT 68 -#define ltCOPYRIGHT 69 -#define ltCPARAM 70 - -#define ltCHEAD 71 -#define ltCFOOT 72 - -#define ltCHAPTERHEADINGSTAR 73 - -#define ltDATE 90 -#define ltDESCRIPTION 91 -#define ltDESTRUCT 92 -#define ltDOCUMENTSTYLE 93 -#define ltDOCUMENT 94 -#define ltDOUBLESPACE 95 -#define ltDEFINECOLOUR 96 -#define ltDEFINECOLOR 97 - -#define ltEM 120 -#define ltENUMERATE 121 -#define ltEQUATION 122 -#define ltEVENSIDEMARGIN 123 - -#define ltFBOX 150 -#define ltFIGURE 151 -#define ltFLUSHLEFT 152 -#define ltFLUSHRIGHT 153 -#define ltFOOTHEIGHT 154 -#define ltFOOTNOTE 155 -#define ltFOOTSKIP 156 -#define ltFRAMEBOX 157 -#define ltFUNCTIONSECTION 158 -#define ltFUNC 159 -#define ltFIGURESTAR 160 -#define ltFOOTNOTESIZE 161 -#define ltFOOTNOTEPOPUP 162 -#define ltFANCYPLAIN 163 -#define ltFCOL 164 -#define ltBCOL 165 -#define ltFOLLOWEDLINKCOLOUR 166 - -#define ltGLOSSARY 180 -#define ltGLOSS 181 - -#define ltHEADHEIGHT 200 -#define ltHELPGLOSSARY 201 -#define ltHELPIGNORE 202 -#define ltHELPONLY 203 -#define ltHELPINPUT 204 -#define ltHELPFONTFAMILY 205 -#define ltHELPFONTSIZE 206 -#define ltHELPREFN 207 -#define ltHELPREF 208 -#define ltHFILL 209 -#define ltHLINE 210 -#define ltHRULE 211 -#define ltHSPACESTAR 212 -#define ltHSPACE 213 -#define ltHSKIPSTAR 214 -#define ltHSKIP 215 -#define lthuge 216 -#define ltHuge 217 -#define ltHUGE 218 -#define ltHTMLIGNORE 219 -#define ltHTMLONLY 220 - -#define ltINCLUDEONLY 240 -#define ltINCLUDE 241 -#define ltINDEX 242 -#define ltINPUT 243 -#define ltITEMIZE 244 -#define ltITEM 245 -#define ltIMAGE 246 -#define ltIT 247 -#define ltITEMSEP 248 -#define ltINDENTED 249 -#define ltIMAGEMAP 250 -#define ltIMAGER 251 -#define ltIMAGEL 252 -#define ltINSERTATLEVEL 253 - -#define ltKILL 260 - -#define ltLABEL 280 -#define ltlarge 281 -#define ltLarge 282 -#define ltLARGE 283 -#define ltLATEX 284 -#define ltLBOX 285 -#define ltLDOTS 286 -#define ltLINEBREAK 287 -#define ltLISTOFFIGURES 288 -#define ltLISTOFTABLES 289 -#define ltLHEAD 290 -#define ltLFOOT 291 -#define ltLATEXIGNORE 292 -#define ltLATEXONLY 293 -#define ltLOWERCASE 294 -#define ltLBRACERAW 295 -#define ltLINKCOLOUR 296 - -#define ltMAKEGLOSSARY 300 -#define ltMAKEINDEX 301 -#define ltMAKETITLE 302 -#define ltMARKRIGHT 303 -#define ltMARKBOTH 304 -#define ltMARGINPARWIDTH 305 -#define ltMARGINPAR 306 -#define ltMARGINPARODD 307 -#define ltMARGINPAREVEN 308 -#define ltMBOX 309 -#define ltMEMBERSECTION 310 -#define ltMEMBER 311 -#define ltMULTICOLUMN 312 -#define ltMARGINPARSEP 313 - -#define ltNEWCOUNTER 330 -#define ltNEWLINE 331 -#define ltNEWPAGE 332 -#define ltNOCITE 333 -#define ltNOINDENT 334 -#define ltNOLINEBREAK 335 -#define ltNOPAGEBREAK 336 -#define ltNORMALSIZE 337 -#define ltNORMALBOX 338 -#define ltNORMALBOXD 339 -#define ltNUMBEREDBIBITEM 340 - -#define ltONECOLUMN 360 -#define ltODDSIDEMARGIN 361 - -#define ltPAGEBREAK 380 -#define ltPAGEREF 381 -#define ltPAGESTYLE 382 -#define ltPAGENUMBERING 383 -#define ltPARAGRAPHSTAR 384 -#define ltPARAGRAPH 385 -#define ltPARAM 386 -#define ltPARINDENT 387 -#define ltPARSKIP 388 -#define ltPARTSTAR 389 -#define ltPART 390 -#define ltPAR 391 -#define ltPFUNC 392 -#define ltPICTURE 393 -#define ltPOPREF 394 -#define ltPOUNDS 395 -#define ltPRINTINDEX 396 -#define ltPSBOXTO 397 -#define ltPSBOX 398 -#define ltPOPREFONLY 399 - -#define ltQUOTE 420 -#define ltQUOTATION 421 - -#define ltRAGGEDBOTTOM 440 -#define ltRAGGEDLEFT 441 -#define ltRAGGEDRIGHT 442 -#define ltREF 443 -#define ltRM 444 -#define ltROMAN 445 -#define ltROMAN2 446 -#define ltRTFSP 447 -#define ltRULE 448 -#define ltRULEDROW 449 -#define ltDRULED 450 -#define ltRHEAD 451 -#define ltRFOOT 452 -#define ltROW 453 -#define ltRTFIGNORE 454 -#define ltRTFONLY 455 -#define ltRBRACERAW 456 -#define ltREGISTERED 457 - -#define ltSC 470 -#define ltSECTIONHEADING 471 -#define ltSECTIONSTAR 472 -#define ltSECTION 473 -#define ltSETCOUNTER 474 -#define ltSF 475 -#define ltSHORTCITE 476 -#define ltSINGLESPACE 477 -#define ltSLOPPYPAR 478 -#define ltSLOPPY 479 -#define ltSL 480 -#define ltSMALL 481 -#define ltSUBITEM 482 -#define ltSUBPARAGRAPHSTAR 483 -#define ltSUBPARAGRAPH 484 -#define ltSPECIAL 485 -#define ltSUBSECTIONSTAR 486 -#define ltSUBSECTION 487 -#define ltSUBSUBSECTIONSTAR 488 -#define ltSUBSUBSECTION 489 -#define ltSCRIPTSIZE 490 -#define ltSETHEADER 491 -#define ltSETFOOTER 492 -#define ltSIZEDBOX 493 -#define ltSIZEDBOXD 494 -#define ltSECTIONHEADINGSTAR 495 -#define ltSS 496 -#define ltSETHOTSPOTCOLOUR 497 -#define ltSETHOTSPOTCOLOR 498 -#define ltSETHOTSPOTUNDERLINE 499 -#define ltSETTRANSPARENCY 500 - -#define ltTABBING 510 -#define ltTABLEOFCONTENTS 511 -#define ltTABLE 512 -#define ltTABULAR 513 -#define ltTAB 514 -#define ltTEX 515 -#define ltTEXTWIDTH 516 -#define ltTEXTHEIGHT 517 -#define ltTHEBIBLIOGRAPHY 518 -#define ltTITLEPAGE 519 -#define ltTITLE 520 -#define ltTINY 521 -#define ltTODAY 522 -#define ltTOPMARGIN 523 -#define ltTOPSKIP 524 -#define ltTT 525 -#define ltTYPEIN 526 -#define ltTYPEOUT 527 -#define ltTWOCOLUMN 528 -#define ltTHEPAGE 529 -#define ltTHECHAPTER 530 -#define ltTHESECTION 531 -#define ltTHISPAGESTYLE 532 - -#define ltTWOCOLWIDTHA 533 -#define ltTWOCOLWIDTHB 534 -#define ltTWOCOLSPACING 535 -#define ltTWOCOLITEM 536 -#define ltTWOCOLITEMRULED 537 -#define ltTWOCOLLIST 538 -#define ltTEXTCOLOUR 539 - -#define ltUNDERLINE 550 -#define ltURLREF 551 -#define ltUPPERCASE 552 -#define ltUSEPACKAGE 553 - -#define ltVDOTS 570 -#define ltVERBATIMINPUT 571 -#define ltVERBATIM 572 -#define ltVERB 573 -#define ltVERSE 574 -#define ltVFILL 575 -#define ltVLINE 576 -#define ltVOID 577 -#define ltVRULE 578 -#define ltVSPACESTAR 579 -#define ltVSKIPSTAR 580 -#define ltVSPACE 581 -#define ltVSKIP 582 -#define ltVERBSTAR 583 - -#define ltWXCLIPS 600 -#define ltWINHELPIGNORE 601 -#define ltWINHELPONLY 602 - -#define ltXLPIGNORE 603 -#define ltXLPONLY 604 - -#define ltSPACE 620 -#define ltBACKSLASHCHAR 621 -#define ltPIPE 622 -#define ltFORWARDSLASH 623 -#define ltUNDERSCORE 624 -#define ltAMPERSAND 625 -#define ltPERCENT 626 -#define ltDOLLAR 627 -#define ltHASH 628 -#define ltLPARENTH 629 -#define ltRPARENTH 630 -#define ltLBRACE 631 -#define ltRBRACE 632 -#define ltEQUALS 633 -#define ltRANGLEBRA 634 -#define ltLANGLEBRA 635 -#define ltPLUS 636 -#define ltDASH 637 -#define ltSINGLEQUOTE 638 -#define ltBACKQUOTE 639 -#define ltTILDE 640 -#define ltAT_SYMBOL 641 - -// Characters, not macros but with special Latex significance -#define ltSPECIALDOLLAR 660 -#define ltSPECIALDOUBLEDOLLAR 661 -#define ltSPECIALTILDE 662 -#define ltSPECIALHASH 663 -#define ltSPECIALAMPERSAND 664 -#define ltSUPERTABULAR 665 - -// Accents -#define ltACCENT_GRAVE 700 -#define ltACCENT_ACUTE 701 -#define ltACCENT_CARET 702 -#define ltACCENT_UMLAUT 703 -#define ltACCENT_TILDE 704 -#define ltACCENT_DOT 705 -#define ltACCENT_CADILLA 706 - -// Symbols -#define ltALPHA 800 -#define ltBETA 801 -#define ltGAMMA 802 -#define ltDELTA 803 -#define ltEPSILON 804 -#define ltVAREPSILON 805 -#define ltZETA 806 -#define ltETA 807 -#define ltTHETA 808 -#define ltVARTHETA 809 -#define ltIOTA 810 -#define ltKAPPA 811 -#define ltLAMBDA 812 -#define ltMU 813 -#define ltNU 814 -#define ltXI 815 -#define ltPI 816 -#define ltVARPI 817 -#define ltRHO 818 -#define ltVARRHO 819 -#define ltSIGMA 820 -#define ltVARSIGMA 821 -#define ltTAU 822 -#define ltUPSILON 823 -#define ltPHI 824 -#define ltVARPHI 825 -#define ltCHI 826 -#define ltPSI 827 -#define ltOMEGA 828 - -#define ltCAP_GAMMA 830 -#define ltCAP_DELTA 831 -#define ltCAP_THETA 832 -#define ltCAP_LAMBDA 833 -#define ltCAP_XI 834 -#define ltCAP_PI 835 -#define ltCAP_SIGMA 836 -#define ltCAP_UPSILON 837 -#define ltCAP_PHI 838 -#define ltCAP_PSI 839 -#define ltCAP_OMEGA 840 - -// Binary operation symbols -#define ltLE 850 -#define ltLEQ 851 -#define ltLL 852 -#define ltSUBSET 853 -#define ltSUBSETEQ 854 -#define ltSQSUBSET 855 -#define ltSQSUBSETEQ 856 -#define ltIN 857 -#define ltVDASH 858 -#define ltMODELS 859 -#define ltGE 860 -#define ltGEQ 861 -#define ltGG 862 -#define ltSUPSET 863 -#define ltSUPSETEQ 864 -#define ltSQSUPSET 865 -#define ltSQSUPSETEQ 866 -#define ltNI 867 -#define ltDASHV 868 -#define ltPERP 869 -#define ltNEQ 870 -#define ltDOTEQ 871 -#define ltAPPROX 872 -#define ltCONG 873 -#define ltEQUIV 874 -#define ltPROPTO 875 -#define ltPREC 876 -#define ltPRECEQ 877 -#define ltPARALLEL 878 -#define ltSIM 879 -#define ltSIMEQ 880 -#define ltASYMP 881 -#define ltSMILE 882 -#define ltFROWN 883 -#define ltBOWTIE 884 -#define ltSUCC 885 -#define ltSUCCEQ 886 -#define ltMID 887 - -// Negated relation symbols (selected) -#define ltNOTEQ 890 -#define ltNOTIN 891 -#define ltNOTSUBSET 892 - -// Arrows -#define ltLEFTARROW 900 -#define ltLEFTARROW2 901 -#define ltRIGHTARROW 902 -#define ltRIGHTARROW2 903 -#define ltLEFTRIGHTARROW 904 -#define ltLEFTRIGHTARROW2 905 -#define ltUPARROW 906 -#define ltUPARROW2 907 -#define ltDOWNARROW 908 -#define ltDOWNARROW2 909 - -// Miscellaneous symbols -#define ltALEPH 1000 -#define ltWP 1001 -#define ltRE 1002 -#define ltIM 1003 -#define ltEMPTYSET 1004 -#define ltNABLA 1005 -#define ltSURD 1006 -#define ltPARTIAL 1007 -#define ltBOT 1008 -#define ltFORALL 1009 -#define ltEXISTS 1010 -#define ltNEG 1011 -#define ltSHARP 1012 -#define ltANGLE 1013 -#define ltTRIANGLE 1014 -#define ltCLUBSUIT 1015 -#define ltDIAMONDSUIT 1016 -#define ltHEARTSUIT 1017 -#define ltSPADESUIT 1018 -#define ltINFTY 1019 - -// Binary operation symbols -#define ltPM 1030 -#define ltMP 1031 -#define ltTIMES 1032 -#define ltDIV 1033 -#define ltCDOT 1034 -#define ltAST 1035 -#define ltSTAR 1036 -#define ltCAP 1037 -#define ltCUP 1038 -#define ltVEE 1039 -#define ltWEDGE 1040 -#define ltCIRC 1041 -#define ltBULLET 1042 -#define ltDIAMOND 1043 -#define ltOSLASH 1044 -#define ltBOX 1045 -#define ltDIAMOND2 1046 -#define ltBIGTRIANGLEDOWN 1047 -#define ltOPLUS 1048 -#define ltOTIMES 1049 - -// Latex2e commands -#define ltRMFAMILY 1200 -#define ltSFFAMILY 1201 -#define ltTTFAMILY 1202 -#define ltBFSERIES 1203 -#define ltITSHAPE 1204 -#define ltSLSHAPE 1205 -#define ltSCSHAPE 1206 - -#define ltMDSERIES 1207 -#define ltUPSHAPE 1208 - -#define ltTEXTRM 1209 -#define ltTEXTSF 1210 -#define ltTEXTTT 1211 -#define ltTEXTBF 1212 -#define ltTEXTIT 1213 -#define ltTEXTSL 1214 -#define ltTEXTSC 1215 -#define ltEMPH 1216 - -#define ltDOCUMENTCLASS 1217 - -// Space macros -#define ltSMALLSPACE1 1250 -#define ltSMALLSPACE2 1251 - -// Pseudo-macros -#define ltTOPLEVEL 15000 -#define ltCUSTOM_MACRO 15001 -#define ltSOLO_BLOCK 15002 - - - diff --git a/utils/tex2rtf/src/tex2rtf.cpp b/utils/tex2rtf/src/tex2rtf.cpp deleted file mode 100644 index d99f913439..0000000000 --- a/utils/tex2rtf/src/tex2rtf.cpp +++ /dev/null @@ -1,1076 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: tex2rtf.cpp -// Purpose: Converts Latex to linear/WinHelp RTF, HTML, wxHelp. -// Author: Julian Smart -// Modified by: -// Created: 7.9.93 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#ifndef NO_GUI -#include -#include -#endif - -#ifdef NO_GUI -#if wxUSE_IOSTREAMH -#include -#include -#else -#include -#include -#endif -#endif - -#include -#include -#include "tex2any.h" -#include "tex2rtf.h" -#include "rtfutils.h" - -#if (defined(__WXGTK__) || defined(__WXMOTIF__)) && !defined(NO_GUI) -#include "tex2rtf.xpm" -#endif - -const float versionNo = 2.0; - -TexChunk *currentMember = NULL; -bool startedSections = FALSE; -char *contentsString = NULL; -bool suppressNameDecoration = FALSE; -bool OkToClose = TRUE; -int passNumber = 1; - -#ifndef NO_GUI -wxHelpController *HelpInstance = NULL; - -#ifdef __WXMSW__ -static char *ipc_buffer = NULL; -static char Tex2RTFLastStatus[100]; -Tex2RTFServer *TheTex2RTFServer = NULL; -#endif -#endif - -char *bulletFile = NULL; - -FILE *Contents = NULL; // Contents page -FILE *Chapters = NULL; // Chapters (WinHelp RTF) or rest of file (linear RTF) -FILE *Sections = NULL; -FILE *Subsections = NULL; -FILE *Subsubsections = NULL; -FILE *Popups = NULL; -FILE *WinHelpContentsFile = NULL; - -char *InputFile = NULL; -char *OutputFile = NULL; -char *MacroFile = copystring("tex2rtf.ini"); - -char *FileRoot = NULL; -char *ContentsName = NULL; // Contents page from last time around -char *TmpContentsName = NULL; // Current contents page -char *TmpFrameContentsName = NULL; // Current frame contents page -char *WinHelpContentsFileName = NULL; // WinHelp .cnt file -char *RefName = NULL; // Reference file name - -char *RTFCharset = copystring("ansi"); - -#ifdef __WXMSW__ -int BufSize = 100; // Size of buffer in K -#else -int BufSize = 500; -#endif - -bool Go(void); -void ShowOptions(void); - -#ifdef NO_GUI -int main(int argc, char **argv) -#else -wxMenuBar *menuBar = NULL; -MyFrame *frame = NULL; - -// DECLARE_APP(MyApp) -IMPLEMENT_APP(MyApp) - -// `Main program' equivalent, creating windows and returning main app frame -bool MyApp::OnInit() -#endif -{ - // Use default list of macros defined in tex2any.cc - DefineDefaultMacros(); - AddMacroDef(ltHARDY, "hardy", 0); - - FileRoot = new char[300]; - ContentsName = new char[300]; - TmpContentsName = new char[300]; - TmpFrameContentsName = new char[300]; - WinHelpContentsFileName = new char[300]; - RefName = new char[300]; - - int n = 1; - - // Read input/output files - if (argc > 1) - { - if (argv[1][0] != '-') - { - InputFile = argv[1]; - n ++; - - if (argc > 2) - { - if (argv[2][0] != '-') - { - OutputFile = argv[2]; - n ++; - } - } - } - } - -#ifdef NO_GUI - if (!InputFile || !OutputFile) - { - cout << "Tex2RTF: input or output file is missing.\n"; - ShowOptions(); - exit(1); - } -#endif - if (InputFile) - { - TexPathList.EnsureFileAccessible(InputFile); - } - if (!InputFile || !OutputFile) - isInteractive = TRUE; - - for (int i = n; i < argc;) - { - if (strcmp(argv[i], "-winhelp") == 0) - { - i ++; - convertMode = TEX_RTF; - winHelp = TRUE; - } -#ifndef NO_GUI - else if (strcmp(argv[i], "-interactive") == 0) - { - i ++; - isInteractive = TRUE; - } -#endif - else if (strcmp(argv[i], "-sync") == 0) // Don't yield - { - i ++; - isSync = TRUE; - } - else if (strcmp(argv[i], "-rtf") == 0) - { - i ++; - convertMode = TEX_RTF; - } - else if (strcmp(argv[i], "-html") == 0) - { - i ++; - convertMode = TEX_HTML; - } - else if (strcmp(argv[i], "-xlp") == 0) - { - i ++; - convertMode = TEX_XLP; - } - else if (strcmp(argv[i], "-twice") == 0) - { - i ++; - runTwice = TRUE; - } - else if (strcmp(argv[i], "-macros") == 0) - { - i ++; - if (i < argc) - { - MacroFile = copystring(argv[i]); - i ++; - } - } - else if (strcmp(argv[i], "-bufsize") == 0) - { - i ++; - if (i < argc) - { - BufSize = atoi(argv[i]); - i ++; - } - } - else if (strcmp(argv[i], "-charset") == 0) - { - i ++; - if (i < argc) - { - char *s = argv[i]; - i ++; - if (strcmp(s, "ansi") == 0 || strcmp(s, "pc") == 0 || strcmp(s, "mac") == 0 || - strcmp(s, "pca") == 0) - RTFCharset = copystring(s); - else - { - OnError("Incorrect argument for -charset"); - } - } - } - else - { - char buf[100]; - sprintf(buf, "Invalid switch %s.\n", argv[i]); - OnError(buf); - i++; -#ifdef NO_GUI - ShowOptions(); - exit(1); -#endif - } - } - -#if defined(__WXMSW__) && !defined(NO_GUI) - wxDDEInitialize(); - Tex2RTFLastStatus[0] = 0; // DDE connection return value - TheTex2RTFServer = new Tex2RTFServer; - TheTex2RTFServer->Create("TEX2RTF"); -#endif - -#if defined(__WXMSW__) && defined(__WIN16__) - // Limit to max Windows array size - if (BufSize > 64) BufSize = 64; -#endif - - TexInitialize(BufSize); - ResetContentsLevels(0); - -#ifndef NO_GUI - - if (isInteractive) - { - char buf[100]; - - // Create the main frame window - frame = new MyFrame(NULL, -1, "Tex2RTF", wxPoint(-1, -1), wxSize(400, 300)); - frame->CreateStatusBar(2); - - // Give it an icon - // TODO: uncomment this when we have tex2rtf.xpm - frame->SetIcon(wxICON(tex2rtf)); - - if (InputFile) - { - sprintf(buf, "Tex2RTF [%s]", FileNameFromPath(InputFile)); - frame->SetTitle(buf); - } - - // Make a menubar - wxMenu *file_menu = new wxMenu; - file_menu->Append(TEX_GO, "&Go", "Run converter"); - file_menu->Append(TEX_SET_INPUT, "Set &Input File", "Set the LaTeX input file"); - file_menu->Append(TEX_SET_OUTPUT, "Set &Output File", "Set the output file"); - file_menu->AppendSeparator(); - file_menu->Append(TEX_VIEW_LATEX, "View &LaTeX File", "View the LaTeX input file"); - file_menu->Append(TEX_VIEW_OUTPUT, "View Output &File", "View output file"); - file_menu->Append(TEX_SAVE_FILE, "&Save log file", "Save displayed text into file"); - file_menu->AppendSeparator(); - file_menu->Append(TEX_QUIT, "E&xit", "Exit Tex2RTF"); - - wxMenu *macro_menu = new wxMenu; - - macro_menu->Append(TEX_LOAD_CUSTOM_MACROS, "&Load Custom Macros", "Load custom LaTeX macro file"); - macro_menu->Append(TEX_VIEW_CUSTOM_MACROS, "View &Custom Macros", "View custom LaTeX macros"); - - wxMenu *mode_menu = new wxMenu; - - mode_menu->Append(TEX_MODE_RTF, "Output linear &RTF", "Wordprocessor-compatible RTF"); - mode_menu->Append(TEX_MODE_WINHELP, "Output &WinHelp RTF", "WinHelp-compatible RTF"); - mode_menu->Append(TEX_MODE_HTML, "Output &HTML", "HTML World Wide Web hypertext file"); - mode_menu->Append(TEX_MODE_XLP, "Output &XLP", "wxHelp hypertext help file"); - - wxMenu *help_menu = new wxMenu; - - help_menu->Append(TEX_HELP, "&Help", "Tex2RTF Contents Page"); - help_menu->Append(TEX_ABOUT, "&About Tex2RTF", "About Tex2RTF"); - - menuBar = new wxMenuBar; - menuBar->Append(file_menu, "&File"); - menuBar->Append(macro_menu, "&Macros"); - menuBar->Append(mode_menu, "&Conversion Mode"); - menuBar->Append(help_menu, "&Help"); - - frame->SetMenuBar(menuBar); - frame->textWindow = new wxTextCtrl(frame, -1, "", wxPoint(-1, -1), wxSize(-1, -1), wxTE_READONLY|wxTE_MULTILINE); - - (*frame->textWindow) << "Welcome to Julian Smart's LaTeX to RTF converter.\n"; -// ShowOptions(); - - HelpInstance = new wxHelpController(); - HelpInstance->Initialize("tex2rtf"); - - /* - * Read macro/initialisation file - * - */ - - wxString path; - if ((path = TexPathList.FindValidPath(MacroFile)) != "") - ReadCustomMacros((char*) (const char*) path); - - strcpy(buf, "In "); - - if (winHelp && (convertMode == TEX_RTF)) - strcat(buf, "WinHelp RTF"); - else if (!winHelp && (convertMode == TEX_RTF)) - strcat(buf, "linear RTF"); - else if (convertMode == TEX_HTML) strcat(buf, "HTML"); - else if (convertMode == TEX_XLP) strcat(buf, "XLP"); - strcat(buf, " mode."); - frame->SetStatusText(buf, 1); - - frame->Show(TRUE); - return TRUE; - } - else -#endif // NO_GUI - { - /* - * Read macro/initialisation file - * - */ - - wxString path; - if ((path = TexPathList.FindValidPath(MacroFile)) != "") - ReadCustomMacros((char*) (const char*) path); - - Go(); - if (runTwice) Go(); -#ifdef NO_GUI - return 0; -#else - return NULL; -#endif - } - -#ifndef NO_GUI - // Return the main frame window - return TRUE; -#else - return FALSE; -#endif -} - -int MyApp::OnExit() -{ - wxNode *node = CustomMacroList.First(); - while (node) - { - CustomMacro *macro = (CustomMacro *)node->Data(); - delete macro; - delete node; - node = CustomMacroList.First(); - } - MacroDefs.BeginFind(); - node = MacroDefs.Next(); - while (node) - { - TexMacroDef* def = (TexMacroDef*) node->Data(); - delete def; - node = MacroDefs.Next(); - } - MacroDefs.Clear(); -#ifdef __WXMSW__ - delete TheTex2RTFServer; - wxDDECleanUp(); -#endif - delete HelpInstance; - - // TODO: this simulates zero-memory leaks! - // Otherwise there are just too many... -#ifndef __WXGTK__ - wxDebugContext::SetCheckpoint(); -#endif - - return 0; -} - -void ShowOptions(void) -{ - char buf[100]; - sprintf(buf, "Tex2RTF version %.2f", versionNo); - OnInform(buf); - OnInform("Usage: tex2rtf [input] [output] [switches]\n"); - OnInform("where valid switches are"); - OnInform(" -interactive"); - OnInform(" -bufsize "); - OnInform(" -charset (default ansi)"); - OnInform(" -twice"); - OnInform(" -sync"); - OnInform(" -macros "); - OnInform(" -winhelp"); - OnInform(" -rtf"); - OnInform(" -html"); - OnInform(" -xlp\n"); -} - -#ifndef NO_GUI - -BEGIN_EVENT_TABLE(MyFrame, wxFrame) - EVT_CLOSE(MyFrame::OnCloseWindow) - EVT_MENU(TEX_QUIT, MyFrame::OnExit) - EVT_MENU(TEX_GO, MyFrame::OnGo) - EVT_MENU(TEX_SET_INPUT, MyFrame::OnSetInput) - EVT_MENU(TEX_SET_OUTPUT, MyFrame::OnSetOutput) - EVT_MENU(TEX_SAVE_FILE, MyFrame::OnSaveFile) - EVT_MENU(TEX_VIEW_LATEX, MyFrame::OnViewLatex) - EVT_MENU(TEX_VIEW_OUTPUT, MyFrame::OnViewOutput) - EVT_MENU(TEX_VIEW_CUSTOM_MACROS, MyFrame::OnShowMacros) - EVT_MENU(TEX_LOAD_CUSTOM_MACROS, MyFrame::OnLoadMacros) - EVT_MENU(TEX_MODE_RTF, MyFrame::OnModeRTF) - EVT_MENU(TEX_MODE_WINHELP, MyFrame::OnModeWinHelp) - EVT_MENU(TEX_MODE_HTML, MyFrame::OnModeHTML) - EVT_MENU(TEX_MODE_XLP, MyFrame::OnModeXLP) - EVT_MENU(TEX_HELP, MyFrame::OnHelp) - EVT_MENU(TEX_ABOUT, MyFrame::OnAbout) -END_EVENT_TABLE() - -// My frame constructor -MyFrame::MyFrame(wxFrame *frame, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size): - wxFrame(frame, id, title, pos, size) -{} - -void MyFrame::OnCloseWindow(wxCloseEvent& event) -{ - if (!stopRunning && !OkToClose) - { - stopRunning = TRUE; - runTwice = FALSE; - return; - } - else if (OkToClose) - { - this->Destroy(); - } -} - -void MyFrame::OnExit(wxCommandEvent& event) -{ - this->Destroy(); -} - -void MyFrame::OnGo(wxCommandEvent& event) -{ - menuBar->EnableTop(0, FALSE); - menuBar->EnableTop(1, FALSE); - menuBar->EnableTop(2, FALSE); - menuBar->EnableTop(3, FALSE); - textWindow->Clear(); - Tex2RTFYield(TRUE); - Go(); - - if (runTwice) - { - Tex2RTFYield(TRUE); - Go(); - } - menuBar->EnableTop(0, TRUE); - menuBar->EnableTop(1, TRUE); - menuBar->EnableTop(2, TRUE); - menuBar->EnableTop(3, TRUE); -} - -void MyFrame::OnSetInput(wxCommandEvent& event) -{ - ChooseInputFile(TRUE); -} - -void MyFrame::OnSetOutput(wxCommandEvent& event) -{ - ChooseOutputFile(TRUE); -} - -void MyFrame::OnSaveFile(wxCommandEvent& event) -{ - wxString s = wxFileSelector("Save text to file", "", "", "txt", "*.txt"); - if (s != "") - { - textWindow->SaveFile(s); - char buf[350]; - sprintf(buf, "Saved text to %s", (const char*) s); - frame->SetStatusText(buf, 0); - } -} - -void MyFrame::OnViewOutput(wxCommandEvent& event) -{ - ChooseOutputFile(); - if (OutputFile && wxFileExists(OutputFile)) - { - textWindow->LoadFile(OutputFile); - char buf[300]; - wxString str(wxFileNameFromPath(OutputFile)); - sprintf(buf, "Tex2RTF [%s]", (const char*) str); - frame->SetTitle(buf); - } -} - -void MyFrame::OnViewLatex(wxCommandEvent& event) -{ - ChooseInputFile(); - if (InputFile && wxFileExists(InputFile)) - { - textWindow->LoadFile(InputFile); - char buf[300]; - wxString str(wxFileNameFromPath(OutputFile)); - sprintf(buf, "Tex2RTF [%s]", (const char*) str); - frame->SetTitle(buf); - } -} - -void MyFrame::OnLoadMacros(wxCommandEvent& event) -{ - textWindow->Clear(); - wxString s = wxFileSelector("Choose custom macro file", wxPathOnly(MacroFile), wxFileNameFromPath(MacroFile), "ini", "*.ini"); - if (s != "" && wxFileExists(s)) - { - MacroFile = copystring(s); - ReadCustomMacros((char*) (const char*) s); - ShowCustomMacros(); - } -} - -void MyFrame::OnShowMacros(wxCommandEvent& event) -{ - textWindow->Clear(); - Tex2RTFYield(TRUE); - ShowCustomMacros(); -} - -void MyFrame::OnModeRTF(wxCommandEvent& event) -{ - convertMode = TEX_RTF; - winHelp = FALSE; - InputFile = NULL; - OutputFile = NULL; - SetStatusText("In linear RTF mode.", 1); -} - -void MyFrame::OnModeWinHelp(wxCommandEvent& event) -{ - convertMode = TEX_RTF; - winHelp = TRUE; - InputFile = NULL; - OutputFile = NULL; - SetStatusText("In WinHelp RTF mode.", 1); -} - -void MyFrame::OnModeHTML(wxCommandEvent& event) -{ - convertMode = TEX_HTML; - winHelp = FALSE; - InputFile = NULL; - OutputFile = NULL; - SetStatusText("In HTML mode.", 1); -} - -void MyFrame::OnModeXLP(wxCommandEvent& event) -{ - convertMode = TEX_XLP; - InputFile = NULL; - OutputFile = NULL; - SetStatusText("In XLP mode.", 1); -} - -void MyFrame::OnHelp(wxCommandEvent& event) -{ - HelpInstance->LoadFile(); - HelpInstance->DisplayContents(); -} - -void MyFrame::OnAbout(wxCommandEvent& event) -{ - char buf[300]; -#ifdef __WIN32__ - char *platform = " (32-bit)"; -#else -#ifdef __WXMSW__ - char *platform = " (16-bit)"; -#else - char *platform = ""; -#endif -#endif - sprintf(buf, "Tex2RTF Version %.2f%s\nLaTeX to RTF, WinHelp, HTML and wxHelp Conversion\n\n(c) Julian Smart 1999", versionNo, platform); - wxMessageBox(buf, "About Tex2RTF"); -} - -void ChooseInputFile(bool force) -{ - if (force || !InputFile) - { - wxString s = wxFileSelector("Choose LaTeX input file", wxPathOnly(InputFile), wxFileNameFromPath(InputFile), "tex", "*.tex"); - if (s != "") - { - // Different file, so clear index entries. - ClearKeyWordTable(); - ResetContentsLevels(0); - passNumber = 1; - char buf[300]; - InputFile = copystring(s); - wxString str = wxFileNameFromPath(InputFile); - sprintf(buf, "Tex2RTF [%s]", (const char*) str); - frame->SetTitle(buf); - OutputFile = NULL; - } - } -} - -void ChooseOutputFile(bool force) -{ - char extensionBuf[10]; - char wildBuf[10]; - strcpy(wildBuf, "*."); - char *path = NULL; - if (OutputFile) - path = wxPathOnly(OutputFile); - else if (InputFile) - path = wxPathOnly(InputFile); - - switch (convertMode) - { - case TEX_RTF: - { - strcpy(extensionBuf, "rtf"); - strcat(wildBuf, "rtf"); - break; - } - case TEX_XLP: - { - strcpy(extensionBuf, "xlp"); - strcat(wildBuf, "xlp"); - break; - } - case TEX_HTML: - { -#if defined(__WXMSW__) && defined(__WIN16__) - strcpy(extensionBuf, "htm"); - strcat(wildBuf, "htm"); -#else - strcpy(extensionBuf, "html"); - strcat(wildBuf, "html"); -#endif - break; - } - } - if (force || !OutputFile) - { - wxString s = wxFileSelector("Choose output file", path, wxFileNameFromPath(OutputFile), - extensionBuf, wildBuf); - if (s != "") - OutputFile = copystring(s); - } -} -#endif - -bool Go(void) -{ -#ifndef NO_GUI - ChooseInputFile(); - ChooseOutputFile(); -#endif - - if (!InputFile || !OutputFile) - return FALSE; - -#ifndef NO_GUI - if (isInteractive) - { - char buf[300]; - wxString str = wxFileNameFromPath(InputFile); - - sprintf(buf, "Tex2RTF [%s]", (const char*) str); - frame->SetTitle(buf); - } - - wxStartTimer(); -#endif - - // Find extension-less filename - strcpy(FileRoot, OutputFile); - StripExtension(FileRoot); - - if (truncateFilenames && convertMode == TEX_HTML) - { - // Truncate to five characters. This ensures that - // we can generate DOS filenames such as thing999. But 1000 files - // may not be enough, of course... - char* sName = wxFileNameFromPath( FileRoot); // this Julian's method is non-destructive reference - - if(sName) - if(strlen( sName) > 5) - sName[5] = '\0'; // that should do! - } - - sprintf(ContentsName, "%s.con", FileRoot); - sprintf(TmpContentsName, "%s.cn1", FileRoot); - sprintf(TmpFrameContentsName, "%s.frc", FileRoot); - sprintf(WinHelpContentsFileName, "%s.cnt", FileRoot); - sprintf(RefName, "%s.ref", FileRoot); - - TexPathList.EnsureFileAccessible(InputFile); - if (!bulletFile) - { - wxString s = TexPathList.FindValidPath("bullet.bmp"); - if (s != "") - { - wxString str = wxFileNameFromPath(s); - bulletFile = copystring(str); - } - } - - if (wxFileExists(RefName)) - ReadTexReferences(RefName); - - bool success = FALSE; - - if (InputFile && OutputFile) - { - if (!FileExists(InputFile)) - { - OnError("Cannot open input file!"); - TexCleanUp(); - return FALSE; - } -#ifndef NO_GUI - if (isInteractive) - { - char buf[50]; - sprintf(buf, "Working, pass %d...", passNumber); - frame->SetStatusText(buf); - } -#endif - OkToClose = FALSE; - OnInform("Reading LaTeX file..."); - TexLoadFile(InputFile); - - switch (convertMode) - { - case TEX_RTF: - { - success = RTFGo(); - break; - } - case TEX_XLP: - { - success = XLPGo(); - break; - } - case TEX_HTML: - { - success = HTMLGo(); - break; - } - } - } - if (stopRunning) - { - OnInform("*** Aborted by user."); - success = FALSE; - stopRunning = FALSE; - } - - if (success) - { - WriteTexReferences(RefName); - TexCleanUp(); - startedSections = FALSE; - - char buf[100]; -#ifndef NO_GUI - long tim = wxGetElapsedTime(); - sprintf(buf, "Finished in %ld seconds.", (long)(tim/1000.0)); - OnInform(buf); - if (isInteractive) - { - sprintf(buf, "Done, %d %s.", passNumber, (passNumber > 1) ? "passes" : "pass"); - frame->SetStatusText(buf); - } -#else - sprintf(buf, "Done, %d %s.", passNumber, (passNumber > 1) ? "passes" : "pass"); - OnInform(buf); -#endif - passNumber ++; - OkToClose = TRUE; - return TRUE; - } - - TexCleanUp(); - startedSections = FALSE; - - OnInform("Sorry, unsuccessful."); - OkToClose = TRUE; - return FALSE; -} - -void OnError(char *msg) -{ -#ifdef NO_GUI - cerr << "Error: " << msg << "\n"; - cerr.flush(); -#else - if (isInteractive) - (*frame->textWindow) << "Error: " << msg << "\n"; - else -#ifdef __UNIX__ - { - cerr << "Error: " << msg << "\n"; - cerr.flush(); - } -#endif -#ifdef __WXMSW__ - wxError(msg); -#endif - Tex2RTFYield(TRUE); -#endif // NO_GUI -} - -void OnInform(char *msg) -{ -#ifdef NO_GUI - cout << msg << "\n"; - cout.flush(); -#else - if (isInteractive) - (*frame->textWindow) << msg << "\n"; - else -#ifdef __WXMSW__ - { - cout << msg << "\n"; - cout.flush(); - } -#endif -#ifdef __WXMSW__ - {} -#endif - if (isInteractive) - { - Tex2RTFYield(TRUE); - } -#endif // NO_GUI -} - -void OnMacro(int macroId, int no_args, bool start) -{ - switch (convertMode) - { - case TEX_RTF: - { - RTFOnMacro(macroId, no_args, start); - break; - } - case TEX_XLP: - { - XLPOnMacro(macroId, no_args, start); - break; - } - case TEX_HTML: - { - HTMLOnMacro(macroId, no_args, start); - break; - } - } -} - -bool OnArgument(int macroId, int arg_no, bool start) -{ - switch (convertMode) - { - case TEX_RTF: - { - return RTFOnArgument(macroId, arg_no, start); - break; - } - case TEX_XLP: - { - return XLPOnArgument(macroId, arg_no, start); - break; - } - case TEX_HTML: - { - return HTMLOnArgument(macroId, arg_no, start); - break; - } - } - return TRUE; -} - -/* - * DDE Stuff - */ -#if defined(__WXMSW__) && !defined(NO_GUI) - -/* - * Server - */ - -wxConnectionBase *Tex2RTFServer::OnAcceptConnection(const wxString& topic) -{ - if (topic == "TEX2RTF") - { - if (!ipc_buffer) - ipc_buffer = new char[1000]; - - return new Tex2RTFConnection(ipc_buffer, 4000); - } - else - return NULL; -} - - /* - * Connection - */ - -Tex2RTFConnection::Tex2RTFConnection(char *buf, int size):wxDDEConnection(buf, size) -{ -} - -Tex2RTFConnection::~Tex2RTFConnection(void) -{ -} - -bool SplitCommand(char *data, char *firstArg, char *secondArg) -{ - firstArg[0] = 0; - secondArg[0] = 0; - int i = 0; - int len = strlen(data); - bool stop = FALSE; - // Find first argument (command name) - while (!stop) - { - if (data[i] == ' ' || data[i] == 0) - stop = TRUE; - else - { - firstArg[i] = data[i]; - i ++; - } - } - firstArg[i] = 0; - if (data[i] == ' ') - { - // Find second argument - i ++; - int j = 0; - while (data[i] != 0) - { - secondArg[j] = data[i]; - i ++; - j ++; - } - secondArg[j] = 0; - } - return TRUE; -} - -bool Tex2RTFConnection::OnExecute(const wxString& topic, char *data, int size, int format) -{ - strcpy(Tex2RTFLastStatus, "OK"); - - char firstArg[50]; - char secondArg[300]; - if (SplitCommand(data, firstArg, secondArg)) - { - bool hasArg = (strlen(secondArg) > 0); - if (strcmp(firstArg, "INPUT") == 0 && hasArg) - { - if (InputFile) delete[] InputFile; - InputFile = copystring(secondArg); - if (frame) - { - char buf[100]; - wxString str = wxFileNameFromPath(InputFile); - sprintf(buf, "Tex2RTF [%s]", (const char*) str); - frame->SetTitle(buf); - } - } - else if (strcmp(firstArg, "OUTPUT") == 0 && hasArg) - { - if (OutputFile) delete[] OutputFile; - OutputFile = copystring(secondArg); - } - else if (strcmp(firstArg, "GO") == 0) - { - strcpy(Tex2RTFLastStatus, "WORKING"); - if (!Go()) - strcpy(Tex2RTFLastStatus, "CONVERSION ERROR"); - else - strcpy(Tex2RTFLastStatus, "OK"); - } - else if (strcmp(firstArg, "EXIT") == 0) - { - if (frame && frame->OnClose()) - delete frame; - } - else if (strcmp(firstArg, "MINIMIZE") == 0 || strcmp(firstArg, "ICONIZE") == 0) - { - if (frame) - frame->Iconize(TRUE); - } - else if (strcmp(firstArg, "SHOW") == 0 || strcmp(firstArg, "RESTORE") == 0) - { - if (frame) - { - frame->Iconize(FALSE); - frame->Show(TRUE); - } - } - else - { - // Try for a setting - strcpy(Tex2RTFLastStatus, RegisterSetting(firstArg, secondArg, FALSE)); -#ifndef NO_GUI - if (frame && strcmp(firstArg, "conversionMode") == 0) - { - char buf[100]; - strcpy(buf, "In "); - - if (winHelp && (convertMode == TEX_RTF)) - strcat(buf, "WinHelp RTF"); - else if (!winHelp && (convertMode == TEX_RTF)) - strcat(buf, "linear RTF"); - else if (convertMode == TEX_HTML) strcat(buf, "HTML"); - else if (convertMode == TEX_XLP) strcat(buf, "XLP"); - strcat(buf, " mode."); - frame->SetStatusText(buf, 1); - } -#endif - } - } - return TRUE; -} - -char *Tex2RTFConnection::OnRequest(const wxString& topic, const wxString& item, int *size, int format) -{ - return Tex2RTFLastStatus; -} - -#endif - diff --git a/utils/tex2rtf/src/tex2rtf.def b/utils/tex2rtf/src/tex2rtf.def deleted file mode 100644 index 6a6a2f1c76..0000000000 --- a/utils/tex2rtf/src/tex2rtf.def +++ /dev/null @@ -1,8 +0,0 @@ -NAME TEX2RTF -DESCRIPTION 'Tex2Rtf' -EXETYPE WINDOWS -STUB 'WINSTUB.EXE' -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE -HEAPSIZE 3000 -STACKSIZE 20000 diff --git a/utils/tex2rtf/src/tex2rtf.h b/utils/tex2rtf/src/tex2rtf.h deleted file mode 100644 index 70f2156b6d..0000000000 --- a/utils/tex2rtf/src/tex2rtf.h +++ /dev/null @@ -1,157 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: tex2any.h -// Purpose: tex2RTF conversion header -// Author: Julian Smart -// Modified by: -// Created: 7.9.93 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef NO_GUI -// Define a new application type -class MyApp: public wxApp -{ public: - bool OnInit(); - int OnExit(); -}; - -// Define a new frame type -class MyFrame: public wxFrame -{ public: - wxTextCtrl *textWindow; - MyFrame(wxFrame *frame, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size); - void OnMenuCommand(int id); - - void OnCloseWindow(wxCloseEvent& event); - void OnExit(wxCommandEvent& event); - void OnGo(wxCommandEvent& event); - void OnSetInput(wxCommandEvent& event); - void OnSetOutput(wxCommandEvent& event); - void OnSaveFile(wxCommandEvent& event); - void OnViewOutput(wxCommandEvent& event); - void OnViewLatex(wxCommandEvent& event); - void OnLoadMacros(wxCommandEvent& event); - void OnShowMacros(wxCommandEvent& event); - void OnModeRTF(wxCommandEvent& event); - void OnModeWinHelp(wxCommandEvent& event); - void OnModeHTML(wxCommandEvent& event); - void OnModeXLP(wxCommandEvent& event); - void OnHelp(wxCommandEvent& event); - void OnAbout(wxCommandEvent& event); - -DECLARE_EVENT_TABLE() -}; - -#ifdef __WXMSW__ -#include "wx/dde.h" - -class Tex2RTFConnection: public wxDDEConnection -{ - public: - Tex2RTFConnection(char *buf, int size); - ~Tex2RTFConnection(void); - bool OnExecute(const wxString& topic, char *data, int size, int format); - char *OnRequest(const wxString& topic, const wxString& item, int *size, int format); -}; - -class Tex2RTFServer: public wxDDEServer -{ - public: - wxConnectionBase *OnAcceptConnection(const wxString& topic); -}; - -#endif // __WXMSW__ - -#endif // NO_GUI - -/* - * Itemize/enumerate structure: put on a stack for - * getting the indentation right - * - */ - -#define LATEX_ENUMERATE 1 -#define LATEX_ITEMIZE 2 -#define LATEX_DESCRIPTION 3 -#define LATEX_TWOCOL 5 -#define LATEX_INDENT 6 - -class ItemizeStruc: public wxObject -{ - public: - int listType; - int currentItem; - int indentation; - int labelIndentation; - inline ItemizeStruc(int lType, int indent = 0, int labIndent = 0) - { listType = lType; currentItem = 0; - indentation = indent; labelIndentation = labIndent; } -}; - -// ID for the menu quit command -#define TEX_QUIT 1 -#define TEX_GO 2 - -#define TEX_SET_INPUT 3 -#define TEX_SET_OUTPUT 4 - -#define TEX_VIEW_LATEX 5 -#define TEX_VIEW_OUTPUT 6 - -#define TEX_VIEW_CUSTOM_MACROS 7 -#define TEX_LOAD_CUSTOM_MACROS 8 - -#define TEX_MODE_RTF 9 -#define TEX_MODE_WINHELP 10 -#define TEX_MODE_HTML 11 -#define TEX_MODE_XLP 12 - -#define TEX_HELP 13 -#define TEX_ABOUT 14 -#define TEX_SAVE_FILE 15 - -extern TexChunk *currentMember; -extern bool startedSections; -extern char *contentsString; -extern bool suppressNameDecoration; -extern wxList itemizeStack; - -extern FILE *Contents; -extern FILE *Chapters; -extern FILE *Sections; -extern FILE *Subsections; -extern FILE *Subsubsections; - -extern char *InputFile; -extern char *OutputFile; -extern char *MacroFile; - -extern char *FileRoot; -extern char *ContentsName; // Contents page from last time around -extern char *TmpContentsName; // Current contents page -extern char *TmpFrameContentsName; // Current frame contents page -extern char *WinHelpContentsFileName; // WinHelp .cnt file -extern char *RefName; // Reference file name -extern char *bulletFile; - -#ifndef NO_GUI -void ChooseOutputFile(bool force = FALSE); -void ChooseInputFile(bool force = FALSE); -#endif - -void RTFOnMacro(int macroId, int no_args, bool start); -bool RTFOnArgument(int macroId, int arg_no, bool start); - -void HTMLOnMacro(int macroId, int no_args, bool start); -bool HTMLOnArgument(int macroId, int arg_no, bool start); - -void XLPOnMacro(int macroId, int no_args, bool start); -bool XLPOnArgument(int macroId, int arg_no, bool start); - -bool RTFGo(void); -bool HTMLGo(void); -bool XLPGo(void); - -#define ltHARDY 10000 diff --git a/utils/tex2rtf/src/tex2rtf.ico b/utils/tex2rtf/src/tex2rtf.ico deleted file mode 100644 index b68125570f7fce26e28c7f5e0035d1183fa2bed0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmchUF;c}a3`F-c%%l_*bxMxGkY(v5FjUu64y zl3wv|?3Mk_zUi40Blox6C6?~@?l=i`90%TsR!glpV)L0Y?p9#Lc6r7jMav9j6c^cy zy= - -#if wxUSE_IOSTREAMH -#include -#include -#else -#include -#include -#endif - -#include -#include "tex2any.h" - -wxHashTable TexReferences(wxKEY_STRING); -wxList BibList(wxKEY_STRING); -wxStringList CitationList; -wxList ColourTable(wxKEY_STRING); -wxHashTable BibStringTable(wxKEY_STRING); -wxList CustomMacroList(wxKEY_STRING); -TexChunk *currentSection = NULL; -char *fakeCurrentSection = NULL; - -static long BibLine = 1; - -void OutputCurrentSection(void) -{ - if (fakeCurrentSection) - TexOutput(fakeCurrentSection); - else if (currentSection) - TraverseChildrenFromChunk(currentSection); -} - -// Nasty but the way things are done now, necessary, -// in order to output a chunk properly to a string (macros and all). -void OutputCurrentSectionToString(char *buf) -{ - if (fakeCurrentSection) - strcpy(buf, fakeCurrentSection); - else - OutputChunkToString(currentSection, buf); -} - -void OutputChunkToString(TexChunk *chunk, char *buf) -{ - FILE *tempfd = fopen("tmp.tmp", "w"); - if (!tempfd) - return; - - FILE *old1 = CurrentOutput1; - FILE *old2 = CurrentOutput2; - - CurrentOutput1 = tempfd; - CurrentOutput2 = NULL; - - TraverseChildrenFromChunk(chunk); - - CurrentOutput1 = old1; - CurrentOutput2 = old2; - - fclose(tempfd); - - // Read from file into string - tempfd = fopen("tmp.tmp", "r"); - if (!tempfd) - return; - - buf[0] = 0; - int ch = -2; - int i = 0; - while (ch != EOF) - { - ch = getc(tempfd); - if (ch == EOF) - buf[i] = 0; - else - { - buf[i] = ch; - i ++; - } - } - fclose(tempfd); - wxRemoveFile("tmp.tmp"); -} - -// Called by Tex2Any to simulate a section -void FakeCurrentSection(char *fakeSection, bool addToContents) -{ - currentSection = NULL; - if (fakeCurrentSection) delete[] fakeCurrentSection; - fakeCurrentSection = copystring(fakeSection); - - if (DocumentStyle == LATEX_ARTICLE) - { - int mac = ltSECTIONHEADING; - if (!addToContents) - mac = ltSECTIONHEADINGSTAR; - OnMacro(mac, 0, TRUE); - OnMacro(mac, 0, FALSE); - } - else - { - int mac = ltCHAPTERHEADING; - if (!addToContents) - mac = ltCHAPTERHEADINGSTAR; - OnMacro(mac, 0, TRUE); - OnMacro(mac, 0, FALSE); - } - if (fakeCurrentSection) delete[] fakeCurrentSection; - fakeCurrentSection = NULL; -} - -// Look for \label macro, use this ref name if found or -// make up a topic name otherwise. -static long topicCounter = 0; - -void ResetTopicCounter(void) -{ - topicCounter = 0; -} - -static char *forceTopicName = NULL; - -void ForceTopicName(char *name) -{ - if (forceTopicName) - delete[] forceTopicName; - if (name) - forceTopicName = copystring(name); - else - forceTopicName = NULL; -} - -char *FindTopicName(TexChunk *chunk) -{ - if (forceTopicName) - return forceTopicName; - - char *topicName = NULL; - static char topicBuf[100]; - - if (chunk && (chunk->type == CHUNK_TYPE_MACRO) && - (chunk->macroId == ltLABEL)) - { - wxNode *node = chunk->children.First(); - if (node) - { - TexChunk *child = (TexChunk *)node->Data(); - if (child->type == CHUNK_TYPE_ARG) - { - wxNode *snode = child->children.First(); - if (snode) - { - TexChunk *schunk = (TexChunk *)snode->Data(); - if (schunk->type == CHUNK_TYPE_STRING) - topicName = schunk->value; - } - } - } - } - if (topicName) - return topicName; - else - { - sprintf(topicBuf, "topic%ld", topicCounter); - topicCounter ++; - return topicBuf; - } -} - -/* - * Simulate argument data, so we can 'drive' clients which implement - * certain basic formatting behaviour. - * Snag is that some save a TexChunk, so don't use yet... - * - */ - -void StartSimulateArgument(char *data) -{ - strcpy(currentArgData, data); - haveArgData = TRUE; -} - -void EndSimulateArgument(void) -{ - haveArgData = FALSE; -} - -/* - * Parse and convert unit arguments to points - * - */ - -int ParseUnitArgument(char *unitArg) -{ - float conversionFactor = 1.0; - float unitValue = 0.0; - int len = strlen(unitArg); - // Get rid of any accidentally embedded commands - for (int i = 0; i < len; i++) - if (unitArg[i] == '\\') - unitArg[i] = 0; - len = strlen(unitArg); - - if (unitArg && (len > 0) && (isdigit(unitArg[0]) || unitArg[0] == '-')) - { - sscanf(unitArg, "%f", &unitValue); - if (len > 1) - { - char units[3]; - units[0] = unitArg[len-2]; - units[1] = unitArg[len-1]; - units[2] = 0; - if (strcmp(units, "in") == 0) - conversionFactor = 72.0; - else if (strcmp(units, "cm") == 0) - conversionFactor = 72.0/2.51; - else if (strcmp(units, "mm") == 0) - conversionFactor = 72.0/25.1; - else if (strcmp(units, "pt") == 0) - conversionFactor = 1; - } - return (int)(unitValue*conversionFactor); - } - else return 0; -} - -/* - * Strip off any extension (dot something) from end of file, - * IF one exists. Inserts zero into buffer. - * - */ - -void StripExtension(char *buffer) -{ - int len = strlen(buffer); - int i = len-1; - while (i > 0) - { - if (buffer[i] == '.') - { - buffer[i] = 0; - break; - } - i --; - } -} - -/* - * Latex font setting - * - */ - -void SetFontSizes(int pointSize) -{ - switch (pointSize) - { - case 12: - { - normalFont = 12; - smallFont = 10; - tinyFont = 8; - largeFont1 = 14; - LargeFont2 = 16; - LARGEFont3 = 20; - hugeFont1 = 24; - HugeFont2 = 28; - HUGEFont3 = 32; - break; - } - case 11: - { - normalFont = 11; - smallFont = 9; - tinyFont = 7; - largeFont1 = 13; - LargeFont2 = 16; - LARGEFont3 = 19; - hugeFont1 = 22; - HugeFont2 = 26; - HUGEFont3 = 30; - break; - } - case 10: - { - normalFont = 10; - smallFont = 8; - tinyFont = 6; - largeFont1 = 12; - LargeFont2 = 14; - LARGEFont3 = 18; - hugeFont1 = 20; - HugeFont2 = 24; - HUGEFont3 = 28; - break; - } - } -} - - -/* - * Latex references - * - */ - -void AddTexRef(char *name, char *file, char *sectionName, - int chapter, int section, int subsection, int subsubsection) -{ - TexRef *texRef = (TexRef *)TexReferences.Get(name); - if (texRef) TexReferences.Delete(name); - - char buf[100]; - buf[0] = 0; -/* - if (sectionName) - { - strcat(buf, sectionName); - strcat(buf, " "); - } -*/ - if (chapter) - { - char buf2[10]; - sprintf(buf2, "%d", chapter); - strcat(buf, buf2); - } - if (section) - { - char buf2[10]; - if (chapter) - strcat(buf, "."); - - sprintf(buf2, "%d", section); - strcat(buf, buf2); - } - if (subsection) - { - char buf2[10]; - strcat(buf, "."); - sprintf(buf2, "%d", subsection); - strcat(buf, buf2); - } - if (subsubsection) - { - char buf2[10]; - strcat(buf, "."); - sprintf(buf2, "%d", subsubsection); - strcat(buf, buf2); - } - char *tmp = ((strlen(buf) > 0) ? buf : (char *)NULL); - TexReferences.Put(name, new TexRef(name, file, tmp, sectionName)); -} - -void WriteTexReferences(char *filename) -{ - ofstream ostr(filename); - if (ostr.bad()) return; - char buf[200]; - - TexReferences.BeginFind(); - wxNode *node = TexReferences.Next(); - while (node) - { - Tex2RTFYield(); - TexRef *ref = (TexRef *)node->Data(); - ostr << ref->refLabel << " " << (ref->refFile ? ref->refFile : "??") << " "; - ostr << (ref->sectionName ? ref->sectionName : "??") << " "; - ostr << (ref->sectionNumber ? ref->sectionNumber : "??") << "\n"; - if (!ref->sectionNumber || (strcmp(ref->sectionNumber, "??") == 0 && strcmp(ref->sectionName, "??") == 0)) - { - sprintf(buf, "Warning: reference %s not resolved.", ref->refLabel); - OnInform(buf); - } - node = TexReferences.Next(); - } -} - -void ReadTexReferences(char *filename) -{ -#if !wxUSE_IOSTREAMH && __WXMSW__ - ifstream istr(filename, ios::in); -#else - ifstream istr(filename, ios::nocreate | ios::in); -#endif - if (istr.bad()) return; - - char label[100]; - char file[400]; - char section[100]; - char sectionName[100]; - - while (!istr.eof()) - { - istr >> label; - if (!istr.eof()) - { - istr >> file; - istr >> sectionName; - char ch; - istr.get(ch); // Read past space - istr.get(ch); - int i = 0; - while (ch != '\n' && !istr.eof()) - { - section[i] = ch; - i ++; - istr.get(ch); - } - section[i] = 0; - TexReferences.Put(label, new TexRef(label, file, section, sectionName)); - } - } -} - - -/* - * Bibliography-handling code - * - */ - -void BibEatWhiteSpace(istream& str) -{ - char ch = str.peek(); - - while (!str.eof() && (ch == ' ' || ch == '\t' || ch == 13 || ch == 10 || ch == EOF)) - { - if (ch == 10) - BibLine ++; - str.get(ch); - if ((ch == EOF) || str.eof()) return; - ch = str.peek(); - } - - // Ignore end-of-line comments - if (ch == '%' || ch == ';' || ch == '#') - { - str.get(ch); - ch = str.peek(); - while (ch != 10 && ch != 13 && !str.eof()) - { - str.get(ch); - ch = str.peek(); - } - BibEatWhiteSpace(str); - } -} - -// Read word up to { or , or space -void BibReadWord(istream& istr, char *buffer) -{ - int i = 0; - buffer[i] = 0; - char ch = istr.peek(); - while (!istr.eof() && ch != ' ' && ch != '{' && ch != '(' && ch != 13 && ch != 10 && ch != '\t' && - ch != ',' && ch != '=') - { - istr.get(ch); - buffer[i] = ch; - i ++; - ch = istr.peek(); - } - buffer[i] = 0; -} - -// Read string (double-quoted or not) to end quote or EOL -void BibReadToEOL(istream& istr, char *buffer) -{ - int i = 0; - buffer[i] = 0; - char ch = istr.peek(); - bool inQuotes = FALSE; - if (ch == '"') - { - istr.get(ch); - ch = istr.peek(); - inQuotes = TRUE; - } - // If in quotes, read white space too. If not, - // stop at white space or comment. - while (!istr.eof() && ch != 13 && ch != 10 && ch != '"' && - (inQuotes || ((ch != ' ') && (ch != 9) && - (ch != ';') && (ch != '%') && (ch != '#')))) - { - istr.get(ch); - buffer[i] = ch; - i ++; - ch = istr.peek(); - } - if (ch == '"') - istr.get(ch); - buffer[i] = 0; -} - -// Read }-terminated value, taking nested braces into account. -void BibReadValue(istream& istr, char *buffer, bool ignoreBraces = TRUE, - bool quotesMayTerminate = TRUE) -{ - int braceCount = 1; - int i = 0; - buffer[i] = 0; - char ch = istr.peek(); - bool stopping = FALSE; - while (!istr.eof() && !stopping) - { -// i ++; - if (i >= 2000) - { - char buf[100]; - sprintf(buf, "Sorry, value > 2000 chars in bib file at line %ld, terminating.", BibLine); - wxFatalError(buf, "Tex2RTF Fatal Error"); - } - istr.get(ch); - - if (ch == '{') - braceCount ++; - - if (ch == '}') - { - braceCount --; - if (braceCount == 0) - { - stopping = TRUE; - break; - } - } - else if (quotesMayTerminate && ch == '"') - { - stopping = TRUE; - break; - } - if (!stopping) - { - if (!ignoreBraces || (ch != '{' && ch != '}')) - { - buffer[i] = ch; - i ++; - } - } - if (ch == 10) - BibLine ++; - } - buffer[i] = 0; -} - -bool ReadBib(char *filename) -{ - char buf[300]; -#if !wxUSE_IOSTREAMH && __WXMSW__ - ifstream istr(filename, ios::in); -#else - ifstream istr(filename, ios::nocreate | ios::in); -#endif - if (istr.bad()) return FALSE; - - BibLine = 1; - - OnInform("Reading .bib file..."); - - char ch; - char fieldValue[2000]; - char recordType[100]; - char recordKey[100]; - char recordField[100]; - while (!istr.eof()) - { - Tex2RTFYield(); - - BibEatWhiteSpace(istr); - istr.get(ch); - if (ch != '@') - { - sprintf(buf, "Expected @: malformed bib file at line %ld (%s)", BibLine, filename); - OnError(buf); - return FALSE; - } - BibReadWord(istr, recordType); - BibEatWhiteSpace(istr); - istr.get(ch); - if (ch != '{' && ch != '(') - { - sprintf(buf, "Expected { or ( after record type: malformed .bib file at line %ld (%s)", BibLine, filename); - OnError(buf); - return FALSE; - } - BibEatWhiteSpace(istr); - if (StringMatch(recordType, "string", FALSE, TRUE)) - { - BibReadWord(istr, recordType); - BibEatWhiteSpace(istr); - istr.get(ch); - if (ch != '=') - { - sprintf(buf, "Expected = after string key: malformed .bib file at line %ld (%s)", BibLine, filename); - OnError(buf); - return FALSE; - } - BibEatWhiteSpace(istr); - istr.get(ch); - if (ch != '"' && ch != '{') - { - sprintf(buf, "Expected = after string key: malformed .bib file at line %ld (%s)", BibLine, filename); - OnError(buf); - return FALSE; - } - BibReadValue(istr, fieldValue); - - // Now put in hash table if necesary - if (!BibStringTable.Get(recordType)) - BibStringTable.Put(recordType, (wxObject *)copystring(fieldValue)); - - // Read closing ) or } - BibEatWhiteSpace(istr); - istr.get(ch); - BibEatWhiteSpace(istr); - } - else - { - BibReadWord(istr, recordKey); - - BibEntry *bibEntry = new BibEntry; - bibEntry->key = copystring(recordKey); - bibEntry->type = copystring(recordType); - - bool moreRecords = TRUE; - while (moreRecords && !istr.eof()) - { - BibEatWhiteSpace(istr); - istr.get(ch); - if (ch == '}' || ch == ')') - { - moreRecords = FALSE; - } - else if (ch == ',') - { - BibEatWhiteSpace(istr); - BibReadWord(istr, recordField); - BibEatWhiteSpace(istr); - istr.get(ch); - if (ch != '=') - { - sprintf(buf, "Expected = after field type: malformed .bib file at line %ld (%s)", BibLine, filename); - OnError(buf); - return FALSE; - } - BibEatWhiteSpace(istr); - istr.get(ch); - if (ch != '{' && ch != '"') - { - fieldValue[0] = ch; - BibReadWord(istr, fieldValue+1); - - // If in the table of strings, replace with string from table. - char *s = (char *)BibStringTable.Get(fieldValue); - if (s) - { - strcpy(fieldValue, s); - } - } - else - BibReadValue(istr, fieldValue, TRUE, (ch == '"' ? TRUE : FALSE)); - - // Now we can add a field - if (StringMatch(recordField, "author", FALSE, TRUE)) - bibEntry->author = copystring(fieldValue); - else if (StringMatch(recordField, "key", FALSE, TRUE)) - {} - else if (StringMatch(recordField, "annotate", FALSE, TRUE)) - {} - else if (StringMatch(recordField, "abstract", FALSE, TRUE)) - {} - else if (StringMatch(recordField, "edition", FALSE, TRUE)) - {} - else if (StringMatch(recordField, "howpublished", FALSE, TRUE)) - {} - else if (StringMatch(recordField, "note", FALSE, TRUE) || StringMatch(recordField, "notes", FALSE, TRUE)) - {} - else if (StringMatch(recordField, "series", FALSE, TRUE)) - {} - else if (StringMatch(recordField, "type", FALSE, TRUE)) - {} - else if (StringMatch(recordField, "keywords", FALSE, TRUE)) - {} - else if (StringMatch(recordField, "editor", FALSE, TRUE) || StringMatch(recordField, "editors", FALSE, TRUE)) - bibEntry->editor= copystring(fieldValue); - else if (StringMatch(recordField, "title", FALSE, TRUE)) - bibEntry->title= copystring(fieldValue); - else if (StringMatch(recordField, "booktitle", FALSE, TRUE)) - bibEntry->booktitle= copystring(fieldValue); - else if (StringMatch(recordField, "journal", FALSE, TRUE)) - bibEntry->journal= copystring(fieldValue); - else if (StringMatch(recordField, "volume", FALSE, TRUE)) - bibEntry->volume= copystring(fieldValue); - else if (StringMatch(recordField, "number", FALSE, TRUE)) - bibEntry->number= copystring(fieldValue); - else if (StringMatch(recordField, "year", FALSE, TRUE)) - bibEntry->year= copystring(fieldValue); - else if (StringMatch(recordField, "month", FALSE, TRUE)) - bibEntry->month= copystring(fieldValue); - else if (StringMatch(recordField, "pages", FALSE, TRUE)) - bibEntry->pages= copystring(fieldValue); - else if (StringMatch(recordField, "publisher", FALSE, TRUE)) - bibEntry->publisher= copystring(fieldValue); - else if (StringMatch(recordField, "address", FALSE, TRUE)) - bibEntry->address= copystring(fieldValue); - else if (StringMatch(recordField, "institution", FALSE, TRUE) || StringMatch(recordField, "school", FALSE, TRUE)) - bibEntry->institution= copystring(fieldValue); - else if (StringMatch(recordField, "organization", FALSE, TRUE) || StringMatch(recordField, "organisation", FALSE, TRUE)) - bibEntry->organization= copystring(fieldValue); - else if (StringMatch(recordField, "comment", FALSE, TRUE) || StringMatch(recordField, "comments", FALSE, TRUE)) - bibEntry->comment= copystring(fieldValue); - else if (StringMatch(recordField, "annote", FALSE, TRUE)) - bibEntry->comment= copystring(fieldValue); - else if (StringMatch(recordField, "chapter", FALSE, TRUE)) - bibEntry->chapter= copystring(fieldValue); - else - { - sprintf(buf, "Unrecognised bib field type %s at line %ld (%s)", recordField, BibLine, filename); - OnError(buf); - } - } - } - BibList.Append(recordKey, bibEntry); - BibEatWhiteSpace(istr); - } - } - return TRUE; -} - -void OutputBibItem(TexRef *ref, BibEntry *bib) -{ - Tex2RTFYield(); - - OnMacro(ltNUMBEREDBIBITEM, 2, TRUE); - OnArgument(ltNUMBEREDBIBITEM, 1, TRUE); - TexOutput(ref->sectionNumber); - OnArgument(ltNUMBEREDBIBITEM, 1, FALSE); - OnArgument(ltNUMBEREDBIBITEM, 2, TRUE); - - TexOutput(" "); - OnMacro(ltBF, 1, TRUE); - OnArgument(ltBF, 1, TRUE); - if (bib->author) - TexOutput(bib->author); - OnArgument(ltBF, 1, FALSE); - OnMacro(ltBF, 1, FALSE); - if (bib->author && (strlen(bib->author) > 0) && (bib->author[strlen(bib->author) - 1] != '.')) - TexOutput(". "); - else - TexOutput(" "); - - if (bib->year) - { - TexOutput(bib->year); - } - if (bib->month) - { - TexOutput(" ("); - TexOutput(bib->month); - TexOutput(")"); - } - if (bib->year || bib->month) - TexOutput(". "); - - if (StringMatch(bib->type, "article", FALSE, TRUE)) - { - if (bib->title) - { - TexOutput(bib->title); - TexOutput(". "); - } - if (bib->journal) - { - OnMacro(ltIT, 1, TRUE); - OnArgument(ltIT, 1, TRUE); - TexOutput(bib->journal); - OnArgument(ltIT, 1, FALSE); - OnMacro(ltIT, 1, FALSE); - } - if (bib->volume) - { - TexOutput(", "); - OnMacro(ltBF, 1, TRUE); - OnArgument(ltBF, 1, TRUE); - TexOutput(bib->volume); - OnArgument(ltBF, 1, FALSE); - OnMacro(ltBF, 1, FALSE); - } - if (bib->number) - { - TexOutput("("); - TexOutput(bib->number); - TexOutput(")"); - } - if (bib->pages) - { - TexOutput(", pages "); - TexOutput(bib->pages); - } - TexOutput("."); - } - else if (StringMatch(bib->type, "book", FALSE, TRUE) || - StringMatch(bib->type, "unpublished", FALSE, TRUE) || - StringMatch(bib->type, "manual", FALSE, TRUE) || - StringMatch(bib->type, "phdthesis", FALSE, TRUE) || - StringMatch(bib->type, "mastersthesis", FALSE, TRUE) || - StringMatch(bib->type, "misc", FALSE, TRUE) || - StringMatch(bib->type, "techreport", FALSE, TRUE) || - StringMatch(bib->type, "booklet", FALSE, TRUE)) - { - if (bib->title || bib->booktitle) - { - OnMacro(ltIT, 1, TRUE); - OnArgument(ltIT, 1, TRUE); - TexOutput(bib->title ? bib->title : bib->booktitle); - TexOutput(". "); - OnArgument(ltIT, 1, FALSE); - OnMacro(ltIT, 1, FALSE); - } - if (StringMatch(bib->type, "phdthesis", FALSE, TRUE)) - TexOutput("PhD thesis. "); - if (StringMatch(bib->type, "techreport", FALSE, TRUE)) - TexOutput("Technical report. "); - if (bib->editor) - { - TexOutput("Ed. "); - TexOutput(bib->editor); - TexOutput(". "); - } - if (bib->institution) - { - TexOutput(bib->institution); - TexOutput(". "); - } - if (bib->organization) - { - TexOutput(bib->organization); - TexOutput(". "); - } - if (bib->publisher) - { - TexOutput(bib->publisher); - TexOutput(". "); - } - if (bib->address) - { - TexOutput(bib->address); - TexOutput(". "); - } - } - else if (StringMatch(bib->type, "inbook", FALSE, TRUE) || - StringMatch(bib->type, "inproceedings", FALSE, TRUE) || - StringMatch(bib->type, "incollection", FALSE, TRUE) || - StringMatch(bib->type, "conference", FALSE, TRUE)) - { - if (bib->title) - { - TexOutput(bib->title); - } - if (bib->booktitle) - { - TexOutput(", from "); - OnMacro(ltIT, 1, TRUE); - OnArgument(ltIT, 1, TRUE); - TexOutput(bib->booktitle); - TexOutput("."); - OnArgument(ltIT, 1, FALSE); - OnMacro(ltIT, 1, FALSE); - } - if (bib->editor) - { - TexOutput(", ed. "); - TexOutput(bib->editor); - } - if (bib->publisher) - { - TexOutput(" "); - TexOutput(bib->publisher); - } - if (bib->address) - { - if (bib->publisher) TexOutput(", "); - else TexOutput(" "); - TexOutput(bib->address); - } - if (bib->publisher || bib->address) - TexOutput("."); - - if (bib->volume) - { - TexOutput(" "); - OnMacro(ltBF, 1, TRUE); - OnArgument(ltBF, 1, TRUE); - TexOutput(bib->volume); - OnArgument(ltBF, 1, FALSE); - OnMacro(ltBF, 1, FALSE); - } - if (bib->number) - { - if (bib->volume) - { - TexOutput("("); - TexOutput(bib->number); - TexOutput(")."); - } - else - { - TexOutput(" Number "); - TexOutput(bib->number); - TexOutput("."); - } - } - if (bib->chapter) - { - TexOutput(" Chap. "); TexOutput(bib->chapter); - } - if (bib->pages) - { - if (bib->chapter) TexOutput(", pages "); - else TexOutput(" Pages "); - TexOutput(bib->pages); - TexOutput("."); - } - } - OnArgument(ltNUMBEREDBIBITEM, 2, FALSE); - OnMacro(ltNUMBEREDBIBITEM, 2, FALSE); -} - -void OutputBib(void) -{ - // Write the heading - ForceTopicName("bibliography"); - FakeCurrentSection(ReferencesNameString); - ForceTopicName(NULL); - - OnMacro(ltPAR, 0, TRUE); - OnMacro(ltPAR, 0, FALSE); - - if ((convertMode == TEX_RTF) && !winHelp) - { - OnMacro(ltPAR, 0, TRUE); - OnMacro(ltPAR, 0, FALSE); - } - - wxNode *node = CitationList.First(); - while (node) - { - char *citeKey = (char *)node->Data(); -// wxNode *texNode = TexReferences.Find(citeKey); - TexRef *ref = (TexRef *)TexReferences.Get(citeKey); - wxNode *bibNode = BibList.Find(citeKey); - if (bibNode && ref) - { - BibEntry *entry = (BibEntry *)bibNode->Data(); - OutputBibItem(ref, entry); - } - node = node->Next(); - } -} - -static int citeCount = 1; - -void ResolveBibReferences(void) -{ - if (CitationList.Number() > 0) - OnInform("Resolving bibliographic references..."); - - citeCount = 1; - char buf[200]; - wxNode *node = CitationList.First(); - while (node) - { - Tex2RTFYield(); - char *citeKey = (char *)node->Data(); -// wxNode *texNode = TexReferences.Find(citeKey); - TexRef *ref = (TexRef *)TexReferences.Get(citeKey); - wxNode *bibNode = BibList.Find(citeKey); - if (bibNode && ref) - { - // Unused Variable - //BibEntry *entry = (BibEntry *)bibNode->Data(); - if (ref->sectionNumber) delete[] ref->sectionNumber; - sprintf(buf, "[%d]", citeCount); - ref->sectionNumber = copystring(buf); - citeCount ++; - } - else - { - sprintf(buf, "Warning: bib ref %s not resolved.", citeKey); - OnInform(buf); - } - node = node->Next(); - } -} - -// Remember we need to resolve this citation -void AddCitation(char *citeKey) -{ - if (!CitationList.Member(citeKey)) - CitationList.Add(citeKey); - - if (!TexReferences.Get(citeKey)) - { - TexReferences.Put(citeKey, new TexRef(citeKey, "??", NULL)); - } -} - -TexRef *FindReference(char *key) -{ - return (TexRef *)TexReferences.Get(key); -} - -/* - * Custom macro stuff - * - */ - -bool StringTobool(char *val) -{ - if (strncmp(val, "yes", 3) == 0 || strncmp(val, "YES", 3) == 0 || - strncmp(val, "on", 2) == 0 || strncmp(val, "ON", 2) == 0 || - strncmp(val, "true", 4) == 0 || strncmp(val, "TRUE", 4) == 0 || - strncmp(val, "ok", 2) == 0 || strncmp(val, "OK", 2) == 0 || - strncmp(val, "1", 1) == 0) - return TRUE; - else - return FALSE; -} - -// Define a variable value from the .ini file -char *RegisterSetting(char *settingName, char *settingValue, bool interactive) -{ - static char errorCode[100]; - strcpy(errorCode, "OK"); - if (StringMatch(settingName, "chapterName", FALSE, TRUE)) - { - delete[] ChapterNameString; - ChapterNameString = copystring(settingValue); - } - else if (StringMatch(settingName, "sectionName", FALSE, TRUE)) - { - delete[] SectionNameString; - SectionNameString = copystring(settingValue); - } - else if (StringMatch(settingName, "subsectionName", FALSE, TRUE)) - { - delete[] SubsectionNameString; - SubsectionNameString = copystring(settingValue); - } - else if (StringMatch(settingName, "subsubsectionName", FALSE, TRUE)) - { - delete[] SubsubsectionNameString; - SubsubsectionNameString = copystring(settingValue); - } - else if (StringMatch(settingName, "indexName", FALSE, TRUE)) - { - delete[] IndexNameString; - IndexNameString = copystring(settingValue); - } - else if (StringMatch(settingName, "contentsName", FALSE, TRUE)) - { - delete[] ContentsNameString; - ContentsNameString = copystring(settingValue); - } - else if (StringMatch(settingName, "glossaryName", FALSE, TRUE)) - { - delete[] GlossaryNameString; - GlossaryNameString = copystring(settingValue); - } - else if (StringMatch(settingName, "referencesName", FALSE, TRUE)) - { - delete[] ReferencesNameString; - ReferencesNameString = copystring(settingValue); - } - else if (StringMatch(settingName, "tablesName", FALSE, TRUE)) - { - delete[] TablesNameString; - TablesNameString = copystring(settingValue); - } - else if (StringMatch(settingName, "figuresName", FALSE, TRUE)) - { - delete[] FiguresNameString; - FiguresNameString = copystring(settingValue); - } - else if (StringMatch(settingName, "tableName", FALSE, TRUE)) - { - delete[] TableNameString; - TableNameString = copystring(settingValue); - } - else if (StringMatch(settingName, "figureName", FALSE, TRUE)) - { - delete[] FigureNameString; - FigureNameString = copystring(settingValue); - } - else if (StringMatch(settingName, "abstractName", FALSE, TRUE)) - { - delete[] AbstractNameString; - AbstractNameString = copystring(settingValue); - } - else if (StringMatch(settingName, "chapterFontSize", FALSE, TRUE)) - StringToInt(settingValue, &chapterFont); - else if (StringMatch(settingName, "sectionFontSize", FALSE, TRUE)) - StringToInt(settingValue, §ionFont); - else if (StringMatch(settingName, "subsectionFontSize", FALSE, TRUE)) - StringToInt(settingValue, &subsectionFont); - else if (StringMatch(settingName, "titleFontSize", FALSE, TRUE)) - StringToInt(settingValue, &titleFont); - else if (StringMatch(settingName, "authorFontSize", FALSE, TRUE)) - StringToInt(settingValue, &authorFont); - else if (StringMatch(settingName, "ignoreInput", FALSE, TRUE)) - IgnorableInputFiles.Add(FileNameFromPath(settingValue)); - else if (StringMatch(settingName, "mirrorMargins", FALSE, TRUE)) - mirrorMargins = StringTobool(settingValue); - else if (StringMatch(settingName, "runTwice", FALSE, TRUE)) - runTwice = StringTobool(settingValue); - else if (StringMatch(settingName, "isInteractive", FALSE, TRUE)) - isInteractive = StringTobool(settingValue); - else if (StringMatch(settingName, "headerRule", FALSE, TRUE)) - headerRule = StringTobool(settingValue); - else if (StringMatch(settingName, "footerRule", FALSE, TRUE)) - footerRule = StringTobool(settingValue); - else if (StringMatch(settingName, "combineSubSections", FALSE, TRUE)) - combineSubSections = StringTobool(settingValue); - else if (StringMatch(settingName, "listLabelIndent", FALSE, TRUE)) - StringToInt(settingValue, &labelIndentTab); - else if (StringMatch(settingName, "listItemIndent", FALSE, TRUE)) - StringToInt(settingValue, &itemIndentTab); - else if (StringMatch(settingName, "useUpButton", FALSE, TRUE)) - useUpButton = StringTobool(settingValue); - else if (StringMatch(settingName, "useHeadingStyles", FALSE, TRUE)) - useHeadingStyles = StringTobool(settingValue); - else if (StringMatch(settingName, "useWord", FALSE, TRUE)) - useWord = StringTobool(settingValue); - else if (StringMatch(settingName, "contentsDepth", FALSE, TRUE)) - StringToInt(settingValue, &contentsDepth); - else if (StringMatch(settingName, "generateHPJ", FALSE, TRUE)) - generateHPJ = StringTobool(settingValue); - else if (StringMatch(settingName, "truncateFilenames", FALSE, TRUE)) - truncateFilenames = StringTobool(settingValue); - else if (StringMatch(settingName, "winHelpVersion", FALSE, TRUE)) - StringToInt(settingValue, &winHelpVersion); - else if (StringMatch(settingName, "winHelpContents", FALSE, TRUE)) - winHelpContents = StringTobool(settingValue); - else if (StringMatch(settingName, "htmlIndex", FALSE, TRUE)) - htmlIndex = StringTobool(settingValue); - else if (StringMatch(settingName, "htmlFrameContents", FALSE, TRUE)) - htmlFrameContents = StringTobool(settingValue); - else if (StringMatch(settingName, "upperCaseNames", FALSE, TRUE)) - upperCaseNames = StringTobool(settingValue); - else if (StringMatch(settingName, "winHelpTitle", FALSE, TRUE)) - { - if (winHelpTitle) - delete[] winHelpTitle; - winHelpTitle = copystring(settingValue); - } - else if (StringMatch(settingName, "indexSubsections", FALSE, TRUE)) - indexSubsections = StringTobool(settingValue); - else if (StringMatch(settingName, "compatibility", FALSE, TRUE)) - compatibilityMode = StringTobool(settingValue); - else if (StringMatch(settingName, "defaultColumnWidth", FALSE, TRUE)) - { - StringToInt(settingValue, &defaultTableColumnWidth); - defaultTableColumnWidth = 20*defaultTableColumnWidth; - } - else if (StringMatch(settingName, "bitmapMethod", FALSE, TRUE)) - { - if ((strcmp(settingValue, "includepicture") != 0) && (strcmp(settingValue, "hex") != 0) && - (strcmp(settingValue, "import") != 0)) - { - if (interactive) - OnError("Unknown bitmapMethod"); - strcpy(errorCode, "Unknown bitmapMethod"); - } - else - { - delete[] bitmapMethod; - bitmapMethod = copystring(settingValue); - } - } - else if (StringMatch(settingName, "htmlBrowseButtons", FALSE, TRUE)) - { - if (strcmp(settingValue, "none") == 0) - htmlBrowseButtons = HTML_BUTTONS_NONE; - else if (strcmp(settingValue, "bitmap") == 0) - htmlBrowseButtons = HTML_BUTTONS_BITMAP; - else if (strcmp(settingValue, "text") == 0) - htmlBrowseButtons = HTML_BUTTONS_TEXT; - else - { - if (interactive) - OnInform("Initialisation file error: htmlBrowseButtons must be one of none, bitmap, or text."); - strcpy(errorCode, "Initialisation file error: htmlBrowseButtons must be one of none, bitmap, or text."); - } - } - else if (StringMatch(settingName, "backgroundImage", FALSE, TRUE)) - { - backgroundImageString = copystring(settingValue); - } - else if (StringMatch(settingName, "backgroundColour", FALSE, TRUE)) - { - delete[] backgroundColourString; - backgroundColourString = copystring(settingValue); - } - else if (StringMatch(settingName, "textColour", FALSE, TRUE)) - { - textColourString = copystring(settingValue); - } - else if (StringMatch(settingName, "linkColour", FALSE, TRUE)) - { - linkColourString = copystring(settingValue); - } - else if (StringMatch(settingName, "followedLinkColour", FALSE, TRUE)) - { - followedLinkColourString = copystring(settingValue); - } - else if (StringMatch(settingName, "conversionMode", FALSE, TRUE)) - { - if (StringMatch(settingValue, "RTF", FALSE, TRUE)) - { - winHelp = FALSE; convertMode = TEX_RTF; - } - else if (StringMatch(settingValue, "WinHelp", FALSE, TRUE)) - { - winHelp = TRUE; convertMode = TEX_RTF; - } - else if (StringMatch(settingValue, "XLP", FALSE, TRUE) || - StringMatch(settingValue, "wxHelp", FALSE, TRUE)) - { - convertMode = TEX_XLP; - } - else if (StringMatch(settingValue, "HTML", FALSE, TRUE)) - { - convertMode = TEX_HTML; - } - else - { - if (interactive) - OnInform("Initialisation file error: conversionMode must be one of\nRTF, WinHelp, XLP (or wxHelp), HTML."); - strcpy(errorCode, "Initialisation file error: conversionMode must be one of\nRTF, WinHelp, XLP (or wxHelp), HTML."); - } - } - else if (StringMatch(settingName, "documentFontSize", FALSE, TRUE)) - { - int n; - StringToInt(settingValue, &n); - if (n == 10 || n == 11 || n == 12) - SetFontSizes(n); - else - { - char buf[200]; - sprintf(buf, "Initialisation file error: nonstandard document font size %d.", n); - if (interactive) - OnInform(buf); - strcpy(errorCode, buf); - } - } - else - { - char buf[200]; - sprintf(buf, "Initialisation file error: unrecognised setting %s.", settingName); - if (interactive) - OnInform(buf); - strcpy(errorCode, buf); - } - return errorCode; -} - -bool ReadCustomMacros(char *filename) -{ -#if !wxUSE_IOSTREAMH && __WXMSW__ - ifstream istr(filename, ios::in); -#else - ifstream istr(filename, ios::nocreate | ios::in); -#endif - if (istr.bad()) return FALSE; - - CustomMacroList.Clear(); - char ch; - char macroName[100]; - char macroBody[1000]; - int noArgs; - - while (!istr.eof()) - { - BibEatWhiteSpace(istr); - istr.get(ch); - if (istr.eof()) - break; - - if (ch != '\\') // Not a macro definition, so must be NAME=VALUE - { - char settingName[100]; - settingName[0] = ch; - BibReadWord(istr, (settingName+1)); - BibEatWhiteSpace(istr); - istr.get(ch); - if (ch != '=') - { - OnError("Expected = following name: malformed tex2rtf.ini file."); - return FALSE; - } - else - { - char settingValue[200]; - BibEatWhiteSpace(istr); - BibReadToEOL(istr, settingValue); - RegisterSetting(settingName, settingValue); - } - } - else - { - BibReadWord(istr, macroName); - BibEatWhiteSpace(istr); - istr.get(ch); - if (ch != '[') - { - OnError("Expected [ followed by number of arguments: malformed tex2rtf.ini file."); - return FALSE; - } - istr >> noArgs; - istr.get(ch); - if (ch != ']') - { - OnError("Expected ] following number of arguments: malformed tex2rtf.ini file."); - return FALSE; - } - BibEatWhiteSpace(istr); - istr.get(ch); - if (ch != '{') - { - OnError("Expected { followed by macro body: malformed tex2rtf.ini file."); - return FALSE; - } - CustomMacro *macro = new CustomMacro(macroName, noArgs, NULL); - BibReadValue(istr, macroBody, FALSE, FALSE); // Don't ignore extra braces - if (strlen(macroBody) > 0) - macro->macroBody = copystring(macroBody); - - BibEatWhiteSpace(istr); - CustomMacroList.Append(macroName, macro); - AddMacroDef(ltCUSTOM_MACRO, macroName, noArgs); - } - } - char mbuf[200]; - sprintf(mbuf, "Read initialization file %s.", filename); - OnInform(mbuf); - return TRUE; -} - -CustomMacro *FindCustomMacro(char *name) -{ - wxNode *node = CustomMacroList.Find(name); - if (node) - { - CustomMacro *macro = (CustomMacro *)node->Data(); - return macro; - } - return NULL; -} - -// Display custom macros -void ShowCustomMacros(void) -{ - wxNode *node = CustomMacroList.First(); - if (!node) - { - OnInform("No custom macros loaded.\n"); - return; - } - - char buf[400]; - while (node) - { - CustomMacro *macro = (CustomMacro *)node->Data(); - sprintf(buf, "\\%s[%d]\n {%s}", macro->macroName, macro->noArgs, - macro->macroBody ? macro->macroBody : ""); - OnInform(buf); - node = node->Next(); - } -} - -// Parse a string into several comma-separated fields -char *ParseMultifieldString(char *allFields, int *pos) -{ - static char buffer[300]; - int i = 0; - int fieldIndex = *pos; - int len = strlen(allFields); - int oldPos = *pos; - bool keepGoing = TRUE; - while ((fieldIndex <= len) && keepGoing) - { - if (allFields[fieldIndex] == ' ') - { - // Skip - fieldIndex ++; - } - else if (allFields[fieldIndex] == ',') - { - *pos = fieldIndex + 1; - keepGoing = FALSE; - } - else if (allFields[fieldIndex] == 0) - { - *pos = fieldIndex + 1; - keepGoing = FALSE; - } - else - { - buffer[i] = allFields[fieldIndex]; - fieldIndex ++; - i++; - } - } - buffer[i] = 0; - if (oldPos == (*pos)) - *pos = len + 1; - - if (i == 0) - return NULL; - else - return buffer; -} - -/* - * Colour tables - * - */ - -ColourTableEntry::ColourTableEntry(char *theName, unsigned int r, unsigned int g, unsigned int b) -{ - name = copystring(theName); - red = r; - green = g; - blue = b; -} - -ColourTableEntry::~ColourTableEntry(void) -{ - delete[] name; -} - -void AddColour(char *theName, unsigned int r, unsigned int g, unsigned int b) -{ - wxNode *node = ColourTable.Find(theName); - if (node) - { - ColourTableEntry *entry = (ColourTableEntry *)node->Data(); - if (entry->red == r || entry->green == g || entry->blue == b) - return; - else - { - delete entry; - delete node; - } - } - ColourTableEntry *entry = new ColourTableEntry(theName, r, g, b); - ColourTable.Append(theName, entry); -} - -int FindColourPosition(char *theName) -{ - int i = 0; - wxNode *node = ColourTable.First(); - while (node) - { - ColourTableEntry *entry = (ColourTableEntry *)node->Data(); - if (strcmp(theName, entry->name) == 0) - return i; - i ++; - node = node->Next(); - } - return -1; -} - -// Converts e.g. "red" -> "#FF0000" -extern void DecToHex(int, char *); -bool FindColourHTMLString(char *theName, char *buf) -{ - int i = 0; - wxNode *node = ColourTable.First(); - while (node) - { - ColourTableEntry *entry = (ColourTableEntry *)node->Data(); - if (strcmp(theName, entry->name) == 0) - { - strcpy(buf, "#"); - - char buf2[3]; - DecToHex(entry->red, buf2); - strcat(buf, buf2); - DecToHex(entry->green, buf2); - strcat(buf, buf2); - DecToHex(entry->blue, buf2); - strcat(buf, buf2); - - return TRUE; - } - i ++; - node = node->Next(); - } - return FALSE; -} - - -void InitialiseColourTable(void) -{ - // \\red0\\green0\\blue0; - AddColour("black", 0,0,0); - - // \\red0\\green0\\blue255;\\red0\\green255\\blue255;\n"); - AddColour("cyan", 0,255,255); - - // \\red0\\green255\\blue0; - AddColour("green", 0,255,0); - - // \\red255\\green0\\blue255; - AddColour("magenta", 255,0,255); - - // \\red255\\green0\\blue0; - AddColour("red", 255,0,0); - - // \\red255\\green255\\blue0; - AddColour("yellow", 255,255,0); - - // \\red255\\green255\\blue255;}"); - AddColour("white", 255,255,255); -} - -/* - * The purpose of this is to reduce the number of times wxYield is - * called, since under Windows this can slow things down. - */ - -static int yieldCount = 0; - -void Tex2RTFYield(bool force) -{ -#ifdef __WXMSW__ - if (isSync) - return; - - if (force) - yieldCount = 0; - if (yieldCount == 0) - { - wxYield(); - yieldCount = 10; - } - yieldCount --; -#endif -} - -// In both RTF generation and HTML generation for wxHelp version 2, -// we need to associate \indexed keywords with the current filename/topics. - -// Hash table for lists of keywords for topics (WinHelp). -wxHashTable TopicTable(wxKEY_STRING); -void AddKeyWordForTopic(char *topic, char *entry, char *filename) -{ - TexTopic *texTopic = (TexTopic *)TopicTable.Get(topic); - if (!texTopic) - { - texTopic = new TexTopic(filename); - texTopic->keywords = new wxStringList; - TopicTable.Put(topic, texTopic); - } - - if (!texTopic->keywords->Member(entry)) - texTopic->keywords->Add(entry); -} - -void ClearKeyWordTable(void) -{ - TopicTable.BeginFind(); - wxNode *node = TopicTable.Next(); - while (node) - { - TexTopic *texTopic = (TexTopic *)node->Data(); - delete texTopic; - node = TopicTable.Next(); - } - TopicTable.Clear(); -} - - -/* - * TexTopic structure - */ - -TexTopic::TexTopic(char *f) -{ - if (f) - filename = copystring(f); - else - filename = NULL; - hasChildren = FALSE; - keywords = NULL; -} - -TexTopic::~TexTopic(void) -{ - if (keywords) - delete keywords; - if (filename) - delete[] filename; -} - -// Convert case, according to upperCaseNames setting. -char *ConvertCase(char *s) -{ - static char buf[256]; - int len = strlen(s); - int i; - if (upperCaseNames) - for (i = 0; i < len; i ++) - buf[i] = wxToUpper(s[i]); - else - for (i = 0; i < len; i ++) - buf[i] = wxToLower(s[i]); - buf[i] = 0; - return buf; -} diff --git a/utils/tex2rtf/src/wxhlpblk.h b/utils/tex2rtf/src/wxhlpblk.h deleted file mode 100644 index 6cfeb75e41..0000000000 --- a/utils/tex2rtf/src/wxhlpblk.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - * File: wxhlpblk.h - * Purpose: Text blocks used in wxHelp - * Author: Julian Smart - * Created: 1993 - * Updated: - * Copyright: (c) 1993, AIAI, University of Edinburgh - */ - -/* sccsid[] = "%W% %G%" */ - -#ifndef wxhlpblkh -#define wxhlpblkh - -#define hyBLOCK_NORMAL 1 -#define hyBLOCK_RED 2 -#define hyBLOCK_BLUE 3 -#define hyBLOCK_GREEN 4 -#define hyBLOCK_LARGE_HEADING 5 -#define hyBLOCK_SMALL_HEADING 6 -#define hyBLOCK_ITALIC 7 -#define hyBLOCK_BOLD 8 -#define hyBLOCK_INVISIBLE_SECTION 9 -#define hyBLOCK_LARGE_VISIBLE_SECTION 10 -#define hyBLOCK_SMALL_VISIBLE_SECTION 11 -#define hyBLOCK_SMALL_TEXT 12 -#define hyBLOCK_RED_ITALIC 13 -#define hyBLOCK_TELETYPE 14 - -#endif // wxhlpblkh diff --git a/utils/tex2rtf/src/xlputils.cpp b/utils/tex2rtf/src/xlputils.cpp deleted file mode 100644 index bcbc4a0fb7..0000000000 --- a/utils/tex2rtf/src/xlputils.cpp +++ /dev/null @@ -1,1219 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: xlputils.cpp -// Purpose: Converts Latex to obsolete XLP format -// Author: Julian Smart -// Modified by: -// Created: 7.9.93 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation -#endif - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include "tex2any.h" -#include "tex2rtf.h" -#include - -long currentBlockId = -1; -static TexChunk *descriptionItemArg = NULL; -static int indentLevel = 0; -static int noColumns = 0; -static int currentTab = 0; -static bool tableVerticalLineLeft = FALSE; -static bool tableVerticalLineRight = FALSE; -static bool inTable = FALSE; -static int citeCount = 1; -wxList hyperLinks(wxKEY_INTEGER); -wxList hyperLabels(wxKEY_STRING); -FILE *Index = NULL; - -void PadToTab(int tabPos) -{ - int currentCol = GetCurrentColumn(); - for (int i = currentCol; i < tabPos; i++) - TexOutput(" ", TRUE); -} - -static long xlpBlockId = 0; -long NewBlockId(void) -{ - return xlpBlockId ++; -} - -// Called on start/end of macro examination -void XLPOnMacro(int macroId, int no_args, bool start) -{ - char buf[100]; - switch (macroId) - { - case ltCHAPTER: - case ltCHAPTERSTAR: - case ltCHAPTERHEADING: - { - if (!start) - { - sectionNo = 0; - figureNo = 0; - subsectionNo = 0; - subsubsectionNo = 0; - if (macroId != ltCHAPTERSTAR) - chapterNo ++; - - SetCurrentOutputs(Contents, Chapters); - long id1 = NewBlockId(); - currentBlockId = NewBlockId(); - - startedSections = TRUE; - fprintf(Contents, "\\hy-%d{%ld}{", hyBLOCK_SMALL_HEADING, id1); - fprintf(Chapters, "\n\\hy-%d{%ld}{", hyBLOCK_LARGE_VISIBLE_SECTION, currentBlockId); - fprintf(Index, "%ld %ld\n", id1, currentBlockId); - - OutputCurrentSection(); // Repeat section header - - fprintf(Contents, "}\n\n"); - fprintf(Chapters, "}\n\n"); - SetCurrentOutput(Chapters); - char *topicName = FindTopicName(GetNextChunk()); - hyperLabels.Append(topicName, (wxObject *)currentBlockId); - } - break; - } - case ltSECTION: - case ltSECTIONSTAR: - case ltSECTIONHEADING: - case ltGLOSS: - { - if (!start) - { - subsectionNo = 0; - subsubsectionNo = 0; - - if (macroId != ltSECTIONSTAR) - sectionNo ++; - - SetCurrentOutputs(Chapters, Sections); - long id1 = NewBlockId(); - currentBlockId = NewBlockId(); - - startedSections = TRUE; - - if (DocumentStyle == LATEX_ARTICLE) - fprintf(Contents, "\\hy-%d{%ld}{", hyBLOCK_LARGE_HEADING, id1); - else - fprintf(Chapters, "\\hy-%d{%ld}{", hyBLOCK_BOLD, id1); - fprintf(Sections, "\n\\hy-%d{%ld}{", hyBLOCK_LARGE_VISIBLE_SECTION, currentBlockId); - fprintf(Index, "%ld %ld\n", id1, currentBlockId); - - OutputCurrentSection(); // Repeat section header - - if (DocumentStyle == LATEX_ARTICLE) - fprintf(Contents, "}\n\n"); - else - fprintf(Chapters, "}\n\n"); - fprintf(Sections, "}\n\n"); - SetCurrentOutput(Sections); - char *topicName = FindTopicName(GetNextChunk()); - hyperLabels.Append(topicName, (wxObject *)currentBlockId); - } - break; - } - case ltSUBSECTION: - case ltSUBSECTIONSTAR: - case ltMEMBERSECTION: - case ltFUNCTIONSECTION: - { - if (!start) - { - subsubsectionNo = 0; - - if (macroId != ltSUBSECTIONSTAR) - subsectionNo ++; - - SetCurrentOutputs(Sections, Subsections); - long id1 = NewBlockId(); - currentBlockId = NewBlockId(); - fprintf(Sections, "\\hy-%d{%ld}{", hyBLOCK_BOLD, id1); - fprintf(Subsections, "\n\\hy-%d{%ld}{", hyBLOCK_LARGE_VISIBLE_SECTION, currentBlockId); - fprintf(Index, "%ld %ld\n", id1, currentBlockId); - - OutputCurrentSection(); // Repeat section header - - fprintf(Sections, "}\n\n"); - fprintf(Subsections, "}\n\n"); - SetCurrentOutput(Subsections); - char *topicName = FindTopicName(GetNextChunk()); - hyperLabels.Append(topicName, (wxObject *)currentBlockId); - } - break; - } - case ltSUBSUBSECTION: - case ltSUBSUBSECTIONSTAR: - { - if (!start) - { - if (macroId != ltSUBSUBSECTIONSTAR) - subsubsectionNo ++; - - SetCurrentOutputs(Subsections, Subsubsections); - long id1 = NewBlockId(); - currentBlockId = NewBlockId(); - fprintf(Subsections, "\\hy-%d{%ld}{", hyBLOCK_BOLD, id1); - fprintf(Subsubsections, "\n\\hy-%d{%ld}{", hyBLOCK_LARGE_VISIBLE_SECTION, currentBlockId); - fprintf(Index, "%ld %ld\n", id1, currentBlockId); - - OutputCurrentSection(); // Repeat section header - - fprintf(Subsections, "}\n\n"); - fprintf(Subsubsections, "}\n\n"); - SetCurrentOutput(Subsubsections); - char *topicName = FindTopicName(GetNextChunk()); - hyperLabels.Append(topicName, (wxObject *)currentBlockId); - } - break; - } - case ltFUNC: - case ltPFUNC: - case ltMEMBER: - { - SetCurrentOutput(Subsections); - if (start) - { - long id = NewBlockId(); - fprintf(Subsections, "\\hy-%d{%ld}{", hyBLOCK_BOLD, id); - } - else - fprintf(Subsections, "}"); - break; - } - case ltVOID: -// if (start) -// TexOutput("void", TRUE); - break; - case ltBACKSLASHCHAR: - if (start) - TexOutput("\n", TRUE); - break; - case ltPAR: - { - if (start) - { - if (ParSkip > 0) - TexOutput("\n", TRUE); - TexOutput("\n", TRUE); - } - break; - } - case ltRMFAMILY: - case ltTEXTRM: - case ltRM: - { - break; - } - case ltTEXTBF: - case ltBFSERIES: - case ltBF: - { - if (start) - { - char buf[100]; - long id = NewBlockId(); - sprintf(buf, "\\hy-%d{%ld}{", hyBLOCK_BOLD, id); - TexOutput(buf); - } - else TexOutput("}"); - break; - } - case ltTEXTIT: - case ltITSHAPE: - case ltIT: - { - if (start) - { - char buf[100]; - long id = NewBlockId(); - sprintf(buf, "\\hy-%d{%ld}{", hyBLOCK_ITALIC, id); - TexOutput(buf); - } - else TexOutput("}"); - break; - } - case ltTTFAMILY: - case ltTEXTTT: - case ltTT: - { - if (start) - { - long id = NewBlockId(); - sprintf(buf, "\\hy-%d{%ld}{", hyBLOCK_TELETYPE, id); - TexOutput(buf); - } - else TexOutput("}"); - break; - } - case ltSMALL: - { - if (start) - { - sprintf(buf, "\\hy-%d{%ld}{", hyBLOCK_SMALL_TEXT, NewBlockId()); - TexOutput(buf); - } - else TexOutput("}"); - break; - } - case ltTINY: - { - if (start) - { - sprintf(buf, "\\hy-%d{%ld}{", hyBLOCK_SMALL_TEXT, NewBlockId()); - TexOutput(buf); - } - else TexOutput("}"); - break; - } - case ltNORMALSIZE: - { - if (start) - { - sprintf(buf, "\\hy-%d{%ld}{", hyBLOCK_NORMAL, NewBlockId()); - TexOutput(buf); - } - else TexOutput("}"); - break; - } - case ltlarge: - { - if (start) - { - sprintf(buf, "\\hy-%d{%ld}{", hyBLOCK_SMALL_HEADING, NewBlockId()); - TexOutput(buf); - } - else TexOutput("}\n"); - break; - } - case ltLARGE: - { - if (start) - { - sprintf(buf, "\\hy-%d{%ld}{", hyBLOCK_LARGE_HEADING, NewBlockId()); - TexOutput(buf); - } - else TexOutput("}\n"); - break; - } - case ltITEMIZE: - case ltENUMERATE: - case ltDESCRIPTION: - case ltTWOCOLLIST: - { - if (start) - { -// tabCount ++; - -// if (indentLevel > 0) -// TexOutput("\\par\\par\n"); - indentLevel ++; - int listType; - if (macroId == ltENUMERATE) - listType = LATEX_ENUMERATE; - else if (macroId == ltITEMIZE) - listType = LATEX_ITEMIZE; - else - listType = LATEX_DESCRIPTION; - itemizeStack.Insert(new ItemizeStruc(listType)); - - } - else - { - indentLevel --; - - if (itemizeStack.First()) - { - ItemizeStruc *struc = (ItemizeStruc *)itemizeStack.First()->Data(); - delete struc; - delete itemizeStack.First(); - } - } - break; - } - case ltITEM: - { - wxNode *node = itemizeStack.First(); - if (node) - { - ItemizeStruc *struc = (ItemizeStruc *)node->Data(); - if (!start) - { - struc->currentItem += 1; - char indentBuf[30]; - - switch (struc->listType) - { - case LATEX_ENUMERATE: - { - sprintf(indentBuf, "\\hy-%d{%ld}{%d.} ", - hyBLOCK_BOLD, NewBlockId(), struc->currentItem); - TexOutput(indentBuf); - break; - } - case LATEX_ITEMIZE: - { - sprintf(indentBuf, "\\hy-%d{%ld}{o} ", - hyBLOCK_BOLD, NewBlockId()); - TexOutput(indentBuf); - break; - } - default: - case LATEX_DESCRIPTION: - { - if (descriptionItemArg) - { - sprintf(indentBuf, "\\hy-%d{%ld}{", - hyBLOCK_BOLD, NewBlockId()); - TexOutput(indentBuf); - TraverseChildrenFromChunk(descriptionItemArg); - TexOutput("} "); - descriptionItemArg = NULL; - } - break; - } - } - } - } - break; - } - case ltMAKETITLE: - { - if (start && DocumentTitle && DocumentAuthor) - { - sprintf(buf, "\\hy-%d{%ld}{", hyBLOCK_LARGE_HEADING, NewBlockId()); - TexOutput(buf); - TraverseChildrenFromChunk(DocumentTitle); - TexOutput("}\n\n"); - sprintf(buf, "\\hy-%d{%ld}{", hyBLOCK_SMALL_HEADING, NewBlockId()); - TexOutput(buf); - TraverseChildrenFromChunk(DocumentAuthor); - TexOutput("}\n\n"); - if (DocumentDate) - { - TraverseChildrenFromChunk(DocumentDate); - TexOutput("\n"); - } - } - break; - } - case ltTABLEOFCONTENTS: - { - if (start) - { - FILE *fd = fopen(ContentsName, "r"); - if (fd) - { - int ch = getc(fd); - while (ch != EOF) - { - putc(ch, Chapters); - ch = getc(fd); - } - fclose(fd); - } - else - { - TexOutput("RUN TEX2RTF AGAIN FOR CONTENTS PAGE\n"); - OnInform("Run Tex2RTF again to include contents page."); - } - } - break; - } - case ltHARDY: - { - if (start) - TexOutput("HARDY", TRUE); - break; - } - case ltWXCLIPS: - { - if (start) - TexOutput("wxCLIPS", TRUE); - break; - } - case ltVERBATIM: - { - if (start) - { - char buf[100]; - long id = NewBlockId(); - sprintf(buf, "\\hy-%d{%ld}{", hyBLOCK_TELETYPE, id); - TexOutput(buf); - } - else TexOutput("}"); - break; - } - case ltHRULE: - { - if (start) - { - TexOutput("\n------------------------------------------------------------------", TRUE); - } - break; - } - case ltHLINE: - { - if (start) - { - TexOutput("--------------------------------------------------------------------------------", TRUE); - } - break; - } - case ltSPECIALAMPERSAND: - { - if (start) - { - currentTab ++; - int tabPos = (80/noColumns)*currentTab; - PadToTab(tabPos); - } - break; - } - case ltTABULAR: - case ltSUPERTABULAR: - { - if (start) - { - sprintf(buf, "\\hy-%d{%ld}{", hyBLOCK_TELETYPE, NewBlockId()); - TexOutput(buf); - } - else - TexOutput("}"); - break; - } - case ltNUMBEREDBIBITEM: - { - if (!start) - TexOutput("\n\n", TRUE); - break; - } - case ltCAPTION: - case ltCAPTIONSTAR: - { - if (start) - { - figureNo ++; - - char figBuf[40]; - if (DocumentStyle != LATEX_ARTICLE) - sprintf(figBuf, "Figure %d.%d: ", chapterNo, figureNo); - else - sprintf(figBuf, "Figure %d: ", figureNo); - - TexOutput(figBuf); - } - else - { - char *topicName = FindTopicName(GetNextChunk()); - - AddTexRef(topicName, NULL, NULL, - ((DocumentStyle != LATEX_ARTICLE) ? chapterNo : figureNo), - ((DocumentStyle != LATEX_ARTICLE) ? figureNo : 0)); - } - break; - } - default: - { - DefaultOnMacro(macroId, no_args, start); - break; - } - } -} - -bool XLPOnArgument(int macroId, int arg_no, bool start) -{ - char buf[300]; - switch (macroId) - { - case ltCHAPTER: - case ltCHAPTERSTAR: - case ltCHAPTERHEADING: - case ltSECTION: - case ltSECTIONSTAR: - case ltSECTIONHEADING: - case ltSUBSECTION: - case ltSUBSECTIONSTAR: - case ltSUBSUBSECTION: - case ltSUBSUBSECTIONSTAR: - case ltGLOSS: - case ltMEMBERSECTION: - case ltFUNCTIONSECTION: - { - if (!start && (arg_no == 1)) - currentSection = GetArgChunk(); - return FALSE; - break; - } - case ltFUNC: - { - if (!start && (arg_no == 1)) - TexOutput(" ", TRUE); - if (start && (arg_no == 3)) - TexOutput("(", TRUE); - if (!start && (arg_no == 3)) - TexOutput(")", TRUE); - break; - } - case ltPFUNC: - { - if (!start && (arg_no == 1)) - TexOutput(" ", TRUE); - - if (start && (arg_no == 2)) - TexOutput("(*", TRUE); - if (!start && (arg_no == 2)) - TexOutput(")", TRUE); - - if (start && (arg_no == 3)) - TexOutput("(", TRUE); - if (!start && (arg_no == 3)) - TexOutput(")", TRUE); - break; - } - case ltCLIPSFUNC: - { - if (!start && (arg_no == 1)) - TexOutput(" ", TRUE); - if (start && (arg_no == 2)) - { - TexOutput("(", TRUE); - long id = NewBlockId(); - sprintf(buf, "\\hy-%d{%ld}{", hyBLOCK_BOLD, id); - TexOutput(buf); - } - if (!start && (arg_no == 2)) - { - TexOutput("}"); - } - if (!start && (arg_no == 3)) - TexOutput(")", TRUE); - break; - } - case ltPARAM: - { - if (start && (arg_no == 2)) - { - long id = NewBlockId(); - sprintf(buf, " \\hy-%d{%ld}{", hyBLOCK_BOLD, id); - TexOutput(buf); - } - if (!start && (arg_no == 2)) - { - TexOutput("}"); - } - break; - } - case ltCPARAM: - { - if (start && (arg_no == 2)) - { - long id = NewBlockId(); - sprintf(buf, " \\hy-%d{%ld}{", hyBLOCK_BOLD, id); - TexOutput(buf); - } - if (!start && (arg_no == 2)) - { - TexOutput("}"); - } - break; - } - case ltMEMBER: - { - if (!start && (arg_no == 1)) - TexOutput(" ", TRUE); - break; - } - case ltLABEL: - { - return FALSE; - break; - } - case ltREF: - { - if (start) - { - char *sec = NULL; - - char *refName = GetArgData(); - if (refName) - { - TexRef *texRef = FindReference(refName); - if (texRef) - { - sec = texRef->sectionNumber; - } - } - if (sec) - { - TexOutput(sec); - } - return FALSE; - } - break; - } - case ltHELPREF: - case ltHELPREFN: - case ltPOPREF: - { - if (arg_no == 1) - { - if (start) - { - currentBlockId = NewBlockId(); - sprintf(buf, "\\hy-%d{%ld}{", hyBLOCK_RED_ITALIC, currentBlockId); - TexOutput(buf); - } - else TexOutput("}"); - } - if (arg_no == 2) - { - if (start) - { - char *label = GetArgData(); - hyperLinks.Append(currentBlockId, (wxObject *)copystring(label)); - } - - return FALSE; - } - break; - } - case ltURLREF: - { - if (arg_no == 1) - { - return TRUE; - } - else if (arg_no == 2) - { - if (start) - TexOutput(" ("); - else - TexOutput(")"); - return TRUE; - } - break; - } - case ltITEM: - { - if (start && IsArgOptional()) - { - descriptionItemArg = GetArgChunk(); - return FALSE; - } - break; - } - case ltTABULAR: - case ltSUPERTABULAR: - { - if (arg_no == 1) - { - if (start) - { - inTable = TRUE; - tableVerticalLineLeft = FALSE; - tableVerticalLineRight = FALSE; - - char *alignString = copystring(GetArgData()); - - // Count the number of columns - noColumns = 0; - int len = strlen(alignString); - if (len > 0) - { - if (alignString[0] == '|') - tableVerticalLineLeft = TRUE; - if (alignString[len-1] == '|') - tableVerticalLineRight = TRUE; - } - - for (int i = 0; i < len; i++) - if (isalpha(alignString[i])) - noColumns ++; - -/* - // Experimental - TexOutput("\\brdrt\\brdrs"); - if (tableVerticalLineLeft) - TexOutput("\\brdrl\\brdrs"); - if (tableVerticalLineRight) - TexOutput("\\brdrr\\brdrs"); -*/ - - // Calculate a rough size for each column -// int tabPos = 80/noColumns; - currentTab = 0; - - return FALSE; - } - } - else if (arg_no == 2 && !start) - { - inTable = FALSE; - } - else if (arg_no == 2 && start) - return TRUE; - break; - } - case ltMARGINPAR: - case ltMARGINPAREVEN: - case ltMARGINPARODD: - case ltNORMALBOX: - case ltNORMALBOXD: - { - if (start) - { - TexOutput("----------------------------------------------------------------------\n", TRUE); - return TRUE; - } - else - TexOutput("\n----------------------------------------------------------------------\n", TRUE); - break; - } - case ltBIBITEM: - { - char buf[100]; - if (arg_no == 1 && start) - { - char *citeKey = GetArgData(); - TexRef *ref = (TexRef *)TexReferences.Get(citeKey); - if (ref) - { - if (ref->sectionNumber) delete[] ref->sectionNumber; - sprintf(buf, "[%d]", citeCount); - ref->sectionNumber = copystring(buf); - } - - sprintf(buf, "\\hy-%d{%ld}{[%d]} ", hyBLOCK_BOLD, NewBlockId(), citeCount); - TexOutput(buf); - citeCount ++; - return FALSE; - } - return TRUE; - break; - } - case ltTHEBIBLIOGRAPHY: - { - if (start && (arg_no == 1)) - { - citeCount = 1; - - SetCurrentOutput(Chapters); - - SetCurrentOutputs(Contents, Chapters); - long id1 = NewBlockId(); - long id2 = NewBlockId(); - fprintf(Contents, "\\hy-%d{%ld}{%s}\n", hyBLOCK_SMALL_HEADING, id1, ReferencesNameString); - fprintf(Chapters, "\\hy-%d{%ld}{%s}\n\n\n", hyBLOCK_LARGE_VISIBLE_SECTION, id2, ReferencesNameString); - fprintf(Index, "%ld %ld\n", id1, id2); - - SetCurrentOutput(Chapters); - return FALSE; - } - if (!start && (arg_no == 2)) - { - } - return TRUE; - break; - } - case ltTWOCOLITEM: - case ltTWOCOLITEMRULED: - { - if (start && (arg_no == 2)) - TexOutput("\n "); - - if (!start && (arg_no == 2)) - TexOutput("\n"); - return TRUE; - } - /* - * Accents - * - */ - case ltACCENT_GRAVE: - { - if (start) - { - char *val = GetArgData(); - if (val) - { - switch (val[0]) - { - case 'a': - TexOutput("a"); - break; - case 'e': - TexOutput("e"); - break; - case 'i': - TexOutput("i"); - break; - case 'o': - TexOutput("o"); - break; - case 'u': - TexOutput("u"); - break; - case 'A': - TexOutput("a"); - break; - case 'E': - TexOutput("E"); - break; - case 'I': - TexOutput("I"); - break; - case 'O': - TexOutput("O"); - break; - case 'U': - TexOutput("U"); - break; - default: - break; - } - } - } - return FALSE; - break; - } - case ltACCENT_ACUTE: - { - if (start) - { - char *val = GetArgData(); - if (val) - { - switch (val[0]) - { - case 'a': - TexOutput("a"); - break; - case 'e': - TexOutput("e"); - break; - case 'i': - TexOutput("i"); - break; - case 'o': - TexOutput("o"); - break; - case 'u': - TexOutput("u"); - break; - case 'y': - TexOutput("y"); - break; - case 'A': - TexOutput("A"); - break; - case 'E': - TexOutput("E"); - break; - case 'I': - TexOutput("I"); - break; - case 'O': - TexOutput("O"); - break; - case 'U': - TexOutput("U"); - break; - case 'Y': - TexOutput("Y"); - break; - default: - break; - } - } - } - return FALSE; - break; - } - case ltACCENT_CARET: - { - if (start) - { - char *val = GetArgData(); - if (val) - { - switch (val[0]) - { - case 'a': - TexOutput("a"); - break; - case 'e': - TexOutput("e"); - break; - case 'i': - TexOutput("i"); - break; - case 'o': - TexOutput("o"); - break; - case 'u': - TexOutput("u"); - break; - case 'A': - TexOutput("A"); - break; - case 'E': - TexOutput("E"); - break; - case 'I': - TexOutput("I"); - break; - case 'O': - TexOutput("O"); - break; - case 'U': - TexOutput("U"); - break; - default: - break; - } - } - } - return FALSE; - break; - } - case ltACCENT_TILDE: - { - if (start) - { - char *val = GetArgData(); - if (val) - { - switch (val[0]) - { - case 'a': - TexOutput("a"); - break; - case ' ': - TexOutput("~"); - break; - case 'n': - TexOutput("n"); - break; - case 'o': - TexOutput("o"); - break; - case 'A': - TexOutput("A"); - break; - case 'N': - TexOutput("N"); - break; - case 'O': - TexOutput("O"); - break; - default: - break; - } - } - } - return FALSE; - break; - } - case ltACCENT_UMLAUT: - { - if (start) - { - char *val = GetArgData(); - if (val) - { - switch (val[0]) - { - case 'a': - TexOutput("a"); - break; - case 'e': - TexOutput("e"); - break; - case 'i': - TexOutput("i"); - break; - case 'o': - TexOutput("o"); - break; - case 'u': - TexOutput("u"); - break; - case 'y': - TexOutput("y"); - break; - case 'A': - TexOutput("A"); - break; - case 'E': - TexOutput("E"); - break; - case 'I': - TexOutput("I"); - break; - case 'O': - TexOutput("O"); - break; - case 'U': - TexOutput("U"); - break; - case 'Y': - TexOutput("Y"); - break; - default: - break; - } - } - } - return FALSE; - break; - } - case ltACCENT_DOT: - { - if (start) - { - char *val = GetArgData(); - if (val) - { - switch (val[0]) - { - case 'a': - TexOutput("a"); - break; - case 'A': - TexOutput("A"); - break; - default: - break; - } - } - } - return FALSE; - break; - } - case ltACCENT_CADILLA: - { - if (start) - { - char *val = GetArgData(); - if (val) - { - switch (val[0]) - { - case 'c': - TexOutput("c"); - break; - case 'C': - TexOutput("C"); - break; - default: - break; - } - } - } - return FALSE; - break; - } - default: - { - return DefaultOnArgument(macroId, arg_no, start); - break; - } - } - return TRUE; -} - -bool XLPGo(void) -{ - xlpBlockId = 0; - - if (InputFile && OutputFile) - { - Contents = fopen(TmpContentsName, "w"); - Chapters = fopen("chapters.xlp", "w"); - Sections = fopen("sections.xlp", "w"); - Subsections = fopen("subsections.xlp", "w"); - Subsubsections = fopen("subsubsections.xlp", "w"); - Index = fopen("index.xlp", "w"); - - // Insert invisible section marker at beginning - fprintf(Chapters, "\\hy-%d{%ld}{%s}\n", - hyBLOCK_INVISIBLE_SECTION, NewBlockId(), "\n"); - - fprintf(Contents, "\\hy-%d{%ld}{%s}\n\n", -// hyBLOCK_LARGE_HEADING, NewBlockId(), "\n\n%s\n\n", ContentsNameString); - hyBLOCK_LARGE_HEADING, NewBlockId(), ContentsNameString); - - SetCurrentOutput(Chapters); - - fprintf(Index, "\n\\hyindex{\n\"%s\"\n", - contentsString ? contentsString : "WXHELPCONTENTS"); - TraverseDocument(); - - wxNode *node = hyperLinks.First(); - while (node) - { - long from = node->GetKeyInteger(); - char *label = (char *)node->Data(); - wxNode *otherNode = hyperLabels.Find(label); - if (otherNode) - { - long to = (long)otherNode->Data(); - fprintf(Index, "%ld %ld\n", from, to); - } - node = node->Next(); - } - - fprintf(Index, "}\n"); - - fclose(Contents); Contents = NULL; - fclose(Chapters); Chapters = NULL; - fclose(Sections); Sections = NULL; - fclose(Subsections); Subsections = NULL; - fclose(Subsubsections); Subsubsections = NULL; - fclose(Index); Index = NULL; - - if (FileExists(ContentsName)) wxRemoveFile(ContentsName); - - if (!wxRenameFile(TmpContentsName, ContentsName)) - { - wxCopyFile(TmpContentsName, ContentsName); - wxRemoveFile(TmpContentsName); - } - - wxConcatFiles("chapters.xlp", "sections.xlp", "tmp2.xlp"); - wxConcatFiles("tmp2.xlp", "subsections.xlp", "tmp1.xlp"); - wxConcatFiles("tmp1.xlp", "subsubsections.xlp", "tmp2.xlp"); - wxConcatFiles("tmp2.xlp", "index.xlp", OutputFile); - - wxRemoveFile("tmp1.xlp"); - wxRemoveFile("tmp2.xlp"); - - wxRemoveFile("chapters.xlp"); - wxRemoveFile("sections.xlp"); - wxRemoveFile("subsections.xlp"); - wxRemoveFile("subsubsections.xlp"); - wxRemoveFile("index.xlp"); - return TRUE; - } - return FALSE; -} - diff --git a/utils/wxMMedia/Makefile b/utils/wxMMedia/Makefile deleted file mode 100644 index bccce53f76..0000000000 --- a/utils/wxMMedia/Makefile +++ /dev/null @@ -1 +0,0 @@ -include ../../setup/general/makeapp diff --git a/utils/wxMMedia/Makefile.in b/utils/wxMMedia/Makefile.in deleted file mode 100644 index 8c4c7ac9b1..0000000000 --- a/utils/wxMMedia/Makefile.in +++ /dev/null @@ -1,38 +0,0 @@ -# WXXT base directory -WXBASEDIR=@WXBASEDIR@ - -# set the OS type for compilation -OS=@OS@ -# compile a library only -RULE=gslib - -# define common stuff - -# define library name -LIB_TARGET=wxmmedia -LIB_MAJOR=2 -LIB_MINOR=0 -# define library sources -ADPCM_SRC=\ -g711.cpp g721.cpp g723_24.cpp g723_40.cpp g72x.cpp - -MMEDIA_SRC=\ -mmdata.cpp mmfile.cpp mmsolve.cpp sndsnd.cpp sndfrmt.cpp sndpcm.cpp \ -snduss.cpp sndfile.cpp sndwav.cpp mmriff.cpp vidbase.cpp vidxanm.cpp \ -cdbase.cpp cdunix.cpp sndaiff.cpp sndmulaw.cpp sndau.cpp - -LIB_SRC= $(ADPCM_SRC:%.cpp=adpcm/%.cpp) $(MMEDIA_SRC) - -#define library objects -LIB_OBJ=\ -$(LIB_SRC:%.cpp=%.o) - -#additional things needed for compile -ADD_COMPILE= -I$(UTILS)/wxthread - -all:: - -mkdir -p adpcm - -# include the definitions now -include ../../../template.mak - diff --git a/utils/wxMMedia/TODO b/utils/wxMMedia/TODO deleted file mode 100644 index a732d8c78a..0000000000 --- a/utils/wxMMedia/TODO +++ /dev/null @@ -1,7 +0,0 @@ -------------- -| TODO list | -------------- - -* Update the sound fragmenter to the new codec scheme. -* Fix the codec scheme. -* Add more codec. diff --git a/utils/wxMMedia/WARNING b/utils/wxMMedia/WARNING deleted file mode 100644 index b40c1bf486..0000000000 --- a/utils/wxMMedia/WARNING +++ /dev/null @@ -1,7 +0,0 @@ ------------------------------------------------------------------------------- -| WARNING: This sub-package doesn't work, so don't try to compile it if you | -| don't want to make some development on it. | ------------------------------------------------------------------------------- - -If you want to build it rename Makefile.bd in Makefile and Makefile.ibd in -Makefile.in. After that, rerun config.status. diff --git a/utils/wxMMedia/adpcm/g711.cpp b/utils/wxMMedia/adpcm/g711.cpp deleted file mode 100644 index d4d60a5c26..0000000000 --- a/utils/wxMMedia/adpcm/g711.cpp +++ /dev/null @@ -1,283 +0,0 @@ -/* - * This source code is a product of Sun Microsystems, Inc. and is provided - * for unrestricted use. Users may copy or modify this source code without - * charge. - * - * SUN SOURCE CODE IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING - * THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun source code is provided with no support and without any obligation on - * the part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS SOFTWARE - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ - -/* - * g711.c - * - * u-law, A-law and linear PCM conversions. - */ -#define SIGN_BIT (0x80) /* Sign bit for a A-law byte. */ -#define QUANT_MASK (0xf) /* Quantization field mask. */ -#define NSEGS (8) /* Number of A-law segments. */ -#define SEG_SHIFT (4) /* Left shift for segment number. */ -#define SEG_MASK (0x70) /* Segment field mask. */ - -static short seg_end[8] = {0xFF, 0x1FF, 0x3FF, 0x7FF, - 0xFFF, 0x1FFF, 0x3FFF, 0x7FFF}; - -/* copy from CCITT G.711 specifications */ -unsigned char _u2a[128] = { /* u- to A-law conversions */ - 1, 1, 2, 2, 3, 3, 4, 4, - 5, 5, 6, 6, 7, 7, 8, 8, - 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, - 25, 27, 29, 31, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, - 46, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, - 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, - 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128}; - -unsigned char _a2u[128] = { /* A- to u-law conversions */ - 1, 3, 5, 7, 9, 11, 13, 15, - 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, - 32, 32, 33, 33, 34, 34, 35, 35, - 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 48, 49, 49, - 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 64, - 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 79, - 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127}; - -static int -search( - int val, - short *table, - int size) -{ - int i; - - for (i = 0; i < size; i++) { - if (val <= *table++) - return (i); - } - return (size); -} - -/* - * linear2alaw() - Convert a 16-bit linear PCM value to 8-bit A-law - * - * linear2alaw() accepts an 16-bit integer and encodes it as A-law data. - * - * Linear Input Code Compressed Code - * ------------------------ --------------- - * 0000000wxyza 000wxyz - * 0000001wxyza 001wxyz - * 000001wxyzab 010wxyz - * 00001wxyzabc 011wxyz - * 0001wxyzabcd 100wxyz - * 001wxyzabcde 101wxyz - * 01wxyzabcdef 110wxyz - * 1wxyzabcdefg 111wxyz - * - * For further information see John C. Bellamy's Digital Telephony, 1982, - * John Wiley & Sons, pps 98-111 and 472-476. - */ -unsigned char -linear2alaw( - int pcm_val) /* 2's complement (16-bit range) */ -{ - int mask; - int seg; - unsigned char aval; - - if (pcm_val >= 0) { - mask = 0xD5; /* sign (7th) bit = 1 */ - } else { - mask = 0x55; /* sign bit = 0 */ - pcm_val = -pcm_val - 8; - } - - /* Convert the scaled magnitude to segment number. */ - seg = search(pcm_val, seg_end, 8); - - /* Combine the sign, segment, and quantization bits. */ - - if (seg >= 8) /* out of range, return maximum value. */ - return (0x7F ^ mask); - else { - aval = seg << SEG_SHIFT; - if (seg < 2) - aval |= (pcm_val >> 4) & QUANT_MASK; - else - aval |= (pcm_val >> (seg + 3)) & QUANT_MASK; - return (aval ^ mask); - } -} - -/* - * alaw2linear() - Convert an A-law value to 16-bit linear PCM - * - */ -int -alaw2linear( - unsigned char a_val) -{ - int t; - int seg; - - a_val ^= 0x55; - - t = (a_val & QUANT_MASK) << 4; - seg = ((unsigned)a_val & SEG_MASK) >> SEG_SHIFT; - switch (seg) { - case 0: - t += 8; - break; - case 1: - t += 0x108; - break; - default: - t += 0x108; - t <<= seg - 1; - } - return ((a_val & SIGN_BIT) ? t : -t); -} - -#define BIAS (0x84) /* Bias for linear code. */ - -/* - * linear2ulaw() - Convert a linear PCM value to u-law - * - * In order to simplify the encoding process, the original linear magnitude - * is biased by adding 33 which shifts the encoding range from (0 - 8158) to - * (33 - 8191). The result can be seen in the following encoding table: - * - * Biased Linear Input Code Compressed Code - * ------------------------ --------------- - * 00000001wxyza 000wxyz - * 0000001wxyzab 001wxyz - * 000001wxyzabc 010wxyz - * 00001wxyzabcd 011wxyz - * 0001wxyzabcde 100wxyz - * 001wxyzabcdef 101wxyz - * 01wxyzabcdefg 110wxyz - * 1wxyzabcdefgh 111wxyz - * - * Each biased linear code has a leading 1 which identifies the segment - * number. The value of the segment number is equal to 7 minus the number - * of leading 0's. The quantization interval is directly available as the - * four bits wxyz. * The trailing bits (a - h) are ignored. - * - * Ordinarily the complement of the resulting code word is used for - * transmission, and so the code word is complemented before it is returned. - * - * For further information see John C. Bellamy's Digital Telephony, 1982, - * John Wiley & Sons, pps 98-111 and 472-476. - */ -unsigned char -linear2ulaw( - int pcm_val) /* 2's complement (16-bit range) */ -{ - int mask; - int seg; - unsigned char uval; - - /* Get the sign and the magnitude of the value. */ - if (pcm_val < 0) { - pcm_val = BIAS - pcm_val; - mask = 0x7F; - } else { - pcm_val += BIAS; - mask = 0xFF; - } - - /* Convert the scaled magnitude to segment number. */ - seg = search(pcm_val, seg_end, 8); - - /* - * Combine the sign, segment, quantization bits; - * and complement the code word. - */ - if (seg >= 8) /* out of range, return maximum value. */ - return (0x7F ^ mask); - else { - uval = (seg << 4) | ((pcm_val >> (seg + 3)) & 0xF); - return (uval ^ mask); - } - -} - -/* - * ulaw2linear() - Convert a u-law value to 16-bit linear PCM - * - * First, a biased linear code is derived from the code word. An unbiased - * output can then be obtained by subtracting 33 from the biased code. - * - * Note that this function expects to be passed the complement of the - * original code word. This is in keeping with ISDN conventions. - */ -int -ulaw2linear( - unsigned char u_val) -{ - int t; - - /* Complement to obtain normal u-law value. */ - u_val = ~u_val; - - /* - * Extract and bias the quantization bits. Then - * shift up by the segment number and subtract out the bias. - */ - t = ((u_val & QUANT_MASK) << 3) + BIAS; - t <<= ((unsigned)u_val & SEG_MASK) >> SEG_SHIFT; - - return ((u_val & SIGN_BIT) ? (BIAS - t) : (t - BIAS)); -} - -/* A-law to u-law conversion */ -unsigned char -alaw2ulaw( - unsigned char aval) -{ - aval &= 0xff; - return ((aval & 0x80) ? (0xFF ^ _a2u[aval ^ 0xD5]) : - (0x7F ^ _a2u[aval ^ 0x55])); -} - -/* u-law to A-law conversion */ -unsigned char -ulaw2alaw( - unsigned char uval) -{ - uval &= 0xff; - return ((uval & 0x80) ? (0xD5 ^ (_u2a[0xFF ^ uval] - 1)) : - (0x55 ^ (_u2a[0x7F ^ uval] - 1))); -} diff --git a/utils/wxMMedia/adpcm/g721.cpp b/utils/wxMMedia/adpcm/g721.cpp deleted file mode 100644 index 3411d1a1bb..0000000000 --- a/utils/wxMMedia/adpcm/g721.cpp +++ /dev/null @@ -1,173 +0,0 @@ -/* - * This source code is a product of Sun Microsystems, Inc. and is provided - * for unrestricted use. Users may copy or modify this source code without - * charge. - * - * SUN SOURCE CODE IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING - * THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun source code is provided with no support and without any obligation on - * the part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS SOFTWARE - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ - -/* - * g721.c - * - * Description: - * - * g721_encoder(), g721_decoder() - * - * These routines comprise an implementation of the CCITT G.721 ADPCM - * coding algorithm. Essentially, this implementation is identical to - * the bit level description except for a few deviations which - * take advantage of work station attributes, such as hardware 2's - * complement arithmetic and large memory. Specifically, certain time - * consuming operations such as multiplications are replaced - * with lookup tables and software 2's complement operations are - * replaced with hardware 2's complement. - * - * The deviation from the bit level specification (lookup tables) - * preserves the bit level performance specifications. - * - * As outlined in the G.721 Recommendation, the algorithm is broken - * down into modules. Each section of code below is preceded by - * the name of the module which it is implementing. - * - */ -#include "g72x.h" - -static short qtab_721[7] = {-124, 80, 178, 246, 300, 349, 400}; -/* - * Maps G.721 code word to reconstructed scale factor normalized log - * magnitude values. - */ -static short _dqlntab[16] = {-2048, 4, 135, 213, 273, 323, 373, 425, - 425, 373, 323, 273, 213, 135, 4, -2048}; - -/* Maps G.721 code word to log of scale factor multiplier. */ -static short _witab[16] = {-12, 18, 41, 64, 112, 198, 355, 1122, - 1122, 355, 198, 112, 64, 41, 18, -12}; -/* - * Maps G.721 code words to a set of values whose long and short - * term averages are computed and then compared to give an indication - * how stationary (steady state) the signal is. - */ -static short _fitab[16] = {0, 0, 0, 0x200, 0x200, 0x200, 0x600, 0xE00, - 0xE00, 0x600, 0x200, 0x200, 0x200, 0, 0, 0}; - -/* - * g721_encoder() - * - * Encodes the input vale of linear PCM, A-law or u-law data sl and returns - * the resulting code. -1 is returned for unknown input coding value. - */ -int -g721_encoder( - int sl, - int in_coding, - struct g72x_state *state_ptr) -{ - short sezi, se, sez; /* ACCUM */ - short d; /* SUBTA */ - short sr; /* ADDB */ - short y; /* MIX */ - short dqsez; /* ADDC */ - short dq, i; - - switch (in_coding) { /* linearize input sample to 14-bit PCM */ - case AUDIO_ENCODING_ALAW: - sl = alaw2linear(sl) >> 2; - break; - case AUDIO_ENCODING_ULAW: - sl = ulaw2linear(sl) >> 2; - break; - case AUDIO_ENCODING_LINEAR: - sl = ((short)sl) >> 2; /* 14-bit dynamic range */ - break; - default: - return (-1); - } - - sezi = predictor_zero(state_ptr); - sez = sezi >> 1; - se = (sezi + predictor_pole(state_ptr)) >> 1; /* estimated signal */ - - d = sl - se; /* estimation difference */ - - /* quantize the prediction difference */ - y = step_size(state_ptr); /* quantizer step size */ - i = quantize(d, y, qtab_721, 7); /* i = ADPCM code */ - - dq = reconstruct(i & 8, _dqlntab[i], y); /* quantized est diff */ - - sr = (dq < 0) ? se - (dq & 0x3FFF) : se + dq; /* reconst. signal */ - - dqsez = sr + sez - se; /* pole prediction diff. */ - - update(4, y, _witab[i] << 5, _fitab[i], dq, sr, dqsez, state_ptr); - - return (i); -} - -/* - * g721_decoder() - * - * Description: - * - * Decodes a 4-bit code of G.721 encoded data of i and - * returns the resulting linear PCM, A-law or u-law value. - * return -1 for unknown out_coding value. - */ -int -g721_decoder( - int i, - int out_coding, - struct g72x_state *state_ptr) -{ - short sezi, sei, sez, se; /* ACCUM */ - short y; /* MIX */ - short sr; /* ADDB */ - short dq; - short dqsez; - - i &= 0x0f; /* mask to get proper bits */ - sezi = predictor_zero(state_ptr); - sez = sezi >> 1; - sei = sezi + predictor_pole(state_ptr); - se = sei >> 1; /* se = estimated signal */ - - y = step_size(state_ptr); /* dynamic quantizer step size */ - - dq = reconstruct(i & 0x08, _dqlntab[i], y); /* quantized diff. */ - - sr = (dq < 0) ? (se - (dq & 0x3FFF)) : se + dq; /* reconst. signal */ - - dqsez = sr - se + sez; /* pole prediction diff. */ - - update(4, y, _witab[i] << 5, _fitab[i], dq, sr, dqsez, state_ptr); - - switch (out_coding) { - case AUDIO_ENCODING_ALAW: - return (tandem_adjust_alaw(sr, se, y, i, 8, qtab_721)); - case AUDIO_ENCODING_ULAW: - return (tandem_adjust_ulaw(sr, se, y, i, 8, qtab_721)); - case AUDIO_ENCODING_LINEAR: - return (sr << 2); /* sr was 14-bit dynamic range */ - default: - return (-1); - } -} diff --git a/utils/wxMMedia/adpcm/g723_24.cpp b/utils/wxMMedia/adpcm/g723_24.cpp deleted file mode 100644 index ba122eadf3..0000000000 --- a/utils/wxMMedia/adpcm/g723_24.cpp +++ /dev/null @@ -1,158 +0,0 @@ -/* - * This source code is a product of Sun Microsystems, Inc. and is provided - * for unrestricted use. Users may copy or modify this source code without - * charge. - * - * SUN SOURCE CODE IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING - * THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun source code is provided with no support and without any obligation on - * the part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS SOFTWARE - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ - -/* - * g723_24.c - * - * Description: - * - * g723_24_encoder(), g723_24_decoder() - * - * These routines comprise an implementation of the CCITT G.723 24 Kbps - * ADPCM coding algorithm. Essentially, this implementation is identical to - * the bit level description except for a few deviations which take advantage - * of workstation attributes, such as hardware 2's complement arithmetic. - * - */ -#include "g72x.h" - -/* - * Maps G.723_24 code word to reconstructed scale factor normalized log - * magnitude values. - */ -static short _dqlntab[8] = {-2048, 135, 273, 373, 373, 273, 135, -2048}; - -/* Maps G.723_24 code word to log of scale factor multiplier. */ -static short _witab[8] = {-128, 960, 4384, 18624, 18624, 4384, 960, -128}; - -/* - * Maps G.723_24 code words to a set of values whose long and short - * term averages are computed and then compared to give an indication - * how stationary (steady state) the signal is. - */ -static short _fitab[8] = {0, 0x200, 0x400, 0xE00, 0xE00, 0x400, 0x200, 0}; - -static short qtab_723_24[3] = {8, 218, 331}; - -/* - * g723_24_encoder() - * - * Encodes a linear PCM, A-law or u-law input sample and returns its 3-bit code. - * Returns -1 if invalid input coding value. - */ -int -g723_24_encoder( - int sl, - int in_coding, - struct g72x_state *state_ptr) -{ - short sei, sezi, se, sez; /* ACCUM */ - short d; /* SUBTA */ - short y; /* MIX */ - short sr; /* ADDB */ - short dqsez; /* ADDC */ - short dq, i; - - switch (in_coding) { /* linearize input sample to 14-bit PCM */ - case AUDIO_ENCODING_ALAW: - sl = alaw2linear(sl) >> 2; - break; - case AUDIO_ENCODING_ULAW: - sl = ulaw2linear(sl) >> 2; - break; - case AUDIO_ENCODING_LINEAR: - sl = ((short)sl) >> 2; /* sl of 14-bit dynamic range */ - break; - default: - return (-1); - } - - sezi = predictor_zero(state_ptr); - sez = sezi >> 1; - sei = sezi + predictor_pole(state_ptr); - se = sei >> 1; /* se = estimated signal */ - - d = sl - se; /* d = estimation diff. */ - - /* quantize prediction difference d */ - y = step_size(state_ptr); /* quantizer step size */ - i = quantize(d, y, qtab_723_24, 3); /* i = ADPCM code */ - dq = reconstruct(i & 4, _dqlntab[i], y); /* quantized diff. */ - - sr = (dq < 0) ? se - (dq & 0x3FFF) : se + dq; /* reconstructed signal */ - - dqsez = sr + sez - se; /* pole prediction diff. */ - - update(3, y, _witab[i], _fitab[i], dq, sr, dqsez, state_ptr); - - return (i); -} - -/* - * g723_24_decoder() - * - * Decodes a 3-bit CCITT G.723_24 ADPCM code and returns - * the resulting 16-bit linear PCM, A-law or u-law sample value. - * -1 is returned if the output coding is unknown. - */ -int -g723_24_decoder( - int i, - int out_coding, - struct g72x_state *state_ptr) -{ - short sezi, sei, sez, se; /* ACCUM */ - short y; /* MIX */ - short sr; /* ADDB */ - short dq; - short dqsez; - - i &= 0x07; /* mask to get proper bits */ - sezi = predictor_zero(state_ptr); - sez = sezi >> 1; - sei = sezi + predictor_pole(state_ptr); - se = sei >> 1; /* se = estimated signal */ - - y = step_size(state_ptr); /* adaptive quantizer step size */ - dq = reconstruct(i & 0x04, _dqlntab[i], y); /* unquantize pred diff */ - - sr = (dq < 0) ? (se - (dq & 0x3FFF)) : (se + dq); /* reconst. signal */ - - dqsez = sr - se + sez; /* pole prediction diff. */ - - update(3, y, _witab[i], _fitab[i], dq, sr, dqsez, state_ptr); - - switch (out_coding) { - case AUDIO_ENCODING_ALAW: - return (tandem_adjust_alaw(sr, se, y, i, 4, qtab_723_24)); - case AUDIO_ENCODING_ULAW: - return (tandem_adjust_ulaw(sr, se, y, i, 4, qtab_723_24)); - case AUDIO_ENCODING_LINEAR: - return (sr << 2); /* sr was of 14-bit dynamic range */ - default: - return (-1); - } -} diff --git a/utils/wxMMedia/adpcm/g723_40.cpp b/utils/wxMMedia/adpcm/g723_40.cpp deleted file mode 100644 index b8ec06a686..0000000000 --- a/utils/wxMMedia/adpcm/g723_40.cpp +++ /dev/null @@ -1,178 +0,0 @@ -/* - * This source code is a product of Sun Microsystems, Inc. and is provided - * for unrestricted use. Users may copy or modify this source code without - * charge. - * - * SUN SOURCE CODE IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING - * THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun source code is provided with no support and without any obligation on - * the part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS SOFTWARE - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ - -/* - * g723_40.c - * - * Description: - * - * g723_40_encoder(), g723_40_decoder() - * - * These routines comprise an implementation of the CCITT G.723 40Kbps - * ADPCM coding algorithm. Essentially, this implementation is identical to - * the bit level description except for a few deviations which - * take advantage of workstation attributes, such as hardware 2's - * complement arithmetic. - * - * The deviation from the bit level specification (lookup tables), - * preserves the bit level performance specifications. - * - * As outlined in the G.723 Recommendation, the algorithm is broken - * down into modules. Each section of code below is preceded by - * the name of the module which it is implementing. - * - */ -#include "g72x.h" - -/* - * Maps G.723_40 code word to ructeconstructed scale factor normalized log - * magnitude values. - */ -static short _dqlntab[32] = {-2048, -66, 28, 104, 169, 224, 274, 318, - 358, 395, 429, 459, 488, 514, 539, 566, - 566, 539, 514, 488, 459, 429, 395, 358, - 318, 274, 224, 169, 104, 28, -66, -2048}; - -/* Maps G.723_40 code word to log of scale factor multiplier. */ -static short _witab[32] = {448, 448, 768, 1248, 1280, 1312, 1856, 3200, - 4512, 5728, 7008, 8960, 11456, 14080, 16928, 22272, - 22272, 16928, 14080, 11456, 8960, 7008, 5728, 4512, - 3200, 1856, 1312, 1280, 1248, 768, 448, 448}; - -/* - * Maps G.723_40 code words to a set of values whose long and short - * term averages are computed and then compared to give an indication - * how stationary (steady state) the signal is. - */ -static short _fitab[32] = {0, 0, 0, 0, 0, 0x200, 0x200, 0x200, - 0x200, 0x200, 0x400, 0x600, 0x800, 0xA00, 0xC00, 0xC00, - 0xC00, 0xC00, 0xA00, 0x800, 0x600, 0x400, 0x200, 0x200, - 0x200, 0x200, 0x200, 0, 0, 0, 0, 0}; - -static short qtab_723_40[15] = {-122, -16, 68, 139, 198, 250, 298, 339, - 378, 413, 445, 475, 502, 528, 553}; - -/* - * g723_40_encoder() - * - * Encodes a 16-bit linear PCM, A-law or u-law input sample and retuens - * the resulting 5-bit CCITT G.723 40Kbps code. - * Returns -1 if the input coding value is invalid. - */ -int -g723_40_encoder( - int sl, - int in_coding, - struct g72x_state *state_ptr) -{ - short sei, sezi, se, sez; /* ACCUM */ - short d; /* SUBTA */ - short y; /* MIX */ - short sr; /* ADDB */ - short dqsez; /* ADDC */ - short dq, i; - - switch (in_coding) { /* linearize input sample to 14-bit PCM */ - case AUDIO_ENCODING_ALAW: - sl = alaw2linear(sl) >> 2; - break; - case AUDIO_ENCODING_ULAW: - sl = ulaw2linear(sl) >> 2; - break; - case AUDIO_ENCODING_LINEAR: - sl = ((short) sl) >> 2; /* sl of 14-bit dynamic range */ - break; - default: - return (-1); - } - - sezi = predictor_zero(state_ptr); - sez = sezi >> 1; - sei = sezi + predictor_pole(state_ptr); - se = sei >> 1; /* se = estimated signal */ - - d = sl - se; /* d = estimation difference */ - - /* quantize prediction difference */ - y = step_size(state_ptr); /* adaptive quantizer step size */ - i = quantize(d, y, qtab_723_40, 15); /* i = ADPCM code */ - - dq = reconstruct(i & 0x10, _dqlntab[i], y); /* quantized diff */ - - sr = (dq < 0) ? se - (dq & 0x7FFF) : se + dq; /* reconstructed signal */ - - dqsez = sr + sez - se; /* dqsez = pole prediction diff. */ - - update(5, y, _witab[i], _fitab[i], dq, sr, dqsez, state_ptr); - - return (i); -} - -/* - * g723_40_decoder() - * - * Decodes a 5-bit CCITT G.723 40Kbps code and returns - * the resulting 16-bit linear PCM, A-law or u-law sample value. - * -1 is returned if the output coding is unknown. - */ -int -g723_40_decoder( - int i, - int out_coding, - struct g72x_state *state_ptr) -{ - short sezi, sei, sez, se; /* ACCUM */ - short y; /* MIX */ - short sr; /* ADDB */ - short dq; - short dqsez; - - i &= 0x1f; /* mask to get proper bits */ - sezi = predictor_zero(state_ptr); - sez = sezi >> 1; - sei = sezi + predictor_pole(state_ptr); - se = sei >> 1; /* se = estimated signal */ - - y = step_size(state_ptr); /* adaptive quantizer step size */ - dq = reconstruct(i & 0x10, _dqlntab[i], y); /* estimation diff. */ - - sr = (dq < 0) ? (se - (dq & 0x7FFF)) : (se + dq); /* reconst. signal */ - - dqsez = sr - se + sez; /* pole prediction diff. */ - - update(5, y, _witab[i], _fitab[i], dq, sr, dqsez, state_ptr); - - switch (out_coding) { - case AUDIO_ENCODING_ALAW: - return (tandem_adjust_alaw(sr, se, y, i, 0x10, qtab_723_40)); - case AUDIO_ENCODING_ULAW: - return (tandem_adjust_ulaw(sr, se, y, i, 0x10, qtab_723_40)); - case AUDIO_ENCODING_LINEAR: - return (sr << 2); /* sr was of 14-bit dynamic range */ - default: - return (-1); - } -} diff --git a/utils/wxMMedia/adpcm/g72x.cpp b/utils/wxMMedia/adpcm/g72x.cpp deleted file mode 100644 index ff571bdad7..0000000000 --- a/utils/wxMMedia/adpcm/g72x.cpp +++ /dev/null @@ -1,608 +0,0 @@ -/* - * This source code is a product of Sun Microsystems, Inc. and is provided - * for unrestricted use. Users may copy or modify this source code without - * charge. - * - * SUN SOURCE CODE IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING - * THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun source code is provided with no support and without any obligation on - * the part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS SOFTWARE - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ - -/* - * g72x.c - * - * Common routines for G.721 and G.723 conversions. - */ - -#include -#include "g72x.h" - -static short power2[15] = {1, 2, 4, 8, 0x10, 0x20, 0x40, 0x80, - 0x100, 0x200, 0x400, 0x800, 0x1000, 0x2000, 0x4000}; - -/* - * quan() - * - * quantizes the input val against the table of size short integers. - * It returns i if table[i - 1] <= val < table[i]. - * - * Using linear search for simple coding. - */ -static int -quan( - int val, - short *table, - int size) -{ - int i; - - for (i = 0; i < size; i++) - if (val < *table++) - break; - return (i); -} - -static char quan2_tab[65536]; -static short base2_tab[65536]; -static int init_tabs_done = 0; - -inline char quan2 (unsigned short val) -{ - return quan2_tab[val]; -} - -inline short base2 (unsigned short val) -{ - return base2_tab[val]; -} - -static void init_quan2_tab (void) -{ - long i; - - for (i = 0; i < 65536; i++) { - quan2_tab[i] = quan (i, power2, 15); - }; -} - -static void init_base2_tab (void) -{ - long i; - short exp; - - for (i = 0; i < 65536; i++) { - exp = quan2 (short (i)); - base2_tab[i] = short ((exp << 6) + ((i << 6) >> exp)); - }; -} - -static void init_tabs (void) -{ - if (init_tabs_done) return; - - init_quan2_tab(); - init_base2_tab(); - - init_tabs_done = 1; -} - -/* - * fmult() - * - * returns the integer product of the 14-bit integer "an" and - * "floating point" representation (4-bit exponent, 6-bit mantessa) "srn". - */ -static int -fmult( - int an, - int srn) -{ - short anmag, anexp, anmant; - short wanexp, wanmant; - short retval; - - anmag = (an > 0) ? an : ((-an) & 0x1FFF); - anexp = quan2(anmag) - 6; - anmant = (anmag == 0) ? 32 : - (anexp >= 0) ? anmag >> anexp : anmag << -anexp; - wanexp = anexp + ((srn >> 6) & 0xF) - 13; - - wanmant = (anmant * (srn & 077) + 0x30) >> 4; - retval = (wanexp >= 0) ? ((wanmant << wanexp) & 0x7FFF) : - (wanmant >> -wanexp); - - return (((an ^ srn) < 0) ? -retval : retval); -} - -/* - * g72x_init_state() - * - * This routine initializes and/or resets the g72x_state structure - * pointed to by 'state_ptr'. - * All the initial state values are specified in the CCITT G.721 document. - */ -void -g72x_init_state( - struct g72x_state *state_ptr) -{ - int cnta; - - init_tabs (); - - state_ptr->yl = 34816; - state_ptr->yu = 544; - state_ptr->dms = 0; - state_ptr->dml = 0; - state_ptr->ap = 0; - for (cnta = 0; cnta < 2; cnta++) { - state_ptr->a[cnta] = 0; - state_ptr->pk[cnta] = 0; - state_ptr->sr[cnta] = 32; - } - for (cnta = 0; cnta < 6; cnta++) { - state_ptr->b[cnta] = 0; - state_ptr->dq[cnta] = 32; - } - state_ptr->td = 0; -} - -/* - * predictor_zero() - * - * computes the estimated signal from 6-zero predictor. - * - */ -int -predictor_zero( - struct g72x_state *state_ptr) -{ - int i; - int sezi; - - sezi = fmult(state_ptr->b[0] >> 2, state_ptr->dq[0]); - for (i = 1; i < 6; i++) /* ACCUM */ - sezi += fmult(state_ptr->b[i] >> 2, state_ptr->dq[i]); - return (sezi); -} -/* - * predictor_pole() - * - * computes the estimated signal from 2-pole predictor. - * - */ -int -predictor_pole( - struct g72x_state *state_ptr) -{ - return (fmult(state_ptr->a[1] >> 2, state_ptr->sr[1]) + - fmult(state_ptr->a[0] >> 2, state_ptr->sr[0])); -} -/* - * step_size() - * - * computes the quantization step size of the adaptive quantizer. - * - */ -int -step_size( - struct g72x_state *state_ptr) -{ - int y; - int dif; - int al; - - if (state_ptr->ap >= 256) - return (state_ptr->yu); - else { - y = state_ptr->yl >> 6; - dif = state_ptr->yu - y; - al = state_ptr->ap >> 2; - if (dif > 0) - y += (dif * al) >> 6; - else if (dif < 0) - y += (dif * al + 0x3F) >> 6; - return (y); - } -} - -/* - * quantize() - * - * Given a raw sample, 'd', of the difference signal and a - * quantization step size scale factor, 'y', this routine returns the - * ADPCM codeword to which that sample gets quantized. The step - * size scale factor division operation is done in the log base 2 domain - * as a subtraction. - */ -int -quantize( - int d, /* Raw difference signal sample */ - int y, /* Step size multiplier */ - short *table, /* quantization table */ - int size) /* table size of short integers */ -{ - short dqm; /* Magnitude of 'd' */ - short exp; /* Integer part of base 2 log of 'd' */ - short mant; /* Fractional part of base 2 log */ - short dl; /* Log of magnitude of 'd' */ - short dln; /* Step size scale factor normalized log */ - int i; - - /* - * LOG - * - * Compute base 2 log of 'd', and store in 'dl'. - */ - dqm = abs(d); - exp = quan2(dqm >> 1); - mant = ((dqm << 7) >> exp) & 0x7F; /* Fractional portion. */ - dl = (exp << 7) + mant; - - /* - * SUBTB - * - * "Divide" by step size multiplier. - */ - dln = dl - (y >> 2); - - /* - * QUAN - * - * Obtain codword i for 'd'. - */ - i = quan(dln, table, size); - if (d < 0) /* take 1's complement of i */ - return ((size << 1) + 1 - i); - else if (i == 0) /* take 1's complement of 0 */ - return ((size << 1) + 1); /* new in 1988 */ - else - return (i); -} -/* - * reconstruct() - * - * Returns reconstructed difference signal 'dq' obtained from - * codeword 'i' and quantization step size scale factor 'y'. - * Multiplication is performed in log base 2 domain as addition. - */ -int -reconstruct( - int sign, /* 0 for non-negative value */ - int dqln, /* G.72x codeword */ - int y) /* Step size multiplier */ -{ - short dql; /* Log of 'dq' magnitude */ - short dex; /* Integer part of log */ - short dqt; - short dq; /* Reconstructed difference signal sample */ - - dql = dqln + (y >> 2); /* ADDA */ - - if (dql < 0) { - return ((sign) ? -0x8000 : 0); - } else { /* ANTILOG */ - dex = (dql >> 7) & 15; - dqt = 128 + (dql & 127); - dq = (dqt << 7) >> (14 - dex); - return ((sign) ? (dq - 0x8000) : dq); - } -} - - -/* - * update() - * - * updates the state variables for each output code - */ -void -update( - int code_size, /* distinguish 723_40 with others */ - int y, /* quantizer step size */ - int wi, /* scale factor multiplier */ - int fi, /* for long/short term energies */ - int dq, /* quantized prediction difference */ - int sr, /* reconstructed signal */ - int dqsez, /* difference from 2-pole predictor */ - struct g72x_state *state_ptr) /* coder state pointer */ -{ - int cnt; - short mag; /* Adaptive predictor, FLOAT A */ - short a2p; /* LIMC */ - short a1ul; /* UPA1 */ - short pks1; /* UPA2 */ - short fa1; - char tr; /* tone/transition detector */ - short ylint, thr2, dqthr; - short ylfrac, thr1; - short pk0; - - pk0 = (dqsez < 0) ? 1 : 0; /* needed in updating predictor poles */ - - mag = dq & 0x7FFF; /* prediction difference magnitude */ - /* TRANS */ - ylint = short (state_ptr->yl >> 15); /* exponent part of yl */ - ylfrac = (state_ptr->yl >> 10) & 0x1F; /* fractional part of yl */ - thr1 = (32 + ylfrac) << ylint; /* threshold */ - thr2 = (ylint > 9) ? 31 << 10 : thr1; /* limit thr2 to 31 << 10 */ - dqthr = (thr2 + (thr2 >> 1)) >> 1; /* dqthr = 0.75 * thr2 */ - if (state_ptr->td == 0) /* signal supposed voice */ - tr = 0; - else if (mag <= dqthr) /* supposed data, but small mag */ - tr = 0; /* treated as voice */ - else /* signal is data (modem) */ - tr = 1; - - /* - * Quantizer scale factor adaptation. - */ - - /* FUNCTW & FILTD & DELAY */ - /* update non-steady state step size multiplier */ - state_ptr->yu = y + ((wi - y) >> 5); - - /* LIMB */ - if (state_ptr->yu < 544) /* 544 <= yu <= 5120 */ - state_ptr->yu = 544; - else if (state_ptr->yu > 5120) - state_ptr->yu = 5120; - - /* FILTE & DELAY */ - /* update steady state step size multiplier */ - state_ptr->yl += state_ptr->yu + ((-state_ptr->yl) >> 6); - - /* - * Adaptive predictor coefficients. - */ - if (tr == 1) { /* reset a's and b's for modem signal */ - state_ptr->a[0] = 0; - state_ptr->a[1] = 0; - state_ptr->b[0] = 0; - state_ptr->b[1] = 0; - state_ptr->b[2] = 0; - state_ptr->b[3] = 0; - state_ptr->b[4] = 0; - state_ptr->b[5] = 0; - - a2p = 0; /* eliminate Compiler Warnings */ - } else { /* update a's and b's */ - pks1 = pk0 ^ state_ptr->pk[0]; /* UPA2 */ - - /* update predictor pole a[1] */ - a2p = state_ptr->a[1] - (state_ptr->a[1] >> 7); - if (dqsez != 0) { - fa1 = (pks1) ? state_ptr->a[0] : -state_ptr->a[0]; - if (fa1 < -8191) /* a2p = function of fa1 */ - a2p -= 0x100; - else if (fa1 > 8191) - a2p += 0xFF; - else - a2p += fa1 >> 5; - - if (pk0 ^ state_ptr->pk[1]) - /* LIMC */ - if (a2p <= -12160) - a2p = -12288; - else if (a2p >= 12416) - a2p = 12288; - else - a2p -= 0x80; - else if (a2p <= -12416) - a2p = -12288; - else if (a2p >= 12160) - a2p = 12288; - else - a2p += 0x80; - } - - /* TRIGB & DELAY */ - state_ptr->a[1] = a2p; - - /* UPA1 */ - /* update predictor pole a[0] */ - state_ptr->a[0] -= state_ptr->a[0] >> 8; - if (dqsez != 0) - if (pks1 == 0) - state_ptr->a[0] += 192; - else - state_ptr->a[0] -= 192; - - /* LIMD */ - a1ul = 15360 - a2p; - if (state_ptr->a[0] < -a1ul) - state_ptr->a[0] = -a1ul; - else if (state_ptr->a[0] > a1ul) - state_ptr->a[0] = a1ul; - - /* UPB : update predictor zeros b[6] */ - for (cnt = 0; cnt < 6; cnt++) { - if (code_size == 5) /* for 40Kbps G.723 */ - state_ptr->b[cnt] -= state_ptr->b[cnt] >> 9; - else /* for G.721 and 24Kbps G.723 */ - state_ptr->b[cnt] -= state_ptr->b[cnt] >> 8; - if (dq & 0x7FFF) { /* XOR */ - if ((dq ^ state_ptr->dq[cnt]) >= 0) - state_ptr->b[cnt] += 128; - else - state_ptr->b[cnt] -= 128; - } - } - } - - for (cnt = 5; cnt > 0; cnt--) - state_ptr->dq[cnt] = state_ptr->dq[cnt-1]; - /* FLOAT A : convert dq[0] to 4-bit exp, 6-bit mantissa f.p. */ - if (mag == 0) { - state_ptr->dq[0] = (dq >= 0) ? 0x20 : 0xFC20; - } else { - state_ptr->dq[0] = (dq >= 0) ? - base2 (mag) : base2 (mag) - 0x400; - } - - state_ptr->sr[1] = state_ptr->sr[0]; - /* FLOAT B : convert sr to 4-bit exp., 6-bit mantissa f.p. */ - if (sr == 0) { - state_ptr->sr[0] = 0x20; - } else if (sr > 0) { - state_ptr->sr[0] = base2(sr); - } else if (sr > -32768) { - mag = -sr; - state_ptr->sr[0] = base2(mag) - 0x400; - } else - state_ptr->sr[0] = short (0xFC20); - - /* DELAY A */ - state_ptr->pk[1] = state_ptr->pk[0]; - state_ptr->pk[0] = pk0; - - /* TONE */ - if (tr == 1) /* this sample has been treated as data */ - state_ptr->td = 0; /* next one will be treated as voice */ - else if (a2p < -11776) /* small sample-to-sample correlation */ - state_ptr->td = 1; /* signal may be data */ - else /* signal is voice */ - state_ptr->td = 0; - - /* - * Adaptation speed control. - */ - state_ptr->dms += (fi - state_ptr->dms) >> 5; /* FILTA */ - state_ptr->dml += (((fi << 2) - state_ptr->dml) >> 7); /* FILTB */ - - if (tr == 1) - state_ptr->ap = 256; - else if (y < 1536) /* SUBTC */ - state_ptr->ap += (0x200 - state_ptr->ap) >> 4; - else if (state_ptr->td == 1) - state_ptr->ap += (0x200 - state_ptr->ap) >> 4; - else if (abs((state_ptr->dms << 2) - state_ptr->dml) >= - (state_ptr->dml >> 3)) - state_ptr->ap += (0x200 - state_ptr->ap) >> 4; - else - state_ptr->ap += (-state_ptr->ap) >> 4; -} - -/* - * tandem_adjust(sr, se, y, i, sign) - * - * At the end of ADPCM decoding, it simulates an encoder which may be receiving - * the output of this decoder as a tandem process. If the output of the - * simulated encoder differs from the input to this decoder, the decoder output - * is adjusted by one level of A-law or u-law codes. - * - * Input: - * sr decoder output linear PCM sample, - * se predictor estimate sample, - * y quantizer step size, - * i decoder input code, - * sign sign bit of code i - * - * Return: - * adjusted A-law or u-law compressed sample. - */ -int -tandem_adjust_alaw( - int sr, /* decoder output linear PCM sample */ - int se, /* predictor estimate sample */ - int y, /* quantizer step size */ - int i, /* decoder input code */ - int sign, - short *qtab) -{ - unsigned char sp; /* A-law compressed 8-bit code */ - short dx; /* prediction error */ - char id; /* quantized prediction error */ - int sd; /* adjusted A-law decoded sample value */ - int im; /* biased magnitude of i */ - int imx; /* biased magnitude of id */ - - if (sr <= -32768) - sr = -1; - sp = linear2alaw((sr >> 1) << 3); /* short to A-law compression */ - dx = (alaw2linear(sp) >> 2) - se; /* 16-bit prediction error */ - id = quantize(dx, y, qtab, sign - 1); - - if (id == i) { /* no adjustment on sp */ - return (sp); - } else { /* sp adjustment needed */ - /* ADPCM codes : 8, 9, ... F, 0, 1, ... , 6, 7 */ - im = i ^ sign; /* 2's complement to biased unsigned */ - imx = id ^ sign; - - if (imx > im) { /* sp adjusted to next lower value */ - if (sp & 0x80) { - sd = (sp == 0xD5) ? 0x55 : - ((sp ^ 0x55) - 1) ^ 0x55; - } else { - sd = (sp == 0x2A) ? 0x2A : - ((sp ^ 0x55) + 1) ^ 0x55; - } - } else { /* sp adjusted to next higher value */ - if (sp & 0x80) - sd = (sp == 0xAA) ? 0xAA : - ((sp ^ 0x55) + 1) ^ 0x55; - else - sd = (sp == 0x55) ? 0xD5 : - ((sp ^ 0x55) - 1) ^ 0x55; - } - return (sd); - } -} - -int -tandem_adjust_ulaw( - int sr, /* decoder output linear PCM sample */ - int se, /* predictor estimate sample */ - int y, /* quantizer step size */ - int i, /* decoder input code */ - int sign, - short *qtab) -{ - unsigned char sp; /* u-law compressed 8-bit code */ - short dx; /* prediction error */ - char id; /* quantized prediction error */ - int sd; /* adjusted u-law decoded sample value */ - int im; /* biased magnitude of i */ - int imx; /* biased magnitude of id */ - - if (sr <= -32768) - sr = 0; - sp = linear2ulaw(sr << 2); /* short to u-law compression */ - dx = (ulaw2linear(sp) >> 2) - se; /* 16-bit prediction error */ - id = quantize(dx, y, qtab, sign - 1); - if (id == i) { - return (sp); - } else { - /* ADPCM codes : 8, 9, ... F, 0, 1, ... , 6, 7 */ - im = i ^ sign; /* 2's complement to biased unsigned */ - imx = id ^ sign; - if (imx > im) { /* sp adjusted to next lower value */ - if (sp & 0x80) - sd = (sp == 0xFF) ? 0x7E : sp + 1; - else - sd = (sp == 0) ? 0 : sp - 1; - - } else { /* sp adjusted to next higher value */ - if (sp & 0x80) - sd = (sp == 0x80) ? 0x80 : sp - 1; - else - sd = (sp == 0x7F) ? 0xFE : sp + 1; - } - return (sd); - } -} diff --git a/utils/wxMMedia/adpcm/g72x.h b/utils/wxMMedia/adpcm/g72x.h deleted file mode 100644 index dbfd64fd5b..0000000000 --- a/utils/wxMMedia/adpcm/g72x.h +++ /dev/null @@ -1,123 +0,0 @@ -/* - * This source code is a product of Sun Microsystems, Inc. and is provided - * for unrestricted use. Users may copy or modify this source code without - * charge. - * - * SUN SOURCE CODE IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING - * THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun source code is provided with no support and without any obligation on - * the part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS SOFTWARE - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ - -/* - * g72x.h - * - * Header file for CCITT conversion routines. - * - */ -#ifndef _G72X_H -#define _G72X_H - -#define AUDIO_ENCODING_ULAW (1) /* ISDN u-law */ -#define AUDIO_ENCODING_ALAW (2) /* ISDN A-law */ -#define AUDIO_ENCODING_LINEAR (3) /* PCM 2's-complement (0-center) */ - -/* - * The following is the definition of the state structure - * used by the G.721/G.723 encoder and decoder to preserve their internal - * state between successive calls. The meanings of the majority - * of the state structure fields are explained in detail in the - * CCITT Recommendation G.721. The field names are essentially indentical - * to variable names in the bit level description of the coding algorithm - * included in this Recommendation. - */ -struct g72x_state { - long yl; /* Locked or steady state step size multiplier. */ - short yu; /* Unlocked or non-steady state step size multiplier. */ - short dms; /* Short term energy estimate. */ - short dml; /* Long term energy estimate. */ - short ap; /* Linear weighting coefficient of 'yl' and 'yu'. */ - - short a[2]; /* Coefficients of pole portion of prediction filter. */ - short b[6]; /* Coefficients of zero portion of prediction filter. */ - short pk[2]; /* - * Signs of previous two samples of a partially - * reconstructed signal. - */ - short dq[6]; /* - * Previous 6 samples of the quantized difference - * signal represented in an internal floating point - * format. - */ - short sr[2]; /* - * Previous 2 samples of the quantized difference - * signal represented in an internal floating point - * format. - */ - char td; /* delayed tone detect, new in 1988 version */ -}; - -/* External function definitions. */ - -extern unsigned char linear2alaw (int pcm_val); /* 2's complement (16-bit range) */ -extern int alaw2linear (unsigned char a_val); -extern unsigned char linear2ulaw (int pcm_val); /* 2's complement (16-bit range) */ -extern int ulaw2linear (unsigned char u_val); -extern int predictor_zero (struct g72x_state *state_ptr); -extern int predictor_pole (struct g72x_state *state_ptr); -extern int step_size (struct g72x_state *state_ptr); -extern int quantize (int d, int y, short *table, int size); -extern int reconstruct (int sign, int dqln, int y); - -extern void update - ( int code_size, int y, int wi, int fi, int dq - , int sr, int dqsez, struct g72x_state *state_ptr); - -int tandem_adjust_alaw - (int sr, int se, int y, int i, int sign, short *qtab); - -int tandem_adjust_ulaw - (int sr, int se, int y, int i, int sign, short *qtab); - -extern void g72x_init_state (struct g72x_state *); -extern int g721_encoder( - int sample, - int in_coding, - struct g72x_state *state_ptr); -extern int g721_decoder( - int code, - int out_coding, - struct g72x_state *state_ptr); -extern int g723_24_encoder( - int sample, - int in_coding, - struct g72x_state *state_ptr); -extern int g723_24_decoder( - int code, - int out_coding, - struct g72x_state *state_ptr); -extern int g723_40_encoder( - int sample, - int in_coding, - struct g72x_state *state_ptr); -extern int g723_40_decoder( - int code, - int out_coding, - struct g72x_state *state_ptr); - -#endif /* !_G72X_H */ diff --git a/utils/wxMMedia/cdbase.cpp b/utils/wxMMedia/cdbase.cpp deleted file mode 100644 index 34348d8421..0000000000 --- a/utils/wxMMedia/cdbase.cpp +++ /dev/null @@ -1,53 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// Name: sndsnd.cpp -// Purpose: wxMMedia -// Author: Guilhem Lavaux -// Created: 1997 -// Updated: 1998 -// Copyright: (C) 1997, 1998, Guilhem Lavaux -// License: wxWindows license -//////////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation -#endif -#include "wx/wxprec.h" -#include "cdbase.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -wxCDtime wxCDAudio::CDtoc::GetTrackTime(wxUint8 track) const -{ - if (track > total_time.track) { - wxCDtime dummy_time = {0, 0, 0, 0}; - return dummy_time; - } - return tracks_time[track]; -} - -wxCDtime wxCDAudio::CDtoc::GetTrackPos(wxUint8 track) const -{ - if (track > total_time.track) { - wxCDtime dummy_time = {0, 0, 0, 0}; - return dummy_time; - } - return tracks_pos[track]; -} - -bool wxCDAudio::Play(const wxCDtime& beg_play) -{ - return Play(beg_play, GetToc().GetTotalTime()); -} - -bool wxCDAudio::Play(wxUint8 beg_track, wxUint8 end_track) -{ - wxCDtime beg_play = GetToc().GetTrackPos(beg_track); - wxCDtime end_play; - - if (end_track) - end_play = GetToc().GetTrackPos(end_track); - else - end_play = GetToc().GetTotalTime(); - return Play(beg_play, end_play); -} diff --git a/utils/wxMMedia/cdbase.h b/utils/wxMMedia/cdbase.h deleted file mode 100644 index 1c254b0f12..0000000000 --- a/utils/wxMMedia/cdbase.h +++ /dev/null @@ -1,88 +0,0 @@ -// -*- c++ -*- -// ///////////////////////////////////////////////////////////////////////////// -// Name: cdbase.h -// Purpose: wxMMedia -// Author: Guilhem Lavaux -// Created: 1997 -// Updated: 1998 -// Copyright: (C) 1997, 1998, Guilhem Lavaux -// License: wxWindows license -// ///////////////////////////////////////////////////////////////////////////// -#ifndef __CDA_base_H__ -#define __CDA_base_H__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#ifdef WX_PRECOMP -#include "wx_prec.h" -#else -#include "wx/wx.h" -#endif -#include "mmtype.h" - -typedef struct wxCDtime { - wxUint8 track; - wxUint8 hour, min, sec; -} wxCDtime; - -/// -class WXDLLEXPORT wxCDAudio : public wxObject { - DECLARE_ABSTRACT_CLASS(wxCDAudio) -public: - /// - typedef enum { PLAYING, PAUSED, STOPPED } CDstatus; - /// Table of contents manager - class CDtoc { - protected: - wxCDtime *tracks_time, *tracks_pos; - wxCDtime total_time; - public: - /// - CDtoc(wxCDtime& tot_tm, wxCDtime *trks_tm, wxCDtime *trks_pos) - { tracks_time = trks_tm; total_time = tot_tm; tracks_pos = trks_pos; } - - /// Returns the length of the specified track - /** @param track track to get length */ - wxCDtime GetTrackTime(wxUint8 track) const; - /** Returns the position of the specified - @param track track to get position */ - wxCDtime GetTrackPos(wxUint8 track) const; - /// Returns the total time - inline wxCDtime GetTotalTime() const { return total_time; } - }; -public: - /// - wxCDAudio() : wxObject() {} - /// - virtual ~wxCDAudio() {} - - /// Play audio at the specified position - /** - * @param beg_play start position - * @param end_play end position - */ - virtual bool Play(const wxCDtime& beg_play, const wxCDtime& end_play) = 0; - /// Play audio from the specified to the end of the CD audio - /** - * @param beg_play start position - */ - bool Play(const wxCDtime& beg_play); - /// - bool Play(wxUint8 beg_track, wxUint8 end_track = 0); - /// Pause the audio playing - virtual bool Pause() = 0; - /// Resume a paused audio playing - virtual bool Resume() = 0; - /// Get the current CD status - virtual CDstatus GetStatus() = 0; - /// Get the current playing time - virtual wxCDtime GetTime() = 0; - /// Returns the table of contents - virtual const CDtoc& GetToc() = 0; - /// CD ok - virtual bool Ok() const = 0; -}; - -#endif diff --git a/utils/wxMMedia/cdunix.cpp b/utils/wxMMedia/cdunix.cpp deleted file mode 100644 index 07f5ea0598..0000000000 --- a/utils/wxMMedia/cdunix.cpp +++ /dev/null @@ -1,198 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// Name: cdlinux.cpp -// Purpose: wxMMedia -// Author: Guilhem Lavaux -// Created: 1997 -// Updated: 1998 -// Copyright: (C) 1997, 1998, Guilhem Lavaux -// License: wxWindows license -//////////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation "cdunix.h" -#endif - -#include -#include -#include -#include -#include - -#ifdef __linux__ -#include -#else -// For Solaris -#include -#endif - -#ifdef WX_PRECOMP -#include "wx/wxprec.h" -#else -#include "wx/wx.h" -#endif -#include "mmtype.h" -#include "cdunix.h" - -wxCDAudioLinux::wxCDAudioLinux() - : wxCDAudio(), m_fd(-1) -{ - OpenDevice("/dev/cdrom"); -} - -wxCDAudioLinux::wxCDAudioLinux(const char *dev_name) - : wxCDAudio(), m_fd(-1) -{ - OpenDevice(dev_name); -} - -wxCDAudioLinux::~wxCDAudioLinux() -{ - if (m_fd != -1) { - close(m_fd); - wxDELETE(m_trksize); - wxDELETE(m_trkpos); - } -} - -void wxCDAudioLinux::OpenDevice(const char *dev_name) -{ - struct cdrom_tocentry entry, old_entry; - struct cdrom_tochdr diskinf; - struct cdrom_msf0 *msf = &entry.cdte_addr.msf, - *old_msf = &old_entry.cdte_addr.msf; - wxCDtime *the_track; - wxCDtime tot_tm; - wxUint8 nb_tracks, i; - int hour, minute, second; - - if (m_fd != -1) - return; - - m_fd = open(dev_name, O_RDONLY); - if (m_fd == -1) { - m_toc = NULL; - return; - } - m_status = STOPPED; - - ioctl(m_fd, CDROMREADTOCHDR, &diskinf); - - nb_tracks = diskinf.cdth_trk1-diskinf.cdth_trk0+1; - m_trksize = new wxCDtime[nb_tracks+1]; - m_trkpos = new wxCDtime[nb_tracks+1]; - - old_msf->minute = 0; - old_msf->second = 0; - for (i=diskinf.cdth_trk0;i<=diskinf.cdth_trk1;i++) { - entry.cdte_track = i; - entry.cdte_format = CDROM_MSF; - ioctl(m_fd, CDROMREADTOCENTRY, &entry); - - minute = msf->minute - old_msf->minute; - second = msf->second - old_msf->second; - if (second < 0) { - minute--; - second += 60; - } - - hour = minute / 60; - minute %= 60; - - the_track = &m_trksize[i-diskinf.cdth_trk0]; - the_track->track = i-diskinf.cdth_trk0; - the_track->hour = hour; - the_track->min = minute; - the_track->sec = second; - - the_track = &m_trkpos[i-diskinf.cdth_trk0]; - the_track->track = i-diskinf.cdth_trk0; - the_track->hour = old_msf->minute / 60; - the_track->min = old_msf->minute % 60; - the_track->sec = old_msf->second; - old_entry = entry; - } - - entry.cdte_track = CDROM_LEADOUT; - entry.cdte_format = CDROM_MSF; - ioctl(m_fd, CDROMREADTOCENTRY, &entry); - - tot_tm.track = nb_tracks; - tot_tm.hour = msf->minute / 60; - tot_tm.min = msf->minute % 60; - tot_tm.sec = msf->second % 60; - - m_trksize[nb_tracks].track = nb_tracks; - minute = msf->minute - old_msf->minute; - second = msf->second - old_msf->second; - if (second < 0) { - minute--; - second += 60; - } - hour = minute / 60; - minute %= 60; - - m_trksize[nb_tracks].hour = hour; - m_trksize[nb_tracks].min = minute; - m_trksize[nb_tracks].sec = second; - m_trkpos[nb_tracks].track = nb_tracks; - m_trkpos[nb_tracks].hour = old_msf->minute / 60; - m_trkpos[nb_tracks].min = old_msf->minute % 60; - m_trkpos[nb_tracks].sec = old_msf->second; - - m_toc = new CDtoc(tot_tm, m_trksize, m_trkpos); -} - -bool wxCDAudioLinux::Play(const wxCDtime& beg_time, const wxCDtime& end_time) -{ - struct cdrom_msf track_msf; - - track_msf.cdmsf_min0 = beg_time.hour * 60 + beg_time.min; - track_msf.cdmsf_sec0 = beg_time.sec; - track_msf.cdmsf_frame0 = 0; - track_msf.cdmsf_min1 = end_time.hour * 60 + end_time.min; - track_msf.cdmsf_sec1 = end_time.sec; - track_msf.cdmsf_frame1 = 0; - return (ioctl(m_fd, CDROMPLAYMSF, &track_msf) != -1); -} - -bool wxCDAudioLinux::Pause() -{ - return (ioctl(m_fd, CDROMPAUSE, 0) != -1); -} - -bool wxCDAudioLinux::Resume() -{ - return (ioctl(m_fd, CDROMRESUME, 0) != -1); -} - -wxCDAudio::CDstatus wxCDAudioLinux::GetStatus() -{ - struct cdrom_subchnl subchnl; - ioctl(m_fd, CDROMSUBCHNL, &subchnl); - switch (subchnl.cdsc_audiostatus) { - case CDROM_AUDIO_PLAY: return PLAYING; - case CDROM_AUDIO_PAUSED: return PAUSED; - case CDROM_AUDIO_COMPLETED: return STOPPED; - } - - return STOPPED; -} - -wxCDtime wxCDAudioLinux::GetTime() -{ - wxCDtime cdtime; - struct cdrom_subchnl subchnl; - - ioctl(m_fd, CDROMSUBCHNL, &subchnl); - cdtime.track = subchnl.cdsc_trk; - cdtime.min = subchnl.cdsc_reladdr.msf.minute; - cdtime.hour = cdtime.min / 60; - cdtime.min %= 60; - cdtime.sec = subchnl.cdsc_reladdr.msf.second; - - return cdtime; -} - -wxCDAudio::CDtoc& wxCDAudioLinux::GetToc() -{ - return *m_toc; -} diff --git a/utils/wxMMedia/cdunix.h b/utils/wxMMedia/cdunix.h deleted file mode 100644 index 0f8d73b324..0000000000 --- a/utils/wxMMedia/cdunix.h +++ /dev/null @@ -1,61 +0,0 @@ -// ///////////////////////////////////////////////////////////////////////////// -// Name: cdunix.h -// Purpose: wxMMedia -// Author: Guilhem Lavaux -// Created: 1997 -// Updated: 1998 -// Copyright: (C) 1997, 1998, Guilhem Lavaux -// License: wxWindows license -// ///////////////////////////////////////////////////////////////////////////// -#ifndef __CDUNIXH__ -#define __CDUNIXH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#ifdef WX_PRECOMP -#include "wx/wxprec.h" -#else -#include "wx/wx.h" -#endif -#include "mmtype.h" -#include "cdbase.h" - -/// -class WXDLLEXPORT wxCDAudioLinux : public wxCDAudio { - DECLARE_DYNAMIC_CLASS(wxCDAudioLinux) -protected: - wxCDtime m_time; - CDstatus m_status; - CDtoc *m_toc; - int m_fd; - wxCDtime *m_trksize, *m_trkpos; -public: - /// - wxCDAudioLinux(); - /// - wxCDAudioLinux(const char *dev_name); - /// - virtual ~wxCDAudioLinux(); - - /// - virtual bool Play(const wxCDtime& beg_time, const wxCDtime& end_time); - /// - virtual bool Pause(); - /// - virtual bool Resume(); - /// - virtual CDstatus GetStatus(); - /// - virtual wxCDtime GetTime(); - /// - virtual CDtoc& GetToc(); - /// - virtual inline bool Ok() const { return (m_fd != -1); } -protected: - /// - void OpenDevice(const char *dev_name); -}; - -#endif diff --git a/utils/wxMMedia/cdwin.cpp b/utils/wxMMedia/cdwin.cpp deleted file mode 100644 index abe8469b70..0000000000 --- a/utils/wxMMedia/cdwin.cpp +++ /dev/null @@ -1,208 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// Name: cdwin.cpp -// Purpose: wxMMedia -// Author: Guilhem Lavaux -// Created: 1997 -// Updated: 1998 -// Copyright: (C) 1997, 1998, Guilhem Lavaux -// License: wxWindows license -//////////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation "cdwin.h" -#endif - -#include -#include -#include -#ifdef WX_PRECOMP -#include "wx/wxprec.h" -#else -#include "wx/wx.h" -#endif -#define WXMMEDIA_INTERNAL -#include "mmtype.h" -#include "cdbase.h" -#include "cdwin.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -wxCDAudioWin::wxCDAudioWin(void) - : wxCDAudio(), m_trksize(NULL), m_trkpos(NULL), m_ok(TRUE), m_toc(NULL) -{ - MCI_OPEN_PARMS open_struct; - MCI_SET_PARMS set_struct; - DWORD ret; - - m_internal = new CDAW_Internal; - open_struct.lpstrDeviceType = "cdaudio"; - ret = mciSendCommand(NULL, MCI_OPEN, MCI_OPEN_TYPE, - (DWORD)&open_struct); - if (ret) { - m_ok = FALSE; - return; - } - m_internal->dev_id = open_struct.wDeviceID; - - set_struct.dwTimeFormat = MCI_FORMAT_MSF; - ret = mciSendCommand(m_internal->dev_id, MCI_SET, MCI_SET_TIME_FORMAT, - (DWORD)(LPVOID)&set_struct); - - PrepareToc(); - - set_struct.dwTimeFormat = MCI_FORMAT_TMSF; - ret = mciSendCommand(m_internal->dev_id, MCI_SET, MCI_SET_TIME_FORMAT, - (DWORD)(LPVOID)&set_struct); -} - -wxCDAudioWin::~wxCDAudioWin(void) -{ - if (m_ok) { - mciSendCommand(m_internal->dev_id, MCI_CLOSE, 0, NULL); - delete m_toc; - delete[] m_trksize; - delete[] m_trkpos; - } - delete m_internal; -} - -void wxCDAudioWin::PrepareToc(void) -{ - MCI_STATUS_PARMS status_struct; - MCI_SET_PARMS set_struct; - wxUint16 i, nb_m_trksize; - wxCDtime total_time, *trk; - DWORD ret, tmem; - - if (!m_ok) - return; - - status_struct.dwItem = MCI_STATUS_NUMBER_OF_TRACKS; - ret = mciSendCommand(m_internal->dev_id, MCI_STATUS, MCI_STATUS_ITEM, - (DWORD)&status_struct); - nb_m_trksize = status_struct.dwReturn; - - m_trksize = new wxCDtime[nb_m_trksize+1]; - m_trkpos = new wxCDtime[nb_m_trksize+1]; - - status_struct.dwItem = MCI_STATUS_LENGTH; - ret = mciSendCommand(m_internal->dev_id, MCI_STATUS, MCI_STATUS_ITEM, - (DWORD)&status_struct); - total_time.track = nb_m_trksize; - tmem = status_struct.dwReturn; - total_time.min = MCI_MSF_MINUTE(tmem); - total_time.sec = MCI_MSF_SECOND(tmem); - total_time.hour = total_time.min / 60; - total_time.min %= 60; - - for (i=1;i<=nb_m_trksize;i++) { - status_struct.dwItem = MCI_STATUS_POSITION; - status_struct.dwTrack = i; - ret = mciSendCommand(m_internal->dev_id, MCI_STATUS, - MCI_STATUS_ITEM | MCI_TRACK, - (DWORD)(LPVOID)&status_struct); - tmem = status_struct.dwReturn; - - trk = &m_trkpos[i]; - trk->track = i; - trk->min = MCI_MSF_MINUTE(tmem); - trk->sec = MCI_MSF_SECOND(tmem); - trk->hour = trk->min / 60; - trk->min %= 60; - - status_struct.dwItem = MCI_STATUS_LENGTH; - status_struct.dwTrack = i; - ret = mciSendCommand(m_internal->dev_id, MCI_STATUS, - MCI_STATUS_ITEM | MCI_TRACK, - (DWORD)(LPVOID)&status_struct); - tmem = status_struct.dwReturn; - - trk = &m_trksize[i]; - trk->track = i; - trk->min = MCI_MSF_MINUTE(tmem); - trk->sec = MCI_MSF_SECOND(tmem); - trk->hour = trk->min / 60; - trk->min %= 60; - } - - m_toc = new CDtoc(total_time, m_trksize, m_trkpos); -} - -bool wxCDAudioWin::Play(const wxCDtime& beg_time, const wxCDtime& end_time) -{ - DWORD tmsf; - MCI_PLAY_PARMS play_struct; - - if (!m_ok) - return FALSE; - - tmsf = MCI_MAKE_TMSF(beg_time.track, beg_time.min, - beg_time.sec, 0); - play_struct.dwFrom = tmsf; - tmsf = MCI_MAKE_TMSF(end_time.track, end_time.min, - end_time.sec, 0); - play_struct.dwTo = tmsf; - - mciSendCommand(m_internal->dev_id, MCI_PLAY, 0, (DWORD)&play_struct); - return TRUE; -} - -bool wxCDAudioWin::Pause(void) -{ - if (!m_ok) - return FALSE; - - return (mciSendCommand(m_internal->dev_id, MCI_PAUSE, 0, 0) == 0); -} - -bool wxCDAudioWin::Resume(void) -{ - if (!m_ok) - return FALSE; - - return (mciSendCommand(m_internal->dev_id, MCI_RESUME, 0, 0) == 0); -} - -wxCDAudio::CDstatus wxCDAudioWin::GetStatus(void) -{ - MCI_STATUS_PARMS status_struct; - - if (!m_ok) - return STOPPED; - - status_struct.dwItem = MCI_STATUS_MODE; - mciSendCommand(m_internal->dev_id, MCI_STATUS, MCI_STATUS_ITEM, - (DWORD)&status_struct); - switch (status_struct.dwReturn) { - case MCI_MODE_PAUSE: - return PAUSED; - case MCI_MODE_PLAY: - return PLAYING; - } - return STOPPED; -} - -wxCDtime wxCDAudioWin::GetTime(void) -{ - MCI_STATUS_PARMS status_struct; - wxCDtime cd_time = {-1, -1, -1, -1}; - - if (!m_ok) - return cd_time; - - status_struct.dwItem = MCI_STATUS_TIME_FORMAT; - mciSendCommand(m_internal->dev_id, MCI_STATUS, MCI_STATUS_ITEM, - (DWORD)&status_struct); - cd_time.track = MCI_TMSF_TRACK(status_struct.dwReturn); - cd_time.min = MCI_TMSF_MINUTE(status_struct.dwReturn); - cd_time.sec = MCI_TMSF_SECOND(status_struct.dwReturn); - cd_time.hour = cd_time.min / 60; - cd_time.min %= 60; - return cd_time; -} - -wxCDAudio::CDtoc& wxCDAudioWin::GetToc(void) -{ - return *m_toc; -} diff --git a/utils/wxMMedia/cdwin.h b/utils/wxMMedia/cdwin.h deleted file mode 100644 index 21db70ea9c..0000000000 --- a/utils/wxMMedia/cdwin.h +++ /dev/null @@ -1,67 +0,0 @@ -// ///////////////////////////////////////////////////////////////////////////// -// Name: cdwin.h -// Purpose: wxMMedia -// Author: Guilhem Lavaux -// Created: 1997 -// Updated: 1998 -// Copyright: (C) 1997, 1998, Guilhem Lavaux -// License: wxWindows license -// ///////////////////////////////////////////////////////////////////////////// -#ifndef __CDA_win_H__ -#define __CDA_win_H__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#ifdef WX_PRECOMP -#include "wx/wxprec.h" -#else -#include "wx/wx.h" -#endif -#include "mmtype.h" -#include "cdbase.h" - -#ifdef WXMMEDIA_INTERNAL -#include -#include -typedef struct CDAW_Internal { - MCIDEVICEID dev_id; -} CDAW_Internal; -#endif - -/// -class WXDLLEXPORT wxCDAudioWin : public wxCDAudio { - DECLARE_DYNAMIC_CLASS(wxCDAudioWin) -protected: - struct CDAW_Internal *m_internal; - wxCDtime *m_trksize, *m_trkpos; - CDtoc *m_toc; - bool m_ok; -public: - /// - wxCDAudioWin(void); - /// - wxCDAudioWin(const char *dev_name); - /// - virtual ~wxCDAudioWin(void); - - /// - virtual bool Play(const wxCDtime& beg_time, const wxCDtime& end_time); - /// - virtual bool Pause(void); - /// - virtual bool Resume(void); - /// - virtual CDstatus GetStatus(void); - /// - virtual wxCDtime GetTime(void); - /// - virtual CDtoc& GetToc(void); - /// - virtual inline bool Ok(void) const { return m_ok; } -protected: - void PrepareToc(); -}; - -#endif diff --git a/utils/wxMMedia/makefile.b32 b/utils/wxMMedia/makefile.b32 deleted file mode 100644 index 5a396a0522..0000000000 --- a/utils/wxMMedia/makefile.b32 +++ /dev/null @@ -1,91 +0,0 @@ -# -# File: makefile.b32 -# Author: Patrick Halke, modified by Guilhem Lavaux -# Created: 1997 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile : Builds 32bit wxstring library for Windows 3.1 -# and Borland C++ 4.x - -WXDIR = $(WXWIN) - -!include $(WXDIR)\src\makeb32.env - -WXLIBDIR = $(WXDIR)\lib -WXLIB = $(WXDIR)\lib\wx32.lib -WXINC = $(WXDIR)\include\msw -WXBASESRC = $(WXDIR)\src\base -WXBASEINC = $(WXDIR)\include\base -LIBS=$(WXLIB) cw32 import32 ole2w32 - -!ifndef DEBUG -DEBUG=0 -!endif - -!if "$(FINAL)" == "0" -LINKFLAGS=/v /Tpe /L$(WXLIBDIR);$(BCCDIR)\lib -OPT = -Od -DEBUG_FLAGS= -v -DDEBUG=$(DEBUG) -!else -LINKFLAGS=/Tpe /L$(WXLIBDIR);$(BCCDIR)\lib -OPT = -O2 -DEBUG_FLAGS = -DDEBUG=$(DEBUG) -!endif - -CPPFLAGS=$(DEBUG_FLAGS) $(OPT) @$(CFG) - -LIBTARGET= $(WXLIBDIR)\wxmmedia.lib - -.c.obj: - bcc32 $(CPPFLAGS) -P- -c {$< } - -OBJECTS = sndsnd.$(OBJSUFF) sndwav.$(OBJSUFF) vidbdrv.$(OBJSUFF) \ - sndfile.$(OBJSUFF) sndwin.$(OBJSUFF) mmdata.$(OBJSUFF) \ - mmfile.$(OBJSUFF) mmsolve.$(OBJSUFF) sndfrag.$(OBJSUFF) \ - cdbase.$(OBJSUFF) cdwin.$(OBJSUFF) vidwin.$(OBJSUFF) \ - mmriff.$(OBJSUFF) - -all: $(LIBTARGET) - -$(LIBTARGET): $(OBJECTS) - erase $(LIBTARGET) - tlib $(LIBTARGET) /P32 @&&! -+$(OBJECTS:.obj =.obj +) -! - -sndsnd.$(OBJSUFF): sndsnd.$(SRCSUFF) sndsnd.h - -sndwin.$(OBJSUFF): sndwin.$(SRCSUFF) sndwin.h - -sndfile.$(OBJSUFF): sndfile.$(SRCSUFF) sndfile.h - -sndwav.$(OBJSUFF): sndwav.$(SRCSUFF) sndwav.h - -sndfrag.$(OBJSUFF): sndfrag.$(SRCSUFF) sndfrag.h - -mmdata.$(OBJSUFF): mmdata.$(SRCSUFF) - -mmfile.$(OBJSUFF): mmfile.$(SRCSUFF) mmfile.h - -mmsolve.$(OBJSUFF): mmsolve.$(SRCSUFF) mmsolve.h - -vidbdrv.$(OBJSUFF): vidbdrv.$(SRCSUFF) vidbdrv.h - -cdbase.$(OBJSUFF): cdbase.$(SRCSUFF) cdbase.h - -cdwin.$(OBJSUFF): cdwin.$(SRCSUFF) cdwin.h - -vidwin.$(OBJSUFF): vidwin.$(SRCSUFF) vidwin.h - -mmriff.$(OBJSUFF): mmriff.$(SRCSUFF) mmriff.h - -clean: - -erase *.obj - -erase $(LIBTARGET) - -erase *.exe - -erase *.res - -erase *.map - -erase *.rws diff --git a/utils/wxMMedia/makefile.nt b/utils/wxMMedia/makefile.nt deleted file mode 100644 index 6c7808adb9..0000000000 --- a/utils/wxMMedia/makefile.nt +++ /dev/null @@ -1,90 +0,0 @@ -# -# File: makefile.nt -# Author: Stefan Hammes (stefan.hammes@urz.uni-heidelberg.de) / Julian Smart / Petr Houser (1996) -# Created: 1995 -# Updated:=09 -# -# "%W% %G%" -# -# Makefile : Builds wxSock library for Windows NT / Win95 - -# Change WXDIR or WXWIN to wherever wxWindows is found -!include <..\..\src\ntwxwin.mak> - -WXMMEDDIR = $(WXDIR)\utils\wxmmedia -WXMMEDINC = $(WXMMEDDIR) -WXMMEDLIB = $(WXDIR)\lib\wxmmedia.lib -INC=-I$(WXBASEINC) -I$(WXINC) -I$(WXMMEDINC) - -WXLIB = $(WXDIR)\lib\wx.lib - -LIBS=$(WXSOCKLIB) $(LIBS) -#LIBS=$(WXLIB) $(WXSTRINGLIB) oldnames libw llibcew llibce commdlg shell - -OBJECTS = mmdata.obj mmfile.obj sndfile.obj sndsnd.obj sndwin.obj\ - sndwav.obj sndfrag.obj vidbase.obj - -all: $(WXMMEDLIB) - -wx: - cd $(WXDIR)\src\msw - nmake -f makefile.nt - cd $(ITSYDIR) - -demo: - -$(WXMMEDLIB): $(OBJECTS) - -erase $(WXSOCKLIB) - $(implib) @<< --out:$(WXSOCKLIB) --machine:$(CPU) -$(OBJECTS) -<< - -MMdata.obj: MMdata.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -MMfile.obj: MMfile.$(SRCSUFF) - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -SNDfile.obj: SNDfile.$(SRCSUFF) SNDfile.h - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -SNDwav.obj: SNDwav.$(SRCSUFF) SNDwav.h - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -SNDwin.obj: SNDwin.$(SRCSUFF) SNDwin.h - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -SNDsnd.obj: SNDsnd.$(SRCSUFF) SNDsnd.h - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -SNDfrag.obj: SNDfrag.$(SRCSUFF) SNDfrag.h - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -VIDbase.obj: VIDbase.$(SRCSUFF) VIDbase.h - cl @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -clean: - -erase *.obj - -erase *.exe - -erase *.lib - -erase *.res - -erase *.sbr - -erase *.pdb diff --git a/utils/wxMMedia/mmdata.cpp b/utils/wxMMedia/mmdata.cpp deleted file mode 100644 index a89cae04e4..0000000000 --- a/utils/wxMMedia/mmdata.cpp +++ /dev/null @@ -1,94 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// Name: mmdata.cpp -// Purpose: wxMMedia -// Author: Guilhem Lavaux -// Created: 1997 -// Updated: 1998 -// Copyright: (C) 1997, 1998, Guilhem Lavaux -// License: wxWindows license -//////////////////////////////////////////////////////////////////////////////// -#include "wx/wxprec.h" - -#include "mmfile.h" - -#include "sndsnd.h" -#include "sndfrmt.h" -#if defined(__UNIX__) -#include "snduss.h" -#endif -#include "sndfrag.h" -#include "sndfile.h" -#include "sndwav.h" -#include "sndaiff.h" -#include "sndau.h" -#include "sndpcm.h" -#include "sndmulaw.h" -#include "vidbase.h" -#if defined(__X__) || defined(__WXGTK__) -#include "vidxanm.h" -#endif -#ifdef __WINDOWS__ -#include "sndwin.h" -#include "cdwin.h" -#include "vidwin.h" -#endif -#include "cdbase.h" -#ifdef __UNIX__ -#include "cdunix.h" -#endif -#include "mmsolve.h" -// #include "midfile.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -IMPLEMENT_ABSTRACT_CLASS(wxSound, wxObject) -IMPLEMENT_ABSTRACT_CLASS(wxSndBuffer, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxSndSimpleBuffer, wxSndBuffer) - -IMPLEMENT_ABSTRACT_CLASS(wxSoundCodec, wxObject) -IMPLEMENT_DYNAMIC_CLASS(wxSoundPcmCodec, wxSoundCodec) -IMPLEMENT_DYNAMIC_CLASS(wxSoundMulawCodec, wxSoundCodec) - -#ifdef __UNIX__ -IMPLEMENT_DYNAMIC_CLASS(wxUssSound, wxSound) -#endif -#ifdef __WINDOWS__ -IMPLEMENT_DYNAMIC_CLASS(wxWinSound, wxSound) -#endif - -IMPLEMENT_ABSTRACT_CLASS(wxSndFileCodec, wxMMediaFile) -IMPLEMENT_DYNAMIC_CLASS(wxSndWavCodec, wxSndFileCodec) -IMPLEMENT_DYNAMIC_CLASS(wxSndAuCodec, wxSndFileCodec) -IMPLEMENT_DYNAMIC_CLASS(wxSndAiffCodec, wxSndFileCodec) - -IMPLEMENT_ABSTRACT_CLASS(wxVideoBaseDriver, wxMMediaFile) -IMPLEMENT_DYNAMIC_CLASS(wxVideoOutput, wxWindow) -#if defined(__X__) || defined(__WXGTK__) -IMPLEMENT_DYNAMIC_CLASS(wxVideoXANIM, wxVideoBaseDriver) -#endif -#ifdef __WINDOWS__ -IMPLEMENT_DYNAMIC_CLASS(wxVideoWindows, wxVideoBaseDriver) -#endif - -IMPLEMENT_ABSTRACT_CLASS(wxCDAudio, wxObject) -#ifdef linux -IMPLEMENT_DYNAMIC_CLASS(wxCDAudioLinux, wxCDAudio) -#else -IMPLEMENT_DYNAMIC_CLASS(wxCDAudioWin, wxCDAudio) -#endif - -// IMPLEMENT_ABSTRACT_CLASS(wxMidiFile, wxObject) - -wxMediaFileSolve::wxMFileList *wxMediaFileSolve::m_first = NULL; -wxUint8 wxMediaFileSolve::m_devnum = 0; - -MMD_REGISTER_FILE("audio/x-wav", "Wav Player", wxSndWavCodec, "wav") -MMD_REGISTER_FILE("audio/x-aiff", "Aiff Player", wxSndAiffCodec, "aif") -MMD_REGISTER_FILE("audio/x-au", "Sun Audio File Player", wxSndAuCodec, "au") -#if defined(__X__) || defined(__WXGTK__) -MMD_REGISTER_FILE("video/*", "Video Player", wxVideoXANIM, "mov") -#else -MMD_REGISTER_FILE("video/avi", "AVI Player", wxVideoWindows, "avi") -#endif diff --git a/utils/wxMMedia/mmedia.h b/utils/wxMMedia/mmedia.h deleted file mode 100644 index a530b7bc36..0000000000 --- a/utils/wxMMedia/mmedia.h +++ /dev/null @@ -1,31 +0,0 @@ -// ///////////////////////////////////////////////////////////////////////////// -// Name: mmedia.h -// Purpose: wxMMedia -// Author: Guilhem Lavaux -// Created: 1997 -// Updated: 1998 -// Copyright: (C) 1997, 1998, Guilhem Lavaux -// License: wxWindows license -// ///////////////////////////////////////////////////////////////////////////// -#ifndef __MMEDIA_H__ -#define __MMEDIA_H__ - -#ifdef __WINDOWS__ - -#include "sndwin.h" -#define wxSoundDevice wxWinSound - -#include "vidwin.h" -#define wxVideoDevice wxVideoWindows - -#else - -#include "snduss.h" -#define wxSoundDevice wxUssSound - -#include "vidxanm.h" -#define wxVideoDevice wxVideoXANIM - -#endif - -#endif diff --git a/utils/wxMMedia/mmfile.cpp b/utils/wxMMedia/mmfile.cpp deleted file mode 100644 index 011726fc3a..0000000000 --- a/utils/wxMMedia/mmfile.cpp +++ /dev/null @@ -1,194 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// Name: mmfile.cpp -// Purpose: wxMMedia -// Author: Guilhem Lavaux -// Created: 1997 -// Updated: 1998 -// Copyright: (C) 1997, 1998, Guilhem Lavaux -// License: wxWindows license -//////////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation -#endif -#ifdef WX_PRECOMP -#include "wx_prec.h" -#else -#include "wx/wx.h" -#endif -#include -#include -#include - -#include "mmfile.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -wxMMediaFile::wxMMediaFile() - : m_istream(NULL), m_i_temp(NULL), m_ostream(NULL), m_o_temp(NULL), - m_tmpfname((char *)NULL), m_mfname((char *)NULL), - m_seekable(FALSE) -{ -} - -wxMMediaFile::wxMMediaFile(wxOutputStream& os, bool seekable) - : m_istream(NULL), m_i_temp(NULL), m_ostream(&os), m_o_temp(NULL), - m_tmpfname((char *)NULL), m_mfname((char *)NULL), - m_seekable(seekable) -{ -} - -wxMMediaFile::wxMMediaFile(wxInputStream& is, bool preload, bool seekable) - : m_istream(&is), m_i_temp(NULL), m_ostream(NULL), m_o_temp(NULL), - m_tmpfname((char *)NULL), m_mfname((char *)NULL), - m_seekable(seekable) -{ -/* - if (preload) { - wxMemoryStream *tmpstream = new wxMemoryStream(); - - m_o_temp = tmpstream; - m_i_temp = tmpstream; - - m_o_temp->Write(is); - } -*/ -} - -wxMMediaFile::wxMMediaFile(const wxString& fname) - : m_istream(NULL), m_i_temp(NULL), m_ostream(NULL), m_o_temp(NULL), - m_tmpfname((char *)NULL), m_mfname(fname), - m_seekable(TRUE) -{ - wxFileStream *s = new wxFileStream(fname); - - m_mfname = fname; - m_istream = s; - m_ostream = s; -} - -void wxMMediaFile::SetFile(wxInputStream& str, bool preload, bool seekable) -{ - CleanUpPrevious(); - m_istream = &str; - m_ostream = NULL; - m_seekable = seekable; - -/* - if (preload) { - wxMemoryStream *tmpstream = new wxMemoryStream(); - - m_i_temp = tmpstream; - m_o_temp = tmpstream; - - m_o_temp->Write(str); - } -*/ -} - -void wxMMediaFile::SetFile(wxOutputStream& str, bool seekable) -{ - CleanUpPrevious(); - m_ostream = &str; - m_istream = NULL; - m_seekable = seekable; -} - -void wxMMediaFile::SetFile(const wxString& fname) -{ - CleanUpPrevious(); - - m_mfname = fname; - wxFileStream *f = new wxFileStream(fname); - - SetFile(*f, FALSE, TRUE); -} - -void wxMMediaFile::CleanUpPrevious() -{ - if (m_i_temp) { - m_i_temp->SeekI(0); - - if (m_ostream) - m_ostream->Write(*m_i_temp); - - delete m_i_temp; // Only one delete because m_tmpo* and m_tmpi* are linked - - if (m_tmpfname) - wxRemoveFile(m_tmpfname); - } - - if (!m_mfname.IsNull() && m_mfname != "") - delete m_istream; - - m_i_temp = NULL; - m_o_temp = NULL; - m_istream = NULL; - m_ostream = NULL; -} - -wxMMediaFile::~wxMMediaFile() -{ - CleanUpPrevious(); -} - -wxMMtime wxMMediaFile::GetLength() -{ - wxMMtime mm_time = {-1, 0, 0}; - return mm_time; -} - -wxMMtime wxMMediaFile::GetPosition() -{ - wxMMtime mm_time = {0, 0, 0}; - return mm_time; -} - -wxInputStream *wxMMediaFile::GetIRawData() -{ - if (!m_istream) - return NULL; - - if (!m_seekable && !m_i_temp) - CacheIO(); - - return (m_i_temp) ? m_i_temp : m_istream; -} - -wxOutputStream *wxMMediaFile::GetORawData() -{ - if (!m_ostream) - return NULL; - - if (!m_seekable && !m_i_temp) - CacheIO(); - - return (m_o_temp) ? m_o_temp : m_ostream; -} - -wxString wxMMediaFile::GetCurrentFile() -{ - if (!m_istream && !m_ostream) - return wxString((char *)NULL); - - if (!m_mfname && !m_i_temp) - CacheIO(); - - return (!m_tmpfname.IsEmpty()) ? m_tmpfname : m_mfname; -} - -void wxMMediaFile::CacheIO() -{ - if ((!m_istream && !m_ostream) || m_i_temp) - return; - - m_tmpfname = wxGetTempFileName("mmd"); - - wxFileStream *tmpstream = new wxFileStream(m_tmpfname); - m_i_temp = tmpstream; - m_o_temp = tmpstream; - - if (m_istream) - tmpstream->wxOutputStream::Write(*m_istream); -} diff --git a/utils/wxMMedia/mmfile.h b/utils/wxMMedia/mmfile.h deleted file mode 100644 index e6a3ccd20e..0000000000 --- a/utils/wxMMedia/mmfile.h +++ /dev/null @@ -1,89 +0,0 @@ -// ///////////////////////////////////////////////////////////////////////////// -// Name: mmfile.h -// Purpose: wxMMedia -// Author: Guilhem Lavaux -// Created: 1997 -// Updated: 1998 -// Copyright: (C) 1997, 1998, Guilhem Lavaux -// License: wxWindows license -// ///////////////////////////////////////////////////////////////////////////// -#ifndef __MMD_file_H__ -#define __MMD_file_H__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/string.h" -#include "wx/stream.h" -#include "mmtype.h" - -/// -typedef enum { - wxMMFILE_NOERROR, - wxMMFILE_INVALID, - wxMMFILE_EOF -} /// - wxMMFileError; - -typedef struct { - wxInt8 hours; - wxUint8 minutes, seconds; -} wxMMtime; - -/// Common base class for multimedia file. -class wxMMediaFile { -public: - wxMMediaFile(); - /// - wxMMediaFile(wxInputStream& is, bool preload, bool seekable); - /// - wxMMediaFile(wxOutputStream& is, bool seekable); - /// - wxMMediaFile(const wxString& fname); - /// - virtual ~wxMMediaFile(); - - /// - wxInputStream *GetIRawData(); - wxOutputStream *GetORawData(); - /// - wxString GetCurrentFile(); - - /// - virtual void SetFile(wxInputStream& is, - bool preload = FALSE, bool seekable = FALSE); - /// - virtual void SetFile(wxOutputStream& is, bool seekable = FALSE); - /// - void SetFile(const wxString& fname); - - /// - wxMMFileError GetFileError() const { return m_mmerror; } - /// - virtual wxMMtime GetLength(); - /// - virtual wxMMtime GetPosition(); - /// - virtual bool StartPlay() = 0; - /// - virtual void StopPlay() = 0; -protected: - /// - wxMMFileError m_mmerror; - /// - wxInputStream *m_istream, *m_i_temp; - /// - wxOutputStream *m_ostream, *m_o_temp; - /// - wxString m_tmpfname, m_mfname; - /// - bool m_seekable; - - /// - void CacheIO(); - /// - void CleanUpPrevious(); -}; - -#endif diff --git a/utils/wxMMedia/mmriff.cpp b/utils/wxMMedia/mmriff.cpp deleted file mode 100644 index 10c8188195..0000000000 --- a/utils/wxMMedia/mmriff.cpp +++ /dev/null @@ -1,215 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// Name: mmriff.cpp -// Purpose: wxMMedia -// Author: Guilhem Lavaux -// Created: 1997 -// Updated: 1998 -// Copyright: (C) 1997, 1998, Guilhem Lavaux -// License: wxWindows license -//////////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation "mmriff.h" -#endif - -#ifdef WX_PRECOMP -#include "wx_prec.h" -#else -#include "wx/wx.h" -#endif -#include "mmfile.h" -#include "mmriff.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -wxRiffCodec::wxRiffCodec() : - riff_i_stream(NULL), riff_o_stream(NULL), chunk_length(INVALID_CHUNK_LEN) -{ -} - -wxRiffCodec::wxRiffCodec(wxInputStream& s) : - riff_i_stream(&s), riff_o_stream(NULL), chunk_length(INVALID_CHUNK_LEN) -{ -} - -wxRiffCodec::wxRiffCodec(wxOutputStream& s) : - riff_i_stream(NULL), riff_o_stream(&s), chunk_length(INVALID_CHUNK_LEN) -{ -} - -wxRiffCodec::~wxRiffCodec() -{ -} - -bool wxRiffCodec::RiffReset(wxUint8 mode) -{ - switch (mode) { - case RIFF_READ: - if (!riff_i_stream) - return FALSE; - riff_i_stream->SeekI(0); - chunk_length = INVALID_CHUNK_LEN; - return TRUE; - case RIFF_WRITE: - if (!riff_o_stream) - return FALSE; - riff_o_stream->SeekO(0); - chunk_length = INVALID_CHUNK_LEN; - return TRUE; - } - return FALSE; -} - -bool wxRiffCodec::ReadData(void *data, wxUint32 size) -{ - if (!riff_i_stream) - return FALSE; - - if (chunk_length != INVALID_CHUNK_LEN && (wxUint32)chunk_length < size) { - riff_error = wxMMFILE_EOF; - return FALSE; - } - if (chunk_length != INVALID_CHUNK_LEN) - chunk_length -= size; - - bool ret = (riff_i_stream->Read((char *)data, size).LastRead() == size); - - return ret; -} - -bool wxRiffCodec::WriteData(void *data, wxUint32 size) -{ - if (!riff_o_stream) - return FALSE; - - if (chunk_length < size) { - riff_error = wxMMFILE_EOF; - return FALSE; - } - chunk_length -= size; - - riff_o_stream->Write(data, size); - - return TRUE; -} - -bool wxRiffCodec::Read32(wxUint32& i32) -{ - wxUint8 i8[4]; - - if (!ReadData(i8, 4)) - return FALSE; - - i32 = i8[0]; - i32 |= ((wxUint32)i8[1]) << 8; - i32 |= ((wxUint32)i8[2]) << 16; - i32 |= ((wxUint32)i8[3]) << 24; - - return TRUE; -} - -bool wxRiffCodec::Write32(wxUint32 i32) -{ - wxUint8 i8[4]; - - i8[0] = i32 & 0xff; - i8[1] = (i32 >> 8) & 0xff; - i8[2] = (i32 >> 16) & 0xff; - i8[3] = (i32 >> 24) & 0xff; - - if (!WriteData(i8, 4)) - return FALSE; - - return TRUE; -} - -bool wxRiffCodec::Read16(wxUint16& i16) -{ - wxUint8 i8[2]; - - if (!ReadData(i8, 2)) - return FALSE; - - i16 = i8[0]; - i16 |= ((wxUint16)i8[1]) << 8; - - return TRUE; -} - -bool wxRiffCodec::Write16(wxUint16 i16) -{ - wxUint8 i8[2]; - - i8[0] = i16 & 0xff; - i8[1] = (i16 >> 8) & 0xff; - - if (!WriteData(i8, 2)) - return FALSE; - - return TRUE; -} - -bool wxRiffCodec::Skip(wxUint32 skip) -{ - if (!riff_i_stream || (chunk_length != INVALID_CHUNK_LEN && (wxInt32)skip > chunk_length)) - return FALSE; - - if (chunk_length != INVALID_CHUNK_LEN) - chunk_length -= skip; - riff_i_stream->SeekI(skip, wxFromCurrent); - - return TRUE; -} - -bool wxRiffCodec::CreateChunk(const wxString& name, wxUint32 size) -{ - if (!riff_o_stream || name.Length() != 4) - return FALSE; - - if (riff_o_stream->Write(name.GetData(), 4).LastError()) { - riff_error = wxMMFILE_EOF; - return FALSE; - } - - chunk_length = size+4; - - return Write32(size); -} - -bool wxRiffCodec::FindChunk(const wxString& name, bool from_here) -{ - char buf[5]; - wxString str2; - - if (!riff_i_stream) - return FALSE; - - if (chunk_length != INVALID_CHUNK_LEN && !from_here) - Skip(chunk_length); - while (1) { - if (riff_i_stream->Read(buf, 4).LastError()) { - riff_error = wxMMFILE_EOF; - return FALSE; - } - - chunk_length = INVALID_CHUNK_LEN; - if (!Read32(chunk_length)) { - riff_error = wxMMFILE_EOF; - return FALSE; - } - - buf[4] = 0; - str2 = buf; - if ((!name.IsNull()) && str2 != name) { - Skip(chunk_length); - continue; - } - - m_chunk = str2; - - return TRUE; - } - - return TRUE; -} diff --git a/utils/wxMMedia/mmriff.h b/utils/wxMMedia/mmriff.h deleted file mode 100644 index 5ea5395277..0000000000 --- a/utils/wxMMedia/mmriff.h +++ /dev/null @@ -1,81 +0,0 @@ -// ///////////////////////////////////////////////////////////////////////////// -// Name: mmriff.h -// Purpose: wxMMedia -// Author: Guilhem Lavaux -// Created: 1998 -// Updated: -// Copyright: (C) 1998, Guilhem Lavaux -// License: wxWindows license -// ///////////////////////////////////////////////////////////////////////////// -/* Real -*- C++ -*- */ -#ifndef __MM_riff_H__ -#define __MM_riff_H__ -#ifdef __GNUG__ -#pragma interface -#endif - -#include "mmtype.h" -#include "mmfile.h" - -#define RIFF_READ 0 -#define RIFF_WRITE 1 -#define INVALID_CHUNK_LEN ((wxUint32)-1) - -/// -class wxRiffCodec { -public: - /// - wxRiffCodec(); - /// - wxRiffCodec(wxOutputStream& s); - /// - wxRiffCodec(wxInputStream& s); - /// - virtual ~wxRiffCodec(); - - /// - void SetFile(wxInputStream& s) { cout << "RIFF:SetFile(i)" << endl; riff_i_stream = &s; riff_o_stream = NULL; } - /// - void SetFile(wxOutputStream& s) { cout << "RIFF::SetFile(o)" << endl; riff_i_stream = NULL; riff_o_stream = &s; } - - /// - bool Read32(wxUint32& i32); - /// - bool Read16(wxUint16& i16); - /// - bool ReadData(void *data, wxUint32 size); - /// - bool Skip(wxUint32 skip); - - /// - bool Write32(wxUint32 i32); - /// - bool Write16(wxUint16 i16); - /// - bool WriteData(void *data, wxUint32 size); - - /// - inline wxUint32 GetChunkLength() const { return chunk_length; } - /// - inline const wxString& GetChunkName() const { return m_chunk; } - - /// - bool RiffReset(wxUint8 state); - - /// - bool FindChunk(const wxString& name = "", bool from_here = FALSE); - /// - bool CreateChunk(const wxString& name, wxUint32 chunk_size); - - /// - inline wxMMFileError GetError() const { return riff_error; } - -protected: - wxInputStream *riff_i_stream; - wxOutputStream *riff_o_stream; - wxUint32 chunk_length; - wxMMFileError riff_error; - wxString m_chunk; -}; - -#endif diff --git a/utils/wxMMedia/mmsolve.cpp b/utils/wxMMedia/mmsolve.cpp deleted file mode 100644 index a8cc35eaa1..0000000000 --- a/utils/wxMMedia/mmsolve.cpp +++ /dev/null @@ -1,124 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// Name: mmsolve.h -// Purpose: wxMMedia -// Author: Guilhem Lavaux -// Created: 1997 -// Updated: 1998 -// Copyright: (C) 1997, 1998, Guilhem Lavaux -// License: wxWindows license -//////////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation -#endif -#include "mmsolve.h" - -wxMMediaFile *wxMediaFileSolve::ByExtension(const wxString& filename) -{ - wxMFileList *list = m_first; - wxString tmp, f_ext; - int pos = filename.Find('.', TRUE)+1; - - tmp = filename; - f_ext = tmp(pos, filename.Length()-pos); - - printf("f_ext = %s\n", f_ext.GetData()); - while (list) { - printf("list->ext = %s\n", list->ext.GetData()); - if (list->ext.CompareTo(f_ext) == 0) { - wxMMediaFile *mmf = list->creator(); - return mmf; - } - list = list->next; - } - return NULL; -} - -wxMMediaFile *wxMediaFileSolve::ByName(const wxString& name) -{ - wxMFileList *list = m_first; - - while (list) { - if (list->name == name) - return (wxMMediaFile *)(list->creator()); - list = list->next; - } - return NULL; -} - -bool wxMatchMimeType(const wxString& mime_obj, const wxString& type) -{ -#ifdef USE_GNU_WXSTRING - wxString mime2_obj = mime_obj; - wxString type2 = type; -#define mime_obj mime2_obj -#define type type2 -#endif - - if (mime_obj.Find('*') != -1) { - wxString part_str1[2], part_str2[2]; - - part_str1[0] = mime_obj.BeforeFirst('/'); - part_str1[1] = mime_obj.AfterFirst('/'); - - part_str2[0] = type.BeforeFirst('/'); - part_str2[1] = type.AfterFirst('/'); - - if (part_str1[0] == "*" && part_str1[1] == "*") - return TRUE; - - if (part_str1[0] == "*" && part_str1[1] == part_str2[1]) - return TRUE; - - if (part_str1[1] == "*" && part_str1[0] == part_str2[1]) - return TRUE; - - return FALSE; - } - if (mime_obj == type) - return TRUE; - return FALSE; -} - -wxMMediaFile *wxMediaFileSolve::ByType(const wxString& type) -{ - wxMFileList *list = m_first; - - while (list) { - if (wxMatchMimeType(*(list->mime_type), type)) - return (wxMMediaFile *)(list->creator()); - list = list->next; - } - return NULL; -} - -void wxMediaFileSolve::ListMDevice(wxString*& names, wxUint8& devices) -{ - wxMFileList *list = m_first; - wxUint8 d = 0; - - if (!m_devnum) { - names = NULL; - return; - } - devices = m_devnum; - names = new wxString[devices]; - - while (list) { - names[d++] = list->name; - list = list->next; - } -} - -wxMMDfileRegister::wxMMDfileRegister(wxMediaFileCreator cbk, - char *mtype, char *ext, char *name) -{ - wxMediaFileSolve::wxMFileList *entry = new wxMediaFileSolve::wxMFileList; - - entry->next = wxMediaFileSolve::m_first; - entry->creator = cbk; - entry->mime_type = wxString(mtype); - entry->name = wxString(name); - entry->ext = wxString(ext); - wxMediaFileSolve::m_devnum++; - wxMediaFileSolve::m_first = entry; -} diff --git a/utils/wxMMedia/mmsolve.h b/utils/wxMMedia/mmsolve.h deleted file mode 100644 index 04ef8f8080..0000000000 --- a/utils/wxMMedia/mmsolve.h +++ /dev/null @@ -1,92 +0,0 @@ -// ///////////////////////////////////////////////////////////////////////////// -// Name: mmsolve.h -// Purpose: wxMMedia -// Author: Guilhem Lavaux -// Created: 1997 -// Updated: 1998 -// Copyright: (C) 1997, 1998, Guilhem Lavaux -// License: wxWindows license -// ///////////////////////////////////////////////////////////////////////////// -#ifndef __MMD_solve_H__ -#define __MMD_solve_H__ -#ifdef __GNUG__ -#pragma interface -#endif - -#ifdef WX_PRECOMP -#include "wx/wxprec.h" -#else -#include "wx/wx.h" -#endif -#include "mmfile.h" - -/** @name Solver classes */ -//@{ - -typedef wxMMediaFile *(*wxMediaFileCreator)(); - -/** wxMediaFileSolve is a class to do name resolution on multimedia files - * @memo Multimedia file solver - * @author Guilhem Lavaux - */ -class WXDLLEXPORT wxMediaFileSolve : public wxObject { -protected: - typedef struct wxMFileList { - wxMediaFileCreator creator; - wxString mime_type, name, ext; - wxMFileList *next; - } wxMFileList; - - static wxMFileList *m_first; - static wxUint8 m_devnum; - - friend class wxMMDfileRegister; -public: - wxMediaFileSolve() : wxObject() {} - ~wxMediaFileSolve() {} - - /** It resolves using the extension of the specified filename - * @memo - * @return the multimedia codec - * @param filename - */ - static wxMMediaFile *ByExtension(const wxString& filename); - - /** It resolves using the real name of a codec - * @memo - * @return the multimedia codec - * @param devname - */ - static wxMMediaFile *ByName(const wxString& devname); - - /** It resolves using a mime type - * @memo - * @return the multimedia codec - * @param mimetype - */ - static wxMMediaFile *ByType(const wxString& mimetype); - - /** It lists all codecs currently registered in "names". "names" is allocated - * by it and devices returns the number of codecs the list contains - * @memo - * @return nothing - * @param names an array - * @param devices - */ - static void ListMDevice(wxString*& names, wxUint8& devices); -}; - -/// -class wxMMDfileRegister { -public: - /// - wxMMDfileRegister(wxMediaFileCreator cbk, char *mtype, char *ext, char *name); -}; - -#define MMD_REGISTER_FILE(mtype, name, class, ext) \ -static wxMMediaFile *wxMediaFileConstructor_##class() { return new class(); } \ -wxMMDfileRegister mmd_##class(wxMediaFileConstructor_##class, mtype, ext, name); - -//@} - -#endif diff --git a/utils/wxMMedia/mmtype.h b/utils/wxMMedia/mmtype.h deleted file mode 100644 index e65d00dbf4..0000000000 --- a/utils/wxMMedia/mmtype.h +++ /dev/null @@ -1,41 +0,0 @@ -// ///////////////////////////////////////////////////////////////////////////// -// Name: mmtype.h -// Purpose: wxMMedia (imported from wxSocket) -// Author: Guilhem Lavaux -// Created: 1997 -// Updated: 1998 -// Copyright: (C) 1997, 1998, Guilhem Lavaux -// License: wxWindows license -// ///////////////////////////////////////////////////////////////////////////// - -#ifndef __SOCKTYPEH__ -#define __SOCKTYPEH__ - -#ifdef __UNIX__ -#include -#endif - -/// Type to use for 8 bits unsigned integers -typedef unsigned char wxUint8; -/// Type to use for 16 bits unsigned integers -typedef unsigned short wxUint16; -/// Type to use for 32 bits unsigned integers -typedef unsigned long wxUint32; -#if HAVE_UINT64 -/// Type to use for 64 bits unsigned integers -typedef unsigned long long wxUint64; -#endif - -/// Type to use for 8 bits signed integers -typedef char wxInt8; -/// Type to use for 16 bits signed integers -typedef short wxInt16; -/// Type to use for 32 bits signed integers -typedef long wxInt32; -#if HAVE_UINT64 -/// Type to use for 64 bits signed integers -typedef long long wxInt64; -#endif - -#endif - diff --git a/utils/wxMMedia/sndadpcm.cpp b/utils/wxMMedia/sndadpcm.cpp deleted file mode 100644 index 9e7473f093..0000000000 --- a/utils/wxMMedia/sndadpcm.cpp +++ /dev/null @@ -1,86 +0,0 @@ -#ifdef __GNUG__ -#pragma implementation "sndmulaw.h" -#endif - -#include "sndsnd.h" -#include "sndfrmt.h" -#include "sndadpcm.h" -#include "adpcm/g72x.h" - -wxSoundAdpcmCodec::wxSoundAdpcmCodec() - : wxSoundCodec() -{ - g72x_init_state(codec_state); -} - -wxSoundAdpcmCodec::~wxSoundAdpcmCodec() -{ -} - -int wxSoundAdpcmCodec::GetBits(int nbits) -{ - unsigned int mask; - int bits; - - if (bits_waiting == 0) - current_byte = m_in_sound->GetChar(); - - mask = (1 << nbits) - 1; - bits = current_byte & mask; - current_byte >>= nbits; - return bits; -} - - -void wxSoundAdpcmCodec::Decode() -{ - int smp; - wxSoundDataFormat pref_frmt; - - pref_frmt = GetPreferredFormat(0); - if (!(m_io_format == pref_frmt)) - ChainCodecAfter(pref_frmt); - - bits = GetBits(4); - if (m_io_format.GetByteOrder() == wxSND_SAMPLE_LE) { - while (!StreamOk()) { - smp = g721_decoder(bits, AUDIO_ENCODING_LINEAR, codec_state); - m_out_sound->PutChar(smp & 0x00ff); - m_out_sound->PutChar((smp & 0xff00) >> 8); - bits = GetBits(4); - } - } else { - while (!StreamOk()) { - smp = g721_decoder(bits, AUDIO_ENCODING_LINEAR, codec_state); - m_out_sound->PutChar((smp & 0xff00) >> 8); - m_out_sound->PutChar(smp & 0x00ff); - bits = GetBits(4); - } - } -} - -void wxSoundMulawCodec::Encode() -{ -} - -size_t wxSoundMulawCodec::GetByteRate() const -{ - return m_srate; -} - -wxSoundDataFormat wxSoundMulawCodec::GetPreferredFormat(int WXUNUSED(no)) const -{ - wxSoundDataFormat format; - - format.SetCodecNo(WXSOUND_PCM); - format.SetSampleRate(m_srate); - format.SetBps(16); - format.SetChannels(1); - format.SetSign(wxSND_SAMPLE_SIGNED); -#ifdef USE_BE_MACH - format.SetByteOrder(wxSND_SAMPLE_BE); -#else - format.SetByteOrder(wxSND_SAMPLE_LE); -#endif - return format; -} diff --git a/utils/wxMMedia/sndaiff.cpp b/utils/wxMMedia/sndaiff.cpp deleted file mode 100644 index 2e4b0cb84e..0000000000 --- a/utils/wxMMedia/sndaiff.cpp +++ /dev/null @@ -1,218 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// Name: sndaiff.cpp -// Purpose: wxMMedia -// Author: Guilhem Lavaux -// Created: 1997 -// Updated: February 1998 -// Copyright: (C) 1997, 1998, Guilhem Lavaux -// License: wxWindows license -//////////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation "sndaiff.h" -#endif - -#ifdef WX_PRECOMP -#include "wx/wxprec.h" -#else -#include "wx/wx.h" -#endif -#include "wx/datstrm.h" -#include "sndaiff.h" -#include "sndpcm.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#define READ_DATA(n) m_istream->Read(tmp_buf,n) -#define WRITE_DATA(n) m_ostream->Write(tmp_buf,n) - -#define READ_STRING(s,n) \ - READ_DATA(n); \ - tmp_buf[n] = 0; \ - s = tmp_buf; - -#define WRITE_STRING(s,n) WRITE_DATA((const char *)s, n) - -#define READ32(i) \ - READ_DATA(4); \ - i = (unsigned long)tmp_buf[3] | \ - ((unsigned long)tmp_buf[2] << 8) | \ - ((unsigned long)tmp_buf[1] << 16) | \ - ((unsigned long)tmp_buf[0] << 24); - -#define WRITE32(i) \ - tmp_buf[3] = i & 0xFF; \ - tmp_buf[2] = (i >> 8) & 0xFF; \ - tmp_buf[1] = (i >> 16) & 0xFF; \ - tmp_buf[0] = (i >> 24) & 0xFF; \ - WRITE_DATA(4); - -#define READ16(i) \ - READ_DATA(2); \ - i = (unsigned short)tmp_buf[1] | \ - ((unsigned short)tmp_buf[0] << 8); - -wxSndAiffCodec::wxSndAiffCodec() - : wxSndFileCodec() -{ - m_sndtime.hours = -1; -} - -wxSndAiffCodec::wxSndAiffCodec(wxOutputStream& s, bool seekable) - : wxSndFileCodec(s, seekable) -{ - if (!seekable) - CacheIO(); - m_sndtime.hours = -1; -} - -wxSndAiffCodec::wxSndAiffCodec(wxInputStream& s, bool preload, bool seekable) - : wxSndFileCodec(s, preload, seekable) -{ - if (!seekable) - CacheIO(); - m_sndtime.hours = -1; -} - -wxSndAiffCodec::wxSndAiffCodec(const wxString& fname) - : wxSndFileCodec(fname) -{ - m_sndtime.hours = -1; -} - -wxUint32 wxSndAiffCodec::PrepareToPlay() -{ - char tmp_buf[5]; - wxString chunk_name; - - m_istream->SeekI(0, wxFromStart); - - wxSndFileCodec::m_mmerror = wxMMFILE_INVALID; - - READ_STRING(chunk_name, 4); - if (chunk_name != "FORM") - return 0; - m_istream->SeekI(4, wxFromCurrent); - - READ_STRING(chunk_name, 4); - if (chunk_name != "AIFF" && chunk_name != "AIFC") - return 0; - - // To check whether the file is good - m_spos = 0; - m_slen = 0; - m_sndformat.SetSampleRate(0); - while (1) { - READ_STRING(chunk_name, 4); - READ32(m_chunksize); - - if (chunk_name == "SSND") - ParseSSND(); - if (chunk_name == "COMM") - ParseCOMM(); - else - m_istream->SeekI(m_chunksize, wxFromCurrent); - - if (m_spos && m_sndformat.GetSampleRate()) - break; - } - - m_sndmode = wxSND_OUTPUT; - - wxUint32 sec1 = m_slen / m_sndformat.GetCodec()->GetByteRate(), - sec2 = sec1 % 3600; - - m_sndtime.hours = sec1 / 3600; - m_sndtime.minutes = sec2 / 60; - m_sndtime.seconds = sec2 % 60; - - wxSndFileCodec::m_mmerror = wxMMFILE_NOERROR; - - m_istream->SeekI(m_spos, wxFromStart); - return m_slen; -} - -void wxSndAiffCodec::ParseCOMM() -{ - wxDataInputStream data_s(*m_istream); - char tmp_buf[10]; - wxUint16 channels; - wxUint32 srate, num_samples; - wxUint16 bps; - - READ16(channels); - READ32(num_samples); - READ16(bps); - - srate = (wxUint32)data_s.ReadDouble(); - m_sndformat.SetSampleRate(srate); - m_sndformat.SetBps(bps); - m_sndformat.SetChannels(channels); - m_sndformat.SetByteOrder(wxSND_SAMPLE_BE); - m_sndformat.SetSign(wxSND_SAMPLE_UNSIGNED); - ChangeCodec(WXSOUND_PCM); - - m_istream->SeekI(m_chunksize-18, wxFromCurrent); -} - -void wxSndAiffCodec::ParseSSND() -{ - wxDataInputStream data_s(*m_istream); - char tmp_buf[10]; - - READ32(m_spos); - m_istream->SeekI(4, wxFromCurrent); - - m_slen = m_chunksize - m_spos; - m_spos += m_istream->TellI(); -} - -wxSndAiffCodec::~wxSndAiffCodec() -{ -} - -bool wxSndAiffCodec::OnNeedData(char *buf, wxUint32 size) -{ - m_istream->Read(buf, size); - return TRUE; -} - -bool wxSndAiffCodec::OnWriteData(char *buf, wxUint32 size) -{ - return ( !(m_ostream->Write(buf, size).LastError()) ); -} - -bool wxSndAiffCodec::PrepareToRecord(wxUint32 m_fsize) -{ -/* - wxUint32 total_size; - char tmp_buf[10]; - - m_ostream->SeekO(0, wxBeginPosition); - - m_ostream->Write("FORM", 4); - WRITE32(total_size); - - m_ostream->Write("AIFF", 4); - - WriteCOMM(); - WriteSSND(m_fsize); - -*/ - return TRUE; -} - -void wxSndAiffCodec::SetFile(wxInputStream& s, bool preload, bool seekable) -{ - wxMMediaFile::SetFile(s, preload, seekable); - if (!seekable) - CacheIO(); -} - -void wxSndAiffCodec::SetFile(wxOutputStream& s, bool seekable) -{ - wxMMediaFile::SetFile(s, seekable); - if (!seekable) - CacheIO(); -} diff --git a/utils/wxMMedia/sndaiff.h b/utils/wxMMedia/sndaiff.h deleted file mode 100644 index 0a574e8f3e..0000000000 --- a/utils/wxMMedia/sndaiff.h +++ /dev/null @@ -1,58 +0,0 @@ -// ///////////////////////////////////////////////////////////////////////////// -// Name: sndaiff.h -// Purpose: wxMMedia Aiff Codec -// Author: Guilhem Lavaux -// Created: 1997 -// Updated: February 1998 -// Copyright: (C) 1997, 1998, Guilhem Lavaux -// License: wxWindows license -// ///////////////////////////////////////////////////////////////////////////// -/* Real -*- C++ -*- */ -#ifndef __SND_aiff_H__ -#define __SND_aiff_H__ -#ifdef __GNUG__ -#pragma interface -#endif - -#include "mmriff.h" -#include "sndfile.h" - -/// -class wxSndAiffCodec : public wxSndFileCodec { - /// - DECLARE_DYNAMIC_CLASS(wxSndAiffCodec) -public: - /// - wxSndAiffCodec(); - /// - wxSndAiffCodec(wxInputStream& s, bool preload = FALSE, bool seekable = TRUE); - /// - wxSndAiffCodec(wxOutputStream& s, bool seekable = TRUE); - /// - wxSndAiffCodec(const wxString& fname); - /// - virtual ~wxSndAiffCodec(); - - virtual bool OnNeedData(char *buf, wxUint32 size); - virtual bool OnWriteData(char *buf, wxUint32 size); - - virtual wxUint32 PrepareToPlay(); - virtual bool PrepareToRecord(wxUint32 file_size); - - virtual void SetFile(wxInputStream& s, bool preload = FALSE, - bool seekable = FALSE); - virtual void SetFile(wxOutputStream& s, - bool seekable = FALSE); -protected: - void ParseCOMM(); - void ParseSSND(); - - void WriteCOMM(); - void WriteSSND(wxUint32 file_size); - -protected: - wxUint32 m_spos, m_slen; - wxUint32 m_chunksize; -}; - -#endif diff --git a/utils/wxMMedia/sndau.cpp b/utils/wxMMedia/sndau.cpp deleted file mode 100644 index 9c46880411..0000000000 --- a/utils/wxMMedia/sndau.cpp +++ /dev/null @@ -1,114 +0,0 @@ -// ///////////////////////////////////////////////////////////////////////////// -// Name: sndau.cpp -// Purpose: wxMMedia Sun Audio File Codec -// Author: Guilhem Lavaux -// Created: 1998 -// Updated: -// Copyright: (C) 1998, Guilhem Lavaux -// License: wxWindows license -// ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation "sndau.h" -#endif - -#include "mmriff.h" -#include "sndfile.h" -#include "sndau.h" - -#define AU_ISDN_ULAW 1 -#define AU_PCM_8BITS 2 -#define AU_PCM_16BITS 3 -#define AU_ADPCM 23 - -wxSndAuCodec::wxSndAuCodec() - : wxSndFileCodec() -{ -} - -wxSndAuCodec::wxSndAuCodec(wxInputStream& s, bool preload, bool seekable) - : wxSndFileCodec(s, preload, seekable) -{ -} - -wxSndAuCodec::wxSndAuCodec(wxOutputStream& s, bool seekable) - : wxSndFileCodec(s, seekable) -{ -} - -wxSndAuCodec::wxSndAuCodec(const wxString& fname) - : wxSndFileCodec(fname) -{ -} - -wxSndAuCodec::~wxSndAuCodec() -{ -} - -wxUint32 wxSndAuCodec::PrepareToPlay() -{ - wxString id; - char temp_buf[5]; - int offset, srate, codec, ch_count; - size_t len; - - m_istream->SeekI(0); - - m_istream->Read(temp_buf, 4); - temp_buf[4] = 0; - - id = temp_buf; - if (id != ".snd") { - m_mmerror = wxMMFILE_INVALID; - return 0; - } - -#define READ_BE_32(i) \ -m_istream->Read(temp_buf, 4); \ -i = (unsigned long)temp_buf[0] << 24; \ -i |= (unsigned long)temp_buf[1] << 16; \ -i |= (unsigned long)temp_buf[2] << 8; \ -i |= (unsigned long)temp_buf[3]; - - READ_BE_32(offset); - READ_BE_32(len); - READ_BE_32(codec); - READ_BE_32(srate); - READ_BE_32(ch_count); - - m_sndformat.SetSampleRate(srate); - m_sndformat.SetChannels(ch_count); - switch (codec) { - case AU_ISDN_ULAW: - ChangeCodec(WXSOUND_ULAW); - break; - case AU_PCM_8BITS: - ChangeCodec(WXSOUND_PCM); - m_sndformat.SetByteOrder(wxSND_SAMPLE_LE); - m_sndformat.SetSign(wxSND_SAMPLE_SIGNED); - break; - case AU_PCM_16BITS: - ChangeCodec(WXSOUND_PCM); - m_sndformat.SetByteOrder(wxSND_SAMPLE_LE); - m_sndformat.SetSign(wxSND_SAMPLE_SIGNED); - break; - case AU_ADPCM: - ChangeCodec(WXSOUND_ADPCM); - break; - } - return len; -} - -bool wxSndAuCodec::OnNeedData(char *buf, wxUint32 size) -{ - return m_istream->Read(buf, size).LastError(); -} - -bool wxSndAuCodec::OnWriteData(char *buf, wxUint32 size) -{ - return m_ostream->Write(buf, size).LastError(); -} - -bool wxSndAuCodec::PrepareToRecord(wxUint32 file_size) -{ - return FALSE; -} diff --git a/utils/wxMMedia/sndau.h b/utils/wxMMedia/sndau.h deleted file mode 100644 index ee8a2762ce..0000000000 --- a/utils/wxMMedia/sndau.h +++ /dev/null @@ -1,47 +0,0 @@ -// ///////////////////////////////////////////////////////////////////////////// -// Name: sndau.h -// Purpose: wxMMedia Sun Audio File Codec -// Author: Guilhem Lavaux -// Created: 1998 -// Updated: -// Copyright: (C) 1998, Guilhem Lavaux -// License: wxWindows license -// ///////////////////////////////////////////////////////////////////////////// -/* Real -*- C++ -*- */ -#ifndef __SND_au_H__ -#define __SND_au_H__ -#ifdef __GNUG__ -#pragma interface -#endif - -#include "mmriff.h" -#include "sndfile.h" - -/// -class wxSndAuCodec : public wxSndFileCodec { - /// - DECLARE_DYNAMIC_CLASS(wxSndAuCodec) -public: - /// - wxSndAuCodec(); - /// - wxSndAuCodec(wxInputStream& s, bool preload = FALSE, bool seekable = TRUE); - /// - wxSndAuCodec(wxOutputStream& s, bool seekable = TRUE); - /// - wxSndAuCodec(const wxString& fname); - /// - virtual ~wxSndAuCodec(); - - bool OnNeedData(char *buf, wxUint32 size); - bool OnWriteData(char *buf, wxUint32 size); - - wxUint32 PrepareToPlay(); - bool PrepareToRecord(wxUint32 file_size); - -protected: - wxUint32 m_spos, m_slen; - wxUint32 m_chunksize; -}; - -#endif diff --git a/utils/wxMMedia/sndfile.cpp b/utils/wxMMedia/sndfile.cpp deleted file mode 100644 index a90c24e6ec..0000000000 --- a/utils/wxMMedia/sndfile.cpp +++ /dev/null @@ -1,325 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// Name: sndfile.cpp -// Purpose: wxMMedia -// Author: Guilhem Lavaux -// Created: 1997 -// Updated: 1998 -// Copyright: (C) 1997, 1998, Guilhem Lavaux -// License: wxWindows license -//////////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation "sndfile.h" -#endif - -#include "mmedia.h" -#include "sndfile.h" -#ifdef WX_PRECOMP -#include -#else -#include -#endif -#include -#include "sndfrmt.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -wxSndFileCodec::wxSndFileCodec() - : wxMMediaFile(), wxSndBuffer(), - m_fstate(wxSFILE_STOPPED) -{ -} - -wxSndFileCodec::wxSndFileCodec(wxOutputStream& s, bool seekable) - : wxMMediaFile(s, seekable), - wxSndBuffer(), - m_fstate(wxSFILE_STOPPED) -{ -} - -wxSndFileCodec::wxSndFileCodec(wxInputStream& s, bool preload, bool seekable) - : wxMMediaFile(s, preload, seekable), - wxSndBuffer(), - m_fstate(wxSFILE_STOPPED) -{ -} - -wxSndFileCodec::wxSndFileCodec(const wxString& fname) - : wxMMediaFile(fname), wxSndBuffer(), - m_fstate(wxSFILE_STOPPED) -{ -} - -wxSndFileCodec::~wxSndFileCodec() -{ -} - -void wxSndFileCodec::Play(wxSound& snd) -{ - if (m_fstate != wxSFILE_STOPPED || IsSet(wxSND_BUFLOCKED)) - return; - - if (!(m_fsize = PrepareToPlay())) - return; - - m_fpos = 0; - m_fstate = wxSFILE_PLAYING; - - Set(wxSND_BUFREADY | wxSND_KEEPQUEUED); - snd.QueueBuffer(*this); -} - -void wxSndFileCodec::Stop(wxSound& snd) -{ - if (m_fstate == wxSFILE_STOPPED) - return; - - snd.UnqueueBuffer(*this); - Clear(wxSND_BUFREADY | wxSND_KEEPQUEUED); - m_fstate = wxSFILE_STOPPED; -} - -void wxSndFileCodec::Record(wxSound& snd, - const wxSoundDataFormat& format, - wxUint32 seconds) -{ - wxUint32 byterate; - - if (m_fstate != wxSFILE_STOPPED) - return; - - m_sndformat = format; - byterate = m_sndformat.GetCodec()->GetByteRate(); - - m_fsize = seconds*byterate; - if (!PrepareToRecord(m_fsize)) - return; - if (IsSet(wxSND_BUFLOCKED)) - return; - - wxUint32 sec1 = m_fsize / byterate, - sec2 = sec1 % 3600; - - m_sndtime.hours = sec1 / 3600; - m_sndtime.minutes = sec2 / 60; - m_sndtime.seconds = sec2 % 60; - - m_fdone = m_fpos = 0; - m_fstate = wxSFILE_RECORDING; - - m_sndmode = wxSND_INPUT; - - Set(wxSND_BUFREADY | wxSND_KEEPQUEUED); - snd.QueueBuffer(*this); -} - -void wxSndFileCodec::OnNeedOutputData(char *data, wxUint32& size) -{ - wxUint32 datas_left = m_fsize-m_fpos; - - if (m_fstate != wxSFILE_PLAYING) { - size = 0; - return; - } - - if (!datas_left) { - size = 0; - m_fpos = 0; - m_fstate = wxSFILE_STOPPED; - Clear(wxSND_KEEPQUEUED); - return; - } - - if (size > datas_left) - size = datas_left; - - if (!OnNeedData(data, size)) { - size = 0; - m_fpos = 0; - m_fstate = wxSFILE_STOPPED; - Clear(wxSND_KEEPQUEUED); - return; - } - - m_fpos += size; -} - -void wxSndFileCodec::OnBufferInFinished(char *iobuf, wxUint32& size) -{ - wxUint32 datas_left = m_fsize-m_fdone; - - if (m_fstate != wxSFILE_RECORDING) { - size = 0; - return; - } - - if (!datas_left) { - size = 0; - Clear(wxSND_KEEPQUEUED); // To be sure. - return; - } - - if (size > datas_left) - size = datas_left; - - OnWriteData(iobuf, size); - m_fdone += size; -} - -wxMMtime wxSndFileCodec::GetPosition() -{ - wxMMtime mm_time; - wxUint32 sec1, sec2; - wxUint32 byterate; - - byterate = m_sndformat.GetCodec()->GetByteRate(); - - if (m_fpos && byterate) { - sec1 = m_fpos / byterate; - sec2 = sec1 % 3600; - mm_time.hours = sec1 / 3600; - mm_time.minutes = sec2 / 60; - mm_time.seconds = sec2 % 60; - } else { - mm_time.hours = 0; - mm_time.minutes = 0; - mm_time.seconds = 0; - } - - return mm_time; -} - -wxMMtime wxSndFileCodec::GetLength() -{ - if (m_sndtime.hours == -1 && m_istream) - PrepareToPlay(); - - return m_sndtime; -} - -bool wxSndFileCodec::TranslateBuffer(wxSndBuffer& buf) -{ -#define TMP_BUFSIZE 10240 - - wxUint32 buf_size; - wxStreamBuffer *tmp_buf; - wxSoundCodec *codec_in, *codec_out; - wxSoundDataFormat std_format; - - if (!m_ostream || !buf.RestartBuffer(wxSND_OUTPUT)) - return FALSE; - - m_sndformat = buf.GetFormat(); - codec_in = buf.GetCurrentCodec(); - - m_fdone = 0; - - if (!PrepareToRecord(m_fsize)) - return FALSE; - - codec_out = GetCurrentCodec(); - m_fsize = (int)(((float)buf.GetSize() / codec_in->GetByteRate()) * - codec_out->GetByteRate()); - - if (!PrepareToRecord(m_fsize)) - return FALSE; - - codec_out = GetCurrentCodec(); - codec_in->InitIO(m_sndformat); - codec_out->InitIO(m_sndformat); - - tmp_buf = new wxStreamBuffer(wxStreamBuffer::read_write); - tmp_buf->Fixed(TRUE); - tmp_buf->Flushable(FALSE); - tmp_buf->SetBufferIO(TMP_BUFSIZE); - - m_fstate = wxSFILE_RECORDING; - - while (m_fdone < m_fsize) { - tmp_buf->ResetBuffer(); - codec_in->SetOutStream(tmp_buf); - codec_in->Decode(); - - tmp_buf->ResetBuffer(); - codec_out->SetInStream(tmp_buf); - codec_out->Encode(); - - buf.OnBufferOutFinished(); - } - delete tmp_buf; - - m_fstate = wxSFILE_STOPPED; - - return TRUE; -} - -bool wxSndFileCodec::RestartBuffer(wxSndMode mode) -{ - if (IsSet(wxSND_BUFLOCKED)) - return FALSE; - - m_fdone = 0; - m_fpos = 0; - - if (mode == wxSND_OUTPUT && m_istream) { - m_fsize = PrepareToPlay(); - m_fstate = wxSFILE_PLAYING; - return TRUE; - } - if (mode == wxSND_INPUT && m_ostream) { - m_fsize = 0; - m_fstate = wxSFILE_RECORDING; - return TRUE; - } - - return FALSE; -} - -wxUint32 wxSndFileCodec::GetSize() const -{ - return m_fsize; -} - -wxUint32 wxSndFileCodec::Available() const -{ - if (m_fstate == wxSFILE_STOPPED) - return 0; - return m_fsize-m_fpos; -} - -// -// Simple API -// -static wxSoundDevice *dev_snd = NULL; - -bool wxSndFileCodec::StartPlay() -{ - if (!dev_snd) - dev_snd = new wxSoundDevice; - - Play(*dev_snd); - - return TRUE; -} - -void wxSndFileCodec::StopPlay() -{ - if (!dev_snd) - return; - - Stop(*dev_snd); - m_fpos = 0; -} - -class wxSoundModule : public wxModule { - DECLARE_DYNAMIC_CLASS(wxSoundModule) -public: - virtual bool OnInit() { return TRUE; } - virtual void OnExit() { - if (dev_snd) - delete dev_snd; - } -}; - -IMPLEMENT_DYNAMIC_CLASS(wxSoundModule, wxModule) diff --git a/utils/wxMMedia/sndfile.h b/utils/wxMMedia/sndfile.h deleted file mode 100644 index 2a1c7e5fa5..0000000000 --- a/utils/wxMMedia/sndfile.h +++ /dev/null @@ -1,91 +0,0 @@ -// ///////////////////////////////////////////////////////////////////////////// -// Name: sndfile.h -// Purpose: wxMMedia -// Author: Guilhem Lavaux -// Created: 1997 -// Updated: 1998 -// Copyright: (C) 1997, 1998, Guilhem Lavaux -// License: wxWindows license -// ///////////////////////////////////////////////////////////////////////////// -/* Real -*- C++ -*- */ -#ifndef __SND_file_H__ -#define __SND_file_H__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "mmfile.h" -#include "sndsnd.h" - -/// -class wxSndFileCodec : public wxMMediaFile, public wxSndBuffer { - /// - DECLARE_ABSTRACT_CLASS(wxSndFileCodec) -public: - - typedef enum { - wxSFILE_STOPPED, - wxSFILE_PLAYING, - wxSFILE_RECORDING - } FileState; - -protected: - wxUint32 m_fsize, m_fpos, m_fdone; - FileState m_fstate; - wxMMtime m_sndtime; -public: - - /// - wxSndFileCodec(); - /// - wxSndFileCodec(wxInputStream& s, bool preload, bool seekable); - /// - wxSndFileCodec(wxOutputStream& s, bool seekable); - /// - wxSndFileCodec(const wxString& fname); - /// - virtual ~wxSndFileCodec(); - - /// - void Play(wxSound& snd); - /// - void Stop(wxSound& snd); - /// - void Record(wxSound& snd, - const wxSoundDataFormat& format, wxUint32 seconds); - - /// - void OnNeedOutputData(char *data, wxUint32& size); - /// - void OnBufferInFinished(char *iobuf, wxUint32& size); - - /// - virtual bool OnNeedData(char *buf, wxUint32 size) = 0; - /// - virtual bool OnWriteData(char *buf, wxUint32 size) = 0; - /// - virtual wxUint32 PrepareToPlay() = 0; - /// - virtual bool PrepareToRecord(wxUint32 file_size) = 0; - /// - virtual bool TranslateBuffer(wxSndBuffer& buf); - /// - virtual bool RestartBuffer(wxSndMode mode); - /// - virtual wxUint32 GetSize() const; - /// - virtual wxUint32 Available() const; - /// - virtual wxMMtime GetLength(); - - /// - wxMMtime GetPosition(); - - /// - virtual bool StartPlay(); - /// - virtual void StopPlay(); -}; - -#endif diff --git a/utils/wxMMedia/sndfrag.cpp b/utils/wxMMedia/sndfrag.cpp deleted file mode 100644 index 9b4e46ffdc..0000000000 --- a/utils/wxMMedia/sndfrag.cpp +++ /dev/null @@ -1,268 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// Name: sndfrag.cpp -// Purpose: wxMMedia -// Author: Guilhem Lavaux -// Created: 1997 -// Updated: 1998 -// Copyright: (C) 1997, 1998, Guilhem Lavaux -// License: wxWindows license -//////////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation "sndfrag.h" -#endif -#include -#ifdef WX_PRECOMP -#include "wx_prec.h" -#else -#include "wx/wx.h" -#endif -#include "sndfrag.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -wxFragmentBuffer::wxFragmentBuffer(wxSound& io_drv) - : m_iodrv(&io_drv), m_maxoq(0), m_maxiq(0), - m_optrs(NULL), m_iptrs(NULL), m_lstoptrs(NULL), m_lstiptrs(NULL), - m_buf2free(FALSE), m_dontq(FALSE), m_freeing(FALSE) -{ -} - -wxFragmentBuffer::~wxFragmentBuffer() -{ -} - -void wxFragmentBuffer::AbortBuffer(wxSndBuffer *buf) -{ - for (wxUint8 i=0;iMember(buf)) { - if (m_lstoptrs[i].state == wxBUFFER_PLAYING) - // TODO: Do something. - ; - m_lstoptrs[i].state = wxBUFFER_TOFREE; - } - - for (wxUint8 i=0;iMember(buf)) { - if (m_lstiptrs[i].state == wxBUFFER_PLAYING) - // Do something. - ; - m_lstiptrs[i].state = wxBUFFER_TOFREE; - } -} - -wxFragmentBuffer::wxFragBufPtr *wxFragmentBuffer::FindFreeBuffer( - xFragBufPtr *list, wxUint8 max_queue) -{ - if (!list) - return NULL; - - for (wxUint8 i=0;iGetCurrentCodec(); - - if (!m_iodrv->OnSetupDriver(*buf, wxSND_OUTPUT)) - return FALSE; - - while (1) { - // Find the first free (at least partly free) output buffer - ptr = FindFreeBuffer(m_lstoptrs, m_maxoq); - // No free : go out ! - if (!ptr) - return FALSE; - - codec->SetOutStream(ptr->sndbuf); - codec->InitIO(m_drvformat); - - // Fill it up - codec->Decode(); - - // No data to fill the buffer: dequeue the current wxSndBuffer - if (!codec->Available()) { - if (buf->IsNotSet(wxSND_KEEPQUEUED)) { - buf->Set(wxSND_UNQUEUEING); - m_iodrv->m_buffers.DeleteObject(buf); - } - return TRUE; - } - - // Data: append it to the list - ptr->buffers->Append(buf); - - // Output buffer full: send it to the driver - if (ptr->sndbuf->GetDataLeft()) { - ptr->state = wxBUFFER_FFILLED; - OnBufferFilled(ptr, wxSND_OUTPUT); - } - } -} - -bool wxFragmentBuffer::NotifyInputBuffer(wxSndBuffer *buf) -{ - /* - wxFragBufPtr *ptr; - char *raw_buf; - wxUint32 rawbuf_size; - - if (!m_iodrv->OnSetupDriver(*buf, wxSND_INPUT)) - return FALSE; - - while (1) { - ptr = FindFreeBuffer(m_lstiptrs, m_maxiq); - if (!ptr) - return FALSE; - - raw_buf = ptr->data + ptr->ptr; - rawbuf_size = ptr->size - ptr->ptr; - - rawbuf_size = (buf->Available() < rawbuf_size) ? buf->Available() : rawbuf_size; - - if (!rawbuf_size) { - - if (buf->IsNotSet(wxSND_KEEPQUEUED)) { - buf->Set(wxSND_UNQUEUEING); - m_iodrv->m_buffers.DeleteObject(buf); - } - - if (!LastBuffer() && ptr->ptr) { - ptr->state = wxBUFFER_FFILLED; - if (!OnBufferFilled(ptr, wxSND_INPUT)) - return FALSE; - } - return TRUE; - } - ptr->buffers->Append(buf); - - ptr->ptr += rawbuf_size; - - - if (ptr->ptr == ptr->size) { - ptr->state = wxBUFFER_FFILLED; - if (!OnBufferFilled(ptr, wxSND_INPUT)) - return FALSE; - } - } - */ - - return TRUE; -} - -void wxFragmentBuffer::FreeBufToFree(bool force) -{ - wxUint8 i; - // Garbage collecting - - m_dontq = TRUE; - m_buf2free = FALSE; - - for (i=0;idata; - size = ptr->size; - - node = ptr->buffers->First(); - - while (node) { - buf = (wxSndBuffer *)node->Data(); - - if (buf->GetMode() == wxSND_OUTPUT) { - buf->OnBufferOutFinished(); - } else { - data_read = buf->OnBufferInFinished(data, size); - - data += data_read; - size -= data_read; - } - - if (buf->IsSet(wxSND_UNQUEUEING)) - buf->Clear(wxSND_UNQUEUEING | wxSND_BUFLOCKED | wxSND_BUFREADY); - - delete node; - node = ptr->buffers->First(); - } - - ptr->sndbuf->ResetBuffer(); - ptr->state = wxBUFFER_FREE; -} - -void wxFragmentBuffer::OnBufferFinished(wxFragBufPtr *ptr) -{ - wxNode *node; - wxSndBuffer *buf; - bool ret = TRUE; - - if (m_freeing) { - ptr->state = wxBUFFER_TOFREE; - m_buf2free = TRUE; - return; - } - m_freeing = TRUE; - - // Clean up the old buffer. - if (ptr && ptr->state != wxBUFFER_FREE) - ClearBuffer(ptr); - - // Garbage collecting ... - if (m_buf2free) - FreeBufToFree(); - - // If we are queueing, return immediately. - if (m_dontq) { - m_freeing = FALSE; - return; - } - - node = m_iodrv->m_buffers.First(); - - while (node && ret) { - buf = (wxSndBuffer *)node->Data(); - node = node->Next(); - - buf->HardLock(); - - // Stop request on this buffer. - if (buf->IsSet(wxSND_BUFSTOP)) { - buf->Clear(wxSND_BUFSTOP); - continue; - } - if (buf->GetMode() == wxSND_OUTPUT) - ret = NotifyOutputBuffer(buf); - else - ret = NotifyInputBuffer(buf); - - buf->HardUnlock(); - } - m_freeing = FALSE; -} diff --git a/utils/wxMMedia/sndfrag.h b/utils/wxMMedia/sndfrag.h deleted file mode 100644 index d0679087e4..0000000000 --- a/utils/wxMMedia/sndfrag.h +++ /dev/null @@ -1,105 +0,0 @@ -// ///////////////////////////////////////////////////////////////////////////// -// Name: sndfrag.h -// Purpose: wxMMedia -// Author: Guilhem Lavaux -// Created: 1997 -// Updated: 1998 -// Copyright: (C) 1997, 1998, Guilhem Lavaux -// License: wxWindows license -// ///////////////////////////////////////////////////////////////////////////// -#ifndef __SND_frag_H__ -#define __SND_frag_H__ -#ifdef __GNUG__ -#pragma interface -#endif - -#ifdef WX_PRECOMP -#include "wx_prec.h" -#else -#include "wx/wx.h" -#endif -#include "sndsnd.h" - -/// -class wxFragmentBuffer { -protected: - wxSound *m_iodrv; - - /// - wxUint8 m_maxoq, m_maxiq; - - /// - typedef enum { - wxBUFFER_FREE, - wxBUFFER_FFILLED, - wxBUFFER_TOFREE - } BufState; -public: - /// - typedef struct { - char *data; - /// - char *user_data; - /// - wxUint32 size, ptr; - /// - wxList *buffers; - /// - BufState state; - } wxFragBufPtr; -protected: - /// - wxFragBufPtr *m_optrs, *m_iptrs; - /// - wxFragBufPtr *m_lstoptrs, *m_lstiptrs; - /// - bool m_buf2free, m_dontq, m_freeing; - /// - wxSoundDataFormat m_drvformat; -public: - /// - wxFragmentBuffer(wxSound& io_drv); - /// - virtual ~wxFragmentBuffer(); - - /// - virtual void AllocIOBuffer() = 0; - /// - virtual void FreeIOBuffer() = 0; - - /// - void AbortBuffer(wxSndBuffer *buf); - - /// - wxFragBufPtr *FindFreeBuffer(wxFragBufPtr *list, wxUint8 max_queue); - /// - bool NotifyOutputBuffer(wxSndBuffer *buf); - /// - bool NotifyInputBuffer(wxSndBuffer *buf); - - /// - void OnBufferFinished(wxFragBufPtr *ptr); - - /// - virtual bool OnBufferFilled(wxFragBufPtr *ptr, wxSndMode mode) = 0; - - /// - inline wxSndBuffer *LastBuffer() { - wxNode *node = m_iodrv->m_buffers.Last(); - - if (!node) return NULL; - return (wxSndBuffer *)node->Data(); - } - /// - inline wxSndBuffer *FirstBuffer() { - wxNode *node = m_iodrv->m_buffers.First(); - - if (!node) return NULL; - return (wxSndBuffer *)node->Data(); - } -protected: - void FreeBufToFree(bool force = FALSE); - void ClearBuffer(wxFragBufPtr *ptr); -}; - -#endif diff --git a/utils/wxMMedia/sndfrmt.cpp b/utils/wxMMedia/sndfrmt.cpp deleted file mode 100644 index dc6d653ad9..0000000000 --- a/utils/wxMMedia/sndfrmt.cpp +++ /dev/null @@ -1,294 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// Name: sndfrmt.cpp -// Purpose: wxMMedia -// Author: Guilhem Lavaux -// Created: 1998 -// Updated: December 1998 -// Copyright: (C) 1997, 1998, Guilhem Lavaux -// License: wxWindows license -//////////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation "sndfrmt.h" -#endif -#include "sndsnd.h" -#include "sndfrmt.h" -#include "sndpcm.h" - -// ---------------------------------------------------------------------------- -// wxSoundDataFormat -// ---------------------------------------------------------------------------- - -wxSoundDataFormat::wxSoundDataFormat() -{ - m_srate = 22050; - m_bps = 8; - m_channels = 1; - m_codno = 1; - m_codec = NULL; - m_codchange = FALSE; - m_codcreate = TRUE; -} - -wxSoundDataFormat::wxSoundDataFormat(const wxSoundDataFormat& format) -{ - m_srate = format.m_srate; - m_bps = format.m_bps; - m_channels = format.m_channels; - m_codno = format.m_codno; - m_sign = format.m_sign; - m_byteorder = format.m_byteorder; - m_codchange = FALSE; - m_codcreate = TRUE; - m_codec = NULL; -} - -wxSoundDataFormat::~wxSoundDataFormat() -{ - wxDELETE(m_codec); -} - -void wxSoundDataFormat::SetChannels(int channels) -{ - m_channels = channels; -} - -void wxSoundDataFormat::SetBps(int bps) -{ - m_bps = bps; - CodecChange(); -} - -void wxSoundDataFormat::SetSign(int sign) -{ - m_sign = sign; - CodecChange(); -} - -void wxSoundDataFormat::SetByteOrder(int byteorder) -{ - m_byteorder = byteorder; - CodecChange(); -} - -void wxSoundDataFormat::SetCodecNo(int codno) -{ - m_codno = codno; - m_codchange = TRUE; - CodecChange(); -} - -wxSoundCodec *wxSoundDataFormat::GetCodec() -{ - if (!m_codcreate) - return NULL; - - if (m_codchange) - wxDELETE(m_codec); - - if (m_codec) - return m_codec; - - m_codchange = FALSE; - m_codec = wxSoundCodec::Get(m_codno); - CodecChange(); - - return m_codec; -} - -void wxSoundDataFormat::CodecChange() -{ - wxSoundCodec *codec = GetCodec(); - - if (!codec) - return; - - switch (m_codno) { - case WXSOUND_PCM: { - wxSoundPcmCodec *pcm_codec = (wxSoundPcmCodec *)codec; - - pcm_codec->m_orig_format.SetSampleRate(m_srate); - pcm_codec->m_orig_format.SetBps(m_bps); - pcm_codec->m_orig_format.SetChannels(m_channels); - pcm_codec->m_orig_format.SetByteOrder(m_byteorder); - pcm_codec->m_orig_format.SetSign(m_sign); - break; - } - default: - break; - } -} - -wxSoundDataFormat& wxSoundDataFormat::operator =(const wxSoundDataFormat& format) -{ - wxDELETE(m_codec); - - m_srate = format.m_srate; - m_bps = format.m_bps; - m_channels = format.m_channels; - m_codno = format.m_codno; - m_sign = format.m_sign; - m_byteorder = format.m_byteorder; - - return *this; -} - -bool wxSoundDataFormat::operator ==(const wxSoundDataFormat& format) const -{ - if (m_codno != format.m_codno || m_srate != format.m_srate || - m_bps != format.m_bps || m_channels != format.m_channels) - return FALSE; - - if (m_codno == WXSOUND_PCM && - (m_sign != format.m_sign || m_byteorder != format.m_byteorder)) - return FALSE; - - return TRUE; -} - -// ---------------------------------------------------------------------------- -// wxSoundCodec -// ---------------------------------------------------------------------------- - -#include "sndpcm.h" -//#include "sndadpcm.h" -//#include "sndalaw.h" -#include "sndmulaw.h" - -static wxClassInfo *l_sound_formats[] = { - NULL, - CLASSINFO(wxSoundPcmCodec), - NULL, // CLASSINFO(wxSoundAdpcmCodec), - NULL, - NULL, - NULL, - NULL, // CLASSINFO(wxSoundAlawCodec), - NULL // CLASSINFO(wxSoundMulawCodec) -}; - -static int l_nb_formats = WXSIZEOF(l_sound_formats); - -wxSoundCodec::wxSoundCodec() -{ - m_in_sound = NULL; - m_out_sound = NULL; - m_init = TRUE; - m_chain_codec = NULL; -} - -wxSoundCodec::~wxSoundCodec() -{ - if (m_mode != WAITING) - ExitMode(); -} - -void wxSoundCodec::InitIO(const wxSoundDataFormat& format) -{ - m_io_format = format; -} - -void wxSoundCodec::InitMode(ModeType mode) -{ - wxStreamBuffer *buf_snd; - - m_mode = mode; - if (!m_chain_codec) { - if (m_mode == ENCODING) { - m_out_sound = new wxStreamBuffer(*this, wxStreamBuffer::write); - m_out_sound->SetBufferIO(1024); - } else { - m_in_sound = new wxStreamBuffer(*this, wxStreamBuffer::read); - m_in_sound->SetBufferIO(1024); - } - } - if (m_chain_codec) { - if (m_chain_before) { - m_chain_codec->SetInStream(m_in_sound); - buf_snd = new wxStreamBuffer(wxStreamBuffer::read_write); - buf_snd->Fixed(FALSE); - m_chain_codec->SetOutStream(buf_snd); - m_chain_codec->Decode(); - buf_snd->Seek(0, wxFromStart); - m_in_sound = buf_snd; - } else { - buf_snd = new wxStreamBuffer(wxStreamBuffer::read_write); - buf_snd->Fixed(FALSE); - - m_chain_codec->SetInStream(buf_snd); - m_chain_codec->SetOutStream(m_out_sound); - m_out_sound = buf_snd; - - buf_snd->Seek(0, wxFromStart); - } - } -} - -void wxSoundCodec::ExitMode() -{ - if (m_chain_codec) { - if (m_chain_before) { - delete m_in_sound; - m_in_sound = m_chain_codec->GetInStream(); - } else { - delete m_out_sound; - m_out_sound = m_chain_codec->GetOutStream(); - } - } - m_mode = WAITING; -} - -bool wxSoundCodec::ChainCodecBefore(wxSoundDataFormat& format) -{ - m_chain_codec = format.GetCodec(); - - if (!m_chain_codec) - return FALSE; - - m_chain_before = TRUE; - return TRUE; -} - -bool wxSoundCodec::ChainCodecAfter(wxSoundDataFormat& format) -{ - m_chain_codec = format.GetCodec(); - - if (!m_chain_codec) - return FALSE; - - m_chain_before = FALSE; - return TRUE; -} - -void wxSoundCodec::CopyToOutput() -{ - m_out_sound->Write(m_in_sound); -} - -size_t wxSoundCodec::Available() -{ - return m_io_sndbuf->Available(); -} - -size_t wxSoundCodec::OnSysRead(void *buffer, size_t bsize) -{ - wxUint32 s = bsize; - m_io_sndbuf->OnNeedOutputData((char *)buffer, s); - return bsize; -} - -size_t wxSoundCodec::OnSysWrite(const void *buffer, size_t bsize) -{ - wxUint32 s = bsize; - m_io_sndbuf->OnBufferInFinished((char *)buffer, s); - return bsize; -} - -wxSoundCodec *wxSoundCodec::Get(int no) -{ - if (no < 0 || no >= l_nb_formats) - return NULL; - - if (!l_sound_formats[no]) - return NULL; - - return (wxSoundCodec *)l_sound_formats[no]->CreateObject(); -} diff --git a/utils/wxMMedia/sndfrmt.h b/utils/wxMMedia/sndfrmt.h deleted file mode 100644 index 69635c0e6d..0000000000 --- a/utils/wxMMedia/sndfrmt.h +++ /dev/null @@ -1,134 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// Name: sndfrmt.h -// Purpose: wxMMedia -// Author: Guilhem Lavaux -// Created: 1998 -// Updated: December 1998 -// Copyright: (C) 1997, 1998, Guilhem Lavaux -// License: wxWindows license -//////////////////////////////////////////////////////////////////////////////// -#ifndef __SNDFRMT_H__ -#define __SNDFRMT_H__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include -#include - -class wxSndBuffer; - -// Standard Microsoft types (why change ?) -#define WXSOUND_PCM 0x0001 -#define WXSOUND_ADPCM 0x0002 -#define WXSOUND_ALAW 0x0006 -#define WXSOUND_ULAW 0x0007 - -class wxSoundCodec; -class wxSoundDataFormat { - public: - wxSoundDataFormat(); - wxSoundDataFormat(const wxSoundDataFormat& format); - ~wxSoundDataFormat(); - - void SetSampleRate(int srate) { m_srate = srate; } - void SetChannels(int channels); - void SetStereo(bool on); - void SetCodecNo(int no); - void SetCodecCreate(bool create) { m_codcreate = create; } - - int GetSampleRate() const { return m_srate; } - int GetChannels() const { return m_channels; } - bool GetStereo() const { return (m_channels == 2); } - int GetCodecNo() const { return m_codno; } - - wxSoundCodec *GetCodec(); - - wxSoundDataFormat& operator =(const wxSoundDataFormat& format); - bool operator ==(const wxSoundDataFormat& format) const; - bool operator !=(const wxSoundDataFormat& format) const - { return !(operator ==(format)); } - - /// PCM format - void SetByteOrder(int order); - void SetSign(int sign); - int GetByteOrder() const { return m_byteorder; } - int GetSign() const { return m_sign; } - - void SetBps(int bps); - int GetBps() const { return m_bps; } - - protected: - void CodecChange(); - - protected: - int m_srate, m_bps, m_channels, m_codno; - int m_byteorder, m_sign; - bool m_codchange, m_codcreate; - wxSoundCodec *m_codec; -}; - -class wxSoundCodec : public wxObject, public wxStreamBase { - DECLARE_ABSTRACT_CLASS(wxSoundCodec) - public: - typedef enum { - WAITING = 0, - ENCODING, - DECODING - } ModeType; - public: - wxSoundCodec(); - virtual ~wxSoundCodec(); - - void SetIOBuffer(wxSndBuffer *sndbuf) { m_io_sndbuf = sndbuf; } - size_t Available(); - - void InitIO(const wxSoundDataFormat& format); - - inline void SetInStream(wxStreamBuffer *s) - { m_in_sound = s; } - inline void SetOutStream(wxStreamBuffer *s) - { m_out_sound = s; } - inline wxStreamBuffer *GetInStream() const { return m_in_sound; } - inline wxStreamBuffer *GetOutStream() const { return m_out_sound; } - - inline bool StreamOk() const - { return (m_in_sound->Stream()->LastError() == wxStream_NOERROR) && - (m_out_sound->Stream()->LastError() == wxStream_NOERROR); } - - virtual size_t GetByteRate() const = 0; - virtual wxSoundDataFormat GetPreferredFormat(int codec = 0) const = 0; - - virtual void InitMode(ModeType mode); - virtual void ExitMode(); - virtual void Decode() = 0; - virtual void Encode() = 0; - - static wxSoundCodec *Get(int no); - - protected: - void CopyToOutput(); - - unsigned short Convert8_16(unsigned char s) { return (s & 0xff) << 8; } - unsigned char Convert16_8(unsigned short s) { return (s & 0xff00) >> 8; } - - bool ChainCodecBefore(wxSoundDataFormat& cod_to); - bool ChainCodecAfter(wxSoundDataFormat& cod_to); - - // ------------- - // wxStream part - // ------------- - size_t OnSysWrite(const void *buffer, size_t bsize); - size_t OnSysRead(void *buffer, size_t bsize); - - protected: - wxSndBuffer *m_io_sndbuf; - wxSoundDataFormat m_io_format; - wxStreamBuffer *m_in_sound, *m_out_sound; - wxSoundCodec *m_chain_codec; - bool m_init, m_chain_before; - ModeType m_mode; -}; - -#endif diff --git a/utils/wxMMedia/sndmulaw.cpp b/utils/wxMMedia/sndmulaw.cpp deleted file mode 100644 index 3f45098f40..0000000000 --- a/utils/wxMMedia/sndmulaw.cpp +++ /dev/null @@ -1,94 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// Name: sndmulaw.cpp -// Purpose: wxMMedia -// Author: Guilhem Lavaux -// Created: 1997 -// Updated: December 1998 -// Copyright: (C) 1997, 1998, Guilhem Lavaux -// License: wxWindows license -//////////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation "sndmulaw.h" -#endif - -#include "sndsnd.h" -#include "sndfrmt.h" -#include "sndmulaw.h" -#include "adpcm/g72x.h" - -wxSoundMulawCodec::wxSoundMulawCodec() - : wxSoundCodec() -{ -} - -wxSoundMulawCodec::~wxSoundMulawCodec() -{ -} - -void wxSoundMulawCodec::Decode() -{ - int smp; - wxSoundDataFormat pref_frmt; - - pref_frmt = GetPreferredFormat(0); - if (m_io_format != pref_frmt) - ChainCodecAfter(pref_frmt); - - InitMode(DECODING); - - while (!StreamOk()) { - smp = ulaw2linear(m_in_sound->GetChar()); -#ifdef USE_BE_MACH - m_out_sound->PutChar((smp & 0xff00) >> 8); - m_out_sound->PutChar(smp & 0xff); -#else - m_out_sound->PutChar(smp & 0xff); - m_out_sound->PutChar((smp & 0xff00) >> 8); -#endif - } -} - -void wxSoundMulawCodec::Encode() -{ - int smp; - wxSoundDataFormat pref_frmt; - - pref_frmt = GetPreferredFormat(0); - if (m_io_format != pref_frmt) - ChainCodecBefore(pref_frmt); - - InitMode(ENCODING); - - while (!StreamOk()) { -#ifdef USE_BE_MACH - smp = ((unsigned short)m_in_sound->GetChar()) << 8; - smp |= m_in_sound->GetChar() & 0xff; -#else - smp = m_in_sound->GetChar() & 0xff; - smp |= ((unsigned short)m_in_sound->GetChar()) << 8; -#endif - m_out_sound->PutChar(linear2ulaw(smp)); - } -} - -size_t wxSoundMulawCodec::GetByteRate() const -{ - return m_srate; -} - -wxSoundDataFormat wxSoundMulawCodec::GetPreferredFormat(int WXUNUSED(no)) const -{ - wxSoundDataFormat format; - - format.SetCodecNo(WXSOUND_PCM); - format.SetSampleRate(m_srate); - format.SetBps(16); - format.SetChannels(1); - format.SetSign(wxSND_SAMPLE_SIGNED); -#ifdef USE_BE_MACH - format.SetByteOrder(wxSND_SAMPLE_BE); -#else - format.SetByteOrder(wxSND_SAMPLE_LE); -#endif - return format; -} diff --git a/utils/wxMMedia/sndmulaw.h b/utils/wxMMedia/sndmulaw.h deleted file mode 100644 index 840567462a..0000000000 --- a/utils/wxMMedia/sndmulaw.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef __MEDIA_SNDMULAW_H__ -#define __MEDIA_SNDMULAW_H__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "sndfrmt.h" - -class wxSoundMulawCodec : public wxSoundCodec { - DECLARE_DYNAMIC_CLASS(wxSoundMulawCodec) - public: - wxSoundMulawCodec(); - virtual ~wxSoundMulawCodec(); - - void SetSampleRate(int srate) { m_srate = srate; } - - size_t GetByteRate() const; - wxSoundDataFormat GetPreferredFormat(int codec = 0) const; - - void Decode(); - void Encode(); - - protected: - int m_srate; -}; - -#endif diff --git a/utils/wxMMedia/sndpcm.cpp b/utils/wxMMedia/sndpcm.cpp deleted file mode 100644 index 6838911046..0000000000 --- a/utils/wxMMedia/sndpcm.cpp +++ /dev/null @@ -1,197 +0,0 @@ -#ifdef __GNUG__ -#pragma implementation "sndpcm.h" -#endif -#include "sndsnd.h" -#include "sndpcm.h" - -#define WX_BIG_ENDIAN 0 - -wxSoundPcmCodec::wxSoundPcmCodec() - : wxSoundCodec() -{ - m_orig_format.SetCodecCreate(FALSE); - m_orig_format.SetCodecNo(WXSOUND_PCM); -} - -wxSoundPcmCodec::~wxSoundPcmCodec() -{ -} - -size_t wxSoundPcmCodec::GetByteRate() const -{ - return (m_orig_format.GetBps()/8)* - m_orig_format.GetSampleRate()* - m_orig_format.GetChannels(); -} - -wxSoundDataFormat wxSoundPcmCodec::GetPreferredFormat(int codec) const -{ - wxSoundDataFormat prefFormat; - - prefFormat = m_orig_format; - return prefFormat; -} - -// --------------------------------------------------------------------------- -// Main part of the decoder -// --------------------------------------------------------------------------- - -void wxSoundPcmCodec::Decode() -{ - if (m_io_format == m_orig_format) { - CopyToOutput(); - return; - } - - // Swap bytes - switch (m_io_format.GetBps()) { - case 8: - InputSign8(); - break; - case 16: - InputSwapAndSign16(); - break; - case 32: - case 64: - default: - break; - } -} - -// --------------------------------------------------------------------------- -// Change the sign of a 8-bit sample. - -#define GET() (m_in_sound->GetChar()) -#define PUT(c) (m_out_sound->PutChar(c)) - -void wxSoundPcmCodec::InputSign8() -{ - unsigned char signer = 0; - - if (m_io_format.GetSign() != m_orig_format.GetSign()) - signer = 128; - - while (StreamOk()) - PUT(GET() + signer); -} - -// --------------------------------------------------------------------------- -// Swap bytes and change the sign of a 16-bit sample. - -void wxSoundPcmCodec::InputSwapAndSign16() -{ - unsigned short signer1 = 0, signer2 = 0; - bool swap = (m_io_format.GetByteOrder() != m_orig_format.GetByteOrder()); - register char temp, temp2; - - if (m_io_format.GetSign() != m_orig_format.GetSign()) { - if (m_io_format.GetByteOrder() == wxSND_SAMPLE_LE) - signer2 = 0x80; - else - signer1 = 0x80; - } - - if (swap) { - while (StreamOk()) { - temp = GET(); - temp2 = GET(); - PUT(temp2 ^ signer2); - if (!StreamOk()) { - m_in_sound->WriteBack(temp); - m_in_sound->WriteBack(temp2); - break; - } - PUT(temp ^ signer1); - } - } else { - while (StreamOk()) { - temp = GET(); - PUT(temp ^ signer1); - if (!StreamOk()) { - m_in_sound->WriteBack(temp); - break; - } - PUT(GET() ^ signer2); - } - } -} - -// --------------------------------------------------------------------------- -// Encoder part. -// --------------------------------------------------------------------------- - -void wxSoundPcmCodec::OutputSign8() -{ - unsigned char signer = 0; - - if (m_io_format.GetSign() != m_orig_format.GetSign()) - signer = 128; - - while (StreamOk()) - PUT((char)(GET() + signer)); -} - -// --------------------------------------------------------------------------- - -void wxSoundPcmCodec::OutputSwapAndSign16() -{ - bool swap = (m_io_format.GetByteOrder() != m_orig_format.GetByteOrder()); - unsigned short signer1 = 0, signer2 = 0; - register char temp, temp2; - - if (m_io_format.GetSign() != m_orig_format.GetSign()) - if (m_io_format.GetByteOrder() == wxSND_SAMPLE_LE) - signer1 = 0x80; - else - signer2 = 0x80; - - if (swap) { - while (StreamOk()) { - temp = GET(); - temp2 = GET(); - PUT(temp2 ^ signer1); - if (!StreamOk()) { - m_in_sound->WriteBack(temp); - m_in_sound->WriteBack(temp2); - break; - } - PUT(temp ^ signer2); - } - } else { - while (StreamOk()) { - temp = GET(); - temp2 = GET(); - PUT(temp ^ signer1); - if (!StreamOk()) { - m_in_sound->WriteBack(temp); - break; - } - PUT(temp2 ^ signer2); - } - } - -} - -// --------------------------------------------------------------------------- - -void wxSoundPcmCodec::Encode() -{ - if (m_io_format == m_orig_format) { - CopyToOutput(); - return; - } - - // Swap bytes - switch (m_io_format.GetBps()) { - case 8: - OutputSign8(); - break; - case 16: - OutputSwapAndSign16(); - break; - case 32: - case 64: - default: - break; - } -} diff --git a/utils/wxMMedia/sndpcm.h b/utils/wxMMedia/sndpcm.h deleted file mode 100644 index 20fa95848d..0000000000 --- a/utils/wxMMedia/sndpcm.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef __SNDPCM_H__ -#define __SNDPCM_H__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "sndfrmt.h" - -class wxSoundPcmCodec : public wxSoundCodec { - DECLARE_DYNAMIC_CLASS(wxSoundPcmCodec) - public: - wxSoundPcmCodec(); - virtual ~wxSoundPcmCodec(); - - size_t GetByteRate() const; - wxSoundDataFormat GetPreferredFormat(int codec = 0) const; - - void Decode(); - void Encode(); - - protected: - void InputSign8(); - void InputSwapAndSign16(); - void OutputSign8(); - void OutputSwapAndSign16(); - - protected: - friend class wxSoundDataFormat; - wxSoundDataFormat m_orig_format; - char m_char_stack; - bool m_char_bool; -}; - -#endif diff --git a/utils/wxMMedia/sndsnd.cpp b/utils/wxMMedia/sndsnd.cpp deleted file mode 100644 index b938f0a0b0..0000000000 --- a/utils/wxMMedia/sndsnd.cpp +++ /dev/null @@ -1,262 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// Name: sndsnd.cpp -// Purpose: wxMMedia -// Author: Guilhem Lavaux -// Created: 1997 -// Updated: 1998 -// Copyright: (C) 1997, 1998, Guilhem Lavaux -// License: wxWindows license -//////////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation "sndsnd.h" -#endif -#ifdef WX_PRECOMP -#include "wx_prec.h" -#else -#include "wx/wx.h" -#endif -#include "sndsnd.h" -#include "sndfrmt.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#define PROCESS_EVENT() wxYield() -// #define PROCESS_EVENT() - -// ---------------------------------------------------------------------------- -// wxSndBuffer: base sound buffer class -// ---------------------------------------------------------------------------- - - -wxSndBuffer::wxSndBuffer() - : m_sndmode(wxSND_OUTPUT), m_sndflags(0), m_sndoutput(NULL), m_sndcodec(NULL) -{ -} - -wxSndBuffer::~wxSndBuffer() -{ -} - -void wxSndBuffer::Set(wxSndFlags flags) -{ - m_sndflags |= flags; - - if ((m_sndflags & wxSND_BUFAUTO) && (flags & wxSND_BUFREADY)) - m_sndoutput->QueueBuffer(*this); -} - -void wxSndBuffer::SetError(wxSndError error) -{ - if (error == wxSND_NOERROR) - Clear(wxSND_BUFERR); - else - Set(wxSND_BUFERR); - - m_snderror = error; -} - -wxSndError wxSndBuffer::GetError() -{ - if (IsNotSet(wxSND_BUFERR)) - return wxSND_NOERROR; - Clear(wxSND_BUFERR); - return m_snderror; -} - -void wxSndBuffer::OnPlayFinished() -{ -} - -void wxSndBuffer::OnBufferOutFinished() -{ -} - -void wxSndBuffer::OnBufferInFinished(char *WXUNUSED(iobuf), - wxUint32& WXUNUSED(size)) -{ -} - -bool wxSndBuffer::Wait() -{ - if (IsNotSet(wxSND_BUFLOCKED)) - return FALSE; - - while (IsSet(wxSND_BUFLOCKED)) - PROCESS_EVENT(); - - return IsNotSet(wxSND_BUFERR); -} - -void wxSndBuffer::HardLock() -{ - m_mutex.Lock(); -} - -void wxSndBuffer::HardUnlock() -{ - m_mutex.Unlock(); -} - -void wxSndBuffer::ChangeCodec(int no) -{ - m_sndformat.SetCodecNo(no); - m_sndcodec = m_sndformat.GetCodec(); - m_sndcodec->SetIOBuffer(this); -} - -// ---------------------------------------------------------------------------- -// wxSndSimpleBuffer: the simplest sound buffer -// ---------------------------------------------------------------------------- - - -wxSndSimpleBuffer::wxSndSimpleBuffer(char *buffer, wxUint32 bufsize, - wxSndMode mode) - : wxSndBuffer() -{ - m_sndbuf = buffer; - m_sndsize = bufsize; - m_sndmode = mode; - - m_sndptr = 0; -} - -wxSndSimpleBuffer::~wxSndSimpleBuffer() -{ -} - -void wxSndSimpleBuffer::OnNeedOutputData(char *iobuf, wxUint32& size) -{ - char *buf = m_sndbuf + m_sndptr; - wxUint32 nbdata_left = m_sndsize - m_sndptr; - - if (m_sndptr >= m_sndsize) { - size = 0; - return; - } - - if (size > nbdata_left) - size = nbdata_left; - - m_sndptr += size; - - memcpy(iobuf, buf, size); -} - -void wxSndSimpleBuffer::OnBufferOutFinished() -{ - if (m_sndptr >= m_sndsize) - OnPlayFinished(); -} - -void wxSndSimpleBuffer::OnBufferInFinished(char *iobuf, wxUint32& size) -{ - char *raw_buf = m_sndbuf + m_sndptr; - wxUint32 data_left = m_sndsize - m_sndptr; - - if (!data_left) { - size = 0; - return; - } - - if (size > data_left) - size = data_left; - - memcpy(raw_buf, iobuf, size); - m_sndptr += size; -} - -void wxSndSimpleBuffer::SetData(char *buffer, wxUint32 bufsize, - wxSndMode mode) -{ - m_sndbuf = buffer; - m_sndsize = bufsize; - m_sndmode = mode; -} - -bool wxSndSimpleBuffer::RestartBuffer(wxSndMode mode) -{ - m_sndptr = 0; - return TRUE; -} - -wxUint32 wxSndSimpleBuffer::GetSize() const -{ - return m_sndsize; -} - -wxUint32 wxSndSimpleBuffer::Available() const -{ - return m_sndsize - m_sndptr; -} - -// ---------------------------------------------------------------------------- -// wxSound: base sound driver implementation -// ---------------------------------------------------------------------------- - -wxSound::wxSound() - : wxObject(), - m_lastbuf(NULL), m_sndcbk(NULL), m_snderror(wxSND_NOERROR) -{ - m_buffers.Clear(); -} - -wxSound::~wxSound() -{ - wxNode *node = m_buffers.First(); - - while (node) { - wxSndBuffer *buf = (wxSndBuffer *)node->Data(); - - buf->Clear(wxSND_BUFLOCKED); - } -} - -bool wxSound::QueueBuffer(wxSndBuffer& buf) -{ - if (buf.IsSet(wxSND_BUFLOCKED) || buf.IsNotSet(wxSND_BUFREADY)) - return FALSE; - - buf.Set(wxSND_BUFLOCKED); - buf.SetOutput(*this); - - m_buffers.Append(&buf); - return Wakeup(buf); -} - -bool wxSound::UnqueueBuffer(wxSndBuffer& buf) -{ - wxNode *node; - - if (buf.IsNotSet(wxSND_BUFLOCKED)) - return FALSE; - - node = m_buffers.Member(&buf); - if (!node) - return FALSE; - - StopBuffer(buf); - node = m_buffers.Member(&buf); - if (node) - delete node; - - return TRUE; -} - -void wxSound::Callback(wxSndCallback cbk) -{ - m_sndcbk = cbk; -} - -void wxSound::SetClientData(char *cdata) -{ - m_cdata = cdata; -} - -void wxSound::OnPlayBuffer(wxSndBuffer& buf) -{ - m_lastbuf = &buf; - if (m_sndcbk) - m_sndcbk(*this, buf, m_cdata); -} diff --git a/utils/wxMMedia/sndsnd.h b/utils/wxMMedia/sndsnd.h deleted file mode 100644 index 9fae1a8794..0000000000 --- a/utils/wxMMedia/sndsnd.h +++ /dev/null @@ -1,275 +0,0 @@ -/* Real -*- C++ -*- */ -// ///////////////////////////////////////////////////////////////////////////// -// Name: sndsnd.h -// Purpose: wxMMedia -// Author: Guilhem Lavaux -// Created: 1997 -// Updated: 1998 -// Copyright: (C) 1997, 1998, Guilhem Lavaux -// License: wxWindows license -// ///////////////////////////////////////////////////////////////////////////// -#ifndef __WX_SND_SOUND_H__ -#define __WX_SND_SOUND_H__ -#ifdef __GNUG__ -#pragma interface -#endif - -#ifdef WX_PRECOMP -#include "wx_prec.h" -#else -#include "wx/wx.h" -#endif -#include -#include "sndfrmt.h" -#include "mmtype.h" - -class wxSound; -class wxSndBuffer; - -typedef enum { - wxSND_OUTPUT, - wxSND_INPUT, - wxSND_DUPLEX, - wxSND_OTHER_IO -} /// The possible sound output modes - wxSndMode; - -typedef enum { - wxSND_NOERROR = 0, - wxSND_NOCAPS, - wxSND_CANTOPEN, - wxSND_NOMEM, - wxSND_READERR, - wxSND_WRITEERR, - wxSND_CANTSET -} /// Sound errors - wxSndError; - -/// Sound callback -typedef void (*wxSndCallback)(wxSound&, wxSndBuffer&, char *); - -/// Sound flags -typedef wxUint16 wxSndFlags; - -/** @name Sound buffer flags */ -/// buffer ready -#define wxSND_BUFREADY 0x0001 -/// an error occured -#define wxSND_BUFERR 0x0002 -/// buffer is in use -#define wxSND_BUFLOCKED 0x0004 -/// the driver mustn't unqueue it -#define wxSND_KEEPQUEUED 0x0008 -/// automatic: when BUFREADY is set play the buffer -#define wxSND_BUFAUTO 0x0010 -/// -#define wxSND_UNFINISHED 0x0020 -/// buffer is nearly being unqueued -#define wxSND_UNQUEUEING 0x0040 -/// driver wants the buffer stop -#define wxSND_BUFSTOP 0x0080 -/// buffer will loop -#define wxSND_LOOP 0x0100 - -/** @name Sound data format */ -/// little endian -#define wxSND_SAMPLE_LE 0 -/// big endian -#define wxSND_SAMPLE_BE 1 -/// unsigned samples -#define wxSND_SAMPLE_UNSIGNED 0 -/// signed samples -#define wxSND_SAMPLE_SIGNED 1 - -/** @name wxSndBuffer - * @memo wxSndBuffer is the basic class for all the sound codec. - * @author Guilhem Lavaux - */ -class wxSndBuffer : public wxObject { - /// It is an abstract class - DECLARE_ABSTRACT_CLASS(wxSndBuffer) -protected: - wxMutex m_mutex; - /// output mode - wxSndMode m_sndmode; - /// last error - wxSndError m_snderror; - /// some flag - wxSndFlags m_sndflags; - /// last sound driver used - wxSound *m_sndoutput; - /// sound data format - wxSoundDataFormat m_sndformat; - /// current sound codec - wxSoundCodec *m_sndcodec; -public: - /** @name constructor and destructor */ - //@{ - /// Construct an uninitialized wxSndBuffer - wxSndBuffer(); - /// Destroy - virtual ~wxSndBuffer(); - //@} - - /** @name Functions returning the current state */ - //@{ - /// @return current mode - inline wxSndMode GetMode() const { return m_sndmode; } - /// @return sound data format - inline wxSoundDataFormat& GetFormat() { return m_sndformat; } - /// @return the size of the buffer - virtual wxUint32 GetSize() const = 0; - /// @return bytes left - virtual wxUint32 Available() const = 0; - - /** enable the specified flags - * @param flags - */ - void Set(wxSndFlags flags); - /** disable the specified flags - * @param flags - */ - inline void Clear(wxSndFlags flags) - { m_sndflags &= ~flags; } - /** Check if the specified flags is set - * @param flags - * @return TRUE if all flags is set - */ - inline bool IsSet(wxSndFlags flags) const - { return ((m_sndflags & flags) == flags); } - /** Check if the specified flags is not set - * @param flags - * @return TRUE if at least one flag is not set - */ - inline bool IsNotSet(wxSndFlags flags) const - { return ((m_sndflags & flags) != flags); } - /** Check if the buffer is currently being played - * @return TRUE - if the buffer is being played - */ - inline bool IsPlaying() const - { return IsSet(wxSND_BUFLOCKED); } - //@} - - /// - inline void SetOutput(wxSound& snd) - { m_sndoutput = &snd; } - /// - inline wxSoundCodec *GetCurrentCodec() const - { return m_sndcodec; } - /// - void HardLock(); - /// - void HardUnlock(); - - /// - wxSndError GetError(); - /// - void SetError(wxSndError err); - - /// - virtual bool Wait(); - /// - virtual bool RestartBuffer(wxSndMode mode) = 0; - /// - virtual bool Abort() { return TRUE; } - - /// - virtual void OnPlayFinished(); - - /** Data exchanging functions */ - //@{ - /// - virtual void OnNeedOutputData(char *io_buf, wxUint32& size) = 0; - /// - virtual void OnBufferOutFinished(); - /// - virtual void OnBufferInFinished(char *iobuf, wxUint32& size); - //@} - -protected: - void ChangeCodec(int no); -}; - -class wxSndSimpleBuffer : public wxSndBuffer { - DECLARE_DYNAMIC_CLASS(wxSndSimpleBuffer) -protected: - /// sound buffer - char *m_sndbuf; - /// size of the sound buffer - wxUint32 m_sndsize; - /// current position in the sound buffer - wxUint32 m_sndptr; -public: - wxSndSimpleBuffer(char *buffer = NULL, wxUint32 bufsize = 0, - wxSndMode mode = wxSND_OUTPUT); - virtual ~wxSndSimpleBuffer(); - - void SetData(char *buffer, wxUint32 bufsize, - wxSndMode mode = wxSND_OUTPUT); - inline void SetSoundFormat(const wxSoundDataFormat& format); - - void OnNeedOutputData(char *io_buf, wxUint32& size); - void OnNeedInputData(wxUint32& size); - - void OnBufferOutFinished(); - void OnBufferInFinished(char *iobuf, wxUint32& size); - - bool RestartBuffer(wxSndMode mode); - wxUint32 GetSize() const; - wxUint32 Available() const; -}; - -/// -class wxSound : public wxObject { - /// - DECLARE_ABSTRACT_CLASS(wxSound) -protected: - friend class wxFragmentBuffer; - - /// - wxSndBuffer *m_lastbuf; - /// - wxList m_buffers; - /// - wxSndCallback m_sndcbk; - /// - wxSndError m_snderror; - /// - char *m_cdata; -public: - /// - wxSound(); - /// - virtual ~wxSound(); - - /// - virtual bool QueueBuffer(wxSndBuffer& buf); - /// - virtual bool UnqueueBuffer(wxSndBuffer& buf); - /// - inline wxSndBuffer *LastBufferPlayed() - { return m_lastbuf; } - - /// - wxSndError GetError() { return m_snderror; } - - /// - void Callback(wxSndCallback cbk); - /// - void SetClientData(char *cdata); - /// - virtual void OnPlayBuffer(wxSndBuffer& buf); -protected: - /// - virtual bool Wakeup(wxSndBuffer& buf) = 0; - /// - virtual void StopBuffer(wxSndBuffer& buf) = 0; - - /// - virtual inline bool OnSetupDriver(wxSndBuffer& WXUNUSED(buf), - wxSndMode WXUNUSED(mode)) - { return TRUE; } -}; - -#endif diff --git a/utils/wxMMedia/snduss.cpp b/utils/wxMMedia/snduss.cpp deleted file mode 100644 index 100cd2a855..0000000000 --- a/utils/wxMMedia/snduss.cpp +++ /dev/null @@ -1,297 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// Name: snduss.cpp -// Purpose: wxMMedia -// Author: Guilhem Lavaux -// Created: 1997 -// Updated: 1998 -// Copyright: (C) 1997, 1998, Guilhem Lavaux -// License: wxWindows license -//////////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation "snduss.h" -#endif - -#include -#include -#include -#include -#include - -#include "wx/app.h" -#include "wx/utils.h" - -#define WXMMEDIA_INTERNAL -#include "snduss.h" -#include "sndfrmt.h" - -wxUssSound::wxUssSound() - : wxSound(), - m_srate(0), m_bps(0), m_stereo(0), - m_mode(wxSND_OTHER_IO), - m_stop_thrd(TRUE), m_sleeping(FALSE) -{ - m_fd = -1; - m_ussformat.SetCodecNo(WXSOUND_PCM); - m_ussformat.SetSign(wxSND_SAMPLE_SIGNED); - m_ussformat.SetByteOrder(wxSND_SAMPLE_LE); - - m_sndbuf = new wxStreamBuffer(wxStreamBuffer::read_write); - m_sndbuf->Flushable(FALSE); - m_sndbuf->Fixed(TRUE); -} - -wxUssSound::~wxUssSound() -{ - if (!m_stop_thrd) { - m_stop_thrd = TRUE; - if (m_sleeping) { - m_sleep_mtx.Lock(); - m_sleep_cond.Signal(); - m_sleep_mtx.Unlock(); - } - Join(); - } - - if (m_fd != -1) - close(m_fd); -} - -bool wxUssSound::Wakeup(wxSndBuffer& WXUNUSED(buf)) -{ - printf("Waking up (wxUssSound::Wakeup) ...\n"); - if (m_stop_thrd) { - m_stop_thrd = FALSE; - Entry(); -// wxThread::Create(); - } - - if (m_sleeping) { - m_sleep_mtx.Lock(); - m_sleep_cond.Signal(); - m_sleep_mtx.Unlock(); - } - - return TRUE; -} - -void wxUssSound::StopBuffer(wxSndBuffer& buf) -{ - buf.HardLock(); - buf.Set(wxSND_BUFSTOP); - buf.HardUnlock(); - while (buf.IsSet(wxSND_BUFSTOP)) - wxYield(); -// usleep(0); -} - -void wxUssSound::USS_Sleep() -{ - bool ret; - - printf("Asleeping ...\n"); - m_sleeping = TRUE; - m_sleep_mtx.Lock(); - ret = m_sleep_cond.Wait(m_sleep_mtx, 10, 0); - m_sleep_mtx.Unlock(); - m_sleeping = FALSE; - - printf("Waking up ...\n"); - if (!ret) - m_stop_thrd = TRUE; -} - -bool wxUssSound::DoInput(wxSndBuffer *buf) -{ - wxUint32 bufsize; - wxSoundCodec *codec = buf->GetCurrentCodec(); - - m_sndbuf->ResetBuffer(); - - bufsize = codec->Available(); - if (bufsize > m_max_bufsize) - bufsize = m_max_bufsize; - - if (!bufsize) { - buf->Clear(wxSND_BUFLOCKED | wxSND_BUFREADY); - return false; - } - read(m_fd, m_sndbuf->GetBufferStart(), bufsize); - codec->Encode(); - - return true; -} - -bool wxUssSound::DoOutput(wxSndBuffer *buf) -{ - wxSoundCodec *codec = buf->GetCurrentCodec(); - - m_sndbuf->ResetBuffer(); - - if (!codec->Available()) { - buf->Clear(wxSND_BUFLOCKED | wxSND_BUFREADY); - return FALSE; - } - codec->Decode(); - write(m_fd, m_sndbuf->GetBufferStart(), m_sndbuf->GetIntPosition()); - - // Well ... it's not accurate ! :-| - buf->OnBufferOutFinished(); - - return TRUE; -} - -bool wxUssSound::InitBuffer(wxSndBuffer *buf) -{ - wxSoundCodec *codec; - - if (!OnSetupDriver(*buf, buf->GetMode())) { - if (buf->IsNotSet(wxSND_BUFREADY)) - return FALSE; - } - - codec = buf->GetCurrentCodec(); - switch (m_mode) { - case wxSND_INPUT: - codec->SetInStream(m_sndbuf); - codec->InitIO(m_ussformat); - codec->InitMode(wxSoundCodec::ENCODING); - break; - case wxSND_OUTPUT: - codec->SetOutStream(m_sndbuf); - codec->InitIO(m_ussformat); - codec->InitMode(wxSoundCodec::DECODING); - break; - } - return TRUE; -} - -void *wxUssSound::Entry() -{ - wxNode *node; - wxSndBuffer *buf; - - node = m_buffers.First(); - if (!node) { - m_stop_thrd = FALSE; - return NULL; - } - - buf = (wxSndBuffer *)node->Data(); - InitBuffer(buf); - - while (!m_stop_thrd) { - buf->HardLock(); - if (buf->IsSet(wxSND_BUFSTOP)) { - buf->HardUnlock(); - goto sound_clean_buffer; - } - switch(m_mode) { - case wxSND_INPUT: - if (!DoInput(buf)) - goto sound_clean_buffer; - break; - case wxSND_OUTPUT: - if (!DoOutput(buf)) - goto sound_clean_buffer; - break; - case wxSND_DUPLEX: - case wxSND_OTHER_IO: - goto sound_clean_buffer; - break; - } - buf->HardUnlock(); - continue; - sound_clean_buffer: - buf->GetCurrentCodec()->ExitMode(); - delete node; - node = m_buffers.First(); - if (!node) - USS_Sleep(); - if (node) - buf = (wxSndBuffer *)node->Data(); - } - return NULL; -} - -bool wxUssSound::OnSetupDriver(wxSndBuffer& buf, wxSndMode WXUNUSED(mode)) -{ - wxSoundDataFormat format; - wxSoundCodec *codec; - - codec = buf.GetCurrentCodec(); - format = codec->GetPreferredFormat(WXSOUND_PCM); - - if ((format.GetSampleRate() != m_srate) || - (format.GetBps() != m_bps) || - (format.GetStereo() != m_stereo)) { - - if (!SetupSound(format.GetSampleRate(), format.GetBps(), - format.GetStereo())) { - m_buffers.DeleteObject(&buf); - buf.Clear(wxSND_BUFLOCKED | wxSND_BUFREADY); - buf.SetError(wxSND_CANTSET); - return FALSE; - } - m_mode = wxSND_OTHER_IO; - } - - if (buf.GetMode() != m_mode) { - m_mode = buf.GetMode(); - return FALSE; - } - - return TRUE; -} - -wxUint32 wxUssSound::GetNbFragments() -{ - struct audio_buf_info frag_info; - - ioctl(m_fd, SNDCTL_DSP_GETOSPACE, &frag_info); - - return frag_info.fragstotal; -} - -wxUint32 wxUssSound::GetFragmentSize() -{ - return m_max_bufsize; -} - -bool wxUssSound::SetupSound(wxUint16 srate, wxUint8 bps, bool stereo) -{ - int tmp; - unsigned long tmp_ul; - - if (m_fd != -1) { - delete m_sndbuf; - fsync(m_fd); - close(m_fd); - } - - m_fd = open("/dev/dsp", O_RDWR); - - tmp = stereo; - if (ioctl(m_fd, SNDCTL_DSP_STEREO, &tmp) < 0) - return FALSE; - m_stereo = tmp; - - tmp_ul = srate; - if (ioctl(m_fd, SNDCTL_DSP_SPEED, &tmp_ul) < 0) - return FALSE; - m_srate = tmp_ul; - - tmp = bps; - if (ioctl(m_fd, SNDCTL_DSP_SAMPLESIZE, &tmp) < 0) - return FALSE; - m_bps = tmp; - - ioctl(m_fd, SNDCTL_DSP_GETBLKSIZE, &tmp); - m_max_bufsize = tmp; - m_sndbuf->SetBufferIO(m_max_bufsize); - - m_ussformat.SetBps(m_bps); - m_ussformat.SetChannels((m_stereo) ? 2 : 1); - m_ussformat.SetSampleRate(m_srate); - - return TRUE; -} diff --git a/utils/wxMMedia/snduss.h b/utils/wxMMedia/snduss.h deleted file mode 100644 index 10b9cb3945..0000000000 --- a/utils/wxMMedia/snduss.h +++ /dev/null @@ -1,86 +0,0 @@ -// ///////////////////////////////////////////////////////////////////////////// -// Name: snduss.h -// Purpose: wxMMedia -// Author: Guilhem Lavaux -// Created: 1997 -// Updated: 1998 -// Copyright: (C) 1997, 1998, Guilhem Lavaux -// License: wxWindows license -// ///////////////////////////////////////////////////////////////////////////// -/* Real -*- C++ -*- */ -#ifndef __SND_ussnd_H__ -#define __SND_ussnd_H__ -#ifdef __GNUG__ -#pragma interface -#endif - -#include -#include "sndsnd.h" -#include "sndfrag.h" -#include "sndfrmt.h" - -/// -class wxUssSound : public wxSound, public wxThread { - /// - DECLARE_DYNAMIC_CLASS(wxUssSound) -public: - wxUssSound(); - /// - virtual ~wxUssSound(); - - /// - void OnNeedBuffer(); -protected: - /// - virtual bool Wakeup(wxSndBuffer& buf); - /// - void USS_Sleep(); - /// - virtual void StopBuffer(wxSndBuffer& buf); - - /// - bool OnSetupDriver(wxSndBuffer& buf, wxSndMode mode); - - /// - bool SetupSound(wxUint16 srate, wxUint8 bps, bool stereo); - - /// - wxUint32 GetNbFragments(); - /// - wxUint32 GetFragmentSize(); - /// - void ThreadEntryPoint(); - -protected: - /// - wxUint16 m_srate; - /// - wxUint8 m_bps; - /// - wxUint32 m_max_bufsize; - /// - bool m_stereo; - /// - wxSndMode m_mode; - /// - wxSoundDataFormat m_ussformat; - /// - wxStreamBuffer *m_sndbuf; - /// - bool m_stop_thrd, m_sleeping; - /// Sound file descriptor. - int m_fd; - /// Thread sleep mutexes and conditions. - wxMutex m_sleep_mtx; - wxCondition m_sleep_cond; - - /// - bool InitBuffer(wxSndBuffer *buf); - bool DoInput(wxSndBuffer *buf); - bool DoOutput(wxSndBuffer *buf); - - /// - virtual void *Entry(); -}; - -#endif diff --git a/utils/wxMMedia/sndwav.cpp b/utils/wxMMedia/sndwav.cpp deleted file mode 100644 index 340d8ed2c3..0000000000 --- a/utils/wxMMedia/sndwav.cpp +++ /dev/null @@ -1,183 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// Name: sndwav.cpp -// Purpose: wxMMedia -// Author: Guilhem Lavaux -// Created: 1997 -// Updated: February 1998 -// Copyright: (C) 1997, 1998, Guilhem Lavaux -// License: wxWindows license -//////////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation "sndwav.h" -#endif - -#ifdef WX_PRECOMP -#include "wx_prec.h" -#else -#include "wx/wx.h" -#endif -#include "sndwav.h" -#include "sndfrmt.h" -#include "sndpcm.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -wxSndWavCodec::wxSndWavCodec() - : wxSndFileCodec(), riff_codec() -{ - m_sndtime.hours = -1; -} - -wxSndWavCodec::wxSndWavCodec(wxOutputStream& s, bool seekable) - : wxSndFileCodec(s, seekable) -{ - if (!seekable) - CacheIO(); - riff_codec = wxRiffCodec(*m_ostream); - m_sndtime.hours = -1; -} - -wxSndWavCodec::wxSndWavCodec(wxInputStream& s, bool preload, bool seekable) - : wxSndFileCodec(s, preload, seekable) -{ - if (!seekable) - CacheIO(); - - riff_codec = wxRiffCodec(*m_istream); - m_sndtime.hours = -1; -} - -wxSndWavCodec::wxSndWavCodec(const wxString& fname) - : wxSndFileCodec(fname) -{ - riff_codec = wxRiffCodec(*m_istream); - m_sndtime.hours = -1; -} - -wxUint32 wxSndWavCodec::PrepareToPlay() -{ - if (!riff_codec.RiffReset(RIFF_READ)) - return 0; - - if (!riff_codec.FindChunk("RIFF", TRUE)) { - wxSndFileCodec::m_mmerror = wxMMFILE_INVALID; - return 0; - } - - char tmp_buf[5]; - riff_codec.ReadData(tmp_buf, 4); - tmp_buf[4] = 0; - if (wxString("WAVE") != tmp_buf) { - wxSndFileCodec::m_mmerror = wxMMFILE_INVALID; - return 0; - } - if (!riff_codec.FindChunk("fmt ", TRUE)) - return 0; - - riff_codec.Read16(wav_hdr.format); - riff_codec.Read16(wav_hdr.channels); - riff_codec.Read32(wav_hdr.sample_fq); - riff_codec.Read32(wav_hdr.byte_p_sec); - riff_codec.Read16(wav_hdr.byte_p_spl); - riff_codec.Read16(wav_hdr.bits_p_spl); - - if (!riff_codec.FindChunk("data")) - return 0; - - m_sndmode = wxSND_OUTPUT; - ChangeCodec(wav_hdr.format); - - m_sndformat.SetSampleRate(wav_hdr.sample_fq); - m_sndformat.SetBps(wav_hdr.bits_p_spl); - m_sndformat.SetChannels(wav_hdr.channels); - - if (wav_hdr.format == WXSOUND_PCM) { - m_sndformat.SetSign(wxSND_SAMPLE_SIGNED); - m_sndformat.SetByteOrder(wxSND_SAMPLE_LE); - } - - wxUint32 sec1 = riff_codec.GetChunkLength() / wav_hdr.byte_p_sec, - sec2 = sec1 % 3600; - - m_sndtime.hours = sec1 / 3600; - m_sndtime.minutes = sec2 / 60; - m_sndtime.seconds = sec2 % 60; - - wxSndFileCodec::m_mmerror = wxMMFILE_NOERROR; - - return riff_codec.GetChunkLength(); -} - -wxSndWavCodec::~wxSndWavCodec() -{ -} - -bool wxSndWavCodec::OnNeedData(char *buf, wxUint32 size) -{ - return riff_codec.ReadData(buf, size); -} - -bool wxSndWavCodec::OnWriteData(char *buf, wxUint32 size) -{ - return riff_codec.WriteData(buf, size); -} - -bool wxSndWavCodec::PrepareToRecord(wxUint32 m_fsize) -{ - wxUint32 total_size; - - if (!riff_codec.RiffReset(RIFF_WRITE)) - return FALSE; - - total_size = 16 + sizeof(wav_hdr) + m_fsize; - - if (!riff_codec.CreateChunk("RIFF", total_size)) - return FALSE; - riff_codec.WriteData("WAVE", 4); - if (!riff_codec.CreateChunk("fmt ", sizeof(wav_hdr))) - return FALSE; - - wav_hdr.format = 1; // PCM_WAV_FORMAT - wav_hdr.channels = m_sndformat.GetChannels(); - wav_hdr.sample_fq = m_sndformat.GetSampleRate(); - wav_hdr.byte_p_spl = (m_sndformat.GetBps() / 8) * wav_hdr.channels; - wav_hdr.byte_p_sec = m_sndformat.GetCodec()->GetByteRate(); - wav_hdr.bits_p_spl = m_sndformat.GetBps(); - ChangeCodec(WXSOUND_PCM); - - if (wav_hdr.format == WXSOUND_PCM) { - m_sndformat.SetSign(wxSND_SAMPLE_SIGNED); - m_sndformat.SetByteOrder(wxSND_SAMPLE_LE); - } - - riff_codec.Write16(wav_hdr.format); - riff_codec.Write16(wav_hdr.channels); - riff_codec.Write32(wav_hdr.sample_fq); - riff_codec.Write32(wav_hdr.byte_p_sec); - riff_codec.Write16(wav_hdr.byte_p_spl); - riff_codec.Write16(wav_hdr.bits_p_spl); - - if (!riff_codec.CreateChunk("data", m_fsize)) - return FALSE; - return TRUE; -} - -void wxSndWavCodec::SetFile(wxInputStream& s, bool preload, bool seekable) -{ - wxMMediaFile::SetFile(s, preload, seekable); - if (!seekable) - CacheIO(); - - riff_codec.SetFile((seekable) ? s : *m_istream); -} - -void wxSndWavCodec::SetFile(wxOutputStream& s, bool seekable) -{ - wxMMediaFile::SetFile(s, seekable); - if (!seekable) - CacheIO(); - - riff_codec.SetFile((seekable) ? s : *m_ostream); -} diff --git a/utils/wxMMedia/sndwav.h b/utils/wxMMedia/sndwav.h deleted file mode 100644 index b442e34be1..0000000000 --- a/utils/wxMMedia/sndwav.h +++ /dev/null @@ -1,59 +0,0 @@ -// ///////////////////////////////////////////////////////////////////////////// -// Name: sndwav.h -// Purpose: wxMMedia -// Author: Guilhem Lavaux -// Created: 1997 -// Updated: February 1998 -// Copyright: (C) 1997, 1998, Guilhem Lavaux -// License: wxWindows license -// ///////////////////////////////////////////////////////////////////////////// -/* Real -*- C++ -*- */ -#ifndef __SND_wav_H__ -#define __SND_wav_H__ -#ifdef __GNUG__ -#pragma interface -#endif - -#include "mmriff.h" -#include "sndfile.h" - -/// -class wxSndWavCodec : public wxSndFileCodec { - /// - DECLARE_DYNAMIC_CLASS(wxSndWavCodec) -public: - /// - wxSndWavCodec(); - /// - wxSndWavCodec(wxInputStream& s, bool preload = FALSE, bool seekable = TRUE); - /// - wxSndWavCodec(wxOutputStream& s, bool seekable = TRUE); - /// - wxSndWavCodec(const wxString& fname); - /// - virtual ~wxSndWavCodec(); - - virtual bool OnNeedData(char *buf, wxUint32 size); - virtual bool OnWriteData(char *buf, wxUint32 size); - - virtual wxUint32 PrepareToPlay(); - virtual bool PrepareToRecord(wxUint32 file_size); - - virtual void SetFile(wxInputStream& s, bool preload = FALSE, - bool seekable = FALSE); - virtual void SetFile(wxOutputStream& s, - bool seekable = FALSE); - -protected: - wxRiffCodec riff_codec; - struct { - wxUint16 format; - wxUint16 channels; - wxUint32 sample_fq; - wxUint32 byte_p_sec; - wxUint16 byte_p_spl; - wxUint16 bits_p_spl; - } wav_hdr; -}; - -#endif diff --git a/utils/wxMMedia/sndwin.cpp b/utils/wxMMedia/sndwin.cpp deleted file mode 100644 index 8161ed881f..0000000000 --- a/utils/wxMMedia/sndwin.cpp +++ /dev/null @@ -1,384 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// Name: sndwin.cpp -// Purpose: wxMMedia -// Author: Guilhem Lavaux -// Created: 1997 -// Updated: 1998 -// Copyright: (C) 1997, 1998, Guilhem Lavaux -// License: wxWindows license -//////////////////////////////////////////////////////////////////////////////// -#ifdef WX_PRECOMP -#include "wx/wxprec.h" -#else -#include "wx/wx.h" -#endif -#include - -#define WXMMEDIA_INTERNAL -#include "sndwin.h" - -#define MMD_WIN_IO_BSIZE 16384 - -#include - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -wxSndWinFragment::wxSndWinFragment(wxSound& io_drv) - : wxFragmentBuffer(io_drv) -{ -} - -wxSndWinFragment::~wxSndWinFragment(void) -{ -} - -void wxSndWinFragment::AllocIOBuffer(void) -{ - wxWinSound *w_snd = (wxWinSound *) m_iodrv; - wxUint8 i; - - m_maxoq = 5; - m_maxiq = 5; - - m_lstoptrs = m_optrs = new wxFragBufPtr[m_maxoq]; - m_lstiptrs = m_iptrs = new wxFragBufPtr[m_maxiq]; - - for (i=0;iPrepareHeader(m_lstoptrs[i], wxSND_OUTPUT); - } - - for (i=0;iPrepareHeader(m_lstiptrs[i], wxSND_INPUT); - } -} - -void wxSndWinFragment::FreeIOBuffer(void) -{ - wxWinSound *w_snd = (wxWinSound *)m_iodrv; - wxUint8 i; - - if (!m_lstoptrs && !m_lstiptrs) - return; - - for (i=0;iUnprepareHeader(m_lstoptrs[i], wxSND_OUTPUT); - delete m_lstoptrs[i].buffers; - } - - for (i=0;iUnprepareHeader(m_lstiptrs[i], wxSND_INPUT); - delete m_lstiptrs[i].buffers; - } - - delete[] m_lstoptrs; - delete[] m_lstiptrs; - - m_lstoptrs = m_lstiptrs = NULL; - m_maxoq = m_maxiq = 0; -} - -void wxSndWinFragment::WaitForAll() -{ - bool buf_busy = TRUE; - int i; - - m_dontq = TRUE; - - while (buf_busy) { - buf_busy = FALSE; - - for (i=0;iuser_data; - wxWinSound *w_snd = (wxWinSound *)m_iodrv; - MMRESULT result; - - switch (mode) { - case wxSND_INPUT: - result = waveInAddBuffer(w_snd->internal->devin_id, info->hdr, - sizeof(WAVEHDR)); - break; - case wxSND_OUTPUT: - result = waveOutWrite(w_snd->internal->devout_id, info->hdr, - sizeof(WAVEHDR)); - printf("WINOUT: result=%d\n", result); - break; - } - return TRUE; -} - -wxWinSound::wxWinSound(void) - : wxSound(), - fragments(*this) -{ - internal = new wxWinSoundInternal; - internal->devout_id = 0; - internal->devin_id = 0; - internal->sndWin = 0; - - wout_opened = FALSE; - win_opened = FALSE; - curr_o_srate = (wxUint32)-1; - curr_o_bps = (wxUint8)-1; - curr_o_stereo = (bool)-1; - curr_i_srate = (wxUint32)-1; - curr_i_bps = (wxUint8)-1; - curr_i_stereo = (bool)-1; -} - -wxWinSound::~wxWinSound(void) -{ - int i; - - fragments.WaitForAll(); - - if (wout_opened) - waveOutReset(internal->devout_id); - if (win_opened) - waveInReset(internal->devout_id); - - fragments.FreeIOBuffer(); - - if (wout_opened) - waveOutClose(internal->devout_id); - if (win_opened) - waveInClose(internal->devin_id); - - if (internal->sndWin) - ::DestroyWindow(internal->sndWin); - - delete internal; -} - -bool wxWinSound::Wakeup(wxSndBuffer& buf) -{ - if (!Reopen(buf, FALSE)) { - buf.Clear(wxSND_BUFLOCKED); - return FALSE; - } - - fragments.OnBufferFinished(NULL); - return TRUE; -} - -void wxWinSound::PrepareHeader(wxFragmentBuffer::wxFragBufPtr& frag, - wxSndMode mode) -{ - wxSndWinInfo *info; - WAVEHDR *hdr; - - if ((mode == wxSND_INPUT && !win_opened) || - (mode == wxSND_OUTPUT && !wout_opened)) - return; - - info = new wxSndWinInfo; - - info->h_data = GlobalAlloc(GMEM_MOVEABLE | GMEM_SHARE, frag.size); - info->h_hdr = GlobalAlloc(GMEM_MOVEABLE | GMEM_SHARE, sizeof(WAVEHDR)); - - info->data = (char *)GlobalLock(info->h_data); - hdr = info->hdr = (WAVEHDR *)GlobalLock(info->h_hdr); - - memset(hdr, 0, sizeof(*hdr)); - hdr->lpData = info->data; - hdr->dwBufferLength = frag.size; - hdr->dwUser = (DWORD)&frag; - hdr->dwFlags = WHDR_DONE; - - if (mode == wxSND_INPUT) { - MMRESULT result = waveInPrepareHeader(internal->devin_id, hdr, - sizeof(WAVEHDR)); - - printf("prepareIn = %d\n", result); - if (result != MMSYSERR_NOERROR) - wxExit(); - } else { - MMRESULT result = waveOutPrepareHeader(internal->devout_id, hdr, - sizeof(WAVEHDR)); - printf("prepareOut = %d\n", result); - if (result != MMSYSERR_NOERROR) - wxExit(); - } - - frag.user_data = (char *)info; - frag.data = info->data; -} - -void wxWinSound::UnprepareHeader(wxFragmentBuffer::wxFragBufPtr& frag, - wxSndMode mode) -{ - wxSndWinInfo *info = (wxSndWinInfo *)frag.user_data; - - if ((mode == wxSND_INPUT && !win_opened) || - (mode == wxSND_OUTPUT && !wout_opened)) - return; - - MMRESULT result; - - if (mode == wxSND_INPUT) { - result = waveInUnprepareHeader(internal->devin_id, info->hdr, sizeof(*info->hdr)); - } else { - result = waveOutUnprepareHeader(internal->devout_id, info->hdr, sizeof(*info->hdr)); - } - - printf("unprepare = %d\n", result); - - GlobalUnlock(info->h_hdr); - GlobalUnlock(info->h_data); - - GlobalFree(info->h_hdr); - GlobalFree(info->h_data); - - delete info; -} - -extern char wxCanvasClassName[]; - -LRESULT APIENTRY _EXPORT wxSoundHandlerWndProc(HWND hWnd, UINT message, - WPARAM wParam, LPARAM lParam) -{ - switch (message) { - case MM_WOM_DONE: { - wxWinSound *snd_drv = (wxWinSound *)GetWindowLong(hWnd, GWL_USERDATA); - WAVEHDR *hdr = (WAVEHDR *)lParam; - wxFragmentBuffer::wxFragBufPtr *buf = - (wxFragmentBuffer::wxFragBufPtr *)hdr->dwUser; - - // To be sure ... - hdr->dwFlags |= WHDR_DONE; - - snd_drv->fragments.OnBufferFinished(buf); - break; - } - case MM_WOM_OPEN: - printf("wave Open ack\n"); - break; - case MM_WOM_CLOSE: - printf("wave Close ack\n"); - break; - default: - return DefWindowProc(hWnd, message, wParam, lParam); - } - return (LRESULT)0; -} - -void wxWinSound::StopBuffer(wxSndBuffer& buf) -{ - buf.HardLock(); - buf.Set(wxSND_BUFSTOP); - fragments.AbortBuffer(buf); - buf.HardUnlock(); - - while (buf.IsSet(wxSND_BUFSTOP)) - wxYield(); -} - -bool wxWinSound::Reopen(wxSndBuffer& buf, bool force) -{ - WAVEFORMATEX wformat; - - if ((buf.GetSampleRate() != curr_o_srate) || - (buf.GetBps() != curr_o_bps) || - (buf.GetStereo() != curr_o_stereo) || - (buf.GetMode() != curr_mode)) - force = TRUE; - - if (force) { - wxUint32 *curr_srate = - (buf.GetMode() == wxSND_OUTPUT) ? &curr_o_srate : &curr_i_srate; - wxUint8 *curr_bps = - (buf.GetMode() == wxSND_OUTPUT) ? &curr_o_bps : &curr_i_bps; - bool *curr_stereo = - (buf.GetMode() == wxSND_OUTPUT) ? &curr_o_stereo : &curr_i_stereo; - - fragments.WaitForAll(); - fragments.FreeIOBuffer(); - - if (!internal->sndWin) { - FARPROC proc = MakeProcInstance((FARPROC)wxSoundHandlerWndProc, wxGetInstance()); - - internal->sndWin = ::CreateWindow(wxCanvasClassName, NULL, 0, - 0, 0, 0, 0, NULL, (HMENU) NULL, - wxGetInstance(), 0); - - ::SetWindowLong(internal->sndWin, GWL_WNDPROC, - (LONG)proc); - ::SetWindowLong(internal->sndWin, GWL_USERDATA, (LONG) this); - } - - if (wout_opened) { - waveOutClose(internal->devout_id); - wout_opened = FALSE; - } - if (win_opened) { - waveInClose(internal->devin_id); - win_opened = FALSE; - } - - *curr_srate = buf.GetSampleRate(); - *curr_bps = buf.GetBps(); - *curr_stereo = buf.GetStereo(); - wformat.wFormatTag = WAVE_FORMAT_PCM; - wformat.nChannels = curr_o_stereo+1; - - wformat.nSamplesPerSec = curr_o_srate; - wformat.nBlockAlign = curr_o_bps / 8 * wformat.nChannels; - wformat.nAvgBytesPerSec = - wformat.nSamplesPerSec * wformat.nBlockAlign; - wformat.wBitsPerSample = curr_o_bps; - wformat.cbSize = 0; - - if (buf.GetMode() == wxSND_OUTPUT) { - MMRESULT result = waveOutOpen(&internal->devout_id, - WAVE_MAPPER, &wformat, - (DWORD)internal->sndWin, (DWORD)this, - CALLBACK_WINDOW); - if (result != MMSYSERR_NOERROR) - return FALSE; - internal->devin_id = 0; - wout_opened = TRUE; - curr_mode = wxSND_OUTPUT; - - fragments.AllocIOBuffer(); - } - else { - MMRESULT result = waveInOpen(&internal->devin_id, - WAVE_MAPPER, &wformat, - (DWORD)internal->sndWin, (DWORD)this, - CALLBACK_FUNCTION); - if (result != MMSYSERR_NOERROR) - return FALSE; - internal->devout_id = 0; - win_opened = TRUE; - curr_mode = wxSND_INPUT; - - fragments.AllocIOBuffer(); - } - } - return TRUE; -} diff --git a/utils/wxMMedia/sndwin.h b/utils/wxMMedia/sndwin.h deleted file mode 100644 index 5ac3eb07a9..0000000000 --- a/utils/wxMMedia/sndwin.h +++ /dev/null @@ -1,108 +0,0 @@ -// ///////////////////////////////////////////////////////////////////////////// -// Name: sndwin.h -// Purpose: wxMMedia -// Author: Guilhem Lavaux -// Created: 1997 -// Updated: 1998 -// Copyright: (C) 1997, 1998, Guilhem Lavaux -// License: wxWindows license -// ///////////////////////////////////////////////////////////////////////////// -/* Real -*- C++ -*- */ -#ifndef __SND_win_H__ -#define __SND_win_H__ - -#include "sndsnd.h" -#include "sndfrag.h" - -#ifdef WXMMEDIA_INTERNAL -#include -#include -#include - -typedef struct wxWinSoundInternal { - HWAVEOUT devout_id; - HWAVEIN devin_id; - HWND sndWin; -} wxWinSoundInternal; - -typedef struct wxSndWinInfo { - HGLOBAL h_data, h_hdr; - - char *data; - WAVEHDR *hdr; -} wxSndWinInfo; - -#endif - -/** Sound buffer fragmenter: windows specific implementation - * @author Guilhem Lavaux - */ -class wxSndWinFragment : public wxFragmentBuffer { -public: - wxSndWinFragment(wxSound& io_drv); - virtual ~wxSndWinFragment(void); - - virtual void AllocIOBuffer(void); - virtual void FreeIOBuffer(void); - - virtual bool OnBufferFilled(wxFragBufPtr *ptr, wxSndMode mode); - - void WaitForAll(); -}; - -/// -class wxWinSound : public wxSound { - /// - DECLARE_DYNAMIC_CLASS(wxWinSound) -protected: - struct wxWinSoundInternal *internal; - - /// - bool wout_opened, win_opened; - /// - wxUint32 curr_o_srate, curr_i_srate; - /// - wxUint8 curr_o_bps, curr_i_bps; - /// - bool curr_o_stereo, curr_i_stereo; - /// - wxSndMode curr_mode; - - /// - wxSndWinFragment fragments; - -#ifdef WXMMEDIA_INTERNAL - /// - friend LRESULT APIENTRY _EXPORT wxSoundHandlerWndProc(HWND win, - UINT message, - WPARAM wParam, LPARAM lParam); - -#endif - -public: - /// - wxWinSound(void); - /// - virtual ~wxWinSound(void); - - /// - void OnNeedBuffer(wxSndMode mode); - /// - void StopBuffer(wxSndBuffer& buf); -protected: - /// - virtual bool Wakeup(wxSndBuffer& buf); - - /// - bool Reopen(wxSndBuffer& buf, bool force); - - /// - friend class wxSndWinFragment; - - /// - void PrepareHeader(wxFragmentBuffer::wxFragBufPtr& frag, wxSndMode mode); - /// - void UnprepareHeader(wxFragmentBuffer::wxFragBufPtr& frag, wxSndMode mode); -}; - -#endif diff --git a/utils/wxMMedia/ulaw.h b/utils/wxMMedia/ulaw.h deleted file mode 100644 index 0ff8c0a3bd..0000000000 --- a/utils/wxMMedia/ulaw.h +++ /dev/null @@ -1,69 +0,0 @@ -static unsigned char ulaw_dsp[] = { - 3, 7, 11, 15, 19, 23, 27, 31, - 35, 39, 43, 47, 51, 55, 59, 63, - 66, 68, 70, 72, 74, 76, 78, 80, - 82, 84, 86, 88, 90, 92, 94, 96, - 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, - 113, 114, 114, 115, 115, 116, 116, 117, - 117, 118, 118, 119, 119, 120, 120, 121, - 121, 121, 122, 122, 122, 122, 123, 123, - 123, 123, 124, 124, 124, 124, 125, 125, - 125, 125, 125, 125, 126, 126, 126, 126, - 126, 126, 126, 126, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 253, 249, 245, 241, 237, 233, 229, 225, - 221, 217, 213, 209, 205, 201, 197, 193, - 190, 188, 186, 184, 182, 180, 178, 176, - 174, 172, 170, 168, 166, 164, 162, 160, - 158, 157, 156, 155, 154, 153, 152, 151, - 150, 149, 148, 147, 146, 145, 144, 143, - 143, 142, 142, 141, 141, 140, 140, 139, - 139, 138, 138, 137, 137, 136, 136, 135, - 135, 135, 134, 134, 134, 134, 133, 133, - 133, 133, 132, 132, 132, 132, 131, 131, - 131, 131, 131, 131, 130, 130, 130, 130, - 130, 130, 130, 130, 129, 129, 129, 129, - 129, 129, 129, 129, 129, 129, 129, 129, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, -}; - -static unsigned char dsp_ulaw[] = { - 0, 0, 0, 0, 0, 1, 1, 1, - 1, 2, 2, 2, 2, 3, 3, 3, - 3, 4, 4, 4, 4, 5, 5, 5, - 5, 6, 6, 6, 6, 7, 7, 7, - 7, 8, 8, 8, 8, 9, 9, 9, - 9, 10, 10, 10, 10, 11, 11, 11, - 11, 12, 12, 12, 12, 13, 13, 13, - 13, 14, 14, 14, 14, 15, 15, 15, - 15, 16, 16, 17, 17, 18, 18, 19, - 19, 20, 20, 21, 21, 22, 22, 23, - 23, 24, 24, 25, 25, 26, 26, 27, - 27, 28, 28, 29, 29, 30, 30, 31, - 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, - 47, 49, 51, 53, 55, 57, 59, 61, - 63, 66, 70, 74, 78, 84, 92, 104, - 254, 231, 219, 211, 205, 201, 197, 193, - 190, 188, 186, 184, 182, 180, 178, 176, - 175, 174, 173, 172, 171, 170, 169, 168, - 167, 166, 165, 164, 163, 162, 161, 160, - 159, 159, 158, 158, 157, 157, 156, 156, - 155, 155, 154, 154, 153, 153, 152, 152, - 151, 151, 150, 150, 149, 149, 148, 148, - 147, 147, 146, 146, 145, 145, 144, 144, - 143, 143, 143, 143, 142, 142, 142, 142, - 141, 141, 141, 141, 140, 140, 140, 140, - 139, 139, 139, 139, 138, 138, 138, 138, - 137, 137, 137, 137, 136, 136, 136, 136, - 135, 135, 135, 135, 134, 134, 134, 134, - 133, 133, 133, 133, 132, 132, 132, 132, - 131, 131, 131, 131, 130, 130, 130, 130, - 129, 129, 129, 129, 128, 128, 128, 128, -}; diff --git a/utils/wxMMedia/vidbase.cpp b/utils/wxMMedia/vidbase.cpp deleted file mode 100644 index ec0eab5aa8..0000000000 --- a/utils/wxMMedia/vidbase.cpp +++ /dev/null @@ -1,87 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// Name: vidbdrv.cpp -// Purpose: wxMMedia -// Author: Guilhem Lavaux -// Created: 1997 -// Updated: 1998 -// Copyright: (C) 1997, 1998, Guilhem Lavaux -// License: wxWindows license -//////////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation "vidbase.h" -#endif -#include -#include "vidbase.h" -#ifdef WX_PRECOMP -#include "wx_prec.h" -#else -#include "wx/wx.h" -#endif - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -wxVideoOutput::wxVideoOutput() - : wxWindow() -{ - dyn_size = TRUE; -} - -wxVideoOutput::wxVideoOutput(wxWindow *parent, const wxWindowID id, const wxPoint& position, - const wxSize& size, const long style, - const wxString& name) - : wxWindow(parent, id, position, size, style, name) -{ - dyn_size = TRUE; -} - -/// -wxVideoOutput::~wxVideoOutput() -{ -} - -wxVideoBaseDriver::wxVideoBaseDriver() - : wxMMediaFile() -{ -} - -wxVideoBaseDriver::wxVideoBaseDriver(wxInputStream& str, bool seekable) - : wxMMediaFile(str, FALSE, seekable) -{ -} - -wxVideoBaseDriver::wxVideoBaseDriver(const wxString& fname) - : wxMMediaFile(fname) -{ -} - -wxVideoBaseDriver::~wxVideoBaseDriver() -{ -} - -bool wxVideoBaseDriver::AttachOutput(wxVideoOutput& output) -{ - video_output = &output; - return TRUE; -} - -void wxVideoBaseDriver::DetachOutput() -{ - video_output = NULL; -} - -// Use an external frame for video output - -wxFrame *wxVideoCreateFrame(wxVideoBaseDriver *vid_drv) -{ - wxFrame *frame = new wxFrame(NULL, -1, "Video Output", wxDefaultPosition, wxSize(100, 100)); - wxVideoOutput *vid_out = new wxVideoOutput(frame, -1); - - vid_out->DynamicSize(TRUE); - vid_drv->AttachOutput(*vid_out); - frame->Layout(); - frame->Show(TRUE); - - return frame; -} diff --git a/utils/wxMMedia/vidbase.h b/utils/wxMMedia/vidbase.h deleted file mode 100644 index 367b37389c..0000000000 --- a/utils/wxMMedia/vidbase.h +++ /dev/null @@ -1,105 +0,0 @@ -// ///////////////////////////////////////////////////////////////////////////// -// Name: vidbase.h -// Purpose: wxMMedia -// Author: Guilhem Lavaux -// Created: 1997 -// Updated: 1998 -// Copyright: (C) 1997, 1998, Guilhem Lavaux -// CVS: $Id$ -// License: wxWindows license -// ///////////////////////////////////////////////////////////////////////////// -/* Real -*- C++ -*- */ -#ifndef __VID_bdrv_H__ -#define __VID_bdrv_H__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "mmtype.h" -#include "mmfile.h" -#include "wx/string.h" -#include "wx/window.h" - -/// -typedef enum { - wxVIDEO_MSAVI, - wxVIDEO_MPEG, - wxVIDEO_QT, - wxVIDEO_GIF, - wxVIDEO_JMOV, - wxVIDEO_FLI, - wxVIDEO_IFF, - wxVIDEO_SGI, - wxVIDEO_MPEG2 -} /// - wxVideoType; - -/// -class wxVideoBaseDriver; -class wxVideoOutput : public wxWindow { - /// - DECLARE_DYNAMIC_CLASS(wxVideoOutput) -protected: - bool dyn_size; -public: - /// - wxVideoOutput(); - /// - wxVideoOutput(wxWindow *parent, const wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, const long style = 0, - const wxString& name = "video_output"); - /// - virtual ~wxVideoOutput(); - - /// - bool DynamicSize() { return dyn_size; } - /// - void DynamicSize(bool dyn) { dyn_size = dyn; } -}; - -/// -class wxVideoBaseDriver : public wxObject, public wxMMediaFile { - /// - DECLARE_ABSTRACT_CLASS(wxVideoBaseDriver) -protected: - wxVideoOutput *video_output; -public: - friend class wxVideoOutput; - - /// - wxVideoBaseDriver(); - /// - wxVideoBaseDriver(wxInputStream& str, bool seekable = FALSE); - /// - wxVideoBaseDriver(const wxString& fname); - /// - virtual ~wxVideoBaseDriver(); - - /// - virtual bool Pause() = 0; - /// - virtual bool Resume() = 0; - - /// - virtual bool SetVolume(wxUint8 vol) = 0; - /// - virtual bool Resize(wxUint16 w, wxUint16 h) = 0; - - /// - virtual bool IsCapable(wxVideoType WXUNUSED(v_type)) { return FALSE; } - - /// - virtual void OnFinished() {} - - /// - virtual bool AttachOutput(wxVideoOutput& output); - /// - virtual void DetachOutput(); -}; - -extern wxFrame *wxVideoCreateFrame(wxVideoBaseDriver *vid_drv); - - -#endif diff --git a/utils/wxMMedia/vidwin.cpp b/utils/wxMMedia/vidwin.cpp deleted file mode 100644 index a8e83b2dec..0000000000 --- a/utils/wxMMedia/vidwin.cpp +++ /dev/null @@ -1,131 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// Name: vidwin.h -// Purpose: wxMMedia -// Author: Guilhem Lavaux -// Created: February 1998 -// Updated: -// Copyright: (C) 1998, Guilhem Lavaux -// License: wxWindows license -//////////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "vidwin.h" -#endif - -#if 0 -#include "wx/wxprec.h" -#else -#include "wx/wx.h" -#endif - -#define WXMMEDIA_INTERNAL -#include -#include -#include -#include "mmtype.h" -#include "mmfile.h" -#include "vidwin.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -wxVideoWindows::wxVideoWindows(void) -{ -} - -wxVideoWindows::wxVideoWindows(wxInputStream& str, bool seekable) - : wxVideoBaseDriver(str, seekable) -{ - OpenFile(GetCurrentFile()); -} - -wxVideoWindows::wxVideoWindows(const char *fname) - : wxVideoBaseDriver(fname) -{ - OpenFile(fname); -} - -wxVideoWindows::~wxVideoWindows(void) -{ - mciSendCommand(internal->dev_id, MCI_CLOSE, 0, 0); - - if (internal) - delete internal; -} - -void wxVideoWindows::OpenFile(const char *fname) -{ - MCI_DGV_OPEN_PARMS open_struct; - DWORD ret; - - internal = new VIDW_Internal; - - open_struct.lpstrDeviceType = "avivideo"; - open_struct.lpstrElementName = (LPSTR)fname; - open_struct.hWndParent = 0; - - ret = mciSendCommand(0, MCI_OPEN, - MCI_OPEN_ELEMENT|MCI_DGV_OPEN_PARENT|MCI_OPEN_TYPE|MCI_DGV_OPEN_32BIT, - (DWORD)(LPVOID)&open_struct); - internal->dev_id = open_struct.wDeviceID; -} - -bool wxVideoWindows::Pause(void) -{ - return (mciSendCommand(internal->dev_id, MCI_PAUSE, 0, 0) == 0); -} - -bool wxVideoWindows::Resume(void) -{ - return (mciSendCommand(internal->dev_id, MCI_PAUSE, 0, 0) == 0); -} - -bool wxVideoWindows::SetVolume(wxUint8 vol) -{ - return TRUE; -} - -bool wxVideoWindows::Resize(wxUint16 w, wxUint16 h) -{ - return TRUE; -} - -bool wxVideoWindows::IsCapable(wxVideoType v_type) -{ - return (v_type == wxVIDEO_MSAVI); -} - -bool wxVideoWindows::AttachOutput(wxVideoOutput& output) -{ - MCI_DGV_WINDOW_PARMS win_struct; - - if (!wxVideoBaseDriver::AttachOutput(output)) - return FALSE; - - win_struct.hWnd = (HWND)output.GetHWND(); - mciSendCommand(internal->dev_id, MCI_WINDOW, - MCI_DGV_WINDOW_HWND, (DWORD)(LPVOID)&win_struct); - return TRUE; -} - -void wxVideoWindows::DetachOutput(void) -{ - MCI_DGV_WINDOW_PARMS win_struct; - - wxVideoBaseDriver::DetachOutput(); - - win_struct.hWnd = 0; - mciSendCommand(internal->dev_id, MCI_WINDOW, - MCI_DGV_WINDOW_HWND, (DWORD)(LPVOID)&win_struct); -} - -bool wxVideoWindows::StartPlay(void) -{ - return (mciSendCommand(internal->dev_id, MCI_PLAY, 0, NULL) == 0); -} - -void wxVideoWindows::StopPlay(void) -{ - mciSendCommand(internal->dev_id, MCI_STOP, 0, NULL); -} diff --git a/utils/wxMMedia/vidwin.h b/utils/wxMMedia/vidwin.h deleted file mode 100644 index 784d72a2c0..0000000000 --- a/utils/wxMMedia/vidwin.h +++ /dev/null @@ -1,62 +0,0 @@ -// ///////////////////////////////////////////////////////////////////////////// -// Name: vidwin.h -// Purpose: wxMMedia -// Author: Guilhem Lavaux -// Created: February 1998 -// Updated: -// Copyright: (C) 1998, Guilhem Lavaux -// License: wxWindows license -// ///////////////////////////////////////////////////////////////////////////// -/* Real -*- C++ -*- */ -#ifndef __VID_windows_H__ -#define __VID_windows_H__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include "mmtype.h" -#include "mmfile.h" -#ifdef WX_PRECOMP -#include "wx/wxprec.h" -#else -#include "wx/wx.h" -#endif -#include "vidbase.h" - -#ifdef WXMMEDIA_INTERNAL -#include -#include - -typedef struct VIDW_Internal { - MCIDEVICEID dev_id; -} VIDW_Internal; -#endif - -class wxVideoWindows : public wxVideoBaseDriver { - DECLARE_DYNAMIC_CLASS(wxVideoWindows) -protected: - struct VIDW_Internal *internal; - - void OpenFile(const char *fname); -public: - wxVideoWindows(void); - wxVideoWindows(wxInputStream& str, bool seekable = FALSE); - wxVideoWindows(const char *fname); - virtual ~wxVideoWindows(void); - - virtual bool StartPlay(void); - virtual void StopPlay(void); - virtual bool Pause(void); - virtual bool Resume(void); - - virtual bool SetVolume(wxUint8 vol); - virtual bool Resize(wxUint16 w, wxUint16 h); - - virtual bool IsCapable(wxVideoType v_type); - - virtual bool AttachOutput(wxVideoOutput& output); - virtual void DetachOutput(void); -}; - -#endif diff --git a/utils/wxMMedia/vidxanm.cpp b/utils/wxMMedia/vidxanm.cpp deleted file mode 100644 index 7a934c20e3..0000000000 --- a/utils/wxMMedia/vidxanm.cpp +++ /dev/null @@ -1,231 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// Name: vidxanm.cpp -// Purpose: wxMMedia -// Author: Guilhem Lavaux -// Created: 1997 -// Updated: 1998 -// Copyright: (C) 1997, 1998, Guilhem Lavaux -// License: wxWindows license -//////////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation "vidxanm.h" -#endif -#define WXMMEDIA_INTERNAL -#ifdef __XT__ -#define Uses_XLib -#define Uses_XtIntrinsic -#endif -#include "vidbase.h" -#include "vidxanm.h" -#ifdef WX_PRECOMP -#include "wx_prec.h" -#else -#include "wx/wx.h" -#endif -#include -#include -#ifdef __WXGTK__ -#include -#include -#endif - -wxVideoXANIM::wxVideoXANIM() - : wxVideoBaseDriver() -{ - internal = new wxXANIMinternal; - xanim_started = false; - paused = false; -} - -wxVideoXANIM::wxVideoXANIM(wxInputStream& str) - : wxVideoBaseDriver(str, false) -{ - internal = new wxXANIMinternal; - xanim_started = false; - paused = false; -} - -wxVideoXANIM::wxVideoXANIM(const wxString& fname) - : wxVideoBaseDriver(fname) -{ - internal = new wxXANIMinternal; - xanim_started = false; -} - -wxVideoXANIM::~wxVideoXANIM() -{ - if (xanim_started) - StopPlay(); - delete internal; -} - -bool wxVideoXANIM::StartPlay() -{ - if (!paused && xanim_started) - return true; - if (!video_output) - wxVideoCreateFrame(this); - - if (SendCommand(" ")) { - paused = false; - return true; - } - return false; -} - -bool wxVideoXANIM::Pause() -{ - if (!paused && SendCommand(" ")) { - paused = TRUE; - return TRUE; - } - return FALSE; -} - -bool wxVideoXANIM::Resume() -{ - if (paused && SendCommand(" ")) { - paused = FALSE; - return TRUE; - } - return FALSE; -} - -void wxVideoXANIM::StopPlay() -{ - if (!xanim_started) - return; - - SendCommand("q"); - - xanim_started = FALSE; - paused = FALSE; -} - -bool wxVideoXANIM::SetVolume(wxUint8 vol) -{ - if (vol > 100) - vol = 100; - - wxString str_vol("v%d", vol); - return SendCommand(str_vol.GetData()); -} - -bool wxVideoXANIM::Resize(wxUint16 WXUNUSED(w), wxUint16 WXUNUSED(h)) -{ - // Not implemented - // Actually, I think that we just need to resize the output window ... - return FALSE; -} - -bool wxVideoXANIM::IsCapable(wxVideoType v_type) -{ - if (v_type == wxVIDEO_MSAVI || v_type == wxVIDEO_MPEG || - v_type == wxVIDEO_QT || v_type == wxVIDEO_GIF || v_type == wxVIDEO_JMOV || - v_type == wxVIDEO_FLI || v_type == wxVIDEO_IFF || v_type == wxVIDEO_SGI) - return true; - else - return false; -} - -bool wxVideoXANIM::AttachOutput(wxVideoOutput& out) -{ - if (!wxVideoBaseDriver::AttachOutput(out)) - return false; - - return RestartXANIM(); -} - -void wxVideoXANIM::DetachOutput() -{ - SendCommand("q"); - xanim_started = false; - paused = false; - - wxVideoBaseDriver::DetachOutput(); -} - -bool wxVideoXANIM::SendCommand(const char *command, char **ret, - wxUint32 *size) -{ - if (!xanim_started) - if (!RestartXANIM()) - return false; - - // Send a command to XAnim through X11 Property - XChangeProperty(internal->xanim_dpy, internal->xanim_window, - internal->xanim_atom, - XA_STRING, 8, PropModeReplace, (unsigned char *)command, - strlen(command)); - XFlush(internal->xanim_dpy); - if (ret) { - int prop_format; - Atom prop_type; - unsigned long extra; - - XGetWindowProperty(internal->xanim_dpy, internal->xanim_window, - internal->xanim_ret, 0, 16, True, AnyPropertyType, - &prop_type, &prop_format, (unsigned long *)size, - &extra, (unsigned char **)ret); - } - return true; -} - -bool wxVideoXANIM::RestartXANIM() -{ - wxString xanim_command; - int ret; - Atom prop_type; - int prop_format; - unsigned long nitems; - unsigned long extra; - char prop[4]; - bool xanim_chg_size; - - if (!video_output || xanim_started || !GetCurrentFile()) - return false; - - // Check if we can change the size of the window dynamicly - xanim_chg_size = video_output->DynamicSize(); - // Get current display -#ifdef __XT__ - internal->xanim_dpy = wxAPP_DISPLAY; -#endif -#ifdef __WXGTK__ - internal->xanim_dpy = gdk_display; -#endif - // Get the window id -#ifdef __XT__ - internal->xanim_window = XtWindow(video_output->FWidget()); -#else - internal->xanim_window = - ((GdkWindowPrivate *)video_output->m_widget->window)->xwindow; -#endif - // Get the XANIM atom - internal->xanim_atom = XInternAtom(internal->xanim_dpy, - "XANIM_PROPERTY", False); - - // Build the command - xanim_command.sprintf(__XANIM_COMMAND__ " +W%d +Wp +f +B -Zr +q +Zpe +Ae " - "+Av70 %s %s", internal->xanim_window, - (xanim_chg_size == true) ? "+Sr" : "", - (const char *)GetCurrentFile()); - // Execute it - if (!wxExecute(xanim_command, false)) - return false; - - // Wait for XAnim to be ready - nitems = 0; - while (nitems == 0) { - ret = XGetWindowProperty(internal->xanim_dpy, internal->xanim_window, - internal->xanim_atom, - 0, 4, False, AnyPropertyType, &prop_type, - &prop_format, &nitems, &extra, - (unsigned char **)&prop); -// wxYield(); - } - - xanim_started = true; - - return true; -} diff --git a/utils/wxMMedia/vidxanm.h b/utils/wxMMedia/vidxanm.h deleted file mode 100644 index 28d00989df..0000000000 --- a/utils/wxMMedia/vidxanm.h +++ /dev/null @@ -1,69 +0,0 @@ -// ///////////////////////////////////////////////////////////////////////////// -// Name: vidxanm.h -// Purpose: wxMMedia -// Author: Guilhem Lavaux -// Created: 1997 -// Updated: 1998 -// Copyright: (C) 1997, 1998, Guilhem Lavaux -// License: wxWindows license -// ///////////////////////////////////////////////////////////////////////////// -/* Real -*- C++ -*- */ -#ifndef __VID_xanim_H__ -#define __VID_xanim_H__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#if defined(WXMMEDIA_INTERNAL) && (defined(__X__) || defined(__WXGTK__)) -#include -#include -#endif - -#include "vidbase.h" - -#ifdef WXMMEDIA_INTERNAL -typedef struct wxXANIMinternal { - Display *xanim_dpy; - Window xanim_window; - Atom xanim_atom, xanim_ret; -} wxXANIMinternal; - -#ifndef __XANIM_COMMAND__ -#define __XANIM_COMMAND__ "/usr/X11R6/bin/xanim" -#endif -#endif - -class wxVideoXANIM : public wxVideoBaseDriver { - DECLARE_DYNAMIC_CLASS(wxVideoXANIM) -protected: - bool xanim_started, paused; - struct wxXANIMinternal *internal; -public: - wxVideoXANIM(); - wxVideoXANIM(wxInputStream& str); - wxVideoXANIM(const wxString& fname); - virtual ~wxVideoXANIM(); - - virtual bool StartPlay(); - virtual bool Pause(); - virtual bool Resume(); - virtual void StopPlay(); - - virtual bool SetVolume(wxUint8 vol); - virtual bool Resize(wxUint16 w, wxUint16 h); - - virtual bool IsCapable(wxVideoType v_type); - - virtual bool AttachOutput(wxVideoOutput& output); - virtual void DetachOutput(); - -protected: - /// - bool RestartXANIM(); - /// - bool SendCommand(const char *command, char **ret = NULL, - wxUint32 *size = NULL); -}; - -#endif diff --git a/utils/wxMMedia/wave.cpp b/utils/wxMMedia/wave.cpp deleted file mode 100644 index 740f86d0f5..0000000000 --- a/utils/wxMMedia/wave.cpp +++ /dev/null @@ -1,65 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: wave.cpp -// Purpose: wxWave class -// Author: Guilhem Lavaux / API by Julian Smart -// Modified by: -// Created: 04/23/98 -// RCS-ID: $Id$ -// Copyright: (c) Guilhem Lavaux -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation "wave.h" -#endif - -#include -#include "wave.h" - -wxWave::wxWave() -{ - m_wave = NULL; - m_iowave = NULL; -} - -wxWave::wxWave(const wxString& fileName, bool isResource = FALSE) -{ - Create(fileName, isResource); -} - -wxWave::~wxWave() -{ - Free(); -} - -bool wxWave::Create(const wxString& sFileName, bool isResource = FALSE) -{ - m_iowave = new wxFileInputStream(sFileName); - m_wave = new wxSndWavCodec(*m_iowave); - - return TRUE; -} - -bool wxWave::Play(bool async, bool looped) const -{ - if (!m_wave) - return FALSE; - - if (looped) - m_wave->Set(wxSND_LOOP); - if (!m_wave->StartPlay()); - return FALSE; - if (!async) - m_wave->Wait(); - - m_wave->Clear(wxSND_LOOP); - return TRUE; -} - -bool wxWave::Free() -{ - if (m_wave) { - delete m_wave; - delete m_iowave; - } - return TRUE; -} diff --git a/utils/wxMMedia/wave.h b/utils/wxMMedia/wave.h deleted file mode 100644 index b91edf96b7..0000000000 --- a/utils/wxMMedia/wave.h +++ /dev/null @@ -1,43 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: wave.h -// Purpose: wxWave class -// Author: Julian Smart -// Modified by: Guilhem Lavaux for wxMMedia (02/05/1998) -// Created: 01/02/97 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -#ifndef __WAVEH__ -#define __WAVEH__ - -#ifdef __GNUG__ -#pragma interface -#endif - -#include -#include -#include "sndwav.h" - -class wxWave : public wxObject -{ -public: - wxWave(); - wxWave(const wxString& fileName, bool isResource = FALSE); - ~wxWave(); - -public: - bool Create(const wxString& sFileName, bool isResource = FALSE); - bool IsOk() const { return (m_wave ? TRUE : FALSE); }; - bool Play(bool async = TRUE, bool looped = FALSE) const; - -protected: - bool Free(); - -protected: - wxInputStream *m_iowave; - wxSndWavCodec *m_wave; -}; - -#endif diff --git a/utils/wxtree/docs/back.gif b/utils/wxtree/docs/back.gif deleted file mode 100644 index 8a61076d3ba74bdedc1d24f60c3d1f5a361a6cee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/utils/wxtree/docs/books.gif b/utils/wxtree/docs/books.gif deleted file mode 100644 index 26ff394df62cbdb103908648614173654ec6d7eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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<< zPEHBjEDpTA+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%-ybAJtM`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^{??#6$o9 diff --git a/utils/wxtree/docs/classes.tex b/utils/wxtree/docs/classes.tex deleted file mode 100644 index 98b9e89ee2..0000000000 --- a/utils/wxtree/docs/classes.tex +++ /dev/null @@ -1,304 +0,0 @@ -\chapter{wxTreeLayout Class Reference} -\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}% -\setfooter{\thepage}{}{}{}{}{\thepage} - -\section{\class{wxTreeLayout}}\label{wxtreelayout} - -This abstract class is used for drawing a tree. You must derive a new -class from this, and define member functions to access the data that -wxTreeLayout needs. - -Nodes are identified by long integer identifiers. The derived class -communicates the actual tree structure to wxTreeLayout by defining \helprefn{wxTreeLayout::GetChildren}{getchildren}\rtfsp -and \helprefn{wxTreeLayout::GetNodeParent}{getnodeparent} functions. - -The application should call \helprefn{DoLayout}{dolayout} to do the tree -layout. Depending on how the derived class has been defined, either -\rtfsp\helprefn{wxTreeLayout::Draw}{draw} must be called (for example by the OnPaint member -of a wxScrolledWindow) or the application-defined drawing code should be called -as normal. - -For example, if you have an image drawing system already defined, you -may want wxTreeLayout to position existing node images in that system. So you -just need a way for wxTreeLayout to set the node image positions according to -the layout algorithm, and the rest will be done by your own image drawing -system. - -\wxheading{Derived from} - -wxObject - -\latexignore{\rtfignore{\wxheading{Members}}} - -\membersection{wxTreeLayout::wxTreeLayout} - -\func{}{wxTreeLayout}{\void} - -Constructor. - -\membersection{wxTreeLayout::ActivateNode}\label{activatenode} - -\func{void}{ActivateNode}{\param{long}{ id}, \param{bool }{active}} - -Define this so wxTreeLayout can turn nodes on and off for drawing purposes -(not all nodes may be connected in the tree). See also \helprefn{NodeActive}{nodeactive}. - -\membersection{wxTreeLayout::CalcLayout} - -\func{void}{CalcLayout}{\param{long}{ id}, \param{int}{ level}} - -Private function for laying out a branch. - -\membersection{wxTreeLayout::DoLayout}\label{dolayout} - -\func{void}{DoLayout}{\param{wxDC\&}{ dc}, \param{long}{ topNode = -1}} - -Calculates the layout for the tree, optionally specifying the top node. - -\membersection{wxTreeLayout::Draw}\label{draw} - -\func{void}{Draw}{\param{wxDC\&}{ dc}} - -Call this to let wxTreeLayout draw the tree itself, once the layout has been -calculated with \helprefn{DoLayout}{dolayout}. - -\membersection{wxTreeLayout::DrawBranch} - -\func{void}{DrawBranch}{\param{long}{ from}, \param{long}{ to}, \param{wxDC\&}{ dc}} - -Defined by wxTreeLayout to draw an arc between two nodes. - -\membersection{wxTreeLayout::DrawBranches} - -\func{void}{DrawBranches}{\param{wxDC\&}{ dc}} - -Defined by wxTreeLayout to draw the arcs between nodes. - -\membersection{wxTreeLayout::DrawNode} - -\func{void}{DrawNode}{\param{long}{ id}, \param{wxDC\&}{ dc}} - -Defined by wxTreeLayout to draw a node. - -\membersection{wxTreeLayout::DrawNodes} - -\func{void}{DrawNodes}{\param{wxDC\&}{ dc}} - -Defined by wxTreeLayout to draw the nodes. - -\membersection{wxTreeLayout::GetChildren}\label{getchildren} - -\func{void}{GetChildren}{\param{long}{ id}, \param{wxList \&}{list}} - -Must be defined to return the children of node {\it id} in the given list -of integers. - -\membersection{wxTreeLayout::GetNextNode}\label{getnextnode} - -\func{long}{GetNextNode}{\param{long}{ id}} - -Must be defined to return the next node after {\it id}, so that wxTreeLayout can -iterate through all relevant nodes. The ordering is not important. -The function should return -1 if there are no more nodes. - -\membersection{wxTreeLayout::GetNodeName} - -\constfunc{wxString}{GetNodeName}{\param{long}{ id}} - -May optionally be defined to get a node's name (for example if leaving -the drawing to wxTreeLayout). - -\membersection{wxTreeLayout::GetNodeSize} - -\constfunc{void}{GetNodeSize}{\param{long}{ id}, \param{long*}{ x}, \param{long*}{ y}} - -Can be defined to indicate a node's size, or left to wxTreeLayout to use the -name as an indication of size. - -\membersection{wxTreeLayout::GetNodeParent}\label{getnodeparent} - -\constfunc{long}{GetNodeParent}{\param{long}{ id}} - -Must be defined to return the parent node of {\it id}. -The function should return -1 if there is no parent. - -\membersection{wxTreeLayout::GetNodeX} - -\constfunc{long}{GetNodeX}{\param{long}{ id}} - -Must be defined to return the current X position of the node. Note that -coordinates are assumed to be at the top-left of the node so some conversion -may be necessary for your application. - -\membersection{wxTreeLayout::GetNodeY} - -\constfunc{long}{GetNodeY}{\param{long}{ id}} - -Must be defined to return the current Y position of the node. Note that -coordinates are assumed to be at the top-left of the node so some conversion -may be necessary for your application. - -\membersection{wxTreeLayout::GetLeftMargin} - -\constfunc{long}{GetLeftMargin}{\void} - -Gets the left margin set with \helprefn{SetMargins}{setmargins}. - -\membersection{wxTreeLayout::GetOrientation} - -\constfunc{bool}{GetOrientation}{\void} - -Gets the orientation: TRUE means top-to-bottom, FALSE means left-to-right (the default). - -\membersection{wxTreeLayout::GetTopMargin} - -\constfunc{long}{GetTopMargin}{\void} - -Gets the top margin set with \helprefn{SetMargins}{setmargins}. - -\membersection{wxTreeLayout::GetTopNode} - -\constfunc{long}{GetTopNode}{\void} - -wxTreeLayout calls this to get the top of the tree. Don't redefine this; call -\rtfsp\helprefn{SetTopNode}{settopnode} instead before calling \helprefn{DoLayout}{dolayout}. - -\membersection{wxTreeLayout::GetXSpacing} - -\constfunc{long}{GetXSpacing}{\void} - -Gets the horizontal spacing between nodes. - -\membersection{wxTreeLayout::GetYSpacing} - -\constfunc{long}{GetYSpacing}{\void} - -Gets the vertical spacing between nodes. - -\membersection{wxTreeLayout::Initialize} - -\func{void}{Initialize}{\void} - -Initializes wxTreeLayout. Call from application or overridden {\bf Initialize} -or constructor. - -\membersection{wxTreeLayout::NodeActive}\label{nodeactive} - -\func{bool}{NodeActive}{\param{long}{ id}} - -Define this so wxTreeLayout can know which nodes are to be drawn (not all -nodes may be connected in the tree). See also \helprefn{ActivateNode}{activatenode}. - -\membersection{wxTreeLayout::SetNodeName} - -\func{void}{SetNodeName}{\param{long}{ id}, \param{const wxString\& }{ name}} - -May optionally be defined to set a node's name. - -\membersection{wxTreeLayout::SetNodeX} - -\func{void}{SetNodeX}{\param{long}{ id}, \param{long}{ x}} - -Must be defined to set the current X position of the node. Note that -coordinates are assumed to be at the top-left of the node so some conversion -may be necessary for your application. - -\membersection{wxTreeLayout::SetNodeY} - -\func{void}{SetNodeY}{\param{long}{ id}, \param{long}{ y}} - -Must be defined to set the current Y position of the node. Note that -coordinates are assumed to be at the top-left of the node so some conversion -may be necessary for your application. - -\membersection{wxTreeLayout::SetOrientation} - -\func{void}{SetOrientation}{\param{bool}{ orientation}} - -Sets the tree orientation: TRUE means top-to-bottom, FALSE means left-to-right (the default). - -\membersection{wxTreeLayout::SetTopNode}\label{settopnode} - -\func{void}{SetTopNode}{\param{long}{ id}} - -Call this to identify the top of the tree to wxTreeLayout. - -\membersection{wxTreeLayout::SetSpacing} - -\func{void}{SetSpacing}{\param{long}{ x}, \param{long}{ y}} - -Sets the horizontal and vertical spacing between nodes in the tree. - -\membersection{wxTreeLayout::SetMargins}\label{setmargins} - -\func{void}{SetMargins}{\param{long}{ x}, \param{long}{ y}} - -Sets the left and top margins of the whole tree. - -\section{\class{wxStoredTree}}\label{wxstoredtree} - -wxStoredTree provides storage for node labels, position and client data. It also provides hit-testing -(which node a mouse event occurred on). It is usually a more convenient class to use than wxTreeLayout. - -\wxheading{Derived from} - -\helpref{wxTreeLayout}{wxtreelayout} - -\latexignore{\rtfignore{\wxheading{Members}}} - -\membersection{wxStoredTree::wxStoredTree} - -\func{}{wxStoredTree}{\param{int }{noNodes = 200}} - -Constructor. Specify the maximum number of nodes to be allocated. - -\membersection{wxStoredTree::AddChild}\label{wxstoredtreeaddchild} - -\func{long}{AddChild}{\param{const wxString\&}{ name}, \param{const wxString\&}{ parent = ""}} - -Adds a child with a given parent, returning the node id. - -\membersection{wxStoredTree::GetClientData}\label{wxstoredtreegetclientdata} - -\constfunc{long}{GetClientData}{\param{long}{ id}} - -Gets the client data for the given node. - -\membersection{wxStoredTree::GetNode}\label{wxstoredtreegetnode} - -\constfunc{wxStoredNode*}{GetNode}{\param{long}{ id}} - -Returns the wxStoredNode object for the given node id. - -\membersection{wxStoredTree::GetNodeCount}\label{wxstoredtreegetnodecount} - -\constfunc{int}{GetNodeCount}{\void} - -Returns the current number of nodes. - -\membersection{wxStoredTree::GetNumNodes}\label{wxstoredtreegetnumnodes} - -\constfunc{int}{GetNumNodes}{\void} - -Returns the maximum number of nodes. - -\membersection{wxStoredTree::HitTest}\label{wxstoredtreehittest} - -\func{wxString}{HitTest}{\param{wxMouseEvent\&}{ event}, \param{wxDC\& }{dc}} - -Returns a string with the node name corresponding to the position of the mouse event, or the empty string if no node -was detected. - -\membersection{wxStoredTree::NameToId}\label{wxstoredtreenametoid} - -\func{long}{NameToId}{\param{const wxString\&}{ name}} - -Returns the id for the given node name, or -1 if there was no such node. - -\membersection{wxStoredTree::SetClientData}\label{wxstoredtreesetclientdata} - -\func{void}{SetClientData}{\param{long}{ id}, \param{long}{ clientData}} - -Sets client data for the given node. - - diff --git a/utils/wxtree/docs/contents.gif b/utils/wxtree/docs/contents.gif deleted file mode 100644 index 3dddfa3dd5f0c652e8b27cd6c29e1fdd49ced5a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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}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 diff --git a/utils/wxtree/docs/tex2rtf.ini b/utils/wxtree/docs/tex2rtf.ini deleted file mode 100644 index 8b55040f1f..0000000000 --- a/utils/wxtree/docs/tex2rtf.ini +++ /dev/null @@ -1,28 +0,0 @@ -;;; 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 = no -htmlBrowseButtons = bitmap -winHelpContents = yes -winHelpVersion = 3 ; 3 for Windows 3.x, 4 for Windows 95 -winHelpTitle = "wxTreeLayout 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/utils/wxtree/docs/tree.bib b/utils/wxtree/docs/tree.bib deleted file mode 100644 index 9793c41c47..0000000000 --- a/utils/wxtree/docs/tree.bib +++ /dev/null @@ -1,8 +0,0 @@ -@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} -} - diff --git a/utils/wxtree/docs/treetst.bmp b/utils/wxtree/docs/treetst.bmp deleted file mode 100644 index fd6103035f4403bedcad1c8a8a187e75f797b821..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14982 zcmeI1UuYc19mkzKxAeUw$z%KEQUX%yxH;%kA5uRzZH*p8WCHT4cBESw(VK^WpVEX< zh$$}7LmmtbAqBNsH;cL$LylrOM-h#DI*r$1QG}6oLNeA`-rJr2W_M@*%*@{Yk=rnctzf9laPFEsr0TbCG&S z%{fTlqvi>#)>@S7D=rlc1>9K~_qi_r_V7DiCq zz3IIs%IvB1=*9eaLS2b3c z&rQ0D;zn-%9>tyd{FfLmB&^$DeifRH3+Fl*uEo}U49D2uU@*N$J>7K9#|18G*a{XV zDXrxq(y$Cl|E$X;%OhYca+b~Cpt!(qAviV`EEvnwBpTzQFB=<7@BVwdo}1DLrH3*- ze#NjH=6S{SFweikaM~-DBvQ%)!|`<&vwm<6vmS8{v%VdM^BoY?mn>fw`qA8)dHlx< zTEUWD(1rCwf04`F7OWpQ?%wwhTnOt?ov#DohX+XRQM3P}4~FN<^`c~5(1BULhvgVQ zK`ogc;eGLjH6(-$d`>OUA8+78LO%T;Lce-@wAfH<;b4$rqNlq`0C{u0?!b z8CSN;_7vZ&r`!-6UuK4t|3|K^Nl4_uml;uP(J0h9F1v<9xZRB zjm+)PPd*wJpPL%o`2xrFLmYRUUYZ#eU+Np}dRJzK<(qN`X_!hS@=du-1xODF&Pn!N zsFGVg+0V8)XL#**NF(cz8U>Ep&8nwg{`_;85jw5PG_vOvaNb+3$}}>LFvGQ5t`t?i zE8-&u6A&LlZ}SbW{q|fgAhj~RdFY4+Qg6Ns+=gxRf7K$KV~xD0+ybs^8{3yJFv2@r zzR?xnC~#|O2Ag-i_UH>55V$YE_q+2+U+^VlUA#xdDZqucv9m^!1B1TnG(}&r=DwFF z&aR1L$FIHB{EpZu)WCUH-gy6nIMlE9Uo)2e*=*PDOR8FHSc>Wchepn5?`*j(*DJed~m4gR94Tf;LNDvX za{Umer+F6eC=}lsj*&EWEVrHVQYCydJt_g|?qhR3q#khjvnxL*^L5f=Hj=ZjoOksu zz0oAOW!zGHEox2B1?9Vw!hP&o{5z2(mt9}xq&-vD{$kMU)toCh3cnc#2=25sanl}2 z&&sMSKA|@@e)aB3`&E(=NkitM+YqU%PU*+ymSR20HJ|t5;zvsg5+BHX(@7G+JkS-H z3+Hr{>KmFz%MEms87#8+(uMF5mUBIAfQp_=QQUzOBDoFgJ?3Ex67Y zZnMK2_WgRjwxcrqNH#91Z->-z=6Tw)-&@vW1wC^TxCzZAi_gq_nP~vmyi}*h;9pxk z`{KLxTno5;r)eO;6yU5nZh++2X?yzEv$cAw@bd&FzE#Ha9sIf` zU$zxALk3eIqm+_gH+1rz2Q)Zukr6knJ3 ztxnQ;Ugt&6T|e)AoHM*7bKwp@YVl2}=sER?rRNAKiNTJRQ?8nZ;}5@dEh%a$dWYfC zwSAag#2KzB71{StTs+ogK}C<}>XsS4_g`^Ny&h`;L-sveLS^5SqZlq?`zS8NaAf?( zPuS=6dgS!N++c)WuFHdr+2-|q?@Ar#xYwr}>O@e+#c_ji&4f`ozFw+NUzLL&przRO zuF5escf_3Lc2j*_{%;1gDDfSFV+5zioFnF3q+W@8{-k+Mb3OPyUcAqv?cO4+V#>I1 zrZla#d;2h;_1ts4U06M}Tu{g(3VRR0qn6tn5?^s5>{R5-b0|)P`6MmHSK=Zvgey!0 z9s)mAtH=I+j;_ys=?yNNxep94dTtTk3HZ+!i&Ns#=($zk;2(T}KQ$k#Rp|kD>!rRM zJTyoZ7hell&wCbd>}-mu@x|P}u^h)|)#x3ZTRA!VsW+I-UcZz)k~zS`;;HU*QsX+V za{O|=_$rGjQK6T*!IWrui#z~@69R(#2erm9+-EM1+q-5t7`+JTi{%F6xO~%B5oKJ8 z_YlMn_Y_Y<9Y2|44GYI{3ZwUgI7Sj9X{(IOH-mPKs*NwL)IJgy9czD=HxEQC{_4sJWIB7Lz zC}xRhN687b*$F!M8A>WQT8dhBn#xMG+6w#h8cUlrTZ>zCo68Hd+Y7w&8%%679GjL9 zS?qG$dg{#V5zPuM{X&fz29~_6cpZ|h?dOdr4(@PHx|~Rkhz_F8Nd~#yE(!l3&)Dr3 zNVhK^K3;a%m0J@~V8T7gF7>@SRB=Gqp^-9J}L+)a-<4+ zb^5t^V~<-sawugYuop98${QM$adW38s6n88z7hS`awm_TH<8{s`m|}(jOnH-#laMz zQ;0>wU~=T|WJa7xuVPJ+i7QZuR5gY5372h9vox}L8|pSH-l7Bf3T;bQhTWuJFFAzS z&0x(xH#5~-92o71tTh%=Cg|}DWDA#b_3Ug+9%x#h^&mdo7_806I`s)+sTZp1z#2y{ z6>GH+Ox9A-Op56@wX)43G1~S8RqChXzeg|^wsr5?=Y&jB%8C7Rq!(mr(rsD&ls}htF}~ePYo58sY@BA2=XIw-yBK1Q^PI4cxVhd>eqxNMr!4veWn;3rac%X*^yoy=qYq>p)jLPh?d%$ZIw#L>TRu|s@S8a z##+~;F|3MfjJJ|BYpGp zo2<45GV1HLl^tVTx#kLXEnzJo)~TtqSp4e(~&H!1U#D{7~B*T~T`xL_(D;g1GurcQD9F7(?GP#Mh*)nHB zp@z`MV|!KkamcV@#oC-1!U`s6j4`+r3D$I~|G*J3>~mPXn8(YFZ<8 z^3@$}t>V;90qCsPs3M7pj!ge_*S=tt7@Ho|D8jz zq9Ggepk0@xMmaP6@!#O-DgN%XRw{aYq|b;h9#@XaWuCYWoL9_NqcWPVx#(pJ4EE|8 zuWE@km;ckRuIutT;Yp5}xI4X}3*$QCcdL7rv!D*YH*{rNjeL`$BiVeKOC2BmjXtC$ zd8y!HU%m9o%iaCB*Fzt^%H!Kze)8wb-R;|hA1FKD7-WxMrtieBzWL!oSn_K0-fRw< z=`3f$k{tY4N4qu7r#VVfZfk5;c6f@R7vwe|#VZ7QHNrb%*8ODEDjMW+86gHt{ zE=bHek~+fbdZXezX|qAXTkCD(8=C10SpGSh6&N&38`x6C^9i zq(m|SG?xs?9_0=mb}WNS3mE5G`N%v|3iqin72Z z(rQ^V;aDy^z$`{F8Hhr${p*-`v&zu1O-zCfp zhEkINZN>uro7vFu!0;gl^^Z%g2vJ6csVgCqqrPZ(vU3q1WswSmlS-PE9a3XQgUYWcrodIjXH$ZIT27x22)B zwLym5CJ*WAJi8vItH4=~JfVcU$pmqFfPE`t8#~3C5^$nmN!ww8VLz^Hxv6BXq?~I%=#CGgdqo0lCud#2ibtF&V;McEBhA?r6qdVcDFVl<&s~|8 zq$0g8ZD8<0ot~9Bn)N6$Bbv*APBx7ma&Kf@6;{XscmkvSF0lAUTq%ymzb3Vpbn9x> z2NQS&3~umBB&@#(V>o|`-SC7pj8_P=lQM8brFlmj)hmh5#MK+jPjMQ#npJowE`};u zIW<+LNa@BSY-OPk`C6G^&Yq=dN=z;2(o+`ss2%O=jFnQGhs7{uIV0PXQxfIidN^HL z-mrJ@i`*|?Sx(*=Gnw-QX60I@%N|B=(%Ni2_oSJ*@nJKZ>pW*VyT{BO6dauMgZ`yg zPo^+fchJAlB8j$d_i=v3S}^x^Q%N3>ZP|IE|09@MSC9-yb$7VKiby2&ph zpt1o?v^_q%PC=IOw51pANF?~$;#Kt!xt*a-!RBS)MvJaP%wcp#cD}I2)33G2=l{CU z-NZ(hnjw9(`@?lKJmo<(tYd9d);k*_W%gtCeAWZlgxpoy|ZDMRPr_m>p rx}08pS4?)u<%PW $(TREEDIR)/docs/wxtree.xlp - /bin/rm -f $(TREEDIR)/docs/tmp.xlp - -$(HTMLDIR)/wxtree/wxtree_contents.html: $(TREEDIR)/docs/manual.tex $(TREEDIR)/docs/classes.tex - cd ../docs; tex2rtf manual.tex $(HTMLDIR)/wxtree/wxtree.html -html -twice - -$(TREEDIR)/docs/manual.dvi: $(TREEDIR)/docs/manual.tex $(TREEDIR)/docs/classes.tex - cd $(TREEDIR)/docs; latex manual; latex manual; makeindex manual; bibtex manual; latex manual; latex manual - -$(TREEDIR)/docs/manual.ps: $(TREEDIR)/docs/manual.dvi - cd $(TREEDIR)/docs; dvips -f -r < manual.dvi > manual.ps - -clean_motif: - $(MAKE) -f makefile.unx GUISUFFIX=_motif cleanany - -clean_ol: - $(MAKE) -f makefile.unx GUISUFFIX=_ol cleanany - -clean_hp: - $(MAKE) -f makefile.unx GUISUFFIX=_hp cleanany - -cleanany: - rm -f $(OBJECTS) $(OBJDIR)/*.$(OBJSUFF) test$(GUISUFFIX) $(TREELIB) core - -wxclean_ol: - cd $(WXDIR)/src/x; $(MAKE) -f makefile.unx clean_ol - -wxclean_motif: - cd $(WXDIR)/src/x; $(MAKE) -f makefile.unx clean_motif - -wxclean_hp: - cd $(WXDIR)/src/x; $(MAKE) -f makefile.unx clean_hp diff --git a/utils/wxtree/src/makefile.vc b/utils/wxtree/src/makefile.vc deleted file mode 100644 index 26db16510a..0000000000 --- a/utils/wxtree/src/makefile.vc +++ /dev/null @@ -1,133 +0,0 @@ -# -# File: makefile.nt -# Author: Julian Smart -# Created: 1993 -# Updated: -# Copyright: (c) 1993, AIAI, University of Edinburgh -# -# "%W% %G%" -# -# Makefile : Builds wxTree class library (MS VC++). -# Use FINAL=1 argument to nmake to build final version with no debugging -# info - -# Set WXDIR for your system -WXDIR = $(WXWIN) -TREEDIR = $(WXDIR)\utils\wxtree -THISDIR = $(WXDIR)\utils\wxtree\src -EXTRALIBS=$(WXDIR)\lib\wxtree.lib -DOCDIR=$(WXDIR)\docs -LOCALDOCDIR=$(WXDIR)\utils\wxtree\docs - -!include $(WXDIR)\src\ntwxwin.mak - -PROGRAM=test - -OBJECTS = wxtree.obj -PROGOBJECTS = $(PROGRAM).obj -LIBTARGET=$(WXDIR)\lib\wxtree.lib - -all: $(LIBTARGET) - -$(PROGRAM): $(PROGRAM).exe - -wx: - cd $(WXDIR)\src\msw - nmake -f makefile.nt FINAL=$(FINAL) - cd $(THISDIR) - -wxclean: - cd $(WXDIR)\src\msw - nmake -f makefile.nt clean - cd $(THISDIR) - -$(LIBTARGET): $(OBJECTS) - -erase $(LIBTARGET) - $(implib) @<< --out:$(LIBTARGET) --machine:$(CPU) -$(OBJECTS) -<< - -$(PROGRAM).exe: $(DUMMYOBJ) $(WXLIB) $(PROGOBJECTS) $(LIBTARGET) $(PROGRAM).res - $(link) @<< --out:$(PROGRAM).exe -$(LINKFLAGS) -$(DUMMYOBJ) $(PROGOBJECTS) $(PROGRAM).res -$(LIBS) -<< - -wxtree.obj: wxtree.h wxtree.$(SRCSUFF) $(DUMMYOBJ) - $(cc) @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -$(PROGRAM).obj: $(PROGRAM).h $(PROGRAM).$(SRCSUFF) $(DUMMYOBJ) - $(cc) @<< -$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) -<< - -$(PROGRAM).res : $(PROGRAM).rc $(WXDIR)\include\wx\msw\wx.rc - $(rc) -r /i$(WXDIR)\include -fo$@ $(PROGRAM).rc - - -clean: - -erase *.obj - -erase *.sbr - -erase *.exe - -erase *.res - -erase *.map - -erase *.pdb - -erase $(LIBTARGET) - -DOCSOURCES=$(LOCALDOCDIR)\wxtree.tex $(LOCALDOCDIR)\classes.tex - -html: $(DOCDIR)\html\wxtree\tree.htm -hlp: $(DOCDIR)\winhelp\wxtree.hlp -pdfrtf: $(DOCDIR)\pdf\wxtree.rtf -ps: $(WXDIR)\docs\ps\wxtree.ps - -$(DOCDIR)\winhelp\wxtree.hlp: $(LOCALDOCDIR)\wxtree.rtf $(LOCALDOCDIR)\wxtree.hpj - cd $(LOCALDOCDIR) - -erase wxtree.ph - hc wxtree - move wxtree.hlp $(DOCDIR)\winhelp\wxtree.hlp - move wxtree.cnt $(DOCDIR)\winhelp\wxtree.cnt - cd $(THISDIR) - -$(LOCALDOCDIR)\wxtree.rtf: $(DOCSOURCES) - cd $(LOCALDOCDIR) - -start /w tex2rtf $(LOCALDOCDIR)\wxtree.tex $(LOCALDOCDIR)\wxtree.rtf -twice -winhelp - cd $(THISDIR) - -$(DOCDIR)\pdf\wxtree.rtf: $(DOCSOURCES) - cd $(LOCALDOCDIR) - -copy *.bmp $(DOCDIR)\pdf - -start /w tex2rtf $(LOCALDOCDIR)\wxtree.tex $(DOCDIR)\pdf\wxtree.rtf -twice -rtf - cd $(THISDIR) - -$(DOCDIR)\html\wxtree\tree.htm: $(DOCSOURCES) - cd $(LOCALDOCDIR) - -mkdir $(DOCDIR)\html\wxtree - -start /w tex2rtf $(LOCALDOCDIR)\wxtree.tex $(DOCDIR)\html\wxtree\tree.htm -twice -html - -erase $(DOCDIR)\html\wxtree\*.con - -erase $(DOCDIR)\html\wxtree\*.ref - cd $(THISDIR) - -$(LOCALDOCDIR)\wxtree.dvi: $(DOCSOURCES) - cd $(LOCALDOCDIR) - -latex wxtree - -latex wxtree - -makeindx wxtree - -bibtex wxtree - -latex wxtree - -latex wxtree - cd $(THISDIR) - -$(WXDIR)\docs\ps\wxtree.ps: $(LOCALDOCDIR)\wxtree.dvi - cd $(LOCALDOCDIR) - -dvips32 -o wxtree.ps wxtree - move wxtree.ps $(WXDIR)\docs\ps\wxtree.ps - cd $(THISDIR) - - diff --git a/utils/wxtree/src/makefile.wat b/utils/wxtree/src/makefile.wat deleted file mode 100644 index 818e657eac..0000000000 --- a/utils/wxtree/src/makefile.wat +++ /dev/null @@ -1,49 +0,0 @@ -WXDIR = ..\..\.. - -NOPRECOMP=1 - -!include $(WXDIR)\src\makewat.env - -WXLIB=$(WXDIR)\lib -LIBTARGET = ..\lib\wxtree.lib -IFLAGS = -i=$(WXINC) -i=$(WXBASEINC) -EXTRACPPFLAGS = -NAME = wxtree -LNK = test.lnk -TESTOBJECTS=test.obj - -OBJECTS = $(name).obj - -all: $(OBJECTS) $(LIBTARGET) - -$(LIBTARGET): $(OBJECTS) - *wlib /b /c /n /P=256 $(LIBTARGET) $(OBJECTS) - -test: test.exe - -test.obj: test.$(SRCSUFF) test.h wxtree.h - -test.exe : $(TESTOBJECTS) test.res $(LNK) $(LIBTARGET) $(WXLIB)\wx$(LEVEL).lib - wlink @$(LNK) - $(BINDCOMMAND) test.res - -test.res : test.rc $(WXDIR)\include\msw\wx.rc - $(RC) $(RESFLAGS1) test.rc - -$(LNK) : makefile.wat - %create $(LNK) - @%append $(LNK) debug all - @%append $(LNK) system $(LINKOPTION) - @%append $(LNK) $(MINDATA) - @%append $(LNK) $(MAXDATA) - @%append $(LNK) $(STACK) - @%append $(LNK) name test - @%append $(LNK) file $(WXLIB)\wx$(LEVEL).lib - @%append $(LNK) file $(LIBTARGET) - @for %i in ($(EXTRALIBS)) do @%append $(LNK) file %i - @for %i in ($(TESTOBJECTS)) do @%append $(LNK) file %i - -clean: .SYMBOLIC - -erase $(LIBTARGET) *.obj *.bak *.err *.pch *.lib *.lbc *.res *.exe - - diff --git a/utils/wxtree/src/mondrian.ico b/utils/wxtree/src/mondrian.ico deleted file mode 100644 index 2310c5d275a87af295d5ea8dc79ea417a5e74c53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmZQzU<5)11px*Sc)`TLAO@s0fLH;D9e|jTfdxnc0Z - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include -#endif - -#include "wxtree.h" -#include "test.h" - -wxStoredTree *myTree = NULL; - -// A macro needed for some compilers (AIX) that need 'main' to be defined -// in the application itself. -IMPLEMENT_APP(MyApp) - -// The `main program' equivalent, creating the windows and returning the -// main frame -bool MyApp::OnInit() -{ - // Create the main frame window - MyFrame* frame = new MyFrame(NULL, "Tree Test", wxPoint(-1, -1), wxSize(400, 550)); - - // Give it a status line - frame->CreateStatusBar(2); - - // Give it an icon -#ifdef __WINDOWS__ - wxIcon icon("tree_icn"); - frame->SetIcon(icon); -#endif - - // Make a menubar - wxMenu *file_menu = new wxMenu; - file_menu->Append(TEST_LEFT_RIGHT, "&Left to right", "Redraw left to right"); - file_menu->Append(TEST_TOP_BOTTOM, "&Top to bottom", "Redraw top to bottom"); - file_menu->AppendSeparator(); - file_menu->Append(TEST_QUIT, "E&xit", "Quit program"); - - wxMenu *help_menu = new wxMenu; - help_menu->Append(TEST_ABOUT, "&About", "About Tree Test"); - - wxMenuBar* menu_bar = new wxMenuBar; - - menu_bar->Append(file_menu, "&File"); - menu_bar->Append(help_menu, "&Help"); - - // Associate the menu bar with the frame - frame->SetMenuBar(menu_bar); - - MyCanvas *canvas = new MyCanvas(frame); - - // Give it scrollbars: the virtual canvas is 20 * 50 = 1000 pixels in each direction - canvas->SetScrollbars(20, 20, 50, 50); - frame->canvas = canvas; - - myTree = new wxStoredTree(); - - wxClientDC dc(canvas); - wxFont font(10, wxROMAN, wxNORMAL, wxBOLD); - dc.SetFont(font); - TreeTest(*myTree, dc); - - frame->Show(TRUE); - - frame->SetStatusText("Hello, tree!"); - - // Return the main frame window - return TRUE; -} - -void MyApp::TreeTest(wxStoredTree& tree, wxDC& dc) -{ - tree.Initialize(200); - - tree.AddChild("animal"); - tree.AddChild("mammal", "animal"); - tree.AddChild("insect", "animal"); - tree.AddChild("bird", "animal"); - - tree.AddChild("man", "mammal"); - tree.AddChild("cat", "mammal"); - tree.AddChild("dog", "mammal"); - tree.AddChild("giraffe", "mammal"); - tree.AddChild("elephant", "mammal"); - tree.AddChild("donkey", "mammal"); - tree.AddChild("horse", "mammal"); - - tree.AddChild("fido", "dog"); - tree.AddChild("domestic cat", "cat"); - tree.AddChild("lion", "cat"); - tree.AddChild("tiger", "cat"); - tree.AddChild("felix", "domestic cat"); - tree.AddChild("socks", "domestic cat"); - - tree.AddChild("beetle", "insect"); - tree.AddChild("earwig", "insect"); - tree.AddChild("eagle", "bird"); - tree.AddChild("bluetit", "bird"); - tree.AddChild("sparrow", "bird"); - tree.AddChild("blackbird", "bird"); - tree.AddChild("emu", "bird"); - tree.AddChild("crow", "bird"); - - tree.DoLayout(dc); -} - -BEGIN_EVENT_TABLE(MyFrame, wxFrame) - EVT_MENU(TEST_QUIT, MyFrame::OnQuit) - EVT_MENU(TEST_ABOUT, MyFrame::OnAbout) - EVT_MENU(TEST_LEFT_RIGHT, MyFrame::OnLeftRight) - EVT_MENU(TEST_TOP_BOTTOM, MyFrame::OnTopBottom) - EVT_CLOSE(MyFrame::OnCloseWindow) -END_EVENT_TABLE() - -// Define my frame constructor -MyFrame::MyFrame(wxWindow *parent, const wxString& title, const wxPoint& pos, const wxSize& size): - wxFrame(parent, -1, title, pos, size) -{ -} - -void MyFrame::OnQuit(wxCommandEvent& event) -{ - Close(TRUE); -} - -void MyFrame::OnLeftRight(wxCommandEvent& event) -{ - if (myTree) - { - myTree->SetOrientation(FALSE); - wxClientDC dc(canvas); - wxFont font(10, wxROMAN, wxNORMAL, wxBOLD); - dc.SetFont(font); - wxGetApp().TreeTest(*myTree, dc); - canvas->Refresh(); - } -} - -void MyFrame::OnTopBottom(wxCommandEvent& event) -{ - if (myTree) - { - myTree->SetOrientation(TRUE); - wxClientDC dc(canvas); - wxFont font(10, wxROMAN, wxNORMAL, wxBOLD); - dc.SetFont(font); - wxGetApp().TreeTest(*myTree, dc); - canvas->Refresh(); - } -} - -void MyFrame::OnAbout(wxCommandEvent& event) -{ - (void)wxMessageBox("wxWindows tree library demo Vsn 2.0\nAuthor: Julian Smart (c) 1998", "About tree test"); -} - -void MyFrame::OnCloseWindow(wxCloseEvent& event) -{ - Destroy(); -} - -BEGIN_EVENT_TABLE(MyCanvas, wxScrolledWindow) - EVT_PAINT(MyCanvas::OnPaint) -END_EVENT_TABLE() - -// Define a constructor for my canvas -MyCanvas::MyCanvas(wxWindow *parent): - wxScrolledWindow(parent, -1) -{ - SetBackgroundColour(*wxWHITE); -} - -// Define the repainting behaviour -void MyCanvas::OnPaint(wxPaintEvent& event) -{ - wxPaintDC dc(this); - PrepareDC(dc); - if (myTree) - { - wxFont font(10, wxROMAN, wxNORMAL, wxBOLD); - dc.SetFont(font); - myTree->Draw(dc); - } -} - diff --git a/utils/wxtree/src/test.def b/utils/wxtree/src/test.def deleted file mode 100644 index 558ccc1235..0000000000 --- a/utils/wxtree/src/test.def +++ /dev/null @@ -1,8 +0,0 @@ -NAME Test -DESCRIPTION 'Tree Test' -EXETYPE WINDOWS -STUB 'WINSTUB.EXE' -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE -HEAPSIZE 1024 -STACKSIZE 16192 diff --git a/utils/wxtree/src/test.h b/utils/wxtree/src/test.h deleted file mode 100644 index b00660744e..0000000000 --- a/utils/wxtree/src/test.h +++ /dev/null @@ -1,54 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: test.h -// Purpose: wxTreeLayout sample -// Author: Julian Smart -// Modified by: -// Created: 7/4/98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Julian Smart -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -// Define a new application -class MyApp: public wxApp -{ - public: - bool OnInit(); - void TreeTest(wxStoredTree& tree, wxDC& dc); -}; - -DECLARE_APP(MyApp) - -class MyCanvas; - -class MyFrame: public wxFrame -{ - public: - MyCanvas *canvas; - MyFrame(wxWindow *parent, const wxString& title, const wxPoint& pos, const wxSize& size); - - void OnCloseWindow(wxCloseEvent& event); - void OnQuit(wxCommandEvent& event); - void OnAbout(wxCommandEvent& event); - void OnLeftRight(wxCommandEvent& event); - void OnTopBottom(wxCommandEvent& event); - -DECLARE_EVENT_TABLE() -}; - -// Define a new canvas which can receive some events -class MyCanvas: public wxScrolledWindow -{ - public: - MyCanvas(wxWindow *frame); - void OnPaint(wxPaintEvent& event); - void OnEvent(wxMouseEvent& event); - void OnChar(wxKeyEvent& event); -DECLARE_EVENT_TABLE() -}; - -#define TEST_QUIT 1 -#define TEST_ABOUT 2 -#define TEST_LEFT_RIGHT 3 -#define TEST_TOP_BOTTOM 4 - diff --git a/utils/wxtree/src/test.rc b/utils/wxtree/src/test.rc deleted file mode 100644 index 41e6896e8e..0000000000 --- a/utils/wxtree/src/test.rc +++ /dev/null @@ -1,3 +0,0 @@ -tree_icn ICON "mondrian.ico" -#include "wx/msw/wx.rc" - diff --git a/utils/wxtree/src/wxtree.cpp b/utils/wxtree/src/wxtree.cpp deleted file mode 100644 index aed1afafed..0000000000 --- a/utils/wxtree/src/wxtree.cpp +++ /dev/null @@ -1,440 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: tree.h -// Purpose: wxTreeLayout class -// Author: Julian Smart -// Modified by: -// Created: 7/4/98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Julian Smart -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -#ifdef __GNUG__ -#pragma implementation "wxtree.h" -#endif - -// For compilers that support precompilation, includes "wx.h". -#include - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include -#endif - -#include "wxtree.h" - -/* - * Abstract tree - * - */ - -IMPLEMENT_ABSTRACT_CLASS(wxTreeLayout, wxObject) - -wxTreeLayout::wxTreeLayout() -{ - m_xSpacing = 16; - m_ySpacing = 20; - m_topMargin = 5; - m_leftMargin = 5; - m_orientation = FALSE; - m_parentNode = 0; -} - -void wxTreeLayout::DoLayout(wxDC& dc, long topId) -{ - if (topId != -1) - SetTopNode(topId); - - long actualTopId = GetTopNode(); - long id = actualTopId; - while (id != -1) - { - SetNodeX(id, 0); - SetNodeY(id, 0); - ActivateNode(id, FALSE); - id = GetNextNode(id); - } - m_lastY = m_topMargin; - m_lastX = m_leftMargin; - CalcLayout(actualTopId, 0, dc); -} - -void wxTreeLayout::Draw(wxDC& dc) -{ - dc.Clear(); - DrawBranches(dc); - DrawNodes(dc); -} - -void wxTreeLayout::DrawNodes(wxDC& dc) -{ - long id = GetTopNode(); - while (id != -1) - { - if (NodeActive(id)) - DrawNode(id, dc); - id = GetNextNode(id); - } -} - -void wxTreeLayout::DrawBranches(wxDC& dc) -{ - long id = GetTopNode(); - while (id != -1) - { - if (GetNodeParent(id) > -1) - { - long parent = GetNodeParent(id); - if (NodeActive(parent)) - DrawBranch(parent, id, dc); - } - id = GetNextNode(id); - } -} - -void wxTreeLayout::DrawNode(long id, wxDC& dc) -{ - char buf[80]; - wxString name(GetNodeName(id)); - if (name != "") - sprintf(buf, "%s", (const char*) name); - else - sprintf(buf, ""); - - long x = 80; - long y = 20; - dc.GetTextExtent(buf, &x, &y); - dc.DrawText(buf, GetNodeX(id), (long)(GetNodeY(id) - (y/2.0))); -} - -void wxTreeLayout::DrawBranch(long from, long to, wxDC& dc) -{ - long w, h; - GetNodeSize(from, &w, &h, dc); - dc.DrawLine(GetNodeX(from)+w, GetNodeY(from), - GetNodeX(to), GetNodeY(to)); -} - -void wxTreeLayout::Initialize(void) -{ -} - -void wxTreeLayout::GetNodeSize(long id, long *x, long *y, wxDC& dc) -{ - wxString name(GetNodeName(id)); - if (name != "") - dc.GetTextExtent(name, x, y); - else - { - *x = 70; *y = 20; - } -} - -void wxTreeLayout::CalcLayout(long nodeId, int level, wxDC& dc) -{ - wxList children; - GetChildren(nodeId, children); - int n = children.Number(); - - if (m_orientation == FALSE) - { - // Left to right - // X Calculations - if (level == 0) - SetNodeX(nodeId, m_leftMargin); - else - { - long x = 0; - long y = 0; - long parentId = GetNodeParent(nodeId); - if (parentId != -1) - GetNodeSize(parentId, &x, &y, dc); - SetNodeX(nodeId, (long)(GetNodeX(parentId) + m_xSpacing + x)); - } - - wxNode *node = children.First(); - while (node) - { - CalcLayout((long)node->Data(), level+1, dc); - node = node->Next(); - } - - // Y Calculations - long averageY; - ActivateNode(nodeId, TRUE); - - if (n > 0) - { - averageY = 0; - node = children.First(); - while (node) - { - averageY += GetNodeY((long)node->Data()); - node = node->Next(); - } - averageY = averageY / n; - SetNodeY(nodeId, averageY); - } - else - { - SetNodeY(nodeId, m_lastY); - long x, y; - GetNodeSize(nodeId, &x, &y, dc); - - m_lastY = m_lastY + y + m_ySpacing; - } - } - else - { - // Top to bottom - - // Y Calculations - if (level == 0) - SetNodeY(nodeId, m_topMargin); - else - { - long x = 0; - long y = 0; - long parentId = GetNodeParent(nodeId); - if (parentId != -1) - GetNodeSize(parentId, &x, &y, dc); - SetNodeY(nodeId, (long)(GetNodeY(parentId) + m_ySpacing + y)); - } - - wxNode *node = children.First(); - while (node) - { - CalcLayout((long)node->Data(), level+1, dc); - node = node->Next(); - } - - // X Calculations - long averageX; - ActivateNode(nodeId, TRUE); - - if (n > 0) - { - averageX = 0; - node = children.First(); - while (node) - { - averageX += GetNodeX((long)node->Data()); - node = node->Next(); - } - averageX = averageX / n; - SetNodeX(nodeId, averageX); - } - else - { - SetNodeX(nodeId, m_lastX); - long x, y; - GetNodeSize(nodeId, &x, &y, dc); - - m_lastX = m_lastX + x + m_xSpacing; - } - } -} - -/* - * Tree with storage - * - */ - -IMPLEMENT_DYNAMIC_CLASS(wxStoredTree, wxTreeLayout) - -wxStoredTree::wxStoredTree(int n):wxTreeLayout() -{ - m_nodes = NULL; - m_maxNodes = 0; - Initialize(n); -} - -wxStoredTree::~wxStoredTree(void) -{ - if (m_nodes) - delete[] m_nodes; -} - -void wxStoredTree::Initialize(int n) -{ - m_maxNodes = n; - wxTreeLayout::Initialize(); - if (m_nodes) delete[] m_nodes; - m_nodes = new wxStoredNode[m_maxNodes]; - int i; - for (i = 0; i < n; i++) - { - m_nodes[i].m_name = ""; - m_nodes[i].m_active = FALSE; - m_nodes[i].m_parentId = -1; - m_nodes[i].m_x = 0; - m_nodes[i].m_y = 0; - } - m_num = 0; -} - -long wxStoredTree::AddChild(const wxString& name, const wxString& parent) -{ - if (m_num < (m_maxNodes -1 )) - { - long i = -1; - if (parent != "") - i = NameToId(parent); - else m_parentNode = m_num; - - m_nodes[m_num].m_parentId = i; - m_nodes[m_num].m_name = name; - m_nodes[m_num].m_x = m_nodes[m_num].m_y = 0; - m_nodes[m_num].m_clientData = 0; - m_num ++; - - return (m_num - 1); - } - else - return -1; -} - -long wxStoredTree::NameToId(const wxString& name) -{ - long i; - for (i = 0; i < m_num; i++) - if (name == m_nodes[i].m_name) - return i; - return -1; -} - -void wxStoredTree::GetChildren(long id, wxList& list) -{ - long currentId = GetTopNode(); - while (currentId != -1) - { - if (id == GetNodeParent(currentId)) - list.Append((wxObject *)currentId); - currentId = GetNextNode(currentId); - } -} - -wxStoredNode* wxStoredTree::GetNode(long idx) const -{ - wxASSERT(idx < m_num); - - return &m_nodes[idx]; -}; - -long wxStoredTree::GetNodeX(long id) -{ - wxASSERT(id < m_num); - - return (long)m_nodes[id].m_x; -} - -long wxStoredTree::GetNodeY(long id) -{ - wxASSERT(id < m_num); - - return (long)m_nodes[id].m_y; -} - -void wxStoredTree::SetNodeX(long id, long x) -{ - wxASSERT(id < m_num); - - m_nodes[id].m_x = (int)x; -} - -void wxStoredTree::SetNodeY(long id, long y) -{ - wxASSERT(id < m_num); - - m_nodes[id].m_y = (int)y; -} - -void wxStoredTree::SetNodeName(long id, const wxString& name) -{ - wxASSERT(id < m_num); - - m_nodes[id].m_name = name; -} - -wxString wxStoredTree::GetNodeName(long id) -{ - wxASSERT(id < m_num); - - return m_nodes[id].m_name; -} - -long wxStoredTree::GetNodeParent(long id) -{ - if (id != -1) - { - wxASSERT(id < m_num); - - return m_nodes[id].m_parentId; - } - else - return -1; -} - -long wxStoredTree::GetNextNode(long id) -{ - wxASSERT(id < m_num); - - if ((id != -1) && (id < (m_num - 1))) - return id + 1; - else - return -1; -} - -void wxStoredTree::SetClientData(long id, long clientData) -{ - wxASSERT(id < m_num); - - m_nodes[id].m_clientData = clientData; -} - -long wxStoredTree::GetClientData(long id) const -{ - wxASSERT(id < m_num); - - return m_nodes[id].m_clientData; -} - -void wxStoredTree::ActivateNode(long id, bool active) -{ - wxASSERT(id < m_num); - - m_nodes[id].m_active = active; -} - -bool wxStoredTree::NodeActive(long id) -{ - wxASSERT(id < m_num); - - return m_nodes[id].m_active; -} - -wxString wxStoredTree::HitTest(wxMouseEvent& event, wxDC& dc) -{ - long x, y; - event.Position(&x, &y); - - int i; - for (i = 0; i < m_maxNodes; i++) - { - wxStoredNode* item = &m_nodes[i]; - - long width, height; - dc.GetTextExtent(m_nodes[i].m_name, &width, &height); - - if ( (x >= (m_nodes[i].m_x-10)) && (x < (m_nodes[i].m_x + width+10)) && - (y >= m_nodes[i].m_y-10) && (y < (m_nodes[i].m_y + height+10)) ) - { - return m_nodes[i].m_name; - } - } - - return wxString(""); -} diff --git a/utils/wxtree/src/wxtree.h b/utils/wxtree/src/wxtree.h deleted file mode 100644 index 538e9e0891..0000000000 --- a/utils/wxtree/src/wxtree.h +++ /dev/null @@ -1,135 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: tree.h -// Purpose: wxTreeLayout class -// Author: Julian Smart -// Modified by: -// Created: 7/4/98 -// RCS-ID: $Id$ -// Copyright: (c) 1998 Julian Smart -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -#ifndef _WXTREE_H_ -#define _WXTREE_H_ - -#ifdef __GNUG__ -#pragma interface "wxtree.h" -#endif - -#include - -class wxTreeLayout: public wxObject -{ - DECLARE_ABSTRACT_CLASS(wxTreeLayout) - - public: - wxTreeLayout(); - - // Redefine these - virtual void GetChildren(long id, wxList& list) = 0; - virtual long GetNextNode(long id) = 0; - virtual long GetNodeParent(long id) = 0; - virtual long GetNodeX(long id) = 0; - virtual long GetNodeY(long id) = 0; - virtual void SetNodeX(long id, long x) = 0; - virtual void SetNodeY(long id, long y) = 0; - virtual void ActivateNode(long id, bool active) = 0; - virtual bool NodeActive(long id) = 0; - - // Optional redefinition - void Initialize(void); - inline virtual void SetNodeName(long id, const wxString& name) {} - inline virtual wxString GetNodeName(long id) { return wxString(""); } - virtual void GetNodeSize(long id, long *x, long *y, wxDC& dc); - virtual void Draw(wxDC& dc); - virtual void DrawNodes(wxDC& dc); - virtual void DrawBranches(wxDC& dc); - virtual void DrawNode(long id, wxDC& dc); - virtual void DrawBranch(long from, long to, wxDC& dc); - - // Don't redefine - virtual void DoLayout(wxDC& dc, long topNode = -1); - - // Accessors -- don't redefine - inline void SetTopNode(long id) { m_parentNode = id; } - inline long GetTopNode(void) const { return m_parentNode; } - inline void SetSpacing(long x, long y) { m_xSpacing = x; m_ySpacing = y; } - inline long GetXSpacing(void) const { return m_xSpacing; } - inline long GetYSpacing(void) const { return m_ySpacing; } - inline void SetMargins(long x, long y) { m_leftMargin = x; m_topMargin = y; } - inline long GetTopMargin(void) const { return m_topMargin; } - inline long GetLeftMargin(void) const { return m_leftMargin; } - - inline bool GetOrientation(void) const { return m_orientation; } - inline void SetOrientation(bool or) { m_orientation = or; } - - private: - void CalcLayout(long node_id, int level, wxDC& dc); - -// Members - - protected: - long m_parentNode; - long m_lastY; - long m_lastX; - long m_xSpacing; - long m_ySpacing; - long m_topMargin; - long m_leftMargin; - bool m_orientation; // TRUE for top-to-bottom, FALSE for left-to-right -}; - -class wxStoredNode -{ - public: - wxString m_name; - long m_x, m_y; - long m_parentId; - bool m_active; - long m_clientData; -}; - -/* - * A version of wxTreeLayout with storage for nodes - */ - -class wxStoredTree: public wxTreeLayout -{ - DECLARE_DYNAMIC_CLASS(wxStoredTree) -public: - wxStoredTree(int noNodes = 200); - ~wxStoredTree(void); - void Initialize(int n); - - wxString HitTest(wxMouseEvent& event, wxDC& dc); - wxStoredNode* GetNode(long id) const; - inline int GetNumNodes() const { return m_maxNodes; }; - inline int GetNodeCount() const { return m_num; }; - - virtual void GetChildren(long id, wxList& list); - virtual long GetNextNode(long id); - virtual long GetNodeParent(long id); - virtual long GetNodeX(long id); - virtual long GetNodeY(long id); - virtual void SetNodeX(long id, long x); - virtual void SetNodeY(long id, long y); - virtual void SetNodeName(long id, const wxString& name); - virtual wxString GetNodeName(long id); - virtual void ActivateNode(long id, bool active); - virtual bool NodeActive(long id); - virtual void SetClientData(long id, long clientData); - virtual long GetClientData(long id) const; - - virtual long AddChild(const wxString& name, const wxString& parent = ""); - virtual long NameToId(const wxString& name); - -// Data members -private: - wxStoredNode* m_nodes; - int m_num; - int m_maxNodes; -}; - -#endif - // _WXTREE_H_ - diff --git a/wx-config.in b/wx-config.in deleted file mode 100755 index 2e2d4e3476..0000000000 --- a/wx-config.in +++ /dev/null @@ -1,59 +0,0 @@ -#!/bin/sh - -prefix=@prefix@ -exec_prefix=@exec_prefix@ -exec_prefix_set=no - -usage="\ -Usage: wx-config [--prefix[=DIR]] [--exec-prefix[=DIR]] [--version] [--libs] [--cflags]" - -if test $# -eq 0; then - echo "${usage}" 1>&2 - exit 1 -fi - -while test $# -gt 0; do - case "$1" in - -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;; - *) optarg= ;; - esac - - case $1 in - --prefix=*) - prefix=$optarg - if test $exec_prefix_set = no ; then - exec_prefix=$optarg - fi - ;; - --prefix) - echo $prefix - ;; - --exec-prefix=*) - exec_prefix=$optarg - exec_prefix_set=yes - ;; - --exec-prefix) - echo $exec_prefix - ;; - --version) - echo 2.01 - ;; - --cflags) - if test @includedir@ != /usr/include ; then - includes=-I@includedir@ - fi - includes="$includes -I@libdir@/wx/include" - echo $includes -D@TOOLKIT_DEF@ @WXDEBUG_DEFINE@ - - ;; - --libs) - echo -L@libdir@ @THREADS_LINK@ @WX_LINK@ @DL_LIBRARY@ @GUI_TK_LIBRARY@ @EXTRA_LINK@ - ;; - *) - echo "${usage}" 1>&2 - exit 1 - ;; - esac - shift -done - diff --git a/wxGTK.spec b/wxGTK.spec deleted file mode 100644 index 13009c2c46..0000000000 --- a/wxGTK.spec +++ /dev/null @@ -1,39 +0,0 @@ -Summary: The GTK+ 1.0 port of wxWindows library -Name: wxGTK -Version: 2.0.1 -Release: 1 -Copyright: wxWindows Licence -Group: X11/Libraries -Source: ftp://wesley.informatik.uni-freiburg.de/pub/linux/wxxt/source/wxGTK2b3.tgz -URL: http://www.freiburg.linux.de/~wxxt/docs.html -Packager: Robert Roebling -Requires: gtk+ >= 1.0.4 - -%description -wxWindows is a free C++ library for cross-platform GUI development. With wxWindows, you can create applications for different GUIs from the same source code. This package also contains a dialog editor. - -%prep -%setup -n wxGTK -./configure --prefix=/usr --with-threads - -%build -make - -%install -make install - -%post -/sbin/ldconfig - -%postun -/sbin/ldconfig - -%files -%doc COPYING.LIB INSTALL.txt LICENCE.txt README.txt SYMBOLS.txt TODO.txt -/usr/include/wx -/usr/lib/wx -/usr/lib/libwx_gtk2.so -/usr/lib/libwx_gtk2.so.0 -/usr/lib/libwx_gtk2.so.0.1 -/usr/bin/wx-config - diff --git a/wxinstall b/wxinstall deleted file mode 100644 index 0f634fd61e..0000000000 --- a/wxinstall +++ /dev/null @@ -1,1486 +0,0 @@ -#!/bin/sh -# N.B. make sure this really is a true Bourne-compatible shell. - -# !!!! WARNING !!! THIS IS IN DEVELOPMENT AND HAS NOT BEEN -# TESTED. DO NOT USE YET! -# Use src/motif/makefile.unx directly instead, with the 'motif' -# target. - -############################################################### -# wxinstal -- wxWindows for Motif installation script. # -# Julian Smart, December 1998 # -# Usage: wxinstall [optional wxWindows target directory] # -# Note: this uses plain makefiles. You can also use the # -# configure system: see docs/motif/install.txt. # -############################################################### - -########### Edit these variables for your system. ############# -########### ALSO edit wx/src/make.env once unarchived ######### - -# Editor -MYEDITOR=$EDITOR -if [ "$MYEDITOR" = "" ] -then - MYEDITOR=emacs -fi - -# Pager -MYPAGER=$PAGER -if [ "$MYPAGER" = "" ] -then - MYPAGER=more -fi - -# wxWindows directory to install to -WXDIR=`pwd` -if [ ! "$1" = "" ] -then - WXDIR=$1 -fi - -# Target (motif, xview) -GUITARGET=motif - -# Archive prefix, dependent on version number -ARCHIVE=wx200 - -# Platform. 1 = generic platform -PLATFORM=1 - -# Current directory -CURRENTDIR=`pwd` - -# PostScript viewer, if any -POSTSCRIPTVIEWER=ghostview - -# PostScript viewer, if any -HTMLVIEWER=netscape - -# Don't change this -GUISUFFIX=_motif - -if [ "$GUITARGET" = "motif" ] -then - GUISUFFIX=_motif -fi - -# If you add platforms, you just need -# to adjust this number, and -# add environment variables -# for a description and the filename. - -PLATFORMCOUNT=12 - -PLATFORM1="Generic/Linux with gcc" -PLATFORMFILE1="linux.env" - -PLATFORM2="Solaris with gcc" -PLATFORMFILE2="sol_gcc.env" - -PLATFORM3="Solaris with Sun C++" -PLATFORMFILE3="sol_sun.env" - -PLATFORM4="SunOS 4.x.x with gcc" -PLATFORMFILE4="sunosgcc.env" - -PLATFORM5="FreeBSD with gcc" -PLATFORMFILE5="freebsd.env" - -PLATFORM6="AIX with gcc" -PLATFORMFILE6="aixgcc.env" - -PLATFORM7="AIX with CSet++" -PLATFORMFILE7="aixcset.env" - -PLATFORM8="Data General" -PLATFORMFILE8="datagen.env" - -PLATFORM9="HPUX" -PLATFORMFILE9="hp.env" - -PLATFORM10="IRIX" -PLATFORMFILE10="irix.env" - -PLATFORM11="DEC OSF" -PLATFORMFILE11="decosf.env" - -PLATFORM12="VAX VMS" -PLATFORMFILE12="vms.env" - -install_from_tar() -{ - if [ -f $CURRENTDIR/$ARCHIVE"gen.tar" ] - then - if [ ! -d $WXDIR ] - then - echo Making directory $WXDIR - mkdir $WXDIR - fi - if [ ! -d $WXDIR ] - then - echo $WXDIR" cannot be created!" - else - echo Untarring $CURRENTDIR/$ARCHIVE"*.tar." - echo Please be patient... - cd $WXDIR - tar xf $CURRENTDIR/$ARCHIVE"gen.tar" - tar xf $CURRENTDIR/$ARCHIVE"mot.tar" - echo If you saw no errors, untarring was successful. - fi - else - echo $CURRENTDIR/$ARCHIVE"gen.tar" not found. - fi - - # Unarchive HTML documentation if found - if [ -f $CURRENTDIR/$ARCHIVE"htm.tar" ] - then - echo Untarring HTML documentation $CURRENTDIR/$ARCHIVE"htm.tar." - echo Please be patient... - cd $WXDIR - tar xf $CURRENTDIR/$ARCHIVE"htm.tar" - fi - - # Unarchive PDF documentation if found - if [ -f $CURRENTDIR/$ARCHIVE"pdf.tar" ] - then - echo Untarring PDF documentation $CURRENTDIR/$ARCHIVE"pdf.tar." - echo Please be patient... - cd $WXDIR - tar xf $CURRENTDIR/$ARCHIVE"pdf.tar" - fi - - cd $CURRENTDIR -} - -install_from_gzip() -{ - if [ -f $CURRENTDIR/$ARCHIVE"gen.tgz" ] - then - echo Unarchiving $CURRENTDIR/$ARCHIVE"gen.tgz" - gzip -c -d $CURRENTDIR/$ARCHIVE"gen.tgz" | tar xf - - echo Unarchiving $CURRENTDIR/$ARCHIVE"mot.tgz" - gzip -c -d $CURRENTDIR/$ARCHIVE"mot.tgz" | tar xf - - - # Optional: PDF documentation - if [ -f $CURRENTDIR/$ARCHIVE"pdf.tgz" ] - then - echo Unarchiving $CURRENTDIR/$ARCHIVE"ps.tgz" - gzip -c -d $CURRENTDIR/$ARCHIVE"pdf.tgz" | tar xf - - fi - - # Optional: HTML documentation - if [ -f $CURRENTDIR/$ARCHIVE"htm.tgz" ] - then - echo Unarchiving $CURRENTDIR/$ARCHIVE"htm.tgz" - gzip -c -d $CURRENTDIR/$ARCHIVE"htm.tgz" | tar xf - - fi - - else - echo $CURRENTDIR/$ARCHIVE"gen.tgz" not found. Please place in the current directory. - fi - cd $CURRENTDIR -} - -install_from_zip() -{ - if [ -f $CURRENTDIR/$ARCHIVE"gen.zip" ] - then - if [ ! -d $WXDIR ] - then - echo Making directory $WXDIR - mkdir $WXDIR - fi - if [ ! -d $WXDIR ] - then - echo $WXDIR" cannot be created!" - else - echo Untarring $CURRENTDIR/$ARCHIVE"*.zip." - echo Please be patient... - cd $WXDIR - unzip -a -o $CURRENTDIR/$ARCHIVE"gen.zip" - unzip -a -o $CURRENTDIR/$ARCHIVE"mot.zip" - echo If you saw no errors, unzipping was successful. - fi - else - echo $CURRENTDIR/$ARCHIVE"gen.zip" not found. - fi - - # Unarchive HTML documentation if found - if [ -f $CURRENTDIR/$ARCHIVE"htm.zip" ] - then - echo Unzipping HTML documentation $CURRENTDIR/$ARCHIVE"htm.zip." - echo Please be patient... - cd $WXDIR - unzip -a -o $CURRENTDIR/$ARCHIVE"htm.zip" - fi - - # Unarchive PDF documentation if found - if [ -f $CURRENTDIR/$ARCHIVE"pdf.zip" ] - then - echo Unzipping PDF documentation $CURRENTDIR/$ARCHIVE"pdf.zip." - echo Please be patient... - cd $WXDIR - unzip -a -o $CURRENTDIR/$ARCHIVE"pdf.zip" - fi - - cd $CURRENTDIR -} - -edit_make_env() -{ - cd $CURRENTDIR - - if [ -f $WXDIR/src/make.env ] - then - echo "" - echo "If the files are unarchived ok, you should edit the file" - echo $WXDIR"/src/make.env" - echo "since this sets many options for your wxWindows" - echo "compilation environment." - echo "" - echo "Would you like to edit the file now? (y/n)" - echo - read ans - if [ "$ans" = "y" ] - then - $MYEDITOR $WXDIR/src/make.env - echo "" - echo Ok, if you get compilation or link errors in the installation, - echo $WXDIR"/src/make.env is the first place to look." - echo "" - echo "Press return to continue." - read ans - fi - else - echo "" - echo "Uh-oh, cannot find "$WXDIR"/src/make.env; probably you have not unarchived" - echo "properly yet." - echo "" - echo "Press return to continue." - read ans - fi -} - -install_from_archive() -{ - echo - echo "Install from Archive" - echo "--------------------" - - echo "1) Install from "$ARCHIVE"gen.zip, "$ARCHIVE"mot.zip" - echo " and "$ARCHIVE"htm.zip if present." - echo "2) Install from "$ARCHIVE"gen.tgz, "$ARCHIVE"mot.tgz" - echo " and "$ARCHIVE"htm.tgz if present." - echo "0) Quit." - echo - read archans - - if [ "$archans" = "1" ] - then - install_from_zip - fi - if [ "$archans" = "2" ] - then - install_from_gzip - fi -} - -make_main_library() -{ - if [ ! -d $WXDIR/src ] - then - echo "Source directory not found: please unarchive first." - echo Press return to continue. - read ans - else - echo - echo Making the wxWindows main library. It will go in - echo $WXDIR/lib. - echo - echo Please press RETURN to continue, and then make yourself a coffee. - echo - read ans - if [ ! -d $WXDIR/lib ] - then - mkdir $WXDIR/lib - fi - - cd $WXDIR/src/motif - make -f makefile.unx $GUITARGET 2>&1 | tee -a $CURRENTDIR/make.log - cd $CURRENTDIR - - if [ -f $WXDIR/lib/libwx$GUISUFFIX".a" ] - then - echo - echo "If you saw no errors, wxWindows was compiled. See the file make.log" - echo "for errors and warnings." - else - echo - echo $WXDIR/lib/libwx$GUISUFFIX".a was not built." - echo "Please check make.env, and read install.txt and faq.txt/ps." - echo - echo "Press return to continue." - echo - read ans - fi - fi -} - -############################################################### -# Make peripheral components # -############################################################### - -make_wxtree() -{ - if [ ! -d $WXDIR/utils/wxtree ] - then - echo wxTree directory does not exist. - echo Press return to continue. - read ans - else - echo - echo Making the wxTree library. It will go in - echo $WXDIR/utils/wxtree/lib. - echo - cd $WXDIR/utils/wxtree/src - make -f makefile.unx $GUITARGET 2>&1 | tee $CURRENTDIR/make.log - cd $CURRENTDIR - echo - echo "If you saw no errors, the wxTree library was compiled. See the file make.log" - echo "for errors and warnings." - fi -} - -make_wxgraph() -{ - if [ ! -d $WXDIR/utils/wxgraph ] - then - echo wxGraph directory does not exist. - echo Press return to continue. - read ans - else - echo - echo Making the wxGraph library. It will go in - echo $WXDIR/utils/wxgraph/lib. - echo - cd $WXDIR/utils/wxgraph/src - make -f makefile.unx $GUITARGET 2>&1 | tee $CURRENTDIR/make.log - cd $CURRENTDIR - echo - echo "If you saw no errors, the wxGraph library was compiled. See the file make.log" - echo "for errors and warnings." - fi -} - -make_colour() -{ - if [ ! -d $WXDIR/utils/colours ] - then - echo $WXDIR/utils/colours directory does not exist. - echo Press return to continue. - read ans - else - echo - echo Making the Colour sampler. It will go in - echo $WXDIR/utils/colours - echo - cd $WXDIR/utils/colours - make -f makefile.unx $GUITARGET 2>&1 | tee $CURRENTDIR/make.log - cd $CURRENTDIR - echo - echo "If you saw no errors, the Colour sampler was compiled. See the file make.log" - echo "for errors and warnings." - echo "" - if [ -f $WXDIR/utils/colours/colours$GUISUFFIX ] - then - echo "Run the Colour sampler? (y/n)" - echo "" - read ans1 - if [ "$ans1" = "y" ] - then - $WXDIR/utils/colours/colours$GUISUFFIX - fi - fi - fi -} - -make_wxhelp() -{ - if [ ! -d $WXDIR/utils/wxhelp ] - then - echo wxHelp directory does not exist. - echo Press return to continue. - read ans - else - echo - echo Making the wxHelp program. It will go in - echo $WXDIR/utils/wxhelp/src. - echo - cd $WXDIR/utils/wxhelp/src - make -f makefile.unx $GUITARGET 2>&1 | tee $CURRENTDIR/make.log - cd $CURRENTDIR - echo - echo "If you saw no errors, the wxHelp program was compiled. See the file make.log" - echo "for errors and warnings." - fi -} - -make_tex2rtf() -{ - if [ ! -d $WXDIR/utils/tex2rtf ] - then - echo Tex2RTF directory does not exist. - echo Press return to continue. - read ans - else - echo - echo Making the Tex2RTF utility. It will go in - echo $WXDIR/utils/tex2rtf/src. - echo - cd $WXDIR/utils/tex2rtf/src - make -f makefile.unx $GUITARGET 2>&1 | tee $CURRENTDIR/make.log - cd $CURRENTDIR - echo - echo "If you saw no errors, the Tex2RTF program was compiled. See the file make.log" - echo "for errors and warnings." - fi -} - -############################################################### -# Make samples # -############################################################### - -make_controls() -{ - echo - echo Making the Controls sample. It will be made as - echo $WXDIR/samples/controls/controls$GUISUFFIX - echo - cd $WXDIR/samples/constrols - make -f makefile.unx $GUITARGET 2>&1 | tee $CURRENTDIR/make.log - cd $CURRENTDIR - echo - echo "If you saw no errors, the Controls sample was compiled. See the file make.log" - echo "for errors and warnings." -} - -make_minimal() -{ - echo - echo Making the Minimal sample. It will be made as - echo $WXDIR/samples/minimal/minimal$GUISUFFIX - echo - cd $WXDIR/samples/minimal - make -f makefile.unx $GUITARGET 2>&1 | tee $CURRENTDIR/make.log - cd $CURRENTDIR - echo - echo "If you saw no errors, the Minimal sample was compiled. See the file make.log" - echo "for errors and warnings." -} - -make_mdi() -{ - echo - echo Making the Mdi sample. It will be made as - echo $WXDIR/samples/mdi/mdi$GUISUFFIX - echo - cd $WXDIR/samples/mdi - make -f makefile.unx $GUITARGET 2>&1 | tee $CURRENTDIR/make.log - cd $CURRENTDIR - echo - echo "If you saw no errors, the MDI sample was compiled. See the file make.log" - echo "for errors and warnings." -} - -make_animate() -{ - echo - echo Making the Animate sample. It will be made as - echo $WXDIR/samples/animate/anim$GUISUFFIX - echo - cd $WXDIR/samples/animate - make -f makefile.unx $GUITARGET 2>&1 | tee $CURRENTDIR/make.log - cd $CURRENTDIR - echo - echo "If you saw no errors, the Animate sample was compiled. See the file make.log" - echo "for errors and warnings." -} - -make_fractal() -{ - echo - echo Making the Fractal sample. It will be made as - echo $WXDIR/samples/fractal/fractal$GUISUFFIX - echo - cd $WXDIR/samples/fractal - make -f makefile.unx $GUITARGET 2>&1 | tee $CURRENTDIR/make.log - cd $CURRENTDIR - echo - echo "If you saw no errors, the Fractal sample was compiled. See the file make.log" - echo "for errors and warnings." -} - -make_all_periph_components() -{ - make_wxtree -# make_dialoged -# make_wxgraph -# make_wxhelp -# make_tex2rtf -} - -about_periph_components() -{ - clear - echo "About the Peripheral Components" - echo "-------------------------------" - echo - echo "These are libraries and programs that are considered useful" - echo "enough to put in the main wxWindows distribution." - echo - echo wxTree A tree-drawing library, with sample - echo ------ - echo -# echo wxGraph A node and arc graph-drawing library, with sample -# echo ------- -# echo -# echo "Press return to continue" -# read ans -# clear -# echo wxHelp The wxWindows on-line help program -# echo ------ -# echo -# echo -# echo "Tex2RTF LaTeX->RTF, HTML converter" -# echo ------- -# echo - echo "Press return to continue" - read ans - clear -} - -make_peripheral_components() -{ - compoption='none' - while [ "$compoption" != "0" ] - do - echo - echo "Peripheral Component Options" - echo "----------------------------" - echo " 1) Make wxTree layout library" - echo "10) Make all the above" - echo "----------------------------" - echo " ?) About these components" - echo "----------------------------" - echo " 0) Quit." - echo - read compoption - - if [ "$compoption" = "1" ] - then - make_wxtree - fi - if [ "$compoption" = "10" ] - then - make_all_periph_components - fi - if [ "$compoption" = "?" ] - then - about_periph_components - fi - done -} - -make_all_samples() -{ - echo - echo "Note: compiling all samples is going to use up bags of disk space." - echo "Continue? (y/n)" - echo - read ans - - if [ "$ans" = "y" ] - then - cd $WXDIR/samples - make -f makefile.unx all$GUISUFFIX - fi -} - -make_samples() -{ - compoption='none' - while [ "$compoption" != "0" ] - do - echo - echo "Sample compilation options" - echo "------------------------" - echo "1) Make Minimal sample" - echo "2) Make MDI sample - echo "3) Make all samples" - echo "4) Run a sample" - echo "------------------------" - echo "0) Quit." - echo - read compoption - - if [ "$compoption" = "1" ] - then - make_minimal - fi - if [ "$compoption" = "2" ] - then - make_mdi - fi - if [ "$compoption" = "3" ] - then - make_all_samples - fi - if [ "$compoption" = "4" ] - then - run_samples - fi - done -} - -# Find a platform filename, using 'arg' as input and output -platform_filename() -{ - case "$arg" in - 1) arg=$PLATFORMFILE1;; - 2) arg=$PLATFORMFILE2;; - 3) arg=$PLATFORMFILE3;; - 4) arg=$PLATFORMFILE4;; - 5) arg=$PLATFORMFILE5;; - 6) arg=$PLATFORMFILE6;; - 7) arg=$PLATFORMFILE7;; - 8) arg=$PLATFORMFILE8;; - 9) arg=$PLATFORMFILE9;; - 10) arg=$PLATFORMFILE10;; - 11) arg=$PLATFORMFILE11;; - 12) arg=$PLATFORMFILE12;; - 13) arg=$PLATFORMFILE13;; - 14) arg=$PLATFORMFILE14;; - 15) arg=$PLATFORMFILE15;; - 16) arg=$PLATFORMFILE16;; - 17) arg=$PLATFORMFILE17;; - 18) arg=$PLATFORMFILE18;; - 19) arg=$PLATFORMFILE19;; - 20) arg=$PLATFORMFILE20;; - *) arg='' - esac -} - -platform_description() -{ - case "$arg" in - 1) arg=$PLATFORM1;; - 2) arg=$PLATFORM2;; - 3) arg=$PLATFORM3;; - 4) arg=$PLATFORM4;; - 5) arg=$PLATFORM5;; - 6) arg=$PLATFORM6;; - 7) arg=$PLATFORM7;; - 8) arg=$PLATFORM8;; - 9) arg=$PLATFORM9;; - 10) arg=$PLATFORM10;; - 11) arg=$PLATFORM11;; - 12) arg=$PLATFORM12;; - 13) arg=$PLATFORM13;; - 14) arg=$PLATFORM14;; - 15) arg=$PLATFORM15;; - 16) arg=$PLATFORM16;; - 17) arg=$PLATFORM17;; - 18) arg=$PLATFORM18;; - 19) arg=$PLATFORM19;; - 20) arg=$PLATFORM20;; - *) arg='' - esac -} - -############################################################### -# Select a platform -############################################################### - -select_platform() -{ - echo - echo "Select a platform" - echo "----------------------------" - echo "Note: this copies a file from $WXDIR/src/makeenvs" - echo "to $WXDIR/src/make.env. If you have" - echo "restarted the installation, the current option listed" - echo "may not reflect the current make.env." - echo - echo "You may wish to edit a .env file in $WXDIR/src/makeenvs" - echo "instead of src/make.env, which might be overwritten in future" - echo "installations." - echo - echo "In any event, a backup of make.env is made (make.bak) before it is" - echo "overwritten." - echo - echo "Please press return to continue." - read dummy - - compoption='none' - selectdone=0 - while [ "$selectdone" = "0" ] - do - echo - echo "Select a platform" - echo "----------------------------" - echo - - i=1 - while [ $i -le $PLATFORMCOUNT ] - do - arg=$i - platform_description - plat=$arg - markit=" " - if [ "$PLATFORM" = "$i" ] - then - markit="*" - fi - echo " "$markit" "$i") "$plat - i=`expr $i + 1` - done - echo - echo " e) Edit the current src/make.env" - echo - echo "Enter a choice, return for default: " - read compoption - - if [ "$compoption" = "e" ] - then - $MYEDITOR $WXDIR/src/make.env - else - if [ "$compoption" != "" ] - then - arg=$compoption - platform_description - plat=$arg - - arg=$compoption - platform_filename - platfile=$arg - - if [ "$platfile" != "" ] - then - if [ ! -f $WXDIR"/src/makeenvs/"$platfile ] - then - echo "Sorry, this platform is not catered for yet." - echo "Try using the generic settings instead." - echo "" - echo "Press return to continue." - read dummy - else - selectdone=1 - PLATFORM=$compoption - cp -f $WXDIR/src/make.env $WXDIR/src/make.bak - cp -f $WXDIR/src/makeenvs/$platfile $WXDIR/src/make.env - fi - fi - else - selectdone=1 - fi - fi - done -} - -############################################################### -# Run samples # -############################################################### - -run_controls() -{ - if [ ! -f $WXDIR"/samples/controls/controls"$GUISUFFIX ] - then - echo The Controls sample has not been compiled yet. - else - echo - echo "Running "$WXDIR"/samples/controls/controls"$GUISUFFIX - echo - cd $WXDIR"/samples/controls" - "controls"$GUISUFFIX - cd $CURRENTDIR - fi -} - -run_minimal() -{ - if [ ! -f $WXDIR"/samples/minimal/minimal"$GUISUFFIX ] - then - echo The Minimal sample has not been compiled yet. - else - echo - echo "Running "$WXDIR"/samples/minimal/minimal"$GUISUFFIX - echo - cd $WXDIR"/samples/minimal" - "minimal"$GUISUFFIX - cd $CURRENTDIR - fi -} - -run_form() -{ - if [ ! -f $WXDIR"/samples/form/form"$GUISUFFIX ] - then - echo The Form sample has not been compiled yet. - else - echo - echo "Running "$WXDIR"/samples/form/form"$GUISUFFIX - echo - cd $WXDIR"/samples/form" - "form"$GUISUFFIX - cd $CURRENTDIR - fi -} - -run_animate() -{ - if [ ! -f $WXDIR"/samples/animate/anim"$GUISUFFIX ] - then - echo The Animate sample has not been compiled yet. - else - echo - echo "Running "$WXDIR"/samples/animate/anim"$GUISUFFIX - echo - cd $WXDIR"/samples/animate" - "anim"$GUISUFFIX - cd $CURRENTDIR - fi -} - -run_fractal() -{ - if [ ! -f $WXDIR"/samples/fractal/fractal"$GUISUFFIX ] - then - echo The Fractal sample has not been compiled yet. - else - echo - echo "Running "$WXDIR"/samples/fractal/fractal"$GUISUFFIX - echo - cd $WXDIR"/samples/fractal" - "fractal"$GUISUFFIX - cd $CURRENTDIR - fi -} - -run_ipc() -{ - if [ ! -f $WXDIR"/samples/ipc/client"$GUISUFFIX ] - then - echo The IPC samples have not been compiled yet. - else - echo - echo "Running "$WXDIR"/samples/ipc/client"$GUISUFFIX, - echo " "$WXDIR"/samples/ipc/server"$GUISUFFIX - echo - cd $WXDIR"/samples/ipc" - echo "Starting server..." - "server"$GUISUFFIX & - echo "Waiting 10 seconds..." - sleep 10 - echo "Starting client..." - "client"$GUISUFFIX - cd $CURRENTDIR - fi -} - -run_samples() -{ - runoption='none' - while [ "$runoption" != "0" ] - do - echo - echo "Run a wxWindows sample" - echo "--------------------" - echo "Note: this is a small selection. For more, please" - echo "browse the samples subdirectory." - echo - echo "1) Run Minimal sample" - echo "2) Run MDI sample" - echo "--------------------" - echo "0) Quit." - echo - read runoption - - if [ "$runoption" = "1" ] - then - run_minimal - fi - if [ "$runoption" = "2" ] - then - run_mdi - fi - done -} - -make_all() -{ - make_main_library - make_all_periph_components - make_all_samples -} - -remove_component() -{ - if [ -d $COMPONENT ] - then - echo "Remove "$COMPONENT": are you sure? (y/n) " - echo - read ans - if [ "$ans" = "y" ] - then - rm -f -r $COMPONENT - fi - fi -} - -remove_components() -{ - compoption='none' - while [ "$compoption" != "0" ] - do - if [ -f $WXDIR/docs/pdf/wx.pdf ] - then - PDFMANUALSOK="*" - else - PDFMANUALSOK=" " - fi - - if [ -f $WXDIR/docs/html/wx/wx.htm ] - then - HTMLMANUALSOK="*" - else - HTMLMANUALSOK=" " - fi - - if [ -d $WXDIR/utils/wxtree ] - then - WXTREEOK="*" - else - WXTREEOK=" " - fi - -# if [ -d $WXDIR/utils/wxgraph ] -# then -# WXGRAPHOK="*" -# else -# WXGRAPHOK=" " -# fi -# -# if [ -d $WXDIR/utils/wxhelp ] -# then -# WXHELPOK="*" -# else -# WXHELPOK=" " -# fi -# -# if [ -d $WXDIR/utils/tex2rtf ] -# then -# TEX2RTFOK="*" -# else -# TEX2RTFOK=" " -# fi - - if [ -d $WXDIR/utils/dialoged ] - then - DIALOGEDOK="*" - else - DIALOGEDOK=" " - fi - - echo - echo "Remove a wxWindows component (* means it's installed)" - echo "-----------------------------------------------------" - echo "wxWindows currently takes up this many KB:" - du -s $WXDIR - echo "-----------------------------------------------------" - echo " 1) "$PDFMANUALSOK"Remove PDF manuals" - echo " 2) "$HTMLMANUALSOK"Remove HTML manuals" - echo " 3) "$WXTREEOK"Remove wxTree library" -# echo " 4) "$WXGRAPHOK"Remove wxGraph library" -# echo " 8) "$TEX2RTFOK"Remove Tex2RTF/HTML/WinHelp/wxHelp converter" - echo " 4) "$DIALOGEDOK"Remove Dialog Editor" - echo "------------------------------------------------------" - echo " 0) Quit." - echo - read compoption - - if [ "$compoption" = "1" ] - then - rm -f -r $WXDIR/pdf - fi - if [ "$compoption" = "2" ] - then - rm -f -r $WXDIR/html - fi - if [ "$compoption" = "3" ] - then - COMPONENT=$WXDIR/utils/wxtree - remove_component - fi - if [ "$compoption" = "4" ] - then - COMPONENT=$WXDIR/utils/dialoged - remove_component - fi - done -} - -clean_component() -{ - if [ -d $COMPONENT ] - then - cd $COMPONENT - make -f makefile.unx clean$GUISUFFIX - cd $CURRENTDIR - fi -} - -clean_samples() -{ - cd $WXDIR/samples - make -f makefile.unx clean$GUISUFFIX - cd $CURRENTDIR -} - -# -f $WXDIR/samples/pressup/pressup$GUISUFFIX -o \ -# -f $WXDIR/samples/bombs/bombs$GUISUFFIX -o \ -# -f $WXDIR/samples/fractal/fractal$GUISUFFIX -o \ -# -f $WXDIR/samples/animate/anim$GUISUFFIX -o \ -# -f $WXDIR/samples/ipc/server$GUISUFFIX -o \ - -clean_components() -{ - compoption='none' - olddu="" - while [ "$compoption" != "0" ] - do - if [ -f $WXDIR/samples/controls/controls$GUISUFFIX -o \ - -f $WXDIR/samples/forty/forty$GUISUFFIX -o \ - -f $WXDIR/samples/splitter/splitter$GUISUFFIX -o \ - -f $WXDIR/samples/docview/docview$GUISUFFIX -o \ - -f $WXDIR/samples/wxpoem/wxpoem$GUISUFFIX -o \ - -f $WXDIR/samples/printing/printing$GUISUFFIX -o \ - -f $WXDIR/samples/resource/resource$GUISUFFIX -o \ - -f $WXDIR/samples/layout/layout$GUISUFFIX -o \ - -f $WXDIR/samples/toolbar/test$GUISUFFIX -o \ - -f $WXDIR/samples/dialogs/dialogs$GUISUFFIX -o \ - -f $WXDIR/samples/types/types$GUISUFFIX -o \ - -f $WXDIR/samples/mdi/mdi$GUISUFFIX -o \ - -f $WXDIR/samples/minimal/minimal$GUISUFFIX ] - then - SAMPLESOK="*" - else - SAMPLESOK=" " - fi - - if [ -f $WXDIR/lib/libwx$GUISUFFIX".a" ] - then - WXOK="*" - else - WXOK=" " - fi - - if [ -f $WXDIR/utils/tex2rtf/src/objects$GUISUFFIX/tex2rtf.o ] - then - TEX2RTFOK="*" - else - TEX2RTFOK=" " - fi - - if [ -f $WXDIR/utils/dialoged/src/dialoged$GUISUFFIX ] - then - DIALOGEDOK="*" - else - DIALOGEDOK=" " - fi - - echo - echo "Cleanup a wxWindows component (* means objects/binaries exist, - means unknown)" - echo "-----------------------------------------------------" - echo "wxWindows currently takes up this many KB:" - newdu=`du -s $WXDIR` - if [ "$olddu" = "" ] - then - theline=$newdu - else - theline=$newdu" (previous usage was "$olddu")" - fi - echo $theline - olddu=$newdu - echo "-----------------------------------------------------" - echo " 1) "$WXOK"Clean wxWindows library" - echo " 2) "$SAMPLESOK"Clean all wxWindows samples" - echo " 3) -Clean all utilities" - echo " 4) "$TEX2RTFOK"Clean Tex2RTF/HTML/WinHelp/wxHelp converter" - echo " 5) "$DIALOGEDOK"Clean Dialoged Editor tool" - echo "------------------------------------------------------" - echo " 0) Quit." - echo - read compoption - - if [ "$compoption" = "1" ] - then - COMPONENT=$WXDIR/src/x - clean_component - fi - if [ "$compoption" = "2" ] - then - cd $WXDIR/samples - make -f makefile.unx clean$GUISUFFIX - cd $CURRENTDIR - fi - if [ "$compoption" = "3" ] - then - cd $WXDIR/utils - make -f makefile.unx clean$GUISUFFIX - cd $CURRENTDIR - fi - if [ "$compoption" = "4" ] - then - COMPONENT=$WXDIR/utils/tex2rtf/src - clean_component - fi - if [ "$compoption" = "5" ] - then - COMPONENT=$WXDIR/utils/dialoged/src - clean_component - fi - done -} - -# Select a target -select_target() -{ - compoption='none' - selectdone=0 - while [ "$selectdone" = "0" ] - do - echo - echo "Select a target" - echo "---------------" - echo " 1) Motif" - echo - read compoption - - if [ "$compoption" = "1" ] - then - selectdone=1 - GUITARGET=motif - GUISUFFIX=_motif - fi - done -} - -# Select a target -select_dir() -{ - echo "" - echo "Select wxWindows directory" - echo "--------------------------" - echo "" - echo "Current directory: " $WXDIR - echo "" - echo "New directory: (return for existing value):" - read inp - if [ "$inp" != "" ] - then - WXDIR=$inp - fi -} - -### View manual ### - -view_manual() -{ - if [ ! -d $WXDIR ] - then - echo "Sorry -- you must unarchive the distribution before you can" - echo "look at the manual." - else - manoption='none' - while [ "$manoption" != "0" ] - do - echo - echo "View wxWindows documentation" - echo "----------------------------" - echo "1) The installation instructions, using "$MYPAGER - echo "2) readme.txt, using "$MYPAGER - echo "3) The change log, using "$MYPAGER - echo "4) The HTML manual hierarchy, using $HTMLVIEWER" - echo "--------------------" - echo "0) Quit." - echo - read manoption - - if [ "$manoption" = "1" ] - then - if [ -f $WXDIR"/docs/motif/install.txt" ] - then - $MYPAGER $WXDIR/docs/motif/install.txt - else - if [ -f "install.txt" ] - then - $MYPAGER "install.txt" - else - if [ -f $WXDIR/"install.txt" ] - then - $MYPAGER $WXDIR/"install.txt" - else - echo - echo "Sorry, cannot find install.txt. Perhaps you did not ftp" - echo "it along with the archives, and/or you haven't unarchived" - echo "the sources yet. Please press return to continue." - echo - read ans - fi - fi - fi - fi - if [ "$manoption" = "2" ] - then - if [ -f $WXDIR"/docs/motif/readme.txt" ] - then - $MYPAGER $WXDIR/docs/motif/readme.txt - else - if [ -f "readme.txt" ] - then - $MYPAGER "readme.txt" - else - if [ -f $WXDIR/"readme.txt" ] - then - $MYPAGER $WXDIR/"readme.txt" - else - echo - echo "Sorry, cannot find readme.txt. Perhaps you did not ftp" - echo "it along with the archives, and/or you haven't unarchived" - echo "the sources yet. Please press return to continue." - echo - read ans - fi - fi - fi - fi - if [ "$manoption" = "3" ] - then - if [ -f $WXDIR"/docs/motif/changes.txt" ] - then - $MYPAGER $WXDIR/docs/motif/changes.txt - else - if [ -f "changes.txt" ] - then - $MYPAGER "changes.txt" - else - if [ -f $WXDIR/"changes.txt" ] - then - $MYPAGER $WXDIR/"changes.txt" - else - echo - echo "Sorry, cannot find changes.txt. Perhaps you did not ftp" - echo "it along with the archives, and/or you haven't unarchived" - echo "the sources yet. Please press return to continue." - echo - read ans - fi - fi - fi - fi - if [ "$manoption" = "4" ] - then - $HTMLVIEWER $WXDIR"/docs/html/index.htm" - fi - done - fi -} - -preliminary_notes() -{ - selectdone1=0 - ans="n" - while [ "$ans" != "y" ] - do -# clear - echo - echo The GUI target is GUITARGET=$GUITARGET "." - echo - echo The directory to install to is WXDIR=$WXDIR - echo - arg=$PLATFORM - platform_description - echo The selected platform is $arg - echo - echo "Please check these settings carefully." - echo "Are they correct for your system? (y/n)" - echo - - read ans - - if [ "$ans" != "y" ] - then - select_target - select_dir - select_platform - fi - done - - clear - echo "" - echo "Configuring wxWindows" - echo "---------------------" - echo "" - echo "Most makefile settings to do with compilers, platforms and" - echo "directories are kept in "$WXDIR"/src/make.env." - echo "" - echo "If you get a compiler error or warning, please strongly" - echo "suspect this file, and if necessary edit it from the first" - echo "option on the Main Menu." - echo "" - echo "Some suggestions for settings are contained in make.env," - echo "and further information is in "$WXDIR"/install/install.txt." - echo - echo wxWindows itself can be tailored to remove certain features - echo "(such as PostScript support), or select library preferences, by" - echo "editing the file "$WXDIR"/include/wx/motif/setup.h." - echo - echo The setup.h defaults are probably ok for now though. - echo - echo "Please press return to continue." - read ans - echo - clear - echo "" - echo "Configuring wxWindows (cont'd)" - echo "--------------------- --------" - echo "" - echo "By default (at least for GNU compiler use), debugging information" - echo "is included. This will make the libraries and binaries" - echo "a lot bigger than if you left debugging information out." - echo - echo "So you might want to set DEBUG to nothing in make.env" - echo "to disable debugging information, at least for a first look at wxWindows." - echo - echo "Please press return to continue." - read ans - echo - clear - echo - echo "You may wish to choose 'View documentation' now..." -} - - ############# MAIN BIT OF THE SCRIPT ################# - clear - echo - echo "-------------------------------------------" - echo "Welcome to the wxWindows 2.0 installation." - echo "-------------------------------------------" - echo - echo "This script will install from the archives:" - echo "" - echo " "$ARCHIVE"gen.zip, "$ARCHIVE"mot.zip" - echo "" - echo "and, if present, HTML and PDF archives." - echo "" - echo "This installation is best done from a new directory where" - echo "wxWindows will be installed, and which contains the .zip files." - echo "For example, ~/wx." - - select_dir - - if [ ! -f $WXDIR/src/make.env ] - then - install_from_archive - fi - - preliminary_notes - - useroption='none' - while [ "$useroption" != "0" ] - do - echo - echo "wxWindows Installation Main Menu" - echo "--------------------------------" - echo - echo " 1) Install from archive." - echo " 2) Make main wxWindows library." - echo " 3) Make a peripheral component." - echo " 4) Make a sample." - echo " 5) Make absolutely everything." - echo " 6) Run a sample." - echo " 7) View documentation." - echo " 8) Clean objects/binaries, saving space." - echo " 9) Remove wxWindows components from disk." - echo "10) Edit make.env." - echo "11) Change the selected target platform" - echo "-----------------------------------" - echo " 0) Exit from installation." - echo - read useroption - - if [ "$useroption" = "1" ] - then - install_from_archive - fi - if [ "$useroption" = "2" ] - then - make_main_library - fi - if [ "$useroption" = "3" ] - then - make_peripheral_components - fi - if [ "$useroption" = "4" ] - then - make_samples - fi - if [ "$useroption" = "5" ] - then - make_all - fi - if [ "$useroption" = "6" ] - then - run_samples - fi - if [ "$useroption" = "7" ] - then - view_manual - fi - if [ "$useroption" = "8" ] - then - clean_components - fi - if [ "$useroption" = "9" ] - then - remove_components - fi - if [ "$useroption" = "10" ] - then - edit_make_env - fi - if [ "$useroption" = "11" ] - then - select_platform - fi - done - clear - echo "" - echo "Goodbye! I hope your wxWindows installation was successful." - echo "" - echo "You can subscribe to the mailing list wxwin-users" - echo "for further assistance from experienced users." - echo "" - echo "Information is also available via the World Wide Web at:" - echo "" - echo "http://web.ukonline.co.uk/julian.smart/wxwin" - echo "" - echo "If all else fails, please contact me, Julian Smart, at:" - echo "" - echo "julian.smart@ukonline.co.uk" - echo "" - echo "If you have any suggestions, bug reports or patches," - echo "please email me at the above address." - echo "" - -